<?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>236566</bug_id>
          
          <creation_ts>2022-02-13 11:05:52 -0800</creation_ts>
          <short_desc>Do preliminary work to pass domain names to CoreLocation</short_desc>
          <delta_ts>2022-02-17 13:14:36 -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>WebKit2</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>236803</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Chris Dumez">cdumez</reporter>
          <assigned_to name="Chris Dumez">cdumez</assigned_to>
          <cc>achristensen</cc>
    
    <cc>annulen</cc>
    
    <cc>benjamin</cc>
    
    <cc>cmarcelo</cc>
    
    <cc>darin</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>ggaren</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>kkinnunen</cc>
    
    <cc>kondapallykalyan</cc>
    
    <cc>mmaxfield</cc>
    
    <cc>ryuan.choi</cc>
    
    <cc>sergio</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>youennf</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1841033</commentid>
    <comment_count>0</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2022-02-13 11:05:52 -0800</bug_when>
    <thetext>Do preliminary work to pass domain names to CoreLocation.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1841035</commentid>
    <comment_count>1</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2022-02-13 11:06:06 -0800</bug_when>
    <thetext>&lt;rdar://88761413&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1841038</commentid>
    <comment_count>2</comment_count>
      <attachid>451829</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2022-02-13 11:24:14 -0800</bug_when>
    <thetext>Created attachment 451829
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1841045</commentid>
    <comment_count>3</comment_count>
      <attachid>451832</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2022-02-13 11:43:29 -0800</bug_when>
    <thetext>Created attachment 451832
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1841063</commentid>
    <comment_count>4</comment_count>
      <attachid>451838</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2022-02-13 12:33:16 -0800</bug_when>
    <thetext>Created attachment 451838
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1841066</commentid>
    <comment_count>5</comment_count>
      <attachid>451839</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2022-02-13 13:21:46 -0800</bug_when>
    <thetext>Created attachment 451839
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1841076</commentid>
    <comment_count>6</comment_count>
      <attachid>451844</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2022-02-13 14:21:51 -0800</bug_when>
    <thetext>Created attachment 451844
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1841093</commentid>
    <comment_count>7</comment_count>
      <attachid>451851</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2022-02-13 17:46:30 -0800</bug_when>
    <thetext>Created attachment 451851
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1841115</commentid>
    <comment_count>8</comment_count>
      <attachid>451853</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2022-02-13 20:07:57 -0800</bug_when>
    <thetext>Created attachment 451853
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1841306</commentid>
    <comment_count>9</comment_count>
      <attachid>451920</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2022-02-14 10:03:41 -0800</bug_when>
    <thetext>Created attachment 451920
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1841522</commentid>
    <comment_count>10</comment_count>
      <attachid>451976</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2022-02-14 18:43:59 -0800</bug_when>
    <thetext>Created attachment 451976
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1841540</commentid>
    <comment_count>11</comment_count>
      <attachid>451984</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2022-02-14 19:37:32 -0800</bug_when>
    <thetext>Created attachment 451984
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1841716</commentid>
    <comment_count>12</comment_count>
      <attachid>451984</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2022-02-15 07:52:14 -0800</bug_when>
    <thetext>Comment on attachment 451984
Patch

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

&gt; Source/WebCore/Modules/geolocation/cocoa/GeolocationPositionDataCocoa.mm:33
&gt; +GeolocationPositionData::GeolocationPositionData(CLLocation* location)

CLLocation * should have a space given our Objective-C class coding style.

&gt; Source/WebCore/SourcesCocoa.txt:311
&gt; +platform/graphics/avfoundation/objc/AVAssetTrackUtilities.mm @no-unify

I’d love to avoid adding new no-unify. Why were these required? Do you know any workaround?

&gt; Source/WebCore/platform/cocoa/CoreLocationGeolocationProvider.h:46
&gt; +        virtual void geolocationAuthorizationGranted(const String&amp; /*websiteIdentifier*/) { }

Can any of these arguments be StringView instead of const String&amp;?

&gt; Source/WebCore/platform/cocoa/CoreLocationGeolocationProvider.mm:50
&gt; +static bool isAuthorizationGranted(CLAuthorizationStatus authorizationStatus)

I’d name the argument just status.

&gt; Source/WebKit/UIProcess/WebGeolocationManagerProxy.cpp:245
&gt; +    for (auto&amp; perDomainData : m_perDomainData.values()) {

Same name for the loop variable as this function’s argument. Could sidestep this by using a shorter name for one or both. Just “data” will do give the scope of a short function or loop.

&gt; Source/WebKit/UIProcess/WebGeolocationManagerProxy.cpp:265
&gt; +    if (!m_clientProvider)

This code should go into the #else, or we could move the #if so it’s only around the provider creation and start call.

&gt; Source/WebKit/UIProcess/WebGeolocationManagerProxy.cpp:280
&gt; +    UNUSED_PARAM(perDomainData);

Same refactoring as above would be good. Put #if around the stop call.

&gt; Source/WebKit/UIProcess/WebGeolocationManagerProxy.cpp:293
&gt; +    UNUSED_PARAM(perDomainData);

And here. Add the early return?

&gt; Source/WebKit/UIProcess/WebGeolocationManagerProxy.h:104
&gt; +    struct PerDomainData {

Should just name the struct here and define it inside the .cop file.

&gt; Source/WebKit/WebProcess/Geolocation/WebGeolocationManager.cpp:47
&gt; +    return RegistrableDomain { document-&gt;url() };

Can probably use the braces without repeating the class name.

&gt; Source/WebKit/WebProcess/Geolocation/WebGeolocationManager.cpp:69
&gt; +    auto&amp; pageSets = m_pageSets.ensure(registrableDomain, [] {

This ensure should just be an add. It’s probably sufficiently efficient to make an empty PageSets; just two null pointers. Generally speaking new empty hash tables are just a null pointer, amd even though they sound expensive to allocate they’re not.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1841722</commentid>
    <comment_count>13</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2022-02-15 08:05:37 -0800</bug_when>
    <thetext>(In reply to Darin Adler from comment #12)
&gt; Comment on attachment 451984 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=451984&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/Modules/geolocation/cocoa/GeolocationPositionDataCocoa.mm:33
&gt; &gt; +GeolocationPositionData::GeolocationPositionData(CLLocation* location)
&gt; 
&gt; CLLocation * should have a space given our Objective-C class coding style.

OK.

&gt; 
&gt; &gt; Source/WebCore/SourcesCocoa.txt:311
&gt; &gt; +platform/graphics/avfoundation/objc/AVAssetTrackUtilities.mm @no-unify
&gt; 
&gt; I’d love to avoid adding new no-unify. Why were these required? Do you know
&gt; any workaround?

I consulted with Jer on this and this was his suggestion. This is happening because of unified build and soft-linking macros.
I&apos;ll double check to see if I still need both or if I can remove one.

&gt; &gt; Source/WebCore/platform/cocoa/CoreLocationGeolocationProvider.h:46
&gt; &gt; +        virtual void geolocationAuthorizationGranted(const String&amp; /*websiteIdentifier*/) { }
&gt; 
&gt; Can any of these arguments be StringView instead of const String&amp;?

What&apos;s the benefit here though. I am holding a String as a data member and passing it as parameter. I think it makes sense to use the same type.

&gt; 
&gt; &gt; Source/WebCore/platform/cocoa/CoreLocationGeolocationProvider.mm:50
&gt; &gt; +static bool isAuthorizationGranted(CLAuthorizationStatus authorizationStatus)
&gt; 
&gt; I’d name the argument just status.

OK.

&gt; 
&gt; &gt; Source/WebKit/UIProcess/WebGeolocationManagerProxy.cpp:245
&gt; &gt; +    for (auto&amp; perDomainData : m_perDomainData.values()) {
&gt; 
&gt; Same name for the loop variable as this function’s argument. Could sidestep
&gt; this by using a shorter name for one or both. Just “data” will do give the
&gt; scope of a short function or loop.

OK.

&gt; 
&gt; &gt; Source/WebKit/UIProcess/WebGeolocationManagerProxy.cpp:265
&gt; &gt; +    if (!m_clientProvider)
&gt; 
&gt; This code should go into the #else, or we could move the #if so it’s only
&gt; around the provider creation and start call.

I think there is probably a misunderstanding here. The code cannot be in the #else because it is still useful on IOS_FAMILY in those 2 cases:
1. The client sets its own provider via the API to pass a dummy provider (for testing, used by WKTR and API tests for e.g.)
2. The client sets its own provider via the API and passes a provider which rejects all authorization as a way to disable the geolocation API (used on watchOS).

Eventually, we should be able to get rid of both cases but it will require some additional work for provide alternatives for these clients.

&gt; 
&gt; &gt; Source/WebKit/UIProcess/WebGeolocationManagerProxy.cpp:280
&gt; &gt; +    UNUSED_PARAM(perDomainData);
&gt; 
&gt; Same refactoring as above would be good. Put #if around the stop call.
&gt; 
&gt; &gt; Source/WebKit/UIProcess/WebGeolocationManagerProxy.cpp:293
&gt; &gt; +    UNUSED_PARAM(perDomainData);
&gt; 
&gt; And here. Add the early return?
&gt; 
&gt; &gt; Source/WebKit/UIProcess/WebGeolocationManagerProxy.h:104
&gt; &gt; +    struct PerDomainData {
&gt; 
&gt; Should just name the struct here and define it inside the .cop file.

Oh, last time I tried that it didn&apos;t work because I was also using the struct from WebGeolocationManagerCocoa.cpp. However, in this latest iteration, it doesn&apos;t seem to be the case anymore so I should be able to do this indeed.

&gt; 
&gt; &gt; Source/WebKit/WebProcess/Geolocation/WebGeolocationManager.cpp:47
&gt; &gt; +    return RegistrableDomain { document-&gt;url() };
&gt; 
&gt; Can probably use the braces without repeating the class name.

OK, will try.

&gt; 
&gt; &gt; Source/WebKit/WebProcess/Geolocation/WebGeolocationManager.cpp:69
&gt; &gt; +    auto&amp; pageSets = m_pageSets.ensure(registrableDomain, [] {
&gt; 
&gt; This ensure should just be an add. It’s probably sufficiently efficient to
&gt; make an empty PageSets; just two null pointers. Generally speaking new empty
&gt; hash tables are just a null pointer, amd even though they sound expensive to
&gt; allocate they’re not.

Ok.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1841724</commentid>
    <comment_count>14</comment_count>
      <attachid>452026</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2022-02-15 08:15:14 -0800</bug_when>
    <thetext>Created attachment 452026
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1841730</commentid>
    <comment_count>15</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2022-02-15 08:30:24 -0800</bug_when>
    <thetext>(In reply to Chris Dumez from comment #13)
&gt; (In reply to Darin Adler from comment #12)
&gt; &gt; Comment on attachment 451984 [details]
&gt; &gt; Patch
&gt; &gt; 
&gt; &gt; View in context:
&gt; &gt; https://bugs.webkit.org/attachment.cgi?id=451984&amp;action=review
&gt; &gt; 
&gt; &gt; &gt; Source/WebCore/Modules/geolocation/cocoa/GeolocationPositionDataCocoa.mm:33
&gt; &gt; &gt; +GeolocationPositionData::GeolocationPositionData(CLLocation* location)
&gt; &gt; 
&gt; &gt; CLLocation * should have a space given our Objective-C class coding style.
&gt; 
&gt; OK.
&gt; 
&gt; &gt; 
&gt; &gt; &gt; Source/WebCore/SourcesCocoa.txt:311
&gt; &gt; &gt; +platform/graphics/avfoundation/objc/AVAssetTrackUtilities.mm @no-unify
&gt; &gt; 
&gt; &gt; I’d love to avoid adding new no-unify. Why were these required? Do you know
&gt; &gt; any workaround?
&gt; 
&gt; I consulted with Jer on this and this was his suggestion. This is happening
&gt; because of unified build and soft-linking macros.
&gt; I&apos;ll double check to see if I still need both or if I can remove one.
&gt; 
&gt; &gt; &gt; Source/WebCore/platform/cocoa/CoreLocationGeolocationProvider.h:46
&gt; &gt; &gt; +        virtual void geolocationAuthorizationGranted(const String&amp; /*websiteIdentifier*/) { }
&gt; &gt; 
&gt; &gt; Can any of these arguments be StringView instead of const String&amp;?
&gt; 
&gt; What&apos;s the benefit here though. I am holding a String as a data member and
&gt; passing it as parameter. I think it makes sense to use the same type.
&gt; 
&gt; &gt; 
&gt; &gt; &gt; Source/WebCore/platform/cocoa/CoreLocationGeolocationProvider.mm:50
&gt; &gt; &gt; +static bool isAuthorizationGranted(CLAuthorizationStatus authorizationStatus)
&gt; &gt; 
&gt; &gt; I’d name the argument just status.
&gt; 
&gt; OK.
&gt; 
&gt; &gt; 
&gt; &gt; &gt; Source/WebKit/UIProcess/WebGeolocationManagerProxy.cpp:245
&gt; &gt; &gt; +    for (auto&amp; perDomainData : m_perDomainData.values()) {
&gt; &gt; 
&gt; &gt; Same name for the loop variable as this function’s argument. Could sidestep
&gt; &gt; this by using a shorter name for one or both. Just “data” will do give the
&gt; &gt; scope of a short function or loop.
&gt; 
&gt; OK.
&gt; 
&gt; &gt; 
&gt; &gt; &gt; Source/WebKit/UIProcess/WebGeolocationManagerProxy.cpp:265
&gt; &gt; &gt; +    if (!m_clientProvider)
&gt; &gt; 
&gt; &gt; This code should go into the #else, or we could move the #if so it’s only
&gt; &gt; around the provider creation and start call.
&gt; 
&gt; I think there is probably a misunderstanding here. The code cannot be in the
&gt; #else because it is still useful on IOS_FAMILY in those 2 cases:
&gt; 1. The client sets its own provider via the API to pass a dummy provider
&gt; (for testing, used by WKTR and API tests for e.g.)
&gt; 2. The client sets its own provider via the API and passes a provider which
&gt; rejects all authorization as a way to disable the geolocation API (used on
&gt; watchOS).
&gt; 
&gt; Eventually, we should be able to get rid of both cases but it will require
&gt; some additional work for provide alternatives for these clients.
&gt; 
&gt; &gt; 
&gt; &gt; &gt; Source/WebKit/UIProcess/WebGeolocationManagerProxy.cpp:280
&gt; &gt; &gt; +    UNUSED_PARAM(perDomainData);
&gt; &gt; 
&gt; &gt; Same refactoring as above would be good. Put #if around the stop call.
&gt; &gt; 
&gt; &gt; &gt; Source/WebKit/UIProcess/WebGeolocationManagerProxy.cpp:293
&gt; &gt; &gt; +    UNUSED_PARAM(perDomainData);
&gt; &gt; 
&gt; &gt; And here. Add the early return?
&gt; &gt; 
&gt; &gt; &gt; Source/WebKit/UIProcess/WebGeolocationManagerProxy.h:104
&gt; &gt; &gt; +    struct PerDomainData {
&gt; &gt; 
&gt; &gt; Should just name the struct here and define it inside the .cop file.
&gt; 
&gt; Oh, last time I tried that it didn&apos;t work because I was also using the
&gt; struct from WebGeolocationManagerCocoa.cpp. However, in this latest
&gt; iteration, it doesn&apos;t seem to be the case anymore so I should be able to do
&gt; this indeed.

No actually, WebGeolocationManagerCocoa.cpp still uses PerDomainData so I still cannot do what you suggested it seems.

&gt; &gt; 
&gt; &gt; &gt; Source/WebKit/WebProcess/Geolocation/WebGeolocationManager.cpp:47
&gt; &gt; &gt; +    return RegistrableDomain { document-&gt;url() };
&gt; &gt; 
&gt; &gt; Can probably use the braces without repeating the class name.
&gt; 
&gt; OK, will try.
&gt; 
&gt; &gt; 
&gt; &gt; &gt; Source/WebKit/WebProcess/Geolocation/WebGeolocationManager.cpp:69
&gt; &gt; &gt; +    auto&amp; pageSets = m_pageSets.ensure(registrableDomain, [] {
&gt; &gt; 
&gt; &gt; This ensure should just be an add. It’s probably sufficiently efficient to
&gt; &gt; make an empty PageSets; just two null pointers. Generally speaking new empty
&gt; &gt; hash tables are just a null pointer, amd even though they sound expensive to
&gt; &gt; allocate they’re not.
&gt; 
&gt; Ok.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1841731</commentid>
    <comment_count>16</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2022-02-15 08:34:20 -0800</bug_when>
    <thetext>(In reply to Darin Adler from comment #12)
&gt; Comment on attachment 451984 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=451984&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/Modules/geolocation/cocoa/GeolocationPositionDataCocoa.mm:33
&gt; &gt; +GeolocationPositionData::GeolocationPositionData(CLLocation* location)
&gt; 
&gt; CLLocation * should have a space given our Objective-C class coding style.
&gt; 
&gt; &gt; Source/WebCore/SourcesCocoa.txt:311
&gt; &gt; +platform/graphics/avfoundation/objc/AVAssetTrackUtilities.mm @no-unify
&gt; 
&gt; I’d love to avoid adding new no-unify. Why were these required? Do you know
&gt; any workaround?
&gt; 
&gt; &gt; Source/WebCore/platform/cocoa/CoreLocationGeolocationProvider.h:46
&gt; &gt; +        virtual void geolocationAuthorizationGranted(const String&amp; /*websiteIdentifier*/) { }
&gt; 
&gt; Can any of these arguments be StringView instead of const String&amp;?
&gt; 
&gt; &gt; Source/WebCore/platform/cocoa/CoreLocationGeolocationProvider.mm:50
&gt; &gt; +static bool isAuthorizationGranted(CLAuthorizationStatus authorizationStatus)
&gt; 
&gt; I’d name the argument just status.
&gt; 
&gt; &gt; Source/WebKit/UIProcess/WebGeolocationManagerProxy.cpp:245
&gt; &gt; +    for (auto&amp; perDomainData : m_perDomainData.values()) {
&gt; 
&gt; Same name for the loop variable as this function’s argument. Could sidestep
&gt; this by using a shorter name for one or both. Just “data” will do give the
&gt; scope of a short function or loop.
&gt; 
&gt; &gt; Source/WebKit/UIProcess/WebGeolocationManagerProxy.cpp:265
&gt; &gt; +    if (!m_clientProvider)
&gt; 
&gt; This code should go into the #else, or we could move the #if so it’s only
&gt; around the provider creation and start call.
&gt; 
&gt; &gt; Source/WebKit/UIProcess/WebGeolocationManagerProxy.cpp:280
&gt; &gt; +    UNUSED_PARAM(perDomainData);
&gt; 
&gt; Same refactoring as above would be good. Put #if around the stop call.
&gt; 
&gt; &gt; Source/WebKit/UIProcess/WebGeolocationManagerProxy.cpp:293
&gt; &gt; +    UNUSED_PARAM(perDomainData);
&gt; 
&gt; And here. Add the early return?
&gt; 
&gt; &gt; Source/WebKit/UIProcess/WebGeolocationManagerProxy.h:104
&gt; &gt; +    struct PerDomainData {
&gt; 
&gt; Should just name the struct here and define it inside the .cop file.
&gt; 
&gt; &gt; Source/WebKit/WebProcess/Geolocation/WebGeolocationManager.cpp:47
&gt; &gt; +    return RegistrableDomain { document-&gt;url() };
&gt; 
&gt; Can probably use the braces without repeating the class name.

Hmm, this didn&apos;t work:
/Volumes/Data/WebKit/OpenSource/Source/WebKit/WebProcess/Geolocation/WebGeolocationManager.cpp:47:12: error: chosen constructor is explicit in copy-initialization
    return { document-&gt;url() };</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1841733</commentid>
    <comment_count>17</comment_count>
      <attachid>452028</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2022-02-15 08:46:34 -0800</bug_when>
    <thetext>Created attachment 452028
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1841767</commentid>
    <comment_count>18</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2022-02-15 09:47:18 -0800</bug_when>
    <thetext>ChangeLog entry in Source/WTF/ChangeLog contains OOPS!.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1841771</commentid>
    <comment_count>19</comment_count>
      <attachid>452044</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2022-02-15 09:53:28 -0800</bug_when>
    <thetext>Created attachment 452044
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1841804</commentid>
    <comment_count>20</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2022-02-15 10:47:41 -0800</bug_when>
    <thetext>Patch 452044 does not build</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1841809</commentid>
    <comment_count>21</comment_count>
      <attachid>452055</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2022-02-15 10:54:22 -0800</bug_when>
    <thetext>Created attachment 452055
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1841827</commentid>
    <comment_count>22</comment_count>
      <attachid>452062</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2022-02-15 11:20:05 -0800</bug_when>
    <thetext>Created attachment 452062
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1841873</commentid>
    <comment_count>23</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2022-02-15 12:22:52 -0800</bug_when>
    <thetext>Patch 452062 does not build</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1841900</commentid>
    <comment_count>24</comment_count>
      <attachid>452079</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2022-02-15 13:11:58 -0800</bug_when>
    <thetext>Created attachment 452079
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1841904</commentid>
    <comment_count>25</comment_count>
      <attachid>452081</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2022-02-15 13:18:36 -0800</bug_when>
    <thetext>Created attachment 452081
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1841983</commentid>
    <comment_count>26</comment_count>
      <attachid>452104</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2022-02-15 15:42:15 -0800</bug_when>
    <thetext>Created attachment 452104
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1841992</commentid>
    <comment_count>27</comment_count>
      <attachid>452105</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2022-02-15 15:51:50 -0800</bug_when>
    <thetext>Created attachment 452105
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1841998</commentid>
    <comment_count>28</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2022-02-15 16:02:02 -0800</bug_when>
    <thetext>Patch 452081 does not build</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1842001</commentid>
    <comment_count>29</comment_count>
      <attachid>452106</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2022-02-15 16:04:14 -0800</bug_when>
    <thetext>Created attachment 452106
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1842098</commentid>
    <comment_count>30</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2022-02-15 20:06:37 -0800</bug_when>
    <thetext>Committed r289872 (247312@main): &lt;https://commits.webkit.org/247312@main&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 452106.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1842109</commentid>
    <comment_count>31</comment_count>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2022-02-15 20:49:48 -0800</bug_when>
    <thetext>Reopening to attach new patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1842110</commentid>
    <comment_count>32</comment_count>
      <attachid>452135</attachid>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2022-02-15 20:49:50 -0800</bug_when>
    <thetext>Created attachment 452135
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1842111</commentid>
    <comment_count>33</comment_count>
      <attachid>452136</attachid>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2022-02-15 20:54:55 -0800</bug_when>
    <thetext>Created attachment 452136
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1842112</commentid>
    <comment_count>34</comment_count>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2022-02-15 20:56:24 -0800</bug_when>
    <thetext>Whoops, sorry, webkit-patch upload messed up</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>451829</attachid>
            <date>2022-02-13 11:24:14 -0800</date>
            <delta_ts>2022-02-13 11:46:36 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-236566-20220213112413.patch</filename>
            <type>text/plain</type>
            <size>102363</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg5Njk4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IDVjOGFhZWYzNzk5ZjJmYTJmNjY5YzFm
YWZmNTU3YTc4ZmI1YzYyMDEuLjUyZDQ3N2Q5OWEzYzNkZjIxZjhhNzBlNzU3MzkzZGVkNDc2NGMy
MTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMTUgQEAKKzIwMjItMDItMTMgIENocmlzIER1bWV6ICA8Y2R1bWV6
QGFwcGxlLmNvbT4KKworICAgICAgICBEbyBwcmVsaW1pbmFyeSB3b3JrIHRvIHBhc3MgZG9tYWlu
IG5hbWVzIHRvIENvcmVMb2NhdGlvbgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MjM2NTY2CisgICAgICAgIDxyZGFyOi8vODg3NjE0MTM+CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkIGJ1aWxkIHRpbWUg
ZmxhZyBmb3IgcGFzc2luZyB3ZWJzaXRlIGlkZW50aWZpZXJzIHRvIENvcmVMb2NhdGlvbi4KKwor
ICAgICAgICAqIHd0Zi9QbGF0Zm9ybUhhdmUuaDoKKwogMjAyMi0wMi0xMiAgSmVyIE5vYmxlICA8
amVyLm5vYmxlQGFwcGxlLmNvbT4KIAogICAgICAgICBBZGQgc2V0dGluZ3MgdG8gcmVzdHJpY3Qg
bWVkaWEgY29udGFpbmVycyBhbmQgY29kZWNzIHdoZW4gaW4gQ2FwdGl2ZSBQb3J0YWwgbW9kZQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkNvcmUvQ2hh
bmdlTG9nCmluZGV4IDcxMWMxMjBjYjExYTNmMzZhNTJjZDVkNGU1ZTY1ZmI5NGZmZmQ0NDIuLjg0
ZDk3MzIyNWJmMzU3MTgzYzcyNmVjM2Y5ZDljYTkxN2I5ZmY5ZWEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw1NCBAQAorMjAyMi0wMi0xMyAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgor
CisgICAgICAgIERvIHByZWxpbWluYXJ5IHdvcmsgdG8gcGFzcyBkb21haW4gbmFtZXMgdG8gQ29y
ZUxvY2F0aW9uCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0yMzY1NjYKKyAgICAgICAgPHJkYXI6Ly84ODc2MTQxMz4KKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBEbyBwcmVsaW1pbmFyeSB3b3JrIHRvIHBhc3Mg
ZG9tYWluIG5hbWVzIHRvIENvcmVMb2NhdGlvbiB3aGVuIHVzaW5nIHRoZSBHZW9sb2NhdGlvbiBB
UEkuCisgICAgICAgIFRoaXMgcGlwZXMgdGhlIGRvbWFpbiBuYW1lcyBhbGwgdGhlIHdheSBmcm9t
IHRoZSBHZW9sb2NhdGlvbiBBUEkgdG8gdGhlIENvcmVMb2NhdGlvbiBjYWxscworICAgICAgICBi
dXQgZG9lc24ndCB5ZXQgcGFzcyB0aGUgZG9tYWluIHRvIENvcmVMb2NhdGlvbiBkdWUgdG8gPHJk
YXI6Ly84ODgzNDMwMT4uIEkgd2lsbCBmb2xsb3ctdXAKKyAgICAgICAgb25jZSA8cmRhcjovLzg4
ODM0MzAxPiBpcyBmaXhlZC4KKworICAgICAgICAqIE1vZHVsZXMvZ2VvbG9jYXRpb24vR2VvbG9j
YXRpb25DbGllbnQuaDoKKyAgICAgICAgKiBNb2R1bGVzL2dlb2xvY2F0aW9uL0dlb2xvY2F0aW9u
Q29udHJvbGxlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpHZW9sb2NhdGlvbkNvbnRyb2xsZXI6
OmRpZE5hdmlnYXRlUGFnZSk6CisgICAgICAgIChXZWJDb3JlOjpHZW9sb2NhdGlvbkNvbnRyb2xs
ZXI6OmFkZE9ic2VydmVyKToKKyAgICAgICAgKFdlYkNvcmU6Okdlb2xvY2F0aW9uQ29udHJvbGxl
cjo6cmVtb3ZlT2JzZXJ2ZXIpOgorICAgICAgICAoV2ViQ29yZTo6R2VvbG9jYXRpb25Db250cm9s
bGVyOjphY3Rpdml0eVN0YXRlRGlkQ2hhbmdlKToKKyAgICAgICAgKFdlYkNvcmU6Okdlb2xvY2F0
aW9uQ29udHJvbGxlcjo6c3RhcnRVcGRhdGluZ0lmTmVjZXNzYXJ5KToKKyAgICAgICAgKFdlYkNv
cmU6Okdlb2xvY2F0aW9uQ29udHJvbGxlcjo6c3RvcFVwZGF0aW5nSWZOZWNlc3NhcnkpOgorICAg
ICAgICAqIE1vZHVsZXMvZ2VvbG9jYXRpb24vR2VvbG9jYXRpb25Db250cm9sbGVyLmg6CisgICAg
ICAgIChXZWJDb3JlOjpHZW9sb2NhdGlvbkNvbnRyb2xsZXI6Om5lZWRzSGlnaEFjY3VyYWN5IGNv
bnN0KToKKyAgICAgICAgKiBNb2R1bGVzL2dlb2xvY2F0aW9uL0dlb2xvY2F0aW9uUG9zaXRpb25E
YXRhLmg6CisgICAgICAgICogTW9kdWxlcy9nZW9sb2NhdGlvbi9pb3MvR2VvbG9jYXRpb25Qb3Np
dGlvbkRhdGFJT1MubW06CisgICAgICAgICogU291cmNlc0NvY29hLnR4dDoKKyAgICAgICAgKiBX
ZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogcGFnZS9QYWdlLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OlBhZ2U6OmRpZENvbW1pdExvYWQpOgorICAgICAgICAqIHBs
YXRmb3JtL2NvY29hL0NvcmVMb2NhdGlvbkdlb2xvY2F0aW9uUHJvdmlkZXIuaDogQ29waWVkIGZy
b20gU291cmNlL1dlYkNvcmUvTW9kdWxlcy9nZW9sb2NhdGlvbi9HZW9sb2NhdGlvbkNsaWVudC5o
LgorICAgICAgICAqIHBsYXRmb3JtL2NvY29hL0NvcmVMb2NhdGlvbkdlb2xvY2F0aW9uUHJvdmlk
ZXIubW06IEFkZGVkLgorICAgICAgICAoaXNBdXRob3JpemF0aW9uR3JhbnRlZCk6CisgICAgICAg
ICgtW1dlYkNMTG9jYXRpb25NYW5hZ2VyIGluaXRXaXRoV2Vic2l0ZUlkZW50aWZpZXI6Y2xpZW50
Ol0pOgorICAgICAgICAoLVtXZWJDTExvY2F0aW9uTWFuYWdlciBkZWFsbG9jXSk6CisgICAgICAg
ICgtW1dlYkNMTG9jYXRpb25NYW5hZ2VyIHN0YXJ0XSk6CisgICAgICAgICgtW1dlYkNMTG9jYXRp
b25NYW5hZ2VyIHN0b3BdKToKKyAgICAgICAgKC1bV2ViQ0xMb2NhdGlvbk1hbmFnZXIgc2V0RW5h
YmxlSGlnaEFjY3VyYWN5Ol0pOgorICAgICAgICAoLVtXZWJDTExvY2F0aW9uTWFuYWdlciByZXF1
ZXN0R2VvbG9jYXRpb25BdXRob3JpemF0aW9uXSk6CisgICAgICAgICgtW1dlYkNMTG9jYXRpb25N
YW5hZ2VyIGxvY2F0aW9uTWFuYWdlckRpZENoYW5nZUF1dGhvcml6YXRpb246XSk6CisgICAgICAg
ICgtW1dlYkNMTG9jYXRpb25NYW5hZ2VyIGxvY2F0aW9uTWFuYWdlcjpkaWRVcGRhdGVMb2NhdGlv
bnM6XSk6CisgICAgICAgICgtW1dlYkNMTG9jYXRpb25NYW5hZ2VyIGxvY2F0aW9uTWFuYWdlcjpk
aWRGYWlsV2l0aEVycm9yOl0pOgorICAgICAgICAoV2ViQ29yZTo6Q29yZUxvY2F0aW9uR2VvbG9j
YXRpb25Qcm92aWRlcjo6Q29yZUxvY2F0aW9uR2VvbG9jYXRpb25Qcm92aWRlcik6CisgICAgICAg
IChXZWJDb3JlOjpDb3JlTG9jYXRpb25HZW9sb2NhdGlvblByb3ZpZGVyOjp+Q29yZUxvY2F0aW9u
R2VvbG9jYXRpb25Qcm92aWRlcik6CisgICAgICAgIChXZWJDb3JlOjpDb3JlTG9jYXRpb25HZW9s
b2NhdGlvblByb3ZpZGVyOjpzdGFydCk6CisgICAgICAgIChXZWJDb3JlOjpDb3JlTG9jYXRpb25H
ZW9sb2NhdGlvblByb3ZpZGVyOjpzdG9wKToKKyAgICAgICAgKFdlYkNvcmU6OkNvcmVMb2NhdGlv
bkdlb2xvY2F0aW9uUHJvdmlkZXI6OnNldEVuYWJsZUhpZ2hBY2N1cmFjeSk6CisgICAgICAgIChX
ZWJDb3JlOjpDb3JlTG9jYXRpb25HZW9sb2NhdGlvblByb3ZpZGVyOjpyZXF1ZXN0QXV0aG9yaXph
dGlvbik6CisgICAgICAgICogcGxhdGZvcm0vbW9jay9HZW9sb2NhdGlvbkNsaWVudE1vY2suY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6R2VvbG9jYXRpb25DbGllbnRNb2NrOjpzdGFydFVwZGF0aW5n
KToKKyAgICAgICAgKiBwbGF0Zm9ybS9tb2NrL0dlb2xvY2F0aW9uQ2xpZW50TW9jay5oOgorCiAy
MDIyLTAyLTEyICBQYXRyaWNrIEFuZ2xlICA8cGFuZ2xlQGFwcGxlLmNvbT4KIAogICAgICAgICBX
ZWIgSW5zcGVjdG9yOiBbRmxleGJveF0gU2hvdyBpdGVtIGJvdW5kcywgZ2FwcywgYW5kIGZyZWUg
c3BhY2UgaW4gZmxleCBvdmVybGF5cwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9DaGFuZ2VM
b2cgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwppbmRleCA4MWMxMWI3ODVlYTg2MTJlYjI3NmQz
ODBmZGNjOTI1NmFlOTMxN2ZkLi42MWVjNzA0MDIwYTViZWI5Njc5MDM3Njk4OTBiYTk2MzI0NTAy
MWRmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2Vi
S2l0L0NoYW5nZUxvZwpAQCAtMSwzICsxLDk0IEBACisyMDIyLTAyLTEzICBDaHJpcyBEdW1leiAg
PGNkdW1lekBhcHBsZS5jb20+CisKKyAgICAgICAgRG8gcHJlbGltaW5hcnkgd29yayB0byBwYXNz
IGRvbWFpbiBuYW1lcyB0byBDb3JlTG9jYXRpb24KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTIzNjU2NgorICAgICAgICA8cmRhcjovLzg4NzYxNDEzPgor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIERvIHByZWxp
bWluYXJ5IHdvcmsgdG8gcGFzcyBkb21haW4gbmFtZXMgdG8gQ29yZUxvY2F0aW9uIHdoZW4gdXNp
bmcgdGhlIEdlb2xvY2F0aW9uIEFQSS4KKyAgICAgICAgVGhpcyBwaXBlcyB0aGUgZG9tYWluIG5h
bWVzIGFsbCB0aGUgd2F5IGZyb20gdGhlIEdlb2xvY2F0aW9uIEFQSSB0byB0aGUgQ29yZUxvY2F0
aW9uIGNhbGxzCisgICAgICAgIGJ1dCBkb2Vzbid0IHlldCBwYXNzIHRoZSBkb21haW4gdG8gQ29y
ZUxvY2F0aW9uIGR1ZSB0byA8cmRhcjovLzg4ODM0MzAxPi4gSSB3aWxsIGZvbGxvdy11cAorICAg
ICAgICBvbmNlIDxyZGFyOi8vODg4MzQzMDE+IGlzIGZpeGVkLgorCisgICAgICAgICogU291cmNl
c0NvY29hLnR4dDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0MvV0tHZW9sb2NhdGlvbk1hbmFn
ZXIuY3BwOgorICAgICAgICAoV0tHZW9sb2NhdGlvbk1hbmFnZXJTZXRQcm92aWRlcik6CisgICAg
ICAgICogVUlQcm9jZXNzL0NvY29hL1dlYkdlb2xvY2F0aW9uTWFuYWdlclByb3h5Q29jb2EuY3Bw
OiBBZGRlZC4KKyAgICAgICAgKFdlYktpdDo6V2ViR2VvbG9jYXRpb25NYW5hZ2VyUHJveHk6OnBv
c2l0aW9uQ2hhbmdlZCk6CisgICAgICAgIChXZWJLaXQ6OldlYkdlb2xvY2F0aW9uTWFuYWdlclBy
b3h5OjplcnJvck9jY3VycmVkKToKKyAgICAgICAgKFdlYktpdDo6V2ViR2VvbG9jYXRpb25NYW5h
Z2VyUHJveHk6OnJlc2V0R2VvbG9jYXRpb24pOgorICAgICAgICAoV2ViS2l0OjpXZWJHZW9sb2Nh
dGlvbk1hbmFnZXJQcm94eTo6aXNVcGRhdGluZyBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6Oldl
Ykdlb2xvY2F0aW9uTWFuYWdlclByb3h5Ojppc0hpZ2hBY2N1cmFjeUVuYWJsZWQgY29uc3QpOgor
ICAgICAgICAoV2ViS2l0OjpXZWJHZW9sb2NhdGlvbk1hbmFnZXJQcm94eTo6cHJvdmlkZXJTdGFy
dFVwZGF0aW5nKToKKyAgICAgICAgKFdlYktpdDo6V2ViR2VvbG9jYXRpb25NYW5hZ2VyUHJveHk6
OnByb3ZpZGVyU3RvcFVwZGF0aW5nKToKKyAgICAgICAgKFdlYktpdDo6V2ViR2VvbG9jYXRpb25N
YW5hZ2VyUHJveHk6OnByb3ZpZGVyU2V0RW5hYmxlZEhpZ2hBY2N1cmFjeSk6CisgICAgICAgICog
VUlQcm9jZXNzL1dlYkdlb2xvY2F0aW9uTWFuYWdlclByb3h5LmNwcDoKKyAgICAgICAgKFdlYktp
dDo6V2ViR2VvbG9jYXRpb25NYW5hZ2VyUHJveHk6OldlYkdlb2xvY2F0aW9uTWFuYWdlclByb3h5
KToKKyAgICAgICAgKFdlYktpdDo6V2ViR2VvbG9jYXRpb25NYW5hZ2VyUHJveHk6OnByb2Nlc3NQ
b29sRGVzdHJveWVkKToKKyAgICAgICAgKFdlYktpdDo6V2ViR2VvbG9jYXRpb25NYW5hZ2VyUHJv
eHk6OnByb2Nlc3NEaWRDbG9zZSk6CisgICAgICAgIChXZWJLaXQ6OldlYkdlb2xvY2F0aW9uTWFu
YWdlclByb3h5Ojpwcm92aWRlckRpZENoYW5nZVBvc2l0aW9uKToKKyAgICAgICAgKFdlYktpdDo6
V2ViR2VvbG9jYXRpb25NYW5hZ2VyUHJveHk6OnByb3ZpZGVyRGlkRmFpbFRvRGV0ZXJtaW5lUG9z
aXRpb24pOgorICAgICAgICAoV2ViS2l0OjpXZWJHZW9sb2NhdGlvbk1hbmFnZXJQcm94eTo6c3Rh
cnRVcGRhdGluZyk6CisgICAgICAgIChXZWJLaXQ6OldlYkdlb2xvY2F0aW9uTWFuYWdlclByb3h5
OjpzdG9wVXBkYXRpbmcpOgorICAgICAgICAoV2ViS2l0OjpXZWJHZW9sb2NhdGlvbk1hbmFnZXJQ
cm94eTo6c2V0RW5hYmxlSGlnaEFjY3VyYWN5KToKKyAgICAgICAgKFdlYktpdDo6V2ViR2VvbG9j
YXRpb25NYW5hZ2VyUHJveHk6OnNldFByb3ZpZGVyKToKKyAgICAgICAgKFdlYktpdDo6V2ViR2Vv
bG9jYXRpb25NYW5hZ2VyUHJveHk6OmlzVXBkYXRpbmcgY29uc3QpOgorICAgICAgICAoV2ViS2l0
OjpXZWJHZW9sb2NhdGlvbk1hbmFnZXJQcm94eTo6aXNIaWdoQWNjdXJhY3lFbmFibGVkIGNvbnN0
KToKKyAgICAgICAgKFdlYktpdDo6V2ViR2VvbG9jYXRpb25NYW5hZ2VyUHJveHk6OnByb3ZpZGVy
U3RhcnRVcGRhdGluZyk6CisgICAgICAgIChXZWJLaXQ6OldlYkdlb2xvY2F0aW9uTWFuYWdlclBy
b3h5Ojpwcm92aWRlclN0b3BVcGRhdGluZyk6CisgICAgICAgIChXZWJLaXQ6OldlYkdlb2xvY2F0
aW9uTWFuYWdlclByb3h5Ojpwcm92aWRlclNldEVuYWJsZWRIaWdoQWNjdXJhY3kpOgorICAgICAg
ICAoV2ViS2l0OjpXZWJHZW9sb2NhdGlvbk1hbmFnZXJQcm94eTo6cmVzZXRQZXJtaXNzaW9ucyk6
IERlbGV0ZWQuCisgICAgICAgIChXZWJLaXQ6OldlYkdlb2xvY2F0aW9uTWFuYWdlclByb3h5Ojpy
ZW1vdmVSZXF1ZXN0ZXIpOiBEZWxldGVkLgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJHZW9sb2Nh
dGlvbk1hbmFnZXJQcm94eS5oOgorICAgICAgICAoV2ViS2l0OjpXZWJHZW9sb2NhdGlvbk1hbmFn
ZXJQcm94eTo6bGFzdFBvc2l0aW9uIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYktpdDo6
V2ViR2VvbG9jYXRpb25NYW5hZ2VyUHJveHk6OmlzVXBkYXRpbmcgY29uc3QpOiBEZWxldGVkLgor
ICAgICAgICAoV2ViS2l0OjpXZWJHZW9sb2NhdGlvbk1hbmFnZXJQcm94eTo6aXNIaWdoQWNjdXJh
Y3lFbmFibGVkIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViR2VvbG9j
YXRpb25NYW5hZ2VyUHJveHkubWVzc2FnZXMuaW46CisgICAgICAgICogVUlQcm9jZXNzL2lvcy9X
S0dlb2xvY2F0aW9uUHJvdmlkZXJJT1MubW06CisgICAgICAgICgtW1dLR2VvbG9jYXRpb25Qcm92
aWRlcklPUyBfc3RhcnRVcGRhdGluZ10pOgorICAgICAgICAoLVtXS0dlb2xvY2F0aW9uUHJvdmlk
ZXJJT1MgX3N0b3BVcGRhdGluZ10pOgorICAgICAgICAoLVtXS0dlb2xvY2F0aW9uUHJvdmlkZXJJ
T1MgX3NldEVuYWJsZUhpZ2hBY2N1cmFjeTpdKToKKyAgICAgICAgKC1bV0tHZW9sb2NhdGlvblBy
b3ZpZGVySU9TIGluaXRXaXRoUHJvY2Vzc1Bvb2w6XSk6CisgICAgICAgICgtW1dLR2VvbG9jYXRp
b25Qcm92aWRlcklPUyBkZWNpZGVQb2xpY3lGb3JHZW9sb2NhdGlvblJlcXVlc3RGcm9tT3JpZ2lu
OmNvbXBsZXRpb25IYW5kbGVyOnZpZXc6XSk6CisgICAgICAgICgtW1dLR2VvbG9jYXRpb25Qcm92
aWRlcklPUyBnZW9sb2NhdGlvbkF1dGhvcml6YXRpb25HcmFudGVkXSk6CisgICAgICAgICgtW1dL
R2VvbG9jYXRpb25Qcm92aWRlcklPUyBwb3NpdGlvbkNoYW5nZWQ6XSk6CisgICAgICAgICgtW1dL
R2VvbG9jYXRpb25Qcm92aWRlcklPUyBlcnJvck9jY3VycmVkOl0pOgorICAgICAgICAoLVtXS0dl
b2xvY2F0aW9uUHJvdmlkZXJJT1MgcmVzZXRHZW9sb2NhdGlvbl0pOgorICAgICAgICAoc3RhcnRV
cGRhdGluZ0NhbGxiYWNrKTogRGVsZXRlZC4KKyAgICAgICAgKHN0b3BVcGRhdGluZ0NhbGxiYWNr
KTogRGVsZXRlZC4KKyAgICAgICAgKHNldEVuYWJsZUhpZ2hBY2N1cmFjeSk6IERlbGV0ZWQuCisg
ICAgICAgICgtW1dLTGVnYWN5Q29yZUxvY2F0aW9uUHJvdmlkZXIgc2V0TGlzdGVuZXI6XSk6IERl
bGV0ZWQuCisgICAgICAgICgtW1dLTGVnYWN5Q29yZUxvY2F0aW9uUHJvdmlkZXIgcmVxdWVzdEdl
b2xvY2F0aW9uQXV0aG9yaXphdGlvbl0pOiBEZWxldGVkLgorICAgICAgICAoLVtXS0xlZ2FjeUNv
cmVMb2NhdGlvblByb3ZpZGVyIHN0YXJ0XSk6IERlbGV0ZWQuCisgICAgICAgICgtW1dLTGVnYWN5
Q29yZUxvY2F0aW9uUHJvdmlkZXIgc3RvcF0pOiBEZWxldGVkLgorICAgICAgICAoLVtXS0xlZ2Fj
eUNvcmVMb2NhdGlvblByb3ZpZGVyIHNldEVuYWJsZUhpZ2hBY2N1cmFjeTpdKTogRGVsZXRlZC4K
KyAgICAgICAgKC1bV0tMZWdhY3lDb3JlTG9jYXRpb25Qcm92aWRlciBnZW9sb2NhdGlvbkF1dGhv
cml6YXRpb25HcmFudGVkXSk6IERlbGV0ZWQuCisgICAgICAgICgtW1dLTGVnYWN5Q29yZUxvY2F0
aW9uUHJvdmlkZXIgZ2VvbG9jYXRpb25BdXRob3JpemF0aW9uRGVuaWVkXSk6IERlbGV0ZWQuCisg
ICAgICAgICgtW1dLTGVnYWN5Q29yZUxvY2F0aW9uUHJvdmlkZXIgcG9zaXRpb25DaGFuZ2VkOl0p
OiBEZWxldGVkLgorICAgICAgICAoLVtXS0xlZ2FjeUNvcmVMb2NhdGlvblByb3ZpZGVyIGVycm9y
T2NjdXJyZWQ6XSk6IERlbGV0ZWQuCisgICAgICAgICgtW1dLTGVnYWN5Q29yZUxvY2F0aW9uUHJv
dmlkZXIgcmVzZXRHZW9sb2NhdGlvbl0pOiBEZWxldGVkLgorICAgICAgICAqIFdlYktpdC54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIFdlYlByb2Nlc3MvR2VvbG9jYXRpb24v
V2ViR2VvbG9jYXRpb25NYW5hZ2VyLmNwcDoKKyAgICAgICAgKFdlYktpdDo6cmVnaXN0cmFibGVE
b21haW5Gb3JQYWdlKToKKyAgICAgICAgKFdlYktpdDo6V2ViR2VvbG9jYXRpb25NYW5hZ2VyOjpy
ZWdpc3RlcldlYlBhZ2UpOgorICAgICAgICAoV2ViS2l0OjpXZWJHZW9sb2NhdGlvbk1hbmFnZXI6
OnVucmVnaXN0ZXJXZWJQYWdlKToKKyAgICAgICAgKFdlYktpdDo6V2ViR2VvbG9jYXRpb25NYW5h
Z2VyOjpzZXRFbmFibGVIaWdoQWNjdXJhY3lGb3JQYWdlKToKKyAgICAgICAgKFdlYktpdDo6V2Vi
R2VvbG9jYXRpb25NYW5hZ2VyOjpkaWRDaGFuZ2VQb3NpdGlvbik6CisgICAgICAgIChXZWJLaXQ6
OldlYkdlb2xvY2F0aW9uTWFuYWdlcjo6ZGlkRmFpbFRvRGV0ZXJtaW5lUG9zaXRpb24pOgorICAg
ICAgICAoV2ViS2l0OjpXZWJHZW9sb2NhdGlvbk1hbmFnZXI6OnJlc2V0UGVybWlzc2lvbnMpOgor
ICAgICAgICAoV2ViS2l0OjpXZWJHZW9sb2NhdGlvbk1hbmFnZXI6OmlzVXBkYXRpbmcgY29uc3Qp
OiBEZWxldGVkLgorICAgICAgICAoV2ViS2l0OjpXZWJHZW9sb2NhdGlvbk1hbmFnZXI6OmlzSGln
aEFjY3VyYWN5RW5hYmxlZCBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgICogV2ViUHJvY2Vzcy9H
ZW9sb2NhdGlvbi9XZWJHZW9sb2NhdGlvbk1hbmFnZXIuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNz
L0dlb2xvY2F0aW9uL1dlYkdlb2xvY2F0aW9uTWFuYWdlci5tZXNzYWdlcy5pbjoKKyAgICAgICAg
KiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkdlb2xvY2F0aW9uQ2xpZW50LmNwcDoKKyAg
ICAgICAgKFdlYktpdDo6V2ViR2VvbG9jYXRpb25DbGllbnQ6OnN0YXJ0VXBkYXRpbmcpOgorICAg
ICAgICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViR2VvbG9jYXRpb25DbGllbnQuaDoK
KyAgICAgICAgKFdlYktpdDo6V2ViR2VvbG9jYXRpb25DbGllbnQ6OldlYkdlb2xvY2F0aW9uQ2xp
ZW50KTogRGVsZXRlZC4KKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3BwOgorICAg
ICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzOjpyZXNldEFsbEdlb2xvY2F0aW9uUGVybWlzc2lvbnMp
OiBEZWxldGVkLgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUHJvY2Vzcy5oOgorCiAyMDIyLTAy
LTEyICBKZXIgTm9ibGUgIDxqZXIubm9ibGVAYXBwbGUuY29tPgogCiAgICAgICAgIEFkZCBzZXR0
aW5ncyB0byByZXN0cmljdCBtZWRpYSBjb250YWluZXJzIGFuZCBjb2RlY3Mgd2hlbiBpbiBDYXB0
aXZlIFBvcnRhbCBtb2RlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9DaGFu
Z2VMb2cgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9DaGFuZ2VMb2cKaW5kZXggNjgwMzk0ODU4
YTE1YjhhMjU2OTZhYWVjN2M4ZDk0YWE3M2FkNzIyMy4uMjU5NzZhMmYwZjQ4ZDNjM2NlMjk4YmZl
ZjgwZTFhZmIxMDU4OGY2NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2hh
bmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxvZwpAQCAtMSwzICsx
LDE1IEBACisyMDIyLTAyLTEzICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CisKKyAg
ICAgICAgRG8gcHJlbGltaW5hcnkgd29yayB0byBwYXNzIGRvbWFpbiBuYW1lcyB0byBDb3JlTG9j
YXRpb24KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIz
NjU2NgorICAgICAgICA8cmRhcjovLzg4NzYxNDEzPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2ViR2VvbG9jYXRpb25D
bGllbnQuaDoKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJHZW9sb2NhdGlvbkNsaWVudC5t
bToKKyAgICAgICAgKFdlYkdlb2xvY2F0aW9uQ2xpZW50OjpzdGFydFVwZGF0aW5nKToKKwogMjAy
Mi0wMi0xMSAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgogCiAgICAgICAgIFVucmV2
aWV3ZWQsIGZpeCBidWlsZCB3aXRoIHRoZSBsYXRlc3QgaU9TIFNESy4KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXRMZWdhY3kvd2luL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2lu
L0NoYW5nZUxvZwppbmRleCA2OTVhYTkxMDUzOWVmMDIxMDVmNTIxOTMwNGMwOTdlMTAzMTI2NDU1
Li4xZDZjMDMzZTJjZDFkMTI3NDQ1YzM1YzMwY2EzODg1MGFlZjdiZGI0IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdExlZ2Fj
eS93aW4vQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTUgQEAKKzIwMjItMDItMTMgIENocmlzIER1bWV6
ICA8Y2R1bWV6QGFwcGxlLmNvbT4KKworICAgICAgICBEbyBwcmVsaW1pbmFyeSB3b3JrIHRvIHBh
c3MgZG9tYWluIG5hbWVzIHRvIENvcmVMb2NhdGlvbgorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjM2NTY2CisgICAgICAgIDxyZGFyOi8vODg3NjE0MTM+
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBXZWJD
b3JlU3VwcG9ydC9XZWJHZW9sb2NhdGlvbkNsaWVudC5jcHA6CisgICAgICAgIChXZWJHZW9sb2Nh
dGlvbkNsaWVudDo6c3RhcnRVcGRhdGluZyk6CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2Vi
R2VvbG9jYXRpb25DbGllbnQuaDoKKwogMjAyMi0wMi0wMSAgTXlsZXMgQy4gTWF4ZmllbGQgIDxt
bWF4ZmllbGRAYXBwbGUuY29tPgogCiAgICAgICAgIFJlbmFtZSBGb250Q2FzY2FkZTo6Zm9udE1l
dHJpY3MoKSBhbmQgUmVuZGVyU3R5bGU6OmZvbnRNZXRyaWNzKCkgdG8gZm9udE1ldHJpY3NPZlBy
aW1hcnlGb250KCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL1BsYXRmb3JtSGF2ZS5oIGIv
U291cmNlL1dURi93dGYvUGxhdGZvcm1IYXZlLmgKaW5kZXggMDkyYmMzNjIxNTAxZDQ0Y2VhZmIw
NzBmYWNjZDM5OTVjZGEyMzEyNy4uNjhhMzA0NWNhNzY2OWNmY2ExOWQ4Mzg1ZTk4NjM2ZTQ0OTk5
OTNmNiAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvUGxhdGZvcm1IYXZlLmgKKysrIGIvU291
cmNlL1dURi93dGYvUGxhdGZvcm1IYXZlLmgKQEAgLTExMTksNiArMTExOSwxMiBAQAogI2RlZmlu
ZSBIQVZFX05TVEVYVExJU1RfTUFSS0VSX0ZPUk1BVFMgMQogI2VuZGlmCiAKKyNpZiAoUExBVEZP
Uk0oSU9TKSAmJiBfX0lQSE9ORV9PU19WRVJTSU9OX01BWF9BTExPV0VEID49IDE2MDAwMCkgXAor
ICAgIHx8IChQTEFURk9STShXQVRDSE9TKSAmJiBfX1dBVENIX09TX1ZFUlNJT05fTUFYX0FMTE9X
RUQgPj0gOTAwMDApIFwKKyAgICB8fCAoUExBVEZPUk0oQVBQTEVUVikgJiYgX19UVl9PU19WRVJT
SU9OX01BWF9BTExPV0VEID49IDE2MDAwMCkKKyNkZWZpbmUgSEFWRV9DT1JFX0xPQ0FUSU9OX1dF
QlNJVEVfSURFTlRJRklFUlMgMQorI2VuZGlmCisKICNpZiBQTEFURk9STShNQUMpCiAjZGVmaW5l
IEhBVkVfU0NFTkVLSVQgMQogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2dlb2xvY2F0aW9uL0dlb2xvY2F0aW9uQ2xpZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2dlb2xvY2F0aW9uL0dlb2xvY2F0aW9uQ2xpZW50LmgKaW5kZXggNWJhZjNhZDgyYzU3ZTVh
Y2JhOTZlM2RmMGVkNjBlYmM3NTRiY2IwNS4uYTRlODYyMzYyNTU2N2U5YWRmZWIwMGQ4MjQwMDBh
Mjc3ZGJlYWYwMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9nZW9sb2NhdGlv
bi9HZW9sb2NhdGlvbkNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZ2VvbG9j
YXRpb24vR2VvbG9jYXRpb25DbGllbnQuaApAQCAtMzgsNyArMzgsNyBAQCBjbGFzcyBHZW9sb2Nh
dGlvbkNsaWVudCB7CiBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIGdlb2xvY2F0aW9uRGVzdHJv
eWVkKCkgPSAwOwogCi0gICAgdmlydHVhbCB2b2lkIHN0YXJ0VXBkYXRpbmcoY29uc3QgU3RyaW5n
JiBhdXRob3JpemF0aW9uVG9rZW4pID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgc3RhcnRVcGRhdGlu
Zyhjb25zdCBTdHJpbmcmIGF1dGhvcml6YXRpb25Ub2tlbiwgYm9vbCBuZWVkc0hpZ2hBY2N1cmFj
eSkgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBzdG9wVXBkYXRpbmcoKSA9IDA7CiAgICAgdmlydHVh
bCB2b2lkIHJldm9rZUF1dGhvcml6YXRpb25Ub2tlbihjb25zdCBTdHJpbmcmKSB7IH0KIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9nZW9sb2NhdGlvbi9HZW9sb2NhdGlvbkNv
bnRyb2xsZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9nZW9sb2NhdGlvbi9HZW9sb2Nh
dGlvbkNvbnRyb2xsZXIuY3BwCmluZGV4IDA2MTYyOTE2MGQ5YmNjN2Q1ZGFmNzRjZmM0ZjgxNTUw
YmE0OGRlOGMuLjA3ZGQ2NWYzYzFhZWU3OWViOWM3MzI4MzZhMmQ1YWFkMDE3MzMzY2YgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZ2VvbG9jYXRpb24vR2VvbG9jYXRpb25Db250
cm9sbGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2dlb2xvY2F0aW9uL0dlb2xv
Y2F0aW9uQ29udHJvbGxlci5jcHAKQEAgLTUyLDE5ICs1MiwyNSBAQCBHZW9sb2NhdGlvbkNvbnRy
b2xsZXI6On5HZW9sb2NhdGlvbkNvbnRyb2xsZXIoKQogICAgIG1fY2xpZW50Lmdlb2xvY2F0aW9u
RGVzdHJveWVkKCk7CiB9CiAKK3ZvaWQgR2VvbG9jYXRpb25Db250cm9sbGVyOjpkaWROYXZpZ2F0
ZVBhZ2UoKQoreworICAgIHdoaWxlICghbV9vYnNlcnZlcnMuaXNFbXB0eSgpKQorICAgICAgICBy
ZW1vdmVPYnNlcnZlcihtX29ic2VydmVycy5iZWdpbigpLT5nZXQoKSk7Cit9CisKIHZvaWQgR2Vv
bG9jYXRpb25Db250cm9sbGVyOjphZGRPYnNlcnZlcihHZW9sb2NhdGlvbiYgb2JzZXJ2ZXIsIGJv
b2wgZW5hYmxlSGlnaEFjY3VyYWN5KQogewotICAgIC8vIFRoaXMgbWF5IGJlIGNhbGxlZCBtdWx0
aXBsZSB0aW1lcyB3aXRoIHRoZSBzYW1lIG9ic2VydmVyLCB0aG91Z2ggcmVtb3ZlT2JzZXJ2ZXIo
KQotICAgIC8vIGlzIGNhbGxlZCBvbmx5IG9uY2Ugd2l0aCBlYWNoLgotICAgIGJvb2wgd2FzRW1w
dHkgPSBtX29ic2VydmVycy5pc0VtcHR5KCk7CisgICAgYm9vbCBoaWdoQWNjdXJhY3lXYXNSZXF1
aXJlZCA9IG5lZWRzSGlnaEFjY3VyYWN5KCk7CisKICAgICBtX29ic2VydmVycy5hZGQob2JzZXJ2
ZXIpOwogICAgIGlmIChlbmFibGVIaWdoQWNjdXJhY3kpCiAgICAgICAgIG1faGlnaEFjY3VyYWN5
T2JzZXJ2ZXJzLmFkZChvYnNlcnZlcik7CiAKLSAgICBpZiAoZW5hYmxlSGlnaEFjY3VyYWN5KQot
ICAgICAgICBtX2NsaWVudC5zZXRFbmFibGVIaWdoQWNjdXJhY3kodHJ1ZSk7Ci0gICAgaWYgKHdh
c0VtcHR5ICYmIG1fcGFnZS5pc1Zpc2libGUoKSkKLSAgICAgICAgbV9jbGllbnQuc3RhcnRVcGRh
dGluZyhvYnNlcnZlci5hdXRob3JpemF0aW9uVG9rZW4oKSk7CisgICAgaWYgKG1faXNVcGRhdGlu
ZykgeworICAgICAgICBpZiAoIWhpZ2hBY2N1cmFjeVdhc1JlcXVpcmVkICYmIGVuYWJsZUhpZ2hB
Y2N1cmFjeSkKKyAgICAgICAgICAgIG1fY2xpZW50LnNldEVuYWJsZUhpZ2hBY2N1cmFjeSh0cnVl
KTsKKyAgICB9IGVsc2UKKyAgICAgICAgc3RhcnRVcGRhdGluZ0lmTmVjZXNzYXJ5KCk7CiB9CiAK
IHZvaWQgR2VvbG9jYXRpb25Db250cm9sbGVyOjpyZW1vdmVPYnNlcnZlcihHZW9sb2NhdGlvbiYg
b2JzZXJ2ZXIpCkBAIC03MiwxMiArNzgsMTcgQEAgdm9pZCBHZW9sb2NhdGlvbkNvbnRyb2xsZXI6
OnJlbW92ZU9ic2VydmVyKEdlb2xvY2F0aW9uJiBvYnNlcnZlcikKICAgICBpZiAoIW1fb2JzZXJ2
ZXJzLmNvbnRhaW5zKG9ic2VydmVyKSkKICAgICAgICAgcmV0dXJuOwogCisgICAgYm9vbCBoaWdo
QWNjdXJhY3lXYXNSZXF1aXJlZCA9IG5lZWRzSGlnaEFjY3VyYWN5KCk7CisKICAgICBtX29ic2Vy
dmVycy5yZW1vdmUob2JzZXJ2ZXIpOwogICAgIG1faGlnaEFjY3VyYWN5T2JzZXJ2ZXJzLnJlbW92
ZShvYnNlcnZlcik7CiAKKyAgICBpZiAoIW1faXNVcGRhdGluZykKKyAgICAgICAgcmV0dXJuOwor
CiAgICAgaWYgKG1fb2JzZXJ2ZXJzLmlzRW1wdHkoKSkKLSAgICAgICAgbV9jbGllbnQuc3RvcFVw
ZGF0aW5nKCk7Ci0gICAgZWxzZSBpZiAobV9oaWdoQWNjdXJhY3lPYnNlcnZlcnMuaXNFbXB0eSgp
KQorICAgICAgICBzdG9wVXBkYXRpbmdJZk5lY2Vzc2FyeSgpOworICAgIGVsc2UgaWYgKGhpZ2hB
Y2N1cmFjeVdhc1JlcXVpcmVkICYmICFuZWVkc0hpZ2hBY2N1cmFjeSgpKQogICAgICAgICBtX2Ns
aWVudC5zZXRFbmFibGVIaWdoQWNjdXJhY3koZmFsc2UpOwogfQogCkBAIC0xMzksOSArMTUwLDkg
QEAgdm9pZCBHZW9sb2NhdGlvbkNvbnRyb2xsZXI6OmFjdGl2aXR5U3RhdGVEaWRDaGFuZ2UoT3B0
aW9uU2V0PEFjdGl2aXR5U3RhdGU6OkZsYWcKICAgICBhdXRvIGNoYW5nZWQgPSBvbGRBY3Rpdml0
eVN0YXRlIF4gbmV3QWN0aXZpdHlTdGF0ZTsKICAgICBpZiAoY2hhbmdlZCAmIEFjdGl2aXR5U3Rh
dGU6OklzVmlzaWJsZSAmJiAhbV9vYnNlcnZlcnMuaXNFbXB0eSgpKSB7CiAgICAgICAgIGlmIChu
ZXdBY3Rpdml0eVN0YXRlICYgQWN0aXZpdHlTdGF0ZTo6SXNWaXNpYmxlKQotICAgICAgICAgICAg
bV9jbGllbnQuc3RhcnRVcGRhdGluZygoKm1fb2JzZXJ2ZXJzLnJhbmRvbSgpKS0+YXV0aG9yaXph
dGlvblRva2VuKCkpOworICAgICAgICAgICAgc3RhcnRVcGRhdGluZ0lmTmVjZXNzYXJ5KCk7CiAg
ICAgICAgIGVsc2UKLSAgICAgICAgICAgIG1fY2xpZW50LnN0b3BVcGRhdGluZygpOworICAgICAg
ICAgICAgc3RvcFVwZGF0aW5nSWZOZWNlc3NhcnkoKTsKICAgICB9CiAKICAgICBpZiAoIW1fcGFn
ZS5pc1Zpc2libGUoKSkKQEAgLTE1Miw2ICsxNjMsMjQgQEAgdm9pZCBHZW9sb2NhdGlvbkNvbnRy
b2xsZXI6OmFjdGl2aXR5U3RhdGVEaWRDaGFuZ2UoT3B0aW9uU2V0PEFjdGl2aXR5U3RhdGU6OkZs
YWcKICAgICAgICAgbV9jbGllbnQucmVxdWVzdFBlcm1pc3Npb24ocGVybWlzc2lvblJlcXVlc3Qu
Z2V0KCkpOwogfQogCit2b2lkIEdlb2xvY2F0aW9uQ29udHJvbGxlcjo6c3RhcnRVcGRhdGluZ0lm
TmVjZXNzYXJ5KCkKK3sKKyAgICBpZiAobV9pc1VwZGF0aW5nIHx8ICFtX3BhZ2UuaXNWaXNpYmxl
KCkgfHwgbV9vYnNlcnZlcnMuaXNFbXB0eSgpKQorICAgICAgICByZXR1cm47CisKKyAgICBtX2Ns
aWVudC5zdGFydFVwZGF0aW5nKCgqbV9vYnNlcnZlcnMucmFuZG9tKCkpLT5hdXRob3JpemF0aW9u
VG9rZW4oKSwgbmVlZHNIaWdoQWNjdXJhY3koKSk7CisgICAgbV9pc1VwZGF0aW5nID0gdHJ1ZTsK
K30KKwordm9pZCBHZW9sb2NhdGlvbkNvbnRyb2xsZXI6OnN0b3BVcGRhdGluZ0lmTmVjZXNzYXJ5
KCkKK3sKKyAgICBpZiAoIW1faXNVcGRhdGluZykKKyAgICAgICAgcmV0dXJuOworCisgICAgbV9j
bGllbnQuc3RvcFVwZGF0aW5nKCk7CisgICAgbV9pc1VwZGF0aW5nID0gZmFsc2U7Cit9CisKIGNv
bnN0IGNoYXIqIEdlb2xvY2F0aW9uQ29udHJvbGxlcjo6c3VwcGxlbWVudE5hbWUoKQogewogICAg
IHJldHVybiAiR2VvbG9jYXRpb25Db250cm9sbGVyIjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvZ2VvbG9jYXRpb24vR2VvbG9jYXRpb25Db250cm9sbGVyLmggYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2dlb2xvY2F0aW9uL0dlb2xvY2F0aW9uQ29udHJvbGxlci5oCmluZGV4
IDQyZjVkMDYyZGI2ZjA5YzY2MDExMWQ2NmQ5ZjBmY2ZmZjNiMjA3NDAuLmJiZmY1NzVlYjA1ODMy
NDA3ODBkM2I0MWE5Njc0MmM2YjFkNzI0OGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvZ2VvbG9jYXRpb24vR2VvbG9jYXRpb25Db250cm9sbGVyLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9nZW9sb2NhdGlvbi9HZW9sb2NhdGlvbkNvbnRyb2xsZXIuaApAQCAtMzAs
NiArMzAsNyBAQAogI2luY2x1ZGUgIkFjdGl2aXR5U3RhdGVDaGFuZ2VPYnNlcnZlci5oIgogI2lu
Y2x1ZGUgIkdlb2xvY2F0aW9uLmgiCiAjaW5jbHVkZSAiUGFnZS5oIgorI2luY2x1ZGUgIlJlZ2lz
dHJhYmxlRG9tYWluLmgiCiAjaW5jbHVkZSA8d3RmL0hhc2hTZXQuaD4KICNpbmNsdWRlIDx3dGYv
Tm9uY29weWFibGUuaD4KICNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+CkBAIC02NSw2ICs2Niw4IEBA
IHB1YmxpYzoKIAogICAgIHZvaWQgcmV2b2tlQXV0aG9yaXphdGlvblRva2VuKGNvbnN0IFN0cmlu
ZyYpOwogCisgICAgdm9pZCBkaWROYXZpZ2F0ZVBhZ2UoKTsKKwogcHJpdmF0ZToKICAgICBQYWdl
JiBtX3BhZ2U7CiAgICAgR2VvbG9jYXRpb25DbGllbnQmIG1fY2xpZW50OwpAQCAtNzMsNiArNzYs
MTEgQEAgcHJpdmF0ZToKIAogICAgIHN0ZDo6b3B0aW9uYWw8R2VvbG9jYXRpb25Qb3NpdGlvbkRh
dGE+IG1fbGFzdFBvc2l0aW9uOwogCisgICAgYm9vbCBuZWVkc0hpZ2hBY2N1cmFjeSgpIGNvbnN0
IHsgcmV0dXJuICFtX2hpZ2hBY2N1cmFjeU9ic2VydmVycy5pc0VtcHR5KCk7IH0KKworICAgIHZv
aWQgc3RhcnRVcGRhdGluZ0lmTmVjZXNzYXJ5KCk7CisgICAgdm9pZCBzdG9wVXBkYXRpbmdJZk5l
Y2Vzc2FyeSgpOworCiAgICAgdHlwZWRlZiBIYXNoU2V0PFJlZjxHZW9sb2NhdGlvbj4+IE9ic2Vy
dmVyc1NldDsKICAgICAvLyBBbGwgb2JzZXJ2ZXJzOyBib3RoIHRob3NlIHJlcXVlc3RpbmcgaGln
aCBhY2N1cmFjeSBhbmQgdGhvc2Ugbm90LgogICAgIE9ic2VydmVyc1NldCBtX29ic2VydmVyczsK
QEAgLTgwLDYgKzg4LDkgQEAgcHJpdmF0ZToKIAogICAgIC8vIFdoaWxlIHRoZSBwYWdlIGlzIG5v
dCB2aXNpYmxlLCB3ZSBwZW5kIHBlcm1pc3Npb24gcmVxdWVzdHMuCiAgICAgSGFzaFNldDxSZWY8
R2VvbG9jYXRpb24+PiBtX3BlbmRpbmdQZXJtaXNzaW9uUmVxdWVzdDsKKworICAgIFJlZ2lzdHJh
YmxlRG9tYWluIG1fcmVnaXN0cmFibGVEb21haW47CisgICAgYm9vbCBtX2lzVXBkYXRpbmcgeyBm
YWxzZSB9OwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9nZW9sb2NhdGlvbi9HZW9sb2NhdGlvblBvc2l0aW9uRGF0YS5oIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9nZW9sb2NhdGlvbi9HZW9sb2NhdGlvblBvc2l0aW9uRGF0
YS5oCmluZGV4IDkyNjIyMTcwYzhhYWQ2OTg5YjhhMTJjZTQ4MzU2ZGM2ODdiZjZlMzUuLmNjMjE4
MGE4MzdkMjc0M2MxZmJmNzYxYzQxMGUxYzdlYmZlYWVlN2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvZ2VvbG9jYXRpb24vR2VvbG9jYXRpb25Qb3NpdGlvbkRhdGEuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2dlb2xvY2F0aW9uL0dlb2xvY2F0aW9uUG9zaXRpb25E
YXRhLmgKQEAgLTI5LDcgKzI5LDcgQEAKICNpbmNsdWRlIDx3dGYvUmVmLmg+CiAjaW5jbHVkZSA8
d3RmL1JlZkNvdW50ZWQuaD4KIAotI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCisjaWYgUExBVEZP
Uk0oQ09DT0EpCiBPQkpDX0NMQVNTIENMTG9jYXRpb247CiAjZW5kaWYKIApAQCAtNDcsNyArNDcs
NyBAQCBwdWJsaWM6CiAgICAgewogICAgIH0KIAotI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCisj
aWYgUExBVEZPUk0oQ09DT0EpCiAgICAgV0VCQ09SRV9FWFBPUlQgZXhwbGljaXQgR2VvbG9jYXRp
b25Qb3NpdGlvbkRhdGEoQ0xMb2NhdGlvbiopOwogI2VuZGlmCiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvZ2VvbG9jYXRpb24vY29jb2EvR2VvbG9jYXRpb25Qb3NpdGlvbkRh
dGFDb2NvYS5tbSBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZ2VvbG9jYXRpb24vY29jb2EvR2Vv
bG9jYXRpb25Qb3NpdGlvbkRhdGFDb2NvYS5tbQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5jMGE5YmVlNjU1Njk0ZGIz
YWJmMTU3ZWVkMTkwNzZlYWQ1ODU0NDA2Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9nZW9sb2NhdGlvbi9jb2NvYS9HZW9sb2NhdGlvblBvc2l0aW9uRGF0YUNvY29h
Lm1tCkBAIC0wLDAgKzEsNTMgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQXBwbGUgSW5j
LiBBbGwgUmlnaHRzIFJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisg
KiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAq
IElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxM
IEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VS
RU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEs
IE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KKyAqLworCisjaW1wb3J0ICJjb25maWcuaCIKKyNpbXBvcnQgIkdlb2xvY2F0aW9uUG9zaXRp
b24uaCIKKworI2ltcG9ydCA8Q29yZUxvY2F0aW9uL0NMTG9jYXRpb24uaD4KKworbmFtZXNwYWNl
IFdlYkNvcmUgeworCitHZW9sb2NhdGlvblBvc2l0aW9uRGF0YTo6R2VvbG9jYXRpb25Qb3NpdGlv
bkRhdGEoQ0xMb2NhdGlvbiogbG9jYXRpb24pCisgICAgOiB0aW1lc3RhbXAobG9jYXRpb24udGlt
ZXN0YW1wLnRpbWVJbnRlcnZhbFNpbmNlMTk3MCkKKyAgICAsIGxhdGl0dWRlKGxvY2F0aW9uLmNv
b3JkaW5hdGUubGF0aXR1ZGUpCisgICAgLCBsb25naXR1ZGUobG9jYXRpb24uY29vcmRpbmF0ZS5s
b25naXR1ZGUpCisgICAgLCBhY2N1cmFjeShsb2NhdGlvbi5ob3Jpem9udGFsQWNjdXJhY3kpCit7
CisgICAgaWYgKGxvY2F0aW9uLnZlcnRpY2FsQWNjdXJhY3kgPj0gMC4wKSB7CisgICAgICAgIGFs
dGl0dWRlID0gbG9jYXRpb24uYWx0aXR1ZGU7CisgICAgICAgIGFsdGl0dWRlQWNjdXJhY3kgPSBs
b2NhdGlvbi52ZXJ0aWNhbEFjY3VyYWN5OworICAgIH0KKyAgICBpZiAobG9jYXRpb24uc3BlZWQg
Pj0gMC4wKQorICAgICAgICBzcGVlZCA9IGxvY2F0aW9uLnNwZWVkOworICAgIGlmIChsb2NhdGlv
bi5jb3Vyc2UgPj0gMC4wKQorICAgICAgICBoZWFkaW5nID0gbG9jYXRpb24uY291cnNlOworI2lm
ICFQTEFURk9STShNQUNDQVRBTFlTVCkKKyAgICBpZiAobG9jYXRpb24uZmxvb3IpCisgICAgICAg
IGZsb29yTGV2ZWwgPSBsb2NhdGlvbi5mbG9vci5sZXZlbDsKKyNlbmRpZgorfQorCit9IC8vIG5h
bWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2dlb2xv
Y2F0aW9uL2lvcy9HZW9sb2NhdGlvblBvc2l0aW9uRGF0YUlPUy5tbSBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvZ2VvbG9jYXRpb24vaW9zL0dlb2xvY2F0aW9uUG9zaXRpb25EYXRhSU9TLm1tCmRl
bGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5OGQ5YTI0MjFlN2YyMzA5YjRmNjIzYjE0ZDdj
YmUyYjZjN2UwNDVjLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0t
LSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZ2VvbG9jYXRpb24vaW9zL0dlb2xvY2F0aW9uUG9z
aXRpb25EYXRhSU9TLm1tCisrKyAvZGV2L251bGwKQEAgLTEsNTcgKzAsMCBAQAotLyoKLSAqIENv
cHlyaWdodCAoQykgMjAxNyBBcHBsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCi0gKgotICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24u
Ci0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMn
JyBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFRIRQotICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgotICogQ09OVFJJQlVUT1JT
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
Ci0gKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sCi0gKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKLSAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKLSAqIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICog
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpbXBvcnQgImNvbmZpZy5oIgot
I2ltcG9ydCAiR2VvbG9jYXRpb25Qb3NpdGlvbi5oIgotCi0jaWYgUExBVEZPUk0oSU9TX0ZBTUlM
WSkKLQotI2ltcG9ydCA8Q29yZUxvY2F0aW9uL0NMTG9jYXRpb24uaD4KLQotbmFtZXNwYWNlIFdl
YkNvcmUgewotCi1HZW9sb2NhdGlvblBvc2l0aW9uRGF0YTo6R2VvbG9jYXRpb25Qb3NpdGlvbkRh
dGEoQ0xMb2NhdGlvbiogbG9jYXRpb24pCi0gICAgOiB0aW1lc3RhbXAobG9jYXRpb24udGltZXN0
YW1wLnRpbWVJbnRlcnZhbFNpbmNlMTk3MCkKLSAgICAsIGxhdGl0dWRlKGxvY2F0aW9uLmNvb3Jk
aW5hdGUubGF0aXR1ZGUpCi0gICAgLCBsb25naXR1ZGUobG9jYXRpb24uY29vcmRpbmF0ZS5sb25n
aXR1ZGUpCi0gICAgLCBhY2N1cmFjeShsb2NhdGlvbi5ob3Jpem9udGFsQWNjdXJhY3kpCi17Ci0g
ICAgaWYgKGxvY2F0aW9uLnZlcnRpY2FsQWNjdXJhY3kgPj0gMC4wKSB7Ci0gICAgICAgIGFsdGl0
dWRlID0gbG9jYXRpb24uYWx0aXR1ZGU7Ci0gICAgICAgIGFsdGl0dWRlQWNjdXJhY3kgPSBsb2Nh
dGlvbi52ZXJ0aWNhbEFjY3VyYWN5OwotICAgIH0KLSAgICBpZiAobG9jYXRpb24uc3BlZWQgPj0g
MC4wKQotICAgICAgICBzcGVlZCA9IGxvY2F0aW9uLnNwZWVkOwotICAgIGlmIChsb2NhdGlvbi5j
b3Vyc2UgPj0gMC4wKQotICAgICAgICBoZWFkaW5nID0gbG9jYXRpb24uY291cnNlOwotI2lmICFQ
TEFURk9STShNQUNDQVRBTFlTVCkKLSAgICBpZiAobG9jYXRpb24uZmxvb3IpCi0gICAgICAgIGZs
b29yTGV2ZWwgPSBsb2NhdGlvbi5mbG9vci5sZXZlbDsKLSNlbmRpZgotfQotCi19Ci0KLSNlbmRp
ZiAvLyBQTEFURk9STShJT1NfRkFNSUxZKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvU291
cmNlc0NvY29hLnR4dCBiL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXNDb2NvYS50eHQKaW5kZXggMTA3
NWVhYzQ3NmE1NGI4MjAwZDA2ZTliODQzNmIyNDg5NWQ0MmM2Mi4uNjUyOTZlMjViNzE1ZGZlMzA4
MDVmZDdkMWFiNzc0MzlmNDhmMjI1ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvU291cmNl
c0NvY29hLnR4dAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzQ29jb2EudHh0CkBAIC0yNTEs
NiArMjUxLDcgQEAgcGxhdGZvcm0vY2YvTWVkaWFBY2Nlc3NpYmlsaXR5U29mdExpbmsuY3BwCiBw
bGF0Zm9ybS9jZi9SdW5Mb29wT2JzZXJ2ZXIuY3BwCiBwbGF0Zm9ybS9jZi9TaGFyZWRCdWZmZXJD
Ri5jcHAKIHBsYXRmb3JtL2NvY29hL0NvbnRlbnRGaWx0ZXJVbmJsb2NrSGFuZGxlckNvY29hLm1t
IEBuby11bmlmeQorcGxhdGZvcm0vY29jb2EvQ29yZUxvY2F0aW9uR2VvbG9jYXRpb25Qcm92aWRl
ci5tbQogcGxhdGZvcm0vY29jb2EvQ29yZVZpZGVvU29mdExpbmsuY3BwCiBwbGF0Zm9ybS9jb2Nv
YS9EcmFnRGF0YUNvY29hLm1tCiBwbGF0Zm9ybS9jb2NvYS9EcmFnSW1hZ2VDb2NvYS5tbQpAQCAt
MzE3LDcgKzMxOCw3IEBAIHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0NETVNl
c3Npb25BVkZvdW5kYXRpb25PYmpDLm1tCiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24v
b2JqYy9DRE1TZXNzaW9uQVZTdHJlYW1TZXNzaW9uLm1tCiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZv
dW5kYXRpb24vb2JqYy9DRE1TZXNzaW9uTWVkaWFTb3VyY2VBVkZPYmpDLm1tCiBwbGF0Zm9ybS9n
cmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9JbWFnZURlY29kZXJBVkZPYmpDLm1tCi1wbGF0Zm9y
bS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9JbmJhbmRUZXh0VHJhY2tQcml2YXRlQVZGT2Jq
Qy5tbQorcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvSW5iYW5kVGV4dFRyYWNr
UHJpdmF0ZUFWRk9iakMubW0gQG5vLXVuaWZ5CiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRp
b24vb2JqYy9JbmJhbmRDaGFwdGVyVHJhY2tQcml2YXRlQVZGT2JqQy5tbSBAbm8tdW5pZnkKIHBs
YXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0xvY2FsU2FtcGxlQnVmZmVyRGlzcGxh
eUxheWVyLm1tCiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXli
YWNrVGFyZ2V0UGlja2VyTWFjLm1tCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3Jl
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggZjFlZTk3MTI2NWVmYWQ3MzYxYTIxOWNiY2RjZjhk
MjU0MmIzN2M2MC4uM2QxYjY3MzVjNTMyNDY1ZTdjYWZjM2JiMjViM2M0NGM4NDJhZGJkYSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9q
CisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpA
QCAtMTM1Miw2ICsxMzUyLDcgQEAKIAkJNDY4MzQ0RTAxRURERkFBQTAwQjc3OTVCIC8qIERPTVJl
Y3RMaXN0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0
NjgzNDRERTFFRERGQTVGMDBCNzc5NUIgLyogRE9NUmVjdExpc3QuaCAqLzsgc2V0dGluZ3MgPSB7
QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk0NjgzREY0MDI3NjdERjk4MDA3RDAw
QzggLyogSlNTaGFkb3dSZWFsbUdsb2JhbFNjb3BlQmFzZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDY4M0RGM0UyNzY3REY5ODAwN0QwMEM4IC8qIEpT
U2hhZG93UmVhbG1HbG9iYWxTY29wZUJhc2UuaCAqLzsgfTsKIAkJNDY4M0RGNDEyNzY3RTkxQTAw
N0QwMEM4IC8qIFNoYWRvd1JlYWxtR2xvYmFsU2NvcGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ2ODNERjNCMjc2N0RGMjYwMDdEMDBDOCAvKiBTaGFk
b3dSZWFsbUdsb2JhbFNjb3BlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0
ZSwgKTsgfTsgfTsKKwkJNDY4OEU5ODAyN0I2QjQ1MDAwNTY3Q0QyIC8qIENvcmVMb2NhdGlvbkdl
b2xvY2F0aW9uUHJvdmlkZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDQ2ODhFOTdGMjdCNkI0NDQwMDU2N0NEMiAvKiBDb3JlTG9jYXRpb25HZW9sb2Nh
dGlvblByb3ZpZGVyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsg
fTsgfTsKIAkJNDY4OEVFM0MyNkREMjYxMDAwMkFGNUM0IC8qIENyb3NzT3JpZ2luTW9kZS5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDY4OEVFM0EyNkRE
MjYwQzAwMkFGNUM0IC8qIENyb3NzT3JpZ2luTW9kZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJV
VEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTQ2OTQzREM5Mjc2M0Y4MTcwMDRCNjEwRSAvKiBT
aGFyZWRXb3JrZXJPYmplY3RJZGVudGlmaWVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA0Njk0M0RDNzI3NjNGODBFMDA0QjYxMEUgLyogU2hhcmVkV29y
a2VyT2JqZWN0SWRlbnRpZmllci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZh
dGUsICk7IH07IH07CiAJCTQ2OTg1RjIzMjdBNEE2QUQwMDk3QTMyQiAvKiBTaGFyZWRXb3JrZXJL
ZXkuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ2OTg1
RjIyMjdBNEE2ODYwMDk3QTMyQiAvKiBTaGFyZWRXb3JrZXJLZXkuaCAqLzsgc2V0dGluZ3MgPSB7
QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwpAQCAtMTM3Nyw2ICsxMzc4LDcgQEAKIAkJ
NDZDNjk2Q0IxRTcyMDVGNzAwNTk3OTM3IC8qIENQVU1vbml0b3IuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ2QzY5NkM5MUU3MjA1RTQwMDU5NzkzNyAv
KiBDUFVNb25pdG9yLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsg
fTsgfTsKIAkJNDZDNjk2Q0MxRTcyMDVGQzAwNTk3OTM3IC8qIENQVU1vbml0b3IuY3BwIGluIFNv
dXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDZDNjk2Q0ExRTcyMDVF
NDAwNTk3OTM3IC8qIENQVU1vbml0b3IuY3BwICovOyB9OwogCQk0NkM4M0VGRTFBOUJCRTI5MDBB
NzlBNDEgLyogR2VvTm90aWZpZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDQ2QzgzRUZDMUE5QkJFMjkwMEE3OUE0MSAvKiBHZW9Ob3RpZmllci5oICov
OyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCTQ2Q0E5NDMx
MjdCODY5NTgwMEY0RjVGRiAvKiBJbmJhbmRUZXh0VHJhY2tQcml2YXRlQVZGT2JqQy5tbSBpbiBT
b3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDA3QUE2QjZBMTY2RDAx
OTUwMEQ0NTY3MSAvKiBJbmJhbmRUZXh0VHJhY2tQcml2YXRlQVZGT2JqQy5tbSAqLzsgfTsKIAkJ
NDZDQTlDNDQxRjk3QkJFOTAwNENGQzNBIC8qIFZpc2liaWxpdHlTdGF0ZS5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDZDQTlDNDExRjk3QkJFNzAwNENG
QzNBIC8qIFZpc2liaWxpdHlTdGF0ZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFBy
aXZhdGUsICk7IH07IH07CiAJCTQ2Q0Y1MDRBMjdBQjFFQTQwMDcwREJDOCAvKiBTaGFyZWRXb3Jr
ZXJDb250ZXh0TWFuYWdlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gNDZDRjUwNDgyN0FCMUVBMTAwNzBEQkM4IC8qIFNoYXJlZFdvcmtlckNvbnRleHRN
YW5hZ2VyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsK
IAkJNDZEMDAwNDAyNkEwRkVCMzAwRDFCRjFFIC8qIFN1Ym1pdEV2ZW50LmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0NkQwMDAzRTI2QTBGRTZGMDBEMUJG
MUUgLyogU3VibWl0RXZlbnQuaCAqLzsgfTsKQEAgLTI2OTUsNyArMjY5Nyw3IEBACiAJCTgzNzY1
Rjk1MURBQzUyMkYwMEMwNjUzNyAvKiBNb3VzZUV2ZW50SW5pdC5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODM3NjVGOTQxREFDNTIxODAwQzA2NTM3IC8q
IE1vdXNlRXZlbnRJbml0LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwg
KTsgfTsgfTsKIAkJODM3ODg3ODIyNEQ4QTYwOTAwMEQ0QTVCIC8qIEF1ZGlvQnVmZmVyU291cmNl
T3B0aW9ucy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
ODM3ODg3N0YyNEQ4QTVGQzAwMEQ0QTVCIC8qIEF1ZGlvQnVmZmVyU291cmNlT3B0aW9ucy5oICov
OyB9OwogCQk4Mzc5MzYzRjFGQkJCMEI0MDBDODAyM0MgLyogU2VydmljZVdvcmtlckNsaWVudERh
dGEuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDgzNzkz
NjNFMUZCQkIwQTUwMEM4MDIzQyAvKiBTZXJ2aWNlV29ya2VyQ2xpZW50RGF0YS5oICovOyBzZXR0
aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07Ci0JCTgzNzk2NENGMUY4REI2
OUQwMDIxOEVBMCAvKiBHZW9sb2NhdGlvblBvc2l0aW9uRGF0YUlPUy5tbSBpbiBTb3VyY2VzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDgzNzk2NENFMUY4REI2OUEwMDIxOEVB
MCAvKiBHZW9sb2NhdGlvblBvc2l0aW9uRGF0YUlPUy5tbSAqLzsgfTsKKwkJODM3OTY0Q0YxRjhE
QjY5RDAwMjE4RUEwIC8qIEdlb2xvY2F0aW9uUG9zaXRpb25EYXRhQ29jb2EubW0gaW4gU291cmNl
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4Mzc5NjRDRTFGOERCNjlBMDAy
MThFQTAgLyogR2VvbG9jYXRpb25Qb3NpdGlvbkRhdGFDb2NvYS5tbSAqLzsgfTsKIAkJODM3QTgw
MTMxRTFFMTI3MzAwMDI2QjlGIC8qIExvY2FsaXphYmxlLnN0cmluZ3NkaWN0IGluIFJlc291cmNl
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4MzdBODAxMTFFMUUxMjczMDAw
MjZCOUYgLyogTG9jYWxpemFibGUuc3RyaW5nc2RpY3QgKi87IH07CiAJCTgzN0MwQjc2MjREQjM4
NTAwMDVENTk1OSAvKiBEeW5hbWljc0NvbXByZXNzb3JPcHRpb25zLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4MzdDMEI3MzI0REIzODQyMDA1RDU5NTkg
LyogRHluYW1pY3NDb21wcmVzc29yT3B0aW9ucy5oICovOyB9OwogCQk4MzdGQjM0NTFGOUVBMDZE
MDBEMEZDMzEgLyogRXh0ZW5kYWJsZU1lc3NhZ2VFdmVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODM3RkIzNDAxRjlFQTA2NjAwRDBGQzMxIC8qIEV4
dGVuZGFibGVNZXNzYWdlRXZlbnQuaCAqLzsgfTsKQEAgLTkyNjksNiArOTI3MSw4IEBACiAJCTQ2
ODNERjNDMjc2N0RGMjYwMDdEMDBDOCAvKiBTaGFkb3dSZWFsbUdsb2JhbFNjb3BlLmlkbCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGgg
PSBTaGFkb3dSZWFsbUdsb2JhbFNjb3BlLmlkbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJNDY4M0RGM0QyNzY3REY5ODAwN0QwMEM4IC8qIEpTU2hhZG93UmVhbG1HbG9iYWxTY29wZUJh
c2UuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNTaGFkb3dSZWFs
bUdsb2JhbFNjb3BlQmFzZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQ2ODNE
RjNFMjc2N0RGOTgwMDdEMDBDOCAvKiBKU1NoYWRvd1JlYWxtR2xvYmFsU2NvcGVCYXNlLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTU2hhZG93UmVhbG1HbG9iYWxTY29wZUJh
c2UuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNDY4OEU5N0QyN0I2QjQ0MzAwNTY3
Q0QyIC8qIENvcmVMb2NhdGlvbkdlb2xvY2F0aW9uUHJvdmlkZXIubW0gKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7
IHBhdGggPSBDb3JlTG9jYXRpb25HZW9sb2NhdGlvblByb3ZpZGVyLm1tOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OworCQk0Njg4RTk3RjI3QjZCNDQ0MDA1NjdDRDIgLyogQ29yZUxvY2F0aW9u
R2VvbG9jYXRpb25Qcm92aWRlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBDb3JlTG9jYXRpb25HZW9sb2Nh
dGlvblByb3ZpZGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQ2ODhFRTNBMjZE
RDI2MEMwMDJBRjVDNCAvKiBDcm9zc09yaWdpbk1vZGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQ3Jvc3NP
cmlnaW5Nb2RlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQ2OEI4QkRFMjVDQzg0
OTMwMEY2NzgyMiAvKiBKU0Jhc2VBdWRpb0NvbnRleHRDdXN0b20uY3BwICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBw
YXRoID0gSlNCYXNlQXVkaW9Db250ZXh0Q3VzdG9tLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJNDY5NDNEQzcyNzYzRjgwRTAwNEI2MTBFIC8qIFNoYXJlZFdvcmtlck9iamVjdElk
ZW50aWZpZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU2hhcmVkV29ya2VyT2JqZWN0SWRlbnRpZmllci5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMTIxOTAsNyArMTIxOTQsNyBAQAogCQk4
Mzc4ODc4MTI0RDhBNUZDMDAwRDRBNUIgLyogQXVkaW9CdWZmZXJTb3VyY2VPcHRpb25zLmlkbCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBh
dGggPSBBdWRpb0J1ZmZlclNvdXJjZU9wdGlvbnMuaWRsOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQk4Mzc5MzYzQzFGQkJCMEE0MDBDODAyM0MgLyogU2VydmljZVdvcmtlckNsaWVudERh
dGEuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gU2VydmljZVdvcmtl
ckNsaWVudERhdGEuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk4Mzc5MzYzRTFG
QkJCMEE1MDBDODAyM0MgLyogU2VydmljZVdvcmtlckNsaWVudERhdGEuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gU2VydmljZVdvcmtlckNsaWVudERhdGEuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKLQkJODM3OTY0Q0UxRjhEQjY5QTAwMjE4RUEwIC8qIEdlb2xvY2F0
aW9uUG9zaXRpb25EYXRhSU9TLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBu
YW1lID0gR2VvbG9jYXRpb25Qb3NpdGlvbkRhdGFJT1MubW07IHBhdGggPSBNb2R1bGVzL2dlb2xv
Y2F0aW9uL2lvcy9HZW9sb2NhdGlvblBvc2l0aW9uRGF0YUlPUy5tbTsgc291cmNlVHJlZSA9IFNP
VVJDRV9ST09UOyB9OworCQk4Mzc5NjRDRTFGOERCNjlBMDAyMThFQTAgLyogR2VvbG9jYXRpb25Q
b3NpdGlvbkRhdGFDb2NvYS5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgbmFt
ZSA9IEdlb2xvY2F0aW9uUG9zaXRpb25EYXRhQ29jb2EubW07IHBhdGggPSBNb2R1bGVzL2dlb2xv
Y2F0aW9uL2NvY29hL0dlb2xvY2F0aW9uUG9zaXRpb25EYXRhQ29jb2EubW07IHNvdXJjZVRyZWUg
PSBTT1VSQ0VfUk9PVDsgfTsKIAkJODM3QTgwMTIxRTFFMTI3MzAwMDI2QjlGIC8qIGVuICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dC5wbGlzdC5z
dHJpbmdzZGljdDsgbmFtZSA9IGVuOyBwYXRoID0gZW4ubHByb2ovTG9jYWxpemFibGUuc3RyaW5n
c2RpY3Q7IHNvdXJjZVRyZWUgPSBTT1VSQ0VfUk9PVDsgfTsKIAkJODM3QjdEMUYxREMzRjU0QzAw
RDA1MUZDIC8qIFZhbGlkYXRpb25CdWJibGVJT1MubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5vYmpjcHA7IHBhdGggPSBWYWxpZGF0aW9uQnViYmxlSU9TLm1tOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQk4MzdDMEI3MzI0REIzODQyMDA1RDU5NTkgLyogRHluYW1pY3NDb21wcmVz
c29yT3B0aW9ucy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBEeW5hbWljc0NvbXByZXNzb3JPcHRpb25zLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0yMTYwNiw2ICsyMTYxMCwxNCBAQAogCQkJ
cGF0aCA9IGNvbnRleHQ7CiAJCQlzb3VyY2VUcmVlID0gIjxncm91cD4iOwogCQl9OworCQk0NjVD
M0QxOTI3Qjk5MUM4MDAyMTMwMkYgLyogY29jb2EgKi8gPSB7CisJCQlpc2EgPSBQQlhHcm91cDsK
KwkJCWNoaWxkcmVuID0gKAorCQkJCTgzNzk2NENFMUY4REI2OUEwMDIxOEVBMCAvKiBHZW9sb2Nh
dGlvblBvc2l0aW9uRGF0YUNvY29hLm1tICovLAorCQkJKTsKKwkJCXBhdGggPSBjb2NvYTsKKwkJ
CXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7CisJCX07CiAJCTQ2Njk0Q0RFMjc1OTQ0NkQwMEUzMTUw
RSAvKiBzaGFyZWQgKi8gPSB7CiAJCQlpc2EgPSBQQlhHcm91cDsKIAkJCWNoaWxkcmVuID0gKApA
QCAtMjUxMDMsMTQgKzI1MTE1LDYgQEAKIAkJCXBhdGggPSBiZWFjb247CiAJCQlzb3VyY2VUcmVl
ID0gIjxncm91cD4iOwogCQl9OwotCQk4Mzc5NjRDQzFGOERCNjdEMDAyMThFQTAgLyogaW9zICov
ID0gewotCQkJaXNhID0gUEJYR3JvdXA7Ci0JCQljaGlsZHJlbiA9ICgKLQkJCQk4Mzc5NjRDRTFG
OERCNjlBMDAyMThFQTAgLyogR2VvbG9jYXRpb25Qb3NpdGlvbkRhdGFJT1MubW0gKi8sCi0JCQkp
OwotCQkJbmFtZSA9IGlvczsKLQkJCXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7Ci0JCX07CiAJCTgz
RkIzMzY1MUY1MDhBMTcwMDk4NkU1NCAvKiBlbnRyaWVzYXBpICovID0gewogCQkJaXNhID0gUEJY
R3JvdXA7CiAJCQljaGlsZHJlbiA9ICgKQEAgLTI2MTIxLDcgKzI2MTI1LDcgQEAKIAkJOTcxMTQ1
RkYxNEVGMDA3OTAwNjc0RkQ5IC8qIGdlb2xvY2F0aW9uICovID0gewogCQkJaXNhID0gUEJYR3Jv
dXA7CiAJCQljaGlsZHJlbiA9ICgKLQkJCQk4Mzc5NjRDQzFGOERCNjdEMDAyMThFQTAgLyogaW9z
ICovLAorCQkJCTQ2NUMzRDE5MjdCOTkxQzgwMDIxMzAyRiAvKiBjb2NvYSAqLywKIAkJCQk5NzQ2
QUYxMzE0RjREREU2MDAzRTdBNzAgLyogR2VvbG9jYXRpb24uY3BwICovLAogCQkJCTk3NDZBRjE0
MTRGNERERTYwMDNFN0E3MCAvKiBHZW9sb2NhdGlvbi5oICovLAogCQkJCTk3NDZBRjE1MTRGNERE
RTYwMDNFN0E3MCAvKiBHZW9sb2NhdGlvbi5pZGwgKi8sCkBAIC0yNjgzMyw2ICsyNjgzNyw4IEBA
CiAJCQkJQzFGN0I3MkYyNDQ4RjJBQzAwMTI0NTU3IC8qIEFHWENvbXBpbGVyU2VydmljZS5jcHAg
Ki8sCiAJCQkJQzFGN0I3MzAyNDQ4RjJBQzAwMTI0NTU3IC8qIEFHWENvbXBpbGVyU2VydmljZS5o
ICovLAogCQkJCUExNDA5MEZBMUFBNTFFMUQwMDkxMTkxQSAvKiBDb250ZW50RmlsdGVyVW5ibG9j
a0hhbmRsZXJDb2NvYS5tbSAqLywKKwkJCQk0Njg4RTk3RjI3QjZCNDQ0MDA1NjdDRDIgLyogQ29y
ZUxvY2F0aW9uR2VvbG9jYXRpb25Qcm92aWRlci5oICovLAorCQkJCTQ2ODhFOTdEMjdCNkI0NDMw
MDU2N0NEMiAvKiBDb3JlTG9jYXRpb25HZW9sb2NhdGlvblByb3ZpZGVyLm1tICovLAogCQkJCUNE
N0QzMzQ1MUM3QTE2QkYwMDA0MTI5MyAvKiBDb3JlVmlkZW9Tb2Z0TGluay5jcHAgKi8sCiAJCQkJ
Q0Q3RDMzNDYxQzdBMTZCRjAwMDQxMjkzIC8qIENvcmVWaWRlb1NvZnRMaW5rLmggKi8sCiAJCQkJ
RjQ2MkU3OUYyNDJBREEzQzAwMjA0REREIC8qIERyYWdEYXRhQ29jb2EubW0gKi8sCkBAIC0zMzkx
OSw2ICszMzkyNSw3IEBACiAJCQkJM0Y4MDIwMzcxRTlFNDdDNTAwREVDNjFEIC8qIENvcmVBdWRp
b0NhcHR1cmVEZXZpY2VNYW5hZ2VyLmggaW4gSGVhZGVycyAqLywKIAkJCQk0MUZDQ0MzQjI3NDY2
NzU2MDA4OTJBRDYgLyogQ29yZUF1ZGlvQ2FwdHVyZVNvdXJjZS5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJMDdBRkY0MjIxRUZCMTQ0OTAwQjU0NUIzIC8qIENvcmVBdWRpb0NhcHR1cmVTb3VyY2VJT1Mu
aCBpbiBIZWFkZXJzICovLAorCQkJCTQ2ODhFOTgwMjdCNkI0NTAwMDU2N0NEMiAvKiBDb3JlTG9j
YXRpb25HZW9sb2NhdGlvblByb3ZpZGVyLmggaW4gSGVhZGVycyAqLywKIAkJCQlDRDdEMzM0ODFD
N0ExNkJGMDAwNDEyOTMgLyogQ29yZVZpZGVvU29mdExpbmsuaCBpbiBIZWFkZXJzICovLAogCQkJ
CTg2MkYxMjlFMThDMTU3NkYwMDVDNTRBRiAvKiBDb3VudGVkVXNlckFjdGl2aXR5LmggaW4gSGVh
ZGVycyAqLywKIAkJCQlBODBFNkQwNDBBMTk4OUNBMDA3RkI4QzUgLyogQ291bnRlci5oIGluIEhl
YWRlcnMgKi8sCkBAIC0zODY5MiwxMyArMzg2OTksMTQgQEAKIAkJCQk1MThGNEZGNjE5NENBNEU2
MDA4MUJBQUUgLyogR2FtZXBhZEJ1dHRvbi5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk1MTZDNjIy
MDE5NTBENDg3MDAzMzdFNzUgLyogR2FtZXBhZEV2ZW50LmNwcCBpbiBTb3VyY2VzICovLAogCQkJ
CTUxQTlEOUU5MTk1QjkzMUYwMDFCMkI1QyAvKiBHYW1lcGFkTWFuYWdlci5jcHAgaW4gU291cmNl
cyAqLywKLQkJCQk4Mzc5NjRDRjFGOERCNjlEMDAyMThFQTAgLyogR2VvbG9jYXRpb25Qb3NpdGlv
bkRhdGFJT1MubW0gaW4gU291cmNlcyAqLywKKwkJCQk4Mzc5NjRDRjFGOERCNjlEMDAyMThFQTAg
LyogR2VvbG9jYXRpb25Qb3NpdGlvbkRhdGFDb2NvYS5tbSBpbiBTb3VyY2VzICovLAogCQkJCTZF
NzJGNTRFMjI5RENEMTAwMEIzRTE1MSAvKiBHcmFwaGljc0NvbnRleHRHTEFOR0xFLmNwcCBpbiBT
b3VyY2VzICovLAogCQkJCTdDM0U1MTBCMThERjhGMzUwMEMxMTJGNyAvKiBIVE1MQ29udmVydGVy
Lm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJQThEMDZCM0EwQTI2NURDRDAwNUU3MjAzIC8qIEhUTUxO
YW1lcy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkxQUM5MDBDMzE5NDNDMEZDMDA4NjI1QjUgLyog
SFRUUEhlYWRlck5hbWVzLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUNEMjdBRTUxMjJBOTg2ODcw
MDk0N0ZGOSAvKiBJbWFnZVJvdGF0aW9uU2Vzc2lvblZULm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJ
MDcwRTJEMEYyNkYyNTA4OTAwMTRBQUMzIC8qIEluYmFuZENoYXB0ZXJUcmFja1ByaXZhdGVBVkZP
YmpDLm1tIGluIFNvdXJjZXMgKi8sCisJCQkJNDZDQTk0MzEyN0I4Njk1ODAwRjRGNUZGIC8qIElu
YmFuZFRleHRUcmFja1ByaXZhdGVBVkZPYmpDLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJQ0QwNjNG
ODIxRTIzRkE4OTAwODEyQkUzIC8qIEluaXREYXRhUmVnaXN0cnkuY3BwIGluIFNvdXJjZXMgKi8s
CiAJCQkJOTM1QzQ3NzAwOUFDNEQ3MzAwQTZBQUI0IC8qIEtleUV2ZW50TWFjLm1tIGluIFNvdXJj
ZXMgKi8sCiAJCQkJQ0RBOThFMEIxNjAzQ0Q2MDAwRkVBM0IxIC8qIExlZ2FjeUNETS5jcHAgaW4g
U291cmNlcyAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuY3BwCmluZGV4IDZhODVlODQzZDhiYmUzZDE5MmQ5N2Y0
OTZiZDdlYjQ1NDc0OWRiYTQuLmVmZTBlMzgwNmRjODQ4MDMwZDIyYjlkOTAyOTE2NzkzMzg1YmZk
YWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcGFnZS9QYWdlLmNwcApAQCAtNjksNiArNjksNyBAQAogI2luY2x1ZGUgIkZyYW1l
VHJlZS5oIgogI2luY2x1ZGUgIkZyYW1lVmlldy5oIgogI2luY2x1ZGUgIkZ1bGxzY3JlZW5NYW5h
Z2VyLmgiCisjaW5jbHVkZSAiR2VvbG9jYXRpb25Db250cm9sbGVyLmgiCiAjaW5jbHVkZSAiSFRN
TEVsZW1lbnQuaCIKICNpbmNsdWRlICJIVE1MSW1hZ2VFbGVtZW50LmgiCiAjaW5jbHVkZSAiSFRN
TE1lZGlhRWxlbWVudC5oIgpAQCAtMTMzMiw2ICsxMzMzLDExIEBAIHZvaWQgUGFnZTo6ZGlkQ29t
bWl0TG9hZCgpCiAgICAgcmVzZXRUZXh0UmVjb2duaXRpb25SZXN1bHRzKCk7CiAgICAgcmVzZXRJ
bWFnZUFuYWx5c2lzUXVldWUoKTsKICNlbmRpZgorCisjaWYgRU5BQkxFKEdFT0xPQ0FUSU9OKQor
ICAgIGlmIChhdXRvKiBnZW9sb2NhdGlvbkNvbnRyb2xsZXIgPSBHZW9sb2NhdGlvbkNvbnRyb2xs
ZXI6OmZyb20odGhpcykpCisgICAgICAgIGdlb2xvY2F0aW9uQ29udHJvbGxlci0+ZGlkTmF2aWdh
dGVQYWdlKCk7CisjZW5kaWYKIH0KIAogdm9pZCBQYWdlOjpkaWRGaW5pc2hMb2FkKCkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL0NvcmVMb2NhdGlvbkdlb2xvY2F0
aW9uUHJvdmlkZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL0NvcmVMb2NhdGlv
bkdlb2xvY2F0aW9uUHJvdmlkZXIuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5jNTI0NmM4ODRhY2Y4ZjY5ZmNiOGY4
YWM0YWNjN2Y0Y2RlNjQ1Y2VkCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vY29jb2EvQ29yZUxvY2F0aW9uR2VvbG9jYXRpb25Qcm92aWRlci5oCkBAIC0wLDAgKzEs
NjcgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICog
MS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisg
KiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQ
TEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAor
ICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQg
U0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisg
KiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQ
Uk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICog
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgPHd0Zi9Db21wbGV0
aW9uSGFuZGxlci5oPgorI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CisjaW5jbHVkZSA8d3RmL1Jl
dGFpblB0ci5oPgorCitPQkpDX0NMQVNTIFdlYkNMTG9jYXRpb25NYW5hZ2VyOworCituYW1lc3Bh
Y2UgV2ViQ29yZSB7CisKK2NsYXNzIEdlb2xvY2F0aW9uUG9zaXRpb25EYXRhOworY2xhc3MgUmVn
aXN0cmFibGVEb21haW47CisKK2NsYXNzIFdFQkNPUkVfRVhQT1JUIENvcmVMb2NhdGlvbkdlb2xv
Y2F0aW9uUHJvdmlkZXIgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOworcHVibGljOgor
ICAgIGNsYXNzIENsaWVudCB7CisgICAgcHVibGljOgorICAgICAgICB2aXJ0dWFsIH5DbGllbnQo
KSB7IH0KKworICAgICAgICB2aXJ0dWFsIHZvaWQgZ2VvbG9jYXRpb25BdXRob3JpemF0aW9uR3Jh
bnRlZChjb25zdCBTdHJpbmcmIC8qd2Vic2l0ZUlkZW50aWZpZXIqLykgeyB9CisgICAgICAgIHZp
cnR1YWwgdm9pZCBnZW9sb2NhdGlvbkF1dGhvcml6YXRpb25EZW5pZWQoY29uc3QgU3RyaW5nJiAv
KndlYnNpdGVJZGVudGlmaWVyKi8pIHsgfQorICAgICAgICB2aXJ0dWFsIHZvaWQgcG9zaXRpb25D
aGFuZ2VkKGNvbnN0IFN0cmluZyYgd2Vic2l0ZUlkZW50aWZpZXIsIEdlb2xvY2F0aW9uUG9zaXRp
b25EYXRhJiYpID0gMDsKKyAgICAgICAgdmlydHVhbCB2b2lkIGVycm9yT2NjdXJyZWQoY29uc3Qg
U3RyaW5nJiB3ZWJzaXRlSWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiBlcnJvck1lc3NhZ2UpID0g
MDsKKyAgICAgICAgdmlydHVhbCB2b2lkIHJlc2V0R2VvbG9jYXRpb24oY29uc3QgU3RyaW5nJiB3
ZWJzaXRlSWRlbnRpZmllcikgPSAwOworICAgIH07CisKKyAgICBDb3JlTG9jYXRpb25HZW9sb2Nh
dGlvblByb3ZpZGVyKGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiwgQ2xpZW50Jik7CisgICAgfkNv
cmVMb2NhdGlvbkdlb2xvY2F0aW9uUHJvdmlkZXIoKTsKKworICAgIHZvaWQgc3RhcnQoKTsKKyAg
ICB2b2lkIHN0b3AoKTsKKworICAgIHZvaWQgc2V0RW5hYmxlSGlnaEFjY3VyYWN5KGJvb2wpOwor
CisgICAgc3RhdGljIHZvaWQgcmVxdWVzdEF1dGhvcml6YXRpb24oY29uc3QgUmVnaXN0cmFibGVE
b21haW4mLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmKTsKKworcHJpdmF0ZToKKyAg
ICBSZXRhaW5QdHI8V2ViQ0xMb2NhdGlvbk1hbmFnZXI+IG1fbG9jYXRpb25NYW5hZ2VyOworfTsK
KworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vY29jb2EvQ29yZUxvY2F0aW9uR2VvbG9jYXRpb25Qcm92aWRlci5tbSBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2NvY29hL0NvcmVMb2NhdGlvbkdlb2xvY2F0aW9uUHJvdmlkZXIubW0K
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uYzkxMWNlMGMxYzAyZTQ2MzUzZTk5MDgzOGNlZjU0YjA3NmVlODk0NQotLS0g
L2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL0NvcmVMb2NhdGlv
bkdlb2xvY2F0aW9uUHJvdmlkZXIubW0KQEAgLTAsMCArMSwyNTggQEAKKy8qCisgKiBDb3B5cmln
aHQgKEMpIDIwMjIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
KyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoK
KyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRS
SUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICog
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJ
VFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7
IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkg
VEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisj
aW1wb3J0ICJjb25maWcuaCIKKyNpbXBvcnQgIkNvcmVMb2NhdGlvbkdlb2xvY2F0aW9uUHJvdmlk
ZXIuaCIKKworI2ltcG9ydCAiR2VvbG9jYXRpb25Qb3NpdGlvbkRhdGEuaCIKKyNpbXBvcnQgIlJl
Z2lzdHJhYmxlRG9tYWluLmgiCisjaW1wb3J0IDxDb3JlTG9jYXRpb24vQ0xMb2NhdGlvbk1hbmFn
ZXJEZWxlZ2F0ZS5oPgorI2ltcG9ydCA8Q29yZUxvY2F0aW9uL0NMTG9jYXRpb25NYW5hZ2VyX1By
aXZhdGUuaD4KKyNpbXBvcnQgPENvcmVMb2NhdGlvbi9Db3JlTG9jYXRpb24uaD4KKyNpbXBvcnQg
PHd0Zi9Tb2Z0TGlua2luZy5oPgorCitTT0ZUX0xJTktfRlJBTUVXT1JLKENvcmVMb2NhdGlvbikK
KworU09GVF9MSU5LX0NMQVNTKENvcmVMb2NhdGlvbiwgQ0xMb2NhdGlvbk1hbmFnZXIpCitTT0ZU
X0xJTktfQ0xBU1MoQ29yZUxvY2F0aW9uLCBDTExvY2F0aW9uKQorCitTT0ZUX0xJTktfQ09OU1RB
TlQoQ29yZUxvY2F0aW9uLCBrQ0xMb2NhdGlvbkFjY3VyYWN5QmVzdCwgZG91YmxlKQorU09GVF9M
SU5LX0NPTlNUQU5UKENvcmVMb2NhdGlvbiwga0NMTG9jYXRpb25BY2N1cmFjeUh1bmRyZWRNZXRl
cnMsIGRvdWJsZSkKKworI2RlZmluZSBrQ0xMb2NhdGlvbkFjY3VyYWN5QmVzdCBnZXRrQ0xMb2Nh
dGlvbkFjY3VyYWN5QmVzdCgpCisjZGVmaW5lIGtDTExvY2F0aW9uQWNjdXJhY3lIdW5kcmVkTWV0
ZXJzIGdldGtDTExvY2F0aW9uQWNjdXJhY3lIdW5kcmVkTWV0ZXJzKCkKKworc3RhdGljIGJvb2wg
aXNBdXRob3JpemF0aW9uR3JhbnRlZChDTEF1dGhvcml6YXRpb25TdGF0dXMgYXV0aG9yaXphdGlv
blN0YXR1cykKK3sKKyAgICByZXR1cm4gYXV0aG9yaXphdGlvblN0YXR1cyA9PSBrQ0xBdXRob3Jp
emF0aW9uU3RhdHVzQXV0aG9yaXplZEFsd2F5cyB8fCBhdXRob3JpemF0aW9uU3RhdHVzID09IGtD
TEF1dGhvcml6YXRpb25TdGF0dXNBdXRob3JpemVkV2hlbkluVXNlOworfQorCitAaW50ZXJmYWNl
IFdlYkNMTG9jYXRpb25NYW5hZ2VyIDogTlNPYmplY3Q8Q0xMb2NhdGlvbk1hbmFnZXJEZWxlZ2F0
ZT4KK0BlbmQKKworQGltcGxlbWVudGF0aW9uIFdlYkNMTG9jYXRpb25NYW5hZ2VyIHsKKyAgICBS
ZXRhaW5QdHI8Q0xMb2NhdGlvbk1hbmFnZXI+IF9sb2NhdGlvbk1hbmFnZXI7CisgICAgV2ViQ29y
ZTo6Q29yZUxvY2F0aW9uR2VvbG9jYXRpb25Qcm92aWRlcjo6Q2xpZW50KiBfY2xpZW50OworICAg
IFN0cmluZyBfd2Vic2l0ZUlkZW50aWZpZXI7CisgICAgQk9PTCBfaXNXYWl0aW5nRm9yQXV0aG9y
aXphdGlvbjsKK30KKworLSAoaW5zdGFuY2V0eXBlKWluaXRXaXRoV2Vic2l0ZUlkZW50aWZpZXI6
KGNvbnN0IFN0cmluZyYpd2Vic2l0ZUlkZW50aWZpZXIgY2xpZW50OihXZWJDb3JlOjpDb3JlTG9j
YXRpb25HZW9sb2NhdGlvblByb3ZpZGVyOjpDbGllbnQmKWNsaWVudAoreworICAgIHNlbGYgPSBb
c3VwZXIgaW5pdF07CisgICAgaWYgKCFzZWxmKQorICAgICAgICByZXR1cm4gbmlsOworCisgICAg
Ly8gRklYTUU6IENhbGwgaW5pdFdpdGhXZWJzaXRlSWRlbnRpZmllciBhbmQgcGFzcyB0aGUgd2Vi
c2l0ZUlkZW50aWZpZXIgd2hlbiBIQVZFKENPUkVfTE9DQVRJT05fV0VCU0lURV9JREVOVElGSUVS
Uykgb25jZSA8cmRhcjovLzg4ODM0MzAxID4gaXMgZml4ZWQuCisgICAgVU5VU0VEX1BBUkFNKHdl
YnNpdGVJZGVudGlmaWVyKTsKKyAgICBfbG9jYXRpb25NYW5hZ2VyID0gYWRvcHROUyhbYWxsb2ND
TExvY2F0aW9uTWFuYWdlckluc3RhbmNlKCkgaW5pdF0pOworICAgIF9jbGllbnQgPSAmY2xpZW50
OworICAgIF93ZWJzaXRlSWRlbnRpZmllciA9IHdlYnNpdGVJZGVudGlmaWVyOworICAgIFtfbG9j
YXRpb25NYW5hZ2VyIHNldERlbGVnYXRlOnNlbGZdOworICAgIHJldHVybiBzZWxmOworfQorCist
ICh2b2lkKWRlYWxsb2MKK3sKKyAgICBbX2xvY2F0aW9uTWFuYWdlciBzZXREZWxlZ2F0ZTpuaWxd
OworICAgIFtzdXBlciBkZWFsbG9jXTsKK30KKworLSAodm9pZClzdGFydAoreworICAgIGlmICgh
W2dldENMTG9jYXRpb25NYW5hZ2VyQ2xhc3MoKSBsb2NhdGlvblNlcnZpY2VzRW5hYmxlZF0gfHwg
IWlzQXV0aG9yaXphdGlvbkdyYW50ZWQoW19sb2NhdGlvbk1hbmFnZXIgYXV0aG9yaXphdGlvblN0
YXR1c10pKSB7CisgICAgICAgIFtfbG9jYXRpb25NYW5hZ2VyIHN0b3BVcGRhdGluZ0xvY2F0aW9u
XTsKKyAgICAgICAgX2NsaWVudC0+cmVzZXRHZW9sb2NhdGlvbihfd2Vic2l0ZUlkZW50aWZpZXIp
OworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgW19sb2NhdGlvbk1hbmFnZXIgc3RhcnRV
cGRhdGluZ0xvY2F0aW9uXTsKK30KKworLSAodm9pZClzdG9wCit7CisgICAgW19sb2NhdGlvbk1h
bmFnZXIgc3RvcFVwZGF0aW5nTG9jYXRpb25dOworfQorCistICh2b2lkKXNldEVuYWJsZUhpZ2hB
Y2N1cmFjeTooQk9PTCloaWdoQWNjdXJhY3lFbmFibGVkCit7CisgICAgW19sb2NhdGlvbk1hbmFn
ZXIgc2V0RGVzaXJlZEFjY3VyYWN5OmhpZ2hBY2N1cmFjeUVuYWJsZWQgPyBrQ0xMb2NhdGlvbkFj
Y3VyYWN5QmVzdCA6IGtDTExvY2F0aW9uQWNjdXJhY3lIdW5kcmVkTWV0ZXJzXTsKK30KKworLSAo
dm9pZClyZXF1ZXN0R2VvbG9jYXRpb25BdXRob3JpemF0aW9uCit7CisgICAgaWYgKCFbZ2V0Q0xM
b2NhdGlvbk1hbmFnZXJDbGFzcygpIGxvY2F0aW9uU2VydmljZXNFbmFibGVkXSkgeworICAgICAg
ICBfY2xpZW50LT5nZW9sb2NhdGlvbkF1dGhvcml6YXRpb25EZW5pZWQoX3dlYnNpdGVJZGVudGlm
aWVyKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIHN3aXRjaCAoW19sb2NhdGlvbk1h
bmFnZXIgYXV0aG9yaXphdGlvblN0YXR1c10pIHsKKyAgICBjYXNlIGtDTEF1dGhvcml6YXRpb25T
dGF0dXNOb3REZXRlcm1pbmVkOiB7CisgICAgICAgIGlmICghX2lzV2FpdGluZ0ZvckF1dGhvcml6
YXRpb24pIHsKKyAgICAgICAgICAgIF9pc1dhaXRpbmdGb3JBdXRob3JpemF0aW9uID0gWUVTOwor
ICAgICAgICAgICAgW19sb2NhdGlvbk1hbmFnZXIgcmVxdWVzdFdoZW5JblVzZUF1dGhvcml6YXRp
b25dOworICAgICAgICB9CisgICAgICAgIGJyZWFrOworICAgIH0KKyAgICBjYXNlIGtDTEF1dGhv
cml6YXRpb25TdGF0dXNBdXRob3JpemVkQWx3YXlzOgorICAgIGNhc2Uga0NMQXV0aG9yaXphdGlv
blN0YXR1c0F1dGhvcml6ZWRXaGVuSW5Vc2U6IHsKKyAgICAgICAgX2NsaWVudC0+Z2VvbG9jYXRp
b25BdXRob3JpemF0aW9uR3JhbnRlZChfd2Vic2l0ZUlkZW50aWZpZXIpOworICAgICAgICBicmVh
azsKKyAgICB9CisgICAgY2FzZSBrQ0xBdXRob3JpemF0aW9uU3RhdHVzUmVzdHJpY3RlZDoKKyAg
ICBjYXNlIGtDTEF1dGhvcml6YXRpb25TdGF0dXNEZW5pZWQ6CisgICAgICAgIF9jbGllbnQtPmdl
b2xvY2F0aW9uQXV0aG9yaXphdGlvbkRlbmllZChfd2Vic2l0ZUlkZW50aWZpZXIpOworICAgICAg
ICBicmVhazsKKyAgICB9Cit9CisKKy0gKHZvaWQpbG9jYXRpb25NYW5hZ2VyRGlkQ2hhbmdlQXV0
aG9yaXphdGlvbjooQ0xMb2NhdGlvbk1hbmFnZXIgKiltYW5hZ2VyCit7CisgICAgYXV0byBzdGF0
dXMgPSBbX2xvY2F0aW9uTWFuYWdlciBhdXRob3JpemF0aW9uU3RhdHVzXTsKKyAgICBpZiAoX2lz
V2FpdGluZ0ZvckF1dGhvcml6YXRpb24pIHsKKyAgICAgICAgc3dpdGNoIChzdGF0dXMpIHsKKyAg
ICAgICAgY2FzZSBrQ0xBdXRob3JpemF0aW9uU3RhdHVzTm90RGV0ZXJtaW5lZDoKKyAgICAgICAg
ICAgIC8vIFRoaXMgY2FuIGhhcHBlbiBhZnRlciByZXN1bWUgaWYgdGhlIHVzZXIgaGFzIHN0aWxs
IG5vdCBhbnN3ZXJlZCB0aGUgZGlhbG9nLiBXZSBqdXN0IGhhdmUgdG8gd2FpdCBmb3IgdGhlIHBl
cm1pc3Npb24uCisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBrQ0xBdXRob3JpemF0
aW9uU3RhdHVzRGVuaWVkOgorICAgICAgICBjYXNlIGtDTEF1dGhvcml6YXRpb25TdGF0dXNSZXN0
cmljdGVkOgorICAgICAgICAgICAgX2lzV2FpdGluZ0ZvckF1dGhvcml6YXRpb24gPSBOTzsKKyAg
ICAgICAgICAgIF9jbGllbnQtPmdlb2xvY2F0aW9uQXV0aG9yaXphdGlvbkRlbmllZChfd2Vic2l0
ZUlkZW50aWZpZXIpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2Uga0NMQXV0aG9y
aXphdGlvblN0YXR1c0F1dGhvcml6ZWRBbHdheXM6CisgICAgICAgIGNhc2Uga0NMQXV0aG9yaXph
dGlvblN0YXR1c0F1dGhvcml6ZWRXaGVuSW5Vc2U6CisgICAgICAgICAgICBfaXNXYWl0aW5nRm9y
QXV0aG9yaXphdGlvbiA9IE5POworICAgICAgICAgICAgX2NsaWVudC0+Z2VvbG9jYXRpb25BdXRo
b3JpemF0aW9uR3JhbnRlZChfd2Vic2l0ZUlkZW50aWZpZXIpOworICAgICAgICAgICAgYnJlYWs7
CisgICAgICAgIH0KKyAgICB9IGVsc2UgeworICAgICAgICBpZiAoc3RhdHVzID09IGtDTEF1dGhv
cml6YXRpb25TdGF0dXNEZW5pZWQgfHwgc3RhdHVzID09IGtDTEF1dGhvcml6YXRpb25TdGF0dXNS
ZXN0cmljdGVkKSB7CisgICAgICAgICAgICBbX2xvY2F0aW9uTWFuYWdlciBzdG9wVXBkYXRpbmdM
b2NhdGlvbl07CisgICAgICAgICAgICBfY2xpZW50LT5yZXNldEdlb2xvY2F0aW9uKF93ZWJzaXRl
SWRlbnRpZmllcik7CisgICAgICAgIH0KKyAgICB9Cit9CisKKy0gKHZvaWQpbG9jYXRpb25NYW5h
Z2VyOihDTExvY2F0aW9uTWFuYWdlciAqKW1hbmFnZXIgZGlkVXBkYXRlTG9jYXRpb25zOihOU0Fy
cmF5ICopbG9jYXRpb25zCit7CisgICAgVU5VU0VEX1BBUkFNKG1hbmFnZXIpOworICAgIGZvciAo
Q0xMb2NhdGlvbiAqbG9jYXRpb24gaW4gbG9jYXRpb25zKQorICAgICAgICBfY2xpZW50LT5wb3Np
dGlvbkNoYW5nZWQoX3dlYnNpdGVJZGVudGlmaWVyLCBXZWJDb3JlOjpHZW9sb2NhdGlvblBvc2l0
aW9uRGF0YSB7IGxvY2F0aW9uIH0pOworfQorCistICh2b2lkKWxvY2F0aW9uTWFuYWdlcjooQ0xM
b2NhdGlvbk1hbmFnZXIgKiltYW5hZ2VyIGRpZEZhaWxXaXRoRXJyb3I6KE5TRXJyb3IgKillcnJv
cgoreworICAgIEFTU0VSVChlcnJvcik7CisgICAgVU5VU0VEX1BBUkFNKG1hbmFnZXIpOworCisg
ICAgaWYgKFtlcnJvciBjb2RlXSA9PSBrQ0xFcnJvckRlbmllZCkgeworICAgICAgICAvLyBJZ25v
cmUgdGhlIGVycm9yIGhlcmUgYW5kIGxldCBsb2NhdGlvbk1hbmFnZXI6ZGlkQ2hhbmdlQXV0aG9y
aXphdGlvblN0YXR1czogaGFuZGxlIHRoZSBwZXJtaXNzaW9uLgorICAgICAgICByZXR1cm47Cisg
ICAgfQorCisgICAgTlNTdHJpbmcgKmVycm9yTWVzc2FnZSA9IFtlcnJvciBsb2NhbGl6ZWREZXNj
cmlwdGlvbl07CisgICAgX2NsaWVudC0+ZXJyb3JPY2N1cnJlZChfd2Vic2l0ZUlkZW50aWZpZXIs
IGVycm9yTWVzc2FnZSk7Cit9CisKK0BlbmQKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitDb3Jl
TG9jYXRpb25HZW9sb2NhdGlvblByb3ZpZGVyOjpDb3JlTG9jYXRpb25HZW9sb2NhdGlvblByb3Zp
ZGVyKGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiByZWdpc3RyYWJsZURvbWFpbiwgQ2xpZW50JiBj
bGllbnQpCisgICAgOiBtX2xvY2F0aW9uTWFuYWdlcihhZG9wdE5TKFtbV2ViQ0xMb2NhdGlvbk1h
bmFnZXIgYWxsb2NdIGluaXRXaXRoV2Vic2l0ZUlkZW50aWZpZXI6cmVnaXN0cmFibGVEb21haW4u
c3RyaW5nKCkgY2xpZW50OmNsaWVudF0pKQoreworICAgIC8vIFJlcXVlc3QgcGVybWlzc2lvbiBm
b3IgdGhlIGFwcCB0byB1c2UgZ2VvbG9jYXRpb24gKGlmIGl0IGRvZXNuJ3QgYWxyZWFkeSkuCisg
ICAgW21fbG9jYXRpb25NYW5hZ2VyIHJlcXVlc3RHZW9sb2NhdGlvbkF1dGhvcml6YXRpb25dOwor
fQorCitDb3JlTG9jYXRpb25HZW9sb2NhdGlvblByb3ZpZGVyOjp+Q29yZUxvY2F0aW9uR2VvbG9j
YXRpb25Qcm92aWRlcigpCit7CisgICAgW21fbG9jYXRpb25NYW5hZ2VyIHN0b3BdOworfQorCit2
b2lkIENvcmVMb2NhdGlvbkdlb2xvY2F0aW9uUHJvdmlkZXI6OnN0YXJ0KCkKK3sKKyAgICBbbV9s
b2NhdGlvbk1hbmFnZXIgc3RhcnRdOworfQorCit2b2lkIENvcmVMb2NhdGlvbkdlb2xvY2F0aW9u
UHJvdmlkZXI6OnN0b3AoKQoreworICAgIFttX2xvY2F0aW9uTWFuYWdlciBzdG9wXTsKK30KKwor
dm9pZCBDb3JlTG9jYXRpb25HZW9sb2NhdGlvblByb3ZpZGVyOjpzZXRFbmFibGVIaWdoQWNjdXJh
Y3koYm9vbCBoaWdoQWNjdXJhY3lFbmFibGVkKQoreworICAgIFttX2xvY2F0aW9uTWFuYWdlciBz
ZXRFbmFibGVIaWdoQWNjdXJhY3k6aGlnaEFjY3VyYWN5RW5hYmxlZF07Cit9CisKK2NsYXNzIEF1
dGhvcml6YXRpb25DaGVja2VyIGZpbmFsIDogcHVibGljIFJlZkNvdW50ZWQ8QXV0aG9yaXphdGlv
bkNoZWNrZXI+LCBwdWJsaWMgQ29yZUxvY2F0aW9uR2VvbG9jYXRpb25Qcm92aWRlcjo6Q2xpZW50
IHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgUmVmPEF1dGhvcml6YXRpb25DaGVja2VyPiBjcmVhdGUo
KQorICAgIHsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgQXV0aG9yaXphdGlvbkNoZWNr
ZXIpOworICAgIH0KKworICAgIHZvaWQgY2hlY2soY29uc3QgUmVnaXN0cmFibGVEb21haW4mIHJl
Z2lzdHJhYmxlRG9tYWluLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmIGNvbXBsZXRp
b25IYW5kbGVyKQorICAgIHsKKyAgICAgICAgbV9jb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUo
Y29tcGxldGlvbkhhbmRsZXIpOworICAgICAgICBtX3Byb3ZpZGVyID0gbWFrZVVuaXF1ZTxDb3Jl
TG9jYXRpb25HZW9sb2NhdGlvblByb3ZpZGVyPihyZWdpc3RyYWJsZURvbWFpbiwgKnRoaXMpOwor
ICAgIH0KKworcHJpdmF0ZToKKyAgICBBdXRob3JpemF0aW9uQ2hlY2tlcigpID0gZGVmYXVsdDsK
KworICAgIHZvaWQgZ2VvbG9jYXRpb25BdXRob3JpemF0aW9uR3JhbnRlZChjb25zdCBTdHJpbmcm
KSBmaW5hbAorICAgIHsKKyAgICAgICAgaWYgKG1fY29tcGxldGlvbkhhbmRsZXIpCisgICAgICAg
ICAgICBtX2NvbXBsZXRpb25IYW5kbGVyKHRydWUpOworICAgIH0KKworICAgIHZvaWQgZ2VvbG9j
YXRpb25BdXRob3JpemF0aW9uRGVuaWVkKGNvbnN0IFN0cmluZyYpIGZpbmFsCisgICAgeworICAg
ICAgICBpZiAobV9jb21wbGV0aW9uSGFuZGxlcikKKyAgICAgICAgICAgIG1fY29tcGxldGlvbkhh
bmRsZXIoZmFsc2UpOworICAgIH0KKworICAgIHZvaWQgcG9zaXRpb25DaGFuZ2VkKGNvbnN0IFN0
cmluZyYsIEdlb2xvY2F0aW9uUG9zaXRpb25EYXRhJiYpIGZpbmFsIHsgfQorICAgIHZvaWQgZXJy
b3JPY2N1cnJlZChjb25zdCBTdHJpbmcmLCBjb25zdCBTdHJpbmcmKSBmaW5hbAorICAgIHsKKyAg
ICAgICAgaWYgKG1fY29tcGxldGlvbkhhbmRsZXIpCisgICAgICAgICAgICBtX2NvbXBsZXRpb25I
YW5kbGVyKGZhbHNlKTsKKyAgICB9CisgICAgdm9pZCByZXNldEdlb2xvY2F0aW9uKGNvbnN0IFN0
cmluZyYpIGZpbmFsIHsgfQorCisgICAgc3RkOjp1bmlxdWVfcHRyPENvcmVMb2NhdGlvbkdlb2xv
Y2F0aW9uUHJvdmlkZXI+IG1fcHJvdmlkZXI7CisgICAgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChi
b29sKT4gbV9jb21wbGV0aW9uSGFuZGxlcjsKK307CisKK3ZvaWQgQ29yZUxvY2F0aW9uR2VvbG9j
YXRpb25Qcm92aWRlcjo6cmVxdWVzdEF1dGhvcml6YXRpb24oY29uc3QgUmVnaXN0cmFibGVEb21h
aW4mIHJlZ2lzdHJhYmxlRG9tYWluLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmIGNv
bXBsZXRpb25IYW5kbGVyKQoreworICAgIGF1dG8gYXV0aG9yaXphdGlvbkNoZWNrZXIgPSBBdXRo
b3JpemF0aW9uQ2hlY2tlcjo6Y3JlYXRlKCk7CisgICAgYXV0aG9yaXphdGlvbkNoZWNrZXItPmNo
ZWNrKHJlZ2lzdHJhYmxlRG9tYWluLCBbYXV0aG9yaXphdGlvbkNoZWNrZXIsIGNvbXBsZXRpb25I
YW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildKGJvb2wgYXV0aG9yaXplZCkgbXV0
YWJsZSB7CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKGF1dGhvcml6ZWQpOworICAgIH0pOwor
fQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9tb2NrL0dlb2xvY2F0aW9uQ2xpZW50TW9jay5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9tb2NrL0dlb2xvY2F0aW9uQ2xpZW50TW9jay5jcHAKaW5kZXggOWQ1ZWZjODNmMzRl
YjE4ZDU5OWRjMTBjYWE4ZmMwY2EzOTlkYjBhMi4uZmE0MjA4MmU1MDU5YTllY2YyNjRjYWFmNGMy
NjUzMmY0YjJlNWQ3YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9H
ZW9sb2NhdGlvbkNsaWVudE1vY2suY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21v
Y2svR2VvbG9jYXRpb25DbGllbnRNb2NrLmNwcApAQCAtMTM2LDEwICsxMzYsMTEgQEAgdm9pZCBH
ZW9sb2NhdGlvbkNsaWVudE1vY2s6Omdlb2xvY2F0aW9uRGVzdHJveWVkKCkKICAgICBBU1NFUlQo
IW1faXNBY3RpdmUpOwogfQogCi12b2lkIEdlb2xvY2F0aW9uQ2xpZW50TW9jazo6c3RhcnRVcGRh
dGluZyhjb25zdCBTdHJpbmcmIGF1dGhvcml6YXRpb25Ub2tlbikKK3ZvaWQgR2VvbG9jYXRpb25D
bGllbnRNb2NrOjpzdGFydFVwZGF0aW5nKGNvbnN0IFN0cmluZyYgYXV0aG9yaXphdGlvblRva2Vu
LCBib29sIGVuYWJsZUhpZ2hBY2N1cmFjeSkKIHsKICAgICBBU1NFUlQoIW1faXNBY3RpdmUpOwog
ICAgIFVOVVNFRF9QQVJBTShhdXRob3JpemF0aW9uVG9rZW4pOworICAgIFVOVVNFRF9QQVJBTShl
bmFibGVIaWdoQWNjdXJhY3kpOwogICAgIG1faXNBY3RpdmUgPSB0cnVlOwogICAgIGFzeW5jVXBk
YXRlQ29udHJvbGxlcigpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bW9jay9HZW9sb2NhdGlvbkNsaWVudE1vY2suaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21v
Y2svR2VvbG9jYXRpb25DbGllbnRNb2NrLmgKaW5kZXggMmZhNzVlMDU3YTUzZDdlODE4Y2NmYWZl
ZTcwMjQzZGQ1NDgyMTg0NS4uZjhiYWMzOGI1YjZjY2M4Y2MwOGY4NzA3MWViYzc1ZDY1YjMxMDY0
MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9HZW9sb2NhdGlvbkNs
aWVudE1vY2suaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL0dlb2xvY2F0aW9u
Q2xpZW50TW9jay5oCkBAIC01OSw3ICs1OSw3IEBAIHB1YmxpYzoKIAogICAgIC8vIEdlb2xvY2F0
aW9uQ2xpZW50CiAgICAgdm9pZCBnZW9sb2NhdGlvbkRlc3Ryb3llZCgpIG92ZXJyaWRlOwotICAg
IHZvaWQgc3RhcnRVcGRhdGluZyhjb25zdCBTdHJpbmcmIGF1dGhvcml6YXRpb25Ub2tlbikgb3Zl
cnJpZGU7CisgICAgdm9pZCBzdGFydFVwZGF0aW5nKGNvbnN0IFN0cmluZyYgYXV0aG9yaXphdGlv
blRva2VuLCBib29sIGVuYWJsZUhpZ2hBY2N1cmFjeSkgb3ZlcnJpZGU7CiAgICAgdm9pZCBzdG9w
VXBkYXRpbmcoKSBvdmVycmlkZTsKICAgICB2b2lkIHNldEVuYWJsZUhpZ2hBY2N1cmFjeShib29s
KSBvdmVycmlkZTsKICAgICBzdGQ6Om9wdGlvbmFsPEdlb2xvY2F0aW9uUG9zaXRpb25EYXRhPiBs
YXN0UG9zaXRpb24oKSBvdmVycmlkZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU291cmNl
c0NvY29hLnR4dCBiL1NvdXJjZS9XZWJLaXQvU291cmNlc0NvY29hLnR4dAppbmRleCBmZTUwNmY3
MTMzNGFkNTQ2ZWJiYWIwNjQxY2IzNzFjMjk5ZGIyNmNhLi5jOTA3NDZmZDdjZDNlYTM5OGQzZGMy
YjIwZDRkNjgwODY5MWJlYmU3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NvdXJjZXNDb2Nv
YS50eHQKKysrIGIvU291cmNlL1dlYktpdC9Tb3VyY2VzQ29jb2EudHh0CkBAIC00MjYsNiArNDI2
LDcgQEAgVUlQcm9jZXNzL0NvY29hL1VJUmVtb3RlT2JqZWN0UmVnaXN0cnkuY3BwCiBVSVByb2Nl
c3MvQ29jb2EvVXNlck1lZGlhQ2FwdHVyZU1hbmFnZXJQcm94eS5jcHAKIFVJUHJvY2Vzcy9Db2Nv
YS9Vc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXJQcm94eS5tbQogVUlQcm9jZXNzL0Nv
Y29hL1ZpZGVvRnVsbHNjcmVlbk1hbmFnZXJQcm94eS5tbQorVUlQcm9jZXNzL0NvY29hL1dlYkdl
b2xvY2F0aW9uTWFuYWdlclByb3h5Q29jb2EuY3BwCiBVSVByb2Nlc3MvQ29jb2EvV2ViUGFnZVBy
b3h5Q29jb2EubW0KIFVJUHJvY2Vzcy9Db2NvYS9XZWJQYXN0ZWJvYXJkUHJveHlDb2NvYS5tbQog
VUlQcm9jZXNzL0NvY29hL1dlYlByZWZlcmVuY2VzQ29jb2EubW0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLR2VvbG9jYXRpb25NYW5hZ2VyLmNwcCBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLR2VvbG9jYXRpb25NYW5hZ2VyLmNwcAppbmRleCA4
ODhiNzViYzdjZWM4OWQxNmUwN2Y2MTdlN2JiMmNlMjk3OWZhNjIzLi4yOTFlYmMxMTE2NDkzYWFl
ZjA2NmMxYmJiYTRmZGJjZjA4Mjc1YzQ4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9BUEkvQy9XS0dlb2xvY2F0aW9uTWFuYWdlci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQVBJL0MvV0tHZW9sb2NhdGlvbk1hbmFnZXIuY3BwCkBAIC00MCw3ICs0MCw5IEBA
IFdLVHlwZUlEIFdLR2VvbG9jYXRpb25NYW5hZ2VyR2V0VHlwZUlEKCkKIAogdm9pZCBXS0dlb2xv
Y2F0aW9uTWFuYWdlclNldFByb3ZpZGVyKFdLR2VvbG9jYXRpb25NYW5hZ2VyUmVmIGdlb2xvY2F0
aW9uTWFuYWdlclJlZiwgY29uc3QgV0tHZW9sb2NhdGlvblByb3ZpZGVyQmFzZSogd2tQcm92aWRl
cikKIHsKKyNpZiAhUExBVEZPUk0oSU9TKQogICAgIHRvSW1wbChnZW9sb2NhdGlvbk1hbmFnZXJS
ZWYpLT5zZXRQcm92aWRlcihtYWtlVW5pcXVlPFdlYkdlb2xvY2F0aW9uUHJvdmlkZXI+KHdrUHJv
dmlkZXIpKTsKKyNlbmRpZgogfQogCiB2b2lkIFdLR2VvbG9jYXRpb25NYW5hZ2VyUHJvdmlkZXJE
aWRDaGFuZ2VQb3NpdGlvbihXS0dlb2xvY2F0aW9uTWFuYWdlclJlZiBnZW9sb2NhdGlvbk1hbmFn
ZXJSZWYsIFdLR2VvbG9jYXRpb25Qb3NpdGlvblJlZiBwb3NpdGlvblJlZikKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dlYkdlb2xvY2F0aW9uTWFuYWdlclByb3h5
Q29jb2EuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV2ViR2VvbG9jYXRpb25N
YW5hZ2VyUHJveHlDb2NvYS5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOTAwOGMyMDViM2NkNWU5NDQ1OWM4OWJi
Njg5NzdkMmIxYjc2NDM2MQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0NvY29hL1dlYkdlb2xvY2F0aW9uTWFuYWdlclByb3h5Q29jb2EuY3BwCkBAIC0wLDAgKzEs
MTAzIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAq
IDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQor
ICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQ
UExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywK
KyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5U
IFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgor
ICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
UFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAq
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIldlYkdl
b2xvY2F0aW9uTWFuYWdlclByb3h5LmgiCisKKyNpbmNsdWRlICJXZWJHZW9sb2NhdGlvbk1hbmFn
ZXJNZXNzYWdlcy5oIgorCituYW1lc3BhY2UgV2ViS2l0IHsKKworLy8gRklYTUU6IFRoaXMgc2hv
dWxkIGJlIHVzZWQgYnkgYWxsIENvY29hIHBvcnRzCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkK
Kwordm9pZCBXZWJHZW9sb2NhdGlvbk1hbmFnZXJQcm94eTo6cG9zaXRpb25DaGFuZ2VkKGNvbnN0
IFN0cmluZyYgd2Vic2l0ZUlkZW50aWZpZXIsIFdlYkNvcmU6Okdlb2xvY2F0aW9uUG9zaXRpb25E
YXRhJiYgcG9zaXRpb24pCit7CisgICAgYXV0byByZWdpc3RyYWJsZURvbWFpbiA9IFdlYkNvcmU6
OlJlZ2lzdHJhYmxlRG9tYWluOjp1bmNoZWNrZWRDcmVhdGVGcm9tUmVnaXN0cmFibGVEb21haW5T
dHJpbmcod2Vic2l0ZUlkZW50aWZpZXIpOworICAgIGF1dG8gaXQgPSBtX3BlckRvbWFpbkRhdGEu
ZmluZChyZWdpc3RyYWJsZURvbWFpbik7CisgICAgaWYgKGl0ID09IG1fcGVyRG9tYWluRGF0YS5l
bmQoKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgYXV0byYgcGVyRG9tYWluRGF0YSA9ICppdC0+
dmFsdWU7CisgICAgcGVyRG9tYWluRGF0YS5sYXN0UG9zaXRpb24gPSBXVEZNb3ZlKHBvc2l0aW9u
KTsKKyAgICBmb3IgKGF1dG8gY29ubmVjdGlvbklEIDogcGVyRG9tYWluRGF0YS53YXRjaGVycykK
KyAgICAgICAgSVBDOjpDb25uZWN0aW9uOjpzZW5kKGNvbm5lY3Rpb25JRCwgTWVzc2FnZXM6Oldl
Ykdlb2xvY2F0aW9uTWFuYWdlcjo6RGlkQ2hhbmdlUG9zaXRpb24ocmVnaXN0cmFibGVEb21haW4s
IHBlckRvbWFpbkRhdGEubGFzdFBvc2l0aW9uLnZhbHVlKCkpLCAwKTsKK30KKwordm9pZCBXZWJH
ZW9sb2NhdGlvbk1hbmFnZXJQcm94eTo6ZXJyb3JPY2N1cnJlZChjb25zdCBTdHJpbmcmIHdlYnNp
dGVJZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIGVycm9yTWVzc2FnZSkKK3sKKyAgICBhdXRvIHJl
Z2lzdHJhYmxlRG9tYWluID0gV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW46OnVuY2hlY2tlZENy
ZWF0ZUZyb21SZWdpc3RyYWJsZURvbWFpblN0cmluZyh3ZWJzaXRlSWRlbnRpZmllcik7CisgICAg
YXV0byBpdCA9IG1fcGVyRG9tYWluRGF0YS5maW5kKHJlZ2lzdHJhYmxlRG9tYWluKTsKKyAgICBp
ZiAoaXQgPT0gbV9wZXJEb21haW5EYXRhLmVuZCgpKQorICAgICAgICByZXR1cm47CisKKyAgICBh
dXRvJiBwZXJEb21haW5EYXRhID0gKml0LT52YWx1ZTsKKyAgICBmb3IgKGF1dG8gY29ubmVjdGlv
bklEIDogcGVyRG9tYWluRGF0YS53YXRjaGVycykKKyAgICAgICAgSVBDOjpDb25uZWN0aW9uOjpz
ZW5kKGNvbm5lY3Rpb25JRCwgTWVzc2FnZXM6OldlYkdlb2xvY2F0aW9uTWFuYWdlcjo6RGlkRmFp
bFRvRGV0ZXJtaW5lUG9zaXRpb24ocmVnaXN0cmFibGVEb21haW4sIGVycm9yTWVzc2FnZSksIDAp
OworfQorCit2b2lkIFdlYkdlb2xvY2F0aW9uTWFuYWdlclByb3h5OjpyZXNldEdlb2xvY2F0aW9u
KGNvbnN0IFN0cmluZyYgd2Vic2l0ZUlkZW50aWZpZXIpCit7CisgICAgYXV0byByZWdpc3RyYWJs
ZURvbWFpbiA9IFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluOjp1bmNoZWNrZWRDcmVhdGVGcm9t
UmVnaXN0cmFibGVEb21haW5TdHJpbmcod2Vic2l0ZUlkZW50aWZpZXIpOworICAgIGF1dG8gaXQg
PSBtX3BlckRvbWFpbkRhdGEuZmluZChyZWdpc3RyYWJsZURvbWFpbik7CisgICAgaWYgKGl0ID09
IG1fcGVyRG9tYWluRGF0YS5lbmQoKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgYXV0byYgcGVy
RG9tYWluRGF0YSA9ICppdC0+dmFsdWU7CisgICAgZm9yIChhdXRvIGNvbm5lY3Rpb25JRCA6IHBl
ckRvbWFpbkRhdGEud2F0Y2hlcnMpCisgICAgICAgIElQQzo6Q29ubmVjdGlvbjo6c2VuZChjb25u
ZWN0aW9uSUQsIE1lc3NhZ2VzOjpXZWJHZW9sb2NhdGlvbk1hbmFnZXI6OlJlc2V0UGVybWlzc2lv
bnMocmVnaXN0cmFibGVEb21haW4pLCAwKTsKK30KKworYm9vbCBXZWJHZW9sb2NhdGlvbk1hbmFn
ZXJQcm94eTo6aXNVcGRhdGluZyhjb25zdCBQZXJEb21haW5EYXRhJiBwZXJEb21haW5EYXRhKSBj
b25zdAoreworICAgIHJldHVybiAhcGVyRG9tYWluRGF0YS53YXRjaGVycy5pc0VtcHR5KCk7Cit9
CisKK2Jvb2wgV2ViR2VvbG9jYXRpb25NYW5hZ2VyUHJveHk6OmlzSGlnaEFjY3VyYWN5RW5hYmxl
ZChjb25zdCBQZXJEb21haW5EYXRhJiBwZXJEb21haW5EYXRhKSBjb25zdAoreworICAgIHJldHVy
biAhcGVyRG9tYWluRGF0YS53YXRjaGVyc05lZWRpbmdIaWdoQWNjdXJhY3kuaXNFbXB0eSgpOwor
fQorCit2b2lkIFdlYkdlb2xvY2F0aW9uTWFuYWdlclByb3h5Ojpwcm92aWRlclN0YXJ0VXBkYXRp
bmcoUGVyRG9tYWluRGF0YSYgcGVyRG9tYWluRGF0YSwgY29uc3QgV2ViQ29yZTo6UmVnaXN0cmFi
bGVEb21haW4mIHJlZ2lzdHJhYmxlRG9tYWluKQoreworICAgIEFTU0VSVCghcGVyRG9tYWluRGF0
YS5wcm92aWRlcik7CisgICAgcGVyRG9tYWluRGF0YS5wcm92aWRlciA9IG1ha2VVbmlxdWU8V2Vi
Q29yZTo6Q29yZUxvY2F0aW9uR2VvbG9jYXRpb25Qcm92aWRlcj4ocmVnaXN0cmFibGVEb21haW4s
ICp0aGlzKTsKKyAgICBwZXJEb21haW5EYXRhLnByb3ZpZGVyLT5zZXRFbmFibGVIaWdoQWNjdXJh
Y3koIXBlckRvbWFpbkRhdGEud2F0Y2hlcnNOZWVkaW5nSGlnaEFjY3VyYWN5LmlzRW1wdHkoKSk7
CisgICAgcGVyRG9tYWluRGF0YS5wcm92aWRlci0+c3RhcnQoKTsKK30KKwordm9pZCBXZWJHZW9s
b2NhdGlvbk1hbmFnZXJQcm94eTo6cHJvdmlkZXJTdG9wVXBkYXRpbmcoUGVyRG9tYWluRGF0YSYg
cGVyRG9tYWluRGF0YSkKK3sKKyAgICBwZXJEb21haW5EYXRhLnByb3ZpZGVyLT5zdG9wKCk7Cit9
CisKK3ZvaWQgV2ViR2VvbG9jYXRpb25NYW5hZ2VyUHJveHk6OnByb3ZpZGVyU2V0RW5hYmxlZEhp
Z2hBY2N1cmFjeShQZXJEb21haW5EYXRhJiBwZXJEb21haW5EYXRhLCBib29sIGVuYWJsZWQpCit7
CisgICAgcGVyRG9tYWluRGF0YS5wcm92aWRlci0+c2V0RW5hYmxlSGlnaEFjY3VyYWN5KGVuYWJs
ZWQpOworfQorCisjZW5kaWYKKworfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvV2ViR2VvbG9jYXRpb25NYW5hZ2VyUHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvV2ViR2VvbG9jYXRpb25NYW5hZ2VyUHJveHkuY3BwCmluZGV4IDA0ZjMyMjdjZDU1Yzk5MmE0
MmNkOTZhM2YyNWQ2OTdhZWQ3OTY1YTIuLjA1YTUwZDBmMGM4MWFlZDc0NGI0MjBmYWE4OWJmOTY1
ODhhMTBjY2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkdlb2xvY2F0
aW9uTWFuYWdlclByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJHZW9s
b2NhdGlvbk1hbmFnZXJQcm94eS5jcHAKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0
IChDKSAyMDExLCAyMDEyLCAyMDEzIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAq
IENvcHlyaWdodCAoQykgMjAxMS0yMDIyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
ICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtNTAsMzQgKzUwLDM5IEBAIFJlZjxX
ZWJHZW9sb2NhdGlvbk1hbmFnZXJQcm94eT4gV2ViR2VvbG9jYXRpb25NYW5hZ2VyUHJveHk6OmNy
ZWF0ZShXZWJQcm9jZXNzUG9vCiAKIFdlYkdlb2xvY2F0aW9uTWFuYWdlclByb3h5OjpXZWJHZW9s
b2NhdGlvbk1hbmFnZXJQcm94eShXZWJQcm9jZXNzUG9vbCogcHJvY2Vzc1Bvb2wpCiAgICAgOiBX
ZWJDb250ZXh0U3VwcGxlbWVudChwcm9jZXNzUG9vbCkKLSAgICAsIG1fcHJvdmlkZXIobWFrZVVu
aXF1ZTxBUEk6Okdlb2xvY2F0aW9uUHJvdmlkZXI+KCkpCiB7CiAgICAgV2ViQ29udGV4dFN1cHBs
ZW1lbnQ6OnByb2Nlc3NQb29sKCktPmFkZE1lc3NhZ2VSZWNlaXZlcihNZXNzYWdlczo6V2ViR2Vv
bG9jYXRpb25NYW5hZ2VyUHJveHk6Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSwgKnRoaXMpOwogfQog
Ci12b2lkIFdlYkdlb2xvY2F0aW9uTWFuYWdlclByb3h5OjpzZXRQcm92aWRlcihzdGQ6OnVuaXF1
ZV9wdHI8QVBJOjpHZW9sb2NhdGlvblByb3ZpZGVyPiYmIHByb3ZpZGVyKQotewotICAgIGlmICgh
cHJvdmlkZXIpCi0gICAgICAgIG1fcHJvdmlkZXIgPSBtYWtlVW5pcXVlPEFQSTo6R2VvbG9jYXRp
b25Qcm92aWRlcj4oKTsKLSAgICBlbHNlCi0gICAgICAgIG1fcHJvdmlkZXIgPSBXVEZNb3ZlKHBy
b3ZpZGVyKTsKLX0KK1dlYkdlb2xvY2F0aW9uTWFuYWdlclByb3h5Ojp+V2ViR2VvbG9jYXRpb25N
YW5hZ2VyUHJveHkoKSA9IGRlZmF1bHQ7CiAKIC8vIFdlYkNvbnRleHRTdXBwbGVtZW50CiAKIHZv
aWQgV2ViR2VvbG9jYXRpb25NYW5hZ2VyUHJveHk6OnByb2Nlc3NQb29sRGVzdHJveWVkKCkKIHsK
LSAgICBib29sIHdhc1VwZGF0aW5nID0gaXNVcGRhdGluZygpOwotICAgIG1fdXBkYXRlUmVxdWVz
dGVycy5jbGVhcigpOworICAgIGlmIChtX3BlckRvbWFpbkRhdGEuaXNFbXB0eSgpKQorICAgICAg
ICByZXR1cm47CiAKLSAgICBBU1NFUlQoIWlzVXBkYXRpbmcoKSk7Ci0gICAgaWYgKHdhc1VwZGF0
aW5nKQorICAgIG1fcGVyRG9tYWluRGF0YS5jbGVhcigpOworI2lmICFQTEFURk9STShJT1NfRkFN
SUxZKQorICAgIGlmIChtX3Byb3ZpZGVyKQogICAgICAgICBtX3Byb3ZpZGVyLT5zdG9wVXBkYXRp
bmcoKnRoaXMpOworI2VuZGlmCiB9CiAKIHZvaWQgV2ViR2VvbG9jYXRpb25NYW5hZ2VyUHJveHk6
OnByb2Nlc3NEaWRDbG9zZShXZWJQcm9jZXNzUHJveHkqIHdlYlByb2Nlc3NQcm94eSkKIHsKLSAg
ICByZW1vdmVSZXF1ZXN0ZXIod2ViUHJvY2Vzc1Byb3h5KTsKKyAgICBhdXRvKiBjb25uZWN0aW9u
ID0gd2ViUHJvY2Vzc1Byb3h5LT5jb25uZWN0aW9uKCk7CisgICAgaWYgKCFjb25uZWN0aW9uKQor
ICAgICAgICByZXR1cm47CisKKyAgICBWZWN0b3I8V2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4+
IGFmZmVjdGVkRG9tYWluczsKKyAgICBmb3IgKGF1dG8mIFtyZWdpc3RyYWJsZURvbWFpbiwgcGVy
RG9tYWluRGF0YV0gOiBtX3BlckRvbWFpbkRhdGEpIHsKKyAgICAgICAgaWYgKHBlckRvbWFpbkRh
dGEtPndhdGNoZXJzLmNvbnRhaW5zKGNvbm5lY3Rpb24tPnVuaXF1ZUlEKCkpKQorICAgICAgICAg
ICAgYWZmZWN0ZWREb21haW5zLmFwcGVuZChyZWdpc3RyYWJsZURvbWFpbik7CisgICAgfQorICAg
IGZvciAoYXV0byYgcmVnaXN0cmFibGVEb21haW4gOiBhZmZlY3RlZERvbWFpbnMpCisgICAgICAg
IHN0b3BVcGRhdGluZygqY29ubmVjdGlvbiwgcmVnaXN0cmFibGVEb21haW4pOwogfQogCiB2b2lk
IFdlYkdlb2xvY2F0aW9uTWFuYWdlclByb3h5OjpyZWZXZWJDb250ZXh0U3VwcGxlbWVudCgpCkBA
IC05MiwzMCArOTcsMjIgQEAgdm9pZCBXZWJHZW9sb2NhdGlvbk1hbmFnZXJQcm94eTo6ZGVyZWZX
ZWJDb250ZXh0U3VwcGxlbWVudCgpCiAKIHZvaWQgV2ViR2VvbG9jYXRpb25NYW5hZ2VyUHJveHk6
OnByb3ZpZGVyRGlkQ2hhbmdlUG9zaXRpb24oV2ViR2VvbG9jYXRpb25Qb3NpdGlvbiogcG9zaXRp
b24pCiB7Ci0gICAgbV9sYXN0UG9zaXRpb24gPSBwb3NpdGlvbi0+Y29yZVBvc2l0aW9uKCk7Ci0K
LSAgICBpZiAoIXByb2Nlc3NQb29sKCkpCi0gICAgICAgIHJldHVybjsKLQotICAgIHByb2Nlc3NQ
b29sKCktPnNlbmRUb0FsbFByb2Nlc3NlcyhNZXNzYWdlczo6V2ViR2VvbG9jYXRpb25NYW5hZ2Vy
OjpEaWRDaGFuZ2VQb3NpdGlvbihtX2xhc3RQb3NpdGlvbi52YWx1ZSgpKSk7CisgICAgZm9yIChh
dXRvJiBbcmVnaXN0cmFibGVEb21haW4sIHBlckRvbWFpbkRhdGFdIDogbV9wZXJEb21haW5EYXRh
KSB7CisgICAgICAgIHBlckRvbWFpbkRhdGEtPmxhc3RQb3NpdGlvbiA9IHBvc2l0aW9uLT5jb3Jl
UG9zaXRpb24oKTsKKyAgICAgICAgZm9yIChhdXRvIGNvbm5lY3Rpb25JRCA6IHBlckRvbWFpbkRh
dGEtPndhdGNoZXJzKQorICAgICAgICAgICAgSVBDOjpDb25uZWN0aW9uOjpzZW5kKGNvbm5lY3Rp
b25JRCwgTWVzc2FnZXM6OldlYkdlb2xvY2F0aW9uTWFuYWdlcjo6RGlkQ2hhbmdlUG9zaXRpb24o
cmVnaXN0cmFibGVEb21haW4sIHBlckRvbWFpbkRhdGEtPmxhc3RQb3NpdGlvbi52YWx1ZSgpKSwg
MCk7CisgICAgfQogfQogCiB2b2lkIFdlYkdlb2xvY2F0aW9uTWFuYWdlclByb3h5Ojpwcm92aWRl
ckRpZEZhaWxUb0RldGVybWluZVBvc2l0aW9uKGNvbnN0IFN0cmluZyYgZXJyb3JNZXNzYWdlKQog
ewotICAgIGlmICghcHJvY2Vzc1Bvb2woKSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgcHJvY2Vz
c1Bvb2woKS0+c2VuZFRvQWxsUHJvY2Vzc2VzKE1lc3NhZ2VzOjpXZWJHZW9sb2NhdGlvbk1hbmFn
ZXI6OkRpZEZhaWxUb0RldGVybWluZVBvc2l0aW9uKGVycm9yTWVzc2FnZSkpOwotfQotCi0jaWYg
UExBVEZPUk0oSU9TX0ZBTUlMWSkKLXZvaWQgV2ViR2VvbG9jYXRpb25NYW5hZ2VyUHJveHk6OnJl
c2V0UGVybWlzc2lvbnMoKQotewotICAgIHByb2Nlc3NQb29sKCktPnNlbmRUb0FsbFByb2Nlc3Nl
cyhNZXNzYWdlczo6V2ViR2VvbG9jYXRpb25NYW5hZ2VyOjpSZXNldFBlcm1pc3Npb25zKCkpOwor
ICAgIGZvciAoYXV0byYgW3JlZ2lzdHJhYmxlRG9tYWluLCBwZXJEb21haW5EYXRhXSA6IG1fcGVy
RG9tYWluRGF0YSkgeworICAgICAgICBmb3IgKGF1dG8gY29ubmVjdGlvbklEIDogcGVyRG9tYWlu
RGF0YS0+d2F0Y2hlcnMpCisgICAgICAgICAgICBJUEM6OkNvbm5lY3Rpb246OnNlbmQoY29ubmVj
dGlvbklELCBNZXNzYWdlczo6V2ViR2VvbG9jYXRpb25NYW5hZ2VyOjpEaWRGYWlsVG9EZXRlcm1p
bmVQb3NpdGlvbihyZWdpc3RyYWJsZURvbWFpbiwgZXJyb3JNZXNzYWdlKSwgMCk7CisgICAgfQog
fQotI2VuZGlmCiAKLXZvaWQgV2ViR2VvbG9jYXRpb25NYW5hZ2VyUHJveHk6OnN0YXJ0VXBkYXRp
bmcoSVBDOjpDb25uZWN0aW9uJiBjb25uZWN0aW9uLCBXZWJQYWdlUHJveHlJZGVudGlmaWVyIHBh
Z2VQcm94eUlELCBjb25zdCBTdHJpbmcmIGF1dGhvcml6YXRpb25Ub2tlbikKK3ZvaWQgV2ViR2Vv
bG9jYXRpb25NYW5hZ2VyUHJveHk6OnN0YXJ0VXBkYXRpbmcoSVBDOjpDb25uZWN0aW9uJiBjb25u
ZWN0aW9uLCBjb25zdCBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiYgcmVnaXN0cmFibGVEb21h
aW4sIFdlYlBhZ2VQcm94eUlkZW50aWZpZXIgcGFnZVByb3h5SUQsIGNvbnN0IFN0cmluZyYgYXV0
aG9yaXphdGlvblRva2VuLCBib29sIGVuYWJsZUhpZ2hBY2N1cmFjeSkKIHsKICAgICBhdXRvKiBw
YWdlID0gV2ViUHJvY2Vzc1Byb3h5Ojp3ZWJQYWdlKHBhZ2VQcm94eUlEKTsKICAgICBNRVNTQUdF
X0NIRUNLKHBhZ2UpOwpAQCAtMTIzLDUwICsxMjAsMTIxIEBAIHZvaWQgV2ViR2VvbG9jYXRpb25N
YW5hZ2VyUHJveHk6OnN0YXJ0VXBkYXRpbmcoSVBDOjpDb25uZWN0aW9uJiBjb25uZWN0aW9uLCBX
ZWJQCiAgICAgYXV0byBpc1ZhbGlkQXV0aG9yaXphdGlvblRva2VuID0gcGFnZS0+Z2VvbG9jYXRp
b25QZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXIoKS5pc1ZhbGlkQXV0aG9yaXphdGlvblRva2VuKGF1
dGhvcml6YXRpb25Ub2tlbik7CiAgICAgTUVTU0FHRV9DSEVDSyhpc1ZhbGlkQXV0aG9yaXphdGlv
blRva2VuKTsKIAotICAgIGJvb2wgd2FzVXBkYXRpbmcgPSBpc1VwZGF0aW5nKCk7Ci0gICAgbV91
cGRhdGVSZXF1ZXN0ZXJzLmFkZCgmY29ubmVjdGlvbi5jbGllbnQoKSk7CisgICAgYXV0byYgcGVy
RG9tYWluRGF0YSA9ICptX3BlckRvbWFpbkRhdGEuZW5zdXJlKHJlZ2lzdHJhYmxlRG9tYWluLCBb
XSB7CisgICAgICAgIHJldHVybiBtYWtlVW5pcXVlPFBlckRvbWFpbkRhdGE+KCk7CisgICAgfSku
aXRlcmF0b3ItPnZhbHVlOworCisgICAgYm9vbCB3YXNVcGRhdGluZyA9IGlzVXBkYXRpbmcocGVy
RG9tYWluRGF0YSk7CisgICAgYm9vbCBoaWdoQWNjdXJhY3lXYXNFbmFibGVkID0gaXNIaWdoQWNj
dXJhY3lFbmFibGVkKHBlckRvbWFpbkRhdGEpOworCisgICAgcGVyRG9tYWluRGF0YS53YXRjaGVy
cy5hZGQoY29ubmVjdGlvbi51bmlxdWVJRCgpKTsKKyAgICBpZiAoZW5hYmxlSGlnaEFjY3VyYWN5
KQorICAgICAgICBwZXJEb21haW5EYXRhLndhdGNoZXJzTmVlZGluZ0hpZ2hBY2N1cmFjeS5hZGQo
Y29ubmVjdGlvbi51bmlxdWVJRCgpKTsKKwogICAgIGlmICghd2FzVXBkYXRpbmcpIHsKLSAgICAg
ICAgbV9wcm92aWRlci0+c2V0RW5hYmxlSGlnaEFjY3VyYWN5KCp0aGlzLCBpc0hpZ2hBY2N1cmFj
eUVuYWJsZWQoKSk7Ci0gICAgICAgIG1fcHJvdmlkZXItPnN0YXJ0VXBkYXRpbmcoKnRoaXMpOwot
ICAgIH0gZWxzZSBpZiAobV9sYXN0UG9zaXRpb24pCi0gICAgICAgIGNvbm5lY3Rpb24uc2VuZChN
ZXNzYWdlczo6V2ViR2VvbG9jYXRpb25NYW5hZ2VyOjpEaWRDaGFuZ2VQb3NpdGlvbihtX2xhc3RQ
b3NpdGlvbi52YWx1ZSgpKSwgMCk7Ci19CisgICAgICAgIHByb3ZpZGVyU3RhcnRVcGRhdGluZyhw
ZXJEb21haW5EYXRhLCByZWdpc3RyYWJsZURvbWFpbik7CisgICAgICAgIHJldHVybjsKKyAgICB9
CisgICAgaWYgKCFoaWdoQWNjdXJhY3lXYXNFbmFibGVkICYmIGVuYWJsZUhpZ2hBY2N1cmFjeSkK
KyAgICAgICAgcHJvdmlkZXJTZXRFbmFibGVkSGlnaEFjY3VyYWN5KHBlckRvbWFpbkRhdGEsIGVu
YWJsZUhpZ2hBY2N1cmFjeSk7CiAKLXZvaWQgV2ViR2VvbG9jYXRpb25NYW5hZ2VyUHJveHk6OnN0
b3BVcGRhdGluZyhJUEM6OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24pCi17Ci0gICAgcmVtb3ZlUmVx
dWVzdGVyKCZjb25uZWN0aW9uLmNsaWVudCgpKTsKKyAgICBpZiAocGVyRG9tYWluRGF0YS5sYXN0
UG9zaXRpb24pCisgICAgICAgIGNvbm5lY3Rpb24uc2VuZChNZXNzYWdlczo6V2ViR2VvbG9jYXRp
b25NYW5hZ2VyOjpEaWRDaGFuZ2VQb3NpdGlvbihyZWdpc3RyYWJsZURvbWFpbiwgcGVyRG9tYWlu
RGF0YS5sYXN0UG9zaXRpb24udmFsdWUoKSksIDApOwogfQogCi12b2lkIFdlYkdlb2xvY2F0aW9u
TWFuYWdlclByb3h5OjpyZW1vdmVSZXF1ZXN0ZXIoY29uc3QgSVBDOjpDb25uZWN0aW9uOjpDbGll
bnQqIGNsaWVudCkKK3ZvaWQgV2ViR2VvbG9jYXRpb25NYW5hZ2VyUHJveHk6OnN0b3BVcGRhdGlu
ZyhJUEM6OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24sIGNvbnN0IFdlYkNvcmU6OlJlZ2lzdHJhYmxl
RG9tYWluJiByZWdpc3RyYWJsZURvbWFpbikKIHsKLSAgICBib29sIHdhc1VwZGF0aW5nID0gaXNV
cGRhdGluZygpOwotICAgIGJvb2wgaGlnaEFjY3VyYWN5V2FzRW5hYmxlZCA9IGlzSGlnaEFjY3Vy
YWN5RW5hYmxlZCgpOworICAgIGF1dG8gaXQgPSBtX3BlckRvbWFpbkRhdGEuZmluZChyZWdpc3Ry
YWJsZURvbWFpbik7CisgICAgaWYgKGl0ID09IG1fcGVyRG9tYWluRGF0YS5lbmQoKSkKKyAgICAg
ICAgcmV0dXJuOwogCi0gICAgbV9oaWdoQWNjdXJhY3lSZXF1ZXN0ZXJzLnJlbW92ZShjbGllbnQp
OwotICAgIG1fdXBkYXRlUmVxdWVzdGVycy5yZW1vdmUoY2xpZW50KTsKKyAgICBhdXRvJiBwZXJE
b21haW5EYXRhID0gKml0LT52YWx1ZTsKKyAgICBib29sIHdhc1VwZGF0aW5nID0gaXNVcGRhdGlu
ZyhwZXJEb21haW5EYXRhKTsKKyAgICBib29sIGhpZ2hBY2N1cmFjeVdhc0VuYWJsZWQgPSBpc0hp
Z2hBY2N1cmFjeUVuYWJsZWQocGVyRG9tYWluRGF0YSk7CiAKLSAgICBpZiAod2FzVXBkYXRpbmcg
JiYgIWlzVXBkYXRpbmcoKSkKLSAgICAgICAgbV9wcm92aWRlci0+c3RvcFVwZGF0aW5nKCp0aGlz
KTsKKyAgICBwZXJEb21haW5EYXRhLndhdGNoZXJzLnJlbW92ZShjb25uZWN0aW9uLnVuaXF1ZUlE
KCkpOworICAgIHBlckRvbWFpbkRhdGEud2F0Y2hlcnNOZWVkaW5nSGlnaEFjY3VyYWN5LnJlbW92
ZShjb25uZWN0aW9uLnVuaXF1ZUlEKCkpOworCisgICAgaWYgKHdhc1VwZGF0aW5nICYmICFpc1Vw
ZGF0aW5nKHBlckRvbWFpbkRhdGEpKQorICAgICAgICBwcm92aWRlclN0b3BVcGRhdGluZyhwZXJE
b21haW5EYXRhKTsKICAgICBlbHNlIHsKLSAgICAgICAgYm9vbCBoaWdoQWNjdXJhY3lTaG91bGRC
ZUVuYWJsZWQgPSBpc0hpZ2hBY2N1cmFjeUVuYWJsZWQoKTsKKyAgICAgICAgYm9vbCBoaWdoQWNj
dXJhY3lTaG91bGRCZUVuYWJsZWQgPSBpc0hpZ2hBY2N1cmFjeUVuYWJsZWQocGVyRG9tYWluRGF0
YSk7CiAgICAgICAgIGlmIChoaWdoQWNjdXJhY3lTaG91bGRCZUVuYWJsZWQgIT0gaGlnaEFjY3Vy
YWN5V2FzRW5hYmxlZCkKLSAgICAgICAgICAgIG1fcHJvdmlkZXItPnNldEVuYWJsZUhpZ2hBY2N1
cmFjeSgqdGhpcywgaGlnaEFjY3VyYWN5U2hvdWxkQmVFbmFibGVkKTsKKyAgICAgICAgICAgIHBy
b3ZpZGVyU2V0RW5hYmxlZEhpZ2hBY2N1cmFjeShwZXJEb21haW5EYXRhLCBoaWdoQWNjdXJhY3lT
aG91bGRCZUVuYWJsZWQpOwogICAgIH0KKworICAgIGlmIChwZXJEb21haW5EYXRhLndhdGNoZXJz
LmlzRW1wdHkoKSAmJiBwZXJEb21haW5EYXRhLndhdGNoZXJzTmVlZGluZ0hpZ2hBY2N1cmFjeS5p
c0VtcHR5KCkpCisgICAgICAgIG1fcGVyRG9tYWluRGF0YS5yZW1vdmUoaXQpOwogfQogCi12b2lk
IFdlYkdlb2xvY2F0aW9uTWFuYWdlclByb3h5OjpzZXRFbmFibGVIaWdoQWNjdXJhY3koSVBDOjpD
b25uZWN0aW9uJiBjb25uZWN0aW9uLCBib29sIGVuYWJsZWQpCit2b2lkIFdlYkdlb2xvY2F0aW9u
TWFuYWdlclByb3h5OjpzZXRFbmFibGVIaWdoQWNjdXJhY3koSVBDOjpDb25uZWN0aW9uJiBjb25u
ZWN0aW9uLCBjb25zdCBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiYgcmVnaXN0cmFibGVEb21h
aW4sIGJvb2wgZW5hYmxlZCkKIHsKLSAgICBib29sIGhpZ2hBY2N1cmFjeVdhc0VuYWJsZWQgPSBp
c0hpZ2hBY2N1cmFjeUVuYWJsZWQoKTsKKyAgICBhdXRvIGl0ID0gbV9wZXJEb21haW5EYXRhLmZp
bmQocmVnaXN0cmFibGVEb21haW4pOworICAgIEFTU0VSVChpdCAhPSBtX3BlckRvbWFpbkRhdGEu
ZW5kKCkpOworICAgIGlmIChpdCA9PSBtX3BlckRvbWFpbkRhdGEuZW5kKCkpCisgICAgICAgIHJl
dHVybjsKKworICAgIGF1dG8mIHBlckRvbWFpbkRhdGEgPSAqaXQtPnZhbHVlOworICAgIGJvb2wg
aGlnaEFjY3VyYWN5V2FzRW5hYmxlZCA9IGlzSGlnaEFjY3VyYWN5RW5hYmxlZChwZXJEb21haW5E
YXRhKTsKIAogICAgIGlmIChlbmFibGVkKQotICAgICAgICBtX2hpZ2hBY2N1cmFjeVJlcXVlc3Rl
cnMuYWRkKCZjb25uZWN0aW9uLmNsaWVudCgpKTsKKyAgICAgICAgcGVyRG9tYWluRGF0YS53YXRj
aGVyc05lZWRpbmdIaWdoQWNjdXJhY3kuYWRkKGNvbm5lY3Rpb24udW5pcXVlSUQoKSk7CisgICAg
ZWxzZQorICAgICAgICBwZXJEb21haW5EYXRhLndhdGNoZXJzTmVlZGluZ0hpZ2hBY2N1cmFjeS5y
ZW1vdmUoY29ubmVjdGlvbi51bmlxdWVJRCgpKTsKKworICAgIGlmIChpc1VwZGF0aW5nKHBlckRv
bWFpbkRhdGEpICYmIGhpZ2hBY2N1cmFjeVdhc0VuYWJsZWQgIT0gZW5hYmxlZCkKKyAgICAgICAg
cHJvdmlkZXJTZXRFbmFibGVkSGlnaEFjY3VyYWN5KHBlckRvbWFpbkRhdGEsIGVuYWJsZWQpOwor
fQorCisjaWYgIVBMQVRGT1JNKElPU19GQU1JTFkpCit2b2lkIFdlYkdlb2xvY2F0aW9uTWFuYWdl
clByb3h5OjpzZXRQcm92aWRlcihzdGQ6OnVuaXF1ZV9wdHI8QVBJOjpHZW9sb2NhdGlvblByb3Zp
ZGVyPiYmIHByb3ZpZGVyKQoreworICAgIGlmICghcHJvdmlkZXIpCisgICAgICAgIG1fcHJvdmlk
ZXIgPSBtYWtlVW5pcXVlPEFQSTo6R2VvbG9jYXRpb25Qcm92aWRlcj4oKTsKICAgICBlbHNlCi0g
ICAgICAgIG1faGlnaEFjY3VyYWN5UmVxdWVzdGVycy5yZW1vdmUoJmNvbm5lY3Rpb24uY2xpZW50
KCkpOworICAgICAgICBtX3Byb3ZpZGVyID0gV1RGTW92ZShwcm92aWRlcik7Cit9CisKK2Jvb2wg
V2ViR2VvbG9jYXRpb25NYW5hZ2VyUHJveHk6OmlzVXBkYXRpbmcoY29uc3QgUGVyRG9tYWluRGF0
YSYpIGNvbnN0Cit7CisgICAgZm9yIChhdXRvJiBwZXJEb21haW5EYXRhIDogbV9wZXJEb21haW5E
YXRhLnZhbHVlcygpKSB7CisgICAgICAgIGlmICghcGVyRG9tYWluRGF0YS0+d2F0Y2hlcnMuaXNF
bXB0eSgpKQorICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfQorICAgIHJldHVybiBmYWxz
ZTsKK30KKworCitib29sIFdlYkdlb2xvY2F0aW9uTWFuYWdlclByb3h5Ojppc0hpZ2hBY2N1cmFj
eUVuYWJsZWQoY29uc3QgUGVyRG9tYWluRGF0YSYpIGNvbnN0Cit7CisgICAgZm9yIChhdXRvJiBw
ZXJEb21haW5EYXRhIDogbV9wZXJEb21haW5EYXRhLnZhbHVlcygpKSB7CisgICAgICAgIGlmICgh
cGVyRG9tYWluRGF0YS0+d2F0Y2hlcnNOZWVkaW5nSGlnaEFjY3VyYWN5LmlzRW1wdHkoKSkKKyAg
ICAgICAgICAgIHJldHVybiB0cnVlOworICAgIH0KKyAgICByZXR1cm4gZmFsc2U7Cit9CisKK3Zv
aWQgV2ViR2VvbG9jYXRpb25NYW5hZ2VyUHJveHk6OnByb3ZpZGVyU3RhcnRVcGRhdGluZyhQZXJE
b21haW5EYXRhJiBwZXJEb21haW5EYXRhLCBjb25zdCBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFp
biYpCit7CisgICAgaWYgKCFtX3Byb3ZpZGVyKQorICAgICAgICByZXR1cm47CisKKyAgICBtX3By
b3ZpZGVyLT5zZXRFbmFibGVIaWdoQWNjdXJhY3koKnRoaXMsIGlzSGlnaEFjY3VyYWN5RW5hYmxl
ZChwZXJEb21haW5EYXRhKSk7CisgICAgbV9wcm92aWRlci0+c3RhcnRVcGRhdGluZygqdGhpcyk7
Cit9CisKK3ZvaWQgV2ViR2VvbG9jYXRpb25NYW5hZ2VyUHJveHk6OnByb3ZpZGVyU3RvcFVwZGF0
aW5nKFBlckRvbWFpbkRhdGEmKQoreworICAgIGlmIChtX3Byb3ZpZGVyKQorICAgICAgICBtX3By
b3ZpZGVyLT5zdG9wVXBkYXRpbmcoKnRoaXMpOworfQogCi0gICAgYm9vbCBoaWdoQWNjdXJhY3lT
aG91bGRCZUVuYWJsZWQgPSBpc0hpZ2hBY2N1cmFjeUVuYWJsZWQoKTsKLSAgICBpZiAoaXNVcGRh
dGluZygpICYmIGhpZ2hBY2N1cmFjeVdhc0VuYWJsZWQgIT0gaGlnaEFjY3VyYWN5U2hvdWxkQmVF
bmFibGVkKQotICAgICAgICBtX3Byb3ZpZGVyLT5zZXRFbmFibGVIaWdoQWNjdXJhY3koKnRoaXMs
IGhpZ2hBY2N1cmFjeVNob3VsZEJlRW5hYmxlZCk7Cit2b2lkIFdlYkdlb2xvY2F0aW9uTWFuYWdl
clByb3h5Ojpwcm92aWRlclNldEVuYWJsZWRIaWdoQWNjdXJhY3koUGVyRG9tYWluRGF0YSYsIGJv
b2wgZW5hYmxlZCkKK3sKKyAgICBpZiAobV9wcm92aWRlcikKKyAgICAgICAgbV9wcm92aWRlci0+
c2V0RW5hYmxlSGlnaEFjY3VyYWN5KCp0aGlzLCBlbmFibGVkKTsKIH0KKyNlbmRpZiAvLyAhUExB
VEZPUk0oSU9TX0ZBTUlMWSkKIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkdlb2xvY2F0aW9uTWFuYWdlclByb3h5LmggYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJHZW9sb2NhdGlvbk1hbmFnZXJQcm94eS5oCmluZGV4
IDc0OTM2ZTQ1YTBkODM4M2E4YjRiM2Q2ZDU3OGM5YmQyMmJlM2ZhNWUuLmVmMTFmNGNiMDZiMDRl
ZTA1ZTIyMDIxNmY4ZDI4NjQ0ZGEwZjRmNjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL1dlYkdlb2xvY2F0aW9uTWFuYWdlclByb3h5LmgKKysrIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvV2ViR2VvbG9jYXRpb25NYW5hZ2VyUHJveHkuaApAQCAtMSw1ICsxLDUgQEAKIC8q
Ci0gKiBDb3B5cmlnaHQgKEMpIDIwMTEsIDIwMTIsIDIwMTMgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDExLTIwMjIgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0zMSw5ICsz
MSwxNSBAQAogI2luY2x1ZGUgIldlYkNvbnRleHRTdXBwbGVtZW50LmgiCiAjaW5jbHVkZSAiV2Vi
UGFnZVByb3h5SWRlbnRpZmllci5oIgogI2luY2x1ZGUgPFdlYkNvcmUvR2VvbG9jYXRpb25Qb3Np
dGlvbkRhdGEuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL1JlZ2lzdHJhYmxlRG9tYWluLmg+CisjaW5j
bHVkZSA8d3RmL0hhc2hNYXAuaD4KICNpbmNsdWRlIDx3dGYvSGFzaFNldC5oPgogI2luY2x1ZGUg
PHd0Zi90ZXh0L1dURlN0cmluZy5oPgogCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKKyNpbmNs
dWRlIDxXZWJDb3JlL0NvcmVMb2NhdGlvbkdlb2xvY2F0aW9uUHJvdmlkZXIuaD4KKyNlbmRpZgor
CiBuYW1lc3BhY2UgQVBJIHsKIGNsYXNzIEdlb2xvY2F0aW9uUHJvdmlkZXI7CiB9CkBAIC00Mywy
MCArNDksMjMgQEAgbmFtZXNwYWNlIFdlYktpdCB7CiBjbGFzcyBXZWJHZW9sb2NhdGlvblBvc2l0
aW9uOwogY2xhc3MgV2ViUHJvY2Vzc1Bvb2w7CiAKLWNsYXNzIFdlYkdlb2xvY2F0aW9uTWFuYWdl
clByb3h5IDogcHVibGljIEFQSTo6T2JqZWN0SW1wbDxBUEk6Ok9iamVjdDo6VHlwZTo6R2VvbG9j
YXRpb25NYW5hZ2VyPiwgcHVibGljIFdlYkNvbnRleHRTdXBwbGVtZW50LCBwcml2YXRlIElQQzo6
TWVzc2FnZVJlY2VpdmVyIHsKK2NsYXNzIFdlYkdlb2xvY2F0aW9uTWFuYWdlclByb3h5IDogcHVi
bGljIEFQSTo6T2JqZWN0SW1wbDxBUEk6Ok9iamVjdDo6VHlwZTo6R2VvbG9jYXRpb25NYW5hZ2Vy
PiwgcHVibGljIFdlYkNvbnRleHRTdXBwbGVtZW50LCBwcml2YXRlIElQQzo6TWVzc2FnZVJlY2Vp
dmVyCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKKyAgICAsIHB1YmxpYyBXZWJDb3JlOjpDb3Jl
TG9jYXRpb25HZW9sb2NhdGlvblByb3ZpZGVyOjpDbGllbnQKKyNlbmRpZgorewogcHVibGljOgog
ICAgIHN0YXRpYyBjb25zdCBjaGFyKiBzdXBwbGVtZW50TmFtZSgpOwogCiAgICAgc3RhdGljIFJl
ZjxXZWJHZW9sb2NhdGlvbk1hbmFnZXJQcm94eT4gY3JlYXRlKFdlYlByb2Nlc3NQb29sKik7Cisg
ICAgfldlYkdlb2xvY2F0aW9uTWFuYWdlclByb3h5KCk7CiAKKyNpZiAhUExBVEZPUk0oSU9TX0ZB
TUlMWSkKICAgICB2b2lkIHNldFByb3ZpZGVyKHN0ZDo6dW5pcXVlX3B0cjxBUEk6Okdlb2xvY2F0
aW9uUHJvdmlkZXI+JiYpOworI2VuZGlmCiAKICAgICB2b2lkIHByb3ZpZGVyRGlkQ2hhbmdlUG9z
aXRpb24oV2ViR2VvbG9jYXRpb25Qb3NpdGlvbiopOwogICAgIHZvaWQgcHJvdmlkZXJEaWRGYWls
VG9EZXRlcm1pbmVQb3NpdGlvbihjb25zdCBTdHJpbmcmIGVycm9yTWVzc2FnZSA9IFN0cmluZygp
KTsKLSNpZiBQTEFURk9STShJT1NfRkFNSUxZKQotICAgIHZvaWQgcmVzZXRQZXJtaXNzaW9ucygp
OwotI2VuZGlmCi0gICAgY29uc3Qgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpHZW9sb2NhdGlvblBv
c2l0aW9uRGF0YT4mIGxhc3RQb3NpdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fbGFzdFBvc2l0aW9u
OyB9CiAKICAgICB1c2luZyBBUEk6Ok9iamVjdDo6cmVmOwogICAgIHVzaW5nIEFQSTo6T2JqZWN0
OjpkZXJlZjsKQEAgLTczLDE5ICs4Miw0MCBAQCBwcml2YXRlOgogICAgIC8vIElQQzo6TWVzc2Fn
ZVJlY2VpdmVyCiAgICAgdm9pZCBkaWRSZWNlaXZlTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJ
UEM6OkRlY29kZXImKSBvdmVycmlkZTsKIAotICAgIGJvb2wgaXNVcGRhdGluZygpIGNvbnN0IHsg
cmV0dXJuICFtX3VwZGF0ZVJlcXVlc3RlcnMuaXNFbXB0eSgpOyB9Ci0gICAgYm9vbCBpc0hpZ2hB
Y2N1cmFjeUVuYWJsZWQoKSBjb25zdCB7IHJldHVybiAhbV9oaWdoQWNjdXJhY3lSZXF1ZXN0ZXJz
LmlzRW1wdHkoKTsgfQorICAgIC8vIElQQyBtZXNzYWdlcy4KKyAgICB2b2lkIHN0YXJ0VXBkYXRp
bmcoSVBDOjpDb25uZWN0aW9uJiwgY29uc3QgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4mLCBX
ZWJQYWdlUHJveHlJZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIGF1dGhvcml6YXRpb25Ub2tlbiwg
Ym9vbCBlbmFibGVIaWdoQWNjdXJhY3kpOworICAgIHZvaWQgc3RvcFVwZGF0aW5nKElQQzo6Q29u
bmVjdGlvbiYsIGNvbnN0IFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluJik7CisgICAgdm9pZCBz
ZXRFbmFibGVIaWdoQWNjdXJhY3koSVBDOjpDb25uZWN0aW9uJiwgY29uc3QgV2ViQ29yZTo6UmVn
aXN0cmFibGVEb21haW4mLCBib29sKTsKIAotICAgIHZvaWQgc3RhcnRVcGRhdGluZyhJUEM6OkNv
bm5lY3Rpb24mLCBXZWJQYWdlUHJveHlJZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIGF1dGhvcml6
YXRpb25Ub2tlbik7Ci0gICAgdm9pZCBzdG9wVXBkYXRpbmcoSVBDOjpDb25uZWN0aW9uJik7Ci0g
ICAgdm9pZCByZW1vdmVSZXF1ZXN0ZXIoY29uc3QgSVBDOjpDb25uZWN0aW9uOjpDbGllbnQqKTsK
LSAgICB2b2lkIHNldEVuYWJsZUhpZ2hBY2N1cmFjeShJUEM6OkNvbm5lY3Rpb24mLCBib29sKTsK
KyNpZiBQTEFURk9STShJT1NfRkFNSUxZKQorICAgIC8vIENvcmVMb2NhdGlvbkdlb2xvY2F0aW9u
UHJvdmlkZXI6OkNsaWVudAorICAgIHZvaWQgcG9zaXRpb25DaGFuZ2VkKGNvbnN0IFN0cmluZyYg
d2Vic2l0ZUlkZW50aWZpZXIsIFdlYkNvcmU6Okdlb2xvY2F0aW9uUG9zaXRpb25EYXRhJiYpIGZp
bmFsOworICAgIHZvaWQgZXJyb3JPY2N1cnJlZChjb25zdCBTdHJpbmcmIHdlYnNpdGVJZGVudGlm
aWVyLCBjb25zdCBTdHJpbmcmIGVycm9yTWVzc2FnZSkgZmluYWw7CisgICAgdm9pZCByZXNldEdl
b2xvY2F0aW9uKGNvbnN0IFN0cmluZyYgd2Vic2l0ZUlkZW50aWZpZXIpIGZpbmFsOworI2VuZGlm
CiAKLSAgICBIYXNoU2V0PGNvbnN0IElQQzo6Q29ubmVjdGlvbjo6Q2xpZW50Kj4gbV91cGRhdGVS
ZXF1ZXN0ZXJzOwotICAgIEhhc2hTZXQ8Y29uc3QgSVBDOjpDb25uZWN0aW9uOjpDbGllbnQqPiBt
X2hpZ2hBY2N1cmFjeVJlcXVlc3RlcnM7CisgICAgc3RydWN0IFBlckRvbWFpbkRhdGEgeworICAg
ICAgICBXVEZfTUFLRV9TVFJVQ1RfRkFTVF9BTExPQ0FURUQ7CisgICAgICAgIEhhc2hTZXQ8SVBD
OjpDb25uZWN0aW9uOjpVbmlxdWVJRD4gd2F0Y2hlcnM7CisgICAgICAgIEhhc2hTZXQ8SVBDOjpD
b25uZWN0aW9uOjpVbmlxdWVJRD4gd2F0Y2hlcnNOZWVkaW5nSGlnaEFjY3VyYWN5OworICAgICAg
ICBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6Okdlb2xvY2F0aW9uUG9zaXRpb25EYXRhPiBsYXN0UG9z
aXRpb247CiAKKyAgICAgICAgLy8gRklYTUU6IFVzZSBmb3IgYWxsIENvY29hIHBvcnRzLgorI2lm
IFBMQVRGT1JNKElPU19GQU1JTFkpCisgICAgICAgIHN0ZDo6dW5pcXVlX3B0cjxXZWJDb3JlOjpD
b3JlTG9jYXRpb25HZW9sb2NhdGlvblByb3ZpZGVyPiBwcm92aWRlcjsKKyNlbmRpZgorICAgIH07
CisKKyAgICBib29sIGlzVXBkYXRpbmcoY29uc3QgUGVyRG9tYWluRGF0YSYpIGNvbnN0OworICAg
IGJvb2wgaXNIaWdoQWNjdXJhY3lFbmFibGVkKGNvbnN0IFBlckRvbWFpbkRhdGEmKSBjb25zdDsK
KyAgICB2b2lkIHByb3ZpZGVyU3RhcnRVcGRhdGluZyhQZXJEb21haW5EYXRhJiwgY29uc3QgV2Vi
Q29yZTo6UmVnaXN0cmFibGVEb21haW4mKTsKKyAgICB2b2lkIHByb3ZpZGVyU3RvcFVwZGF0aW5n
KFBlckRvbWFpbkRhdGEmKTsKKyAgICB2b2lkIHByb3ZpZGVyU2V0RW5hYmxlZEhpZ2hBY2N1cmFj
eShQZXJEb21haW5EYXRhJiwgYm9vbCBlbmFibGVkKTsKKworICAgIEhhc2hNYXA8V2ViQ29yZTo6
UmVnaXN0cmFibGVEb21haW4sIHN0ZDo6dW5pcXVlX3B0cjxQZXJEb21haW5EYXRhPj4gbV9wZXJE
b21haW5EYXRhOworI2lmICFQTEFURk9STShJT1NfRkFNSUxZKQogICAgIHN0ZDo6dW5pcXVlX3B0
cjxBUEk6Okdlb2xvY2F0aW9uUHJvdmlkZXI+IG1fcHJvdmlkZXI7Ci0gICAgc3RkOjpvcHRpb25h
bDxXZWJDb3JlOjpHZW9sb2NhdGlvblBvc2l0aW9uRGF0YT4gbV9sYXN0UG9zaXRpb247CisjZW5k
aWYKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvV2ViR2VvbG9jYXRpb25NYW5hZ2VyUHJveHkubWVzc2FnZXMuaW4gYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJHZW9sb2NhdGlvbk1hbmFnZXJQcm94eS5tZXNzYWdlcy5p
bgppbmRleCBlNWU5YzI3ZDE0YTVmYjcyNmZjYzJjODFmZjNlMTY1ZWEzZTg0MGJlLi45MDQxYTkw
YzI1MGY4YWRkNjhiYjEzYjNhYmI1NGJlYjY2Y2IyZDI3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9XZWJHZW9sb2NhdGlvbk1hbmFnZXJQcm94eS5tZXNzYWdlcy5pbgorKysg
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJHZW9sb2NhdGlvbk1hbmFnZXJQcm94eS5tZXNz
YWdlcy5pbgpAQCAtMjEsNyArMjEsNyBAQAogIyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogCiBtZXNzYWdlcyAtPiBX
ZWJHZW9sb2NhdGlvbk1hbmFnZXJQcm94eSB7Ci0gICAgU3RhcnRVcGRhdGluZyhXZWJLaXQ6Oldl
YlBhZ2VQcm94eUlkZW50aWZpZXIgcGFnZVByb3h5SUQsIFN0cmluZyBhdXRob3JpemF0aW9uVG9r
ZW4pIFdhbnRzQ29ubmVjdGlvbgotICAgIFN0b3BVcGRhdGluZygpIFdhbnRzQ29ubmVjdGlvbgot
ICAgIFNldEVuYWJsZUhpZ2hBY2N1cmFjeShib29sIGVuYWJsZWQpIFdhbnRzQ29ubmVjdGlvbgor
ICAgIFN0YXJ0VXBkYXRpbmcoV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4gcmVnaXN0cmFibGVE
b21haW4sIFdlYktpdDo6V2ViUGFnZVByb3h5SWRlbnRpZmllciBwYWdlUHJveHlJRCwgU3RyaW5n
IGF1dGhvcml6YXRpb25Ub2tlbiwgYm9vbCBlbmFibGVIaWdoQWNjdXJhY3kpIFdhbnRzQ29ubmVj
dGlvbgorICAgIFN0b3BVcGRhdGluZyhXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiByZWdpc3Ry
YWJsZURvbWFpbikgV2FudHNDb25uZWN0aW9uCisgICAgU2V0RW5hYmxlSGlnaEFjY3VyYWN5KFdl
YkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluIHJlZ2lzdHJhYmxlRG9tYWluLCBib29sIGVuYWJsZWQp
IFdhbnRzQ29ubmVjdGlvbgogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
aW9zL1dLR2VvbG9jYXRpb25Qcm92aWRlcklPUy5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L2lvcy9XS0dlb2xvY2F0aW9uUHJvdmlkZXJJT1MubW0KaW5kZXggZjVlOWZkN2JjMzQxMjk3YWY3
YjI0ZTY3NDE2MzMyY2Q5NmFkNzM5Yy4uNmYwNjk2ZDM4OTU3MjQ4NzJkNGVkYzlhNGEwNTlkNDIw
ZGQ4MTFjZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dLR2VvbG9j
YXRpb25Qcm92aWRlcklPUy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tH
ZW9sb2NhdGlvblByb3ZpZGVySU9TLm1tCkBAIC01MSw3ICs1MSw2IEBACiAjaW1wb3J0IDx3dGYv
VVJMLmg+CiAKIC8vIEZJWE1FOiBSZW1vdmUgdXNlIG9mIFdlYktpdDEgZnJvbSBXZWJLaXQyCi0j
aW1wb3J0IDxXZWJLaXQvV2ViR2VvbG9jYXRpb25Db3JlTG9jYXRpb25Qcm92aWRlci5oPgogI2lt
cG9ydCA8V2ViS2l0L1dlYkFsbG93RGVueVBvbGljeUxpc3RlbmVyLmg+CiAKIEFMTE9XX0RFUFJF
Q0FURURfREVDTEFSQVRJT05TX0JFR0lOCkBAIC01OSw5ICs1OCw2IEBAIEFMTE9XX0RFUFJFQ0FU
RURfREVDTEFSQVRJT05TX0JFR0lOCiBAaW50ZXJmYWNlIFdLR2VvbG9jYXRpb25Qcm92aWRlcklP
UyAoX1dLR2VvbG9jYXRpb25Db3JlTG9jYXRpb25MaXN0ZW5lcikgPF9XS0dlb2xvY2F0aW9uQ29y
ZUxvY2F0aW9uTGlzdGVuZXI+CiBAZW5kCiAKLUBpbnRlcmZhY2UgV0tMZWdhY3lDb3JlTG9jYXRp
b25Qcm92aWRlciA6IE5TT2JqZWN0PF9XS0dlb2xvY2F0aW9uQ29yZUxvY2F0aW9uUHJvdmlkZXIs
IFdlYkdlb2xvY2F0aW9uQ29yZUxvY2F0aW9uVXBkYXRlTGlzdGVuZXI+Ci1AZW5kCi0KIEBpbnRl
cmZhY2UgV0tXZWJBbGxvd0RlbnlQb2xpY3lMaXN0ZW5lciA6IE5TT2JqZWN0PFdlYkFsbG93RGVu
eVBvbGljeUxpc3RlbmVyPgogLSAoaWQpaW5pdFdpdGhDb21wbGV0aW9uSGFuZGxlcjooRnVuY3Rp
b248dm9pZChib29sKT4mJiljb21wbGV0aW9uSGFuZGxlcjsKIC0gKHZvaWQpZGVueU9ubHlUaGlz
UmVxdWVzdCBOT19SRVRVUk5fRFVFX1RPX0FTU0VSVDsKQEAgLTc5LDggKzc1LDcgQEAgc3RydWN0
IEdlb2xvY2F0aW9uUmVxdWVzdERhdGEgewogfTsKIAogQGltcGxlbWVudGF0aW9uIFdLR2VvbG9j
YXRpb25Qcm92aWRlcklPUyB7Ci0gICAgUmVmUHRyPFdlYktpdDo6V2ViR2VvbG9jYXRpb25NYW5h
Z2VyUHJveHk+IF9nZW9sb2NhdGlvbk1hbmFnZXI7Ci0gICAgUmV0YWluUHRyPGlkIDxfV0tHZW9s
b2NhdGlvbkNvcmVMb2NhdGlvblByb3ZpZGVyPj4gX2NvcmVMb2NhdGlvblByb3ZpZGVyOworICAg
IFJldGFpblB0cjxpZCA8X1dLR2VvbG9jYXRpb25Db3JlTG9jYXRpb25Qcm92aWRlcj4+IF9jbGll
bnRBdXRob3JpemF0aW9uUHJvdmlkZXI7CiAgICAgQk9PTCBfaXNXZWJDb3JlR2VvbG9jYXRpb25B
Y3RpdmU7CiAgICAgUmVmUHRyPFdlYktpdDo6V2ViR2VvbG9jYXRpb25Qb3NpdGlvbj4gX2xhc3RB
Y3RpdmVQb3NpdGlvbjsKICAgICBEZXF1ZTxHZW9sb2NhdGlvblJlcXVlc3REYXRhPiBfcmVxdWVz
dHNXYWl0aW5nRm9yQ29yZUxvY2F0aW9uQXV0aG9yaXphdGlvbjsKQEAgLTg4LDQ4ICs4MywxNiBA
QCBAaW1wbGVtZW50YXRpb24gV0tHZW9sb2NhdGlvblByb3ZpZGVySU9TIHsKIAogI3ByYWdtYSBt
YXJrIC0gV0tHZW9sb2NhdGlvblByb3ZpZGVyIGNhbGxiYWNrcyBpbXBsZW1lbnRhdGlvbi4KIAot
c3RhdGljIHZvaWQgc3RhcnRVcGRhdGluZ0NhbGxiYWNrKFdLR2VvbG9jYXRpb25NYW5hZ2VyUmVm
IGdlb2xvY2F0aW9uTWFuYWdlciwgY29uc3Qgdm9pZCogY2xpZW50SW5mbykKLXsKLSAgICBXS0dl
b2xvY2F0aW9uUHJvdmlkZXJJT1MgKmdlb2xvY2F0aW9uUHJvdmlkZXIgPSByZWludGVycHJldF9j
YXN0PFdLR2VvbG9jYXRpb25Qcm92aWRlcklPUyo+KGNvbnN0X2Nhc3Q8dm9pZCo+KGNsaWVudElu
Zm8pKTsKLSAgICBBU1NFUlQoW2dlb2xvY2F0aW9uUHJvdmlkZXIgaXNLaW5kT2ZDbGFzczpbV0tH
ZW9sb2NhdGlvblByb3ZpZGVySU9TIGNsYXNzXV0pOwotICAgIFtnZW9sb2NhdGlvblByb3ZpZGVy
IF9zdGFydFVwZGF0aW5nXTsKLX0KLQotc3RhdGljIHZvaWQgc3RvcFVwZGF0aW5nQ2FsbGJhY2so
V0tHZW9sb2NhdGlvbk1hbmFnZXJSZWYgZ2VvbG9jYXRpb25NYW5hZ2VyLCBjb25zdCB2b2lkKiBj
bGllbnRJbmZvKQotewotICAgIFdLR2VvbG9jYXRpb25Qcm92aWRlcklPUyAqZ2VvbG9jYXRpb25Q
cm92aWRlciA9IHJlaW50ZXJwcmV0X2Nhc3Q8V0tHZW9sb2NhdGlvblByb3ZpZGVySU9TKj4oY29u
c3RfY2FzdDx2b2lkKj4oY2xpZW50SW5mbykpOwotICAgIEFTU0VSVChbZ2VvbG9jYXRpb25Qcm92
aWRlciBpc0tpbmRPZkNsYXNzOltXS0dlb2xvY2F0aW9uUHJvdmlkZXJJT1MgY2xhc3NdXSk7Ci0g
ICAgW2dlb2xvY2F0aW9uUHJvdmlkZXIgX3N0b3BVcGRhdGluZ107Ci19Ci0KLXN0YXRpYyB2b2lk
IHNldEVuYWJsZUhpZ2hBY2N1cmFjeShXS0dlb2xvY2F0aW9uTWFuYWdlclJlZiBnZW9sb2NhdGlv
bk1hbmFnZXIsIGJvb2wgZW5hYmxlLCBjb25zdCB2b2lkKiBjbGllbnRJbmZvKQotewotICAgIFdL
R2VvbG9jYXRpb25Qcm92aWRlcklPUyAqZ2VvbG9jYXRpb25Qcm92aWRlciA9IHJlaW50ZXJwcmV0
X2Nhc3Q8V0tHZW9sb2NhdGlvblByb3ZpZGVySU9TKj4oY29uc3RfY2FzdDx2b2lkKj4oY2xpZW50
SW5mbykpOwotICAgIEFTU0VSVChbZ2VvbG9jYXRpb25Qcm92aWRlciBpc0tpbmRPZkNsYXNzOltX
S0dlb2xvY2F0aW9uUHJvdmlkZXJJT1MgY2xhc3NdXSk7Ci0gICAgW2dlb2xvY2F0aW9uUHJvdmlk
ZXIgX3NldEVuYWJsZUhpZ2hBY2N1cmFjeTplbmFibGVdOwotfQotCiAtICh2b2lkKV9zdGFydFVw
ZGF0aW5nCiB7Ci0gICAgX2lzV2ViQ29yZUdlb2xvY2F0aW9uQWN0aXZlID0gWUVTOwotICAgIFtf
Y29yZUxvY2F0aW9uUHJvdmlkZXIgc3RhcnRdOwotCi0gICAgLy8gSWYgd2UgaGF2ZSB0aGUgbGFz
dCBwb3NpdGlvbiwgaXQgaXMgZnJvbSB0aGUgaW5pdGlhbGl6YXRpb24gb3Igd2FybSB1cC4gSXQg
aXMgdGhlIGxhc3Qga25vd24KLSAgICAvLyBnb29kIHBvc2l0aW9uIHNvIHdlIGNhbiByZXR1cm4g
aXQgZGlyZWN0bHkuCi0gICAgaWYgKF9sYXN0QWN0aXZlUG9zaXRpb24pCi0gICAgICAgIF9nZW9s
b2NhdGlvbk1hbmFnZXItPnByb3ZpZGVyRGlkQ2hhbmdlUG9zaXRpb24oX2xhc3RBY3RpdmVQb3Np
dGlvbi5nZXQoKSk7CiB9CiAKIC0gKHZvaWQpX3N0b3BVcGRhdGluZwogewotICAgIF9pc1dlYkNv
cmVHZW9sb2NhdGlvbkFjdGl2ZSA9IE5POwotICAgIFtfY29yZUxvY2F0aW9uUHJvdmlkZXIgc3Rv
cF07Ci0gICAgX2xhc3RBY3RpdmVQb3NpdGlvbiA9IG51bGxwdHI7CiB9CiAKIC0gKHZvaWQpX3Nl
dEVuYWJsZUhpZ2hBY2N1cmFjeTooQk9PTCllbmFibGVIaWdoQWNjdXJhY3kKIHsKLSAgICBbX2Nv
cmVMb2NhdGlvblByb3ZpZGVyIHNldEVuYWJsZUhpZ2hBY2N1cmFjeTplbmFibGVIaWdoQWNjdXJh
Y3ldOwogfQogCiAjcHJhZ21hIG1hcmsgLSBQdWJsaWMgQVBJIGltcGxlbWVudGF0aW9uLgpAQCAt
MTQ2LDI1ICsxMDksMzMgQEAgLSAoaWQpaW5pdFdpdGhQcm9jZXNzUG9vbDooV2ViS2l0OjpXZWJQ
cm9jZXNzUG9vbCYpcHJvY2Vzc1Bvb2wKICAgICBzZWxmID0gW3N1cGVyIGluaXRdOwogICAgIGlm
ICghc2VsZikKICAgICAgICAgcmV0dXJuIG5pbDsKLSAgICBfZ2VvbG9jYXRpb25NYW5hZ2VyID0g
cHJvY2Vzc1Bvb2wuc3VwcGxlbWVudDxXZWJLaXQ6OldlYkdlb2xvY2F0aW9uTWFuYWdlclByb3h5
PigpOwotICAgIFdLR2VvbG9jYXRpb25Qcm92aWRlclYxIHByb3ZpZGVyQ2FsbGJhY2sgPSB7Ci0g
ICAgICAgIHsgMSwgc2VsZiB9LAotICAgICAgICBzdGFydFVwZGF0aW5nQ2FsbGJhY2ssCi0gICAg
ICAgIHN0b3BVcGRhdGluZ0NhbGxiYWNrLAotICAgICAgICBzZXRFbmFibGVIaWdoQWNjdXJhY3kK
LSAgICB9OwotICAgIFdLR2VvbG9jYXRpb25NYW5hZ2VyU2V0UHJvdmlkZXIodG9BUEkoX2dlb2xv
Y2F0aW9uTWFuYWdlci5nZXQoKSksICZwcm92aWRlckNhbGxiYWNrLmJhc2UpOwotICAgIF9jb3Jl
TG9jYXRpb25Qcm92aWRlciA9IHdyYXBwZXIocHJvY2Vzc1Bvb2wpLl9jb3JlTG9jYXRpb25Qcm92
aWRlciA/OiBhZG9wdE5TKHN0YXRpY19jYXN0PGlkIDxfV0tHZW9sb2NhdGlvbkNvcmVMb2NhdGlv
blByb3ZpZGVyPj4oW1tXS0xlZ2FjeUNvcmVMb2NhdGlvblByb3ZpZGVyIGFsbG9jXSBpbml0XSkp
OwotICAgIFtfY29yZUxvY2F0aW9uUHJvdmlkZXIgc2V0TGlzdGVuZXI6c2VsZl07CisKKyAgICAv
LyBGSVhNRTogU29tZSBjbGllbnRzIHVzZSB0aGlzIFNQSSB0byBzZXQgYSBfY29yZUxvY2F0aW9u
UHJvdmlkZXIgdGhhdCBmYWlscyBhbGwgYXV0aG9yaXphdGlvbnMgYXMgYSB3YXkgdG8gZGlzYWJs
ZSB0aGUgR2VvbG9jYXRpb24gQVBJLgorICAgIC8vIFRoZXkgc2hvdWxkIGp1c3QgaW1wbGVtZW50
IHJlcXVlc3RHZW9sb2NhdGlvbkF1dGhvcml6YXRpb25Gb3JVUkwgb24gdGhlIFdLV2ViVmlldyBp
bnN0ZWFkLCBzbyB3ZSBjYW4gZHJvcCB0aGlzIGxvZ2ljIGVudGlyZWx5LgorICAgIF9jbGllbnRB
dXRob3JpemF0aW9uUHJvdmlkZXIgPSB3cmFwcGVyKHByb2Nlc3NQb29sKS5fY29yZUxvY2F0aW9u
UHJvdmlkZXI7CisgICAgaWYgKF9jbGllbnRBdXRob3JpemF0aW9uUHJvdmlkZXIpCisgICAgICAg
IFtfY2xpZW50QXV0aG9yaXphdGlvblByb3ZpZGVyIHNldExpc3RlbmVyOnNlbGZdOworCiAgICAg
cmV0dXJuIHNlbGY7CiB9CiAKIC0gKHZvaWQpZGVjaWRlUG9saWN5Rm9yR2VvbG9jYXRpb25SZXF1
ZXN0RnJvbU9yaWdpbjooV2ViS2l0OjpGcmFtZUluZm9EYXRhJiYpZnJhbWVJbmZvIGNvbXBsZXRp
b25IYW5kbGVyOihGdW5jdGlvbjx2b2lkKGJvb2wpPiYmKWNvbXBsZXRpb25IYW5kbGVyIHZpZXc6
KFdLV2ViVmlldyAqKWNvbnRlbnRWaWV3CiB7Ci0gICAgLy8gU3RlcCAxOiBhc2sgdGhlIHVzZXIg
aWYgdGhlIGFwcCBjYW4gdXNlIEdlb2xvY2F0aW9uLgorICAgIFdlYkNvcmU6OlJlZ2lzdHJhYmxl
RG9tYWluIHJlZ2lzdHJhYmxlRG9tYWluKGZyYW1lSW5mby5zZWN1cml0eU9yaWdpbik7CiAgICAg
R2VvbG9jYXRpb25SZXF1ZXN0RGF0YSBnZW9sb2NhdGlvblJlcXVlc3REYXRhIHsgW2NvbnRlbnRW
aWV3IFVSTF0sIFdURk1vdmUoZnJhbWVJbmZvKSwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlciks
IGNvbnRlbnRWaWV3IH07CiAgICAgX3JlcXVlc3RzV2FpdGluZ0ZvckNvcmVMb2NhdGlvbkF1dGhv
cml6YXRpb24uYXBwZW5kKFdURk1vdmUoZ2VvbG9jYXRpb25SZXF1ZXN0RGF0YSkpOwotICAgIFtf
Y29yZUxvY2F0aW9uUHJvdmlkZXIgcmVxdWVzdEdlb2xvY2F0aW9uQXV0aG9yaXphdGlvbl07Cisg
ICAgaWYgKF9jbGllbnRBdXRob3JpemF0aW9uUHJvdmlkZXIpIHsKKyAgICAgICAgLy8gU3RlcCAx
OiBhc2sgdGhlIHVzZXIgaWYgdGhlIGFwcCBjYW4gdXNlIEdlb2xvY2F0aW9uLgorICAgICAgICBb
X2NsaWVudEF1dGhvcml6YXRpb25Qcm92aWRlciByZXF1ZXN0R2VvbG9jYXRpb25BdXRob3JpemF0
aW9uXTsKKyAgICB9IGVsc2UgeworICAgICAgICAvLyBTdGVwIDE6IGFzayBDb3JlTG9jYXRpb24g
aWYgdGhlIGFwcCBjYW4gdXNlIEdlb2xvY2F0aW9uLgorICAgICAgICBXZWJDb3JlOjpDb3JlTG9j
YXRpb25HZW9sb2NhdGlvblByb3ZpZGVyOjpyZXF1ZXN0QXV0aG9yaXphdGlvbihyZWdpc3RyYWJs
ZURvbWFpbiwgW3NlbGYsIHN0cm9uZ1NlbGYgPSByZXRhaW5QdHIoc2VsZildKGJvb2wgYXV0aG9y
aXplZCkgeworICAgICAgICAgICAgaWYgKGF1dGhvcml6ZWQpCisgICAgICAgICAgICAgICAgW3Nl
bGYgZ2VvbG9jYXRpb25BdXRob3JpemF0aW9uR3JhbnRlZF07CisgICAgICAgICAgICBlbHNlCisg
ICAgICAgICAgICAgICAgW3NlbGYgZ2VvbG9jYXRpb25BdXRob3JpemF0aW9uRGVuaWVkXTsKKyAg
ICAgICAgfSk7CisgICAgfQogfQogQGVuZAogCkBAIC0xNzQsNyArMTQ1LDcgQEAgQGltcGxlbWVu
dGF0aW9uIFdLR2VvbG9jYXRpb25Qcm92aWRlcklPUyAoV2ViR2VvbG9jYXRpb25Db3JlTG9jYXRp
b25VcGRhdGVMaXN0ZW4KIAogLSAodm9pZClnZW9sb2NhdGlvbkF1dGhvcml6YXRpb25HcmFudGVk
CiB7Ci0gICAgLy8gU3RlcCAyOiBhc2sgdGhlIHVzZXIgaWYgdGhpcyBwYXJ0aWN1bGFyIHBhZ2Ug
Y2FuIHVzZSBnZWxvY2F0aW9uLgorICAgIC8vIFN0ZXAgMjogYXNrIHRoZSB1c2VyIGlmIHRoaXMg
cGFydGljdWxhciBwYWdlIGNhbiB1c2UgZ2VvbG9jYXRpb24uCiAgICAgaWYgKF9yZXF1ZXN0c1dh
aXRpbmdGb3JDb3JlTG9jYXRpb25BdXRob3JpemF0aW9uLmlzRW1wdHkoKSkKICAgICAgICAgcmV0
dXJuOwogCkBAIC0yMTAsOTMgKzE4MSwxNCBAQCAtICh2b2lkKWdlb2xvY2F0aW9uQXV0aG9yaXph
dGlvbkRlbmllZAogCiAtICh2b2lkKXBvc2l0aW9uQ2hhbmdlZDooX1dLR2VvbG9jYXRpb25Qb3Np
dGlvbiAqKXBvc2l0aW9uCiB7Ci0gICAgX2xhc3RBY3RpdmVQb3NpdGlvbiA9IHBvc2l0aW9uLT5f
Z2VvbG9jYXRpb25Qb3NpdGlvbi5nZXQoKTsKLSAgICBfZ2VvbG9jYXRpb25NYW5hZ2VyLT5wcm92
aWRlckRpZENoYW5nZVBvc2l0aW9uKF9sYXN0QWN0aXZlUG9zaXRpb24uZ2V0KCkpOwotfQotCi0t
ICh2b2lkKWVycm9yT2NjdXJyZWQ6KE5TU3RyaW5nICopZXJyb3JNZXNzYWdlCi17Ci0gICAgX2dl
b2xvY2F0aW9uTWFuYWdlci0+cHJvdmlkZXJEaWRGYWlsVG9EZXRlcm1pbmVQb3NpdGlvbihlcnJv
ck1lc3NhZ2UpOwotfQotCi0tICh2b2lkKXJlc2V0R2VvbG9jYXRpb24KLXsKLSAgICBfZ2VvbG9j
YXRpb25NYW5hZ2VyLT5yZXNldFBlcm1pc3Npb25zKCk7Ci19Ci0KLUBlbmQKLQotIyBwcmFnbWEg
bWFyayAtIEltcGxlbWVudGF0aW9uIG9mIFdLTGVnYWN5Q29yZUxvY2F0aW9uUHJvdmlkZXIKLQot
QGltcGxlbWVudGF0aW9uIFdLTGVnYWN5Q29yZUxvY2F0aW9uUHJvdmlkZXIgewotICAgIGlkIDxf
V0tHZW9sb2NhdGlvbkNvcmVMb2NhdGlvbkxpc3RlbmVyPiBfbGlzdGVuZXI7Ci0gICAgUmV0YWlu
UHRyPFdlYkdlb2xvY2F0aW9uQ29yZUxvY2F0aW9uUHJvdmlkZXI+IF9wcm92aWRlcjsKLX0KLQot
Ly8gPF9XS0dlb2xvY2F0aW9uQ29yZUxvY2F0aW9uUHJvdmlkZXI+IE1ldGhvZHMKLQotLSAodm9p
ZClzZXRMaXN0ZW5lcjooaWQ8X1dLR2VvbG9jYXRpb25Db3JlTG9jYXRpb25MaXN0ZW5lcj4pbGlz
dGVuZXIKLXsKLSAgICBBU1NFUlQobGlzdGVuZXIgJiYgIV9saXN0ZW5lciAmJiAhX3Byb3ZpZGVy
KTsKLSAgICBfbGlzdGVuZXIgPSBsaXN0ZW5lcjsKLSAgICBfcHJvdmlkZXIgPSBhZG9wdE5TKFtb
V2ViR2VvbG9jYXRpb25Db3JlTG9jYXRpb25Qcm92aWRlciBhbGxvY10gaW5pdFdpdGhMaXN0ZW5l
cjpzZWxmXSk7Ci19Ci0KLS0gKHZvaWQpcmVxdWVzdEdlb2xvY2F0aW9uQXV0aG9yaXphdGlvbgot
ewotICAgIEFTU0VSVChfcHJvdmlkZXIpOwotICAgIFtfcHJvdmlkZXIgcmVxdWVzdEdlb2xvY2F0
aW9uQXV0aG9yaXphdGlvbl07Ci19Ci0KLS0gKHZvaWQpc3RhcnQKLXsKLSAgICBBU1NFUlQoX3By
b3ZpZGVyKTsKLSAgICBbX3Byb3ZpZGVyIHN0YXJ0XTsKLX0KLQotLSAodm9pZClzdG9wCi17Ci0g
ICAgQVNTRVJUKF9wcm92aWRlcik7Ci0gICAgW19wcm92aWRlciBzdG9wXTsKLX0KLQotLSAodm9p
ZClzZXRFbmFibGVIaWdoQWNjdXJhY3k6KEJPT0wpZmxhZwotewotICAgIEFTU0VSVChfcHJvdmlk
ZXIpOwotICAgIFtfcHJvdmlkZXIgc2V0RW5hYmxlSGlnaEFjY3VyYWN5OmZsYWddOwotfQotCi0v
LyA8V2ViR2VvbG9jYXRpb25Db3JlTG9jYXRpb25VcGRhdGVMaXN0ZW5lcj4gTWV0aG9kcwotCi0t
ICh2b2lkKWdlb2xvY2F0aW9uQXV0aG9yaXphdGlvbkdyYW50ZWQKLXsKLSAgICBBU1NFUlQoX2xp
c3RlbmVyKTsKLSAgICBbX2xpc3RlbmVyIGdlb2xvY2F0aW9uQXV0aG9yaXphdGlvbkdyYW50ZWRd
OwotfQotCi0tICh2b2lkKWdlb2xvY2F0aW9uQXV0aG9yaXphdGlvbkRlbmllZAotewotICAgIEFT
U0VSVChfbGlzdGVuZXIpOwotICAgIFtfbGlzdGVuZXIgZ2VvbG9jYXRpb25BdXRob3JpemF0aW9u
RGVuaWVkXTsKLX0KLQotLSAodm9pZClwb3NpdGlvbkNoYW5nZWQ6KFdlYkNvcmU6Okdlb2xvY2F0
aW9uUG9zaXRpb25EYXRhJiYpY29yZVBvc2l0aW9uCi17Ci0gICAgQVNTRVJUKF9saXN0ZW5lcik7
Ci0gICAgYXV0byBwb3NpdGlvbiA9IFdlYktpdDo6V2ViR2VvbG9jYXRpb25Qb3NpdGlvbjo6Y3Jl
YXRlKFdURk1vdmUoY29yZVBvc2l0aW9uKSk7Ci0gICAgW19saXN0ZW5lciBwb3NpdGlvbkNoYW5n
ZWQ6d3JhcHBlcihwb3NpdGlvbi5nZXQoKSldOwogfQogCiAtICh2b2lkKWVycm9yT2NjdXJyZWQ6
KE5TU3RyaW5nICopZXJyb3JNZXNzYWdlCiB7Ci0gICAgQVNTRVJUKF9saXN0ZW5lcik7Ci0gICAg
W19saXN0ZW5lciBlcnJvck9jY3VycmVkOmVycm9yTWVzc2FnZV07CiB9CiAKIC0gKHZvaWQpcmVz
ZXRHZW9sb2NhdGlvbgogewotICAgIEFTU0VSVChfbGlzdGVuZXIpOwotICAgIFtfbGlzdGVuZXIg
cmVzZXRHZW9sb2NhdGlvbl07CiB9CiAKIEBlbmQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
V2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViS2l0L1dlYktpdC54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IGY3YmVlNTQzY2UwZmMwYWMwNmQ3Njg1MWVl
MjE3ZGY3YWQ4NDAwYjkuLmM1M2UwNDEyYmI4YzE0MmFkNTdlOGIzMjlhMGM2ZDY4OTFkNzZiNGMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2oKKysrIGIvU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpA
QCAtNDMxNiw2ICs0MzE2LDcgQEAKIAkJNDZDRTNCMTAyM0Q4QzgzRDAwMTZBOTZBIC8qIFdlYkJh
Y2tGb3J3YXJkTGlzdENvdW50cy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBX
ZWJCYWNrRm9yd2FyZExpc3RDb3VudHMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
NDZENDhGQ0MyNzk5RDdERDAwN0QyMDE0IC8qIFdlYlNoYXJlZFdvcmtlclNlcnZlclRvQ29udGV4
dENvbm5lY3Rpb24uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gV2ViU2hhcmVkV29ya2VyU2VydmVy
VG9Db250ZXh0Q29ubmVjdGlvbi5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQ2
RDQ4RkNEMjc5OUQ3REUwMDdEMjAxNCAvKiBXZWJTaGFyZWRXb3JrZXJTZXJ2ZXJUb0NvbnRleHRD
b25uZWN0aW9uLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYlNoYXJlZFdvcmtlclNlcnZlclRvQ29udGV4
dENvbm5lY3Rpb24uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNDZEQTI4NTcyN0I3
M0U3NjAwODlEMzM5IC8qIFdlYkdlb2xvY2F0aW9uTWFuYWdlclByb3h5Q29jb2EuY3BwICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAuY3BwOyBwYXRoID0gV2ViR2VvbG9jYXRpb25NYW5hZ2VyUHJveHlDb2NvYS5jcHA7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQ2REYwNjM5MUYzOTA1RTUwMDE5ODBCQiAvKiBOZXR3
b3JrQ09SU1ByZWZsaWdodENoZWNrZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3Bw
OyBwYXRoID0gTmV0d29ya0NPUlNQcmVmbGlnaHRDaGVja2VyLmNwcDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJNDZERjA2M0ExRjM5MDVFNTAwMTk4MEJCIC8qIE5ldHdvcmtDT1JTUHJl
ZmxpZ2h0Q2hlY2tlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBOZXR3b3Jr
Q09SU1ByZWZsaWdodENoZWNrZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDZF
OTc2MEEyNzU3RjZDOTAwQUNERDM3IC8qIFdlYkJyb2FkY2FzdENoYW5uZWxSZWdpc3RyeS5tZXNz
YWdlcy5pbiAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBXZWJCcm9hZGNhc3RDaGFubmVsUmVnaXN0
cnkubWVzc2FnZXMuaW47IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC03NjAzLDYgKzc2
MDQsNyBAQAogCQkJCTUyRDVBMUFBMUM1NzQ5NEUwMERFMzRBMyAvKiBWaWRlb0Z1bGxzY3JlZW5N
YW5hZ2VyUHJveHkuaCAqLywKIAkJCQk1MkQ1QTFBQjFDNTc0OTRFMDBERTM0QTMgLyogVmlkZW9G
dWxsc2NyZWVuTWFuYWdlclByb3h5Lm1lc3NhZ2VzLmluICovLAogCQkJCTUyRDVBMUFDMUM1NzQ5
NEUwMERFMzRBMyAvKiBWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyUHJveHkubW0gKi8sCisJCQkJNDZE
QTI4NTcyN0I3M0U3NjAwODlEMzM5IC8qIFdlYkdlb2xvY2F0aW9uTWFuYWdlclByb3h5Q29jb2Eu
Y3BwICovLAogCQkJCUMxOEYzQTEzMjU2MzMyQTYwMDc5N0U2NiAvKiBXZWJJbnNwZWN0b3JQcmVm
ZXJlbmNlT2JzZXJ2ZXIuaCAqLywKIAkJCQlDMThGM0ExNDI1NjMzMzQzMDA3OTdFNjYgLyogV2Vi
SW5zcGVjdG9yUHJlZmVyZW5jZU9ic2VydmVyLm1tICovLAogCQkJCUNERjFCOTE5MjY3MDIxRDYw
MDA3RUMxMCAvKiBXZWJLaXRTd2lmdFNvZnRMaW5rLmggKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvR2VvbG9jYXRpb24vV2ViR2VvbG9jYXRpb25NYW5hZ2VyLmNwcCBi
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HZW9sb2NhdGlvbi9XZWJHZW9sb2NhdGlvbk1hbmFn
ZXIuY3BwCmluZGV4IDVhOWM5ZjRkMmExY2Q2NmE0YjY3NTliNTkzODdlYTJjZjU1YjJhYTguLmQ1
OWZhOWRiYTZkMGQwOTJjYWFlOWE0YWNlMjMyOWU5YTQ4ZDIwZDcgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9HZW9sb2NhdGlvbi9XZWJHZW9sb2NhdGlvbk1hbmFnZXIuY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HZW9sb2NhdGlvbi9XZWJHZW9sb2NhdGlv
bk1hbmFnZXIuY3BwCkBAIC0zOSw2ICszOSwxNCBAQAogbmFtZXNwYWNlIFdlYktpdCB7CiB1c2lu
ZyBuYW1lc3BhY2UgV2ViQ29yZTsKIAorc3RhdGljIFJlZ2lzdHJhYmxlRG9tYWluIHJlZ2lzdHJh
YmxlRG9tYWluRm9yUGFnZShXZWJQYWdlJiBwYWdlKQoreworICAgIGF1dG8qIGRvY3VtZW50ID0g
cGFnZS5jb3JlUGFnZSgpID8gcGFnZS5jb3JlUGFnZSgpLT5tYWluRnJhbWUoKS5kb2N1bWVudCgp
IDogbnVsbHB0cjsKKyAgICBpZiAoIWRvY3VtZW50KQorICAgICAgICByZXR1cm4gUmVnaXN0cmFi
bGVEb21haW4geyB9OworICAgIHJldHVybiBSZWdpc3RyYWJsZURvbWFpbiB7IGRvY3VtZW50LT51
cmwoKSB9OworfQorCiBjb25zdCBjaGFyKiBXZWJHZW9sb2NhdGlvbk1hbmFnZXI6OnN1cHBsZW1l
bnROYW1lKCkKIHsKICAgICByZXR1cm4gIldlYkdlb2xvY2F0aW9uTWFuYWdlciI7CkBAIC01MCw4
OCArNTgsMTI1IEBAIFdlYkdlb2xvY2F0aW9uTWFuYWdlcjo6V2ViR2VvbG9jYXRpb25NYW5hZ2Vy
KFdlYlByb2Nlc3MmIHByb2Nlc3MpCiAgICAgbV9wcm9jZXNzLmFkZE1lc3NhZ2VSZWNlaXZlcihN
ZXNzYWdlczo6V2ViR2VvbG9jYXRpb25NYW5hZ2VyOjptZXNzYWdlUmVjZWl2ZXJOYW1lKCksICp0
aGlzKTsKIH0KIAotdm9pZCBXZWJHZW9sb2NhdGlvbk1hbmFnZXI6OnJlZ2lzdGVyV2ViUGFnZShX
ZWJQYWdlJiBwYWdlLCBjb25zdCBTdHJpbmcmIGF1dGhvcml6YXRpb25Ub2tlbikKK1dlYkdlb2xv
Y2F0aW9uTWFuYWdlcjo6fldlYkdlb2xvY2F0aW9uTWFuYWdlcigpID0gZGVmYXVsdDsKKwordm9p
ZCBXZWJHZW9sb2NhdGlvbk1hbmFnZXI6OnJlZ2lzdGVyV2ViUGFnZShXZWJQYWdlJiBwYWdlLCBj
b25zdCBTdHJpbmcmIGF1dGhvcml6YXRpb25Ub2tlbiwgYm9vbCBuZWVkc0hpZ2hBY2N1cmFjeSkK
IHsKLSAgICBib29sIHdhc1VwZGF0aW5nID0gaXNVcGRhdGluZygpOworICAgIGF1dG8gcmVnaXN0
cmFibGVEb21haW4gPSByZWdpc3RyYWJsZURvbWFpbkZvclBhZ2UocGFnZSk7CisgICAgaWYgKHJl
Z2lzdHJhYmxlRG9tYWluLmlzRW1wdHkoKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgYXV0byYg
cGFnZVNldHMgPSBtX3BhZ2VTZXRzLmVuc3VyZShyZWdpc3RyYWJsZURvbWFpbiwgW10geworICAg
ICAgICByZXR1cm4gUGFnZVNldHMgeyB9OworICAgIH0pLml0ZXJhdG9yLT52YWx1ZTsKKyAgICBi
b29sIHdhc1VwZGF0aW5nID0gIXBhZ2VTZXRzLnBhZ2VTZXQuY29tcHV0ZXNFbXB0eSgpOwogCi0g
ICAgbV9wYWdlU2V0LmFkZChwYWdlKTsKKyAgICBwYWdlU2V0cy5wYWdlU2V0LmFkZChwYWdlKTsK
KyAgICBpZiAobmVlZHNIaWdoQWNjdXJhY3kpCisgICAgICAgIHBhZ2VTZXRzLmhpZ2hBY2N1cmFj
eVBhZ2VTZXQuYWRkKHBhZ2UpOworICAgIG1fcGFnZVRvUmVnaXN0cmFibGVEb21haW4uYWRkKCZw
YWdlLCByZWdpc3RyYWJsZURvbWFpbik7CiAKICAgICBpZiAoIXdhc1VwZGF0aW5nKQotICAgICAg
ICBtX3Byb2Nlc3MucGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+c2VuZChNZXNzYWdlczo6V2Vi
R2VvbG9jYXRpb25NYW5hZ2VyUHJveHk6OlN0YXJ0VXBkYXRpbmcocGFnZS53ZWJQYWdlUHJveHlJ
ZGVudGlmaWVyKCksIGF1dGhvcml6YXRpb25Ub2tlbiksIDApOworICAgICAgICBtX3Byb2Nlc3Mu
cGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+c2VuZChNZXNzYWdlczo6V2ViR2VvbG9jYXRpb25N
YW5hZ2VyUHJveHk6OlN0YXJ0VXBkYXRpbmcocmVnaXN0cmFibGVEb21haW4sIHBhZ2Uud2ViUGFn
ZVByb3h5SWRlbnRpZmllcigpLCBhdXRob3JpemF0aW9uVG9rZW4sIG5lZWRzSGlnaEFjY3VyYWN5
KSwgMCk7CiB9CiAKIHZvaWQgV2ViR2VvbG9jYXRpb25NYW5hZ2VyOjp1bnJlZ2lzdGVyV2ViUGFn
ZShXZWJQYWdlJiBwYWdlKQogewotICAgIGJvb2wgaGlnaEFjY3VyYWN5V2FzRW5hYmxlZCA9IGlz
SGlnaEFjY3VyYWN5RW5hYmxlZCgpOworICAgIGF1dG8gcmVnaXN0cmFibGVEb21haW4gPSBtX3Bh
Z2VUb1JlZ2lzdHJhYmxlRG9tYWluLnRha2UoJnBhZ2UpOworICAgIGlmIChyZWdpc3RyYWJsZURv
bWFpbi5pc0VtcHR5KCkpCisgICAgICAgIHJldHVybjsKIAotICAgIG1fcGFnZVNldC5yZW1vdmUo
cGFnZSk7Ci0gICAgbV9oaWdoQWNjdXJhY3lQYWdlU2V0LnJlbW92ZShwYWdlKTsKKyAgICBhdXRv
IGl0ID0gbV9wYWdlU2V0cy5maW5kKHJlZ2lzdHJhYmxlRG9tYWluKTsKKyAgICBpZiAoaXQgPT0g
bV9wYWdlU2V0cy5lbmQoKSkKKyAgICAgICAgcmV0dXJuOwogCi0gICAgaWYgKCFpc1VwZGF0aW5n
KCkpCi0gICAgICAgIG1fcHJvY2Vzcy5wYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpLT5zZW5kKE1l
c3NhZ2VzOjpXZWJHZW9sb2NhdGlvbk1hbmFnZXJQcm94eTo6U3RvcFVwZGF0aW5nKCksIDApOwor
ICAgIGF1dG8mIHBhZ2VTZXRzID0gaXQtPnZhbHVlOworICAgIGJvb2wgaGlnaEFjY3VyYWN5V2Fz
RW5hYmxlZCA9ICFwYWdlU2V0cy5oaWdoQWNjdXJhY3lQYWdlU2V0LmNvbXB1dGVzRW1wdHkoKTsK
KworICAgIHBhZ2VTZXRzLnBhZ2VTZXQucmVtb3ZlKHBhZ2UpOworICAgIHBhZ2VTZXRzLmhpZ2hB
Y2N1cmFjeVBhZ2VTZXQucmVtb3ZlKHBhZ2UpOworCisgICAgaWYgKHBhZ2VTZXRzLnBhZ2VTZXQu
Y29tcHV0ZXNFbXB0eSgpKQorICAgICAgICBtX3Byb2Nlc3MucGFyZW50UHJvY2Vzc0Nvbm5lY3Rp
b24oKS0+c2VuZChNZXNzYWdlczo6V2ViR2VvbG9jYXRpb25NYW5hZ2VyUHJveHk6OlN0b3BVcGRh
dGluZyhyZWdpc3RyYWJsZURvbWFpbiksIDApOwogICAgIGVsc2UgewotICAgICAgICBib29sIGhp
Z2hBY2N1cmFjeVNob3VsZEJlRW5hYmxlZCA9IGlzSGlnaEFjY3VyYWN5RW5hYmxlZCgpOworICAg
ICAgICBib29sIGhpZ2hBY2N1cmFjeVNob3VsZEJlRW5hYmxlZCA9ICFwYWdlU2V0cy5oaWdoQWNj
dXJhY3lQYWdlU2V0LmNvbXB1dGVzRW1wdHkoKTsKICAgICAgICAgaWYgKGhpZ2hBY2N1cmFjeVdh
c0VuYWJsZWQgIT0gaGlnaEFjY3VyYWN5U2hvdWxkQmVFbmFibGVkKQotICAgICAgICAgICAgbV9w
cm9jZXNzLnBhcmVudFByb2Nlc3NDb25uZWN0aW9uKCktPnNlbmQoTWVzc2FnZXM6OldlYkdlb2xv
Y2F0aW9uTWFuYWdlclByb3h5OjpTZXRFbmFibGVIaWdoQWNjdXJhY3koaGlnaEFjY3VyYWN5U2hv
dWxkQmVFbmFibGVkKSwgMCk7CisgICAgICAgICAgICBtX3Byb2Nlc3MucGFyZW50UHJvY2Vzc0Nv
bm5lY3Rpb24oKS0+c2VuZChNZXNzYWdlczo6V2ViR2VvbG9jYXRpb25NYW5hZ2VyUHJveHk6OlNl
dEVuYWJsZUhpZ2hBY2N1cmFjeShyZWdpc3RyYWJsZURvbWFpbiwgaGlnaEFjY3VyYWN5U2hvdWxk
QmVFbmFibGVkKSwgMCk7CiAgICAgfQorCisgICAgaWYgKHBhZ2VTZXRzLnBhZ2VTZXQuY29tcHV0
ZXNFbXB0eSgpICYmIHBhZ2VTZXRzLmhpZ2hBY2N1cmFjeVBhZ2VTZXQuY29tcHV0ZXNFbXB0eSgp
KQorICAgICAgICBtX3BhZ2VTZXRzLnJlbW92ZShpdCk7CiB9CiAKIHZvaWQgV2ViR2VvbG9jYXRp
b25NYW5hZ2VyOjpzZXRFbmFibGVIaWdoQWNjdXJhY3lGb3JQYWdlKFdlYlBhZ2UmIHBhZ2UsIGJv
b2wgZW5hYmxlZCkKIHsKLSAgICBib29sIGhpZ2hBY2N1cmFjeVdhc0VuYWJsZWQgPSBpc0hpZ2hB
Y2N1cmFjeUVuYWJsZWQoKTsKKyAgICBhdXRvIHJlZ2lzdHJhYmxlRG9tYWluID0gbV9wYWdlVG9S
ZWdpc3RyYWJsZURvbWFpbi5nZXQoJnBhZ2UpOworICAgIGlmIChyZWdpc3RyYWJsZURvbWFpbi5p
c0VtcHR5KCkpCisgICAgICAgIHJldHVybjsKKworICAgIGF1dG8gaXQgPSBtX3BhZ2VTZXRzLmZp
bmQocmVnaXN0cmFibGVEb21haW4pOworICAgIEFTU0VSVChpdCAhPSBtX3BhZ2VTZXRzLmVuZCgp
KTsKKyAgICBpZiAoaXQgPT0gbV9wYWdlU2V0cy5lbmQoKSkKKyAgICAgICAgcmV0dXJuOworCisg
ICAgYXV0byYgcGFnZVNldHMgPSBpdC0+dmFsdWU7CisgICAgYm9vbCBoaWdoQWNjdXJhY3lXYXNF
bmFibGVkID0gIXBhZ2VTZXRzLmhpZ2hBY2N1cmFjeVBhZ2VTZXQuY29tcHV0ZXNFbXB0eSgpOwog
CiAgICAgaWYgKGVuYWJsZWQpCi0gICAgICAgIG1faGlnaEFjY3VyYWN5UGFnZVNldC5hZGQocGFn
ZSk7CisgICAgICAgIHBhZ2VTZXRzLmhpZ2hBY2N1cmFjeVBhZ2VTZXQuYWRkKHBhZ2UpOwogICAg
IGVsc2UKLSAgICAgICAgbV9oaWdoQWNjdXJhY3lQYWdlU2V0LnJlbW92ZShwYWdlKTsKKyAgICAg
ICAgcGFnZVNldHMuaGlnaEFjY3VyYWN5UGFnZVNldC5yZW1vdmUocGFnZSk7CiAKLSAgICBib29s
IGhpZ2hBY2N1cmFjeVNob3VsZEJlRW5hYmxlZCA9IGlzSGlnaEFjY3VyYWN5RW5hYmxlZCgpOwor
ICAgIGJvb2wgaGlnaEFjY3VyYWN5U2hvdWxkQmVFbmFibGVkID0gIXBhZ2VTZXRzLmhpZ2hBY2N1
cmFjeVBhZ2VTZXQuY29tcHV0ZXNFbXB0eSgpOwogICAgIGlmIChoaWdoQWNjdXJhY3lXYXNFbmFi
bGVkICE9IGhpZ2hBY2N1cmFjeVNob3VsZEJlRW5hYmxlZCkKLSAgICAgICAgbV9wcm9jZXNzLnBh
cmVudFByb2Nlc3NDb25uZWN0aW9uKCktPnNlbmQoTWVzc2FnZXM6OldlYkdlb2xvY2F0aW9uTWFu
YWdlclByb3h5OjpTZXRFbmFibGVIaWdoQWNjdXJhY3koaGlnaEFjY3VyYWN5U2hvdWxkQmVFbmFi
bGVkKSwgMCk7CisgICAgICAgIG1fcHJvY2Vzcy5wYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpLT5z
ZW5kKE1lc3NhZ2VzOjpXZWJHZW9sb2NhdGlvbk1hbmFnZXJQcm94eTo6U2V0RW5hYmxlSGlnaEFj
Y3VyYWN5KHJlZ2lzdHJhYmxlRG9tYWluLCBoaWdoQWNjdXJhY3lTaG91bGRCZUVuYWJsZWQpLCAw
KTsKIH0KIAotdm9pZCBXZWJHZW9sb2NhdGlvbk1hbmFnZXI6OmRpZENoYW5nZVBvc2l0aW9uKGNv
bnN0IEdlb2xvY2F0aW9uUG9zaXRpb25EYXRhJiBwb3NpdGlvbikKK3ZvaWQgV2ViR2VvbG9jYXRp
b25NYW5hZ2VyOjpkaWRDaGFuZ2VQb3NpdGlvbihjb25zdCBXZWJDb3JlOjpSZWdpc3RyYWJsZURv
bWFpbiYgcmVnaXN0cmFibGVEb21haW4sIGNvbnN0IEdlb2xvY2F0aW9uUG9zaXRpb25EYXRhJiBw
b3NpdGlvbikKIHsKICNpZiBFTkFCTEUoR0VPTE9DQVRJT04pCi0gICAgZm9yIChhdXRvJiBwYWdl
IDogY29weVRvVmVjdG9yKG1fcGFnZVNldCkpIHsKLSAgICAgICAgaWYgKHBhZ2UtPmNvcmVQYWdl
KCkpCi0gICAgICAgICAgICBHZW9sb2NhdGlvbkNvbnRyb2xsZXI6OmZyb20ocGFnZS0+Y29yZVBh
Z2UoKSktPnBvc2l0aW9uQ2hhbmdlZChwb3NpdGlvbik7CisgICAgaWYgKGF1dG8gaXQgPSBtX3Bh
Z2VTZXRzLmZpbmQocmVnaXN0cmFibGVEb21haW4pOyBpdCAhPSBtX3BhZ2VTZXRzLmVuZCgpKSB7
CisgICAgICAgIGZvciAoYXV0byYgcGFnZSA6IGNvcHlUb1ZlY3RvcihpdC0+dmFsdWUucGFnZVNl
dCkpIHsKKyAgICAgICAgICAgIGlmIChwYWdlLT5jb3JlUGFnZSgpKQorICAgICAgICAgICAgICAg
IEdlb2xvY2F0aW9uQ29udHJvbGxlcjo6ZnJvbShwYWdlLT5jb3JlUGFnZSgpKS0+cG9zaXRpb25D
aGFuZ2VkKHBvc2l0aW9uKTsKKyAgICAgICAgfQogICAgIH0KICNlbHNlCisgICAgVU5VU0VEX1BB
UkFNKHJlZ2lzdHJhYmxlRG9tYWluKTsKICAgICBVTlVTRURfUEFSQU0ocG9zaXRpb24pOwogI2Vu
ZGlmIC8vIEVOQUJMRShHRU9MT0NBVElPTikKIH0KIAotdm9pZCBXZWJHZW9sb2NhdGlvbk1hbmFn
ZXI6OmRpZEZhaWxUb0RldGVybWluZVBvc2l0aW9uKGNvbnN0IFN0cmluZyYgZXJyb3JNZXNzYWdl
KQordm9pZCBXZWJHZW9sb2NhdGlvbk1hbmFnZXI6OmRpZEZhaWxUb0RldGVybWluZVBvc2l0aW9u
KGNvbnN0IFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluJiByZWdpc3RyYWJsZURvbWFpbiwgY29u
c3QgU3RyaW5nJiBlcnJvck1lc3NhZ2UpCiB7CiAjaWYgRU5BQkxFKEdFT0xPQ0FUSU9OKQotICAg
IC8vIEZJWE1FOiBBZGQgbG9jYWxpemVkIGVycm9yIHN0cmluZy4KLSAgICBhdXRvIGVycm9yID0g
R2VvbG9jYXRpb25FcnJvcjo6Y3JlYXRlKEdlb2xvY2F0aW9uRXJyb3I6OlBvc2l0aW9uVW5hdmFp
bGFibGUsIGVycm9yTWVzc2FnZSk7Ci0KLSAgICBmb3IgKGF1dG8mIHBhZ2UgOiBjb3B5VG9WZWN0
b3IobV9wYWdlU2V0KSkgewotICAgICAgICBpZiAocGFnZS0+Y29yZVBhZ2UoKSkKLSAgICAgICAg
ICAgIEdlb2xvY2F0aW9uQ29udHJvbGxlcjo6ZnJvbShwYWdlLT5jb3JlUGFnZSgpKS0+ZXJyb3JP
Y2N1cnJlZChlcnJvci5nZXQoKSk7CisgICAgaWYgKGF1dG8gaXQgPSBtX3BhZ2VTZXRzLmZpbmQo
cmVnaXN0cmFibGVEb21haW4pOyBpdCAhPSBtX3BhZ2VTZXRzLmVuZCgpKSB7CisgICAgICAgIC8v
IEZJWE1FOiBBZGQgbG9jYWxpemVkIGVycm9yIHN0cmluZy4KKyAgICAgICAgYXV0byBlcnJvciA9
IEdlb2xvY2F0aW9uRXJyb3I6OmNyZWF0ZShHZW9sb2NhdGlvbkVycm9yOjpQb3NpdGlvblVuYXZh
aWxhYmxlLCBlcnJvck1lc3NhZ2UpOworCisgICAgICAgIGZvciAoYXV0byYgcGFnZSA6IGNvcHlU
b1ZlY3RvcihpdC0+dmFsdWUucGFnZVNldCkpIHsKKyAgICAgICAgICAgIGlmIChwYWdlLT5jb3Jl
UGFnZSgpKQorICAgICAgICAgICAgICAgIEdlb2xvY2F0aW9uQ29udHJvbGxlcjo6ZnJvbShwYWdl
LT5jb3JlUGFnZSgpKS0+ZXJyb3JPY2N1cnJlZChlcnJvci5nZXQoKSk7CisgICAgICAgIH0KICAg
ICB9CiAjZWxzZQorICAgIFVOVVNFRF9QQVJBTShyZWdpc3RyYWJsZURvbWFpbik7CiAgICAgVU5V
U0VEX1BBUkFNKGVycm9yTWVzc2FnZSk7CiAjZW5kaWYgLy8gRU5BQkxFKEdFT0xPQ0FUSU9OKQog
fQogCiAjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKLXZvaWQgV2ViR2VvbG9jYXRpb25NYW5hZ2Vy
OjpyZXNldFBlcm1pc3Npb25zKCkKK3ZvaWQgV2ViR2VvbG9jYXRpb25NYW5hZ2VyOjpyZXNldFBl
cm1pc3Npb25zKGNvbnN0IFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluJiByZWdpc3RyYWJsZURv
bWFpbikKIHsKLSAgICBtX3Byb2Nlc3MucmVzZXRBbGxHZW9sb2NhdGlvblBlcm1pc3Npb25zKCk7
Ci19Ci0jZW5kaWYgLy8gUExBVEZPUk0oSU9TX0ZBTUlMWSkKKyAgICBhdXRvIGl0ID0gbV9wYWdl
U2V0cy5maW5kKHJlZ2lzdHJhYmxlRG9tYWluKTsKKyAgICBpZiAoaXQgIT0gbV9wYWdlU2V0cy5l
bmQoKSkKKyAgICAgICAgcmV0dXJuOwogCi1ib29sIFdlYkdlb2xvY2F0aW9uTWFuYWdlcjo6aXNV
cGRhdGluZygpIGNvbnN0Ci17Ci0gICAgcmV0dXJuICFtX3BhZ2VTZXQuY29tcHV0ZXNFbXB0eSgp
OwotfQotCi1ib29sIFdlYkdlb2xvY2F0aW9uTWFuYWdlcjo6aXNIaWdoQWNjdXJhY3lFbmFibGVk
KCkgY29uc3QKLXsKLSAgICByZXR1cm4gIW1faGlnaEFjY3VyYWN5UGFnZVNldC5jb21wdXRlc0Vt
cHR5KCk7CisgICAgZm9yIChhdXRvJiBwYWdlIDogY29weVRvVmVjdG9yKGl0LT52YWx1ZS5wYWdl
U2V0KSkgeworICAgICAgICBpZiAoYXV0byogbWFpbkZyYW1lID0gcGFnZS0+Y29yZVBhZ2UoKSA/
ICZwYWdlLT5jb3JlUGFnZSgpLT5tYWluRnJhbWUoKSA6IG51bGxwdHIpCisgICAgICAgICAgICBt
YWluRnJhbWUtPnJlc2V0QWxsR2VvbG9jYXRpb25QZXJtaXNzaW9uKCk7CisgICAgfQogfQorI2Vu
ZGlmIC8vIFBMQVRGT1JNKElPU19GQU1JTFkpCiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dlb2xvY2F0aW9uL1dlYkdlb2xvY2F0
aW9uTWFuYWdlci5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dlb2xvY2F0aW9uL1dlYkdl
b2xvY2F0aW9uTWFuYWdlci5oCmluZGV4IDQ0ODM1OTYzNTg3ODIxOTdjY2JhNTkyOGVmZTYyNTE1
MjZjMTg1MTUuLjU5NGIyY2ViNjllNjhkZjUyYmUxMTUzYmY1YjI1ODU4ZTJlOWIyN2QgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HZW9sb2NhdGlvbi9XZWJHZW9sb2NhdGlv
bk1hbmFnZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR2VvbG9jYXRpb24vV2Vi
R2VvbG9jYXRpb25NYW5hZ2VyLmgKQEAgLTI4LDYgKzI4LDcgQEAKICNpbmNsdWRlICJNZXNzYWdl
UmVjZWl2ZXIuaCIKICNpbmNsdWRlICJXZWJHZW9sb2NhdGlvblBvc2l0aW9uLmgiCiAjaW5jbHVk
ZSAiV2ViUHJvY2Vzc1N1cHBsZW1lbnQuaCIKKyNpbmNsdWRlIDxXZWJDb3JlL1JlZ2lzdHJhYmxl
RG9tYWluLmg+CiAjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KICNpbmNsdWRlIDx3dGYvTm9uY29w
eWFibGUuaD4KICNpbmNsdWRlIDx3dGYvV2Vha0hhc2hTZXQuaD4KQEAgLTQ3LDMxICs0OCwzMSBA
QCBjbGFzcyBXZWJHZW9sb2NhdGlvbk1hbmFnZXIgOiBwdWJsaWMgV2ViUHJvY2Vzc1N1cHBsZW1l
bnQsIHB1YmxpYyBJUEM6Ok1lc3NhZ2VSZQogICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKFdlYkdl
b2xvY2F0aW9uTWFuYWdlcik7CiBwdWJsaWM6CiAgICAgZXhwbGljaXQgV2ViR2VvbG9jYXRpb25N
YW5hZ2VyKFdlYlByb2Nlc3MmKTsKKyAgICB+V2ViR2VvbG9jYXRpb25NYW5hZ2VyKCk7CiAKICAg
ICBzdGF0aWMgY29uc3QgY2hhciogc3VwcGxlbWVudE5hbWUoKTsKIAotICAgIHZvaWQgcmVnaXN0
ZXJXZWJQYWdlKFdlYlBhZ2UmLCBjb25zdCBTdHJpbmcmIGF1dGhvcml6YXRpb25Ub2tlbik7Cisg
ICAgdm9pZCByZWdpc3RlcldlYlBhZ2UoV2ViUGFnZSYsIGNvbnN0IFN0cmluZyYgYXV0aG9yaXph
dGlvblRva2VuLCBib29sIG5lZWRzSGlnaEFjY3VyYWN5KTsKICAgICB2b2lkIHVucmVnaXN0ZXJX
ZWJQYWdlKFdlYlBhZ2UmKTsKICAgICB2b2lkIHNldEVuYWJsZUhpZ2hBY2N1cmFjeUZvclBhZ2Uo
V2ViUGFnZSYsIGJvb2wpOwogCi0gICAgdm9pZCByZXF1ZXN0UGVybWlzc2lvbihXZWJDb3JlOjpH
ZW9sb2NhdGlvbiYpOwotCiBwcml2YXRlOgogICAgIC8vIElQQzo6TWVzc2FnZVJlY2VpdmVyCiAg
ICAgdm9pZCBkaWRSZWNlaXZlTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6OkRlY29kZXIm
KSBvdmVycmlkZTsKIAotICAgIGJvb2wgaXNVcGRhdGluZygpIGNvbnN0OwotICAgIGJvb2wgaXNI
aWdoQWNjdXJhY3lFbmFibGVkKCkgY29uc3Q7Ci0KLSAgICB2b2lkIGRpZENoYW5nZVBvc2l0aW9u
KGNvbnN0IFdlYkNvcmU6Okdlb2xvY2F0aW9uUG9zaXRpb25EYXRhJik7Ci0gICAgdm9pZCBkaWRG
YWlsVG9EZXRlcm1pbmVQb3NpdGlvbihjb25zdCBTdHJpbmcmIGVycm9yTWVzc2FnZSk7CisgICAg
dm9pZCBkaWRDaGFuZ2VQb3NpdGlvbihjb25zdCBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiYs
IGNvbnN0IFdlYkNvcmU6Okdlb2xvY2F0aW9uUG9zaXRpb25EYXRhJik7CisgICAgdm9pZCBkaWRG
YWlsVG9EZXRlcm1pbmVQb3NpdGlvbihjb25zdCBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiYs
IGNvbnN0IFN0cmluZyYgZXJyb3JNZXNzYWdlKTsKICNpZiBQTEFURk9STShJT1NfRkFNSUxZKQot
ICAgIHZvaWQgcmVzZXRQZXJtaXNzaW9ucygpOworICAgIHZvaWQgcmVzZXRQZXJtaXNzaW9ucyhj
b25zdCBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiYpOwogI2VuZGlmIC8vIFBMQVRGT1JNKElP
U19GQU1JTFkpCiAKICAgICBXZWJQcm9jZXNzJiBtX3Byb2Nlc3M7Ci0gICAgV2Vha0hhc2hTZXQ8
V2ViUGFnZT4gbV9wYWdlU2V0OwotICAgIFdlYWtIYXNoU2V0PFdlYlBhZ2U+IG1faGlnaEFjY3Vy
YWN5UGFnZVNldDsKKyAgICBzdHJ1Y3QgUGFnZVNldHMgeworICAgICAgICBXZWFrSGFzaFNldDxX
ZWJQYWdlPiBwYWdlU2V0OworICAgICAgICBXZWFrSGFzaFNldDxXZWJQYWdlPiBoaWdoQWNjdXJh
Y3lQYWdlU2V0OworICAgIH07CisgICAgSGFzaE1hcDxXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFp
biwgUGFnZVNldHM+IG1fcGFnZVNldHM7CisgICAgSGFzaE1hcDxXZWJQYWdlKiwgV2ViQ29yZTo6
UmVnaXN0cmFibGVEb21haW4+IG1fcGFnZVRvUmVnaXN0cmFibGVEb21haW47CiB9OwogCiB9IC8v
IG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9H
ZW9sb2NhdGlvbi9XZWJHZW9sb2NhdGlvbk1hbmFnZXIubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvR2VvbG9jYXRpb24vV2ViR2VvbG9jYXRpb25NYW5hZ2VyLm1lc3NhZ2Vz
LmluCmluZGV4IDc5ZjNiNGNlNGVmY2FmMzQ4ODU3ZDk5MzMyNTNkODk1NGYwZjFiODcuLjZmY2M2
MGQyZTA4ZTI2ZWFiNzNjMWY3MWNkODg0MmRjNTEwNTJkMTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9HZW9sb2NhdGlvbi9XZWJHZW9sb2NhdGlvbk1hbmFnZXIubWVzc2Fn
ZXMuaW4KKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dlb2xvY2F0aW9uL1dlYkdlb2xv
Y2F0aW9uTWFuYWdlci5tZXNzYWdlcy5pbgpAQCAtMjEsOSArMjEsOSBAQAogIyBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgogCiBtZXNzYWdlcyAtPiBXZWJHZW9sb2NhdGlvbk1hbmFnZXIgTm90UmVmQ291bnRlZCB7Ci0g
ICAgRGlkQ2hhbmdlUG9zaXRpb24oV2ViQ29yZTo6R2VvbG9jYXRpb25Qb3NpdGlvbkRhdGEgcG9z
aXRpb24pOwotICAgIERpZEZhaWxUb0RldGVybWluZVBvc2l0aW9uKFN0cmluZyBlcnJvck1lc3Nh
Z2UpOworICAgIERpZENoYW5nZVBvc2l0aW9uKFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluIHJl
Z2lzdHJhYmxlRG9tYWluLCBXZWJDb3JlOjpHZW9sb2NhdGlvblBvc2l0aW9uRGF0YSBwb3NpdGlv
bik7CisgICAgRGlkRmFpbFRvRGV0ZXJtaW5lUG9zaXRpb24oV2ViQ29yZTo6UmVnaXN0cmFibGVE
b21haW4gcmVnaXN0cmFibGVEb21haW4sIFN0cmluZyBlcnJvck1lc3NhZ2UpOwogI2lmIFBMQVRG
T1JNKElPU19GQU1JTFkpCi0gICAgUmVzZXRQZXJtaXNzaW9ucygpOworICAgIFJlc2V0UGVybWlz
c2lvbnMoV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4gcmVnaXN0cmFibGVEb21haW4pOwogI2Vu
ZGlmCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBv
cnQvV2ViR2VvbG9jYXRpb25DbGllbnQuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dl
YkNvcmVTdXBwb3J0L1dlYkdlb2xvY2F0aW9uQ2xpZW50LmNwcAppbmRleCBlYTAyZjJhYzE2Zjcz
MWJmNTY0MmY4Njc4ZDg2YTQ5ODExZDhjMzg2Li5kMThkZjdlZmFmNTZlZmNmYzhkMTY5OWM5MWNk
MjZiNjg5YmM4MjZhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29y
ZVN1cHBvcnQvV2ViR2VvbG9jYXRpb25DbGllbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJHZW9sb2NhdGlvbkNsaWVudC5jcHAKQEAgLTQ4LDkg
KzQ4LDkgQEAgdm9pZCBXZWJHZW9sb2NhdGlvbkNsaWVudDo6Z2VvbG9jYXRpb25EZXN0cm95ZWQo
KQogICAgIGRlbGV0ZSB0aGlzOwogfQogCi12b2lkIFdlYkdlb2xvY2F0aW9uQ2xpZW50OjpzdGFy
dFVwZGF0aW5nKGNvbnN0IFN0cmluZyYgYXV0aG9yaXphdGlvblRva2VuKQordm9pZCBXZWJHZW9s
b2NhdGlvbkNsaWVudDo6c3RhcnRVcGRhdGluZyhjb25zdCBTdHJpbmcmIGF1dGhvcml6YXRpb25U
b2tlbiwgYm9vbCBuZWVkc0hpZ2hBY2N1cmFjeSkKIHsKLSAgICBXZWJQcm9jZXNzOjpzaW5nbGV0
b24oKS5zdXBwbGVtZW50PFdlYkdlb2xvY2F0aW9uTWFuYWdlcj4oKS0+cmVnaXN0ZXJXZWJQYWdl
KG1fcGFnZSwgYXV0aG9yaXphdGlvblRva2VuKTsKKyAgICBXZWJQcm9jZXNzOjpzaW5nbGV0b24o
KS5zdXBwbGVtZW50PFdlYkdlb2xvY2F0aW9uTWFuYWdlcj4oKS0+cmVnaXN0ZXJXZWJQYWdlKG1f
cGFnZSwgYXV0aG9yaXphdGlvblRva2VuLCBuZWVkc0hpZ2hBY2N1cmFjeSk7CiB9CiAKIHZvaWQg
V2ViR2VvbG9jYXRpb25DbGllbnQ6OnN0b3BVcGRhdGluZygpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViR2VvbG9jYXRpb25DbGllbnQuaCBi
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJHZW9sb2NhdGlvbkNs
aWVudC5oCmluZGV4IGIxNjgxNjc0ODk2MjI1NDdlYzk0ZTY3OThmYjY5ZGQ4ZmE2ZDAxMWMuLjY1
ZWMwZTkzNTQyODNkNWZhNzdhZjEwYjRlMTgwYjg3MTJmYWVmMDcgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJHZW9sb2NhdGlvbkNsaWVudC5o
CisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJHZW9sb2Nh
dGlvbkNsaWVudC5oCkBAIC0zMSw3ICszMSw3IEBAIG5hbWVzcGFjZSBXZWJLaXQgewogCiBjbGFz
cyBXZWJQYWdlOwogCi1jbGFzcyBXZWJHZW9sb2NhdGlvbkNsaWVudCA6IHB1YmxpYyBXZWJDb3Jl
OjpHZW9sb2NhdGlvbkNsaWVudCB7CitjbGFzcyBXZWJHZW9sb2NhdGlvbkNsaWVudCBmaW5hbCA6
IHB1YmxpYyBXZWJDb3JlOjpHZW9sb2NhdGlvbkNsaWVudCB7CiAgICAgV1RGX01BS0VfRkFTVF9B
TExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgV2ViR2VvbG9jYXRpb25DbGllbnQoV2ViUGFnZSYgcGFn
ZSkKQEAgLTQyLDE3ICs0MiwxNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB+V2ViR2VvbG9jYXRp
b25DbGllbnQoKTsKIAogcHJpdmF0ZToKLSAgICB2b2lkIGdlb2xvY2F0aW9uRGVzdHJveWVkKCkg
b3ZlcnJpZGU7CisgICAgdm9pZCBnZW9sb2NhdGlvbkRlc3Ryb3llZCgpIGZpbmFsOwogCi0gICAg
dm9pZCBzdGFydFVwZGF0aW5nKGNvbnN0IFN0cmluZyYgYXV0aG9yaXphdGlvblRva2VuKSBvdmVy
cmlkZTsKLSAgICB2b2lkIHN0b3BVcGRhdGluZygpIG92ZXJyaWRlOwotICAgIHZvaWQgcmV2b2tl
QXV0aG9yaXphdGlvblRva2VuKGNvbnN0IFN0cmluZyYpIG92ZXJyaWRlOwotICAgIHZvaWQgc2V0
RW5hYmxlSGlnaEFjY3VyYWN5KGJvb2wpIG92ZXJyaWRlOworICAgIHZvaWQgc3RhcnRVcGRhdGlu
Zyhjb25zdCBTdHJpbmcmIGF1dGhvcml6YXRpb25Ub2tlbiwgYm9vbCBuZWVkc0hpZ2hBY2N1cmFj
eSkgZmluYWw7CisgICAgdm9pZCBzdG9wVXBkYXRpbmcoKSBmaW5hbDsKKyAgICB2b2lkIHJldm9r
ZUF1dGhvcml6YXRpb25Ub2tlbihjb25zdCBTdHJpbmcmKSBmaW5hbDsKKyAgICB2b2lkIHNldEVu
YWJsZUhpZ2hBY2N1cmFjeShib29sKSBmaW5hbDsKIAotICAgIHN0ZDo6b3B0aW9uYWw8V2ViQ29y
ZTo6R2VvbG9jYXRpb25Qb3NpdGlvbkRhdGE+IGxhc3RQb3NpdGlvbigpIG92ZXJyaWRlOworICAg
IHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6R2VvbG9jYXRpb25Qb3NpdGlvbkRhdGE+IGxhc3RQb3Np
dGlvbigpIGZpbmFsOwogCi0gICAgdm9pZCByZXF1ZXN0UGVybWlzc2lvbihXZWJDb3JlOjpHZW9s
b2NhdGlvbiYpIG92ZXJyaWRlOwotICAgIHZvaWQgY2FuY2VsUGVybWlzc2lvblJlcXVlc3QoV2Vi
Q29yZTo6R2VvbG9jYXRpb24mKSBvdmVycmlkZTsKKyAgICB2b2lkIHJlcXVlc3RQZXJtaXNzaW9u
KFdlYkNvcmU6Okdlb2xvY2F0aW9uJikgZmluYWw7CisgICAgdm9pZCBjYW5jZWxQZXJtaXNzaW9u
UmVxdWVzdChXZWJDb3JlOjpHZW9sb2NhdGlvbiYpIGZpbmFsOwogCiAgICAgV2ViUGFnZSYgbV9w
YWdlOwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNz
LmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmNwcAppbmRleCBkZDQ1
YjQ1ODhiZjlkZDEyNGUxOGZhYTk1YTMyNmVkMzE5MzFhNDU3Li43OTk2MTNkMzc3NDIzNjNiZmJk
Y2Q5NTI5Nzk5NjIyMDZmMDIyOGE4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvV2ViUHJvY2Vzcy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlByb2Nl
c3MuY3BwCkBAIC0xNTI3LDE2ICsxNTI3LDYgQEAgdm9pZCBXZWJQcm9jZXNzOjpwYWdlQWN0aXZp
dHlTdGF0ZURpZENoYW5nZShQYWdlSWRlbnRpZmllciwgT3B0aW9uU2V0PFdlYkNvcmU6OkEKICAg
ICB9CiB9CiAKLSNpZiBQTEFURk9STShJT1NfRkFNSUxZKQotdm9pZCBXZWJQcm9jZXNzOjpyZXNl
dEFsbEdlb2xvY2F0aW9uUGVybWlzc2lvbnMoKQotewotICAgIGZvciAoYXV0byYgcGFnZSA6IG1f
cGFnZU1hcC52YWx1ZXMoKSkgewotICAgICAgICBpZiAoRnJhbWUqIG1haW5GcmFtZSA9IHBhZ2Ut
Pm1haW5GcmFtZSgpKQotICAgICAgICAgICAgbWFpbkZyYW1lLT5yZXNldEFsbEdlb2xvY2F0aW9u
UGVybWlzc2lvbigpOwotICAgIH0KLX0KLSNlbmRpZgotCiB2b2lkIFdlYlByb2Nlc3M6OnByZXBh
cmVUb1N1c3BlbmQoYm9vbCBpc1N1c3BlbnNpb25JbW1pbmVudCwgQ29tcGxldGlvbkhhbmRsZXI8
dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewogICAgIFdFQlBST0NFU1NfUkVMRUFTRV9M
T0coUHJvY2Vzc1N1c3BlbnNpb24sICJwcmVwYXJlVG9TdXNwZW5kOiBpc1N1c3BlbnNpb25JbW1p
bmVudD0lZCIsIGlzU3VzcGVuc2lvbkltbWluZW50KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2Vi
UHJvY2Vzcy5oCmluZGV4IGM1ZGQyMjVkYzFiNzFkYTljZGQ0ZWVkYmEwYTA3ZTc2MTc4MTU3NWUu
LjU5NWFmMGI5NzQxMjkwZGE2YzczNGEwODg2YjgyNGQyM2IxZWU1N2UgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmgKKysrIGIvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1dlYlByb2Nlc3MuaApAQCAtMzEwLDEwICszMTAsNiBAQCBwdWJsaWM6CiAKICAg
ICB2b2lkIGlzSklURW5hYmxlZChDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmKTsKIAot
I2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCi0gICAgdm9pZCByZXNldEFsbEdlb2xvY2F0aW9uUGVy
bWlzc2lvbnMoKTsKLSNlbmRpZgotCiAjaWYgUExBVEZPUk0oV0FZTEFORCkKICAgICBXYXlsYW5k
Q29tcG9zaXRvckRpc3BsYXkqIHdheWxhbmRDb21wb3NpdG9yRGlzcGxheSgpIGNvbnN0IHsgcmV0
dXJuIG1fd2F5bGFuZENvbXBvc2l0b3JEaXNwbGF5LmdldCgpOyB9CiAjZW5kaWYKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkdlb2xvY2F0aW9u
Q2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJHZW9s
b2NhdGlvbkNsaWVudC5oCmluZGV4IDc3YzI4MjhkODU5NTM2MzViNjRjNGM4OTk5OTBhMGE2NDgx
NzFiNmMuLmIwN2M3OTAzZDI5MmE5MzM5MWU1YzQwYWVkZDY1ZGVkYmFmOGM1ZjEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkdlb2xvY2F0aW9u
Q2xpZW50LmgKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2Vi
R2VvbG9jYXRpb25DbGllbnQuaApAQCAtMzksNyArMzksNyBAQCBwdWJsaWM6CiAgICAgV2ViVmll
dyAqd2ViVmlldygpIHsgcmV0dXJuIG1fd2ViVmlldzsgfQogCiAgICAgdm9pZCBnZW9sb2NhdGlv
bkRlc3Ryb3llZCgpIG92ZXJyaWRlOwotICAgIHZvaWQgc3RhcnRVcGRhdGluZyhjb25zdCBTdHJp
bmcmIGF1dGhvcml6YXRpb25Ub2tlbikgb3ZlcnJpZGU7CisgICAgdm9pZCBzdGFydFVwZGF0aW5n
KGNvbnN0IFN0cmluZyYgYXV0aG9yaXphdGlvblRva2VuLCBib29sIGVuYWJsZUhpZ2hBY2N1cmFj
eSkgb3ZlcnJpZGU7CiAgICAgdm9pZCBzdG9wVXBkYXRpbmcoKSBvdmVycmlkZTsKICNpZiBQTEFU
Rk9STShJT1NfRkFNSUxZKQogICAgIC8vIEZJWE1FOiB1bmlmeSB0aGlzIHdpdGggTWFjIG9uIE9w
ZW5Tb3VyY2UuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3Vw
cG9ydC9XZWJHZW9sb2NhdGlvbkNsaWVudC5tbSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dl
YkNvcmVTdXBwb3J0L1dlYkdlb2xvY2F0aW9uQ2xpZW50Lm1tCmluZGV4IGU3ODhhNTdkZDZmODA3
ZTdiMjVjNzQyYmE4MDE5MzU3YTI3MzRkMzguLmE4Yjg1MjFlMmRhNDcxOGRjMTRiNDM3MGIxYTVi
NGI4ZDYzMjg1ODkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVT
dXBwb3J0L1dlYkdlb2xvY2F0aW9uQ2xpZW50Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kv
bWFjL1dlYkNvcmVTdXBwb3J0L1dlYkdlb2xvY2F0aW9uQ2xpZW50Lm1tCkBAIC04Myw5ICs4Mywx
NiBAQCB2b2lkIFdlYkdlb2xvY2F0aW9uQ2xpZW50OjpnZW9sb2NhdGlvbkRlc3Ryb3llZCgpCiAg
ICAgZGVsZXRlIHRoaXM7CiB9CiAKLXZvaWQgV2ViR2VvbG9jYXRpb25DbGllbnQ6OnN0YXJ0VXBk
YXRpbmcoY29uc3QgU3RyaW5nJiBhdXRob3JpemF0aW9uVG9rZW4pCit2b2lkIFdlYkdlb2xvY2F0
aW9uQ2xpZW50OjpzdGFydFVwZGF0aW5nKGNvbnN0IFN0cmluZyYgYXV0aG9yaXphdGlvblRva2Vu
LCBib29sIGVuYWJsZUhpZ2hBY2N1cmFjeSkKIHsKICAgICBVTlVTRURfUEFSQU0oYXV0aG9yaXph
dGlvblRva2VuKTsKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZKQorICAgIGlmIChlbmFibGVIaWdo
QWNjdXJhY3kpCisgICAgICAgIHNldEVuYWJsZUhpZ2hBY2N1cmFjeSh0cnVlKTsKKyNlbHNlCisg
ICAgVU5VU0VEX1BBUkFNKGVuYWJsZUhpZ2hBY2N1cmFjeSk7CisjZW5kaWYKKwogICAgIFtbbV93
ZWJWaWV3IF9nZW9sb2NhdGlvblByb3ZpZGVyXSByZWdpc3RlcldlYlZpZXc6bV93ZWJWaWV3XTsK
IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViQ29yZVN1cHBvcnQv
V2ViR2VvbG9jYXRpb25DbGllbnQuY3BwIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViQ29y
ZVN1cHBvcnQvV2ViR2VvbG9jYXRpb25DbGllbnQuY3BwCmluZGV4IGUxZmNhMjc3MjQ5NjE1NGE0
ZTA3MGU0ZGZkYTdlNzdlOTczNTgyYzEuLmFjNTQ1MTRjNjQyZWEwZTVmOGFmMzM2OWUxYmJiYWUw
YzM5MDcxYjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkNvcmVTdXBw
b3J0L1dlYkdlb2xvY2F0aW9uQ2xpZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dp
bi9XZWJDb3JlU3VwcG9ydC9XZWJHZW9sb2NhdGlvbkNsaWVudC5jcHAKQEAgLTQ4LDkgKzQ4LDEw
IEBAIHZvaWQgV2ViR2VvbG9jYXRpb25DbGllbnQ6Omdlb2xvY2F0aW9uRGVzdHJveWVkKCkKICAg
ICBkZWxldGUgdGhpczsKIH0KIAotdm9pZCBXZWJHZW9sb2NhdGlvbkNsaWVudDo6c3RhcnRVcGRh
dGluZyhjb25zdCBTdHJpbmcmIGF1dGhvcml6YXRpb25Ub2tlbikKK3ZvaWQgV2ViR2VvbG9jYXRp
b25DbGllbnQ6OnN0YXJ0VXBkYXRpbmcoY29uc3QgU3RyaW5nJiBhdXRob3JpemF0aW9uVG9rZW4s
IGJvb2wgZW5hYmxlSGlnaEFjY3VyYWN5KQogewogICAgIFVOVVNFRF9QQVJBTShhdXRob3JpemF0
aW9uVG9rZW4pOworICAgIFVOVVNFRF9QQVJBTShlbmFibGVIaWdoQWNjdXJhY3kpOwogICAgIENP
TVB0cjxJV2ViR2VvbG9jYXRpb25Qcm92aWRlcj4gcHJvdmlkZXI7CiAgICAgaWYgKEZBSUxFRCht
X3dlYlZpZXctPmdlb2xvY2F0aW9uUHJvdmlkZXIoJnByb3ZpZGVyKSkpCiAgICAgICAgIHJldHVy
bjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkNvcmVTdXBwb3J0L1dl
Ykdlb2xvY2F0aW9uQ2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJDb3JlU3Vw
cG9ydC9XZWJHZW9sb2NhdGlvbkNsaWVudC5oCmluZGV4IDE5NTc0MTdiNTVkN2U1ZDJmOWI3MWU1
YzlkOWMzMDNkZmVmNGUxODYuLjViOGU5NDQ0ZjIxZmVkNDNlZGYyNTkxYTJiYTE1ZGEzYmQ0NGY0
NGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkNvcmVTdXBwb3J0L1dl
Ykdlb2xvY2F0aW9uQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViQ29y
ZVN1cHBvcnQvV2ViR2VvbG9jYXRpb25DbGllbnQuaApAQCAtNDEsNyArNDEsNyBAQCBwdWJsaWM6
CiAgICAgV2ViR2VvbG9jYXRpb25DbGllbnQoV2ViVmlldyopOwogCiAgICAgdm9pZCBnZW9sb2Nh
dGlvbkRlc3Ryb3llZCgpIGZpbmFsOwotICAgIHZvaWQgc3RhcnRVcGRhdGluZyhjb25zdCBTdHJp
bmcmIGF1dGhvcml6YXRpb25Ub2tlbikgZmluYWw7CisgICAgdm9pZCBzdGFydFVwZGF0aW5nKGNv
bnN0IFN0cmluZyYgYXV0aG9yaXphdGlvblRva2VuLCBib29sIGVuYWJsZUhpZ2hBY2N1cmFjeSkg
ZmluYWw7CiAgICAgdm9pZCBzdG9wVXBkYXRpbmcoKSBmaW5hbDsKICAgICB2b2lkIHNldEVuYWJs
ZUhpZ2hBY2N1cmFjeShib29sKSBmaW5hbCB7IH0KICAgICBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6
Okdlb2xvY2F0aW9uUG9zaXRpb25EYXRhPiBsYXN0UG9zaXRpb24oKSBmaW5hbDsK
</data>
<flag name="commit-queue"
          id="478686"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>451832</attachid>
            <date>2022-02-13 11:43:29 -0800</date>
            <delta_ts>2022-02-13 12:37:55 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-236566-20220213114328.patch</filename>
            <type>text/plain</type>
            <size>102402</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg5Njk4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IDVjOGFhZWYzNzk5ZjJmYTJmNjY5YzFm
YWZmNTU3YTc4ZmI1YzYyMDEuLjUyZDQ3N2Q5OWEzYzNkZjIxZjhhNzBlNzU3MzkzZGVkNDc2NGMy
MTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMTUgQEAKKzIwMjItMDItMTMgIENocmlzIER1bWV6ICA8Y2R1bWV6
QGFwcGxlLmNvbT4KKworICAgICAgICBEbyBwcmVsaW1pbmFyeSB3b3JrIHRvIHBhc3MgZG9tYWlu
IG5hbWVzIHRvIENvcmVMb2NhdGlvbgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MjM2NTY2CisgICAgICAgIDxyZGFyOi8vODg3NjE0MTM+CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkIGJ1aWxkIHRpbWUg
ZmxhZyBmb3IgcGFzc2luZyB3ZWJzaXRlIGlkZW50aWZpZXJzIHRvIENvcmVMb2NhdGlvbi4KKwor
ICAgICAgICAqIHd0Zi9QbGF0Zm9ybUhhdmUuaDoKKwogMjAyMi0wMi0xMiAgSmVyIE5vYmxlICA8
amVyLm5vYmxlQGFwcGxlLmNvbT4KIAogICAgICAgICBBZGQgc2V0dGluZ3MgdG8gcmVzdHJpY3Qg
bWVkaWEgY29udGFpbmVycyBhbmQgY29kZWNzIHdoZW4gaW4gQ2FwdGl2ZSBQb3J0YWwgbW9kZQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkNvcmUvQ2hh
bmdlTG9nCmluZGV4IDcxMWMxMjBjYjExYTNmMzZhNTJjZDVkNGU1ZTY1ZmI5NGZmZmQ0NDIuLjg0
ZDk3MzIyNWJmMzU3MTgzYzcyNmVjM2Y5ZDljYTkxN2I5ZmY5ZWEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw1NCBAQAorMjAyMi0wMi0xMyAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgor
CisgICAgICAgIERvIHByZWxpbWluYXJ5IHdvcmsgdG8gcGFzcyBkb21haW4gbmFtZXMgdG8gQ29y
ZUxvY2F0aW9uCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0yMzY1NjYKKyAgICAgICAgPHJkYXI6Ly84ODc2MTQxMz4KKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBEbyBwcmVsaW1pbmFyeSB3b3JrIHRvIHBhc3Mg
ZG9tYWluIG5hbWVzIHRvIENvcmVMb2NhdGlvbiB3aGVuIHVzaW5nIHRoZSBHZW9sb2NhdGlvbiBB
UEkuCisgICAgICAgIFRoaXMgcGlwZXMgdGhlIGRvbWFpbiBuYW1lcyBhbGwgdGhlIHdheSBmcm9t
IHRoZSBHZW9sb2NhdGlvbiBBUEkgdG8gdGhlIENvcmVMb2NhdGlvbiBjYWxscworICAgICAgICBi
dXQgZG9lc24ndCB5ZXQgcGFzcyB0aGUgZG9tYWluIHRvIENvcmVMb2NhdGlvbiBkdWUgdG8gPHJk
YXI6Ly84ODgzNDMwMT4uIEkgd2lsbCBmb2xsb3ctdXAKKyAgICAgICAgb25jZSA8cmRhcjovLzg4
ODM0MzAxPiBpcyBmaXhlZC4KKworICAgICAgICAqIE1vZHVsZXMvZ2VvbG9jYXRpb24vR2VvbG9j
YXRpb25DbGllbnQuaDoKKyAgICAgICAgKiBNb2R1bGVzL2dlb2xvY2F0aW9uL0dlb2xvY2F0aW9u
Q29udHJvbGxlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpHZW9sb2NhdGlvbkNvbnRyb2xsZXI6
OmRpZE5hdmlnYXRlUGFnZSk6CisgICAgICAgIChXZWJDb3JlOjpHZW9sb2NhdGlvbkNvbnRyb2xs
ZXI6OmFkZE9ic2VydmVyKToKKyAgICAgICAgKFdlYkNvcmU6Okdlb2xvY2F0aW9uQ29udHJvbGxl
cjo6cmVtb3ZlT2JzZXJ2ZXIpOgorICAgICAgICAoV2ViQ29yZTo6R2VvbG9jYXRpb25Db250cm9s
bGVyOjphY3Rpdml0eVN0YXRlRGlkQ2hhbmdlKToKKyAgICAgICAgKFdlYkNvcmU6Okdlb2xvY2F0
aW9uQ29udHJvbGxlcjo6c3RhcnRVcGRhdGluZ0lmTmVjZXNzYXJ5KToKKyAgICAgICAgKFdlYkNv
cmU6Okdlb2xvY2F0aW9uQ29udHJvbGxlcjo6c3RvcFVwZGF0aW5nSWZOZWNlc3NhcnkpOgorICAg
ICAgICAqIE1vZHVsZXMvZ2VvbG9jYXRpb24vR2VvbG9jYXRpb25Db250cm9sbGVyLmg6CisgICAg
ICAgIChXZWJDb3JlOjpHZW9sb2NhdGlvbkNvbnRyb2xsZXI6Om5lZWRzSGlnaEFjY3VyYWN5IGNv
bnN0KToKKyAgICAgICAgKiBNb2R1bGVzL2dlb2xvY2F0aW9uL0dlb2xvY2F0aW9uUG9zaXRpb25E
YXRhLmg6CisgICAgICAgICogTW9kdWxlcy9nZW9sb2NhdGlvbi9pb3MvR2VvbG9jYXRpb25Qb3Np
dGlvbkRhdGFJT1MubW06CisgICAgICAgICogU291cmNlc0NvY29hLnR4dDoKKyAgICAgICAgKiBX
ZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogcGFnZS9QYWdlLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OlBhZ2U6OmRpZENvbW1pdExvYWQpOgorICAgICAgICAqIHBs
YXRmb3JtL2NvY29hL0NvcmVMb2NhdGlvbkdlb2xvY2F0aW9uUHJvdmlkZXIuaDogQ29waWVkIGZy
b20gU291cmNlL1dlYkNvcmUvTW9kdWxlcy9nZW9sb2NhdGlvbi9HZW9sb2NhdGlvbkNsaWVudC5o
LgorICAgICAgICAqIHBsYXRmb3JtL2NvY29hL0NvcmVMb2NhdGlvbkdlb2xvY2F0aW9uUHJvdmlk
ZXIubW06IEFkZGVkLgorICAgICAgICAoaXNBdXRob3JpemF0aW9uR3JhbnRlZCk6CisgICAgICAg
ICgtW1dlYkNMTG9jYXRpb25NYW5hZ2VyIGluaXRXaXRoV2Vic2l0ZUlkZW50aWZpZXI6Y2xpZW50
Ol0pOgorICAgICAgICAoLVtXZWJDTExvY2F0aW9uTWFuYWdlciBkZWFsbG9jXSk6CisgICAgICAg
ICgtW1dlYkNMTG9jYXRpb25NYW5hZ2VyIHN0YXJ0XSk6CisgICAgICAgICgtW1dlYkNMTG9jYXRp
b25NYW5hZ2VyIHN0b3BdKToKKyAgICAgICAgKC1bV2ViQ0xMb2NhdGlvbk1hbmFnZXIgc2V0RW5h
YmxlSGlnaEFjY3VyYWN5Ol0pOgorICAgICAgICAoLVtXZWJDTExvY2F0aW9uTWFuYWdlciByZXF1
ZXN0R2VvbG9jYXRpb25BdXRob3JpemF0aW9uXSk6CisgICAgICAgICgtW1dlYkNMTG9jYXRpb25N
YW5hZ2VyIGxvY2F0aW9uTWFuYWdlckRpZENoYW5nZUF1dGhvcml6YXRpb246XSk6CisgICAgICAg
ICgtW1dlYkNMTG9jYXRpb25NYW5hZ2VyIGxvY2F0aW9uTWFuYWdlcjpkaWRVcGRhdGVMb2NhdGlv
bnM6XSk6CisgICAgICAgICgtW1dlYkNMTG9jYXRpb25NYW5hZ2VyIGxvY2F0aW9uTWFuYWdlcjpk
aWRGYWlsV2l0aEVycm9yOl0pOgorICAgICAgICAoV2ViQ29yZTo6Q29yZUxvY2F0aW9uR2VvbG9j
YXRpb25Qcm92aWRlcjo6Q29yZUxvY2F0aW9uR2VvbG9jYXRpb25Qcm92aWRlcik6CisgICAgICAg
IChXZWJDb3JlOjpDb3JlTG9jYXRpb25HZW9sb2NhdGlvblByb3ZpZGVyOjp+Q29yZUxvY2F0aW9u
R2VvbG9jYXRpb25Qcm92aWRlcik6CisgICAgICAgIChXZWJDb3JlOjpDb3JlTG9jYXRpb25HZW9s
b2NhdGlvblByb3ZpZGVyOjpzdGFydCk6CisgICAgICAgIChXZWJDb3JlOjpDb3JlTG9jYXRpb25H
ZW9sb2NhdGlvblByb3ZpZGVyOjpzdG9wKToKKyAgICAgICAgKFdlYkNvcmU6OkNvcmVMb2NhdGlv
bkdlb2xvY2F0aW9uUHJvdmlkZXI6OnNldEVuYWJsZUhpZ2hBY2N1cmFjeSk6CisgICAgICAgIChX
ZWJDb3JlOjpDb3JlTG9jYXRpb25HZW9sb2NhdGlvblByb3ZpZGVyOjpyZXF1ZXN0QXV0aG9yaXph
dGlvbik6CisgICAgICAgICogcGxhdGZvcm0vbW9jay9HZW9sb2NhdGlvbkNsaWVudE1vY2suY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6R2VvbG9jYXRpb25DbGllbnRNb2NrOjpzdGFydFVwZGF0aW5n
KToKKyAgICAgICAgKiBwbGF0Zm9ybS9tb2NrL0dlb2xvY2F0aW9uQ2xpZW50TW9jay5oOgorCiAy
MDIyLTAyLTEyICBQYXRyaWNrIEFuZ2xlICA8cGFuZ2xlQGFwcGxlLmNvbT4KIAogICAgICAgICBX
ZWIgSW5zcGVjdG9yOiBbRmxleGJveF0gU2hvdyBpdGVtIGJvdW5kcywgZ2FwcywgYW5kIGZyZWUg
c3BhY2UgaW4gZmxleCBvdmVybGF5cwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9DaGFuZ2VM
b2cgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwppbmRleCA4MWMxMWI3ODVlYTg2MTJlYjI3NmQz
ODBmZGNjOTI1NmFlOTMxN2ZkLi42MWVjNzA0MDIwYTViZWI5Njc5MDM3Njk4OTBiYTk2MzI0NTAy
MWRmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2Vi
S2l0L0NoYW5nZUxvZwpAQCAtMSwzICsxLDk0IEBACisyMDIyLTAyLTEzICBDaHJpcyBEdW1leiAg
PGNkdW1lekBhcHBsZS5jb20+CisKKyAgICAgICAgRG8gcHJlbGltaW5hcnkgd29yayB0byBwYXNz
IGRvbWFpbiBuYW1lcyB0byBDb3JlTG9jYXRpb24KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTIzNjU2NgorICAgICAgICA8cmRhcjovLzg4NzYxNDEzPgor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIERvIHByZWxp
bWluYXJ5IHdvcmsgdG8gcGFzcyBkb21haW4gbmFtZXMgdG8gQ29yZUxvY2F0aW9uIHdoZW4gdXNp
bmcgdGhlIEdlb2xvY2F0aW9uIEFQSS4KKyAgICAgICAgVGhpcyBwaXBlcyB0aGUgZG9tYWluIG5h
bWVzIGFsbCB0aGUgd2F5IGZyb20gdGhlIEdlb2xvY2F0aW9uIEFQSSB0byB0aGUgQ29yZUxvY2F0
aW9uIGNhbGxzCisgICAgICAgIGJ1dCBkb2Vzbid0IHlldCBwYXNzIHRoZSBkb21haW4gdG8gQ29y
ZUxvY2F0aW9uIGR1ZSB0byA8cmRhcjovLzg4ODM0MzAxPi4gSSB3aWxsIGZvbGxvdy11cAorICAg
ICAgICBvbmNlIDxyZGFyOi8vODg4MzQzMDE+IGlzIGZpeGVkLgorCisgICAgICAgICogU291cmNl
c0NvY29hLnR4dDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0MvV0tHZW9sb2NhdGlvbk1hbmFn
ZXIuY3BwOgorICAgICAgICAoV0tHZW9sb2NhdGlvbk1hbmFnZXJTZXRQcm92aWRlcik6CisgICAg
ICAgICogVUlQcm9jZXNzL0NvY29hL1dlYkdlb2xvY2F0aW9uTWFuYWdlclByb3h5Q29jb2EuY3Bw
OiBBZGRlZC4KKyAgICAgICAgKFdlYktpdDo6V2ViR2VvbG9jYXRpb25NYW5hZ2VyUHJveHk6OnBv
c2l0aW9uQ2hhbmdlZCk6CisgICAgICAgIChXZWJLaXQ6OldlYkdlb2xvY2F0aW9uTWFuYWdlclBy
b3h5OjplcnJvck9jY3VycmVkKToKKyAgICAgICAgKFdlYktpdDo6V2ViR2VvbG9jYXRpb25NYW5h
Z2VyUHJveHk6OnJlc2V0R2VvbG9jYXRpb24pOgorICAgICAgICAoV2ViS2l0OjpXZWJHZW9sb2Nh
dGlvbk1hbmFnZXJQcm94eTo6aXNVcGRhdGluZyBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6Oldl
Ykdlb2xvY2F0aW9uTWFuYWdlclByb3h5Ojppc0hpZ2hBY2N1cmFjeUVuYWJsZWQgY29uc3QpOgor
ICAgICAgICAoV2ViS2l0OjpXZWJHZW9sb2NhdGlvbk1hbmFnZXJQcm94eTo6cHJvdmlkZXJTdGFy
dFVwZGF0aW5nKToKKyAgICAgICAgKFdlYktpdDo6V2ViR2VvbG9jYXRpb25NYW5hZ2VyUHJveHk6
OnByb3ZpZGVyU3RvcFVwZGF0aW5nKToKKyAgICAgICAgKFdlYktpdDo6V2ViR2VvbG9jYXRpb25N
YW5hZ2VyUHJveHk6OnByb3ZpZGVyU2V0RW5hYmxlZEhpZ2hBY2N1cmFjeSk6CisgICAgICAgICog
VUlQcm9jZXNzL1dlYkdlb2xvY2F0aW9uTWFuYWdlclByb3h5LmNwcDoKKyAgICAgICAgKFdlYktp
dDo6V2ViR2VvbG9jYXRpb25NYW5hZ2VyUHJveHk6OldlYkdlb2xvY2F0aW9uTWFuYWdlclByb3h5
KToKKyAgICAgICAgKFdlYktpdDo6V2ViR2VvbG9jYXRpb25NYW5hZ2VyUHJveHk6OnByb2Nlc3NQ
b29sRGVzdHJveWVkKToKKyAgICAgICAgKFdlYktpdDo6V2ViR2VvbG9jYXRpb25NYW5hZ2VyUHJv
eHk6OnByb2Nlc3NEaWRDbG9zZSk6CisgICAgICAgIChXZWJLaXQ6OldlYkdlb2xvY2F0aW9uTWFu
YWdlclByb3h5Ojpwcm92aWRlckRpZENoYW5nZVBvc2l0aW9uKToKKyAgICAgICAgKFdlYktpdDo6
V2ViR2VvbG9jYXRpb25NYW5hZ2VyUHJveHk6OnByb3ZpZGVyRGlkRmFpbFRvRGV0ZXJtaW5lUG9z
aXRpb24pOgorICAgICAgICAoV2ViS2l0OjpXZWJHZW9sb2NhdGlvbk1hbmFnZXJQcm94eTo6c3Rh
cnRVcGRhdGluZyk6CisgICAgICAgIChXZWJLaXQ6OldlYkdlb2xvY2F0aW9uTWFuYWdlclByb3h5
OjpzdG9wVXBkYXRpbmcpOgorICAgICAgICAoV2ViS2l0OjpXZWJHZW9sb2NhdGlvbk1hbmFnZXJQ
cm94eTo6c2V0RW5hYmxlSGlnaEFjY3VyYWN5KToKKyAgICAgICAgKFdlYktpdDo6V2ViR2VvbG9j
YXRpb25NYW5hZ2VyUHJveHk6OnNldFByb3ZpZGVyKToKKyAgICAgICAgKFdlYktpdDo6V2ViR2Vv
bG9jYXRpb25NYW5hZ2VyUHJveHk6OmlzVXBkYXRpbmcgY29uc3QpOgorICAgICAgICAoV2ViS2l0
OjpXZWJHZW9sb2NhdGlvbk1hbmFnZXJQcm94eTo6aXNIaWdoQWNjdXJhY3lFbmFibGVkIGNvbnN0
KToKKyAgICAgICAgKFdlYktpdDo6V2ViR2VvbG9jYXRpb25NYW5hZ2VyUHJveHk6OnByb3ZpZGVy
U3RhcnRVcGRhdGluZyk6CisgICAgICAgIChXZWJLaXQ6OldlYkdlb2xvY2F0aW9uTWFuYWdlclBy
b3h5Ojpwcm92aWRlclN0b3BVcGRhdGluZyk6CisgICAgICAgIChXZWJLaXQ6OldlYkdlb2xvY2F0
aW9uTWFuYWdlclByb3h5Ojpwcm92aWRlclNldEVuYWJsZWRIaWdoQWNjdXJhY3kpOgorICAgICAg
ICAoV2ViS2l0OjpXZWJHZW9sb2NhdGlvbk1hbmFnZXJQcm94eTo6cmVzZXRQZXJtaXNzaW9ucyk6
IERlbGV0ZWQuCisgICAgICAgIChXZWJLaXQ6OldlYkdlb2xvY2F0aW9uTWFuYWdlclByb3h5Ojpy
ZW1vdmVSZXF1ZXN0ZXIpOiBEZWxldGVkLgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJHZW9sb2Nh
dGlvbk1hbmFnZXJQcm94eS5oOgorICAgICAgICAoV2ViS2l0OjpXZWJHZW9sb2NhdGlvbk1hbmFn
ZXJQcm94eTo6bGFzdFBvc2l0aW9uIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYktpdDo6
V2ViR2VvbG9jYXRpb25NYW5hZ2VyUHJveHk6OmlzVXBkYXRpbmcgY29uc3QpOiBEZWxldGVkLgor
ICAgICAgICAoV2ViS2l0OjpXZWJHZW9sb2NhdGlvbk1hbmFnZXJQcm94eTo6aXNIaWdoQWNjdXJh
Y3lFbmFibGVkIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViR2VvbG9j
YXRpb25NYW5hZ2VyUHJveHkubWVzc2FnZXMuaW46CisgICAgICAgICogVUlQcm9jZXNzL2lvcy9X
S0dlb2xvY2F0aW9uUHJvdmlkZXJJT1MubW06CisgICAgICAgICgtW1dLR2VvbG9jYXRpb25Qcm92
aWRlcklPUyBfc3RhcnRVcGRhdGluZ10pOgorICAgICAgICAoLVtXS0dlb2xvY2F0aW9uUHJvdmlk
ZXJJT1MgX3N0b3BVcGRhdGluZ10pOgorICAgICAgICAoLVtXS0dlb2xvY2F0aW9uUHJvdmlkZXJJ
T1MgX3NldEVuYWJsZUhpZ2hBY2N1cmFjeTpdKToKKyAgICAgICAgKC1bV0tHZW9sb2NhdGlvblBy
b3ZpZGVySU9TIGluaXRXaXRoUHJvY2Vzc1Bvb2w6XSk6CisgICAgICAgICgtW1dLR2VvbG9jYXRp
b25Qcm92aWRlcklPUyBkZWNpZGVQb2xpY3lGb3JHZW9sb2NhdGlvblJlcXVlc3RGcm9tT3JpZ2lu
OmNvbXBsZXRpb25IYW5kbGVyOnZpZXc6XSk6CisgICAgICAgICgtW1dLR2VvbG9jYXRpb25Qcm92
aWRlcklPUyBnZW9sb2NhdGlvbkF1dGhvcml6YXRpb25HcmFudGVkXSk6CisgICAgICAgICgtW1dL
R2VvbG9jYXRpb25Qcm92aWRlcklPUyBwb3NpdGlvbkNoYW5nZWQ6XSk6CisgICAgICAgICgtW1dL
R2VvbG9jYXRpb25Qcm92aWRlcklPUyBlcnJvck9jY3VycmVkOl0pOgorICAgICAgICAoLVtXS0dl
b2xvY2F0aW9uUHJvdmlkZXJJT1MgcmVzZXRHZW9sb2NhdGlvbl0pOgorICAgICAgICAoc3RhcnRV
cGRhdGluZ0NhbGxiYWNrKTogRGVsZXRlZC4KKyAgICAgICAgKHN0b3BVcGRhdGluZ0NhbGxiYWNr
KTogRGVsZXRlZC4KKyAgICAgICAgKHNldEVuYWJsZUhpZ2hBY2N1cmFjeSk6IERlbGV0ZWQuCisg
ICAgICAgICgtW1dLTGVnYWN5Q29yZUxvY2F0aW9uUHJvdmlkZXIgc2V0TGlzdGVuZXI6XSk6IERl
bGV0ZWQuCisgICAgICAgICgtW1dLTGVnYWN5Q29yZUxvY2F0aW9uUHJvdmlkZXIgcmVxdWVzdEdl
b2xvY2F0aW9uQXV0aG9yaXphdGlvbl0pOiBEZWxldGVkLgorICAgICAgICAoLVtXS0xlZ2FjeUNv
cmVMb2NhdGlvblByb3ZpZGVyIHN0YXJ0XSk6IERlbGV0ZWQuCisgICAgICAgICgtW1dLTGVnYWN5
Q29yZUxvY2F0aW9uUHJvdmlkZXIgc3RvcF0pOiBEZWxldGVkLgorICAgICAgICAoLVtXS0xlZ2Fj
eUNvcmVMb2NhdGlvblByb3ZpZGVyIHNldEVuYWJsZUhpZ2hBY2N1cmFjeTpdKTogRGVsZXRlZC4K
KyAgICAgICAgKC1bV0tMZWdhY3lDb3JlTG9jYXRpb25Qcm92aWRlciBnZW9sb2NhdGlvbkF1dGhv
cml6YXRpb25HcmFudGVkXSk6IERlbGV0ZWQuCisgICAgICAgICgtW1dLTGVnYWN5Q29yZUxvY2F0
aW9uUHJvdmlkZXIgZ2VvbG9jYXRpb25BdXRob3JpemF0aW9uRGVuaWVkXSk6IERlbGV0ZWQuCisg
ICAgICAgICgtW1dLTGVnYWN5Q29yZUxvY2F0aW9uUHJvdmlkZXIgcG9zaXRpb25DaGFuZ2VkOl0p
OiBEZWxldGVkLgorICAgICAgICAoLVtXS0xlZ2FjeUNvcmVMb2NhdGlvblByb3ZpZGVyIGVycm9y
T2NjdXJyZWQ6XSk6IERlbGV0ZWQuCisgICAgICAgICgtW1dLTGVnYWN5Q29yZUxvY2F0aW9uUHJv
dmlkZXIgcmVzZXRHZW9sb2NhdGlvbl0pOiBEZWxldGVkLgorICAgICAgICAqIFdlYktpdC54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIFdlYlByb2Nlc3MvR2VvbG9jYXRpb24v
V2ViR2VvbG9jYXRpb25NYW5hZ2VyLmNwcDoKKyAgICAgICAgKFdlYktpdDo6cmVnaXN0cmFibGVE
b21haW5Gb3JQYWdlKToKKyAgICAgICAgKFdlYktpdDo6V2ViR2VvbG9jYXRpb25NYW5hZ2VyOjpy
ZWdpc3RlcldlYlBhZ2UpOgorICAgICAgICAoV2ViS2l0OjpXZWJHZW9sb2NhdGlvbk1hbmFnZXI6
OnVucmVnaXN0ZXJXZWJQYWdlKToKKyAgICAgICAgKFdlYktpdDo6V2ViR2VvbG9jYXRpb25NYW5h
Z2VyOjpzZXRFbmFibGVIaWdoQWNjdXJhY3lGb3JQYWdlKToKKyAgICAgICAgKFdlYktpdDo6V2Vi
R2VvbG9jYXRpb25NYW5hZ2VyOjpkaWRDaGFuZ2VQb3NpdGlvbik6CisgICAgICAgIChXZWJLaXQ6
OldlYkdlb2xvY2F0aW9uTWFuYWdlcjo6ZGlkRmFpbFRvRGV0ZXJtaW5lUG9zaXRpb24pOgorICAg
ICAgICAoV2ViS2l0OjpXZWJHZW9sb2NhdGlvbk1hbmFnZXI6OnJlc2V0UGVybWlzc2lvbnMpOgor
ICAgICAgICAoV2ViS2l0OjpXZWJHZW9sb2NhdGlvbk1hbmFnZXI6OmlzVXBkYXRpbmcgY29uc3Qp
OiBEZWxldGVkLgorICAgICAgICAoV2ViS2l0OjpXZWJHZW9sb2NhdGlvbk1hbmFnZXI6OmlzSGln
aEFjY3VyYWN5RW5hYmxlZCBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgICogV2ViUHJvY2Vzcy9H
ZW9sb2NhdGlvbi9XZWJHZW9sb2NhdGlvbk1hbmFnZXIuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNz
L0dlb2xvY2F0aW9uL1dlYkdlb2xvY2F0aW9uTWFuYWdlci5tZXNzYWdlcy5pbjoKKyAgICAgICAg
KiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkdlb2xvY2F0aW9uQ2xpZW50LmNwcDoKKyAg
ICAgICAgKFdlYktpdDo6V2ViR2VvbG9jYXRpb25DbGllbnQ6OnN0YXJ0VXBkYXRpbmcpOgorICAg
ICAgICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViR2VvbG9jYXRpb25DbGllbnQuaDoK
KyAgICAgICAgKFdlYktpdDo6V2ViR2VvbG9jYXRpb25DbGllbnQ6OldlYkdlb2xvY2F0aW9uQ2xp
ZW50KTogRGVsZXRlZC4KKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3BwOgorICAg
ICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzOjpyZXNldEFsbEdlb2xvY2F0aW9uUGVybWlzc2lvbnMp
OiBEZWxldGVkLgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUHJvY2Vzcy5oOgorCiAyMDIyLTAy
LTEyICBKZXIgTm9ibGUgIDxqZXIubm9ibGVAYXBwbGUuY29tPgogCiAgICAgICAgIEFkZCBzZXR0
aW5ncyB0byByZXN0cmljdCBtZWRpYSBjb250YWluZXJzIGFuZCBjb2RlY3Mgd2hlbiBpbiBDYXB0
aXZlIFBvcnRhbCBtb2RlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9DaGFu
Z2VMb2cgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9DaGFuZ2VMb2cKaW5kZXggNjgwMzk0ODU4
YTE1YjhhMjU2OTZhYWVjN2M4ZDk0YWE3M2FkNzIyMy4uMjU5NzZhMmYwZjQ4ZDNjM2NlMjk4YmZl
ZjgwZTFhZmIxMDU4OGY2NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2hh
bmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxvZwpAQCAtMSwzICsx
LDE1IEBACisyMDIyLTAyLTEzICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CisKKyAg
ICAgICAgRG8gcHJlbGltaW5hcnkgd29yayB0byBwYXNzIGRvbWFpbiBuYW1lcyB0byBDb3JlTG9j
YXRpb24KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIz
NjU2NgorICAgICAgICA8cmRhcjovLzg4NzYxNDEzPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2ViR2VvbG9jYXRpb25D
bGllbnQuaDoKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJHZW9sb2NhdGlvbkNsaWVudC5t
bToKKyAgICAgICAgKFdlYkdlb2xvY2F0aW9uQ2xpZW50OjpzdGFydFVwZGF0aW5nKToKKwogMjAy
Mi0wMi0xMSAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgogCiAgICAgICAgIFVucmV2
aWV3ZWQsIGZpeCBidWlsZCB3aXRoIHRoZSBsYXRlc3QgaU9TIFNESy4KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXRMZWdhY3kvd2luL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2lu
L0NoYW5nZUxvZwppbmRleCA2OTVhYTkxMDUzOWVmMDIxMDVmNTIxOTMwNGMwOTdlMTAzMTI2NDU1
Li4xZDZjMDMzZTJjZDFkMTI3NDQ1YzM1YzMwY2EzODg1MGFlZjdiZGI0IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdExlZ2Fj
eS93aW4vQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTUgQEAKKzIwMjItMDItMTMgIENocmlzIER1bWV6
ICA8Y2R1bWV6QGFwcGxlLmNvbT4KKworICAgICAgICBEbyBwcmVsaW1pbmFyeSB3b3JrIHRvIHBh
c3MgZG9tYWluIG5hbWVzIHRvIENvcmVMb2NhdGlvbgorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjM2NTY2CisgICAgICAgIDxyZGFyOi8vODg3NjE0MTM+
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBXZWJD
b3JlU3VwcG9ydC9XZWJHZW9sb2NhdGlvbkNsaWVudC5jcHA6CisgICAgICAgIChXZWJHZW9sb2Nh
dGlvbkNsaWVudDo6c3RhcnRVcGRhdGluZyk6CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2Vi
R2VvbG9jYXRpb25DbGllbnQuaDoKKwogMjAyMi0wMi0wMSAgTXlsZXMgQy4gTWF4ZmllbGQgIDxt
bWF4ZmllbGRAYXBwbGUuY29tPgogCiAgICAgICAgIFJlbmFtZSBGb250Q2FzY2FkZTo6Zm9udE1l
dHJpY3MoKSBhbmQgUmVuZGVyU3R5bGU6OmZvbnRNZXRyaWNzKCkgdG8gZm9udE1ldHJpY3NPZlBy
aW1hcnlGb250KCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL1BsYXRmb3JtSGF2ZS5oIGIv
U291cmNlL1dURi93dGYvUGxhdGZvcm1IYXZlLmgKaW5kZXggMDkyYmMzNjIxNTAxZDQ0Y2VhZmIw
NzBmYWNjZDM5OTVjZGEyMzEyNy4uNjhhMzA0NWNhNzY2OWNmY2ExOWQ4Mzg1ZTk4NjM2ZTQ0OTk5
OTNmNiAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvUGxhdGZvcm1IYXZlLmgKKysrIGIvU291
cmNlL1dURi93dGYvUGxhdGZvcm1IYXZlLmgKQEAgLTExMTksNiArMTExOSwxMiBAQAogI2RlZmlu
ZSBIQVZFX05TVEVYVExJU1RfTUFSS0VSX0ZPUk1BVFMgMQogI2VuZGlmCiAKKyNpZiAoUExBVEZP
Uk0oSU9TKSAmJiBfX0lQSE9ORV9PU19WRVJTSU9OX01BWF9BTExPV0VEID49IDE2MDAwMCkgXAor
ICAgIHx8IChQTEFURk9STShXQVRDSE9TKSAmJiBfX1dBVENIX09TX1ZFUlNJT05fTUFYX0FMTE9X
RUQgPj0gOTAwMDApIFwKKyAgICB8fCAoUExBVEZPUk0oQVBQTEVUVikgJiYgX19UVl9PU19WRVJT
SU9OX01BWF9BTExPV0VEID49IDE2MDAwMCkKKyNkZWZpbmUgSEFWRV9DT1JFX0xPQ0FUSU9OX1dF
QlNJVEVfSURFTlRJRklFUlMgMQorI2VuZGlmCisKICNpZiBQTEFURk9STShNQUMpCiAjZGVmaW5l
IEhBVkVfU0NFTkVLSVQgMQogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2dlb2xvY2F0aW9uL0dlb2xvY2F0aW9uQ2xpZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2dlb2xvY2F0aW9uL0dlb2xvY2F0aW9uQ2xpZW50LmgKaW5kZXggNWJhZjNhZDgyYzU3ZTVh
Y2JhOTZlM2RmMGVkNjBlYmM3NTRiY2IwNS4uYTRlODYyMzYyNTU2N2U5YWRmZWIwMGQ4MjQwMDBh
Mjc3ZGJlYWYwMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9nZW9sb2NhdGlv
bi9HZW9sb2NhdGlvbkNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZ2VvbG9j
YXRpb24vR2VvbG9jYXRpb25DbGllbnQuaApAQCAtMzgsNyArMzgsNyBAQCBjbGFzcyBHZW9sb2Nh
dGlvbkNsaWVudCB7CiBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIGdlb2xvY2F0aW9uRGVzdHJv
eWVkKCkgPSAwOwogCi0gICAgdmlydHVhbCB2b2lkIHN0YXJ0VXBkYXRpbmcoY29uc3QgU3RyaW5n
JiBhdXRob3JpemF0aW9uVG9rZW4pID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgc3RhcnRVcGRhdGlu
Zyhjb25zdCBTdHJpbmcmIGF1dGhvcml6YXRpb25Ub2tlbiwgYm9vbCBuZWVkc0hpZ2hBY2N1cmFj
eSkgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBzdG9wVXBkYXRpbmcoKSA9IDA7CiAgICAgdmlydHVh
bCB2b2lkIHJldm9rZUF1dGhvcml6YXRpb25Ub2tlbihjb25zdCBTdHJpbmcmKSB7IH0KIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9nZW9sb2NhdGlvbi9HZW9sb2NhdGlvbkNv
bnRyb2xsZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9nZW9sb2NhdGlvbi9HZW9sb2Nh
dGlvbkNvbnRyb2xsZXIuY3BwCmluZGV4IDA2MTYyOTE2MGQ5YmNjN2Q1ZGFmNzRjZmM0ZjgxNTUw
YmE0OGRlOGMuLjA3ZGQ2NWYzYzFhZWU3OWViOWM3MzI4MzZhMmQ1YWFkMDE3MzMzY2YgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZ2VvbG9jYXRpb24vR2VvbG9jYXRpb25Db250
cm9sbGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2dlb2xvY2F0aW9uL0dlb2xv
Y2F0aW9uQ29udHJvbGxlci5jcHAKQEAgLTUyLDE5ICs1MiwyNSBAQCBHZW9sb2NhdGlvbkNvbnRy
b2xsZXI6On5HZW9sb2NhdGlvbkNvbnRyb2xsZXIoKQogICAgIG1fY2xpZW50Lmdlb2xvY2F0aW9u
RGVzdHJveWVkKCk7CiB9CiAKK3ZvaWQgR2VvbG9jYXRpb25Db250cm9sbGVyOjpkaWROYXZpZ2F0
ZVBhZ2UoKQoreworICAgIHdoaWxlICghbV9vYnNlcnZlcnMuaXNFbXB0eSgpKQorICAgICAgICBy
ZW1vdmVPYnNlcnZlcihtX29ic2VydmVycy5iZWdpbigpLT5nZXQoKSk7Cit9CisKIHZvaWQgR2Vv
bG9jYXRpb25Db250cm9sbGVyOjphZGRPYnNlcnZlcihHZW9sb2NhdGlvbiYgb2JzZXJ2ZXIsIGJv
b2wgZW5hYmxlSGlnaEFjY3VyYWN5KQogewotICAgIC8vIFRoaXMgbWF5IGJlIGNhbGxlZCBtdWx0
aXBsZSB0aW1lcyB3aXRoIHRoZSBzYW1lIG9ic2VydmVyLCB0aG91Z2ggcmVtb3ZlT2JzZXJ2ZXIo
KQotICAgIC8vIGlzIGNhbGxlZCBvbmx5IG9uY2Ugd2l0aCBlYWNoLgotICAgIGJvb2wgd2FzRW1w
dHkgPSBtX29ic2VydmVycy5pc0VtcHR5KCk7CisgICAgYm9vbCBoaWdoQWNjdXJhY3lXYXNSZXF1
aXJlZCA9IG5lZWRzSGlnaEFjY3VyYWN5KCk7CisKICAgICBtX29ic2VydmVycy5hZGQob2JzZXJ2
ZXIpOwogICAgIGlmIChlbmFibGVIaWdoQWNjdXJhY3kpCiAgICAgICAgIG1faGlnaEFjY3VyYWN5
T2JzZXJ2ZXJzLmFkZChvYnNlcnZlcik7CiAKLSAgICBpZiAoZW5hYmxlSGlnaEFjY3VyYWN5KQot
ICAgICAgICBtX2NsaWVudC5zZXRFbmFibGVIaWdoQWNjdXJhY3kodHJ1ZSk7Ci0gICAgaWYgKHdh
c0VtcHR5ICYmIG1fcGFnZS5pc1Zpc2libGUoKSkKLSAgICAgICAgbV9jbGllbnQuc3RhcnRVcGRh
dGluZyhvYnNlcnZlci5hdXRob3JpemF0aW9uVG9rZW4oKSk7CisgICAgaWYgKG1faXNVcGRhdGlu
ZykgeworICAgICAgICBpZiAoIWhpZ2hBY2N1cmFjeVdhc1JlcXVpcmVkICYmIGVuYWJsZUhpZ2hB
Y2N1cmFjeSkKKyAgICAgICAgICAgIG1fY2xpZW50LnNldEVuYWJsZUhpZ2hBY2N1cmFjeSh0cnVl
KTsKKyAgICB9IGVsc2UKKyAgICAgICAgc3RhcnRVcGRhdGluZ0lmTmVjZXNzYXJ5KCk7CiB9CiAK
IHZvaWQgR2VvbG9jYXRpb25Db250cm9sbGVyOjpyZW1vdmVPYnNlcnZlcihHZW9sb2NhdGlvbiYg
b2JzZXJ2ZXIpCkBAIC03MiwxMiArNzgsMTcgQEAgdm9pZCBHZW9sb2NhdGlvbkNvbnRyb2xsZXI6
OnJlbW92ZU9ic2VydmVyKEdlb2xvY2F0aW9uJiBvYnNlcnZlcikKICAgICBpZiAoIW1fb2JzZXJ2
ZXJzLmNvbnRhaW5zKG9ic2VydmVyKSkKICAgICAgICAgcmV0dXJuOwogCisgICAgYm9vbCBoaWdo
QWNjdXJhY3lXYXNSZXF1aXJlZCA9IG5lZWRzSGlnaEFjY3VyYWN5KCk7CisKICAgICBtX29ic2Vy
dmVycy5yZW1vdmUob2JzZXJ2ZXIpOwogICAgIG1faGlnaEFjY3VyYWN5T2JzZXJ2ZXJzLnJlbW92
ZShvYnNlcnZlcik7CiAKKyAgICBpZiAoIW1faXNVcGRhdGluZykKKyAgICAgICAgcmV0dXJuOwor
CiAgICAgaWYgKG1fb2JzZXJ2ZXJzLmlzRW1wdHkoKSkKLSAgICAgICAgbV9jbGllbnQuc3RvcFVw
ZGF0aW5nKCk7Ci0gICAgZWxzZSBpZiAobV9oaWdoQWNjdXJhY3lPYnNlcnZlcnMuaXNFbXB0eSgp
KQorICAgICAgICBzdG9wVXBkYXRpbmdJZk5lY2Vzc2FyeSgpOworICAgIGVsc2UgaWYgKGhpZ2hB
Y2N1cmFjeVdhc1JlcXVpcmVkICYmICFuZWVkc0hpZ2hBY2N1cmFjeSgpKQogICAgICAgICBtX2Ns
aWVudC5zZXRFbmFibGVIaWdoQWNjdXJhY3koZmFsc2UpOwogfQogCkBAIC0xMzksOSArMTUwLDkg
QEAgdm9pZCBHZW9sb2NhdGlvbkNvbnRyb2xsZXI6OmFjdGl2aXR5U3RhdGVEaWRDaGFuZ2UoT3B0
aW9uU2V0PEFjdGl2aXR5U3RhdGU6OkZsYWcKICAgICBhdXRvIGNoYW5nZWQgPSBvbGRBY3Rpdml0
eVN0YXRlIF4gbmV3QWN0aXZpdHlTdGF0ZTsKICAgICBpZiAoY2hhbmdlZCAmIEFjdGl2aXR5U3Rh
dGU6OklzVmlzaWJsZSAmJiAhbV9vYnNlcnZlcnMuaXNFbXB0eSgpKSB7CiAgICAgICAgIGlmIChu
ZXdBY3Rpdml0eVN0YXRlICYgQWN0aXZpdHlTdGF0ZTo6SXNWaXNpYmxlKQotICAgICAgICAgICAg
bV9jbGllbnQuc3RhcnRVcGRhdGluZygoKm1fb2JzZXJ2ZXJzLnJhbmRvbSgpKS0+YXV0aG9yaXph
dGlvblRva2VuKCkpOworICAgICAgICAgICAgc3RhcnRVcGRhdGluZ0lmTmVjZXNzYXJ5KCk7CiAg
ICAgICAgIGVsc2UKLSAgICAgICAgICAgIG1fY2xpZW50LnN0b3BVcGRhdGluZygpOworICAgICAg
ICAgICAgc3RvcFVwZGF0aW5nSWZOZWNlc3NhcnkoKTsKICAgICB9CiAKICAgICBpZiAoIW1fcGFn
ZS5pc1Zpc2libGUoKSkKQEAgLTE1Miw2ICsxNjMsMjQgQEAgdm9pZCBHZW9sb2NhdGlvbkNvbnRy
b2xsZXI6OmFjdGl2aXR5U3RhdGVEaWRDaGFuZ2UoT3B0aW9uU2V0PEFjdGl2aXR5U3RhdGU6OkZs
YWcKICAgICAgICAgbV9jbGllbnQucmVxdWVzdFBlcm1pc3Npb24ocGVybWlzc2lvblJlcXVlc3Qu
Z2V0KCkpOwogfQogCit2b2lkIEdlb2xvY2F0aW9uQ29udHJvbGxlcjo6c3RhcnRVcGRhdGluZ0lm
TmVjZXNzYXJ5KCkKK3sKKyAgICBpZiAobV9pc1VwZGF0aW5nIHx8ICFtX3BhZ2UuaXNWaXNpYmxl
KCkgfHwgbV9vYnNlcnZlcnMuaXNFbXB0eSgpKQorICAgICAgICByZXR1cm47CisKKyAgICBtX2Ns
aWVudC5zdGFydFVwZGF0aW5nKCgqbV9vYnNlcnZlcnMucmFuZG9tKCkpLT5hdXRob3JpemF0aW9u
VG9rZW4oKSwgbmVlZHNIaWdoQWNjdXJhY3koKSk7CisgICAgbV9pc1VwZGF0aW5nID0gdHJ1ZTsK
K30KKwordm9pZCBHZW9sb2NhdGlvbkNvbnRyb2xsZXI6OnN0b3BVcGRhdGluZ0lmTmVjZXNzYXJ5
KCkKK3sKKyAgICBpZiAoIW1faXNVcGRhdGluZykKKyAgICAgICAgcmV0dXJuOworCisgICAgbV9j
bGllbnQuc3RvcFVwZGF0aW5nKCk7CisgICAgbV9pc1VwZGF0aW5nID0gZmFsc2U7Cit9CisKIGNv
bnN0IGNoYXIqIEdlb2xvY2F0aW9uQ29udHJvbGxlcjo6c3VwcGxlbWVudE5hbWUoKQogewogICAg
IHJldHVybiAiR2VvbG9jYXRpb25Db250cm9sbGVyIjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvZ2VvbG9jYXRpb24vR2VvbG9jYXRpb25Db250cm9sbGVyLmggYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2dlb2xvY2F0aW9uL0dlb2xvY2F0aW9uQ29udHJvbGxlci5oCmluZGV4
IDQyZjVkMDYyZGI2ZjA5YzY2MDExMWQ2NmQ5ZjBmY2ZmZjNiMjA3NDAuLmJiZmY1NzVlYjA1ODMy
NDA3ODBkM2I0MWE5Njc0MmM2YjFkNzI0OGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvZ2VvbG9jYXRpb24vR2VvbG9jYXRpb25Db250cm9sbGVyLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9nZW9sb2NhdGlvbi9HZW9sb2NhdGlvbkNvbnRyb2xsZXIuaApAQCAtMzAs
NiArMzAsNyBAQAogI2luY2x1ZGUgIkFjdGl2aXR5U3RhdGVDaGFuZ2VPYnNlcnZlci5oIgogI2lu
Y2x1ZGUgIkdlb2xvY2F0aW9uLmgiCiAjaW5jbHVkZSAiUGFnZS5oIgorI2luY2x1ZGUgIlJlZ2lz
dHJhYmxlRG9tYWluLmgiCiAjaW5jbHVkZSA8d3RmL0hhc2hTZXQuaD4KICNpbmNsdWRlIDx3dGYv
Tm9uY29weWFibGUuaD4KICNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+CkBAIC02NSw2ICs2Niw4IEBA
IHB1YmxpYzoKIAogICAgIHZvaWQgcmV2b2tlQXV0aG9yaXphdGlvblRva2VuKGNvbnN0IFN0cmlu
ZyYpOwogCisgICAgdm9pZCBkaWROYXZpZ2F0ZVBhZ2UoKTsKKwogcHJpdmF0ZToKICAgICBQYWdl
JiBtX3BhZ2U7CiAgICAgR2VvbG9jYXRpb25DbGllbnQmIG1fY2xpZW50OwpAQCAtNzMsNiArNzYs
MTEgQEAgcHJpdmF0ZToKIAogICAgIHN0ZDo6b3B0aW9uYWw8R2VvbG9jYXRpb25Qb3NpdGlvbkRh
dGE+IG1fbGFzdFBvc2l0aW9uOwogCisgICAgYm9vbCBuZWVkc0hpZ2hBY2N1cmFjeSgpIGNvbnN0
IHsgcmV0dXJuICFtX2hpZ2hBY2N1cmFjeU9ic2VydmVycy5pc0VtcHR5KCk7IH0KKworICAgIHZv
aWQgc3RhcnRVcGRhdGluZ0lmTmVjZXNzYXJ5KCk7CisgICAgdm9pZCBzdG9wVXBkYXRpbmdJZk5l
Y2Vzc2FyeSgpOworCiAgICAgdHlwZWRlZiBIYXNoU2V0PFJlZjxHZW9sb2NhdGlvbj4+IE9ic2Vy
dmVyc1NldDsKICAgICAvLyBBbGwgb2JzZXJ2ZXJzOyBib3RoIHRob3NlIHJlcXVlc3RpbmcgaGln
aCBhY2N1cmFjeSBhbmQgdGhvc2Ugbm90LgogICAgIE9ic2VydmVyc1NldCBtX29ic2VydmVyczsK
QEAgLTgwLDYgKzg4LDkgQEAgcHJpdmF0ZToKIAogICAgIC8vIFdoaWxlIHRoZSBwYWdlIGlzIG5v
dCB2aXNpYmxlLCB3ZSBwZW5kIHBlcm1pc3Npb24gcmVxdWVzdHMuCiAgICAgSGFzaFNldDxSZWY8
R2VvbG9jYXRpb24+PiBtX3BlbmRpbmdQZXJtaXNzaW9uUmVxdWVzdDsKKworICAgIFJlZ2lzdHJh
YmxlRG9tYWluIG1fcmVnaXN0cmFibGVEb21haW47CisgICAgYm9vbCBtX2lzVXBkYXRpbmcgeyBm
YWxzZSB9OwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9nZW9sb2NhdGlvbi9HZW9sb2NhdGlvblBvc2l0aW9uRGF0YS5oIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9nZW9sb2NhdGlvbi9HZW9sb2NhdGlvblBvc2l0aW9uRGF0
YS5oCmluZGV4IDkyNjIyMTcwYzhhYWQ2OTg5YjhhMTJjZTQ4MzU2ZGM2ODdiZjZlMzUuLmNjMjE4
MGE4MzdkMjc0M2MxZmJmNzYxYzQxMGUxYzdlYmZlYWVlN2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvZ2VvbG9jYXRpb24vR2VvbG9jYXRpb25Qb3NpdGlvbkRhdGEuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2dlb2xvY2F0aW9uL0dlb2xvY2F0aW9uUG9zaXRpb25E
YXRhLmgKQEAgLTI5LDcgKzI5LDcgQEAKICNpbmNsdWRlIDx3dGYvUmVmLmg+CiAjaW5jbHVkZSA8
d3RmL1JlZkNvdW50ZWQuaD4KIAotI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCisjaWYgUExBVEZP
Uk0oQ09DT0EpCiBPQkpDX0NMQVNTIENMTG9jYXRpb247CiAjZW5kaWYKIApAQCAtNDcsNyArNDcs
NyBAQCBwdWJsaWM6CiAgICAgewogICAgIH0KIAotI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCisj
aWYgUExBVEZPUk0oQ09DT0EpCiAgICAgV0VCQ09SRV9FWFBPUlQgZXhwbGljaXQgR2VvbG9jYXRp
b25Qb3NpdGlvbkRhdGEoQ0xMb2NhdGlvbiopOwogI2VuZGlmCiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvZ2VvbG9jYXRpb24vY29jb2EvR2VvbG9jYXRpb25Qb3NpdGlvbkRh
dGFDb2NvYS5tbSBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZ2VvbG9jYXRpb24vY29jb2EvR2Vv
bG9jYXRpb25Qb3NpdGlvbkRhdGFDb2NvYS5tbQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5jMGE5YmVlNjU1Njk0ZGIz
YWJmMTU3ZWVkMTkwNzZlYWQ1ODU0NDA2Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9nZW9sb2NhdGlvbi9jb2NvYS9HZW9sb2NhdGlvblBvc2l0aW9uRGF0YUNvY29h
Lm1tCkBAIC0wLDAgKzEsNTMgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQXBwbGUgSW5j
LiBBbGwgUmlnaHRzIFJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisg
KiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAq
IElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxM
IEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VS
RU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEs
IE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KKyAqLworCisjaW1wb3J0ICJjb25maWcuaCIKKyNpbXBvcnQgIkdlb2xvY2F0aW9uUG9zaXRp
b24uaCIKKworI2ltcG9ydCA8Q29yZUxvY2F0aW9uL0NMTG9jYXRpb24uaD4KKworbmFtZXNwYWNl
IFdlYkNvcmUgeworCitHZW9sb2NhdGlvblBvc2l0aW9uRGF0YTo6R2VvbG9jYXRpb25Qb3NpdGlv
bkRhdGEoQ0xMb2NhdGlvbiogbG9jYXRpb24pCisgICAgOiB0aW1lc3RhbXAobG9jYXRpb24udGlt
ZXN0YW1wLnRpbWVJbnRlcnZhbFNpbmNlMTk3MCkKKyAgICAsIGxhdGl0dWRlKGxvY2F0aW9uLmNv
b3JkaW5hdGUubGF0aXR1ZGUpCisgICAgLCBsb25naXR1ZGUobG9jYXRpb24uY29vcmRpbmF0ZS5s
b25naXR1ZGUpCisgICAgLCBhY2N1cmFjeShsb2NhdGlvbi5ob3Jpem9udGFsQWNjdXJhY3kpCit7
CisgICAgaWYgKGxvY2F0aW9uLnZlcnRpY2FsQWNjdXJhY3kgPj0gMC4wKSB7CisgICAgICAgIGFs
dGl0dWRlID0gbG9jYXRpb24uYWx0aXR1ZGU7CisgICAgICAgIGFsdGl0dWRlQWNjdXJhY3kgPSBs
b2NhdGlvbi52ZXJ0aWNhbEFjY3VyYWN5OworICAgIH0KKyAgICBpZiAobG9jYXRpb24uc3BlZWQg
Pj0gMC4wKQorICAgICAgICBzcGVlZCA9IGxvY2F0aW9uLnNwZWVkOworICAgIGlmIChsb2NhdGlv
bi5jb3Vyc2UgPj0gMC4wKQorICAgICAgICBoZWFkaW5nID0gbG9jYXRpb24uY291cnNlOworI2lm
ICFQTEFURk9STShNQUNDQVRBTFlTVCkKKyAgICBpZiAobG9jYXRpb24uZmxvb3IpCisgICAgICAg
IGZsb29yTGV2ZWwgPSBsb2NhdGlvbi5mbG9vci5sZXZlbDsKKyNlbmRpZgorfQorCit9IC8vIG5h
bWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2dlb2xv
Y2F0aW9uL2lvcy9HZW9sb2NhdGlvblBvc2l0aW9uRGF0YUlPUy5tbSBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvZ2VvbG9jYXRpb24vaW9zL0dlb2xvY2F0aW9uUG9zaXRpb25EYXRhSU9TLm1tCmRl
bGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5OGQ5YTI0MjFlN2YyMzA5YjRmNjIzYjE0ZDdj
YmUyYjZjN2UwNDVjLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0t
LSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZ2VvbG9jYXRpb24vaW9zL0dlb2xvY2F0aW9uUG9z
aXRpb25EYXRhSU9TLm1tCisrKyAvZGV2L251bGwKQEAgLTEsNTcgKzAsMCBAQAotLyoKLSAqIENv
cHlyaWdodCAoQykgMjAxNyBBcHBsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCi0gKgotICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24u
Ci0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMn
JyBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFRIRQotICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgotICogQ09OVFJJQlVUT1JT
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
Ci0gKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sCi0gKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKLSAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKLSAqIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICog
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpbXBvcnQgImNvbmZpZy5oIgot
I2ltcG9ydCAiR2VvbG9jYXRpb25Qb3NpdGlvbi5oIgotCi0jaWYgUExBVEZPUk0oSU9TX0ZBTUlM
WSkKLQotI2ltcG9ydCA8Q29yZUxvY2F0aW9uL0NMTG9jYXRpb24uaD4KLQotbmFtZXNwYWNlIFdl
YkNvcmUgewotCi1HZW9sb2NhdGlvblBvc2l0aW9uRGF0YTo6R2VvbG9jYXRpb25Qb3NpdGlvbkRh
dGEoQ0xMb2NhdGlvbiogbG9jYXRpb24pCi0gICAgOiB0aW1lc3RhbXAobG9jYXRpb24udGltZXN0
YW1wLnRpbWVJbnRlcnZhbFNpbmNlMTk3MCkKLSAgICAsIGxhdGl0dWRlKGxvY2F0aW9uLmNvb3Jk
aW5hdGUubGF0aXR1ZGUpCi0gICAgLCBsb25naXR1ZGUobG9jYXRpb24uY29vcmRpbmF0ZS5sb25n
aXR1ZGUpCi0gICAgLCBhY2N1cmFjeShsb2NhdGlvbi5ob3Jpem9udGFsQWNjdXJhY3kpCi17Ci0g
ICAgaWYgKGxvY2F0aW9uLnZlcnRpY2FsQWNjdXJhY3kgPj0gMC4wKSB7Ci0gICAgICAgIGFsdGl0
dWRlID0gbG9jYXRpb24uYWx0aXR1ZGU7Ci0gICAgICAgIGFsdGl0dWRlQWNjdXJhY3kgPSBsb2Nh
dGlvbi52ZXJ0aWNhbEFjY3VyYWN5OwotICAgIH0KLSAgICBpZiAobG9jYXRpb24uc3BlZWQgPj0g
MC4wKQotICAgICAgICBzcGVlZCA9IGxvY2F0aW9uLnNwZWVkOwotICAgIGlmIChsb2NhdGlvbi5j
b3Vyc2UgPj0gMC4wKQotICAgICAgICBoZWFkaW5nID0gbG9jYXRpb24uY291cnNlOwotI2lmICFQ
TEFURk9STShNQUNDQVRBTFlTVCkKLSAgICBpZiAobG9jYXRpb24uZmxvb3IpCi0gICAgICAgIGZs
b29yTGV2ZWwgPSBsb2NhdGlvbi5mbG9vci5sZXZlbDsKLSNlbmRpZgotfQotCi19Ci0KLSNlbmRp
ZiAvLyBQTEFURk9STShJT1NfRkFNSUxZKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvU291
cmNlc0NvY29hLnR4dCBiL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXNDb2NvYS50eHQKaW5kZXggMTA3
NWVhYzQ3NmE1NGI4MjAwZDA2ZTliODQzNmIyNDg5NWQ0MmM2Mi4uNjUyOTZlMjViNzE1ZGZlMzA4
MDVmZDdkMWFiNzc0MzlmNDhmMjI1ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvU291cmNl
c0NvY29hLnR4dAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzQ29jb2EudHh0CkBAIC0yNTEs
NiArMjUxLDcgQEAgcGxhdGZvcm0vY2YvTWVkaWFBY2Nlc3NpYmlsaXR5U29mdExpbmsuY3BwCiBw
bGF0Zm9ybS9jZi9SdW5Mb29wT2JzZXJ2ZXIuY3BwCiBwbGF0Zm9ybS9jZi9TaGFyZWRCdWZmZXJD
Ri5jcHAKIHBsYXRmb3JtL2NvY29hL0NvbnRlbnRGaWx0ZXJVbmJsb2NrSGFuZGxlckNvY29hLm1t
IEBuby11bmlmeQorcGxhdGZvcm0vY29jb2EvQ29yZUxvY2F0aW9uR2VvbG9jYXRpb25Qcm92aWRl
ci5tbQogcGxhdGZvcm0vY29jb2EvQ29yZVZpZGVvU29mdExpbmsuY3BwCiBwbGF0Zm9ybS9jb2Nv
YS9EcmFnRGF0YUNvY29hLm1tCiBwbGF0Zm9ybS9jb2NvYS9EcmFnSW1hZ2VDb2NvYS5tbQpAQCAt
MzE3LDcgKzMxOCw3IEBAIHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0NETVNl
c3Npb25BVkZvdW5kYXRpb25PYmpDLm1tCiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24v
b2JqYy9DRE1TZXNzaW9uQVZTdHJlYW1TZXNzaW9uLm1tCiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZv
dW5kYXRpb24vb2JqYy9DRE1TZXNzaW9uTWVkaWFTb3VyY2VBVkZPYmpDLm1tCiBwbGF0Zm9ybS9n
cmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9JbWFnZURlY29kZXJBVkZPYmpDLm1tCi1wbGF0Zm9y
bS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9JbmJhbmRUZXh0VHJhY2tQcml2YXRlQVZGT2Jq
Qy5tbQorcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvSW5iYW5kVGV4dFRyYWNr
UHJpdmF0ZUFWRk9iakMubW0gQG5vLXVuaWZ5CiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRp
b24vb2JqYy9JbmJhbmRDaGFwdGVyVHJhY2tQcml2YXRlQVZGT2JqQy5tbSBAbm8tdW5pZnkKIHBs
YXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0xvY2FsU2FtcGxlQnVmZmVyRGlzcGxh
eUxheWVyLm1tCiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXli
YWNrVGFyZ2V0UGlja2VyTWFjLm1tCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3Jl
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggZjFlZTk3MTI2NWVmYWQ3MzYxYTIxOWNiY2RjZjhk
MjU0MmIzN2M2MC4uM2QxYjY3MzVjNTMyNDY1ZTdjYWZjM2JiMjViM2M0NGM4NDJhZGJkYSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9q
CisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpA
QCAtMTM1Miw2ICsxMzUyLDcgQEAKIAkJNDY4MzQ0RTAxRURERkFBQTAwQjc3OTVCIC8qIERPTVJl
Y3RMaXN0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0
NjgzNDRERTFFRERGQTVGMDBCNzc5NUIgLyogRE9NUmVjdExpc3QuaCAqLzsgc2V0dGluZ3MgPSB7
QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk0NjgzREY0MDI3NjdERjk4MDA3RDAw
QzggLyogSlNTaGFkb3dSZWFsbUdsb2JhbFNjb3BlQmFzZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDY4M0RGM0UyNzY3REY5ODAwN0QwMEM4IC8qIEpT
U2hhZG93UmVhbG1HbG9iYWxTY29wZUJhc2UuaCAqLzsgfTsKIAkJNDY4M0RGNDEyNzY3RTkxQTAw
N0QwMEM4IC8qIFNoYWRvd1JlYWxtR2xvYmFsU2NvcGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ2ODNERjNCMjc2N0RGMjYwMDdEMDBDOCAvKiBTaGFk
b3dSZWFsbUdsb2JhbFNjb3BlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0
ZSwgKTsgfTsgfTsKKwkJNDY4OEU5ODAyN0I2QjQ1MDAwNTY3Q0QyIC8qIENvcmVMb2NhdGlvbkdl
b2xvY2F0aW9uUHJvdmlkZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDQ2ODhFOTdGMjdCNkI0NDQwMDU2N0NEMiAvKiBDb3JlTG9jYXRpb25HZW9sb2Nh
dGlvblByb3ZpZGVyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsg
fTsgfTsKIAkJNDY4OEVFM0MyNkREMjYxMDAwMkFGNUM0IC8qIENyb3NzT3JpZ2luTW9kZS5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDY4OEVFM0EyNkRE
MjYwQzAwMkFGNUM0IC8qIENyb3NzT3JpZ2luTW9kZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJV
VEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTQ2OTQzREM5Mjc2M0Y4MTcwMDRCNjEwRSAvKiBT
aGFyZWRXb3JrZXJPYmplY3RJZGVudGlmaWVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA0Njk0M0RDNzI3NjNGODBFMDA0QjYxMEUgLyogU2hhcmVkV29y
a2VyT2JqZWN0SWRlbnRpZmllci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZh
dGUsICk7IH07IH07CiAJCTQ2OTg1RjIzMjdBNEE2QUQwMDk3QTMyQiAvKiBTaGFyZWRXb3JrZXJL
ZXkuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ2OTg1
RjIyMjdBNEE2ODYwMDk3QTMyQiAvKiBTaGFyZWRXb3JrZXJLZXkuaCAqLzsgc2V0dGluZ3MgPSB7
QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwpAQCAtMTM3Nyw2ICsxMzc4LDcgQEAKIAkJ
NDZDNjk2Q0IxRTcyMDVGNzAwNTk3OTM3IC8qIENQVU1vbml0b3IuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ2QzY5NkM5MUU3MjA1RTQwMDU5NzkzNyAv
KiBDUFVNb25pdG9yLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsg
fTsgfTsKIAkJNDZDNjk2Q0MxRTcyMDVGQzAwNTk3OTM3IC8qIENQVU1vbml0b3IuY3BwIGluIFNv
dXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDZDNjk2Q0ExRTcyMDVF
NDAwNTk3OTM3IC8qIENQVU1vbml0b3IuY3BwICovOyB9OwogCQk0NkM4M0VGRTFBOUJCRTI5MDBB
NzlBNDEgLyogR2VvTm90aWZpZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDQ2QzgzRUZDMUE5QkJFMjkwMEE3OUE0MSAvKiBHZW9Ob3RpZmllci5oICov
OyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCTQ2Q0E5NDMx
MjdCODY5NTgwMEY0RjVGRiAvKiBJbmJhbmRUZXh0VHJhY2tQcml2YXRlQVZGT2JqQy5tbSBpbiBT
b3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDA3QUE2QjZBMTY2RDAx
OTUwMEQ0NTY3MSAvKiBJbmJhbmRUZXh0VHJhY2tQcml2YXRlQVZGT2JqQy5tbSAqLzsgfTsKIAkJ
NDZDQTlDNDQxRjk3QkJFOTAwNENGQzNBIC8qIFZpc2liaWxpdHlTdGF0ZS5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDZDQTlDNDExRjk3QkJFNzAwNENG
QzNBIC8qIFZpc2liaWxpdHlTdGF0ZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFBy
aXZhdGUsICk7IH07IH07CiAJCTQ2Q0Y1MDRBMjdBQjFFQTQwMDcwREJDOCAvKiBTaGFyZWRXb3Jr
ZXJDb250ZXh0TWFuYWdlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gNDZDRjUwNDgyN0FCMUVBMTAwNzBEQkM4IC8qIFNoYXJlZFdvcmtlckNvbnRleHRN
YW5hZ2VyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsK
IAkJNDZEMDAwNDAyNkEwRkVCMzAwRDFCRjFFIC8qIFN1Ym1pdEV2ZW50LmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0NkQwMDAzRTI2QTBGRTZGMDBEMUJG
MUUgLyogU3VibWl0RXZlbnQuaCAqLzsgfTsKQEAgLTI2OTUsNyArMjY5Nyw3IEBACiAJCTgzNzY1
Rjk1MURBQzUyMkYwMEMwNjUzNyAvKiBNb3VzZUV2ZW50SW5pdC5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODM3NjVGOTQxREFDNTIxODAwQzA2NTM3IC8q
IE1vdXNlRXZlbnRJbml0LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwg
KTsgfTsgfTsKIAkJODM3ODg3ODIyNEQ4QTYwOTAwMEQ0QTVCIC8qIEF1ZGlvQnVmZmVyU291cmNl
T3B0aW9ucy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
ODM3ODg3N0YyNEQ4QTVGQzAwMEQ0QTVCIC8qIEF1ZGlvQnVmZmVyU291cmNlT3B0aW9ucy5oICov
OyB9OwogCQk4Mzc5MzYzRjFGQkJCMEI0MDBDODAyM0MgLyogU2VydmljZVdvcmtlckNsaWVudERh
dGEuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDgzNzkz
NjNFMUZCQkIwQTUwMEM4MDIzQyAvKiBTZXJ2aWNlV29ya2VyQ2xpZW50RGF0YS5oICovOyBzZXR0
aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07Ci0JCTgzNzk2NENGMUY4REI2
OUQwMDIxOEVBMCAvKiBHZW9sb2NhdGlvblBvc2l0aW9uRGF0YUlPUy5tbSBpbiBTb3VyY2VzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDgzNzk2NENFMUY4REI2OUEwMDIxOEVB
MCAvKiBHZW9sb2NhdGlvblBvc2l0aW9uRGF0YUlPUy5tbSAqLzsgfTsKKwkJODM3OTY0Q0YxRjhE
QjY5RDAwMjE4RUEwIC8qIEdlb2xvY2F0aW9uUG9zaXRpb25EYXRhQ29jb2EubW0gaW4gU291cmNl
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4Mzc5NjRDRTFGOERCNjlBMDAy
MThFQTAgLyogR2VvbG9jYXRpb25Qb3NpdGlvbkRhdGFDb2NvYS5tbSAqLzsgfTsKIAkJODM3QTgw
MTMxRTFFMTI3MzAwMDI2QjlGIC8qIExvY2FsaXphYmxlLnN0cmluZ3NkaWN0IGluIFJlc291cmNl
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4MzdBODAxMTFFMUUxMjczMDAw
MjZCOUYgLyogTG9jYWxpemFibGUuc3RyaW5nc2RpY3QgKi87IH07CiAJCTgzN0MwQjc2MjREQjM4
NTAwMDVENTk1OSAvKiBEeW5hbWljc0NvbXByZXNzb3JPcHRpb25zLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4MzdDMEI3MzI0REIzODQyMDA1RDU5NTkg
LyogRHluYW1pY3NDb21wcmVzc29yT3B0aW9ucy5oICovOyB9OwogCQk4MzdGQjM0NTFGOUVBMDZE
MDBEMEZDMzEgLyogRXh0ZW5kYWJsZU1lc3NhZ2VFdmVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODM3RkIzNDAxRjlFQTA2NjAwRDBGQzMxIC8qIEV4
dGVuZGFibGVNZXNzYWdlRXZlbnQuaCAqLzsgfTsKQEAgLTkyNjksNiArOTI3MSw4IEBACiAJCTQ2
ODNERjNDMjc2N0RGMjYwMDdEMDBDOCAvKiBTaGFkb3dSZWFsbUdsb2JhbFNjb3BlLmlkbCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGgg
PSBTaGFkb3dSZWFsbUdsb2JhbFNjb3BlLmlkbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJNDY4M0RGM0QyNzY3REY5ODAwN0QwMEM4IC8qIEpTU2hhZG93UmVhbG1HbG9iYWxTY29wZUJh
c2UuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNTaGFkb3dSZWFs
bUdsb2JhbFNjb3BlQmFzZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQ2ODNE
RjNFMjc2N0RGOTgwMDdEMDBDOCAvKiBKU1NoYWRvd1JlYWxtR2xvYmFsU2NvcGVCYXNlLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTU2hhZG93UmVhbG1HbG9iYWxTY29wZUJh
c2UuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNDY4OEU5N0QyN0I2QjQ0MzAwNTY3
Q0QyIC8qIENvcmVMb2NhdGlvbkdlb2xvY2F0aW9uUHJvdmlkZXIubW0gKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7
IHBhdGggPSBDb3JlTG9jYXRpb25HZW9sb2NhdGlvblByb3ZpZGVyLm1tOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OworCQk0Njg4RTk3RjI3QjZCNDQ0MDA1NjdDRDIgLyogQ29yZUxvY2F0aW9u
R2VvbG9jYXRpb25Qcm92aWRlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBDb3JlTG9jYXRpb25HZW9sb2Nh
dGlvblByb3ZpZGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQ2ODhFRTNBMjZE
RDI2MEMwMDJBRjVDNCAvKiBDcm9zc09yaWdpbk1vZGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQ3Jvc3NP
cmlnaW5Nb2RlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQ2OEI4QkRFMjVDQzg0
OTMwMEY2NzgyMiAvKiBKU0Jhc2VBdWRpb0NvbnRleHRDdXN0b20uY3BwICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBw
YXRoID0gSlNCYXNlQXVkaW9Db250ZXh0Q3VzdG9tLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJNDY5NDNEQzcyNzYzRjgwRTAwNEI2MTBFIC8qIFNoYXJlZFdvcmtlck9iamVjdElk
ZW50aWZpZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU2hhcmVkV29ya2VyT2JqZWN0SWRlbnRpZmllci5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMTIxOTAsNyArMTIxOTQsNyBAQAogCQk4
Mzc4ODc4MTI0RDhBNUZDMDAwRDRBNUIgLyogQXVkaW9CdWZmZXJTb3VyY2VPcHRpb25zLmlkbCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBh
dGggPSBBdWRpb0J1ZmZlclNvdXJjZU9wdGlvbnMuaWRsOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQk4Mzc5MzYzQzFGQkJCMEE0MDBDODAyM0MgLyogU2VydmljZVdvcmtlckNsaWVudERh
dGEuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gU2VydmljZVdvcmtl
ckNsaWVudERhdGEuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk4Mzc5MzYzRTFG
QkJCMEE1MDBDODAyM0MgLyogU2VydmljZVdvcmtlckNsaWVudERhdGEuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gU2VydmljZVdvcmtlckNsaWVudERhdGEuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKLQkJODM3OTY0Q0UxRjhEQjY5QTAwMjE4RUEwIC8qIEdlb2xvY2F0
aW9uUG9zaXRpb25EYXRhSU9TLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBu
YW1lID0gR2VvbG9jYXRpb25Qb3NpdGlvbkRhdGFJT1MubW07IHBhdGggPSBNb2R1bGVzL2dlb2xv
Y2F0aW9uL2lvcy9HZW9sb2NhdGlvblBvc2l0aW9uRGF0YUlPUy5tbTsgc291cmNlVHJlZSA9IFNP
VVJDRV9ST09UOyB9OworCQk4Mzc5NjRDRTFGOERCNjlBMDAyMThFQTAgLyogR2VvbG9jYXRpb25Q
b3NpdGlvbkRhdGFDb2NvYS5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgbmFt
ZSA9IEdlb2xvY2F0aW9uUG9zaXRpb25EYXRhQ29jb2EubW07IHBhdGggPSBNb2R1bGVzL2dlb2xv
Y2F0aW9uL2NvY29hL0dlb2xvY2F0aW9uUG9zaXRpb25EYXRhQ29jb2EubW07IHNvdXJjZVRyZWUg
PSBTT1VSQ0VfUk9PVDsgfTsKIAkJODM3QTgwMTIxRTFFMTI3MzAwMDI2QjlGIC8qIGVuICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dC5wbGlzdC5z
dHJpbmdzZGljdDsgbmFtZSA9IGVuOyBwYXRoID0gZW4ubHByb2ovTG9jYWxpemFibGUuc3RyaW5n
c2RpY3Q7IHNvdXJjZVRyZWUgPSBTT1VSQ0VfUk9PVDsgfTsKIAkJODM3QjdEMUYxREMzRjU0QzAw
RDA1MUZDIC8qIFZhbGlkYXRpb25CdWJibGVJT1MubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5vYmpjcHA7IHBhdGggPSBWYWxpZGF0aW9uQnViYmxlSU9TLm1tOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQk4MzdDMEI3MzI0REIzODQyMDA1RDU5NTkgLyogRHluYW1pY3NDb21wcmVz
c29yT3B0aW9ucy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBEeW5hbWljc0NvbXByZXNzb3JPcHRpb25zLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0yMTYwNiw2ICsyMTYxMCwxNCBAQAogCQkJ
cGF0aCA9IGNvbnRleHQ7CiAJCQlzb3VyY2VUcmVlID0gIjxncm91cD4iOwogCQl9OworCQk0NjVD
M0QxOTI3Qjk5MUM4MDAyMTMwMkYgLyogY29jb2EgKi8gPSB7CisJCQlpc2EgPSBQQlhHcm91cDsK
KwkJCWNoaWxkcmVuID0gKAorCQkJCTgzNzk2NENFMUY4REI2OUEwMDIxOEVBMCAvKiBHZW9sb2Nh
dGlvblBvc2l0aW9uRGF0YUNvY29hLm1tICovLAorCQkJKTsKKwkJCXBhdGggPSBjb2NvYTsKKwkJ
CXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7CisJCX07CiAJCTQ2Njk0Q0RFMjc1OTQ0NkQwMEUzMTUw
RSAvKiBzaGFyZWQgKi8gPSB7CiAJCQlpc2EgPSBQQlhHcm91cDsKIAkJCWNoaWxkcmVuID0gKApA
QCAtMjUxMDMsMTQgKzI1MTE1LDYgQEAKIAkJCXBhdGggPSBiZWFjb247CiAJCQlzb3VyY2VUcmVl
ID0gIjxncm91cD4iOwogCQl9OwotCQk4Mzc5NjRDQzFGOERCNjdEMDAyMThFQTAgLyogaW9zICov
ID0gewotCQkJaXNhID0gUEJYR3JvdXA7Ci0JCQljaGlsZHJlbiA9ICgKLQkJCQk4Mzc5NjRDRTFG
OERCNjlBMDAyMThFQTAgLyogR2VvbG9jYXRpb25Qb3NpdGlvbkRhdGFJT1MubW0gKi8sCi0JCQkp
OwotCQkJbmFtZSA9IGlvczsKLQkJCXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7Ci0JCX07CiAJCTgz
RkIzMzY1MUY1MDhBMTcwMDk4NkU1NCAvKiBlbnRyaWVzYXBpICovID0gewogCQkJaXNhID0gUEJY
R3JvdXA7CiAJCQljaGlsZHJlbiA9ICgKQEAgLTI2MTIxLDcgKzI2MTI1LDcgQEAKIAkJOTcxMTQ1
RkYxNEVGMDA3OTAwNjc0RkQ5IC8qIGdlb2xvY2F0aW9uICovID0gewogCQkJaXNhID0gUEJYR3Jv
dXA7CiAJCQljaGlsZHJlbiA9ICgKLQkJCQk4Mzc5NjRDQzFGOERCNjdEMDAyMThFQTAgLyogaW9z
ICovLAorCQkJCTQ2NUMzRDE5MjdCOTkxQzgwMDIxMzAyRiAvKiBjb2NvYSAqLywKIAkJCQk5NzQ2
QUYxMzE0RjREREU2MDAzRTdBNzAgLyogR2VvbG9jYXRpb24uY3BwICovLAogCQkJCTk3NDZBRjE0
MTRGNERERTYwMDNFN0E3MCAvKiBHZW9sb2NhdGlvbi5oICovLAogCQkJCTk3NDZBRjE1MTRGNERE
RTYwMDNFN0E3MCAvKiBHZW9sb2NhdGlvbi5pZGwgKi8sCkBAIC0yNjgzMyw2ICsyNjgzNyw4IEBA
CiAJCQkJQzFGN0I3MkYyNDQ4RjJBQzAwMTI0NTU3IC8qIEFHWENvbXBpbGVyU2VydmljZS5jcHAg
Ki8sCiAJCQkJQzFGN0I3MzAyNDQ4RjJBQzAwMTI0NTU3IC8qIEFHWENvbXBpbGVyU2VydmljZS5o
ICovLAogCQkJCUExNDA5MEZBMUFBNTFFMUQwMDkxMTkxQSAvKiBDb250ZW50RmlsdGVyVW5ibG9j
a0hhbmRsZXJDb2NvYS5tbSAqLywKKwkJCQk0Njg4RTk3RjI3QjZCNDQ0MDA1NjdDRDIgLyogQ29y
ZUxvY2F0aW9uR2VvbG9jYXRpb25Qcm92aWRlci5oICovLAorCQkJCTQ2ODhFOTdEMjdCNkI0NDMw
MDU2N0NEMiAvKiBDb3JlTG9jYXRpb25HZW9sb2NhdGlvblByb3ZpZGVyLm1tICovLAogCQkJCUNE
N0QzMzQ1MUM3QTE2QkYwMDA0MTI5MyAvKiBDb3JlVmlkZW9Tb2Z0TGluay5jcHAgKi8sCiAJCQkJ
Q0Q3RDMzNDYxQzdBMTZCRjAwMDQxMjkzIC8qIENvcmVWaWRlb1NvZnRMaW5rLmggKi8sCiAJCQkJ
RjQ2MkU3OUYyNDJBREEzQzAwMjA0REREIC8qIERyYWdEYXRhQ29jb2EubW0gKi8sCkBAIC0zMzkx
OSw2ICszMzkyNSw3IEBACiAJCQkJM0Y4MDIwMzcxRTlFNDdDNTAwREVDNjFEIC8qIENvcmVBdWRp
b0NhcHR1cmVEZXZpY2VNYW5hZ2VyLmggaW4gSGVhZGVycyAqLywKIAkJCQk0MUZDQ0MzQjI3NDY2
NzU2MDA4OTJBRDYgLyogQ29yZUF1ZGlvQ2FwdHVyZVNvdXJjZS5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJMDdBRkY0MjIxRUZCMTQ0OTAwQjU0NUIzIC8qIENvcmVBdWRpb0NhcHR1cmVTb3VyY2VJT1Mu
aCBpbiBIZWFkZXJzICovLAorCQkJCTQ2ODhFOTgwMjdCNkI0NTAwMDU2N0NEMiAvKiBDb3JlTG9j
YXRpb25HZW9sb2NhdGlvblByb3ZpZGVyLmggaW4gSGVhZGVycyAqLywKIAkJCQlDRDdEMzM0ODFD
N0ExNkJGMDAwNDEyOTMgLyogQ29yZVZpZGVvU29mdExpbmsuaCBpbiBIZWFkZXJzICovLAogCQkJ
CTg2MkYxMjlFMThDMTU3NkYwMDVDNTRBRiAvKiBDb3VudGVkVXNlckFjdGl2aXR5LmggaW4gSGVh
ZGVycyAqLywKIAkJCQlBODBFNkQwNDBBMTk4OUNBMDA3RkI4QzUgLyogQ291bnRlci5oIGluIEhl
YWRlcnMgKi8sCkBAIC0zODY5MiwxMyArMzg2OTksMTQgQEAKIAkJCQk1MThGNEZGNjE5NENBNEU2
MDA4MUJBQUUgLyogR2FtZXBhZEJ1dHRvbi5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk1MTZDNjIy
MDE5NTBENDg3MDAzMzdFNzUgLyogR2FtZXBhZEV2ZW50LmNwcCBpbiBTb3VyY2VzICovLAogCQkJ
CTUxQTlEOUU5MTk1QjkzMUYwMDFCMkI1QyAvKiBHYW1lcGFkTWFuYWdlci5jcHAgaW4gU291cmNl
cyAqLywKLQkJCQk4Mzc5NjRDRjFGOERCNjlEMDAyMThFQTAgLyogR2VvbG9jYXRpb25Qb3NpdGlv
bkRhdGFJT1MubW0gaW4gU291cmNlcyAqLywKKwkJCQk4Mzc5NjRDRjFGOERCNjlEMDAyMThFQTAg
LyogR2VvbG9jYXRpb25Qb3NpdGlvbkRhdGFDb2NvYS5tbSBpbiBTb3VyY2VzICovLAogCQkJCTZF
NzJGNTRFMjI5RENEMTAwMEIzRTE1MSAvKiBHcmFwaGljc0NvbnRleHRHTEFOR0xFLmNwcCBpbiBT
b3VyY2VzICovLAogCQkJCTdDM0U1MTBCMThERjhGMzUwMEMxMTJGNyAvKiBIVE1MQ29udmVydGVy
Lm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJQThEMDZCM0EwQTI2NURDRDAwNUU3MjAzIC8qIEhUTUxO
YW1lcy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkxQUM5MDBDMzE5NDNDMEZDMDA4NjI1QjUgLyog
SFRUUEhlYWRlck5hbWVzLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUNEMjdBRTUxMjJBOTg2ODcw
MDk0N0ZGOSAvKiBJbWFnZVJvdGF0aW9uU2Vzc2lvblZULm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJ
MDcwRTJEMEYyNkYyNTA4OTAwMTRBQUMzIC8qIEluYmFuZENoYXB0ZXJUcmFja1ByaXZhdGVBVkZP
YmpDLm1tIGluIFNvdXJjZXMgKi8sCisJCQkJNDZDQTk0MzEyN0I4Njk1ODAwRjRGNUZGIC8qIElu
YmFuZFRleHRUcmFja1ByaXZhdGVBVkZPYmpDLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJQ0QwNjNG
ODIxRTIzRkE4OTAwODEyQkUzIC8qIEluaXREYXRhUmVnaXN0cnkuY3BwIGluIFNvdXJjZXMgKi8s
CiAJCQkJOTM1QzQ3NzAwOUFDNEQ3MzAwQTZBQUI0IC8qIEtleUV2ZW50TWFjLm1tIGluIFNvdXJj
ZXMgKi8sCiAJCQkJQ0RBOThFMEIxNjAzQ0Q2MDAwRkVBM0IxIC8qIExlZ2FjeUNETS5jcHAgaW4g
U291cmNlcyAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuY3BwCmluZGV4IDZhODVlODQzZDhiYmUzZDE5MmQ5N2Y0
OTZiZDdlYjQ1NDc0OWRiYTQuLmVmZTBlMzgwNmRjODQ4MDMwZDIyYjlkOTAyOTE2NzkzMzg1YmZk
YWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcGFnZS9QYWdlLmNwcApAQCAtNjksNiArNjksNyBAQAogI2luY2x1ZGUgIkZyYW1l
VHJlZS5oIgogI2luY2x1ZGUgIkZyYW1lVmlldy5oIgogI2luY2x1ZGUgIkZ1bGxzY3JlZW5NYW5h
Z2VyLmgiCisjaW5jbHVkZSAiR2VvbG9jYXRpb25Db250cm9sbGVyLmgiCiAjaW5jbHVkZSAiSFRN
TEVsZW1lbnQuaCIKICNpbmNsdWRlICJIVE1MSW1hZ2VFbGVtZW50LmgiCiAjaW5jbHVkZSAiSFRN
TE1lZGlhRWxlbWVudC5oIgpAQCAtMTMzMiw2ICsxMzMzLDExIEBAIHZvaWQgUGFnZTo6ZGlkQ29t
bWl0TG9hZCgpCiAgICAgcmVzZXRUZXh0UmVjb2duaXRpb25SZXN1bHRzKCk7CiAgICAgcmVzZXRJ
bWFnZUFuYWx5c2lzUXVldWUoKTsKICNlbmRpZgorCisjaWYgRU5BQkxFKEdFT0xPQ0FUSU9OKQor
ICAgIGlmIChhdXRvKiBnZW9sb2NhdGlvbkNvbnRyb2xsZXIgPSBHZW9sb2NhdGlvbkNvbnRyb2xs
ZXI6OmZyb20odGhpcykpCisgICAgICAgIGdlb2xvY2F0aW9uQ29udHJvbGxlci0+ZGlkTmF2aWdh
dGVQYWdlKCk7CisjZW5kaWYKIH0KIAogdm9pZCBQYWdlOjpkaWRGaW5pc2hMb2FkKCkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL0NvcmVMb2NhdGlvbkdlb2xvY2F0
aW9uUHJvdmlkZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL0NvcmVMb2NhdGlv
bkdlb2xvY2F0aW9uUHJvdmlkZXIuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5jNTI0NmM4ODRhY2Y4ZjY5ZmNiOGY4
YWM0YWNjN2Y0Y2RlNjQ1Y2VkCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vY29jb2EvQ29yZUxvY2F0aW9uR2VvbG9jYXRpb25Qcm92aWRlci5oCkBAIC0wLDAgKzEs
NjcgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICog
MS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisg
KiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQ
TEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAor
ICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQg
U0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisg
KiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQ
Uk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICog
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgPHd0Zi9Db21wbGV0
aW9uSGFuZGxlci5oPgorI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CisjaW5jbHVkZSA8d3RmL1Jl
dGFpblB0ci5oPgorCitPQkpDX0NMQVNTIFdlYkNMTG9jYXRpb25NYW5hZ2VyOworCituYW1lc3Bh
Y2UgV2ViQ29yZSB7CisKK2NsYXNzIEdlb2xvY2F0aW9uUG9zaXRpb25EYXRhOworY2xhc3MgUmVn
aXN0cmFibGVEb21haW47CisKK2NsYXNzIFdFQkNPUkVfRVhQT1JUIENvcmVMb2NhdGlvbkdlb2xv
Y2F0aW9uUHJvdmlkZXIgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOworcHVibGljOgor
ICAgIGNsYXNzIENsaWVudCB7CisgICAgcHVibGljOgorICAgICAgICB2aXJ0dWFsIH5DbGllbnQo
KSB7IH0KKworICAgICAgICB2aXJ0dWFsIHZvaWQgZ2VvbG9jYXRpb25BdXRob3JpemF0aW9uR3Jh
bnRlZChjb25zdCBTdHJpbmcmIC8qd2Vic2l0ZUlkZW50aWZpZXIqLykgeyB9CisgICAgICAgIHZp
cnR1YWwgdm9pZCBnZW9sb2NhdGlvbkF1dGhvcml6YXRpb25EZW5pZWQoY29uc3QgU3RyaW5nJiAv
KndlYnNpdGVJZGVudGlmaWVyKi8pIHsgfQorICAgICAgICB2aXJ0dWFsIHZvaWQgcG9zaXRpb25D
aGFuZ2VkKGNvbnN0IFN0cmluZyYgd2Vic2l0ZUlkZW50aWZpZXIsIEdlb2xvY2F0aW9uUG9zaXRp
b25EYXRhJiYpID0gMDsKKyAgICAgICAgdmlydHVhbCB2b2lkIGVycm9yT2NjdXJyZWQoY29uc3Qg
U3RyaW5nJiB3ZWJzaXRlSWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiBlcnJvck1lc3NhZ2UpID0g
MDsKKyAgICAgICAgdmlydHVhbCB2b2lkIHJlc2V0R2VvbG9jYXRpb24oY29uc3QgU3RyaW5nJiB3
ZWJzaXRlSWRlbnRpZmllcikgPSAwOworICAgIH07CisKKyAgICBDb3JlTG9jYXRpb25HZW9sb2Nh
dGlvblByb3ZpZGVyKGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiwgQ2xpZW50Jik7CisgICAgfkNv
cmVMb2NhdGlvbkdlb2xvY2F0aW9uUHJvdmlkZXIoKTsKKworICAgIHZvaWQgc3RhcnQoKTsKKyAg
ICB2b2lkIHN0b3AoKTsKKworICAgIHZvaWQgc2V0RW5hYmxlSGlnaEFjY3VyYWN5KGJvb2wpOwor
CisgICAgc3RhdGljIHZvaWQgcmVxdWVzdEF1dGhvcml6YXRpb24oY29uc3QgUmVnaXN0cmFibGVE
b21haW4mLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmKTsKKworcHJpdmF0ZToKKyAg
ICBSZXRhaW5QdHI8V2ViQ0xMb2NhdGlvbk1hbmFnZXI+IG1fbG9jYXRpb25NYW5hZ2VyOworfTsK
KworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vY29jb2EvQ29yZUxvY2F0aW9uR2VvbG9jYXRpb25Qcm92aWRlci5tbSBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2NvY29hL0NvcmVMb2NhdGlvbkdlb2xvY2F0aW9uUHJvdmlkZXIubW0K
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uNzc2MzZkMjYwNGJiMmZiMzk3MzM2Y2EzYjFiZGQ2YjVlZTEzZGNmMgotLS0g
L2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL0NvcmVMb2NhdGlv
bkdlb2xvY2F0aW9uUHJvdmlkZXIubW0KQEAgLTAsMCArMSwyNjEgQEAKKy8qCisgKiBDb3B5cmln
aHQgKEMpIDIwMjIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
KyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoK
KyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRS
SUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICog
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJ
VFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7
IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkg
VEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisj
aW1wb3J0ICJjb25maWcuaCIKKyNpbXBvcnQgIkNvcmVMb2NhdGlvbkdlb2xvY2F0aW9uUHJvdmlk
ZXIuaCIKKworI2ltcG9ydCAiR2VvbG9jYXRpb25Qb3NpdGlvbkRhdGEuaCIKKyNpbXBvcnQgIlJl
Z2lzdHJhYmxlRG9tYWluLmgiCisjaW1wb3J0IDxDb3JlTG9jYXRpb24vQ0xMb2NhdGlvbk1hbmFn
ZXJEZWxlZ2F0ZS5oPgorI2ltcG9ydCA8Q29yZUxvY2F0aW9uL0NvcmVMb2NhdGlvbi5oPgorI2lt
cG9ydCA8d3RmL1NvZnRMaW5raW5nLmg+CisKKyNpZiBVU0UoQVBQTEVfSU5URVJOQUxfU0RLKQor
I2ltcG9ydCA8Q29yZUxvY2F0aW9uL0NMTG9jYXRpb25NYW5hZ2VyX1ByaXZhdGUuaD4KKyNlbmRp
ZgorCitTT0ZUX0xJTktfRlJBTUVXT1JLKENvcmVMb2NhdGlvbikKKworU09GVF9MSU5LX0NMQVNT
KENvcmVMb2NhdGlvbiwgQ0xMb2NhdGlvbk1hbmFnZXIpCitTT0ZUX0xJTktfQ0xBU1MoQ29yZUxv
Y2F0aW9uLCBDTExvY2F0aW9uKQorCitTT0ZUX0xJTktfQ09OU1RBTlQoQ29yZUxvY2F0aW9uLCBr
Q0xMb2NhdGlvbkFjY3VyYWN5QmVzdCwgZG91YmxlKQorU09GVF9MSU5LX0NPTlNUQU5UKENvcmVM
b2NhdGlvbiwga0NMTG9jYXRpb25BY2N1cmFjeUh1bmRyZWRNZXRlcnMsIGRvdWJsZSkKKworI2Rl
ZmluZSBrQ0xMb2NhdGlvbkFjY3VyYWN5QmVzdCBnZXRrQ0xMb2NhdGlvbkFjY3VyYWN5QmVzdCgp
CisjZGVmaW5lIGtDTExvY2F0aW9uQWNjdXJhY3lIdW5kcmVkTWV0ZXJzIGdldGtDTExvY2F0aW9u
QWNjdXJhY3lIdW5kcmVkTWV0ZXJzKCkKKworc3RhdGljIGJvb2wgaXNBdXRob3JpemF0aW9uR3Jh
bnRlZChDTEF1dGhvcml6YXRpb25TdGF0dXMgYXV0aG9yaXphdGlvblN0YXR1cykKK3sKKyAgICBy
ZXR1cm4gYXV0aG9yaXphdGlvblN0YXR1cyA9PSBrQ0xBdXRob3JpemF0aW9uU3RhdHVzQXV0aG9y
aXplZEFsd2F5cyB8fCBhdXRob3JpemF0aW9uU3RhdHVzID09IGtDTEF1dGhvcml6YXRpb25TdGF0
dXNBdXRob3JpemVkV2hlbkluVXNlOworfQorCitAaW50ZXJmYWNlIFdlYkNMTG9jYXRpb25NYW5h
Z2VyIDogTlNPYmplY3Q8Q0xMb2NhdGlvbk1hbmFnZXJEZWxlZ2F0ZT4KK0BlbmQKKworQGltcGxl
bWVudGF0aW9uIFdlYkNMTG9jYXRpb25NYW5hZ2VyIHsKKyAgICBSZXRhaW5QdHI8Q0xMb2NhdGlv
bk1hbmFnZXI+IF9sb2NhdGlvbk1hbmFnZXI7CisgICAgV2ViQ29yZTo6Q29yZUxvY2F0aW9uR2Vv
bG9jYXRpb25Qcm92aWRlcjo6Q2xpZW50KiBfY2xpZW50OworICAgIFN0cmluZyBfd2Vic2l0ZUlk
ZW50aWZpZXI7CisgICAgQk9PTCBfaXNXYWl0aW5nRm9yQXV0aG9yaXphdGlvbjsKK30KKworLSAo
aW5zdGFuY2V0eXBlKWluaXRXaXRoV2Vic2l0ZUlkZW50aWZpZXI6KGNvbnN0IFN0cmluZyYpd2Vi
c2l0ZUlkZW50aWZpZXIgY2xpZW50OihXZWJDb3JlOjpDb3JlTG9jYXRpb25HZW9sb2NhdGlvblBy
b3ZpZGVyOjpDbGllbnQmKWNsaWVudAoreworICAgIHNlbGYgPSBbc3VwZXIgaW5pdF07CisgICAg
aWYgKCFzZWxmKQorICAgICAgICByZXR1cm4gbmlsOworCisgICAgLy8gRklYTUU6IENhbGwgaW5p
dFdpdGhXZWJzaXRlSWRlbnRpZmllciBhbmQgcGFzcyB0aGUgd2Vic2l0ZUlkZW50aWZpZXIgd2hl
biBIQVZFKENPUkVfTE9DQVRJT05fV0VCU0lURV9JREVOVElGSUVSUykgb25jZSA8cmRhcjovLzg4
ODM0MzAxID4gaXMgZml4ZWQuCisgICAgVU5VU0VEX1BBUkFNKHdlYnNpdGVJZGVudGlmaWVyKTsK
KyAgICBfbG9jYXRpb25NYW5hZ2VyID0gYWRvcHROUyhbYWxsb2NDTExvY2F0aW9uTWFuYWdlcklu
c3RhbmNlKCkgaW5pdF0pOworICAgIF9jbGllbnQgPSAmY2xpZW50OworICAgIF93ZWJzaXRlSWRl
bnRpZmllciA9IHdlYnNpdGVJZGVudGlmaWVyOworICAgIFtfbG9jYXRpb25NYW5hZ2VyIHNldERl
bGVnYXRlOnNlbGZdOworICAgIHJldHVybiBzZWxmOworfQorCistICh2b2lkKWRlYWxsb2MKK3sK
KyAgICBbX2xvY2F0aW9uTWFuYWdlciBzZXREZWxlZ2F0ZTpuaWxdOworICAgIFtzdXBlciBkZWFs
bG9jXTsKK30KKworLSAodm9pZClzdGFydAoreworICAgIGlmICghW2dldENMTG9jYXRpb25NYW5h
Z2VyQ2xhc3MoKSBsb2NhdGlvblNlcnZpY2VzRW5hYmxlZF0gfHwgIWlzQXV0aG9yaXphdGlvbkdy
YW50ZWQoW19sb2NhdGlvbk1hbmFnZXIgYXV0aG9yaXphdGlvblN0YXR1c10pKSB7CisgICAgICAg
IFtfbG9jYXRpb25NYW5hZ2VyIHN0b3BVcGRhdGluZ0xvY2F0aW9uXTsKKyAgICAgICAgX2NsaWVu
dC0+cmVzZXRHZW9sb2NhdGlvbihfd2Vic2l0ZUlkZW50aWZpZXIpOworICAgICAgICByZXR1cm47
CisgICAgfQorCisgICAgW19sb2NhdGlvbk1hbmFnZXIgc3RhcnRVcGRhdGluZ0xvY2F0aW9uXTsK
K30KKworLSAodm9pZClzdG9wCit7CisgICAgW19sb2NhdGlvbk1hbmFnZXIgc3RvcFVwZGF0aW5n
TG9jYXRpb25dOworfQorCistICh2b2lkKXNldEVuYWJsZUhpZ2hBY2N1cmFjeTooQk9PTCloaWdo
QWNjdXJhY3lFbmFibGVkCit7CisgICAgW19sb2NhdGlvbk1hbmFnZXIgc2V0RGVzaXJlZEFjY3Vy
YWN5OmhpZ2hBY2N1cmFjeUVuYWJsZWQgPyBrQ0xMb2NhdGlvbkFjY3VyYWN5QmVzdCA6IGtDTExv
Y2F0aW9uQWNjdXJhY3lIdW5kcmVkTWV0ZXJzXTsKK30KKworLSAodm9pZClyZXF1ZXN0R2VvbG9j
YXRpb25BdXRob3JpemF0aW9uCit7CisgICAgaWYgKCFbZ2V0Q0xMb2NhdGlvbk1hbmFnZXJDbGFz
cygpIGxvY2F0aW9uU2VydmljZXNFbmFibGVkXSkgeworICAgICAgICBfY2xpZW50LT5nZW9sb2Nh
dGlvbkF1dGhvcml6YXRpb25EZW5pZWQoX3dlYnNpdGVJZGVudGlmaWVyKTsKKyAgICAgICAgcmV0
dXJuOworICAgIH0KKworICAgIHN3aXRjaCAoW19sb2NhdGlvbk1hbmFnZXIgYXV0aG9yaXphdGlv
blN0YXR1c10pIHsKKyAgICBjYXNlIGtDTEF1dGhvcml6YXRpb25TdGF0dXNOb3REZXRlcm1pbmVk
OiB7CisgICAgICAgIGlmICghX2lzV2FpdGluZ0ZvckF1dGhvcml6YXRpb24pIHsKKyAgICAgICAg
ICAgIF9pc1dhaXRpbmdGb3JBdXRob3JpemF0aW9uID0gWUVTOworICAgICAgICAgICAgW19sb2Nh
dGlvbk1hbmFnZXIgcmVxdWVzdFdoZW5JblVzZUF1dGhvcml6YXRpb25dOworICAgICAgICB9Cisg
ICAgICAgIGJyZWFrOworICAgIH0KKyAgICBjYXNlIGtDTEF1dGhvcml6YXRpb25TdGF0dXNBdXRo
b3JpemVkQWx3YXlzOgorICAgIGNhc2Uga0NMQXV0aG9yaXphdGlvblN0YXR1c0F1dGhvcml6ZWRX
aGVuSW5Vc2U6IHsKKyAgICAgICAgX2NsaWVudC0+Z2VvbG9jYXRpb25BdXRob3JpemF0aW9uR3Jh
bnRlZChfd2Vic2l0ZUlkZW50aWZpZXIpOworICAgICAgICBicmVhazsKKyAgICB9CisgICAgY2Fz
ZSBrQ0xBdXRob3JpemF0aW9uU3RhdHVzUmVzdHJpY3RlZDoKKyAgICBjYXNlIGtDTEF1dGhvcml6
YXRpb25TdGF0dXNEZW5pZWQ6CisgICAgICAgIF9jbGllbnQtPmdlb2xvY2F0aW9uQXV0aG9yaXph
dGlvbkRlbmllZChfd2Vic2l0ZUlkZW50aWZpZXIpOworICAgICAgICBicmVhazsKKyAgICB9Cit9
CisKKy0gKHZvaWQpbG9jYXRpb25NYW5hZ2VyRGlkQ2hhbmdlQXV0aG9yaXphdGlvbjooQ0xMb2Nh
dGlvbk1hbmFnZXIgKiltYW5hZ2VyCit7CisgICAgYXV0byBzdGF0dXMgPSBbX2xvY2F0aW9uTWFu
YWdlciBhdXRob3JpemF0aW9uU3RhdHVzXTsKKyAgICBpZiAoX2lzV2FpdGluZ0ZvckF1dGhvcml6
YXRpb24pIHsKKyAgICAgICAgc3dpdGNoIChzdGF0dXMpIHsKKyAgICAgICAgY2FzZSBrQ0xBdXRo
b3JpemF0aW9uU3RhdHVzTm90RGV0ZXJtaW5lZDoKKyAgICAgICAgICAgIC8vIFRoaXMgY2FuIGhh
cHBlbiBhZnRlciByZXN1bWUgaWYgdGhlIHVzZXIgaGFzIHN0aWxsIG5vdCBhbnN3ZXJlZCB0aGUg
ZGlhbG9nLiBXZSBqdXN0IGhhdmUgdG8gd2FpdCBmb3IgdGhlIHBlcm1pc3Npb24uCisgICAgICAg
ICAgICBicmVhazsKKyAgICAgICAgY2FzZSBrQ0xBdXRob3JpemF0aW9uU3RhdHVzRGVuaWVkOgor
ICAgICAgICBjYXNlIGtDTEF1dGhvcml6YXRpb25TdGF0dXNSZXN0cmljdGVkOgorICAgICAgICAg
ICAgX2lzV2FpdGluZ0ZvckF1dGhvcml6YXRpb24gPSBOTzsKKyAgICAgICAgICAgIF9jbGllbnQt
Pmdlb2xvY2F0aW9uQXV0aG9yaXphdGlvbkRlbmllZChfd2Vic2l0ZUlkZW50aWZpZXIpOworICAg
ICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2Uga0NMQXV0aG9yaXphdGlvblN0YXR1c0F1dGhv
cml6ZWRBbHdheXM6CisgICAgICAgIGNhc2Uga0NMQXV0aG9yaXphdGlvblN0YXR1c0F1dGhvcml6
ZWRXaGVuSW5Vc2U6CisgICAgICAgICAgICBfaXNXYWl0aW5nRm9yQXV0aG9yaXphdGlvbiA9IE5P
OworICAgICAgICAgICAgX2NsaWVudC0+Z2VvbG9jYXRpb25BdXRob3JpemF0aW9uR3JhbnRlZChf
d2Vic2l0ZUlkZW50aWZpZXIpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKyAgICB9
IGVsc2UgeworICAgICAgICBpZiAoc3RhdHVzID09IGtDTEF1dGhvcml6YXRpb25TdGF0dXNEZW5p
ZWQgfHwgc3RhdHVzID09IGtDTEF1dGhvcml6YXRpb25TdGF0dXNSZXN0cmljdGVkKSB7CisgICAg
ICAgICAgICBbX2xvY2F0aW9uTWFuYWdlciBzdG9wVXBkYXRpbmdMb2NhdGlvbl07CisgICAgICAg
ICAgICBfY2xpZW50LT5yZXNldEdlb2xvY2F0aW9uKF93ZWJzaXRlSWRlbnRpZmllcik7CisgICAg
ICAgIH0KKyAgICB9Cit9CisKKy0gKHZvaWQpbG9jYXRpb25NYW5hZ2VyOihDTExvY2F0aW9uTWFu
YWdlciAqKW1hbmFnZXIgZGlkVXBkYXRlTG9jYXRpb25zOihOU0FycmF5ICopbG9jYXRpb25zCit7
CisgICAgVU5VU0VEX1BBUkFNKG1hbmFnZXIpOworICAgIGZvciAoQ0xMb2NhdGlvbiAqbG9jYXRp
b24gaW4gbG9jYXRpb25zKQorICAgICAgICBfY2xpZW50LT5wb3NpdGlvbkNoYW5nZWQoX3dlYnNp
dGVJZGVudGlmaWVyLCBXZWJDb3JlOjpHZW9sb2NhdGlvblBvc2l0aW9uRGF0YSB7IGxvY2F0aW9u
IH0pOworfQorCistICh2b2lkKWxvY2F0aW9uTWFuYWdlcjooQ0xMb2NhdGlvbk1hbmFnZXIgKilt
YW5hZ2VyIGRpZEZhaWxXaXRoRXJyb3I6KE5TRXJyb3IgKillcnJvcgoreworICAgIEFTU0VSVChl
cnJvcik7CisgICAgVU5VU0VEX1BBUkFNKG1hbmFnZXIpOworCisgICAgaWYgKFtlcnJvciBjb2Rl
XSA9PSBrQ0xFcnJvckRlbmllZCkgeworICAgICAgICAvLyBJZ25vcmUgdGhlIGVycm9yIGhlcmUg
YW5kIGxldCBsb2NhdGlvbk1hbmFnZXI6ZGlkQ2hhbmdlQXV0aG9yaXphdGlvblN0YXR1czogaGFu
ZGxlIHRoZSBwZXJtaXNzaW9uLgorICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgTlNTdHJp
bmcgKmVycm9yTWVzc2FnZSA9IFtlcnJvciBsb2NhbGl6ZWREZXNjcmlwdGlvbl07CisgICAgX2Ns
aWVudC0+ZXJyb3JPY2N1cnJlZChfd2Vic2l0ZUlkZW50aWZpZXIsIGVycm9yTWVzc2FnZSk7Cit9
CisKK0BlbmQKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitDb3JlTG9jYXRpb25HZW9sb2NhdGlv
blByb3ZpZGVyOjpDb3JlTG9jYXRpb25HZW9sb2NhdGlvblByb3ZpZGVyKGNvbnN0IFJlZ2lzdHJh
YmxlRG9tYWluJiByZWdpc3RyYWJsZURvbWFpbiwgQ2xpZW50JiBjbGllbnQpCisgICAgOiBtX2xv
Y2F0aW9uTWFuYWdlcihhZG9wdE5TKFtbV2ViQ0xMb2NhdGlvbk1hbmFnZXIgYWxsb2NdIGluaXRX
aXRoV2Vic2l0ZUlkZW50aWZpZXI6cmVnaXN0cmFibGVEb21haW4uc3RyaW5nKCkgY2xpZW50OmNs
aWVudF0pKQoreworICAgIC8vIFJlcXVlc3QgcGVybWlzc2lvbiBmb3IgdGhlIGFwcCB0byB1c2Ug
Z2VvbG9jYXRpb24gKGlmIGl0IGRvZXNuJ3QgYWxyZWFkeSkuCisgICAgW21fbG9jYXRpb25NYW5h
Z2VyIHJlcXVlc3RHZW9sb2NhdGlvbkF1dGhvcml6YXRpb25dOworfQorCitDb3JlTG9jYXRpb25H
ZW9sb2NhdGlvblByb3ZpZGVyOjp+Q29yZUxvY2F0aW9uR2VvbG9jYXRpb25Qcm92aWRlcigpCit7
CisgICAgW21fbG9jYXRpb25NYW5hZ2VyIHN0b3BdOworfQorCit2b2lkIENvcmVMb2NhdGlvbkdl
b2xvY2F0aW9uUHJvdmlkZXI6OnN0YXJ0KCkKK3sKKyAgICBbbV9sb2NhdGlvbk1hbmFnZXIgc3Rh
cnRdOworfQorCit2b2lkIENvcmVMb2NhdGlvbkdlb2xvY2F0aW9uUHJvdmlkZXI6OnN0b3AoKQor
eworICAgIFttX2xvY2F0aW9uTWFuYWdlciBzdG9wXTsKK30KKwordm9pZCBDb3JlTG9jYXRpb25H
ZW9sb2NhdGlvblByb3ZpZGVyOjpzZXRFbmFibGVIaWdoQWNjdXJhY3koYm9vbCBoaWdoQWNjdXJh
Y3lFbmFibGVkKQoreworICAgIFttX2xvY2F0aW9uTWFuYWdlciBzZXRFbmFibGVIaWdoQWNjdXJh
Y3k6aGlnaEFjY3VyYWN5RW5hYmxlZF07Cit9CisKK2NsYXNzIEF1dGhvcml6YXRpb25DaGVja2Vy
IGZpbmFsIDogcHVibGljIFJlZkNvdW50ZWQ8QXV0aG9yaXphdGlvbkNoZWNrZXI+LCBwdWJsaWMg
Q29yZUxvY2F0aW9uR2VvbG9jYXRpb25Qcm92aWRlcjo6Q2xpZW50IHsKK3B1YmxpYzoKKyAgICBz
dGF0aWMgUmVmPEF1dGhvcml6YXRpb25DaGVja2VyPiBjcmVhdGUoKQorICAgIHsKKyAgICAgICAg
cmV0dXJuIGFkb3B0UmVmKCpuZXcgQXV0aG9yaXphdGlvbkNoZWNrZXIpOworICAgIH0KKworICAg
IHZvaWQgY2hlY2soY29uc3QgUmVnaXN0cmFibGVEb21haW4mIHJlZ2lzdHJhYmxlRG9tYWluLCBD
b21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQorICAgIHsK
KyAgICAgICAgbV9jb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIp
OworICAgICAgICBtX3Byb3ZpZGVyID0gbWFrZVVuaXF1ZTxDb3JlTG9jYXRpb25HZW9sb2NhdGlv
blByb3ZpZGVyPihyZWdpc3RyYWJsZURvbWFpbiwgKnRoaXMpOworICAgIH0KKworcHJpdmF0ZToK
KyAgICBBdXRob3JpemF0aW9uQ2hlY2tlcigpID0gZGVmYXVsdDsKKworICAgIHZvaWQgZ2VvbG9j
YXRpb25BdXRob3JpemF0aW9uR3JhbnRlZChjb25zdCBTdHJpbmcmKSBmaW5hbAorICAgIHsKKyAg
ICAgICAgaWYgKG1fY29tcGxldGlvbkhhbmRsZXIpCisgICAgICAgICAgICBtX2NvbXBsZXRpb25I
YW5kbGVyKHRydWUpOworICAgIH0KKworICAgIHZvaWQgZ2VvbG9jYXRpb25BdXRob3JpemF0aW9u
RGVuaWVkKGNvbnN0IFN0cmluZyYpIGZpbmFsCisgICAgeworICAgICAgICBpZiAobV9jb21wbGV0
aW9uSGFuZGxlcikKKyAgICAgICAgICAgIG1fY29tcGxldGlvbkhhbmRsZXIoZmFsc2UpOworICAg
IH0KKworICAgIHZvaWQgcG9zaXRpb25DaGFuZ2VkKGNvbnN0IFN0cmluZyYsIEdlb2xvY2F0aW9u
UG9zaXRpb25EYXRhJiYpIGZpbmFsIHsgfQorICAgIHZvaWQgZXJyb3JPY2N1cnJlZChjb25zdCBT
dHJpbmcmLCBjb25zdCBTdHJpbmcmKSBmaW5hbAorICAgIHsKKyAgICAgICAgaWYgKG1fY29tcGxl
dGlvbkhhbmRsZXIpCisgICAgICAgICAgICBtX2NvbXBsZXRpb25IYW5kbGVyKGZhbHNlKTsKKyAg
ICB9CisgICAgdm9pZCByZXNldEdlb2xvY2F0aW9uKGNvbnN0IFN0cmluZyYpIGZpbmFsIHsgfQor
CisgICAgc3RkOjp1bmlxdWVfcHRyPENvcmVMb2NhdGlvbkdlb2xvY2F0aW9uUHJvdmlkZXI+IG1f
cHJvdmlkZXI7CisgICAgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4gbV9jb21wbGV0aW9u
SGFuZGxlcjsKK307CisKK3ZvaWQgQ29yZUxvY2F0aW9uR2VvbG9jYXRpb25Qcm92aWRlcjo6cmVx
dWVzdEF1dGhvcml6YXRpb24oY29uc3QgUmVnaXN0cmFibGVEb21haW4mIHJlZ2lzdHJhYmxlRG9t
YWluLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQor
eworICAgIGF1dG8gYXV0aG9yaXphdGlvbkNoZWNrZXIgPSBBdXRob3JpemF0aW9uQ2hlY2tlcjo6
Y3JlYXRlKCk7CisgICAgYXV0aG9yaXphdGlvbkNoZWNrZXItPmNoZWNrKHJlZ2lzdHJhYmxlRG9t
YWluLCBbYXV0aG9yaXphdGlvbkNoZWNrZXIsIGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShj
b21wbGV0aW9uSGFuZGxlcildKGJvb2wgYXV0aG9yaXplZCkgbXV0YWJsZSB7CisgICAgICAgIGNv
bXBsZXRpb25IYW5kbGVyKGF1dGhvcml6ZWQpOworICAgIH0pOworfQorCit9IC8vIG5hbWVzcGFj
ZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL0dlb2xv
Y2F0aW9uQ2xpZW50TW9jay5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL0dlb2xv
Y2F0aW9uQ2xpZW50TW9jay5jcHAKaW5kZXggOWQ1ZWZjODNmMzRlYjE4ZDU5OWRjMTBjYWE4ZmMw
Y2EzOTlkYjBhMi4uZmE0MjA4MmU1MDU5YTllY2YyNjRjYWFmNGMyNjUzMmY0YjJlNWQ3YSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9HZW9sb2NhdGlvbkNsaWVudE1v
Y2suY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svR2VvbG9jYXRpb25DbGll
bnRNb2NrLmNwcApAQCAtMTM2LDEwICsxMzYsMTEgQEAgdm9pZCBHZW9sb2NhdGlvbkNsaWVudE1v
Y2s6Omdlb2xvY2F0aW9uRGVzdHJveWVkKCkKICAgICBBU1NFUlQoIW1faXNBY3RpdmUpOwogfQog
Ci12b2lkIEdlb2xvY2F0aW9uQ2xpZW50TW9jazo6c3RhcnRVcGRhdGluZyhjb25zdCBTdHJpbmcm
IGF1dGhvcml6YXRpb25Ub2tlbikKK3ZvaWQgR2VvbG9jYXRpb25DbGllbnRNb2NrOjpzdGFydFVw
ZGF0aW5nKGNvbnN0IFN0cmluZyYgYXV0aG9yaXphdGlvblRva2VuLCBib29sIGVuYWJsZUhpZ2hB
Y2N1cmFjeSkKIHsKICAgICBBU1NFUlQoIW1faXNBY3RpdmUpOwogICAgIFVOVVNFRF9QQVJBTShh
dXRob3JpemF0aW9uVG9rZW4pOworICAgIFVOVVNFRF9QQVJBTShlbmFibGVIaWdoQWNjdXJhY3kp
OwogICAgIG1faXNBY3RpdmUgPSB0cnVlOwogICAgIGFzeW5jVXBkYXRlQ29udHJvbGxlcigpOwog
fQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9HZW9sb2NhdGlvbkNs
aWVudE1vY2suaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svR2VvbG9jYXRpb25DbGll
bnRNb2NrLmgKaW5kZXggMmZhNzVlMDU3YTUzZDdlODE4Y2NmYWZlZTcwMjQzZGQ1NDgyMTg0NS4u
ZjhiYWMzOGI1YjZjY2M4Y2MwOGY4NzA3MWViYzc1ZDY1YjMxMDY0MCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9HZW9sb2NhdGlvbkNsaWVudE1vY2suaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL0dlb2xvY2F0aW9uQ2xpZW50TW9jay5oCkBAIC01
OSw3ICs1OSw3IEBAIHB1YmxpYzoKIAogICAgIC8vIEdlb2xvY2F0aW9uQ2xpZW50CiAgICAgdm9p
ZCBnZW9sb2NhdGlvbkRlc3Ryb3llZCgpIG92ZXJyaWRlOwotICAgIHZvaWQgc3RhcnRVcGRhdGlu
Zyhjb25zdCBTdHJpbmcmIGF1dGhvcml6YXRpb25Ub2tlbikgb3ZlcnJpZGU7CisgICAgdm9pZCBz
dGFydFVwZGF0aW5nKGNvbnN0IFN0cmluZyYgYXV0aG9yaXphdGlvblRva2VuLCBib29sIGVuYWJs
ZUhpZ2hBY2N1cmFjeSkgb3ZlcnJpZGU7CiAgICAgdm9pZCBzdG9wVXBkYXRpbmcoKSBvdmVycmlk
ZTsKICAgICB2b2lkIHNldEVuYWJsZUhpZ2hBY2N1cmFjeShib29sKSBvdmVycmlkZTsKICAgICBz
dGQ6Om9wdGlvbmFsPEdlb2xvY2F0aW9uUG9zaXRpb25EYXRhPiBsYXN0UG9zaXRpb24oKSBvdmVy
cmlkZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU291cmNlc0NvY29hLnR4dCBiL1NvdXJj
ZS9XZWJLaXQvU291cmNlc0NvY29hLnR4dAppbmRleCBmZTUwNmY3MTMzNGFkNTQ2ZWJiYWIwNjQx
Y2IzNzFjMjk5ZGIyNmNhLi5jOTA3NDZmZDdjZDNlYTM5OGQzZGMyYjIwZDRkNjgwODY5MWJlYmU3
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NvdXJjZXNDb2NvYS50eHQKKysrIGIvU291cmNl
L1dlYktpdC9Tb3VyY2VzQ29jb2EudHh0CkBAIC00MjYsNiArNDI2LDcgQEAgVUlQcm9jZXNzL0Nv
Y29hL1VJUmVtb3RlT2JqZWN0UmVnaXN0cnkuY3BwCiBVSVByb2Nlc3MvQ29jb2EvVXNlck1lZGlh
Q2FwdHVyZU1hbmFnZXJQcm94eS5jcHAKIFVJUHJvY2Vzcy9Db2NvYS9Vc2VyTWVkaWFQZXJtaXNz
aW9uUmVxdWVzdE1hbmFnZXJQcm94eS5tbQogVUlQcm9jZXNzL0NvY29hL1ZpZGVvRnVsbHNjcmVl
bk1hbmFnZXJQcm94eS5tbQorVUlQcm9jZXNzL0NvY29hL1dlYkdlb2xvY2F0aW9uTWFuYWdlclBy
b3h5Q29jb2EuY3BwCiBVSVByb2Nlc3MvQ29jb2EvV2ViUGFnZVByb3h5Q29jb2EubW0KIFVJUHJv
Y2Vzcy9Db2NvYS9XZWJQYXN0ZWJvYXJkUHJveHlDb2NvYS5tbQogVUlQcm9jZXNzL0NvY29hL1dl
YlByZWZlcmVuY2VzQ29jb2EubW0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0FQSS9DL1dLR2VvbG9jYXRpb25NYW5hZ2VyLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0FQSS9DL1dLR2VvbG9jYXRpb25NYW5hZ2VyLmNwcAppbmRleCA4ODhiNzViYzdjZWM4OWQxNmUw
N2Y2MTdlN2JiMmNlMjk3OWZhNjIzLi4yOTFlYmMxMTE2NDkzYWFlZjA2NmMxYmJiYTRmZGJjZjA4
Mjc1YzQ4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS0dlb2xv
Y2F0aW9uTWFuYWdlci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tH
ZW9sb2NhdGlvbk1hbmFnZXIuY3BwCkBAIC00MCw3ICs0MCw5IEBAIFdLVHlwZUlEIFdLR2VvbG9j
YXRpb25NYW5hZ2VyR2V0VHlwZUlEKCkKIAogdm9pZCBXS0dlb2xvY2F0aW9uTWFuYWdlclNldFBy
b3ZpZGVyKFdLR2VvbG9jYXRpb25NYW5hZ2VyUmVmIGdlb2xvY2F0aW9uTWFuYWdlclJlZiwgY29u
c3QgV0tHZW9sb2NhdGlvblByb3ZpZGVyQmFzZSogd2tQcm92aWRlcikKIHsKKyNpZiAhUExBVEZP
Uk0oSU9TKQogICAgIHRvSW1wbChnZW9sb2NhdGlvbk1hbmFnZXJSZWYpLT5zZXRQcm92aWRlciht
YWtlVW5pcXVlPFdlYkdlb2xvY2F0aW9uUHJvdmlkZXI+KHdrUHJvdmlkZXIpKTsKKyNlbmRpZgog
fQogCiB2b2lkIFdLR2VvbG9jYXRpb25NYW5hZ2VyUHJvdmlkZXJEaWRDaGFuZ2VQb3NpdGlvbihX
S0dlb2xvY2F0aW9uTWFuYWdlclJlZiBnZW9sb2NhdGlvbk1hbmFnZXJSZWYsIFdLR2VvbG9jYXRp
b25Qb3NpdGlvblJlZiBwb3NpdGlvblJlZikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0NvY29hL1dlYkdlb2xvY2F0aW9uTWFuYWdlclByb3h5Q29jb2EuY3BwIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV2ViR2VvbG9jYXRpb25NYW5hZ2VyUHJveHlDb2NvYS5j
cHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uOTAwOGMyMDViM2NkNWU5NDQ1OWM4OWJiNjg5NzdkMmIxYjc2NDM2MQot
LS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dlYkdlb2xv
Y2F0aW9uTWFuYWdlclByb3h5Q29jb2EuY3BwCkBAIC0wLDAgKzEsMTAzIEBACisvKgorICogQ29w
eXJpZ2h0IChDKSAyMDIyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4K
KyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBD
T05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIK
KyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4g
T1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAq
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9G
SVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisg
KiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8K
KworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIldlYkdlb2xvY2F0aW9uTWFuYWdlclBy
b3h5LmgiCisKKyNpbmNsdWRlICJXZWJHZW9sb2NhdGlvbk1hbmFnZXJNZXNzYWdlcy5oIgorCitu
YW1lc3BhY2UgV2ViS2l0IHsKKworLy8gRklYTUU6IFRoaXMgc2hvdWxkIGJlIHVzZWQgYnkgYWxs
IENvY29hIHBvcnRzCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKKwordm9pZCBXZWJHZW9sb2Nh
dGlvbk1hbmFnZXJQcm94eTo6cG9zaXRpb25DaGFuZ2VkKGNvbnN0IFN0cmluZyYgd2Vic2l0ZUlk
ZW50aWZpZXIsIFdlYkNvcmU6Okdlb2xvY2F0aW9uUG9zaXRpb25EYXRhJiYgcG9zaXRpb24pCit7
CisgICAgYXV0byByZWdpc3RyYWJsZURvbWFpbiA9IFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWlu
Ojp1bmNoZWNrZWRDcmVhdGVGcm9tUmVnaXN0cmFibGVEb21haW5TdHJpbmcod2Vic2l0ZUlkZW50
aWZpZXIpOworICAgIGF1dG8gaXQgPSBtX3BlckRvbWFpbkRhdGEuZmluZChyZWdpc3RyYWJsZURv
bWFpbik7CisgICAgaWYgKGl0ID09IG1fcGVyRG9tYWluRGF0YS5lbmQoKSkKKyAgICAgICAgcmV0
dXJuOworCisgICAgYXV0byYgcGVyRG9tYWluRGF0YSA9ICppdC0+dmFsdWU7CisgICAgcGVyRG9t
YWluRGF0YS5sYXN0UG9zaXRpb24gPSBXVEZNb3ZlKHBvc2l0aW9uKTsKKyAgICBmb3IgKGF1dG8g
Y29ubmVjdGlvbklEIDogcGVyRG9tYWluRGF0YS53YXRjaGVycykKKyAgICAgICAgSVBDOjpDb25u
ZWN0aW9uOjpzZW5kKGNvbm5lY3Rpb25JRCwgTWVzc2FnZXM6OldlYkdlb2xvY2F0aW9uTWFuYWdl
cjo6RGlkQ2hhbmdlUG9zaXRpb24ocmVnaXN0cmFibGVEb21haW4sIHBlckRvbWFpbkRhdGEubGFz
dFBvc2l0aW9uLnZhbHVlKCkpLCAwKTsKK30KKwordm9pZCBXZWJHZW9sb2NhdGlvbk1hbmFnZXJQ
cm94eTo6ZXJyb3JPY2N1cnJlZChjb25zdCBTdHJpbmcmIHdlYnNpdGVJZGVudGlmaWVyLCBjb25z
dCBTdHJpbmcmIGVycm9yTWVzc2FnZSkKK3sKKyAgICBhdXRvIHJlZ2lzdHJhYmxlRG9tYWluID0g
V2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW46OnVuY2hlY2tlZENyZWF0ZUZyb21SZWdpc3RyYWJs
ZURvbWFpblN0cmluZyh3ZWJzaXRlSWRlbnRpZmllcik7CisgICAgYXV0byBpdCA9IG1fcGVyRG9t
YWluRGF0YS5maW5kKHJlZ2lzdHJhYmxlRG9tYWluKTsKKyAgICBpZiAoaXQgPT0gbV9wZXJEb21h
aW5EYXRhLmVuZCgpKQorICAgICAgICByZXR1cm47CisKKyAgICBhdXRvJiBwZXJEb21haW5EYXRh
ID0gKml0LT52YWx1ZTsKKyAgICBmb3IgKGF1dG8gY29ubmVjdGlvbklEIDogcGVyRG9tYWluRGF0
YS53YXRjaGVycykKKyAgICAgICAgSVBDOjpDb25uZWN0aW9uOjpzZW5kKGNvbm5lY3Rpb25JRCwg
TWVzc2FnZXM6OldlYkdlb2xvY2F0aW9uTWFuYWdlcjo6RGlkRmFpbFRvRGV0ZXJtaW5lUG9zaXRp
b24ocmVnaXN0cmFibGVEb21haW4sIGVycm9yTWVzc2FnZSksIDApOworfQorCit2b2lkIFdlYkdl
b2xvY2F0aW9uTWFuYWdlclByb3h5OjpyZXNldEdlb2xvY2F0aW9uKGNvbnN0IFN0cmluZyYgd2Vi
c2l0ZUlkZW50aWZpZXIpCit7CisgICAgYXV0byByZWdpc3RyYWJsZURvbWFpbiA9IFdlYkNvcmU6
OlJlZ2lzdHJhYmxlRG9tYWluOjp1bmNoZWNrZWRDcmVhdGVGcm9tUmVnaXN0cmFibGVEb21haW5T
dHJpbmcod2Vic2l0ZUlkZW50aWZpZXIpOworICAgIGF1dG8gaXQgPSBtX3BlckRvbWFpbkRhdGEu
ZmluZChyZWdpc3RyYWJsZURvbWFpbik7CisgICAgaWYgKGl0ID09IG1fcGVyRG9tYWluRGF0YS5l
bmQoKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgYXV0byYgcGVyRG9tYWluRGF0YSA9ICppdC0+
dmFsdWU7CisgICAgZm9yIChhdXRvIGNvbm5lY3Rpb25JRCA6IHBlckRvbWFpbkRhdGEud2F0Y2hl
cnMpCisgICAgICAgIElQQzo6Q29ubmVjdGlvbjo6c2VuZChjb25uZWN0aW9uSUQsIE1lc3NhZ2Vz
OjpXZWJHZW9sb2NhdGlvbk1hbmFnZXI6OlJlc2V0UGVybWlzc2lvbnMocmVnaXN0cmFibGVEb21h
aW4pLCAwKTsKK30KKworYm9vbCBXZWJHZW9sb2NhdGlvbk1hbmFnZXJQcm94eTo6aXNVcGRhdGlu
Zyhjb25zdCBQZXJEb21haW5EYXRhJiBwZXJEb21haW5EYXRhKSBjb25zdAoreworICAgIHJldHVy
biAhcGVyRG9tYWluRGF0YS53YXRjaGVycy5pc0VtcHR5KCk7Cit9CisKK2Jvb2wgV2ViR2VvbG9j
YXRpb25NYW5hZ2VyUHJveHk6OmlzSGlnaEFjY3VyYWN5RW5hYmxlZChjb25zdCBQZXJEb21haW5E
YXRhJiBwZXJEb21haW5EYXRhKSBjb25zdAoreworICAgIHJldHVybiAhcGVyRG9tYWluRGF0YS53
YXRjaGVyc05lZWRpbmdIaWdoQWNjdXJhY3kuaXNFbXB0eSgpOworfQorCit2b2lkIFdlYkdlb2xv
Y2F0aW9uTWFuYWdlclByb3h5Ojpwcm92aWRlclN0YXJ0VXBkYXRpbmcoUGVyRG9tYWluRGF0YSYg
cGVyRG9tYWluRGF0YSwgY29uc3QgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4mIHJlZ2lzdHJh
YmxlRG9tYWluKQoreworICAgIEFTU0VSVCghcGVyRG9tYWluRGF0YS5wcm92aWRlcik7CisgICAg
cGVyRG9tYWluRGF0YS5wcm92aWRlciA9IG1ha2VVbmlxdWU8V2ViQ29yZTo6Q29yZUxvY2F0aW9u
R2VvbG9jYXRpb25Qcm92aWRlcj4ocmVnaXN0cmFibGVEb21haW4sICp0aGlzKTsKKyAgICBwZXJE
b21haW5EYXRhLnByb3ZpZGVyLT5zZXRFbmFibGVIaWdoQWNjdXJhY3koIXBlckRvbWFpbkRhdGEu
d2F0Y2hlcnNOZWVkaW5nSGlnaEFjY3VyYWN5LmlzRW1wdHkoKSk7CisgICAgcGVyRG9tYWluRGF0
YS5wcm92aWRlci0+c3RhcnQoKTsKK30KKwordm9pZCBXZWJHZW9sb2NhdGlvbk1hbmFnZXJQcm94
eTo6cHJvdmlkZXJTdG9wVXBkYXRpbmcoUGVyRG9tYWluRGF0YSYgcGVyRG9tYWluRGF0YSkKK3sK
KyAgICBwZXJEb21haW5EYXRhLnByb3ZpZGVyLT5zdG9wKCk7Cit9CisKK3ZvaWQgV2ViR2VvbG9j
YXRpb25NYW5hZ2VyUHJveHk6OnByb3ZpZGVyU2V0RW5hYmxlZEhpZ2hBY2N1cmFjeShQZXJEb21h
aW5EYXRhJiBwZXJEb21haW5EYXRhLCBib29sIGVuYWJsZWQpCit7CisgICAgcGVyRG9tYWluRGF0
YS5wcm92aWRlci0+c2V0RW5hYmxlSGlnaEFjY3VyYWN5KGVuYWJsZWQpOworfQorCisjZW5kaWYK
KworfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViR2VvbG9jYXRpb25N
YW5hZ2VyUHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViR2VvbG9jYXRpb25N
YW5hZ2VyUHJveHkuY3BwCmluZGV4IDA0ZjMyMjdjZDU1Yzk5MmE0MmNkOTZhM2YyNWQ2OTdhZWQ3
OTY1YTIuLjA1YTUwZDBmMGM4MWFlZDc0NGI0MjBmYWE4OWJmOTY1ODhhMTBjY2MgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkdlb2xvY2F0aW9uTWFuYWdlclByb3h5LmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJHZW9sb2NhdGlvbk1hbmFnZXJQcm94
eS5jcHAKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDExLCAyMDEyLCAy
MDEzIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAx
MS0yMDIyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
ICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucwpAQCAtNTAsMzQgKzUwLDM5IEBAIFJlZjxXZWJHZW9sb2NhdGlvbk1hbmFn
ZXJQcm94eT4gV2ViR2VvbG9jYXRpb25NYW5hZ2VyUHJveHk6OmNyZWF0ZShXZWJQcm9jZXNzUG9v
CiAKIFdlYkdlb2xvY2F0aW9uTWFuYWdlclByb3h5OjpXZWJHZW9sb2NhdGlvbk1hbmFnZXJQcm94
eShXZWJQcm9jZXNzUG9vbCogcHJvY2Vzc1Bvb2wpCiAgICAgOiBXZWJDb250ZXh0U3VwcGxlbWVu
dChwcm9jZXNzUG9vbCkKLSAgICAsIG1fcHJvdmlkZXIobWFrZVVuaXF1ZTxBUEk6Okdlb2xvY2F0
aW9uUHJvdmlkZXI+KCkpCiB7CiAgICAgV2ViQ29udGV4dFN1cHBsZW1lbnQ6OnByb2Nlc3NQb29s
KCktPmFkZE1lc3NhZ2VSZWNlaXZlcihNZXNzYWdlczo6V2ViR2VvbG9jYXRpb25NYW5hZ2VyUHJv
eHk6Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSwgKnRoaXMpOwogfQogCi12b2lkIFdlYkdlb2xvY2F0
aW9uTWFuYWdlclByb3h5OjpzZXRQcm92aWRlcihzdGQ6OnVuaXF1ZV9wdHI8QVBJOjpHZW9sb2Nh
dGlvblByb3ZpZGVyPiYmIHByb3ZpZGVyKQotewotICAgIGlmICghcHJvdmlkZXIpCi0gICAgICAg
IG1fcHJvdmlkZXIgPSBtYWtlVW5pcXVlPEFQSTo6R2VvbG9jYXRpb25Qcm92aWRlcj4oKTsKLSAg
ICBlbHNlCi0gICAgICAgIG1fcHJvdmlkZXIgPSBXVEZNb3ZlKHByb3ZpZGVyKTsKLX0KK1dlYkdl
b2xvY2F0aW9uTWFuYWdlclByb3h5Ojp+V2ViR2VvbG9jYXRpb25NYW5hZ2VyUHJveHkoKSA9IGRl
ZmF1bHQ7CiAKIC8vIFdlYkNvbnRleHRTdXBwbGVtZW50CiAKIHZvaWQgV2ViR2VvbG9jYXRpb25N
YW5hZ2VyUHJveHk6OnByb2Nlc3NQb29sRGVzdHJveWVkKCkKIHsKLSAgICBib29sIHdhc1VwZGF0
aW5nID0gaXNVcGRhdGluZygpOwotICAgIG1fdXBkYXRlUmVxdWVzdGVycy5jbGVhcigpOworICAg
IGlmIChtX3BlckRvbWFpbkRhdGEuaXNFbXB0eSgpKQorICAgICAgICByZXR1cm47CiAKLSAgICBB
U1NFUlQoIWlzVXBkYXRpbmcoKSk7Ci0gICAgaWYgKHdhc1VwZGF0aW5nKQorICAgIG1fcGVyRG9t
YWluRGF0YS5jbGVhcigpOworI2lmICFQTEFURk9STShJT1NfRkFNSUxZKQorICAgIGlmIChtX3By
b3ZpZGVyKQogICAgICAgICBtX3Byb3ZpZGVyLT5zdG9wVXBkYXRpbmcoKnRoaXMpOworI2VuZGlm
CiB9CiAKIHZvaWQgV2ViR2VvbG9jYXRpb25NYW5hZ2VyUHJveHk6OnByb2Nlc3NEaWRDbG9zZShX
ZWJQcm9jZXNzUHJveHkqIHdlYlByb2Nlc3NQcm94eSkKIHsKLSAgICByZW1vdmVSZXF1ZXN0ZXIo
d2ViUHJvY2Vzc1Byb3h5KTsKKyAgICBhdXRvKiBjb25uZWN0aW9uID0gd2ViUHJvY2Vzc1Byb3h5
LT5jb25uZWN0aW9uKCk7CisgICAgaWYgKCFjb25uZWN0aW9uKQorICAgICAgICByZXR1cm47CisK
KyAgICBWZWN0b3I8V2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4+IGFmZmVjdGVkRG9tYWluczsK
KyAgICBmb3IgKGF1dG8mIFtyZWdpc3RyYWJsZURvbWFpbiwgcGVyRG9tYWluRGF0YV0gOiBtX3Bl
ckRvbWFpbkRhdGEpIHsKKyAgICAgICAgaWYgKHBlckRvbWFpbkRhdGEtPndhdGNoZXJzLmNvbnRh
aW5zKGNvbm5lY3Rpb24tPnVuaXF1ZUlEKCkpKQorICAgICAgICAgICAgYWZmZWN0ZWREb21haW5z
LmFwcGVuZChyZWdpc3RyYWJsZURvbWFpbik7CisgICAgfQorICAgIGZvciAoYXV0byYgcmVnaXN0
cmFibGVEb21haW4gOiBhZmZlY3RlZERvbWFpbnMpCisgICAgICAgIHN0b3BVcGRhdGluZygqY29u
bmVjdGlvbiwgcmVnaXN0cmFibGVEb21haW4pOwogfQogCiB2b2lkIFdlYkdlb2xvY2F0aW9uTWFu
YWdlclByb3h5OjpyZWZXZWJDb250ZXh0U3VwcGxlbWVudCgpCkBAIC05MiwzMCArOTcsMjIgQEAg
dm9pZCBXZWJHZW9sb2NhdGlvbk1hbmFnZXJQcm94eTo6ZGVyZWZXZWJDb250ZXh0U3VwcGxlbWVu
dCgpCiAKIHZvaWQgV2ViR2VvbG9jYXRpb25NYW5hZ2VyUHJveHk6OnByb3ZpZGVyRGlkQ2hhbmdl
UG9zaXRpb24oV2ViR2VvbG9jYXRpb25Qb3NpdGlvbiogcG9zaXRpb24pCiB7Ci0gICAgbV9sYXN0
UG9zaXRpb24gPSBwb3NpdGlvbi0+Y29yZVBvc2l0aW9uKCk7Ci0KLSAgICBpZiAoIXByb2Nlc3NQ
b29sKCkpCi0gICAgICAgIHJldHVybjsKLQotICAgIHByb2Nlc3NQb29sKCktPnNlbmRUb0FsbFBy
b2Nlc3NlcyhNZXNzYWdlczo6V2ViR2VvbG9jYXRpb25NYW5hZ2VyOjpEaWRDaGFuZ2VQb3NpdGlv
bihtX2xhc3RQb3NpdGlvbi52YWx1ZSgpKSk7CisgICAgZm9yIChhdXRvJiBbcmVnaXN0cmFibGVE
b21haW4sIHBlckRvbWFpbkRhdGFdIDogbV9wZXJEb21haW5EYXRhKSB7CisgICAgICAgIHBlckRv
bWFpbkRhdGEtPmxhc3RQb3NpdGlvbiA9IHBvc2l0aW9uLT5jb3JlUG9zaXRpb24oKTsKKyAgICAg
ICAgZm9yIChhdXRvIGNvbm5lY3Rpb25JRCA6IHBlckRvbWFpbkRhdGEtPndhdGNoZXJzKQorICAg
ICAgICAgICAgSVBDOjpDb25uZWN0aW9uOjpzZW5kKGNvbm5lY3Rpb25JRCwgTWVzc2FnZXM6Oldl
Ykdlb2xvY2F0aW9uTWFuYWdlcjo6RGlkQ2hhbmdlUG9zaXRpb24ocmVnaXN0cmFibGVEb21haW4s
IHBlckRvbWFpbkRhdGEtPmxhc3RQb3NpdGlvbi52YWx1ZSgpKSwgMCk7CisgICAgfQogfQogCiB2
b2lkIFdlYkdlb2xvY2F0aW9uTWFuYWdlclByb3h5Ojpwcm92aWRlckRpZEZhaWxUb0RldGVybWlu
ZVBvc2l0aW9uKGNvbnN0IFN0cmluZyYgZXJyb3JNZXNzYWdlKQogewotICAgIGlmICghcHJvY2Vz
c1Bvb2woKSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgcHJvY2Vzc1Bvb2woKS0+c2VuZFRvQWxs
UHJvY2Vzc2VzKE1lc3NhZ2VzOjpXZWJHZW9sb2NhdGlvbk1hbmFnZXI6OkRpZEZhaWxUb0RldGVy
bWluZVBvc2l0aW9uKGVycm9yTWVzc2FnZSkpOwotfQotCi0jaWYgUExBVEZPUk0oSU9TX0ZBTUlM
WSkKLXZvaWQgV2ViR2VvbG9jYXRpb25NYW5hZ2VyUHJveHk6OnJlc2V0UGVybWlzc2lvbnMoKQot
ewotICAgIHByb2Nlc3NQb29sKCktPnNlbmRUb0FsbFByb2Nlc3NlcyhNZXNzYWdlczo6V2ViR2Vv
bG9jYXRpb25NYW5hZ2VyOjpSZXNldFBlcm1pc3Npb25zKCkpOworICAgIGZvciAoYXV0byYgW3Jl
Z2lzdHJhYmxlRG9tYWluLCBwZXJEb21haW5EYXRhXSA6IG1fcGVyRG9tYWluRGF0YSkgeworICAg
ICAgICBmb3IgKGF1dG8gY29ubmVjdGlvbklEIDogcGVyRG9tYWluRGF0YS0+d2F0Y2hlcnMpCisg
ICAgICAgICAgICBJUEM6OkNvbm5lY3Rpb246OnNlbmQoY29ubmVjdGlvbklELCBNZXNzYWdlczo6
V2ViR2VvbG9jYXRpb25NYW5hZ2VyOjpEaWRGYWlsVG9EZXRlcm1pbmVQb3NpdGlvbihyZWdpc3Ry
YWJsZURvbWFpbiwgZXJyb3JNZXNzYWdlKSwgMCk7CisgICAgfQogfQotI2VuZGlmCiAKLXZvaWQg
V2ViR2VvbG9jYXRpb25NYW5hZ2VyUHJveHk6OnN0YXJ0VXBkYXRpbmcoSVBDOjpDb25uZWN0aW9u
JiBjb25uZWN0aW9uLCBXZWJQYWdlUHJveHlJZGVudGlmaWVyIHBhZ2VQcm94eUlELCBjb25zdCBT
dHJpbmcmIGF1dGhvcml6YXRpb25Ub2tlbikKK3ZvaWQgV2ViR2VvbG9jYXRpb25NYW5hZ2VyUHJv
eHk6OnN0YXJ0VXBkYXRpbmcoSVBDOjpDb25uZWN0aW9uJiBjb25uZWN0aW9uLCBjb25zdCBXZWJD
b3JlOjpSZWdpc3RyYWJsZURvbWFpbiYgcmVnaXN0cmFibGVEb21haW4sIFdlYlBhZ2VQcm94eUlk
ZW50aWZpZXIgcGFnZVByb3h5SUQsIGNvbnN0IFN0cmluZyYgYXV0aG9yaXphdGlvblRva2VuLCBi
b29sIGVuYWJsZUhpZ2hBY2N1cmFjeSkKIHsKICAgICBhdXRvKiBwYWdlID0gV2ViUHJvY2Vzc1By
b3h5Ojp3ZWJQYWdlKHBhZ2VQcm94eUlEKTsKICAgICBNRVNTQUdFX0NIRUNLKHBhZ2UpOwpAQCAt
MTIzLDUwICsxMjAsMTIxIEBAIHZvaWQgV2ViR2VvbG9jYXRpb25NYW5hZ2VyUHJveHk6OnN0YXJ0
VXBkYXRpbmcoSVBDOjpDb25uZWN0aW9uJiBjb25uZWN0aW9uLCBXZWJQCiAgICAgYXV0byBpc1Zh
bGlkQXV0aG9yaXphdGlvblRva2VuID0gcGFnZS0+Z2VvbG9jYXRpb25QZXJtaXNzaW9uUmVxdWVz
dE1hbmFnZXIoKS5pc1ZhbGlkQXV0aG9yaXphdGlvblRva2VuKGF1dGhvcml6YXRpb25Ub2tlbik7
CiAgICAgTUVTU0FHRV9DSEVDSyhpc1ZhbGlkQXV0aG9yaXphdGlvblRva2VuKTsKIAotICAgIGJv
b2wgd2FzVXBkYXRpbmcgPSBpc1VwZGF0aW5nKCk7Ci0gICAgbV91cGRhdGVSZXF1ZXN0ZXJzLmFk
ZCgmY29ubmVjdGlvbi5jbGllbnQoKSk7CisgICAgYXV0byYgcGVyRG9tYWluRGF0YSA9ICptX3Bl
ckRvbWFpbkRhdGEuZW5zdXJlKHJlZ2lzdHJhYmxlRG9tYWluLCBbXSB7CisgICAgICAgIHJldHVy
biBtYWtlVW5pcXVlPFBlckRvbWFpbkRhdGE+KCk7CisgICAgfSkuaXRlcmF0b3ItPnZhbHVlOwor
CisgICAgYm9vbCB3YXNVcGRhdGluZyA9IGlzVXBkYXRpbmcocGVyRG9tYWluRGF0YSk7CisgICAg
Ym9vbCBoaWdoQWNjdXJhY3lXYXNFbmFibGVkID0gaXNIaWdoQWNjdXJhY3lFbmFibGVkKHBlckRv
bWFpbkRhdGEpOworCisgICAgcGVyRG9tYWluRGF0YS53YXRjaGVycy5hZGQoY29ubmVjdGlvbi51
bmlxdWVJRCgpKTsKKyAgICBpZiAoZW5hYmxlSGlnaEFjY3VyYWN5KQorICAgICAgICBwZXJEb21h
aW5EYXRhLndhdGNoZXJzTmVlZGluZ0hpZ2hBY2N1cmFjeS5hZGQoY29ubmVjdGlvbi51bmlxdWVJ
RCgpKTsKKwogICAgIGlmICghd2FzVXBkYXRpbmcpIHsKLSAgICAgICAgbV9wcm92aWRlci0+c2V0
RW5hYmxlSGlnaEFjY3VyYWN5KCp0aGlzLCBpc0hpZ2hBY2N1cmFjeUVuYWJsZWQoKSk7Ci0gICAg
ICAgIG1fcHJvdmlkZXItPnN0YXJ0VXBkYXRpbmcoKnRoaXMpOwotICAgIH0gZWxzZSBpZiAobV9s
YXN0UG9zaXRpb24pCi0gICAgICAgIGNvbm5lY3Rpb24uc2VuZChNZXNzYWdlczo6V2ViR2VvbG9j
YXRpb25NYW5hZ2VyOjpEaWRDaGFuZ2VQb3NpdGlvbihtX2xhc3RQb3NpdGlvbi52YWx1ZSgpKSwg
MCk7Ci19CisgICAgICAgIHByb3ZpZGVyU3RhcnRVcGRhdGluZyhwZXJEb21haW5EYXRhLCByZWdp
c3RyYWJsZURvbWFpbik7CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgaWYgKCFoaWdoQWNj
dXJhY3lXYXNFbmFibGVkICYmIGVuYWJsZUhpZ2hBY2N1cmFjeSkKKyAgICAgICAgcHJvdmlkZXJT
ZXRFbmFibGVkSGlnaEFjY3VyYWN5KHBlckRvbWFpbkRhdGEsIGVuYWJsZUhpZ2hBY2N1cmFjeSk7
CiAKLXZvaWQgV2ViR2VvbG9jYXRpb25NYW5hZ2VyUHJveHk6OnN0b3BVcGRhdGluZyhJUEM6OkNv
bm5lY3Rpb24mIGNvbm5lY3Rpb24pCi17Ci0gICAgcmVtb3ZlUmVxdWVzdGVyKCZjb25uZWN0aW9u
LmNsaWVudCgpKTsKKyAgICBpZiAocGVyRG9tYWluRGF0YS5sYXN0UG9zaXRpb24pCisgICAgICAg
IGNvbm5lY3Rpb24uc2VuZChNZXNzYWdlczo6V2ViR2VvbG9jYXRpb25NYW5hZ2VyOjpEaWRDaGFu
Z2VQb3NpdGlvbihyZWdpc3RyYWJsZURvbWFpbiwgcGVyRG9tYWluRGF0YS5sYXN0UG9zaXRpb24u
dmFsdWUoKSksIDApOwogfQogCi12b2lkIFdlYkdlb2xvY2F0aW9uTWFuYWdlclByb3h5OjpyZW1v
dmVSZXF1ZXN0ZXIoY29uc3QgSVBDOjpDb25uZWN0aW9uOjpDbGllbnQqIGNsaWVudCkKK3ZvaWQg
V2ViR2VvbG9jYXRpb25NYW5hZ2VyUHJveHk6OnN0b3BVcGRhdGluZyhJUEM6OkNvbm5lY3Rpb24m
IGNvbm5lY3Rpb24sIGNvbnN0IFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluJiByZWdpc3RyYWJs
ZURvbWFpbikKIHsKLSAgICBib29sIHdhc1VwZGF0aW5nID0gaXNVcGRhdGluZygpOwotICAgIGJv
b2wgaGlnaEFjY3VyYWN5V2FzRW5hYmxlZCA9IGlzSGlnaEFjY3VyYWN5RW5hYmxlZCgpOworICAg
IGF1dG8gaXQgPSBtX3BlckRvbWFpbkRhdGEuZmluZChyZWdpc3RyYWJsZURvbWFpbik7CisgICAg
aWYgKGl0ID09IG1fcGVyRG9tYWluRGF0YS5lbmQoKSkKKyAgICAgICAgcmV0dXJuOwogCi0gICAg
bV9oaWdoQWNjdXJhY3lSZXF1ZXN0ZXJzLnJlbW92ZShjbGllbnQpOwotICAgIG1fdXBkYXRlUmVx
dWVzdGVycy5yZW1vdmUoY2xpZW50KTsKKyAgICBhdXRvJiBwZXJEb21haW5EYXRhID0gKml0LT52
YWx1ZTsKKyAgICBib29sIHdhc1VwZGF0aW5nID0gaXNVcGRhdGluZyhwZXJEb21haW5EYXRhKTsK
KyAgICBib29sIGhpZ2hBY2N1cmFjeVdhc0VuYWJsZWQgPSBpc0hpZ2hBY2N1cmFjeUVuYWJsZWQo
cGVyRG9tYWluRGF0YSk7CiAKLSAgICBpZiAod2FzVXBkYXRpbmcgJiYgIWlzVXBkYXRpbmcoKSkK
LSAgICAgICAgbV9wcm92aWRlci0+c3RvcFVwZGF0aW5nKCp0aGlzKTsKKyAgICBwZXJEb21haW5E
YXRhLndhdGNoZXJzLnJlbW92ZShjb25uZWN0aW9uLnVuaXF1ZUlEKCkpOworICAgIHBlckRvbWFp
bkRhdGEud2F0Y2hlcnNOZWVkaW5nSGlnaEFjY3VyYWN5LnJlbW92ZShjb25uZWN0aW9uLnVuaXF1
ZUlEKCkpOworCisgICAgaWYgKHdhc1VwZGF0aW5nICYmICFpc1VwZGF0aW5nKHBlckRvbWFpbkRh
dGEpKQorICAgICAgICBwcm92aWRlclN0b3BVcGRhdGluZyhwZXJEb21haW5EYXRhKTsKICAgICBl
bHNlIHsKLSAgICAgICAgYm9vbCBoaWdoQWNjdXJhY3lTaG91bGRCZUVuYWJsZWQgPSBpc0hpZ2hB
Y2N1cmFjeUVuYWJsZWQoKTsKKyAgICAgICAgYm9vbCBoaWdoQWNjdXJhY3lTaG91bGRCZUVuYWJs
ZWQgPSBpc0hpZ2hBY2N1cmFjeUVuYWJsZWQocGVyRG9tYWluRGF0YSk7CiAgICAgICAgIGlmICho
aWdoQWNjdXJhY3lTaG91bGRCZUVuYWJsZWQgIT0gaGlnaEFjY3VyYWN5V2FzRW5hYmxlZCkKLSAg
ICAgICAgICAgIG1fcHJvdmlkZXItPnNldEVuYWJsZUhpZ2hBY2N1cmFjeSgqdGhpcywgaGlnaEFj
Y3VyYWN5U2hvdWxkQmVFbmFibGVkKTsKKyAgICAgICAgICAgIHByb3ZpZGVyU2V0RW5hYmxlZEhp
Z2hBY2N1cmFjeShwZXJEb21haW5EYXRhLCBoaWdoQWNjdXJhY3lTaG91bGRCZUVuYWJsZWQpOwog
ICAgIH0KKworICAgIGlmIChwZXJEb21haW5EYXRhLndhdGNoZXJzLmlzRW1wdHkoKSAmJiBwZXJE
b21haW5EYXRhLndhdGNoZXJzTmVlZGluZ0hpZ2hBY2N1cmFjeS5pc0VtcHR5KCkpCisgICAgICAg
IG1fcGVyRG9tYWluRGF0YS5yZW1vdmUoaXQpOwogfQogCi12b2lkIFdlYkdlb2xvY2F0aW9uTWFu
YWdlclByb3h5OjpzZXRFbmFibGVIaWdoQWNjdXJhY3koSVBDOjpDb25uZWN0aW9uJiBjb25uZWN0
aW9uLCBib29sIGVuYWJsZWQpCit2b2lkIFdlYkdlb2xvY2F0aW9uTWFuYWdlclByb3h5OjpzZXRF
bmFibGVIaWdoQWNjdXJhY3koSVBDOjpDb25uZWN0aW9uJiBjb25uZWN0aW9uLCBjb25zdCBXZWJD
b3JlOjpSZWdpc3RyYWJsZURvbWFpbiYgcmVnaXN0cmFibGVEb21haW4sIGJvb2wgZW5hYmxlZCkK
IHsKLSAgICBib29sIGhpZ2hBY2N1cmFjeVdhc0VuYWJsZWQgPSBpc0hpZ2hBY2N1cmFjeUVuYWJs
ZWQoKTsKKyAgICBhdXRvIGl0ID0gbV9wZXJEb21haW5EYXRhLmZpbmQocmVnaXN0cmFibGVEb21h
aW4pOworICAgIEFTU0VSVChpdCAhPSBtX3BlckRvbWFpbkRhdGEuZW5kKCkpOworICAgIGlmIChp
dCA9PSBtX3BlckRvbWFpbkRhdGEuZW5kKCkpCisgICAgICAgIHJldHVybjsKKworICAgIGF1dG8m
IHBlckRvbWFpbkRhdGEgPSAqaXQtPnZhbHVlOworICAgIGJvb2wgaGlnaEFjY3VyYWN5V2FzRW5h
YmxlZCA9IGlzSGlnaEFjY3VyYWN5RW5hYmxlZChwZXJEb21haW5EYXRhKTsKIAogICAgIGlmIChl
bmFibGVkKQotICAgICAgICBtX2hpZ2hBY2N1cmFjeVJlcXVlc3RlcnMuYWRkKCZjb25uZWN0aW9u
LmNsaWVudCgpKTsKKyAgICAgICAgcGVyRG9tYWluRGF0YS53YXRjaGVyc05lZWRpbmdIaWdoQWNj
dXJhY3kuYWRkKGNvbm5lY3Rpb24udW5pcXVlSUQoKSk7CisgICAgZWxzZQorICAgICAgICBwZXJE
b21haW5EYXRhLndhdGNoZXJzTmVlZGluZ0hpZ2hBY2N1cmFjeS5yZW1vdmUoY29ubmVjdGlvbi51
bmlxdWVJRCgpKTsKKworICAgIGlmIChpc1VwZGF0aW5nKHBlckRvbWFpbkRhdGEpICYmIGhpZ2hB
Y2N1cmFjeVdhc0VuYWJsZWQgIT0gZW5hYmxlZCkKKyAgICAgICAgcHJvdmlkZXJTZXRFbmFibGVk
SGlnaEFjY3VyYWN5KHBlckRvbWFpbkRhdGEsIGVuYWJsZWQpOworfQorCisjaWYgIVBMQVRGT1JN
KElPU19GQU1JTFkpCit2b2lkIFdlYkdlb2xvY2F0aW9uTWFuYWdlclByb3h5OjpzZXRQcm92aWRl
cihzdGQ6OnVuaXF1ZV9wdHI8QVBJOjpHZW9sb2NhdGlvblByb3ZpZGVyPiYmIHByb3ZpZGVyKQor
eworICAgIGlmICghcHJvdmlkZXIpCisgICAgICAgIG1fcHJvdmlkZXIgPSBtYWtlVW5pcXVlPEFQ
STo6R2VvbG9jYXRpb25Qcm92aWRlcj4oKTsKICAgICBlbHNlCi0gICAgICAgIG1faGlnaEFjY3Vy
YWN5UmVxdWVzdGVycy5yZW1vdmUoJmNvbm5lY3Rpb24uY2xpZW50KCkpOworICAgICAgICBtX3By
b3ZpZGVyID0gV1RGTW92ZShwcm92aWRlcik7Cit9CisKK2Jvb2wgV2ViR2VvbG9jYXRpb25NYW5h
Z2VyUHJveHk6OmlzVXBkYXRpbmcoY29uc3QgUGVyRG9tYWluRGF0YSYpIGNvbnN0Cit7CisgICAg
Zm9yIChhdXRvJiBwZXJEb21haW5EYXRhIDogbV9wZXJEb21haW5EYXRhLnZhbHVlcygpKSB7Cisg
ICAgICAgIGlmICghcGVyRG9tYWluRGF0YS0+d2F0Y2hlcnMuaXNFbXB0eSgpKQorICAgICAgICAg
ICAgcmV0dXJuIHRydWU7CisgICAgfQorICAgIHJldHVybiBmYWxzZTsKK30KKworCitib29sIFdl
Ykdlb2xvY2F0aW9uTWFuYWdlclByb3h5Ojppc0hpZ2hBY2N1cmFjeUVuYWJsZWQoY29uc3QgUGVy
RG9tYWluRGF0YSYpIGNvbnN0Cit7CisgICAgZm9yIChhdXRvJiBwZXJEb21haW5EYXRhIDogbV9w
ZXJEb21haW5EYXRhLnZhbHVlcygpKSB7CisgICAgICAgIGlmICghcGVyRG9tYWluRGF0YS0+d2F0
Y2hlcnNOZWVkaW5nSGlnaEFjY3VyYWN5LmlzRW1wdHkoKSkKKyAgICAgICAgICAgIHJldHVybiB0
cnVlOworICAgIH0KKyAgICByZXR1cm4gZmFsc2U7Cit9CisKK3ZvaWQgV2ViR2VvbG9jYXRpb25N
YW5hZ2VyUHJveHk6OnByb3ZpZGVyU3RhcnRVcGRhdGluZyhQZXJEb21haW5EYXRhJiBwZXJEb21h
aW5EYXRhLCBjb25zdCBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiYpCit7CisgICAgaWYgKCFt
X3Byb3ZpZGVyKQorICAgICAgICByZXR1cm47CisKKyAgICBtX3Byb3ZpZGVyLT5zZXRFbmFibGVI
aWdoQWNjdXJhY3koKnRoaXMsIGlzSGlnaEFjY3VyYWN5RW5hYmxlZChwZXJEb21haW5EYXRhKSk7
CisgICAgbV9wcm92aWRlci0+c3RhcnRVcGRhdGluZygqdGhpcyk7Cit9CisKK3ZvaWQgV2ViR2Vv
bG9jYXRpb25NYW5hZ2VyUHJveHk6OnByb3ZpZGVyU3RvcFVwZGF0aW5nKFBlckRvbWFpbkRhdGEm
KQoreworICAgIGlmIChtX3Byb3ZpZGVyKQorICAgICAgICBtX3Byb3ZpZGVyLT5zdG9wVXBkYXRp
bmcoKnRoaXMpOworfQogCi0gICAgYm9vbCBoaWdoQWNjdXJhY3lTaG91bGRCZUVuYWJsZWQgPSBp
c0hpZ2hBY2N1cmFjeUVuYWJsZWQoKTsKLSAgICBpZiAoaXNVcGRhdGluZygpICYmIGhpZ2hBY2N1
cmFjeVdhc0VuYWJsZWQgIT0gaGlnaEFjY3VyYWN5U2hvdWxkQmVFbmFibGVkKQotICAgICAgICBt
X3Byb3ZpZGVyLT5zZXRFbmFibGVIaWdoQWNjdXJhY3koKnRoaXMsIGhpZ2hBY2N1cmFjeVNob3Vs
ZEJlRW5hYmxlZCk7Cit2b2lkIFdlYkdlb2xvY2F0aW9uTWFuYWdlclByb3h5Ojpwcm92aWRlclNl
dEVuYWJsZWRIaWdoQWNjdXJhY3koUGVyRG9tYWluRGF0YSYsIGJvb2wgZW5hYmxlZCkKK3sKKyAg
ICBpZiAobV9wcm92aWRlcikKKyAgICAgICAgbV9wcm92aWRlci0+c2V0RW5hYmxlSGlnaEFjY3Vy
YWN5KCp0aGlzLCBlbmFibGVkKTsKIH0KKyNlbmRpZiAvLyAhUExBVEZPUk0oSU9TX0ZBTUlMWSkK
IAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL1dlYkdlb2xvY2F0aW9uTWFuYWdlclByb3h5LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9XZWJHZW9sb2NhdGlvbk1hbmFnZXJQcm94eS5oCmluZGV4IDc0OTM2ZTQ1YTBkODM4M2E4
YjRiM2Q2ZDU3OGM5YmQyMmJlM2ZhNWUuLmVmMTFmNGNiMDZiMDRlZTA1ZTIyMDIxNmY4ZDI4NjQ0
ZGEwZjRmNjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkdlb2xvY2F0
aW9uTWFuYWdlclByb3h5LmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViR2VvbG9j
YXRpb25NYW5hZ2VyUHJveHkuaApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMp
IDIwMTEsIDIwMTIsIDIwMTMgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29w
eXJpZ2h0IChDKSAyMDExLTIwMjIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoK
ICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0zMSw5ICszMSwxNSBAQAogI2luY2x1ZGUg
IldlYkNvbnRleHRTdXBwbGVtZW50LmgiCiAjaW5jbHVkZSAiV2ViUGFnZVByb3h5SWRlbnRpZmll
ci5oIgogI2luY2x1ZGUgPFdlYkNvcmUvR2VvbG9jYXRpb25Qb3NpdGlvbkRhdGEuaD4KKyNpbmNs
dWRlIDxXZWJDb3JlL1JlZ2lzdHJhYmxlRG9tYWluLmg+CisjaW5jbHVkZSA8d3RmL0hhc2hNYXAu
aD4KICNpbmNsdWRlIDx3dGYvSGFzaFNldC5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmlu
Zy5oPgogCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKKyNpbmNsdWRlIDxXZWJDb3JlL0NvcmVM
b2NhdGlvbkdlb2xvY2F0aW9uUHJvdmlkZXIuaD4KKyNlbmRpZgorCiBuYW1lc3BhY2UgQVBJIHsK
IGNsYXNzIEdlb2xvY2F0aW9uUHJvdmlkZXI7CiB9CkBAIC00MywyMCArNDksMjMgQEAgbmFtZXNw
YWNlIFdlYktpdCB7CiBjbGFzcyBXZWJHZW9sb2NhdGlvblBvc2l0aW9uOwogY2xhc3MgV2ViUHJv
Y2Vzc1Bvb2w7CiAKLWNsYXNzIFdlYkdlb2xvY2F0aW9uTWFuYWdlclByb3h5IDogcHVibGljIEFQ
STo6T2JqZWN0SW1wbDxBUEk6Ok9iamVjdDo6VHlwZTo6R2VvbG9jYXRpb25NYW5hZ2VyPiwgcHVi
bGljIFdlYkNvbnRleHRTdXBwbGVtZW50LCBwcml2YXRlIElQQzo6TWVzc2FnZVJlY2VpdmVyIHsK
K2NsYXNzIFdlYkdlb2xvY2F0aW9uTWFuYWdlclByb3h5IDogcHVibGljIEFQSTo6T2JqZWN0SW1w
bDxBUEk6Ok9iamVjdDo6VHlwZTo6R2VvbG9jYXRpb25NYW5hZ2VyPiwgcHVibGljIFdlYkNvbnRl
eHRTdXBwbGVtZW50LCBwcml2YXRlIElQQzo6TWVzc2FnZVJlY2VpdmVyCisjaWYgUExBVEZPUk0o
SU9TX0ZBTUlMWSkKKyAgICAsIHB1YmxpYyBXZWJDb3JlOjpDb3JlTG9jYXRpb25HZW9sb2NhdGlv
blByb3ZpZGVyOjpDbGllbnQKKyNlbmRpZgorewogcHVibGljOgogICAgIHN0YXRpYyBjb25zdCBj
aGFyKiBzdXBwbGVtZW50TmFtZSgpOwogCiAgICAgc3RhdGljIFJlZjxXZWJHZW9sb2NhdGlvbk1h
bmFnZXJQcm94eT4gY3JlYXRlKFdlYlByb2Nlc3NQb29sKik7CisgICAgfldlYkdlb2xvY2F0aW9u
TWFuYWdlclByb3h5KCk7CiAKKyNpZiAhUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICB2b2lkIHNl
dFByb3ZpZGVyKHN0ZDo6dW5pcXVlX3B0cjxBUEk6Okdlb2xvY2F0aW9uUHJvdmlkZXI+JiYpOwor
I2VuZGlmCiAKICAgICB2b2lkIHByb3ZpZGVyRGlkQ2hhbmdlUG9zaXRpb24oV2ViR2VvbG9jYXRp
b25Qb3NpdGlvbiopOwogICAgIHZvaWQgcHJvdmlkZXJEaWRGYWlsVG9EZXRlcm1pbmVQb3NpdGlv
bihjb25zdCBTdHJpbmcmIGVycm9yTWVzc2FnZSA9IFN0cmluZygpKTsKLSNpZiBQTEFURk9STShJ
T1NfRkFNSUxZKQotICAgIHZvaWQgcmVzZXRQZXJtaXNzaW9ucygpOwotI2VuZGlmCi0gICAgY29u
c3Qgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpHZW9sb2NhdGlvblBvc2l0aW9uRGF0YT4mIGxhc3RQ
b3NpdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fbGFzdFBvc2l0aW9uOyB9CiAKICAgICB1c2luZyBB
UEk6Ok9iamVjdDo6cmVmOwogICAgIHVzaW5nIEFQSTo6T2JqZWN0OjpkZXJlZjsKQEAgLTczLDE5
ICs4Miw0MCBAQCBwcml2YXRlOgogICAgIC8vIElQQzo6TWVzc2FnZVJlY2VpdmVyCiAgICAgdm9p
ZCBkaWRSZWNlaXZlTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6OkRlY29kZXImKSBvdmVy
cmlkZTsKIAotICAgIGJvb2wgaXNVcGRhdGluZygpIGNvbnN0IHsgcmV0dXJuICFtX3VwZGF0ZVJl
cXVlc3RlcnMuaXNFbXB0eSgpOyB9Ci0gICAgYm9vbCBpc0hpZ2hBY2N1cmFjeUVuYWJsZWQoKSBj
b25zdCB7IHJldHVybiAhbV9oaWdoQWNjdXJhY3lSZXF1ZXN0ZXJzLmlzRW1wdHkoKTsgfQorICAg
IC8vIElQQyBtZXNzYWdlcy4KKyAgICB2b2lkIHN0YXJ0VXBkYXRpbmcoSVBDOjpDb25uZWN0aW9u
JiwgY29uc3QgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4mLCBXZWJQYWdlUHJveHlJZGVudGlm
aWVyLCBjb25zdCBTdHJpbmcmIGF1dGhvcml6YXRpb25Ub2tlbiwgYm9vbCBlbmFibGVIaWdoQWNj
dXJhY3kpOworICAgIHZvaWQgc3RvcFVwZGF0aW5nKElQQzo6Q29ubmVjdGlvbiYsIGNvbnN0IFdl
YkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluJik7CisgICAgdm9pZCBzZXRFbmFibGVIaWdoQWNjdXJh
Y3koSVBDOjpDb25uZWN0aW9uJiwgY29uc3QgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4mLCBi
b29sKTsKIAotICAgIHZvaWQgc3RhcnRVcGRhdGluZyhJUEM6OkNvbm5lY3Rpb24mLCBXZWJQYWdl
UHJveHlJZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIGF1dGhvcml6YXRpb25Ub2tlbik7Ci0gICAg
dm9pZCBzdG9wVXBkYXRpbmcoSVBDOjpDb25uZWN0aW9uJik7Ci0gICAgdm9pZCByZW1vdmVSZXF1
ZXN0ZXIoY29uc3QgSVBDOjpDb25uZWN0aW9uOjpDbGllbnQqKTsKLSAgICB2b2lkIHNldEVuYWJs
ZUhpZ2hBY2N1cmFjeShJUEM6OkNvbm5lY3Rpb24mLCBib29sKTsKKyNpZiBQTEFURk9STShJT1Nf
RkFNSUxZKQorICAgIC8vIENvcmVMb2NhdGlvbkdlb2xvY2F0aW9uUHJvdmlkZXI6OkNsaWVudAor
ICAgIHZvaWQgcG9zaXRpb25DaGFuZ2VkKGNvbnN0IFN0cmluZyYgd2Vic2l0ZUlkZW50aWZpZXIs
IFdlYkNvcmU6Okdlb2xvY2F0aW9uUG9zaXRpb25EYXRhJiYpIGZpbmFsOworICAgIHZvaWQgZXJy
b3JPY2N1cnJlZChjb25zdCBTdHJpbmcmIHdlYnNpdGVJZGVudGlmaWVyLCBjb25zdCBTdHJpbmcm
IGVycm9yTWVzc2FnZSkgZmluYWw7CisgICAgdm9pZCByZXNldEdlb2xvY2F0aW9uKGNvbnN0IFN0
cmluZyYgd2Vic2l0ZUlkZW50aWZpZXIpIGZpbmFsOworI2VuZGlmCiAKLSAgICBIYXNoU2V0PGNv
bnN0IElQQzo6Q29ubmVjdGlvbjo6Q2xpZW50Kj4gbV91cGRhdGVSZXF1ZXN0ZXJzOwotICAgIEhh
c2hTZXQ8Y29uc3QgSVBDOjpDb25uZWN0aW9uOjpDbGllbnQqPiBtX2hpZ2hBY2N1cmFjeVJlcXVl
c3RlcnM7CisgICAgc3RydWN0IFBlckRvbWFpbkRhdGEgeworICAgICAgICBXVEZfTUFLRV9TVFJV
Q1RfRkFTVF9BTExPQ0FURUQ7CisgICAgICAgIEhhc2hTZXQ8SVBDOjpDb25uZWN0aW9uOjpVbmlx
dWVJRD4gd2F0Y2hlcnM7CisgICAgICAgIEhhc2hTZXQ8SVBDOjpDb25uZWN0aW9uOjpVbmlxdWVJ
RD4gd2F0Y2hlcnNOZWVkaW5nSGlnaEFjY3VyYWN5OworICAgICAgICBzdGQ6Om9wdGlvbmFsPFdl
YkNvcmU6Okdlb2xvY2F0aW9uUG9zaXRpb25EYXRhPiBsYXN0UG9zaXRpb247CiAKKyAgICAgICAg
Ly8gRklYTUU6IFVzZSBmb3IgYWxsIENvY29hIHBvcnRzLgorI2lmIFBMQVRGT1JNKElPU19GQU1J
TFkpCisgICAgICAgIHN0ZDo6dW5pcXVlX3B0cjxXZWJDb3JlOjpDb3JlTG9jYXRpb25HZW9sb2Nh
dGlvblByb3ZpZGVyPiBwcm92aWRlcjsKKyNlbmRpZgorICAgIH07CisKKyAgICBib29sIGlzVXBk
YXRpbmcoY29uc3QgUGVyRG9tYWluRGF0YSYpIGNvbnN0OworICAgIGJvb2wgaXNIaWdoQWNjdXJh
Y3lFbmFibGVkKGNvbnN0IFBlckRvbWFpbkRhdGEmKSBjb25zdDsKKyAgICB2b2lkIHByb3ZpZGVy
U3RhcnRVcGRhdGluZyhQZXJEb21haW5EYXRhJiwgY29uc3QgV2ViQ29yZTo6UmVnaXN0cmFibGVE
b21haW4mKTsKKyAgICB2b2lkIHByb3ZpZGVyU3RvcFVwZGF0aW5nKFBlckRvbWFpbkRhdGEmKTsK
KyAgICB2b2lkIHByb3ZpZGVyU2V0RW5hYmxlZEhpZ2hBY2N1cmFjeShQZXJEb21haW5EYXRhJiwg
Ym9vbCBlbmFibGVkKTsKKworICAgIEhhc2hNYXA8V2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4s
IHN0ZDo6dW5pcXVlX3B0cjxQZXJEb21haW5EYXRhPj4gbV9wZXJEb21haW5EYXRhOworI2lmICFQ
TEFURk9STShJT1NfRkFNSUxZKQogICAgIHN0ZDo6dW5pcXVlX3B0cjxBUEk6Okdlb2xvY2F0aW9u
UHJvdmlkZXI+IG1fcHJvdmlkZXI7Ci0gICAgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpHZW9sb2Nh
dGlvblBvc2l0aW9uRGF0YT4gbV9sYXN0UG9zaXRpb247CisjZW5kaWYKIH07CiAKIH0gLy8gbmFt
ZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViR2Vv
bG9jYXRpb25NYW5hZ2VyUHJveHkubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9XZWJHZW9sb2NhdGlvbk1hbmFnZXJQcm94eS5tZXNzYWdlcy5pbgppbmRleCBlNWU5YzI3ZDE0
YTVmYjcyNmZjYzJjODFmZjNlMTY1ZWEzZTg0MGJlLi45MDQxYTkwYzI1MGY4YWRkNjhiYjEzYjNh
YmI1NGJlYjY2Y2IyZDI3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJH
ZW9sb2NhdGlvbk1hbmFnZXJQcm94eS5tZXNzYWdlcy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9XZWJHZW9sb2NhdGlvbk1hbmFnZXJQcm94eS5tZXNzYWdlcy5pbgpAQCAtMjEsNyAr
MjEsNyBAQAogIyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgogCiBtZXNzYWdlcyAtPiBXZWJHZW9sb2NhdGlvbk1hbmFn
ZXJQcm94eSB7Ci0gICAgU3RhcnRVcGRhdGluZyhXZWJLaXQ6OldlYlBhZ2VQcm94eUlkZW50aWZp
ZXIgcGFnZVByb3h5SUQsIFN0cmluZyBhdXRob3JpemF0aW9uVG9rZW4pIFdhbnRzQ29ubmVjdGlv
bgotICAgIFN0b3BVcGRhdGluZygpIFdhbnRzQ29ubmVjdGlvbgotICAgIFNldEVuYWJsZUhpZ2hB
Y2N1cmFjeShib29sIGVuYWJsZWQpIFdhbnRzQ29ubmVjdGlvbgorICAgIFN0YXJ0VXBkYXRpbmco
V2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4gcmVnaXN0cmFibGVEb21haW4sIFdlYktpdDo6V2Vi
UGFnZVByb3h5SWRlbnRpZmllciBwYWdlUHJveHlJRCwgU3RyaW5nIGF1dGhvcml6YXRpb25Ub2tl
biwgYm9vbCBlbmFibGVIaWdoQWNjdXJhY3kpIFdhbnRzQ29ubmVjdGlvbgorICAgIFN0b3BVcGRh
dGluZyhXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiByZWdpc3RyYWJsZURvbWFpbikgV2FudHND
b25uZWN0aW9uCisgICAgU2V0RW5hYmxlSGlnaEFjY3VyYWN5KFdlYkNvcmU6OlJlZ2lzdHJhYmxl
RG9tYWluIHJlZ2lzdHJhYmxlRG9tYWluLCBib29sIGVuYWJsZWQpIFdhbnRzQ29ubmVjdGlvbgog
fQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dLR2VvbG9jYXRpb25Q
cm92aWRlcklPUy5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XS0dlb2xvY2F0aW9u
UHJvdmlkZXJJT1MubW0KaW5kZXggZjVlOWZkN2JjMzQxMjk3YWY3YjI0ZTY3NDE2MzMyY2Q5NmFk
NzM5Yy4uNmYwNjk2ZDM4OTU3MjQ4NzJkNGVkYzlhNGEwNTlkNDIwZGQ4MTFjZCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dLR2VvbG9jYXRpb25Qcm92aWRlcklPUy5t
bQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tHZW9sb2NhdGlvblByb3ZpZGVy
SU9TLm1tCkBAIC01MSw3ICs1MSw2IEBACiAjaW1wb3J0IDx3dGYvVVJMLmg+CiAKIC8vIEZJWE1F
OiBSZW1vdmUgdXNlIG9mIFdlYktpdDEgZnJvbSBXZWJLaXQyCi0jaW1wb3J0IDxXZWJLaXQvV2Vi
R2VvbG9jYXRpb25Db3JlTG9jYXRpb25Qcm92aWRlci5oPgogI2ltcG9ydCA8V2ViS2l0L1dlYkFs
bG93RGVueVBvbGljeUxpc3RlbmVyLmg+CiAKIEFMTE9XX0RFUFJFQ0FURURfREVDTEFSQVRJT05T
X0JFR0lOCkBAIC01OSw5ICs1OCw2IEBAIEFMTE9XX0RFUFJFQ0FURURfREVDTEFSQVRJT05TX0JF
R0lOCiBAaW50ZXJmYWNlIFdLR2VvbG9jYXRpb25Qcm92aWRlcklPUyAoX1dLR2VvbG9jYXRpb25D
b3JlTG9jYXRpb25MaXN0ZW5lcikgPF9XS0dlb2xvY2F0aW9uQ29yZUxvY2F0aW9uTGlzdGVuZXI+
CiBAZW5kCiAKLUBpbnRlcmZhY2UgV0tMZWdhY3lDb3JlTG9jYXRpb25Qcm92aWRlciA6IE5TT2Jq
ZWN0PF9XS0dlb2xvY2F0aW9uQ29yZUxvY2F0aW9uUHJvdmlkZXIsIFdlYkdlb2xvY2F0aW9uQ29y
ZUxvY2F0aW9uVXBkYXRlTGlzdGVuZXI+Ci1AZW5kCi0KIEBpbnRlcmZhY2UgV0tXZWJBbGxvd0Rl
bnlQb2xpY3lMaXN0ZW5lciA6IE5TT2JqZWN0PFdlYkFsbG93RGVueVBvbGljeUxpc3RlbmVyPgog
LSAoaWQpaW5pdFdpdGhDb21wbGV0aW9uSGFuZGxlcjooRnVuY3Rpb248dm9pZChib29sKT4mJilj
b21wbGV0aW9uSGFuZGxlcjsKIC0gKHZvaWQpZGVueU9ubHlUaGlzUmVxdWVzdCBOT19SRVRVUk5f
RFVFX1RPX0FTU0VSVDsKQEAgLTc5LDggKzc1LDcgQEAgc3RydWN0IEdlb2xvY2F0aW9uUmVxdWVz
dERhdGEgewogfTsKIAogQGltcGxlbWVudGF0aW9uIFdLR2VvbG9jYXRpb25Qcm92aWRlcklPUyB7
Ci0gICAgUmVmUHRyPFdlYktpdDo6V2ViR2VvbG9jYXRpb25NYW5hZ2VyUHJveHk+IF9nZW9sb2Nh
dGlvbk1hbmFnZXI7Ci0gICAgUmV0YWluUHRyPGlkIDxfV0tHZW9sb2NhdGlvbkNvcmVMb2NhdGlv
blByb3ZpZGVyPj4gX2NvcmVMb2NhdGlvblByb3ZpZGVyOworICAgIFJldGFpblB0cjxpZCA8X1dL
R2VvbG9jYXRpb25Db3JlTG9jYXRpb25Qcm92aWRlcj4+IF9jbGllbnRBdXRob3JpemF0aW9uUHJv
dmlkZXI7CiAgICAgQk9PTCBfaXNXZWJDb3JlR2VvbG9jYXRpb25BY3RpdmU7CiAgICAgUmVmUHRy
PFdlYktpdDo6V2ViR2VvbG9jYXRpb25Qb3NpdGlvbj4gX2xhc3RBY3RpdmVQb3NpdGlvbjsKICAg
ICBEZXF1ZTxHZW9sb2NhdGlvblJlcXVlc3REYXRhPiBfcmVxdWVzdHNXYWl0aW5nRm9yQ29yZUxv
Y2F0aW9uQXV0aG9yaXphdGlvbjsKQEAgLTg4LDQ4ICs4MywxNiBAQCBAaW1wbGVtZW50YXRpb24g
V0tHZW9sb2NhdGlvblByb3ZpZGVySU9TIHsKIAogI3ByYWdtYSBtYXJrIC0gV0tHZW9sb2NhdGlv
blByb3ZpZGVyIGNhbGxiYWNrcyBpbXBsZW1lbnRhdGlvbi4KIAotc3RhdGljIHZvaWQgc3RhcnRV
cGRhdGluZ0NhbGxiYWNrKFdLR2VvbG9jYXRpb25NYW5hZ2VyUmVmIGdlb2xvY2F0aW9uTWFuYWdl
ciwgY29uc3Qgdm9pZCogY2xpZW50SW5mbykKLXsKLSAgICBXS0dlb2xvY2F0aW9uUHJvdmlkZXJJ
T1MgKmdlb2xvY2F0aW9uUHJvdmlkZXIgPSByZWludGVycHJldF9jYXN0PFdLR2VvbG9jYXRpb25Q
cm92aWRlcklPUyo+KGNvbnN0X2Nhc3Q8dm9pZCo+KGNsaWVudEluZm8pKTsKLSAgICBBU1NFUlQo
W2dlb2xvY2F0aW9uUHJvdmlkZXIgaXNLaW5kT2ZDbGFzczpbV0tHZW9sb2NhdGlvblByb3ZpZGVy
SU9TIGNsYXNzXV0pOwotICAgIFtnZW9sb2NhdGlvblByb3ZpZGVyIF9zdGFydFVwZGF0aW5nXTsK
LX0KLQotc3RhdGljIHZvaWQgc3RvcFVwZGF0aW5nQ2FsbGJhY2soV0tHZW9sb2NhdGlvbk1hbmFn
ZXJSZWYgZ2VvbG9jYXRpb25NYW5hZ2VyLCBjb25zdCB2b2lkKiBjbGllbnRJbmZvKQotewotICAg
IFdLR2VvbG9jYXRpb25Qcm92aWRlcklPUyAqZ2VvbG9jYXRpb25Qcm92aWRlciA9IHJlaW50ZXJw
cmV0X2Nhc3Q8V0tHZW9sb2NhdGlvblByb3ZpZGVySU9TKj4oY29uc3RfY2FzdDx2b2lkKj4oY2xp
ZW50SW5mbykpOwotICAgIEFTU0VSVChbZ2VvbG9jYXRpb25Qcm92aWRlciBpc0tpbmRPZkNsYXNz
OltXS0dlb2xvY2F0aW9uUHJvdmlkZXJJT1MgY2xhc3NdXSk7Ci0gICAgW2dlb2xvY2F0aW9uUHJv
dmlkZXIgX3N0b3BVcGRhdGluZ107Ci19Ci0KLXN0YXRpYyB2b2lkIHNldEVuYWJsZUhpZ2hBY2N1
cmFjeShXS0dlb2xvY2F0aW9uTWFuYWdlclJlZiBnZW9sb2NhdGlvbk1hbmFnZXIsIGJvb2wgZW5h
YmxlLCBjb25zdCB2b2lkKiBjbGllbnRJbmZvKQotewotICAgIFdLR2VvbG9jYXRpb25Qcm92aWRl
cklPUyAqZ2VvbG9jYXRpb25Qcm92aWRlciA9IHJlaW50ZXJwcmV0X2Nhc3Q8V0tHZW9sb2NhdGlv
blByb3ZpZGVySU9TKj4oY29uc3RfY2FzdDx2b2lkKj4oY2xpZW50SW5mbykpOwotICAgIEFTU0VS
VChbZ2VvbG9jYXRpb25Qcm92aWRlciBpc0tpbmRPZkNsYXNzOltXS0dlb2xvY2F0aW9uUHJvdmlk
ZXJJT1MgY2xhc3NdXSk7Ci0gICAgW2dlb2xvY2F0aW9uUHJvdmlkZXIgX3NldEVuYWJsZUhpZ2hB
Y2N1cmFjeTplbmFibGVdOwotfQotCiAtICh2b2lkKV9zdGFydFVwZGF0aW5nCiB7Ci0gICAgX2lz
V2ViQ29yZUdlb2xvY2F0aW9uQWN0aXZlID0gWUVTOwotICAgIFtfY29yZUxvY2F0aW9uUHJvdmlk
ZXIgc3RhcnRdOwotCi0gICAgLy8gSWYgd2UgaGF2ZSB0aGUgbGFzdCBwb3NpdGlvbiwgaXQgaXMg
ZnJvbSB0aGUgaW5pdGlhbGl6YXRpb24gb3Igd2FybSB1cC4gSXQgaXMgdGhlIGxhc3Qga25vd24K
LSAgICAvLyBnb29kIHBvc2l0aW9uIHNvIHdlIGNhbiByZXR1cm4gaXQgZGlyZWN0bHkuCi0gICAg
aWYgKF9sYXN0QWN0aXZlUG9zaXRpb24pCi0gICAgICAgIF9nZW9sb2NhdGlvbk1hbmFnZXItPnBy
b3ZpZGVyRGlkQ2hhbmdlUG9zaXRpb24oX2xhc3RBY3RpdmVQb3NpdGlvbi5nZXQoKSk7CiB9CiAK
IC0gKHZvaWQpX3N0b3BVcGRhdGluZwogewotICAgIF9pc1dlYkNvcmVHZW9sb2NhdGlvbkFjdGl2
ZSA9IE5POwotICAgIFtfY29yZUxvY2F0aW9uUHJvdmlkZXIgc3RvcF07Ci0gICAgX2xhc3RBY3Rp
dmVQb3NpdGlvbiA9IG51bGxwdHI7CiB9CiAKIC0gKHZvaWQpX3NldEVuYWJsZUhpZ2hBY2N1cmFj
eTooQk9PTCllbmFibGVIaWdoQWNjdXJhY3kKIHsKLSAgICBbX2NvcmVMb2NhdGlvblByb3ZpZGVy
IHNldEVuYWJsZUhpZ2hBY2N1cmFjeTplbmFibGVIaWdoQWNjdXJhY3ldOwogfQogCiAjcHJhZ21h
IG1hcmsgLSBQdWJsaWMgQVBJIGltcGxlbWVudGF0aW9uLgpAQCAtMTQ2LDI1ICsxMDksMzMgQEAg
LSAoaWQpaW5pdFdpdGhQcm9jZXNzUG9vbDooV2ViS2l0OjpXZWJQcm9jZXNzUG9vbCYpcHJvY2Vz
c1Bvb2wKICAgICBzZWxmID0gW3N1cGVyIGluaXRdOwogICAgIGlmICghc2VsZikKICAgICAgICAg
cmV0dXJuIG5pbDsKLSAgICBfZ2VvbG9jYXRpb25NYW5hZ2VyID0gcHJvY2Vzc1Bvb2wuc3VwcGxl
bWVudDxXZWJLaXQ6OldlYkdlb2xvY2F0aW9uTWFuYWdlclByb3h5PigpOwotICAgIFdLR2VvbG9j
YXRpb25Qcm92aWRlclYxIHByb3ZpZGVyQ2FsbGJhY2sgPSB7Ci0gICAgICAgIHsgMSwgc2VsZiB9
LAotICAgICAgICBzdGFydFVwZGF0aW5nQ2FsbGJhY2ssCi0gICAgICAgIHN0b3BVcGRhdGluZ0Nh
bGxiYWNrLAotICAgICAgICBzZXRFbmFibGVIaWdoQWNjdXJhY3kKLSAgICB9OwotICAgIFdLR2Vv
bG9jYXRpb25NYW5hZ2VyU2V0UHJvdmlkZXIodG9BUEkoX2dlb2xvY2F0aW9uTWFuYWdlci5nZXQo
KSksICZwcm92aWRlckNhbGxiYWNrLmJhc2UpOwotICAgIF9jb3JlTG9jYXRpb25Qcm92aWRlciA9
IHdyYXBwZXIocHJvY2Vzc1Bvb2wpLl9jb3JlTG9jYXRpb25Qcm92aWRlciA/OiBhZG9wdE5TKHN0
YXRpY19jYXN0PGlkIDxfV0tHZW9sb2NhdGlvbkNvcmVMb2NhdGlvblByb3ZpZGVyPj4oW1tXS0xl
Z2FjeUNvcmVMb2NhdGlvblByb3ZpZGVyIGFsbG9jXSBpbml0XSkpOwotICAgIFtfY29yZUxvY2F0
aW9uUHJvdmlkZXIgc2V0TGlzdGVuZXI6c2VsZl07CisKKyAgICAvLyBGSVhNRTogU29tZSBjbGll
bnRzIHVzZSB0aGlzIFNQSSB0byBzZXQgYSBfY29yZUxvY2F0aW9uUHJvdmlkZXIgdGhhdCBmYWls
cyBhbGwgYXV0aG9yaXphdGlvbnMgYXMgYSB3YXkgdG8gZGlzYWJsZSB0aGUgR2VvbG9jYXRpb24g
QVBJLgorICAgIC8vIFRoZXkgc2hvdWxkIGp1c3QgaW1wbGVtZW50IHJlcXVlc3RHZW9sb2NhdGlv
bkF1dGhvcml6YXRpb25Gb3JVUkwgb24gdGhlIFdLV2ViVmlldyBpbnN0ZWFkLCBzbyB3ZSBjYW4g
ZHJvcCB0aGlzIGxvZ2ljIGVudGlyZWx5LgorICAgIF9jbGllbnRBdXRob3JpemF0aW9uUHJvdmlk
ZXIgPSB3cmFwcGVyKHByb2Nlc3NQb29sKS5fY29yZUxvY2F0aW9uUHJvdmlkZXI7CisgICAgaWYg
KF9jbGllbnRBdXRob3JpemF0aW9uUHJvdmlkZXIpCisgICAgICAgIFtfY2xpZW50QXV0aG9yaXph
dGlvblByb3ZpZGVyIHNldExpc3RlbmVyOnNlbGZdOworCiAgICAgcmV0dXJuIHNlbGY7CiB9CiAK
IC0gKHZvaWQpZGVjaWRlUG9saWN5Rm9yR2VvbG9jYXRpb25SZXF1ZXN0RnJvbU9yaWdpbjooV2Vi
S2l0OjpGcmFtZUluZm9EYXRhJiYpZnJhbWVJbmZvIGNvbXBsZXRpb25IYW5kbGVyOihGdW5jdGlv
bjx2b2lkKGJvb2wpPiYmKWNvbXBsZXRpb25IYW5kbGVyIHZpZXc6KFdLV2ViVmlldyAqKWNvbnRl
bnRWaWV3CiB7Ci0gICAgLy8gU3RlcCAxOiBhc2sgdGhlIHVzZXIgaWYgdGhlIGFwcCBjYW4gdXNl
IEdlb2xvY2F0aW9uLgorICAgIFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluIHJlZ2lzdHJhYmxl
RG9tYWluKGZyYW1lSW5mby5zZWN1cml0eU9yaWdpbik7CiAgICAgR2VvbG9jYXRpb25SZXF1ZXN0
RGF0YSBnZW9sb2NhdGlvblJlcXVlc3REYXRhIHsgW2NvbnRlbnRWaWV3IFVSTF0sIFdURk1vdmUo
ZnJhbWVJbmZvKSwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlciksIGNvbnRlbnRWaWV3IH07CiAg
ICAgX3JlcXVlc3RzV2FpdGluZ0ZvckNvcmVMb2NhdGlvbkF1dGhvcml6YXRpb24uYXBwZW5kKFdU
Rk1vdmUoZ2VvbG9jYXRpb25SZXF1ZXN0RGF0YSkpOwotICAgIFtfY29yZUxvY2F0aW9uUHJvdmlk
ZXIgcmVxdWVzdEdlb2xvY2F0aW9uQXV0aG9yaXphdGlvbl07CisgICAgaWYgKF9jbGllbnRBdXRo
b3JpemF0aW9uUHJvdmlkZXIpIHsKKyAgICAgICAgLy8gU3RlcCAxOiBhc2sgdGhlIHVzZXIgaWYg
dGhlIGFwcCBjYW4gdXNlIEdlb2xvY2F0aW9uLgorICAgICAgICBbX2NsaWVudEF1dGhvcml6YXRp
b25Qcm92aWRlciByZXF1ZXN0R2VvbG9jYXRpb25BdXRob3JpemF0aW9uXTsKKyAgICB9IGVsc2Ug
eworICAgICAgICAvLyBTdGVwIDE6IGFzayBDb3JlTG9jYXRpb24gaWYgdGhlIGFwcCBjYW4gdXNl
IEdlb2xvY2F0aW9uLgorICAgICAgICBXZWJDb3JlOjpDb3JlTG9jYXRpb25HZW9sb2NhdGlvblBy
b3ZpZGVyOjpyZXF1ZXN0QXV0aG9yaXphdGlvbihyZWdpc3RyYWJsZURvbWFpbiwgW3NlbGYsIHN0
cm9uZ1NlbGYgPSByZXRhaW5QdHIoc2VsZildKGJvb2wgYXV0aG9yaXplZCkgeworICAgICAgICAg
ICAgaWYgKGF1dGhvcml6ZWQpCisgICAgICAgICAgICAgICAgW3NlbGYgZ2VvbG9jYXRpb25BdXRo
b3JpemF0aW9uR3JhbnRlZF07CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgW3Nl
bGYgZ2VvbG9jYXRpb25BdXRob3JpemF0aW9uRGVuaWVkXTsKKyAgICAgICAgfSk7CisgICAgfQog
fQogQGVuZAogCkBAIC0xNzQsNyArMTQ1LDcgQEAgQGltcGxlbWVudGF0aW9uIFdLR2VvbG9jYXRp
b25Qcm92aWRlcklPUyAoV2ViR2VvbG9jYXRpb25Db3JlTG9jYXRpb25VcGRhdGVMaXN0ZW4KIAog
LSAodm9pZClnZW9sb2NhdGlvbkF1dGhvcml6YXRpb25HcmFudGVkCiB7Ci0gICAgLy8gU3RlcCAy
OiBhc2sgdGhlIHVzZXIgaWYgdGhpcyBwYXJ0aWN1bGFyIHBhZ2UgY2FuIHVzZSBnZWxvY2F0aW9u
LgorICAgIC8vIFN0ZXAgMjogYXNrIHRoZSB1c2VyIGlmIHRoaXMgcGFydGljdWxhciBwYWdlIGNh
biB1c2UgZ2VvbG9jYXRpb24uCiAgICAgaWYgKF9yZXF1ZXN0c1dhaXRpbmdGb3JDb3JlTG9jYXRp
b25BdXRob3JpemF0aW9uLmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuOwogCkBAIC0yMTAsOTMg
KzE4MSwxNCBAQCAtICh2b2lkKWdlb2xvY2F0aW9uQXV0aG9yaXphdGlvbkRlbmllZAogCiAtICh2
b2lkKXBvc2l0aW9uQ2hhbmdlZDooX1dLR2VvbG9jYXRpb25Qb3NpdGlvbiAqKXBvc2l0aW9uCiB7
Ci0gICAgX2xhc3RBY3RpdmVQb3NpdGlvbiA9IHBvc2l0aW9uLT5fZ2VvbG9jYXRpb25Qb3NpdGlv
bi5nZXQoKTsKLSAgICBfZ2VvbG9jYXRpb25NYW5hZ2VyLT5wcm92aWRlckRpZENoYW5nZVBvc2l0
aW9uKF9sYXN0QWN0aXZlUG9zaXRpb24uZ2V0KCkpOwotfQotCi0tICh2b2lkKWVycm9yT2NjdXJy
ZWQ6KE5TU3RyaW5nICopZXJyb3JNZXNzYWdlCi17Ci0gICAgX2dlb2xvY2F0aW9uTWFuYWdlci0+
cHJvdmlkZXJEaWRGYWlsVG9EZXRlcm1pbmVQb3NpdGlvbihlcnJvck1lc3NhZ2UpOwotfQotCi0t
ICh2b2lkKXJlc2V0R2VvbG9jYXRpb24KLXsKLSAgICBfZ2VvbG9jYXRpb25NYW5hZ2VyLT5yZXNl
dFBlcm1pc3Npb25zKCk7Ci19Ci0KLUBlbmQKLQotIyBwcmFnbWEgbWFyayAtIEltcGxlbWVudGF0
aW9uIG9mIFdLTGVnYWN5Q29yZUxvY2F0aW9uUHJvdmlkZXIKLQotQGltcGxlbWVudGF0aW9uIFdL
TGVnYWN5Q29yZUxvY2F0aW9uUHJvdmlkZXIgewotICAgIGlkIDxfV0tHZW9sb2NhdGlvbkNvcmVM
b2NhdGlvbkxpc3RlbmVyPiBfbGlzdGVuZXI7Ci0gICAgUmV0YWluUHRyPFdlYkdlb2xvY2F0aW9u
Q29yZUxvY2F0aW9uUHJvdmlkZXI+IF9wcm92aWRlcjsKLX0KLQotLy8gPF9XS0dlb2xvY2F0aW9u
Q29yZUxvY2F0aW9uUHJvdmlkZXI+IE1ldGhvZHMKLQotLSAodm9pZClzZXRMaXN0ZW5lcjooaWQ8
X1dLR2VvbG9jYXRpb25Db3JlTG9jYXRpb25MaXN0ZW5lcj4pbGlzdGVuZXIKLXsKLSAgICBBU1NF
UlQobGlzdGVuZXIgJiYgIV9saXN0ZW5lciAmJiAhX3Byb3ZpZGVyKTsKLSAgICBfbGlzdGVuZXIg
PSBsaXN0ZW5lcjsKLSAgICBfcHJvdmlkZXIgPSBhZG9wdE5TKFtbV2ViR2VvbG9jYXRpb25Db3Jl
TG9jYXRpb25Qcm92aWRlciBhbGxvY10gaW5pdFdpdGhMaXN0ZW5lcjpzZWxmXSk7Ci19Ci0KLS0g
KHZvaWQpcmVxdWVzdEdlb2xvY2F0aW9uQXV0aG9yaXphdGlvbgotewotICAgIEFTU0VSVChfcHJv
dmlkZXIpOwotICAgIFtfcHJvdmlkZXIgcmVxdWVzdEdlb2xvY2F0aW9uQXV0aG9yaXphdGlvbl07
Ci19Ci0KLS0gKHZvaWQpc3RhcnQKLXsKLSAgICBBU1NFUlQoX3Byb3ZpZGVyKTsKLSAgICBbX3By
b3ZpZGVyIHN0YXJ0XTsKLX0KLQotLSAodm9pZClzdG9wCi17Ci0gICAgQVNTRVJUKF9wcm92aWRl
cik7Ci0gICAgW19wcm92aWRlciBzdG9wXTsKLX0KLQotLSAodm9pZClzZXRFbmFibGVIaWdoQWNj
dXJhY3k6KEJPT0wpZmxhZwotewotICAgIEFTU0VSVChfcHJvdmlkZXIpOwotICAgIFtfcHJvdmlk
ZXIgc2V0RW5hYmxlSGlnaEFjY3VyYWN5OmZsYWddOwotfQotCi0vLyA8V2ViR2VvbG9jYXRpb25D
b3JlTG9jYXRpb25VcGRhdGVMaXN0ZW5lcj4gTWV0aG9kcwotCi0tICh2b2lkKWdlb2xvY2F0aW9u
QXV0aG9yaXphdGlvbkdyYW50ZWQKLXsKLSAgICBBU1NFUlQoX2xpc3RlbmVyKTsKLSAgICBbX2xp
c3RlbmVyIGdlb2xvY2F0aW9uQXV0aG9yaXphdGlvbkdyYW50ZWRdOwotfQotCi0tICh2b2lkKWdl
b2xvY2F0aW9uQXV0aG9yaXphdGlvbkRlbmllZAotewotICAgIEFTU0VSVChfbGlzdGVuZXIpOwot
ICAgIFtfbGlzdGVuZXIgZ2VvbG9jYXRpb25BdXRob3JpemF0aW9uRGVuaWVkXTsKLX0KLQotLSAo
dm9pZClwb3NpdGlvbkNoYW5nZWQ6KFdlYkNvcmU6Okdlb2xvY2F0aW9uUG9zaXRpb25EYXRhJiYp
Y29yZVBvc2l0aW9uCi17Ci0gICAgQVNTRVJUKF9saXN0ZW5lcik7Ci0gICAgYXV0byBwb3NpdGlv
biA9IFdlYktpdDo6V2ViR2VvbG9jYXRpb25Qb3NpdGlvbjo6Y3JlYXRlKFdURk1vdmUoY29yZVBv
c2l0aW9uKSk7Ci0gICAgW19saXN0ZW5lciBwb3NpdGlvbkNoYW5nZWQ6d3JhcHBlcihwb3NpdGlv
bi5nZXQoKSldOwogfQogCiAtICh2b2lkKWVycm9yT2NjdXJyZWQ6KE5TU3RyaW5nICopZXJyb3JN
ZXNzYWdlCiB7Ci0gICAgQVNTRVJUKF9saXN0ZW5lcik7Ci0gICAgW19saXN0ZW5lciBlcnJvck9j
Y3VycmVkOmVycm9yTWVzc2FnZV07CiB9CiAKIC0gKHZvaWQpcmVzZXRHZW9sb2NhdGlvbgogewot
ICAgIEFTU0VSVChfbGlzdGVuZXIpOwotICAgIFtfbGlzdGVuZXIgcmVzZXRHZW9sb2NhdGlvbl07
CiB9CiAKIEBlbmQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9w
cm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5w
Ynhwcm9qCmluZGV4IGY3YmVlNTQzY2UwZmMwYWMwNmQ3Njg1MWVlMjE3ZGY3YWQ4NDAwYjkuLmM1
M2UwNDEyYmI4YzE0MmFkNTdlOGIzMjlhMGM2ZDY4OTFkNzZiNGMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dl
YktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtNDMxNiw2ICs0MzE2LDcg
QEAKIAkJNDZDRTNCMTAyM0Q4QzgzRDAwMTZBOTZBIC8qIFdlYkJhY2tGb3J3YXJkTGlzdENvdW50
cy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJCYWNrRm9yd2FyZExpc3RD
b3VudHMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDZENDhGQ0MyNzk5RDdERDAw
N0QyMDE0IC8qIFdlYlNoYXJlZFdvcmtlclNlcnZlclRvQ29udGV4dENvbm5lY3Rpb24uY3BwICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAuY3BwOyBwYXRoID0gV2ViU2hhcmVkV29ya2VyU2VydmVyVG9Db250ZXh0Q29ubmVjdGlv
bi5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQ2RDQ4RkNEMjc5OUQ3REUwMDdE
MjAxNCAvKiBXZWJTaGFyZWRXb3JrZXJTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IFdlYlNoYXJlZFdvcmtlclNlcnZlclRvQ29udGV4dENvbm5lY3Rpb24uaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNDZEQTI4NTcyN0I3M0U3NjAwODlEMzM5IC8qIFdl
Ykdlb2xvY2F0aW9uTWFuYWdlclByb3h5Q29jb2EuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gV2Vi
R2VvbG9jYXRpb25NYW5hZ2VyUHJveHlDb2NvYS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTQ2REYwNjM5MUYzOTA1RTUwMDE5ODBCQiAvKiBOZXR3b3JrQ09SU1ByZWZsaWdodENo
ZWNrZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gTmV0d29ya0NP
UlNQcmVmbGlnaHRDaGVja2VyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDZE
RjA2M0ExRjM5MDVFNTAwMTk4MEJCIC8qIE5ldHdvcmtDT1JTUHJlZmxpZ2h0Q2hlY2tlci5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBOZXR3b3JrQ09SU1ByZWZsaWdodENoZWNr
ZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDZFOTc2MEEyNzU3RjZDOTAwQUNE
RDM3IC8qIFdlYkJyb2FkY2FzdENoYW5uZWxSZWdpc3RyeS5tZXNzYWdlcy5pbiAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHRleHQ7IHBhdGggPSBXZWJCcm9hZGNhc3RDaGFubmVsUmVnaXN0cnkubWVzc2FnZXMuaW47IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC03NjAzLDYgKzc2MDQsNyBAQAogCQkJCTUyRDVB
MUFBMUM1NzQ5NEUwMERFMzRBMyAvKiBWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyUHJveHkuaCAqLywK
IAkJCQk1MkQ1QTFBQjFDNTc0OTRFMDBERTM0QTMgLyogVmlkZW9GdWxsc2NyZWVuTWFuYWdlclBy
b3h5Lm1lc3NhZ2VzLmluICovLAogCQkJCTUyRDVBMUFDMUM1NzQ5NEUwMERFMzRBMyAvKiBWaWRl
b0Z1bGxzY3JlZW5NYW5hZ2VyUHJveHkubW0gKi8sCisJCQkJNDZEQTI4NTcyN0I3M0U3NjAwODlE
MzM5IC8qIFdlYkdlb2xvY2F0aW9uTWFuYWdlclByb3h5Q29jb2EuY3BwICovLAogCQkJCUMxOEYz
QTEzMjU2MzMyQTYwMDc5N0U2NiAvKiBXZWJJbnNwZWN0b3JQcmVmZXJlbmNlT2JzZXJ2ZXIuaCAq
LywKIAkJCQlDMThGM0ExNDI1NjMzMzQzMDA3OTdFNjYgLyogV2ViSW5zcGVjdG9yUHJlZmVyZW5j
ZU9ic2VydmVyLm1tICovLAogCQkJCUNERjFCOTE5MjY3MDIxRDYwMDA3RUMxMCAvKiBXZWJLaXRT
d2lmdFNvZnRMaW5rLmggKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
R2VvbG9jYXRpb24vV2ViR2VvbG9jYXRpb25NYW5hZ2VyLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9HZW9sb2NhdGlvbi9XZWJHZW9sb2NhdGlvbk1hbmFnZXIuY3BwCmluZGV4IDVhOWM5
ZjRkMmExY2Q2NmE0YjY3NTliNTkzODdlYTJjZjU1YjJhYTguLmQ1OWZhOWRiYTZkMGQwOTJjYWFl
OWE0YWNlMjMyOWU5YTQ4ZDIwZDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9HZW9sb2NhdGlvbi9XZWJHZW9sb2NhdGlvbk1hbmFnZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9HZW9sb2NhdGlvbi9XZWJHZW9sb2NhdGlvbk1hbmFnZXIuY3BwCkBAIC0z
OSw2ICszOSwxNCBAQAogbmFtZXNwYWNlIFdlYktpdCB7CiB1c2luZyBuYW1lc3BhY2UgV2ViQ29y
ZTsKIAorc3RhdGljIFJlZ2lzdHJhYmxlRG9tYWluIHJlZ2lzdHJhYmxlRG9tYWluRm9yUGFnZShX
ZWJQYWdlJiBwYWdlKQoreworICAgIGF1dG8qIGRvY3VtZW50ID0gcGFnZS5jb3JlUGFnZSgpID8g
cGFnZS5jb3JlUGFnZSgpLT5tYWluRnJhbWUoKS5kb2N1bWVudCgpIDogbnVsbHB0cjsKKyAgICBp
ZiAoIWRvY3VtZW50KQorICAgICAgICByZXR1cm4gUmVnaXN0cmFibGVEb21haW4geyB9OworICAg
IHJldHVybiBSZWdpc3RyYWJsZURvbWFpbiB7IGRvY3VtZW50LT51cmwoKSB9OworfQorCiBjb25z
dCBjaGFyKiBXZWJHZW9sb2NhdGlvbk1hbmFnZXI6OnN1cHBsZW1lbnROYW1lKCkKIHsKICAgICBy
ZXR1cm4gIldlYkdlb2xvY2F0aW9uTWFuYWdlciI7CkBAIC01MCw4OCArNTgsMTI1IEBAIFdlYkdl
b2xvY2F0aW9uTWFuYWdlcjo6V2ViR2VvbG9jYXRpb25NYW5hZ2VyKFdlYlByb2Nlc3MmIHByb2Nl
c3MpCiAgICAgbV9wcm9jZXNzLmFkZE1lc3NhZ2VSZWNlaXZlcihNZXNzYWdlczo6V2ViR2VvbG9j
YXRpb25NYW5hZ2VyOjptZXNzYWdlUmVjZWl2ZXJOYW1lKCksICp0aGlzKTsKIH0KIAotdm9pZCBX
ZWJHZW9sb2NhdGlvbk1hbmFnZXI6OnJlZ2lzdGVyV2ViUGFnZShXZWJQYWdlJiBwYWdlLCBjb25z
dCBTdHJpbmcmIGF1dGhvcml6YXRpb25Ub2tlbikKK1dlYkdlb2xvY2F0aW9uTWFuYWdlcjo6fldl
Ykdlb2xvY2F0aW9uTWFuYWdlcigpID0gZGVmYXVsdDsKKwordm9pZCBXZWJHZW9sb2NhdGlvbk1h
bmFnZXI6OnJlZ2lzdGVyV2ViUGFnZShXZWJQYWdlJiBwYWdlLCBjb25zdCBTdHJpbmcmIGF1dGhv
cml6YXRpb25Ub2tlbiwgYm9vbCBuZWVkc0hpZ2hBY2N1cmFjeSkKIHsKLSAgICBib29sIHdhc1Vw
ZGF0aW5nID0gaXNVcGRhdGluZygpOworICAgIGF1dG8gcmVnaXN0cmFibGVEb21haW4gPSByZWdp
c3RyYWJsZURvbWFpbkZvclBhZ2UocGFnZSk7CisgICAgaWYgKHJlZ2lzdHJhYmxlRG9tYWluLmlz
RW1wdHkoKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgYXV0byYgcGFnZVNldHMgPSBtX3BhZ2VT
ZXRzLmVuc3VyZShyZWdpc3RyYWJsZURvbWFpbiwgW10geworICAgICAgICByZXR1cm4gUGFnZVNl
dHMgeyB9OworICAgIH0pLml0ZXJhdG9yLT52YWx1ZTsKKyAgICBib29sIHdhc1VwZGF0aW5nID0g
IXBhZ2VTZXRzLnBhZ2VTZXQuY29tcHV0ZXNFbXB0eSgpOwogCi0gICAgbV9wYWdlU2V0LmFkZChw
YWdlKTsKKyAgICBwYWdlU2V0cy5wYWdlU2V0LmFkZChwYWdlKTsKKyAgICBpZiAobmVlZHNIaWdo
QWNjdXJhY3kpCisgICAgICAgIHBhZ2VTZXRzLmhpZ2hBY2N1cmFjeVBhZ2VTZXQuYWRkKHBhZ2Up
OworICAgIG1fcGFnZVRvUmVnaXN0cmFibGVEb21haW4uYWRkKCZwYWdlLCByZWdpc3RyYWJsZURv
bWFpbik7CiAKICAgICBpZiAoIXdhc1VwZGF0aW5nKQotICAgICAgICBtX3Byb2Nlc3MucGFyZW50
UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+c2VuZChNZXNzYWdlczo6V2ViR2VvbG9jYXRpb25NYW5hZ2Vy
UHJveHk6OlN0YXJ0VXBkYXRpbmcocGFnZS53ZWJQYWdlUHJveHlJZGVudGlmaWVyKCksIGF1dGhv
cml6YXRpb25Ub2tlbiksIDApOworICAgICAgICBtX3Byb2Nlc3MucGFyZW50UHJvY2Vzc0Nvbm5l
Y3Rpb24oKS0+c2VuZChNZXNzYWdlczo6V2ViR2VvbG9jYXRpb25NYW5hZ2VyUHJveHk6OlN0YXJ0
VXBkYXRpbmcocmVnaXN0cmFibGVEb21haW4sIHBhZ2Uud2ViUGFnZVByb3h5SWRlbnRpZmllcigp
LCBhdXRob3JpemF0aW9uVG9rZW4sIG5lZWRzSGlnaEFjY3VyYWN5KSwgMCk7CiB9CiAKIHZvaWQg
V2ViR2VvbG9jYXRpb25NYW5hZ2VyOjp1bnJlZ2lzdGVyV2ViUGFnZShXZWJQYWdlJiBwYWdlKQog
ewotICAgIGJvb2wgaGlnaEFjY3VyYWN5V2FzRW5hYmxlZCA9IGlzSGlnaEFjY3VyYWN5RW5hYmxl
ZCgpOworICAgIGF1dG8gcmVnaXN0cmFibGVEb21haW4gPSBtX3BhZ2VUb1JlZ2lzdHJhYmxlRG9t
YWluLnRha2UoJnBhZ2UpOworICAgIGlmIChyZWdpc3RyYWJsZURvbWFpbi5pc0VtcHR5KCkpCisg
ICAgICAgIHJldHVybjsKIAotICAgIG1fcGFnZVNldC5yZW1vdmUocGFnZSk7Ci0gICAgbV9oaWdo
QWNjdXJhY3lQYWdlU2V0LnJlbW92ZShwYWdlKTsKKyAgICBhdXRvIGl0ID0gbV9wYWdlU2V0cy5m
aW5kKHJlZ2lzdHJhYmxlRG9tYWluKTsKKyAgICBpZiAoaXQgPT0gbV9wYWdlU2V0cy5lbmQoKSkK
KyAgICAgICAgcmV0dXJuOwogCi0gICAgaWYgKCFpc1VwZGF0aW5nKCkpCi0gICAgICAgIG1fcHJv
Y2Vzcy5wYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpLT5zZW5kKE1lc3NhZ2VzOjpXZWJHZW9sb2Nh
dGlvbk1hbmFnZXJQcm94eTo6U3RvcFVwZGF0aW5nKCksIDApOworICAgIGF1dG8mIHBhZ2VTZXRz
ID0gaXQtPnZhbHVlOworICAgIGJvb2wgaGlnaEFjY3VyYWN5V2FzRW5hYmxlZCA9ICFwYWdlU2V0
cy5oaWdoQWNjdXJhY3lQYWdlU2V0LmNvbXB1dGVzRW1wdHkoKTsKKworICAgIHBhZ2VTZXRzLnBh
Z2VTZXQucmVtb3ZlKHBhZ2UpOworICAgIHBhZ2VTZXRzLmhpZ2hBY2N1cmFjeVBhZ2VTZXQucmVt
b3ZlKHBhZ2UpOworCisgICAgaWYgKHBhZ2VTZXRzLnBhZ2VTZXQuY29tcHV0ZXNFbXB0eSgpKQor
ICAgICAgICBtX3Byb2Nlc3MucGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+c2VuZChNZXNzYWdl
czo6V2ViR2VvbG9jYXRpb25NYW5hZ2VyUHJveHk6OlN0b3BVcGRhdGluZyhyZWdpc3RyYWJsZURv
bWFpbiksIDApOwogICAgIGVsc2UgewotICAgICAgICBib29sIGhpZ2hBY2N1cmFjeVNob3VsZEJl
RW5hYmxlZCA9IGlzSGlnaEFjY3VyYWN5RW5hYmxlZCgpOworICAgICAgICBib29sIGhpZ2hBY2N1
cmFjeVNob3VsZEJlRW5hYmxlZCA9ICFwYWdlU2V0cy5oaWdoQWNjdXJhY3lQYWdlU2V0LmNvbXB1
dGVzRW1wdHkoKTsKICAgICAgICAgaWYgKGhpZ2hBY2N1cmFjeVdhc0VuYWJsZWQgIT0gaGlnaEFj
Y3VyYWN5U2hvdWxkQmVFbmFibGVkKQotICAgICAgICAgICAgbV9wcm9jZXNzLnBhcmVudFByb2Nl
c3NDb25uZWN0aW9uKCktPnNlbmQoTWVzc2FnZXM6OldlYkdlb2xvY2F0aW9uTWFuYWdlclByb3h5
OjpTZXRFbmFibGVIaWdoQWNjdXJhY3koaGlnaEFjY3VyYWN5U2hvdWxkQmVFbmFibGVkKSwgMCk7
CisgICAgICAgICAgICBtX3Byb2Nlc3MucGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+c2VuZChN
ZXNzYWdlczo6V2ViR2VvbG9jYXRpb25NYW5hZ2VyUHJveHk6OlNldEVuYWJsZUhpZ2hBY2N1cmFj
eShyZWdpc3RyYWJsZURvbWFpbiwgaGlnaEFjY3VyYWN5U2hvdWxkQmVFbmFibGVkKSwgMCk7CiAg
ICAgfQorCisgICAgaWYgKHBhZ2VTZXRzLnBhZ2VTZXQuY29tcHV0ZXNFbXB0eSgpICYmIHBhZ2VT
ZXRzLmhpZ2hBY2N1cmFjeVBhZ2VTZXQuY29tcHV0ZXNFbXB0eSgpKQorICAgICAgICBtX3BhZ2VT
ZXRzLnJlbW92ZShpdCk7CiB9CiAKIHZvaWQgV2ViR2VvbG9jYXRpb25NYW5hZ2VyOjpzZXRFbmFi
bGVIaWdoQWNjdXJhY3lGb3JQYWdlKFdlYlBhZ2UmIHBhZ2UsIGJvb2wgZW5hYmxlZCkKIHsKLSAg
ICBib29sIGhpZ2hBY2N1cmFjeVdhc0VuYWJsZWQgPSBpc0hpZ2hBY2N1cmFjeUVuYWJsZWQoKTsK
KyAgICBhdXRvIHJlZ2lzdHJhYmxlRG9tYWluID0gbV9wYWdlVG9SZWdpc3RyYWJsZURvbWFpbi5n
ZXQoJnBhZ2UpOworICAgIGlmIChyZWdpc3RyYWJsZURvbWFpbi5pc0VtcHR5KCkpCisgICAgICAg
IHJldHVybjsKKworICAgIGF1dG8gaXQgPSBtX3BhZ2VTZXRzLmZpbmQocmVnaXN0cmFibGVEb21h
aW4pOworICAgIEFTU0VSVChpdCAhPSBtX3BhZ2VTZXRzLmVuZCgpKTsKKyAgICBpZiAoaXQgPT0g
bV9wYWdlU2V0cy5lbmQoKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgYXV0byYgcGFnZVNldHMg
PSBpdC0+dmFsdWU7CisgICAgYm9vbCBoaWdoQWNjdXJhY3lXYXNFbmFibGVkID0gIXBhZ2VTZXRz
LmhpZ2hBY2N1cmFjeVBhZ2VTZXQuY29tcHV0ZXNFbXB0eSgpOwogCiAgICAgaWYgKGVuYWJsZWQp
Ci0gICAgICAgIG1faGlnaEFjY3VyYWN5UGFnZVNldC5hZGQocGFnZSk7CisgICAgICAgIHBhZ2VT
ZXRzLmhpZ2hBY2N1cmFjeVBhZ2VTZXQuYWRkKHBhZ2UpOwogICAgIGVsc2UKLSAgICAgICAgbV9o
aWdoQWNjdXJhY3lQYWdlU2V0LnJlbW92ZShwYWdlKTsKKyAgICAgICAgcGFnZVNldHMuaGlnaEFj
Y3VyYWN5UGFnZVNldC5yZW1vdmUocGFnZSk7CiAKLSAgICBib29sIGhpZ2hBY2N1cmFjeVNob3Vs
ZEJlRW5hYmxlZCA9IGlzSGlnaEFjY3VyYWN5RW5hYmxlZCgpOworICAgIGJvb2wgaGlnaEFjY3Vy
YWN5U2hvdWxkQmVFbmFibGVkID0gIXBhZ2VTZXRzLmhpZ2hBY2N1cmFjeVBhZ2VTZXQuY29tcHV0
ZXNFbXB0eSgpOwogICAgIGlmIChoaWdoQWNjdXJhY3lXYXNFbmFibGVkICE9IGhpZ2hBY2N1cmFj
eVNob3VsZEJlRW5hYmxlZCkKLSAgICAgICAgbV9wcm9jZXNzLnBhcmVudFByb2Nlc3NDb25uZWN0
aW9uKCktPnNlbmQoTWVzc2FnZXM6OldlYkdlb2xvY2F0aW9uTWFuYWdlclByb3h5OjpTZXRFbmFi
bGVIaWdoQWNjdXJhY3koaGlnaEFjY3VyYWN5U2hvdWxkQmVFbmFibGVkKSwgMCk7CisgICAgICAg
IG1fcHJvY2Vzcy5wYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpLT5zZW5kKE1lc3NhZ2VzOjpXZWJH
ZW9sb2NhdGlvbk1hbmFnZXJQcm94eTo6U2V0RW5hYmxlSGlnaEFjY3VyYWN5KHJlZ2lzdHJhYmxl
RG9tYWluLCBoaWdoQWNjdXJhY3lTaG91bGRCZUVuYWJsZWQpLCAwKTsKIH0KIAotdm9pZCBXZWJH
ZW9sb2NhdGlvbk1hbmFnZXI6OmRpZENoYW5nZVBvc2l0aW9uKGNvbnN0IEdlb2xvY2F0aW9uUG9z
aXRpb25EYXRhJiBwb3NpdGlvbikKK3ZvaWQgV2ViR2VvbG9jYXRpb25NYW5hZ2VyOjpkaWRDaGFu
Z2VQb3NpdGlvbihjb25zdCBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiYgcmVnaXN0cmFibGVE
b21haW4sIGNvbnN0IEdlb2xvY2F0aW9uUG9zaXRpb25EYXRhJiBwb3NpdGlvbikKIHsKICNpZiBF
TkFCTEUoR0VPTE9DQVRJT04pCi0gICAgZm9yIChhdXRvJiBwYWdlIDogY29weVRvVmVjdG9yKG1f
cGFnZVNldCkpIHsKLSAgICAgICAgaWYgKHBhZ2UtPmNvcmVQYWdlKCkpCi0gICAgICAgICAgICBH
ZW9sb2NhdGlvbkNvbnRyb2xsZXI6OmZyb20ocGFnZS0+Y29yZVBhZ2UoKSktPnBvc2l0aW9uQ2hh
bmdlZChwb3NpdGlvbik7CisgICAgaWYgKGF1dG8gaXQgPSBtX3BhZ2VTZXRzLmZpbmQocmVnaXN0
cmFibGVEb21haW4pOyBpdCAhPSBtX3BhZ2VTZXRzLmVuZCgpKSB7CisgICAgICAgIGZvciAoYXV0
byYgcGFnZSA6IGNvcHlUb1ZlY3RvcihpdC0+dmFsdWUucGFnZVNldCkpIHsKKyAgICAgICAgICAg
IGlmIChwYWdlLT5jb3JlUGFnZSgpKQorICAgICAgICAgICAgICAgIEdlb2xvY2F0aW9uQ29udHJv
bGxlcjo6ZnJvbShwYWdlLT5jb3JlUGFnZSgpKS0+cG9zaXRpb25DaGFuZ2VkKHBvc2l0aW9uKTsK
KyAgICAgICAgfQogICAgIH0KICNlbHNlCisgICAgVU5VU0VEX1BBUkFNKHJlZ2lzdHJhYmxlRG9t
YWluKTsKICAgICBVTlVTRURfUEFSQU0ocG9zaXRpb24pOwogI2VuZGlmIC8vIEVOQUJMRShHRU9M
T0NBVElPTikKIH0KIAotdm9pZCBXZWJHZW9sb2NhdGlvbk1hbmFnZXI6OmRpZEZhaWxUb0RldGVy
bWluZVBvc2l0aW9uKGNvbnN0IFN0cmluZyYgZXJyb3JNZXNzYWdlKQordm9pZCBXZWJHZW9sb2Nh
dGlvbk1hbmFnZXI6OmRpZEZhaWxUb0RldGVybWluZVBvc2l0aW9uKGNvbnN0IFdlYkNvcmU6OlJl
Z2lzdHJhYmxlRG9tYWluJiByZWdpc3RyYWJsZURvbWFpbiwgY29uc3QgU3RyaW5nJiBlcnJvck1l
c3NhZ2UpCiB7CiAjaWYgRU5BQkxFKEdFT0xPQ0FUSU9OKQotICAgIC8vIEZJWE1FOiBBZGQgbG9j
YWxpemVkIGVycm9yIHN0cmluZy4KLSAgICBhdXRvIGVycm9yID0gR2VvbG9jYXRpb25FcnJvcjo6
Y3JlYXRlKEdlb2xvY2F0aW9uRXJyb3I6OlBvc2l0aW9uVW5hdmFpbGFibGUsIGVycm9yTWVzc2Fn
ZSk7Ci0KLSAgICBmb3IgKGF1dG8mIHBhZ2UgOiBjb3B5VG9WZWN0b3IobV9wYWdlU2V0KSkgewot
ICAgICAgICBpZiAocGFnZS0+Y29yZVBhZ2UoKSkKLSAgICAgICAgICAgIEdlb2xvY2F0aW9uQ29u
dHJvbGxlcjo6ZnJvbShwYWdlLT5jb3JlUGFnZSgpKS0+ZXJyb3JPY2N1cnJlZChlcnJvci5nZXQo
KSk7CisgICAgaWYgKGF1dG8gaXQgPSBtX3BhZ2VTZXRzLmZpbmQocmVnaXN0cmFibGVEb21haW4p
OyBpdCAhPSBtX3BhZ2VTZXRzLmVuZCgpKSB7CisgICAgICAgIC8vIEZJWE1FOiBBZGQgbG9jYWxp
emVkIGVycm9yIHN0cmluZy4KKyAgICAgICAgYXV0byBlcnJvciA9IEdlb2xvY2F0aW9uRXJyb3I6
OmNyZWF0ZShHZW9sb2NhdGlvbkVycm9yOjpQb3NpdGlvblVuYXZhaWxhYmxlLCBlcnJvck1lc3Nh
Z2UpOworCisgICAgICAgIGZvciAoYXV0byYgcGFnZSA6IGNvcHlUb1ZlY3RvcihpdC0+dmFsdWUu
cGFnZVNldCkpIHsKKyAgICAgICAgICAgIGlmIChwYWdlLT5jb3JlUGFnZSgpKQorICAgICAgICAg
ICAgICAgIEdlb2xvY2F0aW9uQ29udHJvbGxlcjo6ZnJvbShwYWdlLT5jb3JlUGFnZSgpKS0+ZXJy
b3JPY2N1cnJlZChlcnJvci5nZXQoKSk7CisgICAgICAgIH0KICAgICB9CiAjZWxzZQorICAgIFVO
VVNFRF9QQVJBTShyZWdpc3RyYWJsZURvbWFpbik7CiAgICAgVU5VU0VEX1BBUkFNKGVycm9yTWVz
c2FnZSk7CiAjZW5kaWYgLy8gRU5BQkxFKEdFT0xPQ0FUSU9OKQogfQogCiAjaWYgUExBVEZPUk0o
SU9TX0ZBTUlMWSkKLXZvaWQgV2ViR2VvbG9jYXRpb25NYW5hZ2VyOjpyZXNldFBlcm1pc3Npb25z
KCkKK3ZvaWQgV2ViR2VvbG9jYXRpb25NYW5hZ2VyOjpyZXNldFBlcm1pc3Npb25zKGNvbnN0IFdl
YkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluJiByZWdpc3RyYWJsZURvbWFpbikKIHsKLSAgICBtX3By
b2Nlc3MucmVzZXRBbGxHZW9sb2NhdGlvblBlcm1pc3Npb25zKCk7Ci19Ci0jZW5kaWYgLy8gUExB
VEZPUk0oSU9TX0ZBTUlMWSkKKyAgICBhdXRvIGl0ID0gbV9wYWdlU2V0cy5maW5kKHJlZ2lzdHJh
YmxlRG9tYWluKTsKKyAgICBpZiAoaXQgIT0gbV9wYWdlU2V0cy5lbmQoKSkKKyAgICAgICAgcmV0
dXJuOwogCi1ib29sIFdlYkdlb2xvY2F0aW9uTWFuYWdlcjo6aXNVcGRhdGluZygpIGNvbnN0Ci17
Ci0gICAgcmV0dXJuICFtX3BhZ2VTZXQuY29tcHV0ZXNFbXB0eSgpOwotfQotCi1ib29sIFdlYkdl
b2xvY2F0aW9uTWFuYWdlcjo6aXNIaWdoQWNjdXJhY3lFbmFibGVkKCkgY29uc3QKLXsKLSAgICBy
ZXR1cm4gIW1faGlnaEFjY3VyYWN5UGFnZVNldC5jb21wdXRlc0VtcHR5KCk7CisgICAgZm9yIChh
dXRvJiBwYWdlIDogY29weVRvVmVjdG9yKGl0LT52YWx1ZS5wYWdlU2V0KSkgeworICAgICAgICBp
ZiAoYXV0byogbWFpbkZyYW1lID0gcGFnZS0+Y29yZVBhZ2UoKSA/ICZwYWdlLT5jb3JlUGFnZSgp
LT5tYWluRnJhbWUoKSA6IG51bGxwdHIpCisgICAgICAgICAgICBtYWluRnJhbWUtPnJlc2V0QWxs
R2VvbG9jYXRpb25QZXJtaXNzaW9uKCk7CisgICAgfQogfQorI2VuZGlmIC8vIFBMQVRGT1JNKElP
U19GQU1JTFkpCiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL0dlb2xvY2F0aW9uL1dlYkdlb2xvY2F0aW9uTWFuYWdlci5oIGIvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dlb2xvY2F0aW9uL1dlYkdlb2xvY2F0aW9uTWFuYWdlci5o
CmluZGV4IDQ0ODM1OTYzNTg3ODIxOTdjY2JhNTkyOGVmZTYyNTE1MjZjMTg1MTUuLjU5NGIyY2Vi
NjllNjhkZjUyYmUxMTUzYmY1YjI1ODU4ZTJlOWIyN2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9HZW9sb2NhdGlvbi9XZWJHZW9sb2NhdGlvbk1hbmFnZXIuaAorKysgYi9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR2VvbG9jYXRpb24vV2ViR2VvbG9jYXRpb25NYW5hZ2Vy
LmgKQEAgLTI4LDYgKzI4LDcgQEAKICNpbmNsdWRlICJNZXNzYWdlUmVjZWl2ZXIuaCIKICNpbmNs
dWRlICJXZWJHZW9sb2NhdGlvblBvc2l0aW9uLmgiCiAjaW5jbHVkZSAiV2ViUHJvY2Vzc1N1cHBs
ZW1lbnQuaCIKKyNpbmNsdWRlIDxXZWJDb3JlL1JlZ2lzdHJhYmxlRG9tYWluLmg+CiAjaW5jbHVk
ZSA8d3RmL0ZvcndhcmQuaD4KICNpbmNsdWRlIDx3dGYvTm9uY29weWFibGUuaD4KICNpbmNsdWRl
IDx3dGYvV2Vha0hhc2hTZXQuaD4KQEAgLTQ3LDMxICs0OCwzMSBAQCBjbGFzcyBXZWJHZW9sb2Nh
dGlvbk1hbmFnZXIgOiBwdWJsaWMgV2ViUHJvY2Vzc1N1cHBsZW1lbnQsIHB1YmxpYyBJUEM6Ok1l
c3NhZ2VSZQogICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKFdlYkdlb2xvY2F0aW9uTWFuYWdlcik7
CiBwdWJsaWM6CiAgICAgZXhwbGljaXQgV2ViR2VvbG9jYXRpb25NYW5hZ2VyKFdlYlByb2Nlc3Mm
KTsKKyAgICB+V2ViR2VvbG9jYXRpb25NYW5hZ2VyKCk7CiAKICAgICBzdGF0aWMgY29uc3QgY2hh
ciogc3VwcGxlbWVudE5hbWUoKTsKIAotICAgIHZvaWQgcmVnaXN0ZXJXZWJQYWdlKFdlYlBhZ2Um
LCBjb25zdCBTdHJpbmcmIGF1dGhvcml6YXRpb25Ub2tlbik7CisgICAgdm9pZCByZWdpc3Rlcldl
YlBhZ2UoV2ViUGFnZSYsIGNvbnN0IFN0cmluZyYgYXV0aG9yaXphdGlvblRva2VuLCBib29sIG5l
ZWRzSGlnaEFjY3VyYWN5KTsKICAgICB2b2lkIHVucmVnaXN0ZXJXZWJQYWdlKFdlYlBhZ2UmKTsK
ICAgICB2b2lkIHNldEVuYWJsZUhpZ2hBY2N1cmFjeUZvclBhZ2UoV2ViUGFnZSYsIGJvb2wpOwog
Ci0gICAgdm9pZCByZXF1ZXN0UGVybWlzc2lvbihXZWJDb3JlOjpHZW9sb2NhdGlvbiYpOwotCiBw
cml2YXRlOgogICAgIC8vIElQQzo6TWVzc2FnZVJlY2VpdmVyCiAgICAgdm9pZCBkaWRSZWNlaXZl
TWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6OkRlY29kZXImKSBvdmVycmlkZTsKIAotICAg
IGJvb2wgaXNVcGRhdGluZygpIGNvbnN0OwotICAgIGJvb2wgaXNIaWdoQWNjdXJhY3lFbmFibGVk
KCkgY29uc3Q7Ci0KLSAgICB2b2lkIGRpZENoYW5nZVBvc2l0aW9uKGNvbnN0IFdlYkNvcmU6Okdl
b2xvY2F0aW9uUG9zaXRpb25EYXRhJik7Ci0gICAgdm9pZCBkaWRGYWlsVG9EZXRlcm1pbmVQb3Np
dGlvbihjb25zdCBTdHJpbmcmIGVycm9yTWVzc2FnZSk7CisgICAgdm9pZCBkaWRDaGFuZ2VQb3Np
dGlvbihjb25zdCBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiYsIGNvbnN0IFdlYkNvcmU6Okdl
b2xvY2F0aW9uUG9zaXRpb25EYXRhJik7CisgICAgdm9pZCBkaWRGYWlsVG9EZXRlcm1pbmVQb3Np
dGlvbihjb25zdCBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiYsIGNvbnN0IFN0cmluZyYgZXJy
b3JNZXNzYWdlKTsKICNpZiBQTEFURk9STShJT1NfRkFNSUxZKQotICAgIHZvaWQgcmVzZXRQZXJt
aXNzaW9ucygpOworICAgIHZvaWQgcmVzZXRQZXJtaXNzaW9ucyhjb25zdCBXZWJDb3JlOjpSZWdp
c3RyYWJsZURvbWFpbiYpOwogI2VuZGlmIC8vIFBMQVRGT1JNKElPU19GQU1JTFkpCiAKICAgICBX
ZWJQcm9jZXNzJiBtX3Byb2Nlc3M7Ci0gICAgV2Vha0hhc2hTZXQ8V2ViUGFnZT4gbV9wYWdlU2V0
OwotICAgIFdlYWtIYXNoU2V0PFdlYlBhZ2U+IG1faGlnaEFjY3VyYWN5UGFnZVNldDsKKyAgICBz
dHJ1Y3QgUGFnZVNldHMgeworICAgICAgICBXZWFrSGFzaFNldDxXZWJQYWdlPiBwYWdlU2V0Owor
ICAgICAgICBXZWFrSGFzaFNldDxXZWJQYWdlPiBoaWdoQWNjdXJhY3lQYWdlU2V0OworICAgIH07
CisgICAgSGFzaE1hcDxXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiwgUGFnZVNldHM+IG1fcGFn
ZVNldHM7CisgICAgSGFzaE1hcDxXZWJQYWdlKiwgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4+
IG1fcGFnZVRvUmVnaXN0cmFibGVEb21haW47CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HZW9sb2NhdGlvbi9XZWJHZW9s
b2NhdGlvbk1hbmFnZXIubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR2Vv
bG9jYXRpb24vV2ViR2VvbG9jYXRpb25NYW5hZ2VyLm1lc3NhZ2VzLmluCmluZGV4IDc5ZjNiNGNl
NGVmY2FmMzQ4ODU3ZDk5MzMyNTNkODk1NGYwZjFiODcuLjZmY2M2MGQyZTA4ZTI2ZWFiNzNjMWY3
MWNkODg0MmRjNTEwNTJkMTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9H
ZW9sb2NhdGlvbi9XZWJHZW9sb2NhdGlvbk1hbmFnZXIubWVzc2FnZXMuaW4KKysrIGIvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL0dlb2xvY2F0aW9uL1dlYkdlb2xvY2F0aW9uTWFuYWdlci5tZXNz
YWdlcy5pbgpAQCAtMjEsOSArMjEsOSBAQAogIyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogCiBtZXNzYWdlcyAtPiBX
ZWJHZW9sb2NhdGlvbk1hbmFnZXIgTm90UmVmQ291bnRlZCB7Ci0gICAgRGlkQ2hhbmdlUG9zaXRp
b24oV2ViQ29yZTo6R2VvbG9jYXRpb25Qb3NpdGlvbkRhdGEgcG9zaXRpb24pOwotICAgIERpZEZh
aWxUb0RldGVybWluZVBvc2l0aW9uKFN0cmluZyBlcnJvck1lc3NhZ2UpOworICAgIERpZENoYW5n
ZVBvc2l0aW9uKFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluIHJlZ2lzdHJhYmxlRG9tYWluLCBX
ZWJDb3JlOjpHZW9sb2NhdGlvblBvc2l0aW9uRGF0YSBwb3NpdGlvbik7CisgICAgRGlkRmFpbFRv
RGV0ZXJtaW5lUG9zaXRpb24oV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4gcmVnaXN0cmFibGVE
b21haW4sIFN0cmluZyBlcnJvck1lc3NhZ2UpOwogI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCi0g
ICAgUmVzZXRQZXJtaXNzaW9ucygpOworICAgIFJlc2V0UGVybWlzc2lvbnMoV2ViQ29yZTo6UmVn
aXN0cmFibGVEb21haW4gcmVnaXN0cmFibGVEb21haW4pOwogI2VuZGlmCiB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViR2VvbG9jYXRpb25D
bGllbnQuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkdl
b2xvY2F0aW9uQ2xpZW50LmNwcAppbmRleCBlYTAyZjJhYzE2ZjczMWJmNTY0MmY4Njc4ZDg2YTQ5
ODExZDhjMzg2Li5kMThkZjdlZmFmNTZlZmNmYzhkMTY5OWM5MWNkMjZiNjg5YmM4MjZhIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViR2VvbG9j
YXRpb25DbGllbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3Vw
cG9ydC9XZWJHZW9sb2NhdGlvbkNsaWVudC5jcHAKQEAgLTQ4LDkgKzQ4LDkgQEAgdm9pZCBXZWJH
ZW9sb2NhdGlvbkNsaWVudDo6Z2VvbG9jYXRpb25EZXN0cm95ZWQoKQogICAgIGRlbGV0ZSB0aGlz
OwogfQogCi12b2lkIFdlYkdlb2xvY2F0aW9uQ2xpZW50OjpzdGFydFVwZGF0aW5nKGNvbnN0IFN0
cmluZyYgYXV0aG9yaXphdGlvblRva2VuKQordm9pZCBXZWJHZW9sb2NhdGlvbkNsaWVudDo6c3Rh
cnRVcGRhdGluZyhjb25zdCBTdHJpbmcmIGF1dGhvcml6YXRpb25Ub2tlbiwgYm9vbCBuZWVkc0hp
Z2hBY2N1cmFjeSkKIHsKLSAgICBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5zdXBwbGVtZW50PFdl
Ykdlb2xvY2F0aW9uTWFuYWdlcj4oKS0+cmVnaXN0ZXJXZWJQYWdlKG1fcGFnZSwgYXV0aG9yaXph
dGlvblRva2VuKTsKKyAgICBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5zdXBwbGVtZW50PFdlYkdl
b2xvY2F0aW9uTWFuYWdlcj4oKS0+cmVnaXN0ZXJXZWJQYWdlKG1fcGFnZSwgYXV0aG9yaXphdGlv
blRva2VuLCBuZWVkc0hpZ2hBY2N1cmFjeSk7CiB9CiAKIHZvaWQgV2ViR2VvbG9jYXRpb25DbGll
bnQ6OnN0b3BVcGRhdGluZygpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
V2ViQ29yZVN1cHBvcnQvV2ViR2VvbG9jYXRpb25DbGllbnQuaCBiL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJHZW9sb2NhdGlvbkNsaWVudC5oCmluZGV4IGIxNjgx
Njc0ODk2MjI1NDdlYzk0ZTY3OThmYjY5ZGQ4ZmE2ZDAxMWMuLjY1ZWMwZTkzNTQyODNkNWZhNzdh
ZjEwYjRlMTgwYjg3MTJmYWVmMDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9XZWJDb3JlU3VwcG9ydC9XZWJHZW9sb2NhdGlvbkNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJHZW9sb2NhdGlvbkNsaWVudC5oCkBAIC0z
MSw3ICszMSw3IEBAIG5hbWVzcGFjZSBXZWJLaXQgewogCiBjbGFzcyBXZWJQYWdlOwogCi1jbGFz
cyBXZWJHZW9sb2NhdGlvbkNsaWVudCA6IHB1YmxpYyBXZWJDb3JlOjpHZW9sb2NhdGlvbkNsaWVu
dCB7CitjbGFzcyBXZWJHZW9sb2NhdGlvbkNsaWVudCBmaW5hbCA6IHB1YmxpYyBXZWJDb3JlOjpH
ZW9sb2NhdGlvbkNsaWVudCB7CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6
CiAgICAgV2ViR2VvbG9jYXRpb25DbGllbnQoV2ViUGFnZSYgcGFnZSkKQEAgLTQyLDE3ICs0Miwx
NyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB+V2ViR2VvbG9jYXRpb25DbGllbnQoKTsKIAogcHJp
dmF0ZToKLSAgICB2b2lkIGdlb2xvY2F0aW9uRGVzdHJveWVkKCkgb3ZlcnJpZGU7CisgICAgdm9p
ZCBnZW9sb2NhdGlvbkRlc3Ryb3llZCgpIGZpbmFsOwogCi0gICAgdm9pZCBzdGFydFVwZGF0aW5n
KGNvbnN0IFN0cmluZyYgYXV0aG9yaXphdGlvblRva2VuKSBvdmVycmlkZTsKLSAgICB2b2lkIHN0
b3BVcGRhdGluZygpIG92ZXJyaWRlOwotICAgIHZvaWQgcmV2b2tlQXV0aG9yaXphdGlvblRva2Vu
KGNvbnN0IFN0cmluZyYpIG92ZXJyaWRlOwotICAgIHZvaWQgc2V0RW5hYmxlSGlnaEFjY3VyYWN5
KGJvb2wpIG92ZXJyaWRlOworICAgIHZvaWQgc3RhcnRVcGRhdGluZyhjb25zdCBTdHJpbmcmIGF1
dGhvcml6YXRpb25Ub2tlbiwgYm9vbCBuZWVkc0hpZ2hBY2N1cmFjeSkgZmluYWw7CisgICAgdm9p
ZCBzdG9wVXBkYXRpbmcoKSBmaW5hbDsKKyAgICB2b2lkIHJldm9rZUF1dGhvcml6YXRpb25Ub2tl
bihjb25zdCBTdHJpbmcmKSBmaW5hbDsKKyAgICB2b2lkIHNldEVuYWJsZUhpZ2hBY2N1cmFjeShi
b29sKSBmaW5hbDsKIAotICAgIHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6R2VvbG9jYXRpb25Qb3Np
dGlvbkRhdGE+IGxhc3RQb3NpdGlvbigpIG92ZXJyaWRlOworICAgIHN0ZDo6b3B0aW9uYWw8V2Vi
Q29yZTo6R2VvbG9jYXRpb25Qb3NpdGlvbkRhdGE+IGxhc3RQb3NpdGlvbigpIGZpbmFsOwogCi0g
ICAgdm9pZCByZXF1ZXN0UGVybWlzc2lvbihXZWJDb3JlOjpHZW9sb2NhdGlvbiYpIG92ZXJyaWRl
OwotICAgIHZvaWQgY2FuY2VsUGVybWlzc2lvblJlcXVlc3QoV2ViQ29yZTo6R2VvbG9jYXRpb24m
KSBvdmVycmlkZTsKKyAgICB2b2lkIHJlcXVlc3RQZXJtaXNzaW9uKFdlYkNvcmU6Okdlb2xvY2F0
aW9uJikgZmluYWw7CisgICAgdm9pZCBjYW5jZWxQZXJtaXNzaW9uUmVxdWVzdChXZWJDb3JlOjpH
ZW9sb2NhdGlvbiYpIGZpbmFsOwogCiAgICAgV2ViUGFnZSYgbV9wYWdlOwogfTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmNwcCBiL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmNwcAppbmRleCBkZDQ1YjQ1ODhiZjlkZDEyNGUxOGZh
YTk1YTMyNmVkMzE5MzFhNDU3Li43OTk2MTNkMzc3NDIzNjNiZmJkY2Q5NTI5Nzk5NjIyMDZmMDIy
OGE4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5jcHAK
KysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3BwCkBAIC0xNTI3LDE2
ICsxNTI3LDYgQEAgdm9pZCBXZWJQcm9jZXNzOjpwYWdlQWN0aXZpdHlTdGF0ZURpZENoYW5nZShQ
YWdlSWRlbnRpZmllciwgT3B0aW9uU2V0PFdlYkNvcmU6OkEKICAgICB9CiB9CiAKLSNpZiBQTEFU
Rk9STShJT1NfRkFNSUxZKQotdm9pZCBXZWJQcm9jZXNzOjpyZXNldEFsbEdlb2xvY2F0aW9uUGVy
bWlzc2lvbnMoKQotewotICAgIGZvciAoYXV0byYgcGFnZSA6IG1fcGFnZU1hcC52YWx1ZXMoKSkg
ewotICAgICAgICBpZiAoRnJhbWUqIG1haW5GcmFtZSA9IHBhZ2UtPm1haW5GcmFtZSgpKQotICAg
ICAgICAgICAgbWFpbkZyYW1lLT5yZXNldEFsbEdlb2xvY2F0aW9uUGVybWlzc2lvbigpOwotICAg
IH0KLX0KLSNlbmRpZgotCiB2b2lkIFdlYlByb2Nlc3M6OnByZXBhcmVUb1N1c3BlbmQoYm9vbCBp
c1N1c3BlbnNpb25JbW1pbmVudCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmIGNvbXBsZXRp
b25IYW5kbGVyKQogewogICAgIFdFQlBST0NFU1NfUkVMRUFTRV9MT0coUHJvY2Vzc1N1c3BlbnNp
b24sICJwcmVwYXJlVG9TdXNwZW5kOiBpc1N1c3BlbnNpb25JbW1pbmVudD0lZCIsIGlzU3VzcGVu
c2lvbkltbWluZW50KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQ
cm9jZXNzLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5oCmluZGV4IGM1
ZGQyMjVkYzFiNzFkYTljZGQ0ZWVkYmEwYTA3ZTc2MTc4MTU3NWUuLjU5NWFmMGI5NzQxMjkwZGE2
YzczNGEwODg2YjgyNGQyM2IxZWU1N2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9XZWJQcm9jZXNzLmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlByb2Nl
c3MuaApAQCAtMzEwLDEwICszMTAsNiBAQCBwdWJsaWM6CiAKICAgICB2b2lkIGlzSklURW5hYmxl
ZChDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmKTsKIAotI2lmIFBMQVRGT1JNKElPU19G
QU1JTFkpCi0gICAgdm9pZCByZXNldEFsbEdlb2xvY2F0aW9uUGVybWlzc2lvbnMoKTsKLSNlbmRp
ZgotCiAjaWYgUExBVEZPUk0oV0FZTEFORCkKICAgICBXYXlsYW5kQ29tcG9zaXRvckRpc3BsYXkq
IHdheWxhbmRDb21wb3NpdG9yRGlzcGxheSgpIGNvbnN0IHsgcmV0dXJuIG1fd2F5bGFuZENvbXBv
c2l0b3JEaXNwbGF5LmdldCgpOyB9CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRM
ZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkdlb2xvY2F0aW9uQ2xpZW50LmggYi9Tb3VyY2Uv
V2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJHZW9sb2NhdGlvbkNsaWVudC5oCmlu
ZGV4IDc3YzI4MjhkODU5NTM2MzViNjRjNGM4OTk5OTBhMGE2NDgxNzFiNmMuLmIwN2M3OTAzZDI5
MmE5MzM5MWU1YzQwYWVkZDY1ZGVkYmFmOGM1ZjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRM
ZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkdlb2xvY2F0aW9uQ2xpZW50LmgKKysrIGIvU291
cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViR2VvbG9jYXRpb25DbGllbnQu
aApAQCAtMzksNyArMzksNyBAQCBwdWJsaWM6CiAgICAgV2ViVmlldyAqd2ViVmlldygpIHsgcmV0
dXJuIG1fd2ViVmlldzsgfQogCiAgICAgdm9pZCBnZW9sb2NhdGlvbkRlc3Ryb3llZCgpIG92ZXJy
aWRlOwotICAgIHZvaWQgc3RhcnRVcGRhdGluZyhjb25zdCBTdHJpbmcmIGF1dGhvcml6YXRpb25U
b2tlbikgb3ZlcnJpZGU7CisgICAgdm9pZCBzdGFydFVwZGF0aW5nKGNvbnN0IFN0cmluZyYgYXV0
aG9yaXphdGlvblRva2VuLCBib29sIGVuYWJsZUhpZ2hBY2N1cmFjeSkgb3ZlcnJpZGU7CiAgICAg
dm9pZCBzdG9wVXBkYXRpbmcoKSBvdmVycmlkZTsKICNpZiBQTEFURk9STShJT1NfRkFNSUxZKQog
ICAgIC8vIEZJWE1FOiB1bmlmeSB0aGlzIHdpdGggTWFjIG9uIE9wZW5Tb3VyY2UuCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJHZW9sb2NhdGlv
bkNsaWVudC5tbSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkdl
b2xvY2F0aW9uQ2xpZW50Lm1tCmluZGV4IGU3ODhhNTdkZDZmODA3ZTdiMjVjNzQyYmE4MDE5MzU3
YTI3MzRkMzguLmE4Yjg1MjFlMmRhNDcxOGRjMTRiNDM3MGIxYTViNGI4ZDYzMjg1ODkgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkdlb2xvY2F0
aW9uQ2xpZW50Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0
L1dlYkdlb2xvY2F0aW9uQ2xpZW50Lm1tCkBAIC04Myw5ICs4MywxNiBAQCB2b2lkIFdlYkdlb2xv
Y2F0aW9uQ2xpZW50OjpnZW9sb2NhdGlvbkRlc3Ryb3llZCgpCiAgICAgZGVsZXRlIHRoaXM7CiB9
CiAKLXZvaWQgV2ViR2VvbG9jYXRpb25DbGllbnQ6OnN0YXJ0VXBkYXRpbmcoY29uc3QgU3RyaW5n
JiBhdXRob3JpemF0aW9uVG9rZW4pCit2b2lkIFdlYkdlb2xvY2F0aW9uQ2xpZW50OjpzdGFydFVw
ZGF0aW5nKGNvbnN0IFN0cmluZyYgYXV0aG9yaXphdGlvblRva2VuLCBib29sIGVuYWJsZUhpZ2hB
Y2N1cmFjeSkKIHsKICAgICBVTlVTRURfUEFSQU0oYXV0aG9yaXphdGlvblRva2VuKTsKKyNpZiBQ
TEFURk9STShJT1NfRkFNSUxZKQorICAgIGlmIChlbmFibGVIaWdoQWNjdXJhY3kpCisgICAgICAg
IHNldEVuYWJsZUhpZ2hBY2N1cmFjeSh0cnVlKTsKKyNlbHNlCisgICAgVU5VU0VEX1BBUkFNKGVu
YWJsZUhpZ2hBY2N1cmFjeSk7CisjZW5kaWYKKwogICAgIFtbbV93ZWJWaWV3IF9nZW9sb2NhdGlv
blByb3ZpZGVyXSByZWdpc3RlcldlYlZpZXc6bV93ZWJWaWV3XTsKIH0KIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViQ29yZVN1cHBvcnQvV2ViR2VvbG9jYXRpb25DbGll
bnQuY3BwIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViQ29yZVN1cHBvcnQvV2ViR2VvbG9j
YXRpb25DbGllbnQuY3BwCmluZGV4IGUxZmNhMjc3MjQ5NjE1NGE0ZTA3MGU0ZGZkYTdlNzdlOTcz
NTgyYzEuLmFjNTQ1MTRjNjQyZWEwZTVmOGFmMzM2OWUxYmJiYWUwYzM5MDcxYjcgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkdlb2xvY2F0aW9u
Q2xpZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJDb3JlU3VwcG9ydC9X
ZWJHZW9sb2NhdGlvbkNsaWVudC5jcHAKQEAgLTQ4LDkgKzQ4LDEwIEBAIHZvaWQgV2ViR2VvbG9j
YXRpb25DbGllbnQ6Omdlb2xvY2F0aW9uRGVzdHJveWVkKCkKICAgICBkZWxldGUgdGhpczsKIH0K
IAotdm9pZCBXZWJHZW9sb2NhdGlvbkNsaWVudDo6c3RhcnRVcGRhdGluZyhjb25zdCBTdHJpbmcm
IGF1dGhvcml6YXRpb25Ub2tlbikKK3ZvaWQgV2ViR2VvbG9jYXRpb25DbGllbnQ6OnN0YXJ0VXBk
YXRpbmcoY29uc3QgU3RyaW5nJiBhdXRob3JpemF0aW9uVG9rZW4sIGJvb2wgZW5hYmxlSGlnaEFj
Y3VyYWN5KQogewogICAgIFVOVVNFRF9QQVJBTShhdXRob3JpemF0aW9uVG9rZW4pOworICAgIFVO
VVNFRF9QQVJBTShlbmFibGVIaWdoQWNjdXJhY3kpOwogICAgIENPTVB0cjxJV2ViR2VvbG9jYXRp
b25Qcm92aWRlcj4gcHJvdmlkZXI7CiAgICAgaWYgKEZBSUxFRChtX3dlYlZpZXctPmdlb2xvY2F0
aW9uUHJvdmlkZXIoJnByb3ZpZGVyKSkpCiAgICAgICAgIHJldHVybjsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkdlb2xvY2F0aW9uQ2xpZW50
LmggYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJHZW9sb2NhdGlv
bkNsaWVudC5oCmluZGV4IDE5NTc0MTdiNTVkN2U1ZDJmOWI3MWU1YzlkOWMzMDNkZmVmNGUxODYu
LjViOGU5NDQ0ZjIxZmVkNDNlZGYyNTkxYTJiYTE1ZGEzYmQ0NGY0NGEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkdlb2xvY2F0aW9uQ2xpZW50
LmgKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViQ29yZVN1cHBvcnQvV2ViR2VvbG9j
YXRpb25DbGllbnQuaApAQCAtNDEsNyArNDEsNyBAQCBwdWJsaWM6CiAgICAgV2ViR2VvbG9jYXRp
b25DbGllbnQoV2ViVmlldyopOwogCiAgICAgdm9pZCBnZW9sb2NhdGlvbkRlc3Ryb3llZCgpIGZp
bmFsOwotICAgIHZvaWQgc3RhcnRVcGRhdGluZyhjb25zdCBTdHJpbmcmIGF1dGhvcml6YXRpb25U
b2tlbikgZmluYWw7CisgICAgdm9pZCBzdGFydFVwZGF0aW5nKGNvbnN0IFN0cmluZyYgYXV0aG9y
aXphdGlvblRva2VuLCBib29sIGVuYWJsZUhpZ2hBY2N1cmFjeSkgZmluYWw7CiAgICAgdm9pZCBz
dG9wVXBkYXRpbmcoKSBmaW5hbDsKICAgICB2b2lkIHNldEVuYWJsZUhpZ2hBY2N1cmFjeShib29s
KSBmaW5hbCB7IH0KICAgICBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6Okdlb2xvY2F0aW9uUG9zaXRp
b25EYXRhPiBsYXN0UG9zaXRpb24oKSBmaW5hbDsK
</data>
<flag name="commit-queue"
          id="478699"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>451838</attachid>
            <date>2022-02-13 12:33:16 -0800</date>
            <delta_ts>2022-02-13 13:28:21 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-236566-20220213123315.patch</filename>
            <type>text/plain</type>
            <size>102409</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg5Njk4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IDVjOGFhZWYzNzk5ZjJmYTJmNjY5YzFm
YWZmNTU3YTc4ZmI1YzYyMDEuLjUyZDQ3N2Q5OWEzYzNkZjIxZjhhNzBlNzU3MzkzZGVkNDc2NGMy
MTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMTUgQEAKKzIwMjItMDItMTMgIENocmlzIER1bWV6ICA8Y2R1bWV6
QGFwcGxlLmNvbT4KKworICAgICAgICBEbyBwcmVsaW1pbmFyeSB3b3JrIHRvIHBhc3MgZG9tYWlu
IG5hbWVzIHRvIENvcmVMb2NhdGlvbgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MjM2NTY2CisgICAgICAgIDxyZGFyOi8vODg3NjE0MTM+CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkIGJ1aWxkIHRpbWUg
ZmxhZyBmb3IgcGFzc2luZyB3ZWJzaXRlIGlkZW50aWZpZXJzIHRvIENvcmVMb2NhdGlvbi4KKwor
ICAgICAgICAqIHd0Zi9QbGF0Zm9ybUhhdmUuaDoKKwogMjAyMi0wMi0xMiAgSmVyIE5vYmxlICA8
amVyLm5vYmxlQGFwcGxlLmNvbT4KIAogICAgICAgICBBZGQgc2V0dGluZ3MgdG8gcmVzdHJpY3Qg
bWVkaWEgY29udGFpbmVycyBhbmQgY29kZWNzIHdoZW4gaW4gQ2FwdGl2ZSBQb3J0YWwgbW9kZQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkNvcmUvQ2hh
bmdlTG9nCmluZGV4IDcxMWMxMjBjYjExYTNmMzZhNTJjZDVkNGU1ZTY1ZmI5NGZmZmQ0NDIuLjg0
ZDk3MzIyNWJmMzU3MTgzYzcyNmVjM2Y5ZDljYTkxN2I5ZmY5ZWEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw1NCBAQAorMjAyMi0wMi0xMyAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgor
CisgICAgICAgIERvIHByZWxpbWluYXJ5IHdvcmsgdG8gcGFzcyBkb21haW4gbmFtZXMgdG8gQ29y
ZUxvY2F0aW9uCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0yMzY1NjYKKyAgICAgICAgPHJkYXI6Ly84ODc2MTQxMz4KKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBEbyBwcmVsaW1pbmFyeSB3b3JrIHRvIHBhc3Mg
ZG9tYWluIG5hbWVzIHRvIENvcmVMb2NhdGlvbiB3aGVuIHVzaW5nIHRoZSBHZW9sb2NhdGlvbiBB
UEkuCisgICAgICAgIFRoaXMgcGlwZXMgdGhlIGRvbWFpbiBuYW1lcyBhbGwgdGhlIHdheSBmcm9t
IHRoZSBHZW9sb2NhdGlvbiBBUEkgdG8gdGhlIENvcmVMb2NhdGlvbiBjYWxscworICAgICAgICBi
dXQgZG9lc24ndCB5ZXQgcGFzcyB0aGUgZG9tYWluIHRvIENvcmVMb2NhdGlvbiBkdWUgdG8gPHJk
YXI6Ly84ODgzNDMwMT4uIEkgd2lsbCBmb2xsb3ctdXAKKyAgICAgICAgb25jZSA8cmRhcjovLzg4
ODM0MzAxPiBpcyBmaXhlZC4KKworICAgICAgICAqIE1vZHVsZXMvZ2VvbG9jYXRpb24vR2VvbG9j
YXRpb25DbGllbnQuaDoKKyAgICAgICAgKiBNb2R1bGVzL2dlb2xvY2F0aW9uL0dlb2xvY2F0aW9u
Q29udHJvbGxlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpHZW9sb2NhdGlvbkNvbnRyb2xsZXI6
OmRpZE5hdmlnYXRlUGFnZSk6CisgICAgICAgIChXZWJDb3JlOjpHZW9sb2NhdGlvbkNvbnRyb2xs
ZXI6OmFkZE9ic2VydmVyKToKKyAgICAgICAgKFdlYkNvcmU6Okdlb2xvY2F0aW9uQ29udHJvbGxl
cjo6cmVtb3ZlT2JzZXJ2ZXIpOgorICAgICAgICAoV2ViQ29yZTo6R2VvbG9jYXRpb25Db250cm9s
bGVyOjphY3Rpdml0eVN0YXRlRGlkQ2hhbmdlKToKKyAgICAgICAgKFdlYkNvcmU6Okdlb2xvY2F0
aW9uQ29udHJvbGxlcjo6c3RhcnRVcGRhdGluZ0lmTmVjZXNzYXJ5KToKKyAgICAgICAgKFdlYkNv
cmU6Okdlb2xvY2F0aW9uQ29udHJvbGxlcjo6c3RvcFVwZGF0aW5nSWZOZWNlc3NhcnkpOgorICAg
ICAgICAqIE1vZHVsZXMvZ2VvbG9jYXRpb24vR2VvbG9jYXRpb25Db250cm9sbGVyLmg6CisgICAg
ICAgIChXZWJDb3JlOjpHZW9sb2NhdGlvbkNvbnRyb2xsZXI6Om5lZWRzSGlnaEFjY3VyYWN5IGNv
bnN0KToKKyAgICAgICAgKiBNb2R1bGVzL2dlb2xvY2F0aW9uL0dlb2xvY2F0aW9uUG9zaXRpb25E
YXRhLmg6CisgICAgICAgICogTW9kdWxlcy9nZW9sb2NhdGlvbi9pb3MvR2VvbG9jYXRpb25Qb3Np
dGlvbkRhdGFJT1MubW06CisgICAgICAgICogU291cmNlc0NvY29hLnR4dDoKKyAgICAgICAgKiBX
ZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogcGFnZS9QYWdlLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OlBhZ2U6OmRpZENvbW1pdExvYWQpOgorICAgICAgICAqIHBs
YXRmb3JtL2NvY29hL0NvcmVMb2NhdGlvbkdlb2xvY2F0aW9uUHJvdmlkZXIuaDogQ29waWVkIGZy
b20gU291cmNlL1dlYkNvcmUvTW9kdWxlcy9nZW9sb2NhdGlvbi9HZW9sb2NhdGlvbkNsaWVudC5o
LgorICAgICAgICAqIHBsYXRmb3JtL2NvY29hL0NvcmVMb2NhdGlvbkdlb2xvY2F0aW9uUHJvdmlk
ZXIubW06IEFkZGVkLgorICAgICAgICAoaXNBdXRob3JpemF0aW9uR3JhbnRlZCk6CisgICAgICAg
ICgtW1dlYkNMTG9jYXRpb25NYW5hZ2VyIGluaXRXaXRoV2Vic2l0ZUlkZW50aWZpZXI6Y2xpZW50
Ol0pOgorICAgICAgICAoLVtXZWJDTExvY2F0aW9uTWFuYWdlciBkZWFsbG9jXSk6CisgICAgICAg
ICgtW1dlYkNMTG9jYXRpb25NYW5hZ2VyIHN0YXJ0XSk6CisgICAgICAgICgtW1dlYkNMTG9jYXRp
b25NYW5hZ2VyIHN0b3BdKToKKyAgICAgICAgKC1bV2ViQ0xMb2NhdGlvbk1hbmFnZXIgc2V0RW5h
YmxlSGlnaEFjY3VyYWN5Ol0pOgorICAgICAgICAoLVtXZWJDTExvY2F0aW9uTWFuYWdlciByZXF1
ZXN0R2VvbG9jYXRpb25BdXRob3JpemF0aW9uXSk6CisgICAgICAgICgtW1dlYkNMTG9jYXRpb25N
YW5hZ2VyIGxvY2F0aW9uTWFuYWdlckRpZENoYW5nZUF1dGhvcml6YXRpb246XSk6CisgICAgICAg
ICgtW1dlYkNMTG9jYXRpb25NYW5hZ2VyIGxvY2F0aW9uTWFuYWdlcjpkaWRVcGRhdGVMb2NhdGlv
bnM6XSk6CisgICAgICAgICgtW1dlYkNMTG9jYXRpb25NYW5hZ2VyIGxvY2F0aW9uTWFuYWdlcjpk
aWRGYWlsV2l0aEVycm9yOl0pOgorICAgICAgICAoV2ViQ29yZTo6Q29yZUxvY2F0aW9uR2VvbG9j
YXRpb25Qcm92aWRlcjo6Q29yZUxvY2F0aW9uR2VvbG9jYXRpb25Qcm92aWRlcik6CisgICAgICAg
IChXZWJDb3JlOjpDb3JlTG9jYXRpb25HZW9sb2NhdGlvblByb3ZpZGVyOjp+Q29yZUxvY2F0aW9u
R2VvbG9jYXRpb25Qcm92aWRlcik6CisgICAgICAgIChXZWJDb3JlOjpDb3JlTG9jYXRpb25HZW9s
b2NhdGlvblByb3ZpZGVyOjpzdGFydCk6CisgICAgICAgIChXZWJDb3JlOjpDb3JlTG9jYXRpb25H
ZW9sb2NhdGlvblByb3ZpZGVyOjpzdG9wKToKKyAgICAgICAgKFdlYkNvcmU6OkNvcmVMb2NhdGlv
bkdlb2xvY2F0aW9uUHJvdmlkZXI6OnNldEVuYWJsZUhpZ2hBY2N1cmFjeSk6CisgICAgICAgIChX
ZWJDb3JlOjpDb3JlTG9jYXRpb25HZW9sb2NhdGlvblByb3ZpZGVyOjpyZXF1ZXN0QXV0aG9yaXph
dGlvbik6CisgICAgICAgICogcGxhdGZvcm0vbW9jay9HZW9sb2NhdGlvbkNsaWVudE1vY2suY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6R2VvbG9jYXRpb25DbGllbnRNb2NrOjpzdGFydFVwZGF0aW5n
KToKKyAgICAgICAgKiBwbGF0Zm9ybS9tb2NrL0dlb2xvY2F0aW9uQ2xpZW50TW9jay5oOgorCiAy
MDIyLTAyLTEyICBQYXRyaWNrIEFuZ2xlICA8cGFuZ2xlQGFwcGxlLmNvbT4KIAogICAgICAgICBX
ZWIgSW5zcGVjdG9yOiBbRmxleGJveF0gU2hvdyBpdGVtIGJvdW5kcywgZ2FwcywgYW5kIGZyZWUg
c3BhY2UgaW4gZmxleCBvdmVybGF5cwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9DaGFuZ2VM
b2cgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwppbmRleCA4MWMxMWI3ODVlYTg2MTJlYjI3NmQz
ODBmZGNjOTI1NmFlOTMxN2ZkLi42MWVjNzA0MDIwYTViZWI5Njc5MDM3Njk4OTBiYTk2MzI0NTAy
MWRmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2Vi
S2l0L0NoYW5nZUxvZwpAQCAtMSwzICsxLDk0IEBACisyMDIyLTAyLTEzICBDaHJpcyBEdW1leiAg
PGNkdW1lekBhcHBsZS5jb20+CisKKyAgICAgICAgRG8gcHJlbGltaW5hcnkgd29yayB0byBwYXNz
IGRvbWFpbiBuYW1lcyB0byBDb3JlTG9jYXRpb24KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTIzNjU2NgorICAgICAgICA8cmRhcjovLzg4NzYxNDEzPgor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIERvIHByZWxp
bWluYXJ5IHdvcmsgdG8gcGFzcyBkb21haW4gbmFtZXMgdG8gQ29yZUxvY2F0aW9uIHdoZW4gdXNp
bmcgdGhlIEdlb2xvY2F0aW9uIEFQSS4KKyAgICAgICAgVGhpcyBwaXBlcyB0aGUgZG9tYWluIG5h
bWVzIGFsbCB0aGUgd2F5IGZyb20gdGhlIEdlb2xvY2F0aW9uIEFQSSB0byB0aGUgQ29yZUxvY2F0
aW9uIGNhbGxzCisgICAgICAgIGJ1dCBkb2Vzbid0IHlldCBwYXNzIHRoZSBkb21haW4gdG8gQ29y
ZUxvY2F0aW9uIGR1ZSB0byA8cmRhcjovLzg4ODM0MzAxPi4gSSB3aWxsIGZvbGxvdy11cAorICAg
ICAgICBvbmNlIDxyZGFyOi8vODg4MzQzMDE+IGlzIGZpeGVkLgorCisgICAgICAgICogU291cmNl
c0NvY29hLnR4dDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0MvV0tHZW9sb2NhdGlvbk1hbmFn
ZXIuY3BwOgorICAgICAgICAoV0tHZW9sb2NhdGlvbk1hbmFnZXJTZXRQcm92aWRlcik6CisgICAg
ICAgICogVUlQcm9jZXNzL0NvY29hL1dlYkdlb2xvY2F0aW9uTWFuYWdlclByb3h5Q29jb2EuY3Bw
OiBBZGRlZC4KKyAgICAgICAgKFdlYktpdDo6V2ViR2VvbG9jYXRpb25NYW5hZ2VyUHJveHk6OnBv
c2l0aW9uQ2hhbmdlZCk6CisgICAgICAgIChXZWJLaXQ6OldlYkdlb2xvY2F0aW9uTWFuYWdlclBy
b3h5OjplcnJvck9jY3VycmVkKToKKyAgICAgICAgKFdlYktpdDo6V2ViR2VvbG9jYXRpb25NYW5h
Z2VyUHJveHk6OnJlc2V0R2VvbG9jYXRpb24pOgorICAgICAgICAoV2ViS2l0OjpXZWJHZW9sb2Nh
dGlvbk1hbmFnZXJQcm94eTo6aXNVcGRhdGluZyBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6Oldl
Ykdlb2xvY2F0aW9uTWFuYWdlclByb3h5Ojppc0hpZ2hBY2N1cmFjeUVuYWJsZWQgY29uc3QpOgor
ICAgICAgICAoV2ViS2l0OjpXZWJHZW9sb2NhdGlvbk1hbmFnZXJQcm94eTo6cHJvdmlkZXJTdGFy
dFVwZGF0aW5nKToKKyAgICAgICAgKFdlYktpdDo6V2ViR2VvbG9jYXRpb25NYW5hZ2VyUHJveHk6
OnByb3ZpZGVyU3RvcFVwZGF0aW5nKToKKyAgICAgICAgKFdlYktpdDo6V2ViR2VvbG9jYXRpb25N
YW5hZ2VyUHJveHk6OnByb3ZpZGVyU2V0RW5hYmxlZEhpZ2hBY2N1cmFjeSk6CisgICAgICAgICog
VUlQcm9jZXNzL1dlYkdlb2xvY2F0aW9uTWFuYWdlclByb3h5LmNwcDoKKyAgICAgICAgKFdlYktp
dDo6V2ViR2VvbG9jYXRpb25NYW5hZ2VyUHJveHk6OldlYkdlb2xvY2F0aW9uTWFuYWdlclByb3h5
KToKKyAgICAgICAgKFdlYktpdDo6V2ViR2VvbG9jYXRpb25NYW5hZ2VyUHJveHk6OnByb2Nlc3NQ
b29sRGVzdHJveWVkKToKKyAgICAgICAgKFdlYktpdDo6V2ViR2VvbG9jYXRpb25NYW5hZ2VyUHJv
eHk6OnByb2Nlc3NEaWRDbG9zZSk6CisgICAgICAgIChXZWJLaXQ6OldlYkdlb2xvY2F0aW9uTWFu
YWdlclByb3h5Ojpwcm92aWRlckRpZENoYW5nZVBvc2l0aW9uKToKKyAgICAgICAgKFdlYktpdDo6
V2ViR2VvbG9jYXRpb25NYW5hZ2VyUHJveHk6OnByb3ZpZGVyRGlkRmFpbFRvRGV0ZXJtaW5lUG9z
aXRpb24pOgorICAgICAgICAoV2ViS2l0OjpXZWJHZW9sb2NhdGlvbk1hbmFnZXJQcm94eTo6c3Rh
cnRVcGRhdGluZyk6CisgICAgICAgIChXZWJLaXQ6OldlYkdlb2xvY2F0aW9uTWFuYWdlclByb3h5
OjpzdG9wVXBkYXRpbmcpOgorICAgICAgICAoV2ViS2l0OjpXZWJHZW9sb2NhdGlvbk1hbmFnZXJQ
cm94eTo6c2V0RW5hYmxlSGlnaEFjY3VyYWN5KToKKyAgICAgICAgKFdlYktpdDo6V2ViR2VvbG9j
YXRpb25NYW5hZ2VyUHJveHk6OnNldFByb3ZpZGVyKToKKyAgICAgICAgKFdlYktpdDo6V2ViR2Vv
bG9jYXRpb25NYW5hZ2VyUHJveHk6OmlzVXBkYXRpbmcgY29uc3QpOgorICAgICAgICAoV2ViS2l0
OjpXZWJHZW9sb2NhdGlvbk1hbmFnZXJQcm94eTo6aXNIaWdoQWNjdXJhY3lFbmFibGVkIGNvbnN0
KToKKyAgICAgICAgKFdlYktpdDo6V2ViR2VvbG9jYXRpb25NYW5hZ2VyUHJveHk6OnByb3ZpZGVy
U3RhcnRVcGRhdGluZyk6CisgICAgICAgIChXZWJLaXQ6OldlYkdlb2xvY2F0aW9uTWFuYWdlclBy
b3h5Ojpwcm92aWRlclN0b3BVcGRhdGluZyk6CisgICAgICAgIChXZWJLaXQ6OldlYkdlb2xvY2F0
aW9uTWFuYWdlclByb3h5Ojpwcm92aWRlclNldEVuYWJsZWRIaWdoQWNjdXJhY3kpOgorICAgICAg
ICAoV2ViS2l0OjpXZWJHZW9sb2NhdGlvbk1hbmFnZXJQcm94eTo6cmVzZXRQZXJtaXNzaW9ucyk6
IERlbGV0ZWQuCisgICAgICAgIChXZWJLaXQ6OldlYkdlb2xvY2F0aW9uTWFuYWdlclByb3h5Ojpy
ZW1vdmVSZXF1ZXN0ZXIpOiBEZWxldGVkLgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJHZW9sb2Nh
dGlvbk1hbmFnZXJQcm94eS5oOgorICAgICAgICAoV2ViS2l0OjpXZWJHZW9sb2NhdGlvbk1hbmFn
ZXJQcm94eTo6bGFzdFBvc2l0aW9uIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYktpdDo6
V2ViR2VvbG9jYXRpb25NYW5hZ2VyUHJveHk6OmlzVXBkYXRpbmcgY29uc3QpOiBEZWxldGVkLgor
ICAgICAgICAoV2ViS2l0OjpXZWJHZW9sb2NhdGlvbk1hbmFnZXJQcm94eTo6aXNIaWdoQWNjdXJh
Y3lFbmFibGVkIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViR2VvbG9j
YXRpb25NYW5hZ2VyUHJveHkubWVzc2FnZXMuaW46CisgICAgICAgICogVUlQcm9jZXNzL2lvcy9X
S0dlb2xvY2F0aW9uUHJvdmlkZXJJT1MubW06CisgICAgICAgICgtW1dLR2VvbG9jYXRpb25Qcm92
aWRlcklPUyBfc3RhcnRVcGRhdGluZ10pOgorICAgICAgICAoLVtXS0dlb2xvY2F0aW9uUHJvdmlk
ZXJJT1MgX3N0b3BVcGRhdGluZ10pOgorICAgICAgICAoLVtXS0dlb2xvY2F0aW9uUHJvdmlkZXJJ
T1MgX3NldEVuYWJsZUhpZ2hBY2N1cmFjeTpdKToKKyAgICAgICAgKC1bV0tHZW9sb2NhdGlvblBy
b3ZpZGVySU9TIGluaXRXaXRoUHJvY2Vzc1Bvb2w6XSk6CisgICAgICAgICgtW1dLR2VvbG9jYXRp
b25Qcm92aWRlcklPUyBkZWNpZGVQb2xpY3lGb3JHZW9sb2NhdGlvblJlcXVlc3RGcm9tT3JpZ2lu
OmNvbXBsZXRpb25IYW5kbGVyOnZpZXc6XSk6CisgICAgICAgICgtW1dLR2VvbG9jYXRpb25Qcm92
aWRlcklPUyBnZW9sb2NhdGlvbkF1dGhvcml6YXRpb25HcmFudGVkXSk6CisgICAgICAgICgtW1dL
R2VvbG9jYXRpb25Qcm92aWRlcklPUyBwb3NpdGlvbkNoYW5nZWQ6XSk6CisgICAgICAgICgtW1dL
R2VvbG9jYXRpb25Qcm92aWRlcklPUyBlcnJvck9jY3VycmVkOl0pOgorICAgICAgICAoLVtXS0dl
b2xvY2F0aW9uUHJvdmlkZXJJT1MgcmVzZXRHZW9sb2NhdGlvbl0pOgorICAgICAgICAoc3RhcnRV
cGRhdGluZ0NhbGxiYWNrKTogRGVsZXRlZC4KKyAgICAgICAgKHN0b3BVcGRhdGluZ0NhbGxiYWNr
KTogRGVsZXRlZC4KKyAgICAgICAgKHNldEVuYWJsZUhpZ2hBY2N1cmFjeSk6IERlbGV0ZWQuCisg
ICAgICAgICgtW1dLTGVnYWN5Q29yZUxvY2F0aW9uUHJvdmlkZXIgc2V0TGlzdGVuZXI6XSk6IERl
bGV0ZWQuCisgICAgICAgICgtW1dLTGVnYWN5Q29yZUxvY2F0aW9uUHJvdmlkZXIgcmVxdWVzdEdl
b2xvY2F0aW9uQXV0aG9yaXphdGlvbl0pOiBEZWxldGVkLgorICAgICAgICAoLVtXS0xlZ2FjeUNv
cmVMb2NhdGlvblByb3ZpZGVyIHN0YXJ0XSk6IERlbGV0ZWQuCisgICAgICAgICgtW1dLTGVnYWN5
Q29yZUxvY2F0aW9uUHJvdmlkZXIgc3RvcF0pOiBEZWxldGVkLgorICAgICAgICAoLVtXS0xlZ2Fj
eUNvcmVMb2NhdGlvblByb3ZpZGVyIHNldEVuYWJsZUhpZ2hBY2N1cmFjeTpdKTogRGVsZXRlZC4K
KyAgICAgICAgKC1bV0tMZWdhY3lDb3JlTG9jYXRpb25Qcm92aWRlciBnZW9sb2NhdGlvbkF1dGhv
cml6YXRpb25HcmFudGVkXSk6IERlbGV0ZWQuCisgICAgICAgICgtW1dLTGVnYWN5Q29yZUxvY2F0
aW9uUHJvdmlkZXIgZ2VvbG9jYXRpb25BdXRob3JpemF0aW9uRGVuaWVkXSk6IERlbGV0ZWQuCisg
ICAgICAgICgtW1dLTGVnYWN5Q29yZUxvY2F0aW9uUHJvdmlkZXIgcG9zaXRpb25DaGFuZ2VkOl0p
OiBEZWxldGVkLgorICAgICAgICAoLVtXS0xlZ2FjeUNvcmVMb2NhdGlvblByb3ZpZGVyIGVycm9y
T2NjdXJyZWQ6XSk6IERlbGV0ZWQuCisgICAgICAgICgtW1dLTGVnYWN5Q29yZUxvY2F0aW9uUHJv
dmlkZXIgcmVzZXRHZW9sb2NhdGlvbl0pOiBEZWxldGVkLgorICAgICAgICAqIFdlYktpdC54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIFdlYlByb2Nlc3MvR2VvbG9jYXRpb24v
V2ViR2VvbG9jYXRpb25NYW5hZ2VyLmNwcDoKKyAgICAgICAgKFdlYktpdDo6cmVnaXN0cmFibGVE
b21haW5Gb3JQYWdlKToKKyAgICAgICAgKFdlYktpdDo6V2ViR2VvbG9jYXRpb25NYW5hZ2VyOjpy
ZWdpc3RlcldlYlBhZ2UpOgorICAgICAgICAoV2ViS2l0OjpXZWJHZW9sb2NhdGlvbk1hbmFnZXI6
OnVucmVnaXN0ZXJXZWJQYWdlKToKKyAgICAgICAgKFdlYktpdDo6V2ViR2VvbG9jYXRpb25NYW5h
Z2VyOjpzZXRFbmFibGVIaWdoQWNjdXJhY3lGb3JQYWdlKToKKyAgICAgICAgKFdlYktpdDo6V2Vi
R2VvbG9jYXRpb25NYW5hZ2VyOjpkaWRDaGFuZ2VQb3NpdGlvbik6CisgICAgICAgIChXZWJLaXQ6
OldlYkdlb2xvY2F0aW9uTWFuYWdlcjo6ZGlkRmFpbFRvRGV0ZXJtaW5lUG9zaXRpb24pOgorICAg
ICAgICAoV2ViS2l0OjpXZWJHZW9sb2NhdGlvbk1hbmFnZXI6OnJlc2V0UGVybWlzc2lvbnMpOgor
ICAgICAgICAoV2ViS2l0OjpXZWJHZW9sb2NhdGlvbk1hbmFnZXI6OmlzVXBkYXRpbmcgY29uc3Qp
OiBEZWxldGVkLgorICAgICAgICAoV2ViS2l0OjpXZWJHZW9sb2NhdGlvbk1hbmFnZXI6OmlzSGln
aEFjY3VyYWN5RW5hYmxlZCBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgICogV2ViUHJvY2Vzcy9H
ZW9sb2NhdGlvbi9XZWJHZW9sb2NhdGlvbk1hbmFnZXIuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNz
L0dlb2xvY2F0aW9uL1dlYkdlb2xvY2F0aW9uTWFuYWdlci5tZXNzYWdlcy5pbjoKKyAgICAgICAg
KiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkdlb2xvY2F0aW9uQ2xpZW50LmNwcDoKKyAg
ICAgICAgKFdlYktpdDo6V2ViR2VvbG9jYXRpb25DbGllbnQ6OnN0YXJ0VXBkYXRpbmcpOgorICAg
ICAgICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViR2VvbG9jYXRpb25DbGllbnQuaDoK
KyAgICAgICAgKFdlYktpdDo6V2ViR2VvbG9jYXRpb25DbGllbnQ6OldlYkdlb2xvY2F0aW9uQ2xp
ZW50KTogRGVsZXRlZC4KKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3BwOgorICAg
ICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzOjpyZXNldEFsbEdlb2xvY2F0aW9uUGVybWlzc2lvbnMp
OiBEZWxldGVkLgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUHJvY2Vzcy5oOgorCiAyMDIyLTAy
LTEyICBKZXIgTm9ibGUgIDxqZXIubm9ibGVAYXBwbGUuY29tPgogCiAgICAgICAgIEFkZCBzZXR0
aW5ncyB0byByZXN0cmljdCBtZWRpYSBjb250YWluZXJzIGFuZCBjb2RlY3Mgd2hlbiBpbiBDYXB0
aXZlIFBvcnRhbCBtb2RlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9DaGFu
Z2VMb2cgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9DaGFuZ2VMb2cKaW5kZXggNjgwMzk0ODU4
YTE1YjhhMjU2OTZhYWVjN2M4ZDk0YWE3M2FkNzIyMy4uMjU5NzZhMmYwZjQ4ZDNjM2NlMjk4YmZl
ZjgwZTFhZmIxMDU4OGY2NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2hh
bmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxvZwpAQCAtMSwzICsx
LDE1IEBACisyMDIyLTAyLTEzICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CisKKyAg
ICAgICAgRG8gcHJlbGltaW5hcnkgd29yayB0byBwYXNzIGRvbWFpbiBuYW1lcyB0byBDb3JlTG9j
YXRpb24KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIz
NjU2NgorICAgICAgICA8cmRhcjovLzg4NzYxNDEzPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2ViR2VvbG9jYXRpb25D
bGllbnQuaDoKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJHZW9sb2NhdGlvbkNsaWVudC5t
bToKKyAgICAgICAgKFdlYkdlb2xvY2F0aW9uQ2xpZW50OjpzdGFydFVwZGF0aW5nKToKKwogMjAy
Mi0wMi0xMSAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgogCiAgICAgICAgIFVucmV2
aWV3ZWQsIGZpeCBidWlsZCB3aXRoIHRoZSBsYXRlc3QgaU9TIFNESy4KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXRMZWdhY3kvd2luL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2lu
L0NoYW5nZUxvZwppbmRleCA2OTVhYTkxMDUzOWVmMDIxMDVmNTIxOTMwNGMwOTdlMTAzMTI2NDU1
Li4xZDZjMDMzZTJjZDFkMTI3NDQ1YzM1YzMwY2EzODg1MGFlZjdiZGI0IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdExlZ2Fj
eS93aW4vQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTUgQEAKKzIwMjItMDItMTMgIENocmlzIER1bWV6
ICA8Y2R1bWV6QGFwcGxlLmNvbT4KKworICAgICAgICBEbyBwcmVsaW1pbmFyeSB3b3JrIHRvIHBh
c3MgZG9tYWluIG5hbWVzIHRvIENvcmVMb2NhdGlvbgorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjM2NTY2CisgICAgICAgIDxyZGFyOi8vODg3NjE0MTM+
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBXZWJD
b3JlU3VwcG9ydC9XZWJHZW9sb2NhdGlvbkNsaWVudC5jcHA6CisgICAgICAgIChXZWJHZW9sb2Nh
dGlvbkNsaWVudDo6c3RhcnRVcGRhdGluZyk6CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2Vi
R2VvbG9jYXRpb25DbGllbnQuaDoKKwogMjAyMi0wMi0wMSAgTXlsZXMgQy4gTWF4ZmllbGQgIDxt
bWF4ZmllbGRAYXBwbGUuY29tPgogCiAgICAgICAgIFJlbmFtZSBGb250Q2FzY2FkZTo6Zm9udE1l
dHJpY3MoKSBhbmQgUmVuZGVyU3R5bGU6OmZvbnRNZXRyaWNzKCkgdG8gZm9udE1ldHJpY3NPZlBy
aW1hcnlGb250KCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL1BsYXRmb3JtSGF2ZS5oIGIv
U291cmNlL1dURi93dGYvUGxhdGZvcm1IYXZlLmgKaW5kZXggMDkyYmMzNjIxNTAxZDQ0Y2VhZmIw
NzBmYWNjZDM5OTVjZGEyMzEyNy4uNjhhMzA0NWNhNzY2OWNmY2ExOWQ4Mzg1ZTk4NjM2ZTQ0OTk5
OTNmNiAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvUGxhdGZvcm1IYXZlLmgKKysrIGIvU291
cmNlL1dURi93dGYvUGxhdGZvcm1IYXZlLmgKQEAgLTExMTksNiArMTExOSwxMiBAQAogI2RlZmlu
ZSBIQVZFX05TVEVYVExJU1RfTUFSS0VSX0ZPUk1BVFMgMQogI2VuZGlmCiAKKyNpZiAoUExBVEZP
Uk0oSU9TKSAmJiBfX0lQSE9ORV9PU19WRVJTSU9OX01BWF9BTExPV0VEID49IDE2MDAwMCkgXAor
ICAgIHx8IChQTEFURk9STShXQVRDSE9TKSAmJiBfX1dBVENIX09TX1ZFUlNJT05fTUFYX0FMTE9X
RUQgPj0gOTAwMDApIFwKKyAgICB8fCAoUExBVEZPUk0oQVBQTEVUVikgJiYgX19UVl9PU19WRVJT
SU9OX01BWF9BTExPV0VEID49IDE2MDAwMCkKKyNkZWZpbmUgSEFWRV9DT1JFX0xPQ0FUSU9OX1dF
QlNJVEVfSURFTlRJRklFUlMgMQorI2VuZGlmCisKICNpZiBQTEFURk9STShNQUMpCiAjZGVmaW5l
IEhBVkVfU0NFTkVLSVQgMQogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2dlb2xvY2F0aW9uL0dlb2xvY2F0aW9uQ2xpZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2dlb2xvY2F0aW9uL0dlb2xvY2F0aW9uQ2xpZW50LmgKaW5kZXggNWJhZjNhZDgyYzU3ZTVh
Y2JhOTZlM2RmMGVkNjBlYmM3NTRiY2IwNS4uYTRlODYyMzYyNTU2N2U5YWRmZWIwMGQ4MjQwMDBh
Mjc3ZGJlYWYwMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9nZW9sb2NhdGlv
bi9HZW9sb2NhdGlvbkNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZ2VvbG9j
YXRpb24vR2VvbG9jYXRpb25DbGllbnQuaApAQCAtMzgsNyArMzgsNyBAQCBjbGFzcyBHZW9sb2Nh
dGlvbkNsaWVudCB7CiBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIGdlb2xvY2F0aW9uRGVzdHJv
eWVkKCkgPSAwOwogCi0gICAgdmlydHVhbCB2b2lkIHN0YXJ0VXBkYXRpbmcoY29uc3QgU3RyaW5n
JiBhdXRob3JpemF0aW9uVG9rZW4pID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgc3RhcnRVcGRhdGlu
Zyhjb25zdCBTdHJpbmcmIGF1dGhvcml6YXRpb25Ub2tlbiwgYm9vbCBuZWVkc0hpZ2hBY2N1cmFj
eSkgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBzdG9wVXBkYXRpbmcoKSA9IDA7CiAgICAgdmlydHVh
bCB2b2lkIHJldm9rZUF1dGhvcml6YXRpb25Ub2tlbihjb25zdCBTdHJpbmcmKSB7IH0KIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9nZW9sb2NhdGlvbi9HZW9sb2NhdGlvbkNv
bnRyb2xsZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9nZW9sb2NhdGlvbi9HZW9sb2Nh
dGlvbkNvbnRyb2xsZXIuY3BwCmluZGV4IDA2MTYyOTE2MGQ5YmNjN2Q1ZGFmNzRjZmM0ZjgxNTUw
YmE0OGRlOGMuLjA3ZGQ2NWYzYzFhZWU3OWViOWM3MzI4MzZhMmQ1YWFkMDE3MzMzY2YgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZ2VvbG9jYXRpb24vR2VvbG9jYXRpb25Db250
cm9sbGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2dlb2xvY2F0aW9uL0dlb2xv
Y2F0aW9uQ29udHJvbGxlci5jcHAKQEAgLTUyLDE5ICs1MiwyNSBAQCBHZW9sb2NhdGlvbkNvbnRy
b2xsZXI6On5HZW9sb2NhdGlvbkNvbnRyb2xsZXIoKQogICAgIG1fY2xpZW50Lmdlb2xvY2F0aW9u
RGVzdHJveWVkKCk7CiB9CiAKK3ZvaWQgR2VvbG9jYXRpb25Db250cm9sbGVyOjpkaWROYXZpZ2F0
ZVBhZ2UoKQoreworICAgIHdoaWxlICghbV9vYnNlcnZlcnMuaXNFbXB0eSgpKQorICAgICAgICBy
ZW1vdmVPYnNlcnZlcihtX29ic2VydmVycy5iZWdpbigpLT5nZXQoKSk7Cit9CisKIHZvaWQgR2Vv
bG9jYXRpb25Db250cm9sbGVyOjphZGRPYnNlcnZlcihHZW9sb2NhdGlvbiYgb2JzZXJ2ZXIsIGJv
b2wgZW5hYmxlSGlnaEFjY3VyYWN5KQogewotICAgIC8vIFRoaXMgbWF5IGJlIGNhbGxlZCBtdWx0
aXBsZSB0aW1lcyB3aXRoIHRoZSBzYW1lIG9ic2VydmVyLCB0aG91Z2ggcmVtb3ZlT2JzZXJ2ZXIo
KQotICAgIC8vIGlzIGNhbGxlZCBvbmx5IG9uY2Ugd2l0aCBlYWNoLgotICAgIGJvb2wgd2FzRW1w
dHkgPSBtX29ic2VydmVycy5pc0VtcHR5KCk7CisgICAgYm9vbCBoaWdoQWNjdXJhY3lXYXNSZXF1
aXJlZCA9IG5lZWRzSGlnaEFjY3VyYWN5KCk7CisKICAgICBtX29ic2VydmVycy5hZGQob2JzZXJ2
ZXIpOwogICAgIGlmIChlbmFibGVIaWdoQWNjdXJhY3kpCiAgICAgICAgIG1faGlnaEFjY3VyYWN5
T2JzZXJ2ZXJzLmFkZChvYnNlcnZlcik7CiAKLSAgICBpZiAoZW5hYmxlSGlnaEFjY3VyYWN5KQot
ICAgICAgICBtX2NsaWVudC5zZXRFbmFibGVIaWdoQWNjdXJhY3kodHJ1ZSk7Ci0gICAgaWYgKHdh
c0VtcHR5ICYmIG1fcGFnZS5pc1Zpc2libGUoKSkKLSAgICAgICAgbV9jbGllbnQuc3RhcnRVcGRh
dGluZyhvYnNlcnZlci5hdXRob3JpemF0aW9uVG9rZW4oKSk7CisgICAgaWYgKG1faXNVcGRhdGlu
ZykgeworICAgICAgICBpZiAoIWhpZ2hBY2N1cmFjeVdhc1JlcXVpcmVkICYmIGVuYWJsZUhpZ2hB
Y2N1cmFjeSkKKyAgICAgICAgICAgIG1fY2xpZW50LnNldEVuYWJsZUhpZ2hBY2N1cmFjeSh0cnVl
KTsKKyAgICB9IGVsc2UKKyAgICAgICAgc3RhcnRVcGRhdGluZ0lmTmVjZXNzYXJ5KCk7CiB9CiAK
IHZvaWQgR2VvbG9jYXRpb25Db250cm9sbGVyOjpyZW1vdmVPYnNlcnZlcihHZW9sb2NhdGlvbiYg
b2JzZXJ2ZXIpCkBAIC03MiwxMiArNzgsMTcgQEAgdm9pZCBHZW9sb2NhdGlvbkNvbnRyb2xsZXI6
OnJlbW92ZU9ic2VydmVyKEdlb2xvY2F0aW9uJiBvYnNlcnZlcikKICAgICBpZiAoIW1fb2JzZXJ2
ZXJzLmNvbnRhaW5zKG9ic2VydmVyKSkKICAgICAgICAgcmV0dXJuOwogCisgICAgYm9vbCBoaWdo
QWNjdXJhY3lXYXNSZXF1aXJlZCA9IG5lZWRzSGlnaEFjY3VyYWN5KCk7CisKICAgICBtX29ic2Vy
dmVycy5yZW1vdmUob2JzZXJ2ZXIpOwogICAgIG1faGlnaEFjY3VyYWN5T2JzZXJ2ZXJzLnJlbW92
ZShvYnNlcnZlcik7CiAKKyAgICBpZiAoIW1faXNVcGRhdGluZykKKyAgICAgICAgcmV0dXJuOwor
CiAgICAgaWYgKG1fb2JzZXJ2ZXJzLmlzRW1wdHkoKSkKLSAgICAgICAgbV9jbGllbnQuc3RvcFVw
ZGF0aW5nKCk7Ci0gICAgZWxzZSBpZiAobV9oaWdoQWNjdXJhY3lPYnNlcnZlcnMuaXNFbXB0eSgp
KQorICAgICAgICBzdG9wVXBkYXRpbmdJZk5lY2Vzc2FyeSgpOworICAgIGVsc2UgaWYgKGhpZ2hB
Y2N1cmFjeVdhc1JlcXVpcmVkICYmICFuZWVkc0hpZ2hBY2N1cmFjeSgpKQogICAgICAgICBtX2Ns
aWVudC5zZXRFbmFibGVIaWdoQWNjdXJhY3koZmFsc2UpOwogfQogCkBAIC0xMzksOSArMTUwLDkg
QEAgdm9pZCBHZW9sb2NhdGlvbkNvbnRyb2xsZXI6OmFjdGl2aXR5U3RhdGVEaWRDaGFuZ2UoT3B0
aW9uU2V0PEFjdGl2aXR5U3RhdGU6OkZsYWcKICAgICBhdXRvIGNoYW5nZWQgPSBvbGRBY3Rpdml0
eVN0YXRlIF4gbmV3QWN0aXZpdHlTdGF0ZTsKICAgICBpZiAoY2hhbmdlZCAmIEFjdGl2aXR5U3Rh
dGU6OklzVmlzaWJsZSAmJiAhbV9vYnNlcnZlcnMuaXNFbXB0eSgpKSB7CiAgICAgICAgIGlmIChu
ZXdBY3Rpdml0eVN0YXRlICYgQWN0aXZpdHlTdGF0ZTo6SXNWaXNpYmxlKQotICAgICAgICAgICAg
bV9jbGllbnQuc3RhcnRVcGRhdGluZygoKm1fb2JzZXJ2ZXJzLnJhbmRvbSgpKS0+YXV0aG9yaXph
dGlvblRva2VuKCkpOworICAgICAgICAgICAgc3RhcnRVcGRhdGluZ0lmTmVjZXNzYXJ5KCk7CiAg
ICAgICAgIGVsc2UKLSAgICAgICAgICAgIG1fY2xpZW50LnN0b3BVcGRhdGluZygpOworICAgICAg
ICAgICAgc3RvcFVwZGF0aW5nSWZOZWNlc3NhcnkoKTsKICAgICB9CiAKICAgICBpZiAoIW1fcGFn
ZS5pc1Zpc2libGUoKSkKQEAgLTE1Miw2ICsxNjMsMjQgQEAgdm9pZCBHZW9sb2NhdGlvbkNvbnRy
b2xsZXI6OmFjdGl2aXR5U3RhdGVEaWRDaGFuZ2UoT3B0aW9uU2V0PEFjdGl2aXR5U3RhdGU6OkZs
YWcKICAgICAgICAgbV9jbGllbnQucmVxdWVzdFBlcm1pc3Npb24ocGVybWlzc2lvblJlcXVlc3Qu
Z2V0KCkpOwogfQogCit2b2lkIEdlb2xvY2F0aW9uQ29udHJvbGxlcjo6c3RhcnRVcGRhdGluZ0lm
TmVjZXNzYXJ5KCkKK3sKKyAgICBpZiAobV9pc1VwZGF0aW5nIHx8ICFtX3BhZ2UuaXNWaXNpYmxl
KCkgfHwgbV9vYnNlcnZlcnMuaXNFbXB0eSgpKQorICAgICAgICByZXR1cm47CisKKyAgICBtX2Ns
aWVudC5zdGFydFVwZGF0aW5nKCgqbV9vYnNlcnZlcnMucmFuZG9tKCkpLT5hdXRob3JpemF0aW9u
VG9rZW4oKSwgbmVlZHNIaWdoQWNjdXJhY3koKSk7CisgICAgbV9pc1VwZGF0aW5nID0gdHJ1ZTsK
K30KKwordm9pZCBHZW9sb2NhdGlvbkNvbnRyb2xsZXI6OnN0b3BVcGRhdGluZ0lmTmVjZXNzYXJ5
KCkKK3sKKyAgICBpZiAoIW1faXNVcGRhdGluZykKKyAgICAgICAgcmV0dXJuOworCisgICAgbV9j
bGllbnQuc3RvcFVwZGF0aW5nKCk7CisgICAgbV9pc1VwZGF0aW5nID0gZmFsc2U7Cit9CisKIGNv
bnN0IGNoYXIqIEdlb2xvY2F0aW9uQ29udHJvbGxlcjo6c3VwcGxlbWVudE5hbWUoKQogewogICAg
IHJldHVybiAiR2VvbG9jYXRpb25Db250cm9sbGVyIjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvZ2VvbG9jYXRpb24vR2VvbG9jYXRpb25Db250cm9sbGVyLmggYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2dlb2xvY2F0aW9uL0dlb2xvY2F0aW9uQ29udHJvbGxlci5oCmluZGV4
IDQyZjVkMDYyZGI2ZjA5YzY2MDExMWQ2NmQ5ZjBmY2ZmZjNiMjA3NDAuLmJiZmY1NzVlYjA1ODMy
NDA3ODBkM2I0MWE5Njc0MmM2YjFkNzI0OGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvZ2VvbG9jYXRpb24vR2VvbG9jYXRpb25Db250cm9sbGVyLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9nZW9sb2NhdGlvbi9HZW9sb2NhdGlvbkNvbnRyb2xsZXIuaApAQCAtMzAs
NiArMzAsNyBAQAogI2luY2x1ZGUgIkFjdGl2aXR5U3RhdGVDaGFuZ2VPYnNlcnZlci5oIgogI2lu
Y2x1ZGUgIkdlb2xvY2F0aW9uLmgiCiAjaW5jbHVkZSAiUGFnZS5oIgorI2luY2x1ZGUgIlJlZ2lz
dHJhYmxlRG9tYWluLmgiCiAjaW5jbHVkZSA8d3RmL0hhc2hTZXQuaD4KICNpbmNsdWRlIDx3dGYv
Tm9uY29weWFibGUuaD4KICNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+CkBAIC02NSw2ICs2Niw4IEBA
IHB1YmxpYzoKIAogICAgIHZvaWQgcmV2b2tlQXV0aG9yaXphdGlvblRva2VuKGNvbnN0IFN0cmlu
ZyYpOwogCisgICAgdm9pZCBkaWROYXZpZ2F0ZVBhZ2UoKTsKKwogcHJpdmF0ZToKICAgICBQYWdl
JiBtX3BhZ2U7CiAgICAgR2VvbG9jYXRpb25DbGllbnQmIG1fY2xpZW50OwpAQCAtNzMsNiArNzYs
MTEgQEAgcHJpdmF0ZToKIAogICAgIHN0ZDo6b3B0aW9uYWw8R2VvbG9jYXRpb25Qb3NpdGlvbkRh
dGE+IG1fbGFzdFBvc2l0aW9uOwogCisgICAgYm9vbCBuZWVkc0hpZ2hBY2N1cmFjeSgpIGNvbnN0
IHsgcmV0dXJuICFtX2hpZ2hBY2N1cmFjeU9ic2VydmVycy5pc0VtcHR5KCk7IH0KKworICAgIHZv
aWQgc3RhcnRVcGRhdGluZ0lmTmVjZXNzYXJ5KCk7CisgICAgdm9pZCBzdG9wVXBkYXRpbmdJZk5l
Y2Vzc2FyeSgpOworCiAgICAgdHlwZWRlZiBIYXNoU2V0PFJlZjxHZW9sb2NhdGlvbj4+IE9ic2Vy
dmVyc1NldDsKICAgICAvLyBBbGwgb2JzZXJ2ZXJzOyBib3RoIHRob3NlIHJlcXVlc3RpbmcgaGln
aCBhY2N1cmFjeSBhbmQgdGhvc2Ugbm90LgogICAgIE9ic2VydmVyc1NldCBtX29ic2VydmVyczsK
QEAgLTgwLDYgKzg4LDkgQEAgcHJpdmF0ZToKIAogICAgIC8vIFdoaWxlIHRoZSBwYWdlIGlzIG5v
dCB2aXNpYmxlLCB3ZSBwZW5kIHBlcm1pc3Npb24gcmVxdWVzdHMuCiAgICAgSGFzaFNldDxSZWY8
R2VvbG9jYXRpb24+PiBtX3BlbmRpbmdQZXJtaXNzaW9uUmVxdWVzdDsKKworICAgIFJlZ2lzdHJh
YmxlRG9tYWluIG1fcmVnaXN0cmFibGVEb21haW47CisgICAgYm9vbCBtX2lzVXBkYXRpbmcgeyBm
YWxzZSB9OwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9nZW9sb2NhdGlvbi9HZW9sb2NhdGlvblBvc2l0aW9uRGF0YS5oIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9nZW9sb2NhdGlvbi9HZW9sb2NhdGlvblBvc2l0aW9uRGF0
YS5oCmluZGV4IDkyNjIyMTcwYzhhYWQ2OTg5YjhhMTJjZTQ4MzU2ZGM2ODdiZjZlMzUuLmNjMjE4
MGE4MzdkMjc0M2MxZmJmNzYxYzQxMGUxYzdlYmZlYWVlN2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvZ2VvbG9jYXRpb24vR2VvbG9jYXRpb25Qb3NpdGlvbkRhdGEuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2dlb2xvY2F0aW9uL0dlb2xvY2F0aW9uUG9zaXRpb25E
YXRhLmgKQEAgLTI5LDcgKzI5LDcgQEAKICNpbmNsdWRlIDx3dGYvUmVmLmg+CiAjaW5jbHVkZSA8
d3RmL1JlZkNvdW50ZWQuaD4KIAotI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCisjaWYgUExBVEZP
Uk0oQ09DT0EpCiBPQkpDX0NMQVNTIENMTG9jYXRpb247CiAjZW5kaWYKIApAQCAtNDcsNyArNDcs
NyBAQCBwdWJsaWM6CiAgICAgewogICAgIH0KIAotI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCisj
aWYgUExBVEZPUk0oQ09DT0EpCiAgICAgV0VCQ09SRV9FWFBPUlQgZXhwbGljaXQgR2VvbG9jYXRp
b25Qb3NpdGlvbkRhdGEoQ0xMb2NhdGlvbiopOwogI2VuZGlmCiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvZ2VvbG9jYXRpb24vY29jb2EvR2VvbG9jYXRpb25Qb3NpdGlvbkRh
dGFDb2NvYS5tbSBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZ2VvbG9jYXRpb24vY29jb2EvR2Vv
bG9jYXRpb25Qb3NpdGlvbkRhdGFDb2NvYS5tbQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5jMGE5YmVlNjU1Njk0ZGIz
YWJmMTU3ZWVkMTkwNzZlYWQ1ODU0NDA2Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9nZW9sb2NhdGlvbi9jb2NvYS9HZW9sb2NhdGlvblBvc2l0aW9uRGF0YUNvY29h
Lm1tCkBAIC0wLDAgKzEsNTMgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQXBwbGUgSW5j
LiBBbGwgUmlnaHRzIFJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisg
KiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAq
IElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxM
IEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VS
RU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEs
IE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KKyAqLworCisjaW1wb3J0ICJjb25maWcuaCIKKyNpbXBvcnQgIkdlb2xvY2F0aW9uUG9zaXRp
b24uaCIKKworI2ltcG9ydCA8Q29yZUxvY2F0aW9uL0NMTG9jYXRpb24uaD4KKworbmFtZXNwYWNl
IFdlYkNvcmUgeworCitHZW9sb2NhdGlvblBvc2l0aW9uRGF0YTo6R2VvbG9jYXRpb25Qb3NpdGlv
bkRhdGEoQ0xMb2NhdGlvbiogbG9jYXRpb24pCisgICAgOiB0aW1lc3RhbXAobG9jYXRpb24udGlt
ZXN0YW1wLnRpbWVJbnRlcnZhbFNpbmNlMTk3MCkKKyAgICAsIGxhdGl0dWRlKGxvY2F0aW9uLmNv
b3JkaW5hdGUubGF0aXR1ZGUpCisgICAgLCBsb25naXR1ZGUobG9jYXRpb24uY29vcmRpbmF0ZS5s
b25naXR1ZGUpCisgICAgLCBhY2N1cmFjeShsb2NhdGlvbi5ob3Jpem9udGFsQWNjdXJhY3kpCit7
CisgICAgaWYgKGxvY2F0aW9uLnZlcnRpY2FsQWNjdXJhY3kgPj0gMC4wKSB7CisgICAgICAgIGFs
dGl0dWRlID0gbG9jYXRpb24uYWx0aXR1ZGU7CisgICAgICAgIGFsdGl0dWRlQWNjdXJhY3kgPSBs
b2NhdGlvbi52ZXJ0aWNhbEFjY3VyYWN5OworICAgIH0KKyAgICBpZiAobG9jYXRpb24uc3BlZWQg
Pj0gMC4wKQorICAgICAgICBzcGVlZCA9IGxvY2F0aW9uLnNwZWVkOworICAgIGlmIChsb2NhdGlv
bi5jb3Vyc2UgPj0gMC4wKQorICAgICAgICBoZWFkaW5nID0gbG9jYXRpb24uY291cnNlOworI2lm
ICFQTEFURk9STShNQUNDQVRBTFlTVCkKKyAgICBpZiAobG9jYXRpb24uZmxvb3IpCisgICAgICAg
IGZsb29yTGV2ZWwgPSBsb2NhdGlvbi5mbG9vci5sZXZlbDsKKyNlbmRpZgorfQorCit9IC8vIG5h
bWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2dlb2xv
Y2F0aW9uL2lvcy9HZW9sb2NhdGlvblBvc2l0aW9uRGF0YUlPUy5tbSBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvZ2VvbG9jYXRpb24vaW9zL0dlb2xvY2F0aW9uUG9zaXRpb25EYXRhSU9TLm1tCmRl
bGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5OGQ5YTI0MjFlN2YyMzA5YjRmNjIzYjE0ZDdj
YmUyYjZjN2UwNDVjLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0t
LSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZ2VvbG9jYXRpb24vaW9zL0dlb2xvY2F0aW9uUG9z
aXRpb25EYXRhSU9TLm1tCisrKyAvZGV2L251bGwKQEAgLTEsNTcgKzAsMCBAQAotLyoKLSAqIENv
cHlyaWdodCAoQykgMjAxNyBBcHBsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCi0gKgotICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24u
Ci0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMn
JyBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFRIRQotICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgotICogQ09OVFJJQlVUT1JT
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
Ci0gKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sCi0gKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKLSAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKLSAqIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICog
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpbXBvcnQgImNvbmZpZy5oIgot
I2ltcG9ydCAiR2VvbG9jYXRpb25Qb3NpdGlvbi5oIgotCi0jaWYgUExBVEZPUk0oSU9TX0ZBTUlM
WSkKLQotI2ltcG9ydCA8Q29yZUxvY2F0aW9uL0NMTG9jYXRpb24uaD4KLQotbmFtZXNwYWNlIFdl
YkNvcmUgewotCi1HZW9sb2NhdGlvblBvc2l0aW9uRGF0YTo6R2VvbG9jYXRpb25Qb3NpdGlvbkRh
dGEoQ0xMb2NhdGlvbiogbG9jYXRpb24pCi0gICAgOiB0aW1lc3RhbXAobG9jYXRpb24udGltZXN0
YW1wLnRpbWVJbnRlcnZhbFNpbmNlMTk3MCkKLSAgICAsIGxhdGl0dWRlKGxvY2F0aW9uLmNvb3Jk
aW5hdGUubGF0aXR1ZGUpCi0gICAgLCBsb25naXR1ZGUobG9jYXRpb24uY29vcmRpbmF0ZS5sb25n
aXR1ZGUpCi0gICAgLCBhY2N1cmFjeShsb2NhdGlvbi5ob3Jpem9udGFsQWNjdXJhY3kpCi17Ci0g
ICAgaWYgKGxvY2F0aW9uLnZlcnRpY2FsQWNjdXJhY3kgPj0gMC4wKSB7Ci0gICAgICAgIGFsdGl0
dWRlID0gbG9jYXRpb24uYWx0aXR1ZGU7Ci0gICAgICAgIGFsdGl0dWRlQWNjdXJhY3kgPSBsb2Nh
dGlvbi52ZXJ0aWNhbEFjY3VyYWN5OwotICAgIH0KLSAgICBpZiAobG9jYXRpb24uc3BlZWQgPj0g
MC4wKQotICAgICAgICBzcGVlZCA9IGxvY2F0aW9uLnNwZWVkOwotICAgIGlmIChsb2NhdGlvbi5j
b3Vyc2UgPj0gMC4wKQotICAgICAgICBoZWFkaW5nID0gbG9jYXRpb24uY291cnNlOwotI2lmICFQ
TEFURk9STShNQUNDQVRBTFlTVCkKLSAgICBpZiAobG9jYXRpb24uZmxvb3IpCi0gICAgICAgIGZs
b29yTGV2ZWwgPSBsb2NhdGlvbi5mbG9vci5sZXZlbDsKLSNlbmRpZgotfQotCi19Ci0KLSNlbmRp
ZiAvLyBQTEFURk9STShJT1NfRkFNSUxZKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvU291
cmNlc0NvY29hLnR4dCBiL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXNDb2NvYS50eHQKaW5kZXggMTA3
NWVhYzQ3NmE1NGI4MjAwZDA2ZTliODQzNmIyNDg5NWQ0MmM2Mi4uNjUyOTZlMjViNzE1ZGZlMzA4
MDVmZDdkMWFiNzc0MzlmNDhmMjI1ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvU291cmNl
c0NvY29hLnR4dAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzQ29jb2EudHh0CkBAIC0yNTEs
NiArMjUxLDcgQEAgcGxhdGZvcm0vY2YvTWVkaWFBY2Nlc3NpYmlsaXR5U29mdExpbmsuY3BwCiBw
bGF0Zm9ybS9jZi9SdW5Mb29wT2JzZXJ2ZXIuY3BwCiBwbGF0Zm9ybS9jZi9TaGFyZWRCdWZmZXJD
Ri5jcHAKIHBsYXRmb3JtL2NvY29hL0NvbnRlbnRGaWx0ZXJVbmJsb2NrSGFuZGxlckNvY29hLm1t
IEBuby11bmlmeQorcGxhdGZvcm0vY29jb2EvQ29yZUxvY2F0aW9uR2VvbG9jYXRpb25Qcm92aWRl
ci5tbQogcGxhdGZvcm0vY29jb2EvQ29yZVZpZGVvU29mdExpbmsuY3BwCiBwbGF0Zm9ybS9jb2Nv
YS9EcmFnRGF0YUNvY29hLm1tCiBwbGF0Zm9ybS9jb2NvYS9EcmFnSW1hZ2VDb2NvYS5tbQpAQCAt
MzE3LDcgKzMxOCw3IEBAIHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0NETVNl
c3Npb25BVkZvdW5kYXRpb25PYmpDLm1tCiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24v
b2JqYy9DRE1TZXNzaW9uQVZTdHJlYW1TZXNzaW9uLm1tCiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZv
dW5kYXRpb24vb2JqYy9DRE1TZXNzaW9uTWVkaWFTb3VyY2VBVkZPYmpDLm1tCiBwbGF0Zm9ybS9n
cmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9JbWFnZURlY29kZXJBVkZPYmpDLm1tCi1wbGF0Zm9y
bS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9JbmJhbmRUZXh0VHJhY2tQcml2YXRlQVZGT2Jq
Qy5tbQorcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvSW5iYW5kVGV4dFRyYWNr
UHJpdmF0ZUFWRk9iakMubW0gQG5vLXVuaWZ5CiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRp
b24vb2JqYy9JbmJhbmRDaGFwdGVyVHJhY2tQcml2YXRlQVZGT2JqQy5tbSBAbm8tdW5pZnkKIHBs
YXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0xvY2FsU2FtcGxlQnVmZmVyRGlzcGxh
eUxheWVyLm1tCiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXli
YWNrVGFyZ2V0UGlja2VyTWFjLm1tCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3Jl
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggZjFlZTk3MTI2NWVmYWQ3MzYxYTIxOWNiY2RjZjhk
MjU0MmIzN2M2MC4uM2QxYjY3MzVjNTMyNDY1ZTdjYWZjM2JiMjViM2M0NGM4NDJhZGJkYSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9q
CisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpA
QCAtMTM1Miw2ICsxMzUyLDcgQEAKIAkJNDY4MzQ0RTAxRURERkFBQTAwQjc3OTVCIC8qIERPTVJl
Y3RMaXN0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0
NjgzNDRERTFFRERGQTVGMDBCNzc5NUIgLyogRE9NUmVjdExpc3QuaCAqLzsgc2V0dGluZ3MgPSB7
QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk0NjgzREY0MDI3NjdERjk4MDA3RDAw
QzggLyogSlNTaGFkb3dSZWFsbUdsb2JhbFNjb3BlQmFzZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDY4M0RGM0UyNzY3REY5ODAwN0QwMEM4IC8qIEpT
U2hhZG93UmVhbG1HbG9iYWxTY29wZUJhc2UuaCAqLzsgfTsKIAkJNDY4M0RGNDEyNzY3RTkxQTAw
N0QwMEM4IC8qIFNoYWRvd1JlYWxtR2xvYmFsU2NvcGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ2ODNERjNCMjc2N0RGMjYwMDdEMDBDOCAvKiBTaGFk
b3dSZWFsbUdsb2JhbFNjb3BlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0
ZSwgKTsgfTsgfTsKKwkJNDY4OEU5ODAyN0I2QjQ1MDAwNTY3Q0QyIC8qIENvcmVMb2NhdGlvbkdl
b2xvY2F0aW9uUHJvdmlkZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDQ2ODhFOTdGMjdCNkI0NDQwMDU2N0NEMiAvKiBDb3JlTG9jYXRpb25HZW9sb2Nh
dGlvblByb3ZpZGVyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsg
fTsgfTsKIAkJNDY4OEVFM0MyNkREMjYxMDAwMkFGNUM0IC8qIENyb3NzT3JpZ2luTW9kZS5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDY4OEVFM0EyNkRE
MjYwQzAwMkFGNUM0IC8qIENyb3NzT3JpZ2luTW9kZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJV
VEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTQ2OTQzREM5Mjc2M0Y4MTcwMDRCNjEwRSAvKiBT
aGFyZWRXb3JrZXJPYmplY3RJZGVudGlmaWVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA0Njk0M0RDNzI3NjNGODBFMDA0QjYxMEUgLyogU2hhcmVkV29y
a2VyT2JqZWN0SWRlbnRpZmllci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZh
dGUsICk7IH07IH07CiAJCTQ2OTg1RjIzMjdBNEE2QUQwMDk3QTMyQiAvKiBTaGFyZWRXb3JrZXJL
ZXkuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ2OTg1
RjIyMjdBNEE2ODYwMDk3QTMyQiAvKiBTaGFyZWRXb3JrZXJLZXkuaCAqLzsgc2V0dGluZ3MgPSB7
QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwpAQCAtMTM3Nyw2ICsxMzc4LDcgQEAKIAkJ
NDZDNjk2Q0IxRTcyMDVGNzAwNTk3OTM3IC8qIENQVU1vbml0b3IuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ2QzY5NkM5MUU3MjA1RTQwMDU5NzkzNyAv
KiBDUFVNb25pdG9yLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsg
fTsgfTsKIAkJNDZDNjk2Q0MxRTcyMDVGQzAwNTk3OTM3IC8qIENQVU1vbml0b3IuY3BwIGluIFNv
dXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDZDNjk2Q0ExRTcyMDVF
NDAwNTk3OTM3IC8qIENQVU1vbml0b3IuY3BwICovOyB9OwogCQk0NkM4M0VGRTFBOUJCRTI5MDBB
NzlBNDEgLyogR2VvTm90aWZpZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDQ2QzgzRUZDMUE5QkJFMjkwMEE3OUE0MSAvKiBHZW9Ob3RpZmllci5oICov
OyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCTQ2Q0E5NDMx
MjdCODY5NTgwMEY0RjVGRiAvKiBJbmJhbmRUZXh0VHJhY2tQcml2YXRlQVZGT2JqQy5tbSBpbiBT
b3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDA3QUE2QjZBMTY2RDAx
OTUwMEQ0NTY3MSAvKiBJbmJhbmRUZXh0VHJhY2tQcml2YXRlQVZGT2JqQy5tbSAqLzsgfTsKIAkJ
NDZDQTlDNDQxRjk3QkJFOTAwNENGQzNBIC8qIFZpc2liaWxpdHlTdGF0ZS5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDZDQTlDNDExRjk3QkJFNzAwNENG
QzNBIC8qIFZpc2liaWxpdHlTdGF0ZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFBy
aXZhdGUsICk7IH07IH07CiAJCTQ2Q0Y1MDRBMjdBQjFFQTQwMDcwREJDOCAvKiBTaGFyZWRXb3Jr
ZXJDb250ZXh0TWFuYWdlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gNDZDRjUwNDgyN0FCMUVBMTAwNzBEQkM4IC8qIFNoYXJlZFdvcmtlckNvbnRleHRN
YW5hZ2VyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsK
IAkJNDZEMDAwNDAyNkEwRkVCMzAwRDFCRjFFIC8qIFN1Ym1pdEV2ZW50LmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0NkQwMDAzRTI2QTBGRTZGMDBEMUJG
MUUgLyogU3VibWl0RXZlbnQuaCAqLzsgfTsKQEAgLTI2OTUsNyArMjY5Nyw3IEBACiAJCTgzNzY1
Rjk1MURBQzUyMkYwMEMwNjUzNyAvKiBNb3VzZUV2ZW50SW5pdC5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODM3NjVGOTQxREFDNTIxODAwQzA2NTM3IC8q
IE1vdXNlRXZlbnRJbml0LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwg
KTsgfTsgfTsKIAkJODM3ODg3ODIyNEQ4QTYwOTAwMEQ0QTVCIC8qIEF1ZGlvQnVmZmVyU291cmNl
T3B0aW9ucy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
ODM3ODg3N0YyNEQ4QTVGQzAwMEQ0QTVCIC8qIEF1ZGlvQnVmZmVyU291cmNlT3B0aW9ucy5oICov
OyB9OwogCQk4Mzc5MzYzRjFGQkJCMEI0MDBDODAyM0MgLyogU2VydmljZVdvcmtlckNsaWVudERh
dGEuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDgzNzkz
NjNFMUZCQkIwQTUwMEM4MDIzQyAvKiBTZXJ2aWNlV29ya2VyQ2xpZW50RGF0YS5oICovOyBzZXR0
aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07Ci0JCTgzNzk2NENGMUY4REI2
OUQwMDIxOEVBMCAvKiBHZW9sb2NhdGlvblBvc2l0aW9uRGF0YUlPUy5tbSBpbiBTb3VyY2VzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDgzNzk2NENFMUY4REI2OUEwMDIxOEVB
MCAvKiBHZW9sb2NhdGlvblBvc2l0aW9uRGF0YUlPUy5tbSAqLzsgfTsKKwkJODM3OTY0Q0YxRjhE
QjY5RDAwMjE4RUEwIC8qIEdlb2xvY2F0aW9uUG9zaXRpb25EYXRhQ29jb2EubW0gaW4gU291cmNl
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4Mzc5NjRDRTFGOERCNjlBMDAy
MThFQTAgLyogR2VvbG9jYXRpb25Qb3NpdGlvbkRhdGFDb2NvYS5tbSAqLzsgfTsKIAkJODM3QTgw
MTMxRTFFMTI3MzAwMDI2QjlGIC8qIExvY2FsaXphYmxlLnN0cmluZ3NkaWN0IGluIFJlc291cmNl
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4MzdBODAxMTFFMUUxMjczMDAw
MjZCOUYgLyogTG9jYWxpemFibGUuc3RyaW5nc2RpY3QgKi87IH07CiAJCTgzN0MwQjc2MjREQjM4
NTAwMDVENTk1OSAvKiBEeW5hbWljc0NvbXByZXNzb3JPcHRpb25zLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4MzdDMEI3MzI0REIzODQyMDA1RDU5NTkg
LyogRHluYW1pY3NDb21wcmVzc29yT3B0aW9ucy5oICovOyB9OwogCQk4MzdGQjM0NTFGOUVBMDZE
MDBEMEZDMzEgLyogRXh0ZW5kYWJsZU1lc3NhZ2VFdmVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODM3RkIzNDAxRjlFQTA2NjAwRDBGQzMxIC8qIEV4
dGVuZGFibGVNZXNzYWdlRXZlbnQuaCAqLzsgfTsKQEAgLTkyNjksNiArOTI3MSw4IEBACiAJCTQ2
ODNERjNDMjc2N0RGMjYwMDdEMDBDOCAvKiBTaGFkb3dSZWFsbUdsb2JhbFNjb3BlLmlkbCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGgg
PSBTaGFkb3dSZWFsbUdsb2JhbFNjb3BlLmlkbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJNDY4M0RGM0QyNzY3REY5ODAwN0QwMEM4IC8qIEpTU2hhZG93UmVhbG1HbG9iYWxTY29wZUJh
c2UuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNTaGFkb3dSZWFs
bUdsb2JhbFNjb3BlQmFzZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQ2ODNE
RjNFMjc2N0RGOTgwMDdEMDBDOCAvKiBKU1NoYWRvd1JlYWxtR2xvYmFsU2NvcGVCYXNlLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTU2hhZG93UmVhbG1HbG9iYWxTY29wZUJh
c2UuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNDY4OEU5N0QyN0I2QjQ0MzAwNTY3
Q0QyIC8qIENvcmVMb2NhdGlvbkdlb2xvY2F0aW9uUHJvdmlkZXIubW0gKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7
IHBhdGggPSBDb3JlTG9jYXRpb25HZW9sb2NhdGlvblByb3ZpZGVyLm1tOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OworCQk0Njg4RTk3RjI3QjZCNDQ0MDA1NjdDRDIgLyogQ29yZUxvY2F0aW9u
R2VvbG9jYXRpb25Qcm92aWRlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBDb3JlTG9jYXRpb25HZW9sb2Nh
dGlvblByb3ZpZGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQ2ODhFRTNBMjZE
RDI2MEMwMDJBRjVDNCAvKiBDcm9zc09yaWdpbk1vZGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQ3Jvc3NP
cmlnaW5Nb2RlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQ2OEI4QkRFMjVDQzg0
OTMwMEY2NzgyMiAvKiBKU0Jhc2VBdWRpb0NvbnRleHRDdXN0b20uY3BwICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBw
YXRoID0gSlNCYXNlQXVkaW9Db250ZXh0Q3VzdG9tLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJNDY5NDNEQzcyNzYzRjgwRTAwNEI2MTBFIC8qIFNoYXJlZFdvcmtlck9iamVjdElk
ZW50aWZpZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU2hhcmVkV29ya2VyT2JqZWN0SWRlbnRpZmllci5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMTIxOTAsNyArMTIxOTQsNyBAQAogCQk4
Mzc4ODc4MTI0RDhBNUZDMDAwRDRBNUIgLyogQXVkaW9CdWZmZXJTb3VyY2VPcHRpb25zLmlkbCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBh
dGggPSBBdWRpb0J1ZmZlclNvdXJjZU9wdGlvbnMuaWRsOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQk4Mzc5MzYzQzFGQkJCMEE0MDBDODAyM0MgLyogU2VydmljZVdvcmtlckNsaWVudERh
dGEuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gU2VydmljZVdvcmtl
ckNsaWVudERhdGEuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk4Mzc5MzYzRTFG
QkJCMEE1MDBDODAyM0MgLyogU2VydmljZVdvcmtlckNsaWVudERhdGEuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gU2VydmljZVdvcmtlckNsaWVudERhdGEuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKLQkJODM3OTY0Q0UxRjhEQjY5QTAwMjE4RUEwIC8qIEdlb2xvY2F0
aW9uUG9zaXRpb25EYXRhSU9TLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBu
YW1lID0gR2VvbG9jYXRpb25Qb3NpdGlvbkRhdGFJT1MubW07IHBhdGggPSBNb2R1bGVzL2dlb2xv
Y2F0aW9uL2lvcy9HZW9sb2NhdGlvblBvc2l0aW9uRGF0YUlPUy5tbTsgc291cmNlVHJlZSA9IFNP
VVJDRV9ST09UOyB9OworCQk4Mzc5NjRDRTFGOERCNjlBMDAyMThFQTAgLyogR2VvbG9jYXRpb25Q
b3NpdGlvbkRhdGFDb2NvYS5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgbmFt
ZSA9IEdlb2xvY2F0aW9uUG9zaXRpb25EYXRhQ29jb2EubW07IHBhdGggPSBNb2R1bGVzL2dlb2xv
Y2F0aW9uL2NvY29hL0dlb2xvY2F0aW9uUG9zaXRpb25EYXRhQ29jb2EubW07IHNvdXJjZVRyZWUg
PSBTT1VSQ0VfUk9PVDsgfTsKIAkJODM3QTgwMTIxRTFFMTI3MzAwMDI2QjlGIC8qIGVuICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dC5wbGlzdC5z
dHJpbmdzZGljdDsgbmFtZSA9IGVuOyBwYXRoID0gZW4ubHByb2ovTG9jYWxpemFibGUuc3RyaW5n
c2RpY3Q7IHNvdXJjZVRyZWUgPSBTT1VSQ0VfUk9PVDsgfTsKIAkJODM3QjdEMUYxREMzRjU0QzAw
RDA1MUZDIC8qIFZhbGlkYXRpb25CdWJibGVJT1MubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5vYmpjcHA7IHBhdGggPSBWYWxpZGF0aW9uQnViYmxlSU9TLm1tOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQk4MzdDMEI3MzI0REIzODQyMDA1RDU5NTkgLyogRHluYW1pY3NDb21wcmVz
c29yT3B0aW9ucy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBEeW5hbWljc0NvbXByZXNzb3JPcHRpb25zLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0yMTYwNiw2ICsyMTYxMCwxNCBAQAogCQkJ
cGF0aCA9IGNvbnRleHQ7CiAJCQlzb3VyY2VUcmVlID0gIjxncm91cD4iOwogCQl9OworCQk0NjVD
M0QxOTI3Qjk5MUM4MDAyMTMwMkYgLyogY29jb2EgKi8gPSB7CisJCQlpc2EgPSBQQlhHcm91cDsK
KwkJCWNoaWxkcmVuID0gKAorCQkJCTgzNzk2NENFMUY4REI2OUEwMDIxOEVBMCAvKiBHZW9sb2Nh
dGlvblBvc2l0aW9uRGF0YUNvY29hLm1tICovLAorCQkJKTsKKwkJCXBhdGggPSBjb2NvYTsKKwkJ
CXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7CisJCX07CiAJCTQ2Njk0Q0RFMjc1OTQ0NkQwMEUzMTUw
RSAvKiBzaGFyZWQgKi8gPSB7CiAJCQlpc2EgPSBQQlhHcm91cDsKIAkJCWNoaWxkcmVuID0gKApA
QCAtMjUxMDMsMTQgKzI1MTE1LDYgQEAKIAkJCXBhdGggPSBiZWFjb247CiAJCQlzb3VyY2VUcmVl
ID0gIjxncm91cD4iOwogCQl9OwotCQk4Mzc5NjRDQzFGOERCNjdEMDAyMThFQTAgLyogaW9zICov
ID0gewotCQkJaXNhID0gUEJYR3JvdXA7Ci0JCQljaGlsZHJlbiA9ICgKLQkJCQk4Mzc5NjRDRTFG
OERCNjlBMDAyMThFQTAgLyogR2VvbG9jYXRpb25Qb3NpdGlvbkRhdGFJT1MubW0gKi8sCi0JCQkp
OwotCQkJbmFtZSA9IGlvczsKLQkJCXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7Ci0JCX07CiAJCTgz
RkIzMzY1MUY1MDhBMTcwMDk4NkU1NCAvKiBlbnRyaWVzYXBpICovID0gewogCQkJaXNhID0gUEJY
R3JvdXA7CiAJCQljaGlsZHJlbiA9ICgKQEAgLTI2MTIxLDcgKzI2MTI1LDcgQEAKIAkJOTcxMTQ1
RkYxNEVGMDA3OTAwNjc0RkQ5IC8qIGdlb2xvY2F0aW9uICovID0gewogCQkJaXNhID0gUEJYR3Jv
dXA7CiAJCQljaGlsZHJlbiA9ICgKLQkJCQk4Mzc5NjRDQzFGOERCNjdEMDAyMThFQTAgLyogaW9z
ICovLAorCQkJCTQ2NUMzRDE5MjdCOTkxQzgwMDIxMzAyRiAvKiBjb2NvYSAqLywKIAkJCQk5NzQ2
QUYxMzE0RjREREU2MDAzRTdBNzAgLyogR2VvbG9jYXRpb24uY3BwICovLAogCQkJCTk3NDZBRjE0
MTRGNERERTYwMDNFN0E3MCAvKiBHZW9sb2NhdGlvbi5oICovLAogCQkJCTk3NDZBRjE1MTRGNERE
RTYwMDNFN0E3MCAvKiBHZW9sb2NhdGlvbi5pZGwgKi8sCkBAIC0yNjgzMyw2ICsyNjgzNyw4IEBA
CiAJCQkJQzFGN0I3MkYyNDQ4RjJBQzAwMTI0NTU3IC8qIEFHWENvbXBpbGVyU2VydmljZS5jcHAg
Ki8sCiAJCQkJQzFGN0I3MzAyNDQ4RjJBQzAwMTI0NTU3IC8qIEFHWENvbXBpbGVyU2VydmljZS5o
ICovLAogCQkJCUExNDA5MEZBMUFBNTFFMUQwMDkxMTkxQSAvKiBDb250ZW50RmlsdGVyVW5ibG9j
a0hhbmRsZXJDb2NvYS5tbSAqLywKKwkJCQk0Njg4RTk3RjI3QjZCNDQ0MDA1NjdDRDIgLyogQ29y
ZUxvY2F0aW9uR2VvbG9jYXRpb25Qcm92aWRlci5oICovLAorCQkJCTQ2ODhFOTdEMjdCNkI0NDMw
MDU2N0NEMiAvKiBDb3JlTG9jYXRpb25HZW9sb2NhdGlvblByb3ZpZGVyLm1tICovLAogCQkJCUNE
N0QzMzQ1MUM3QTE2QkYwMDA0MTI5MyAvKiBDb3JlVmlkZW9Tb2Z0TGluay5jcHAgKi8sCiAJCQkJ
Q0Q3RDMzNDYxQzdBMTZCRjAwMDQxMjkzIC8qIENvcmVWaWRlb1NvZnRMaW5rLmggKi8sCiAJCQkJ
RjQ2MkU3OUYyNDJBREEzQzAwMjA0REREIC8qIERyYWdEYXRhQ29jb2EubW0gKi8sCkBAIC0zMzkx
OSw2ICszMzkyNSw3IEBACiAJCQkJM0Y4MDIwMzcxRTlFNDdDNTAwREVDNjFEIC8qIENvcmVBdWRp
b0NhcHR1cmVEZXZpY2VNYW5hZ2VyLmggaW4gSGVhZGVycyAqLywKIAkJCQk0MUZDQ0MzQjI3NDY2
NzU2MDA4OTJBRDYgLyogQ29yZUF1ZGlvQ2FwdHVyZVNvdXJjZS5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJMDdBRkY0MjIxRUZCMTQ0OTAwQjU0NUIzIC8qIENvcmVBdWRpb0NhcHR1cmVTb3VyY2VJT1Mu
aCBpbiBIZWFkZXJzICovLAorCQkJCTQ2ODhFOTgwMjdCNkI0NTAwMDU2N0NEMiAvKiBDb3JlTG9j
YXRpb25HZW9sb2NhdGlvblByb3ZpZGVyLmggaW4gSGVhZGVycyAqLywKIAkJCQlDRDdEMzM0ODFD
N0ExNkJGMDAwNDEyOTMgLyogQ29yZVZpZGVvU29mdExpbmsuaCBpbiBIZWFkZXJzICovLAogCQkJ
CTg2MkYxMjlFMThDMTU3NkYwMDVDNTRBRiAvKiBDb3VudGVkVXNlckFjdGl2aXR5LmggaW4gSGVh
ZGVycyAqLywKIAkJCQlBODBFNkQwNDBBMTk4OUNBMDA3RkI4QzUgLyogQ291bnRlci5oIGluIEhl
YWRlcnMgKi8sCkBAIC0zODY5MiwxMyArMzg2OTksMTQgQEAKIAkJCQk1MThGNEZGNjE5NENBNEU2
MDA4MUJBQUUgLyogR2FtZXBhZEJ1dHRvbi5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk1MTZDNjIy
MDE5NTBENDg3MDAzMzdFNzUgLyogR2FtZXBhZEV2ZW50LmNwcCBpbiBTb3VyY2VzICovLAogCQkJ
CTUxQTlEOUU5MTk1QjkzMUYwMDFCMkI1QyAvKiBHYW1lcGFkTWFuYWdlci5jcHAgaW4gU291cmNl
cyAqLywKLQkJCQk4Mzc5NjRDRjFGOERCNjlEMDAyMThFQTAgLyogR2VvbG9jYXRpb25Qb3NpdGlv
bkRhdGFJT1MubW0gaW4gU291cmNlcyAqLywKKwkJCQk4Mzc5NjRDRjFGOERCNjlEMDAyMThFQTAg
LyogR2VvbG9jYXRpb25Qb3NpdGlvbkRhdGFDb2NvYS5tbSBpbiBTb3VyY2VzICovLAogCQkJCTZF
NzJGNTRFMjI5RENEMTAwMEIzRTE1MSAvKiBHcmFwaGljc0NvbnRleHRHTEFOR0xFLmNwcCBpbiBT
b3VyY2VzICovLAogCQkJCTdDM0U1MTBCMThERjhGMzUwMEMxMTJGNyAvKiBIVE1MQ29udmVydGVy
Lm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJQThEMDZCM0EwQTI2NURDRDAwNUU3MjAzIC8qIEhUTUxO
YW1lcy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkxQUM5MDBDMzE5NDNDMEZDMDA4NjI1QjUgLyog
SFRUUEhlYWRlck5hbWVzLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUNEMjdBRTUxMjJBOTg2ODcw
MDk0N0ZGOSAvKiBJbWFnZVJvdGF0aW9uU2Vzc2lvblZULm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJ
MDcwRTJEMEYyNkYyNTA4OTAwMTRBQUMzIC8qIEluYmFuZENoYXB0ZXJUcmFja1ByaXZhdGVBVkZP
YmpDLm1tIGluIFNvdXJjZXMgKi8sCisJCQkJNDZDQTk0MzEyN0I4Njk1ODAwRjRGNUZGIC8qIElu
YmFuZFRleHRUcmFja1ByaXZhdGVBVkZPYmpDLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJQ0QwNjNG
ODIxRTIzRkE4OTAwODEyQkUzIC8qIEluaXREYXRhUmVnaXN0cnkuY3BwIGluIFNvdXJjZXMgKi8s
CiAJCQkJOTM1QzQ3NzAwOUFDNEQ3MzAwQTZBQUI0IC8qIEtleUV2ZW50TWFjLm1tIGluIFNvdXJj
ZXMgKi8sCiAJCQkJQ0RBOThFMEIxNjAzQ0Q2MDAwRkVBM0IxIC8qIExlZ2FjeUNETS5jcHAgaW4g
U291cmNlcyAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuY3BwCmluZGV4IDZhODVlODQzZDhiYmUzZDE5MmQ5N2Y0
OTZiZDdlYjQ1NDc0OWRiYTQuLmVmZTBlMzgwNmRjODQ4MDMwZDIyYjlkOTAyOTE2NzkzMzg1YmZk
YWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcGFnZS9QYWdlLmNwcApAQCAtNjksNiArNjksNyBAQAogI2luY2x1ZGUgIkZyYW1l
VHJlZS5oIgogI2luY2x1ZGUgIkZyYW1lVmlldy5oIgogI2luY2x1ZGUgIkZ1bGxzY3JlZW5NYW5h
Z2VyLmgiCisjaW5jbHVkZSAiR2VvbG9jYXRpb25Db250cm9sbGVyLmgiCiAjaW5jbHVkZSAiSFRN
TEVsZW1lbnQuaCIKICNpbmNsdWRlICJIVE1MSW1hZ2VFbGVtZW50LmgiCiAjaW5jbHVkZSAiSFRN
TE1lZGlhRWxlbWVudC5oIgpAQCAtMTMzMiw2ICsxMzMzLDExIEBAIHZvaWQgUGFnZTo6ZGlkQ29t
bWl0TG9hZCgpCiAgICAgcmVzZXRUZXh0UmVjb2duaXRpb25SZXN1bHRzKCk7CiAgICAgcmVzZXRJ
bWFnZUFuYWx5c2lzUXVldWUoKTsKICNlbmRpZgorCisjaWYgRU5BQkxFKEdFT0xPQ0FUSU9OKQor
ICAgIGlmIChhdXRvKiBnZW9sb2NhdGlvbkNvbnRyb2xsZXIgPSBHZW9sb2NhdGlvbkNvbnRyb2xs
ZXI6OmZyb20odGhpcykpCisgICAgICAgIGdlb2xvY2F0aW9uQ29udHJvbGxlci0+ZGlkTmF2aWdh
dGVQYWdlKCk7CisjZW5kaWYKIH0KIAogdm9pZCBQYWdlOjpkaWRGaW5pc2hMb2FkKCkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL0NvcmVMb2NhdGlvbkdlb2xvY2F0
aW9uUHJvdmlkZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL0NvcmVMb2NhdGlv
bkdlb2xvY2F0aW9uUHJvdmlkZXIuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5jNTI0NmM4ODRhY2Y4ZjY5ZmNiOGY4
YWM0YWNjN2Y0Y2RlNjQ1Y2VkCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vY29jb2EvQ29yZUxvY2F0aW9uR2VvbG9jYXRpb25Qcm92aWRlci5oCkBAIC0wLDAgKzEs
NjcgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICog
MS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisg
KiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQ
TEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAor
ICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQg
U0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisg
KiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQ
Uk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICog
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgPHd0Zi9Db21wbGV0
aW9uSGFuZGxlci5oPgorI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CisjaW5jbHVkZSA8d3RmL1Jl
dGFpblB0ci5oPgorCitPQkpDX0NMQVNTIFdlYkNMTG9jYXRpb25NYW5hZ2VyOworCituYW1lc3Bh
Y2UgV2ViQ29yZSB7CisKK2NsYXNzIEdlb2xvY2F0aW9uUG9zaXRpb25EYXRhOworY2xhc3MgUmVn
aXN0cmFibGVEb21haW47CisKK2NsYXNzIFdFQkNPUkVfRVhQT1JUIENvcmVMb2NhdGlvbkdlb2xv
Y2F0aW9uUHJvdmlkZXIgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOworcHVibGljOgor
ICAgIGNsYXNzIENsaWVudCB7CisgICAgcHVibGljOgorICAgICAgICB2aXJ0dWFsIH5DbGllbnQo
KSB7IH0KKworICAgICAgICB2aXJ0dWFsIHZvaWQgZ2VvbG9jYXRpb25BdXRob3JpemF0aW9uR3Jh
bnRlZChjb25zdCBTdHJpbmcmIC8qd2Vic2l0ZUlkZW50aWZpZXIqLykgeyB9CisgICAgICAgIHZp
cnR1YWwgdm9pZCBnZW9sb2NhdGlvbkF1dGhvcml6YXRpb25EZW5pZWQoY29uc3QgU3RyaW5nJiAv
KndlYnNpdGVJZGVudGlmaWVyKi8pIHsgfQorICAgICAgICB2aXJ0dWFsIHZvaWQgcG9zaXRpb25D
aGFuZ2VkKGNvbnN0IFN0cmluZyYgd2Vic2l0ZUlkZW50aWZpZXIsIEdlb2xvY2F0aW9uUG9zaXRp
b25EYXRhJiYpID0gMDsKKyAgICAgICAgdmlydHVhbCB2b2lkIGVycm9yT2NjdXJyZWQoY29uc3Qg
U3RyaW5nJiB3ZWJzaXRlSWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiBlcnJvck1lc3NhZ2UpID0g
MDsKKyAgICAgICAgdmlydHVhbCB2b2lkIHJlc2V0R2VvbG9jYXRpb24oY29uc3QgU3RyaW5nJiB3
ZWJzaXRlSWRlbnRpZmllcikgPSAwOworICAgIH07CisKKyAgICBDb3JlTG9jYXRpb25HZW9sb2Nh
dGlvblByb3ZpZGVyKGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiwgQ2xpZW50Jik7CisgICAgfkNv
cmVMb2NhdGlvbkdlb2xvY2F0aW9uUHJvdmlkZXIoKTsKKworICAgIHZvaWQgc3RhcnQoKTsKKyAg
ICB2b2lkIHN0b3AoKTsKKworICAgIHZvaWQgc2V0RW5hYmxlSGlnaEFjY3VyYWN5KGJvb2wpOwor
CisgICAgc3RhdGljIHZvaWQgcmVxdWVzdEF1dGhvcml6YXRpb24oY29uc3QgUmVnaXN0cmFibGVE
b21haW4mLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmKTsKKworcHJpdmF0ZToKKyAg
ICBSZXRhaW5QdHI8V2ViQ0xMb2NhdGlvbk1hbmFnZXI+IG1fbG9jYXRpb25NYW5hZ2VyOworfTsK
KworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vY29jb2EvQ29yZUxvY2F0aW9uR2VvbG9jYXRpb25Qcm92aWRlci5tbSBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2NvY29hL0NvcmVMb2NhdGlvbkdlb2xvY2F0aW9uUHJvdmlkZXIubW0K
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uNzc2MzZkMjYwNGJiMmZiMzk3MzM2Y2EzYjFiZGQ2YjVlZTEzZGNmMgotLS0g
L2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL0NvcmVMb2NhdGlv
bkdlb2xvY2F0aW9uUHJvdmlkZXIubW0KQEAgLTAsMCArMSwyNjEgQEAKKy8qCisgKiBDb3B5cmln
aHQgKEMpIDIwMjIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
KyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoK
KyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRS
SUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICog
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJ
VFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7
IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkg
VEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisj
aW1wb3J0ICJjb25maWcuaCIKKyNpbXBvcnQgIkNvcmVMb2NhdGlvbkdlb2xvY2F0aW9uUHJvdmlk
ZXIuaCIKKworI2ltcG9ydCAiR2VvbG9jYXRpb25Qb3NpdGlvbkRhdGEuaCIKKyNpbXBvcnQgIlJl
Z2lzdHJhYmxlRG9tYWluLmgiCisjaW1wb3J0IDxDb3JlTG9jYXRpb24vQ0xMb2NhdGlvbk1hbmFn
ZXJEZWxlZ2F0ZS5oPgorI2ltcG9ydCA8Q29yZUxvY2F0aW9uL0NvcmVMb2NhdGlvbi5oPgorI2lt
cG9ydCA8d3RmL1NvZnRMaW5raW5nLmg+CisKKyNpZiBVU0UoQVBQTEVfSU5URVJOQUxfU0RLKQor
I2ltcG9ydCA8Q29yZUxvY2F0aW9uL0NMTG9jYXRpb25NYW5hZ2VyX1ByaXZhdGUuaD4KKyNlbmRp
ZgorCitTT0ZUX0xJTktfRlJBTUVXT1JLKENvcmVMb2NhdGlvbikKKworU09GVF9MSU5LX0NMQVNT
KENvcmVMb2NhdGlvbiwgQ0xMb2NhdGlvbk1hbmFnZXIpCitTT0ZUX0xJTktfQ0xBU1MoQ29yZUxv
Y2F0aW9uLCBDTExvY2F0aW9uKQorCitTT0ZUX0xJTktfQ09OU1RBTlQoQ29yZUxvY2F0aW9uLCBr
Q0xMb2NhdGlvbkFjY3VyYWN5QmVzdCwgZG91YmxlKQorU09GVF9MSU5LX0NPTlNUQU5UKENvcmVM
b2NhdGlvbiwga0NMTG9jYXRpb25BY2N1cmFjeUh1bmRyZWRNZXRlcnMsIGRvdWJsZSkKKworI2Rl
ZmluZSBrQ0xMb2NhdGlvbkFjY3VyYWN5QmVzdCBnZXRrQ0xMb2NhdGlvbkFjY3VyYWN5QmVzdCgp
CisjZGVmaW5lIGtDTExvY2F0aW9uQWNjdXJhY3lIdW5kcmVkTWV0ZXJzIGdldGtDTExvY2F0aW9u
QWNjdXJhY3lIdW5kcmVkTWV0ZXJzKCkKKworc3RhdGljIGJvb2wgaXNBdXRob3JpemF0aW9uR3Jh
bnRlZChDTEF1dGhvcml6YXRpb25TdGF0dXMgYXV0aG9yaXphdGlvblN0YXR1cykKK3sKKyAgICBy
ZXR1cm4gYXV0aG9yaXphdGlvblN0YXR1cyA9PSBrQ0xBdXRob3JpemF0aW9uU3RhdHVzQXV0aG9y
aXplZEFsd2F5cyB8fCBhdXRob3JpemF0aW9uU3RhdHVzID09IGtDTEF1dGhvcml6YXRpb25TdGF0
dXNBdXRob3JpemVkV2hlbkluVXNlOworfQorCitAaW50ZXJmYWNlIFdlYkNMTG9jYXRpb25NYW5h
Z2VyIDogTlNPYmplY3Q8Q0xMb2NhdGlvbk1hbmFnZXJEZWxlZ2F0ZT4KK0BlbmQKKworQGltcGxl
bWVudGF0aW9uIFdlYkNMTG9jYXRpb25NYW5hZ2VyIHsKKyAgICBSZXRhaW5QdHI8Q0xMb2NhdGlv
bk1hbmFnZXI+IF9sb2NhdGlvbk1hbmFnZXI7CisgICAgV2ViQ29yZTo6Q29yZUxvY2F0aW9uR2Vv
bG9jYXRpb25Qcm92aWRlcjo6Q2xpZW50KiBfY2xpZW50OworICAgIFN0cmluZyBfd2Vic2l0ZUlk
ZW50aWZpZXI7CisgICAgQk9PTCBfaXNXYWl0aW5nRm9yQXV0aG9yaXphdGlvbjsKK30KKworLSAo
aW5zdGFuY2V0eXBlKWluaXRXaXRoV2Vic2l0ZUlkZW50aWZpZXI6KGNvbnN0IFN0cmluZyYpd2Vi
c2l0ZUlkZW50aWZpZXIgY2xpZW50OihXZWJDb3JlOjpDb3JlTG9jYXRpb25HZW9sb2NhdGlvblBy
b3ZpZGVyOjpDbGllbnQmKWNsaWVudAoreworICAgIHNlbGYgPSBbc3VwZXIgaW5pdF07CisgICAg
aWYgKCFzZWxmKQorICAgICAgICByZXR1cm4gbmlsOworCisgICAgLy8gRklYTUU6IENhbGwgaW5p
dFdpdGhXZWJzaXRlSWRlbnRpZmllciBhbmQgcGFzcyB0aGUgd2Vic2l0ZUlkZW50aWZpZXIgd2hl
biBIQVZFKENPUkVfTE9DQVRJT05fV0VCU0lURV9JREVOVElGSUVSUykgb25jZSA8cmRhcjovLzg4
ODM0MzAxID4gaXMgZml4ZWQuCisgICAgVU5VU0VEX1BBUkFNKHdlYnNpdGVJZGVudGlmaWVyKTsK
KyAgICBfbG9jYXRpb25NYW5hZ2VyID0gYWRvcHROUyhbYWxsb2NDTExvY2F0aW9uTWFuYWdlcklu
c3RhbmNlKCkgaW5pdF0pOworICAgIF9jbGllbnQgPSAmY2xpZW50OworICAgIF93ZWJzaXRlSWRl
bnRpZmllciA9IHdlYnNpdGVJZGVudGlmaWVyOworICAgIFtfbG9jYXRpb25NYW5hZ2VyIHNldERl
bGVnYXRlOnNlbGZdOworICAgIHJldHVybiBzZWxmOworfQorCistICh2b2lkKWRlYWxsb2MKK3sK
KyAgICBbX2xvY2F0aW9uTWFuYWdlciBzZXREZWxlZ2F0ZTpuaWxdOworICAgIFtzdXBlciBkZWFs
bG9jXTsKK30KKworLSAodm9pZClzdGFydAoreworICAgIGlmICghW2dldENMTG9jYXRpb25NYW5h
Z2VyQ2xhc3MoKSBsb2NhdGlvblNlcnZpY2VzRW5hYmxlZF0gfHwgIWlzQXV0aG9yaXphdGlvbkdy
YW50ZWQoW19sb2NhdGlvbk1hbmFnZXIgYXV0aG9yaXphdGlvblN0YXR1c10pKSB7CisgICAgICAg
IFtfbG9jYXRpb25NYW5hZ2VyIHN0b3BVcGRhdGluZ0xvY2F0aW9uXTsKKyAgICAgICAgX2NsaWVu
dC0+cmVzZXRHZW9sb2NhdGlvbihfd2Vic2l0ZUlkZW50aWZpZXIpOworICAgICAgICByZXR1cm47
CisgICAgfQorCisgICAgW19sb2NhdGlvbk1hbmFnZXIgc3RhcnRVcGRhdGluZ0xvY2F0aW9uXTsK
K30KKworLSAodm9pZClzdG9wCit7CisgICAgW19sb2NhdGlvbk1hbmFnZXIgc3RvcFVwZGF0aW5n
TG9jYXRpb25dOworfQorCistICh2b2lkKXNldEVuYWJsZUhpZ2hBY2N1cmFjeTooQk9PTCloaWdo
QWNjdXJhY3lFbmFibGVkCit7CisgICAgW19sb2NhdGlvbk1hbmFnZXIgc2V0RGVzaXJlZEFjY3Vy
YWN5OmhpZ2hBY2N1cmFjeUVuYWJsZWQgPyBrQ0xMb2NhdGlvbkFjY3VyYWN5QmVzdCA6IGtDTExv
Y2F0aW9uQWNjdXJhY3lIdW5kcmVkTWV0ZXJzXTsKK30KKworLSAodm9pZClyZXF1ZXN0R2VvbG9j
YXRpb25BdXRob3JpemF0aW9uCit7CisgICAgaWYgKCFbZ2V0Q0xMb2NhdGlvbk1hbmFnZXJDbGFz
cygpIGxvY2F0aW9uU2VydmljZXNFbmFibGVkXSkgeworICAgICAgICBfY2xpZW50LT5nZW9sb2Nh
dGlvbkF1dGhvcml6YXRpb25EZW5pZWQoX3dlYnNpdGVJZGVudGlmaWVyKTsKKyAgICAgICAgcmV0
dXJuOworICAgIH0KKworICAgIHN3aXRjaCAoW19sb2NhdGlvbk1hbmFnZXIgYXV0aG9yaXphdGlv
blN0YXR1c10pIHsKKyAgICBjYXNlIGtDTEF1dGhvcml6YXRpb25TdGF0dXNOb3REZXRlcm1pbmVk
OiB7CisgICAgICAgIGlmICghX2lzV2FpdGluZ0ZvckF1dGhvcml6YXRpb24pIHsKKyAgICAgICAg
ICAgIF9pc1dhaXRpbmdGb3JBdXRob3JpemF0aW9uID0gWUVTOworICAgICAgICAgICAgW19sb2Nh
dGlvbk1hbmFnZXIgcmVxdWVzdFdoZW5JblVzZUF1dGhvcml6YXRpb25dOworICAgICAgICB9Cisg
ICAgICAgIGJyZWFrOworICAgIH0KKyAgICBjYXNlIGtDTEF1dGhvcml6YXRpb25TdGF0dXNBdXRo
b3JpemVkQWx3YXlzOgorICAgIGNhc2Uga0NMQXV0aG9yaXphdGlvblN0YXR1c0F1dGhvcml6ZWRX
aGVuSW5Vc2U6IHsKKyAgICAgICAgX2NsaWVudC0+Z2VvbG9jYXRpb25BdXRob3JpemF0aW9uR3Jh
bnRlZChfd2Vic2l0ZUlkZW50aWZpZXIpOworICAgICAgICBicmVhazsKKyAgICB9CisgICAgY2Fz
ZSBrQ0xBdXRob3JpemF0aW9uU3RhdHVzUmVzdHJpY3RlZDoKKyAgICBjYXNlIGtDTEF1dGhvcml6
YXRpb25TdGF0dXNEZW5pZWQ6CisgICAgICAgIF9jbGllbnQtPmdlb2xvY2F0aW9uQXV0aG9yaXph
dGlvbkRlbmllZChfd2Vic2l0ZUlkZW50aWZpZXIpOworICAgICAgICBicmVhazsKKyAgICB9Cit9
CisKKy0gKHZvaWQpbG9jYXRpb25NYW5hZ2VyRGlkQ2hhbmdlQXV0aG9yaXphdGlvbjooQ0xMb2Nh
dGlvbk1hbmFnZXIgKiltYW5hZ2VyCit7CisgICAgYXV0byBzdGF0dXMgPSBbX2xvY2F0aW9uTWFu
YWdlciBhdXRob3JpemF0aW9uU3RhdHVzXTsKKyAgICBpZiAoX2lzV2FpdGluZ0ZvckF1dGhvcml6
YXRpb24pIHsKKyAgICAgICAgc3dpdGNoIChzdGF0dXMpIHsKKyAgICAgICAgY2FzZSBrQ0xBdXRo
b3JpemF0aW9uU3RhdHVzTm90RGV0ZXJtaW5lZDoKKyAgICAgICAgICAgIC8vIFRoaXMgY2FuIGhh
cHBlbiBhZnRlciByZXN1bWUgaWYgdGhlIHVzZXIgaGFzIHN0aWxsIG5vdCBhbnN3ZXJlZCB0aGUg
ZGlhbG9nLiBXZSBqdXN0IGhhdmUgdG8gd2FpdCBmb3IgdGhlIHBlcm1pc3Npb24uCisgICAgICAg
ICAgICBicmVhazsKKyAgICAgICAgY2FzZSBrQ0xBdXRob3JpemF0aW9uU3RhdHVzRGVuaWVkOgor
ICAgICAgICBjYXNlIGtDTEF1dGhvcml6YXRpb25TdGF0dXNSZXN0cmljdGVkOgorICAgICAgICAg
ICAgX2lzV2FpdGluZ0ZvckF1dGhvcml6YXRpb24gPSBOTzsKKyAgICAgICAgICAgIF9jbGllbnQt
Pmdlb2xvY2F0aW9uQXV0aG9yaXphdGlvbkRlbmllZChfd2Vic2l0ZUlkZW50aWZpZXIpOworICAg
ICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2Uga0NMQXV0aG9yaXphdGlvblN0YXR1c0F1dGhv
cml6ZWRBbHdheXM6CisgICAgICAgIGNhc2Uga0NMQXV0aG9yaXphdGlvblN0YXR1c0F1dGhvcml6
ZWRXaGVuSW5Vc2U6CisgICAgICAgICAgICBfaXNXYWl0aW5nRm9yQXV0aG9yaXphdGlvbiA9IE5P
OworICAgICAgICAgICAgX2NsaWVudC0+Z2VvbG9jYXRpb25BdXRob3JpemF0aW9uR3JhbnRlZChf
d2Vic2l0ZUlkZW50aWZpZXIpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKyAgICB9
IGVsc2UgeworICAgICAgICBpZiAoc3RhdHVzID09IGtDTEF1dGhvcml6YXRpb25TdGF0dXNEZW5p
ZWQgfHwgc3RhdHVzID09IGtDTEF1dGhvcml6YXRpb25TdGF0dXNSZXN0cmljdGVkKSB7CisgICAg
ICAgICAgICBbX2xvY2F0aW9uTWFuYWdlciBzdG9wVXBkYXRpbmdMb2NhdGlvbl07CisgICAgICAg
ICAgICBfY2xpZW50LT5yZXNldEdlb2xvY2F0aW9uKF93ZWJzaXRlSWRlbnRpZmllcik7CisgICAg
ICAgIH0KKyAgICB9Cit9CisKKy0gKHZvaWQpbG9jYXRpb25NYW5hZ2VyOihDTExvY2F0aW9uTWFu
YWdlciAqKW1hbmFnZXIgZGlkVXBkYXRlTG9jYXRpb25zOihOU0FycmF5ICopbG9jYXRpb25zCit7
CisgICAgVU5VU0VEX1BBUkFNKG1hbmFnZXIpOworICAgIGZvciAoQ0xMb2NhdGlvbiAqbG9jYXRp
b24gaW4gbG9jYXRpb25zKQorICAgICAgICBfY2xpZW50LT5wb3NpdGlvbkNoYW5nZWQoX3dlYnNp
dGVJZGVudGlmaWVyLCBXZWJDb3JlOjpHZW9sb2NhdGlvblBvc2l0aW9uRGF0YSB7IGxvY2F0aW9u
IH0pOworfQorCistICh2b2lkKWxvY2F0aW9uTWFuYWdlcjooQ0xMb2NhdGlvbk1hbmFnZXIgKilt
YW5hZ2VyIGRpZEZhaWxXaXRoRXJyb3I6KE5TRXJyb3IgKillcnJvcgoreworICAgIEFTU0VSVChl
cnJvcik7CisgICAgVU5VU0VEX1BBUkFNKG1hbmFnZXIpOworCisgICAgaWYgKFtlcnJvciBjb2Rl
XSA9PSBrQ0xFcnJvckRlbmllZCkgeworICAgICAgICAvLyBJZ25vcmUgdGhlIGVycm9yIGhlcmUg
YW5kIGxldCBsb2NhdGlvbk1hbmFnZXI6ZGlkQ2hhbmdlQXV0aG9yaXphdGlvblN0YXR1czogaGFu
ZGxlIHRoZSBwZXJtaXNzaW9uLgorICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgTlNTdHJp
bmcgKmVycm9yTWVzc2FnZSA9IFtlcnJvciBsb2NhbGl6ZWREZXNjcmlwdGlvbl07CisgICAgX2Ns
aWVudC0+ZXJyb3JPY2N1cnJlZChfd2Vic2l0ZUlkZW50aWZpZXIsIGVycm9yTWVzc2FnZSk7Cit9
CisKK0BlbmQKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitDb3JlTG9jYXRpb25HZW9sb2NhdGlv
blByb3ZpZGVyOjpDb3JlTG9jYXRpb25HZW9sb2NhdGlvblByb3ZpZGVyKGNvbnN0IFJlZ2lzdHJh
YmxlRG9tYWluJiByZWdpc3RyYWJsZURvbWFpbiwgQ2xpZW50JiBjbGllbnQpCisgICAgOiBtX2xv
Y2F0aW9uTWFuYWdlcihhZG9wdE5TKFtbV2ViQ0xMb2NhdGlvbk1hbmFnZXIgYWxsb2NdIGluaXRX
aXRoV2Vic2l0ZUlkZW50aWZpZXI6cmVnaXN0cmFibGVEb21haW4uc3RyaW5nKCkgY2xpZW50OmNs
aWVudF0pKQoreworICAgIC8vIFJlcXVlc3QgcGVybWlzc2lvbiBmb3IgdGhlIGFwcCB0byB1c2Ug
Z2VvbG9jYXRpb24gKGlmIGl0IGRvZXNuJ3QgYWxyZWFkeSkuCisgICAgW21fbG9jYXRpb25NYW5h
Z2VyIHJlcXVlc3RHZW9sb2NhdGlvbkF1dGhvcml6YXRpb25dOworfQorCitDb3JlTG9jYXRpb25H
ZW9sb2NhdGlvblByb3ZpZGVyOjp+Q29yZUxvY2F0aW9uR2VvbG9jYXRpb25Qcm92aWRlcigpCit7
CisgICAgW21fbG9jYXRpb25NYW5hZ2VyIHN0b3BdOworfQorCit2b2lkIENvcmVMb2NhdGlvbkdl
b2xvY2F0aW9uUHJvdmlkZXI6OnN0YXJ0KCkKK3sKKyAgICBbbV9sb2NhdGlvbk1hbmFnZXIgc3Rh
cnRdOworfQorCit2b2lkIENvcmVMb2NhdGlvbkdlb2xvY2F0aW9uUHJvdmlkZXI6OnN0b3AoKQor
eworICAgIFttX2xvY2F0aW9uTWFuYWdlciBzdG9wXTsKK30KKwordm9pZCBDb3JlTG9jYXRpb25H
ZW9sb2NhdGlvblByb3ZpZGVyOjpzZXRFbmFibGVIaWdoQWNjdXJhY3koYm9vbCBoaWdoQWNjdXJh
Y3lFbmFibGVkKQoreworICAgIFttX2xvY2F0aW9uTWFuYWdlciBzZXRFbmFibGVIaWdoQWNjdXJh
Y3k6aGlnaEFjY3VyYWN5RW5hYmxlZF07Cit9CisKK2NsYXNzIEF1dGhvcml6YXRpb25DaGVja2Vy
IGZpbmFsIDogcHVibGljIFJlZkNvdW50ZWQ8QXV0aG9yaXphdGlvbkNoZWNrZXI+LCBwdWJsaWMg
Q29yZUxvY2F0aW9uR2VvbG9jYXRpb25Qcm92aWRlcjo6Q2xpZW50IHsKK3B1YmxpYzoKKyAgICBz
dGF0aWMgUmVmPEF1dGhvcml6YXRpb25DaGVja2VyPiBjcmVhdGUoKQorICAgIHsKKyAgICAgICAg
cmV0dXJuIGFkb3B0UmVmKCpuZXcgQXV0aG9yaXphdGlvbkNoZWNrZXIpOworICAgIH0KKworICAg
IHZvaWQgY2hlY2soY29uc3QgUmVnaXN0cmFibGVEb21haW4mIHJlZ2lzdHJhYmxlRG9tYWluLCBD
b21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQorICAgIHsK
KyAgICAgICAgbV9jb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIp
OworICAgICAgICBtX3Byb3ZpZGVyID0gbWFrZVVuaXF1ZTxDb3JlTG9jYXRpb25HZW9sb2NhdGlv
blByb3ZpZGVyPihyZWdpc3RyYWJsZURvbWFpbiwgKnRoaXMpOworICAgIH0KKworcHJpdmF0ZToK
KyAgICBBdXRob3JpemF0aW9uQ2hlY2tlcigpID0gZGVmYXVsdDsKKworICAgIHZvaWQgZ2VvbG9j
YXRpb25BdXRob3JpemF0aW9uR3JhbnRlZChjb25zdCBTdHJpbmcmKSBmaW5hbAorICAgIHsKKyAg
ICAgICAgaWYgKG1fY29tcGxldGlvbkhhbmRsZXIpCisgICAgICAgICAgICBtX2NvbXBsZXRpb25I
YW5kbGVyKHRydWUpOworICAgIH0KKworICAgIHZvaWQgZ2VvbG9jYXRpb25BdXRob3JpemF0aW9u
RGVuaWVkKGNvbnN0IFN0cmluZyYpIGZpbmFsCisgICAgeworICAgICAgICBpZiAobV9jb21wbGV0
aW9uSGFuZGxlcikKKyAgICAgICAgICAgIG1fY29tcGxldGlvbkhhbmRsZXIoZmFsc2UpOworICAg
IH0KKworICAgIHZvaWQgcG9zaXRpb25DaGFuZ2VkKGNvbnN0IFN0cmluZyYsIEdlb2xvY2F0aW9u
UG9zaXRpb25EYXRhJiYpIGZpbmFsIHsgfQorICAgIHZvaWQgZXJyb3JPY2N1cnJlZChjb25zdCBT
dHJpbmcmLCBjb25zdCBTdHJpbmcmKSBmaW5hbAorICAgIHsKKyAgICAgICAgaWYgKG1fY29tcGxl
dGlvbkhhbmRsZXIpCisgICAgICAgICAgICBtX2NvbXBsZXRpb25IYW5kbGVyKGZhbHNlKTsKKyAg
ICB9CisgICAgdm9pZCByZXNldEdlb2xvY2F0aW9uKGNvbnN0IFN0cmluZyYpIGZpbmFsIHsgfQor
CisgICAgc3RkOjp1bmlxdWVfcHRyPENvcmVMb2NhdGlvbkdlb2xvY2F0aW9uUHJvdmlkZXI+IG1f
cHJvdmlkZXI7CisgICAgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4gbV9jb21wbGV0aW9u
SGFuZGxlcjsKK307CisKK3ZvaWQgQ29yZUxvY2F0aW9uR2VvbG9jYXRpb25Qcm92aWRlcjo6cmVx
dWVzdEF1dGhvcml6YXRpb24oY29uc3QgUmVnaXN0cmFibGVEb21haW4mIHJlZ2lzdHJhYmxlRG9t
YWluLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQor
eworICAgIGF1dG8gYXV0aG9yaXphdGlvbkNoZWNrZXIgPSBBdXRob3JpemF0aW9uQ2hlY2tlcjo6
Y3JlYXRlKCk7CisgICAgYXV0aG9yaXphdGlvbkNoZWNrZXItPmNoZWNrKHJlZ2lzdHJhYmxlRG9t
YWluLCBbYXV0aG9yaXphdGlvbkNoZWNrZXIsIGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShj
b21wbGV0aW9uSGFuZGxlcildKGJvb2wgYXV0aG9yaXplZCkgbXV0YWJsZSB7CisgICAgICAgIGNv
bXBsZXRpb25IYW5kbGVyKGF1dGhvcml6ZWQpOworICAgIH0pOworfQorCit9IC8vIG5hbWVzcGFj
ZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL0dlb2xv
Y2F0aW9uQ2xpZW50TW9jay5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL0dlb2xv
Y2F0aW9uQ2xpZW50TW9jay5jcHAKaW5kZXggOWQ1ZWZjODNmMzRlYjE4ZDU5OWRjMTBjYWE4ZmMw
Y2EzOTlkYjBhMi4uZmE0MjA4MmU1MDU5YTllY2YyNjRjYWFmNGMyNjUzMmY0YjJlNWQ3YSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9HZW9sb2NhdGlvbkNsaWVudE1v
Y2suY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svR2VvbG9jYXRpb25DbGll
bnRNb2NrLmNwcApAQCAtMTM2LDEwICsxMzYsMTEgQEAgdm9pZCBHZW9sb2NhdGlvbkNsaWVudE1v
Y2s6Omdlb2xvY2F0aW9uRGVzdHJveWVkKCkKICAgICBBU1NFUlQoIW1faXNBY3RpdmUpOwogfQog
Ci12b2lkIEdlb2xvY2F0aW9uQ2xpZW50TW9jazo6c3RhcnRVcGRhdGluZyhjb25zdCBTdHJpbmcm
IGF1dGhvcml6YXRpb25Ub2tlbikKK3ZvaWQgR2VvbG9jYXRpb25DbGllbnRNb2NrOjpzdGFydFVw
ZGF0aW5nKGNvbnN0IFN0cmluZyYgYXV0aG9yaXphdGlvblRva2VuLCBib29sIGVuYWJsZUhpZ2hB
Y2N1cmFjeSkKIHsKICAgICBBU1NFUlQoIW1faXNBY3RpdmUpOwogICAgIFVOVVNFRF9QQVJBTShh
dXRob3JpemF0aW9uVG9rZW4pOworICAgIFVOVVNFRF9QQVJBTShlbmFibGVIaWdoQWNjdXJhY3kp
OwogICAgIG1faXNBY3RpdmUgPSB0cnVlOwogICAgIGFzeW5jVXBkYXRlQ29udHJvbGxlcigpOwog
fQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9HZW9sb2NhdGlvbkNs
aWVudE1vY2suaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svR2VvbG9jYXRpb25DbGll
bnRNb2NrLmgKaW5kZXggMmZhNzVlMDU3YTUzZDdlODE4Y2NmYWZlZTcwMjQzZGQ1NDgyMTg0NS4u
ZjhiYWMzOGI1YjZjY2M4Y2MwOGY4NzA3MWViYzc1ZDY1YjMxMDY0MCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9HZW9sb2NhdGlvbkNsaWVudE1vY2suaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL0dlb2xvY2F0aW9uQ2xpZW50TW9jay5oCkBAIC01
OSw3ICs1OSw3IEBAIHB1YmxpYzoKIAogICAgIC8vIEdlb2xvY2F0aW9uQ2xpZW50CiAgICAgdm9p
ZCBnZW9sb2NhdGlvbkRlc3Ryb3llZCgpIG92ZXJyaWRlOwotICAgIHZvaWQgc3RhcnRVcGRhdGlu
Zyhjb25zdCBTdHJpbmcmIGF1dGhvcml6YXRpb25Ub2tlbikgb3ZlcnJpZGU7CisgICAgdm9pZCBz
dGFydFVwZGF0aW5nKGNvbnN0IFN0cmluZyYgYXV0aG9yaXphdGlvblRva2VuLCBib29sIGVuYWJs
ZUhpZ2hBY2N1cmFjeSkgb3ZlcnJpZGU7CiAgICAgdm9pZCBzdG9wVXBkYXRpbmcoKSBvdmVycmlk
ZTsKICAgICB2b2lkIHNldEVuYWJsZUhpZ2hBY2N1cmFjeShib29sKSBvdmVycmlkZTsKICAgICBz
dGQ6Om9wdGlvbmFsPEdlb2xvY2F0aW9uUG9zaXRpb25EYXRhPiBsYXN0UG9zaXRpb24oKSBvdmVy
cmlkZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU291cmNlc0NvY29hLnR4dCBiL1NvdXJj
ZS9XZWJLaXQvU291cmNlc0NvY29hLnR4dAppbmRleCBmZTUwNmY3MTMzNGFkNTQ2ZWJiYWIwNjQx
Y2IzNzFjMjk5ZGIyNmNhLi5jOTA3NDZmZDdjZDNlYTM5OGQzZGMyYjIwZDRkNjgwODY5MWJlYmU3
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NvdXJjZXNDb2NvYS50eHQKKysrIGIvU291cmNl
L1dlYktpdC9Tb3VyY2VzQ29jb2EudHh0CkBAIC00MjYsNiArNDI2LDcgQEAgVUlQcm9jZXNzL0Nv
Y29hL1VJUmVtb3RlT2JqZWN0UmVnaXN0cnkuY3BwCiBVSVByb2Nlc3MvQ29jb2EvVXNlck1lZGlh
Q2FwdHVyZU1hbmFnZXJQcm94eS5jcHAKIFVJUHJvY2Vzcy9Db2NvYS9Vc2VyTWVkaWFQZXJtaXNz
aW9uUmVxdWVzdE1hbmFnZXJQcm94eS5tbQogVUlQcm9jZXNzL0NvY29hL1ZpZGVvRnVsbHNjcmVl
bk1hbmFnZXJQcm94eS5tbQorVUlQcm9jZXNzL0NvY29hL1dlYkdlb2xvY2F0aW9uTWFuYWdlclBy
b3h5Q29jb2EuY3BwCiBVSVByb2Nlc3MvQ29jb2EvV2ViUGFnZVByb3h5Q29jb2EubW0KIFVJUHJv
Y2Vzcy9Db2NvYS9XZWJQYXN0ZWJvYXJkUHJveHlDb2NvYS5tbQogVUlQcm9jZXNzL0NvY29hL1dl
YlByZWZlcmVuY2VzQ29jb2EubW0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0FQSS9DL1dLR2VvbG9jYXRpb25NYW5hZ2VyLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0FQSS9DL1dLR2VvbG9jYXRpb25NYW5hZ2VyLmNwcAppbmRleCA4ODhiNzViYzdjZWM4OWQxNmUw
N2Y2MTdlN2JiMmNlMjk3OWZhNjIzLi41ZjBmMDlkNGZmYjMxZjg4ZDYxMDc2Yzk4YzE2ZGQ3Y2M3
YjZmNTA1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS0dlb2xv
Y2F0aW9uTWFuYWdlci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tH
ZW9sb2NhdGlvbk1hbmFnZXIuY3BwCkBAIC00MCw3ICs0MCw5IEBAIFdLVHlwZUlEIFdLR2VvbG9j
YXRpb25NYW5hZ2VyR2V0VHlwZUlEKCkKIAogdm9pZCBXS0dlb2xvY2F0aW9uTWFuYWdlclNldFBy
b3ZpZGVyKFdLR2VvbG9jYXRpb25NYW5hZ2VyUmVmIGdlb2xvY2F0aW9uTWFuYWdlclJlZiwgY29u
c3QgV0tHZW9sb2NhdGlvblByb3ZpZGVyQmFzZSogd2tQcm92aWRlcikKIHsKKyNpZiAhUExBVEZP
Uk0oSU9TX0ZBTUlMWSkKICAgICB0b0ltcGwoZ2VvbG9jYXRpb25NYW5hZ2VyUmVmKS0+c2V0UHJv
dmlkZXIobWFrZVVuaXF1ZTxXZWJHZW9sb2NhdGlvblByb3ZpZGVyPih3a1Byb3ZpZGVyKSk7Cisj
ZW5kaWYKIH0KIAogdm9pZCBXS0dlb2xvY2F0aW9uTWFuYWdlclByb3ZpZGVyRGlkQ2hhbmdlUG9z
aXRpb24oV0tHZW9sb2NhdGlvbk1hbmFnZXJSZWYgZ2VvbG9jYXRpb25NYW5hZ2VyUmVmLCBXS0dl
b2xvY2F0aW9uUG9zaXRpb25SZWYgcG9zaXRpb25SZWYpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9Db2NvYS9XZWJHZW9sb2NhdGlvbk1hbmFnZXJQcm94eUNvY29hLmNwcCBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dlYkdlb2xvY2F0aW9uTWFuYWdlclByb3h5
Q29jb2EuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjkwMDhjMjA1YjNjZDVlOTQ0NTljODliYjY4OTc3ZDJiMWI3
NjQzNjEKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9X
ZWJHZW9sb2NhdGlvbk1hbmFnZXJQcm94eUNvY29hLmNwcApAQCAtMCwwICsxLDEwMyBAQAorLyoK
KyAqIENvcHlyaWdodCAoQykgMjAyMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli
dXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFO
RCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBM
RSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5U
IE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwg
T1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJXZWJHZW9sb2NhdGlvbk1h
bmFnZXJQcm94eS5oIgorCisjaW5jbHVkZSAiV2ViR2VvbG9jYXRpb25NYW5hZ2VyTWVzc2FnZXMu
aCIKKworbmFtZXNwYWNlIFdlYktpdCB7CisKKy8vIEZJWE1FOiBUaGlzIHNob3VsZCBiZSB1c2Vk
IGJ5IGFsbCBDb2NvYSBwb3J0cworI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCisKK3ZvaWQgV2Vi
R2VvbG9jYXRpb25NYW5hZ2VyUHJveHk6OnBvc2l0aW9uQ2hhbmdlZChjb25zdCBTdHJpbmcmIHdl
YnNpdGVJZGVudGlmaWVyLCBXZWJDb3JlOjpHZW9sb2NhdGlvblBvc2l0aW9uRGF0YSYmIHBvc2l0
aW9uKQoreworICAgIGF1dG8gcmVnaXN0cmFibGVEb21haW4gPSBXZWJDb3JlOjpSZWdpc3RyYWJs
ZURvbWFpbjo6dW5jaGVja2VkQ3JlYXRlRnJvbVJlZ2lzdHJhYmxlRG9tYWluU3RyaW5nKHdlYnNp
dGVJZGVudGlmaWVyKTsKKyAgICBhdXRvIGl0ID0gbV9wZXJEb21haW5EYXRhLmZpbmQocmVnaXN0
cmFibGVEb21haW4pOworICAgIGlmIChpdCA9PSBtX3BlckRvbWFpbkRhdGEuZW5kKCkpCisgICAg
ICAgIHJldHVybjsKKworICAgIGF1dG8mIHBlckRvbWFpbkRhdGEgPSAqaXQtPnZhbHVlOworICAg
IHBlckRvbWFpbkRhdGEubGFzdFBvc2l0aW9uID0gV1RGTW92ZShwb3NpdGlvbik7CisgICAgZm9y
IChhdXRvIGNvbm5lY3Rpb25JRCA6IHBlckRvbWFpbkRhdGEud2F0Y2hlcnMpCisgICAgICAgIElQ
Qzo6Q29ubmVjdGlvbjo6c2VuZChjb25uZWN0aW9uSUQsIE1lc3NhZ2VzOjpXZWJHZW9sb2NhdGlv
bk1hbmFnZXI6OkRpZENoYW5nZVBvc2l0aW9uKHJlZ2lzdHJhYmxlRG9tYWluLCBwZXJEb21haW5E
YXRhLmxhc3RQb3NpdGlvbi52YWx1ZSgpKSwgMCk7Cit9CisKK3ZvaWQgV2ViR2VvbG9jYXRpb25N
YW5hZ2VyUHJveHk6OmVycm9yT2NjdXJyZWQoY29uc3QgU3RyaW5nJiB3ZWJzaXRlSWRlbnRpZmll
ciwgY29uc3QgU3RyaW5nJiBlcnJvck1lc3NhZ2UpCit7CisgICAgYXV0byByZWdpc3RyYWJsZURv
bWFpbiA9IFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluOjp1bmNoZWNrZWRDcmVhdGVGcm9tUmVn
aXN0cmFibGVEb21haW5TdHJpbmcod2Vic2l0ZUlkZW50aWZpZXIpOworICAgIGF1dG8gaXQgPSBt
X3BlckRvbWFpbkRhdGEuZmluZChyZWdpc3RyYWJsZURvbWFpbik7CisgICAgaWYgKGl0ID09IG1f
cGVyRG9tYWluRGF0YS5lbmQoKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgYXV0byYgcGVyRG9t
YWluRGF0YSA9ICppdC0+dmFsdWU7CisgICAgZm9yIChhdXRvIGNvbm5lY3Rpb25JRCA6IHBlckRv
bWFpbkRhdGEud2F0Y2hlcnMpCisgICAgICAgIElQQzo6Q29ubmVjdGlvbjo6c2VuZChjb25uZWN0
aW9uSUQsIE1lc3NhZ2VzOjpXZWJHZW9sb2NhdGlvbk1hbmFnZXI6OkRpZEZhaWxUb0RldGVybWlu
ZVBvc2l0aW9uKHJlZ2lzdHJhYmxlRG9tYWluLCBlcnJvck1lc3NhZ2UpLCAwKTsKK30KKwordm9p
ZCBXZWJHZW9sb2NhdGlvbk1hbmFnZXJQcm94eTo6cmVzZXRHZW9sb2NhdGlvbihjb25zdCBTdHJp
bmcmIHdlYnNpdGVJZGVudGlmaWVyKQoreworICAgIGF1dG8gcmVnaXN0cmFibGVEb21haW4gPSBX
ZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbjo6dW5jaGVja2VkQ3JlYXRlRnJvbVJlZ2lzdHJhYmxl
RG9tYWluU3RyaW5nKHdlYnNpdGVJZGVudGlmaWVyKTsKKyAgICBhdXRvIGl0ID0gbV9wZXJEb21h
aW5EYXRhLmZpbmQocmVnaXN0cmFibGVEb21haW4pOworICAgIGlmIChpdCA9PSBtX3BlckRvbWFp
bkRhdGEuZW5kKCkpCisgICAgICAgIHJldHVybjsKKworICAgIGF1dG8mIHBlckRvbWFpbkRhdGEg
PSAqaXQtPnZhbHVlOworICAgIGZvciAoYXV0byBjb25uZWN0aW9uSUQgOiBwZXJEb21haW5EYXRh
LndhdGNoZXJzKQorICAgICAgICBJUEM6OkNvbm5lY3Rpb246OnNlbmQoY29ubmVjdGlvbklELCBN
ZXNzYWdlczo6V2ViR2VvbG9jYXRpb25NYW5hZ2VyOjpSZXNldFBlcm1pc3Npb25zKHJlZ2lzdHJh
YmxlRG9tYWluKSwgMCk7Cit9CisKK2Jvb2wgV2ViR2VvbG9jYXRpb25NYW5hZ2VyUHJveHk6Omlz
VXBkYXRpbmcoY29uc3QgUGVyRG9tYWluRGF0YSYgcGVyRG9tYWluRGF0YSkgY29uc3QKK3sKKyAg
ICByZXR1cm4gIXBlckRvbWFpbkRhdGEud2F0Y2hlcnMuaXNFbXB0eSgpOworfQorCitib29sIFdl
Ykdlb2xvY2F0aW9uTWFuYWdlclByb3h5Ojppc0hpZ2hBY2N1cmFjeUVuYWJsZWQoY29uc3QgUGVy
RG9tYWluRGF0YSYgcGVyRG9tYWluRGF0YSkgY29uc3QKK3sKKyAgICByZXR1cm4gIXBlckRvbWFp
bkRhdGEud2F0Y2hlcnNOZWVkaW5nSGlnaEFjY3VyYWN5LmlzRW1wdHkoKTsKK30KKwordm9pZCBX
ZWJHZW9sb2NhdGlvbk1hbmFnZXJQcm94eTo6cHJvdmlkZXJTdGFydFVwZGF0aW5nKFBlckRvbWFp
bkRhdGEmIHBlckRvbWFpbkRhdGEsIGNvbnN0IFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluJiBy
ZWdpc3RyYWJsZURvbWFpbikKK3sKKyAgICBBU1NFUlQoIXBlckRvbWFpbkRhdGEucHJvdmlkZXIp
OworICAgIHBlckRvbWFpbkRhdGEucHJvdmlkZXIgPSBtYWtlVW5pcXVlPFdlYkNvcmU6OkNvcmVM
b2NhdGlvbkdlb2xvY2F0aW9uUHJvdmlkZXI+KHJlZ2lzdHJhYmxlRG9tYWluLCAqdGhpcyk7Cisg
ICAgcGVyRG9tYWluRGF0YS5wcm92aWRlci0+c2V0RW5hYmxlSGlnaEFjY3VyYWN5KCFwZXJEb21h
aW5EYXRhLndhdGNoZXJzTmVlZGluZ0hpZ2hBY2N1cmFjeS5pc0VtcHR5KCkpOworICAgIHBlckRv
bWFpbkRhdGEucHJvdmlkZXItPnN0YXJ0KCk7Cit9CisKK3ZvaWQgV2ViR2VvbG9jYXRpb25NYW5h
Z2VyUHJveHk6OnByb3ZpZGVyU3RvcFVwZGF0aW5nKFBlckRvbWFpbkRhdGEmIHBlckRvbWFpbkRh
dGEpCit7CisgICAgcGVyRG9tYWluRGF0YS5wcm92aWRlci0+c3RvcCgpOworfQorCit2b2lkIFdl
Ykdlb2xvY2F0aW9uTWFuYWdlclByb3h5Ojpwcm92aWRlclNldEVuYWJsZWRIaWdoQWNjdXJhY3ko
UGVyRG9tYWluRGF0YSYgcGVyRG9tYWluRGF0YSwgYm9vbCBlbmFibGVkKQoreworICAgIHBlckRv
bWFpbkRhdGEucHJvdmlkZXItPnNldEVuYWJsZUhpZ2hBY2N1cmFjeShlbmFibGVkKTsKK30KKwor
I2VuZGlmCisKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkdlb2xv
Y2F0aW9uTWFuYWdlclByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkdlb2xv
Y2F0aW9uTWFuYWdlclByb3h5LmNwcAppbmRleCAwNGYzMjI3Y2Q1NWM5OTJhNDJjZDk2YTNmMjVk
Njk3YWVkNzk2NWEyLi4wNWE1MGQwZjBjODFhZWQ3NDRiNDIwZmFhODliZjk2NTg4YTEwY2NjIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJHZW9sb2NhdGlvbk1hbmFnZXJQ
cm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViR2VvbG9jYXRpb25NYW5h
Z2VyUHJveHkuY3BwCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMSwg
MjAxMiwgMjAxMyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQg
KEMpIDIwMTEtMjAyMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTUwLDM0ICs1MCwzOSBAQCBSZWY8V2ViR2VvbG9jYXRp
b25NYW5hZ2VyUHJveHk+IFdlYkdlb2xvY2F0aW9uTWFuYWdlclByb3h5OjpjcmVhdGUoV2ViUHJv
Y2Vzc1BvbwogCiBXZWJHZW9sb2NhdGlvbk1hbmFnZXJQcm94eTo6V2ViR2VvbG9jYXRpb25NYW5h
Z2VyUHJveHkoV2ViUHJvY2Vzc1Bvb2wqIHByb2Nlc3NQb29sKQogICAgIDogV2ViQ29udGV4dFN1
cHBsZW1lbnQocHJvY2Vzc1Bvb2wpCi0gICAgLCBtX3Byb3ZpZGVyKG1ha2VVbmlxdWU8QVBJOjpH
ZW9sb2NhdGlvblByb3ZpZGVyPigpKQogewogICAgIFdlYkNvbnRleHRTdXBwbGVtZW50Ojpwcm9j
ZXNzUG9vbCgpLT5hZGRNZXNzYWdlUmVjZWl2ZXIoTWVzc2FnZXM6OldlYkdlb2xvY2F0aW9uTWFu
YWdlclByb3h5OjptZXNzYWdlUmVjZWl2ZXJOYW1lKCksICp0aGlzKTsKIH0KIAotdm9pZCBXZWJH
ZW9sb2NhdGlvbk1hbmFnZXJQcm94eTo6c2V0UHJvdmlkZXIoc3RkOjp1bmlxdWVfcHRyPEFQSTo6
R2VvbG9jYXRpb25Qcm92aWRlcj4mJiBwcm92aWRlcikKLXsKLSAgICBpZiAoIXByb3ZpZGVyKQot
ICAgICAgICBtX3Byb3ZpZGVyID0gbWFrZVVuaXF1ZTxBUEk6Okdlb2xvY2F0aW9uUHJvdmlkZXI+
KCk7Ci0gICAgZWxzZQotICAgICAgICBtX3Byb3ZpZGVyID0gV1RGTW92ZShwcm92aWRlcik7Ci19
CitXZWJHZW9sb2NhdGlvbk1hbmFnZXJQcm94eTo6fldlYkdlb2xvY2F0aW9uTWFuYWdlclByb3h5
KCkgPSBkZWZhdWx0OwogCiAvLyBXZWJDb250ZXh0U3VwcGxlbWVudAogCiB2b2lkIFdlYkdlb2xv
Y2F0aW9uTWFuYWdlclByb3h5Ojpwcm9jZXNzUG9vbERlc3Ryb3llZCgpCiB7Ci0gICAgYm9vbCB3
YXNVcGRhdGluZyA9IGlzVXBkYXRpbmcoKTsKLSAgICBtX3VwZGF0ZVJlcXVlc3RlcnMuY2xlYXIo
KTsKKyAgICBpZiAobV9wZXJEb21haW5EYXRhLmlzRW1wdHkoKSkKKyAgICAgICAgcmV0dXJuOwog
Ci0gICAgQVNTRVJUKCFpc1VwZGF0aW5nKCkpOwotICAgIGlmICh3YXNVcGRhdGluZykKKyAgICBt
X3BlckRvbWFpbkRhdGEuY2xlYXIoKTsKKyNpZiAhUExBVEZPUk0oSU9TX0ZBTUlMWSkKKyAgICBp
ZiAobV9wcm92aWRlcikKICAgICAgICAgbV9wcm92aWRlci0+c3RvcFVwZGF0aW5nKCp0aGlzKTsK
KyNlbmRpZgogfQogCiB2b2lkIFdlYkdlb2xvY2F0aW9uTWFuYWdlclByb3h5Ojpwcm9jZXNzRGlk
Q2xvc2UoV2ViUHJvY2Vzc1Byb3h5KiB3ZWJQcm9jZXNzUHJveHkpCiB7Ci0gICAgcmVtb3ZlUmVx
dWVzdGVyKHdlYlByb2Nlc3NQcm94eSk7CisgICAgYXV0byogY29ubmVjdGlvbiA9IHdlYlByb2Nl
c3NQcm94eS0+Y29ubmVjdGlvbigpOworICAgIGlmICghY29ubmVjdGlvbikKKyAgICAgICAgcmV0
dXJuOworCisgICAgVmVjdG9yPFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluPiBhZmZlY3RlZERv
bWFpbnM7CisgICAgZm9yIChhdXRvJiBbcmVnaXN0cmFibGVEb21haW4sIHBlckRvbWFpbkRhdGFd
IDogbV9wZXJEb21haW5EYXRhKSB7CisgICAgICAgIGlmIChwZXJEb21haW5EYXRhLT53YXRjaGVy
cy5jb250YWlucyhjb25uZWN0aW9uLT51bmlxdWVJRCgpKSkKKyAgICAgICAgICAgIGFmZmVjdGVk
RG9tYWlucy5hcHBlbmQocmVnaXN0cmFibGVEb21haW4pOworICAgIH0KKyAgICBmb3IgKGF1dG8m
IHJlZ2lzdHJhYmxlRG9tYWluIDogYWZmZWN0ZWREb21haW5zKQorICAgICAgICBzdG9wVXBkYXRp
bmcoKmNvbm5lY3Rpb24sIHJlZ2lzdHJhYmxlRG9tYWluKTsKIH0KIAogdm9pZCBXZWJHZW9sb2Nh
dGlvbk1hbmFnZXJQcm94eTo6cmVmV2ViQ29udGV4dFN1cHBsZW1lbnQoKQpAQCAtOTIsMzAgKzk3
LDIyIEBAIHZvaWQgV2ViR2VvbG9jYXRpb25NYW5hZ2VyUHJveHk6OmRlcmVmV2ViQ29udGV4dFN1
cHBsZW1lbnQoKQogCiB2b2lkIFdlYkdlb2xvY2F0aW9uTWFuYWdlclByb3h5Ojpwcm92aWRlckRp
ZENoYW5nZVBvc2l0aW9uKFdlYkdlb2xvY2F0aW9uUG9zaXRpb24qIHBvc2l0aW9uKQogewotICAg
IG1fbGFzdFBvc2l0aW9uID0gcG9zaXRpb24tPmNvcmVQb3NpdGlvbigpOwotCi0gICAgaWYgKCFw
cm9jZXNzUG9vbCgpKQotICAgICAgICByZXR1cm47Ci0KLSAgICBwcm9jZXNzUG9vbCgpLT5zZW5k
VG9BbGxQcm9jZXNzZXMoTWVzc2FnZXM6OldlYkdlb2xvY2F0aW9uTWFuYWdlcjo6RGlkQ2hhbmdl
UG9zaXRpb24obV9sYXN0UG9zaXRpb24udmFsdWUoKSkpOworICAgIGZvciAoYXV0byYgW3JlZ2lz
dHJhYmxlRG9tYWluLCBwZXJEb21haW5EYXRhXSA6IG1fcGVyRG9tYWluRGF0YSkgeworICAgICAg
ICBwZXJEb21haW5EYXRhLT5sYXN0UG9zaXRpb24gPSBwb3NpdGlvbi0+Y29yZVBvc2l0aW9uKCk7
CisgICAgICAgIGZvciAoYXV0byBjb25uZWN0aW9uSUQgOiBwZXJEb21haW5EYXRhLT53YXRjaGVy
cykKKyAgICAgICAgICAgIElQQzo6Q29ubmVjdGlvbjo6c2VuZChjb25uZWN0aW9uSUQsIE1lc3Nh
Z2VzOjpXZWJHZW9sb2NhdGlvbk1hbmFnZXI6OkRpZENoYW5nZVBvc2l0aW9uKHJlZ2lzdHJhYmxl
RG9tYWluLCBwZXJEb21haW5EYXRhLT5sYXN0UG9zaXRpb24udmFsdWUoKSksIDApOworICAgIH0K
IH0KIAogdm9pZCBXZWJHZW9sb2NhdGlvbk1hbmFnZXJQcm94eTo6cHJvdmlkZXJEaWRGYWlsVG9E
ZXRlcm1pbmVQb3NpdGlvbihjb25zdCBTdHJpbmcmIGVycm9yTWVzc2FnZSkKIHsKLSAgICBpZiAo
IXByb2Nlc3NQb29sKCkpCi0gICAgICAgIHJldHVybjsKLQotICAgIHByb2Nlc3NQb29sKCktPnNl
bmRUb0FsbFByb2Nlc3NlcyhNZXNzYWdlczo6V2ViR2VvbG9jYXRpb25NYW5hZ2VyOjpEaWRGYWls
VG9EZXRlcm1pbmVQb3NpdGlvbihlcnJvck1lc3NhZ2UpKTsKLX0KLQotI2lmIFBMQVRGT1JNKElP
U19GQU1JTFkpCi12b2lkIFdlYkdlb2xvY2F0aW9uTWFuYWdlclByb3h5OjpyZXNldFBlcm1pc3Np
b25zKCkKLXsKLSAgICBwcm9jZXNzUG9vbCgpLT5zZW5kVG9BbGxQcm9jZXNzZXMoTWVzc2FnZXM6
OldlYkdlb2xvY2F0aW9uTWFuYWdlcjo6UmVzZXRQZXJtaXNzaW9ucygpKTsKKyAgICBmb3IgKGF1
dG8mIFtyZWdpc3RyYWJsZURvbWFpbiwgcGVyRG9tYWluRGF0YV0gOiBtX3BlckRvbWFpbkRhdGEp
IHsKKyAgICAgICAgZm9yIChhdXRvIGNvbm5lY3Rpb25JRCA6IHBlckRvbWFpbkRhdGEtPndhdGNo
ZXJzKQorICAgICAgICAgICAgSVBDOjpDb25uZWN0aW9uOjpzZW5kKGNvbm5lY3Rpb25JRCwgTWVz
c2FnZXM6OldlYkdlb2xvY2F0aW9uTWFuYWdlcjo6RGlkRmFpbFRvRGV0ZXJtaW5lUG9zaXRpb24o
cmVnaXN0cmFibGVEb21haW4sIGVycm9yTWVzc2FnZSksIDApOworICAgIH0KIH0KLSNlbmRpZgog
Ci12b2lkIFdlYkdlb2xvY2F0aW9uTWFuYWdlclByb3h5OjpzdGFydFVwZGF0aW5nKElQQzo6Q29u
bmVjdGlvbiYgY29ubmVjdGlvbiwgV2ViUGFnZVByb3h5SWRlbnRpZmllciBwYWdlUHJveHlJRCwg
Y29uc3QgU3RyaW5nJiBhdXRob3JpemF0aW9uVG9rZW4pCit2b2lkIFdlYkdlb2xvY2F0aW9uTWFu
YWdlclByb3h5OjpzdGFydFVwZGF0aW5nKElQQzo6Q29ubmVjdGlvbiYgY29ubmVjdGlvbiwgY29u
c3QgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4mIHJlZ2lzdHJhYmxlRG9tYWluLCBXZWJQYWdl
UHJveHlJZGVudGlmaWVyIHBhZ2VQcm94eUlELCBjb25zdCBTdHJpbmcmIGF1dGhvcml6YXRpb25U
b2tlbiwgYm9vbCBlbmFibGVIaWdoQWNjdXJhY3kpCiB7CiAgICAgYXV0byogcGFnZSA9IFdlYlBy
b2Nlc3NQcm94eTo6d2ViUGFnZShwYWdlUHJveHlJRCk7CiAgICAgTUVTU0FHRV9DSEVDSyhwYWdl
KTsKQEAgLTEyMyw1MCArMTIwLDEyMSBAQCB2b2lkIFdlYkdlb2xvY2F0aW9uTWFuYWdlclByb3h5
OjpzdGFydFVwZGF0aW5nKElQQzo6Q29ubmVjdGlvbiYgY29ubmVjdGlvbiwgV2ViUAogICAgIGF1
dG8gaXNWYWxpZEF1dGhvcml6YXRpb25Ub2tlbiA9IHBhZ2UtPmdlb2xvY2F0aW9uUGVybWlzc2lv
blJlcXVlc3RNYW5hZ2VyKCkuaXNWYWxpZEF1dGhvcml6YXRpb25Ub2tlbihhdXRob3JpemF0aW9u
VG9rZW4pOwogICAgIE1FU1NBR0VfQ0hFQ0soaXNWYWxpZEF1dGhvcml6YXRpb25Ub2tlbik7CiAK
LSAgICBib29sIHdhc1VwZGF0aW5nID0gaXNVcGRhdGluZygpOwotICAgIG1fdXBkYXRlUmVxdWVz
dGVycy5hZGQoJmNvbm5lY3Rpb24uY2xpZW50KCkpOworICAgIGF1dG8mIHBlckRvbWFpbkRhdGEg
PSAqbV9wZXJEb21haW5EYXRhLmVuc3VyZShyZWdpc3RyYWJsZURvbWFpbiwgW10geworICAgICAg
ICByZXR1cm4gbWFrZVVuaXF1ZTxQZXJEb21haW5EYXRhPigpOworICAgIH0pLml0ZXJhdG9yLT52
YWx1ZTsKKworICAgIGJvb2wgd2FzVXBkYXRpbmcgPSBpc1VwZGF0aW5nKHBlckRvbWFpbkRhdGEp
OworICAgIGJvb2wgaGlnaEFjY3VyYWN5V2FzRW5hYmxlZCA9IGlzSGlnaEFjY3VyYWN5RW5hYmxl
ZChwZXJEb21haW5EYXRhKTsKKworICAgIHBlckRvbWFpbkRhdGEud2F0Y2hlcnMuYWRkKGNvbm5l
Y3Rpb24udW5pcXVlSUQoKSk7CisgICAgaWYgKGVuYWJsZUhpZ2hBY2N1cmFjeSkKKyAgICAgICAg
cGVyRG9tYWluRGF0YS53YXRjaGVyc05lZWRpbmdIaWdoQWNjdXJhY3kuYWRkKGNvbm5lY3Rpb24u
dW5pcXVlSUQoKSk7CisKICAgICBpZiAoIXdhc1VwZGF0aW5nKSB7Ci0gICAgICAgIG1fcHJvdmlk
ZXItPnNldEVuYWJsZUhpZ2hBY2N1cmFjeSgqdGhpcywgaXNIaWdoQWNjdXJhY3lFbmFibGVkKCkp
OwotICAgICAgICBtX3Byb3ZpZGVyLT5zdGFydFVwZGF0aW5nKCp0aGlzKTsKLSAgICB9IGVsc2Ug
aWYgKG1fbGFzdFBvc2l0aW9uKQotICAgICAgICBjb25uZWN0aW9uLnNlbmQoTWVzc2FnZXM6Oldl
Ykdlb2xvY2F0aW9uTWFuYWdlcjo6RGlkQ2hhbmdlUG9zaXRpb24obV9sYXN0UG9zaXRpb24udmFs
dWUoKSksIDApOwotfQorICAgICAgICBwcm92aWRlclN0YXJ0VXBkYXRpbmcocGVyRG9tYWluRGF0
YSwgcmVnaXN0cmFibGVEb21haW4pOworICAgICAgICByZXR1cm47CisgICAgfQorICAgIGlmICgh
aGlnaEFjY3VyYWN5V2FzRW5hYmxlZCAmJiBlbmFibGVIaWdoQWNjdXJhY3kpCisgICAgICAgIHBy
b3ZpZGVyU2V0RW5hYmxlZEhpZ2hBY2N1cmFjeShwZXJEb21haW5EYXRhLCBlbmFibGVIaWdoQWNj
dXJhY3kpOwogCi12b2lkIFdlYkdlb2xvY2F0aW9uTWFuYWdlclByb3h5OjpzdG9wVXBkYXRpbmco
SVBDOjpDb25uZWN0aW9uJiBjb25uZWN0aW9uKQotewotICAgIHJlbW92ZVJlcXVlc3RlcigmY29u
bmVjdGlvbi5jbGllbnQoKSk7CisgICAgaWYgKHBlckRvbWFpbkRhdGEubGFzdFBvc2l0aW9uKQor
ICAgICAgICBjb25uZWN0aW9uLnNlbmQoTWVzc2FnZXM6OldlYkdlb2xvY2F0aW9uTWFuYWdlcjo6
RGlkQ2hhbmdlUG9zaXRpb24ocmVnaXN0cmFibGVEb21haW4sIHBlckRvbWFpbkRhdGEubGFzdFBv
c2l0aW9uLnZhbHVlKCkpLCAwKTsKIH0KIAotdm9pZCBXZWJHZW9sb2NhdGlvbk1hbmFnZXJQcm94
eTo6cmVtb3ZlUmVxdWVzdGVyKGNvbnN0IElQQzo6Q29ubmVjdGlvbjo6Q2xpZW50KiBjbGllbnQp
Cit2b2lkIFdlYkdlb2xvY2F0aW9uTWFuYWdlclByb3h5OjpzdG9wVXBkYXRpbmcoSVBDOjpDb25u
ZWN0aW9uJiBjb25uZWN0aW9uLCBjb25zdCBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiYgcmVn
aXN0cmFibGVEb21haW4pCiB7Ci0gICAgYm9vbCB3YXNVcGRhdGluZyA9IGlzVXBkYXRpbmcoKTsK
LSAgICBib29sIGhpZ2hBY2N1cmFjeVdhc0VuYWJsZWQgPSBpc0hpZ2hBY2N1cmFjeUVuYWJsZWQo
KTsKKyAgICBhdXRvIGl0ID0gbV9wZXJEb21haW5EYXRhLmZpbmQocmVnaXN0cmFibGVEb21haW4p
OworICAgIGlmIChpdCA9PSBtX3BlckRvbWFpbkRhdGEuZW5kKCkpCisgICAgICAgIHJldHVybjsK
IAotICAgIG1faGlnaEFjY3VyYWN5UmVxdWVzdGVycy5yZW1vdmUoY2xpZW50KTsKLSAgICBtX3Vw
ZGF0ZVJlcXVlc3RlcnMucmVtb3ZlKGNsaWVudCk7CisgICAgYXV0byYgcGVyRG9tYWluRGF0YSA9
ICppdC0+dmFsdWU7CisgICAgYm9vbCB3YXNVcGRhdGluZyA9IGlzVXBkYXRpbmcocGVyRG9tYWlu
RGF0YSk7CisgICAgYm9vbCBoaWdoQWNjdXJhY3lXYXNFbmFibGVkID0gaXNIaWdoQWNjdXJhY3lF
bmFibGVkKHBlckRvbWFpbkRhdGEpOwogCi0gICAgaWYgKHdhc1VwZGF0aW5nICYmICFpc1VwZGF0
aW5nKCkpCi0gICAgICAgIG1fcHJvdmlkZXItPnN0b3BVcGRhdGluZygqdGhpcyk7CisgICAgcGVy
RG9tYWluRGF0YS53YXRjaGVycy5yZW1vdmUoY29ubmVjdGlvbi51bmlxdWVJRCgpKTsKKyAgICBw
ZXJEb21haW5EYXRhLndhdGNoZXJzTmVlZGluZ0hpZ2hBY2N1cmFjeS5yZW1vdmUoY29ubmVjdGlv
bi51bmlxdWVJRCgpKTsKKworICAgIGlmICh3YXNVcGRhdGluZyAmJiAhaXNVcGRhdGluZyhwZXJE
b21haW5EYXRhKSkKKyAgICAgICAgcHJvdmlkZXJTdG9wVXBkYXRpbmcocGVyRG9tYWluRGF0YSk7
CiAgICAgZWxzZSB7Ci0gICAgICAgIGJvb2wgaGlnaEFjY3VyYWN5U2hvdWxkQmVFbmFibGVkID0g
aXNIaWdoQWNjdXJhY3lFbmFibGVkKCk7CisgICAgICAgIGJvb2wgaGlnaEFjY3VyYWN5U2hvdWxk
QmVFbmFibGVkID0gaXNIaWdoQWNjdXJhY3lFbmFibGVkKHBlckRvbWFpbkRhdGEpOwogICAgICAg
ICBpZiAoaGlnaEFjY3VyYWN5U2hvdWxkQmVFbmFibGVkICE9IGhpZ2hBY2N1cmFjeVdhc0VuYWJs
ZWQpCi0gICAgICAgICAgICBtX3Byb3ZpZGVyLT5zZXRFbmFibGVIaWdoQWNjdXJhY3koKnRoaXMs
IGhpZ2hBY2N1cmFjeVNob3VsZEJlRW5hYmxlZCk7CisgICAgICAgICAgICBwcm92aWRlclNldEVu
YWJsZWRIaWdoQWNjdXJhY3kocGVyRG9tYWluRGF0YSwgaGlnaEFjY3VyYWN5U2hvdWxkQmVFbmFi
bGVkKTsKICAgICB9CisKKyAgICBpZiAocGVyRG9tYWluRGF0YS53YXRjaGVycy5pc0VtcHR5KCkg
JiYgcGVyRG9tYWluRGF0YS53YXRjaGVyc05lZWRpbmdIaWdoQWNjdXJhY3kuaXNFbXB0eSgpKQor
ICAgICAgICBtX3BlckRvbWFpbkRhdGEucmVtb3ZlKGl0KTsKIH0KIAotdm9pZCBXZWJHZW9sb2Nh
dGlvbk1hbmFnZXJQcm94eTo6c2V0RW5hYmxlSGlnaEFjY3VyYWN5KElQQzo6Q29ubmVjdGlvbiYg
Y29ubmVjdGlvbiwgYm9vbCBlbmFibGVkKQordm9pZCBXZWJHZW9sb2NhdGlvbk1hbmFnZXJQcm94
eTo6c2V0RW5hYmxlSGlnaEFjY3VyYWN5KElQQzo6Q29ubmVjdGlvbiYgY29ubmVjdGlvbiwgY29u
c3QgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4mIHJlZ2lzdHJhYmxlRG9tYWluLCBib29sIGVu
YWJsZWQpCiB7Ci0gICAgYm9vbCBoaWdoQWNjdXJhY3lXYXNFbmFibGVkID0gaXNIaWdoQWNjdXJh
Y3lFbmFibGVkKCk7CisgICAgYXV0byBpdCA9IG1fcGVyRG9tYWluRGF0YS5maW5kKHJlZ2lzdHJh
YmxlRG9tYWluKTsKKyAgICBBU1NFUlQoaXQgIT0gbV9wZXJEb21haW5EYXRhLmVuZCgpKTsKKyAg
ICBpZiAoaXQgPT0gbV9wZXJEb21haW5EYXRhLmVuZCgpKQorICAgICAgICByZXR1cm47CisKKyAg
ICBhdXRvJiBwZXJEb21haW5EYXRhID0gKml0LT52YWx1ZTsKKyAgICBib29sIGhpZ2hBY2N1cmFj
eVdhc0VuYWJsZWQgPSBpc0hpZ2hBY2N1cmFjeUVuYWJsZWQocGVyRG9tYWluRGF0YSk7CiAKICAg
ICBpZiAoZW5hYmxlZCkKLSAgICAgICAgbV9oaWdoQWNjdXJhY3lSZXF1ZXN0ZXJzLmFkZCgmY29u
bmVjdGlvbi5jbGllbnQoKSk7CisgICAgICAgIHBlckRvbWFpbkRhdGEud2F0Y2hlcnNOZWVkaW5n
SGlnaEFjY3VyYWN5LmFkZChjb25uZWN0aW9uLnVuaXF1ZUlEKCkpOworICAgIGVsc2UKKyAgICAg
ICAgcGVyRG9tYWluRGF0YS53YXRjaGVyc05lZWRpbmdIaWdoQWNjdXJhY3kucmVtb3ZlKGNvbm5l
Y3Rpb24udW5pcXVlSUQoKSk7CisKKyAgICBpZiAoaXNVcGRhdGluZyhwZXJEb21haW5EYXRhKSAm
JiBoaWdoQWNjdXJhY3lXYXNFbmFibGVkICE9IGVuYWJsZWQpCisgICAgICAgIHByb3ZpZGVyU2V0
RW5hYmxlZEhpZ2hBY2N1cmFjeShwZXJEb21haW5EYXRhLCBlbmFibGVkKTsKK30KKworI2lmICFQ
TEFURk9STShJT1NfRkFNSUxZKQordm9pZCBXZWJHZW9sb2NhdGlvbk1hbmFnZXJQcm94eTo6c2V0
UHJvdmlkZXIoc3RkOjp1bmlxdWVfcHRyPEFQSTo6R2VvbG9jYXRpb25Qcm92aWRlcj4mJiBwcm92
aWRlcikKK3sKKyAgICBpZiAoIXByb3ZpZGVyKQorICAgICAgICBtX3Byb3ZpZGVyID0gbWFrZVVu
aXF1ZTxBUEk6Okdlb2xvY2F0aW9uUHJvdmlkZXI+KCk7CiAgICAgZWxzZQotICAgICAgICBtX2hp
Z2hBY2N1cmFjeVJlcXVlc3RlcnMucmVtb3ZlKCZjb25uZWN0aW9uLmNsaWVudCgpKTsKKyAgICAg
ICAgbV9wcm92aWRlciA9IFdURk1vdmUocHJvdmlkZXIpOworfQorCitib29sIFdlYkdlb2xvY2F0
aW9uTWFuYWdlclByb3h5Ojppc1VwZGF0aW5nKGNvbnN0IFBlckRvbWFpbkRhdGEmKSBjb25zdAor
eworICAgIGZvciAoYXV0byYgcGVyRG9tYWluRGF0YSA6IG1fcGVyRG9tYWluRGF0YS52YWx1ZXMo
KSkgeworICAgICAgICBpZiAoIXBlckRvbWFpbkRhdGEtPndhdGNoZXJzLmlzRW1wdHkoKSkKKyAg
ICAgICAgICAgIHJldHVybiB0cnVlOworICAgIH0KKyAgICByZXR1cm4gZmFsc2U7Cit9CisKKwor
Ym9vbCBXZWJHZW9sb2NhdGlvbk1hbmFnZXJQcm94eTo6aXNIaWdoQWNjdXJhY3lFbmFibGVkKGNv
bnN0IFBlckRvbWFpbkRhdGEmKSBjb25zdAoreworICAgIGZvciAoYXV0byYgcGVyRG9tYWluRGF0
YSA6IG1fcGVyRG9tYWluRGF0YS52YWx1ZXMoKSkgeworICAgICAgICBpZiAoIXBlckRvbWFpbkRh
dGEtPndhdGNoZXJzTmVlZGluZ0hpZ2hBY2N1cmFjeS5pc0VtcHR5KCkpCisgICAgICAgICAgICBy
ZXR1cm4gdHJ1ZTsKKyAgICB9CisgICAgcmV0dXJuIGZhbHNlOworfQorCit2b2lkIFdlYkdlb2xv
Y2F0aW9uTWFuYWdlclByb3h5Ojpwcm92aWRlclN0YXJ0VXBkYXRpbmcoUGVyRG9tYWluRGF0YSYg
cGVyRG9tYWluRGF0YSwgY29uc3QgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4mKQoreworICAg
IGlmICghbV9wcm92aWRlcikKKyAgICAgICAgcmV0dXJuOworCisgICAgbV9wcm92aWRlci0+c2V0
RW5hYmxlSGlnaEFjY3VyYWN5KCp0aGlzLCBpc0hpZ2hBY2N1cmFjeUVuYWJsZWQocGVyRG9tYWlu
RGF0YSkpOworICAgIG1fcHJvdmlkZXItPnN0YXJ0VXBkYXRpbmcoKnRoaXMpOworfQorCit2b2lk
IFdlYkdlb2xvY2F0aW9uTWFuYWdlclByb3h5Ojpwcm92aWRlclN0b3BVcGRhdGluZyhQZXJEb21h
aW5EYXRhJikKK3sKKyAgICBpZiAobV9wcm92aWRlcikKKyAgICAgICAgbV9wcm92aWRlci0+c3Rv
cFVwZGF0aW5nKCp0aGlzKTsKK30KIAotICAgIGJvb2wgaGlnaEFjY3VyYWN5U2hvdWxkQmVFbmFi
bGVkID0gaXNIaWdoQWNjdXJhY3lFbmFibGVkKCk7Ci0gICAgaWYgKGlzVXBkYXRpbmcoKSAmJiBo
aWdoQWNjdXJhY3lXYXNFbmFibGVkICE9IGhpZ2hBY2N1cmFjeVNob3VsZEJlRW5hYmxlZCkKLSAg
ICAgICAgbV9wcm92aWRlci0+c2V0RW5hYmxlSGlnaEFjY3VyYWN5KCp0aGlzLCBoaWdoQWNjdXJh
Y3lTaG91bGRCZUVuYWJsZWQpOwordm9pZCBXZWJHZW9sb2NhdGlvbk1hbmFnZXJQcm94eTo6cHJv
dmlkZXJTZXRFbmFibGVkSGlnaEFjY3VyYWN5KFBlckRvbWFpbkRhdGEmLCBib29sIGVuYWJsZWQp
Cit7CisgICAgaWYgKG1fcHJvdmlkZXIpCisgICAgICAgIG1fcHJvdmlkZXItPnNldEVuYWJsZUhp
Z2hBY2N1cmFjeSgqdGhpcywgZW5hYmxlZCk7CiB9CisjZW5kaWYgLy8gIVBMQVRGT1JNKElPU19G
QU1JTFkpCiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdAogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9XZWJHZW9sb2NhdGlvbk1hbmFnZXJQcm94eS5oIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvV2ViR2VvbG9jYXRpb25NYW5hZ2VyUHJveHkuaAppbmRleCA3NDkzNmU0NWEw
ZDgzODNhOGI0YjNkNmQ1NzhjOWJkMjJiZTNmYTVlLi5lZjExZjRjYjA2YjA0ZWUwNWUyMjAyMTZm
OGQyODY0NGRhMGY0ZjY1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJH
ZW9sb2NhdGlvbk1hbmFnZXJQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dl
Ykdlb2xvY2F0aW9uTWFuYWdlclByb3h5LmgKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJp
Z2h0IChDKSAyMDExLCAyMDEyLCAyMDEzIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqIENvcHlyaWdodCAoQykgMjAxMS0yMDIyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMzEsOSArMzEsMTUgQEAKICNp
bmNsdWRlICJXZWJDb250ZXh0U3VwcGxlbWVudC5oIgogI2luY2x1ZGUgIldlYlBhZ2VQcm94eUlk
ZW50aWZpZXIuaCIKICNpbmNsdWRlIDxXZWJDb3JlL0dlb2xvY2F0aW9uUG9zaXRpb25EYXRhLmg+
CisjaW5jbHVkZSA8V2ViQ29yZS9SZWdpc3RyYWJsZURvbWFpbi5oPgorI2luY2x1ZGUgPHd0Zi9I
YXNoTWFwLmg+CiAjaW5jbHVkZSA8d3RmL0hhc2hTZXQuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9X
VEZTdHJpbmcuaD4KIAorI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCisjaW5jbHVkZSA8V2ViQ29y
ZS9Db3JlTG9jYXRpb25HZW9sb2NhdGlvblByb3ZpZGVyLmg+CisjZW5kaWYKKwogbmFtZXNwYWNl
IEFQSSB7CiBjbGFzcyBHZW9sb2NhdGlvblByb3ZpZGVyOwogfQpAQCAtNDMsMjAgKzQ5LDIzIEBA
IG5hbWVzcGFjZSBXZWJLaXQgewogY2xhc3MgV2ViR2VvbG9jYXRpb25Qb3NpdGlvbjsKIGNsYXNz
IFdlYlByb2Nlc3NQb29sOwogCi1jbGFzcyBXZWJHZW9sb2NhdGlvbk1hbmFnZXJQcm94eSA6IHB1
YmxpYyBBUEk6Ok9iamVjdEltcGw8QVBJOjpPYmplY3Q6OlR5cGU6Okdlb2xvY2F0aW9uTWFuYWdl
cj4sIHB1YmxpYyBXZWJDb250ZXh0U3VwcGxlbWVudCwgcHJpdmF0ZSBJUEM6Ok1lc3NhZ2VSZWNl
aXZlciB7CitjbGFzcyBXZWJHZW9sb2NhdGlvbk1hbmFnZXJQcm94eSA6IHB1YmxpYyBBUEk6Ok9i
amVjdEltcGw8QVBJOjpPYmplY3Q6OlR5cGU6Okdlb2xvY2F0aW9uTWFuYWdlcj4sIHB1YmxpYyBX
ZWJDb250ZXh0U3VwcGxlbWVudCwgcHJpdmF0ZSBJUEM6Ok1lc3NhZ2VSZWNlaXZlcgorI2lmIFBM
QVRGT1JNKElPU19GQU1JTFkpCisgICAgLCBwdWJsaWMgV2ViQ29yZTo6Q29yZUxvY2F0aW9uR2Vv
bG9jYXRpb25Qcm92aWRlcjo6Q2xpZW50CisjZW5kaWYKK3sKIHB1YmxpYzoKICAgICBzdGF0aWMg
Y29uc3QgY2hhciogc3VwcGxlbWVudE5hbWUoKTsKIAogICAgIHN0YXRpYyBSZWY8V2ViR2VvbG9j
YXRpb25NYW5hZ2VyUHJveHk+IGNyZWF0ZShXZWJQcm9jZXNzUG9vbCopOworICAgIH5XZWJHZW9s
b2NhdGlvbk1hbmFnZXJQcm94eSgpOwogCisjaWYgIVBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAg
dm9pZCBzZXRQcm92aWRlcihzdGQ6OnVuaXF1ZV9wdHI8QVBJOjpHZW9sb2NhdGlvblByb3ZpZGVy
PiYmKTsKKyNlbmRpZgogCiAgICAgdm9pZCBwcm92aWRlckRpZENoYW5nZVBvc2l0aW9uKFdlYkdl
b2xvY2F0aW9uUG9zaXRpb24qKTsKICAgICB2b2lkIHByb3ZpZGVyRGlkRmFpbFRvRGV0ZXJtaW5l
UG9zaXRpb24oY29uc3QgU3RyaW5nJiBlcnJvck1lc3NhZ2UgPSBTdHJpbmcoKSk7Ci0jaWYgUExB
VEZPUk0oSU9TX0ZBTUlMWSkKLSAgICB2b2lkIHJlc2V0UGVybWlzc2lvbnMoKTsKLSNlbmRpZgot
ICAgIGNvbnN0IHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6R2VvbG9jYXRpb25Qb3NpdGlvbkRhdGE+
JiBsYXN0UG9zaXRpb24oKSBjb25zdCB7IHJldHVybiBtX2xhc3RQb3NpdGlvbjsgfQogCiAgICAg
dXNpbmcgQVBJOjpPYmplY3Q6OnJlZjsKICAgICB1c2luZyBBUEk6Ok9iamVjdDo6ZGVyZWY7CkBA
IC03MywxOSArODIsNDAgQEAgcHJpdmF0ZToKICAgICAvLyBJUEM6Ok1lc3NhZ2VSZWNlaXZlcgog
ICAgIHZvaWQgZGlkUmVjZWl2ZU1lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwgSVBDOjpEZWNvZGVy
Jikgb3ZlcnJpZGU7CiAKLSAgICBib29sIGlzVXBkYXRpbmcoKSBjb25zdCB7IHJldHVybiAhbV91
cGRhdGVSZXF1ZXN0ZXJzLmlzRW1wdHkoKTsgfQotICAgIGJvb2wgaXNIaWdoQWNjdXJhY3lFbmFi
bGVkKCkgY29uc3QgeyByZXR1cm4gIW1faGlnaEFjY3VyYWN5UmVxdWVzdGVycy5pc0VtcHR5KCk7
IH0KKyAgICAvLyBJUEMgbWVzc2FnZXMuCisgICAgdm9pZCBzdGFydFVwZGF0aW5nKElQQzo6Q29u
bmVjdGlvbiYsIGNvbnN0IFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluJiwgV2ViUGFnZVByb3h5
SWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiBhdXRob3JpemF0aW9uVG9rZW4sIGJvb2wgZW5hYmxl
SGlnaEFjY3VyYWN5KTsKKyAgICB2b2lkIHN0b3BVcGRhdGluZyhJUEM6OkNvbm5lY3Rpb24mLCBj
b25zdCBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiYpOworICAgIHZvaWQgc2V0RW5hYmxlSGln
aEFjY3VyYWN5KElQQzo6Q29ubmVjdGlvbiYsIGNvbnN0IFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9t
YWluJiwgYm9vbCk7CiAKLSAgICB2b2lkIHN0YXJ0VXBkYXRpbmcoSVBDOjpDb25uZWN0aW9uJiwg
V2ViUGFnZVByb3h5SWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiBhdXRob3JpemF0aW9uVG9rZW4p
OwotICAgIHZvaWQgc3RvcFVwZGF0aW5nKElQQzo6Q29ubmVjdGlvbiYpOwotICAgIHZvaWQgcmVt
b3ZlUmVxdWVzdGVyKGNvbnN0IElQQzo6Q29ubmVjdGlvbjo6Q2xpZW50Kik7Ci0gICAgdm9pZCBz
ZXRFbmFibGVIaWdoQWNjdXJhY3koSVBDOjpDb25uZWN0aW9uJiwgYm9vbCk7CisjaWYgUExBVEZP
Uk0oSU9TX0ZBTUlMWSkKKyAgICAvLyBDb3JlTG9jYXRpb25HZW9sb2NhdGlvblByb3ZpZGVyOjpD
bGllbnQKKyAgICB2b2lkIHBvc2l0aW9uQ2hhbmdlZChjb25zdCBTdHJpbmcmIHdlYnNpdGVJZGVu
dGlmaWVyLCBXZWJDb3JlOjpHZW9sb2NhdGlvblBvc2l0aW9uRGF0YSYmKSBmaW5hbDsKKyAgICB2
b2lkIGVycm9yT2NjdXJyZWQoY29uc3QgU3RyaW5nJiB3ZWJzaXRlSWRlbnRpZmllciwgY29uc3Qg
U3RyaW5nJiBlcnJvck1lc3NhZ2UpIGZpbmFsOworICAgIHZvaWQgcmVzZXRHZW9sb2NhdGlvbihj
b25zdCBTdHJpbmcmIHdlYnNpdGVJZGVudGlmaWVyKSBmaW5hbDsKKyNlbmRpZgogCi0gICAgSGFz
aFNldDxjb25zdCBJUEM6OkNvbm5lY3Rpb246OkNsaWVudCo+IG1fdXBkYXRlUmVxdWVzdGVyczsK
LSAgICBIYXNoU2V0PGNvbnN0IElQQzo6Q29ubmVjdGlvbjo6Q2xpZW50Kj4gbV9oaWdoQWNjdXJh
Y3lSZXF1ZXN0ZXJzOworICAgIHN0cnVjdCBQZXJEb21haW5EYXRhIHsKKyAgICAgICAgV1RGX01B
S0VfU1RSVUNUX0ZBU1RfQUxMT0NBVEVEOworICAgICAgICBIYXNoU2V0PElQQzo6Q29ubmVjdGlv
bjo6VW5pcXVlSUQ+IHdhdGNoZXJzOworICAgICAgICBIYXNoU2V0PElQQzo6Q29ubmVjdGlvbjo6
VW5pcXVlSUQ+IHdhdGNoZXJzTmVlZGluZ0hpZ2hBY2N1cmFjeTsKKyAgICAgICAgc3RkOjpvcHRp
b25hbDxXZWJDb3JlOjpHZW9sb2NhdGlvblBvc2l0aW9uRGF0YT4gbGFzdFBvc2l0aW9uOwogCisg
ICAgICAgIC8vIEZJWE1FOiBVc2UgZm9yIGFsbCBDb2NvYSBwb3J0cy4KKyNpZiBQTEFURk9STShJ
T1NfRkFNSUxZKQorICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8V2ViQ29yZTo6Q29yZUxvY2F0aW9u
R2VvbG9jYXRpb25Qcm92aWRlcj4gcHJvdmlkZXI7CisjZW5kaWYKKyAgICB9OworCisgICAgYm9v
bCBpc1VwZGF0aW5nKGNvbnN0IFBlckRvbWFpbkRhdGEmKSBjb25zdDsKKyAgICBib29sIGlzSGln
aEFjY3VyYWN5RW5hYmxlZChjb25zdCBQZXJEb21haW5EYXRhJikgY29uc3Q7CisgICAgdm9pZCBw
cm92aWRlclN0YXJ0VXBkYXRpbmcoUGVyRG9tYWluRGF0YSYsIGNvbnN0IFdlYkNvcmU6OlJlZ2lz
dHJhYmxlRG9tYWluJik7CisgICAgdm9pZCBwcm92aWRlclN0b3BVcGRhdGluZyhQZXJEb21haW5E
YXRhJik7CisgICAgdm9pZCBwcm92aWRlclNldEVuYWJsZWRIaWdoQWNjdXJhY3koUGVyRG9tYWlu
RGF0YSYsIGJvb2wgZW5hYmxlZCk7CisKKyAgICBIYXNoTWFwPFdlYkNvcmU6OlJlZ2lzdHJhYmxl
RG9tYWluLCBzdGQ6OnVuaXF1ZV9wdHI8UGVyRG9tYWluRGF0YT4+IG1fcGVyRG9tYWluRGF0YTsK
KyNpZiAhUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICBzdGQ6OnVuaXF1ZV9wdHI8QVBJOjpHZW9s
b2NhdGlvblByb3ZpZGVyPiBtX3Byb3ZpZGVyOwotICAgIHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6
R2VvbG9jYXRpb25Qb3NpdGlvbkRhdGE+IG1fbGFzdFBvc2l0aW9uOworI2VuZGlmCiB9OwogCiB9
IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L1dlYkdlb2xvY2F0aW9uTWFuYWdlclByb3h5Lm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvV2ViR2VvbG9jYXRpb25NYW5hZ2VyUHJveHkubWVzc2FnZXMuaW4KaW5kZXggZTVl
OWMyN2QxNGE1ZmI3MjZmY2MyYzgxZmYzZTE2NWVhM2U4NDBiZS4uOTA0MWE5MGMyNTBmOGFkZDY4
YmIxM2IzYWJiNTRiZWI2NmNiMmQyNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvV2ViR2VvbG9jYXRpb25NYW5hZ2VyUHJveHkubWVzc2FnZXMuaW4KKysrIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvV2ViR2VvbG9jYXRpb25NYW5hZ2VyUHJveHkubWVzc2FnZXMuaW4KQEAg
LTIxLDcgKzIxLDcgQEAKICMgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KIAogbWVzc2FnZXMgLT4gV2ViR2VvbG9jYXRp
b25NYW5hZ2VyUHJveHkgewotICAgIFN0YXJ0VXBkYXRpbmcoV2ViS2l0OjpXZWJQYWdlUHJveHlJ
ZGVudGlmaWVyIHBhZ2VQcm94eUlELCBTdHJpbmcgYXV0aG9yaXphdGlvblRva2VuKSBXYW50c0Nv
bm5lY3Rpb24KLSAgICBTdG9wVXBkYXRpbmcoKSBXYW50c0Nvbm5lY3Rpb24KLSAgICBTZXRFbmFi
bGVIaWdoQWNjdXJhY3koYm9vbCBlbmFibGVkKSBXYW50c0Nvbm5lY3Rpb24KKyAgICBTdGFydFVw
ZGF0aW5nKFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluIHJlZ2lzdHJhYmxlRG9tYWluLCBXZWJL
aXQ6OldlYlBhZ2VQcm94eUlkZW50aWZpZXIgcGFnZVByb3h5SUQsIFN0cmluZyBhdXRob3JpemF0
aW9uVG9rZW4sIGJvb2wgZW5hYmxlSGlnaEFjY3VyYWN5KSBXYW50c0Nvbm5lY3Rpb24KKyAgICBT
dG9wVXBkYXRpbmcoV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4gcmVnaXN0cmFibGVEb21haW4p
IFdhbnRzQ29ubmVjdGlvbgorICAgIFNldEVuYWJsZUhpZ2hBY2N1cmFjeShXZWJDb3JlOjpSZWdp
c3RyYWJsZURvbWFpbiByZWdpc3RyYWJsZURvbWFpbiwgYm9vbCBlbmFibGVkKSBXYW50c0Nvbm5l
Y3Rpb24KIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XS0dlb2xv
Y2F0aW9uUHJvdmlkZXJJT1MubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tHZW9s
b2NhdGlvblByb3ZpZGVySU9TLm1tCmluZGV4IGY1ZTlmZDdiYzM0MTI5N2FmN2IyNGU2NzQxNjMz
MmNkOTZhZDczOWMuLjZmMDY5NmQzODk1NzI0ODcyZDRlZGM5YTRhMDU5ZDQyMGRkODExY2QgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XS0dlb2xvY2F0aW9uUHJvdmlk
ZXJJT1MubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dLR2VvbG9jYXRpb25Q
cm92aWRlcklPUy5tbQpAQCAtNTEsNyArNTEsNiBAQAogI2ltcG9ydCA8d3RmL1VSTC5oPgogCiAv
LyBGSVhNRTogUmVtb3ZlIHVzZSBvZiBXZWJLaXQxIGZyb20gV2ViS2l0MgotI2ltcG9ydCA8V2Vi
S2l0L1dlYkdlb2xvY2F0aW9uQ29yZUxvY2F0aW9uUHJvdmlkZXIuaD4KICNpbXBvcnQgPFdlYktp
dC9XZWJBbGxvd0RlbnlQb2xpY3lMaXN0ZW5lci5oPgogCiBBTExPV19ERVBSRUNBVEVEX0RFQ0xB
UkFUSU9OU19CRUdJTgpAQCAtNTksOSArNTgsNiBAQCBBTExPV19ERVBSRUNBVEVEX0RFQ0xBUkFU
SU9OU19CRUdJTgogQGludGVyZmFjZSBXS0dlb2xvY2F0aW9uUHJvdmlkZXJJT1MgKF9XS0dlb2xv
Y2F0aW9uQ29yZUxvY2F0aW9uTGlzdGVuZXIpIDxfV0tHZW9sb2NhdGlvbkNvcmVMb2NhdGlvbkxp
c3RlbmVyPgogQGVuZAogCi1AaW50ZXJmYWNlIFdLTGVnYWN5Q29yZUxvY2F0aW9uUHJvdmlkZXIg
OiBOU09iamVjdDxfV0tHZW9sb2NhdGlvbkNvcmVMb2NhdGlvblByb3ZpZGVyLCBXZWJHZW9sb2Nh
dGlvbkNvcmVMb2NhdGlvblVwZGF0ZUxpc3RlbmVyPgotQGVuZAotCiBAaW50ZXJmYWNlIFdLV2Vi
QWxsb3dEZW55UG9saWN5TGlzdGVuZXIgOiBOU09iamVjdDxXZWJBbGxvd0RlbnlQb2xpY3lMaXN0
ZW5lcj4KIC0gKGlkKWluaXRXaXRoQ29tcGxldGlvbkhhbmRsZXI6KEZ1bmN0aW9uPHZvaWQoYm9v
bCk+JiYpY29tcGxldGlvbkhhbmRsZXI7CiAtICh2b2lkKWRlbnlPbmx5VGhpc1JlcXVlc3QgTk9f
UkVUVVJOX0RVRV9UT19BU1NFUlQ7CkBAIC03OSw4ICs3NSw3IEBAIHN0cnVjdCBHZW9sb2NhdGlv
blJlcXVlc3REYXRhIHsKIH07CiAKIEBpbXBsZW1lbnRhdGlvbiBXS0dlb2xvY2F0aW9uUHJvdmlk
ZXJJT1MgewotICAgIFJlZlB0cjxXZWJLaXQ6OldlYkdlb2xvY2F0aW9uTWFuYWdlclByb3h5PiBf
Z2VvbG9jYXRpb25NYW5hZ2VyOwotICAgIFJldGFpblB0cjxpZCA8X1dLR2VvbG9jYXRpb25Db3Jl
TG9jYXRpb25Qcm92aWRlcj4+IF9jb3JlTG9jYXRpb25Qcm92aWRlcjsKKyAgICBSZXRhaW5QdHI8
aWQgPF9XS0dlb2xvY2F0aW9uQ29yZUxvY2F0aW9uUHJvdmlkZXI+PiBfY2xpZW50QXV0aG9yaXph
dGlvblByb3ZpZGVyOwogICAgIEJPT0wgX2lzV2ViQ29yZUdlb2xvY2F0aW9uQWN0aXZlOwogICAg
IFJlZlB0cjxXZWJLaXQ6OldlYkdlb2xvY2F0aW9uUG9zaXRpb24+IF9sYXN0QWN0aXZlUG9zaXRp
b247CiAgICAgRGVxdWU8R2VvbG9jYXRpb25SZXF1ZXN0RGF0YT4gX3JlcXVlc3RzV2FpdGluZ0Zv
ckNvcmVMb2NhdGlvbkF1dGhvcml6YXRpb247CkBAIC04OCw0OCArODMsMTYgQEAgQGltcGxlbWVu
dGF0aW9uIFdLR2VvbG9jYXRpb25Qcm92aWRlcklPUyB7CiAKICNwcmFnbWEgbWFyayAtIFdLR2Vv
bG9jYXRpb25Qcm92aWRlciBjYWxsYmFja3MgaW1wbGVtZW50YXRpb24uCiAKLXN0YXRpYyB2b2lk
IHN0YXJ0VXBkYXRpbmdDYWxsYmFjayhXS0dlb2xvY2F0aW9uTWFuYWdlclJlZiBnZW9sb2NhdGlv
bk1hbmFnZXIsIGNvbnN0IHZvaWQqIGNsaWVudEluZm8pCi17Ci0gICAgV0tHZW9sb2NhdGlvblBy
b3ZpZGVySU9TICpnZW9sb2NhdGlvblByb3ZpZGVyID0gcmVpbnRlcnByZXRfY2FzdDxXS0dlb2xv
Y2F0aW9uUHJvdmlkZXJJT1MqPihjb25zdF9jYXN0PHZvaWQqPihjbGllbnRJbmZvKSk7Ci0gICAg
QVNTRVJUKFtnZW9sb2NhdGlvblByb3ZpZGVyIGlzS2luZE9mQ2xhc3M6W1dLR2VvbG9jYXRpb25Q
cm92aWRlcklPUyBjbGFzc11dKTsKLSAgICBbZ2VvbG9jYXRpb25Qcm92aWRlciBfc3RhcnRVcGRh
dGluZ107Ci19Ci0KLXN0YXRpYyB2b2lkIHN0b3BVcGRhdGluZ0NhbGxiYWNrKFdLR2VvbG9jYXRp
b25NYW5hZ2VyUmVmIGdlb2xvY2F0aW9uTWFuYWdlciwgY29uc3Qgdm9pZCogY2xpZW50SW5mbykK
LXsKLSAgICBXS0dlb2xvY2F0aW9uUHJvdmlkZXJJT1MgKmdlb2xvY2F0aW9uUHJvdmlkZXIgPSBy
ZWludGVycHJldF9jYXN0PFdLR2VvbG9jYXRpb25Qcm92aWRlcklPUyo+KGNvbnN0X2Nhc3Q8dm9p
ZCo+KGNsaWVudEluZm8pKTsKLSAgICBBU1NFUlQoW2dlb2xvY2F0aW9uUHJvdmlkZXIgaXNLaW5k
T2ZDbGFzczpbV0tHZW9sb2NhdGlvblByb3ZpZGVySU9TIGNsYXNzXV0pOwotICAgIFtnZW9sb2Nh
dGlvblByb3ZpZGVyIF9zdG9wVXBkYXRpbmddOwotfQotCi1zdGF0aWMgdm9pZCBzZXRFbmFibGVI
aWdoQWNjdXJhY3koV0tHZW9sb2NhdGlvbk1hbmFnZXJSZWYgZ2VvbG9jYXRpb25NYW5hZ2VyLCBi
b29sIGVuYWJsZSwgY29uc3Qgdm9pZCogY2xpZW50SW5mbykKLXsKLSAgICBXS0dlb2xvY2F0aW9u
UHJvdmlkZXJJT1MgKmdlb2xvY2F0aW9uUHJvdmlkZXIgPSByZWludGVycHJldF9jYXN0PFdLR2Vv
bG9jYXRpb25Qcm92aWRlcklPUyo+KGNvbnN0X2Nhc3Q8dm9pZCo+KGNsaWVudEluZm8pKTsKLSAg
ICBBU1NFUlQoW2dlb2xvY2F0aW9uUHJvdmlkZXIgaXNLaW5kT2ZDbGFzczpbV0tHZW9sb2NhdGlv
blByb3ZpZGVySU9TIGNsYXNzXV0pOwotICAgIFtnZW9sb2NhdGlvblByb3ZpZGVyIF9zZXRFbmFi
bGVIaWdoQWNjdXJhY3k6ZW5hYmxlXTsKLX0KLQogLSAodm9pZClfc3RhcnRVcGRhdGluZwogewot
ICAgIF9pc1dlYkNvcmVHZW9sb2NhdGlvbkFjdGl2ZSA9IFlFUzsKLSAgICBbX2NvcmVMb2NhdGlv
blByb3ZpZGVyIHN0YXJ0XTsKLQotICAgIC8vIElmIHdlIGhhdmUgdGhlIGxhc3QgcG9zaXRpb24s
IGl0IGlzIGZyb20gdGhlIGluaXRpYWxpemF0aW9uIG9yIHdhcm0gdXAuIEl0IGlzIHRoZSBsYXN0
IGtub3duCi0gICAgLy8gZ29vZCBwb3NpdGlvbiBzbyB3ZSBjYW4gcmV0dXJuIGl0IGRpcmVjdGx5
LgotICAgIGlmIChfbGFzdEFjdGl2ZVBvc2l0aW9uKQotICAgICAgICBfZ2VvbG9jYXRpb25NYW5h
Z2VyLT5wcm92aWRlckRpZENoYW5nZVBvc2l0aW9uKF9sYXN0QWN0aXZlUG9zaXRpb24uZ2V0KCkp
OwogfQogCiAtICh2b2lkKV9zdG9wVXBkYXRpbmcKIHsKLSAgICBfaXNXZWJDb3JlR2VvbG9jYXRp
b25BY3RpdmUgPSBOTzsKLSAgICBbX2NvcmVMb2NhdGlvblByb3ZpZGVyIHN0b3BdOwotICAgIF9s
YXN0QWN0aXZlUG9zaXRpb24gPSBudWxscHRyOwogfQogCiAtICh2b2lkKV9zZXRFbmFibGVIaWdo
QWNjdXJhY3k6KEJPT0wpZW5hYmxlSGlnaEFjY3VyYWN5CiB7Ci0gICAgW19jb3JlTG9jYXRpb25Q
cm92aWRlciBzZXRFbmFibGVIaWdoQWNjdXJhY3k6ZW5hYmxlSGlnaEFjY3VyYWN5XTsKIH0KIAog
I3ByYWdtYSBtYXJrIC0gUHVibGljIEFQSSBpbXBsZW1lbnRhdGlvbi4KQEAgLTE0NiwyNSArMTA5
LDMzIEBAIC0gKGlkKWluaXRXaXRoUHJvY2Vzc1Bvb2w6KFdlYktpdDo6V2ViUHJvY2Vzc1Bvb2wm
KXByb2Nlc3NQb29sCiAgICAgc2VsZiA9IFtzdXBlciBpbml0XTsKICAgICBpZiAoIXNlbGYpCiAg
ICAgICAgIHJldHVybiBuaWw7Ci0gICAgX2dlb2xvY2F0aW9uTWFuYWdlciA9IHByb2Nlc3NQb29s
LnN1cHBsZW1lbnQ8V2ViS2l0OjpXZWJHZW9sb2NhdGlvbk1hbmFnZXJQcm94eT4oKTsKLSAgICBX
S0dlb2xvY2F0aW9uUHJvdmlkZXJWMSBwcm92aWRlckNhbGxiYWNrID0gewotICAgICAgICB7IDEs
IHNlbGYgfSwKLSAgICAgICAgc3RhcnRVcGRhdGluZ0NhbGxiYWNrLAotICAgICAgICBzdG9wVXBk
YXRpbmdDYWxsYmFjaywKLSAgICAgICAgc2V0RW5hYmxlSGlnaEFjY3VyYWN5Ci0gICAgfTsKLSAg
ICBXS0dlb2xvY2F0aW9uTWFuYWdlclNldFByb3ZpZGVyKHRvQVBJKF9nZW9sb2NhdGlvbk1hbmFn
ZXIuZ2V0KCkpLCAmcHJvdmlkZXJDYWxsYmFjay5iYXNlKTsKLSAgICBfY29yZUxvY2F0aW9uUHJv
dmlkZXIgPSB3cmFwcGVyKHByb2Nlc3NQb29sKS5fY29yZUxvY2F0aW9uUHJvdmlkZXIgPzogYWRv
cHROUyhzdGF0aWNfY2FzdDxpZCA8X1dLR2VvbG9jYXRpb25Db3JlTG9jYXRpb25Qcm92aWRlcj4+
KFtbV0tMZWdhY3lDb3JlTG9jYXRpb25Qcm92aWRlciBhbGxvY10gaW5pdF0pKTsKLSAgICBbX2Nv
cmVMb2NhdGlvblByb3ZpZGVyIHNldExpc3RlbmVyOnNlbGZdOworCisgICAgLy8gRklYTUU6IFNv
bWUgY2xpZW50cyB1c2UgdGhpcyBTUEkgdG8gc2V0IGEgX2NvcmVMb2NhdGlvblByb3ZpZGVyIHRo
YXQgZmFpbHMgYWxsIGF1dGhvcml6YXRpb25zIGFzIGEgd2F5IHRvIGRpc2FibGUgdGhlIEdlb2xv
Y2F0aW9uIEFQSS4KKyAgICAvLyBUaGV5IHNob3VsZCBqdXN0IGltcGxlbWVudCByZXF1ZXN0R2Vv
bG9jYXRpb25BdXRob3JpemF0aW9uRm9yVVJMIG9uIHRoZSBXS1dlYlZpZXcgaW5zdGVhZCwgc28g
d2UgY2FuIGRyb3AgdGhpcyBsb2dpYyBlbnRpcmVseS4KKyAgICBfY2xpZW50QXV0aG9yaXphdGlv
blByb3ZpZGVyID0gd3JhcHBlcihwcm9jZXNzUG9vbCkuX2NvcmVMb2NhdGlvblByb3ZpZGVyOwor
ICAgIGlmIChfY2xpZW50QXV0aG9yaXphdGlvblByb3ZpZGVyKQorICAgICAgICBbX2NsaWVudEF1
dGhvcml6YXRpb25Qcm92aWRlciBzZXRMaXN0ZW5lcjpzZWxmXTsKKwogICAgIHJldHVybiBzZWxm
OwogfQogCiAtICh2b2lkKWRlY2lkZVBvbGljeUZvckdlb2xvY2F0aW9uUmVxdWVzdEZyb21Pcmln
aW46KFdlYktpdDo6RnJhbWVJbmZvRGF0YSYmKWZyYW1lSW5mbyBjb21wbGV0aW9uSGFuZGxlcjoo
RnVuY3Rpb248dm9pZChib29sKT4mJiljb21wbGV0aW9uSGFuZGxlciB2aWV3OihXS1dlYlZpZXcg
Kiljb250ZW50VmlldwogewotICAgIC8vIFN0ZXAgMTogYXNrIHRoZSB1c2VyIGlmIHRoZSBhcHAg
Y2FuIHVzZSBHZW9sb2NhdGlvbi4KKyAgICBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiByZWdp
c3RyYWJsZURvbWFpbihmcmFtZUluZm8uc2VjdXJpdHlPcmlnaW4pOwogICAgIEdlb2xvY2F0aW9u
UmVxdWVzdERhdGEgZ2VvbG9jYXRpb25SZXF1ZXN0RGF0YSB7IFtjb250ZW50VmlldyBVUkxdLCBX
VEZNb3ZlKGZyYW1lSW5mbyksIFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpLCBjb250ZW50Vmll
dyB9OwogICAgIF9yZXF1ZXN0c1dhaXRpbmdGb3JDb3JlTG9jYXRpb25BdXRob3JpemF0aW9uLmFw
cGVuZChXVEZNb3ZlKGdlb2xvY2F0aW9uUmVxdWVzdERhdGEpKTsKLSAgICBbX2NvcmVMb2NhdGlv
blByb3ZpZGVyIHJlcXVlc3RHZW9sb2NhdGlvbkF1dGhvcml6YXRpb25dOworICAgIGlmIChfY2xp
ZW50QXV0aG9yaXphdGlvblByb3ZpZGVyKSB7CisgICAgICAgIC8vIFN0ZXAgMTogYXNrIHRoZSB1
c2VyIGlmIHRoZSBhcHAgY2FuIHVzZSBHZW9sb2NhdGlvbi4KKyAgICAgICAgW19jbGllbnRBdXRo
b3JpemF0aW9uUHJvdmlkZXIgcmVxdWVzdEdlb2xvY2F0aW9uQXV0aG9yaXphdGlvbl07CisgICAg
fSBlbHNlIHsKKyAgICAgICAgLy8gU3RlcCAxOiBhc2sgQ29yZUxvY2F0aW9uIGlmIHRoZSBhcHAg
Y2FuIHVzZSBHZW9sb2NhdGlvbi4KKyAgICAgICAgV2ViQ29yZTo6Q29yZUxvY2F0aW9uR2VvbG9j
YXRpb25Qcm92aWRlcjo6cmVxdWVzdEF1dGhvcml6YXRpb24ocmVnaXN0cmFibGVEb21haW4sIFtz
ZWxmLCBzdHJvbmdTZWxmID0gcmV0YWluUHRyKHNlbGYpXShib29sIGF1dGhvcml6ZWQpIHsKKyAg
ICAgICAgICAgIGlmIChhdXRob3JpemVkKQorICAgICAgICAgICAgICAgIFtzZWxmIGdlb2xvY2F0
aW9uQXV0aG9yaXphdGlvbkdyYW50ZWRdOworICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAg
ICAgIFtzZWxmIGdlb2xvY2F0aW9uQXV0aG9yaXphdGlvbkRlbmllZF07CisgICAgICAgIH0pOwor
ICAgIH0KIH0KIEBlbmQKIApAQCAtMTc0LDcgKzE0NSw3IEBAIEBpbXBsZW1lbnRhdGlvbiBXS0dl
b2xvY2F0aW9uUHJvdmlkZXJJT1MgKFdlYkdlb2xvY2F0aW9uQ29yZUxvY2F0aW9uVXBkYXRlTGlz
dGVuCiAKIC0gKHZvaWQpZ2VvbG9jYXRpb25BdXRob3JpemF0aW9uR3JhbnRlZAogewotICAgIC8v
IFN0ZXAgMjogYXNrIHRoZSB1c2VyIGlmIHRoaXMgcGFydGljdWxhciBwYWdlIGNhbiB1c2UgZ2Vs
b2NhdGlvbi4KKyAgICAvLyBTdGVwIDI6IGFzayB0aGUgdXNlciBpZiB0aGlzIHBhcnRpY3VsYXIg
cGFnZSBjYW4gdXNlIGdlb2xvY2F0aW9uLgogICAgIGlmIChfcmVxdWVzdHNXYWl0aW5nRm9yQ29y
ZUxvY2F0aW9uQXV0aG9yaXphdGlvbi5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybjsKIApAQCAt
MjEwLDkzICsxODEsMTQgQEAgLSAodm9pZClnZW9sb2NhdGlvbkF1dGhvcml6YXRpb25EZW5pZWQK
IAogLSAodm9pZClwb3NpdGlvbkNoYW5nZWQ6KF9XS0dlb2xvY2F0aW9uUG9zaXRpb24gKilwb3Np
dGlvbgogewotICAgIF9sYXN0QWN0aXZlUG9zaXRpb24gPSBwb3NpdGlvbi0+X2dlb2xvY2F0aW9u
UG9zaXRpb24uZ2V0KCk7Ci0gICAgX2dlb2xvY2F0aW9uTWFuYWdlci0+cHJvdmlkZXJEaWRDaGFu
Z2VQb3NpdGlvbihfbGFzdEFjdGl2ZVBvc2l0aW9uLmdldCgpKTsKLX0KLQotLSAodm9pZCllcnJv
ck9jY3VycmVkOihOU1N0cmluZyAqKWVycm9yTWVzc2FnZQotewotICAgIF9nZW9sb2NhdGlvbk1h
bmFnZXItPnByb3ZpZGVyRGlkRmFpbFRvRGV0ZXJtaW5lUG9zaXRpb24oZXJyb3JNZXNzYWdlKTsK
LX0KLQotLSAodm9pZClyZXNldEdlb2xvY2F0aW9uCi17Ci0gICAgX2dlb2xvY2F0aW9uTWFuYWdl
ci0+cmVzZXRQZXJtaXNzaW9ucygpOwotfQotCi1AZW5kCi0KLSMgcHJhZ21hIG1hcmsgLSBJbXBs
ZW1lbnRhdGlvbiBvZiBXS0xlZ2FjeUNvcmVMb2NhdGlvblByb3ZpZGVyCi0KLUBpbXBsZW1lbnRh
dGlvbiBXS0xlZ2FjeUNvcmVMb2NhdGlvblByb3ZpZGVyIHsKLSAgICBpZCA8X1dLR2VvbG9jYXRp
b25Db3JlTG9jYXRpb25MaXN0ZW5lcj4gX2xpc3RlbmVyOwotICAgIFJldGFpblB0cjxXZWJHZW9s
b2NhdGlvbkNvcmVMb2NhdGlvblByb3ZpZGVyPiBfcHJvdmlkZXI7Ci19Ci0KLS8vIDxfV0tHZW9s
b2NhdGlvbkNvcmVMb2NhdGlvblByb3ZpZGVyPiBNZXRob2RzCi0KLS0gKHZvaWQpc2V0TGlzdGVu
ZXI6KGlkPF9XS0dlb2xvY2F0aW9uQ29yZUxvY2F0aW9uTGlzdGVuZXI+KWxpc3RlbmVyCi17Ci0g
ICAgQVNTRVJUKGxpc3RlbmVyICYmICFfbGlzdGVuZXIgJiYgIV9wcm92aWRlcik7Ci0gICAgX2xp
c3RlbmVyID0gbGlzdGVuZXI7Ci0gICAgX3Byb3ZpZGVyID0gYWRvcHROUyhbW1dlYkdlb2xvY2F0
aW9uQ29yZUxvY2F0aW9uUHJvdmlkZXIgYWxsb2NdIGluaXRXaXRoTGlzdGVuZXI6c2VsZl0pOwot
fQotCi0tICh2b2lkKXJlcXVlc3RHZW9sb2NhdGlvbkF1dGhvcml6YXRpb24KLXsKLSAgICBBU1NF
UlQoX3Byb3ZpZGVyKTsKLSAgICBbX3Byb3ZpZGVyIHJlcXVlc3RHZW9sb2NhdGlvbkF1dGhvcml6
YXRpb25dOwotfQotCi0tICh2b2lkKXN0YXJ0Ci17Ci0gICAgQVNTRVJUKF9wcm92aWRlcik7Ci0g
ICAgW19wcm92aWRlciBzdGFydF07Ci19Ci0KLS0gKHZvaWQpc3RvcAotewotICAgIEFTU0VSVChf
cHJvdmlkZXIpOwotICAgIFtfcHJvdmlkZXIgc3RvcF07Ci19Ci0KLS0gKHZvaWQpc2V0RW5hYmxl
SGlnaEFjY3VyYWN5OihCT09MKWZsYWcKLXsKLSAgICBBU1NFUlQoX3Byb3ZpZGVyKTsKLSAgICBb
X3Byb3ZpZGVyIHNldEVuYWJsZUhpZ2hBY2N1cmFjeTpmbGFnXTsKLX0KLQotLy8gPFdlYkdlb2xv
Y2F0aW9uQ29yZUxvY2F0aW9uVXBkYXRlTGlzdGVuZXI+IE1ldGhvZHMKLQotLSAodm9pZClnZW9s
b2NhdGlvbkF1dGhvcml6YXRpb25HcmFudGVkCi17Ci0gICAgQVNTRVJUKF9saXN0ZW5lcik7Ci0g
ICAgW19saXN0ZW5lciBnZW9sb2NhdGlvbkF1dGhvcml6YXRpb25HcmFudGVkXTsKLX0KLQotLSAo
dm9pZClnZW9sb2NhdGlvbkF1dGhvcml6YXRpb25EZW5pZWQKLXsKLSAgICBBU1NFUlQoX2xpc3Rl
bmVyKTsKLSAgICBbX2xpc3RlbmVyIGdlb2xvY2F0aW9uQXV0aG9yaXphdGlvbkRlbmllZF07Ci19
Ci0KLS0gKHZvaWQpcG9zaXRpb25DaGFuZ2VkOihXZWJDb3JlOjpHZW9sb2NhdGlvblBvc2l0aW9u
RGF0YSYmKWNvcmVQb3NpdGlvbgotewotICAgIEFTU0VSVChfbGlzdGVuZXIpOwotICAgIGF1dG8g
cG9zaXRpb24gPSBXZWJLaXQ6OldlYkdlb2xvY2F0aW9uUG9zaXRpb246OmNyZWF0ZShXVEZNb3Zl
KGNvcmVQb3NpdGlvbikpOwotICAgIFtfbGlzdGVuZXIgcG9zaXRpb25DaGFuZ2VkOndyYXBwZXIo
cG9zaXRpb24uZ2V0KCkpXTsKIH0KIAogLSAodm9pZCllcnJvck9jY3VycmVkOihOU1N0cmluZyAq
KWVycm9yTWVzc2FnZQogewotICAgIEFTU0VSVChfbGlzdGVuZXIpOwotICAgIFtfbGlzdGVuZXIg
ZXJyb3JPY2N1cnJlZDplcnJvck1lc3NhZ2VdOwogfQogCiAtICh2b2lkKXJlc2V0R2VvbG9jYXRp
b24KIHsKLSAgICBBU1NFUlQoX2xpc3RlbmVyKTsKLSAgICBbX2xpc3RlbmVyIHJlc2V0R2VvbG9j
YXRpb25dOwogfQogCiBAZW5kCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3By
b2plY3QucGJ4cHJvagppbmRleCBmN2JlZTU0M2NlMGZjMGFjMDZkNzY4NTFlZTIxN2RmN2FkODQw
MGI5Li5jNTNlMDQxMmJiOGMxNDJhZDU3ZThiMzI5YTBjNmQ2ODkxZDc2YjRjIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1Nv
dXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTQzMTYsNiAr
NDMxNiw3IEBACiAJCTQ2Q0UzQjEwMjNEOEM4M0QwMDE2QTk2QSAvKiBXZWJCYWNrRm9yd2FyZExp
c3RDb3VudHMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2ViQmFja0Zvcndh
cmRMaXN0Q291bnRzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQ2RDQ4RkNDMjc5
OUQ3REQwMDdEMjAxNCAvKiBXZWJTaGFyZWRXb3JrZXJTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9u
LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdlYlNoYXJlZFdvcmtlclNlcnZlclRvQ29udGV4dENv
bm5lY3Rpb24uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0NkQ0OEZDRDI3OTlE
N0RFMDA3RDIwMTQgLyogV2ViU2hhcmVkV29ya2VyU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbi5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBXZWJTaGFyZWRXb3JrZXJTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9u
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTQ2REEyODU3MjdCNzNFNzYwMDg5RDMz
OSAvKiBXZWJHZW9sb2NhdGlvbk1hbmFnZXJQcm94eUNvY29hLmNwcCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0
aCA9IFdlYkdlb2xvY2F0aW9uTWFuYWdlclByb3h5Q29jb2EuY3BwOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQk0NkRGMDYzOTFGMzkwNUU1MDAxOTgwQkIgLyogTmV0d29ya0NPUlNQcmVm
bGlnaHRDaGVja2VyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IE5l
dHdvcmtDT1JTUHJlZmxpZ2h0Q2hlY2tlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCTQ2REYwNjNBMUYzOTA1RTUwMDE5ODBCQiAvKiBOZXR3b3JrQ09SU1ByZWZsaWdodENoZWNr
ZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTmV0d29ya0NPUlNQcmVmbGln
aHRDaGVja2VyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQ2RTk3NjBBMjc1N0Y2
QzkwMEFDREQzNyAvKiBXZWJCcm9hZGNhc3RDaGFubmVsUmVnaXN0cnkubWVzc2FnZXMuaW4gKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSB0ZXh0OyBwYXRoID0gV2ViQnJvYWRjYXN0Q2hhbm5lbFJlZ2lzdHJ5Lm1lc3NhZ2Vz
LmluOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtNzYwMyw2ICs3NjA0LDcgQEAKIAkJ
CQk1MkQ1QTFBQTFDNTc0OTRFMDBERTM0QTMgLyogVmlkZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5
LmggKi8sCiAJCQkJNTJENUExQUIxQzU3NDk0RTAwREUzNEEzIC8qIFZpZGVvRnVsbHNjcmVlbk1h
bmFnZXJQcm94eS5tZXNzYWdlcy5pbiAqLywKIAkJCQk1MkQ1QTFBQzFDNTc0OTRFMDBERTM0QTMg
LyogVmlkZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5Lm1tICovLAorCQkJCTQ2REEyODU3MjdCNzNF
NzYwMDg5RDMzOSAvKiBXZWJHZW9sb2NhdGlvbk1hbmFnZXJQcm94eUNvY29hLmNwcCAqLywKIAkJ
CQlDMThGM0ExMzI1NjMzMkE2MDA3OTdFNjYgLyogV2ViSW5zcGVjdG9yUHJlZmVyZW5jZU9ic2Vy
dmVyLmggKi8sCiAJCQkJQzE4RjNBMTQyNTYzMzM0MzAwNzk3RTY2IC8qIFdlYkluc3BlY3RvclBy
ZWZlcmVuY2VPYnNlcnZlci5tbSAqLywKIAkJCQlDREYxQjkxOTI2NzAyMUQ2MDAwN0VDMTAgLyog
V2ViS2l0U3dpZnRTb2Z0TGluay5oICovLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL0dlb2xvY2F0aW9uL1dlYkdlb2xvY2F0aW9uTWFuYWdlci5jcHAgYi9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvR2VvbG9jYXRpb24vV2ViR2VvbG9jYXRpb25NYW5hZ2VyLmNwcAppbmRl
eCA1YTljOWY0ZDJhMWNkNjZhNGI2NzU5YjU5Mzg3ZWEyY2Y1NWIyYWE4Li5kNTlmYTlkYmE2ZDBk
MDkyY2FhZTlhNGFjZTIzMjllOWE0OGQyMGQ3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvR2VvbG9jYXRpb24vV2ViR2VvbG9jYXRpb25NYW5hZ2VyLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvR2VvbG9jYXRpb24vV2ViR2VvbG9jYXRpb25NYW5hZ2VyLmNw
cApAQCAtMzksNiArMzksMTQgQEAKIG5hbWVzcGFjZSBXZWJLaXQgewogdXNpbmcgbmFtZXNwYWNl
IFdlYkNvcmU7CiAKK3N0YXRpYyBSZWdpc3RyYWJsZURvbWFpbiByZWdpc3RyYWJsZURvbWFpbkZv
clBhZ2UoV2ViUGFnZSYgcGFnZSkKK3sKKyAgICBhdXRvKiBkb2N1bWVudCA9IHBhZ2UuY29yZVBh
Z2UoKSA/IHBhZ2UuY29yZVBhZ2UoKS0+bWFpbkZyYW1lKCkuZG9jdW1lbnQoKSA6IG51bGxwdHI7
CisgICAgaWYgKCFkb2N1bWVudCkKKyAgICAgICAgcmV0dXJuIFJlZ2lzdHJhYmxlRG9tYWluIHsg
fTsKKyAgICByZXR1cm4gUmVnaXN0cmFibGVEb21haW4geyBkb2N1bWVudC0+dXJsKCkgfTsKK30K
KwogY29uc3QgY2hhciogV2ViR2VvbG9jYXRpb25NYW5hZ2VyOjpzdXBwbGVtZW50TmFtZSgpCiB7
CiAgICAgcmV0dXJuICJXZWJHZW9sb2NhdGlvbk1hbmFnZXIiOwpAQCAtNTAsODggKzU4LDEyNSBA
QCBXZWJHZW9sb2NhdGlvbk1hbmFnZXI6OldlYkdlb2xvY2F0aW9uTWFuYWdlcihXZWJQcm9jZXNz
JiBwcm9jZXNzKQogICAgIG1fcHJvY2Vzcy5hZGRNZXNzYWdlUmVjZWl2ZXIoTWVzc2FnZXM6Oldl
Ykdlb2xvY2F0aW9uTWFuYWdlcjo6bWVzc2FnZVJlY2VpdmVyTmFtZSgpLCAqdGhpcyk7CiB9CiAK
LXZvaWQgV2ViR2VvbG9jYXRpb25NYW5hZ2VyOjpyZWdpc3RlcldlYlBhZ2UoV2ViUGFnZSYgcGFn
ZSwgY29uc3QgU3RyaW5nJiBhdXRob3JpemF0aW9uVG9rZW4pCitXZWJHZW9sb2NhdGlvbk1hbmFn
ZXI6On5XZWJHZW9sb2NhdGlvbk1hbmFnZXIoKSA9IGRlZmF1bHQ7CisKK3ZvaWQgV2ViR2VvbG9j
YXRpb25NYW5hZ2VyOjpyZWdpc3RlcldlYlBhZ2UoV2ViUGFnZSYgcGFnZSwgY29uc3QgU3RyaW5n
JiBhdXRob3JpemF0aW9uVG9rZW4sIGJvb2wgbmVlZHNIaWdoQWNjdXJhY3kpCiB7Ci0gICAgYm9v
bCB3YXNVcGRhdGluZyA9IGlzVXBkYXRpbmcoKTsKKyAgICBhdXRvIHJlZ2lzdHJhYmxlRG9tYWlu
ID0gcmVnaXN0cmFibGVEb21haW5Gb3JQYWdlKHBhZ2UpOworICAgIGlmIChyZWdpc3RyYWJsZURv
bWFpbi5pc0VtcHR5KCkpCisgICAgICAgIHJldHVybjsKKworICAgIGF1dG8mIHBhZ2VTZXRzID0g
bV9wYWdlU2V0cy5lbnN1cmUocmVnaXN0cmFibGVEb21haW4sIFtdIHsKKyAgICAgICAgcmV0dXJu
IFBhZ2VTZXRzIHsgfTsKKyAgICB9KS5pdGVyYXRvci0+dmFsdWU7CisgICAgYm9vbCB3YXNVcGRh
dGluZyA9ICFwYWdlU2V0cy5wYWdlU2V0LmNvbXB1dGVzRW1wdHkoKTsKIAotICAgIG1fcGFnZVNl
dC5hZGQocGFnZSk7CisgICAgcGFnZVNldHMucGFnZVNldC5hZGQocGFnZSk7CisgICAgaWYgKG5l
ZWRzSGlnaEFjY3VyYWN5KQorICAgICAgICBwYWdlU2V0cy5oaWdoQWNjdXJhY3lQYWdlU2V0LmFk
ZChwYWdlKTsKKyAgICBtX3BhZ2VUb1JlZ2lzdHJhYmxlRG9tYWluLmFkZCgmcGFnZSwgcmVnaXN0
cmFibGVEb21haW4pOwogCiAgICAgaWYgKCF3YXNVcGRhdGluZykKLSAgICAgICAgbV9wcm9jZXNz
LnBhcmVudFByb2Nlc3NDb25uZWN0aW9uKCktPnNlbmQoTWVzc2FnZXM6OldlYkdlb2xvY2F0aW9u
TWFuYWdlclByb3h5OjpTdGFydFVwZGF0aW5nKHBhZ2Uud2ViUGFnZVByb3h5SWRlbnRpZmllcigp
LCBhdXRob3JpemF0aW9uVG9rZW4pLCAwKTsKKyAgICAgICAgbV9wcm9jZXNzLnBhcmVudFByb2Nl
c3NDb25uZWN0aW9uKCktPnNlbmQoTWVzc2FnZXM6OldlYkdlb2xvY2F0aW9uTWFuYWdlclByb3h5
OjpTdGFydFVwZGF0aW5nKHJlZ2lzdHJhYmxlRG9tYWluLCBwYWdlLndlYlBhZ2VQcm94eUlkZW50
aWZpZXIoKSwgYXV0aG9yaXphdGlvblRva2VuLCBuZWVkc0hpZ2hBY2N1cmFjeSksIDApOwogfQog
CiB2b2lkIFdlYkdlb2xvY2F0aW9uTWFuYWdlcjo6dW5yZWdpc3RlcldlYlBhZ2UoV2ViUGFnZSYg
cGFnZSkKIHsKLSAgICBib29sIGhpZ2hBY2N1cmFjeVdhc0VuYWJsZWQgPSBpc0hpZ2hBY2N1cmFj
eUVuYWJsZWQoKTsKKyAgICBhdXRvIHJlZ2lzdHJhYmxlRG9tYWluID0gbV9wYWdlVG9SZWdpc3Ry
YWJsZURvbWFpbi50YWtlKCZwYWdlKTsKKyAgICBpZiAocmVnaXN0cmFibGVEb21haW4uaXNFbXB0
eSgpKQorICAgICAgICByZXR1cm47CiAKLSAgICBtX3BhZ2VTZXQucmVtb3ZlKHBhZ2UpOwotICAg
IG1faGlnaEFjY3VyYWN5UGFnZVNldC5yZW1vdmUocGFnZSk7CisgICAgYXV0byBpdCA9IG1fcGFn
ZVNldHMuZmluZChyZWdpc3RyYWJsZURvbWFpbik7CisgICAgaWYgKGl0ID09IG1fcGFnZVNldHMu
ZW5kKCkpCisgICAgICAgIHJldHVybjsKIAotICAgIGlmICghaXNVcGRhdGluZygpKQotICAgICAg
ICBtX3Byb2Nlc3MucGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+c2VuZChNZXNzYWdlczo6V2Vi
R2VvbG9jYXRpb25NYW5hZ2VyUHJveHk6OlN0b3BVcGRhdGluZygpLCAwKTsKKyAgICBhdXRvJiBw
YWdlU2V0cyA9IGl0LT52YWx1ZTsKKyAgICBib29sIGhpZ2hBY2N1cmFjeVdhc0VuYWJsZWQgPSAh
cGFnZVNldHMuaGlnaEFjY3VyYWN5UGFnZVNldC5jb21wdXRlc0VtcHR5KCk7CisKKyAgICBwYWdl
U2V0cy5wYWdlU2V0LnJlbW92ZShwYWdlKTsKKyAgICBwYWdlU2V0cy5oaWdoQWNjdXJhY3lQYWdl
U2V0LnJlbW92ZShwYWdlKTsKKworICAgIGlmIChwYWdlU2V0cy5wYWdlU2V0LmNvbXB1dGVzRW1w
dHkoKSkKKyAgICAgICAgbV9wcm9jZXNzLnBhcmVudFByb2Nlc3NDb25uZWN0aW9uKCktPnNlbmQo
TWVzc2FnZXM6OldlYkdlb2xvY2F0aW9uTWFuYWdlclByb3h5OjpTdG9wVXBkYXRpbmcocmVnaXN0
cmFibGVEb21haW4pLCAwKTsKICAgICBlbHNlIHsKLSAgICAgICAgYm9vbCBoaWdoQWNjdXJhY3lT
aG91bGRCZUVuYWJsZWQgPSBpc0hpZ2hBY2N1cmFjeUVuYWJsZWQoKTsKKyAgICAgICAgYm9vbCBo
aWdoQWNjdXJhY3lTaG91bGRCZUVuYWJsZWQgPSAhcGFnZVNldHMuaGlnaEFjY3VyYWN5UGFnZVNl
dC5jb21wdXRlc0VtcHR5KCk7CiAgICAgICAgIGlmIChoaWdoQWNjdXJhY3lXYXNFbmFibGVkICE9
IGhpZ2hBY2N1cmFjeVNob3VsZEJlRW5hYmxlZCkKLSAgICAgICAgICAgIG1fcHJvY2Vzcy5wYXJl
bnRQcm9jZXNzQ29ubmVjdGlvbigpLT5zZW5kKE1lc3NhZ2VzOjpXZWJHZW9sb2NhdGlvbk1hbmFn
ZXJQcm94eTo6U2V0RW5hYmxlSGlnaEFjY3VyYWN5KGhpZ2hBY2N1cmFjeVNob3VsZEJlRW5hYmxl
ZCksIDApOworICAgICAgICAgICAgbV9wcm9jZXNzLnBhcmVudFByb2Nlc3NDb25uZWN0aW9uKCkt
PnNlbmQoTWVzc2FnZXM6OldlYkdlb2xvY2F0aW9uTWFuYWdlclByb3h5OjpTZXRFbmFibGVIaWdo
QWNjdXJhY3kocmVnaXN0cmFibGVEb21haW4sIGhpZ2hBY2N1cmFjeVNob3VsZEJlRW5hYmxlZCks
IDApOwogICAgIH0KKworICAgIGlmIChwYWdlU2V0cy5wYWdlU2V0LmNvbXB1dGVzRW1wdHkoKSAm
JiBwYWdlU2V0cy5oaWdoQWNjdXJhY3lQYWdlU2V0LmNvbXB1dGVzRW1wdHkoKSkKKyAgICAgICAg
bV9wYWdlU2V0cy5yZW1vdmUoaXQpOwogfQogCiB2b2lkIFdlYkdlb2xvY2F0aW9uTWFuYWdlcjo6
c2V0RW5hYmxlSGlnaEFjY3VyYWN5Rm9yUGFnZShXZWJQYWdlJiBwYWdlLCBib29sIGVuYWJsZWQp
CiB7Ci0gICAgYm9vbCBoaWdoQWNjdXJhY3lXYXNFbmFibGVkID0gaXNIaWdoQWNjdXJhY3lFbmFi
bGVkKCk7CisgICAgYXV0byByZWdpc3RyYWJsZURvbWFpbiA9IG1fcGFnZVRvUmVnaXN0cmFibGVE
b21haW4uZ2V0KCZwYWdlKTsKKyAgICBpZiAocmVnaXN0cmFibGVEb21haW4uaXNFbXB0eSgpKQor
ICAgICAgICByZXR1cm47CisKKyAgICBhdXRvIGl0ID0gbV9wYWdlU2V0cy5maW5kKHJlZ2lzdHJh
YmxlRG9tYWluKTsKKyAgICBBU1NFUlQoaXQgIT0gbV9wYWdlU2V0cy5lbmQoKSk7CisgICAgaWYg
KGl0ID09IG1fcGFnZVNldHMuZW5kKCkpCisgICAgICAgIHJldHVybjsKKworICAgIGF1dG8mIHBh
Z2VTZXRzID0gaXQtPnZhbHVlOworICAgIGJvb2wgaGlnaEFjY3VyYWN5V2FzRW5hYmxlZCA9ICFw
YWdlU2V0cy5oaWdoQWNjdXJhY3lQYWdlU2V0LmNvbXB1dGVzRW1wdHkoKTsKIAogICAgIGlmIChl
bmFibGVkKQotICAgICAgICBtX2hpZ2hBY2N1cmFjeVBhZ2VTZXQuYWRkKHBhZ2UpOworICAgICAg
ICBwYWdlU2V0cy5oaWdoQWNjdXJhY3lQYWdlU2V0LmFkZChwYWdlKTsKICAgICBlbHNlCi0gICAg
ICAgIG1faGlnaEFjY3VyYWN5UGFnZVNldC5yZW1vdmUocGFnZSk7CisgICAgICAgIHBhZ2VTZXRz
LmhpZ2hBY2N1cmFjeVBhZ2VTZXQucmVtb3ZlKHBhZ2UpOwogCi0gICAgYm9vbCBoaWdoQWNjdXJh
Y3lTaG91bGRCZUVuYWJsZWQgPSBpc0hpZ2hBY2N1cmFjeUVuYWJsZWQoKTsKKyAgICBib29sIGhp
Z2hBY2N1cmFjeVNob3VsZEJlRW5hYmxlZCA9ICFwYWdlU2V0cy5oaWdoQWNjdXJhY3lQYWdlU2V0
LmNvbXB1dGVzRW1wdHkoKTsKICAgICBpZiAoaGlnaEFjY3VyYWN5V2FzRW5hYmxlZCAhPSBoaWdo
QWNjdXJhY3lTaG91bGRCZUVuYWJsZWQpCi0gICAgICAgIG1fcHJvY2Vzcy5wYXJlbnRQcm9jZXNz
Q29ubmVjdGlvbigpLT5zZW5kKE1lc3NhZ2VzOjpXZWJHZW9sb2NhdGlvbk1hbmFnZXJQcm94eTo6
U2V0RW5hYmxlSGlnaEFjY3VyYWN5KGhpZ2hBY2N1cmFjeVNob3VsZEJlRW5hYmxlZCksIDApOwor
ICAgICAgICBtX3Byb2Nlc3MucGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+c2VuZChNZXNzYWdl
czo6V2ViR2VvbG9jYXRpb25NYW5hZ2VyUHJveHk6OlNldEVuYWJsZUhpZ2hBY2N1cmFjeShyZWdp
c3RyYWJsZURvbWFpbiwgaGlnaEFjY3VyYWN5U2hvdWxkQmVFbmFibGVkKSwgMCk7CiB9CiAKLXZv
aWQgV2ViR2VvbG9jYXRpb25NYW5hZ2VyOjpkaWRDaGFuZ2VQb3NpdGlvbihjb25zdCBHZW9sb2Nh
dGlvblBvc2l0aW9uRGF0YSYgcG9zaXRpb24pCit2b2lkIFdlYkdlb2xvY2F0aW9uTWFuYWdlcjo6
ZGlkQ2hhbmdlUG9zaXRpb24oY29uc3QgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4mIHJlZ2lz
dHJhYmxlRG9tYWluLCBjb25zdCBHZW9sb2NhdGlvblBvc2l0aW9uRGF0YSYgcG9zaXRpb24pCiB7
CiAjaWYgRU5BQkxFKEdFT0xPQ0FUSU9OKQotICAgIGZvciAoYXV0byYgcGFnZSA6IGNvcHlUb1Zl
Y3RvcihtX3BhZ2VTZXQpKSB7Ci0gICAgICAgIGlmIChwYWdlLT5jb3JlUGFnZSgpKQotICAgICAg
ICAgICAgR2VvbG9jYXRpb25Db250cm9sbGVyOjpmcm9tKHBhZ2UtPmNvcmVQYWdlKCkpLT5wb3Np
dGlvbkNoYW5nZWQocG9zaXRpb24pOworICAgIGlmIChhdXRvIGl0ID0gbV9wYWdlU2V0cy5maW5k
KHJlZ2lzdHJhYmxlRG9tYWluKTsgaXQgIT0gbV9wYWdlU2V0cy5lbmQoKSkgeworICAgICAgICBm
b3IgKGF1dG8mIHBhZ2UgOiBjb3B5VG9WZWN0b3IoaXQtPnZhbHVlLnBhZ2VTZXQpKSB7CisgICAg
ICAgICAgICBpZiAocGFnZS0+Y29yZVBhZ2UoKSkKKyAgICAgICAgICAgICAgICBHZW9sb2NhdGlv
bkNvbnRyb2xsZXI6OmZyb20ocGFnZS0+Y29yZVBhZ2UoKSktPnBvc2l0aW9uQ2hhbmdlZChwb3Np
dGlvbik7CisgICAgICAgIH0KICAgICB9CiAjZWxzZQorICAgIFVOVVNFRF9QQVJBTShyZWdpc3Ry
YWJsZURvbWFpbik7CiAgICAgVU5VU0VEX1BBUkFNKHBvc2l0aW9uKTsKICNlbmRpZiAvLyBFTkFC
TEUoR0VPTE9DQVRJT04pCiB9CiAKLXZvaWQgV2ViR2VvbG9jYXRpb25NYW5hZ2VyOjpkaWRGYWls
VG9EZXRlcm1pbmVQb3NpdGlvbihjb25zdCBTdHJpbmcmIGVycm9yTWVzc2FnZSkKK3ZvaWQgV2Vi
R2VvbG9jYXRpb25NYW5hZ2VyOjpkaWRGYWlsVG9EZXRlcm1pbmVQb3NpdGlvbihjb25zdCBXZWJD
b3JlOjpSZWdpc3RyYWJsZURvbWFpbiYgcmVnaXN0cmFibGVEb21haW4sIGNvbnN0IFN0cmluZyYg
ZXJyb3JNZXNzYWdlKQogewogI2lmIEVOQUJMRShHRU9MT0NBVElPTikKLSAgICAvLyBGSVhNRTog
QWRkIGxvY2FsaXplZCBlcnJvciBzdHJpbmcuCi0gICAgYXV0byBlcnJvciA9IEdlb2xvY2F0aW9u
RXJyb3I6OmNyZWF0ZShHZW9sb2NhdGlvbkVycm9yOjpQb3NpdGlvblVuYXZhaWxhYmxlLCBlcnJv
ck1lc3NhZ2UpOwotCi0gICAgZm9yIChhdXRvJiBwYWdlIDogY29weVRvVmVjdG9yKG1fcGFnZVNl
dCkpIHsKLSAgICAgICAgaWYgKHBhZ2UtPmNvcmVQYWdlKCkpCi0gICAgICAgICAgICBHZW9sb2Nh
dGlvbkNvbnRyb2xsZXI6OmZyb20ocGFnZS0+Y29yZVBhZ2UoKSktPmVycm9yT2NjdXJyZWQoZXJy
b3IuZ2V0KCkpOworICAgIGlmIChhdXRvIGl0ID0gbV9wYWdlU2V0cy5maW5kKHJlZ2lzdHJhYmxl
RG9tYWluKTsgaXQgIT0gbV9wYWdlU2V0cy5lbmQoKSkgeworICAgICAgICAvLyBGSVhNRTogQWRk
IGxvY2FsaXplZCBlcnJvciBzdHJpbmcuCisgICAgICAgIGF1dG8gZXJyb3IgPSBHZW9sb2NhdGlv
bkVycm9yOjpjcmVhdGUoR2VvbG9jYXRpb25FcnJvcjo6UG9zaXRpb25VbmF2YWlsYWJsZSwgZXJy
b3JNZXNzYWdlKTsKKworICAgICAgICBmb3IgKGF1dG8mIHBhZ2UgOiBjb3B5VG9WZWN0b3IoaXQt
PnZhbHVlLnBhZ2VTZXQpKSB7CisgICAgICAgICAgICBpZiAocGFnZS0+Y29yZVBhZ2UoKSkKKyAg
ICAgICAgICAgICAgICBHZW9sb2NhdGlvbkNvbnRyb2xsZXI6OmZyb20ocGFnZS0+Y29yZVBhZ2Uo
KSktPmVycm9yT2NjdXJyZWQoZXJyb3IuZ2V0KCkpOworICAgICAgICB9CiAgICAgfQogI2Vsc2UK
KyAgICBVTlVTRURfUEFSQU0ocmVnaXN0cmFibGVEb21haW4pOwogICAgIFVOVVNFRF9QQVJBTShl
cnJvck1lc3NhZ2UpOwogI2VuZGlmIC8vIEVOQUJMRShHRU9MT0NBVElPTikKIH0KIAogI2lmIFBM
QVRGT1JNKElPU19GQU1JTFkpCi12b2lkIFdlYkdlb2xvY2F0aW9uTWFuYWdlcjo6cmVzZXRQZXJt
aXNzaW9ucygpCit2b2lkIFdlYkdlb2xvY2F0aW9uTWFuYWdlcjo6cmVzZXRQZXJtaXNzaW9ucyhj
b25zdCBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiYgcmVnaXN0cmFibGVEb21haW4pCiB7Ci0g
ICAgbV9wcm9jZXNzLnJlc2V0QWxsR2VvbG9jYXRpb25QZXJtaXNzaW9ucygpOwotfQotI2VuZGlm
IC8vIFBMQVRGT1JNKElPU19GQU1JTFkpCisgICAgYXV0byBpdCA9IG1fcGFnZVNldHMuZmluZChy
ZWdpc3RyYWJsZURvbWFpbik7CisgICAgaWYgKGl0ICE9IG1fcGFnZVNldHMuZW5kKCkpCisgICAg
ICAgIHJldHVybjsKIAotYm9vbCBXZWJHZW9sb2NhdGlvbk1hbmFnZXI6OmlzVXBkYXRpbmcoKSBj
b25zdAotewotICAgIHJldHVybiAhbV9wYWdlU2V0LmNvbXB1dGVzRW1wdHkoKTsKLX0KLQotYm9v
bCBXZWJHZW9sb2NhdGlvbk1hbmFnZXI6OmlzSGlnaEFjY3VyYWN5RW5hYmxlZCgpIGNvbnN0Ci17
Ci0gICAgcmV0dXJuICFtX2hpZ2hBY2N1cmFjeVBhZ2VTZXQuY29tcHV0ZXNFbXB0eSgpOworICAg
IGZvciAoYXV0byYgcGFnZSA6IGNvcHlUb1ZlY3RvcihpdC0+dmFsdWUucGFnZVNldCkpIHsKKyAg
ICAgICAgaWYgKGF1dG8qIG1haW5GcmFtZSA9IHBhZ2UtPmNvcmVQYWdlKCkgPyAmcGFnZS0+Y29y
ZVBhZ2UoKS0+bWFpbkZyYW1lKCkgOiBudWxscHRyKQorICAgICAgICAgICAgbWFpbkZyYW1lLT5y
ZXNldEFsbEdlb2xvY2F0aW9uUGVybWlzc2lvbigpOworICAgIH0KIH0KKyNlbmRpZiAvLyBQTEFU
Rk9STShJT1NfRkFNSUxZKQogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HZW9sb2NhdGlvbi9XZWJHZW9sb2NhdGlvbk1hbmFnZXIu
aCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HZW9sb2NhdGlvbi9XZWJHZW9sb2NhdGlvbk1h
bmFnZXIuaAppbmRleCA0NDgzNTk2MzU4NzgyMTk3Y2NiYTU5MjhlZmU2MjUxNTI2YzE4NTE1Li41
OTRiMmNlYjY5ZTY4ZGY1MmJlMTE1M2JmNWIyNTg1OGUyZTliMjdkIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvR2VvbG9jYXRpb24vV2ViR2VvbG9jYXRpb25NYW5hZ2VyLmgK
KysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dlb2xvY2F0aW9uL1dlYkdlb2xvY2F0aW9u
TWFuYWdlci5oCkBAIC0yOCw2ICsyOCw3IEBACiAjaW5jbHVkZSAiTWVzc2FnZVJlY2VpdmVyLmgi
CiAjaW5jbHVkZSAiV2ViR2VvbG9jYXRpb25Qb3NpdGlvbi5oIgogI2luY2x1ZGUgIldlYlByb2Nl
c3NTdXBwbGVtZW50LmgiCisjaW5jbHVkZSA8V2ViQ29yZS9SZWdpc3RyYWJsZURvbWFpbi5oPgog
I2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CiAjaW5jbHVkZSA8d3RmL05vbmNvcHlhYmxlLmg+CiAj
aW5jbHVkZSA8d3RmL1dlYWtIYXNoU2V0Lmg+CkBAIC00NywzMSArNDgsMzEgQEAgY2xhc3MgV2Vi
R2VvbG9jYXRpb25NYW5hZ2VyIDogcHVibGljIFdlYlByb2Nlc3NTdXBwbGVtZW50LCBwdWJsaWMg
SVBDOjpNZXNzYWdlUmUKICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShXZWJHZW9sb2NhdGlvbk1h
bmFnZXIpOwogcHVibGljOgogICAgIGV4cGxpY2l0IFdlYkdlb2xvY2F0aW9uTWFuYWdlcihXZWJQ
cm9jZXNzJik7CisgICAgfldlYkdlb2xvY2F0aW9uTWFuYWdlcigpOwogCiAgICAgc3RhdGljIGNv
bnN0IGNoYXIqIHN1cHBsZW1lbnROYW1lKCk7CiAKLSAgICB2b2lkIHJlZ2lzdGVyV2ViUGFnZShX
ZWJQYWdlJiwgY29uc3QgU3RyaW5nJiBhdXRob3JpemF0aW9uVG9rZW4pOworICAgIHZvaWQgcmVn
aXN0ZXJXZWJQYWdlKFdlYlBhZ2UmLCBjb25zdCBTdHJpbmcmIGF1dGhvcml6YXRpb25Ub2tlbiwg
Ym9vbCBuZWVkc0hpZ2hBY2N1cmFjeSk7CiAgICAgdm9pZCB1bnJlZ2lzdGVyV2ViUGFnZShXZWJQ
YWdlJik7CiAgICAgdm9pZCBzZXRFbmFibGVIaWdoQWNjdXJhY3lGb3JQYWdlKFdlYlBhZ2UmLCBi
b29sKTsKIAotICAgIHZvaWQgcmVxdWVzdFBlcm1pc3Npb24oV2ViQ29yZTo6R2VvbG9jYXRpb24m
KTsKLQogcHJpdmF0ZToKICAgICAvLyBJUEM6Ok1lc3NhZ2VSZWNlaXZlcgogICAgIHZvaWQgZGlk
UmVjZWl2ZU1lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwgSVBDOjpEZWNvZGVyJikgb3ZlcnJpZGU7
CiAKLSAgICBib29sIGlzVXBkYXRpbmcoKSBjb25zdDsKLSAgICBib29sIGlzSGlnaEFjY3VyYWN5
RW5hYmxlZCgpIGNvbnN0OwotCi0gICAgdm9pZCBkaWRDaGFuZ2VQb3NpdGlvbihjb25zdCBXZWJD
b3JlOjpHZW9sb2NhdGlvblBvc2l0aW9uRGF0YSYpOwotICAgIHZvaWQgZGlkRmFpbFRvRGV0ZXJt
aW5lUG9zaXRpb24oY29uc3QgU3RyaW5nJiBlcnJvck1lc3NhZ2UpOworICAgIHZvaWQgZGlkQ2hh
bmdlUG9zaXRpb24oY29uc3QgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4mLCBjb25zdCBXZWJD
b3JlOjpHZW9sb2NhdGlvblBvc2l0aW9uRGF0YSYpOworICAgIHZvaWQgZGlkRmFpbFRvRGV0ZXJt
aW5lUG9zaXRpb24oY29uc3QgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4mLCBjb25zdCBTdHJp
bmcmIGVycm9yTWVzc2FnZSk7CiAjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKLSAgICB2b2lkIHJl
c2V0UGVybWlzc2lvbnMoKTsKKyAgICB2b2lkIHJlc2V0UGVybWlzc2lvbnMoY29uc3QgV2ViQ29y
ZTo6UmVnaXN0cmFibGVEb21haW4mKTsKICNlbmRpZiAvLyBQTEFURk9STShJT1NfRkFNSUxZKQog
CiAgICAgV2ViUHJvY2VzcyYgbV9wcm9jZXNzOwotICAgIFdlYWtIYXNoU2V0PFdlYlBhZ2U+IG1f
cGFnZVNldDsKLSAgICBXZWFrSGFzaFNldDxXZWJQYWdlPiBtX2hpZ2hBY2N1cmFjeVBhZ2VTZXQ7
CisgICAgc3RydWN0IFBhZ2VTZXRzIHsKKyAgICAgICAgV2Vha0hhc2hTZXQ8V2ViUGFnZT4gcGFn
ZVNldDsKKyAgICAgICAgV2Vha0hhc2hTZXQ8V2ViUGFnZT4gaGlnaEFjY3VyYWN5UGFnZVNldDsK
KyAgICB9OworICAgIEhhc2hNYXA8V2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4sIFBhZ2VTZXRz
PiBtX3BhZ2VTZXRzOworICAgIEhhc2hNYXA8V2ViUGFnZSosIFdlYkNvcmU6OlJlZ2lzdHJhYmxl
RG9tYWluPiBtX3BhZ2VUb1JlZ2lzdHJhYmxlRG9tYWluOwogfTsKIAogfSAvLyBuYW1lc3BhY2Ug
V2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR2VvbG9jYXRpb24v
V2ViR2VvbG9jYXRpb25NYW5hZ2VyLm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL0dlb2xvY2F0aW9uL1dlYkdlb2xvY2F0aW9uTWFuYWdlci5tZXNzYWdlcy5pbgppbmRleCA3
OWYzYjRjZTRlZmNhZjM0ODg1N2Q5OTMzMjUzZDg5NTRmMGYxYjg3Li42ZmNjNjBkMmUwOGUyNmVh
YjczYzFmNzFjZDg4NDJkYzUxMDUyZDE4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvR2VvbG9jYXRpb24vV2ViR2VvbG9jYXRpb25NYW5hZ2VyLm1lc3NhZ2VzLmluCisrKyBi
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HZW9sb2NhdGlvbi9XZWJHZW9sb2NhdGlvbk1hbmFn
ZXIubWVzc2FnZXMuaW4KQEAgLTIxLDkgKzIxLDkgQEAKICMgT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KIAogbWVzc2Fn
ZXMgLT4gV2ViR2VvbG9jYXRpb25NYW5hZ2VyIE5vdFJlZkNvdW50ZWQgewotICAgIERpZENoYW5n
ZVBvc2l0aW9uKFdlYkNvcmU6Okdlb2xvY2F0aW9uUG9zaXRpb25EYXRhIHBvc2l0aW9uKTsKLSAg
ICBEaWRGYWlsVG9EZXRlcm1pbmVQb3NpdGlvbihTdHJpbmcgZXJyb3JNZXNzYWdlKTsKKyAgICBE
aWRDaGFuZ2VQb3NpdGlvbihXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiByZWdpc3RyYWJsZURv
bWFpbiwgV2ViQ29yZTo6R2VvbG9jYXRpb25Qb3NpdGlvbkRhdGEgcG9zaXRpb24pOworICAgIERp
ZEZhaWxUb0RldGVybWluZVBvc2l0aW9uKFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluIHJlZ2lz
dHJhYmxlRG9tYWluLCBTdHJpbmcgZXJyb3JNZXNzYWdlKTsKICNpZiBQTEFURk9STShJT1NfRkFN
SUxZKQotICAgIFJlc2V0UGVybWlzc2lvbnMoKTsKKyAgICBSZXNldFBlcm1pc3Npb25zKFdlYkNv
cmU6OlJlZ2lzdHJhYmxlRG9tYWluIHJlZ2lzdHJhYmxlRG9tYWluKTsKICNlbmRpZgogfQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkdlb2xv
Y2F0aW9uQ2xpZW50LmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9y
dC9XZWJHZW9sb2NhdGlvbkNsaWVudC5jcHAKaW5kZXggZWEwMmYyYWMxNmY3MzFiZjU2NDJmODY3
OGQ4NmE0OTgxMWQ4YzM4Ni4uZDE4ZGY3ZWZhZjU2ZWZjZmM4ZDE2OTljOTFjZDI2YjY4OWJjODI2
YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dl
Ykdlb2xvY2F0aW9uQ2xpZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2Vi
Q29yZVN1cHBvcnQvV2ViR2VvbG9jYXRpb25DbGllbnQuY3BwCkBAIC00OCw5ICs0OCw5IEBAIHZv
aWQgV2ViR2VvbG9jYXRpb25DbGllbnQ6Omdlb2xvY2F0aW9uRGVzdHJveWVkKCkKICAgICBkZWxl
dGUgdGhpczsKIH0KIAotdm9pZCBXZWJHZW9sb2NhdGlvbkNsaWVudDo6c3RhcnRVcGRhdGluZyhj
b25zdCBTdHJpbmcmIGF1dGhvcml6YXRpb25Ub2tlbikKK3ZvaWQgV2ViR2VvbG9jYXRpb25DbGll
bnQ6OnN0YXJ0VXBkYXRpbmcoY29uc3QgU3RyaW5nJiBhdXRob3JpemF0aW9uVG9rZW4sIGJvb2wg
bmVlZHNIaWdoQWNjdXJhY3kpCiB7Ci0gICAgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkuc3VwcGxl
bWVudDxXZWJHZW9sb2NhdGlvbk1hbmFnZXI+KCktPnJlZ2lzdGVyV2ViUGFnZShtX3BhZ2UsIGF1
dGhvcml6YXRpb25Ub2tlbik7CisgICAgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkuc3VwcGxlbWVu
dDxXZWJHZW9sb2NhdGlvbk1hbmFnZXI+KCktPnJlZ2lzdGVyV2ViUGFnZShtX3BhZ2UsIGF1dGhv
cml6YXRpb25Ub2tlbiwgbmVlZHNIaWdoQWNjdXJhY3kpOwogfQogCiB2b2lkIFdlYkdlb2xvY2F0
aW9uQ2xpZW50OjpzdG9wVXBkYXRpbmcoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkdlb2xvY2F0aW9uQ2xpZW50LmggYi9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViR2VvbG9jYXRpb25DbGllbnQuaAppbmRl
eCBiMTY4MTY3NDg5NjIyNTQ3ZWM5NGU2Nzk4ZmI2OWRkOGZhNmQwMTFjLi42NWVjMGU5MzU0Mjgz
ZDVmYTc3YWYxMGI0ZTE4MGI4NzEyZmFlZjA3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViR2VvbG9jYXRpb25DbGllbnQuaAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViR2VvbG9jYXRpb25DbGllbnQu
aApAQCAtMzEsNyArMzEsNyBAQCBuYW1lc3BhY2UgV2ViS2l0IHsKIAogY2xhc3MgV2ViUGFnZTsK
IAotY2xhc3MgV2ViR2VvbG9jYXRpb25DbGllbnQgOiBwdWJsaWMgV2ViQ29yZTo6R2VvbG9jYXRp
b25DbGllbnQgeworY2xhc3MgV2ViR2VvbG9jYXRpb25DbGllbnQgZmluYWwgOiBwdWJsaWMgV2Vi
Q29yZTo6R2VvbG9jYXRpb25DbGllbnQgewogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwog
cHVibGljOgogICAgIFdlYkdlb2xvY2F0aW9uQ2xpZW50KFdlYlBhZ2UmIHBhZ2UpCkBAIC00Miwx
NyArNDIsMTcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgfldlYkdlb2xvY2F0aW9uQ2xpZW50KCk7
CiAKIHByaXZhdGU6Ci0gICAgdm9pZCBnZW9sb2NhdGlvbkRlc3Ryb3llZCgpIG92ZXJyaWRlOwor
ICAgIHZvaWQgZ2VvbG9jYXRpb25EZXN0cm95ZWQoKSBmaW5hbDsKIAotICAgIHZvaWQgc3RhcnRV
cGRhdGluZyhjb25zdCBTdHJpbmcmIGF1dGhvcml6YXRpb25Ub2tlbikgb3ZlcnJpZGU7Ci0gICAg
dm9pZCBzdG9wVXBkYXRpbmcoKSBvdmVycmlkZTsKLSAgICB2b2lkIHJldm9rZUF1dGhvcml6YXRp
b25Ub2tlbihjb25zdCBTdHJpbmcmKSBvdmVycmlkZTsKLSAgICB2b2lkIHNldEVuYWJsZUhpZ2hB
Y2N1cmFjeShib29sKSBvdmVycmlkZTsKKyAgICB2b2lkIHN0YXJ0VXBkYXRpbmcoY29uc3QgU3Ry
aW5nJiBhdXRob3JpemF0aW9uVG9rZW4sIGJvb2wgbmVlZHNIaWdoQWNjdXJhY3kpIGZpbmFsOwor
ICAgIHZvaWQgc3RvcFVwZGF0aW5nKCkgZmluYWw7CisgICAgdm9pZCByZXZva2VBdXRob3JpemF0
aW9uVG9rZW4oY29uc3QgU3RyaW5nJikgZmluYWw7CisgICAgdm9pZCBzZXRFbmFibGVIaWdoQWNj
dXJhY3koYm9vbCkgZmluYWw7CiAKLSAgICBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6Okdlb2xvY2F0
aW9uUG9zaXRpb25EYXRhPiBsYXN0UG9zaXRpb24oKSBvdmVycmlkZTsKKyAgICBzdGQ6Om9wdGlv
bmFsPFdlYkNvcmU6Okdlb2xvY2F0aW9uUG9zaXRpb25EYXRhPiBsYXN0UG9zaXRpb24oKSBmaW5h
bDsKIAotICAgIHZvaWQgcmVxdWVzdFBlcm1pc3Npb24oV2ViQ29yZTo6R2VvbG9jYXRpb24mKSBv
dmVycmlkZTsKLSAgICB2b2lkIGNhbmNlbFBlcm1pc3Npb25SZXF1ZXN0KFdlYkNvcmU6Okdlb2xv
Y2F0aW9uJikgb3ZlcnJpZGU7CisgICAgdm9pZCByZXF1ZXN0UGVybWlzc2lvbihXZWJDb3JlOjpH
ZW9sb2NhdGlvbiYpIGZpbmFsOworICAgIHZvaWQgY2FuY2VsUGVybWlzc2lvblJlcXVlc3QoV2Vi
Q29yZTo6R2VvbG9jYXRpb24mKSBmaW5hbDsKIAogICAgIFdlYlBhZ2UmIG1fcGFnZTsKIH07CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5jcHAKaW5kZXggZGQ0NWI0NTg4YmY5ZGQx
MjRlMThmYWE5NWEzMjZlZDMxOTMxYTQ1Ny4uNzk5NjEzZDM3NzQyMzYzYmZiZGNkOTUyOTc5OTYy
MjA2ZjAyMjhhOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlByb2Nl
c3MuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmNwcApAQCAt
MTUyNywxNiArMTUyNyw2IEBAIHZvaWQgV2ViUHJvY2Vzczo6cGFnZUFjdGl2aXR5U3RhdGVEaWRD
aGFuZ2UoUGFnZUlkZW50aWZpZXIsIE9wdGlvblNldDxXZWJDb3JlOjpBCiAgICAgfQogfQogCi0j
aWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKLXZvaWQgV2ViUHJvY2Vzczo6cmVzZXRBbGxHZW9sb2Nh
dGlvblBlcm1pc3Npb25zKCkKLXsKLSAgICBmb3IgKGF1dG8mIHBhZ2UgOiBtX3BhZ2VNYXAudmFs
dWVzKCkpIHsKLSAgICAgICAgaWYgKEZyYW1lKiBtYWluRnJhbWUgPSBwYWdlLT5tYWluRnJhbWUo
KSkKLSAgICAgICAgICAgIG1haW5GcmFtZS0+cmVzZXRBbGxHZW9sb2NhdGlvblBlcm1pc3Npb24o
KTsKLSAgICB9Ci19Ci0jZW5kaWYKLQogdm9pZCBXZWJQcm9jZXNzOjpwcmVwYXJlVG9TdXNwZW5k
KGJvb2wgaXNTdXNwZW5zaW9uSW1taW5lbnQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBj
b21wbGV0aW9uSGFuZGxlcikKIHsKICAgICBXRUJQUk9DRVNTX1JFTEVBU0VfTE9HKFByb2Nlc3NT
dXNwZW5zaW9uLCAicHJlcGFyZVRvU3VzcGVuZDogaXNTdXNwZW5zaW9uSW1taW5lbnQ9JWQiLCBp
c1N1c3BlbnNpb25JbW1pbmVudCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvV2ViUHJvY2Vzcy5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuaApp
bmRleCBjNWRkMjI1ZGMxYjcxZGE5Y2RkNGVlZGJhMGEwN2U3NjE3ODE1NzVlLi41OTVhZjBiOTc0
MTI5MGRhNmM3MzRhMDg4NmI4MjRkMjNiMWVlNTdlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9X
ZWJQcm9jZXNzLmgKQEAgLTMxMCwxMCArMzEwLDYgQEAgcHVibGljOgogCiAgICAgdm9pZCBpc0pJ
VEVuYWJsZWQoQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJik7CiAKLSNpZiBQTEFURk9S
TShJT1NfRkFNSUxZKQotICAgIHZvaWQgcmVzZXRBbGxHZW9sb2NhdGlvblBlcm1pc3Npb25zKCk7
Ci0jZW5kaWYKLQogI2lmIFBMQVRGT1JNKFdBWUxBTkQpCiAgICAgV2F5bGFuZENvbXBvc2l0b3JE
aXNwbGF5KiB3YXlsYW5kQ29tcG9zaXRvckRpc3BsYXkoKSBjb25zdCB7IHJldHVybiBtX3dheWxh
bmRDb21wb3NpdG9yRGlzcGxheS5nZXQoKTsgfQogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJHZW9sb2NhdGlvbkNsaWVudC5oIGIv
U291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViR2VvbG9jYXRpb25DbGll
bnQuaAppbmRleCA3N2MyODI4ZDg1OTUzNjM1YjY0YzRjODk5OTkwYTBhNjQ4MTcxYjZjLi5iMDdj
NzkwM2QyOTJhOTMzOTFlNWM0MGFlZGQ2NWRlZGJhZjhjNWYxIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJHZW9sb2NhdGlvbkNsaWVudC5oCisr
KyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkdlb2xvY2F0aW9u
Q2xpZW50LmgKQEAgLTM5LDcgKzM5LDcgQEAgcHVibGljOgogICAgIFdlYlZpZXcgKndlYlZpZXco
KSB7IHJldHVybiBtX3dlYlZpZXc7IH0KIAogICAgIHZvaWQgZ2VvbG9jYXRpb25EZXN0cm95ZWQo
KSBvdmVycmlkZTsKLSAgICB2b2lkIHN0YXJ0VXBkYXRpbmcoY29uc3QgU3RyaW5nJiBhdXRob3Jp
emF0aW9uVG9rZW4pIG92ZXJyaWRlOworICAgIHZvaWQgc3RhcnRVcGRhdGluZyhjb25zdCBTdHJp
bmcmIGF1dGhvcml6YXRpb25Ub2tlbiwgYm9vbCBlbmFibGVIaWdoQWNjdXJhY3kpIG92ZXJyaWRl
OwogICAgIHZvaWQgc3RvcFVwZGF0aW5nKCkgb3ZlcnJpZGU7CiAjaWYgUExBVEZPUk0oSU9TX0ZB
TUlMWSkKICAgICAvLyBGSVhNRTogdW5pZnkgdGhpcyB3aXRoIE1hYyBvbiBPcGVuU291cmNlLgpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViR2Vv
bG9jYXRpb25DbGllbnQubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9y
dC9XZWJHZW9sb2NhdGlvbkNsaWVudC5tbQppbmRleCBlNzg4YTU3ZGQ2ZjgwN2U3YjI1Yzc0MmJh
ODAxOTM1N2EyNzM0ZDM4Li5hOGI4NTIxZTJkYTQ3MThkYzE0YjQzNzBiMWE1YjRiOGQ2MzI4NTg5
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJH
ZW9sb2NhdGlvbkNsaWVudC5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3Jl
U3VwcG9ydC9XZWJHZW9sb2NhdGlvbkNsaWVudC5tbQpAQCAtODMsOSArODMsMTYgQEAgdm9pZCBX
ZWJHZW9sb2NhdGlvbkNsaWVudDo6Z2VvbG9jYXRpb25EZXN0cm95ZWQoKQogICAgIGRlbGV0ZSB0
aGlzOwogfQogCi12b2lkIFdlYkdlb2xvY2F0aW9uQ2xpZW50OjpzdGFydFVwZGF0aW5nKGNvbnN0
IFN0cmluZyYgYXV0aG9yaXphdGlvblRva2VuKQordm9pZCBXZWJHZW9sb2NhdGlvbkNsaWVudDo6
c3RhcnRVcGRhdGluZyhjb25zdCBTdHJpbmcmIGF1dGhvcml6YXRpb25Ub2tlbiwgYm9vbCBlbmFi
bGVIaWdoQWNjdXJhY3kpCiB7CiAgICAgVU5VU0VEX1BBUkFNKGF1dGhvcml6YXRpb25Ub2tlbik7
CisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKKyAgICBpZiAoZW5hYmxlSGlnaEFjY3VyYWN5KQor
ICAgICAgICBzZXRFbmFibGVIaWdoQWNjdXJhY3kodHJ1ZSk7CisjZWxzZQorICAgIFVOVVNFRF9Q
QVJBTShlbmFibGVIaWdoQWNjdXJhY3kpOworI2VuZGlmCisKICAgICBbW21fd2ViVmlldyBfZ2Vv
bG9jYXRpb25Qcm92aWRlcl0gcmVnaXN0ZXJXZWJWaWV3Om1fd2ViVmlld107CiB9CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkdlb2xvY2F0
aW9uQ2xpZW50LmNwcCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkNvcmVTdXBwb3J0L1dl
Ykdlb2xvY2F0aW9uQ2xpZW50LmNwcAppbmRleCBlMWZjYTI3NzI0OTYxNTRhNGUwNzBlNGRmZGE3
ZTc3ZTk3MzU4MmMxLi5hYzU0NTE0YzY0MmVhMGU1ZjhhZjMzNjllMWJiYmFlMGMzOTA3MWI3IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJHZW9s
b2NhdGlvbkNsaWVudC5jcHAKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViQ29yZVN1
cHBvcnQvV2ViR2VvbG9jYXRpb25DbGllbnQuY3BwCkBAIC00OCw5ICs0OCwxMCBAQCB2b2lkIFdl
Ykdlb2xvY2F0aW9uQ2xpZW50OjpnZW9sb2NhdGlvbkRlc3Ryb3llZCgpCiAgICAgZGVsZXRlIHRo
aXM7CiB9CiAKLXZvaWQgV2ViR2VvbG9jYXRpb25DbGllbnQ6OnN0YXJ0VXBkYXRpbmcoY29uc3Qg
U3RyaW5nJiBhdXRob3JpemF0aW9uVG9rZW4pCit2b2lkIFdlYkdlb2xvY2F0aW9uQ2xpZW50Ojpz
dGFydFVwZGF0aW5nKGNvbnN0IFN0cmluZyYgYXV0aG9yaXphdGlvblRva2VuLCBib29sIGVuYWJs
ZUhpZ2hBY2N1cmFjeSkKIHsKICAgICBVTlVTRURfUEFSQU0oYXV0aG9yaXphdGlvblRva2VuKTsK
KyAgICBVTlVTRURfUEFSQU0oZW5hYmxlSGlnaEFjY3VyYWN5KTsKICAgICBDT01QdHI8SVdlYkdl
b2xvY2F0aW9uUHJvdmlkZXI+IHByb3ZpZGVyOwogICAgIGlmIChGQUlMRUQobV93ZWJWaWV3LT5n
ZW9sb2NhdGlvblByb3ZpZGVyKCZwcm92aWRlcikpKQogICAgICAgICByZXR1cm47CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJHZW9sb2NhdGlv
bkNsaWVudC5oIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViQ29yZVN1cHBvcnQvV2ViR2Vv
bG9jYXRpb25DbGllbnQuaAppbmRleCAxOTU3NDE3YjU1ZDdlNWQyZjliNzFlNWM5ZDljMzAzZGZl
ZjRlMTg2Li41YjhlOTQ0NGYyMWZlZDQzZWRmMjU5MWEyYmExNWRhM2JkNDRmNDRhIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJHZW9sb2NhdGlv
bkNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkNvcmVTdXBwb3J0L1dl
Ykdlb2xvY2F0aW9uQ2xpZW50LmgKQEAgLTQxLDcgKzQxLDcgQEAgcHVibGljOgogICAgIFdlYkdl
b2xvY2F0aW9uQ2xpZW50KFdlYlZpZXcqKTsKIAogICAgIHZvaWQgZ2VvbG9jYXRpb25EZXN0cm95
ZWQoKSBmaW5hbDsKLSAgICB2b2lkIHN0YXJ0VXBkYXRpbmcoY29uc3QgU3RyaW5nJiBhdXRob3Jp
emF0aW9uVG9rZW4pIGZpbmFsOworICAgIHZvaWQgc3RhcnRVcGRhdGluZyhjb25zdCBTdHJpbmcm
IGF1dGhvcml6YXRpb25Ub2tlbiwgYm9vbCBlbmFibGVIaWdoQWNjdXJhY3kpIGZpbmFsOwogICAg
IHZvaWQgc3RvcFVwZGF0aW5nKCkgZmluYWw7CiAgICAgdm9pZCBzZXRFbmFibGVIaWdoQWNjdXJh
Y3koYm9vbCkgZmluYWwgeyB9CiAgICAgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpHZW9sb2NhdGlv
blBvc2l0aW9uRGF0YT4gbGFzdFBvc2l0aW9uKCkgZmluYWw7Cg==
</data>
<flag name="commit-queue"
          id="478703"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>451839</attachid>
            <date>2022-02-13 13:21:46 -0800</date>
            <delta_ts>2022-02-13 14:23:02 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-236566-20220213132146.patch</filename>
            <type>text/plain</type>
            <size>102821</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg5Njk4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IDVjOGFhZWYzNzk5ZjJmYTJmNjY5YzFm
YWZmNTU3YTc4ZmI1YzYyMDEuLjUyZDQ3N2Q5OWEzYzNkZjIxZjhhNzBlNzU3MzkzZGVkNDc2NGMy
MTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMTUgQEAKKzIwMjItMDItMTMgIENocmlzIER1bWV6ICA8Y2R1bWV6
QGFwcGxlLmNvbT4KKworICAgICAgICBEbyBwcmVsaW1pbmFyeSB3b3JrIHRvIHBhc3MgZG9tYWlu
IG5hbWVzIHRvIENvcmVMb2NhdGlvbgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MjM2NTY2CisgICAgICAgIDxyZGFyOi8vODg3NjE0MTM+CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkIGJ1aWxkIHRpbWUg
ZmxhZyBmb3IgcGFzc2luZyB3ZWJzaXRlIGlkZW50aWZpZXJzIHRvIENvcmVMb2NhdGlvbi4KKwor
ICAgICAgICAqIHd0Zi9QbGF0Zm9ybUhhdmUuaDoKKwogMjAyMi0wMi0xMiAgSmVyIE5vYmxlICA8
amVyLm5vYmxlQGFwcGxlLmNvbT4KIAogICAgICAgICBBZGQgc2V0dGluZ3MgdG8gcmVzdHJpY3Qg
bWVkaWEgY29udGFpbmVycyBhbmQgY29kZWNzIHdoZW4gaW4gQ2FwdGl2ZSBQb3J0YWwgbW9kZQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkNvcmUvQ2hh
bmdlTG9nCmluZGV4IDcxMWMxMjBjYjExYTNmMzZhNTJjZDVkNGU1ZTY1ZmI5NGZmZmQ0NDIuLjg0
ZDk3MzIyNWJmMzU3MTgzYzcyNmVjM2Y5ZDljYTkxN2I5ZmY5ZWEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw1NCBAQAorMjAyMi0wMi0xMyAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgor
CisgICAgICAgIERvIHByZWxpbWluYXJ5IHdvcmsgdG8gcGFzcyBkb21haW4gbmFtZXMgdG8gQ29y
ZUxvY2F0aW9uCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0yMzY1NjYKKyAgICAgICAgPHJkYXI6Ly84ODc2MTQxMz4KKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBEbyBwcmVsaW1pbmFyeSB3b3JrIHRvIHBhc3Mg
ZG9tYWluIG5hbWVzIHRvIENvcmVMb2NhdGlvbiB3aGVuIHVzaW5nIHRoZSBHZW9sb2NhdGlvbiBB
UEkuCisgICAgICAgIFRoaXMgcGlwZXMgdGhlIGRvbWFpbiBuYW1lcyBhbGwgdGhlIHdheSBmcm9t
IHRoZSBHZW9sb2NhdGlvbiBBUEkgdG8gdGhlIENvcmVMb2NhdGlvbiBjYWxscworICAgICAgICBi
dXQgZG9lc24ndCB5ZXQgcGFzcyB0aGUgZG9tYWluIHRvIENvcmVMb2NhdGlvbiBkdWUgdG8gPHJk
YXI6Ly84ODgzNDMwMT4uIEkgd2lsbCBmb2xsb3ctdXAKKyAgICAgICAgb25jZSA8cmRhcjovLzg4
ODM0MzAxPiBpcyBmaXhlZC4KKworICAgICAgICAqIE1vZHVsZXMvZ2VvbG9jYXRpb24vR2VvbG9j
YXRpb25DbGllbnQuaDoKKyAgICAgICAgKiBNb2R1bGVzL2dlb2xvY2F0aW9uL0dlb2xvY2F0aW9u
Q29udHJvbGxlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpHZW9sb2NhdGlvbkNvbnRyb2xsZXI6
OmRpZE5hdmlnYXRlUGFnZSk6CisgICAgICAgIChXZWJDb3JlOjpHZW9sb2NhdGlvbkNvbnRyb2xs
ZXI6OmFkZE9ic2VydmVyKToKKyAgICAgICAgKFdlYkNvcmU6Okdlb2xvY2F0aW9uQ29udHJvbGxl
cjo6cmVtb3ZlT2JzZXJ2ZXIpOgorICAgICAgICAoV2ViQ29yZTo6R2VvbG9jYXRpb25Db250cm9s
bGVyOjphY3Rpdml0eVN0YXRlRGlkQ2hhbmdlKToKKyAgICAgICAgKFdlYkNvcmU6Okdlb2xvY2F0
aW9uQ29udHJvbGxlcjo6c3RhcnRVcGRhdGluZ0lmTmVjZXNzYXJ5KToKKyAgICAgICAgKFdlYkNv
cmU6Okdlb2xvY2F0aW9uQ29udHJvbGxlcjo6c3RvcFVwZGF0aW5nSWZOZWNlc3NhcnkpOgorICAg
ICAgICAqIE1vZHVsZXMvZ2VvbG9jYXRpb24vR2VvbG9jYXRpb25Db250cm9sbGVyLmg6CisgICAg
ICAgIChXZWJDb3JlOjpHZW9sb2NhdGlvbkNvbnRyb2xsZXI6Om5lZWRzSGlnaEFjY3VyYWN5IGNv
bnN0KToKKyAgICAgICAgKiBNb2R1bGVzL2dlb2xvY2F0aW9uL0dlb2xvY2F0aW9uUG9zaXRpb25E
YXRhLmg6CisgICAgICAgICogTW9kdWxlcy9nZW9sb2NhdGlvbi9pb3MvR2VvbG9jYXRpb25Qb3Np
dGlvbkRhdGFJT1MubW06CisgICAgICAgICogU291cmNlc0NvY29hLnR4dDoKKyAgICAgICAgKiBX
ZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogcGFnZS9QYWdlLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OlBhZ2U6OmRpZENvbW1pdExvYWQpOgorICAgICAgICAqIHBs
YXRmb3JtL2NvY29hL0NvcmVMb2NhdGlvbkdlb2xvY2F0aW9uUHJvdmlkZXIuaDogQ29waWVkIGZy
b20gU291cmNlL1dlYkNvcmUvTW9kdWxlcy9nZW9sb2NhdGlvbi9HZW9sb2NhdGlvbkNsaWVudC5o
LgorICAgICAgICAqIHBsYXRmb3JtL2NvY29hL0NvcmVMb2NhdGlvbkdlb2xvY2F0aW9uUHJvdmlk
ZXIubW06IEFkZGVkLgorICAgICAgICAoaXNBdXRob3JpemF0aW9uR3JhbnRlZCk6CisgICAgICAg
ICgtW1dlYkNMTG9jYXRpb25NYW5hZ2VyIGluaXRXaXRoV2Vic2l0ZUlkZW50aWZpZXI6Y2xpZW50
Ol0pOgorICAgICAgICAoLVtXZWJDTExvY2F0aW9uTWFuYWdlciBkZWFsbG9jXSk6CisgICAgICAg
ICgtW1dlYkNMTG9jYXRpb25NYW5hZ2VyIHN0YXJ0XSk6CisgICAgICAgICgtW1dlYkNMTG9jYXRp
b25NYW5hZ2VyIHN0b3BdKToKKyAgICAgICAgKC1bV2ViQ0xMb2NhdGlvbk1hbmFnZXIgc2V0RW5h
YmxlSGlnaEFjY3VyYWN5Ol0pOgorICAgICAgICAoLVtXZWJDTExvY2F0aW9uTWFuYWdlciByZXF1
ZXN0R2VvbG9jYXRpb25BdXRob3JpemF0aW9uXSk6CisgICAgICAgICgtW1dlYkNMTG9jYXRpb25N
YW5hZ2VyIGxvY2F0aW9uTWFuYWdlckRpZENoYW5nZUF1dGhvcml6YXRpb246XSk6CisgICAgICAg
ICgtW1dlYkNMTG9jYXRpb25NYW5hZ2VyIGxvY2F0aW9uTWFuYWdlcjpkaWRVcGRhdGVMb2NhdGlv
bnM6XSk6CisgICAgICAgICgtW1dlYkNMTG9jYXRpb25NYW5hZ2VyIGxvY2F0aW9uTWFuYWdlcjpk
aWRGYWlsV2l0aEVycm9yOl0pOgorICAgICAgICAoV2ViQ29yZTo6Q29yZUxvY2F0aW9uR2VvbG9j
YXRpb25Qcm92aWRlcjo6Q29yZUxvY2F0aW9uR2VvbG9jYXRpb25Qcm92aWRlcik6CisgICAgICAg
IChXZWJDb3JlOjpDb3JlTG9jYXRpb25HZW9sb2NhdGlvblByb3ZpZGVyOjp+Q29yZUxvY2F0aW9u
R2VvbG9jYXRpb25Qcm92aWRlcik6CisgICAgICAgIChXZWJDb3JlOjpDb3JlTG9jYXRpb25HZW9s
b2NhdGlvblByb3ZpZGVyOjpzdGFydCk6CisgICAgICAgIChXZWJDb3JlOjpDb3JlTG9jYXRpb25H
ZW9sb2NhdGlvblByb3ZpZGVyOjpzdG9wKToKKyAgICAgICAgKFdlYkNvcmU6OkNvcmVMb2NhdGlv
bkdlb2xvY2F0aW9uUHJvdmlkZXI6OnNldEVuYWJsZUhpZ2hBY2N1cmFjeSk6CisgICAgICAgIChX
ZWJDb3JlOjpDb3JlTG9jYXRpb25HZW9sb2NhdGlvblByb3ZpZGVyOjpyZXF1ZXN0QXV0aG9yaXph
dGlvbik6CisgICAgICAgICogcGxhdGZvcm0vbW9jay9HZW9sb2NhdGlvbkNsaWVudE1vY2suY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6R2VvbG9jYXRpb25DbGllbnRNb2NrOjpzdGFydFVwZGF0aW5n
KToKKyAgICAgICAgKiBwbGF0Zm9ybS9tb2NrL0dlb2xvY2F0aW9uQ2xpZW50TW9jay5oOgorCiAy
MDIyLTAyLTEyICBQYXRyaWNrIEFuZ2xlICA8cGFuZ2xlQGFwcGxlLmNvbT4KIAogICAgICAgICBX
ZWIgSW5zcGVjdG9yOiBbRmxleGJveF0gU2hvdyBpdGVtIGJvdW5kcywgZ2FwcywgYW5kIGZyZWUg
c3BhY2UgaW4gZmxleCBvdmVybGF5cwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9DaGFuZ2VM
b2cgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwppbmRleCA4MWMxMWI3ODVlYTg2MTJlYjI3NmQz
ODBmZGNjOTI1NmFlOTMxN2ZkLi42MWVjNzA0MDIwYTViZWI5Njc5MDM3Njk4OTBiYTk2MzI0NTAy
MWRmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2Vi
S2l0L0NoYW5nZUxvZwpAQCAtMSwzICsxLDk0IEBACisyMDIyLTAyLTEzICBDaHJpcyBEdW1leiAg
PGNkdW1lekBhcHBsZS5jb20+CisKKyAgICAgICAgRG8gcHJlbGltaW5hcnkgd29yayB0byBwYXNz
IGRvbWFpbiBuYW1lcyB0byBDb3JlTG9jYXRpb24KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTIzNjU2NgorICAgICAgICA8cmRhcjovLzg4NzYxNDEzPgor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIERvIHByZWxp
bWluYXJ5IHdvcmsgdG8gcGFzcyBkb21haW4gbmFtZXMgdG8gQ29yZUxvY2F0aW9uIHdoZW4gdXNp
bmcgdGhlIEdlb2xvY2F0aW9uIEFQSS4KKyAgICAgICAgVGhpcyBwaXBlcyB0aGUgZG9tYWluIG5h
bWVzIGFsbCB0aGUgd2F5IGZyb20gdGhlIEdlb2xvY2F0aW9uIEFQSSB0byB0aGUgQ29yZUxvY2F0
aW9uIGNhbGxzCisgICAgICAgIGJ1dCBkb2Vzbid0IHlldCBwYXNzIHRoZSBkb21haW4gdG8gQ29y
ZUxvY2F0aW9uIGR1ZSB0byA8cmRhcjovLzg4ODM0MzAxPi4gSSB3aWxsIGZvbGxvdy11cAorICAg
ICAgICBvbmNlIDxyZGFyOi8vODg4MzQzMDE+IGlzIGZpeGVkLgorCisgICAgICAgICogU291cmNl
c0NvY29hLnR4dDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0MvV0tHZW9sb2NhdGlvbk1hbmFn
ZXIuY3BwOgorICAgICAgICAoV0tHZW9sb2NhdGlvbk1hbmFnZXJTZXRQcm92aWRlcik6CisgICAg
ICAgICogVUlQcm9jZXNzL0NvY29hL1dlYkdlb2xvY2F0aW9uTWFuYWdlclByb3h5Q29jb2EuY3Bw
OiBBZGRlZC4KKyAgICAgICAgKFdlYktpdDo6V2ViR2VvbG9jYXRpb25NYW5hZ2VyUHJveHk6OnBv
c2l0aW9uQ2hhbmdlZCk6CisgICAgICAgIChXZWJLaXQ6OldlYkdlb2xvY2F0aW9uTWFuYWdlclBy
b3h5OjplcnJvck9jY3VycmVkKToKKyAgICAgICAgKFdlYktpdDo6V2ViR2VvbG9jYXRpb25NYW5h
Z2VyUHJveHk6OnJlc2V0R2VvbG9jYXRpb24pOgorICAgICAgICAoV2ViS2l0OjpXZWJHZW9sb2Nh
dGlvbk1hbmFnZXJQcm94eTo6aXNVcGRhdGluZyBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6Oldl
Ykdlb2xvY2F0aW9uTWFuYWdlclByb3h5Ojppc0hpZ2hBY2N1cmFjeUVuYWJsZWQgY29uc3QpOgor
ICAgICAgICAoV2ViS2l0OjpXZWJHZW9sb2NhdGlvbk1hbmFnZXJQcm94eTo6cHJvdmlkZXJTdGFy
dFVwZGF0aW5nKToKKyAgICAgICAgKFdlYktpdDo6V2ViR2VvbG9jYXRpb25NYW5hZ2VyUHJveHk6
OnByb3ZpZGVyU3RvcFVwZGF0aW5nKToKKyAgICAgICAgKFdlYktpdDo6V2ViR2VvbG9jYXRpb25N
YW5hZ2VyUHJveHk6OnByb3ZpZGVyU2V0RW5hYmxlZEhpZ2hBY2N1cmFjeSk6CisgICAgICAgICog
VUlQcm9jZXNzL1dlYkdlb2xvY2F0aW9uTWFuYWdlclByb3h5LmNwcDoKKyAgICAgICAgKFdlYktp
dDo6V2ViR2VvbG9jYXRpb25NYW5hZ2VyUHJveHk6OldlYkdlb2xvY2F0aW9uTWFuYWdlclByb3h5
KToKKyAgICAgICAgKFdlYktpdDo6V2ViR2VvbG9jYXRpb25NYW5hZ2VyUHJveHk6OnByb2Nlc3NQ
b29sRGVzdHJveWVkKToKKyAgICAgICAgKFdlYktpdDo6V2ViR2VvbG9jYXRpb25NYW5hZ2VyUHJv
eHk6OnByb2Nlc3NEaWRDbG9zZSk6CisgICAgICAgIChXZWJLaXQ6OldlYkdlb2xvY2F0aW9uTWFu
YWdlclByb3h5Ojpwcm92aWRlckRpZENoYW5nZVBvc2l0aW9uKToKKyAgICAgICAgKFdlYktpdDo6
V2ViR2VvbG9jYXRpb25NYW5hZ2VyUHJveHk6OnByb3ZpZGVyRGlkRmFpbFRvRGV0ZXJtaW5lUG9z
aXRpb24pOgorICAgICAgICAoV2ViS2l0OjpXZWJHZW9sb2NhdGlvbk1hbmFnZXJQcm94eTo6c3Rh
cnRVcGRhdGluZyk6CisgICAgICAgIChXZWJLaXQ6OldlYkdlb2xvY2F0aW9uTWFuYWdlclByb3h5
OjpzdG9wVXBkYXRpbmcpOgorICAgICAgICAoV2ViS2l0OjpXZWJHZW9sb2NhdGlvbk1hbmFnZXJQ
cm94eTo6c2V0RW5hYmxlSGlnaEFjY3VyYWN5KToKKyAgICAgICAgKFdlYktpdDo6V2ViR2VvbG9j
YXRpb25NYW5hZ2VyUHJveHk6OnNldFByb3ZpZGVyKToKKyAgICAgICAgKFdlYktpdDo6V2ViR2Vv
bG9jYXRpb25NYW5hZ2VyUHJveHk6OmlzVXBkYXRpbmcgY29uc3QpOgorICAgICAgICAoV2ViS2l0
OjpXZWJHZW9sb2NhdGlvbk1hbmFnZXJQcm94eTo6aXNIaWdoQWNjdXJhY3lFbmFibGVkIGNvbnN0
KToKKyAgICAgICAgKFdlYktpdDo6V2ViR2VvbG9jYXRpb25NYW5hZ2VyUHJveHk6OnByb3ZpZGVy
U3RhcnRVcGRhdGluZyk6CisgICAgICAgIChXZWJLaXQ6OldlYkdlb2xvY2F0aW9uTWFuYWdlclBy
b3h5Ojpwcm92aWRlclN0b3BVcGRhdGluZyk6CisgICAgICAgIChXZWJLaXQ6OldlYkdlb2xvY2F0
aW9uTWFuYWdlclByb3h5Ojpwcm92aWRlclNldEVuYWJsZWRIaWdoQWNjdXJhY3kpOgorICAgICAg
ICAoV2ViS2l0OjpXZWJHZW9sb2NhdGlvbk1hbmFnZXJQcm94eTo6cmVzZXRQZXJtaXNzaW9ucyk6
IERlbGV0ZWQuCisgICAgICAgIChXZWJLaXQ6OldlYkdlb2xvY2F0aW9uTWFuYWdlclByb3h5Ojpy
ZW1vdmVSZXF1ZXN0ZXIpOiBEZWxldGVkLgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJHZW9sb2Nh
dGlvbk1hbmFnZXJQcm94eS5oOgorICAgICAgICAoV2ViS2l0OjpXZWJHZW9sb2NhdGlvbk1hbmFn
ZXJQcm94eTo6bGFzdFBvc2l0aW9uIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYktpdDo6
V2ViR2VvbG9jYXRpb25NYW5hZ2VyUHJveHk6OmlzVXBkYXRpbmcgY29uc3QpOiBEZWxldGVkLgor
ICAgICAgICAoV2ViS2l0OjpXZWJHZW9sb2NhdGlvbk1hbmFnZXJQcm94eTo6aXNIaWdoQWNjdXJh
Y3lFbmFibGVkIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViR2VvbG9j
YXRpb25NYW5hZ2VyUHJveHkubWVzc2FnZXMuaW46CisgICAgICAgICogVUlQcm9jZXNzL2lvcy9X
S0dlb2xvY2F0aW9uUHJvdmlkZXJJT1MubW06CisgICAgICAgICgtW1dLR2VvbG9jYXRpb25Qcm92
aWRlcklPUyBfc3RhcnRVcGRhdGluZ10pOgorICAgICAgICAoLVtXS0dlb2xvY2F0aW9uUHJvdmlk
ZXJJT1MgX3N0b3BVcGRhdGluZ10pOgorICAgICAgICAoLVtXS0dlb2xvY2F0aW9uUHJvdmlkZXJJ
T1MgX3NldEVuYWJsZUhpZ2hBY2N1cmFjeTpdKToKKyAgICAgICAgKC1bV0tHZW9sb2NhdGlvblBy
b3ZpZGVySU9TIGluaXRXaXRoUHJvY2Vzc1Bvb2w6XSk6CisgICAgICAgICgtW1dLR2VvbG9jYXRp
b25Qcm92aWRlcklPUyBkZWNpZGVQb2xpY3lGb3JHZW9sb2NhdGlvblJlcXVlc3RGcm9tT3JpZ2lu
OmNvbXBsZXRpb25IYW5kbGVyOnZpZXc6XSk6CisgICAgICAgICgtW1dLR2VvbG9jYXRpb25Qcm92
aWRlcklPUyBnZW9sb2NhdGlvbkF1dGhvcml6YXRpb25HcmFudGVkXSk6CisgICAgICAgICgtW1dL
R2VvbG9jYXRpb25Qcm92aWRlcklPUyBwb3NpdGlvbkNoYW5nZWQ6XSk6CisgICAgICAgICgtW1dL
R2VvbG9jYXRpb25Qcm92aWRlcklPUyBlcnJvck9jY3VycmVkOl0pOgorICAgICAgICAoLVtXS0dl
b2xvY2F0aW9uUHJvdmlkZXJJT1MgcmVzZXRHZW9sb2NhdGlvbl0pOgorICAgICAgICAoc3RhcnRV
cGRhdGluZ0NhbGxiYWNrKTogRGVsZXRlZC4KKyAgICAgICAgKHN0b3BVcGRhdGluZ0NhbGxiYWNr
KTogRGVsZXRlZC4KKyAgICAgICAgKHNldEVuYWJsZUhpZ2hBY2N1cmFjeSk6IERlbGV0ZWQuCisg
ICAgICAgICgtW1dLTGVnYWN5Q29yZUxvY2F0aW9uUHJvdmlkZXIgc2V0TGlzdGVuZXI6XSk6IERl
bGV0ZWQuCisgICAgICAgICgtW1dLTGVnYWN5Q29yZUxvY2F0aW9uUHJvdmlkZXIgcmVxdWVzdEdl
b2xvY2F0aW9uQXV0aG9yaXphdGlvbl0pOiBEZWxldGVkLgorICAgICAgICAoLVtXS0xlZ2FjeUNv
cmVMb2NhdGlvblByb3ZpZGVyIHN0YXJ0XSk6IERlbGV0ZWQuCisgICAgICAgICgtW1dLTGVnYWN5
Q29yZUxvY2F0aW9uUHJvdmlkZXIgc3RvcF0pOiBEZWxldGVkLgorICAgICAgICAoLVtXS0xlZ2Fj
eUNvcmVMb2NhdGlvblByb3ZpZGVyIHNldEVuYWJsZUhpZ2hBY2N1cmFjeTpdKTogRGVsZXRlZC4K
KyAgICAgICAgKC1bV0tMZWdhY3lDb3JlTG9jYXRpb25Qcm92aWRlciBnZW9sb2NhdGlvbkF1dGhv
cml6YXRpb25HcmFudGVkXSk6IERlbGV0ZWQuCisgICAgICAgICgtW1dLTGVnYWN5Q29yZUxvY2F0
aW9uUHJvdmlkZXIgZ2VvbG9jYXRpb25BdXRob3JpemF0aW9uRGVuaWVkXSk6IERlbGV0ZWQuCisg
ICAgICAgICgtW1dLTGVnYWN5Q29yZUxvY2F0aW9uUHJvdmlkZXIgcG9zaXRpb25DaGFuZ2VkOl0p
OiBEZWxldGVkLgorICAgICAgICAoLVtXS0xlZ2FjeUNvcmVMb2NhdGlvblByb3ZpZGVyIGVycm9y
T2NjdXJyZWQ6XSk6IERlbGV0ZWQuCisgICAgICAgICgtW1dLTGVnYWN5Q29yZUxvY2F0aW9uUHJv
dmlkZXIgcmVzZXRHZW9sb2NhdGlvbl0pOiBEZWxldGVkLgorICAgICAgICAqIFdlYktpdC54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIFdlYlByb2Nlc3MvR2VvbG9jYXRpb24v
V2ViR2VvbG9jYXRpb25NYW5hZ2VyLmNwcDoKKyAgICAgICAgKFdlYktpdDo6cmVnaXN0cmFibGVE
b21haW5Gb3JQYWdlKToKKyAgICAgICAgKFdlYktpdDo6V2ViR2VvbG9jYXRpb25NYW5hZ2VyOjpy
ZWdpc3RlcldlYlBhZ2UpOgorICAgICAgICAoV2ViS2l0OjpXZWJHZW9sb2NhdGlvbk1hbmFnZXI6
OnVucmVnaXN0ZXJXZWJQYWdlKToKKyAgICAgICAgKFdlYktpdDo6V2ViR2VvbG9jYXRpb25NYW5h
Z2VyOjpzZXRFbmFibGVIaWdoQWNjdXJhY3lGb3JQYWdlKToKKyAgICAgICAgKFdlYktpdDo6V2Vi
R2VvbG9jYXRpb25NYW5hZ2VyOjpkaWRDaGFuZ2VQb3NpdGlvbik6CisgICAgICAgIChXZWJLaXQ6
OldlYkdlb2xvY2F0aW9uTWFuYWdlcjo6ZGlkRmFpbFRvRGV0ZXJtaW5lUG9zaXRpb24pOgorICAg
ICAgICAoV2ViS2l0OjpXZWJHZW9sb2NhdGlvbk1hbmFnZXI6OnJlc2V0UGVybWlzc2lvbnMpOgor
ICAgICAgICAoV2ViS2l0OjpXZWJHZW9sb2NhdGlvbk1hbmFnZXI6OmlzVXBkYXRpbmcgY29uc3Qp
OiBEZWxldGVkLgorICAgICAgICAoV2ViS2l0OjpXZWJHZW9sb2NhdGlvbk1hbmFnZXI6OmlzSGln
aEFjY3VyYWN5RW5hYmxlZCBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgICogV2ViUHJvY2Vzcy9H
ZW9sb2NhdGlvbi9XZWJHZW9sb2NhdGlvbk1hbmFnZXIuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNz
L0dlb2xvY2F0aW9uL1dlYkdlb2xvY2F0aW9uTWFuYWdlci5tZXNzYWdlcy5pbjoKKyAgICAgICAg
KiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkdlb2xvY2F0aW9uQ2xpZW50LmNwcDoKKyAg
ICAgICAgKFdlYktpdDo6V2ViR2VvbG9jYXRpb25DbGllbnQ6OnN0YXJ0VXBkYXRpbmcpOgorICAg
ICAgICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViR2VvbG9jYXRpb25DbGllbnQuaDoK
KyAgICAgICAgKFdlYktpdDo6V2ViR2VvbG9jYXRpb25DbGllbnQ6OldlYkdlb2xvY2F0aW9uQ2xp
ZW50KTogRGVsZXRlZC4KKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3BwOgorICAg
ICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzOjpyZXNldEFsbEdlb2xvY2F0aW9uUGVybWlzc2lvbnMp
OiBEZWxldGVkLgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUHJvY2Vzcy5oOgorCiAyMDIyLTAy
LTEyICBKZXIgTm9ibGUgIDxqZXIubm9ibGVAYXBwbGUuY29tPgogCiAgICAgICAgIEFkZCBzZXR0
aW5ncyB0byByZXN0cmljdCBtZWRpYSBjb250YWluZXJzIGFuZCBjb2RlY3Mgd2hlbiBpbiBDYXB0
aXZlIFBvcnRhbCBtb2RlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9DaGFu
Z2VMb2cgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9DaGFuZ2VMb2cKaW5kZXggNjgwMzk0ODU4
YTE1YjhhMjU2OTZhYWVjN2M4ZDk0YWE3M2FkNzIyMy4uMjU5NzZhMmYwZjQ4ZDNjM2NlMjk4YmZl
ZjgwZTFhZmIxMDU4OGY2NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2hh
bmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxvZwpAQCAtMSwzICsx
LDE1IEBACisyMDIyLTAyLTEzICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CisKKyAg
ICAgICAgRG8gcHJlbGltaW5hcnkgd29yayB0byBwYXNzIGRvbWFpbiBuYW1lcyB0byBDb3JlTG9j
YXRpb24KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIz
NjU2NgorICAgICAgICA8cmRhcjovLzg4NzYxNDEzPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2ViR2VvbG9jYXRpb25D
bGllbnQuaDoKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJHZW9sb2NhdGlvbkNsaWVudC5t
bToKKyAgICAgICAgKFdlYkdlb2xvY2F0aW9uQ2xpZW50OjpzdGFydFVwZGF0aW5nKToKKwogMjAy
Mi0wMi0xMSAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgogCiAgICAgICAgIFVucmV2
aWV3ZWQsIGZpeCBidWlsZCB3aXRoIHRoZSBsYXRlc3QgaU9TIFNESy4KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXRMZWdhY3kvd2luL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2lu
L0NoYW5nZUxvZwppbmRleCA2OTVhYTkxMDUzOWVmMDIxMDVmNTIxOTMwNGMwOTdlMTAzMTI2NDU1
Li4xZDZjMDMzZTJjZDFkMTI3NDQ1YzM1YzMwY2EzODg1MGFlZjdiZGI0IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdExlZ2Fj
eS93aW4vQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTUgQEAKKzIwMjItMDItMTMgIENocmlzIER1bWV6
ICA8Y2R1bWV6QGFwcGxlLmNvbT4KKworICAgICAgICBEbyBwcmVsaW1pbmFyeSB3b3JrIHRvIHBh
c3MgZG9tYWluIG5hbWVzIHRvIENvcmVMb2NhdGlvbgorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjM2NTY2CisgICAgICAgIDxyZGFyOi8vODg3NjE0MTM+
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBXZWJD
b3JlU3VwcG9ydC9XZWJHZW9sb2NhdGlvbkNsaWVudC5jcHA6CisgICAgICAgIChXZWJHZW9sb2Nh
dGlvbkNsaWVudDo6c3RhcnRVcGRhdGluZyk6CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2Vi
R2VvbG9jYXRpb25DbGllbnQuaDoKKwogMjAyMi0wMi0wMSAgTXlsZXMgQy4gTWF4ZmllbGQgIDxt
bWF4ZmllbGRAYXBwbGUuY29tPgogCiAgICAgICAgIFJlbmFtZSBGb250Q2FzY2FkZTo6Zm9udE1l
dHJpY3MoKSBhbmQgUmVuZGVyU3R5bGU6OmZvbnRNZXRyaWNzKCkgdG8gZm9udE1ldHJpY3NPZlBy
aW1hcnlGb250KCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL1BsYXRmb3JtSGF2ZS5oIGIv
U291cmNlL1dURi93dGYvUGxhdGZvcm1IYXZlLmgKaW5kZXggMDkyYmMzNjIxNTAxZDQ0Y2VhZmIw
NzBmYWNjZDM5OTVjZGEyMzEyNy4uNTE2YjdiOWQ1NGY1YzFjYThhY2Y0YTAwMWFiNmU1Yzc2OWJh
ODlkNyAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvUGxhdGZvcm1IYXZlLmgKKysrIGIvU291
cmNlL1dURi93dGYvUGxhdGZvcm1IYXZlLmgKQEAgLTExMTksNiArMTExOSwxNiBAQAogI2RlZmlu
ZSBIQVZFX05TVEVYVExJU1RfTUFSS0VSX0ZPUk1BVFMgMQogI2VuZGlmCiAKKyNpZiAoUExBVEZP
Uk0oSU9TKSAmJiBfX0lQSE9ORV9PU19WRVJTSU9OX01BWF9BTExPV0VEID49IDE2MDAwMCkgXAor
ICAgIHx8IChQTEFURk9STShXQVRDSE9TKSAmJiBfX1dBVENIX09TX1ZFUlNJT05fTUFYX0FMTE9X
RUQgPj0gOTAwMDApIFwKKyAgICB8fCAoUExBVEZPUk0oQVBQTEVUVikgJiYgX19UVl9PU19WRVJT
SU9OX01BWF9BTExPV0VEID49IDE2MDAwMCkKKyNkZWZpbmUgSEFWRV9DT1JFX0xPQ0FUSU9OX1dF
QlNJVEVfSURFTlRJRklFUlMgMQorI2VuZGlmCisKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZKSB8
fCAoUExBVEZPUk0oTUFDKSAmJiBfX01BQ19PU19YX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49IDEw
MTQwMCkKKyNkZWZpbmUgSEFWRV9DT1JFX0xPQ0FUSU9OX0FVVEhPUklaRURfV0hFTl9JTl9VU0Ug
MQorI2VuZGlmCisKICNpZiBQTEFURk9STShNQUMpCiAjZGVmaW5lIEhBVkVfU0NFTkVLSVQgMQog
I2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2dlb2xvY2F0aW9uL0dl
b2xvY2F0aW9uQ2xpZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2dlb2xvY2F0aW9uL0dl
b2xvY2F0aW9uQ2xpZW50LmgKaW5kZXggNWJhZjNhZDgyYzU3ZTVhY2JhOTZlM2RmMGVkNjBlYmM3
NTRiY2IwNS4uYTRlODYyMzYyNTU2N2U5YWRmZWIwMGQ4MjQwMDBhMjc3ZGJlYWYwMCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9nZW9sb2NhdGlvbi9HZW9sb2NhdGlvbkNsaWVu
dC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZ2VvbG9jYXRpb24vR2VvbG9jYXRpb25D
bGllbnQuaApAQCAtMzgsNyArMzgsNyBAQCBjbGFzcyBHZW9sb2NhdGlvbkNsaWVudCB7CiBwdWJs
aWM6CiAgICAgdmlydHVhbCB2b2lkIGdlb2xvY2F0aW9uRGVzdHJveWVkKCkgPSAwOwogCi0gICAg
dmlydHVhbCB2b2lkIHN0YXJ0VXBkYXRpbmcoY29uc3QgU3RyaW5nJiBhdXRob3JpemF0aW9uVG9r
ZW4pID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgc3RhcnRVcGRhdGluZyhjb25zdCBTdHJpbmcmIGF1
dGhvcml6YXRpb25Ub2tlbiwgYm9vbCBuZWVkc0hpZ2hBY2N1cmFjeSkgPSAwOwogICAgIHZpcnR1
YWwgdm9pZCBzdG9wVXBkYXRpbmcoKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIHJldm9rZUF1dGhv
cml6YXRpb25Ub2tlbihjb25zdCBTdHJpbmcmKSB7IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9nZW9sb2NhdGlvbi9HZW9sb2NhdGlvbkNvbnRyb2xsZXIuY3BwIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9nZW9sb2NhdGlvbi9HZW9sb2NhdGlvbkNvbnRyb2xsZXIuY3Bw
CmluZGV4IDA2MTYyOTE2MGQ5YmNjN2Q1ZGFmNzRjZmM0ZjgxNTUwYmE0OGRlOGMuLjA3ZGQ2NWYz
YzFhZWU3OWViOWM3MzI4MzZhMmQ1YWFkMDE3MzMzY2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvZ2VvbG9jYXRpb24vR2VvbG9jYXRpb25Db250cm9sbGVyLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2dlb2xvY2F0aW9uL0dlb2xvY2F0aW9uQ29udHJvbGxlci5j
cHAKQEAgLTUyLDE5ICs1MiwyNSBAQCBHZW9sb2NhdGlvbkNvbnRyb2xsZXI6On5HZW9sb2NhdGlv
bkNvbnRyb2xsZXIoKQogICAgIG1fY2xpZW50Lmdlb2xvY2F0aW9uRGVzdHJveWVkKCk7CiB9CiAK
K3ZvaWQgR2VvbG9jYXRpb25Db250cm9sbGVyOjpkaWROYXZpZ2F0ZVBhZ2UoKQoreworICAgIHdo
aWxlICghbV9vYnNlcnZlcnMuaXNFbXB0eSgpKQorICAgICAgICByZW1vdmVPYnNlcnZlcihtX29i
c2VydmVycy5iZWdpbigpLT5nZXQoKSk7Cit9CisKIHZvaWQgR2VvbG9jYXRpb25Db250cm9sbGVy
OjphZGRPYnNlcnZlcihHZW9sb2NhdGlvbiYgb2JzZXJ2ZXIsIGJvb2wgZW5hYmxlSGlnaEFjY3Vy
YWN5KQogewotICAgIC8vIFRoaXMgbWF5IGJlIGNhbGxlZCBtdWx0aXBsZSB0aW1lcyB3aXRoIHRo
ZSBzYW1lIG9ic2VydmVyLCB0aG91Z2ggcmVtb3ZlT2JzZXJ2ZXIoKQotICAgIC8vIGlzIGNhbGxl
ZCBvbmx5IG9uY2Ugd2l0aCBlYWNoLgotICAgIGJvb2wgd2FzRW1wdHkgPSBtX29ic2VydmVycy5p
c0VtcHR5KCk7CisgICAgYm9vbCBoaWdoQWNjdXJhY3lXYXNSZXF1aXJlZCA9IG5lZWRzSGlnaEFj
Y3VyYWN5KCk7CisKICAgICBtX29ic2VydmVycy5hZGQob2JzZXJ2ZXIpOwogICAgIGlmIChlbmFi
bGVIaWdoQWNjdXJhY3kpCiAgICAgICAgIG1faGlnaEFjY3VyYWN5T2JzZXJ2ZXJzLmFkZChvYnNl
cnZlcik7CiAKLSAgICBpZiAoZW5hYmxlSGlnaEFjY3VyYWN5KQotICAgICAgICBtX2NsaWVudC5z
ZXRFbmFibGVIaWdoQWNjdXJhY3kodHJ1ZSk7Ci0gICAgaWYgKHdhc0VtcHR5ICYmIG1fcGFnZS5p
c1Zpc2libGUoKSkKLSAgICAgICAgbV9jbGllbnQuc3RhcnRVcGRhdGluZyhvYnNlcnZlci5hdXRo
b3JpemF0aW9uVG9rZW4oKSk7CisgICAgaWYgKG1faXNVcGRhdGluZykgeworICAgICAgICBpZiAo
IWhpZ2hBY2N1cmFjeVdhc1JlcXVpcmVkICYmIGVuYWJsZUhpZ2hBY2N1cmFjeSkKKyAgICAgICAg
ICAgIG1fY2xpZW50LnNldEVuYWJsZUhpZ2hBY2N1cmFjeSh0cnVlKTsKKyAgICB9IGVsc2UKKyAg
ICAgICAgc3RhcnRVcGRhdGluZ0lmTmVjZXNzYXJ5KCk7CiB9CiAKIHZvaWQgR2VvbG9jYXRpb25D
b250cm9sbGVyOjpyZW1vdmVPYnNlcnZlcihHZW9sb2NhdGlvbiYgb2JzZXJ2ZXIpCkBAIC03Miwx
MiArNzgsMTcgQEAgdm9pZCBHZW9sb2NhdGlvbkNvbnRyb2xsZXI6OnJlbW92ZU9ic2VydmVyKEdl
b2xvY2F0aW9uJiBvYnNlcnZlcikKICAgICBpZiAoIW1fb2JzZXJ2ZXJzLmNvbnRhaW5zKG9ic2Vy
dmVyKSkKICAgICAgICAgcmV0dXJuOwogCisgICAgYm9vbCBoaWdoQWNjdXJhY3lXYXNSZXF1aXJl
ZCA9IG5lZWRzSGlnaEFjY3VyYWN5KCk7CisKICAgICBtX29ic2VydmVycy5yZW1vdmUob2JzZXJ2
ZXIpOwogICAgIG1faGlnaEFjY3VyYWN5T2JzZXJ2ZXJzLnJlbW92ZShvYnNlcnZlcik7CiAKKyAg
ICBpZiAoIW1faXNVcGRhdGluZykKKyAgICAgICAgcmV0dXJuOworCiAgICAgaWYgKG1fb2JzZXJ2
ZXJzLmlzRW1wdHkoKSkKLSAgICAgICAgbV9jbGllbnQuc3RvcFVwZGF0aW5nKCk7Ci0gICAgZWxz
ZSBpZiAobV9oaWdoQWNjdXJhY3lPYnNlcnZlcnMuaXNFbXB0eSgpKQorICAgICAgICBzdG9wVXBk
YXRpbmdJZk5lY2Vzc2FyeSgpOworICAgIGVsc2UgaWYgKGhpZ2hBY2N1cmFjeVdhc1JlcXVpcmVk
ICYmICFuZWVkc0hpZ2hBY2N1cmFjeSgpKQogICAgICAgICBtX2NsaWVudC5zZXRFbmFibGVIaWdo
QWNjdXJhY3koZmFsc2UpOwogfQogCkBAIC0xMzksOSArMTUwLDkgQEAgdm9pZCBHZW9sb2NhdGlv
bkNvbnRyb2xsZXI6OmFjdGl2aXR5U3RhdGVEaWRDaGFuZ2UoT3B0aW9uU2V0PEFjdGl2aXR5U3Rh
dGU6OkZsYWcKICAgICBhdXRvIGNoYW5nZWQgPSBvbGRBY3Rpdml0eVN0YXRlIF4gbmV3QWN0aXZp
dHlTdGF0ZTsKICAgICBpZiAoY2hhbmdlZCAmIEFjdGl2aXR5U3RhdGU6OklzVmlzaWJsZSAmJiAh
bV9vYnNlcnZlcnMuaXNFbXB0eSgpKSB7CiAgICAgICAgIGlmIChuZXdBY3Rpdml0eVN0YXRlICYg
QWN0aXZpdHlTdGF0ZTo6SXNWaXNpYmxlKQotICAgICAgICAgICAgbV9jbGllbnQuc3RhcnRVcGRh
dGluZygoKm1fb2JzZXJ2ZXJzLnJhbmRvbSgpKS0+YXV0aG9yaXphdGlvblRva2VuKCkpOworICAg
ICAgICAgICAgc3RhcnRVcGRhdGluZ0lmTmVjZXNzYXJ5KCk7CiAgICAgICAgIGVsc2UKLSAgICAg
ICAgICAgIG1fY2xpZW50LnN0b3BVcGRhdGluZygpOworICAgICAgICAgICAgc3RvcFVwZGF0aW5n
SWZOZWNlc3NhcnkoKTsKICAgICB9CiAKICAgICBpZiAoIW1fcGFnZS5pc1Zpc2libGUoKSkKQEAg
LTE1Miw2ICsxNjMsMjQgQEAgdm9pZCBHZW9sb2NhdGlvbkNvbnRyb2xsZXI6OmFjdGl2aXR5U3Rh
dGVEaWRDaGFuZ2UoT3B0aW9uU2V0PEFjdGl2aXR5U3RhdGU6OkZsYWcKICAgICAgICAgbV9jbGll
bnQucmVxdWVzdFBlcm1pc3Npb24ocGVybWlzc2lvblJlcXVlc3QuZ2V0KCkpOwogfQogCit2b2lk
IEdlb2xvY2F0aW9uQ29udHJvbGxlcjo6c3RhcnRVcGRhdGluZ0lmTmVjZXNzYXJ5KCkKK3sKKyAg
ICBpZiAobV9pc1VwZGF0aW5nIHx8ICFtX3BhZ2UuaXNWaXNpYmxlKCkgfHwgbV9vYnNlcnZlcnMu
aXNFbXB0eSgpKQorICAgICAgICByZXR1cm47CisKKyAgICBtX2NsaWVudC5zdGFydFVwZGF0aW5n
KCgqbV9vYnNlcnZlcnMucmFuZG9tKCkpLT5hdXRob3JpemF0aW9uVG9rZW4oKSwgbmVlZHNIaWdo
QWNjdXJhY3koKSk7CisgICAgbV9pc1VwZGF0aW5nID0gdHJ1ZTsKK30KKwordm9pZCBHZW9sb2Nh
dGlvbkNvbnRyb2xsZXI6OnN0b3BVcGRhdGluZ0lmTmVjZXNzYXJ5KCkKK3sKKyAgICBpZiAoIW1f
aXNVcGRhdGluZykKKyAgICAgICAgcmV0dXJuOworCisgICAgbV9jbGllbnQuc3RvcFVwZGF0aW5n
KCk7CisgICAgbV9pc1VwZGF0aW5nID0gZmFsc2U7Cit9CisKIGNvbnN0IGNoYXIqIEdlb2xvY2F0
aW9uQ29udHJvbGxlcjo6c3VwcGxlbWVudE5hbWUoKQogewogICAgIHJldHVybiAiR2VvbG9jYXRp
b25Db250cm9sbGVyIjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZ2VvbG9j
YXRpb24vR2VvbG9jYXRpb25Db250cm9sbGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2dl
b2xvY2F0aW9uL0dlb2xvY2F0aW9uQ29udHJvbGxlci5oCmluZGV4IDQyZjVkMDYyZGI2ZjA5YzY2
MDExMWQ2NmQ5ZjBmY2ZmZjNiMjA3NDAuLmJiZmY1NzVlYjA1ODMyNDA3ODBkM2I0MWE5Njc0MmM2
YjFkNzI0OGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZ2VvbG9jYXRpb24v
R2VvbG9jYXRpb25Db250cm9sbGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9nZW9s
b2NhdGlvbi9HZW9sb2NhdGlvbkNvbnRyb2xsZXIuaApAQCAtMzAsNiArMzAsNyBAQAogI2luY2x1
ZGUgIkFjdGl2aXR5U3RhdGVDaGFuZ2VPYnNlcnZlci5oIgogI2luY2x1ZGUgIkdlb2xvY2F0aW9u
LmgiCiAjaW5jbHVkZSAiUGFnZS5oIgorI2luY2x1ZGUgIlJlZ2lzdHJhYmxlRG9tYWluLmgiCiAj
aW5jbHVkZSA8d3RmL0hhc2hTZXQuaD4KICNpbmNsdWRlIDx3dGYvTm9uY29weWFibGUuaD4KICNp
bmNsdWRlIDx3dGYvUmVmUHRyLmg+CkBAIC02NSw2ICs2Niw4IEBAIHB1YmxpYzoKIAogICAgIHZv
aWQgcmV2b2tlQXV0aG9yaXphdGlvblRva2VuKGNvbnN0IFN0cmluZyYpOwogCisgICAgdm9pZCBk
aWROYXZpZ2F0ZVBhZ2UoKTsKKwogcHJpdmF0ZToKICAgICBQYWdlJiBtX3BhZ2U7CiAgICAgR2Vv
bG9jYXRpb25DbGllbnQmIG1fY2xpZW50OwpAQCAtNzMsNiArNzYsMTEgQEAgcHJpdmF0ZToKIAog
ICAgIHN0ZDo6b3B0aW9uYWw8R2VvbG9jYXRpb25Qb3NpdGlvbkRhdGE+IG1fbGFzdFBvc2l0aW9u
OwogCisgICAgYm9vbCBuZWVkc0hpZ2hBY2N1cmFjeSgpIGNvbnN0IHsgcmV0dXJuICFtX2hpZ2hB
Y2N1cmFjeU9ic2VydmVycy5pc0VtcHR5KCk7IH0KKworICAgIHZvaWQgc3RhcnRVcGRhdGluZ0lm
TmVjZXNzYXJ5KCk7CisgICAgdm9pZCBzdG9wVXBkYXRpbmdJZk5lY2Vzc2FyeSgpOworCiAgICAg
dHlwZWRlZiBIYXNoU2V0PFJlZjxHZW9sb2NhdGlvbj4+IE9ic2VydmVyc1NldDsKICAgICAvLyBB
bGwgb2JzZXJ2ZXJzOyBib3RoIHRob3NlIHJlcXVlc3RpbmcgaGlnaCBhY2N1cmFjeSBhbmQgdGhv
c2Ugbm90LgogICAgIE9ic2VydmVyc1NldCBtX29ic2VydmVyczsKQEAgLTgwLDYgKzg4LDkgQEAg
cHJpdmF0ZToKIAogICAgIC8vIFdoaWxlIHRoZSBwYWdlIGlzIG5vdCB2aXNpYmxlLCB3ZSBwZW5k
IHBlcm1pc3Npb24gcmVxdWVzdHMuCiAgICAgSGFzaFNldDxSZWY8R2VvbG9jYXRpb24+PiBtX3Bl
bmRpbmdQZXJtaXNzaW9uUmVxdWVzdDsKKworICAgIFJlZ2lzdHJhYmxlRG9tYWluIG1fcmVnaXN0
cmFibGVEb21haW47CisgICAgYm9vbCBtX2lzVXBkYXRpbmcgeyBmYWxzZSB9OwogfTsKIAogfSAv
LyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9n
ZW9sb2NhdGlvbi9HZW9sb2NhdGlvblBvc2l0aW9uRGF0YS5oIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9nZW9sb2NhdGlvbi9HZW9sb2NhdGlvblBvc2l0aW9uRGF0YS5oCmluZGV4IDkyNjIyMTcw
YzhhYWQ2OTg5YjhhMTJjZTQ4MzU2ZGM2ODdiZjZlMzUuLmNjMjE4MGE4MzdkMjc0M2MxZmJmNzYx
YzQxMGUxYzdlYmZlYWVlN2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZ2Vv
bG9jYXRpb24vR2VvbG9jYXRpb25Qb3NpdGlvbkRhdGEuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2dlb2xvY2F0aW9uL0dlb2xvY2F0aW9uUG9zaXRpb25EYXRhLmgKQEAgLTI5LDcgKzI5
LDcgQEAKICNpbmNsdWRlIDx3dGYvUmVmLmg+CiAjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4K
IAotI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCisjaWYgUExBVEZPUk0oQ09DT0EpCiBPQkpDX0NM
QVNTIENMTG9jYXRpb247CiAjZW5kaWYKIApAQCAtNDcsNyArNDcsNyBAQCBwdWJsaWM6CiAgICAg
ewogICAgIH0KIAotI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCisjaWYgUExBVEZPUk0oQ09DT0Ep
CiAgICAgV0VCQ09SRV9FWFBPUlQgZXhwbGljaXQgR2VvbG9jYXRpb25Qb3NpdGlvbkRhdGEoQ0xM
b2NhdGlvbiopOwogI2VuZGlmCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
Z2VvbG9jYXRpb24vY29jb2EvR2VvbG9jYXRpb25Qb3NpdGlvbkRhdGFDb2NvYS5tbSBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvZ2VvbG9jYXRpb24vY29jb2EvR2VvbG9jYXRpb25Qb3NpdGlvbkRh
dGFDb2NvYS5tbQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5jMGE5YmVlNjU1Njk0ZGIzYWJmMTU3ZWVkMTkwNzZlYWQ1
ODU0NDA2Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9nZW9sb2Nh
dGlvbi9jb2NvYS9HZW9sb2NhdGlvblBvc2l0aW9uRGF0YUNvY29hLm1tCkBAIC0wLDAgKzEsNTMg
QEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQXBwbGUgSW5jLiBBbGwgUmlnaHRzIFJlc2Vy
dmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4g
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAg
ICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUg
ZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUg
SU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVS
UE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAq
IENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBP
UiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZ
CisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW1wb3J0
ICJjb25maWcuaCIKKyNpbXBvcnQgIkdlb2xvY2F0aW9uUG9zaXRpb24uaCIKKworI2ltcG9ydCA8
Q29yZUxvY2F0aW9uL0NMTG9jYXRpb24uaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitHZW9s
b2NhdGlvblBvc2l0aW9uRGF0YTo6R2VvbG9jYXRpb25Qb3NpdGlvbkRhdGEoQ0xMb2NhdGlvbiog
bG9jYXRpb24pCisgICAgOiB0aW1lc3RhbXAobG9jYXRpb24udGltZXN0YW1wLnRpbWVJbnRlcnZh
bFNpbmNlMTk3MCkKKyAgICAsIGxhdGl0dWRlKGxvY2F0aW9uLmNvb3JkaW5hdGUubGF0aXR1ZGUp
CisgICAgLCBsb25naXR1ZGUobG9jYXRpb24uY29vcmRpbmF0ZS5sb25naXR1ZGUpCisgICAgLCBh
Y2N1cmFjeShsb2NhdGlvbi5ob3Jpem9udGFsQWNjdXJhY3kpCit7CisgICAgaWYgKGxvY2F0aW9u
LnZlcnRpY2FsQWNjdXJhY3kgPj0gMC4wKSB7CisgICAgICAgIGFsdGl0dWRlID0gbG9jYXRpb24u
YWx0aXR1ZGU7CisgICAgICAgIGFsdGl0dWRlQWNjdXJhY3kgPSBsb2NhdGlvbi52ZXJ0aWNhbEFj
Y3VyYWN5OworICAgIH0KKyAgICBpZiAobG9jYXRpb24uc3BlZWQgPj0gMC4wKQorICAgICAgICBz
cGVlZCA9IGxvY2F0aW9uLnNwZWVkOworICAgIGlmIChsb2NhdGlvbi5jb3Vyc2UgPj0gMC4wKQor
ICAgICAgICBoZWFkaW5nID0gbG9jYXRpb24uY291cnNlOworI2lmICFQTEFURk9STShNQUNDQVRB
TFlTVCkKKyAgICBpZiAobG9jYXRpb24uZmxvb3IpCisgICAgICAgIGZsb29yTGV2ZWwgPSBsb2Nh
dGlvbi5mbG9vci5sZXZlbDsKKyNlbmRpZgorfQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2dlb2xvY2F0aW9uL2lvcy9HZW9sb2Nh
dGlvblBvc2l0aW9uRGF0YUlPUy5tbSBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZ2VvbG9jYXRp
b24vaW9zL0dlb2xvY2F0aW9uUG9zaXRpb25EYXRhSU9TLm1tCmRlbGV0ZWQgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCA5OGQ5YTI0MjFlN2YyMzA5YjRmNjIzYjE0ZDdjYmUyYjZjN2UwNDVjLi4wMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvZ2VvbG9jYXRpb24vaW9zL0dlb2xvY2F0aW9uUG9zaXRpb25EYXRhSU9TLm1tCisr
KyAvZGV2L251bGwKQEAgLTEsNTcgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNyBB
cHBsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmln
aHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCi0gKiBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFRIRQotICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZF
TlQgU0hBTEwgQVBQTEUgSU5DLiBPUgotICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCi0gKiBFWEVNUExBUlksIE9S
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0g
KiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwgREFUQSwgT1IKLSAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKLSAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgotICovCi0KLSNpbXBvcnQgImNvbmZpZy5oIgotI2ltcG9ydCAiR2VvbG9jYXRp
b25Qb3NpdGlvbi5oIgotCi0jaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKLQotI2ltcG9ydCA8Q29y
ZUxvY2F0aW9uL0NMTG9jYXRpb24uaD4KLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1HZW9sb2Nh
dGlvblBvc2l0aW9uRGF0YTo6R2VvbG9jYXRpb25Qb3NpdGlvbkRhdGEoQ0xMb2NhdGlvbiogbG9j
YXRpb24pCi0gICAgOiB0aW1lc3RhbXAobG9jYXRpb24udGltZXN0YW1wLnRpbWVJbnRlcnZhbFNp
bmNlMTk3MCkKLSAgICAsIGxhdGl0dWRlKGxvY2F0aW9uLmNvb3JkaW5hdGUubGF0aXR1ZGUpCi0g
ICAgLCBsb25naXR1ZGUobG9jYXRpb24uY29vcmRpbmF0ZS5sb25naXR1ZGUpCi0gICAgLCBhY2N1
cmFjeShsb2NhdGlvbi5ob3Jpem9udGFsQWNjdXJhY3kpCi17Ci0gICAgaWYgKGxvY2F0aW9uLnZl
cnRpY2FsQWNjdXJhY3kgPj0gMC4wKSB7Ci0gICAgICAgIGFsdGl0dWRlID0gbG9jYXRpb24uYWx0
aXR1ZGU7Ci0gICAgICAgIGFsdGl0dWRlQWNjdXJhY3kgPSBsb2NhdGlvbi52ZXJ0aWNhbEFjY3Vy
YWN5OwotICAgIH0KLSAgICBpZiAobG9jYXRpb24uc3BlZWQgPj0gMC4wKQotICAgICAgICBzcGVl
ZCA9IGxvY2F0aW9uLnNwZWVkOwotICAgIGlmIChsb2NhdGlvbi5jb3Vyc2UgPj0gMC4wKQotICAg
ICAgICBoZWFkaW5nID0gbG9jYXRpb24uY291cnNlOwotI2lmICFQTEFURk9STShNQUNDQVRBTFlT
VCkKLSAgICBpZiAobG9jYXRpb24uZmxvb3IpCi0gICAgICAgIGZsb29yTGV2ZWwgPSBsb2NhdGlv
bi5mbG9vci5sZXZlbDsKLSNlbmRpZgotfQotCi19Ci0KLSNlbmRpZiAvLyBQTEFURk9STShJT1Nf
RkFNSUxZKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvU291cmNlc0NvY29hLnR4dCBiL1Nv
dXJjZS9XZWJDb3JlL1NvdXJjZXNDb2NvYS50eHQKaW5kZXggMTA3NWVhYzQ3NmE1NGI4MjAwZDA2
ZTliODQzNmIyNDg5NWQ0MmM2Mi4uNjUyOTZlMjViNzE1ZGZlMzA4MDVmZDdkMWFiNzc0MzlmNDhm
MjI1ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvU291cmNlc0NvY29hLnR4dAorKysgYi9T
b3VyY2UvV2ViQ29yZS9Tb3VyY2VzQ29jb2EudHh0CkBAIC0yNTEsNiArMjUxLDcgQEAgcGxhdGZv
cm0vY2YvTWVkaWFBY2Nlc3NpYmlsaXR5U29mdExpbmsuY3BwCiBwbGF0Zm9ybS9jZi9SdW5Mb29w
T2JzZXJ2ZXIuY3BwCiBwbGF0Zm9ybS9jZi9TaGFyZWRCdWZmZXJDRi5jcHAKIHBsYXRmb3JtL2Nv
Y29hL0NvbnRlbnRGaWx0ZXJVbmJsb2NrSGFuZGxlckNvY29hLm1tIEBuby11bmlmeQorcGxhdGZv
cm0vY29jb2EvQ29yZUxvY2F0aW9uR2VvbG9jYXRpb25Qcm92aWRlci5tbQogcGxhdGZvcm0vY29j
b2EvQ29yZVZpZGVvU29mdExpbmsuY3BwCiBwbGF0Zm9ybS9jb2NvYS9EcmFnRGF0YUNvY29hLm1t
CiBwbGF0Zm9ybS9jb2NvYS9EcmFnSW1hZ2VDb2NvYS5tbQpAQCAtMzE3LDcgKzMxOCw3IEBAIHBs
YXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0NETVNlc3Npb25BVkZvdW5kYXRpb25P
YmpDLm1tCiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9DRE1TZXNzaW9uQVZT
dHJlYW1TZXNzaW9uLm1tCiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9DRE1T
ZXNzaW9uTWVkaWFTb3VyY2VBVkZPYmpDLm1tCiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRp
b24vb2JqYy9JbWFnZURlY29kZXJBVkZPYmpDLm1tCi1wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5k
YXRpb24vb2JqYy9JbmJhbmRUZXh0VHJhY2tQcml2YXRlQVZGT2JqQy5tbQorcGxhdGZvcm0vZ3Jh
cGhpY3MvYXZmb3VuZGF0aW9uL29iamMvSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUFWRk9iakMubW0g
QG5vLXVuaWZ5CiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9JbmJhbmRDaGFw
dGVyVHJhY2tQcml2YXRlQVZGT2JqQy5tbSBAbm8tdW5pZnkKIHBsYXRmb3JtL2dyYXBoaWNzL2F2
Zm91bmRhdGlvbi9vYmpjL0xvY2FsU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyLm1tCiBwbGF0Zm9y
bS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXliYWNrVGFyZ2V0UGlja2VyTWFj
Lm1tCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0
LnBieHByb2ogYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2oKaW5kZXggZjFlZTk3MTI2NWVmYWQ3MzYxYTIxOWNiY2RjZjhkMjU0MmIzN2M2MC4uM2QxYjY3
MzVjNTMyNDY1ZTdjYWZjM2JiMjViM2M0NGM4NDJhZGJkYSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJD
b3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMTM1Miw2ICsxMzUyLDcg
QEAKIAkJNDY4MzQ0RTAxRURERkFBQTAwQjc3OTVCIC8qIERPTVJlY3RMaXN0LmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0NjgzNDRERTFFRERGQTVGMDBC
Nzc5NUIgLyogRE9NUmVjdExpc3QuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2
YXRlLCApOyB9OyB9OwogCQk0NjgzREY0MDI3NjdERjk4MDA3RDAwQzggLyogSlNTaGFkb3dSZWFs
bUdsb2JhbFNjb3BlQmFzZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gNDY4M0RGM0UyNzY3REY5ODAwN0QwMEM4IC8qIEpTU2hhZG93UmVhbG1HbG9iYWxT
Y29wZUJhc2UuaCAqLzsgfTsKIAkJNDY4M0RGNDEyNzY3RTkxQTAwN0QwMEM4IC8qIFNoYWRvd1Jl
YWxtR2xvYmFsU2NvcGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDQ2ODNERjNCMjc2N0RGMjYwMDdEMDBDOCAvKiBTaGFkb3dSZWFsbUdsb2JhbFNjb3Bl
LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJNDY4
OEU5ODAyN0I2QjQ1MDAwNTY3Q0QyIC8qIENvcmVMb2NhdGlvbkdlb2xvY2F0aW9uUHJvdmlkZXIu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ2ODhFOTdG
MjdCNkI0NDQwMDU2N0NEMiAvKiBDb3JlTG9jYXRpb25HZW9sb2NhdGlvblByb3ZpZGVyLmggKi87
IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNDY4OEVFM0My
NkREMjYxMDAwMkFGNUM0IC8qIENyb3NzT3JpZ2luTW9kZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDY4OEVFM0EyNkREMjYwQzAwMkFGNUM0IC8qIENy
b3NzT3JpZ2luTW9kZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7
IH07IH07CiAJCTQ2OTQzREM5Mjc2M0Y4MTcwMDRCNjEwRSAvKiBTaGFyZWRXb3JrZXJPYmplY3RJ
ZGVudGlmaWVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA0Njk0M0RDNzI3NjNGODBFMDA0QjYxMEUgLyogU2hhcmVkV29ya2VyT2JqZWN0SWRlbnRpZmll
ci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTQ2
OTg1RjIzMjdBNEE2QUQwMDk3QTMyQiAvKiBTaGFyZWRXb3JrZXJLZXkuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ2OTg1RjIyMjdBNEE2ODYwMDk3QTMy
QiAvKiBTaGFyZWRXb3JrZXJLZXkuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2
YXRlLCApOyB9OyB9OwpAQCAtMTM3Nyw2ICsxMzc4LDcgQEAKIAkJNDZDNjk2Q0IxRTcyMDVGNzAw
NTk3OTM3IC8qIENQVU1vbml0b3IuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDQ2QzY5NkM5MUU3MjA1RTQwMDU5NzkzNyAvKiBDUFVNb25pdG9yLmggKi87
IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNDZDNjk2Q0Mx
RTcyMDVGQzAwNTk3OTM3IC8qIENQVU1vbml0b3IuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDZDNjk2Q0ExRTcyMDVFNDAwNTk3OTM3IC8qIENQVU1v
bml0b3IuY3BwICovOyB9OwogCQk0NkM4M0VGRTFBOUJCRTI5MDBBNzlBNDEgLyogR2VvTm90aWZp
ZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ2Qzgz
RUZDMUE5QkJFMjkwMEE3OUE0MSAvKiBHZW9Ob3RpZmllci5oICovOyBzZXR0aW5ncyA9IHtBVFRS
SUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCTQ2Q0E5NDMxMjdCODY5NTgwMEY0RjVGRiAv
KiBJbmJhbmRUZXh0VHJhY2tQcml2YXRlQVZGT2JqQy5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDA3QUE2QjZBMTY2RDAxOTUwMEQ0NTY3MSAvKiBJbmJh
bmRUZXh0VHJhY2tQcml2YXRlQVZGT2JqQy5tbSAqLzsgfTsKIAkJNDZDQTlDNDQxRjk3QkJFOTAw
NENGQzNBIC8qIFZpc2liaWxpdHlTdGF0ZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gNDZDQTlDNDExRjk3QkJFNzAwNENGQzNBIC8qIFZpc2liaWxpdHlT
dGF0ZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJ
CTQ2Q0Y1MDRBMjdBQjFFQTQwMDcwREJDOCAvKiBTaGFyZWRXb3JrZXJDb250ZXh0TWFuYWdlci5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDZDRjUwNDgy
N0FCMUVBMTAwNzBEQkM4IC8qIFNoYXJlZFdvcmtlckNvbnRleHRNYW5hZ2VyLmggKi87IHNldHRp
bmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNDZEMDAwNDAyNkEwRkVC
MzAwRDFCRjFFIC8qIFN1Ym1pdEV2ZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA0NkQwMDAzRTI2QTBGRTZGMDBEMUJGMUUgLyogU3VibWl0RXZlbnQu
aCAqLzsgfTsKQEAgLTI2OTUsNyArMjY5Nyw3IEBACiAJCTgzNzY1Rjk1MURBQzUyMkYwMEMwNjUz
NyAvKiBNb3VzZUV2ZW50SW5pdC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gODM3NjVGOTQxREFDNTIxODAwQzA2NTM3IC8qIE1vdXNlRXZlbnRJbml0Lmgg
Ki87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJODM3ODg3
ODIyNEQ4QTYwOTAwMEQ0QTVCIC8qIEF1ZGlvQnVmZmVyU291cmNlT3B0aW9ucy5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODM3ODg3N0YyNEQ4QTVGQzAw
MEQ0QTVCIC8qIEF1ZGlvQnVmZmVyU291cmNlT3B0aW9ucy5oICovOyB9OwogCQk4Mzc5MzYzRjFG
QkJCMEI0MDBDODAyM0MgLyogU2VydmljZVdvcmtlckNsaWVudERhdGEuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDgzNzkzNjNFMUZCQkIwQTUwMEM4MDIz
QyAvKiBTZXJ2aWNlV29ya2VyQ2xpZW50RGF0YS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVT
ID0gKFByaXZhdGUsICk7IH07IH07Ci0JCTgzNzk2NENGMUY4REI2OUQwMDIxOEVBMCAvKiBHZW9s
b2NhdGlvblBvc2l0aW9uRGF0YUlPUy5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDgzNzk2NENFMUY4REI2OUEwMDIxOEVBMCAvKiBHZW9sb2NhdGlvblBv
c2l0aW9uRGF0YUlPUy5tbSAqLzsgfTsKKwkJODM3OTY0Q0YxRjhEQjY5RDAwMjE4RUEwIC8qIEdl
b2xvY2F0aW9uUG9zaXRpb25EYXRhQ29jb2EubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA4Mzc5NjRDRTFGOERCNjlBMDAyMThFQTAgLyogR2VvbG9jYXRp
b25Qb3NpdGlvbkRhdGFDb2NvYS5tbSAqLzsgfTsKIAkJODM3QTgwMTMxRTFFMTI3MzAwMDI2QjlG
IC8qIExvY2FsaXphYmxlLnN0cmluZ3NkaWN0IGluIFJlc291cmNlcyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA4MzdBODAxMTFFMUUxMjczMDAwMjZCOUYgLyogTG9jYWxpemFi
bGUuc3RyaW5nc2RpY3QgKi87IH07CiAJCTgzN0MwQjc2MjREQjM4NTAwMDVENTk1OSAvKiBEeW5h
bWljc0NvbXByZXNzb3JPcHRpb25zLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA4MzdDMEI3MzI0REIzODQyMDA1RDU5NTkgLyogRHluYW1pY3NDb21wcmVz
c29yT3B0aW9ucy5oICovOyB9OwogCQk4MzdGQjM0NTFGOUVBMDZEMDBEMEZDMzEgLyogRXh0ZW5k
YWJsZU1lc3NhZ2VFdmVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gODM3RkIzNDAxRjlFQTA2NjAwRDBGQzMxIC8qIEV4dGVuZGFibGVNZXNzYWdlRXZl
bnQuaCAqLzsgfTsKQEAgLTkyNjksNiArOTI3MSw4IEBACiAJCTQ2ODNERjNDMjc2N0RGMjYwMDdE
MDBDOCAvKiBTaGFkb3dSZWFsbUdsb2JhbFNjb3BlLmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBTaGFkb3dSZWFsbUdsb2Jh
bFNjb3BlLmlkbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDY4M0RGM0QyNzY3REY5
ODAwN0QwMEM4IC8qIEpTU2hhZG93UmVhbG1HbG9iYWxTY29wZUJhc2UuY3BwICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNTaGFkb3dSZWFsbUdsb2JhbFNjb3BlQmFzZS5j
cHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQ2ODNERjNFMjc2N0RGOTgwMDdEMDBD
OCAvKiBKU1NoYWRvd1JlYWxtR2xvYmFsU2NvcGVCYXNlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IEpTU2hhZG93UmVhbG1HbG9iYWxTY29wZUJhc2UuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKKwkJNDY4OEU5N0QyN0I2QjQ0MzAwNTY3Q0QyIC8qIENvcmVMb2NhdGlv
bkdlb2xvY2F0aW9uUHJvdmlkZXIubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBDb3JlTG9jYXRp
b25HZW9sb2NhdGlvblByb3ZpZGVyLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk0
Njg4RTk3RjI3QjZCNDQ0MDA1NjdDRDIgLyogQ29yZUxvY2F0aW9uR2VvbG9jYXRpb25Qcm92aWRl
ci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBDb3JlTG9jYXRpb25HZW9sb2NhdGlvblByb3ZpZGVyLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQ2ODhFRTNBMjZERDI2MEMwMDJBRjVDNCAvKiBD
cm9zc09yaWdpbk1vZGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQ3Jvc3NPcmlnaW5Nb2RlLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQ2OEI4QkRFMjVDQzg0OTMwMEY2NzgyMiAvKiBKU0Jh
c2VBdWRpb0NvbnRleHRDdXN0b20uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNCYXNlQXVkaW9D
b250ZXh0Q3VzdG9tLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDY5NDNEQzcy
NzYzRjgwRTAwNEI2MTBFIC8qIFNoYXJlZFdvcmtlck9iamVjdElkZW50aWZpZXIuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gU2hhcmVkV29ya2VyT2JqZWN0SWRlbnRpZmllci5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwpAQCAtMTIxOTAsNyArMTIxOTQsNyBAQAogCQk4Mzc4ODc4MTI0RDhBNUZDMDAw
RDRBNUIgLyogQXVkaW9CdWZmZXJTb3VyY2VPcHRpb25zLmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBBdWRpb0J1ZmZlclNv
dXJjZU9wdGlvbnMuaWRsOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk4Mzc5MzYzQzFG
QkJCMEE0MDBDODAyM0MgLyogU2VydmljZVdvcmtlckNsaWVudERhdGEuY3BwICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gU2VydmljZVdvcmtlckNsaWVudERhdGEuY3BwOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk4Mzc5MzYzRTFGQkJCMEE1MDBDODAyM0MgLyog
U2VydmljZVdvcmtlckNsaWVudERhdGEuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gU2VydmljZVdvcmtlckNsaWVudERhdGEuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
LQkJODM3OTY0Q0UxRjhEQjY5QTAwMjE4RUEwIC8qIEdlb2xvY2F0aW9uUG9zaXRpb25EYXRhSU9T
Lm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBuYW1lID0gR2VvbG9jYXRpb25Q
b3NpdGlvbkRhdGFJT1MubW07IHBhdGggPSBNb2R1bGVzL2dlb2xvY2F0aW9uL2lvcy9HZW9sb2Nh
dGlvblBvc2l0aW9uRGF0YUlPUy5tbTsgc291cmNlVHJlZSA9IFNPVVJDRV9ST09UOyB9OworCQk4
Mzc5NjRDRTFGOERCNjlBMDAyMThFQTAgLyogR2VvbG9jYXRpb25Qb3NpdGlvbkRhdGFDb2NvYS5t
bSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgbmFtZSA9IEdlb2xvY2F0aW9uUG9z
aXRpb25EYXRhQ29jb2EubW07IHBhdGggPSBNb2R1bGVzL2dlb2xvY2F0aW9uL2NvY29hL0dlb2xv
Y2F0aW9uUG9zaXRpb25EYXRhQ29jb2EubW07IHNvdXJjZVRyZWUgPSBTT1VSQ0VfUk9PVDsgfTsK
IAkJODM3QTgwMTIxRTFFMTI3MzAwMDI2QjlGIC8qIGVuICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dC5wbGlzdC5zdHJpbmdzZGljdDsgbmFtZSA9
IGVuOyBwYXRoID0gZW4ubHByb2ovTG9jYWxpemFibGUuc3RyaW5nc2RpY3Q7IHNvdXJjZVRyZWUg
PSBTT1VSQ0VfUk9PVDsgfTsKIAkJODM3QjdEMUYxREMzRjU0QzAwRDA1MUZDIC8qIFZhbGlkYXRp
b25CdWJibGVJT1MubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBW
YWxpZGF0aW9uQnViYmxlSU9TLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk4MzdD
MEI3MzI0REIzODQyMDA1RDU5NTkgLyogRHluYW1pY3NDb21wcmVzc29yT3B0aW9ucy5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBEeW5hbWljc0NvbXByZXNzb3JPcHRpb25zLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CkBAIC0yMTYwNiw2ICsyMTYxMCwxNCBAQAogCQkJcGF0aCA9IGNvbnRleHQ7CiAJ
CQlzb3VyY2VUcmVlID0gIjxncm91cD4iOwogCQl9OworCQk0NjVDM0QxOTI3Qjk5MUM4MDAyMTMw
MkYgLyogY29jb2EgKi8gPSB7CisJCQlpc2EgPSBQQlhHcm91cDsKKwkJCWNoaWxkcmVuID0gKAor
CQkJCTgzNzk2NENFMUY4REI2OUEwMDIxOEVBMCAvKiBHZW9sb2NhdGlvblBvc2l0aW9uRGF0YUNv
Y29hLm1tICovLAorCQkJKTsKKwkJCXBhdGggPSBjb2NvYTsKKwkJCXNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7CisJCX07CiAJCTQ2Njk0Q0RFMjc1OTQ0NkQwMEUzMTUwRSAvKiBzaGFyZWQgKi8gPSB7
CiAJCQlpc2EgPSBQQlhHcm91cDsKIAkJCWNoaWxkcmVuID0gKApAQCAtMjUxMDMsMTQgKzI1MTE1
LDYgQEAKIAkJCXBhdGggPSBiZWFjb247CiAJCQlzb3VyY2VUcmVlID0gIjxncm91cD4iOwogCQl9
OwotCQk4Mzc5NjRDQzFGOERCNjdEMDAyMThFQTAgLyogaW9zICovID0gewotCQkJaXNhID0gUEJY
R3JvdXA7Ci0JCQljaGlsZHJlbiA9ICgKLQkJCQk4Mzc5NjRDRTFGOERCNjlBMDAyMThFQTAgLyog
R2VvbG9jYXRpb25Qb3NpdGlvbkRhdGFJT1MubW0gKi8sCi0JCQkpOwotCQkJbmFtZSA9IGlvczsK
LQkJCXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7Ci0JCX07CiAJCTgzRkIzMzY1MUY1MDhBMTcwMDk4
NkU1NCAvKiBlbnRyaWVzYXBpICovID0gewogCQkJaXNhID0gUEJYR3JvdXA7CiAJCQljaGlsZHJl
biA9ICgKQEAgLTI2MTIxLDcgKzI2MTI1LDcgQEAKIAkJOTcxMTQ1RkYxNEVGMDA3OTAwNjc0RkQ5
IC8qIGdlb2xvY2F0aW9uICovID0gewogCQkJaXNhID0gUEJYR3JvdXA7CiAJCQljaGlsZHJlbiA9
ICgKLQkJCQk4Mzc5NjRDQzFGOERCNjdEMDAyMThFQTAgLyogaW9zICovLAorCQkJCTQ2NUMzRDE5
MjdCOTkxQzgwMDIxMzAyRiAvKiBjb2NvYSAqLywKIAkJCQk5NzQ2QUYxMzE0RjREREU2MDAzRTdB
NzAgLyogR2VvbG9jYXRpb24uY3BwICovLAogCQkJCTk3NDZBRjE0MTRGNERERTYwMDNFN0E3MCAv
KiBHZW9sb2NhdGlvbi5oICovLAogCQkJCTk3NDZBRjE1MTRGNERERTYwMDNFN0E3MCAvKiBHZW9s
b2NhdGlvbi5pZGwgKi8sCkBAIC0yNjgzMyw2ICsyNjgzNyw4IEBACiAJCQkJQzFGN0I3MkYyNDQ4
RjJBQzAwMTI0NTU3IC8qIEFHWENvbXBpbGVyU2VydmljZS5jcHAgKi8sCiAJCQkJQzFGN0I3MzAy
NDQ4RjJBQzAwMTI0NTU3IC8qIEFHWENvbXBpbGVyU2VydmljZS5oICovLAogCQkJCUExNDA5MEZB
MUFBNTFFMUQwMDkxMTkxQSAvKiBDb250ZW50RmlsdGVyVW5ibG9ja0hhbmRsZXJDb2NvYS5tbSAq
LywKKwkJCQk0Njg4RTk3RjI3QjZCNDQ0MDA1NjdDRDIgLyogQ29yZUxvY2F0aW9uR2VvbG9jYXRp
b25Qcm92aWRlci5oICovLAorCQkJCTQ2ODhFOTdEMjdCNkI0NDMwMDU2N0NEMiAvKiBDb3JlTG9j
YXRpb25HZW9sb2NhdGlvblByb3ZpZGVyLm1tICovLAogCQkJCUNEN0QzMzQ1MUM3QTE2QkYwMDA0
MTI5MyAvKiBDb3JlVmlkZW9Tb2Z0TGluay5jcHAgKi8sCiAJCQkJQ0Q3RDMzNDYxQzdBMTZCRjAw
MDQxMjkzIC8qIENvcmVWaWRlb1NvZnRMaW5rLmggKi8sCiAJCQkJRjQ2MkU3OUYyNDJBREEzQzAw
MjA0REREIC8qIERyYWdEYXRhQ29jb2EubW0gKi8sCkBAIC0zMzkxOSw2ICszMzkyNSw3IEBACiAJ
CQkJM0Y4MDIwMzcxRTlFNDdDNTAwREVDNjFEIC8qIENvcmVBdWRpb0NhcHR1cmVEZXZpY2VNYW5h
Z2VyLmggaW4gSGVhZGVycyAqLywKIAkJCQk0MUZDQ0MzQjI3NDY2NzU2MDA4OTJBRDYgLyogQ29y
ZUF1ZGlvQ2FwdHVyZVNvdXJjZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMDdBRkY0MjIxRUZCMTQ0
OTAwQjU0NUIzIC8qIENvcmVBdWRpb0NhcHR1cmVTb3VyY2VJT1MuaCBpbiBIZWFkZXJzICovLAor
CQkJCTQ2ODhFOTgwMjdCNkI0NTAwMDU2N0NEMiAvKiBDb3JlTG9jYXRpb25HZW9sb2NhdGlvblBy
b3ZpZGVyLmggaW4gSGVhZGVycyAqLywKIAkJCQlDRDdEMzM0ODFDN0ExNkJGMDAwNDEyOTMgLyog
Q29yZVZpZGVvU29mdExpbmsuaCBpbiBIZWFkZXJzICovLAogCQkJCTg2MkYxMjlFMThDMTU3NkYw
MDVDNTRBRiAvKiBDb3VudGVkVXNlckFjdGl2aXR5LmggaW4gSGVhZGVycyAqLywKIAkJCQlBODBF
NkQwNDBBMTk4OUNBMDA3RkI4QzUgLyogQ291bnRlci5oIGluIEhlYWRlcnMgKi8sCkBAIC0zODY5
MiwxMyArMzg2OTksMTQgQEAKIAkJCQk1MThGNEZGNjE5NENBNEU2MDA4MUJBQUUgLyogR2FtZXBh
ZEJ1dHRvbi5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk1MTZDNjIyMDE5NTBENDg3MDAzMzdFNzUg
LyogR2FtZXBhZEV2ZW50LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTUxQTlEOUU5MTk1QjkzMUYw
MDFCMkI1QyAvKiBHYW1lcGFkTWFuYWdlci5jcHAgaW4gU291cmNlcyAqLywKLQkJCQk4Mzc5NjRD
RjFGOERCNjlEMDAyMThFQTAgLyogR2VvbG9jYXRpb25Qb3NpdGlvbkRhdGFJT1MubW0gaW4gU291
cmNlcyAqLywKKwkJCQk4Mzc5NjRDRjFGOERCNjlEMDAyMThFQTAgLyogR2VvbG9jYXRpb25Qb3Np
dGlvbkRhdGFDb2NvYS5tbSBpbiBTb3VyY2VzICovLAogCQkJCTZFNzJGNTRFMjI5RENEMTAwMEIz
RTE1MSAvKiBHcmFwaGljc0NvbnRleHRHTEFOR0xFLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTdD
M0U1MTBCMThERjhGMzUwMEMxMTJGNyAvKiBIVE1MQ29udmVydGVyLm1tIGluIFNvdXJjZXMgKi8s
CiAJCQkJQThEMDZCM0EwQTI2NURDRDAwNUU3MjAzIC8qIEhUTUxOYW1lcy5jcHAgaW4gU291cmNl
cyAqLywKIAkJCQkxQUM5MDBDMzE5NDNDMEZDMDA4NjI1QjUgLyogSFRUUEhlYWRlck5hbWVzLmNw
cCBpbiBTb3VyY2VzICovLAogCQkJCUNEMjdBRTUxMjJBOTg2ODcwMDk0N0ZGOSAvKiBJbWFnZVJv
dGF0aW9uU2Vzc2lvblZULm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJMDcwRTJEMEYyNkYyNTA4OTAw
MTRBQUMzIC8qIEluYmFuZENoYXB0ZXJUcmFja1ByaXZhdGVBVkZPYmpDLm1tIGluIFNvdXJjZXMg
Ki8sCisJCQkJNDZDQTk0MzEyN0I4Njk1ODAwRjRGNUZGIC8qIEluYmFuZFRleHRUcmFja1ByaXZh
dGVBVkZPYmpDLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJQ0QwNjNGODIxRTIzRkE4OTAwODEyQkUz
IC8qIEluaXREYXRhUmVnaXN0cnkuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJOTM1QzQ3NzAwOUFD
NEQ3MzAwQTZBQUI0IC8qIEtleUV2ZW50TWFjLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJQ0RBOThF
MEIxNjAzQ0Q2MDAwRkVBM0IxIC8qIExlZ2FjeUNETS5jcHAgaW4gU291cmNlcyAqLywKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdl
L1BhZ2UuY3BwCmluZGV4IDZhODVlODQzZDhiYmUzZDE5MmQ5N2Y0OTZiZDdlYjQ1NDc0OWRiYTQu
LmVmZTBlMzgwNmRjODQ4MDMwZDIyYjlkOTAyOTE2NzkzMzg1YmZkYWEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdl
LmNwcApAQCAtNjksNiArNjksNyBAQAogI2luY2x1ZGUgIkZyYW1lVHJlZS5oIgogI2luY2x1ZGUg
IkZyYW1lVmlldy5oIgogI2luY2x1ZGUgIkZ1bGxzY3JlZW5NYW5hZ2VyLmgiCisjaW5jbHVkZSAi
R2VvbG9jYXRpb25Db250cm9sbGVyLmgiCiAjaW5jbHVkZSAiSFRNTEVsZW1lbnQuaCIKICNpbmNs
dWRlICJIVE1MSW1hZ2VFbGVtZW50LmgiCiAjaW5jbHVkZSAiSFRNTE1lZGlhRWxlbWVudC5oIgpA
QCAtMTMzMiw2ICsxMzMzLDExIEBAIHZvaWQgUGFnZTo6ZGlkQ29tbWl0TG9hZCgpCiAgICAgcmVz
ZXRUZXh0UmVjb2duaXRpb25SZXN1bHRzKCk7CiAgICAgcmVzZXRJbWFnZUFuYWx5c2lzUXVldWUo
KTsKICNlbmRpZgorCisjaWYgRU5BQkxFKEdFT0xPQ0FUSU9OKQorICAgIGlmIChhdXRvKiBnZW9s
b2NhdGlvbkNvbnRyb2xsZXIgPSBHZW9sb2NhdGlvbkNvbnRyb2xsZXI6OmZyb20odGhpcykpCisg
ICAgICAgIGdlb2xvY2F0aW9uQ29udHJvbGxlci0+ZGlkTmF2aWdhdGVQYWdlKCk7CisjZW5kaWYK
IH0KIAogdm9pZCBQYWdlOjpkaWRGaW5pc2hMb2FkKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2NvY29hL0NvcmVMb2NhdGlvbkdlb2xvY2F0aW9uUHJvdmlkZXIuaCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL0NvcmVMb2NhdGlvbkdlb2xvY2F0aW9uUHJvdmlk
ZXIuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi5jNTI0NmM4ODRhY2Y4ZjY5ZmNiOGY4YWM0YWNjN2Y0Y2RlNjQ1Y2Vk
Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvQ29yZUxv
Y2F0aW9uR2VvbG9jYXRpb25Qcm92aWRlci5oCkBAIC0wLDAgKzEsNjcgQEAKKy8qCisgKiBDb3B5
cmlnaHQgKEMpIDIwMjIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgor
ICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENP
TlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgor
ICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBP
UiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICog
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJ
VFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAq
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLwor
CisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgPHd0Zi9Db21wbGV0aW9uSGFuZGxlci5oPgorI2lu
Y2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CisjaW5jbHVkZSA8d3RmL1JldGFpblB0ci5oPgorCitPQkpD
X0NMQVNTIFdlYkNMTG9jYXRpb25NYW5hZ2VyOworCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2Ns
YXNzIEdlb2xvY2F0aW9uUG9zaXRpb25EYXRhOworY2xhc3MgUmVnaXN0cmFibGVEb21haW47CisK
K2NsYXNzIFdFQkNPUkVfRVhQT1JUIENvcmVMb2NhdGlvbkdlb2xvY2F0aW9uUHJvdmlkZXIgewor
ICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOworcHVibGljOgorICAgIGNsYXNzIENsaWVudCB7
CisgICAgcHVibGljOgorICAgICAgICB2aXJ0dWFsIH5DbGllbnQoKSB7IH0KKworICAgICAgICB2
aXJ0dWFsIHZvaWQgZ2VvbG9jYXRpb25BdXRob3JpemF0aW9uR3JhbnRlZChjb25zdCBTdHJpbmcm
IC8qd2Vic2l0ZUlkZW50aWZpZXIqLykgeyB9CisgICAgICAgIHZpcnR1YWwgdm9pZCBnZW9sb2Nh
dGlvbkF1dGhvcml6YXRpb25EZW5pZWQoY29uc3QgU3RyaW5nJiAvKndlYnNpdGVJZGVudGlmaWVy
Ki8pIHsgfQorICAgICAgICB2aXJ0dWFsIHZvaWQgcG9zaXRpb25DaGFuZ2VkKGNvbnN0IFN0cmlu
ZyYgd2Vic2l0ZUlkZW50aWZpZXIsIEdlb2xvY2F0aW9uUG9zaXRpb25EYXRhJiYpID0gMDsKKyAg
ICAgICAgdmlydHVhbCB2b2lkIGVycm9yT2NjdXJyZWQoY29uc3QgU3RyaW5nJiB3ZWJzaXRlSWRl
bnRpZmllciwgY29uc3QgU3RyaW5nJiBlcnJvck1lc3NhZ2UpID0gMDsKKyAgICAgICAgdmlydHVh
bCB2b2lkIHJlc2V0R2VvbG9jYXRpb24oY29uc3QgU3RyaW5nJiB3ZWJzaXRlSWRlbnRpZmllcikg
PSAwOworICAgIH07CisKKyAgICBDb3JlTG9jYXRpb25HZW9sb2NhdGlvblByb3ZpZGVyKGNvbnN0
IFJlZ2lzdHJhYmxlRG9tYWluJiwgQ2xpZW50Jik7CisgICAgfkNvcmVMb2NhdGlvbkdlb2xvY2F0
aW9uUHJvdmlkZXIoKTsKKworICAgIHZvaWQgc3RhcnQoKTsKKyAgICB2b2lkIHN0b3AoKTsKKwor
ICAgIHZvaWQgc2V0RW5hYmxlSGlnaEFjY3VyYWN5KGJvb2wpOworCisgICAgc3RhdGljIHZvaWQg
cmVxdWVzdEF1dGhvcml6YXRpb24oY29uc3QgUmVnaXN0cmFibGVEb21haW4mLCBDb21wbGV0aW9u
SGFuZGxlcjx2b2lkKGJvb2wpPiYmKTsKKworcHJpdmF0ZToKKyAgICBSZXRhaW5QdHI8V2ViQ0xM
b2NhdGlvbk1hbmFnZXI+IG1fbG9jYXRpb25NYW5hZ2VyOworfTsKKworfSAvLyBuYW1lc3BhY2Ug
V2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvQ29yZUxv
Y2F0aW9uR2VvbG9jYXRpb25Qcm92aWRlci5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Nv
Y29hL0NvcmVMb2NhdGlvbkdlb2xvY2F0aW9uUHJvdmlkZXIubW0KbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNjAwYTZm
OTczYTljMDYxMDI4YTUzZDAzMmJmOWY5NzJhZjk1NmFhOQotLS0gL2Rldi9udWxsCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL0NvcmVMb2NhdGlvbkdlb2xvY2F0aW9uUHJvdmlk
ZXIubW0KQEAgLTAsMCArMSwyNjggQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjIgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycK
KyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisg
KiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW1wb3J0ICJjb25maWcuaCIK
KyNpbXBvcnQgIkNvcmVMb2NhdGlvbkdlb2xvY2F0aW9uUHJvdmlkZXIuaCIKKworI2ltcG9ydCAi
R2VvbG9jYXRpb25Qb3NpdGlvbkRhdGEuaCIKKyNpbXBvcnQgIlJlZ2lzdHJhYmxlRG9tYWluLmgi
CisjaW1wb3J0IDxDb3JlTG9jYXRpb24vQ0xMb2NhdGlvbk1hbmFnZXJEZWxlZ2F0ZS5oPgorI2lt
cG9ydCA8Q29yZUxvY2F0aW9uL0NvcmVMb2NhdGlvbi5oPgorI2ltcG9ydCA8d3RmL1NvZnRMaW5r
aW5nLmg+CisKKyNpZiBVU0UoQVBQTEVfSU5URVJOQUxfU0RLKQorI2ltcG9ydCA8Q29yZUxvY2F0
aW9uL0NMTG9jYXRpb25NYW5hZ2VyX1ByaXZhdGUuaD4KKyNlbmRpZgorCitTT0ZUX0xJTktfRlJB
TUVXT1JLKENvcmVMb2NhdGlvbikKKworU09GVF9MSU5LX0NMQVNTKENvcmVMb2NhdGlvbiwgQ0xM
b2NhdGlvbk1hbmFnZXIpCitTT0ZUX0xJTktfQ0xBU1MoQ29yZUxvY2F0aW9uLCBDTExvY2F0aW9u
KQorCitTT0ZUX0xJTktfQ09OU1RBTlQoQ29yZUxvY2F0aW9uLCBrQ0xMb2NhdGlvbkFjY3VyYWN5
QmVzdCwgZG91YmxlKQorU09GVF9MSU5LX0NPTlNUQU5UKENvcmVMb2NhdGlvbiwga0NMTG9jYXRp
b25BY2N1cmFjeUh1bmRyZWRNZXRlcnMsIGRvdWJsZSkKKworI2RlZmluZSBrQ0xMb2NhdGlvbkFj
Y3VyYWN5QmVzdCBnZXRrQ0xMb2NhdGlvbkFjY3VyYWN5QmVzdCgpCisjZGVmaW5lIGtDTExvY2F0
aW9uQWNjdXJhY3lIdW5kcmVkTWV0ZXJzIGdldGtDTExvY2F0aW9uQWNjdXJhY3lIdW5kcmVkTWV0
ZXJzKCkKKworc3RhdGljIGJvb2wgaXNBdXRob3JpemF0aW9uR3JhbnRlZChDTEF1dGhvcml6YXRp
b25TdGF0dXMgYXV0aG9yaXphdGlvblN0YXR1cykKK3sKKyAgICByZXR1cm4gYXV0aG9yaXphdGlv
blN0YXR1cyA9PSBrQ0xBdXRob3JpemF0aW9uU3RhdHVzQXV0aG9yaXplZEFsd2F5cworI2lmIEhB
VkUoQ09SRV9MT0NBVElPTl9BVVRIT1JJWkVEX1dIRU5fSU5fVVNFKSAmJiBVU0UoQVBQTEVfSU5U
RVJOQUxfU0RLKQorICAgICAgICB8fCBhdXRob3JpemF0aW9uU3RhdHVzID09IGtDTEF1dGhvcml6
YXRpb25TdGF0dXNBdXRob3JpemVkV2hlbkluVXNlCisjZW5kaWYKKyAgICAgICAgOworfQorCitA
aW50ZXJmYWNlIFdlYkNMTG9jYXRpb25NYW5hZ2VyIDogTlNPYmplY3Q8Q0xMb2NhdGlvbk1hbmFn
ZXJEZWxlZ2F0ZT4KK0BlbmQKKworQGltcGxlbWVudGF0aW9uIFdlYkNMTG9jYXRpb25NYW5hZ2Vy
IHsKKyAgICBSZXRhaW5QdHI8Q0xMb2NhdGlvbk1hbmFnZXI+IF9sb2NhdGlvbk1hbmFnZXI7Cisg
ICAgV2ViQ29yZTo6Q29yZUxvY2F0aW9uR2VvbG9jYXRpb25Qcm92aWRlcjo6Q2xpZW50KiBfY2xp
ZW50OworICAgIFN0cmluZyBfd2Vic2l0ZUlkZW50aWZpZXI7CisgICAgQk9PTCBfaXNXYWl0aW5n
Rm9yQXV0aG9yaXphdGlvbjsKK30KKworLSAoaW5zdGFuY2V0eXBlKWluaXRXaXRoV2Vic2l0ZUlk
ZW50aWZpZXI6KGNvbnN0IFN0cmluZyYpd2Vic2l0ZUlkZW50aWZpZXIgY2xpZW50OihXZWJDb3Jl
OjpDb3JlTG9jYXRpb25HZW9sb2NhdGlvblByb3ZpZGVyOjpDbGllbnQmKWNsaWVudAoreworICAg
IHNlbGYgPSBbc3VwZXIgaW5pdF07CisgICAgaWYgKCFzZWxmKQorICAgICAgICByZXR1cm4gbmls
OworCisgICAgLy8gRklYTUU6IENhbGwgaW5pdFdpdGhXZWJzaXRlSWRlbnRpZmllciBhbmQgcGFz
cyB0aGUgd2Vic2l0ZUlkZW50aWZpZXIgd2hlbiBIQVZFKENPUkVfTE9DQVRJT05fV0VCU0lURV9J
REVOVElGSUVSUykgb25jZSA8cmRhcjovLzg4ODM0MzAxID4gaXMgZml4ZWQuCisgICAgVU5VU0VE
X1BBUkFNKHdlYnNpdGVJZGVudGlmaWVyKTsKKyAgICBfbG9jYXRpb25NYW5hZ2VyID0gYWRvcHRO
UyhbYWxsb2NDTExvY2F0aW9uTWFuYWdlckluc3RhbmNlKCkgaW5pdF0pOworICAgIF9jbGllbnQg
PSAmY2xpZW50OworICAgIF93ZWJzaXRlSWRlbnRpZmllciA9IHdlYnNpdGVJZGVudGlmaWVyOwor
ICAgIFtfbG9jYXRpb25NYW5hZ2VyIHNldERlbGVnYXRlOnNlbGZdOworICAgIHJldHVybiBzZWxm
OworfQorCistICh2b2lkKWRlYWxsb2MKK3sKKyAgICBbX2xvY2F0aW9uTWFuYWdlciBzZXREZWxl
Z2F0ZTpuaWxdOworICAgIFtzdXBlciBkZWFsbG9jXTsKK30KKworLSAodm9pZClzdGFydAorewor
ICAgIGlmICghW2dldENMTG9jYXRpb25NYW5hZ2VyQ2xhc3MoKSBsb2NhdGlvblNlcnZpY2VzRW5h
YmxlZF0gfHwgIWlzQXV0aG9yaXphdGlvbkdyYW50ZWQoW19sb2NhdGlvbk1hbmFnZXIgYXV0aG9y
aXphdGlvblN0YXR1c10pKSB7CisgICAgICAgIFtfbG9jYXRpb25NYW5hZ2VyIHN0b3BVcGRhdGlu
Z0xvY2F0aW9uXTsKKyAgICAgICAgX2NsaWVudC0+cmVzZXRHZW9sb2NhdGlvbihfd2Vic2l0ZUlk
ZW50aWZpZXIpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgW19sb2NhdGlvbk1hbmFn
ZXIgc3RhcnRVcGRhdGluZ0xvY2F0aW9uXTsKK30KKworLSAodm9pZClzdG9wCit7CisgICAgW19s
b2NhdGlvbk1hbmFnZXIgc3RvcFVwZGF0aW5nTG9jYXRpb25dOworfQorCistICh2b2lkKXNldEVu
YWJsZUhpZ2hBY2N1cmFjeTooQk9PTCloaWdoQWNjdXJhY3lFbmFibGVkCit7CisgICAgW19sb2Nh
dGlvbk1hbmFnZXIgc2V0RGVzaXJlZEFjY3VyYWN5OmhpZ2hBY2N1cmFjeUVuYWJsZWQgPyBrQ0xM
b2NhdGlvbkFjY3VyYWN5QmVzdCA6IGtDTExvY2F0aW9uQWNjdXJhY3lIdW5kcmVkTWV0ZXJzXTsK
K30KKworLSAodm9pZClyZXF1ZXN0R2VvbG9jYXRpb25BdXRob3JpemF0aW9uCit7CisgICAgaWYg
KCFbZ2V0Q0xMb2NhdGlvbk1hbmFnZXJDbGFzcygpIGxvY2F0aW9uU2VydmljZXNFbmFibGVkXSkg
eworICAgICAgICBfY2xpZW50LT5nZW9sb2NhdGlvbkF1dGhvcml6YXRpb25EZW5pZWQoX3dlYnNp
dGVJZGVudGlmaWVyKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIHN3aXRjaCAoW19s
b2NhdGlvbk1hbmFnZXIgYXV0aG9yaXphdGlvblN0YXR1c10pIHsKKyAgICBjYXNlIGtDTEF1dGhv
cml6YXRpb25TdGF0dXNOb3REZXRlcm1pbmVkOiB7CisgICAgICAgIGlmICghX2lzV2FpdGluZ0Zv
ckF1dGhvcml6YXRpb24pIHsKKyAgICAgICAgICAgIF9pc1dhaXRpbmdGb3JBdXRob3JpemF0aW9u
ID0gWUVTOworICAgICAgICAgICAgW19sb2NhdGlvbk1hbmFnZXIgcmVxdWVzdFdoZW5JblVzZUF1
dGhvcml6YXRpb25dOworICAgICAgICB9CisgICAgICAgIGJyZWFrOworICAgIH0KKyAgICBjYXNl
IGtDTEF1dGhvcml6YXRpb25TdGF0dXNBdXRob3JpemVkQWx3YXlzOgorI2lmIEhBVkUoQ09SRV9M
T0NBVElPTl9BVVRIT1JJWkVEX1dIRU5fSU5fVVNFKSAmJiBVU0UoQVBQTEVfSU5URVJOQUxfU0RL
KQorICAgIGNhc2Uga0NMQXV0aG9yaXphdGlvblN0YXR1c0F1dGhvcml6ZWRXaGVuSW5Vc2U6Cisj
ZW5kaWYKKyAgICAgICAgX2NsaWVudC0+Z2VvbG9jYXRpb25BdXRob3JpemF0aW9uR3JhbnRlZChf
d2Vic2l0ZUlkZW50aWZpZXIpOworICAgICAgICBicmVhazsKKyAgICBjYXNlIGtDTEF1dGhvcml6
YXRpb25TdGF0dXNSZXN0cmljdGVkOgorICAgIGNhc2Uga0NMQXV0aG9yaXphdGlvblN0YXR1c0Rl
bmllZDoKKyAgICAgICAgX2NsaWVudC0+Z2VvbG9jYXRpb25BdXRob3JpemF0aW9uRGVuaWVkKF93
ZWJzaXRlSWRlbnRpZmllcik7CisgICAgICAgIGJyZWFrOworICAgIH0KK30KKworLSAodm9pZCls
b2NhdGlvbk1hbmFnZXJEaWRDaGFuZ2VBdXRob3JpemF0aW9uOihDTExvY2F0aW9uTWFuYWdlciAq
KW1hbmFnZXIKK3sKKyAgICBhdXRvIHN0YXR1cyA9IFtfbG9jYXRpb25NYW5hZ2VyIGF1dGhvcml6
YXRpb25TdGF0dXNdOworICAgIGlmIChfaXNXYWl0aW5nRm9yQXV0aG9yaXphdGlvbikgeworICAg
ICAgICBzd2l0Y2ggKHN0YXR1cykgeworICAgICAgICBjYXNlIGtDTEF1dGhvcml6YXRpb25TdGF0
dXNOb3REZXRlcm1pbmVkOgorICAgICAgICAgICAgLy8gVGhpcyBjYW4gaGFwcGVuIGFmdGVyIHJl
c3VtZSBpZiB0aGUgdXNlciBoYXMgc3RpbGwgbm90IGFuc3dlcmVkIHRoZSBkaWFsb2cuIFdlIGp1
c3QgaGF2ZSB0byB3YWl0IGZvciB0aGUgcGVybWlzc2lvbi4KKyAgICAgICAgICAgIGJyZWFrOwor
ICAgICAgICBjYXNlIGtDTEF1dGhvcml6YXRpb25TdGF0dXNEZW5pZWQ6CisgICAgICAgIGNhc2Ug
a0NMQXV0aG9yaXphdGlvblN0YXR1c1Jlc3RyaWN0ZWQ6CisgICAgICAgICAgICBfaXNXYWl0aW5n
Rm9yQXV0aG9yaXphdGlvbiA9IE5POworICAgICAgICAgICAgX2NsaWVudC0+Z2VvbG9jYXRpb25B
dXRob3JpemF0aW9uRGVuaWVkKF93ZWJzaXRlSWRlbnRpZmllcik7CisgICAgICAgICAgICBicmVh
azsKKyAgICAgICAgY2FzZSBrQ0xBdXRob3JpemF0aW9uU3RhdHVzQXV0aG9yaXplZEFsd2F5czoK
KyNpZiBIQVZFKENPUkVfTE9DQVRJT05fQVVUSE9SSVpFRF9XSEVOX0lOX1VTRSkgJiYgVVNFKEFQ
UExFX0lOVEVSTkFMX1NESykKKyAgICAgICAgY2FzZSBrQ0xBdXRob3JpemF0aW9uU3RhdHVzQXV0
aG9yaXplZFdoZW5JblVzZToKKyNlbmRpZgorICAgICAgICAgICAgX2lzV2FpdGluZ0ZvckF1dGhv
cml6YXRpb24gPSBOTzsKKyAgICAgICAgICAgIF9jbGllbnQtPmdlb2xvY2F0aW9uQXV0aG9yaXph
dGlvbkdyYW50ZWQoX3dlYnNpdGVJZGVudGlmaWVyKTsKKyAgICAgICAgICAgIGJyZWFrOworICAg
ICAgICB9CisgICAgfSBlbHNlIHsKKyAgICAgICAgaWYgKHN0YXR1cyA9PSBrQ0xBdXRob3JpemF0
aW9uU3RhdHVzRGVuaWVkIHx8IHN0YXR1cyA9PSBrQ0xBdXRob3JpemF0aW9uU3RhdHVzUmVzdHJp
Y3RlZCkgeworICAgICAgICAgICAgW19sb2NhdGlvbk1hbmFnZXIgc3RvcFVwZGF0aW5nTG9jYXRp
b25dOworICAgICAgICAgICAgX2NsaWVudC0+cmVzZXRHZW9sb2NhdGlvbihfd2Vic2l0ZUlkZW50
aWZpZXIpOworICAgICAgICB9CisgICAgfQorfQorCistICh2b2lkKWxvY2F0aW9uTWFuYWdlcjoo
Q0xMb2NhdGlvbk1hbmFnZXIgKiltYW5hZ2VyIGRpZFVwZGF0ZUxvY2F0aW9uczooTlNBcnJheSAq
KWxvY2F0aW9ucworeworICAgIFVOVVNFRF9QQVJBTShtYW5hZ2VyKTsKKyAgICBmb3IgKENMTG9j
YXRpb24gKmxvY2F0aW9uIGluIGxvY2F0aW9ucykKKyAgICAgICAgX2NsaWVudC0+cG9zaXRpb25D
aGFuZ2VkKF93ZWJzaXRlSWRlbnRpZmllciwgV2ViQ29yZTo6R2VvbG9jYXRpb25Qb3NpdGlvbkRh
dGEgeyBsb2NhdGlvbiB9KTsKK30KKworLSAodm9pZClsb2NhdGlvbk1hbmFnZXI6KENMTG9jYXRp
b25NYW5hZ2VyICopbWFuYWdlciBkaWRGYWlsV2l0aEVycm9yOihOU0Vycm9yICopZXJyb3IKK3sK
KyAgICBBU1NFUlQoZXJyb3IpOworICAgIFVOVVNFRF9QQVJBTShtYW5hZ2VyKTsKKworICAgIGlm
IChbZXJyb3IgY29kZV0gPT0ga0NMRXJyb3JEZW5pZWQpIHsKKyAgICAgICAgLy8gSWdub3JlIHRo
ZSBlcnJvciBoZXJlIGFuZCBsZXQgbG9jYXRpb25NYW5hZ2VyOmRpZENoYW5nZUF1dGhvcml6YXRp
b25TdGF0dXM6IGhhbmRsZSB0aGUgcGVybWlzc2lvbi4KKyAgICAgICAgcmV0dXJuOworICAgIH0K
KworICAgIE5TU3RyaW5nICplcnJvck1lc3NhZ2UgPSBbZXJyb3IgbG9jYWxpemVkRGVzY3JpcHRp
b25dOworICAgIF9jbGllbnQtPmVycm9yT2NjdXJyZWQoX3dlYnNpdGVJZGVudGlmaWVyLCBlcnJv
ck1lc3NhZ2UpOworfQorCitAZW5kCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworQ29yZUxvY2F0
aW9uR2VvbG9jYXRpb25Qcm92aWRlcjo6Q29yZUxvY2F0aW9uR2VvbG9jYXRpb25Qcm92aWRlcihj
b25zdCBSZWdpc3RyYWJsZURvbWFpbiYgcmVnaXN0cmFibGVEb21haW4sIENsaWVudCYgY2xpZW50
KQorICAgIDogbV9sb2NhdGlvbk1hbmFnZXIoYWRvcHROUyhbW1dlYkNMTG9jYXRpb25NYW5hZ2Vy
IGFsbG9jXSBpbml0V2l0aFdlYnNpdGVJZGVudGlmaWVyOnJlZ2lzdHJhYmxlRG9tYWluLnN0cmlu
ZygpIGNsaWVudDpjbGllbnRdKSkKK3sKKyAgICAvLyBSZXF1ZXN0IHBlcm1pc3Npb24gZm9yIHRo
ZSBhcHAgdG8gdXNlIGdlb2xvY2F0aW9uIChpZiBpdCBkb2Vzbid0IGFscmVhZHkpLgorICAgIFtt
X2xvY2F0aW9uTWFuYWdlciByZXF1ZXN0R2VvbG9jYXRpb25BdXRob3JpemF0aW9uXTsKK30KKwor
Q29yZUxvY2F0aW9uR2VvbG9jYXRpb25Qcm92aWRlcjo6fkNvcmVMb2NhdGlvbkdlb2xvY2F0aW9u
UHJvdmlkZXIoKQoreworICAgIFttX2xvY2F0aW9uTWFuYWdlciBzdG9wXTsKK30KKwordm9pZCBD
b3JlTG9jYXRpb25HZW9sb2NhdGlvblByb3ZpZGVyOjpzdGFydCgpCit7CisgICAgW21fbG9jYXRp
b25NYW5hZ2VyIHN0YXJ0XTsKK30KKwordm9pZCBDb3JlTG9jYXRpb25HZW9sb2NhdGlvblByb3Zp
ZGVyOjpzdG9wKCkKK3sKKyAgICBbbV9sb2NhdGlvbk1hbmFnZXIgc3RvcF07Cit9CisKK3ZvaWQg
Q29yZUxvY2F0aW9uR2VvbG9jYXRpb25Qcm92aWRlcjo6c2V0RW5hYmxlSGlnaEFjY3VyYWN5KGJv
b2wgaGlnaEFjY3VyYWN5RW5hYmxlZCkKK3sKKyAgICBbbV9sb2NhdGlvbk1hbmFnZXIgc2V0RW5h
YmxlSGlnaEFjY3VyYWN5OmhpZ2hBY2N1cmFjeUVuYWJsZWRdOworfQorCitjbGFzcyBBdXRob3Jp
emF0aW9uQ2hlY2tlciBmaW5hbCA6IHB1YmxpYyBSZWZDb3VudGVkPEF1dGhvcml6YXRpb25DaGVj
a2VyPiwgcHVibGljIENvcmVMb2NhdGlvbkdlb2xvY2F0aW9uUHJvdmlkZXI6OkNsaWVudCB7Citw
dWJsaWM6CisgICAgc3RhdGljIFJlZjxBdXRob3JpemF0aW9uQ2hlY2tlcj4gY3JlYXRlKCkKKyAg
ICB7CisgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IEF1dGhvcml6YXRpb25DaGVja2VyKTsK
KyAgICB9CisKKyAgICB2b2lkIGNoZWNrKGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiByZWdpc3Ry
YWJsZURvbWFpbiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJiBjb21wbGV0aW9uSGFu
ZGxlcikKKyAgICB7CisgICAgICAgIG1fY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBs
ZXRpb25IYW5kbGVyKTsKKyAgICAgICAgbV9wcm92aWRlciA9IG1ha2VVbmlxdWU8Q29yZUxvY2F0
aW9uR2VvbG9jYXRpb25Qcm92aWRlcj4ocmVnaXN0cmFibGVEb21haW4sICp0aGlzKTsKKyAgICB9
CisKK3ByaXZhdGU6CisgICAgQXV0aG9yaXphdGlvbkNoZWNrZXIoKSA9IGRlZmF1bHQ7CisKKyAg
ICB2b2lkIGdlb2xvY2F0aW9uQXV0aG9yaXphdGlvbkdyYW50ZWQoY29uc3QgU3RyaW5nJikgZmlu
YWwKKyAgICB7CisgICAgICAgIGlmIChtX2NvbXBsZXRpb25IYW5kbGVyKQorICAgICAgICAgICAg
bV9jb21wbGV0aW9uSGFuZGxlcih0cnVlKTsKKyAgICB9CisKKyAgICB2b2lkIGdlb2xvY2F0aW9u
QXV0aG9yaXphdGlvbkRlbmllZChjb25zdCBTdHJpbmcmKSBmaW5hbAorICAgIHsKKyAgICAgICAg
aWYgKG1fY29tcGxldGlvbkhhbmRsZXIpCisgICAgICAgICAgICBtX2NvbXBsZXRpb25IYW5kbGVy
KGZhbHNlKTsKKyAgICB9CisKKyAgICB2b2lkIHBvc2l0aW9uQ2hhbmdlZChjb25zdCBTdHJpbmcm
LCBHZW9sb2NhdGlvblBvc2l0aW9uRGF0YSYmKSBmaW5hbCB7IH0KKyAgICB2b2lkIGVycm9yT2Nj
dXJyZWQoY29uc3QgU3RyaW5nJiwgY29uc3QgU3RyaW5nJikgZmluYWwKKyAgICB7CisgICAgICAg
IGlmIChtX2NvbXBsZXRpb25IYW5kbGVyKQorICAgICAgICAgICAgbV9jb21wbGV0aW9uSGFuZGxl
cihmYWxzZSk7CisgICAgfQorICAgIHZvaWQgcmVzZXRHZW9sb2NhdGlvbihjb25zdCBTdHJpbmcm
KSBmaW5hbCB7IH0KKworICAgIHN0ZDo6dW5pcXVlX3B0cjxDb3JlTG9jYXRpb25HZW9sb2NhdGlv
blByb3ZpZGVyPiBtX3Byb3ZpZGVyOworICAgIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+
IG1fY29tcGxldGlvbkhhbmRsZXI7Cit9OworCit2b2lkIENvcmVMb2NhdGlvbkdlb2xvY2F0aW9u
UHJvdmlkZXI6OnJlcXVlc3RBdXRob3JpemF0aW9uKGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiBy
ZWdpc3RyYWJsZURvbWFpbiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJiBjb21wbGV0
aW9uSGFuZGxlcikKK3sKKyAgICBhdXRvIGF1dGhvcml6YXRpb25DaGVja2VyID0gQXV0aG9yaXph
dGlvbkNoZWNrZXI6OmNyZWF0ZSgpOworICAgIGF1dGhvcml6YXRpb25DaGVja2VyLT5jaGVjayhy
ZWdpc3RyYWJsZURvbWFpbiwgW2F1dGhvcml6YXRpb25DaGVja2VyLCBjb21wbGV0aW9uSGFuZGxl
ciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXShib29sIGF1dGhvcml6ZWQpIG11dGFibGUg
eworICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihhdXRob3JpemVkKTsKKyAgICB9KTsKK30KKwor
fSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbW9jay9HZW9sb2NhdGlvbkNsaWVudE1vY2suY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbW9jay9HZW9sb2NhdGlvbkNsaWVudE1vY2suY3BwCmluZGV4IDlkNWVmYzgzZjM0ZWIxOGQ1
OTlkYzEwY2FhOGZjMGNhMzk5ZGIwYTIuLmZhNDIwODJlNTA1OWE5ZWNmMjY0Y2FhZjRjMjY1MzJm
NGIyZTVkN2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svR2VvbG9j
YXRpb25DbGllbnRNb2NrLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL0dl
b2xvY2F0aW9uQ2xpZW50TW9jay5jcHAKQEAgLTEzNiwxMCArMTM2LDExIEBAIHZvaWQgR2VvbG9j
YXRpb25DbGllbnRNb2NrOjpnZW9sb2NhdGlvbkRlc3Ryb3llZCgpCiAgICAgQVNTRVJUKCFtX2lz
QWN0aXZlKTsKIH0KIAotdm9pZCBHZW9sb2NhdGlvbkNsaWVudE1vY2s6OnN0YXJ0VXBkYXRpbmco
Y29uc3QgU3RyaW5nJiBhdXRob3JpemF0aW9uVG9rZW4pCit2b2lkIEdlb2xvY2F0aW9uQ2xpZW50
TW9jazo6c3RhcnRVcGRhdGluZyhjb25zdCBTdHJpbmcmIGF1dGhvcml6YXRpb25Ub2tlbiwgYm9v
bCBlbmFibGVIaWdoQWNjdXJhY3kpCiB7CiAgICAgQVNTRVJUKCFtX2lzQWN0aXZlKTsKICAgICBV
TlVTRURfUEFSQU0oYXV0aG9yaXphdGlvblRva2VuKTsKKyAgICBVTlVTRURfUEFSQU0oZW5hYmxl
SGlnaEFjY3VyYWN5KTsKICAgICBtX2lzQWN0aXZlID0gdHJ1ZTsKICAgICBhc3luY1VwZGF0ZUNv
bnRyb2xsZXIoKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2sv
R2VvbG9jYXRpb25DbGllbnRNb2NrLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL0dl
b2xvY2F0aW9uQ2xpZW50TW9jay5oCmluZGV4IDJmYTc1ZTA1N2E1M2Q3ZTgxOGNjZmFmZWU3MDI0
M2RkNTQ4MjE4NDUuLmY4YmFjMzhiNWI2Y2NjOGNjMDhmODcwNzFlYmM3NWQ2NWIzMTA2NDAgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svR2VvbG9jYXRpb25DbGllbnRN
b2NrLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9HZW9sb2NhdGlvbkNsaWVu
dE1vY2suaApAQCAtNTksNyArNTksNyBAQCBwdWJsaWM6CiAKICAgICAvLyBHZW9sb2NhdGlvbkNs
aWVudAogICAgIHZvaWQgZ2VvbG9jYXRpb25EZXN0cm95ZWQoKSBvdmVycmlkZTsKLSAgICB2b2lk
IHN0YXJ0VXBkYXRpbmcoY29uc3QgU3RyaW5nJiBhdXRob3JpemF0aW9uVG9rZW4pIG92ZXJyaWRl
OworICAgIHZvaWQgc3RhcnRVcGRhdGluZyhjb25zdCBTdHJpbmcmIGF1dGhvcml6YXRpb25Ub2tl
biwgYm9vbCBlbmFibGVIaWdoQWNjdXJhY3kpIG92ZXJyaWRlOwogICAgIHZvaWQgc3RvcFVwZGF0
aW5nKCkgb3ZlcnJpZGU7CiAgICAgdm9pZCBzZXRFbmFibGVIaWdoQWNjdXJhY3koYm9vbCkgb3Zl
cnJpZGU7CiAgICAgc3RkOjpvcHRpb25hbDxHZW9sb2NhdGlvblBvc2l0aW9uRGF0YT4gbGFzdFBv
c2l0aW9uKCkgb3ZlcnJpZGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NvdXJjZXNDb2Nv
YS50eHQgYi9Tb3VyY2UvV2ViS2l0L1NvdXJjZXNDb2NvYS50eHQKaW5kZXggZmU1MDZmNzEzMzRh
ZDU0NmViYmFiMDY0MWNiMzcxYzI5OWRiMjZjYS4uYzkwNzQ2ZmQ3Y2QzZWEzOThkM2RjMmIyMGQ0
ZDY4MDg2OTFiZWJlNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9Tb3VyY2VzQ29jb2EudHh0
CisrKyBiL1NvdXJjZS9XZWJLaXQvU291cmNlc0NvY29hLnR4dApAQCAtNDI2LDYgKzQyNiw3IEBA
IFVJUHJvY2Vzcy9Db2NvYS9VSVJlbW90ZU9iamVjdFJlZ2lzdHJ5LmNwcAogVUlQcm9jZXNzL0Nv
Y29hL1VzZXJNZWRpYUNhcHR1cmVNYW5hZ2VyUHJveHkuY3BwCiBVSVByb2Nlc3MvQ29jb2EvVXNl
ck1lZGlhUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyUHJveHkubW0KIFVJUHJvY2Vzcy9Db2NvYS9W
aWRlb0Z1bGxzY3JlZW5NYW5hZ2VyUHJveHkubW0KK1VJUHJvY2Vzcy9Db2NvYS9XZWJHZW9sb2Nh
dGlvbk1hbmFnZXJQcm94eUNvY29hLmNwcAogVUlQcm9jZXNzL0NvY29hL1dlYlBhZ2VQcm94eUNv
Y29hLm1tCiBVSVByb2Nlc3MvQ29jb2EvV2ViUGFzdGVib2FyZFByb3h5Q29jb2EubW0KIFVJUHJv
Y2Vzcy9Db2NvYS9XZWJQcmVmZXJlbmNlc0NvY29hLm1tCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9BUEkvQy9XS0dlb2xvY2F0aW9uTWFuYWdlci5jcHAgYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9BUEkvQy9XS0dlb2xvY2F0aW9uTWFuYWdlci5jcHAKaW5kZXggODg4Yjc1
YmM3Y2VjODlkMTZlMDdmNjE3ZTdiYjJjZTI5NzlmYTYyMy4uNWYwZjA5ZDRmZmIzMWY4OGQ2MTA3
NmM5OGMxNmRkN2NjN2I2ZjUwNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
QVBJL0MvV0tHZW9sb2NhdGlvbk1hbmFnZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0FQSS9DL1dLR2VvbG9jYXRpb25NYW5hZ2VyLmNwcApAQCAtNDAsNyArNDAsOSBAQCBXS1R5
cGVJRCBXS0dlb2xvY2F0aW9uTWFuYWdlckdldFR5cGVJRCgpCiAKIHZvaWQgV0tHZW9sb2NhdGlv
bk1hbmFnZXJTZXRQcm92aWRlcihXS0dlb2xvY2F0aW9uTWFuYWdlclJlZiBnZW9sb2NhdGlvbk1h
bmFnZXJSZWYsIGNvbnN0IFdLR2VvbG9jYXRpb25Qcm92aWRlckJhc2UqIHdrUHJvdmlkZXIpCiB7
CisjaWYgIVBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAgdG9JbXBsKGdlb2xvY2F0aW9uTWFuYWdl
clJlZiktPnNldFByb3ZpZGVyKG1ha2VVbmlxdWU8V2ViR2VvbG9jYXRpb25Qcm92aWRlcj4od2tQ
cm92aWRlcikpOworI2VuZGlmCiB9CiAKIHZvaWQgV0tHZW9sb2NhdGlvbk1hbmFnZXJQcm92aWRl
ckRpZENoYW5nZVBvc2l0aW9uKFdLR2VvbG9jYXRpb25NYW5hZ2VyUmVmIGdlb2xvY2F0aW9uTWFu
YWdlclJlZiwgV0tHZW9sb2NhdGlvblBvc2l0aW9uUmVmIHBvc2l0aW9uUmVmKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV2ViR2VvbG9jYXRpb25NYW5hZ2VyUHJv
eHlDb2NvYS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XZWJHZW9sb2NhdGlv
bk1hbmFnZXJQcm94eUNvY29hLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi45MDA4YzIwNWIzY2Q1ZTk0NDU5Yzg5
YmI2ODk3N2QyYjFiNzY0MzYxCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQ29jb2EvV2ViR2VvbG9jYXRpb25NYW5hZ2VyUHJveHlDb2NvYS5jcHAKQEAgLTAsMCAr
MSwxMDMgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjIgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0Ogor
ICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhl
CisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
QVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZF
TlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9S
CisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgor
ICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiV2Vi
R2VvbG9jYXRpb25NYW5hZ2VyUHJveHkuaCIKKworI2luY2x1ZGUgIldlYkdlb2xvY2F0aW9uTWFu
YWdlck1lc3NhZ2VzLmgiCisKK25hbWVzcGFjZSBXZWJLaXQgeworCisvLyBGSVhNRTogVGhpcyBz
aG91bGQgYmUgdXNlZCBieSBhbGwgQ29jb2EgcG9ydHMKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZ
KQorCit2b2lkIFdlYkdlb2xvY2F0aW9uTWFuYWdlclByb3h5Ojpwb3NpdGlvbkNoYW5nZWQoY29u
c3QgU3RyaW5nJiB3ZWJzaXRlSWRlbnRpZmllciwgV2ViQ29yZTo6R2VvbG9jYXRpb25Qb3NpdGlv
bkRhdGEmJiBwb3NpdGlvbikKK3sKKyAgICBhdXRvIHJlZ2lzdHJhYmxlRG9tYWluID0gV2ViQ29y
ZTo6UmVnaXN0cmFibGVEb21haW46OnVuY2hlY2tlZENyZWF0ZUZyb21SZWdpc3RyYWJsZURvbWFp
blN0cmluZyh3ZWJzaXRlSWRlbnRpZmllcik7CisgICAgYXV0byBpdCA9IG1fcGVyRG9tYWluRGF0
YS5maW5kKHJlZ2lzdHJhYmxlRG9tYWluKTsKKyAgICBpZiAoaXQgPT0gbV9wZXJEb21haW5EYXRh
LmVuZCgpKQorICAgICAgICByZXR1cm47CisKKyAgICBhdXRvJiBwZXJEb21haW5EYXRhID0gKml0
LT52YWx1ZTsKKyAgICBwZXJEb21haW5EYXRhLmxhc3RQb3NpdGlvbiA9IFdURk1vdmUocG9zaXRp
b24pOworICAgIGZvciAoYXV0byBjb25uZWN0aW9uSUQgOiBwZXJEb21haW5EYXRhLndhdGNoZXJz
KQorICAgICAgICBJUEM6OkNvbm5lY3Rpb246OnNlbmQoY29ubmVjdGlvbklELCBNZXNzYWdlczo6
V2ViR2VvbG9jYXRpb25NYW5hZ2VyOjpEaWRDaGFuZ2VQb3NpdGlvbihyZWdpc3RyYWJsZURvbWFp
biwgcGVyRG9tYWluRGF0YS5sYXN0UG9zaXRpb24udmFsdWUoKSksIDApOworfQorCit2b2lkIFdl
Ykdlb2xvY2F0aW9uTWFuYWdlclByb3h5OjplcnJvck9jY3VycmVkKGNvbnN0IFN0cmluZyYgd2Vi
c2l0ZUlkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgZXJyb3JNZXNzYWdlKQoreworICAgIGF1dG8g
cmVnaXN0cmFibGVEb21haW4gPSBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbjo6dW5jaGVja2Vk
Q3JlYXRlRnJvbVJlZ2lzdHJhYmxlRG9tYWluU3RyaW5nKHdlYnNpdGVJZGVudGlmaWVyKTsKKyAg
ICBhdXRvIGl0ID0gbV9wZXJEb21haW5EYXRhLmZpbmQocmVnaXN0cmFibGVEb21haW4pOworICAg
IGlmIChpdCA9PSBtX3BlckRvbWFpbkRhdGEuZW5kKCkpCisgICAgICAgIHJldHVybjsKKworICAg
IGF1dG8mIHBlckRvbWFpbkRhdGEgPSAqaXQtPnZhbHVlOworICAgIGZvciAoYXV0byBjb25uZWN0
aW9uSUQgOiBwZXJEb21haW5EYXRhLndhdGNoZXJzKQorICAgICAgICBJUEM6OkNvbm5lY3Rpb246
OnNlbmQoY29ubmVjdGlvbklELCBNZXNzYWdlczo6V2ViR2VvbG9jYXRpb25NYW5hZ2VyOjpEaWRG
YWlsVG9EZXRlcm1pbmVQb3NpdGlvbihyZWdpc3RyYWJsZURvbWFpbiwgZXJyb3JNZXNzYWdlKSwg
MCk7Cit9CisKK3ZvaWQgV2ViR2VvbG9jYXRpb25NYW5hZ2VyUHJveHk6OnJlc2V0R2VvbG9jYXRp
b24oY29uc3QgU3RyaW5nJiB3ZWJzaXRlSWRlbnRpZmllcikKK3sKKyAgICBhdXRvIHJlZ2lzdHJh
YmxlRG9tYWluID0gV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW46OnVuY2hlY2tlZENyZWF0ZUZy
b21SZWdpc3RyYWJsZURvbWFpblN0cmluZyh3ZWJzaXRlSWRlbnRpZmllcik7CisgICAgYXV0byBp
dCA9IG1fcGVyRG9tYWluRGF0YS5maW5kKHJlZ2lzdHJhYmxlRG9tYWluKTsKKyAgICBpZiAoaXQg
PT0gbV9wZXJEb21haW5EYXRhLmVuZCgpKQorICAgICAgICByZXR1cm47CisKKyAgICBhdXRvJiBw
ZXJEb21haW5EYXRhID0gKml0LT52YWx1ZTsKKyAgICBmb3IgKGF1dG8gY29ubmVjdGlvbklEIDog
cGVyRG9tYWluRGF0YS53YXRjaGVycykKKyAgICAgICAgSVBDOjpDb25uZWN0aW9uOjpzZW5kKGNv
bm5lY3Rpb25JRCwgTWVzc2FnZXM6OldlYkdlb2xvY2F0aW9uTWFuYWdlcjo6UmVzZXRQZXJtaXNz
aW9ucyhyZWdpc3RyYWJsZURvbWFpbiksIDApOworfQorCitib29sIFdlYkdlb2xvY2F0aW9uTWFu
YWdlclByb3h5Ojppc1VwZGF0aW5nKGNvbnN0IFBlckRvbWFpbkRhdGEmIHBlckRvbWFpbkRhdGEp
IGNvbnN0Cit7CisgICAgcmV0dXJuICFwZXJEb21haW5EYXRhLndhdGNoZXJzLmlzRW1wdHkoKTsK
K30KKworYm9vbCBXZWJHZW9sb2NhdGlvbk1hbmFnZXJQcm94eTo6aXNIaWdoQWNjdXJhY3lFbmFi
bGVkKGNvbnN0IFBlckRvbWFpbkRhdGEmIHBlckRvbWFpbkRhdGEpIGNvbnN0Cit7CisgICAgcmV0
dXJuICFwZXJEb21haW5EYXRhLndhdGNoZXJzTmVlZGluZ0hpZ2hBY2N1cmFjeS5pc0VtcHR5KCk7
Cit9CisKK3ZvaWQgV2ViR2VvbG9jYXRpb25NYW5hZ2VyUHJveHk6OnByb3ZpZGVyU3RhcnRVcGRh
dGluZyhQZXJEb21haW5EYXRhJiBwZXJEb21haW5EYXRhLCBjb25zdCBXZWJDb3JlOjpSZWdpc3Ry
YWJsZURvbWFpbiYgcmVnaXN0cmFibGVEb21haW4pCit7CisgICAgQVNTRVJUKCFwZXJEb21haW5E
YXRhLnByb3ZpZGVyKTsKKyAgICBwZXJEb21haW5EYXRhLnByb3ZpZGVyID0gbWFrZVVuaXF1ZTxX
ZWJDb3JlOjpDb3JlTG9jYXRpb25HZW9sb2NhdGlvblByb3ZpZGVyPihyZWdpc3RyYWJsZURvbWFp
biwgKnRoaXMpOworICAgIHBlckRvbWFpbkRhdGEucHJvdmlkZXItPnNldEVuYWJsZUhpZ2hBY2N1
cmFjeSghcGVyRG9tYWluRGF0YS53YXRjaGVyc05lZWRpbmdIaWdoQWNjdXJhY3kuaXNFbXB0eSgp
KTsKKyAgICBwZXJEb21haW5EYXRhLnByb3ZpZGVyLT5zdGFydCgpOworfQorCit2b2lkIFdlYkdl
b2xvY2F0aW9uTWFuYWdlclByb3h5Ojpwcm92aWRlclN0b3BVcGRhdGluZyhQZXJEb21haW5EYXRh
JiBwZXJEb21haW5EYXRhKQoreworICAgIHBlckRvbWFpbkRhdGEucHJvdmlkZXItPnN0b3AoKTsK
K30KKwordm9pZCBXZWJHZW9sb2NhdGlvbk1hbmFnZXJQcm94eTo6cHJvdmlkZXJTZXRFbmFibGVk
SGlnaEFjY3VyYWN5KFBlckRvbWFpbkRhdGEmIHBlckRvbWFpbkRhdGEsIGJvb2wgZW5hYmxlZCkK
K3sKKyAgICBwZXJEb21haW5EYXRhLnByb3ZpZGVyLT5zZXRFbmFibGVIaWdoQWNjdXJhY3koZW5h
YmxlZCk7Cit9CisKKyNlbmRpZgorCit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9XZWJHZW9sb2NhdGlvbk1hbmFnZXJQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9XZWJHZW9sb2NhdGlvbk1hbmFnZXJQcm94eS5jcHAKaW5kZXggMDRmMzIyN2NkNTVjOTky
YTQyY2Q5NmEzZjI1ZDY5N2FlZDc5NjVhMi4uMDVhNTBkMGYwYzgxYWVkNzQ0YjQyMGZhYTg5YmY5
NjU4OGExMGNjYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViR2VvbG9j
YXRpb25NYW5hZ2VyUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkdl
b2xvY2F0aW9uTWFuYWdlclByb3h5LmNwcApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmln
aHQgKEMpIDIwMTEsIDIwMTIsIDIwMTMgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICogQ29weXJpZ2h0IChDKSAyMDExLTIwMjIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC01MCwzNCArNTAsMzkgQEAgUmVm
PFdlYkdlb2xvY2F0aW9uTWFuYWdlclByb3h5PiBXZWJHZW9sb2NhdGlvbk1hbmFnZXJQcm94eTo6
Y3JlYXRlKFdlYlByb2Nlc3NQb28KIAogV2ViR2VvbG9jYXRpb25NYW5hZ2VyUHJveHk6OldlYkdl
b2xvY2F0aW9uTWFuYWdlclByb3h5KFdlYlByb2Nlc3NQb29sKiBwcm9jZXNzUG9vbCkKICAgICA6
IFdlYkNvbnRleHRTdXBwbGVtZW50KHByb2Nlc3NQb29sKQotICAgICwgbV9wcm92aWRlcihtYWtl
VW5pcXVlPEFQSTo6R2VvbG9jYXRpb25Qcm92aWRlcj4oKSkKIHsKICAgICBXZWJDb250ZXh0U3Vw
cGxlbWVudDo6cHJvY2Vzc1Bvb2woKS0+YWRkTWVzc2FnZVJlY2VpdmVyKE1lc3NhZ2VzOjpXZWJH
ZW9sb2NhdGlvbk1hbmFnZXJQcm94eTo6bWVzc2FnZVJlY2VpdmVyTmFtZSgpLCAqdGhpcyk7CiB9
CiAKLXZvaWQgV2ViR2VvbG9jYXRpb25NYW5hZ2VyUHJveHk6OnNldFByb3ZpZGVyKHN0ZDo6dW5p
cXVlX3B0cjxBUEk6Okdlb2xvY2F0aW9uUHJvdmlkZXI+JiYgcHJvdmlkZXIpCi17Ci0gICAgaWYg
KCFwcm92aWRlcikKLSAgICAgICAgbV9wcm92aWRlciA9IG1ha2VVbmlxdWU8QVBJOjpHZW9sb2Nh
dGlvblByb3ZpZGVyPigpOwotICAgIGVsc2UKLSAgICAgICAgbV9wcm92aWRlciA9IFdURk1vdmUo
cHJvdmlkZXIpOwotfQorV2ViR2VvbG9jYXRpb25NYW5hZ2VyUHJveHk6On5XZWJHZW9sb2NhdGlv
bk1hbmFnZXJQcm94eSgpID0gZGVmYXVsdDsKIAogLy8gV2ViQ29udGV4dFN1cHBsZW1lbnQKIAog
dm9pZCBXZWJHZW9sb2NhdGlvbk1hbmFnZXJQcm94eTo6cHJvY2Vzc1Bvb2xEZXN0cm95ZWQoKQog
ewotICAgIGJvb2wgd2FzVXBkYXRpbmcgPSBpc1VwZGF0aW5nKCk7Ci0gICAgbV91cGRhdGVSZXF1
ZXN0ZXJzLmNsZWFyKCk7CisgICAgaWYgKG1fcGVyRG9tYWluRGF0YS5pc0VtcHR5KCkpCisgICAg
ICAgIHJldHVybjsKIAotICAgIEFTU0VSVCghaXNVcGRhdGluZygpKTsKLSAgICBpZiAod2FzVXBk
YXRpbmcpCisgICAgbV9wZXJEb21haW5EYXRhLmNsZWFyKCk7CisjaWYgIVBMQVRGT1JNKElPU19G
QU1JTFkpCisgICAgaWYgKG1fcHJvdmlkZXIpCiAgICAgICAgIG1fcHJvdmlkZXItPnN0b3BVcGRh
dGluZygqdGhpcyk7CisjZW5kaWYKIH0KIAogdm9pZCBXZWJHZW9sb2NhdGlvbk1hbmFnZXJQcm94
eTo6cHJvY2Vzc0RpZENsb3NlKFdlYlByb2Nlc3NQcm94eSogd2ViUHJvY2Vzc1Byb3h5KQogewot
ICAgIHJlbW92ZVJlcXVlc3Rlcih3ZWJQcm9jZXNzUHJveHkpOworICAgIGF1dG8qIGNvbm5lY3Rp
b24gPSB3ZWJQcm9jZXNzUHJveHktPmNvbm5lY3Rpb24oKTsKKyAgICBpZiAoIWNvbm5lY3Rpb24p
CisgICAgICAgIHJldHVybjsKKworICAgIFZlY3RvcjxXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFp
bj4gYWZmZWN0ZWREb21haW5zOworICAgIGZvciAoYXV0byYgW3JlZ2lzdHJhYmxlRG9tYWluLCBw
ZXJEb21haW5EYXRhXSA6IG1fcGVyRG9tYWluRGF0YSkgeworICAgICAgICBpZiAocGVyRG9tYWlu
RGF0YS0+d2F0Y2hlcnMuY29udGFpbnMoY29ubmVjdGlvbi0+dW5pcXVlSUQoKSkpCisgICAgICAg
ICAgICBhZmZlY3RlZERvbWFpbnMuYXBwZW5kKHJlZ2lzdHJhYmxlRG9tYWluKTsKKyAgICB9Cisg
ICAgZm9yIChhdXRvJiByZWdpc3RyYWJsZURvbWFpbiA6IGFmZmVjdGVkRG9tYWlucykKKyAgICAg
ICAgc3RvcFVwZGF0aW5nKCpjb25uZWN0aW9uLCByZWdpc3RyYWJsZURvbWFpbik7CiB9CiAKIHZv
aWQgV2ViR2VvbG9jYXRpb25NYW5hZ2VyUHJveHk6OnJlZldlYkNvbnRleHRTdXBwbGVtZW50KCkK
QEAgLTkyLDMwICs5NywyMiBAQCB2b2lkIFdlYkdlb2xvY2F0aW9uTWFuYWdlclByb3h5OjpkZXJl
ZldlYkNvbnRleHRTdXBwbGVtZW50KCkKIAogdm9pZCBXZWJHZW9sb2NhdGlvbk1hbmFnZXJQcm94
eTo6cHJvdmlkZXJEaWRDaGFuZ2VQb3NpdGlvbihXZWJHZW9sb2NhdGlvblBvc2l0aW9uKiBwb3Np
dGlvbikKIHsKLSAgICBtX2xhc3RQb3NpdGlvbiA9IHBvc2l0aW9uLT5jb3JlUG9zaXRpb24oKTsK
LQotICAgIGlmICghcHJvY2Vzc1Bvb2woKSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgcHJvY2Vz
c1Bvb2woKS0+c2VuZFRvQWxsUHJvY2Vzc2VzKE1lc3NhZ2VzOjpXZWJHZW9sb2NhdGlvbk1hbmFn
ZXI6OkRpZENoYW5nZVBvc2l0aW9uKG1fbGFzdFBvc2l0aW9uLnZhbHVlKCkpKTsKKyAgICBmb3Ig
KGF1dG8mIFtyZWdpc3RyYWJsZURvbWFpbiwgcGVyRG9tYWluRGF0YV0gOiBtX3BlckRvbWFpbkRh
dGEpIHsKKyAgICAgICAgcGVyRG9tYWluRGF0YS0+bGFzdFBvc2l0aW9uID0gcG9zaXRpb24tPmNv
cmVQb3NpdGlvbigpOworICAgICAgICBmb3IgKGF1dG8gY29ubmVjdGlvbklEIDogcGVyRG9tYWlu
RGF0YS0+d2F0Y2hlcnMpCisgICAgICAgICAgICBJUEM6OkNvbm5lY3Rpb246OnNlbmQoY29ubmVj
dGlvbklELCBNZXNzYWdlczo6V2ViR2VvbG9jYXRpb25NYW5hZ2VyOjpEaWRDaGFuZ2VQb3NpdGlv
bihyZWdpc3RyYWJsZURvbWFpbiwgcGVyRG9tYWluRGF0YS0+bGFzdFBvc2l0aW9uLnZhbHVlKCkp
LCAwKTsKKyAgICB9CiB9CiAKIHZvaWQgV2ViR2VvbG9jYXRpb25NYW5hZ2VyUHJveHk6OnByb3Zp
ZGVyRGlkRmFpbFRvRGV0ZXJtaW5lUG9zaXRpb24oY29uc3QgU3RyaW5nJiBlcnJvck1lc3NhZ2Up
CiB7Ci0gICAgaWYgKCFwcm9jZXNzUG9vbCgpKQotICAgICAgICByZXR1cm47Ci0KLSAgICBwcm9j
ZXNzUG9vbCgpLT5zZW5kVG9BbGxQcm9jZXNzZXMoTWVzc2FnZXM6OldlYkdlb2xvY2F0aW9uTWFu
YWdlcjo6RGlkRmFpbFRvRGV0ZXJtaW5lUG9zaXRpb24oZXJyb3JNZXNzYWdlKSk7Ci19Ci0KLSNp
ZiBQTEFURk9STShJT1NfRkFNSUxZKQotdm9pZCBXZWJHZW9sb2NhdGlvbk1hbmFnZXJQcm94eTo6
cmVzZXRQZXJtaXNzaW9ucygpCi17Ci0gICAgcHJvY2Vzc1Bvb2woKS0+c2VuZFRvQWxsUHJvY2Vz
c2VzKE1lc3NhZ2VzOjpXZWJHZW9sb2NhdGlvbk1hbmFnZXI6OlJlc2V0UGVybWlzc2lvbnMoKSk7
CisgICAgZm9yIChhdXRvJiBbcmVnaXN0cmFibGVEb21haW4sIHBlckRvbWFpbkRhdGFdIDogbV9w
ZXJEb21haW5EYXRhKSB7CisgICAgICAgIGZvciAoYXV0byBjb25uZWN0aW9uSUQgOiBwZXJEb21h
aW5EYXRhLT53YXRjaGVycykKKyAgICAgICAgICAgIElQQzo6Q29ubmVjdGlvbjo6c2VuZChjb25u
ZWN0aW9uSUQsIE1lc3NhZ2VzOjpXZWJHZW9sb2NhdGlvbk1hbmFnZXI6OkRpZEZhaWxUb0RldGVy
bWluZVBvc2l0aW9uKHJlZ2lzdHJhYmxlRG9tYWluLCBlcnJvck1lc3NhZ2UpLCAwKTsKKyAgICB9
CiB9Ci0jZW5kaWYKIAotdm9pZCBXZWJHZW9sb2NhdGlvbk1hbmFnZXJQcm94eTo6c3RhcnRVcGRh
dGluZyhJUEM6OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24sIFdlYlBhZ2VQcm94eUlkZW50aWZpZXIg
cGFnZVByb3h5SUQsIGNvbnN0IFN0cmluZyYgYXV0aG9yaXphdGlvblRva2VuKQordm9pZCBXZWJH
ZW9sb2NhdGlvbk1hbmFnZXJQcm94eTo6c3RhcnRVcGRhdGluZyhJUEM6OkNvbm5lY3Rpb24mIGNv
bm5lY3Rpb24sIGNvbnN0IFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluJiByZWdpc3RyYWJsZURv
bWFpbiwgV2ViUGFnZVByb3h5SWRlbnRpZmllciBwYWdlUHJveHlJRCwgY29uc3QgU3RyaW5nJiBh
dXRob3JpemF0aW9uVG9rZW4sIGJvb2wgZW5hYmxlSGlnaEFjY3VyYWN5KQogewogICAgIGF1dG8q
IHBhZ2UgPSBXZWJQcm9jZXNzUHJveHk6OndlYlBhZ2UocGFnZVByb3h5SUQpOwogICAgIE1FU1NB
R0VfQ0hFQ0socGFnZSk7CkBAIC0xMjMsNTAgKzEyMCwxMjEgQEAgdm9pZCBXZWJHZW9sb2NhdGlv
bk1hbmFnZXJQcm94eTo6c3RhcnRVcGRhdGluZyhJUEM6OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24s
IFdlYlAKICAgICBhdXRvIGlzVmFsaWRBdXRob3JpemF0aW9uVG9rZW4gPSBwYWdlLT5nZW9sb2Nh
dGlvblBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlcigpLmlzVmFsaWRBdXRob3JpemF0aW9uVG9rZW4o
YXV0aG9yaXphdGlvblRva2VuKTsKICAgICBNRVNTQUdFX0NIRUNLKGlzVmFsaWRBdXRob3JpemF0
aW9uVG9rZW4pOwogCi0gICAgYm9vbCB3YXNVcGRhdGluZyA9IGlzVXBkYXRpbmcoKTsKLSAgICBt
X3VwZGF0ZVJlcXVlc3RlcnMuYWRkKCZjb25uZWN0aW9uLmNsaWVudCgpKTsKKyAgICBhdXRvJiBw
ZXJEb21haW5EYXRhID0gKm1fcGVyRG9tYWluRGF0YS5lbnN1cmUocmVnaXN0cmFibGVEb21haW4s
IFtdIHsKKyAgICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8UGVyRG9tYWluRGF0YT4oKTsKKyAgICB9
KS5pdGVyYXRvci0+dmFsdWU7CisKKyAgICBib29sIHdhc1VwZGF0aW5nID0gaXNVcGRhdGluZyhw
ZXJEb21haW5EYXRhKTsKKyAgICBib29sIGhpZ2hBY2N1cmFjeVdhc0VuYWJsZWQgPSBpc0hpZ2hB
Y2N1cmFjeUVuYWJsZWQocGVyRG9tYWluRGF0YSk7CisKKyAgICBwZXJEb21haW5EYXRhLndhdGNo
ZXJzLmFkZChjb25uZWN0aW9uLnVuaXF1ZUlEKCkpOworICAgIGlmIChlbmFibGVIaWdoQWNjdXJh
Y3kpCisgICAgICAgIHBlckRvbWFpbkRhdGEud2F0Y2hlcnNOZWVkaW5nSGlnaEFjY3VyYWN5LmFk
ZChjb25uZWN0aW9uLnVuaXF1ZUlEKCkpOworCiAgICAgaWYgKCF3YXNVcGRhdGluZykgewotICAg
ICAgICBtX3Byb3ZpZGVyLT5zZXRFbmFibGVIaWdoQWNjdXJhY3koKnRoaXMsIGlzSGlnaEFjY3Vy
YWN5RW5hYmxlZCgpKTsKLSAgICAgICAgbV9wcm92aWRlci0+c3RhcnRVcGRhdGluZygqdGhpcyk7
Ci0gICAgfSBlbHNlIGlmIChtX2xhc3RQb3NpdGlvbikKLSAgICAgICAgY29ubmVjdGlvbi5zZW5k
KE1lc3NhZ2VzOjpXZWJHZW9sb2NhdGlvbk1hbmFnZXI6OkRpZENoYW5nZVBvc2l0aW9uKG1fbGFz
dFBvc2l0aW9uLnZhbHVlKCkpLCAwKTsKLX0KKyAgICAgICAgcHJvdmlkZXJTdGFydFVwZGF0aW5n
KHBlckRvbWFpbkRhdGEsIHJlZ2lzdHJhYmxlRG9tYWluKTsKKyAgICAgICAgcmV0dXJuOworICAg
IH0KKyAgICBpZiAoIWhpZ2hBY2N1cmFjeVdhc0VuYWJsZWQgJiYgZW5hYmxlSGlnaEFjY3VyYWN5
KQorICAgICAgICBwcm92aWRlclNldEVuYWJsZWRIaWdoQWNjdXJhY3kocGVyRG9tYWluRGF0YSwg
ZW5hYmxlSGlnaEFjY3VyYWN5KTsKIAotdm9pZCBXZWJHZW9sb2NhdGlvbk1hbmFnZXJQcm94eTo6
c3RvcFVwZGF0aW5nKElQQzo6Q29ubmVjdGlvbiYgY29ubmVjdGlvbikKLXsKLSAgICByZW1vdmVS
ZXF1ZXN0ZXIoJmNvbm5lY3Rpb24uY2xpZW50KCkpOworICAgIGlmIChwZXJEb21haW5EYXRhLmxh
c3RQb3NpdGlvbikKKyAgICAgICAgY29ubmVjdGlvbi5zZW5kKE1lc3NhZ2VzOjpXZWJHZW9sb2Nh
dGlvbk1hbmFnZXI6OkRpZENoYW5nZVBvc2l0aW9uKHJlZ2lzdHJhYmxlRG9tYWluLCBwZXJEb21h
aW5EYXRhLmxhc3RQb3NpdGlvbi52YWx1ZSgpKSwgMCk7CiB9CiAKLXZvaWQgV2ViR2VvbG9jYXRp
b25NYW5hZ2VyUHJveHk6OnJlbW92ZVJlcXVlc3Rlcihjb25zdCBJUEM6OkNvbm5lY3Rpb246OkNs
aWVudCogY2xpZW50KQordm9pZCBXZWJHZW9sb2NhdGlvbk1hbmFnZXJQcm94eTo6c3RvcFVwZGF0
aW5nKElQQzo6Q29ubmVjdGlvbiYgY29ubmVjdGlvbiwgY29uc3QgV2ViQ29yZTo6UmVnaXN0cmFi
bGVEb21haW4mIHJlZ2lzdHJhYmxlRG9tYWluKQogewotICAgIGJvb2wgd2FzVXBkYXRpbmcgPSBp
c1VwZGF0aW5nKCk7Ci0gICAgYm9vbCBoaWdoQWNjdXJhY3lXYXNFbmFibGVkID0gaXNIaWdoQWNj
dXJhY3lFbmFibGVkKCk7CisgICAgYXV0byBpdCA9IG1fcGVyRG9tYWluRGF0YS5maW5kKHJlZ2lz
dHJhYmxlRG9tYWluKTsKKyAgICBpZiAoaXQgPT0gbV9wZXJEb21haW5EYXRhLmVuZCgpKQorICAg
ICAgICByZXR1cm47CiAKLSAgICBtX2hpZ2hBY2N1cmFjeVJlcXVlc3RlcnMucmVtb3ZlKGNsaWVu
dCk7Ci0gICAgbV91cGRhdGVSZXF1ZXN0ZXJzLnJlbW92ZShjbGllbnQpOworICAgIGF1dG8mIHBl
ckRvbWFpbkRhdGEgPSAqaXQtPnZhbHVlOworICAgIGJvb2wgd2FzVXBkYXRpbmcgPSBpc1VwZGF0
aW5nKHBlckRvbWFpbkRhdGEpOworICAgIGJvb2wgaGlnaEFjY3VyYWN5V2FzRW5hYmxlZCA9IGlz
SGlnaEFjY3VyYWN5RW5hYmxlZChwZXJEb21haW5EYXRhKTsKIAotICAgIGlmICh3YXNVcGRhdGlu
ZyAmJiAhaXNVcGRhdGluZygpKQotICAgICAgICBtX3Byb3ZpZGVyLT5zdG9wVXBkYXRpbmcoKnRo
aXMpOworICAgIHBlckRvbWFpbkRhdGEud2F0Y2hlcnMucmVtb3ZlKGNvbm5lY3Rpb24udW5pcXVl
SUQoKSk7CisgICAgcGVyRG9tYWluRGF0YS53YXRjaGVyc05lZWRpbmdIaWdoQWNjdXJhY3kucmVt
b3ZlKGNvbm5lY3Rpb24udW5pcXVlSUQoKSk7CisKKyAgICBpZiAod2FzVXBkYXRpbmcgJiYgIWlz
VXBkYXRpbmcocGVyRG9tYWluRGF0YSkpCisgICAgICAgIHByb3ZpZGVyU3RvcFVwZGF0aW5nKHBl
ckRvbWFpbkRhdGEpOwogICAgIGVsc2UgewotICAgICAgICBib29sIGhpZ2hBY2N1cmFjeVNob3Vs
ZEJlRW5hYmxlZCA9IGlzSGlnaEFjY3VyYWN5RW5hYmxlZCgpOworICAgICAgICBib29sIGhpZ2hB
Y2N1cmFjeVNob3VsZEJlRW5hYmxlZCA9IGlzSGlnaEFjY3VyYWN5RW5hYmxlZChwZXJEb21haW5E
YXRhKTsKICAgICAgICAgaWYgKGhpZ2hBY2N1cmFjeVNob3VsZEJlRW5hYmxlZCAhPSBoaWdoQWNj
dXJhY3lXYXNFbmFibGVkKQotICAgICAgICAgICAgbV9wcm92aWRlci0+c2V0RW5hYmxlSGlnaEFj
Y3VyYWN5KCp0aGlzLCBoaWdoQWNjdXJhY3lTaG91bGRCZUVuYWJsZWQpOworICAgICAgICAgICAg
cHJvdmlkZXJTZXRFbmFibGVkSGlnaEFjY3VyYWN5KHBlckRvbWFpbkRhdGEsIGhpZ2hBY2N1cmFj
eVNob3VsZEJlRW5hYmxlZCk7CiAgICAgfQorCisgICAgaWYgKHBlckRvbWFpbkRhdGEud2F0Y2hl
cnMuaXNFbXB0eSgpICYmIHBlckRvbWFpbkRhdGEud2F0Y2hlcnNOZWVkaW5nSGlnaEFjY3VyYWN5
LmlzRW1wdHkoKSkKKyAgICAgICAgbV9wZXJEb21haW5EYXRhLnJlbW92ZShpdCk7CiB9CiAKLXZv
aWQgV2ViR2VvbG9jYXRpb25NYW5hZ2VyUHJveHk6OnNldEVuYWJsZUhpZ2hBY2N1cmFjeShJUEM6
OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24sIGJvb2wgZW5hYmxlZCkKK3ZvaWQgV2ViR2VvbG9jYXRp
b25NYW5hZ2VyUHJveHk6OnNldEVuYWJsZUhpZ2hBY2N1cmFjeShJUEM6OkNvbm5lY3Rpb24mIGNv
bm5lY3Rpb24sIGNvbnN0IFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluJiByZWdpc3RyYWJsZURv
bWFpbiwgYm9vbCBlbmFibGVkKQogewotICAgIGJvb2wgaGlnaEFjY3VyYWN5V2FzRW5hYmxlZCA9
IGlzSGlnaEFjY3VyYWN5RW5hYmxlZCgpOworICAgIGF1dG8gaXQgPSBtX3BlckRvbWFpbkRhdGEu
ZmluZChyZWdpc3RyYWJsZURvbWFpbik7CisgICAgQVNTRVJUKGl0ICE9IG1fcGVyRG9tYWluRGF0
YS5lbmQoKSk7CisgICAgaWYgKGl0ID09IG1fcGVyRG9tYWluRGF0YS5lbmQoKSkKKyAgICAgICAg
cmV0dXJuOworCisgICAgYXV0byYgcGVyRG9tYWluRGF0YSA9ICppdC0+dmFsdWU7CisgICAgYm9v
bCBoaWdoQWNjdXJhY3lXYXNFbmFibGVkID0gaXNIaWdoQWNjdXJhY3lFbmFibGVkKHBlckRvbWFp
bkRhdGEpOwogCiAgICAgaWYgKGVuYWJsZWQpCi0gICAgICAgIG1faGlnaEFjY3VyYWN5UmVxdWVz
dGVycy5hZGQoJmNvbm5lY3Rpb24uY2xpZW50KCkpOworICAgICAgICBwZXJEb21haW5EYXRhLndh
dGNoZXJzTmVlZGluZ0hpZ2hBY2N1cmFjeS5hZGQoY29ubmVjdGlvbi51bmlxdWVJRCgpKTsKKyAg
ICBlbHNlCisgICAgICAgIHBlckRvbWFpbkRhdGEud2F0Y2hlcnNOZWVkaW5nSGlnaEFjY3VyYWN5
LnJlbW92ZShjb25uZWN0aW9uLnVuaXF1ZUlEKCkpOworCisgICAgaWYgKGlzVXBkYXRpbmcocGVy
RG9tYWluRGF0YSkgJiYgaGlnaEFjY3VyYWN5V2FzRW5hYmxlZCAhPSBlbmFibGVkKQorICAgICAg
ICBwcm92aWRlclNldEVuYWJsZWRIaWdoQWNjdXJhY3kocGVyRG9tYWluRGF0YSwgZW5hYmxlZCk7
Cit9CisKKyNpZiAhUExBVEZPUk0oSU9TX0ZBTUlMWSkKK3ZvaWQgV2ViR2VvbG9jYXRpb25NYW5h
Z2VyUHJveHk6OnNldFByb3ZpZGVyKHN0ZDo6dW5pcXVlX3B0cjxBUEk6Okdlb2xvY2F0aW9uUHJv
dmlkZXI+JiYgcHJvdmlkZXIpCit7CisgICAgaWYgKCFwcm92aWRlcikKKyAgICAgICAgbV9wcm92
aWRlciA9IG1ha2VVbmlxdWU8QVBJOjpHZW9sb2NhdGlvblByb3ZpZGVyPigpOwogICAgIGVsc2UK
LSAgICAgICAgbV9oaWdoQWNjdXJhY3lSZXF1ZXN0ZXJzLnJlbW92ZSgmY29ubmVjdGlvbi5jbGll
bnQoKSk7CisgICAgICAgIG1fcHJvdmlkZXIgPSBXVEZNb3ZlKHByb3ZpZGVyKTsKK30KKworYm9v
bCBXZWJHZW9sb2NhdGlvbk1hbmFnZXJQcm94eTo6aXNVcGRhdGluZyhjb25zdCBQZXJEb21haW5E
YXRhJikgY29uc3QKK3sKKyAgICBmb3IgKGF1dG8mIHBlckRvbWFpbkRhdGEgOiBtX3BlckRvbWFp
bkRhdGEudmFsdWVzKCkpIHsKKyAgICAgICAgaWYgKCFwZXJEb21haW5EYXRhLT53YXRjaGVycy5p
c0VtcHR5KCkpCisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9CisgICAgcmV0dXJuIGZh
bHNlOworfQorCisKK2Jvb2wgV2ViR2VvbG9jYXRpb25NYW5hZ2VyUHJveHk6OmlzSGlnaEFjY3Vy
YWN5RW5hYmxlZChjb25zdCBQZXJEb21haW5EYXRhJikgY29uc3QKK3sKKyAgICBmb3IgKGF1dG8m
IHBlckRvbWFpbkRhdGEgOiBtX3BlckRvbWFpbkRhdGEudmFsdWVzKCkpIHsKKyAgICAgICAgaWYg
KCFwZXJEb21haW5EYXRhLT53YXRjaGVyc05lZWRpbmdIaWdoQWNjdXJhY3kuaXNFbXB0eSgpKQor
ICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfQorICAgIHJldHVybiBmYWxzZTsKK30KKwor
dm9pZCBXZWJHZW9sb2NhdGlvbk1hbmFnZXJQcm94eTo6cHJvdmlkZXJTdGFydFVwZGF0aW5nKFBl
ckRvbWFpbkRhdGEmIHBlckRvbWFpbkRhdGEsIGNvbnN0IFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9t
YWluJikKK3sKKyAgICBpZiAoIW1fcHJvdmlkZXIpCisgICAgICAgIHJldHVybjsKKworICAgIG1f
cHJvdmlkZXItPnNldEVuYWJsZUhpZ2hBY2N1cmFjeSgqdGhpcywgaXNIaWdoQWNjdXJhY3lFbmFi
bGVkKHBlckRvbWFpbkRhdGEpKTsKKyAgICBtX3Byb3ZpZGVyLT5zdGFydFVwZGF0aW5nKCp0aGlz
KTsKK30KKwordm9pZCBXZWJHZW9sb2NhdGlvbk1hbmFnZXJQcm94eTo6cHJvdmlkZXJTdG9wVXBk
YXRpbmcoUGVyRG9tYWluRGF0YSYpCit7CisgICAgaWYgKG1fcHJvdmlkZXIpCisgICAgICAgIG1f
cHJvdmlkZXItPnN0b3BVcGRhdGluZygqdGhpcyk7Cit9CiAKLSAgICBib29sIGhpZ2hBY2N1cmFj
eVNob3VsZEJlRW5hYmxlZCA9IGlzSGlnaEFjY3VyYWN5RW5hYmxlZCgpOwotICAgIGlmIChpc1Vw
ZGF0aW5nKCkgJiYgaGlnaEFjY3VyYWN5V2FzRW5hYmxlZCAhPSBoaWdoQWNjdXJhY3lTaG91bGRC
ZUVuYWJsZWQpCi0gICAgICAgIG1fcHJvdmlkZXItPnNldEVuYWJsZUhpZ2hBY2N1cmFjeSgqdGhp
cywgaGlnaEFjY3VyYWN5U2hvdWxkQmVFbmFibGVkKTsKK3ZvaWQgV2ViR2VvbG9jYXRpb25NYW5h
Z2VyUHJveHk6OnByb3ZpZGVyU2V0RW5hYmxlZEhpZ2hBY2N1cmFjeShQZXJEb21haW5EYXRhJiwg
Ym9vbCBlbmFibGVkKQoreworICAgIGlmIChtX3Byb3ZpZGVyKQorICAgICAgICBtX3Byb3ZpZGVy
LT5zZXRFbmFibGVIaWdoQWNjdXJhY3koKnRoaXMsIGVuYWJsZWQpOwogfQorI2VuZGlmIC8vICFQ
TEFURk9STShJT1NfRkFNSUxZKQogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViR2VvbG9jYXRpb25NYW5hZ2VyUHJveHkuaCBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkdlb2xvY2F0aW9uTWFuYWdlclByb3h5LmgKaW5k
ZXggNzQ5MzZlNDVhMGQ4MzgzYThiNGIzZDZkNTc4YzliZDIyYmUzZmE1ZS4uZWYxMWY0Y2IwNmIw
NGVlMDVlMjIwMjE2ZjhkMjg2NDRkYTBmNGY2NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvV2ViR2VvbG9jYXRpb25NYW5hZ2VyUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9XZWJHZW9sb2NhdGlvbk1hbmFnZXJQcm94eS5oCkBAIC0xLDUgKzEsNSBAQAog
LyoKLSAqIENvcHlyaWdodCAoQykgMjAxMSwgMjAxMiwgMjAxMyBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEtMjAyMiBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTMxLDkg
KzMxLDE1IEBACiAjaW5jbHVkZSAiV2ViQ29udGV4dFN1cHBsZW1lbnQuaCIKICNpbmNsdWRlICJX
ZWJQYWdlUHJveHlJZGVudGlmaWVyLmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9HZW9sb2NhdGlvblBv
c2l0aW9uRGF0YS5oPgorI2luY2x1ZGUgPFdlYkNvcmUvUmVnaXN0cmFibGVEb21haW4uaD4KKyNp
bmNsdWRlIDx3dGYvSGFzaE1hcC5oPgogI2luY2x1ZGUgPHd0Zi9IYXNoU2V0Lmg+CiAjaW5jbHVk
ZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZKQorI2lu
Y2x1ZGUgPFdlYkNvcmUvQ29yZUxvY2F0aW9uR2VvbG9jYXRpb25Qcm92aWRlci5oPgorI2VuZGlm
CisKIG5hbWVzcGFjZSBBUEkgewogY2xhc3MgR2VvbG9jYXRpb25Qcm92aWRlcjsKIH0KQEAgLTQz
LDIwICs0OSwyMyBAQCBuYW1lc3BhY2UgV2ViS2l0IHsKIGNsYXNzIFdlYkdlb2xvY2F0aW9uUG9z
aXRpb247CiBjbGFzcyBXZWJQcm9jZXNzUG9vbDsKIAotY2xhc3MgV2ViR2VvbG9jYXRpb25NYW5h
Z2VyUHJveHkgOiBwdWJsaWMgQVBJOjpPYmplY3RJbXBsPEFQSTo6T2JqZWN0OjpUeXBlOjpHZW9s
b2NhdGlvbk1hbmFnZXI+LCBwdWJsaWMgV2ViQ29udGV4dFN1cHBsZW1lbnQsIHByaXZhdGUgSVBD
OjpNZXNzYWdlUmVjZWl2ZXIgeworY2xhc3MgV2ViR2VvbG9jYXRpb25NYW5hZ2VyUHJveHkgOiBw
dWJsaWMgQVBJOjpPYmplY3RJbXBsPEFQSTo6T2JqZWN0OjpUeXBlOjpHZW9sb2NhdGlvbk1hbmFn
ZXI+LCBwdWJsaWMgV2ViQ29udGV4dFN1cHBsZW1lbnQsIHByaXZhdGUgSVBDOjpNZXNzYWdlUmVj
ZWl2ZXIKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZKQorICAgICwgcHVibGljIFdlYkNvcmU6OkNv
cmVMb2NhdGlvbkdlb2xvY2F0aW9uUHJvdmlkZXI6OkNsaWVudAorI2VuZGlmCit7CiBwdWJsaWM6
CiAgICAgc3RhdGljIGNvbnN0IGNoYXIqIHN1cHBsZW1lbnROYW1lKCk7CiAKICAgICBzdGF0aWMg
UmVmPFdlYkdlb2xvY2F0aW9uTWFuYWdlclByb3h5PiBjcmVhdGUoV2ViUHJvY2Vzc1Bvb2wqKTsK
KyAgICB+V2ViR2VvbG9jYXRpb25NYW5hZ2VyUHJveHkoKTsKIAorI2lmICFQTEFURk9STShJT1Nf
RkFNSUxZKQogICAgIHZvaWQgc2V0UHJvdmlkZXIoc3RkOjp1bmlxdWVfcHRyPEFQSTo6R2VvbG9j
YXRpb25Qcm92aWRlcj4mJik7CisjZW5kaWYKIAogICAgIHZvaWQgcHJvdmlkZXJEaWRDaGFuZ2VQ
b3NpdGlvbihXZWJHZW9sb2NhdGlvblBvc2l0aW9uKik7CiAgICAgdm9pZCBwcm92aWRlckRpZEZh
aWxUb0RldGVybWluZVBvc2l0aW9uKGNvbnN0IFN0cmluZyYgZXJyb3JNZXNzYWdlID0gU3RyaW5n
KCkpOwotI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCi0gICAgdm9pZCByZXNldFBlcm1pc3Npb25z
KCk7Ci0jZW5kaWYKLSAgICBjb25zdCBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6Okdlb2xvY2F0aW9u
UG9zaXRpb25EYXRhPiYgbGFzdFBvc2l0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9sYXN0UG9zaXRp
b247IH0KIAogICAgIHVzaW5nIEFQSTo6T2JqZWN0OjpyZWY7CiAgICAgdXNpbmcgQVBJOjpPYmpl
Y3Q6OmRlcmVmOwpAQCAtNzMsMTkgKzgyLDQwIEBAIHByaXZhdGU6CiAgICAgLy8gSVBDOjpNZXNz
YWdlUmVjZWl2ZXIKICAgICB2b2lkIGRpZFJlY2VpdmVNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYs
IElQQzo6RGVjb2RlciYpIG92ZXJyaWRlOwogCi0gICAgYm9vbCBpc1VwZGF0aW5nKCkgY29uc3Qg
eyByZXR1cm4gIW1fdXBkYXRlUmVxdWVzdGVycy5pc0VtcHR5KCk7IH0KLSAgICBib29sIGlzSGln
aEFjY3VyYWN5RW5hYmxlZCgpIGNvbnN0IHsgcmV0dXJuICFtX2hpZ2hBY2N1cmFjeVJlcXVlc3Rl
cnMuaXNFbXB0eSgpOyB9CisgICAgLy8gSVBDIG1lc3NhZ2VzLgorICAgIHZvaWQgc3RhcnRVcGRh
dGluZyhJUEM6OkNvbm5lY3Rpb24mLCBjb25zdCBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiYs
IFdlYlBhZ2VQcm94eUlkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgYXV0aG9yaXphdGlvblRva2Vu
LCBib29sIGVuYWJsZUhpZ2hBY2N1cmFjeSk7CisgICAgdm9pZCBzdG9wVXBkYXRpbmcoSVBDOjpD
b25uZWN0aW9uJiwgY29uc3QgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4mKTsKKyAgICB2b2lk
IHNldEVuYWJsZUhpZ2hBY2N1cmFjeShJUEM6OkNvbm5lY3Rpb24mLCBjb25zdCBXZWJDb3JlOjpS
ZWdpc3RyYWJsZURvbWFpbiYsIGJvb2wpOwogCi0gICAgdm9pZCBzdGFydFVwZGF0aW5nKElQQzo6
Q29ubmVjdGlvbiYsIFdlYlBhZ2VQcm94eUlkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgYXV0aG9y
aXphdGlvblRva2VuKTsKLSAgICB2b2lkIHN0b3BVcGRhdGluZyhJUEM6OkNvbm5lY3Rpb24mKTsK
LSAgICB2b2lkIHJlbW92ZVJlcXVlc3Rlcihjb25zdCBJUEM6OkNvbm5lY3Rpb246OkNsaWVudCop
OwotICAgIHZvaWQgc2V0RW5hYmxlSGlnaEFjY3VyYWN5KElQQzo6Q29ubmVjdGlvbiYsIGJvb2wp
OworI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCisgICAgLy8gQ29yZUxvY2F0aW9uR2VvbG9jYXRp
b25Qcm92aWRlcjo6Q2xpZW50CisgICAgdm9pZCBwb3NpdGlvbkNoYW5nZWQoY29uc3QgU3RyaW5n
JiB3ZWJzaXRlSWRlbnRpZmllciwgV2ViQ29yZTo6R2VvbG9jYXRpb25Qb3NpdGlvbkRhdGEmJikg
ZmluYWw7CisgICAgdm9pZCBlcnJvck9jY3VycmVkKGNvbnN0IFN0cmluZyYgd2Vic2l0ZUlkZW50
aWZpZXIsIGNvbnN0IFN0cmluZyYgZXJyb3JNZXNzYWdlKSBmaW5hbDsKKyAgICB2b2lkIHJlc2V0
R2VvbG9jYXRpb24oY29uc3QgU3RyaW5nJiB3ZWJzaXRlSWRlbnRpZmllcikgZmluYWw7CisjZW5k
aWYKIAotICAgIEhhc2hTZXQ8Y29uc3QgSVBDOjpDb25uZWN0aW9uOjpDbGllbnQqPiBtX3VwZGF0
ZVJlcXVlc3RlcnM7Ci0gICAgSGFzaFNldDxjb25zdCBJUEM6OkNvbm5lY3Rpb246OkNsaWVudCo+
IG1faGlnaEFjY3VyYWN5UmVxdWVzdGVyczsKKyAgICBzdHJ1Y3QgUGVyRG9tYWluRGF0YSB7Cisg
ICAgICAgIFdURl9NQUtFX1NUUlVDVF9GQVNUX0FMTE9DQVRFRDsKKyAgICAgICAgSGFzaFNldDxJ
UEM6OkNvbm5lY3Rpb246OlVuaXF1ZUlEPiB3YXRjaGVyczsKKyAgICAgICAgSGFzaFNldDxJUEM6
OkNvbm5lY3Rpb246OlVuaXF1ZUlEPiB3YXRjaGVyc05lZWRpbmdIaWdoQWNjdXJhY3k7CisgICAg
ICAgIHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6R2VvbG9jYXRpb25Qb3NpdGlvbkRhdGE+IGxhc3RQ
b3NpdGlvbjsKIAorICAgICAgICAvLyBGSVhNRTogVXNlIGZvciBhbGwgQ29jb2EgcG9ydHMuCisj
aWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKKyAgICAgICAgc3RkOjp1bmlxdWVfcHRyPFdlYkNvcmU6
OkNvcmVMb2NhdGlvbkdlb2xvY2F0aW9uUHJvdmlkZXI+IHByb3ZpZGVyOworI2VuZGlmCisgICAg
fTsKKworICAgIGJvb2wgaXNVcGRhdGluZyhjb25zdCBQZXJEb21haW5EYXRhJikgY29uc3Q7Cisg
ICAgYm9vbCBpc0hpZ2hBY2N1cmFjeUVuYWJsZWQoY29uc3QgUGVyRG9tYWluRGF0YSYpIGNvbnN0
OworICAgIHZvaWQgcHJvdmlkZXJTdGFydFVwZGF0aW5nKFBlckRvbWFpbkRhdGEmLCBjb25zdCBX
ZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiYpOworICAgIHZvaWQgcHJvdmlkZXJTdG9wVXBkYXRp
bmcoUGVyRG9tYWluRGF0YSYpOworICAgIHZvaWQgcHJvdmlkZXJTZXRFbmFibGVkSGlnaEFjY3Vy
YWN5KFBlckRvbWFpbkRhdGEmLCBib29sIGVuYWJsZWQpOworCisgICAgSGFzaE1hcDxXZWJDb3Jl
OjpSZWdpc3RyYWJsZURvbWFpbiwgc3RkOjp1bmlxdWVfcHRyPFBlckRvbWFpbkRhdGE+PiBtX3Bl
ckRvbWFpbkRhdGE7CisjaWYgIVBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAgc3RkOjp1bmlxdWVf
cHRyPEFQSTo6R2VvbG9jYXRpb25Qcm92aWRlcj4gbV9wcm92aWRlcjsKLSAgICBzdGQ6Om9wdGlv
bmFsPFdlYkNvcmU6Okdlb2xvY2F0aW9uUG9zaXRpb25EYXRhPiBtX2xhc3RQb3NpdGlvbjsKKyNl
bmRpZgogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9XZWJHZW9sb2NhdGlvbk1hbmFnZXJQcm94eS5tZXNzYWdlcy5pbiBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkdlb2xvY2F0aW9uTWFuYWdlclByb3h5Lm1lc3NhZ2Vz
LmluCmluZGV4IGU1ZTljMjdkMTRhNWZiNzI2ZmNjMmM4MWZmM2UxNjVlYTNlODQwYmUuLjkwNDFh
OTBjMjUwZjhhZGQ2OGJiMTNiM2FiYjU0YmViNjZjYjJkMjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL1dlYkdlb2xvY2F0aW9uTWFuYWdlclByb3h5Lm1lc3NhZ2VzLmluCisr
KyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkdlb2xvY2F0aW9uTWFuYWdlclByb3h5Lm1l
c3NhZ2VzLmluCkBAIC0yMSw3ICsyMSw3IEBACiAjIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAKIG1lc3NhZ2VzIC0+
IFdlYkdlb2xvY2F0aW9uTWFuYWdlclByb3h5IHsKLSAgICBTdGFydFVwZGF0aW5nKFdlYktpdDo6
V2ViUGFnZVByb3h5SWRlbnRpZmllciBwYWdlUHJveHlJRCwgU3RyaW5nIGF1dGhvcml6YXRpb25U
b2tlbikgV2FudHNDb25uZWN0aW9uCi0gICAgU3RvcFVwZGF0aW5nKCkgV2FudHNDb25uZWN0aW9u
Ci0gICAgU2V0RW5hYmxlSGlnaEFjY3VyYWN5KGJvb2wgZW5hYmxlZCkgV2FudHNDb25uZWN0aW9u
CisgICAgU3RhcnRVcGRhdGluZyhXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiByZWdpc3RyYWJs
ZURvbWFpbiwgV2ViS2l0OjpXZWJQYWdlUHJveHlJZGVudGlmaWVyIHBhZ2VQcm94eUlELCBTdHJp
bmcgYXV0aG9yaXphdGlvblRva2VuLCBib29sIGVuYWJsZUhpZ2hBY2N1cmFjeSkgV2FudHNDb25u
ZWN0aW9uCisgICAgU3RvcFVwZGF0aW5nKFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluIHJlZ2lz
dHJhYmxlRG9tYWluKSBXYW50c0Nvbm5lY3Rpb24KKyAgICBTZXRFbmFibGVIaWdoQWNjdXJhY3ko
V2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4gcmVnaXN0cmFibGVEb21haW4sIGJvb2wgZW5hYmxl
ZCkgV2FudHNDb25uZWN0aW9uCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9pb3MvV0tHZW9sb2NhdGlvblByb3ZpZGVySU9TLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvaW9zL1dLR2VvbG9jYXRpb25Qcm92aWRlcklPUy5tbQppbmRleCBmNWU5ZmQ3YmMzNDEyOTdh
ZjdiMjRlNjc0MTYzMzJjZDk2YWQ3MzljLi42ZjA2OTZkMzg5NTcyNDg3MmQ0ZWRjOWE0YTA1OWQ0
MjBkZDgxMWNkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tHZW9s
b2NhdGlvblByb3ZpZGVySU9TLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9X
S0dlb2xvY2F0aW9uUHJvdmlkZXJJT1MubW0KQEAgLTUxLDcgKzUxLDYgQEAKICNpbXBvcnQgPHd0
Zi9VUkwuaD4KIAogLy8gRklYTUU6IFJlbW92ZSB1c2Ugb2YgV2ViS2l0MSBmcm9tIFdlYktpdDIK
LSNpbXBvcnQgPFdlYktpdC9XZWJHZW9sb2NhdGlvbkNvcmVMb2NhdGlvblByb3ZpZGVyLmg+CiAj
aW1wb3J0IDxXZWJLaXQvV2ViQWxsb3dEZW55UG9saWN5TGlzdGVuZXIuaD4KIAogQUxMT1dfREVQ
UkVDQVRFRF9ERUNMQVJBVElPTlNfQkVHSU4KQEAgLTU5LDkgKzU4LDYgQEAgQUxMT1dfREVQUkVD
QVRFRF9ERUNMQVJBVElPTlNfQkVHSU4KIEBpbnRlcmZhY2UgV0tHZW9sb2NhdGlvblByb3ZpZGVy
SU9TIChfV0tHZW9sb2NhdGlvbkNvcmVMb2NhdGlvbkxpc3RlbmVyKSA8X1dLR2VvbG9jYXRpb25D
b3JlTG9jYXRpb25MaXN0ZW5lcj4KIEBlbmQKIAotQGludGVyZmFjZSBXS0xlZ2FjeUNvcmVMb2Nh
dGlvblByb3ZpZGVyIDogTlNPYmplY3Q8X1dLR2VvbG9jYXRpb25Db3JlTG9jYXRpb25Qcm92aWRl
ciwgV2ViR2VvbG9jYXRpb25Db3JlTG9jYXRpb25VcGRhdGVMaXN0ZW5lcj4KLUBlbmQKLQogQGlu
dGVyZmFjZSBXS1dlYkFsbG93RGVueVBvbGljeUxpc3RlbmVyIDogTlNPYmplY3Q8V2ViQWxsb3dE
ZW55UG9saWN5TGlzdGVuZXI+CiAtIChpZClpbml0V2l0aENvbXBsZXRpb25IYW5kbGVyOihGdW5j
dGlvbjx2b2lkKGJvb2wpPiYmKWNvbXBsZXRpb25IYW5kbGVyOwogLSAodm9pZClkZW55T25seVRo
aXNSZXF1ZXN0IE5PX1JFVFVSTl9EVUVfVE9fQVNTRVJUOwpAQCAtNzksOCArNzUsNyBAQCBzdHJ1
Y3QgR2VvbG9jYXRpb25SZXF1ZXN0RGF0YSB7CiB9OwogCiBAaW1wbGVtZW50YXRpb24gV0tHZW9s
b2NhdGlvblByb3ZpZGVySU9TIHsKLSAgICBSZWZQdHI8V2ViS2l0OjpXZWJHZW9sb2NhdGlvbk1h
bmFnZXJQcm94eT4gX2dlb2xvY2F0aW9uTWFuYWdlcjsKLSAgICBSZXRhaW5QdHI8aWQgPF9XS0dl
b2xvY2F0aW9uQ29yZUxvY2F0aW9uUHJvdmlkZXI+PiBfY29yZUxvY2F0aW9uUHJvdmlkZXI7Cisg
ICAgUmV0YWluUHRyPGlkIDxfV0tHZW9sb2NhdGlvbkNvcmVMb2NhdGlvblByb3ZpZGVyPj4gX2Ns
aWVudEF1dGhvcml6YXRpb25Qcm92aWRlcjsKICAgICBCT09MIF9pc1dlYkNvcmVHZW9sb2NhdGlv
bkFjdGl2ZTsKICAgICBSZWZQdHI8V2ViS2l0OjpXZWJHZW9sb2NhdGlvblBvc2l0aW9uPiBfbGFz
dEFjdGl2ZVBvc2l0aW9uOwogICAgIERlcXVlPEdlb2xvY2F0aW9uUmVxdWVzdERhdGE+IF9yZXF1
ZXN0c1dhaXRpbmdGb3JDb3JlTG9jYXRpb25BdXRob3JpemF0aW9uOwpAQCAtODgsNDggKzgzLDE2
IEBAIEBpbXBsZW1lbnRhdGlvbiBXS0dlb2xvY2F0aW9uUHJvdmlkZXJJT1MgewogCiAjcHJhZ21h
IG1hcmsgLSBXS0dlb2xvY2F0aW9uUHJvdmlkZXIgY2FsbGJhY2tzIGltcGxlbWVudGF0aW9uLgog
Ci1zdGF0aWMgdm9pZCBzdGFydFVwZGF0aW5nQ2FsbGJhY2soV0tHZW9sb2NhdGlvbk1hbmFnZXJS
ZWYgZ2VvbG9jYXRpb25NYW5hZ2VyLCBjb25zdCB2b2lkKiBjbGllbnRJbmZvKQotewotICAgIFdL
R2VvbG9jYXRpb25Qcm92aWRlcklPUyAqZ2VvbG9jYXRpb25Qcm92aWRlciA9IHJlaW50ZXJwcmV0
X2Nhc3Q8V0tHZW9sb2NhdGlvblByb3ZpZGVySU9TKj4oY29uc3RfY2FzdDx2b2lkKj4oY2xpZW50
SW5mbykpOwotICAgIEFTU0VSVChbZ2VvbG9jYXRpb25Qcm92aWRlciBpc0tpbmRPZkNsYXNzOltX
S0dlb2xvY2F0aW9uUHJvdmlkZXJJT1MgY2xhc3NdXSk7Ci0gICAgW2dlb2xvY2F0aW9uUHJvdmlk
ZXIgX3N0YXJ0VXBkYXRpbmddOwotfQotCi1zdGF0aWMgdm9pZCBzdG9wVXBkYXRpbmdDYWxsYmFj
ayhXS0dlb2xvY2F0aW9uTWFuYWdlclJlZiBnZW9sb2NhdGlvbk1hbmFnZXIsIGNvbnN0IHZvaWQq
IGNsaWVudEluZm8pCi17Ci0gICAgV0tHZW9sb2NhdGlvblByb3ZpZGVySU9TICpnZW9sb2NhdGlv
blByb3ZpZGVyID0gcmVpbnRlcnByZXRfY2FzdDxXS0dlb2xvY2F0aW9uUHJvdmlkZXJJT1MqPihj
b25zdF9jYXN0PHZvaWQqPihjbGllbnRJbmZvKSk7Ci0gICAgQVNTRVJUKFtnZW9sb2NhdGlvblBy
b3ZpZGVyIGlzS2luZE9mQ2xhc3M6W1dLR2VvbG9jYXRpb25Qcm92aWRlcklPUyBjbGFzc11dKTsK
LSAgICBbZ2VvbG9jYXRpb25Qcm92aWRlciBfc3RvcFVwZGF0aW5nXTsKLX0KLQotc3RhdGljIHZv
aWQgc2V0RW5hYmxlSGlnaEFjY3VyYWN5KFdLR2VvbG9jYXRpb25NYW5hZ2VyUmVmIGdlb2xvY2F0
aW9uTWFuYWdlciwgYm9vbCBlbmFibGUsIGNvbnN0IHZvaWQqIGNsaWVudEluZm8pCi17Ci0gICAg
V0tHZW9sb2NhdGlvblByb3ZpZGVySU9TICpnZW9sb2NhdGlvblByb3ZpZGVyID0gcmVpbnRlcnBy
ZXRfY2FzdDxXS0dlb2xvY2F0aW9uUHJvdmlkZXJJT1MqPihjb25zdF9jYXN0PHZvaWQqPihjbGll
bnRJbmZvKSk7Ci0gICAgQVNTRVJUKFtnZW9sb2NhdGlvblByb3ZpZGVyIGlzS2luZE9mQ2xhc3M6
W1dLR2VvbG9jYXRpb25Qcm92aWRlcklPUyBjbGFzc11dKTsKLSAgICBbZ2VvbG9jYXRpb25Qcm92
aWRlciBfc2V0RW5hYmxlSGlnaEFjY3VyYWN5OmVuYWJsZV07Ci19Ci0KIC0gKHZvaWQpX3N0YXJ0
VXBkYXRpbmcKIHsKLSAgICBfaXNXZWJDb3JlR2VvbG9jYXRpb25BY3RpdmUgPSBZRVM7Ci0gICAg
W19jb3JlTG9jYXRpb25Qcm92aWRlciBzdGFydF07Ci0KLSAgICAvLyBJZiB3ZSBoYXZlIHRoZSBs
YXN0IHBvc2l0aW9uLCBpdCBpcyBmcm9tIHRoZSBpbml0aWFsaXphdGlvbiBvciB3YXJtIHVwLiBJ
dCBpcyB0aGUgbGFzdCBrbm93bgotICAgIC8vIGdvb2QgcG9zaXRpb24gc28gd2UgY2FuIHJldHVy
biBpdCBkaXJlY3RseS4KLSAgICBpZiAoX2xhc3RBY3RpdmVQb3NpdGlvbikKLSAgICAgICAgX2dl
b2xvY2F0aW9uTWFuYWdlci0+cHJvdmlkZXJEaWRDaGFuZ2VQb3NpdGlvbihfbGFzdEFjdGl2ZVBv
c2l0aW9uLmdldCgpKTsKIH0KIAogLSAodm9pZClfc3RvcFVwZGF0aW5nCiB7Ci0gICAgX2lzV2Vi
Q29yZUdlb2xvY2F0aW9uQWN0aXZlID0gTk87Ci0gICAgW19jb3JlTG9jYXRpb25Qcm92aWRlciBz
dG9wXTsKLSAgICBfbGFzdEFjdGl2ZVBvc2l0aW9uID0gbnVsbHB0cjsKIH0KIAogLSAodm9pZClf
c2V0RW5hYmxlSGlnaEFjY3VyYWN5OihCT09MKWVuYWJsZUhpZ2hBY2N1cmFjeQogewotICAgIFtf
Y29yZUxvY2F0aW9uUHJvdmlkZXIgc2V0RW5hYmxlSGlnaEFjY3VyYWN5OmVuYWJsZUhpZ2hBY2N1
cmFjeV07CiB9CiAKICNwcmFnbWEgbWFyayAtIFB1YmxpYyBBUEkgaW1wbGVtZW50YXRpb24uCkBA
IC0xNDYsMjUgKzEwOSwzMyBAQCAtIChpZClpbml0V2l0aFByb2Nlc3NQb29sOihXZWJLaXQ6Oldl
YlByb2Nlc3NQb29sJilwcm9jZXNzUG9vbAogICAgIHNlbGYgPSBbc3VwZXIgaW5pdF07CiAgICAg
aWYgKCFzZWxmKQogICAgICAgICByZXR1cm4gbmlsOwotICAgIF9nZW9sb2NhdGlvbk1hbmFnZXIg
PSBwcm9jZXNzUG9vbC5zdXBwbGVtZW50PFdlYktpdDo6V2ViR2VvbG9jYXRpb25NYW5hZ2VyUHJv
eHk+KCk7Ci0gICAgV0tHZW9sb2NhdGlvblByb3ZpZGVyVjEgcHJvdmlkZXJDYWxsYmFjayA9IHsK
LSAgICAgICAgeyAxLCBzZWxmIH0sCi0gICAgICAgIHN0YXJ0VXBkYXRpbmdDYWxsYmFjaywKLSAg
ICAgICAgc3RvcFVwZGF0aW5nQ2FsbGJhY2ssCi0gICAgICAgIHNldEVuYWJsZUhpZ2hBY2N1cmFj
eQotICAgIH07Ci0gICAgV0tHZW9sb2NhdGlvbk1hbmFnZXJTZXRQcm92aWRlcih0b0FQSShfZ2Vv
bG9jYXRpb25NYW5hZ2VyLmdldCgpKSwgJnByb3ZpZGVyQ2FsbGJhY2suYmFzZSk7Ci0gICAgX2Nv
cmVMb2NhdGlvblByb3ZpZGVyID0gd3JhcHBlcihwcm9jZXNzUG9vbCkuX2NvcmVMb2NhdGlvblBy
b3ZpZGVyID86IGFkb3B0TlMoc3RhdGljX2Nhc3Q8aWQgPF9XS0dlb2xvY2F0aW9uQ29yZUxvY2F0
aW9uUHJvdmlkZXI+PihbW1dLTGVnYWN5Q29yZUxvY2F0aW9uUHJvdmlkZXIgYWxsb2NdIGluaXRd
KSk7Ci0gICAgW19jb3JlTG9jYXRpb25Qcm92aWRlciBzZXRMaXN0ZW5lcjpzZWxmXTsKKworICAg
IC8vIEZJWE1FOiBTb21lIGNsaWVudHMgdXNlIHRoaXMgU1BJIHRvIHNldCBhIF9jb3JlTG9jYXRp
b25Qcm92aWRlciB0aGF0IGZhaWxzIGFsbCBhdXRob3JpemF0aW9ucyBhcyBhIHdheSB0byBkaXNh
YmxlIHRoZSBHZW9sb2NhdGlvbiBBUEkuCisgICAgLy8gVGhleSBzaG91bGQganVzdCBpbXBsZW1l
bnQgcmVxdWVzdEdlb2xvY2F0aW9uQXV0aG9yaXphdGlvbkZvclVSTCBvbiB0aGUgV0tXZWJWaWV3
IGluc3RlYWQsIHNvIHdlIGNhbiBkcm9wIHRoaXMgbG9naWMgZW50aXJlbHkuCisgICAgX2NsaWVu
dEF1dGhvcml6YXRpb25Qcm92aWRlciA9IHdyYXBwZXIocHJvY2Vzc1Bvb2wpLl9jb3JlTG9jYXRp
b25Qcm92aWRlcjsKKyAgICBpZiAoX2NsaWVudEF1dGhvcml6YXRpb25Qcm92aWRlcikKKyAgICAg
ICAgW19jbGllbnRBdXRob3JpemF0aW9uUHJvdmlkZXIgc2V0TGlzdGVuZXI6c2VsZl07CisKICAg
ICByZXR1cm4gc2VsZjsKIH0KIAogLSAodm9pZClkZWNpZGVQb2xpY3lGb3JHZW9sb2NhdGlvblJl
cXVlc3RGcm9tT3JpZ2luOihXZWJLaXQ6OkZyYW1lSW5mb0RhdGEmJilmcmFtZUluZm8gY29tcGxl
dGlvbkhhbmRsZXI6KEZ1bmN0aW9uPHZvaWQoYm9vbCk+JiYpY29tcGxldGlvbkhhbmRsZXIgdmll
dzooV0tXZWJWaWV3ICopY29udGVudFZpZXcKIHsKLSAgICAvLyBTdGVwIDE6IGFzayB0aGUgdXNl
ciBpZiB0aGUgYXBwIGNhbiB1c2UgR2VvbG9jYXRpb24uCisgICAgV2ViQ29yZTo6UmVnaXN0cmFi
bGVEb21haW4gcmVnaXN0cmFibGVEb21haW4oZnJhbWVJbmZvLnNlY3VyaXR5T3JpZ2luKTsKICAg
ICBHZW9sb2NhdGlvblJlcXVlc3REYXRhIGdlb2xvY2F0aW9uUmVxdWVzdERhdGEgeyBbY29udGVu
dFZpZXcgVVJMXSwgV1RGTW92ZShmcmFtZUluZm8pLCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVy
KSwgY29udGVudFZpZXcgfTsKICAgICBfcmVxdWVzdHNXYWl0aW5nRm9yQ29yZUxvY2F0aW9uQXV0
aG9yaXphdGlvbi5hcHBlbmQoV1RGTW92ZShnZW9sb2NhdGlvblJlcXVlc3REYXRhKSk7Ci0gICAg
W19jb3JlTG9jYXRpb25Qcm92aWRlciByZXF1ZXN0R2VvbG9jYXRpb25BdXRob3JpemF0aW9uXTsK
KyAgICBpZiAoX2NsaWVudEF1dGhvcml6YXRpb25Qcm92aWRlcikgeworICAgICAgICAvLyBTdGVw
IDE6IGFzayB0aGUgdXNlciBpZiB0aGUgYXBwIGNhbiB1c2UgR2VvbG9jYXRpb24uCisgICAgICAg
IFtfY2xpZW50QXV0aG9yaXphdGlvblByb3ZpZGVyIHJlcXVlc3RHZW9sb2NhdGlvbkF1dGhvcml6
YXRpb25dOworICAgIH0gZWxzZSB7CisgICAgICAgIC8vIFN0ZXAgMTogYXNrIENvcmVMb2NhdGlv
biBpZiB0aGUgYXBwIGNhbiB1c2UgR2VvbG9jYXRpb24uCisgICAgICAgIFdlYkNvcmU6OkNvcmVM
b2NhdGlvbkdlb2xvY2F0aW9uUHJvdmlkZXI6OnJlcXVlc3RBdXRob3JpemF0aW9uKHJlZ2lzdHJh
YmxlRG9tYWluLCBbc2VsZiwgc3Ryb25nU2VsZiA9IHJldGFpblB0cihzZWxmKV0oYm9vbCBhdXRo
b3JpemVkKSB7CisgICAgICAgICAgICBpZiAoYXV0aG9yaXplZCkKKyAgICAgICAgICAgICAgICBb
c2VsZiBnZW9sb2NhdGlvbkF1dGhvcml6YXRpb25HcmFudGVkXTsKKyAgICAgICAgICAgIGVsc2UK
KyAgICAgICAgICAgICAgICBbc2VsZiBnZW9sb2NhdGlvbkF1dGhvcml6YXRpb25EZW5pZWRdOwor
ICAgICAgICB9KTsKKyAgICB9CiB9CiBAZW5kCiAKQEAgLTE3NCw3ICsxNDUsNyBAQCBAaW1wbGVt
ZW50YXRpb24gV0tHZW9sb2NhdGlvblByb3ZpZGVySU9TIChXZWJHZW9sb2NhdGlvbkNvcmVMb2Nh
dGlvblVwZGF0ZUxpc3RlbgogCiAtICh2b2lkKWdlb2xvY2F0aW9uQXV0aG9yaXphdGlvbkdyYW50
ZWQKIHsKLSAgICAvLyBTdGVwIDI6IGFzayB0aGUgdXNlciBpZiB0aGlzIHBhcnRpY3VsYXIgcGFn
ZSBjYW4gdXNlIGdlbG9jYXRpb24uCisgICAgLy8gU3RlcCAyOiBhc2sgdGhlIHVzZXIgaWYgdGhp
cyBwYXJ0aWN1bGFyIHBhZ2UgY2FuIHVzZSBnZW9sb2NhdGlvbi4KICAgICBpZiAoX3JlcXVlc3Rz
V2FpdGluZ0ZvckNvcmVMb2NhdGlvbkF1dGhvcml6YXRpb24uaXNFbXB0eSgpKQogICAgICAgICBy
ZXR1cm47CiAKQEAgLTIxMCw5MyArMTgxLDE0IEBAIC0gKHZvaWQpZ2VvbG9jYXRpb25BdXRob3Jp
emF0aW9uRGVuaWVkCiAKIC0gKHZvaWQpcG9zaXRpb25DaGFuZ2VkOihfV0tHZW9sb2NhdGlvblBv
c2l0aW9uICopcG9zaXRpb24KIHsKLSAgICBfbGFzdEFjdGl2ZVBvc2l0aW9uID0gcG9zaXRpb24t
Pl9nZW9sb2NhdGlvblBvc2l0aW9uLmdldCgpOwotICAgIF9nZW9sb2NhdGlvbk1hbmFnZXItPnBy
b3ZpZGVyRGlkQ2hhbmdlUG9zaXRpb24oX2xhc3RBY3RpdmVQb3NpdGlvbi5nZXQoKSk7Ci19Ci0K
LS0gKHZvaWQpZXJyb3JPY2N1cnJlZDooTlNTdHJpbmcgKillcnJvck1lc3NhZ2UKLXsKLSAgICBf
Z2VvbG9jYXRpb25NYW5hZ2VyLT5wcm92aWRlckRpZEZhaWxUb0RldGVybWluZVBvc2l0aW9uKGVy
cm9yTWVzc2FnZSk7Ci19Ci0KLS0gKHZvaWQpcmVzZXRHZW9sb2NhdGlvbgotewotICAgIF9nZW9s
b2NhdGlvbk1hbmFnZXItPnJlc2V0UGVybWlzc2lvbnMoKTsKLX0KLQotQGVuZAotCi0jIHByYWdt
YSBtYXJrIC0gSW1wbGVtZW50YXRpb24gb2YgV0tMZWdhY3lDb3JlTG9jYXRpb25Qcm92aWRlcgot
Ci1AaW1wbGVtZW50YXRpb24gV0tMZWdhY3lDb3JlTG9jYXRpb25Qcm92aWRlciB7Ci0gICAgaWQg
PF9XS0dlb2xvY2F0aW9uQ29yZUxvY2F0aW9uTGlzdGVuZXI+IF9saXN0ZW5lcjsKLSAgICBSZXRh
aW5QdHI8V2ViR2VvbG9jYXRpb25Db3JlTG9jYXRpb25Qcm92aWRlcj4gX3Byb3ZpZGVyOwotfQot
Ci0vLyA8X1dLR2VvbG9jYXRpb25Db3JlTG9jYXRpb25Qcm92aWRlcj4gTWV0aG9kcwotCi0tICh2
b2lkKXNldExpc3RlbmVyOihpZDxfV0tHZW9sb2NhdGlvbkNvcmVMb2NhdGlvbkxpc3RlbmVyPils
aXN0ZW5lcgotewotICAgIEFTU0VSVChsaXN0ZW5lciAmJiAhX2xpc3RlbmVyICYmICFfcHJvdmlk
ZXIpOwotICAgIF9saXN0ZW5lciA9IGxpc3RlbmVyOwotICAgIF9wcm92aWRlciA9IGFkb3B0TlMo
W1tXZWJHZW9sb2NhdGlvbkNvcmVMb2NhdGlvblByb3ZpZGVyIGFsbG9jXSBpbml0V2l0aExpc3Rl
bmVyOnNlbGZdKTsKLX0KLQotLSAodm9pZClyZXF1ZXN0R2VvbG9jYXRpb25BdXRob3JpemF0aW9u
Ci17Ci0gICAgQVNTRVJUKF9wcm92aWRlcik7Ci0gICAgW19wcm92aWRlciByZXF1ZXN0R2VvbG9j
YXRpb25BdXRob3JpemF0aW9uXTsKLX0KLQotLSAodm9pZClzdGFydAotewotICAgIEFTU0VSVChf
cHJvdmlkZXIpOwotICAgIFtfcHJvdmlkZXIgc3RhcnRdOwotfQotCi0tICh2b2lkKXN0b3AKLXsK
LSAgICBBU1NFUlQoX3Byb3ZpZGVyKTsKLSAgICBbX3Byb3ZpZGVyIHN0b3BdOwotfQotCi0tICh2
b2lkKXNldEVuYWJsZUhpZ2hBY2N1cmFjeTooQk9PTClmbGFnCi17Ci0gICAgQVNTRVJUKF9wcm92
aWRlcik7Ci0gICAgW19wcm92aWRlciBzZXRFbmFibGVIaWdoQWNjdXJhY3k6ZmxhZ107Ci19Ci0K
LS8vIDxXZWJHZW9sb2NhdGlvbkNvcmVMb2NhdGlvblVwZGF0ZUxpc3RlbmVyPiBNZXRob2RzCi0K
LS0gKHZvaWQpZ2VvbG9jYXRpb25BdXRob3JpemF0aW9uR3JhbnRlZAotewotICAgIEFTU0VSVChf
bGlzdGVuZXIpOwotICAgIFtfbGlzdGVuZXIgZ2VvbG9jYXRpb25BdXRob3JpemF0aW9uR3JhbnRl
ZF07Ci19Ci0KLS0gKHZvaWQpZ2VvbG9jYXRpb25BdXRob3JpemF0aW9uRGVuaWVkCi17Ci0gICAg
QVNTRVJUKF9saXN0ZW5lcik7Ci0gICAgW19saXN0ZW5lciBnZW9sb2NhdGlvbkF1dGhvcml6YXRp
b25EZW5pZWRdOwotfQotCi0tICh2b2lkKXBvc2l0aW9uQ2hhbmdlZDooV2ViQ29yZTo6R2VvbG9j
YXRpb25Qb3NpdGlvbkRhdGEmJiljb3JlUG9zaXRpb24KLXsKLSAgICBBU1NFUlQoX2xpc3RlbmVy
KTsKLSAgICBhdXRvIHBvc2l0aW9uID0gV2ViS2l0OjpXZWJHZW9sb2NhdGlvblBvc2l0aW9uOjpj
cmVhdGUoV1RGTW92ZShjb3JlUG9zaXRpb24pKTsKLSAgICBbX2xpc3RlbmVyIHBvc2l0aW9uQ2hh
bmdlZDp3cmFwcGVyKHBvc2l0aW9uLmdldCgpKV07CiB9CiAKIC0gKHZvaWQpZXJyb3JPY2N1cnJl
ZDooTlNTdHJpbmcgKillcnJvck1lc3NhZ2UKIHsKLSAgICBBU1NFUlQoX2xpc3RlbmVyKTsKLSAg
ICBbX2xpc3RlbmVyIGVycm9yT2NjdXJyZWQ6ZXJyb3JNZXNzYWdlXTsKIH0KIAogLSAodm9pZCly
ZXNldEdlb2xvY2F0aW9uCiB7Ci0gICAgQVNTRVJUKF9saXN0ZW5lcik7Ci0gICAgW19saXN0ZW5l
ciByZXNldEdlb2xvY2F0aW9uXTsKIH0KIAogQGVuZApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJLaXQvV2ViS2l0
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggZjdiZWU1NDNjZTBmYzBhYzA2ZDc2ODUx
ZWUyMTdkZjdhZDg0MDBiOS4uYzUzZTA0MTJiYjhjMTQyYWQ1N2U4YjMyOWEwYzZkNjg5MWQ3NmI0
YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvagorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9q
CkBAIC00MzE2LDYgKzQzMTYsNyBAQAogCQk0NkNFM0IxMDIzRDhDODNEMDAxNkE5NkEgLyogV2Vi
QmFja0ZvcndhcmRMaXN0Q291bnRzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IFdlYkJhY2tGb3J3YXJkTGlzdENvdW50cy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQk0NkQ0OEZDQzI3OTlEN0REMDA3RDIwMTQgLyogV2ViU2hhcmVkV29ya2VyU2VydmVyVG9Db250
ZXh0Q29ubmVjdGlvbi5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXZWJTaGFyZWRXb3JrZXJTZXJ2
ZXJUb0NvbnRleHRDb25uZWN0aW9uLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
NDZENDhGQ0QyNzk5RDdERTAwN0QyMDE0IC8qIFdlYlNoYXJlZFdvcmtlclNlcnZlclRvQ29udGV4
dENvbm5lY3Rpb24uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2ViU2hhcmVkV29ya2VyU2VydmVyVG9Db250
ZXh0Q29ubmVjdGlvbi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk0NkRBMjg1NzI3
QjczRTc2MDA4OUQzMzkgLyogV2ViR2VvbG9jYXRpb25NYW5hZ2VyUHJveHlDb2NvYS5jcHAgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5jcHA7IHBhdGggPSBXZWJHZW9sb2NhdGlvbk1hbmFnZXJQcm94eUNvY29hLmNwcDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDZERjA2MzkxRjM5MDVFNTAwMTk4MEJCIC8qIE5l
dHdvcmtDT1JTUHJlZmxpZ2h0Q2hlY2tlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5j
cHA7IHBhdGggPSBOZXR3b3JrQ09SU1ByZWZsaWdodENoZWNrZXIuY3BwOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQk0NkRGMDYzQTFGMzkwNUU1MDAxOTgwQkIgLyogTmV0d29ya0NPUlNQ
cmVmbGlnaHRDaGVja2VyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE5ldHdv
cmtDT1JTUHJlZmxpZ2h0Q2hlY2tlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0
NkU5NzYwQTI3NTdGNkM5MDBBQ0REMzcgLyogV2ViQnJvYWRjYXN0Q2hhbm5lbFJlZ2lzdHJ5Lm1l
c3NhZ2VzLmluICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IFdlYkJyb2FkY2FzdENoYW5uZWxSZWdp
c3RyeS5tZXNzYWdlcy5pbjsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTc2MDMsNiAr
NzYwNCw3IEBACiAJCQkJNTJENUExQUExQzU3NDk0RTAwREUzNEEzIC8qIFZpZGVvRnVsbHNjcmVl
bk1hbmFnZXJQcm94eS5oICovLAogCQkJCTUyRDVBMUFCMUM1NzQ5NEUwMERFMzRBMyAvKiBWaWRl
b0Z1bGxzY3JlZW5NYW5hZ2VyUHJveHkubWVzc2FnZXMuaW4gKi8sCiAJCQkJNTJENUExQUMxQzU3
NDk0RTAwREUzNEEzIC8qIFZpZGVvRnVsbHNjcmVlbk1hbmFnZXJQcm94eS5tbSAqLywKKwkJCQk0
NkRBMjg1NzI3QjczRTc2MDA4OUQzMzkgLyogV2ViR2VvbG9jYXRpb25NYW5hZ2VyUHJveHlDb2Nv
YS5jcHAgKi8sCiAJCQkJQzE4RjNBMTMyNTYzMzJBNjAwNzk3RTY2IC8qIFdlYkluc3BlY3RvclBy
ZWZlcmVuY2VPYnNlcnZlci5oICovLAogCQkJCUMxOEYzQTE0MjU2MzMzNDMwMDc5N0U2NiAvKiBX
ZWJJbnNwZWN0b3JQcmVmZXJlbmNlT2JzZXJ2ZXIubW0gKi8sCiAJCQkJQ0RGMUI5MTkyNjcwMjFE
NjAwMDdFQzEwIC8qIFdlYktpdFN3aWZ0U29mdExpbmsuaCAqLywKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9HZW9sb2NhdGlvbi9XZWJHZW9sb2NhdGlvbk1hbmFnZXIuY3Bw
IGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dlb2xvY2F0aW9uL1dlYkdlb2xvY2F0aW9uTWFu
YWdlci5jcHAKaW5kZXggNWE5YzlmNGQyYTFjZDY2YTRiNjc1OWI1OTM4N2VhMmNmNTViMmFhOC4u
ZDU5ZmE5ZGJhNmQwZDA5MmNhYWU5YTRhY2UyMzI5ZTlhNDhkMjBkNyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dlb2xvY2F0aW9uL1dlYkdlb2xvY2F0aW9uTWFuYWdlci5j
cHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dlb2xvY2F0aW9uL1dlYkdlb2xvY2F0
aW9uTWFuYWdlci5jcHAKQEAgLTM5LDYgKzM5LDE0IEBACiBuYW1lc3BhY2UgV2ViS2l0IHsKIHVz
aW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCitzdGF0aWMgUmVnaXN0cmFibGVEb21haW4gcmVnaXN0
cmFibGVEb21haW5Gb3JQYWdlKFdlYlBhZ2UmIHBhZ2UpCit7CisgICAgYXV0byogZG9jdW1lbnQg
PSBwYWdlLmNvcmVQYWdlKCkgPyBwYWdlLmNvcmVQYWdlKCktPm1haW5GcmFtZSgpLmRvY3VtZW50
KCkgOiBudWxscHRyOworICAgIGlmICghZG9jdW1lbnQpCisgICAgICAgIHJldHVybiBSZWdpc3Ry
YWJsZURvbWFpbiB7IH07CisgICAgcmV0dXJuIFJlZ2lzdHJhYmxlRG9tYWluIHsgZG9jdW1lbnQt
PnVybCgpIH07Cit9CisKIGNvbnN0IGNoYXIqIFdlYkdlb2xvY2F0aW9uTWFuYWdlcjo6c3VwcGxl
bWVudE5hbWUoKQogewogICAgIHJldHVybiAiV2ViR2VvbG9jYXRpb25NYW5hZ2VyIjsKQEAgLTUw
LDg4ICs1OCwxMjUgQEAgV2ViR2VvbG9jYXRpb25NYW5hZ2VyOjpXZWJHZW9sb2NhdGlvbk1hbmFn
ZXIoV2ViUHJvY2VzcyYgcHJvY2VzcykKICAgICBtX3Byb2Nlc3MuYWRkTWVzc2FnZVJlY2VpdmVy
KE1lc3NhZ2VzOjpXZWJHZW9sb2NhdGlvbk1hbmFnZXI6Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSwg
KnRoaXMpOwogfQogCi12b2lkIFdlYkdlb2xvY2F0aW9uTWFuYWdlcjo6cmVnaXN0ZXJXZWJQYWdl
KFdlYlBhZ2UmIHBhZ2UsIGNvbnN0IFN0cmluZyYgYXV0aG9yaXphdGlvblRva2VuKQorV2ViR2Vv
bG9jYXRpb25NYW5hZ2VyOjp+V2ViR2VvbG9jYXRpb25NYW5hZ2VyKCkgPSBkZWZhdWx0OworCit2
b2lkIFdlYkdlb2xvY2F0aW9uTWFuYWdlcjo6cmVnaXN0ZXJXZWJQYWdlKFdlYlBhZ2UmIHBhZ2Us
IGNvbnN0IFN0cmluZyYgYXV0aG9yaXphdGlvblRva2VuLCBib29sIG5lZWRzSGlnaEFjY3VyYWN5
KQogewotICAgIGJvb2wgd2FzVXBkYXRpbmcgPSBpc1VwZGF0aW5nKCk7CisgICAgYXV0byByZWdp
c3RyYWJsZURvbWFpbiA9IHJlZ2lzdHJhYmxlRG9tYWluRm9yUGFnZShwYWdlKTsKKyAgICBpZiAo
cmVnaXN0cmFibGVEb21haW4uaXNFbXB0eSgpKQorICAgICAgICByZXR1cm47CisKKyAgICBhdXRv
JiBwYWdlU2V0cyA9IG1fcGFnZVNldHMuZW5zdXJlKHJlZ2lzdHJhYmxlRG9tYWluLCBbXSB7Cisg
ICAgICAgIHJldHVybiBQYWdlU2V0cyB7IH07CisgICAgfSkuaXRlcmF0b3ItPnZhbHVlOworICAg
IGJvb2wgd2FzVXBkYXRpbmcgPSAhcGFnZVNldHMucGFnZVNldC5jb21wdXRlc0VtcHR5KCk7CiAK
LSAgICBtX3BhZ2VTZXQuYWRkKHBhZ2UpOworICAgIHBhZ2VTZXRzLnBhZ2VTZXQuYWRkKHBhZ2Up
OworICAgIGlmIChuZWVkc0hpZ2hBY2N1cmFjeSkKKyAgICAgICAgcGFnZVNldHMuaGlnaEFjY3Vy
YWN5UGFnZVNldC5hZGQocGFnZSk7CisgICAgbV9wYWdlVG9SZWdpc3RyYWJsZURvbWFpbi5hZGQo
JnBhZ2UsIHJlZ2lzdHJhYmxlRG9tYWluKTsKIAogICAgIGlmICghd2FzVXBkYXRpbmcpCi0gICAg
ICAgIG1fcHJvY2Vzcy5wYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpLT5zZW5kKE1lc3NhZ2VzOjpX
ZWJHZW9sb2NhdGlvbk1hbmFnZXJQcm94eTo6U3RhcnRVcGRhdGluZyhwYWdlLndlYlBhZ2VQcm94
eUlkZW50aWZpZXIoKSwgYXV0aG9yaXphdGlvblRva2VuKSwgMCk7CisgICAgICAgIG1fcHJvY2Vz
cy5wYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpLT5zZW5kKE1lc3NhZ2VzOjpXZWJHZW9sb2NhdGlv
bk1hbmFnZXJQcm94eTo6U3RhcnRVcGRhdGluZyhyZWdpc3RyYWJsZURvbWFpbiwgcGFnZS53ZWJQ
YWdlUHJveHlJZGVudGlmaWVyKCksIGF1dGhvcml6YXRpb25Ub2tlbiwgbmVlZHNIaWdoQWNjdXJh
Y3kpLCAwKTsKIH0KIAogdm9pZCBXZWJHZW9sb2NhdGlvbk1hbmFnZXI6OnVucmVnaXN0ZXJXZWJQ
YWdlKFdlYlBhZ2UmIHBhZ2UpCiB7Ci0gICAgYm9vbCBoaWdoQWNjdXJhY3lXYXNFbmFibGVkID0g
aXNIaWdoQWNjdXJhY3lFbmFibGVkKCk7CisgICAgYXV0byByZWdpc3RyYWJsZURvbWFpbiA9IG1f
cGFnZVRvUmVnaXN0cmFibGVEb21haW4udGFrZSgmcGFnZSk7CisgICAgaWYgKHJlZ2lzdHJhYmxl
RG9tYWluLmlzRW1wdHkoKSkKKyAgICAgICAgcmV0dXJuOwogCi0gICAgbV9wYWdlU2V0LnJlbW92
ZShwYWdlKTsKLSAgICBtX2hpZ2hBY2N1cmFjeVBhZ2VTZXQucmVtb3ZlKHBhZ2UpOworICAgIGF1
dG8gaXQgPSBtX3BhZ2VTZXRzLmZpbmQocmVnaXN0cmFibGVEb21haW4pOworICAgIGlmIChpdCA9
PSBtX3BhZ2VTZXRzLmVuZCgpKQorICAgICAgICByZXR1cm47CiAKLSAgICBpZiAoIWlzVXBkYXRp
bmcoKSkKLSAgICAgICAgbV9wcm9jZXNzLnBhcmVudFByb2Nlc3NDb25uZWN0aW9uKCktPnNlbmQo
TWVzc2FnZXM6OldlYkdlb2xvY2F0aW9uTWFuYWdlclByb3h5OjpTdG9wVXBkYXRpbmcoKSwgMCk7
CisgICAgYXV0byYgcGFnZVNldHMgPSBpdC0+dmFsdWU7CisgICAgYm9vbCBoaWdoQWNjdXJhY3lX
YXNFbmFibGVkID0gIXBhZ2VTZXRzLmhpZ2hBY2N1cmFjeVBhZ2VTZXQuY29tcHV0ZXNFbXB0eSgp
OworCisgICAgcGFnZVNldHMucGFnZVNldC5yZW1vdmUocGFnZSk7CisgICAgcGFnZVNldHMuaGln
aEFjY3VyYWN5UGFnZVNldC5yZW1vdmUocGFnZSk7CisKKyAgICBpZiAocGFnZVNldHMucGFnZVNl
dC5jb21wdXRlc0VtcHR5KCkpCisgICAgICAgIG1fcHJvY2Vzcy5wYXJlbnRQcm9jZXNzQ29ubmVj
dGlvbigpLT5zZW5kKE1lc3NhZ2VzOjpXZWJHZW9sb2NhdGlvbk1hbmFnZXJQcm94eTo6U3RvcFVw
ZGF0aW5nKHJlZ2lzdHJhYmxlRG9tYWluKSwgMCk7CiAgICAgZWxzZSB7Ci0gICAgICAgIGJvb2wg
aGlnaEFjY3VyYWN5U2hvdWxkQmVFbmFibGVkID0gaXNIaWdoQWNjdXJhY3lFbmFibGVkKCk7Cisg
ICAgICAgIGJvb2wgaGlnaEFjY3VyYWN5U2hvdWxkQmVFbmFibGVkID0gIXBhZ2VTZXRzLmhpZ2hB
Y2N1cmFjeVBhZ2VTZXQuY29tcHV0ZXNFbXB0eSgpOwogICAgICAgICBpZiAoaGlnaEFjY3VyYWN5
V2FzRW5hYmxlZCAhPSBoaWdoQWNjdXJhY3lTaG91bGRCZUVuYWJsZWQpCi0gICAgICAgICAgICBt
X3Byb2Nlc3MucGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+c2VuZChNZXNzYWdlczo6V2ViR2Vv
bG9jYXRpb25NYW5hZ2VyUHJveHk6OlNldEVuYWJsZUhpZ2hBY2N1cmFjeShoaWdoQWNjdXJhY3lT
aG91bGRCZUVuYWJsZWQpLCAwKTsKKyAgICAgICAgICAgIG1fcHJvY2Vzcy5wYXJlbnRQcm9jZXNz
Q29ubmVjdGlvbigpLT5zZW5kKE1lc3NhZ2VzOjpXZWJHZW9sb2NhdGlvbk1hbmFnZXJQcm94eTo6
U2V0RW5hYmxlSGlnaEFjY3VyYWN5KHJlZ2lzdHJhYmxlRG9tYWluLCBoaWdoQWNjdXJhY3lTaG91
bGRCZUVuYWJsZWQpLCAwKTsKICAgICB9CisKKyAgICBpZiAocGFnZVNldHMucGFnZVNldC5jb21w
dXRlc0VtcHR5KCkgJiYgcGFnZVNldHMuaGlnaEFjY3VyYWN5UGFnZVNldC5jb21wdXRlc0VtcHR5
KCkpCisgICAgICAgIG1fcGFnZVNldHMucmVtb3ZlKGl0KTsKIH0KIAogdm9pZCBXZWJHZW9sb2Nh
dGlvbk1hbmFnZXI6OnNldEVuYWJsZUhpZ2hBY2N1cmFjeUZvclBhZ2UoV2ViUGFnZSYgcGFnZSwg
Ym9vbCBlbmFibGVkKQogewotICAgIGJvb2wgaGlnaEFjY3VyYWN5V2FzRW5hYmxlZCA9IGlzSGln
aEFjY3VyYWN5RW5hYmxlZCgpOworICAgIGF1dG8gcmVnaXN0cmFibGVEb21haW4gPSBtX3BhZ2VU
b1JlZ2lzdHJhYmxlRG9tYWluLmdldCgmcGFnZSk7CisgICAgaWYgKHJlZ2lzdHJhYmxlRG9tYWlu
LmlzRW1wdHkoKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgYXV0byBpdCA9IG1fcGFnZVNldHMu
ZmluZChyZWdpc3RyYWJsZURvbWFpbik7CisgICAgQVNTRVJUKGl0ICE9IG1fcGFnZVNldHMuZW5k
KCkpOworICAgIGlmIChpdCA9PSBtX3BhZ2VTZXRzLmVuZCgpKQorICAgICAgICByZXR1cm47CisK
KyAgICBhdXRvJiBwYWdlU2V0cyA9IGl0LT52YWx1ZTsKKyAgICBib29sIGhpZ2hBY2N1cmFjeVdh
c0VuYWJsZWQgPSAhcGFnZVNldHMuaGlnaEFjY3VyYWN5UGFnZVNldC5jb21wdXRlc0VtcHR5KCk7
CiAKICAgICBpZiAoZW5hYmxlZCkKLSAgICAgICAgbV9oaWdoQWNjdXJhY3lQYWdlU2V0LmFkZChw
YWdlKTsKKyAgICAgICAgcGFnZVNldHMuaGlnaEFjY3VyYWN5UGFnZVNldC5hZGQocGFnZSk7CiAg
ICAgZWxzZQotICAgICAgICBtX2hpZ2hBY2N1cmFjeVBhZ2VTZXQucmVtb3ZlKHBhZ2UpOworICAg
ICAgICBwYWdlU2V0cy5oaWdoQWNjdXJhY3lQYWdlU2V0LnJlbW92ZShwYWdlKTsKIAotICAgIGJv
b2wgaGlnaEFjY3VyYWN5U2hvdWxkQmVFbmFibGVkID0gaXNIaWdoQWNjdXJhY3lFbmFibGVkKCk7
CisgICAgYm9vbCBoaWdoQWNjdXJhY3lTaG91bGRCZUVuYWJsZWQgPSAhcGFnZVNldHMuaGlnaEFj
Y3VyYWN5UGFnZVNldC5jb21wdXRlc0VtcHR5KCk7CiAgICAgaWYgKGhpZ2hBY2N1cmFjeVdhc0Vu
YWJsZWQgIT0gaGlnaEFjY3VyYWN5U2hvdWxkQmVFbmFibGVkKQotICAgICAgICBtX3Byb2Nlc3Mu
cGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+c2VuZChNZXNzYWdlczo6V2ViR2VvbG9jYXRpb25N
YW5hZ2VyUHJveHk6OlNldEVuYWJsZUhpZ2hBY2N1cmFjeShoaWdoQWNjdXJhY3lTaG91bGRCZUVu
YWJsZWQpLCAwKTsKKyAgICAgICAgbV9wcm9jZXNzLnBhcmVudFByb2Nlc3NDb25uZWN0aW9uKCkt
PnNlbmQoTWVzc2FnZXM6OldlYkdlb2xvY2F0aW9uTWFuYWdlclByb3h5OjpTZXRFbmFibGVIaWdo
QWNjdXJhY3kocmVnaXN0cmFibGVEb21haW4sIGhpZ2hBY2N1cmFjeVNob3VsZEJlRW5hYmxlZCks
IDApOwogfQogCi12b2lkIFdlYkdlb2xvY2F0aW9uTWFuYWdlcjo6ZGlkQ2hhbmdlUG9zaXRpb24o
Y29uc3QgR2VvbG9jYXRpb25Qb3NpdGlvbkRhdGEmIHBvc2l0aW9uKQordm9pZCBXZWJHZW9sb2Nh
dGlvbk1hbmFnZXI6OmRpZENoYW5nZVBvc2l0aW9uKGNvbnN0IFdlYkNvcmU6OlJlZ2lzdHJhYmxl
RG9tYWluJiByZWdpc3RyYWJsZURvbWFpbiwgY29uc3QgR2VvbG9jYXRpb25Qb3NpdGlvbkRhdGEm
IHBvc2l0aW9uKQogewogI2lmIEVOQUJMRShHRU9MT0NBVElPTikKLSAgICBmb3IgKGF1dG8mIHBh
Z2UgOiBjb3B5VG9WZWN0b3IobV9wYWdlU2V0KSkgewotICAgICAgICBpZiAocGFnZS0+Y29yZVBh
Z2UoKSkKLSAgICAgICAgICAgIEdlb2xvY2F0aW9uQ29udHJvbGxlcjo6ZnJvbShwYWdlLT5jb3Jl
UGFnZSgpKS0+cG9zaXRpb25DaGFuZ2VkKHBvc2l0aW9uKTsKKyAgICBpZiAoYXV0byBpdCA9IG1f
cGFnZVNldHMuZmluZChyZWdpc3RyYWJsZURvbWFpbik7IGl0ICE9IG1fcGFnZVNldHMuZW5kKCkp
IHsKKyAgICAgICAgZm9yIChhdXRvJiBwYWdlIDogY29weVRvVmVjdG9yKGl0LT52YWx1ZS5wYWdl
U2V0KSkgeworICAgICAgICAgICAgaWYgKHBhZ2UtPmNvcmVQYWdlKCkpCisgICAgICAgICAgICAg
ICAgR2VvbG9jYXRpb25Db250cm9sbGVyOjpmcm9tKHBhZ2UtPmNvcmVQYWdlKCkpLT5wb3NpdGlv
bkNoYW5nZWQocG9zaXRpb24pOworICAgICAgICB9CiAgICAgfQogI2Vsc2UKKyAgICBVTlVTRURf
UEFSQU0ocmVnaXN0cmFibGVEb21haW4pOwogICAgIFVOVVNFRF9QQVJBTShwb3NpdGlvbik7CiAj
ZW5kaWYgLy8gRU5BQkxFKEdFT0xPQ0FUSU9OKQogfQogCi12b2lkIFdlYkdlb2xvY2F0aW9uTWFu
YWdlcjo6ZGlkRmFpbFRvRGV0ZXJtaW5lUG9zaXRpb24oY29uc3QgU3RyaW5nJiBlcnJvck1lc3Nh
Z2UpCit2b2lkIFdlYkdlb2xvY2F0aW9uTWFuYWdlcjo6ZGlkRmFpbFRvRGV0ZXJtaW5lUG9zaXRp
b24oY29uc3QgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4mIHJlZ2lzdHJhYmxlRG9tYWluLCBj
b25zdCBTdHJpbmcmIGVycm9yTWVzc2FnZSkKIHsKICNpZiBFTkFCTEUoR0VPTE9DQVRJT04pCi0g
ICAgLy8gRklYTUU6IEFkZCBsb2NhbGl6ZWQgZXJyb3Igc3RyaW5nLgotICAgIGF1dG8gZXJyb3Ig
PSBHZW9sb2NhdGlvbkVycm9yOjpjcmVhdGUoR2VvbG9jYXRpb25FcnJvcjo6UG9zaXRpb25VbmF2
YWlsYWJsZSwgZXJyb3JNZXNzYWdlKTsKLQotICAgIGZvciAoYXV0byYgcGFnZSA6IGNvcHlUb1Zl
Y3RvcihtX3BhZ2VTZXQpKSB7Ci0gICAgICAgIGlmIChwYWdlLT5jb3JlUGFnZSgpKQotICAgICAg
ICAgICAgR2VvbG9jYXRpb25Db250cm9sbGVyOjpmcm9tKHBhZ2UtPmNvcmVQYWdlKCkpLT5lcnJv
ck9jY3VycmVkKGVycm9yLmdldCgpKTsKKyAgICBpZiAoYXV0byBpdCA9IG1fcGFnZVNldHMuZmlu
ZChyZWdpc3RyYWJsZURvbWFpbik7IGl0ICE9IG1fcGFnZVNldHMuZW5kKCkpIHsKKyAgICAgICAg
Ly8gRklYTUU6IEFkZCBsb2NhbGl6ZWQgZXJyb3Igc3RyaW5nLgorICAgICAgICBhdXRvIGVycm9y
ID0gR2VvbG9jYXRpb25FcnJvcjo6Y3JlYXRlKEdlb2xvY2F0aW9uRXJyb3I6OlBvc2l0aW9uVW5h
dmFpbGFibGUsIGVycm9yTWVzc2FnZSk7CisKKyAgICAgICAgZm9yIChhdXRvJiBwYWdlIDogY29w
eVRvVmVjdG9yKGl0LT52YWx1ZS5wYWdlU2V0KSkgeworICAgICAgICAgICAgaWYgKHBhZ2UtPmNv
cmVQYWdlKCkpCisgICAgICAgICAgICAgICAgR2VvbG9jYXRpb25Db250cm9sbGVyOjpmcm9tKHBh
Z2UtPmNvcmVQYWdlKCkpLT5lcnJvck9jY3VycmVkKGVycm9yLmdldCgpKTsKKyAgICAgICAgfQog
ICAgIH0KICNlbHNlCisgICAgVU5VU0VEX1BBUkFNKHJlZ2lzdHJhYmxlRG9tYWluKTsKICAgICBV
TlVTRURfUEFSQU0oZXJyb3JNZXNzYWdlKTsKICNlbmRpZiAvLyBFTkFCTEUoR0VPTE9DQVRJT04p
CiB9CiAKICNpZiBQTEFURk9STShJT1NfRkFNSUxZKQotdm9pZCBXZWJHZW9sb2NhdGlvbk1hbmFn
ZXI6OnJlc2V0UGVybWlzc2lvbnMoKQordm9pZCBXZWJHZW9sb2NhdGlvbk1hbmFnZXI6OnJlc2V0
UGVybWlzc2lvbnMoY29uc3QgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4mIHJlZ2lzdHJhYmxl
RG9tYWluKQogewotICAgIG1fcHJvY2Vzcy5yZXNldEFsbEdlb2xvY2F0aW9uUGVybWlzc2lvbnMo
KTsKLX0KLSNlbmRpZiAvLyBQTEFURk9STShJT1NfRkFNSUxZKQorICAgIGF1dG8gaXQgPSBtX3Bh
Z2VTZXRzLmZpbmQocmVnaXN0cmFibGVEb21haW4pOworICAgIGlmIChpdCAhPSBtX3BhZ2VTZXRz
LmVuZCgpKQorICAgICAgICByZXR1cm47CiAKLWJvb2wgV2ViR2VvbG9jYXRpb25NYW5hZ2VyOjpp
c1VwZGF0aW5nKCkgY29uc3QKLXsKLSAgICByZXR1cm4gIW1fcGFnZVNldC5jb21wdXRlc0VtcHR5
KCk7Ci19Ci0KLWJvb2wgV2ViR2VvbG9jYXRpb25NYW5hZ2VyOjppc0hpZ2hBY2N1cmFjeUVuYWJs
ZWQoKSBjb25zdAotewotICAgIHJldHVybiAhbV9oaWdoQWNjdXJhY3lQYWdlU2V0LmNvbXB1dGVz
RW1wdHkoKTsKKyAgICBmb3IgKGF1dG8mIHBhZ2UgOiBjb3B5VG9WZWN0b3IoaXQtPnZhbHVlLnBh
Z2VTZXQpKSB7CisgICAgICAgIGlmIChhdXRvKiBtYWluRnJhbWUgPSBwYWdlLT5jb3JlUGFnZSgp
ID8gJnBhZ2UtPmNvcmVQYWdlKCktPm1haW5GcmFtZSgpIDogbnVsbHB0cikKKyAgICAgICAgICAg
IG1haW5GcmFtZS0+cmVzZXRBbGxHZW9sb2NhdGlvblBlcm1pc3Npb24oKTsKKyAgICB9CiB9Cisj
ZW5kaWYgLy8gUExBVEZPUk0oSU9TX0ZBTUlMWSkKIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR2VvbG9jYXRpb24vV2ViR2VvbG9j
YXRpb25NYW5hZ2VyLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR2VvbG9jYXRpb24vV2Vi
R2VvbG9jYXRpb25NYW5hZ2VyLmgKaW5kZXggNDQ4MzU5NjM1ODc4MjE5N2NjYmE1OTI4ZWZlNjI1
MTUyNmMxODUxNS4uNTk0YjJjZWI2OWU2OGRmNTJiZTExNTNiZjViMjU4NThlMmU5YjI3ZCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dlb2xvY2F0aW9uL1dlYkdlb2xvY2F0
aW9uTWFuYWdlci5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HZW9sb2NhdGlvbi9X
ZWJHZW9sb2NhdGlvbk1hbmFnZXIuaApAQCAtMjgsNiArMjgsNyBAQAogI2luY2x1ZGUgIk1lc3Nh
Z2VSZWNlaXZlci5oIgogI2luY2x1ZGUgIldlYkdlb2xvY2F0aW9uUG9zaXRpb24uaCIKICNpbmNs
dWRlICJXZWJQcm9jZXNzU3VwcGxlbWVudC5oIgorI2luY2x1ZGUgPFdlYkNvcmUvUmVnaXN0cmFi
bGVEb21haW4uaD4KICNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgogI2luY2x1ZGUgPHd0Zi9Ob25j
b3B5YWJsZS5oPgogI2luY2x1ZGUgPHd0Zi9XZWFrSGFzaFNldC5oPgpAQCAtNDcsMzEgKzQ4LDMx
IEBAIGNsYXNzIFdlYkdlb2xvY2F0aW9uTWFuYWdlciA6IHB1YmxpYyBXZWJQcm9jZXNzU3VwcGxl
bWVudCwgcHVibGljIElQQzo6TWVzc2FnZVJlCiAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoV2Vi
R2VvbG9jYXRpb25NYW5hZ2VyKTsKIHB1YmxpYzoKICAgICBleHBsaWNpdCBXZWJHZW9sb2NhdGlv
bk1hbmFnZXIoV2ViUHJvY2VzcyYpOworICAgIH5XZWJHZW9sb2NhdGlvbk1hbmFnZXIoKTsKIAog
ICAgIHN0YXRpYyBjb25zdCBjaGFyKiBzdXBwbGVtZW50TmFtZSgpOwogCi0gICAgdm9pZCByZWdp
c3RlcldlYlBhZ2UoV2ViUGFnZSYsIGNvbnN0IFN0cmluZyYgYXV0aG9yaXphdGlvblRva2VuKTsK
KyAgICB2b2lkIHJlZ2lzdGVyV2ViUGFnZShXZWJQYWdlJiwgY29uc3QgU3RyaW5nJiBhdXRob3Jp
emF0aW9uVG9rZW4sIGJvb2wgbmVlZHNIaWdoQWNjdXJhY3kpOwogICAgIHZvaWQgdW5yZWdpc3Rl
cldlYlBhZ2UoV2ViUGFnZSYpOwogICAgIHZvaWQgc2V0RW5hYmxlSGlnaEFjY3VyYWN5Rm9yUGFn
ZShXZWJQYWdlJiwgYm9vbCk7CiAKLSAgICB2b2lkIHJlcXVlc3RQZXJtaXNzaW9uKFdlYkNvcmU6
Okdlb2xvY2F0aW9uJik7Ci0KIHByaXZhdGU6CiAgICAgLy8gSVBDOjpNZXNzYWdlUmVjZWl2ZXIK
ICAgICB2b2lkIGRpZFJlY2VpdmVNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYsIElQQzo6RGVjb2Rl
ciYpIG92ZXJyaWRlOwogCi0gICAgYm9vbCBpc1VwZGF0aW5nKCkgY29uc3Q7Ci0gICAgYm9vbCBp
c0hpZ2hBY2N1cmFjeUVuYWJsZWQoKSBjb25zdDsKLQotICAgIHZvaWQgZGlkQ2hhbmdlUG9zaXRp
b24oY29uc3QgV2ViQ29yZTo6R2VvbG9jYXRpb25Qb3NpdGlvbkRhdGEmKTsKLSAgICB2b2lkIGRp
ZEZhaWxUb0RldGVybWluZVBvc2l0aW9uKGNvbnN0IFN0cmluZyYgZXJyb3JNZXNzYWdlKTsKKyAg
ICB2b2lkIGRpZENoYW5nZVBvc2l0aW9uKGNvbnN0IFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWlu
JiwgY29uc3QgV2ViQ29yZTo6R2VvbG9jYXRpb25Qb3NpdGlvbkRhdGEmKTsKKyAgICB2b2lkIGRp
ZEZhaWxUb0RldGVybWluZVBvc2l0aW9uKGNvbnN0IFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWlu
JiwgY29uc3QgU3RyaW5nJiBlcnJvck1lc3NhZ2UpOwogI2lmIFBMQVRGT1JNKElPU19GQU1JTFkp
Ci0gICAgdm9pZCByZXNldFBlcm1pc3Npb25zKCk7CisgICAgdm9pZCByZXNldFBlcm1pc3Npb25z
KGNvbnN0IFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluJik7CiAjZW5kaWYgLy8gUExBVEZPUk0o
SU9TX0ZBTUlMWSkKIAogICAgIFdlYlByb2Nlc3MmIG1fcHJvY2VzczsKLSAgICBXZWFrSGFzaFNl
dDxXZWJQYWdlPiBtX3BhZ2VTZXQ7Ci0gICAgV2Vha0hhc2hTZXQ8V2ViUGFnZT4gbV9oaWdoQWNj
dXJhY3lQYWdlU2V0OworICAgIHN0cnVjdCBQYWdlU2V0cyB7CisgICAgICAgIFdlYWtIYXNoU2V0
PFdlYlBhZ2U+IHBhZ2VTZXQ7CisgICAgICAgIFdlYWtIYXNoU2V0PFdlYlBhZ2U+IGhpZ2hBY2N1
cmFjeVBhZ2VTZXQ7CisgICAgfTsKKyAgICBIYXNoTWFwPFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9t
YWluLCBQYWdlU2V0cz4gbV9wYWdlU2V0czsKKyAgICBIYXNoTWFwPFdlYlBhZ2UqLCBXZWJDb3Jl
OjpSZWdpc3RyYWJsZURvbWFpbj4gbV9wYWdlVG9SZWdpc3RyYWJsZURvbWFpbjsKIH07CiAKIH0g
Ly8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L0dlb2xvY2F0aW9uL1dlYkdlb2xvY2F0aW9uTWFuYWdlci5tZXNzYWdlcy5pbiBiL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9HZW9sb2NhdGlvbi9XZWJHZW9sb2NhdGlvbk1hbmFnZXIubWVzc2Fn
ZXMuaW4KaW5kZXggNzlmM2I0Y2U0ZWZjYWYzNDg4NTdkOTkzMzI1M2Q4OTU0ZjBmMWI4Ny4uNmZj
YzYwZDJlMDhlMjZlYWI3M2MxZjcxY2Q4ODQyZGM1MTA1MmQxOCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL0dlb2xvY2F0aW9uL1dlYkdlb2xvY2F0aW9uTWFuYWdlci5tZXNz
YWdlcy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR2VvbG9jYXRpb24vV2ViR2Vv
bG9jYXRpb25NYW5hZ2VyLm1lc3NhZ2VzLmluCkBAIC0yMSw5ICsyMSw5IEBACiAjIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCiAKIG1lc3NhZ2VzIC0+IFdlYkdlb2xvY2F0aW9uTWFuYWdlciBOb3RSZWZDb3VudGVkIHsK
LSAgICBEaWRDaGFuZ2VQb3NpdGlvbihXZWJDb3JlOjpHZW9sb2NhdGlvblBvc2l0aW9uRGF0YSBw
b3NpdGlvbik7Ci0gICAgRGlkRmFpbFRvRGV0ZXJtaW5lUG9zaXRpb24oU3RyaW5nIGVycm9yTWVz
c2FnZSk7CisgICAgRGlkQ2hhbmdlUG9zaXRpb24oV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4g
cmVnaXN0cmFibGVEb21haW4sIFdlYkNvcmU6Okdlb2xvY2F0aW9uUG9zaXRpb25EYXRhIHBvc2l0
aW9uKTsKKyAgICBEaWRGYWlsVG9EZXRlcm1pbmVQb3NpdGlvbihXZWJDb3JlOjpSZWdpc3RyYWJs
ZURvbWFpbiByZWdpc3RyYWJsZURvbWFpbiwgU3RyaW5nIGVycm9yTWVzc2FnZSk7CiAjaWYgUExB
VEZPUk0oSU9TX0ZBTUlMWSkKLSAgICBSZXNldFBlcm1pc3Npb25zKCk7CisgICAgUmVzZXRQZXJt
aXNzaW9ucyhXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiByZWdpc3RyYWJsZURvbWFpbik7CiAj
ZW5kaWYKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3Vw
cG9ydC9XZWJHZW9sb2NhdGlvbkNsaWVudC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
V2ViQ29yZVN1cHBvcnQvV2ViR2VvbG9jYXRpb25DbGllbnQuY3BwCmluZGV4IGVhMDJmMmFjMTZm
NzMxYmY1NjQyZjg2NzhkODZhNDk4MTFkOGMzODYuLmQxOGRmN2VmYWY1NmVmY2ZjOGQxNjk5Yzkx
Y2QyNmI2ODliYzgyNmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJD
b3JlU3VwcG9ydC9XZWJHZW9sb2NhdGlvbkNsaWVudC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkdlb2xvY2F0aW9uQ2xpZW50LmNwcApAQCAtNDgs
OSArNDgsOSBAQCB2b2lkIFdlYkdlb2xvY2F0aW9uQ2xpZW50OjpnZW9sb2NhdGlvbkRlc3Ryb3ll
ZCgpCiAgICAgZGVsZXRlIHRoaXM7CiB9CiAKLXZvaWQgV2ViR2VvbG9jYXRpb25DbGllbnQ6OnN0
YXJ0VXBkYXRpbmcoY29uc3QgU3RyaW5nJiBhdXRob3JpemF0aW9uVG9rZW4pCit2b2lkIFdlYkdl
b2xvY2F0aW9uQ2xpZW50OjpzdGFydFVwZGF0aW5nKGNvbnN0IFN0cmluZyYgYXV0aG9yaXphdGlv
blRva2VuLCBib29sIG5lZWRzSGlnaEFjY3VyYWN5KQogewotICAgIFdlYlByb2Nlc3M6OnNpbmds
ZXRvbigpLnN1cHBsZW1lbnQ8V2ViR2VvbG9jYXRpb25NYW5hZ2VyPigpLT5yZWdpc3RlcldlYlBh
Z2UobV9wYWdlLCBhdXRob3JpemF0aW9uVG9rZW4pOworICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRv
bigpLnN1cHBsZW1lbnQ8V2ViR2VvbG9jYXRpb25NYW5hZ2VyPigpLT5yZWdpc3RlcldlYlBhZ2Uo
bV9wYWdlLCBhdXRob3JpemF0aW9uVG9rZW4sIG5lZWRzSGlnaEFjY3VyYWN5KTsKIH0KIAogdm9p
ZCBXZWJHZW9sb2NhdGlvbkNsaWVudDo6c3RvcFVwZGF0aW5nKCkKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJHZW9sb2NhdGlvbkNsaWVudC5o
IGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkdlb2xvY2F0aW9u
Q2xpZW50LmgKaW5kZXggYjE2ODE2NzQ4OTYyMjU0N2VjOTRlNjc5OGZiNjlkZDhmYTZkMDExYy4u
NjVlYzBlOTM1NDI4M2Q1ZmE3N2FmMTBiNGUxODBiODcxMmZhZWYwNyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkdlb2xvY2F0aW9uQ2xpZW50
LmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkdlb2xv
Y2F0aW9uQ2xpZW50LmgKQEAgLTMxLDcgKzMxLDcgQEAgbmFtZXNwYWNlIFdlYktpdCB7CiAKIGNs
YXNzIFdlYlBhZ2U7CiAKLWNsYXNzIFdlYkdlb2xvY2F0aW9uQ2xpZW50IDogcHVibGljIFdlYkNv
cmU6Okdlb2xvY2F0aW9uQ2xpZW50IHsKK2NsYXNzIFdlYkdlb2xvY2F0aW9uQ2xpZW50IGZpbmFs
IDogcHVibGljIFdlYkNvcmU6Okdlb2xvY2F0aW9uQ2xpZW50IHsKICAgICBXVEZfTUFLRV9GQVNU
X0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBXZWJHZW9sb2NhdGlvbkNsaWVudChXZWJQYWdlJiBw
YWdlKQpAQCAtNDIsMTcgKzQyLDE3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIH5XZWJHZW9sb2Nh
dGlvbkNsaWVudCgpOwogCiBwcml2YXRlOgotICAgIHZvaWQgZ2VvbG9jYXRpb25EZXN0cm95ZWQo
KSBvdmVycmlkZTsKKyAgICB2b2lkIGdlb2xvY2F0aW9uRGVzdHJveWVkKCkgZmluYWw7CiAKLSAg
ICB2b2lkIHN0YXJ0VXBkYXRpbmcoY29uc3QgU3RyaW5nJiBhdXRob3JpemF0aW9uVG9rZW4pIG92
ZXJyaWRlOwotICAgIHZvaWQgc3RvcFVwZGF0aW5nKCkgb3ZlcnJpZGU7Ci0gICAgdm9pZCByZXZv
a2VBdXRob3JpemF0aW9uVG9rZW4oY29uc3QgU3RyaW5nJikgb3ZlcnJpZGU7Ci0gICAgdm9pZCBz
ZXRFbmFibGVIaWdoQWNjdXJhY3koYm9vbCkgb3ZlcnJpZGU7CisgICAgdm9pZCBzdGFydFVwZGF0
aW5nKGNvbnN0IFN0cmluZyYgYXV0aG9yaXphdGlvblRva2VuLCBib29sIG5lZWRzSGlnaEFjY3Vy
YWN5KSBmaW5hbDsKKyAgICB2b2lkIHN0b3BVcGRhdGluZygpIGZpbmFsOworICAgIHZvaWQgcmV2
b2tlQXV0aG9yaXphdGlvblRva2VuKGNvbnN0IFN0cmluZyYpIGZpbmFsOworICAgIHZvaWQgc2V0
RW5hYmxlSGlnaEFjY3VyYWN5KGJvb2wpIGZpbmFsOwogCi0gICAgc3RkOjpvcHRpb25hbDxXZWJD
b3JlOjpHZW9sb2NhdGlvblBvc2l0aW9uRGF0YT4gbGFzdFBvc2l0aW9uKCkgb3ZlcnJpZGU7Cisg
ICAgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpHZW9sb2NhdGlvblBvc2l0aW9uRGF0YT4gbGFzdFBv
c2l0aW9uKCkgZmluYWw7CiAKLSAgICB2b2lkIHJlcXVlc3RQZXJtaXNzaW9uKFdlYkNvcmU6Okdl
b2xvY2F0aW9uJikgb3ZlcnJpZGU7Ci0gICAgdm9pZCBjYW5jZWxQZXJtaXNzaW9uUmVxdWVzdChX
ZWJDb3JlOjpHZW9sb2NhdGlvbiYpIG92ZXJyaWRlOworICAgIHZvaWQgcmVxdWVzdFBlcm1pc3Np
b24oV2ViQ29yZTo6R2VvbG9jYXRpb24mKSBmaW5hbDsKKyAgICB2b2lkIGNhbmNlbFBlcm1pc3Np
b25SZXF1ZXN0KFdlYkNvcmU6Okdlb2xvY2F0aW9uJikgZmluYWw7CiAKICAgICBXZWJQYWdlJiBt
X3BhZ2U7CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlByb2Nl
c3MuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3BwCmluZGV4IGRk
NDViNDU4OGJmOWRkMTI0ZTE4ZmFhOTVhMzI2ZWQzMTkzMWE0NTcuLjc5OTYxM2QzNzc0MjM2M2Jm
YmRjZDk1Mjk3OTk2MjIwNmYwMjI4YTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9XZWJQcm9jZXNzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJv
Y2Vzcy5jcHAKQEAgLTE1MjcsMTYgKzE1MjcsNiBAQCB2b2lkIFdlYlByb2Nlc3M6OnBhZ2VBY3Rp
dml0eVN0YXRlRGlkQ2hhbmdlKFBhZ2VJZGVudGlmaWVyLCBPcHRpb25TZXQ8V2ViQ29yZTo6QQog
ICAgIH0KIH0KIAotI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCi12b2lkIFdlYlByb2Nlc3M6OnJl
c2V0QWxsR2VvbG9jYXRpb25QZXJtaXNzaW9ucygpCi17Ci0gICAgZm9yIChhdXRvJiBwYWdlIDog
bV9wYWdlTWFwLnZhbHVlcygpKSB7Ci0gICAgICAgIGlmIChGcmFtZSogbWFpbkZyYW1lID0gcGFn
ZS0+bWFpbkZyYW1lKCkpCi0gICAgICAgICAgICBtYWluRnJhbWUtPnJlc2V0QWxsR2VvbG9jYXRp
b25QZXJtaXNzaW9uKCk7Ci0gICAgfQotfQotI2VuZGlmCi0KIHZvaWQgV2ViUHJvY2Vzczo6cHJl
cGFyZVRvU3VzcGVuZChib29sIGlzU3VzcGVuc2lvbkltbWluZW50LCBDb21wbGV0aW9uSGFuZGxl
cjx2b2lkKCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7CiAgICAgV0VCUFJPQ0VTU19SRUxFQVNF
X0xPRyhQcm9jZXNzU3VzcGVuc2lvbiwgInByZXBhcmVUb1N1c3BlbmQ6IGlzU3VzcGVuc2lvbklt
bWluZW50PSVkIiwgaXNTdXNwZW5zaW9uSW1taW5lbnQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9X
ZWJQcm9jZXNzLmgKaW5kZXggYzVkZDIyNWRjMWI3MWRhOWNkZDRlZWRiYTBhMDdlNzYxNzgxNTc1
ZS4uNTk1YWYwYjk3NDEyOTBkYTZjNzM0YTA4ODZiODI0ZDIzYjFlZTU3ZSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuaAorKysgYi9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5oCkBAIC0zMTAsMTAgKzMxMCw2IEBAIHB1YmxpYzoKIAog
ICAgIHZvaWQgaXNKSVRFbmFibGVkKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYpOwog
Ci0jaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKLSAgICB2b2lkIHJlc2V0QWxsR2VvbG9jYXRpb25Q
ZXJtaXNzaW9ucygpOwotI2VuZGlmCi0KICNpZiBQTEFURk9STShXQVlMQU5EKQogICAgIFdheWxh
bmRDb21wb3NpdG9yRGlzcGxheSogd2F5bGFuZENvbXBvc2l0b3JEaXNwbGF5KCkgY29uc3QgeyBy
ZXR1cm4gbV93YXlsYW5kQ29tcG9zaXRvckRpc3BsYXkuZ2V0KCk7IH0KICNlbmRpZgpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViR2VvbG9jYXRp
b25DbGllbnQuaCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkdl
b2xvY2F0aW9uQ2xpZW50LmgKaW5kZXggNzdjMjgyOGQ4NTk1MzYzNWI2NGM0Yzg5OTk5MGEwYTY0
ODE3MWI2Yy4uYjA3Yzc5MDNkMjkyYTkzMzkxZTVjNDBhZWRkNjVkZWRiYWY4YzVmMSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViR2VvbG9jYXRp
b25DbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9X
ZWJHZW9sb2NhdGlvbkNsaWVudC5oCkBAIC0zOSw3ICszOSw3IEBAIHB1YmxpYzoKICAgICBXZWJW
aWV3ICp3ZWJWaWV3KCkgeyByZXR1cm4gbV93ZWJWaWV3OyB9CiAKICAgICB2b2lkIGdlb2xvY2F0
aW9uRGVzdHJveWVkKCkgb3ZlcnJpZGU7Ci0gICAgdm9pZCBzdGFydFVwZGF0aW5nKGNvbnN0IFN0
cmluZyYgYXV0aG9yaXphdGlvblRva2VuKSBvdmVycmlkZTsKKyAgICB2b2lkIHN0YXJ0VXBkYXRp
bmcoY29uc3QgU3RyaW5nJiBhdXRob3JpemF0aW9uVG9rZW4sIGJvb2wgZW5hYmxlSGlnaEFjY3Vy
YWN5KSBvdmVycmlkZTsKICAgICB2b2lkIHN0b3BVcGRhdGluZygpIG92ZXJyaWRlOwogI2lmIFBM
QVRGT1JNKElPU19GQU1JTFkpCiAgICAgLy8gRklYTUU6IHVuaWZ5IHRoaXMgd2l0aCBNYWMgb24g
T3BlblNvdXJjZS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVT
dXBwb3J0L1dlYkdlb2xvY2F0aW9uQ2xpZW50Lm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMv
V2ViQ29yZVN1cHBvcnQvV2ViR2VvbG9jYXRpb25DbGllbnQubW0KaW5kZXggZTc4OGE1N2RkNmY4
MDdlN2IyNWM3NDJiYTgwMTkzNTdhMjczNGQzOC4uYThiODUyMWUyZGE0NzE4ZGMxNGI0MzcwYjFh
NWI0YjhkNjMyODU4OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29y
ZVN1cHBvcnQvV2ViR2VvbG9jYXRpb25DbGllbnQubW0KKysrIGIvU291cmNlL1dlYktpdExlZ2Fj
eS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViR2VvbG9jYXRpb25DbGllbnQubW0KQEAgLTgzLDkgKzgz
LDE2IEBAIHZvaWQgV2ViR2VvbG9jYXRpb25DbGllbnQ6Omdlb2xvY2F0aW9uRGVzdHJveWVkKCkK
ICAgICBkZWxldGUgdGhpczsKIH0KIAotdm9pZCBXZWJHZW9sb2NhdGlvbkNsaWVudDo6c3RhcnRV
cGRhdGluZyhjb25zdCBTdHJpbmcmIGF1dGhvcml6YXRpb25Ub2tlbikKK3ZvaWQgV2ViR2VvbG9j
YXRpb25DbGllbnQ6OnN0YXJ0VXBkYXRpbmcoY29uc3QgU3RyaW5nJiBhdXRob3JpemF0aW9uVG9r
ZW4sIGJvb2wgZW5hYmxlSGlnaEFjY3VyYWN5KQogewogICAgIFVOVVNFRF9QQVJBTShhdXRob3Jp
emF0aW9uVG9rZW4pOworI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCisgICAgaWYgKGVuYWJsZUhp
Z2hBY2N1cmFjeSkKKyAgICAgICAgc2V0RW5hYmxlSGlnaEFjY3VyYWN5KHRydWUpOworI2Vsc2UK
KyAgICBVTlVTRURfUEFSQU0oZW5hYmxlSGlnaEFjY3VyYWN5KTsKKyNlbmRpZgorCiAgICAgW1tt
X3dlYlZpZXcgX2dlb2xvY2F0aW9uUHJvdmlkZXJdIHJlZ2lzdGVyV2ViVmlldzptX3dlYlZpZXdd
OwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJDb3JlU3VwcG9y
dC9XZWJHZW9sb2NhdGlvbkNsaWVudC5jcHAgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJD
b3JlU3VwcG9ydC9XZWJHZW9sb2NhdGlvbkNsaWVudC5jcHAKaW5kZXggZTFmY2EyNzcyNDk2MTU0
YTRlMDcwZTRkZmRhN2U3N2U5NzM1ODJjMS4uYWM1NDUxNGM2NDJlYTBlNWY4YWYzMzY5ZTFiYmJh
ZTBjMzkwNzFiNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViQ29yZVN1
cHBvcnQvV2ViR2VvbG9jYXRpb25DbGllbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kv
d2luL1dlYkNvcmVTdXBwb3J0L1dlYkdlb2xvY2F0aW9uQ2xpZW50LmNwcApAQCAtNDgsOSArNDgs
MTAgQEAgdm9pZCBXZWJHZW9sb2NhdGlvbkNsaWVudDo6Z2VvbG9jYXRpb25EZXN0cm95ZWQoKQog
ICAgIGRlbGV0ZSB0aGlzOwogfQogCi12b2lkIFdlYkdlb2xvY2F0aW9uQ2xpZW50OjpzdGFydFVw
ZGF0aW5nKGNvbnN0IFN0cmluZyYgYXV0aG9yaXphdGlvblRva2VuKQordm9pZCBXZWJHZW9sb2Nh
dGlvbkNsaWVudDo6c3RhcnRVcGRhdGluZyhjb25zdCBTdHJpbmcmIGF1dGhvcml6YXRpb25Ub2tl
biwgYm9vbCBlbmFibGVIaWdoQWNjdXJhY3kpCiB7CiAgICAgVU5VU0VEX1BBUkFNKGF1dGhvcml6
YXRpb25Ub2tlbik7CisgICAgVU5VU0VEX1BBUkFNKGVuYWJsZUhpZ2hBY2N1cmFjeSk7CiAgICAg
Q09NUHRyPElXZWJHZW9sb2NhdGlvblByb3ZpZGVyPiBwcm92aWRlcjsKICAgICBpZiAoRkFJTEVE
KG1fd2ViVmlldy0+Z2VvbG9jYXRpb25Qcm92aWRlcigmcHJvdmlkZXIpKSkKICAgICAgICAgcmV0
dXJuOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViQ29yZVN1cHBvcnQv
V2ViR2VvbG9jYXRpb25DbGllbnQuaCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkNvcmVT
dXBwb3J0L1dlYkdlb2xvY2F0aW9uQ2xpZW50LmgKaW5kZXggMTk1NzQxN2I1NWQ3ZTVkMmY5Yjcx
ZTVjOWQ5YzMwM2RmZWY0ZTE4Ni4uNWI4ZTk0NDRmMjFmZWQ0M2VkZjI1OTFhMmJhMTVkYTNiZDQ0
ZjQ0YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViQ29yZVN1cHBvcnQv
V2ViR2VvbG9jYXRpb25DbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJD
b3JlU3VwcG9ydC9XZWJHZW9sb2NhdGlvbkNsaWVudC5oCkBAIC00MSw3ICs0MSw3IEBAIHB1Ymxp
YzoKICAgICBXZWJHZW9sb2NhdGlvbkNsaWVudChXZWJWaWV3Kik7CiAKICAgICB2b2lkIGdlb2xv
Y2F0aW9uRGVzdHJveWVkKCkgZmluYWw7Ci0gICAgdm9pZCBzdGFydFVwZGF0aW5nKGNvbnN0IFN0
cmluZyYgYXV0aG9yaXphdGlvblRva2VuKSBmaW5hbDsKKyAgICB2b2lkIHN0YXJ0VXBkYXRpbmco
Y29uc3QgU3RyaW5nJiBhdXRob3JpemF0aW9uVG9rZW4sIGJvb2wgZW5hYmxlSGlnaEFjY3VyYWN5
KSBmaW5hbDsKICAgICB2b2lkIHN0b3BVcGRhdGluZygpIGZpbmFsOwogICAgIHZvaWQgc2V0RW5h
YmxlSGlnaEFjY3VyYWN5KGJvb2wpIGZpbmFsIHsgfQogICAgIHN0ZDo6b3B0aW9uYWw8V2ViQ29y
ZTo6R2VvbG9jYXRpb25Qb3NpdGlvbkRhdGE+IGxhc3RQb3NpdGlvbigpIGZpbmFsOwo=
</data>
<flag name="commit-queue"
          id="478707"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>451844</attachid>
            <date>2022-02-13 14:21:51 -0800</date>
            <delta_ts>2022-02-13 18:11:53 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-236566-20220213142150.patch</filename>
            <type>text/plain</type>
            <size>102809</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg5Njk4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IDVjOGFhZWYzNzk5ZjJmYTJmNjY5YzFm
YWZmNTU3YTc4ZmI1YzYyMDEuLjUyZDQ3N2Q5OWEzYzNkZjIxZjhhNzBlNzU3MzkzZGVkNDc2NGMy
MTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMTUgQEAKKzIwMjItMDItMTMgIENocmlzIER1bWV6ICA8Y2R1bWV6
QGFwcGxlLmNvbT4KKworICAgICAgICBEbyBwcmVsaW1pbmFyeSB3b3JrIHRvIHBhc3MgZG9tYWlu
IG5hbWVzIHRvIENvcmVMb2NhdGlvbgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MjM2NTY2CisgICAgICAgIDxyZGFyOi8vODg3NjE0MTM+CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkIGJ1aWxkIHRpbWUg
ZmxhZyBmb3IgcGFzc2luZyB3ZWJzaXRlIGlkZW50aWZpZXJzIHRvIENvcmVMb2NhdGlvbi4KKwor
ICAgICAgICAqIHd0Zi9QbGF0Zm9ybUhhdmUuaDoKKwogMjAyMi0wMi0xMiAgSmVyIE5vYmxlICA8
amVyLm5vYmxlQGFwcGxlLmNvbT4KIAogICAgICAgICBBZGQgc2V0dGluZ3MgdG8gcmVzdHJpY3Qg
bWVkaWEgY29udGFpbmVycyBhbmQgY29kZWNzIHdoZW4gaW4gQ2FwdGl2ZSBQb3J0YWwgbW9kZQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkNvcmUvQ2hh
bmdlTG9nCmluZGV4IDcxMWMxMjBjYjExYTNmMzZhNTJjZDVkNGU1ZTY1ZmI5NGZmZmQ0NDIuLjg0
ZDk3MzIyNWJmMzU3MTgzYzcyNmVjM2Y5ZDljYTkxN2I5ZmY5ZWEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw1NCBAQAorMjAyMi0wMi0xMyAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgor
CisgICAgICAgIERvIHByZWxpbWluYXJ5IHdvcmsgdG8gcGFzcyBkb21haW4gbmFtZXMgdG8gQ29y
ZUxvY2F0aW9uCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0yMzY1NjYKKyAgICAgICAgPHJkYXI6Ly84ODc2MTQxMz4KKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBEbyBwcmVsaW1pbmFyeSB3b3JrIHRvIHBhc3Mg
ZG9tYWluIG5hbWVzIHRvIENvcmVMb2NhdGlvbiB3aGVuIHVzaW5nIHRoZSBHZW9sb2NhdGlvbiBB
UEkuCisgICAgICAgIFRoaXMgcGlwZXMgdGhlIGRvbWFpbiBuYW1lcyBhbGwgdGhlIHdheSBmcm9t
IHRoZSBHZW9sb2NhdGlvbiBBUEkgdG8gdGhlIENvcmVMb2NhdGlvbiBjYWxscworICAgICAgICBi
dXQgZG9lc24ndCB5ZXQgcGFzcyB0aGUgZG9tYWluIHRvIENvcmVMb2NhdGlvbiBkdWUgdG8gPHJk
YXI6Ly84ODgzNDMwMT4uIEkgd2lsbCBmb2xsb3ctdXAKKyAgICAgICAgb25jZSA8cmRhcjovLzg4
ODM0MzAxPiBpcyBmaXhlZC4KKworICAgICAgICAqIE1vZHVsZXMvZ2VvbG9jYXRpb24vR2VvbG9j
YXRpb25DbGllbnQuaDoKKyAgICAgICAgKiBNb2R1bGVzL2dlb2xvY2F0aW9uL0dlb2xvY2F0aW9u
Q29udHJvbGxlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpHZW9sb2NhdGlvbkNvbnRyb2xsZXI6
OmRpZE5hdmlnYXRlUGFnZSk6CisgICAgICAgIChXZWJDb3JlOjpHZW9sb2NhdGlvbkNvbnRyb2xs
ZXI6OmFkZE9ic2VydmVyKToKKyAgICAgICAgKFdlYkNvcmU6Okdlb2xvY2F0aW9uQ29udHJvbGxl
cjo6cmVtb3ZlT2JzZXJ2ZXIpOgorICAgICAgICAoV2ViQ29yZTo6R2VvbG9jYXRpb25Db250cm9s
bGVyOjphY3Rpdml0eVN0YXRlRGlkQ2hhbmdlKToKKyAgICAgICAgKFdlYkNvcmU6Okdlb2xvY2F0
aW9uQ29udHJvbGxlcjo6c3RhcnRVcGRhdGluZ0lmTmVjZXNzYXJ5KToKKyAgICAgICAgKFdlYkNv
cmU6Okdlb2xvY2F0aW9uQ29udHJvbGxlcjo6c3RvcFVwZGF0aW5nSWZOZWNlc3NhcnkpOgorICAg
ICAgICAqIE1vZHVsZXMvZ2VvbG9jYXRpb24vR2VvbG9jYXRpb25Db250cm9sbGVyLmg6CisgICAg
ICAgIChXZWJDb3JlOjpHZW9sb2NhdGlvbkNvbnRyb2xsZXI6Om5lZWRzSGlnaEFjY3VyYWN5IGNv
bnN0KToKKyAgICAgICAgKiBNb2R1bGVzL2dlb2xvY2F0aW9uL0dlb2xvY2F0aW9uUG9zaXRpb25E
YXRhLmg6CisgICAgICAgICogTW9kdWxlcy9nZW9sb2NhdGlvbi9pb3MvR2VvbG9jYXRpb25Qb3Np
dGlvbkRhdGFJT1MubW06CisgICAgICAgICogU291cmNlc0NvY29hLnR4dDoKKyAgICAgICAgKiBX
ZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogcGFnZS9QYWdlLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OlBhZ2U6OmRpZENvbW1pdExvYWQpOgorICAgICAgICAqIHBs
YXRmb3JtL2NvY29hL0NvcmVMb2NhdGlvbkdlb2xvY2F0aW9uUHJvdmlkZXIuaDogQ29waWVkIGZy
b20gU291cmNlL1dlYkNvcmUvTW9kdWxlcy9nZW9sb2NhdGlvbi9HZW9sb2NhdGlvbkNsaWVudC5o
LgorICAgICAgICAqIHBsYXRmb3JtL2NvY29hL0NvcmVMb2NhdGlvbkdlb2xvY2F0aW9uUHJvdmlk
ZXIubW06IEFkZGVkLgorICAgICAgICAoaXNBdXRob3JpemF0aW9uR3JhbnRlZCk6CisgICAgICAg
ICgtW1dlYkNMTG9jYXRpb25NYW5hZ2VyIGluaXRXaXRoV2Vic2l0ZUlkZW50aWZpZXI6Y2xpZW50
Ol0pOgorICAgICAgICAoLVtXZWJDTExvY2F0aW9uTWFuYWdlciBkZWFsbG9jXSk6CisgICAgICAg
ICgtW1dlYkNMTG9jYXRpb25NYW5hZ2VyIHN0YXJ0XSk6CisgICAgICAgICgtW1dlYkNMTG9jYXRp
b25NYW5hZ2VyIHN0b3BdKToKKyAgICAgICAgKC1bV2ViQ0xMb2NhdGlvbk1hbmFnZXIgc2V0RW5h
YmxlSGlnaEFjY3VyYWN5Ol0pOgorICAgICAgICAoLVtXZWJDTExvY2F0aW9uTWFuYWdlciByZXF1
ZXN0R2VvbG9jYXRpb25BdXRob3JpemF0aW9uXSk6CisgICAgICAgICgtW1dlYkNMTG9jYXRpb25N
YW5hZ2VyIGxvY2F0aW9uTWFuYWdlckRpZENoYW5nZUF1dGhvcml6YXRpb246XSk6CisgICAgICAg
ICgtW1dlYkNMTG9jYXRpb25NYW5hZ2VyIGxvY2F0aW9uTWFuYWdlcjpkaWRVcGRhdGVMb2NhdGlv
bnM6XSk6CisgICAgICAgICgtW1dlYkNMTG9jYXRpb25NYW5hZ2VyIGxvY2F0aW9uTWFuYWdlcjpk
aWRGYWlsV2l0aEVycm9yOl0pOgorICAgICAgICAoV2ViQ29yZTo6Q29yZUxvY2F0aW9uR2VvbG9j
YXRpb25Qcm92aWRlcjo6Q29yZUxvY2F0aW9uR2VvbG9jYXRpb25Qcm92aWRlcik6CisgICAgICAg
IChXZWJDb3JlOjpDb3JlTG9jYXRpb25HZW9sb2NhdGlvblByb3ZpZGVyOjp+Q29yZUxvY2F0aW9u
R2VvbG9jYXRpb25Qcm92aWRlcik6CisgICAgICAgIChXZWJDb3JlOjpDb3JlTG9jYXRpb25HZW9s
b2NhdGlvblByb3ZpZGVyOjpzdGFydCk6CisgICAgICAgIChXZWJDb3JlOjpDb3JlTG9jYXRpb25H
ZW9sb2NhdGlvblByb3ZpZGVyOjpzdG9wKToKKyAgICAgICAgKFdlYkNvcmU6OkNvcmVMb2NhdGlv
bkdlb2xvY2F0aW9uUHJvdmlkZXI6OnNldEVuYWJsZUhpZ2hBY2N1cmFjeSk6CisgICAgICAgIChX
ZWJDb3JlOjpDb3JlTG9jYXRpb25HZW9sb2NhdGlvblByb3ZpZGVyOjpyZXF1ZXN0QXV0aG9yaXph
dGlvbik6CisgICAgICAgICogcGxhdGZvcm0vbW9jay9HZW9sb2NhdGlvbkNsaWVudE1vY2suY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6R2VvbG9jYXRpb25DbGllbnRNb2NrOjpzdGFydFVwZGF0aW5n
KToKKyAgICAgICAgKiBwbGF0Zm9ybS9tb2NrL0dlb2xvY2F0aW9uQ2xpZW50TW9jay5oOgorCiAy
MDIyLTAyLTEyICBQYXRyaWNrIEFuZ2xlICA8cGFuZ2xlQGFwcGxlLmNvbT4KIAogICAgICAgICBX
ZWIgSW5zcGVjdG9yOiBbRmxleGJveF0gU2hvdyBpdGVtIGJvdW5kcywgZ2FwcywgYW5kIGZyZWUg
c3BhY2UgaW4gZmxleCBvdmVybGF5cwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9DaGFuZ2VM
b2cgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwppbmRleCA4MWMxMWI3ODVlYTg2MTJlYjI3NmQz
ODBmZGNjOTI1NmFlOTMxN2ZkLi42MWVjNzA0MDIwYTViZWI5Njc5MDM3Njk4OTBiYTk2MzI0NTAy
MWRmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2Vi
S2l0L0NoYW5nZUxvZwpAQCAtMSwzICsxLDk0IEBACisyMDIyLTAyLTEzICBDaHJpcyBEdW1leiAg
PGNkdW1lekBhcHBsZS5jb20+CisKKyAgICAgICAgRG8gcHJlbGltaW5hcnkgd29yayB0byBwYXNz
IGRvbWFpbiBuYW1lcyB0byBDb3JlTG9jYXRpb24KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTIzNjU2NgorICAgICAgICA8cmRhcjovLzg4NzYxNDEzPgor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIERvIHByZWxp
bWluYXJ5IHdvcmsgdG8gcGFzcyBkb21haW4gbmFtZXMgdG8gQ29yZUxvY2F0aW9uIHdoZW4gdXNp
bmcgdGhlIEdlb2xvY2F0aW9uIEFQSS4KKyAgICAgICAgVGhpcyBwaXBlcyB0aGUgZG9tYWluIG5h
bWVzIGFsbCB0aGUgd2F5IGZyb20gdGhlIEdlb2xvY2F0aW9uIEFQSSB0byB0aGUgQ29yZUxvY2F0
aW9uIGNhbGxzCisgICAgICAgIGJ1dCBkb2Vzbid0IHlldCBwYXNzIHRoZSBkb21haW4gdG8gQ29y
ZUxvY2F0aW9uIGR1ZSB0byA8cmRhcjovLzg4ODM0MzAxPi4gSSB3aWxsIGZvbGxvdy11cAorICAg
ICAgICBvbmNlIDxyZGFyOi8vODg4MzQzMDE+IGlzIGZpeGVkLgorCisgICAgICAgICogU291cmNl
c0NvY29hLnR4dDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0MvV0tHZW9sb2NhdGlvbk1hbmFn
ZXIuY3BwOgorICAgICAgICAoV0tHZW9sb2NhdGlvbk1hbmFnZXJTZXRQcm92aWRlcik6CisgICAg
ICAgICogVUlQcm9jZXNzL0NvY29hL1dlYkdlb2xvY2F0aW9uTWFuYWdlclByb3h5Q29jb2EuY3Bw
OiBBZGRlZC4KKyAgICAgICAgKFdlYktpdDo6V2ViR2VvbG9jYXRpb25NYW5hZ2VyUHJveHk6OnBv
c2l0aW9uQ2hhbmdlZCk6CisgICAgICAgIChXZWJLaXQ6OldlYkdlb2xvY2F0aW9uTWFuYWdlclBy
b3h5OjplcnJvck9jY3VycmVkKToKKyAgICAgICAgKFdlYktpdDo6V2ViR2VvbG9jYXRpb25NYW5h
Z2VyUHJveHk6OnJlc2V0R2VvbG9jYXRpb24pOgorICAgICAgICAoV2ViS2l0OjpXZWJHZW9sb2Nh
dGlvbk1hbmFnZXJQcm94eTo6aXNVcGRhdGluZyBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6Oldl
Ykdlb2xvY2F0aW9uTWFuYWdlclByb3h5Ojppc0hpZ2hBY2N1cmFjeUVuYWJsZWQgY29uc3QpOgor
ICAgICAgICAoV2ViS2l0OjpXZWJHZW9sb2NhdGlvbk1hbmFnZXJQcm94eTo6cHJvdmlkZXJTdGFy
dFVwZGF0aW5nKToKKyAgICAgICAgKFdlYktpdDo6V2ViR2VvbG9jYXRpb25NYW5hZ2VyUHJveHk6
OnByb3ZpZGVyU3RvcFVwZGF0aW5nKToKKyAgICAgICAgKFdlYktpdDo6V2ViR2VvbG9jYXRpb25N
YW5hZ2VyUHJveHk6OnByb3ZpZGVyU2V0RW5hYmxlZEhpZ2hBY2N1cmFjeSk6CisgICAgICAgICog
VUlQcm9jZXNzL1dlYkdlb2xvY2F0aW9uTWFuYWdlclByb3h5LmNwcDoKKyAgICAgICAgKFdlYktp
dDo6V2ViR2VvbG9jYXRpb25NYW5hZ2VyUHJveHk6OldlYkdlb2xvY2F0aW9uTWFuYWdlclByb3h5
KToKKyAgICAgICAgKFdlYktpdDo6V2ViR2VvbG9jYXRpb25NYW5hZ2VyUHJveHk6OnByb2Nlc3NQ
b29sRGVzdHJveWVkKToKKyAgICAgICAgKFdlYktpdDo6V2ViR2VvbG9jYXRpb25NYW5hZ2VyUHJv
eHk6OnByb2Nlc3NEaWRDbG9zZSk6CisgICAgICAgIChXZWJLaXQ6OldlYkdlb2xvY2F0aW9uTWFu
YWdlclByb3h5Ojpwcm92aWRlckRpZENoYW5nZVBvc2l0aW9uKToKKyAgICAgICAgKFdlYktpdDo6
V2ViR2VvbG9jYXRpb25NYW5hZ2VyUHJveHk6OnByb3ZpZGVyRGlkRmFpbFRvRGV0ZXJtaW5lUG9z
aXRpb24pOgorICAgICAgICAoV2ViS2l0OjpXZWJHZW9sb2NhdGlvbk1hbmFnZXJQcm94eTo6c3Rh
cnRVcGRhdGluZyk6CisgICAgICAgIChXZWJLaXQ6OldlYkdlb2xvY2F0aW9uTWFuYWdlclByb3h5
OjpzdG9wVXBkYXRpbmcpOgorICAgICAgICAoV2ViS2l0OjpXZWJHZW9sb2NhdGlvbk1hbmFnZXJQ
cm94eTo6c2V0RW5hYmxlSGlnaEFjY3VyYWN5KToKKyAgICAgICAgKFdlYktpdDo6V2ViR2VvbG9j
YXRpb25NYW5hZ2VyUHJveHk6OnNldFByb3ZpZGVyKToKKyAgICAgICAgKFdlYktpdDo6V2ViR2Vv
bG9jYXRpb25NYW5hZ2VyUHJveHk6OmlzVXBkYXRpbmcgY29uc3QpOgorICAgICAgICAoV2ViS2l0
OjpXZWJHZW9sb2NhdGlvbk1hbmFnZXJQcm94eTo6aXNIaWdoQWNjdXJhY3lFbmFibGVkIGNvbnN0
KToKKyAgICAgICAgKFdlYktpdDo6V2ViR2VvbG9jYXRpb25NYW5hZ2VyUHJveHk6OnByb3ZpZGVy
U3RhcnRVcGRhdGluZyk6CisgICAgICAgIChXZWJLaXQ6OldlYkdlb2xvY2F0aW9uTWFuYWdlclBy
b3h5Ojpwcm92aWRlclN0b3BVcGRhdGluZyk6CisgICAgICAgIChXZWJLaXQ6OldlYkdlb2xvY2F0
aW9uTWFuYWdlclByb3h5Ojpwcm92aWRlclNldEVuYWJsZWRIaWdoQWNjdXJhY3kpOgorICAgICAg
ICAoV2ViS2l0OjpXZWJHZW9sb2NhdGlvbk1hbmFnZXJQcm94eTo6cmVzZXRQZXJtaXNzaW9ucyk6
IERlbGV0ZWQuCisgICAgICAgIChXZWJLaXQ6OldlYkdlb2xvY2F0aW9uTWFuYWdlclByb3h5Ojpy
ZW1vdmVSZXF1ZXN0ZXIpOiBEZWxldGVkLgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJHZW9sb2Nh
dGlvbk1hbmFnZXJQcm94eS5oOgorICAgICAgICAoV2ViS2l0OjpXZWJHZW9sb2NhdGlvbk1hbmFn
ZXJQcm94eTo6bGFzdFBvc2l0aW9uIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYktpdDo6
V2ViR2VvbG9jYXRpb25NYW5hZ2VyUHJveHk6OmlzVXBkYXRpbmcgY29uc3QpOiBEZWxldGVkLgor
ICAgICAgICAoV2ViS2l0OjpXZWJHZW9sb2NhdGlvbk1hbmFnZXJQcm94eTo6aXNIaWdoQWNjdXJh
Y3lFbmFibGVkIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViR2VvbG9j
YXRpb25NYW5hZ2VyUHJveHkubWVzc2FnZXMuaW46CisgICAgICAgICogVUlQcm9jZXNzL2lvcy9X
S0dlb2xvY2F0aW9uUHJvdmlkZXJJT1MubW06CisgICAgICAgICgtW1dLR2VvbG9jYXRpb25Qcm92
aWRlcklPUyBfc3RhcnRVcGRhdGluZ10pOgorICAgICAgICAoLVtXS0dlb2xvY2F0aW9uUHJvdmlk
ZXJJT1MgX3N0b3BVcGRhdGluZ10pOgorICAgICAgICAoLVtXS0dlb2xvY2F0aW9uUHJvdmlkZXJJ
T1MgX3NldEVuYWJsZUhpZ2hBY2N1cmFjeTpdKToKKyAgICAgICAgKC1bV0tHZW9sb2NhdGlvblBy
b3ZpZGVySU9TIGluaXRXaXRoUHJvY2Vzc1Bvb2w6XSk6CisgICAgICAgICgtW1dLR2VvbG9jYXRp
b25Qcm92aWRlcklPUyBkZWNpZGVQb2xpY3lGb3JHZW9sb2NhdGlvblJlcXVlc3RGcm9tT3JpZ2lu
OmNvbXBsZXRpb25IYW5kbGVyOnZpZXc6XSk6CisgICAgICAgICgtW1dLR2VvbG9jYXRpb25Qcm92
aWRlcklPUyBnZW9sb2NhdGlvbkF1dGhvcml6YXRpb25HcmFudGVkXSk6CisgICAgICAgICgtW1dL
R2VvbG9jYXRpb25Qcm92aWRlcklPUyBwb3NpdGlvbkNoYW5nZWQ6XSk6CisgICAgICAgICgtW1dL
R2VvbG9jYXRpb25Qcm92aWRlcklPUyBlcnJvck9jY3VycmVkOl0pOgorICAgICAgICAoLVtXS0dl
b2xvY2F0aW9uUHJvdmlkZXJJT1MgcmVzZXRHZW9sb2NhdGlvbl0pOgorICAgICAgICAoc3RhcnRV
cGRhdGluZ0NhbGxiYWNrKTogRGVsZXRlZC4KKyAgICAgICAgKHN0b3BVcGRhdGluZ0NhbGxiYWNr
KTogRGVsZXRlZC4KKyAgICAgICAgKHNldEVuYWJsZUhpZ2hBY2N1cmFjeSk6IERlbGV0ZWQuCisg
ICAgICAgICgtW1dLTGVnYWN5Q29yZUxvY2F0aW9uUHJvdmlkZXIgc2V0TGlzdGVuZXI6XSk6IERl
bGV0ZWQuCisgICAgICAgICgtW1dLTGVnYWN5Q29yZUxvY2F0aW9uUHJvdmlkZXIgcmVxdWVzdEdl
b2xvY2F0aW9uQXV0aG9yaXphdGlvbl0pOiBEZWxldGVkLgorICAgICAgICAoLVtXS0xlZ2FjeUNv
cmVMb2NhdGlvblByb3ZpZGVyIHN0YXJ0XSk6IERlbGV0ZWQuCisgICAgICAgICgtW1dLTGVnYWN5
Q29yZUxvY2F0aW9uUHJvdmlkZXIgc3RvcF0pOiBEZWxldGVkLgorICAgICAgICAoLVtXS0xlZ2Fj
eUNvcmVMb2NhdGlvblByb3ZpZGVyIHNldEVuYWJsZUhpZ2hBY2N1cmFjeTpdKTogRGVsZXRlZC4K
KyAgICAgICAgKC1bV0tMZWdhY3lDb3JlTG9jYXRpb25Qcm92aWRlciBnZW9sb2NhdGlvbkF1dGhv
cml6YXRpb25HcmFudGVkXSk6IERlbGV0ZWQuCisgICAgICAgICgtW1dLTGVnYWN5Q29yZUxvY2F0
aW9uUHJvdmlkZXIgZ2VvbG9jYXRpb25BdXRob3JpemF0aW9uRGVuaWVkXSk6IERlbGV0ZWQuCisg
ICAgICAgICgtW1dLTGVnYWN5Q29yZUxvY2F0aW9uUHJvdmlkZXIgcG9zaXRpb25DaGFuZ2VkOl0p
OiBEZWxldGVkLgorICAgICAgICAoLVtXS0xlZ2FjeUNvcmVMb2NhdGlvblByb3ZpZGVyIGVycm9y
T2NjdXJyZWQ6XSk6IERlbGV0ZWQuCisgICAgICAgICgtW1dLTGVnYWN5Q29yZUxvY2F0aW9uUHJv
dmlkZXIgcmVzZXRHZW9sb2NhdGlvbl0pOiBEZWxldGVkLgorICAgICAgICAqIFdlYktpdC54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIFdlYlByb2Nlc3MvR2VvbG9jYXRpb24v
V2ViR2VvbG9jYXRpb25NYW5hZ2VyLmNwcDoKKyAgICAgICAgKFdlYktpdDo6cmVnaXN0cmFibGVE
b21haW5Gb3JQYWdlKToKKyAgICAgICAgKFdlYktpdDo6V2ViR2VvbG9jYXRpb25NYW5hZ2VyOjpy
ZWdpc3RlcldlYlBhZ2UpOgorICAgICAgICAoV2ViS2l0OjpXZWJHZW9sb2NhdGlvbk1hbmFnZXI6
OnVucmVnaXN0ZXJXZWJQYWdlKToKKyAgICAgICAgKFdlYktpdDo6V2ViR2VvbG9jYXRpb25NYW5h
Z2VyOjpzZXRFbmFibGVIaWdoQWNjdXJhY3lGb3JQYWdlKToKKyAgICAgICAgKFdlYktpdDo6V2Vi
R2VvbG9jYXRpb25NYW5hZ2VyOjpkaWRDaGFuZ2VQb3NpdGlvbik6CisgICAgICAgIChXZWJLaXQ6
OldlYkdlb2xvY2F0aW9uTWFuYWdlcjo6ZGlkRmFpbFRvRGV0ZXJtaW5lUG9zaXRpb24pOgorICAg
ICAgICAoV2ViS2l0OjpXZWJHZW9sb2NhdGlvbk1hbmFnZXI6OnJlc2V0UGVybWlzc2lvbnMpOgor
ICAgICAgICAoV2ViS2l0OjpXZWJHZW9sb2NhdGlvbk1hbmFnZXI6OmlzVXBkYXRpbmcgY29uc3Qp
OiBEZWxldGVkLgorICAgICAgICAoV2ViS2l0OjpXZWJHZW9sb2NhdGlvbk1hbmFnZXI6OmlzSGln
aEFjY3VyYWN5RW5hYmxlZCBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgICogV2ViUHJvY2Vzcy9H
ZW9sb2NhdGlvbi9XZWJHZW9sb2NhdGlvbk1hbmFnZXIuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNz
L0dlb2xvY2F0aW9uL1dlYkdlb2xvY2F0aW9uTWFuYWdlci5tZXNzYWdlcy5pbjoKKyAgICAgICAg
KiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkdlb2xvY2F0aW9uQ2xpZW50LmNwcDoKKyAg
ICAgICAgKFdlYktpdDo6V2ViR2VvbG9jYXRpb25DbGllbnQ6OnN0YXJ0VXBkYXRpbmcpOgorICAg
ICAgICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViR2VvbG9jYXRpb25DbGllbnQuaDoK
KyAgICAgICAgKFdlYktpdDo6V2ViR2VvbG9jYXRpb25DbGllbnQ6OldlYkdlb2xvY2F0aW9uQ2xp
ZW50KTogRGVsZXRlZC4KKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3BwOgorICAg
ICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzOjpyZXNldEFsbEdlb2xvY2F0aW9uUGVybWlzc2lvbnMp
OiBEZWxldGVkLgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUHJvY2Vzcy5oOgorCiAyMDIyLTAy
LTEyICBKZXIgTm9ibGUgIDxqZXIubm9ibGVAYXBwbGUuY29tPgogCiAgICAgICAgIEFkZCBzZXR0
aW5ncyB0byByZXN0cmljdCBtZWRpYSBjb250YWluZXJzIGFuZCBjb2RlY3Mgd2hlbiBpbiBDYXB0
aXZlIFBvcnRhbCBtb2RlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9DaGFu
Z2VMb2cgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9DaGFuZ2VMb2cKaW5kZXggNjgwMzk0ODU4
YTE1YjhhMjU2OTZhYWVjN2M4ZDk0YWE3M2FkNzIyMy4uMjU5NzZhMmYwZjQ4ZDNjM2NlMjk4YmZl
ZjgwZTFhZmIxMDU4OGY2NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2hh
bmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxvZwpAQCAtMSwzICsx
LDE1IEBACisyMDIyLTAyLTEzICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CisKKyAg
ICAgICAgRG8gcHJlbGltaW5hcnkgd29yayB0byBwYXNzIGRvbWFpbiBuYW1lcyB0byBDb3JlTG9j
YXRpb24KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIz
NjU2NgorICAgICAgICA8cmRhcjovLzg4NzYxNDEzPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2ViR2VvbG9jYXRpb25D
bGllbnQuaDoKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJHZW9sb2NhdGlvbkNsaWVudC5t
bToKKyAgICAgICAgKFdlYkdlb2xvY2F0aW9uQ2xpZW50OjpzdGFydFVwZGF0aW5nKToKKwogMjAy
Mi0wMi0xMSAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgogCiAgICAgICAgIFVucmV2
aWV3ZWQsIGZpeCBidWlsZCB3aXRoIHRoZSBsYXRlc3QgaU9TIFNESy4KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXRMZWdhY3kvd2luL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2lu
L0NoYW5nZUxvZwppbmRleCA2OTVhYTkxMDUzOWVmMDIxMDVmNTIxOTMwNGMwOTdlMTAzMTI2NDU1
Li4xZDZjMDMzZTJjZDFkMTI3NDQ1YzM1YzMwY2EzODg1MGFlZjdiZGI0IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdExlZ2Fj
eS93aW4vQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTUgQEAKKzIwMjItMDItMTMgIENocmlzIER1bWV6
ICA8Y2R1bWV6QGFwcGxlLmNvbT4KKworICAgICAgICBEbyBwcmVsaW1pbmFyeSB3b3JrIHRvIHBh
c3MgZG9tYWluIG5hbWVzIHRvIENvcmVMb2NhdGlvbgorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjM2NTY2CisgICAgICAgIDxyZGFyOi8vODg3NjE0MTM+
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBXZWJD
b3JlU3VwcG9ydC9XZWJHZW9sb2NhdGlvbkNsaWVudC5jcHA6CisgICAgICAgIChXZWJHZW9sb2Nh
dGlvbkNsaWVudDo6c3RhcnRVcGRhdGluZyk6CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2Vi
R2VvbG9jYXRpb25DbGllbnQuaDoKKwogMjAyMi0wMi0wMSAgTXlsZXMgQy4gTWF4ZmllbGQgIDxt
bWF4ZmllbGRAYXBwbGUuY29tPgogCiAgICAgICAgIFJlbmFtZSBGb250Q2FzY2FkZTo6Zm9udE1l
dHJpY3MoKSBhbmQgUmVuZGVyU3R5bGU6OmZvbnRNZXRyaWNzKCkgdG8gZm9udE1ldHJpY3NPZlBy
aW1hcnlGb250KCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL1BsYXRmb3JtSGF2ZS5oIGIv
U291cmNlL1dURi93dGYvUGxhdGZvcm1IYXZlLmgKaW5kZXggMDkyYmMzNjIxNTAxZDQ0Y2VhZmIw
NzBmYWNjZDM5OTVjZGEyMzEyNy4uNjRhNWU3OWIwNDRlZmJiODJhZWYyNDlhNDFiMmRkOThmYmU4
NTcwYSAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvUGxhdGZvcm1IYXZlLmgKKysrIGIvU291
cmNlL1dURi93dGYvUGxhdGZvcm1IYXZlLmgKQEAgLTExMTksNiArMTExOSwxNiBAQAogI2RlZmlu
ZSBIQVZFX05TVEVYVExJU1RfTUFSS0VSX0ZPUk1BVFMgMQogI2VuZGlmCiAKKyNpZiAoUExBVEZP
Uk0oSU9TKSAmJiBfX0lQSE9ORV9PU19WRVJTSU9OX01BWF9BTExPV0VEID49IDE2MDAwMCkgXAor
ICAgIHx8IChQTEFURk9STShXQVRDSE9TKSAmJiBfX1dBVENIX09TX1ZFUlNJT05fTUFYX0FMTE9X
RUQgPj0gOTAwMDApIFwKKyAgICB8fCAoUExBVEZPUk0oQVBQTEVUVikgJiYgX19UVl9PU19WRVJT
SU9OX01BWF9BTExPV0VEID49IDE2MDAwMCkKKyNkZWZpbmUgSEFWRV9DT1JFX0xPQ0FUSU9OX1dF
QlNJVEVfSURFTlRJRklFUlMgMQorI2VuZGlmCisKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZKSB8
fCAoUExBVEZPUk0oTUFDKSAmJiBfX01BQ19PU19YX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49IDEw
MTQwMCAmJiBkZWZpbmVkIF9faGFzX2luY2x1ZGUgJiYgX19oYXNfaW5jbHVkZSg8Q29yZUZvdW5k
YXRpb24vQ0ZQcml2Lmg+KSkKKyNkZWZpbmUgSEFWRV9DT1JFX0xPQ0FUSU9OX0FVVEhPUklaRURf
V0hFTl9JTl9VU0UgMQorI2VuZGlmCisKICNpZiBQTEFURk9STShNQUMpCiAjZGVmaW5lIEhBVkVf
U0NFTkVLSVQgMQogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2dl
b2xvY2F0aW9uL0dlb2xvY2F0aW9uQ2xpZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2dl
b2xvY2F0aW9uL0dlb2xvY2F0aW9uQ2xpZW50LmgKaW5kZXggNWJhZjNhZDgyYzU3ZTVhY2JhOTZl
M2RmMGVkNjBlYmM3NTRiY2IwNS4uYTRlODYyMzYyNTU2N2U5YWRmZWIwMGQ4MjQwMDBhMjc3ZGJl
YWYwMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9nZW9sb2NhdGlvbi9HZW9s
b2NhdGlvbkNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZ2VvbG9jYXRpb24v
R2VvbG9jYXRpb25DbGllbnQuaApAQCAtMzgsNyArMzgsNyBAQCBjbGFzcyBHZW9sb2NhdGlvbkNs
aWVudCB7CiBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIGdlb2xvY2F0aW9uRGVzdHJveWVkKCkg
PSAwOwogCi0gICAgdmlydHVhbCB2b2lkIHN0YXJ0VXBkYXRpbmcoY29uc3QgU3RyaW5nJiBhdXRo
b3JpemF0aW9uVG9rZW4pID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgc3RhcnRVcGRhdGluZyhjb25z
dCBTdHJpbmcmIGF1dGhvcml6YXRpb25Ub2tlbiwgYm9vbCBuZWVkc0hpZ2hBY2N1cmFjeSkgPSAw
OwogICAgIHZpcnR1YWwgdm9pZCBzdG9wVXBkYXRpbmcoKSA9IDA7CiAgICAgdmlydHVhbCB2b2lk
IHJldm9rZUF1dGhvcml6YXRpb25Ub2tlbihjb25zdCBTdHJpbmcmKSB7IH0KIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9nZW9sb2NhdGlvbi9HZW9sb2NhdGlvbkNvbnRyb2xs
ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9nZW9sb2NhdGlvbi9HZW9sb2NhdGlvbkNv
bnRyb2xsZXIuY3BwCmluZGV4IDA2MTYyOTE2MGQ5YmNjN2Q1ZGFmNzRjZmM0ZjgxNTUwYmE0OGRl
OGMuLjA3ZGQ2NWYzYzFhZWU3OWViOWM3MzI4MzZhMmQ1YWFkMDE3MzMzY2YgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZ2VvbG9jYXRpb24vR2VvbG9jYXRpb25Db250cm9sbGVy
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2dlb2xvY2F0aW9uL0dlb2xvY2F0aW9u
Q29udHJvbGxlci5jcHAKQEAgLTUyLDE5ICs1MiwyNSBAQCBHZW9sb2NhdGlvbkNvbnRyb2xsZXI6
On5HZW9sb2NhdGlvbkNvbnRyb2xsZXIoKQogICAgIG1fY2xpZW50Lmdlb2xvY2F0aW9uRGVzdHJv
eWVkKCk7CiB9CiAKK3ZvaWQgR2VvbG9jYXRpb25Db250cm9sbGVyOjpkaWROYXZpZ2F0ZVBhZ2Uo
KQoreworICAgIHdoaWxlICghbV9vYnNlcnZlcnMuaXNFbXB0eSgpKQorICAgICAgICByZW1vdmVP
YnNlcnZlcihtX29ic2VydmVycy5iZWdpbigpLT5nZXQoKSk7Cit9CisKIHZvaWQgR2VvbG9jYXRp
b25Db250cm9sbGVyOjphZGRPYnNlcnZlcihHZW9sb2NhdGlvbiYgb2JzZXJ2ZXIsIGJvb2wgZW5h
YmxlSGlnaEFjY3VyYWN5KQogewotICAgIC8vIFRoaXMgbWF5IGJlIGNhbGxlZCBtdWx0aXBsZSB0
aW1lcyB3aXRoIHRoZSBzYW1lIG9ic2VydmVyLCB0aG91Z2ggcmVtb3ZlT2JzZXJ2ZXIoKQotICAg
IC8vIGlzIGNhbGxlZCBvbmx5IG9uY2Ugd2l0aCBlYWNoLgotICAgIGJvb2wgd2FzRW1wdHkgPSBt
X29ic2VydmVycy5pc0VtcHR5KCk7CisgICAgYm9vbCBoaWdoQWNjdXJhY3lXYXNSZXF1aXJlZCA9
IG5lZWRzSGlnaEFjY3VyYWN5KCk7CisKICAgICBtX29ic2VydmVycy5hZGQob2JzZXJ2ZXIpOwog
ICAgIGlmIChlbmFibGVIaWdoQWNjdXJhY3kpCiAgICAgICAgIG1faGlnaEFjY3VyYWN5T2JzZXJ2
ZXJzLmFkZChvYnNlcnZlcik7CiAKLSAgICBpZiAoZW5hYmxlSGlnaEFjY3VyYWN5KQotICAgICAg
ICBtX2NsaWVudC5zZXRFbmFibGVIaWdoQWNjdXJhY3kodHJ1ZSk7Ci0gICAgaWYgKHdhc0VtcHR5
ICYmIG1fcGFnZS5pc1Zpc2libGUoKSkKLSAgICAgICAgbV9jbGllbnQuc3RhcnRVcGRhdGluZyhv
YnNlcnZlci5hdXRob3JpemF0aW9uVG9rZW4oKSk7CisgICAgaWYgKG1faXNVcGRhdGluZykgewor
ICAgICAgICBpZiAoIWhpZ2hBY2N1cmFjeVdhc1JlcXVpcmVkICYmIGVuYWJsZUhpZ2hBY2N1cmFj
eSkKKyAgICAgICAgICAgIG1fY2xpZW50LnNldEVuYWJsZUhpZ2hBY2N1cmFjeSh0cnVlKTsKKyAg
ICB9IGVsc2UKKyAgICAgICAgc3RhcnRVcGRhdGluZ0lmTmVjZXNzYXJ5KCk7CiB9CiAKIHZvaWQg
R2VvbG9jYXRpb25Db250cm9sbGVyOjpyZW1vdmVPYnNlcnZlcihHZW9sb2NhdGlvbiYgb2JzZXJ2
ZXIpCkBAIC03MiwxMiArNzgsMTcgQEAgdm9pZCBHZW9sb2NhdGlvbkNvbnRyb2xsZXI6OnJlbW92
ZU9ic2VydmVyKEdlb2xvY2F0aW9uJiBvYnNlcnZlcikKICAgICBpZiAoIW1fb2JzZXJ2ZXJzLmNv
bnRhaW5zKG9ic2VydmVyKSkKICAgICAgICAgcmV0dXJuOwogCisgICAgYm9vbCBoaWdoQWNjdXJh
Y3lXYXNSZXF1aXJlZCA9IG5lZWRzSGlnaEFjY3VyYWN5KCk7CisKICAgICBtX29ic2VydmVycy5y
ZW1vdmUob2JzZXJ2ZXIpOwogICAgIG1faGlnaEFjY3VyYWN5T2JzZXJ2ZXJzLnJlbW92ZShvYnNl
cnZlcik7CiAKKyAgICBpZiAoIW1faXNVcGRhdGluZykKKyAgICAgICAgcmV0dXJuOworCiAgICAg
aWYgKG1fb2JzZXJ2ZXJzLmlzRW1wdHkoKSkKLSAgICAgICAgbV9jbGllbnQuc3RvcFVwZGF0aW5n
KCk7Ci0gICAgZWxzZSBpZiAobV9oaWdoQWNjdXJhY3lPYnNlcnZlcnMuaXNFbXB0eSgpKQorICAg
ICAgICBzdG9wVXBkYXRpbmdJZk5lY2Vzc2FyeSgpOworICAgIGVsc2UgaWYgKGhpZ2hBY2N1cmFj
eVdhc1JlcXVpcmVkICYmICFuZWVkc0hpZ2hBY2N1cmFjeSgpKQogICAgICAgICBtX2NsaWVudC5z
ZXRFbmFibGVIaWdoQWNjdXJhY3koZmFsc2UpOwogfQogCkBAIC0xMzksOSArMTUwLDkgQEAgdm9p
ZCBHZW9sb2NhdGlvbkNvbnRyb2xsZXI6OmFjdGl2aXR5U3RhdGVEaWRDaGFuZ2UoT3B0aW9uU2V0
PEFjdGl2aXR5U3RhdGU6OkZsYWcKICAgICBhdXRvIGNoYW5nZWQgPSBvbGRBY3Rpdml0eVN0YXRl
IF4gbmV3QWN0aXZpdHlTdGF0ZTsKICAgICBpZiAoY2hhbmdlZCAmIEFjdGl2aXR5U3RhdGU6Oklz
VmlzaWJsZSAmJiAhbV9vYnNlcnZlcnMuaXNFbXB0eSgpKSB7CiAgICAgICAgIGlmIChuZXdBY3Rp
dml0eVN0YXRlICYgQWN0aXZpdHlTdGF0ZTo6SXNWaXNpYmxlKQotICAgICAgICAgICAgbV9jbGll
bnQuc3RhcnRVcGRhdGluZygoKm1fb2JzZXJ2ZXJzLnJhbmRvbSgpKS0+YXV0aG9yaXphdGlvblRv
a2VuKCkpOworICAgICAgICAgICAgc3RhcnRVcGRhdGluZ0lmTmVjZXNzYXJ5KCk7CiAgICAgICAg
IGVsc2UKLSAgICAgICAgICAgIG1fY2xpZW50LnN0b3BVcGRhdGluZygpOworICAgICAgICAgICAg
c3RvcFVwZGF0aW5nSWZOZWNlc3NhcnkoKTsKICAgICB9CiAKICAgICBpZiAoIW1fcGFnZS5pc1Zp
c2libGUoKSkKQEAgLTE1Miw2ICsxNjMsMjQgQEAgdm9pZCBHZW9sb2NhdGlvbkNvbnRyb2xsZXI6
OmFjdGl2aXR5U3RhdGVEaWRDaGFuZ2UoT3B0aW9uU2V0PEFjdGl2aXR5U3RhdGU6OkZsYWcKICAg
ICAgICAgbV9jbGllbnQucmVxdWVzdFBlcm1pc3Npb24ocGVybWlzc2lvblJlcXVlc3QuZ2V0KCkp
OwogfQogCit2b2lkIEdlb2xvY2F0aW9uQ29udHJvbGxlcjo6c3RhcnRVcGRhdGluZ0lmTmVjZXNz
YXJ5KCkKK3sKKyAgICBpZiAobV9pc1VwZGF0aW5nIHx8ICFtX3BhZ2UuaXNWaXNpYmxlKCkgfHwg
bV9vYnNlcnZlcnMuaXNFbXB0eSgpKQorICAgICAgICByZXR1cm47CisKKyAgICBtX2NsaWVudC5z
dGFydFVwZGF0aW5nKCgqbV9vYnNlcnZlcnMucmFuZG9tKCkpLT5hdXRob3JpemF0aW9uVG9rZW4o
KSwgbmVlZHNIaWdoQWNjdXJhY3koKSk7CisgICAgbV9pc1VwZGF0aW5nID0gdHJ1ZTsKK30KKwor
dm9pZCBHZW9sb2NhdGlvbkNvbnRyb2xsZXI6OnN0b3BVcGRhdGluZ0lmTmVjZXNzYXJ5KCkKK3sK
KyAgICBpZiAoIW1faXNVcGRhdGluZykKKyAgICAgICAgcmV0dXJuOworCisgICAgbV9jbGllbnQu
c3RvcFVwZGF0aW5nKCk7CisgICAgbV9pc1VwZGF0aW5nID0gZmFsc2U7Cit9CisKIGNvbnN0IGNo
YXIqIEdlb2xvY2F0aW9uQ29udHJvbGxlcjo6c3VwcGxlbWVudE5hbWUoKQogewogICAgIHJldHVy
biAiR2VvbG9jYXRpb25Db250cm9sbGVyIjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvZ2VvbG9jYXRpb24vR2VvbG9jYXRpb25Db250cm9sbGVyLmggYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2dlb2xvY2F0aW9uL0dlb2xvY2F0aW9uQ29udHJvbGxlci5oCmluZGV4IDQyZjVk
MDYyZGI2ZjA5YzY2MDExMWQ2NmQ5ZjBmY2ZmZjNiMjA3NDAuLmJiZmY1NzVlYjA1ODMyNDA3ODBk
M2I0MWE5Njc0MmM2YjFkNzI0OGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
Z2VvbG9jYXRpb24vR2VvbG9jYXRpb25Db250cm9sbGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9nZW9sb2NhdGlvbi9HZW9sb2NhdGlvbkNvbnRyb2xsZXIuaApAQCAtMzAsNiArMzAs
NyBAQAogI2luY2x1ZGUgIkFjdGl2aXR5U3RhdGVDaGFuZ2VPYnNlcnZlci5oIgogI2luY2x1ZGUg
Ikdlb2xvY2F0aW9uLmgiCiAjaW5jbHVkZSAiUGFnZS5oIgorI2luY2x1ZGUgIlJlZ2lzdHJhYmxl
RG9tYWluLmgiCiAjaW5jbHVkZSA8d3RmL0hhc2hTZXQuaD4KICNpbmNsdWRlIDx3dGYvTm9uY29w
eWFibGUuaD4KICNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+CkBAIC02NSw2ICs2Niw4IEBAIHB1Ymxp
YzoKIAogICAgIHZvaWQgcmV2b2tlQXV0aG9yaXphdGlvblRva2VuKGNvbnN0IFN0cmluZyYpOwog
CisgICAgdm9pZCBkaWROYXZpZ2F0ZVBhZ2UoKTsKKwogcHJpdmF0ZToKICAgICBQYWdlJiBtX3Bh
Z2U7CiAgICAgR2VvbG9jYXRpb25DbGllbnQmIG1fY2xpZW50OwpAQCAtNzMsNiArNzYsMTEgQEAg
cHJpdmF0ZToKIAogICAgIHN0ZDo6b3B0aW9uYWw8R2VvbG9jYXRpb25Qb3NpdGlvbkRhdGE+IG1f
bGFzdFBvc2l0aW9uOwogCisgICAgYm9vbCBuZWVkc0hpZ2hBY2N1cmFjeSgpIGNvbnN0IHsgcmV0
dXJuICFtX2hpZ2hBY2N1cmFjeU9ic2VydmVycy5pc0VtcHR5KCk7IH0KKworICAgIHZvaWQgc3Rh
cnRVcGRhdGluZ0lmTmVjZXNzYXJ5KCk7CisgICAgdm9pZCBzdG9wVXBkYXRpbmdJZk5lY2Vzc2Fy
eSgpOworCiAgICAgdHlwZWRlZiBIYXNoU2V0PFJlZjxHZW9sb2NhdGlvbj4+IE9ic2VydmVyc1Nl
dDsKICAgICAvLyBBbGwgb2JzZXJ2ZXJzOyBib3RoIHRob3NlIHJlcXVlc3RpbmcgaGlnaCBhY2N1
cmFjeSBhbmQgdGhvc2Ugbm90LgogICAgIE9ic2VydmVyc1NldCBtX29ic2VydmVyczsKQEAgLTgw
LDYgKzg4LDkgQEAgcHJpdmF0ZToKIAogICAgIC8vIFdoaWxlIHRoZSBwYWdlIGlzIG5vdCB2aXNp
YmxlLCB3ZSBwZW5kIHBlcm1pc3Npb24gcmVxdWVzdHMuCiAgICAgSGFzaFNldDxSZWY8R2VvbG9j
YXRpb24+PiBtX3BlbmRpbmdQZXJtaXNzaW9uUmVxdWVzdDsKKworICAgIFJlZ2lzdHJhYmxlRG9t
YWluIG1fcmVnaXN0cmFibGVEb21haW47CisgICAgYm9vbCBtX2lzVXBkYXRpbmcgeyBmYWxzZSB9
OwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9nZW9sb2NhdGlvbi9HZW9sb2NhdGlvblBvc2l0aW9uRGF0YS5oIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9nZW9sb2NhdGlvbi9HZW9sb2NhdGlvblBvc2l0aW9uRGF0YS5oCmlu
ZGV4IDkyNjIyMTcwYzhhYWQ2OTg5YjhhMTJjZTQ4MzU2ZGM2ODdiZjZlMzUuLmNjMjE4MGE4Mzdk
Mjc0M2MxZmJmNzYxYzQxMGUxYzdlYmZlYWVlN2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvZ2VvbG9jYXRpb24vR2VvbG9jYXRpb25Qb3NpdGlvbkRhdGEuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2dlb2xvY2F0aW9uL0dlb2xvY2F0aW9uUG9zaXRpb25EYXRhLmgK
QEAgLTI5LDcgKzI5LDcgQEAKICNpbmNsdWRlIDx3dGYvUmVmLmg+CiAjaW5jbHVkZSA8d3RmL1Jl
ZkNvdW50ZWQuaD4KIAotI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCisjaWYgUExBVEZPUk0oQ09D
T0EpCiBPQkpDX0NMQVNTIENMTG9jYXRpb247CiAjZW5kaWYKIApAQCAtNDcsNyArNDcsNyBAQCBw
dWJsaWM6CiAgICAgewogICAgIH0KIAotI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCisjaWYgUExB
VEZPUk0oQ09DT0EpCiAgICAgV0VCQ09SRV9FWFBPUlQgZXhwbGljaXQgR2VvbG9jYXRpb25Qb3Np
dGlvbkRhdGEoQ0xMb2NhdGlvbiopOwogI2VuZGlmCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvZ2VvbG9jYXRpb24vY29jb2EvR2VvbG9jYXRpb25Qb3NpdGlvbkRhdGFDb2Nv
YS5tbSBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZ2VvbG9jYXRpb24vY29jb2EvR2VvbG9jYXRp
b25Qb3NpdGlvbkRhdGFDb2NvYS5tbQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5jMGE5YmVlNjU1Njk0ZGIzYWJmMTU3
ZWVkMTkwNzZlYWQ1ODU0NDA2Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9nZW9sb2NhdGlvbi9jb2NvYS9HZW9sb2NhdGlvblBvc2l0aW9uRGF0YUNvY29hLm1tCkBA
IC0wLDAgKzEsNTMgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQXBwbGUgSW5jLiBBbGwg
UmlnaHRzIFJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUg
bWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExF
IElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQg
T0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisg
KiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAq
LworCisjaW1wb3J0ICJjb25maWcuaCIKKyNpbXBvcnQgIkdlb2xvY2F0aW9uUG9zaXRpb24uaCIK
KworI2ltcG9ydCA8Q29yZUxvY2F0aW9uL0NMTG9jYXRpb24uaD4KKworbmFtZXNwYWNlIFdlYkNv
cmUgeworCitHZW9sb2NhdGlvblBvc2l0aW9uRGF0YTo6R2VvbG9jYXRpb25Qb3NpdGlvbkRhdGEo
Q0xMb2NhdGlvbiogbG9jYXRpb24pCisgICAgOiB0aW1lc3RhbXAobG9jYXRpb24udGltZXN0YW1w
LnRpbWVJbnRlcnZhbFNpbmNlMTk3MCkKKyAgICAsIGxhdGl0dWRlKGxvY2F0aW9uLmNvb3JkaW5h
dGUubGF0aXR1ZGUpCisgICAgLCBsb25naXR1ZGUobG9jYXRpb24uY29vcmRpbmF0ZS5sb25naXR1
ZGUpCisgICAgLCBhY2N1cmFjeShsb2NhdGlvbi5ob3Jpem9udGFsQWNjdXJhY3kpCit7CisgICAg
aWYgKGxvY2F0aW9uLnZlcnRpY2FsQWNjdXJhY3kgPj0gMC4wKSB7CisgICAgICAgIGFsdGl0dWRl
ID0gbG9jYXRpb24uYWx0aXR1ZGU7CisgICAgICAgIGFsdGl0dWRlQWNjdXJhY3kgPSBsb2NhdGlv
bi52ZXJ0aWNhbEFjY3VyYWN5OworICAgIH0KKyAgICBpZiAobG9jYXRpb24uc3BlZWQgPj0gMC4w
KQorICAgICAgICBzcGVlZCA9IGxvY2F0aW9uLnNwZWVkOworICAgIGlmIChsb2NhdGlvbi5jb3Vy
c2UgPj0gMC4wKQorICAgICAgICBoZWFkaW5nID0gbG9jYXRpb24uY291cnNlOworI2lmICFQTEFU
Rk9STShNQUNDQVRBTFlTVCkKKyAgICBpZiAobG9jYXRpb24uZmxvb3IpCisgICAgICAgIGZsb29y
TGV2ZWwgPSBsb2NhdGlvbi5mbG9vci5sZXZlbDsKKyNlbmRpZgorfQorCit9IC8vIG5hbWVzcGFj
ZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2dlb2xvY2F0aW9u
L2lvcy9HZW9sb2NhdGlvblBvc2l0aW9uRGF0YUlPUy5tbSBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvZ2VvbG9jYXRpb24vaW9zL0dlb2xvY2F0aW9uUG9zaXRpb25EYXRhSU9TLm1tCmRlbGV0ZWQg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5OGQ5YTI0MjFlN2YyMzA5YjRmNjIzYjE0ZDdjYmUyYjZj
N2UwNDVjLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvZ2VvbG9jYXRpb24vaW9zL0dlb2xvY2F0aW9uUG9zaXRpb25E
YXRhSU9TLm1tCisrKyAvZGV2L251bGwKQEAgLTEsNTcgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdo
dCAoQykgMjAxNyBBcHBsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgot
ICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgot
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQg
QU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFRIRQotICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgotICogQ09OVFJJQlVUT1JTIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCi0gKiBF
WEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sCi0gKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKLSAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKLSAqIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpbXBvcnQgImNvbmZpZy5oIgotI2ltcG9y
dCAiR2VvbG9jYXRpb25Qb3NpdGlvbi5oIgotCi0jaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKLQot
I2ltcG9ydCA8Q29yZUxvY2F0aW9uL0NMTG9jYXRpb24uaD4KLQotbmFtZXNwYWNlIFdlYkNvcmUg
ewotCi1HZW9sb2NhdGlvblBvc2l0aW9uRGF0YTo6R2VvbG9jYXRpb25Qb3NpdGlvbkRhdGEoQ0xM
b2NhdGlvbiogbG9jYXRpb24pCi0gICAgOiB0aW1lc3RhbXAobG9jYXRpb24udGltZXN0YW1wLnRp
bWVJbnRlcnZhbFNpbmNlMTk3MCkKLSAgICAsIGxhdGl0dWRlKGxvY2F0aW9uLmNvb3JkaW5hdGUu
bGF0aXR1ZGUpCi0gICAgLCBsb25naXR1ZGUobG9jYXRpb24uY29vcmRpbmF0ZS5sb25naXR1ZGUp
Ci0gICAgLCBhY2N1cmFjeShsb2NhdGlvbi5ob3Jpem9udGFsQWNjdXJhY3kpCi17Ci0gICAgaWYg
KGxvY2F0aW9uLnZlcnRpY2FsQWNjdXJhY3kgPj0gMC4wKSB7Ci0gICAgICAgIGFsdGl0dWRlID0g
bG9jYXRpb24uYWx0aXR1ZGU7Ci0gICAgICAgIGFsdGl0dWRlQWNjdXJhY3kgPSBsb2NhdGlvbi52
ZXJ0aWNhbEFjY3VyYWN5OwotICAgIH0KLSAgICBpZiAobG9jYXRpb24uc3BlZWQgPj0gMC4wKQot
ICAgICAgICBzcGVlZCA9IGxvY2F0aW9uLnNwZWVkOwotICAgIGlmIChsb2NhdGlvbi5jb3Vyc2Ug
Pj0gMC4wKQotICAgICAgICBoZWFkaW5nID0gbG9jYXRpb24uY291cnNlOwotI2lmICFQTEFURk9S
TShNQUNDQVRBTFlTVCkKLSAgICBpZiAobG9jYXRpb24uZmxvb3IpCi0gICAgICAgIGZsb29yTGV2
ZWwgPSBsb2NhdGlvbi5mbG9vci5sZXZlbDsKLSNlbmRpZgotfQotCi19Ci0KLSNlbmRpZiAvLyBQ
TEFURk9STShJT1NfRkFNSUxZKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvU291cmNlc0Nv
Y29hLnR4dCBiL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXNDb2NvYS50eHQKaW5kZXggMTA3NWVhYzQ3
NmE1NGI4MjAwZDA2ZTliODQzNmIyNDg5NWQ0MmM2Mi4uNjUyOTZlMjViNzE1ZGZlMzA4MDVmZDdk
MWFiNzc0MzlmNDhmMjI1ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvU291cmNlc0NvY29h
LnR4dAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzQ29jb2EudHh0CkBAIC0yNTEsNiArMjUx
LDcgQEAgcGxhdGZvcm0vY2YvTWVkaWFBY2Nlc3NpYmlsaXR5U29mdExpbmsuY3BwCiBwbGF0Zm9y
bS9jZi9SdW5Mb29wT2JzZXJ2ZXIuY3BwCiBwbGF0Zm9ybS9jZi9TaGFyZWRCdWZmZXJDRi5jcHAK
IHBsYXRmb3JtL2NvY29hL0NvbnRlbnRGaWx0ZXJVbmJsb2NrSGFuZGxlckNvY29hLm1tIEBuby11
bmlmeQorcGxhdGZvcm0vY29jb2EvQ29yZUxvY2F0aW9uR2VvbG9jYXRpb25Qcm92aWRlci5tbQog
cGxhdGZvcm0vY29jb2EvQ29yZVZpZGVvU29mdExpbmsuY3BwCiBwbGF0Zm9ybS9jb2NvYS9EcmFn
RGF0YUNvY29hLm1tCiBwbGF0Zm9ybS9jb2NvYS9EcmFnSW1hZ2VDb2NvYS5tbQpAQCAtMzE3LDcg
KzMxOCw3IEBAIHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0NETVNlc3Npb25B
VkZvdW5kYXRpb25PYmpDLm1tCiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9D
RE1TZXNzaW9uQVZTdHJlYW1TZXNzaW9uLm1tCiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRp
b24vb2JqYy9DRE1TZXNzaW9uTWVkaWFTb3VyY2VBVkZPYmpDLm1tCiBwbGF0Zm9ybS9ncmFwaGlj
cy9hdmZvdW5kYXRpb24vb2JqYy9JbWFnZURlY29kZXJBVkZPYmpDLm1tCi1wbGF0Zm9ybS9ncmFw
aGljcy9hdmZvdW5kYXRpb24vb2JqYy9JbmJhbmRUZXh0VHJhY2tQcml2YXRlQVZGT2JqQy5tbQor
cGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvSW5iYW5kVGV4dFRyYWNrUHJpdmF0
ZUFWRk9iakMubW0gQG5vLXVuaWZ5CiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2Jq
Yy9JbmJhbmRDaGFwdGVyVHJhY2tQcml2YXRlQVZGT2JqQy5tbSBAbm8tdW5pZnkKIHBsYXRmb3Jt
L2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0xvY2FsU2FtcGxlQnVmZmVyRGlzcGxheUxheWVy
Lm1tCiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXliYWNrVGFy
Z2V0UGlja2VyTWFjLm1tCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9w
cm9qZWN0LnBieHByb2oKaW5kZXggZjFlZTk3MTI2NWVmYWQ3MzYxYTIxOWNiY2RjZjhkMjU0MmIz
N2M2MC4uM2QxYjY3MzVjNTMyNDY1ZTdjYWZjM2JiMjViM2M0NGM4NDJhZGJkYSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBi
L1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMTM1
Miw2ICsxMzUyLDcgQEAKIAkJNDY4MzQ0RTAxRURERkFBQTAwQjc3OTVCIC8qIERPTVJlY3RMaXN0
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0NjgzNDRE
RTFFRERGQTVGMDBCNzc5NUIgLyogRE9NUmVjdExpc3QuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklC
VVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk0NjgzREY0MDI3NjdERjk4MDA3RDAwQzggLyog
SlNTaGFkb3dSZWFsbUdsb2JhbFNjb3BlQmFzZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gNDY4M0RGM0UyNzY3REY5ODAwN0QwMEM4IC8qIEpTU2hhZG93
UmVhbG1HbG9iYWxTY29wZUJhc2UuaCAqLzsgfTsKIAkJNDY4M0RGNDEyNzY3RTkxQTAwN0QwMEM4
IC8qIFNoYWRvd1JlYWxtR2xvYmFsU2NvcGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDQ2ODNERjNCMjc2N0RGMjYwMDdEMDBDOCAvKiBTaGFkb3dSZWFs
bUdsb2JhbFNjb3BlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsg
fTsgfTsKKwkJNDY4OEU5ODAyN0I2QjQ1MDAwNTY3Q0QyIC8qIENvcmVMb2NhdGlvbkdlb2xvY2F0
aW9uUHJvdmlkZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDQ2ODhFOTdGMjdCNkI0NDQwMDU2N0NEMiAvKiBDb3JlTG9jYXRpb25HZW9sb2NhdGlvblBy
b3ZpZGVyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsK
IAkJNDY4OEVFM0MyNkREMjYxMDAwMkFGNUM0IC8qIENyb3NzT3JpZ2luTW9kZS5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDY4OEVFM0EyNkREMjYwQzAw
MkFGNUM0IC8qIENyb3NzT3JpZ2luTW9kZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0g
KFByaXZhdGUsICk7IH07IH07CiAJCTQ2OTQzREM5Mjc2M0Y4MTcwMDRCNjEwRSAvKiBTaGFyZWRX
b3JrZXJPYmplY3RJZGVudGlmaWVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA0Njk0M0RDNzI3NjNGODBFMDA0QjYxMEUgLyogU2hhcmVkV29ya2VyT2Jq
ZWN0SWRlbnRpZmllci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7
IH07IH07CiAJCTQ2OTg1RjIzMjdBNEE2QUQwMDk3QTMyQiAvKiBTaGFyZWRXb3JrZXJLZXkuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ2OTg1RjIyMjdB
NEE2ODYwMDk3QTMyQiAvKiBTaGFyZWRXb3JrZXJLZXkuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklC
VVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwpAQCAtMTM3Nyw2ICsxMzc4LDcgQEAKIAkJNDZDNjk2
Q0IxRTcyMDVGNzAwNTk3OTM3IC8qIENQVU1vbml0b3IuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ2QzY5NkM5MUU3MjA1RTQwMDU5NzkzNyAvKiBDUFVN
b25pdG9yLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsK
IAkJNDZDNjk2Q0MxRTcyMDVGQzAwNTk3OTM3IC8qIENQVU1vbml0b3IuY3BwIGluIFNvdXJjZXMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDZDNjk2Q0ExRTcyMDVFNDAwNTk3
OTM3IC8qIENQVU1vbml0b3IuY3BwICovOyB9OwogCQk0NkM4M0VGRTFBOUJCRTI5MDBBNzlBNDEg
LyogR2VvTm90aWZpZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDQ2QzgzRUZDMUE5QkJFMjkwMEE3OUE0MSAvKiBHZW9Ob3RpZmllci5oICovOyBzZXR0
aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCTQ2Q0E5NDMxMjdCODY5
NTgwMEY0RjVGRiAvKiBJbmJhbmRUZXh0VHJhY2tQcml2YXRlQVZGT2JqQy5tbSBpbiBTb3VyY2Vz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDA3QUE2QjZBMTY2RDAxOTUwMEQ0
NTY3MSAvKiBJbmJhbmRUZXh0VHJhY2tQcml2YXRlQVZGT2JqQy5tbSAqLzsgfTsKIAkJNDZDQTlD
NDQxRjk3QkJFOTAwNENGQzNBIC8qIFZpc2liaWxpdHlTdGF0ZS5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDZDQTlDNDExRjk3QkJFNzAwNENGQzNBIC8q
IFZpc2liaWxpdHlTdGF0ZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUs
ICk7IH07IH07CiAJCTQ2Q0Y1MDRBMjdBQjFFQTQwMDcwREJDOCAvKiBTaGFyZWRXb3JrZXJDb250
ZXh0TWFuYWdlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gNDZDRjUwNDgyN0FCMUVBMTAwNzBEQkM4IC8qIFNoYXJlZFdvcmtlckNvbnRleHRNYW5hZ2Vy
LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNDZE
MDAwNDAyNkEwRkVCMzAwRDFCRjFFIC8qIFN1Ym1pdEV2ZW50LmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0NkQwMDAzRTI2QTBGRTZGMDBEMUJGMUUgLyog
U3VibWl0RXZlbnQuaCAqLzsgfTsKQEAgLTI2OTUsNyArMjY5Nyw3IEBACiAJCTgzNzY1Rjk1MURB
QzUyMkYwMEMwNjUzNyAvKiBNb3VzZUV2ZW50SW5pdC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODM3NjVGOTQxREFDNTIxODAwQzA2NTM3IC8qIE1vdXNl
RXZlbnRJbml0LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsg
fTsKIAkJODM3ODg3ODIyNEQ4QTYwOTAwMEQ0QTVCIC8qIEF1ZGlvQnVmZmVyU291cmNlT3B0aW9u
cy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODM3ODg3
N0YyNEQ4QTVGQzAwMEQ0QTVCIC8qIEF1ZGlvQnVmZmVyU291cmNlT3B0aW9ucy5oICovOyB9Owog
CQk4Mzc5MzYzRjFGQkJCMEI0MDBDODAyM0MgLyogU2VydmljZVdvcmtlckNsaWVudERhdGEuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDgzNzkzNjNFMUZC
QkIwQTUwMEM4MDIzQyAvKiBTZXJ2aWNlV29ya2VyQ2xpZW50RGF0YS5oICovOyBzZXR0aW5ncyA9
IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07Ci0JCTgzNzk2NENGMUY4REI2OUQwMDIx
OEVBMCAvKiBHZW9sb2NhdGlvblBvc2l0aW9uRGF0YUlPUy5tbSBpbiBTb3VyY2VzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDgzNzk2NENFMUY4REI2OUEwMDIxOEVBMCAvKiBH
ZW9sb2NhdGlvblBvc2l0aW9uRGF0YUlPUy5tbSAqLzsgfTsKKwkJODM3OTY0Q0YxRjhEQjY5RDAw
MjE4RUEwIC8qIEdlb2xvY2F0aW9uUG9zaXRpb25EYXRhQ29jb2EubW0gaW4gU291cmNlcyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4Mzc5NjRDRTFGOERCNjlBMDAyMThFQTAg
LyogR2VvbG9jYXRpb25Qb3NpdGlvbkRhdGFDb2NvYS5tbSAqLzsgfTsKIAkJODM3QTgwMTMxRTFF
MTI3MzAwMDI2QjlGIC8qIExvY2FsaXphYmxlLnN0cmluZ3NkaWN0IGluIFJlc291cmNlcyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4MzdBODAxMTFFMUUxMjczMDAwMjZCOUYg
LyogTG9jYWxpemFibGUuc3RyaW5nc2RpY3QgKi87IH07CiAJCTgzN0MwQjc2MjREQjM4NTAwMDVE
NTk1OSAvKiBEeW5hbWljc0NvbXByZXNzb3JPcHRpb25zLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4MzdDMEI3MzI0REIzODQyMDA1RDU5NTkgLyogRHlu
YW1pY3NDb21wcmVzc29yT3B0aW9ucy5oICovOyB9OwogCQk4MzdGQjM0NTFGOUVBMDZEMDBEMEZD
MzEgLyogRXh0ZW5kYWJsZU1lc3NhZ2VFdmVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gODM3RkIzNDAxRjlFQTA2NjAwRDBGQzMxIC8qIEV4dGVuZGFi
bGVNZXNzYWdlRXZlbnQuaCAqLzsgfTsKQEAgLTkyNjksNiArOTI3MSw4IEBACiAJCTQ2ODNERjND
Mjc2N0RGMjYwMDdEMDBDOCAvKiBTaGFkb3dSZWFsbUdsb2JhbFNjb3BlLmlkbCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBTaGFk
b3dSZWFsbUdsb2JhbFNjb3BlLmlkbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDY4
M0RGM0QyNzY3REY5ODAwN0QwMEM4IC8qIEpTU2hhZG93UmVhbG1HbG9iYWxTY29wZUJhc2UuY3Bw
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNTaGFkb3dSZWFsbUdsb2Jh
bFNjb3BlQmFzZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQ2ODNERjNFMjc2
N0RGOTgwMDdEMDBDOCAvKiBKU1NoYWRvd1JlYWxtR2xvYmFsU2NvcGVCYXNlLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTU2hhZG93UmVhbG1HbG9iYWxTY29wZUJhc2UuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNDY4OEU5N0QyN0I2QjQ0MzAwNTY3Q0QyIC8q
IENvcmVMb2NhdGlvbkdlb2xvY2F0aW9uUHJvdmlkZXIubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGgg
PSBDb3JlTG9jYXRpb25HZW9sb2NhdGlvblByb3ZpZGVyLm1tOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OworCQk0Njg4RTk3RjI3QjZCNDQ0MDA1NjdDRDIgLyogQ29yZUxvY2F0aW9uR2VvbG9j
YXRpb25Qcm92aWRlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBDb3JlTG9jYXRpb25HZW9sb2NhdGlvblBy
b3ZpZGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQ2ODhFRTNBMjZERDI2MEMw
MDJBRjVDNCAvKiBDcm9zc09yaWdpbk1vZGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQ3Jvc3NPcmlnaW5N
b2RlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQ2OEI4QkRFMjVDQzg0OTMwMEY2
NzgyMiAvKiBKU0Jhc2VBdWRpb0NvbnRleHRDdXN0b20uY3BwICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0g
SlNCYXNlQXVkaW9Db250ZXh0Q3VzdG9tLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJNDY5NDNEQzcyNzYzRjgwRTAwNEI2MTBFIC8qIFNoYXJlZFdvcmtlck9iamVjdElkZW50aWZp
ZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gU2hhcmVkV29ya2VyT2JqZWN0SWRlbnRpZmllci5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMTIxOTAsNyArMTIxOTQsNyBAQAogCQk4Mzc4ODc4
MTI0RDhBNUZDMDAwRDRBNUIgLyogQXVkaW9CdWZmZXJTb3VyY2VPcHRpb25zLmlkbCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBB
dWRpb0J1ZmZlclNvdXJjZU9wdGlvbnMuaWRsOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQk4Mzc5MzYzQzFGQkJCMEE0MDBDODAyM0MgLyogU2VydmljZVdvcmtlckNsaWVudERhdGEuY3Bw
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gU2VydmljZVdvcmtlckNsaWVu
dERhdGEuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk4Mzc5MzYzRTFGQkJCMEE1
MDBDODAyM0MgLyogU2VydmljZVdvcmtlckNsaWVudERhdGEuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gU2VydmljZVdvcmtlckNsaWVudERhdGEuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKLQkJODM3OTY0Q0UxRjhEQjY5QTAwMjE4RUEwIC8qIEdlb2xvY2F0aW9uUG9z
aXRpb25EYXRhSU9TLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBuYW1lID0g
R2VvbG9jYXRpb25Qb3NpdGlvbkRhdGFJT1MubW07IHBhdGggPSBNb2R1bGVzL2dlb2xvY2F0aW9u
L2lvcy9HZW9sb2NhdGlvblBvc2l0aW9uRGF0YUlPUy5tbTsgc291cmNlVHJlZSA9IFNPVVJDRV9S
T09UOyB9OworCQk4Mzc5NjRDRTFGOERCNjlBMDAyMThFQTAgLyogR2VvbG9jYXRpb25Qb3NpdGlv
bkRhdGFDb2NvYS5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgbmFtZSA9IEdl
b2xvY2F0aW9uUG9zaXRpb25EYXRhQ29jb2EubW07IHBhdGggPSBNb2R1bGVzL2dlb2xvY2F0aW9u
L2NvY29hL0dlb2xvY2F0aW9uUG9zaXRpb25EYXRhQ29jb2EubW07IHNvdXJjZVRyZWUgPSBTT1VS
Q0VfUk9PVDsgfTsKIAkJODM3QTgwMTIxRTFFMTI3MzAwMDI2QjlGIC8qIGVuICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dC5wbGlzdC5zdHJpbmdz
ZGljdDsgbmFtZSA9IGVuOyBwYXRoID0gZW4ubHByb2ovTG9jYWxpemFibGUuc3RyaW5nc2RpY3Q7
IHNvdXJjZVRyZWUgPSBTT1VSQ0VfUk9PVDsgfTsKIAkJODM3QjdEMUYxREMzRjU0QzAwRDA1MUZD
IC8qIFZhbGlkYXRpb25CdWJibGVJT1MubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpj
cHA7IHBhdGggPSBWYWxpZGF0aW9uQnViYmxlSU9TLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQk4MzdDMEI3MzI0REIzODQyMDA1RDU5NTkgLyogRHluYW1pY3NDb21wcmVzc29yT3B0
aW9ucy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBEeW5hbWljc0NvbXByZXNzb3JPcHRpb25zLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0yMTYwNiw2ICsyMTYxMCwxNCBAQAogCQkJcGF0aCA9
IGNvbnRleHQ7CiAJCQlzb3VyY2VUcmVlID0gIjxncm91cD4iOwogCQl9OworCQk0NjVDM0QxOTI3
Qjk5MUM4MDAyMTMwMkYgLyogY29jb2EgKi8gPSB7CisJCQlpc2EgPSBQQlhHcm91cDsKKwkJCWNo
aWxkcmVuID0gKAorCQkJCTgzNzk2NENFMUY4REI2OUEwMDIxOEVBMCAvKiBHZW9sb2NhdGlvblBv
c2l0aW9uRGF0YUNvY29hLm1tICovLAorCQkJKTsKKwkJCXBhdGggPSBjb2NvYTsKKwkJCXNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7CisJCX07CiAJCTQ2Njk0Q0RFMjc1OTQ0NkQwMEUzMTUwRSAvKiBz
aGFyZWQgKi8gPSB7CiAJCQlpc2EgPSBQQlhHcm91cDsKIAkJCWNoaWxkcmVuID0gKApAQCAtMjUx
MDMsMTQgKzI1MTE1LDYgQEAKIAkJCXBhdGggPSBiZWFjb247CiAJCQlzb3VyY2VUcmVlID0gIjxn
cm91cD4iOwogCQl9OwotCQk4Mzc5NjRDQzFGOERCNjdEMDAyMThFQTAgLyogaW9zICovID0gewot
CQkJaXNhID0gUEJYR3JvdXA7Ci0JCQljaGlsZHJlbiA9ICgKLQkJCQk4Mzc5NjRDRTFGOERCNjlB
MDAyMThFQTAgLyogR2VvbG9jYXRpb25Qb3NpdGlvbkRhdGFJT1MubW0gKi8sCi0JCQkpOwotCQkJ
bmFtZSA9IGlvczsKLQkJCXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7Ci0JCX07CiAJCTgzRkIzMzY1
MUY1MDhBMTcwMDk4NkU1NCAvKiBlbnRyaWVzYXBpICovID0gewogCQkJaXNhID0gUEJYR3JvdXA7
CiAJCQljaGlsZHJlbiA9ICgKQEAgLTI2MTIxLDcgKzI2MTI1LDcgQEAKIAkJOTcxMTQ1RkYxNEVG
MDA3OTAwNjc0RkQ5IC8qIGdlb2xvY2F0aW9uICovID0gewogCQkJaXNhID0gUEJYR3JvdXA7CiAJ
CQljaGlsZHJlbiA9ICgKLQkJCQk4Mzc5NjRDQzFGOERCNjdEMDAyMThFQTAgLyogaW9zICovLAor
CQkJCTQ2NUMzRDE5MjdCOTkxQzgwMDIxMzAyRiAvKiBjb2NvYSAqLywKIAkJCQk5NzQ2QUYxMzE0
RjREREU2MDAzRTdBNzAgLyogR2VvbG9jYXRpb24uY3BwICovLAogCQkJCTk3NDZBRjE0MTRGNERE
RTYwMDNFN0E3MCAvKiBHZW9sb2NhdGlvbi5oICovLAogCQkJCTk3NDZBRjE1MTRGNERERTYwMDNF
N0E3MCAvKiBHZW9sb2NhdGlvbi5pZGwgKi8sCkBAIC0yNjgzMyw2ICsyNjgzNyw4IEBACiAJCQkJ
QzFGN0I3MkYyNDQ4RjJBQzAwMTI0NTU3IC8qIEFHWENvbXBpbGVyU2VydmljZS5jcHAgKi8sCiAJ
CQkJQzFGN0I3MzAyNDQ4RjJBQzAwMTI0NTU3IC8qIEFHWENvbXBpbGVyU2VydmljZS5oICovLAog
CQkJCUExNDA5MEZBMUFBNTFFMUQwMDkxMTkxQSAvKiBDb250ZW50RmlsdGVyVW5ibG9ja0hhbmRs
ZXJDb2NvYS5tbSAqLywKKwkJCQk0Njg4RTk3RjI3QjZCNDQ0MDA1NjdDRDIgLyogQ29yZUxvY2F0
aW9uR2VvbG9jYXRpb25Qcm92aWRlci5oICovLAorCQkJCTQ2ODhFOTdEMjdCNkI0NDMwMDU2N0NE
MiAvKiBDb3JlTG9jYXRpb25HZW9sb2NhdGlvblByb3ZpZGVyLm1tICovLAogCQkJCUNEN0QzMzQ1
MUM3QTE2QkYwMDA0MTI5MyAvKiBDb3JlVmlkZW9Tb2Z0TGluay5jcHAgKi8sCiAJCQkJQ0Q3RDMz
NDYxQzdBMTZCRjAwMDQxMjkzIC8qIENvcmVWaWRlb1NvZnRMaW5rLmggKi8sCiAJCQkJRjQ2MkU3
OUYyNDJBREEzQzAwMjA0REREIC8qIERyYWdEYXRhQ29jb2EubW0gKi8sCkBAIC0zMzkxOSw2ICsz
MzkyNSw3IEBACiAJCQkJM0Y4MDIwMzcxRTlFNDdDNTAwREVDNjFEIC8qIENvcmVBdWRpb0NhcHR1
cmVEZXZpY2VNYW5hZ2VyLmggaW4gSGVhZGVycyAqLywKIAkJCQk0MUZDQ0MzQjI3NDY2NzU2MDA4
OTJBRDYgLyogQ29yZUF1ZGlvQ2FwdHVyZVNvdXJjZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMDdB
RkY0MjIxRUZCMTQ0OTAwQjU0NUIzIC8qIENvcmVBdWRpb0NhcHR1cmVTb3VyY2VJT1MuaCBpbiBI
ZWFkZXJzICovLAorCQkJCTQ2ODhFOTgwMjdCNkI0NTAwMDU2N0NEMiAvKiBDb3JlTG9jYXRpb25H
ZW9sb2NhdGlvblByb3ZpZGVyLmggaW4gSGVhZGVycyAqLywKIAkJCQlDRDdEMzM0ODFDN0ExNkJG
MDAwNDEyOTMgLyogQ29yZVZpZGVvU29mdExpbmsuaCBpbiBIZWFkZXJzICovLAogCQkJCTg2MkYx
MjlFMThDMTU3NkYwMDVDNTRBRiAvKiBDb3VudGVkVXNlckFjdGl2aXR5LmggaW4gSGVhZGVycyAq
LywKIAkJCQlBODBFNkQwNDBBMTk4OUNBMDA3RkI4QzUgLyogQ291bnRlci5oIGluIEhlYWRlcnMg
Ki8sCkBAIC0zODY5MiwxMyArMzg2OTksMTQgQEAKIAkJCQk1MThGNEZGNjE5NENBNEU2MDA4MUJB
QUUgLyogR2FtZXBhZEJ1dHRvbi5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk1MTZDNjIyMDE5NTBE
NDg3MDAzMzdFNzUgLyogR2FtZXBhZEV2ZW50LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTUxQTlE
OUU5MTk1QjkzMUYwMDFCMkI1QyAvKiBHYW1lcGFkTWFuYWdlci5jcHAgaW4gU291cmNlcyAqLywK
LQkJCQk4Mzc5NjRDRjFGOERCNjlEMDAyMThFQTAgLyogR2VvbG9jYXRpb25Qb3NpdGlvbkRhdGFJ
T1MubW0gaW4gU291cmNlcyAqLywKKwkJCQk4Mzc5NjRDRjFGOERCNjlEMDAyMThFQTAgLyogR2Vv
bG9jYXRpb25Qb3NpdGlvbkRhdGFDb2NvYS5tbSBpbiBTb3VyY2VzICovLAogCQkJCTZFNzJGNTRF
MjI5RENEMTAwMEIzRTE1MSAvKiBHcmFwaGljc0NvbnRleHRHTEFOR0xFLmNwcCBpbiBTb3VyY2Vz
ICovLAogCQkJCTdDM0U1MTBCMThERjhGMzUwMEMxMTJGNyAvKiBIVE1MQ29udmVydGVyLm1tIGlu
IFNvdXJjZXMgKi8sCiAJCQkJQThEMDZCM0EwQTI2NURDRDAwNUU3MjAzIC8qIEhUTUxOYW1lcy5j
cHAgaW4gU291cmNlcyAqLywKIAkJCQkxQUM5MDBDMzE5NDNDMEZDMDA4NjI1QjUgLyogSFRUUEhl
YWRlck5hbWVzLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUNEMjdBRTUxMjJBOTg2ODcwMDk0N0ZG
OSAvKiBJbWFnZVJvdGF0aW9uU2Vzc2lvblZULm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJMDcwRTJE
MEYyNkYyNTA4OTAwMTRBQUMzIC8qIEluYmFuZENoYXB0ZXJUcmFja1ByaXZhdGVBVkZPYmpDLm1t
IGluIFNvdXJjZXMgKi8sCisJCQkJNDZDQTk0MzEyN0I4Njk1ODAwRjRGNUZGIC8qIEluYmFuZFRl
eHRUcmFja1ByaXZhdGVBVkZPYmpDLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJQ0QwNjNGODIxRTIz
RkE4OTAwODEyQkUzIC8qIEluaXREYXRhUmVnaXN0cnkuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJ
OTM1QzQ3NzAwOUFDNEQ3MzAwQTZBQUI0IC8qIEtleUV2ZW50TWFjLm1tIGluIFNvdXJjZXMgKi8s
CiAJCQkJQ0RBOThFMEIxNjAzQ0Q2MDAwRkVBM0IxIC8qIExlZ2FjeUNETS5jcHAgaW4gU291cmNl
cyAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL1BhZ2UuY3BwCmluZGV4IDZhODVlODQzZDhiYmUzZDE5MmQ5N2Y0OTZiZDdl
YjQ1NDc0OWRiYTQuLmVmZTBlMzgwNmRjODQ4MDMwZDIyYjlkOTAyOTE2NzkzMzg1YmZkYWEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcGFnZS9QYWdlLmNwcApAQCAtNjksNiArNjksNyBAQAogI2luY2x1ZGUgIkZyYW1lVHJlZS5o
IgogI2luY2x1ZGUgIkZyYW1lVmlldy5oIgogI2luY2x1ZGUgIkZ1bGxzY3JlZW5NYW5hZ2VyLmgi
CisjaW5jbHVkZSAiR2VvbG9jYXRpb25Db250cm9sbGVyLmgiCiAjaW5jbHVkZSAiSFRNTEVsZW1l
bnQuaCIKICNpbmNsdWRlICJIVE1MSW1hZ2VFbGVtZW50LmgiCiAjaW5jbHVkZSAiSFRNTE1lZGlh
RWxlbWVudC5oIgpAQCAtMTMzMiw2ICsxMzMzLDExIEBAIHZvaWQgUGFnZTo6ZGlkQ29tbWl0TG9h
ZCgpCiAgICAgcmVzZXRUZXh0UmVjb2duaXRpb25SZXN1bHRzKCk7CiAgICAgcmVzZXRJbWFnZUFu
YWx5c2lzUXVldWUoKTsKICNlbmRpZgorCisjaWYgRU5BQkxFKEdFT0xPQ0FUSU9OKQorICAgIGlm
IChhdXRvKiBnZW9sb2NhdGlvbkNvbnRyb2xsZXIgPSBHZW9sb2NhdGlvbkNvbnRyb2xsZXI6OmZy
b20odGhpcykpCisgICAgICAgIGdlb2xvY2F0aW9uQ29udHJvbGxlci0+ZGlkTmF2aWdhdGVQYWdl
KCk7CisjZW5kaWYKIH0KIAogdm9pZCBQYWdlOjpkaWRGaW5pc2hMb2FkKCkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL0NvcmVMb2NhdGlvbkdlb2xvY2F0aW9uUHJv
dmlkZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL0NvcmVMb2NhdGlvbkdlb2xv
Y2F0aW9uUHJvdmlkZXIuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5jNTI0NmM4ODRhY2Y4ZjY5ZmNiOGY4YWM0YWNj
N2Y0Y2RlNjQ1Y2VkCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Y29jb2EvQ29yZUxvY2F0aW9uR2VvbG9jYXRpb25Qcm92aWRlci5oCkBAIC0wLDAgKzEsNjcgQEAK
Ky8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlz
dHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5D
LiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhF
IElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwg
QVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJF
TUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERB
VEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgPHd0Zi9Db21wbGV0aW9uSGFu
ZGxlci5oPgorI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CisjaW5jbHVkZSA8d3RmL1JldGFpblB0
ci5oPgorCitPQkpDX0NMQVNTIFdlYkNMTG9jYXRpb25NYW5hZ2VyOworCituYW1lc3BhY2UgV2Vi
Q29yZSB7CisKK2NsYXNzIEdlb2xvY2F0aW9uUG9zaXRpb25EYXRhOworY2xhc3MgUmVnaXN0cmFi
bGVEb21haW47CisKK2NsYXNzIFdFQkNPUkVfRVhQT1JUIENvcmVMb2NhdGlvbkdlb2xvY2F0aW9u
UHJvdmlkZXIgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOworcHVibGljOgorICAgIGNs
YXNzIENsaWVudCB7CisgICAgcHVibGljOgorICAgICAgICB2aXJ0dWFsIH5DbGllbnQoKSB7IH0K
KworICAgICAgICB2aXJ0dWFsIHZvaWQgZ2VvbG9jYXRpb25BdXRob3JpemF0aW9uR3JhbnRlZChj
b25zdCBTdHJpbmcmIC8qd2Vic2l0ZUlkZW50aWZpZXIqLykgeyB9CisgICAgICAgIHZpcnR1YWwg
dm9pZCBnZW9sb2NhdGlvbkF1dGhvcml6YXRpb25EZW5pZWQoY29uc3QgU3RyaW5nJiAvKndlYnNp
dGVJZGVudGlmaWVyKi8pIHsgfQorICAgICAgICB2aXJ0dWFsIHZvaWQgcG9zaXRpb25DaGFuZ2Vk
KGNvbnN0IFN0cmluZyYgd2Vic2l0ZUlkZW50aWZpZXIsIEdlb2xvY2F0aW9uUG9zaXRpb25EYXRh
JiYpID0gMDsKKyAgICAgICAgdmlydHVhbCB2b2lkIGVycm9yT2NjdXJyZWQoY29uc3QgU3RyaW5n
JiB3ZWJzaXRlSWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiBlcnJvck1lc3NhZ2UpID0gMDsKKyAg
ICAgICAgdmlydHVhbCB2b2lkIHJlc2V0R2VvbG9jYXRpb24oY29uc3QgU3RyaW5nJiB3ZWJzaXRl
SWRlbnRpZmllcikgPSAwOworICAgIH07CisKKyAgICBDb3JlTG9jYXRpb25HZW9sb2NhdGlvblBy
b3ZpZGVyKGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiwgQ2xpZW50Jik7CisgICAgfkNvcmVMb2Nh
dGlvbkdlb2xvY2F0aW9uUHJvdmlkZXIoKTsKKworICAgIHZvaWQgc3RhcnQoKTsKKyAgICB2b2lk
IHN0b3AoKTsKKworICAgIHZvaWQgc2V0RW5hYmxlSGlnaEFjY3VyYWN5KGJvb2wpOworCisgICAg
c3RhdGljIHZvaWQgcmVxdWVzdEF1dGhvcml6YXRpb24oY29uc3QgUmVnaXN0cmFibGVEb21haW4m
LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmKTsKKworcHJpdmF0ZToKKyAgICBSZXRh
aW5QdHI8V2ViQ0xMb2NhdGlvbk1hbmFnZXI+IG1fbG9jYXRpb25NYW5hZ2VyOworfTsKKworfSAv
LyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Y29jb2EvQ29yZUxvY2F0aW9uR2VvbG9jYXRpb25Qcm92aWRlci5tbSBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2NvY29hL0NvcmVMb2NhdGlvbkdlb2xvY2F0aW9uUHJvdmlkZXIubW0KbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uZjI5NzhlZGI4MjQwN2I5YmFjMTgxZjVkMDcwOWEyNmI4MjY0MWMwMAotLS0gL2Rldi9u
dWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL0NvcmVMb2NhdGlvbkdlb2xv
Y2F0aW9uUHJvdmlkZXIubW0KQEAgLTAsMCArMSwyNjggQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMp
IDIwMjIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAor
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIu
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9S
UyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09O
VFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJV
U0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZ
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW1wb3J0
ICJjb25maWcuaCIKKyNpbXBvcnQgIkNvcmVMb2NhdGlvbkdlb2xvY2F0aW9uUHJvdmlkZXIuaCIK
KworI2ltcG9ydCAiR2VvbG9jYXRpb25Qb3NpdGlvbkRhdGEuaCIKKyNpbXBvcnQgIlJlZ2lzdHJh
YmxlRG9tYWluLmgiCisjaW1wb3J0IDxDb3JlTG9jYXRpb24vQ0xMb2NhdGlvbk1hbmFnZXJEZWxl
Z2F0ZS5oPgorI2ltcG9ydCA8Q29yZUxvY2F0aW9uL0NvcmVMb2NhdGlvbi5oPgorI2ltcG9ydCA8
d3RmL1NvZnRMaW5raW5nLmg+CisKKyNpZiBVU0UoQVBQTEVfSU5URVJOQUxfU0RLKQorI2ltcG9y
dCA8Q29yZUxvY2F0aW9uL0NMTG9jYXRpb25NYW5hZ2VyX1ByaXZhdGUuaD4KKyNlbmRpZgorCitT
T0ZUX0xJTktfRlJBTUVXT1JLKENvcmVMb2NhdGlvbikKKworU09GVF9MSU5LX0NMQVNTKENvcmVM
b2NhdGlvbiwgQ0xMb2NhdGlvbk1hbmFnZXIpCitTT0ZUX0xJTktfQ0xBU1MoQ29yZUxvY2F0aW9u
LCBDTExvY2F0aW9uKQorCitTT0ZUX0xJTktfQ09OU1RBTlQoQ29yZUxvY2F0aW9uLCBrQ0xMb2Nh
dGlvbkFjY3VyYWN5QmVzdCwgZG91YmxlKQorU09GVF9MSU5LX0NPTlNUQU5UKENvcmVMb2NhdGlv
biwga0NMTG9jYXRpb25BY2N1cmFjeUh1bmRyZWRNZXRlcnMsIGRvdWJsZSkKKworI2RlZmluZSBr
Q0xMb2NhdGlvbkFjY3VyYWN5QmVzdCBnZXRrQ0xMb2NhdGlvbkFjY3VyYWN5QmVzdCgpCisjZGVm
aW5lIGtDTExvY2F0aW9uQWNjdXJhY3lIdW5kcmVkTWV0ZXJzIGdldGtDTExvY2F0aW9uQWNjdXJh
Y3lIdW5kcmVkTWV0ZXJzKCkKKworc3RhdGljIGJvb2wgaXNBdXRob3JpemF0aW9uR3JhbnRlZChD
TEF1dGhvcml6YXRpb25TdGF0dXMgYXV0aG9yaXphdGlvblN0YXR1cykKK3sKKyAgICByZXR1cm4g
YXV0aG9yaXphdGlvblN0YXR1cyA9PSBrQ0xBdXRob3JpemF0aW9uU3RhdHVzQXV0aG9yaXplZEFs
d2F5cworI2lmIEhBVkUoQ09SRV9MT0NBVElPTl9BVVRIT1JJWkVEX1dIRU5fSU5fVVNFKQorICAg
ICAgICB8fCBhdXRob3JpemF0aW9uU3RhdHVzID09IGtDTEF1dGhvcml6YXRpb25TdGF0dXNBdXRo
b3JpemVkV2hlbkluVXNlCisjZW5kaWYKKyAgICAgICAgOworfQorCitAaW50ZXJmYWNlIFdlYkNM
TG9jYXRpb25NYW5hZ2VyIDogTlNPYmplY3Q8Q0xMb2NhdGlvbk1hbmFnZXJEZWxlZ2F0ZT4KK0Bl
bmQKKworQGltcGxlbWVudGF0aW9uIFdlYkNMTG9jYXRpb25NYW5hZ2VyIHsKKyAgICBSZXRhaW5Q
dHI8Q0xMb2NhdGlvbk1hbmFnZXI+IF9sb2NhdGlvbk1hbmFnZXI7CisgICAgV2ViQ29yZTo6Q29y
ZUxvY2F0aW9uR2VvbG9jYXRpb25Qcm92aWRlcjo6Q2xpZW50KiBfY2xpZW50OworICAgIFN0cmlu
ZyBfd2Vic2l0ZUlkZW50aWZpZXI7CisgICAgQk9PTCBfaXNXYWl0aW5nRm9yQXV0aG9yaXphdGlv
bjsKK30KKworLSAoaW5zdGFuY2V0eXBlKWluaXRXaXRoV2Vic2l0ZUlkZW50aWZpZXI6KGNvbnN0
IFN0cmluZyYpd2Vic2l0ZUlkZW50aWZpZXIgY2xpZW50OihXZWJDb3JlOjpDb3JlTG9jYXRpb25H
ZW9sb2NhdGlvblByb3ZpZGVyOjpDbGllbnQmKWNsaWVudAoreworICAgIHNlbGYgPSBbc3VwZXIg
aW5pdF07CisgICAgaWYgKCFzZWxmKQorICAgICAgICByZXR1cm4gbmlsOworCisgICAgLy8gRklY
TUU6IENhbGwgaW5pdFdpdGhXZWJzaXRlSWRlbnRpZmllciBhbmQgcGFzcyB0aGUgd2Vic2l0ZUlk
ZW50aWZpZXIgd2hlbiBIQVZFKENPUkVfTE9DQVRJT05fV0VCU0lURV9JREVOVElGSUVSUykgb25j
ZSA8cmRhcjovLzg4ODM0MzAxID4gaXMgZml4ZWQuCisgICAgVU5VU0VEX1BBUkFNKHdlYnNpdGVJ
ZGVudGlmaWVyKTsKKyAgICBfbG9jYXRpb25NYW5hZ2VyID0gYWRvcHROUyhbYWxsb2NDTExvY2F0
aW9uTWFuYWdlckluc3RhbmNlKCkgaW5pdF0pOworICAgIF9jbGllbnQgPSAmY2xpZW50OworICAg
IF93ZWJzaXRlSWRlbnRpZmllciA9IHdlYnNpdGVJZGVudGlmaWVyOworICAgIFtfbG9jYXRpb25N
YW5hZ2VyIHNldERlbGVnYXRlOnNlbGZdOworICAgIHJldHVybiBzZWxmOworfQorCistICh2b2lk
KWRlYWxsb2MKK3sKKyAgICBbX2xvY2F0aW9uTWFuYWdlciBzZXREZWxlZ2F0ZTpuaWxdOworICAg
IFtzdXBlciBkZWFsbG9jXTsKK30KKworLSAodm9pZClzdGFydAoreworICAgIGlmICghW2dldENM
TG9jYXRpb25NYW5hZ2VyQ2xhc3MoKSBsb2NhdGlvblNlcnZpY2VzRW5hYmxlZF0gfHwgIWlzQXV0
aG9yaXphdGlvbkdyYW50ZWQoW19sb2NhdGlvbk1hbmFnZXIgYXV0aG9yaXphdGlvblN0YXR1c10p
KSB7CisgICAgICAgIFtfbG9jYXRpb25NYW5hZ2VyIHN0b3BVcGRhdGluZ0xvY2F0aW9uXTsKKyAg
ICAgICAgX2NsaWVudC0+cmVzZXRHZW9sb2NhdGlvbihfd2Vic2l0ZUlkZW50aWZpZXIpOworICAg
ICAgICByZXR1cm47CisgICAgfQorCisgICAgW19sb2NhdGlvbk1hbmFnZXIgc3RhcnRVcGRhdGlu
Z0xvY2F0aW9uXTsKK30KKworLSAodm9pZClzdG9wCit7CisgICAgW19sb2NhdGlvbk1hbmFnZXIg
c3RvcFVwZGF0aW5nTG9jYXRpb25dOworfQorCistICh2b2lkKXNldEVuYWJsZUhpZ2hBY2N1cmFj
eTooQk9PTCloaWdoQWNjdXJhY3lFbmFibGVkCit7CisgICAgW19sb2NhdGlvbk1hbmFnZXIgc2V0
RGVzaXJlZEFjY3VyYWN5OmhpZ2hBY2N1cmFjeUVuYWJsZWQgPyBrQ0xMb2NhdGlvbkFjY3VyYWN5
QmVzdCA6IGtDTExvY2F0aW9uQWNjdXJhY3lIdW5kcmVkTWV0ZXJzXTsKK30KKworLSAodm9pZCly
ZXF1ZXN0R2VvbG9jYXRpb25BdXRob3JpemF0aW9uCit7CisgICAgaWYgKCFbZ2V0Q0xMb2NhdGlv
bk1hbmFnZXJDbGFzcygpIGxvY2F0aW9uU2VydmljZXNFbmFibGVkXSkgeworICAgICAgICBfY2xp
ZW50LT5nZW9sb2NhdGlvbkF1dGhvcml6YXRpb25EZW5pZWQoX3dlYnNpdGVJZGVudGlmaWVyKTsK
KyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIHN3aXRjaCAoW19sb2NhdGlvbk1hbmFnZXIg
YXV0aG9yaXphdGlvblN0YXR1c10pIHsKKyAgICBjYXNlIGtDTEF1dGhvcml6YXRpb25TdGF0dXNO
b3REZXRlcm1pbmVkOiB7CisgICAgICAgIGlmICghX2lzV2FpdGluZ0ZvckF1dGhvcml6YXRpb24p
IHsKKyAgICAgICAgICAgIF9pc1dhaXRpbmdGb3JBdXRob3JpemF0aW9uID0gWUVTOworICAgICAg
ICAgICAgW19sb2NhdGlvbk1hbmFnZXIgcmVxdWVzdFdoZW5JblVzZUF1dGhvcml6YXRpb25dOwor
ICAgICAgICB9CisgICAgICAgIGJyZWFrOworICAgIH0KKyAgICBjYXNlIGtDTEF1dGhvcml6YXRp
b25TdGF0dXNBdXRob3JpemVkQWx3YXlzOgorI2lmIEhBVkUoQ09SRV9MT0NBVElPTl9BVVRIT1JJ
WkVEX1dIRU5fSU5fVVNFKQorICAgIGNhc2Uga0NMQXV0aG9yaXphdGlvblN0YXR1c0F1dGhvcml6
ZWRXaGVuSW5Vc2U6CisjZW5kaWYKKyAgICAgICAgX2NsaWVudC0+Z2VvbG9jYXRpb25BdXRob3Jp
emF0aW9uR3JhbnRlZChfd2Vic2l0ZUlkZW50aWZpZXIpOworICAgICAgICBicmVhazsKKyAgICBj
YXNlIGtDTEF1dGhvcml6YXRpb25TdGF0dXNSZXN0cmljdGVkOgorICAgIGNhc2Uga0NMQXV0aG9y
aXphdGlvblN0YXR1c0RlbmllZDoKKyAgICAgICAgX2NsaWVudC0+Z2VvbG9jYXRpb25BdXRob3Jp
emF0aW9uRGVuaWVkKF93ZWJzaXRlSWRlbnRpZmllcik7CisgICAgICAgIGJyZWFrOworICAgIH0K
K30KKworLSAodm9pZClsb2NhdGlvbk1hbmFnZXJEaWRDaGFuZ2VBdXRob3JpemF0aW9uOihDTExv
Y2F0aW9uTWFuYWdlciAqKW1hbmFnZXIKK3sKKyAgICBhdXRvIHN0YXR1cyA9IFtfbG9jYXRpb25N
YW5hZ2VyIGF1dGhvcml6YXRpb25TdGF0dXNdOworICAgIGlmIChfaXNXYWl0aW5nRm9yQXV0aG9y
aXphdGlvbikgeworICAgICAgICBzd2l0Y2ggKHN0YXR1cykgeworICAgICAgICBjYXNlIGtDTEF1
dGhvcml6YXRpb25TdGF0dXNOb3REZXRlcm1pbmVkOgorICAgICAgICAgICAgLy8gVGhpcyBjYW4g
aGFwcGVuIGFmdGVyIHJlc3VtZSBpZiB0aGUgdXNlciBoYXMgc3RpbGwgbm90IGFuc3dlcmVkIHRo
ZSBkaWFsb2cuIFdlIGp1c3QgaGF2ZSB0byB3YWl0IGZvciB0aGUgcGVybWlzc2lvbi4KKyAgICAg
ICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIGtDTEF1dGhvcml6YXRpb25TdGF0dXNEZW5pZWQ6
CisgICAgICAgIGNhc2Uga0NMQXV0aG9yaXphdGlvblN0YXR1c1Jlc3RyaWN0ZWQ6CisgICAgICAg
ICAgICBfaXNXYWl0aW5nRm9yQXV0aG9yaXphdGlvbiA9IE5POworICAgICAgICAgICAgX2NsaWVu
dC0+Z2VvbG9jYXRpb25BdXRob3JpemF0aW9uRGVuaWVkKF93ZWJzaXRlSWRlbnRpZmllcik7Cisg
ICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBrQ0xBdXRob3JpemF0aW9uU3RhdHVzQXV0
aG9yaXplZEFsd2F5czoKKyNpZiBIQVZFKENPUkVfTE9DQVRJT05fQVVUSE9SSVpFRF9XSEVOX0lO
X1VTRSkKKyAgICAgICAgY2FzZSBrQ0xBdXRob3JpemF0aW9uU3RhdHVzQXV0aG9yaXplZFdoZW5J
blVzZToKKyNlbmRpZgorICAgICAgICAgICAgX2lzV2FpdGluZ0ZvckF1dGhvcml6YXRpb24gPSBO
TzsKKyAgICAgICAgICAgIF9jbGllbnQtPmdlb2xvY2F0aW9uQXV0aG9yaXphdGlvbkdyYW50ZWQo
X3dlYnNpdGVJZGVudGlmaWVyKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAg
fSBlbHNlIHsKKyAgICAgICAgaWYgKHN0YXR1cyA9PSBrQ0xBdXRob3JpemF0aW9uU3RhdHVzRGVu
aWVkIHx8IHN0YXR1cyA9PSBrQ0xBdXRob3JpemF0aW9uU3RhdHVzUmVzdHJpY3RlZCkgeworICAg
ICAgICAgICAgW19sb2NhdGlvbk1hbmFnZXIgc3RvcFVwZGF0aW5nTG9jYXRpb25dOworICAgICAg
ICAgICAgX2NsaWVudC0+cmVzZXRHZW9sb2NhdGlvbihfd2Vic2l0ZUlkZW50aWZpZXIpOworICAg
ICAgICB9CisgICAgfQorfQorCistICh2b2lkKWxvY2F0aW9uTWFuYWdlcjooQ0xMb2NhdGlvbk1h
bmFnZXIgKiltYW5hZ2VyIGRpZFVwZGF0ZUxvY2F0aW9uczooTlNBcnJheSAqKWxvY2F0aW9ucwor
eworICAgIFVOVVNFRF9QQVJBTShtYW5hZ2VyKTsKKyAgICBmb3IgKENMTG9jYXRpb24gKmxvY2F0
aW9uIGluIGxvY2F0aW9ucykKKyAgICAgICAgX2NsaWVudC0+cG9zaXRpb25DaGFuZ2VkKF93ZWJz
aXRlSWRlbnRpZmllciwgV2ViQ29yZTo6R2VvbG9jYXRpb25Qb3NpdGlvbkRhdGEgeyBsb2NhdGlv
biB9KTsKK30KKworLSAodm9pZClsb2NhdGlvbk1hbmFnZXI6KENMTG9jYXRpb25NYW5hZ2VyICop
bWFuYWdlciBkaWRGYWlsV2l0aEVycm9yOihOU0Vycm9yICopZXJyb3IKK3sKKyAgICBBU1NFUlQo
ZXJyb3IpOworICAgIFVOVVNFRF9QQVJBTShtYW5hZ2VyKTsKKworICAgIGlmIChbZXJyb3IgY29k
ZV0gPT0ga0NMRXJyb3JEZW5pZWQpIHsKKyAgICAgICAgLy8gSWdub3JlIHRoZSBlcnJvciBoZXJl
IGFuZCBsZXQgbG9jYXRpb25NYW5hZ2VyOmRpZENoYW5nZUF1dGhvcml6YXRpb25TdGF0dXM6IGhh
bmRsZSB0aGUgcGVybWlzc2lvbi4KKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIE5TU3Ry
aW5nICplcnJvck1lc3NhZ2UgPSBbZXJyb3IgbG9jYWxpemVkRGVzY3JpcHRpb25dOworICAgIF9j
bGllbnQtPmVycm9yT2NjdXJyZWQoX3dlYnNpdGVJZGVudGlmaWVyLCBlcnJvck1lc3NhZ2UpOwor
fQorCitAZW5kCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworQ29yZUxvY2F0aW9uR2VvbG9jYXRp
b25Qcm92aWRlcjo6Q29yZUxvY2F0aW9uR2VvbG9jYXRpb25Qcm92aWRlcihjb25zdCBSZWdpc3Ry
YWJsZURvbWFpbiYgcmVnaXN0cmFibGVEb21haW4sIENsaWVudCYgY2xpZW50KQorICAgIDogbV9s
b2NhdGlvbk1hbmFnZXIoYWRvcHROUyhbW1dlYkNMTG9jYXRpb25NYW5hZ2VyIGFsbG9jXSBpbml0
V2l0aFdlYnNpdGVJZGVudGlmaWVyOnJlZ2lzdHJhYmxlRG9tYWluLnN0cmluZygpIGNsaWVudDpj
bGllbnRdKSkKK3sKKyAgICAvLyBSZXF1ZXN0IHBlcm1pc3Npb24gZm9yIHRoZSBhcHAgdG8gdXNl
IGdlb2xvY2F0aW9uIChpZiBpdCBkb2Vzbid0IGFscmVhZHkpLgorICAgIFttX2xvY2F0aW9uTWFu
YWdlciByZXF1ZXN0R2VvbG9jYXRpb25BdXRob3JpemF0aW9uXTsKK30KKworQ29yZUxvY2F0aW9u
R2VvbG9jYXRpb25Qcm92aWRlcjo6fkNvcmVMb2NhdGlvbkdlb2xvY2F0aW9uUHJvdmlkZXIoKQor
eworICAgIFttX2xvY2F0aW9uTWFuYWdlciBzdG9wXTsKK30KKwordm9pZCBDb3JlTG9jYXRpb25H
ZW9sb2NhdGlvblByb3ZpZGVyOjpzdGFydCgpCit7CisgICAgW21fbG9jYXRpb25NYW5hZ2VyIHN0
YXJ0XTsKK30KKwordm9pZCBDb3JlTG9jYXRpb25HZW9sb2NhdGlvblByb3ZpZGVyOjpzdG9wKCkK
K3sKKyAgICBbbV9sb2NhdGlvbk1hbmFnZXIgc3RvcF07Cit9CisKK3ZvaWQgQ29yZUxvY2F0aW9u
R2VvbG9jYXRpb25Qcm92aWRlcjo6c2V0RW5hYmxlSGlnaEFjY3VyYWN5KGJvb2wgaGlnaEFjY3Vy
YWN5RW5hYmxlZCkKK3sKKyAgICBbbV9sb2NhdGlvbk1hbmFnZXIgc2V0RW5hYmxlSGlnaEFjY3Vy
YWN5OmhpZ2hBY2N1cmFjeUVuYWJsZWRdOworfQorCitjbGFzcyBBdXRob3JpemF0aW9uQ2hlY2tl
ciBmaW5hbCA6IHB1YmxpYyBSZWZDb3VudGVkPEF1dGhvcml6YXRpb25DaGVja2VyPiwgcHVibGlj
IENvcmVMb2NhdGlvbkdlb2xvY2F0aW9uUHJvdmlkZXI6OkNsaWVudCB7CitwdWJsaWM6CisgICAg
c3RhdGljIFJlZjxBdXRob3JpemF0aW9uQ2hlY2tlcj4gY3JlYXRlKCkKKyAgICB7CisgICAgICAg
IHJldHVybiBhZG9wdFJlZigqbmV3IEF1dGhvcml6YXRpb25DaGVja2VyKTsKKyAgICB9CisKKyAg
ICB2b2lkIGNoZWNrKGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiByZWdpc3RyYWJsZURvbWFpbiwg
Q29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKKyAgICB7
CisgICAgICAgIG1fY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVy
KTsKKyAgICAgICAgbV9wcm92aWRlciA9IG1ha2VVbmlxdWU8Q29yZUxvY2F0aW9uR2VvbG9jYXRp
b25Qcm92aWRlcj4ocmVnaXN0cmFibGVEb21haW4sICp0aGlzKTsKKyAgICB9CisKK3ByaXZhdGU6
CisgICAgQXV0aG9yaXphdGlvbkNoZWNrZXIoKSA9IGRlZmF1bHQ7CisKKyAgICB2b2lkIGdlb2xv
Y2F0aW9uQXV0aG9yaXphdGlvbkdyYW50ZWQoY29uc3QgU3RyaW5nJikgZmluYWwKKyAgICB7Cisg
ICAgICAgIGlmIChtX2NvbXBsZXRpb25IYW5kbGVyKQorICAgICAgICAgICAgbV9jb21wbGV0aW9u
SGFuZGxlcih0cnVlKTsKKyAgICB9CisKKyAgICB2b2lkIGdlb2xvY2F0aW9uQXV0aG9yaXphdGlv
bkRlbmllZChjb25zdCBTdHJpbmcmKSBmaW5hbAorICAgIHsKKyAgICAgICAgaWYgKG1fY29tcGxl
dGlvbkhhbmRsZXIpCisgICAgICAgICAgICBtX2NvbXBsZXRpb25IYW5kbGVyKGZhbHNlKTsKKyAg
ICB9CisKKyAgICB2b2lkIHBvc2l0aW9uQ2hhbmdlZChjb25zdCBTdHJpbmcmLCBHZW9sb2NhdGlv
blBvc2l0aW9uRGF0YSYmKSBmaW5hbCB7IH0KKyAgICB2b2lkIGVycm9yT2NjdXJyZWQoY29uc3Qg
U3RyaW5nJiwgY29uc3QgU3RyaW5nJikgZmluYWwKKyAgICB7CisgICAgICAgIGlmIChtX2NvbXBs
ZXRpb25IYW5kbGVyKQorICAgICAgICAgICAgbV9jb21wbGV0aW9uSGFuZGxlcihmYWxzZSk7Cisg
ICAgfQorICAgIHZvaWQgcmVzZXRHZW9sb2NhdGlvbihjb25zdCBTdHJpbmcmKSBmaW5hbCB7IH0K
KworICAgIHN0ZDo6dW5pcXVlX3B0cjxDb3JlTG9jYXRpb25HZW9sb2NhdGlvblByb3ZpZGVyPiBt
X3Byb3ZpZGVyOworICAgIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+IG1fY29tcGxldGlv
bkhhbmRsZXI7Cit9OworCit2b2lkIENvcmVMb2NhdGlvbkdlb2xvY2F0aW9uUHJvdmlkZXI6OnJl
cXVlc3RBdXRob3JpemF0aW9uKGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiByZWdpc3RyYWJsZURv
bWFpbiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJiBjb21wbGV0aW9uSGFuZGxlcikK
K3sKKyAgICBhdXRvIGF1dGhvcml6YXRpb25DaGVja2VyID0gQXV0aG9yaXphdGlvbkNoZWNrZXI6
OmNyZWF0ZSgpOworICAgIGF1dGhvcml6YXRpb25DaGVja2VyLT5jaGVjayhyZWdpc3RyYWJsZURv
bWFpbiwgW2F1dGhvcml6YXRpb25DaGVja2VyLCBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUo
Y29tcGxldGlvbkhhbmRsZXIpXShib29sIGF1dGhvcml6ZWQpIG11dGFibGUgeworICAgICAgICBj
b21wbGV0aW9uSGFuZGxlcihhdXRob3JpemVkKTsKKyAgICB9KTsKK30KKworfSAvLyBuYW1lc3Bh
Y2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9HZW9s
b2NhdGlvbkNsaWVudE1vY2suY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9HZW9s
b2NhdGlvbkNsaWVudE1vY2suY3BwCmluZGV4IDlkNWVmYzgzZjM0ZWIxOGQ1OTlkYzEwY2FhOGZj
MGNhMzk5ZGIwYTIuLmZhNDIwODJlNTA1OWE5ZWNmMjY0Y2FhZjRjMjY1MzJmNGIyZTVkN2EgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svR2VvbG9jYXRpb25DbGllbnRN
b2NrLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL0dlb2xvY2F0aW9uQ2xp
ZW50TW9jay5jcHAKQEAgLTEzNiwxMCArMTM2LDExIEBAIHZvaWQgR2VvbG9jYXRpb25DbGllbnRN
b2NrOjpnZW9sb2NhdGlvbkRlc3Ryb3llZCgpCiAgICAgQVNTRVJUKCFtX2lzQWN0aXZlKTsKIH0K
IAotdm9pZCBHZW9sb2NhdGlvbkNsaWVudE1vY2s6OnN0YXJ0VXBkYXRpbmcoY29uc3QgU3RyaW5n
JiBhdXRob3JpemF0aW9uVG9rZW4pCit2b2lkIEdlb2xvY2F0aW9uQ2xpZW50TW9jazo6c3RhcnRV
cGRhdGluZyhjb25zdCBTdHJpbmcmIGF1dGhvcml6YXRpb25Ub2tlbiwgYm9vbCBlbmFibGVIaWdo
QWNjdXJhY3kpCiB7CiAgICAgQVNTRVJUKCFtX2lzQWN0aXZlKTsKICAgICBVTlVTRURfUEFSQU0o
YXV0aG9yaXphdGlvblRva2VuKTsKKyAgICBVTlVTRURfUEFSQU0oZW5hYmxlSGlnaEFjY3VyYWN5
KTsKICAgICBtX2lzQWN0aXZlID0gdHJ1ZTsKICAgICBhc3luY1VwZGF0ZUNvbnRyb2xsZXIoKTsK
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svR2VvbG9jYXRpb25D
bGllbnRNb2NrLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL0dlb2xvY2F0aW9uQ2xp
ZW50TW9jay5oCmluZGV4IDJmYTc1ZTA1N2E1M2Q3ZTgxOGNjZmFmZWU3MDI0M2RkNTQ4MjE4NDUu
LmY4YmFjMzhiNWI2Y2NjOGNjMDhmODcwNzFlYmM3NWQ2NWIzMTA2NDAgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svR2VvbG9jYXRpb25DbGllbnRNb2NrLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9HZW9sb2NhdGlvbkNsaWVudE1vY2suaApAQCAt
NTksNyArNTksNyBAQCBwdWJsaWM6CiAKICAgICAvLyBHZW9sb2NhdGlvbkNsaWVudAogICAgIHZv
aWQgZ2VvbG9jYXRpb25EZXN0cm95ZWQoKSBvdmVycmlkZTsKLSAgICB2b2lkIHN0YXJ0VXBkYXRp
bmcoY29uc3QgU3RyaW5nJiBhdXRob3JpemF0aW9uVG9rZW4pIG92ZXJyaWRlOworICAgIHZvaWQg
c3RhcnRVcGRhdGluZyhjb25zdCBTdHJpbmcmIGF1dGhvcml6YXRpb25Ub2tlbiwgYm9vbCBlbmFi
bGVIaWdoQWNjdXJhY3kpIG92ZXJyaWRlOwogICAgIHZvaWQgc3RvcFVwZGF0aW5nKCkgb3ZlcnJp
ZGU7CiAgICAgdm9pZCBzZXRFbmFibGVIaWdoQWNjdXJhY3koYm9vbCkgb3ZlcnJpZGU7CiAgICAg
c3RkOjpvcHRpb25hbDxHZW9sb2NhdGlvblBvc2l0aW9uRGF0YT4gbGFzdFBvc2l0aW9uKCkgb3Zl
cnJpZGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NvdXJjZXNDb2NvYS50eHQgYi9Tb3Vy
Y2UvV2ViS2l0L1NvdXJjZXNDb2NvYS50eHQKaW5kZXggZmU1MDZmNzEzMzRhZDU0NmViYmFiMDY0
MWNiMzcxYzI5OWRiMjZjYS4uYzkwNzQ2ZmQ3Y2QzZWEzOThkM2RjMmIyMGQ0ZDY4MDg2OTFiZWJl
NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9Tb3VyY2VzQ29jb2EudHh0CisrKyBiL1NvdXJj
ZS9XZWJLaXQvU291cmNlc0NvY29hLnR4dApAQCAtNDI2LDYgKzQyNiw3IEBAIFVJUHJvY2Vzcy9D
b2NvYS9VSVJlbW90ZU9iamVjdFJlZ2lzdHJ5LmNwcAogVUlQcm9jZXNzL0NvY29hL1VzZXJNZWRp
YUNhcHR1cmVNYW5hZ2VyUHJveHkuY3BwCiBVSVByb2Nlc3MvQ29jb2EvVXNlck1lZGlhUGVybWlz
c2lvblJlcXVlc3RNYW5hZ2VyUHJveHkubW0KIFVJUHJvY2Vzcy9Db2NvYS9WaWRlb0Z1bGxzY3Jl
ZW5NYW5hZ2VyUHJveHkubW0KK1VJUHJvY2Vzcy9Db2NvYS9XZWJHZW9sb2NhdGlvbk1hbmFnZXJQ
cm94eUNvY29hLmNwcAogVUlQcm9jZXNzL0NvY29hL1dlYlBhZ2VQcm94eUNvY29hLm1tCiBVSVBy
b2Nlc3MvQ29jb2EvV2ViUGFzdGVib2FyZFByb3h5Q29jb2EubW0KIFVJUHJvY2Vzcy9Db2NvYS9X
ZWJQcmVmZXJlbmNlc0NvY29hLm1tCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9BUEkvQy9XS0dlb2xvY2F0aW9uTWFuYWdlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9BUEkvQy9XS0dlb2xvY2F0aW9uTWFuYWdlci5jcHAKaW5kZXggODg4Yjc1YmM3Y2VjODlkMTZl
MDdmNjE3ZTdiYjJjZTI5NzlmYTYyMy4uNWYwZjA5ZDRmZmIzMWY4OGQ2MTA3NmM5OGMxNmRkN2Nj
N2I2ZjUwNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tHZW9s
b2NhdGlvbk1hbmFnZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dL
R2VvbG9jYXRpb25NYW5hZ2VyLmNwcApAQCAtNDAsNyArNDAsOSBAQCBXS1R5cGVJRCBXS0dlb2xv
Y2F0aW9uTWFuYWdlckdldFR5cGVJRCgpCiAKIHZvaWQgV0tHZW9sb2NhdGlvbk1hbmFnZXJTZXRQ
cm92aWRlcihXS0dlb2xvY2F0aW9uTWFuYWdlclJlZiBnZW9sb2NhdGlvbk1hbmFnZXJSZWYsIGNv
bnN0IFdLR2VvbG9jYXRpb25Qcm92aWRlckJhc2UqIHdrUHJvdmlkZXIpCiB7CisjaWYgIVBMQVRG
T1JNKElPU19GQU1JTFkpCiAgICAgdG9JbXBsKGdlb2xvY2F0aW9uTWFuYWdlclJlZiktPnNldFBy
b3ZpZGVyKG1ha2VVbmlxdWU8V2ViR2VvbG9jYXRpb25Qcm92aWRlcj4od2tQcm92aWRlcikpOwor
I2VuZGlmCiB9CiAKIHZvaWQgV0tHZW9sb2NhdGlvbk1hbmFnZXJQcm92aWRlckRpZENoYW5nZVBv
c2l0aW9uKFdLR2VvbG9jYXRpb25NYW5hZ2VyUmVmIGdlb2xvY2F0aW9uTWFuYWdlclJlZiwgV0tH
ZW9sb2NhdGlvblBvc2l0aW9uUmVmIHBvc2l0aW9uUmVmKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQ29jb2EvV2ViR2VvbG9jYXRpb25NYW5hZ2VyUHJveHlDb2NvYS5jcHAg
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XZWJHZW9sb2NhdGlvbk1hbmFnZXJQcm94
eUNvY29hLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi45MDA4YzIwNWIzY2Q1ZTk0NDU5Yzg5YmI2ODk3N2QyYjFi
NzY0MzYxCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2Ev
V2ViR2VvbG9jYXRpb25NYW5hZ2VyUHJveHlDb2NvYS5jcHAKQEAgLTAsMCArMSwxMDMgQEAKKy8q
CisgKiBDb3B5cmlnaHQgKEMpIDIwMjIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJp
YnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBB
TkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQ
TEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVO
VCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEs
IE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiV2ViR2VvbG9jYXRpb25N
YW5hZ2VyUHJveHkuaCIKKworI2luY2x1ZGUgIldlYkdlb2xvY2F0aW9uTWFuYWdlck1lc3NhZ2Vz
LmgiCisKK25hbWVzcGFjZSBXZWJLaXQgeworCisvLyBGSVhNRTogVGhpcyBzaG91bGQgYmUgdXNl
ZCBieSBhbGwgQ29jb2EgcG9ydHMKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZKQorCit2b2lkIFdl
Ykdlb2xvY2F0aW9uTWFuYWdlclByb3h5Ojpwb3NpdGlvbkNoYW5nZWQoY29uc3QgU3RyaW5nJiB3
ZWJzaXRlSWRlbnRpZmllciwgV2ViQ29yZTo6R2VvbG9jYXRpb25Qb3NpdGlvbkRhdGEmJiBwb3Np
dGlvbikKK3sKKyAgICBhdXRvIHJlZ2lzdHJhYmxlRG9tYWluID0gV2ViQ29yZTo6UmVnaXN0cmFi
bGVEb21haW46OnVuY2hlY2tlZENyZWF0ZUZyb21SZWdpc3RyYWJsZURvbWFpblN0cmluZyh3ZWJz
aXRlSWRlbnRpZmllcik7CisgICAgYXV0byBpdCA9IG1fcGVyRG9tYWluRGF0YS5maW5kKHJlZ2lz
dHJhYmxlRG9tYWluKTsKKyAgICBpZiAoaXQgPT0gbV9wZXJEb21haW5EYXRhLmVuZCgpKQorICAg
ICAgICByZXR1cm47CisKKyAgICBhdXRvJiBwZXJEb21haW5EYXRhID0gKml0LT52YWx1ZTsKKyAg
ICBwZXJEb21haW5EYXRhLmxhc3RQb3NpdGlvbiA9IFdURk1vdmUocG9zaXRpb24pOworICAgIGZv
ciAoYXV0byBjb25uZWN0aW9uSUQgOiBwZXJEb21haW5EYXRhLndhdGNoZXJzKQorICAgICAgICBJ
UEM6OkNvbm5lY3Rpb246OnNlbmQoY29ubmVjdGlvbklELCBNZXNzYWdlczo6V2ViR2VvbG9jYXRp
b25NYW5hZ2VyOjpEaWRDaGFuZ2VQb3NpdGlvbihyZWdpc3RyYWJsZURvbWFpbiwgcGVyRG9tYWlu
RGF0YS5sYXN0UG9zaXRpb24udmFsdWUoKSksIDApOworfQorCit2b2lkIFdlYkdlb2xvY2F0aW9u
TWFuYWdlclByb3h5OjplcnJvck9jY3VycmVkKGNvbnN0IFN0cmluZyYgd2Vic2l0ZUlkZW50aWZp
ZXIsIGNvbnN0IFN0cmluZyYgZXJyb3JNZXNzYWdlKQoreworICAgIGF1dG8gcmVnaXN0cmFibGVE
b21haW4gPSBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbjo6dW5jaGVja2VkQ3JlYXRlRnJvbVJl
Z2lzdHJhYmxlRG9tYWluU3RyaW5nKHdlYnNpdGVJZGVudGlmaWVyKTsKKyAgICBhdXRvIGl0ID0g
bV9wZXJEb21haW5EYXRhLmZpbmQocmVnaXN0cmFibGVEb21haW4pOworICAgIGlmIChpdCA9PSBt
X3BlckRvbWFpbkRhdGEuZW5kKCkpCisgICAgICAgIHJldHVybjsKKworICAgIGF1dG8mIHBlckRv
bWFpbkRhdGEgPSAqaXQtPnZhbHVlOworICAgIGZvciAoYXV0byBjb25uZWN0aW9uSUQgOiBwZXJE
b21haW5EYXRhLndhdGNoZXJzKQorICAgICAgICBJUEM6OkNvbm5lY3Rpb246OnNlbmQoY29ubmVj
dGlvbklELCBNZXNzYWdlczo6V2ViR2VvbG9jYXRpb25NYW5hZ2VyOjpEaWRGYWlsVG9EZXRlcm1p
bmVQb3NpdGlvbihyZWdpc3RyYWJsZURvbWFpbiwgZXJyb3JNZXNzYWdlKSwgMCk7Cit9CisKK3Zv
aWQgV2ViR2VvbG9jYXRpb25NYW5hZ2VyUHJveHk6OnJlc2V0R2VvbG9jYXRpb24oY29uc3QgU3Ry
aW5nJiB3ZWJzaXRlSWRlbnRpZmllcikKK3sKKyAgICBhdXRvIHJlZ2lzdHJhYmxlRG9tYWluID0g
V2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW46OnVuY2hlY2tlZENyZWF0ZUZyb21SZWdpc3RyYWJs
ZURvbWFpblN0cmluZyh3ZWJzaXRlSWRlbnRpZmllcik7CisgICAgYXV0byBpdCA9IG1fcGVyRG9t
YWluRGF0YS5maW5kKHJlZ2lzdHJhYmxlRG9tYWluKTsKKyAgICBpZiAoaXQgPT0gbV9wZXJEb21h
aW5EYXRhLmVuZCgpKQorICAgICAgICByZXR1cm47CisKKyAgICBhdXRvJiBwZXJEb21haW5EYXRh
ID0gKml0LT52YWx1ZTsKKyAgICBmb3IgKGF1dG8gY29ubmVjdGlvbklEIDogcGVyRG9tYWluRGF0
YS53YXRjaGVycykKKyAgICAgICAgSVBDOjpDb25uZWN0aW9uOjpzZW5kKGNvbm5lY3Rpb25JRCwg
TWVzc2FnZXM6OldlYkdlb2xvY2F0aW9uTWFuYWdlcjo6UmVzZXRQZXJtaXNzaW9ucyhyZWdpc3Ry
YWJsZURvbWFpbiksIDApOworfQorCitib29sIFdlYkdlb2xvY2F0aW9uTWFuYWdlclByb3h5Ojpp
c1VwZGF0aW5nKGNvbnN0IFBlckRvbWFpbkRhdGEmIHBlckRvbWFpbkRhdGEpIGNvbnN0Cit7Cisg
ICAgcmV0dXJuICFwZXJEb21haW5EYXRhLndhdGNoZXJzLmlzRW1wdHkoKTsKK30KKworYm9vbCBX
ZWJHZW9sb2NhdGlvbk1hbmFnZXJQcm94eTo6aXNIaWdoQWNjdXJhY3lFbmFibGVkKGNvbnN0IFBl
ckRvbWFpbkRhdGEmIHBlckRvbWFpbkRhdGEpIGNvbnN0Cit7CisgICAgcmV0dXJuICFwZXJEb21h
aW5EYXRhLndhdGNoZXJzTmVlZGluZ0hpZ2hBY2N1cmFjeS5pc0VtcHR5KCk7Cit9CisKK3ZvaWQg
V2ViR2VvbG9jYXRpb25NYW5hZ2VyUHJveHk6OnByb3ZpZGVyU3RhcnRVcGRhdGluZyhQZXJEb21h
aW5EYXRhJiBwZXJEb21haW5EYXRhLCBjb25zdCBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiYg
cmVnaXN0cmFibGVEb21haW4pCit7CisgICAgQVNTRVJUKCFwZXJEb21haW5EYXRhLnByb3ZpZGVy
KTsKKyAgICBwZXJEb21haW5EYXRhLnByb3ZpZGVyID0gbWFrZVVuaXF1ZTxXZWJDb3JlOjpDb3Jl
TG9jYXRpb25HZW9sb2NhdGlvblByb3ZpZGVyPihyZWdpc3RyYWJsZURvbWFpbiwgKnRoaXMpOwor
ICAgIHBlckRvbWFpbkRhdGEucHJvdmlkZXItPnNldEVuYWJsZUhpZ2hBY2N1cmFjeSghcGVyRG9t
YWluRGF0YS53YXRjaGVyc05lZWRpbmdIaWdoQWNjdXJhY3kuaXNFbXB0eSgpKTsKKyAgICBwZXJE
b21haW5EYXRhLnByb3ZpZGVyLT5zdGFydCgpOworfQorCit2b2lkIFdlYkdlb2xvY2F0aW9uTWFu
YWdlclByb3h5Ojpwcm92aWRlclN0b3BVcGRhdGluZyhQZXJEb21haW5EYXRhJiBwZXJEb21haW5E
YXRhKQoreworICAgIHBlckRvbWFpbkRhdGEucHJvdmlkZXItPnN0b3AoKTsKK30KKwordm9pZCBX
ZWJHZW9sb2NhdGlvbk1hbmFnZXJQcm94eTo6cHJvdmlkZXJTZXRFbmFibGVkSGlnaEFjY3VyYWN5
KFBlckRvbWFpbkRhdGEmIHBlckRvbWFpbkRhdGEsIGJvb2wgZW5hYmxlZCkKK3sKKyAgICBwZXJE
b21haW5EYXRhLnByb3ZpZGVyLT5zZXRFbmFibGVIaWdoQWNjdXJhY3koZW5hYmxlZCk7Cit9CisK
KyNlbmRpZgorCit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJHZW9s
b2NhdGlvbk1hbmFnZXJQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJHZW9s
b2NhdGlvbk1hbmFnZXJQcm94eS5jcHAKaW5kZXggMDRmMzIyN2NkNTVjOTkyYTQyY2Q5NmEzZjI1
ZDY5N2FlZDc5NjVhMi4uMDVhNTBkMGYwYzgxYWVkNzQ0YjQyMGZhYTg5YmY5NjU4OGExMGNjYyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViR2VvbG9jYXRpb25NYW5hZ2Vy
UHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkdlb2xvY2F0aW9uTWFu
YWdlclByb3h5LmNwcApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTEs
IDIwMTIsIDIwMTMgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0
IChDKSAyMDExLTIwMjIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC01MCwzNCArNTAsMzkgQEAgUmVmPFdlYkdlb2xvY2F0
aW9uTWFuYWdlclByb3h5PiBXZWJHZW9sb2NhdGlvbk1hbmFnZXJQcm94eTo6Y3JlYXRlKFdlYlBy
b2Nlc3NQb28KIAogV2ViR2VvbG9jYXRpb25NYW5hZ2VyUHJveHk6OldlYkdlb2xvY2F0aW9uTWFu
YWdlclByb3h5KFdlYlByb2Nlc3NQb29sKiBwcm9jZXNzUG9vbCkKICAgICA6IFdlYkNvbnRleHRT
dXBwbGVtZW50KHByb2Nlc3NQb29sKQotICAgICwgbV9wcm92aWRlcihtYWtlVW5pcXVlPEFQSTo6
R2VvbG9jYXRpb25Qcm92aWRlcj4oKSkKIHsKICAgICBXZWJDb250ZXh0U3VwcGxlbWVudDo6cHJv
Y2Vzc1Bvb2woKS0+YWRkTWVzc2FnZVJlY2VpdmVyKE1lc3NhZ2VzOjpXZWJHZW9sb2NhdGlvbk1h
bmFnZXJQcm94eTo6bWVzc2FnZVJlY2VpdmVyTmFtZSgpLCAqdGhpcyk7CiB9CiAKLXZvaWQgV2Vi
R2VvbG9jYXRpb25NYW5hZ2VyUHJveHk6OnNldFByb3ZpZGVyKHN0ZDo6dW5pcXVlX3B0cjxBUEk6
Okdlb2xvY2F0aW9uUHJvdmlkZXI+JiYgcHJvdmlkZXIpCi17Ci0gICAgaWYgKCFwcm92aWRlcikK
LSAgICAgICAgbV9wcm92aWRlciA9IG1ha2VVbmlxdWU8QVBJOjpHZW9sb2NhdGlvblByb3ZpZGVy
PigpOwotICAgIGVsc2UKLSAgICAgICAgbV9wcm92aWRlciA9IFdURk1vdmUocHJvdmlkZXIpOwot
fQorV2ViR2VvbG9jYXRpb25NYW5hZ2VyUHJveHk6On5XZWJHZW9sb2NhdGlvbk1hbmFnZXJQcm94
eSgpID0gZGVmYXVsdDsKIAogLy8gV2ViQ29udGV4dFN1cHBsZW1lbnQKIAogdm9pZCBXZWJHZW9s
b2NhdGlvbk1hbmFnZXJQcm94eTo6cHJvY2Vzc1Bvb2xEZXN0cm95ZWQoKQogewotICAgIGJvb2wg
d2FzVXBkYXRpbmcgPSBpc1VwZGF0aW5nKCk7Ci0gICAgbV91cGRhdGVSZXF1ZXN0ZXJzLmNsZWFy
KCk7CisgICAgaWYgKG1fcGVyRG9tYWluRGF0YS5pc0VtcHR5KCkpCisgICAgICAgIHJldHVybjsK
IAotICAgIEFTU0VSVCghaXNVcGRhdGluZygpKTsKLSAgICBpZiAod2FzVXBkYXRpbmcpCisgICAg
bV9wZXJEb21haW5EYXRhLmNsZWFyKCk7CisjaWYgIVBMQVRGT1JNKElPU19GQU1JTFkpCisgICAg
aWYgKG1fcHJvdmlkZXIpCiAgICAgICAgIG1fcHJvdmlkZXItPnN0b3BVcGRhdGluZygqdGhpcyk7
CisjZW5kaWYKIH0KIAogdm9pZCBXZWJHZW9sb2NhdGlvbk1hbmFnZXJQcm94eTo6cHJvY2Vzc0Rp
ZENsb3NlKFdlYlByb2Nlc3NQcm94eSogd2ViUHJvY2Vzc1Byb3h5KQogewotICAgIHJlbW92ZVJl
cXVlc3Rlcih3ZWJQcm9jZXNzUHJveHkpOworICAgIGF1dG8qIGNvbm5lY3Rpb24gPSB3ZWJQcm9j
ZXNzUHJveHktPmNvbm5lY3Rpb24oKTsKKyAgICBpZiAoIWNvbm5lY3Rpb24pCisgICAgICAgIHJl
dHVybjsKKworICAgIFZlY3RvcjxXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbj4gYWZmZWN0ZWRE
b21haW5zOworICAgIGZvciAoYXV0byYgW3JlZ2lzdHJhYmxlRG9tYWluLCBwZXJEb21haW5EYXRh
XSA6IG1fcGVyRG9tYWluRGF0YSkgeworICAgICAgICBpZiAocGVyRG9tYWluRGF0YS0+d2F0Y2hl
cnMuY29udGFpbnMoY29ubmVjdGlvbi0+dW5pcXVlSUQoKSkpCisgICAgICAgICAgICBhZmZlY3Rl
ZERvbWFpbnMuYXBwZW5kKHJlZ2lzdHJhYmxlRG9tYWluKTsKKyAgICB9CisgICAgZm9yIChhdXRv
JiByZWdpc3RyYWJsZURvbWFpbiA6IGFmZmVjdGVkRG9tYWlucykKKyAgICAgICAgc3RvcFVwZGF0
aW5nKCpjb25uZWN0aW9uLCByZWdpc3RyYWJsZURvbWFpbik7CiB9CiAKIHZvaWQgV2ViR2VvbG9j
YXRpb25NYW5hZ2VyUHJveHk6OnJlZldlYkNvbnRleHRTdXBwbGVtZW50KCkKQEAgLTkyLDMwICs5
NywyMiBAQCB2b2lkIFdlYkdlb2xvY2F0aW9uTWFuYWdlclByb3h5OjpkZXJlZldlYkNvbnRleHRT
dXBwbGVtZW50KCkKIAogdm9pZCBXZWJHZW9sb2NhdGlvbk1hbmFnZXJQcm94eTo6cHJvdmlkZXJE
aWRDaGFuZ2VQb3NpdGlvbihXZWJHZW9sb2NhdGlvblBvc2l0aW9uKiBwb3NpdGlvbikKIHsKLSAg
ICBtX2xhc3RQb3NpdGlvbiA9IHBvc2l0aW9uLT5jb3JlUG9zaXRpb24oKTsKLQotICAgIGlmICgh
cHJvY2Vzc1Bvb2woKSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgcHJvY2Vzc1Bvb2woKS0+c2Vu
ZFRvQWxsUHJvY2Vzc2VzKE1lc3NhZ2VzOjpXZWJHZW9sb2NhdGlvbk1hbmFnZXI6OkRpZENoYW5n
ZVBvc2l0aW9uKG1fbGFzdFBvc2l0aW9uLnZhbHVlKCkpKTsKKyAgICBmb3IgKGF1dG8mIFtyZWdp
c3RyYWJsZURvbWFpbiwgcGVyRG9tYWluRGF0YV0gOiBtX3BlckRvbWFpbkRhdGEpIHsKKyAgICAg
ICAgcGVyRG9tYWluRGF0YS0+bGFzdFBvc2l0aW9uID0gcG9zaXRpb24tPmNvcmVQb3NpdGlvbigp
OworICAgICAgICBmb3IgKGF1dG8gY29ubmVjdGlvbklEIDogcGVyRG9tYWluRGF0YS0+d2F0Y2hl
cnMpCisgICAgICAgICAgICBJUEM6OkNvbm5lY3Rpb246OnNlbmQoY29ubmVjdGlvbklELCBNZXNz
YWdlczo6V2ViR2VvbG9jYXRpb25NYW5hZ2VyOjpEaWRDaGFuZ2VQb3NpdGlvbihyZWdpc3RyYWJs
ZURvbWFpbiwgcGVyRG9tYWluRGF0YS0+bGFzdFBvc2l0aW9uLnZhbHVlKCkpLCAwKTsKKyAgICB9
CiB9CiAKIHZvaWQgV2ViR2VvbG9jYXRpb25NYW5hZ2VyUHJveHk6OnByb3ZpZGVyRGlkRmFpbFRv
RGV0ZXJtaW5lUG9zaXRpb24oY29uc3QgU3RyaW5nJiBlcnJvck1lc3NhZ2UpCiB7Ci0gICAgaWYg
KCFwcm9jZXNzUG9vbCgpKQotICAgICAgICByZXR1cm47Ci0KLSAgICBwcm9jZXNzUG9vbCgpLT5z
ZW5kVG9BbGxQcm9jZXNzZXMoTWVzc2FnZXM6OldlYkdlb2xvY2F0aW9uTWFuYWdlcjo6RGlkRmFp
bFRvRGV0ZXJtaW5lUG9zaXRpb24oZXJyb3JNZXNzYWdlKSk7Ci19Ci0KLSNpZiBQTEFURk9STShJ
T1NfRkFNSUxZKQotdm9pZCBXZWJHZW9sb2NhdGlvbk1hbmFnZXJQcm94eTo6cmVzZXRQZXJtaXNz
aW9ucygpCi17Ci0gICAgcHJvY2Vzc1Bvb2woKS0+c2VuZFRvQWxsUHJvY2Vzc2VzKE1lc3NhZ2Vz
OjpXZWJHZW9sb2NhdGlvbk1hbmFnZXI6OlJlc2V0UGVybWlzc2lvbnMoKSk7CisgICAgZm9yIChh
dXRvJiBbcmVnaXN0cmFibGVEb21haW4sIHBlckRvbWFpbkRhdGFdIDogbV9wZXJEb21haW5EYXRh
KSB7CisgICAgICAgIGZvciAoYXV0byBjb25uZWN0aW9uSUQgOiBwZXJEb21haW5EYXRhLT53YXRj
aGVycykKKyAgICAgICAgICAgIElQQzo6Q29ubmVjdGlvbjo6c2VuZChjb25uZWN0aW9uSUQsIE1l
c3NhZ2VzOjpXZWJHZW9sb2NhdGlvbk1hbmFnZXI6OkRpZEZhaWxUb0RldGVybWluZVBvc2l0aW9u
KHJlZ2lzdHJhYmxlRG9tYWluLCBlcnJvck1lc3NhZ2UpLCAwKTsKKyAgICB9CiB9Ci0jZW5kaWYK
IAotdm9pZCBXZWJHZW9sb2NhdGlvbk1hbmFnZXJQcm94eTo6c3RhcnRVcGRhdGluZyhJUEM6OkNv
bm5lY3Rpb24mIGNvbm5lY3Rpb24sIFdlYlBhZ2VQcm94eUlkZW50aWZpZXIgcGFnZVByb3h5SUQs
IGNvbnN0IFN0cmluZyYgYXV0aG9yaXphdGlvblRva2VuKQordm9pZCBXZWJHZW9sb2NhdGlvbk1h
bmFnZXJQcm94eTo6c3RhcnRVcGRhdGluZyhJUEM6OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24sIGNv
bnN0IFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluJiByZWdpc3RyYWJsZURvbWFpbiwgV2ViUGFn
ZVByb3h5SWRlbnRpZmllciBwYWdlUHJveHlJRCwgY29uc3QgU3RyaW5nJiBhdXRob3JpemF0aW9u
VG9rZW4sIGJvb2wgZW5hYmxlSGlnaEFjY3VyYWN5KQogewogICAgIGF1dG8qIHBhZ2UgPSBXZWJQ
cm9jZXNzUHJveHk6OndlYlBhZ2UocGFnZVByb3h5SUQpOwogICAgIE1FU1NBR0VfQ0hFQ0socGFn
ZSk7CkBAIC0xMjMsNTAgKzEyMCwxMjEgQEAgdm9pZCBXZWJHZW9sb2NhdGlvbk1hbmFnZXJQcm94
eTo6c3RhcnRVcGRhdGluZyhJUEM6OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24sIFdlYlAKICAgICBh
dXRvIGlzVmFsaWRBdXRob3JpemF0aW9uVG9rZW4gPSBwYWdlLT5nZW9sb2NhdGlvblBlcm1pc3Np
b25SZXF1ZXN0TWFuYWdlcigpLmlzVmFsaWRBdXRob3JpemF0aW9uVG9rZW4oYXV0aG9yaXphdGlv
blRva2VuKTsKICAgICBNRVNTQUdFX0NIRUNLKGlzVmFsaWRBdXRob3JpemF0aW9uVG9rZW4pOwog
Ci0gICAgYm9vbCB3YXNVcGRhdGluZyA9IGlzVXBkYXRpbmcoKTsKLSAgICBtX3VwZGF0ZVJlcXVl
c3RlcnMuYWRkKCZjb25uZWN0aW9uLmNsaWVudCgpKTsKKyAgICBhdXRvJiBwZXJEb21haW5EYXRh
ID0gKm1fcGVyRG9tYWluRGF0YS5lbnN1cmUocmVnaXN0cmFibGVEb21haW4sIFtdIHsKKyAgICAg
ICAgcmV0dXJuIG1ha2VVbmlxdWU8UGVyRG9tYWluRGF0YT4oKTsKKyAgICB9KS5pdGVyYXRvci0+
dmFsdWU7CisKKyAgICBib29sIHdhc1VwZGF0aW5nID0gaXNVcGRhdGluZyhwZXJEb21haW5EYXRh
KTsKKyAgICBib29sIGhpZ2hBY2N1cmFjeVdhc0VuYWJsZWQgPSBpc0hpZ2hBY2N1cmFjeUVuYWJs
ZWQocGVyRG9tYWluRGF0YSk7CisKKyAgICBwZXJEb21haW5EYXRhLndhdGNoZXJzLmFkZChjb25u
ZWN0aW9uLnVuaXF1ZUlEKCkpOworICAgIGlmIChlbmFibGVIaWdoQWNjdXJhY3kpCisgICAgICAg
IHBlckRvbWFpbkRhdGEud2F0Y2hlcnNOZWVkaW5nSGlnaEFjY3VyYWN5LmFkZChjb25uZWN0aW9u
LnVuaXF1ZUlEKCkpOworCiAgICAgaWYgKCF3YXNVcGRhdGluZykgewotICAgICAgICBtX3Byb3Zp
ZGVyLT5zZXRFbmFibGVIaWdoQWNjdXJhY3koKnRoaXMsIGlzSGlnaEFjY3VyYWN5RW5hYmxlZCgp
KTsKLSAgICAgICAgbV9wcm92aWRlci0+c3RhcnRVcGRhdGluZygqdGhpcyk7Ci0gICAgfSBlbHNl
IGlmIChtX2xhc3RQb3NpdGlvbikKLSAgICAgICAgY29ubmVjdGlvbi5zZW5kKE1lc3NhZ2VzOjpX
ZWJHZW9sb2NhdGlvbk1hbmFnZXI6OkRpZENoYW5nZVBvc2l0aW9uKG1fbGFzdFBvc2l0aW9uLnZh
bHVlKCkpLCAwKTsKLX0KKyAgICAgICAgcHJvdmlkZXJTdGFydFVwZGF0aW5nKHBlckRvbWFpbkRh
dGEsIHJlZ2lzdHJhYmxlRG9tYWluKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICBpZiAo
IWhpZ2hBY2N1cmFjeVdhc0VuYWJsZWQgJiYgZW5hYmxlSGlnaEFjY3VyYWN5KQorICAgICAgICBw
cm92aWRlclNldEVuYWJsZWRIaWdoQWNjdXJhY3kocGVyRG9tYWluRGF0YSwgZW5hYmxlSGlnaEFj
Y3VyYWN5KTsKIAotdm9pZCBXZWJHZW9sb2NhdGlvbk1hbmFnZXJQcm94eTo6c3RvcFVwZGF0aW5n
KElQQzo6Q29ubmVjdGlvbiYgY29ubmVjdGlvbikKLXsKLSAgICByZW1vdmVSZXF1ZXN0ZXIoJmNv
bm5lY3Rpb24uY2xpZW50KCkpOworICAgIGlmIChwZXJEb21haW5EYXRhLmxhc3RQb3NpdGlvbikK
KyAgICAgICAgY29ubmVjdGlvbi5zZW5kKE1lc3NhZ2VzOjpXZWJHZW9sb2NhdGlvbk1hbmFnZXI6
OkRpZENoYW5nZVBvc2l0aW9uKHJlZ2lzdHJhYmxlRG9tYWluLCBwZXJEb21haW5EYXRhLmxhc3RQ
b3NpdGlvbi52YWx1ZSgpKSwgMCk7CiB9CiAKLXZvaWQgV2ViR2VvbG9jYXRpb25NYW5hZ2VyUHJv
eHk6OnJlbW92ZVJlcXVlc3Rlcihjb25zdCBJUEM6OkNvbm5lY3Rpb246OkNsaWVudCogY2xpZW50
KQordm9pZCBXZWJHZW9sb2NhdGlvbk1hbmFnZXJQcm94eTo6c3RvcFVwZGF0aW5nKElQQzo6Q29u
bmVjdGlvbiYgY29ubmVjdGlvbiwgY29uc3QgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4mIHJl
Z2lzdHJhYmxlRG9tYWluKQogewotICAgIGJvb2wgd2FzVXBkYXRpbmcgPSBpc1VwZGF0aW5nKCk7
Ci0gICAgYm9vbCBoaWdoQWNjdXJhY3lXYXNFbmFibGVkID0gaXNIaWdoQWNjdXJhY3lFbmFibGVk
KCk7CisgICAgYXV0byBpdCA9IG1fcGVyRG9tYWluRGF0YS5maW5kKHJlZ2lzdHJhYmxlRG9tYWlu
KTsKKyAgICBpZiAoaXQgPT0gbV9wZXJEb21haW5EYXRhLmVuZCgpKQorICAgICAgICByZXR1cm47
CiAKLSAgICBtX2hpZ2hBY2N1cmFjeVJlcXVlc3RlcnMucmVtb3ZlKGNsaWVudCk7Ci0gICAgbV91
cGRhdGVSZXF1ZXN0ZXJzLnJlbW92ZShjbGllbnQpOworICAgIGF1dG8mIHBlckRvbWFpbkRhdGEg
PSAqaXQtPnZhbHVlOworICAgIGJvb2wgd2FzVXBkYXRpbmcgPSBpc1VwZGF0aW5nKHBlckRvbWFp
bkRhdGEpOworICAgIGJvb2wgaGlnaEFjY3VyYWN5V2FzRW5hYmxlZCA9IGlzSGlnaEFjY3VyYWN5
RW5hYmxlZChwZXJEb21haW5EYXRhKTsKIAotICAgIGlmICh3YXNVcGRhdGluZyAmJiAhaXNVcGRh
dGluZygpKQotICAgICAgICBtX3Byb3ZpZGVyLT5zdG9wVXBkYXRpbmcoKnRoaXMpOworICAgIHBl
ckRvbWFpbkRhdGEud2F0Y2hlcnMucmVtb3ZlKGNvbm5lY3Rpb24udW5pcXVlSUQoKSk7CisgICAg
cGVyRG9tYWluRGF0YS53YXRjaGVyc05lZWRpbmdIaWdoQWNjdXJhY3kucmVtb3ZlKGNvbm5lY3Rp
b24udW5pcXVlSUQoKSk7CisKKyAgICBpZiAod2FzVXBkYXRpbmcgJiYgIWlzVXBkYXRpbmcocGVy
RG9tYWluRGF0YSkpCisgICAgICAgIHByb3ZpZGVyU3RvcFVwZGF0aW5nKHBlckRvbWFpbkRhdGEp
OwogICAgIGVsc2UgewotICAgICAgICBib29sIGhpZ2hBY2N1cmFjeVNob3VsZEJlRW5hYmxlZCA9
IGlzSGlnaEFjY3VyYWN5RW5hYmxlZCgpOworICAgICAgICBib29sIGhpZ2hBY2N1cmFjeVNob3Vs
ZEJlRW5hYmxlZCA9IGlzSGlnaEFjY3VyYWN5RW5hYmxlZChwZXJEb21haW5EYXRhKTsKICAgICAg
ICAgaWYgKGhpZ2hBY2N1cmFjeVNob3VsZEJlRW5hYmxlZCAhPSBoaWdoQWNjdXJhY3lXYXNFbmFi
bGVkKQotICAgICAgICAgICAgbV9wcm92aWRlci0+c2V0RW5hYmxlSGlnaEFjY3VyYWN5KCp0aGlz
LCBoaWdoQWNjdXJhY3lTaG91bGRCZUVuYWJsZWQpOworICAgICAgICAgICAgcHJvdmlkZXJTZXRF
bmFibGVkSGlnaEFjY3VyYWN5KHBlckRvbWFpbkRhdGEsIGhpZ2hBY2N1cmFjeVNob3VsZEJlRW5h
YmxlZCk7CiAgICAgfQorCisgICAgaWYgKHBlckRvbWFpbkRhdGEud2F0Y2hlcnMuaXNFbXB0eSgp
ICYmIHBlckRvbWFpbkRhdGEud2F0Y2hlcnNOZWVkaW5nSGlnaEFjY3VyYWN5LmlzRW1wdHkoKSkK
KyAgICAgICAgbV9wZXJEb21haW5EYXRhLnJlbW92ZShpdCk7CiB9CiAKLXZvaWQgV2ViR2VvbG9j
YXRpb25NYW5hZ2VyUHJveHk6OnNldEVuYWJsZUhpZ2hBY2N1cmFjeShJUEM6OkNvbm5lY3Rpb24m
IGNvbm5lY3Rpb24sIGJvb2wgZW5hYmxlZCkKK3ZvaWQgV2ViR2VvbG9jYXRpb25NYW5hZ2VyUHJv
eHk6OnNldEVuYWJsZUhpZ2hBY2N1cmFjeShJUEM6OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24sIGNv
bnN0IFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluJiByZWdpc3RyYWJsZURvbWFpbiwgYm9vbCBl
bmFibGVkKQogewotICAgIGJvb2wgaGlnaEFjY3VyYWN5V2FzRW5hYmxlZCA9IGlzSGlnaEFjY3Vy
YWN5RW5hYmxlZCgpOworICAgIGF1dG8gaXQgPSBtX3BlckRvbWFpbkRhdGEuZmluZChyZWdpc3Ry
YWJsZURvbWFpbik7CisgICAgQVNTRVJUKGl0ICE9IG1fcGVyRG9tYWluRGF0YS5lbmQoKSk7Cisg
ICAgaWYgKGl0ID09IG1fcGVyRG9tYWluRGF0YS5lbmQoKSkKKyAgICAgICAgcmV0dXJuOworCisg
ICAgYXV0byYgcGVyRG9tYWluRGF0YSA9ICppdC0+dmFsdWU7CisgICAgYm9vbCBoaWdoQWNjdXJh
Y3lXYXNFbmFibGVkID0gaXNIaWdoQWNjdXJhY3lFbmFibGVkKHBlckRvbWFpbkRhdGEpOwogCiAg
ICAgaWYgKGVuYWJsZWQpCi0gICAgICAgIG1faGlnaEFjY3VyYWN5UmVxdWVzdGVycy5hZGQoJmNv
bm5lY3Rpb24uY2xpZW50KCkpOworICAgICAgICBwZXJEb21haW5EYXRhLndhdGNoZXJzTmVlZGlu
Z0hpZ2hBY2N1cmFjeS5hZGQoY29ubmVjdGlvbi51bmlxdWVJRCgpKTsKKyAgICBlbHNlCisgICAg
ICAgIHBlckRvbWFpbkRhdGEud2F0Y2hlcnNOZWVkaW5nSGlnaEFjY3VyYWN5LnJlbW92ZShjb25u
ZWN0aW9uLnVuaXF1ZUlEKCkpOworCisgICAgaWYgKGlzVXBkYXRpbmcocGVyRG9tYWluRGF0YSkg
JiYgaGlnaEFjY3VyYWN5V2FzRW5hYmxlZCAhPSBlbmFibGVkKQorICAgICAgICBwcm92aWRlclNl
dEVuYWJsZWRIaWdoQWNjdXJhY3kocGVyRG9tYWluRGF0YSwgZW5hYmxlZCk7Cit9CisKKyNpZiAh
UExBVEZPUk0oSU9TX0ZBTUlMWSkKK3ZvaWQgV2ViR2VvbG9jYXRpb25NYW5hZ2VyUHJveHk6OnNl
dFByb3ZpZGVyKHN0ZDo6dW5pcXVlX3B0cjxBUEk6Okdlb2xvY2F0aW9uUHJvdmlkZXI+JiYgcHJv
dmlkZXIpCit7CisgICAgaWYgKCFwcm92aWRlcikKKyAgICAgICAgbV9wcm92aWRlciA9IG1ha2VV
bmlxdWU8QVBJOjpHZW9sb2NhdGlvblByb3ZpZGVyPigpOwogICAgIGVsc2UKLSAgICAgICAgbV9o
aWdoQWNjdXJhY3lSZXF1ZXN0ZXJzLnJlbW92ZSgmY29ubmVjdGlvbi5jbGllbnQoKSk7CisgICAg
ICAgIG1fcHJvdmlkZXIgPSBXVEZNb3ZlKHByb3ZpZGVyKTsKK30KKworYm9vbCBXZWJHZW9sb2Nh
dGlvbk1hbmFnZXJQcm94eTo6aXNVcGRhdGluZyhjb25zdCBQZXJEb21haW5EYXRhJikgY29uc3QK
K3sKKyAgICBmb3IgKGF1dG8mIHBlckRvbWFpbkRhdGEgOiBtX3BlckRvbWFpbkRhdGEudmFsdWVz
KCkpIHsKKyAgICAgICAgaWYgKCFwZXJEb21haW5EYXRhLT53YXRjaGVycy5pc0VtcHR5KCkpCisg
ICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9CisgICAgcmV0dXJuIGZhbHNlOworfQorCisK
K2Jvb2wgV2ViR2VvbG9jYXRpb25NYW5hZ2VyUHJveHk6OmlzSGlnaEFjY3VyYWN5RW5hYmxlZChj
b25zdCBQZXJEb21haW5EYXRhJikgY29uc3QKK3sKKyAgICBmb3IgKGF1dG8mIHBlckRvbWFpbkRh
dGEgOiBtX3BlckRvbWFpbkRhdGEudmFsdWVzKCkpIHsKKyAgICAgICAgaWYgKCFwZXJEb21haW5E
YXRhLT53YXRjaGVyc05lZWRpbmdIaWdoQWNjdXJhY3kuaXNFbXB0eSgpKQorICAgICAgICAgICAg
cmV0dXJuIHRydWU7CisgICAgfQorICAgIHJldHVybiBmYWxzZTsKK30KKwordm9pZCBXZWJHZW9s
b2NhdGlvbk1hbmFnZXJQcm94eTo6cHJvdmlkZXJTdGFydFVwZGF0aW5nKFBlckRvbWFpbkRhdGEm
IHBlckRvbWFpbkRhdGEsIGNvbnN0IFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluJikKK3sKKyAg
ICBpZiAoIW1fcHJvdmlkZXIpCisgICAgICAgIHJldHVybjsKKworICAgIG1fcHJvdmlkZXItPnNl
dEVuYWJsZUhpZ2hBY2N1cmFjeSgqdGhpcywgaXNIaWdoQWNjdXJhY3lFbmFibGVkKHBlckRvbWFp
bkRhdGEpKTsKKyAgICBtX3Byb3ZpZGVyLT5zdGFydFVwZGF0aW5nKCp0aGlzKTsKK30KKwordm9p
ZCBXZWJHZW9sb2NhdGlvbk1hbmFnZXJQcm94eTo6cHJvdmlkZXJTdG9wVXBkYXRpbmcoUGVyRG9t
YWluRGF0YSYpCit7CisgICAgaWYgKG1fcHJvdmlkZXIpCisgICAgICAgIG1fcHJvdmlkZXItPnN0
b3BVcGRhdGluZygqdGhpcyk7Cit9CiAKLSAgICBib29sIGhpZ2hBY2N1cmFjeVNob3VsZEJlRW5h
YmxlZCA9IGlzSGlnaEFjY3VyYWN5RW5hYmxlZCgpOwotICAgIGlmIChpc1VwZGF0aW5nKCkgJiYg
aGlnaEFjY3VyYWN5V2FzRW5hYmxlZCAhPSBoaWdoQWNjdXJhY3lTaG91bGRCZUVuYWJsZWQpCi0g
ICAgICAgIG1fcHJvdmlkZXItPnNldEVuYWJsZUhpZ2hBY2N1cmFjeSgqdGhpcywgaGlnaEFjY3Vy
YWN5U2hvdWxkQmVFbmFibGVkKTsKK3ZvaWQgV2ViR2VvbG9jYXRpb25NYW5hZ2VyUHJveHk6OnBy
b3ZpZGVyU2V0RW5hYmxlZEhpZ2hBY2N1cmFjeShQZXJEb21haW5EYXRhJiwgYm9vbCBlbmFibGVk
KQoreworICAgIGlmIChtX3Byb3ZpZGVyKQorICAgICAgICBtX3Byb3ZpZGVyLT5zZXRFbmFibGVI
aWdoQWNjdXJhY3koKnRoaXMsIGVuYWJsZWQpOwogfQorI2VuZGlmIC8vICFQTEFURk9STShJT1Nf
RkFNSUxZKQogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvV2ViR2VvbG9jYXRpb25NYW5hZ2VyUHJveHkuaCBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL1dlYkdlb2xvY2F0aW9uTWFuYWdlclByb3h5LmgKaW5kZXggNzQ5MzZlNDVh
MGQ4MzgzYThiNGIzZDZkNTc4YzliZDIyYmUzZmE1ZS4uZWYxMWY0Y2IwNmIwNGVlMDVlMjIwMjE2
ZjhkMjg2NDRkYTBmNGY2NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vi
R2VvbG9jYXRpb25NYW5hZ2VyUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9X
ZWJHZW9sb2NhdGlvbk1hbmFnZXJQcm94eS5oCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHly
aWdodCAoQykgMjAxMSwgMjAxMiwgMjAxMyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKiBDb3B5cmlnaHQgKEMpIDIwMTEtMjAyMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTMxLDkgKzMxLDE1IEBACiAj
aW5jbHVkZSAiV2ViQ29udGV4dFN1cHBsZW1lbnQuaCIKICNpbmNsdWRlICJXZWJQYWdlUHJveHlJ
ZGVudGlmaWVyLmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9HZW9sb2NhdGlvblBvc2l0aW9uRGF0YS5o
PgorI2luY2x1ZGUgPFdlYkNvcmUvUmVnaXN0cmFibGVEb21haW4uaD4KKyNpbmNsdWRlIDx3dGYv
SGFzaE1hcC5oPgogI2luY2x1ZGUgPHd0Zi9IYXNoU2V0Lmg+CiAjaW5jbHVkZSA8d3RmL3RleHQv
V1RGU3RyaW5nLmg+CiAKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZKQorI2luY2x1ZGUgPFdlYkNv
cmUvQ29yZUxvY2F0aW9uR2VvbG9jYXRpb25Qcm92aWRlci5oPgorI2VuZGlmCisKIG5hbWVzcGFj
ZSBBUEkgewogY2xhc3MgR2VvbG9jYXRpb25Qcm92aWRlcjsKIH0KQEAgLTQzLDIwICs0OSwyMyBA
QCBuYW1lc3BhY2UgV2ViS2l0IHsKIGNsYXNzIFdlYkdlb2xvY2F0aW9uUG9zaXRpb247CiBjbGFz
cyBXZWJQcm9jZXNzUG9vbDsKIAotY2xhc3MgV2ViR2VvbG9jYXRpb25NYW5hZ2VyUHJveHkgOiBw
dWJsaWMgQVBJOjpPYmplY3RJbXBsPEFQSTo6T2JqZWN0OjpUeXBlOjpHZW9sb2NhdGlvbk1hbmFn
ZXI+LCBwdWJsaWMgV2ViQ29udGV4dFN1cHBsZW1lbnQsIHByaXZhdGUgSVBDOjpNZXNzYWdlUmVj
ZWl2ZXIgeworY2xhc3MgV2ViR2VvbG9jYXRpb25NYW5hZ2VyUHJveHkgOiBwdWJsaWMgQVBJOjpP
YmplY3RJbXBsPEFQSTo6T2JqZWN0OjpUeXBlOjpHZW9sb2NhdGlvbk1hbmFnZXI+LCBwdWJsaWMg
V2ViQ29udGV4dFN1cHBsZW1lbnQsIHByaXZhdGUgSVBDOjpNZXNzYWdlUmVjZWl2ZXIKKyNpZiBQ
TEFURk9STShJT1NfRkFNSUxZKQorICAgICwgcHVibGljIFdlYkNvcmU6OkNvcmVMb2NhdGlvbkdl
b2xvY2F0aW9uUHJvdmlkZXI6OkNsaWVudAorI2VuZGlmCit7CiBwdWJsaWM6CiAgICAgc3RhdGlj
IGNvbnN0IGNoYXIqIHN1cHBsZW1lbnROYW1lKCk7CiAKICAgICBzdGF0aWMgUmVmPFdlYkdlb2xv
Y2F0aW9uTWFuYWdlclByb3h5PiBjcmVhdGUoV2ViUHJvY2Vzc1Bvb2wqKTsKKyAgICB+V2ViR2Vv
bG9jYXRpb25NYW5hZ2VyUHJveHkoKTsKIAorI2lmICFQTEFURk9STShJT1NfRkFNSUxZKQogICAg
IHZvaWQgc2V0UHJvdmlkZXIoc3RkOjp1bmlxdWVfcHRyPEFQSTo6R2VvbG9jYXRpb25Qcm92aWRl
cj4mJik7CisjZW5kaWYKIAogICAgIHZvaWQgcHJvdmlkZXJEaWRDaGFuZ2VQb3NpdGlvbihXZWJH
ZW9sb2NhdGlvblBvc2l0aW9uKik7CiAgICAgdm9pZCBwcm92aWRlckRpZEZhaWxUb0RldGVybWlu
ZVBvc2l0aW9uKGNvbnN0IFN0cmluZyYgZXJyb3JNZXNzYWdlID0gU3RyaW5nKCkpOwotI2lmIFBM
QVRGT1JNKElPU19GQU1JTFkpCi0gICAgdm9pZCByZXNldFBlcm1pc3Npb25zKCk7Ci0jZW5kaWYK
LSAgICBjb25zdCBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6Okdlb2xvY2F0aW9uUG9zaXRpb25EYXRh
PiYgbGFzdFBvc2l0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9sYXN0UG9zaXRpb247IH0KIAogICAg
IHVzaW5nIEFQSTo6T2JqZWN0OjpyZWY7CiAgICAgdXNpbmcgQVBJOjpPYmplY3Q6OmRlcmVmOwpA
QCAtNzMsMTkgKzgyLDQwIEBAIHByaXZhdGU6CiAgICAgLy8gSVBDOjpNZXNzYWdlUmVjZWl2ZXIK
ICAgICB2b2lkIGRpZFJlY2VpdmVNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYsIElQQzo6RGVjb2Rl
ciYpIG92ZXJyaWRlOwogCi0gICAgYm9vbCBpc1VwZGF0aW5nKCkgY29uc3QgeyByZXR1cm4gIW1f
dXBkYXRlUmVxdWVzdGVycy5pc0VtcHR5KCk7IH0KLSAgICBib29sIGlzSGlnaEFjY3VyYWN5RW5h
YmxlZCgpIGNvbnN0IHsgcmV0dXJuICFtX2hpZ2hBY2N1cmFjeVJlcXVlc3RlcnMuaXNFbXB0eSgp
OyB9CisgICAgLy8gSVBDIG1lc3NhZ2VzLgorICAgIHZvaWQgc3RhcnRVcGRhdGluZyhJUEM6OkNv
bm5lY3Rpb24mLCBjb25zdCBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiYsIFdlYlBhZ2VQcm94
eUlkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgYXV0aG9yaXphdGlvblRva2VuLCBib29sIGVuYWJs
ZUhpZ2hBY2N1cmFjeSk7CisgICAgdm9pZCBzdG9wVXBkYXRpbmcoSVBDOjpDb25uZWN0aW9uJiwg
Y29uc3QgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4mKTsKKyAgICB2b2lkIHNldEVuYWJsZUhp
Z2hBY2N1cmFjeShJUEM6OkNvbm5lY3Rpb24mLCBjb25zdCBXZWJDb3JlOjpSZWdpc3RyYWJsZURv
bWFpbiYsIGJvb2wpOwogCi0gICAgdm9pZCBzdGFydFVwZGF0aW5nKElQQzo6Q29ubmVjdGlvbiYs
IFdlYlBhZ2VQcm94eUlkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgYXV0aG9yaXphdGlvblRva2Vu
KTsKLSAgICB2b2lkIHN0b3BVcGRhdGluZyhJUEM6OkNvbm5lY3Rpb24mKTsKLSAgICB2b2lkIHJl
bW92ZVJlcXVlc3Rlcihjb25zdCBJUEM6OkNvbm5lY3Rpb246OkNsaWVudCopOwotICAgIHZvaWQg
c2V0RW5hYmxlSGlnaEFjY3VyYWN5KElQQzo6Q29ubmVjdGlvbiYsIGJvb2wpOworI2lmIFBMQVRG
T1JNKElPU19GQU1JTFkpCisgICAgLy8gQ29yZUxvY2F0aW9uR2VvbG9jYXRpb25Qcm92aWRlcjo6
Q2xpZW50CisgICAgdm9pZCBwb3NpdGlvbkNoYW5nZWQoY29uc3QgU3RyaW5nJiB3ZWJzaXRlSWRl
bnRpZmllciwgV2ViQ29yZTo6R2VvbG9jYXRpb25Qb3NpdGlvbkRhdGEmJikgZmluYWw7CisgICAg
dm9pZCBlcnJvck9jY3VycmVkKGNvbnN0IFN0cmluZyYgd2Vic2l0ZUlkZW50aWZpZXIsIGNvbnN0
IFN0cmluZyYgZXJyb3JNZXNzYWdlKSBmaW5hbDsKKyAgICB2b2lkIHJlc2V0R2VvbG9jYXRpb24o
Y29uc3QgU3RyaW5nJiB3ZWJzaXRlSWRlbnRpZmllcikgZmluYWw7CisjZW5kaWYKIAotICAgIEhh
c2hTZXQ8Y29uc3QgSVBDOjpDb25uZWN0aW9uOjpDbGllbnQqPiBtX3VwZGF0ZVJlcXVlc3RlcnM7
Ci0gICAgSGFzaFNldDxjb25zdCBJUEM6OkNvbm5lY3Rpb246OkNsaWVudCo+IG1faGlnaEFjY3Vy
YWN5UmVxdWVzdGVyczsKKyAgICBzdHJ1Y3QgUGVyRG9tYWluRGF0YSB7CisgICAgICAgIFdURl9N
QUtFX1NUUlVDVF9GQVNUX0FMTE9DQVRFRDsKKyAgICAgICAgSGFzaFNldDxJUEM6OkNvbm5lY3Rp
b246OlVuaXF1ZUlEPiB3YXRjaGVyczsKKyAgICAgICAgSGFzaFNldDxJUEM6OkNvbm5lY3Rpb246
OlVuaXF1ZUlEPiB3YXRjaGVyc05lZWRpbmdIaWdoQWNjdXJhY3k7CisgICAgICAgIHN0ZDo6b3B0
aW9uYWw8V2ViQ29yZTo6R2VvbG9jYXRpb25Qb3NpdGlvbkRhdGE+IGxhc3RQb3NpdGlvbjsKIAor
ICAgICAgICAvLyBGSVhNRTogVXNlIGZvciBhbGwgQ29jb2EgcG9ydHMuCisjaWYgUExBVEZPUk0o
SU9TX0ZBTUlMWSkKKyAgICAgICAgc3RkOjp1bmlxdWVfcHRyPFdlYkNvcmU6OkNvcmVMb2NhdGlv
bkdlb2xvY2F0aW9uUHJvdmlkZXI+IHByb3ZpZGVyOworI2VuZGlmCisgICAgfTsKKworICAgIGJv
b2wgaXNVcGRhdGluZyhjb25zdCBQZXJEb21haW5EYXRhJikgY29uc3Q7CisgICAgYm9vbCBpc0hp
Z2hBY2N1cmFjeUVuYWJsZWQoY29uc3QgUGVyRG9tYWluRGF0YSYpIGNvbnN0OworICAgIHZvaWQg
cHJvdmlkZXJTdGFydFVwZGF0aW5nKFBlckRvbWFpbkRhdGEmLCBjb25zdCBXZWJDb3JlOjpSZWdp
c3RyYWJsZURvbWFpbiYpOworICAgIHZvaWQgcHJvdmlkZXJTdG9wVXBkYXRpbmcoUGVyRG9tYWlu
RGF0YSYpOworICAgIHZvaWQgcHJvdmlkZXJTZXRFbmFibGVkSGlnaEFjY3VyYWN5KFBlckRvbWFp
bkRhdGEmLCBib29sIGVuYWJsZWQpOworCisgICAgSGFzaE1hcDxXZWJDb3JlOjpSZWdpc3RyYWJs
ZURvbWFpbiwgc3RkOjp1bmlxdWVfcHRyPFBlckRvbWFpbkRhdGE+PiBtX3BlckRvbWFpbkRhdGE7
CisjaWYgIVBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAgc3RkOjp1bmlxdWVfcHRyPEFQSTo6R2Vv
bG9jYXRpb25Qcm92aWRlcj4gbV9wcm92aWRlcjsKLSAgICBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6
Okdlb2xvY2F0aW9uUG9zaXRpb25EYXRhPiBtX2xhc3RQb3NpdGlvbjsKKyNlbmRpZgogfTsKIAog
fSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9XZWJHZW9sb2NhdGlvbk1hbmFnZXJQcm94eS5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL1dlYkdlb2xvY2F0aW9uTWFuYWdlclByb3h5Lm1lc3NhZ2VzLmluCmluZGV4IGU1
ZTljMjdkMTRhNWZiNzI2ZmNjMmM4MWZmM2UxNjVlYTNlODQwYmUuLjkwNDFhOTBjMjUwZjhhZGQ2
OGJiMTNiM2FiYjU0YmViNjZjYjJkMjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL1dlYkdlb2xvY2F0aW9uTWFuYWdlclByb3h5Lm1lc3NhZ2VzLmluCisrKyBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL1dlYkdlb2xvY2F0aW9uTWFuYWdlclByb3h5Lm1lc3NhZ2VzLmluCkBA
IC0yMSw3ICsyMSw3IEBACiAjIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAKIG1lc3NhZ2VzIC0+IFdlYkdlb2xvY2F0
aW9uTWFuYWdlclByb3h5IHsKLSAgICBTdGFydFVwZGF0aW5nKFdlYktpdDo6V2ViUGFnZVByb3h5
SWRlbnRpZmllciBwYWdlUHJveHlJRCwgU3RyaW5nIGF1dGhvcml6YXRpb25Ub2tlbikgV2FudHND
b25uZWN0aW9uCi0gICAgU3RvcFVwZGF0aW5nKCkgV2FudHNDb25uZWN0aW9uCi0gICAgU2V0RW5h
YmxlSGlnaEFjY3VyYWN5KGJvb2wgZW5hYmxlZCkgV2FudHNDb25uZWN0aW9uCisgICAgU3RhcnRV
cGRhdGluZyhXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiByZWdpc3RyYWJsZURvbWFpbiwgV2Vi
S2l0OjpXZWJQYWdlUHJveHlJZGVudGlmaWVyIHBhZ2VQcm94eUlELCBTdHJpbmcgYXV0aG9yaXph
dGlvblRva2VuLCBib29sIGVuYWJsZUhpZ2hBY2N1cmFjeSkgV2FudHNDb25uZWN0aW9uCisgICAg
U3RvcFVwZGF0aW5nKFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluIHJlZ2lzdHJhYmxlRG9tYWlu
KSBXYW50c0Nvbm5lY3Rpb24KKyAgICBTZXRFbmFibGVIaWdoQWNjdXJhY3koV2ViQ29yZTo6UmVn
aXN0cmFibGVEb21haW4gcmVnaXN0cmFibGVEb21haW4sIGJvb2wgZW5hYmxlZCkgV2FudHNDb25u
ZWN0aW9uCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tHZW9s
b2NhdGlvblByb3ZpZGVySU9TLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dLR2Vv
bG9jYXRpb25Qcm92aWRlcklPUy5tbQppbmRleCBmNWU5ZmQ3YmMzNDEyOTdhZjdiMjRlNjc0MTYz
MzJjZDk2YWQ3MzljLi42ZjA2OTZkMzg5NTcyNDg3MmQ0ZWRjOWE0YTA1OWQ0MjBkZDgxMWNkIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tHZW9sb2NhdGlvblByb3Zp
ZGVySU9TLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XS0dlb2xvY2F0aW9u
UHJvdmlkZXJJT1MubW0KQEAgLTUxLDcgKzUxLDYgQEAKICNpbXBvcnQgPHd0Zi9VUkwuaD4KIAog
Ly8gRklYTUU6IFJlbW92ZSB1c2Ugb2YgV2ViS2l0MSBmcm9tIFdlYktpdDIKLSNpbXBvcnQgPFdl
YktpdC9XZWJHZW9sb2NhdGlvbkNvcmVMb2NhdGlvblByb3ZpZGVyLmg+CiAjaW1wb3J0IDxXZWJL
aXQvV2ViQWxsb3dEZW55UG9saWN5TGlzdGVuZXIuaD4KIAogQUxMT1dfREVQUkVDQVRFRF9ERUNM
QVJBVElPTlNfQkVHSU4KQEAgLTU5LDkgKzU4LDYgQEAgQUxMT1dfREVQUkVDQVRFRF9ERUNMQVJB
VElPTlNfQkVHSU4KIEBpbnRlcmZhY2UgV0tHZW9sb2NhdGlvblByb3ZpZGVySU9TIChfV0tHZW9s
b2NhdGlvbkNvcmVMb2NhdGlvbkxpc3RlbmVyKSA8X1dLR2VvbG9jYXRpb25Db3JlTG9jYXRpb25M
aXN0ZW5lcj4KIEBlbmQKIAotQGludGVyZmFjZSBXS0xlZ2FjeUNvcmVMb2NhdGlvblByb3ZpZGVy
IDogTlNPYmplY3Q8X1dLR2VvbG9jYXRpb25Db3JlTG9jYXRpb25Qcm92aWRlciwgV2ViR2VvbG9j
YXRpb25Db3JlTG9jYXRpb25VcGRhdGVMaXN0ZW5lcj4KLUBlbmQKLQogQGludGVyZmFjZSBXS1dl
YkFsbG93RGVueVBvbGljeUxpc3RlbmVyIDogTlNPYmplY3Q8V2ViQWxsb3dEZW55UG9saWN5TGlz
dGVuZXI+CiAtIChpZClpbml0V2l0aENvbXBsZXRpb25IYW5kbGVyOihGdW5jdGlvbjx2b2lkKGJv
b2wpPiYmKWNvbXBsZXRpb25IYW5kbGVyOwogLSAodm9pZClkZW55T25seVRoaXNSZXF1ZXN0IE5P
X1JFVFVSTl9EVUVfVE9fQVNTRVJUOwpAQCAtNzksOCArNzUsNyBAQCBzdHJ1Y3QgR2VvbG9jYXRp
b25SZXF1ZXN0RGF0YSB7CiB9OwogCiBAaW1wbGVtZW50YXRpb24gV0tHZW9sb2NhdGlvblByb3Zp
ZGVySU9TIHsKLSAgICBSZWZQdHI8V2ViS2l0OjpXZWJHZW9sb2NhdGlvbk1hbmFnZXJQcm94eT4g
X2dlb2xvY2F0aW9uTWFuYWdlcjsKLSAgICBSZXRhaW5QdHI8aWQgPF9XS0dlb2xvY2F0aW9uQ29y
ZUxvY2F0aW9uUHJvdmlkZXI+PiBfY29yZUxvY2F0aW9uUHJvdmlkZXI7CisgICAgUmV0YWluUHRy
PGlkIDxfV0tHZW9sb2NhdGlvbkNvcmVMb2NhdGlvblByb3ZpZGVyPj4gX2NsaWVudEF1dGhvcml6
YXRpb25Qcm92aWRlcjsKICAgICBCT09MIF9pc1dlYkNvcmVHZW9sb2NhdGlvbkFjdGl2ZTsKICAg
ICBSZWZQdHI8V2ViS2l0OjpXZWJHZW9sb2NhdGlvblBvc2l0aW9uPiBfbGFzdEFjdGl2ZVBvc2l0
aW9uOwogICAgIERlcXVlPEdlb2xvY2F0aW9uUmVxdWVzdERhdGE+IF9yZXF1ZXN0c1dhaXRpbmdG
b3JDb3JlTG9jYXRpb25BdXRob3JpemF0aW9uOwpAQCAtODgsNDggKzgzLDE2IEBAIEBpbXBsZW1l
bnRhdGlvbiBXS0dlb2xvY2F0aW9uUHJvdmlkZXJJT1MgewogCiAjcHJhZ21hIG1hcmsgLSBXS0dl
b2xvY2F0aW9uUHJvdmlkZXIgY2FsbGJhY2tzIGltcGxlbWVudGF0aW9uLgogCi1zdGF0aWMgdm9p
ZCBzdGFydFVwZGF0aW5nQ2FsbGJhY2soV0tHZW9sb2NhdGlvbk1hbmFnZXJSZWYgZ2VvbG9jYXRp
b25NYW5hZ2VyLCBjb25zdCB2b2lkKiBjbGllbnRJbmZvKQotewotICAgIFdLR2VvbG9jYXRpb25Q
cm92aWRlcklPUyAqZ2VvbG9jYXRpb25Qcm92aWRlciA9IHJlaW50ZXJwcmV0X2Nhc3Q8V0tHZW9s
b2NhdGlvblByb3ZpZGVySU9TKj4oY29uc3RfY2FzdDx2b2lkKj4oY2xpZW50SW5mbykpOwotICAg
IEFTU0VSVChbZ2VvbG9jYXRpb25Qcm92aWRlciBpc0tpbmRPZkNsYXNzOltXS0dlb2xvY2F0aW9u
UHJvdmlkZXJJT1MgY2xhc3NdXSk7Ci0gICAgW2dlb2xvY2F0aW9uUHJvdmlkZXIgX3N0YXJ0VXBk
YXRpbmddOwotfQotCi1zdGF0aWMgdm9pZCBzdG9wVXBkYXRpbmdDYWxsYmFjayhXS0dlb2xvY2F0
aW9uTWFuYWdlclJlZiBnZW9sb2NhdGlvbk1hbmFnZXIsIGNvbnN0IHZvaWQqIGNsaWVudEluZm8p
Ci17Ci0gICAgV0tHZW9sb2NhdGlvblByb3ZpZGVySU9TICpnZW9sb2NhdGlvblByb3ZpZGVyID0g
cmVpbnRlcnByZXRfY2FzdDxXS0dlb2xvY2F0aW9uUHJvdmlkZXJJT1MqPihjb25zdF9jYXN0PHZv
aWQqPihjbGllbnRJbmZvKSk7Ci0gICAgQVNTRVJUKFtnZW9sb2NhdGlvblByb3ZpZGVyIGlzS2lu
ZE9mQ2xhc3M6W1dLR2VvbG9jYXRpb25Qcm92aWRlcklPUyBjbGFzc11dKTsKLSAgICBbZ2VvbG9j
YXRpb25Qcm92aWRlciBfc3RvcFVwZGF0aW5nXTsKLX0KLQotc3RhdGljIHZvaWQgc2V0RW5hYmxl
SGlnaEFjY3VyYWN5KFdLR2VvbG9jYXRpb25NYW5hZ2VyUmVmIGdlb2xvY2F0aW9uTWFuYWdlciwg
Ym9vbCBlbmFibGUsIGNvbnN0IHZvaWQqIGNsaWVudEluZm8pCi17Ci0gICAgV0tHZW9sb2NhdGlv
blByb3ZpZGVySU9TICpnZW9sb2NhdGlvblByb3ZpZGVyID0gcmVpbnRlcnByZXRfY2FzdDxXS0dl
b2xvY2F0aW9uUHJvdmlkZXJJT1MqPihjb25zdF9jYXN0PHZvaWQqPihjbGllbnRJbmZvKSk7Ci0g
ICAgQVNTRVJUKFtnZW9sb2NhdGlvblByb3ZpZGVyIGlzS2luZE9mQ2xhc3M6W1dLR2VvbG9jYXRp
b25Qcm92aWRlcklPUyBjbGFzc11dKTsKLSAgICBbZ2VvbG9jYXRpb25Qcm92aWRlciBfc2V0RW5h
YmxlSGlnaEFjY3VyYWN5OmVuYWJsZV07Ci19Ci0KIC0gKHZvaWQpX3N0YXJ0VXBkYXRpbmcKIHsK
LSAgICBfaXNXZWJDb3JlR2VvbG9jYXRpb25BY3RpdmUgPSBZRVM7Ci0gICAgW19jb3JlTG9jYXRp
b25Qcm92aWRlciBzdGFydF07Ci0KLSAgICAvLyBJZiB3ZSBoYXZlIHRoZSBsYXN0IHBvc2l0aW9u
LCBpdCBpcyBmcm9tIHRoZSBpbml0aWFsaXphdGlvbiBvciB3YXJtIHVwLiBJdCBpcyB0aGUgbGFz
dCBrbm93bgotICAgIC8vIGdvb2QgcG9zaXRpb24gc28gd2UgY2FuIHJldHVybiBpdCBkaXJlY3Rs
eS4KLSAgICBpZiAoX2xhc3RBY3RpdmVQb3NpdGlvbikKLSAgICAgICAgX2dlb2xvY2F0aW9uTWFu
YWdlci0+cHJvdmlkZXJEaWRDaGFuZ2VQb3NpdGlvbihfbGFzdEFjdGl2ZVBvc2l0aW9uLmdldCgp
KTsKIH0KIAogLSAodm9pZClfc3RvcFVwZGF0aW5nCiB7Ci0gICAgX2lzV2ViQ29yZUdlb2xvY2F0
aW9uQWN0aXZlID0gTk87Ci0gICAgW19jb3JlTG9jYXRpb25Qcm92aWRlciBzdG9wXTsKLSAgICBf
bGFzdEFjdGl2ZVBvc2l0aW9uID0gbnVsbHB0cjsKIH0KIAogLSAodm9pZClfc2V0RW5hYmxlSGln
aEFjY3VyYWN5OihCT09MKWVuYWJsZUhpZ2hBY2N1cmFjeQogewotICAgIFtfY29yZUxvY2F0aW9u
UHJvdmlkZXIgc2V0RW5hYmxlSGlnaEFjY3VyYWN5OmVuYWJsZUhpZ2hBY2N1cmFjeV07CiB9CiAK
ICNwcmFnbWEgbWFyayAtIFB1YmxpYyBBUEkgaW1wbGVtZW50YXRpb24uCkBAIC0xNDYsMjUgKzEw
OSwzMyBAQCAtIChpZClpbml0V2l0aFByb2Nlc3NQb29sOihXZWJLaXQ6OldlYlByb2Nlc3NQb29s
Jilwcm9jZXNzUG9vbAogICAgIHNlbGYgPSBbc3VwZXIgaW5pdF07CiAgICAgaWYgKCFzZWxmKQog
ICAgICAgICByZXR1cm4gbmlsOwotICAgIF9nZW9sb2NhdGlvbk1hbmFnZXIgPSBwcm9jZXNzUG9v
bC5zdXBwbGVtZW50PFdlYktpdDo6V2ViR2VvbG9jYXRpb25NYW5hZ2VyUHJveHk+KCk7Ci0gICAg
V0tHZW9sb2NhdGlvblByb3ZpZGVyVjEgcHJvdmlkZXJDYWxsYmFjayA9IHsKLSAgICAgICAgeyAx
LCBzZWxmIH0sCi0gICAgICAgIHN0YXJ0VXBkYXRpbmdDYWxsYmFjaywKLSAgICAgICAgc3RvcFVw
ZGF0aW5nQ2FsbGJhY2ssCi0gICAgICAgIHNldEVuYWJsZUhpZ2hBY2N1cmFjeQotICAgIH07Ci0g
ICAgV0tHZW9sb2NhdGlvbk1hbmFnZXJTZXRQcm92aWRlcih0b0FQSShfZ2VvbG9jYXRpb25NYW5h
Z2VyLmdldCgpKSwgJnByb3ZpZGVyQ2FsbGJhY2suYmFzZSk7Ci0gICAgX2NvcmVMb2NhdGlvblBy
b3ZpZGVyID0gd3JhcHBlcihwcm9jZXNzUG9vbCkuX2NvcmVMb2NhdGlvblByb3ZpZGVyID86IGFk
b3B0TlMoc3RhdGljX2Nhc3Q8aWQgPF9XS0dlb2xvY2F0aW9uQ29yZUxvY2F0aW9uUHJvdmlkZXI+
PihbW1dLTGVnYWN5Q29yZUxvY2F0aW9uUHJvdmlkZXIgYWxsb2NdIGluaXRdKSk7Ci0gICAgW19j
b3JlTG9jYXRpb25Qcm92aWRlciBzZXRMaXN0ZW5lcjpzZWxmXTsKKworICAgIC8vIEZJWE1FOiBT
b21lIGNsaWVudHMgdXNlIHRoaXMgU1BJIHRvIHNldCBhIF9jb3JlTG9jYXRpb25Qcm92aWRlciB0
aGF0IGZhaWxzIGFsbCBhdXRob3JpemF0aW9ucyBhcyBhIHdheSB0byBkaXNhYmxlIHRoZSBHZW9s
b2NhdGlvbiBBUEkuCisgICAgLy8gVGhleSBzaG91bGQganVzdCBpbXBsZW1lbnQgcmVxdWVzdEdl
b2xvY2F0aW9uQXV0aG9yaXphdGlvbkZvclVSTCBvbiB0aGUgV0tXZWJWaWV3IGluc3RlYWQsIHNv
IHdlIGNhbiBkcm9wIHRoaXMgbG9naWMgZW50aXJlbHkuCisgICAgX2NsaWVudEF1dGhvcml6YXRp
b25Qcm92aWRlciA9IHdyYXBwZXIocHJvY2Vzc1Bvb2wpLl9jb3JlTG9jYXRpb25Qcm92aWRlcjsK
KyAgICBpZiAoX2NsaWVudEF1dGhvcml6YXRpb25Qcm92aWRlcikKKyAgICAgICAgW19jbGllbnRB
dXRob3JpemF0aW9uUHJvdmlkZXIgc2V0TGlzdGVuZXI6c2VsZl07CisKICAgICByZXR1cm4gc2Vs
ZjsKIH0KIAogLSAodm9pZClkZWNpZGVQb2xpY3lGb3JHZW9sb2NhdGlvblJlcXVlc3RGcm9tT3Jp
Z2luOihXZWJLaXQ6OkZyYW1lSW5mb0RhdGEmJilmcmFtZUluZm8gY29tcGxldGlvbkhhbmRsZXI6
KEZ1bmN0aW9uPHZvaWQoYm9vbCk+JiYpY29tcGxldGlvbkhhbmRsZXIgdmlldzooV0tXZWJWaWV3
ICopY29udGVudFZpZXcKIHsKLSAgICAvLyBTdGVwIDE6IGFzayB0aGUgdXNlciBpZiB0aGUgYXBw
IGNhbiB1c2UgR2VvbG9jYXRpb24uCisgICAgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4gcmVn
aXN0cmFibGVEb21haW4oZnJhbWVJbmZvLnNlY3VyaXR5T3JpZ2luKTsKICAgICBHZW9sb2NhdGlv
blJlcXVlc3REYXRhIGdlb2xvY2F0aW9uUmVxdWVzdERhdGEgeyBbY29udGVudFZpZXcgVVJMXSwg
V1RGTW92ZShmcmFtZUluZm8pLCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSwgY29udGVudFZp
ZXcgfTsKICAgICBfcmVxdWVzdHNXYWl0aW5nRm9yQ29yZUxvY2F0aW9uQXV0aG9yaXphdGlvbi5h
cHBlbmQoV1RGTW92ZShnZW9sb2NhdGlvblJlcXVlc3REYXRhKSk7Ci0gICAgW19jb3JlTG9jYXRp
b25Qcm92aWRlciByZXF1ZXN0R2VvbG9jYXRpb25BdXRob3JpemF0aW9uXTsKKyAgICBpZiAoX2Ns
aWVudEF1dGhvcml6YXRpb25Qcm92aWRlcikgeworICAgICAgICAvLyBTdGVwIDE6IGFzayB0aGUg
dXNlciBpZiB0aGUgYXBwIGNhbiB1c2UgR2VvbG9jYXRpb24uCisgICAgICAgIFtfY2xpZW50QXV0
aG9yaXphdGlvblByb3ZpZGVyIHJlcXVlc3RHZW9sb2NhdGlvbkF1dGhvcml6YXRpb25dOworICAg
IH0gZWxzZSB7CisgICAgICAgIC8vIFN0ZXAgMTogYXNrIENvcmVMb2NhdGlvbiBpZiB0aGUgYXBw
IGNhbiB1c2UgR2VvbG9jYXRpb24uCisgICAgICAgIFdlYkNvcmU6OkNvcmVMb2NhdGlvbkdlb2xv
Y2F0aW9uUHJvdmlkZXI6OnJlcXVlc3RBdXRob3JpemF0aW9uKHJlZ2lzdHJhYmxlRG9tYWluLCBb
c2VsZiwgc3Ryb25nU2VsZiA9IHJldGFpblB0cihzZWxmKV0oYm9vbCBhdXRob3JpemVkKSB7Cisg
ICAgICAgICAgICBpZiAoYXV0aG9yaXplZCkKKyAgICAgICAgICAgICAgICBbc2VsZiBnZW9sb2Nh
dGlvbkF1dGhvcml6YXRpb25HcmFudGVkXTsKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAg
ICAgICBbc2VsZiBnZW9sb2NhdGlvbkF1dGhvcml6YXRpb25EZW5pZWRdOworICAgICAgICB9KTsK
KyAgICB9CiB9CiBAZW5kCiAKQEAgLTE3NCw3ICsxNDUsNyBAQCBAaW1wbGVtZW50YXRpb24gV0tH
ZW9sb2NhdGlvblByb3ZpZGVySU9TIChXZWJHZW9sb2NhdGlvbkNvcmVMb2NhdGlvblVwZGF0ZUxp
c3RlbgogCiAtICh2b2lkKWdlb2xvY2F0aW9uQXV0aG9yaXphdGlvbkdyYW50ZWQKIHsKLSAgICAv
LyBTdGVwIDI6IGFzayB0aGUgdXNlciBpZiB0aGlzIHBhcnRpY3VsYXIgcGFnZSBjYW4gdXNlIGdl
bG9jYXRpb24uCisgICAgLy8gU3RlcCAyOiBhc2sgdGhlIHVzZXIgaWYgdGhpcyBwYXJ0aWN1bGFy
IHBhZ2UgY2FuIHVzZSBnZW9sb2NhdGlvbi4KICAgICBpZiAoX3JlcXVlc3RzV2FpdGluZ0ZvckNv
cmVMb2NhdGlvbkF1dGhvcml6YXRpb24uaXNFbXB0eSgpKQogICAgICAgICByZXR1cm47CiAKQEAg
LTIxMCw5MyArMTgxLDE0IEBAIC0gKHZvaWQpZ2VvbG9jYXRpb25BdXRob3JpemF0aW9uRGVuaWVk
CiAKIC0gKHZvaWQpcG9zaXRpb25DaGFuZ2VkOihfV0tHZW9sb2NhdGlvblBvc2l0aW9uICopcG9z
aXRpb24KIHsKLSAgICBfbGFzdEFjdGl2ZVBvc2l0aW9uID0gcG9zaXRpb24tPl9nZW9sb2NhdGlv
blBvc2l0aW9uLmdldCgpOwotICAgIF9nZW9sb2NhdGlvbk1hbmFnZXItPnByb3ZpZGVyRGlkQ2hh
bmdlUG9zaXRpb24oX2xhc3RBY3RpdmVQb3NpdGlvbi5nZXQoKSk7Ci19Ci0KLS0gKHZvaWQpZXJy
b3JPY2N1cnJlZDooTlNTdHJpbmcgKillcnJvck1lc3NhZ2UKLXsKLSAgICBfZ2VvbG9jYXRpb25N
YW5hZ2VyLT5wcm92aWRlckRpZEZhaWxUb0RldGVybWluZVBvc2l0aW9uKGVycm9yTWVzc2FnZSk7
Ci19Ci0KLS0gKHZvaWQpcmVzZXRHZW9sb2NhdGlvbgotewotICAgIF9nZW9sb2NhdGlvbk1hbmFn
ZXItPnJlc2V0UGVybWlzc2lvbnMoKTsKLX0KLQotQGVuZAotCi0jIHByYWdtYSBtYXJrIC0gSW1w
bGVtZW50YXRpb24gb2YgV0tMZWdhY3lDb3JlTG9jYXRpb25Qcm92aWRlcgotCi1AaW1wbGVtZW50
YXRpb24gV0tMZWdhY3lDb3JlTG9jYXRpb25Qcm92aWRlciB7Ci0gICAgaWQgPF9XS0dlb2xvY2F0
aW9uQ29yZUxvY2F0aW9uTGlzdGVuZXI+IF9saXN0ZW5lcjsKLSAgICBSZXRhaW5QdHI8V2ViR2Vv
bG9jYXRpb25Db3JlTG9jYXRpb25Qcm92aWRlcj4gX3Byb3ZpZGVyOwotfQotCi0vLyA8X1dLR2Vv
bG9jYXRpb25Db3JlTG9jYXRpb25Qcm92aWRlcj4gTWV0aG9kcwotCi0tICh2b2lkKXNldExpc3Rl
bmVyOihpZDxfV0tHZW9sb2NhdGlvbkNvcmVMb2NhdGlvbkxpc3RlbmVyPilsaXN0ZW5lcgotewot
ICAgIEFTU0VSVChsaXN0ZW5lciAmJiAhX2xpc3RlbmVyICYmICFfcHJvdmlkZXIpOwotICAgIF9s
aXN0ZW5lciA9IGxpc3RlbmVyOwotICAgIF9wcm92aWRlciA9IGFkb3B0TlMoW1tXZWJHZW9sb2Nh
dGlvbkNvcmVMb2NhdGlvblByb3ZpZGVyIGFsbG9jXSBpbml0V2l0aExpc3RlbmVyOnNlbGZdKTsK
LX0KLQotLSAodm9pZClyZXF1ZXN0R2VvbG9jYXRpb25BdXRob3JpemF0aW9uCi17Ci0gICAgQVNT
RVJUKF9wcm92aWRlcik7Ci0gICAgW19wcm92aWRlciByZXF1ZXN0R2VvbG9jYXRpb25BdXRob3Jp
emF0aW9uXTsKLX0KLQotLSAodm9pZClzdGFydAotewotICAgIEFTU0VSVChfcHJvdmlkZXIpOwot
ICAgIFtfcHJvdmlkZXIgc3RhcnRdOwotfQotCi0tICh2b2lkKXN0b3AKLXsKLSAgICBBU1NFUlQo
X3Byb3ZpZGVyKTsKLSAgICBbX3Byb3ZpZGVyIHN0b3BdOwotfQotCi0tICh2b2lkKXNldEVuYWJs
ZUhpZ2hBY2N1cmFjeTooQk9PTClmbGFnCi17Ci0gICAgQVNTRVJUKF9wcm92aWRlcik7Ci0gICAg
W19wcm92aWRlciBzZXRFbmFibGVIaWdoQWNjdXJhY3k6ZmxhZ107Ci19Ci0KLS8vIDxXZWJHZW9s
b2NhdGlvbkNvcmVMb2NhdGlvblVwZGF0ZUxpc3RlbmVyPiBNZXRob2RzCi0KLS0gKHZvaWQpZ2Vv
bG9jYXRpb25BdXRob3JpemF0aW9uR3JhbnRlZAotewotICAgIEFTU0VSVChfbGlzdGVuZXIpOwot
ICAgIFtfbGlzdGVuZXIgZ2VvbG9jYXRpb25BdXRob3JpemF0aW9uR3JhbnRlZF07Ci19Ci0KLS0g
KHZvaWQpZ2VvbG9jYXRpb25BdXRob3JpemF0aW9uRGVuaWVkCi17Ci0gICAgQVNTRVJUKF9saXN0
ZW5lcik7Ci0gICAgW19saXN0ZW5lciBnZW9sb2NhdGlvbkF1dGhvcml6YXRpb25EZW5pZWRdOwot
fQotCi0tICh2b2lkKXBvc2l0aW9uQ2hhbmdlZDooV2ViQ29yZTo6R2VvbG9jYXRpb25Qb3NpdGlv
bkRhdGEmJiljb3JlUG9zaXRpb24KLXsKLSAgICBBU1NFUlQoX2xpc3RlbmVyKTsKLSAgICBhdXRv
IHBvc2l0aW9uID0gV2ViS2l0OjpXZWJHZW9sb2NhdGlvblBvc2l0aW9uOjpjcmVhdGUoV1RGTW92
ZShjb3JlUG9zaXRpb24pKTsKLSAgICBbX2xpc3RlbmVyIHBvc2l0aW9uQ2hhbmdlZDp3cmFwcGVy
KHBvc2l0aW9uLmdldCgpKV07CiB9CiAKIC0gKHZvaWQpZXJyb3JPY2N1cnJlZDooTlNTdHJpbmcg
KillcnJvck1lc3NhZ2UKIHsKLSAgICBBU1NFUlQoX2xpc3RlbmVyKTsKLSAgICBbX2xpc3RlbmVy
IGVycm9yT2NjdXJyZWQ6ZXJyb3JNZXNzYWdlXTsKIH0KIAogLSAodm9pZClyZXNldEdlb2xvY2F0
aW9uCiB7Ci0gICAgQVNTRVJUKF9saXN0ZW5lcik7Ci0gICAgW19saXN0ZW5lciByZXNldEdlb2xv
Y2F0aW9uXTsKIH0KIAogQGVuZApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJLaXQueGNv
ZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9w
cm9qZWN0LnBieHByb2oKaW5kZXggZjdiZWU1NDNjZTBmYzBhYzA2ZDc2ODUxZWUyMTdkZjdhZDg0
MDBiOS4uYzUzZTA0MTJiYjhjMTQyYWQ1N2U4YjMyOWEwYzZkNjg5MWQ3NmI0YyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9T
b3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC00MzE2LDYg
KzQzMTYsNyBAQAogCQk0NkNFM0IxMDIzRDhDODNEMDAxNkE5NkEgLyogV2ViQmFja0ZvcndhcmRM
aXN0Q291bnRzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYkJhY2tGb3J3
YXJkTGlzdENvdW50cy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0NkQ0OEZDQzI3
OTlEN0REMDA3RDIwMTQgLyogV2ViU2hhcmVkV29ya2VyU2VydmVyVG9Db250ZXh0Q29ubmVjdGlv
bi5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXZWJTaGFyZWRXb3JrZXJTZXJ2ZXJUb0NvbnRleHRD
b25uZWN0aW9uLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDZENDhGQ0QyNzk5
RDdERTAwN0QyMDE0IC8qIFdlYlNoYXJlZFdvcmtlclNlcnZlclRvQ29udGV4dENvbm5lY3Rpb24u
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gV2ViU2hhcmVkV29ya2VyU2VydmVyVG9Db250ZXh0Q29ubmVjdGlv
bi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk0NkRBMjg1NzI3QjczRTc2MDA4OUQz
MzkgLyogV2ViR2VvbG9jYXRpb25NYW5hZ2VyUHJveHlDb2NvYS5jcHAgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBh
dGggPSBXZWJHZW9sb2NhdGlvbk1hbmFnZXJQcm94eUNvY29hLmNwcDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJNDZERjA2MzkxRjM5MDVFNTAwMTk4MEJCIC8qIE5ldHdvcmtDT1JTUHJl
ZmxpZ2h0Q2hlY2tlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBO
ZXR3b3JrQ09SU1ByZWZsaWdodENoZWNrZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQk0NkRGMDYzQTFGMzkwNUU1MDAxOTgwQkIgLyogTmV0d29ya0NPUlNQcmVmbGlnaHRDaGVj
a2VyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE5ldHdvcmtDT1JTUHJlZmxp
Z2h0Q2hlY2tlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0NkU5NzYwQTI3NTdG
NkM5MDBBQ0REMzcgLyogV2ViQnJvYWRjYXN0Q2hhbm5lbFJlZ2lzdHJ5Lm1lc3NhZ2VzLmluICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gdGV4dDsgcGF0aCA9IFdlYkJyb2FkY2FzdENoYW5uZWxSZWdpc3RyeS5tZXNzYWdl
cy5pbjsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTc2MDMsNiArNzYwNCw3IEBACiAJ
CQkJNTJENUExQUExQzU3NDk0RTAwREUzNEEzIC8qIFZpZGVvRnVsbHNjcmVlbk1hbmFnZXJQcm94
eS5oICovLAogCQkJCTUyRDVBMUFCMUM1NzQ5NEUwMERFMzRBMyAvKiBWaWRlb0Z1bGxzY3JlZW5N
YW5hZ2VyUHJveHkubWVzc2FnZXMuaW4gKi8sCiAJCQkJNTJENUExQUMxQzU3NDk0RTAwREUzNEEz
IC8qIFZpZGVvRnVsbHNjcmVlbk1hbmFnZXJQcm94eS5tbSAqLywKKwkJCQk0NkRBMjg1NzI3Qjcz
RTc2MDA4OUQzMzkgLyogV2ViR2VvbG9jYXRpb25NYW5hZ2VyUHJveHlDb2NvYS5jcHAgKi8sCiAJ
CQkJQzE4RjNBMTMyNTYzMzJBNjAwNzk3RTY2IC8qIFdlYkluc3BlY3RvclByZWZlcmVuY2VPYnNl
cnZlci5oICovLAogCQkJCUMxOEYzQTE0MjU2MzMzNDMwMDc5N0U2NiAvKiBXZWJJbnNwZWN0b3JQ
cmVmZXJlbmNlT2JzZXJ2ZXIubW0gKi8sCiAJCQkJQ0RGMUI5MTkyNjcwMjFENjAwMDdFQzEwIC8q
IFdlYktpdFN3aWZ0U29mdExpbmsuaCAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9HZW9sb2NhdGlvbi9XZWJHZW9sb2NhdGlvbk1hbmFnZXIuY3BwIGIvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL0dlb2xvY2F0aW9uL1dlYkdlb2xvY2F0aW9uTWFuYWdlci5jcHAKaW5k
ZXggNWE5YzlmNGQyYTFjZDY2YTRiNjc1OWI1OTM4N2VhMmNmNTViMmFhOC4uZDU5ZmE5ZGJhNmQw
ZDA5MmNhYWU5YTRhY2UyMzI5ZTlhNDhkMjBkNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL0dlb2xvY2F0aW9uL1dlYkdlb2xvY2F0aW9uTWFuYWdlci5jcHAKKysrIGIvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dlb2xvY2F0aW9uL1dlYkdlb2xvY2F0aW9uTWFuYWdlci5j
cHAKQEAgLTM5LDYgKzM5LDE0IEBACiBuYW1lc3BhY2UgV2ViS2l0IHsKIHVzaW5nIG5hbWVzcGFj
ZSBXZWJDb3JlOwogCitzdGF0aWMgUmVnaXN0cmFibGVEb21haW4gcmVnaXN0cmFibGVEb21haW5G
b3JQYWdlKFdlYlBhZ2UmIHBhZ2UpCit7CisgICAgYXV0byogZG9jdW1lbnQgPSBwYWdlLmNvcmVQ
YWdlKCkgPyBwYWdlLmNvcmVQYWdlKCktPm1haW5GcmFtZSgpLmRvY3VtZW50KCkgOiBudWxscHRy
OworICAgIGlmICghZG9jdW1lbnQpCisgICAgICAgIHJldHVybiBSZWdpc3RyYWJsZURvbWFpbiB7
IH07CisgICAgcmV0dXJuIFJlZ2lzdHJhYmxlRG9tYWluIHsgZG9jdW1lbnQtPnVybCgpIH07Cit9
CisKIGNvbnN0IGNoYXIqIFdlYkdlb2xvY2F0aW9uTWFuYWdlcjo6c3VwcGxlbWVudE5hbWUoKQog
ewogICAgIHJldHVybiAiV2ViR2VvbG9jYXRpb25NYW5hZ2VyIjsKQEAgLTUwLDg4ICs1OCwxMjUg
QEAgV2ViR2VvbG9jYXRpb25NYW5hZ2VyOjpXZWJHZW9sb2NhdGlvbk1hbmFnZXIoV2ViUHJvY2Vz
cyYgcHJvY2VzcykKICAgICBtX3Byb2Nlc3MuYWRkTWVzc2FnZVJlY2VpdmVyKE1lc3NhZ2VzOjpX
ZWJHZW9sb2NhdGlvbk1hbmFnZXI6Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSwgKnRoaXMpOwogfQog
Ci12b2lkIFdlYkdlb2xvY2F0aW9uTWFuYWdlcjo6cmVnaXN0ZXJXZWJQYWdlKFdlYlBhZ2UmIHBh
Z2UsIGNvbnN0IFN0cmluZyYgYXV0aG9yaXphdGlvblRva2VuKQorV2ViR2VvbG9jYXRpb25NYW5h
Z2VyOjp+V2ViR2VvbG9jYXRpb25NYW5hZ2VyKCkgPSBkZWZhdWx0OworCit2b2lkIFdlYkdlb2xv
Y2F0aW9uTWFuYWdlcjo6cmVnaXN0ZXJXZWJQYWdlKFdlYlBhZ2UmIHBhZ2UsIGNvbnN0IFN0cmlu
ZyYgYXV0aG9yaXphdGlvblRva2VuLCBib29sIG5lZWRzSGlnaEFjY3VyYWN5KQogewotICAgIGJv
b2wgd2FzVXBkYXRpbmcgPSBpc1VwZGF0aW5nKCk7CisgICAgYXV0byByZWdpc3RyYWJsZURvbWFp
biA9IHJlZ2lzdHJhYmxlRG9tYWluRm9yUGFnZShwYWdlKTsKKyAgICBpZiAocmVnaXN0cmFibGVE
b21haW4uaXNFbXB0eSgpKQorICAgICAgICByZXR1cm47CisKKyAgICBhdXRvJiBwYWdlU2V0cyA9
IG1fcGFnZVNldHMuZW5zdXJlKHJlZ2lzdHJhYmxlRG9tYWluLCBbXSB7CisgICAgICAgIHJldHVy
biBQYWdlU2V0cyB7IH07CisgICAgfSkuaXRlcmF0b3ItPnZhbHVlOworICAgIGJvb2wgd2FzVXBk
YXRpbmcgPSAhcGFnZVNldHMucGFnZVNldC5jb21wdXRlc0VtcHR5KCk7CiAKLSAgICBtX3BhZ2VT
ZXQuYWRkKHBhZ2UpOworICAgIHBhZ2VTZXRzLnBhZ2VTZXQuYWRkKHBhZ2UpOworICAgIGlmIChu
ZWVkc0hpZ2hBY2N1cmFjeSkKKyAgICAgICAgcGFnZVNldHMuaGlnaEFjY3VyYWN5UGFnZVNldC5h
ZGQocGFnZSk7CisgICAgbV9wYWdlVG9SZWdpc3RyYWJsZURvbWFpbi5hZGQoJnBhZ2UsIHJlZ2lz
dHJhYmxlRG9tYWluKTsKIAogICAgIGlmICghd2FzVXBkYXRpbmcpCi0gICAgICAgIG1fcHJvY2Vz
cy5wYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpLT5zZW5kKE1lc3NhZ2VzOjpXZWJHZW9sb2NhdGlv
bk1hbmFnZXJQcm94eTo6U3RhcnRVcGRhdGluZyhwYWdlLndlYlBhZ2VQcm94eUlkZW50aWZpZXIo
KSwgYXV0aG9yaXphdGlvblRva2VuKSwgMCk7CisgICAgICAgIG1fcHJvY2Vzcy5wYXJlbnRQcm9j
ZXNzQ29ubmVjdGlvbigpLT5zZW5kKE1lc3NhZ2VzOjpXZWJHZW9sb2NhdGlvbk1hbmFnZXJQcm94
eTo6U3RhcnRVcGRhdGluZyhyZWdpc3RyYWJsZURvbWFpbiwgcGFnZS53ZWJQYWdlUHJveHlJZGVu
dGlmaWVyKCksIGF1dGhvcml6YXRpb25Ub2tlbiwgbmVlZHNIaWdoQWNjdXJhY3kpLCAwKTsKIH0K
IAogdm9pZCBXZWJHZW9sb2NhdGlvbk1hbmFnZXI6OnVucmVnaXN0ZXJXZWJQYWdlKFdlYlBhZ2Um
IHBhZ2UpCiB7Ci0gICAgYm9vbCBoaWdoQWNjdXJhY3lXYXNFbmFibGVkID0gaXNIaWdoQWNjdXJh
Y3lFbmFibGVkKCk7CisgICAgYXV0byByZWdpc3RyYWJsZURvbWFpbiA9IG1fcGFnZVRvUmVnaXN0
cmFibGVEb21haW4udGFrZSgmcGFnZSk7CisgICAgaWYgKHJlZ2lzdHJhYmxlRG9tYWluLmlzRW1w
dHkoKSkKKyAgICAgICAgcmV0dXJuOwogCi0gICAgbV9wYWdlU2V0LnJlbW92ZShwYWdlKTsKLSAg
ICBtX2hpZ2hBY2N1cmFjeVBhZ2VTZXQucmVtb3ZlKHBhZ2UpOworICAgIGF1dG8gaXQgPSBtX3Bh
Z2VTZXRzLmZpbmQocmVnaXN0cmFibGVEb21haW4pOworICAgIGlmIChpdCA9PSBtX3BhZ2VTZXRz
LmVuZCgpKQorICAgICAgICByZXR1cm47CiAKLSAgICBpZiAoIWlzVXBkYXRpbmcoKSkKLSAgICAg
ICAgbV9wcm9jZXNzLnBhcmVudFByb2Nlc3NDb25uZWN0aW9uKCktPnNlbmQoTWVzc2FnZXM6Oldl
Ykdlb2xvY2F0aW9uTWFuYWdlclByb3h5OjpTdG9wVXBkYXRpbmcoKSwgMCk7CisgICAgYXV0byYg
cGFnZVNldHMgPSBpdC0+dmFsdWU7CisgICAgYm9vbCBoaWdoQWNjdXJhY3lXYXNFbmFibGVkID0g
IXBhZ2VTZXRzLmhpZ2hBY2N1cmFjeVBhZ2VTZXQuY29tcHV0ZXNFbXB0eSgpOworCisgICAgcGFn
ZVNldHMucGFnZVNldC5yZW1vdmUocGFnZSk7CisgICAgcGFnZVNldHMuaGlnaEFjY3VyYWN5UGFn
ZVNldC5yZW1vdmUocGFnZSk7CisKKyAgICBpZiAocGFnZVNldHMucGFnZVNldC5jb21wdXRlc0Vt
cHR5KCkpCisgICAgICAgIG1fcHJvY2Vzcy5wYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpLT5zZW5k
KE1lc3NhZ2VzOjpXZWJHZW9sb2NhdGlvbk1hbmFnZXJQcm94eTo6U3RvcFVwZGF0aW5nKHJlZ2lz
dHJhYmxlRG9tYWluKSwgMCk7CiAgICAgZWxzZSB7Ci0gICAgICAgIGJvb2wgaGlnaEFjY3VyYWN5
U2hvdWxkQmVFbmFibGVkID0gaXNIaWdoQWNjdXJhY3lFbmFibGVkKCk7CisgICAgICAgIGJvb2wg
aGlnaEFjY3VyYWN5U2hvdWxkQmVFbmFibGVkID0gIXBhZ2VTZXRzLmhpZ2hBY2N1cmFjeVBhZ2VT
ZXQuY29tcHV0ZXNFbXB0eSgpOwogICAgICAgICBpZiAoaGlnaEFjY3VyYWN5V2FzRW5hYmxlZCAh
PSBoaWdoQWNjdXJhY3lTaG91bGRCZUVuYWJsZWQpCi0gICAgICAgICAgICBtX3Byb2Nlc3MucGFy
ZW50UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+c2VuZChNZXNzYWdlczo6V2ViR2VvbG9jYXRpb25NYW5h
Z2VyUHJveHk6OlNldEVuYWJsZUhpZ2hBY2N1cmFjeShoaWdoQWNjdXJhY3lTaG91bGRCZUVuYWJs
ZWQpLCAwKTsKKyAgICAgICAgICAgIG1fcHJvY2Vzcy5wYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigp
LT5zZW5kKE1lc3NhZ2VzOjpXZWJHZW9sb2NhdGlvbk1hbmFnZXJQcm94eTo6U2V0RW5hYmxlSGln
aEFjY3VyYWN5KHJlZ2lzdHJhYmxlRG9tYWluLCBoaWdoQWNjdXJhY3lTaG91bGRCZUVuYWJsZWQp
LCAwKTsKICAgICB9CisKKyAgICBpZiAocGFnZVNldHMucGFnZVNldC5jb21wdXRlc0VtcHR5KCkg
JiYgcGFnZVNldHMuaGlnaEFjY3VyYWN5UGFnZVNldC5jb21wdXRlc0VtcHR5KCkpCisgICAgICAg
IG1fcGFnZVNldHMucmVtb3ZlKGl0KTsKIH0KIAogdm9pZCBXZWJHZW9sb2NhdGlvbk1hbmFnZXI6
OnNldEVuYWJsZUhpZ2hBY2N1cmFjeUZvclBhZ2UoV2ViUGFnZSYgcGFnZSwgYm9vbCBlbmFibGVk
KQogewotICAgIGJvb2wgaGlnaEFjY3VyYWN5V2FzRW5hYmxlZCA9IGlzSGlnaEFjY3VyYWN5RW5h
YmxlZCgpOworICAgIGF1dG8gcmVnaXN0cmFibGVEb21haW4gPSBtX3BhZ2VUb1JlZ2lzdHJhYmxl
RG9tYWluLmdldCgmcGFnZSk7CisgICAgaWYgKHJlZ2lzdHJhYmxlRG9tYWluLmlzRW1wdHkoKSkK
KyAgICAgICAgcmV0dXJuOworCisgICAgYXV0byBpdCA9IG1fcGFnZVNldHMuZmluZChyZWdpc3Ry
YWJsZURvbWFpbik7CisgICAgQVNTRVJUKGl0ICE9IG1fcGFnZVNldHMuZW5kKCkpOworICAgIGlm
IChpdCA9PSBtX3BhZ2VTZXRzLmVuZCgpKQorICAgICAgICByZXR1cm47CisKKyAgICBhdXRvJiBw
YWdlU2V0cyA9IGl0LT52YWx1ZTsKKyAgICBib29sIGhpZ2hBY2N1cmFjeVdhc0VuYWJsZWQgPSAh
cGFnZVNldHMuaGlnaEFjY3VyYWN5UGFnZVNldC5jb21wdXRlc0VtcHR5KCk7CiAKICAgICBpZiAo
ZW5hYmxlZCkKLSAgICAgICAgbV9oaWdoQWNjdXJhY3lQYWdlU2V0LmFkZChwYWdlKTsKKyAgICAg
ICAgcGFnZVNldHMuaGlnaEFjY3VyYWN5UGFnZVNldC5hZGQocGFnZSk7CiAgICAgZWxzZQotICAg
ICAgICBtX2hpZ2hBY2N1cmFjeVBhZ2VTZXQucmVtb3ZlKHBhZ2UpOworICAgICAgICBwYWdlU2V0
cy5oaWdoQWNjdXJhY3lQYWdlU2V0LnJlbW92ZShwYWdlKTsKIAotICAgIGJvb2wgaGlnaEFjY3Vy
YWN5U2hvdWxkQmVFbmFibGVkID0gaXNIaWdoQWNjdXJhY3lFbmFibGVkKCk7CisgICAgYm9vbCBo
aWdoQWNjdXJhY3lTaG91bGRCZUVuYWJsZWQgPSAhcGFnZVNldHMuaGlnaEFjY3VyYWN5UGFnZVNl
dC5jb21wdXRlc0VtcHR5KCk7CiAgICAgaWYgKGhpZ2hBY2N1cmFjeVdhc0VuYWJsZWQgIT0gaGln
aEFjY3VyYWN5U2hvdWxkQmVFbmFibGVkKQotICAgICAgICBtX3Byb2Nlc3MucGFyZW50UHJvY2Vz
c0Nvbm5lY3Rpb24oKS0+c2VuZChNZXNzYWdlczo6V2ViR2VvbG9jYXRpb25NYW5hZ2VyUHJveHk6
OlNldEVuYWJsZUhpZ2hBY2N1cmFjeShoaWdoQWNjdXJhY3lTaG91bGRCZUVuYWJsZWQpLCAwKTsK
KyAgICAgICAgbV9wcm9jZXNzLnBhcmVudFByb2Nlc3NDb25uZWN0aW9uKCktPnNlbmQoTWVzc2Fn
ZXM6OldlYkdlb2xvY2F0aW9uTWFuYWdlclByb3h5OjpTZXRFbmFibGVIaWdoQWNjdXJhY3kocmVn
aXN0cmFibGVEb21haW4sIGhpZ2hBY2N1cmFjeVNob3VsZEJlRW5hYmxlZCksIDApOwogfQogCi12
b2lkIFdlYkdlb2xvY2F0aW9uTWFuYWdlcjo6ZGlkQ2hhbmdlUG9zaXRpb24oY29uc3QgR2VvbG9j
YXRpb25Qb3NpdGlvbkRhdGEmIHBvc2l0aW9uKQordm9pZCBXZWJHZW9sb2NhdGlvbk1hbmFnZXI6
OmRpZENoYW5nZVBvc2l0aW9uKGNvbnN0IFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluJiByZWdp
c3RyYWJsZURvbWFpbiwgY29uc3QgR2VvbG9jYXRpb25Qb3NpdGlvbkRhdGEmIHBvc2l0aW9uKQog
ewogI2lmIEVOQUJMRShHRU9MT0NBVElPTikKLSAgICBmb3IgKGF1dG8mIHBhZ2UgOiBjb3B5VG9W
ZWN0b3IobV9wYWdlU2V0KSkgewotICAgICAgICBpZiAocGFnZS0+Y29yZVBhZ2UoKSkKLSAgICAg
ICAgICAgIEdlb2xvY2F0aW9uQ29udHJvbGxlcjo6ZnJvbShwYWdlLT5jb3JlUGFnZSgpKS0+cG9z
aXRpb25DaGFuZ2VkKHBvc2l0aW9uKTsKKyAgICBpZiAoYXV0byBpdCA9IG1fcGFnZVNldHMuZmlu
ZChyZWdpc3RyYWJsZURvbWFpbik7IGl0ICE9IG1fcGFnZVNldHMuZW5kKCkpIHsKKyAgICAgICAg
Zm9yIChhdXRvJiBwYWdlIDogY29weVRvVmVjdG9yKGl0LT52YWx1ZS5wYWdlU2V0KSkgeworICAg
ICAgICAgICAgaWYgKHBhZ2UtPmNvcmVQYWdlKCkpCisgICAgICAgICAgICAgICAgR2VvbG9jYXRp
b25Db250cm9sbGVyOjpmcm9tKHBhZ2UtPmNvcmVQYWdlKCkpLT5wb3NpdGlvbkNoYW5nZWQocG9z
aXRpb24pOworICAgICAgICB9CiAgICAgfQogI2Vsc2UKKyAgICBVTlVTRURfUEFSQU0ocmVnaXN0
cmFibGVEb21haW4pOwogICAgIFVOVVNFRF9QQVJBTShwb3NpdGlvbik7CiAjZW5kaWYgLy8gRU5B
QkxFKEdFT0xPQ0FUSU9OKQogfQogCi12b2lkIFdlYkdlb2xvY2F0aW9uTWFuYWdlcjo6ZGlkRmFp
bFRvRGV0ZXJtaW5lUG9zaXRpb24oY29uc3QgU3RyaW5nJiBlcnJvck1lc3NhZ2UpCit2b2lkIFdl
Ykdlb2xvY2F0aW9uTWFuYWdlcjo6ZGlkRmFpbFRvRGV0ZXJtaW5lUG9zaXRpb24oY29uc3QgV2Vi
Q29yZTo6UmVnaXN0cmFibGVEb21haW4mIHJlZ2lzdHJhYmxlRG9tYWluLCBjb25zdCBTdHJpbmcm
IGVycm9yTWVzc2FnZSkKIHsKICNpZiBFTkFCTEUoR0VPTE9DQVRJT04pCi0gICAgLy8gRklYTUU6
IEFkZCBsb2NhbGl6ZWQgZXJyb3Igc3RyaW5nLgotICAgIGF1dG8gZXJyb3IgPSBHZW9sb2NhdGlv
bkVycm9yOjpjcmVhdGUoR2VvbG9jYXRpb25FcnJvcjo6UG9zaXRpb25VbmF2YWlsYWJsZSwgZXJy
b3JNZXNzYWdlKTsKLQotICAgIGZvciAoYXV0byYgcGFnZSA6IGNvcHlUb1ZlY3RvcihtX3BhZ2VT
ZXQpKSB7Ci0gICAgICAgIGlmIChwYWdlLT5jb3JlUGFnZSgpKQotICAgICAgICAgICAgR2VvbG9j
YXRpb25Db250cm9sbGVyOjpmcm9tKHBhZ2UtPmNvcmVQYWdlKCkpLT5lcnJvck9jY3VycmVkKGVy
cm9yLmdldCgpKTsKKyAgICBpZiAoYXV0byBpdCA9IG1fcGFnZVNldHMuZmluZChyZWdpc3RyYWJs
ZURvbWFpbik7IGl0ICE9IG1fcGFnZVNldHMuZW5kKCkpIHsKKyAgICAgICAgLy8gRklYTUU6IEFk
ZCBsb2NhbGl6ZWQgZXJyb3Igc3RyaW5nLgorICAgICAgICBhdXRvIGVycm9yID0gR2VvbG9jYXRp
b25FcnJvcjo6Y3JlYXRlKEdlb2xvY2F0aW9uRXJyb3I6OlBvc2l0aW9uVW5hdmFpbGFibGUsIGVy
cm9yTWVzc2FnZSk7CisKKyAgICAgICAgZm9yIChhdXRvJiBwYWdlIDogY29weVRvVmVjdG9yKGl0
LT52YWx1ZS5wYWdlU2V0KSkgeworICAgICAgICAgICAgaWYgKHBhZ2UtPmNvcmVQYWdlKCkpCisg
ICAgICAgICAgICAgICAgR2VvbG9jYXRpb25Db250cm9sbGVyOjpmcm9tKHBhZ2UtPmNvcmVQYWdl
KCkpLT5lcnJvck9jY3VycmVkKGVycm9yLmdldCgpKTsKKyAgICAgICAgfQogICAgIH0KICNlbHNl
CisgICAgVU5VU0VEX1BBUkFNKHJlZ2lzdHJhYmxlRG9tYWluKTsKICAgICBVTlVTRURfUEFSQU0o
ZXJyb3JNZXNzYWdlKTsKICNlbmRpZiAvLyBFTkFCTEUoR0VPTE9DQVRJT04pCiB9CiAKICNpZiBQ
TEFURk9STShJT1NfRkFNSUxZKQotdm9pZCBXZWJHZW9sb2NhdGlvbk1hbmFnZXI6OnJlc2V0UGVy
bWlzc2lvbnMoKQordm9pZCBXZWJHZW9sb2NhdGlvbk1hbmFnZXI6OnJlc2V0UGVybWlzc2lvbnMo
Y29uc3QgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4mIHJlZ2lzdHJhYmxlRG9tYWluKQogewot
ICAgIG1fcHJvY2Vzcy5yZXNldEFsbEdlb2xvY2F0aW9uUGVybWlzc2lvbnMoKTsKLX0KLSNlbmRp
ZiAvLyBQTEFURk9STShJT1NfRkFNSUxZKQorICAgIGF1dG8gaXQgPSBtX3BhZ2VTZXRzLmZpbmQo
cmVnaXN0cmFibGVEb21haW4pOworICAgIGlmIChpdCAhPSBtX3BhZ2VTZXRzLmVuZCgpKQorICAg
ICAgICByZXR1cm47CiAKLWJvb2wgV2ViR2VvbG9jYXRpb25NYW5hZ2VyOjppc1VwZGF0aW5nKCkg
Y29uc3QKLXsKLSAgICByZXR1cm4gIW1fcGFnZVNldC5jb21wdXRlc0VtcHR5KCk7Ci19Ci0KLWJv
b2wgV2ViR2VvbG9jYXRpb25NYW5hZ2VyOjppc0hpZ2hBY2N1cmFjeUVuYWJsZWQoKSBjb25zdAot
ewotICAgIHJldHVybiAhbV9oaWdoQWNjdXJhY3lQYWdlU2V0LmNvbXB1dGVzRW1wdHkoKTsKKyAg
ICBmb3IgKGF1dG8mIHBhZ2UgOiBjb3B5VG9WZWN0b3IoaXQtPnZhbHVlLnBhZ2VTZXQpKSB7Cisg
ICAgICAgIGlmIChhdXRvKiBtYWluRnJhbWUgPSBwYWdlLT5jb3JlUGFnZSgpID8gJnBhZ2UtPmNv
cmVQYWdlKCktPm1haW5GcmFtZSgpIDogbnVsbHB0cikKKyAgICAgICAgICAgIG1haW5GcmFtZS0+
cmVzZXRBbGxHZW9sb2NhdGlvblBlcm1pc3Npb24oKTsKKyAgICB9CiB9CisjZW5kaWYgLy8gUExB
VEZPUk0oSU9TX0ZBTUlMWSkKIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR2VvbG9jYXRpb24vV2ViR2VvbG9jYXRpb25NYW5hZ2Vy
LmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR2VvbG9jYXRpb24vV2ViR2VvbG9jYXRpb25N
YW5hZ2VyLmgKaW5kZXggNDQ4MzU5NjM1ODc4MjE5N2NjYmE1OTI4ZWZlNjI1MTUyNmMxODUxNS4u
NTk0YjJjZWI2OWU2OGRmNTJiZTExNTNiZjViMjU4NThlMmU5YjI3ZCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dlb2xvY2F0aW9uL1dlYkdlb2xvY2F0aW9uTWFuYWdlci5o
CisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HZW9sb2NhdGlvbi9XZWJHZW9sb2NhdGlv
bk1hbmFnZXIuaApAQCAtMjgsNiArMjgsNyBAQAogI2luY2x1ZGUgIk1lc3NhZ2VSZWNlaXZlci5o
IgogI2luY2x1ZGUgIldlYkdlb2xvY2F0aW9uUG9zaXRpb24uaCIKICNpbmNsdWRlICJXZWJQcm9j
ZXNzU3VwcGxlbWVudC5oIgorI2luY2x1ZGUgPFdlYkNvcmUvUmVnaXN0cmFibGVEb21haW4uaD4K
ICNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgogI2luY2x1ZGUgPHd0Zi9Ob25jb3B5YWJsZS5oPgog
I2luY2x1ZGUgPHd0Zi9XZWFrSGFzaFNldC5oPgpAQCAtNDcsMzEgKzQ4LDMxIEBAIGNsYXNzIFdl
Ykdlb2xvY2F0aW9uTWFuYWdlciA6IHB1YmxpYyBXZWJQcm9jZXNzU3VwcGxlbWVudCwgcHVibGlj
IElQQzo6TWVzc2FnZVJlCiAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoV2ViR2VvbG9jYXRpb25N
YW5hZ2VyKTsKIHB1YmxpYzoKICAgICBleHBsaWNpdCBXZWJHZW9sb2NhdGlvbk1hbmFnZXIoV2Vi
UHJvY2VzcyYpOworICAgIH5XZWJHZW9sb2NhdGlvbk1hbmFnZXIoKTsKIAogICAgIHN0YXRpYyBj
b25zdCBjaGFyKiBzdXBwbGVtZW50TmFtZSgpOwogCi0gICAgdm9pZCByZWdpc3RlcldlYlBhZ2Uo
V2ViUGFnZSYsIGNvbnN0IFN0cmluZyYgYXV0aG9yaXphdGlvblRva2VuKTsKKyAgICB2b2lkIHJl
Z2lzdGVyV2ViUGFnZShXZWJQYWdlJiwgY29uc3QgU3RyaW5nJiBhdXRob3JpemF0aW9uVG9rZW4s
IGJvb2wgbmVlZHNIaWdoQWNjdXJhY3kpOwogICAgIHZvaWQgdW5yZWdpc3RlcldlYlBhZ2UoV2Vi
UGFnZSYpOwogICAgIHZvaWQgc2V0RW5hYmxlSGlnaEFjY3VyYWN5Rm9yUGFnZShXZWJQYWdlJiwg
Ym9vbCk7CiAKLSAgICB2b2lkIHJlcXVlc3RQZXJtaXNzaW9uKFdlYkNvcmU6Okdlb2xvY2F0aW9u
Jik7Ci0KIHByaXZhdGU6CiAgICAgLy8gSVBDOjpNZXNzYWdlUmVjZWl2ZXIKICAgICB2b2lkIGRp
ZFJlY2VpdmVNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYsIElQQzo6RGVjb2RlciYpIG92ZXJyaWRl
OwogCi0gICAgYm9vbCBpc1VwZGF0aW5nKCkgY29uc3Q7Ci0gICAgYm9vbCBpc0hpZ2hBY2N1cmFj
eUVuYWJsZWQoKSBjb25zdDsKLQotICAgIHZvaWQgZGlkQ2hhbmdlUG9zaXRpb24oY29uc3QgV2Vi
Q29yZTo6R2VvbG9jYXRpb25Qb3NpdGlvbkRhdGEmKTsKLSAgICB2b2lkIGRpZEZhaWxUb0RldGVy
bWluZVBvc2l0aW9uKGNvbnN0IFN0cmluZyYgZXJyb3JNZXNzYWdlKTsKKyAgICB2b2lkIGRpZENo
YW5nZVBvc2l0aW9uKGNvbnN0IFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluJiwgY29uc3QgV2Vi
Q29yZTo6R2VvbG9jYXRpb25Qb3NpdGlvbkRhdGEmKTsKKyAgICB2b2lkIGRpZEZhaWxUb0RldGVy
bWluZVBvc2l0aW9uKGNvbnN0IFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluJiwgY29uc3QgU3Ry
aW5nJiBlcnJvck1lc3NhZ2UpOwogI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCi0gICAgdm9pZCBy
ZXNldFBlcm1pc3Npb25zKCk7CisgICAgdm9pZCByZXNldFBlcm1pc3Npb25zKGNvbnN0IFdlYkNv
cmU6OlJlZ2lzdHJhYmxlRG9tYWluJik7CiAjZW5kaWYgLy8gUExBVEZPUk0oSU9TX0ZBTUlMWSkK
IAogICAgIFdlYlByb2Nlc3MmIG1fcHJvY2VzczsKLSAgICBXZWFrSGFzaFNldDxXZWJQYWdlPiBt
X3BhZ2VTZXQ7Ci0gICAgV2Vha0hhc2hTZXQ8V2ViUGFnZT4gbV9oaWdoQWNjdXJhY3lQYWdlU2V0
OworICAgIHN0cnVjdCBQYWdlU2V0cyB7CisgICAgICAgIFdlYWtIYXNoU2V0PFdlYlBhZ2U+IHBh
Z2VTZXQ7CisgICAgICAgIFdlYWtIYXNoU2V0PFdlYlBhZ2U+IGhpZ2hBY2N1cmFjeVBhZ2VTZXQ7
CisgICAgfTsKKyAgICBIYXNoTWFwPFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluLCBQYWdlU2V0
cz4gbV9wYWdlU2V0czsKKyAgICBIYXNoTWFwPFdlYlBhZ2UqLCBXZWJDb3JlOjpSZWdpc3RyYWJs
ZURvbWFpbj4gbV9wYWdlVG9SZWdpc3RyYWJsZURvbWFpbjsKIH07CiAKIH0gLy8gbmFtZXNwYWNl
IFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dlb2xvY2F0aW9u
L1dlYkdlb2xvY2F0aW9uTWFuYWdlci5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9HZW9sb2NhdGlvbi9XZWJHZW9sb2NhdGlvbk1hbmFnZXIubWVzc2FnZXMuaW4KaW5kZXgg
NzlmM2I0Y2U0ZWZjYWYzNDg4NTdkOTkzMzI1M2Q4OTU0ZjBmMWI4Ny4uNmZjYzYwZDJlMDhlMjZl
YWI3M2MxZjcxY2Q4ODQyZGM1MTA1MmQxOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL0dlb2xvY2F0aW9uL1dlYkdlb2xvY2F0aW9uTWFuYWdlci5tZXNzYWdlcy5pbgorKysg
Yi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR2VvbG9jYXRpb24vV2ViR2VvbG9jYXRpb25NYW5h
Z2VyLm1lc3NhZ2VzLmluCkBAIC0yMSw5ICsyMSw5IEBACiAjIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAKIG1lc3Nh
Z2VzIC0+IFdlYkdlb2xvY2F0aW9uTWFuYWdlciBOb3RSZWZDb3VudGVkIHsKLSAgICBEaWRDaGFu
Z2VQb3NpdGlvbihXZWJDb3JlOjpHZW9sb2NhdGlvblBvc2l0aW9uRGF0YSBwb3NpdGlvbik7Ci0g
ICAgRGlkRmFpbFRvRGV0ZXJtaW5lUG9zaXRpb24oU3RyaW5nIGVycm9yTWVzc2FnZSk7CisgICAg
RGlkQ2hhbmdlUG9zaXRpb24oV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4gcmVnaXN0cmFibGVE
b21haW4sIFdlYkNvcmU6Okdlb2xvY2F0aW9uUG9zaXRpb25EYXRhIHBvc2l0aW9uKTsKKyAgICBE
aWRGYWlsVG9EZXRlcm1pbmVQb3NpdGlvbihXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiByZWdp
c3RyYWJsZURvbWFpbiwgU3RyaW5nIGVycm9yTWVzc2FnZSk7CiAjaWYgUExBVEZPUk0oSU9TX0ZB
TUlMWSkKLSAgICBSZXNldFBlcm1pc3Npb25zKCk7CisgICAgUmVzZXRQZXJtaXNzaW9ucyhXZWJD
b3JlOjpSZWdpc3RyYWJsZURvbWFpbiByZWdpc3RyYWJsZURvbWFpbik7CiAjZW5kaWYKIH0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJHZW9s
b2NhdGlvbkNsaWVudC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBv
cnQvV2ViR2VvbG9jYXRpb25DbGllbnQuY3BwCmluZGV4IGVhMDJmMmFjMTZmNzMxYmY1NjQyZjg2
NzhkODZhNDk4MTFkOGMzODYuLmQxOGRmN2VmYWY1NmVmY2ZjOGQxNjk5YzkxY2QyNmI2ODliYzgy
NmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9X
ZWJHZW9sb2NhdGlvbkNsaWVudC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dl
YkNvcmVTdXBwb3J0L1dlYkdlb2xvY2F0aW9uQ2xpZW50LmNwcApAQCAtNDgsOSArNDgsOSBAQCB2
b2lkIFdlYkdlb2xvY2F0aW9uQ2xpZW50OjpnZW9sb2NhdGlvbkRlc3Ryb3llZCgpCiAgICAgZGVs
ZXRlIHRoaXM7CiB9CiAKLXZvaWQgV2ViR2VvbG9jYXRpb25DbGllbnQ6OnN0YXJ0VXBkYXRpbmco
Y29uc3QgU3RyaW5nJiBhdXRob3JpemF0aW9uVG9rZW4pCit2b2lkIFdlYkdlb2xvY2F0aW9uQ2xp
ZW50OjpzdGFydFVwZGF0aW5nKGNvbnN0IFN0cmluZyYgYXV0aG9yaXphdGlvblRva2VuLCBib29s
IG5lZWRzSGlnaEFjY3VyYWN5KQogewotICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLnN1cHBs
ZW1lbnQ8V2ViR2VvbG9jYXRpb25NYW5hZ2VyPigpLT5yZWdpc3RlcldlYlBhZ2UobV9wYWdlLCBh
dXRob3JpemF0aW9uVG9rZW4pOworICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLnN1cHBsZW1l
bnQ8V2ViR2VvbG9jYXRpb25NYW5hZ2VyPigpLT5yZWdpc3RlcldlYlBhZ2UobV9wYWdlLCBhdXRo
b3JpemF0aW9uVG9rZW4sIG5lZWRzSGlnaEFjY3VyYWN5KTsKIH0KIAogdm9pZCBXZWJHZW9sb2Nh
dGlvbkNsaWVudDo6c3RvcFVwZGF0aW5nKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJHZW9sb2NhdGlvbkNsaWVudC5oIGIvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkdlb2xvY2F0aW9uQ2xpZW50LmgKaW5k
ZXggYjE2ODE2NzQ4OTYyMjU0N2VjOTRlNjc5OGZiNjlkZDhmYTZkMDExYy4uNjVlYzBlOTM1NDI4
M2Q1ZmE3N2FmMTBiNGUxODBiODcxMmZhZWYwNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkdlb2xvY2F0aW9uQ2xpZW50LmgKKysrIGIvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkdlb2xvY2F0aW9uQ2xpZW50
LmgKQEAgLTMxLDcgKzMxLDcgQEAgbmFtZXNwYWNlIFdlYktpdCB7CiAKIGNsYXNzIFdlYlBhZ2U7
CiAKLWNsYXNzIFdlYkdlb2xvY2F0aW9uQ2xpZW50IDogcHVibGljIFdlYkNvcmU6Okdlb2xvY2F0
aW9uQ2xpZW50IHsKK2NsYXNzIFdlYkdlb2xvY2F0aW9uQ2xpZW50IGZpbmFsIDogcHVibGljIFdl
YkNvcmU6Okdlb2xvY2F0aW9uQ2xpZW50IHsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsK
IHB1YmxpYzoKICAgICBXZWJHZW9sb2NhdGlvbkNsaWVudChXZWJQYWdlJiBwYWdlKQpAQCAtNDIs
MTcgKzQyLDE3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIH5XZWJHZW9sb2NhdGlvbkNsaWVudCgp
OwogCiBwcml2YXRlOgotICAgIHZvaWQgZ2VvbG9jYXRpb25EZXN0cm95ZWQoKSBvdmVycmlkZTsK
KyAgICB2b2lkIGdlb2xvY2F0aW9uRGVzdHJveWVkKCkgZmluYWw7CiAKLSAgICB2b2lkIHN0YXJ0
VXBkYXRpbmcoY29uc3QgU3RyaW5nJiBhdXRob3JpemF0aW9uVG9rZW4pIG92ZXJyaWRlOwotICAg
IHZvaWQgc3RvcFVwZGF0aW5nKCkgb3ZlcnJpZGU7Ci0gICAgdm9pZCByZXZva2VBdXRob3JpemF0
aW9uVG9rZW4oY29uc3QgU3RyaW5nJikgb3ZlcnJpZGU7Ci0gICAgdm9pZCBzZXRFbmFibGVIaWdo
QWNjdXJhY3koYm9vbCkgb3ZlcnJpZGU7CisgICAgdm9pZCBzdGFydFVwZGF0aW5nKGNvbnN0IFN0
cmluZyYgYXV0aG9yaXphdGlvblRva2VuLCBib29sIG5lZWRzSGlnaEFjY3VyYWN5KSBmaW5hbDsK
KyAgICB2b2lkIHN0b3BVcGRhdGluZygpIGZpbmFsOworICAgIHZvaWQgcmV2b2tlQXV0aG9yaXph
dGlvblRva2VuKGNvbnN0IFN0cmluZyYpIGZpbmFsOworICAgIHZvaWQgc2V0RW5hYmxlSGlnaEFj
Y3VyYWN5KGJvb2wpIGZpbmFsOwogCi0gICAgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpHZW9sb2Nh
dGlvblBvc2l0aW9uRGF0YT4gbGFzdFBvc2l0aW9uKCkgb3ZlcnJpZGU7CisgICAgc3RkOjpvcHRp
b25hbDxXZWJDb3JlOjpHZW9sb2NhdGlvblBvc2l0aW9uRGF0YT4gbGFzdFBvc2l0aW9uKCkgZmlu
YWw7CiAKLSAgICB2b2lkIHJlcXVlc3RQZXJtaXNzaW9uKFdlYkNvcmU6Okdlb2xvY2F0aW9uJikg
b3ZlcnJpZGU7Ci0gICAgdm9pZCBjYW5jZWxQZXJtaXNzaW9uUmVxdWVzdChXZWJDb3JlOjpHZW9s
b2NhdGlvbiYpIG92ZXJyaWRlOworICAgIHZvaWQgcmVxdWVzdFBlcm1pc3Npb24oV2ViQ29yZTo6
R2VvbG9jYXRpb24mKSBmaW5hbDsKKyAgICB2b2lkIGNhbmNlbFBlcm1pc3Npb25SZXF1ZXN0KFdl
YkNvcmU6Okdlb2xvY2F0aW9uJikgZmluYWw7CiAKICAgICBXZWJQYWdlJiBtX3BhZ2U7CiB9Owpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3BwIGIvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3BwCmluZGV4IGRkNDViNDU4OGJmOWRk
MTI0ZTE4ZmFhOTVhMzI2ZWQzMTkzMWE0NTcuLjc5OTYxM2QzNzc0MjM2M2JmYmRjZDk1Mjk3OTk2
MjIwNmYwMjI4YTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9j
ZXNzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5jcHAKQEAg
LTE1MjcsMTYgKzE1MjcsNiBAQCB2b2lkIFdlYlByb2Nlc3M6OnBhZ2VBY3Rpdml0eVN0YXRlRGlk
Q2hhbmdlKFBhZ2VJZGVudGlmaWVyLCBPcHRpb25TZXQ8V2ViQ29yZTo6QQogICAgIH0KIH0KIAot
I2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCi12b2lkIFdlYlByb2Nlc3M6OnJlc2V0QWxsR2VvbG9j
YXRpb25QZXJtaXNzaW9ucygpCi17Ci0gICAgZm9yIChhdXRvJiBwYWdlIDogbV9wYWdlTWFwLnZh
bHVlcygpKSB7Ci0gICAgICAgIGlmIChGcmFtZSogbWFpbkZyYW1lID0gcGFnZS0+bWFpbkZyYW1l
KCkpCi0gICAgICAgICAgICBtYWluRnJhbWUtPnJlc2V0QWxsR2VvbG9jYXRpb25QZXJtaXNzaW9u
KCk7Ci0gICAgfQotfQotI2VuZGlmCi0KIHZvaWQgV2ViUHJvY2Vzczo6cHJlcGFyZVRvU3VzcGVu
ZChib29sIGlzU3VzcGVuc2lvbkltbWluZW50LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYg
Y29tcGxldGlvbkhhbmRsZXIpCiB7CiAgICAgV0VCUFJPQ0VTU19SRUxFQVNFX0xPRyhQcm9jZXNz
U3VzcGVuc2lvbiwgInByZXBhcmVUb1N1c3BlbmQ6IGlzU3VzcGVuc2lvbkltbWluZW50PSVkIiwg
aXNTdXNwZW5zaW9uSW1taW5lbnQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1dlYlByb2Nlc3MuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmgK
aW5kZXggYzVkZDIyNWRjMWI3MWRhOWNkZDRlZWRiYTBhMDdlNzYxNzgxNTc1ZS4uNTk1YWYwYjk3
NDEyOTBkYTZjNzM0YTA4ODZiODI0ZDIzYjFlZTU3ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
V2ViUHJvY2Vzcy5oCkBAIC0zMTAsMTAgKzMxMCw2IEBAIHB1YmxpYzoKIAogICAgIHZvaWQgaXNK
SVRFbmFibGVkKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYpOwogCi0jaWYgUExBVEZP
Uk0oSU9TX0ZBTUlMWSkKLSAgICB2b2lkIHJlc2V0QWxsR2VvbG9jYXRpb25QZXJtaXNzaW9ucygp
OwotI2VuZGlmCi0KICNpZiBQTEFURk9STShXQVlMQU5EKQogICAgIFdheWxhbmRDb21wb3NpdG9y
RGlzcGxheSogd2F5bGFuZENvbXBvc2l0b3JEaXNwbGF5KCkgY29uc3QgeyByZXR1cm4gbV93YXls
YW5kQ29tcG9zaXRvckRpc3BsYXkuZ2V0KCk7IH0KICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViR2VvbG9jYXRpb25DbGllbnQuaCBi
L1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkdlb2xvY2F0aW9uQ2xp
ZW50LmgKaW5kZXggNzdjMjgyOGQ4NTk1MzYzNWI2NGM0Yzg5OTk5MGEwYTY0ODE3MWI2Yy4uYjA3
Yzc5MDNkMjkyYTkzMzkxZTVjNDBhZWRkNjVkZWRiYWY4YzVmMSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViR2VvbG9jYXRpb25DbGllbnQuaAor
KysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJHZW9sb2NhdGlv
bkNsaWVudC5oCkBAIC0zOSw3ICszOSw3IEBAIHB1YmxpYzoKICAgICBXZWJWaWV3ICp3ZWJWaWV3
KCkgeyByZXR1cm4gbV93ZWJWaWV3OyB9CiAKICAgICB2b2lkIGdlb2xvY2F0aW9uRGVzdHJveWVk
KCkgb3ZlcnJpZGU7Ci0gICAgdm9pZCBzdGFydFVwZGF0aW5nKGNvbnN0IFN0cmluZyYgYXV0aG9y
aXphdGlvblRva2VuKSBvdmVycmlkZTsKKyAgICB2b2lkIHN0YXJ0VXBkYXRpbmcoY29uc3QgU3Ry
aW5nJiBhdXRob3JpemF0aW9uVG9rZW4sIGJvb2wgZW5hYmxlSGlnaEFjY3VyYWN5KSBvdmVycmlk
ZTsKICAgICB2b2lkIHN0b3BVcGRhdGluZygpIG92ZXJyaWRlOwogI2lmIFBMQVRGT1JNKElPU19G
QU1JTFkpCiAgICAgLy8gRklYTUU6IHVuaWZ5IHRoaXMgd2l0aCBNYWMgb24gT3BlblNvdXJjZS4K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkdl
b2xvY2F0aW9uQ2xpZW50Lm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBv
cnQvV2ViR2VvbG9jYXRpb25DbGllbnQubW0KaW5kZXggZTc4OGE1N2RkNmY4MDdlN2IyNWM3NDJi
YTgwMTkzNTdhMjczNGQzOC4uYThiODUyMWUyZGE0NzE4ZGMxNGI0MzcwYjFhNWI0YjhkNjMyODU4
OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2Vi
R2VvbG9jYXRpb25DbGllbnQubW0KKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29y
ZVN1cHBvcnQvV2ViR2VvbG9jYXRpb25DbGllbnQubW0KQEAgLTgzLDkgKzgzLDE2IEBAIHZvaWQg
V2ViR2VvbG9jYXRpb25DbGllbnQ6Omdlb2xvY2F0aW9uRGVzdHJveWVkKCkKICAgICBkZWxldGUg
dGhpczsKIH0KIAotdm9pZCBXZWJHZW9sb2NhdGlvbkNsaWVudDo6c3RhcnRVcGRhdGluZyhjb25z
dCBTdHJpbmcmIGF1dGhvcml6YXRpb25Ub2tlbikKK3ZvaWQgV2ViR2VvbG9jYXRpb25DbGllbnQ6
OnN0YXJ0VXBkYXRpbmcoY29uc3QgU3RyaW5nJiBhdXRob3JpemF0aW9uVG9rZW4sIGJvb2wgZW5h
YmxlSGlnaEFjY3VyYWN5KQogewogICAgIFVOVVNFRF9QQVJBTShhdXRob3JpemF0aW9uVG9rZW4p
OworI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCisgICAgaWYgKGVuYWJsZUhpZ2hBY2N1cmFjeSkK
KyAgICAgICAgc2V0RW5hYmxlSGlnaEFjY3VyYWN5KHRydWUpOworI2Vsc2UKKyAgICBVTlVTRURf
UEFSQU0oZW5hYmxlSGlnaEFjY3VyYWN5KTsKKyNlbmRpZgorCiAgICAgW1ttX3dlYlZpZXcgX2dl
b2xvY2F0aW9uUHJvdmlkZXJdIHJlZ2lzdGVyV2ViVmlldzptX3dlYlZpZXddOwogfQogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJHZW9sb2Nh
dGlvbkNsaWVudC5jcHAgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJDb3JlU3VwcG9ydC9X
ZWJHZW9sb2NhdGlvbkNsaWVudC5jcHAKaW5kZXggZTFmY2EyNzcyNDk2MTU0YTRlMDcwZTRkZmRh
N2U3N2U5NzM1ODJjMS4uYWM1NDUxNGM2NDJlYTBlNWY4YWYzMzY5ZTFiYmJhZTBjMzkwNzFiNyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViQ29yZVN1cHBvcnQvV2ViR2Vv
bG9jYXRpb25DbGllbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkNvcmVT
dXBwb3J0L1dlYkdlb2xvY2F0aW9uQ2xpZW50LmNwcApAQCAtNDgsOSArNDgsMTAgQEAgdm9pZCBX
ZWJHZW9sb2NhdGlvbkNsaWVudDo6Z2VvbG9jYXRpb25EZXN0cm95ZWQoKQogICAgIGRlbGV0ZSB0
aGlzOwogfQogCi12b2lkIFdlYkdlb2xvY2F0aW9uQ2xpZW50OjpzdGFydFVwZGF0aW5nKGNvbnN0
IFN0cmluZyYgYXV0aG9yaXphdGlvblRva2VuKQordm9pZCBXZWJHZW9sb2NhdGlvbkNsaWVudDo6
c3RhcnRVcGRhdGluZyhjb25zdCBTdHJpbmcmIGF1dGhvcml6YXRpb25Ub2tlbiwgYm9vbCBlbmFi
bGVIaWdoQWNjdXJhY3kpCiB7CiAgICAgVU5VU0VEX1BBUkFNKGF1dGhvcml6YXRpb25Ub2tlbik7
CisgICAgVU5VU0VEX1BBUkFNKGVuYWJsZUhpZ2hBY2N1cmFjeSk7CiAgICAgQ09NUHRyPElXZWJH
ZW9sb2NhdGlvblByb3ZpZGVyPiBwcm92aWRlcjsKICAgICBpZiAoRkFJTEVEKG1fd2ViVmlldy0+
Z2VvbG9jYXRpb25Qcm92aWRlcigmcHJvdmlkZXIpKSkKICAgICAgICAgcmV0dXJuOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViQ29yZVN1cHBvcnQvV2ViR2VvbG9jYXRp
b25DbGllbnQuaCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkdl
b2xvY2F0aW9uQ2xpZW50LmgKaW5kZXggMTk1NzQxN2I1NWQ3ZTVkMmY5YjcxZTVjOWQ5YzMwM2Rm
ZWY0ZTE4Ni4uNWI4ZTk0NDRmMjFmZWQ0M2VkZjI1OTFhMmJhMTVkYTNiZDQ0ZjQ0YSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViQ29yZVN1cHBvcnQvV2ViR2VvbG9jYXRp
b25DbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJDb3JlU3VwcG9ydC9X
ZWJHZW9sb2NhdGlvbkNsaWVudC5oCkBAIC00MSw3ICs0MSw3IEBAIHB1YmxpYzoKICAgICBXZWJH
ZW9sb2NhdGlvbkNsaWVudChXZWJWaWV3Kik7CiAKICAgICB2b2lkIGdlb2xvY2F0aW9uRGVzdHJv
eWVkKCkgZmluYWw7Ci0gICAgdm9pZCBzdGFydFVwZGF0aW5nKGNvbnN0IFN0cmluZyYgYXV0aG9y
aXphdGlvblRva2VuKSBmaW5hbDsKKyAgICB2b2lkIHN0YXJ0VXBkYXRpbmcoY29uc3QgU3RyaW5n
JiBhdXRob3JpemF0aW9uVG9rZW4sIGJvb2wgZW5hYmxlSGlnaEFjY3VyYWN5KSBmaW5hbDsKICAg
ICB2b2lkIHN0b3BVcGRhdGluZygpIGZpbmFsOwogICAgIHZvaWQgc2V0RW5hYmxlSGlnaEFjY3Vy
YWN5KGJvb2wpIGZpbmFsIHsgfQogICAgIHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6R2VvbG9jYXRp
b25Qb3NpdGlvbkRhdGE+IGxhc3RQb3NpdGlvbigpIGZpbmFsOwo=
</data>
<flag name="commit-queue"
          id="478716"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>451851</attachid>
            <date>2022-02-13 17:46:30 -0800</date>
            <delta_ts>2022-02-13 20:07:54 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-236566-20220213174630.patch</filename>
            <type>text/plain</type>
            <size>102860</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg5Njk4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IDVjOGFhZWYzNzk5ZjJmYTJmNjY5YzFm
YWZmNTU3YTc4ZmI1YzYyMDEuLjUyZDQ3N2Q5OWEzYzNkZjIxZjhhNzBlNzU3MzkzZGVkNDc2NGMy
MTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMTUgQEAKKzIwMjItMDItMTMgIENocmlzIER1bWV6ICA8Y2R1bWV6
QGFwcGxlLmNvbT4KKworICAgICAgICBEbyBwcmVsaW1pbmFyeSB3b3JrIHRvIHBhc3MgZG9tYWlu
IG5hbWVzIHRvIENvcmVMb2NhdGlvbgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MjM2NTY2CisgICAgICAgIDxyZGFyOi8vODg3NjE0MTM+CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkIGJ1aWxkIHRpbWUg
ZmxhZyBmb3IgcGFzc2luZyB3ZWJzaXRlIGlkZW50aWZpZXJzIHRvIENvcmVMb2NhdGlvbi4KKwor
ICAgICAgICAqIHd0Zi9QbGF0Zm9ybUhhdmUuaDoKKwogMjAyMi0wMi0xMiAgSmVyIE5vYmxlICA8
amVyLm5vYmxlQGFwcGxlLmNvbT4KIAogICAgICAgICBBZGQgc2V0dGluZ3MgdG8gcmVzdHJpY3Qg
bWVkaWEgY29udGFpbmVycyBhbmQgY29kZWNzIHdoZW4gaW4gQ2FwdGl2ZSBQb3J0YWwgbW9kZQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkNvcmUvQ2hh
bmdlTG9nCmluZGV4IDcxMWMxMjBjYjExYTNmMzZhNTJjZDVkNGU1ZTY1ZmI5NGZmZmQ0NDIuLjg0
ZDk3MzIyNWJmMzU3MTgzYzcyNmVjM2Y5ZDljYTkxN2I5ZmY5ZWEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw1NCBAQAorMjAyMi0wMi0xMyAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgor
CisgICAgICAgIERvIHByZWxpbWluYXJ5IHdvcmsgdG8gcGFzcyBkb21haW4gbmFtZXMgdG8gQ29y
ZUxvY2F0aW9uCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0yMzY1NjYKKyAgICAgICAgPHJkYXI6Ly84ODc2MTQxMz4KKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBEbyBwcmVsaW1pbmFyeSB3b3JrIHRvIHBhc3Mg
ZG9tYWluIG5hbWVzIHRvIENvcmVMb2NhdGlvbiB3aGVuIHVzaW5nIHRoZSBHZW9sb2NhdGlvbiBB
UEkuCisgICAgICAgIFRoaXMgcGlwZXMgdGhlIGRvbWFpbiBuYW1lcyBhbGwgdGhlIHdheSBmcm9t
IHRoZSBHZW9sb2NhdGlvbiBBUEkgdG8gdGhlIENvcmVMb2NhdGlvbiBjYWxscworICAgICAgICBi
dXQgZG9lc24ndCB5ZXQgcGFzcyB0aGUgZG9tYWluIHRvIENvcmVMb2NhdGlvbiBkdWUgdG8gPHJk
YXI6Ly84ODgzNDMwMT4uIEkgd2lsbCBmb2xsb3ctdXAKKyAgICAgICAgb25jZSA8cmRhcjovLzg4
ODM0MzAxPiBpcyBmaXhlZC4KKworICAgICAgICAqIE1vZHVsZXMvZ2VvbG9jYXRpb24vR2VvbG9j
YXRpb25DbGllbnQuaDoKKyAgICAgICAgKiBNb2R1bGVzL2dlb2xvY2F0aW9uL0dlb2xvY2F0aW9u
Q29udHJvbGxlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpHZW9sb2NhdGlvbkNvbnRyb2xsZXI6
OmRpZE5hdmlnYXRlUGFnZSk6CisgICAgICAgIChXZWJDb3JlOjpHZW9sb2NhdGlvbkNvbnRyb2xs
ZXI6OmFkZE9ic2VydmVyKToKKyAgICAgICAgKFdlYkNvcmU6Okdlb2xvY2F0aW9uQ29udHJvbGxl
cjo6cmVtb3ZlT2JzZXJ2ZXIpOgorICAgICAgICAoV2ViQ29yZTo6R2VvbG9jYXRpb25Db250cm9s
bGVyOjphY3Rpdml0eVN0YXRlRGlkQ2hhbmdlKToKKyAgICAgICAgKFdlYkNvcmU6Okdlb2xvY2F0
aW9uQ29udHJvbGxlcjo6c3RhcnRVcGRhdGluZ0lmTmVjZXNzYXJ5KToKKyAgICAgICAgKFdlYkNv
cmU6Okdlb2xvY2F0aW9uQ29udHJvbGxlcjo6c3RvcFVwZGF0aW5nSWZOZWNlc3NhcnkpOgorICAg
ICAgICAqIE1vZHVsZXMvZ2VvbG9jYXRpb24vR2VvbG9jYXRpb25Db250cm9sbGVyLmg6CisgICAg
ICAgIChXZWJDb3JlOjpHZW9sb2NhdGlvbkNvbnRyb2xsZXI6Om5lZWRzSGlnaEFjY3VyYWN5IGNv
bnN0KToKKyAgICAgICAgKiBNb2R1bGVzL2dlb2xvY2F0aW9uL0dlb2xvY2F0aW9uUG9zaXRpb25E
YXRhLmg6CisgICAgICAgICogTW9kdWxlcy9nZW9sb2NhdGlvbi9pb3MvR2VvbG9jYXRpb25Qb3Np
dGlvbkRhdGFJT1MubW06CisgICAgICAgICogU291cmNlc0NvY29hLnR4dDoKKyAgICAgICAgKiBX
ZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogcGFnZS9QYWdlLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OlBhZ2U6OmRpZENvbW1pdExvYWQpOgorICAgICAgICAqIHBs
YXRmb3JtL2NvY29hL0NvcmVMb2NhdGlvbkdlb2xvY2F0aW9uUHJvdmlkZXIuaDogQ29waWVkIGZy
b20gU291cmNlL1dlYkNvcmUvTW9kdWxlcy9nZW9sb2NhdGlvbi9HZW9sb2NhdGlvbkNsaWVudC5o
LgorICAgICAgICAqIHBsYXRmb3JtL2NvY29hL0NvcmVMb2NhdGlvbkdlb2xvY2F0aW9uUHJvdmlk
ZXIubW06IEFkZGVkLgorICAgICAgICAoaXNBdXRob3JpemF0aW9uR3JhbnRlZCk6CisgICAgICAg
ICgtW1dlYkNMTG9jYXRpb25NYW5hZ2VyIGluaXRXaXRoV2Vic2l0ZUlkZW50aWZpZXI6Y2xpZW50
Ol0pOgorICAgICAgICAoLVtXZWJDTExvY2F0aW9uTWFuYWdlciBkZWFsbG9jXSk6CisgICAgICAg
ICgtW1dlYkNMTG9jYXRpb25NYW5hZ2VyIHN0YXJ0XSk6CisgICAgICAgICgtW1dlYkNMTG9jYXRp
b25NYW5hZ2VyIHN0b3BdKToKKyAgICAgICAgKC1bV2ViQ0xMb2NhdGlvbk1hbmFnZXIgc2V0RW5h
YmxlSGlnaEFjY3VyYWN5Ol0pOgorICAgICAgICAoLVtXZWJDTExvY2F0aW9uTWFuYWdlciByZXF1
ZXN0R2VvbG9jYXRpb25BdXRob3JpemF0aW9uXSk6CisgICAgICAgICgtW1dlYkNMTG9jYXRpb25N
YW5hZ2VyIGxvY2F0aW9uTWFuYWdlckRpZENoYW5nZUF1dGhvcml6YXRpb246XSk6CisgICAgICAg
ICgtW1dlYkNMTG9jYXRpb25NYW5hZ2VyIGxvY2F0aW9uTWFuYWdlcjpkaWRVcGRhdGVMb2NhdGlv
bnM6XSk6CisgICAgICAgICgtW1dlYkNMTG9jYXRpb25NYW5hZ2VyIGxvY2F0aW9uTWFuYWdlcjpk
aWRGYWlsV2l0aEVycm9yOl0pOgorICAgICAgICAoV2ViQ29yZTo6Q29yZUxvY2F0aW9uR2VvbG9j
YXRpb25Qcm92aWRlcjo6Q29yZUxvY2F0aW9uR2VvbG9jYXRpb25Qcm92aWRlcik6CisgICAgICAg
IChXZWJDb3JlOjpDb3JlTG9jYXRpb25HZW9sb2NhdGlvblByb3ZpZGVyOjp+Q29yZUxvY2F0aW9u
R2VvbG9jYXRpb25Qcm92aWRlcik6CisgICAgICAgIChXZWJDb3JlOjpDb3JlTG9jYXRpb25HZW9s
b2NhdGlvblByb3ZpZGVyOjpzdGFydCk6CisgICAgICAgIChXZWJDb3JlOjpDb3JlTG9jYXRpb25H
ZW9sb2NhdGlvblByb3ZpZGVyOjpzdG9wKToKKyAgICAgICAgKFdlYkNvcmU6OkNvcmVMb2NhdGlv
bkdlb2xvY2F0aW9uUHJvdmlkZXI6OnNldEVuYWJsZUhpZ2hBY2N1cmFjeSk6CisgICAgICAgIChX
ZWJDb3JlOjpDb3JlTG9jYXRpb25HZW9sb2NhdGlvblByb3ZpZGVyOjpyZXF1ZXN0QXV0aG9yaXph
dGlvbik6CisgICAgICAgICogcGxhdGZvcm0vbW9jay9HZW9sb2NhdGlvbkNsaWVudE1vY2suY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6R2VvbG9jYXRpb25DbGllbnRNb2NrOjpzdGFydFVwZGF0aW5n
KToKKyAgICAgICAgKiBwbGF0Zm9ybS9tb2NrL0dlb2xvY2F0aW9uQ2xpZW50TW9jay5oOgorCiAy
MDIyLTAyLTEyICBQYXRyaWNrIEFuZ2xlICA8cGFuZ2xlQGFwcGxlLmNvbT4KIAogICAgICAgICBX
ZWIgSW5zcGVjdG9yOiBbRmxleGJveF0gU2hvdyBpdGVtIGJvdW5kcywgZ2FwcywgYW5kIGZyZWUg
c3BhY2UgaW4gZmxleCBvdmVybGF5cwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9DaGFuZ2VM
b2cgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwppbmRleCA4MWMxMWI3ODVlYTg2MTJlYjI3NmQz
ODBmZGNjOTI1NmFlOTMxN2ZkLi42MWVjNzA0MDIwYTViZWI5Njc5MDM3Njk4OTBiYTk2MzI0NTAy
MWRmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2Vi
S2l0L0NoYW5nZUxvZwpAQCAtMSwzICsxLDk0IEBACisyMDIyLTAyLTEzICBDaHJpcyBEdW1leiAg
PGNkdW1lekBhcHBsZS5jb20+CisKKyAgICAgICAgRG8gcHJlbGltaW5hcnkgd29yayB0byBwYXNz
IGRvbWFpbiBuYW1lcyB0byBDb3JlTG9jYXRpb24KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTIzNjU2NgorICAgICAgICA8cmRhcjovLzg4NzYxNDEzPgor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIERvIHByZWxp
bWluYXJ5IHdvcmsgdG8gcGFzcyBkb21haW4gbmFtZXMgdG8gQ29yZUxvY2F0aW9uIHdoZW4gdXNp
bmcgdGhlIEdlb2xvY2F0aW9uIEFQSS4KKyAgICAgICAgVGhpcyBwaXBlcyB0aGUgZG9tYWluIG5h
bWVzIGFsbCB0aGUgd2F5IGZyb20gdGhlIEdlb2xvY2F0aW9uIEFQSSB0byB0aGUgQ29yZUxvY2F0
aW9uIGNhbGxzCisgICAgICAgIGJ1dCBkb2Vzbid0IHlldCBwYXNzIHRoZSBkb21haW4gdG8gQ29y
ZUxvY2F0aW9uIGR1ZSB0byA8cmRhcjovLzg4ODM0MzAxPi4gSSB3aWxsIGZvbGxvdy11cAorICAg
ICAgICBvbmNlIDxyZGFyOi8vODg4MzQzMDE+IGlzIGZpeGVkLgorCisgICAgICAgICogU291cmNl
c0NvY29hLnR4dDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0MvV0tHZW9sb2NhdGlvbk1hbmFn
ZXIuY3BwOgorICAgICAgICAoV0tHZW9sb2NhdGlvbk1hbmFnZXJTZXRQcm92aWRlcik6CisgICAg
ICAgICogVUlQcm9jZXNzL0NvY29hL1dlYkdlb2xvY2F0aW9uTWFuYWdlclByb3h5Q29jb2EuY3Bw
OiBBZGRlZC4KKyAgICAgICAgKFdlYktpdDo6V2ViR2VvbG9jYXRpb25NYW5hZ2VyUHJveHk6OnBv
c2l0aW9uQ2hhbmdlZCk6CisgICAgICAgIChXZWJLaXQ6OldlYkdlb2xvY2F0aW9uTWFuYWdlclBy
b3h5OjplcnJvck9jY3VycmVkKToKKyAgICAgICAgKFdlYktpdDo6V2ViR2VvbG9jYXRpb25NYW5h
Z2VyUHJveHk6OnJlc2V0R2VvbG9jYXRpb24pOgorICAgICAgICAoV2ViS2l0OjpXZWJHZW9sb2Nh
dGlvbk1hbmFnZXJQcm94eTo6aXNVcGRhdGluZyBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6Oldl
Ykdlb2xvY2F0aW9uTWFuYWdlclByb3h5Ojppc0hpZ2hBY2N1cmFjeUVuYWJsZWQgY29uc3QpOgor
ICAgICAgICAoV2ViS2l0OjpXZWJHZW9sb2NhdGlvbk1hbmFnZXJQcm94eTo6cHJvdmlkZXJTdGFy
dFVwZGF0aW5nKToKKyAgICAgICAgKFdlYktpdDo6V2ViR2VvbG9jYXRpb25NYW5hZ2VyUHJveHk6
OnByb3ZpZGVyU3RvcFVwZGF0aW5nKToKKyAgICAgICAgKFdlYktpdDo6V2ViR2VvbG9jYXRpb25N
YW5hZ2VyUHJveHk6OnByb3ZpZGVyU2V0RW5hYmxlZEhpZ2hBY2N1cmFjeSk6CisgICAgICAgICog
VUlQcm9jZXNzL1dlYkdlb2xvY2F0aW9uTWFuYWdlclByb3h5LmNwcDoKKyAgICAgICAgKFdlYktp
dDo6V2ViR2VvbG9jYXRpb25NYW5hZ2VyUHJveHk6OldlYkdlb2xvY2F0aW9uTWFuYWdlclByb3h5
KToKKyAgICAgICAgKFdlYktpdDo6V2ViR2VvbG9jYXRpb25NYW5hZ2VyUHJveHk6OnByb2Nlc3NQ
b29sRGVzdHJveWVkKToKKyAgICAgICAgKFdlYktpdDo6V2ViR2VvbG9jYXRpb25NYW5hZ2VyUHJv
eHk6OnByb2Nlc3NEaWRDbG9zZSk6CisgICAgICAgIChXZWJLaXQ6OldlYkdlb2xvY2F0aW9uTWFu
YWdlclByb3h5Ojpwcm92aWRlckRpZENoYW5nZVBvc2l0aW9uKToKKyAgICAgICAgKFdlYktpdDo6
V2ViR2VvbG9jYXRpb25NYW5hZ2VyUHJveHk6OnByb3ZpZGVyRGlkRmFpbFRvRGV0ZXJtaW5lUG9z
aXRpb24pOgorICAgICAgICAoV2ViS2l0OjpXZWJHZW9sb2NhdGlvbk1hbmFnZXJQcm94eTo6c3Rh
cnRVcGRhdGluZyk6CisgICAgICAgIChXZWJLaXQ6OldlYkdlb2xvY2F0aW9uTWFuYWdlclByb3h5
OjpzdG9wVXBkYXRpbmcpOgorICAgICAgICAoV2ViS2l0OjpXZWJHZW9sb2NhdGlvbk1hbmFnZXJQ
cm94eTo6c2V0RW5hYmxlSGlnaEFjY3VyYWN5KToKKyAgICAgICAgKFdlYktpdDo6V2ViR2VvbG9j
YXRpb25NYW5hZ2VyUHJveHk6OnNldFByb3ZpZGVyKToKKyAgICAgICAgKFdlYktpdDo6V2ViR2Vv
bG9jYXRpb25NYW5hZ2VyUHJveHk6OmlzVXBkYXRpbmcgY29uc3QpOgorICAgICAgICAoV2ViS2l0
OjpXZWJHZW9sb2NhdGlvbk1hbmFnZXJQcm94eTo6aXNIaWdoQWNjdXJhY3lFbmFibGVkIGNvbnN0
KToKKyAgICAgICAgKFdlYktpdDo6V2ViR2VvbG9jYXRpb25NYW5hZ2VyUHJveHk6OnByb3ZpZGVy
U3RhcnRVcGRhdGluZyk6CisgICAgICAgIChXZWJLaXQ6OldlYkdlb2xvY2F0aW9uTWFuYWdlclBy
b3h5Ojpwcm92aWRlclN0b3BVcGRhdGluZyk6CisgICAgICAgIChXZWJLaXQ6OldlYkdlb2xvY2F0
aW9uTWFuYWdlclByb3h5Ojpwcm92aWRlclNldEVuYWJsZWRIaWdoQWNjdXJhY3kpOgorICAgICAg
ICAoV2ViS2l0OjpXZWJHZW9sb2NhdGlvbk1hbmFnZXJQcm94eTo6cmVzZXRQZXJtaXNzaW9ucyk6
IERlbGV0ZWQuCisgICAgICAgIChXZWJLaXQ6OldlYkdlb2xvY2F0aW9uTWFuYWdlclByb3h5Ojpy
ZW1vdmVSZXF1ZXN0ZXIpOiBEZWxldGVkLgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJHZW9sb2Nh
dGlvbk1hbmFnZXJQcm94eS5oOgorICAgICAgICAoV2ViS2l0OjpXZWJHZW9sb2NhdGlvbk1hbmFn
ZXJQcm94eTo6bGFzdFBvc2l0aW9uIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYktpdDo6
V2ViR2VvbG9jYXRpb25NYW5hZ2VyUHJveHk6OmlzVXBkYXRpbmcgY29uc3QpOiBEZWxldGVkLgor
ICAgICAgICAoV2ViS2l0OjpXZWJHZW9sb2NhdGlvbk1hbmFnZXJQcm94eTo6aXNIaWdoQWNjdXJh
Y3lFbmFibGVkIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViR2VvbG9j
YXRpb25NYW5hZ2VyUHJveHkubWVzc2FnZXMuaW46CisgICAgICAgICogVUlQcm9jZXNzL2lvcy9X
S0dlb2xvY2F0aW9uUHJvdmlkZXJJT1MubW06CisgICAgICAgICgtW1dLR2VvbG9jYXRpb25Qcm92
aWRlcklPUyBfc3RhcnRVcGRhdGluZ10pOgorICAgICAgICAoLVtXS0dlb2xvY2F0aW9uUHJvdmlk
ZXJJT1MgX3N0b3BVcGRhdGluZ10pOgorICAgICAgICAoLVtXS0dlb2xvY2F0aW9uUHJvdmlkZXJJ
T1MgX3NldEVuYWJsZUhpZ2hBY2N1cmFjeTpdKToKKyAgICAgICAgKC1bV0tHZW9sb2NhdGlvblBy
b3ZpZGVySU9TIGluaXRXaXRoUHJvY2Vzc1Bvb2w6XSk6CisgICAgICAgICgtW1dLR2VvbG9jYXRp
b25Qcm92aWRlcklPUyBkZWNpZGVQb2xpY3lGb3JHZW9sb2NhdGlvblJlcXVlc3RGcm9tT3JpZ2lu
OmNvbXBsZXRpb25IYW5kbGVyOnZpZXc6XSk6CisgICAgICAgICgtW1dLR2VvbG9jYXRpb25Qcm92
aWRlcklPUyBnZW9sb2NhdGlvbkF1dGhvcml6YXRpb25HcmFudGVkXSk6CisgICAgICAgICgtW1dL
R2VvbG9jYXRpb25Qcm92aWRlcklPUyBwb3NpdGlvbkNoYW5nZWQ6XSk6CisgICAgICAgICgtW1dL
R2VvbG9jYXRpb25Qcm92aWRlcklPUyBlcnJvck9jY3VycmVkOl0pOgorICAgICAgICAoLVtXS0dl
b2xvY2F0aW9uUHJvdmlkZXJJT1MgcmVzZXRHZW9sb2NhdGlvbl0pOgorICAgICAgICAoc3RhcnRV
cGRhdGluZ0NhbGxiYWNrKTogRGVsZXRlZC4KKyAgICAgICAgKHN0b3BVcGRhdGluZ0NhbGxiYWNr
KTogRGVsZXRlZC4KKyAgICAgICAgKHNldEVuYWJsZUhpZ2hBY2N1cmFjeSk6IERlbGV0ZWQuCisg
ICAgICAgICgtW1dLTGVnYWN5Q29yZUxvY2F0aW9uUHJvdmlkZXIgc2V0TGlzdGVuZXI6XSk6IERl
bGV0ZWQuCisgICAgICAgICgtW1dLTGVnYWN5Q29yZUxvY2F0aW9uUHJvdmlkZXIgcmVxdWVzdEdl
b2xvY2F0aW9uQXV0aG9yaXphdGlvbl0pOiBEZWxldGVkLgorICAgICAgICAoLVtXS0xlZ2FjeUNv
cmVMb2NhdGlvblByb3ZpZGVyIHN0YXJ0XSk6IERlbGV0ZWQuCisgICAgICAgICgtW1dLTGVnYWN5
Q29yZUxvY2F0aW9uUHJvdmlkZXIgc3RvcF0pOiBEZWxldGVkLgorICAgICAgICAoLVtXS0xlZ2Fj
eUNvcmVMb2NhdGlvblByb3ZpZGVyIHNldEVuYWJsZUhpZ2hBY2N1cmFjeTpdKTogRGVsZXRlZC4K
KyAgICAgICAgKC1bV0tMZWdhY3lDb3JlTG9jYXRpb25Qcm92aWRlciBnZW9sb2NhdGlvbkF1dGhv
cml6YXRpb25HcmFudGVkXSk6IERlbGV0ZWQuCisgICAgICAgICgtW1dLTGVnYWN5Q29yZUxvY2F0
aW9uUHJvdmlkZXIgZ2VvbG9jYXRpb25BdXRob3JpemF0aW9uRGVuaWVkXSk6IERlbGV0ZWQuCisg
ICAgICAgICgtW1dLTGVnYWN5Q29yZUxvY2F0aW9uUHJvdmlkZXIgcG9zaXRpb25DaGFuZ2VkOl0p
OiBEZWxldGVkLgorICAgICAgICAoLVtXS0xlZ2FjeUNvcmVMb2NhdGlvblByb3ZpZGVyIGVycm9y
T2NjdXJyZWQ6XSk6IERlbGV0ZWQuCisgICAgICAgICgtW1dLTGVnYWN5Q29yZUxvY2F0aW9uUHJv
dmlkZXIgcmVzZXRHZW9sb2NhdGlvbl0pOiBEZWxldGVkLgorICAgICAgICAqIFdlYktpdC54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIFdlYlByb2Nlc3MvR2VvbG9jYXRpb24v
V2ViR2VvbG9jYXRpb25NYW5hZ2VyLmNwcDoKKyAgICAgICAgKFdlYktpdDo6cmVnaXN0cmFibGVE
b21haW5Gb3JQYWdlKToKKyAgICAgICAgKFdlYktpdDo6V2ViR2VvbG9jYXRpb25NYW5hZ2VyOjpy
ZWdpc3RlcldlYlBhZ2UpOgorICAgICAgICAoV2ViS2l0OjpXZWJHZW9sb2NhdGlvbk1hbmFnZXI6
OnVucmVnaXN0ZXJXZWJQYWdlKToKKyAgICAgICAgKFdlYktpdDo6V2ViR2VvbG9jYXRpb25NYW5h
Z2VyOjpzZXRFbmFibGVIaWdoQWNjdXJhY3lGb3JQYWdlKToKKyAgICAgICAgKFdlYktpdDo6V2Vi
R2VvbG9jYXRpb25NYW5hZ2VyOjpkaWRDaGFuZ2VQb3NpdGlvbik6CisgICAgICAgIChXZWJLaXQ6
OldlYkdlb2xvY2F0aW9uTWFuYWdlcjo6ZGlkRmFpbFRvRGV0ZXJtaW5lUG9zaXRpb24pOgorICAg
ICAgICAoV2ViS2l0OjpXZWJHZW9sb2NhdGlvbk1hbmFnZXI6OnJlc2V0UGVybWlzc2lvbnMpOgor
ICAgICAgICAoV2ViS2l0OjpXZWJHZW9sb2NhdGlvbk1hbmFnZXI6OmlzVXBkYXRpbmcgY29uc3Qp
OiBEZWxldGVkLgorICAgICAgICAoV2ViS2l0OjpXZWJHZW9sb2NhdGlvbk1hbmFnZXI6OmlzSGln
aEFjY3VyYWN5RW5hYmxlZCBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgICogV2ViUHJvY2Vzcy9H
ZW9sb2NhdGlvbi9XZWJHZW9sb2NhdGlvbk1hbmFnZXIuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNz
L0dlb2xvY2F0aW9uL1dlYkdlb2xvY2F0aW9uTWFuYWdlci5tZXNzYWdlcy5pbjoKKyAgICAgICAg
KiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkdlb2xvY2F0aW9uQ2xpZW50LmNwcDoKKyAg
ICAgICAgKFdlYktpdDo6V2ViR2VvbG9jYXRpb25DbGllbnQ6OnN0YXJ0VXBkYXRpbmcpOgorICAg
ICAgICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViR2VvbG9jYXRpb25DbGllbnQuaDoK
KyAgICAgICAgKFdlYktpdDo6V2ViR2VvbG9jYXRpb25DbGllbnQ6OldlYkdlb2xvY2F0aW9uQ2xp
ZW50KTogRGVsZXRlZC4KKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3BwOgorICAg
ICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzOjpyZXNldEFsbEdlb2xvY2F0aW9uUGVybWlzc2lvbnMp
OiBEZWxldGVkLgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUHJvY2Vzcy5oOgorCiAyMDIyLTAy
LTEyICBKZXIgTm9ibGUgIDxqZXIubm9ibGVAYXBwbGUuY29tPgogCiAgICAgICAgIEFkZCBzZXR0
aW5ncyB0byByZXN0cmljdCBtZWRpYSBjb250YWluZXJzIGFuZCBjb2RlY3Mgd2hlbiBpbiBDYXB0
aXZlIFBvcnRhbCBtb2RlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9DaGFu
Z2VMb2cgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9DaGFuZ2VMb2cKaW5kZXggNjgwMzk0ODU4
YTE1YjhhMjU2OTZhYWVjN2M4ZDk0YWE3M2FkNzIyMy4uMjU5NzZhMmYwZjQ4ZDNjM2NlMjk4YmZl
ZjgwZTFhZmIxMDU4OGY2NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2hh
bmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxvZwpAQCAtMSwzICsx
LDE1IEBACisyMDIyLTAyLTEzICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CisKKyAg
ICAgICAgRG8gcHJlbGltaW5hcnkgd29yayB0byBwYXNzIGRvbWFpbiBuYW1lcyB0byBDb3JlTG9j
YXRpb24KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIz
NjU2NgorICAgICAgICA8cmRhcjovLzg4NzYxNDEzPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2ViR2VvbG9jYXRpb25D
bGllbnQuaDoKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJHZW9sb2NhdGlvbkNsaWVudC5t
bToKKyAgICAgICAgKFdlYkdlb2xvY2F0aW9uQ2xpZW50OjpzdGFydFVwZGF0aW5nKToKKwogMjAy
Mi0wMi0xMSAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgogCiAgICAgICAgIFVucmV2
aWV3ZWQsIGZpeCBidWlsZCB3aXRoIHRoZSBsYXRlc3QgaU9TIFNESy4KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXRMZWdhY3kvd2luL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2lu
L0NoYW5nZUxvZwppbmRleCA2OTVhYTkxMDUzOWVmMDIxMDVmNTIxOTMwNGMwOTdlMTAzMTI2NDU1
Li4xZDZjMDMzZTJjZDFkMTI3NDQ1YzM1YzMwY2EzODg1MGFlZjdiZGI0IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdExlZ2Fj
eS93aW4vQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTUgQEAKKzIwMjItMDItMTMgIENocmlzIER1bWV6
ICA8Y2R1bWV6QGFwcGxlLmNvbT4KKworICAgICAgICBEbyBwcmVsaW1pbmFyeSB3b3JrIHRvIHBh
c3MgZG9tYWluIG5hbWVzIHRvIENvcmVMb2NhdGlvbgorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjM2NTY2CisgICAgICAgIDxyZGFyOi8vODg3NjE0MTM+
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBXZWJD
b3JlU3VwcG9ydC9XZWJHZW9sb2NhdGlvbkNsaWVudC5jcHA6CisgICAgICAgIChXZWJHZW9sb2Nh
dGlvbkNsaWVudDo6c3RhcnRVcGRhdGluZyk6CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2Vi
R2VvbG9jYXRpb25DbGllbnQuaDoKKwogMjAyMi0wMi0wMSAgTXlsZXMgQy4gTWF4ZmllbGQgIDxt
bWF4ZmllbGRAYXBwbGUuY29tPgogCiAgICAgICAgIFJlbmFtZSBGb250Q2FzY2FkZTo6Zm9udE1l
dHJpY3MoKSBhbmQgUmVuZGVyU3R5bGU6OmZvbnRNZXRyaWNzKCkgdG8gZm9udE1ldHJpY3NPZlBy
aW1hcnlGb250KCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL1BsYXRmb3JtSGF2ZS5oIGIv
U291cmNlL1dURi93dGYvUGxhdGZvcm1IYXZlLmgKaW5kZXggMDkyYmMzNjIxNTAxZDQ0Y2VhZmIw
NzBmYWNjZDM5OTVjZGEyMzEyNy4uNjRhNWU3OWIwNDRlZmJiODJhZWYyNDlhNDFiMmRkOThmYmU4
NTcwYSAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvUGxhdGZvcm1IYXZlLmgKKysrIGIvU291
cmNlL1dURi93dGYvUGxhdGZvcm1IYXZlLmgKQEAgLTExMTksNiArMTExOSwxNiBAQAogI2RlZmlu
ZSBIQVZFX05TVEVYVExJU1RfTUFSS0VSX0ZPUk1BVFMgMQogI2VuZGlmCiAKKyNpZiAoUExBVEZP
Uk0oSU9TKSAmJiBfX0lQSE9ORV9PU19WRVJTSU9OX01BWF9BTExPV0VEID49IDE2MDAwMCkgXAor
ICAgIHx8IChQTEFURk9STShXQVRDSE9TKSAmJiBfX1dBVENIX09TX1ZFUlNJT05fTUFYX0FMTE9X
RUQgPj0gOTAwMDApIFwKKyAgICB8fCAoUExBVEZPUk0oQVBQTEVUVikgJiYgX19UVl9PU19WRVJT
SU9OX01BWF9BTExPV0VEID49IDE2MDAwMCkKKyNkZWZpbmUgSEFWRV9DT1JFX0xPQ0FUSU9OX1dF
QlNJVEVfSURFTlRJRklFUlMgMQorI2VuZGlmCisKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZKSB8
fCAoUExBVEZPUk0oTUFDKSAmJiBfX01BQ19PU19YX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49IDEw
MTQwMCAmJiBkZWZpbmVkIF9faGFzX2luY2x1ZGUgJiYgX19oYXNfaW5jbHVkZSg8Q29yZUZvdW5k
YXRpb24vQ0ZQcml2Lmg+KSkKKyNkZWZpbmUgSEFWRV9DT1JFX0xPQ0FUSU9OX0FVVEhPUklaRURf
V0hFTl9JTl9VU0UgMQorI2VuZGlmCisKICNpZiBQTEFURk9STShNQUMpCiAjZGVmaW5lIEhBVkVf
U0NFTkVLSVQgMQogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2dl
b2xvY2F0aW9uL0dlb2xvY2F0aW9uQ2xpZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2dl
b2xvY2F0aW9uL0dlb2xvY2F0aW9uQ2xpZW50LmgKaW5kZXggNWJhZjNhZDgyYzU3ZTVhY2JhOTZl
M2RmMGVkNjBlYmM3NTRiY2IwNS4uYTRlODYyMzYyNTU2N2U5YWRmZWIwMGQ4MjQwMDBhMjc3ZGJl
YWYwMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9nZW9sb2NhdGlvbi9HZW9s
b2NhdGlvbkNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZ2VvbG9jYXRpb24v
R2VvbG9jYXRpb25DbGllbnQuaApAQCAtMzgsNyArMzgsNyBAQCBjbGFzcyBHZW9sb2NhdGlvbkNs
aWVudCB7CiBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIGdlb2xvY2F0aW9uRGVzdHJveWVkKCkg
PSAwOwogCi0gICAgdmlydHVhbCB2b2lkIHN0YXJ0VXBkYXRpbmcoY29uc3QgU3RyaW5nJiBhdXRo
b3JpemF0aW9uVG9rZW4pID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgc3RhcnRVcGRhdGluZyhjb25z
dCBTdHJpbmcmIGF1dGhvcml6YXRpb25Ub2tlbiwgYm9vbCBuZWVkc0hpZ2hBY2N1cmFjeSkgPSAw
OwogICAgIHZpcnR1YWwgdm9pZCBzdG9wVXBkYXRpbmcoKSA9IDA7CiAgICAgdmlydHVhbCB2b2lk
IHJldm9rZUF1dGhvcml6YXRpb25Ub2tlbihjb25zdCBTdHJpbmcmKSB7IH0KIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9nZW9sb2NhdGlvbi9HZW9sb2NhdGlvbkNvbnRyb2xs
ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9nZW9sb2NhdGlvbi9HZW9sb2NhdGlvbkNv
bnRyb2xsZXIuY3BwCmluZGV4IDA2MTYyOTE2MGQ5YmNjN2Q1ZGFmNzRjZmM0ZjgxNTUwYmE0OGRl
OGMuLjA3ZGQ2NWYzYzFhZWU3OWViOWM3MzI4MzZhMmQ1YWFkMDE3MzMzY2YgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZ2VvbG9jYXRpb24vR2VvbG9jYXRpb25Db250cm9sbGVy
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2dlb2xvY2F0aW9uL0dlb2xvY2F0aW9u
Q29udHJvbGxlci5jcHAKQEAgLTUyLDE5ICs1MiwyNSBAQCBHZW9sb2NhdGlvbkNvbnRyb2xsZXI6
On5HZW9sb2NhdGlvbkNvbnRyb2xsZXIoKQogICAgIG1fY2xpZW50Lmdlb2xvY2F0aW9uRGVzdHJv
eWVkKCk7CiB9CiAKK3ZvaWQgR2VvbG9jYXRpb25Db250cm9sbGVyOjpkaWROYXZpZ2F0ZVBhZ2Uo
KQoreworICAgIHdoaWxlICghbV9vYnNlcnZlcnMuaXNFbXB0eSgpKQorICAgICAgICByZW1vdmVP
YnNlcnZlcihtX29ic2VydmVycy5iZWdpbigpLT5nZXQoKSk7Cit9CisKIHZvaWQgR2VvbG9jYXRp
b25Db250cm9sbGVyOjphZGRPYnNlcnZlcihHZW9sb2NhdGlvbiYgb2JzZXJ2ZXIsIGJvb2wgZW5h
YmxlSGlnaEFjY3VyYWN5KQogewotICAgIC8vIFRoaXMgbWF5IGJlIGNhbGxlZCBtdWx0aXBsZSB0
aW1lcyB3aXRoIHRoZSBzYW1lIG9ic2VydmVyLCB0aG91Z2ggcmVtb3ZlT2JzZXJ2ZXIoKQotICAg
IC8vIGlzIGNhbGxlZCBvbmx5IG9uY2Ugd2l0aCBlYWNoLgotICAgIGJvb2wgd2FzRW1wdHkgPSBt
X29ic2VydmVycy5pc0VtcHR5KCk7CisgICAgYm9vbCBoaWdoQWNjdXJhY3lXYXNSZXF1aXJlZCA9
IG5lZWRzSGlnaEFjY3VyYWN5KCk7CisKICAgICBtX29ic2VydmVycy5hZGQob2JzZXJ2ZXIpOwog
ICAgIGlmIChlbmFibGVIaWdoQWNjdXJhY3kpCiAgICAgICAgIG1faGlnaEFjY3VyYWN5T2JzZXJ2
ZXJzLmFkZChvYnNlcnZlcik7CiAKLSAgICBpZiAoZW5hYmxlSGlnaEFjY3VyYWN5KQotICAgICAg
ICBtX2NsaWVudC5zZXRFbmFibGVIaWdoQWNjdXJhY3kodHJ1ZSk7Ci0gICAgaWYgKHdhc0VtcHR5
ICYmIG1fcGFnZS5pc1Zpc2libGUoKSkKLSAgICAgICAgbV9jbGllbnQuc3RhcnRVcGRhdGluZyhv
YnNlcnZlci5hdXRob3JpemF0aW9uVG9rZW4oKSk7CisgICAgaWYgKG1faXNVcGRhdGluZykgewor
ICAgICAgICBpZiAoIWhpZ2hBY2N1cmFjeVdhc1JlcXVpcmVkICYmIGVuYWJsZUhpZ2hBY2N1cmFj
eSkKKyAgICAgICAgICAgIG1fY2xpZW50LnNldEVuYWJsZUhpZ2hBY2N1cmFjeSh0cnVlKTsKKyAg
ICB9IGVsc2UKKyAgICAgICAgc3RhcnRVcGRhdGluZ0lmTmVjZXNzYXJ5KCk7CiB9CiAKIHZvaWQg
R2VvbG9jYXRpb25Db250cm9sbGVyOjpyZW1vdmVPYnNlcnZlcihHZW9sb2NhdGlvbiYgb2JzZXJ2
ZXIpCkBAIC03MiwxMiArNzgsMTcgQEAgdm9pZCBHZW9sb2NhdGlvbkNvbnRyb2xsZXI6OnJlbW92
ZU9ic2VydmVyKEdlb2xvY2F0aW9uJiBvYnNlcnZlcikKICAgICBpZiAoIW1fb2JzZXJ2ZXJzLmNv
bnRhaW5zKG9ic2VydmVyKSkKICAgICAgICAgcmV0dXJuOwogCisgICAgYm9vbCBoaWdoQWNjdXJh
Y3lXYXNSZXF1aXJlZCA9IG5lZWRzSGlnaEFjY3VyYWN5KCk7CisKICAgICBtX29ic2VydmVycy5y
ZW1vdmUob2JzZXJ2ZXIpOwogICAgIG1faGlnaEFjY3VyYWN5T2JzZXJ2ZXJzLnJlbW92ZShvYnNl
cnZlcik7CiAKKyAgICBpZiAoIW1faXNVcGRhdGluZykKKyAgICAgICAgcmV0dXJuOworCiAgICAg
aWYgKG1fb2JzZXJ2ZXJzLmlzRW1wdHkoKSkKLSAgICAgICAgbV9jbGllbnQuc3RvcFVwZGF0aW5n
KCk7Ci0gICAgZWxzZSBpZiAobV9oaWdoQWNjdXJhY3lPYnNlcnZlcnMuaXNFbXB0eSgpKQorICAg
ICAgICBzdG9wVXBkYXRpbmdJZk5lY2Vzc2FyeSgpOworICAgIGVsc2UgaWYgKGhpZ2hBY2N1cmFj
eVdhc1JlcXVpcmVkICYmICFuZWVkc0hpZ2hBY2N1cmFjeSgpKQogICAgICAgICBtX2NsaWVudC5z
ZXRFbmFibGVIaWdoQWNjdXJhY3koZmFsc2UpOwogfQogCkBAIC0xMzksOSArMTUwLDkgQEAgdm9p
ZCBHZW9sb2NhdGlvbkNvbnRyb2xsZXI6OmFjdGl2aXR5U3RhdGVEaWRDaGFuZ2UoT3B0aW9uU2V0
PEFjdGl2aXR5U3RhdGU6OkZsYWcKICAgICBhdXRvIGNoYW5nZWQgPSBvbGRBY3Rpdml0eVN0YXRl
IF4gbmV3QWN0aXZpdHlTdGF0ZTsKICAgICBpZiAoY2hhbmdlZCAmIEFjdGl2aXR5U3RhdGU6Oklz
VmlzaWJsZSAmJiAhbV9vYnNlcnZlcnMuaXNFbXB0eSgpKSB7CiAgICAgICAgIGlmIChuZXdBY3Rp
dml0eVN0YXRlICYgQWN0aXZpdHlTdGF0ZTo6SXNWaXNpYmxlKQotICAgICAgICAgICAgbV9jbGll
bnQuc3RhcnRVcGRhdGluZygoKm1fb2JzZXJ2ZXJzLnJhbmRvbSgpKS0+YXV0aG9yaXphdGlvblRv
a2VuKCkpOworICAgICAgICAgICAgc3RhcnRVcGRhdGluZ0lmTmVjZXNzYXJ5KCk7CiAgICAgICAg
IGVsc2UKLSAgICAgICAgICAgIG1fY2xpZW50LnN0b3BVcGRhdGluZygpOworICAgICAgICAgICAg
c3RvcFVwZGF0aW5nSWZOZWNlc3NhcnkoKTsKICAgICB9CiAKICAgICBpZiAoIW1fcGFnZS5pc1Zp
c2libGUoKSkKQEAgLTE1Miw2ICsxNjMsMjQgQEAgdm9pZCBHZW9sb2NhdGlvbkNvbnRyb2xsZXI6
OmFjdGl2aXR5U3RhdGVEaWRDaGFuZ2UoT3B0aW9uU2V0PEFjdGl2aXR5U3RhdGU6OkZsYWcKICAg
ICAgICAgbV9jbGllbnQucmVxdWVzdFBlcm1pc3Npb24ocGVybWlzc2lvblJlcXVlc3QuZ2V0KCkp
OwogfQogCit2b2lkIEdlb2xvY2F0aW9uQ29udHJvbGxlcjo6c3RhcnRVcGRhdGluZ0lmTmVjZXNz
YXJ5KCkKK3sKKyAgICBpZiAobV9pc1VwZGF0aW5nIHx8ICFtX3BhZ2UuaXNWaXNpYmxlKCkgfHwg
bV9vYnNlcnZlcnMuaXNFbXB0eSgpKQorICAgICAgICByZXR1cm47CisKKyAgICBtX2NsaWVudC5z
dGFydFVwZGF0aW5nKCgqbV9vYnNlcnZlcnMucmFuZG9tKCkpLT5hdXRob3JpemF0aW9uVG9rZW4o
KSwgbmVlZHNIaWdoQWNjdXJhY3koKSk7CisgICAgbV9pc1VwZGF0aW5nID0gdHJ1ZTsKK30KKwor
dm9pZCBHZW9sb2NhdGlvbkNvbnRyb2xsZXI6OnN0b3BVcGRhdGluZ0lmTmVjZXNzYXJ5KCkKK3sK
KyAgICBpZiAoIW1faXNVcGRhdGluZykKKyAgICAgICAgcmV0dXJuOworCisgICAgbV9jbGllbnQu
c3RvcFVwZGF0aW5nKCk7CisgICAgbV9pc1VwZGF0aW5nID0gZmFsc2U7Cit9CisKIGNvbnN0IGNo
YXIqIEdlb2xvY2F0aW9uQ29udHJvbGxlcjo6c3VwcGxlbWVudE5hbWUoKQogewogICAgIHJldHVy
biAiR2VvbG9jYXRpb25Db250cm9sbGVyIjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvZ2VvbG9jYXRpb24vR2VvbG9jYXRpb25Db250cm9sbGVyLmggYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2dlb2xvY2F0aW9uL0dlb2xvY2F0aW9uQ29udHJvbGxlci5oCmluZGV4IDQyZjVk
MDYyZGI2ZjA5YzY2MDExMWQ2NmQ5ZjBmY2ZmZjNiMjA3NDAuLmJiZmY1NzVlYjA1ODMyNDA3ODBk
M2I0MWE5Njc0MmM2YjFkNzI0OGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
Z2VvbG9jYXRpb24vR2VvbG9jYXRpb25Db250cm9sbGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9nZW9sb2NhdGlvbi9HZW9sb2NhdGlvbkNvbnRyb2xsZXIuaApAQCAtMzAsNiArMzAs
NyBAQAogI2luY2x1ZGUgIkFjdGl2aXR5U3RhdGVDaGFuZ2VPYnNlcnZlci5oIgogI2luY2x1ZGUg
Ikdlb2xvY2F0aW9uLmgiCiAjaW5jbHVkZSAiUGFnZS5oIgorI2luY2x1ZGUgIlJlZ2lzdHJhYmxl
RG9tYWluLmgiCiAjaW5jbHVkZSA8d3RmL0hhc2hTZXQuaD4KICNpbmNsdWRlIDx3dGYvTm9uY29w
eWFibGUuaD4KICNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+CkBAIC02NSw2ICs2Niw4IEBAIHB1Ymxp
YzoKIAogICAgIHZvaWQgcmV2b2tlQXV0aG9yaXphdGlvblRva2VuKGNvbnN0IFN0cmluZyYpOwog
CisgICAgdm9pZCBkaWROYXZpZ2F0ZVBhZ2UoKTsKKwogcHJpdmF0ZToKICAgICBQYWdlJiBtX3Bh
Z2U7CiAgICAgR2VvbG9jYXRpb25DbGllbnQmIG1fY2xpZW50OwpAQCAtNzMsNiArNzYsMTEgQEAg
cHJpdmF0ZToKIAogICAgIHN0ZDo6b3B0aW9uYWw8R2VvbG9jYXRpb25Qb3NpdGlvbkRhdGE+IG1f
bGFzdFBvc2l0aW9uOwogCisgICAgYm9vbCBuZWVkc0hpZ2hBY2N1cmFjeSgpIGNvbnN0IHsgcmV0
dXJuICFtX2hpZ2hBY2N1cmFjeU9ic2VydmVycy5pc0VtcHR5KCk7IH0KKworICAgIHZvaWQgc3Rh
cnRVcGRhdGluZ0lmTmVjZXNzYXJ5KCk7CisgICAgdm9pZCBzdG9wVXBkYXRpbmdJZk5lY2Vzc2Fy
eSgpOworCiAgICAgdHlwZWRlZiBIYXNoU2V0PFJlZjxHZW9sb2NhdGlvbj4+IE9ic2VydmVyc1Nl
dDsKICAgICAvLyBBbGwgb2JzZXJ2ZXJzOyBib3RoIHRob3NlIHJlcXVlc3RpbmcgaGlnaCBhY2N1
cmFjeSBhbmQgdGhvc2Ugbm90LgogICAgIE9ic2VydmVyc1NldCBtX29ic2VydmVyczsKQEAgLTgw
LDYgKzg4LDkgQEAgcHJpdmF0ZToKIAogICAgIC8vIFdoaWxlIHRoZSBwYWdlIGlzIG5vdCB2aXNp
YmxlLCB3ZSBwZW5kIHBlcm1pc3Npb24gcmVxdWVzdHMuCiAgICAgSGFzaFNldDxSZWY8R2VvbG9j
YXRpb24+PiBtX3BlbmRpbmdQZXJtaXNzaW9uUmVxdWVzdDsKKworICAgIFJlZ2lzdHJhYmxlRG9t
YWluIG1fcmVnaXN0cmFibGVEb21haW47CisgICAgYm9vbCBtX2lzVXBkYXRpbmcgeyBmYWxzZSB9
OwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9nZW9sb2NhdGlvbi9HZW9sb2NhdGlvblBvc2l0aW9uRGF0YS5oIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9nZW9sb2NhdGlvbi9HZW9sb2NhdGlvblBvc2l0aW9uRGF0YS5oCmlu
ZGV4IDkyNjIyMTcwYzhhYWQ2OTg5YjhhMTJjZTQ4MzU2ZGM2ODdiZjZlMzUuLmNjMjE4MGE4Mzdk
Mjc0M2MxZmJmNzYxYzQxMGUxYzdlYmZlYWVlN2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvZ2VvbG9jYXRpb24vR2VvbG9jYXRpb25Qb3NpdGlvbkRhdGEuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2dlb2xvY2F0aW9uL0dlb2xvY2F0aW9uUG9zaXRpb25EYXRhLmgK
QEAgLTI5LDcgKzI5LDcgQEAKICNpbmNsdWRlIDx3dGYvUmVmLmg+CiAjaW5jbHVkZSA8d3RmL1Jl
ZkNvdW50ZWQuaD4KIAotI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCisjaWYgUExBVEZPUk0oQ09D
T0EpCiBPQkpDX0NMQVNTIENMTG9jYXRpb247CiAjZW5kaWYKIApAQCAtNDcsNyArNDcsNyBAQCBw
dWJsaWM6CiAgICAgewogICAgIH0KIAotI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCisjaWYgUExB
VEZPUk0oQ09DT0EpCiAgICAgV0VCQ09SRV9FWFBPUlQgZXhwbGljaXQgR2VvbG9jYXRpb25Qb3Np
dGlvbkRhdGEoQ0xMb2NhdGlvbiopOwogI2VuZGlmCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvZ2VvbG9jYXRpb24vY29jb2EvR2VvbG9jYXRpb25Qb3NpdGlvbkRhdGFDb2Nv
YS5tbSBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZ2VvbG9jYXRpb24vY29jb2EvR2VvbG9jYXRp
b25Qb3NpdGlvbkRhdGFDb2NvYS5tbQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5jMGE5YmVlNjU1Njk0ZGIzYWJmMTU3
ZWVkMTkwNzZlYWQ1ODU0NDA2Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9nZW9sb2NhdGlvbi9jb2NvYS9HZW9sb2NhdGlvblBvc2l0aW9uRGF0YUNvY29hLm1tCkBA
IC0wLDAgKzEsNTMgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQXBwbGUgSW5jLiBBbGwg
UmlnaHRzIFJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUg
bWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExF
IElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQg
T0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisg
KiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAq
LworCisjaW1wb3J0ICJjb25maWcuaCIKKyNpbXBvcnQgIkdlb2xvY2F0aW9uUG9zaXRpb24uaCIK
KworI2ltcG9ydCA8Q29yZUxvY2F0aW9uL0NMTG9jYXRpb24uaD4KKworbmFtZXNwYWNlIFdlYkNv
cmUgeworCitHZW9sb2NhdGlvblBvc2l0aW9uRGF0YTo6R2VvbG9jYXRpb25Qb3NpdGlvbkRhdGEo
Q0xMb2NhdGlvbiogbG9jYXRpb24pCisgICAgOiB0aW1lc3RhbXAobG9jYXRpb24udGltZXN0YW1w
LnRpbWVJbnRlcnZhbFNpbmNlMTk3MCkKKyAgICAsIGxhdGl0dWRlKGxvY2F0aW9uLmNvb3JkaW5h
dGUubGF0aXR1ZGUpCisgICAgLCBsb25naXR1ZGUobG9jYXRpb24uY29vcmRpbmF0ZS5sb25naXR1
ZGUpCisgICAgLCBhY2N1cmFjeShsb2NhdGlvbi5ob3Jpem9udGFsQWNjdXJhY3kpCit7CisgICAg
aWYgKGxvY2F0aW9uLnZlcnRpY2FsQWNjdXJhY3kgPj0gMC4wKSB7CisgICAgICAgIGFsdGl0dWRl
ID0gbG9jYXRpb24uYWx0aXR1ZGU7CisgICAgICAgIGFsdGl0dWRlQWNjdXJhY3kgPSBsb2NhdGlv
bi52ZXJ0aWNhbEFjY3VyYWN5OworICAgIH0KKyAgICBpZiAobG9jYXRpb24uc3BlZWQgPj0gMC4w
KQorICAgICAgICBzcGVlZCA9IGxvY2F0aW9uLnNwZWVkOworICAgIGlmIChsb2NhdGlvbi5jb3Vy
c2UgPj0gMC4wKQorICAgICAgICBoZWFkaW5nID0gbG9jYXRpb24uY291cnNlOworI2lmICFQTEFU
Rk9STShNQUNDQVRBTFlTVCkKKyAgICBpZiAobG9jYXRpb24uZmxvb3IpCisgICAgICAgIGZsb29y
TGV2ZWwgPSBsb2NhdGlvbi5mbG9vci5sZXZlbDsKKyNlbmRpZgorfQorCit9IC8vIG5hbWVzcGFj
ZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2dlb2xvY2F0aW9u
L2lvcy9HZW9sb2NhdGlvblBvc2l0aW9uRGF0YUlPUy5tbSBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvZ2VvbG9jYXRpb24vaW9zL0dlb2xvY2F0aW9uUG9zaXRpb25EYXRhSU9TLm1tCmRlbGV0ZWQg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5OGQ5YTI0MjFlN2YyMzA5YjRmNjIzYjE0ZDdjYmUyYjZj
N2UwNDVjLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvZ2VvbG9jYXRpb24vaW9zL0dlb2xvY2F0aW9uUG9zaXRpb25E
YXRhSU9TLm1tCisrKyAvZGV2L251bGwKQEAgLTEsNTcgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdo
dCAoQykgMjAxNyBBcHBsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgot
ICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgot
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQg
QU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFRIRQotICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgotICogQ09OVFJJQlVUT1JTIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCi0gKiBF
WEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sCi0gKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKLSAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKLSAqIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpbXBvcnQgImNvbmZpZy5oIgotI2ltcG9y
dCAiR2VvbG9jYXRpb25Qb3NpdGlvbi5oIgotCi0jaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKLQot
I2ltcG9ydCA8Q29yZUxvY2F0aW9uL0NMTG9jYXRpb24uaD4KLQotbmFtZXNwYWNlIFdlYkNvcmUg
ewotCi1HZW9sb2NhdGlvblBvc2l0aW9uRGF0YTo6R2VvbG9jYXRpb25Qb3NpdGlvbkRhdGEoQ0xM
b2NhdGlvbiogbG9jYXRpb24pCi0gICAgOiB0aW1lc3RhbXAobG9jYXRpb24udGltZXN0YW1wLnRp
bWVJbnRlcnZhbFNpbmNlMTk3MCkKLSAgICAsIGxhdGl0dWRlKGxvY2F0aW9uLmNvb3JkaW5hdGUu
bGF0aXR1ZGUpCi0gICAgLCBsb25naXR1ZGUobG9jYXRpb24uY29vcmRpbmF0ZS5sb25naXR1ZGUp
Ci0gICAgLCBhY2N1cmFjeShsb2NhdGlvbi5ob3Jpem9udGFsQWNjdXJhY3kpCi17Ci0gICAgaWYg
KGxvY2F0aW9uLnZlcnRpY2FsQWNjdXJhY3kgPj0gMC4wKSB7Ci0gICAgICAgIGFsdGl0dWRlID0g
bG9jYXRpb24uYWx0aXR1ZGU7Ci0gICAgICAgIGFsdGl0dWRlQWNjdXJhY3kgPSBsb2NhdGlvbi52
ZXJ0aWNhbEFjY3VyYWN5OwotICAgIH0KLSAgICBpZiAobG9jYXRpb24uc3BlZWQgPj0gMC4wKQot
ICAgICAgICBzcGVlZCA9IGxvY2F0aW9uLnNwZWVkOwotICAgIGlmIChsb2NhdGlvbi5jb3Vyc2Ug
Pj0gMC4wKQotICAgICAgICBoZWFkaW5nID0gbG9jYXRpb24uY291cnNlOwotI2lmICFQTEFURk9S
TShNQUNDQVRBTFlTVCkKLSAgICBpZiAobG9jYXRpb24uZmxvb3IpCi0gICAgICAgIGZsb29yTGV2
ZWwgPSBsb2NhdGlvbi5mbG9vci5sZXZlbDsKLSNlbmRpZgotfQotCi19Ci0KLSNlbmRpZiAvLyBQ
TEFURk9STShJT1NfRkFNSUxZKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvU291cmNlc0Nv
Y29hLnR4dCBiL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXNDb2NvYS50eHQKaW5kZXggMTA3NWVhYzQ3
NmE1NGI4MjAwZDA2ZTliODQzNmIyNDg5NWQ0MmM2Mi4uNjUyOTZlMjViNzE1ZGZlMzA4MDVmZDdk
MWFiNzc0MzlmNDhmMjI1ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvU291cmNlc0NvY29h
LnR4dAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzQ29jb2EudHh0CkBAIC0yNTEsNiArMjUx
LDcgQEAgcGxhdGZvcm0vY2YvTWVkaWFBY2Nlc3NpYmlsaXR5U29mdExpbmsuY3BwCiBwbGF0Zm9y
bS9jZi9SdW5Mb29wT2JzZXJ2ZXIuY3BwCiBwbGF0Zm9ybS9jZi9TaGFyZWRCdWZmZXJDRi5jcHAK
IHBsYXRmb3JtL2NvY29hL0NvbnRlbnRGaWx0ZXJVbmJsb2NrSGFuZGxlckNvY29hLm1tIEBuby11
bmlmeQorcGxhdGZvcm0vY29jb2EvQ29yZUxvY2F0aW9uR2VvbG9jYXRpb25Qcm92aWRlci5tbQog
cGxhdGZvcm0vY29jb2EvQ29yZVZpZGVvU29mdExpbmsuY3BwCiBwbGF0Zm9ybS9jb2NvYS9EcmFn
RGF0YUNvY29hLm1tCiBwbGF0Zm9ybS9jb2NvYS9EcmFnSW1hZ2VDb2NvYS5tbQpAQCAtMzE3LDcg
KzMxOCw3IEBAIHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0NETVNlc3Npb25B
VkZvdW5kYXRpb25PYmpDLm1tCiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9D
RE1TZXNzaW9uQVZTdHJlYW1TZXNzaW9uLm1tCiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRp
b24vb2JqYy9DRE1TZXNzaW9uTWVkaWFTb3VyY2VBVkZPYmpDLm1tCiBwbGF0Zm9ybS9ncmFwaGlj
cy9hdmZvdW5kYXRpb24vb2JqYy9JbWFnZURlY29kZXJBVkZPYmpDLm1tCi1wbGF0Zm9ybS9ncmFw
aGljcy9hdmZvdW5kYXRpb24vb2JqYy9JbmJhbmRUZXh0VHJhY2tQcml2YXRlQVZGT2JqQy5tbQor
cGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvSW5iYW5kVGV4dFRyYWNrUHJpdmF0
ZUFWRk9iakMubW0gQG5vLXVuaWZ5CiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2Jq
Yy9JbmJhbmRDaGFwdGVyVHJhY2tQcml2YXRlQVZGT2JqQy5tbSBAbm8tdW5pZnkKIHBsYXRmb3Jt
L2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0xvY2FsU2FtcGxlQnVmZmVyRGlzcGxheUxheWVy
Lm1tCiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXliYWNrVGFy
Z2V0UGlja2VyTWFjLm1tCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9w
cm9qZWN0LnBieHByb2oKaW5kZXggZjFlZTk3MTI2NWVmYWQ3MzYxYTIxOWNiY2RjZjhkMjU0MmIz
N2M2MC4uM2QxYjY3MzVjNTMyNDY1ZTdjYWZjM2JiMjViM2M0NGM4NDJhZGJkYSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBi
L1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMTM1
Miw2ICsxMzUyLDcgQEAKIAkJNDY4MzQ0RTAxRURERkFBQTAwQjc3OTVCIC8qIERPTVJlY3RMaXN0
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0NjgzNDRE
RTFFRERGQTVGMDBCNzc5NUIgLyogRE9NUmVjdExpc3QuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklC
VVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk0NjgzREY0MDI3NjdERjk4MDA3RDAwQzggLyog
SlNTaGFkb3dSZWFsbUdsb2JhbFNjb3BlQmFzZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gNDY4M0RGM0UyNzY3REY5ODAwN0QwMEM4IC8qIEpTU2hhZG93
UmVhbG1HbG9iYWxTY29wZUJhc2UuaCAqLzsgfTsKIAkJNDY4M0RGNDEyNzY3RTkxQTAwN0QwMEM4
IC8qIFNoYWRvd1JlYWxtR2xvYmFsU2NvcGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDQ2ODNERjNCMjc2N0RGMjYwMDdEMDBDOCAvKiBTaGFkb3dSZWFs
bUdsb2JhbFNjb3BlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsg
fTsgfTsKKwkJNDY4OEU5ODAyN0I2QjQ1MDAwNTY3Q0QyIC8qIENvcmVMb2NhdGlvbkdlb2xvY2F0
aW9uUHJvdmlkZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDQ2ODhFOTdGMjdCNkI0NDQwMDU2N0NEMiAvKiBDb3JlTG9jYXRpb25HZW9sb2NhdGlvblBy
b3ZpZGVyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsK
IAkJNDY4OEVFM0MyNkREMjYxMDAwMkFGNUM0IC8qIENyb3NzT3JpZ2luTW9kZS5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDY4OEVFM0EyNkREMjYwQzAw
MkFGNUM0IC8qIENyb3NzT3JpZ2luTW9kZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0g
KFByaXZhdGUsICk7IH07IH07CiAJCTQ2OTQzREM5Mjc2M0Y4MTcwMDRCNjEwRSAvKiBTaGFyZWRX
b3JrZXJPYmplY3RJZGVudGlmaWVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA0Njk0M0RDNzI3NjNGODBFMDA0QjYxMEUgLyogU2hhcmVkV29ya2VyT2Jq
ZWN0SWRlbnRpZmllci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7
IH07IH07CiAJCTQ2OTg1RjIzMjdBNEE2QUQwMDk3QTMyQiAvKiBTaGFyZWRXb3JrZXJLZXkuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ2OTg1RjIyMjdB
NEE2ODYwMDk3QTMyQiAvKiBTaGFyZWRXb3JrZXJLZXkuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklC
VVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwpAQCAtMTM3Nyw2ICsxMzc4LDcgQEAKIAkJNDZDNjk2
Q0IxRTcyMDVGNzAwNTk3OTM3IC8qIENQVU1vbml0b3IuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ2QzY5NkM5MUU3MjA1RTQwMDU5NzkzNyAvKiBDUFVN
b25pdG9yLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsK
IAkJNDZDNjk2Q0MxRTcyMDVGQzAwNTk3OTM3IC8qIENQVU1vbml0b3IuY3BwIGluIFNvdXJjZXMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDZDNjk2Q0ExRTcyMDVFNDAwNTk3
OTM3IC8qIENQVU1vbml0b3IuY3BwICovOyB9OwogCQk0NkM4M0VGRTFBOUJCRTI5MDBBNzlBNDEg
LyogR2VvTm90aWZpZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDQ2QzgzRUZDMUE5QkJFMjkwMEE3OUE0MSAvKiBHZW9Ob3RpZmllci5oICovOyBzZXR0
aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCTQ2Q0E5NDMxMjdCODY5
NTgwMEY0RjVGRiAvKiBJbmJhbmRUZXh0VHJhY2tQcml2YXRlQVZGT2JqQy5tbSBpbiBTb3VyY2Vz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDA3QUE2QjZBMTY2RDAxOTUwMEQ0
NTY3MSAvKiBJbmJhbmRUZXh0VHJhY2tQcml2YXRlQVZGT2JqQy5tbSAqLzsgfTsKIAkJNDZDQTlD
NDQxRjk3QkJFOTAwNENGQzNBIC8qIFZpc2liaWxpdHlTdGF0ZS5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDZDQTlDNDExRjk3QkJFNzAwNENGQzNBIC8q
IFZpc2liaWxpdHlTdGF0ZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUs
ICk7IH07IH07CiAJCTQ2Q0Y1MDRBMjdBQjFFQTQwMDcwREJDOCAvKiBTaGFyZWRXb3JrZXJDb250
ZXh0TWFuYWdlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gNDZDRjUwNDgyN0FCMUVBMTAwNzBEQkM4IC8qIFNoYXJlZFdvcmtlckNvbnRleHRNYW5hZ2Vy
LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNDZE
MDAwNDAyNkEwRkVCMzAwRDFCRjFFIC8qIFN1Ym1pdEV2ZW50LmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0NkQwMDAzRTI2QTBGRTZGMDBEMUJGMUUgLyog
U3VibWl0RXZlbnQuaCAqLzsgfTsKQEAgLTI2OTUsNyArMjY5Nyw3IEBACiAJCTgzNzY1Rjk1MURB
QzUyMkYwMEMwNjUzNyAvKiBNb3VzZUV2ZW50SW5pdC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODM3NjVGOTQxREFDNTIxODAwQzA2NTM3IC8qIE1vdXNl
RXZlbnRJbml0LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsg
fTsKIAkJODM3ODg3ODIyNEQ4QTYwOTAwMEQ0QTVCIC8qIEF1ZGlvQnVmZmVyU291cmNlT3B0aW9u
cy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODM3ODg3
N0YyNEQ4QTVGQzAwMEQ0QTVCIC8qIEF1ZGlvQnVmZmVyU291cmNlT3B0aW9ucy5oICovOyB9Owog
CQk4Mzc5MzYzRjFGQkJCMEI0MDBDODAyM0MgLyogU2VydmljZVdvcmtlckNsaWVudERhdGEuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDgzNzkzNjNFMUZC
QkIwQTUwMEM4MDIzQyAvKiBTZXJ2aWNlV29ya2VyQ2xpZW50RGF0YS5oICovOyBzZXR0aW5ncyA9
IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07Ci0JCTgzNzk2NENGMUY4REI2OUQwMDIx
OEVBMCAvKiBHZW9sb2NhdGlvblBvc2l0aW9uRGF0YUlPUy5tbSBpbiBTb3VyY2VzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDgzNzk2NENFMUY4REI2OUEwMDIxOEVBMCAvKiBH
ZW9sb2NhdGlvblBvc2l0aW9uRGF0YUlPUy5tbSAqLzsgfTsKKwkJODM3OTY0Q0YxRjhEQjY5RDAw
MjE4RUEwIC8qIEdlb2xvY2F0aW9uUG9zaXRpb25EYXRhQ29jb2EubW0gaW4gU291cmNlcyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4Mzc5NjRDRTFGOERCNjlBMDAyMThFQTAg
LyogR2VvbG9jYXRpb25Qb3NpdGlvbkRhdGFDb2NvYS5tbSAqLzsgfTsKIAkJODM3QTgwMTMxRTFF
MTI3MzAwMDI2QjlGIC8qIExvY2FsaXphYmxlLnN0cmluZ3NkaWN0IGluIFJlc291cmNlcyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4MzdBODAxMTFFMUUxMjczMDAwMjZCOUYg
LyogTG9jYWxpemFibGUuc3RyaW5nc2RpY3QgKi87IH07CiAJCTgzN0MwQjc2MjREQjM4NTAwMDVE
NTk1OSAvKiBEeW5hbWljc0NvbXByZXNzb3JPcHRpb25zLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4MzdDMEI3MzI0REIzODQyMDA1RDU5NTkgLyogRHlu
YW1pY3NDb21wcmVzc29yT3B0aW9ucy5oICovOyB9OwogCQk4MzdGQjM0NTFGOUVBMDZEMDBEMEZD
MzEgLyogRXh0ZW5kYWJsZU1lc3NhZ2VFdmVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gODM3RkIzNDAxRjlFQTA2NjAwRDBGQzMxIC8qIEV4dGVuZGFi
bGVNZXNzYWdlRXZlbnQuaCAqLzsgfTsKQEAgLTkyNjksNiArOTI3MSw4IEBACiAJCTQ2ODNERjND
Mjc2N0RGMjYwMDdEMDBDOCAvKiBTaGFkb3dSZWFsbUdsb2JhbFNjb3BlLmlkbCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBTaGFk
b3dSZWFsbUdsb2JhbFNjb3BlLmlkbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDY4
M0RGM0QyNzY3REY5ODAwN0QwMEM4IC8qIEpTU2hhZG93UmVhbG1HbG9iYWxTY29wZUJhc2UuY3Bw
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNTaGFkb3dSZWFsbUdsb2Jh
bFNjb3BlQmFzZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQ2ODNERjNFMjc2
N0RGOTgwMDdEMDBDOCAvKiBKU1NoYWRvd1JlYWxtR2xvYmFsU2NvcGVCYXNlLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTU2hhZG93UmVhbG1HbG9iYWxTY29wZUJhc2UuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNDY4OEU5N0QyN0I2QjQ0MzAwNTY3Q0QyIC8q
IENvcmVMb2NhdGlvbkdlb2xvY2F0aW9uUHJvdmlkZXIubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGgg
PSBDb3JlTG9jYXRpb25HZW9sb2NhdGlvblByb3ZpZGVyLm1tOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OworCQk0Njg4RTk3RjI3QjZCNDQ0MDA1NjdDRDIgLyogQ29yZUxvY2F0aW9uR2VvbG9j
YXRpb25Qcm92aWRlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBDb3JlTG9jYXRpb25HZW9sb2NhdGlvblBy
b3ZpZGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQ2ODhFRTNBMjZERDI2MEMw
MDJBRjVDNCAvKiBDcm9zc09yaWdpbk1vZGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQ3Jvc3NPcmlnaW5N
b2RlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQ2OEI4QkRFMjVDQzg0OTMwMEY2
NzgyMiAvKiBKU0Jhc2VBdWRpb0NvbnRleHRDdXN0b20uY3BwICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0g
SlNCYXNlQXVkaW9Db250ZXh0Q3VzdG9tLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJNDY5NDNEQzcyNzYzRjgwRTAwNEI2MTBFIC8qIFNoYXJlZFdvcmtlck9iamVjdElkZW50aWZp
ZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gU2hhcmVkV29ya2VyT2JqZWN0SWRlbnRpZmllci5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMTIxOTAsNyArMTIxOTQsNyBAQAogCQk4Mzc4ODc4
MTI0RDhBNUZDMDAwRDRBNUIgLyogQXVkaW9CdWZmZXJTb3VyY2VPcHRpb25zLmlkbCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBB
dWRpb0J1ZmZlclNvdXJjZU9wdGlvbnMuaWRsOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQk4Mzc5MzYzQzFGQkJCMEE0MDBDODAyM0MgLyogU2VydmljZVdvcmtlckNsaWVudERhdGEuY3Bw
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gU2VydmljZVdvcmtlckNsaWVu
dERhdGEuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk4Mzc5MzYzRTFGQkJCMEE1
MDBDODAyM0MgLyogU2VydmljZVdvcmtlckNsaWVudERhdGEuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gU2VydmljZVdvcmtlckNsaWVudERhdGEuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKLQkJODM3OTY0Q0UxRjhEQjY5QTAwMjE4RUEwIC8qIEdlb2xvY2F0aW9uUG9z
aXRpb25EYXRhSU9TLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBuYW1lID0g
R2VvbG9jYXRpb25Qb3NpdGlvbkRhdGFJT1MubW07IHBhdGggPSBNb2R1bGVzL2dlb2xvY2F0aW9u
L2lvcy9HZW9sb2NhdGlvblBvc2l0aW9uRGF0YUlPUy5tbTsgc291cmNlVHJlZSA9IFNPVVJDRV9S
T09UOyB9OworCQk4Mzc5NjRDRTFGOERCNjlBMDAyMThFQTAgLyogR2VvbG9jYXRpb25Qb3NpdGlv
bkRhdGFDb2NvYS5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgbmFtZSA9IEdl
b2xvY2F0aW9uUG9zaXRpb25EYXRhQ29jb2EubW07IHBhdGggPSBNb2R1bGVzL2dlb2xvY2F0aW9u
L2NvY29hL0dlb2xvY2F0aW9uUG9zaXRpb25EYXRhQ29jb2EubW07IHNvdXJjZVRyZWUgPSBTT1VS
Q0VfUk9PVDsgfTsKIAkJODM3QTgwMTIxRTFFMTI3MzAwMDI2QjlGIC8qIGVuICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dC5wbGlzdC5zdHJpbmdz
ZGljdDsgbmFtZSA9IGVuOyBwYXRoID0gZW4ubHByb2ovTG9jYWxpemFibGUuc3RyaW5nc2RpY3Q7
IHNvdXJjZVRyZWUgPSBTT1VSQ0VfUk9PVDsgfTsKIAkJODM3QjdEMUYxREMzRjU0QzAwRDA1MUZD
IC8qIFZhbGlkYXRpb25CdWJibGVJT1MubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpj
cHA7IHBhdGggPSBWYWxpZGF0aW9uQnViYmxlSU9TLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQk4MzdDMEI3MzI0REIzODQyMDA1RDU5NTkgLyogRHluYW1pY3NDb21wcmVzc29yT3B0
aW9ucy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBEeW5hbWljc0NvbXByZXNzb3JPcHRpb25zLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0yMTYwNiw2ICsyMTYxMCwxNCBAQAogCQkJcGF0aCA9
IGNvbnRleHQ7CiAJCQlzb3VyY2VUcmVlID0gIjxncm91cD4iOwogCQl9OworCQk0NjVDM0QxOTI3
Qjk5MUM4MDAyMTMwMkYgLyogY29jb2EgKi8gPSB7CisJCQlpc2EgPSBQQlhHcm91cDsKKwkJCWNo
aWxkcmVuID0gKAorCQkJCTgzNzk2NENFMUY4REI2OUEwMDIxOEVBMCAvKiBHZW9sb2NhdGlvblBv
c2l0aW9uRGF0YUNvY29hLm1tICovLAorCQkJKTsKKwkJCXBhdGggPSBjb2NvYTsKKwkJCXNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7CisJCX07CiAJCTQ2Njk0Q0RFMjc1OTQ0NkQwMEUzMTUwRSAvKiBz
aGFyZWQgKi8gPSB7CiAJCQlpc2EgPSBQQlhHcm91cDsKIAkJCWNoaWxkcmVuID0gKApAQCAtMjUx
MDMsMTQgKzI1MTE1LDYgQEAKIAkJCXBhdGggPSBiZWFjb247CiAJCQlzb3VyY2VUcmVlID0gIjxn
cm91cD4iOwogCQl9OwotCQk4Mzc5NjRDQzFGOERCNjdEMDAyMThFQTAgLyogaW9zICovID0gewot
CQkJaXNhID0gUEJYR3JvdXA7Ci0JCQljaGlsZHJlbiA9ICgKLQkJCQk4Mzc5NjRDRTFGOERCNjlB
MDAyMThFQTAgLyogR2VvbG9jYXRpb25Qb3NpdGlvbkRhdGFJT1MubW0gKi8sCi0JCQkpOwotCQkJ
bmFtZSA9IGlvczsKLQkJCXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7Ci0JCX07CiAJCTgzRkIzMzY1
MUY1MDhBMTcwMDk4NkU1NCAvKiBlbnRyaWVzYXBpICovID0gewogCQkJaXNhID0gUEJYR3JvdXA7
CiAJCQljaGlsZHJlbiA9ICgKQEAgLTI2MTIxLDcgKzI2MTI1LDcgQEAKIAkJOTcxMTQ1RkYxNEVG
MDA3OTAwNjc0RkQ5IC8qIGdlb2xvY2F0aW9uICovID0gewogCQkJaXNhID0gUEJYR3JvdXA7CiAJ
CQljaGlsZHJlbiA9ICgKLQkJCQk4Mzc5NjRDQzFGOERCNjdEMDAyMThFQTAgLyogaW9zICovLAor
CQkJCTQ2NUMzRDE5MjdCOTkxQzgwMDIxMzAyRiAvKiBjb2NvYSAqLywKIAkJCQk5NzQ2QUYxMzE0
RjREREU2MDAzRTdBNzAgLyogR2VvbG9jYXRpb24uY3BwICovLAogCQkJCTk3NDZBRjE0MTRGNERE
RTYwMDNFN0E3MCAvKiBHZW9sb2NhdGlvbi5oICovLAogCQkJCTk3NDZBRjE1MTRGNERERTYwMDNF
N0E3MCAvKiBHZW9sb2NhdGlvbi5pZGwgKi8sCkBAIC0yNjgzMyw2ICsyNjgzNyw4IEBACiAJCQkJ
QzFGN0I3MkYyNDQ4RjJBQzAwMTI0NTU3IC8qIEFHWENvbXBpbGVyU2VydmljZS5jcHAgKi8sCiAJ
CQkJQzFGN0I3MzAyNDQ4RjJBQzAwMTI0NTU3IC8qIEFHWENvbXBpbGVyU2VydmljZS5oICovLAog
CQkJCUExNDA5MEZBMUFBNTFFMUQwMDkxMTkxQSAvKiBDb250ZW50RmlsdGVyVW5ibG9ja0hhbmRs
ZXJDb2NvYS5tbSAqLywKKwkJCQk0Njg4RTk3RjI3QjZCNDQ0MDA1NjdDRDIgLyogQ29yZUxvY2F0
aW9uR2VvbG9jYXRpb25Qcm92aWRlci5oICovLAorCQkJCTQ2ODhFOTdEMjdCNkI0NDMwMDU2N0NE
MiAvKiBDb3JlTG9jYXRpb25HZW9sb2NhdGlvblByb3ZpZGVyLm1tICovLAogCQkJCUNEN0QzMzQ1
MUM3QTE2QkYwMDA0MTI5MyAvKiBDb3JlVmlkZW9Tb2Z0TGluay5jcHAgKi8sCiAJCQkJQ0Q3RDMz
NDYxQzdBMTZCRjAwMDQxMjkzIC8qIENvcmVWaWRlb1NvZnRMaW5rLmggKi8sCiAJCQkJRjQ2MkU3
OUYyNDJBREEzQzAwMjA0REREIC8qIERyYWdEYXRhQ29jb2EubW0gKi8sCkBAIC0zMzkxOSw2ICsz
MzkyNSw3IEBACiAJCQkJM0Y4MDIwMzcxRTlFNDdDNTAwREVDNjFEIC8qIENvcmVBdWRpb0NhcHR1
cmVEZXZpY2VNYW5hZ2VyLmggaW4gSGVhZGVycyAqLywKIAkJCQk0MUZDQ0MzQjI3NDY2NzU2MDA4
OTJBRDYgLyogQ29yZUF1ZGlvQ2FwdHVyZVNvdXJjZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMDdB
RkY0MjIxRUZCMTQ0OTAwQjU0NUIzIC8qIENvcmVBdWRpb0NhcHR1cmVTb3VyY2VJT1MuaCBpbiBI
ZWFkZXJzICovLAorCQkJCTQ2ODhFOTgwMjdCNkI0NTAwMDU2N0NEMiAvKiBDb3JlTG9jYXRpb25H
ZW9sb2NhdGlvblByb3ZpZGVyLmggaW4gSGVhZGVycyAqLywKIAkJCQlDRDdEMzM0ODFDN0ExNkJG
MDAwNDEyOTMgLyogQ29yZVZpZGVvU29mdExpbmsuaCBpbiBIZWFkZXJzICovLAogCQkJCTg2MkYx
MjlFMThDMTU3NkYwMDVDNTRBRiAvKiBDb3VudGVkVXNlckFjdGl2aXR5LmggaW4gSGVhZGVycyAq
LywKIAkJCQlBODBFNkQwNDBBMTk4OUNBMDA3RkI4QzUgLyogQ291bnRlci5oIGluIEhlYWRlcnMg
Ki8sCkBAIC0zODY5MiwxMyArMzg2OTksMTQgQEAKIAkJCQk1MThGNEZGNjE5NENBNEU2MDA4MUJB
QUUgLyogR2FtZXBhZEJ1dHRvbi5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk1MTZDNjIyMDE5NTBE
NDg3MDAzMzdFNzUgLyogR2FtZXBhZEV2ZW50LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTUxQTlE
OUU5MTk1QjkzMUYwMDFCMkI1QyAvKiBHYW1lcGFkTWFuYWdlci5jcHAgaW4gU291cmNlcyAqLywK
LQkJCQk4Mzc5NjRDRjFGOERCNjlEMDAyMThFQTAgLyogR2VvbG9jYXRpb25Qb3NpdGlvbkRhdGFJ
T1MubW0gaW4gU291cmNlcyAqLywKKwkJCQk4Mzc5NjRDRjFGOERCNjlEMDAyMThFQTAgLyogR2Vv
bG9jYXRpb25Qb3NpdGlvbkRhdGFDb2NvYS5tbSBpbiBTb3VyY2VzICovLAogCQkJCTZFNzJGNTRF
MjI5RENEMTAwMEIzRTE1MSAvKiBHcmFwaGljc0NvbnRleHRHTEFOR0xFLmNwcCBpbiBTb3VyY2Vz
ICovLAogCQkJCTdDM0U1MTBCMThERjhGMzUwMEMxMTJGNyAvKiBIVE1MQ29udmVydGVyLm1tIGlu
IFNvdXJjZXMgKi8sCiAJCQkJQThEMDZCM0EwQTI2NURDRDAwNUU3MjAzIC8qIEhUTUxOYW1lcy5j
cHAgaW4gU291cmNlcyAqLywKIAkJCQkxQUM5MDBDMzE5NDNDMEZDMDA4NjI1QjUgLyogSFRUUEhl
YWRlck5hbWVzLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUNEMjdBRTUxMjJBOTg2ODcwMDk0N0ZG
OSAvKiBJbWFnZVJvdGF0aW9uU2Vzc2lvblZULm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJMDcwRTJE
MEYyNkYyNTA4OTAwMTRBQUMzIC8qIEluYmFuZENoYXB0ZXJUcmFja1ByaXZhdGVBVkZPYmpDLm1t
IGluIFNvdXJjZXMgKi8sCisJCQkJNDZDQTk0MzEyN0I4Njk1ODAwRjRGNUZGIC8qIEluYmFuZFRl
eHRUcmFja1ByaXZhdGVBVkZPYmpDLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJQ0QwNjNGODIxRTIz
RkE4OTAwODEyQkUzIC8qIEluaXREYXRhUmVnaXN0cnkuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJ
OTM1QzQ3NzAwOUFDNEQ3MzAwQTZBQUI0IC8qIEtleUV2ZW50TWFjLm1tIGluIFNvdXJjZXMgKi8s
CiAJCQkJQ0RBOThFMEIxNjAzQ0Q2MDAwRkVBM0IxIC8qIExlZ2FjeUNETS5jcHAgaW4gU291cmNl
cyAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL1BhZ2UuY3BwCmluZGV4IDZhODVlODQzZDhiYmUzZDE5MmQ5N2Y0OTZiZDdl
YjQ1NDc0OWRiYTQuLmVmZTBlMzgwNmRjODQ4MDMwZDIyYjlkOTAyOTE2NzkzMzg1YmZkYWEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcGFnZS9QYWdlLmNwcApAQCAtNjksNiArNjksNyBAQAogI2luY2x1ZGUgIkZyYW1lVHJlZS5o
IgogI2luY2x1ZGUgIkZyYW1lVmlldy5oIgogI2luY2x1ZGUgIkZ1bGxzY3JlZW5NYW5hZ2VyLmgi
CisjaW5jbHVkZSAiR2VvbG9jYXRpb25Db250cm9sbGVyLmgiCiAjaW5jbHVkZSAiSFRNTEVsZW1l
bnQuaCIKICNpbmNsdWRlICJIVE1MSW1hZ2VFbGVtZW50LmgiCiAjaW5jbHVkZSAiSFRNTE1lZGlh
RWxlbWVudC5oIgpAQCAtMTMzMiw2ICsxMzMzLDExIEBAIHZvaWQgUGFnZTo6ZGlkQ29tbWl0TG9h
ZCgpCiAgICAgcmVzZXRUZXh0UmVjb2duaXRpb25SZXN1bHRzKCk7CiAgICAgcmVzZXRJbWFnZUFu
YWx5c2lzUXVldWUoKTsKICNlbmRpZgorCisjaWYgRU5BQkxFKEdFT0xPQ0FUSU9OKQorICAgIGlm
IChhdXRvKiBnZW9sb2NhdGlvbkNvbnRyb2xsZXIgPSBHZW9sb2NhdGlvbkNvbnRyb2xsZXI6OmZy
b20odGhpcykpCisgICAgICAgIGdlb2xvY2F0aW9uQ29udHJvbGxlci0+ZGlkTmF2aWdhdGVQYWdl
KCk7CisjZW5kaWYKIH0KIAogdm9pZCBQYWdlOjpkaWRGaW5pc2hMb2FkKCkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL0NvcmVMb2NhdGlvbkdlb2xvY2F0aW9uUHJv
dmlkZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL0NvcmVMb2NhdGlvbkdlb2xv
Y2F0aW9uUHJvdmlkZXIuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5jNTI0NmM4ODRhY2Y4ZjY5ZmNiOGY4YWM0YWNj
N2Y0Y2RlNjQ1Y2VkCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Y29jb2EvQ29yZUxvY2F0aW9uR2VvbG9jYXRpb25Qcm92aWRlci5oCkBAIC0wLDAgKzEsNjcgQEAK
Ky8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlz
dHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5D
LiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhF
IElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwg
QVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJF
TUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERB
VEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgPHd0Zi9Db21wbGV0aW9uSGFu
ZGxlci5oPgorI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CisjaW5jbHVkZSA8d3RmL1JldGFpblB0
ci5oPgorCitPQkpDX0NMQVNTIFdlYkNMTG9jYXRpb25NYW5hZ2VyOworCituYW1lc3BhY2UgV2Vi
Q29yZSB7CisKK2NsYXNzIEdlb2xvY2F0aW9uUG9zaXRpb25EYXRhOworY2xhc3MgUmVnaXN0cmFi
bGVEb21haW47CisKK2NsYXNzIFdFQkNPUkVfRVhQT1JUIENvcmVMb2NhdGlvbkdlb2xvY2F0aW9u
UHJvdmlkZXIgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOworcHVibGljOgorICAgIGNs
YXNzIENsaWVudCB7CisgICAgcHVibGljOgorICAgICAgICB2aXJ0dWFsIH5DbGllbnQoKSB7IH0K
KworICAgICAgICB2aXJ0dWFsIHZvaWQgZ2VvbG9jYXRpb25BdXRob3JpemF0aW9uR3JhbnRlZChj
b25zdCBTdHJpbmcmIC8qd2Vic2l0ZUlkZW50aWZpZXIqLykgeyB9CisgICAgICAgIHZpcnR1YWwg
dm9pZCBnZW9sb2NhdGlvbkF1dGhvcml6YXRpb25EZW5pZWQoY29uc3QgU3RyaW5nJiAvKndlYnNp
dGVJZGVudGlmaWVyKi8pIHsgfQorICAgICAgICB2aXJ0dWFsIHZvaWQgcG9zaXRpb25DaGFuZ2Vk
KGNvbnN0IFN0cmluZyYgd2Vic2l0ZUlkZW50aWZpZXIsIEdlb2xvY2F0aW9uUG9zaXRpb25EYXRh
JiYpID0gMDsKKyAgICAgICAgdmlydHVhbCB2b2lkIGVycm9yT2NjdXJyZWQoY29uc3QgU3RyaW5n
JiB3ZWJzaXRlSWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiBlcnJvck1lc3NhZ2UpID0gMDsKKyAg
ICAgICAgdmlydHVhbCB2b2lkIHJlc2V0R2VvbG9jYXRpb24oY29uc3QgU3RyaW5nJiB3ZWJzaXRl
SWRlbnRpZmllcikgPSAwOworICAgIH07CisKKyAgICBDb3JlTG9jYXRpb25HZW9sb2NhdGlvblBy
b3ZpZGVyKGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiwgQ2xpZW50Jik7CisgICAgfkNvcmVMb2Nh
dGlvbkdlb2xvY2F0aW9uUHJvdmlkZXIoKTsKKworICAgIHZvaWQgc3RhcnQoKTsKKyAgICB2b2lk
IHN0b3AoKTsKKworICAgIHZvaWQgc2V0RW5hYmxlSGlnaEFjY3VyYWN5KGJvb2wpOworCisgICAg
c3RhdGljIHZvaWQgcmVxdWVzdEF1dGhvcml6YXRpb24oY29uc3QgUmVnaXN0cmFibGVEb21haW4m
LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmKTsKKworcHJpdmF0ZToKKyAgICBSZXRh
aW5QdHI8V2ViQ0xMb2NhdGlvbk1hbmFnZXI+IG1fbG9jYXRpb25NYW5hZ2VyOworfTsKKworfSAv
LyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Y29jb2EvQ29yZUxvY2F0aW9uR2VvbG9jYXRpb25Qcm92aWRlci5tbSBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2NvY29hL0NvcmVMb2NhdGlvbkdlb2xvY2F0aW9uUHJvdmlkZXIubW0KbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uZjI5NzhlZGI4MjQwN2I5YmFjMTgxZjVkMDcwOWEyNmI4MjY0MWMwMAotLS0gL2Rldi9u
dWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL0NvcmVMb2NhdGlvbkdlb2xv
Y2F0aW9uUHJvdmlkZXIubW0KQEAgLTAsMCArMSwyNjggQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMp
IDIwMjIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAor
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIu
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9S
UyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09O
VFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJV
U0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZ
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW1wb3J0
ICJjb25maWcuaCIKKyNpbXBvcnQgIkNvcmVMb2NhdGlvbkdlb2xvY2F0aW9uUHJvdmlkZXIuaCIK
KworI2ltcG9ydCAiR2VvbG9jYXRpb25Qb3NpdGlvbkRhdGEuaCIKKyNpbXBvcnQgIlJlZ2lzdHJh
YmxlRG9tYWluLmgiCisjaW1wb3J0IDxDb3JlTG9jYXRpb24vQ0xMb2NhdGlvbk1hbmFnZXJEZWxl
Z2F0ZS5oPgorI2ltcG9ydCA8Q29yZUxvY2F0aW9uL0NvcmVMb2NhdGlvbi5oPgorI2ltcG9ydCA8
d3RmL1NvZnRMaW5raW5nLmg+CisKKyNpZiBVU0UoQVBQTEVfSU5URVJOQUxfU0RLKQorI2ltcG9y
dCA8Q29yZUxvY2F0aW9uL0NMTG9jYXRpb25NYW5hZ2VyX1ByaXZhdGUuaD4KKyNlbmRpZgorCitT
T0ZUX0xJTktfRlJBTUVXT1JLKENvcmVMb2NhdGlvbikKKworU09GVF9MSU5LX0NMQVNTKENvcmVM
b2NhdGlvbiwgQ0xMb2NhdGlvbk1hbmFnZXIpCitTT0ZUX0xJTktfQ0xBU1MoQ29yZUxvY2F0aW9u
LCBDTExvY2F0aW9uKQorCitTT0ZUX0xJTktfQ09OU1RBTlQoQ29yZUxvY2F0aW9uLCBrQ0xMb2Nh
dGlvbkFjY3VyYWN5QmVzdCwgZG91YmxlKQorU09GVF9MSU5LX0NPTlNUQU5UKENvcmVMb2NhdGlv
biwga0NMTG9jYXRpb25BY2N1cmFjeUh1bmRyZWRNZXRlcnMsIGRvdWJsZSkKKworI2RlZmluZSBr
Q0xMb2NhdGlvbkFjY3VyYWN5QmVzdCBnZXRrQ0xMb2NhdGlvbkFjY3VyYWN5QmVzdCgpCisjZGVm
aW5lIGtDTExvY2F0aW9uQWNjdXJhY3lIdW5kcmVkTWV0ZXJzIGdldGtDTExvY2F0aW9uQWNjdXJh
Y3lIdW5kcmVkTWV0ZXJzKCkKKworc3RhdGljIGJvb2wgaXNBdXRob3JpemF0aW9uR3JhbnRlZChD
TEF1dGhvcml6YXRpb25TdGF0dXMgYXV0aG9yaXphdGlvblN0YXR1cykKK3sKKyAgICByZXR1cm4g
YXV0aG9yaXphdGlvblN0YXR1cyA9PSBrQ0xBdXRob3JpemF0aW9uU3RhdHVzQXV0aG9yaXplZEFs
d2F5cworI2lmIEhBVkUoQ09SRV9MT0NBVElPTl9BVVRIT1JJWkVEX1dIRU5fSU5fVVNFKQorICAg
ICAgICB8fCBhdXRob3JpemF0aW9uU3RhdHVzID09IGtDTEF1dGhvcml6YXRpb25TdGF0dXNBdXRo
b3JpemVkV2hlbkluVXNlCisjZW5kaWYKKyAgICAgICAgOworfQorCitAaW50ZXJmYWNlIFdlYkNM
TG9jYXRpb25NYW5hZ2VyIDogTlNPYmplY3Q8Q0xMb2NhdGlvbk1hbmFnZXJEZWxlZ2F0ZT4KK0Bl
bmQKKworQGltcGxlbWVudGF0aW9uIFdlYkNMTG9jYXRpb25NYW5hZ2VyIHsKKyAgICBSZXRhaW5Q
dHI8Q0xMb2NhdGlvbk1hbmFnZXI+IF9sb2NhdGlvbk1hbmFnZXI7CisgICAgV2ViQ29yZTo6Q29y
ZUxvY2F0aW9uR2VvbG9jYXRpb25Qcm92aWRlcjo6Q2xpZW50KiBfY2xpZW50OworICAgIFN0cmlu
ZyBfd2Vic2l0ZUlkZW50aWZpZXI7CisgICAgQk9PTCBfaXNXYWl0aW5nRm9yQXV0aG9yaXphdGlv
bjsKK30KKworLSAoaW5zdGFuY2V0eXBlKWluaXRXaXRoV2Vic2l0ZUlkZW50aWZpZXI6KGNvbnN0
IFN0cmluZyYpd2Vic2l0ZUlkZW50aWZpZXIgY2xpZW50OihXZWJDb3JlOjpDb3JlTG9jYXRpb25H
ZW9sb2NhdGlvblByb3ZpZGVyOjpDbGllbnQmKWNsaWVudAoreworICAgIHNlbGYgPSBbc3VwZXIg
aW5pdF07CisgICAgaWYgKCFzZWxmKQorICAgICAgICByZXR1cm4gbmlsOworCisgICAgLy8gRklY
TUU6IENhbGwgaW5pdFdpdGhXZWJzaXRlSWRlbnRpZmllciBhbmQgcGFzcyB0aGUgd2Vic2l0ZUlk
ZW50aWZpZXIgd2hlbiBIQVZFKENPUkVfTE9DQVRJT05fV0VCU0lURV9JREVOVElGSUVSUykgb25j
ZSA8cmRhcjovLzg4ODM0MzAxID4gaXMgZml4ZWQuCisgICAgVU5VU0VEX1BBUkFNKHdlYnNpdGVJ
ZGVudGlmaWVyKTsKKyAgICBfbG9jYXRpb25NYW5hZ2VyID0gYWRvcHROUyhbYWxsb2NDTExvY2F0
aW9uTWFuYWdlckluc3RhbmNlKCkgaW5pdF0pOworICAgIF9jbGllbnQgPSAmY2xpZW50OworICAg
IF93ZWJzaXRlSWRlbnRpZmllciA9IHdlYnNpdGVJZGVudGlmaWVyOworICAgIFtfbG9jYXRpb25N
YW5hZ2VyIHNldERlbGVnYXRlOnNlbGZdOworICAgIHJldHVybiBzZWxmOworfQorCistICh2b2lk
KWRlYWxsb2MKK3sKKyAgICBbX2xvY2F0aW9uTWFuYWdlciBzZXREZWxlZ2F0ZTpuaWxdOworICAg
IFtzdXBlciBkZWFsbG9jXTsKK30KKworLSAodm9pZClzdGFydAoreworICAgIGlmICghW2dldENM
TG9jYXRpb25NYW5hZ2VyQ2xhc3MoKSBsb2NhdGlvblNlcnZpY2VzRW5hYmxlZF0gfHwgIWlzQXV0
aG9yaXphdGlvbkdyYW50ZWQoW19sb2NhdGlvbk1hbmFnZXIgYXV0aG9yaXphdGlvblN0YXR1c10p
KSB7CisgICAgICAgIFtfbG9jYXRpb25NYW5hZ2VyIHN0b3BVcGRhdGluZ0xvY2F0aW9uXTsKKyAg
ICAgICAgX2NsaWVudC0+cmVzZXRHZW9sb2NhdGlvbihfd2Vic2l0ZUlkZW50aWZpZXIpOworICAg
ICAgICByZXR1cm47CisgICAgfQorCisgICAgW19sb2NhdGlvbk1hbmFnZXIgc3RhcnRVcGRhdGlu
Z0xvY2F0aW9uXTsKK30KKworLSAodm9pZClzdG9wCit7CisgICAgW19sb2NhdGlvbk1hbmFnZXIg
c3RvcFVwZGF0aW5nTG9jYXRpb25dOworfQorCistICh2b2lkKXNldEVuYWJsZUhpZ2hBY2N1cmFj
eTooQk9PTCloaWdoQWNjdXJhY3lFbmFibGVkCit7CisgICAgW19sb2NhdGlvbk1hbmFnZXIgc2V0
RGVzaXJlZEFjY3VyYWN5OmhpZ2hBY2N1cmFjeUVuYWJsZWQgPyBrQ0xMb2NhdGlvbkFjY3VyYWN5
QmVzdCA6IGtDTExvY2F0aW9uQWNjdXJhY3lIdW5kcmVkTWV0ZXJzXTsKK30KKworLSAodm9pZCly
ZXF1ZXN0R2VvbG9jYXRpb25BdXRob3JpemF0aW9uCit7CisgICAgaWYgKCFbZ2V0Q0xMb2NhdGlv
bk1hbmFnZXJDbGFzcygpIGxvY2F0aW9uU2VydmljZXNFbmFibGVkXSkgeworICAgICAgICBfY2xp
ZW50LT5nZW9sb2NhdGlvbkF1dGhvcml6YXRpb25EZW5pZWQoX3dlYnNpdGVJZGVudGlmaWVyKTsK
KyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIHN3aXRjaCAoW19sb2NhdGlvbk1hbmFnZXIg
YXV0aG9yaXphdGlvblN0YXR1c10pIHsKKyAgICBjYXNlIGtDTEF1dGhvcml6YXRpb25TdGF0dXNO
b3REZXRlcm1pbmVkOiB7CisgICAgICAgIGlmICghX2lzV2FpdGluZ0ZvckF1dGhvcml6YXRpb24p
IHsKKyAgICAgICAgICAgIF9pc1dhaXRpbmdGb3JBdXRob3JpemF0aW9uID0gWUVTOworICAgICAg
ICAgICAgW19sb2NhdGlvbk1hbmFnZXIgcmVxdWVzdFdoZW5JblVzZUF1dGhvcml6YXRpb25dOwor
ICAgICAgICB9CisgICAgICAgIGJyZWFrOworICAgIH0KKyAgICBjYXNlIGtDTEF1dGhvcml6YXRp
b25TdGF0dXNBdXRob3JpemVkQWx3YXlzOgorI2lmIEhBVkUoQ09SRV9MT0NBVElPTl9BVVRIT1JJ
WkVEX1dIRU5fSU5fVVNFKQorICAgIGNhc2Uga0NMQXV0aG9yaXphdGlvblN0YXR1c0F1dGhvcml6
ZWRXaGVuSW5Vc2U6CisjZW5kaWYKKyAgICAgICAgX2NsaWVudC0+Z2VvbG9jYXRpb25BdXRob3Jp
emF0aW9uR3JhbnRlZChfd2Vic2l0ZUlkZW50aWZpZXIpOworICAgICAgICBicmVhazsKKyAgICBj
YXNlIGtDTEF1dGhvcml6YXRpb25TdGF0dXNSZXN0cmljdGVkOgorICAgIGNhc2Uga0NMQXV0aG9y
aXphdGlvblN0YXR1c0RlbmllZDoKKyAgICAgICAgX2NsaWVudC0+Z2VvbG9jYXRpb25BdXRob3Jp
emF0aW9uRGVuaWVkKF93ZWJzaXRlSWRlbnRpZmllcik7CisgICAgICAgIGJyZWFrOworICAgIH0K
K30KKworLSAodm9pZClsb2NhdGlvbk1hbmFnZXJEaWRDaGFuZ2VBdXRob3JpemF0aW9uOihDTExv
Y2F0aW9uTWFuYWdlciAqKW1hbmFnZXIKK3sKKyAgICBhdXRvIHN0YXR1cyA9IFtfbG9jYXRpb25N
YW5hZ2VyIGF1dGhvcml6YXRpb25TdGF0dXNdOworICAgIGlmIChfaXNXYWl0aW5nRm9yQXV0aG9y
aXphdGlvbikgeworICAgICAgICBzd2l0Y2ggKHN0YXR1cykgeworICAgICAgICBjYXNlIGtDTEF1
dGhvcml6YXRpb25TdGF0dXNOb3REZXRlcm1pbmVkOgorICAgICAgICAgICAgLy8gVGhpcyBjYW4g
aGFwcGVuIGFmdGVyIHJlc3VtZSBpZiB0aGUgdXNlciBoYXMgc3RpbGwgbm90IGFuc3dlcmVkIHRo
ZSBkaWFsb2cuIFdlIGp1c3QgaGF2ZSB0byB3YWl0IGZvciB0aGUgcGVybWlzc2lvbi4KKyAgICAg
ICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIGtDTEF1dGhvcml6YXRpb25TdGF0dXNEZW5pZWQ6
CisgICAgICAgIGNhc2Uga0NMQXV0aG9yaXphdGlvblN0YXR1c1Jlc3RyaWN0ZWQ6CisgICAgICAg
ICAgICBfaXNXYWl0aW5nRm9yQXV0aG9yaXphdGlvbiA9IE5POworICAgICAgICAgICAgX2NsaWVu
dC0+Z2VvbG9jYXRpb25BdXRob3JpemF0aW9uRGVuaWVkKF93ZWJzaXRlSWRlbnRpZmllcik7Cisg
ICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBrQ0xBdXRob3JpemF0aW9uU3RhdHVzQXV0
aG9yaXplZEFsd2F5czoKKyNpZiBIQVZFKENPUkVfTE9DQVRJT05fQVVUSE9SSVpFRF9XSEVOX0lO
X1VTRSkKKyAgICAgICAgY2FzZSBrQ0xBdXRob3JpemF0aW9uU3RhdHVzQXV0aG9yaXplZFdoZW5J
blVzZToKKyNlbmRpZgorICAgICAgICAgICAgX2lzV2FpdGluZ0ZvckF1dGhvcml6YXRpb24gPSBO
TzsKKyAgICAgICAgICAgIF9jbGllbnQtPmdlb2xvY2F0aW9uQXV0aG9yaXphdGlvbkdyYW50ZWQo
X3dlYnNpdGVJZGVudGlmaWVyKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAg
fSBlbHNlIHsKKyAgICAgICAgaWYgKHN0YXR1cyA9PSBrQ0xBdXRob3JpemF0aW9uU3RhdHVzRGVu
aWVkIHx8IHN0YXR1cyA9PSBrQ0xBdXRob3JpemF0aW9uU3RhdHVzUmVzdHJpY3RlZCkgeworICAg
ICAgICAgICAgW19sb2NhdGlvbk1hbmFnZXIgc3RvcFVwZGF0aW5nTG9jYXRpb25dOworICAgICAg
ICAgICAgX2NsaWVudC0+cmVzZXRHZW9sb2NhdGlvbihfd2Vic2l0ZUlkZW50aWZpZXIpOworICAg
ICAgICB9CisgICAgfQorfQorCistICh2b2lkKWxvY2F0aW9uTWFuYWdlcjooQ0xMb2NhdGlvbk1h
bmFnZXIgKiltYW5hZ2VyIGRpZFVwZGF0ZUxvY2F0aW9uczooTlNBcnJheSAqKWxvY2F0aW9ucwor
eworICAgIFVOVVNFRF9QQVJBTShtYW5hZ2VyKTsKKyAgICBmb3IgKENMTG9jYXRpb24gKmxvY2F0
aW9uIGluIGxvY2F0aW9ucykKKyAgICAgICAgX2NsaWVudC0+cG9zaXRpb25DaGFuZ2VkKF93ZWJz
aXRlSWRlbnRpZmllciwgV2ViQ29yZTo6R2VvbG9jYXRpb25Qb3NpdGlvbkRhdGEgeyBsb2NhdGlv
biB9KTsKK30KKworLSAodm9pZClsb2NhdGlvbk1hbmFnZXI6KENMTG9jYXRpb25NYW5hZ2VyICop
bWFuYWdlciBkaWRGYWlsV2l0aEVycm9yOihOU0Vycm9yICopZXJyb3IKK3sKKyAgICBBU1NFUlQo
ZXJyb3IpOworICAgIFVOVVNFRF9QQVJBTShtYW5hZ2VyKTsKKworICAgIGlmIChbZXJyb3IgY29k
ZV0gPT0ga0NMRXJyb3JEZW5pZWQpIHsKKyAgICAgICAgLy8gSWdub3JlIHRoZSBlcnJvciBoZXJl
IGFuZCBsZXQgbG9jYXRpb25NYW5hZ2VyOmRpZENoYW5nZUF1dGhvcml6YXRpb25TdGF0dXM6IGhh
bmRsZSB0aGUgcGVybWlzc2lvbi4KKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIE5TU3Ry
aW5nICplcnJvck1lc3NhZ2UgPSBbZXJyb3IgbG9jYWxpemVkRGVzY3JpcHRpb25dOworICAgIF9j
bGllbnQtPmVycm9yT2NjdXJyZWQoX3dlYnNpdGVJZGVudGlmaWVyLCBlcnJvck1lc3NhZ2UpOwor
fQorCitAZW5kCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworQ29yZUxvY2F0aW9uR2VvbG9jYXRp
b25Qcm92aWRlcjo6Q29yZUxvY2F0aW9uR2VvbG9jYXRpb25Qcm92aWRlcihjb25zdCBSZWdpc3Ry
YWJsZURvbWFpbiYgcmVnaXN0cmFibGVEb21haW4sIENsaWVudCYgY2xpZW50KQorICAgIDogbV9s
b2NhdGlvbk1hbmFnZXIoYWRvcHROUyhbW1dlYkNMTG9jYXRpb25NYW5hZ2VyIGFsbG9jXSBpbml0
V2l0aFdlYnNpdGVJZGVudGlmaWVyOnJlZ2lzdHJhYmxlRG9tYWluLnN0cmluZygpIGNsaWVudDpj
bGllbnRdKSkKK3sKKyAgICAvLyBSZXF1ZXN0IHBlcm1pc3Npb24gZm9yIHRoZSBhcHAgdG8gdXNl
IGdlb2xvY2F0aW9uIChpZiBpdCBkb2Vzbid0IGFscmVhZHkpLgorICAgIFttX2xvY2F0aW9uTWFu
YWdlciByZXF1ZXN0R2VvbG9jYXRpb25BdXRob3JpemF0aW9uXTsKK30KKworQ29yZUxvY2F0aW9u
R2VvbG9jYXRpb25Qcm92aWRlcjo6fkNvcmVMb2NhdGlvbkdlb2xvY2F0aW9uUHJvdmlkZXIoKQor
eworICAgIFttX2xvY2F0aW9uTWFuYWdlciBzdG9wXTsKK30KKwordm9pZCBDb3JlTG9jYXRpb25H
ZW9sb2NhdGlvblByb3ZpZGVyOjpzdGFydCgpCit7CisgICAgW21fbG9jYXRpb25NYW5hZ2VyIHN0
YXJ0XTsKK30KKwordm9pZCBDb3JlTG9jYXRpb25HZW9sb2NhdGlvblByb3ZpZGVyOjpzdG9wKCkK
K3sKKyAgICBbbV9sb2NhdGlvbk1hbmFnZXIgc3RvcF07Cit9CisKK3ZvaWQgQ29yZUxvY2F0aW9u
R2VvbG9jYXRpb25Qcm92aWRlcjo6c2V0RW5hYmxlSGlnaEFjY3VyYWN5KGJvb2wgaGlnaEFjY3Vy
YWN5RW5hYmxlZCkKK3sKKyAgICBbbV9sb2NhdGlvbk1hbmFnZXIgc2V0RW5hYmxlSGlnaEFjY3Vy
YWN5OmhpZ2hBY2N1cmFjeUVuYWJsZWRdOworfQorCitjbGFzcyBBdXRob3JpemF0aW9uQ2hlY2tl
ciBmaW5hbCA6IHB1YmxpYyBSZWZDb3VudGVkPEF1dGhvcml6YXRpb25DaGVja2VyPiwgcHVibGlj
IENvcmVMb2NhdGlvbkdlb2xvY2F0aW9uUHJvdmlkZXI6OkNsaWVudCB7CitwdWJsaWM6CisgICAg
c3RhdGljIFJlZjxBdXRob3JpemF0aW9uQ2hlY2tlcj4gY3JlYXRlKCkKKyAgICB7CisgICAgICAg
IHJldHVybiBhZG9wdFJlZigqbmV3IEF1dGhvcml6YXRpb25DaGVja2VyKTsKKyAgICB9CisKKyAg
ICB2b2lkIGNoZWNrKGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiByZWdpc3RyYWJsZURvbWFpbiwg
Q29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKKyAgICB7
CisgICAgICAgIG1fY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVy
KTsKKyAgICAgICAgbV9wcm92aWRlciA9IG1ha2VVbmlxdWU8Q29yZUxvY2F0aW9uR2VvbG9jYXRp
b25Qcm92aWRlcj4ocmVnaXN0cmFibGVEb21haW4sICp0aGlzKTsKKyAgICB9CisKK3ByaXZhdGU6
CisgICAgQXV0aG9yaXphdGlvbkNoZWNrZXIoKSA9IGRlZmF1bHQ7CisKKyAgICB2b2lkIGdlb2xv
Y2F0aW9uQXV0aG9yaXphdGlvbkdyYW50ZWQoY29uc3QgU3RyaW5nJikgZmluYWwKKyAgICB7Cisg
ICAgICAgIGlmIChtX2NvbXBsZXRpb25IYW5kbGVyKQorICAgICAgICAgICAgbV9jb21wbGV0aW9u
SGFuZGxlcih0cnVlKTsKKyAgICB9CisKKyAgICB2b2lkIGdlb2xvY2F0aW9uQXV0aG9yaXphdGlv
bkRlbmllZChjb25zdCBTdHJpbmcmKSBmaW5hbAorICAgIHsKKyAgICAgICAgaWYgKG1fY29tcGxl
dGlvbkhhbmRsZXIpCisgICAgICAgICAgICBtX2NvbXBsZXRpb25IYW5kbGVyKGZhbHNlKTsKKyAg
ICB9CisKKyAgICB2b2lkIHBvc2l0aW9uQ2hhbmdlZChjb25zdCBTdHJpbmcmLCBHZW9sb2NhdGlv
blBvc2l0aW9uRGF0YSYmKSBmaW5hbCB7IH0KKyAgICB2b2lkIGVycm9yT2NjdXJyZWQoY29uc3Qg
U3RyaW5nJiwgY29uc3QgU3RyaW5nJikgZmluYWwKKyAgICB7CisgICAgICAgIGlmIChtX2NvbXBs
ZXRpb25IYW5kbGVyKQorICAgICAgICAgICAgbV9jb21wbGV0aW9uSGFuZGxlcihmYWxzZSk7Cisg
ICAgfQorICAgIHZvaWQgcmVzZXRHZW9sb2NhdGlvbihjb25zdCBTdHJpbmcmKSBmaW5hbCB7IH0K
KworICAgIHN0ZDo6dW5pcXVlX3B0cjxDb3JlTG9jYXRpb25HZW9sb2NhdGlvblByb3ZpZGVyPiBt
X3Byb3ZpZGVyOworICAgIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+IG1fY29tcGxldGlv
bkhhbmRsZXI7Cit9OworCit2b2lkIENvcmVMb2NhdGlvbkdlb2xvY2F0aW9uUHJvdmlkZXI6OnJl
cXVlc3RBdXRob3JpemF0aW9uKGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiByZWdpc3RyYWJsZURv
bWFpbiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJiBjb21wbGV0aW9uSGFuZGxlcikK
K3sKKyAgICBhdXRvIGF1dGhvcml6YXRpb25DaGVja2VyID0gQXV0aG9yaXphdGlvbkNoZWNrZXI6
OmNyZWF0ZSgpOworICAgIGF1dGhvcml6YXRpb25DaGVja2VyLT5jaGVjayhyZWdpc3RyYWJsZURv
bWFpbiwgW2F1dGhvcml6YXRpb25DaGVja2VyLCBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUo
Y29tcGxldGlvbkhhbmRsZXIpXShib29sIGF1dGhvcml6ZWQpIG11dGFibGUgeworICAgICAgICBj
b21wbGV0aW9uSGFuZGxlcihhdXRob3JpemVkKTsKKyAgICB9KTsKK30KKworfSAvLyBuYW1lc3Bh
Y2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9HZW9s
b2NhdGlvbkNsaWVudE1vY2suY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9HZW9s
b2NhdGlvbkNsaWVudE1vY2suY3BwCmluZGV4IDlkNWVmYzgzZjM0ZWIxOGQ1OTlkYzEwY2FhOGZj
MGNhMzk5ZGIwYTIuLmZhNDIwODJlNTA1OWE5ZWNmMjY0Y2FhZjRjMjY1MzJmNGIyZTVkN2EgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svR2VvbG9jYXRpb25DbGllbnRN
b2NrLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL0dlb2xvY2F0aW9uQ2xp
ZW50TW9jay5jcHAKQEAgLTEzNiwxMCArMTM2LDExIEBAIHZvaWQgR2VvbG9jYXRpb25DbGllbnRN
b2NrOjpnZW9sb2NhdGlvbkRlc3Ryb3llZCgpCiAgICAgQVNTRVJUKCFtX2lzQWN0aXZlKTsKIH0K
IAotdm9pZCBHZW9sb2NhdGlvbkNsaWVudE1vY2s6OnN0YXJ0VXBkYXRpbmcoY29uc3QgU3RyaW5n
JiBhdXRob3JpemF0aW9uVG9rZW4pCit2b2lkIEdlb2xvY2F0aW9uQ2xpZW50TW9jazo6c3RhcnRV
cGRhdGluZyhjb25zdCBTdHJpbmcmIGF1dGhvcml6YXRpb25Ub2tlbiwgYm9vbCBlbmFibGVIaWdo
QWNjdXJhY3kpCiB7CiAgICAgQVNTRVJUKCFtX2lzQWN0aXZlKTsKICAgICBVTlVTRURfUEFSQU0o
YXV0aG9yaXphdGlvblRva2VuKTsKKyAgICBVTlVTRURfUEFSQU0oZW5hYmxlSGlnaEFjY3VyYWN5
KTsKICAgICBtX2lzQWN0aXZlID0gdHJ1ZTsKICAgICBhc3luY1VwZGF0ZUNvbnRyb2xsZXIoKTsK
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svR2VvbG9jYXRpb25D
bGllbnRNb2NrLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL0dlb2xvY2F0aW9uQ2xp
ZW50TW9jay5oCmluZGV4IDJmYTc1ZTA1N2E1M2Q3ZTgxOGNjZmFmZWU3MDI0M2RkNTQ4MjE4NDUu
LmY4YmFjMzhiNWI2Y2NjOGNjMDhmODcwNzFlYmM3NWQ2NWIzMTA2NDAgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svR2VvbG9jYXRpb25DbGllbnRNb2NrLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9HZW9sb2NhdGlvbkNsaWVudE1vY2suaApAQCAt
NTksNyArNTksNyBAQCBwdWJsaWM6CiAKICAgICAvLyBHZW9sb2NhdGlvbkNsaWVudAogICAgIHZv
aWQgZ2VvbG9jYXRpb25EZXN0cm95ZWQoKSBvdmVycmlkZTsKLSAgICB2b2lkIHN0YXJ0VXBkYXRp
bmcoY29uc3QgU3RyaW5nJiBhdXRob3JpemF0aW9uVG9rZW4pIG92ZXJyaWRlOworICAgIHZvaWQg
c3RhcnRVcGRhdGluZyhjb25zdCBTdHJpbmcmIGF1dGhvcml6YXRpb25Ub2tlbiwgYm9vbCBlbmFi
bGVIaWdoQWNjdXJhY3kpIG92ZXJyaWRlOwogICAgIHZvaWQgc3RvcFVwZGF0aW5nKCkgb3ZlcnJp
ZGU7CiAgICAgdm9pZCBzZXRFbmFibGVIaWdoQWNjdXJhY3koYm9vbCkgb3ZlcnJpZGU7CiAgICAg
c3RkOjpvcHRpb25hbDxHZW9sb2NhdGlvblBvc2l0aW9uRGF0YT4gbGFzdFBvc2l0aW9uKCkgb3Zl
cnJpZGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NvdXJjZXNDb2NvYS50eHQgYi9Tb3Vy
Y2UvV2ViS2l0L1NvdXJjZXNDb2NvYS50eHQKaW5kZXggZmU1MDZmNzEzMzRhZDU0NmViYmFiMDY0
MWNiMzcxYzI5OWRiMjZjYS4uYzkwNzQ2ZmQ3Y2QzZWEzOThkM2RjMmIyMGQ0ZDY4MDg2OTFiZWJl
NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9Tb3VyY2VzQ29jb2EudHh0CisrKyBiL1NvdXJj
ZS9XZWJLaXQvU291cmNlc0NvY29hLnR4dApAQCAtNDI2LDYgKzQyNiw3IEBAIFVJUHJvY2Vzcy9D
b2NvYS9VSVJlbW90ZU9iamVjdFJlZ2lzdHJ5LmNwcAogVUlQcm9jZXNzL0NvY29hL1VzZXJNZWRp
YUNhcHR1cmVNYW5hZ2VyUHJveHkuY3BwCiBVSVByb2Nlc3MvQ29jb2EvVXNlck1lZGlhUGVybWlz
c2lvblJlcXVlc3RNYW5hZ2VyUHJveHkubW0KIFVJUHJvY2Vzcy9Db2NvYS9WaWRlb0Z1bGxzY3Jl
ZW5NYW5hZ2VyUHJveHkubW0KK1VJUHJvY2Vzcy9Db2NvYS9XZWJHZW9sb2NhdGlvbk1hbmFnZXJQ
cm94eUNvY29hLmNwcAogVUlQcm9jZXNzL0NvY29hL1dlYlBhZ2VQcm94eUNvY29hLm1tCiBVSVBy
b2Nlc3MvQ29jb2EvV2ViUGFzdGVib2FyZFByb3h5Q29jb2EubW0KIFVJUHJvY2Vzcy9Db2NvYS9X
ZWJQcmVmZXJlbmNlc0NvY29hLm1tCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9BUEkvQy9XS0dlb2xvY2F0aW9uTWFuYWdlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9BUEkvQy9XS0dlb2xvY2F0aW9uTWFuYWdlci5jcHAKaW5kZXggODg4Yjc1YmM3Y2VjODlkMTZl
MDdmNjE3ZTdiYjJjZTI5NzlmYTYyMy4uNWYwZjA5ZDRmZmIzMWY4OGQ2MTA3NmM5OGMxNmRkN2Nj
N2I2ZjUwNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tHZW9s
b2NhdGlvbk1hbmFnZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dL
R2VvbG9jYXRpb25NYW5hZ2VyLmNwcApAQCAtNDAsNyArNDAsOSBAQCBXS1R5cGVJRCBXS0dlb2xv
Y2F0aW9uTWFuYWdlckdldFR5cGVJRCgpCiAKIHZvaWQgV0tHZW9sb2NhdGlvbk1hbmFnZXJTZXRQ
cm92aWRlcihXS0dlb2xvY2F0aW9uTWFuYWdlclJlZiBnZW9sb2NhdGlvbk1hbmFnZXJSZWYsIGNv
bnN0IFdLR2VvbG9jYXRpb25Qcm92aWRlckJhc2UqIHdrUHJvdmlkZXIpCiB7CisjaWYgIVBMQVRG
T1JNKElPU19GQU1JTFkpCiAgICAgdG9JbXBsKGdlb2xvY2F0aW9uTWFuYWdlclJlZiktPnNldFBy
b3ZpZGVyKG1ha2VVbmlxdWU8V2ViR2VvbG9jYXRpb25Qcm92aWRlcj4od2tQcm92aWRlcikpOwor
I2VuZGlmCiB9CiAKIHZvaWQgV0tHZW9sb2NhdGlvbk1hbmFnZXJQcm92aWRlckRpZENoYW5nZVBv
c2l0aW9uKFdLR2VvbG9jYXRpb25NYW5hZ2VyUmVmIGdlb2xvY2F0aW9uTWFuYWdlclJlZiwgV0tH
ZW9sb2NhdGlvblBvc2l0aW9uUmVmIHBvc2l0aW9uUmVmKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQ29jb2EvV2ViR2VvbG9jYXRpb25NYW5hZ2VyUHJveHlDb2NvYS5jcHAg
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XZWJHZW9sb2NhdGlvbk1hbmFnZXJQcm94
eUNvY29hLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi45MDA4YzIwNWIzY2Q1ZTk0NDU5Yzg5YmI2ODk3N2QyYjFi
NzY0MzYxCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2Ev
V2ViR2VvbG9jYXRpb25NYW5hZ2VyUHJveHlDb2NvYS5jcHAKQEAgLTAsMCArMSwxMDMgQEAKKy8q
CisgKiBDb3B5cmlnaHQgKEMpIDIwMjIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJp
YnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBB
TkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQ
TEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVO
VCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEs
IE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiV2ViR2VvbG9jYXRpb25N
YW5hZ2VyUHJveHkuaCIKKworI2luY2x1ZGUgIldlYkdlb2xvY2F0aW9uTWFuYWdlck1lc3NhZ2Vz
LmgiCisKK25hbWVzcGFjZSBXZWJLaXQgeworCisvLyBGSVhNRTogVGhpcyBzaG91bGQgYmUgdXNl
ZCBieSBhbGwgQ29jb2EgcG9ydHMKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZKQorCit2b2lkIFdl
Ykdlb2xvY2F0aW9uTWFuYWdlclByb3h5Ojpwb3NpdGlvbkNoYW5nZWQoY29uc3QgU3RyaW5nJiB3
ZWJzaXRlSWRlbnRpZmllciwgV2ViQ29yZTo6R2VvbG9jYXRpb25Qb3NpdGlvbkRhdGEmJiBwb3Np
dGlvbikKK3sKKyAgICBhdXRvIHJlZ2lzdHJhYmxlRG9tYWluID0gV2ViQ29yZTo6UmVnaXN0cmFi
bGVEb21haW46OnVuY2hlY2tlZENyZWF0ZUZyb21SZWdpc3RyYWJsZURvbWFpblN0cmluZyh3ZWJz
aXRlSWRlbnRpZmllcik7CisgICAgYXV0byBpdCA9IG1fcGVyRG9tYWluRGF0YS5maW5kKHJlZ2lz
dHJhYmxlRG9tYWluKTsKKyAgICBpZiAoaXQgPT0gbV9wZXJEb21haW5EYXRhLmVuZCgpKQorICAg
ICAgICByZXR1cm47CisKKyAgICBhdXRvJiBwZXJEb21haW5EYXRhID0gKml0LT52YWx1ZTsKKyAg
ICBwZXJEb21haW5EYXRhLmxhc3RQb3NpdGlvbiA9IFdURk1vdmUocG9zaXRpb24pOworICAgIGZv
ciAoYXV0byBjb25uZWN0aW9uSUQgOiBwZXJEb21haW5EYXRhLndhdGNoZXJzKQorICAgICAgICBJ
UEM6OkNvbm5lY3Rpb246OnNlbmQoY29ubmVjdGlvbklELCBNZXNzYWdlczo6V2ViR2VvbG9jYXRp
b25NYW5hZ2VyOjpEaWRDaGFuZ2VQb3NpdGlvbihyZWdpc3RyYWJsZURvbWFpbiwgcGVyRG9tYWlu
RGF0YS5sYXN0UG9zaXRpb24udmFsdWUoKSksIDApOworfQorCit2b2lkIFdlYkdlb2xvY2F0aW9u
TWFuYWdlclByb3h5OjplcnJvck9jY3VycmVkKGNvbnN0IFN0cmluZyYgd2Vic2l0ZUlkZW50aWZp
ZXIsIGNvbnN0IFN0cmluZyYgZXJyb3JNZXNzYWdlKQoreworICAgIGF1dG8gcmVnaXN0cmFibGVE
b21haW4gPSBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbjo6dW5jaGVja2VkQ3JlYXRlRnJvbVJl
Z2lzdHJhYmxlRG9tYWluU3RyaW5nKHdlYnNpdGVJZGVudGlmaWVyKTsKKyAgICBhdXRvIGl0ID0g
bV9wZXJEb21haW5EYXRhLmZpbmQocmVnaXN0cmFibGVEb21haW4pOworICAgIGlmIChpdCA9PSBt
X3BlckRvbWFpbkRhdGEuZW5kKCkpCisgICAgICAgIHJldHVybjsKKworICAgIGF1dG8mIHBlckRv
bWFpbkRhdGEgPSAqaXQtPnZhbHVlOworICAgIGZvciAoYXV0byBjb25uZWN0aW9uSUQgOiBwZXJE
b21haW5EYXRhLndhdGNoZXJzKQorICAgICAgICBJUEM6OkNvbm5lY3Rpb246OnNlbmQoY29ubmVj
dGlvbklELCBNZXNzYWdlczo6V2ViR2VvbG9jYXRpb25NYW5hZ2VyOjpEaWRGYWlsVG9EZXRlcm1p
bmVQb3NpdGlvbihyZWdpc3RyYWJsZURvbWFpbiwgZXJyb3JNZXNzYWdlKSwgMCk7Cit9CisKK3Zv
aWQgV2ViR2VvbG9jYXRpb25NYW5hZ2VyUHJveHk6OnJlc2V0R2VvbG9jYXRpb24oY29uc3QgU3Ry
aW5nJiB3ZWJzaXRlSWRlbnRpZmllcikKK3sKKyAgICBhdXRvIHJlZ2lzdHJhYmxlRG9tYWluID0g
V2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW46OnVuY2hlY2tlZENyZWF0ZUZyb21SZWdpc3RyYWJs
ZURvbWFpblN0cmluZyh3ZWJzaXRlSWRlbnRpZmllcik7CisgICAgYXV0byBpdCA9IG1fcGVyRG9t
YWluRGF0YS5maW5kKHJlZ2lzdHJhYmxlRG9tYWluKTsKKyAgICBpZiAoaXQgPT0gbV9wZXJEb21h
aW5EYXRhLmVuZCgpKQorICAgICAgICByZXR1cm47CisKKyAgICBhdXRvJiBwZXJEb21haW5EYXRh
ID0gKml0LT52YWx1ZTsKKyAgICBmb3IgKGF1dG8gY29ubmVjdGlvbklEIDogcGVyRG9tYWluRGF0
YS53YXRjaGVycykKKyAgICAgICAgSVBDOjpDb25uZWN0aW9uOjpzZW5kKGNvbm5lY3Rpb25JRCwg
TWVzc2FnZXM6OldlYkdlb2xvY2F0aW9uTWFuYWdlcjo6UmVzZXRQZXJtaXNzaW9ucyhyZWdpc3Ry
YWJsZURvbWFpbiksIDApOworfQorCitib29sIFdlYkdlb2xvY2F0aW9uTWFuYWdlclByb3h5Ojpp
c1VwZGF0aW5nKGNvbnN0IFBlckRvbWFpbkRhdGEmIHBlckRvbWFpbkRhdGEpIGNvbnN0Cit7Cisg
ICAgcmV0dXJuICFwZXJEb21haW5EYXRhLndhdGNoZXJzLmlzRW1wdHkoKTsKK30KKworYm9vbCBX
ZWJHZW9sb2NhdGlvbk1hbmFnZXJQcm94eTo6aXNIaWdoQWNjdXJhY3lFbmFibGVkKGNvbnN0IFBl
ckRvbWFpbkRhdGEmIHBlckRvbWFpbkRhdGEpIGNvbnN0Cit7CisgICAgcmV0dXJuICFwZXJEb21h
aW5EYXRhLndhdGNoZXJzTmVlZGluZ0hpZ2hBY2N1cmFjeS5pc0VtcHR5KCk7Cit9CisKK3ZvaWQg
V2ViR2VvbG9jYXRpb25NYW5hZ2VyUHJveHk6OnByb3ZpZGVyU3RhcnRVcGRhdGluZyhQZXJEb21h
aW5EYXRhJiBwZXJEb21haW5EYXRhLCBjb25zdCBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiYg
cmVnaXN0cmFibGVEb21haW4pCit7CisgICAgQVNTRVJUKCFwZXJEb21haW5EYXRhLnByb3ZpZGVy
KTsKKyAgICBwZXJEb21haW5EYXRhLnByb3ZpZGVyID0gbWFrZVVuaXF1ZTxXZWJDb3JlOjpDb3Jl
TG9jYXRpb25HZW9sb2NhdGlvblByb3ZpZGVyPihyZWdpc3RyYWJsZURvbWFpbiwgKnRoaXMpOwor
ICAgIHBlckRvbWFpbkRhdGEucHJvdmlkZXItPnNldEVuYWJsZUhpZ2hBY2N1cmFjeSghcGVyRG9t
YWluRGF0YS53YXRjaGVyc05lZWRpbmdIaWdoQWNjdXJhY3kuaXNFbXB0eSgpKTsKKyAgICBwZXJE
b21haW5EYXRhLnByb3ZpZGVyLT5zdGFydCgpOworfQorCit2b2lkIFdlYkdlb2xvY2F0aW9uTWFu
YWdlclByb3h5Ojpwcm92aWRlclN0b3BVcGRhdGluZyhQZXJEb21haW5EYXRhJiBwZXJEb21haW5E
YXRhKQoreworICAgIHBlckRvbWFpbkRhdGEucHJvdmlkZXItPnN0b3AoKTsKK30KKwordm9pZCBX
ZWJHZW9sb2NhdGlvbk1hbmFnZXJQcm94eTo6cHJvdmlkZXJTZXRFbmFibGVkSGlnaEFjY3VyYWN5
KFBlckRvbWFpbkRhdGEmIHBlckRvbWFpbkRhdGEsIGJvb2wgZW5hYmxlZCkKK3sKKyAgICBwZXJE
b21haW5EYXRhLnByb3ZpZGVyLT5zZXRFbmFibGVIaWdoQWNjdXJhY3koZW5hYmxlZCk7Cit9CisK
KyNlbmRpZgorCit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJHZW9s
b2NhdGlvbk1hbmFnZXJQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJHZW9s
b2NhdGlvbk1hbmFnZXJQcm94eS5jcHAKaW5kZXggMDRmMzIyN2NkNTVjOTkyYTQyY2Q5NmEzZjI1
ZDY5N2FlZDc5NjVhMi4uNTcwN2YwNjE4Y2IxMzJjOTVhZjA0OWI1NmI3YmQ4MTI4NDdhYTNkMiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViR2VvbG9jYXRpb25NYW5hZ2Vy
UHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkdlb2xvY2F0aW9uTWFu
YWdlclByb3h5LmNwcApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTEs
IDIwMTIsIDIwMTMgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0
IChDKSAyMDExLTIwMjIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC01MCwzNCArNTAsNDAgQEAgUmVmPFdlYkdlb2xvY2F0
aW9uTWFuYWdlclByb3h5PiBXZWJHZW9sb2NhdGlvbk1hbmFnZXJQcm94eTo6Y3JlYXRlKFdlYlBy
b2Nlc3NQb28KIAogV2ViR2VvbG9jYXRpb25NYW5hZ2VyUHJveHk6OldlYkdlb2xvY2F0aW9uTWFu
YWdlclByb3h5KFdlYlByb2Nlc3NQb29sKiBwcm9jZXNzUG9vbCkKICAgICA6IFdlYkNvbnRleHRT
dXBwbGVtZW50KHByb2Nlc3NQb29sKQotICAgICwgbV9wcm92aWRlcihtYWtlVW5pcXVlPEFQSTo6
R2VvbG9jYXRpb25Qcm92aWRlcj4oKSkKIHsKICAgICBXZWJDb250ZXh0U3VwcGxlbWVudDo6cHJv
Y2Vzc1Bvb2woKS0+YWRkTWVzc2FnZVJlY2VpdmVyKE1lc3NhZ2VzOjpXZWJHZW9sb2NhdGlvbk1h
bmFnZXJQcm94eTo6bWVzc2FnZVJlY2VpdmVyTmFtZSgpLCAqdGhpcyk7CiB9CiAKLXZvaWQgV2Vi
R2VvbG9jYXRpb25NYW5hZ2VyUHJveHk6OnNldFByb3ZpZGVyKHN0ZDo6dW5pcXVlX3B0cjxBUEk6
Okdlb2xvY2F0aW9uUHJvdmlkZXI+JiYgcHJvdmlkZXIpCi17Ci0gICAgaWYgKCFwcm92aWRlcikK
LSAgICAgICAgbV9wcm92aWRlciA9IG1ha2VVbmlxdWU8QVBJOjpHZW9sb2NhdGlvblByb3ZpZGVy
PigpOwotICAgIGVsc2UKLSAgICAgICAgbV9wcm92aWRlciA9IFdURk1vdmUocHJvdmlkZXIpOwot
fQorV2ViR2VvbG9jYXRpb25NYW5hZ2VyUHJveHk6On5XZWJHZW9sb2NhdGlvbk1hbmFnZXJQcm94
eSgpID0gZGVmYXVsdDsKIAogLy8gV2ViQ29udGV4dFN1cHBsZW1lbnQKIAogdm9pZCBXZWJHZW9s
b2NhdGlvbk1hbmFnZXJQcm94eTo6cHJvY2Vzc1Bvb2xEZXN0cm95ZWQoKQogewotICAgIGJvb2wg
d2FzVXBkYXRpbmcgPSBpc1VwZGF0aW5nKCk7Ci0gICAgbV91cGRhdGVSZXF1ZXN0ZXJzLmNsZWFy
KCk7CisgICAgaWYgKG1fcGVyRG9tYWluRGF0YS5pc0VtcHR5KCkpCisgICAgICAgIHJldHVybjsK
IAotICAgIEFTU0VSVCghaXNVcGRhdGluZygpKTsKLSAgICBpZiAod2FzVXBkYXRpbmcpCisgICAg
bV9wZXJEb21haW5EYXRhLmNsZWFyKCk7CisjaWYgIVBMQVRGT1JNKElPU19GQU1JTFkpCisgICAg
aWYgKG1fcHJvdmlkZXIpCiAgICAgICAgIG1fcHJvdmlkZXItPnN0b3BVcGRhdGluZygqdGhpcyk7
CisjZW5kaWYKIH0KIAogdm9pZCBXZWJHZW9sb2NhdGlvbk1hbmFnZXJQcm94eTo6cHJvY2Vzc0Rp
ZENsb3NlKFdlYlByb2Nlc3NQcm94eSogd2ViUHJvY2Vzc1Byb3h5KQogewotICAgIHJlbW92ZVJl
cXVlc3Rlcih3ZWJQcm9jZXNzUHJveHkpOworICAgIGlmICghd2ViUHJvY2Vzc1Byb3h5LT5oYXND
b25uZWN0aW9uKCkpCisgICAgICAgIHJldHVybjsKKworICAgIGF1dG8qIGNvbm5lY3Rpb24gPSB3
ZWJQcm9jZXNzUHJveHktPmNvbm5lY3Rpb24oKTsKKworICAgIFZlY3RvcjxXZWJDb3JlOjpSZWdp
c3RyYWJsZURvbWFpbj4gYWZmZWN0ZWREb21haW5zOworICAgIGZvciAoYXV0byYgW3JlZ2lzdHJh
YmxlRG9tYWluLCBwZXJEb21haW5EYXRhXSA6IG1fcGVyRG9tYWluRGF0YSkgeworICAgICAgICBp
ZiAocGVyRG9tYWluRGF0YS0+d2F0Y2hlcnMuY29udGFpbnMoY29ubmVjdGlvbi0+dW5pcXVlSUQo
KSkpCisgICAgICAgICAgICBhZmZlY3RlZERvbWFpbnMuYXBwZW5kKHJlZ2lzdHJhYmxlRG9tYWlu
KTsKKyAgICB9CisgICAgZm9yIChhdXRvJiByZWdpc3RyYWJsZURvbWFpbiA6IGFmZmVjdGVkRG9t
YWlucykKKyAgICAgICAgc3RvcFVwZGF0aW5nKCpjb25uZWN0aW9uLCByZWdpc3RyYWJsZURvbWFp
bik7CiB9CiAKIHZvaWQgV2ViR2VvbG9jYXRpb25NYW5hZ2VyUHJveHk6OnJlZldlYkNvbnRleHRT
dXBwbGVtZW50KCkKQEAgLTkyLDMwICs5OCwyMiBAQCB2b2lkIFdlYkdlb2xvY2F0aW9uTWFuYWdl
clByb3h5OjpkZXJlZldlYkNvbnRleHRTdXBwbGVtZW50KCkKIAogdm9pZCBXZWJHZW9sb2NhdGlv
bk1hbmFnZXJQcm94eTo6cHJvdmlkZXJEaWRDaGFuZ2VQb3NpdGlvbihXZWJHZW9sb2NhdGlvblBv
c2l0aW9uKiBwb3NpdGlvbikKIHsKLSAgICBtX2xhc3RQb3NpdGlvbiA9IHBvc2l0aW9uLT5jb3Jl
UG9zaXRpb24oKTsKLQotICAgIGlmICghcHJvY2Vzc1Bvb2woKSkKLSAgICAgICAgcmV0dXJuOwot
Ci0gICAgcHJvY2Vzc1Bvb2woKS0+c2VuZFRvQWxsUHJvY2Vzc2VzKE1lc3NhZ2VzOjpXZWJHZW9s
b2NhdGlvbk1hbmFnZXI6OkRpZENoYW5nZVBvc2l0aW9uKG1fbGFzdFBvc2l0aW9uLnZhbHVlKCkp
KTsKKyAgICBmb3IgKGF1dG8mIFtyZWdpc3RyYWJsZURvbWFpbiwgcGVyRG9tYWluRGF0YV0gOiBt
X3BlckRvbWFpbkRhdGEpIHsKKyAgICAgICAgcGVyRG9tYWluRGF0YS0+bGFzdFBvc2l0aW9uID0g
cG9zaXRpb24tPmNvcmVQb3NpdGlvbigpOworICAgICAgICBmb3IgKGF1dG8gY29ubmVjdGlvbklE
IDogcGVyRG9tYWluRGF0YS0+d2F0Y2hlcnMpCisgICAgICAgICAgICBJUEM6OkNvbm5lY3Rpb246
OnNlbmQoY29ubmVjdGlvbklELCBNZXNzYWdlczo6V2ViR2VvbG9jYXRpb25NYW5hZ2VyOjpEaWRD
aGFuZ2VQb3NpdGlvbihyZWdpc3RyYWJsZURvbWFpbiwgcGVyRG9tYWluRGF0YS0+bGFzdFBvc2l0
aW9uLnZhbHVlKCkpLCAwKTsKKyAgICB9CiB9CiAKIHZvaWQgV2ViR2VvbG9jYXRpb25NYW5hZ2Vy
UHJveHk6OnByb3ZpZGVyRGlkRmFpbFRvRGV0ZXJtaW5lUG9zaXRpb24oY29uc3QgU3RyaW5nJiBl
cnJvck1lc3NhZ2UpCiB7Ci0gICAgaWYgKCFwcm9jZXNzUG9vbCgpKQotICAgICAgICByZXR1cm47
Ci0KLSAgICBwcm9jZXNzUG9vbCgpLT5zZW5kVG9BbGxQcm9jZXNzZXMoTWVzc2FnZXM6OldlYkdl
b2xvY2F0aW9uTWFuYWdlcjo6RGlkRmFpbFRvRGV0ZXJtaW5lUG9zaXRpb24oZXJyb3JNZXNzYWdl
KSk7Ci19Ci0KLSNpZiBQTEFURk9STShJT1NfRkFNSUxZKQotdm9pZCBXZWJHZW9sb2NhdGlvbk1h
bmFnZXJQcm94eTo6cmVzZXRQZXJtaXNzaW9ucygpCi17Ci0gICAgcHJvY2Vzc1Bvb2woKS0+c2Vu
ZFRvQWxsUHJvY2Vzc2VzKE1lc3NhZ2VzOjpXZWJHZW9sb2NhdGlvbk1hbmFnZXI6OlJlc2V0UGVy
bWlzc2lvbnMoKSk7CisgICAgZm9yIChhdXRvJiBbcmVnaXN0cmFibGVEb21haW4sIHBlckRvbWFp
bkRhdGFdIDogbV9wZXJEb21haW5EYXRhKSB7CisgICAgICAgIGZvciAoYXV0byBjb25uZWN0aW9u
SUQgOiBwZXJEb21haW5EYXRhLT53YXRjaGVycykKKyAgICAgICAgICAgIElQQzo6Q29ubmVjdGlv
bjo6c2VuZChjb25uZWN0aW9uSUQsIE1lc3NhZ2VzOjpXZWJHZW9sb2NhdGlvbk1hbmFnZXI6OkRp
ZEZhaWxUb0RldGVybWluZVBvc2l0aW9uKHJlZ2lzdHJhYmxlRG9tYWluLCBlcnJvck1lc3NhZ2Up
LCAwKTsKKyAgICB9CiB9Ci0jZW5kaWYKIAotdm9pZCBXZWJHZW9sb2NhdGlvbk1hbmFnZXJQcm94
eTo6c3RhcnRVcGRhdGluZyhJUEM6OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24sIFdlYlBhZ2VQcm94
eUlkZW50aWZpZXIgcGFnZVByb3h5SUQsIGNvbnN0IFN0cmluZyYgYXV0aG9yaXphdGlvblRva2Vu
KQordm9pZCBXZWJHZW9sb2NhdGlvbk1hbmFnZXJQcm94eTo6c3RhcnRVcGRhdGluZyhJUEM6OkNv
bm5lY3Rpb24mIGNvbm5lY3Rpb24sIGNvbnN0IFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluJiBy
ZWdpc3RyYWJsZURvbWFpbiwgV2ViUGFnZVByb3h5SWRlbnRpZmllciBwYWdlUHJveHlJRCwgY29u
c3QgU3RyaW5nJiBhdXRob3JpemF0aW9uVG9rZW4sIGJvb2wgZW5hYmxlSGlnaEFjY3VyYWN5KQog
ewogICAgIGF1dG8qIHBhZ2UgPSBXZWJQcm9jZXNzUHJveHk6OndlYlBhZ2UocGFnZVByb3h5SUQp
OwogICAgIE1FU1NBR0VfQ0hFQ0socGFnZSk7CkBAIC0xMjMsNTAgKzEyMSwxMjEgQEAgdm9pZCBX
ZWJHZW9sb2NhdGlvbk1hbmFnZXJQcm94eTo6c3RhcnRVcGRhdGluZyhJUEM6OkNvbm5lY3Rpb24m
IGNvbm5lY3Rpb24sIFdlYlAKICAgICBhdXRvIGlzVmFsaWRBdXRob3JpemF0aW9uVG9rZW4gPSBw
YWdlLT5nZW9sb2NhdGlvblBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlcigpLmlzVmFsaWRBdXRob3Jp
emF0aW9uVG9rZW4oYXV0aG9yaXphdGlvblRva2VuKTsKICAgICBNRVNTQUdFX0NIRUNLKGlzVmFs
aWRBdXRob3JpemF0aW9uVG9rZW4pOwogCi0gICAgYm9vbCB3YXNVcGRhdGluZyA9IGlzVXBkYXRp
bmcoKTsKLSAgICBtX3VwZGF0ZVJlcXVlc3RlcnMuYWRkKCZjb25uZWN0aW9uLmNsaWVudCgpKTsK
KyAgICBhdXRvJiBwZXJEb21haW5EYXRhID0gKm1fcGVyRG9tYWluRGF0YS5lbnN1cmUocmVnaXN0
cmFibGVEb21haW4sIFtdIHsKKyAgICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8UGVyRG9tYWluRGF0
YT4oKTsKKyAgICB9KS5pdGVyYXRvci0+dmFsdWU7CisKKyAgICBib29sIHdhc1VwZGF0aW5nID0g
aXNVcGRhdGluZyhwZXJEb21haW5EYXRhKTsKKyAgICBib29sIGhpZ2hBY2N1cmFjeVdhc0VuYWJs
ZWQgPSBpc0hpZ2hBY2N1cmFjeUVuYWJsZWQocGVyRG9tYWluRGF0YSk7CisKKyAgICBwZXJEb21h
aW5EYXRhLndhdGNoZXJzLmFkZChjb25uZWN0aW9uLnVuaXF1ZUlEKCkpOworICAgIGlmIChlbmFi
bGVIaWdoQWNjdXJhY3kpCisgICAgICAgIHBlckRvbWFpbkRhdGEud2F0Y2hlcnNOZWVkaW5nSGln
aEFjY3VyYWN5LmFkZChjb25uZWN0aW9uLnVuaXF1ZUlEKCkpOworCiAgICAgaWYgKCF3YXNVcGRh
dGluZykgewotICAgICAgICBtX3Byb3ZpZGVyLT5zZXRFbmFibGVIaWdoQWNjdXJhY3koKnRoaXMs
IGlzSGlnaEFjY3VyYWN5RW5hYmxlZCgpKTsKLSAgICAgICAgbV9wcm92aWRlci0+c3RhcnRVcGRh
dGluZygqdGhpcyk7Ci0gICAgfSBlbHNlIGlmIChtX2xhc3RQb3NpdGlvbikKLSAgICAgICAgY29u
bmVjdGlvbi5zZW5kKE1lc3NhZ2VzOjpXZWJHZW9sb2NhdGlvbk1hbmFnZXI6OkRpZENoYW5nZVBv
c2l0aW9uKG1fbGFzdFBvc2l0aW9uLnZhbHVlKCkpLCAwKTsKLX0KKyAgICAgICAgcHJvdmlkZXJT
dGFydFVwZGF0aW5nKHBlckRvbWFpbkRhdGEsIHJlZ2lzdHJhYmxlRG9tYWluKTsKKyAgICAgICAg
cmV0dXJuOworICAgIH0KKyAgICBpZiAoIWhpZ2hBY2N1cmFjeVdhc0VuYWJsZWQgJiYgZW5hYmxl
SGlnaEFjY3VyYWN5KQorICAgICAgICBwcm92aWRlclNldEVuYWJsZWRIaWdoQWNjdXJhY3kocGVy
RG9tYWluRGF0YSwgZW5hYmxlSGlnaEFjY3VyYWN5KTsKIAotdm9pZCBXZWJHZW9sb2NhdGlvbk1h
bmFnZXJQcm94eTo6c3RvcFVwZGF0aW5nKElQQzo6Q29ubmVjdGlvbiYgY29ubmVjdGlvbikKLXsK
LSAgICByZW1vdmVSZXF1ZXN0ZXIoJmNvbm5lY3Rpb24uY2xpZW50KCkpOworICAgIGlmIChwZXJE
b21haW5EYXRhLmxhc3RQb3NpdGlvbikKKyAgICAgICAgY29ubmVjdGlvbi5zZW5kKE1lc3NhZ2Vz
OjpXZWJHZW9sb2NhdGlvbk1hbmFnZXI6OkRpZENoYW5nZVBvc2l0aW9uKHJlZ2lzdHJhYmxlRG9t
YWluLCBwZXJEb21haW5EYXRhLmxhc3RQb3NpdGlvbi52YWx1ZSgpKSwgMCk7CiB9CiAKLXZvaWQg
V2ViR2VvbG9jYXRpb25NYW5hZ2VyUHJveHk6OnJlbW92ZVJlcXVlc3Rlcihjb25zdCBJUEM6OkNv
bm5lY3Rpb246OkNsaWVudCogY2xpZW50KQordm9pZCBXZWJHZW9sb2NhdGlvbk1hbmFnZXJQcm94
eTo6c3RvcFVwZGF0aW5nKElQQzo6Q29ubmVjdGlvbiYgY29ubmVjdGlvbiwgY29uc3QgV2ViQ29y
ZTo6UmVnaXN0cmFibGVEb21haW4mIHJlZ2lzdHJhYmxlRG9tYWluKQogewotICAgIGJvb2wgd2Fz
VXBkYXRpbmcgPSBpc1VwZGF0aW5nKCk7Ci0gICAgYm9vbCBoaWdoQWNjdXJhY3lXYXNFbmFibGVk
ID0gaXNIaWdoQWNjdXJhY3lFbmFibGVkKCk7CisgICAgYXV0byBpdCA9IG1fcGVyRG9tYWluRGF0
YS5maW5kKHJlZ2lzdHJhYmxlRG9tYWluKTsKKyAgICBpZiAoaXQgPT0gbV9wZXJEb21haW5EYXRh
LmVuZCgpKQorICAgICAgICByZXR1cm47CiAKLSAgICBtX2hpZ2hBY2N1cmFjeVJlcXVlc3RlcnMu
cmVtb3ZlKGNsaWVudCk7Ci0gICAgbV91cGRhdGVSZXF1ZXN0ZXJzLnJlbW92ZShjbGllbnQpOwor
ICAgIGF1dG8mIHBlckRvbWFpbkRhdGEgPSAqaXQtPnZhbHVlOworICAgIGJvb2wgd2FzVXBkYXRp
bmcgPSBpc1VwZGF0aW5nKHBlckRvbWFpbkRhdGEpOworICAgIGJvb2wgaGlnaEFjY3VyYWN5V2Fz
RW5hYmxlZCA9IGlzSGlnaEFjY3VyYWN5RW5hYmxlZChwZXJEb21haW5EYXRhKTsKIAotICAgIGlm
ICh3YXNVcGRhdGluZyAmJiAhaXNVcGRhdGluZygpKQotICAgICAgICBtX3Byb3ZpZGVyLT5zdG9w
VXBkYXRpbmcoKnRoaXMpOworICAgIHBlckRvbWFpbkRhdGEud2F0Y2hlcnMucmVtb3ZlKGNvbm5l
Y3Rpb24udW5pcXVlSUQoKSk7CisgICAgcGVyRG9tYWluRGF0YS53YXRjaGVyc05lZWRpbmdIaWdo
QWNjdXJhY3kucmVtb3ZlKGNvbm5lY3Rpb24udW5pcXVlSUQoKSk7CisKKyAgICBpZiAod2FzVXBk
YXRpbmcgJiYgIWlzVXBkYXRpbmcocGVyRG9tYWluRGF0YSkpCisgICAgICAgIHByb3ZpZGVyU3Rv
cFVwZGF0aW5nKHBlckRvbWFpbkRhdGEpOwogICAgIGVsc2UgewotICAgICAgICBib29sIGhpZ2hB
Y2N1cmFjeVNob3VsZEJlRW5hYmxlZCA9IGlzSGlnaEFjY3VyYWN5RW5hYmxlZCgpOworICAgICAg
ICBib29sIGhpZ2hBY2N1cmFjeVNob3VsZEJlRW5hYmxlZCA9IGlzSGlnaEFjY3VyYWN5RW5hYmxl
ZChwZXJEb21haW5EYXRhKTsKICAgICAgICAgaWYgKGhpZ2hBY2N1cmFjeVNob3VsZEJlRW5hYmxl
ZCAhPSBoaWdoQWNjdXJhY3lXYXNFbmFibGVkKQotICAgICAgICAgICAgbV9wcm92aWRlci0+c2V0
RW5hYmxlSGlnaEFjY3VyYWN5KCp0aGlzLCBoaWdoQWNjdXJhY3lTaG91bGRCZUVuYWJsZWQpOwor
ICAgICAgICAgICAgcHJvdmlkZXJTZXRFbmFibGVkSGlnaEFjY3VyYWN5KHBlckRvbWFpbkRhdGEs
IGhpZ2hBY2N1cmFjeVNob3VsZEJlRW5hYmxlZCk7CiAgICAgfQorCisgICAgaWYgKHBlckRvbWFp
bkRhdGEud2F0Y2hlcnMuaXNFbXB0eSgpICYmIHBlckRvbWFpbkRhdGEud2F0Y2hlcnNOZWVkaW5n
SGlnaEFjY3VyYWN5LmlzRW1wdHkoKSkKKyAgICAgICAgbV9wZXJEb21haW5EYXRhLnJlbW92ZShp
dCk7CiB9CiAKLXZvaWQgV2ViR2VvbG9jYXRpb25NYW5hZ2VyUHJveHk6OnNldEVuYWJsZUhpZ2hB
Y2N1cmFjeShJUEM6OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24sIGJvb2wgZW5hYmxlZCkKK3ZvaWQg
V2ViR2VvbG9jYXRpb25NYW5hZ2VyUHJveHk6OnNldEVuYWJsZUhpZ2hBY2N1cmFjeShJUEM6OkNv
bm5lY3Rpb24mIGNvbm5lY3Rpb24sIGNvbnN0IFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluJiBy
ZWdpc3RyYWJsZURvbWFpbiwgYm9vbCBlbmFibGVkKQogewotICAgIGJvb2wgaGlnaEFjY3VyYWN5
V2FzRW5hYmxlZCA9IGlzSGlnaEFjY3VyYWN5RW5hYmxlZCgpOworICAgIGF1dG8gaXQgPSBtX3Bl
ckRvbWFpbkRhdGEuZmluZChyZWdpc3RyYWJsZURvbWFpbik7CisgICAgQVNTRVJUKGl0ICE9IG1f
cGVyRG9tYWluRGF0YS5lbmQoKSk7CisgICAgaWYgKGl0ID09IG1fcGVyRG9tYWluRGF0YS5lbmQo
KSkKKyAgICAgICAgcmV0dXJuOworCisgICAgYXV0byYgcGVyRG9tYWluRGF0YSA9ICppdC0+dmFs
dWU7CisgICAgYm9vbCBoaWdoQWNjdXJhY3lXYXNFbmFibGVkID0gaXNIaWdoQWNjdXJhY3lFbmFi
bGVkKHBlckRvbWFpbkRhdGEpOwogCiAgICAgaWYgKGVuYWJsZWQpCi0gICAgICAgIG1faGlnaEFj
Y3VyYWN5UmVxdWVzdGVycy5hZGQoJmNvbm5lY3Rpb24uY2xpZW50KCkpOworICAgICAgICBwZXJE
b21haW5EYXRhLndhdGNoZXJzTmVlZGluZ0hpZ2hBY2N1cmFjeS5hZGQoY29ubmVjdGlvbi51bmlx
dWVJRCgpKTsKICAgICBlbHNlCi0gICAgICAgIG1faGlnaEFjY3VyYWN5UmVxdWVzdGVycy5yZW1v
dmUoJmNvbm5lY3Rpb24uY2xpZW50KCkpOworICAgICAgICBwZXJEb21haW5EYXRhLndhdGNoZXJz
TmVlZGluZ0hpZ2hBY2N1cmFjeS5yZW1vdmUoY29ubmVjdGlvbi51bmlxdWVJRCgpKTsKIAotICAg
IGJvb2wgaGlnaEFjY3VyYWN5U2hvdWxkQmVFbmFibGVkID0gaXNIaWdoQWNjdXJhY3lFbmFibGVk
KCk7Ci0gICAgaWYgKGlzVXBkYXRpbmcoKSAmJiBoaWdoQWNjdXJhY3lXYXNFbmFibGVkICE9IGhp
Z2hBY2N1cmFjeVNob3VsZEJlRW5hYmxlZCkKLSAgICAgICAgbV9wcm92aWRlci0+c2V0RW5hYmxl
SGlnaEFjY3VyYWN5KCp0aGlzLCBoaWdoQWNjdXJhY3lTaG91bGRCZUVuYWJsZWQpOworICAgIGlm
IChpc1VwZGF0aW5nKHBlckRvbWFpbkRhdGEpICYmIGhpZ2hBY2N1cmFjeVdhc0VuYWJsZWQgIT0g
ZW5hYmxlZCkKKyAgICAgICAgcHJvdmlkZXJTZXRFbmFibGVkSGlnaEFjY3VyYWN5KHBlckRvbWFp
bkRhdGEsIGVuYWJsZWQpOworfQorCisjaWYgIVBMQVRGT1JNKElPU19GQU1JTFkpCit2b2lkIFdl
Ykdlb2xvY2F0aW9uTWFuYWdlclByb3h5OjpzZXRQcm92aWRlcihzdGQ6OnVuaXF1ZV9wdHI8QVBJ
OjpHZW9sb2NhdGlvblByb3ZpZGVyPiYmIHByb3ZpZGVyKQoreworICAgIGlmICghcHJvdmlkZXIp
CisgICAgICAgIG1fcHJvdmlkZXIgPSBtYWtlVW5pcXVlPEFQSTo6R2VvbG9jYXRpb25Qcm92aWRl
cj4oKTsKKyAgICBlbHNlCisgICAgICAgIG1fcHJvdmlkZXIgPSBXVEZNb3ZlKHByb3ZpZGVyKTsK
K30KKworYm9vbCBXZWJHZW9sb2NhdGlvbk1hbmFnZXJQcm94eTo6aXNVcGRhdGluZyhjb25zdCBQ
ZXJEb21haW5EYXRhJikgY29uc3QKK3sKKyAgICBmb3IgKGF1dG8mIHBlckRvbWFpbkRhdGEgOiBt
X3BlckRvbWFpbkRhdGEudmFsdWVzKCkpIHsKKyAgICAgICAgaWYgKCFwZXJEb21haW5EYXRhLT53
YXRjaGVycy5pc0VtcHR5KCkpCisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9CisgICAg
cmV0dXJuIGZhbHNlOworfQorCisKK2Jvb2wgV2ViR2VvbG9jYXRpb25NYW5hZ2VyUHJveHk6Omlz
SGlnaEFjY3VyYWN5RW5hYmxlZChjb25zdCBQZXJEb21haW5EYXRhJikgY29uc3QKK3sKKyAgICBm
b3IgKGF1dG8mIHBlckRvbWFpbkRhdGEgOiBtX3BlckRvbWFpbkRhdGEudmFsdWVzKCkpIHsKKyAg
ICAgICAgaWYgKCFwZXJEb21haW5EYXRhLT53YXRjaGVyc05lZWRpbmdIaWdoQWNjdXJhY3kuaXNF
bXB0eSgpKQorICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfQorICAgIHJldHVybiBmYWxz
ZTsKK30KKwordm9pZCBXZWJHZW9sb2NhdGlvbk1hbmFnZXJQcm94eTo6cHJvdmlkZXJTdGFydFVw
ZGF0aW5nKFBlckRvbWFpbkRhdGEmIHBlckRvbWFpbkRhdGEsIGNvbnN0IFdlYkNvcmU6OlJlZ2lz
dHJhYmxlRG9tYWluJikKK3sKKyAgICBpZiAoIW1fcHJvdmlkZXIpCisgICAgICAgIHJldHVybjsK
KworICAgIG1fcHJvdmlkZXItPnNldEVuYWJsZUhpZ2hBY2N1cmFjeSgqdGhpcywgaXNIaWdoQWNj
dXJhY3lFbmFibGVkKHBlckRvbWFpbkRhdGEpKTsKKyAgICBtX3Byb3ZpZGVyLT5zdGFydFVwZGF0
aW5nKCp0aGlzKTsKK30KKwordm9pZCBXZWJHZW9sb2NhdGlvbk1hbmFnZXJQcm94eTo6cHJvdmlk
ZXJTdG9wVXBkYXRpbmcoUGVyRG9tYWluRGF0YSYpCit7CisgICAgaWYgKG1fcHJvdmlkZXIpCisg
ICAgICAgIG1fcHJvdmlkZXItPnN0b3BVcGRhdGluZygqdGhpcyk7Cit9CisKK3ZvaWQgV2ViR2Vv
bG9jYXRpb25NYW5hZ2VyUHJveHk6OnByb3ZpZGVyU2V0RW5hYmxlZEhpZ2hBY2N1cmFjeShQZXJE
b21haW5EYXRhJiwgYm9vbCBlbmFibGVkKQoreworICAgIGlmIChtX3Byb3ZpZGVyKQorICAgICAg
ICBtX3Byb3ZpZGVyLT5zZXRFbmFibGVIaWdoQWNjdXJhY3koKnRoaXMsIGVuYWJsZWQpOwogfQor
I2VuZGlmIC8vICFQTEFURk9STShJT1NfRkFNSUxZKQogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQK
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViR2VvbG9jYXRpb25NYW5h
Z2VyUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkdlb2xvY2F0aW9uTWFuYWdl
clByb3h5LmgKaW5kZXggNzQ5MzZlNDVhMGQ4MzgzYThiNGIzZDZkNTc4YzliZDIyYmUzZmE1ZS4u
ZWYxMWY0Y2IwNmIwNGVlMDVlMjIwMjE2ZjhkMjg2NDRkYTBmNGY2NSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViR2VvbG9jYXRpb25NYW5hZ2VyUHJveHkuaAorKysgYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJHZW9sb2NhdGlvbk1hbmFnZXJQcm94eS5oCkBAIC0x
LDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMSwgMjAxMiwgMjAxMyBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEtMjAyMiBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKQEAgLTMxLDkgKzMxLDE1IEBACiAjaW5jbHVkZSAiV2ViQ29udGV4dFN1cHBsZW1lbnQuaCIK
ICNpbmNsdWRlICJXZWJQYWdlUHJveHlJZGVudGlmaWVyLmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9H
ZW9sb2NhdGlvblBvc2l0aW9uRGF0YS5oPgorI2luY2x1ZGUgPFdlYkNvcmUvUmVnaXN0cmFibGVE
b21haW4uaD4KKyNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgogI2luY2x1ZGUgPHd0Zi9IYXNoU2V0
Lmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAKKyNpZiBQTEFURk9STShJT1Nf
RkFNSUxZKQorI2luY2x1ZGUgPFdlYkNvcmUvQ29yZUxvY2F0aW9uR2VvbG9jYXRpb25Qcm92aWRl
ci5oPgorI2VuZGlmCisKIG5hbWVzcGFjZSBBUEkgewogY2xhc3MgR2VvbG9jYXRpb25Qcm92aWRl
cjsKIH0KQEAgLTQzLDIwICs0OSwyMyBAQCBuYW1lc3BhY2UgV2ViS2l0IHsKIGNsYXNzIFdlYkdl
b2xvY2F0aW9uUG9zaXRpb247CiBjbGFzcyBXZWJQcm9jZXNzUG9vbDsKIAotY2xhc3MgV2ViR2Vv
bG9jYXRpb25NYW5hZ2VyUHJveHkgOiBwdWJsaWMgQVBJOjpPYmplY3RJbXBsPEFQSTo6T2JqZWN0
OjpUeXBlOjpHZW9sb2NhdGlvbk1hbmFnZXI+LCBwdWJsaWMgV2ViQ29udGV4dFN1cHBsZW1lbnQs
IHByaXZhdGUgSVBDOjpNZXNzYWdlUmVjZWl2ZXIgeworY2xhc3MgV2ViR2VvbG9jYXRpb25NYW5h
Z2VyUHJveHkgOiBwdWJsaWMgQVBJOjpPYmplY3RJbXBsPEFQSTo6T2JqZWN0OjpUeXBlOjpHZW9s
b2NhdGlvbk1hbmFnZXI+LCBwdWJsaWMgV2ViQ29udGV4dFN1cHBsZW1lbnQsIHByaXZhdGUgSVBD
OjpNZXNzYWdlUmVjZWl2ZXIKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZKQorICAgICwgcHVibGlj
IFdlYkNvcmU6OkNvcmVMb2NhdGlvbkdlb2xvY2F0aW9uUHJvdmlkZXI6OkNsaWVudAorI2VuZGlm
Cit7CiBwdWJsaWM6CiAgICAgc3RhdGljIGNvbnN0IGNoYXIqIHN1cHBsZW1lbnROYW1lKCk7CiAK
ICAgICBzdGF0aWMgUmVmPFdlYkdlb2xvY2F0aW9uTWFuYWdlclByb3h5PiBjcmVhdGUoV2ViUHJv
Y2Vzc1Bvb2wqKTsKKyAgICB+V2ViR2VvbG9jYXRpb25NYW5hZ2VyUHJveHkoKTsKIAorI2lmICFQ
TEFURk9STShJT1NfRkFNSUxZKQogICAgIHZvaWQgc2V0UHJvdmlkZXIoc3RkOjp1bmlxdWVfcHRy
PEFQSTo6R2VvbG9jYXRpb25Qcm92aWRlcj4mJik7CisjZW5kaWYKIAogICAgIHZvaWQgcHJvdmlk
ZXJEaWRDaGFuZ2VQb3NpdGlvbihXZWJHZW9sb2NhdGlvblBvc2l0aW9uKik7CiAgICAgdm9pZCBw
cm92aWRlckRpZEZhaWxUb0RldGVybWluZVBvc2l0aW9uKGNvbnN0IFN0cmluZyYgZXJyb3JNZXNz
YWdlID0gU3RyaW5nKCkpOwotI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCi0gICAgdm9pZCByZXNl
dFBlcm1pc3Npb25zKCk7Ci0jZW5kaWYKLSAgICBjb25zdCBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6
Okdlb2xvY2F0aW9uUG9zaXRpb25EYXRhPiYgbGFzdFBvc2l0aW9uKCkgY29uc3QgeyByZXR1cm4g
bV9sYXN0UG9zaXRpb247IH0KIAogICAgIHVzaW5nIEFQSTo6T2JqZWN0OjpyZWY7CiAgICAgdXNp
bmcgQVBJOjpPYmplY3Q6OmRlcmVmOwpAQCAtNzMsMTkgKzgyLDQwIEBAIHByaXZhdGU6CiAgICAg
Ly8gSVBDOjpNZXNzYWdlUmVjZWl2ZXIKICAgICB2b2lkIGRpZFJlY2VpdmVNZXNzYWdlKElQQzo6
Q29ubmVjdGlvbiYsIElQQzo6RGVjb2RlciYpIG92ZXJyaWRlOwogCi0gICAgYm9vbCBpc1VwZGF0
aW5nKCkgY29uc3QgeyByZXR1cm4gIW1fdXBkYXRlUmVxdWVzdGVycy5pc0VtcHR5KCk7IH0KLSAg
ICBib29sIGlzSGlnaEFjY3VyYWN5RW5hYmxlZCgpIGNvbnN0IHsgcmV0dXJuICFtX2hpZ2hBY2N1
cmFjeVJlcXVlc3RlcnMuaXNFbXB0eSgpOyB9CisgICAgLy8gSVBDIG1lc3NhZ2VzLgorICAgIHZv
aWQgc3RhcnRVcGRhdGluZyhJUEM6OkNvbm5lY3Rpb24mLCBjb25zdCBXZWJDb3JlOjpSZWdpc3Ry
YWJsZURvbWFpbiYsIFdlYlBhZ2VQcm94eUlkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgYXV0aG9y
aXphdGlvblRva2VuLCBib29sIGVuYWJsZUhpZ2hBY2N1cmFjeSk7CisgICAgdm9pZCBzdG9wVXBk
YXRpbmcoSVBDOjpDb25uZWN0aW9uJiwgY29uc3QgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4m
KTsKKyAgICB2b2lkIHNldEVuYWJsZUhpZ2hBY2N1cmFjeShJUEM6OkNvbm5lY3Rpb24mLCBjb25z
dCBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiYsIGJvb2wpOwogCi0gICAgdm9pZCBzdGFydFVw
ZGF0aW5nKElQQzo6Q29ubmVjdGlvbiYsIFdlYlBhZ2VQcm94eUlkZW50aWZpZXIsIGNvbnN0IFN0
cmluZyYgYXV0aG9yaXphdGlvblRva2VuKTsKLSAgICB2b2lkIHN0b3BVcGRhdGluZyhJUEM6OkNv
bm5lY3Rpb24mKTsKLSAgICB2b2lkIHJlbW92ZVJlcXVlc3Rlcihjb25zdCBJUEM6OkNvbm5lY3Rp
b246OkNsaWVudCopOwotICAgIHZvaWQgc2V0RW5hYmxlSGlnaEFjY3VyYWN5KElQQzo6Q29ubmVj
dGlvbiYsIGJvb2wpOworI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCisgICAgLy8gQ29yZUxvY2F0
aW9uR2VvbG9jYXRpb25Qcm92aWRlcjo6Q2xpZW50CisgICAgdm9pZCBwb3NpdGlvbkNoYW5nZWQo
Y29uc3QgU3RyaW5nJiB3ZWJzaXRlSWRlbnRpZmllciwgV2ViQ29yZTo6R2VvbG9jYXRpb25Qb3Np
dGlvbkRhdGEmJikgZmluYWw7CisgICAgdm9pZCBlcnJvck9jY3VycmVkKGNvbnN0IFN0cmluZyYg
d2Vic2l0ZUlkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgZXJyb3JNZXNzYWdlKSBmaW5hbDsKKyAg
ICB2b2lkIHJlc2V0R2VvbG9jYXRpb24oY29uc3QgU3RyaW5nJiB3ZWJzaXRlSWRlbnRpZmllcikg
ZmluYWw7CisjZW5kaWYKIAotICAgIEhhc2hTZXQ8Y29uc3QgSVBDOjpDb25uZWN0aW9uOjpDbGll
bnQqPiBtX3VwZGF0ZVJlcXVlc3RlcnM7Ci0gICAgSGFzaFNldDxjb25zdCBJUEM6OkNvbm5lY3Rp
b246OkNsaWVudCo+IG1faGlnaEFjY3VyYWN5UmVxdWVzdGVyczsKKyAgICBzdHJ1Y3QgUGVyRG9t
YWluRGF0YSB7CisgICAgICAgIFdURl9NQUtFX1NUUlVDVF9GQVNUX0FMTE9DQVRFRDsKKyAgICAg
ICAgSGFzaFNldDxJUEM6OkNvbm5lY3Rpb246OlVuaXF1ZUlEPiB3YXRjaGVyczsKKyAgICAgICAg
SGFzaFNldDxJUEM6OkNvbm5lY3Rpb246OlVuaXF1ZUlEPiB3YXRjaGVyc05lZWRpbmdIaWdoQWNj
dXJhY3k7CisgICAgICAgIHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6R2VvbG9jYXRpb25Qb3NpdGlv
bkRhdGE+IGxhc3RQb3NpdGlvbjsKIAorICAgICAgICAvLyBGSVhNRTogVXNlIGZvciBhbGwgQ29j
b2EgcG9ydHMuCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKKyAgICAgICAgc3RkOjp1bmlxdWVf
cHRyPFdlYkNvcmU6OkNvcmVMb2NhdGlvbkdlb2xvY2F0aW9uUHJvdmlkZXI+IHByb3ZpZGVyOwor
I2VuZGlmCisgICAgfTsKKworICAgIGJvb2wgaXNVcGRhdGluZyhjb25zdCBQZXJEb21haW5EYXRh
JikgY29uc3Q7CisgICAgYm9vbCBpc0hpZ2hBY2N1cmFjeUVuYWJsZWQoY29uc3QgUGVyRG9tYWlu
RGF0YSYpIGNvbnN0OworICAgIHZvaWQgcHJvdmlkZXJTdGFydFVwZGF0aW5nKFBlckRvbWFpbkRh
dGEmLCBjb25zdCBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiYpOworICAgIHZvaWQgcHJvdmlk
ZXJTdG9wVXBkYXRpbmcoUGVyRG9tYWluRGF0YSYpOworICAgIHZvaWQgcHJvdmlkZXJTZXRFbmFi
bGVkSGlnaEFjY3VyYWN5KFBlckRvbWFpbkRhdGEmLCBib29sIGVuYWJsZWQpOworCisgICAgSGFz
aE1hcDxXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiwgc3RkOjp1bmlxdWVfcHRyPFBlckRvbWFp
bkRhdGE+PiBtX3BlckRvbWFpbkRhdGE7CisjaWYgIVBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAg
c3RkOjp1bmlxdWVfcHRyPEFQSTo6R2VvbG9jYXRpb25Qcm92aWRlcj4gbV9wcm92aWRlcjsKLSAg
ICBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6Okdlb2xvY2F0aW9uUG9zaXRpb25EYXRhPiBtX2xhc3RQ
b3NpdGlvbjsKKyNlbmRpZgogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJHZW9sb2NhdGlvbk1hbmFnZXJQcm94eS5tZXNz
YWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkdlb2xvY2F0aW9uTWFuYWdlclBy
b3h5Lm1lc3NhZ2VzLmluCmluZGV4IGU1ZTljMjdkMTRhNWZiNzI2ZmNjMmM4MWZmM2UxNjVlYTNl
ODQwYmUuLjkwNDFhOTBjMjUwZjhhZGQ2OGJiMTNiM2FiYjU0YmViNjZjYjJkMjcgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkdlb2xvY2F0aW9uTWFuYWdlclByb3h5Lm1l
c3NhZ2VzLmluCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkdlb2xvY2F0aW9uTWFu
YWdlclByb3h5Lm1lc3NhZ2VzLmluCkBAIC0yMSw3ICsyMSw3IEBACiAjIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAK
IG1lc3NhZ2VzIC0+IFdlYkdlb2xvY2F0aW9uTWFuYWdlclByb3h5IHsKLSAgICBTdGFydFVwZGF0
aW5nKFdlYktpdDo6V2ViUGFnZVByb3h5SWRlbnRpZmllciBwYWdlUHJveHlJRCwgU3RyaW5nIGF1
dGhvcml6YXRpb25Ub2tlbikgV2FudHNDb25uZWN0aW9uCi0gICAgU3RvcFVwZGF0aW5nKCkgV2Fu
dHNDb25uZWN0aW9uCi0gICAgU2V0RW5hYmxlSGlnaEFjY3VyYWN5KGJvb2wgZW5hYmxlZCkgV2Fu
dHNDb25uZWN0aW9uCisgICAgU3RhcnRVcGRhdGluZyhXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFp
biByZWdpc3RyYWJsZURvbWFpbiwgV2ViS2l0OjpXZWJQYWdlUHJveHlJZGVudGlmaWVyIHBhZ2VQ
cm94eUlELCBTdHJpbmcgYXV0aG9yaXphdGlvblRva2VuLCBib29sIGVuYWJsZUhpZ2hBY2N1cmFj
eSkgV2FudHNDb25uZWN0aW9uCisgICAgU3RvcFVwZGF0aW5nKFdlYkNvcmU6OlJlZ2lzdHJhYmxl
RG9tYWluIHJlZ2lzdHJhYmxlRG9tYWluKSBXYW50c0Nvbm5lY3Rpb24KKyAgICBTZXRFbmFibGVI
aWdoQWNjdXJhY3koV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4gcmVnaXN0cmFibGVEb21haW4s
IGJvb2wgZW5hYmxlZCkgV2FudHNDb25uZWN0aW9uCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9pb3MvV0tHZW9sb2NhdGlvblByb3ZpZGVySU9TLm1tIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvaW9zL1dLR2VvbG9jYXRpb25Qcm92aWRlcklPUy5tbQppbmRleCBmNWU5
ZmQ3YmMzNDEyOTdhZjdiMjRlNjc0MTYzMzJjZDk2YWQ3MzljLi42ZjA2OTZkMzg5NTcyNDg3MmQ0
ZWRjOWE0YTA1OWQ0MjBkZDgxMWNkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9pb3MvV0tHZW9sb2NhdGlvblByb3ZpZGVySU9TLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL2lvcy9XS0dlb2xvY2F0aW9uUHJvdmlkZXJJT1MubW0KQEAgLTUxLDcgKzUxLDYgQEAK
ICNpbXBvcnQgPHd0Zi9VUkwuaD4KIAogLy8gRklYTUU6IFJlbW92ZSB1c2Ugb2YgV2ViS2l0MSBm
cm9tIFdlYktpdDIKLSNpbXBvcnQgPFdlYktpdC9XZWJHZW9sb2NhdGlvbkNvcmVMb2NhdGlvblBy
b3ZpZGVyLmg+CiAjaW1wb3J0IDxXZWJLaXQvV2ViQWxsb3dEZW55UG9saWN5TGlzdGVuZXIuaD4K
IAogQUxMT1dfREVQUkVDQVRFRF9ERUNMQVJBVElPTlNfQkVHSU4KQEAgLTU5LDkgKzU4LDYgQEAg
QUxMT1dfREVQUkVDQVRFRF9ERUNMQVJBVElPTlNfQkVHSU4KIEBpbnRlcmZhY2UgV0tHZW9sb2Nh
dGlvblByb3ZpZGVySU9TIChfV0tHZW9sb2NhdGlvbkNvcmVMb2NhdGlvbkxpc3RlbmVyKSA8X1dL
R2VvbG9jYXRpb25Db3JlTG9jYXRpb25MaXN0ZW5lcj4KIEBlbmQKIAotQGludGVyZmFjZSBXS0xl
Z2FjeUNvcmVMb2NhdGlvblByb3ZpZGVyIDogTlNPYmplY3Q8X1dLR2VvbG9jYXRpb25Db3JlTG9j
YXRpb25Qcm92aWRlciwgV2ViR2VvbG9jYXRpb25Db3JlTG9jYXRpb25VcGRhdGVMaXN0ZW5lcj4K
LUBlbmQKLQogQGludGVyZmFjZSBXS1dlYkFsbG93RGVueVBvbGljeUxpc3RlbmVyIDogTlNPYmpl
Y3Q8V2ViQWxsb3dEZW55UG9saWN5TGlzdGVuZXI+CiAtIChpZClpbml0V2l0aENvbXBsZXRpb25I
YW5kbGVyOihGdW5jdGlvbjx2b2lkKGJvb2wpPiYmKWNvbXBsZXRpb25IYW5kbGVyOwogLSAodm9p
ZClkZW55T25seVRoaXNSZXF1ZXN0IE5PX1JFVFVSTl9EVUVfVE9fQVNTRVJUOwpAQCAtNzksOCAr
NzUsNyBAQCBzdHJ1Y3QgR2VvbG9jYXRpb25SZXF1ZXN0RGF0YSB7CiB9OwogCiBAaW1wbGVtZW50
YXRpb24gV0tHZW9sb2NhdGlvblByb3ZpZGVySU9TIHsKLSAgICBSZWZQdHI8V2ViS2l0OjpXZWJH
ZW9sb2NhdGlvbk1hbmFnZXJQcm94eT4gX2dlb2xvY2F0aW9uTWFuYWdlcjsKLSAgICBSZXRhaW5Q
dHI8aWQgPF9XS0dlb2xvY2F0aW9uQ29yZUxvY2F0aW9uUHJvdmlkZXI+PiBfY29yZUxvY2F0aW9u
UHJvdmlkZXI7CisgICAgUmV0YWluUHRyPGlkIDxfV0tHZW9sb2NhdGlvbkNvcmVMb2NhdGlvblBy
b3ZpZGVyPj4gX2NsaWVudEF1dGhvcml6YXRpb25Qcm92aWRlcjsKICAgICBCT09MIF9pc1dlYkNv
cmVHZW9sb2NhdGlvbkFjdGl2ZTsKICAgICBSZWZQdHI8V2ViS2l0OjpXZWJHZW9sb2NhdGlvblBv
c2l0aW9uPiBfbGFzdEFjdGl2ZVBvc2l0aW9uOwogICAgIERlcXVlPEdlb2xvY2F0aW9uUmVxdWVz
dERhdGE+IF9yZXF1ZXN0c1dhaXRpbmdGb3JDb3JlTG9jYXRpb25BdXRob3JpemF0aW9uOwpAQCAt
ODgsNDggKzgzLDE2IEBAIEBpbXBsZW1lbnRhdGlvbiBXS0dlb2xvY2F0aW9uUHJvdmlkZXJJT1Mg
ewogCiAjcHJhZ21hIG1hcmsgLSBXS0dlb2xvY2F0aW9uUHJvdmlkZXIgY2FsbGJhY2tzIGltcGxl
bWVudGF0aW9uLgogCi1zdGF0aWMgdm9pZCBzdGFydFVwZGF0aW5nQ2FsbGJhY2soV0tHZW9sb2Nh
dGlvbk1hbmFnZXJSZWYgZ2VvbG9jYXRpb25NYW5hZ2VyLCBjb25zdCB2b2lkKiBjbGllbnRJbmZv
KQotewotICAgIFdLR2VvbG9jYXRpb25Qcm92aWRlcklPUyAqZ2VvbG9jYXRpb25Qcm92aWRlciA9
IHJlaW50ZXJwcmV0X2Nhc3Q8V0tHZW9sb2NhdGlvblByb3ZpZGVySU9TKj4oY29uc3RfY2FzdDx2
b2lkKj4oY2xpZW50SW5mbykpOwotICAgIEFTU0VSVChbZ2VvbG9jYXRpb25Qcm92aWRlciBpc0tp
bmRPZkNsYXNzOltXS0dlb2xvY2F0aW9uUHJvdmlkZXJJT1MgY2xhc3NdXSk7Ci0gICAgW2dlb2xv
Y2F0aW9uUHJvdmlkZXIgX3N0YXJ0VXBkYXRpbmddOwotfQotCi1zdGF0aWMgdm9pZCBzdG9wVXBk
YXRpbmdDYWxsYmFjayhXS0dlb2xvY2F0aW9uTWFuYWdlclJlZiBnZW9sb2NhdGlvbk1hbmFnZXIs
IGNvbnN0IHZvaWQqIGNsaWVudEluZm8pCi17Ci0gICAgV0tHZW9sb2NhdGlvblByb3ZpZGVySU9T
ICpnZW9sb2NhdGlvblByb3ZpZGVyID0gcmVpbnRlcnByZXRfY2FzdDxXS0dlb2xvY2F0aW9uUHJv
dmlkZXJJT1MqPihjb25zdF9jYXN0PHZvaWQqPihjbGllbnRJbmZvKSk7Ci0gICAgQVNTRVJUKFtn
ZW9sb2NhdGlvblByb3ZpZGVyIGlzS2luZE9mQ2xhc3M6W1dLR2VvbG9jYXRpb25Qcm92aWRlcklP
UyBjbGFzc11dKTsKLSAgICBbZ2VvbG9jYXRpb25Qcm92aWRlciBfc3RvcFVwZGF0aW5nXTsKLX0K
LQotc3RhdGljIHZvaWQgc2V0RW5hYmxlSGlnaEFjY3VyYWN5KFdLR2VvbG9jYXRpb25NYW5hZ2Vy
UmVmIGdlb2xvY2F0aW9uTWFuYWdlciwgYm9vbCBlbmFibGUsIGNvbnN0IHZvaWQqIGNsaWVudElu
Zm8pCi17Ci0gICAgV0tHZW9sb2NhdGlvblByb3ZpZGVySU9TICpnZW9sb2NhdGlvblByb3ZpZGVy
ID0gcmVpbnRlcnByZXRfY2FzdDxXS0dlb2xvY2F0aW9uUHJvdmlkZXJJT1MqPihjb25zdF9jYXN0
PHZvaWQqPihjbGllbnRJbmZvKSk7Ci0gICAgQVNTRVJUKFtnZW9sb2NhdGlvblByb3ZpZGVyIGlz
S2luZE9mQ2xhc3M6W1dLR2VvbG9jYXRpb25Qcm92aWRlcklPUyBjbGFzc11dKTsKLSAgICBbZ2Vv
bG9jYXRpb25Qcm92aWRlciBfc2V0RW5hYmxlSGlnaEFjY3VyYWN5OmVuYWJsZV07Ci19Ci0KIC0g
KHZvaWQpX3N0YXJ0VXBkYXRpbmcKIHsKLSAgICBfaXNXZWJDb3JlR2VvbG9jYXRpb25BY3RpdmUg
PSBZRVM7Ci0gICAgW19jb3JlTG9jYXRpb25Qcm92aWRlciBzdGFydF07Ci0KLSAgICAvLyBJZiB3
ZSBoYXZlIHRoZSBsYXN0IHBvc2l0aW9uLCBpdCBpcyBmcm9tIHRoZSBpbml0aWFsaXphdGlvbiBv
ciB3YXJtIHVwLiBJdCBpcyB0aGUgbGFzdCBrbm93bgotICAgIC8vIGdvb2QgcG9zaXRpb24gc28g
d2UgY2FuIHJldHVybiBpdCBkaXJlY3RseS4KLSAgICBpZiAoX2xhc3RBY3RpdmVQb3NpdGlvbikK
LSAgICAgICAgX2dlb2xvY2F0aW9uTWFuYWdlci0+cHJvdmlkZXJEaWRDaGFuZ2VQb3NpdGlvbihf
bGFzdEFjdGl2ZVBvc2l0aW9uLmdldCgpKTsKIH0KIAogLSAodm9pZClfc3RvcFVwZGF0aW5nCiB7
Ci0gICAgX2lzV2ViQ29yZUdlb2xvY2F0aW9uQWN0aXZlID0gTk87Ci0gICAgW19jb3JlTG9jYXRp
b25Qcm92aWRlciBzdG9wXTsKLSAgICBfbGFzdEFjdGl2ZVBvc2l0aW9uID0gbnVsbHB0cjsKIH0K
IAogLSAodm9pZClfc2V0RW5hYmxlSGlnaEFjY3VyYWN5OihCT09MKWVuYWJsZUhpZ2hBY2N1cmFj
eQogewotICAgIFtfY29yZUxvY2F0aW9uUHJvdmlkZXIgc2V0RW5hYmxlSGlnaEFjY3VyYWN5OmVu
YWJsZUhpZ2hBY2N1cmFjeV07CiB9CiAKICNwcmFnbWEgbWFyayAtIFB1YmxpYyBBUEkgaW1wbGVt
ZW50YXRpb24uCkBAIC0xNDYsMjUgKzEwOSwzMyBAQCAtIChpZClpbml0V2l0aFByb2Nlc3NQb29s
OihXZWJLaXQ6OldlYlByb2Nlc3NQb29sJilwcm9jZXNzUG9vbAogICAgIHNlbGYgPSBbc3VwZXIg
aW5pdF07CiAgICAgaWYgKCFzZWxmKQogICAgICAgICByZXR1cm4gbmlsOwotICAgIF9nZW9sb2Nh
dGlvbk1hbmFnZXIgPSBwcm9jZXNzUG9vbC5zdXBwbGVtZW50PFdlYktpdDo6V2ViR2VvbG9jYXRp
b25NYW5hZ2VyUHJveHk+KCk7Ci0gICAgV0tHZW9sb2NhdGlvblByb3ZpZGVyVjEgcHJvdmlkZXJD
YWxsYmFjayA9IHsKLSAgICAgICAgeyAxLCBzZWxmIH0sCi0gICAgICAgIHN0YXJ0VXBkYXRpbmdD
YWxsYmFjaywKLSAgICAgICAgc3RvcFVwZGF0aW5nQ2FsbGJhY2ssCi0gICAgICAgIHNldEVuYWJs
ZUhpZ2hBY2N1cmFjeQotICAgIH07Ci0gICAgV0tHZW9sb2NhdGlvbk1hbmFnZXJTZXRQcm92aWRl
cih0b0FQSShfZ2VvbG9jYXRpb25NYW5hZ2VyLmdldCgpKSwgJnByb3ZpZGVyQ2FsbGJhY2suYmFz
ZSk7Ci0gICAgX2NvcmVMb2NhdGlvblByb3ZpZGVyID0gd3JhcHBlcihwcm9jZXNzUG9vbCkuX2Nv
cmVMb2NhdGlvblByb3ZpZGVyID86IGFkb3B0TlMoc3RhdGljX2Nhc3Q8aWQgPF9XS0dlb2xvY2F0
aW9uQ29yZUxvY2F0aW9uUHJvdmlkZXI+PihbW1dLTGVnYWN5Q29yZUxvY2F0aW9uUHJvdmlkZXIg
YWxsb2NdIGluaXRdKSk7Ci0gICAgW19jb3JlTG9jYXRpb25Qcm92aWRlciBzZXRMaXN0ZW5lcjpz
ZWxmXTsKKworICAgIC8vIEZJWE1FOiBTb21lIGNsaWVudHMgdXNlIHRoaXMgU1BJIHRvIHNldCBh
IF9jb3JlTG9jYXRpb25Qcm92aWRlciB0aGF0IGZhaWxzIGFsbCBhdXRob3JpemF0aW9ucyBhcyBh
IHdheSB0byBkaXNhYmxlIHRoZSBHZW9sb2NhdGlvbiBBUEkuCisgICAgLy8gVGhleSBzaG91bGQg
anVzdCBpbXBsZW1lbnQgcmVxdWVzdEdlb2xvY2F0aW9uQXV0aG9yaXphdGlvbkZvclVSTCBvbiB0
aGUgV0tXZWJWaWV3IGluc3RlYWQsIHNvIHdlIGNhbiBkcm9wIHRoaXMgbG9naWMgZW50aXJlbHku
CisgICAgX2NsaWVudEF1dGhvcml6YXRpb25Qcm92aWRlciA9IHdyYXBwZXIocHJvY2Vzc1Bvb2wp
Ll9jb3JlTG9jYXRpb25Qcm92aWRlcjsKKyAgICBpZiAoX2NsaWVudEF1dGhvcml6YXRpb25Qcm92
aWRlcikKKyAgICAgICAgW19jbGllbnRBdXRob3JpemF0aW9uUHJvdmlkZXIgc2V0TGlzdGVuZXI6
c2VsZl07CisKICAgICByZXR1cm4gc2VsZjsKIH0KIAogLSAodm9pZClkZWNpZGVQb2xpY3lGb3JH
ZW9sb2NhdGlvblJlcXVlc3RGcm9tT3JpZ2luOihXZWJLaXQ6OkZyYW1lSW5mb0RhdGEmJilmcmFt
ZUluZm8gY29tcGxldGlvbkhhbmRsZXI6KEZ1bmN0aW9uPHZvaWQoYm9vbCk+JiYpY29tcGxldGlv
bkhhbmRsZXIgdmlldzooV0tXZWJWaWV3ICopY29udGVudFZpZXcKIHsKLSAgICAvLyBTdGVwIDE6
IGFzayB0aGUgdXNlciBpZiB0aGUgYXBwIGNhbiB1c2UgR2VvbG9jYXRpb24uCisgICAgV2ViQ29y
ZTo6UmVnaXN0cmFibGVEb21haW4gcmVnaXN0cmFibGVEb21haW4oZnJhbWVJbmZvLnNlY3VyaXR5
T3JpZ2luKTsKICAgICBHZW9sb2NhdGlvblJlcXVlc3REYXRhIGdlb2xvY2F0aW9uUmVxdWVzdERh
dGEgeyBbY29udGVudFZpZXcgVVJMXSwgV1RGTW92ZShmcmFtZUluZm8pLCBXVEZNb3ZlKGNvbXBs
ZXRpb25IYW5kbGVyKSwgY29udGVudFZpZXcgfTsKICAgICBfcmVxdWVzdHNXYWl0aW5nRm9yQ29y
ZUxvY2F0aW9uQXV0aG9yaXphdGlvbi5hcHBlbmQoV1RGTW92ZShnZW9sb2NhdGlvblJlcXVlc3RE
YXRhKSk7Ci0gICAgW19jb3JlTG9jYXRpb25Qcm92aWRlciByZXF1ZXN0R2VvbG9jYXRpb25BdXRo
b3JpemF0aW9uXTsKKyAgICBpZiAoX2NsaWVudEF1dGhvcml6YXRpb25Qcm92aWRlcikgeworICAg
ICAgICAvLyBTdGVwIDE6IGFzayB0aGUgdXNlciBpZiB0aGUgYXBwIGNhbiB1c2UgR2VvbG9jYXRp
b24uCisgICAgICAgIFtfY2xpZW50QXV0aG9yaXphdGlvblByb3ZpZGVyIHJlcXVlc3RHZW9sb2Nh
dGlvbkF1dGhvcml6YXRpb25dOworICAgIH0gZWxzZSB7CisgICAgICAgIC8vIFN0ZXAgMTogYXNr
IENvcmVMb2NhdGlvbiBpZiB0aGUgYXBwIGNhbiB1c2UgR2VvbG9jYXRpb24uCisgICAgICAgIFdl
YkNvcmU6OkNvcmVMb2NhdGlvbkdlb2xvY2F0aW9uUHJvdmlkZXI6OnJlcXVlc3RBdXRob3JpemF0
aW9uKHJlZ2lzdHJhYmxlRG9tYWluLCBbc2VsZiwgc3Ryb25nU2VsZiA9IHJldGFpblB0cihzZWxm
KV0oYm9vbCBhdXRob3JpemVkKSB7CisgICAgICAgICAgICBpZiAoYXV0aG9yaXplZCkKKyAgICAg
ICAgICAgICAgICBbc2VsZiBnZW9sb2NhdGlvbkF1dGhvcml6YXRpb25HcmFudGVkXTsKKyAgICAg
ICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICBbc2VsZiBnZW9sb2NhdGlvbkF1dGhvcml6YXRp
b25EZW5pZWRdOworICAgICAgICB9KTsKKyAgICB9CiB9CiBAZW5kCiAKQEAgLTE3NCw3ICsxNDUs
NyBAQCBAaW1wbGVtZW50YXRpb24gV0tHZW9sb2NhdGlvblByb3ZpZGVySU9TIChXZWJHZW9sb2Nh
dGlvbkNvcmVMb2NhdGlvblVwZGF0ZUxpc3RlbgogCiAtICh2b2lkKWdlb2xvY2F0aW9uQXV0aG9y
aXphdGlvbkdyYW50ZWQKIHsKLSAgICAvLyBTdGVwIDI6IGFzayB0aGUgdXNlciBpZiB0aGlzIHBh
cnRpY3VsYXIgcGFnZSBjYW4gdXNlIGdlbG9jYXRpb24uCisgICAgLy8gU3RlcCAyOiBhc2sgdGhl
IHVzZXIgaWYgdGhpcyBwYXJ0aWN1bGFyIHBhZ2UgY2FuIHVzZSBnZW9sb2NhdGlvbi4KICAgICBp
ZiAoX3JlcXVlc3RzV2FpdGluZ0ZvckNvcmVMb2NhdGlvbkF1dGhvcml6YXRpb24uaXNFbXB0eSgp
KQogICAgICAgICByZXR1cm47CiAKQEAgLTIxMCw5MyArMTgxLDE0IEBAIC0gKHZvaWQpZ2VvbG9j
YXRpb25BdXRob3JpemF0aW9uRGVuaWVkCiAKIC0gKHZvaWQpcG9zaXRpb25DaGFuZ2VkOihfV0tH
ZW9sb2NhdGlvblBvc2l0aW9uICopcG9zaXRpb24KIHsKLSAgICBfbGFzdEFjdGl2ZVBvc2l0aW9u
ID0gcG9zaXRpb24tPl9nZW9sb2NhdGlvblBvc2l0aW9uLmdldCgpOwotICAgIF9nZW9sb2NhdGlv
bk1hbmFnZXItPnByb3ZpZGVyRGlkQ2hhbmdlUG9zaXRpb24oX2xhc3RBY3RpdmVQb3NpdGlvbi5n
ZXQoKSk7Ci19Ci0KLS0gKHZvaWQpZXJyb3JPY2N1cnJlZDooTlNTdHJpbmcgKillcnJvck1lc3Nh
Z2UKLXsKLSAgICBfZ2VvbG9jYXRpb25NYW5hZ2VyLT5wcm92aWRlckRpZEZhaWxUb0RldGVybWlu
ZVBvc2l0aW9uKGVycm9yTWVzc2FnZSk7Ci19Ci0KLS0gKHZvaWQpcmVzZXRHZW9sb2NhdGlvbgot
ewotICAgIF9nZW9sb2NhdGlvbk1hbmFnZXItPnJlc2V0UGVybWlzc2lvbnMoKTsKLX0KLQotQGVu
ZAotCi0jIHByYWdtYSBtYXJrIC0gSW1wbGVtZW50YXRpb24gb2YgV0tMZWdhY3lDb3JlTG9jYXRp
b25Qcm92aWRlcgotCi1AaW1wbGVtZW50YXRpb24gV0tMZWdhY3lDb3JlTG9jYXRpb25Qcm92aWRl
ciB7Ci0gICAgaWQgPF9XS0dlb2xvY2F0aW9uQ29yZUxvY2F0aW9uTGlzdGVuZXI+IF9saXN0ZW5l
cjsKLSAgICBSZXRhaW5QdHI8V2ViR2VvbG9jYXRpb25Db3JlTG9jYXRpb25Qcm92aWRlcj4gX3By
b3ZpZGVyOwotfQotCi0vLyA8X1dLR2VvbG9jYXRpb25Db3JlTG9jYXRpb25Qcm92aWRlcj4gTWV0
aG9kcwotCi0tICh2b2lkKXNldExpc3RlbmVyOihpZDxfV0tHZW9sb2NhdGlvbkNvcmVMb2NhdGlv
bkxpc3RlbmVyPilsaXN0ZW5lcgotewotICAgIEFTU0VSVChsaXN0ZW5lciAmJiAhX2xpc3RlbmVy
ICYmICFfcHJvdmlkZXIpOwotICAgIF9saXN0ZW5lciA9IGxpc3RlbmVyOwotICAgIF9wcm92aWRl
ciA9IGFkb3B0TlMoW1tXZWJHZW9sb2NhdGlvbkNvcmVMb2NhdGlvblByb3ZpZGVyIGFsbG9jXSBp
bml0V2l0aExpc3RlbmVyOnNlbGZdKTsKLX0KLQotLSAodm9pZClyZXF1ZXN0R2VvbG9jYXRpb25B
dXRob3JpemF0aW9uCi17Ci0gICAgQVNTRVJUKF9wcm92aWRlcik7Ci0gICAgW19wcm92aWRlciBy
ZXF1ZXN0R2VvbG9jYXRpb25BdXRob3JpemF0aW9uXTsKLX0KLQotLSAodm9pZClzdGFydAotewot
ICAgIEFTU0VSVChfcHJvdmlkZXIpOwotICAgIFtfcHJvdmlkZXIgc3RhcnRdOwotfQotCi0tICh2
b2lkKXN0b3AKLXsKLSAgICBBU1NFUlQoX3Byb3ZpZGVyKTsKLSAgICBbX3Byb3ZpZGVyIHN0b3Bd
OwotfQotCi0tICh2b2lkKXNldEVuYWJsZUhpZ2hBY2N1cmFjeTooQk9PTClmbGFnCi17Ci0gICAg
QVNTRVJUKF9wcm92aWRlcik7Ci0gICAgW19wcm92aWRlciBzZXRFbmFibGVIaWdoQWNjdXJhY3k6
ZmxhZ107Ci19Ci0KLS8vIDxXZWJHZW9sb2NhdGlvbkNvcmVMb2NhdGlvblVwZGF0ZUxpc3RlbmVy
PiBNZXRob2RzCi0KLS0gKHZvaWQpZ2VvbG9jYXRpb25BdXRob3JpemF0aW9uR3JhbnRlZAotewot
ICAgIEFTU0VSVChfbGlzdGVuZXIpOwotICAgIFtfbGlzdGVuZXIgZ2VvbG9jYXRpb25BdXRob3Jp
emF0aW9uR3JhbnRlZF07Ci19Ci0KLS0gKHZvaWQpZ2VvbG9jYXRpb25BdXRob3JpemF0aW9uRGVu
aWVkCi17Ci0gICAgQVNTRVJUKF9saXN0ZW5lcik7Ci0gICAgW19saXN0ZW5lciBnZW9sb2NhdGlv
bkF1dGhvcml6YXRpb25EZW5pZWRdOwotfQotCi0tICh2b2lkKXBvc2l0aW9uQ2hhbmdlZDooV2Vi
Q29yZTo6R2VvbG9jYXRpb25Qb3NpdGlvbkRhdGEmJiljb3JlUG9zaXRpb24KLXsKLSAgICBBU1NF
UlQoX2xpc3RlbmVyKTsKLSAgICBhdXRvIHBvc2l0aW9uID0gV2ViS2l0OjpXZWJHZW9sb2NhdGlv
blBvc2l0aW9uOjpjcmVhdGUoV1RGTW92ZShjb3JlUG9zaXRpb24pKTsKLSAgICBbX2xpc3RlbmVy
IHBvc2l0aW9uQ2hhbmdlZDp3cmFwcGVyKHBvc2l0aW9uLmdldCgpKV07CiB9CiAKIC0gKHZvaWQp
ZXJyb3JPY2N1cnJlZDooTlNTdHJpbmcgKillcnJvck1lc3NhZ2UKIHsKLSAgICBBU1NFUlQoX2xp
c3RlbmVyKTsKLSAgICBbX2xpc3RlbmVyIGVycm9yT2NjdXJyZWQ6ZXJyb3JNZXNzYWdlXTsKIH0K
IAogLSAodm9pZClyZXNldEdlb2xvY2F0aW9uCiB7Ci0gICAgQVNTRVJUKF9saXN0ZW5lcik7Ci0g
ICAgW19saXN0ZW5lciByZXNldEdlb2xvY2F0aW9uXTsKIH0KIAogQGVuZApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9X
ZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggZjdiZWU1NDNjZTBm
YzBhYzA2ZDc2ODUxZWUyMTdkZjdhZDg0MDBiOS4uYzUzZTA0MTJiYjhjMTQyYWQ1N2U4YjMyOWEw
YzZkNjg5MWQ3NmI0YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qCkBAIC00MzE2LDYgKzQzMTYsNyBAQAogCQk0NkNFM0IxMDIzRDhDODNEMDAx
NkE5NkEgLyogV2ViQmFja0ZvcndhcmRMaXN0Q291bnRzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IFdlYkJhY2tGb3J3YXJkTGlzdENvdW50cy5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQk0NkQ0OEZDQzI3OTlEN0REMDA3RDIwMTQgLyogV2ViU2hhcmVkV29ya2Vy
U2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbi5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXZWJTaGFy
ZWRXb3JrZXJTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uLmNwcDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJNDZENDhGQ0QyNzk5RDdERTAwN0QyMDE0IC8qIFdlYlNoYXJlZFdvcmtlclNl
cnZlclRvQ29udGV4dENvbm5lY3Rpb24uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2ViU2hhcmVkV29ya2Vy
U2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owor
CQk0NkRBMjg1NzI3QjczRTc2MDA4OUQzMzkgLyogV2ViR2VvbG9jYXRpb25NYW5hZ2VyUHJveHlD
b2NvYS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXZWJHZW9sb2NhdGlvbk1hbmFnZXJQcm94eUNv
Y29hLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDZERjA2MzkxRjM5MDVFNTAw
MTk4MEJCIC8qIE5ldHdvcmtDT1JTUHJlZmxpZ2h0Q2hlY2tlci5jcHAgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBOZXR3b3JrQ09SU1ByZWZsaWdodENoZWNrZXIuY3BwOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0NkRGMDYzQTFGMzkwNUU1MDAxOTgwQkIgLyog
TmV0d29ya0NPUlNQcmVmbGlnaHRDaGVja2VyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IE5ldHdvcmtDT1JTUHJlZmxpZ2h0Q2hlY2tlci5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQk0NkU5NzYwQTI3NTdGNkM5MDBBQ0REMzcgLyogV2ViQnJvYWRjYXN0Q2hhbm5l
bFJlZ2lzdHJ5Lm1lc3NhZ2VzLmluICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IFdlYkJyb2FkY2Fz
dENoYW5uZWxSZWdpc3RyeS5tZXNzYWdlcy5pbjsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
QEAgLTc2MDMsNiArNzYwNCw3IEBACiAJCQkJNTJENUExQUExQzU3NDk0RTAwREUzNEEzIC8qIFZp
ZGVvRnVsbHNjcmVlbk1hbmFnZXJQcm94eS5oICovLAogCQkJCTUyRDVBMUFCMUM1NzQ5NEUwMERF
MzRBMyAvKiBWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyUHJveHkubWVzc2FnZXMuaW4gKi8sCiAJCQkJ
NTJENUExQUMxQzU3NDk0RTAwREUzNEEzIC8qIFZpZGVvRnVsbHNjcmVlbk1hbmFnZXJQcm94eS5t
bSAqLywKKwkJCQk0NkRBMjg1NzI3QjczRTc2MDA4OUQzMzkgLyogV2ViR2VvbG9jYXRpb25NYW5h
Z2VyUHJveHlDb2NvYS5jcHAgKi8sCiAJCQkJQzE4RjNBMTMyNTYzMzJBNjAwNzk3RTY2IC8qIFdl
Ykluc3BlY3RvclByZWZlcmVuY2VPYnNlcnZlci5oICovLAogCQkJCUMxOEYzQTE0MjU2MzMzNDMw
MDc5N0U2NiAvKiBXZWJJbnNwZWN0b3JQcmVmZXJlbmNlT2JzZXJ2ZXIubW0gKi8sCiAJCQkJQ0RG
MUI5MTkyNjcwMjFENjAwMDdFQzEwIC8qIFdlYktpdFN3aWZ0U29mdExpbmsuaCAqLywKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HZW9sb2NhdGlvbi9XZWJHZW9sb2NhdGlv
bk1hbmFnZXIuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dlb2xvY2F0aW9uL1dlYkdl
b2xvY2F0aW9uTWFuYWdlci5jcHAKaW5kZXggNWE5YzlmNGQyYTFjZDY2YTRiNjc1OWI1OTM4N2Vh
MmNmNTViMmFhOC4uNmNiN2E4MmRjN2IzZjMwZDdjMjY5ZjdjZTNkZDI0Mzg2MWU3ZTZiZCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dlb2xvY2F0aW9uL1dlYkdlb2xvY2F0
aW9uTWFuYWdlci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dlb2xvY2F0aW9u
L1dlYkdlb2xvY2F0aW9uTWFuYWdlci5jcHAKQEAgLTM5LDYgKzM5LDE0IEBACiBuYW1lc3BhY2Ug
V2ViS2l0IHsKIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCitzdGF0aWMgUmVnaXN0cmFibGVE
b21haW4gcmVnaXN0cmFibGVEb21haW5Gb3JQYWdlKFdlYlBhZ2UmIHBhZ2UpCit7CisgICAgYXV0
byogZG9jdW1lbnQgPSBwYWdlLmNvcmVQYWdlKCkgPyBwYWdlLmNvcmVQYWdlKCktPm1haW5GcmFt
ZSgpLmRvY3VtZW50KCkgOiBudWxscHRyOworICAgIGlmICghZG9jdW1lbnQpCisgICAgICAgIHJl
dHVybiBSZWdpc3RyYWJsZURvbWFpbiB7IH07CisgICAgcmV0dXJuIFJlZ2lzdHJhYmxlRG9tYWlu
IHsgZG9jdW1lbnQtPnVybCgpIH07Cit9CisKIGNvbnN0IGNoYXIqIFdlYkdlb2xvY2F0aW9uTWFu
YWdlcjo6c3VwcGxlbWVudE5hbWUoKQogewogICAgIHJldHVybiAiV2ViR2VvbG9jYXRpb25NYW5h
Z2VyIjsKQEAgLTUwLDg4ICs1OCwxMjUgQEAgV2ViR2VvbG9jYXRpb25NYW5hZ2VyOjpXZWJHZW9s
b2NhdGlvbk1hbmFnZXIoV2ViUHJvY2VzcyYgcHJvY2VzcykKICAgICBtX3Byb2Nlc3MuYWRkTWVz
c2FnZVJlY2VpdmVyKE1lc3NhZ2VzOjpXZWJHZW9sb2NhdGlvbk1hbmFnZXI6Om1lc3NhZ2VSZWNl
aXZlck5hbWUoKSwgKnRoaXMpOwogfQogCi12b2lkIFdlYkdlb2xvY2F0aW9uTWFuYWdlcjo6cmVn
aXN0ZXJXZWJQYWdlKFdlYlBhZ2UmIHBhZ2UsIGNvbnN0IFN0cmluZyYgYXV0aG9yaXphdGlvblRv
a2VuKQorV2ViR2VvbG9jYXRpb25NYW5hZ2VyOjp+V2ViR2VvbG9jYXRpb25NYW5hZ2VyKCkgPSBk
ZWZhdWx0OworCit2b2lkIFdlYkdlb2xvY2F0aW9uTWFuYWdlcjo6cmVnaXN0ZXJXZWJQYWdlKFdl
YlBhZ2UmIHBhZ2UsIGNvbnN0IFN0cmluZyYgYXV0aG9yaXphdGlvblRva2VuLCBib29sIG5lZWRz
SGlnaEFjY3VyYWN5KQogewotICAgIGJvb2wgd2FzVXBkYXRpbmcgPSBpc1VwZGF0aW5nKCk7Cisg
ICAgYXV0byByZWdpc3RyYWJsZURvbWFpbiA9IHJlZ2lzdHJhYmxlRG9tYWluRm9yUGFnZShwYWdl
KTsKKyAgICBpZiAocmVnaXN0cmFibGVEb21haW4uc3RyaW5nKCkuaXNFbXB0eSgpKQorICAgICAg
ICByZXR1cm47CisKKyAgICBhdXRvJiBwYWdlU2V0cyA9IG1fcGFnZVNldHMuZW5zdXJlKHJlZ2lz
dHJhYmxlRG9tYWluLCBbXSB7CisgICAgICAgIHJldHVybiBQYWdlU2V0cyB7IH07CisgICAgfSku
aXRlcmF0b3ItPnZhbHVlOworICAgIGJvb2wgd2FzVXBkYXRpbmcgPSAhcGFnZVNldHMucGFnZVNl
dC5jb21wdXRlc0VtcHR5KCk7CiAKLSAgICBtX3BhZ2VTZXQuYWRkKHBhZ2UpOworICAgIHBhZ2VT
ZXRzLnBhZ2VTZXQuYWRkKHBhZ2UpOworICAgIGlmIChuZWVkc0hpZ2hBY2N1cmFjeSkKKyAgICAg
ICAgcGFnZVNldHMuaGlnaEFjY3VyYWN5UGFnZVNldC5hZGQocGFnZSk7CisgICAgbV9wYWdlVG9S
ZWdpc3RyYWJsZURvbWFpbi5hZGQoJnBhZ2UsIHJlZ2lzdHJhYmxlRG9tYWluKTsKIAogICAgIGlm
ICghd2FzVXBkYXRpbmcpCi0gICAgICAgIG1fcHJvY2Vzcy5wYXJlbnRQcm9jZXNzQ29ubmVjdGlv
bigpLT5zZW5kKE1lc3NhZ2VzOjpXZWJHZW9sb2NhdGlvbk1hbmFnZXJQcm94eTo6U3RhcnRVcGRh
dGluZyhwYWdlLndlYlBhZ2VQcm94eUlkZW50aWZpZXIoKSwgYXV0aG9yaXphdGlvblRva2VuKSwg
MCk7CisgICAgICAgIG1fcHJvY2Vzcy5wYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpLT5zZW5kKE1l
c3NhZ2VzOjpXZWJHZW9sb2NhdGlvbk1hbmFnZXJQcm94eTo6U3RhcnRVcGRhdGluZyhyZWdpc3Ry
YWJsZURvbWFpbiwgcGFnZS53ZWJQYWdlUHJveHlJZGVudGlmaWVyKCksIGF1dGhvcml6YXRpb25U
b2tlbiwgbmVlZHNIaWdoQWNjdXJhY3kpLCAwKTsKIH0KIAogdm9pZCBXZWJHZW9sb2NhdGlvbk1h
bmFnZXI6OnVucmVnaXN0ZXJXZWJQYWdlKFdlYlBhZ2UmIHBhZ2UpCiB7Ci0gICAgYm9vbCBoaWdo
QWNjdXJhY3lXYXNFbmFibGVkID0gaXNIaWdoQWNjdXJhY3lFbmFibGVkKCk7CisgICAgYXV0byBy
ZWdpc3RyYWJsZURvbWFpbiA9IG1fcGFnZVRvUmVnaXN0cmFibGVEb21haW4udGFrZSgmcGFnZSk7
CisgICAgaWYgKHJlZ2lzdHJhYmxlRG9tYWluLnN0cmluZygpLmlzRW1wdHkoKSkKKyAgICAgICAg
cmV0dXJuOwogCi0gICAgbV9wYWdlU2V0LnJlbW92ZShwYWdlKTsKLSAgICBtX2hpZ2hBY2N1cmFj
eVBhZ2VTZXQucmVtb3ZlKHBhZ2UpOworICAgIGF1dG8gaXQgPSBtX3BhZ2VTZXRzLmZpbmQocmVn
aXN0cmFibGVEb21haW4pOworICAgIGlmIChpdCA9PSBtX3BhZ2VTZXRzLmVuZCgpKQorICAgICAg
ICByZXR1cm47CiAKLSAgICBpZiAoIWlzVXBkYXRpbmcoKSkKLSAgICAgICAgbV9wcm9jZXNzLnBh
cmVudFByb2Nlc3NDb25uZWN0aW9uKCktPnNlbmQoTWVzc2FnZXM6OldlYkdlb2xvY2F0aW9uTWFu
YWdlclByb3h5OjpTdG9wVXBkYXRpbmcoKSwgMCk7CisgICAgYXV0byYgcGFnZVNldHMgPSBpdC0+
dmFsdWU7CisgICAgYm9vbCBoaWdoQWNjdXJhY3lXYXNFbmFibGVkID0gIXBhZ2VTZXRzLmhpZ2hB
Y2N1cmFjeVBhZ2VTZXQuY29tcHV0ZXNFbXB0eSgpOworCisgICAgcGFnZVNldHMucGFnZVNldC5y
ZW1vdmUocGFnZSk7CisgICAgcGFnZVNldHMuaGlnaEFjY3VyYWN5UGFnZVNldC5yZW1vdmUocGFn
ZSk7CisKKyAgICBpZiAocGFnZVNldHMucGFnZVNldC5jb21wdXRlc0VtcHR5KCkpCisgICAgICAg
IG1fcHJvY2Vzcy5wYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpLT5zZW5kKE1lc3NhZ2VzOjpXZWJH
ZW9sb2NhdGlvbk1hbmFnZXJQcm94eTo6U3RvcFVwZGF0aW5nKHJlZ2lzdHJhYmxlRG9tYWluKSwg
MCk7CiAgICAgZWxzZSB7Ci0gICAgICAgIGJvb2wgaGlnaEFjY3VyYWN5U2hvdWxkQmVFbmFibGVk
ID0gaXNIaWdoQWNjdXJhY3lFbmFibGVkKCk7CisgICAgICAgIGJvb2wgaGlnaEFjY3VyYWN5U2hv
dWxkQmVFbmFibGVkID0gIXBhZ2VTZXRzLmhpZ2hBY2N1cmFjeVBhZ2VTZXQuY29tcHV0ZXNFbXB0
eSgpOwogICAgICAgICBpZiAoaGlnaEFjY3VyYWN5V2FzRW5hYmxlZCAhPSBoaWdoQWNjdXJhY3lT
aG91bGRCZUVuYWJsZWQpCi0gICAgICAgICAgICBtX3Byb2Nlc3MucGFyZW50UHJvY2Vzc0Nvbm5l
Y3Rpb24oKS0+c2VuZChNZXNzYWdlczo6V2ViR2VvbG9jYXRpb25NYW5hZ2VyUHJveHk6OlNldEVu
YWJsZUhpZ2hBY2N1cmFjeShoaWdoQWNjdXJhY3lTaG91bGRCZUVuYWJsZWQpLCAwKTsKKyAgICAg
ICAgICAgIG1fcHJvY2Vzcy5wYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpLT5zZW5kKE1lc3NhZ2Vz
OjpXZWJHZW9sb2NhdGlvbk1hbmFnZXJQcm94eTo6U2V0RW5hYmxlSGlnaEFjY3VyYWN5KHJlZ2lz
dHJhYmxlRG9tYWluLCBoaWdoQWNjdXJhY3lTaG91bGRCZUVuYWJsZWQpLCAwKTsKICAgICB9CisK
KyAgICBpZiAocGFnZVNldHMucGFnZVNldC5jb21wdXRlc0VtcHR5KCkgJiYgcGFnZVNldHMuaGln
aEFjY3VyYWN5UGFnZVNldC5jb21wdXRlc0VtcHR5KCkpCisgICAgICAgIG1fcGFnZVNldHMucmVt
b3ZlKGl0KTsKIH0KIAogdm9pZCBXZWJHZW9sb2NhdGlvbk1hbmFnZXI6OnNldEVuYWJsZUhpZ2hB
Y2N1cmFjeUZvclBhZ2UoV2ViUGFnZSYgcGFnZSwgYm9vbCBlbmFibGVkKQogewotICAgIGJvb2wg
aGlnaEFjY3VyYWN5V2FzRW5hYmxlZCA9IGlzSGlnaEFjY3VyYWN5RW5hYmxlZCgpOworICAgIGF1
dG8gcmVnaXN0cmFibGVEb21haW4gPSBtX3BhZ2VUb1JlZ2lzdHJhYmxlRG9tYWluLmdldCgmcGFn
ZSk7CisgICAgaWYgKHJlZ2lzdHJhYmxlRG9tYWluLnN0cmluZygpLmlzRW1wdHkoKSkKKyAgICAg
ICAgcmV0dXJuOworCisgICAgYXV0byBpdCA9IG1fcGFnZVNldHMuZmluZChyZWdpc3RyYWJsZURv
bWFpbik7CisgICAgQVNTRVJUKGl0ICE9IG1fcGFnZVNldHMuZW5kKCkpOworICAgIGlmIChpdCA9
PSBtX3BhZ2VTZXRzLmVuZCgpKQorICAgICAgICByZXR1cm47CisKKyAgICBhdXRvJiBwYWdlU2V0
cyA9IGl0LT52YWx1ZTsKKyAgICBib29sIGhpZ2hBY2N1cmFjeVdhc0VuYWJsZWQgPSAhcGFnZVNl
dHMuaGlnaEFjY3VyYWN5UGFnZVNldC5jb21wdXRlc0VtcHR5KCk7CiAKICAgICBpZiAoZW5hYmxl
ZCkKLSAgICAgICAgbV9oaWdoQWNjdXJhY3lQYWdlU2V0LmFkZChwYWdlKTsKKyAgICAgICAgcGFn
ZVNldHMuaGlnaEFjY3VyYWN5UGFnZVNldC5hZGQocGFnZSk7CiAgICAgZWxzZQotICAgICAgICBt
X2hpZ2hBY2N1cmFjeVBhZ2VTZXQucmVtb3ZlKHBhZ2UpOworICAgICAgICBwYWdlU2V0cy5oaWdo
QWNjdXJhY3lQYWdlU2V0LnJlbW92ZShwYWdlKTsKIAotICAgIGJvb2wgaGlnaEFjY3VyYWN5U2hv
dWxkQmVFbmFibGVkID0gaXNIaWdoQWNjdXJhY3lFbmFibGVkKCk7CisgICAgYm9vbCBoaWdoQWNj
dXJhY3lTaG91bGRCZUVuYWJsZWQgPSAhcGFnZVNldHMuaGlnaEFjY3VyYWN5UGFnZVNldC5jb21w
dXRlc0VtcHR5KCk7CiAgICAgaWYgKGhpZ2hBY2N1cmFjeVdhc0VuYWJsZWQgIT0gaGlnaEFjY3Vy
YWN5U2hvdWxkQmVFbmFibGVkKQotICAgICAgICBtX3Byb2Nlc3MucGFyZW50UHJvY2Vzc0Nvbm5l
Y3Rpb24oKS0+c2VuZChNZXNzYWdlczo6V2ViR2VvbG9jYXRpb25NYW5hZ2VyUHJveHk6OlNldEVu
YWJsZUhpZ2hBY2N1cmFjeShoaWdoQWNjdXJhY3lTaG91bGRCZUVuYWJsZWQpLCAwKTsKKyAgICAg
ICAgbV9wcm9jZXNzLnBhcmVudFByb2Nlc3NDb25uZWN0aW9uKCktPnNlbmQoTWVzc2FnZXM6Oldl
Ykdlb2xvY2F0aW9uTWFuYWdlclByb3h5OjpTZXRFbmFibGVIaWdoQWNjdXJhY3kocmVnaXN0cmFi
bGVEb21haW4sIGhpZ2hBY2N1cmFjeVNob3VsZEJlRW5hYmxlZCksIDApOwogfQogCi12b2lkIFdl
Ykdlb2xvY2F0aW9uTWFuYWdlcjo6ZGlkQ2hhbmdlUG9zaXRpb24oY29uc3QgR2VvbG9jYXRpb25Q
b3NpdGlvbkRhdGEmIHBvc2l0aW9uKQordm9pZCBXZWJHZW9sb2NhdGlvbk1hbmFnZXI6OmRpZENo
YW5nZVBvc2l0aW9uKGNvbnN0IFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluJiByZWdpc3RyYWJs
ZURvbWFpbiwgY29uc3QgR2VvbG9jYXRpb25Qb3NpdGlvbkRhdGEmIHBvc2l0aW9uKQogewogI2lm
IEVOQUJMRShHRU9MT0NBVElPTikKLSAgICBmb3IgKGF1dG8mIHBhZ2UgOiBjb3B5VG9WZWN0b3Io
bV9wYWdlU2V0KSkgewotICAgICAgICBpZiAocGFnZS0+Y29yZVBhZ2UoKSkKLSAgICAgICAgICAg
IEdlb2xvY2F0aW9uQ29udHJvbGxlcjo6ZnJvbShwYWdlLT5jb3JlUGFnZSgpKS0+cG9zaXRpb25D
aGFuZ2VkKHBvc2l0aW9uKTsKKyAgICBpZiAoYXV0byBpdCA9IG1fcGFnZVNldHMuZmluZChyZWdp
c3RyYWJsZURvbWFpbik7IGl0ICE9IG1fcGFnZVNldHMuZW5kKCkpIHsKKyAgICAgICAgZm9yIChh
dXRvJiBwYWdlIDogY29weVRvVmVjdG9yKGl0LT52YWx1ZS5wYWdlU2V0KSkgeworICAgICAgICAg
ICAgaWYgKHBhZ2UtPmNvcmVQYWdlKCkpCisgICAgICAgICAgICAgICAgR2VvbG9jYXRpb25Db250
cm9sbGVyOjpmcm9tKHBhZ2UtPmNvcmVQYWdlKCkpLT5wb3NpdGlvbkNoYW5nZWQocG9zaXRpb24p
OworICAgICAgICB9CiAgICAgfQogI2Vsc2UKKyAgICBVTlVTRURfUEFSQU0ocmVnaXN0cmFibGVE
b21haW4pOwogICAgIFVOVVNFRF9QQVJBTShwb3NpdGlvbik7CiAjZW5kaWYgLy8gRU5BQkxFKEdF
T0xPQ0FUSU9OKQogfQogCi12b2lkIFdlYkdlb2xvY2F0aW9uTWFuYWdlcjo6ZGlkRmFpbFRvRGV0
ZXJtaW5lUG9zaXRpb24oY29uc3QgU3RyaW5nJiBlcnJvck1lc3NhZ2UpCit2b2lkIFdlYkdlb2xv
Y2F0aW9uTWFuYWdlcjo6ZGlkRmFpbFRvRGV0ZXJtaW5lUG9zaXRpb24oY29uc3QgV2ViQ29yZTo6
UmVnaXN0cmFibGVEb21haW4mIHJlZ2lzdHJhYmxlRG9tYWluLCBjb25zdCBTdHJpbmcmIGVycm9y
TWVzc2FnZSkKIHsKICNpZiBFTkFCTEUoR0VPTE9DQVRJT04pCi0gICAgLy8gRklYTUU6IEFkZCBs
b2NhbGl6ZWQgZXJyb3Igc3RyaW5nLgotICAgIGF1dG8gZXJyb3IgPSBHZW9sb2NhdGlvbkVycm9y
OjpjcmVhdGUoR2VvbG9jYXRpb25FcnJvcjo6UG9zaXRpb25VbmF2YWlsYWJsZSwgZXJyb3JNZXNz
YWdlKTsKLQotICAgIGZvciAoYXV0byYgcGFnZSA6IGNvcHlUb1ZlY3RvcihtX3BhZ2VTZXQpKSB7
Ci0gICAgICAgIGlmIChwYWdlLT5jb3JlUGFnZSgpKQotICAgICAgICAgICAgR2VvbG9jYXRpb25D
b250cm9sbGVyOjpmcm9tKHBhZ2UtPmNvcmVQYWdlKCkpLT5lcnJvck9jY3VycmVkKGVycm9yLmdl
dCgpKTsKKyAgICBpZiAoYXV0byBpdCA9IG1fcGFnZVNldHMuZmluZChyZWdpc3RyYWJsZURvbWFp
bik7IGl0ICE9IG1fcGFnZVNldHMuZW5kKCkpIHsKKyAgICAgICAgLy8gRklYTUU6IEFkZCBsb2Nh
bGl6ZWQgZXJyb3Igc3RyaW5nLgorICAgICAgICBhdXRvIGVycm9yID0gR2VvbG9jYXRpb25FcnJv
cjo6Y3JlYXRlKEdlb2xvY2F0aW9uRXJyb3I6OlBvc2l0aW9uVW5hdmFpbGFibGUsIGVycm9yTWVz
c2FnZSk7CisKKyAgICAgICAgZm9yIChhdXRvJiBwYWdlIDogY29weVRvVmVjdG9yKGl0LT52YWx1
ZS5wYWdlU2V0KSkgeworICAgICAgICAgICAgaWYgKHBhZ2UtPmNvcmVQYWdlKCkpCisgICAgICAg
ICAgICAgICAgR2VvbG9jYXRpb25Db250cm9sbGVyOjpmcm9tKHBhZ2UtPmNvcmVQYWdlKCkpLT5l
cnJvck9jY3VycmVkKGVycm9yLmdldCgpKTsKKyAgICAgICAgfQogICAgIH0KICNlbHNlCisgICAg
VU5VU0VEX1BBUkFNKHJlZ2lzdHJhYmxlRG9tYWluKTsKICAgICBVTlVTRURfUEFSQU0oZXJyb3JN
ZXNzYWdlKTsKICNlbmRpZiAvLyBFTkFCTEUoR0VPTE9DQVRJT04pCiB9CiAKICNpZiBQTEFURk9S
TShJT1NfRkFNSUxZKQotdm9pZCBXZWJHZW9sb2NhdGlvbk1hbmFnZXI6OnJlc2V0UGVybWlzc2lv
bnMoKQordm9pZCBXZWJHZW9sb2NhdGlvbk1hbmFnZXI6OnJlc2V0UGVybWlzc2lvbnMoY29uc3Qg
V2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4mIHJlZ2lzdHJhYmxlRG9tYWluKQogewotICAgIG1f
cHJvY2Vzcy5yZXNldEFsbEdlb2xvY2F0aW9uUGVybWlzc2lvbnMoKTsKLX0KLSNlbmRpZiAvLyBQ
TEFURk9STShJT1NfRkFNSUxZKQorICAgIGF1dG8gaXQgPSBtX3BhZ2VTZXRzLmZpbmQocmVnaXN0
cmFibGVEb21haW4pOworICAgIGlmIChpdCAhPSBtX3BhZ2VTZXRzLmVuZCgpKQorICAgICAgICBy
ZXR1cm47CiAKLWJvb2wgV2ViR2VvbG9jYXRpb25NYW5hZ2VyOjppc1VwZGF0aW5nKCkgY29uc3QK
LXsKLSAgICByZXR1cm4gIW1fcGFnZVNldC5jb21wdXRlc0VtcHR5KCk7Ci19Ci0KLWJvb2wgV2Vi
R2VvbG9jYXRpb25NYW5hZ2VyOjppc0hpZ2hBY2N1cmFjeUVuYWJsZWQoKSBjb25zdAotewotICAg
IHJldHVybiAhbV9oaWdoQWNjdXJhY3lQYWdlU2V0LmNvbXB1dGVzRW1wdHkoKTsKKyAgICBmb3Ig
KGF1dG8mIHBhZ2UgOiBjb3B5VG9WZWN0b3IoaXQtPnZhbHVlLnBhZ2VTZXQpKSB7CisgICAgICAg
IGlmIChhdXRvKiBtYWluRnJhbWUgPSBwYWdlLT5jb3JlUGFnZSgpID8gJnBhZ2UtPmNvcmVQYWdl
KCktPm1haW5GcmFtZSgpIDogbnVsbHB0cikKKyAgICAgICAgICAgIG1haW5GcmFtZS0+cmVzZXRB
bGxHZW9sb2NhdGlvblBlcm1pc3Npb24oKTsKKyAgICB9CiB9CisjZW5kaWYgLy8gUExBVEZPUk0o
SU9TX0ZBTUlMWSkKIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvR2VvbG9jYXRpb24vV2ViR2VvbG9jYXRpb25NYW5hZ2VyLmggYi9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR2VvbG9jYXRpb24vV2ViR2VvbG9jYXRpb25NYW5hZ2Vy
LmgKaW5kZXggNDQ4MzU5NjM1ODc4MjE5N2NjYmE1OTI4ZWZlNjI1MTUyNmMxODUxNS4uNTk0YjJj
ZWI2OWU2OGRmNTJiZTExNTNiZjViMjU4NThlMmU5YjI3ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL0dlb2xvY2F0aW9uL1dlYkdlb2xvY2F0aW9uTWFuYWdlci5oCisrKyBi
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HZW9sb2NhdGlvbi9XZWJHZW9sb2NhdGlvbk1hbmFn
ZXIuaApAQCAtMjgsNiArMjgsNyBAQAogI2luY2x1ZGUgIk1lc3NhZ2VSZWNlaXZlci5oIgogI2lu
Y2x1ZGUgIldlYkdlb2xvY2F0aW9uUG9zaXRpb24uaCIKICNpbmNsdWRlICJXZWJQcm9jZXNzU3Vw
cGxlbWVudC5oIgorI2luY2x1ZGUgPFdlYkNvcmUvUmVnaXN0cmFibGVEb21haW4uaD4KICNpbmNs
dWRlIDx3dGYvRm9yd2FyZC5oPgogI2luY2x1ZGUgPHd0Zi9Ob25jb3B5YWJsZS5oPgogI2luY2x1
ZGUgPHd0Zi9XZWFrSGFzaFNldC5oPgpAQCAtNDcsMzEgKzQ4LDMxIEBAIGNsYXNzIFdlYkdlb2xv
Y2F0aW9uTWFuYWdlciA6IHB1YmxpYyBXZWJQcm9jZXNzU3VwcGxlbWVudCwgcHVibGljIElQQzo6
TWVzc2FnZVJlCiAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoV2ViR2VvbG9jYXRpb25NYW5hZ2Vy
KTsKIHB1YmxpYzoKICAgICBleHBsaWNpdCBXZWJHZW9sb2NhdGlvbk1hbmFnZXIoV2ViUHJvY2Vz
cyYpOworICAgIH5XZWJHZW9sb2NhdGlvbk1hbmFnZXIoKTsKIAogICAgIHN0YXRpYyBjb25zdCBj
aGFyKiBzdXBwbGVtZW50TmFtZSgpOwogCi0gICAgdm9pZCByZWdpc3RlcldlYlBhZ2UoV2ViUGFn
ZSYsIGNvbnN0IFN0cmluZyYgYXV0aG9yaXphdGlvblRva2VuKTsKKyAgICB2b2lkIHJlZ2lzdGVy
V2ViUGFnZShXZWJQYWdlJiwgY29uc3QgU3RyaW5nJiBhdXRob3JpemF0aW9uVG9rZW4sIGJvb2wg
bmVlZHNIaWdoQWNjdXJhY3kpOwogICAgIHZvaWQgdW5yZWdpc3RlcldlYlBhZ2UoV2ViUGFnZSYp
OwogICAgIHZvaWQgc2V0RW5hYmxlSGlnaEFjY3VyYWN5Rm9yUGFnZShXZWJQYWdlJiwgYm9vbCk7
CiAKLSAgICB2b2lkIHJlcXVlc3RQZXJtaXNzaW9uKFdlYkNvcmU6Okdlb2xvY2F0aW9uJik7Ci0K
IHByaXZhdGU6CiAgICAgLy8gSVBDOjpNZXNzYWdlUmVjZWl2ZXIKICAgICB2b2lkIGRpZFJlY2Vp
dmVNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYsIElQQzo6RGVjb2RlciYpIG92ZXJyaWRlOwogCi0g
ICAgYm9vbCBpc1VwZGF0aW5nKCkgY29uc3Q7Ci0gICAgYm9vbCBpc0hpZ2hBY2N1cmFjeUVuYWJs
ZWQoKSBjb25zdDsKLQotICAgIHZvaWQgZGlkQ2hhbmdlUG9zaXRpb24oY29uc3QgV2ViQ29yZTo6
R2VvbG9jYXRpb25Qb3NpdGlvbkRhdGEmKTsKLSAgICB2b2lkIGRpZEZhaWxUb0RldGVybWluZVBv
c2l0aW9uKGNvbnN0IFN0cmluZyYgZXJyb3JNZXNzYWdlKTsKKyAgICB2b2lkIGRpZENoYW5nZVBv
c2l0aW9uKGNvbnN0IFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluJiwgY29uc3QgV2ViQ29yZTo6
R2VvbG9jYXRpb25Qb3NpdGlvbkRhdGEmKTsKKyAgICB2b2lkIGRpZEZhaWxUb0RldGVybWluZVBv
c2l0aW9uKGNvbnN0IFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluJiwgY29uc3QgU3RyaW5nJiBl
cnJvck1lc3NhZ2UpOwogI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCi0gICAgdm9pZCByZXNldFBl
cm1pc3Npb25zKCk7CisgICAgdm9pZCByZXNldFBlcm1pc3Npb25zKGNvbnN0IFdlYkNvcmU6OlJl
Z2lzdHJhYmxlRG9tYWluJik7CiAjZW5kaWYgLy8gUExBVEZPUk0oSU9TX0ZBTUlMWSkKIAogICAg
IFdlYlByb2Nlc3MmIG1fcHJvY2VzczsKLSAgICBXZWFrSGFzaFNldDxXZWJQYWdlPiBtX3BhZ2VT
ZXQ7Ci0gICAgV2Vha0hhc2hTZXQ8V2ViUGFnZT4gbV9oaWdoQWNjdXJhY3lQYWdlU2V0OworICAg
IHN0cnVjdCBQYWdlU2V0cyB7CisgICAgICAgIFdlYWtIYXNoU2V0PFdlYlBhZ2U+IHBhZ2VTZXQ7
CisgICAgICAgIFdlYWtIYXNoU2V0PFdlYlBhZ2U+IGhpZ2hBY2N1cmFjeVBhZ2VTZXQ7CisgICAg
fTsKKyAgICBIYXNoTWFwPFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluLCBQYWdlU2V0cz4gbV9w
YWdlU2V0czsKKyAgICBIYXNoTWFwPFdlYlBhZ2UqLCBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFp
bj4gbV9wYWdlVG9SZWdpc3RyYWJsZURvbWFpbjsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktp
dApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dlb2xvY2F0aW9uL1dlYkdl
b2xvY2F0aW9uTWFuYWdlci5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9H
ZW9sb2NhdGlvbi9XZWJHZW9sb2NhdGlvbk1hbmFnZXIubWVzc2FnZXMuaW4KaW5kZXggNzlmM2I0
Y2U0ZWZjYWYzNDg4NTdkOTkzMzI1M2Q4OTU0ZjBmMWI4Ny4uNmZjYzYwZDJlMDhlMjZlYWI3M2Mx
ZjcxY2Q4ODQyZGM1MTA1MmQxOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L0dlb2xvY2F0aW9uL1dlYkdlb2xvY2F0aW9uTWFuYWdlci5tZXNzYWdlcy5pbgorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvR2VvbG9jYXRpb24vV2ViR2VvbG9jYXRpb25NYW5hZ2VyLm1l
c3NhZ2VzLmluCkBAIC0yMSw5ICsyMSw5IEBACiAjIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAKIG1lc3NhZ2VzIC0+
IFdlYkdlb2xvY2F0aW9uTWFuYWdlciBOb3RSZWZDb3VudGVkIHsKLSAgICBEaWRDaGFuZ2VQb3Np
dGlvbihXZWJDb3JlOjpHZW9sb2NhdGlvblBvc2l0aW9uRGF0YSBwb3NpdGlvbik7Ci0gICAgRGlk
RmFpbFRvRGV0ZXJtaW5lUG9zaXRpb24oU3RyaW5nIGVycm9yTWVzc2FnZSk7CisgICAgRGlkQ2hh
bmdlUG9zaXRpb24oV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4gcmVnaXN0cmFibGVEb21haW4s
IFdlYkNvcmU6Okdlb2xvY2F0aW9uUG9zaXRpb25EYXRhIHBvc2l0aW9uKTsKKyAgICBEaWRGYWls
VG9EZXRlcm1pbmVQb3NpdGlvbihXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiByZWdpc3RyYWJs
ZURvbWFpbiwgU3RyaW5nIGVycm9yTWVzc2FnZSk7CiAjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkK
LSAgICBSZXNldFBlcm1pc3Npb25zKCk7CisgICAgUmVzZXRQZXJtaXNzaW9ucyhXZWJDb3JlOjpS
ZWdpc3RyYWJsZURvbWFpbiByZWdpc3RyYWJsZURvbWFpbik7CiAjZW5kaWYKIH0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJHZW9sb2NhdGlv
bkNsaWVudC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2Vi
R2VvbG9jYXRpb25DbGllbnQuY3BwCmluZGV4IGVhMDJmMmFjMTZmNzMxYmY1NjQyZjg2NzhkODZh
NDk4MTFkOGMzODYuLmQxOGRmN2VmYWY1NmVmY2ZjOGQxNjk5YzkxY2QyNmI2ODliYzgyNmEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJHZW9s
b2NhdGlvbkNsaWVudC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVT
dXBwb3J0L1dlYkdlb2xvY2F0aW9uQ2xpZW50LmNwcApAQCAtNDgsOSArNDgsOSBAQCB2b2lkIFdl
Ykdlb2xvY2F0aW9uQ2xpZW50OjpnZW9sb2NhdGlvbkRlc3Ryb3llZCgpCiAgICAgZGVsZXRlIHRo
aXM7CiB9CiAKLXZvaWQgV2ViR2VvbG9jYXRpb25DbGllbnQ6OnN0YXJ0VXBkYXRpbmcoY29uc3Qg
U3RyaW5nJiBhdXRob3JpemF0aW9uVG9rZW4pCit2b2lkIFdlYkdlb2xvY2F0aW9uQ2xpZW50Ojpz
dGFydFVwZGF0aW5nKGNvbnN0IFN0cmluZyYgYXV0aG9yaXphdGlvblRva2VuLCBib29sIG5lZWRz
SGlnaEFjY3VyYWN5KQogewotICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLnN1cHBsZW1lbnQ8
V2ViR2VvbG9jYXRpb25NYW5hZ2VyPigpLT5yZWdpc3RlcldlYlBhZ2UobV9wYWdlLCBhdXRob3Jp
emF0aW9uVG9rZW4pOworICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLnN1cHBsZW1lbnQ8V2Vi
R2VvbG9jYXRpb25NYW5hZ2VyPigpLT5yZWdpc3RlcldlYlBhZ2UobV9wYWdlLCBhdXRob3JpemF0
aW9uVG9rZW4sIG5lZWRzSGlnaEFjY3VyYWN5KTsKIH0KIAogdm9pZCBXZWJHZW9sb2NhdGlvbkNs
aWVudDo6c3RvcFVwZGF0aW5nKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9XZWJDb3JlU3VwcG9ydC9XZWJHZW9sb2NhdGlvbkNsaWVudC5oIGIvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkdlb2xvY2F0aW9uQ2xpZW50LmgKaW5kZXggYjE2
ODE2NzQ4OTYyMjU0N2VjOTRlNjc5OGZiNjlkZDhmYTZkMDExYy4uNjVlYzBlOTM1NDI4M2Q1ZmE3
N2FmMTBiNGUxODBiODcxMmZhZWYwNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkdlb2xvY2F0aW9uQ2xpZW50LmgKKysrIGIvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkdlb2xvY2F0aW9uQ2xpZW50LmgKQEAg
LTMxLDcgKzMxLDcgQEAgbmFtZXNwYWNlIFdlYktpdCB7CiAKIGNsYXNzIFdlYlBhZ2U7CiAKLWNs
YXNzIFdlYkdlb2xvY2F0aW9uQ2xpZW50IDogcHVibGljIFdlYkNvcmU6Okdlb2xvY2F0aW9uQ2xp
ZW50IHsKK2NsYXNzIFdlYkdlb2xvY2F0aW9uQ2xpZW50IGZpbmFsIDogcHVibGljIFdlYkNvcmU6
Okdlb2xvY2F0aW9uQ2xpZW50IHsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1Ymxp
YzoKICAgICBXZWJHZW9sb2NhdGlvbkNsaWVudChXZWJQYWdlJiBwYWdlKQpAQCAtNDIsMTcgKzQy
LDE3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIH5XZWJHZW9sb2NhdGlvbkNsaWVudCgpOwogCiBw
cml2YXRlOgotICAgIHZvaWQgZ2VvbG9jYXRpb25EZXN0cm95ZWQoKSBvdmVycmlkZTsKKyAgICB2
b2lkIGdlb2xvY2F0aW9uRGVzdHJveWVkKCkgZmluYWw7CiAKLSAgICB2b2lkIHN0YXJ0VXBkYXRp
bmcoY29uc3QgU3RyaW5nJiBhdXRob3JpemF0aW9uVG9rZW4pIG92ZXJyaWRlOwotICAgIHZvaWQg
c3RvcFVwZGF0aW5nKCkgb3ZlcnJpZGU7Ci0gICAgdm9pZCByZXZva2VBdXRob3JpemF0aW9uVG9r
ZW4oY29uc3QgU3RyaW5nJikgb3ZlcnJpZGU7Ci0gICAgdm9pZCBzZXRFbmFibGVIaWdoQWNjdXJh
Y3koYm9vbCkgb3ZlcnJpZGU7CisgICAgdm9pZCBzdGFydFVwZGF0aW5nKGNvbnN0IFN0cmluZyYg
YXV0aG9yaXphdGlvblRva2VuLCBib29sIG5lZWRzSGlnaEFjY3VyYWN5KSBmaW5hbDsKKyAgICB2
b2lkIHN0b3BVcGRhdGluZygpIGZpbmFsOworICAgIHZvaWQgcmV2b2tlQXV0aG9yaXphdGlvblRv
a2VuKGNvbnN0IFN0cmluZyYpIGZpbmFsOworICAgIHZvaWQgc2V0RW5hYmxlSGlnaEFjY3VyYWN5
KGJvb2wpIGZpbmFsOwogCi0gICAgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpHZW9sb2NhdGlvblBv
c2l0aW9uRGF0YT4gbGFzdFBvc2l0aW9uKCkgb3ZlcnJpZGU7CisgICAgc3RkOjpvcHRpb25hbDxX
ZWJDb3JlOjpHZW9sb2NhdGlvblBvc2l0aW9uRGF0YT4gbGFzdFBvc2l0aW9uKCkgZmluYWw7CiAK
LSAgICB2b2lkIHJlcXVlc3RQZXJtaXNzaW9uKFdlYkNvcmU6Okdlb2xvY2F0aW9uJikgb3ZlcnJp
ZGU7Ci0gICAgdm9pZCBjYW5jZWxQZXJtaXNzaW9uUmVxdWVzdChXZWJDb3JlOjpHZW9sb2NhdGlv
biYpIG92ZXJyaWRlOworICAgIHZvaWQgcmVxdWVzdFBlcm1pc3Npb24oV2ViQ29yZTo6R2VvbG9j
YXRpb24mKSBmaW5hbDsKKyAgICB2b2lkIGNhbmNlbFBlcm1pc3Npb25SZXF1ZXN0KFdlYkNvcmU6
Okdlb2xvY2F0aW9uJikgZmluYWw7CiAKICAgICBXZWJQYWdlJiBtX3BhZ2U7CiB9OwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3BwIGIvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3BwCmluZGV4IGRkNDViNDU4OGJmOWRkMTI0ZTE4
ZmFhOTVhMzI2ZWQzMTkzMWE0NTcuLjc5OTYxM2QzNzc0MjM2M2JmYmRjZDk1Mjk3OTk2MjIwNmYw
MjI4YTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5jcHAKQEAgLTE1Mjcs
MTYgKzE1MjcsNiBAQCB2b2lkIFdlYlByb2Nlc3M6OnBhZ2VBY3Rpdml0eVN0YXRlRGlkQ2hhbmdl
KFBhZ2VJZGVudGlmaWVyLCBPcHRpb25TZXQ8V2ViQ29yZTo6QQogICAgIH0KIH0KIAotI2lmIFBM
QVRGT1JNKElPU19GQU1JTFkpCi12b2lkIFdlYlByb2Nlc3M6OnJlc2V0QWxsR2VvbG9jYXRpb25Q
ZXJtaXNzaW9ucygpCi17Ci0gICAgZm9yIChhdXRvJiBwYWdlIDogbV9wYWdlTWFwLnZhbHVlcygp
KSB7Ci0gICAgICAgIGlmIChGcmFtZSogbWFpbkZyYW1lID0gcGFnZS0+bWFpbkZyYW1lKCkpCi0g
ICAgICAgICAgICBtYWluRnJhbWUtPnJlc2V0QWxsR2VvbG9jYXRpb25QZXJtaXNzaW9uKCk7Ci0g
ICAgfQotfQotI2VuZGlmCi0KIHZvaWQgV2ViUHJvY2Vzczo6cHJlcGFyZVRvU3VzcGVuZChib29s
IGlzU3VzcGVuc2lvbkltbWluZW50LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYgY29tcGxl
dGlvbkhhbmRsZXIpCiB7CiAgICAgV0VCUFJPQ0VTU19SRUxFQVNFX0xPRyhQcm9jZXNzU3VzcGVu
c2lvbiwgInByZXBhcmVUb1N1c3BlbmQ6IGlzU3VzcGVuc2lvbkltbWluZW50PSVkIiwgaXNTdXNw
ZW5zaW9uSW1taW5lbnQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dl
YlByb2Nlc3MuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmgKaW5kZXgg
YzVkZDIyNWRjMWI3MWRhOWNkZDRlZWRiYTBhMDdlNzYxNzgxNTc1ZS4uNTk1YWYwYjk3NDEyOTBk
YTZjNzM0YTA4ODZiODI0ZDIzYjFlZTU3ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1dlYlByb2Nlc3MuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJv
Y2Vzcy5oCkBAIC0zMTAsMTAgKzMxMCw2IEBAIHB1YmxpYzoKIAogICAgIHZvaWQgaXNKSVRFbmFi
bGVkKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYpOwogCi0jaWYgUExBVEZPUk0oSU9T
X0ZBTUlMWSkKLSAgICB2b2lkIHJlc2V0QWxsR2VvbG9jYXRpb25QZXJtaXNzaW9ucygpOwotI2Vu
ZGlmCi0KICNpZiBQTEFURk9STShXQVlMQU5EKQogICAgIFdheWxhbmRDb21wb3NpdG9yRGlzcGxh
eSogd2F5bGFuZENvbXBvc2l0b3JEaXNwbGF5KCkgY29uc3QgeyByZXR1cm4gbV93YXlsYW5kQ29t
cG9zaXRvckRpc3BsYXkuZ2V0KCk7IH0KICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViR2VvbG9jYXRpb25DbGllbnQuaCBiL1NvdXJj
ZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkdlb2xvY2F0aW9uQ2xpZW50LmgK
aW5kZXggNzdjMjgyOGQ4NTk1MzYzNWI2NGM0Yzg5OTk5MGEwYTY0ODE3MWI2Yy4uYjA3Yzc5MDNk
MjkyYTkzMzkxZTVjNDBhZWRkNjVkZWRiYWY4YzVmMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViR2VvbG9jYXRpb25DbGllbnQuaAorKysgYi9T
b3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJHZW9sb2NhdGlvbkNsaWVu
dC5oCkBAIC0zOSw3ICszOSw3IEBAIHB1YmxpYzoKICAgICBXZWJWaWV3ICp3ZWJWaWV3KCkgeyBy
ZXR1cm4gbV93ZWJWaWV3OyB9CiAKICAgICB2b2lkIGdlb2xvY2F0aW9uRGVzdHJveWVkKCkgb3Zl
cnJpZGU7Ci0gICAgdm9pZCBzdGFydFVwZGF0aW5nKGNvbnN0IFN0cmluZyYgYXV0aG9yaXphdGlv
blRva2VuKSBvdmVycmlkZTsKKyAgICB2b2lkIHN0YXJ0VXBkYXRpbmcoY29uc3QgU3RyaW5nJiBh
dXRob3JpemF0aW9uVG9rZW4sIGJvb2wgZW5hYmxlSGlnaEFjY3VyYWN5KSBvdmVycmlkZTsKICAg
ICB2b2lkIHN0b3BVcGRhdGluZygpIG92ZXJyaWRlOwogI2lmIFBMQVRGT1JNKElPU19GQU1JTFkp
CiAgICAgLy8gRklYTUU6IHVuaWZ5IHRoaXMgd2l0aCBNYWMgb24gT3BlblNvdXJjZS4KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkdlb2xvY2F0
aW9uQ2xpZW50Lm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2Vi
R2VvbG9jYXRpb25DbGllbnQubW0KaW5kZXggZTc4OGE1N2RkNmY4MDdlN2IyNWM3NDJiYTgwMTkz
NTdhMjczNGQzOC4uYThiODUyMWUyZGE0NzE4ZGMxNGI0MzcwYjFhNWI0YjhkNjMyODU4OSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViR2VvbG9j
YXRpb25DbGllbnQubW0KKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBv
cnQvV2ViR2VvbG9jYXRpb25DbGllbnQubW0KQEAgLTgzLDkgKzgzLDE2IEBAIHZvaWQgV2ViR2Vv
bG9jYXRpb25DbGllbnQ6Omdlb2xvY2F0aW9uRGVzdHJveWVkKCkKICAgICBkZWxldGUgdGhpczsK
IH0KIAotdm9pZCBXZWJHZW9sb2NhdGlvbkNsaWVudDo6c3RhcnRVcGRhdGluZyhjb25zdCBTdHJp
bmcmIGF1dGhvcml6YXRpb25Ub2tlbikKK3ZvaWQgV2ViR2VvbG9jYXRpb25DbGllbnQ6OnN0YXJ0
VXBkYXRpbmcoY29uc3QgU3RyaW5nJiBhdXRob3JpemF0aW9uVG9rZW4sIGJvb2wgZW5hYmxlSGln
aEFjY3VyYWN5KQogewogICAgIFVOVVNFRF9QQVJBTShhdXRob3JpemF0aW9uVG9rZW4pOworI2lm
IFBMQVRGT1JNKElPU19GQU1JTFkpCisgICAgaWYgKGVuYWJsZUhpZ2hBY2N1cmFjeSkKKyAgICAg
ICAgc2V0RW5hYmxlSGlnaEFjY3VyYWN5KHRydWUpOworI2Vsc2UKKyAgICBVTlVTRURfUEFSQU0o
ZW5hYmxlSGlnaEFjY3VyYWN5KTsKKyNlbmRpZgorCiAgICAgW1ttX3dlYlZpZXcgX2dlb2xvY2F0
aW9uUHJvdmlkZXJdIHJlZ2lzdGVyV2ViVmlldzptX3dlYlZpZXddOwogfQogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJHZW9sb2NhdGlvbkNs
aWVudC5jcHAgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJHZW9s
b2NhdGlvbkNsaWVudC5jcHAKaW5kZXggZTFmY2EyNzcyNDk2MTU0YTRlMDcwZTRkZmRhN2U3N2U5
NzM1ODJjMS4uYWM1NDUxNGM2NDJlYTBlNWY4YWYzMzY5ZTFiYmJhZTBjMzkwNzFiNyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViQ29yZVN1cHBvcnQvV2ViR2VvbG9jYXRp
b25DbGllbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkNvcmVTdXBwb3J0
L1dlYkdlb2xvY2F0aW9uQ2xpZW50LmNwcApAQCAtNDgsOSArNDgsMTAgQEAgdm9pZCBXZWJHZW9s
b2NhdGlvbkNsaWVudDo6Z2VvbG9jYXRpb25EZXN0cm95ZWQoKQogICAgIGRlbGV0ZSB0aGlzOwog
fQogCi12b2lkIFdlYkdlb2xvY2F0aW9uQ2xpZW50OjpzdGFydFVwZGF0aW5nKGNvbnN0IFN0cmlu
ZyYgYXV0aG9yaXphdGlvblRva2VuKQordm9pZCBXZWJHZW9sb2NhdGlvbkNsaWVudDo6c3RhcnRV
cGRhdGluZyhjb25zdCBTdHJpbmcmIGF1dGhvcml6YXRpb25Ub2tlbiwgYm9vbCBlbmFibGVIaWdo
QWNjdXJhY3kpCiB7CiAgICAgVU5VU0VEX1BBUkFNKGF1dGhvcml6YXRpb25Ub2tlbik7CisgICAg
VU5VU0VEX1BBUkFNKGVuYWJsZUhpZ2hBY2N1cmFjeSk7CiAgICAgQ09NUHRyPElXZWJHZW9sb2Nh
dGlvblByb3ZpZGVyPiBwcm92aWRlcjsKICAgICBpZiAoRkFJTEVEKG1fd2ViVmlldy0+Z2VvbG9j
YXRpb25Qcm92aWRlcigmcHJvdmlkZXIpKSkKICAgICAgICAgcmV0dXJuOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViQ29yZVN1cHBvcnQvV2ViR2VvbG9jYXRpb25DbGll
bnQuaCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkdlb2xvY2F0
aW9uQ2xpZW50LmgKaW5kZXggMTk1NzQxN2I1NWQ3ZTVkMmY5YjcxZTVjOWQ5YzMwM2RmZWY0ZTE4
Ni4uNWI4ZTk0NDRmMjFmZWQ0M2VkZjI1OTFhMmJhMTVkYTNiZDQ0ZjQ0YSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViQ29yZVN1cHBvcnQvV2ViR2VvbG9jYXRpb25DbGll
bnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJHZW9s
b2NhdGlvbkNsaWVudC5oCkBAIC00MSw3ICs0MSw3IEBAIHB1YmxpYzoKICAgICBXZWJHZW9sb2Nh
dGlvbkNsaWVudChXZWJWaWV3Kik7CiAKICAgICB2b2lkIGdlb2xvY2F0aW9uRGVzdHJveWVkKCkg
ZmluYWw7Ci0gICAgdm9pZCBzdGFydFVwZGF0aW5nKGNvbnN0IFN0cmluZyYgYXV0aG9yaXphdGlv
blRva2VuKSBmaW5hbDsKKyAgICB2b2lkIHN0YXJ0VXBkYXRpbmcoY29uc3QgU3RyaW5nJiBhdXRo
b3JpemF0aW9uVG9rZW4sIGJvb2wgZW5hYmxlSGlnaEFjY3VyYWN5KSBmaW5hbDsKICAgICB2b2lk
IHN0b3BVcGRhdGluZygpIGZpbmFsOwogICAgIHZvaWQgc2V0RW5hYmxlSGlnaEFjY3VyYWN5KGJv
b2wpIGZpbmFsIHsgfQogICAgIHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6R2VvbG9jYXRpb25Qb3Np
dGlvbkRhdGE+IGxhc3RQb3NpdGlvbigpIGZpbmFsOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>451853</attachid>
            <date>2022-02-13 20:07:57 -0800</date>
            <delta_ts>2022-02-14 10:03:39 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-236566-20220213200756.patch</filename>
            <type>text/plain</type>
            <size>103663</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg5Njk4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IDVjOGFhZWYzNzk5ZjJmYTJmNjY5YzFm
YWZmNTU3YTc4ZmI1YzYyMDEuLjUyZDQ3N2Q5OWEzYzNkZjIxZjhhNzBlNzU3MzkzZGVkNDc2NGMy
MTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMTUgQEAKKzIwMjItMDItMTMgIENocmlzIER1bWV6ICA8Y2R1bWV6
QGFwcGxlLmNvbT4KKworICAgICAgICBEbyBwcmVsaW1pbmFyeSB3b3JrIHRvIHBhc3MgZG9tYWlu
IG5hbWVzIHRvIENvcmVMb2NhdGlvbgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MjM2NTY2CisgICAgICAgIDxyZGFyOi8vODg3NjE0MTM+CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkIGJ1aWxkIHRpbWUg
ZmxhZyBmb3IgcGFzc2luZyB3ZWJzaXRlIGlkZW50aWZpZXJzIHRvIENvcmVMb2NhdGlvbi4KKwor
ICAgICAgICAqIHd0Zi9QbGF0Zm9ybUhhdmUuaDoKKwogMjAyMi0wMi0xMiAgSmVyIE5vYmxlICA8
amVyLm5vYmxlQGFwcGxlLmNvbT4KIAogICAgICAgICBBZGQgc2V0dGluZ3MgdG8gcmVzdHJpY3Qg
bWVkaWEgY29udGFpbmVycyBhbmQgY29kZWNzIHdoZW4gaW4gQ2FwdGl2ZSBQb3J0YWwgbW9kZQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkNvcmUvQ2hh
bmdlTG9nCmluZGV4IDcxMWMxMjBjYjExYTNmMzZhNTJjZDVkNGU1ZTY1ZmI5NGZmZmQ0NDIuLjg0
ZDk3MzIyNWJmMzU3MTgzYzcyNmVjM2Y5ZDljYTkxN2I5ZmY5ZWEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw1NCBAQAorMjAyMi0wMi0xMyAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgor
CisgICAgICAgIERvIHByZWxpbWluYXJ5IHdvcmsgdG8gcGFzcyBkb21haW4gbmFtZXMgdG8gQ29y
ZUxvY2F0aW9uCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0yMzY1NjYKKyAgICAgICAgPHJkYXI6Ly84ODc2MTQxMz4KKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBEbyBwcmVsaW1pbmFyeSB3b3JrIHRvIHBhc3Mg
ZG9tYWluIG5hbWVzIHRvIENvcmVMb2NhdGlvbiB3aGVuIHVzaW5nIHRoZSBHZW9sb2NhdGlvbiBB
UEkuCisgICAgICAgIFRoaXMgcGlwZXMgdGhlIGRvbWFpbiBuYW1lcyBhbGwgdGhlIHdheSBmcm9t
IHRoZSBHZW9sb2NhdGlvbiBBUEkgdG8gdGhlIENvcmVMb2NhdGlvbiBjYWxscworICAgICAgICBi
dXQgZG9lc24ndCB5ZXQgcGFzcyB0aGUgZG9tYWluIHRvIENvcmVMb2NhdGlvbiBkdWUgdG8gPHJk
YXI6Ly84ODgzNDMwMT4uIEkgd2lsbCBmb2xsb3ctdXAKKyAgICAgICAgb25jZSA8cmRhcjovLzg4
ODM0MzAxPiBpcyBmaXhlZC4KKworICAgICAgICAqIE1vZHVsZXMvZ2VvbG9jYXRpb24vR2VvbG9j
YXRpb25DbGllbnQuaDoKKyAgICAgICAgKiBNb2R1bGVzL2dlb2xvY2F0aW9uL0dlb2xvY2F0aW9u
Q29udHJvbGxlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpHZW9sb2NhdGlvbkNvbnRyb2xsZXI6
OmRpZE5hdmlnYXRlUGFnZSk6CisgICAgICAgIChXZWJDb3JlOjpHZW9sb2NhdGlvbkNvbnRyb2xs
ZXI6OmFkZE9ic2VydmVyKToKKyAgICAgICAgKFdlYkNvcmU6Okdlb2xvY2F0aW9uQ29udHJvbGxl
cjo6cmVtb3ZlT2JzZXJ2ZXIpOgorICAgICAgICAoV2ViQ29yZTo6R2VvbG9jYXRpb25Db250cm9s
bGVyOjphY3Rpdml0eVN0YXRlRGlkQ2hhbmdlKToKKyAgICAgICAgKFdlYkNvcmU6Okdlb2xvY2F0
aW9uQ29udHJvbGxlcjo6c3RhcnRVcGRhdGluZ0lmTmVjZXNzYXJ5KToKKyAgICAgICAgKFdlYkNv
cmU6Okdlb2xvY2F0aW9uQ29udHJvbGxlcjo6c3RvcFVwZGF0aW5nSWZOZWNlc3NhcnkpOgorICAg
ICAgICAqIE1vZHVsZXMvZ2VvbG9jYXRpb24vR2VvbG9jYXRpb25Db250cm9sbGVyLmg6CisgICAg
ICAgIChXZWJDb3JlOjpHZW9sb2NhdGlvbkNvbnRyb2xsZXI6Om5lZWRzSGlnaEFjY3VyYWN5IGNv
bnN0KToKKyAgICAgICAgKiBNb2R1bGVzL2dlb2xvY2F0aW9uL0dlb2xvY2F0aW9uUG9zaXRpb25E
YXRhLmg6CisgICAgICAgICogTW9kdWxlcy9nZW9sb2NhdGlvbi9pb3MvR2VvbG9jYXRpb25Qb3Np
dGlvbkRhdGFJT1MubW06CisgICAgICAgICogU291cmNlc0NvY29hLnR4dDoKKyAgICAgICAgKiBX
ZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogcGFnZS9QYWdlLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OlBhZ2U6OmRpZENvbW1pdExvYWQpOgorICAgICAgICAqIHBs
YXRmb3JtL2NvY29hL0NvcmVMb2NhdGlvbkdlb2xvY2F0aW9uUHJvdmlkZXIuaDogQ29waWVkIGZy
b20gU291cmNlL1dlYkNvcmUvTW9kdWxlcy9nZW9sb2NhdGlvbi9HZW9sb2NhdGlvbkNsaWVudC5o
LgorICAgICAgICAqIHBsYXRmb3JtL2NvY29hL0NvcmVMb2NhdGlvbkdlb2xvY2F0aW9uUHJvdmlk
ZXIubW06IEFkZGVkLgorICAgICAgICAoaXNBdXRob3JpemF0aW9uR3JhbnRlZCk6CisgICAgICAg
ICgtW1dlYkNMTG9jYXRpb25NYW5hZ2VyIGluaXRXaXRoV2Vic2l0ZUlkZW50aWZpZXI6Y2xpZW50
Ol0pOgorICAgICAgICAoLVtXZWJDTExvY2F0aW9uTWFuYWdlciBkZWFsbG9jXSk6CisgICAgICAg
ICgtW1dlYkNMTG9jYXRpb25NYW5hZ2VyIHN0YXJ0XSk6CisgICAgICAgICgtW1dlYkNMTG9jYXRp
b25NYW5hZ2VyIHN0b3BdKToKKyAgICAgICAgKC1bV2ViQ0xMb2NhdGlvbk1hbmFnZXIgc2V0RW5h
YmxlSGlnaEFjY3VyYWN5Ol0pOgorICAgICAgICAoLVtXZWJDTExvY2F0aW9uTWFuYWdlciByZXF1
ZXN0R2VvbG9jYXRpb25BdXRob3JpemF0aW9uXSk6CisgICAgICAgICgtW1dlYkNMTG9jYXRpb25N
YW5hZ2VyIGxvY2F0aW9uTWFuYWdlckRpZENoYW5nZUF1dGhvcml6YXRpb246XSk6CisgICAgICAg
ICgtW1dlYkNMTG9jYXRpb25NYW5hZ2VyIGxvY2F0aW9uTWFuYWdlcjpkaWRVcGRhdGVMb2NhdGlv
bnM6XSk6CisgICAgICAgICgtW1dlYkNMTG9jYXRpb25NYW5hZ2VyIGxvY2F0aW9uTWFuYWdlcjpk
aWRGYWlsV2l0aEVycm9yOl0pOgorICAgICAgICAoV2ViQ29yZTo6Q29yZUxvY2F0aW9uR2VvbG9j
YXRpb25Qcm92aWRlcjo6Q29yZUxvY2F0aW9uR2VvbG9jYXRpb25Qcm92aWRlcik6CisgICAgICAg
IChXZWJDb3JlOjpDb3JlTG9jYXRpb25HZW9sb2NhdGlvblByb3ZpZGVyOjp+Q29yZUxvY2F0aW9u
R2VvbG9jYXRpb25Qcm92aWRlcik6CisgICAgICAgIChXZWJDb3JlOjpDb3JlTG9jYXRpb25HZW9s
b2NhdGlvblByb3ZpZGVyOjpzdGFydCk6CisgICAgICAgIChXZWJDb3JlOjpDb3JlTG9jYXRpb25H
ZW9sb2NhdGlvblByb3ZpZGVyOjpzdG9wKToKKyAgICAgICAgKFdlYkNvcmU6OkNvcmVMb2NhdGlv
bkdlb2xvY2F0aW9uUHJvdmlkZXI6OnNldEVuYWJsZUhpZ2hBY2N1cmFjeSk6CisgICAgICAgIChX
ZWJDb3JlOjpDb3JlTG9jYXRpb25HZW9sb2NhdGlvblByb3ZpZGVyOjpyZXF1ZXN0QXV0aG9yaXph
dGlvbik6CisgICAgICAgICogcGxhdGZvcm0vbW9jay9HZW9sb2NhdGlvbkNsaWVudE1vY2suY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6R2VvbG9jYXRpb25DbGllbnRNb2NrOjpzdGFydFVwZGF0aW5n
KToKKyAgICAgICAgKiBwbGF0Zm9ybS9tb2NrL0dlb2xvY2F0aW9uQ2xpZW50TW9jay5oOgorCiAy
MDIyLTAyLTEyICBQYXRyaWNrIEFuZ2xlICA8cGFuZ2xlQGFwcGxlLmNvbT4KIAogICAgICAgICBX
ZWIgSW5zcGVjdG9yOiBbRmxleGJveF0gU2hvdyBpdGVtIGJvdW5kcywgZ2FwcywgYW5kIGZyZWUg
c3BhY2UgaW4gZmxleCBvdmVybGF5cwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9DaGFuZ2VM
b2cgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwppbmRleCA4MWMxMWI3ODVlYTg2MTJlYjI3NmQz
ODBmZGNjOTI1NmFlOTMxN2ZkLi42MWVjNzA0MDIwYTViZWI5Njc5MDM3Njk4OTBiYTk2MzI0NTAy
MWRmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2Vi
S2l0L0NoYW5nZUxvZwpAQCAtMSwzICsxLDk0IEBACisyMDIyLTAyLTEzICBDaHJpcyBEdW1leiAg
PGNkdW1lekBhcHBsZS5jb20+CisKKyAgICAgICAgRG8gcHJlbGltaW5hcnkgd29yayB0byBwYXNz
IGRvbWFpbiBuYW1lcyB0byBDb3JlTG9jYXRpb24KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTIzNjU2NgorICAgICAgICA8cmRhcjovLzg4NzYxNDEzPgor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIERvIHByZWxp
bWluYXJ5IHdvcmsgdG8gcGFzcyBkb21haW4gbmFtZXMgdG8gQ29yZUxvY2F0aW9uIHdoZW4gdXNp
bmcgdGhlIEdlb2xvY2F0aW9uIEFQSS4KKyAgICAgICAgVGhpcyBwaXBlcyB0aGUgZG9tYWluIG5h
bWVzIGFsbCB0aGUgd2F5IGZyb20gdGhlIEdlb2xvY2F0aW9uIEFQSSB0byB0aGUgQ29yZUxvY2F0
aW9uIGNhbGxzCisgICAgICAgIGJ1dCBkb2Vzbid0IHlldCBwYXNzIHRoZSBkb21haW4gdG8gQ29y
ZUxvY2F0aW9uIGR1ZSB0byA8cmRhcjovLzg4ODM0MzAxPi4gSSB3aWxsIGZvbGxvdy11cAorICAg
ICAgICBvbmNlIDxyZGFyOi8vODg4MzQzMDE+IGlzIGZpeGVkLgorCisgICAgICAgICogU291cmNl
c0NvY29hLnR4dDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0MvV0tHZW9sb2NhdGlvbk1hbmFn
ZXIuY3BwOgorICAgICAgICAoV0tHZW9sb2NhdGlvbk1hbmFnZXJTZXRQcm92aWRlcik6CisgICAg
ICAgICogVUlQcm9jZXNzL0NvY29hL1dlYkdlb2xvY2F0aW9uTWFuYWdlclByb3h5Q29jb2EuY3Bw
OiBBZGRlZC4KKyAgICAgICAgKFdlYktpdDo6V2ViR2VvbG9jYXRpb25NYW5hZ2VyUHJveHk6OnBv
c2l0aW9uQ2hhbmdlZCk6CisgICAgICAgIChXZWJLaXQ6OldlYkdlb2xvY2F0aW9uTWFuYWdlclBy
b3h5OjplcnJvck9jY3VycmVkKToKKyAgICAgICAgKFdlYktpdDo6V2ViR2VvbG9jYXRpb25NYW5h
Z2VyUHJveHk6OnJlc2V0R2VvbG9jYXRpb24pOgorICAgICAgICAoV2ViS2l0OjpXZWJHZW9sb2Nh
dGlvbk1hbmFnZXJQcm94eTo6aXNVcGRhdGluZyBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6Oldl
Ykdlb2xvY2F0aW9uTWFuYWdlclByb3h5Ojppc0hpZ2hBY2N1cmFjeUVuYWJsZWQgY29uc3QpOgor
ICAgICAgICAoV2ViS2l0OjpXZWJHZW9sb2NhdGlvbk1hbmFnZXJQcm94eTo6cHJvdmlkZXJTdGFy
dFVwZGF0aW5nKToKKyAgICAgICAgKFdlYktpdDo6V2ViR2VvbG9jYXRpb25NYW5hZ2VyUHJveHk6
OnByb3ZpZGVyU3RvcFVwZGF0aW5nKToKKyAgICAgICAgKFdlYktpdDo6V2ViR2VvbG9jYXRpb25N
YW5hZ2VyUHJveHk6OnByb3ZpZGVyU2V0RW5hYmxlZEhpZ2hBY2N1cmFjeSk6CisgICAgICAgICog
VUlQcm9jZXNzL1dlYkdlb2xvY2F0aW9uTWFuYWdlclByb3h5LmNwcDoKKyAgICAgICAgKFdlYktp
dDo6V2ViR2VvbG9jYXRpb25NYW5hZ2VyUHJveHk6OldlYkdlb2xvY2F0aW9uTWFuYWdlclByb3h5
KToKKyAgICAgICAgKFdlYktpdDo6V2ViR2VvbG9jYXRpb25NYW5hZ2VyUHJveHk6OnByb2Nlc3NQ
b29sRGVzdHJveWVkKToKKyAgICAgICAgKFdlYktpdDo6V2ViR2VvbG9jYXRpb25NYW5hZ2VyUHJv
eHk6OnByb2Nlc3NEaWRDbG9zZSk6CisgICAgICAgIChXZWJLaXQ6OldlYkdlb2xvY2F0aW9uTWFu
YWdlclByb3h5Ojpwcm92aWRlckRpZENoYW5nZVBvc2l0aW9uKToKKyAgICAgICAgKFdlYktpdDo6
V2ViR2VvbG9jYXRpb25NYW5hZ2VyUHJveHk6OnByb3ZpZGVyRGlkRmFpbFRvRGV0ZXJtaW5lUG9z
aXRpb24pOgorICAgICAgICAoV2ViS2l0OjpXZWJHZW9sb2NhdGlvbk1hbmFnZXJQcm94eTo6c3Rh
cnRVcGRhdGluZyk6CisgICAgICAgIChXZWJLaXQ6OldlYkdlb2xvY2F0aW9uTWFuYWdlclByb3h5
OjpzdG9wVXBkYXRpbmcpOgorICAgICAgICAoV2ViS2l0OjpXZWJHZW9sb2NhdGlvbk1hbmFnZXJQ
cm94eTo6c2V0RW5hYmxlSGlnaEFjY3VyYWN5KToKKyAgICAgICAgKFdlYktpdDo6V2ViR2VvbG9j
YXRpb25NYW5hZ2VyUHJveHk6OnNldFByb3ZpZGVyKToKKyAgICAgICAgKFdlYktpdDo6V2ViR2Vv
bG9jYXRpb25NYW5hZ2VyUHJveHk6OmlzVXBkYXRpbmcgY29uc3QpOgorICAgICAgICAoV2ViS2l0
OjpXZWJHZW9sb2NhdGlvbk1hbmFnZXJQcm94eTo6aXNIaWdoQWNjdXJhY3lFbmFibGVkIGNvbnN0
KToKKyAgICAgICAgKFdlYktpdDo6V2ViR2VvbG9jYXRpb25NYW5hZ2VyUHJveHk6OnByb3ZpZGVy
U3RhcnRVcGRhdGluZyk6CisgICAgICAgIChXZWJLaXQ6OldlYkdlb2xvY2F0aW9uTWFuYWdlclBy
b3h5Ojpwcm92aWRlclN0b3BVcGRhdGluZyk6CisgICAgICAgIChXZWJLaXQ6OldlYkdlb2xvY2F0
aW9uTWFuYWdlclByb3h5Ojpwcm92aWRlclNldEVuYWJsZWRIaWdoQWNjdXJhY3kpOgorICAgICAg
ICAoV2ViS2l0OjpXZWJHZW9sb2NhdGlvbk1hbmFnZXJQcm94eTo6cmVzZXRQZXJtaXNzaW9ucyk6
IERlbGV0ZWQuCisgICAgICAgIChXZWJLaXQ6OldlYkdlb2xvY2F0aW9uTWFuYWdlclByb3h5Ojpy
ZW1vdmVSZXF1ZXN0ZXIpOiBEZWxldGVkLgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJHZW9sb2Nh
dGlvbk1hbmFnZXJQcm94eS5oOgorICAgICAgICAoV2ViS2l0OjpXZWJHZW9sb2NhdGlvbk1hbmFn
ZXJQcm94eTo6bGFzdFBvc2l0aW9uIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYktpdDo6
V2ViR2VvbG9jYXRpb25NYW5hZ2VyUHJveHk6OmlzVXBkYXRpbmcgY29uc3QpOiBEZWxldGVkLgor
ICAgICAgICAoV2ViS2l0OjpXZWJHZW9sb2NhdGlvbk1hbmFnZXJQcm94eTo6aXNIaWdoQWNjdXJh
Y3lFbmFibGVkIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViR2VvbG9j
YXRpb25NYW5hZ2VyUHJveHkubWVzc2FnZXMuaW46CisgICAgICAgICogVUlQcm9jZXNzL2lvcy9X
S0dlb2xvY2F0aW9uUHJvdmlkZXJJT1MubW06CisgICAgICAgICgtW1dLR2VvbG9jYXRpb25Qcm92
aWRlcklPUyBfc3RhcnRVcGRhdGluZ10pOgorICAgICAgICAoLVtXS0dlb2xvY2F0aW9uUHJvdmlk
ZXJJT1MgX3N0b3BVcGRhdGluZ10pOgorICAgICAgICAoLVtXS0dlb2xvY2F0aW9uUHJvdmlkZXJJ
T1MgX3NldEVuYWJsZUhpZ2hBY2N1cmFjeTpdKToKKyAgICAgICAgKC1bV0tHZW9sb2NhdGlvblBy
b3ZpZGVySU9TIGluaXRXaXRoUHJvY2Vzc1Bvb2w6XSk6CisgICAgICAgICgtW1dLR2VvbG9jYXRp
b25Qcm92aWRlcklPUyBkZWNpZGVQb2xpY3lGb3JHZW9sb2NhdGlvblJlcXVlc3RGcm9tT3JpZ2lu
OmNvbXBsZXRpb25IYW5kbGVyOnZpZXc6XSk6CisgICAgICAgICgtW1dLR2VvbG9jYXRpb25Qcm92
aWRlcklPUyBnZW9sb2NhdGlvbkF1dGhvcml6YXRpb25HcmFudGVkXSk6CisgICAgICAgICgtW1dL
R2VvbG9jYXRpb25Qcm92aWRlcklPUyBwb3NpdGlvbkNoYW5nZWQ6XSk6CisgICAgICAgICgtW1dL
R2VvbG9jYXRpb25Qcm92aWRlcklPUyBlcnJvck9jY3VycmVkOl0pOgorICAgICAgICAoLVtXS0dl
b2xvY2F0aW9uUHJvdmlkZXJJT1MgcmVzZXRHZW9sb2NhdGlvbl0pOgorICAgICAgICAoc3RhcnRV
cGRhdGluZ0NhbGxiYWNrKTogRGVsZXRlZC4KKyAgICAgICAgKHN0b3BVcGRhdGluZ0NhbGxiYWNr
KTogRGVsZXRlZC4KKyAgICAgICAgKHNldEVuYWJsZUhpZ2hBY2N1cmFjeSk6IERlbGV0ZWQuCisg
ICAgICAgICgtW1dLTGVnYWN5Q29yZUxvY2F0aW9uUHJvdmlkZXIgc2V0TGlzdGVuZXI6XSk6IERl
bGV0ZWQuCisgICAgICAgICgtW1dLTGVnYWN5Q29yZUxvY2F0aW9uUHJvdmlkZXIgcmVxdWVzdEdl
b2xvY2F0aW9uQXV0aG9yaXphdGlvbl0pOiBEZWxldGVkLgorICAgICAgICAoLVtXS0xlZ2FjeUNv
cmVMb2NhdGlvblByb3ZpZGVyIHN0YXJ0XSk6IERlbGV0ZWQuCisgICAgICAgICgtW1dLTGVnYWN5
Q29yZUxvY2F0aW9uUHJvdmlkZXIgc3RvcF0pOiBEZWxldGVkLgorICAgICAgICAoLVtXS0xlZ2Fj
eUNvcmVMb2NhdGlvblByb3ZpZGVyIHNldEVuYWJsZUhpZ2hBY2N1cmFjeTpdKTogRGVsZXRlZC4K
KyAgICAgICAgKC1bV0tMZWdhY3lDb3JlTG9jYXRpb25Qcm92aWRlciBnZW9sb2NhdGlvbkF1dGhv
cml6YXRpb25HcmFudGVkXSk6IERlbGV0ZWQuCisgICAgICAgICgtW1dLTGVnYWN5Q29yZUxvY2F0
aW9uUHJvdmlkZXIgZ2VvbG9jYXRpb25BdXRob3JpemF0aW9uRGVuaWVkXSk6IERlbGV0ZWQuCisg
ICAgICAgICgtW1dLTGVnYWN5Q29yZUxvY2F0aW9uUHJvdmlkZXIgcG9zaXRpb25DaGFuZ2VkOl0p
OiBEZWxldGVkLgorICAgICAgICAoLVtXS0xlZ2FjeUNvcmVMb2NhdGlvblByb3ZpZGVyIGVycm9y
T2NjdXJyZWQ6XSk6IERlbGV0ZWQuCisgICAgICAgICgtW1dLTGVnYWN5Q29yZUxvY2F0aW9uUHJv
dmlkZXIgcmVzZXRHZW9sb2NhdGlvbl0pOiBEZWxldGVkLgorICAgICAgICAqIFdlYktpdC54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIFdlYlByb2Nlc3MvR2VvbG9jYXRpb24v
V2ViR2VvbG9jYXRpb25NYW5hZ2VyLmNwcDoKKyAgICAgICAgKFdlYktpdDo6cmVnaXN0cmFibGVE
b21haW5Gb3JQYWdlKToKKyAgICAgICAgKFdlYktpdDo6V2ViR2VvbG9jYXRpb25NYW5hZ2VyOjpy
ZWdpc3RlcldlYlBhZ2UpOgorICAgICAgICAoV2ViS2l0OjpXZWJHZW9sb2NhdGlvbk1hbmFnZXI6
OnVucmVnaXN0ZXJXZWJQYWdlKToKKyAgICAgICAgKFdlYktpdDo6V2ViR2VvbG9jYXRpb25NYW5h
Z2VyOjpzZXRFbmFibGVIaWdoQWNjdXJhY3lGb3JQYWdlKToKKyAgICAgICAgKFdlYktpdDo6V2Vi
R2VvbG9jYXRpb25NYW5hZ2VyOjpkaWRDaGFuZ2VQb3NpdGlvbik6CisgICAgICAgIChXZWJLaXQ6
OldlYkdlb2xvY2F0aW9uTWFuYWdlcjo6ZGlkRmFpbFRvRGV0ZXJtaW5lUG9zaXRpb24pOgorICAg
ICAgICAoV2ViS2l0OjpXZWJHZW9sb2NhdGlvbk1hbmFnZXI6OnJlc2V0UGVybWlzc2lvbnMpOgor
ICAgICAgICAoV2ViS2l0OjpXZWJHZW9sb2NhdGlvbk1hbmFnZXI6OmlzVXBkYXRpbmcgY29uc3Qp
OiBEZWxldGVkLgorICAgICAgICAoV2ViS2l0OjpXZWJHZW9sb2NhdGlvbk1hbmFnZXI6OmlzSGln
aEFjY3VyYWN5RW5hYmxlZCBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgICogV2ViUHJvY2Vzcy9H
ZW9sb2NhdGlvbi9XZWJHZW9sb2NhdGlvbk1hbmFnZXIuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNz
L0dlb2xvY2F0aW9uL1dlYkdlb2xvY2F0aW9uTWFuYWdlci5tZXNzYWdlcy5pbjoKKyAgICAgICAg
KiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkdlb2xvY2F0aW9uQ2xpZW50LmNwcDoKKyAg
ICAgICAgKFdlYktpdDo6V2ViR2VvbG9jYXRpb25DbGllbnQ6OnN0YXJ0VXBkYXRpbmcpOgorICAg
ICAgICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViR2VvbG9jYXRpb25DbGllbnQuaDoK
KyAgICAgICAgKFdlYktpdDo6V2ViR2VvbG9jYXRpb25DbGllbnQ6OldlYkdlb2xvY2F0aW9uQ2xp
ZW50KTogRGVsZXRlZC4KKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3BwOgorICAg
ICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzOjpyZXNldEFsbEdlb2xvY2F0aW9uUGVybWlzc2lvbnMp
OiBEZWxldGVkLgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUHJvY2Vzcy5oOgorCiAyMDIyLTAy
LTEyICBKZXIgTm9ibGUgIDxqZXIubm9ibGVAYXBwbGUuY29tPgogCiAgICAgICAgIEFkZCBzZXR0
aW5ncyB0byByZXN0cmljdCBtZWRpYSBjb250YWluZXJzIGFuZCBjb2RlY3Mgd2hlbiBpbiBDYXB0
aXZlIFBvcnRhbCBtb2RlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9DaGFu
Z2VMb2cgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9DaGFuZ2VMb2cKaW5kZXggNjgwMzk0ODU4
YTE1YjhhMjU2OTZhYWVjN2M4ZDk0YWE3M2FkNzIyMy4uMjU5NzZhMmYwZjQ4ZDNjM2NlMjk4YmZl
ZjgwZTFhZmIxMDU4OGY2NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2hh
bmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxvZwpAQCAtMSwzICsx
LDE1IEBACisyMDIyLTAyLTEzICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CisKKyAg
ICAgICAgRG8gcHJlbGltaW5hcnkgd29yayB0byBwYXNzIGRvbWFpbiBuYW1lcyB0byBDb3JlTG9j
YXRpb24KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIz
NjU2NgorICAgICAgICA8cmRhcjovLzg4NzYxNDEzPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2ViR2VvbG9jYXRpb25D
bGllbnQuaDoKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJHZW9sb2NhdGlvbkNsaWVudC5t
bToKKyAgICAgICAgKFdlYkdlb2xvY2F0aW9uQ2xpZW50OjpzdGFydFVwZGF0aW5nKToKKwogMjAy
Mi0wMi0xMSAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgogCiAgICAgICAgIFVucmV2
aWV3ZWQsIGZpeCBidWlsZCB3aXRoIHRoZSBsYXRlc3QgaU9TIFNESy4KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXRMZWdhY3kvd2luL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2lu
L0NoYW5nZUxvZwppbmRleCA2OTVhYTkxMDUzOWVmMDIxMDVmNTIxOTMwNGMwOTdlMTAzMTI2NDU1
Li4xZDZjMDMzZTJjZDFkMTI3NDQ1YzM1YzMwY2EzODg1MGFlZjdiZGI0IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdExlZ2Fj
eS93aW4vQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTUgQEAKKzIwMjItMDItMTMgIENocmlzIER1bWV6
ICA8Y2R1bWV6QGFwcGxlLmNvbT4KKworICAgICAgICBEbyBwcmVsaW1pbmFyeSB3b3JrIHRvIHBh
c3MgZG9tYWluIG5hbWVzIHRvIENvcmVMb2NhdGlvbgorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjM2NTY2CisgICAgICAgIDxyZGFyOi8vODg3NjE0MTM+
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBXZWJD
b3JlU3VwcG9ydC9XZWJHZW9sb2NhdGlvbkNsaWVudC5jcHA6CisgICAgICAgIChXZWJHZW9sb2Nh
dGlvbkNsaWVudDo6c3RhcnRVcGRhdGluZyk6CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2Vi
R2VvbG9jYXRpb25DbGllbnQuaDoKKwogMjAyMi0wMi0wMSAgTXlsZXMgQy4gTWF4ZmllbGQgIDxt
bWF4ZmllbGRAYXBwbGUuY29tPgogCiAgICAgICAgIFJlbmFtZSBGb250Q2FzY2FkZTo6Zm9udE1l
dHJpY3MoKSBhbmQgUmVuZGVyU3R5bGU6OmZvbnRNZXRyaWNzKCkgdG8gZm9udE1ldHJpY3NPZlBy
aW1hcnlGb250KCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL1BsYXRmb3JtSGF2ZS5oIGIv
U291cmNlL1dURi93dGYvUGxhdGZvcm1IYXZlLmgKaW5kZXggMDkyYmMzNjIxNTAxZDQ0Y2VhZmIw
NzBmYWNjZDM5OTVjZGEyMzEyNy4uNjRhNWU3OWIwNDRlZmJiODJhZWYyNDlhNDFiMmRkOThmYmU4
NTcwYSAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvUGxhdGZvcm1IYXZlLmgKKysrIGIvU291
cmNlL1dURi93dGYvUGxhdGZvcm1IYXZlLmgKQEAgLTExMTksNiArMTExOSwxNiBAQAogI2RlZmlu
ZSBIQVZFX05TVEVYVExJU1RfTUFSS0VSX0ZPUk1BVFMgMQogI2VuZGlmCiAKKyNpZiAoUExBVEZP
Uk0oSU9TKSAmJiBfX0lQSE9ORV9PU19WRVJTSU9OX01BWF9BTExPV0VEID49IDE2MDAwMCkgXAor
ICAgIHx8IChQTEFURk9STShXQVRDSE9TKSAmJiBfX1dBVENIX09TX1ZFUlNJT05fTUFYX0FMTE9X
RUQgPj0gOTAwMDApIFwKKyAgICB8fCAoUExBVEZPUk0oQVBQTEVUVikgJiYgX19UVl9PU19WRVJT
SU9OX01BWF9BTExPV0VEID49IDE2MDAwMCkKKyNkZWZpbmUgSEFWRV9DT1JFX0xPQ0FUSU9OX1dF
QlNJVEVfSURFTlRJRklFUlMgMQorI2VuZGlmCisKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZKSB8
fCAoUExBVEZPUk0oTUFDKSAmJiBfX01BQ19PU19YX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49IDEw
MTQwMCAmJiBkZWZpbmVkIF9faGFzX2luY2x1ZGUgJiYgX19oYXNfaW5jbHVkZSg8Q29yZUZvdW5k
YXRpb24vQ0ZQcml2Lmg+KSkKKyNkZWZpbmUgSEFWRV9DT1JFX0xPQ0FUSU9OX0FVVEhPUklaRURf
V0hFTl9JTl9VU0UgMQorI2VuZGlmCisKICNpZiBQTEFURk9STShNQUMpCiAjZGVmaW5lIEhBVkVf
U0NFTkVLSVQgMQogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2dl
b2xvY2F0aW9uL0dlb2xvY2F0aW9uQ2xpZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2dl
b2xvY2F0aW9uL0dlb2xvY2F0aW9uQ2xpZW50LmgKaW5kZXggNWJhZjNhZDgyYzU3ZTVhY2JhOTZl
M2RmMGVkNjBlYmM3NTRiY2IwNS4uYTRlODYyMzYyNTU2N2U5YWRmZWIwMGQ4MjQwMDBhMjc3ZGJl
YWYwMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9nZW9sb2NhdGlvbi9HZW9s
b2NhdGlvbkNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZ2VvbG9jYXRpb24v
R2VvbG9jYXRpb25DbGllbnQuaApAQCAtMzgsNyArMzgsNyBAQCBjbGFzcyBHZW9sb2NhdGlvbkNs
aWVudCB7CiBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIGdlb2xvY2F0aW9uRGVzdHJveWVkKCkg
PSAwOwogCi0gICAgdmlydHVhbCB2b2lkIHN0YXJ0VXBkYXRpbmcoY29uc3QgU3RyaW5nJiBhdXRo
b3JpemF0aW9uVG9rZW4pID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgc3RhcnRVcGRhdGluZyhjb25z
dCBTdHJpbmcmIGF1dGhvcml6YXRpb25Ub2tlbiwgYm9vbCBuZWVkc0hpZ2hBY2N1cmFjeSkgPSAw
OwogICAgIHZpcnR1YWwgdm9pZCBzdG9wVXBkYXRpbmcoKSA9IDA7CiAgICAgdmlydHVhbCB2b2lk
IHJldm9rZUF1dGhvcml6YXRpb25Ub2tlbihjb25zdCBTdHJpbmcmKSB7IH0KIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9nZW9sb2NhdGlvbi9HZW9sb2NhdGlvbkNvbnRyb2xs
ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9nZW9sb2NhdGlvbi9HZW9sb2NhdGlvbkNv
bnRyb2xsZXIuY3BwCmluZGV4IDA2MTYyOTE2MGQ5YmNjN2Q1ZGFmNzRjZmM0ZjgxNTUwYmE0OGRl
OGMuLjA3ZGQ2NWYzYzFhZWU3OWViOWM3MzI4MzZhMmQ1YWFkMDE3MzMzY2YgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZ2VvbG9jYXRpb24vR2VvbG9jYXRpb25Db250cm9sbGVy
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2dlb2xvY2F0aW9uL0dlb2xvY2F0aW9u
Q29udHJvbGxlci5jcHAKQEAgLTUyLDE5ICs1MiwyNSBAQCBHZW9sb2NhdGlvbkNvbnRyb2xsZXI6
On5HZW9sb2NhdGlvbkNvbnRyb2xsZXIoKQogICAgIG1fY2xpZW50Lmdlb2xvY2F0aW9uRGVzdHJv
eWVkKCk7CiB9CiAKK3ZvaWQgR2VvbG9jYXRpb25Db250cm9sbGVyOjpkaWROYXZpZ2F0ZVBhZ2Uo
KQoreworICAgIHdoaWxlICghbV9vYnNlcnZlcnMuaXNFbXB0eSgpKQorICAgICAgICByZW1vdmVP
YnNlcnZlcihtX29ic2VydmVycy5iZWdpbigpLT5nZXQoKSk7Cit9CisKIHZvaWQgR2VvbG9jYXRp
b25Db250cm9sbGVyOjphZGRPYnNlcnZlcihHZW9sb2NhdGlvbiYgb2JzZXJ2ZXIsIGJvb2wgZW5h
YmxlSGlnaEFjY3VyYWN5KQogewotICAgIC8vIFRoaXMgbWF5IGJlIGNhbGxlZCBtdWx0aXBsZSB0
aW1lcyB3aXRoIHRoZSBzYW1lIG9ic2VydmVyLCB0aG91Z2ggcmVtb3ZlT2JzZXJ2ZXIoKQotICAg
IC8vIGlzIGNhbGxlZCBvbmx5IG9uY2Ugd2l0aCBlYWNoLgotICAgIGJvb2wgd2FzRW1wdHkgPSBt
X29ic2VydmVycy5pc0VtcHR5KCk7CisgICAgYm9vbCBoaWdoQWNjdXJhY3lXYXNSZXF1aXJlZCA9
IG5lZWRzSGlnaEFjY3VyYWN5KCk7CisKICAgICBtX29ic2VydmVycy5hZGQob2JzZXJ2ZXIpOwog
ICAgIGlmIChlbmFibGVIaWdoQWNjdXJhY3kpCiAgICAgICAgIG1faGlnaEFjY3VyYWN5T2JzZXJ2
ZXJzLmFkZChvYnNlcnZlcik7CiAKLSAgICBpZiAoZW5hYmxlSGlnaEFjY3VyYWN5KQotICAgICAg
ICBtX2NsaWVudC5zZXRFbmFibGVIaWdoQWNjdXJhY3kodHJ1ZSk7Ci0gICAgaWYgKHdhc0VtcHR5
ICYmIG1fcGFnZS5pc1Zpc2libGUoKSkKLSAgICAgICAgbV9jbGllbnQuc3RhcnRVcGRhdGluZyhv
YnNlcnZlci5hdXRob3JpemF0aW9uVG9rZW4oKSk7CisgICAgaWYgKG1faXNVcGRhdGluZykgewor
ICAgICAgICBpZiAoIWhpZ2hBY2N1cmFjeVdhc1JlcXVpcmVkICYmIGVuYWJsZUhpZ2hBY2N1cmFj
eSkKKyAgICAgICAgICAgIG1fY2xpZW50LnNldEVuYWJsZUhpZ2hBY2N1cmFjeSh0cnVlKTsKKyAg
ICB9IGVsc2UKKyAgICAgICAgc3RhcnRVcGRhdGluZ0lmTmVjZXNzYXJ5KCk7CiB9CiAKIHZvaWQg
R2VvbG9jYXRpb25Db250cm9sbGVyOjpyZW1vdmVPYnNlcnZlcihHZW9sb2NhdGlvbiYgb2JzZXJ2
ZXIpCkBAIC03MiwxMiArNzgsMTcgQEAgdm9pZCBHZW9sb2NhdGlvbkNvbnRyb2xsZXI6OnJlbW92
ZU9ic2VydmVyKEdlb2xvY2F0aW9uJiBvYnNlcnZlcikKICAgICBpZiAoIW1fb2JzZXJ2ZXJzLmNv
bnRhaW5zKG9ic2VydmVyKSkKICAgICAgICAgcmV0dXJuOwogCisgICAgYm9vbCBoaWdoQWNjdXJh
Y3lXYXNSZXF1aXJlZCA9IG5lZWRzSGlnaEFjY3VyYWN5KCk7CisKICAgICBtX29ic2VydmVycy5y
ZW1vdmUob2JzZXJ2ZXIpOwogICAgIG1faGlnaEFjY3VyYWN5T2JzZXJ2ZXJzLnJlbW92ZShvYnNl
cnZlcik7CiAKKyAgICBpZiAoIW1faXNVcGRhdGluZykKKyAgICAgICAgcmV0dXJuOworCiAgICAg
aWYgKG1fb2JzZXJ2ZXJzLmlzRW1wdHkoKSkKLSAgICAgICAgbV9jbGllbnQuc3RvcFVwZGF0aW5n
KCk7Ci0gICAgZWxzZSBpZiAobV9oaWdoQWNjdXJhY3lPYnNlcnZlcnMuaXNFbXB0eSgpKQorICAg
ICAgICBzdG9wVXBkYXRpbmdJZk5lY2Vzc2FyeSgpOworICAgIGVsc2UgaWYgKGhpZ2hBY2N1cmFj
eVdhc1JlcXVpcmVkICYmICFuZWVkc0hpZ2hBY2N1cmFjeSgpKQogICAgICAgICBtX2NsaWVudC5z
ZXRFbmFibGVIaWdoQWNjdXJhY3koZmFsc2UpOwogfQogCkBAIC0xMzksOSArMTUwLDkgQEAgdm9p
ZCBHZW9sb2NhdGlvbkNvbnRyb2xsZXI6OmFjdGl2aXR5U3RhdGVEaWRDaGFuZ2UoT3B0aW9uU2V0
PEFjdGl2aXR5U3RhdGU6OkZsYWcKICAgICBhdXRvIGNoYW5nZWQgPSBvbGRBY3Rpdml0eVN0YXRl
IF4gbmV3QWN0aXZpdHlTdGF0ZTsKICAgICBpZiAoY2hhbmdlZCAmIEFjdGl2aXR5U3RhdGU6Oklz
VmlzaWJsZSAmJiAhbV9vYnNlcnZlcnMuaXNFbXB0eSgpKSB7CiAgICAgICAgIGlmIChuZXdBY3Rp
dml0eVN0YXRlICYgQWN0aXZpdHlTdGF0ZTo6SXNWaXNpYmxlKQotICAgICAgICAgICAgbV9jbGll
bnQuc3RhcnRVcGRhdGluZygoKm1fb2JzZXJ2ZXJzLnJhbmRvbSgpKS0+YXV0aG9yaXphdGlvblRv
a2VuKCkpOworICAgICAgICAgICAgc3RhcnRVcGRhdGluZ0lmTmVjZXNzYXJ5KCk7CiAgICAgICAg
IGVsc2UKLSAgICAgICAgICAgIG1fY2xpZW50LnN0b3BVcGRhdGluZygpOworICAgICAgICAgICAg
c3RvcFVwZGF0aW5nSWZOZWNlc3NhcnkoKTsKICAgICB9CiAKICAgICBpZiAoIW1fcGFnZS5pc1Zp
c2libGUoKSkKQEAgLTE1Miw2ICsxNjMsMjQgQEAgdm9pZCBHZW9sb2NhdGlvbkNvbnRyb2xsZXI6
OmFjdGl2aXR5U3RhdGVEaWRDaGFuZ2UoT3B0aW9uU2V0PEFjdGl2aXR5U3RhdGU6OkZsYWcKICAg
ICAgICAgbV9jbGllbnQucmVxdWVzdFBlcm1pc3Npb24ocGVybWlzc2lvblJlcXVlc3QuZ2V0KCkp
OwogfQogCit2b2lkIEdlb2xvY2F0aW9uQ29udHJvbGxlcjo6c3RhcnRVcGRhdGluZ0lmTmVjZXNz
YXJ5KCkKK3sKKyAgICBpZiAobV9pc1VwZGF0aW5nIHx8ICFtX3BhZ2UuaXNWaXNpYmxlKCkgfHwg
bV9vYnNlcnZlcnMuaXNFbXB0eSgpKQorICAgICAgICByZXR1cm47CisKKyAgICBtX2NsaWVudC5z
dGFydFVwZGF0aW5nKCgqbV9vYnNlcnZlcnMucmFuZG9tKCkpLT5hdXRob3JpemF0aW9uVG9rZW4o
KSwgbmVlZHNIaWdoQWNjdXJhY3koKSk7CisgICAgbV9pc1VwZGF0aW5nID0gdHJ1ZTsKK30KKwor
dm9pZCBHZW9sb2NhdGlvbkNvbnRyb2xsZXI6OnN0b3BVcGRhdGluZ0lmTmVjZXNzYXJ5KCkKK3sK
KyAgICBpZiAoIW1faXNVcGRhdGluZykKKyAgICAgICAgcmV0dXJuOworCisgICAgbV9jbGllbnQu
c3RvcFVwZGF0aW5nKCk7CisgICAgbV9pc1VwZGF0aW5nID0gZmFsc2U7Cit9CisKIGNvbnN0IGNo
YXIqIEdlb2xvY2F0aW9uQ29udHJvbGxlcjo6c3VwcGxlbWVudE5hbWUoKQogewogICAgIHJldHVy
biAiR2VvbG9jYXRpb25Db250cm9sbGVyIjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvZ2VvbG9jYXRpb24vR2VvbG9jYXRpb25Db250cm9sbGVyLmggYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2dlb2xvY2F0aW9uL0dlb2xvY2F0aW9uQ29udHJvbGxlci5oCmluZGV4IDQyZjVk
MDYyZGI2ZjA5YzY2MDExMWQ2NmQ5ZjBmY2ZmZjNiMjA3NDAuLmJiZmY1NzVlYjA1ODMyNDA3ODBk
M2I0MWE5Njc0MmM2YjFkNzI0OGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
Z2VvbG9jYXRpb24vR2VvbG9jYXRpb25Db250cm9sbGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9nZW9sb2NhdGlvbi9HZW9sb2NhdGlvbkNvbnRyb2xsZXIuaApAQCAtMzAsNiArMzAs
NyBAQAogI2luY2x1ZGUgIkFjdGl2aXR5U3RhdGVDaGFuZ2VPYnNlcnZlci5oIgogI2luY2x1ZGUg
Ikdlb2xvY2F0aW9uLmgiCiAjaW5jbHVkZSAiUGFnZS5oIgorI2luY2x1ZGUgIlJlZ2lzdHJhYmxl
RG9tYWluLmgiCiAjaW5jbHVkZSA8d3RmL0hhc2hTZXQuaD4KICNpbmNsdWRlIDx3dGYvTm9uY29w
eWFibGUuaD4KICNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+CkBAIC02NSw2ICs2Niw4IEBAIHB1Ymxp
YzoKIAogICAgIHZvaWQgcmV2b2tlQXV0aG9yaXphdGlvblRva2VuKGNvbnN0IFN0cmluZyYpOwog
CisgICAgdm9pZCBkaWROYXZpZ2F0ZVBhZ2UoKTsKKwogcHJpdmF0ZToKICAgICBQYWdlJiBtX3Bh
Z2U7CiAgICAgR2VvbG9jYXRpb25DbGllbnQmIG1fY2xpZW50OwpAQCAtNzMsNiArNzYsMTEgQEAg
cHJpdmF0ZToKIAogICAgIHN0ZDo6b3B0aW9uYWw8R2VvbG9jYXRpb25Qb3NpdGlvbkRhdGE+IG1f
bGFzdFBvc2l0aW9uOwogCisgICAgYm9vbCBuZWVkc0hpZ2hBY2N1cmFjeSgpIGNvbnN0IHsgcmV0
dXJuICFtX2hpZ2hBY2N1cmFjeU9ic2VydmVycy5pc0VtcHR5KCk7IH0KKworICAgIHZvaWQgc3Rh
cnRVcGRhdGluZ0lmTmVjZXNzYXJ5KCk7CisgICAgdm9pZCBzdG9wVXBkYXRpbmdJZk5lY2Vzc2Fy
eSgpOworCiAgICAgdHlwZWRlZiBIYXNoU2V0PFJlZjxHZW9sb2NhdGlvbj4+IE9ic2VydmVyc1Nl
dDsKICAgICAvLyBBbGwgb2JzZXJ2ZXJzOyBib3RoIHRob3NlIHJlcXVlc3RpbmcgaGlnaCBhY2N1
cmFjeSBhbmQgdGhvc2Ugbm90LgogICAgIE9ic2VydmVyc1NldCBtX29ic2VydmVyczsKQEAgLTgw
LDYgKzg4LDkgQEAgcHJpdmF0ZToKIAogICAgIC8vIFdoaWxlIHRoZSBwYWdlIGlzIG5vdCB2aXNp
YmxlLCB3ZSBwZW5kIHBlcm1pc3Npb24gcmVxdWVzdHMuCiAgICAgSGFzaFNldDxSZWY8R2VvbG9j
YXRpb24+PiBtX3BlbmRpbmdQZXJtaXNzaW9uUmVxdWVzdDsKKworICAgIFJlZ2lzdHJhYmxlRG9t
YWluIG1fcmVnaXN0cmFibGVEb21haW47CisgICAgYm9vbCBtX2lzVXBkYXRpbmcgeyBmYWxzZSB9
OwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9nZW9sb2NhdGlvbi9HZW9sb2NhdGlvblBvc2l0aW9uRGF0YS5oIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9nZW9sb2NhdGlvbi9HZW9sb2NhdGlvblBvc2l0aW9uRGF0YS5oCmlu
ZGV4IDkyNjIyMTcwYzhhYWQ2OTg5YjhhMTJjZTQ4MzU2ZGM2ODdiZjZlMzUuLmNjMjE4MGE4Mzdk
Mjc0M2MxZmJmNzYxYzQxMGUxYzdlYmZlYWVlN2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvZ2VvbG9jYXRpb24vR2VvbG9jYXRpb25Qb3NpdGlvbkRhdGEuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2dlb2xvY2F0aW9uL0dlb2xvY2F0aW9uUG9zaXRpb25EYXRhLmgK
QEAgLTI5LDcgKzI5LDcgQEAKICNpbmNsdWRlIDx3dGYvUmVmLmg+CiAjaW5jbHVkZSA8d3RmL1Jl
ZkNvdW50ZWQuaD4KIAotI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCisjaWYgUExBVEZPUk0oQ09D
T0EpCiBPQkpDX0NMQVNTIENMTG9jYXRpb247CiAjZW5kaWYKIApAQCAtNDcsNyArNDcsNyBAQCBw
dWJsaWM6CiAgICAgewogICAgIH0KIAotI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCisjaWYgUExB
VEZPUk0oQ09DT0EpCiAgICAgV0VCQ09SRV9FWFBPUlQgZXhwbGljaXQgR2VvbG9jYXRpb25Qb3Np
dGlvbkRhdGEoQ0xMb2NhdGlvbiopOwogI2VuZGlmCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvZ2VvbG9jYXRpb24vY29jb2EvR2VvbG9jYXRpb25Qb3NpdGlvbkRhdGFDb2Nv
YS5tbSBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZ2VvbG9jYXRpb24vY29jb2EvR2VvbG9jYXRp
b25Qb3NpdGlvbkRhdGFDb2NvYS5tbQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5jMGE5YmVlNjU1Njk0ZGIzYWJmMTU3
ZWVkMTkwNzZlYWQ1ODU0NDA2Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9nZW9sb2NhdGlvbi9jb2NvYS9HZW9sb2NhdGlvblBvc2l0aW9uRGF0YUNvY29hLm1tCkBA
IC0wLDAgKzEsNTMgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQXBwbGUgSW5jLiBBbGwg
UmlnaHRzIFJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUg
bWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExF
IElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQg
T0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisg
KiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAq
LworCisjaW1wb3J0ICJjb25maWcuaCIKKyNpbXBvcnQgIkdlb2xvY2F0aW9uUG9zaXRpb24uaCIK
KworI2ltcG9ydCA8Q29yZUxvY2F0aW9uL0NMTG9jYXRpb24uaD4KKworbmFtZXNwYWNlIFdlYkNv
cmUgeworCitHZW9sb2NhdGlvblBvc2l0aW9uRGF0YTo6R2VvbG9jYXRpb25Qb3NpdGlvbkRhdGEo
Q0xMb2NhdGlvbiogbG9jYXRpb24pCisgICAgOiB0aW1lc3RhbXAobG9jYXRpb24udGltZXN0YW1w
LnRpbWVJbnRlcnZhbFNpbmNlMTk3MCkKKyAgICAsIGxhdGl0dWRlKGxvY2F0aW9uLmNvb3JkaW5h
dGUubGF0aXR1ZGUpCisgICAgLCBsb25naXR1ZGUobG9jYXRpb24uY29vcmRpbmF0ZS5sb25naXR1
ZGUpCisgICAgLCBhY2N1cmFjeShsb2NhdGlvbi5ob3Jpem9udGFsQWNjdXJhY3kpCit7CisgICAg
aWYgKGxvY2F0aW9uLnZlcnRpY2FsQWNjdXJhY3kgPj0gMC4wKSB7CisgICAgICAgIGFsdGl0dWRl
ID0gbG9jYXRpb24uYWx0aXR1ZGU7CisgICAgICAgIGFsdGl0dWRlQWNjdXJhY3kgPSBsb2NhdGlv
bi52ZXJ0aWNhbEFjY3VyYWN5OworICAgIH0KKyAgICBpZiAobG9jYXRpb24uc3BlZWQgPj0gMC4w
KQorICAgICAgICBzcGVlZCA9IGxvY2F0aW9uLnNwZWVkOworICAgIGlmIChsb2NhdGlvbi5jb3Vy
c2UgPj0gMC4wKQorICAgICAgICBoZWFkaW5nID0gbG9jYXRpb24uY291cnNlOworI2lmICFQTEFU
Rk9STShNQUNDQVRBTFlTVCkKKyAgICBpZiAobG9jYXRpb24uZmxvb3IpCisgICAgICAgIGZsb29y
TGV2ZWwgPSBsb2NhdGlvbi5mbG9vci5sZXZlbDsKKyNlbmRpZgorfQorCit9IC8vIG5hbWVzcGFj
ZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2dlb2xvY2F0aW9u
L2lvcy9HZW9sb2NhdGlvblBvc2l0aW9uRGF0YUlPUy5tbSBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvZ2VvbG9jYXRpb24vaW9zL0dlb2xvY2F0aW9uUG9zaXRpb25EYXRhSU9TLm1tCmRlbGV0ZWQg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5OGQ5YTI0MjFlN2YyMzA5YjRmNjIzYjE0ZDdjYmUyYjZj
N2UwNDVjLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvZ2VvbG9jYXRpb24vaW9zL0dlb2xvY2F0aW9uUG9zaXRpb25E
YXRhSU9TLm1tCisrKyAvZGV2L251bGwKQEAgLTEsNTcgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdo
dCAoQykgMjAxNyBBcHBsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgot
ICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgot
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQg
QU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFRIRQotICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgotICogQ09OVFJJQlVUT1JTIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCi0gKiBF
WEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sCi0gKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKLSAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKLSAqIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpbXBvcnQgImNvbmZpZy5oIgotI2ltcG9y
dCAiR2VvbG9jYXRpb25Qb3NpdGlvbi5oIgotCi0jaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKLQot
I2ltcG9ydCA8Q29yZUxvY2F0aW9uL0NMTG9jYXRpb24uaD4KLQotbmFtZXNwYWNlIFdlYkNvcmUg
ewotCi1HZW9sb2NhdGlvblBvc2l0aW9uRGF0YTo6R2VvbG9jYXRpb25Qb3NpdGlvbkRhdGEoQ0xM
b2NhdGlvbiogbG9jYXRpb24pCi0gICAgOiB0aW1lc3RhbXAobG9jYXRpb24udGltZXN0YW1wLnRp
bWVJbnRlcnZhbFNpbmNlMTk3MCkKLSAgICAsIGxhdGl0dWRlKGxvY2F0aW9uLmNvb3JkaW5hdGUu
bGF0aXR1ZGUpCi0gICAgLCBsb25naXR1ZGUobG9jYXRpb24uY29vcmRpbmF0ZS5sb25naXR1ZGUp
Ci0gICAgLCBhY2N1cmFjeShsb2NhdGlvbi5ob3Jpem9udGFsQWNjdXJhY3kpCi17Ci0gICAgaWYg
KGxvY2F0aW9uLnZlcnRpY2FsQWNjdXJhY3kgPj0gMC4wKSB7Ci0gICAgICAgIGFsdGl0dWRlID0g
bG9jYXRpb24uYWx0aXR1ZGU7Ci0gICAgICAgIGFsdGl0dWRlQWNjdXJhY3kgPSBsb2NhdGlvbi52
ZXJ0aWNhbEFjY3VyYWN5OwotICAgIH0KLSAgICBpZiAobG9jYXRpb24uc3BlZWQgPj0gMC4wKQot
ICAgICAgICBzcGVlZCA9IGxvY2F0aW9uLnNwZWVkOwotICAgIGlmIChsb2NhdGlvbi5jb3Vyc2Ug
Pj0gMC4wKQotICAgICAgICBoZWFkaW5nID0gbG9jYXRpb24uY291cnNlOwotI2lmICFQTEFURk9S
TShNQUNDQVRBTFlTVCkKLSAgICBpZiAobG9jYXRpb24uZmxvb3IpCi0gICAgICAgIGZsb29yTGV2
ZWwgPSBsb2NhdGlvbi5mbG9vci5sZXZlbDsKLSNlbmRpZgotfQotCi19Ci0KLSNlbmRpZiAvLyBQ
TEFURk9STShJT1NfRkFNSUxZKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvU291cmNlc0Nv
Y29hLnR4dCBiL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXNDb2NvYS50eHQKaW5kZXggMTA3NWVhYzQ3
NmE1NGI4MjAwZDA2ZTliODQzNmIyNDg5NWQ0MmM2Mi4uNjUyOTZlMjViNzE1ZGZlMzA4MDVmZDdk
MWFiNzc0MzlmNDhmMjI1ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvU291cmNlc0NvY29h
LnR4dAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzQ29jb2EudHh0CkBAIC0yNTEsNiArMjUx
LDcgQEAgcGxhdGZvcm0vY2YvTWVkaWFBY2Nlc3NpYmlsaXR5U29mdExpbmsuY3BwCiBwbGF0Zm9y
bS9jZi9SdW5Mb29wT2JzZXJ2ZXIuY3BwCiBwbGF0Zm9ybS9jZi9TaGFyZWRCdWZmZXJDRi5jcHAK
IHBsYXRmb3JtL2NvY29hL0NvbnRlbnRGaWx0ZXJVbmJsb2NrSGFuZGxlckNvY29hLm1tIEBuby11
bmlmeQorcGxhdGZvcm0vY29jb2EvQ29yZUxvY2F0aW9uR2VvbG9jYXRpb25Qcm92aWRlci5tbQog
cGxhdGZvcm0vY29jb2EvQ29yZVZpZGVvU29mdExpbmsuY3BwCiBwbGF0Zm9ybS9jb2NvYS9EcmFn
RGF0YUNvY29hLm1tCiBwbGF0Zm9ybS9jb2NvYS9EcmFnSW1hZ2VDb2NvYS5tbQpAQCAtMzE3LDcg
KzMxOCw3IEBAIHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0NETVNlc3Npb25B
VkZvdW5kYXRpb25PYmpDLm1tCiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9D
RE1TZXNzaW9uQVZTdHJlYW1TZXNzaW9uLm1tCiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRp
b24vb2JqYy9DRE1TZXNzaW9uTWVkaWFTb3VyY2VBVkZPYmpDLm1tCiBwbGF0Zm9ybS9ncmFwaGlj
cy9hdmZvdW5kYXRpb24vb2JqYy9JbWFnZURlY29kZXJBVkZPYmpDLm1tCi1wbGF0Zm9ybS9ncmFw
aGljcy9hdmZvdW5kYXRpb24vb2JqYy9JbmJhbmRUZXh0VHJhY2tQcml2YXRlQVZGT2JqQy5tbQor
cGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvSW5iYW5kVGV4dFRyYWNrUHJpdmF0
ZUFWRk9iakMubW0gQG5vLXVuaWZ5CiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2Jq
Yy9JbmJhbmRDaGFwdGVyVHJhY2tQcml2YXRlQVZGT2JqQy5tbSBAbm8tdW5pZnkKIHBsYXRmb3Jt
L2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0xvY2FsU2FtcGxlQnVmZmVyRGlzcGxheUxheWVy
Lm1tCiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXliYWNrVGFy
Z2V0UGlja2VyTWFjLm1tCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9w
cm9qZWN0LnBieHByb2oKaW5kZXggZjFlZTk3MTI2NWVmYWQ3MzYxYTIxOWNiY2RjZjhkMjU0MmIz
N2M2MC4uM2QxYjY3MzVjNTMyNDY1ZTdjYWZjM2JiMjViM2M0NGM4NDJhZGJkYSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBi
L1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMTM1
Miw2ICsxMzUyLDcgQEAKIAkJNDY4MzQ0RTAxRURERkFBQTAwQjc3OTVCIC8qIERPTVJlY3RMaXN0
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0NjgzNDRE
RTFFRERGQTVGMDBCNzc5NUIgLyogRE9NUmVjdExpc3QuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklC
VVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk0NjgzREY0MDI3NjdERjk4MDA3RDAwQzggLyog
SlNTaGFkb3dSZWFsbUdsb2JhbFNjb3BlQmFzZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gNDY4M0RGM0UyNzY3REY5ODAwN0QwMEM4IC8qIEpTU2hhZG93
UmVhbG1HbG9iYWxTY29wZUJhc2UuaCAqLzsgfTsKIAkJNDY4M0RGNDEyNzY3RTkxQTAwN0QwMEM4
IC8qIFNoYWRvd1JlYWxtR2xvYmFsU2NvcGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDQ2ODNERjNCMjc2N0RGMjYwMDdEMDBDOCAvKiBTaGFkb3dSZWFs
bUdsb2JhbFNjb3BlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsg
fTsgfTsKKwkJNDY4OEU5ODAyN0I2QjQ1MDAwNTY3Q0QyIC8qIENvcmVMb2NhdGlvbkdlb2xvY2F0
aW9uUHJvdmlkZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDQ2ODhFOTdGMjdCNkI0NDQwMDU2N0NEMiAvKiBDb3JlTG9jYXRpb25HZW9sb2NhdGlvblBy
b3ZpZGVyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsK
IAkJNDY4OEVFM0MyNkREMjYxMDAwMkFGNUM0IC8qIENyb3NzT3JpZ2luTW9kZS5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDY4OEVFM0EyNkREMjYwQzAw
MkFGNUM0IC8qIENyb3NzT3JpZ2luTW9kZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0g
KFByaXZhdGUsICk7IH07IH07CiAJCTQ2OTQzREM5Mjc2M0Y4MTcwMDRCNjEwRSAvKiBTaGFyZWRX
b3JrZXJPYmplY3RJZGVudGlmaWVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA0Njk0M0RDNzI3NjNGODBFMDA0QjYxMEUgLyogU2hhcmVkV29ya2VyT2Jq
ZWN0SWRlbnRpZmllci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7
IH07IH07CiAJCTQ2OTg1RjIzMjdBNEE2QUQwMDk3QTMyQiAvKiBTaGFyZWRXb3JrZXJLZXkuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ2OTg1RjIyMjdB
NEE2ODYwMDk3QTMyQiAvKiBTaGFyZWRXb3JrZXJLZXkuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklC
VVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwpAQCAtMTM3Nyw2ICsxMzc4LDcgQEAKIAkJNDZDNjk2
Q0IxRTcyMDVGNzAwNTk3OTM3IC8qIENQVU1vbml0b3IuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ2QzY5NkM5MUU3MjA1RTQwMDU5NzkzNyAvKiBDUFVN
b25pdG9yLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsK
IAkJNDZDNjk2Q0MxRTcyMDVGQzAwNTk3OTM3IC8qIENQVU1vbml0b3IuY3BwIGluIFNvdXJjZXMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDZDNjk2Q0ExRTcyMDVFNDAwNTk3
OTM3IC8qIENQVU1vbml0b3IuY3BwICovOyB9OwogCQk0NkM4M0VGRTFBOUJCRTI5MDBBNzlBNDEg
LyogR2VvTm90aWZpZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDQ2QzgzRUZDMUE5QkJFMjkwMEE3OUE0MSAvKiBHZW9Ob3RpZmllci5oICovOyBzZXR0
aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCTQ2Q0E5NDMxMjdCODY5
NTgwMEY0RjVGRiAvKiBJbmJhbmRUZXh0VHJhY2tQcml2YXRlQVZGT2JqQy5tbSBpbiBTb3VyY2Vz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDA3QUE2QjZBMTY2RDAxOTUwMEQ0
NTY3MSAvKiBJbmJhbmRUZXh0VHJhY2tQcml2YXRlQVZGT2JqQy5tbSAqLzsgfTsKIAkJNDZDQTlD
NDQxRjk3QkJFOTAwNENGQzNBIC8qIFZpc2liaWxpdHlTdGF0ZS5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDZDQTlDNDExRjk3QkJFNzAwNENGQzNBIC8q
IFZpc2liaWxpdHlTdGF0ZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUs
ICk7IH07IH07CiAJCTQ2Q0Y1MDRBMjdBQjFFQTQwMDcwREJDOCAvKiBTaGFyZWRXb3JrZXJDb250
ZXh0TWFuYWdlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gNDZDRjUwNDgyN0FCMUVBMTAwNzBEQkM4IC8qIFNoYXJlZFdvcmtlckNvbnRleHRNYW5hZ2Vy
LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNDZE
MDAwNDAyNkEwRkVCMzAwRDFCRjFFIC8qIFN1Ym1pdEV2ZW50LmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0NkQwMDAzRTI2QTBGRTZGMDBEMUJGMUUgLyog
U3VibWl0RXZlbnQuaCAqLzsgfTsKQEAgLTI2OTUsNyArMjY5Nyw3IEBACiAJCTgzNzY1Rjk1MURB
QzUyMkYwMEMwNjUzNyAvKiBNb3VzZUV2ZW50SW5pdC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODM3NjVGOTQxREFDNTIxODAwQzA2NTM3IC8qIE1vdXNl
RXZlbnRJbml0LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsg
fTsKIAkJODM3ODg3ODIyNEQ4QTYwOTAwMEQ0QTVCIC8qIEF1ZGlvQnVmZmVyU291cmNlT3B0aW9u
cy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODM3ODg3
N0YyNEQ4QTVGQzAwMEQ0QTVCIC8qIEF1ZGlvQnVmZmVyU291cmNlT3B0aW9ucy5oICovOyB9Owog
CQk4Mzc5MzYzRjFGQkJCMEI0MDBDODAyM0MgLyogU2VydmljZVdvcmtlckNsaWVudERhdGEuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDgzNzkzNjNFMUZC
QkIwQTUwMEM4MDIzQyAvKiBTZXJ2aWNlV29ya2VyQ2xpZW50RGF0YS5oICovOyBzZXR0aW5ncyA9
IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07Ci0JCTgzNzk2NENGMUY4REI2OUQwMDIx
OEVBMCAvKiBHZW9sb2NhdGlvblBvc2l0aW9uRGF0YUlPUy5tbSBpbiBTb3VyY2VzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDgzNzk2NENFMUY4REI2OUEwMDIxOEVBMCAvKiBH
ZW9sb2NhdGlvblBvc2l0aW9uRGF0YUlPUy5tbSAqLzsgfTsKKwkJODM3OTY0Q0YxRjhEQjY5RDAw
MjE4RUEwIC8qIEdlb2xvY2F0aW9uUG9zaXRpb25EYXRhQ29jb2EubW0gaW4gU291cmNlcyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4Mzc5NjRDRTFGOERCNjlBMDAyMThFQTAg
LyogR2VvbG9jYXRpb25Qb3NpdGlvbkRhdGFDb2NvYS5tbSAqLzsgfTsKIAkJODM3QTgwMTMxRTFF
MTI3MzAwMDI2QjlGIC8qIExvY2FsaXphYmxlLnN0cmluZ3NkaWN0IGluIFJlc291cmNlcyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4MzdBODAxMTFFMUUxMjczMDAwMjZCOUYg
LyogTG9jYWxpemFibGUuc3RyaW5nc2RpY3QgKi87IH07CiAJCTgzN0MwQjc2MjREQjM4NTAwMDVE
NTk1OSAvKiBEeW5hbWljc0NvbXByZXNzb3JPcHRpb25zLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4MzdDMEI3MzI0REIzODQyMDA1RDU5NTkgLyogRHlu
YW1pY3NDb21wcmVzc29yT3B0aW9ucy5oICovOyB9OwogCQk4MzdGQjM0NTFGOUVBMDZEMDBEMEZD
MzEgLyogRXh0ZW5kYWJsZU1lc3NhZ2VFdmVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gODM3RkIzNDAxRjlFQTA2NjAwRDBGQzMxIC8qIEV4dGVuZGFi
bGVNZXNzYWdlRXZlbnQuaCAqLzsgfTsKQEAgLTkyNjksNiArOTI3MSw4IEBACiAJCTQ2ODNERjND
Mjc2N0RGMjYwMDdEMDBDOCAvKiBTaGFkb3dSZWFsbUdsb2JhbFNjb3BlLmlkbCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBTaGFk
b3dSZWFsbUdsb2JhbFNjb3BlLmlkbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDY4
M0RGM0QyNzY3REY5ODAwN0QwMEM4IC8qIEpTU2hhZG93UmVhbG1HbG9iYWxTY29wZUJhc2UuY3Bw
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNTaGFkb3dSZWFsbUdsb2Jh
bFNjb3BlQmFzZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQ2ODNERjNFMjc2
N0RGOTgwMDdEMDBDOCAvKiBKU1NoYWRvd1JlYWxtR2xvYmFsU2NvcGVCYXNlLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTU2hhZG93UmVhbG1HbG9iYWxTY29wZUJhc2UuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNDY4OEU5N0QyN0I2QjQ0MzAwNTY3Q0QyIC8q
IENvcmVMb2NhdGlvbkdlb2xvY2F0aW9uUHJvdmlkZXIubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGgg
PSBDb3JlTG9jYXRpb25HZW9sb2NhdGlvblByb3ZpZGVyLm1tOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OworCQk0Njg4RTk3RjI3QjZCNDQ0MDA1NjdDRDIgLyogQ29yZUxvY2F0aW9uR2VvbG9j
YXRpb25Qcm92aWRlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBDb3JlTG9jYXRpb25HZW9sb2NhdGlvblBy
b3ZpZGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQ2ODhFRTNBMjZERDI2MEMw
MDJBRjVDNCAvKiBDcm9zc09yaWdpbk1vZGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQ3Jvc3NPcmlnaW5N
b2RlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQ2OEI4QkRFMjVDQzg0OTMwMEY2
NzgyMiAvKiBKU0Jhc2VBdWRpb0NvbnRleHRDdXN0b20uY3BwICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0g
SlNCYXNlQXVkaW9Db250ZXh0Q3VzdG9tLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJNDY5NDNEQzcyNzYzRjgwRTAwNEI2MTBFIC8qIFNoYXJlZFdvcmtlck9iamVjdElkZW50aWZp
ZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gU2hhcmVkV29ya2VyT2JqZWN0SWRlbnRpZmllci5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMTIxOTAsNyArMTIxOTQsNyBAQAogCQk4Mzc4ODc4
MTI0RDhBNUZDMDAwRDRBNUIgLyogQXVkaW9CdWZmZXJTb3VyY2VPcHRpb25zLmlkbCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBB
dWRpb0J1ZmZlclNvdXJjZU9wdGlvbnMuaWRsOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQk4Mzc5MzYzQzFGQkJCMEE0MDBDODAyM0MgLyogU2VydmljZVdvcmtlckNsaWVudERhdGEuY3Bw
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gU2VydmljZVdvcmtlckNsaWVu
dERhdGEuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk4Mzc5MzYzRTFGQkJCMEE1
MDBDODAyM0MgLyogU2VydmljZVdvcmtlckNsaWVudERhdGEuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gU2VydmljZVdvcmtlckNsaWVudERhdGEuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKLQkJODM3OTY0Q0UxRjhEQjY5QTAwMjE4RUEwIC8qIEdlb2xvY2F0aW9uUG9z
aXRpb25EYXRhSU9TLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBuYW1lID0g
R2VvbG9jYXRpb25Qb3NpdGlvbkRhdGFJT1MubW07IHBhdGggPSBNb2R1bGVzL2dlb2xvY2F0aW9u
L2lvcy9HZW9sb2NhdGlvblBvc2l0aW9uRGF0YUlPUy5tbTsgc291cmNlVHJlZSA9IFNPVVJDRV9S
T09UOyB9OworCQk4Mzc5NjRDRTFGOERCNjlBMDAyMThFQTAgLyogR2VvbG9jYXRpb25Qb3NpdGlv
bkRhdGFDb2NvYS5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgbmFtZSA9IEdl
b2xvY2F0aW9uUG9zaXRpb25EYXRhQ29jb2EubW07IHBhdGggPSBNb2R1bGVzL2dlb2xvY2F0aW9u
L2NvY29hL0dlb2xvY2F0aW9uUG9zaXRpb25EYXRhQ29jb2EubW07IHNvdXJjZVRyZWUgPSBTT1VS
Q0VfUk9PVDsgfTsKIAkJODM3QTgwMTIxRTFFMTI3MzAwMDI2QjlGIC8qIGVuICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dC5wbGlzdC5zdHJpbmdz
ZGljdDsgbmFtZSA9IGVuOyBwYXRoID0gZW4ubHByb2ovTG9jYWxpemFibGUuc3RyaW5nc2RpY3Q7
IHNvdXJjZVRyZWUgPSBTT1VSQ0VfUk9PVDsgfTsKIAkJODM3QjdEMUYxREMzRjU0QzAwRDA1MUZD
IC8qIFZhbGlkYXRpb25CdWJibGVJT1MubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpj
cHA7IHBhdGggPSBWYWxpZGF0aW9uQnViYmxlSU9TLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQk4MzdDMEI3MzI0REIzODQyMDA1RDU5NTkgLyogRHluYW1pY3NDb21wcmVzc29yT3B0
aW9ucy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBEeW5hbWljc0NvbXByZXNzb3JPcHRpb25zLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0yMTYwNiw2ICsyMTYxMCwxNCBAQAogCQkJcGF0aCA9
IGNvbnRleHQ7CiAJCQlzb3VyY2VUcmVlID0gIjxncm91cD4iOwogCQl9OworCQk0NjVDM0QxOTI3
Qjk5MUM4MDAyMTMwMkYgLyogY29jb2EgKi8gPSB7CisJCQlpc2EgPSBQQlhHcm91cDsKKwkJCWNo
aWxkcmVuID0gKAorCQkJCTgzNzk2NENFMUY4REI2OUEwMDIxOEVBMCAvKiBHZW9sb2NhdGlvblBv
c2l0aW9uRGF0YUNvY29hLm1tICovLAorCQkJKTsKKwkJCXBhdGggPSBjb2NvYTsKKwkJCXNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7CisJCX07CiAJCTQ2Njk0Q0RFMjc1OTQ0NkQwMEUzMTUwRSAvKiBz
aGFyZWQgKi8gPSB7CiAJCQlpc2EgPSBQQlhHcm91cDsKIAkJCWNoaWxkcmVuID0gKApAQCAtMjUx
MDMsMTQgKzI1MTE1LDYgQEAKIAkJCXBhdGggPSBiZWFjb247CiAJCQlzb3VyY2VUcmVlID0gIjxn
cm91cD4iOwogCQl9OwotCQk4Mzc5NjRDQzFGOERCNjdEMDAyMThFQTAgLyogaW9zICovID0gewot
CQkJaXNhID0gUEJYR3JvdXA7Ci0JCQljaGlsZHJlbiA9ICgKLQkJCQk4Mzc5NjRDRTFGOERCNjlB
MDAyMThFQTAgLyogR2VvbG9jYXRpb25Qb3NpdGlvbkRhdGFJT1MubW0gKi8sCi0JCQkpOwotCQkJ
bmFtZSA9IGlvczsKLQkJCXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7Ci0JCX07CiAJCTgzRkIzMzY1
MUY1MDhBMTcwMDk4NkU1NCAvKiBlbnRyaWVzYXBpICovID0gewogCQkJaXNhID0gUEJYR3JvdXA7
CiAJCQljaGlsZHJlbiA9ICgKQEAgLTI2MTIxLDcgKzI2MTI1LDcgQEAKIAkJOTcxMTQ1RkYxNEVG
MDA3OTAwNjc0RkQ5IC8qIGdlb2xvY2F0aW9uICovID0gewogCQkJaXNhID0gUEJYR3JvdXA7CiAJ
CQljaGlsZHJlbiA9ICgKLQkJCQk4Mzc5NjRDQzFGOERCNjdEMDAyMThFQTAgLyogaW9zICovLAor
CQkJCTQ2NUMzRDE5MjdCOTkxQzgwMDIxMzAyRiAvKiBjb2NvYSAqLywKIAkJCQk5NzQ2QUYxMzE0
RjREREU2MDAzRTdBNzAgLyogR2VvbG9jYXRpb24uY3BwICovLAogCQkJCTk3NDZBRjE0MTRGNERE
RTYwMDNFN0E3MCAvKiBHZW9sb2NhdGlvbi5oICovLAogCQkJCTk3NDZBRjE1MTRGNERERTYwMDNF
N0E3MCAvKiBHZW9sb2NhdGlvbi5pZGwgKi8sCkBAIC0yNjgzMyw2ICsyNjgzNyw4IEBACiAJCQkJ
QzFGN0I3MkYyNDQ4RjJBQzAwMTI0NTU3IC8qIEFHWENvbXBpbGVyU2VydmljZS5jcHAgKi8sCiAJ
CQkJQzFGN0I3MzAyNDQ4RjJBQzAwMTI0NTU3IC8qIEFHWENvbXBpbGVyU2VydmljZS5oICovLAog
CQkJCUExNDA5MEZBMUFBNTFFMUQwMDkxMTkxQSAvKiBDb250ZW50RmlsdGVyVW5ibG9ja0hhbmRs
ZXJDb2NvYS5tbSAqLywKKwkJCQk0Njg4RTk3RjI3QjZCNDQ0MDA1NjdDRDIgLyogQ29yZUxvY2F0
aW9uR2VvbG9jYXRpb25Qcm92aWRlci5oICovLAorCQkJCTQ2ODhFOTdEMjdCNkI0NDMwMDU2N0NE
MiAvKiBDb3JlTG9jYXRpb25HZW9sb2NhdGlvblByb3ZpZGVyLm1tICovLAogCQkJCUNEN0QzMzQ1
MUM3QTE2QkYwMDA0MTI5MyAvKiBDb3JlVmlkZW9Tb2Z0TGluay5jcHAgKi8sCiAJCQkJQ0Q3RDMz
NDYxQzdBMTZCRjAwMDQxMjkzIC8qIENvcmVWaWRlb1NvZnRMaW5rLmggKi8sCiAJCQkJRjQ2MkU3
OUYyNDJBREEzQzAwMjA0REREIC8qIERyYWdEYXRhQ29jb2EubW0gKi8sCkBAIC0zMzkxOSw2ICsz
MzkyNSw3IEBACiAJCQkJM0Y4MDIwMzcxRTlFNDdDNTAwREVDNjFEIC8qIENvcmVBdWRpb0NhcHR1
cmVEZXZpY2VNYW5hZ2VyLmggaW4gSGVhZGVycyAqLywKIAkJCQk0MUZDQ0MzQjI3NDY2NzU2MDA4
OTJBRDYgLyogQ29yZUF1ZGlvQ2FwdHVyZVNvdXJjZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMDdB
RkY0MjIxRUZCMTQ0OTAwQjU0NUIzIC8qIENvcmVBdWRpb0NhcHR1cmVTb3VyY2VJT1MuaCBpbiBI
ZWFkZXJzICovLAorCQkJCTQ2ODhFOTgwMjdCNkI0NTAwMDU2N0NEMiAvKiBDb3JlTG9jYXRpb25H
ZW9sb2NhdGlvblByb3ZpZGVyLmggaW4gSGVhZGVycyAqLywKIAkJCQlDRDdEMzM0ODFDN0ExNkJG
MDAwNDEyOTMgLyogQ29yZVZpZGVvU29mdExpbmsuaCBpbiBIZWFkZXJzICovLAogCQkJCTg2MkYx
MjlFMThDMTU3NkYwMDVDNTRBRiAvKiBDb3VudGVkVXNlckFjdGl2aXR5LmggaW4gSGVhZGVycyAq
LywKIAkJCQlBODBFNkQwNDBBMTk4OUNBMDA3RkI4QzUgLyogQ291bnRlci5oIGluIEhlYWRlcnMg
Ki8sCkBAIC0zODY5MiwxMyArMzg2OTksMTQgQEAKIAkJCQk1MThGNEZGNjE5NENBNEU2MDA4MUJB
QUUgLyogR2FtZXBhZEJ1dHRvbi5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk1MTZDNjIyMDE5NTBE
NDg3MDAzMzdFNzUgLyogR2FtZXBhZEV2ZW50LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTUxQTlE
OUU5MTk1QjkzMUYwMDFCMkI1QyAvKiBHYW1lcGFkTWFuYWdlci5jcHAgaW4gU291cmNlcyAqLywK
LQkJCQk4Mzc5NjRDRjFGOERCNjlEMDAyMThFQTAgLyogR2VvbG9jYXRpb25Qb3NpdGlvbkRhdGFJ
T1MubW0gaW4gU291cmNlcyAqLywKKwkJCQk4Mzc5NjRDRjFGOERCNjlEMDAyMThFQTAgLyogR2Vv
bG9jYXRpb25Qb3NpdGlvbkRhdGFDb2NvYS5tbSBpbiBTb3VyY2VzICovLAogCQkJCTZFNzJGNTRF
MjI5RENEMTAwMEIzRTE1MSAvKiBHcmFwaGljc0NvbnRleHRHTEFOR0xFLmNwcCBpbiBTb3VyY2Vz
ICovLAogCQkJCTdDM0U1MTBCMThERjhGMzUwMEMxMTJGNyAvKiBIVE1MQ29udmVydGVyLm1tIGlu
IFNvdXJjZXMgKi8sCiAJCQkJQThEMDZCM0EwQTI2NURDRDAwNUU3MjAzIC8qIEhUTUxOYW1lcy5j
cHAgaW4gU291cmNlcyAqLywKIAkJCQkxQUM5MDBDMzE5NDNDMEZDMDA4NjI1QjUgLyogSFRUUEhl
YWRlck5hbWVzLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUNEMjdBRTUxMjJBOTg2ODcwMDk0N0ZG
OSAvKiBJbWFnZVJvdGF0aW9uU2Vzc2lvblZULm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJMDcwRTJE
MEYyNkYyNTA4OTAwMTRBQUMzIC8qIEluYmFuZENoYXB0ZXJUcmFja1ByaXZhdGVBVkZPYmpDLm1t
IGluIFNvdXJjZXMgKi8sCisJCQkJNDZDQTk0MzEyN0I4Njk1ODAwRjRGNUZGIC8qIEluYmFuZFRl
eHRUcmFja1ByaXZhdGVBVkZPYmpDLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJQ0QwNjNGODIxRTIz
RkE4OTAwODEyQkUzIC8qIEluaXREYXRhUmVnaXN0cnkuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJ
OTM1QzQ3NzAwOUFDNEQ3MzAwQTZBQUI0IC8qIEtleUV2ZW50TWFjLm1tIGluIFNvdXJjZXMgKi8s
CiAJCQkJQ0RBOThFMEIxNjAzQ0Q2MDAwRkVBM0IxIC8qIExlZ2FjeUNETS5jcHAgaW4gU291cmNl
cyAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL1BhZ2UuY3BwCmluZGV4IDZhODVlODQzZDhiYmUzZDE5MmQ5N2Y0OTZiZDdl
YjQ1NDc0OWRiYTQuLmVmZTBlMzgwNmRjODQ4MDMwZDIyYjlkOTAyOTE2NzkzMzg1YmZkYWEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcGFnZS9QYWdlLmNwcApAQCAtNjksNiArNjksNyBAQAogI2luY2x1ZGUgIkZyYW1lVHJlZS5o
IgogI2luY2x1ZGUgIkZyYW1lVmlldy5oIgogI2luY2x1ZGUgIkZ1bGxzY3JlZW5NYW5hZ2VyLmgi
CisjaW5jbHVkZSAiR2VvbG9jYXRpb25Db250cm9sbGVyLmgiCiAjaW5jbHVkZSAiSFRNTEVsZW1l
bnQuaCIKICNpbmNsdWRlICJIVE1MSW1hZ2VFbGVtZW50LmgiCiAjaW5jbHVkZSAiSFRNTE1lZGlh
RWxlbWVudC5oIgpAQCAtMTMzMiw2ICsxMzMzLDExIEBAIHZvaWQgUGFnZTo6ZGlkQ29tbWl0TG9h
ZCgpCiAgICAgcmVzZXRUZXh0UmVjb2duaXRpb25SZXN1bHRzKCk7CiAgICAgcmVzZXRJbWFnZUFu
YWx5c2lzUXVldWUoKTsKICNlbmRpZgorCisjaWYgRU5BQkxFKEdFT0xPQ0FUSU9OKQorICAgIGlm
IChhdXRvKiBnZW9sb2NhdGlvbkNvbnRyb2xsZXIgPSBHZW9sb2NhdGlvbkNvbnRyb2xsZXI6OmZy
b20odGhpcykpCisgICAgICAgIGdlb2xvY2F0aW9uQ29udHJvbGxlci0+ZGlkTmF2aWdhdGVQYWdl
KCk7CisjZW5kaWYKIH0KIAogdm9pZCBQYWdlOjpkaWRGaW5pc2hMb2FkKCkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL0NvcmVMb2NhdGlvbkdlb2xvY2F0aW9uUHJv
dmlkZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL0NvcmVMb2NhdGlvbkdlb2xv
Y2F0aW9uUHJvdmlkZXIuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5jNTI0NmM4ODRhY2Y4ZjY5ZmNiOGY4YWM0YWNj
N2Y0Y2RlNjQ1Y2VkCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Y29jb2EvQ29yZUxvY2F0aW9uR2VvbG9jYXRpb25Qcm92aWRlci5oCkBAIC0wLDAgKzEsNjcgQEAK
Ky8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlz
dHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5D
LiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhF
IElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwg
QVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJF
TUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERB
VEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgPHd0Zi9Db21wbGV0aW9uSGFu
ZGxlci5oPgorI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CisjaW5jbHVkZSA8d3RmL1JldGFpblB0
ci5oPgorCitPQkpDX0NMQVNTIFdlYkNMTG9jYXRpb25NYW5hZ2VyOworCituYW1lc3BhY2UgV2Vi
Q29yZSB7CisKK2NsYXNzIEdlb2xvY2F0aW9uUG9zaXRpb25EYXRhOworY2xhc3MgUmVnaXN0cmFi
bGVEb21haW47CisKK2NsYXNzIFdFQkNPUkVfRVhQT1JUIENvcmVMb2NhdGlvbkdlb2xvY2F0aW9u
UHJvdmlkZXIgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOworcHVibGljOgorICAgIGNs
YXNzIENsaWVudCB7CisgICAgcHVibGljOgorICAgICAgICB2aXJ0dWFsIH5DbGllbnQoKSB7IH0K
KworICAgICAgICB2aXJ0dWFsIHZvaWQgZ2VvbG9jYXRpb25BdXRob3JpemF0aW9uR3JhbnRlZChj
b25zdCBTdHJpbmcmIC8qd2Vic2l0ZUlkZW50aWZpZXIqLykgeyB9CisgICAgICAgIHZpcnR1YWwg
dm9pZCBnZW9sb2NhdGlvbkF1dGhvcml6YXRpb25EZW5pZWQoY29uc3QgU3RyaW5nJiAvKndlYnNp
dGVJZGVudGlmaWVyKi8pIHsgfQorICAgICAgICB2aXJ0dWFsIHZvaWQgcG9zaXRpb25DaGFuZ2Vk
KGNvbnN0IFN0cmluZyYgd2Vic2l0ZUlkZW50aWZpZXIsIEdlb2xvY2F0aW9uUG9zaXRpb25EYXRh
JiYpID0gMDsKKyAgICAgICAgdmlydHVhbCB2b2lkIGVycm9yT2NjdXJyZWQoY29uc3QgU3RyaW5n
JiB3ZWJzaXRlSWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiBlcnJvck1lc3NhZ2UpID0gMDsKKyAg
ICAgICAgdmlydHVhbCB2b2lkIHJlc2V0R2VvbG9jYXRpb24oY29uc3QgU3RyaW5nJiB3ZWJzaXRl
SWRlbnRpZmllcikgPSAwOworICAgIH07CisKKyAgICBDb3JlTG9jYXRpb25HZW9sb2NhdGlvblBy
b3ZpZGVyKGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiwgQ2xpZW50Jik7CisgICAgfkNvcmVMb2Nh
dGlvbkdlb2xvY2F0aW9uUHJvdmlkZXIoKTsKKworICAgIHZvaWQgc3RhcnQoKTsKKyAgICB2b2lk
IHN0b3AoKTsKKworICAgIHZvaWQgc2V0RW5hYmxlSGlnaEFjY3VyYWN5KGJvb2wpOworCisgICAg
c3RhdGljIHZvaWQgcmVxdWVzdEF1dGhvcml6YXRpb24oY29uc3QgUmVnaXN0cmFibGVEb21haW4m
LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmKTsKKworcHJpdmF0ZToKKyAgICBSZXRh
aW5QdHI8V2ViQ0xMb2NhdGlvbk1hbmFnZXI+IG1fbG9jYXRpb25NYW5hZ2VyOworfTsKKworfSAv
LyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Y29jb2EvQ29yZUxvY2F0aW9uR2VvbG9jYXRpb25Qcm92aWRlci5tbSBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2NvY29hL0NvcmVMb2NhdGlvbkdlb2xvY2F0aW9uUHJvdmlkZXIubW0KbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uZjI5NzhlZGI4MjQwN2I5YmFjMTgxZjVkMDcwOWEyNmI4MjY0MWMwMAotLS0gL2Rldi9u
dWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL0NvcmVMb2NhdGlvbkdlb2xv
Y2F0aW9uUHJvdmlkZXIubW0KQEAgLTAsMCArMSwyNjggQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMp
IDIwMjIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAor
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIu
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9S
UyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09O
VFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJV
U0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZ
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW1wb3J0
ICJjb25maWcuaCIKKyNpbXBvcnQgIkNvcmVMb2NhdGlvbkdlb2xvY2F0aW9uUHJvdmlkZXIuaCIK
KworI2ltcG9ydCAiR2VvbG9jYXRpb25Qb3NpdGlvbkRhdGEuaCIKKyNpbXBvcnQgIlJlZ2lzdHJh
YmxlRG9tYWluLmgiCisjaW1wb3J0IDxDb3JlTG9jYXRpb24vQ0xMb2NhdGlvbk1hbmFnZXJEZWxl
Z2F0ZS5oPgorI2ltcG9ydCA8Q29yZUxvY2F0aW9uL0NvcmVMb2NhdGlvbi5oPgorI2ltcG9ydCA8
d3RmL1NvZnRMaW5raW5nLmg+CisKKyNpZiBVU0UoQVBQTEVfSU5URVJOQUxfU0RLKQorI2ltcG9y
dCA8Q29yZUxvY2F0aW9uL0NMTG9jYXRpb25NYW5hZ2VyX1ByaXZhdGUuaD4KKyNlbmRpZgorCitT
T0ZUX0xJTktfRlJBTUVXT1JLKENvcmVMb2NhdGlvbikKKworU09GVF9MSU5LX0NMQVNTKENvcmVM
b2NhdGlvbiwgQ0xMb2NhdGlvbk1hbmFnZXIpCitTT0ZUX0xJTktfQ0xBU1MoQ29yZUxvY2F0aW9u
LCBDTExvY2F0aW9uKQorCitTT0ZUX0xJTktfQ09OU1RBTlQoQ29yZUxvY2F0aW9uLCBrQ0xMb2Nh
dGlvbkFjY3VyYWN5QmVzdCwgZG91YmxlKQorU09GVF9MSU5LX0NPTlNUQU5UKENvcmVMb2NhdGlv
biwga0NMTG9jYXRpb25BY2N1cmFjeUh1bmRyZWRNZXRlcnMsIGRvdWJsZSkKKworI2RlZmluZSBr
Q0xMb2NhdGlvbkFjY3VyYWN5QmVzdCBnZXRrQ0xMb2NhdGlvbkFjY3VyYWN5QmVzdCgpCisjZGVm
aW5lIGtDTExvY2F0aW9uQWNjdXJhY3lIdW5kcmVkTWV0ZXJzIGdldGtDTExvY2F0aW9uQWNjdXJh
Y3lIdW5kcmVkTWV0ZXJzKCkKKworc3RhdGljIGJvb2wgaXNBdXRob3JpemF0aW9uR3JhbnRlZChD
TEF1dGhvcml6YXRpb25TdGF0dXMgYXV0aG9yaXphdGlvblN0YXR1cykKK3sKKyAgICByZXR1cm4g
YXV0aG9yaXphdGlvblN0YXR1cyA9PSBrQ0xBdXRob3JpemF0aW9uU3RhdHVzQXV0aG9yaXplZEFs
d2F5cworI2lmIEhBVkUoQ09SRV9MT0NBVElPTl9BVVRIT1JJWkVEX1dIRU5fSU5fVVNFKQorICAg
ICAgICB8fCBhdXRob3JpemF0aW9uU3RhdHVzID09IGtDTEF1dGhvcml6YXRpb25TdGF0dXNBdXRo
b3JpemVkV2hlbkluVXNlCisjZW5kaWYKKyAgICAgICAgOworfQorCitAaW50ZXJmYWNlIFdlYkNM
TG9jYXRpb25NYW5hZ2VyIDogTlNPYmplY3Q8Q0xMb2NhdGlvbk1hbmFnZXJEZWxlZ2F0ZT4KK0Bl
bmQKKworQGltcGxlbWVudGF0aW9uIFdlYkNMTG9jYXRpb25NYW5hZ2VyIHsKKyAgICBSZXRhaW5Q
dHI8Q0xMb2NhdGlvbk1hbmFnZXI+IF9sb2NhdGlvbk1hbmFnZXI7CisgICAgV2ViQ29yZTo6Q29y
ZUxvY2F0aW9uR2VvbG9jYXRpb25Qcm92aWRlcjo6Q2xpZW50KiBfY2xpZW50OworICAgIFN0cmlu
ZyBfd2Vic2l0ZUlkZW50aWZpZXI7CisgICAgQk9PTCBfaXNXYWl0aW5nRm9yQXV0aG9yaXphdGlv
bjsKK30KKworLSAoaW5zdGFuY2V0eXBlKWluaXRXaXRoV2Vic2l0ZUlkZW50aWZpZXI6KGNvbnN0
IFN0cmluZyYpd2Vic2l0ZUlkZW50aWZpZXIgY2xpZW50OihXZWJDb3JlOjpDb3JlTG9jYXRpb25H
ZW9sb2NhdGlvblByb3ZpZGVyOjpDbGllbnQmKWNsaWVudAoreworICAgIHNlbGYgPSBbc3VwZXIg
aW5pdF07CisgICAgaWYgKCFzZWxmKQorICAgICAgICByZXR1cm4gbmlsOworCisgICAgLy8gRklY
TUU6IENhbGwgaW5pdFdpdGhXZWJzaXRlSWRlbnRpZmllciBhbmQgcGFzcyB0aGUgd2Vic2l0ZUlk
ZW50aWZpZXIgd2hlbiBIQVZFKENPUkVfTE9DQVRJT05fV0VCU0lURV9JREVOVElGSUVSUykgb25j
ZSA8cmRhcjovLzg4ODM0MzAxID4gaXMgZml4ZWQuCisgICAgVU5VU0VEX1BBUkFNKHdlYnNpdGVJ
ZGVudGlmaWVyKTsKKyAgICBfbG9jYXRpb25NYW5hZ2VyID0gYWRvcHROUyhbYWxsb2NDTExvY2F0
aW9uTWFuYWdlckluc3RhbmNlKCkgaW5pdF0pOworICAgIF9jbGllbnQgPSAmY2xpZW50OworICAg
IF93ZWJzaXRlSWRlbnRpZmllciA9IHdlYnNpdGVJZGVudGlmaWVyOworICAgIFtfbG9jYXRpb25N
YW5hZ2VyIHNldERlbGVnYXRlOnNlbGZdOworICAgIHJldHVybiBzZWxmOworfQorCistICh2b2lk
KWRlYWxsb2MKK3sKKyAgICBbX2xvY2F0aW9uTWFuYWdlciBzZXREZWxlZ2F0ZTpuaWxdOworICAg
IFtzdXBlciBkZWFsbG9jXTsKK30KKworLSAodm9pZClzdGFydAoreworICAgIGlmICghW2dldENM
TG9jYXRpb25NYW5hZ2VyQ2xhc3MoKSBsb2NhdGlvblNlcnZpY2VzRW5hYmxlZF0gfHwgIWlzQXV0
aG9yaXphdGlvbkdyYW50ZWQoW19sb2NhdGlvbk1hbmFnZXIgYXV0aG9yaXphdGlvblN0YXR1c10p
KSB7CisgICAgICAgIFtfbG9jYXRpb25NYW5hZ2VyIHN0b3BVcGRhdGluZ0xvY2F0aW9uXTsKKyAg
ICAgICAgX2NsaWVudC0+cmVzZXRHZW9sb2NhdGlvbihfd2Vic2l0ZUlkZW50aWZpZXIpOworICAg
ICAgICByZXR1cm47CisgICAgfQorCisgICAgW19sb2NhdGlvbk1hbmFnZXIgc3RhcnRVcGRhdGlu
Z0xvY2F0aW9uXTsKK30KKworLSAodm9pZClzdG9wCit7CisgICAgW19sb2NhdGlvbk1hbmFnZXIg
c3RvcFVwZGF0aW5nTG9jYXRpb25dOworfQorCistICh2b2lkKXNldEVuYWJsZUhpZ2hBY2N1cmFj
eTooQk9PTCloaWdoQWNjdXJhY3lFbmFibGVkCit7CisgICAgW19sb2NhdGlvbk1hbmFnZXIgc2V0
RGVzaXJlZEFjY3VyYWN5OmhpZ2hBY2N1cmFjeUVuYWJsZWQgPyBrQ0xMb2NhdGlvbkFjY3VyYWN5
QmVzdCA6IGtDTExvY2F0aW9uQWNjdXJhY3lIdW5kcmVkTWV0ZXJzXTsKK30KKworLSAodm9pZCly
ZXF1ZXN0R2VvbG9jYXRpb25BdXRob3JpemF0aW9uCit7CisgICAgaWYgKCFbZ2V0Q0xMb2NhdGlv
bk1hbmFnZXJDbGFzcygpIGxvY2F0aW9uU2VydmljZXNFbmFibGVkXSkgeworICAgICAgICBfY2xp
ZW50LT5nZW9sb2NhdGlvbkF1dGhvcml6YXRpb25EZW5pZWQoX3dlYnNpdGVJZGVudGlmaWVyKTsK
KyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIHN3aXRjaCAoW19sb2NhdGlvbk1hbmFnZXIg
YXV0aG9yaXphdGlvblN0YXR1c10pIHsKKyAgICBjYXNlIGtDTEF1dGhvcml6YXRpb25TdGF0dXNO
b3REZXRlcm1pbmVkOiB7CisgICAgICAgIGlmICghX2lzV2FpdGluZ0ZvckF1dGhvcml6YXRpb24p
IHsKKyAgICAgICAgICAgIF9pc1dhaXRpbmdGb3JBdXRob3JpemF0aW9uID0gWUVTOworICAgICAg
ICAgICAgW19sb2NhdGlvbk1hbmFnZXIgcmVxdWVzdFdoZW5JblVzZUF1dGhvcml6YXRpb25dOwor
ICAgICAgICB9CisgICAgICAgIGJyZWFrOworICAgIH0KKyAgICBjYXNlIGtDTEF1dGhvcml6YXRp
b25TdGF0dXNBdXRob3JpemVkQWx3YXlzOgorI2lmIEhBVkUoQ09SRV9MT0NBVElPTl9BVVRIT1JJ
WkVEX1dIRU5fSU5fVVNFKQorICAgIGNhc2Uga0NMQXV0aG9yaXphdGlvblN0YXR1c0F1dGhvcml6
ZWRXaGVuSW5Vc2U6CisjZW5kaWYKKyAgICAgICAgX2NsaWVudC0+Z2VvbG9jYXRpb25BdXRob3Jp
emF0aW9uR3JhbnRlZChfd2Vic2l0ZUlkZW50aWZpZXIpOworICAgICAgICBicmVhazsKKyAgICBj
YXNlIGtDTEF1dGhvcml6YXRpb25TdGF0dXNSZXN0cmljdGVkOgorICAgIGNhc2Uga0NMQXV0aG9y
aXphdGlvblN0YXR1c0RlbmllZDoKKyAgICAgICAgX2NsaWVudC0+Z2VvbG9jYXRpb25BdXRob3Jp
emF0aW9uRGVuaWVkKF93ZWJzaXRlSWRlbnRpZmllcik7CisgICAgICAgIGJyZWFrOworICAgIH0K
K30KKworLSAodm9pZClsb2NhdGlvbk1hbmFnZXJEaWRDaGFuZ2VBdXRob3JpemF0aW9uOihDTExv
Y2F0aW9uTWFuYWdlciAqKW1hbmFnZXIKK3sKKyAgICBhdXRvIHN0YXR1cyA9IFtfbG9jYXRpb25N
YW5hZ2VyIGF1dGhvcml6YXRpb25TdGF0dXNdOworICAgIGlmIChfaXNXYWl0aW5nRm9yQXV0aG9y
aXphdGlvbikgeworICAgICAgICBzd2l0Y2ggKHN0YXR1cykgeworICAgICAgICBjYXNlIGtDTEF1
dGhvcml6YXRpb25TdGF0dXNOb3REZXRlcm1pbmVkOgorICAgICAgICAgICAgLy8gVGhpcyBjYW4g
aGFwcGVuIGFmdGVyIHJlc3VtZSBpZiB0aGUgdXNlciBoYXMgc3RpbGwgbm90IGFuc3dlcmVkIHRo
ZSBkaWFsb2cuIFdlIGp1c3QgaGF2ZSB0byB3YWl0IGZvciB0aGUgcGVybWlzc2lvbi4KKyAgICAg
ICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIGtDTEF1dGhvcml6YXRpb25TdGF0dXNEZW5pZWQ6
CisgICAgICAgIGNhc2Uga0NMQXV0aG9yaXphdGlvblN0YXR1c1Jlc3RyaWN0ZWQ6CisgICAgICAg
ICAgICBfaXNXYWl0aW5nRm9yQXV0aG9yaXphdGlvbiA9IE5POworICAgICAgICAgICAgX2NsaWVu
dC0+Z2VvbG9jYXRpb25BdXRob3JpemF0aW9uRGVuaWVkKF93ZWJzaXRlSWRlbnRpZmllcik7Cisg
ICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBrQ0xBdXRob3JpemF0aW9uU3RhdHVzQXV0
aG9yaXplZEFsd2F5czoKKyNpZiBIQVZFKENPUkVfTE9DQVRJT05fQVVUSE9SSVpFRF9XSEVOX0lO
X1VTRSkKKyAgICAgICAgY2FzZSBrQ0xBdXRob3JpemF0aW9uU3RhdHVzQXV0aG9yaXplZFdoZW5J
blVzZToKKyNlbmRpZgorICAgICAgICAgICAgX2lzV2FpdGluZ0ZvckF1dGhvcml6YXRpb24gPSBO
TzsKKyAgICAgICAgICAgIF9jbGllbnQtPmdlb2xvY2F0aW9uQXV0aG9yaXphdGlvbkdyYW50ZWQo
X3dlYnNpdGVJZGVudGlmaWVyKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAg
fSBlbHNlIHsKKyAgICAgICAgaWYgKHN0YXR1cyA9PSBrQ0xBdXRob3JpemF0aW9uU3RhdHVzRGVu
aWVkIHx8IHN0YXR1cyA9PSBrQ0xBdXRob3JpemF0aW9uU3RhdHVzUmVzdHJpY3RlZCkgeworICAg
ICAgICAgICAgW19sb2NhdGlvbk1hbmFnZXIgc3RvcFVwZGF0aW5nTG9jYXRpb25dOworICAgICAg
ICAgICAgX2NsaWVudC0+cmVzZXRHZW9sb2NhdGlvbihfd2Vic2l0ZUlkZW50aWZpZXIpOworICAg
ICAgICB9CisgICAgfQorfQorCistICh2b2lkKWxvY2F0aW9uTWFuYWdlcjooQ0xMb2NhdGlvbk1h
bmFnZXIgKiltYW5hZ2VyIGRpZFVwZGF0ZUxvY2F0aW9uczooTlNBcnJheSAqKWxvY2F0aW9ucwor
eworICAgIFVOVVNFRF9QQVJBTShtYW5hZ2VyKTsKKyAgICBmb3IgKENMTG9jYXRpb24gKmxvY2F0
aW9uIGluIGxvY2F0aW9ucykKKyAgICAgICAgX2NsaWVudC0+cG9zaXRpb25DaGFuZ2VkKF93ZWJz
aXRlSWRlbnRpZmllciwgV2ViQ29yZTo6R2VvbG9jYXRpb25Qb3NpdGlvbkRhdGEgeyBsb2NhdGlv
biB9KTsKK30KKworLSAodm9pZClsb2NhdGlvbk1hbmFnZXI6KENMTG9jYXRpb25NYW5hZ2VyICop
bWFuYWdlciBkaWRGYWlsV2l0aEVycm9yOihOU0Vycm9yICopZXJyb3IKK3sKKyAgICBBU1NFUlQo
ZXJyb3IpOworICAgIFVOVVNFRF9QQVJBTShtYW5hZ2VyKTsKKworICAgIGlmIChbZXJyb3IgY29k
ZV0gPT0ga0NMRXJyb3JEZW5pZWQpIHsKKyAgICAgICAgLy8gSWdub3JlIHRoZSBlcnJvciBoZXJl
IGFuZCBsZXQgbG9jYXRpb25NYW5hZ2VyOmRpZENoYW5nZUF1dGhvcml6YXRpb25TdGF0dXM6IGhh
bmRsZSB0aGUgcGVybWlzc2lvbi4KKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIE5TU3Ry
aW5nICplcnJvck1lc3NhZ2UgPSBbZXJyb3IgbG9jYWxpemVkRGVzY3JpcHRpb25dOworICAgIF9j
bGllbnQtPmVycm9yT2NjdXJyZWQoX3dlYnNpdGVJZGVudGlmaWVyLCBlcnJvck1lc3NhZ2UpOwor
fQorCitAZW5kCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworQ29yZUxvY2F0aW9uR2VvbG9jYXRp
b25Qcm92aWRlcjo6Q29yZUxvY2F0aW9uR2VvbG9jYXRpb25Qcm92aWRlcihjb25zdCBSZWdpc3Ry
YWJsZURvbWFpbiYgcmVnaXN0cmFibGVEb21haW4sIENsaWVudCYgY2xpZW50KQorICAgIDogbV9s
b2NhdGlvbk1hbmFnZXIoYWRvcHROUyhbW1dlYkNMTG9jYXRpb25NYW5hZ2VyIGFsbG9jXSBpbml0
V2l0aFdlYnNpdGVJZGVudGlmaWVyOnJlZ2lzdHJhYmxlRG9tYWluLnN0cmluZygpIGNsaWVudDpj
bGllbnRdKSkKK3sKKyAgICAvLyBSZXF1ZXN0IHBlcm1pc3Npb24gZm9yIHRoZSBhcHAgdG8gdXNl
IGdlb2xvY2F0aW9uIChpZiBpdCBkb2Vzbid0IGFscmVhZHkpLgorICAgIFttX2xvY2F0aW9uTWFu
YWdlciByZXF1ZXN0R2VvbG9jYXRpb25BdXRob3JpemF0aW9uXTsKK30KKworQ29yZUxvY2F0aW9u
R2VvbG9jYXRpb25Qcm92aWRlcjo6fkNvcmVMb2NhdGlvbkdlb2xvY2F0aW9uUHJvdmlkZXIoKQor
eworICAgIFttX2xvY2F0aW9uTWFuYWdlciBzdG9wXTsKK30KKwordm9pZCBDb3JlTG9jYXRpb25H
ZW9sb2NhdGlvblByb3ZpZGVyOjpzdGFydCgpCit7CisgICAgW21fbG9jYXRpb25NYW5hZ2VyIHN0
YXJ0XTsKK30KKwordm9pZCBDb3JlTG9jYXRpb25HZW9sb2NhdGlvblByb3ZpZGVyOjpzdG9wKCkK
K3sKKyAgICBbbV9sb2NhdGlvbk1hbmFnZXIgc3RvcF07Cit9CisKK3ZvaWQgQ29yZUxvY2F0aW9u
R2VvbG9jYXRpb25Qcm92aWRlcjo6c2V0RW5hYmxlSGlnaEFjY3VyYWN5KGJvb2wgaGlnaEFjY3Vy
YWN5RW5hYmxlZCkKK3sKKyAgICBbbV9sb2NhdGlvbk1hbmFnZXIgc2V0RW5hYmxlSGlnaEFjY3Vy
YWN5OmhpZ2hBY2N1cmFjeUVuYWJsZWRdOworfQorCitjbGFzcyBBdXRob3JpemF0aW9uQ2hlY2tl
ciBmaW5hbCA6IHB1YmxpYyBSZWZDb3VudGVkPEF1dGhvcml6YXRpb25DaGVja2VyPiwgcHVibGlj
IENvcmVMb2NhdGlvbkdlb2xvY2F0aW9uUHJvdmlkZXI6OkNsaWVudCB7CitwdWJsaWM6CisgICAg
c3RhdGljIFJlZjxBdXRob3JpemF0aW9uQ2hlY2tlcj4gY3JlYXRlKCkKKyAgICB7CisgICAgICAg
IHJldHVybiBhZG9wdFJlZigqbmV3IEF1dGhvcml6YXRpb25DaGVja2VyKTsKKyAgICB9CisKKyAg
ICB2b2lkIGNoZWNrKGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiByZWdpc3RyYWJsZURvbWFpbiwg
Q29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKKyAgICB7
CisgICAgICAgIG1fY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVy
KTsKKyAgICAgICAgbV9wcm92aWRlciA9IG1ha2VVbmlxdWU8Q29yZUxvY2F0aW9uR2VvbG9jYXRp
b25Qcm92aWRlcj4ocmVnaXN0cmFibGVEb21haW4sICp0aGlzKTsKKyAgICB9CisKK3ByaXZhdGU6
CisgICAgQXV0aG9yaXphdGlvbkNoZWNrZXIoKSA9IGRlZmF1bHQ7CisKKyAgICB2b2lkIGdlb2xv
Y2F0aW9uQXV0aG9yaXphdGlvbkdyYW50ZWQoY29uc3QgU3RyaW5nJikgZmluYWwKKyAgICB7Cisg
ICAgICAgIGlmIChtX2NvbXBsZXRpb25IYW5kbGVyKQorICAgICAgICAgICAgbV9jb21wbGV0aW9u
SGFuZGxlcih0cnVlKTsKKyAgICB9CisKKyAgICB2b2lkIGdlb2xvY2F0aW9uQXV0aG9yaXphdGlv
bkRlbmllZChjb25zdCBTdHJpbmcmKSBmaW5hbAorICAgIHsKKyAgICAgICAgaWYgKG1fY29tcGxl
dGlvbkhhbmRsZXIpCisgICAgICAgICAgICBtX2NvbXBsZXRpb25IYW5kbGVyKGZhbHNlKTsKKyAg
ICB9CisKKyAgICB2b2lkIHBvc2l0aW9uQ2hhbmdlZChjb25zdCBTdHJpbmcmLCBHZW9sb2NhdGlv
blBvc2l0aW9uRGF0YSYmKSBmaW5hbCB7IH0KKyAgICB2b2lkIGVycm9yT2NjdXJyZWQoY29uc3Qg
U3RyaW5nJiwgY29uc3QgU3RyaW5nJikgZmluYWwKKyAgICB7CisgICAgICAgIGlmIChtX2NvbXBs
ZXRpb25IYW5kbGVyKQorICAgICAgICAgICAgbV9jb21wbGV0aW9uSGFuZGxlcihmYWxzZSk7Cisg
ICAgfQorICAgIHZvaWQgcmVzZXRHZW9sb2NhdGlvbihjb25zdCBTdHJpbmcmKSBmaW5hbCB7IH0K
KworICAgIHN0ZDo6dW5pcXVlX3B0cjxDb3JlTG9jYXRpb25HZW9sb2NhdGlvblByb3ZpZGVyPiBt
X3Byb3ZpZGVyOworICAgIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+IG1fY29tcGxldGlv
bkhhbmRsZXI7Cit9OworCit2b2lkIENvcmVMb2NhdGlvbkdlb2xvY2F0aW9uUHJvdmlkZXI6OnJl
cXVlc3RBdXRob3JpemF0aW9uKGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiByZWdpc3RyYWJsZURv
bWFpbiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJiBjb21wbGV0aW9uSGFuZGxlcikK
K3sKKyAgICBhdXRvIGF1dGhvcml6YXRpb25DaGVja2VyID0gQXV0aG9yaXphdGlvbkNoZWNrZXI6
OmNyZWF0ZSgpOworICAgIGF1dGhvcml6YXRpb25DaGVja2VyLT5jaGVjayhyZWdpc3RyYWJsZURv
bWFpbiwgW2F1dGhvcml6YXRpb25DaGVja2VyLCBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUo
Y29tcGxldGlvbkhhbmRsZXIpXShib29sIGF1dGhvcml6ZWQpIG11dGFibGUgeworICAgICAgICBj
b21wbGV0aW9uSGFuZGxlcihhdXRob3JpemVkKTsKKyAgICB9KTsKK30KKworfSAvLyBuYW1lc3Bh
Y2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9HZW9s
b2NhdGlvbkNsaWVudE1vY2suY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9HZW9s
b2NhdGlvbkNsaWVudE1vY2suY3BwCmluZGV4IDlkNWVmYzgzZjM0ZWIxOGQ1OTlkYzEwY2FhOGZj
MGNhMzk5ZGIwYTIuLmZhNDIwODJlNTA1OWE5ZWNmMjY0Y2FhZjRjMjY1MzJmNGIyZTVkN2EgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svR2VvbG9jYXRpb25DbGllbnRN
b2NrLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL0dlb2xvY2F0aW9uQ2xp
ZW50TW9jay5jcHAKQEAgLTEzNiwxMCArMTM2LDExIEBAIHZvaWQgR2VvbG9jYXRpb25DbGllbnRN
b2NrOjpnZW9sb2NhdGlvbkRlc3Ryb3llZCgpCiAgICAgQVNTRVJUKCFtX2lzQWN0aXZlKTsKIH0K
IAotdm9pZCBHZW9sb2NhdGlvbkNsaWVudE1vY2s6OnN0YXJ0VXBkYXRpbmcoY29uc3QgU3RyaW5n
JiBhdXRob3JpemF0aW9uVG9rZW4pCit2b2lkIEdlb2xvY2F0aW9uQ2xpZW50TW9jazo6c3RhcnRV
cGRhdGluZyhjb25zdCBTdHJpbmcmIGF1dGhvcml6YXRpb25Ub2tlbiwgYm9vbCBlbmFibGVIaWdo
QWNjdXJhY3kpCiB7CiAgICAgQVNTRVJUKCFtX2lzQWN0aXZlKTsKICAgICBVTlVTRURfUEFSQU0o
YXV0aG9yaXphdGlvblRva2VuKTsKKyAgICBVTlVTRURfUEFSQU0oZW5hYmxlSGlnaEFjY3VyYWN5
KTsKICAgICBtX2lzQWN0aXZlID0gdHJ1ZTsKICAgICBhc3luY1VwZGF0ZUNvbnRyb2xsZXIoKTsK
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svR2VvbG9jYXRpb25D
bGllbnRNb2NrLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL0dlb2xvY2F0aW9uQ2xp
ZW50TW9jay5oCmluZGV4IDJmYTc1ZTA1N2E1M2Q3ZTgxOGNjZmFmZWU3MDI0M2RkNTQ4MjE4NDUu
LmY4YmFjMzhiNWI2Y2NjOGNjMDhmODcwNzFlYmM3NWQ2NWIzMTA2NDAgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svR2VvbG9jYXRpb25DbGllbnRNb2NrLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9HZW9sb2NhdGlvbkNsaWVudE1vY2suaApAQCAt
NTksNyArNTksNyBAQCBwdWJsaWM6CiAKICAgICAvLyBHZW9sb2NhdGlvbkNsaWVudAogICAgIHZv
aWQgZ2VvbG9jYXRpb25EZXN0cm95ZWQoKSBvdmVycmlkZTsKLSAgICB2b2lkIHN0YXJ0VXBkYXRp
bmcoY29uc3QgU3RyaW5nJiBhdXRob3JpemF0aW9uVG9rZW4pIG92ZXJyaWRlOworICAgIHZvaWQg
c3RhcnRVcGRhdGluZyhjb25zdCBTdHJpbmcmIGF1dGhvcml6YXRpb25Ub2tlbiwgYm9vbCBlbmFi
bGVIaWdoQWNjdXJhY3kpIG92ZXJyaWRlOwogICAgIHZvaWQgc3RvcFVwZGF0aW5nKCkgb3ZlcnJp
ZGU7CiAgICAgdm9pZCBzZXRFbmFibGVIaWdoQWNjdXJhY3koYm9vbCkgb3ZlcnJpZGU7CiAgICAg
c3RkOjpvcHRpb25hbDxHZW9sb2NhdGlvblBvc2l0aW9uRGF0YT4gbGFzdFBvc2l0aW9uKCkgb3Zl
cnJpZGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NvdXJjZXNDb2NvYS50eHQgYi9Tb3Vy
Y2UvV2ViS2l0L1NvdXJjZXNDb2NvYS50eHQKaW5kZXggZmU1MDZmNzEzMzRhZDU0NmViYmFiMDY0
MWNiMzcxYzI5OWRiMjZjYS4uYzkwNzQ2ZmQ3Y2QzZWEzOThkM2RjMmIyMGQ0ZDY4MDg2OTFiZWJl
NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9Tb3VyY2VzQ29jb2EudHh0CisrKyBiL1NvdXJj
ZS9XZWJLaXQvU291cmNlc0NvY29hLnR4dApAQCAtNDI2LDYgKzQyNiw3IEBAIFVJUHJvY2Vzcy9D
b2NvYS9VSVJlbW90ZU9iamVjdFJlZ2lzdHJ5LmNwcAogVUlQcm9jZXNzL0NvY29hL1VzZXJNZWRp
YUNhcHR1cmVNYW5hZ2VyUHJveHkuY3BwCiBVSVByb2Nlc3MvQ29jb2EvVXNlck1lZGlhUGVybWlz
c2lvblJlcXVlc3RNYW5hZ2VyUHJveHkubW0KIFVJUHJvY2Vzcy9Db2NvYS9WaWRlb0Z1bGxzY3Jl
ZW5NYW5hZ2VyUHJveHkubW0KK1VJUHJvY2Vzcy9Db2NvYS9XZWJHZW9sb2NhdGlvbk1hbmFnZXJQ
cm94eUNvY29hLmNwcAogVUlQcm9jZXNzL0NvY29hL1dlYlBhZ2VQcm94eUNvY29hLm1tCiBVSVBy
b2Nlc3MvQ29jb2EvV2ViUGFzdGVib2FyZFByb3h5Q29jb2EubW0KIFVJUHJvY2Vzcy9Db2NvYS9X
ZWJQcmVmZXJlbmNlc0NvY29hLm1tCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9BUEkvQy9XS0dlb2xvY2F0aW9uTWFuYWdlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9BUEkvQy9XS0dlb2xvY2F0aW9uTWFuYWdlci5jcHAKaW5kZXggODg4Yjc1YmM3Y2VjODlkMTZl
MDdmNjE3ZTdiYjJjZTI5NzlmYTYyMy4uNWYwZjA5ZDRmZmIzMWY4OGQ2MTA3NmM5OGMxNmRkN2Nj
N2I2ZjUwNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tHZW9s
b2NhdGlvbk1hbmFnZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dL
R2VvbG9jYXRpb25NYW5hZ2VyLmNwcApAQCAtNDAsNyArNDAsOSBAQCBXS1R5cGVJRCBXS0dlb2xv
Y2F0aW9uTWFuYWdlckdldFR5cGVJRCgpCiAKIHZvaWQgV0tHZW9sb2NhdGlvbk1hbmFnZXJTZXRQ
cm92aWRlcihXS0dlb2xvY2F0aW9uTWFuYWdlclJlZiBnZW9sb2NhdGlvbk1hbmFnZXJSZWYsIGNv
bnN0IFdLR2VvbG9jYXRpb25Qcm92aWRlckJhc2UqIHdrUHJvdmlkZXIpCiB7CisjaWYgIVBMQVRG
T1JNKElPU19GQU1JTFkpCiAgICAgdG9JbXBsKGdlb2xvY2F0aW9uTWFuYWdlclJlZiktPnNldFBy
b3ZpZGVyKG1ha2VVbmlxdWU8V2ViR2VvbG9jYXRpb25Qcm92aWRlcj4od2tQcm92aWRlcikpOwor
I2VuZGlmCiB9CiAKIHZvaWQgV0tHZW9sb2NhdGlvbk1hbmFnZXJQcm92aWRlckRpZENoYW5nZVBv
c2l0aW9uKFdLR2VvbG9jYXRpb25NYW5hZ2VyUmVmIGdlb2xvY2F0aW9uTWFuYWdlclJlZiwgV0tH
ZW9sb2NhdGlvblBvc2l0aW9uUmVmIHBvc2l0aW9uUmVmKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQ29jb2EvV2ViR2VvbG9jYXRpb25NYW5hZ2VyUHJveHlDb2NvYS5jcHAg
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XZWJHZW9sb2NhdGlvbk1hbmFnZXJQcm94
eUNvY29hLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi45MDA4YzIwNWIzY2Q1ZTk0NDU5Yzg5YmI2ODk3N2QyYjFi
NzY0MzYxCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2Ev
V2ViR2VvbG9jYXRpb25NYW5hZ2VyUHJveHlDb2NvYS5jcHAKQEAgLTAsMCArMSwxMDMgQEAKKy8q
CisgKiBDb3B5cmlnaHQgKEMpIDIwMjIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJp
YnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBB
TkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQ
TEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVO
VCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEs
IE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiV2ViR2VvbG9jYXRpb25N
YW5hZ2VyUHJveHkuaCIKKworI2luY2x1ZGUgIldlYkdlb2xvY2F0aW9uTWFuYWdlck1lc3NhZ2Vz
LmgiCisKK25hbWVzcGFjZSBXZWJLaXQgeworCisvLyBGSVhNRTogVGhpcyBzaG91bGQgYmUgdXNl
ZCBieSBhbGwgQ29jb2EgcG9ydHMKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZKQorCit2b2lkIFdl
Ykdlb2xvY2F0aW9uTWFuYWdlclByb3h5Ojpwb3NpdGlvbkNoYW5nZWQoY29uc3QgU3RyaW5nJiB3
ZWJzaXRlSWRlbnRpZmllciwgV2ViQ29yZTo6R2VvbG9jYXRpb25Qb3NpdGlvbkRhdGEmJiBwb3Np
dGlvbikKK3sKKyAgICBhdXRvIHJlZ2lzdHJhYmxlRG9tYWluID0gV2ViQ29yZTo6UmVnaXN0cmFi
bGVEb21haW46OnVuY2hlY2tlZENyZWF0ZUZyb21SZWdpc3RyYWJsZURvbWFpblN0cmluZyh3ZWJz
aXRlSWRlbnRpZmllcik7CisgICAgYXV0byBpdCA9IG1fcGVyRG9tYWluRGF0YS5maW5kKHJlZ2lz
dHJhYmxlRG9tYWluKTsKKyAgICBpZiAoaXQgPT0gbV9wZXJEb21haW5EYXRhLmVuZCgpKQorICAg
ICAgICByZXR1cm47CisKKyAgICBhdXRvJiBwZXJEb21haW5EYXRhID0gKml0LT52YWx1ZTsKKyAg
ICBwZXJEb21haW5EYXRhLmxhc3RQb3NpdGlvbiA9IFdURk1vdmUocG9zaXRpb24pOworICAgIGZv
ciAoYXV0byBjb25uZWN0aW9uSUQgOiBwZXJEb21haW5EYXRhLndhdGNoZXJzKQorICAgICAgICBJ
UEM6OkNvbm5lY3Rpb246OnNlbmQoY29ubmVjdGlvbklELCBNZXNzYWdlczo6V2ViR2VvbG9jYXRp
b25NYW5hZ2VyOjpEaWRDaGFuZ2VQb3NpdGlvbihyZWdpc3RyYWJsZURvbWFpbiwgcGVyRG9tYWlu
RGF0YS5sYXN0UG9zaXRpb24udmFsdWUoKSksIDApOworfQorCit2b2lkIFdlYkdlb2xvY2F0aW9u
TWFuYWdlclByb3h5OjplcnJvck9jY3VycmVkKGNvbnN0IFN0cmluZyYgd2Vic2l0ZUlkZW50aWZp
ZXIsIGNvbnN0IFN0cmluZyYgZXJyb3JNZXNzYWdlKQoreworICAgIGF1dG8gcmVnaXN0cmFibGVE
b21haW4gPSBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbjo6dW5jaGVja2VkQ3JlYXRlRnJvbVJl
Z2lzdHJhYmxlRG9tYWluU3RyaW5nKHdlYnNpdGVJZGVudGlmaWVyKTsKKyAgICBhdXRvIGl0ID0g
bV9wZXJEb21haW5EYXRhLmZpbmQocmVnaXN0cmFibGVEb21haW4pOworICAgIGlmIChpdCA9PSBt
X3BlckRvbWFpbkRhdGEuZW5kKCkpCisgICAgICAgIHJldHVybjsKKworICAgIGF1dG8mIHBlckRv
bWFpbkRhdGEgPSAqaXQtPnZhbHVlOworICAgIGZvciAoYXV0byBjb25uZWN0aW9uSUQgOiBwZXJE
b21haW5EYXRhLndhdGNoZXJzKQorICAgICAgICBJUEM6OkNvbm5lY3Rpb246OnNlbmQoY29ubmVj
dGlvbklELCBNZXNzYWdlczo6V2ViR2VvbG9jYXRpb25NYW5hZ2VyOjpEaWRGYWlsVG9EZXRlcm1p
bmVQb3NpdGlvbihyZWdpc3RyYWJsZURvbWFpbiwgZXJyb3JNZXNzYWdlKSwgMCk7Cit9CisKK3Zv
aWQgV2ViR2VvbG9jYXRpb25NYW5hZ2VyUHJveHk6OnJlc2V0R2VvbG9jYXRpb24oY29uc3QgU3Ry
aW5nJiB3ZWJzaXRlSWRlbnRpZmllcikKK3sKKyAgICBhdXRvIHJlZ2lzdHJhYmxlRG9tYWluID0g
V2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW46OnVuY2hlY2tlZENyZWF0ZUZyb21SZWdpc3RyYWJs
ZURvbWFpblN0cmluZyh3ZWJzaXRlSWRlbnRpZmllcik7CisgICAgYXV0byBpdCA9IG1fcGVyRG9t
YWluRGF0YS5maW5kKHJlZ2lzdHJhYmxlRG9tYWluKTsKKyAgICBpZiAoaXQgPT0gbV9wZXJEb21h
aW5EYXRhLmVuZCgpKQorICAgICAgICByZXR1cm47CisKKyAgICBhdXRvJiBwZXJEb21haW5EYXRh
ID0gKml0LT52YWx1ZTsKKyAgICBmb3IgKGF1dG8gY29ubmVjdGlvbklEIDogcGVyRG9tYWluRGF0
YS53YXRjaGVycykKKyAgICAgICAgSVBDOjpDb25uZWN0aW9uOjpzZW5kKGNvbm5lY3Rpb25JRCwg
TWVzc2FnZXM6OldlYkdlb2xvY2F0aW9uTWFuYWdlcjo6UmVzZXRQZXJtaXNzaW9ucyhyZWdpc3Ry
YWJsZURvbWFpbiksIDApOworfQorCitib29sIFdlYkdlb2xvY2F0aW9uTWFuYWdlclByb3h5Ojpp
c1VwZGF0aW5nKGNvbnN0IFBlckRvbWFpbkRhdGEmIHBlckRvbWFpbkRhdGEpIGNvbnN0Cit7Cisg
ICAgcmV0dXJuICFwZXJEb21haW5EYXRhLndhdGNoZXJzLmlzRW1wdHkoKTsKK30KKworYm9vbCBX
ZWJHZW9sb2NhdGlvbk1hbmFnZXJQcm94eTo6aXNIaWdoQWNjdXJhY3lFbmFibGVkKGNvbnN0IFBl
ckRvbWFpbkRhdGEmIHBlckRvbWFpbkRhdGEpIGNvbnN0Cit7CisgICAgcmV0dXJuICFwZXJEb21h
aW5EYXRhLndhdGNoZXJzTmVlZGluZ0hpZ2hBY2N1cmFjeS5pc0VtcHR5KCk7Cit9CisKK3ZvaWQg
V2ViR2VvbG9jYXRpb25NYW5hZ2VyUHJveHk6OnByb3ZpZGVyU3RhcnRVcGRhdGluZyhQZXJEb21h
aW5EYXRhJiBwZXJEb21haW5EYXRhLCBjb25zdCBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiYg
cmVnaXN0cmFibGVEb21haW4pCit7CisgICAgQVNTRVJUKCFwZXJEb21haW5EYXRhLnByb3ZpZGVy
KTsKKyAgICBwZXJEb21haW5EYXRhLnByb3ZpZGVyID0gbWFrZVVuaXF1ZTxXZWJDb3JlOjpDb3Jl
TG9jYXRpb25HZW9sb2NhdGlvblByb3ZpZGVyPihyZWdpc3RyYWJsZURvbWFpbiwgKnRoaXMpOwor
ICAgIHBlckRvbWFpbkRhdGEucHJvdmlkZXItPnNldEVuYWJsZUhpZ2hBY2N1cmFjeSghcGVyRG9t
YWluRGF0YS53YXRjaGVyc05lZWRpbmdIaWdoQWNjdXJhY3kuaXNFbXB0eSgpKTsKKyAgICBwZXJE
b21haW5EYXRhLnByb3ZpZGVyLT5zdGFydCgpOworfQorCit2b2lkIFdlYkdlb2xvY2F0aW9uTWFu
YWdlclByb3h5Ojpwcm92aWRlclN0b3BVcGRhdGluZyhQZXJEb21haW5EYXRhJiBwZXJEb21haW5E
YXRhKQoreworICAgIHBlckRvbWFpbkRhdGEucHJvdmlkZXItPnN0b3AoKTsKK30KKwordm9pZCBX
ZWJHZW9sb2NhdGlvbk1hbmFnZXJQcm94eTo6cHJvdmlkZXJTZXRFbmFibGVkSGlnaEFjY3VyYWN5
KFBlckRvbWFpbkRhdGEmIHBlckRvbWFpbkRhdGEsIGJvb2wgZW5hYmxlZCkKK3sKKyAgICBwZXJE
b21haW5EYXRhLnByb3ZpZGVyLT5zZXRFbmFibGVIaWdoQWNjdXJhY3koZW5hYmxlZCk7Cit9CisK
KyNlbmRpZgorCit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJHZW9s
b2NhdGlvbk1hbmFnZXJQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJHZW9s
b2NhdGlvbk1hbmFnZXJQcm94eS5jcHAKaW5kZXggMDRmMzIyN2NkNTVjOTkyYTQyY2Q5NmEzZjI1
ZDY5N2FlZDc5NjVhMi4uNTcwN2YwNjE4Y2IxMzJjOTVhZjA0OWI1NmI3YmQ4MTI4NDdhYTNkMiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViR2VvbG9jYXRpb25NYW5hZ2Vy
UHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkdlb2xvY2F0aW9uTWFu
YWdlclByb3h5LmNwcApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTEs
IDIwMTIsIDIwMTMgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0
IChDKSAyMDExLTIwMjIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC01MCwzNCArNTAsNDAgQEAgUmVmPFdlYkdlb2xvY2F0
aW9uTWFuYWdlclByb3h5PiBXZWJHZW9sb2NhdGlvbk1hbmFnZXJQcm94eTo6Y3JlYXRlKFdlYlBy
b2Nlc3NQb28KIAogV2ViR2VvbG9jYXRpb25NYW5hZ2VyUHJveHk6OldlYkdlb2xvY2F0aW9uTWFu
YWdlclByb3h5KFdlYlByb2Nlc3NQb29sKiBwcm9jZXNzUG9vbCkKICAgICA6IFdlYkNvbnRleHRT
dXBwbGVtZW50KHByb2Nlc3NQb29sKQotICAgICwgbV9wcm92aWRlcihtYWtlVW5pcXVlPEFQSTo6
R2VvbG9jYXRpb25Qcm92aWRlcj4oKSkKIHsKICAgICBXZWJDb250ZXh0U3VwcGxlbWVudDo6cHJv
Y2Vzc1Bvb2woKS0+YWRkTWVzc2FnZVJlY2VpdmVyKE1lc3NhZ2VzOjpXZWJHZW9sb2NhdGlvbk1h
bmFnZXJQcm94eTo6bWVzc2FnZVJlY2VpdmVyTmFtZSgpLCAqdGhpcyk7CiB9CiAKLXZvaWQgV2Vi
R2VvbG9jYXRpb25NYW5hZ2VyUHJveHk6OnNldFByb3ZpZGVyKHN0ZDo6dW5pcXVlX3B0cjxBUEk6
Okdlb2xvY2F0aW9uUHJvdmlkZXI+JiYgcHJvdmlkZXIpCi17Ci0gICAgaWYgKCFwcm92aWRlcikK
LSAgICAgICAgbV9wcm92aWRlciA9IG1ha2VVbmlxdWU8QVBJOjpHZW9sb2NhdGlvblByb3ZpZGVy
PigpOwotICAgIGVsc2UKLSAgICAgICAgbV9wcm92aWRlciA9IFdURk1vdmUocHJvdmlkZXIpOwot
fQorV2ViR2VvbG9jYXRpb25NYW5hZ2VyUHJveHk6On5XZWJHZW9sb2NhdGlvbk1hbmFnZXJQcm94
eSgpID0gZGVmYXVsdDsKIAogLy8gV2ViQ29udGV4dFN1cHBsZW1lbnQKIAogdm9pZCBXZWJHZW9s
b2NhdGlvbk1hbmFnZXJQcm94eTo6cHJvY2Vzc1Bvb2xEZXN0cm95ZWQoKQogewotICAgIGJvb2wg
d2FzVXBkYXRpbmcgPSBpc1VwZGF0aW5nKCk7Ci0gICAgbV91cGRhdGVSZXF1ZXN0ZXJzLmNsZWFy
KCk7CisgICAgaWYgKG1fcGVyRG9tYWluRGF0YS5pc0VtcHR5KCkpCisgICAgICAgIHJldHVybjsK
IAotICAgIEFTU0VSVCghaXNVcGRhdGluZygpKTsKLSAgICBpZiAod2FzVXBkYXRpbmcpCisgICAg
bV9wZXJEb21haW5EYXRhLmNsZWFyKCk7CisjaWYgIVBMQVRGT1JNKElPU19GQU1JTFkpCisgICAg
aWYgKG1fcHJvdmlkZXIpCiAgICAgICAgIG1fcHJvdmlkZXItPnN0b3BVcGRhdGluZygqdGhpcyk7
CisjZW5kaWYKIH0KIAogdm9pZCBXZWJHZW9sb2NhdGlvbk1hbmFnZXJQcm94eTo6cHJvY2Vzc0Rp
ZENsb3NlKFdlYlByb2Nlc3NQcm94eSogd2ViUHJvY2Vzc1Byb3h5KQogewotICAgIHJlbW92ZVJl
cXVlc3Rlcih3ZWJQcm9jZXNzUHJveHkpOworICAgIGlmICghd2ViUHJvY2Vzc1Byb3h5LT5oYXND
b25uZWN0aW9uKCkpCisgICAgICAgIHJldHVybjsKKworICAgIGF1dG8qIGNvbm5lY3Rpb24gPSB3
ZWJQcm9jZXNzUHJveHktPmNvbm5lY3Rpb24oKTsKKworICAgIFZlY3RvcjxXZWJDb3JlOjpSZWdp
c3RyYWJsZURvbWFpbj4gYWZmZWN0ZWREb21haW5zOworICAgIGZvciAoYXV0byYgW3JlZ2lzdHJh
YmxlRG9tYWluLCBwZXJEb21haW5EYXRhXSA6IG1fcGVyRG9tYWluRGF0YSkgeworICAgICAgICBp
ZiAocGVyRG9tYWluRGF0YS0+d2F0Y2hlcnMuY29udGFpbnMoY29ubmVjdGlvbi0+dW5pcXVlSUQo
KSkpCisgICAgICAgICAgICBhZmZlY3RlZERvbWFpbnMuYXBwZW5kKHJlZ2lzdHJhYmxlRG9tYWlu
KTsKKyAgICB9CisgICAgZm9yIChhdXRvJiByZWdpc3RyYWJsZURvbWFpbiA6IGFmZmVjdGVkRG9t
YWlucykKKyAgICAgICAgc3RvcFVwZGF0aW5nKCpjb25uZWN0aW9uLCByZWdpc3RyYWJsZURvbWFp
bik7CiB9CiAKIHZvaWQgV2ViR2VvbG9jYXRpb25NYW5hZ2VyUHJveHk6OnJlZldlYkNvbnRleHRT
dXBwbGVtZW50KCkKQEAgLTkyLDMwICs5OCwyMiBAQCB2b2lkIFdlYkdlb2xvY2F0aW9uTWFuYWdl
clByb3h5OjpkZXJlZldlYkNvbnRleHRTdXBwbGVtZW50KCkKIAogdm9pZCBXZWJHZW9sb2NhdGlv
bk1hbmFnZXJQcm94eTo6cHJvdmlkZXJEaWRDaGFuZ2VQb3NpdGlvbihXZWJHZW9sb2NhdGlvblBv
c2l0aW9uKiBwb3NpdGlvbikKIHsKLSAgICBtX2xhc3RQb3NpdGlvbiA9IHBvc2l0aW9uLT5jb3Jl
UG9zaXRpb24oKTsKLQotICAgIGlmICghcHJvY2Vzc1Bvb2woKSkKLSAgICAgICAgcmV0dXJuOwot
Ci0gICAgcHJvY2Vzc1Bvb2woKS0+c2VuZFRvQWxsUHJvY2Vzc2VzKE1lc3NhZ2VzOjpXZWJHZW9s
b2NhdGlvbk1hbmFnZXI6OkRpZENoYW5nZVBvc2l0aW9uKG1fbGFzdFBvc2l0aW9uLnZhbHVlKCkp
KTsKKyAgICBmb3IgKGF1dG8mIFtyZWdpc3RyYWJsZURvbWFpbiwgcGVyRG9tYWluRGF0YV0gOiBt
X3BlckRvbWFpbkRhdGEpIHsKKyAgICAgICAgcGVyRG9tYWluRGF0YS0+bGFzdFBvc2l0aW9uID0g
cG9zaXRpb24tPmNvcmVQb3NpdGlvbigpOworICAgICAgICBmb3IgKGF1dG8gY29ubmVjdGlvbklE
IDogcGVyRG9tYWluRGF0YS0+d2F0Y2hlcnMpCisgICAgICAgICAgICBJUEM6OkNvbm5lY3Rpb246
OnNlbmQoY29ubmVjdGlvbklELCBNZXNzYWdlczo6V2ViR2VvbG9jYXRpb25NYW5hZ2VyOjpEaWRD
aGFuZ2VQb3NpdGlvbihyZWdpc3RyYWJsZURvbWFpbiwgcGVyRG9tYWluRGF0YS0+bGFzdFBvc2l0
aW9uLnZhbHVlKCkpLCAwKTsKKyAgICB9CiB9CiAKIHZvaWQgV2ViR2VvbG9jYXRpb25NYW5hZ2Vy
UHJveHk6OnByb3ZpZGVyRGlkRmFpbFRvRGV0ZXJtaW5lUG9zaXRpb24oY29uc3QgU3RyaW5nJiBl
cnJvck1lc3NhZ2UpCiB7Ci0gICAgaWYgKCFwcm9jZXNzUG9vbCgpKQotICAgICAgICByZXR1cm47
Ci0KLSAgICBwcm9jZXNzUG9vbCgpLT5zZW5kVG9BbGxQcm9jZXNzZXMoTWVzc2FnZXM6OldlYkdl
b2xvY2F0aW9uTWFuYWdlcjo6RGlkRmFpbFRvRGV0ZXJtaW5lUG9zaXRpb24oZXJyb3JNZXNzYWdl
KSk7Ci19Ci0KLSNpZiBQTEFURk9STShJT1NfRkFNSUxZKQotdm9pZCBXZWJHZW9sb2NhdGlvbk1h
bmFnZXJQcm94eTo6cmVzZXRQZXJtaXNzaW9ucygpCi17Ci0gICAgcHJvY2Vzc1Bvb2woKS0+c2Vu
ZFRvQWxsUHJvY2Vzc2VzKE1lc3NhZ2VzOjpXZWJHZW9sb2NhdGlvbk1hbmFnZXI6OlJlc2V0UGVy
bWlzc2lvbnMoKSk7CisgICAgZm9yIChhdXRvJiBbcmVnaXN0cmFibGVEb21haW4sIHBlckRvbWFp
bkRhdGFdIDogbV9wZXJEb21haW5EYXRhKSB7CisgICAgICAgIGZvciAoYXV0byBjb25uZWN0aW9u
SUQgOiBwZXJEb21haW5EYXRhLT53YXRjaGVycykKKyAgICAgICAgICAgIElQQzo6Q29ubmVjdGlv
bjo6c2VuZChjb25uZWN0aW9uSUQsIE1lc3NhZ2VzOjpXZWJHZW9sb2NhdGlvbk1hbmFnZXI6OkRp
ZEZhaWxUb0RldGVybWluZVBvc2l0aW9uKHJlZ2lzdHJhYmxlRG9tYWluLCBlcnJvck1lc3NhZ2Up
LCAwKTsKKyAgICB9CiB9Ci0jZW5kaWYKIAotdm9pZCBXZWJHZW9sb2NhdGlvbk1hbmFnZXJQcm94
eTo6c3RhcnRVcGRhdGluZyhJUEM6OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24sIFdlYlBhZ2VQcm94
eUlkZW50aWZpZXIgcGFnZVByb3h5SUQsIGNvbnN0IFN0cmluZyYgYXV0aG9yaXphdGlvblRva2Vu
KQordm9pZCBXZWJHZW9sb2NhdGlvbk1hbmFnZXJQcm94eTo6c3RhcnRVcGRhdGluZyhJUEM6OkNv
bm5lY3Rpb24mIGNvbm5lY3Rpb24sIGNvbnN0IFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluJiBy
ZWdpc3RyYWJsZURvbWFpbiwgV2ViUGFnZVByb3h5SWRlbnRpZmllciBwYWdlUHJveHlJRCwgY29u
c3QgU3RyaW5nJiBhdXRob3JpemF0aW9uVG9rZW4sIGJvb2wgZW5hYmxlSGlnaEFjY3VyYWN5KQog
ewogICAgIGF1dG8qIHBhZ2UgPSBXZWJQcm9jZXNzUHJveHk6OndlYlBhZ2UocGFnZVByb3h5SUQp
OwogICAgIE1FU1NBR0VfQ0hFQ0socGFnZSk7CkBAIC0xMjMsNTAgKzEyMSwxMjEgQEAgdm9pZCBX
ZWJHZW9sb2NhdGlvbk1hbmFnZXJQcm94eTo6c3RhcnRVcGRhdGluZyhJUEM6OkNvbm5lY3Rpb24m
IGNvbm5lY3Rpb24sIFdlYlAKICAgICBhdXRvIGlzVmFsaWRBdXRob3JpemF0aW9uVG9rZW4gPSBw
YWdlLT5nZW9sb2NhdGlvblBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlcigpLmlzVmFsaWRBdXRob3Jp
emF0aW9uVG9rZW4oYXV0aG9yaXphdGlvblRva2VuKTsKICAgICBNRVNTQUdFX0NIRUNLKGlzVmFs
aWRBdXRob3JpemF0aW9uVG9rZW4pOwogCi0gICAgYm9vbCB3YXNVcGRhdGluZyA9IGlzVXBkYXRp
bmcoKTsKLSAgICBtX3VwZGF0ZVJlcXVlc3RlcnMuYWRkKCZjb25uZWN0aW9uLmNsaWVudCgpKTsK
KyAgICBhdXRvJiBwZXJEb21haW5EYXRhID0gKm1fcGVyRG9tYWluRGF0YS5lbnN1cmUocmVnaXN0
cmFibGVEb21haW4sIFtdIHsKKyAgICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8UGVyRG9tYWluRGF0
YT4oKTsKKyAgICB9KS5pdGVyYXRvci0+dmFsdWU7CisKKyAgICBib29sIHdhc1VwZGF0aW5nID0g
aXNVcGRhdGluZyhwZXJEb21haW5EYXRhKTsKKyAgICBib29sIGhpZ2hBY2N1cmFjeVdhc0VuYWJs
ZWQgPSBpc0hpZ2hBY2N1cmFjeUVuYWJsZWQocGVyRG9tYWluRGF0YSk7CisKKyAgICBwZXJEb21h
aW5EYXRhLndhdGNoZXJzLmFkZChjb25uZWN0aW9uLnVuaXF1ZUlEKCkpOworICAgIGlmIChlbmFi
bGVIaWdoQWNjdXJhY3kpCisgICAgICAgIHBlckRvbWFpbkRhdGEud2F0Y2hlcnNOZWVkaW5nSGln
aEFjY3VyYWN5LmFkZChjb25uZWN0aW9uLnVuaXF1ZUlEKCkpOworCiAgICAgaWYgKCF3YXNVcGRh
dGluZykgewotICAgICAgICBtX3Byb3ZpZGVyLT5zZXRFbmFibGVIaWdoQWNjdXJhY3koKnRoaXMs
IGlzSGlnaEFjY3VyYWN5RW5hYmxlZCgpKTsKLSAgICAgICAgbV9wcm92aWRlci0+c3RhcnRVcGRh
dGluZygqdGhpcyk7Ci0gICAgfSBlbHNlIGlmIChtX2xhc3RQb3NpdGlvbikKLSAgICAgICAgY29u
bmVjdGlvbi5zZW5kKE1lc3NhZ2VzOjpXZWJHZW9sb2NhdGlvbk1hbmFnZXI6OkRpZENoYW5nZVBv
c2l0aW9uKG1fbGFzdFBvc2l0aW9uLnZhbHVlKCkpLCAwKTsKLX0KKyAgICAgICAgcHJvdmlkZXJT
dGFydFVwZGF0aW5nKHBlckRvbWFpbkRhdGEsIHJlZ2lzdHJhYmxlRG9tYWluKTsKKyAgICAgICAg
cmV0dXJuOworICAgIH0KKyAgICBpZiAoIWhpZ2hBY2N1cmFjeVdhc0VuYWJsZWQgJiYgZW5hYmxl
SGlnaEFjY3VyYWN5KQorICAgICAgICBwcm92aWRlclNldEVuYWJsZWRIaWdoQWNjdXJhY3kocGVy
RG9tYWluRGF0YSwgZW5hYmxlSGlnaEFjY3VyYWN5KTsKIAotdm9pZCBXZWJHZW9sb2NhdGlvbk1h
bmFnZXJQcm94eTo6c3RvcFVwZGF0aW5nKElQQzo6Q29ubmVjdGlvbiYgY29ubmVjdGlvbikKLXsK
LSAgICByZW1vdmVSZXF1ZXN0ZXIoJmNvbm5lY3Rpb24uY2xpZW50KCkpOworICAgIGlmIChwZXJE
b21haW5EYXRhLmxhc3RQb3NpdGlvbikKKyAgICAgICAgY29ubmVjdGlvbi5zZW5kKE1lc3NhZ2Vz
OjpXZWJHZW9sb2NhdGlvbk1hbmFnZXI6OkRpZENoYW5nZVBvc2l0aW9uKHJlZ2lzdHJhYmxlRG9t
YWluLCBwZXJEb21haW5EYXRhLmxhc3RQb3NpdGlvbi52YWx1ZSgpKSwgMCk7CiB9CiAKLXZvaWQg
V2ViR2VvbG9jYXRpb25NYW5hZ2VyUHJveHk6OnJlbW92ZVJlcXVlc3Rlcihjb25zdCBJUEM6OkNv
bm5lY3Rpb246OkNsaWVudCogY2xpZW50KQordm9pZCBXZWJHZW9sb2NhdGlvbk1hbmFnZXJQcm94
eTo6c3RvcFVwZGF0aW5nKElQQzo6Q29ubmVjdGlvbiYgY29ubmVjdGlvbiwgY29uc3QgV2ViQ29y
ZTo6UmVnaXN0cmFibGVEb21haW4mIHJlZ2lzdHJhYmxlRG9tYWluKQogewotICAgIGJvb2wgd2Fz
VXBkYXRpbmcgPSBpc1VwZGF0aW5nKCk7Ci0gICAgYm9vbCBoaWdoQWNjdXJhY3lXYXNFbmFibGVk
ID0gaXNIaWdoQWNjdXJhY3lFbmFibGVkKCk7CisgICAgYXV0byBpdCA9IG1fcGVyRG9tYWluRGF0
YS5maW5kKHJlZ2lzdHJhYmxlRG9tYWluKTsKKyAgICBpZiAoaXQgPT0gbV9wZXJEb21haW5EYXRh
LmVuZCgpKQorICAgICAgICByZXR1cm47CiAKLSAgICBtX2hpZ2hBY2N1cmFjeVJlcXVlc3RlcnMu
cmVtb3ZlKGNsaWVudCk7Ci0gICAgbV91cGRhdGVSZXF1ZXN0ZXJzLnJlbW92ZShjbGllbnQpOwor
ICAgIGF1dG8mIHBlckRvbWFpbkRhdGEgPSAqaXQtPnZhbHVlOworICAgIGJvb2wgd2FzVXBkYXRp
bmcgPSBpc1VwZGF0aW5nKHBlckRvbWFpbkRhdGEpOworICAgIGJvb2wgaGlnaEFjY3VyYWN5V2Fz
RW5hYmxlZCA9IGlzSGlnaEFjY3VyYWN5RW5hYmxlZChwZXJEb21haW5EYXRhKTsKIAotICAgIGlm
ICh3YXNVcGRhdGluZyAmJiAhaXNVcGRhdGluZygpKQotICAgICAgICBtX3Byb3ZpZGVyLT5zdG9w
VXBkYXRpbmcoKnRoaXMpOworICAgIHBlckRvbWFpbkRhdGEud2F0Y2hlcnMucmVtb3ZlKGNvbm5l
Y3Rpb24udW5pcXVlSUQoKSk7CisgICAgcGVyRG9tYWluRGF0YS53YXRjaGVyc05lZWRpbmdIaWdo
QWNjdXJhY3kucmVtb3ZlKGNvbm5lY3Rpb24udW5pcXVlSUQoKSk7CisKKyAgICBpZiAod2FzVXBk
YXRpbmcgJiYgIWlzVXBkYXRpbmcocGVyRG9tYWluRGF0YSkpCisgICAgICAgIHByb3ZpZGVyU3Rv
cFVwZGF0aW5nKHBlckRvbWFpbkRhdGEpOwogICAgIGVsc2UgewotICAgICAgICBib29sIGhpZ2hB
Y2N1cmFjeVNob3VsZEJlRW5hYmxlZCA9IGlzSGlnaEFjY3VyYWN5RW5hYmxlZCgpOworICAgICAg
ICBib29sIGhpZ2hBY2N1cmFjeVNob3VsZEJlRW5hYmxlZCA9IGlzSGlnaEFjY3VyYWN5RW5hYmxl
ZChwZXJEb21haW5EYXRhKTsKICAgICAgICAgaWYgKGhpZ2hBY2N1cmFjeVNob3VsZEJlRW5hYmxl
ZCAhPSBoaWdoQWNjdXJhY3lXYXNFbmFibGVkKQotICAgICAgICAgICAgbV9wcm92aWRlci0+c2V0
RW5hYmxlSGlnaEFjY3VyYWN5KCp0aGlzLCBoaWdoQWNjdXJhY3lTaG91bGRCZUVuYWJsZWQpOwor
ICAgICAgICAgICAgcHJvdmlkZXJTZXRFbmFibGVkSGlnaEFjY3VyYWN5KHBlckRvbWFpbkRhdGEs
IGhpZ2hBY2N1cmFjeVNob3VsZEJlRW5hYmxlZCk7CiAgICAgfQorCisgICAgaWYgKHBlckRvbWFp
bkRhdGEud2F0Y2hlcnMuaXNFbXB0eSgpICYmIHBlckRvbWFpbkRhdGEud2F0Y2hlcnNOZWVkaW5n
SGlnaEFjY3VyYWN5LmlzRW1wdHkoKSkKKyAgICAgICAgbV9wZXJEb21haW5EYXRhLnJlbW92ZShp
dCk7CiB9CiAKLXZvaWQgV2ViR2VvbG9jYXRpb25NYW5hZ2VyUHJveHk6OnNldEVuYWJsZUhpZ2hB
Y2N1cmFjeShJUEM6OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24sIGJvb2wgZW5hYmxlZCkKK3ZvaWQg
V2ViR2VvbG9jYXRpb25NYW5hZ2VyUHJveHk6OnNldEVuYWJsZUhpZ2hBY2N1cmFjeShJUEM6OkNv
bm5lY3Rpb24mIGNvbm5lY3Rpb24sIGNvbnN0IFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluJiBy
ZWdpc3RyYWJsZURvbWFpbiwgYm9vbCBlbmFibGVkKQogewotICAgIGJvb2wgaGlnaEFjY3VyYWN5
V2FzRW5hYmxlZCA9IGlzSGlnaEFjY3VyYWN5RW5hYmxlZCgpOworICAgIGF1dG8gaXQgPSBtX3Bl
ckRvbWFpbkRhdGEuZmluZChyZWdpc3RyYWJsZURvbWFpbik7CisgICAgQVNTRVJUKGl0ICE9IG1f
cGVyRG9tYWluRGF0YS5lbmQoKSk7CisgICAgaWYgKGl0ID09IG1fcGVyRG9tYWluRGF0YS5lbmQo
KSkKKyAgICAgICAgcmV0dXJuOworCisgICAgYXV0byYgcGVyRG9tYWluRGF0YSA9ICppdC0+dmFs
dWU7CisgICAgYm9vbCBoaWdoQWNjdXJhY3lXYXNFbmFibGVkID0gaXNIaWdoQWNjdXJhY3lFbmFi
bGVkKHBlckRvbWFpbkRhdGEpOwogCiAgICAgaWYgKGVuYWJsZWQpCi0gICAgICAgIG1faGlnaEFj
Y3VyYWN5UmVxdWVzdGVycy5hZGQoJmNvbm5lY3Rpb24uY2xpZW50KCkpOworICAgICAgICBwZXJE
b21haW5EYXRhLndhdGNoZXJzTmVlZGluZ0hpZ2hBY2N1cmFjeS5hZGQoY29ubmVjdGlvbi51bmlx
dWVJRCgpKTsKICAgICBlbHNlCi0gICAgICAgIG1faGlnaEFjY3VyYWN5UmVxdWVzdGVycy5yZW1v
dmUoJmNvbm5lY3Rpb24uY2xpZW50KCkpOworICAgICAgICBwZXJEb21haW5EYXRhLndhdGNoZXJz
TmVlZGluZ0hpZ2hBY2N1cmFjeS5yZW1vdmUoY29ubmVjdGlvbi51bmlxdWVJRCgpKTsKIAotICAg
IGJvb2wgaGlnaEFjY3VyYWN5U2hvdWxkQmVFbmFibGVkID0gaXNIaWdoQWNjdXJhY3lFbmFibGVk
KCk7Ci0gICAgaWYgKGlzVXBkYXRpbmcoKSAmJiBoaWdoQWNjdXJhY3lXYXNFbmFibGVkICE9IGhp
Z2hBY2N1cmFjeVNob3VsZEJlRW5hYmxlZCkKLSAgICAgICAgbV9wcm92aWRlci0+c2V0RW5hYmxl
SGlnaEFjY3VyYWN5KCp0aGlzLCBoaWdoQWNjdXJhY3lTaG91bGRCZUVuYWJsZWQpOworICAgIGlm
IChpc1VwZGF0aW5nKHBlckRvbWFpbkRhdGEpICYmIGhpZ2hBY2N1cmFjeVdhc0VuYWJsZWQgIT0g
ZW5hYmxlZCkKKyAgICAgICAgcHJvdmlkZXJTZXRFbmFibGVkSGlnaEFjY3VyYWN5KHBlckRvbWFp
bkRhdGEsIGVuYWJsZWQpOworfQorCisjaWYgIVBMQVRGT1JNKElPU19GQU1JTFkpCit2b2lkIFdl
Ykdlb2xvY2F0aW9uTWFuYWdlclByb3h5OjpzZXRQcm92aWRlcihzdGQ6OnVuaXF1ZV9wdHI8QVBJ
OjpHZW9sb2NhdGlvblByb3ZpZGVyPiYmIHByb3ZpZGVyKQoreworICAgIGlmICghcHJvdmlkZXIp
CisgICAgICAgIG1fcHJvdmlkZXIgPSBtYWtlVW5pcXVlPEFQSTo6R2VvbG9jYXRpb25Qcm92aWRl
cj4oKTsKKyAgICBlbHNlCisgICAgICAgIG1fcHJvdmlkZXIgPSBXVEZNb3ZlKHByb3ZpZGVyKTsK
K30KKworYm9vbCBXZWJHZW9sb2NhdGlvbk1hbmFnZXJQcm94eTo6aXNVcGRhdGluZyhjb25zdCBQ
ZXJEb21haW5EYXRhJikgY29uc3QKK3sKKyAgICBmb3IgKGF1dG8mIHBlckRvbWFpbkRhdGEgOiBt
X3BlckRvbWFpbkRhdGEudmFsdWVzKCkpIHsKKyAgICAgICAgaWYgKCFwZXJEb21haW5EYXRhLT53
YXRjaGVycy5pc0VtcHR5KCkpCisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9CisgICAg
cmV0dXJuIGZhbHNlOworfQorCisKK2Jvb2wgV2ViR2VvbG9jYXRpb25NYW5hZ2VyUHJveHk6Omlz
SGlnaEFjY3VyYWN5RW5hYmxlZChjb25zdCBQZXJEb21haW5EYXRhJikgY29uc3QKK3sKKyAgICBm
b3IgKGF1dG8mIHBlckRvbWFpbkRhdGEgOiBtX3BlckRvbWFpbkRhdGEudmFsdWVzKCkpIHsKKyAg
ICAgICAgaWYgKCFwZXJEb21haW5EYXRhLT53YXRjaGVyc05lZWRpbmdIaWdoQWNjdXJhY3kuaXNF
bXB0eSgpKQorICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfQorICAgIHJldHVybiBmYWxz
ZTsKK30KKwordm9pZCBXZWJHZW9sb2NhdGlvbk1hbmFnZXJQcm94eTo6cHJvdmlkZXJTdGFydFVw
ZGF0aW5nKFBlckRvbWFpbkRhdGEmIHBlckRvbWFpbkRhdGEsIGNvbnN0IFdlYkNvcmU6OlJlZ2lz
dHJhYmxlRG9tYWluJikKK3sKKyAgICBpZiAoIW1fcHJvdmlkZXIpCisgICAgICAgIHJldHVybjsK
KworICAgIG1fcHJvdmlkZXItPnNldEVuYWJsZUhpZ2hBY2N1cmFjeSgqdGhpcywgaXNIaWdoQWNj
dXJhY3lFbmFibGVkKHBlckRvbWFpbkRhdGEpKTsKKyAgICBtX3Byb3ZpZGVyLT5zdGFydFVwZGF0
aW5nKCp0aGlzKTsKK30KKwordm9pZCBXZWJHZW9sb2NhdGlvbk1hbmFnZXJQcm94eTo6cHJvdmlk
ZXJTdG9wVXBkYXRpbmcoUGVyRG9tYWluRGF0YSYpCit7CisgICAgaWYgKG1fcHJvdmlkZXIpCisg
ICAgICAgIG1fcHJvdmlkZXItPnN0b3BVcGRhdGluZygqdGhpcyk7Cit9CisKK3ZvaWQgV2ViR2Vv
bG9jYXRpb25NYW5hZ2VyUHJveHk6OnByb3ZpZGVyU2V0RW5hYmxlZEhpZ2hBY2N1cmFjeShQZXJE
b21haW5EYXRhJiwgYm9vbCBlbmFibGVkKQoreworICAgIGlmIChtX3Byb3ZpZGVyKQorICAgICAg
ICBtX3Byb3ZpZGVyLT5zZXRFbmFibGVIaWdoQWNjdXJhY3koKnRoaXMsIGVuYWJsZWQpOwogfQor
I2VuZGlmIC8vICFQTEFURk9STShJT1NfRkFNSUxZKQogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQK
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViR2VvbG9jYXRpb25NYW5h
Z2VyUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkdlb2xvY2F0aW9uTWFuYWdl
clByb3h5LmgKaW5kZXggNzQ5MzZlNDVhMGQ4MzgzYThiNGIzZDZkNTc4YzliZDIyYmUzZmE1ZS4u
ZWYxMWY0Y2IwNmIwNGVlMDVlMjIwMjE2ZjhkMjg2NDRkYTBmNGY2NSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViR2VvbG9jYXRpb25NYW5hZ2VyUHJveHkuaAorKysgYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJHZW9sb2NhdGlvbk1hbmFnZXJQcm94eS5oCkBAIC0x
LDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMSwgMjAxMiwgMjAxMyBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEtMjAyMiBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKQEAgLTMxLDkgKzMxLDE1IEBACiAjaW5jbHVkZSAiV2ViQ29udGV4dFN1cHBsZW1lbnQuaCIK
ICNpbmNsdWRlICJXZWJQYWdlUHJveHlJZGVudGlmaWVyLmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9H
ZW9sb2NhdGlvblBvc2l0aW9uRGF0YS5oPgorI2luY2x1ZGUgPFdlYkNvcmUvUmVnaXN0cmFibGVE
b21haW4uaD4KKyNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgogI2luY2x1ZGUgPHd0Zi9IYXNoU2V0
Lmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAKKyNpZiBQTEFURk9STShJT1Nf
RkFNSUxZKQorI2luY2x1ZGUgPFdlYkNvcmUvQ29yZUxvY2F0aW9uR2VvbG9jYXRpb25Qcm92aWRl
ci5oPgorI2VuZGlmCisKIG5hbWVzcGFjZSBBUEkgewogY2xhc3MgR2VvbG9jYXRpb25Qcm92aWRl
cjsKIH0KQEAgLTQzLDIwICs0OSwyMyBAQCBuYW1lc3BhY2UgV2ViS2l0IHsKIGNsYXNzIFdlYkdl
b2xvY2F0aW9uUG9zaXRpb247CiBjbGFzcyBXZWJQcm9jZXNzUG9vbDsKIAotY2xhc3MgV2ViR2Vv
bG9jYXRpb25NYW5hZ2VyUHJveHkgOiBwdWJsaWMgQVBJOjpPYmplY3RJbXBsPEFQSTo6T2JqZWN0
OjpUeXBlOjpHZW9sb2NhdGlvbk1hbmFnZXI+LCBwdWJsaWMgV2ViQ29udGV4dFN1cHBsZW1lbnQs
IHByaXZhdGUgSVBDOjpNZXNzYWdlUmVjZWl2ZXIgeworY2xhc3MgV2ViR2VvbG9jYXRpb25NYW5h
Z2VyUHJveHkgOiBwdWJsaWMgQVBJOjpPYmplY3RJbXBsPEFQSTo6T2JqZWN0OjpUeXBlOjpHZW9s
b2NhdGlvbk1hbmFnZXI+LCBwdWJsaWMgV2ViQ29udGV4dFN1cHBsZW1lbnQsIHByaXZhdGUgSVBD
OjpNZXNzYWdlUmVjZWl2ZXIKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZKQorICAgICwgcHVibGlj
IFdlYkNvcmU6OkNvcmVMb2NhdGlvbkdlb2xvY2F0aW9uUHJvdmlkZXI6OkNsaWVudAorI2VuZGlm
Cit7CiBwdWJsaWM6CiAgICAgc3RhdGljIGNvbnN0IGNoYXIqIHN1cHBsZW1lbnROYW1lKCk7CiAK
ICAgICBzdGF0aWMgUmVmPFdlYkdlb2xvY2F0aW9uTWFuYWdlclByb3h5PiBjcmVhdGUoV2ViUHJv
Y2Vzc1Bvb2wqKTsKKyAgICB+V2ViR2VvbG9jYXRpb25NYW5hZ2VyUHJveHkoKTsKIAorI2lmICFQ
TEFURk9STShJT1NfRkFNSUxZKQogICAgIHZvaWQgc2V0UHJvdmlkZXIoc3RkOjp1bmlxdWVfcHRy
PEFQSTo6R2VvbG9jYXRpb25Qcm92aWRlcj4mJik7CisjZW5kaWYKIAogICAgIHZvaWQgcHJvdmlk
ZXJEaWRDaGFuZ2VQb3NpdGlvbihXZWJHZW9sb2NhdGlvblBvc2l0aW9uKik7CiAgICAgdm9pZCBw
cm92aWRlckRpZEZhaWxUb0RldGVybWluZVBvc2l0aW9uKGNvbnN0IFN0cmluZyYgZXJyb3JNZXNz
YWdlID0gU3RyaW5nKCkpOwotI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCi0gICAgdm9pZCByZXNl
dFBlcm1pc3Npb25zKCk7Ci0jZW5kaWYKLSAgICBjb25zdCBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6
Okdlb2xvY2F0aW9uUG9zaXRpb25EYXRhPiYgbGFzdFBvc2l0aW9uKCkgY29uc3QgeyByZXR1cm4g
bV9sYXN0UG9zaXRpb247IH0KIAogICAgIHVzaW5nIEFQSTo6T2JqZWN0OjpyZWY7CiAgICAgdXNp
bmcgQVBJOjpPYmplY3Q6OmRlcmVmOwpAQCAtNzMsMTkgKzgyLDQwIEBAIHByaXZhdGU6CiAgICAg
Ly8gSVBDOjpNZXNzYWdlUmVjZWl2ZXIKICAgICB2b2lkIGRpZFJlY2VpdmVNZXNzYWdlKElQQzo6
Q29ubmVjdGlvbiYsIElQQzo6RGVjb2RlciYpIG92ZXJyaWRlOwogCi0gICAgYm9vbCBpc1VwZGF0
aW5nKCkgY29uc3QgeyByZXR1cm4gIW1fdXBkYXRlUmVxdWVzdGVycy5pc0VtcHR5KCk7IH0KLSAg
ICBib29sIGlzSGlnaEFjY3VyYWN5RW5hYmxlZCgpIGNvbnN0IHsgcmV0dXJuICFtX2hpZ2hBY2N1
cmFjeVJlcXVlc3RlcnMuaXNFbXB0eSgpOyB9CisgICAgLy8gSVBDIG1lc3NhZ2VzLgorICAgIHZv
aWQgc3RhcnRVcGRhdGluZyhJUEM6OkNvbm5lY3Rpb24mLCBjb25zdCBXZWJDb3JlOjpSZWdpc3Ry
YWJsZURvbWFpbiYsIFdlYlBhZ2VQcm94eUlkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgYXV0aG9y
aXphdGlvblRva2VuLCBib29sIGVuYWJsZUhpZ2hBY2N1cmFjeSk7CisgICAgdm9pZCBzdG9wVXBk
YXRpbmcoSVBDOjpDb25uZWN0aW9uJiwgY29uc3QgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4m
KTsKKyAgICB2b2lkIHNldEVuYWJsZUhpZ2hBY2N1cmFjeShJUEM6OkNvbm5lY3Rpb24mLCBjb25z
dCBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiYsIGJvb2wpOwogCi0gICAgdm9pZCBzdGFydFVw
ZGF0aW5nKElQQzo6Q29ubmVjdGlvbiYsIFdlYlBhZ2VQcm94eUlkZW50aWZpZXIsIGNvbnN0IFN0
cmluZyYgYXV0aG9yaXphdGlvblRva2VuKTsKLSAgICB2b2lkIHN0b3BVcGRhdGluZyhJUEM6OkNv
bm5lY3Rpb24mKTsKLSAgICB2b2lkIHJlbW92ZVJlcXVlc3Rlcihjb25zdCBJUEM6OkNvbm5lY3Rp
b246OkNsaWVudCopOwotICAgIHZvaWQgc2V0RW5hYmxlSGlnaEFjY3VyYWN5KElQQzo6Q29ubmVj
dGlvbiYsIGJvb2wpOworI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCisgICAgLy8gQ29yZUxvY2F0
aW9uR2VvbG9jYXRpb25Qcm92aWRlcjo6Q2xpZW50CisgICAgdm9pZCBwb3NpdGlvbkNoYW5nZWQo
Y29uc3QgU3RyaW5nJiB3ZWJzaXRlSWRlbnRpZmllciwgV2ViQ29yZTo6R2VvbG9jYXRpb25Qb3Np
dGlvbkRhdGEmJikgZmluYWw7CisgICAgdm9pZCBlcnJvck9jY3VycmVkKGNvbnN0IFN0cmluZyYg
d2Vic2l0ZUlkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgZXJyb3JNZXNzYWdlKSBmaW5hbDsKKyAg
ICB2b2lkIHJlc2V0R2VvbG9jYXRpb24oY29uc3QgU3RyaW5nJiB3ZWJzaXRlSWRlbnRpZmllcikg
ZmluYWw7CisjZW5kaWYKIAotICAgIEhhc2hTZXQ8Y29uc3QgSVBDOjpDb25uZWN0aW9uOjpDbGll
bnQqPiBtX3VwZGF0ZVJlcXVlc3RlcnM7Ci0gICAgSGFzaFNldDxjb25zdCBJUEM6OkNvbm5lY3Rp
b246OkNsaWVudCo+IG1faGlnaEFjY3VyYWN5UmVxdWVzdGVyczsKKyAgICBzdHJ1Y3QgUGVyRG9t
YWluRGF0YSB7CisgICAgICAgIFdURl9NQUtFX1NUUlVDVF9GQVNUX0FMTE9DQVRFRDsKKyAgICAg
ICAgSGFzaFNldDxJUEM6OkNvbm5lY3Rpb246OlVuaXF1ZUlEPiB3YXRjaGVyczsKKyAgICAgICAg
SGFzaFNldDxJUEM6OkNvbm5lY3Rpb246OlVuaXF1ZUlEPiB3YXRjaGVyc05lZWRpbmdIaWdoQWNj
dXJhY3k7CisgICAgICAgIHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6R2VvbG9jYXRpb25Qb3NpdGlv
bkRhdGE+IGxhc3RQb3NpdGlvbjsKIAorICAgICAgICAvLyBGSVhNRTogVXNlIGZvciBhbGwgQ29j
b2EgcG9ydHMuCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKKyAgICAgICAgc3RkOjp1bmlxdWVf
cHRyPFdlYkNvcmU6OkNvcmVMb2NhdGlvbkdlb2xvY2F0aW9uUHJvdmlkZXI+IHByb3ZpZGVyOwor
I2VuZGlmCisgICAgfTsKKworICAgIGJvb2wgaXNVcGRhdGluZyhjb25zdCBQZXJEb21haW5EYXRh
JikgY29uc3Q7CisgICAgYm9vbCBpc0hpZ2hBY2N1cmFjeUVuYWJsZWQoY29uc3QgUGVyRG9tYWlu
RGF0YSYpIGNvbnN0OworICAgIHZvaWQgcHJvdmlkZXJTdGFydFVwZGF0aW5nKFBlckRvbWFpbkRh
dGEmLCBjb25zdCBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiYpOworICAgIHZvaWQgcHJvdmlk
ZXJTdG9wVXBkYXRpbmcoUGVyRG9tYWluRGF0YSYpOworICAgIHZvaWQgcHJvdmlkZXJTZXRFbmFi
bGVkSGlnaEFjY3VyYWN5KFBlckRvbWFpbkRhdGEmLCBib29sIGVuYWJsZWQpOworCisgICAgSGFz
aE1hcDxXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiwgc3RkOjp1bmlxdWVfcHRyPFBlckRvbWFp
bkRhdGE+PiBtX3BlckRvbWFpbkRhdGE7CisjaWYgIVBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAg
c3RkOjp1bmlxdWVfcHRyPEFQSTo6R2VvbG9jYXRpb25Qcm92aWRlcj4gbV9wcm92aWRlcjsKLSAg
ICBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6Okdlb2xvY2F0aW9uUG9zaXRpb25EYXRhPiBtX2xhc3RQ
b3NpdGlvbjsKKyNlbmRpZgogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJHZW9sb2NhdGlvbk1hbmFnZXJQcm94eS5tZXNz
YWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkdlb2xvY2F0aW9uTWFuYWdlclBy
b3h5Lm1lc3NhZ2VzLmluCmluZGV4IGU1ZTljMjdkMTRhNWZiNzI2ZmNjMmM4MWZmM2UxNjVlYTNl
ODQwYmUuLjkwNDFhOTBjMjUwZjhhZGQ2OGJiMTNiM2FiYjU0YmViNjZjYjJkMjcgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkdlb2xvY2F0aW9uTWFuYWdlclByb3h5Lm1l
c3NhZ2VzLmluCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkdlb2xvY2F0aW9uTWFu
YWdlclByb3h5Lm1lc3NhZ2VzLmluCkBAIC0yMSw3ICsyMSw3IEBACiAjIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAK
IG1lc3NhZ2VzIC0+IFdlYkdlb2xvY2F0aW9uTWFuYWdlclByb3h5IHsKLSAgICBTdGFydFVwZGF0
aW5nKFdlYktpdDo6V2ViUGFnZVByb3h5SWRlbnRpZmllciBwYWdlUHJveHlJRCwgU3RyaW5nIGF1
dGhvcml6YXRpb25Ub2tlbikgV2FudHNDb25uZWN0aW9uCi0gICAgU3RvcFVwZGF0aW5nKCkgV2Fu
dHNDb25uZWN0aW9uCi0gICAgU2V0RW5hYmxlSGlnaEFjY3VyYWN5KGJvb2wgZW5hYmxlZCkgV2Fu
dHNDb25uZWN0aW9uCisgICAgU3RhcnRVcGRhdGluZyhXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFp
biByZWdpc3RyYWJsZURvbWFpbiwgV2ViS2l0OjpXZWJQYWdlUHJveHlJZGVudGlmaWVyIHBhZ2VQ
cm94eUlELCBTdHJpbmcgYXV0aG9yaXphdGlvblRva2VuLCBib29sIGVuYWJsZUhpZ2hBY2N1cmFj
eSkgV2FudHNDb25uZWN0aW9uCisgICAgU3RvcFVwZGF0aW5nKFdlYkNvcmU6OlJlZ2lzdHJhYmxl
RG9tYWluIHJlZ2lzdHJhYmxlRG9tYWluKSBXYW50c0Nvbm5lY3Rpb24KKyAgICBTZXRFbmFibGVI
aWdoQWNjdXJhY3koV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4gcmVnaXN0cmFibGVEb21haW4s
IGJvb2wgZW5hYmxlZCkgV2FudHNDb25uZWN0aW9uCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9pb3MvV0tHZW9sb2NhdGlvblByb3ZpZGVySU9TLm1tIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvaW9zL1dLR2VvbG9jYXRpb25Qcm92aWRlcklPUy5tbQppbmRleCBmNWU5
ZmQ3YmMzNDEyOTdhZjdiMjRlNjc0MTYzMzJjZDk2YWQ3MzljLi42ZjA2OTZkMzg5NTcyNDg3MmQ0
ZWRjOWE0YTA1OWQ0MjBkZDgxMWNkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9pb3MvV0tHZW9sb2NhdGlvblByb3ZpZGVySU9TLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL2lvcy9XS0dlb2xvY2F0aW9uUHJvdmlkZXJJT1MubW0KQEAgLTUxLDcgKzUxLDYgQEAK
ICNpbXBvcnQgPHd0Zi9VUkwuaD4KIAogLy8gRklYTUU6IFJlbW92ZSB1c2Ugb2YgV2ViS2l0MSBm
cm9tIFdlYktpdDIKLSNpbXBvcnQgPFdlYktpdC9XZWJHZW9sb2NhdGlvbkNvcmVMb2NhdGlvblBy
b3ZpZGVyLmg+CiAjaW1wb3J0IDxXZWJLaXQvV2ViQWxsb3dEZW55UG9saWN5TGlzdGVuZXIuaD4K
IAogQUxMT1dfREVQUkVDQVRFRF9ERUNMQVJBVElPTlNfQkVHSU4KQEAgLTU5LDkgKzU4LDYgQEAg
QUxMT1dfREVQUkVDQVRFRF9ERUNMQVJBVElPTlNfQkVHSU4KIEBpbnRlcmZhY2UgV0tHZW9sb2Nh
dGlvblByb3ZpZGVySU9TIChfV0tHZW9sb2NhdGlvbkNvcmVMb2NhdGlvbkxpc3RlbmVyKSA8X1dL
R2VvbG9jYXRpb25Db3JlTG9jYXRpb25MaXN0ZW5lcj4KIEBlbmQKIAotQGludGVyZmFjZSBXS0xl
Z2FjeUNvcmVMb2NhdGlvblByb3ZpZGVyIDogTlNPYmplY3Q8X1dLR2VvbG9jYXRpb25Db3JlTG9j
YXRpb25Qcm92aWRlciwgV2ViR2VvbG9jYXRpb25Db3JlTG9jYXRpb25VcGRhdGVMaXN0ZW5lcj4K
LUBlbmQKLQogQGludGVyZmFjZSBXS1dlYkFsbG93RGVueVBvbGljeUxpc3RlbmVyIDogTlNPYmpl
Y3Q8V2ViQWxsb3dEZW55UG9saWN5TGlzdGVuZXI+CiAtIChpZClpbml0V2l0aENvbXBsZXRpb25I
YW5kbGVyOihGdW5jdGlvbjx2b2lkKGJvb2wpPiYmKWNvbXBsZXRpb25IYW5kbGVyOwogLSAodm9p
ZClkZW55T25seVRoaXNSZXF1ZXN0IE5PX1JFVFVSTl9EVUVfVE9fQVNTRVJUOwpAQCAtNzksOCAr
NzUsNyBAQCBzdHJ1Y3QgR2VvbG9jYXRpb25SZXF1ZXN0RGF0YSB7CiB9OwogCiBAaW1wbGVtZW50
YXRpb24gV0tHZW9sb2NhdGlvblByb3ZpZGVySU9TIHsKLSAgICBSZWZQdHI8V2ViS2l0OjpXZWJH
ZW9sb2NhdGlvbk1hbmFnZXJQcm94eT4gX2dlb2xvY2F0aW9uTWFuYWdlcjsKLSAgICBSZXRhaW5Q
dHI8aWQgPF9XS0dlb2xvY2F0aW9uQ29yZUxvY2F0aW9uUHJvdmlkZXI+PiBfY29yZUxvY2F0aW9u
UHJvdmlkZXI7CisgICAgUmV0YWluUHRyPGlkIDxfV0tHZW9sb2NhdGlvbkNvcmVMb2NhdGlvblBy
b3ZpZGVyPj4gX2NsaWVudEF1dGhvcml6YXRpb25Qcm92aWRlcjsKICAgICBCT09MIF9pc1dlYkNv
cmVHZW9sb2NhdGlvbkFjdGl2ZTsKICAgICBSZWZQdHI8V2ViS2l0OjpXZWJHZW9sb2NhdGlvblBv
c2l0aW9uPiBfbGFzdEFjdGl2ZVBvc2l0aW9uOwogICAgIERlcXVlPEdlb2xvY2F0aW9uUmVxdWVz
dERhdGE+IF9yZXF1ZXN0c1dhaXRpbmdGb3JDb3JlTG9jYXRpb25BdXRob3JpemF0aW9uOwpAQCAt
ODgsNDggKzgzLDE2IEBAIEBpbXBsZW1lbnRhdGlvbiBXS0dlb2xvY2F0aW9uUHJvdmlkZXJJT1Mg
ewogCiAjcHJhZ21hIG1hcmsgLSBXS0dlb2xvY2F0aW9uUHJvdmlkZXIgY2FsbGJhY2tzIGltcGxl
bWVudGF0aW9uLgogCi1zdGF0aWMgdm9pZCBzdGFydFVwZGF0aW5nQ2FsbGJhY2soV0tHZW9sb2Nh
dGlvbk1hbmFnZXJSZWYgZ2VvbG9jYXRpb25NYW5hZ2VyLCBjb25zdCB2b2lkKiBjbGllbnRJbmZv
KQotewotICAgIFdLR2VvbG9jYXRpb25Qcm92aWRlcklPUyAqZ2VvbG9jYXRpb25Qcm92aWRlciA9
IHJlaW50ZXJwcmV0X2Nhc3Q8V0tHZW9sb2NhdGlvblByb3ZpZGVySU9TKj4oY29uc3RfY2FzdDx2
b2lkKj4oY2xpZW50SW5mbykpOwotICAgIEFTU0VSVChbZ2VvbG9jYXRpb25Qcm92aWRlciBpc0tp
bmRPZkNsYXNzOltXS0dlb2xvY2F0aW9uUHJvdmlkZXJJT1MgY2xhc3NdXSk7Ci0gICAgW2dlb2xv
Y2F0aW9uUHJvdmlkZXIgX3N0YXJ0VXBkYXRpbmddOwotfQotCi1zdGF0aWMgdm9pZCBzdG9wVXBk
YXRpbmdDYWxsYmFjayhXS0dlb2xvY2F0aW9uTWFuYWdlclJlZiBnZW9sb2NhdGlvbk1hbmFnZXIs
IGNvbnN0IHZvaWQqIGNsaWVudEluZm8pCi17Ci0gICAgV0tHZW9sb2NhdGlvblByb3ZpZGVySU9T
ICpnZW9sb2NhdGlvblByb3ZpZGVyID0gcmVpbnRlcnByZXRfY2FzdDxXS0dlb2xvY2F0aW9uUHJv
dmlkZXJJT1MqPihjb25zdF9jYXN0PHZvaWQqPihjbGllbnRJbmZvKSk7Ci0gICAgQVNTRVJUKFtn
ZW9sb2NhdGlvblByb3ZpZGVyIGlzS2luZE9mQ2xhc3M6W1dLR2VvbG9jYXRpb25Qcm92aWRlcklP
UyBjbGFzc11dKTsKLSAgICBbZ2VvbG9jYXRpb25Qcm92aWRlciBfc3RvcFVwZGF0aW5nXTsKLX0K
LQotc3RhdGljIHZvaWQgc2V0RW5hYmxlSGlnaEFjY3VyYWN5KFdLR2VvbG9jYXRpb25NYW5hZ2Vy
UmVmIGdlb2xvY2F0aW9uTWFuYWdlciwgYm9vbCBlbmFibGUsIGNvbnN0IHZvaWQqIGNsaWVudElu
Zm8pCi17Ci0gICAgV0tHZW9sb2NhdGlvblByb3ZpZGVySU9TICpnZW9sb2NhdGlvblByb3ZpZGVy
ID0gcmVpbnRlcnByZXRfY2FzdDxXS0dlb2xvY2F0aW9uUHJvdmlkZXJJT1MqPihjb25zdF9jYXN0
PHZvaWQqPihjbGllbnRJbmZvKSk7Ci0gICAgQVNTRVJUKFtnZW9sb2NhdGlvblByb3ZpZGVyIGlz
S2luZE9mQ2xhc3M6W1dLR2VvbG9jYXRpb25Qcm92aWRlcklPUyBjbGFzc11dKTsKLSAgICBbZ2Vv
bG9jYXRpb25Qcm92aWRlciBfc2V0RW5hYmxlSGlnaEFjY3VyYWN5OmVuYWJsZV07Ci19Ci0KIC0g
KHZvaWQpX3N0YXJ0VXBkYXRpbmcKIHsKLSAgICBfaXNXZWJDb3JlR2VvbG9jYXRpb25BY3RpdmUg
PSBZRVM7Ci0gICAgW19jb3JlTG9jYXRpb25Qcm92aWRlciBzdGFydF07Ci0KLSAgICAvLyBJZiB3
ZSBoYXZlIHRoZSBsYXN0IHBvc2l0aW9uLCBpdCBpcyBmcm9tIHRoZSBpbml0aWFsaXphdGlvbiBv
ciB3YXJtIHVwLiBJdCBpcyB0aGUgbGFzdCBrbm93bgotICAgIC8vIGdvb2QgcG9zaXRpb24gc28g
d2UgY2FuIHJldHVybiBpdCBkaXJlY3RseS4KLSAgICBpZiAoX2xhc3RBY3RpdmVQb3NpdGlvbikK
LSAgICAgICAgX2dlb2xvY2F0aW9uTWFuYWdlci0+cHJvdmlkZXJEaWRDaGFuZ2VQb3NpdGlvbihf
bGFzdEFjdGl2ZVBvc2l0aW9uLmdldCgpKTsKIH0KIAogLSAodm9pZClfc3RvcFVwZGF0aW5nCiB7
Ci0gICAgX2lzV2ViQ29yZUdlb2xvY2F0aW9uQWN0aXZlID0gTk87Ci0gICAgW19jb3JlTG9jYXRp
b25Qcm92aWRlciBzdG9wXTsKLSAgICBfbGFzdEFjdGl2ZVBvc2l0aW9uID0gbnVsbHB0cjsKIH0K
IAogLSAodm9pZClfc2V0RW5hYmxlSGlnaEFjY3VyYWN5OihCT09MKWVuYWJsZUhpZ2hBY2N1cmFj
eQogewotICAgIFtfY29yZUxvY2F0aW9uUHJvdmlkZXIgc2V0RW5hYmxlSGlnaEFjY3VyYWN5OmVu
YWJsZUhpZ2hBY2N1cmFjeV07CiB9CiAKICNwcmFnbWEgbWFyayAtIFB1YmxpYyBBUEkgaW1wbGVt
ZW50YXRpb24uCkBAIC0xNDYsMjUgKzEwOSwzMyBAQCAtIChpZClpbml0V2l0aFByb2Nlc3NQb29s
OihXZWJLaXQ6OldlYlByb2Nlc3NQb29sJilwcm9jZXNzUG9vbAogICAgIHNlbGYgPSBbc3VwZXIg
aW5pdF07CiAgICAgaWYgKCFzZWxmKQogICAgICAgICByZXR1cm4gbmlsOwotICAgIF9nZW9sb2Nh
dGlvbk1hbmFnZXIgPSBwcm9jZXNzUG9vbC5zdXBwbGVtZW50PFdlYktpdDo6V2ViR2VvbG9jYXRp
b25NYW5hZ2VyUHJveHk+KCk7Ci0gICAgV0tHZW9sb2NhdGlvblByb3ZpZGVyVjEgcHJvdmlkZXJD
YWxsYmFjayA9IHsKLSAgICAgICAgeyAxLCBzZWxmIH0sCi0gICAgICAgIHN0YXJ0VXBkYXRpbmdD
YWxsYmFjaywKLSAgICAgICAgc3RvcFVwZGF0aW5nQ2FsbGJhY2ssCi0gICAgICAgIHNldEVuYWJs
ZUhpZ2hBY2N1cmFjeQotICAgIH07Ci0gICAgV0tHZW9sb2NhdGlvbk1hbmFnZXJTZXRQcm92aWRl
cih0b0FQSShfZ2VvbG9jYXRpb25NYW5hZ2VyLmdldCgpKSwgJnByb3ZpZGVyQ2FsbGJhY2suYmFz
ZSk7Ci0gICAgX2NvcmVMb2NhdGlvblByb3ZpZGVyID0gd3JhcHBlcihwcm9jZXNzUG9vbCkuX2Nv
cmVMb2NhdGlvblByb3ZpZGVyID86IGFkb3B0TlMoc3RhdGljX2Nhc3Q8aWQgPF9XS0dlb2xvY2F0
aW9uQ29yZUxvY2F0aW9uUHJvdmlkZXI+PihbW1dLTGVnYWN5Q29yZUxvY2F0aW9uUHJvdmlkZXIg
YWxsb2NdIGluaXRdKSk7Ci0gICAgW19jb3JlTG9jYXRpb25Qcm92aWRlciBzZXRMaXN0ZW5lcjpz
ZWxmXTsKKworICAgIC8vIEZJWE1FOiBTb21lIGNsaWVudHMgdXNlIHRoaXMgU1BJIHRvIHNldCBh
IF9jb3JlTG9jYXRpb25Qcm92aWRlciB0aGF0IGZhaWxzIGFsbCBhdXRob3JpemF0aW9ucyBhcyBh
IHdheSB0byBkaXNhYmxlIHRoZSBHZW9sb2NhdGlvbiBBUEkuCisgICAgLy8gVGhleSBzaG91bGQg
anVzdCBpbXBsZW1lbnQgcmVxdWVzdEdlb2xvY2F0aW9uQXV0aG9yaXphdGlvbkZvclVSTCBvbiB0
aGUgV0tXZWJWaWV3IGluc3RlYWQsIHNvIHdlIGNhbiBkcm9wIHRoaXMgbG9naWMgZW50aXJlbHku
CisgICAgX2NsaWVudEF1dGhvcml6YXRpb25Qcm92aWRlciA9IHdyYXBwZXIocHJvY2Vzc1Bvb2wp
Ll9jb3JlTG9jYXRpb25Qcm92aWRlcjsKKyAgICBpZiAoX2NsaWVudEF1dGhvcml6YXRpb25Qcm92
aWRlcikKKyAgICAgICAgW19jbGllbnRBdXRob3JpemF0aW9uUHJvdmlkZXIgc2V0TGlzdGVuZXI6
c2VsZl07CisKICAgICByZXR1cm4gc2VsZjsKIH0KIAogLSAodm9pZClkZWNpZGVQb2xpY3lGb3JH
ZW9sb2NhdGlvblJlcXVlc3RGcm9tT3JpZ2luOihXZWJLaXQ6OkZyYW1lSW5mb0RhdGEmJilmcmFt
ZUluZm8gY29tcGxldGlvbkhhbmRsZXI6KEZ1bmN0aW9uPHZvaWQoYm9vbCk+JiYpY29tcGxldGlv
bkhhbmRsZXIgdmlldzooV0tXZWJWaWV3ICopY29udGVudFZpZXcKIHsKLSAgICAvLyBTdGVwIDE6
IGFzayB0aGUgdXNlciBpZiB0aGUgYXBwIGNhbiB1c2UgR2VvbG9jYXRpb24uCisgICAgV2ViQ29y
ZTo6UmVnaXN0cmFibGVEb21haW4gcmVnaXN0cmFibGVEb21haW4oZnJhbWVJbmZvLnNlY3VyaXR5
T3JpZ2luKTsKICAgICBHZW9sb2NhdGlvblJlcXVlc3REYXRhIGdlb2xvY2F0aW9uUmVxdWVzdERh
dGEgeyBbY29udGVudFZpZXcgVVJMXSwgV1RGTW92ZShmcmFtZUluZm8pLCBXVEZNb3ZlKGNvbXBs
ZXRpb25IYW5kbGVyKSwgY29udGVudFZpZXcgfTsKICAgICBfcmVxdWVzdHNXYWl0aW5nRm9yQ29y
ZUxvY2F0aW9uQXV0aG9yaXphdGlvbi5hcHBlbmQoV1RGTW92ZShnZW9sb2NhdGlvblJlcXVlc3RE
YXRhKSk7Ci0gICAgW19jb3JlTG9jYXRpb25Qcm92aWRlciByZXF1ZXN0R2VvbG9jYXRpb25BdXRo
b3JpemF0aW9uXTsKKyAgICBpZiAoX2NsaWVudEF1dGhvcml6YXRpb25Qcm92aWRlcikgeworICAg
ICAgICAvLyBTdGVwIDE6IGFzayB0aGUgdXNlciBpZiB0aGUgYXBwIGNhbiB1c2UgR2VvbG9jYXRp
b24uCisgICAgICAgIFtfY2xpZW50QXV0aG9yaXphdGlvblByb3ZpZGVyIHJlcXVlc3RHZW9sb2Nh
dGlvbkF1dGhvcml6YXRpb25dOworICAgIH0gZWxzZSB7CisgICAgICAgIC8vIFN0ZXAgMTogYXNr
IENvcmVMb2NhdGlvbiBpZiB0aGUgYXBwIGNhbiB1c2UgR2VvbG9jYXRpb24uCisgICAgICAgIFdl
YkNvcmU6OkNvcmVMb2NhdGlvbkdlb2xvY2F0aW9uUHJvdmlkZXI6OnJlcXVlc3RBdXRob3JpemF0
aW9uKHJlZ2lzdHJhYmxlRG9tYWluLCBbc2VsZiwgc3Ryb25nU2VsZiA9IHJldGFpblB0cihzZWxm
KV0oYm9vbCBhdXRob3JpemVkKSB7CisgICAgICAgICAgICBpZiAoYXV0aG9yaXplZCkKKyAgICAg
ICAgICAgICAgICBbc2VsZiBnZW9sb2NhdGlvbkF1dGhvcml6YXRpb25HcmFudGVkXTsKKyAgICAg
ICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICBbc2VsZiBnZW9sb2NhdGlvbkF1dGhvcml6YXRp
b25EZW5pZWRdOworICAgICAgICB9KTsKKyAgICB9CiB9CiBAZW5kCiAKQEAgLTE3NCw3ICsxNDUs
NyBAQCBAaW1wbGVtZW50YXRpb24gV0tHZW9sb2NhdGlvblByb3ZpZGVySU9TIChXZWJHZW9sb2Nh
dGlvbkNvcmVMb2NhdGlvblVwZGF0ZUxpc3RlbgogCiAtICh2b2lkKWdlb2xvY2F0aW9uQXV0aG9y
aXphdGlvbkdyYW50ZWQKIHsKLSAgICAvLyBTdGVwIDI6IGFzayB0aGUgdXNlciBpZiB0aGlzIHBh
cnRpY3VsYXIgcGFnZSBjYW4gdXNlIGdlbG9jYXRpb24uCisgICAgLy8gU3RlcCAyOiBhc2sgdGhl
IHVzZXIgaWYgdGhpcyBwYXJ0aWN1bGFyIHBhZ2UgY2FuIHVzZSBnZW9sb2NhdGlvbi4KICAgICBp
ZiAoX3JlcXVlc3RzV2FpdGluZ0ZvckNvcmVMb2NhdGlvbkF1dGhvcml6YXRpb24uaXNFbXB0eSgp
KQogICAgICAgICByZXR1cm47CiAKQEAgLTIxMCw5MyArMTgxLDE0IEBAIC0gKHZvaWQpZ2VvbG9j
YXRpb25BdXRob3JpemF0aW9uRGVuaWVkCiAKIC0gKHZvaWQpcG9zaXRpb25DaGFuZ2VkOihfV0tH
ZW9sb2NhdGlvblBvc2l0aW9uICopcG9zaXRpb24KIHsKLSAgICBfbGFzdEFjdGl2ZVBvc2l0aW9u
ID0gcG9zaXRpb24tPl9nZW9sb2NhdGlvblBvc2l0aW9uLmdldCgpOwotICAgIF9nZW9sb2NhdGlv
bk1hbmFnZXItPnByb3ZpZGVyRGlkQ2hhbmdlUG9zaXRpb24oX2xhc3RBY3RpdmVQb3NpdGlvbi5n
ZXQoKSk7Ci19Ci0KLS0gKHZvaWQpZXJyb3JPY2N1cnJlZDooTlNTdHJpbmcgKillcnJvck1lc3Nh
Z2UKLXsKLSAgICBfZ2VvbG9jYXRpb25NYW5hZ2VyLT5wcm92aWRlckRpZEZhaWxUb0RldGVybWlu
ZVBvc2l0aW9uKGVycm9yTWVzc2FnZSk7Ci19Ci0KLS0gKHZvaWQpcmVzZXRHZW9sb2NhdGlvbgot
ewotICAgIF9nZW9sb2NhdGlvbk1hbmFnZXItPnJlc2V0UGVybWlzc2lvbnMoKTsKLX0KLQotQGVu
ZAotCi0jIHByYWdtYSBtYXJrIC0gSW1wbGVtZW50YXRpb24gb2YgV0tMZWdhY3lDb3JlTG9jYXRp
b25Qcm92aWRlcgotCi1AaW1wbGVtZW50YXRpb24gV0tMZWdhY3lDb3JlTG9jYXRpb25Qcm92aWRl
ciB7Ci0gICAgaWQgPF9XS0dlb2xvY2F0aW9uQ29yZUxvY2F0aW9uTGlzdGVuZXI+IF9saXN0ZW5l
cjsKLSAgICBSZXRhaW5QdHI8V2ViR2VvbG9jYXRpb25Db3JlTG9jYXRpb25Qcm92aWRlcj4gX3By
b3ZpZGVyOwotfQotCi0vLyA8X1dLR2VvbG9jYXRpb25Db3JlTG9jYXRpb25Qcm92aWRlcj4gTWV0
aG9kcwotCi0tICh2b2lkKXNldExpc3RlbmVyOihpZDxfV0tHZW9sb2NhdGlvbkNvcmVMb2NhdGlv
bkxpc3RlbmVyPilsaXN0ZW5lcgotewotICAgIEFTU0VSVChsaXN0ZW5lciAmJiAhX2xpc3RlbmVy
ICYmICFfcHJvdmlkZXIpOwotICAgIF9saXN0ZW5lciA9IGxpc3RlbmVyOwotICAgIF9wcm92aWRl
ciA9IGFkb3B0TlMoW1tXZWJHZW9sb2NhdGlvbkNvcmVMb2NhdGlvblByb3ZpZGVyIGFsbG9jXSBp
bml0V2l0aExpc3RlbmVyOnNlbGZdKTsKLX0KLQotLSAodm9pZClyZXF1ZXN0R2VvbG9jYXRpb25B
dXRob3JpemF0aW9uCi17Ci0gICAgQVNTRVJUKF9wcm92aWRlcik7Ci0gICAgW19wcm92aWRlciBy
ZXF1ZXN0R2VvbG9jYXRpb25BdXRob3JpemF0aW9uXTsKLX0KLQotLSAodm9pZClzdGFydAotewot
ICAgIEFTU0VSVChfcHJvdmlkZXIpOwotICAgIFtfcHJvdmlkZXIgc3RhcnRdOwotfQotCi0tICh2
b2lkKXN0b3AKLXsKLSAgICBBU1NFUlQoX3Byb3ZpZGVyKTsKLSAgICBbX3Byb3ZpZGVyIHN0b3Bd
OwotfQotCi0tICh2b2lkKXNldEVuYWJsZUhpZ2hBY2N1cmFjeTooQk9PTClmbGFnCi17Ci0gICAg
QVNTRVJUKF9wcm92aWRlcik7Ci0gICAgW19wcm92aWRlciBzZXRFbmFibGVIaWdoQWNjdXJhY3k6
ZmxhZ107Ci19Ci0KLS8vIDxXZWJHZW9sb2NhdGlvbkNvcmVMb2NhdGlvblVwZGF0ZUxpc3RlbmVy
PiBNZXRob2RzCi0KLS0gKHZvaWQpZ2VvbG9jYXRpb25BdXRob3JpemF0aW9uR3JhbnRlZAotewot
ICAgIEFTU0VSVChfbGlzdGVuZXIpOwotICAgIFtfbGlzdGVuZXIgZ2VvbG9jYXRpb25BdXRob3Jp
emF0aW9uR3JhbnRlZF07Ci19Ci0KLS0gKHZvaWQpZ2VvbG9jYXRpb25BdXRob3JpemF0aW9uRGVu
aWVkCi17Ci0gICAgQVNTRVJUKF9saXN0ZW5lcik7Ci0gICAgW19saXN0ZW5lciBnZW9sb2NhdGlv
bkF1dGhvcml6YXRpb25EZW5pZWRdOwotfQotCi0tICh2b2lkKXBvc2l0aW9uQ2hhbmdlZDooV2Vi
Q29yZTo6R2VvbG9jYXRpb25Qb3NpdGlvbkRhdGEmJiljb3JlUG9zaXRpb24KLXsKLSAgICBBU1NF
UlQoX2xpc3RlbmVyKTsKLSAgICBhdXRvIHBvc2l0aW9uID0gV2ViS2l0OjpXZWJHZW9sb2NhdGlv
blBvc2l0aW9uOjpjcmVhdGUoV1RGTW92ZShjb3JlUG9zaXRpb24pKTsKLSAgICBbX2xpc3RlbmVy
IHBvc2l0aW9uQ2hhbmdlZDp3cmFwcGVyKHBvc2l0aW9uLmdldCgpKV07CiB9CiAKIC0gKHZvaWQp
ZXJyb3JPY2N1cnJlZDooTlNTdHJpbmcgKillcnJvck1lc3NhZ2UKIHsKLSAgICBBU1NFUlQoX2xp
c3RlbmVyKTsKLSAgICBbX2xpc3RlbmVyIGVycm9yT2NjdXJyZWQ6ZXJyb3JNZXNzYWdlXTsKIH0K
IAogLSAodm9pZClyZXNldEdlb2xvY2F0aW9uCiB7Ci0gICAgQVNTRVJUKF9saXN0ZW5lcik7Ci0g
ICAgW19saXN0ZW5lciByZXNldEdlb2xvY2F0aW9uXTsKIH0KIAogQGVuZApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9X
ZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggZjdiZWU1NDNjZTBm
YzBhYzA2ZDc2ODUxZWUyMTdkZjdhZDg0MDBiOS4uYzUzZTA0MTJiYjhjMTQyYWQ1N2U4YjMyOWEw
YzZkNjg5MWQ3NmI0YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qCkBAIC00MzE2LDYgKzQzMTYsNyBAQAogCQk0NkNFM0IxMDIzRDhDODNEMDAx
NkE5NkEgLyogV2ViQmFja0ZvcndhcmRMaXN0Q291bnRzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IFdlYkJhY2tGb3J3YXJkTGlzdENvdW50cy5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQk0NkQ0OEZDQzI3OTlEN0REMDA3RDIwMTQgLyogV2ViU2hhcmVkV29ya2Vy
U2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbi5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXZWJTaGFy
ZWRXb3JrZXJTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uLmNwcDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJNDZENDhGQ0QyNzk5RDdERTAwN0QyMDE0IC8qIFdlYlNoYXJlZFdvcmtlclNl
cnZlclRvQ29udGV4dENvbm5lY3Rpb24uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2ViU2hhcmVkV29ya2Vy
U2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owor
CQk0NkRBMjg1NzI3QjczRTc2MDA4OUQzMzkgLyogV2ViR2VvbG9jYXRpb25NYW5hZ2VyUHJveHlD
b2NvYS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXZWJHZW9sb2NhdGlvbk1hbmFnZXJQcm94eUNv
Y29hLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDZERjA2MzkxRjM5MDVFNTAw
MTk4MEJCIC8qIE5ldHdvcmtDT1JTUHJlZmxpZ2h0Q2hlY2tlci5jcHAgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBOZXR3b3JrQ09SU1ByZWZsaWdodENoZWNrZXIuY3BwOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0NkRGMDYzQTFGMzkwNUU1MDAxOTgwQkIgLyog
TmV0d29ya0NPUlNQcmVmbGlnaHRDaGVja2VyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IE5ldHdvcmtDT1JTUHJlZmxpZ2h0Q2hlY2tlci5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQk0NkU5NzYwQTI3NTdGNkM5MDBBQ0REMzcgLyogV2ViQnJvYWRjYXN0Q2hhbm5l
bFJlZ2lzdHJ5Lm1lc3NhZ2VzLmluICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IFdlYkJyb2FkY2Fz
dENoYW5uZWxSZWdpc3RyeS5tZXNzYWdlcy5pbjsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
QEAgLTc2MDMsNiArNzYwNCw3IEBACiAJCQkJNTJENUExQUExQzU3NDk0RTAwREUzNEEzIC8qIFZp
ZGVvRnVsbHNjcmVlbk1hbmFnZXJQcm94eS5oICovLAogCQkJCTUyRDVBMUFCMUM1NzQ5NEUwMERF
MzRBMyAvKiBWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyUHJveHkubWVzc2FnZXMuaW4gKi8sCiAJCQkJ
NTJENUExQUMxQzU3NDk0RTAwREUzNEEzIC8qIFZpZGVvRnVsbHNjcmVlbk1hbmFnZXJQcm94eS5t
bSAqLywKKwkJCQk0NkRBMjg1NzI3QjczRTc2MDA4OUQzMzkgLyogV2ViR2VvbG9jYXRpb25NYW5h
Z2VyUHJveHlDb2NvYS5jcHAgKi8sCiAJCQkJQzE4RjNBMTMyNTYzMzJBNjAwNzk3RTY2IC8qIFdl
Ykluc3BlY3RvclByZWZlcmVuY2VPYnNlcnZlci5oICovLAogCQkJCUMxOEYzQTE0MjU2MzMzNDMw
MDc5N0U2NiAvKiBXZWJJbnNwZWN0b3JQcmVmZXJlbmNlT2JzZXJ2ZXIubW0gKi8sCiAJCQkJQ0RG
MUI5MTkyNjcwMjFENjAwMDdFQzEwIC8qIFdlYktpdFN3aWZ0U29mdExpbmsuaCAqLywKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HZW9sb2NhdGlvbi9XZWJHZW9sb2NhdGlv
bk1hbmFnZXIuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dlb2xvY2F0aW9uL1dlYkdl
b2xvY2F0aW9uTWFuYWdlci5jcHAKaW5kZXggNWE5YzlmNGQyYTFjZDY2YTRiNjc1OWI1OTM4N2Vh
MmNmNTViMmFhOC4uOTRmMDE4MjFiOGMxMGQxMjI3ZjBjNTQxMmU5NjY5NzQ2OTI4MjcxYiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dlb2xvY2F0aW9uL1dlYkdlb2xvY2F0
aW9uTWFuYWdlci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dlb2xvY2F0aW9u
L1dlYkdlb2xvY2F0aW9uTWFuYWdlci5jcHAKQEAgLTM5LDYgKzM5LDE0IEBACiBuYW1lc3BhY2Ug
V2ViS2l0IHsKIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCitzdGF0aWMgUmVnaXN0cmFibGVE
b21haW4gcmVnaXN0cmFibGVEb21haW5Gb3JQYWdlKFdlYlBhZ2UmIHBhZ2UpCit7CisgICAgYXV0
byogZG9jdW1lbnQgPSBwYWdlLmNvcmVQYWdlKCkgPyBwYWdlLmNvcmVQYWdlKCktPm1haW5GcmFt
ZSgpLmRvY3VtZW50KCkgOiBudWxscHRyOworICAgIGlmICghZG9jdW1lbnQpCisgICAgICAgIHJl
dHVybiBSZWdpc3RyYWJsZURvbWFpbiB7IH07CisgICAgcmV0dXJuIFJlZ2lzdHJhYmxlRG9tYWlu
IHsgZG9jdW1lbnQtPnVybCgpIH07Cit9CisKIGNvbnN0IGNoYXIqIFdlYkdlb2xvY2F0aW9uTWFu
YWdlcjo6c3VwcGxlbWVudE5hbWUoKQogewogICAgIHJldHVybiAiV2ViR2VvbG9jYXRpb25NYW5h
Z2VyIjsKQEAgLTUwLDg4ICs1OCwxNDIgQEAgV2ViR2VvbG9jYXRpb25NYW5hZ2VyOjpXZWJHZW9s
b2NhdGlvbk1hbmFnZXIoV2ViUHJvY2VzcyYgcHJvY2VzcykKICAgICBtX3Byb2Nlc3MuYWRkTWVz
c2FnZVJlY2VpdmVyKE1lc3NhZ2VzOjpXZWJHZW9sb2NhdGlvbk1hbmFnZXI6Om1lc3NhZ2VSZWNl
aXZlck5hbWUoKSwgKnRoaXMpOwogfQogCi12b2lkIFdlYkdlb2xvY2F0aW9uTWFuYWdlcjo6cmVn
aXN0ZXJXZWJQYWdlKFdlYlBhZ2UmIHBhZ2UsIGNvbnN0IFN0cmluZyYgYXV0aG9yaXphdGlvblRv
a2VuKQotewotICAgIGJvb2wgd2FzVXBkYXRpbmcgPSBpc1VwZGF0aW5nKCk7CitXZWJHZW9sb2Nh
dGlvbk1hbmFnZXI6On5XZWJHZW9sb2NhdGlvbk1hbmFnZXIoKSA9IGRlZmF1bHQ7CiAKLSAgICBt
X3BhZ2VTZXQuYWRkKHBhZ2UpOwordm9pZCBXZWJHZW9sb2NhdGlvbk1hbmFnZXI6OnJlZ2lzdGVy
V2ViUGFnZShXZWJQYWdlJiBwYWdlLCBjb25zdCBTdHJpbmcmIGF1dGhvcml6YXRpb25Ub2tlbiwg
Ym9vbCBuZWVkc0hpZ2hBY2N1cmFjeSkKK3sKKyAgICBhdXRvIHJlZ2lzdHJhYmxlRG9tYWluID0g
cmVnaXN0cmFibGVEb21haW5Gb3JQYWdlKHBhZ2UpOworICAgIGlmIChyZWdpc3RyYWJsZURvbWFp
bi5zdHJpbmcoKS5pc0VtcHR5KCkpCisgICAgICAgIHJldHVybjsKKworICAgIGF1dG8mIHBhZ2VT
ZXRzID0gbV9wYWdlU2V0cy5lbnN1cmUocmVnaXN0cmFibGVEb21haW4sIFtdIHsKKyAgICAgICAg
cmV0dXJuIFBhZ2VTZXRzIHsgfTsKKyAgICB9KS5pdGVyYXRvci0+dmFsdWU7CisgICAgYm9vbCB3
YXNVcGRhdGluZyA9IGlzVXBkYXRpbmcocGFnZVNldHMpOworICAgIGJvb2wgaGlnaEFjY3VyYWN5
V2FzRW5hYmxlZCA9IGlzSGlnaEFjY3VyYWN5RW5hYmxlZChwYWdlU2V0cyk7CisKKyAgICBwYWdl
U2V0cy5wYWdlU2V0LmFkZChwYWdlKTsKKyAgICBpZiAobmVlZHNIaWdoQWNjdXJhY3kpCisgICAg
ICAgIHBhZ2VTZXRzLmhpZ2hBY2N1cmFjeVBhZ2VTZXQuYWRkKHBhZ2UpOworICAgIG1fcGFnZVRv
UmVnaXN0cmFibGVEb21haW4uYWRkKCZwYWdlLCByZWdpc3RyYWJsZURvbWFpbik7CisKKyAgICBp
ZiAoIXdhc1VwZGF0aW5nKSB7CisgICAgICAgIG1fcHJvY2Vzcy5wYXJlbnRQcm9jZXNzQ29ubmVj
dGlvbigpLT5zZW5kKE1lc3NhZ2VzOjpXZWJHZW9sb2NhdGlvbk1hbmFnZXJQcm94eTo6U3RhcnRV
cGRhdGluZyhyZWdpc3RyYWJsZURvbWFpbiwgcGFnZS53ZWJQYWdlUHJveHlJZGVudGlmaWVyKCks
IGF1dGhvcml6YXRpb25Ub2tlbiwgbmVlZHNIaWdoQWNjdXJhY3kpLCAwKTsKKyAgICAgICAgcmV0
dXJuOworICAgIH0KIAotICAgIGlmICghd2FzVXBkYXRpbmcpCi0gICAgICAgIG1fcHJvY2Vzcy5w
YXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpLT5zZW5kKE1lc3NhZ2VzOjpXZWJHZW9sb2NhdGlvbk1h
bmFnZXJQcm94eTo6U3RhcnRVcGRhdGluZyhwYWdlLndlYlBhZ2VQcm94eUlkZW50aWZpZXIoKSwg
YXV0aG9yaXphdGlvblRva2VuKSwgMCk7CisgICAgYm9vbCBoaWdoQWNjdXJhY3lTaG91bGRCZUVu
YWJsZWQgPSBpc0hpZ2hBY2N1cmFjeUVuYWJsZWQocGFnZVNldHMpOworICAgIGlmIChoaWdoQWNj
dXJhY3lXYXNFbmFibGVkICE9IGhpZ2hBY2N1cmFjeVNob3VsZEJlRW5hYmxlZCkKKyAgICAgICAg
bV9wcm9jZXNzLnBhcmVudFByb2Nlc3NDb25uZWN0aW9uKCktPnNlbmQoTWVzc2FnZXM6OldlYkdl
b2xvY2F0aW9uTWFuYWdlclByb3h5OjpTZXRFbmFibGVIaWdoQWNjdXJhY3kocmVnaXN0cmFibGVE
b21haW4sIGhpZ2hBY2N1cmFjeVNob3VsZEJlRW5hYmxlZCksIDApOwogfQogCiB2b2lkIFdlYkdl
b2xvY2F0aW9uTWFuYWdlcjo6dW5yZWdpc3RlcldlYlBhZ2UoV2ViUGFnZSYgcGFnZSkKIHsKLSAg
ICBib29sIGhpZ2hBY2N1cmFjeVdhc0VuYWJsZWQgPSBpc0hpZ2hBY2N1cmFjeUVuYWJsZWQoKTsK
KyAgICBhdXRvIHJlZ2lzdHJhYmxlRG9tYWluID0gbV9wYWdlVG9SZWdpc3RyYWJsZURvbWFpbi50
YWtlKCZwYWdlKTsKKyAgICBpZiAocmVnaXN0cmFibGVEb21haW4uc3RyaW5nKCkuaXNFbXB0eSgp
KQorICAgICAgICByZXR1cm47CisKKyAgICBhdXRvIGl0ID0gbV9wYWdlU2V0cy5maW5kKHJlZ2lz
dHJhYmxlRG9tYWluKTsKKyAgICBpZiAoaXQgPT0gbV9wYWdlU2V0cy5lbmQoKSkKKyAgICAgICAg
cmV0dXJuOwogCi0gICAgbV9wYWdlU2V0LnJlbW92ZShwYWdlKTsKLSAgICBtX2hpZ2hBY2N1cmFj
eVBhZ2VTZXQucmVtb3ZlKHBhZ2UpOworICAgIGF1dG8mIHBhZ2VTZXRzID0gaXQtPnZhbHVlOwor
ICAgIGJvb2wgaGlnaEFjY3VyYWN5V2FzRW5hYmxlZCA9IGlzSGlnaEFjY3VyYWN5RW5hYmxlZChw
YWdlU2V0cyk7CiAKLSAgICBpZiAoIWlzVXBkYXRpbmcoKSkKLSAgICAgICAgbV9wcm9jZXNzLnBh
cmVudFByb2Nlc3NDb25uZWN0aW9uKCktPnNlbmQoTWVzc2FnZXM6OldlYkdlb2xvY2F0aW9uTWFu
YWdlclByb3h5OjpTdG9wVXBkYXRpbmcoKSwgMCk7CisgICAgcGFnZVNldHMucGFnZVNldC5yZW1v
dmUocGFnZSk7CisgICAgcGFnZVNldHMuaGlnaEFjY3VyYWN5UGFnZVNldC5yZW1vdmUocGFnZSk7
CisKKyAgICBpZiAoIWlzVXBkYXRpbmcocGFnZVNldHMpKQorICAgICAgICBtX3Byb2Nlc3MucGFy
ZW50UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+c2VuZChNZXNzYWdlczo6V2ViR2VvbG9jYXRpb25NYW5h
Z2VyUHJveHk6OlN0b3BVcGRhdGluZyhyZWdpc3RyYWJsZURvbWFpbiksIDApOwogICAgIGVsc2Ug
ewotICAgICAgICBib29sIGhpZ2hBY2N1cmFjeVNob3VsZEJlRW5hYmxlZCA9IGlzSGlnaEFjY3Vy
YWN5RW5hYmxlZCgpOworICAgICAgICBib29sIGhpZ2hBY2N1cmFjeVNob3VsZEJlRW5hYmxlZCA9
IGlzSGlnaEFjY3VyYWN5RW5hYmxlZChwYWdlU2V0cyk7CiAgICAgICAgIGlmIChoaWdoQWNjdXJh
Y3lXYXNFbmFibGVkICE9IGhpZ2hBY2N1cmFjeVNob3VsZEJlRW5hYmxlZCkKLSAgICAgICAgICAg
IG1fcHJvY2Vzcy5wYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpLT5zZW5kKE1lc3NhZ2VzOjpXZWJH
ZW9sb2NhdGlvbk1hbmFnZXJQcm94eTo6U2V0RW5hYmxlSGlnaEFjY3VyYWN5KGhpZ2hBY2N1cmFj
eVNob3VsZEJlRW5hYmxlZCksIDApOworICAgICAgICAgICAgbV9wcm9jZXNzLnBhcmVudFByb2Nl
c3NDb25uZWN0aW9uKCktPnNlbmQoTWVzc2FnZXM6OldlYkdlb2xvY2F0aW9uTWFuYWdlclByb3h5
OjpTZXRFbmFibGVIaWdoQWNjdXJhY3kocmVnaXN0cmFibGVEb21haW4sIGhpZ2hBY2N1cmFjeVNo
b3VsZEJlRW5hYmxlZCksIDApOwogICAgIH0KKworICAgIGlmIChwYWdlU2V0cy5wYWdlU2V0LmNv
bXB1dGVzRW1wdHkoKSAmJiBwYWdlU2V0cy5oaWdoQWNjdXJhY3lQYWdlU2V0LmNvbXB1dGVzRW1w
dHkoKSkKKyAgICAgICAgbV9wYWdlU2V0cy5yZW1vdmUoaXQpOwogfQogCiB2b2lkIFdlYkdlb2xv
Y2F0aW9uTWFuYWdlcjo6c2V0RW5hYmxlSGlnaEFjY3VyYWN5Rm9yUGFnZShXZWJQYWdlJiBwYWdl
LCBib29sIGVuYWJsZWQpCiB7Ci0gICAgYm9vbCBoaWdoQWNjdXJhY3lXYXNFbmFibGVkID0gaXNI
aWdoQWNjdXJhY3lFbmFibGVkKCk7CisgICAgYXV0byByZWdpc3RyYWJsZURvbWFpbiA9IG1fcGFn
ZVRvUmVnaXN0cmFibGVEb21haW4uZ2V0KCZwYWdlKTsKKyAgICBpZiAocmVnaXN0cmFibGVEb21h
aW4uc3RyaW5nKCkuaXNFbXB0eSgpKQorICAgICAgICByZXR1cm47CisKKyAgICBhdXRvIGl0ID0g
bV9wYWdlU2V0cy5maW5kKHJlZ2lzdHJhYmxlRG9tYWluKTsKKyAgICBBU1NFUlQoaXQgIT0gbV9w
YWdlU2V0cy5lbmQoKSk7CisgICAgaWYgKGl0ID09IG1fcGFnZVNldHMuZW5kKCkpCisgICAgICAg
IHJldHVybjsKKworICAgIGF1dG8mIHBhZ2VTZXRzID0gaXQtPnZhbHVlOworICAgIGJvb2wgaGln
aEFjY3VyYWN5V2FzRW5hYmxlZCA9IGlzSGlnaEFjY3VyYWN5RW5hYmxlZChwYWdlU2V0cyk7CiAK
ICAgICBpZiAoZW5hYmxlZCkKLSAgICAgICAgbV9oaWdoQWNjdXJhY3lQYWdlU2V0LmFkZChwYWdl
KTsKKyAgICAgICAgcGFnZVNldHMuaGlnaEFjY3VyYWN5UGFnZVNldC5hZGQocGFnZSk7CiAgICAg
ZWxzZQotICAgICAgICBtX2hpZ2hBY2N1cmFjeVBhZ2VTZXQucmVtb3ZlKHBhZ2UpOworICAgICAg
ICBwYWdlU2V0cy5oaWdoQWNjdXJhY3lQYWdlU2V0LnJlbW92ZShwYWdlKTsKIAotICAgIGJvb2wg
aGlnaEFjY3VyYWN5U2hvdWxkQmVFbmFibGVkID0gaXNIaWdoQWNjdXJhY3lFbmFibGVkKCk7Ci0g
ICAgaWYgKGhpZ2hBY2N1cmFjeVdhc0VuYWJsZWQgIT0gaGlnaEFjY3VyYWN5U2hvdWxkQmVFbmFi
bGVkKQotICAgICAgICBtX3Byb2Nlc3MucGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+c2VuZChN
ZXNzYWdlczo6V2ViR2VvbG9jYXRpb25NYW5hZ2VyUHJveHk6OlNldEVuYWJsZUhpZ2hBY2N1cmFj
eShoaWdoQWNjdXJhY3lTaG91bGRCZUVuYWJsZWQpLCAwKTsKKyAgICBib29sIGhpZ2hBY2N1cmFj
eVNob3VsZEJlRW5hYmxlZCA9IGlzSGlnaEFjY3VyYWN5RW5hYmxlZChwYWdlU2V0cyk7CisgICAg
aWYgKGhpZ2hBY2N1cmFjeVdhc0VuYWJsZWQgIT0gaXNIaWdoQWNjdXJhY3lFbmFibGVkKHBhZ2VT
ZXRzKSkKKyAgICAgICAgbV9wcm9jZXNzLnBhcmVudFByb2Nlc3NDb25uZWN0aW9uKCktPnNlbmQo
TWVzc2FnZXM6OldlYkdlb2xvY2F0aW9uTWFuYWdlclByb3h5OjpTZXRFbmFibGVIaWdoQWNjdXJh
Y3kocmVnaXN0cmFibGVEb21haW4sIGhpZ2hBY2N1cmFjeVNob3VsZEJlRW5hYmxlZCksIDApOwog
fQogCi12b2lkIFdlYkdlb2xvY2F0aW9uTWFuYWdlcjo6ZGlkQ2hhbmdlUG9zaXRpb24oY29uc3Qg
R2VvbG9jYXRpb25Qb3NpdGlvbkRhdGEmIHBvc2l0aW9uKQordm9pZCBXZWJHZW9sb2NhdGlvbk1h
bmFnZXI6OmRpZENoYW5nZVBvc2l0aW9uKGNvbnN0IFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWlu
JiByZWdpc3RyYWJsZURvbWFpbiwgY29uc3QgR2VvbG9jYXRpb25Qb3NpdGlvbkRhdGEmIHBvc2l0
aW9uKQogewogI2lmIEVOQUJMRShHRU9MT0NBVElPTikKLSAgICBmb3IgKGF1dG8mIHBhZ2UgOiBj
b3B5VG9WZWN0b3IobV9wYWdlU2V0KSkgewotICAgICAgICBpZiAocGFnZS0+Y29yZVBhZ2UoKSkK
LSAgICAgICAgICAgIEdlb2xvY2F0aW9uQ29udHJvbGxlcjo6ZnJvbShwYWdlLT5jb3JlUGFnZSgp
KS0+cG9zaXRpb25DaGFuZ2VkKHBvc2l0aW9uKTsKKyAgICBpZiAoYXV0byBpdCA9IG1fcGFnZVNl
dHMuZmluZChyZWdpc3RyYWJsZURvbWFpbik7IGl0ICE9IG1fcGFnZVNldHMuZW5kKCkpIHsKKyAg
ICAgICAgZm9yIChhdXRvJiBwYWdlIDogY29weVRvVmVjdG9yKGl0LT52YWx1ZS5wYWdlU2V0KSkg
eworICAgICAgICAgICAgaWYgKHBhZ2UtPmNvcmVQYWdlKCkpCisgICAgICAgICAgICAgICAgR2Vv
bG9jYXRpb25Db250cm9sbGVyOjpmcm9tKHBhZ2UtPmNvcmVQYWdlKCkpLT5wb3NpdGlvbkNoYW5n
ZWQocG9zaXRpb24pOworICAgICAgICB9CiAgICAgfQogI2Vsc2UKKyAgICBVTlVTRURfUEFSQU0o
cmVnaXN0cmFibGVEb21haW4pOwogICAgIFVOVVNFRF9QQVJBTShwb3NpdGlvbik7CiAjZW5kaWYg
Ly8gRU5BQkxFKEdFT0xPQ0FUSU9OKQogfQogCi12b2lkIFdlYkdlb2xvY2F0aW9uTWFuYWdlcjo6
ZGlkRmFpbFRvRGV0ZXJtaW5lUG9zaXRpb24oY29uc3QgU3RyaW5nJiBlcnJvck1lc3NhZ2UpCit2
b2lkIFdlYkdlb2xvY2F0aW9uTWFuYWdlcjo6ZGlkRmFpbFRvRGV0ZXJtaW5lUG9zaXRpb24oY29u
c3QgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4mIHJlZ2lzdHJhYmxlRG9tYWluLCBjb25zdCBT
dHJpbmcmIGVycm9yTWVzc2FnZSkKIHsKICNpZiBFTkFCTEUoR0VPTE9DQVRJT04pCi0gICAgLy8g
RklYTUU6IEFkZCBsb2NhbGl6ZWQgZXJyb3Igc3RyaW5nLgotICAgIGF1dG8gZXJyb3IgPSBHZW9s
b2NhdGlvbkVycm9yOjpjcmVhdGUoR2VvbG9jYXRpb25FcnJvcjo6UG9zaXRpb25VbmF2YWlsYWJs
ZSwgZXJyb3JNZXNzYWdlKTsKLQotICAgIGZvciAoYXV0byYgcGFnZSA6IGNvcHlUb1ZlY3Rvciht
X3BhZ2VTZXQpKSB7Ci0gICAgICAgIGlmIChwYWdlLT5jb3JlUGFnZSgpKQotICAgICAgICAgICAg
R2VvbG9jYXRpb25Db250cm9sbGVyOjpmcm9tKHBhZ2UtPmNvcmVQYWdlKCkpLT5lcnJvck9jY3Vy
cmVkKGVycm9yLmdldCgpKTsKKyAgICBpZiAoYXV0byBpdCA9IG1fcGFnZVNldHMuZmluZChyZWdp
c3RyYWJsZURvbWFpbik7IGl0ICE9IG1fcGFnZVNldHMuZW5kKCkpIHsKKyAgICAgICAgLy8gRklY
TUU6IEFkZCBsb2NhbGl6ZWQgZXJyb3Igc3RyaW5nLgorICAgICAgICBhdXRvIGVycm9yID0gR2Vv
bG9jYXRpb25FcnJvcjo6Y3JlYXRlKEdlb2xvY2F0aW9uRXJyb3I6OlBvc2l0aW9uVW5hdmFpbGFi
bGUsIGVycm9yTWVzc2FnZSk7CisKKyAgICAgICAgZm9yIChhdXRvJiBwYWdlIDogY29weVRvVmVj
dG9yKGl0LT52YWx1ZS5wYWdlU2V0KSkgeworICAgICAgICAgICAgaWYgKHBhZ2UtPmNvcmVQYWdl
KCkpCisgICAgICAgICAgICAgICAgR2VvbG9jYXRpb25Db250cm9sbGVyOjpmcm9tKHBhZ2UtPmNv
cmVQYWdlKCkpLT5lcnJvck9jY3VycmVkKGVycm9yLmdldCgpKTsKKyAgICAgICAgfQogICAgIH0K
ICNlbHNlCisgICAgVU5VU0VEX1BBUkFNKHJlZ2lzdHJhYmxlRG9tYWluKTsKICAgICBVTlVTRURf
UEFSQU0oZXJyb3JNZXNzYWdlKTsKICNlbmRpZiAvLyBFTkFCTEUoR0VPTE9DQVRJT04pCiB9CiAK
LSNpZiBQTEFURk9STShJT1NfRkFNSUxZKQotdm9pZCBXZWJHZW9sb2NhdGlvbk1hbmFnZXI6OnJl
c2V0UGVybWlzc2lvbnMoKQorYm9vbCBXZWJHZW9sb2NhdGlvbk1hbmFnZXI6OmlzVXBkYXRpbmco
Y29uc3QgUGFnZVNldHMmIHBhZ2VTZXRzKSBjb25zdAogewotICAgIG1fcHJvY2Vzcy5yZXNldEFs
bEdlb2xvY2F0aW9uUGVybWlzc2lvbnMoKTsKKyAgICByZXR1cm4gIXBhZ2VTZXRzLnBhZ2VTZXQu
Y29tcHV0ZXNFbXB0eSgpOwogfQotI2VuZGlmIC8vIFBMQVRGT1JNKElPU19GQU1JTFkpCiAKLWJv
b2wgV2ViR2VvbG9jYXRpb25NYW5hZ2VyOjppc1VwZGF0aW5nKCkgY29uc3QKK2Jvb2wgV2ViR2Vv
bG9jYXRpb25NYW5hZ2VyOjppc0hpZ2hBY2N1cmFjeUVuYWJsZWQoY29uc3QgUGFnZVNldHMmIHBh
Z2VTZXRzKSBjb25zdAogewotICAgIHJldHVybiAhbV9wYWdlU2V0LmNvbXB1dGVzRW1wdHkoKTsK
KyAgICByZXR1cm4gIXBhZ2VTZXRzLmhpZ2hBY2N1cmFjeVBhZ2VTZXQuY29tcHV0ZXNFbXB0eSgp
OwogfQogCi1ib29sIFdlYkdlb2xvY2F0aW9uTWFuYWdlcjo6aXNIaWdoQWNjdXJhY3lFbmFibGVk
KCkgY29uc3QKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZKQordm9pZCBXZWJHZW9sb2NhdGlvbk1h
bmFnZXI6OnJlc2V0UGVybWlzc2lvbnMoY29uc3QgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4m
IHJlZ2lzdHJhYmxlRG9tYWluKQogewotICAgIHJldHVybiAhbV9oaWdoQWNjdXJhY3lQYWdlU2V0
LmNvbXB1dGVzRW1wdHkoKTsKKyAgICBhdXRvIGl0ID0gbV9wYWdlU2V0cy5maW5kKHJlZ2lzdHJh
YmxlRG9tYWluKTsKKyAgICBpZiAoaXQgIT0gbV9wYWdlU2V0cy5lbmQoKSkKKyAgICAgICAgcmV0
dXJuOworCisgICAgZm9yIChhdXRvJiBwYWdlIDogY29weVRvVmVjdG9yKGl0LT52YWx1ZS5wYWdl
U2V0KSkgeworICAgICAgICBpZiAoYXV0byogbWFpbkZyYW1lID0gcGFnZS0+Y29yZVBhZ2UoKSA/
ICZwYWdlLT5jb3JlUGFnZSgpLT5tYWluRnJhbWUoKSA6IG51bGxwdHIpCisgICAgICAgICAgICBt
YWluRnJhbWUtPnJlc2V0QWxsR2VvbG9jYXRpb25QZXJtaXNzaW9uKCk7CisgICAgfQogfQorI2Vu
ZGlmIC8vIFBMQVRGT1JNKElPU19GQU1JTFkpCiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dlb2xvY2F0aW9uL1dlYkdlb2xvY2F0
aW9uTWFuYWdlci5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dlb2xvY2F0aW9uL1dlYkdl
b2xvY2F0aW9uTWFuYWdlci5oCmluZGV4IDQ0ODM1OTYzNTg3ODIxOTdjY2JhNTkyOGVmZTYyNTE1
MjZjMTg1MTUuLmNiNjU4OGM2ZTcxODhiZWZiZDU1MTIzZDRhNTU5YjJiMGIzMWE5M2EgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HZW9sb2NhdGlvbi9XZWJHZW9sb2NhdGlv
bk1hbmFnZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR2VvbG9jYXRpb24vV2Vi
R2VvbG9jYXRpb25NYW5hZ2VyLmgKQEAgLTI4LDYgKzI4LDcgQEAKICNpbmNsdWRlICJNZXNzYWdl
UmVjZWl2ZXIuaCIKICNpbmNsdWRlICJXZWJHZW9sb2NhdGlvblBvc2l0aW9uLmgiCiAjaW5jbHVk
ZSAiV2ViUHJvY2Vzc1N1cHBsZW1lbnQuaCIKKyNpbmNsdWRlIDxXZWJDb3JlL1JlZ2lzdHJhYmxl
RG9tYWluLmg+CiAjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KICNpbmNsdWRlIDx3dGYvTm9uY29w
eWFibGUuaD4KICNpbmNsdWRlIDx3dGYvV2Vha0hhc2hTZXQuaD4KQEAgLTQ3LDMxICs0OCwzNCBA
QCBjbGFzcyBXZWJHZW9sb2NhdGlvbk1hbmFnZXIgOiBwdWJsaWMgV2ViUHJvY2Vzc1N1cHBsZW1l
bnQsIHB1YmxpYyBJUEM6Ok1lc3NhZ2VSZQogICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKFdlYkdl
b2xvY2F0aW9uTWFuYWdlcik7CiBwdWJsaWM6CiAgICAgZXhwbGljaXQgV2ViR2VvbG9jYXRpb25N
YW5hZ2VyKFdlYlByb2Nlc3MmKTsKKyAgICB+V2ViR2VvbG9jYXRpb25NYW5hZ2VyKCk7CiAKICAg
ICBzdGF0aWMgY29uc3QgY2hhciogc3VwcGxlbWVudE5hbWUoKTsKIAotICAgIHZvaWQgcmVnaXN0
ZXJXZWJQYWdlKFdlYlBhZ2UmLCBjb25zdCBTdHJpbmcmIGF1dGhvcml6YXRpb25Ub2tlbik7Cisg
ICAgdm9pZCByZWdpc3RlcldlYlBhZ2UoV2ViUGFnZSYsIGNvbnN0IFN0cmluZyYgYXV0aG9yaXph
dGlvblRva2VuLCBib29sIG5lZWRzSGlnaEFjY3VyYWN5KTsKICAgICB2b2lkIHVucmVnaXN0ZXJX
ZWJQYWdlKFdlYlBhZ2UmKTsKICAgICB2b2lkIHNldEVuYWJsZUhpZ2hBY2N1cmFjeUZvclBhZ2Uo
V2ViUGFnZSYsIGJvb2wpOwogCi0gICAgdm9pZCByZXF1ZXN0UGVybWlzc2lvbihXZWJDb3JlOjpH
ZW9sb2NhdGlvbiYpOwotCiBwcml2YXRlOgogICAgIC8vIElQQzo6TWVzc2FnZVJlY2VpdmVyCiAg
ICAgdm9pZCBkaWRSZWNlaXZlTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6OkRlY29kZXIm
KSBvdmVycmlkZTsKIAotICAgIGJvb2wgaXNVcGRhdGluZygpIGNvbnN0OwotICAgIGJvb2wgaXNI
aWdoQWNjdXJhY3lFbmFibGVkKCkgY29uc3Q7Ci0KLSAgICB2b2lkIGRpZENoYW5nZVBvc2l0aW9u
KGNvbnN0IFdlYkNvcmU6Okdlb2xvY2F0aW9uUG9zaXRpb25EYXRhJik7Ci0gICAgdm9pZCBkaWRG
YWlsVG9EZXRlcm1pbmVQb3NpdGlvbihjb25zdCBTdHJpbmcmIGVycm9yTWVzc2FnZSk7CisgICAg
dm9pZCBkaWRDaGFuZ2VQb3NpdGlvbihjb25zdCBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiYs
IGNvbnN0IFdlYkNvcmU6Okdlb2xvY2F0aW9uUG9zaXRpb25EYXRhJik7CisgICAgdm9pZCBkaWRG
YWlsVG9EZXRlcm1pbmVQb3NpdGlvbihjb25zdCBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiYs
IGNvbnN0IFN0cmluZyYgZXJyb3JNZXNzYWdlKTsKICNpZiBQTEFURk9STShJT1NfRkFNSUxZKQot
ICAgIHZvaWQgcmVzZXRQZXJtaXNzaW9ucygpOworICAgIHZvaWQgcmVzZXRQZXJtaXNzaW9ucyhj
b25zdCBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiYpOwogI2VuZGlmIC8vIFBMQVRGT1JNKElP
U19GQU1JTFkpCiAKKyAgICBzdHJ1Y3QgUGFnZVNldHMgeworICAgICAgICBXZWFrSGFzaFNldDxX
ZWJQYWdlPiBwYWdlU2V0OworICAgICAgICBXZWFrSGFzaFNldDxXZWJQYWdlPiBoaWdoQWNjdXJh
Y3lQYWdlU2V0OworICAgIH07CisgICAgYm9vbCBpc1VwZGF0aW5nKGNvbnN0IFBhZ2VTZXRzJikg
Y29uc3Q7CisgICAgYm9vbCBpc0hpZ2hBY2N1cmFjeUVuYWJsZWQoY29uc3QgUGFnZVNldHMmKSBj
b25zdDsKKwogICAgIFdlYlByb2Nlc3MmIG1fcHJvY2VzczsKLSAgICBXZWFrSGFzaFNldDxXZWJQ
YWdlPiBtX3BhZ2VTZXQ7Ci0gICAgV2Vha0hhc2hTZXQ8V2ViUGFnZT4gbV9oaWdoQWNjdXJhY3lQ
YWdlU2V0OworICAgIEhhc2hNYXA8V2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4sIFBhZ2VTZXRz
PiBtX3BhZ2VTZXRzOworICAgIEhhc2hNYXA8V2ViUGFnZSosIFdlYkNvcmU6OlJlZ2lzdHJhYmxl
RG9tYWluPiBtX3BhZ2VUb1JlZ2lzdHJhYmxlRG9tYWluOwogfTsKIAogfSAvLyBuYW1lc3BhY2Ug
V2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR2VvbG9jYXRpb24v
V2ViR2VvbG9jYXRpb25NYW5hZ2VyLm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL0dlb2xvY2F0aW9uL1dlYkdlb2xvY2F0aW9uTWFuYWdlci5tZXNzYWdlcy5pbgppbmRleCA3
OWYzYjRjZTRlZmNhZjM0ODg1N2Q5OTMzMjUzZDg5NTRmMGYxYjg3Li42ZmNjNjBkMmUwOGUyNmVh
YjczYzFmNzFjZDg4NDJkYzUxMDUyZDE4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvR2VvbG9jYXRpb24vV2ViR2VvbG9jYXRpb25NYW5hZ2VyLm1lc3NhZ2VzLmluCisrKyBi
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HZW9sb2NhdGlvbi9XZWJHZW9sb2NhdGlvbk1hbmFn
ZXIubWVzc2FnZXMuaW4KQEAgLTIxLDkgKzIxLDkgQEAKICMgT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KIAogbWVzc2Fn
ZXMgLT4gV2ViR2VvbG9jYXRpb25NYW5hZ2VyIE5vdFJlZkNvdW50ZWQgewotICAgIERpZENoYW5n
ZVBvc2l0aW9uKFdlYkNvcmU6Okdlb2xvY2F0aW9uUG9zaXRpb25EYXRhIHBvc2l0aW9uKTsKLSAg
ICBEaWRGYWlsVG9EZXRlcm1pbmVQb3NpdGlvbihTdHJpbmcgZXJyb3JNZXNzYWdlKTsKKyAgICBE
aWRDaGFuZ2VQb3NpdGlvbihXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiByZWdpc3RyYWJsZURv
bWFpbiwgV2ViQ29yZTo6R2VvbG9jYXRpb25Qb3NpdGlvbkRhdGEgcG9zaXRpb24pOworICAgIERp
ZEZhaWxUb0RldGVybWluZVBvc2l0aW9uKFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluIHJlZ2lz
dHJhYmxlRG9tYWluLCBTdHJpbmcgZXJyb3JNZXNzYWdlKTsKICNpZiBQTEFURk9STShJT1NfRkFN
SUxZKQotICAgIFJlc2V0UGVybWlzc2lvbnMoKTsKKyAgICBSZXNldFBlcm1pc3Npb25zKFdlYkNv
cmU6OlJlZ2lzdHJhYmxlRG9tYWluIHJlZ2lzdHJhYmxlRG9tYWluKTsKICNlbmRpZgogfQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkdlb2xv
Y2F0aW9uQ2xpZW50LmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9y
dC9XZWJHZW9sb2NhdGlvbkNsaWVudC5jcHAKaW5kZXggZWEwMmYyYWMxNmY3MzFiZjU2NDJmODY3
OGQ4NmE0OTgxMWQ4YzM4Ni4uZDE4ZGY3ZWZhZjU2ZWZjZmM4ZDE2OTljOTFjZDI2YjY4OWJjODI2
YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dl
Ykdlb2xvY2F0aW9uQ2xpZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2Vi
Q29yZVN1cHBvcnQvV2ViR2VvbG9jYXRpb25DbGllbnQuY3BwCkBAIC00OCw5ICs0OCw5IEBAIHZv
aWQgV2ViR2VvbG9jYXRpb25DbGllbnQ6Omdlb2xvY2F0aW9uRGVzdHJveWVkKCkKICAgICBkZWxl
dGUgdGhpczsKIH0KIAotdm9pZCBXZWJHZW9sb2NhdGlvbkNsaWVudDo6c3RhcnRVcGRhdGluZyhj
b25zdCBTdHJpbmcmIGF1dGhvcml6YXRpb25Ub2tlbikKK3ZvaWQgV2ViR2VvbG9jYXRpb25DbGll
bnQ6OnN0YXJ0VXBkYXRpbmcoY29uc3QgU3RyaW5nJiBhdXRob3JpemF0aW9uVG9rZW4sIGJvb2wg
bmVlZHNIaWdoQWNjdXJhY3kpCiB7Ci0gICAgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkuc3VwcGxl
bWVudDxXZWJHZW9sb2NhdGlvbk1hbmFnZXI+KCktPnJlZ2lzdGVyV2ViUGFnZShtX3BhZ2UsIGF1
dGhvcml6YXRpb25Ub2tlbik7CisgICAgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkuc3VwcGxlbWVu
dDxXZWJHZW9sb2NhdGlvbk1hbmFnZXI+KCktPnJlZ2lzdGVyV2ViUGFnZShtX3BhZ2UsIGF1dGhv
cml6YXRpb25Ub2tlbiwgbmVlZHNIaWdoQWNjdXJhY3kpOwogfQogCiB2b2lkIFdlYkdlb2xvY2F0
aW9uQ2xpZW50OjpzdG9wVXBkYXRpbmcoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkdlb2xvY2F0aW9uQ2xpZW50LmggYi9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViR2VvbG9jYXRpb25DbGllbnQuaAppbmRl
eCBiMTY4MTY3NDg5NjIyNTQ3ZWM5NGU2Nzk4ZmI2OWRkOGZhNmQwMTFjLi42NWVjMGU5MzU0Mjgz
ZDVmYTc3YWYxMGI0ZTE4MGI4NzEyZmFlZjA3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViR2VvbG9jYXRpb25DbGllbnQuaAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViR2VvbG9jYXRpb25DbGllbnQu
aApAQCAtMzEsNyArMzEsNyBAQCBuYW1lc3BhY2UgV2ViS2l0IHsKIAogY2xhc3MgV2ViUGFnZTsK
IAotY2xhc3MgV2ViR2VvbG9jYXRpb25DbGllbnQgOiBwdWJsaWMgV2ViQ29yZTo6R2VvbG9jYXRp
b25DbGllbnQgeworY2xhc3MgV2ViR2VvbG9jYXRpb25DbGllbnQgZmluYWwgOiBwdWJsaWMgV2Vi
Q29yZTo6R2VvbG9jYXRpb25DbGllbnQgewogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwog
cHVibGljOgogICAgIFdlYkdlb2xvY2F0aW9uQ2xpZW50KFdlYlBhZ2UmIHBhZ2UpCkBAIC00Miwx
NyArNDIsMTcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgfldlYkdlb2xvY2F0aW9uQ2xpZW50KCk7
CiAKIHByaXZhdGU6Ci0gICAgdm9pZCBnZW9sb2NhdGlvbkRlc3Ryb3llZCgpIG92ZXJyaWRlOwor
ICAgIHZvaWQgZ2VvbG9jYXRpb25EZXN0cm95ZWQoKSBmaW5hbDsKIAotICAgIHZvaWQgc3RhcnRV
cGRhdGluZyhjb25zdCBTdHJpbmcmIGF1dGhvcml6YXRpb25Ub2tlbikgb3ZlcnJpZGU7Ci0gICAg
dm9pZCBzdG9wVXBkYXRpbmcoKSBvdmVycmlkZTsKLSAgICB2b2lkIHJldm9rZUF1dGhvcml6YXRp
b25Ub2tlbihjb25zdCBTdHJpbmcmKSBvdmVycmlkZTsKLSAgICB2b2lkIHNldEVuYWJsZUhpZ2hB
Y2N1cmFjeShib29sKSBvdmVycmlkZTsKKyAgICB2b2lkIHN0YXJ0VXBkYXRpbmcoY29uc3QgU3Ry
aW5nJiBhdXRob3JpemF0aW9uVG9rZW4sIGJvb2wgbmVlZHNIaWdoQWNjdXJhY3kpIGZpbmFsOwor
ICAgIHZvaWQgc3RvcFVwZGF0aW5nKCkgZmluYWw7CisgICAgdm9pZCByZXZva2VBdXRob3JpemF0
aW9uVG9rZW4oY29uc3QgU3RyaW5nJikgZmluYWw7CisgICAgdm9pZCBzZXRFbmFibGVIaWdoQWNj
dXJhY3koYm9vbCkgZmluYWw7CiAKLSAgICBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6Okdlb2xvY2F0
aW9uUG9zaXRpb25EYXRhPiBsYXN0UG9zaXRpb24oKSBvdmVycmlkZTsKKyAgICBzdGQ6Om9wdGlv
bmFsPFdlYkNvcmU6Okdlb2xvY2F0aW9uUG9zaXRpb25EYXRhPiBsYXN0UG9zaXRpb24oKSBmaW5h
bDsKIAotICAgIHZvaWQgcmVxdWVzdFBlcm1pc3Npb24oV2ViQ29yZTo6R2VvbG9jYXRpb24mKSBv
dmVycmlkZTsKLSAgICB2b2lkIGNhbmNlbFBlcm1pc3Npb25SZXF1ZXN0KFdlYkNvcmU6Okdlb2xv
Y2F0aW9uJikgb3ZlcnJpZGU7CisgICAgdm9pZCByZXF1ZXN0UGVybWlzc2lvbihXZWJDb3JlOjpH
ZW9sb2NhdGlvbiYpIGZpbmFsOworICAgIHZvaWQgY2FuY2VsUGVybWlzc2lvblJlcXVlc3QoV2Vi
Q29yZTo6R2VvbG9jYXRpb24mKSBmaW5hbDsKIAogICAgIFdlYlBhZ2UmIG1fcGFnZTsKIH07CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5jcHAKaW5kZXggZGQ0NWI0NTg4YmY5ZGQx
MjRlMThmYWE5NWEzMjZlZDMxOTMxYTQ1Ny4uNzk5NjEzZDM3NzQyMzYzYmZiZGNkOTUyOTc5OTYy
MjA2ZjAyMjhhOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlByb2Nl
c3MuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmNwcApAQCAt
MTUyNywxNiArMTUyNyw2IEBAIHZvaWQgV2ViUHJvY2Vzczo6cGFnZUFjdGl2aXR5U3RhdGVEaWRD
aGFuZ2UoUGFnZUlkZW50aWZpZXIsIE9wdGlvblNldDxXZWJDb3JlOjpBCiAgICAgfQogfQogCi0j
aWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKLXZvaWQgV2ViUHJvY2Vzczo6cmVzZXRBbGxHZW9sb2Nh
dGlvblBlcm1pc3Npb25zKCkKLXsKLSAgICBmb3IgKGF1dG8mIHBhZ2UgOiBtX3BhZ2VNYXAudmFs
dWVzKCkpIHsKLSAgICAgICAgaWYgKEZyYW1lKiBtYWluRnJhbWUgPSBwYWdlLT5tYWluRnJhbWUo
KSkKLSAgICAgICAgICAgIG1haW5GcmFtZS0+cmVzZXRBbGxHZW9sb2NhdGlvblBlcm1pc3Npb24o
KTsKLSAgICB9Ci19Ci0jZW5kaWYKLQogdm9pZCBXZWJQcm9jZXNzOjpwcmVwYXJlVG9TdXNwZW5k
KGJvb2wgaXNTdXNwZW5zaW9uSW1taW5lbnQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBj
b21wbGV0aW9uSGFuZGxlcikKIHsKICAgICBXRUJQUk9DRVNTX1JFTEVBU0VfTE9HKFByb2Nlc3NT
dXNwZW5zaW9uLCAicHJlcGFyZVRvU3VzcGVuZDogaXNTdXNwZW5zaW9uSW1taW5lbnQ9JWQiLCBp
c1N1c3BlbnNpb25JbW1pbmVudCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvV2ViUHJvY2Vzcy5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuaApp
bmRleCBjNWRkMjI1ZGMxYjcxZGE5Y2RkNGVlZGJhMGEwN2U3NjE3ODE1NzVlLi41OTVhZjBiOTc0
MTI5MGRhNmM3MzRhMDg4NmI4MjRkMjNiMWVlNTdlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9X
ZWJQcm9jZXNzLmgKQEAgLTMxMCwxMCArMzEwLDYgQEAgcHVibGljOgogCiAgICAgdm9pZCBpc0pJ
VEVuYWJsZWQoQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJik7CiAKLSNpZiBQTEFURk9S
TShJT1NfRkFNSUxZKQotICAgIHZvaWQgcmVzZXRBbGxHZW9sb2NhdGlvblBlcm1pc3Npb25zKCk7
Ci0jZW5kaWYKLQogI2lmIFBMQVRGT1JNKFdBWUxBTkQpCiAgICAgV2F5bGFuZENvbXBvc2l0b3JE
aXNwbGF5KiB3YXlsYW5kQ29tcG9zaXRvckRpc3BsYXkoKSBjb25zdCB7IHJldHVybiBtX3dheWxh
bmRDb21wb3NpdG9yRGlzcGxheS5nZXQoKTsgfQogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJHZW9sb2NhdGlvbkNsaWVudC5oIGIv
U291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViR2VvbG9jYXRpb25DbGll
bnQuaAppbmRleCA3N2MyODI4ZDg1OTUzNjM1YjY0YzRjODk5OTkwYTBhNjQ4MTcxYjZjLi5iMDdj
NzkwM2QyOTJhOTMzOTFlNWM0MGFlZGQ2NWRlZGJhZjhjNWYxIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJHZW9sb2NhdGlvbkNsaWVudC5oCisr
KyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkdlb2xvY2F0aW9u
Q2xpZW50LmgKQEAgLTM5LDcgKzM5LDcgQEAgcHVibGljOgogICAgIFdlYlZpZXcgKndlYlZpZXco
KSB7IHJldHVybiBtX3dlYlZpZXc7IH0KIAogICAgIHZvaWQgZ2VvbG9jYXRpb25EZXN0cm95ZWQo
KSBvdmVycmlkZTsKLSAgICB2b2lkIHN0YXJ0VXBkYXRpbmcoY29uc3QgU3RyaW5nJiBhdXRob3Jp
emF0aW9uVG9rZW4pIG92ZXJyaWRlOworICAgIHZvaWQgc3RhcnRVcGRhdGluZyhjb25zdCBTdHJp
bmcmIGF1dGhvcml6YXRpb25Ub2tlbiwgYm9vbCBlbmFibGVIaWdoQWNjdXJhY3kpIG92ZXJyaWRl
OwogICAgIHZvaWQgc3RvcFVwZGF0aW5nKCkgb3ZlcnJpZGU7CiAjaWYgUExBVEZPUk0oSU9TX0ZB
TUlMWSkKICAgICAvLyBGSVhNRTogdW5pZnkgdGhpcyB3aXRoIE1hYyBvbiBPcGVuU291cmNlLgpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViR2Vv
bG9jYXRpb25DbGllbnQubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9y
dC9XZWJHZW9sb2NhdGlvbkNsaWVudC5tbQppbmRleCBlNzg4YTU3ZGQ2ZjgwN2U3YjI1Yzc0MmJh
ODAxOTM1N2EyNzM0ZDM4Li5hOGI4NTIxZTJkYTQ3MThkYzE0YjQzNzBiMWE1YjRiOGQ2MzI4NTg5
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJH
ZW9sb2NhdGlvbkNsaWVudC5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3Jl
U3VwcG9ydC9XZWJHZW9sb2NhdGlvbkNsaWVudC5tbQpAQCAtODMsOSArODMsMTYgQEAgdm9pZCBX
ZWJHZW9sb2NhdGlvbkNsaWVudDo6Z2VvbG9jYXRpb25EZXN0cm95ZWQoKQogICAgIGRlbGV0ZSB0
aGlzOwogfQogCi12b2lkIFdlYkdlb2xvY2F0aW9uQ2xpZW50OjpzdGFydFVwZGF0aW5nKGNvbnN0
IFN0cmluZyYgYXV0aG9yaXphdGlvblRva2VuKQordm9pZCBXZWJHZW9sb2NhdGlvbkNsaWVudDo6
c3RhcnRVcGRhdGluZyhjb25zdCBTdHJpbmcmIGF1dGhvcml6YXRpb25Ub2tlbiwgYm9vbCBlbmFi
bGVIaWdoQWNjdXJhY3kpCiB7CiAgICAgVU5VU0VEX1BBUkFNKGF1dGhvcml6YXRpb25Ub2tlbik7
CisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKKyAgICBpZiAoZW5hYmxlSGlnaEFjY3VyYWN5KQor
ICAgICAgICBzZXRFbmFibGVIaWdoQWNjdXJhY3kodHJ1ZSk7CisjZWxzZQorICAgIFVOVVNFRF9Q
QVJBTShlbmFibGVIaWdoQWNjdXJhY3kpOworI2VuZGlmCisKICAgICBbW21fd2ViVmlldyBfZ2Vv
bG9jYXRpb25Qcm92aWRlcl0gcmVnaXN0ZXJXZWJWaWV3Om1fd2ViVmlld107CiB9CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkdlb2xvY2F0
aW9uQ2xpZW50LmNwcCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkNvcmVTdXBwb3J0L1dl
Ykdlb2xvY2F0aW9uQ2xpZW50LmNwcAppbmRleCBlMWZjYTI3NzI0OTYxNTRhNGUwNzBlNGRmZGE3
ZTc3ZTk3MzU4MmMxLi5hYzU0NTE0YzY0MmVhMGU1ZjhhZjMzNjllMWJiYmFlMGMzOTA3MWI3IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJHZW9s
b2NhdGlvbkNsaWVudC5jcHAKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViQ29yZVN1
cHBvcnQvV2ViR2VvbG9jYXRpb25DbGllbnQuY3BwCkBAIC00OCw5ICs0OCwxMCBAQCB2b2lkIFdl
Ykdlb2xvY2F0aW9uQ2xpZW50OjpnZW9sb2NhdGlvbkRlc3Ryb3llZCgpCiAgICAgZGVsZXRlIHRo
aXM7CiB9CiAKLXZvaWQgV2ViR2VvbG9jYXRpb25DbGllbnQ6OnN0YXJ0VXBkYXRpbmcoY29uc3Qg
U3RyaW5nJiBhdXRob3JpemF0aW9uVG9rZW4pCit2b2lkIFdlYkdlb2xvY2F0aW9uQ2xpZW50Ojpz
dGFydFVwZGF0aW5nKGNvbnN0IFN0cmluZyYgYXV0aG9yaXphdGlvblRva2VuLCBib29sIGVuYWJs
ZUhpZ2hBY2N1cmFjeSkKIHsKICAgICBVTlVTRURfUEFSQU0oYXV0aG9yaXphdGlvblRva2VuKTsK
KyAgICBVTlVTRURfUEFSQU0oZW5hYmxlSGlnaEFjY3VyYWN5KTsKICAgICBDT01QdHI8SVdlYkdl
b2xvY2F0aW9uUHJvdmlkZXI+IHByb3ZpZGVyOwogICAgIGlmIChGQUlMRUQobV93ZWJWaWV3LT5n
ZW9sb2NhdGlvblByb3ZpZGVyKCZwcm92aWRlcikpKQogICAgICAgICByZXR1cm47CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJHZW9sb2NhdGlv
bkNsaWVudC5oIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViQ29yZVN1cHBvcnQvV2ViR2Vv
bG9jYXRpb25DbGllbnQuaAppbmRleCAxOTU3NDE3YjU1ZDdlNWQyZjliNzFlNWM5ZDljMzAzZGZl
ZjRlMTg2Li41YjhlOTQ0NGYyMWZlZDQzZWRmMjU5MWEyYmExNWRhM2JkNDRmNDRhIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJHZW9sb2NhdGlv
bkNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkNvcmVTdXBwb3J0L1dl
Ykdlb2xvY2F0aW9uQ2xpZW50LmgKQEAgLTQxLDcgKzQxLDcgQEAgcHVibGljOgogICAgIFdlYkdl
b2xvY2F0aW9uQ2xpZW50KFdlYlZpZXcqKTsKIAogICAgIHZvaWQgZ2VvbG9jYXRpb25EZXN0cm95
ZWQoKSBmaW5hbDsKLSAgICB2b2lkIHN0YXJ0VXBkYXRpbmcoY29uc3QgU3RyaW5nJiBhdXRob3Jp
emF0aW9uVG9rZW4pIGZpbmFsOworICAgIHZvaWQgc3RhcnRVcGRhdGluZyhjb25zdCBTdHJpbmcm
IGF1dGhvcml6YXRpb25Ub2tlbiwgYm9vbCBlbmFibGVIaWdoQWNjdXJhY3kpIGZpbmFsOwogICAg
IHZvaWQgc3RvcFVwZGF0aW5nKCkgZmluYWw7CiAgICAgdm9pZCBzZXRFbmFibGVIaWdoQWNjdXJh
Y3koYm9vbCkgZmluYWwgeyB9CiAgICAgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpHZW9sb2NhdGlv
blBvc2l0aW9uRGF0YT4gbGFzdFBvc2l0aW9uKCkgZmluYWw7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>451920</attachid>
            <date>2022-02-14 10:03:41 -0800</date>
            <delta_ts>2022-02-14 18:43:56 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-236566-20220214100341.patch</filename>
            <type>text/plain</type>
            <size>100704</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg5Njk4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IDVjOGFhZWYzNzk5ZjJmYTJmNjY5YzFm
YWZmNTU3YTc4ZmI1YzYyMDEuLjUyZDQ3N2Q5OWEzYzNkZjIxZjhhNzBlNzU3MzkzZGVkNDc2NGMy
MTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMTUgQEAKKzIwMjItMDItMTMgIENocmlzIER1bWV6ICA8Y2R1bWV6
QGFwcGxlLmNvbT4KKworICAgICAgICBEbyBwcmVsaW1pbmFyeSB3b3JrIHRvIHBhc3MgZG9tYWlu
IG5hbWVzIHRvIENvcmVMb2NhdGlvbgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MjM2NTY2CisgICAgICAgIDxyZGFyOi8vODg3NjE0MTM+CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkIGJ1aWxkIHRpbWUg
ZmxhZyBmb3IgcGFzc2luZyB3ZWJzaXRlIGlkZW50aWZpZXJzIHRvIENvcmVMb2NhdGlvbi4KKwor
ICAgICAgICAqIHd0Zi9QbGF0Zm9ybUhhdmUuaDoKKwogMjAyMi0wMi0xMiAgSmVyIE5vYmxlICA8
amVyLm5vYmxlQGFwcGxlLmNvbT4KIAogICAgICAgICBBZGQgc2V0dGluZ3MgdG8gcmVzdHJpY3Qg
bWVkaWEgY29udGFpbmVycyBhbmQgY29kZWNzIHdoZW4gaW4gQ2FwdGl2ZSBQb3J0YWwgbW9kZQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkNvcmUvQ2hh
bmdlTG9nCmluZGV4IDcxMWMxMjBjYjExYTNmMzZhNTJjZDVkNGU1ZTY1ZmI5NGZmZmQ0NDIuLjg0
ZDk3MzIyNWJmMzU3MTgzYzcyNmVjM2Y5ZDljYTkxN2I5ZmY5ZWEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw1NCBAQAorMjAyMi0wMi0xMyAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgor
CisgICAgICAgIERvIHByZWxpbWluYXJ5IHdvcmsgdG8gcGFzcyBkb21haW4gbmFtZXMgdG8gQ29y
ZUxvY2F0aW9uCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0yMzY1NjYKKyAgICAgICAgPHJkYXI6Ly84ODc2MTQxMz4KKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBEbyBwcmVsaW1pbmFyeSB3b3JrIHRvIHBhc3Mg
ZG9tYWluIG5hbWVzIHRvIENvcmVMb2NhdGlvbiB3aGVuIHVzaW5nIHRoZSBHZW9sb2NhdGlvbiBB
UEkuCisgICAgICAgIFRoaXMgcGlwZXMgdGhlIGRvbWFpbiBuYW1lcyBhbGwgdGhlIHdheSBmcm9t
IHRoZSBHZW9sb2NhdGlvbiBBUEkgdG8gdGhlIENvcmVMb2NhdGlvbiBjYWxscworICAgICAgICBi
dXQgZG9lc24ndCB5ZXQgcGFzcyB0aGUgZG9tYWluIHRvIENvcmVMb2NhdGlvbiBkdWUgdG8gPHJk
YXI6Ly84ODgzNDMwMT4uIEkgd2lsbCBmb2xsb3ctdXAKKyAgICAgICAgb25jZSA8cmRhcjovLzg4
ODM0MzAxPiBpcyBmaXhlZC4KKworICAgICAgICAqIE1vZHVsZXMvZ2VvbG9jYXRpb24vR2VvbG9j
YXRpb25DbGllbnQuaDoKKyAgICAgICAgKiBNb2R1bGVzL2dlb2xvY2F0aW9uL0dlb2xvY2F0aW9u
Q29udHJvbGxlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpHZW9sb2NhdGlvbkNvbnRyb2xsZXI6
OmRpZE5hdmlnYXRlUGFnZSk6CisgICAgICAgIChXZWJDb3JlOjpHZW9sb2NhdGlvbkNvbnRyb2xs
ZXI6OmFkZE9ic2VydmVyKToKKyAgICAgICAgKFdlYkNvcmU6Okdlb2xvY2F0aW9uQ29udHJvbGxl
cjo6cmVtb3ZlT2JzZXJ2ZXIpOgorICAgICAgICAoV2ViQ29yZTo6R2VvbG9jYXRpb25Db250cm9s
bGVyOjphY3Rpdml0eVN0YXRlRGlkQ2hhbmdlKToKKyAgICAgICAgKFdlYkNvcmU6Okdlb2xvY2F0
aW9uQ29udHJvbGxlcjo6c3RhcnRVcGRhdGluZ0lmTmVjZXNzYXJ5KToKKyAgICAgICAgKFdlYkNv
cmU6Okdlb2xvY2F0aW9uQ29udHJvbGxlcjo6c3RvcFVwZGF0aW5nSWZOZWNlc3NhcnkpOgorICAg
ICAgICAqIE1vZHVsZXMvZ2VvbG9jYXRpb24vR2VvbG9jYXRpb25Db250cm9sbGVyLmg6CisgICAg
ICAgIChXZWJDb3JlOjpHZW9sb2NhdGlvbkNvbnRyb2xsZXI6Om5lZWRzSGlnaEFjY3VyYWN5IGNv
bnN0KToKKyAgICAgICAgKiBNb2R1bGVzL2dlb2xvY2F0aW9uL0dlb2xvY2F0aW9uUG9zaXRpb25E
YXRhLmg6CisgICAgICAgICogTW9kdWxlcy9nZW9sb2NhdGlvbi9pb3MvR2VvbG9jYXRpb25Qb3Np
dGlvbkRhdGFJT1MubW06CisgICAgICAgICogU291cmNlc0NvY29hLnR4dDoKKyAgICAgICAgKiBX
ZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogcGFnZS9QYWdlLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OlBhZ2U6OmRpZENvbW1pdExvYWQpOgorICAgICAgICAqIHBs
YXRmb3JtL2NvY29hL0NvcmVMb2NhdGlvbkdlb2xvY2F0aW9uUHJvdmlkZXIuaDogQ29waWVkIGZy
b20gU291cmNlL1dlYkNvcmUvTW9kdWxlcy9nZW9sb2NhdGlvbi9HZW9sb2NhdGlvbkNsaWVudC5o
LgorICAgICAgICAqIHBsYXRmb3JtL2NvY29hL0NvcmVMb2NhdGlvbkdlb2xvY2F0aW9uUHJvdmlk
ZXIubW06IEFkZGVkLgorICAgICAgICAoaXNBdXRob3JpemF0aW9uR3JhbnRlZCk6CisgICAgICAg
ICgtW1dlYkNMTG9jYXRpb25NYW5hZ2VyIGluaXRXaXRoV2Vic2l0ZUlkZW50aWZpZXI6Y2xpZW50
Ol0pOgorICAgICAgICAoLVtXZWJDTExvY2F0aW9uTWFuYWdlciBkZWFsbG9jXSk6CisgICAgICAg
ICgtW1dlYkNMTG9jYXRpb25NYW5hZ2VyIHN0YXJ0XSk6CisgICAgICAgICgtW1dlYkNMTG9jYXRp
b25NYW5hZ2VyIHN0b3BdKToKKyAgICAgICAgKC1bV2ViQ0xMb2NhdGlvbk1hbmFnZXIgc2V0RW5h
YmxlSGlnaEFjY3VyYWN5Ol0pOgorICAgICAgICAoLVtXZWJDTExvY2F0aW9uTWFuYWdlciByZXF1
ZXN0R2VvbG9jYXRpb25BdXRob3JpemF0aW9uXSk6CisgICAgICAgICgtW1dlYkNMTG9jYXRpb25N
YW5hZ2VyIGxvY2F0aW9uTWFuYWdlckRpZENoYW5nZUF1dGhvcml6YXRpb246XSk6CisgICAgICAg
ICgtW1dlYkNMTG9jYXRpb25NYW5hZ2VyIGxvY2F0aW9uTWFuYWdlcjpkaWRVcGRhdGVMb2NhdGlv
bnM6XSk6CisgICAgICAgICgtW1dlYkNMTG9jYXRpb25NYW5hZ2VyIGxvY2F0aW9uTWFuYWdlcjpk
aWRGYWlsV2l0aEVycm9yOl0pOgorICAgICAgICAoV2ViQ29yZTo6Q29yZUxvY2F0aW9uR2VvbG9j
YXRpb25Qcm92aWRlcjo6Q29yZUxvY2F0aW9uR2VvbG9jYXRpb25Qcm92aWRlcik6CisgICAgICAg
IChXZWJDb3JlOjpDb3JlTG9jYXRpb25HZW9sb2NhdGlvblByb3ZpZGVyOjp+Q29yZUxvY2F0aW9u
R2VvbG9jYXRpb25Qcm92aWRlcik6CisgICAgICAgIChXZWJDb3JlOjpDb3JlTG9jYXRpb25HZW9s
b2NhdGlvblByb3ZpZGVyOjpzdGFydCk6CisgICAgICAgIChXZWJDb3JlOjpDb3JlTG9jYXRpb25H
ZW9sb2NhdGlvblByb3ZpZGVyOjpzdG9wKToKKyAgICAgICAgKFdlYkNvcmU6OkNvcmVMb2NhdGlv
bkdlb2xvY2F0aW9uUHJvdmlkZXI6OnNldEVuYWJsZUhpZ2hBY2N1cmFjeSk6CisgICAgICAgIChX
ZWJDb3JlOjpDb3JlTG9jYXRpb25HZW9sb2NhdGlvblByb3ZpZGVyOjpyZXF1ZXN0QXV0aG9yaXph
dGlvbik6CisgICAgICAgICogcGxhdGZvcm0vbW9jay9HZW9sb2NhdGlvbkNsaWVudE1vY2suY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6R2VvbG9jYXRpb25DbGllbnRNb2NrOjpzdGFydFVwZGF0aW5n
KToKKyAgICAgICAgKiBwbGF0Zm9ybS9tb2NrL0dlb2xvY2F0aW9uQ2xpZW50TW9jay5oOgorCiAy
MDIyLTAyLTEyICBQYXRyaWNrIEFuZ2xlICA8cGFuZ2xlQGFwcGxlLmNvbT4KIAogICAgICAgICBX
ZWIgSW5zcGVjdG9yOiBbRmxleGJveF0gU2hvdyBpdGVtIGJvdW5kcywgZ2FwcywgYW5kIGZyZWUg
c3BhY2UgaW4gZmxleCBvdmVybGF5cwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9DaGFuZ2VM
b2cgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwppbmRleCA4MWMxMWI3ODVlYTg2MTJlYjI3NmQz
ODBmZGNjOTI1NmFlOTMxN2ZkLi42MWVjNzA0MDIwYTViZWI5Njc5MDM3Njk4OTBiYTk2MzI0NTAy
MWRmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2Vi
S2l0L0NoYW5nZUxvZwpAQCAtMSwzICsxLDk0IEBACisyMDIyLTAyLTEzICBDaHJpcyBEdW1leiAg
PGNkdW1lekBhcHBsZS5jb20+CisKKyAgICAgICAgRG8gcHJlbGltaW5hcnkgd29yayB0byBwYXNz
IGRvbWFpbiBuYW1lcyB0byBDb3JlTG9jYXRpb24KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTIzNjU2NgorICAgICAgICA8cmRhcjovLzg4NzYxNDEzPgor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIERvIHByZWxp
bWluYXJ5IHdvcmsgdG8gcGFzcyBkb21haW4gbmFtZXMgdG8gQ29yZUxvY2F0aW9uIHdoZW4gdXNp
bmcgdGhlIEdlb2xvY2F0aW9uIEFQSS4KKyAgICAgICAgVGhpcyBwaXBlcyB0aGUgZG9tYWluIG5h
bWVzIGFsbCB0aGUgd2F5IGZyb20gdGhlIEdlb2xvY2F0aW9uIEFQSSB0byB0aGUgQ29yZUxvY2F0
aW9uIGNhbGxzCisgICAgICAgIGJ1dCBkb2Vzbid0IHlldCBwYXNzIHRoZSBkb21haW4gdG8gQ29y
ZUxvY2F0aW9uIGR1ZSB0byA8cmRhcjovLzg4ODM0MzAxPi4gSSB3aWxsIGZvbGxvdy11cAorICAg
ICAgICBvbmNlIDxyZGFyOi8vODg4MzQzMDE+IGlzIGZpeGVkLgorCisgICAgICAgICogU291cmNl
c0NvY29hLnR4dDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0MvV0tHZW9sb2NhdGlvbk1hbmFn
ZXIuY3BwOgorICAgICAgICAoV0tHZW9sb2NhdGlvbk1hbmFnZXJTZXRQcm92aWRlcik6CisgICAg
ICAgICogVUlQcm9jZXNzL0NvY29hL1dlYkdlb2xvY2F0aW9uTWFuYWdlclByb3h5Q29jb2EuY3Bw
OiBBZGRlZC4KKyAgICAgICAgKFdlYktpdDo6V2ViR2VvbG9jYXRpb25NYW5hZ2VyUHJveHk6OnBv
c2l0aW9uQ2hhbmdlZCk6CisgICAgICAgIChXZWJLaXQ6OldlYkdlb2xvY2F0aW9uTWFuYWdlclBy
b3h5OjplcnJvck9jY3VycmVkKToKKyAgICAgICAgKFdlYktpdDo6V2ViR2VvbG9jYXRpb25NYW5h
Z2VyUHJveHk6OnJlc2V0R2VvbG9jYXRpb24pOgorICAgICAgICAoV2ViS2l0OjpXZWJHZW9sb2Nh
dGlvbk1hbmFnZXJQcm94eTo6aXNVcGRhdGluZyBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6Oldl
Ykdlb2xvY2F0aW9uTWFuYWdlclByb3h5Ojppc0hpZ2hBY2N1cmFjeUVuYWJsZWQgY29uc3QpOgor
ICAgICAgICAoV2ViS2l0OjpXZWJHZW9sb2NhdGlvbk1hbmFnZXJQcm94eTo6cHJvdmlkZXJTdGFy
dFVwZGF0aW5nKToKKyAgICAgICAgKFdlYktpdDo6V2ViR2VvbG9jYXRpb25NYW5hZ2VyUHJveHk6
OnByb3ZpZGVyU3RvcFVwZGF0aW5nKToKKyAgICAgICAgKFdlYktpdDo6V2ViR2VvbG9jYXRpb25N
YW5hZ2VyUHJveHk6OnByb3ZpZGVyU2V0RW5hYmxlZEhpZ2hBY2N1cmFjeSk6CisgICAgICAgICog
VUlQcm9jZXNzL1dlYkdlb2xvY2F0aW9uTWFuYWdlclByb3h5LmNwcDoKKyAgICAgICAgKFdlYktp
dDo6V2ViR2VvbG9jYXRpb25NYW5hZ2VyUHJveHk6OldlYkdlb2xvY2F0aW9uTWFuYWdlclByb3h5
KToKKyAgICAgICAgKFdlYktpdDo6V2ViR2VvbG9jYXRpb25NYW5hZ2VyUHJveHk6OnByb2Nlc3NQ
b29sRGVzdHJveWVkKToKKyAgICAgICAgKFdlYktpdDo6V2ViR2VvbG9jYXRpb25NYW5hZ2VyUHJv
eHk6OnByb2Nlc3NEaWRDbG9zZSk6CisgICAgICAgIChXZWJLaXQ6OldlYkdlb2xvY2F0aW9uTWFu
YWdlclByb3h5Ojpwcm92aWRlckRpZENoYW5nZVBvc2l0aW9uKToKKyAgICAgICAgKFdlYktpdDo6
V2ViR2VvbG9jYXRpb25NYW5hZ2VyUHJveHk6OnByb3ZpZGVyRGlkRmFpbFRvRGV0ZXJtaW5lUG9z
aXRpb24pOgorICAgICAgICAoV2ViS2l0OjpXZWJHZW9sb2NhdGlvbk1hbmFnZXJQcm94eTo6c3Rh
cnRVcGRhdGluZyk6CisgICAgICAgIChXZWJLaXQ6OldlYkdlb2xvY2F0aW9uTWFuYWdlclByb3h5
OjpzdG9wVXBkYXRpbmcpOgorICAgICAgICAoV2ViS2l0OjpXZWJHZW9sb2NhdGlvbk1hbmFnZXJQ
cm94eTo6c2V0RW5hYmxlSGlnaEFjY3VyYWN5KToKKyAgICAgICAgKFdlYktpdDo6V2ViR2VvbG9j
YXRpb25NYW5hZ2VyUHJveHk6OnNldFByb3ZpZGVyKToKKyAgICAgICAgKFdlYktpdDo6V2ViR2Vv
bG9jYXRpb25NYW5hZ2VyUHJveHk6OmlzVXBkYXRpbmcgY29uc3QpOgorICAgICAgICAoV2ViS2l0
OjpXZWJHZW9sb2NhdGlvbk1hbmFnZXJQcm94eTo6aXNIaWdoQWNjdXJhY3lFbmFibGVkIGNvbnN0
KToKKyAgICAgICAgKFdlYktpdDo6V2ViR2VvbG9jYXRpb25NYW5hZ2VyUHJveHk6OnByb3ZpZGVy
U3RhcnRVcGRhdGluZyk6CisgICAgICAgIChXZWJLaXQ6OldlYkdlb2xvY2F0aW9uTWFuYWdlclBy
b3h5Ojpwcm92aWRlclN0b3BVcGRhdGluZyk6CisgICAgICAgIChXZWJLaXQ6OldlYkdlb2xvY2F0
aW9uTWFuYWdlclByb3h5Ojpwcm92aWRlclNldEVuYWJsZWRIaWdoQWNjdXJhY3kpOgorICAgICAg
ICAoV2ViS2l0OjpXZWJHZW9sb2NhdGlvbk1hbmFnZXJQcm94eTo6cmVzZXRQZXJtaXNzaW9ucyk6
IERlbGV0ZWQuCisgICAgICAgIChXZWJLaXQ6OldlYkdlb2xvY2F0aW9uTWFuYWdlclByb3h5Ojpy
ZW1vdmVSZXF1ZXN0ZXIpOiBEZWxldGVkLgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJHZW9sb2Nh
dGlvbk1hbmFnZXJQcm94eS5oOgorICAgICAgICAoV2ViS2l0OjpXZWJHZW9sb2NhdGlvbk1hbmFn
ZXJQcm94eTo6bGFzdFBvc2l0aW9uIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYktpdDo6
V2ViR2VvbG9jYXRpb25NYW5hZ2VyUHJveHk6OmlzVXBkYXRpbmcgY29uc3QpOiBEZWxldGVkLgor
ICAgICAgICAoV2ViS2l0OjpXZWJHZW9sb2NhdGlvbk1hbmFnZXJQcm94eTo6aXNIaWdoQWNjdXJh
Y3lFbmFibGVkIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViR2VvbG9j
YXRpb25NYW5hZ2VyUHJveHkubWVzc2FnZXMuaW46CisgICAgICAgICogVUlQcm9jZXNzL2lvcy9X
S0dlb2xvY2F0aW9uUHJvdmlkZXJJT1MubW06CisgICAgICAgICgtW1dLR2VvbG9jYXRpb25Qcm92
aWRlcklPUyBfc3RhcnRVcGRhdGluZ10pOgorICAgICAgICAoLVtXS0dlb2xvY2F0aW9uUHJvdmlk
ZXJJT1MgX3N0b3BVcGRhdGluZ10pOgorICAgICAgICAoLVtXS0dlb2xvY2F0aW9uUHJvdmlkZXJJ
T1MgX3NldEVuYWJsZUhpZ2hBY2N1cmFjeTpdKToKKyAgICAgICAgKC1bV0tHZW9sb2NhdGlvblBy
b3ZpZGVySU9TIGluaXRXaXRoUHJvY2Vzc1Bvb2w6XSk6CisgICAgICAgICgtW1dLR2VvbG9jYXRp
b25Qcm92aWRlcklPUyBkZWNpZGVQb2xpY3lGb3JHZW9sb2NhdGlvblJlcXVlc3RGcm9tT3JpZ2lu
OmNvbXBsZXRpb25IYW5kbGVyOnZpZXc6XSk6CisgICAgICAgICgtW1dLR2VvbG9jYXRpb25Qcm92
aWRlcklPUyBnZW9sb2NhdGlvbkF1dGhvcml6YXRpb25HcmFudGVkXSk6CisgICAgICAgICgtW1dL
R2VvbG9jYXRpb25Qcm92aWRlcklPUyBwb3NpdGlvbkNoYW5nZWQ6XSk6CisgICAgICAgICgtW1dL
R2VvbG9jYXRpb25Qcm92aWRlcklPUyBlcnJvck9jY3VycmVkOl0pOgorICAgICAgICAoLVtXS0dl
b2xvY2F0aW9uUHJvdmlkZXJJT1MgcmVzZXRHZW9sb2NhdGlvbl0pOgorICAgICAgICAoc3RhcnRV
cGRhdGluZ0NhbGxiYWNrKTogRGVsZXRlZC4KKyAgICAgICAgKHN0b3BVcGRhdGluZ0NhbGxiYWNr
KTogRGVsZXRlZC4KKyAgICAgICAgKHNldEVuYWJsZUhpZ2hBY2N1cmFjeSk6IERlbGV0ZWQuCisg
ICAgICAgICgtW1dLTGVnYWN5Q29yZUxvY2F0aW9uUHJvdmlkZXIgc2V0TGlzdGVuZXI6XSk6IERl
bGV0ZWQuCisgICAgICAgICgtW1dLTGVnYWN5Q29yZUxvY2F0aW9uUHJvdmlkZXIgcmVxdWVzdEdl
b2xvY2F0aW9uQXV0aG9yaXphdGlvbl0pOiBEZWxldGVkLgorICAgICAgICAoLVtXS0xlZ2FjeUNv
cmVMb2NhdGlvblByb3ZpZGVyIHN0YXJ0XSk6IERlbGV0ZWQuCisgICAgICAgICgtW1dLTGVnYWN5
Q29yZUxvY2F0aW9uUHJvdmlkZXIgc3RvcF0pOiBEZWxldGVkLgorICAgICAgICAoLVtXS0xlZ2Fj
eUNvcmVMb2NhdGlvblByb3ZpZGVyIHNldEVuYWJsZUhpZ2hBY2N1cmFjeTpdKTogRGVsZXRlZC4K
KyAgICAgICAgKC1bV0tMZWdhY3lDb3JlTG9jYXRpb25Qcm92aWRlciBnZW9sb2NhdGlvbkF1dGhv
cml6YXRpb25HcmFudGVkXSk6IERlbGV0ZWQuCisgICAgICAgICgtW1dLTGVnYWN5Q29yZUxvY2F0
aW9uUHJvdmlkZXIgZ2VvbG9jYXRpb25BdXRob3JpemF0aW9uRGVuaWVkXSk6IERlbGV0ZWQuCisg
ICAgICAgICgtW1dLTGVnYWN5Q29yZUxvY2F0aW9uUHJvdmlkZXIgcG9zaXRpb25DaGFuZ2VkOl0p
OiBEZWxldGVkLgorICAgICAgICAoLVtXS0xlZ2FjeUNvcmVMb2NhdGlvblByb3ZpZGVyIGVycm9y
T2NjdXJyZWQ6XSk6IERlbGV0ZWQuCisgICAgICAgICgtW1dLTGVnYWN5Q29yZUxvY2F0aW9uUHJv
dmlkZXIgcmVzZXRHZW9sb2NhdGlvbl0pOiBEZWxldGVkLgorICAgICAgICAqIFdlYktpdC54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIFdlYlByb2Nlc3MvR2VvbG9jYXRpb24v
V2ViR2VvbG9jYXRpb25NYW5hZ2VyLmNwcDoKKyAgICAgICAgKFdlYktpdDo6cmVnaXN0cmFibGVE
b21haW5Gb3JQYWdlKToKKyAgICAgICAgKFdlYktpdDo6V2ViR2VvbG9jYXRpb25NYW5hZ2VyOjpy
ZWdpc3RlcldlYlBhZ2UpOgorICAgICAgICAoV2ViS2l0OjpXZWJHZW9sb2NhdGlvbk1hbmFnZXI6
OnVucmVnaXN0ZXJXZWJQYWdlKToKKyAgICAgICAgKFdlYktpdDo6V2ViR2VvbG9jYXRpb25NYW5h
Z2VyOjpzZXRFbmFibGVIaWdoQWNjdXJhY3lGb3JQYWdlKToKKyAgICAgICAgKFdlYktpdDo6V2Vi
R2VvbG9jYXRpb25NYW5hZ2VyOjpkaWRDaGFuZ2VQb3NpdGlvbik6CisgICAgICAgIChXZWJLaXQ6
OldlYkdlb2xvY2F0aW9uTWFuYWdlcjo6ZGlkRmFpbFRvRGV0ZXJtaW5lUG9zaXRpb24pOgorICAg
ICAgICAoV2ViS2l0OjpXZWJHZW9sb2NhdGlvbk1hbmFnZXI6OnJlc2V0UGVybWlzc2lvbnMpOgor
ICAgICAgICAoV2ViS2l0OjpXZWJHZW9sb2NhdGlvbk1hbmFnZXI6OmlzVXBkYXRpbmcgY29uc3Qp
OiBEZWxldGVkLgorICAgICAgICAoV2ViS2l0OjpXZWJHZW9sb2NhdGlvbk1hbmFnZXI6OmlzSGln
aEFjY3VyYWN5RW5hYmxlZCBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgICogV2ViUHJvY2Vzcy9H
ZW9sb2NhdGlvbi9XZWJHZW9sb2NhdGlvbk1hbmFnZXIuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNz
L0dlb2xvY2F0aW9uL1dlYkdlb2xvY2F0aW9uTWFuYWdlci5tZXNzYWdlcy5pbjoKKyAgICAgICAg
KiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkdlb2xvY2F0aW9uQ2xpZW50LmNwcDoKKyAg
ICAgICAgKFdlYktpdDo6V2ViR2VvbG9jYXRpb25DbGllbnQ6OnN0YXJ0VXBkYXRpbmcpOgorICAg
ICAgICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViR2VvbG9jYXRpb25DbGllbnQuaDoK
KyAgICAgICAgKFdlYktpdDo6V2ViR2VvbG9jYXRpb25DbGllbnQ6OldlYkdlb2xvY2F0aW9uQ2xp
ZW50KTogRGVsZXRlZC4KKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3BwOgorICAg
ICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzOjpyZXNldEFsbEdlb2xvY2F0aW9uUGVybWlzc2lvbnMp
OiBEZWxldGVkLgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUHJvY2Vzcy5oOgorCiAyMDIyLTAy
LTEyICBKZXIgTm9ibGUgIDxqZXIubm9ibGVAYXBwbGUuY29tPgogCiAgICAgICAgIEFkZCBzZXR0
aW5ncyB0byByZXN0cmljdCBtZWRpYSBjb250YWluZXJzIGFuZCBjb2RlY3Mgd2hlbiBpbiBDYXB0
aXZlIFBvcnRhbCBtb2RlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9DaGFu
Z2VMb2cgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9DaGFuZ2VMb2cKaW5kZXggNjgwMzk0ODU4
YTE1YjhhMjU2OTZhYWVjN2M4ZDk0YWE3M2FkNzIyMy4uMjU5NzZhMmYwZjQ4ZDNjM2NlMjk4YmZl
ZjgwZTFhZmIxMDU4OGY2NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2hh
bmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxvZwpAQCAtMSwzICsx
LDE1IEBACisyMDIyLTAyLTEzICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CisKKyAg
ICAgICAgRG8gcHJlbGltaW5hcnkgd29yayB0byBwYXNzIGRvbWFpbiBuYW1lcyB0byBDb3JlTG9j
YXRpb24KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIz
NjU2NgorICAgICAgICA8cmRhcjovLzg4NzYxNDEzPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2ViR2VvbG9jYXRpb25D
bGllbnQuaDoKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJHZW9sb2NhdGlvbkNsaWVudC5t
bToKKyAgICAgICAgKFdlYkdlb2xvY2F0aW9uQ2xpZW50OjpzdGFydFVwZGF0aW5nKToKKwogMjAy
Mi0wMi0xMSAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgogCiAgICAgICAgIFVucmV2
aWV3ZWQsIGZpeCBidWlsZCB3aXRoIHRoZSBsYXRlc3QgaU9TIFNESy4KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXRMZWdhY3kvd2luL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2lu
L0NoYW5nZUxvZwppbmRleCA2OTVhYTkxMDUzOWVmMDIxMDVmNTIxOTMwNGMwOTdlMTAzMTI2NDU1
Li4xZDZjMDMzZTJjZDFkMTI3NDQ1YzM1YzMwY2EzODg1MGFlZjdiZGI0IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdExlZ2Fj
eS93aW4vQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTUgQEAKKzIwMjItMDItMTMgIENocmlzIER1bWV6
ICA8Y2R1bWV6QGFwcGxlLmNvbT4KKworICAgICAgICBEbyBwcmVsaW1pbmFyeSB3b3JrIHRvIHBh
c3MgZG9tYWluIG5hbWVzIHRvIENvcmVMb2NhdGlvbgorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjM2NTY2CisgICAgICAgIDxyZGFyOi8vODg3NjE0MTM+
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBXZWJD
b3JlU3VwcG9ydC9XZWJHZW9sb2NhdGlvbkNsaWVudC5jcHA6CisgICAgICAgIChXZWJHZW9sb2Nh
dGlvbkNsaWVudDo6c3RhcnRVcGRhdGluZyk6CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2Vi
R2VvbG9jYXRpb25DbGllbnQuaDoKKwogMjAyMi0wMi0wMSAgTXlsZXMgQy4gTWF4ZmllbGQgIDxt
bWF4ZmllbGRAYXBwbGUuY29tPgogCiAgICAgICAgIFJlbmFtZSBGb250Q2FzY2FkZTo6Zm9udE1l
dHJpY3MoKSBhbmQgUmVuZGVyU3R5bGU6OmZvbnRNZXRyaWNzKCkgdG8gZm9udE1ldHJpY3NPZlBy
aW1hcnlGb250KCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL1BsYXRmb3JtSGF2ZS5oIGIv
U291cmNlL1dURi93dGYvUGxhdGZvcm1IYXZlLmgKaW5kZXggMDkyYmMzNjIxNTAxZDQ0Y2VhZmIw
NzBmYWNjZDM5OTVjZGEyMzEyNy4uNjRhNWU3OWIwNDRlZmJiODJhZWYyNDlhNDFiMmRkOThmYmU4
NTcwYSAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvUGxhdGZvcm1IYXZlLmgKKysrIGIvU291
cmNlL1dURi93dGYvUGxhdGZvcm1IYXZlLmgKQEAgLTExMTksNiArMTExOSwxNiBAQAogI2RlZmlu
ZSBIQVZFX05TVEVYVExJU1RfTUFSS0VSX0ZPUk1BVFMgMQogI2VuZGlmCiAKKyNpZiAoUExBVEZP
Uk0oSU9TKSAmJiBfX0lQSE9ORV9PU19WRVJTSU9OX01BWF9BTExPV0VEID49IDE2MDAwMCkgXAor
ICAgIHx8IChQTEFURk9STShXQVRDSE9TKSAmJiBfX1dBVENIX09TX1ZFUlNJT05fTUFYX0FMTE9X
RUQgPj0gOTAwMDApIFwKKyAgICB8fCAoUExBVEZPUk0oQVBQTEVUVikgJiYgX19UVl9PU19WRVJT
SU9OX01BWF9BTExPV0VEID49IDE2MDAwMCkKKyNkZWZpbmUgSEFWRV9DT1JFX0xPQ0FUSU9OX1dF
QlNJVEVfSURFTlRJRklFUlMgMQorI2VuZGlmCisKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZKSB8
fCAoUExBVEZPUk0oTUFDKSAmJiBfX01BQ19PU19YX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49IDEw
MTQwMCAmJiBkZWZpbmVkIF9faGFzX2luY2x1ZGUgJiYgX19oYXNfaW5jbHVkZSg8Q29yZUZvdW5k
YXRpb24vQ0ZQcml2Lmg+KSkKKyNkZWZpbmUgSEFWRV9DT1JFX0xPQ0FUSU9OX0FVVEhPUklaRURf
V0hFTl9JTl9VU0UgMQorI2VuZGlmCisKICNpZiBQTEFURk9STShNQUMpCiAjZGVmaW5lIEhBVkVf
U0NFTkVLSVQgMQogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2dl
b2xvY2F0aW9uL0dlb2xvY2F0aW9uQ2xpZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2dl
b2xvY2F0aW9uL0dlb2xvY2F0aW9uQ2xpZW50LmgKaW5kZXggNWJhZjNhZDgyYzU3ZTVhY2JhOTZl
M2RmMGVkNjBlYmM3NTRiY2IwNS4uYTRlODYyMzYyNTU2N2U5YWRmZWIwMGQ4MjQwMDBhMjc3ZGJl
YWYwMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9nZW9sb2NhdGlvbi9HZW9s
b2NhdGlvbkNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZ2VvbG9jYXRpb24v
R2VvbG9jYXRpb25DbGllbnQuaApAQCAtMzgsNyArMzgsNyBAQCBjbGFzcyBHZW9sb2NhdGlvbkNs
aWVudCB7CiBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIGdlb2xvY2F0aW9uRGVzdHJveWVkKCkg
PSAwOwogCi0gICAgdmlydHVhbCB2b2lkIHN0YXJ0VXBkYXRpbmcoY29uc3QgU3RyaW5nJiBhdXRo
b3JpemF0aW9uVG9rZW4pID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgc3RhcnRVcGRhdGluZyhjb25z
dCBTdHJpbmcmIGF1dGhvcml6YXRpb25Ub2tlbiwgYm9vbCBuZWVkc0hpZ2hBY2N1cmFjeSkgPSAw
OwogICAgIHZpcnR1YWwgdm9pZCBzdG9wVXBkYXRpbmcoKSA9IDA7CiAgICAgdmlydHVhbCB2b2lk
IHJldm9rZUF1dGhvcml6YXRpb25Ub2tlbihjb25zdCBTdHJpbmcmKSB7IH0KIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9nZW9sb2NhdGlvbi9HZW9sb2NhdGlvbkNvbnRyb2xs
ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9nZW9sb2NhdGlvbi9HZW9sb2NhdGlvbkNv
bnRyb2xsZXIuY3BwCmluZGV4IDA2MTYyOTE2MGQ5YmNjN2Q1ZGFmNzRjZmM0ZjgxNTUwYmE0OGRl
OGMuLjA3ZGQ2NWYzYzFhZWU3OWViOWM3MzI4MzZhMmQ1YWFkMDE3MzMzY2YgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZ2VvbG9jYXRpb24vR2VvbG9jYXRpb25Db250cm9sbGVy
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2dlb2xvY2F0aW9uL0dlb2xvY2F0aW9u
Q29udHJvbGxlci5jcHAKQEAgLTUyLDE5ICs1MiwyNSBAQCBHZW9sb2NhdGlvbkNvbnRyb2xsZXI6
On5HZW9sb2NhdGlvbkNvbnRyb2xsZXIoKQogICAgIG1fY2xpZW50Lmdlb2xvY2F0aW9uRGVzdHJv
eWVkKCk7CiB9CiAKK3ZvaWQgR2VvbG9jYXRpb25Db250cm9sbGVyOjpkaWROYXZpZ2F0ZVBhZ2Uo
KQoreworICAgIHdoaWxlICghbV9vYnNlcnZlcnMuaXNFbXB0eSgpKQorICAgICAgICByZW1vdmVP
YnNlcnZlcihtX29ic2VydmVycy5iZWdpbigpLT5nZXQoKSk7Cit9CisKIHZvaWQgR2VvbG9jYXRp
b25Db250cm9sbGVyOjphZGRPYnNlcnZlcihHZW9sb2NhdGlvbiYgb2JzZXJ2ZXIsIGJvb2wgZW5h
YmxlSGlnaEFjY3VyYWN5KQogewotICAgIC8vIFRoaXMgbWF5IGJlIGNhbGxlZCBtdWx0aXBsZSB0
aW1lcyB3aXRoIHRoZSBzYW1lIG9ic2VydmVyLCB0aG91Z2ggcmVtb3ZlT2JzZXJ2ZXIoKQotICAg
IC8vIGlzIGNhbGxlZCBvbmx5IG9uY2Ugd2l0aCBlYWNoLgotICAgIGJvb2wgd2FzRW1wdHkgPSBt
X29ic2VydmVycy5pc0VtcHR5KCk7CisgICAgYm9vbCBoaWdoQWNjdXJhY3lXYXNSZXF1aXJlZCA9
IG5lZWRzSGlnaEFjY3VyYWN5KCk7CisKICAgICBtX29ic2VydmVycy5hZGQob2JzZXJ2ZXIpOwog
ICAgIGlmIChlbmFibGVIaWdoQWNjdXJhY3kpCiAgICAgICAgIG1faGlnaEFjY3VyYWN5T2JzZXJ2
ZXJzLmFkZChvYnNlcnZlcik7CiAKLSAgICBpZiAoZW5hYmxlSGlnaEFjY3VyYWN5KQotICAgICAg
ICBtX2NsaWVudC5zZXRFbmFibGVIaWdoQWNjdXJhY3kodHJ1ZSk7Ci0gICAgaWYgKHdhc0VtcHR5
ICYmIG1fcGFnZS5pc1Zpc2libGUoKSkKLSAgICAgICAgbV9jbGllbnQuc3RhcnRVcGRhdGluZyhv
YnNlcnZlci5hdXRob3JpemF0aW9uVG9rZW4oKSk7CisgICAgaWYgKG1faXNVcGRhdGluZykgewor
ICAgICAgICBpZiAoIWhpZ2hBY2N1cmFjeVdhc1JlcXVpcmVkICYmIGVuYWJsZUhpZ2hBY2N1cmFj
eSkKKyAgICAgICAgICAgIG1fY2xpZW50LnNldEVuYWJsZUhpZ2hBY2N1cmFjeSh0cnVlKTsKKyAg
ICB9IGVsc2UKKyAgICAgICAgc3RhcnRVcGRhdGluZ0lmTmVjZXNzYXJ5KCk7CiB9CiAKIHZvaWQg
R2VvbG9jYXRpb25Db250cm9sbGVyOjpyZW1vdmVPYnNlcnZlcihHZW9sb2NhdGlvbiYgb2JzZXJ2
ZXIpCkBAIC03MiwxMiArNzgsMTcgQEAgdm9pZCBHZW9sb2NhdGlvbkNvbnRyb2xsZXI6OnJlbW92
ZU9ic2VydmVyKEdlb2xvY2F0aW9uJiBvYnNlcnZlcikKICAgICBpZiAoIW1fb2JzZXJ2ZXJzLmNv
bnRhaW5zKG9ic2VydmVyKSkKICAgICAgICAgcmV0dXJuOwogCisgICAgYm9vbCBoaWdoQWNjdXJh
Y3lXYXNSZXF1aXJlZCA9IG5lZWRzSGlnaEFjY3VyYWN5KCk7CisKICAgICBtX29ic2VydmVycy5y
ZW1vdmUob2JzZXJ2ZXIpOwogICAgIG1faGlnaEFjY3VyYWN5T2JzZXJ2ZXJzLnJlbW92ZShvYnNl
cnZlcik7CiAKKyAgICBpZiAoIW1faXNVcGRhdGluZykKKyAgICAgICAgcmV0dXJuOworCiAgICAg
aWYgKG1fb2JzZXJ2ZXJzLmlzRW1wdHkoKSkKLSAgICAgICAgbV9jbGllbnQuc3RvcFVwZGF0aW5n
KCk7Ci0gICAgZWxzZSBpZiAobV9oaWdoQWNjdXJhY3lPYnNlcnZlcnMuaXNFbXB0eSgpKQorICAg
ICAgICBzdG9wVXBkYXRpbmdJZk5lY2Vzc2FyeSgpOworICAgIGVsc2UgaWYgKGhpZ2hBY2N1cmFj
eVdhc1JlcXVpcmVkICYmICFuZWVkc0hpZ2hBY2N1cmFjeSgpKQogICAgICAgICBtX2NsaWVudC5z
ZXRFbmFibGVIaWdoQWNjdXJhY3koZmFsc2UpOwogfQogCkBAIC0xMzksOSArMTUwLDkgQEAgdm9p
ZCBHZW9sb2NhdGlvbkNvbnRyb2xsZXI6OmFjdGl2aXR5U3RhdGVEaWRDaGFuZ2UoT3B0aW9uU2V0
PEFjdGl2aXR5U3RhdGU6OkZsYWcKICAgICBhdXRvIGNoYW5nZWQgPSBvbGRBY3Rpdml0eVN0YXRl
IF4gbmV3QWN0aXZpdHlTdGF0ZTsKICAgICBpZiAoY2hhbmdlZCAmIEFjdGl2aXR5U3RhdGU6Oklz
VmlzaWJsZSAmJiAhbV9vYnNlcnZlcnMuaXNFbXB0eSgpKSB7CiAgICAgICAgIGlmIChuZXdBY3Rp
dml0eVN0YXRlICYgQWN0aXZpdHlTdGF0ZTo6SXNWaXNpYmxlKQotICAgICAgICAgICAgbV9jbGll
bnQuc3RhcnRVcGRhdGluZygoKm1fb2JzZXJ2ZXJzLnJhbmRvbSgpKS0+YXV0aG9yaXphdGlvblRv
a2VuKCkpOworICAgICAgICAgICAgc3RhcnRVcGRhdGluZ0lmTmVjZXNzYXJ5KCk7CiAgICAgICAg
IGVsc2UKLSAgICAgICAgICAgIG1fY2xpZW50LnN0b3BVcGRhdGluZygpOworICAgICAgICAgICAg
c3RvcFVwZGF0aW5nSWZOZWNlc3NhcnkoKTsKICAgICB9CiAKICAgICBpZiAoIW1fcGFnZS5pc1Zp
c2libGUoKSkKQEAgLTE1Miw2ICsxNjMsMjQgQEAgdm9pZCBHZW9sb2NhdGlvbkNvbnRyb2xsZXI6
OmFjdGl2aXR5U3RhdGVEaWRDaGFuZ2UoT3B0aW9uU2V0PEFjdGl2aXR5U3RhdGU6OkZsYWcKICAg
ICAgICAgbV9jbGllbnQucmVxdWVzdFBlcm1pc3Npb24ocGVybWlzc2lvblJlcXVlc3QuZ2V0KCkp
OwogfQogCit2b2lkIEdlb2xvY2F0aW9uQ29udHJvbGxlcjo6c3RhcnRVcGRhdGluZ0lmTmVjZXNz
YXJ5KCkKK3sKKyAgICBpZiAobV9pc1VwZGF0aW5nIHx8ICFtX3BhZ2UuaXNWaXNpYmxlKCkgfHwg
bV9vYnNlcnZlcnMuaXNFbXB0eSgpKQorICAgICAgICByZXR1cm47CisKKyAgICBtX2NsaWVudC5z
dGFydFVwZGF0aW5nKCgqbV9vYnNlcnZlcnMucmFuZG9tKCkpLT5hdXRob3JpemF0aW9uVG9rZW4o
KSwgbmVlZHNIaWdoQWNjdXJhY3koKSk7CisgICAgbV9pc1VwZGF0aW5nID0gdHJ1ZTsKK30KKwor
dm9pZCBHZW9sb2NhdGlvbkNvbnRyb2xsZXI6OnN0b3BVcGRhdGluZ0lmTmVjZXNzYXJ5KCkKK3sK
KyAgICBpZiAoIW1faXNVcGRhdGluZykKKyAgICAgICAgcmV0dXJuOworCisgICAgbV9jbGllbnQu
c3RvcFVwZGF0aW5nKCk7CisgICAgbV9pc1VwZGF0aW5nID0gZmFsc2U7Cit9CisKIGNvbnN0IGNo
YXIqIEdlb2xvY2F0aW9uQ29udHJvbGxlcjo6c3VwcGxlbWVudE5hbWUoKQogewogICAgIHJldHVy
biAiR2VvbG9jYXRpb25Db250cm9sbGVyIjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvZ2VvbG9jYXRpb24vR2VvbG9jYXRpb25Db250cm9sbGVyLmggYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2dlb2xvY2F0aW9uL0dlb2xvY2F0aW9uQ29udHJvbGxlci5oCmluZGV4IDQyZjVk
MDYyZGI2ZjA5YzY2MDExMWQ2NmQ5ZjBmY2ZmZjNiMjA3NDAuLmJiZmY1NzVlYjA1ODMyNDA3ODBk
M2I0MWE5Njc0MmM2YjFkNzI0OGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
Z2VvbG9jYXRpb24vR2VvbG9jYXRpb25Db250cm9sbGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9nZW9sb2NhdGlvbi9HZW9sb2NhdGlvbkNvbnRyb2xsZXIuaApAQCAtMzAsNiArMzAs
NyBAQAogI2luY2x1ZGUgIkFjdGl2aXR5U3RhdGVDaGFuZ2VPYnNlcnZlci5oIgogI2luY2x1ZGUg
Ikdlb2xvY2F0aW9uLmgiCiAjaW5jbHVkZSAiUGFnZS5oIgorI2luY2x1ZGUgIlJlZ2lzdHJhYmxl
RG9tYWluLmgiCiAjaW5jbHVkZSA8d3RmL0hhc2hTZXQuaD4KICNpbmNsdWRlIDx3dGYvTm9uY29w
eWFibGUuaD4KICNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+CkBAIC02NSw2ICs2Niw4IEBAIHB1Ymxp
YzoKIAogICAgIHZvaWQgcmV2b2tlQXV0aG9yaXphdGlvblRva2VuKGNvbnN0IFN0cmluZyYpOwog
CisgICAgdm9pZCBkaWROYXZpZ2F0ZVBhZ2UoKTsKKwogcHJpdmF0ZToKICAgICBQYWdlJiBtX3Bh
Z2U7CiAgICAgR2VvbG9jYXRpb25DbGllbnQmIG1fY2xpZW50OwpAQCAtNzMsNiArNzYsMTEgQEAg
cHJpdmF0ZToKIAogICAgIHN0ZDo6b3B0aW9uYWw8R2VvbG9jYXRpb25Qb3NpdGlvbkRhdGE+IG1f
bGFzdFBvc2l0aW9uOwogCisgICAgYm9vbCBuZWVkc0hpZ2hBY2N1cmFjeSgpIGNvbnN0IHsgcmV0
dXJuICFtX2hpZ2hBY2N1cmFjeU9ic2VydmVycy5pc0VtcHR5KCk7IH0KKworICAgIHZvaWQgc3Rh
cnRVcGRhdGluZ0lmTmVjZXNzYXJ5KCk7CisgICAgdm9pZCBzdG9wVXBkYXRpbmdJZk5lY2Vzc2Fy
eSgpOworCiAgICAgdHlwZWRlZiBIYXNoU2V0PFJlZjxHZW9sb2NhdGlvbj4+IE9ic2VydmVyc1Nl
dDsKICAgICAvLyBBbGwgb2JzZXJ2ZXJzOyBib3RoIHRob3NlIHJlcXVlc3RpbmcgaGlnaCBhY2N1
cmFjeSBhbmQgdGhvc2Ugbm90LgogICAgIE9ic2VydmVyc1NldCBtX29ic2VydmVyczsKQEAgLTgw
LDYgKzg4LDkgQEAgcHJpdmF0ZToKIAogICAgIC8vIFdoaWxlIHRoZSBwYWdlIGlzIG5vdCB2aXNp
YmxlLCB3ZSBwZW5kIHBlcm1pc3Npb24gcmVxdWVzdHMuCiAgICAgSGFzaFNldDxSZWY8R2VvbG9j
YXRpb24+PiBtX3BlbmRpbmdQZXJtaXNzaW9uUmVxdWVzdDsKKworICAgIFJlZ2lzdHJhYmxlRG9t
YWluIG1fcmVnaXN0cmFibGVEb21haW47CisgICAgYm9vbCBtX2lzVXBkYXRpbmcgeyBmYWxzZSB9
OwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9nZW9sb2NhdGlvbi9HZW9sb2NhdGlvblBvc2l0aW9uRGF0YS5oIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9nZW9sb2NhdGlvbi9HZW9sb2NhdGlvblBvc2l0aW9uRGF0YS5oCmlu
ZGV4IDkyNjIyMTcwYzhhYWQ2OTg5YjhhMTJjZTQ4MzU2ZGM2ODdiZjZlMzUuLmNjMjE4MGE4Mzdk
Mjc0M2MxZmJmNzYxYzQxMGUxYzdlYmZlYWVlN2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvZ2VvbG9jYXRpb24vR2VvbG9jYXRpb25Qb3NpdGlvbkRhdGEuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2dlb2xvY2F0aW9uL0dlb2xvY2F0aW9uUG9zaXRpb25EYXRhLmgK
QEAgLTI5LDcgKzI5LDcgQEAKICNpbmNsdWRlIDx3dGYvUmVmLmg+CiAjaW5jbHVkZSA8d3RmL1Jl
ZkNvdW50ZWQuaD4KIAotI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCisjaWYgUExBVEZPUk0oQ09D
T0EpCiBPQkpDX0NMQVNTIENMTG9jYXRpb247CiAjZW5kaWYKIApAQCAtNDcsNyArNDcsNyBAQCBw
dWJsaWM6CiAgICAgewogICAgIH0KIAotI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCisjaWYgUExB
VEZPUk0oQ09DT0EpCiAgICAgV0VCQ09SRV9FWFBPUlQgZXhwbGljaXQgR2VvbG9jYXRpb25Qb3Np
dGlvbkRhdGEoQ0xMb2NhdGlvbiopOwogI2VuZGlmCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvZ2VvbG9jYXRpb24vY29jb2EvR2VvbG9jYXRpb25Qb3NpdGlvbkRhdGFDb2Nv
YS5tbSBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZ2VvbG9jYXRpb24vY29jb2EvR2VvbG9jYXRp
b25Qb3NpdGlvbkRhdGFDb2NvYS5tbQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5jMGE5YmVlNjU1Njk0ZGIzYWJmMTU3
ZWVkMTkwNzZlYWQ1ODU0NDA2Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9nZW9sb2NhdGlvbi9jb2NvYS9HZW9sb2NhdGlvblBvc2l0aW9uRGF0YUNvY29hLm1tCkBA
IC0wLDAgKzEsNTMgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQXBwbGUgSW5jLiBBbGwg
UmlnaHRzIFJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUg
bWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExF
IElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQg
T0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisg
KiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAq
LworCisjaW1wb3J0ICJjb25maWcuaCIKKyNpbXBvcnQgIkdlb2xvY2F0aW9uUG9zaXRpb24uaCIK
KworI2ltcG9ydCA8Q29yZUxvY2F0aW9uL0NMTG9jYXRpb24uaD4KKworbmFtZXNwYWNlIFdlYkNv
cmUgeworCitHZW9sb2NhdGlvblBvc2l0aW9uRGF0YTo6R2VvbG9jYXRpb25Qb3NpdGlvbkRhdGEo
Q0xMb2NhdGlvbiogbG9jYXRpb24pCisgICAgOiB0aW1lc3RhbXAobG9jYXRpb24udGltZXN0YW1w
LnRpbWVJbnRlcnZhbFNpbmNlMTk3MCkKKyAgICAsIGxhdGl0dWRlKGxvY2F0aW9uLmNvb3JkaW5h
dGUubGF0aXR1ZGUpCisgICAgLCBsb25naXR1ZGUobG9jYXRpb24uY29vcmRpbmF0ZS5sb25naXR1
ZGUpCisgICAgLCBhY2N1cmFjeShsb2NhdGlvbi5ob3Jpem9udGFsQWNjdXJhY3kpCit7CisgICAg
aWYgKGxvY2F0aW9uLnZlcnRpY2FsQWNjdXJhY3kgPj0gMC4wKSB7CisgICAgICAgIGFsdGl0dWRl
ID0gbG9jYXRpb24uYWx0aXR1ZGU7CisgICAgICAgIGFsdGl0dWRlQWNjdXJhY3kgPSBsb2NhdGlv
bi52ZXJ0aWNhbEFjY3VyYWN5OworICAgIH0KKyAgICBpZiAobG9jYXRpb24uc3BlZWQgPj0gMC4w
KQorICAgICAgICBzcGVlZCA9IGxvY2F0aW9uLnNwZWVkOworICAgIGlmIChsb2NhdGlvbi5jb3Vy
c2UgPj0gMC4wKQorICAgICAgICBoZWFkaW5nID0gbG9jYXRpb24uY291cnNlOworI2lmICFQTEFU
Rk9STShNQUNDQVRBTFlTVCkKKyAgICBpZiAobG9jYXRpb24uZmxvb3IpCisgICAgICAgIGZsb29y
TGV2ZWwgPSBsb2NhdGlvbi5mbG9vci5sZXZlbDsKKyNlbmRpZgorfQorCit9IC8vIG5hbWVzcGFj
ZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2dlb2xvY2F0aW9u
L2lvcy9HZW9sb2NhdGlvblBvc2l0aW9uRGF0YUlPUy5tbSBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvZ2VvbG9jYXRpb24vaW9zL0dlb2xvY2F0aW9uUG9zaXRpb25EYXRhSU9TLm1tCmRlbGV0ZWQg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5OGQ5YTI0MjFlN2YyMzA5YjRmNjIzYjE0ZDdjYmUyYjZj
N2UwNDVjLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvZ2VvbG9jYXRpb24vaW9zL0dlb2xvY2F0aW9uUG9zaXRpb25E
YXRhSU9TLm1tCisrKyAvZGV2L251bGwKQEAgLTEsNTcgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdo
dCAoQykgMjAxNyBBcHBsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgot
ICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgot
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQg
QU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFRIRQotICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgotICogQ09OVFJJQlVUT1JTIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCi0gKiBF
WEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sCi0gKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKLSAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKLSAqIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpbXBvcnQgImNvbmZpZy5oIgotI2ltcG9y
dCAiR2VvbG9jYXRpb25Qb3NpdGlvbi5oIgotCi0jaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKLQot
I2ltcG9ydCA8Q29yZUxvY2F0aW9uL0NMTG9jYXRpb24uaD4KLQotbmFtZXNwYWNlIFdlYkNvcmUg
ewotCi1HZW9sb2NhdGlvblBvc2l0aW9uRGF0YTo6R2VvbG9jYXRpb25Qb3NpdGlvbkRhdGEoQ0xM
b2NhdGlvbiogbG9jYXRpb24pCi0gICAgOiB0aW1lc3RhbXAobG9jYXRpb24udGltZXN0YW1wLnRp
bWVJbnRlcnZhbFNpbmNlMTk3MCkKLSAgICAsIGxhdGl0dWRlKGxvY2F0aW9uLmNvb3JkaW5hdGUu
bGF0aXR1ZGUpCi0gICAgLCBsb25naXR1ZGUobG9jYXRpb24uY29vcmRpbmF0ZS5sb25naXR1ZGUp
Ci0gICAgLCBhY2N1cmFjeShsb2NhdGlvbi5ob3Jpem9udGFsQWNjdXJhY3kpCi17Ci0gICAgaWYg
KGxvY2F0aW9uLnZlcnRpY2FsQWNjdXJhY3kgPj0gMC4wKSB7Ci0gICAgICAgIGFsdGl0dWRlID0g
bG9jYXRpb24uYWx0aXR1ZGU7Ci0gICAgICAgIGFsdGl0dWRlQWNjdXJhY3kgPSBsb2NhdGlvbi52
ZXJ0aWNhbEFjY3VyYWN5OwotICAgIH0KLSAgICBpZiAobG9jYXRpb24uc3BlZWQgPj0gMC4wKQot
ICAgICAgICBzcGVlZCA9IGxvY2F0aW9uLnNwZWVkOwotICAgIGlmIChsb2NhdGlvbi5jb3Vyc2Ug
Pj0gMC4wKQotICAgICAgICBoZWFkaW5nID0gbG9jYXRpb24uY291cnNlOwotI2lmICFQTEFURk9S
TShNQUNDQVRBTFlTVCkKLSAgICBpZiAobG9jYXRpb24uZmxvb3IpCi0gICAgICAgIGZsb29yTGV2
ZWwgPSBsb2NhdGlvbi5mbG9vci5sZXZlbDsKLSNlbmRpZgotfQotCi19Ci0KLSNlbmRpZiAvLyBQ
TEFURk9STShJT1NfRkFNSUxZKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvU291cmNlc0Nv
Y29hLnR4dCBiL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXNDb2NvYS50eHQKaW5kZXggMTA3NWVhYzQ3
NmE1NGI4MjAwZDA2ZTliODQzNmIyNDg5NWQ0MmM2Mi4uNjUyOTZlMjViNzE1ZGZlMzA4MDVmZDdk
MWFiNzc0MzlmNDhmMjI1ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvU291cmNlc0NvY29h
LnR4dAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzQ29jb2EudHh0CkBAIC0yNTEsNiArMjUx
LDcgQEAgcGxhdGZvcm0vY2YvTWVkaWFBY2Nlc3NpYmlsaXR5U29mdExpbmsuY3BwCiBwbGF0Zm9y
bS9jZi9SdW5Mb29wT2JzZXJ2ZXIuY3BwCiBwbGF0Zm9ybS9jZi9TaGFyZWRCdWZmZXJDRi5jcHAK
IHBsYXRmb3JtL2NvY29hL0NvbnRlbnRGaWx0ZXJVbmJsb2NrSGFuZGxlckNvY29hLm1tIEBuby11
bmlmeQorcGxhdGZvcm0vY29jb2EvQ29yZUxvY2F0aW9uR2VvbG9jYXRpb25Qcm92aWRlci5tbQog
cGxhdGZvcm0vY29jb2EvQ29yZVZpZGVvU29mdExpbmsuY3BwCiBwbGF0Zm9ybS9jb2NvYS9EcmFn
RGF0YUNvY29hLm1tCiBwbGF0Zm9ybS9jb2NvYS9EcmFnSW1hZ2VDb2NvYS5tbQpAQCAtMzE3LDcg
KzMxOCw3IEBAIHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0NETVNlc3Npb25B
VkZvdW5kYXRpb25PYmpDLm1tCiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9D
RE1TZXNzaW9uQVZTdHJlYW1TZXNzaW9uLm1tCiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRp
b24vb2JqYy9DRE1TZXNzaW9uTWVkaWFTb3VyY2VBVkZPYmpDLm1tCiBwbGF0Zm9ybS9ncmFwaGlj
cy9hdmZvdW5kYXRpb24vb2JqYy9JbWFnZURlY29kZXJBVkZPYmpDLm1tCi1wbGF0Zm9ybS9ncmFw
aGljcy9hdmZvdW5kYXRpb24vb2JqYy9JbmJhbmRUZXh0VHJhY2tQcml2YXRlQVZGT2JqQy5tbQor
cGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvSW5iYW5kVGV4dFRyYWNrUHJpdmF0
ZUFWRk9iakMubW0gQG5vLXVuaWZ5CiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2Jq
Yy9JbmJhbmRDaGFwdGVyVHJhY2tQcml2YXRlQVZGT2JqQy5tbSBAbm8tdW5pZnkKIHBsYXRmb3Jt
L2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0xvY2FsU2FtcGxlQnVmZmVyRGlzcGxheUxheWVy
Lm1tCiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXliYWNrVGFy
Z2V0UGlja2VyTWFjLm1tCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9w
cm9qZWN0LnBieHByb2oKaW5kZXggZjFlZTk3MTI2NWVmYWQ3MzYxYTIxOWNiY2RjZjhkMjU0MmIz
N2M2MC4uM2QxYjY3MzVjNTMyNDY1ZTdjYWZjM2JiMjViM2M0NGM4NDJhZGJkYSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBi
L1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMTM1
Miw2ICsxMzUyLDcgQEAKIAkJNDY4MzQ0RTAxRURERkFBQTAwQjc3OTVCIC8qIERPTVJlY3RMaXN0
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0NjgzNDRE
RTFFRERGQTVGMDBCNzc5NUIgLyogRE9NUmVjdExpc3QuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklC
VVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk0NjgzREY0MDI3NjdERjk4MDA3RDAwQzggLyog
SlNTaGFkb3dSZWFsbUdsb2JhbFNjb3BlQmFzZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gNDY4M0RGM0UyNzY3REY5ODAwN0QwMEM4IC8qIEpTU2hhZG93
UmVhbG1HbG9iYWxTY29wZUJhc2UuaCAqLzsgfTsKIAkJNDY4M0RGNDEyNzY3RTkxQTAwN0QwMEM4
IC8qIFNoYWRvd1JlYWxtR2xvYmFsU2NvcGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDQ2ODNERjNCMjc2N0RGMjYwMDdEMDBDOCAvKiBTaGFkb3dSZWFs
bUdsb2JhbFNjb3BlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsg
fTsgfTsKKwkJNDY4OEU5ODAyN0I2QjQ1MDAwNTY3Q0QyIC8qIENvcmVMb2NhdGlvbkdlb2xvY2F0
aW9uUHJvdmlkZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDQ2ODhFOTdGMjdCNkI0NDQwMDU2N0NEMiAvKiBDb3JlTG9jYXRpb25HZW9sb2NhdGlvblBy
b3ZpZGVyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsK
IAkJNDY4OEVFM0MyNkREMjYxMDAwMkFGNUM0IC8qIENyb3NzT3JpZ2luTW9kZS5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDY4OEVFM0EyNkREMjYwQzAw
MkFGNUM0IC8qIENyb3NzT3JpZ2luTW9kZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0g
KFByaXZhdGUsICk7IH07IH07CiAJCTQ2OTQzREM5Mjc2M0Y4MTcwMDRCNjEwRSAvKiBTaGFyZWRX
b3JrZXJPYmplY3RJZGVudGlmaWVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA0Njk0M0RDNzI3NjNGODBFMDA0QjYxMEUgLyogU2hhcmVkV29ya2VyT2Jq
ZWN0SWRlbnRpZmllci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7
IH07IH07CiAJCTQ2OTg1RjIzMjdBNEE2QUQwMDk3QTMyQiAvKiBTaGFyZWRXb3JrZXJLZXkuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ2OTg1RjIyMjdB
NEE2ODYwMDk3QTMyQiAvKiBTaGFyZWRXb3JrZXJLZXkuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklC
VVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwpAQCAtMTM3Nyw2ICsxMzc4LDcgQEAKIAkJNDZDNjk2
Q0IxRTcyMDVGNzAwNTk3OTM3IC8qIENQVU1vbml0b3IuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ2QzY5NkM5MUU3MjA1RTQwMDU5NzkzNyAvKiBDUFVN
b25pdG9yLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsK
IAkJNDZDNjk2Q0MxRTcyMDVGQzAwNTk3OTM3IC8qIENQVU1vbml0b3IuY3BwIGluIFNvdXJjZXMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDZDNjk2Q0ExRTcyMDVFNDAwNTk3
OTM3IC8qIENQVU1vbml0b3IuY3BwICovOyB9OwogCQk0NkM4M0VGRTFBOUJCRTI5MDBBNzlBNDEg
LyogR2VvTm90aWZpZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDQ2QzgzRUZDMUE5QkJFMjkwMEE3OUE0MSAvKiBHZW9Ob3RpZmllci5oICovOyBzZXR0
aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCTQ2Q0E5NDMxMjdCODY5
NTgwMEY0RjVGRiAvKiBJbmJhbmRUZXh0VHJhY2tQcml2YXRlQVZGT2JqQy5tbSBpbiBTb3VyY2Vz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDA3QUE2QjZBMTY2RDAxOTUwMEQ0
NTY3MSAvKiBJbmJhbmRUZXh0VHJhY2tQcml2YXRlQVZGT2JqQy5tbSAqLzsgfTsKIAkJNDZDQTlD
NDQxRjk3QkJFOTAwNENGQzNBIC8qIFZpc2liaWxpdHlTdGF0ZS5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDZDQTlDNDExRjk3QkJFNzAwNENGQzNBIC8q
IFZpc2liaWxpdHlTdGF0ZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUs
ICk7IH07IH07CiAJCTQ2Q0Y1MDRBMjdBQjFFQTQwMDcwREJDOCAvKiBTaGFyZWRXb3JrZXJDb250
ZXh0TWFuYWdlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gNDZDRjUwNDgyN0FCMUVBMTAwNzBEQkM4IC8qIFNoYXJlZFdvcmtlckNvbnRleHRNYW5hZ2Vy
LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNDZE
MDAwNDAyNkEwRkVCMzAwRDFCRjFFIC8qIFN1Ym1pdEV2ZW50LmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0NkQwMDAzRTI2QTBGRTZGMDBEMUJGMUUgLyog
U3VibWl0RXZlbnQuaCAqLzsgfTsKQEAgLTI2OTUsNyArMjY5Nyw3IEBACiAJCTgzNzY1Rjk1MURB
QzUyMkYwMEMwNjUzNyAvKiBNb3VzZUV2ZW50SW5pdC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODM3NjVGOTQxREFDNTIxODAwQzA2NTM3IC8qIE1vdXNl
RXZlbnRJbml0LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsg
fTsKIAkJODM3ODg3ODIyNEQ4QTYwOTAwMEQ0QTVCIC8qIEF1ZGlvQnVmZmVyU291cmNlT3B0aW9u
cy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODM3ODg3
N0YyNEQ4QTVGQzAwMEQ0QTVCIC8qIEF1ZGlvQnVmZmVyU291cmNlT3B0aW9ucy5oICovOyB9Owog
CQk4Mzc5MzYzRjFGQkJCMEI0MDBDODAyM0MgLyogU2VydmljZVdvcmtlckNsaWVudERhdGEuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDgzNzkzNjNFMUZC
QkIwQTUwMEM4MDIzQyAvKiBTZXJ2aWNlV29ya2VyQ2xpZW50RGF0YS5oICovOyBzZXR0aW5ncyA9
IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07Ci0JCTgzNzk2NENGMUY4REI2OUQwMDIx
OEVBMCAvKiBHZW9sb2NhdGlvblBvc2l0aW9uRGF0YUlPUy5tbSBpbiBTb3VyY2VzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDgzNzk2NENFMUY4REI2OUEwMDIxOEVBMCAvKiBH
ZW9sb2NhdGlvblBvc2l0aW9uRGF0YUlPUy5tbSAqLzsgfTsKKwkJODM3OTY0Q0YxRjhEQjY5RDAw
MjE4RUEwIC8qIEdlb2xvY2F0aW9uUG9zaXRpb25EYXRhQ29jb2EubW0gaW4gU291cmNlcyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4Mzc5NjRDRTFGOERCNjlBMDAyMThFQTAg
LyogR2VvbG9jYXRpb25Qb3NpdGlvbkRhdGFDb2NvYS5tbSAqLzsgfTsKIAkJODM3QTgwMTMxRTFF
MTI3MzAwMDI2QjlGIC8qIExvY2FsaXphYmxlLnN0cmluZ3NkaWN0IGluIFJlc291cmNlcyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4MzdBODAxMTFFMUUxMjczMDAwMjZCOUYg
LyogTG9jYWxpemFibGUuc3RyaW5nc2RpY3QgKi87IH07CiAJCTgzN0MwQjc2MjREQjM4NTAwMDVE
NTk1OSAvKiBEeW5hbWljc0NvbXByZXNzb3JPcHRpb25zLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4MzdDMEI3MzI0REIzODQyMDA1RDU5NTkgLyogRHlu
YW1pY3NDb21wcmVzc29yT3B0aW9ucy5oICovOyB9OwogCQk4MzdGQjM0NTFGOUVBMDZEMDBEMEZD
MzEgLyogRXh0ZW5kYWJsZU1lc3NhZ2VFdmVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gODM3RkIzNDAxRjlFQTA2NjAwRDBGQzMxIC8qIEV4dGVuZGFi
bGVNZXNzYWdlRXZlbnQuaCAqLzsgfTsKQEAgLTkyNjksNiArOTI3MSw4IEBACiAJCTQ2ODNERjND
Mjc2N0RGMjYwMDdEMDBDOCAvKiBTaGFkb3dSZWFsbUdsb2JhbFNjb3BlLmlkbCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBTaGFk
b3dSZWFsbUdsb2JhbFNjb3BlLmlkbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDY4
M0RGM0QyNzY3REY5ODAwN0QwMEM4IC8qIEpTU2hhZG93UmVhbG1HbG9iYWxTY29wZUJhc2UuY3Bw
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNTaGFkb3dSZWFsbUdsb2Jh
bFNjb3BlQmFzZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQ2ODNERjNFMjc2
N0RGOTgwMDdEMDBDOCAvKiBKU1NoYWRvd1JlYWxtR2xvYmFsU2NvcGVCYXNlLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTU2hhZG93UmVhbG1HbG9iYWxTY29wZUJhc2UuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNDY4OEU5N0QyN0I2QjQ0MzAwNTY3Q0QyIC8q
IENvcmVMb2NhdGlvbkdlb2xvY2F0aW9uUHJvdmlkZXIubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGgg
PSBDb3JlTG9jYXRpb25HZW9sb2NhdGlvblByb3ZpZGVyLm1tOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OworCQk0Njg4RTk3RjI3QjZCNDQ0MDA1NjdDRDIgLyogQ29yZUxvY2F0aW9uR2VvbG9j
YXRpb25Qcm92aWRlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBDb3JlTG9jYXRpb25HZW9sb2NhdGlvblBy
b3ZpZGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQ2ODhFRTNBMjZERDI2MEMw
MDJBRjVDNCAvKiBDcm9zc09yaWdpbk1vZGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQ3Jvc3NPcmlnaW5N
b2RlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQ2OEI4QkRFMjVDQzg0OTMwMEY2
NzgyMiAvKiBKU0Jhc2VBdWRpb0NvbnRleHRDdXN0b20uY3BwICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0g
SlNCYXNlQXVkaW9Db250ZXh0Q3VzdG9tLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJNDY5NDNEQzcyNzYzRjgwRTAwNEI2MTBFIC8qIFNoYXJlZFdvcmtlck9iamVjdElkZW50aWZp
ZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gU2hhcmVkV29ya2VyT2JqZWN0SWRlbnRpZmllci5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMTIxOTAsNyArMTIxOTQsNyBAQAogCQk4Mzc4ODc4
MTI0RDhBNUZDMDAwRDRBNUIgLyogQXVkaW9CdWZmZXJTb3VyY2VPcHRpb25zLmlkbCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBB
dWRpb0J1ZmZlclNvdXJjZU9wdGlvbnMuaWRsOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQk4Mzc5MzYzQzFGQkJCMEE0MDBDODAyM0MgLyogU2VydmljZVdvcmtlckNsaWVudERhdGEuY3Bw
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gU2VydmljZVdvcmtlckNsaWVu
dERhdGEuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk4Mzc5MzYzRTFGQkJCMEE1
MDBDODAyM0MgLyogU2VydmljZVdvcmtlckNsaWVudERhdGEuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gU2VydmljZVdvcmtlckNsaWVudERhdGEuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKLQkJODM3OTY0Q0UxRjhEQjY5QTAwMjE4RUEwIC8qIEdlb2xvY2F0aW9uUG9z
aXRpb25EYXRhSU9TLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBuYW1lID0g
R2VvbG9jYXRpb25Qb3NpdGlvbkRhdGFJT1MubW07IHBhdGggPSBNb2R1bGVzL2dlb2xvY2F0aW9u
L2lvcy9HZW9sb2NhdGlvblBvc2l0aW9uRGF0YUlPUy5tbTsgc291cmNlVHJlZSA9IFNPVVJDRV9S
T09UOyB9OworCQk4Mzc5NjRDRTFGOERCNjlBMDAyMThFQTAgLyogR2VvbG9jYXRpb25Qb3NpdGlv
bkRhdGFDb2NvYS5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgbmFtZSA9IEdl
b2xvY2F0aW9uUG9zaXRpb25EYXRhQ29jb2EubW07IHBhdGggPSBNb2R1bGVzL2dlb2xvY2F0aW9u
L2NvY29hL0dlb2xvY2F0aW9uUG9zaXRpb25EYXRhQ29jb2EubW07IHNvdXJjZVRyZWUgPSBTT1VS
Q0VfUk9PVDsgfTsKIAkJODM3QTgwMTIxRTFFMTI3MzAwMDI2QjlGIC8qIGVuICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dC5wbGlzdC5zdHJpbmdz
ZGljdDsgbmFtZSA9IGVuOyBwYXRoID0gZW4ubHByb2ovTG9jYWxpemFibGUuc3RyaW5nc2RpY3Q7
IHNvdXJjZVRyZWUgPSBTT1VSQ0VfUk9PVDsgfTsKIAkJODM3QjdEMUYxREMzRjU0QzAwRDA1MUZD
IC8qIFZhbGlkYXRpb25CdWJibGVJT1MubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpj
cHA7IHBhdGggPSBWYWxpZGF0aW9uQnViYmxlSU9TLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQk4MzdDMEI3MzI0REIzODQyMDA1RDU5NTkgLyogRHluYW1pY3NDb21wcmVzc29yT3B0
aW9ucy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBEeW5hbWljc0NvbXByZXNzb3JPcHRpb25zLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0yMTYwNiw2ICsyMTYxMCwxNCBAQAogCQkJcGF0aCA9
IGNvbnRleHQ7CiAJCQlzb3VyY2VUcmVlID0gIjxncm91cD4iOwogCQl9OworCQk0NjVDM0QxOTI3
Qjk5MUM4MDAyMTMwMkYgLyogY29jb2EgKi8gPSB7CisJCQlpc2EgPSBQQlhHcm91cDsKKwkJCWNo
aWxkcmVuID0gKAorCQkJCTgzNzk2NENFMUY4REI2OUEwMDIxOEVBMCAvKiBHZW9sb2NhdGlvblBv
c2l0aW9uRGF0YUNvY29hLm1tICovLAorCQkJKTsKKwkJCXBhdGggPSBjb2NvYTsKKwkJCXNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7CisJCX07CiAJCTQ2Njk0Q0RFMjc1OTQ0NkQwMEUzMTUwRSAvKiBz
aGFyZWQgKi8gPSB7CiAJCQlpc2EgPSBQQlhHcm91cDsKIAkJCWNoaWxkcmVuID0gKApAQCAtMjUx
MDMsMTQgKzI1MTE1LDYgQEAKIAkJCXBhdGggPSBiZWFjb247CiAJCQlzb3VyY2VUcmVlID0gIjxn
cm91cD4iOwogCQl9OwotCQk4Mzc5NjRDQzFGOERCNjdEMDAyMThFQTAgLyogaW9zICovID0gewot
CQkJaXNhID0gUEJYR3JvdXA7Ci0JCQljaGlsZHJlbiA9ICgKLQkJCQk4Mzc5NjRDRTFGOERCNjlB
MDAyMThFQTAgLyogR2VvbG9jYXRpb25Qb3NpdGlvbkRhdGFJT1MubW0gKi8sCi0JCQkpOwotCQkJ
bmFtZSA9IGlvczsKLQkJCXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7Ci0JCX07CiAJCTgzRkIzMzY1
MUY1MDhBMTcwMDk4NkU1NCAvKiBlbnRyaWVzYXBpICovID0gewogCQkJaXNhID0gUEJYR3JvdXA7
CiAJCQljaGlsZHJlbiA9ICgKQEAgLTI2MTIxLDcgKzI2MTI1LDcgQEAKIAkJOTcxMTQ1RkYxNEVG
MDA3OTAwNjc0RkQ5IC8qIGdlb2xvY2F0aW9uICovID0gewogCQkJaXNhID0gUEJYR3JvdXA7CiAJ
CQljaGlsZHJlbiA9ICgKLQkJCQk4Mzc5NjRDQzFGOERCNjdEMDAyMThFQTAgLyogaW9zICovLAor
CQkJCTQ2NUMzRDE5MjdCOTkxQzgwMDIxMzAyRiAvKiBjb2NvYSAqLywKIAkJCQk5NzQ2QUYxMzE0
RjREREU2MDAzRTdBNzAgLyogR2VvbG9jYXRpb24uY3BwICovLAogCQkJCTk3NDZBRjE0MTRGNERE
RTYwMDNFN0E3MCAvKiBHZW9sb2NhdGlvbi5oICovLAogCQkJCTk3NDZBRjE1MTRGNERERTYwMDNF
N0E3MCAvKiBHZW9sb2NhdGlvbi5pZGwgKi8sCkBAIC0yNjgzMyw2ICsyNjgzNyw4IEBACiAJCQkJ
QzFGN0I3MkYyNDQ4RjJBQzAwMTI0NTU3IC8qIEFHWENvbXBpbGVyU2VydmljZS5jcHAgKi8sCiAJ
CQkJQzFGN0I3MzAyNDQ4RjJBQzAwMTI0NTU3IC8qIEFHWENvbXBpbGVyU2VydmljZS5oICovLAog
CQkJCUExNDA5MEZBMUFBNTFFMUQwMDkxMTkxQSAvKiBDb250ZW50RmlsdGVyVW5ibG9ja0hhbmRs
ZXJDb2NvYS5tbSAqLywKKwkJCQk0Njg4RTk3RjI3QjZCNDQ0MDA1NjdDRDIgLyogQ29yZUxvY2F0
aW9uR2VvbG9jYXRpb25Qcm92aWRlci5oICovLAorCQkJCTQ2ODhFOTdEMjdCNkI0NDMwMDU2N0NE
MiAvKiBDb3JlTG9jYXRpb25HZW9sb2NhdGlvblByb3ZpZGVyLm1tICovLAogCQkJCUNEN0QzMzQ1
MUM3QTE2QkYwMDA0MTI5MyAvKiBDb3JlVmlkZW9Tb2Z0TGluay5jcHAgKi8sCiAJCQkJQ0Q3RDMz
NDYxQzdBMTZCRjAwMDQxMjkzIC8qIENvcmVWaWRlb1NvZnRMaW5rLmggKi8sCiAJCQkJRjQ2MkU3
OUYyNDJBREEzQzAwMjA0REREIC8qIERyYWdEYXRhQ29jb2EubW0gKi8sCkBAIC0zMzkxOSw2ICsz
MzkyNSw3IEBACiAJCQkJM0Y4MDIwMzcxRTlFNDdDNTAwREVDNjFEIC8qIENvcmVBdWRpb0NhcHR1
cmVEZXZpY2VNYW5hZ2VyLmggaW4gSGVhZGVycyAqLywKIAkJCQk0MUZDQ0MzQjI3NDY2NzU2MDA4
OTJBRDYgLyogQ29yZUF1ZGlvQ2FwdHVyZVNvdXJjZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMDdB
RkY0MjIxRUZCMTQ0OTAwQjU0NUIzIC8qIENvcmVBdWRpb0NhcHR1cmVTb3VyY2VJT1MuaCBpbiBI
ZWFkZXJzICovLAorCQkJCTQ2ODhFOTgwMjdCNkI0NTAwMDU2N0NEMiAvKiBDb3JlTG9jYXRpb25H
ZW9sb2NhdGlvblByb3ZpZGVyLmggaW4gSGVhZGVycyAqLywKIAkJCQlDRDdEMzM0ODFDN0ExNkJG
MDAwNDEyOTMgLyogQ29yZVZpZGVvU29mdExpbmsuaCBpbiBIZWFkZXJzICovLAogCQkJCTg2MkYx
MjlFMThDMTU3NkYwMDVDNTRBRiAvKiBDb3VudGVkVXNlckFjdGl2aXR5LmggaW4gSGVhZGVycyAq
LywKIAkJCQlBODBFNkQwNDBBMTk4OUNBMDA3RkI4QzUgLyogQ291bnRlci5oIGluIEhlYWRlcnMg
Ki8sCkBAIC0zODY5MiwxMyArMzg2OTksMTQgQEAKIAkJCQk1MThGNEZGNjE5NENBNEU2MDA4MUJB
QUUgLyogR2FtZXBhZEJ1dHRvbi5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk1MTZDNjIyMDE5NTBE
NDg3MDAzMzdFNzUgLyogR2FtZXBhZEV2ZW50LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTUxQTlE
OUU5MTk1QjkzMUYwMDFCMkI1QyAvKiBHYW1lcGFkTWFuYWdlci5jcHAgaW4gU291cmNlcyAqLywK
LQkJCQk4Mzc5NjRDRjFGOERCNjlEMDAyMThFQTAgLyogR2VvbG9jYXRpb25Qb3NpdGlvbkRhdGFJ
T1MubW0gaW4gU291cmNlcyAqLywKKwkJCQk4Mzc5NjRDRjFGOERCNjlEMDAyMThFQTAgLyogR2Vv
bG9jYXRpb25Qb3NpdGlvbkRhdGFDb2NvYS5tbSBpbiBTb3VyY2VzICovLAogCQkJCTZFNzJGNTRF
MjI5RENEMTAwMEIzRTE1MSAvKiBHcmFwaGljc0NvbnRleHRHTEFOR0xFLmNwcCBpbiBTb3VyY2Vz
ICovLAogCQkJCTdDM0U1MTBCMThERjhGMzUwMEMxMTJGNyAvKiBIVE1MQ29udmVydGVyLm1tIGlu
IFNvdXJjZXMgKi8sCiAJCQkJQThEMDZCM0EwQTI2NURDRDAwNUU3MjAzIC8qIEhUTUxOYW1lcy5j
cHAgaW4gU291cmNlcyAqLywKIAkJCQkxQUM5MDBDMzE5NDNDMEZDMDA4NjI1QjUgLyogSFRUUEhl
YWRlck5hbWVzLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUNEMjdBRTUxMjJBOTg2ODcwMDk0N0ZG
OSAvKiBJbWFnZVJvdGF0aW9uU2Vzc2lvblZULm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJMDcwRTJE
MEYyNkYyNTA4OTAwMTRBQUMzIC8qIEluYmFuZENoYXB0ZXJUcmFja1ByaXZhdGVBVkZPYmpDLm1t
IGluIFNvdXJjZXMgKi8sCisJCQkJNDZDQTk0MzEyN0I4Njk1ODAwRjRGNUZGIC8qIEluYmFuZFRl
eHRUcmFja1ByaXZhdGVBVkZPYmpDLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJQ0QwNjNGODIxRTIz
RkE4OTAwODEyQkUzIC8qIEluaXREYXRhUmVnaXN0cnkuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJ
OTM1QzQ3NzAwOUFDNEQ3MzAwQTZBQUI0IC8qIEtleUV2ZW50TWFjLm1tIGluIFNvdXJjZXMgKi8s
CiAJCQkJQ0RBOThFMEIxNjAzQ0Q2MDAwRkVBM0IxIC8qIExlZ2FjeUNETS5jcHAgaW4gU291cmNl
cyAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL1BhZ2UuY3BwCmluZGV4IDZhODVlODQzZDhiYmUzZDE5MmQ5N2Y0OTZiZDdl
YjQ1NDc0OWRiYTQuLmVmZTBlMzgwNmRjODQ4MDMwZDIyYjlkOTAyOTE2NzkzMzg1YmZkYWEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcGFnZS9QYWdlLmNwcApAQCAtNjksNiArNjksNyBAQAogI2luY2x1ZGUgIkZyYW1lVHJlZS5o
IgogI2luY2x1ZGUgIkZyYW1lVmlldy5oIgogI2luY2x1ZGUgIkZ1bGxzY3JlZW5NYW5hZ2VyLmgi
CisjaW5jbHVkZSAiR2VvbG9jYXRpb25Db250cm9sbGVyLmgiCiAjaW5jbHVkZSAiSFRNTEVsZW1l
bnQuaCIKICNpbmNsdWRlICJIVE1MSW1hZ2VFbGVtZW50LmgiCiAjaW5jbHVkZSAiSFRNTE1lZGlh
RWxlbWVudC5oIgpAQCAtMTMzMiw2ICsxMzMzLDExIEBAIHZvaWQgUGFnZTo6ZGlkQ29tbWl0TG9h
ZCgpCiAgICAgcmVzZXRUZXh0UmVjb2duaXRpb25SZXN1bHRzKCk7CiAgICAgcmVzZXRJbWFnZUFu
YWx5c2lzUXVldWUoKTsKICNlbmRpZgorCisjaWYgRU5BQkxFKEdFT0xPQ0FUSU9OKQorICAgIGlm
IChhdXRvKiBnZW9sb2NhdGlvbkNvbnRyb2xsZXIgPSBHZW9sb2NhdGlvbkNvbnRyb2xsZXI6OmZy
b20odGhpcykpCisgICAgICAgIGdlb2xvY2F0aW9uQ29udHJvbGxlci0+ZGlkTmF2aWdhdGVQYWdl
KCk7CisjZW5kaWYKIH0KIAogdm9pZCBQYWdlOjpkaWRGaW5pc2hMb2FkKCkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL0NvcmVMb2NhdGlvbkdlb2xvY2F0aW9uUHJv
dmlkZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL0NvcmVMb2NhdGlvbkdlb2xv
Y2F0aW9uUHJvdmlkZXIuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5jNTI0NmM4ODRhY2Y4ZjY5ZmNiOGY4YWM0YWNj
N2Y0Y2RlNjQ1Y2VkCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Y29jb2EvQ29yZUxvY2F0aW9uR2VvbG9jYXRpb25Qcm92aWRlci5oCkBAIC0wLDAgKzEsNjcgQEAK
Ky8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlz
dHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5D
LiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhF
IElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwg
QVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJF
TUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERB
VEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgPHd0Zi9Db21wbGV0aW9uSGFu
ZGxlci5oPgorI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CisjaW5jbHVkZSA8d3RmL1JldGFpblB0
ci5oPgorCitPQkpDX0NMQVNTIFdlYkNMTG9jYXRpb25NYW5hZ2VyOworCituYW1lc3BhY2UgV2Vi
Q29yZSB7CisKK2NsYXNzIEdlb2xvY2F0aW9uUG9zaXRpb25EYXRhOworY2xhc3MgUmVnaXN0cmFi
bGVEb21haW47CisKK2NsYXNzIFdFQkNPUkVfRVhQT1JUIENvcmVMb2NhdGlvbkdlb2xvY2F0aW9u
UHJvdmlkZXIgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOworcHVibGljOgorICAgIGNs
YXNzIENsaWVudCB7CisgICAgcHVibGljOgorICAgICAgICB2aXJ0dWFsIH5DbGllbnQoKSB7IH0K
KworICAgICAgICB2aXJ0dWFsIHZvaWQgZ2VvbG9jYXRpb25BdXRob3JpemF0aW9uR3JhbnRlZChj
b25zdCBTdHJpbmcmIC8qd2Vic2l0ZUlkZW50aWZpZXIqLykgeyB9CisgICAgICAgIHZpcnR1YWwg
dm9pZCBnZW9sb2NhdGlvbkF1dGhvcml6YXRpb25EZW5pZWQoY29uc3QgU3RyaW5nJiAvKndlYnNp
dGVJZGVudGlmaWVyKi8pIHsgfQorICAgICAgICB2aXJ0dWFsIHZvaWQgcG9zaXRpb25DaGFuZ2Vk
KGNvbnN0IFN0cmluZyYgd2Vic2l0ZUlkZW50aWZpZXIsIEdlb2xvY2F0aW9uUG9zaXRpb25EYXRh
JiYpID0gMDsKKyAgICAgICAgdmlydHVhbCB2b2lkIGVycm9yT2NjdXJyZWQoY29uc3QgU3RyaW5n
JiB3ZWJzaXRlSWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiBlcnJvck1lc3NhZ2UpID0gMDsKKyAg
ICAgICAgdmlydHVhbCB2b2lkIHJlc2V0R2VvbG9jYXRpb24oY29uc3QgU3RyaW5nJiB3ZWJzaXRl
SWRlbnRpZmllcikgPSAwOworICAgIH07CisKKyAgICBDb3JlTG9jYXRpb25HZW9sb2NhdGlvblBy
b3ZpZGVyKGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiwgQ2xpZW50Jik7CisgICAgfkNvcmVMb2Nh
dGlvbkdlb2xvY2F0aW9uUHJvdmlkZXIoKTsKKworICAgIHZvaWQgc3RhcnQoKTsKKyAgICB2b2lk
IHN0b3AoKTsKKworICAgIHZvaWQgc2V0RW5hYmxlSGlnaEFjY3VyYWN5KGJvb2wpOworCisgICAg
c3RhdGljIHZvaWQgcmVxdWVzdEF1dGhvcml6YXRpb24oY29uc3QgUmVnaXN0cmFibGVEb21haW4m
LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmKTsKKworcHJpdmF0ZToKKyAgICBSZXRh
aW5QdHI8V2ViQ0xMb2NhdGlvbk1hbmFnZXI+IG1fbG9jYXRpb25NYW5hZ2VyOworfTsKKworfSAv
LyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Y29jb2EvQ29yZUxvY2F0aW9uR2VvbG9jYXRpb25Qcm92aWRlci5tbSBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2NvY29hL0NvcmVMb2NhdGlvbkdlb2xvY2F0aW9uUHJvdmlkZXIubW0KbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uMzczNDJmNzU2MTE3NWYwOGFiZDM0YzU3NGYwMjg3NmU1ZDQ0NTVkYgotLS0gL2Rldi9u
dWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL0NvcmVMb2NhdGlvbkdlb2xv
Y2F0aW9uUHJvdmlkZXIubW0KQEAgLTAsMCArMSwyNjggQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMp
IDIwMjIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAor
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIu
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9S
UyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09O
VFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJV
U0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZ
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW1wb3J0
ICJjb25maWcuaCIKKyNpbXBvcnQgIkNvcmVMb2NhdGlvbkdlb2xvY2F0aW9uUHJvdmlkZXIuaCIK
KworI2ltcG9ydCAiR2VvbG9jYXRpb25Qb3NpdGlvbkRhdGEuaCIKKyNpbXBvcnQgIlJlZ2lzdHJh
YmxlRG9tYWluLmgiCisjaW1wb3J0IDxDb3JlTG9jYXRpb24vQ0xMb2NhdGlvbk1hbmFnZXJEZWxl
Z2F0ZS5oPgorI2ltcG9ydCA8Q29yZUxvY2F0aW9uL0NvcmVMb2NhdGlvbi5oPgorI2ltcG9ydCA8
d3RmL1NvZnRMaW5raW5nLmg+CisKKyNpZiBVU0UoQVBQTEVfSU5URVJOQUxfU0RLKQorI2ltcG9y
dCA8Q29yZUxvY2F0aW9uL0NMTG9jYXRpb25NYW5hZ2VyX1ByaXZhdGUuaD4KKyNlbmRpZgorCitT
T0ZUX0xJTktfRlJBTUVXT1JLKENvcmVMb2NhdGlvbikKKworU09GVF9MSU5LX0NMQVNTKENvcmVM
b2NhdGlvbiwgQ0xMb2NhdGlvbk1hbmFnZXIpCitTT0ZUX0xJTktfQ0xBU1MoQ29yZUxvY2F0aW9u
LCBDTExvY2F0aW9uKQorCitTT0ZUX0xJTktfQ09OU1RBTlQoQ29yZUxvY2F0aW9uLCBrQ0xMb2Nh
dGlvbkFjY3VyYWN5QmVzdCwgZG91YmxlKQorU09GVF9MSU5LX0NPTlNUQU5UKENvcmVMb2NhdGlv
biwga0NMTG9jYXRpb25BY2N1cmFjeUh1bmRyZWRNZXRlcnMsIGRvdWJsZSkKKworI2RlZmluZSBr
Q0xMb2NhdGlvbkFjY3VyYWN5QmVzdCBnZXRrQ0xMb2NhdGlvbkFjY3VyYWN5QmVzdCgpCisjZGVm
aW5lIGtDTExvY2F0aW9uQWNjdXJhY3lIdW5kcmVkTWV0ZXJzIGdldGtDTExvY2F0aW9uQWNjdXJh
Y3lIdW5kcmVkTWV0ZXJzKCkKKworc3RhdGljIGJvb2wgaXNBdXRob3JpemF0aW9uR3JhbnRlZChD
TEF1dGhvcml6YXRpb25TdGF0dXMgYXV0aG9yaXphdGlvblN0YXR1cykKK3sKKyAgICByZXR1cm4g
YXV0aG9yaXphdGlvblN0YXR1cyA9PSBrQ0xBdXRob3JpemF0aW9uU3RhdHVzQXV0aG9yaXplZEFs
d2F5cworI2lmIEhBVkUoQ09SRV9MT0NBVElPTl9BVVRIT1JJWkVEX1dIRU5fSU5fVVNFKQorICAg
ICAgICB8fCBhdXRob3JpemF0aW9uU3RhdHVzID09IGtDTEF1dGhvcml6YXRpb25TdGF0dXNBdXRo
b3JpemVkV2hlbkluVXNlCisjZW5kaWYKKyAgICAgICAgOworfQorCitAaW50ZXJmYWNlIFdlYkNM
TG9jYXRpb25NYW5hZ2VyIDogTlNPYmplY3Q8Q0xMb2NhdGlvbk1hbmFnZXJEZWxlZ2F0ZT4KK0Bl
bmQKKworQGltcGxlbWVudGF0aW9uIFdlYkNMTG9jYXRpb25NYW5hZ2VyIHsKKyAgICBSZXRhaW5Q
dHI8Q0xMb2NhdGlvbk1hbmFnZXI+IF9sb2NhdGlvbk1hbmFnZXI7CisgICAgV2ViQ29yZTo6Q29y
ZUxvY2F0aW9uR2VvbG9jYXRpb25Qcm92aWRlcjo6Q2xpZW50KiBfY2xpZW50OworICAgIFN0cmlu
ZyBfd2Vic2l0ZUlkZW50aWZpZXI7CisgICAgQk9PTCBfaXNXYWl0aW5nRm9yQXV0aG9yaXphdGlv
bjsKK30KKworLSAoaW5zdGFuY2V0eXBlKWluaXRXaXRoV2Vic2l0ZUlkZW50aWZpZXI6KGNvbnN0
IFN0cmluZyYpd2Vic2l0ZUlkZW50aWZpZXIgY2xpZW50OihXZWJDb3JlOjpDb3JlTG9jYXRpb25H
ZW9sb2NhdGlvblByb3ZpZGVyOjpDbGllbnQmKWNsaWVudAoreworICAgIHNlbGYgPSBbc3VwZXIg
aW5pdF07CisgICAgaWYgKCFzZWxmKQorICAgICAgICByZXR1cm4gbmlsOworCisgICAgLy8gRklY
TUU6IENhbGwgaW5pdFdpdGhXZWJzaXRlSWRlbnRpZmllciBhbmQgcGFzcyB0aGUgd2Vic2l0ZUlk
ZW50aWZpZXIgd2hlbiBIQVZFKENPUkVfTE9DQVRJT05fV0VCU0lURV9JREVOVElGSUVSUykgYW5k
ICF3ZWJzaXRlSWRlbnRpZmllci5pc0VtcHR5KCkgb25jZSA8cmRhcjovLzg4ODM0MzAxPiBpcyBm
aXhlZC4KKyAgICBVTlVTRURfUEFSQU0od2Vic2l0ZUlkZW50aWZpZXIpOworICAgIF9sb2NhdGlv
bk1hbmFnZXIgPSBhZG9wdE5TKFthbGxvY0NMTG9jYXRpb25NYW5hZ2VySW5zdGFuY2UoKSBpbml0
XSk7CisgICAgX2NsaWVudCA9ICZjbGllbnQ7CisgICAgX3dlYnNpdGVJZGVudGlmaWVyID0gd2Vi
c2l0ZUlkZW50aWZpZXI7CisgICAgW19sb2NhdGlvbk1hbmFnZXIgc2V0RGVsZWdhdGU6c2VsZl07
CisgICAgcmV0dXJuIHNlbGY7Cit9CisKKy0gKHZvaWQpZGVhbGxvYworeworICAgIFtfbG9jYXRp
b25NYW5hZ2VyIHNldERlbGVnYXRlOm5pbF07CisgICAgW3N1cGVyIGRlYWxsb2NdOworfQorCist
ICh2b2lkKXN0YXJ0Cit7CisgICAgaWYgKCFbZ2V0Q0xMb2NhdGlvbk1hbmFnZXJDbGFzcygpIGxv
Y2F0aW9uU2VydmljZXNFbmFibGVkXSB8fCAhaXNBdXRob3JpemF0aW9uR3JhbnRlZChbX2xvY2F0
aW9uTWFuYWdlciBhdXRob3JpemF0aW9uU3RhdHVzXSkpIHsKKyAgICAgICAgW19sb2NhdGlvbk1h
bmFnZXIgc3RvcFVwZGF0aW5nTG9jYXRpb25dOworICAgICAgICBfY2xpZW50LT5yZXNldEdlb2xv
Y2F0aW9uKF93ZWJzaXRlSWRlbnRpZmllcik7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAg
ICBbX2xvY2F0aW9uTWFuYWdlciBzdGFydFVwZGF0aW5nTG9jYXRpb25dOworfQorCistICh2b2lk
KXN0b3AKK3sKKyAgICBbX2xvY2F0aW9uTWFuYWdlciBzdG9wVXBkYXRpbmdMb2NhdGlvbl07Cit9
CisKKy0gKHZvaWQpc2V0RW5hYmxlSGlnaEFjY3VyYWN5OihCT09MKWhpZ2hBY2N1cmFjeUVuYWJs
ZWQKK3sKKyAgICBbX2xvY2F0aW9uTWFuYWdlciBzZXREZXNpcmVkQWNjdXJhY3k6aGlnaEFjY3Vy
YWN5RW5hYmxlZCA/IGtDTExvY2F0aW9uQWNjdXJhY3lCZXN0IDoga0NMTG9jYXRpb25BY2N1cmFj
eUh1bmRyZWRNZXRlcnNdOworfQorCistICh2b2lkKXJlcXVlc3RHZW9sb2NhdGlvbkF1dGhvcml6
YXRpb24KK3sKKyAgICBpZiAoIVtnZXRDTExvY2F0aW9uTWFuYWdlckNsYXNzKCkgbG9jYXRpb25T
ZXJ2aWNlc0VuYWJsZWRdKSB7CisgICAgICAgIF9jbGllbnQtPmdlb2xvY2F0aW9uQXV0aG9yaXph
dGlvbkRlbmllZChfd2Vic2l0ZUlkZW50aWZpZXIpOworICAgICAgICByZXR1cm47CisgICAgfQor
CisgICAgc3dpdGNoIChbX2xvY2F0aW9uTWFuYWdlciBhdXRob3JpemF0aW9uU3RhdHVzXSkgewor
ICAgIGNhc2Uga0NMQXV0aG9yaXphdGlvblN0YXR1c05vdERldGVybWluZWQ6IHsKKyAgICAgICAg
aWYgKCFfaXNXYWl0aW5nRm9yQXV0aG9yaXphdGlvbikgeworICAgICAgICAgICAgX2lzV2FpdGlu
Z0ZvckF1dGhvcml6YXRpb24gPSBZRVM7CisgICAgICAgICAgICBbX2xvY2F0aW9uTWFuYWdlciBy
ZXF1ZXN0V2hlbkluVXNlQXV0aG9yaXphdGlvbl07CisgICAgICAgIH0KKyAgICAgICAgYnJlYWs7
CisgICAgfQorICAgIGNhc2Uga0NMQXV0aG9yaXphdGlvblN0YXR1c0F1dGhvcml6ZWRBbHdheXM6
CisjaWYgSEFWRShDT1JFX0xPQ0FUSU9OX0FVVEhPUklaRURfV0hFTl9JTl9VU0UpCisgICAgY2Fz
ZSBrQ0xBdXRob3JpemF0aW9uU3RhdHVzQXV0aG9yaXplZFdoZW5JblVzZToKKyNlbmRpZgorICAg
ICAgICBfY2xpZW50LT5nZW9sb2NhdGlvbkF1dGhvcml6YXRpb25HcmFudGVkKF93ZWJzaXRlSWRl
bnRpZmllcik7CisgICAgICAgIGJyZWFrOworICAgIGNhc2Uga0NMQXV0aG9yaXphdGlvblN0YXR1
c1Jlc3RyaWN0ZWQ6CisgICAgY2FzZSBrQ0xBdXRob3JpemF0aW9uU3RhdHVzRGVuaWVkOgorICAg
ICAgICBfY2xpZW50LT5nZW9sb2NhdGlvbkF1dGhvcml6YXRpb25EZW5pZWQoX3dlYnNpdGVJZGVu
dGlmaWVyKTsKKyAgICAgICAgYnJlYWs7CisgICAgfQorfQorCistICh2b2lkKWxvY2F0aW9uTWFu
YWdlckRpZENoYW5nZUF1dGhvcml6YXRpb246KENMTG9jYXRpb25NYW5hZ2VyICopbWFuYWdlcgor
eworICAgIGF1dG8gc3RhdHVzID0gW19sb2NhdGlvbk1hbmFnZXIgYXV0aG9yaXphdGlvblN0YXR1
c107CisgICAgaWYgKF9pc1dhaXRpbmdGb3JBdXRob3JpemF0aW9uKSB7CisgICAgICAgIHN3aXRj
aCAoc3RhdHVzKSB7CisgICAgICAgIGNhc2Uga0NMQXV0aG9yaXphdGlvblN0YXR1c05vdERldGVy
bWluZWQ6CisgICAgICAgICAgICAvLyBUaGlzIGNhbiBoYXBwZW4gYWZ0ZXIgcmVzdW1lIGlmIHRo
ZSB1c2VyIGhhcyBzdGlsbCBub3QgYW5zd2VyZWQgdGhlIGRpYWxvZy4gV2UganVzdCBoYXZlIHRv
IHdhaXQgZm9yIHRoZSBwZXJtaXNzaW9uLgorICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNh
c2Uga0NMQXV0aG9yaXphdGlvblN0YXR1c0RlbmllZDoKKyAgICAgICAgY2FzZSBrQ0xBdXRob3Jp
emF0aW9uU3RhdHVzUmVzdHJpY3RlZDoKKyAgICAgICAgICAgIF9pc1dhaXRpbmdGb3JBdXRob3Jp
emF0aW9uID0gTk87CisgICAgICAgICAgICBfY2xpZW50LT5nZW9sb2NhdGlvbkF1dGhvcml6YXRp
b25EZW5pZWQoX3dlYnNpdGVJZGVudGlmaWVyKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAg
ICBjYXNlIGtDTEF1dGhvcml6YXRpb25TdGF0dXNBdXRob3JpemVkQWx3YXlzOgorI2lmIEhBVkUo
Q09SRV9MT0NBVElPTl9BVVRIT1JJWkVEX1dIRU5fSU5fVVNFKQorICAgICAgICBjYXNlIGtDTEF1
dGhvcml6YXRpb25TdGF0dXNBdXRob3JpemVkV2hlbkluVXNlOgorI2VuZGlmCisgICAgICAgICAg
ICBfaXNXYWl0aW5nRm9yQXV0aG9yaXphdGlvbiA9IE5POworICAgICAgICAgICAgX2NsaWVudC0+
Z2VvbG9jYXRpb25BdXRob3JpemF0aW9uR3JhbnRlZChfd2Vic2l0ZUlkZW50aWZpZXIpOworICAg
ICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKyAgICB9IGVsc2UgeworICAgICAgICBpZiAoc3Rh
dHVzID09IGtDTEF1dGhvcml6YXRpb25TdGF0dXNEZW5pZWQgfHwgc3RhdHVzID09IGtDTEF1dGhv
cml6YXRpb25TdGF0dXNSZXN0cmljdGVkKSB7CisgICAgICAgICAgICBbX2xvY2F0aW9uTWFuYWdl
ciBzdG9wVXBkYXRpbmdMb2NhdGlvbl07CisgICAgICAgICAgICBfY2xpZW50LT5yZXNldEdlb2xv
Y2F0aW9uKF93ZWJzaXRlSWRlbnRpZmllcik7CisgICAgICAgIH0KKyAgICB9Cit9CisKKy0gKHZv
aWQpbG9jYXRpb25NYW5hZ2VyOihDTExvY2F0aW9uTWFuYWdlciAqKW1hbmFnZXIgZGlkVXBkYXRl
TG9jYXRpb25zOihOU0FycmF5ICopbG9jYXRpb25zCit7CisgICAgVU5VU0VEX1BBUkFNKG1hbmFn
ZXIpOworICAgIGZvciAoQ0xMb2NhdGlvbiAqbG9jYXRpb24gaW4gbG9jYXRpb25zKQorICAgICAg
ICBfY2xpZW50LT5wb3NpdGlvbkNoYW5nZWQoX3dlYnNpdGVJZGVudGlmaWVyLCBXZWJDb3JlOjpH
ZW9sb2NhdGlvblBvc2l0aW9uRGF0YSB7IGxvY2F0aW9uIH0pOworfQorCistICh2b2lkKWxvY2F0
aW9uTWFuYWdlcjooQ0xMb2NhdGlvbk1hbmFnZXIgKiltYW5hZ2VyIGRpZEZhaWxXaXRoRXJyb3I6
KE5TRXJyb3IgKillcnJvcgoreworICAgIEFTU0VSVChlcnJvcik7CisgICAgVU5VU0VEX1BBUkFN
KG1hbmFnZXIpOworCisgICAgaWYgKFtlcnJvciBjb2RlXSA9PSBrQ0xFcnJvckRlbmllZCkgewor
ICAgICAgICAvLyBJZ25vcmUgdGhlIGVycm9yIGhlcmUgYW5kIGxldCBsb2NhdGlvbk1hbmFnZXI6
ZGlkQ2hhbmdlQXV0aG9yaXphdGlvblN0YXR1czogaGFuZGxlIHRoZSBwZXJtaXNzaW9uLgorICAg
ICAgICByZXR1cm47CisgICAgfQorCisgICAgTlNTdHJpbmcgKmVycm9yTWVzc2FnZSA9IFtlcnJv
ciBsb2NhbGl6ZWREZXNjcmlwdGlvbl07CisgICAgX2NsaWVudC0+ZXJyb3JPY2N1cnJlZChfd2Vi
c2l0ZUlkZW50aWZpZXIsIGVycm9yTWVzc2FnZSk7Cit9CisKK0BlbmQKKworbmFtZXNwYWNlIFdl
YkNvcmUgeworCitDb3JlTG9jYXRpb25HZW9sb2NhdGlvblByb3ZpZGVyOjpDb3JlTG9jYXRpb25H
ZW9sb2NhdGlvblByb3ZpZGVyKGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiByZWdpc3RyYWJsZURv
bWFpbiwgQ2xpZW50JiBjbGllbnQpCisgICAgOiBtX2xvY2F0aW9uTWFuYWdlcihhZG9wdE5TKFtb
V2ViQ0xMb2NhdGlvbk1hbmFnZXIgYWxsb2NdIGluaXRXaXRoV2Vic2l0ZUlkZW50aWZpZXI6cmVn
aXN0cmFibGVEb21haW4uc3RyaW5nKCkgY2xpZW50OmNsaWVudF0pKQoreworICAgIC8vIFJlcXVl
c3QgcGVybWlzc2lvbiBmb3IgdGhlIGFwcCB0byB1c2UgZ2VvbG9jYXRpb24gKGlmIGl0IGRvZXNu
J3QgYWxyZWFkeSkuCisgICAgW21fbG9jYXRpb25NYW5hZ2VyIHJlcXVlc3RHZW9sb2NhdGlvbkF1
dGhvcml6YXRpb25dOworfQorCitDb3JlTG9jYXRpb25HZW9sb2NhdGlvblByb3ZpZGVyOjp+Q29y
ZUxvY2F0aW9uR2VvbG9jYXRpb25Qcm92aWRlcigpCit7CisgICAgW21fbG9jYXRpb25NYW5hZ2Vy
IHN0b3BdOworfQorCit2b2lkIENvcmVMb2NhdGlvbkdlb2xvY2F0aW9uUHJvdmlkZXI6OnN0YXJ0
KCkKK3sKKyAgICBbbV9sb2NhdGlvbk1hbmFnZXIgc3RhcnRdOworfQorCit2b2lkIENvcmVMb2Nh
dGlvbkdlb2xvY2F0aW9uUHJvdmlkZXI6OnN0b3AoKQoreworICAgIFttX2xvY2F0aW9uTWFuYWdl
ciBzdG9wXTsKK30KKwordm9pZCBDb3JlTG9jYXRpb25HZW9sb2NhdGlvblByb3ZpZGVyOjpzZXRF
bmFibGVIaWdoQWNjdXJhY3koYm9vbCBoaWdoQWNjdXJhY3lFbmFibGVkKQoreworICAgIFttX2xv
Y2F0aW9uTWFuYWdlciBzZXRFbmFibGVIaWdoQWNjdXJhY3k6aGlnaEFjY3VyYWN5RW5hYmxlZF07
Cit9CisKK2NsYXNzIEF1dGhvcml6YXRpb25DaGVja2VyIGZpbmFsIDogcHVibGljIFJlZkNvdW50
ZWQ8QXV0aG9yaXphdGlvbkNoZWNrZXI+LCBwdWJsaWMgQ29yZUxvY2F0aW9uR2VvbG9jYXRpb25Q
cm92aWRlcjo6Q2xpZW50IHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgUmVmPEF1dGhvcml6YXRpb25D
aGVja2VyPiBjcmVhdGUoKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgQXV0
aG9yaXphdGlvbkNoZWNrZXIpOworICAgIH0KKworICAgIHZvaWQgY2hlY2soY29uc3QgUmVnaXN0
cmFibGVEb21haW4mIHJlZ2lzdHJhYmxlRG9tYWluLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJv
b2wpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQorICAgIHsKKyAgICAgICAgbV9jb21wbGV0aW9uSGFu
ZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpOworICAgICAgICBtX3Byb3ZpZGVyID0g
bWFrZVVuaXF1ZTxDb3JlTG9jYXRpb25HZW9sb2NhdGlvblByb3ZpZGVyPihyZWdpc3RyYWJsZURv
bWFpbiwgKnRoaXMpOworICAgIH0KKworcHJpdmF0ZToKKyAgICBBdXRob3JpemF0aW9uQ2hlY2tl
cigpID0gZGVmYXVsdDsKKworICAgIHZvaWQgZ2VvbG9jYXRpb25BdXRob3JpemF0aW9uR3JhbnRl
ZChjb25zdCBTdHJpbmcmKSBmaW5hbAorICAgIHsKKyAgICAgICAgaWYgKG1fY29tcGxldGlvbkhh
bmRsZXIpCisgICAgICAgICAgICBtX2NvbXBsZXRpb25IYW5kbGVyKHRydWUpOworICAgIH0KKwor
ICAgIHZvaWQgZ2VvbG9jYXRpb25BdXRob3JpemF0aW9uRGVuaWVkKGNvbnN0IFN0cmluZyYpIGZp
bmFsCisgICAgeworICAgICAgICBpZiAobV9jb21wbGV0aW9uSGFuZGxlcikKKyAgICAgICAgICAg
IG1fY29tcGxldGlvbkhhbmRsZXIoZmFsc2UpOworICAgIH0KKworICAgIHZvaWQgcG9zaXRpb25D
aGFuZ2VkKGNvbnN0IFN0cmluZyYsIEdlb2xvY2F0aW9uUG9zaXRpb25EYXRhJiYpIGZpbmFsIHsg
fQorICAgIHZvaWQgZXJyb3JPY2N1cnJlZChjb25zdCBTdHJpbmcmLCBjb25zdCBTdHJpbmcmKSBm
aW5hbAorICAgIHsKKyAgICAgICAgaWYgKG1fY29tcGxldGlvbkhhbmRsZXIpCisgICAgICAgICAg
ICBtX2NvbXBsZXRpb25IYW5kbGVyKGZhbHNlKTsKKyAgICB9CisgICAgdm9pZCByZXNldEdlb2xv
Y2F0aW9uKGNvbnN0IFN0cmluZyYpIGZpbmFsIHsgfQorCisgICAgc3RkOjp1bmlxdWVfcHRyPENv
cmVMb2NhdGlvbkdlb2xvY2F0aW9uUHJvdmlkZXI+IG1fcHJvdmlkZXI7CisgICAgQ29tcGxldGlv
bkhhbmRsZXI8dm9pZChib29sKT4gbV9jb21wbGV0aW9uSGFuZGxlcjsKK307CisKK3ZvaWQgQ29y
ZUxvY2F0aW9uR2VvbG9jYXRpb25Qcm92aWRlcjo6cmVxdWVzdEF1dGhvcml6YXRpb24oY29uc3Qg
UmVnaXN0cmFibGVEb21haW4mIHJlZ2lzdHJhYmxlRG9tYWluLCBDb21wbGV0aW9uSGFuZGxlcjx2
b2lkKGJvb2wpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQoreworICAgIGF1dG8gYXV0aG9yaXphdGlv
bkNoZWNrZXIgPSBBdXRob3JpemF0aW9uQ2hlY2tlcjo6Y3JlYXRlKCk7CisgICAgYXV0aG9yaXph
dGlvbkNoZWNrZXItPmNoZWNrKHJlZ2lzdHJhYmxlRG9tYWluLCBbYXV0aG9yaXphdGlvbkNoZWNr
ZXIsIGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildKGJvb2wg
YXV0aG9yaXplZCkgbXV0YWJsZSB7CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKGF1dGhvcml6
ZWQpOworICAgIH0pOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL0dlb2xvY2F0aW9uQ2xpZW50TW9jay5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL0dlb2xvY2F0aW9uQ2xpZW50TW9jay5jcHAKaW5k
ZXggOWQ1ZWZjODNmMzRlYjE4ZDU5OWRjMTBjYWE4ZmMwY2EzOTlkYjBhMi4uZmE0MjA4MmU1MDU5
YTllY2YyNjRjYWFmNGMyNjUzMmY0YjJlNWQ3YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbW9jay9HZW9sb2NhdGlvbkNsaWVudE1vY2suY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL21vY2svR2VvbG9jYXRpb25DbGllbnRNb2NrLmNwcApAQCAtMTM2LDEwICsx
MzYsMTEgQEAgdm9pZCBHZW9sb2NhdGlvbkNsaWVudE1vY2s6Omdlb2xvY2F0aW9uRGVzdHJveWVk
KCkKICAgICBBU1NFUlQoIW1faXNBY3RpdmUpOwogfQogCi12b2lkIEdlb2xvY2F0aW9uQ2xpZW50
TW9jazo6c3RhcnRVcGRhdGluZyhjb25zdCBTdHJpbmcmIGF1dGhvcml6YXRpb25Ub2tlbikKK3Zv
aWQgR2VvbG9jYXRpb25DbGllbnRNb2NrOjpzdGFydFVwZGF0aW5nKGNvbnN0IFN0cmluZyYgYXV0
aG9yaXphdGlvblRva2VuLCBib29sIGVuYWJsZUhpZ2hBY2N1cmFjeSkKIHsKICAgICBBU1NFUlQo
IW1faXNBY3RpdmUpOwogICAgIFVOVVNFRF9QQVJBTShhdXRob3JpemF0aW9uVG9rZW4pOworICAg
IFVOVVNFRF9QQVJBTShlbmFibGVIaWdoQWNjdXJhY3kpOwogICAgIG1faXNBY3RpdmUgPSB0cnVl
OwogICAgIGFzeW5jVXBkYXRlQ29udHJvbGxlcigpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbW9jay9HZW9sb2NhdGlvbkNsaWVudE1vY2suaCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL21vY2svR2VvbG9jYXRpb25DbGllbnRNb2NrLmgKaW5kZXggMmZhNzVlMDU3
YTUzZDdlODE4Y2NmYWZlZTcwMjQzZGQ1NDgyMTg0NS4uZjhiYWMzOGI1YjZjY2M4Y2MwOGY4NzA3
MWViYzc1ZDY1YjMxMDY0MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9j
ay9HZW9sb2NhdGlvbkNsaWVudE1vY2suaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9t
b2NrL0dlb2xvY2F0aW9uQ2xpZW50TW9jay5oCkBAIC01OSw3ICs1OSw3IEBAIHB1YmxpYzoKIAog
ICAgIC8vIEdlb2xvY2F0aW9uQ2xpZW50CiAgICAgdm9pZCBnZW9sb2NhdGlvbkRlc3Ryb3llZCgp
IG92ZXJyaWRlOwotICAgIHZvaWQgc3RhcnRVcGRhdGluZyhjb25zdCBTdHJpbmcmIGF1dGhvcml6
YXRpb25Ub2tlbikgb3ZlcnJpZGU7CisgICAgdm9pZCBzdGFydFVwZGF0aW5nKGNvbnN0IFN0cmlu
ZyYgYXV0aG9yaXphdGlvblRva2VuLCBib29sIGVuYWJsZUhpZ2hBY2N1cmFjeSkgb3ZlcnJpZGU7
CiAgICAgdm9pZCBzdG9wVXBkYXRpbmcoKSBvdmVycmlkZTsKICAgICB2b2lkIHNldEVuYWJsZUhp
Z2hBY2N1cmFjeShib29sKSBvdmVycmlkZTsKICAgICBzdGQ6Om9wdGlvbmFsPEdlb2xvY2F0aW9u
UG9zaXRpb25EYXRhPiBsYXN0UG9zaXRpb24oKSBvdmVycmlkZTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvU291cmNlc0NvY29hLnR4dCBiL1NvdXJjZS9XZWJLaXQvU291cmNlc0NvY29hLnR4
dAppbmRleCBmZTUwNmY3MTMzNGFkNTQ2ZWJiYWIwNjQxY2IzNzFjMjk5ZGIyNmNhLi5jOTA3NDZm
ZDdjZDNlYTM5OGQzZGMyYjIwZDRkNjgwODY5MWJlYmU3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1NvdXJjZXNDb2NvYS50eHQKKysrIGIvU291cmNlL1dlYktpdC9Tb3VyY2VzQ29jb2EudHh0
CkBAIC00MjYsNiArNDI2LDcgQEAgVUlQcm9jZXNzL0NvY29hL1VJUmVtb3RlT2JqZWN0UmVnaXN0
cnkuY3BwCiBVSVByb2Nlc3MvQ29jb2EvVXNlck1lZGlhQ2FwdHVyZU1hbmFnZXJQcm94eS5jcHAK
IFVJUHJvY2Vzcy9Db2NvYS9Vc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXJQcm94eS5t
bQogVUlQcm9jZXNzL0NvY29hL1ZpZGVvRnVsbHNjcmVlbk1hbmFnZXJQcm94eS5tbQorVUlQcm9j
ZXNzL0NvY29hL1dlYkdlb2xvY2F0aW9uTWFuYWdlclByb3h5Q29jb2EuY3BwCiBVSVByb2Nlc3Mv
Q29jb2EvV2ViUGFnZVByb3h5Q29jb2EubW0KIFVJUHJvY2Vzcy9Db2NvYS9XZWJQYXN0ZWJvYXJk
UHJveHlDb2NvYS5tbQogVUlQcm9jZXNzL0NvY29hL1dlYlByZWZlcmVuY2VzQ29jb2EubW0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dlYkdlb2xvY2F0aW9uTWFu
YWdlclByb3h5Q29jb2EuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV2ViR2Vv
bG9jYXRpb25NYW5hZ2VyUHJveHlDb2NvYS5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMjczMTI3ZGQ1YWE1NjYy
NDE0MjBiOWE0Nzk5ZjEwMjI5MWJkOTQ5MQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0NvY29hL1dlYkdlb2xvY2F0aW9uTWFuYWdlclByb3h5Q29jb2EuY3BwCkBA
IC0wLDAgKzEsNzUgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjIgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUg
bWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBB
TlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4g
Tk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExB
UlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVk
ZSAiV2ViR2VvbG9jYXRpb25NYW5hZ2VyUHJveHkuaCIKKworI2luY2x1ZGUgIldlYkdlb2xvY2F0
aW9uTWFuYWdlck1lc3NhZ2VzLmgiCisKK25hbWVzcGFjZSBXZWJLaXQgeworCisvLyBGSVhNRTog
VGhpcyBzaG91bGQgYmUgdXNlZCBieSBhbGwgQ29jb2EgcG9ydHMKKyNpZiBQTEFURk9STShJT1Nf
RkFNSUxZKQorCit2b2lkIFdlYkdlb2xvY2F0aW9uTWFuYWdlclByb3h5Ojpwb3NpdGlvbkNoYW5n
ZWQoY29uc3QgU3RyaW5nJiB3ZWJzaXRlSWRlbnRpZmllciwgV2ViQ29yZTo6R2VvbG9jYXRpb25Q
b3NpdGlvbkRhdGEmJiBwb3NpdGlvbikKK3sKKyAgICBhdXRvIHJlZ2lzdHJhYmxlRG9tYWluID0g
V2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW46OnVuY2hlY2tlZENyZWF0ZUZyb21SZWdpc3RyYWJs
ZURvbWFpblN0cmluZyh3ZWJzaXRlSWRlbnRpZmllcik7CisgICAgYXV0byBpdCA9IG1fcGVyRG9t
YWluRGF0YS5maW5kKHJlZ2lzdHJhYmxlRG9tYWluKTsKKyAgICBpZiAoaXQgPT0gbV9wZXJEb21h
aW5EYXRhLmVuZCgpKQorICAgICAgICByZXR1cm47CisKKyAgICBhdXRvJiBwZXJEb21haW5EYXRh
ID0gKml0LT52YWx1ZTsKKyAgICBwZXJEb21haW5EYXRhLmxhc3RQb3NpdGlvbiA9IFdURk1vdmUo
cG9zaXRpb24pOworICAgIGZvciAoYXV0byBjb25uZWN0aW9uSUQgOiBwZXJEb21haW5EYXRhLndh
dGNoZXJzKQorICAgICAgICBJUEM6OkNvbm5lY3Rpb246OnNlbmQoY29ubmVjdGlvbklELCBNZXNz
YWdlczo6V2ViR2VvbG9jYXRpb25NYW5hZ2VyOjpEaWRDaGFuZ2VQb3NpdGlvbihyZWdpc3RyYWJs
ZURvbWFpbiwgcGVyRG9tYWluRGF0YS5sYXN0UG9zaXRpb24udmFsdWUoKSksIDApOworfQorCit2
b2lkIFdlYkdlb2xvY2F0aW9uTWFuYWdlclByb3h5OjplcnJvck9jY3VycmVkKGNvbnN0IFN0cmlu
ZyYgd2Vic2l0ZUlkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgZXJyb3JNZXNzYWdlKQoreworICAg
IGF1dG8gcmVnaXN0cmFibGVEb21haW4gPSBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbjo6dW5j
aGVja2VkQ3JlYXRlRnJvbVJlZ2lzdHJhYmxlRG9tYWluU3RyaW5nKHdlYnNpdGVJZGVudGlmaWVy
KTsKKyAgICBhdXRvIGl0ID0gbV9wZXJEb21haW5EYXRhLmZpbmQocmVnaXN0cmFibGVEb21haW4p
OworICAgIGlmIChpdCA9PSBtX3BlckRvbWFpbkRhdGEuZW5kKCkpCisgICAgICAgIHJldHVybjsK
KworICAgIGF1dG8mIHBlckRvbWFpbkRhdGEgPSAqaXQtPnZhbHVlOworICAgIGZvciAoYXV0byBj
b25uZWN0aW9uSUQgOiBwZXJEb21haW5EYXRhLndhdGNoZXJzKQorICAgICAgICBJUEM6OkNvbm5l
Y3Rpb246OnNlbmQoY29ubmVjdGlvbklELCBNZXNzYWdlczo6V2ViR2VvbG9jYXRpb25NYW5hZ2Vy
OjpEaWRGYWlsVG9EZXRlcm1pbmVQb3NpdGlvbihyZWdpc3RyYWJsZURvbWFpbiwgZXJyb3JNZXNz
YWdlKSwgMCk7Cit9CisKK3ZvaWQgV2ViR2VvbG9jYXRpb25NYW5hZ2VyUHJveHk6OnJlc2V0R2Vv
bG9jYXRpb24oY29uc3QgU3RyaW5nJiB3ZWJzaXRlSWRlbnRpZmllcikKK3sKKyAgICBhdXRvIHJl
Z2lzdHJhYmxlRG9tYWluID0gV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW46OnVuY2hlY2tlZENy
ZWF0ZUZyb21SZWdpc3RyYWJsZURvbWFpblN0cmluZyh3ZWJzaXRlSWRlbnRpZmllcik7CisgICAg
YXV0byBpdCA9IG1fcGVyRG9tYWluRGF0YS5maW5kKHJlZ2lzdHJhYmxlRG9tYWluKTsKKyAgICBp
ZiAoaXQgPT0gbV9wZXJEb21haW5EYXRhLmVuZCgpKQorICAgICAgICByZXR1cm47CisKKyAgICBh
dXRvJiBwZXJEb21haW5EYXRhID0gKml0LT52YWx1ZTsKKyAgICBmb3IgKGF1dG8gY29ubmVjdGlv
bklEIDogcGVyRG9tYWluRGF0YS53YXRjaGVycykKKyAgICAgICAgSVBDOjpDb25uZWN0aW9uOjpz
ZW5kKGNvbm5lY3Rpb25JRCwgTWVzc2FnZXM6OldlYkdlb2xvY2F0aW9uTWFuYWdlcjo6UmVzZXRQ
ZXJtaXNzaW9ucyhyZWdpc3RyYWJsZURvbWFpbiksIDApOworfQorCisjZW5kaWYKKworfSAvLyBu
YW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJH
ZW9sb2NhdGlvbk1hbmFnZXJQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJH
ZW9sb2NhdGlvbk1hbmFnZXJQcm94eS5jcHAKaW5kZXggMDRmMzIyN2NkNTVjOTkyYTQyY2Q5NmEz
ZjI1ZDY5N2FlZDc5NjVhMi4uNjBhYzkzYjYxMDA4N2M0N2FhNTI0NDNhZTk4OWJmMmQ1Y2ViOTlh
MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViR2VvbG9jYXRpb25NYW5h
Z2VyUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkdlb2xvY2F0aW9u
TWFuYWdlclByb3h5LmNwcApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIw
MTEsIDIwMTIsIDIwMTMgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJp
Z2h0IChDKSAyMDExLTIwMjIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC01MCwzNCArNTAsNDMgQEAgUmVmPFdlYkdlb2xv
Y2F0aW9uTWFuYWdlclByb3h5PiBXZWJHZW9sb2NhdGlvbk1hbmFnZXJQcm94eTo6Y3JlYXRlKFdl
YlByb2Nlc3NQb28KIAogV2ViR2VvbG9jYXRpb25NYW5hZ2VyUHJveHk6OldlYkdlb2xvY2F0aW9u
TWFuYWdlclByb3h5KFdlYlByb2Nlc3NQb29sKiBwcm9jZXNzUG9vbCkKICAgICA6IFdlYkNvbnRl
eHRTdXBwbGVtZW50KHByb2Nlc3NQb29sKQotICAgICwgbV9wcm92aWRlcihtYWtlVW5pcXVlPEFQ
STo6R2VvbG9jYXRpb25Qcm92aWRlcj4oKSkKIHsKICAgICBXZWJDb250ZXh0U3VwcGxlbWVudDo6
cHJvY2Vzc1Bvb2woKS0+YWRkTWVzc2FnZVJlY2VpdmVyKE1lc3NhZ2VzOjpXZWJHZW9sb2NhdGlv
bk1hbmFnZXJQcm94eTo6bWVzc2FnZVJlY2VpdmVyTmFtZSgpLCAqdGhpcyk7CiB9CiAKK1dlYkdl
b2xvY2F0aW9uTWFuYWdlclByb3h5Ojp+V2ViR2VvbG9jYXRpb25NYW5hZ2VyUHJveHkoKSA9IGRl
ZmF1bHQ7CisKIHZvaWQgV2ViR2VvbG9jYXRpb25NYW5hZ2VyUHJveHk6OnNldFByb3ZpZGVyKHN0
ZDo6dW5pcXVlX3B0cjxBUEk6Okdlb2xvY2F0aW9uUHJvdmlkZXI+JiYgcHJvdmlkZXIpCiB7Ci0g
ICAgaWYgKCFwcm92aWRlcikKLSAgICAgICAgbV9wcm92aWRlciA9IG1ha2VVbmlxdWU8QVBJOjpH
ZW9sb2NhdGlvblByb3ZpZGVyPigpOwotICAgIGVsc2UKLSAgICAgICAgbV9wcm92aWRlciA9IFdU
Rk1vdmUocHJvdmlkZXIpOworICAgIG1fY2xpZW50UHJvdmlkZXIgPSBXVEZNb3ZlKHByb3ZpZGVy
KTsKIH0KIAogLy8gV2ViQ29udGV4dFN1cHBsZW1lbnQKIAogdm9pZCBXZWJHZW9sb2NhdGlvbk1h
bmFnZXJQcm94eTo6cHJvY2Vzc1Bvb2xEZXN0cm95ZWQoKQogewotICAgIGJvb2wgd2FzVXBkYXRp
bmcgPSBpc1VwZGF0aW5nKCk7Ci0gICAgbV91cGRhdGVSZXF1ZXN0ZXJzLmNsZWFyKCk7CisgICAg
aWYgKG1fcGVyRG9tYWluRGF0YS5pc0VtcHR5KCkpCisgICAgICAgIHJldHVybjsKIAotICAgIEFT
U0VSVCghaXNVcGRhdGluZygpKTsKLSAgICBpZiAod2FzVXBkYXRpbmcpCi0gICAgICAgIG1fcHJv
dmlkZXItPnN0b3BVcGRhdGluZygqdGhpcyk7CisgICAgbV9wZXJEb21haW5EYXRhLmNsZWFyKCk7
CisgICAgaWYgKG1fY2xpZW50UHJvdmlkZXIpCisgICAgICAgIG1fY2xpZW50UHJvdmlkZXItPnN0
b3BVcGRhdGluZygqdGhpcyk7CiB9CiAKIHZvaWQgV2ViR2VvbG9jYXRpb25NYW5hZ2VyUHJveHk6
OnByb2Nlc3NEaWRDbG9zZShXZWJQcm9jZXNzUHJveHkqIHdlYlByb2Nlc3NQcm94eSkKIHsKLSAg
ICByZW1vdmVSZXF1ZXN0ZXIod2ViUHJvY2Vzc1Byb3h5KTsKKyAgICBpZiAoIXdlYlByb2Nlc3NQ
cm94eS0+aGFzQ29ubmVjdGlvbigpKQorICAgICAgICByZXR1cm47CisKKyAgICBhdXRvKiBjb25u
ZWN0aW9uID0gd2ViUHJvY2Vzc1Byb3h5LT5jb25uZWN0aW9uKCk7CisKKyAgICBWZWN0b3I8V2Vi
Q29yZTo6UmVnaXN0cmFibGVEb21haW4+IGFmZmVjdGVkRG9tYWluczsKKyAgICBmb3IgKGF1dG8m
IFtyZWdpc3RyYWJsZURvbWFpbiwgcGVyRG9tYWluRGF0YV0gOiBtX3BlckRvbWFpbkRhdGEpIHsK
KyAgICAgICAgaWYgKHBlckRvbWFpbkRhdGEtPndhdGNoZXJzLmNvbnRhaW5zKGNvbm5lY3Rpb24t
PnVuaXF1ZUlEKCkpKQorICAgICAgICAgICAgYWZmZWN0ZWREb21haW5zLmFwcGVuZChyZWdpc3Ry
YWJsZURvbWFpbik7CisgICAgfQorICAgIGZvciAoYXV0byYgcmVnaXN0cmFibGVEb21haW4gOiBh
ZmZlY3RlZERvbWFpbnMpCisgICAgICAgIHN0b3BVcGRhdGluZygqY29ubmVjdGlvbiwgcmVnaXN0
cmFibGVEb21haW4pOwogfQogCiB2b2lkIFdlYkdlb2xvY2F0aW9uTWFuYWdlclByb3h5OjpyZWZX
ZWJDb250ZXh0U3VwcGxlbWVudCgpCkBAIC05MiwzMCArMTAxLDMzIEBAIHZvaWQgV2ViR2VvbG9j
YXRpb25NYW5hZ2VyUHJveHk6OmRlcmVmV2ViQ29udGV4dFN1cHBsZW1lbnQoKQogCiB2b2lkIFdl
Ykdlb2xvY2F0aW9uTWFuYWdlclByb3h5Ojpwcm92aWRlckRpZENoYW5nZVBvc2l0aW9uKFdlYkdl
b2xvY2F0aW9uUG9zaXRpb24qIHBvc2l0aW9uKQogewotICAgIG1fbGFzdFBvc2l0aW9uID0gcG9z
aXRpb24tPmNvcmVQb3NpdGlvbigpOwotCi0gICAgaWYgKCFwcm9jZXNzUG9vbCgpKQotICAgICAg
ICByZXR1cm47Ci0KLSAgICBwcm9jZXNzUG9vbCgpLT5zZW5kVG9BbGxQcm9jZXNzZXMoTWVzc2Fn
ZXM6OldlYkdlb2xvY2F0aW9uTWFuYWdlcjo6RGlkQ2hhbmdlUG9zaXRpb24obV9sYXN0UG9zaXRp
b24udmFsdWUoKSkpOworICAgIGZvciAoYXV0byYgW3JlZ2lzdHJhYmxlRG9tYWluLCBwZXJEb21h
aW5EYXRhXSA6IG1fcGVyRG9tYWluRGF0YSkgeworICAgICAgICBwZXJEb21haW5EYXRhLT5sYXN0
UG9zaXRpb24gPSBwb3NpdGlvbi0+Y29yZVBvc2l0aW9uKCk7CisgICAgICAgIGZvciAoYXV0byBj
b25uZWN0aW9uSUQgOiBwZXJEb21haW5EYXRhLT53YXRjaGVycykKKyAgICAgICAgICAgIElQQzo6
Q29ubmVjdGlvbjo6c2VuZChjb25uZWN0aW9uSUQsIE1lc3NhZ2VzOjpXZWJHZW9sb2NhdGlvbk1h
bmFnZXI6OkRpZENoYW5nZVBvc2l0aW9uKHJlZ2lzdHJhYmxlRG9tYWluLCBwZXJEb21haW5EYXRh
LT5sYXN0UG9zaXRpb24udmFsdWUoKSksIDApOworICAgIH0KIH0KIAogdm9pZCBXZWJHZW9sb2Nh
dGlvbk1hbmFnZXJQcm94eTo6cHJvdmlkZXJEaWRGYWlsVG9EZXRlcm1pbmVQb3NpdGlvbihjb25z
dCBTdHJpbmcmIGVycm9yTWVzc2FnZSkKIHsKLSAgICBpZiAoIXByb2Nlc3NQb29sKCkpCi0gICAg
ICAgIHJldHVybjsKLQotICAgIHByb2Nlc3NQb29sKCktPnNlbmRUb0FsbFByb2Nlc3NlcyhNZXNz
YWdlczo6V2ViR2VvbG9jYXRpb25NYW5hZ2VyOjpEaWRGYWlsVG9EZXRlcm1pbmVQb3NpdGlvbihl
cnJvck1lc3NhZ2UpKTsKKyAgICBmb3IgKGF1dG8mIFtyZWdpc3RyYWJsZURvbWFpbiwgcGVyRG9t
YWluRGF0YV0gOiBtX3BlckRvbWFpbkRhdGEpIHsKKyAgICAgICAgZm9yIChhdXRvIGNvbm5lY3Rp
b25JRCA6IHBlckRvbWFpbkRhdGEtPndhdGNoZXJzKQorICAgICAgICAgICAgSVBDOjpDb25uZWN0
aW9uOjpzZW5kKGNvbm5lY3Rpb25JRCwgTWVzc2FnZXM6OldlYkdlb2xvY2F0aW9uTWFuYWdlcjo6
RGlkRmFpbFRvRGV0ZXJtaW5lUG9zaXRpb24ocmVnaXN0cmFibGVEb21haW4sIGVycm9yTWVzc2Fn
ZSksIDApOworICAgIH0KIH0KIAogI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiB2b2lkIFdlYkdl
b2xvY2F0aW9uTWFuYWdlclByb3h5OjpyZXNldFBlcm1pc3Npb25zKCkKIHsKLSAgICBwcm9jZXNz
UG9vbCgpLT5zZW5kVG9BbGxQcm9jZXNzZXMoTWVzc2FnZXM6OldlYkdlb2xvY2F0aW9uTWFuYWdl
cjo6UmVzZXRQZXJtaXNzaW9ucygpKTsKKyAgICBBU1NFUlQobV9jbGllbnRQcm92aWRlcik7Cisg
ICAgZm9yIChhdXRvJiBbcmVnaXN0cmFibGVEb21haW4sIHBlckRvbWFpbkRhdGFdIDogbV9wZXJE
b21haW5EYXRhKSB7CisgICAgICAgIGZvciAoYXV0byBjb25uZWN0aW9uSUQgOiBwZXJEb21haW5E
YXRhLT53YXRjaGVycykKKyAgICAgICAgICAgIElQQzo6Q29ubmVjdGlvbjo6c2VuZChjb25uZWN0
aW9uSUQsIE1lc3NhZ2VzOjpXZWJHZW9sb2NhdGlvbk1hbmFnZXI6OlJlc2V0UGVybWlzc2lvbnMo
cmVnaXN0cmFibGVEb21haW4pLCAwKTsKKyAgICB9CiB9CiAjZW5kaWYKIAotdm9pZCBXZWJHZW9s
b2NhdGlvbk1hbmFnZXJQcm94eTo6c3RhcnRVcGRhdGluZyhJUEM6OkNvbm5lY3Rpb24mIGNvbm5l
Y3Rpb24sIFdlYlBhZ2VQcm94eUlkZW50aWZpZXIgcGFnZVByb3h5SUQsIGNvbnN0IFN0cmluZyYg
YXV0aG9yaXphdGlvblRva2VuKQordm9pZCBXZWJHZW9sb2NhdGlvbk1hbmFnZXJQcm94eTo6c3Rh
cnRVcGRhdGluZyhJUEM6OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24sIGNvbnN0IFdlYkNvcmU6OlJl
Z2lzdHJhYmxlRG9tYWluJiByZWdpc3RyYWJsZURvbWFpbiwgV2ViUGFnZVByb3h5SWRlbnRpZmll
ciBwYWdlUHJveHlJRCwgY29uc3QgU3RyaW5nJiBhdXRob3JpemF0aW9uVG9rZW4sIGJvb2wgZW5h
YmxlSGlnaEFjY3VyYWN5KQogewogICAgIGF1dG8qIHBhZ2UgPSBXZWJQcm9jZXNzUHJveHk6Ondl
YlBhZ2UocGFnZVByb3h5SUQpOwogICAgIE1FU1NBR0VfQ0hFQ0socGFnZSk7CkBAIC0xMjMsNDkg
KzEzNSwxNTEgQEAgdm9pZCBXZWJHZW9sb2NhdGlvbk1hbmFnZXJQcm94eTo6c3RhcnRVcGRhdGlu
ZyhJUEM6OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24sIFdlYlAKICAgICBhdXRvIGlzVmFsaWRBdXRo
b3JpemF0aW9uVG9rZW4gPSBwYWdlLT5nZW9sb2NhdGlvblBlcm1pc3Npb25SZXF1ZXN0TWFuYWdl
cigpLmlzVmFsaWRBdXRob3JpemF0aW9uVG9rZW4oYXV0aG9yaXphdGlvblRva2VuKTsKICAgICBN
RVNTQUdFX0NIRUNLKGlzVmFsaWRBdXRob3JpemF0aW9uVG9rZW4pOwogCi0gICAgYm9vbCB3YXNV
cGRhdGluZyA9IGlzVXBkYXRpbmcoKTsKLSAgICBtX3VwZGF0ZVJlcXVlc3RlcnMuYWRkKCZjb25u
ZWN0aW9uLmNsaWVudCgpKTsKKyAgICBhdXRvJiBwZXJEb21haW5EYXRhID0gKm1fcGVyRG9tYWlu
RGF0YS5lbnN1cmUocmVnaXN0cmFibGVEb21haW4sIFtdIHsKKyAgICAgICAgcmV0dXJuIG1ha2VV
bmlxdWU8UGVyRG9tYWluRGF0YT4oKTsKKyAgICB9KS5pdGVyYXRvci0+dmFsdWU7CisKKyAgICBi
b29sIHdhc1VwZGF0aW5nID0gaXNVcGRhdGluZyhwZXJEb21haW5EYXRhKTsKKyAgICBib29sIGhp
Z2hBY2N1cmFjeVdhc0VuYWJsZWQgPSBpc0hpZ2hBY2N1cmFjeUVuYWJsZWQocGVyRG9tYWluRGF0
YSk7CisKKyAgICBwZXJEb21haW5EYXRhLndhdGNoZXJzLmFkZChjb25uZWN0aW9uLnVuaXF1ZUlE
KCkpOworICAgIGlmIChlbmFibGVIaWdoQWNjdXJhY3kpCisgICAgICAgIHBlckRvbWFpbkRhdGEu
d2F0Y2hlcnNOZWVkaW5nSGlnaEFjY3VyYWN5LmFkZChjb25uZWN0aW9uLnVuaXF1ZUlEKCkpOwor
CiAgICAgaWYgKCF3YXNVcGRhdGluZykgewotICAgICAgICBtX3Byb3ZpZGVyLT5zZXRFbmFibGVI
aWdoQWNjdXJhY3koKnRoaXMsIGlzSGlnaEFjY3VyYWN5RW5hYmxlZCgpKTsKLSAgICAgICAgbV9w
cm92aWRlci0+c3RhcnRVcGRhdGluZygqdGhpcyk7Ci0gICAgfSBlbHNlIGlmIChtX2xhc3RQb3Np
dGlvbikKLSAgICAgICAgY29ubmVjdGlvbi5zZW5kKE1lc3NhZ2VzOjpXZWJHZW9sb2NhdGlvbk1h
bmFnZXI6OkRpZENoYW5nZVBvc2l0aW9uKG1fbGFzdFBvc2l0aW9uLnZhbHVlKCkpLCAwKTsKLX0K
KyAgICAgICAgcHJvdmlkZXJTdGFydFVwZGF0aW5nKHBlckRvbWFpbkRhdGEsIHJlZ2lzdHJhYmxl
RG9tYWluKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICBpZiAoIWhpZ2hBY2N1cmFjeVdh
c0VuYWJsZWQgJiYgZW5hYmxlSGlnaEFjY3VyYWN5KQorICAgICAgICBwcm92aWRlclNldEVuYWJs
ZWRIaWdoQWNjdXJhY3kocGVyRG9tYWluRGF0YSwgZW5hYmxlSGlnaEFjY3VyYWN5KTsKIAotdm9p
ZCBXZWJHZW9sb2NhdGlvbk1hbmFnZXJQcm94eTo6c3RvcFVwZGF0aW5nKElQQzo6Q29ubmVjdGlv
biYgY29ubmVjdGlvbikKLXsKLSAgICByZW1vdmVSZXF1ZXN0ZXIoJmNvbm5lY3Rpb24uY2xpZW50
KCkpOworICAgIGlmIChwZXJEb21haW5EYXRhLmxhc3RQb3NpdGlvbikKKyAgICAgICAgY29ubmVj
dGlvbi5zZW5kKE1lc3NhZ2VzOjpXZWJHZW9sb2NhdGlvbk1hbmFnZXI6OkRpZENoYW5nZVBvc2l0
aW9uKHJlZ2lzdHJhYmxlRG9tYWluLCBwZXJEb21haW5EYXRhLmxhc3RQb3NpdGlvbi52YWx1ZSgp
KSwgMCk7CiB9CiAKLXZvaWQgV2ViR2VvbG9jYXRpb25NYW5hZ2VyUHJveHk6OnJlbW92ZVJlcXVl
c3Rlcihjb25zdCBJUEM6OkNvbm5lY3Rpb246OkNsaWVudCogY2xpZW50KQordm9pZCBXZWJHZW9s
b2NhdGlvbk1hbmFnZXJQcm94eTo6c3RvcFVwZGF0aW5nKElQQzo6Q29ubmVjdGlvbiYgY29ubmVj
dGlvbiwgY29uc3QgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4mIHJlZ2lzdHJhYmxlRG9tYWlu
KQogewotICAgIGJvb2wgd2FzVXBkYXRpbmcgPSBpc1VwZGF0aW5nKCk7Ci0gICAgYm9vbCBoaWdo
QWNjdXJhY3lXYXNFbmFibGVkID0gaXNIaWdoQWNjdXJhY3lFbmFibGVkKCk7CisgICAgYXV0byBp
dCA9IG1fcGVyRG9tYWluRGF0YS5maW5kKHJlZ2lzdHJhYmxlRG9tYWluKTsKKyAgICBpZiAoaXQg
PT0gbV9wZXJEb21haW5EYXRhLmVuZCgpKQorICAgICAgICByZXR1cm47CiAKLSAgICBtX2hpZ2hB
Y2N1cmFjeVJlcXVlc3RlcnMucmVtb3ZlKGNsaWVudCk7Ci0gICAgbV91cGRhdGVSZXF1ZXN0ZXJz
LnJlbW92ZShjbGllbnQpOworICAgIGF1dG8mIHBlckRvbWFpbkRhdGEgPSAqaXQtPnZhbHVlOwor
ICAgIGJvb2wgd2FzVXBkYXRpbmcgPSBpc1VwZGF0aW5nKHBlckRvbWFpbkRhdGEpOworICAgIGJv
b2wgaGlnaEFjY3VyYWN5V2FzRW5hYmxlZCA9IGlzSGlnaEFjY3VyYWN5RW5hYmxlZChwZXJEb21h
aW5EYXRhKTsKIAotICAgIGlmICh3YXNVcGRhdGluZyAmJiAhaXNVcGRhdGluZygpKQotICAgICAg
ICBtX3Byb3ZpZGVyLT5zdG9wVXBkYXRpbmcoKnRoaXMpOworICAgIHBlckRvbWFpbkRhdGEud2F0
Y2hlcnMucmVtb3ZlKGNvbm5lY3Rpb24udW5pcXVlSUQoKSk7CisgICAgcGVyRG9tYWluRGF0YS53
YXRjaGVyc05lZWRpbmdIaWdoQWNjdXJhY3kucmVtb3ZlKGNvbm5lY3Rpb24udW5pcXVlSUQoKSk7
CisKKyAgICBpZiAod2FzVXBkYXRpbmcgJiYgIWlzVXBkYXRpbmcocGVyRG9tYWluRGF0YSkpCisg
ICAgICAgIHByb3ZpZGVyU3RvcFVwZGF0aW5nKHBlckRvbWFpbkRhdGEpOwogICAgIGVsc2Ugewot
ICAgICAgICBib29sIGhpZ2hBY2N1cmFjeVNob3VsZEJlRW5hYmxlZCA9IGlzSGlnaEFjY3VyYWN5
RW5hYmxlZCgpOworICAgICAgICBib29sIGhpZ2hBY2N1cmFjeVNob3VsZEJlRW5hYmxlZCA9IGlz
SGlnaEFjY3VyYWN5RW5hYmxlZChwZXJEb21haW5EYXRhKTsKICAgICAgICAgaWYgKGhpZ2hBY2N1
cmFjeVNob3VsZEJlRW5hYmxlZCAhPSBoaWdoQWNjdXJhY3lXYXNFbmFibGVkKQotICAgICAgICAg
ICAgbV9wcm92aWRlci0+c2V0RW5hYmxlSGlnaEFjY3VyYWN5KCp0aGlzLCBoaWdoQWNjdXJhY3lT
aG91bGRCZUVuYWJsZWQpOworICAgICAgICAgICAgcHJvdmlkZXJTZXRFbmFibGVkSGlnaEFjY3Vy
YWN5KHBlckRvbWFpbkRhdGEsIGhpZ2hBY2N1cmFjeVNob3VsZEJlRW5hYmxlZCk7CiAgICAgfQor
CisgICAgaWYgKHBlckRvbWFpbkRhdGEud2F0Y2hlcnMuaXNFbXB0eSgpICYmIHBlckRvbWFpbkRh
dGEud2F0Y2hlcnNOZWVkaW5nSGlnaEFjY3VyYWN5LmlzRW1wdHkoKSkKKyAgICAgICAgbV9wZXJE
b21haW5EYXRhLnJlbW92ZShpdCk7CiB9CiAKLXZvaWQgV2ViR2VvbG9jYXRpb25NYW5hZ2VyUHJv
eHk6OnNldEVuYWJsZUhpZ2hBY2N1cmFjeShJUEM6OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24sIGJv
b2wgZW5hYmxlZCkKK3ZvaWQgV2ViR2VvbG9jYXRpb25NYW5hZ2VyUHJveHk6OnNldEVuYWJsZUhp
Z2hBY2N1cmFjeShJUEM6OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24sIGNvbnN0IFdlYkNvcmU6OlJl
Z2lzdHJhYmxlRG9tYWluJiByZWdpc3RyYWJsZURvbWFpbiwgYm9vbCBlbmFibGVkKQogewotICAg
IGJvb2wgaGlnaEFjY3VyYWN5V2FzRW5hYmxlZCA9IGlzSGlnaEFjY3VyYWN5RW5hYmxlZCgpOwor
ICAgIGF1dG8gaXQgPSBtX3BlckRvbWFpbkRhdGEuZmluZChyZWdpc3RyYWJsZURvbWFpbik7Cisg
ICAgQVNTRVJUKGl0ICE9IG1fcGVyRG9tYWluRGF0YS5lbmQoKSk7CisgICAgaWYgKGl0ID09IG1f
cGVyRG9tYWluRGF0YS5lbmQoKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgYXV0byYgcGVyRG9t
YWluRGF0YSA9ICppdC0+dmFsdWU7CisgICAgYm9vbCBoaWdoQWNjdXJhY3lXYXNFbmFibGVkID0g
aXNIaWdoQWNjdXJhY3lFbmFibGVkKHBlckRvbWFpbkRhdGEpOwogCiAgICAgaWYgKGVuYWJsZWQp
Ci0gICAgICAgIG1faGlnaEFjY3VyYWN5UmVxdWVzdGVycy5hZGQoJmNvbm5lY3Rpb24uY2xpZW50
KCkpOworICAgICAgICBwZXJEb21haW5EYXRhLndhdGNoZXJzTmVlZGluZ0hpZ2hBY2N1cmFjeS5h
ZGQoY29ubmVjdGlvbi51bmlxdWVJRCgpKTsKICAgICBlbHNlCi0gICAgICAgIG1faGlnaEFjY3Vy
YWN5UmVxdWVzdGVycy5yZW1vdmUoJmNvbm5lY3Rpb24uY2xpZW50KCkpOworICAgICAgICBwZXJE
b21haW5EYXRhLndhdGNoZXJzTmVlZGluZ0hpZ2hBY2N1cmFjeS5yZW1vdmUoY29ubmVjdGlvbi51
bmlxdWVJRCgpKTsKKworICAgIGlmIChpc1VwZGF0aW5nKHBlckRvbWFpbkRhdGEpICYmIGhpZ2hB
Y2N1cmFjeVdhc0VuYWJsZWQgIT0gZW5hYmxlZCkKKyAgICAgICAgcHJvdmlkZXJTZXRFbmFibGVk
SGlnaEFjY3VyYWN5KHBlckRvbWFpbkRhdGEsIGVuYWJsZWQpOworfQorCitib29sIFdlYkdlb2xv
Y2F0aW9uTWFuYWdlclByb3h5Ojppc1VwZGF0aW5nKGNvbnN0IFBlckRvbWFpbkRhdGEmIHBlckRv
bWFpbkRhdGEpIGNvbnN0Cit7CisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKKyAgICBpZiAoIW1f
Y2xpZW50UHJvdmlkZXIpCisgICAgICAgIHJldHVybiAhcGVyRG9tYWluRGF0YS53YXRjaGVycy5p
c0VtcHR5KCk7CisjZWxzZQorICAgIFVOVVNFRF9QQVJBTShwZXJEb21haW5EYXRhKTsKKyNlbmRp
ZgorCisgICAgZm9yIChhdXRvJiBwZXJEb21haW5EYXRhIDogbV9wZXJEb21haW5EYXRhLnZhbHVl
cygpKSB7CisgICAgICAgIGlmICghcGVyRG9tYWluRGF0YS0+d2F0Y2hlcnMuaXNFbXB0eSgpKQor
ICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfQorICAgIHJldHVybiBmYWxzZTsKK30KKwor
Citib29sIFdlYkdlb2xvY2F0aW9uTWFuYWdlclByb3h5Ojppc0hpZ2hBY2N1cmFjeUVuYWJsZWQo
Y29uc3QgUGVyRG9tYWluRGF0YSYgcGVyRG9tYWluRGF0YSkgY29uc3QKK3sKKyNpZiBQTEFURk9S
TShJT1NfRkFNSUxZKQorICAgIGlmICghbV9jbGllbnRQcm92aWRlcikKKyAgICAgICAgcmV0dXJu
ICFwZXJEb21haW5EYXRhLndhdGNoZXJzTmVlZGluZ0hpZ2hBY2N1cmFjeS5pc0VtcHR5KCk7Cisj
ZWxzZQorICAgIFVOVVNFRF9QQVJBTShwZXJEb21haW5EYXRhKTsKKyNlbmRpZgorCisgICAgZm9y
IChhdXRvJiBwZXJEb21haW5EYXRhIDogbV9wZXJEb21haW5EYXRhLnZhbHVlcygpKSB7CisgICAg
ICAgIGlmICghcGVyRG9tYWluRGF0YS0+d2F0Y2hlcnNOZWVkaW5nSGlnaEFjY3VyYWN5LmlzRW1w
dHkoKSkKKyAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgIH0KKyAgICByZXR1cm4gZmFsc2U7
Cit9CisKK3ZvaWQgV2ViR2VvbG9jYXRpb25NYW5hZ2VyUHJveHk6OnByb3ZpZGVyU3RhcnRVcGRh
dGluZyhQZXJEb21haW5EYXRhJiBwZXJEb21haW5EYXRhLCBjb25zdCBXZWJDb3JlOjpSZWdpc3Ry
YWJsZURvbWFpbiYgcmVnaXN0cmFibGVEb21haW4pCit7CisjaWYgUExBVEZPUk0oSU9TX0ZBTUlM
WSkKKyAgICBpZiAoIW1fY2xpZW50UHJvdmlkZXIpIHsKKyAgICAgICAgQVNTRVJUKCFwZXJEb21h
aW5EYXRhLnByb3ZpZGVyKTsKKyAgICAgICAgcGVyRG9tYWluRGF0YS5wcm92aWRlciA9IG1ha2VV
bmlxdWU8V2ViQ29yZTo6Q29yZUxvY2F0aW9uR2VvbG9jYXRpb25Qcm92aWRlcj4ocmVnaXN0cmFi
bGVEb21haW4sICp0aGlzKTsKKyAgICAgICAgcGVyRG9tYWluRGF0YS5wcm92aWRlci0+c2V0RW5h
YmxlSGlnaEFjY3VyYWN5KCFwZXJEb21haW5EYXRhLndhdGNoZXJzTmVlZGluZ0hpZ2hBY2N1cmFj
eS5pc0VtcHR5KCkpOworICAgICAgICBwZXJEb21haW5EYXRhLnByb3ZpZGVyLT5zdGFydCgpOwor
ICAgICAgICByZXR1cm47CisgICAgfQorI2Vsc2UKKyAgICBVTlVTRURfUEFSQU0ocmVnaXN0cmFi
bGVEb21haW4pOworI2VuZGlmCisgICAgaWYgKCFtX2NsaWVudFByb3ZpZGVyKQorICAgICAgICBy
ZXR1cm47CisKKyAgICBtX2NsaWVudFByb3ZpZGVyLT5zZXRFbmFibGVIaWdoQWNjdXJhY3koKnRo
aXMsIGlzSGlnaEFjY3VyYWN5RW5hYmxlZChwZXJEb21haW5EYXRhKSk7CisgICAgbV9jbGllbnRQ
cm92aWRlci0+c3RhcnRVcGRhdGluZygqdGhpcyk7Cit9CisKK3ZvaWQgV2ViR2VvbG9jYXRpb25N
YW5hZ2VyUHJveHk6OnByb3ZpZGVyU3RvcFVwZGF0aW5nKFBlckRvbWFpbkRhdGEmIHBlckRvbWFp
bkRhdGEpCit7CisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKKyAgICBpZiAoIW1fY2xpZW50UHJv
dmlkZXIpIHsKKyAgICAgICAgcGVyRG9tYWluRGF0YS5wcm92aWRlci0+c3RvcCgpOworICAgICAg
ICByZXR1cm47CisgICAgfQorI2Vsc2UKKyAgICBVTlVTRURfUEFSQU0ocGVyRG9tYWluRGF0YSk7
CisjZW5kaWYKKworICAgIGlmIChtX2NsaWVudFByb3ZpZGVyKQorICAgICAgICBtX2NsaWVudFBy
b3ZpZGVyLT5zdG9wVXBkYXRpbmcoKnRoaXMpOworfQorCit2b2lkIFdlYkdlb2xvY2F0aW9uTWFu
YWdlclByb3h5Ojpwcm92aWRlclNldEVuYWJsZWRIaWdoQWNjdXJhY3koUGVyRG9tYWluRGF0YSYg
cGVyRG9tYWluRGF0YSwgYm9vbCBlbmFibGVkKQoreworI2lmIFBMQVRGT1JNKElPU19GQU1JTFkp
CisgICAgaWYgKCFtX2NsaWVudFByb3ZpZGVyKQorICAgICAgICBwZXJEb21haW5EYXRhLnByb3Zp
ZGVyLT5zZXRFbmFibGVIaWdoQWNjdXJhY3koZW5hYmxlZCk7CisjZWxzZQorICAgIFVOVVNFRF9Q
QVJBTShwZXJEb21haW5EYXRhKTsKKyNlbmRpZgogCi0gICAgYm9vbCBoaWdoQWNjdXJhY3lTaG91
bGRCZUVuYWJsZWQgPSBpc0hpZ2hBY2N1cmFjeUVuYWJsZWQoKTsKLSAgICBpZiAoaXNVcGRhdGlu
ZygpICYmIGhpZ2hBY2N1cmFjeVdhc0VuYWJsZWQgIT0gaGlnaEFjY3VyYWN5U2hvdWxkQmVFbmFi
bGVkKQotICAgICAgICBtX3Byb3ZpZGVyLT5zZXRFbmFibGVIaWdoQWNjdXJhY3koKnRoaXMsIGhp
Z2hBY2N1cmFjeVNob3VsZEJlRW5hYmxlZCk7CisgICAgaWYgKG1fY2xpZW50UHJvdmlkZXIpCisg
ICAgICAgIG1fY2xpZW50UHJvdmlkZXItPnNldEVuYWJsZUhpZ2hBY2N1cmFjeSgqdGhpcywgZW5h
YmxlZCk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvV2ViR2VvbG9jYXRpb25NYW5hZ2VyUHJveHkuaCBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL1dlYkdlb2xvY2F0aW9uTWFuYWdlclByb3h5LmgKaW5kZXggNzQ5MzZlNDVh
MGQ4MzgzYThiNGIzZDZkNTc4YzliZDIyYmUzZmE1ZS4uZmZjYzM1NWE5MDFkMzNhYTgxYWE2YzNm
ODY4NzU4Y2VjZmI0Y2RhNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vi
R2VvbG9jYXRpb25NYW5hZ2VyUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9X
ZWJHZW9sb2NhdGlvbk1hbmFnZXJQcm94eS5oCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHly
aWdodCAoQykgMjAxMSwgMjAxMiwgMjAxMyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKiBDb3B5cmlnaHQgKEMpIDIwMTEtMjAyMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTMxLDkgKzMxLDE1IEBACiAj
aW5jbHVkZSAiV2ViQ29udGV4dFN1cHBsZW1lbnQuaCIKICNpbmNsdWRlICJXZWJQYWdlUHJveHlJ
ZGVudGlmaWVyLmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9HZW9sb2NhdGlvblBvc2l0aW9uRGF0YS5o
PgorI2luY2x1ZGUgPFdlYkNvcmUvUmVnaXN0cmFibGVEb21haW4uaD4KKyNpbmNsdWRlIDx3dGYv
SGFzaE1hcC5oPgogI2luY2x1ZGUgPHd0Zi9IYXNoU2V0Lmg+CiAjaW5jbHVkZSA8d3RmL3RleHQv
V1RGU3RyaW5nLmg+CiAKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZKQorI2luY2x1ZGUgPFdlYkNv
cmUvQ29yZUxvY2F0aW9uR2VvbG9jYXRpb25Qcm92aWRlci5oPgorI2VuZGlmCisKIG5hbWVzcGFj
ZSBBUEkgewogY2xhc3MgR2VvbG9jYXRpb25Qcm92aWRlcjsKIH0KQEAgLTQzLDExICs0OSwxNiBA
QCBuYW1lc3BhY2UgV2ViS2l0IHsKIGNsYXNzIFdlYkdlb2xvY2F0aW9uUG9zaXRpb247CiBjbGFz
cyBXZWJQcm9jZXNzUG9vbDsKIAotY2xhc3MgV2ViR2VvbG9jYXRpb25NYW5hZ2VyUHJveHkgOiBw
dWJsaWMgQVBJOjpPYmplY3RJbXBsPEFQSTo6T2JqZWN0OjpUeXBlOjpHZW9sb2NhdGlvbk1hbmFn
ZXI+LCBwdWJsaWMgV2ViQ29udGV4dFN1cHBsZW1lbnQsIHByaXZhdGUgSVBDOjpNZXNzYWdlUmVj
ZWl2ZXIgeworY2xhc3MgV2ViR2VvbG9jYXRpb25NYW5hZ2VyUHJveHkgOiBwdWJsaWMgQVBJOjpP
YmplY3RJbXBsPEFQSTo6T2JqZWN0OjpUeXBlOjpHZW9sb2NhdGlvbk1hbmFnZXI+LCBwdWJsaWMg
V2ViQ29udGV4dFN1cHBsZW1lbnQsIHByaXZhdGUgSVBDOjpNZXNzYWdlUmVjZWl2ZXIKKyNpZiBQ
TEFURk9STShJT1NfRkFNSUxZKQorICAgICwgcHVibGljIFdlYkNvcmU6OkNvcmVMb2NhdGlvbkdl
b2xvY2F0aW9uUHJvdmlkZXI6OkNsaWVudAorI2VuZGlmCit7CiBwdWJsaWM6CiAgICAgc3RhdGlj
IGNvbnN0IGNoYXIqIHN1cHBsZW1lbnROYW1lKCk7CiAKICAgICBzdGF0aWMgUmVmPFdlYkdlb2xv
Y2F0aW9uTWFuYWdlclByb3h5PiBjcmVhdGUoV2ViUHJvY2Vzc1Bvb2wqKTsKKyAgICB+V2ViR2Vv
bG9jYXRpb25NYW5hZ2VyUHJveHkoKTsKIAogICAgIHZvaWQgc2V0UHJvdmlkZXIoc3RkOjp1bmlx
dWVfcHRyPEFQSTo6R2VvbG9jYXRpb25Qcm92aWRlcj4mJik7CiAKQEAgLTU2LDcgKzY3LDYgQEAg
cHVibGljOgogI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAgdm9pZCByZXNldFBlcm1pc3Np
b25zKCk7CiAjZW5kaWYKLSAgICBjb25zdCBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6Okdlb2xvY2F0
aW9uUG9zaXRpb25EYXRhPiYgbGFzdFBvc2l0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9sYXN0UG9z
aXRpb247IH0KIAogICAgIHVzaW5nIEFQSTo6T2JqZWN0OjpyZWY7CiAgICAgdXNpbmcgQVBJOjpP
YmplY3Q6OmRlcmVmOwpAQCAtNzMsMTkgKzgzLDM4IEBAIHByaXZhdGU6CiAgICAgLy8gSVBDOjpN
ZXNzYWdlUmVjZWl2ZXIKICAgICB2b2lkIGRpZFJlY2VpdmVNZXNzYWdlKElQQzo6Q29ubmVjdGlv
biYsIElQQzo6RGVjb2RlciYpIG92ZXJyaWRlOwogCi0gICAgYm9vbCBpc1VwZGF0aW5nKCkgY29u
c3QgeyByZXR1cm4gIW1fdXBkYXRlUmVxdWVzdGVycy5pc0VtcHR5KCk7IH0KLSAgICBib29sIGlz
SGlnaEFjY3VyYWN5RW5hYmxlZCgpIGNvbnN0IHsgcmV0dXJuICFtX2hpZ2hBY2N1cmFjeVJlcXVl
c3RlcnMuaXNFbXB0eSgpOyB9CisgICAgLy8gSVBDIG1lc3NhZ2VzLgorICAgIHZvaWQgc3RhcnRV
cGRhdGluZyhJUEM6OkNvbm5lY3Rpb24mLCBjb25zdCBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFp
biYsIFdlYlBhZ2VQcm94eUlkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgYXV0aG9yaXphdGlvblRv
a2VuLCBib29sIGVuYWJsZUhpZ2hBY2N1cmFjeSk7CisgICAgdm9pZCBzdG9wVXBkYXRpbmcoSVBD
OjpDb25uZWN0aW9uJiwgY29uc3QgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4mKTsKKyAgICB2
b2lkIHNldEVuYWJsZUhpZ2hBY2N1cmFjeShJUEM6OkNvbm5lY3Rpb24mLCBjb25zdCBXZWJDb3Jl
OjpSZWdpc3RyYWJsZURvbWFpbiYsIGJvb2wpOwogCi0gICAgdm9pZCBzdGFydFVwZGF0aW5nKElQ
Qzo6Q29ubmVjdGlvbiYsIFdlYlBhZ2VQcm94eUlkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgYXV0
aG9yaXphdGlvblRva2VuKTsKLSAgICB2b2lkIHN0b3BVcGRhdGluZyhJUEM6OkNvbm5lY3Rpb24m
KTsKLSAgICB2b2lkIHJlbW92ZVJlcXVlc3Rlcihjb25zdCBJUEM6OkNvbm5lY3Rpb246OkNsaWVu
dCopOwotICAgIHZvaWQgc2V0RW5hYmxlSGlnaEFjY3VyYWN5KElQQzo6Q29ubmVjdGlvbiYsIGJv
b2wpOworI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCisgICAgLy8gQ29yZUxvY2F0aW9uR2VvbG9j
YXRpb25Qcm92aWRlcjo6Q2xpZW50CisgICAgdm9pZCBwb3NpdGlvbkNoYW5nZWQoY29uc3QgU3Ry
aW5nJiB3ZWJzaXRlSWRlbnRpZmllciwgV2ViQ29yZTo6R2VvbG9jYXRpb25Qb3NpdGlvbkRhdGEm
JikgZmluYWw7CisgICAgdm9pZCBlcnJvck9jY3VycmVkKGNvbnN0IFN0cmluZyYgd2Vic2l0ZUlk
ZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgZXJyb3JNZXNzYWdlKSBmaW5hbDsKKyAgICB2b2lkIHJl
c2V0R2VvbG9jYXRpb24oY29uc3QgU3RyaW5nJiB3ZWJzaXRlSWRlbnRpZmllcikgZmluYWw7Cisj
ZW5kaWYKKworICAgIHN0cnVjdCBQZXJEb21haW5EYXRhIHsKKyAgICAgICAgV1RGX01BS0VfU1RS
VUNUX0ZBU1RfQUxMT0NBVEVEOworICAgICAgICBIYXNoU2V0PElQQzo6Q29ubmVjdGlvbjo6VW5p
cXVlSUQ+IHdhdGNoZXJzOworICAgICAgICBIYXNoU2V0PElQQzo6Q29ubmVjdGlvbjo6VW5pcXVl
SUQ+IHdhdGNoZXJzTmVlZGluZ0hpZ2hBY2N1cmFjeTsKKyAgICAgICAgc3RkOjpvcHRpb25hbDxX
ZWJDb3JlOjpHZW9sb2NhdGlvblBvc2l0aW9uRGF0YT4gbGFzdFBvc2l0aW9uOworCisgICAgICAg
IC8vIEZJWE1FOiBVc2UgZm9yIGFsbCBDb2NvYSBwb3J0cy4KKyNpZiBQTEFURk9STShJT1NfRkFN
SUxZKQorICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8V2ViQ29yZTo6Q29yZUxvY2F0aW9uR2VvbG9j
YXRpb25Qcm92aWRlcj4gcHJvdmlkZXI7CisjZW5kaWYKKyAgICB9OwogCi0gICAgSGFzaFNldDxj
b25zdCBJUEM6OkNvbm5lY3Rpb246OkNsaWVudCo+IG1fdXBkYXRlUmVxdWVzdGVyczsKLSAgICBI
YXNoU2V0PGNvbnN0IElQQzo6Q29ubmVjdGlvbjo6Q2xpZW50Kj4gbV9oaWdoQWNjdXJhY3lSZXF1
ZXN0ZXJzOworICAgIGJvb2wgaXNVcGRhdGluZyhjb25zdCBQZXJEb21haW5EYXRhJikgY29uc3Q7
CisgICAgYm9vbCBpc0hpZ2hBY2N1cmFjeUVuYWJsZWQoY29uc3QgUGVyRG9tYWluRGF0YSYpIGNv
bnN0OworICAgIHZvaWQgcHJvdmlkZXJTdGFydFVwZGF0aW5nKFBlckRvbWFpbkRhdGEmLCBjb25z
dCBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiYpOworICAgIHZvaWQgcHJvdmlkZXJTdG9wVXBk
YXRpbmcoUGVyRG9tYWluRGF0YSYpOworICAgIHZvaWQgcHJvdmlkZXJTZXRFbmFibGVkSGlnaEFj
Y3VyYWN5KFBlckRvbWFpbkRhdGEmLCBib29sIGVuYWJsZWQpOwogCi0gICAgc3RkOjp1bmlxdWVf
cHRyPEFQSTo6R2VvbG9jYXRpb25Qcm92aWRlcj4gbV9wcm92aWRlcjsKLSAgICBzdGQ6Om9wdGlv
bmFsPFdlYkNvcmU6Okdlb2xvY2F0aW9uUG9zaXRpb25EYXRhPiBtX2xhc3RQb3NpdGlvbjsKKyAg
ICBIYXNoTWFwPFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluLCBzdGQ6OnVuaXF1ZV9wdHI8UGVy
RG9tYWluRGF0YT4+IG1fcGVyRG9tYWluRGF0YTsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8QVBJOjpH
ZW9sb2NhdGlvblByb3ZpZGVyPiBtX2NsaWVudFByb3ZpZGVyOwogfTsKIAogfSAvLyBuYW1lc3Bh
Y2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJHZW9sb2Nh
dGlvbk1hbmFnZXJQcm94eS5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dl
Ykdlb2xvY2F0aW9uTWFuYWdlclByb3h5Lm1lc3NhZ2VzLmluCmluZGV4IGU1ZTljMjdkMTRhNWZi
NzI2ZmNjMmM4MWZmM2UxNjVlYTNlODQwYmUuLjkwNDFhOTBjMjUwZjhhZGQ2OGJiMTNiM2FiYjU0
YmViNjZjYjJkMjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkdlb2xv
Y2F0aW9uTWFuYWdlclByb3h5Lm1lc3NhZ2VzLmluCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL1dlYkdlb2xvY2F0aW9uTWFuYWdlclByb3h5Lm1lc3NhZ2VzLmluCkBAIC0yMSw3ICsyMSw3
IEBACiAjIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCiAKIG1lc3NhZ2VzIC0+IFdlYkdlb2xvY2F0aW9uTWFuYWdlclBy
b3h5IHsKLSAgICBTdGFydFVwZGF0aW5nKFdlYktpdDo6V2ViUGFnZVByb3h5SWRlbnRpZmllciBw
YWdlUHJveHlJRCwgU3RyaW5nIGF1dGhvcml6YXRpb25Ub2tlbikgV2FudHNDb25uZWN0aW9uCi0g
ICAgU3RvcFVwZGF0aW5nKCkgV2FudHNDb25uZWN0aW9uCi0gICAgU2V0RW5hYmxlSGlnaEFjY3Vy
YWN5KGJvb2wgZW5hYmxlZCkgV2FudHNDb25uZWN0aW9uCisgICAgU3RhcnRVcGRhdGluZyhXZWJD
b3JlOjpSZWdpc3RyYWJsZURvbWFpbiByZWdpc3RyYWJsZURvbWFpbiwgV2ViS2l0OjpXZWJQYWdl
UHJveHlJZGVudGlmaWVyIHBhZ2VQcm94eUlELCBTdHJpbmcgYXV0aG9yaXphdGlvblRva2VuLCBi
b29sIGVuYWJsZUhpZ2hBY2N1cmFjeSkgV2FudHNDb25uZWN0aW9uCisgICAgU3RvcFVwZGF0aW5n
KFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluIHJlZ2lzdHJhYmxlRG9tYWluKSBXYW50c0Nvbm5l
Y3Rpb24KKyAgICBTZXRFbmFibGVIaWdoQWNjdXJhY3koV2ViQ29yZTo6UmVnaXN0cmFibGVEb21h
aW4gcmVnaXN0cmFibGVEb21haW4sIGJvb2wgZW5hYmxlZCkgV2FudHNDb25uZWN0aW9uCiB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tHZW9sb2NhdGlvblByb3Zp
ZGVySU9TLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dLR2VvbG9jYXRpb25Qcm92
aWRlcklPUy5tbQppbmRleCBmNWU5ZmQ3YmMzNDEyOTdhZjdiMjRlNjc0MTYzMzJjZDk2YWQ3Mzlj
Li5lNjM4YWQ5YzRlOGI3MzhiZjE2NTE0ZDcxOWRjMWJlOGE3NmI1OWQ0IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tHZW9sb2NhdGlvblByb3ZpZGVySU9TLm1tCisr
KyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XS0dlb2xvY2F0aW9uUHJvdmlkZXJJT1Mu
bW0KQEAgLTUxLDcgKzUxLDYgQEAKICNpbXBvcnQgPHd0Zi9VUkwuaD4KIAogLy8gRklYTUU6IFJl
bW92ZSB1c2Ugb2YgV2ViS2l0MSBmcm9tIFdlYktpdDIKLSNpbXBvcnQgPFdlYktpdC9XZWJHZW9s
b2NhdGlvbkNvcmVMb2NhdGlvblByb3ZpZGVyLmg+CiAjaW1wb3J0IDxXZWJLaXQvV2ViQWxsb3dE
ZW55UG9saWN5TGlzdGVuZXIuaD4KIAogQUxMT1dfREVQUkVDQVRFRF9ERUNMQVJBVElPTlNfQkVH
SU4KQEAgLTU5LDkgKzU4LDYgQEAgQUxMT1dfREVQUkVDQVRFRF9ERUNMQVJBVElPTlNfQkVHSU4K
IEBpbnRlcmZhY2UgV0tHZW9sb2NhdGlvblByb3ZpZGVySU9TIChfV0tHZW9sb2NhdGlvbkNvcmVM
b2NhdGlvbkxpc3RlbmVyKSA8X1dLR2VvbG9jYXRpb25Db3JlTG9jYXRpb25MaXN0ZW5lcj4KIEBl
bmQKIAotQGludGVyZmFjZSBXS0xlZ2FjeUNvcmVMb2NhdGlvblByb3ZpZGVyIDogTlNPYmplY3Q8
X1dLR2VvbG9jYXRpb25Db3JlTG9jYXRpb25Qcm92aWRlciwgV2ViR2VvbG9jYXRpb25Db3JlTG9j
YXRpb25VcGRhdGVMaXN0ZW5lcj4KLUBlbmQKLQogQGludGVyZmFjZSBXS1dlYkFsbG93RGVueVBv
bGljeUxpc3RlbmVyIDogTlNPYmplY3Q8V2ViQWxsb3dEZW55UG9saWN5TGlzdGVuZXI+CiAtIChp
ZClpbml0V2l0aENvbXBsZXRpb25IYW5kbGVyOihGdW5jdGlvbjx2b2lkKGJvb2wpPiYmKWNvbXBs
ZXRpb25IYW5kbGVyOwogLSAodm9pZClkZW55T25seVRoaXNSZXF1ZXN0IE5PX1JFVFVSTl9EVUVf
VE9fQVNTRVJUOwpAQCAtMTQ2LDI1ICsxNDIsNDIgQEAgLSAoaWQpaW5pdFdpdGhQcm9jZXNzUG9v
bDooV2ViS2l0OjpXZWJQcm9jZXNzUG9vbCYpcHJvY2Vzc1Bvb2wKICAgICBzZWxmID0gW3N1cGVy
IGluaXRdOwogICAgIGlmICghc2VsZikKICAgICAgICAgcmV0dXJuIG5pbDsKLSAgICBfZ2VvbG9j
YXRpb25NYW5hZ2VyID0gcHJvY2Vzc1Bvb2wuc3VwcGxlbWVudDxXZWJLaXQ6OldlYkdlb2xvY2F0
aW9uTWFuYWdlclByb3h5PigpOwotICAgIFdLR2VvbG9jYXRpb25Qcm92aWRlclYxIHByb3ZpZGVy
Q2FsbGJhY2sgPSB7Ci0gICAgICAgIHsgMSwgc2VsZiB9LAotICAgICAgICBzdGFydFVwZGF0aW5n
Q2FsbGJhY2ssCi0gICAgICAgIHN0b3BVcGRhdGluZ0NhbGxiYWNrLAotICAgICAgICBzZXRFbmFi
bGVIaWdoQWNjdXJhY3kKLSAgICB9OwotICAgIFdLR2VvbG9jYXRpb25NYW5hZ2VyU2V0UHJvdmlk
ZXIodG9BUEkoX2dlb2xvY2F0aW9uTWFuYWdlci5nZXQoKSksICZwcm92aWRlckNhbGxiYWNrLmJh
c2UpOwotICAgIF9jb3JlTG9jYXRpb25Qcm92aWRlciA9IHdyYXBwZXIocHJvY2Vzc1Bvb2wpLl9j
b3JlTG9jYXRpb25Qcm92aWRlciA/OiBhZG9wdE5TKHN0YXRpY19jYXN0PGlkIDxfV0tHZW9sb2Nh
dGlvbkNvcmVMb2NhdGlvblByb3ZpZGVyPj4oW1tXS0xlZ2FjeUNvcmVMb2NhdGlvblByb3ZpZGVy
IGFsbG9jXSBpbml0XSkpOwotICAgIFtfY29yZUxvY2F0aW9uUHJvdmlkZXIgc2V0TGlzdGVuZXI6
c2VsZl07CisKKyAgICAvLyBPbiBpT1MsIFdlYktpdCBub3JtYWxseSBwcm92aWRlcyB0aGUgbG9j
YXRpb24uIEhvd2V2ZXIsIGlmIHRoZSBjbGllbnQgc2V0cyBhIGNvcmVMb2NhdGlvblByb3ZpZGVy
LCB0aGVuIHdlIHVzZSB0aGF0IG9uZSBpbnN0ZWFkLgorICAgIC8vIFRoaXMgaXMgdXNlZnVsIGZv
ciBXZWJLaXRUZXN0UnVubmVyIHRvIHByb3ZpZGUgYSBkdW1teSBnZW9sb2NhdGlvbiBwcm92aWRl
ci4gSXQgaXMgYWxzbyB1c2VkIGJ5IGNlcnRhaW4gYXBwcyB0byBkZW55IGFsbAorICAgIC8vIGdl
b2xvY2F0aW9uIGF1dGhvcml6YXRpb24gYXMgYSB3YXkgdG8gZGlzYWJsZSBzdXBwb3J0IGZvciBn
ZW9sb2NhdGlvbi4KKyAgICBpZiAod3JhcHBlcihwcm9jZXNzUG9vbCkuX2NvcmVMb2NhdGlvblBy
b3ZpZGVyKSB7CisgICAgICAgIF9nZW9sb2NhdGlvbk1hbmFnZXIgPSBwcm9jZXNzUG9vbC5zdXBw
bGVtZW50PFdlYktpdDo6V2ViR2VvbG9jYXRpb25NYW5hZ2VyUHJveHk+KCk7CisgICAgICAgIFdL
R2VvbG9jYXRpb25Qcm92aWRlclYxIHByb3ZpZGVyQ2FsbGJhY2sgPSB7CisgICAgICAgICAgICB7
IDEsIHNlbGYgfSwKKyAgICAgICAgICAgIHN0YXJ0VXBkYXRpbmdDYWxsYmFjaywKKyAgICAgICAg
ICAgIHN0b3BVcGRhdGluZ0NhbGxiYWNrLAorICAgICAgICAgICAgc2V0RW5hYmxlSGlnaEFjY3Vy
YWN5CisgICAgICAgIH07CisgICAgICAgIFdLR2VvbG9jYXRpb25NYW5hZ2VyU2V0UHJvdmlkZXIo
dG9BUEkoX2dlb2xvY2F0aW9uTWFuYWdlci5nZXQoKSksICZwcm92aWRlckNhbGxiYWNrLmJhc2Up
OworICAgICAgICBfY29yZUxvY2F0aW9uUHJvdmlkZXIgPSB3cmFwcGVyKHByb2Nlc3NQb29sKS5f
Y29yZUxvY2F0aW9uUHJvdmlkZXI7CisgICAgICAgIFtfY29yZUxvY2F0aW9uUHJvdmlkZXIgc2V0
TGlzdGVuZXI6c2VsZl07CisgICAgfQogICAgIHJldHVybiBzZWxmOwogfQogCiAtICh2b2lkKWRl
Y2lkZVBvbGljeUZvckdlb2xvY2F0aW9uUmVxdWVzdEZyb21PcmlnaW46KFdlYktpdDo6RnJhbWVJ
bmZvRGF0YSYmKWZyYW1lSW5mbyBjb21wbGV0aW9uSGFuZGxlcjooRnVuY3Rpb248dm9pZChib29s
KT4mJiljb21wbGV0aW9uSGFuZGxlciB2aWV3OihXS1dlYlZpZXcgKiljb250ZW50Vmlldwogewot
ICAgIC8vIFN0ZXAgMTogYXNrIHRoZSB1c2VyIGlmIHRoZSBhcHAgY2FuIHVzZSBHZW9sb2NhdGlv
bi4KKyAgICBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiByZWdpc3RyYWJsZURvbWFpbihmcmFt
ZUluZm8uc2VjdXJpdHlPcmlnaW4pOwogICAgIEdlb2xvY2F0aW9uUmVxdWVzdERhdGEgZ2VvbG9j
YXRpb25SZXF1ZXN0RGF0YSB7IFtjb250ZW50VmlldyBVUkxdLCBXVEZNb3ZlKGZyYW1lSW5mbyks
IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpLCBjb250ZW50VmlldyB9OwogICAgIF9yZXF1ZXN0
c1dhaXRpbmdGb3JDb3JlTG9jYXRpb25BdXRob3JpemF0aW9uLmFwcGVuZChXVEZNb3ZlKGdlb2xv
Y2F0aW9uUmVxdWVzdERhdGEpKTsKLSAgICBbX2NvcmVMb2NhdGlvblByb3ZpZGVyIHJlcXVlc3RH
ZW9sb2NhdGlvbkF1dGhvcml6YXRpb25dOworICAgIGlmIChfY29yZUxvY2F0aW9uUHJvdmlkZXIp
IHsKKyAgICAgICAgLy8gU3RlcCAxOiBhc2sgdGhlIHVzZXIgaWYgdGhlIGFwcCBjYW4gdXNlIEdl
b2xvY2F0aW9uLgorICAgICAgICBbX2NvcmVMb2NhdGlvblByb3ZpZGVyIHJlcXVlc3RHZW9sb2Nh
dGlvbkF1dGhvcml6YXRpb25dOworICAgIH0gZWxzZSB7CisgICAgICAgIC8vIFN0ZXAgMTogYXNr
IENvcmVMb2NhdGlvbiBpZiB0aGUgYXBwIGNhbiB1c2UgR2VvbG9jYXRpb24uCisgICAgICAgIFdl
YkNvcmU6OkNvcmVMb2NhdGlvbkdlb2xvY2F0aW9uUHJvdmlkZXI6OnJlcXVlc3RBdXRob3JpemF0
aW9uKHJlZ2lzdHJhYmxlRG9tYWluLCBbc2VsZiwgc3Ryb25nU2VsZiA9IHJldGFpblB0cihzZWxm
KV0oYm9vbCBhdXRob3JpemVkKSB7CisgICAgICAgICAgICBpZiAoYXV0aG9yaXplZCkKKyAgICAg
ICAgICAgICAgICBbc2VsZiBnZW9sb2NhdGlvbkF1dGhvcml6YXRpb25HcmFudGVkXTsKKyAgICAg
ICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICBbc2VsZiBnZW9sb2NhdGlvbkF1dGhvcml6YXRp
b25EZW5pZWRdOworICAgICAgICB9KTsKKyAgICB9CiB9CiBAZW5kCiAKQEAgLTE3NCw3ICsxODcs
NyBAQCBAaW1wbGVtZW50YXRpb24gV0tHZW9sb2NhdGlvblByb3ZpZGVySU9TIChXZWJHZW9sb2Nh
dGlvbkNvcmVMb2NhdGlvblVwZGF0ZUxpc3RlbgogCiAtICh2b2lkKWdlb2xvY2F0aW9uQXV0aG9y
aXphdGlvbkdyYW50ZWQKIHsKLSAgICAvLyBTdGVwIDI6IGFzayB0aGUgdXNlciBpZiB0aGlzIHBh
cnRpY3VsYXIgcGFnZSBjYW4gdXNlIGdlbG9jYXRpb24uCisgICAgLy8gU3RlcCAyOiBhc2sgdGhl
IHVzZXIgaWYgdGhpcyBwYXJ0aWN1bGFyIHBhZ2UgY2FuIHVzZSBnZW9sb2NhdGlvbi4KICAgICBp
ZiAoX3JlcXVlc3RzV2FpdGluZ0ZvckNvcmVMb2NhdGlvbkF1dGhvcml6YXRpb24uaXNFbXB0eSgp
KQogICAgICAgICByZXR1cm47CiAKQEAgLTIyNiw4MSArMjM5LDYgQEAgLSAodm9pZClyZXNldEdl
b2xvY2F0aW9uCiAKIEBlbmQKIAotIyBwcmFnbWEgbWFyayAtIEltcGxlbWVudGF0aW9uIG9mIFdL
TGVnYWN5Q29yZUxvY2F0aW9uUHJvdmlkZXIKLQotQGltcGxlbWVudGF0aW9uIFdLTGVnYWN5Q29y
ZUxvY2F0aW9uUHJvdmlkZXIgewotICAgIGlkIDxfV0tHZW9sb2NhdGlvbkNvcmVMb2NhdGlvbkxp
c3RlbmVyPiBfbGlzdGVuZXI7Ci0gICAgUmV0YWluUHRyPFdlYkdlb2xvY2F0aW9uQ29yZUxvY2F0
aW9uUHJvdmlkZXI+IF9wcm92aWRlcjsKLX0KLQotLy8gPF9XS0dlb2xvY2F0aW9uQ29yZUxvY2F0
aW9uUHJvdmlkZXI+IE1ldGhvZHMKLQotLSAodm9pZClzZXRMaXN0ZW5lcjooaWQ8X1dLR2VvbG9j
YXRpb25Db3JlTG9jYXRpb25MaXN0ZW5lcj4pbGlzdGVuZXIKLXsKLSAgICBBU1NFUlQobGlzdGVu
ZXIgJiYgIV9saXN0ZW5lciAmJiAhX3Byb3ZpZGVyKTsKLSAgICBfbGlzdGVuZXIgPSBsaXN0ZW5l
cjsKLSAgICBfcHJvdmlkZXIgPSBhZG9wdE5TKFtbV2ViR2VvbG9jYXRpb25Db3JlTG9jYXRpb25Q
cm92aWRlciBhbGxvY10gaW5pdFdpdGhMaXN0ZW5lcjpzZWxmXSk7Ci19Ci0KLS0gKHZvaWQpcmVx
dWVzdEdlb2xvY2F0aW9uQXV0aG9yaXphdGlvbgotewotICAgIEFTU0VSVChfcHJvdmlkZXIpOwot
ICAgIFtfcHJvdmlkZXIgcmVxdWVzdEdlb2xvY2F0aW9uQXV0aG9yaXphdGlvbl07Ci19Ci0KLS0g
KHZvaWQpc3RhcnQKLXsKLSAgICBBU1NFUlQoX3Byb3ZpZGVyKTsKLSAgICBbX3Byb3ZpZGVyIHN0
YXJ0XTsKLX0KLQotLSAodm9pZClzdG9wCi17Ci0gICAgQVNTRVJUKF9wcm92aWRlcik7Ci0gICAg
W19wcm92aWRlciBzdG9wXTsKLX0KLQotLSAodm9pZClzZXRFbmFibGVIaWdoQWNjdXJhY3k6KEJP
T0wpZmxhZwotewotICAgIEFTU0VSVChfcHJvdmlkZXIpOwotICAgIFtfcHJvdmlkZXIgc2V0RW5h
YmxlSGlnaEFjY3VyYWN5OmZsYWddOwotfQotCi0vLyA8V2ViR2VvbG9jYXRpb25Db3JlTG9jYXRp
b25VcGRhdGVMaXN0ZW5lcj4gTWV0aG9kcwotCi0tICh2b2lkKWdlb2xvY2F0aW9uQXV0aG9yaXph
dGlvbkdyYW50ZWQKLXsKLSAgICBBU1NFUlQoX2xpc3RlbmVyKTsKLSAgICBbX2xpc3RlbmVyIGdl
b2xvY2F0aW9uQXV0aG9yaXphdGlvbkdyYW50ZWRdOwotfQotCi0tICh2b2lkKWdlb2xvY2F0aW9u
QXV0aG9yaXphdGlvbkRlbmllZAotewotICAgIEFTU0VSVChfbGlzdGVuZXIpOwotICAgIFtfbGlz
dGVuZXIgZ2VvbG9jYXRpb25BdXRob3JpemF0aW9uRGVuaWVkXTsKLX0KLQotLSAodm9pZClwb3Np
dGlvbkNoYW5nZWQ6KFdlYkNvcmU6Okdlb2xvY2F0aW9uUG9zaXRpb25EYXRhJiYpY29yZVBvc2l0
aW9uCi17Ci0gICAgQVNTRVJUKF9saXN0ZW5lcik7Ci0gICAgYXV0byBwb3NpdGlvbiA9IFdlYktp
dDo6V2ViR2VvbG9jYXRpb25Qb3NpdGlvbjo6Y3JlYXRlKFdURk1vdmUoY29yZVBvc2l0aW9uKSk7
Ci0gICAgW19saXN0ZW5lciBwb3NpdGlvbkNoYW5nZWQ6d3JhcHBlcihwb3NpdGlvbi5nZXQoKSld
OwotfQotCi0tICh2b2lkKWVycm9yT2NjdXJyZWQ6KE5TU3RyaW5nICopZXJyb3JNZXNzYWdlCi17
Ci0gICAgQVNTRVJUKF9saXN0ZW5lcik7Ci0gICAgW19saXN0ZW5lciBlcnJvck9jY3VycmVkOmVy
cm9yTWVzc2FnZV07Ci19Ci0KLS0gKHZvaWQpcmVzZXRHZW9sb2NhdGlvbgotewotICAgIEFTU0VS
VChfbGlzdGVuZXIpOwotICAgIFtfbGlzdGVuZXIgcmVzZXRHZW9sb2NhdGlvbl07Ci19Ci0KLUBl
bmQKLQogIyBwcmFnbWEgbWFyayAtIEltcGxlbWVudGF0aW9uIG9mIFdLV2ViQWxsb3dEZW55UG9s
aWN5TGlzdGVuZXIKIEBpbXBsZW1lbnRhdGlvbiBXS1dlYkFsbG93RGVueVBvbGljeUxpc3RlbmVy
IHsKICAgICBGdW5jdGlvbjx2b2lkKGJvb2wpPiBfY29tcGxldGlvbkhhbmRsZXI7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291
cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCBmN2JlZTU0
M2NlMGZjMGFjMDZkNzY4NTFlZTIxN2RmN2FkODQwMGI5Li5jNTNlMDQxMmJiOGMxNDJhZDU3ZThi
MzI5YTBjNmQ2ODkxZDc2YjRjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2oKQEAgLTQzMTYsNiArNDMxNiw3IEBACiAJCTQ2Q0UzQjEwMjNEOEM4
M0QwMDE2QTk2QSAvKiBXZWJCYWNrRm9yd2FyZExpc3RDb3VudHMuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gV2ViQmFja0ZvcndhcmRMaXN0Q291bnRzLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCTQ2RDQ4RkNDMjc5OUQ3REQwMDdEMjAxNCAvKiBXZWJTaGFyZWRX
b3JrZXJTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdl
YlNoYXJlZFdvcmtlclNlcnZlclRvQ29udGV4dENvbm5lY3Rpb24uY3BwOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQk0NkQ0OEZDRDI3OTlEN0RFMDA3RDIwMTQgLyogV2ViU2hhcmVkV29y
a2VyU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJTaGFyZWRX
b3JrZXJTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CisJCTQ2REEyODU3MjdCNzNFNzYwMDg5RDMzOSAvKiBXZWJHZW9sb2NhdGlvbk1hbmFnZXJQ
cm94eUNvY29hLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdlYkdlb2xvY2F0aW9uTWFuYWdlclBy
b3h5Q29jb2EuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0NkRGMDYzOTFGMzkw
NUU1MDAxOTgwQkIgLyogTmV0d29ya0NPUlNQcmVmbGlnaHRDaGVja2VyLmNwcCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IE5ldHdvcmtDT1JTUHJlZmxpZ2h0Q2hlY2tlci5j
cHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQ2REYwNjNBMUYzOTA1RTUwMDE5ODBC
QiAvKiBOZXR3b3JrQ09SU1ByZWZsaWdodENoZWNrZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gTmV0d29ya0NPUlNQcmVmbGlnaHRDaGVja2VyLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCTQ2RTk3NjBBMjc1N0Y2QzkwMEFDREQzNyAvKiBXZWJCcm9hZGNhc3RD
aGFubmVsUmVnaXN0cnkubWVzc2FnZXMuaW4gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gV2ViQnJv
YWRjYXN0Q2hhbm5lbFJlZ2lzdHJ5Lm1lc3NhZ2VzLmluOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwpAQCAtNzYwMyw2ICs3NjA0LDcgQEAKIAkJCQk1MkQ1QTFBQTFDNTc0OTRFMDBERTM0QTMg
LyogVmlkZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5LmggKi8sCiAJCQkJNTJENUExQUIxQzU3NDk0
RTAwREUzNEEzIC8qIFZpZGVvRnVsbHNjcmVlbk1hbmFnZXJQcm94eS5tZXNzYWdlcy5pbiAqLywK
IAkJCQk1MkQ1QTFBQzFDNTc0OTRFMDBERTM0QTMgLyogVmlkZW9GdWxsc2NyZWVuTWFuYWdlclBy
b3h5Lm1tICovLAorCQkJCTQ2REEyODU3MjdCNzNFNzYwMDg5RDMzOSAvKiBXZWJHZW9sb2NhdGlv
bk1hbmFnZXJQcm94eUNvY29hLmNwcCAqLywKIAkJCQlDMThGM0ExMzI1NjMzMkE2MDA3OTdFNjYg
LyogV2ViSW5zcGVjdG9yUHJlZmVyZW5jZU9ic2VydmVyLmggKi8sCiAJCQkJQzE4RjNBMTQyNTYz
MzM0MzAwNzk3RTY2IC8qIFdlYkluc3BlY3RvclByZWZlcmVuY2VPYnNlcnZlci5tbSAqLywKIAkJ
CQlDREYxQjkxOTI2NzAyMUQ2MDAwN0VDMTAgLyogV2ViS2l0U3dpZnRTb2Z0TGluay5oICovLApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dlb2xvY2F0aW9uL1dlYkdlb2xv
Y2F0aW9uTWFuYWdlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR2VvbG9jYXRpb24v
V2ViR2VvbG9jYXRpb25NYW5hZ2VyLmNwcAppbmRleCA1YTljOWY0ZDJhMWNkNjZhNGI2NzU5YjU5
Mzg3ZWEyY2Y1NWIyYWE4Li45NGYwMTgyMWI4YzEwZDEyMjdmMGM1NDEyZTk2Njk3NDY5MjgyNzFi
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR2VvbG9jYXRpb24vV2ViR2Vv
bG9jYXRpb25NYW5hZ2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR2VvbG9j
YXRpb24vV2ViR2VvbG9jYXRpb25NYW5hZ2VyLmNwcApAQCAtMzksNiArMzksMTQgQEAKIG5hbWVz
cGFjZSBXZWJLaXQgewogdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKK3N0YXRpYyBSZWdpc3Ry
YWJsZURvbWFpbiByZWdpc3RyYWJsZURvbWFpbkZvclBhZ2UoV2ViUGFnZSYgcGFnZSkKK3sKKyAg
ICBhdXRvKiBkb2N1bWVudCA9IHBhZ2UuY29yZVBhZ2UoKSA/IHBhZ2UuY29yZVBhZ2UoKS0+bWFp
bkZyYW1lKCkuZG9jdW1lbnQoKSA6IG51bGxwdHI7CisgICAgaWYgKCFkb2N1bWVudCkKKyAgICAg
ICAgcmV0dXJuIFJlZ2lzdHJhYmxlRG9tYWluIHsgfTsKKyAgICByZXR1cm4gUmVnaXN0cmFibGVE
b21haW4geyBkb2N1bWVudC0+dXJsKCkgfTsKK30KKwogY29uc3QgY2hhciogV2ViR2VvbG9jYXRp
b25NYW5hZ2VyOjpzdXBwbGVtZW50TmFtZSgpCiB7CiAgICAgcmV0dXJuICJXZWJHZW9sb2NhdGlv
bk1hbmFnZXIiOwpAQCAtNTAsODggKzU4LDE0MiBAQCBXZWJHZW9sb2NhdGlvbk1hbmFnZXI6Oldl
Ykdlb2xvY2F0aW9uTWFuYWdlcihXZWJQcm9jZXNzJiBwcm9jZXNzKQogICAgIG1fcHJvY2Vzcy5h
ZGRNZXNzYWdlUmVjZWl2ZXIoTWVzc2FnZXM6OldlYkdlb2xvY2F0aW9uTWFuYWdlcjo6bWVzc2Fn
ZVJlY2VpdmVyTmFtZSgpLCAqdGhpcyk7CiB9CiAKLXZvaWQgV2ViR2VvbG9jYXRpb25NYW5hZ2Vy
OjpyZWdpc3RlcldlYlBhZ2UoV2ViUGFnZSYgcGFnZSwgY29uc3QgU3RyaW5nJiBhdXRob3JpemF0
aW9uVG9rZW4pCi17Ci0gICAgYm9vbCB3YXNVcGRhdGluZyA9IGlzVXBkYXRpbmcoKTsKK1dlYkdl
b2xvY2F0aW9uTWFuYWdlcjo6fldlYkdlb2xvY2F0aW9uTWFuYWdlcigpID0gZGVmYXVsdDsKIAot
ICAgIG1fcGFnZVNldC5hZGQocGFnZSk7Cit2b2lkIFdlYkdlb2xvY2F0aW9uTWFuYWdlcjo6cmVn
aXN0ZXJXZWJQYWdlKFdlYlBhZ2UmIHBhZ2UsIGNvbnN0IFN0cmluZyYgYXV0aG9yaXphdGlvblRv
a2VuLCBib29sIG5lZWRzSGlnaEFjY3VyYWN5KQoreworICAgIGF1dG8gcmVnaXN0cmFibGVEb21h
aW4gPSByZWdpc3RyYWJsZURvbWFpbkZvclBhZ2UocGFnZSk7CisgICAgaWYgKHJlZ2lzdHJhYmxl
RG9tYWluLnN0cmluZygpLmlzRW1wdHkoKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgYXV0byYg
cGFnZVNldHMgPSBtX3BhZ2VTZXRzLmVuc3VyZShyZWdpc3RyYWJsZURvbWFpbiwgW10geworICAg
ICAgICByZXR1cm4gUGFnZVNldHMgeyB9OworICAgIH0pLml0ZXJhdG9yLT52YWx1ZTsKKyAgICBi
b29sIHdhc1VwZGF0aW5nID0gaXNVcGRhdGluZyhwYWdlU2V0cyk7CisgICAgYm9vbCBoaWdoQWNj
dXJhY3lXYXNFbmFibGVkID0gaXNIaWdoQWNjdXJhY3lFbmFibGVkKHBhZ2VTZXRzKTsKKworICAg
IHBhZ2VTZXRzLnBhZ2VTZXQuYWRkKHBhZ2UpOworICAgIGlmIChuZWVkc0hpZ2hBY2N1cmFjeSkK
KyAgICAgICAgcGFnZVNldHMuaGlnaEFjY3VyYWN5UGFnZVNldC5hZGQocGFnZSk7CisgICAgbV9w
YWdlVG9SZWdpc3RyYWJsZURvbWFpbi5hZGQoJnBhZ2UsIHJlZ2lzdHJhYmxlRG9tYWluKTsKKwor
ICAgIGlmICghd2FzVXBkYXRpbmcpIHsKKyAgICAgICAgbV9wcm9jZXNzLnBhcmVudFByb2Nlc3ND
b25uZWN0aW9uKCktPnNlbmQoTWVzc2FnZXM6OldlYkdlb2xvY2F0aW9uTWFuYWdlclByb3h5OjpT
dGFydFVwZGF0aW5nKHJlZ2lzdHJhYmxlRG9tYWluLCBwYWdlLndlYlBhZ2VQcm94eUlkZW50aWZp
ZXIoKSwgYXV0aG9yaXphdGlvblRva2VuLCBuZWVkc0hpZ2hBY2N1cmFjeSksIDApOworICAgICAg
ICByZXR1cm47CisgICAgfQogCi0gICAgaWYgKCF3YXNVcGRhdGluZykKLSAgICAgICAgbV9wcm9j
ZXNzLnBhcmVudFByb2Nlc3NDb25uZWN0aW9uKCktPnNlbmQoTWVzc2FnZXM6OldlYkdlb2xvY2F0
aW9uTWFuYWdlclByb3h5OjpTdGFydFVwZGF0aW5nKHBhZ2Uud2ViUGFnZVByb3h5SWRlbnRpZmll
cigpLCBhdXRob3JpemF0aW9uVG9rZW4pLCAwKTsKKyAgICBib29sIGhpZ2hBY2N1cmFjeVNob3Vs
ZEJlRW5hYmxlZCA9IGlzSGlnaEFjY3VyYWN5RW5hYmxlZChwYWdlU2V0cyk7CisgICAgaWYgKGhp
Z2hBY2N1cmFjeVdhc0VuYWJsZWQgIT0gaGlnaEFjY3VyYWN5U2hvdWxkQmVFbmFibGVkKQorICAg
ICAgICBtX3Byb2Nlc3MucGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+c2VuZChNZXNzYWdlczo6
V2ViR2VvbG9jYXRpb25NYW5hZ2VyUHJveHk6OlNldEVuYWJsZUhpZ2hBY2N1cmFjeShyZWdpc3Ry
YWJsZURvbWFpbiwgaGlnaEFjY3VyYWN5U2hvdWxkQmVFbmFibGVkKSwgMCk7CiB9CiAKIHZvaWQg
V2ViR2VvbG9jYXRpb25NYW5hZ2VyOjp1bnJlZ2lzdGVyV2ViUGFnZShXZWJQYWdlJiBwYWdlKQog
ewotICAgIGJvb2wgaGlnaEFjY3VyYWN5V2FzRW5hYmxlZCA9IGlzSGlnaEFjY3VyYWN5RW5hYmxl
ZCgpOworICAgIGF1dG8gcmVnaXN0cmFibGVEb21haW4gPSBtX3BhZ2VUb1JlZ2lzdHJhYmxlRG9t
YWluLnRha2UoJnBhZ2UpOworICAgIGlmIChyZWdpc3RyYWJsZURvbWFpbi5zdHJpbmcoKS5pc0Vt
cHR5KCkpCisgICAgICAgIHJldHVybjsKKworICAgIGF1dG8gaXQgPSBtX3BhZ2VTZXRzLmZpbmQo
cmVnaXN0cmFibGVEb21haW4pOworICAgIGlmIChpdCA9PSBtX3BhZ2VTZXRzLmVuZCgpKQorICAg
ICAgICByZXR1cm47CiAKLSAgICBtX3BhZ2VTZXQucmVtb3ZlKHBhZ2UpOwotICAgIG1faGlnaEFj
Y3VyYWN5UGFnZVNldC5yZW1vdmUocGFnZSk7CisgICAgYXV0byYgcGFnZVNldHMgPSBpdC0+dmFs
dWU7CisgICAgYm9vbCBoaWdoQWNjdXJhY3lXYXNFbmFibGVkID0gaXNIaWdoQWNjdXJhY3lFbmFi
bGVkKHBhZ2VTZXRzKTsKIAotICAgIGlmICghaXNVcGRhdGluZygpKQotICAgICAgICBtX3Byb2Nl
c3MucGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+c2VuZChNZXNzYWdlczo6V2ViR2VvbG9jYXRp
b25NYW5hZ2VyUHJveHk6OlN0b3BVcGRhdGluZygpLCAwKTsKKyAgICBwYWdlU2V0cy5wYWdlU2V0
LnJlbW92ZShwYWdlKTsKKyAgICBwYWdlU2V0cy5oaWdoQWNjdXJhY3lQYWdlU2V0LnJlbW92ZShw
YWdlKTsKKworICAgIGlmICghaXNVcGRhdGluZyhwYWdlU2V0cykpCisgICAgICAgIG1fcHJvY2Vz
cy5wYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpLT5zZW5kKE1lc3NhZ2VzOjpXZWJHZW9sb2NhdGlv
bk1hbmFnZXJQcm94eTo6U3RvcFVwZGF0aW5nKHJlZ2lzdHJhYmxlRG9tYWluKSwgMCk7CiAgICAg
ZWxzZSB7Ci0gICAgICAgIGJvb2wgaGlnaEFjY3VyYWN5U2hvdWxkQmVFbmFibGVkID0gaXNIaWdo
QWNjdXJhY3lFbmFibGVkKCk7CisgICAgICAgIGJvb2wgaGlnaEFjY3VyYWN5U2hvdWxkQmVFbmFi
bGVkID0gaXNIaWdoQWNjdXJhY3lFbmFibGVkKHBhZ2VTZXRzKTsKICAgICAgICAgaWYgKGhpZ2hB
Y2N1cmFjeVdhc0VuYWJsZWQgIT0gaGlnaEFjY3VyYWN5U2hvdWxkQmVFbmFibGVkKQotICAgICAg
ICAgICAgbV9wcm9jZXNzLnBhcmVudFByb2Nlc3NDb25uZWN0aW9uKCktPnNlbmQoTWVzc2FnZXM6
OldlYkdlb2xvY2F0aW9uTWFuYWdlclByb3h5OjpTZXRFbmFibGVIaWdoQWNjdXJhY3koaGlnaEFj
Y3VyYWN5U2hvdWxkQmVFbmFibGVkKSwgMCk7CisgICAgICAgICAgICBtX3Byb2Nlc3MucGFyZW50
UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+c2VuZChNZXNzYWdlczo6V2ViR2VvbG9jYXRpb25NYW5hZ2Vy
UHJveHk6OlNldEVuYWJsZUhpZ2hBY2N1cmFjeShyZWdpc3RyYWJsZURvbWFpbiwgaGlnaEFjY3Vy
YWN5U2hvdWxkQmVFbmFibGVkKSwgMCk7CiAgICAgfQorCisgICAgaWYgKHBhZ2VTZXRzLnBhZ2VT
ZXQuY29tcHV0ZXNFbXB0eSgpICYmIHBhZ2VTZXRzLmhpZ2hBY2N1cmFjeVBhZ2VTZXQuY29tcHV0
ZXNFbXB0eSgpKQorICAgICAgICBtX3BhZ2VTZXRzLnJlbW92ZShpdCk7CiB9CiAKIHZvaWQgV2Vi
R2VvbG9jYXRpb25NYW5hZ2VyOjpzZXRFbmFibGVIaWdoQWNjdXJhY3lGb3JQYWdlKFdlYlBhZ2Um
IHBhZ2UsIGJvb2wgZW5hYmxlZCkKIHsKLSAgICBib29sIGhpZ2hBY2N1cmFjeVdhc0VuYWJsZWQg
PSBpc0hpZ2hBY2N1cmFjeUVuYWJsZWQoKTsKKyAgICBhdXRvIHJlZ2lzdHJhYmxlRG9tYWluID0g
bV9wYWdlVG9SZWdpc3RyYWJsZURvbWFpbi5nZXQoJnBhZ2UpOworICAgIGlmIChyZWdpc3RyYWJs
ZURvbWFpbi5zdHJpbmcoKS5pc0VtcHR5KCkpCisgICAgICAgIHJldHVybjsKKworICAgIGF1dG8g
aXQgPSBtX3BhZ2VTZXRzLmZpbmQocmVnaXN0cmFibGVEb21haW4pOworICAgIEFTU0VSVChpdCAh
PSBtX3BhZ2VTZXRzLmVuZCgpKTsKKyAgICBpZiAoaXQgPT0gbV9wYWdlU2V0cy5lbmQoKSkKKyAg
ICAgICAgcmV0dXJuOworCisgICAgYXV0byYgcGFnZVNldHMgPSBpdC0+dmFsdWU7CisgICAgYm9v
bCBoaWdoQWNjdXJhY3lXYXNFbmFibGVkID0gaXNIaWdoQWNjdXJhY3lFbmFibGVkKHBhZ2VTZXRz
KTsKIAogICAgIGlmIChlbmFibGVkKQotICAgICAgICBtX2hpZ2hBY2N1cmFjeVBhZ2VTZXQuYWRk
KHBhZ2UpOworICAgICAgICBwYWdlU2V0cy5oaWdoQWNjdXJhY3lQYWdlU2V0LmFkZChwYWdlKTsK
ICAgICBlbHNlCi0gICAgICAgIG1faGlnaEFjY3VyYWN5UGFnZVNldC5yZW1vdmUocGFnZSk7Cisg
ICAgICAgIHBhZ2VTZXRzLmhpZ2hBY2N1cmFjeVBhZ2VTZXQucmVtb3ZlKHBhZ2UpOwogCi0gICAg
Ym9vbCBoaWdoQWNjdXJhY3lTaG91bGRCZUVuYWJsZWQgPSBpc0hpZ2hBY2N1cmFjeUVuYWJsZWQo
KTsKLSAgICBpZiAoaGlnaEFjY3VyYWN5V2FzRW5hYmxlZCAhPSBoaWdoQWNjdXJhY3lTaG91bGRC
ZUVuYWJsZWQpCi0gICAgICAgIG1fcHJvY2Vzcy5wYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpLT5z
ZW5kKE1lc3NhZ2VzOjpXZWJHZW9sb2NhdGlvbk1hbmFnZXJQcm94eTo6U2V0RW5hYmxlSGlnaEFj
Y3VyYWN5KGhpZ2hBY2N1cmFjeVNob3VsZEJlRW5hYmxlZCksIDApOworICAgIGJvb2wgaGlnaEFj
Y3VyYWN5U2hvdWxkQmVFbmFibGVkID0gaXNIaWdoQWNjdXJhY3lFbmFibGVkKHBhZ2VTZXRzKTsK
KyAgICBpZiAoaGlnaEFjY3VyYWN5V2FzRW5hYmxlZCAhPSBpc0hpZ2hBY2N1cmFjeUVuYWJsZWQo
cGFnZVNldHMpKQorICAgICAgICBtX3Byb2Nlc3MucGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+
c2VuZChNZXNzYWdlczo6V2ViR2VvbG9jYXRpb25NYW5hZ2VyUHJveHk6OlNldEVuYWJsZUhpZ2hB
Y2N1cmFjeShyZWdpc3RyYWJsZURvbWFpbiwgaGlnaEFjY3VyYWN5U2hvdWxkQmVFbmFibGVkKSwg
MCk7CiB9CiAKLXZvaWQgV2ViR2VvbG9jYXRpb25NYW5hZ2VyOjpkaWRDaGFuZ2VQb3NpdGlvbihj
b25zdCBHZW9sb2NhdGlvblBvc2l0aW9uRGF0YSYgcG9zaXRpb24pCit2b2lkIFdlYkdlb2xvY2F0
aW9uTWFuYWdlcjo6ZGlkQ2hhbmdlUG9zaXRpb24oY29uc3QgV2ViQ29yZTo6UmVnaXN0cmFibGVE
b21haW4mIHJlZ2lzdHJhYmxlRG9tYWluLCBjb25zdCBHZW9sb2NhdGlvblBvc2l0aW9uRGF0YSYg
cG9zaXRpb24pCiB7CiAjaWYgRU5BQkxFKEdFT0xPQ0FUSU9OKQotICAgIGZvciAoYXV0byYgcGFn
ZSA6IGNvcHlUb1ZlY3RvcihtX3BhZ2VTZXQpKSB7Ci0gICAgICAgIGlmIChwYWdlLT5jb3JlUGFn
ZSgpKQotICAgICAgICAgICAgR2VvbG9jYXRpb25Db250cm9sbGVyOjpmcm9tKHBhZ2UtPmNvcmVQ
YWdlKCkpLT5wb3NpdGlvbkNoYW5nZWQocG9zaXRpb24pOworICAgIGlmIChhdXRvIGl0ID0gbV9w
YWdlU2V0cy5maW5kKHJlZ2lzdHJhYmxlRG9tYWluKTsgaXQgIT0gbV9wYWdlU2V0cy5lbmQoKSkg
eworICAgICAgICBmb3IgKGF1dG8mIHBhZ2UgOiBjb3B5VG9WZWN0b3IoaXQtPnZhbHVlLnBhZ2VT
ZXQpKSB7CisgICAgICAgICAgICBpZiAocGFnZS0+Y29yZVBhZ2UoKSkKKyAgICAgICAgICAgICAg
ICBHZW9sb2NhdGlvbkNvbnRyb2xsZXI6OmZyb20ocGFnZS0+Y29yZVBhZ2UoKSktPnBvc2l0aW9u
Q2hhbmdlZChwb3NpdGlvbik7CisgICAgICAgIH0KICAgICB9CiAjZWxzZQorICAgIFVOVVNFRF9Q
QVJBTShyZWdpc3RyYWJsZURvbWFpbik7CiAgICAgVU5VU0VEX1BBUkFNKHBvc2l0aW9uKTsKICNl
bmRpZiAvLyBFTkFCTEUoR0VPTE9DQVRJT04pCiB9CiAKLXZvaWQgV2ViR2VvbG9jYXRpb25NYW5h
Z2VyOjpkaWRGYWlsVG9EZXRlcm1pbmVQb3NpdGlvbihjb25zdCBTdHJpbmcmIGVycm9yTWVzc2Fn
ZSkKK3ZvaWQgV2ViR2VvbG9jYXRpb25NYW5hZ2VyOjpkaWRGYWlsVG9EZXRlcm1pbmVQb3NpdGlv
bihjb25zdCBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiYgcmVnaXN0cmFibGVEb21haW4sIGNv
bnN0IFN0cmluZyYgZXJyb3JNZXNzYWdlKQogewogI2lmIEVOQUJMRShHRU9MT0NBVElPTikKLSAg
ICAvLyBGSVhNRTogQWRkIGxvY2FsaXplZCBlcnJvciBzdHJpbmcuCi0gICAgYXV0byBlcnJvciA9
IEdlb2xvY2F0aW9uRXJyb3I6OmNyZWF0ZShHZW9sb2NhdGlvbkVycm9yOjpQb3NpdGlvblVuYXZh
aWxhYmxlLCBlcnJvck1lc3NhZ2UpOwotCi0gICAgZm9yIChhdXRvJiBwYWdlIDogY29weVRvVmVj
dG9yKG1fcGFnZVNldCkpIHsKLSAgICAgICAgaWYgKHBhZ2UtPmNvcmVQYWdlKCkpCi0gICAgICAg
ICAgICBHZW9sb2NhdGlvbkNvbnRyb2xsZXI6OmZyb20ocGFnZS0+Y29yZVBhZ2UoKSktPmVycm9y
T2NjdXJyZWQoZXJyb3IuZ2V0KCkpOworICAgIGlmIChhdXRvIGl0ID0gbV9wYWdlU2V0cy5maW5k
KHJlZ2lzdHJhYmxlRG9tYWluKTsgaXQgIT0gbV9wYWdlU2V0cy5lbmQoKSkgeworICAgICAgICAv
LyBGSVhNRTogQWRkIGxvY2FsaXplZCBlcnJvciBzdHJpbmcuCisgICAgICAgIGF1dG8gZXJyb3Ig
PSBHZW9sb2NhdGlvbkVycm9yOjpjcmVhdGUoR2VvbG9jYXRpb25FcnJvcjo6UG9zaXRpb25VbmF2
YWlsYWJsZSwgZXJyb3JNZXNzYWdlKTsKKworICAgICAgICBmb3IgKGF1dG8mIHBhZ2UgOiBjb3B5
VG9WZWN0b3IoaXQtPnZhbHVlLnBhZ2VTZXQpKSB7CisgICAgICAgICAgICBpZiAocGFnZS0+Y29y
ZVBhZ2UoKSkKKyAgICAgICAgICAgICAgICBHZW9sb2NhdGlvbkNvbnRyb2xsZXI6OmZyb20ocGFn
ZS0+Y29yZVBhZ2UoKSktPmVycm9yT2NjdXJyZWQoZXJyb3IuZ2V0KCkpOworICAgICAgICB9CiAg
ICAgfQogI2Vsc2UKKyAgICBVTlVTRURfUEFSQU0ocmVnaXN0cmFibGVEb21haW4pOwogICAgIFVO
VVNFRF9QQVJBTShlcnJvck1lc3NhZ2UpOwogI2VuZGlmIC8vIEVOQUJMRShHRU9MT0NBVElPTikK
IH0KIAotI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCi12b2lkIFdlYkdlb2xvY2F0aW9uTWFuYWdl
cjo6cmVzZXRQZXJtaXNzaW9ucygpCitib29sIFdlYkdlb2xvY2F0aW9uTWFuYWdlcjo6aXNVcGRh
dGluZyhjb25zdCBQYWdlU2V0cyYgcGFnZVNldHMpIGNvbnN0CiB7Ci0gICAgbV9wcm9jZXNzLnJl
c2V0QWxsR2VvbG9jYXRpb25QZXJtaXNzaW9ucygpOworICAgIHJldHVybiAhcGFnZVNldHMucGFn
ZVNldC5jb21wdXRlc0VtcHR5KCk7CiB9Ci0jZW5kaWYgLy8gUExBVEZPUk0oSU9TX0ZBTUlMWSkK
IAotYm9vbCBXZWJHZW9sb2NhdGlvbk1hbmFnZXI6OmlzVXBkYXRpbmcoKSBjb25zdAorYm9vbCBX
ZWJHZW9sb2NhdGlvbk1hbmFnZXI6OmlzSGlnaEFjY3VyYWN5RW5hYmxlZChjb25zdCBQYWdlU2V0
cyYgcGFnZVNldHMpIGNvbnN0CiB7Ci0gICAgcmV0dXJuICFtX3BhZ2VTZXQuY29tcHV0ZXNFbXB0
eSgpOworICAgIHJldHVybiAhcGFnZVNldHMuaGlnaEFjY3VyYWN5UGFnZVNldC5jb21wdXRlc0Vt
cHR5KCk7CiB9CiAKLWJvb2wgV2ViR2VvbG9jYXRpb25NYW5hZ2VyOjppc0hpZ2hBY2N1cmFjeUVu
YWJsZWQoKSBjb25zdAorI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCit2b2lkIFdlYkdlb2xvY2F0
aW9uTWFuYWdlcjo6cmVzZXRQZXJtaXNzaW9ucyhjb25zdCBXZWJDb3JlOjpSZWdpc3RyYWJsZURv
bWFpbiYgcmVnaXN0cmFibGVEb21haW4pCiB7Ci0gICAgcmV0dXJuICFtX2hpZ2hBY2N1cmFjeVBh
Z2VTZXQuY29tcHV0ZXNFbXB0eSgpOworICAgIGF1dG8gaXQgPSBtX3BhZ2VTZXRzLmZpbmQocmVn
aXN0cmFibGVEb21haW4pOworICAgIGlmIChpdCAhPSBtX3BhZ2VTZXRzLmVuZCgpKQorICAgICAg
ICByZXR1cm47CisKKyAgICBmb3IgKGF1dG8mIHBhZ2UgOiBjb3B5VG9WZWN0b3IoaXQtPnZhbHVl
LnBhZ2VTZXQpKSB7CisgICAgICAgIGlmIChhdXRvKiBtYWluRnJhbWUgPSBwYWdlLT5jb3JlUGFn
ZSgpID8gJnBhZ2UtPmNvcmVQYWdlKCktPm1haW5GcmFtZSgpIDogbnVsbHB0cikKKyAgICAgICAg
ICAgIG1haW5GcmFtZS0+cmVzZXRBbGxHZW9sb2NhdGlvblBlcm1pc3Npb24oKTsKKyAgICB9CiB9
CisjZW5kaWYgLy8gUExBVEZPUk0oSU9TX0ZBTUlMWSkKIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR2VvbG9jYXRpb24vV2ViR2Vv
bG9jYXRpb25NYW5hZ2VyLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR2VvbG9jYXRpb24v
V2ViR2VvbG9jYXRpb25NYW5hZ2VyLmgKaW5kZXggNDQ4MzU5NjM1ODc4MjE5N2NjYmE1OTI4ZWZl
NjI1MTUyNmMxODUxNS4uY2I2NTg4YzZlNzE4OGJlZmJkNTUxMjNkNGE1NTliMmIwYjMxYTkzYSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dlb2xvY2F0aW9uL1dlYkdlb2xv
Y2F0aW9uTWFuYWdlci5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HZW9sb2NhdGlv
bi9XZWJHZW9sb2NhdGlvbk1hbmFnZXIuaApAQCAtMjgsNiArMjgsNyBAQAogI2luY2x1ZGUgIk1l
c3NhZ2VSZWNlaXZlci5oIgogI2luY2x1ZGUgIldlYkdlb2xvY2F0aW9uUG9zaXRpb24uaCIKICNp
bmNsdWRlICJXZWJQcm9jZXNzU3VwcGxlbWVudC5oIgorI2luY2x1ZGUgPFdlYkNvcmUvUmVnaXN0
cmFibGVEb21haW4uaD4KICNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgogI2luY2x1ZGUgPHd0Zi9O
b25jb3B5YWJsZS5oPgogI2luY2x1ZGUgPHd0Zi9XZWFrSGFzaFNldC5oPgpAQCAtNDcsMzEgKzQ4
LDM0IEBAIGNsYXNzIFdlYkdlb2xvY2F0aW9uTWFuYWdlciA6IHB1YmxpYyBXZWJQcm9jZXNzU3Vw
cGxlbWVudCwgcHVibGljIElQQzo6TWVzc2FnZVJlCiAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUo
V2ViR2VvbG9jYXRpb25NYW5hZ2VyKTsKIHB1YmxpYzoKICAgICBleHBsaWNpdCBXZWJHZW9sb2Nh
dGlvbk1hbmFnZXIoV2ViUHJvY2VzcyYpOworICAgIH5XZWJHZW9sb2NhdGlvbk1hbmFnZXIoKTsK
IAogICAgIHN0YXRpYyBjb25zdCBjaGFyKiBzdXBwbGVtZW50TmFtZSgpOwogCi0gICAgdm9pZCBy
ZWdpc3RlcldlYlBhZ2UoV2ViUGFnZSYsIGNvbnN0IFN0cmluZyYgYXV0aG9yaXphdGlvblRva2Vu
KTsKKyAgICB2b2lkIHJlZ2lzdGVyV2ViUGFnZShXZWJQYWdlJiwgY29uc3QgU3RyaW5nJiBhdXRo
b3JpemF0aW9uVG9rZW4sIGJvb2wgbmVlZHNIaWdoQWNjdXJhY3kpOwogICAgIHZvaWQgdW5yZWdp
c3RlcldlYlBhZ2UoV2ViUGFnZSYpOwogICAgIHZvaWQgc2V0RW5hYmxlSGlnaEFjY3VyYWN5Rm9y
UGFnZShXZWJQYWdlJiwgYm9vbCk7CiAKLSAgICB2b2lkIHJlcXVlc3RQZXJtaXNzaW9uKFdlYkNv
cmU6Okdlb2xvY2F0aW9uJik7Ci0KIHByaXZhdGU6CiAgICAgLy8gSVBDOjpNZXNzYWdlUmVjZWl2
ZXIKICAgICB2b2lkIGRpZFJlY2VpdmVNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYsIElQQzo6RGVj
b2RlciYpIG92ZXJyaWRlOwogCi0gICAgYm9vbCBpc1VwZGF0aW5nKCkgY29uc3Q7Ci0gICAgYm9v
bCBpc0hpZ2hBY2N1cmFjeUVuYWJsZWQoKSBjb25zdDsKLQotICAgIHZvaWQgZGlkQ2hhbmdlUG9z
aXRpb24oY29uc3QgV2ViQ29yZTo6R2VvbG9jYXRpb25Qb3NpdGlvbkRhdGEmKTsKLSAgICB2b2lk
IGRpZEZhaWxUb0RldGVybWluZVBvc2l0aW9uKGNvbnN0IFN0cmluZyYgZXJyb3JNZXNzYWdlKTsK
KyAgICB2b2lkIGRpZENoYW5nZVBvc2l0aW9uKGNvbnN0IFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9t
YWluJiwgY29uc3QgV2ViQ29yZTo6R2VvbG9jYXRpb25Qb3NpdGlvbkRhdGEmKTsKKyAgICB2b2lk
IGRpZEZhaWxUb0RldGVybWluZVBvc2l0aW9uKGNvbnN0IFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9t
YWluJiwgY29uc3QgU3RyaW5nJiBlcnJvck1lc3NhZ2UpOwogI2lmIFBMQVRGT1JNKElPU19GQU1J
TFkpCi0gICAgdm9pZCByZXNldFBlcm1pc3Npb25zKCk7CisgICAgdm9pZCByZXNldFBlcm1pc3Np
b25zKGNvbnN0IFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluJik7CiAjZW5kaWYgLy8gUExBVEZP
Uk0oSU9TX0ZBTUlMWSkKIAorICAgIHN0cnVjdCBQYWdlU2V0cyB7CisgICAgICAgIFdlYWtIYXNo
U2V0PFdlYlBhZ2U+IHBhZ2VTZXQ7CisgICAgICAgIFdlYWtIYXNoU2V0PFdlYlBhZ2U+IGhpZ2hB
Y2N1cmFjeVBhZ2VTZXQ7CisgICAgfTsKKyAgICBib29sIGlzVXBkYXRpbmcoY29uc3QgUGFnZVNl
dHMmKSBjb25zdDsKKyAgICBib29sIGlzSGlnaEFjY3VyYWN5RW5hYmxlZChjb25zdCBQYWdlU2V0
cyYpIGNvbnN0OworCiAgICAgV2ViUHJvY2VzcyYgbV9wcm9jZXNzOwotICAgIFdlYWtIYXNoU2V0
PFdlYlBhZ2U+IG1fcGFnZVNldDsKLSAgICBXZWFrSGFzaFNldDxXZWJQYWdlPiBtX2hpZ2hBY2N1
cmFjeVBhZ2VTZXQ7CisgICAgSGFzaE1hcDxXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiwgUGFn
ZVNldHM+IG1fcGFnZVNldHM7CisgICAgSGFzaE1hcDxXZWJQYWdlKiwgV2ViQ29yZTo6UmVnaXN0
cmFibGVEb21haW4+IG1fcGFnZVRvUmVnaXN0cmFibGVEb21haW47CiB9OwogCiB9IC8vIG5hbWVz
cGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HZW9sb2Nh
dGlvbi9XZWJHZW9sb2NhdGlvbk1hbmFnZXIubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvR2VvbG9jYXRpb24vV2ViR2VvbG9jYXRpb25NYW5hZ2VyLm1lc3NhZ2VzLmluCmlu
ZGV4IDc5ZjNiNGNlNGVmY2FmMzQ4ODU3ZDk5MzMyNTNkODk1NGYwZjFiODcuLjZmY2M2MGQyZTA4
ZTI2ZWFiNzNjMWY3MWNkODg0MmRjNTEwNTJkMTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9HZW9sb2NhdGlvbi9XZWJHZW9sb2NhdGlvbk1hbmFnZXIubWVzc2FnZXMuaW4K
KysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dlb2xvY2F0aW9uL1dlYkdlb2xvY2F0aW9u
TWFuYWdlci5tZXNzYWdlcy5pbgpAQCAtMjEsOSArMjEsOSBAQAogIyBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogCiBt
ZXNzYWdlcyAtPiBXZWJHZW9sb2NhdGlvbk1hbmFnZXIgTm90UmVmQ291bnRlZCB7Ci0gICAgRGlk
Q2hhbmdlUG9zaXRpb24oV2ViQ29yZTo6R2VvbG9jYXRpb25Qb3NpdGlvbkRhdGEgcG9zaXRpb24p
OwotICAgIERpZEZhaWxUb0RldGVybWluZVBvc2l0aW9uKFN0cmluZyBlcnJvck1lc3NhZ2UpOwor
ICAgIERpZENoYW5nZVBvc2l0aW9uKFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluIHJlZ2lzdHJh
YmxlRG9tYWluLCBXZWJDb3JlOjpHZW9sb2NhdGlvblBvc2l0aW9uRGF0YSBwb3NpdGlvbik7Cisg
ICAgRGlkRmFpbFRvRGV0ZXJtaW5lUG9zaXRpb24oV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4g
cmVnaXN0cmFibGVEb21haW4sIFN0cmluZyBlcnJvck1lc3NhZ2UpOwogI2lmIFBMQVRGT1JNKElP
U19GQU1JTFkpCi0gICAgUmVzZXRQZXJtaXNzaW9ucygpOworICAgIFJlc2V0UGVybWlzc2lvbnMo
V2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4gcmVnaXN0cmFibGVEb21haW4pOwogI2VuZGlmCiB9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2Vi
R2VvbG9jYXRpb25DbGllbnQuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVT
dXBwb3J0L1dlYkdlb2xvY2F0aW9uQ2xpZW50LmNwcAppbmRleCBlYTAyZjJhYzE2ZjczMWJmNTY0
MmY4Njc4ZDg2YTQ5ODExZDhjMzg2Li5kMThkZjdlZmFmNTZlZmNmYzhkMTY5OWM5MWNkMjZiNjg5
YmM4MjZhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBv
cnQvV2ViR2VvbG9jYXRpb25DbGllbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9XZWJDb3JlU3VwcG9ydC9XZWJHZW9sb2NhdGlvbkNsaWVudC5jcHAKQEAgLTQ4LDkgKzQ4LDkg
QEAgdm9pZCBXZWJHZW9sb2NhdGlvbkNsaWVudDo6Z2VvbG9jYXRpb25EZXN0cm95ZWQoKQogICAg
IGRlbGV0ZSB0aGlzOwogfQogCi12b2lkIFdlYkdlb2xvY2F0aW9uQ2xpZW50OjpzdGFydFVwZGF0
aW5nKGNvbnN0IFN0cmluZyYgYXV0aG9yaXphdGlvblRva2VuKQordm9pZCBXZWJHZW9sb2NhdGlv
bkNsaWVudDo6c3RhcnRVcGRhdGluZyhjb25zdCBTdHJpbmcmIGF1dGhvcml6YXRpb25Ub2tlbiwg
Ym9vbCBuZWVkc0hpZ2hBY2N1cmFjeSkKIHsKLSAgICBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5z
dXBwbGVtZW50PFdlYkdlb2xvY2F0aW9uTWFuYWdlcj4oKS0+cmVnaXN0ZXJXZWJQYWdlKG1fcGFn
ZSwgYXV0aG9yaXphdGlvblRva2VuKTsKKyAgICBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5zdXBw
bGVtZW50PFdlYkdlb2xvY2F0aW9uTWFuYWdlcj4oKS0+cmVnaXN0ZXJXZWJQYWdlKG1fcGFnZSwg
YXV0aG9yaXphdGlvblRva2VuLCBuZWVkc0hpZ2hBY2N1cmFjeSk7CiB9CiAKIHZvaWQgV2ViR2Vv
bG9jYXRpb25DbGllbnQ6OnN0b3BVcGRhdGluZygpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViR2VvbG9jYXRpb25DbGllbnQuaCBiL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJHZW9sb2NhdGlvbkNsaWVudC5o
CmluZGV4IGIxNjgxNjc0ODk2MjI1NDdlYzk0ZTY3OThmYjY5ZGQ4ZmE2ZDAxMWMuLjY1ZWMwZTkz
NTQyODNkNWZhNzdhZjEwYjRlMTgwYjg3MTJmYWVmMDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJHZW9sb2NhdGlvbkNsaWVudC5oCisrKyBi
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJHZW9sb2NhdGlvbkNs
aWVudC5oCkBAIC0zMSw3ICszMSw3IEBAIG5hbWVzcGFjZSBXZWJLaXQgewogCiBjbGFzcyBXZWJQ
YWdlOwogCi1jbGFzcyBXZWJHZW9sb2NhdGlvbkNsaWVudCA6IHB1YmxpYyBXZWJDb3JlOjpHZW9s
b2NhdGlvbkNsaWVudCB7CitjbGFzcyBXZWJHZW9sb2NhdGlvbkNsaWVudCBmaW5hbCA6IHB1Ymxp
YyBXZWJDb3JlOjpHZW9sb2NhdGlvbkNsaWVudCB7CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FU
RUQ7CiBwdWJsaWM6CiAgICAgV2ViR2VvbG9jYXRpb25DbGllbnQoV2ViUGFnZSYgcGFnZSkKQEAg
LTQyLDE3ICs0MiwxNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB+V2ViR2VvbG9jYXRpb25DbGll
bnQoKTsKIAogcHJpdmF0ZToKLSAgICB2b2lkIGdlb2xvY2F0aW9uRGVzdHJveWVkKCkgb3ZlcnJp
ZGU7CisgICAgdm9pZCBnZW9sb2NhdGlvbkRlc3Ryb3llZCgpIGZpbmFsOwogCi0gICAgdm9pZCBz
dGFydFVwZGF0aW5nKGNvbnN0IFN0cmluZyYgYXV0aG9yaXphdGlvblRva2VuKSBvdmVycmlkZTsK
LSAgICB2b2lkIHN0b3BVcGRhdGluZygpIG92ZXJyaWRlOwotICAgIHZvaWQgcmV2b2tlQXV0aG9y
aXphdGlvblRva2VuKGNvbnN0IFN0cmluZyYpIG92ZXJyaWRlOwotICAgIHZvaWQgc2V0RW5hYmxl
SGlnaEFjY3VyYWN5KGJvb2wpIG92ZXJyaWRlOworICAgIHZvaWQgc3RhcnRVcGRhdGluZyhjb25z
dCBTdHJpbmcmIGF1dGhvcml6YXRpb25Ub2tlbiwgYm9vbCBuZWVkc0hpZ2hBY2N1cmFjeSkgZmlu
YWw7CisgICAgdm9pZCBzdG9wVXBkYXRpbmcoKSBmaW5hbDsKKyAgICB2b2lkIHJldm9rZUF1dGhv
cml6YXRpb25Ub2tlbihjb25zdCBTdHJpbmcmKSBmaW5hbDsKKyAgICB2b2lkIHNldEVuYWJsZUhp
Z2hBY2N1cmFjeShib29sKSBmaW5hbDsKIAotICAgIHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6R2Vv
bG9jYXRpb25Qb3NpdGlvbkRhdGE+IGxhc3RQb3NpdGlvbigpIG92ZXJyaWRlOworICAgIHN0ZDo6
b3B0aW9uYWw8V2ViQ29yZTo6R2VvbG9jYXRpb25Qb3NpdGlvbkRhdGE+IGxhc3RQb3NpdGlvbigp
IGZpbmFsOwogCi0gICAgdm9pZCByZXF1ZXN0UGVybWlzc2lvbihXZWJDb3JlOjpHZW9sb2NhdGlv
biYpIG92ZXJyaWRlOwotICAgIHZvaWQgY2FuY2VsUGVybWlzc2lvblJlcXVlc3QoV2ViQ29yZTo6
R2VvbG9jYXRpb24mKSBvdmVycmlkZTsKKyAgICB2b2lkIHJlcXVlc3RQZXJtaXNzaW9uKFdlYkNv
cmU6Okdlb2xvY2F0aW9uJikgZmluYWw7CisgICAgdm9pZCBjYW5jZWxQZXJtaXNzaW9uUmVxdWVz
dChXZWJDb3JlOjpHZW9sb2NhdGlvbiYpIGZpbmFsOwogCiAgICAgV2ViUGFnZSYgbV9wYWdlOwog
fTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmNwcCBi
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmNwcAppbmRleCBkZDQ1YjQ1ODhi
ZjlkZDEyNGUxOGZhYTk1YTMyNmVkMzE5MzFhNDU3Li43OTk2MTNkMzc3NDIzNjNiZmJkY2Q5NTI5
Nzk5NjIyMDZmMDIyOGE4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2Vi
UHJvY2Vzcy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3Bw
CkBAIC0xNTI3LDE2ICsxNTI3LDYgQEAgdm9pZCBXZWJQcm9jZXNzOjpwYWdlQWN0aXZpdHlTdGF0
ZURpZENoYW5nZShQYWdlSWRlbnRpZmllciwgT3B0aW9uU2V0PFdlYkNvcmU6OkEKICAgICB9CiB9
CiAKLSNpZiBQTEFURk9STShJT1NfRkFNSUxZKQotdm9pZCBXZWJQcm9jZXNzOjpyZXNldEFsbEdl
b2xvY2F0aW9uUGVybWlzc2lvbnMoKQotewotICAgIGZvciAoYXV0byYgcGFnZSA6IG1fcGFnZU1h
cC52YWx1ZXMoKSkgewotICAgICAgICBpZiAoRnJhbWUqIG1haW5GcmFtZSA9IHBhZ2UtPm1haW5G
cmFtZSgpKQotICAgICAgICAgICAgbWFpbkZyYW1lLT5yZXNldEFsbEdlb2xvY2F0aW9uUGVybWlz
c2lvbigpOwotICAgIH0KLX0KLSNlbmRpZgotCiB2b2lkIFdlYlByb2Nlc3M6OnByZXBhcmVUb1N1
c3BlbmQoYm9vbCBpc1N1c3BlbnNpb25JbW1pbmVudCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgp
PiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewogICAgIFdFQlBST0NFU1NfUkVMRUFTRV9MT0coUHJv
Y2Vzc1N1c3BlbnNpb24sICJwcmVwYXJlVG9TdXNwZW5kOiBpc1N1c3BlbnNpb25JbW1pbmVudD0l
ZCIsIGlzU3VzcGVuc2lvbkltbWluZW50KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9XZWJQcm9jZXNzLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vz
cy5oCmluZGV4IGM1ZGQyMjVkYzFiNzFkYTljZGQ0ZWVkYmEwYTA3ZTc2MTc4MTU3NWUuLjU5NWFm
MGI5NzQxMjkwZGE2YzczNGEwODg2YjgyNGQyM2IxZWU1N2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1dlYlByb2Nlc3MuaApAQCAtMzEwLDEwICszMTAsNiBAQCBwdWJsaWM6CiAKICAgICB2b2lk
IGlzSklURW5hYmxlZChDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmKTsKIAotI2lmIFBM
QVRGT1JNKElPU19GQU1JTFkpCi0gICAgdm9pZCByZXNldEFsbEdlb2xvY2F0aW9uUGVybWlzc2lv
bnMoKTsKLSNlbmRpZgotCiAjaWYgUExBVEZPUk0oV0FZTEFORCkKICAgICBXYXlsYW5kQ29tcG9z
aXRvckRpc3BsYXkqIHdheWxhbmRDb21wb3NpdG9yRGlzcGxheSgpIGNvbnN0IHsgcmV0dXJuIG1f
d2F5bGFuZENvbXBvc2l0b3JEaXNwbGF5LmdldCgpOyB9CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkdlb2xvY2F0aW9uQ2xpZW50
LmggYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJHZW9sb2NhdGlv
bkNsaWVudC5oCmluZGV4IDc3YzI4MjhkODU5NTM2MzViNjRjNGM4OTk5OTBhMGE2NDgxNzFiNmMu
LmIwN2M3OTAzZDI5MmE5MzM5MWU1YzQwYWVkZDY1ZGVkYmFmOGM1ZjEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkdlb2xvY2F0aW9uQ2xpZW50
LmgKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViR2VvbG9j
YXRpb25DbGllbnQuaApAQCAtMzksNyArMzksNyBAQCBwdWJsaWM6CiAgICAgV2ViVmlldyAqd2Vi
VmlldygpIHsgcmV0dXJuIG1fd2ViVmlldzsgfQogCiAgICAgdm9pZCBnZW9sb2NhdGlvbkRlc3Ry
b3llZCgpIG92ZXJyaWRlOwotICAgIHZvaWQgc3RhcnRVcGRhdGluZyhjb25zdCBTdHJpbmcmIGF1
dGhvcml6YXRpb25Ub2tlbikgb3ZlcnJpZGU7CisgICAgdm9pZCBzdGFydFVwZGF0aW5nKGNvbnN0
IFN0cmluZyYgYXV0aG9yaXphdGlvblRva2VuLCBib29sIGVuYWJsZUhpZ2hBY2N1cmFjeSkgb3Zl
cnJpZGU7CiAgICAgdm9pZCBzdG9wVXBkYXRpbmcoKSBvdmVycmlkZTsKICNpZiBQTEFURk9STShJ
T1NfRkFNSUxZKQogICAgIC8vIEZJWE1FOiB1bmlmeSB0aGlzIHdpdGggTWFjIG9uIE9wZW5Tb3Vy
Y2UuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9X
ZWJHZW9sb2NhdGlvbkNsaWVudC5tbSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVT
dXBwb3J0L1dlYkdlb2xvY2F0aW9uQ2xpZW50Lm1tCmluZGV4IGU3ODhhNTdkZDZmODA3ZTdiMjVj
NzQyYmE4MDE5MzU3YTI3MzRkMzguLmE4Yjg1MjFlMmRhNDcxOGRjMTRiNDM3MGIxYTViNGI4ZDYz
Mjg1ODkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0
L1dlYkdlb2xvY2F0aW9uQ2xpZW50Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dl
YkNvcmVTdXBwb3J0L1dlYkdlb2xvY2F0aW9uQ2xpZW50Lm1tCkBAIC04Myw5ICs4MywxNiBAQCB2
b2lkIFdlYkdlb2xvY2F0aW9uQ2xpZW50OjpnZW9sb2NhdGlvbkRlc3Ryb3llZCgpCiAgICAgZGVs
ZXRlIHRoaXM7CiB9CiAKLXZvaWQgV2ViR2VvbG9jYXRpb25DbGllbnQ6OnN0YXJ0VXBkYXRpbmco
Y29uc3QgU3RyaW5nJiBhdXRob3JpemF0aW9uVG9rZW4pCit2b2lkIFdlYkdlb2xvY2F0aW9uQ2xp
ZW50OjpzdGFydFVwZGF0aW5nKGNvbnN0IFN0cmluZyYgYXV0aG9yaXphdGlvblRva2VuLCBib29s
IGVuYWJsZUhpZ2hBY2N1cmFjeSkKIHsKICAgICBVTlVTRURfUEFSQU0oYXV0aG9yaXphdGlvblRv
a2VuKTsKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZKQorICAgIGlmIChlbmFibGVIaWdoQWNjdXJh
Y3kpCisgICAgICAgIHNldEVuYWJsZUhpZ2hBY2N1cmFjeSh0cnVlKTsKKyNlbHNlCisgICAgVU5V
U0VEX1BBUkFNKGVuYWJsZUhpZ2hBY2N1cmFjeSk7CisjZW5kaWYKKwogICAgIFtbbV93ZWJWaWV3
IF9nZW9sb2NhdGlvblByb3ZpZGVyXSByZWdpc3RlcldlYlZpZXc6bV93ZWJWaWV3XTsKIH0KIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViQ29yZVN1cHBvcnQvV2ViR2Vv
bG9jYXRpb25DbGllbnQuY3BwIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViQ29yZVN1cHBv
cnQvV2ViR2VvbG9jYXRpb25DbGllbnQuY3BwCmluZGV4IGUxZmNhMjc3MjQ5NjE1NGE0ZTA3MGU0
ZGZkYTdlNzdlOTczNTgyYzEuLmFjNTQ1MTRjNjQyZWEwZTVmOGFmMzM2OWUxYmJiYWUwYzM5MDcx
YjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkNvcmVTdXBwb3J0L1dl
Ykdlb2xvY2F0aW9uQ2xpZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJD
b3JlU3VwcG9ydC9XZWJHZW9sb2NhdGlvbkNsaWVudC5jcHAKQEAgLTQ4LDkgKzQ4LDEwIEBAIHZv
aWQgV2ViR2VvbG9jYXRpb25DbGllbnQ6Omdlb2xvY2F0aW9uRGVzdHJveWVkKCkKICAgICBkZWxl
dGUgdGhpczsKIH0KIAotdm9pZCBXZWJHZW9sb2NhdGlvbkNsaWVudDo6c3RhcnRVcGRhdGluZyhj
b25zdCBTdHJpbmcmIGF1dGhvcml6YXRpb25Ub2tlbikKK3ZvaWQgV2ViR2VvbG9jYXRpb25DbGll
bnQ6OnN0YXJ0VXBkYXRpbmcoY29uc3QgU3RyaW5nJiBhdXRob3JpemF0aW9uVG9rZW4sIGJvb2wg
ZW5hYmxlSGlnaEFjY3VyYWN5KQogewogICAgIFVOVVNFRF9QQVJBTShhdXRob3JpemF0aW9uVG9r
ZW4pOworICAgIFVOVVNFRF9QQVJBTShlbmFibGVIaWdoQWNjdXJhY3kpOwogICAgIENPTVB0cjxJ
V2ViR2VvbG9jYXRpb25Qcm92aWRlcj4gcHJvdmlkZXI7CiAgICAgaWYgKEZBSUxFRChtX3dlYlZp
ZXctPmdlb2xvY2F0aW9uUHJvdmlkZXIoJnByb3ZpZGVyKSkpCiAgICAgICAgIHJldHVybjsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkdlb2xv
Y2F0aW9uQ2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJDb3JlU3VwcG9ydC9X
ZWJHZW9sb2NhdGlvbkNsaWVudC5oCmluZGV4IDE5NTc0MTdiNTVkN2U1ZDJmOWI3MWU1YzlkOWMz
MDNkZmVmNGUxODYuLjViOGU5NDQ0ZjIxZmVkNDNlZGYyNTkxYTJiYTE1ZGEzYmQ0NGY0NGEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkdlb2xv
Y2F0aW9uQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViQ29yZVN1cHBv
cnQvV2ViR2VvbG9jYXRpb25DbGllbnQuaApAQCAtNDEsNyArNDEsNyBAQCBwdWJsaWM6CiAgICAg
V2ViR2VvbG9jYXRpb25DbGllbnQoV2ViVmlldyopOwogCiAgICAgdm9pZCBnZW9sb2NhdGlvbkRl
c3Ryb3llZCgpIGZpbmFsOwotICAgIHZvaWQgc3RhcnRVcGRhdGluZyhjb25zdCBTdHJpbmcmIGF1
dGhvcml6YXRpb25Ub2tlbikgZmluYWw7CisgICAgdm9pZCBzdGFydFVwZGF0aW5nKGNvbnN0IFN0
cmluZyYgYXV0aG9yaXphdGlvblRva2VuLCBib29sIGVuYWJsZUhpZ2hBY2N1cmFjeSkgZmluYWw7
CiAgICAgdm9pZCBzdG9wVXBkYXRpbmcoKSBmaW5hbDsKICAgICB2b2lkIHNldEVuYWJsZUhpZ2hB
Y2N1cmFjeShib29sKSBmaW5hbCB7IH0KICAgICBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6Okdlb2xv
Y2F0aW9uUG9zaXRpb25EYXRhPiBsYXN0UG9zaXRpb24oKSBmaW5hbDsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>451976</attachid>
            <date>2022-02-14 18:43:59 -0800</date>
            <delta_ts>2022-02-14 19:37:29 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-236566-20220214184358.patch</filename>
            <type>text/plain</type>
            <size>109789</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg5Nzc2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IDNlMmM4MDU2ZjAyYWUxMzRiNjI4OTY2
MDM5ODc5MjFiNjUyNmUwNTQuLjRkZjE3NWE5ZWU0YjE3OWVjMTA5ZGMxMWFhMDczNGJiMDE4OTJl
N2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMTUgQEAKKzIwMjItMDItMTMgIENocmlzIER1bWV6ICA8Y2R1bWV6
QGFwcGxlLmNvbT4KKworICAgICAgICBEbyBwcmVsaW1pbmFyeSB3b3JrIHRvIHBhc3MgZG9tYWlu
IG5hbWVzIHRvIENvcmVMb2NhdGlvbgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MjM2NTY2CisgICAgICAgIDxyZGFyOi8vODg3NjE0MTM+CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkIGJ1aWxkIHRpbWUg
ZmxhZyBmb3IgcGFzc2luZyB3ZWJzaXRlIGlkZW50aWZpZXJzIHRvIENvcmVMb2NhdGlvbi4KKwor
ICAgICAgICAqIHd0Zi9QbGF0Zm9ybUhhdmUuaDoKKwogMjAyMi0wMi0xNCAgR3VzdGF2byBOb3Jv
bmhhIFNpbHZhICA8Z3VzdGF2b0Bub3JvbmhhLmRldi5icj4KIAogICAgICAgICBbTGludXgvYWFy
Y2g2NF0gTW92ZSBwYWdlIHNpemUgY2VpbGluZyB0byAxNmsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCA2MDVjNzM4
NzQyMTI4ODBlOTdkOTljMzQ4OTQyMjU3ZTc3MmQyYWFjLi41ODVjODg4MzZiZDA1MmYyNjQ5MmMw
YWQ1MzI4NDQ0YzlkOWE5MmM2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cK
KysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNTQgQEAKKzIwMjItMDIt
MTMgIENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KKworICAgICAgICBEbyBwcmVsaW1p
bmFyeSB3b3JrIHRvIHBhc3MgZG9tYWluIG5hbWVzIHRvIENvcmVMb2NhdGlvbgorICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjM2NTY2CisgICAgICAgIDxy
ZGFyOi8vODg3NjE0MTM+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgRG8gcHJlbGltaW5hcnkgd29yayB0byBwYXNzIGRvbWFpbiBuYW1lcyB0byBDb3Jl
TG9jYXRpb24gd2hlbiB1c2luZyB0aGUgR2VvbG9jYXRpb24gQVBJLgorICAgICAgICBUaGlzIHBp
cGVzIHRoZSBkb21haW4gbmFtZXMgYWxsIHRoZSB3YXkgZnJvbSB0aGUgR2VvbG9jYXRpb24gQVBJ
IHRvIHRoZSBDb3JlTG9jYXRpb24gY2FsbHMKKyAgICAgICAgYnV0IGRvZXNuJ3QgeWV0IHBhc3Mg
dGhlIGRvbWFpbiB0byBDb3JlTG9jYXRpb24gZHVlIHRvIDxyZGFyOi8vODg4MzQzMDE+LiBJIHdp
bGwgZm9sbG93LXVwCisgICAgICAgIG9uY2UgPHJkYXI6Ly84ODgzNDMwMT4gaXMgZml4ZWQuCisK
KyAgICAgICAgKiBNb2R1bGVzL2dlb2xvY2F0aW9uL0dlb2xvY2F0aW9uQ2xpZW50Lmg6CisgICAg
ICAgICogTW9kdWxlcy9nZW9sb2NhdGlvbi9HZW9sb2NhdGlvbkNvbnRyb2xsZXIuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6R2VvbG9jYXRpb25Db250cm9sbGVyOjpkaWROYXZpZ2F0ZVBhZ2UpOgor
ICAgICAgICAoV2ViQ29yZTo6R2VvbG9jYXRpb25Db250cm9sbGVyOjphZGRPYnNlcnZlcik6Cisg
ICAgICAgIChXZWJDb3JlOjpHZW9sb2NhdGlvbkNvbnRyb2xsZXI6OnJlbW92ZU9ic2VydmVyKToK
KyAgICAgICAgKFdlYkNvcmU6Okdlb2xvY2F0aW9uQ29udHJvbGxlcjo6YWN0aXZpdHlTdGF0ZURp
ZENoYW5nZSk6CisgICAgICAgIChXZWJDb3JlOjpHZW9sb2NhdGlvbkNvbnRyb2xsZXI6OnN0YXJ0
VXBkYXRpbmdJZk5lY2Vzc2FyeSk6CisgICAgICAgIChXZWJDb3JlOjpHZW9sb2NhdGlvbkNvbnRy
b2xsZXI6OnN0b3BVcGRhdGluZ0lmTmVjZXNzYXJ5KToKKyAgICAgICAgKiBNb2R1bGVzL2dlb2xv
Y2F0aW9uL0dlb2xvY2F0aW9uQ29udHJvbGxlci5oOgorICAgICAgICAoV2ViQ29yZTo6R2VvbG9j
YXRpb25Db250cm9sbGVyOjpuZWVkc0hpZ2hBY2N1cmFjeSBjb25zdCk6CisgICAgICAgICogTW9k
dWxlcy9nZW9sb2NhdGlvbi9HZW9sb2NhdGlvblBvc2l0aW9uRGF0YS5oOgorICAgICAgICAqIE1v
ZHVsZXMvZ2VvbG9jYXRpb24vaW9zL0dlb2xvY2F0aW9uUG9zaXRpb25EYXRhSU9TLm1tOgorICAg
ICAgICAqIFNvdXJjZXNDb2NvYS50eHQ6CisgICAgICAgICogV2ViQ29yZS54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qOgorICAgICAgICAqIHBhZ2UvUGFnZS5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpQYWdlOjpkaWRDb21taXRMb2FkKToKKyAgICAgICAgKiBwbGF0Zm9ybS9jb2NvYS9Db3JlTG9j
YXRpb25HZW9sb2NhdGlvblByb3ZpZGVyLmg6IENvcGllZCBmcm9tIFNvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvZ2VvbG9jYXRpb24vR2VvbG9jYXRpb25DbGllbnQuaC4KKyAgICAgICAgKiBwbGF0Zm9y
bS9jb2NvYS9Db3JlTG9jYXRpb25HZW9sb2NhdGlvblByb3ZpZGVyLm1tOiBBZGRlZC4KKyAgICAg
ICAgKGlzQXV0aG9yaXphdGlvbkdyYW50ZWQpOgorICAgICAgICAoLVtXZWJDTExvY2F0aW9uTWFu
YWdlciBpbml0V2l0aFdlYnNpdGVJZGVudGlmaWVyOmNsaWVudDpdKToKKyAgICAgICAgKC1bV2Vi
Q0xMb2NhdGlvbk1hbmFnZXIgZGVhbGxvY10pOgorICAgICAgICAoLVtXZWJDTExvY2F0aW9uTWFu
YWdlciBzdGFydF0pOgorICAgICAgICAoLVtXZWJDTExvY2F0aW9uTWFuYWdlciBzdG9wXSk6Cisg
ICAgICAgICgtW1dlYkNMTG9jYXRpb25NYW5hZ2VyIHNldEVuYWJsZUhpZ2hBY2N1cmFjeTpdKToK
KyAgICAgICAgKC1bV2ViQ0xMb2NhdGlvbk1hbmFnZXIgcmVxdWVzdEdlb2xvY2F0aW9uQXV0aG9y
aXphdGlvbl0pOgorICAgICAgICAoLVtXZWJDTExvY2F0aW9uTWFuYWdlciBsb2NhdGlvbk1hbmFn
ZXJEaWRDaGFuZ2VBdXRob3JpemF0aW9uOl0pOgorICAgICAgICAoLVtXZWJDTExvY2F0aW9uTWFu
YWdlciBsb2NhdGlvbk1hbmFnZXI6ZGlkVXBkYXRlTG9jYXRpb25zOl0pOgorICAgICAgICAoLVtX
ZWJDTExvY2F0aW9uTWFuYWdlciBsb2NhdGlvbk1hbmFnZXI6ZGlkRmFpbFdpdGhFcnJvcjpdKToK
KyAgICAgICAgKFdlYkNvcmU6OkNvcmVMb2NhdGlvbkdlb2xvY2F0aW9uUHJvdmlkZXI6OkNvcmVM
b2NhdGlvbkdlb2xvY2F0aW9uUHJvdmlkZXIpOgorICAgICAgICAoV2ViQ29yZTo6Q29yZUxvY2F0
aW9uR2VvbG9jYXRpb25Qcm92aWRlcjo6fkNvcmVMb2NhdGlvbkdlb2xvY2F0aW9uUHJvdmlkZXIp
OgorICAgICAgICAoV2ViQ29yZTo6Q29yZUxvY2F0aW9uR2VvbG9jYXRpb25Qcm92aWRlcjo6c3Rh
cnQpOgorICAgICAgICAoV2ViQ29yZTo6Q29yZUxvY2F0aW9uR2VvbG9jYXRpb25Qcm92aWRlcjo6
c3RvcCk6CisgICAgICAgIChXZWJDb3JlOjpDb3JlTG9jYXRpb25HZW9sb2NhdGlvblByb3ZpZGVy
OjpzZXRFbmFibGVIaWdoQWNjdXJhY3kpOgorICAgICAgICAoV2ViQ29yZTo6Q29yZUxvY2F0aW9u
R2VvbG9jYXRpb25Qcm92aWRlcjo6cmVxdWVzdEF1dGhvcml6YXRpb24pOgorICAgICAgICAqIHBs
YXRmb3JtL21vY2svR2VvbG9jYXRpb25DbGllbnRNb2NrLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
Okdlb2xvY2F0aW9uQ2xpZW50TW9jazo6c3RhcnRVcGRhdGluZyk6CisgICAgICAgICogcGxhdGZv
cm0vbW9jay9HZW9sb2NhdGlvbkNsaWVudE1vY2suaDoKKwogMjAyMi0wMi0xNCAgU2ltb24gRnJh
c2VyICA8c2ltb24uZnJhc2VyQGFwcGxlLmNvbT4KIAogICAgICAgICBGaXggY3Jhc2ggd2l0aCBk
ZWVwbHkgbmVzdGVkIGFzeW5jIG92ZXJmbG93IHNjcm9sbApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwppbmRleCBhNjlmZWVlNmVl
Yjk0OWM5YTU0Y2YxNTFkZDVhM2ZiZDFlZTk2NTIwLi5kNzc0MDk0MzlkNTEzYWJmZGUyYTMzMmE5
ZjNkZGMwMjJlODQxMTY1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZworKysg
Yi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpAQCAtMSwzICsxLDk0IEBACisyMDIyLTAyLTEzICBD
aHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CisKKyAgICAgICAgRG8gcHJlbGltaW5hcnkg
d29yayB0byBwYXNzIGRvbWFpbiBuYW1lcyB0byBDb3JlTG9jYXRpb24KKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzNjU2NgorICAgICAgICA8cmRhcjov
Lzg4NzYxNDEzPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgIERvIHByZWxpbWluYXJ5IHdvcmsgdG8gcGFzcyBkb21haW4gbmFtZXMgdG8gQ29yZUxvY2F0
aW9uIHdoZW4gdXNpbmcgdGhlIEdlb2xvY2F0aW9uIEFQSS4KKyAgICAgICAgVGhpcyBwaXBlcyB0
aGUgZG9tYWluIG5hbWVzIGFsbCB0aGUgd2F5IGZyb20gdGhlIEdlb2xvY2F0aW9uIEFQSSB0byB0
aGUgQ29yZUxvY2F0aW9uIGNhbGxzCisgICAgICAgIGJ1dCBkb2Vzbid0IHlldCBwYXNzIHRoZSBk
b21haW4gdG8gQ29yZUxvY2F0aW9uIGR1ZSB0byA8cmRhcjovLzg4ODM0MzAxPi4gSSB3aWxsIGZv
bGxvdy11cAorICAgICAgICBvbmNlIDxyZGFyOi8vODg4MzQzMDE+IGlzIGZpeGVkLgorCisgICAg
ICAgICogU291cmNlc0NvY29hLnR4dDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0MvV0tHZW9s
b2NhdGlvbk1hbmFnZXIuY3BwOgorICAgICAgICAoV0tHZW9sb2NhdGlvbk1hbmFnZXJTZXRQcm92
aWRlcik6CisgICAgICAgICogVUlQcm9jZXNzL0NvY29hL1dlYkdlb2xvY2F0aW9uTWFuYWdlclBy
b3h5Q29jb2EuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYktpdDo6V2ViR2VvbG9jYXRpb25NYW5h
Z2VyUHJveHk6OnBvc2l0aW9uQ2hhbmdlZCk6CisgICAgICAgIChXZWJLaXQ6OldlYkdlb2xvY2F0
aW9uTWFuYWdlclByb3h5OjplcnJvck9jY3VycmVkKToKKyAgICAgICAgKFdlYktpdDo6V2ViR2Vv
bG9jYXRpb25NYW5hZ2VyUHJveHk6OnJlc2V0R2VvbG9jYXRpb24pOgorICAgICAgICAoV2ViS2l0
OjpXZWJHZW9sb2NhdGlvbk1hbmFnZXJQcm94eTo6aXNVcGRhdGluZyBjb25zdCk6CisgICAgICAg
IChXZWJLaXQ6OldlYkdlb2xvY2F0aW9uTWFuYWdlclByb3h5Ojppc0hpZ2hBY2N1cmFjeUVuYWJs
ZWQgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpXZWJHZW9sb2NhdGlvbk1hbmFnZXJQcm94eTo6
cHJvdmlkZXJTdGFydFVwZGF0aW5nKToKKyAgICAgICAgKFdlYktpdDo6V2ViR2VvbG9jYXRpb25N
YW5hZ2VyUHJveHk6OnByb3ZpZGVyU3RvcFVwZGF0aW5nKToKKyAgICAgICAgKFdlYktpdDo6V2Vi
R2VvbG9jYXRpb25NYW5hZ2VyUHJveHk6OnByb3ZpZGVyU2V0RW5hYmxlZEhpZ2hBY2N1cmFjeSk6
CisgICAgICAgICogVUlQcm9jZXNzL1dlYkdlb2xvY2F0aW9uTWFuYWdlclByb3h5LmNwcDoKKyAg
ICAgICAgKFdlYktpdDo6V2ViR2VvbG9jYXRpb25NYW5hZ2VyUHJveHk6OldlYkdlb2xvY2F0aW9u
TWFuYWdlclByb3h5KToKKyAgICAgICAgKFdlYktpdDo6V2ViR2VvbG9jYXRpb25NYW5hZ2VyUHJv
eHk6OnByb2Nlc3NQb29sRGVzdHJveWVkKToKKyAgICAgICAgKFdlYktpdDo6V2ViR2VvbG9jYXRp
b25NYW5hZ2VyUHJveHk6OnByb2Nlc3NEaWRDbG9zZSk6CisgICAgICAgIChXZWJLaXQ6OldlYkdl
b2xvY2F0aW9uTWFuYWdlclByb3h5Ojpwcm92aWRlckRpZENoYW5nZVBvc2l0aW9uKToKKyAgICAg
ICAgKFdlYktpdDo6V2ViR2VvbG9jYXRpb25NYW5hZ2VyUHJveHk6OnByb3ZpZGVyRGlkRmFpbFRv
RGV0ZXJtaW5lUG9zaXRpb24pOgorICAgICAgICAoV2ViS2l0OjpXZWJHZW9sb2NhdGlvbk1hbmFn
ZXJQcm94eTo6c3RhcnRVcGRhdGluZyk6CisgICAgICAgIChXZWJLaXQ6OldlYkdlb2xvY2F0aW9u
TWFuYWdlclByb3h5OjpzdG9wVXBkYXRpbmcpOgorICAgICAgICAoV2ViS2l0OjpXZWJHZW9sb2Nh
dGlvbk1hbmFnZXJQcm94eTo6c2V0RW5hYmxlSGlnaEFjY3VyYWN5KToKKyAgICAgICAgKFdlYktp
dDo6V2ViR2VvbG9jYXRpb25NYW5hZ2VyUHJveHk6OnNldFByb3ZpZGVyKToKKyAgICAgICAgKFdl
YktpdDo6V2ViR2VvbG9jYXRpb25NYW5hZ2VyUHJveHk6OmlzVXBkYXRpbmcgY29uc3QpOgorICAg
ICAgICAoV2ViS2l0OjpXZWJHZW9sb2NhdGlvbk1hbmFnZXJQcm94eTo6aXNIaWdoQWNjdXJhY3lF
bmFibGVkIGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6V2ViR2VvbG9jYXRpb25NYW5hZ2VyUHJv
eHk6OnByb3ZpZGVyU3RhcnRVcGRhdGluZyk6CisgICAgICAgIChXZWJLaXQ6OldlYkdlb2xvY2F0
aW9uTWFuYWdlclByb3h5Ojpwcm92aWRlclN0b3BVcGRhdGluZyk6CisgICAgICAgIChXZWJLaXQ6
OldlYkdlb2xvY2F0aW9uTWFuYWdlclByb3h5Ojpwcm92aWRlclNldEVuYWJsZWRIaWdoQWNjdXJh
Y3kpOgorICAgICAgICAoV2ViS2l0OjpXZWJHZW9sb2NhdGlvbk1hbmFnZXJQcm94eTo6cmVzZXRQ
ZXJtaXNzaW9ucyk6IERlbGV0ZWQuCisgICAgICAgIChXZWJLaXQ6OldlYkdlb2xvY2F0aW9uTWFu
YWdlclByb3h5OjpyZW1vdmVSZXF1ZXN0ZXIpOiBEZWxldGVkLgorICAgICAgICAqIFVJUHJvY2Vz
cy9XZWJHZW9sb2NhdGlvbk1hbmFnZXJQcm94eS5oOgorICAgICAgICAoV2ViS2l0OjpXZWJHZW9s
b2NhdGlvbk1hbmFnZXJQcm94eTo6bGFzdFBvc2l0aW9uIGNvbnN0KTogRGVsZXRlZC4KKyAgICAg
ICAgKFdlYktpdDo6V2ViR2VvbG9jYXRpb25NYW5hZ2VyUHJveHk6OmlzVXBkYXRpbmcgY29uc3Qp
OiBEZWxldGVkLgorICAgICAgICAoV2ViS2l0OjpXZWJHZW9sb2NhdGlvbk1hbmFnZXJQcm94eTo6
aXNIaWdoQWNjdXJhY3lFbmFibGVkIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKiBVSVByb2Nl
c3MvV2ViR2VvbG9jYXRpb25NYW5hZ2VyUHJveHkubWVzc2FnZXMuaW46CisgICAgICAgICogVUlQ
cm9jZXNzL2lvcy9XS0dlb2xvY2F0aW9uUHJvdmlkZXJJT1MubW06CisgICAgICAgICgtW1dLR2Vv
bG9jYXRpb25Qcm92aWRlcklPUyBfc3RhcnRVcGRhdGluZ10pOgorICAgICAgICAoLVtXS0dlb2xv
Y2F0aW9uUHJvdmlkZXJJT1MgX3N0b3BVcGRhdGluZ10pOgorICAgICAgICAoLVtXS0dlb2xvY2F0
aW9uUHJvdmlkZXJJT1MgX3NldEVuYWJsZUhpZ2hBY2N1cmFjeTpdKToKKyAgICAgICAgKC1bV0tH
ZW9sb2NhdGlvblByb3ZpZGVySU9TIGluaXRXaXRoUHJvY2Vzc1Bvb2w6XSk6CisgICAgICAgICgt
W1dLR2VvbG9jYXRpb25Qcm92aWRlcklPUyBkZWNpZGVQb2xpY3lGb3JHZW9sb2NhdGlvblJlcXVl
c3RGcm9tT3JpZ2luOmNvbXBsZXRpb25IYW5kbGVyOnZpZXc6XSk6CisgICAgICAgICgtW1dLR2Vv
bG9jYXRpb25Qcm92aWRlcklPUyBnZW9sb2NhdGlvbkF1dGhvcml6YXRpb25HcmFudGVkXSk6Cisg
ICAgICAgICgtW1dLR2VvbG9jYXRpb25Qcm92aWRlcklPUyBwb3NpdGlvbkNoYW5nZWQ6XSk6Cisg
ICAgICAgICgtW1dLR2VvbG9jYXRpb25Qcm92aWRlcklPUyBlcnJvck9jY3VycmVkOl0pOgorICAg
ICAgICAoLVtXS0dlb2xvY2F0aW9uUHJvdmlkZXJJT1MgcmVzZXRHZW9sb2NhdGlvbl0pOgorICAg
ICAgICAoc3RhcnRVcGRhdGluZ0NhbGxiYWNrKTogRGVsZXRlZC4KKyAgICAgICAgKHN0b3BVcGRh
dGluZ0NhbGxiYWNrKTogRGVsZXRlZC4KKyAgICAgICAgKHNldEVuYWJsZUhpZ2hBY2N1cmFjeSk6
IERlbGV0ZWQuCisgICAgICAgICgtW1dLTGVnYWN5Q29yZUxvY2F0aW9uUHJvdmlkZXIgc2V0TGlz
dGVuZXI6XSk6IERlbGV0ZWQuCisgICAgICAgICgtW1dLTGVnYWN5Q29yZUxvY2F0aW9uUHJvdmlk
ZXIgcmVxdWVzdEdlb2xvY2F0aW9uQXV0aG9yaXphdGlvbl0pOiBEZWxldGVkLgorICAgICAgICAo
LVtXS0xlZ2FjeUNvcmVMb2NhdGlvblByb3ZpZGVyIHN0YXJ0XSk6IERlbGV0ZWQuCisgICAgICAg
ICgtW1dLTGVnYWN5Q29yZUxvY2F0aW9uUHJvdmlkZXIgc3RvcF0pOiBEZWxldGVkLgorICAgICAg
ICAoLVtXS0xlZ2FjeUNvcmVMb2NhdGlvblByb3ZpZGVyIHNldEVuYWJsZUhpZ2hBY2N1cmFjeTpd
KTogRGVsZXRlZC4KKyAgICAgICAgKC1bV0tMZWdhY3lDb3JlTG9jYXRpb25Qcm92aWRlciBnZW9s
b2NhdGlvbkF1dGhvcml6YXRpb25HcmFudGVkXSk6IERlbGV0ZWQuCisgICAgICAgICgtW1dLTGVn
YWN5Q29yZUxvY2F0aW9uUHJvdmlkZXIgZ2VvbG9jYXRpb25BdXRob3JpemF0aW9uRGVuaWVkXSk6
IERlbGV0ZWQuCisgICAgICAgICgtW1dLTGVnYWN5Q29yZUxvY2F0aW9uUHJvdmlkZXIgcG9zaXRp
b25DaGFuZ2VkOl0pOiBEZWxldGVkLgorICAgICAgICAoLVtXS0xlZ2FjeUNvcmVMb2NhdGlvblBy
b3ZpZGVyIGVycm9yT2NjdXJyZWQ6XSk6IERlbGV0ZWQuCisgICAgICAgICgtW1dLTGVnYWN5Q29y
ZUxvY2F0aW9uUHJvdmlkZXIgcmVzZXRHZW9sb2NhdGlvbl0pOiBEZWxldGVkLgorICAgICAgICAq
IFdlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIFdlYlByb2Nlc3Mv
R2VvbG9jYXRpb24vV2ViR2VvbG9jYXRpb25NYW5hZ2VyLmNwcDoKKyAgICAgICAgKFdlYktpdDo6
cmVnaXN0cmFibGVEb21haW5Gb3JQYWdlKToKKyAgICAgICAgKFdlYktpdDo6V2ViR2VvbG9jYXRp
b25NYW5hZ2VyOjpyZWdpc3RlcldlYlBhZ2UpOgorICAgICAgICAoV2ViS2l0OjpXZWJHZW9sb2Nh
dGlvbk1hbmFnZXI6OnVucmVnaXN0ZXJXZWJQYWdlKToKKyAgICAgICAgKFdlYktpdDo6V2ViR2Vv
bG9jYXRpb25NYW5hZ2VyOjpzZXRFbmFibGVIaWdoQWNjdXJhY3lGb3JQYWdlKToKKyAgICAgICAg
KFdlYktpdDo6V2ViR2VvbG9jYXRpb25NYW5hZ2VyOjpkaWRDaGFuZ2VQb3NpdGlvbik6CisgICAg
ICAgIChXZWJLaXQ6OldlYkdlb2xvY2F0aW9uTWFuYWdlcjo6ZGlkRmFpbFRvRGV0ZXJtaW5lUG9z
aXRpb24pOgorICAgICAgICAoV2ViS2l0OjpXZWJHZW9sb2NhdGlvbk1hbmFnZXI6OnJlc2V0UGVy
bWlzc2lvbnMpOgorICAgICAgICAoV2ViS2l0OjpXZWJHZW9sb2NhdGlvbk1hbmFnZXI6OmlzVXBk
YXRpbmcgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViS2l0OjpXZWJHZW9sb2NhdGlvbk1h
bmFnZXI6OmlzSGlnaEFjY3VyYWN5RW5hYmxlZCBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgICog
V2ViUHJvY2Vzcy9HZW9sb2NhdGlvbi9XZWJHZW9sb2NhdGlvbk1hbmFnZXIuaDoKKyAgICAgICAg
KiBXZWJQcm9jZXNzL0dlb2xvY2F0aW9uL1dlYkdlb2xvY2F0aW9uTWFuYWdlci5tZXNzYWdlcy5p
bjoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkdlb2xvY2F0aW9uQ2xp
ZW50LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViR2VvbG9jYXRpb25DbGllbnQ6OnN0YXJ0VXBk
YXRpbmcpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViR2VvbG9jYXRp
b25DbGllbnQuaDoKKyAgICAgICAgKFdlYktpdDo6V2ViR2VvbG9jYXRpb25DbGllbnQ6OldlYkdl
b2xvY2F0aW9uQ2xpZW50KTogRGVsZXRlZC4KKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlByb2Nl
c3MuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzOjpyZXNldEFsbEdlb2xvY2F0aW9u
UGVybWlzc2lvbnMpOiBEZWxldGVkLgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUHJvY2Vzcy5o
OgorCiAyMDIyLTAyLTE0ICBTYWlkIEFib3UtSGFsbGF3YSAgPHNhaWRAYXBwbGUuY29tPgogCiAg
ICAgICAgIFtHUFUgUHJvY2Vzc10gUmVtb3RlSW1hZ2VCdWZmZXJQcm94eSBzaG91bGQgbm90IHNp
bmsgaXRzZWxmIHRvIGFuIEltYWdlIG9yIGEgTmF0aXZlSW1hZ2UgdGhvdWdoIGl0cyBiYWNrZW5k
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9DaGFuZ2VMb2cgYi9Tb3VyY2Uv
V2ViS2l0TGVnYWN5L21hYy9DaGFuZ2VMb2cKaW5kZXggNjgwMzk0ODU4YTE1YjhhMjU2OTZhYWVj
N2M4ZDk0YWE3M2FkNzIyMy4uMjU5NzZhMmYwZjQ4ZDNjM2NlMjk4YmZlZjgwZTFhZmIxMDU4OGY2
NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE1IEBACisyMDIyLTAy
LTEzICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CisKKyAgICAgICAgRG8gcHJlbGlt
aW5hcnkgd29yayB0byBwYXNzIGRvbWFpbiBuYW1lcyB0byBDb3JlTG9jYXRpb24KKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzNjU2NgorICAgICAgICA8
cmRhcjovLzg4NzYxNDEzPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2ViR2VvbG9jYXRpb25DbGllbnQuaDoKKyAgICAg
ICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJHZW9sb2NhdGlvbkNsaWVudC5tbToKKyAgICAgICAgKFdl
Ykdlb2xvY2F0aW9uQ2xpZW50OjpzdGFydFVwZGF0aW5nKToKKwogMjAyMi0wMi0xMSAgQ2hyaXMg
RHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgogCiAgICAgICAgIFVucmV2aWV3ZWQsIGZpeCBidWls
ZCB3aXRoIHRoZSBsYXRlc3QgaU9TIFNESy4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdh
Y3kvd2luL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL0NoYW5nZUxvZwppbmRl
eCA2OTVhYTkxMDUzOWVmMDIxMDVmNTIxOTMwNGMwOTdlMTAzMTI2NDU1Li4xZDZjMDMzZTJjZDFk
MTI3NDQ1YzM1YzMwY2EzODg1MGFlZjdiZGI0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVn
YWN5L3dpbi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vQ2hhbmdlTG9n
CkBAIC0xLDMgKzEsMTUgQEAKKzIwMjItMDItMTMgIENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxl
LmNvbT4KKworICAgICAgICBEbyBwcmVsaW1pbmFyeSB3b3JrIHRvIHBhc3MgZG9tYWluIG5hbWVz
IHRvIENvcmVMb2NhdGlvbgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MjM2NTY2CisgICAgICAgIDxyZGFyOi8vODg3NjE0MTM+CisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJH
ZW9sb2NhdGlvbkNsaWVudC5jcHA6CisgICAgICAgIChXZWJHZW9sb2NhdGlvbkNsaWVudDo6c3Rh
cnRVcGRhdGluZyk6CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2ViR2VvbG9jYXRpb25DbGll
bnQuaDoKKwogMjAyMi0wMi0wMSAgTXlsZXMgQy4gTWF4ZmllbGQgIDxtbWF4ZmllbGRAYXBwbGUu
Y29tPgogCiAgICAgICAgIFJlbmFtZSBGb250Q2FzY2FkZTo6Zm9udE1ldHJpY3MoKSBhbmQgUmVu
ZGVyU3R5bGU6OmZvbnRNZXRyaWNzKCkgdG8gZm9udE1ldHJpY3NPZlByaW1hcnlGb250KCkKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL1BsYXRmb3JtSGF2ZS5oIGIvU291cmNlL1dURi93dGYv
UGxhdGZvcm1IYXZlLmgKaW5kZXggMDkyYmMzNjIxNTAxZDQ0Y2VhZmIwNzBmYWNjZDM5OTVjZGEy
MzEyNy4uNjRhNWU3OWIwNDRlZmJiODJhZWYyNDlhNDFiMmRkOThmYmU4NTcwYSAxMDA2NDQKLS0t
IGEvU291cmNlL1dURi93dGYvUGxhdGZvcm1IYXZlLmgKKysrIGIvU291cmNlL1dURi93dGYvUGxh
dGZvcm1IYXZlLmgKQEAgLTExMTksNiArMTExOSwxNiBAQAogI2RlZmluZSBIQVZFX05TVEVYVExJ
U1RfTUFSS0VSX0ZPUk1BVFMgMQogI2VuZGlmCiAKKyNpZiAoUExBVEZPUk0oSU9TKSAmJiBfX0lQ
SE9ORV9PU19WRVJTSU9OX01BWF9BTExPV0VEID49IDE2MDAwMCkgXAorICAgIHx8IChQTEFURk9S
TShXQVRDSE9TKSAmJiBfX1dBVENIX09TX1ZFUlNJT05fTUFYX0FMTE9XRUQgPj0gOTAwMDApIFwK
KyAgICB8fCAoUExBVEZPUk0oQVBQTEVUVikgJiYgX19UVl9PU19WRVJTSU9OX01BWF9BTExPV0VE
ID49IDE2MDAwMCkKKyNkZWZpbmUgSEFWRV9DT1JFX0xPQ0FUSU9OX1dFQlNJVEVfSURFTlRJRklF
UlMgMQorI2VuZGlmCisKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZKSB8fCAoUExBVEZPUk0oTUFD
KSAmJiBfX01BQ19PU19YX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49IDEwMTQwMCAmJiBkZWZpbmVk
IF9faGFzX2luY2x1ZGUgJiYgX19oYXNfaW5jbHVkZSg8Q29yZUZvdW5kYXRpb24vQ0ZQcml2Lmg+
KSkKKyNkZWZpbmUgSEFWRV9DT1JFX0xPQ0FUSU9OX0FVVEhPUklaRURfV0hFTl9JTl9VU0UgMQor
I2VuZGlmCisKICNpZiBQTEFURk9STShNQUMpCiAjZGVmaW5lIEhBVkVfU0NFTkVLSVQgMQogI2Vu
ZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2dlb2xvY2F0aW9uL0dlb2xv
Y2F0aW9uQ2xpZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2dlb2xvY2F0aW9uL0dlb2xv
Y2F0aW9uQ2xpZW50LmgKaW5kZXggNWJhZjNhZDgyYzU3ZTVhY2JhOTZlM2RmMGVkNjBlYmM3NTRi
Y2IwNS4uYTRlODYyMzYyNTU2N2U5YWRmZWIwMGQ4MjQwMDBhMjc3ZGJlYWYwMCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9nZW9sb2NhdGlvbi9HZW9sb2NhdGlvbkNsaWVudC5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZ2VvbG9jYXRpb24vR2VvbG9jYXRpb25DbGll
bnQuaApAQCAtMzgsNyArMzgsNyBAQCBjbGFzcyBHZW9sb2NhdGlvbkNsaWVudCB7CiBwdWJsaWM6
CiAgICAgdmlydHVhbCB2b2lkIGdlb2xvY2F0aW9uRGVzdHJveWVkKCkgPSAwOwogCi0gICAgdmly
dHVhbCB2b2lkIHN0YXJ0VXBkYXRpbmcoY29uc3QgU3RyaW5nJiBhdXRob3JpemF0aW9uVG9rZW4p
ID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgc3RhcnRVcGRhdGluZyhjb25zdCBTdHJpbmcmIGF1dGhv
cml6YXRpb25Ub2tlbiwgYm9vbCBuZWVkc0hpZ2hBY2N1cmFjeSkgPSAwOwogICAgIHZpcnR1YWwg
dm9pZCBzdG9wVXBkYXRpbmcoKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIHJldm9rZUF1dGhvcml6
YXRpb25Ub2tlbihjb25zdCBTdHJpbmcmKSB7IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9nZW9sb2NhdGlvbi9HZW9sb2NhdGlvbkNvbnRyb2xsZXIuY3BwIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9nZW9sb2NhdGlvbi9HZW9sb2NhdGlvbkNvbnRyb2xsZXIuY3BwCmlu
ZGV4IDA2MTYyOTE2MGQ5YmNjN2Q1ZGFmNzRjZmM0ZjgxNTUwYmE0OGRlOGMuLjA3ZGQ2NWYzYzFh
ZWU3OWViOWM3MzI4MzZhMmQ1YWFkMDE3MzMzY2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvZ2VvbG9jYXRpb24vR2VvbG9jYXRpb25Db250cm9sbGVyLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2dlb2xvY2F0aW9uL0dlb2xvY2F0aW9uQ29udHJvbGxlci5jcHAK
QEAgLTUyLDE5ICs1MiwyNSBAQCBHZW9sb2NhdGlvbkNvbnRyb2xsZXI6On5HZW9sb2NhdGlvbkNv
bnRyb2xsZXIoKQogICAgIG1fY2xpZW50Lmdlb2xvY2F0aW9uRGVzdHJveWVkKCk7CiB9CiAKK3Zv
aWQgR2VvbG9jYXRpb25Db250cm9sbGVyOjpkaWROYXZpZ2F0ZVBhZ2UoKQoreworICAgIHdoaWxl
ICghbV9vYnNlcnZlcnMuaXNFbXB0eSgpKQorICAgICAgICByZW1vdmVPYnNlcnZlcihtX29ic2Vy
dmVycy5iZWdpbigpLT5nZXQoKSk7Cit9CisKIHZvaWQgR2VvbG9jYXRpb25Db250cm9sbGVyOjph
ZGRPYnNlcnZlcihHZW9sb2NhdGlvbiYgb2JzZXJ2ZXIsIGJvb2wgZW5hYmxlSGlnaEFjY3VyYWN5
KQogewotICAgIC8vIFRoaXMgbWF5IGJlIGNhbGxlZCBtdWx0aXBsZSB0aW1lcyB3aXRoIHRoZSBz
YW1lIG9ic2VydmVyLCB0aG91Z2ggcmVtb3ZlT2JzZXJ2ZXIoKQotICAgIC8vIGlzIGNhbGxlZCBv
bmx5IG9uY2Ugd2l0aCBlYWNoLgotICAgIGJvb2wgd2FzRW1wdHkgPSBtX29ic2VydmVycy5pc0Vt
cHR5KCk7CisgICAgYm9vbCBoaWdoQWNjdXJhY3lXYXNSZXF1aXJlZCA9IG5lZWRzSGlnaEFjY3Vy
YWN5KCk7CisKICAgICBtX29ic2VydmVycy5hZGQob2JzZXJ2ZXIpOwogICAgIGlmIChlbmFibGVI
aWdoQWNjdXJhY3kpCiAgICAgICAgIG1faGlnaEFjY3VyYWN5T2JzZXJ2ZXJzLmFkZChvYnNlcnZl
cik7CiAKLSAgICBpZiAoZW5hYmxlSGlnaEFjY3VyYWN5KQotICAgICAgICBtX2NsaWVudC5zZXRF
bmFibGVIaWdoQWNjdXJhY3kodHJ1ZSk7Ci0gICAgaWYgKHdhc0VtcHR5ICYmIG1fcGFnZS5pc1Zp
c2libGUoKSkKLSAgICAgICAgbV9jbGllbnQuc3RhcnRVcGRhdGluZyhvYnNlcnZlci5hdXRob3Jp
emF0aW9uVG9rZW4oKSk7CisgICAgaWYgKG1faXNVcGRhdGluZykgeworICAgICAgICBpZiAoIWhp
Z2hBY2N1cmFjeVdhc1JlcXVpcmVkICYmIGVuYWJsZUhpZ2hBY2N1cmFjeSkKKyAgICAgICAgICAg
IG1fY2xpZW50LnNldEVuYWJsZUhpZ2hBY2N1cmFjeSh0cnVlKTsKKyAgICB9IGVsc2UKKyAgICAg
ICAgc3RhcnRVcGRhdGluZ0lmTmVjZXNzYXJ5KCk7CiB9CiAKIHZvaWQgR2VvbG9jYXRpb25Db250
cm9sbGVyOjpyZW1vdmVPYnNlcnZlcihHZW9sb2NhdGlvbiYgb2JzZXJ2ZXIpCkBAIC03MiwxMiAr
NzgsMTcgQEAgdm9pZCBHZW9sb2NhdGlvbkNvbnRyb2xsZXI6OnJlbW92ZU9ic2VydmVyKEdlb2xv
Y2F0aW9uJiBvYnNlcnZlcikKICAgICBpZiAoIW1fb2JzZXJ2ZXJzLmNvbnRhaW5zKG9ic2VydmVy
KSkKICAgICAgICAgcmV0dXJuOwogCisgICAgYm9vbCBoaWdoQWNjdXJhY3lXYXNSZXF1aXJlZCA9
IG5lZWRzSGlnaEFjY3VyYWN5KCk7CisKICAgICBtX29ic2VydmVycy5yZW1vdmUob2JzZXJ2ZXIp
OwogICAgIG1faGlnaEFjY3VyYWN5T2JzZXJ2ZXJzLnJlbW92ZShvYnNlcnZlcik7CiAKKyAgICBp
ZiAoIW1faXNVcGRhdGluZykKKyAgICAgICAgcmV0dXJuOworCiAgICAgaWYgKG1fb2JzZXJ2ZXJz
LmlzRW1wdHkoKSkKLSAgICAgICAgbV9jbGllbnQuc3RvcFVwZGF0aW5nKCk7Ci0gICAgZWxzZSBp
ZiAobV9oaWdoQWNjdXJhY3lPYnNlcnZlcnMuaXNFbXB0eSgpKQorICAgICAgICBzdG9wVXBkYXRp
bmdJZk5lY2Vzc2FyeSgpOworICAgIGVsc2UgaWYgKGhpZ2hBY2N1cmFjeVdhc1JlcXVpcmVkICYm
ICFuZWVkc0hpZ2hBY2N1cmFjeSgpKQogICAgICAgICBtX2NsaWVudC5zZXRFbmFibGVIaWdoQWNj
dXJhY3koZmFsc2UpOwogfQogCkBAIC0xMzksOSArMTUwLDkgQEAgdm9pZCBHZW9sb2NhdGlvbkNv
bnRyb2xsZXI6OmFjdGl2aXR5U3RhdGVEaWRDaGFuZ2UoT3B0aW9uU2V0PEFjdGl2aXR5U3RhdGU6
OkZsYWcKICAgICBhdXRvIGNoYW5nZWQgPSBvbGRBY3Rpdml0eVN0YXRlIF4gbmV3QWN0aXZpdHlT
dGF0ZTsKICAgICBpZiAoY2hhbmdlZCAmIEFjdGl2aXR5U3RhdGU6OklzVmlzaWJsZSAmJiAhbV9v
YnNlcnZlcnMuaXNFbXB0eSgpKSB7CiAgICAgICAgIGlmIChuZXdBY3Rpdml0eVN0YXRlICYgQWN0
aXZpdHlTdGF0ZTo6SXNWaXNpYmxlKQotICAgICAgICAgICAgbV9jbGllbnQuc3RhcnRVcGRhdGlu
ZygoKm1fb2JzZXJ2ZXJzLnJhbmRvbSgpKS0+YXV0aG9yaXphdGlvblRva2VuKCkpOworICAgICAg
ICAgICAgc3RhcnRVcGRhdGluZ0lmTmVjZXNzYXJ5KCk7CiAgICAgICAgIGVsc2UKLSAgICAgICAg
ICAgIG1fY2xpZW50LnN0b3BVcGRhdGluZygpOworICAgICAgICAgICAgc3RvcFVwZGF0aW5nSWZO
ZWNlc3NhcnkoKTsKICAgICB9CiAKICAgICBpZiAoIW1fcGFnZS5pc1Zpc2libGUoKSkKQEAgLTE1
Miw2ICsxNjMsMjQgQEAgdm9pZCBHZW9sb2NhdGlvbkNvbnRyb2xsZXI6OmFjdGl2aXR5U3RhdGVE
aWRDaGFuZ2UoT3B0aW9uU2V0PEFjdGl2aXR5U3RhdGU6OkZsYWcKICAgICAgICAgbV9jbGllbnQu
cmVxdWVzdFBlcm1pc3Npb24ocGVybWlzc2lvblJlcXVlc3QuZ2V0KCkpOwogfQogCit2b2lkIEdl
b2xvY2F0aW9uQ29udHJvbGxlcjo6c3RhcnRVcGRhdGluZ0lmTmVjZXNzYXJ5KCkKK3sKKyAgICBp
ZiAobV9pc1VwZGF0aW5nIHx8ICFtX3BhZ2UuaXNWaXNpYmxlKCkgfHwgbV9vYnNlcnZlcnMuaXNF
bXB0eSgpKQorICAgICAgICByZXR1cm47CisKKyAgICBtX2NsaWVudC5zdGFydFVwZGF0aW5nKCgq
bV9vYnNlcnZlcnMucmFuZG9tKCkpLT5hdXRob3JpemF0aW9uVG9rZW4oKSwgbmVlZHNIaWdoQWNj
dXJhY3koKSk7CisgICAgbV9pc1VwZGF0aW5nID0gdHJ1ZTsKK30KKwordm9pZCBHZW9sb2NhdGlv
bkNvbnRyb2xsZXI6OnN0b3BVcGRhdGluZ0lmTmVjZXNzYXJ5KCkKK3sKKyAgICBpZiAoIW1faXNV
cGRhdGluZykKKyAgICAgICAgcmV0dXJuOworCisgICAgbV9jbGllbnQuc3RvcFVwZGF0aW5nKCk7
CisgICAgbV9pc1VwZGF0aW5nID0gZmFsc2U7Cit9CisKIGNvbnN0IGNoYXIqIEdlb2xvY2F0aW9u
Q29udHJvbGxlcjo6c3VwcGxlbWVudE5hbWUoKQogewogICAgIHJldHVybiAiR2VvbG9jYXRpb25D
b250cm9sbGVyIjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZ2VvbG9jYXRp
b24vR2VvbG9jYXRpb25Db250cm9sbGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2dlb2xv
Y2F0aW9uL0dlb2xvY2F0aW9uQ29udHJvbGxlci5oCmluZGV4IDQyZjVkMDYyZGI2ZjA5YzY2MDEx
MWQ2NmQ5ZjBmY2ZmZjNiMjA3NDAuLmJiZmY1NzVlYjA1ODMyNDA3ODBkM2I0MWE5Njc0MmM2YjFk
NzI0OGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZ2VvbG9jYXRpb24vR2Vv
bG9jYXRpb25Db250cm9sbGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9nZW9sb2Nh
dGlvbi9HZW9sb2NhdGlvbkNvbnRyb2xsZXIuaApAQCAtMzAsNiArMzAsNyBAQAogI2luY2x1ZGUg
IkFjdGl2aXR5U3RhdGVDaGFuZ2VPYnNlcnZlci5oIgogI2luY2x1ZGUgIkdlb2xvY2F0aW9uLmgi
CiAjaW5jbHVkZSAiUGFnZS5oIgorI2luY2x1ZGUgIlJlZ2lzdHJhYmxlRG9tYWluLmgiCiAjaW5j
bHVkZSA8d3RmL0hhc2hTZXQuaD4KICNpbmNsdWRlIDx3dGYvTm9uY29weWFibGUuaD4KICNpbmNs
dWRlIDx3dGYvUmVmUHRyLmg+CkBAIC02NSw2ICs2Niw4IEBAIHB1YmxpYzoKIAogICAgIHZvaWQg
cmV2b2tlQXV0aG9yaXphdGlvblRva2VuKGNvbnN0IFN0cmluZyYpOwogCisgICAgdm9pZCBkaWRO
YXZpZ2F0ZVBhZ2UoKTsKKwogcHJpdmF0ZToKICAgICBQYWdlJiBtX3BhZ2U7CiAgICAgR2VvbG9j
YXRpb25DbGllbnQmIG1fY2xpZW50OwpAQCAtNzMsNiArNzYsMTEgQEAgcHJpdmF0ZToKIAogICAg
IHN0ZDo6b3B0aW9uYWw8R2VvbG9jYXRpb25Qb3NpdGlvbkRhdGE+IG1fbGFzdFBvc2l0aW9uOwog
CisgICAgYm9vbCBuZWVkc0hpZ2hBY2N1cmFjeSgpIGNvbnN0IHsgcmV0dXJuICFtX2hpZ2hBY2N1
cmFjeU9ic2VydmVycy5pc0VtcHR5KCk7IH0KKworICAgIHZvaWQgc3RhcnRVcGRhdGluZ0lmTmVj
ZXNzYXJ5KCk7CisgICAgdm9pZCBzdG9wVXBkYXRpbmdJZk5lY2Vzc2FyeSgpOworCiAgICAgdHlw
ZWRlZiBIYXNoU2V0PFJlZjxHZW9sb2NhdGlvbj4+IE9ic2VydmVyc1NldDsKICAgICAvLyBBbGwg
b2JzZXJ2ZXJzOyBib3RoIHRob3NlIHJlcXVlc3RpbmcgaGlnaCBhY2N1cmFjeSBhbmQgdGhvc2Ug
bm90LgogICAgIE9ic2VydmVyc1NldCBtX29ic2VydmVyczsKQEAgLTgwLDYgKzg4LDkgQEAgcHJp
dmF0ZToKIAogICAgIC8vIFdoaWxlIHRoZSBwYWdlIGlzIG5vdCB2aXNpYmxlLCB3ZSBwZW5kIHBl
cm1pc3Npb24gcmVxdWVzdHMuCiAgICAgSGFzaFNldDxSZWY8R2VvbG9jYXRpb24+PiBtX3BlbmRp
bmdQZXJtaXNzaW9uUmVxdWVzdDsKKworICAgIFJlZ2lzdHJhYmxlRG9tYWluIG1fcmVnaXN0cmFi
bGVEb21haW47CisgICAgYm9vbCBtX2lzVXBkYXRpbmcgeyBmYWxzZSB9OwogfTsKIAogfSAvLyBu
YW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9nZW9s
b2NhdGlvbi9HZW9sb2NhdGlvblBvc2l0aW9uRGF0YS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9nZW9sb2NhdGlvbi9HZW9sb2NhdGlvblBvc2l0aW9uRGF0YS5oCmluZGV4IDkyNjIyMTcwYzhh
YWQ2OTg5YjhhMTJjZTQ4MzU2ZGM2ODdiZjZlMzUuLmNjMjE4MGE4MzdkMjc0M2MxZmJmNzYxYzQx
MGUxYzdlYmZlYWVlN2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZ2VvbG9j
YXRpb24vR2VvbG9jYXRpb25Qb3NpdGlvbkRhdGEuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2dlb2xvY2F0aW9uL0dlb2xvY2F0aW9uUG9zaXRpb25EYXRhLmgKQEAgLTI5LDcgKzI5LDcg
QEAKICNpbmNsdWRlIDx3dGYvUmVmLmg+CiAjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KIAot
I2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCisjaWYgUExBVEZPUk0oQ09DT0EpCiBPQkpDX0NMQVNT
IENMTG9jYXRpb247CiAjZW5kaWYKIApAQCAtNDcsNyArNDcsNyBAQCBwdWJsaWM6CiAgICAgewog
ICAgIH0KIAotI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCisjaWYgUExBVEZPUk0oQ09DT0EpCiAg
ICAgV0VCQ09SRV9FWFBPUlQgZXhwbGljaXQgR2VvbG9jYXRpb25Qb3NpdGlvbkRhdGEoQ0xMb2Nh
dGlvbiopOwogI2VuZGlmCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZ2Vv
bG9jYXRpb24vY29jb2EvR2VvbG9jYXRpb25Qb3NpdGlvbkRhdGFDb2NvYS5tbSBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvZ2VvbG9jYXRpb24vY29jb2EvR2VvbG9jYXRpb25Qb3NpdGlvbkRhdGFD
b2NvYS5tbQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi5jMGE5YmVlNjU1Njk0ZGIzYWJmMTU3ZWVkMTkwNzZlYWQ1ODU0
NDA2Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9nZW9sb2NhdGlv
bi9jb2NvYS9HZW9sb2NhdGlvblBvc2l0aW9uRGF0YUNvY29hLm1tCkBAIC0wLDAgKzEsNTMgQEAK
Ky8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQXBwbGUgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVk
LgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlz
dHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5D
LiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENP
TlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBC
VVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisg
KiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW1wb3J0ICJj
b25maWcuaCIKKyNpbXBvcnQgIkdlb2xvY2F0aW9uUG9zaXRpb24uaCIKKworI2ltcG9ydCA8Q29y
ZUxvY2F0aW9uL0NMTG9jYXRpb24uaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitHZW9sb2Nh
dGlvblBvc2l0aW9uRGF0YTo6R2VvbG9jYXRpb25Qb3NpdGlvbkRhdGEoQ0xMb2NhdGlvbiogbG9j
YXRpb24pCisgICAgOiB0aW1lc3RhbXAobG9jYXRpb24udGltZXN0YW1wLnRpbWVJbnRlcnZhbFNp
bmNlMTk3MCkKKyAgICAsIGxhdGl0dWRlKGxvY2F0aW9uLmNvb3JkaW5hdGUubGF0aXR1ZGUpCisg
ICAgLCBsb25naXR1ZGUobG9jYXRpb24uY29vcmRpbmF0ZS5sb25naXR1ZGUpCisgICAgLCBhY2N1
cmFjeShsb2NhdGlvbi5ob3Jpem9udGFsQWNjdXJhY3kpCit7CisgICAgaWYgKGxvY2F0aW9uLnZl
cnRpY2FsQWNjdXJhY3kgPj0gMC4wKSB7CisgICAgICAgIGFsdGl0dWRlID0gbG9jYXRpb24uYWx0
aXR1ZGU7CisgICAgICAgIGFsdGl0dWRlQWNjdXJhY3kgPSBsb2NhdGlvbi52ZXJ0aWNhbEFjY3Vy
YWN5OworICAgIH0KKyAgICBpZiAobG9jYXRpb24uc3BlZWQgPj0gMC4wKQorICAgICAgICBzcGVl
ZCA9IGxvY2F0aW9uLnNwZWVkOworICAgIGlmIChsb2NhdGlvbi5jb3Vyc2UgPj0gMC4wKQorICAg
ICAgICBoZWFkaW5nID0gbG9jYXRpb24uY291cnNlOworI2lmICFQTEFURk9STShNQUNDQVRBTFlT
VCkKKyAgICBpZiAobG9jYXRpb24uZmxvb3IpCisgICAgICAgIGZsb29yTGV2ZWwgPSBsb2NhdGlv
bi5mbG9vci5sZXZlbDsKKyNlbmRpZgorfQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2dlb2xvY2F0aW9uL2lvcy9HZW9sb2NhdGlv
blBvc2l0aW9uRGF0YUlPUy5tbSBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZ2VvbG9jYXRpb24v
aW9zL0dlb2xvY2F0aW9uUG9zaXRpb25EYXRhSU9TLm1tCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCA5OGQ5YTI0MjFlN2YyMzA5YjRmNjIzYjE0ZDdjYmUyYjZjN2UwNDVjLi4wMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvZ2VvbG9jYXRpb24vaW9zL0dlb2xvY2F0aW9uUG9zaXRpb25EYXRhSU9TLm1tCisrKyAv
ZGV2L251bGwKQEAgLTEsNTcgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNyBBcHBs
ZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQK
LSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCi0gKiBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRI
RQotICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQg
U0hBTEwgQVBQTEUgSU5DLiBPUgotICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCi0gKiBFWEVNUExBUlksIE9SIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBQ
Uk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwg
REFUQSwgT1IKLSAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKLSAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgotICovCi0KLSNpbXBvcnQgImNvbmZpZy5oIgotI2ltcG9ydCAiR2VvbG9jYXRpb25Q
b3NpdGlvbi5oIgotCi0jaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKLQotI2ltcG9ydCA8Q29yZUxv
Y2F0aW9uL0NMTG9jYXRpb24uaD4KLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1HZW9sb2NhdGlv
blBvc2l0aW9uRGF0YTo6R2VvbG9jYXRpb25Qb3NpdGlvbkRhdGEoQ0xMb2NhdGlvbiogbG9jYXRp
b24pCi0gICAgOiB0aW1lc3RhbXAobG9jYXRpb24udGltZXN0YW1wLnRpbWVJbnRlcnZhbFNpbmNl
MTk3MCkKLSAgICAsIGxhdGl0dWRlKGxvY2F0aW9uLmNvb3JkaW5hdGUubGF0aXR1ZGUpCi0gICAg
LCBsb25naXR1ZGUobG9jYXRpb24uY29vcmRpbmF0ZS5sb25naXR1ZGUpCi0gICAgLCBhY2N1cmFj
eShsb2NhdGlvbi5ob3Jpem9udGFsQWNjdXJhY3kpCi17Ci0gICAgaWYgKGxvY2F0aW9uLnZlcnRp
Y2FsQWNjdXJhY3kgPj0gMC4wKSB7Ci0gICAgICAgIGFsdGl0dWRlID0gbG9jYXRpb24uYWx0aXR1
ZGU7Ci0gICAgICAgIGFsdGl0dWRlQWNjdXJhY3kgPSBsb2NhdGlvbi52ZXJ0aWNhbEFjY3VyYWN5
OwotICAgIH0KLSAgICBpZiAobG9jYXRpb24uc3BlZWQgPj0gMC4wKQotICAgICAgICBzcGVlZCA9
IGxvY2F0aW9uLnNwZWVkOwotICAgIGlmIChsb2NhdGlvbi5jb3Vyc2UgPj0gMC4wKQotICAgICAg
ICBoZWFkaW5nID0gbG9jYXRpb24uY291cnNlOwotI2lmICFQTEFURk9STShNQUNDQVRBTFlTVCkK
LSAgICBpZiAobG9jYXRpb24uZmxvb3IpCi0gICAgICAgIGZsb29yTGV2ZWwgPSBsb2NhdGlvbi5m
bG9vci5sZXZlbDsKLSNlbmRpZgotfQotCi19Ci0KLSNlbmRpZiAvLyBQTEFURk9STShJT1NfRkFN
SUxZKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvU291cmNlc0NvY29hLnR4dCBiL1NvdXJj
ZS9XZWJDb3JlL1NvdXJjZXNDb2NvYS50eHQKaW5kZXggYjYzMWQyODU3OWQxMDU0ODRlYmUxN2Nm
M2MyZDMxNjgyZTViMmZkYi4uYmE5NGE3MzE5ZmQzYTdiODQzZWQ2MzBlMDk5ZjUzMmMxZjQ1ODQ5
ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvU291cmNlc0NvY29hLnR4dAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9Tb3VyY2VzQ29jb2EudHh0CkBAIC0yNTEsNiArMjUxLDcgQEAgcGxhdGZvcm0v
Y2YvTWVkaWFBY2Nlc3NpYmlsaXR5U29mdExpbmsuY3BwCiBwbGF0Zm9ybS9jZi9SdW5Mb29wT2Jz
ZXJ2ZXIuY3BwCiBwbGF0Zm9ybS9jZi9TaGFyZWRCdWZmZXJDRi5jcHAKIHBsYXRmb3JtL2NvY29h
L0NvbnRlbnRGaWx0ZXJVbmJsb2NrSGFuZGxlckNvY29hLm1tIEBuby11bmlmeQorcGxhdGZvcm0v
Y29jb2EvQ29yZUxvY2F0aW9uR2VvbG9jYXRpb25Qcm92aWRlci5tbQogcGxhdGZvcm0vY29jb2Ev
Q29yZVZpZGVvU29mdExpbmsuY3BwCiBwbGF0Zm9ybS9jb2NvYS9EcmFnRGF0YUNvY29hLm1tCiBw
bGF0Zm9ybS9jb2NvYS9EcmFnSW1hZ2VDb2NvYS5tbQpAQCAtMzA3LDEwICszMDgsMTAgQEAgcGxh
dGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL01lZGlhU2VsZWN0aW9uR3JvdXBBVkZPYmpDLm1t
CiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vU2FtcGxlQnVmZmVyRGlzcGxheUxheWVy
LmNwcAogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL1dlYk1lZGlhU2Vzc2lvbk1hbmFn
ZXJNYWMuY3BwCiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9BVkFzc2V0TUlN
RVR5cGVDYWNoZS5tbQotcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvQVZBc3Nl
dFRyYWNrVXRpbGl0aWVzLm1tCitwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9B
VkFzc2V0VHJhY2tVdGlsaXRpZXMubW0gQG5vLXVuaWZ5CiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZv
dW5kYXRpb24vb2JqYy9BVk91dHB1dERldmljZU1lbnVDb250cm9sbGVyVGFyZ2V0UGlja2VyLm1t
IEBuby11bmlmeQogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvQVZSb3V0ZVBp
Y2tlclZpZXdUYXJnZXRQaWNrZXIubW0KLXBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9v
YmpjL0FWU3RyZWFtRGF0YVBhcnNlck1JTUVUeXBlQ2FjaGUubW0KK3BsYXRmb3JtL2dyYXBoaWNz
L2F2Zm91bmRhdGlvbi9vYmpjL0FWU3RyZWFtRGF0YVBhcnNlck1JTUVUeXBlQ2FjaGUubW0gQG5v
LXVuaWZ5CiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9BdWRpb1RyYWNrUHJp
dmF0ZUFWRk9iakMubW0KIHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0F1ZGlv
VHJhY2tQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDLmNwcAogcGxhdGZvcm0vZ3JhcGhpY3MvYXZm
b3VuZGF0aW9uL29iamMvQ0RNU2Vzc2lvbkFWQ29udGVudEtleVNlc3Npb24ubW0KQEAgLTMxOCw3
ICszMTksNyBAQCBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9DRE1TZXNzaW9u
QVZGb3VuZGF0aW9uT2JqQy5tbQogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMv
Q0RNU2Vzc2lvbkFWU3RyZWFtU2Vzc2lvbi5tbQogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0
aW9uL29iamMvQ0RNU2Vzc2lvbk1lZGlhU291cmNlQVZGT2JqQy5tbQogcGxhdGZvcm0vZ3JhcGhp
Y3MvYXZmb3VuZGF0aW9uL29iamMvSW1hZ2VEZWNvZGVyQVZGT2JqQy5tbQotcGxhdGZvcm0vZ3Jh
cGhpY3MvYXZmb3VuZGF0aW9uL29iamMvSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUFWRk9iakMubW0K
K3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0luYmFuZFRleHRUcmFja1ByaXZh
dGVBVkZPYmpDLm1tIEBuby11bmlmeQogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29i
amMvSW5iYW5kQ2hhcHRlclRyYWNrUHJpdmF0ZUFWRk9iakMubW0gQG5vLXVuaWZ5CiBwbGF0Zm9y
bS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9Mb2NhbFNhbXBsZUJ1ZmZlckRpc3BsYXlMYXll
ci5tbQogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5YmFja1Rh
cmdldFBpY2tlck1hYy5tbQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ov
cHJvamVjdC5wYnhwcm9qCmluZGV4IDNmOWIwNTRhZTRhZTdhN2QxNjdmNGM3NTMyNzZlZjkzNDY2
M2I3NWIuLmZhMDUyZGQxODlmMzY5ODViMWQ2OWM5YzVjNGQ2YTJjYzkyMzI1NTQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTEz
NTMsNiArMTM1Myw3IEBACiAJCTQ2ODM0NEUwMUVEREZBQUEwMEI3Nzk1QiAvKiBET01SZWN0TGlz
dC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDY4MzQ0
REUxRURERkE1RjAwQjc3OTVCIC8qIERPTVJlY3RMaXN0LmggKi87IHNldHRpbmdzID0ge0FUVFJJ
QlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNDY4M0RGNDAyNzY3REY5ODAwN0QwMEM4IC8q
IEpTU2hhZG93UmVhbG1HbG9iYWxTY29wZUJhc2UuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ2ODNERjNFMjc2N0RGOTgwMDdEMDBDOCAvKiBKU1NoYWRv
d1JlYWxtR2xvYmFsU2NvcGVCYXNlLmggKi87IH07CiAJCTQ2ODNERjQxMjc2N0U5MUEwMDdEMDBD
OCAvKiBTaGFkb3dSZWFsbUdsb2JhbFNjb3BlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA0NjgzREYzQjI3NjdERjI2MDA3RDAwQzggLyogU2hhZG93UmVh
bG1HbG9iYWxTY29wZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7
IH07IH07CisJCTQ2ODhFOTgwMjdCNkI0NTAwMDU2N0NEMiAvKiBDb3JlTG9jYXRpb25HZW9sb2Nh
dGlvblByb3ZpZGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA0Njg4RTk3RjI3QjZCNDQ0MDA1NjdDRDIgLyogQ29yZUxvY2F0aW9uR2VvbG9jYXRpb25Q
cm92aWRlci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07
CiAJCTQ2ODhFRTNDMjZERDI2MTAwMDJBRjVDNCAvKiBDcm9zc09yaWdpbk1vZGUuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ2ODhFRTNBMjZERDI2MEMw
MDJBRjVDNCAvKiBDcm9zc09yaWdpbk1vZGUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9
IChQcml2YXRlLCApOyB9OyB9OwogCQk0Njk0M0RDOTI3NjNGODE3MDA0QjYxMEUgLyogU2hhcmVk
V29ya2VyT2JqZWN0SWRlbnRpZmllci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gNDY5NDNEQzcyNzYzRjgwRTAwNEI2MTBFIC8qIFNoYXJlZFdvcmtlck9i
amVjdElkZW50aWZpZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCAp
OyB9OyB9OwogCQk0Njk4NUYyMzI3QTRBNkFEMDA5N0EzMkIgLyogU2hhcmVkV29ya2VyS2V5Lmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0Njk4NUYyMjI3
QTRBNjg2MDA5N0EzMkIgLyogU2hhcmVkV29ya2VyS2V5LmggKi87IHNldHRpbmdzID0ge0FUVFJJ
QlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKQEAgLTEzNjAsNiArMTM2MSw3IEBACiAJCTQ2OUQ3
N0I4MjcwMTYyNTEwMDE0MkZBNiAvKiBOYXZpZ2F0aW9uUmVxdWVzdGVyLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0NjlENzdCNjI3MDE2MjUwMDAxNDJG
QTYgLyogTmF2aWdhdGlvblJlcXVlc3Rlci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0g
KFByaXZhdGUsICk7IH07IH07CiAJCTQ2QTc4QjM0Mjc5OUJENzEwMDExNTRGRSAvKiBXb3JrZXJP
cHRpb25zLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1
QzFCMUQyNjI2RjE4QTRCMDA4ODJEQTIgLyogV29ya2VyT3B0aW9ucy5oICovOyBzZXR0aW5ncyA9
IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTQ2QUFBQTNEMjVEMzYzMjAwMEJB
RjQyRiAvKiBBdWRpb0ZpbGVSZWFkZXJDb2NvYS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gNDZBQUFBM0EyNUQzNjMxNDAwQkFGNDJGIC8qIEF1ZGlvRmls
ZVJlYWRlckNvY29hLmggKi87IH07CisJCTQ2QjU5OTM5MjdCQjQzNEIwMDM4MDdGRSAvKiBBVlN0
cmVhbURhdGFQYXJzZXJNSU1FVHlwZUNhY2hlLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gQ0QxMUIzRTAyMjdDQUFBOTAwMjNBRkM3IC8qIEFWU3RyZWFt
RGF0YVBhcnNlck1JTUVUeXBlQ2FjaGUubW0gKi87IH07CiAJCTQ2QjYzRjZDMUM2RThEMTkwMDJF
OTE0QiAvKiBKU0V2ZW50VGFyZ2V0Q3VzdG9tLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA0NkI2M0Y2QjFDNkU4Q0RGMDAyRTkxNEIgLyogSlNFdmVudFRh
cmdldEN1c3RvbS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07
IH07CiAJCTQ2QjY1MEREMjI5NjI2MjcwMEZEOEFBNCAvKiBQYWdlSWRlbnRpZmllci5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDZCNjUwREIyMjk2MjYy
NzAwRkQ4QUE0IC8qIFBhZ2VJZGVudGlmaWVyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMg
PSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNDZCODU5M0MyNjE2NzIyNzAwMTlFREM2IC8qIFNjcmlw
dEJ1ZmZlclNvdXJjZVByb3ZpZGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA0NkI4NTkzQTI2MTY3MjBDMDAxOUVEQzYgLyogU2NyaXB0QnVmZmVyU291
cmNlUHJvdmlkZXIuaCAqLzsgfTsKQEAgLTEzNzAsNiArMTM3Miw3IEBACiAJCTQ2Qjk1MTk5MjA3
RDYzNEQwMEE3RDJERCAvKiBSZW1vdGVET01XaW5kb3cuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ2Qjk1MThFMjA3RDYzMkEwMEE3RDJERCAvKiBSZW1v
dGVET01XaW5kb3cuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9
OyB9OwogCQk0NkI5NTE5QTIwN0Q2MzU0MDBBN0QyREQgLyogUmVtb3RlRnJhbWUuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ2Qjk1MTkyMjA3RDYzMkUw
MEE3RDJERCAvKiBSZW1vdGVGcmFtZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFBy
aXZhdGUsICk7IH07IH07CiAJCTQ2Qjk1QkY1MjIzMUNGRDYwMDUzQTUwNCAvKiBEZXZpY2VPcmll
bnRhdGlvbkFuZE1vdGlvbkFjY2Vzc0NvbnRyb2xsZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ2Qjk1QkY0MjIzMUNGQjgwMDUzQTUwNCAvKiBEZXZp
Y2VPcmllbnRhdGlvbkFuZE1vdGlvbkFjY2Vzc0NvbnRyb2xsZXIuaCAqLzsgfTsKKwkJNDZCQTQ5
QjgyN0JCNDQzMzAwNzdGNjNGIC8qIEFWQXNzZXRUcmFja1V0aWxpdGllcy5tbSBpbiBTb3VyY2Vz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENERUNBODk4MUVERjQ0N0QwMERD
QjA4QiAvKiBBVkFzc2V0VHJhY2tVdGlsaXRpZXMubW0gKi87IH07CiAJCTQ2QkNCQkMyMjA4NTAw
OEYwMDcxMDYzOCAvKiBKU1JlbW90ZURPTVdpbmRvd0Jhc2UuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ2QkNCQkMwMjA4NTAwN0YwMDcxMDYzOCAvKiBK
U1JlbW90ZURPTVdpbmRvd0Jhc2UuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2
YXRlLCApOyB9OyB9OwogCQk0NkJEMDVDNTI1QkI2RTU5MDAyMjVGMzAgLyogQWRkRXZlbnRMaXN0
ZW5lck9wdGlvbnMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDQ2QkQwNUMyMjVCQjZFNEUwMDIyNUYzMCAvKiBBZGRFdmVudExpc3RlbmVyT3B0aW9ucy5o
ICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTQ2QkQw
NUM2MjVCQjZFNkMwMDIyNUYzMCAvKiBFdmVudExpc3RlbmVyT3B0aW9ucy5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDZCRDA1QzMyNUJCNkU0RTAwMjI1
RjMwIC8qIEV2ZW50TGlzdGVuZXJPcHRpb25zLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMg
PSAoUHJpdmF0ZSwgKTsgfTsgfTsKQEAgLTEzNzgsNiArMTM4MSw3IEBACiAJCTQ2QzY5NkNCMUU3
MjA1RjcwMDU5NzkzNyAvKiBDUFVNb25pdG9yLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA0NkM2OTZDOTFFNzIwNUU0MDA1OTc5MzcgLyogQ1BVTW9uaXRv
ci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTQ2
QzY5NkNDMUU3MjA1RkMwMDU5NzkzNyAvKiBDUFVNb25pdG9yLmNwcCBpbiBTb3VyY2VzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ2QzY5NkNBMUU3MjA1RTQwMDU5NzkzNyAv
KiBDUFVNb25pdG9yLmNwcCAqLzsgfTsKIAkJNDZDODNFRkUxQTlCQkUyOTAwQTc5QTQxIC8qIEdl
b05vdGlmaWVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA0NkM4M0VGQzFBOUJCRTI5MDBBNzlBNDEgLyogR2VvTm90aWZpZXIuaCAqLzsgc2V0dGluZ3Mg
PSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQk0NkNBOTQzMTI3Qjg2OTU4MDBG
NEY1RkYgLyogSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUFWRk9iakMubW0gaW4gU291cmNlcyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwN0FBNkI2QTE2NkQwMTk1MDBENDU2NzEg
LyogSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUFWRk9iakMubW0gKi87IH07CiAJCTQ2Q0E5QzQ0MUY5
N0JCRTkwMDRDRkMzQSAvKiBWaXNpYmlsaXR5U3RhdGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ2Q0E5QzQxMUY5N0JCRTcwMDRDRkMzQSAvKiBWaXNp
YmlsaXR5U3RhdGUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9
OyB9OwogCQk0NkNGNTA0QTI3QUIxRUE0MDA3MERCQzggLyogU2hhcmVkV29ya2VyQ29udGV4dE1h
bmFnZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ2
Q0Y1MDQ4MjdBQjFFQTEwMDcwREJDOCAvKiBTaGFyZWRXb3JrZXJDb250ZXh0TWFuYWdlci5oICov
OyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTQ2RDAwMDQw
MjZBMEZFQjMwMEQxQkYxRSAvKiBTdWJtaXRFdmVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDZEMDAwM0UyNkEwRkU2RjAwRDFCRjFFIC8qIFN1Ym1p
dEV2ZW50LmggKi87IH07CkBAIC0yNjk2LDcgKzI3MDAsNyBAQAogCQk4Mzc2NUY5NTFEQUM1MjJG
MDBDMDY1MzcgLyogTW91c2VFdmVudEluaXQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDgzNzY1Rjk0MURBQzUyMTgwMEMwNjUzNyAvKiBNb3VzZUV2ZW50
SW5pdC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJ
CTgzNzg4NzgyMjREOEE2MDkwMDBENEE1QiAvKiBBdWRpb0J1ZmZlclNvdXJjZU9wdGlvbnMuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDgzNzg4NzdGMjRE
OEE1RkMwMDBENEE1QiAvKiBBdWRpb0J1ZmZlclNvdXJjZU9wdGlvbnMuaCAqLzsgfTsKIAkJODM3
OTM2M0YxRkJCQjBCNDAwQzgwMjNDIC8qIFNlcnZpY2VXb3JrZXJDbGllbnREYXRhLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4Mzc5MzYzRTFGQkJCMEE1
MDBDODAyM0MgLyogU2VydmljZVdvcmtlckNsaWVudERhdGEuaCAqLzsgc2V0dGluZ3MgPSB7QVRU
UklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwotCQk4Mzc5NjRDRjFGOERCNjlEMDAyMThFQTAg
LyogR2VvbG9jYXRpb25Qb3NpdGlvbkRhdGFJT1MubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4Mzc5NjRDRTFGOERCNjlBMDAyMThFQTAgLyogR2VvbG9j
YXRpb25Qb3NpdGlvbkRhdGFJT1MubW0gKi87IH07CisJCTgzNzk2NENGMUY4REI2OUQwMDIxOEVB
MCAvKiBHZW9sb2NhdGlvblBvc2l0aW9uRGF0YUNvY29hLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODM3OTY0Q0UxRjhEQjY5QTAwMjE4RUEwIC8qIEdl
b2xvY2F0aW9uUG9zaXRpb25EYXRhQ29jb2EubW0gKi87IH07CiAJCTgzN0E4MDEzMUUxRTEyNzMw
MDAyNkI5RiAvKiBMb2NhbGl6YWJsZS5zdHJpbmdzZGljdCBpbiBSZXNvdXJjZXMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODM3QTgwMTExRTFFMTI3MzAwMDI2QjlGIC8qIExv
Y2FsaXphYmxlLnN0cmluZ3NkaWN0ICovOyB9OwogCQk4MzdDMEI3NjI0REIzODUwMDA1RDU5NTkg
LyogRHluYW1pY3NDb21wcmVzc29yT3B0aW9ucy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gODM3QzBCNzMyNERCMzg0MjAwNUQ1OTU5IC8qIER5bmFtaWNz
Q29tcHJlc3Nvck9wdGlvbnMuaCAqLzsgfTsKIAkJODM3RkIzNDUxRjlFQTA2RDAwRDBGQzMxIC8q
IEV4dGVuZGFibGVNZXNzYWdlRXZlbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDgzN0ZCMzQwMUY5RUEwNjYwMEQwRkMzMSAvKiBFeHRlbmRhYmxlTWVz
c2FnZUV2ZW50LmggKi87IH07CkBAIC05Mjc1LDYgKzkyNzksOCBAQAogCQk0NjgzREYzQzI3NjdE
RjI2MDA3RDAwQzggLyogU2hhZG93UmVhbG1HbG9iYWxTY29wZS5pZGwgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gU2hhZG93UmVh
bG1HbG9iYWxTY29wZS5pZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQ2ODNERjNE
Mjc2N0RGOTgwMDdEMDBDOCAvKiBKU1NoYWRvd1JlYWxtR2xvYmFsU2NvcGVCYXNlLmNwcCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTU2hhZG93UmVhbG1HbG9iYWxTY29w
ZUJhc2UuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0NjgzREYzRTI3NjdERjk4
MDA3RDAwQzggLyogSlNTaGFkb3dSZWFsbUdsb2JhbFNjb3BlQmFzZS5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBKU1NoYWRvd1JlYWxtR2xvYmFsU2NvcGVCYXNlLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTQ2ODhFOTdEMjdCNkI0NDMwMDU2N0NEMiAvKiBDb3Jl
TG9jYXRpb25HZW9sb2NhdGlvblByb3ZpZGVyLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gQ29y
ZUxvY2F0aW9uR2VvbG9jYXRpb25Qcm92aWRlci5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKKwkJNDY4OEU5N0YyN0I2QjQ0NDAwNTY3Q0QyIC8qIENvcmVMb2NhdGlvbkdlb2xvY2F0aW9u
UHJvdmlkZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQ29yZUxvY2F0aW9uR2VvbG9jYXRpb25Qcm92aWRl
ci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0Njg4RUUzQTI2REQyNjBDMDAyQUY1
QzQgLyogQ3Jvc3NPcmlnaW5Nb2RlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IENyb3NzT3JpZ2luTW9kZS5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0NjhCOEJERTI1Q0M4NDkzMDBGNjc4MjIg
LyogSlNCYXNlQXVkaW9Db250ZXh0Q3VzdG9tLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTQmFz
ZUF1ZGlvQ29udGV4dEN1c3RvbS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQ2
OTQzREM3Mjc2M0Y4MEUwMDRCNjEwRSAvKiBTaGFyZWRXb3JrZXJPYmplY3RJZGVudGlmaWVyLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IFNoYXJlZFdvcmtlck9iamVjdElkZW50aWZpZXIuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTEyMTk2LDcgKzEyMjAyLDcgQEAKIAkJODM3ODg3ODEyNEQ4
QTVGQzAwMEQ0QTVCIC8qIEF1ZGlvQnVmZmVyU291cmNlT3B0aW9ucy5pZGwgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gQXVkaW9C
dWZmZXJTb3VyY2VPcHRpb25zLmlkbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJODM3
OTM2M0MxRkJCQjBBNDAwQzgwMjNDIC8qIFNlcnZpY2VXb3JrZXJDbGllbnREYXRhLmNwcCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFNlcnZpY2VXb3JrZXJDbGllbnREYXRh
LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJODM3OTM2M0UxRkJCQjBBNTAwQzgw
MjNDIC8qIFNlcnZpY2VXb3JrZXJDbGllbnREYXRhLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IFNlcnZpY2VXb3JrZXJDbGllbnREYXRhLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07Ci0JCTgzNzk2NENFMUY4REI2OUEwMDIxOEVBMCAvKiBHZW9sb2NhdGlvblBvc2l0aW9u
RGF0YUlPUy5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgbmFtZSA9IEdlb2xv
Y2F0aW9uUG9zaXRpb25EYXRhSU9TLm1tOyBwYXRoID0gTW9kdWxlcy9nZW9sb2NhdGlvbi9pb3Mv
R2VvbG9jYXRpb25Qb3NpdGlvbkRhdGFJT1MubW07IHNvdXJjZVRyZWUgPSBTT1VSQ0VfUk9PVDsg
fTsKKwkJODM3OTY0Q0UxRjhEQjY5QTAwMjE4RUEwIC8qIEdlb2xvY2F0aW9uUG9zaXRpb25EYXRh
Q29jb2EubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IG5hbWUgPSBHZW9sb2Nh
dGlvblBvc2l0aW9uRGF0YUNvY29hLm1tOyBwYXRoID0gTW9kdWxlcy9nZW9sb2NhdGlvbi9jb2Nv
YS9HZW9sb2NhdGlvblBvc2l0aW9uRGF0YUNvY29hLm1tOyBzb3VyY2VUcmVlID0gU09VUkNFX1JP
T1Q7IH07CiAJCTgzN0E4MDEyMUUxRTEyNzMwMDAyNkI5RiAvKiBlbiAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQucGxpc3Quc3RyaW5nc2RpY3Q7
IG5hbWUgPSBlbjsgcGF0aCA9IGVuLmxwcm9qL0xvY2FsaXphYmxlLnN0cmluZ3NkaWN0OyBzb3Vy
Y2VUcmVlID0gU09VUkNFX1JPT1Q7IH07CiAJCTgzN0I3RDFGMURDM0Y1NEMwMEQwNTFGQyAvKiBW
YWxpZGF0aW9uQnViYmxlSU9TLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBw
YXRoID0gVmFsaWRhdGlvbkJ1YmJsZUlPUy5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJODM3QzBCNzMyNERCMzg0MjAwNUQ1OTU5IC8qIER5bmFtaWNzQ29tcHJlc3Nvck9wdGlvbnMu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gRHluYW1pY3NDb21wcmVzc29yT3B0aW9ucy5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwpAQCAtMjE2MjAsNiArMjE2MjYsMTQgQEAKIAkJCXBhdGggPSBjb250
ZXh0OwogCQkJc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsKIAkJfTsKKwkJNDY1QzNEMTkyN0I5OTFD
ODAwMjEzMDJGIC8qIGNvY29hICovID0geworCQkJaXNhID0gUEJYR3JvdXA7CisJCQljaGlsZHJl
biA9ICgKKwkJCQk4Mzc5NjRDRTFGOERCNjlBMDAyMThFQTAgLyogR2VvbG9jYXRpb25Qb3NpdGlv
bkRhdGFDb2NvYS5tbSAqLywKKwkJCSk7CisJCQlwYXRoID0gY29jb2E7CisJCQlzb3VyY2VUcmVl
ID0gIjxncm91cD4iOworCQl9OwogCQk0NjY5NENERTI3NTk0NDZEMDBFMzE1MEUgLyogc2hhcmVk
ICovID0gewogCQkJaXNhID0gUEJYR3JvdXA7CiAJCQljaGlsZHJlbiA9ICgKQEAgLTI1MTE3LDE0
ICsyNTEzMSw2IEBACiAJCQlwYXRoID0gYmVhY29uOwogCQkJc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsKIAkJfTsKLQkJODM3OTY0Q0MxRjhEQjY3RDAwMjE4RUEwIC8qIGlvcyAqLyA9IHsKLQkJCWlz
YSA9IFBCWEdyb3VwOwotCQkJY2hpbGRyZW4gPSAoCi0JCQkJODM3OTY0Q0UxRjhEQjY5QTAwMjE4
RUEwIC8qIEdlb2xvY2F0aW9uUG9zaXRpb25EYXRhSU9TLm1tICovLAotCQkJKTsKLQkJCW5hbWUg
PSBpb3M7Ci0JCQlzb3VyY2VUcmVlID0gIjxncm91cD4iOwotCQl9OwogCQk4M0ZCMzM2NTFGNTA4
QTE3MDA5ODZFNTQgLyogZW50cmllc2FwaSAqLyA9IHsKIAkJCWlzYSA9IFBCWEdyb3VwOwogCQkJ
Y2hpbGRyZW4gPSAoCkBAIC0yNjEzNSw3ICsyNjE0MSw3IEBACiAJCTk3MTE0NUZGMTRFRjAwNzkw
MDY3NEZEOSAvKiBnZW9sb2NhdGlvbiAqLyA9IHsKIAkJCWlzYSA9IFBCWEdyb3VwOwogCQkJY2hp
bGRyZW4gPSAoCi0JCQkJODM3OTY0Q0MxRjhEQjY3RDAwMjE4RUEwIC8qIGlvcyAqLywKKwkJCQk0
NjVDM0QxOTI3Qjk5MUM4MDAyMTMwMkYgLyogY29jb2EgKi8sCiAJCQkJOTc0NkFGMTMxNEY0RERF
NjAwM0U3QTcwIC8qIEdlb2xvY2F0aW9uLmNwcCAqLywKIAkJCQk5NzQ2QUYxNDE0RjREREU2MDAz
RTdBNzAgLyogR2VvbG9jYXRpb24uaCAqLywKIAkJCQk5NzQ2QUYxNTE0RjREREU2MDAzRTdBNzAg
LyogR2VvbG9jYXRpb24uaWRsICovLApAQCAtMjY4NDcsNiArMjY4NTMsOCBAQAogCQkJCUMxRjdC
NzJGMjQ0OEYyQUMwMDEyNDU1NyAvKiBBR1hDb21waWxlclNlcnZpY2UuY3BwICovLAogCQkJCUMx
RjdCNzMwMjQ0OEYyQUMwMDEyNDU1NyAvKiBBR1hDb21waWxlclNlcnZpY2UuaCAqLywKIAkJCQlB
MTQwOTBGQTFBQTUxRTFEMDA5MTE5MUEgLyogQ29udGVudEZpbHRlclVuYmxvY2tIYW5kbGVyQ29j
b2EubW0gKi8sCisJCQkJNDY4OEU5N0YyN0I2QjQ0NDAwNTY3Q0QyIC8qIENvcmVMb2NhdGlvbkdl
b2xvY2F0aW9uUHJvdmlkZXIuaCAqLywKKwkJCQk0Njg4RTk3RDI3QjZCNDQzMDA1NjdDRDIgLyog
Q29yZUxvY2F0aW9uR2VvbG9jYXRpb25Qcm92aWRlci5tbSAqLywKIAkJCQlDRDdEMzM0NTFDN0Ex
NkJGMDAwNDEyOTMgLyogQ29yZVZpZGVvU29mdExpbmsuY3BwICovLAogCQkJCUNEN0QzMzQ2MUM3
QTE2QkYwMDA0MTI5MyAvKiBDb3JlVmlkZW9Tb2Z0TGluay5oICovLAogCQkJCUY0NjJFNzlGMjQy
QURBM0MwMDIwNERERCAvKiBEcmFnRGF0YUNvY29hLm1tICovLApAQCAtMzM5NDEsNiArMzM5NDks
NyBAQAogCQkJCTNGODAyMDM3MUU5RTQ3QzUwMERFQzYxRCAvKiBDb3JlQXVkaW9DYXB0dXJlRGV2
aWNlTWFuYWdlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNDFGQ0NDM0IyNzQ2Njc1NjAwODkyQUQ2
IC8qIENvcmVBdWRpb0NhcHR1cmVTb3VyY2UuaCBpbiBIZWFkZXJzICovLAogCQkJCTA3QUZGNDIy
MUVGQjE0NDkwMEI1NDVCMyAvKiBDb3JlQXVkaW9DYXB0dXJlU291cmNlSU9TLmggaW4gSGVhZGVy
cyAqLywKKwkJCQk0Njg4RTk4MDI3QjZCNDUwMDA1NjdDRDIgLyogQ29yZUxvY2F0aW9uR2VvbG9j
YXRpb25Qcm92aWRlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQ0Q3RDMzNDgxQzdBMTZCRjAwMDQx
MjkzIC8qIENvcmVWaWRlb1NvZnRMaW5rLmggaW4gSGVhZGVycyAqLywKIAkJCQk4NjJGMTI5RTE4
QzE1NzZGMDA1QzU0QUYgLyogQ291bnRlZFVzZXJBY3Rpdml0eS5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJQTgwRTZEMDQwQTE5ODlDQTAwN0ZCOEM1IC8qIENvdW50ZXIuaCBpbiBIZWFkZXJzICovLApA
QCAtMzg2OTcsOCArMzg3MDYsMTAgQEAKIAkJCQlDRDBFRUUwRTE0NzQzRjM5MDAzRUFGQTIgLyog
QXVkaW9PdXRwdXRVbml0QWRhcHRvcklPUy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlDREE3OTgy
NzE3MEEyNzkxMDBENDVDNTUgLyogQXVkaW9TZXNzaW9uSU9TLm1tIGluIFNvdXJjZXMgKi8sCiAJ
CQkJQ0Q4QTdCQkIxOTc3MzVGRTAwQ0JENjQzIC8qIEF1ZGlvU291cmNlUHJvdmlkZXJBVkZPYmpD
Lm1tIGluIFNvdXJjZXMgKi8sCisJCQkJNDZCQTQ5QjgyN0JCNDQzMzAwNzdGNjNGIC8qIEFWQXNz
ZXRUcmFja1V0aWxpdGllcy5tbSBpbiBTb3VyY2VzICovLAogCQkJCTBGQ0EyOTM1MjZGQzM5MTcw
MDZCNEFFQiAvKiBBVkF1ZGlvU2Vzc2lvbkNhcHR1cmVEZXZpY2VNYW5hZ2VyLm1tIGluIFNvdXJj
ZXMgKi8sCiAJCQkJMDczOEU1RUMyNDk5ODM5MDAwREExMDFDIC8qIEFWT3V0cHV0RGV2aWNlTWVu
dUNvbnRyb2xsZXJUYXJnZXRQaWNrZXIubW0gaW4gU291cmNlcyAqLywKKwkJCQk0NkI1OTkzOTI3
QkI0MzRCMDAzODA3RkUgLyogQVZTdHJlYW1EYXRhUGFyc2VyTUlNRVR5cGVDYWNoZS5tbSBpbiBT
b3VyY2VzICovLAogCQkJCUNEMzM2RjYxMTdGOUY2NDcwMERERENEMCAvKiBBVlRyYWNrUHJpdmF0
ZUFWRk9iakNJbXBsLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJNDk5NkMwRjYyNzE3NzQ4ODAwMkMx
MjVEIC8qIEFWVmlkZW9DYXB0dXJlU291cmNlLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJQ0RGNEI3
MTUxRTAwQjdFNTAwRTIzNUEyIC8qIENETS5jcHAgaW4gU291cmNlcyAqLywKQEAgLTM4NzE2LDEz
ICszODcyNywxNCBAQAogCQkJCTUxOEY0RkY2MTk0Q0E0RTYwMDgxQkFBRSAvKiBHYW1lcGFkQnV0
dG9uLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTUxNkM2MjIwMTk1MEQ0ODcwMDMzN0U3NSAvKiBH
YW1lcGFkRXZlbnQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNTFBOUQ5RTkxOTVCOTMxRjAwMUIy
QjVDIC8qIEdhbWVwYWRNYW5hZ2VyLmNwcCBpbiBTb3VyY2VzICovLAotCQkJCTgzNzk2NENGMUY4
REI2OUQwMDIxOEVBMCAvKiBHZW9sb2NhdGlvblBvc2l0aW9uRGF0YUlPUy5tbSBpbiBTb3VyY2Vz
ICovLAorCQkJCTgzNzk2NENGMUY4REI2OUQwMDIxOEVBMCAvKiBHZW9sb2NhdGlvblBvc2l0aW9u
RGF0YUNvY29hLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJNkU3MkY1NEUyMjlEQ0QxMDAwQjNFMTUx
IC8qIEdyYXBoaWNzQ29udGV4dEdMQU5HTEUuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJN0MzRTUx
MEIxOERGOEYzNTAwQzExMkY3IC8qIEhUTUxDb252ZXJ0ZXIubW0gaW4gU291cmNlcyAqLywKIAkJ
CQlBOEQwNkIzQTBBMjY1RENEMDA1RTcyMDMgLyogSFRNTE5hbWVzLmNwcCBpbiBTb3VyY2VzICov
LAogCQkJCTFBQzkwMEMzMTk0M0MwRkMwMDg2MjVCNSAvKiBIVFRQSGVhZGVyTmFtZXMuY3BwIGlu
IFNvdXJjZXMgKi8sCiAJCQkJQ0QyN0FFNTEyMkE5ODY4NzAwOTQ3RkY5IC8qIEltYWdlUm90YXRp
b25TZXNzaW9uVlQubW0gaW4gU291cmNlcyAqLywKIAkJCQkwNzBFMkQwRjI2RjI1MDg5MDAxNEFB
QzMgLyogSW5iYW5kQ2hhcHRlclRyYWNrUHJpdmF0ZUFWRk9iakMubW0gaW4gU291cmNlcyAqLywK
KwkJCQk0NkNBOTQzMTI3Qjg2OTU4MDBGNEY1RkYgLyogSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUFW
Rk9iakMubW0gaW4gU291cmNlcyAqLywKIAkJCQlDRDA2M0Y4MjFFMjNGQTg5MDA4MTJCRTMgLyog
SW5pdERhdGFSZWdpc3RyeS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk5MzVDNDc3MDA5QUM0RDcz
MDBBNkFBQjQgLyogS2V5RXZlbnRNYWMubW0gaW4gU291cmNlcyAqLywKIAkJCQlDREE5OEUwQjE2
MDNDRDYwMDBGRUEzQjEgLyogTGVnYWN5Q0RNLmNwcCBpbiBTb3VyY2VzICovLApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFn
ZS5jcHAKaW5kZXggNmE4NWU4NDNkOGJiZTNkMTkyZDk3ZjQ5NmJkN2ViNDU0NzQ5ZGJhNC4uZWZl
MGUzODA2ZGM4NDgwMzBkMjJiOWQ5MDI5MTY3OTMzODViZmRhYSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGFnZS9QYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuY3Bw
CkBAIC02OSw2ICs2OSw3IEBACiAjaW5jbHVkZSAiRnJhbWVUcmVlLmgiCiAjaW5jbHVkZSAiRnJh
bWVWaWV3LmgiCiAjaW5jbHVkZSAiRnVsbHNjcmVlbk1hbmFnZXIuaCIKKyNpbmNsdWRlICJHZW9s
b2NhdGlvbkNvbnRyb2xsZXIuaCIKICNpbmNsdWRlICJIVE1MRWxlbWVudC5oIgogI2luY2x1ZGUg
IkhUTUxJbWFnZUVsZW1lbnQuaCIKICNpbmNsdWRlICJIVE1MTWVkaWFFbGVtZW50LmgiCkBAIC0x
MzMyLDYgKzEzMzMsMTEgQEAgdm9pZCBQYWdlOjpkaWRDb21taXRMb2FkKCkKICAgICByZXNldFRl
eHRSZWNvZ25pdGlvblJlc3VsdHMoKTsKICAgICByZXNldEltYWdlQW5hbHlzaXNRdWV1ZSgpOwog
I2VuZGlmCisKKyNpZiBFTkFCTEUoR0VPTE9DQVRJT04pCisgICAgaWYgKGF1dG8qIGdlb2xvY2F0
aW9uQ29udHJvbGxlciA9IEdlb2xvY2F0aW9uQ29udHJvbGxlcjo6ZnJvbSh0aGlzKSkKKyAgICAg
ICAgZ2VvbG9jYXRpb25Db250cm9sbGVyLT5kaWROYXZpZ2F0ZVBhZ2UoKTsKKyNlbmRpZgogfQog
CiB2b2lkIFBhZ2U6OmRpZEZpbmlzaExvYWQoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vY29jb2EvQ29yZUxvY2F0aW9uR2VvbG9jYXRpb25Qcm92aWRlci5oIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvQ29yZUxvY2F0aW9uR2VvbG9jYXRpb25Qcm92aWRlci5o
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLmM1MjQ2Yzg4NGFjZjhmNjlmY2I4ZjhhYzRhY2M3ZjRjZGU2NDVjZWQKLS0t
IC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9Db3JlTG9jYXRp
b25HZW9sb2NhdGlvblByb3ZpZGVyLmgKQEAgLTAsMCArMSw2NyBAQAorLyoKKyAqIENvcHlyaWdo
dCAoQykgMjAyMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgor
ICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgor
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJ
QlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElU
UyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsg
T1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBU
SEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNw
cmFnbWEgb25jZQorCisjaW5jbHVkZSA8d3RmL0NvbXBsZXRpb25IYW5kbGVyLmg+CisjaW5jbHVk
ZSA8d3RmL0ZvcndhcmQuaD4KKyNpbmNsdWRlIDx3dGYvUmV0YWluUHRyLmg+CisKK09CSkNfQ0xB
U1MgV2ViQ0xMb2NhdGlvbk1hbmFnZXI7CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3Mg
R2VvbG9jYXRpb25Qb3NpdGlvbkRhdGE7CitjbGFzcyBSZWdpc3RyYWJsZURvbWFpbjsKKworY2xh
c3MgV0VCQ09SRV9FWFBPUlQgQ29yZUxvY2F0aW9uR2VvbG9jYXRpb25Qcm92aWRlciB7CisgICAg
V1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CitwdWJsaWM6CisgICAgY2xhc3MgQ2xpZW50IHsKKyAg
ICBwdWJsaWM6CisgICAgICAgIHZpcnR1YWwgfkNsaWVudCgpIHsgfQorCisgICAgICAgIHZpcnR1
YWwgdm9pZCBnZW9sb2NhdGlvbkF1dGhvcml6YXRpb25HcmFudGVkKGNvbnN0IFN0cmluZyYgLyp3
ZWJzaXRlSWRlbnRpZmllciovKSB7IH0KKyAgICAgICAgdmlydHVhbCB2b2lkIGdlb2xvY2F0aW9u
QXV0aG9yaXphdGlvbkRlbmllZChjb25zdCBTdHJpbmcmIC8qd2Vic2l0ZUlkZW50aWZpZXIqLykg
eyB9CisgICAgICAgIHZpcnR1YWwgdm9pZCBwb3NpdGlvbkNoYW5nZWQoY29uc3QgU3RyaW5nJiB3
ZWJzaXRlSWRlbnRpZmllciwgR2VvbG9jYXRpb25Qb3NpdGlvbkRhdGEmJikgPSAwOworICAgICAg
ICB2aXJ0dWFsIHZvaWQgZXJyb3JPY2N1cnJlZChjb25zdCBTdHJpbmcmIHdlYnNpdGVJZGVudGlm
aWVyLCBjb25zdCBTdHJpbmcmIGVycm9yTWVzc2FnZSkgPSAwOworICAgICAgICB2aXJ0dWFsIHZv
aWQgcmVzZXRHZW9sb2NhdGlvbihjb25zdCBTdHJpbmcmIHdlYnNpdGVJZGVudGlmaWVyKSA9IDA7
CisgICAgfTsKKworICAgIENvcmVMb2NhdGlvbkdlb2xvY2F0aW9uUHJvdmlkZXIoY29uc3QgUmVn
aXN0cmFibGVEb21haW4mLCBDbGllbnQmKTsKKyAgICB+Q29yZUxvY2F0aW9uR2VvbG9jYXRpb25Q
cm92aWRlcigpOworCisgICAgdm9pZCBzdGFydCgpOworICAgIHZvaWQgc3RvcCgpOworCisgICAg
dm9pZCBzZXRFbmFibGVIaWdoQWNjdXJhY3koYm9vbCk7CisKKyAgICBzdGF0aWMgdm9pZCByZXF1
ZXN0QXV0aG9yaXphdGlvbihjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYsIENvbXBsZXRpb25IYW5k
bGVyPHZvaWQoYm9vbCk+JiYpOworCitwcml2YXRlOgorICAgIFJldGFpblB0cjxXZWJDTExvY2F0
aW9uTWFuYWdlcj4gbV9sb2NhdGlvbk1hbmFnZXI7Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJD
b3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9Db3JlTG9jYXRp
b25HZW9sb2NhdGlvblByb3ZpZGVyLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2Ev
Q29yZUxvY2F0aW9uR2VvbG9jYXRpb25Qcm92aWRlci5tbQpuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4zNzM0MmY3NTYx
MTc1ZjA4YWJkMzRjNTc0ZjAyODc2ZTVkNDQ1NWRiCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvQ29yZUxvY2F0aW9uR2VvbG9jYXRpb25Qcm92aWRlci5t
bQpAQCAtMCwwICsxLDI2OCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMiBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAq
IGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICog
QU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVY
RU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbXBvcnQgImNvbmZpZy5oIgorI2lt
cG9ydCAiQ29yZUxvY2F0aW9uR2VvbG9jYXRpb25Qcm92aWRlci5oIgorCisjaW1wb3J0ICJHZW9s
b2NhdGlvblBvc2l0aW9uRGF0YS5oIgorI2ltcG9ydCAiUmVnaXN0cmFibGVEb21haW4uaCIKKyNp
bXBvcnQgPENvcmVMb2NhdGlvbi9DTExvY2F0aW9uTWFuYWdlckRlbGVnYXRlLmg+CisjaW1wb3J0
IDxDb3JlTG9jYXRpb24vQ29yZUxvY2F0aW9uLmg+CisjaW1wb3J0IDx3dGYvU29mdExpbmtpbmcu
aD4KKworI2lmIFVTRShBUFBMRV9JTlRFUk5BTF9TREspCisjaW1wb3J0IDxDb3JlTG9jYXRpb24v
Q0xMb2NhdGlvbk1hbmFnZXJfUHJpdmF0ZS5oPgorI2VuZGlmCisKK1NPRlRfTElOS19GUkFNRVdP
UksoQ29yZUxvY2F0aW9uKQorCitTT0ZUX0xJTktfQ0xBU1MoQ29yZUxvY2F0aW9uLCBDTExvY2F0
aW9uTWFuYWdlcikKK1NPRlRfTElOS19DTEFTUyhDb3JlTG9jYXRpb24sIENMTG9jYXRpb24pCisK
K1NPRlRfTElOS19DT05TVEFOVChDb3JlTG9jYXRpb24sIGtDTExvY2F0aW9uQWNjdXJhY3lCZXN0
LCBkb3VibGUpCitTT0ZUX0xJTktfQ09OU1RBTlQoQ29yZUxvY2F0aW9uLCBrQ0xMb2NhdGlvbkFj
Y3VyYWN5SHVuZHJlZE1ldGVycywgZG91YmxlKQorCisjZGVmaW5lIGtDTExvY2F0aW9uQWNjdXJh
Y3lCZXN0IGdldGtDTExvY2F0aW9uQWNjdXJhY3lCZXN0KCkKKyNkZWZpbmUga0NMTG9jYXRpb25B
Y2N1cmFjeUh1bmRyZWRNZXRlcnMgZ2V0a0NMTG9jYXRpb25BY2N1cmFjeUh1bmRyZWRNZXRlcnMo
KQorCitzdGF0aWMgYm9vbCBpc0F1dGhvcml6YXRpb25HcmFudGVkKENMQXV0aG9yaXphdGlvblN0
YXR1cyBhdXRob3JpemF0aW9uU3RhdHVzKQoreworICAgIHJldHVybiBhdXRob3JpemF0aW9uU3Rh
dHVzID09IGtDTEF1dGhvcml6YXRpb25TdGF0dXNBdXRob3JpemVkQWx3YXlzCisjaWYgSEFWRShD
T1JFX0xPQ0FUSU9OX0FVVEhPUklaRURfV0hFTl9JTl9VU0UpCisgICAgICAgIHx8IGF1dGhvcml6
YXRpb25TdGF0dXMgPT0ga0NMQXV0aG9yaXphdGlvblN0YXR1c0F1dGhvcml6ZWRXaGVuSW5Vc2UK
KyNlbmRpZgorICAgICAgICA7Cit9CisKK0BpbnRlcmZhY2UgV2ViQ0xMb2NhdGlvbk1hbmFnZXIg
OiBOU09iamVjdDxDTExvY2F0aW9uTWFuYWdlckRlbGVnYXRlPgorQGVuZAorCitAaW1wbGVtZW50
YXRpb24gV2ViQ0xMb2NhdGlvbk1hbmFnZXIgeworICAgIFJldGFpblB0cjxDTExvY2F0aW9uTWFu
YWdlcj4gX2xvY2F0aW9uTWFuYWdlcjsKKyAgICBXZWJDb3JlOjpDb3JlTG9jYXRpb25HZW9sb2Nh
dGlvblByb3ZpZGVyOjpDbGllbnQqIF9jbGllbnQ7CisgICAgU3RyaW5nIF93ZWJzaXRlSWRlbnRp
ZmllcjsKKyAgICBCT09MIF9pc1dhaXRpbmdGb3JBdXRob3JpemF0aW9uOworfQorCistIChpbnN0
YW5jZXR5cGUpaW5pdFdpdGhXZWJzaXRlSWRlbnRpZmllcjooY29uc3QgU3RyaW5nJil3ZWJzaXRl
SWRlbnRpZmllciBjbGllbnQ6KFdlYkNvcmU6OkNvcmVMb2NhdGlvbkdlb2xvY2F0aW9uUHJvdmlk
ZXI6OkNsaWVudCYpY2xpZW50Cit7CisgICAgc2VsZiA9IFtzdXBlciBpbml0XTsKKyAgICBpZiAo
IXNlbGYpCisgICAgICAgIHJldHVybiBuaWw7CisKKyAgICAvLyBGSVhNRTogQ2FsbCBpbml0V2l0
aFdlYnNpdGVJZGVudGlmaWVyIGFuZCBwYXNzIHRoZSB3ZWJzaXRlSWRlbnRpZmllciB3aGVuIEhB
VkUoQ09SRV9MT0NBVElPTl9XRUJTSVRFX0lERU5USUZJRVJTKSBhbmQgIXdlYnNpdGVJZGVudGlm
aWVyLmlzRW1wdHkoKSBvbmNlIDxyZGFyOi8vODg4MzQzMDE+IGlzIGZpeGVkLgorICAgIFVOVVNF
RF9QQVJBTSh3ZWJzaXRlSWRlbnRpZmllcik7CisgICAgX2xvY2F0aW9uTWFuYWdlciA9IGFkb3B0
TlMoW2FsbG9jQ0xMb2NhdGlvbk1hbmFnZXJJbnN0YW5jZSgpIGluaXRdKTsKKyAgICBfY2xpZW50
ID0gJmNsaWVudDsKKyAgICBfd2Vic2l0ZUlkZW50aWZpZXIgPSB3ZWJzaXRlSWRlbnRpZmllcjsK
KyAgICBbX2xvY2F0aW9uTWFuYWdlciBzZXREZWxlZ2F0ZTpzZWxmXTsKKyAgICByZXR1cm4gc2Vs
ZjsKK30KKworLSAodm9pZClkZWFsbG9jCit7CisgICAgW19sb2NhdGlvbk1hbmFnZXIgc2V0RGVs
ZWdhdGU6bmlsXTsKKyAgICBbc3VwZXIgZGVhbGxvY107Cit9CisKKy0gKHZvaWQpc3RhcnQKK3sK
KyAgICBpZiAoIVtnZXRDTExvY2F0aW9uTWFuYWdlckNsYXNzKCkgbG9jYXRpb25TZXJ2aWNlc0Vu
YWJsZWRdIHx8ICFpc0F1dGhvcml6YXRpb25HcmFudGVkKFtfbG9jYXRpb25NYW5hZ2VyIGF1dGhv
cml6YXRpb25TdGF0dXNdKSkgeworICAgICAgICBbX2xvY2F0aW9uTWFuYWdlciBzdG9wVXBkYXRp
bmdMb2NhdGlvbl07CisgICAgICAgIF9jbGllbnQtPnJlc2V0R2VvbG9jYXRpb24oX3dlYnNpdGVJ
ZGVudGlmaWVyKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIFtfbG9jYXRpb25NYW5h
Z2VyIHN0YXJ0VXBkYXRpbmdMb2NhdGlvbl07Cit9CisKKy0gKHZvaWQpc3RvcAoreworICAgIFtf
bG9jYXRpb25NYW5hZ2VyIHN0b3BVcGRhdGluZ0xvY2F0aW9uXTsKK30KKworLSAodm9pZClzZXRF
bmFibGVIaWdoQWNjdXJhY3k6KEJPT0wpaGlnaEFjY3VyYWN5RW5hYmxlZAoreworICAgIFtfbG9j
YXRpb25NYW5hZ2VyIHNldERlc2lyZWRBY2N1cmFjeTpoaWdoQWNjdXJhY3lFbmFibGVkID8ga0NM
TG9jYXRpb25BY2N1cmFjeUJlc3QgOiBrQ0xMb2NhdGlvbkFjY3VyYWN5SHVuZHJlZE1ldGVyc107
Cit9CisKKy0gKHZvaWQpcmVxdWVzdEdlb2xvY2F0aW9uQXV0aG9yaXphdGlvbgoreworICAgIGlm
ICghW2dldENMTG9jYXRpb25NYW5hZ2VyQ2xhc3MoKSBsb2NhdGlvblNlcnZpY2VzRW5hYmxlZF0p
IHsKKyAgICAgICAgX2NsaWVudC0+Z2VvbG9jYXRpb25BdXRob3JpemF0aW9uRGVuaWVkKF93ZWJz
aXRlSWRlbnRpZmllcik7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBzd2l0Y2ggKFtf
bG9jYXRpb25NYW5hZ2VyIGF1dGhvcml6YXRpb25TdGF0dXNdKSB7CisgICAgY2FzZSBrQ0xBdXRo
b3JpemF0aW9uU3RhdHVzTm90RGV0ZXJtaW5lZDogeworICAgICAgICBpZiAoIV9pc1dhaXRpbmdG
b3JBdXRob3JpemF0aW9uKSB7CisgICAgICAgICAgICBfaXNXYWl0aW5nRm9yQXV0aG9yaXphdGlv
biA9IFlFUzsKKyAgICAgICAgICAgIFtfbG9jYXRpb25NYW5hZ2VyIHJlcXVlc3RXaGVuSW5Vc2VB
dXRob3JpemF0aW9uXTsKKyAgICAgICAgfQorICAgICAgICBicmVhazsKKyAgICB9CisgICAgY2Fz
ZSBrQ0xBdXRob3JpemF0aW9uU3RhdHVzQXV0aG9yaXplZEFsd2F5czoKKyNpZiBIQVZFKENPUkVf
TE9DQVRJT05fQVVUSE9SSVpFRF9XSEVOX0lOX1VTRSkKKyAgICBjYXNlIGtDTEF1dGhvcml6YXRp
b25TdGF0dXNBdXRob3JpemVkV2hlbkluVXNlOgorI2VuZGlmCisgICAgICAgIF9jbGllbnQtPmdl
b2xvY2F0aW9uQXV0aG9yaXphdGlvbkdyYW50ZWQoX3dlYnNpdGVJZGVudGlmaWVyKTsKKyAgICAg
ICAgYnJlYWs7CisgICAgY2FzZSBrQ0xBdXRob3JpemF0aW9uU3RhdHVzUmVzdHJpY3RlZDoKKyAg
ICBjYXNlIGtDTEF1dGhvcml6YXRpb25TdGF0dXNEZW5pZWQ6CisgICAgICAgIF9jbGllbnQtPmdl
b2xvY2F0aW9uQXV0aG9yaXphdGlvbkRlbmllZChfd2Vic2l0ZUlkZW50aWZpZXIpOworICAgICAg
ICBicmVhazsKKyAgICB9Cit9CisKKy0gKHZvaWQpbG9jYXRpb25NYW5hZ2VyRGlkQ2hhbmdlQXV0
aG9yaXphdGlvbjooQ0xMb2NhdGlvbk1hbmFnZXIgKiltYW5hZ2VyCit7CisgICAgYXV0byBzdGF0
dXMgPSBbX2xvY2F0aW9uTWFuYWdlciBhdXRob3JpemF0aW9uU3RhdHVzXTsKKyAgICBpZiAoX2lz
V2FpdGluZ0ZvckF1dGhvcml6YXRpb24pIHsKKyAgICAgICAgc3dpdGNoIChzdGF0dXMpIHsKKyAg
ICAgICAgY2FzZSBrQ0xBdXRob3JpemF0aW9uU3RhdHVzTm90RGV0ZXJtaW5lZDoKKyAgICAgICAg
ICAgIC8vIFRoaXMgY2FuIGhhcHBlbiBhZnRlciByZXN1bWUgaWYgdGhlIHVzZXIgaGFzIHN0aWxs
IG5vdCBhbnN3ZXJlZCB0aGUgZGlhbG9nLiBXZSBqdXN0IGhhdmUgdG8gd2FpdCBmb3IgdGhlIHBl
cm1pc3Npb24uCisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBrQ0xBdXRob3JpemF0
aW9uU3RhdHVzRGVuaWVkOgorICAgICAgICBjYXNlIGtDTEF1dGhvcml6YXRpb25TdGF0dXNSZXN0
cmljdGVkOgorICAgICAgICAgICAgX2lzV2FpdGluZ0ZvckF1dGhvcml6YXRpb24gPSBOTzsKKyAg
ICAgICAgICAgIF9jbGllbnQtPmdlb2xvY2F0aW9uQXV0aG9yaXphdGlvbkRlbmllZChfd2Vic2l0
ZUlkZW50aWZpZXIpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2Uga0NMQXV0aG9y
aXphdGlvblN0YXR1c0F1dGhvcml6ZWRBbHdheXM6CisjaWYgSEFWRShDT1JFX0xPQ0FUSU9OX0FV
VEhPUklaRURfV0hFTl9JTl9VU0UpCisgICAgICAgIGNhc2Uga0NMQXV0aG9yaXphdGlvblN0YXR1
c0F1dGhvcml6ZWRXaGVuSW5Vc2U6CisjZW5kaWYKKyAgICAgICAgICAgIF9pc1dhaXRpbmdGb3JB
dXRob3JpemF0aW9uID0gTk87CisgICAgICAgICAgICBfY2xpZW50LT5nZW9sb2NhdGlvbkF1dGhv
cml6YXRpb25HcmFudGVkKF93ZWJzaXRlSWRlbnRpZmllcik7CisgICAgICAgICAgICBicmVhazsK
KyAgICAgICAgfQorICAgIH0gZWxzZSB7CisgICAgICAgIGlmIChzdGF0dXMgPT0ga0NMQXV0aG9y
aXphdGlvblN0YXR1c0RlbmllZCB8fCBzdGF0dXMgPT0ga0NMQXV0aG9yaXphdGlvblN0YXR1c1Jl
c3RyaWN0ZWQpIHsKKyAgICAgICAgICAgIFtfbG9jYXRpb25NYW5hZ2VyIHN0b3BVcGRhdGluZ0xv
Y2F0aW9uXTsKKyAgICAgICAgICAgIF9jbGllbnQtPnJlc2V0R2VvbG9jYXRpb24oX3dlYnNpdGVJ
ZGVudGlmaWVyKTsKKyAgICAgICAgfQorICAgIH0KK30KKworLSAodm9pZClsb2NhdGlvbk1hbmFn
ZXI6KENMTG9jYXRpb25NYW5hZ2VyICopbWFuYWdlciBkaWRVcGRhdGVMb2NhdGlvbnM6KE5TQXJy
YXkgKilsb2NhdGlvbnMKK3sKKyAgICBVTlVTRURfUEFSQU0obWFuYWdlcik7CisgICAgZm9yIChD
TExvY2F0aW9uICpsb2NhdGlvbiBpbiBsb2NhdGlvbnMpCisgICAgICAgIF9jbGllbnQtPnBvc2l0
aW9uQ2hhbmdlZChfd2Vic2l0ZUlkZW50aWZpZXIsIFdlYkNvcmU6Okdlb2xvY2F0aW9uUG9zaXRp
b25EYXRhIHsgbG9jYXRpb24gfSk7Cit9CisKKy0gKHZvaWQpbG9jYXRpb25NYW5hZ2VyOihDTExv
Y2F0aW9uTWFuYWdlciAqKW1hbmFnZXIgZGlkRmFpbFdpdGhFcnJvcjooTlNFcnJvciAqKWVycm9y
Cit7CisgICAgQVNTRVJUKGVycm9yKTsKKyAgICBVTlVTRURfUEFSQU0obWFuYWdlcik7CisKKyAg
ICBpZiAoW2Vycm9yIGNvZGVdID09IGtDTEVycm9yRGVuaWVkKSB7CisgICAgICAgIC8vIElnbm9y
ZSB0aGUgZXJyb3IgaGVyZSBhbmQgbGV0IGxvY2F0aW9uTWFuYWdlcjpkaWRDaGFuZ2VBdXRob3Jp
emF0aW9uU3RhdHVzOiBoYW5kbGUgdGhlIHBlcm1pc3Npb24uCisgICAgICAgIHJldHVybjsKKyAg
ICB9CisKKyAgICBOU1N0cmluZyAqZXJyb3JNZXNzYWdlID0gW2Vycm9yIGxvY2FsaXplZERlc2Ny
aXB0aW9uXTsKKyAgICBfY2xpZW50LT5lcnJvck9jY3VycmVkKF93ZWJzaXRlSWRlbnRpZmllciwg
ZXJyb3JNZXNzYWdlKTsKK30KKworQGVuZAorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK0NvcmVM
b2NhdGlvbkdlb2xvY2F0aW9uUHJvdmlkZXI6OkNvcmVMb2NhdGlvbkdlb2xvY2F0aW9uUHJvdmlk
ZXIoY29uc3QgUmVnaXN0cmFibGVEb21haW4mIHJlZ2lzdHJhYmxlRG9tYWluLCBDbGllbnQmIGNs
aWVudCkKKyAgICA6IG1fbG9jYXRpb25NYW5hZ2VyKGFkb3B0TlMoW1tXZWJDTExvY2F0aW9uTWFu
YWdlciBhbGxvY10gaW5pdFdpdGhXZWJzaXRlSWRlbnRpZmllcjpyZWdpc3RyYWJsZURvbWFpbi5z
dHJpbmcoKSBjbGllbnQ6Y2xpZW50XSkpCit7CisgICAgLy8gUmVxdWVzdCBwZXJtaXNzaW9uIGZv
ciB0aGUgYXBwIHRvIHVzZSBnZW9sb2NhdGlvbiAoaWYgaXQgZG9lc24ndCBhbHJlYWR5KS4KKyAg
ICBbbV9sb2NhdGlvbk1hbmFnZXIgcmVxdWVzdEdlb2xvY2F0aW9uQXV0aG9yaXphdGlvbl07Cit9
CisKK0NvcmVMb2NhdGlvbkdlb2xvY2F0aW9uUHJvdmlkZXI6On5Db3JlTG9jYXRpb25HZW9sb2Nh
dGlvblByb3ZpZGVyKCkKK3sKKyAgICBbbV9sb2NhdGlvbk1hbmFnZXIgc3RvcF07Cit9CisKK3Zv
aWQgQ29yZUxvY2F0aW9uR2VvbG9jYXRpb25Qcm92aWRlcjo6c3RhcnQoKQoreworICAgIFttX2xv
Y2F0aW9uTWFuYWdlciBzdGFydF07Cit9CisKK3ZvaWQgQ29yZUxvY2F0aW9uR2VvbG9jYXRpb25Q
cm92aWRlcjo6c3RvcCgpCit7CisgICAgW21fbG9jYXRpb25NYW5hZ2VyIHN0b3BdOworfQorCit2
b2lkIENvcmVMb2NhdGlvbkdlb2xvY2F0aW9uUHJvdmlkZXI6OnNldEVuYWJsZUhpZ2hBY2N1cmFj
eShib29sIGhpZ2hBY2N1cmFjeUVuYWJsZWQpCit7CisgICAgW21fbG9jYXRpb25NYW5hZ2VyIHNl
dEVuYWJsZUhpZ2hBY2N1cmFjeTpoaWdoQWNjdXJhY3lFbmFibGVkXTsKK30KKworY2xhc3MgQXV0
aG9yaXphdGlvbkNoZWNrZXIgZmluYWwgOiBwdWJsaWMgUmVmQ291bnRlZDxBdXRob3JpemF0aW9u
Q2hlY2tlcj4sIHB1YmxpYyBDb3JlTG9jYXRpb25HZW9sb2NhdGlvblByb3ZpZGVyOjpDbGllbnQg
eworcHVibGljOgorICAgIHN0YXRpYyBSZWY8QXV0aG9yaXphdGlvbkNoZWNrZXI+IGNyZWF0ZSgp
CisgICAgeworICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBBdXRob3JpemF0aW9uQ2hlY2tl
cik7CisgICAgfQorCisgICAgdm9pZCBjaGVjayhjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYgcmVn
aXN0cmFibGVEb21haW4sIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYgY29tcGxldGlv
bkhhbmRsZXIpCisgICAgeworICAgICAgICBtX2NvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShj
b21wbGV0aW9uSGFuZGxlcik7CisgICAgICAgIG1fcHJvdmlkZXIgPSBtYWtlVW5pcXVlPENvcmVM
b2NhdGlvbkdlb2xvY2F0aW9uUHJvdmlkZXI+KHJlZ2lzdHJhYmxlRG9tYWluLCAqdGhpcyk7Cisg
ICAgfQorCitwcml2YXRlOgorICAgIEF1dGhvcml6YXRpb25DaGVja2VyKCkgPSBkZWZhdWx0Owor
CisgICAgdm9pZCBnZW9sb2NhdGlvbkF1dGhvcml6YXRpb25HcmFudGVkKGNvbnN0IFN0cmluZyYp
IGZpbmFsCisgICAgeworICAgICAgICBpZiAobV9jb21wbGV0aW9uSGFuZGxlcikKKyAgICAgICAg
ICAgIG1fY29tcGxldGlvbkhhbmRsZXIodHJ1ZSk7CisgICAgfQorCisgICAgdm9pZCBnZW9sb2Nh
dGlvbkF1dGhvcml6YXRpb25EZW5pZWQoY29uc3QgU3RyaW5nJikgZmluYWwKKyAgICB7CisgICAg
ICAgIGlmIChtX2NvbXBsZXRpb25IYW5kbGVyKQorICAgICAgICAgICAgbV9jb21wbGV0aW9uSGFu
ZGxlcihmYWxzZSk7CisgICAgfQorCisgICAgdm9pZCBwb3NpdGlvbkNoYW5nZWQoY29uc3QgU3Ry
aW5nJiwgR2VvbG9jYXRpb25Qb3NpdGlvbkRhdGEmJikgZmluYWwgeyB9CisgICAgdm9pZCBlcnJv
ck9jY3VycmVkKGNvbnN0IFN0cmluZyYsIGNvbnN0IFN0cmluZyYpIGZpbmFsCisgICAgeworICAg
ICAgICBpZiAobV9jb21wbGV0aW9uSGFuZGxlcikKKyAgICAgICAgICAgIG1fY29tcGxldGlvbkhh
bmRsZXIoZmFsc2UpOworICAgIH0KKyAgICB2b2lkIHJlc2V0R2VvbG9jYXRpb24oY29uc3QgU3Ry
aW5nJikgZmluYWwgeyB9CisKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8Q29yZUxvY2F0aW9uR2VvbG9j
YXRpb25Qcm92aWRlcj4gbV9wcm92aWRlcjsKKyAgICBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJv
b2wpPiBtX2NvbXBsZXRpb25IYW5kbGVyOworfTsKKwordm9pZCBDb3JlTG9jYXRpb25HZW9sb2Nh
dGlvblByb3ZpZGVyOjpyZXF1ZXN0QXV0aG9yaXphdGlvbihjb25zdCBSZWdpc3RyYWJsZURvbWFp
biYgcmVnaXN0cmFibGVEb21haW4sIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYgY29t
cGxldGlvbkhhbmRsZXIpCit7CisgICAgYXV0byBhdXRob3JpemF0aW9uQ2hlY2tlciA9IEF1dGhv
cml6YXRpb25DaGVja2VyOjpjcmVhdGUoKTsKKyAgICBhdXRob3JpemF0aW9uQ2hlY2tlci0+Y2hl
Y2socmVnaXN0cmFibGVEb21haW4sIFthdXRob3JpemF0aW9uQ2hlY2tlciwgY29tcGxldGlvbkhh
bmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0oYm9vbCBhdXRob3JpemVkKSBtdXRh
YmxlIHsKKyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoYXV0aG9yaXplZCk7CisgICAgfSk7Cit9
CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL21vY2svR2VvbG9jYXRpb25DbGllbnRNb2NrLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL21vY2svR2VvbG9jYXRpb25DbGllbnRNb2NrLmNwcAppbmRleCA5ZDVlZmM4M2YzNGVi
MThkNTk5ZGMxMGNhYThmYzBjYTM5OWRiMGEyLi5mYTQyMDgyZTUwNTlhOWVjZjI2NGNhYWY0YzI2
NTMyZjRiMmU1ZDdhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL0dl
b2xvY2F0aW9uQ2xpZW50TW9jay5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9j
ay9HZW9sb2NhdGlvbkNsaWVudE1vY2suY3BwCkBAIC0xMzYsMTAgKzEzNiwxMSBAQCB2b2lkIEdl
b2xvY2F0aW9uQ2xpZW50TW9jazo6Z2VvbG9jYXRpb25EZXN0cm95ZWQoKQogICAgIEFTU0VSVCgh
bV9pc0FjdGl2ZSk7CiB9CiAKLXZvaWQgR2VvbG9jYXRpb25DbGllbnRNb2NrOjpzdGFydFVwZGF0
aW5nKGNvbnN0IFN0cmluZyYgYXV0aG9yaXphdGlvblRva2VuKQordm9pZCBHZW9sb2NhdGlvbkNs
aWVudE1vY2s6OnN0YXJ0VXBkYXRpbmcoY29uc3QgU3RyaW5nJiBhdXRob3JpemF0aW9uVG9rZW4s
IGJvb2wgZW5hYmxlSGlnaEFjY3VyYWN5KQogewogICAgIEFTU0VSVCghbV9pc0FjdGl2ZSk7CiAg
ICAgVU5VU0VEX1BBUkFNKGF1dGhvcml6YXRpb25Ub2tlbik7CisgICAgVU5VU0VEX1BBUkFNKGVu
YWJsZUhpZ2hBY2N1cmFjeSk7CiAgICAgbV9pc0FjdGl2ZSA9IHRydWU7CiAgICAgYXN5bmNVcGRh
dGVDb250cm9sbGVyKCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9t
b2NrL0dlb2xvY2F0aW9uQ2xpZW50TW9jay5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9j
ay9HZW9sb2NhdGlvbkNsaWVudE1vY2suaAppbmRleCAyZmE3NWUwNTdhNTNkN2U4MThjY2ZhZmVl
NzAyNDNkZDU0ODIxODQ1Li5mOGJhYzM4YjViNmNjYzhjYzA4Zjg3MDcxZWJjNzVkNjViMzEwNjQw
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL0dlb2xvY2F0aW9uQ2xp
ZW50TW9jay5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svR2VvbG9jYXRpb25D
bGllbnRNb2NrLmgKQEAgLTU5LDcgKzU5LDcgQEAgcHVibGljOgogCiAgICAgLy8gR2VvbG9jYXRp
b25DbGllbnQKICAgICB2b2lkIGdlb2xvY2F0aW9uRGVzdHJveWVkKCkgb3ZlcnJpZGU7Ci0gICAg
dm9pZCBzdGFydFVwZGF0aW5nKGNvbnN0IFN0cmluZyYgYXV0aG9yaXphdGlvblRva2VuKSBvdmVy
cmlkZTsKKyAgICB2b2lkIHN0YXJ0VXBkYXRpbmcoY29uc3QgU3RyaW5nJiBhdXRob3JpemF0aW9u
VG9rZW4sIGJvb2wgZW5hYmxlSGlnaEFjY3VyYWN5KSBvdmVycmlkZTsKICAgICB2b2lkIHN0b3BV
cGRhdGluZygpIG92ZXJyaWRlOwogICAgIHZvaWQgc2V0RW5hYmxlSGlnaEFjY3VyYWN5KGJvb2wp
IG92ZXJyaWRlOwogICAgIHN0ZDo6b3B0aW9uYWw8R2VvbG9jYXRpb25Qb3NpdGlvbkRhdGE+IGxh
c3RQb3NpdGlvbigpIG92ZXJyaWRlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9Tb3VyY2Vz
Q29jb2EudHh0IGIvU291cmNlL1dlYktpdC9Tb3VyY2VzQ29jb2EudHh0CmluZGV4IDJhY2RhOTQx
ZWNkZjRiY2JlN2ZlOTRhNTE4MTc0OTFmMWMwYmYzOWEuLjM5ZmVhOTFjZTU2MTc1ODE2MGFkOTIx
ODk4OTQ1M2U1ODNlZDY0NjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU291cmNlc0NvY29h
LnR4dAorKysgYi9Tb3VyY2UvV2ViS2l0L1NvdXJjZXNDb2NvYS50eHQKQEAgLTQyNyw2ICs0Mjcs
NyBAQCBVSVByb2Nlc3MvQ29jb2EvVUlSZW1vdGVPYmplY3RSZWdpc3RyeS5jcHAKIFVJUHJvY2Vz
cy9Db2NvYS9Vc2VyTWVkaWFDYXB0dXJlTWFuYWdlclByb3h5LmNwcAogVUlQcm9jZXNzL0NvY29h
L1VzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlclByb3h5Lm1tCiBVSVByb2Nlc3MvQ29j
b2EvVmlkZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5Lm1tCitVSVByb2Nlc3MvQ29jb2EvV2ViR2Vv
bG9jYXRpb25NYW5hZ2VyUHJveHlDb2NvYS5jcHAKIFVJUHJvY2Vzcy9Db2NvYS9XZWJQYWdlUHJv
eHlDb2NvYS5tbQogVUlQcm9jZXNzL0NvY29hL1dlYlBhc3RlYm9hcmRQcm94eUNvY29hLm1tCiBV
SVByb2Nlc3MvQ29jb2EvV2ViUHJlZmVyZW5jZXNDb2NvYS5tbQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV2ViR2VvbG9jYXRpb25NYW5hZ2VyUHJveHlDb2NvYS5j
cHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XZWJHZW9sb2NhdGlvbk1hbmFnZXJQ
cm94eUNvY29hLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi44ZTIxOGI4ZWQ1MDZmZmE3NmVhYmNkMDk4N2RiOWJj
YWJjMWI4Yzg1Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29j
b2EvV2ViR2VvbG9jYXRpb25NYW5hZ2VyUHJveHlDb2NvYS5jcHAKQEAgLTAsMCArMSw3NSBAQAor
LyoKKyAqIENvcHlyaWdodCAoQykgMjAyMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0
cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMu
IEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUg
SU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBB
UFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNF
UVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVN
RU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFU
QSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJXZWJHZW9sb2NhdGlv
bk1hbmFnZXJQcm94eS5oIgorCisjaW5jbHVkZSAiV2ViR2VvbG9jYXRpb25NYW5hZ2VyTWVzc2Fn
ZXMuaCIKKworbmFtZXNwYWNlIFdlYktpdCB7CisKKy8vIEZJWE1FOiBUaGlzIHNob3VsZCBiZSB1
c2VkIGJ5IGFsbCBDb2NvYSBwb3J0cworI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCisKK3ZvaWQg
V2ViR2VvbG9jYXRpb25NYW5hZ2VyUHJveHk6OnBvc2l0aW9uQ2hhbmdlZChjb25zdCBTdHJpbmcm
IHdlYnNpdGVJZGVudGlmaWVyLCBXZWJDb3JlOjpHZW9sb2NhdGlvblBvc2l0aW9uRGF0YSYmIHBv
c2l0aW9uKQoreworICAgIGF1dG8gcmVnaXN0cmFibGVEb21haW4gPSBXZWJDb3JlOjpSZWdpc3Ry
YWJsZURvbWFpbjo6dW5jaGVja2VkQ3JlYXRlRnJvbVJlZ2lzdHJhYmxlRG9tYWluU3RyaW5nKHdl
YnNpdGVJZGVudGlmaWVyKTsKKyAgICBhdXRvIGl0ID0gbV9wZXJEb21haW5EYXRhLmZpbmQocmVn
aXN0cmFibGVEb21haW4pOworICAgIGlmIChpdCA9PSBtX3BlckRvbWFpbkRhdGEuZW5kKCkpCisg
ICAgICAgIHJldHVybjsKKworICAgIGF1dG8mIHBlckRvbWFpbkRhdGEgPSAqaXQtPnZhbHVlOwor
ICAgIHBlckRvbWFpbkRhdGEubGFzdFBvc2l0aW9uID0gV1RGTW92ZShwb3NpdGlvbik7CisgICAg
Zm9yIChhdXRvJiB3ZWJQcm9jZXNzUHJveHkgOiBwZXJEb21haW5EYXRhLndhdGNoZXJzKQorICAg
ICAgICB3ZWJQcm9jZXNzUHJveHkuc2VuZChNZXNzYWdlczo6V2ViR2VvbG9jYXRpb25NYW5hZ2Vy
OjpEaWRDaGFuZ2VQb3NpdGlvbihyZWdpc3RyYWJsZURvbWFpbiwgcGVyRG9tYWluRGF0YS5sYXN0
UG9zaXRpb24udmFsdWUoKSksIDApOworfQorCit2b2lkIFdlYkdlb2xvY2F0aW9uTWFuYWdlclBy
b3h5OjplcnJvck9jY3VycmVkKGNvbnN0IFN0cmluZyYgd2Vic2l0ZUlkZW50aWZpZXIsIGNvbnN0
IFN0cmluZyYgZXJyb3JNZXNzYWdlKQoreworICAgIGF1dG8gcmVnaXN0cmFibGVEb21haW4gPSBX
ZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbjo6dW5jaGVja2VkQ3JlYXRlRnJvbVJlZ2lzdHJhYmxl
RG9tYWluU3RyaW5nKHdlYnNpdGVJZGVudGlmaWVyKTsKKyAgICBhdXRvIGl0ID0gbV9wZXJEb21h
aW5EYXRhLmZpbmQocmVnaXN0cmFibGVEb21haW4pOworICAgIGlmIChpdCA9PSBtX3BlckRvbWFp
bkRhdGEuZW5kKCkpCisgICAgICAgIHJldHVybjsKKworICAgIGF1dG8mIHBlckRvbWFpbkRhdGEg
PSAqaXQtPnZhbHVlOworICAgIGZvciAoYXV0byYgd2ViUHJvY2Vzc1Byb3h5IDogcGVyRG9tYWlu
RGF0YS53YXRjaGVycykKKyAgICAgICAgd2ViUHJvY2Vzc1Byb3h5LnNlbmQoTWVzc2FnZXM6Oldl
Ykdlb2xvY2F0aW9uTWFuYWdlcjo6RGlkRmFpbFRvRGV0ZXJtaW5lUG9zaXRpb24ocmVnaXN0cmFi
bGVEb21haW4sIGVycm9yTWVzc2FnZSksIDApOworfQorCit2b2lkIFdlYkdlb2xvY2F0aW9uTWFu
YWdlclByb3h5OjpyZXNldEdlb2xvY2F0aW9uKGNvbnN0IFN0cmluZyYgd2Vic2l0ZUlkZW50aWZp
ZXIpCit7CisgICAgYXV0byByZWdpc3RyYWJsZURvbWFpbiA9IFdlYkNvcmU6OlJlZ2lzdHJhYmxl
RG9tYWluOjp1bmNoZWNrZWRDcmVhdGVGcm9tUmVnaXN0cmFibGVEb21haW5TdHJpbmcod2Vic2l0
ZUlkZW50aWZpZXIpOworICAgIGF1dG8gaXQgPSBtX3BlckRvbWFpbkRhdGEuZmluZChyZWdpc3Ry
YWJsZURvbWFpbik7CisgICAgaWYgKGl0ID09IG1fcGVyRG9tYWluRGF0YS5lbmQoKSkKKyAgICAg
ICAgcmV0dXJuOworCisgICAgYXV0byYgcGVyRG9tYWluRGF0YSA9ICppdC0+dmFsdWU7CisgICAg
Zm9yIChhdXRvJiB3ZWJQcm9jZXNzUHJveHkgOiBwZXJEb21haW5EYXRhLndhdGNoZXJzKQorICAg
ICAgICB3ZWJQcm9jZXNzUHJveHkuc2VuZChNZXNzYWdlczo6V2ViR2VvbG9jYXRpb25NYW5hZ2Vy
OjpSZXNldFBlcm1pc3Npb25zKHJlZ2lzdHJhYmxlRG9tYWluKSwgMCk7Cit9CisKKyNlbmRpZgor
Cit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL1dlYkNvbnRleHRTdXBwbGVtZW50LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJD
b250ZXh0U3VwcGxlbWVudC5oCmluZGV4IGVkNTViNDAzZGIyOWY5NDAwNDM4YmEzMmE2MGM3NTgy
NzQ5MzRmYTYuLmVjMTljZGNjY2JiNDBmOTJkNTgzNWYzZWE2MDMxYmRkYTQ3N2E4ZTIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkNvbnRleHRTdXBwbGVtZW50LmgKKysr
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQ29udGV4dFN1cHBsZW1lbnQuaApAQCAtNDcs
MTQgKzQ3LDYgQEAgcHVibGljOgogICAgIHsKICAgICB9CiAKLSAgICB2aXJ0dWFsIHZvaWQgcHJv
Y2Vzc0RpZENsb3NlKFdlYlByb2Nlc3NQcm94eSopCi0gICAgewotICAgIH0KLQotICAgIHZpcnR1
YWwgdm9pZCBwcm9jZXNzRGlkQ2xvc2UoTmV0d29ya1Byb2Nlc3NQcm94eSopCi0gICAgewotICAg
IH0KLQogICAgIFdlYlByb2Nlc3NQb29sKiBwcm9jZXNzUG9vbCgpIGNvbnN0IHsgcmV0dXJuIG1f
cHJvY2Vzc1Bvb2w7IH0KICAgICB2b2lkIGNsZWFyUHJvY2Vzc1Bvb2woKSB7IG1fcHJvY2Vzc1Bv
b2wgPSBudWxscHRyOyB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dl
Ykdlb2xvY2F0aW9uTWFuYWdlclByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dl
Ykdlb2xvY2F0aW9uTWFuYWdlclByb3h5LmNwcAppbmRleCAwNGYzMjI3Y2Q1NWM5OTJhNDJjZDk2
YTNmMjVkNjk3YWVkNzk2NWEyLi5mMjUyN2RhYTM5ZDMwN2VlNDljNTc3Yjc5OGYyZjU4ZjQ0MmJh
MjFkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJHZW9sb2NhdGlvbk1h
bmFnZXJQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViR2VvbG9jYXRp
b25NYW5hZ2VyUHJveHkuY3BwCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykg
MjAxMSwgMjAxMiwgMjAxMyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5
cmlnaHQgKEMpIDIwMTEtMjAyMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgog
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTM0LDEwICszNCwxNSBAQAogI2luY2x1ZGUg
IldlYlBhZ2VQcm94eS5oIgogI2luY2x1ZGUgIldlYlByb2Nlc3NQb29sLmgiCiAKLSNkZWZpbmUg
TUVTU0FHRV9DSEVDSyhhc3NlcnRpb24pIE1FU1NBR0VfQ0hFQ0tfQkFTRShhc3NlcnRpb24sICgm
Y29ubmVjdGlvbikpCisjZGVmaW5lIE1FU1NBR0VfQ0hFQ0soY29ubmVjdGlvbiwgYXNzZXJ0aW9u
KSBNRVNTQUdFX0NIRUNLX0JBU0UoYXNzZXJ0aW9uLCAoY29ubmVjdGlvbikpCiAKIG5hbWVzcGFj
ZSBXZWJLaXQgewogCitzdGF0aWMgaW5saW5lIFdlYlByb2Nlc3NQcm94eSYgY29ubmVjdGlvblRv
V2ViUHJvY2Vzc1Byb3h5KGNvbnN0IElQQzo6Q29ubmVjdGlvbiYgY29ubmVjdGlvbikKK3sKKyAg
ICByZXR1cm4gc3RhdGljX2Nhc3Q8V2ViUHJvY2Vzc1Byb3h5Jj4oY29ubmVjdGlvbi5jbGllbnQo
KSk7Cit9CisKIGNvbnN0IGNoYXIqIFdlYkdlb2xvY2F0aW9uTWFuYWdlclByb3h5OjpzdXBwbGVt
ZW50TmFtZSgpCiB7CiAgICAgcmV0dXJuICJXZWJHZW9sb2NhdGlvbk1hbmFnZXJQcm94eSI7CkBA
IC01MCwzNCArNTUsMzggQEAgUmVmPFdlYkdlb2xvY2F0aW9uTWFuYWdlclByb3h5PiBXZWJHZW9s
b2NhdGlvbk1hbmFnZXJQcm94eTo6Y3JlYXRlKFdlYlByb2Nlc3NQb28KIAogV2ViR2VvbG9jYXRp
b25NYW5hZ2VyUHJveHk6OldlYkdlb2xvY2F0aW9uTWFuYWdlclByb3h5KFdlYlByb2Nlc3NQb29s
KiBwcm9jZXNzUG9vbCkKICAgICA6IFdlYkNvbnRleHRTdXBwbGVtZW50KHByb2Nlc3NQb29sKQot
ICAgICwgbV9wcm92aWRlcihtYWtlVW5pcXVlPEFQSTo6R2VvbG9jYXRpb25Qcm92aWRlcj4oKSkK
IHsKICAgICBXZWJDb250ZXh0U3VwcGxlbWVudDo6cHJvY2Vzc1Bvb2woKS0+YWRkTWVzc2FnZVJl
Y2VpdmVyKE1lc3NhZ2VzOjpXZWJHZW9sb2NhdGlvbk1hbmFnZXJQcm94eTo6bWVzc2FnZVJlY2Vp
dmVyTmFtZSgpLCAqdGhpcyk7CiB9CiAKK1dlYkdlb2xvY2F0aW9uTWFuYWdlclByb3h5Ojp+V2Vi
R2VvbG9jYXRpb25NYW5hZ2VyUHJveHkoKSA9IGRlZmF1bHQ7CisKIHZvaWQgV2ViR2VvbG9jYXRp
b25NYW5hZ2VyUHJveHk6OnNldFByb3ZpZGVyKHN0ZDo6dW5pcXVlX3B0cjxBUEk6Okdlb2xvY2F0
aW9uUHJvdmlkZXI+JiYgcHJvdmlkZXIpCiB7Ci0gICAgaWYgKCFwcm92aWRlcikKLSAgICAgICAg
bV9wcm92aWRlciA9IG1ha2VVbmlxdWU8QVBJOjpHZW9sb2NhdGlvblByb3ZpZGVyPigpOwotICAg
IGVsc2UKLSAgICAgICAgbV9wcm92aWRlciA9IFdURk1vdmUocHJvdmlkZXIpOworICAgIG1fY2xp
ZW50UHJvdmlkZXIgPSBXVEZNb3ZlKHByb3ZpZGVyKTsKIH0KIAogLy8gV2ViQ29udGV4dFN1cHBs
ZW1lbnQKIAogdm9pZCBXZWJHZW9sb2NhdGlvbk1hbmFnZXJQcm94eTo6cHJvY2Vzc1Bvb2xEZXN0
cm95ZWQoKQogewotICAgIGJvb2wgd2FzVXBkYXRpbmcgPSBpc1VwZGF0aW5nKCk7Ci0gICAgbV91
cGRhdGVSZXF1ZXN0ZXJzLmNsZWFyKCk7CisgICAgaWYgKG1fcGVyRG9tYWluRGF0YS5pc0VtcHR5
KCkpCisgICAgICAgIHJldHVybjsKIAotICAgIEFTU0VSVCghaXNVcGRhdGluZygpKTsKLSAgICBp
ZiAod2FzVXBkYXRpbmcpCi0gICAgICAgIG1fcHJvdmlkZXItPnN0b3BVcGRhdGluZygqdGhpcyk7
CisgICAgbV9wZXJEb21haW5EYXRhLmNsZWFyKCk7CisgICAgaWYgKG1fY2xpZW50UHJvdmlkZXIp
CisgICAgICAgIG1fY2xpZW50UHJvdmlkZXItPnN0b3BVcGRhdGluZygqdGhpcyk7CiB9CiAKLXZv
aWQgV2ViR2VvbG9jYXRpb25NYW5hZ2VyUHJveHk6OnByb2Nlc3NEaWRDbG9zZShXZWJQcm9jZXNz
UHJveHkqIHdlYlByb2Nlc3NQcm94eSkKK3ZvaWQgV2ViR2VvbG9jYXRpb25NYW5hZ2VyUHJveHk6
OndlYlByb2Nlc3NJc0dvaW5nQXdheShXZWJQcm9jZXNzUHJveHkmIHByb3h5KQogewotICAgIHJl
bW92ZVJlcXVlc3Rlcih3ZWJQcm9jZXNzUHJveHkpOworICAgIFZlY3RvcjxXZWJDb3JlOjpSZWdp
c3RyYWJsZURvbWFpbj4gYWZmZWN0ZWREb21haW5zOworICAgIGZvciAoYXV0byYgW3JlZ2lzdHJh
YmxlRG9tYWluLCBwZXJEb21haW5EYXRhXSA6IG1fcGVyRG9tYWluRGF0YSkgeworICAgICAgICBp
ZiAocGVyRG9tYWluRGF0YS0+d2F0Y2hlcnMuY29udGFpbnMocHJveHkpKQorICAgICAgICAgICAg
YWZmZWN0ZWREb21haW5zLmFwcGVuZChyZWdpc3RyYWJsZURvbWFpbik7CisgICAgfQorICAgIGZv
ciAoYXV0byYgcmVnaXN0cmFibGVEb21haW4gOiBhZmZlY3RlZERvbWFpbnMpCisgICAgICAgIHN0
b3BVcGRhdGluZ1dpdGhQcm94eShwcm94eSwgcmVnaXN0cmFibGVEb21haW4pOwogfQogCiB2b2lk
IFdlYkdlb2xvY2F0aW9uTWFuYWdlclByb3h5OjpyZWZXZWJDb250ZXh0U3VwcGxlbWVudCgpCkBA
IC05Miw4MCArMTAxLDIwMCBAQCB2b2lkIFdlYkdlb2xvY2F0aW9uTWFuYWdlclByb3h5OjpkZXJl
ZldlYkNvbnRleHRTdXBwbGVtZW50KCkKIAogdm9pZCBXZWJHZW9sb2NhdGlvbk1hbmFnZXJQcm94
eTo6cHJvdmlkZXJEaWRDaGFuZ2VQb3NpdGlvbihXZWJHZW9sb2NhdGlvblBvc2l0aW9uKiBwb3Np
dGlvbikKIHsKLSAgICBtX2xhc3RQb3NpdGlvbiA9IHBvc2l0aW9uLT5jb3JlUG9zaXRpb24oKTsK
LQotICAgIGlmICghcHJvY2Vzc1Bvb2woKSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgcHJvY2Vz
c1Bvb2woKS0+c2VuZFRvQWxsUHJvY2Vzc2VzKE1lc3NhZ2VzOjpXZWJHZW9sb2NhdGlvbk1hbmFn
ZXI6OkRpZENoYW5nZVBvc2l0aW9uKG1fbGFzdFBvc2l0aW9uLnZhbHVlKCkpKTsKKyAgICBmb3Ig
KGF1dG8mIFtyZWdpc3RyYWJsZURvbWFpbiwgcGVyRG9tYWluRGF0YV0gOiBtX3BlckRvbWFpbkRh
dGEpIHsKKyAgICAgICAgcGVyRG9tYWluRGF0YS0+bGFzdFBvc2l0aW9uID0gcG9zaXRpb24tPmNv
cmVQb3NpdGlvbigpOworICAgICAgICBmb3IgKGF1dG8mIHByb2Nlc3MgOiBwZXJEb21haW5EYXRh
LT53YXRjaGVycykKKyAgICAgICAgICAgIHByb2Nlc3Muc2VuZChNZXNzYWdlczo6V2ViR2VvbG9j
YXRpb25NYW5hZ2VyOjpEaWRDaGFuZ2VQb3NpdGlvbihyZWdpc3RyYWJsZURvbWFpbiwgcGVyRG9t
YWluRGF0YS0+bGFzdFBvc2l0aW9uLnZhbHVlKCkpLCAwKTsKKyAgICB9CiB9CiAKIHZvaWQgV2Vi
R2VvbG9jYXRpb25NYW5hZ2VyUHJveHk6OnByb3ZpZGVyRGlkRmFpbFRvRGV0ZXJtaW5lUG9zaXRp
b24oY29uc3QgU3RyaW5nJiBlcnJvck1lc3NhZ2UpCiB7Ci0gICAgaWYgKCFwcm9jZXNzUG9vbCgp
KQotICAgICAgICByZXR1cm47Ci0KLSAgICBwcm9jZXNzUG9vbCgpLT5zZW5kVG9BbGxQcm9jZXNz
ZXMoTWVzc2FnZXM6OldlYkdlb2xvY2F0aW9uTWFuYWdlcjo6RGlkRmFpbFRvRGV0ZXJtaW5lUG9z
aXRpb24oZXJyb3JNZXNzYWdlKSk7CisgICAgZm9yIChhdXRvJiBbcmVnaXN0cmFibGVEb21haW4s
IHBlckRvbWFpbkRhdGFdIDogbV9wZXJEb21haW5EYXRhKSB7CisgICAgICAgIGZvciAoYXV0byYg
cHJveHkgOiBwZXJEb21haW5EYXRhLT53YXRjaGVycykKKyAgICAgICAgICAgIHByb3h5LnNlbmQo
TWVzc2FnZXM6OldlYkdlb2xvY2F0aW9uTWFuYWdlcjo6RGlkRmFpbFRvRGV0ZXJtaW5lUG9zaXRp
b24ocmVnaXN0cmFibGVEb21haW4sIGVycm9yTWVzc2FnZSksIDApOworICAgIH0KIH0KIAogI2lm
IFBMQVRGT1JNKElPU19GQU1JTFkpCiB2b2lkIFdlYkdlb2xvY2F0aW9uTWFuYWdlclByb3h5Ojpy
ZXNldFBlcm1pc3Npb25zKCkKIHsKLSAgICBwcm9jZXNzUG9vbCgpLT5zZW5kVG9BbGxQcm9jZXNz
ZXMoTWVzc2FnZXM6OldlYkdlb2xvY2F0aW9uTWFuYWdlcjo6UmVzZXRQZXJtaXNzaW9ucygpKTsK
KyAgICBBU1NFUlQobV9jbGllbnRQcm92aWRlcik7CisgICAgZm9yIChhdXRvJiBbcmVnaXN0cmFi
bGVEb21haW4sIHBlckRvbWFpbkRhdGFdIDogbV9wZXJEb21haW5EYXRhKSB7CisgICAgICAgIGZv
ciAoYXV0byYgcHJveHkgOiBwZXJEb21haW5EYXRhLT53YXRjaGVycykKKyAgICAgICAgICAgIHBy
b3h5LnNlbmQoTWVzc2FnZXM6OldlYkdlb2xvY2F0aW9uTWFuYWdlcjo6UmVzZXRQZXJtaXNzaW9u
cyhyZWdpc3RyYWJsZURvbWFpbiksIDApOworICAgIH0KIH0KICNlbmRpZgogCi12b2lkIFdlYkdl
b2xvY2F0aW9uTWFuYWdlclByb3h5OjpzdGFydFVwZGF0aW5nKElQQzo6Q29ubmVjdGlvbiYgY29u
bmVjdGlvbiwgV2ViUGFnZVByb3h5SWRlbnRpZmllciBwYWdlUHJveHlJRCwgY29uc3QgU3RyaW5n
JiBhdXRob3JpemF0aW9uVG9rZW4pCit2b2lkIFdlYkdlb2xvY2F0aW9uTWFuYWdlclByb3h5Ojpz
dGFydFVwZGF0aW5nKElQQzo6Q29ubmVjdGlvbiYgY29ubmVjdGlvbiwgY29uc3QgV2ViQ29yZTo6
UmVnaXN0cmFibGVEb21haW4mIHJlZ2lzdHJhYmxlRG9tYWluLCBXZWJQYWdlUHJveHlJZGVudGlm
aWVyIHBhZ2VQcm94eUlELCBjb25zdCBTdHJpbmcmIGF1dGhvcml6YXRpb25Ub2tlbiwgYm9vbCBl
bmFibGVIaWdoQWNjdXJhY3kpCit7CisgICAgc3RhcnRVcGRhdGluZ1dpdGhQcm94eShjb25uZWN0
aW9uVG9XZWJQcm9jZXNzUHJveHkoY29ubmVjdGlvbiksIHJlZ2lzdHJhYmxlRG9tYWluLCBwYWdl
UHJveHlJRCwgYXV0aG9yaXphdGlvblRva2VuLCBlbmFibGVIaWdoQWNjdXJhY3kpOworfQorCit2
b2lkIFdlYkdlb2xvY2F0aW9uTWFuYWdlclByb3h5OjpzdGFydFVwZGF0aW5nV2l0aFByb3h5KFdl
YlByb2Nlc3NQcm94eSYgcHJveHksIGNvbnN0IFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluJiBy
ZWdpc3RyYWJsZURvbWFpbiwgV2ViUGFnZVByb3h5SWRlbnRpZmllciBwYWdlUHJveHlJRCwgY29u
c3QgU3RyaW5nJiBhdXRob3JpemF0aW9uVG9rZW4sIGJvb2wgZW5hYmxlSGlnaEFjY3VyYWN5KQog
ewogICAgIGF1dG8qIHBhZ2UgPSBXZWJQcm9jZXNzUHJveHk6OndlYlBhZ2UocGFnZVByb3h5SUQp
OwotICAgIE1FU1NBR0VfQ0hFQ0socGFnZSk7CisgICAgTUVTU0FHRV9DSEVDSyhwcm94eS5jb25u
ZWN0aW9uKCksIHBhZ2UpOwogCiAgICAgYXV0byBpc1ZhbGlkQXV0aG9yaXphdGlvblRva2VuID0g
cGFnZS0+Z2VvbG9jYXRpb25QZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXIoKS5pc1ZhbGlkQXV0aG9y
aXphdGlvblRva2VuKGF1dGhvcml6YXRpb25Ub2tlbik7Ci0gICAgTUVTU0FHRV9DSEVDSyhpc1Zh
bGlkQXV0aG9yaXphdGlvblRva2VuKTsKKyAgICBNRVNTQUdFX0NIRUNLKHByb3h5LmNvbm5lY3Rp
b24oKSwgaXNWYWxpZEF1dGhvcml6YXRpb25Ub2tlbik7CisKKyAgICBhdXRvJiBwZXJEb21haW5E
YXRhID0gKm1fcGVyRG9tYWluRGF0YS5lbnN1cmUocmVnaXN0cmFibGVEb21haW4sIFtdIHsKKyAg
ICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8UGVyRG9tYWluRGF0YT4oKTsKKyAgICB9KS5pdGVyYXRv
ci0+dmFsdWU7CisKKyAgICBib29sIHdhc1VwZGF0aW5nID0gaXNVcGRhdGluZyhwZXJEb21haW5E
YXRhKTsKKyAgICBib29sIGhpZ2hBY2N1cmFjeVdhc0VuYWJsZWQgPSBpc0hpZ2hBY2N1cmFjeUVu
YWJsZWQocGVyRG9tYWluRGF0YSk7CisKKyAgICBwZXJEb21haW5EYXRhLndhdGNoZXJzLmFkZChw
cm94eSk7CisgICAgaWYgKGVuYWJsZUhpZ2hBY2N1cmFjeSkKKyAgICAgICAgcGVyRG9tYWluRGF0
YS53YXRjaGVyc05lZWRpbmdIaWdoQWNjdXJhY3kuYWRkKHByb3h5KTsKIAotICAgIGJvb2wgd2Fz
VXBkYXRpbmcgPSBpc1VwZGF0aW5nKCk7Ci0gICAgbV91cGRhdGVSZXF1ZXN0ZXJzLmFkZCgmY29u
bmVjdGlvbi5jbGllbnQoKSk7CiAgICAgaWYgKCF3YXNVcGRhdGluZykgewotICAgICAgICBtX3By
b3ZpZGVyLT5zZXRFbmFibGVIaWdoQWNjdXJhY3koKnRoaXMsIGlzSGlnaEFjY3VyYWN5RW5hYmxl
ZCgpKTsKLSAgICAgICAgbV9wcm92aWRlci0+c3RhcnRVcGRhdGluZygqdGhpcyk7Ci0gICAgfSBl
bHNlIGlmIChtX2xhc3RQb3NpdGlvbikKLSAgICAgICAgY29ubmVjdGlvbi5zZW5kKE1lc3NhZ2Vz
OjpXZWJHZW9sb2NhdGlvbk1hbmFnZXI6OkRpZENoYW5nZVBvc2l0aW9uKG1fbGFzdFBvc2l0aW9u
LnZhbHVlKCkpLCAwKTsKKyAgICAgICAgcHJvdmlkZXJTdGFydFVwZGF0aW5nKHBlckRvbWFpbkRh
dGEsIHJlZ2lzdHJhYmxlRG9tYWluKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICBpZiAo
IWhpZ2hBY2N1cmFjeVdhc0VuYWJsZWQgJiYgZW5hYmxlSGlnaEFjY3VyYWN5KQorICAgICAgICBw
cm92aWRlclNldEVuYWJsZWRIaWdoQWNjdXJhY3kocGVyRG9tYWluRGF0YSwgZW5hYmxlSGlnaEFj
Y3VyYWN5KTsKKworICAgIGlmIChwZXJEb21haW5EYXRhLmxhc3RQb3NpdGlvbikKKyAgICAgICAg
cHJveHkuc2VuZChNZXNzYWdlczo6V2ViR2VvbG9jYXRpb25NYW5hZ2VyOjpEaWRDaGFuZ2VQb3Np
dGlvbihyZWdpc3RyYWJsZURvbWFpbiwgcGVyRG9tYWluRGF0YS5sYXN0UG9zaXRpb24udmFsdWUo
KSksIDApOwogfQogCi12b2lkIFdlYkdlb2xvY2F0aW9uTWFuYWdlclByb3h5OjpzdG9wVXBkYXRp
bmcoSVBDOjpDb25uZWN0aW9uJiBjb25uZWN0aW9uKQordm9pZCBXZWJHZW9sb2NhdGlvbk1hbmFn
ZXJQcm94eTo6c3RvcFVwZGF0aW5nKElQQzo6Q29ubmVjdGlvbiYgY29ubmVjdGlvbiwgY29uc3Qg
V2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4mIHJlZ2lzdHJhYmxlRG9tYWluKQogewotICAgIHJl
bW92ZVJlcXVlc3RlcigmY29ubmVjdGlvbi5jbGllbnQoKSk7CisgICAgc3RvcFVwZGF0aW5nV2l0
aFByb3h5KGNvbm5lY3Rpb25Ub1dlYlByb2Nlc3NQcm94eShjb25uZWN0aW9uKSwgcmVnaXN0cmFi
bGVEb21haW4pOwogfQogCi12b2lkIFdlYkdlb2xvY2F0aW9uTWFuYWdlclByb3h5OjpyZW1vdmVS
ZXF1ZXN0ZXIoY29uc3QgSVBDOjpDb25uZWN0aW9uOjpDbGllbnQqIGNsaWVudCkKK3ZvaWQgV2Vi
R2VvbG9jYXRpb25NYW5hZ2VyUHJveHk6OnN0b3BVcGRhdGluZ1dpdGhQcm94eShXZWJQcm9jZXNz
UHJveHkmIHByb3h5LCBjb25zdCBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiYgcmVnaXN0cmFi
bGVEb21haW4pCiB7Ci0gICAgYm9vbCB3YXNVcGRhdGluZyA9IGlzVXBkYXRpbmcoKTsKLSAgICBi
b29sIGhpZ2hBY2N1cmFjeVdhc0VuYWJsZWQgPSBpc0hpZ2hBY2N1cmFjeUVuYWJsZWQoKTsKKyAg
ICBhdXRvIGl0ID0gbV9wZXJEb21haW5EYXRhLmZpbmQocmVnaXN0cmFibGVEb21haW4pOworICAg
IGlmIChpdCA9PSBtX3BlckRvbWFpbkRhdGEuZW5kKCkpCisgICAgICAgIHJldHVybjsKIAotICAg
IG1faGlnaEFjY3VyYWN5UmVxdWVzdGVycy5yZW1vdmUoY2xpZW50KTsKLSAgICBtX3VwZGF0ZVJl
cXVlc3RlcnMucmVtb3ZlKGNsaWVudCk7CisgICAgYXV0byYgcGVyRG9tYWluRGF0YSA9ICppdC0+
dmFsdWU7CisgICAgYm9vbCB3YXNVcGRhdGluZyA9IGlzVXBkYXRpbmcocGVyRG9tYWluRGF0YSk7
CisgICAgYm9vbCBoaWdoQWNjdXJhY3lXYXNFbmFibGVkID0gaXNIaWdoQWNjdXJhY3lFbmFibGVk
KHBlckRvbWFpbkRhdGEpOwogCi0gICAgaWYgKHdhc1VwZGF0aW5nICYmICFpc1VwZGF0aW5nKCkp
Ci0gICAgICAgIG1fcHJvdmlkZXItPnN0b3BVcGRhdGluZygqdGhpcyk7CisgICAgcGVyRG9tYWlu
RGF0YS53YXRjaGVycy5yZW1vdmUocHJveHkpOworICAgIHBlckRvbWFpbkRhdGEud2F0Y2hlcnNO
ZWVkaW5nSGlnaEFjY3VyYWN5LnJlbW92ZShwcm94eSk7CisKKyAgICBpZiAod2FzVXBkYXRpbmcg
JiYgIWlzVXBkYXRpbmcocGVyRG9tYWluRGF0YSkpCisgICAgICAgIHByb3ZpZGVyU3RvcFVwZGF0
aW5nKHBlckRvbWFpbkRhdGEpOwogICAgIGVsc2UgewotICAgICAgICBib29sIGhpZ2hBY2N1cmFj
eVNob3VsZEJlRW5hYmxlZCA9IGlzSGlnaEFjY3VyYWN5RW5hYmxlZCgpOworICAgICAgICBib29s
IGhpZ2hBY2N1cmFjeVNob3VsZEJlRW5hYmxlZCA9IGlzSGlnaEFjY3VyYWN5RW5hYmxlZChwZXJE
b21haW5EYXRhKTsKICAgICAgICAgaWYgKGhpZ2hBY2N1cmFjeVNob3VsZEJlRW5hYmxlZCAhPSBo
aWdoQWNjdXJhY3lXYXNFbmFibGVkKQotICAgICAgICAgICAgbV9wcm92aWRlci0+c2V0RW5hYmxl
SGlnaEFjY3VyYWN5KCp0aGlzLCBoaWdoQWNjdXJhY3lTaG91bGRCZUVuYWJsZWQpOworICAgICAg
ICAgICAgcHJvdmlkZXJTZXRFbmFibGVkSGlnaEFjY3VyYWN5KHBlckRvbWFpbkRhdGEsIGhpZ2hB
Y2N1cmFjeVNob3VsZEJlRW5hYmxlZCk7CiAgICAgfQorCisgICAgaWYgKHBlckRvbWFpbkRhdGEu
d2F0Y2hlcnMuY29tcHV0ZXNFbXB0eSgpICYmIHBlckRvbWFpbkRhdGEud2F0Y2hlcnNOZWVkaW5n
SGlnaEFjY3VyYWN5LmNvbXB1dGVzRW1wdHkoKSkKKyAgICAgICAgbV9wZXJEb21haW5EYXRhLnJl
bW92ZShpdCk7CiB9CiAKLXZvaWQgV2ViR2VvbG9jYXRpb25NYW5hZ2VyUHJveHk6OnNldEVuYWJs
ZUhpZ2hBY2N1cmFjeShJUEM6OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24sIGJvb2wgZW5hYmxlZCkK
K3ZvaWQgV2ViR2VvbG9jYXRpb25NYW5hZ2VyUHJveHk6OnNldEVuYWJsZUhpZ2hBY2N1cmFjeShJ
UEM6OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24sIGNvbnN0IFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9t
YWluJiByZWdpc3RyYWJsZURvbWFpbiwgYm9vbCBlbmFibGVkKQogewotICAgIGJvb2wgaGlnaEFj
Y3VyYWN5V2FzRW5hYmxlZCA9IGlzSGlnaEFjY3VyYWN5RW5hYmxlZCgpOworICAgIHNldEVuYWJs
ZUhpZ2hBY2N1cmFjeVdpdGhQcm94eShjb25uZWN0aW9uVG9XZWJQcm9jZXNzUHJveHkoY29ubmVj
dGlvbiksIHJlZ2lzdHJhYmxlRG9tYWluLCBlbmFibGVkKTsKK30KKwordm9pZCBXZWJHZW9sb2Nh
dGlvbk1hbmFnZXJQcm94eTo6c2V0RW5hYmxlSGlnaEFjY3VyYWN5V2l0aFByb3h5KFdlYlByb2Nl
c3NQcm94eSYgcHJveHksIGNvbnN0IFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluJiByZWdpc3Ry
YWJsZURvbWFpbiwgYm9vbCBlbmFibGVkKQoreworICAgIGF1dG8gaXQgPSBtX3BlckRvbWFpbkRh
dGEuZmluZChyZWdpc3RyYWJsZURvbWFpbik7CisgICAgQVNTRVJUKGl0ICE9IG1fcGVyRG9tYWlu
RGF0YS5lbmQoKSk7CisgICAgaWYgKGl0ID09IG1fcGVyRG9tYWluRGF0YS5lbmQoKSkKKyAgICAg
ICAgcmV0dXJuOworCisgICAgYXV0byYgcGVyRG9tYWluRGF0YSA9ICppdC0+dmFsdWU7CisgICAg
Ym9vbCBoaWdoQWNjdXJhY3lXYXNFbmFibGVkID0gaXNIaWdoQWNjdXJhY3lFbmFibGVkKHBlckRv
bWFpbkRhdGEpOwogCiAgICAgaWYgKGVuYWJsZWQpCi0gICAgICAgIG1faGlnaEFjY3VyYWN5UmVx
dWVzdGVycy5hZGQoJmNvbm5lY3Rpb24uY2xpZW50KCkpOworICAgICAgICBwZXJEb21haW5EYXRh
LndhdGNoZXJzTmVlZGluZ0hpZ2hBY2N1cmFjeS5hZGQocHJveHkpOwogICAgIGVsc2UKLSAgICAg
ICAgbV9oaWdoQWNjdXJhY3lSZXF1ZXN0ZXJzLnJlbW92ZSgmY29ubmVjdGlvbi5jbGllbnQoKSk7
CisgICAgICAgIHBlckRvbWFpbkRhdGEud2F0Y2hlcnNOZWVkaW5nSGlnaEFjY3VyYWN5LnJlbW92
ZShwcm94eSk7CisKKyAgICBpZiAoaXNVcGRhdGluZyhwZXJEb21haW5EYXRhKSAmJiBoaWdoQWNj
dXJhY3lXYXNFbmFibGVkICE9IGVuYWJsZWQpCisgICAgICAgIHByb3ZpZGVyU2V0RW5hYmxlZEhp
Z2hBY2N1cmFjeShwZXJEb21haW5EYXRhLCBlbmFibGVkKTsKK30KKworYm9vbCBXZWJHZW9sb2Nh
dGlvbk1hbmFnZXJQcm94eTo6aXNVcGRhdGluZyhjb25zdCBQZXJEb21haW5EYXRhJiBwZXJEb21h
aW5EYXRhKSBjb25zdAoreworI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCisgICAgaWYgKCFtX2Ns
aWVudFByb3ZpZGVyKQorICAgICAgICByZXR1cm4gIXBlckRvbWFpbkRhdGEud2F0Y2hlcnMuY29t
cHV0ZXNFbXB0eSgpOworI2Vsc2UKKyAgICBVTlVTRURfUEFSQU0ocGVyRG9tYWluRGF0YSk7Cisj
ZW5kaWYKKworICAgIGZvciAoYXV0byYgcGVyRG9tYWluRGF0YSA6IG1fcGVyRG9tYWluRGF0YS52
YWx1ZXMoKSkgeworICAgICAgICBpZiAoIXBlckRvbWFpbkRhdGEtPndhdGNoZXJzLmNvbXB1dGVz
RW1wdHkoKSkKKyAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgIH0KKyAgICByZXR1cm4gZmFs
c2U7Cit9CisKKworYm9vbCBXZWJHZW9sb2NhdGlvbk1hbmFnZXJQcm94eTo6aXNIaWdoQWNjdXJh
Y3lFbmFibGVkKGNvbnN0IFBlckRvbWFpbkRhdGEmIHBlckRvbWFpbkRhdGEpIGNvbnN0Cit7Cisj
aWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKKyAgICBpZiAoIW1fY2xpZW50UHJvdmlkZXIpCisgICAg
ICAgIHJldHVybiAhcGVyRG9tYWluRGF0YS53YXRjaGVyc05lZWRpbmdIaWdoQWNjdXJhY3kuY29t
cHV0ZXNFbXB0eSgpOworI2Vsc2UKKyAgICBVTlVTRURfUEFSQU0ocGVyRG9tYWluRGF0YSk7Cisj
ZW5kaWYKKworICAgIGZvciAoYXV0byYgcGVyRG9tYWluRGF0YSA6IG1fcGVyRG9tYWluRGF0YS52
YWx1ZXMoKSkgeworICAgICAgICBpZiAoIXBlckRvbWFpbkRhdGEtPndhdGNoZXJzTmVlZGluZ0hp
Z2hBY2N1cmFjeS5jb21wdXRlc0VtcHR5KCkpCisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAg
ICB9CisgICAgcmV0dXJuIGZhbHNlOworfQorCit2b2lkIFdlYkdlb2xvY2F0aW9uTWFuYWdlclBy
b3h5Ojpwcm92aWRlclN0YXJ0VXBkYXRpbmcoUGVyRG9tYWluRGF0YSYgcGVyRG9tYWluRGF0YSwg
Y29uc3QgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4mIHJlZ2lzdHJhYmxlRG9tYWluKQorewor
I2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCisgICAgaWYgKCFtX2NsaWVudFByb3ZpZGVyKSB7Cisg
ICAgICAgIEFTU0VSVCghcGVyRG9tYWluRGF0YS5wcm92aWRlcik7CisgICAgICAgIHBlckRvbWFp
bkRhdGEucHJvdmlkZXIgPSBtYWtlVW5pcXVlPFdlYkNvcmU6OkNvcmVMb2NhdGlvbkdlb2xvY2F0
aW9uUHJvdmlkZXI+KHJlZ2lzdHJhYmxlRG9tYWluLCAqdGhpcyk7CisgICAgICAgIHBlckRvbWFp
bkRhdGEucHJvdmlkZXItPnNldEVuYWJsZUhpZ2hBY2N1cmFjeSghcGVyRG9tYWluRGF0YS53YXRj
aGVyc05lZWRpbmdIaWdoQWNjdXJhY3kuY29tcHV0ZXNFbXB0eSgpKTsKKyAgICAgICAgcGVyRG9t
YWluRGF0YS5wcm92aWRlci0+c3RhcnQoKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyNlbHNl
CisgICAgVU5VU0VEX1BBUkFNKHJlZ2lzdHJhYmxlRG9tYWluKTsKKyNlbmRpZgorICAgIGlmICgh
bV9jbGllbnRQcm92aWRlcikKKyAgICAgICAgcmV0dXJuOworCisgICAgbV9jbGllbnRQcm92aWRl
ci0+c2V0RW5hYmxlSGlnaEFjY3VyYWN5KCp0aGlzLCBpc0hpZ2hBY2N1cmFjeUVuYWJsZWQocGVy
RG9tYWluRGF0YSkpOworICAgIG1fY2xpZW50UHJvdmlkZXItPnN0YXJ0VXBkYXRpbmcoKnRoaXMp
OworfQorCit2b2lkIFdlYkdlb2xvY2F0aW9uTWFuYWdlclByb3h5Ojpwcm92aWRlclN0b3BVcGRh
dGluZyhQZXJEb21haW5EYXRhJiBwZXJEb21haW5EYXRhKQoreworI2lmIFBMQVRGT1JNKElPU19G
QU1JTFkpCisgICAgaWYgKCFtX2NsaWVudFByb3ZpZGVyKSB7CisgICAgICAgIHBlckRvbWFpbkRh
dGEucHJvdmlkZXItPnN0b3AoKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyNlbHNlCisgICAg
VU5VU0VEX1BBUkFNKHBlckRvbWFpbkRhdGEpOworI2VuZGlmCisKKyAgICBpZiAobV9jbGllbnRQ
cm92aWRlcikKKyAgICAgICAgbV9jbGllbnRQcm92aWRlci0+c3RvcFVwZGF0aW5nKCp0aGlzKTsK
K30KKwordm9pZCBXZWJHZW9sb2NhdGlvbk1hbmFnZXJQcm94eTo6cHJvdmlkZXJTZXRFbmFibGVk
SGlnaEFjY3VyYWN5KFBlckRvbWFpbkRhdGEmIHBlckRvbWFpbkRhdGEsIGJvb2wgZW5hYmxlZCkK
K3sKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZKQorICAgIGlmICghbV9jbGllbnRQcm92aWRlcikK
KyAgICAgICAgcGVyRG9tYWluRGF0YS5wcm92aWRlci0+c2V0RW5hYmxlSGlnaEFjY3VyYWN5KGVu
YWJsZWQpOworI2Vsc2UKKyAgICBVTlVTRURfUEFSQU0ocGVyRG9tYWluRGF0YSk7CisjZW5kaWYK
IAotICAgIGJvb2wgaGlnaEFjY3VyYWN5U2hvdWxkQmVFbmFibGVkID0gaXNIaWdoQWNjdXJhY3lF
bmFibGVkKCk7Ci0gICAgaWYgKGlzVXBkYXRpbmcoKSAmJiBoaWdoQWNjdXJhY3lXYXNFbmFibGVk
ICE9IGhpZ2hBY2N1cmFjeVNob3VsZEJlRW5hYmxlZCkKLSAgICAgICAgbV9wcm92aWRlci0+c2V0
RW5hYmxlSGlnaEFjY3VyYWN5KCp0aGlzLCBoaWdoQWNjdXJhY3lTaG91bGRCZUVuYWJsZWQpOwor
ICAgIGlmIChtX2NsaWVudFByb3ZpZGVyKQorICAgICAgICBtX2NsaWVudFByb3ZpZGVyLT5zZXRF
bmFibGVIaWdoQWNjdXJhY3koKnRoaXMsIGVuYWJsZWQpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBX
ZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkdlb2xvY2F0aW9u
TWFuYWdlclByb3h5LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJHZW9sb2NhdGlvbk1h
bmFnZXJQcm94eS5oCmluZGV4IDc0OTM2ZTQ1YTBkODM4M2E4YjRiM2Q2ZDU3OGM5YmQyMmJlM2Zh
NWUuLjA3YjkzYjdiODhiNjY0MTg2ZjkwM2RmNDBmOTc5MTU4MjkyZDAwZGQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkdlb2xvY2F0aW9uTWFuYWdlclByb3h5LmgKKysr
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViR2VvbG9jYXRpb25NYW5hZ2VyUHJveHkuaApA
QCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTEsIDIwMTIsIDIwMTMgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDExLTIwMjIg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCkBAIC0zMSw5ICszMSwxNiBAQAogI2luY2x1ZGUgIldlYkNvbnRleHRTdXBwbGVtZW50
LmgiCiAjaW5jbHVkZSAiV2ViUGFnZVByb3h5SWRlbnRpZmllci5oIgogI2luY2x1ZGUgPFdlYkNv
cmUvR2VvbG9jYXRpb25Qb3NpdGlvbkRhdGEuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL1JlZ2lzdHJh
YmxlRG9tYWluLmg+CisjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KICNpbmNsdWRlIDx3dGYvSGFz
aFNldC5oPgorI2luY2x1ZGUgPHd0Zi9XZWFrSGFzaFNldC5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0
L1dURlN0cmluZy5oPgogCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKKyNpbmNsdWRlIDxXZWJD
b3JlL0NvcmVMb2NhdGlvbkdlb2xvY2F0aW9uUHJvdmlkZXIuaD4KKyNlbmRpZgorCiBuYW1lc3Bh
Y2UgQVBJIHsKIGNsYXNzIEdlb2xvY2F0aW9uUHJvdmlkZXI7CiB9CkBAIC00MywxMSArNTAsMTYg
QEAgbmFtZXNwYWNlIFdlYktpdCB7CiBjbGFzcyBXZWJHZW9sb2NhdGlvblBvc2l0aW9uOwogY2xh
c3MgV2ViUHJvY2Vzc1Bvb2w7CiAKLWNsYXNzIFdlYkdlb2xvY2F0aW9uTWFuYWdlclByb3h5IDog
cHVibGljIEFQSTo6T2JqZWN0SW1wbDxBUEk6Ok9iamVjdDo6VHlwZTo6R2VvbG9jYXRpb25NYW5h
Z2VyPiwgcHVibGljIFdlYkNvbnRleHRTdXBwbGVtZW50LCBwcml2YXRlIElQQzo6TWVzc2FnZVJl
Y2VpdmVyIHsKK2NsYXNzIFdlYkdlb2xvY2F0aW9uTWFuYWdlclByb3h5IDogcHVibGljIEFQSTo6
T2JqZWN0SW1wbDxBUEk6Ok9iamVjdDo6VHlwZTo6R2VvbG9jYXRpb25NYW5hZ2VyPiwgcHVibGlj
IFdlYkNvbnRleHRTdXBwbGVtZW50LCBwcml2YXRlIElQQzo6TWVzc2FnZVJlY2VpdmVyCisjaWYg
UExBVEZPUk0oSU9TX0ZBTUlMWSkKKyAgICAsIHB1YmxpYyBXZWJDb3JlOjpDb3JlTG9jYXRpb25H
ZW9sb2NhdGlvblByb3ZpZGVyOjpDbGllbnQKKyNlbmRpZgorewogcHVibGljOgogICAgIHN0YXRp
YyBjb25zdCBjaGFyKiBzdXBwbGVtZW50TmFtZSgpOwogCiAgICAgc3RhdGljIFJlZjxXZWJHZW9s
b2NhdGlvbk1hbmFnZXJQcm94eT4gY3JlYXRlKFdlYlByb2Nlc3NQb29sKik7CisgICAgfldlYkdl
b2xvY2F0aW9uTWFuYWdlclByb3h5KCk7CiAKICAgICB2b2lkIHNldFByb3ZpZGVyKHN0ZDo6dW5p
cXVlX3B0cjxBUEk6Okdlb2xvY2F0aW9uUHJvdmlkZXI+JiYpOwogCkBAIC01NiwzNiArNjgsNTkg
QEAgcHVibGljOgogI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAgdm9pZCByZXNldFBlcm1p
c3Npb25zKCk7CiAjZW5kaWYKLSAgICBjb25zdCBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6Okdlb2xv
Y2F0aW9uUG9zaXRpb25EYXRhPiYgbGFzdFBvc2l0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9sYXN0
UG9zaXRpb247IH0KIAogICAgIHVzaW5nIEFQSTo6T2JqZWN0OjpyZWY7CiAgICAgdXNpbmcgQVBJ
OjpPYmplY3Q6OmRlcmVmOwogCisgICAgdm9pZCB3ZWJQcm9jZXNzSXNHb2luZ0F3YXkoV2ViUHJv
Y2Vzc1Byb3h5Jik7CisKIHByaXZhdGU6CiAgICAgZXhwbGljaXQgV2ViR2VvbG9jYXRpb25NYW5h
Z2VyUHJveHkoV2ViUHJvY2Vzc1Bvb2wqKTsKIAogICAgIC8vIFdlYkNvbnRleHRTdXBwbGVtZW50
CiAgICAgdm9pZCBwcm9jZXNzUG9vbERlc3Ryb3llZCgpIG92ZXJyaWRlOwotICAgIHZvaWQgcHJv
Y2Vzc0RpZENsb3NlKFdlYlByb2Nlc3NQcm94eSopIG92ZXJyaWRlOwogICAgIHZvaWQgcmVmV2Vi
Q29udGV4dFN1cHBsZW1lbnQoKSBvdmVycmlkZTsKICAgICB2b2lkIGRlcmVmV2ViQ29udGV4dFN1
cHBsZW1lbnQoKSBvdmVycmlkZTsKIAogICAgIC8vIElQQzo6TWVzc2FnZVJlY2VpdmVyCiAgICAg
dm9pZCBkaWRSZWNlaXZlTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6OkRlY29kZXImKSBv
dmVycmlkZTsKIAotICAgIGJvb2wgaXNVcGRhdGluZygpIGNvbnN0IHsgcmV0dXJuICFtX3VwZGF0
ZVJlcXVlc3RlcnMuaXNFbXB0eSgpOyB9Ci0gICAgYm9vbCBpc0hpZ2hBY2N1cmFjeUVuYWJsZWQo
KSBjb25zdCB7IHJldHVybiAhbV9oaWdoQWNjdXJhY3lSZXF1ZXN0ZXJzLmlzRW1wdHkoKTsgfQor
ICAgIC8vIElQQyBtZXNzYWdlcy4KKyAgICB2b2lkIHN0YXJ0VXBkYXRpbmcoSVBDOjpDb25uZWN0
aW9uJiwgY29uc3QgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4mLCBXZWJQYWdlUHJveHlJZGVu
dGlmaWVyLCBjb25zdCBTdHJpbmcmIGF1dGhvcml6YXRpb25Ub2tlbiwgYm9vbCBlbmFibGVIaWdo
QWNjdXJhY3kpOworICAgIHZvaWQgc3RvcFVwZGF0aW5nKElQQzo6Q29ubmVjdGlvbiYsIGNvbnN0
IFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluJik7CisgICAgdm9pZCBzZXRFbmFibGVIaWdoQWNj
dXJhY3koSVBDOjpDb25uZWN0aW9uJiwgY29uc3QgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4m
LCBib29sKTsKKworICAgIHZvaWQgc3RhcnRVcGRhdGluZ1dpdGhQcm94eShXZWJQcm9jZXNzUHJv
eHkmLCBjb25zdCBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiYsIFdlYlBhZ2VQcm94eUlkZW50
aWZpZXIsIGNvbnN0IFN0cmluZyYgYXV0aG9yaXphdGlvblRva2VuLCBib29sIGVuYWJsZUhpZ2hB
Y2N1cmFjeSk7CisgICAgdm9pZCBzdG9wVXBkYXRpbmdXaXRoUHJveHkoV2ViUHJvY2Vzc1Byb3h5
JiwgY29uc3QgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4mKTsKKyAgICB2b2lkIHNldEVuYWJs
ZUhpZ2hBY2N1cmFjeVdpdGhQcm94eShXZWJQcm9jZXNzUHJveHkmLCBjb25zdCBXZWJDb3JlOjpS
ZWdpc3RyYWJsZURvbWFpbiYsIGJvb2wpOwogCi0gICAgdm9pZCBzdGFydFVwZGF0aW5nKElQQzo6
Q29ubmVjdGlvbiYsIFdlYlBhZ2VQcm94eUlkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgYXV0aG9y
aXphdGlvblRva2VuKTsKLSAgICB2b2lkIHN0b3BVcGRhdGluZyhJUEM6OkNvbm5lY3Rpb24mKTsK
LSAgICB2b2lkIHJlbW92ZVJlcXVlc3Rlcihjb25zdCBJUEM6OkNvbm5lY3Rpb246OkNsaWVudCop
OwotICAgIHZvaWQgc2V0RW5hYmxlSGlnaEFjY3VyYWN5KElQQzo6Q29ubmVjdGlvbiYsIGJvb2wp
OworI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCisgICAgLy8gQ29yZUxvY2F0aW9uR2VvbG9jYXRp
b25Qcm92aWRlcjo6Q2xpZW50CisgICAgdm9pZCBwb3NpdGlvbkNoYW5nZWQoY29uc3QgU3RyaW5n
JiB3ZWJzaXRlSWRlbnRpZmllciwgV2ViQ29yZTo6R2VvbG9jYXRpb25Qb3NpdGlvbkRhdGEmJikg
ZmluYWw7CisgICAgdm9pZCBlcnJvck9jY3VycmVkKGNvbnN0IFN0cmluZyYgd2Vic2l0ZUlkZW50
aWZpZXIsIGNvbnN0IFN0cmluZyYgZXJyb3JNZXNzYWdlKSBmaW5hbDsKKyAgICB2b2lkIHJlc2V0
R2VvbG9jYXRpb24oY29uc3QgU3RyaW5nJiB3ZWJzaXRlSWRlbnRpZmllcikgZmluYWw7CisjZW5k
aWYKKworICAgIHN0cnVjdCBQZXJEb21haW5EYXRhIHsKKyAgICAgICAgV1RGX01BS0VfU1RSVUNU
X0ZBU1RfQUxMT0NBVEVEOworICAgICAgICBXZWFrSGFzaFNldDxXZWJQcm9jZXNzUHJveHk+IHdh
dGNoZXJzOworICAgICAgICBXZWFrSGFzaFNldDxXZWJQcm9jZXNzUHJveHk+IHdhdGNoZXJzTmVl
ZGluZ0hpZ2hBY2N1cmFjeTsKKyAgICAgICAgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpHZW9sb2Nh
dGlvblBvc2l0aW9uRGF0YT4gbGFzdFBvc2l0aW9uOworCisgICAgICAgIC8vIEZJWE1FOiBVc2Ug
Zm9yIGFsbCBDb2NvYSBwb3J0cy4KKyNpZiBQTEFURk9STShJT1NfRkFNSUxZKQorICAgICAgICBz
dGQ6OnVuaXF1ZV9wdHI8V2ViQ29yZTo6Q29yZUxvY2F0aW9uR2VvbG9jYXRpb25Qcm92aWRlcj4g
cHJvdmlkZXI7CisjZW5kaWYKKyAgICB9OwogCi0gICAgSGFzaFNldDxjb25zdCBJUEM6OkNvbm5l
Y3Rpb246OkNsaWVudCo+IG1fdXBkYXRlUmVxdWVzdGVyczsKLSAgICBIYXNoU2V0PGNvbnN0IElQ
Qzo6Q29ubmVjdGlvbjo6Q2xpZW50Kj4gbV9oaWdoQWNjdXJhY3lSZXF1ZXN0ZXJzOworICAgIGJv
b2wgaXNVcGRhdGluZyhjb25zdCBQZXJEb21haW5EYXRhJikgY29uc3Q7CisgICAgYm9vbCBpc0hp
Z2hBY2N1cmFjeUVuYWJsZWQoY29uc3QgUGVyRG9tYWluRGF0YSYpIGNvbnN0OworICAgIHZvaWQg
cHJvdmlkZXJTdGFydFVwZGF0aW5nKFBlckRvbWFpbkRhdGEmLCBjb25zdCBXZWJDb3JlOjpSZWdp
c3RyYWJsZURvbWFpbiYpOworICAgIHZvaWQgcHJvdmlkZXJTdG9wVXBkYXRpbmcoUGVyRG9tYWlu
RGF0YSYpOworICAgIHZvaWQgcHJvdmlkZXJTZXRFbmFibGVkSGlnaEFjY3VyYWN5KFBlckRvbWFp
bkRhdGEmLCBib29sIGVuYWJsZWQpOwogCi0gICAgc3RkOjp1bmlxdWVfcHRyPEFQSTo6R2VvbG9j
YXRpb25Qcm92aWRlcj4gbV9wcm92aWRlcjsKLSAgICBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6Okdl
b2xvY2F0aW9uUG9zaXRpb25EYXRhPiBtX2xhc3RQb3NpdGlvbjsKKyAgICBIYXNoTWFwPFdlYkNv
cmU6OlJlZ2lzdHJhYmxlRG9tYWluLCBzdGQ6OnVuaXF1ZV9wdHI8UGVyRG9tYWluRGF0YT4+IG1f
cGVyRG9tYWluRGF0YTsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8QVBJOjpHZW9sb2NhdGlvblByb3Zp
ZGVyPiBtX2NsaWVudFByb3ZpZGVyOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJHZW9sb2NhdGlvbk1hbmFnZXJQcm94
eS5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkdlb2xvY2F0aW9uTWFu
YWdlclByb3h5Lm1lc3NhZ2VzLmluCmluZGV4IGU1ZTljMjdkMTRhNWZiNzI2ZmNjMmM4MWZmM2Ux
NjVlYTNlODQwYmUuLjkwNDFhOTBjMjUwZjhhZGQ2OGJiMTNiM2FiYjU0YmViNjZjYjJkMjcgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkdlb2xvY2F0aW9uTWFuYWdlclBy
b3h5Lm1lc3NhZ2VzLmluCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkdlb2xvY2F0
aW9uTWFuYWdlclByb3h5Lm1lc3NhZ2VzLmluCkBAIC0yMSw3ICsyMSw3IEBACiAjIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCiAKIG1lc3NhZ2VzIC0+IFdlYkdlb2xvY2F0aW9uTWFuYWdlclByb3h5IHsKLSAgICBTdGFy
dFVwZGF0aW5nKFdlYktpdDo6V2ViUGFnZVByb3h5SWRlbnRpZmllciBwYWdlUHJveHlJRCwgU3Ry
aW5nIGF1dGhvcml6YXRpb25Ub2tlbikgV2FudHNDb25uZWN0aW9uCi0gICAgU3RvcFVwZGF0aW5n
KCkgV2FudHNDb25uZWN0aW9uCi0gICAgU2V0RW5hYmxlSGlnaEFjY3VyYWN5KGJvb2wgZW5hYmxl
ZCkgV2FudHNDb25uZWN0aW9uCisgICAgU3RhcnRVcGRhdGluZyhXZWJDb3JlOjpSZWdpc3RyYWJs
ZURvbWFpbiByZWdpc3RyYWJsZURvbWFpbiwgV2ViS2l0OjpXZWJQYWdlUHJveHlJZGVudGlmaWVy
IHBhZ2VQcm94eUlELCBTdHJpbmcgYXV0aG9yaXphdGlvblRva2VuLCBib29sIGVuYWJsZUhpZ2hB
Y2N1cmFjeSkgV2FudHNDb25uZWN0aW9uCisgICAgU3RvcFVwZGF0aW5nKFdlYkNvcmU6OlJlZ2lz
dHJhYmxlRG9tYWluIHJlZ2lzdHJhYmxlRG9tYWluKSBXYW50c0Nvbm5lY3Rpb24KKyAgICBTZXRF
bmFibGVIaWdoQWNjdXJhY3koV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4gcmVnaXN0cmFibGVE
b21haW4sIGJvb2wgZW5hYmxlZCkgV2FudHNDb25uZWN0aW9uCiB9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5jcHAKaW5kZXggZjYwZDNlY2QyY2E2ZjBmYzczNjcwYzM5
ZGEyYWI3NjAwMzVmMmY3NC4uZmExNzQyY2YzMmRhOTk1MjczMjNkZmM3YzhiZjBhNzkwNjMwNDFm
ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmNwcApAQCAtNDMx
LDkgKzQzMSw2IEBAIHZvaWQgV2ViUHJvY2Vzc1Bvb2w6OnNjcmVlblByb3BlcnRpZXNTdGF0ZUNo
YW5nZWQoKQogCiB2b2lkIFdlYlByb2Nlc3NQb29sOjpuZXR3b3JrUHJvY2Vzc0RpZFRlcm1pbmF0
ZShOZXR3b3JrUHJvY2Vzc1Byb3h5JiBuZXR3b3JrUHJvY2Vzc1Byb3h5LCBOZXR3b3JrUHJvY2Vz
c1Byb3h5OjpUZXJtaW5hdGlvblJlYXNvbiByZWFzb24pCiB7Ci0gICAgZm9yIChhdXRvJiBzdXBw
bGVtZW50IDogbV9zdXBwbGVtZW50cy52YWx1ZXMoKSkKLSAgICAgICAgc3VwcGxlbWVudC0+cHJv
Y2Vzc0RpZENsb3NlKCZuZXR3b3JrUHJvY2Vzc1Byb3h5KTsKLQogICAgIGlmIChyZWFzb24gPT0g
TmV0d29ya1Byb2Nlc3NQcm94eTo6VGVybWluYXRpb25SZWFzb246OkNyYXNoKQogICAgICAgICBt
X2NsaWVudC5uZXR3b3JrUHJvY2Vzc0RpZENyYXNoKHRoaXMpOwogCkBAIC0xMDU3LDcgKzEwNTQs
NyBAQCB2b2lkIFdlYlByb2Nlc3NQb29sOjpkaXNjb25uZWN0UHJvY2VzcyhXZWJQcm9jZXNzUHJv
eHkmIHByb2Nlc3MpCiAgICAgaWYgKHByb2Nlc3MuaXNSdW5uaW5nV29ya2VycygpKQogICAgICAg
ICByZW1vdmVGcm9tUmVtb3RlV29ya2VyUHJvY2Vzc2VzKHByb2Nlc3MpOwogCi0gICAgc3RhdGlj
X2Nhc3Q8V2ViQ29udGV4dFN1cHBsZW1lbnQqPihzdXBwbGVtZW50PFdlYkdlb2xvY2F0aW9uTWFu
YWdlclByb3h5PigpKS0+cHJvY2Vzc0RpZENsb3NlKCZwcm9jZXNzKTsKKyAgICBzdXBwbGVtZW50
PFdlYkdlb2xvY2F0aW9uTWFuYWdlclByb3h5PigpLT53ZWJQcm9jZXNzSXNHb2luZ0F3YXkocHJv
Y2Vzcyk7CiAKICAgICBtX3Byb2Nlc3Nlcy5yZW1vdmVGaXJzdChwcm9jZXNzKTsKIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dLR2VvbG9jYXRpb25Qcm92aWRlcklP
Uy5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XS0dlb2xvY2F0aW9uUHJvdmlkZXJJ
T1MubW0KaW5kZXggZjVlOWZkN2JjMzQxMjk3YWY3YjI0ZTY3NDE2MzMyY2Q5NmFkNzM5Yy4uZTYz
OGFkOWM0ZThiNzM4YmYxNjUxNGQ3MTlkYzFiZThhNzZiNTlkNCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvaW9zL1dLR2VvbG9jYXRpb25Qcm92aWRlcklPUy5tbQorKysgYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tHZW9sb2NhdGlvblByb3ZpZGVySU9TLm1tCkBA
IC01MSw3ICs1MSw2IEBACiAjaW1wb3J0IDx3dGYvVVJMLmg+CiAKIC8vIEZJWE1FOiBSZW1vdmUg
dXNlIG9mIFdlYktpdDEgZnJvbSBXZWJLaXQyCi0jaW1wb3J0IDxXZWJLaXQvV2ViR2VvbG9jYXRp
b25Db3JlTG9jYXRpb25Qcm92aWRlci5oPgogI2ltcG9ydCA8V2ViS2l0L1dlYkFsbG93RGVueVBv
bGljeUxpc3RlbmVyLmg+CiAKIEFMTE9XX0RFUFJFQ0FURURfREVDTEFSQVRJT05TX0JFR0lOCkBA
IC01OSw5ICs1OCw2IEBAIEFMTE9XX0RFUFJFQ0FURURfREVDTEFSQVRJT05TX0JFR0lOCiBAaW50
ZXJmYWNlIFdLR2VvbG9jYXRpb25Qcm92aWRlcklPUyAoX1dLR2VvbG9jYXRpb25Db3JlTG9jYXRp
b25MaXN0ZW5lcikgPF9XS0dlb2xvY2F0aW9uQ29yZUxvY2F0aW9uTGlzdGVuZXI+CiBAZW5kCiAK
LUBpbnRlcmZhY2UgV0tMZWdhY3lDb3JlTG9jYXRpb25Qcm92aWRlciA6IE5TT2JqZWN0PF9XS0dl
b2xvY2F0aW9uQ29yZUxvY2F0aW9uUHJvdmlkZXIsIFdlYkdlb2xvY2F0aW9uQ29yZUxvY2F0aW9u
VXBkYXRlTGlzdGVuZXI+Ci1AZW5kCi0KIEBpbnRlcmZhY2UgV0tXZWJBbGxvd0RlbnlQb2xpY3lM
aXN0ZW5lciA6IE5TT2JqZWN0PFdlYkFsbG93RGVueVBvbGljeUxpc3RlbmVyPgogLSAoaWQpaW5p
dFdpdGhDb21wbGV0aW9uSGFuZGxlcjooRnVuY3Rpb248dm9pZChib29sKT4mJiljb21wbGV0aW9u
SGFuZGxlcjsKIC0gKHZvaWQpZGVueU9ubHlUaGlzUmVxdWVzdCBOT19SRVRVUk5fRFVFX1RPX0FT
U0VSVDsKQEAgLTE0NiwyNSArMTQyLDQyIEBAIC0gKGlkKWluaXRXaXRoUHJvY2Vzc1Bvb2w6KFdl
YktpdDo6V2ViUHJvY2Vzc1Bvb2wmKXByb2Nlc3NQb29sCiAgICAgc2VsZiA9IFtzdXBlciBpbml0
XTsKICAgICBpZiAoIXNlbGYpCiAgICAgICAgIHJldHVybiBuaWw7Ci0gICAgX2dlb2xvY2F0aW9u
TWFuYWdlciA9IHByb2Nlc3NQb29sLnN1cHBsZW1lbnQ8V2ViS2l0OjpXZWJHZW9sb2NhdGlvbk1h
bmFnZXJQcm94eT4oKTsKLSAgICBXS0dlb2xvY2F0aW9uUHJvdmlkZXJWMSBwcm92aWRlckNhbGxi
YWNrID0gewotICAgICAgICB7IDEsIHNlbGYgfSwKLSAgICAgICAgc3RhcnRVcGRhdGluZ0NhbGxi
YWNrLAotICAgICAgICBzdG9wVXBkYXRpbmdDYWxsYmFjaywKLSAgICAgICAgc2V0RW5hYmxlSGln
aEFjY3VyYWN5Ci0gICAgfTsKLSAgICBXS0dlb2xvY2F0aW9uTWFuYWdlclNldFByb3ZpZGVyKHRv
QVBJKF9nZW9sb2NhdGlvbk1hbmFnZXIuZ2V0KCkpLCAmcHJvdmlkZXJDYWxsYmFjay5iYXNlKTsK
LSAgICBfY29yZUxvY2F0aW9uUHJvdmlkZXIgPSB3cmFwcGVyKHByb2Nlc3NQb29sKS5fY29yZUxv
Y2F0aW9uUHJvdmlkZXIgPzogYWRvcHROUyhzdGF0aWNfY2FzdDxpZCA8X1dLR2VvbG9jYXRpb25D
b3JlTG9jYXRpb25Qcm92aWRlcj4+KFtbV0tMZWdhY3lDb3JlTG9jYXRpb25Qcm92aWRlciBhbGxv
Y10gaW5pdF0pKTsKLSAgICBbX2NvcmVMb2NhdGlvblByb3ZpZGVyIHNldExpc3RlbmVyOnNlbGZd
OworCisgICAgLy8gT24gaU9TLCBXZWJLaXQgbm9ybWFsbHkgcHJvdmlkZXMgdGhlIGxvY2F0aW9u
LiBIb3dldmVyLCBpZiB0aGUgY2xpZW50IHNldHMgYSBjb3JlTG9jYXRpb25Qcm92aWRlciwgdGhl
biB3ZSB1c2UgdGhhdCBvbmUgaW5zdGVhZC4KKyAgICAvLyBUaGlzIGlzIHVzZWZ1bCBmb3IgV2Vi
S2l0VGVzdFJ1bm5lciB0byBwcm92aWRlIGEgZHVtbXkgZ2VvbG9jYXRpb24gcHJvdmlkZXIuIEl0
IGlzIGFsc28gdXNlZCBieSBjZXJ0YWluIGFwcHMgdG8gZGVueSBhbGwKKyAgICAvLyBnZW9sb2Nh
dGlvbiBhdXRob3JpemF0aW9uIGFzIGEgd2F5IHRvIGRpc2FibGUgc3VwcG9ydCBmb3IgZ2VvbG9j
YXRpb24uCisgICAgaWYgKHdyYXBwZXIocHJvY2Vzc1Bvb2wpLl9jb3JlTG9jYXRpb25Qcm92aWRl
cikgeworICAgICAgICBfZ2VvbG9jYXRpb25NYW5hZ2VyID0gcHJvY2Vzc1Bvb2wuc3VwcGxlbWVu
dDxXZWJLaXQ6OldlYkdlb2xvY2F0aW9uTWFuYWdlclByb3h5PigpOworICAgICAgICBXS0dlb2xv
Y2F0aW9uUHJvdmlkZXJWMSBwcm92aWRlckNhbGxiYWNrID0geworICAgICAgICAgICAgeyAxLCBz
ZWxmIH0sCisgICAgICAgICAgICBzdGFydFVwZGF0aW5nQ2FsbGJhY2ssCisgICAgICAgICAgICBz
dG9wVXBkYXRpbmdDYWxsYmFjaywKKyAgICAgICAgICAgIHNldEVuYWJsZUhpZ2hBY2N1cmFjeQor
ICAgICAgICB9OworICAgICAgICBXS0dlb2xvY2F0aW9uTWFuYWdlclNldFByb3ZpZGVyKHRvQVBJ
KF9nZW9sb2NhdGlvbk1hbmFnZXIuZ2V0KCkpLCAmcHJvdmlkZXJDYWxsYmFjay5iYXNlKTsKKyAg
ICAgICAgX2NvcmVMb2NhdGlvblByb3ZpZGVyID0gd3JhcHBlcihwcm9jZXNzUG9vbCkuX2NvcmVM
b2NhdGlvblByb3ZpZGVyOworICAgICAgICBbX2NvcmVMb2NhdGlvblByb3ZpZGVyIHNldExpc3Rl
bmVyOnNlbGZdOworICAgIH0KICAgICByZXR1cm4gc2VsZjsKIH0KIAogLSAodm9pZClkZWNpZGVQ
b2xpY3lGb3JHZW9sb2NhdGlvblJlcXVlc3RGcm9tT3JpZ2luOihXZWJLaXQ6OkZyYW1lSW5mb0Rh
dGEmJilmcmFtZUluZm8gY29tcGxldGlvbkhhbmRsZXI6KEZ1bmN0aW9uPHZvaWQoYm9vbCk+JiYp
Y29tcGxldGlvbkhhbmRsZXIgdmlldzooV0tXZWJWaWV3ICopY29udGVudFZpZXcKIHsKLSAgICAv
LyBTdGVwIDE6IGFzayB0aGUgdXNlciBpZiB0aGUgYXBwIGNhbiB1c2UgR2VvbG9jYXRpb24uCisg
ICAgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4gcmVnaXN0cmFibGVEb21haW4oZnJhbWVJbmZv
LnNlY3VyaXR5T3JpZ2luKTsKICAgICBHZW9sb2NhdGlvblJlcXVlc3REYXRhIGdlb2xvY2F0aW9u
UmVxdWVzdERhdGEgeyBbY29udGVudFZpZXcgVVJMXSwgV1RGTW92ZShmcmFtZUluZm8pLCBXVEZN
b3ZlKGNvbXBsZXRpb25IYW5kbGVyKSwgY29udGVudFZpZXcgfTsKICAgICBfcmVxdWVzdHNXYWl0
aW5nRm9yQ29yZUxvY2F0aW9uQXV0aG9yaXphdGlvbi5hcHBlbmQoV1RGTW92ZShnZW9sb2NhdGlv
blJlcXVlc3REYXRhKSk7Ci0gICAgW19jb3JlTG9jYXRpb25Qcm92aWRlciByZXF1ZXN0R2VvbG9j
YXRpb25BdXRob3JpemF0aW9uXTsKKyAgICBpZiAoX2NvcmVMb2NhdGlvblByb3ZpZGVyKSB7Cisg
ICAgICAgIC8vIFN0ZXAgMTogYXNrIHRoZSB1c2VyIGlmIHRoZSBhcHAgY2FuIHVzZSBHZW9sb2Nh
dGlvbi4KKyAgICAgICAgW19jb3JlTG9jYXRpb25Qcm92aWRlciByZXF1ZXN0R2VvbG9jYXRpb25B
dXRob3JpemF0aW9uXTsKKyAgICB9IGVsc2UgeworICAgICAgICAvLyBTdGVwIDE6IGFzayBDb3Jl
TG9jYXRpb24gaWYgdGhlIGFwcCBjYW4gdXNlIEdlb2xvY2F0aW9uLgorICAgICAgICBXZWJDb3Jl
OjpDb3JlTG9jYXRpb25HZW9sb2NhdGlvblByb3ZpZGVyOjpyZXF1ZXN0QXV0aG9yaXphdGlvbihy
ZWdpc3RyYWJsZURvbWFpbiwgW3NlbGYsIHN0cm9uZ1NlbGYgPSByZXRhaW5QdHIoc2VsZildKGJv
b2wgYXV0aG9yaXplZCkgeworICAgICAgICAgICAgaWYgKGF1dGhvcml6ZWQpCisgICAgICAgICAg
ICAgICAgW3NlbGYgZ2VvbG9jYXRpb25BdXRob3JpemF0aW9uR3JhbnRlZF07CisgICAgICAgICAg
ICBlbHNlCisgICAgICAgICAgICAgICAgW3NlbGYgZ2VvbG9jYXRpb25BdXRob3JpemF0aW9uRGVu
aWVkXTsKKyAgICAgICAgfSk7CisgICAgfQogfQogQGVuZAogCkBAIC0xNzQsNyArMTg3LDcgQEAg
QGltcGxlbWVudGF0aW9uIFdLR2VvbG9jYXRpb25Qcm92aWRlcklPUyAoV2ViR2VvbG9jYXRpb25D
b3JlTG9jYXRpb25VcGRhdGVMaXN0ZW4KIAogLSAodm9pZClnZW9sb2NhdGlvbkF1dGhvcml6YXRp
b25HcmFudGVkCiB7Ci0gICAgLy8gU3RlcCAyOiBhc2sgdGhlIHVzZXIgaWYgdGhpcyBwYXJ0aWN1
bGFyIHBhZ2UgY2FuIHVzZSBnZWxvY2F0aW9uLgorICAgIC8vIFN0ZXAgMjogYXNrIHRoZSB1c2Vy
IGlmIHRoaXMgcGFydGljdWxhciBwYWdlIGNhbiB1c2UgZ2VvbG9jYXRpb24uCiAgICAgaWYgKF9y
ZXF1ZXN0c1dhaXRpbmdGb3JDb3JlTG9jYXRpb25BdXRob3JpemF0aW9uLmlzRW1wdHkoKSkKICAg
ICAgICAgcmV0dXJuOwogCkBAIC0yMjYsODEgKzIzOSw2IEBAIC0gKHZvaWQpcmVzZXRHZW9sb2Nh
dGlvbgogCiBAZW5kCiAKLSMgcHJhZ21hIG1hcmsgLSBJbXBsZW1lbnRhdGlvbiBvZiBXS0xlZ2Fj
eUNvcmVMb2NhdGlvblByb3ZpZGVyCi0KLUBpbXBsZW1lbnRhdGlvbiBXS0xlZ2FjeUNvcmVMb2Nh
dGlvblByb3ZpZGVyIHsKLSAgICBpZCA8X1dLR2VvbG9jYXRpb25Db3JlTG9jYXRpb25MaXN0ZW5l
cj4gX2xpc3RlbmVyOwotICAgIFJldGFpblB0cjxXZWJHZW9sb2NhdGlvbkNvcmVMb2NhdGlvblBy
b3ZpZGVyPiBfcHJvdmlkZXI7Ci19Ci0KLS8vIDxfV0tHZW9sb2NhdGlvbkNvcmVMb2NhdGlvblBy
b3ZpZGVyPiBNZXRob2RzCi0KLS0gKHZvaWQpc2V0TGlzdGVuZXI6KGlkPF9XS0dlb2xvY2F0aW9u
Q29yZUxvY2F0aW9uTGlzdGVuZXI+KWxpc3RlbmVyCi17Ci0gICAgQVNTRVJUKGxpc3RlbmVyICYm
ICFfbGlzdGVuZXIgJiYgIV9wcm92aWRlcik7Ci0gICAgX2xpc3RlbmVyID0gbGlzdGVuZXI7Ci0g
ICAgX3Byb3ZpZGVyID0gYWRvcHROUyhbW1dlYkdlb2xvY2F0aW9uQ29yZUxvY2F0aW9uUHJvdmlk
ZXIgYWxsb2NdIGluaXRXaXRoTGlzdGVuZXI6c2VsZl0pOwotfQotCi0tICh2b2lkKXJlcXVlc3RH
ZW9sb2NhdGlvbkF1dGhvcml6YXRpb24KLXsKLSAgICBBU1NFUlQoX3Byb3ZpZGVyKTsKLSAgICBb
X3Byb3ZpZGVyIHJlcXVlc3RHZW9sb2NhdGlvbkF1dGhvcml6YXRpb25dOwotfQotCi0tICh2b2lk
KXN0YXJ0Ci17Ci0gICAgQVNTRVJUKF9wcm92aWRlcik7Ci0gICAgW19wcm92aWRlciBzdGFydF07
Ci19Ci0KLS0gKHZvaWQpc3RvcAotewotICAgIEFTU0VSVChfcHJvdmlkZXIpOwotICAgIFtfcHJv
dmlkZXIgc3RvcF07Ci19Ci0KLS0gKHZvaWQpc2V0RW5hYmxlSGlnaEFjY3VyYWN5OihCT09MKWZs
YWcKLXsKLSAgICBBU1NFUlQoX3Byb3ZpZGVyKTsKLSAgICBbX3Byb3ZpZGVyIHNldEVuYWJsZUhp
Z2hBY2N1cmFjeTpmbGFnXTsKLX0KLQotLy8gPFdlYkdlb2xvY2F0aW9uQ29yZUxvY2F0aW9uVXBk
YXRlTGlzdGVuZXI+IE1ldGhvZHMKLQotLSAodm9pZClnZW9sb2NhdGlvbkF1dGhvcml6YXRpb25H
cmFudGVkCi17Ci0gICAgQVNTRVJUKF9saXN0ZW5lcik7Ci0gICAgW19saXN0ZW5lciBnZW9sb2Nh
dGlvbkF1dGhvcml6YXRpb25HcmFudGVkXTsKLX0KLQotLSAodm9pZClnZW9sb2NhdGlvbkF1dGhv
cml6YXRpb25EZW5pZWQKLXsKLSAgICBBU1NFUlQoX2xpc3RlbmVyKTsKLSAgICBbX2xpc3RlbmVy
IGdlb2xvY2F0aW9uQXV0aG9yaXphdGlvbkRlbmllZF07Ci19Ci0KLS0gKHZvaWQpcG9zaXRpb25D
aGFuZ2VkOihXZWJDb3JlOjpHZW9sb2NhdGlvblBvc2l0aW9uRGF0YSYmKWNvcmVQb3NpdGlvbgot
ewotICAgIEFTU0VSVChfbGlzdGVuZXIpOwotICAgIGF1dG8gcG9zaXRpb24gPSBXZWJLaXQ6Oldl
Ykdlb2xvY2F0aW9uUG9zaXRpb246OmNyZWF0ZShXVEZNb3ZlKGNvcmVQb3NpdGlvbikpOwotICAg
IFtfbGlzdGVuZXIgcG9zaXRpb25DaGFuZ2VkOndyYXBwZXIocG9zaXRpb24uZ2V0KCkpXTsKLX0K
LQotLSAodm9pZCllcnJvck9jY3VycmVkOihOU1N0cmluZyAqKWVycm9yTWVzc2FnZQotewotICAg
IEFTU0VSVChfbGlzdGVuZXIpOwotICAgIFtfbGlzdGVuZXIgZXJyb3JPY2N1cnJlZDplcnJvck1l
c3NhZ2VdOwotfQotCi0tICh2b2lkKXJlc2V0R2VvbG9jYXRpb24KLXsKLSAgICBBU1NFUlQoX2xp
c3RlbmVyKTsKLSAgICBbX2xpc3RlbmVyIHJlc2V0R2VvbG9jYXRpb25dOwotfQotCi1AZW5kCi0K
ICMgcHJhZ21hIG1hcmsgLSBJbXBsZW1lbnRhdGlvbiBvZiBXS1dlYkFsbG93RGVueVBvbGljeUxp
c3RlbmVyCiBAaW1wbGVtZW50YXRpb24gV0tXZWJBbGxvd0RlbnlQb2xpY3lMaXN0ZW5lciB7CiAg
ICAgRnVuY3Rpb248dm9pZChib29sKT4gX2NvbXBsZXRpb25IYW5kbGVyOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9X
ZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggMWVjOGIyYjg1Y2Ux
ZTU2NDM3ZjJlZmQxYzQ0YzA2OTE2MDY5MTkzMC4uY2MyOTYwOTdhODc2MzhmYTZlZjNlODYwYjc4
MzJlYWY4ZWI5ZWRiYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qCkBAIC00MzE5LDYgKzQzMTksNyBAQAogCQk0NkNFM0IxMDIzRDhDODNEMDAx
NkE5NkEgLyogV2ViQmFja0ZvcndhcmRMaXN0Q291bnRzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IFdlYkJhY2tGb3J3YXJkTGlzdENvdW50cy5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQk0NkQ0OEZDQzI3OTlEN0REMDA3RDIwMTQgLyogV2ViU2hhcmVkV29ya2Vy
U2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbi5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXZWJTaGFy
ZWRXb3JrZXJTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uLmNwcDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJNDZENDhGQ0QyNzk5RDdERTAwN0QyMDE0IC8qIFdlYlNoYXJlZFdvcmtlclNl
cnZlclRvQ29udGV4dENvbm5lY3Rpb24uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2ViU2hhcmVkV29ya2Vy
U2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owor
CQk0NkRBMjg1NzI3QjczRTc2MDA4OUQzMzkgLyogV2ViR2VvbG9jYXRpb25NYW5hZ2VyUHJveHlD
b2NvYS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXZWJHZW9sb2NhdGlvbk1hbmFnZXJQcm94eUNv
Y29hLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDZERjA2MzkxRjM5MDVFNTAw
MTk4MEJCIC8qIE5ldHdvcmtDT1JTUHJlZmxpZ2h0Q2hlY2tlci5jcHAgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBOZXR3b3JrQ09SU1ByZWZsaWdodENoZWNrZXIuY3BwOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0NkRGMDYzQTFGMzkwNUU1MDAxOTgwQkIgLyog
TmV0d29ya0NPUlNQcmVmbGlnaHRDaGVja2VyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IE5ldHdvcmtDT1JTUHJlZmxpZ2h0Q2hlY2tlci5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQk0NkU5NzYwQTI3NTdGNkM5MDBBQ0REMzcgLyogV2ViQnJvYWRjYXN0Q2hhbm5l
bFJlZ2lzdHJ5Lm1lc3NhZ2VzLmluICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IFdlYkJyb2FkY2Fz
dENoYW5uZWxSZWdpc3RyeS5tZXNzYWdlcy5pbjsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
QEAgLTc2MTEsNiArNzYxMiw3IEBACiAJCQkJNTJENUExQUExQzU3NDk0RTAwREUzNEEzIC8qIFZp
ZGVvRnVsbHNjcmVlbk1hbmFnZXJQcm94eS5oICovLAogCQkJCTUyRDVBMUFCMUM1NzQ5NEUwMERF
MzRBMyAvKiBWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyUHJveHkubWVzc2FnZXMuaW4gKi8sCiAJCQkJ
NTJENUExQUMxQzU3NDk0RTAwREUzNEEzIC8qIFZpZGVvRnVsbHNjcmVlbk1hbmFnZXJQcm94eS5t
bSAqLywKKwkJCQk0NkRBMjg1NzI3QjczRTc2MDA4OUQzMzkgLyogV2ViR2VvbG9jYXRpb25NYW5h
Z2VyUHJveHlDb2NvYS5jcHAgKi8sCiAJCQkJQzE4RjNBMTMyNTYzMzJBNjAwNzk3RTY2IC8qIFdl
Ykluc3BlY3RvclByZWZlcmVuY2VPYnNlcnZlci5oICovLAogCQkJCUMxOEYzQTE0MjU2MzMzNDMw
MDc5N0U2NiAvKiBXZWJJbnNwZWN0b3JQcmVmZXJlbmNlT2JzZXJ2ZXIubW0gKi8sCiAJCQkJQ0RG
MUI5MTkyNjcwMjFENjAwMDdFQzEwIC8qIFdlYktpdFN3aWZ0U29mdExpbmsuaCAqLywKQEAgLTEz
NDg2LDYgKzEzNDg4LDcgQEAKIAkJCQlFMThFNjkxODE2OUI2NjdCMDA5QjY2NzAgLyogU2VjSXRl
bVNoaW1Qcm94eU1lc3NhZ2VzLmggaW4gSGVhZGVycyAqLywKIAkJCQk1NzBBQjhGMzIwQUUzQkQ3
MDBCOEJFODcgLyogU2VjS2V5UHJveHlTdG9yZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNTE0RDlG
NTcxOTExOUQzNTAwMDA2M0E3IC8qIFNlcnZpY2VzQ29udHJvbGxlci5oIGluIEhlYWRlcnMgKi8s
CisJCQkJNTE2NDY1ODAyN0E5Qzc3NDAwRTFGMkJBIC8qIFNlcnZpY2VXb3JrZXJOb3RpZmljYXRp
b25IYW5kbGVyLmggaW4gSGVhZGVycyAqLywKIAkJCQkxQUZERTY1QTE5NTRBNDJCMDBDNDhGRkEg
LyogU2Vzc2lvblN0YXRlLmggaW4gSGVhZGVycyAqLywKIAkJCQkxQTAwMkQ0OTE5NkIzNDVEMDBC
OUFENDQgLyogU2Vzc2lvblN0YXRlQ29kaW5nLmggaW4gSGVhZGVycyAqLywKIAkJCQk5M0U3OTlD
RTI3NjA0OTdCMDA3NDAwOEEgLyogU2Vzc2lvblN0b3JhZ2VNYW5hZ2VyLmggaW4gSGVhZGVycyAq
LywKQEAgLTEzOTM0LDcgKzEzOTM3LDYgQEAKIAkJCQlCQzRBNjI5NzE0NzMxM0EwMDA2QzY4MUEg
LyogV0tDb25uZWN0aW9uUmVmLmggaW4gSGVhZGVycyAqLywKIAkJCQlFNTk2REQ2QTI1MUU3MUQ0
MDBDMjc1QTcgLyogV0tDb250YWN0UGlja2VyLmggaW4gSGVhZGVycyAqLywKIAkJCQk1Q0QyODY1
NDFFNzIzNUIxMDA5NEZEQzggLyogV0tDb250ZW50UnVsZUxpc3QuaCBpbiBIZWFkZXJzICovLAot
CQkJCTUxNjQ2NTgwMjdBOUM3NzQwMEUxRjJCQSAvKiBTZXJ2aWNlV29ya2VyTm90aWZpY2F0aW9u
SGFuZGxlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNUNEMjg2NTUxRTcyMzVCODAwOTRGREM4IC8q
IFdLQ29udGVudFJ1bGVMaXN0SW50ZXJuYWwuaCBpbiBIZWFkZXJzICovLAogCQkJCTVDNTEzOURC
MjU5MjdEODAwMDlDM0UzMCAvKiBXS0NvbnRlbnRSdWxlTGlzdFByaXZhdGUuaCBpbiBIZWFkZXJz
ICovLAogCQkJCTVDRDI4NjUxMUU3MjM1OTkwMDk0RkRDOCAvKiBXS0NvbnRlbnRSdWxlTGlzdFN0
b3JlLmggaW4gSGVhZGVycyAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9HZW9sb2NhdGlvbi9XZWJHZW9sb2NhdGlvbk1hbmFnZXIuY3BwIGIvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL0dlb2xvY2F0aW9uL1dlYkdlb2xvY2F0aW9uTWFuYWdlci5jcHAKaW5kZXggNWE5
YzlmNGQyYTFjZDY2YTRiNjc1OWI1OTM4N2VhMmNmNTViMmFhOC4uOTRmMDE4MjFiOGMxMGQxMjI3
ZjBjNTQxMmU5NjY5NzQ2OTI4MjcxYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL0dlb2xvY2F0aW9uL1dlYkdlb2xvY2F0aW9uTWFuYWdlci5jcHAKKysrIGIvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL0dlb2xvY2F0aW9uL1dlYkdlb2xvY2F0aW9uTWFuYWdlci5jcHAKQEAg
LTM5LDYgKzM5LDE0IEBACiBuYW1lc3BhY2UgV2ViS2l0IHsKIHVzaW5nIG5hbWVzcGFjZSBXZWJD
b3JlOwogCitzdGF0aWMgUmVnaXN0cmFibGVEb21haW4gcmVnaXN0cmFibGVEb21haW5Gb3JQYWdl
KFdlYlBhZ2UmIHBhZ2UpCit7CisgICAgYXV0byogZG9jdW1lbnQgPSBwYWdlLmNvcmVQYWdlKCkg
PyBwYWdlLmNvcmVQYWdlKCktPm1haW5GcmFtZSgpLmRvY3VtZW50KCkgOiBudWxscHRyOworICAg
IGlmICghZG9jdW1lbnQpCisgICAgICAgIHJldHVybiBSZWdpc3RyYWJsZURvbWFpbiB7IH07Cisg
ICAgcmV0dXJuIFJlZ2lzdHJhYmxlRG9tYWluIHsgZG9jdW1lbnQtPnVybCgpIH07Cit9CisKIGNv
bnN0IGNoYXIqIFdlYkdlb2xvY2F0aW9uTWFuYWdlcjo6c3VwcGxlbWVudE5hbWUoKQogewogICAg
IHJldHVybiAiV2ViR2VvbG9jYXRpb25NYW5hZ2VyIjsKQEAgLTUwLDg4ICs1OCwxNDIgQEAgV2Vi
R2VvbG9jYXRpb25NYW5hZ2VyOjpXZWJHZW9sb2NhdGlvbk1hbmFnZXIoV2ViUHJvY2VzcyYgcHJv
Y2VzcykKICAgICBtX3Byb2Nlc3MuYWRkTWVzc2FnZVJlY2VpdmVyKE1lc3NhZ2VzOjpXZWJHZW9s
b2NhdGlvbk1hbmFnZXI6Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSwgKnRoaXMpOwogfQogCi12b2lk
IFdlYkdlb2xvY2F0aW9uTWFuYWdlcjo6cmVnaXN0ZXJXZWJQYWdlKFdlYlBhZ2UmIHBhZ2UsIGNv
bnN0IFN0cmluZyYgYXV0aG9yaXphdGlvblRva2VuKQotewotICAgIGJvb2wgd2FzVXBkYXRpbmcg
PSBpc1VwZGF0aW5nKCk7CitXZWJHZW9sb2NhdGlvbk1hbmFnZXI6On5XZWJHZW9sb2NhdGlvbk1h
bmFnZXIoKSA9IGRlZmF1bHQ7CiAKLSAgICBtX3BhZ2VTZXQuYWRkKHBhZ2UpOwordm9pZCBXZWJH
ZW9sb2NhdGlvbk1hbmFnZXI6OnJlZ2lzdGVyV2ViUGFnZShXZWJQYWdlJiBwYWdlLCBjb25zdCBT
dHJpbmcmIGF1dGhvcml6YXRpb25Ub2tlbiwgYm9vbCBuZWVkc0hpZ2hBY2N1cmFjeSkKK3sKKyAg
ICBhdXRvIHJlZ2lzdHJhYmxlRG9tYWluID0gcmVnaXN0cmFibGVEb21haW5Gb3JQYWdlKHBhZ2Up
OworICAgIGlmIChyZWdpc3RyYWJsZURvbWFpbi5zdHJpbmcoKS5pc0VtcHR5KCkpCisgICAgICAg
IHJldHVybjsKKworICAgIGF1dG8mIHBhZ2VTZXRzID0gbV9wYWdlU2V0cy5lbnN1cmUocmVnaXN0
cmFibGVEb21haW4sIFtdIHsKKyAgICAgICAgcmV0dXJuIFBhZ2VTZXRzIHsgfTsKKyAgICB9KS5p
dGVyYXRvci0+dmFsdWU7CisgICAgYm9vbCB3YXNVcGRhdGluZyA9IGlzVXBkYXRpbmcocGFnZVNl
dHMpOworICAgIGJvb2wgaGlnaEFjY3VyYWN5V2FzRW5hYmxlZCA9IGlzSGlnaEFjY3VyYWN5RW5h
YmxlZChwYWdlU2V0cyk7CisKKyAgICBwYWdlU2V0cy5wYWdlU2V0LmFkZChwYWdlKTsKKyAgICBp
ZiAobmVlZHNIaWdoQWNjdXJhY3kpCisgICAgICAgIHBhZ2VTZXRzLmhpZ2hBY2N1cmFjeVBhZ2VT
ZXQuYWRkKHBhZ2UpOworICAgIG1fcGFnZVRvUmVnaXN0cmFibGVEb21haW4uYWRkKCZwYWdlLCBy
ZWdpc3RyYWJsZURvbWFpbik7CisKKyAgICBpZiAoIXdhc1VwZGF0aW5nKSB7CisgICAgICAgIG1f
cHJvY2Vzcy5wYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpLT5zZW5kKE1lc3NhZ2VzOjpXZWJHZW9s
b2NhdGlvbk1hbmFnZXJQcm94eTo6U3RhcnRVcGRhdGluZyhyZWdpc3RyYWJsZURvbWFpbiwgcGFn
ZS53ZWJQYWdlUHJveHlJZGVudGlmaWVyKCksIGF1dGhvcml6YXRpb25Ub2tlbiwgbmVlZHNIaWdo
QWNjdXJhY3kpLCAwKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KIAotICAgIGlmICghd2FzVXBk
YXRpbmcpCi0gICAgICAgIG1fcHJvY2Vzcy5wYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpLT5zZW5k
KE1lc3NhZ2VzOjpXZWJHZW9sb2NhdGlvbk1hbmFnZXJQcm94eTo6U3RhcnRVcGRhdGluZyhwYWdl
LndlYlBhZ2VQcm94eUlkZW50aWZpZXIoKSwgYXV0aG9yaXphdGlvblRva2VuKSwgMCk7CisgICAg
Ym9vbCBoaWdoQWNjdXJhY3lTaG91bGRCZUVuYWJsZWQgPSBpc0hpZ2hBY2N1cmFjeUVuYWJsZWQo
cGFnZVNldHMpOworICAgIGlmIChoaWdoQWNjdXJhY3lXYXNFbmFibGVkICE9IGhpZ2hBY2N1cmFj
eVNob3VsZEJlRW5hYmxlZCkKKyAgICAgICAgbV9wcm9jZXNzLnBhcmVudFByb2Nlc3NDb25uZWN0
aW9uKCktPnNlbmQoTWVzc2FnZXM6OldlYkdlb2xvY2F0aW9uTWFuYWdlclByb3h5OjpTZXRFbmFi
bGVIaWdoQWNjdXJhY3kocmVnaXN0cmFibGVEb21haW4sIGhpZ2hBY2N1cmFjeVNob3VsZEJlRW5h
YmxlZCksIDApOwogfQogCiB2b2lkIFdlYkdlb2xvY2F0aW9uTWFuYWdlcjo6dW5yZWdpc3Rlcldl
YlBhZ2UoV2ViUGFnZSYgcGFnZSkKIHsKLSAgICBib29sIGhpZ2hBY2N1cmFjeVdhc0VuYWJsZWQg
PSBpc0hpZ2hBY2N1cmFjeUVuYWJsZWQoKTsKKyAgICBhdXRvIHJlZ2lzdHJhYmxlRG9tYWluID0g
bV9wYWdlVG9SZWdpc3RyYWJsZURvbWFpbi50YWtlKCZwYWdlKTsKKyAgICBpZiAocmVnaXN0cmFi
bGVEb21haW4uc3RyaW5nKCkuaXNFbXB0eSgpKQorICAgICAgICByZXR1cm47CisKKyAgICBhdXRv
IGl0ID0gbV9wYWdlU2V0cy5maW5kKHJlZ2lzdHJhYmxlRG9tYWluKTsKKyAgICBpZiAoaXQgPT0g
bV9wYWdlU2V0cy5lbmQoKSkKKyAgICAgICAgcmV0dXJuOwogCi0gICAgbV9wYWdlU2V0LnJlbW92
ZShwYWdlKTsKLSAgICBtX2hpZ2hBY2N1cmFjeVBhZ2VTZXQucmVtb3ZlKHBhZ2UpOworICAgIGF1
dG8mIHBhZ2VTZXRzID0gaXQtPnZhbHVlOworICAgIGJvb2wgaGlnaEFjY3VyYWN5V2FzRW5hYmxl
ZCA9IGlzSGlnaEFjY3VyYWN5RW5hYmxlZChwYWdlU2V0cyk7CiAKLSAgICBpZiAoIWlzVXBkYXRp
bmcoKSkKLSAgICAgICAgbV9wcm9jZXNzLnBhcmVudFByb2Nlc3NDb25uZWN0aW9uKCktPnNlbmQo
TWVzc2FnZXM6OldlYkdlb2xvY2F0aW9uTWFuYWdlclByb3h5OjpTdG9wVXBkYXRpbmcoKSwgMCk7
CisgICAgcGFnZVNldHMucGFnZVNldC5yZW1vdmUocGFnZSk7CisgICAgcGFnZVNldHMuaGlnaEFj
Y3VyYWN5UGFnZVNldC5yZW1vdmUocGFnZSk7CisKKyAgICBpZiAoIWlzVXBkYXRpbmcocGFnZVNl
dHMpKQorICAgICAgICBtX3Byb2Nlc3MucGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+c2VuZChN
ZXNzYWdlczo6V2ViR2VvbG9jYXRpb25NYW5hZ2VyUHJveHk6OlN0b3BVcGRhdGluZyhyZWdpc3Ry
YWJsZURvbWFpbiksIDApOwogICAgIGVsc2UgewotICAgICAgICBib29sIGhpZ2hBY2N1cmFjeVNo
b3VsZEJlRW5hYmxlZCA9IGlzSGlnaEFjY3VyYWN5RW5hYmxlZCgpOworICAgICAgICBib29sIGhp
Z2hBY2N1cmFjeVNob3VsZEJlRW5hYmxlZCA9IGlzSGlnaEFjY3VyYWN5RW5hYmxlZChwYWdlU2V0
cyk7CiAgICAgICAgIGlmIChoaWdoQWNjdXJhY3lXYXNFbmFibGVkICE9IGhpZ2hBY2N1cmFjeVNo
b3VsZEJlRW5hYmxlZCkKLSAgICAgICAgICAgIG1fcHJvY2Vzcy5wYXJlbnRQcm9jZXNzQ29ubmVj
dGlvbigpLT5zZW5kKE1lc3NhZ2VzOjpXZWJHZW9sb2NhdGlvbk1hbmFnZXJQcm94eTo6U2V0RW5h
YmxlSGlnaEFjY3VyYWN5KGhpZ2hBY2N1cmFjeVNob3VsZEJlRW5hYmxlZCksIDApOworICAgICAg
ICAgICAgbV9wcm9jZXNzLnBhcmVudFByb2Nlc3NDb25uZWN0aW9uKCktPnNlbmQoTWVzc2FnZXM6
OldlYkdlb2xvY2F0aW9uTWFuYWdlclByb3h5OjpTZXRFbmFibGVIaWdoQWNjdXJhY3kocmVnaXN0
cmFibGVEb21haW4sIGhpZ2hBY2N1cmFjeVNob3VsZEJlRW5hYmxlZCksIDApOwogICAgIH0KKwor
ICAgIGlmIChwYWdlU2V0cy5wYWdlU2V0LmNvbXB1dGVzRW1wdHkoKSAmJiBwYWdlU2V0cy5oaWdo
QWNjdXJhY3lQYWdlU2V0LmNvbXB1dGVzRW1wdHkoKSkKKyAgICAgICAgbV9wYWdlU2V0cy5yZW1v
dmUoaXQpOwogfQogCiB2b2lkIFdlYkdlb2xvY2F0aW9uTWFuYWdlcjo6c2V0RW5hYmxlSGlnaEFj
Y3VyYWN5Rm9yUGFnZShXZWJQYWdlJiBwYWdlLCBib29sIGVuYWJsZWQpCiB7Ci0gICAgYm9vbCBo
aWdoQWNjdXJhY3lXYXNFbmFibGVkID0gaXNIaWdoQWNjdXJhY3lFbmFibGVkKCk7CisgICAgYXV0
byByZWdpc3RyYWJsZURvbWFpbiA9IG1fcGFnZVRvUmVnaXN0cmFibGVEb21haW4uZ2V0KCZwYWdl
KTsKKyAgICBpZiAocmVnaXN0cmFibGVEb21haW4uc3RyaW5nKCkuaXNFbXB0eSgpKQorICAgICAg
ICByZXR1cm47CisKKyAgICBhdXRvIGl0ID0gbV9wYWdlU2V0cy5maW5kKHJlZ2lzdHJhYmxlRG9t
YWluKTsKKyAgICBBU1NFUlQoaXQgIT0gbV9wYWdlU2V0cy5lbmQoKSk7CisgICAgaWYgKGl0ID09
IG1fcGFnZVNldHMuZW5kKCkpCisgICAgICAgIHJldHVybjsKKworICAgIGF1dG8mIHBhZ2VTZXRz
ID0gaXQtPnZhbHVlOworICAgIGJvb2wgaGlnaEFjY3VyYWN5V2FzRW5hYmxlZCA9IGlzSGlnaEFj
Y3VyYWN5RW5hYmxlZChwYWdlU2V0cyk7CiAKICAgICBpZiAoZW5hYmxlZCkKLSAgICAgICAgbV9o
aWdoQWNjdXJhY3lQYWdlU2V0LmFkZChwYWdlKTsKKyAgICAgICAgcGFnZVNldHMuaGlnaEFjY3Vy
YWN5UGFnZVNldC5hZGQocGFnZSk7CiAgICAgZWxzZQotICAgICAgICBtX2hpZ2hBY2N1cmFjeVBh
Z2VTZXQucmVtb3ZlKHBhZ2UpOworICAgICAgICBwYWdlU2V0cy5oaWdoQWNjdXJhY3lQYWdlU2V0
LnJlbW92ZShwYWdlKTsKIAotICAgIGJvb2wgaGlnaEFjY3VyYWN5U2hvdWxkQmVFbmFibGVkID0g
aXNIaWdoQWNjdXJhY3lFbmFibGVkKCk7Ci0gICAgaWYgKGhpZ2hBY2N1cmFjeVdhc0VuYWJsZWQg
IT0gaGlnaEFjY3VyYWN5U2hvdWxkQmVFbmFibGVkKQotICAgICAgICBtX3Byb2Nlc3MucGFyZW50
UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+c2VuZChNZXNzYWdlczo6V2ViR2VvbG9jYXRpb25NYW5hZ2Vy
UHJveHk6OlNldEVuYWJsZUhpZ2hBY2N1cmFjeShoaWdoQWNjdXJhY3lTaG91bGRCZUVuYWJsZWQp
LCAwKTsKKyAgICBib29sIGhpZ2hBY2N1cmFjeVNob3VsZEJlRW5hYmxlZCA9IGlzSGlnaEFjY3Vy
YWN5RW5hYmxlZChwYWdlU2V0cyk7CisgICAgaWYgKGhpZ2hBY2N1cmFjeVdhc0VuYWJsZWQgIT0g
aXNIaWdoQWNjdXJhY3lFbmFibGVkKHBhZ2VTZXRzKSkKKyAgICAgICAgbV9wcm9jZXNzLnBhcmVu
dFByb2Nlc3NDb25uZWN0aW9uKCktPnNlbmQoTWVzc2FnZXM6OldlYkdlb2xvY2F0aW9uTWFuYWdl
clByb3h5OjpTZXRFbmFibGVIaWdoQWNjdXJhY3kocmVnaXN0cmFibGVEb21haW4sIGhpZ2hBY2N1
cmFjeVNob3VsZEJlRW5hYmxlZCksIDApOwogfQogCi12b2lkIFdlYkdlb2xvY2F0aW9uTWFuYWdl
cjo6ZGlkQ2hhbmdlUG9zaXRpb24oY29uc3QgR2VvbG9jYXRpb25Qb3NpdGlvbkRhdGEmIHBvc2l0
aW9uKQordm9pZCBXZWJHZW9sb2NhdGlvbk1hbmFnZXI6OmRpZENoYW5nZVBvc2l0aW9uKGNvbnN0
IFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluJiByZWdpc3RyYWJsZURvbWFpbiwgY29uc3QgR2Vv
bG9jYXRpb25Qb3NpdGlvbkRhdGEmIHBvc2l0aW9uKQogewogI2lmIEVOQUJMRShHRU9MT0NBVElP
TikKLSAgICBmb3IgKGF1dG8mIHBhZ2UgOiBjb3B5VG9WZWN0b3IobV9wYWdlU2V0KSkgewotICAg
ICAgICBpZiAocGFnZS0+Y29yZVBhZ2UoKSkKLSAgICAgICAgICAgIEdlb2xvY2F0aW9uQ29udHJv
bGxlcjo6ZnJvbShwYWdlLT5jb3JlUGFnZSgpKS0+cG9zaXRpb25DaGFuZ2VkKHBvc2l0aW9uKTsK
KyAgICBpZiAoYXV0byBpdCA9IG1fcGFnZVNldHMuZmluZChyZWdpc3RyYWJsZURvbWFpbik7IGl0
ICE9IG1fcGFnZVNldHMuZW5kKCkpIHsKKyAgICAgICAgZm9yIChhdXRvJiBwYWdlIDogY29weVRv
VmVjdG9yKGl0LT52YWx1ZS5wYWdlU2V0KSkgeworICAgICAgICAgICAgaWYgKHBhZ2UtPmNvcmVQ
YWdlKCkpCisgICAgICAgICAgICAgICAgR2VvbG9jYXRpb25Db250cm9sbGVyOjpmcm9tKHBhZ2Ut
PmNvcmVQYWdlKCkpLT5wb3NpdGlvbkNoYW5nZWQocG9zaXRpb24pOworICAgICAgICB9CiAgICAg
fQogI2Vsc2UKKyAgICBVTlVTRURfUEFSQU0ocmVnaXN0cmFibGVEb21haW4pOwogICAgIFVOVVNF
RF9QQVJBTShwb3NpdGlvbik7CiAjZW5kaWYgLy8gRU5BQkxFKEdFT0xPQ0FUSU9OKQogfQogCi12
b2lkIFdlYkdlb2xvY2F0aW9uTWFuYWdlcjo6ZGlkRmFpbFRvRGV0ZXJtaW5lUG9zaXRpb24oY29u
c3QgU3RyaW5nJiBlcnJvck1lc3NhZ2UpCit2b2lkIFdlYkdlb2xvY2F0aW9uTWFuYWdlcjo6ZGlk
RmFpbFRvRGV0ZXJtaW5lUG9zaXRpb24oY29uc3QgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4m
IHJlZ2lzdHJhYmxlRG9tYWluLCBjb25zdCBTdHJpbmcmIGVycm9yTWVzc2FnZSkKIHsKICNpZiBF
TkFCTEUoR0VPTE9DQVRJT04pCi0gICAgLy8gRklYTUU6IEFkZCBsb2NhbGl6ZWQgZXJyb3Igc3Ry
aW5nLgotICAgIGF1dG8gZXJyb3IgPSBHZW9sb2NhdGlvbkVycm9yOjpjcmVhdGUoR2VvbG9jYXRp
b25FcnJvcjo6UG9zaXRpb25VbmF2YWlsYWJsZSwgZXJyb3JNZXNzYWdlKTsKLQotICAgIGZvciAo
YXV0byYgcGFnZSA6IGNvcHlUb1ZlY3RvcihtX3BhZ2VTZXQpKSB7Ci0gICAgICAgIGlmIChwYWdl
LT5jb3JlUGFnZSgpKQotICAgICAgICAgICAgR2VvbG9jYXRpb25Db250cm9sbGVyOjpmcm9tKHBh
Z2UtPmNvcmVQYWdlKCkpLT5lcnJvck9jY3VycmVkKGVycm9yLmdldCgpKTsKKyAgICBpZiAoYXV0
byBpdCA9IG1fcGFnZVNldHMuZmluZChyZWdpc3RyYWJsZURvbWFpbik7IGl0ICE9IG1fcGFnZVNl
dHMuZW5kKCkpIHsKKyAgICAgICAgLy8gRklYTUU6IEFkZCBsb2NhbGl6ZWQgZXJyb3Igc3RyaW5n
LgorICAgICAgICBhdXRvIGVycm9yID0gR2VvbG9jYXRpb25FcnJvcjo6Y3JlYXRlKEdlb2xvY2F0
aW9uRXJyb3I6OlBvc2l0aW9uVW5hdmFpbGFibGUsIGVycm9yTWVzc2FnZSk7CisKKyAgICAgICAg
Zm9yIChhdXRvJiBwYWdlIDogY29weVRvVmVjdG9yKGl0LT52YWx1ZS5wYWdlU2V0KSkgeworICAg
ICAgICAgICAgaWYgKHBhZ2UtPmNvcmVQYWdlKCkpCisgICAgICAgICAgICAgICAgR2VvbG9jYXRp
b25Db250cm9sbGVyOjpmcm9tKHBhZ2UtPmNvcmVQYWdlKCkpLT5lcnJvck9jY3VycmVkKGVycm9y
LmdldCgpKTsKKyAgICAgICAgfQogICAgIH0KICNlbHNlCisgICAgVU5VU0VEX1BBUkFNKHJlZ2lz
dHJhYmxlRG9tYWluKTsKICAgICBVTlVTRURfUEFSQU0oZXJyb3JNZXNzYWdlKTsKICNlbmRpZiAv
LyBFTkFCTEUoR0VPTE9DQVRJT04pCiB9CiAKLSNpZiBQTEFURk9STShJT1NfRkFNSUxZKQotdm9p
ZCBXZWJHZW9sb2NhdGlvbk1hbmFnZXI6OnJlc2V0UGVybWlzc2lvbnMoKQorYm9vbCBXZWJHZW9s
b2NhdGlvbk1hbmFnZXI6OmlzVXBkYXRpbmcoY29uc3QgUGFnZVNldHMmIHBhZ2VTZXRzKSBjb25z
dAogewotICAgIG1fcHJvY2Vzcy5yZXNldEFsbEdlb2xvY2F0aW9uUGVybWlzc2lvbnMoKTsKKyAg
ICByZXR1cm4gIXBhZ2VTZXRzLnBhZ2VTZXQuY29tcHV0ZXNFbXB0eSgpOwogfQotI2VuZGlmIC8v
IFBMQVRGT1JNKElPU19GQU1JTFkpCiAKLWJvb2wgV2ViR2VvbG9jYXRpb25NYW5hZ2VyOjppc1Vw
ZGF0aW5nKCkgY29uc3QKK2Jvb2wgV2ViR2VvbG9jYXRpb25NYW5hZ2VyOjppc0hpZ2hBY2N1cmFj
eUVuYWJsZWQoY29uc3QgUGFnZVNldHMmIHBhZ2VTZXRzKSBjb25zdAogewotICAgIHJldHVybiAh
bV9wYWdlU2V0LmNvbXB1dGVzRW1wdHkoKTsKKyAgICByZXR1cm4gIXBhZ2VTZXRzLmhpZ2hBY2N1
cmFjeVBhZ2VTZXQuY29tcHV0ZXNFbXB0eSgpOwogfQogCi1ib29sIFdlYkdlb2xvY2F0aW9uTWFu
YWdlcjo6aXNIaWdoQWNjdXJhY3lFbmFibGVkKCkgY29uc3QKKyNpZiBQTEFURk9STShJT1NfRkFN
SUxZKQordm9pZCBXZWJHZW9sb2NhdGlvbk1hbmFnZXI6OnJlc2V0UGVybWlzc2lvbnMoY29uc3Qg
V2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4mIHJlZ2lzdHJhYmxlRG9tYWluKQogewotICAgIHJl
dHVybiAhbV9oaWdoQWNjdXJhY3lQYWdlU2V0LmNvbXB1dGVzRW1wdHkoKTsKKyAgICBhdXRvIGl0
ID0gbV9wYWdlU2V0cy5maW5kKHJlZ2lzdHJhYmxlRG9tYWluKTsKKyAgICBpZiAoaXQgIT0gbV9w
YWdlU2V0cy5lbmQoKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgZm9yIChhdXRvJiBwYWdlIDog
Y29weVRvVmVjdG9yKGl0LT52YWx1ZS5wYWdlU2V0KSkgeworICAgICAgICBpZiAoYXV0byogbWFp
bkZyYW1lID0gcGFnZS0+Y29yZVBhZ2UoKSA/ICZwYWdlLT5jb3JlUGFnZSgpLT5tYWluRnJhbWUo
KSA6IG51bGxwdHIpCisgICAgICAgICAgICBtYWluRnJhbWUtPnJlc2V0QWxsR2VvbG9jYXRpb25Q
ZXJtaXNzaW9uKCk7CisgICAgfQogfQorI2VuZGlmIC8vIFBMQVRGT1JNKElPU19GQU1JTFkpCiAK
IH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL0dlb2xvY2F0aW9uL1dlYkdlb2xvY2F0aW9uTWFuYWdlci5oIGIvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL0dlb2xvY2F0aW9uL1dlYkdlb2xvY2F0aW9uTWFuYWdlci5oCmluZGV4IDQ0ODM1
OTYzNTg3ODIxOTdjY2JhNTkyOGVmZTYyNTE1MjZjMTg1MTUuLmNiNjU4OGM2ZTcxODhiZWZiZDU1
MTIzZDRhNTU5YjJiMGIzMWE5M2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9HZW9sb2NhdGlvbi9XZWJHZW9sb2NhdGlvbk1hbmFnZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvR2VvbG9jYXRpb24vV2ViR2VvbG9jYXRpb25NYW5hZ2VyLmgKQEAgLTI4LDYg
KzI4LDcgQEAKICNpbmNsdWRlICJNZXNzYWdlUmVjZWl2ZXIuaCIKICNpbmNsdWRlICJXZWJHZW9s
b2NhdGlvblBvc2l0aW9uLmgiCiAjaW5jbHVkZSAiV2ViUHJvY2Vzc1N1cHBsZW1lbnQuaCIKKyNp
bmNsdWRlIDxXZWJDb3JlL1JlZ2lzdHJhYmxlRG9tYWluLmg+CiAjaW5jbHVkZSA8d3RmL0Zvcndh
cmQuaD4KICNpbmNsdWRlIDx3dGYvTm9uY29weWFibGUuaD4KICNpbmNsdWRlIDx3dGYvV2Vha0hh
c2hTZXQuaD4KQEAgLTQ3LDMxICs0OCwzNCBAQCBjbGFzcyBXZWJHZW9sb2NhdGlvbk1hbmFnZXIg
OiBwdWJsaWMgV2ViUHJvY2Vzc1N1cHBsZW1lbnQsIHB1YmxpYyBJUEM6Ok1lc3NhZ2VSZQogICAg
IFdURl9NQUtFX05PTkNPUFlBQkxFKFdlYkdlb2xvY2F0aW9uTWFuYWdlcik7CiBwdWJsaWM6CiAg
ICAgZXhwbGljaXQgV2ViR2VvbG9jYXRpb25NYW5hZ2VyKFdlYlByb2Nlc3MmKTsKKyAgICB+V2Vi
R2VvbG9jYXRpb25NYW5hZ2VyKCk7CiAKICAgICBzdGF0aWMgY29uc3QgY2hhciogc3VwcGxlbWVu
dE5hbWUoKTsKIAotICAgIHZvaWQgcmVnaXN0ZXJXZWJQYWdlKFdlYlBhZ2UmLCBjb25zdCBTdHJp
bmcmIGF1dGhvcml6YXRpb25Ub2tlbik7CisgICAgdm9pZCByZWdpc3RlcldlYlBhZ2UoV2ViUGFn
ZSYsIGNvbnN0IFN0cmluZyYgYXV0aG9yaXphdGlvblRva2VuLCBib29sIG5lZWRzSGlnaEFjY3Vy
YWN5KTsKICAgICB2b2lkIHVucmVnaXN0ZXJXZWJQYWdlKFdlYlBhZ2UmKTsKICAgICB2b2lkIHNl
dEVuYWJsZUhpZ2hBY2N1cmFjeUZvclBhZ2UoV2ViUGFnZSYsIGJvb2wpOwogCi0gICAgdm9pZCBy
ZXF1ZXN0UGVybWlzc2lvbihXZWJDb3JlOjpHZW9sb2NhdGlvbiYpOwotCiBwcml2YXRlOgogICAg
IC8vIElQQzo6TWVzc2FnZVJlY2VpdmVyCiAgICAgdm9pZCBkaWRSZWNlaXZlTWVzc2FnZShJUEM6
OkNvbm5lY3Rpb24mLCBJUEM6OkRlY29kZXImKSBvdmVycmlkZTsKIAotICAgIGJvb2wgaXNVcGRh
dGluZygpIGNvbnN0OwotICAgIGJvb2wgaXNIaWdoQWNjdXJhY3lFbmFibGVkKCkgY29uc3Q7Ci0K
LSAgICB2b2lkIGRpZENoYW5nZVBvc2l0aW9uKGNvbnN0IFdlYkNvcmU6Okdlb2xvY2F0aW9uUG9z
aXRpb25EYXRhJik7Ci0gICAgdm9pZCBkaWRGYWlsVG9EZXRlcm1pbmVQb3NpdGlvbihjb25zdCBT
dHJpbmcmIGVycm9yTWVzc2FnZSk7CisgICAgdm9pZCBkaWRDaGFuZ2VQb3NpdGlvbihjb25zdCBX
ZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiYsIGNvbnN0IFdlYkNvcmU6Okdlb2xvY2F0aW9uUG9z
aXRpb25EYXRhJik7CisgICAgdm9pZCBkaWRGYWlsVG9EZXRlcm1pbmVQb3NpdGlvbihjb25zdCBX
ZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiYsIGNvbnN0IFN0cmluZyYgZXJyb3JNZXNzYWdlKTsK
ICNpZiBQTEFURk9STShJT1NfRkFNSUxZKQotICAgIHZvaWQgcmVzZXRQZXJtaXNzaW9ucygpOwor
ICAgIHZvaWQgcmVzZXRQZXJtaXNzaW9ucyhjb25zdCBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFp
biYpOwogI2VuZGlmIC8vIFBMQVRGT1JNKElPU19GQU1JTFkpCiAKKyAgICBzdHJ1Y3QgUGFnZVNl
dHMgeworICAgICAgICBXZWFrSGFzaFNldDxXZWJQYWdlPiBwYWdlU2V0OworICAgICAgICBXZWFr
SGFzaFNldDxXZWJQYWdlPiBoaWdoQWNjdXJhY3lQYWdlU2V0OworICAgIH07CisgICAgYm9vbCBp
c1VwZGF0aW5nKGNvbnN0IFBhZ2VTZXRzJikgY29uc3Q7CisgICAgYm9vbCBpc0hpZ2hBY2N1cmFj
eUVuYWJsZWQoY29uc3QgUGFnZVNldHMmKSBjb25zdDsKKwogICAgIFdlYlByb2Nlc3MmIG1fcHJv
Y2VzczsKLSAgICBXZWFrSGFzaFNldDxXZWJQYWdlPiBtX3BhZ2VTZXQ7Ci0gICAgV2Vha0hhc2hT
ZXQ8V2ViUGFnZT4gbV9oaWdoQWNjdXJhY3lQYWdlU2V0OworICAgIEhhc2hNYXA8V2ViQ29yZTo6
UmVnaXN0cmFibGVEb21haW4sIFBhZ2VTZXRzPiBtX3BhZ2VTZXRzOworICAgIEhhc2hNYXA8V2Vi
UGFnZSosIFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluPiBtX3BhZ2VUb1JlZ2lzdHJhYmxlRG9t
YWluOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvR2VvbG9jYXRpb24vV2ViR2VvbG9jYXRpb25NYW5hZ2VyLm1lc3NhZ2Vz
LmluIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dlb2xvY2F0aW9uL1dlYkdlb2xvY2F0aW9u
TWFuYWdlci5tZXNzYWdlcy5pbgppbmRleCA3OWYzYjRjZTRlZmNhZjM0ODg1N2Q5OTMzMjUzZDg5
NTRmMGYxYjg3Li42ZmNjNjBkMmUwOGUyNmVhYjczYzFmNzFjZDg4NDJkYzUxMDUyZDE4IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR2VvbG9jYXRpb24vV2ViR2VvbG9jYXRp
b25NYW5hZ2VyLm1lc3NhZ2VzLmluCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HZW9s
b2NhdGlvbi9XZWJHZW9sb2NhdGlvbk1hbmFnZXIubWVzc2FnZXMuaW4KQEAgLTIxLDkgKzIxLDkg
QEAKICMgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KIAogbWVzc2FnZXMgLT4gV2ViR2VvbG9jYXRpb25NYW5hZ2VyIE5v
dFJlZkNvdW50ZWQgewotICAgIERpZENoYW5nZVBvc2l0aW9uKFdlYkNvcmU6Okdlb2xvY2F0aW9u
UG9zaXRpb25EYXRhIHBvc2l0aW9uKTsKLSAgICBEaWRGYWlsVG9EZXRlcm1pbmVQb3NpdGlvbihT
dHJpbmcgZXJyb3JNZXNzYWdlKTsKKyAgICBEaWRDaGFuZ2VQb3NpdGlvbihXZWJDb3JlOjpSZWdp
c3RyYWJsZURvbWFpbiByZWdpc3RyYWJsZURvbWFpbiwgV2ViQ29yZTo6R2VvbG9jYXRpb25Qb3Np
dGlvbkRhdGEgcG9zaXRpb24pOworICAgIERpZEZhaWxUb0RldGVybWluZVBvc2l0aW9uKFdlYkNv
cmU6OlJlZ2lzdHJhYmxlRG9tYWluIHJlZ2lzdHJhYmxlRG9tYWluLCBTdHJpbmcgZXJyb3JNZXNz
YWdlKTsKICNpZiBQTEFURk9STShJT1NfRkFNSUxZKQotICAgIFJlc2V0UGVybWlzc2lvbnMoKTsK
KyAgICBSZXNldFBlcm1pc3Npb25zKFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluIHJlZ2lzdHJh
YmxlRG9tYWluKTsKICNlbmRpZgogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkdlb2xvY2F0aW9uQ2xpZW50LmNwcCBiL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJHZW9sb2NhdGlvbkNsaWVudC5jcHAKaW5k
ZXggZWEwMmYyYWMxNmY3MzFiZjU2NDJmODY3OGQ4NmE0OTgxMWQ4YzM4Ni4uZDE4ZGY3ZWZhZjU2
ZWZjZmM4ZDE2OTljOTFjZDI2YjY4OWJjODI2YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkdlb2xvY2F0aW9uQ2xpZW50LmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViR2VvbG9jYXRpb25DbGll
bnQuY3BwCkBAIC00OCw5ICs0OCw5IEBAIHZvaWQgV2ViR2VvbG9jYXRpb25DbGllbnQ6Omdlb2xv
Y2F0aW9uRGVzdHJveWVkKCkKICAgICBkZWxldGUgdGhpczsKIH0KIAotdm9pZCBXZWJHZW9sb2Nh
dGlvbkNsaWVudDo6c3RhcnRVcGRhdGluZyhjb25zdCBTdHJpbmcmIGF1dGhvcml6YXRpb25Ub2tl
bikKK3ZvaWQgV2ViR2VvbG9jYXRpb25DbGllbnQ6OnN0YXJ0VXBkYXRpbmcoY29uc3QgU3RyaW5n
JiBhdXRob3JpemF0aW9uVG9rZW4sIGJvb2wgbmVlZHNIaWdoQWNjdXJhY3kpCiB7Ci0gICAgV2Vi
UHJvY2Vzczo6c2luZ2xldG9uKCkuc3VwcGxlbWVudDxXZWJHZW9sb2NhdGlvbk1hbmFnZXI+KCkt
PnJlZ2lzdGVyV2ViUGFnZShtX3BhZ2UsIGF1dGhvcml6YXRpb25Ub2tlbik7CisgICAgV2ViUHJv
Y2Vzczo6c2luZ2xldG9uKCkuc3VwcGxlbWVudDxXZWJHZW9sb2NhdGlvbk1hbmFnZXI+KCktPnJl
Z2lzdGVyV2ViUGFnZShtX3BhZ2UsIGF1dGhvcml6YXRpb25Ub2tlbiwgbmVlZHNIaWdoQWNjdXJh
Y3kpOwogfQogCiB2b2lkIFdlYkdlb2xvY2F0aW9uQ2xpZW50OjpzdG9wVXBkYXRpbmcoKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkdlb2xv
Y2F0aW9uQ2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQv
V2ViR2VvbG9jYXRpb25DbGllbnQuaAppbmRleCBiMTY4MTY3NDg5NjIyNTQ3ZWM5NGU2Nzk4ZmI2
OWRkOGZhNmQwMTFjLi42NWVjMGU5MzU0MjgzZDVmYTc3YWYxMGI0ZTE4MGI4NzEyZmFlZjA3IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViR2Vv
bG9jYXRpb25DbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1
cHBvcnQvV2ViR2VvbG9jYXRpb25DbGllbnQuaApAQCAtMzEsNyArMzEsNyBAQCBuYW1lc3BhY2Ug
V2ViS2l0IHsKIAogY2xhc3MgV2ViUGFnZTsKIAotY2xhc3MgV2ViR2VvbG9jYXRpb25DbGllbnQg
OiBwdWJsaWMgV2ViQ29yZTo6R2VvbG9jYXRpb25DbGllbnQgeworY2xhc3MgV2ViR2VvbG9jYXRp
b25DbGllbnQgZmluYWwgOiBwdWJsaWMgV2ViQ29yZTo6R2VvbG9jYXRpb25DbGllbnQgewogICAg
IFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIFdlYkdlb2xvY2F0aW9uQ2xp
ZW50KFdlYlBhZ2UmIHBhZ2UpCkBAIC00MiwxNyArNDIsMTcgQEAgcHVibGljOgogICAgIHZpcnR1
YWwgfldlYkdlb2xvY2F0aW9uQ2xpZW50KCk7CiAKIHByaXZhdGU6Ci0gICAgdm9pZCBnZW9sb2Nh
dGlvbkRlc3Ryb3llZCgpIG92ZXJyaWRlOworICAgIHZvaWQgZ2VvbG9jYXRpb25EZXN0cm95ZWQo
KSBmaW5hbDsKIAotICAgIHZvaWQgc3RhcnRVcGRhdGluZyhjb25zdCBTdHJpbmcmIGF1dGhvcml6
YXRpb25Ub2tlbikgb3ZlcnJpZGU7Ci0gICAgdm9pZCBzdG9wVXBkYXRpbmcoKSBvdmVycmlkZTsK
LSAgICB2b2lkIHJldm9rZUF1dGhvcml6YXRpb25Ub2tlbihjb25zdCBTdHJpbmcmKSBvdmVycmlk
ZTsKLSAgICB2b2lkIHNldEVuYWJsZUhpZ2hBY2N1cmFjeShib29sKSBvdmVycmlkZTsKKyAgICB2
b2lkIHN0YXJ0VXBkYXRpbmcoY29uc3QgU3RyaW5nJiBhdXRob3JpemF0aW9uVG9rZW4sIGJvb2wg
bmVlZHNIaWdoQWNjdXJhY3kpIGZpbmFsOworICAgIHZvaWQgc3RvcFVwZGF0aW5nKCkgZmluYWw7
CisgICAgdm9pZCByZXZva2VBdXRob3JpemF0aW9uVG9rZW4oY29uc3QgU3RyaW5nJikgZmluYWw7
CisgICAgdm9pZCBzZXRFbmFibGVIaWdoQWNjdXJhY3koYm9vbCkgZmluYWw7CiAKLSAgICBzdGQ6
Om9wdGlvbmFsPFdlYkNvcmU6Okdlb2xvY2F0aW9uUG9zaXRpb25EYXRhPiBsYXN0UG9zaXRpb24o
KSBvdmVycmlkZTsKKyAgICBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6Okdlb2xvY2F0aW9uUG9zaXRp
b25EYXRhPiBsYXN0UG9zaXRpb24oKSBmaW5hbDsKIAotICAgIHZvaWQgcmVxdWVzdFBlcm1pc3Np
b24oV2ViQ29yZTo6R2VvbG9jYXRpb24mKSBvdmVycmlkZTsKLSAgICB2b2lkIGNhbmNlbFBlcm1p
c3Npb25SZXF1ZXN0KFdlYkNvcmU6Okdlb2xvY2F0aW9uJikgb3ZlcnJpZGU7CisgICAgdm9pZCBy
ZXF1ZXN0UGVybWlzc2lvbihXZWJDb3JlOjpHZW9sb2NhdGlvbiYpIGZpbmFsOworICAgIHZvaWQg
Y2FuY2VsUGVybWlzc2lvblJlcXVlc3QoV2ViQ29yZTo6R2VvbG9jYXRpb24mKSBmaW5hbDsKIAog
ICAgIFdlYlBhZ2UmIG1fcGFnZTsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvV2ViUHJvY2Vzcy5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vz
cy5jcHAKaW5kZXggZGQ0NWI0NTg4YmY5ZGQxMjRlMThmYWE5NWEzMjZlZDMxOTMxYTQ1Ny4uNzk5
NjEzZDM3NzQyMzYzYmZiZGNkOTUyOTc5OTYyMjA2ZjAyMjhhOCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9XZWJQcm9jZXNzLmNwcApAQCAtMTUyNywxNiArMTUyNyw2IEBAIHZvaWQgV2ViUHJv
Y2Vzczo6cGFnZUFjdGl2aXR5U3RhdGVEaWRDaGFuZ2UoUGFnZUlkZW50aWZpZXIsIE9wdGlvblNl
dDxXZWJDb3JlOjpBCiAgICAgfQogfQogCi0jaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKLXZvaWQg
V2ViUHJvY2Vzczo6cmVzZXRBbGxHZW9sb2NhdGlvblBlcm1pc3Npb25zKCkKLXsKLSAgICBmb3Ig
KGF1dG8mIHBhZ2UgOiBtX3BhZ2VNYXAudmFsdWVzKCkpIHsKLSAgICAgICAgaWYgKEZyYW1lKiBt
YWluRnJhbWUgPSBwYWdlLT5tYWluRnJhbWUoKSkKLSAgICAgICAgICAgIG1haW5GcmFtZS0+cmVz
ZXRBbGxHZW9sb2NhdGlvblBlcm1pc3Npb24oKTsKLSAgICB9Ci19Ci0jZW5kaWYKLQogdm9pZCBX
ZWJQcm9jZXNzOjpwcmVwYXJlVG9TdXNwZW5kKGJvb2wgaXNTdXNwZW5zaW9uSW1taW5lbnQsIENv
bXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKICAgICBXRUJQ
Uk9DRVNTX1JFTEVBU0VfTE9HKFByb2Nlc3NTdXNwZW5zaW9uLCAicHJlcGFyZVRvU3VzcGVuZDog
aXNTdXNwZW5zaW9uSW1taW5lbnQ9JWQiLCBpc1N1c3BlbnNpb25JbW1pbmVudCk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5oIGIvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuaAppbmRleCBjNWRkMjI1ZGMxYjcxZGE5Y2RkNGVlZGJh
MGEwN2U3NjE3ODE1NzVlLi41OTVhZjBiOTc0MTI5MGRhNmM3MzRhMDg4NmI4MjRkMjNiMWVlNTdl
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5oCisrKyBi
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmgKQEAgLTMxMCwxMCArMzEwLDYg
QEAgcHVibGljOgogCiAgICAgdm9pZCBpc0pJVEVuYWJsZWQoQ29tcGxldGlvbkhhbmRsZXI8dm9p
ZChib29sKT4mJik7CiAKLSNpZiBQTEFURk9STShJT1NfRkFNSUxZKQotICAgIHZvaWQgcmVzZXRB
bGxHZW9sb2NhdGlvblBlcm1pc3Npb25zKCk7Ci0jZW5kaWYKLQogI2lmIFBMQVRGT1JNKFdBWUxB
TkQpCiAgICAgV2F5bGFuZENvbXBvc2l0b3JEaXNwbGF5KiB3YXlsYW5kQ29tcG9zaXRvckRpc3Bs
YXkoKSBjb25zdCB7IHJldHVybiBtX3dheWxhbmRDb21wb3NpdG9yRGlzcGxheS5nZXQoKTsgfQog
I2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9y
dC9XZWJHZW9sb2NhdGlvbkNsaWVudC5oIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29y
ZVN1cHBvcnQvV2ViR2VvbG9jYXRpb25DbGllbnQuaAppbmRleCA3N2MyODI4ZDg1OTUzNjM1YjY0
YzRjODk5OTkwYTBhNjQ4MTcxYjZjLi5iMDdjNzkwM2QyOTJhOTMzOTFlNWM0MGFlZGQ2NWRlZGJh
ZjhjNWYxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9y
dC9XZWJHZW9sb2NhdGlvbkNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dl
YkNvcmVTdXBwb3J0L1dlYkdlb2xvY2F0aW9uQ2xpZW50LmgKQEAgLTM5LDcgKzM5LDcgQEAgcHVi
bGljOgogICAgIFdlYlZpZXcgKndlYlZpZXcoKSB7IHJldHVybiBtX3dlYlZpZXc7IH0KIAogICAg
IHZvaWQgZ2VvbG9jYXRpb25EZXN0cm95ZWQoKSBvdmVycmlkZTsKLSAgICB2b2lkIHN0YXJ0VXBk
YXRpbmcoY29uc3QgU3RyaW5nJiBhdXRob3JpemF0aW9uVG9rZW4pIG92ZXJyaWRlOworICAgIHZv
aWQgc3RhcnRVcGRhdGluZyhjb25zdCBTdHJpbmcmIGF1dGhvcml6YXRpb25Ub2tlbiwgYm9vbCBl
bmFibGVIaWdoQWNjdXJhY3kpIG92ZXJyaWRlOwogICAgIHZvaWQgc3RvcFVwZGF0aW5nKCkgb3Zl
cnJpZGU7CiAjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICAvLyBGSVhNRTogdW5pZnkgdGhp
cyB3aXRoIE1hYyBvbiBPcGVuU291cmNlLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2Fj
eS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViR2VvbG9jYXRpb25DbGllbnQubW0gYi9Tb3VyY2UvV2Vi
S2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJHZW9sb2NhdGlvbkNsaWVudC5tbQppbmRl
eCBlNzg4YTU3ZGQ2ZjgwN2U3YjI1Yzc0MmJhODAxOTM1N2EyNzM0ZDM4Li5hOGI4NTIxZTJkYTQ3
MThkYzE0YjQzNzBiMWE1YjRiOGQ2MzI4NTg5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVn
YWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJHZW9sb2NhdGlvbkNsaWVudC5tbQorKysgYi9Tb3Vy
Y2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJHZW9sb2NhdGlvbkNsaWVudC5t
bQpAQCAtODMsOSArODMsMTYgQEAgdm9pZCBXZWJHZW9sb2NhdGlvbkNsaWVudDo6Z2VvbG9jYXRp
b25EZXN0cm95ZWQoKQogICAgIGRlbGV0ZSB0aGlzOwogfQogCi12b2lkIFdlYkdlb2xvY2F0aW9u
Q2xpZW50OjpzdGFydFVwZGF0aW5nKGNvbnN0IFN0cmluZyYgYXV0aG9yaXphdGlvblRva2VuKQor
dm9pZCBXZWJHZW9sb2NhdGlvbkNsaWVudDo6c3RhcnRVcGRhdGluZyhjb25zdCBTdHJpbmcmIGF1
dGhvcml6YXRpb25Ub2tlbiwgYm9vbCBlbmFibGVIaWdoQWNjdXJhY3kpCiB7CiAgICAgVU5VU0VE
X1BBUkFNKGF1dGhvcml6YXRpb25Ub2tlbik7CisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKKyAg
ICBpZiAoZW5hYmxlSGlnaEFjY3VyYWN5KQorICAgICAgICBzZXRFbmFibGVIaWdoQWNjdXJhY3ko
dHJ1ZSk7CisjZWxzZQorICAgIFVOVVNFRF9QQVJBTShlbmFibGVIaWdoQWNjdXJhY3kpOworI2Vu
ZGlmCisKICAgICBbW21fd2ViVmlldyBfZ2VvbG9jYXRpb25Qcm92aWRlcl0gcmVnaXN0ZXJXZWJW
aWV3Om1fd2ViVmlld107CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2lu
L1dlYkNvcmVTdXBwb3J0L1dlYkdlb2xvY2F0aW9uQ2xpZW50LmNwcCBiL1NvdXJjZS9XZWJLaXRM
ZWdhY3kvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkdlb2xvY2F0aW9uQ2xpZW50LmNwcAppbmRleCBl
MWZjYTI3NzI0OTYxNTRhNGUwNzBlNGRmZGE3ZTc3ZTk3MzU4MmMxLi5hYzU0NTE0YzY0MmVhMGU1
ZjhhZjMzNjllMWJiYmFlMGMzOTA3MWI3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5
L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJHZW9sb2NhdGlvbkNsaWVudC5jcHAKKysrIGIvU291cmNl
L1dlYktpdExlZ2FjeS93aW4vV2ViQ29yZVN1cHBvcnQvV2ViR2VvbG9jYXRpb25DbGllbnQuY3Bw
CkBAIC00OCw5ICs0OCwxMCBAQCB2b2lkIFdlYkdlb2xvY2F0aW9uQ2xpZW50OjpnZW9sb2NhdGlv
bkRlc3Ryb3llZCgpCiAgICAgZGVsZXRlIHRoaXM7CiB9CiAKLXZvaWQgV2ViR2VvbG9jYXRpb25D
bGllbnQ6OnN0YXJ0VXBkYXRpbmcoY29uc3QgU3RyaW5nJiBhdXRob3JpemF0aW9uVG9rZW4pCit2
b2lkIFdlYkdlb2xvY2F0aW9uQ2xpZW50OjpzdGFydFVwZGF0aW5nKGNvbnN0IFN0cmluZyYgYXV0
aG9yaXphdGlvblRva2VuLCBib29sIGVuYWJsZUhpZ2hBY2N1cmFjeSkKIHsKICAgICBVTlVTRURf
UEFSQU0oYXV0aG9yaXphdGlvblRva2VuKTsKKyAgICBVTlVTRURfUEFSQU0oZW5hYmxlSGlnaEFj
Y3VyYWN5KTsKICAgICBDT01QdHI8SVdlYkdlb2xvY2F0aW9uUHJvdmlkZXI+IHByb3ZpZGVyOwog
ICAgIGlmIChGQUlMRUQobV93ZWJWaWV3LT5nZW9sb2NhdGlvblByb3ZpZGVyKCZwcm92aWRlcikp
KQogICAgICAgICByZXR1cm47CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9X
ZWJDb3JlU3VwcG9ydC9XZWJHZW9sb2NhdGlvbkNsaWVudC5oIGIvU291cmNlL1dlYktpdExlZ2Fj
eS93aW4vV2ViQ29yZVN1cHBvcnQvV2ViR2VvbG9jYXRpb25DbGllbnQuaAppbmRleCAxOTU3NDE3
YjU1ZDdlNWQyZjliNzFlNWM5ZDljMzAzZGZlZjRlMTg2Li41YjhlOTQ0NGYyMWZlZDQzZWRmMjU5
MWEyYmExNWRhM2JkNDRmNDRhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9X
ZWJDb3JlU3VwcG9ydC9XZWJHZW9sb2NhdGlvbkNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXRM
ZWdhY3kvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkdlb2xvY2F0aW9uQ2xpZW50LmgKQEAgLTQxLDcg
KzQxLDcgQEAgcHVibGljOgogICAgIFdlYkdlb2xvY2F0aW9uQ2xpZW50KFdlYlZpZXcqKTsKIAog
ICAgIHZvaWQgZ2VvbG9jYXRpb25EZXN0cm95ZWQoKSBmaW5hbDsKLSAgICB2b2lkIHN0YXJ0VXBk
YXRpbmcoY29uc3QgU3RyaW5nJiBhdXRob3JpemF0aW9uVG9rZW4pIGZpbmFsOworICAgIHZvaWQg
c3RhcnRVcGRhdGluZyhjb25zdCBTdHJpbmcmIGF1dGhvcml6YXRpb25Ub2tlbiwgYm9vbCBlbmFi
bGVIaWdoQWNjdXJhY3kpIGZpbmFsOwogICAgIHZvaWQgc3RvcFVwZGF0aW5nKCkgZmluYWw7CiAg
ICAgdm9pZCBzZXRFbmFibGVIaWdoQWNjdXJhY3koYm9vbCkgZmluYWwgeyB9CiAgICAgc3RkOjpv
cHRpb25hbDxXZWJDb3JlOjpHZW9sb2NhdGlvblBvc2l0aW9uRGF0YT4gbGFzdFBvc2l0aW9uKCkg
ZmluYWw7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>451984</attachid>
            <date>2022-02-14 19:37:32 -0800</date>
            <delta_ts>2022-02-15 08:15:10 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-236566-20220214193731.patch</filename>
            <type>text/plain</type>
            <size>109819</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg5Nzc2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IDNlMmM4MDU2ZjAyYWUxMzRiNjI4OTY2
MDM5ODc5MjFiNjUyNmUwNTQuLjRkZjE3NWE5ZWU0YjE3OWVjMTA5ZGMxMWFhMDczNGJiMDE4OTJl
N2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMTUgQEAKKzIwMjItMDItMTMgIENocmlzIER1bWV6ICA8Y2R1bWV6
QGFwcGxlLmNvbT4KKworICAgICAgICBEbyBwcmVsaW1pbmFyeSB3b3JrIHRvIHBhc3MgZG9tYWlu
IG5hbWVzIHRvIENvcmVMb2NhdGlvbgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MjM2NTY2CisgICAgICAgIDxyZGFyOi8vODg3NjE0MTM+CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkIGJ1aWxkIHRpbWUg
ZmxhZyBmb3IgcGFzc2luZyB3ZWJzaXRlIGlkZW50aWZpZXJzIHRvIENvcmVMb2NhdGlvbi4KKwor
ICAgICAgICAqIHd0Zi9QbGF0Zm9ybUhhdmUuaDoKKwogMjAyMi0wMi0xNCAgR3VzdGF2byBOb3Jv
bmhhIFNpbHZhICA8Z3VzdGF2b0Bub3JvbmhhLmRldi5icj4KIAogICAgICAgICBbTGludXgvYWFy
Y2g2NF0gTW92ZSBwYWdlIHNpemUgY2VpbGluZyB0byAxNmsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCA2MDVjNzM4
NzQyMTI4ODBlOTdkOTljMzQ4OTQyMjU3ZTc3MmQyYWFjLi41ODVjODg4MzZiZDA1MmYyNjQ5MmMw
YWQ1MzI4NDQ0YzlkOWE5MmM2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cK
KysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNTQgQEAKKzIwMjItMDIt
MTMgIENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KKworICAgICAgICBEbyBwcmVsaW1p
bmFyeSB3b3JrIHRvIHBhc3MgZG9tYWluIG5hbWVzIHRvIENvcmVMb2NhdGlvbgorICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjM2NTY2CisgICAgICAgIDxy
ZGFyOi8vODg3NjE0MTM+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgRG8gcHJlbGltaW5hcnkgd29yayB0byBwYXNzIGRvbWFpbiBuYW1lcyB0byBDb3Jl
TG9jYXRpb24gd2hlbiB1c2luZyB0aGUgR2VvbG9jYXRpb24gQVBJLgorICAgICAgICBUaGlzIHBp
cGVzIHRoZSBkb21haW4gbmFtZXMgYWxsIHRoZSB3YXkgZnJvbSB0aGUgR2VvbG9jYXRpb24gQVBJ
IHRvIHRoZSBDb3JlTG9jYXRpb24gY2FsbHMKKyAgICAgICAgYnV0IGRvZXNuJ3QgeWV0IHBhc3Mg
dGhlIGRvbWFpbiB0byBDb3JlTG9jYXRpb24gZHVlIHRvIDxyZGFyOi8vODg4MzQzMDE+LiBJIHdp
bGwgZm9sbG93LXVwCisgICAgICAgIG9uY2UgPHJkYXI6Ly84ODgzNDMwMT4gaXMgZml4ZWQuCisK
KyAgICAgICAgKiBNb2R1bGVzL2dlb2xvY2F0aW9uL0dlb2xvY2F0aW9uQ2xpZW50Lmg6CisgICAg
ICAgICogTW9kdWxlcy9nZW9sb2NhdGlvbi9HZW9sb2NhdGlvbkNvbnRyb2xsZXIuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6R2VvbG9jYXRpb25Db250cm9sbGVyOjpkaWROYXZpZ2F0ZVBhZ2UpOgor
ICAgICAgICAoV2ViQ29yZTo6R2VvbG9jYXRpb25Db250cm9sbGVyOjphZGRPYnNlcnZlcik6Cisg
ICAgICAgIChXZWJDb3JlOjpHZW9sb2NhdGlvbkNvbnRyb2xsZXI6OnJlbW92ZU9ic2VydmVyKToK
KyAgICAgICAgKFdlYkNvcmU6Okdlb2xvY2F0aW9uQ29udHJvbGxlcjo6YWN0aXZpdHlTdGF0ZURp
ZENoYW5nZSk6CisgICAgICAgIChXZWJDb3JlOjpHZW9sb2NhdGlvbkNvbnRyb2xsZXI6OnN0YXJ0
VXBkYXRpbmdJZk5lY2Vzc2FyeSk6CisgICAgICAgIChXZWJDb3JlOjpHZW9sb2NhdGlvbkNvbnRy
b2xsZXI6OnN0b3BVcGRhdGluZ0lmTmVjZXNzYXJ5KToKKyAgICAgICAgKiBNb2R1bGVzL2dlb2xv
Y2F0aW9uL0dlb2xvY2F0aW9uQ29udHJvbGxlci5oOgorICAgICAgICAoV2ViQ29yZTo6R2VvbG9j
YXRpb25Db250cm9sbGVyOjpuZWVkc0hpZ2hBY2N1cmFjeSBjb25zdCk6CisgICAgICAgICogTW9k
dWxlcy9nZW9sb2NhdGlvbi9HZW9sb2NhdGlvblBvc2l0aW9uRGF0YS5oOgorICAgICAgICAqIE1v
ZHVsZXMvZ2VvbG9jYXRpb24vaW9zL0dlb2xvY2F0aW9uUG9zaXRpb25EYXRhSU9TLm1tOgorICAg
ICAgICAqIFNvdXJjZXNDb2NvYS50eHQ6CisgICAgICAgICogV2ViQ29yZS54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qOgorICAgICAgICAqIHBhZ2UvUGFnZS5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpQYWdlOjpkaWRDb21taXRMb2FkKToKKyAgICAgICAgKiBwbGF0Zm9ybS9jb2NvYS9Db3JlTG9j
YXRpb25HZW9sb2NhdGlvblByb3ZpZGVyLmg6IENvcGllZCBmcm9tIFNvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvZ2VvbG9jYXRpb24vR2VvbG9jYXRpb25DbGllbnQuaC4KKyAgICAgICAgKiBwbGF0Zm9y
bS9jb2NvYS9Db3JlTG9jYXRpb25HZW9sb2NhdGlvblByb3ZpZGVyLm1tOiBBZGRlZC4KKyAgICAg
ICAgKGlzQXV0aG9yaXphdGlvbkdyYW50ZWQpOgorICAgICAgICAoLVtXZWJDTExvY2F0aW9uTWFu
YWdlciBpbml0V2l0aFdlYnNpdGVJZGVudGlmaWVyOmNsaWVudDpdKToKKyAgICAgICAgKC1bV2Vi
Q0xMb2NhdGlvbk1hbmFnZXIgZGVhbGxvY10pOgorICAgICAgICAoLVtXZWJDTExvY2F0aW9uTWFu
YWdlciBzdGFydF0pOgorICAgICAgICAoLVtXZWJDTExvY2F0aW9uTWFuYWdlciBzdG9wXSk6Cisg
ICAgICAgICgtW1dlYkNMTG9jYXRpb25NYW5hZ2VyIHNldEVuYWJsZUhpZ2hBY2N1cmFjeTpdKToK
KyAgICAgICAgKC1bV2ViQ0xMb2NhdGlvbk1hbmFnZXIgcmVxdWVzdEdlb2xvY2F0aW9uQXV0aG9y
aXphdGlvbl0pOgorICAgICAgICAoLVtXZWJDTExvY2F0aW9uTWFuYWdlciBsb2NhdGlvbk1hbmFn
ZXJEaWRDaGFuZ2VBdXRob3JpemF0aW9uOl0pOgorICAgICAgICAoLVtXZWJDTExvY2F0aW9uTWFu
YWdlciBsb2NhdGlvbk1hbmFnZXI6ZGlkVXBkYXRlTG9jYXRpb25zOl0pOgorICAgICAgICAoLVtX
ZWJDTExvY2F0aW9uTWFuYWdlciBsb2NhdGlvbk1hbmFnZXI6ZGlkRmFpbFdpdGhFcnJvcjpdKToK
KyAgICAgICAgKFdlYkNvcmU6OkNvcmVMb2NhdGlvbkdlb2xvY2F0aW9uUHJvdmlkZXI6OkNvcmVM
b2NhdGlvbkdlb2xvY2F0aW9uUHJvdmlkZXIpOgorICAgICAgICAoV2ViQ29yZTo6Q29yZUxvY2F0
aW9uR2VvbG9jYXRpb25Qcm92aWRlcjo6fkNvcmVMb2NhdGlvbkdlb2xvY2F0aW9uUHJvdmlkZXIp
OgorICAgICAgICAoV2ViQ29yZTo6Q29yZUxvY2F0aW9uR2VvbG9jYXRpb25Qcm92aWRlcjo6c3Rh
cnQpOgorICAgICAgICAoV2ViQ29yZTo6Q29yZUxvY2F0aW9uR2VvbG9jYXRpb25Qcm92aWRlcjo6
c3RvcCk6CisgICAgICAgIChXZWJDb3JlOjpDb3JlTG9jYXRpb25HZW9sb2NhdGlvblByb3ZpZGVy
OjpzZXRFbmFibGVIaWdoQWNjdXJhY3kpOgorICAgICAgICAoV2ViQ29yZTo6Q29yZUxvY2F0aW9u
R2VvbG9jYXRpb25Qcm92aWRlcjo6cmVxdWVzdEF1dGhvcml6YXRpb24pOgorICAgICAgICAqIHBs
YXRmb3JtL21vY2svR2VvbG9jYXRpb25DbGllbnRNb2NrLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
Okdlb2xvY2F0aW9uQ2xpZW50TW9jazo6c3RhcnRVcGRhdGluZyk6CisgICAgICAgICogcGxhdGZv
cm0vbW9jay9HZW9sb2NhdGlvbkNsaWVudE1vY2suaDoKKwogMjAyMi0wMi0xNCAgU2ltb24gRnJh
c2VyICA8c2ltb24uZnJhc2VyQGFwcGxlLmNvbT4KIAogICAgICAgICBGaXggY3Jhc2ggd2l0aCBk
ZWVwbHkgbmVzdGVkIGFzeW5jIG92ZXJmbG93IHNjcm9sbApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwppbmRleCBhNjlmZWVlNmVl
Yjk0OWM5YTU0Y2YxNTFkZDVhM2ZiZDFlZTk2NTIwLi5kNzc0MDk0MzlkNTEzYWJmZGUyYTMzMmE5
ZjNkZGMwMjJlODQxMTY1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZworKysg
Yi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpAQCAtMSwzICsxLDk0IEBACisyMDIyLTAyLTEzICBD
aHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CisKKyAgICAgICAgRG8gcHJlbGltaW5hcnkg
d29yayB0byBwYXNzIGRvbWFpbiBuYW1lcyB0byBDb3JlTG9jYXRpb24KKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzNjU2NgorICAgICAgICA8cmRhcjov
Lzg4NzYxNDEzPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgIERvIHByZWxpbWluYXJ5IHdvcmsgdG8gcGFzcyBkb21haW4gbmFtZXMgdG8gQ29yZUxvY2F0
aW9uIHdoZW4gdXNpbmcgdGhlIEdlb2xvY2F0aW9uIEFQSS4KKyAgICAgICAgVGhpcyBwaXBlcyB0
aGUgZG9tYWluIG5hbWVzIGFsbCB0aGUgd2F5IGZyb20gdGhlIEdlb2xvY2F0aW9uIEFQSSB0byB0
aGUgQ29yZUxvY2F0aW9uIGNhbGxzCisgICAgICAgIGJ1dCBkb2Vzbid0IHlldCBwYXNzIHRoZSBk
b21haW4gdG8gQ29yZUxvY2F0aW9uIGR1ZSB0byA8cmRhcjovLzg4ODM0MzAxPi4gSSB3aWxsIGZv
bGxvdy11cAorICAgICAgICBvbmNlIDxyZGFyOi8vODg4MzQzMDE+IGlzIGZpeGVkLgorCisgICAg
ICAgICogU291cmNlc0NvY29hLnR4dDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0MvV0tHZW9s
b2NhdGlvbk1hbmFnZXIuY3BwOgorICAgICAgICAoV0tHZW9sb2NhdGlvbk1hbmFnZXJTZXRQcm92
aWRlcik6CisgICAgICAgICogVUlQcm9jZXNzL0NvY29hL1dlYkdlb2xvY2F0aW9uTWFuYWdlclBy
b3h5Q29jb2EuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYktpdDo6V2ViR2VvbG9jYXRpb25NYW5h
Z2VyUHJveHk6OnBvc2l0aW9uQ2hhbmdlZCk6CisgICAgICAgIChXZWJLaXQ6OldlYkdlb2xvY2F0
aW9uTWFuYWdlclByb3h5OjplcnJvck9jY3VycmVkKToKKyAgICAgICAgKFdlYktpdDo6V2ViR2Vv
bG9jYXRpb25NYW5hZ2VyUHJveHk6OnJlc2V0R2VvbG9jYXRpb24pOgorICAgICAgICAoV2ViS2l0
OjpXZWJHZW9sb2NhdGlvbk1hbmFnZXJQcm94eTo6aXNVcGRhdGluZyBjb25zdCk6CisgICAgICAg
IChXZWJLaXQ6OldlYkdlb2xvY2F0aW9uTWFuYWdlclByb3h5Ojppc0hpZ2hBY2N1cmFjeUVuYWJs
ZWQgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpXZWJHZW9sb2NhdGlvbk1hbmFnZXJQcm94eTo6
cHJvdmlkZXJTdGFydFVwZGF0aW5nKToKKyAgICAgICAgKFdlYktpdDo6V2ViR2VvbG9jYXRpb25N
YW5hZ2VyUHJveHk6OnByb3ZpZGVyU3RvcFVwZGF0aW5nKToKKyAgICAgICAgKFdlYktpdDo6V2Vi
R2VvbG9jYXRpb25NYW5hZ2VyUHJveHk6OnByb3ZpZGVyU2V0RW5hYmxlZEhpZ2hBY2N1cmFjeSk6
CisgICAgICAgICogVUlQcm9jZXNzL1dlYkdlb2xvY2F0aW9uTWFuYWdlclByb3h5LmNwcDoKKyAg
ICAgICAgKFdlYktpdDo6V2ViR2VvbG9jYXRpb25NYW5hZ2VyUHJveHk6OldlYkdlb2xvY2F0aW9u
TWFuYWdlclByb3h5KToKKyAgICAgICAgKFdlYktpdDo6V2ViR2VvbG9jYXRpb25NYW5hZ2VyUHJv
eHk6OnByb2Nlc3NQb29sRGVzdHJveWVkKToKKyAgICAgICAgKFdlYktpdDo6V2ViR2VvbG9jYXRp
b25NYW5hZ2VyUHJveHk6OnByb2Nlc3NEaWRDbG9zZSk6CisgICAgICAgIChXZWJLaXQ6OldlYkdl
b2xvY2F0aW9uTWFuYWdlclByb3h5Ojpwcm92aWRlckRpZENoYW5nZVBvc2l0aW9uKToKKyAgICAg
ICAgKFdlYktpdDo6V2ViR2VvbG9jYXRpb25NYW5hZ2VyUHJveHk6OnByb3ZpZGVyRGlkRmFpbFRv
RGV0ZXJtaW5lUG9zaXRpb24pOgorICAgICAgICAoV2ViS2l0OjpXZWJHZW9sb2NhdGlvbk1hbmFn
ZXJQcm94eTo6c3RhcnRVcGRhdGluZyk6CisgICAgICAgIChXZWJLaXQ6OldlYkdlb2xvY2F0aW9u
TWFuYWdlclByb3h5OjpzdG9wVXBkYXRpbmcpOgorICAgICAgICAoV2ViS2l0OjpXZWJHZW9sb2Nh
dGlvbk1hbmFnZXJQcm94eTo6c2V0RW5hYmxlSGlnaEFjY3VyYWN5KToKKyAgICAgICAgKFdlYktp
dDo6V2ViR2VvbG9jYXRpb25NYW5hZ2VyUHJveHk6OnNldFByb3ZpZGVyKToKKyAgICAgICAgKFdl
YktpdDo6V2ViR2VvbG9jYXRpb25NYW5hZ2VyUHJveHk6OmlzVXBkYXRpbmcgY29uc3QpOgorICAg
ICAgICAoV2ViS2l0OjpXZWJHZW9sb2NhdGlvbk1hbmFnZXJQcm94eTo6aXNIaWdoQWNjdXJhY3lF
bmFibGVkIGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6V2ViR2VvbG9jYXRpb25NYW5hZ2VyUHJv
eHk6OnByb3ZpZGVyU3RhcnRVcGRhdGluZyk6CisgICAgICAgIChXZWJLaXQ6OldlYkdlb2xvY2F0
aW9uTWFuYWdlclByb3h5Ojpwcm92aWRlclN0b3BVcGRhdGluZyk6CisgICAgICAgIChXZWJLaXQ6
OldlYkdlb2xvY2F0aW9uTWFuYWdlclByb3h5Ojpwcm92aWRlclNldEVuYWJsZWRIaWdoQWNjdXJh
Y3kpOgorICAgICAgICAoV2ViS2l0OjpXZWJHZW9sb2NhdGlvbk1hbmFnZXJQcm94eTo6cmVzZXRQ
ZXJtaXNzaW9ucyk6IERlbGV0ZWQuCisgICAgICAgIChXZWJLaXQ6OldlYkdlb2xvY2F0aW9uTWFu
YWdlclByb3h5OjpyZW1vdmVSZXF1ZXN0ZXIpOiBEZWxldGVkLgorICAgICAgICAqIFVJUHJvY2Vz
cy9XZWJHZW9sb2NhdGlvbk1hbmFnZXJQcm94eS5oOgorICAgICAgICAoV2ViS2l0OjpXZWJHZW9s
b2NhdGlvbk1hbmFnZXJQcm94eTo6bGFzdFBvc2l0aW9uIGNvbnN0KTogRGVsZXRlZC4KKyAgICAg
ICAgKFdlYktpdDo6V2ViR2VvbG9jYXRpb25NYW5hZ2VyUHJveHk6OmlzVXBkYXRpbmcgY29uc3Qp
OiBEZWxldGVkLgorICAgICAgICAoV2ViS2l0OjpXZWJHZW9sb2NhdGlvbk1hbmFnZXJQcm94eTo6
aXNIaWdoQWNjdXJhY3lFbmFibGVkIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKiBVSVByb2Nl
c3MvV2ViR2VvbG9jYXRpb25NYW5hZ2VyUHJveHkubWVzc2FnZXMuaW46CisgICAgICAgICogVUlQ
cm9jZXNzL2lvcy9XS0dlb2xvY2F0aW9uUHJvdmlkZXJJT1MubW06CisgICAgICAgICgtW1dLR2Vv
bG9jYXRpb25Qcm92aWRlcklPUyBfc3RhcnRVcGRhdGluZ10pOgorICAgICAgICAoLVtXS0dlb2xv
Y2F0aW9uUHJvdmlkZXJJT1MgX3N0b3BVcGRhdGluZ10pOgorICAgICAgICAoLVtXS0dlb2xvY2F0
aW9uUHJvdmlkZXJJT1MgX3NldEVuYWJsZUhpZ2hBY2N1cmFjeTpdKToKKyAgICAgICAgKC1bV0tH
ZW9sb2NhdGlvblByb3ZpZGVySU9TIGluaXRXaXRoUHJvY2Vzc1Bvb2w6XSk6CisgICAgICAgICgt
W1dLR2VvbG9jYXRpb25Qcm92aWRlcklPUyBkZWNpZGVQb2xpY3lGb3JHZW9sb2NhdGlvblJlcXVl
c3RGcm9tT3JpZ2luOmNvbXBsZXRpb25IYW5kbGVyOnZpZXc6XSk6CisgICAgICAgICgtW1dLR2Vv
bG9jYXRpb25Qcm92aWRlcklPUyBnZW9sb2NhdGlvbkF1dGhvcml6YXRpb25HcmFudGVkXSk6Cisg
ICAgICAgICgtW1dLR2VvbG9jYXRpb25Qcm92aWRlcklPUyBwb3NpdGlvbkNoYW5nZWQ6XSk6Cisg
ICAgICAgICgtW1dLR2VvbG9jYXRpb25Qcm92aWRlcklPUyBlcnJvck9jY3VycmVkOl0pOgorICAg
ICAgICAoLVtXS0dlb2xvY2F0aW9uUHJvdmlkZXJJT1MgcmVzZXRHZW9sb2NhdGlvbl0pOgorICAg
ICAgICAoc3RhcnRVcGRhdGluZ0NhbGxiYWNrKTogRGVsZXRlZC4KKyAgICAgICAgKHN0b3BVcGRh
dGluZ0NhbGxiYWNrKTogRGVsZXRlZC4KKyAgICAgICAgKHNldEVuYWJsZUhpZ2hBY2N1cmFjeSk6
IERlbGV0ZWQuCisgICAgICAgICgtW1dLTGVnYWN5Q29yZUxvY2F0aW9uUHJvdmlkZXIgc2V0TGlz
dGVuZXI6XSk6IERlbGV0ZWQuCisgICAgICAgICgtW1dLTGVnYWN5Q29yZUxvY2F0aW9uUHJvdmlk
ZXIgcmVxdWVzdEdlb2xvY2F0aW9uQXV0aG9yaXphdGlvbl0pOiBEZWxldGVkLgorICAgICAgICAo
LVtXS0xlZ2FjeUNvcmVMb2NhdGlvblByb3ZpZGVyIHN0YXJ0XSk6IERlbGV0ZWQuCisgICAgICAg
ICgtW1dLTGVnYWN5Q29yZUxvY2F0aW9uUHJvdmlkZXIgc3RvcF0pOiBEZWxldGVkLgorICAgICAg
ICAoLVtXS0xlZ2FjeUNvcmVMb2NhdGlvblByb3ZpZGVyIHNldEVuYWJsZUhpZ2hBY2N1cmFjeTpd
KTogRGVsZXRlZC4KKyAgICAgICAgKC1bV0tMZWdhY3lDb3JlTG9jYXRpb25Qcm92aWRlciBnZW9s
b2NhdGlvbkF1dGhvcml6YXRpb25HcmFudGVkXSk6IERlbGV0ZWQuCisgICAgICAgICgtW1dLTGVn
YWN5Q29yZUxvY2F0aW9uUHJvdmlkZXIgZ2VvbG9jYXRpb25BdXRob3JpemF0aW9uRGVuaWVkXSk6
IERlbGV0ZWQuCisgICAgICAgICgtW1dLTGVnYWN5Q29yZUxvY2F0aW9uUHJvdmlkZXIgcG9zaXRp
b25DaGFuZ2VkOl0pOiBEZWxldGVkLgorICAgICAgICAoLVtXS0xlZ2FjeUNvcmVMb2NhdGlvblBy
b3ZpZGVyIGVycm9yT2NjdXJyZWQ6XSk6IERlbGV0ZWQuCisgICAgICAgICgtW1dLTGVnYWN5Q29y
ZUxvY2F0aW9uUHJvdmlkZXIgcmVzZXRHZW9sb2NhdGlvbl0pOiBEZWxldGVkLgorICAgICAgICAq
IFdlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIFdlYlByb2Nlc3Mv
R2VvbG9jYXRpb24vV2ViR2VvbG9jYXRpb25NYW5hZ2VyLmNwcDoKKyAgICAgICAgKFdlYktpdDo6
cmVnaXN0cmFibGVEb21haW5Gb3JQYWdlKToKKyAgICAgICAgKFdlYktpdDo6V2ViR2VvbG9jYXRp
b25NYW5hZ2VyOjpyZWdpc3RlcldlYlBhZ2UpOgorICAgICAgICAoV2ViS2l0OjpXZWJHZW9sb2Nh
dGlvbk1hbmFnZXI6OnVucmVnaXN0ZXJXZWJQYWdlKToKKyAgICAgICAgKFdlYktpdDo6V2ViR2Vv
bG9jYXRpb25NYW5hZ2VyOjpzZXRFbmFibGVIaWdoQWNjdXJhY3lGb3JQYWdlKToKKyAgICAgICAg
KFdlYktpdDo6V2ViR2VvbG9jYXRpb25NYW5hZ2VyOjpkaWRDaGFuZ2VQb3NpdGlvbik6CisgICAg
ICAgIChXZWJLaXQ6OldlYkdlb2xvY2F0aW9uTWFuYWdlcjo6ZGlkRmFpbFRvRGV0ZXJtaW5lUG9z
aXRpb24pOgorICAgICAgICAoV2ViS2l0OjpXZWJHZW9sb2NhdGlvbk1hbmFnZXI6OnJlc2V0UGVy
bWlzc2lvbnMpOgorICAgICAgICAoV2ViS2l0OjpXZWJHZW9sb2NhdGlvbk1hbmFnZXI6OmlzVXBk
YXRpbmcgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViS2l0OjpXZWJHZW9sb2NhdGlvbk1h
bmFnZXI6OmlzSGlnaEFjY3VyYWN5RW5hYmxlZCBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgICog
V2ViUHJvY2Vzcy9HZW9sb2NhdGlvbi9XZWJHZW9sb2NhdGlvbk1hbmFnZXIuaDoKKyAgICAgICAg
KiBXZWJQcm9jZXNzL0dlb2xvY2F0aW9uL1dlYkdlb2xvY2F0aW9uTWFuYWdlci5tZXNzYWdlcy5p
bjoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkdlb2xvY2F0aW9uQ2xp
ZW50LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViR2VvbG9jYXRpb25DbGllbnQ6OnN0YXJ0VXBk
YXRpbmcpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViR2VvbG9jYXRp
b25DbGllbnQuaDoKKyAgICAgICAgKFdlYktpdDo6V2ViR2VvbG9jYXRpb25DbGllbnQ6OldlYkdl
b2xvY2F0aW9uQ2xpZW50KTogRGVsZXRlZC4KKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlByb2Nl
c3MuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzOjpyZXNldEFsbEdlb2xvY2F0aW9u
UGVybWlzc2lvbnMpOiBEZWxldGVkLgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUHJvY2Vzcy5o
OgorCiAyMDIyLTAyLTE0ICBTYWlkIEFib3UtSGFsbGF3YSAgPHNhaWRAYXBwbGUuY29tPgogCiAg
ICAgICAgIFtHUFUgUHJvY2Vzc10gUmVtb3RlSW1hZ2VCdWZmZXJQcm94eSBzaG91bGQgbm90IHNp
bmsgaXRzZWxmIHRvIGFuIEltYWdlIG9yIGEgTmF0aXZlSW1hZ2UgdGhvdWdoIGl0cyBiYWNrZW5k
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9DaGFuZ2VMb2cgYi9Tb3VyY2Uv
V2ViS2l0TGVnYWN5L21hYy9DaGFuZ2VMb2cKaW5kZXggNjgwMzk0ODU4YTE1YjhhMjU2OTZhYWVj
N2M4ZDk0YWE3M2FkNzIyMy4uMjU5NzZhMmYwZjQ4ZDNjM2NlMjk4YmZlZjgwZTFhZmIxMDU4OGY2
NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE1IEBACisyMDIyLTAy
LTEzICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CisKKyAgICAgICAgRG8gcHJlbGlt
aW5hcnkgd29yayB0byBwYXNzIGRvbWFpbiBuYW1lcyB0byBDb3JlTG9jYXRpb24KKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzNjU2NgorICAgICAgICA8
cmRhcjovLzg4NzYxNDEzPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2ViR2VvbG9jYXRpb25DbGllbnQuaDoKKyAgICAg
ICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJHZW9sb2NhdGlvbkNsaWVudC5tbToKKyAgICAgICAgKFdl
Ykdlb2xvY2F0aW9uQ2xpZW50OjpzdGFydFVwZGF0aW5nKToKKwogMjAyMi0wMi0xMSAgQ2hyaXMg
RHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgogCiAgICAgICAgIFVucmV2aWV3ZWQsIGZpeCBidWls
ZCB3aXRoIHRoZSBsYXRlc3QgaU9TIFNESy4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdh
Y3kvd2luL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL0NoYW5nZUxvZwppbmRl
eCA2OTVhYTkxMDUzOWVmMDIxMDVmNTIxOTMwNGMwOTdlMTAzMTI2NDU1Li4xZDZjMDMzZTJjZDFk
MTI3NDQ1YzM1YzMwY2EzODg1MGFlZjdiZGI0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVn
YWN5L3dpbi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vQ2hhbmdlTG9n
CkBAIC0xLDMgKzEsMTUgQEAKKzIwMjItMDItMTMgIENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxl
LmNvbT4KKworICAgICAgICBEbyBwcmVsaW1pbmFyeSB3b3JrIHRvIHBhc3MgZG9tYWluIG5hbWVz
IHRvIENvcmVMb2NhdGlvbgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MjM2NTY2CisgICAgICAgIDxyZGFyOi8vODg3NjE0MTM+CisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJH
ZW9sb2NhdGlvbkNsaWVudC5jcHA6CisgICAgICAgIChXZWJHZW9sb2NhdGlvbkNsaWVudDo6c3Rh
cnRVcGRhdGluZyk6CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2ViR2VvbG9jYXRpb25DbGll
bnQuaDoKKwogMjAyMi0wMi0wMSAgTXlsZXMgQy4gTWF4ZmllbGQgIDxtbWF4ZmllbGRAYXBwbGUu
Y29tPgogCiAgICAgICAgIFJlbmFtZSBGb250Q2FzY2FkZTo6Zm9udE1ldHJpY3MoKSBhbmQgUmVu
ZGVyU3R5bGU6OmZvbnRNZXRyaWNzKCkgdG8gZm9udE1ldHJpY3NPZlByaW1hcnlGb250KCkKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL1BsYXRmb3JtSGF2ZS5oIGIvU291cmNlL1dURi93dGYv
UGxhdGZvcm1IYXZlLmgKaW5kZXggMDkyYmMzNjIxNTAxZDQ0Y2VhZmIwNzBmYWNjZDM5OTVjZGEy
MzEyNy4uNjRhNWU3OWIwNDRlZmJiODJhZWYyNDlhNDFiMmRkOThmYmU4NTcwYSAxMDA2NDQKLS0t
IGEvU291cmNlL1dURi93dGYvUGxhdGZvcm1IYXZlLmgKKysrIGIvU291cmNlL1dURi93dGYvUGxh
dGZvcm1IYXZlLmgKQEAgLTExMTksNiArMTExOSwxNiBAQAogI2RlZmluZSBIQVZFX05TVEVYVExJ
U1RfTUFSS0VSX0ZPUk1BVFMgMQogI2VuZGlmCiAKKyNpZiAoUExBVEZPUk0oSU9TKSAmJiBfX0lQ
SE9ORV9PU19WRVJTSU9OX01BWF9BTExPV0VEID49IDE2MDAwMCkgXAorICAgIHx8IChQTEFURk9S
TShXQVRDSE9TKSAmJiBfX1dBVENIX09TX1ZFUlNJT05fTUFYX0FMTE9XRUQgPj0gOTAwMDApIFwK
KyAgICB8fCAoUExBVEZPUk0oQVBQTEVUVikgJiYgX19UVl9PU19WRVJTSU9OX01BWF9BTExPV0VE
ID49IDE2MDAwMCkKKyNkZWZpbmUgSEFWRV9DT1JFX0xPQ0FUSU9OX1dFQlNJVEVfSURFTlRJRklF
UlMgMQorI2VuZGlmCisKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZKSB8fCAoUExBVEZPUk0oTUFD
KSAmJiBfX01BQ19PU19YX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49IDEwMTQwMCAmJiBkZWZpbmVk
IF9faGFzX2luY2x1ZGUgJiYgX19oYXNfaW5jbHVkZSg8Q29yZUZvdW5kYXRpb24vQ0ZQcml2Lmg+
KSkKKyNkZWZpbmUgSEFWRV9DT1JFX0xPQ0FUSU9OX0FVVEhPUklaRURfV0hFTl9JTl9VU0UgMQor
I2VuZGlmCisKICNpZiBQTEFURk9STShNQUMpCiAjZGVmaW5lIEhBVkVfU0NFTkVLSVQgMQogI2Vu
ZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2dlb2xvY2F0aW9uL0dlb2xv
Y2F0aW9uQ2xpZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2dlb2xvY2F0aW9uL0dlb2xv
Y2F0aW9uQ2xpZW50LmgKaW5kZXggNWJhZjNhZDgyYzU3ZTVhY2JhOTZlM2RmMGVkNjBlYmM3NTRi
Y2IwNS4uYTRlODYyMzYyNTU2N2U5YWRmZWIwMGQ4MjQwMDBhMjc3ZGJlYWYwMCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9nZW9sb2NhdGlvbi9HZW9sb2NhdGlvbkNsaWVudC5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZ2VvbG9jYXRpb24vR2VvbG9jYXRpb25DbGll
bnQuaApAQCAtMzgsNyArMzgsNyBAQCBjbGFzcyBHZW9sb2NhdGlvbkNsaWVudCB7CiBwdWJsaWM6
CiAgICAgdmlydHVhbCB2b2lkIGdlb2xvY2F0aW9uRGVzdHJveWVkKCkgPSAwOwogCi0gICAgdmly
dHVhbCB2b2lkIHN0YXJ0VXBkYXRpbmcoY29uc3QgU3RyaW5nJiBhdXRob3JpemF0aW9uVG9rZW4p
ID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgc3RhcnRVcGRhdGluZyhjb25zdCBTdHJpbmcmIGF1dGhv
cml6YXRpb25Ub2tlbiwgYm9vbCBuZWVkc0hpZ2hBY2N1cmFjeSkgPSAwOwogICAgIHZpcnR1YWwg
dm9pZCBzdG9wVXBkYXRpbmcoKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIHJldm9rZUF1dGhvcml6
YXRpb25Ub2tlbihjb25zdCBTdHJpbmcmKSB7IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9nZW9sb2NhdGlvbi9HZW9sb2NhdGlvbkNvbnRyb2xsZXIuY3BwIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9nZW9sb2NhdGlvbi9HZW9sb2NhdGlvbkNvbnRyb2xsZXIuY3BwCmlu
ZGV4IDA2MTYyOTE2MGQ5YmNjN2Q1ZGFmNzRjZmM0ZjgxNTUwYmE0OGRlOGMuLjA3ZGQ2NWYzYzFh
ZWU3OWViOWM3MzI4MzZhMmQ1YWFkMDE3MzMzY2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvZ2VvbG9jYXRpb24vR2VvbG9jYXRpb25Db250cm9sbGVyLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2dlb2xvY2F0aW9uL0dlb2xvY2F0aW9uQ29udHJvbGxlci5jcHAK
QEAgLTUyLDE5ICs1MiwyNSBAQCBHZW9sb2NhdGlvbkNvbnRyb2xsZXI6On5HZW9sb2NhdGlvbkNv
bnRyb2xsZXIoKQogICAgIG1fY2xpZW50Lmdlb2xvY2F0aW9uRGVzdHJveWVkKCk7CiB9CiAKK3Zv
aWQgR2VvbG9jYXRpb25Db250cm9sbGVyOjpkaWROYXZpZ2F0ZVBhZ2UoKQoreworICAgIHdoaWxl
ICghbV9vYnNlcnZlcnMuaXNFbXB0eSgpKQorICAgICAgICByZW1vdmVPYnNlcnZlcihtX29ic2Vy
dmVycy5iZWdpbigpLT5nZXQoKSk7Cit9CisKIHZvaWQgR2VvbG9jYXRpb25Db250cm9sbGVyOjph
ZGRPYnNlcnZlcihHZW9sb2NhdGlvbiYgb2JzZXJ2ZXIsIGJvb2wgZW5hYmxlSGlnaEFjY3VyYWN5
KQogewotICAgIC8vIFRoaXMgbWF5IGJlIGNhbGxlZCBtdWx0aXBsZSB0aW1lcyB3aXRoIHRoZSBz
YW1lIG9ic2VydmVyLCB0aG91Z2ggcmVtb3ZlT2JzZXJ2ZXIoKQotICAgIC8vIGlzIGNhbGxlZCBv
bmx5IG9uY2Ugd2l0aCBlYWNoLgotICAgIGJvb2wgd2FzRW1wdHkgPSBtX29ic2VydmVycy5pc0Vt
cHR5KCk7CisgICAgYm9vbCBoaWdoQWNjdXJhY3lXYXNSZXF1aXJlZCA9IG5lZWRzSGlnaEFjY3Vy
YWN5KCk7CisKICAgICBtX29ic2VydmVycy5hZGQob2JzZXJ2ZXIpOwogICAgIGlmIChlbmFibGVI
aWdoQWNjdXJhY3kpCiAgICAgICAgIG1faGlnaEFjY3VyYWN5T2JzZXJ2ZXJzLmFkZChvYnNlcnZl
cik7CiAKLSAgICBpZiAoZW5hYmxlSGlnaEFjY3VyYWN5KQotICAgICAgICBtX2NsaWVudC5zZXRF
bmFibGVIaWdoQWNjdXJhY3kodHJ1ZSk7Ci0gICAgaWYgKHdhc0VtcHR5ICYmIG1fcGFnZS5pc1Zp
c2libGUoKSkKLSAgICAgICAgbV9jbGllbnQuc3RhcnRVcGRhdGluZyhvYnNlcnZlci5hdXRob3Jp
emF0aW9uVG9rZW4oKSk7CisgICAgaWYgKG1faXNVcGRhdGluZykgeworICAgICAgICBpZiAoIWhp
Z2hBY2N1cmFjeVdhc1JlcXVpcmVkICYmIGVuYWJsZUhpZ2hBY2N1cmFjeSkKKyAgICAgICAgICAg
IG1fY2xpZW50LnNldEVuYWJsZUhpZ2hBY2N1cmFjeSh0cnVlKTsKKyAgICB9IGVsc2UKKyAgICAg
ICAgc3RhcnRVcGRhdGluZ0lmTmVjZXNzYXJ5KCk7CiB9CiAKIHZvaWQgR2VvbG9jYXRpb25Db250
cm9sbGVyOjpyZW1vdmVPYnNlcnZlcihHZW9sb2NhdGlvbiYgb2JzZXJ2ZXIpCkBAIC03MiwxMiAr
NzgsMTcgQEAgdm9pZCBHZW9sb2NhdGlvbkNvbnRyb2xsZXI6OnJlbW92ZU9ic2VydmVyKEdlb2xv
Y2F0aW9uJiBvYnNlcnZlcikKICAgICBpZiAoIW1fb2JzZXJ2ZXJzLmNvbnRhaW5zKG9ic2VydmVy
KSkKICAgICAgICAgcmV0dXJuOwogCisgICAgYm9vbCBoaWdoQWNjdXJhY3lXYXNSZXF1aXJlZCA9
IG5lZWRzSGlnaEFjY3VyYWN5KCk7CisKICAgICBtX29ic2VydmVycy5yZW1vdmUob2JzZXJ2ZXIp
OwogICAgIG1faGlnaEFjY3VyYWN5T2JzZXJ2ZXJzLnJlbW92ZShvYnNlcnZlcik7CiAKKyAgICBp
ZiAoIW1faXNVcGRhdGluZykKKyAgICAgICAgcmV0dXJuOworCiAgICAgaWYgKG1fb2JzZXJ2ZXJz
LmlzRW1wdHkoKSkKLSAgICAgICAgbV9jbGllbnQuc3RvcFVwZGF0aW5nKCk7Ci0gICAgZWxzZSBp
ZiAobV9oaWdoQWNjdXJhY3lPYnNlcnZlcnMuaXNFbXB0eSgpKQorICAgICAgICBzdG9wVXBkYXRp
bmdJZk5lY2Vzc2FyeSgpOworICAgIGVsc2UgaWYgKGhpZ2hBY2N1cmFjeVdhc1JlcXVpcmVkICYm
ICFuZWVkc0hpZ2hBY2N1cmFjeSgpKQogICAgICAgICBtX2NsaWVudC5zZXRFbmFibGVIaWdoQWNj
dXJhY3koZmFsc2UpOwogfQogCkBAIC0xMzksOSArMTUwLDkgQEAgdm9pZCBHZW9sb2NhdGlvbkNv
bnRyb2xsZXI6OmFjdGl2aXR5U3RhdGVEaWRDaGFuZ2UoT3B0aW9uU2V0PEFjdGl2aXR5U3RhdGU6
OkZsYWcKICAgICBhdXRvIGNoYW5nZWQgPSBvbGRBY3Rpdml0eVN0YXRlIF4gbmV3QWN0aXZpdHlT
dGF0ZTsKICAgICBpZiAoY2hhbmdlZCAmIEFjdGl2aXR5U3RhdGU6OklzVmlzaWJsZSAmJiAhbV9v
YnNlcnZlcnMuaXNFbXB0eSgpKSB7CiAgICAgICAgIGlmIChuZXdBY3Rpdml0eVN0YXRlICYgQWN0
aXZpdHlTdGF0ZTo6SXNWaXNpYmxlKQotICAgICAgICAgICAgbV9jbGllbnQuc3RhcnRVcGRhdGlu
ZygoKm1fb2JzZXJ2ZXJzLnJhbmRvbSgpKS0+YXV0aG9yaXphdGlvblRva2VuKCkpOworICAgICAg
ICAgICAgc3RhcnRVcGRhdGluZ0lmTmVjZXNzYXJ5KCk7CiAgICAgICAgIGVsc2UKLSAgICAgICAg
ICAgIG1fY2xpZW50LnN0b3BVcGRhdGluZygpOworICAgICAgICAgICAgc3RvcFVwZGF0aW5nSWZO
ZWNlc3NhcnkoKTsKICAgICB9CiAKICAgICBpZiAoIW1fcGFnZS5pc1Zpc2libGUoKSkKQEAgLTE1
Miw2ICsxNjMsMjQgQEAgdm9pZCBHZW9sb2NhdGlvbkNvbnRyb2xsZXI6OmFjdGl2aXR5U3RhdGVE
aWRDaGFuZ2UoT3B0aW9uU2V0PEFjdGl2aXR5U3RhdGU6OkZsYWcKICAgICAgICAgbV9jbGllbnQu
cmVxdWVzdFBlcm1pc3Npb24ocGVybWlzc2lvblJlcXVlc3QuZ2V0KCkpOwogfQogCit2b2lkIEdl
b2xvY2F0aW9uQ29udHJvbGxlcjo6c3RhcnRVcGRhdGluZ0lmTmVjZXNzYXJ5KCkKK3sKKyAgICBp
ZiAobV9pc1VwZGF0aW5nIHx8ICFtX3BhZ2UuaXNWaXNpYmxlKCkgfHwgbV9vYnNlcnZlcnMuaXNF
bXB0eSgpKQorICAgICAgICByZXR1cm47CisKKyAgICBtX2NsaWVudC5zdGFydFVwZGF0aW5nKCgq
bV9vYnNlcnZlcnMucmFuZG9tKCkpLT5hdXRob3JpemF0aW9uVG9rZW4oKSwgbmVlZHNIaWdoQWNj
dXJhY3koKSk7CisgICAgbV9pc1VwZGF0aW5nID0gdHJ1ZTsKK30KKwordm9pZCBHZW9sb2NhdGlv
bkNvbnRyb2xsZXI6OnN0b3BVcGRhdGluZ0lmTmVjZXNzYXJ5KCkKK3sKKyAgICBpZiAoIW1faXNV
cGRhdGluZykKKyAgICAgICAgcmV0dXJuOworCisgICAgbV9jbGllbnQuc3RvcFVwZGF0aW5nKCk7
CisgICAgbV9pc1VwZGF0aW5nID0gZmFsc2U7Cit9CisKIGNvbnN0IGNoYXIqIEdlb2xvY2F0aW9u
Q29udHJvbGxlcjo6c3VwcGxlbWVudE5hbWUoKQogewogICAgIHJldHVybiAiR2VvbG9jYXRpb25D
b250cm9sbGVyIjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZ2VvbG9jYXRp
b24vR2VvbG9jYXRpb25Db250cm9sbGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2dlb2xv
Y2F0aW9uL0dlb2xvY2F0aW9uQ29udHJvbGxlci5oCmluZGV4IDQyZjVkMDYyZGI2ZjA5YzY2MDEx
MWQ2NmQ5ZjBmY2ZmZjNiMjA3NDAuLmJiZmY1NzVlYjA1ODMyNDA3ODBkM2I0MWE5Njc0MmM2YjFk
NzI0OGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZ2VvbG9jYXRpb24vR2Vv
bG9jYXRpb25Db250cm9sbGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9nZW9sb2Nh
dGlvbi9HZW9sb2NhdGlvbkNvbnRyb2xsZXIuaApAQCAtMzAsNiArMzAsNyBAQAogI2luY2x1ZGUg
IkFjdGl2aXR5U3RhdGVDaGFuZ2VPYnNlcnZlci5oIgogI2luY2x1ZGUgIkdlb2xvY2F0aW9uLmgi
CiAjaW5jbHVkZSAiUGFnZS5oIgorI2luY2x1ZGUgIlJlZ2lzdHJhYmxlRG9tYWluLmgiCiAjaW5j
bHVkZSA8d3RmL0hhc2hTZXQuaD4KICNpbmNsdWRlIDx3dGYvTm9uY29weWFibGUuaD4KICNpbmNs
dWRlIDx3dGYvUmVmUHRyLmg+CkBAIC02NSw2ICs2Niw4IEBAIHB1YmxpYzoKIAogICAgIHZvaWQg
cmV2b2tlQXV0aG9yaXphdGlvblRva2VuKGNvbnN0IFN0cmluZyYpOwogCisgICAgdm9pZCBkaWRO
YXZpZ2F0ZVBhZ2UoKTsKKwogcHJpdmF0ZToKICAgICBQYWdlJiBtX3BhZ2U7CiAgICAgR2VvbG9j
YXRpb25DbGllbnQmIG1fY2xpZW50OwpAQCAtNzMsNiArNzYsMTEgQEAgcHJpdmF0ZToKIAogICAg
IHN0ZDo6b3B0aW9uYWw8R2VvbG9jYXRpb25Qb3NpdGlvbkRhdGE+IG1fbGFzdFBvc2l0aW9uOwog
CisgICAgYm9vbCBuZWVkc0hpZ2hBY2N1cmFjeSgpIGNvbnN0IHsgcmV0dXJuICFtX2hpZ2hBY2N1
cmFjeU9ic2VydmVycy5pc0VtcHR5KCk7IH0KKworICAgIHZvaWQgc3RhcnRVcGRhdGluZ0lmTmVj
ZXNzYXJ5KCk7CisgICAgdm9pZCBzdG9wVXBkYXRpbmdJZk5lY2Vzc2FyeSgpOworCiAgICAgdHlw
ZWRlZiBIYXNoU2V0PFJlZjxHZW9sb2NhdGlvbj4+IE9ic2VydmVyc1NldDsKICAgICAvLyBBbGwg
b2JzZXJ2ZXJzOyBib3RoIHRob3NlIHJlcXVlc3RpbmcgaGlnaCBhY2N1cmFjeSBhbmQgdGhvc2Ug
bm90LgogICAgIE9ic2VydmVyc1NldCBtX29ic2VydmVyczsKQEAgLTgwLDYgKzg4LDkgQEAgcHJp
dmF0ZToKIAogICAgIC8vIFdoaWxlIHRoZSBwYWdlIGlzIG5vdCB2aXNpYmxlLCB3ZSBwZW5kIHBl
cm1pc3Npb24gcmVxdWVzdHMuCiAgICAgSGFzaFNldDxSZWY8R2VvbG9jYXRpb24+PiBtX3BlbmRp
bmdQZXJtaXNzaW9uUmVxdWVzdDsKKworICAgIFJlZ2lzdHJhYmxlRG9tYWluIG1fcmVnaXN0cmFi
bGVEb21haW47CisgICAgYm9vbCBtX2lzVXBkYXRpbmcgeyBmYWxzZSB9OwogfTsKIAogfSAvLyBu
YW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9nZW9s
b2NhdGlvbi9HZW9sb2NhdGlvblBvc2l0aW9uRGF0YS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9nZW9sb2NhdGlvbi9HZW9sb2NhdGlvblBvc2l0aW9uRGF0YS5oCmluZGV4IDkyNjIyMTcwYzhh
YWQ2OTg5YjhhMTJjZTQ4MzU2ZGM2ODdiZjZlMzUuLmNjMjE4MGE4MzdkMjc0M2MxZmJmNzYxYzQx
MGUxYzdlYmZlYWVlN2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZ2VvbG9j
YXRpb24vR2VvbG9jYXRpb25Qb3NpdGlvbkRhdGEuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2dlb2xvY2F0aW9uL0dlb2xvY2F0aW9uUG9zaXRpb25EYXRhLmgKQEAgLTI5LDcgKzI5LDcg
QEAKICNpbmNsdWRlIDx3dGYvUmVmLmg+CiAjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KIAot
I2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCisjaWYgUExBVEZPUk0oQ09DT0EpCiBPQkpDX0NMQVNT
IENMTG9jYXRpb247CiAjZW5kaWYKIApAQCAtNDcsNyArNDcsNyBAQCBwdWJsaWM6CiAgICAgewog
ICAgIH0KIAotI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCisjaWYgUExBVEZPUk0oQ09DT0EpCiAg
ICAgV0VCQ09SRV9FWFBPUlQgZXhwbGljaXQgR2VvbG9jYXRpb25Qb3NpdGlvbkRhdGEoQ0xMb2Nh
dGlvbiopOwogI2VuZGlmCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZ2Vv
bG9jYXRpb24vY29jb2EvR2VvbG9jYXRpb25Qb3NpdGlvbkRhdGFDb2NvYS5tbSBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvZ2VvbG9jYXRpb24vY29jb2EvR2VvbG9jYXRpb25Qb3NpdGlvbkRhdGFD
b2NvYS5tbQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi5jMGE5YmVlNjU1Njk0ZGIzYWJmMTU3ZWVkMTkwNzZlYWQ1ODU0
NDA2Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9nZW9sb2NhdGlv
bi9jb2NvYS9HZW9sb2NhdGlvblBvc2l0aW9uRGF0YUNvY29hLm1tCkBAIC0wLDAgKzEsNTMgQEAK
Ky8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQXBwbGUgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVk
LgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlz
dHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5D
LiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENP
TlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBC
VVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisg
KiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW1wb3J0ICJj
b25maWcuaCIKKyNpbXBvcnQgIkdlb2xvY2F0aW9uUG9zaXRpb24uaCIKKworI2ltcG9ydCA8Q29y
ZUxvY2F0aW9uL0NMTG9jYXRpb24uaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitHZW9sb2Nh
dGlvblBvc2l0aW9uRGF0YTo6R2VvbG9jYXRpb25Qb3NpdGlvbkRhdGEoQ0xMb2NhdGlvbiogbG9j
YXRpb24pCisgICAgOiB0aW1lc3RhbXAobG9jYXRpb24udGltZXN0YW1wLnRpbWVJbnRlcnZhbFNp
bmNlMTk3MCkKKyAgICAsIGxhdGl0dWRlKGxvY2F0aW9uLmNvb3JkaW5hdGUubGF0aXR1ZGUpCisg
ICAgLCBsb25naXR1ZGUobG9jYXRpb24uY29vcmRpbmF0ZS5sb25naXR1ZGUpCisgICAgLCBhY2N1
cmFjeShsb2NhdGlvbi5ob3Jpem9udGFsQWNjdXJhY3kpCit7CisgICAgaWYgKGxvY2F0aW9uLnZl
cnRpY2FsQWNjdXJhY3kgPj0gMC4wKSB7CisgICAgICAgIGFsdGl0dWRlID0gbG9jYXRpb24uYWx0
aXR1ZGU7CisgICAgICAgIGFsdGl0dWRlQWNjdXJhY3kgPSBsb2NhdGlvbi52ZXJ0aWNhbEFjY3Vy
YWN5OworICAgIH0KKyAgICBpZiAobG9jYXRpb24uc3BlZWQgPj0gMC4wKQorICAgICAgICBzcGVl
ZCA9IGxvY2F0aW9uLnNwZWVkOworICAgIGlmIChsb2NhdGlvbi5jb3Vyc2UgPj0gMC4wKQorICAg
ICAgICBoZWFkaW5nID0gbG9jYXRpb24uY291cnNlOworI2lmICFQTEFURk9STShNQUNDQVRBTFlT
VCkKKyAgICBpZiAobG9jYXRpb24uZmxvb3IpCisgICAgICAgIGZsb29yTGV2ZWwgPSBsb2NhdGlv
bi5mbG9vci5sZXZlbDsKKyNlbmRpZgorfQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2dlb2xvY2F0aW9uL2lvcy9HZW9sb2NhdGlv
blBvc2l0aW9uRGF0YUlPUy5tbSBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZ2VvbG9jYXRpb24v
aW9zL0dlb2xvY2F0aW9uUG9zaXRpb25EYXRhSU9TLm1tCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCA5OGQ5YTI0MjFlN2YyMzA5YjRmNjIzYjE0ZDdjYmUyYjZjN2UwNDVjLi4wMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvZ2VvbG9jYXRpb24vaW9zL0dlb2xvY2F0aW9uUG9zaXRpb25EYXRhSU9TLm1tCisrKyAv
ZGV2L251bGwKQEAgLTEsNTcgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNyBBcHBs
ZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQK
LSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCi0gKiBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRI
RQotICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQg
U0hBTEwgQVBQTEUgSU5DLiBPUgotICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCi0gKiBFWEVNUExBUlksIE9SIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBQ
Uk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwg
REFUQSwgT1IKLSAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKLSAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgotICovCi0KLSNpbXBvcnQgImNvbmZpZy5oIgotI2ltcG9ydCAiR2VvbG9jYXRpb25Q
b3NpdGlvbi5oIgotCi0jaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKLQotI2ltcG9ydCA8Q29yZUxv
Y2F0aW9uL0NMTG9jYXRpb24uaD4KLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1HZW9sb2NhdGlv
blBvc2l0aW9uRGF0YTo6R2VvbG9jYXRpb25Qb3NpdGlvbkRhdGEoQ0xMb2NhdGlvbiogbG9jYXRp
b24pCi0gICAgOiB0aW1lc3RhbXAobG9jYXRpb24udGltZXN0YW1wLnRpbWVJbnRlcnZhbFNpbmNl
MTk3MCkKLSAgICAsIGxhdGl0dWRlKGxvY2F0aW9uLmNvb3JkaW5hdGUubGF0aXR1ZGUpCi0gICAg
LCBsb25naXR1ZGUobG9jYXRpb24uY29vcmRpbmF0ZS5sb25naXR1ZGUpCi0gICAgLCBhY2N1cmFj
eShsb2NhdGlvbi5ob3Jpem9udGFsQWNjdXJhY3kpCi17Ci0gICAgaWYgKGxvY2F0aW9uLnZlcnRp
Y2FsQWNjdXJhY3kgPj0gMC4wKSB7Ci0gICAgICAgIGFsdGl0dWRlID0gbG9jYXRpb24uYWx0aXR1
ZGU7Ci0gICAgICAgIGFsdGl0dWRlQWNjdXJhY3kgPSBsb2NhdGlvbi52ZXJ0aWNhbEFjY3VyYWN5
OwotICAgIH0KLSAgICBpZiAobG9jYXRpb24uc3BlZWQgPj0gMC4wKQotICAgICAgICBzcGVlZCA9
IGxvY2F0aW9uLnNwZWVkOwotICAgIGlmIChsb2NhdGlvbi5jb3Vyc2UgPj0gMC4wKQotICAgICAg
ICBoZWFkaW5nID0gbG9jYXRpb24uY291cnNlOwotI2lmICFQTEFURk9STShNQUNDQVRBTFlTVCkK
LSAgICBpZiAobG9jYXRpb24uZmxvb3IpCi0gICAgICAgIGZsb29yTGV2ZWwgPSBsb2NhdGlvbi5m
bG9vci5sZXZlbDsKLSNlbmRpZgotfQotCi19Ci0KLSNlbmRpZiAvLyBQTEFURk9STShJT1NfRkFN
SUxZKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvU291cmNlc0NvY29hLnR4dCBiL1NvdXJj
ZS9XZWJDb3JlL1NvdXJjZXNDb2NvYS50eHQKaW5kZXggYjYzMWQyODU3OWQxMDU0ODRlYmUxN2Nm
M2MyZDMxNjgyZTViMmZkYi4uYmE5NGE3MzE5ZmQzYTdiODQzZWQ2MzBlMDk5ZjUzMmMxZjQ1ODQ5
ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvU291cmNlc0NvY29hLnR4dAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9Tb3VyY2VzQ29jb2EudHh0CkBAIC0yNTEsNiArMjUxLDcgQEAgcGxhdGZvcm0v
Y2YvTWVkaWFBY2Nlc3NpYmlsaXR5U29mdExpbmsuY3BwCiBwbGF0Zm9ybS9jZi9SdW5Mb29wT2Jz
ZXJ2ZXIuY3BwCiBwbGF0Zm9ybS9jZi9TaGFyZWRCdWZmZXJDRi5jcHAKIHBsYXRmb3JtL2NvY29h
L0NvbnRlbnRGaWx0ZXJVbmJsb2NrSGFuZGxlckNvY29hLm1tIEBuby11bmlmeQorcGxhdGZvcm0v
Y29jb2EvQ29yZUxvY2F0aW9uR2VvbG9jYXRpb25Qcm92aWRlci5tbQogcGxhdGZvcm0vY29jb2Ev
Q29yZVZpZGVvU29mdExpbmsuY3BwCiBwbGF0Zm9ybS9jb2NvYS9EcmFnRGF0YUNvY29hLm1tCiBw
bGF0Zm9ybS9jb2NvYS9EcmFnSW1hZ2VDb2NvYS5tbQpAQCAtMzA3LDEwICszMDgsMTAgQEAgcGxh
dGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL01lZGlhU2VsZWN0aW9uR3JvdXBBVkZPYmpDLm1t
CiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vU2FtcGxlQnVmZmVyRGlzcGxheUxheWVy
LmNwcAogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL1dlYk1lZGlhU2Vzc2lvbk1hbmFn
ZXJNYWMuY3BwCiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9BVkFzc2V0TUlN
RVR5cGVDYWNoZS5tbQotcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvQVZBc3Nl
dFRyYWNrVXRpbGl0aWVzLm1tCitwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9B
VkFzc2V0VHJhY2tVdGlsaXRpZXMubW0gQG5vLXVuaWZ5CiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZv
dW5kYXRpb24vb2JqYy9BVk91dHB1dERldmljZU1lbnVDb250cm9sbGVyVGFyZ2V0UGlja2VyLm1t
IEBuby11bmlmeQogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvQVZSb3V0ZVBp
Y2tlclZpZXdUYXJnZXRQaWNrZXIubW0KLXBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9v
YmpjL0FWU3RyZWFtRGF0YVBhcnNlck1JTUVUeXBlQ2FjaGUubW0KK3BsYXRmb3JtL2dyYXBoaWNz
L2F2Zm91bmRhdGlvbi9vYmpjL0FWU3RyZWFtRGF0YVBhcnNlck1JTUVUeXBlQ2FjaGUubW0gQG5v
LXVuaWZ5CiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9BdWRpb1RyYWNrUHJp
dmF0ZUFWRk9iakMubW0KIHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0F1ZGlv
VHJhY2tQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDLmNwcAogcGxhdGZvcm0vZ3JhcGhpY3MvYXZm
b3VuZGF0aW9uL29iamMvQ0RNU2Vzc2lvbkFWQ29udGVudEtleVNlc3Npb24ubW0KQEAgLTMxOCw3
ICszMTksNyBAQCBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9DRE1TZXNzaW9u
QVZGb3VuZGF0aW9uT2JqQy5tbQogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMv
Q0RNU2Vzc2lvbkFWU3RyZWFtU2Vzc2lvbi5tbQogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0
aW9uL29iamMvQ0RNU2Vzc2lvbk1lZGlhU291cmNlQVZGT2JqQy5tbQogcGxhdGZvcm0vZ3JhcGhp
Y3MvYXZmb3VuZGF0aW9uL29iamMvSW1hZ2VEZWNvZGVyQVZGT2JqQy5tbQotcGxhdGZvcm0vZ3Jh
cGhpY3MvYXZmb3VuZGF0aW9uL29iamMvSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUFWRk9iakMubW0K
K3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0luYmFuZFRleHRUcmFja1ByaXZh
dGVBVkZPYmpDLm1tIEBuby11bmlmeQogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29i
amMvSW5iYW5kQ2hhcHRlclRyYWNrUHJpdmF0ZUFWRk9iakMubW0gQG5vLXVuaWZ5CiBwbGF0Zm9y
bS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9Mb2NhbFNhbXBsZUJ1ZmZlckRpc3BsYXlMYXll
ci5tbQogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5YmFja1Rh
cmdldFBpY2tlck1hYy5tbQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ov
cHJvamVjdC5wYnhwcm9qCmluZGV4IDNmOWIwNTRhZTRhZTdhN2QxNjdmNGM3NTMyNzZlZjkzNDY2
M2I3NWIuLmZhMDUyZGQxODlmMzY5ODViMWQ2OWM5YzVjNGQ2YTJjYzkyMzI1NTQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTEz
NTMsNiArMTM1Myw3IEBACiAJCTQ2ODM0NEUwMUVEREZBQUEwMEI3Nzk1QiAvKiBET01SZWN0TGlz
dC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDY4MzQ0
REUxRURERkE1RjAwQjc3OTVCIC8qIERPTVJlY3RMaXN0LmggKi87IHNldHRpbmdzID0ge0FUVFJJ
QlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNDY4M0RGNDAyNzY3REY5ODAwN0QwMEM4IC8q
IEpTU2hhZG93UmVhbG1HbG9iYWxTY29wZUJhc2UuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ2ODNERjNFMjc2N0RGOTgwMDdEMDBDOCAvKiBKU1NoYWRv
d1JlYWxtR2xvYmFsU2NvcGVCYXNlLmggKi87IH07CiAJCTQ2ODNERjQxMjc2N0U5MUEwMDdEMDBD
OCAvKiBTaGFkb3dSZWFsbUdsb2JhbFNjb3BlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA0NjgzREYzQjI3NjdERjI2MDA3RDAwQzggLyogU2hhZG93UmVh
bG1HbG9iYWxTY29wZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7
IH07IH07CisJCTQ2ODhFOTgwMjdCNkI0NTAwMDU2N0NEMiAvKiBDb3JlTG9jYXRpb25HZW9sb2Nh
dGlvblByb3ZpZGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA0Njg4RTk3RjI3QjZCNDQ0MDA1NjdDRDIgLyogQ29yZUxvY2F0aW9uR2VvbG9jYXRpb25Q
cm92aWRlci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07
CiAJCTQ2ODhFRTNDMjZERDI2MTAwMDJBRjVDNCAvKiBDcm9zc09yaWdpbk1vZGUuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ2ODhFRTNBMjZERDI2MEMw
MDJBRjVDNCAvKiBDcm9zc09yaWdpbk1vZGUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9
IChQcml2YXRlLCApOyB9OyB9OwogCQk0Njk0M0RDOTI3NjNGODE3MDA0QjYxMEUgLyogU2hhcmVk
V29ya2VyT2JqZWN0SWRlbnRpZmllci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gNDY5NDNEQzcyNzYzRjgwRTAwNEI2MTBFIC8qIFNoYXJlZFdvcmtlck9i
amVjdElkZW50aWZpZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCAp
OyB9OyB9OwogCQk0Njk4NUYyMzI3QTRBNkFEMDA5N0EzMkIgLyogU2hhcmVkV29ya2VyS2V5Lmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0Njk4NUYyMjI3
QTRBNjg2MDA5N0EzMkIgLyogU2hhcmVkV29ya2VyS2V5LmggKi87IHNldHRpbmdzID0ge0FUVFJJ
QlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKQEAgLTEzNjAsNiArMTM2MSw3IEBACiAJCTQ2OUQ3
N0I4MjcwMTYyNTEwMDE0MkZBNiAvKiBOYXZpZ2F0aW9uUmVxdWVzdGVyLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0NjlENzdCNjI3MDE2MjUwMDAxNDJG
QTYgLyogTmF2aWdhdGlvblJlcXVlc3Rlci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0g
KFByaXZhdGUsICk7IH07IH07CiAJCTQ2QTc4QjM0Mjc5OUJENzEwMDExNTRGRSAvKiBXb3JrZXJP
cHRpb25zLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1
QzFCMUQyNjI2RjE4QTRCMDA4ODJEQTIgLyogV29ya2VyT3B0aW9ucy5oICovOyBzZXR0aW5ncyA9
IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTQ2QUFBQTNEMjVEMzYzMjAwMEJB
RjQyRiAvKiBBdWRpb0ZpbGVSZWFkZXJDb2NvYS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gNDZBQUFBM0EyNUQzNjMxNDAwQkFGNDJGIC8qIEF1ZGlvRmls
ZVJlYWRlckNvY29hLmggKi87IH07CisJCTQ2QjU5OTM5MjdCQjQzNEIwMDM4MDdGRSAvKiBBVlN0
cmVhbURhdGFQYXJzZXJNSU1FVHlwZUNhY2hlLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gQ0QxMUIzRTAyMjdDQUFBOTAwMjNBRkM3IC8qIEFWU3RyZWFt
RGF0YVBhcnNlck1JTUVUeXBlQ2FjaGUubW0gKi87IH07CiAJCTQ2QjYzRjZDMUM2RThEMTkwMDJF
OTE0QiAvKiBKU0V2ZW50VGFyZ2V0Q3VzdG9tLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA0NkI2M0Y2QjFDNkU4Q0RGMDAyRTkxNEIgLyogSlNFdmVudFRh
cmdldEN1c3RvbS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07
IH07CiAJCTQ2QjY1MEREMjI5NjI2MjcwMEZEOEFBNCAvKiBQYWdlSWRlbnRpZmllci5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDZCNjUwREIyMjk2MjYy
NzAwRkQ4QUE0IC8qIFBhZ2VJZGVudGlmaWVyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMg
PSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNDZCODU5M0MyNjE2NzIyNzAwMTlFREM2IC8qIFNjcmlw
dEJ1ZmZlclNvdXJjZVByb3ZpZGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA0NkI4NTkzQTI2MTY3MjBDMDAxOUVEQzYgLyogU2NyaXB0QnVmZmVyU291
cmNlUHJvdmlkZXIuaCAqLzsgfTsKQEAgLTEzNzAsNiArMTM3Miw3IEBACiAJCTQ2Qjk1MTk5MjA3
RDYzNEQwMEE3RDJERCAvKiBSZW1vdGVET01XaW5kb3cuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ2Qjk1MThFMjA3RDYzMkEwMEE3RDJERCAvKiBSZW1v
dGVET01XaW5kb3cuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9
OyB9OwogCQk0NkI5NTE5QTIwN0Q2MzU0MDBBN0QyREQgLyogUmVtb3RlRnJhbWUuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ2Qjk1MTkyMjA3RDYzMkUw
MEE3RDJERCAvKiBSZW1vdGVGcmFtZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFBy
aXZhdGUsICk7IH07IH07CiAJCTQ2Qjk1QkY1MjIzMUNGRDYwMDUzQTUwNCAvKiBEZXZpY2VPcmll
bnRhdGlvbkFuZE1vdGlvbkFjY2Vzc0NvbnRyb2xsZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ2Qjk1QkY0MjIzMUNGQjgwMDUzQTUwNCAvKiBEZXZp
Y2VPcmllbnRhdGlvbkFuZE1vdGlvbkFjY2Vzc0NvbnRyb2xsZXIuaCAqLzsgfTsKKwkJNDZCQTQ5
QjgyN0JCNDQzMzAwNzdGNjNGIC8qIEFWQXNzZXRUcmFja1V0aWxpdGllcy5tbSBpbiBTb3VyY2Vz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENERUNBODk4MUVERjQ0N0QwMERD
QjA4QiAvKiBBVkFzc2V0VHJhY2tVdGlsaXRpZXMubW0gKi87IH07CiAJCTQ2QkNCQkMyMjA4NTAw
OEYwMDcxMDYzOCAvKiBKU1JlbW90ZURPTVdpbmRvd0Jhc2UuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ2QkNCQkMwMjA4NTAwN0YwMDcxMDYzOCAvKiBK
U1JlbW90ZURPTVdpbmRvd0Jhc2UuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2
YXRlLCApOyB9OyB9OwogCQk0NkJEMDVDNTI1QkI2RTU5MDAyMjVGMzAgLyogQWRkRXZlbnRMaXN0
ZW5lck9wdGlvbnMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDQ2QkQwNUMyMjVCQjZFNEUwMDIyNUYzMCAvKiBBZGRFdmVudExpc3RlbmVyT3B0aW9ucy5o
ICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTQ2QkQw
NUM2MjVCQjZFNkMwMDIyNUYzMCAvKiBFdmVudExpc3RlbmVyT3B0aW9ucy5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDZCRDA1QzMyNUJCNkU0RTAwMjI1
RjMwIC8qIEV2ZW50TGlzdGVuZXJPcHRpb25zLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMg
PSAoUHJpdmF0ZSwgKTsgfTsgfTsKQEAgLTEzNzgsNiArMTM4MSw3IEBACiAJCTQ2QzY5NkNCMUU3
MjA1RjcwMDU5NzkzNyAvKiBDUFVNb25pdG9yLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA0NkM2OTZDOTFFNzIwNUU0MDA1OTc5MzcgLyogQ1BVTW9uaXRv
ci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTQ2
QzY5NkNDMUU3MjA1RkMwMDU5NzkzNyAvKiBDUFVNb25pdG9yLmNwcCBpbiBTb3VyY2VzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ2QzY5NkNBMUU3MjA1RTQwMDU5NzkzNyAv
KiBDUFVNb25pdG9yLmNwcCAqLzsgfTsKIAkJNDZDODNFRkUxQTlCQkUyOTAwQTc5QTQxIC8qIEdl
b05vdGlmaWVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA0NkM4M0VGQzFBOUJCRTI5MDBBNzlBNDEgLyogR2VvTm90aWZpZXIuaCAqLzsgc2V0dGluZ3Mg
PSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQk0NkNBOTQzMTI3Qjg2OTU4MDBG
NEY1RkYgLyogSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUFWRk9iakMubW0gaW4gU291cmNlcyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwN0FBNkI2QTE2NkQwMTk1MDBENDU2NzEg
LyogSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUFWRk9iakMubW0gKi87IH07CiAJCTQ2Q0E5QzQ0MUY5
N0JCRTkwMDRDRkMzQSAvKiBWaXNpYmlsaXR5U3RhdGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ2Q0E5QzQxMUY5N0JCRTcwMDRDRkMzQSAvKiBWaXNp
YmlsaXR5U3RhdGUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9
OyB9OwogCQk0NkNGNTA0QTI3QUIxRUE0MDA3MERCQzggLyogU2hhcmVkV29ya2VyQ29udGV4dE1h
bmFnZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ2
Q0Y1MDQ4MjdBQjFFQTEwMDcwREJDOCAvKiBTaGFyZWRXb3JrZXJDb250ZXh0TWFuYWdlci5oICov
OyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTQ2RDAwMDQw
MjZBMEZFQjMwMEQxQkYxRSAvKiBTdWJtaXRFdmVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDZEMDAwM0UyNkEwRkU2RjAwRDFCRjFFIC8qIFN1Ym1p
dEV2ZW50LmggKi87IH07CkBAIC0yNjk2LDcgKzI3MDAsNyBAQAogCQk4Mzc2NUY5NTFEQUM1MjJG
MDBDMDY1MzcgLyogTW91c2VFdmVudEluaXQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDgzNzY1Rjk0MURBQzUyMTgwMEMwNjUzNyAvKiBNb3VzZUV2ZW50
SW5pdC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJ
CTgzNzg4NzgyMjREOEE2MDkwMDBENEE1QiAvKiBBdWRpb0J1ZmZlclNvdXJjZU9wdGlvbnMuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDgzNzg4NzdGMjRE
OEE1RkMwMDBENEE1QiAvKiBBdWRpb0J1ZmZlclNvdXJjZU9wdGlvbnMuaCAqLzsgfTsKIAkJODM3
OTM2M0YxRkJCQjBCNDAwQzgwMjNDIC8qIFNlcnZpY2VXb3JrZXJDbGllbnREYXRhLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4Mzc5MzYzRTFGQkJCMEE1
MDBDODAyM0MgLyogU2VydmljZVdvcmtlckNsaWVudERhdGEuaCAqLzsgc2V0dGluZ3MgPSB7QVRU
UklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwotCQk4Mzc5NjRDRjFGOERCNjlEMDAyMThFQTAg
LyogR2VvbG9jYXRpb25Qb3NpdGlvbkRhdGFJT1MubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4Mzc5NjRDRTFGOERCNjlBMDAyMThFQTAgLyogR2VvbG9j
YXRpb25Qb3NpdGlvbkRhdGFJT1MubW0gKi87IH07CisJCTgzNzk2NENGMUY4REI2OUQwMDIxOEVB
MCAvKiBHZW9sb2NhdGlvblBvc2l0aW9uRGF0YUNvY29hLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODM3OTY0Q0UxRjhEQjY5QTAwMjE4RUEwIC8qIEdl
b2xvY2F0aW9uUG9zaXRpb25EYXRhQ29jb2EubW0gKi87IH07CiAJCTgzN0E4MDEzMUUxRTEyNzMw
MDAyNkI5RiAvKiBMb2NhbGl6YWJsZS5zdHJpbmdzZGljdCBpbiBSZXNvdXJjZXMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODM3QTgwMTExRTFFMTI3MzAwMDI2QjlGIC8qIExv
Y2FsaXphYmxlLnN0cmluZ3NkaWN0ICovOyB9OwogCQk4MzdDMEI3NjI0REIzODUwMDA1RDU5NTkg
LyogRHluYW1pY3NDb21wcmVzc29yT3B0aW9ucy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gODM3QzBCNzMyNERCMzg0MjAwNUQ1OTU5IC8qIER5bmFtaWNz
Q29tcHJlc3Nvck9wdGlvbnMuaCAqLzsgfTsKIAkJODM3RkIzNDUxRjlFQTA2RDAwRDBGQzMxIC8q
IEV4dGVuZGFibGVNZXNzYWdlRXZlbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDgzN0ZCMzQwMUY5RUEwNjYwMEQwRkMzMSAvKiBFeHRlbmRhYmxlTWVz
c2FnZUV2ZW50LmggKi87IH07CkBAIC05Mjc1LDYgKzkyNzksOCBAQAogCQk0NjgzREYzQzI3NjdE
RjI2MDA3RDAwQzggLyogU2hhZG93UmVhbG1HbG9iYWxTY29wZS5pZGwgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gU2hhZG93UmVh
bG1HbG9iYWxTY29wZS5pZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQ2ODNERjNE
Mjc2N0RGOTgwMDdEMDBDOCAvKiBKU1NoYWRvd1JlYWxtR2xvYmFsU2NvcGVCYXNlLmNwcCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTU2hhZG93UmVhbG1HbG9iYWxTY29w
ZUJhc2UuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0NjgzREYzRTI3NjdERjk4
MDA3RDAwQzggLyogSlNTaGFkb3dSZWFsbUdsb2JhbFNjb3BlQmFzZS5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBKU1NoYWRvd1JlYWxtR2xvYmFsU2NvcGVCYXNlLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTQ2ODhFOTdEMjdCNkI0NDMwMDU2N0NEMiAvKiBDb3Jl
TG9jYXRpb25HZW9sb2NhdGlvblByb3ZpZGVyLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gQ29y
ZUxvY2F0aW9uR2VvbG9jYXRpb25Qcm92aWRlci5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKKwkJNDY4OEU5N0YyN0I2QjQ0NDAwNTY3Q0QyIC8qIENvcmVMb2NhdGlvbkdlb2xvY2F0aW9u
UHJvdmlkZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQ29yZUxvY2F0aW9uR2VvbG9jYXRpb25Qcm92aWRl
ci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0Njg4RUUzQTI2REQyNjBDMDAyQUY1
QzQgLyogQ3Jvc3NPcmlnaW5Nb2RlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IENyb3NzT3JpZ2luTW9kZS5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0NjhCOEJERTI1Q0M4NDkzMDBGNjc4MjIg
LyogSlNCYXNlQXVkaW9Db250ZXh0Q3VzdG9tLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTQmFz
ZUF1ZGlvQ29udGV4dEN1c3RvbS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQ2
OTQzREM3Mjc2M0Y4MEUwMDRCNjEwRSAvKiBTaGFyZWRXb3JrZXJPYmplY3RJZGVudGlmaWVyLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IFNoYXJlZFdvcmtlck9iamVjdElkZW50aWZpZXIuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTEyMTk2LDcgKzEyMjAyLDcgQEAKIAkJODM3ODg3ODEyNEQ4
QTVGQzAwMEQ0QTVCIC8qIEF1ZGlvQnVmZmVyU291cmNlT3B0aW9ucy5pZGwgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gQXVkaW9C
dWZmZXJTb3VyY2VPcHRpb25zLmlkbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJODM3
OTM2M0MxRkJCQjBBNDAwQzgwMjNDIC8qIFNlcnZpY2VXb3JrZXJDbGllbnREYXRhLmNwcCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFNlcnZpY2VXb3JrZXJDbGllbnREYXRh
LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJODM3OTM2M0UxRkJCQjBBNTAwQzgw
MjNDIC8qIFNlcnZpY2VXb3JrZXJDbGllbnREYXRhLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IFNlcnZpY2VXb3JrZXJDbGllbnREYXRhLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07Ci0JCTgzNzk2NENFMUY4REI2OUEwMDIxOEVBMCAvKiBHZW9sb2NhdGlvblBvc2l0aW9u
RGF0YUlPUy5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgbmFtZSA9IEdlb2xv
Y2F0aW9uUG9zaXRpb25EYXRhSU9TLm1tOyBwYXRoID0gTW9kdWxlcy9nZW9sb2NhdGlvbi9pb3Mv
R2VvbG9jYXRpb25Qb3NpdGlvbkRhdGFJT1MubW07IHNvdXJjZVRyZWUgPSBTT1VSQ0VfUk9PVDsg
fTsKKwkJODM3OTY0Q0UxRjhEQjY5QTAwMjE4RUEwIC8qIEdlb2xvY2F0aW9uUG9zaXRpb25EYXRh
Q29jb2EubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IG5hbWUgPSBHZW9sb2Nh
dGlvblBvc2l0aW9uRGF0YUNvY29hLm1tOyBwYXRoID0gTW9kdWxlcy9nZW9sb2NhdGlvbi9jb2Nv
YS9HZW9sb2NhdGlvblBvc2l0aW9uRGF0YUNvY29hLm1tOyBzb3VyY2VUcmVlID0gU09VUkNFX1JP
T1Q7IH07CiAJCTgzN0E4MDEyMUUxRTEyNzMwMDAyNkI5RiAvKiBlbiAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQucGxpc3Quc3RyaW5nc2RpY3Q7
IG5hbWUgPSBlbjsgcGF0aCA9IGVuLmxwcm9qL0xvY2FsaXphYmxlLnN0cmluZ3NkaWN0OyBzb3Vy
Y2VUcmVlID0gU09VUkNFX1JPT1Q7IH07CiAJCTgzN0I3RDFGMURDM0Y1NEMwMEQwNTFGQyAvKiBW
YWxpZGF0aW9uQnViYmxlSU9TLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBw
YXRoID0gVmFsaWRhdGlvbkJ1YmJsZUlPUy5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJODM3QzBCNzMyNERCMzg0MjAwNUQ1OTU5IC8qIER5bmFtaWNzQ29tcHJlc3Nvck9wdGlvbnMu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gRHluYW1pY3NDb21wcmVzc29yT3B0aW9ucy5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwpAQCAtMjE2MjAsNiArMjE2MjYsMTQgQEAKIAkJCXBhdGggPSBjb250
ZXh0OwogCQkJc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsKIAkJfTsKKwkJNDY1QzNEMTkyN0I5OTFD
ODAwMjEzMDJGIC8qIGNvY29hICovID0geworCQkJaXNhID0gUEJYR3JvdXA7CisJCQljaGlsZHJl
biA9ICgKKwkJCQk4Mzc5NjRDRTFGOERCNjlBMDAyMThFQTAgLyogR2VvbG9jYXRpb25Qb3NpdGlv
bkRhdGFDb2NvYS5tbSAqLywKKwkJCSk7CisJCQlwYXRoID0gY29jb2E7CisJCQlzb3VyY2VUcmVl
ID0gIjxncm91cD4iOworCQl9OwogCQk0NjY5NENERTI3NTk0NDZEMDBFMzE1MEUgLyogc2hhcmVk
ICovID0gewogCQkJaXNhID0gUEJYR3JvdXA7CiAJCQljaGlsZHJlbiA9ICgKQEAgLTI1MTE3LDE0
ICsyNTEzMSw2IEBACiAJCQlwYXRoID0gYmVhY29uOwogCQkJc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsKIAkJfTsKLQkJODM3OTY0Q0MxRjhEQjY3RDAwMjE4RUEwIC8qIGlvcyAqLyA9IHsKLQkJCWlz
YSA9IFBCWEdyb3VwOwotCQkJY2hpbGRyZW4gPSAoCi0JCQkJODM3OTY0Q0UxRjhEQjY5QTAwMjE4
RUEwIC8qIEdlb2xvY2F0aW9uUG9zaXRpb25EYXRhSU9TLm1tICovLAotCQkJKTsKLQkJCW5hbWUg
PSBpb3M7Ci0JCQlzb3VyY2VUcmVlID0gIjxncm91cD4iOwotCQl9OwogCQk4M0ZCMzM2NTFGNTA4
QTE3MDA5ODZFNTQgLyogZW50cmllc2FwaSAqLyA9IHsKIAkJCWlzYSA9IFBCWEdyb3VwOwogCQkJ
Y2hpbGRyZW4gPSAoCkBAIC0yNjEzNSw3ICsyNjE0MSw3IEBACiAJCTk3MTE0NUZGMTRFRjAwNzkw
MDY3NEZEOSAvKiBnZW9sb2NhdGlvbiAqLyA9IHsKIAkJCWlzYSA9IFBCWEdyb3VwOwogCQkJY2hp
bGRyZW4gPSAoCi0JCQkJODM3OTY0Q0MxRjhEQjY3RDAwMjE4RUEwIC8qIGlvcyAqLywKKwkJCQk0
NjVDM0QxOTI3Qjk5MUM4MDAyMTMwMkYgLyogY29jb2EgKi8sCiAJCQkJOTc0NkFGMTMxNEY0RERF
NjAwM0U3QTcwIC8qIEdlb2xvY2F0aW9uLmNwcCAqLywKIAkJCQk5NzQ2QUYxNDE0RjREREU2MDAz
RTdBNzAgLyogR2VvbG9jYXRpb24uaCAqLywKIAkJCQk5NzQ2QUYxNTE0RjREREU2MDAzRTdBNzAg
LyogR2VvbG9jYXRpb24uaWRsICovLApAQCAtMjY4NDcsNiArMjY4NTMsOCBAQAogCQkJCUMxRjdC
NzJGMjQ0OEYyQUMwMDEyNDU1NyAvKiBBR1hDb21waWxlclNlcnZpY2UuY3BwICovLAogCQkJCUMx
RjdCNzMwMjQ0OEYyQUMwMDEyNDU1NyAvKiBBR1hDb21waWxlclNlcnZpY2UuaCAqLywKIAkJCQlB
MTQwOTBGQTFBQTUxRTFEMDA5MTE5MUEgLyogQ29udGVudEZpbHRlclVuYmxvY2tIYW5kbGVyQ29j
b2EubW0gKi8sCisJCQkJNDY4OEU5N0YyN0I2QjQ0NDAwNTY3Q0QyIC8qIENvcmVMb2NhdGlvbkdl
b2xvY2F0aW9uUHJvdmlkZXIuaCAqLywKKwkJCQk0Njg4RTk3RDI3QjZCNDQzMDA1NjdDRDIgLyog
Q29yZUxvY2F0aW9uR2VvbG9jYXRpb25Qcm92aWRlci5tbSAqLywKIAkJCQlDRDdEMzM0NTFDN0Ex
NkJGMDAwNDEyOTMgLyogQ29yZVZpZGVvU29mdExpbmsuY3BwICovLAogCQkJCUNEN0QzMzQ2MUM3
QTE2QkYwMDA0MTI5MyAvKiBDb3JlVmlkZW9Tb2Z0TGluay5oICovLAogCQkJCUY0NjJFNzlGMjQy
QURBM0MwMDIwNERERCAvKiBEcmFnRGF0YUNvY29hLm1tICovLApAQCAtMzM5NDEsNiArMzM5NDks
NyBAQAogCQkJCTNGODAyMDM3MUU5RTQ3QzUwMERFQzYxRCAvKiBDb3JlQXVkaW9DYXB0dXJlRGV2
aWNlTWFuYWdlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNDFGQ0NDM0IyNzQ2Njc1NjAwODkyQUQ2
IC8qIENvcmVBdWRpb0NhcHR1cmVTb3VyY2UuaCBpbiBIZWFkZXJzICovLAogCQkJCTA3QUZGNDIy
MUVGQjE0NDkwMEI1NDVCMyAvKiBDb3JlQXVkaW9DYXB0dXJlU291cmNlSU9TLmggaW4gSGVhZGVy
cyAqLywKKwkJCQk0Njg4RTk4MDI3QjZCNDUwMDA1NjdDRDIgLyogQ29yZUxvY2F0aW9uR2VvbG9j
YXRpb25Qcm92aWRlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQ0Q3RDMzNDgxQzdBMTZCRjAwMDQx
MjkzIC8qIENvcmVWaWRlb1NvZnRMaW5rLmggaW4gSGVhZGVycyAqLywKIAkJCQk4NjJGMTI5RTE4
QzE1NzZGMDA1QzU0QUYgLyogQ291bnRlZFVzZXJBY3Rpdml0eS5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJQTgwRTZEMDQwQTE5ODlDQTAwN0ZCOEM1IC8qIENvdW50ZXIuaCBpbiBIZWFkZXJzICovLApA
QCAtMzg2OTcsOCArMzg3MDYsMTAgQEAKIAkJCQlDRDBFRUUwRTE0NzQzRjM5MDAzRUFGQTIgLyog
QXVkaW9PdXRwdXRVbml0QWRhcHRvcklPUy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlDREE3OTgy
NzE3MEEyNzkxMDBENDVDNTUgLyogQXVkaW9TZXNzaW9uSU9TLm1tIGluIFNvdXJjZXMgKi8sCiAJ
CQkJQ0Q4QTdCQkIxOTc3MzVGRTAwQ0JENjQzIC8qIEF1ZGlvU291cmNlUHJvdmlkZXJBVkZPYmpD
Lm1tIGluIFNvdXJjZXMgKi8sCisJCQkJNDZCQTQ5QjgyN0JCNDQzMzAwNzdGNjNGIC8qIEFWQXNz
ZXRUcmFja1V0aWxpdGllcy5tbSBpbiBTb3VyY2VzICovLAogCQkJCTBGQ0EyOTM1MjZGQzM5MTcw
MDZCNEFFQiAvKiBBVkF1ZGlvU2Vzc2lvbkNhcHR1cmVEZXZpY2VNYW5hZ2VyLm1tIGluIFNvdXJj
ZXMgKi8sCiAJCQkJMDczOEU1RUMyNDk5ODM5MDAwREExMDFDIC8qIEFWT3V0cHV0RGV2aWNlTWVu
dUNvbnRyb2xsZXJUYXJnZXRQaWNrZXIubW0gaW4gU291cmNlcyAqLywKKwkJCQk0NkI1OTkzOTI3
QkI0MzRCMDAzODA3RkUgLyogQVZTdHJlYW1EYXRhUGFyc2VyTUlNRVR5cGVDYWNoZS5tbSBpbiBT
b3VyY2VzICovLAogCQkJCUNEMzM2RjYxMTdGOUY2NDcwMERERENEMCAvKiBBVlRyYWNrUHJpdmF0
ZUFWRk9iakNJbXBsLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJNDk5NkMwRjYyNzE3NzQ4ODAwMkMx
MjVEIC8qIEFWVmlkZW9DYXB0dXJlU291cmNlLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJQ0RGNEI3
MTUxRTAwQjdFNTAwRTIzNUEyIC8qIENETS5jcHAgaW4gU291cmNlcyAqLywKQEAgLTM4NzE2LDEz
ICszODcyNywxNCBAQAogCQkJCTUxOEY0RkY2MTk0Q0E0RTYwMDgxQkFBRSAvKiBHYW1lcGFkQnV0
dG9uLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTUxNkM2MjIwMTk1MEQ0ODcwMDMzN0U3NSAvKiBH
YW1lcGFkRXZlbnQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNTFBOUQ5RTkxOTVCOTMxRjAwMUIy
QjVDIC8qIEdhbWVwYWRNYW5hZ2VyLmNwcCBpbiBTb3VyY2VzICovLAotCQkJCTgzNzk2NENGMUY4
REI2OUQwMDIxOEVBMCAvKiBHZW9sb2NhdGlvblBvc2l0aW9uRGF0YUlPUy5tbSBpbiBTb3VyY2Vz
ICovLAorCQkJCTgzNzk2NENGMUY4REI2OUQwMDIxOEVBMCAvKiBHZW9sb2NhdGlvblBvc2l0aW9u
RGF0YUNvY29hLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJNkU3MkY1NEUyMjlEQ0QxMDAwQjNFMTUx
IC8qIEdyYXBoaWNzQ29udGV4dEdMQU5HTEUuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJN0MzRTUx
MEIxOERGOEYzNTAwQzExMkY3IC8qIEhUTUxDb252ZXJ0ZXIubW0gaW4gU291cmNlcyAqLywKIAkJ
CQlBOEQwNkIzQTBBMjY1RENEMDA1RTcyMDMgLyogSFRNTE5hbWVzLmNwcCBpbiBTb3VyY2VzICov
LAogCQkJCTFBQzkwMEMzMTk0M0MwRkMwMDg2MjVCNSAvKiBIVFRQSGVhZGVyTmFtZXMuY3BwIGlu
IFNvdXJjZXMgKi8sCiAJCQkJQ0QyN0FFNTEyMkE5ODY4NzAwOTQ3RkY5IC8qIEltYWdlUm90YXRp
b25TZXNzaW9uVlQubW0gaW4gU291cmNlcyAqLywKIAkJCQkwNzBFMkQwRjI2RjI1MDg5MDAxNEFB
QzMgLyogSW5iYW5kQ2hhcHRlclRyYWNrUHJpdmF0ZUFWRk9iakMubW0gaW4gU291cmNlcyAqLywK
KwkJCQk0NkNBOTQzMTI3Qjg2OTU4MDBGNEY1RkYgLyogSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUFW
Rk9iakMubW0gaW4gU291cmNlcyAqLywKIAkJCQlDRDA2M0Y4MjFFMjNGQTg5MDA4MTJCRTMgLyog
SW5pdERhdGFSZWdpc3RyeS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk5MzVDNDc3MDA5QUM0RDcz
MDBBNkFBQjQgLyogS2V5RXZlbnRNYWMubW0gaW4gU291cmNlcyAqLywKIAkJCQlDREE5OEUwQjE2
MDNDRDYwMDBGRUEzQjEgLyogTGVnYWN5Q0RNLmNwcCBpbiBTb3VyY2VzICovLApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFn
ZS5jcHAKaW5kZXggNmE4NWU4NDNkOGJiZTNkMTkyZDk3ZjQ5NmJkN2ViNDU0NzQ5ZGJhNC4uZWZl
MGUzODA2ZGM4NDgwMzBkMjJiOWQ5MDI5MTY3OTMzODViZmRhYSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGFnZS9QYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuY3Bw
CkBAIC02OSw2ICs2OSw3IEBACiAjaW5jbHVkZSAiRnJhbWVUcmVlLmgiCiAjaW5jbHVkZSAiRnJh
bWVWaWV3LmgiCiAjaW5jbHVkZSAiRnVsbHNjcmVlbk1hbmFnZXIuaCIKKyNpbmNsdWRlICJHZW9s
b2NhdGlvbkNvbnRyb2xsZXIuaCIKICNpbmNsdWRlICJIVE1MRWxlbWVudC5oIgogI2luY2x1ZGUg
IkhUTUxJbWFnZUVsZW1lbnQuaCIKICNpbmNsdWRlICJIVE1MTWVkaWFFbGVtZW50LmgiCkBAIC0x
MzMyLDYgKzEzMzMsMTEgQEAgdm9pZCBQYWdlOjpkaWRDb21taXRMb2FkKCkKICAgICByZXNldFRl
eHRSZWNvZ25pdGlvblJlc3VsdHMoKTsKICAgICByZXNldEltYWdlQW5hbHlzaXNRdWV1ZSgpOwog
I2VuZGlmCisKKyNpZiBFTkFCTEUoR0VPTE9DQVRJT04pCisgICAgaWYgKGF1dG8qIGdlb2xvY2F0
aW9uQ29udHJvbGxlciA9IEdlb2xvY2F0aW9uQ29udHJvbGxlcjo6ZnJvbSh0aGlzKSkKKyAgICAg
ICAgZ2VvbG9jYXRpb25Db250cm9sbGVyLT5kaWROYXZpZ2F0ZVBhZ2UoKTsKKyNlbmRpZgogfQog
CiB2b2lkIFBhZ2U6OmRpZEZpbmlzaExvYWQoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vY29jb2EvQ29yZUxvY2F0aW9uR2VvbG9jYXRpb25Qcm92aWRlci5oIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvQ29yZUxvY2F0aW9uR2VvbG9jYXRpb25Qcm92aWRlci5o
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLmM1MjQ2Yzg4NGFjZjhmNjlmY2I4ZjhhYzRhY2M3ZjRjZGU2NDVjZWQKLS0t
IC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9Db3JlTG9jYXRp
b25HZW9sb2NhdGlvblByb3ZpZGVyLmgKQEAgLTAsMCArMSw2NyBAQAorLyoKKyAqIENvcHlyaWdo
dCAoQykgMjAyMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgor
ICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgor
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJ
QlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElU
UyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsg
T1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBU
SEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNw
cmFnbWEgb25jZQorCisjaW5jbHVkZSA8d3RmL0NvbXBsZXRpb25IYW5kbGVyLmg+CisjaW5jbHVk
ZSA8d3RmL0ZvcndhcmQuaD4KKyNpbmNsdWRlIDx3dGYvUmV0YWluUHRyLmg+CisKK09CSkNfQ0xB
U1MgV2ViQ0xMb2NhdGlvbk1hbmFnZXI7CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3Mg
R2VvbG9jYXRpb25Qb3NpdGlvbkRhdGE7CitjbGFzcyBSZWdpc3RyYWJsZURvbWFpbjsKKworY2xh
c3MgV0VCQ09SRV9FWFBPUlQgQ29yZUxvY2F0aW9uR2VvbG9jYXRpb25Qcm92aWRlciB7CisgICAg
V1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CitwdWJsaWM6CisgICAgY2xhc3MgQ2xpZW50IHsKKyAg
ICBwdWJsaWM6CisgICAgICAgIHZpcnR1YWwgfkNsaWVudCgpIHsgfQorCisgICAgICAgIHZpcnR1
YWwgdm9pZCBnZW9sb2NhdGlvbkF1dGhvcml6YXRpb25HcmFudGVkKGNvbnN0IFN0cmluZyYgLyp3
ZWJzaXRlSWRlbnRpZmllciovKSB7IH0KKyAgICAgICAgdmlydHVhbCB2b2lkIGdlb2xvY2F0aW9u
QXV0aG9yaXphdGlvbkRlbmllZChjb25zdCBTdHJpbmcmIC8qd2Vic2l0ZUlkZW50aWZpZXIqLykg
eyB9CisgICAgICAgIHZpcnR1YWwgdm9pZCBwb3NpdGlvbkNoYW5nZWQoY29uc3QgU3RyaW5nJiB3
ZWJzaXRlSWRlbnRpZmllciwgR2VvbG9jYXRpb25Qb3NpdGlvbkRhdGEmJikgPSAwOworICAgICAg
ICB2aXJ0dWFsIHZvaWQgZXJyb3JPY2N1cnJlZChjb25zdCBTdHJpbmcmIHdlYnNpdGVJZGVudGlm
aWVyLCBjb25zdCBTdHJpbmcmIGVycm9yTWVzc2FnZSkgPSAwOworICAgICAgICB2aXJ0dWFsIHZv
aWQgcmVzZXRHZW9sb2NhdGlvbihjb25zdCBTdHJpbmcmIHdlYnNpdGVJZGVudGlmaWVyKSA9IDA7
CisgICAgfTsKKworICAgIENvcmVMb2NhdGlvbkdlb2xvY2F0aW9uUHJvdmlkZXIoY29uc3QgUmVn
aXN0cmFibGVEb21haW4mLCBDbGllbnQmKTsKKyAgICB+Q29yZUxvY2F0aW9uR2VvbG9jYXRpb25Q
cm92aWRlcigpOworCisgICAgdm9pZCBzdGFydCgpOworICAgIHZvaWQgc3RvcCgpOworCisgICAg
dm9pZCBzZXRFbmFibGVIaWdoQWNjdXJhY3koYm9vbCk7CisKKyAgICBzdGF0aWMgdm9pZCByZXF1
ZXN0QXV0aG9yaXphdGlvbihjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYsIENvbXBsZXRpb25IYW5k
bGVyPHZvaWQoYm9vbCk+JiYpOworCitwcml2YXRlOgorICAgIFJldGFpblB0cjxXZWJDTExvY2F0
aW9uTWFuYWdlcj4gbV9sb2NhdGlvbk1hbmFnZXI7Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJD
b3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9Db3JlTG9jYXRp
b25HZW9sb2NhdGlvblByb3ZpZGVyLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2Ev
Q29yZUxvY2F0aW9uR2VvbG9jYXRpb25Qcm92aWRlci5tbQpuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4zNzM0MmY3NTYx
MTc1ZjA4YWJkMzRjNTc0ZjAyODc2ZTVkNDQ1NWRiCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvQ29yZUxvY2F0aW9uR2VvbG9jYXRpb25Qcm92aWRlci5t
bQpAQCAtMCwwICsxLDI2OCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMiBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAq
IGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICog
QU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVY
RU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbXBvcnQgImNvbmZpZy5oIgorI2lt
cG9ydCAiQ29yZUxvY2F0aW9uR2VvbG9jYXRpb25Qcm92aWRlci5oIgorCisjaW1wb3J0ICJHZW9s
b2NhdGlvblBvc2l0aW9uRGF0YS5oIgorI2ltcG9ydCAiUmVnaXN0cmFibGVEb21haW4uaCIKKyNp
bXBvcnQgPENvcmVMb2NhdGlvbi9DTExvY2F0aW9uTWFuYWdlckRlbGVnYXRlLmg+CisjaW1wb3J0
IDxDb3JlTG9jYXRpb24vQ29yZUxvY2F0aW9uLmg+CisjaW1wb3J0IDx3dGYvU29mdExpbmtpbmcu
aD4KKworI2lmIFVTRShBUFBMRV9JTlRFUk5BTF9TREspCisjaW1wb3J0IDxDb3JlTG9jYXRpb24v
Q0xMb2NhdGlvbk1hbmFnZXJfUHJpdmF0ZS5oPgorI2VuZGlmCisKK1NPRlRfTElOS19GUkFNRVdP
UksoQ29yZUxvY2F0aW9uKQorCitTT0ZUX0xJTktfQ0xBU1MoQ29yZUxvY2F0aW9uLCBDTExvY2F0
aW9uTWFuYWdlcikKK1NPRlRfTElOS19DTEFTUyhDb3JlTG9jYXRpb24sIENMTG9jYXRpb24pCisK
K1NPRlRfTElOS19DT05TVEFOVChDb3JlTG9jYXRpb24sIGtDTExvY2F0aW9uQWNjdXJhY3lCZXN0
LCBkb3VibGUpCitTT0ZUX0xJTktfQ09OU1RBTlQoQ29yZUxvY2F0aW9uLCBrQ0xMb2NhdGlvbkFj
Y3VyYWN5SHVuZHJlZE1ldGVycywgZG91YmxlKQorCisjZGVmaW5lIGtDTExvY2F0aW9uQWNjdXJh
Y3lCZXN0IGdldGtDTExvY2F0aW9uQWNjdXJhY3lCZXN0KCkKKyNkZWZpbmUga0NMTG9jYXRpb25B
Y2N1cmFjeUh1bmRyZWRNZXRlcnMgZ2V0a0NMTG9jYXRpb25BY2N1cmFjeUh1bmRyZWRNZXRlcnMo
KQorCitzdGF0aWMgYm9vbCBpc0F1dGhvcml6YXRpb25HcmFudGVkKENMQXV0aG9yaXphdGlvblN0
YXR1cyBhdXRob3JpemF0aW9uU3RhdHVzKQoreworICAgIHJldHVybiBhdXRob3JpemF0aW9uU3Rh
dHVzID09IGtDTEF1dGhvcml6YXRpb25TdGF0dXNBdXRob3JpemVkQWx3YXlzCisjaWYgSEFWRShD
T1JFX0xPQ0FUSU9OX0FVVEhPUklaRURfV0hFTl9JTl9VU0UpCisgICAgICAgIHx8IGF1dGhvcml6
YXRpb25TdGF0dXMgPT0ga0NMQXV0aG9yaXphdGlvblN0YXR1c0F1dGhvcml6ZWRXaGVuSW5Vc2UK
KyNlbmRpZgorICAgICAgICA7Cit9CisKK0BpbnRlcmZhY2UgV2ViQ0xMb2NhdGlvbk1hbmFnZXIg
OiBOU09iamVjdDxDTExvY2F0aW9uTWFuYWdlckRlbGVnYXRlPgorQGVuZAorCitAaW1wbGVtZW50
YXRpb24gV2ViQ0xMb2NhdGlvbk1hbmFnZXIgeworICAgIFJldGFpblB0cjxDTExvY2F0aW9uTWFu
YWdlcj4gX2xvY2F0aW9uTWFuYWdlcjsKKyAgICBXZWJDb3JlOjpDb3JlTG9jYXRpb25HZW9sb2Nh
dGlvblByb3ZpZGVyOjpDbGllbnQqIF9jbGllbnQ7CisgICAgU3RyaW5nIF93ZWJzaXRlSWRlbnRp
ZmllcjsKKyAgICBCT09MIF9pc1dhaXRpbmdGb3JBdXRob3JpemF0aW9uOworfQorCistIChpbnN0
YW5jZXR5cGUpaW5pdFdpdGhXZWJzaXRlSWRlbnRpZmllcjooY29uc3QgU3RyaW5nJil3ZWJzaXRl
SWRlbnRpZmllciBjbGllbnQ6KFdlYkNvcmU6OkNvcmVMb2NhdGlvbkdlb2xvY2F0aW9uUHJvdmlk
ZXI6OkNsaWVudCYpY2xpZW50Cit7CisgICAgc2VsZiA9IFtzdXBlciBpbml0XTsKKyAgICBpZiAo
IXNlbGYpCisgICAgICAgIHJldHVybiBuaWw7CisKKyAgICAvLyBGSVhNRTogQ2FsbCBpbml0V2l0
aFdlYnNpdGVJZGVudGlmaWVyIGFuZCBwYXNzIHRoZSB3ZWJzaXRlSWRlbnRpZmllciB3aGVuIEhB
VkUoQ09SRV9MT0NBVElPTl9XRUJTSVRFX0lERU5USUZJRVJTKSBhbmQgIXdlYnNpdGVJZGVudGlm
aWVyLmlzRW1wdHkoKSBvbmNlIDxyZGFyOi8vODg4MzQzMDE+IGlzIGZpeGVkLgorICAgIFVOVVNF
RF9QQVJBTSh3ZWJzaXRlSWRlbnRpZmllcik7CisgICAgX2xvY2F0aW9uTWFuYWdlciA9IGFkb3B0
TlMoW2FsbG9jQ0xMb2NhdGlvbk1hbmFnZXJJbnN0YW5jZSgpIGluaXRdKTsKKyAgICBfY2xpZW50
ID0gJmNsaWVudDsKKyAgICBfd2Vic2l0ZUlkZW50aWZpZXIgPSB3ZWJzaXRlSWRlbnRpZmllcjsK
KyAgICBbX2xvY2F0aW9uTWFuYWdlciBzZXREZWxlZ2F0ZTpzZWxmXTsKKyAgICByZXR1cm4gc2Vs
ZjsKK30KKworLSAodm9pZClkZWFsbG9jCit7CisgICAgW19sb2NhdGlvbk1hbmFnZXIgc2V0RGVs
ZWdhdGU6bmlsXTsKKyAgICBbc3VwZXIgZGVhbGxvY107Cit9CisKKy0gKHZvaWQpc3RhcnQKK3sK
KyAgICBpZiAoIVtnZXRDTExvY2F0aW9uTWFuYWdlckNsYXNzKCkgbG9jYXRpb25TZXJ2aWNlc0Vu
YWJsZWRdIHx8ICFpc0F1dGhvcml6YXRpb25HcmFudGVkKFtfbG9jYXRpb25NYW5hZ2VyIGF1dGhv
cml6YXRpb25TdGF0dXNdKSkgeworICAgICAgICBbX2xvY2F0aW9uTWFuYWdlciBzdG9wVXBkYXRp
bmdMb2NhdGlvbl07CisgICAgICAgIF9jbGllbnQtPnJlc2V0R2VvbG9jYXRpb24oX3dlYnNpdGVJ
ZGVudGlmaWVyKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIFtfbG9jYXRpb25NYW5h
Z2VyIHN0YXJ0VXBkYXRpbmdMb2NhdGlvbl07Cit9CisKKy0gKHZvaWQpc3RvcAoreworICAgIFtf
bG9jYXRpb25NYW5hZ2VyIHN0b3BVcGRhdGluZ0xvY2F0aW9uXTsKK30KKworLSAodm9pZClzZXRF
bmFibGVIaWdoQWNjdXJhY3k6KEJPT0wpaGlnaEFjY3VyYWN5RW5hYmxlZAoreworICAgIFtfbG9j
YXRpb25NYW5hZ2VyIHNldERlc2lyZWRBY2N1cmFjeTpoaWdoQWNjdXJhY3lFbmFibGVkID8ga0NM
TG9jYXRpb25BY2N1cmFjeUJlc3QgOiBrQ0xMb2NhdGlvbkFjY3VyYWN5SHVuZHJlZE1ldGVyc107
Cit9CisKKy0gKHZvaWQpcmVxdWVzdEdlb2xvY2F0aW9uQXV0aG9yaXphdGlvbgoreworICAgIGlm
ICghW2dldENMTG9jYXRpb25NYW5hZ2VyQ2xhc3MoKSBsb2NhdGlvblNlcnZpY2VzRW5hYmxlZF0p
IHsKKyAgICAgICAgX2NsaWVudC0+Z2VvbG9jYXRpb25BdXRob3JpemF0aW9uRGVuaWVkKF93ZWJz
aXRlSWRlbnRpZmllcik7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBzd2l0Y2ggKFtf
bG9jYXRpb25NYW5hZ2VyIGF1dGhvcml6YXRpb25TdGF0dXNdKSB7CisgICAgY2FzZSBrQ0xBdXRo
b3JpemF0aW9uU3RhdHVzTm90RGV0ZXJtaW5lZDogeworICAgICAgICBpZiAoIV9pc1dhaXRpbmdG
b3JBdXRob3JpemF0aW9uKSB7CisgICAgICAgICAgICBfaXNXYWl0aW5nRm9yQXV0aG9yaXphdGlv
biA9IFlFUzsKKyAgICAgICAgICAgIFtfbG9jYXRpb25NYW5hZ2VyIHJlcXVlc3RXaGVuSW5Vc2VB
dXRob3JpemF0aW9uXTsKKyAgICAgICAgfQorICAgICAgICBicmVhazsKKyAgICB9CisgICAgY2Fz
ZSBrQ0xBdXRob3JpemF0aW9uU3RhdHVzQXV0aG9yaXplZEFsd2F5czoKKyNpZiBIQVZFKENPUkVf
TE9DQVRJT05fQVVUSE9SSVpFRF9XSEVOX0lOX1VTRSkKKyAgICBjYXNlIGtDTEF1dGhvcml6YXRp
b25TdGF0dXNBdXRob3JpemVkV2hlbkluVXNlOgorI2VuZGlmCisgICAgICAgIF9jbGllbnQtPmdl
b2xvY2F0aW9uQXV0aG9yaXphdGlvbkdyYW50ZWQoX3dlYnNpdGVJZGVudGlmaWVyKTsKKyAgICAg
ICAgYnJlYWs7CisgICAgY2FzZSBrQ0xBdXRob3JpemF0aW9uU3RhdHVzUmVzdHJpY3RlZDoKKyAg
ICBjYXNlIGtDTEF1dGhvcml6YXRpb25TdGF0dXNEZW5pZWQ6CisgICAgICAgIF9jbGllbnQtPmdl
b2xvY2F0aW9uQXV0aG9yaXphdGlvbkRlbmllZChfd2Vic2l0ZUlkZW50aWZpZXIpOworICAgICAg
ICBicmVhazsKKyAgICB9Cit9CisKKy0gKHZvaWQpbG9jYXRpb25NYW5hZ2VyRGlkQ2hhbmdlQXV0
aG9yaXphdGlvbjooQ0xMb2NhdGlvbk1hbmFnZXIgKiltYW5hZ2VyCit7CisgICAgYXV0byBzdGF0
dXMgPSBbX2xvY2F0aW9uTWFuYWdlciBhdXRob3JpemF0aW9uU3RhdHVzXTsKKyAgICBpZiAoX2lz
V2FpdGluZ0ZvckF1dGhvcml6YXRpb24pIHsKKyAgICAgICAgc3dpdGNoIChzdGF0dXMpIHsKKyAg
ICAgICAgY2FzZSBrQ0xBdXRob3JpemF0aW9uU3RhdHVzTm90RGV0ZXJtaW5lZDoKKyAgICAgICAg
ICAgIC8vIFRoaXMgY2FuIGhhcHBlbiBhZnRlciByZXN1bWUgaWYgdGhlIHVzZXIgaGFzIHN0aWxs
IG5vdCBhbnN3ZXJlZCB0aGUgZGlhbG9nLiBXZSBqdXN0IGhhdmUgdG8gd2FpdCBmb3IgdGhlIHBl
cm1pc3Npb24uCisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBrQ0xBdXRob3JpemF0
aW9uU3RhdHVzRGVuaWVkOgorICAgICAgICBjYXNlIGtDTEF1dGhvcml6YXRpb25TdGF0dXNSZXN0
cmljdGVkOgorICAgICAgICAgICAgX2lzV2FpdGluZ0ZvckF1dGhvcml6YXRpb24gPSBOTzsKKyAg
ICAgICAgICAgIF9jbGllbnQtPmdlb2xvY2F0aW9uQXV0aG9yaXphdGlvbkRlbmllZChfd2Vic2l0
ZUlkZW50aWZpZXIpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2Uga0NMQXV0aG9y
aXphdGlvblN0YXR1c0F1dGhvcml6ZWRBbHdheXM6CisjaWYgSEFWRShDT1JFX0xPQ0FUSU9OX0FV
VEhPUklaRURfV0hFTl9JTl9VU0UpCisgICAgICAgIGNhc2Uga0NMQXV0aG9yaXphdGlvblN0YXR1
c0F1dGhvcml6ZWRXaGVuSW5Vc2U6CisjZW5kaWYKKyAgICAgICAgICAgIF9pc1dhaXRpbmdGb3JB
dXRob3JpemF0aW9uID0gTk87CisgICAgICAgICAgICBfY2xpZW50LT5nZW9sb2NhdGlvbkF1dGhv
cml6YXRpb25HcmFudGVkKF93ZWJzaXRlSWRlbnRpZmllcik7CisgICAgICAgICAgICBicmVhazsK
KyAgICAgICAgfQorICAgIH0gZWxzZSB7CisgICAgICAgIGlmIChzdGF0dXMgPT0ga0NMQXV0aG9y
aXphdGlvblN0YXR1c0RlbmllZCB8fCBzdGF0dXMgPT0ga0NMQXV0aG9yaXphdGlvblN0YXR1c1Jl
c3RyaWN0ZWQpIHsKKyAgICAgICAgICAgIFtfbG9jYXRpb25NYW5hZ2VyIHN0b3BVcGRhdGluZ0xv
Y2F0aW9uXTsKKyAgICAgICAgICAgIF9jbGllbnQtPnJlc2V0R2VvbG9jYXRpb24oX3dlYnNpdGVJ
ZGVudGlmaWVyKTsKKyAgICAgICAgfQorICAgIH0KK30KKworLSAodm9pZClsb2NhdGlvbk1hbmFn
ZXI6KENMTG9jYXRpb25NYW5hZ2VyICopbWFuYWdlciBkaWRVcGRhdGVMb2NhdGlvbnM6KE5TQXJy
YXkgKilsb2NhdGlvbnMKK3sKKyAgICBVTlVTRURfUEFSQU0obWFuYWdlcik7CisgICAgZm9yIChD
TExvY2F0aW9uICpsb2NhdGlvbiBpbiBsb2NhdGlvbnMpCisgICAgICAgIF9jbGllbnQtPnBvc2l0
aW9uQ2hhbmdlZChfd2Vic2l0ZUlkZW50aWZpZXIsIFdlYkNvcmU6Okdlb2xvY2F0aW9uUG9zaXRp
b25EYXRhIHsgbG9jYXRpb24gfSk7Cit9CisKKy0gKHZvaWQpbG9jYXRpb25NYW5hZ2VyOihDTExv
Y2F0aW9uTWFuYWdlciAqKW1hbmFnZXIgZGlkRmFpbFdpdGhFcnJvcjooTlNFcnJvciAqKWVycm9y
Cit7CisgICAgQVNTRVJUKGVycm9yKTsKKyAgICBVTlVTRURfUEFSQU0obWFuYWdlcik7CisKKyAg
ICBpZiAoW2Vycm9yIGNvZGVdID09IGtDTEVycm9yRGVuaWVkKSB7CisgICAgICAgIC8vIElnbm9y
ZSB0aGUgZXJyb3IgaGVyZSBhbmQgbGV0IGxvY2F0aW9uTWFuYWdlcjpkaWRDaGFuZ2VBdXRob3Jp
emF0aW9uU3RhdHVzOiBoYW5kbGUgdGhlIHBlcm1pc3Npb24uCisgICAgICAgIHJldHVybjsKKyAg
ICB9CisKKyAgICBOU1N0cmluZyAqZXJyb3JNZXNzYWdlID0gW2Vycm9yIGxvY2FsaXplZERlc2Ny
aXB0aW9uXTsKKyAgICBfY2xpZW50LT5lcnJvck9jY3VycmVkKF93ZWJzaXRlSWRlbnRpZmllciwg
ZXJyb3JNZXNzYWdlKTsKK30KKworQGVuZAorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK0NvcmVM
b2NhdGlvbkdlb2xvY2F0aW9uUHJvdmlkZXI6OkNvcmVMb2NhdGlvbkdlb2xvY2F0aW9uUHJvdmlk
ZXIoY29uc3QgUmVnaXN0cmFibGVEb21haW4mIHJlZ2lzdHJhYmxlRG9tYWluLCBDbGllbnQmIGNs
aWVudCkKKyAgICA6IG1fbG9jYXRpb25NYW5hZ2VyKGFkb3B0TlMoW1tXZWJDTExvY2F0aW9uTWFu
YWdlciBhbGxvY10gaW5pdFdpdGhXZWJzaXRlSWRlbnRpZmllcjpyZWdpc3RyYWJsZURvbWFpbi5z
dHJpbmcoKSBjbGllbnQ6Y2xpZW50XSkpCit7CisgICAgLy8gUmVxdWVzdCBwZXJtaXNzaW9uIGZv
ciB0aGUgYXBwIHRvIHVzZSBnZW9sb2NhdGlvbiAoaWYgaXQgZG9lc24ndCBhbHJlYWR5KS4KKyAg
ICBbbV9sb2NhdGlvbk1hbmFnZXIgcmVxdWVzdEdlb2xvY2F0aW9uQXV0aG9yaXphdGlvbl07Cit9
CisKK0NvcmVMb2NhdGlvbkdlb2xvY2F0aW9uUHJvdmlkZXI6On5Db3JlTG9jYXRpb25HZW9sb2Nh
dGlvblByb3ZpZGVyKCkKK3sKKyAgICBbbV9sb2NhdGlvbk1hbmFnZXIgc3RvcF07Cit9CisKK3Zv
aWQgQ29yZUxvY2F0aW9uR2VvbG9jYXRpb25Qcm92aWRlcjo6c3RhcnQoKQoreworICAgIFttX2xv
Y2F0aW9uTWFuYWdlciBzdGFydF07Cit9CisKK3ZvaWQgQ29yZUxvY2F0aW9uR2VvbG9jYXRpb25Q
cm92aWRlcjo6c3RvcCgpCit7CisgICAgW21fbG9jYXRpb25NYW5hZ2VyIHN0b3BdOworfQorCit2
b2lkIENvcmVMb2NhdGlvbkdlb2xvY2F0aW9uUHJvdmlkZXI6OnNldEVuYWJsZUhpZ2hBY2N1cmFj
eShib29sIGhpZ2hBY2N1cmFjeUVuYWJsZWQpCit7CisgICAgW21fbG9jYXRpb25NYW5hZ2VyIHNl
dEVuYWJsZUhpZ2hBY2N1cmFjeTpoaWdoQWNjdXJhY3lFbmFibGVkXTsKK30KKworY2xhc3MgQXV0
aG9yaXphdGlvbkNoZWNrZXIgZmluYWwgOiBwdWJsaWMgUmVmQ291bnRlZDxBdXRob3JpemF0aW9u
Q2hlY2tlcj4sIHB1YmxpYyBDb3JlTG9jYXRpb25HZW9sb2NhdGlvblByb3ZpZGVyOjpDbGllbnQg
eworcHVibGljOgorICAgIHN0YXRpYyBSZWY8QXV0aG9yaXphdGlvbkNoZWNrZXI+IGNyZWF0ZSgp
CisgICAgeworICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBBdXRob3JpemF0aW9uQ2hlY2tl
cik7CisgICAgfQorCisgICAgdm9pZCBjaGVjayhjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYgcmVn
aXN0cmFibGVEb21haW4sIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYgY29tcGxldGlv
bkhhbmRsZXIpCisgICAgeworICAgICAgICBtX2NvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShj
b21wbGV0aW9uSGFuZGxlcik7CisgICAgICAgIG1fcHJvdmlkZXIgPSBtYWtlVW5pcXVlPENvcmVM
b2NhdGlvbkdlb2xvY2F0aW9uUHJvdmlkZXI+KHJlZ2lzdHJhYmxlRG9tYWluLCAqdGhpcyk7Cisg
ICAgfQorCitwcml2YXRlOgorICAgIEF1dGhvcml6YXRpb25DaGVja2VyKCkgPSBkZWZhdWx0Owor
CisgICAgdm9pZCBnZW9sb2NhdGlvbkF1dGhvcml6YXRpb25HcmFudGVkKGNvbnN0IFN0cmluZyYp
IGZpbmFsCisgICAgeworICAgICAgICBpZiAobV9jb21wbGV0aW9uSGFuZGxlcikKKyAgICAgICAg
ICAgIG1fY29tcGxldGlvbkhhbmRsZXIodHJ1ZSk7CisgICAgfQorCisgICAgdm9pZCBnZW9sb2Nh
dGlvbkF1dGhvcml6YXRpb25EZW5pZWQoY29uc3QgU3RyaW5nJikgZmluYWwKKyAgICB7CisgICAg
ICAgIGlmIChtX2NvbXBsZXRpb25IYW5kbGVyKQorICAgICAgICAgICAgbV9jb21wbGV0aW9uSGFu
ZGxlcihmYWxzZSk7CisgICAgfQorCisgICAgdm9pZCBwb3NpdGlvbkNoYW5nZWQoY29uc3QgU3Ry
aW5nJiwgR2VvbG9jYXRpb25Qb3NpdGlvbkRhdGEmJikgZmluYWwgeyB9CisgICAgdm9pZCBlcnJv
ck9jY3VycmVkKGNvbnN0IFN0cmluZyYsIGNvbnN0IFN0cmluZyYpIGZpbmFsCisgICAgeworICAg
ICAgICBpZiAobV9jb21wbGV0aW9uSGFuZGxlcikKKyAgICAgICAgICAgIG1fY29tcGxldGlvbkhh
bmRsZXIoZmFsc2UpOworICAgIH0KKyAgICB2b2lkIHJlc2V0R2VvbG9jYXRpb24oY29uc3QgU3Ry
aW5nJikgZmluYWwgeyB9CisKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8Q29yZUxvY2F0aW9uR2VvbG9j
YXRpb25Qcm92aWRlcj4gbV9wcm92aWRlcjsKKyAgICBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJv
b2wpPiBtX2NvbXBsZXRpb25IYW5kbGVyOworfTsKKwordm9pZCBDb3JlTG9jYXRpb25HZW9sb2Nh
dGlvblByb3ZpZGVyOjpyZXF1ZXN0QXV0aG9yaXphdGlvbihjb25zdCBSZWdpc3RyYWJsZURvbWFp
biYgcmVnaXN0cmFibGVEb21haW4sIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYgY29t
cGxldGlvbkhhbmRsZXIpCit7CisgICAgYXV0byBhdXRob3JpemF0aW9uQ2hlY2tlciA9IEF1dGhv
cml6YXRpb25DaGVja2VyOjpjcmVhdGUoKTsKKyAgICBhdXRob3JpemF0aW9uQ2hlY2tlci0+Y2hl
Y2socmVnaXN0cmFibGVEb21haW4sIFthdXRob3JpemF0aW9uQ2hlY2tlciwgY29tcGxldGlvbkhh
bmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0oYm9vbCBhdXRob3JpemVkKSBtdXRh
YmxlIHsKKyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoYXV0aG9yaXplZCk7CisgICAgfSk7Cit9
CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL21vY2svR2VvbG9jYXRpb25DbGllbnRNb2NrLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL21vY2svR2VvbG9jYXRpb25DbGllbnRNb2NrLmNwcAppbmRleCA5ZDVlZmM4M2YzNGVi
MThkNTk5ZGMxMGNhYThmYzBjYTM5OWRiMGEyLi5mYTQyMDgyZTUwNTlhOWVjZjI2NGNhYWY0YzI2
NTMyZjRiMmU1ZDdhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL0dl
b2xvY2F0aW9uQ2xpZW50TW9jay5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9j
ay9HZW9sb2NhdGlvbkNsaWVudE1vY2suY3BwCkBAIC0xMzYsMTAgKzEzNiwxMSBAQCB2b2lkIEdl
b2xvY2F0aW9uQ2xpZW50TW9jazo6Z2VvbG9jYXRpb25EZXN0cm95ZWQoKQogICAgIEFTU0VSVCgh
bV9pc0FjdGl2ZSk7CiB9CiAKLXZvaWQgR2VvbG9jYXRpb25DbGllbnRNb2NrOjpzdGFydFVwZGF0
aW5nKGNvbnN0IFN0cmluZyYgYXV0aG9yaXphdGlvblRva2VuKQordm9pZCBHZW9sb2NhdGlvbkNs
aWVudE1vY2s6OnN0YXJ0VXBkYXRpbmcoY29uc3QgU3RyaW5nJiBhdXRob3JpemF0aW9uVG9rZW4s
IGJvb2wgZW5hYmxlSGlnaEFjY3VyYWN5KQogewogICAgIEFTU0VSVCghbV9pc0FjdGl2ZSk7CiAg
ICAgVU5VU0VEX1BBUkFNKGF1dGhvcml6YXRpb25Ub2tlbik7CisgICAgVU5VU0VEX1BBUkFNKGVu
YWJsZUhpZ2hBY2N1cmFjeSk7CiAgICAgbV9pc0FjdGl2ZSA9IHRydWU7CiAgICAgYXN5bmNVcGRh
dGVDb250cm9sbGVyKCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9t
b2NrL0dlb2xvY2F0aW9uQ2xpZW50TW9jay5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9j
ay9HZW9sb2NhdGlvbkNsaWVudE1vY2suaAppbmRleCAyZmE3NWUwNTdhNTNkN2U4MThjY2ZhZmVl
NzAyNDNkZDU0ODIxODQ1Li5mOGJhYzM4YjViNmNjYzhjYzA4Zjg3MDcxZWJjNzVkNjViMzEwNjQw
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL0dlb2xvY2F0aW9uQ2xp
ZW50TW9jay5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svR2VvbG9jYXRpb25D
bGllbnRNb2NrLmgKQEAgLTU5LDcgKzU5LDcgQEAgcHVibGljOgogCiAgICAgLy8gR2VvbG9jYXRp
b25DbGllbnQKICAgICB2b2lkIGdlb2xvY2F0aW9uRGVzdHJveWVkKCkgb3ZlcnJpZGU7Ci0gICAg
dm9pZCBzdGFydFVwZGF0aW5nKGNvbnN0IFN0cmluZyYgYXV0aG9yaXphdGlvblRva2VuKSBvdmVy
cmlkZTsKKyAgICB2b2lkIHN0YXJ0VXBkYXRpbmcoY29uc3QgU3RyaW5nJiBhdXRob3JpemF0aW9u
VG9rZW4sIGJvb2wgZW5hYmxlSGlnaEFjY3VyYWN5KSBvdmVycmlkZTsKICAgICB2b2lkIHN0b3BV
cGRhdGluZygpIG92ZXJyaWRlOwogICAgIHZvaWQgc2V0RW5hYmxlSGlnaEFjY3VyYWN5KGJvb2wp
IG92ZXJyaWRlOwogICAgIHN0ZDo6b3B0aW9uYWw8R2VvbG9jYXRpb25Qb3NpdGlvbkRhdGE+IGxh
c3RQb3NpdGlvbigpIG92ZXJyaWRlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9Tb3VyY2Vz
Q29jb2EudHh0IGIvU291cmNlL1dlYktpdC9Tb3VyY2VzQ29jb2EudHh0CmluZGV4IDJhY2RhOTQx
ZWNkZjRiY2JlN2ZlOTRhNTE4MTc0OTFmMWMwYmYzOWEuLjM5ZmVhOTFjZTU2MTc1ODE2MGFkOTIx
ODk4OTQ1M2U1ODNlZDY0NjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU291cmNlc0NvY29h
LnR4dAorKysgYi9Tb3VyY2UvV2ViS2l0L1NvdXJjZXNDb2NvYS50eHQKQEAgLTQyNyw2ICs0Mjcs
NyBAQCBVSVByb2Nlc3MvQ29jb2EvVUlSZW1vdGVPYmplY3RSZWdpc3RyeS5jcHAKIFVJUHJvY2Vz
cy9Db2NvYS9Vc2VyTWVkaWFDYXB0dXJlTWFuYWdlclByb3h5LmNwcAogVUlQcm9jZXNzL0NvY29h
L1VzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlclByb3h5Lm1tCiBVSVByb2Nlc3MvQ29j
b2EvVmlkZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5Lm1tCitVSVByb2Nlc3MvQ29jb2EvV2ViR2Vv
bG9jYXRpb25NYW5hZ2VyUHJveHlDb2NvYS5jcHAKIFVJUHJvY2Vzcy9Db2NvYS9XZWJQYWdlUHJv
eHlDb2NvYS5tbQogVUlQcm9jZXNzL0NvY29hL1dlYlBhc3RlYm9hcmRQcm94eUNvY29hLm1tCiBV
SVByb2Nlc3MvQ29jb2EvV2ViUHJlZmVyZW5jZXNDb2NvYS5tbQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV2ViR2VvbG9jYXRpb25NYW5hZ2VyUHJveHlDb2NvYS5j
cHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XZWJHZW9sb2NhdGlvbk1hbmFnZXJQ
cm94eUNvY29hLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5mMGJmYmRlOTMyMjJiMTA1N2YxNzM2YjcyOTIyMDEy
MzJiMDI1NjhmCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29j
b2EvV2ViR2VvbG9jYXRpb25NYW5hZ2VyUHJveHlDb2NvYS5jcHAKQEAgLTAsMCArMSw3NiBAQAor
LyoKKyAqIENvcHlyaWdodCAoQykgMjAyMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0
cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMu
IEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUg
SU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBB
UFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNF
UVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVN
RU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFU
QSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJXZWJHZW9sb2NhdGlv
bk1hbmFnZXJQcm94eS5oIgorCisjaW5jbHVkZSAiV2ViR2VvbG9jYXRpb25NYW5hZ2VyTWVzc2Fn
ZXMuaCIKKyNpbmNsdWRlICJXZWJQcm9jZXNzUHJveHkuaCIKKworbmFtZXNwYWNlIFdlYktpdCB7
CisKKy8vIEZJWE1FOiBUaGlzIHNob3VsZCBiZSB1c2VkIGJ5IGFsbCBDb2NvYSBwb3J0cworI2lm
IFBMQVRGT1JNKElPU19GQU1JTFkpCisKK3ZvaWQgV2ViR2VvbG9jYXRpb25NYW5hZ2VyUHJveHk6
OnBvc2l0aW9uQ2hhbmdlZChjb25zdCBTdHJpbmcmIHdlYnNpdGVJZGVudGlmaWVyLCBXZWJDb3Jl
OjpHZW9sb2NhdGlvblBvc2l0aW9uRGF0YSYmIHBvc2l0aW9uKQoreworICAgIGF1dG8gcmVnaXN0
cmFibGVEb21haW4gPSBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbjo6dW5jaGVja2VkQ3JlYXRl
RnJvbVJlZ2lzdHJhYmxlRG9tYWluU3RyaW5nKHdlYnNpdGVJZGVudGlmaWVyKTsKKyAgICBhdXRv
IGl0ID0gbV9wZXJEb21haW5EYXRhLmZpbmQocmVnaXN0cmFibGVEb21haW4pOworICAgIGlmIChp
dCA9PSBtX3BlckRvbWFpbkRhdGEuZW5kKCkpCisgICAgICAgIHJldHVybjsKKworICAgIGF1dG8m
IHBlckRvbWFpbkRhdGEgPSAqaXQtPnZhbHVlOworICAgIHBlckRvbWFpbkRhdGEubGFzdFBvc2l0
aW9uID0gV1RGTW92ZShwb3NpdGlvbik7CisgICAgZm9yIChhdXRvJiB3ZWJQcm9jZXNzUHJveHkg
OiBwZXJEb21haW5EYXRhLndhdGNoZXJzKQorICAgICAgICB3ZWJQcm9jZXNzUHJveHkuc2VuZChN
ZXNzYWdlczo6V2ViR2VvbG9jYXRpb25NYW5hZ2VyOjpEaWRDaGFuZ2VQb3NpdGlvbihyZWdpc3Ry
YWJsZURvbWFpbiwgcGVyRG9tYWluRGF0YS5sYXN0UG9zaXRpb24udmFsdWUoKSksIDApOworfQor
Cit2b2lkIFdlYkdlb2xvY2F0aW9uTWFuYWdlclByb3h5OjplcnJvck9jY3VycmVkKGNvbnN0IFN0
cmluZyYgd2Vic2l0ZUlkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgZXJyb3JNZXNzYWdlKQorewor
ICAgIGF1dG8gcmVnaXN0cmFibGVEb21haW4gPSBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbjo6
dW5jaGVja2VkQ3JlYXRlRnJvbVJlZ2lzdHJhYmxlRG9tYWluU3RyaW5nKHdlYnNpdGVJZGVudGlm
aWVyKTsKKyAgICBhdXRvIGl0ID0gbV9wZXJEb21haW5EYXRhLmZpbmQocmVnaXN0cmFibGVEb21h
aW4pOworICAgIGlmIChpdCA9PSBtX3BlckRvbWFpbkRhdGEuZW5kKCkpCisgICAgICAgIHJldHVy
bjsKKworICAgIGF1dG8mIHBlckRvbWFpbkRhdGEgPSAqaXQtPnZhbHVlOworICAgIGZvciAoYXV0
byYgd2ViUHJvY2Vzc1Byb3h5IDogcGVyRG9tYWluRGF0YS53YXRjaGVycykKKyAgICAgICAgd2Vi
UHJvY2Vzc1Byb3h5LnNlbmQoTWVzc2FnZXM6OldlYkdlb2xvY2F0aW9uTWFuYWdlcjo6RGlkRmFp
bFRvRGV0ZXJtaW5lUG9zaXRpb24ocmVnaXN0cmFibGVEb21haW4sIGVycm9yTWVzc2FnZSksIDAp
OworfQorCit2b2lkIFdlYkdlb2xvY2F0aW9uTWFuYWdlclByb3h5OjpyZXNldEdlb2xvY2F0aW9u
KGNvbnN0IFN0cmluZyYgd2Vic2l0ZUlkZW50aWZpZXIpCit7CisgICAgYXV0byByZWdpc3RyYWJs
ZURvbWFpbiA9IFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluOjp1bmNoZWNrZWRDcmVhdGVGcm9t
UmVnaXN0cmFibGVEb21haW5TdHJpbmcod2Vic2l0ZUlkZW50aWZpZXIpOworICAgIGF1dG8gaXQg
PSBtX3BlckRvbWFpbkRhdGEuZmluZChyZWdpc3RyYWJsZURvbWFpbik7CisgICAgaWYgKGl0ID09
IG1fcGVyRG9tYWluRGF0YS5lbmQoKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgYXV0byYgcGVy
RG9tYWluRGF0YSA9ICppdC0+dmFsdWU7CisgICAgZm9yIChhdXRvJiB3ZWJQcm9jZXNzUHJveHkg
OiBwZXJEb21haW5EYXRhLndhdGNoZXJzKQorICAgICAgICB3ZWJQcm9jZXNzUHJveHkuc2VuZChN
ZXNzYWdlczo6V2ViR2VvbG9jYXRpb25NYW5hZ2VyOjpSZXNldFBlcm1pc3Npb25zKHJlZ2lzdHJh
YmxlRG9tYWluKSwgMCk7Cit9CisKKyNlbmRpZgorCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkNvbnRleHRTdXBwbGVtZW50Lmgg
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJDb250ZXh0U3VwcGxlbWVudC5oCmluZGV4IGVk
NTViNDAzZGIyOWY5NDAwNDM4YmEzMmE2MGM3NTgyNzQ5MzRmYTYuLmVjMTljZGNjY2JiNDBmOTJk
NTgzNWYzZWE2MDMxYmRkYTQ3N2E4ZTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL1dlYkNvbnRleHRTdXBwbGVtZW50LmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
V2ViQ29udGV4dFN1cHBsZW1lbnQuaApAQCAtNDcsMTQgKzQ3LDYgQEAgcHVibGljOgogICAgIHsK
ICAgICB9CiAKLSAgICB2aXJ0dWFsIHZvaWQgcHJvY2Vzc0RpZENsb3NlKFdlYlByb2Nlc3NQcm94
eSopCi0gICAgewotICAgIH0KLQotICAgIHZpcnR1YWwgdm9pZCBwcm9jZXNzRGlkQ2xvc2UoTmV0
d29ya1Byb2Nlc3NQcm94eSopCi0gICAgewotICAgIH0KLQogICAgIFdlYlByb2Nlc3NQb29sKiBw
cm9jZXNzUG9vbCgpIGNvbnN0IHsgcmV0dXJuIG1fcHJvY2Vzc1Bvb2w7IH0KICAgICB2b2lkIGNs
ZWFyUHJvY2Vzc1Bvb2woKSB7IG1fcHJvY2Vzc1Bvb2wgPSBudWxscHRyOyB9CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkdlb2xvY2F0aW9uTWFuYWdlclByb3h5LmNw
cCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkdlb2xvY2F0aW9uTWFuYWdlclByb3h5LmNw
cAppbmRleCAwNGYzMjI3Y2Q1NWM5OTJhNDJjZDk2YTNmMjVkNjk3YWVkNzk2NWEyLi5mMjUyN2Rh
YTM5ZDMwN2VlNDljNTc3Yjc5OGYyZjU4ZjQ0MmJhMjFkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9XZWJHZW9sb2NhdGlvbk1hbmFnZXJQcm94eS5jcHAKKysrIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvV2ViR2VvbG9jYXRpb25NYW5hZ2VyUHJveHkuY3BwCkBAIC0xLDUg
KzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMSwgMjAxMiwgMjAxMyBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEtMjAyMiBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
QEAgLTM0LDEwICszNCwxNSBAQAogI2luY2x1ZGUgIldlYlBhZ2VQcm94eS5oIgogI2luY2x1ZGUg
IldlYlByb2Nlc3NQb29sLmgiCiAKLSNkZWZpbmUgTUVTU0FHRV9DSEVDSyhhc3NlcnRpb24pIE1F
U1NBR0VfQ0hFQ0tfQkFTRShhc3NlcnRpb24sICgmY29ubmVjdGlvbikpCisjZGVmaW5lIE1FU1NB
R0VfQ0hFQ0soY29ubmVjdGlvbiwgYXNzZXJ0aW9uKSBNRVNTQUdFX0NIRUNLX0JBU0UoYXNzZXJ0
aW9uLCAoY29ubmVjdGlvbikpCiAKIG5hbWVzcGFjZSBXZWJLaXQgewogCitzdGF0aWMgaW5saW5l
IFdlYlByb2Nlc3NQcm94eSYgY29ubmVjdGlvblRvV2ViUHJvY2Vzc1Byb3h5KGNvbnN0IElQQzo6
Q29ubmVjdGlvbiYgY29ubmVjdGlvbikKK3sKKyAgICByZXR1cm4gc3RhdGljX2Nhc3Q8V2ViUHJv
Y2Vzc1Byb3h5Jj4oY29ubmVjdGlvbi5jbGllbnQoKSk7Cit9CisKIGNvbnN0IGNoYXIqIFdlYkdl
b2xvY2F0aW9uTWFuYWdlclByb3h5OjpzdXBwbGVtZW50TmFtZSgpCiB7CiAgICAgcmV0dXJuICJX
ZWJHZW9sb2NhdGlvbk1hbmFnZXJQcm94eSI7CkBAIC01MCwzNCArNTUsMzggQEAgUmVmPFdlYkdl
b2xvY2F0aW9uTWFuYWdlclByb3h5PiBXZWJHZW9sb2NhdGlvbk1hbmFnZXJQcm94eTo6Y3JlYXRl
KFdlYlByb2Nlc3NQb28KIAogV2ViR2VvbG9jYXRpb25NYW5hZ2VyUHJveHk6OldlYkdlb2xvY2F0
aW9uTWFuYWdlclByb3h5KFdlYlByb2Nlc3NQb29sKiBwcm9jZXNzUG9vbCkKICAgICA6IFdlYkNv
bnRleHRTdXBwbGVtZW50KHByb2Nlc3NQb29sKQotICAgICwgbV9wcm92aWRlcihtYWtlVW5pcXVl
PEFQSTo6R2VvbG9jYXRpb25Qcm92aWRlcj4oKSkKIHsKICAgICBXZWJDb250ZXh0U3VwcGxlbWVu
dDo6cHJvY2Vzc1Bvb2woKS0+YWRkTWVzc2FnZVJlY2VpdmVyKE1lc3NhZ2VzOjpXZWJHZW9sb2Nh
dGlvbk1hbmFnZXJQcm94eTo6bWVzc2FnZVJlY2VpdmVyTmFtZSgpLCAqdGhpcyk7CiB9CiAKK1dl
Ykdlb2xvY2F0aW9uTWFuYWdlclByb3h5Ojp+V2ViR2VvbG9jYXRpb25NYW5hZ2VyUHJveHkoKSA9
IGRlZmF1bHQ7CisKIHZvaWQgV2ViR2VvbG9jYXRpb25NYW5hZ2VyUHJveHk6OnNldFByb3ZpZGVy
KHN0ZDo6dW5pcXVlX3B0cjxBUEk6Okdlb2xvY2F0aW9uUHJvdmlkZXI+JiYgcHJvdmlkZXIpCiB7
Ci0gICAgaWYgKCFwcm92aWRlcikKLSAgICAgICAgbV9wcm92aWRlciA9IG1ha2VVbmlxdWU8QVBJ
OjpHZW9sb2NhdGlvblByb3ZpZGVyPigpOwotICAgIGVsc2UKLSAgICAgICAgbV9wcm92aWRlciA9
IFdURk1vdmUocHJvdmlkZXIpOworICAgIG1fY2xpZW50UHJvdmlkZXIgPSBXVEZNb3ZlKHByb3Zp
ZGVyKTsKIH0KIAogLy8gV2ViQ29udGV4dFN1cHBsZW1lbnQKIAogdm9pZCBXZWJHZW9sb2NhdGlv
bk1hbmFnZXJQcm94eTo6cHJvY2Vzc1Bvb2xEZXN0cm95ZWQoKQogewotICAgIGJvb2wgd2FzVXBk
YXRpbmcgPSBpc1VwZGF0aW5nKCk7Ci0gICAgbV91cGRhdGVSZXF1ZXN0ZXJzLmNsZWFyKCk7Cisg
ICAgaWYgKG1fcGVyRG9tYWluRGF0YS5pc0VtcHR5KCkpCisgICAgICAgIHJldHVybjsKIAotICAg
IEFTU0VSVCghaXNVcGRhdGluZygpKTsKLSAgICBpZiAod2FzVXBkYXRpbmcpCi0gICAgICAgIG1f
cHJvdmlkZXItPnN0b3BVcGRhdGluZygqdGhpcyk7CisgICAgbV9wZXJEb21haW5EYXRhLmNsZWFy
KCk7CisgICAgaWYgKG1fY2xpZW50UHJvdmlkZXIpCisgICAgICAgIG1fY2xpZW50UHJvdmlkZXIt
PnN0b3BVcGRhdGluZygqdGhpcyk7CiB9CiAKLXZvaWQgV2ViR2VvbG9jYXRpb25NYW5hZ2VyUHJv
eHk6OnByb2Nlc3NEaWRDbG9zZShXZWJQcm9jZXNzUHJveHkqIHdlYlByb2Nlc3NQcm94eSkKK3Zv
aWQgV2ViR2VvbG9jYXRpb25NYW5hZ2VyUHJveHk6OndlYlByb2Nlc3NJc0dvaW5nQXdheShXZWJQ
cm9jZXNzUHJveHkmIHByb3h5KQogewotICAgIHJlbW92ZVJlcXVlc3Rlcih3ZWJQcm9jZXNzUHJv
eHkpOworICAgIFZlY3RvcjxXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbj4gYWZmZWN0ZWREb21h
aW5zOworICAgIGZvciAoYXV0byYgW3JlZ2lzdHJhYmxlRG9tYWluLCBwZXJEb21haW5EYXRhXSA6
IG1fcGVyRG9tYWluRGF0YSkgeworICAgICAgICBpZiAocGVyRG9tYWluRGF0YS0+d2F0Y2hlcnMu
Y29udGFpbnMocHJveHkpKQorICAgICAgICAgICAgYWZmZWN0ZWREb21haW5zLmFwcGVuZChyZWdp
c3RyYWJsZURvbWFpbik7CisgICAgfQorICAgIGZvciAoYXV0byYgcmVnaXN0cmFibGVEb21haW4g
OiBhZmZlY3RlZERvbWFpbnMpCisgICAgICAgIHN0b3BVcGRhdGluZ1dpdGhQcm94eShwcm94eSwg
cmVnaXN0cmFibGVEb21haW4pOwogfQogCiB2b2lkIFdlYkdlb2xvY2F0aW9uTWFuYWdlclByb3h5
OjpyZWZXZWJDb250ZXh0U3VwcGxlbWVudCgpCkBAIC05Miw4MCArMTAxLDIwMCBAQCB2b2lkIFdl
Ykdlb2xvY2F0aW9uTWFuYWdlclByb3h5OjpkZXJlZldlYkNvbnRleHRTdXBwbGVtZW50KCkKIAog
dm9pZCBXZWJHZW9sb2NhdGlvbk1hbmFnZXJQcm94eTo6cHJvdmlkZXJEaWRDaGFuZ2VQb3NpdGlv
bihXZWJHZW9sb2NhdGlvblBvc2l0aW9uKiBwb3NpdGlvbikKIHsKLSAgICBtX2xhc3RQb3NpdGlv
biA9IHBvc2l0aW9uLT5jb3JlUG9zaXRpb24oKTsKLQotICAgIGlmICghcHJvY2Vzc1Bvb2woKSkK
LSAgICAgICAgcmV0dXJuOwotCi0gICAgcHJvY2Vzc1Bvb2woKS0+c2VuZFRvQWxsUHJvY2Vzc2Vz
KE1lc3NhZ2VzOjpXZWJHZW9sb2NhdGlvbk1hbmFnZXI6OkRpZENoYW5nZVBvc2l0aW9uKG1fbGFz
dFBvc2l0aW9uLnZhbHVlKCkpKTsKKyAgICBmb3IgKGF1dG8mIFtyZWdpc3RyYWJsZURvbWFpbiwg
cGVyRG9tYWluRGF0YV0gOiBtX3BlckRvbWFpbkRhdGEpIHsKKyAgICAgICAgcGVyRG9tYWluRGF0
YS0+bGFzdFBvc2l0aW9uID0gcG9zaXRpb24tPmNvcmVQb3NpdGlvbigpOworICAgICAgICBmb3Ig
KGF1dG8mIHByb2Nlc3MgOiBwZXJEb21haW5EYXRhLT53YXRjaGVycykKKyAgICAgICAgICAgIHBy
b2Nlc3Muc2VuZChNZXNzYWdlczo6V2ViR2VvbG9jYXRpb25NYW5hZ2VyOjpEaWRDaGFuZ2VQb3Np
dGlvbihyZWdpc3RyYWJsZURvbWFpbiwgcGVyRG9tYWluRGF0YS0+bGFzdFBvc2l0aW9uLnZhbHVl
KCkpLCAwKTsKKyAgICB9CiB9CiAKIHZvaWQgV2ViR2VvbG9jYXRpb25NYW5hZ2VyUHJveHk6OnBy
b3ZpZGVyRGlkRmFpbFRvRGV0ZXJtaW5lUG9zaXRpb24oY29uc3QgU3RyaW5nJiBlcnJvck1lc3Nh
Z2UpCiB7Ci0gICAgaWYgKCFwcm9jZXNzUG9vbCgpKQotICAgICAgICByZXR1cm47Ci0KLSAgICBw
cm9jZXNzUG9vbCgpLT5zZW5kVG9BbGxQcm9jZXNzZXMoTWVzc2FnZXM6OldlYkdlb2xvY2F0aW9u
TWFuYWdlcjo6RGlkRmFpbFRvRGV0ZXJtaW5lUG9zaXRpb24oZXJyb3JNZXNzYWdlKSk7CisgICAg
Zm9yIChhdXRvJiBbcmVnaXN0cmFibGVEb21haW4sIHBlckRvbWFpbkRhdGFdIDogbV9wZXJEb21h
aW5EYXRhKSB7CisgICAgICAgIGZvciAoYXV0byYgcHJveHkgOiBwZXJEb21haW5EYXRhLT53YXRj
aGVycykKKyAgICAgICAgICAgIHByb3h5LnNlbmQoTWVzc2FnZXM6OldlYkdlb2xvY2F0aW9uTWFu
YWdlcjo6RGlkRmFpbFRvRGV0ZXJtaW5lUG9zaXRpb24ocmVnaXN0cmFibGVEb21haW4sIGVycm9y
TWVzc2FnZSksIDApOworICAgIH0KIH0KIAogI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiB2b2lk
IFdlYkdlb2xvY2F0aW9uTWFuYWdlclByb3h5OjpyZXNldFBlcm1pc3Npb25zKCkKIHsKLSAgICBw
cm9jZXNzUG9vbCgpLT5zZW5kVG9BbGxQcm9jZXNzZXMoTWVzc2FnZXM6OldlYkdlb2xvY2F0aW9u
TWFuYWdlcjo6UmVzZXRQZXJtaXNzaW9ucygpKTsKKyAgICBBU1NFUlQobV9jbGllbnRQcm92aWRl
cik7CisgICAgZm9yIChhdXRvJiBbcmVnaXN0cmFibGVEb21haW4sIHBlckRvbWFpbkRhdGFdIDog
bV9wZXJEb21haW5EYXRhKSB7CisgICAgICAgIGZvciAoYXV0byYgcHJveHkgOiBwZXJEb21haW5E
YXRhLT53YXRjaGVycykKKyAgICAgICAgICAgIHByb3h5LnNlbmQoTWVzc2FnZXM6OldlYkdlb2xv
Y2F0aW9uTWFuYWdlcjo6UmVzZXRQZXJtaXNzaW9ucyhyZWdpc3RyYWJsZURvbWFpbiksIDApOwor
ICAgIH0KIH0KICNlbmRpZgogCi12b2lkIFdlYkdlb2xvY2F0aW9uTWFuYWdlclByb3h5OjpzdGFy
dFVwZGF0aW5nKElQQzo6Q29ubmVjdGlvbiYgY29ubmVjdGlvbiwgV2ViUGFnZVByb3h5SWRlbnRp
ZmllciBwYWdlUHJveHlJRCwgY29uc3QgU3RyaW5nJiBhdXRob3JpemF0aW9uVG9rZW4pCit2b2lk
IFdlYkdlb2xvY2F0aW9uTWFuYWdlclByb3h5OjpzdGFydFVwZGF0aW5nKElQQzo6Q29ubmVjdGlv
biYgY29ubmVjdGlvbiwgY29uc3QgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4mIHJlZ2lzdHJh
YmxlRG9tYWluLCBXZWJQYWdlUHJveHlJZGVudGlmaWVyIHBhZ2VQcm94eUlELCBjb25zdCBTdHJp
bmcmIGF1dGhvcml6YXRpb25Ub2tlbiwgYm9vbCBlbmFibGVIaWdoQWNjdXJhY3kpCit7CisgICAg
c3RhcnRVcGRhdGluZ1dpdGhQcm94eShjb25uZWN0aW9uVG9XZWJQcm9jZXNzUHJveHkoY29ubmVj
dGlvbiksIHJlZ2lzdHJhYmxlRG9tYWluLCBwYWdlUHJveHlJRCwgYXV0aG9yaXphdGlvblRva2Vu
LCBlbmFibGVIaWdoQWNjdXJhY3kpOworfQorCit2b2lkIFdlYkdlb2xvY2F0aW9uTWFuYWdlclBy
b3h5OjpzdGFydFVwZGF0aW5nV2l0aFByb3h5KFdlYlByb2Nlc3NQcm94eSYgcHJveHksIGNvbnN0
IFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluJiByZWdpc3RyYWJsZURvbWFpbiwgV2ViUGFnZVBy
b3h5SWRlbnRpZmllciBwYWdlUHJveHlJRCwgY29uc3QgU3RyaW5nJiBhdXRob3JpemF0aW9uVG9r
ZW4sIGJvb2wgZW5hYmxlSGlnaEFjY3VyYWN5KQogewogICAgIGF1dG8qIHBhZ2UgPSBXZWJQcm9j
ZXNzUHJveHk6OndlYlBhZ2UocGFnZVByb3h5SUQpOwotICAgIE1FU1NBR0VfQ0hFQ0socGFnZSk7
CisgICAgTUVTU0FHRV9DSEVDSyhwcm94eS5jb25uZWN0aW9uKCksIHBhZ2UpOwogCiAgICAgYXV0
byBpc1ZhbGlkQXV0aG9yaXphdGlvblRva2VuID0gcGFnZS0+Z2VvbG9jYXRpb25QZXJtaXNzaW9u
UmVxdWVzdE1hbmFnZXIoKS5pc1ZhbGlkQXV0aG9yaXphdGlvblRva2VuKGF1dGhvcml6YXRpb25U
b2tlbik7Ci0gICAgTUVTU0FHRV9DSEVDSyhpc1ZhbGlkQXV0aG9yaXphdGlvblRva2VuKTsKKyAg
ICBNRVNTQUdFX0NIRUNLKHByb3h5LmNvbm5lY3Rpb24oKSwgaXNWYWxpZEF1dGhvcml6YXRpb25U
b2tlbik7CisKKyAgICBhdXRvJiBwZXJEb21haW5EYXRhID0gKm1fcGVyRG9tYWluRGF0YS5lbnN1
cmUocmVnaXN0cmFibGVEb21haW4sIFtdIHsKKyAgICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8UGVy
RG9tYWluRGF0YT4oKTsKKyAgICB9KS5pdGVyYXRvci0+dmFsdWU7CisKKyAgICBib29sIHdhc1Vw
ZGF0aW5nID0gaXNVcGRhdGluZyhwZXJEb21haW5EYXRhKTsKKyAgICBib29sIGhpZ2hBY2N1cmFj
eVdhc0VuYWJsZWQgPSBpc0hpZ2hBY2N1cmFjeUVuYWJsZWQocGVyRG9tYWluRGF0YSk7CisKKyAg
ICBwZXJEb21haW5EYXRhLndhdGNoZXJzLmFkZChwcm94eSk7CisgICAgaWYgKGVuYWJsZUhpZ2hB
Y2N1cmFjeSkKKyAgICAgICAgcGVyRG9tYWluRGF0YS53YXRjaGVyc05lZWRpbmdIaWdoQWNjdXJh
Y3kuYWRkKHByb3h5KTsKIAotICAgIGJvb2wgd2FzVXBkYXRpbmcgPSBpc1VwZGF0aW5nKCk7Ci0g
ICAgbV91cGRhdGVSZXF1ZXN0ZXJzLmFkZCgmY29ubmVjdGlvbi5jbGllbnQoKSk7CiAgICAgaWYg
KCF3YXNVcGRhdGluZykgewotICAgICAgICBtX3Byb3ZpZGVyLT5zZXRFbmFibGVIaWdoQWNjdXJh
Y3koKnRoaXMsIGlzSGlnaEFjY3VyYWN5RW5hYmxlZCgpKTsKLSAgICAgICAgbV9wcm92aWRlci0+
c3RhcnRVcGRhdGluZygqdGhpcyk7Ci0gICAgfSBlbHNlIGlmIChtX2xhc3RQb3NpdGlvbikKLSAg
ICAgICAgY29ubmVjdGlvbi5zZW5kKE1lc3NhZ2VzOjpXZWJHZW9sb2NhdGlvbk1hbmFnZXI6OkRp
ZENoYW5nZVBvc2l0aW9uKG1fbGFzdFBvc2l0aW9uLnZhbHVlKCkpLCAwKTsKKyAgICAgICAgcHJv
dmlkZXJTdGFydFVwZGF0aW5nKHBlckRvbWFpbkRhdGEsIHJlZ2lzdHJhYmxlRG9tYWluKTsKKyAg
ICAgICAgcmV0dXJuOworICAgIH0KKyAgICBpZiAoIWhpZ2hBY2N1cmFjeVdhc0VuYWJsZWQgJiYg
ZW5hYmxlSGlnaEFjY3VyYWN5KQorICAgICAgICBwcm92aWRlclNldEVuYWJsZWRIaWdoQWNjdXJh
Y3kocGVyRG9tYWluRGF0YSwgZW5hYmxlSGlnaEFjY3VyYWN5KTsKKworICAgIGlmIChwZXJEb21h
aW5EYXRhLmxhc3RQb3NpdGlvbikKKyAgICAgICAgcHJveHkuc2VuZChNZXNzYWdlczo6V2ViR2Vv
bG9jYXRpb25NYW5hZ2VyOjpEaWRDaGFuZ2VQb3NpdGlvbihyZWdpc3RyYWJsZURvbWFpbiwgcGVy
RG9tYWluRGF0YS5sYXN0UG9zaXRpb24udmFsdWUoKSksIDApOwogfQogCi12b2lkIFdlYkdlb2xv
Y2F0aW9uTWFuYWdlclByb3h5OjpzdG9wVXBkYXRpbmcoSVBDOjpDb25uZWN0aW9uJiBjb25uZWN0
aW9uKQordm9pZCBXZWJHZW9sb2NhdGlvbk1hbmFnZXJQcm94eTo6c3RvcFVwZGF0aW5nKElQQzo6
Q29ubmVjdGlvbiYgY29ubmVjdGlvbiwgY29uc3QgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4m
IHJlZ2lzdHJhYmxlRG9tYWluKQogewotICAgIHJlbW92ZVJlcXVlc3RlcigmY29ubmVjdGlvbi5j
bGllbnQoKSk7CisgICAgc3RvcFVwZGF0aW5nV2l0aFByb3h5KGNvbm5lY3Rpb25Ub1dlYlByb2Nl
c3NQcm94eShjb25uZWN0aW9uKSwgcmVnaXN0cmFibGVEb21haW4pOwogfQogCi12b2lkIFdlYkdl
b2xvY2F0aW9uTWFuYWdlclByb3h5OjpyZW1vdmVSZXF1ZXN0ZXIoY29uc3QgSVBDOjpDb25uZWN0
aW9uOjpDbGllbnQqIGNsaWVudCkKK3ZvaWQgV2ViR2VvbG9jYXRpb25NYW5hZ2VyUHJveHk6OnN0
b3BVcGRhdGluZ1dpdGhQcm94eShXZWJQcm9jZXNzUHJveHkmIHByb3h5LCBjb25zdCBXZWJDb3Jl
OjpSZWdpc3RyYWJsZURvbWFpbiYgcmVnaXN0cmFibGVEb21haW4pCiB7Ci0gICAgYm9vbCB3YXNV
cGRhdGluZyA9IGlzVXBkYXRpbmcoKTsKLSAgICBib29sIGhpZ2hBY2N1cmFjeVdhc0VuYWJsZWQg
PSBpc0hpZ2hBY2N1cmFjeUVuYWJsZWQoKTsKKyAgICBhdXRvIGl0ID0gbV9wZXJEb21haW5EYXRh
LmZpbmQocmVnaXN0cmFibGVEb21haW4pOworICAgIGlmIChpdCA9PSBtX3BlckRvbWFpbkRhdGEu
ZW5kKCkpCisgICAgICAgIHJldHVybjsKIAotICAgIG1faGlnaEFjY3VyYWN5UmVxdWVzdGVycy5y
ZW1vdmUoY2xpZW50KTsKLSAgICBtX3VwZGF0ZVJlcXVlc3RlcnMucmVtb3ZlKGNsaWVudCk7Cisg
ICAgYXV0byYgcGVyRG9tYWluRGF0YSA9ICppdC0+dmFsdWU7CisgICAgYm9vbCB3YXNVcGRhdGlu
ZyA9IGlzVXBkYXRpbmcocGVyRG9tYWluRGF0YSk7CisgICAgYm9vbCBoaWdoQWNjdXJhY3lXYXNF
bmFibGVkID0gaXNIaWdoQWNjdXJhY3lFbmFibGVkKHBlckRvbWFpbkRhdGEpOwogCi0gICAgaWYg
KHdhc1VwZGF0aW5nICYmICFpc1VwZGF0aW5nKCkpCi0gICAgICAgIG1fcHJvdmlkZXItPnN0b3BV
cGRhdGluZygqdGhpcyk7CisgICAgcGVyRG9tYWluRGF0YS53YXRjaGVycy5yZW1vdmUocHJveHkp
OworICAgIHBlckRvbWFpbkRhdGEud2F0Y2hlcnNOZWVkaW5nSGlnaEFjY3VyYWN5LnJlbW92ZShw
cm94eSk7CisKKyAgICBpZiAod2FzVXBkYXRpbmcgJiYgIWlzVXBkYXRpbmcocGVyRG9tYWluRGF0
YSkpCisgICAgICAgIHByb3ZpZGVyU3RvcFVwZGF0aW5nKHBlckRvbWFpbkRhdGEpOwogICAgIGVs
c2UgewotICAgICAgICBib29sIGhpZ2hBY2N1cmFjeVNob3VsZEJlRW5hYmxlZCA9IGlzSGlnaEFj
Y3VyYWN5RW5hYmxlZCgpOworICAgICAgICBib29sIGhpZ2hBY2N1cmFjeVNob3VsZEJlRW5hYmxl
ZCA9IGlzSGlnaEFjY3VyYWN5RW5hYmxlZChwZXJEb21haW5EYXRhKTsKICAgICAgICAgaWYgKGhp
Z2hBY2N1cmFjeVNob3VsZEJlRW5hYmxlZCAhPSBoaWdoQWNjdXJhY3lXYXNFbmFibGVkKQotICAg
ICAgICAgICAgbV9wcm92aWRlci0+c2V0RW5hYmxlSGlnaEFjY3VyYWN5KCp0aGlzLCBoaWdoQWNj
dXJhY3lTaG91bGRCZUVuYWJsZWQpOworICAgICAgICAgICAgcHJvdmlkZXJTZXRFbmFibGVkSGln
aEFjY3VyYWN5KHBlckRvbWFpbkRhdGEsIGhpZ2hBY2N1cmFjeVNob3VsZEJlRW5hYmxlZCk7CiAg
ICAgfQorCisgICAgaWYgKHBlckRvbWFpbkRhdGEud2F0Y2hlcnMuY29tcHV0ZXNFbXB0eSgpICYm
IHBlckRvbWFpbkRhdGEud2F0Y2hlcnNOZWVkaW5nSGlnaEFjY3VyYWN5LmNvbXB1dGVzRW1wdHko
KSkKKyAgICAgICAgbV9wZXJEb21haW5EYXRhLnJlbW92ZShpdCk7CiB9CiAKLXZvaWQgV2ViR2Vv
bG9jYXRpb25NYW5hZ2VyUHJveHk6OnNldEVuYWJsZUhpZ2hBY2N1cmFjeShJUEM6OkNvbm5lY3Rp
b24mIGNvbm5lY3Rpb24sIGJvb2wgZW5hYmxlZCkKK3ZvaWQgV2ViR2VvbG9jYXRpb25NYW5hZ2Vy
UHJveHk6OnNldEVuYWJsZUhpZ2hBY2N1cmFjeShJUEM6OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24s
IGNvbnN0IFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluJiByZWdpc3RyYWJsZURvbWFpbiwgYm9v
bCBlbmFibGVkKQogewotICAgIGJvb2wgaGlnaEFjY3VyYWN5V2FzRW5hYmxlZCA9IGlzSGlnaEFj
Y3VyYWN5RW5hYmxlZCgpOworICAgIHNldEVuYWJsZUhpZ2hBY2N1cmFjeVdpdGhQcm94eShjb25u
ZWN0aW9uVG9XZWJQcm9jZXNzUHJveHkoY29ubmVjdGlvbiksIHJlZ2lzdHJhYmxlRG9tYWluLCBl
bmFibGVkKTsKK30KKwordm9pZCBXZWJHZW9sb2NhdGlvbk1hbmFnZXJQcm94eTo6c2V0RW5hYmxl
SGlnaEFjY3VyYWN5V2l0aFByb3h5KFdlYlByb2Nlc3NQcm94eSYgcHJveHksIGNvbnN0IFdlYkNv
cmU6OlJlZ2lzdHJhYmxlRG9tYWluJiByZWdpc3RyYWJsZURvbWFpbiwgYm9vbCBlbmFibGVkKQor
eworICAgIGF1dG8gaXQgPSBtX3BlckRvbWFpbkRhdGEuZmluZChyZWdpc3RyYWJsZURvbWFpbik7
CisgICAgQVNTRVJUKGl0ICE9IG1fcGVyRG9tYWluRGF0YS5lbmQoKSk7CisgICAgaWYgKGl0ID09
IG1fcGVyRG9tYWluRGF0YS5lbmQoKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgYXV0byYgcGVy
RG9tYWluRGF0YSA9ICppdC0+dmFsdWU7CisgICAgYm9vbCBoaWdoQWNjdXJhY3lXYXNFbmFibGVk
ID0gaXNIaWdoQWNjdXJhY3lFbmFibGVkKHBlckRvbWFpbkRhdGEpOwogCiAgICAgaWYgKGVuYWJs
ZWQpCi0gICAgICAgIG1faGlnaEFjY3VyYWN5UmVxdWVzdGVycy5hZGQoJmNvbm5lY3Rpb24uY2xp
ZW50KCkpOworICAgICAgICBwZXJEb21haW5EYXRhLndhdGNoZXJzTmVlZGluZ0hpZ2hBY2N1cmFj
eS5hZGQocHJveHkpOwogICAgIGVsc2UKLSAgICAgICAgbV9oaWdoQWNjdXJhY3lSZXF1ZXN0ZXJz
LnJlbW92ZSgmY29ubmVjdGlvbi5jbGllbnQoKSk7CisgICAgICAgIHBlckRvbWFpbkRhdGEud2F0
Y2hlcnNOZWVkaW5nSGlnaEFjY3VyYWN5LnJlbW92ZShwcm94eSk7CisKKyAgICBpZiAoaXNVcGRh
dGluZyhwZXJEb21haW5EYXRhKSAmJiBoaWdoQWNjdXJhY3lXYXNFbmFibGVkICE9IGVuYWJsZWQp
CisgICAgICAgIHByb3ZpZGVyU2V0RW5hYmxlZEhpZ2hBY2N1cmFjeShwZXJEb21haW5EYXRhLCBl
bmFibGVkKTsKK30KKworYm9vbCBXZWJHZW9sb2NhdGlvbk1hbmFnZXJQcm94eTo6aXNVcGRhdGlu
Zyhjb25zdCBQZXJEb21haW5EYXRhJiBwZXJEb21haW5EYXRhKSBjb25zdAoreworI2lmIFBMQVRG
T1JNKElPU19GQU1JTFkpCisgICAgaWYgKCFtX2NsaWVudFByb3ZpZGVyKQorICAgICAgICByZXR1
cm4gIXBlckRvbWFpbkRhdGEud2F0Y2hlcnMuY29tcHV0ZXNFbXB0eSgpOworI2Vsc2UKKyAgICBV
TlVTRURfUEFSQU0ocGVyRG9tYWluRGF0YSk7CisjZW5kaWYKKworICAgIGZvciAoYXV0byYgcGVy
RG9tYWluRGF0YSA6IG1fcGVyRG9tYWluRGF0YS52YWx1ZXMoKSkgeworICAgICAgICBpZiAoIXBl
ckRvbWFpbkRhdGEtPndhdGNoZXJzLmNvbXB1dGVzRW1wdHkoKSkKKyAgICAgICAgICAgIHJldHVy
biB0cnVlOworICAgIH0KKyAgICByZXR1cm4gZmFsc2U7Cit9CisKKworYm9vbCBXZWJHZW9sb2Nh
dGlvbk1hbmFnZXJQcm94eTo6aXNIaWdoQWNjdXJhY3lFbmFibGVkKGNvbnN0IFBlckRvbWFpbkRh
dGEmIHBlckRvbWFpbkRhdGEpIGNvbnN0Cit7CisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKKyAg
ICBpZiAoIW1fY2xpZW50UHJvdmlkZXIpCisgICAgICAgIHJldHVybiAhcGVyRG9tYWluRGF0YS53
YXRjaGVyc05lZWRpbmdIaWdoQWNjdXJhY3kuY29tcHV0ZXNFbXB0eSgpOworI2Vsc2UKKyAgICBV
TlVTRURfUEFSQU0ocGVyRG9tYWluRGF0YSk7CisjZW5kaWYKKworICAgIGZvciAoYXV0byYgcGVy
RG9tYWluRGF0YSA6IG1fcGVyRG9tYWluRGF0YS52YWx1ZXMoKSkgeworICAgICAgICBpZiAoIXBl
ckRvbWFpbkRhdGEtPndhdGNoZXJzTmVlZGluZ0hpZ2hBY2N1cmFjeS5jb21wdXRlc0VtcHR5KCkp
CisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9CisgICAgcmV0dXJuIGZhbHNlOworfQor
Cit2b2lkIFdlYkdlb2xvY2F0aW9uTWFuYWdlclByb3h5Ojpwcm92aWRlclN0YXJ0VXBkYXRpbmco
UGVyRG9tYWluRGF0YSYgcGVyRG9tYWluRGF0YSwgY29uc3QgV2ViQ29yZTo6UmVnaXN0cmFibGVE
b21haW4mIHJlZ2lzdHJhYmxlRG9tYWluKQoreworI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCisg
ICAgaWYgKCFtX2NsaWVudFByb3ZpZGVyKSB7CisgICAgICAgIEFTU0VSVCghcGVyRG9tYWluRGF0
YS5wcm92aWRlcik7CisgICAgICAgIHBlckRvbWFpbkRhdGEucHJvdmlkZXIgPSBtYWtlVW5pcXVl
PFdlYkNvcmU6OkNvcmVMb2NhdGlvbkdlb2xvY2F0aW9uUHJvdmlkZXI+KHJlZ2lzdHJhYmxlRG9t
YWluLCAqdGhpcyk7CisgICAgICAgIHBlckRvbWFpbkRhdGEucHJvdmlkZXItPnNldEVuYWJsZUhp
Z2hBY2N1cmFjeSghcGVyRG9tYWluRGF0YS53YXRjaGVyc05lZWRpbmdIaWdoQWNjdXJhY3kuY29t
cHV0ZXNFbXB0eSgpKTsKKyAgICAgICAgcGVyRG9tYWluRGF0YS5wcm92aWRlci0+c3RhcnQoKTsK
KyAgICAgICAgcmV0dXJuOworICAgIH0KKyNlbHNlCisgICAgVU5VU0VEX1BBUkFNKHJlZ2lzdHJh
YmxlRG9tYWluKTsKKyNlbmRpZgorICAgIGlmICghbV9jbGllbnRQcm92aWRlcikKKyAgICAgICAg
cmV0dXJuOworCisgICAgbV9jbGllbnRQcm92aWRlci0+c2V0RW5hYmxlSGlnaEFjY3VyYWN5KCp0
aGlzLCBpc0hpZ2hBY2N1cmFjeUVuYWJsZWQocGVyRG9tYWluRGF0YSkpOworICAgIG1fY2xpZW50
UHJvdmlkZXItPnN0YXJ0VXBkYXRpbmcoKnRoaXMpOworfQorCit2b2lkIFdlYkdlb2xvY2F0aW9u
TWFuYWdlclByb3h5Ojpwcm92aWRlclN0b3BVcGRhdGluZyhQZXJEb21haW5EYXRhJiBwZXJEb21h
aW5EYXRhKQoreworI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCisgICAgaWYgKCFtX2NsaWVudFBy
b3ZpZGVyKSB7CisgICAgICAgIHBlckRvbWFpbkRhdGEucHJvdmlkZXItPnN0b3AoKTsKKyAgICAg
ICAgcmV0dXJuOworICAgIH0KKyNlbHNlCisgICAgVU5VU0VEX1BBUkFNKHBlckRvbWFpbkRhdGEp
OworI2VuZGlmCisKKyAgICBpZiAobV9jbGllbnRQcm92aWRlcikKKyAgICAgICAgbV9jbGllbnRQ
cm92aWRlci0+c3RvcFVwZGF0aW5nKCp0aGlzKTsKK30KKwordm9pZCBXZWJHZW9sb2NhdGlvbk1h
bmFnZXJQcm94eTo6cHJvdmlkZXJTZXRFbmFibGVkSGlnaEFjY3VyYWN5KFBlckRvbWFpbkRhdGEm
IHBlckRvbWFpbkRhdGEsIGJvb2wgZW5hYmxlZCkKK3sKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZ
KQorICAgIGlmICghbV9jbGllbnRQcm92aWRlcikKKyAgICAgICAgcGVyRG9tYWluRGF0YS5wcm92
aWRlci0+c2V0RW5hYmxlSGlnaEFjY3VyYWN5KGVuYWJsZWQpOworI2Vsc2UKKyAgICBVTlVTRURf
UEFSQU0ocGVyRG9tYWluRGF0YSk7CisjZW5kaWYKIAotICAgIGJvb2wgaGlnaEFjY3VyYWN5U2hv
dWxkQmVFbmFibGVkID0gaXNIaWdoQWNjdXJhY3lFbmFibGVkKCk7Ci0gICAgaWYgKGlzVXBkYXRp
bmcoKSAmJiBoaWdoQWNjdXJhY3lXYXNFbmFibGVkICE9IGhpZ2hBY2N1cmFjeVNob3VsZEJlRW5h
YmxlZCkKLSAgICAgICAgbV9wcm92aWRlci0+c2V0RW5hYmxlSGlnaEFjY3VyYWN5KCp0aGlzLCBo
aWdoQWNjdXJhY3lTaG91bGRCZUVuYWJsZWQpOworICAgIGlmIChtX2NsaWVudFByb3ZpZGVyKQor
ICAgICAgICBtX2NsaWVudFByb3ZpZGVyLT5zZXRFbmFibGVIaWdoQWNjdXJhY3koKnRoaXMsIGVu
YWJsZWQpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL1dlYkdlb2xvY2F0aW9uTWFuYWdlclByb3h5LmggYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9XZWJHZW9sb2NhdGlvbk1hbmFnZXJQcm94eS5oCmluZGV4IDc0OTM2ZTQ1
YTBkODM4M2E4YjRiM2Q2ZDU3OGM5YmQyMmJlM2ZhNWUuLjA3YjkzYjdiODhiNjY0MTg2ZjkwM2Rm
NDBmOTc5MTU4MjkyZDAwZGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dl
Ykdlb2xvY2F0aW9uTWFuYWdlclByb3h5LmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
V2ViR2VvbG9jYXRpb25NYW5hZ2VyUHJveHkuaApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5
cmlnaHQgKEMpIDIwMTEsIDIwMTIsIDIwMTMgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorICogQ29weXJpZ2h0IChDKSAyMDExLTIwMjIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0zMSw5ICszMSwxNiBAQAog
I2luY2x1ZGUgIldlYkNvbnRleHRTdXBwbGVtZW50LmgiCiAjaW5jbHVkZSAiV2ViUGFnZVByb3h5
SWRlbnRpZmllci5oIgogI2luY2x1ZGUgPFdlYkNvcmUvR2VvbG9jYXRpb25Qb3NpdGlvbkRhdGEu
aD4KKyNpbmNsdWRlIDxXZWJDb3JlL1JlZ2lzdHJhYmxlRG9tYWluLmg+CisjaW5jbHVkZSA8d3Rm
L0hhc2hNYXAuaD4KICNpbmNsdWRlIDx3dGYvSGFzaFNldC5oPgorI2luY2x1ZGUgPHd0Zi9XZWFr
SGFzaFNldC5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgogCisjaWYgUExBVEZP
Uk0oSU9TX0ZBTUlMWSkKKyNpbmNsdWRlIDxXZWJDb3JlL0NvcmVMb2NhdGlvbkdlb2xvY2F0aW9u
UHJvdmlkZXIuaD4KKyNlbmRpZgorCiBuYW1lc3BhY2UgQVBJIHsKIGNsYXNzIEdlb2xvY2F0aW9u
UHJvdmlkZXI7CiB9CkBAIC00MywxMSArNTAsMTYgQEAgbmFtZXNwYWNlIFdlYktpdCB7CiBjbGFz
cyBXZWJHZW9sb2NhdGlvblBvc2l0aW9uOwogY2xhc3MgV2ViUHJvY2Vzc1Bvb2w7CiAKLWNsYXNz
IFdlYkdlb2xvY2F0aW9uTWFuYWdlclByb3h5IDogcHVibGljIEFQSTo6T2JqZWN0SW1wbDxBUEk6
Ok9iamVjdDo6VHlwZTo6R2VvbG9jYXRpb25NYW5hZ2VyPiwgcHVibGljIFdlYkNvbnRleHRTdXBw
bGVtZW50LCBwcml2YXRlIElQQzo6TWVzc2FnZVJlY2VpdmVyIHsKK2NsYXNzIFdlYkdlb2xvY2F0
aW9uTWFuYWdlclByb3h5IDogcHVibGljIEFQSTo6T2JqZWN0SW1wbDxBUEk6Ok9iamVjdDo6VHlw
ZTo6R2VvbG9jYXRpb25NYW5hZ2VyPiwgcHVibGljIFdlYkNvbnRleHRTdXBwbGVtZW50LCBwcml2
YXRlIElQQzo6TWVzc2FnZVJlY2VpdmVyCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKKyAgICAs
IHB1YmxpYyBXZWJDb3JlOjpDb3JlTG9jYXRpb25HZW9sb2NhdGlvblByb3ZpZGVyOjpDbGllbnQK
KyNlbmRpZgorewogcHVibGljOgogICAgIHN0YXRpYyBjb25zdCBjaGFyKiBzdXBwbGVtZW50TmFt
ZSgpOwogCiAgICAgc3RhdGljIFJlZjxXZWJHZW9sb2NhdGlvbk1hbmFnZXJQcm94eT4gY3JlYXRl
KFdlYlByb2Nlc3NQb29sKik7CisgICAgfldlYkdlb2xvY2F0aW9uTWFuYWdlclByb3h5KCk7CiAK
ICAgICB2b2lkIHNldFByb3ZpZGVyKHN0ZDo6dW5pcXVlX3B0cjxBUEk6Okdlb2xvY2F0aW9uUHJv
dmlkZXI+JiYpOwogCkBAIC01NiwzNiArNjgsNTkgQEAgcHVibGljOgogI2lmIFBMQVRGT1JNKElP
U19GQU1JTFkpCiAgICAgdm9pZCByZXNldFBlcm1pc3Npb25zKCk7CiAjZW5kaWYKLSAgICBjb25z
dCBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6Okdlb2xvY2F0aW9uUG9zaXRpb25EYXRhPiYgbGFzdFBv
c2l0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9sYXN0UG9zaXRpb247IH0KIAogICAgIHVzaW5nIEFQ
STo6T2JqZWN0OjpyZWY7CiAgICAgdXNpbmcgQVBJOjpPYmplY3Q6OmRlcmVmOwogCisgICAgdm9p
ZCB3ZWJQcm9jZXNzSXNHb2luZ0F3YXkoV2ViUHJvY2Vzc1Byb3h5Jik7CisKIHByaXZhdGU6CiAg
ICAgZXhwbGljaXQgV2ViR2VvbG9jYXRpb25NYW5hZ2VyUHJveHkoV2ViUHJvY2Vzc1Bvb2wqKTsK
IAogICAgIC8vIFdlYkNvbnRleHRTdXBwbGVtZW50CiAgICAgdm9pZCBwcm9jZXNzUG9vbERlc3Ry
b3llZCgpIG92ZXJyaWRlOwotICAgIHZvaWQgcHJvY2Vzc0RpZENsb3NlKFdlYlByb2Nlc3NQcm94
eSopIG92ZXJyaWRlOwogICAgIHZvaWQgcmVmV2ViQ29udGV4dFN1cHBsZW1lbnQoKSBvdmVycmlk
ZTsKICAgICB2b2lkIGRlcmVmV2ViQ29udGV4dFN1cHBsZW1lbnQoKSBvdmVycmlkZTsKIAogICAg
IC8vIElQQzo6TWVzc2FnZVJlY2VpdmVyCiAgICAgdm9pZCBkaWRSZWNlaXZlTWVzc2FnZShJUEM6
OkNvbm5lY3Rpb24mLCBJUEM6OkRlY29kZXImKSBvdmVycmlkZTsKIAotICAgIGJvb2wgaXNVcGRh
dGluZygpIGNvbnN0IHsgcmV0dXJuICFtX3VwZGF0ZVJlcXVlc3RlcnMuaXNFbXB0eSgpOyB9Ci0g
ICAgYm9vbCBpc0hpZ2hBY2N1cmFjeUVuYWJsZWQoKSBjb25zdCB7IHJldHVybiAhbV9oaWdoQWNj
dXJhY3lSZXF1ZXN0ZXJzLmlzRW1wdHkoKTsgfQorICAgIC8vIElQQyBtZXNzYWdlcy4KKyAgICB2
b2lkIHN0YXJ0VXBkYXRpbmcoSVBDOjpDb25uZWN0aW9uJiwgY29uc3QgV2ViQ29yZTo6UmVnaXN0
cmFibGVEb21haW4mLCBXZWJQYWdlUHJveHlJZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIGF1dGhv
cml6YXRpb25Ub2tlbiwgYm9vbCBlbmFibGVIaWdoQWNjdXJhY3kpOworICAgIHZvaWQgc3RvcFVw
ZGF0aW5nKElQQzo6Q29ubmVjdGlvbiYsIGNvbnN0IFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWlu
Jik7CisgICAgdm9pZCBzZXRFbmFibGVIaWdoQWNjdXJhY3koSVBDOjpDb25uZWN0aW9uJiwgY29u
c3QgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4mLCBib29sKTsKKworICAgIHZvaWQgc3RhcnRV
cGRhdGluZ1dpdGhQcm94eShXZWJQcm9jZXNzUHJveHkmLCBjb25zdCBXZWJDb3JlOjpSZWdpc3Ry
YWJsZURvbWFpbiYsIFdlYlBhZ2VQcm94eUlkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgYXV0aG9y
aXphdGlvblRva2VuLCBib29sIGVuYWJsZUhpZ2hBY2N1cmFjeSk7CisgICAgdm9pZCBzdG9wVXBk
YXRpbmdXaXRoUHJveHkoV2ViUHJvY2Vzc1Byb3h5JiwgY29uc3QgV2ViQ29yZTo6UmVnaXN0cmFi
bGVEb21haW4mKTsKKyAgICB2b2lkIHNldEVuYWJsZUhpZ2hBY2N1cmFjeVdpdGhQcm94eShXZWJQ
cm9jZXNzUHJveHkmLCBjb25zdCBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiYsIGJvb2wpOwog
Ci0gICAgdm9pZCBzdGFydFVwZGF0aW5nKElQQzo6Q29ubmVjdGlvbiYsIFdlYlBhZ2VQcm94eUlk
ZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgYXV0aG9yaXphdGlvblRva2VuKTsKLSAgICB2b2lkIHN0
b3BVcGRhdGluZyhJUEM6OkNvbm5lY3Rpb24mKTsKLSAgICB2b2lkIHJlbW92ZVJlcXVlc3Rlcihj
b25zdCBJUEM6OkNvbm5lY3Rpb246OkNsaWVudCopOwotICAgIHZvaWQgc2V0RW5hYmxlSGlnaEFj
Y3VyYWN5KElQQzo6Q29ubmVjdGlvbiYsIGJvb2wpOworI2lmIFBMQVRGT1JNKElPU19GQU1JTFkp
CisgICAgLy8gQ29yZUxvY2F0aW9uR2VvbG9jYXRpb25Qcm92aWRlcjo6Q2xpZW50CisgICAgdm9p
ZCBwb3NpdGlvbkNoYW5nZWQoY29uc3QgU3RyaW5nJiB3ZWJzaXRlSWRlbnRpZmllciwgV2ViQ29y
ZTo6R2VvbG9jYXRpb25Qb3NpdGlvbkRhdGEmJikgZmluYWw7CisgICAgdm9pZCBlcnJvck9jY3Vy
cmVkKGNvbnN0IFN0cmluZyYgd2Vic2l0ZUlkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgZXJyb3JN
ZXNzYWdlKSBmaW5hbDsKKyAgICB2b2lkIHJlc2V0R2VvbG9jYXRpb24oY29uc3QgU3RyaW5nJiB3
ZWJzaXRlSWRlbnRpZmllcikgZmluYWw7CisjZW5kaWYKKworICAgIHN0cnVjdCBQZXJEb21haW5E
YXRhIHsKKyAgICAgICAgV1RGX01BS0VfU1RSVUNUX0ZBU1RfQUxMT0NBVEVEOworICAgICAgICBX
ZWFrSGFzaFNldDxXZWJQcm9jZXNzUHJveHk+IHdhdGNoZXJzOworICAgICAgICBXZWFrSGFzaFNl
dDxXZWJQcm9jZXNzUHJveHk+IHdhdGNoZXJzTmVlZGluZ0hpZ2hBY2N1cmFjeTsKKyAgICAgICAg
c3RkOjpvcHRpb25hbDxXZWJDb3JlOjpHZW9sb2NhdGlvblBvc2l0aW9uRGF0YT4gbGFzdFBvc2l0
aW9uOworCisgICAgICAgIC8vIEZJWE1FOiBVc2UgZm9yIGFsbCBDb2NvYSBwb3J0cy4KKyNpZiBQ
TEFURk9STShJT1NfRkFNSUxZKQorICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8V2ViQ29yZTo6Q29y
ZUxvY2F0aW9uR2VvbG9jYXRpb25Qcm92aWRlcj4gcHJvdmlkZXI7CisjZW5kaWYKKyAgICB9Owog
Ci0gICAgSGFzaFNldDxjb25zdCBJUEM6OkNvbm5lY3Rpb246OkNsaWVudCo+IG1fdXBkYXRlUmVx
dWVzdGVyczsKLSAgICBIYXNoU2V0PGNvbnN0IElQQzo6Q29ubmVjdGlvbjo6Q2xpZW50Kj4gbV9o
aWdoQWNjdXJhY3lSZXF1ZXN0ZXJzOworICAgIGJvb2wgaXNVcGRhdGluZyhjb25zdCBQZXJEb21h
aW5EYXRhJikgY29uc3Q7CisgICAgYm9vbCBpc0hpZ2hBY2N1cmFjeUVuYWJsZWQoY29uc3QgUGVy
RG9tYWluRGF0YSYpIGNvbnN0OworICAgIHZvaWQgcHJvdmlkZXJTdGFydFVwZGF0aW5nKFBlckRv
bWFpbkRhdGEmLCBjb25zdCBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiYpOworICAgIHZvaWQg
cHJvdmlkZXJTdG9wVXBkYXRpbmcoUGVyRG9tYWluRGF0YSYpOworICAgIHZvaWQgcHJvdmlkZXJT
ZXRFbmFibGVkSGlnaEFjY3VyYWN5KFBlckRvbWFpbkRhdGEmLCBib29sIGVuYWJsZWQpOwogCi0g
ICAgc3RkOjp1bmlxdWVfcHRyPEFQSTo6R2VvbG9jYXRpb25Qcm92aWRlcj4gbV9wcm92aWRlcjsK
LSAgICBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6Okdlb2xvY2F0aW9uUG9zaXRpb25EYXRhPiBtX2xh
c3RQb3NpdGlvbjsKKyAgICBIYXNoTWFwPFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluLCBzdGQ6
OnVuaXF1ZV9wdHI8UGVyRG9tYWluRGF0YT4+IG1fcGVyRG9tYWluRGF0YTsKKyAgICBzdGQ6OnVu
aXF1ZV9wdHI8QVBJOjpHZW9sb2NhdGlvblByb3ZpZGVyPiBtX2NsaWVudFByb3ZpZGVyOwogfTsK
IAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9XZWJHZW9sb2NhdGlvbk1hbmFnZXJQcm94eS5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL1dlYkdlb2xvY2F0aW9uTWFuYWdlclByb3h5Lm1lc3NhZ2VzLmluCmluZGV4
IGU1ZTljMjdkMTRhNWZiNzI2ZmNjMmM4MWZmM2UxNjVlYTNlODQwYmUuLjkwNDFhOTBjMjUwZjhh
ZGQ2OGJiMTNiM2FiYjU0YmViNjZjYjJkMjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL1dlYkdlb2xvY2F0aW9uTWFuYWdlclByb3h5Lm1lc3NhZ2VzLmluCisrKyBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkdlb2xvY2F0aW9uTWFuYWdlclByb3h5Lm1lc3NhZ2VzLmlu
CkBAIC0yMSw3ICsyMSw3IEBACiAjIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAKIG1lc3NhZ2VzIC0+IFdlYkdlb2xv
Y2F0aW9uTWFuYWdlclByb3h5IHsKLSAgICBTdGFydFVwZGF0aW5nKFdlYktpdDo6V2ViUGFnZVBy
b3h5SWRlbnRpZmllciBwYWdlUHJveHlJRCwgU3RyaW5nIGF1dGhvcml6YXRpb25Ub2tlbikgV2Fu
dHNDb25uZWN0aW9uCi0gICAgU3RvcFVwZGF0aW5nKCkgV2FudHNDb25uZWN0aW9uCi0gICAgU2V0
RW5hYmxlSGlnaEFjY3VyYWN5KGJvb2wgZW5hYmxlZCkgV2FudHNDb25uZWN0aW9uCisgICAgU3Rh
cnRVcGRhdGluZyhXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiByZWdpc3RyYWJsZURvbWFpbiwg
V2ViS2l0OjpXZWJQYWdlUHJveHlJZGVudGlmaWVyIHBhZ2VQcm94eUlELCBTdHJpbmcgYXV0aG9y
aXphdGlvblRva2VuLCBib29sIGVuYWJsZUhpZ2hBY2N1cmFjeSkgV2FudHNDb25uZWN0aW9uCisg
ICAgU3RvcFVwZGF0aW5nKFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluIHJlZ2lzdHJhYmxlRG9t
YWluKSBXYW50c0Nvbm5lY3Rpb24KKyAgICBTZXRFbmFibGVIaWdoQWNjdXJhY3koV2ViQ29yZTo6
UmVnaXN0cmFibGVEb21haW4gcmVnaXN0cmFibGVEb21haW4sIGJvb2wgZW5hYmxlZCkgV2FudHND
b25uZWN0aW9uCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9j
ZXNzUG9vbC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5jcHAK
aW5kZXggZjYwZDNlY2QyY2E2ZjBmYzczNjcwYzM5ZGEyYWI3NjAwMzVmMmY3NC4uZmExNzQyY2Yz
MmRhOTk1MjczMjNkZmM3YzhiZjBhNzkwNjMwNDFmZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL1dlYlByb2Nlc3NQb29sLmNwcApAQCAtNDMxLDkgKzQzMSw2IEBAIHZvaWQgV2ViUHJvY2Vz
c1Bvb2w6OnNjcmVlblByb3BlcnRpZXNTdGF0ZUNoYW5nZWQoKQogCiB2b2lkIFdlYlByb2Nlc3NQ
b29sOjpuZXR3b3JrUHJvY2Vzc0RpZFRlcm1pbmF0ZShOZXR3b3JrUHJvY2Vzc1Byb3h5JiBuZXR3
b3JrUHJvY2Vzc1Byb3h5LCBOZXR3b3JrUHJvY2Vzc1Byb3h5OjpUZXJtaW5hdGlvblJlYXNvbiBy
ZWFzb24pCiB7Ci0gICAgZm9yIChhdXRvJiBzdXBwbGVtZW50IDogbV9zdXBwbGVtZW50cy52YWx1
ZXMoKSkKLSAgICAgICAgc3VwcGxlbWVudC0+cHJvY2Vzc0RpZENsb3NlKCZuZXR3b3JrUHJvY2Vz
c1Byb3h5KTsKLQogICAgIGlmIChyZWFzb24gPT0gTmV0d29ya1Byb2Nlc3NQcm94eTo6VGVybWlu
YXRpb25SZWFzb246OkNyYXNoKQogICAgICAgICBtX2NsaWVudC5uZXR3b3JrUHJvY2Vzc0RpZENy
YXNoKHRoaXMpOwogCkBAIC0xMDU3LDcgKzEwNTQsNyBAQCB2b2lkIFdlYlByb2Nlc3NQb29sOjpk
aXNjb25uZWN0UHJvY2VzcyhXZWJQcm9jZXNzUHJveHkmIHByb2Nlc3MpCiAgICAgaWYgKHByb2Nl
c3MuaXNSdW5uaW5nV29ya2VycygpKQogICAgICAgICByZW1vdmVGcm9tUmVtb3RlV29ya2VyUHJv
Y2Vzc2VzKHByb2Nlc3MpOwogCi0gICAgc3RhdGljX2Nhc3Q8V2ViQ29udGV4dFN1cHBsZW1lbnQq
PihzdXBwbGVtZW50PFdlYkdlb2xvY2F0aW9uTWFuYWdlclByb3h5PigpKS0+cHJvY2Vzc0RpZENs
b3NlKCZwcm9jZXNzKTsKKyAgICBzdXBwbGVtZW50PFdlYkdlb2xvY2F0aW9uTWFuYWdlclByb3h5
PigpLT53ZWJQcm9jZXNzSXNHb2luZ0F3YXkocHJvY2Vzcyk7CiAKICAgICBtX3Byb2Nlc3Nlcy5y
ZW1vdmVGaXJzdChwcm9jZXNzKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvaW9zL1dLR2VvbG9jYXRpb25Qcm92aWRlcklPUy5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL2lvcy9XS0dlb2xvY2F0aW9uUHJvdmlkZXJJT1MubW0KaW5kZXggZjVlOWZkN2JjMzQxMjk3
YWY3YjI0ZTY3NDE2MzMyY2Q5NmFkNzM5Yy4uZTYzOGFkOWM0ZThiNzM4YmYxNjUxNGQ3MTlkYzFi
ZThhNzZiNTlkNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dLR2Vv
bG9jYXRpb25Qcm92aWRlcklPUy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3Mv
V0tHZW9sb2NhdGlvblByb3ZpZGVySU9TLm1tCkBAIC01MSw3ICs1MSw2IEBACiAjaW1wb3J0IDx3
dGYvVVJMLmg+CiAKIC8vIEZJWE1FOiBSZW1vdmUgdXNlIG9mIFdlYktpdDEgZnJvbSBXZWJLaXQy
Ci0jaW1wb3J0IDxXZWJLaXQvV2ViR2VvbG9jYXRpb25Db3JlTG9jYXRpb25Qcm92aWRlci5oPgog
I2ltcG9ydCA8V2ViS2l0L1dlYkFsbG93RGVueVBvbGljeUxpc3RlbmVyLmg+CiAKIEFMTE9XX0RF
UFJFQ0FURURfREVDTEFSQVRJT05TX0JFR0lOCkBAIC01OSw5ICs1OCw2IEBAIEFMTE9XX0RFUFJF
Q0FURURfREVDTEFSQVRJT05TX0JFR0lOCiBAaW50ZXJmYWNlIFdLR2VvbG9jYXRpb25Qcm92aWRl
cklPUyAoX1dLR2VvbG9jYXRpb25Db3JlTG9jYXRpb25MaXN0ZW5lcikgPF9XS0dlb2xvY2F0aW9u
Q29yZUxvY2F0aW9uTGlzdGVuZXI+CiBAZW5kCiAKLUBpbnRlcmZhY2UgV0tMZWdhY3lDb3JlTG9j
YXRpb25Qcm92aWRlciA6IE5TT2JqZWN0PF9XS0dlb2xvY2F0aW9uQ29yZUxvY2F0aW9uUHJvdmlk
ZXIsIFdlYkdlb2xvY2F0aW9uQ29yZUxvY2F0aW9uVXBkYXRlTGlzdGVuZXI+Ci1AZW5kCi0KIEBp
bnRlcmZhY2UgV0tXZWJBbGxvd0RlbnlQb2xpY3lMaXN0ZW5lciA6IE5TT2JqZWN0PFdlYkFsbG93
RGVueVBvbGljeUxpc3RlbmVyPgogLSAoaWQpaW5pdFdpdGhDb21wbGV0aW9uSGFuZGxlcjooRnVu
Y3Rpb248dm9pZChib29sKT4mJiljb21wbGV0aW9uSGFuZGxlcjsKIC0gKHZvaWQpZGVueU9ubHlU
aGlzUmVxdWVzdCBOT19SRVRVUk5fRFVFX1RPX0FTU0VSVDsKQEAgLTE0NiwyNSArMTQyLDQyIEBA
IC0gKGlkKWluaXRXaXRoUHJvY2Vzc1Bvb2w6KFdlYktpdDo6V2ViUHJvY2Vzc1Bvb2wmKXByb2Nl
c3NQb29sCiAgICAgc2VsZiA9IFtzdXBlciBpbml0XTsKICAgICBpZiAoIXNlbGYpCiAgICAgICAg
IHJldHVybiBuaWw7Ci0gICAgX2dlb2xvY2F0aW9uTWFuYWdlciA9IHByb2Nlc3NQb29sLnN1cHBs
ZW1lbnQ8V2ViS2l0OjpXZWJHZW9sb2NhdGlvbk1hbmFnZXJQcm94eT4oKTsKLSAgICBXS0dlb2xv
Y2F0aW9uUHJvdmlkZXJWMSBwcm92aWRlckNhbGxiYWNrID0gewotICAgICAgICB7IDEsIHNlbGYg
fSwKLSAgICAgICAgc3RhcnRVcGRhdGluZ0NhbGxiYWNrLAotICAgICAgICBzdG9wVXBkYXRpbmdD
YWxsYmFjaywKLSAgICAgICAgc2V0RW5hYmxlSGlnaEFjY3VyYWN5Ci0gICAgfTsKLSAgICBXS0dl
b2xvY2F0aW9uTWFuYWdlclNldFByb3ZpZGVyKHRvQVBJKF9nZW9sb2NhdGlvbk1hbmFnZXIuZ2V0
KCkpLCAmcHJvdmlkZXJDYWxsYmFjay5iYXNlKTsKLSAgICBfY29yZUxvY2F0aW9uUHJvdmlkZXIg
PSB3cmFwcGVyKHByb2Nlc3NQb29sKS5fY29yZUxvY2F0aW9uUHJvdmlkZXIgPzogYWRvcHROUyhz
dGF0aWNfY2FzdDxpZCA8X1dLR2VvbG9jYXRpb25Db3JlTG9jYXRpb25Qcm92aWRlcj4+KFtbV0tM
ZWdhY3lDb3JlTG9jYXRpb25Qcm92aWRlciBhbGxvY10gaW5pdF0pKTsKLSAgICBbX2NvcmVMb2Nh
dGlvblByb3ZpZGVyIHNldExpc3RlbmVyOnNlbGZdOworCisgICAgLy8gT24gaU9TLCBXZWJLaXQg
bm9ybWFsbHkgcHJvdmlkZXMgdGhlIGxvY2F0aW9uLiBIb3dldmVyLCBpZiB0aGUgY2xpZW50IHNl
dHMgYSBjb3JlTG9jYXRpb25Qcm92aWRlciwgdGhlbiB3ZSB1c2UgdGhhdCBvbmUgaW5zdGVhZC4K
KyAgICAvLyBUaGlzIGlzIHVzZWZ1bCBmb3IgV2ViS2l0VGVzdFJ1bm5lciB0byBwcm92aWRlIGEg
ZHVtbXkgZ2VvbG9jYXRpb24gcHJvdmlkZXIuIEl0IGlzIGFsc28gdXNlZCBieSBjZXJ0YWluIGFw
cHMgdG8gZGVueSBhbGwKKyAgICAvLyBnZW9sb2NhdGlvbiBhdXRob3JpemF0aW9uIGFzIGEgd2F5
IHRvIGRpc2FibGUgc3VwcG9ydCBmb3IgZ2VvbG9jYXRpb24uCisgICAgaWYgKHdyYXBwZXIocHJv
Y2Vzc1Bvb2wpLl9jb3JlTG9jYXRpb25Qcm92aWRlcikgeworICAgICAgICBfZ2VvbG9jYXRpb25N
YW5hZ2VyID0gcHJvY2Vzc1Bvb2wuc3VwcGxlbWVudDxXZWJLaXQ6OldlYkdlb2xvY2F0aW9uTWFu
YWdlclByb3h5PigpOworICAgICAgICBXS0dlb2xvY2F0aW9uUHJvdmlkZXJWMSBwcm92aWRlckNh
bGxiYWNrID0geworICAgICAgICAgICAgeyAxLCBzZWxmIH0sCisgICAgICAgICAgICBzdGFydFVw
ZGF0aW5nQ2FsbGJhY2ssCisgICAgICAgICAgICBzdG9wVXBkYXRpbmdDYWxsYmFjaywKKyAgICAg
ICAgICAgIHNldEVuYWJsZUhpZ2hBY2N1cmFjeQorICAgICAgICB9OworICAgICAgICBXS0dlb2xv
Y2F0aW9uTWFuYWdlclNldFByb3ZpZGVyKHRvQVBJKF9nZW9sb2NhdGlvbk1hbmFnZXIuZ2V0KCkp
LCAmcHJvdmlkZXJDYWxsYmFjay5iYXNlKTsKKyAgICAgICAgX2NvcmVMb2NhdGlvblByb3ZpZGVy
ID0gd3JhcHBlcihwcm9jZXNzUG9vbCkuX2NvcmVMb2NhdGlvblByb3ZpZGVyOworICAgICAgICBb
X2NvcmVMb2NhdGlvblByb3ZpZGVyIHNldExpc3RlbmVyOnNlbGZdOworICAgIH0KICAgICByZXR1
cm4gc2VsZjsKIH0KIAogLSAodm9pZClkZWNpZGVQb2xpY3lGb3JHZW9sb2NhdGlvblJlcXVlc3RG
cm9tT3JpZ2luOihXZWJLaXQ6OkZyYW1lSW5mb0RhdGEmJilmcmFtZUluZm8gY29tcGxldGlvbkhh
bmRsZXI6KEZ1bmN0aW9uPHZvaWQoYm9vbCk+JiYpY29tcGxldGlvbkhhbmRsZXIgdmlldzooV0tX
ZWJWaWV3ICopY29udGVudFZpZXcKIHsKLSAgICAvLyBTdGVwIDE6IGFzayB0aGUgdXNlciBpZiB0
aGUgYXBwIGNhbiB1c2UgR2VvbG9jYXRpb24uCisgICAgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21h
aW4gcmVnaXN0cmFibGVEb21haW4oZnJhbWVJbmZvLnNlY3VyaXR5T3JpZ2luKTsKICAgICBHZW9s
b2NhdGlvblJlcXVlc3REYXRhIGdlb2xvY2F0aW9uUmVxdWVzdERhdGEgeyBbY29udGVudFZpZXcg
VVJMXSwgV1RGTW92ZShmcmFtZUluZm8pLCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSwgY29u
dGVudFZpZXcgfTsKICAgICBfcmVxdWVzdHNXYWl0aW5nRm9yQ29yZUxvY2F0aW9uQXV0aG9yaXph
dGlvbi5hcHBlbmQoV1RGTW92ZShnZW9sb2NhdGlvblJlcXVlc3REYXRhKSk7Ci0gICAgW19jb3Jl
TG9jYXRpb25Qcm92aWRlciByZXF1ZXN0R2VvbG9jYXRpb25BdXRob3JpemF0aW9uXTsKKyAgICBp
ZiAoX2NvcmVMb2NhdGlvblByb3ZpZGVyKSB7CisgICAgICAgIC8vIFN0ZXAgMTogYXNrIHRoZSB1
c2VyIGlmIHRoZSBhcHAgY2FuIHVzZSBHZW9sb2NhdGlvbi4KKyAgICAgICAgW19jb3JlTG9jYXRp
b25Qcm92aWRlciByZXF1ZXN0R2VvbG9jYXRpb25BdXRob3JpemF0aW9uXTsKKyAgICB9IGVsc2Ug
eworICAgICAgICAvLyBTdGVwIDE6IGFzayBDb3JlTG9jYXRpb24gaWYgdGhlIGFwcCBjYW4gdXNl
IEdlb2xvY2F0aW9uLgorICAgICAgICBXZWJDb3JlOjpDb3JlTG9jYXRpb25HZW9sb2NhdGlvblBy
b3ZpZGVyOjpyZXF1ZXN0QXV0aG9yaXphdGlvbihyZWdpc3RyYWJsZURvbWFpbiwgW3NlbGYsIHN0
cm9uZ1NlbGYgPSByZXRhaW5QdHIoc2VsZildKGJvb2wgYXV0aG9yaXplZCkgeworICAgICAgICAg
ICAgaWYgKGF1dGhvcml6ZWQpCisgICAgICAgICAgICAgICAgW3NlbGYgZ2VvbG9jYXRpb25BdXRo
b3JpemF0aW9uR3JhbnRlZF07CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgW3Nl
bGYgZ2VvbG9jYXRpb25BdXRob3JpemF0aW9uRGVuaWVkXTsKKyAgICAgICAgfSk7CisgICAgfQog
fQogQGVuZAogCkBAIC0xNzQsNyArMTg3LDcgQEAgQGltcGxlbWVudGF0aW9uIFdLR2VvbG9jYXRp
b25Qcm92aWRlcklPUyAoV2ViR2VvbG9jYXRpb25Db3JlTG9jYXRpb25VcGRhdGVMaXN0ZW4KIAog
LSAodm9pZClnZW9sb2NhdGlvbkF1dGhvcml6YXRpb25HcmFudGVkCiB7Ci0gICAgLy8gU3RlcCAy
OiBhc2sgdGhlIHVzZXIgaWYgdGhpcyBwYXJ0aWN1bGFyIHBhZ2UgY2FuIHVzZSBnZWxvY2F0aW9u
LgorICAgIC8vIFN0ZXAgMjogYXNrIHRoZSB1c2VyIGlmIHRoaXMgcGFydGljdWxhciBwYWdlIGNh
biB1c2UgZ2VvbG9jYXRpb24uCiAgICAgaWYgKF9yZXF1ZXN0c1dhaXRpbmdGb3JDb3JlTG9jYXRp
b25BdXRob3JpemF0aW9uLmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuOwogCkBAIC0yMjYsODEg
KzIzOSw2IEBAIC0gKHZvaWQpcmVzZXRHZW9sb2NhdGlvbgogCiBAZW5kCiAKLSMgcHJhZ21hIG1h
cmsgLSBJbXBsZW1lbnRhdGlvbiBvZiBXS0xlZ2FjeUNvcmVMb2NhdGlvblByb3ZpZGVyCi0KLUBp
bXBsZW1lbnRhdGlvbiBXS0xlZ2FjeUNvcmVMb2NhdGlvblByb3ZpZGVyIHsKLSAgICBpZCA8X1dL
R2VvbG9jYXRpb25Db3JlTG9jYXRpb25MaXN0ZW5lcj4gX2xpc3RlbmVyOwotICAgIFJldGFpblB0
cjxXZWJHZW9sb2NhdGlvbkNvcmVMb2NhdGlvblByb3ZpZGVyPiBfcHJvdmlkZXI7Ci19Ci0KLS8v
IDxfV0tHZW9sb2NhdGlvbkNvcmVMb2NhdGlvblByb3ZpZGVyPiBNZXRob2RzCi0KLS0gKHZvaWQp
c2V0TGlzdGVuZXI6KGlkPF9XS0dlb2xvY2F0aW9uQ29yZUxvY2F0aW9uTGlzdGVuZXI+KWxpc3Rl
bmVyCi17Ci0gICAgQVNTRVJUKGxpc3RlbmVyICYmICFfbGlzdGVuZXIgJiYgIV9wcm92aWRlcik7
Ci0gICAgX2xpc3RlbmVyID0gbGlzdGVuZXI7Ci0gICAgX3Byb3ZpZGVyID0gYWRvcHROUyhbW1dl
Ykdlb2xvY2F0aW9uQ29yZUxvY2F0aW9uUHJvdmlkZXIgYWxsb2NdIGluaXRXaXRoTGlzdGVuZXI6
c2VsZl0pOwotfQotCi0tICh2b2lkKXJlcXVlc3RHZW9sb2NhdGlvbkF1dGhvcml6YXRpb24KLXsK
LSAgICBBU1NFUlQoX3Byb3ZpZGVyKTsKLSAgICBbX3Byb3ZpZGVyIHJlcXVlc3RHZW9sb2NhdGlv
bkF1dGhvcml6YXRpb25dOwotfQotCi0tICh2b2lkKXN0YXJ0Ci17Ci0gICAgQVNTRVJUKF9wcm92
aWRlcik7Ci0gICAgW19wcm92aWRlciBzdGFydF07Ci19Ci0KLS0gKHZvaWQpc3RvcAotewotICAg
IEFTU0VSVChfcHJvdmlkZXIpOwotICAgIFtfcHJvdmlkZXIgc3RvcF07Ci19Ci0KLS0gKHZvaWQp
c2V0RW5hYmxlSGlnaEFjY3VyYWN5OihCT09MKWZsYWcKLXsKLSAgICBBU1NFUlQoX3Byb3ZpZGVy
KTsKLSAgICBbX3Byb3ZpZGVyIHNldEVuYWJsZUhpZ2hBY2N1cmFjeTpmbGFnXTsKLX0KLQotLy8g
PFdlYkdlb2xvY2F0aW9uQ29yZUxvY2F0aW9uVXBkYXRlTGlzdGVuZXI+IE1ldGhvZHMKLQotLSAo
dm9pZClnZW9sb2NhdGlvbkF1dGhvcml6YXRpb25HcmFudGVkCi17Ci0gICAgQVNTRVJUKF9saXN0
ZW5lcik7Ci0gICAgW19saXN0ZW5lciBnZW9sb2NhdGlvbkF1dGhvcml6YXRpb25HcmFudGVkXTsK
LX0KLQotLSAodm9pZClnZW9sb2NhdGlvbkF1dGhvcml6YXRpb25EZW5pZWQKLXsKLSAgICBBU1NF
UlQoX2xpc3RlbmVyKTsKLSAgICBbX2xpc3RlbmVyIGdlb2xvY2F0aW9uQXV0aG9yaXphdGlvbkRl
bmllZF07Ci19Ci0KLS0gKHZvaWQpcG9zaXRpb25DaGFuZ2VkOihXZWJDb3JlOjpHZW9sb2NhdGlv
blBvc2l0aW9uRGF0YSYmKWNvcmVQb3NpdGlvbgotewotICAgIEFTU0VSVChfbGlzdGVuZXIpOwot
ICAgIGF1dG8gcG9zaXRpb24gPSBXZWJLaXQ6OldlYkdlb2xvY2F0aW9uUG9zaXRpb246OmNyZWF0
ZShXVEZNb3ZlKGNvcmVQb3NpdGlvbikpOwotICAgIFtfbGlzdGVuZXIgcG9zaXRpb25DaGFuZ2Vk
OndyYXBwZXIocG9zaXRpb24uZ2V0KCkpXTsKLX0KLQotLSAodm9pZCllcnJvck9jY3VycmVkOihO
U1N0cmluZyAqKWVycm9yTWVzc2FnZQotewotICAgIEFTU0VSVChfbGlzdGVuZXIpOwotICAgIFtf
bGlzdGVuZXIgZXJyb3JPY2N1cnJlZDplcnJvck1lc3NhZ2VdOwotfQotCi0tICh2b2lkKXJlc2V0
R2VvbG9jYXRpb24KLXsKLSAgICBBU1NFUlQoX2xpc3RlbmVyKTsKLSAgICBbX2xpc3RlbmVyIHJl
c2V0R2VvbG9jYXRpb25dOwotfQotCi1AZW5kCi0KICMgcHJhZ21hIG1hcmsgLSBJbXBsZW1lbnRh
dGlvbiBvZiBXS1dlYkFsbG93RGVueVBvbGljeUxpc3RlbmVyCiBAaW1wbGVtZW50YXRpb24gV0tX
ZWJBbGxvd0RlbnlQb2xpY3lMaXN0ZW5lciB7CiAgICAgRnVuY3Rpb248dm9pZChib29sKT4gX2Nv
bXBsZXRpb25IYW5kbGVyOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9q
ZWN0LnBieHByb2oKaW5kZXggMWVjOGIyYjg1Y2UxZTU2NDM3ZjJlZmQxYzQ0YzA2OTE2MDY5MTkz
MC4uY2MyOTYwOTdhODc2MzhmYTZlZjNlODYwYjc4MzJlYWY4ZWI5ZWRiYSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC00MzE5LDYgKzQz
MTksNyBAQAogCQk0NkNFM0IxMDIzRDhDODNEMDAxNkE5NkEgLyogV2ViQmFja0ZvcndhcmRMaXN0
Q291bnRzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYkJhY2tGb3J3YXJk
TGlzdENvdW50cy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0NkQ0OEZDQzI3OTlE
N0REMDA3RDIwMTQgLyogV2ViU2hhcmVkV29ya2VyU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbi5j
cHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXZWJTaGFyZWRXb3JrZXJTZXJ2ZXJUb0NvbnRleHRDb25u
ZWN0aW9uLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDZENDhGQ0QyNzk5RDdE
RTAwN0QyMDE0IC8qIFdlYlNoYXJlZFdvcmtlclNlcnZlclRvQ29udGV4dENvbm5lY3Rpb24uaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gV2ViU2hhcmVkV29ya2VyU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbi5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk0NkRBMjg1NzI3QjczRTc2MDA4OUQzMzkg
LyogV2ViR2VvbG9jYXRpb25NYW5hZ2VyUHJveHlDb2NvYS5jcHAgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGgg
PSBXZWJHZW9sb2NhdGlvbk1hbmFnZXJQcm94eUNvY29hLmNwcDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJNDZERjA2MzkxRjM5MDVFNTAwMTk4MEJCIC8qIE5ldHdvcmtDT1JTUHJlZmxp
Z2h0Q2hlY2tlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBOZXR3
b3JrQ09SU1ByZWZsaWdodENoZWNrZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQk0NkRGMDYzQTFGMzkwNUU1MDAxOTgwQkIgLyogTmV0d29ya0NPUlNQcmVmbGlnaHRDaGVja2Vy
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE5ldHdvcmtDT1JTUHJlZmxpZ2h0
Q2hlY2tlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0NkU5NzYwQTI3NTdGNkM5
MDBBQ0REMzcgLyogV2ViQnJvYWRjYXN0Q2hhbm5lbFJlZ2lzdHJ5Lm1lc3NhZ2VzLmluICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gdGV4dDsgcGF0aCA9IFdlYkJyb2FkY2FzdENoYW5uZWxSZWdpc3RyeS5tZXNzYWdlcy5p
bjsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTc2MTEsNiArNzYxMiw3IEBACiAJCQkJ
NTJENUExQUExQzU3NDk0RTAwREUzNEEzIC8qIFZpZGVvRnVsbHNjcmVlbk1hbmFnZXJQcm94eS5o
ICovLAogCQkJCTUyRDVBMUFCMUM1NzQ5NEUwMERFMzRBMyAvKiBWaWRlb0Z1bGxzY3JlZW5NYW5h
Z2VyUHJveHkubWVzc2FnZXMuaW4gKi8sCiAJCQkJNTJENUExQUMxQzU3NDk0RTAwREUzNEEzIC8q
IFZpZGVvRnVsbHNjcmVlbk1hbmFnZXJQcm94eS5tbSAqLywKKwkJCQk0NkRBMjg1NzI3QjczRTc2
MDA4OUQzMzkgLyogV2ViR2VvbG9jYXRpb25NYW5hZ2VyUHJveHlDb2NvYS5jcHAgKi8sCiAJCQkJ
QzE4RjNBMTMyNTYzMzJBNjAwNzk3RTY2IC8qIFdlYkluc3BlY3RvclByZWZlcmVuY2VPYnNlcnZl
ci5oICovLAogCQkJCUMxOEYzQTE0MjU2MzMzNDMwMDc5N0U2NiAvKiBXZWJJbnNwZWN0b3JQcmVm
ZXJlbmNlT2JzZXJ2ZXIubW0gKi8sCiAJCQkJQ0RGMUI5MTkyNjcwMjFENjAwMDdFQzEwIC8qIFdl
YktpdFN3aWZ0U29mdExpbmsuaCAqLywKQEAgLTEzNDg2LDYgKzEzNDg4LDcgQEAKIAkJCQlFMThF
NjkxODE2OUI2NjdCMDA5QjY2NzAgLyogU2VjSXRlbVNoaW1Qcm94eU1lc3NhZ2VzLmggaW4gSGVh
ZGVycyAqLywKIAkJCQk1NzBBQjhGMzIwQUUzQkQ3MDBCOEJFODcgLyogU2VjS2V5UHJveHlTdG9y
ZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNTE0RDlGNTcxOTExOUQzNTAwMDA2M0E3IC8qIFNlcnZp
Y2VzQ29udHJvbGxlci5oIGluIEhlYWRlcnMgKi8sCisJCQkJNTE2NDY1ODAyN0E5Qzc3NDAwRTFG
MkJBIC8qIFNlcnZpY2VXb3JrZXJOb3RpZmljYXRpb25IYW5kbGVyLmggaW4gSGVhZGVycyAqLywK
IAkJCQkxQUZERTY1QTE5NTRBNDJCMDBDNDhGRkEgLyogU2Vzc2lvblN0YXRlLmggaW4gSGVhZGVy
cyAqLywKIAkJCQkxQTAwMkQ0OTE5NkIzNDVEMDBCOUFENDQgLyogU2Vzc2lvblN0YXRlQ29kaW5n
LmggaW4gSGVhZGVycyAqLywKIAkJCQk5M0U3OTlDRTI3NjA0OTdCMDA3NDAwOEEgLyogU2Vzc2lv
blN0b3JhZ2VNYW5hZ2VyLmggaW4gSGVhZGVycyAqLywKQEAgLTEzOTM0LDcgKzEzOTM3LDYgQEAK
IAkJCQlCQzRBNjI5NzE0NzMxM0EwMDA2QzY4MUEgLyogV0tDb25uZWN0aW9uUmVmLmggaW4gSGVh
ZGVycyAqLywKIAkJCQlFNTk2REQ2QTI1MUU3MUQ0MDBDMjc1QTcgLyogV0tDb250YWN0UGlja2Vy
LmggaW4gSGVhZGVycyAqLywKIAkJCQk1Q0QyODY1NDFFNzIzNUIxMDA5NEZEQzggLyogV0tDb250
ZW50UnVsZUxpc3QuaCBpbiBIZWFkZXJzICovLAotCQkJCTUxNjQ2NTgwMjdBOUM3NzQwMEUxRjJC
QSAvKiBTZXJ2aWNlV29ya2VyTm90aWZpY2F0aW9uSGFuZGxlci5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJNUNEMjg2NTUxRTcyMzVCODAwOTRGREM4IC8qIFdLQ29udGVudFJ1bGVMaXN0SW50ZXJuYWwu
aCBpbiBIZWFkZXJzICovLAogCQkJCTVDNTEzOURCMjU5MjdEODAwMDlDM0UzMCAvKiBXS0NvbnRl
bnRSdWxlTGlzdFByaXZhdGUuaCBpbiBIZWFkZXJzICovLAogCQkJCTVDRDI4NjUxMUU3MjM1OTkw
MDk0RkRDOCAvKiBXS0NvbnRlbnRSdWxlTGlzdFN0b3JlLmggaW4gSGVhZGVycyAqLywKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HZW9sb2NhdGlvbi9XZWJHZW9sb2NhdGlv
bk1hbmFnZXIuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dlb2xvY2F0aW9uL1dlYkdl
b2xvY2F0aW9uTWFuYWdlci5jcHAKaW5kZXggNWE5YzlmNGQyYTFjZDY2YTRiNjc1OWI1OTM4N2Vh
MmNmNTViMmFhOC4uOTRmMDE4MjFiOGMxMGQxMjI3ZjBjNTQxMmU5NjY5NzQ2OTI4MjcxYiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dlb2xvY2F0aW9uL1dlYkdlb2xvY2F0
aW9uTWFuYWdlci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dlb2xvY2F0aW9u
L1dlYkdlb2xvY2F0aW9uTWFuYWdlci5jcHAKQEAgLTM5LDYgKzM5LDE0IEBACiBuYW1lc3BhY2Ug
V2ViS2l0IHsKIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCitzdGF0aWMgUmVnaXN0cmFibGVE
b21haW4gcmVnaXN0cmFibGVEb21haW5Gb3JQYWdlKFdlYlBhZ2UmIHBhZ2UpCit7CisgICAgYXV0
byogZG9jdW1lbnQgPSBwYWdlLmNvcmVQYWdlKCkgPyBwYWdlLmNvcmVQYWdlKCktPm1haW5GcmFt
ZSgpLmRvY3VtZW50KCkgOiBudWxscHRyOworICAgIGlmICghZG9jdW1lbnQpCisgICAgICAgIHJl
dHVybiBSZWdpc3RyYWJsZURvbWFpbiB7IH07CisgICAgcmV0dXJuIFJlZ2lzdHJhYmxlRG9tYWlu
IHsgZG9jdW1lbnQtPnVybCgpIH07Cit9CisKIGNvbnN0IGNoYXIqIFdlYkdlb2xvY2F0aW9uTWFu
YWdlcjo6c3VwcGxlbWVudE5hbWUoKQogewogICAgIHJldHVybiAiV2ViR2VvbG9jYXRpb25NYW5h
Z2VyIjsKQEAgLTUwLDg4ICs1OCwxNDIgQEAgV2ViR2VvbG9jYXRpb25NYW5hZ2VyOjpXZWJHZW9s
b2NhdGlvbk1hbmFnZXIoV2ViUHJvY2VzcyYgcHJvY2VzcykKICAgICBtX3Byb2Nlc3MuYWRkTWVz
c2FnZVJlY2VpdmVyKE1lc3NhZ2VzOjpXZWJHZW9sb2NhdGlvbk1hbmFnZXI6Om1lc3NhZ2VSZWNl
aXZlck5hbWUoKSwgKnRoaXMpOwogfQogCi12b2lkIFdlYkdlb2xvY2F0aW9uTWFuYWdlcjo6cmVn
aXN0ZXJXZWJQYWdlKFdlYlBhZ2UmIHBhZ2UsIGNvbnN0IFN0cmluZyYgYXV0aG9yaXphdGlvblRv
a2VuKQotewotICAgIGJvb2wgd2FzVXBkYXRpbmcgPSBpc1VwZGF0aW5nKCk7CitXZWJHZW9sb2Nh
dGlvbk1hbmFnZXI6On5XZWJHZW9sb2NhdGlvbk1hbmFnZXIoKSA9IGRlZmF1bHQ7CiAKLSAgICBt
X3BhZ2VTZXQuYWRkKHBhZ2UpOwordm9pZCBXZWJHZW9sb2NhdGlvbk1hbmFnZXI6OnJlZ2lzdGVy
V2ViUGFnZShXZWJQYWdlJiBwYWdlLCBjb25zdCBTdHJpbmcmIGF1dGhvcml6YXRpb25Ub2tlbiwg
Ym9vbCBuZWVkc0hpZ2hBY2N1cmFjeSkKK3sKKyAgICBhdXRvIHJlZ2lzdHJhYmxlRG9tYWluID0g
cmVnaXN0cmFibGVEb21haW5Gb3JQYWdlKHBhZ2UpOworICAgIGlmIChyZWdpc3RyYWJsZURvbWFp
bi5zdHJpbmcoKS5pc0VtcHR5KCkpCisgICAgICAgIHJldHVybjsKKworICAgIGF1dG8mIHBhZ2VT
ZXRzID0gbV9wYWdlU2V0cy5lbnN1cmUocmVnaXN0cmFibGVEb21haW4sIFtdIHsKKyAgICAgICAg
cmV0dXJuIFBhZ2VTZXRzIHsgfTsKKyAgICB9KS5pdGVyYXRvci0+dmFsdWU7CisgICAgYm9vbCB3
YXNVcGRhdGluZyA9IGlzVXBkYXRpbmcocGFnZVNldHMpOworICAgIGJvb2wgaGlnaEFjY3VyYWN5
V2FzRW5hYmxlZCA9IGlzSGlnaEFjY3VyYWN5RW5hYmxlZChwYWdlU2V0cyk7CisKKyAgICBwYWdl
U2V0cy5wYWdlU2V0LmFkZChwYWdlKTsKKyAgICBpZiAobmVlZHNIaWdoQWNjdXJhY3kpCisgICAg
ICAgIHBhZ2VTZXRzLmhpZ2hBY2N1cmFjeVBhZ2VTZXQuYWRkKHBhZ2UpOworICAgIG1fcGFnZVRv
UmVnaXN0cmFibGVEb21haW4uYWRkKCZwYWdlLCByZWdpc3RyYWJsZURvbWFpbik7CisKKyAgICBp
ZiAoIXdhc1VwZGF0aW5nKSB7CisgICAgICAgIG1fcHJvY2Vzcy5wYXJlbnRQcm9jZXNzQ29ubmVj
dGlvbigpLT5zZW5kKE1lc3NhZ2VzOjpXZWJHZW9sb2NhdGlvbk1hbmFnZXJQcm94eTo6U3RhcnRV
cGRhdGluZyhyZWdpc3RyYWJsZURvbWFpbiwgcGFnZS53ZWJQYWdlUHJveHlJZGVudGlmaWVyKCks
IGF1dGhvcml6YXRpb25Ub2tlbiwgbmVlZHNIaWdoQWNjdXJhY3kpLCAwKTsKKyAgICAgICAgcmV0
dXJuOworICAgIH0KIAotICAgIGlmICghd2FzVXBkYXRpbmcpCi0gICAgICAgIG1fcHJvY2Vzcy5w
YXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpLT5zZW5kKE1lc3NhZ2VzOjpXZWJHZW9sb2NhdGlvbk1h
bmFnZXJQcm94eTo6U3RhcnRVcGRhdGluZyhwYWdlLndlYlBhZ2VQcm94eUlkZW50aWZpZXIoKSwg
YXV0aG9yaXphdGlvblRva2VuKSwgMCk7CisgICAgYm9vbCBoaWdoQWNjdXJhY3lTaG91bGRCZUVu
YWJsZWQgPSBpc0hpZ2hBY2N1cmFjeUVuYWJsZWQocGFnZVNldHMpOworICAgIGlmIChoaWdoQWNj
dXJhY3lXYXNFbmFibGVkICE9IGhpZ2hBY2N1cmFjeVNob3VsZEJlRW5hYmxlZCkKKyAgICAgICAg
bV9wcm9jZXNzLnBhcmVudFByb2Nlc3NDb25uZWN0aW9uKCktPnNlbmQoTWVzc2FnZXM6OldlYkdl
b2xvY2F0aW9uTWFuYWdlclByb3h5OjpTZXRFbmFibGVIaWdoQWNjdXJhY3kocmVnaXN0cmFibGVE
b21haW4sIGhpZ2hBY2N1cmFjeVNob3VsZEJlRW5hYmxlZCksIDApOwogfQogCiB2b2lkIFdlYkdl
b2xvY2F0aW9uTWFuYWdlcjo6dW5yZWdpc3RlcldlYlBhZ2UoV2ViUGFnZSYgcGFnZSkKIHsKLSAg
ICBib29sIGhpZ2hBY2N1cmFjeVdhc0VuYWJsZWQgPSBpc0hpZ2hBY2N1cmFjeUVuYWJsZWQoKTsK
KyAgICBhdXRvIHJlZ2lzdHJhYmxlRG9tYWluID0gbV9wYWdlVG9SZWdpc3RyYWJsZURvbWFpbi50
YWtlKCZwYWdlKTsKKyAgICBpZiAocmVnaXN0cmFibGVEb21haW4uc3RyaW5nKCkuaXNFbXB0eSgp
KQorICAgICAgICByZXR1cm47CisKKyAgICBhdXRvIGl0ID0gbV9wYWdlU2V0cy5maW5kKHJlZ2lz
dHJhYmxlRG9tYWluKTsKKyAgICBpZiAoaXQgPT0gbV9wYWdlU2V0cy5lbmQoKSkKKyAgICAgICAg
cmV0dXJuOwogCi0gICAgbV9wYWdlU2V0LnJlbW92ZShwYWdlKTsKLSAgICBtX2hpZ2hBY2N1cmFj
eVBhZ2VTZXQucmVtb3ZlKHBhZ2UpOworICAgIGF1dG8mIHBhZ2VTZXRzID0gaXQtPnZhbHVlOwor
ICAgIGJvb2wgaGlnaEFjY3VyYWN5V2FzRW5hYmxlZCA9IGlzSGlnaEFjY3VyYWN5RW5hYmxlZChw
YWdlU2V0cyk7CiAKLSAgICBpZiAoIWlzVXBkYXRpbmcoKSkKLSAgICAgICAgbV9wcm9jZXNzLnBh
cmVudFByb2Nlc3NDb25uZWN0aW9uKCktPnNlbmQoTWVzc2FnZXM6OldlYkdlb2xvY2F0aW9uTWFu
YWdlclByb3h5OjpTdG9wVXBkYXRpbmcoKSwgMCk7CisgICAgcGFnZVNldHMucGFnZVNldC5yZW1v
dmUocGFnZSk7CisgICAgcGFnZVNldHMuaGlnaEFjY3VyYWN5UGFnZVNldC5yZW1vdmUocGFnZSk7
CisKKyAgICBpZiAoIWlzVXBkYXRpbmcocGFnZVNldHMpKQorICAgICAgICBtX3Byb2Nlc3MucGFy
ZW50UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+c2VuZChNZXNzYWdlczo6V2ViR2VvbG9jYXRpb25NYW5h
Z2VyUHJveHk6OlN0b3BVcGRhdGluZyhyZWdpc3RyYWJsZURvbWFpbiksIDApOwogICAgIGVsc2Ug
ewotICAgICAgICBib29sIGhpZ2hBY2N1cmFjeVNob3VsZEJlRW5hYmxlZCA9IGlzSGlnaEFjY3Vy
YWN5RW5hYmxlZCgpOworICAgICAgICBib29sIGhpZ2hBY2N1cmFjeVNob3VsZEJlRW5hYmxlZCA9
IGlzSGlnaEFjY3VyYWN5RW5hYmxlZChwYWdlU2V0cyk7CiAgICAgICAgIGlmIChoaWdoQWNjdXJh
Y3lXYXNFbmFibGVkICE9IGhpZ2hBY2N1cmFjeVNob3VsZEJlRW5hYmxlZCkKLSAgICAgICAgICAg
IG1fcHJvY2Vzcy5wYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpLT5zZW5kKE1lc3NhZ2VzOjpXZWJH
ZW9sb2NhdGlvbk1hbmFnZXJQcm94eTo6U2V0RW5hYmxlSGlnaEFjY3VyYWN5KGhpZ2hBY2N1cmFj
eVNob3VsZEJlRW5hYmxlZCksIDApOworICAgICAgICAgICAgbV9wcm9jZXNzLnBhcmVudFByb2Nl
c3NDb25uZWN0aW9uKCktPnNlbmQoTWVzc2FnZXM6OldlYkdlb2xvY2F0aW9uTWFuYWdlclByb3h5
OjpTZXRFbmFibGVIaWdoQWNjdXJhY3kocmVnaXN0cmFibGVEb21haW4sIGhpZ2hBY2N1cmFjeVNo
b3VsZEJlRW5hYmxlZCksIDApOwogICAgIH0KKworICAgIGlmIChwYWdlU2V0cy5wYWdlU2V0LmNv
bXB1dGVzRW1wdHkoKSAmJiBwYWdlU2V0cy5oaWdoQWNjdXJhY3lQYWdlU2V0LmNvbXB1dGVzRW1w
dHkoKSkKKyAgICAgICAgbV9wYWdlU2V0cy5yZW1vdmUoaXQpOwogfQogCiB2b2lkIFdlYkdlb2xv
Y2F0aW9uTWFuYWdlcjo6c2V0RW5hYmxlSGlnaEFjY3VyYWN5Rm9yUGFnZShXZWJQYWdlJiBwYWdl
LCBib29sIGVuYWJsZWQpCiB7Ci0gICAgYm9vbCBoaWdoQWNjdXJhY3lXYXNFbmFibGVkID0gaXNI
aWdoQWNjdXJhY3lFbmFibGVkKCk7CisgICAgYXV0byByZWdpc3RyYWJsZURvbWFpbiA9IG1fcGFn
ZVRvUmVnaXN0cmFibGVEb21haW4uZ2V0KCZwYWdlKTsKKyAgICBpZiAocmVnaXN0cmFibGVEb21h
aW4uc3RyaW5nKCkuaXNFbXB0eSgpKQorICAgICAgICByZXR1cm47CisKKyAgICBhdXRvIGl0ID0g
bV9wYWdlU2V0cy5maW5kKHJlZ2lzdHJhYmxlRG9tYWluKTsKKyAgICBBU1NFUlQoaXQgIT0gbV9w
YWdlU2V0cy5lbmQoKSk7CisgICAgaWYgKGl0ID09IG1fcGFnZVNldHMuZW5kKCkpCisgICAgICAg
IHJldHVybjsKKworICAgIGF1dG8mIHBhZ2VTZXRzID0gaXQtPnZhbHVlOworICAgIGJvb2wgaGln
aEFjY3VyYWN5V2FzRW5hYmxlZCA9IGlzSGlnaEFjY3VyYWN5RW5hYmxlZChwYWdlU2V0cyk7CiAK
ICAgICBpZiAoZW5hYmxlZCkKLSAgICAgICAgbV9oaWdoQWNjdXJhY3lQYWdlU2V0LmFkZChwYWdl
KTsKKyAgICAgICAgcGFnZVNldHMuaGlnaEFjY3VyYWN5UGFnZVNldC5hZGQocGFnZSk7CiAgICAg
ZWxzZQotICAgICAgICBtX2hpZ2hBY2N1cmFjeVBhZ2VTZXQucmVtb3ZlKHBhZ2UpOworICAgICAg
ICBwYWdlU2V0cy5oaWdoQWNjdXJhY3lQYWdlU2V0LnJlbW92ZShwYWdlKTsKIAotICAgIGJvb2wg
aGlnaEFjY3VyYWN5U2hvdWxkQmVFbmFibGVkID0gaXNIaWdoQWNjdXJhY3lFbmFibGVkKCk7Ci0g
ICAgaWYgKGhpZ2hBY2N1cmFjeVdhc0VuYWJsZWQgIT0gaGlnaEFjY3VyYWN5U2hvdWxkQmVFbmFi
bGVkKQotICAgICAgICBtX3Byb2Nlc3MucGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+c2VuZChN
ZXNzYWdlczo6V2ViR2VvbG9jYXRpb25NYW5hZ2VyUHJveHk6OlNldEVuYWJsZUhpZ2hBY2N1cmFj
eShoaWdoQWNjdXJhY3lTaG91bGRCZUVuYWJsZWQpLCAwKTsKKyAgICBib29sIGhpZ2hBY2N1cmFj
eVNob3VsZEJlRW5hYmxlZCA9IGlzSGlnaEFjY3VyYWN5RW5hYmxlZChwYWdlU2V0cyk7CisgICAg
aWYgKGhpZ2hBY2N1cmFjeVdhc0VuYWJsZWQgIT0gaXNIaWdoQWNjdXJhY3lFbmFibGVkKHBhZ2VT
ZXRzKSkKKyAgICAgICAgbV9wcm9jZXNzLnBhcmVudFByb2Nlc3NDb25uZWN0aW9uKCktPnNlbmQo
TWVzc2FnZXM6OldlYkdlb2xvY2F0aW9uTWFuYWdlclByb3h5OjpTZXRFbmFibGVIaWdoQWNjdXJh
Y3kocmVnaXN0cmFibGVEb21haW4sIGhpZ2hBY2N1cmFjeVNob3VsZEJlRW5hYmxlZCksIDApOwog
fQogCi12b2lkIFdlYkdlb2xvY2F0aW9uTWFuYWdlcjo6ZGlkQ2hhbmdlUG9zaXRpb24oY29uc3Qg
R2VvbG9jYXRpb25Qb3NpdGlvbkRhdGEmIHBvc2l0aW9uKQordm9pZCBXZWJHZW9sb2NhdGlvbk1h
bmFnZXI6OmRpZENoYW5nZVBvc2l0aW9uKGNvbnN0IFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWlu
JiByZWdpc3RyYWJsZURvbWFpbiwgY29uc3QgR2VvbG9jYXRpb25Qb3NpdGlvbkRhdGEmIHBvc2l0
aW9uKQogewogI2lmIEVOQUJMRShHRU9MT0NBVElPTikKLSAgICBmb3IgKGF1dG8mIHBhZ2UgOiBj
b3B5VG9WZWN0b3IobV9wYWdlU2V0KSkgewotICAgICAgICBpZiAocGFnZS0+Y29yZVBhZ2UoKSkK
LSAgICAgICAgICAgIEdlb2xvY2F0aW9uQ29udHJvbGxlcjo6ZnJvbShwYWdlLT5jb3JlUGFnZSgp
KS0+cG9zaXRpb25DaGFuZ2VkKHBvc2l0aW9uKTsKKyAgICBpZiAoYXV0byBpdCA9IG1fcGFnZVNl
dHMuZmluZChyZWdpc3RyYWJsZURvbWFpbik7IGl0ICE9IG1fcGFnZVNldHMuZW5kKCkpIHsKKyAg
ICAgICAgZm9yIChhdXRvJiBwYWdlIDogY29weVRvVmVjdG9yKGl0LT52YWx1ZS5wYWdlU2V0KSkg
eworICAgICAgICAgICAgaWYgKHBhZ2UtPmNvcmVQYWdlKCkpCisgICAgICAgICAgICAgICAgR2Vv
bG9jYXRpb25Db250cm9sbGVyOjpmcm9tKHBhZ2UtPmNvcmVQYWdlKCkpLT5wb3NpdGlvbkNoYW5n
ZWQocG9zaXRpb24pOworICAgICAgICB9CiAgICAgfQogI2Vsc2UKKyAgICBVTlVTRURfUEFSQU0o
cmVnaXN0cmFibGVEb21haW4pOwogICAgIFVOVVNFRF9QQVJBTShwb3NpdGlvbik7CiAjZW5kaWYg
Ly8gRU5BQkxFKEdFT0xPQ0FUSU9OKQogfQogCi12b2lkIFdlYkdlb2xvY2F0aW9uTWFuYWdlcjo6
ZGlkRmFpbFRvRGV0ZXJtaW5lUG9zaXRpb24oY29uc3QgU3RyaW5nJiBlcnJvck1lc3NhZ2UpCit2
b2lkIFdlYkdlb2xvY2F0aW9uTWFuYWdlcjo6ZGlkRmFpbFRvRGV0ZXJtaW5lUG9zaXRpb24oY29u
c3QgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4mIHJlZ2lzdHJhYmxlRG9tYWluLCBjb25zdCBT
dHJpbmcmIGVycm9yTWVzc2FnZSkKIHsKICNpZiBFTkFCTEUoR0VPTE9DQVRJT04pCi0gICAgLy8g
RklYTUU6IEFkZCBsb2NhbGl6ZWQgZXJyb3Igc3RyaW5nLgotICAgIGF1dG8gZXJyb3IgPSBHZW9s
b2NhdGlvbkVycm9yOjpjcmVhdGUoR2VvbG9jYXRpb25FcnJvcjo6UG9zaXRpb25VbmF2YWlsYWJs
ZSwgZXJyb3JNZXNzYWdlKTsKLQotICAgIGZvciAoYXV0byYgcGFnZSA6IGNvcHlUb1ZlY3Rvciht
X3BhZ2VTZXQpKSB7Ci0gICAgICAgIGlmIChwYWdlLT5jb3JlUGFnZSgpKQotICAgICAgICAgICAg
R2VvbG9jYXRpb25Db250cm9sbGVyOjpmcm9tKHBhZ2UtPmNvcmVQYWdlKCkpLT5lcnJvck9jY3Vy
cmVkKGVycm9yLmdldCgpKTsKKyAgICBpZiAoYXV0byBpdCA9IG1fcGFnZVNldHMuZmluZChyZWdp
c3RyYWJsZURvbWFpbik7IGl0ICE9IG1fcGFnZVNldHMuZW5kKCkpIHsKKyAgICAgICAgLy8gRklY
TUU6IEFkZCBsb2NhbGl6ZWQgZXJyb3Igc3RyaW5nLgorICAgICAgICBhdXRvIGVycm9yID0gR2Vv
bG9jYXRpb25FcnJvcjo6Y3JlYXRlKEdlb2xvY2F0aW9uRXJyb3I6OlBvc2l0aW9uVW5hdmFpbGFi
bGUsIGVycm9yTWVzc2FnZSk7CisKKyAgICAgICAgZm9yIChhdXRvJiBwYWdlIDogY29weVRvVmVj
dG9yKGl0LT52YWx1ZS5wYWdlU2V0KSkgeworICAgICAgICAgICAgaWYgKHBhZ2UtPmNvcmVQYWdl
KCkpCisgICAgICAgICAgICAgICAgR2VvbG9jYXRpb25Db250cm9sbGVyOjpmcm9tKHBhZ2UtPmNv
cmVQYWdlKCkpLT5lcnJvck9jY3VycmVkKGVycm9yLmdldCgpKTsKKyAgICAgICAgfQogICAgIH0K
ICNlbHNlCisgICAgVU5VU0VEX1BBUkFNKHJlZ2lzdHJhYmxlRG9tYWluKTsKICAgICBVTlVTRURf
UEFSQU0oZXJyb3JNZXNzYWdlKTsKICNlbmRpZiAvLyBFTkFCTEUoR0VPTE9DQVRJT04pCiB9CiAK
LSNpZiBQTEFURk9STShJT1NfRkFNSUxZKQotdm9pZCBXZWJHZW9sb2NhdGlvbk1hbmFnZXI6OnJl
c2V0UGVybWlzc2lvbnMoKQorYm9vbCBXZWJHZW9sb2NhdGlvbk1hbmFnZXI6OmlzVXBkYXRpbmco
Y29uc3QgUGFnZVNldHMmIHBhZ2VTZXRzKSBjb25zdAogewotICAgIG1fcHJvY2Vzcy5yZXNldEFs
bEdlb2xvY2F0aW9uUGVybWlzc2lvbnMoKTsKKyAgICByZXR1cm4gIXBhZ2VTZXRzLnBhZ2VTZXQu
Y29tcHV0ZXNFbXB0eSgpOwogfQotI2VuZGlmIC8vIFBMQVRGT1JNKElPU19GQU1JTFkpCiAKLWJv
b2wgV2ViR2VvbG9jYXRpb25NYW5hZ2VyOjppc1VwZGF0aW5nKCkgY29uc3QKK2Jvb2wgV2ViR2Vv
bG9jYXRpb25NYW5hZ2VyOjppc0hpZ2hBY2N1cmFjeUVuYWJsZWQoY29uc3QgUGFnZVNldHMmIHBh
Z2VTZXRzKSBjb25zdAogewotICAgIHJldHVybiAhbV9wYWdlU2V0LmNvbXB1dGVzRW1wdHkoKTsK
KyAgICByZXR1cm4gIXBhZ2VTZXRzLmhpZ2hBY2N1cmFjeVBhZ2VTZXQuY29tcHV0ZXNFbXB0eSgp
OwogfQogCi1ib29sIFdlYkdlb2xvY2F0aW9uTWFuYWdlcjo6aXNIaWdoQWNjdXJhY3lFbmFibGVk
KCkgY29uc3QKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZKQordm9pZCBXZWJHZW9sb2NhdGlvbk1h
bmFnZXI6OnJlc2V0UGVybWlzc2lvbnMoY29uc3QgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4m
IHJlZ2lzdHJhYmxlRG9tYWluKQogewotICAgIHJldHVybiAhbV9oaWdoQWNjdXJhY3lQYWdlU2V0
LmNvbXB1dGVzRW1wdHkoKTsKKyAgICBhdXRvIGl0ID0gbV9wYWdlU2V0cy5maW5kKHJlZ2lzdHJh
YmxlRG9tYWluKTsKKyAgICBpZiAoaXQgIT0gbV9wYWdlU2V0cy5lbmQoKSkKKyAgICAgICAgcmV0
dXJuOworCisgICAgZm9yIChhdXRvJiBwYWdlIDogY29weVRvVmVjdG9yKGl0LT52YWx1ZS5wYWdl
U2V0KSkgeworICAgICAgICBpZiAoYXV0byogbWFpbkZyYW1lID0gcGFnZS0+Y29yZVBhZ2UoKSA/
ICZwYWdlLT5jb3JlUGFnZSgpLT5tYWluRnJhbWUoKSA6IG51bGxwdHIpCisgICAgICAgICAgICBt
YWluRnJhbWUtPnJlc2V0QWxsR2VvbG9jYXRpb25QZXJtaXNzaW9uKCk7CisgICAgfQogfQorI2Vu
ZGlmIC8vIFBMQVRGT1JNKElPU19GQU1JTFkpCiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dlb2xvY2F0aW9uL1dlYkdlb2xvY2F0
aW9uTWFuYWdlci5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dlb2xvY2F0aW9uL1dlYkdl
b2xvY2F0aW9uTWFuYWdlci5oCmluZGV4IDQ0ODM1OTYzNTg3ODIxOTdjY2JhNTkyOGVmZTYyNTE1
MjZjMTg1MTUuLmNiNjU4OGM2ZTcxODhiZWZiZDU1MTIzZDRhNTU5YjJiMGIzMWE5M2EgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HZW9sb2NhdGlvbi9XZWJHZW9sb2NhdGlv
bk1hbmFnZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR2VvbG9jYXRpb24vV2Vi
R2VvbG9jYXRpb25NYW5hZ2VyLmgKQEAgLTI4LDYgKzI4LDcgQEAKICNpbmNsdWRlICJNZXNzYWdl
UmVjZWl2ZXIuaCIKICNpbmNsdWRlICJXZWJHZW9sb2NhdGlvblBvc2l0aW9uLmgiCiAjaW5jbHVk
ZSAiV2ViUHJvY2Vzc1N1cHBsZW1lbnQuaCIKKyNpbmNsdWRlIDxXZWJDb3JlL1JlZ2lzdHJhYmxl
RG9tYWluLmg+CiAjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KICNpbmNsdWRlIDx3dGYvTm9uY29w
eWFibGUuaD4KICNpbmNsdWRlIDx3dGYvV2Vha0hhc2hTZXQuaD4KQEAgLTQ3LDMxICs0OCwzNCBA
QCBjbGFzcyBXZWJHZW9sb2NhdGlvbk1hbmFnZXIgOiBwdWJsaWMgV2ViUHJvY2Vzc1N1cHBsZW1l
bnQsIHB1YmxpYyBJUEM6Ok1lc3NhZ2VSZQogICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKFdlYkdl
b2xvY2F0aW9uTWFuYWdlcik7CiBwdWJsaWM6CiAgICAgZXhwbGljaXQgV2ViR2VvbG9jYXRpb25N
YW5hZ2VyKFdlYlByb2Nlc3MmKTsKKyAgICB+V2ViR2VvbG9jYXRpb25NYW5hZ2VyKCk7CiAKICAg
ICBzdGF0aWMgY29uc3QgY2hhciogc3VwcGxlbWVudE5hbWUoKTsKIAotICAgIHZvaWQgcmVnaXN0
ZXJXZWJQYWdlKFdlYlBhZ2UmLCBjb25zdCBTdHJpbmcmIGF1dGhvcml6YXRpb25Ub2tlbik7Cisg
ICAgdm9pZCByZWdpc3RlcldlYlBhZ2UoV2ViUGFnZSYsIGNvbnN0IFN0cmluZyYgYXV0aG9yaXph
dGlvblRva2VuLCBib29sIG5lZWRzSGlnaEFjY3VyYWN5KTsKICAgICB2b2lkIHVucmVnaXN0ZXJX
ZWJQYWdlKFdlYlBhZ2UmKTsKICAgICB2b2lkIHNldEVuYWJsZUhpZ2hBY2N1cmFjeUZvclBhZ2Uo
V2ViUGFnZSYsIGJvb2wpOwogCi0gICAgdm9pZCByZXF1ZXN0UGVybWlzc2lvbihXZWJDb3JlOjpH
ZW9sb2NhdGlvbiYpOwotCiBwcml2YXRlOgogICAgIC8vIElQQzo6TWVzc2FnZVJlY2VpdmVyCiAg
ICAgdm9pZCBkaWRSZWNlaXZlTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6OkRlY29kZXIm
KSBvdmVycmlkZTsKIAotICAgIGJvb2wgaXNVcGRhdGluZygpIGNvbnN0OwotICAgIGJvb2wgaXNI
aWdoQWNjdXJhY3lFbmFibGVkKCkgY29uc3Q7Ci0KLSAgICB2b2lkIGRpZENoYW5nZVBvc2l0aW9u
KGNvbnN0IFdlYkNvcmU6Okdlb2xvY2F0aW9uUG9zaXRpb25EYXRhJik7Ci0gICAgdm9pZCBkaWRG
YWlsVG9EZXRlcm1pbmVQb3NpdGlvbihjb25zdCBTdHJpbmcmIGVycm9yTWVzc2FnZSk7CisgICAg
dm9pZCBkaWRDaGFuZ2VQb3NpdGlvbihjb25zdCBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiYs
IGNvbnN0IFdlYkNvcmU6Okdlb2xvY2F0aW9uUG9zaXRpb25EYXRhJik7CisgICAgdm9pZCBkaWRG
YWlsVG9EZXRlcm1pbmVQb3NpdGlvbihjb25zdCBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiYs
IGNvbnN0IFN0cmluZyYgZXJyb3JNZXNzYWdlKTsKICNpZiBQTEFURk9STShJT1NfRkFNSUxZKQot
ICAgIHZvaWQgcmVzZXRQZXJtaXNzaW9ucygpOworICAgIHZvaWQgcmVzZXRQZXJtaXNzaW9ucyhj
b25zdCBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiYpOwogI2VuZGlmIC8vIFBMQVRGT1JNKElP
U19GQU1JTFkpCiAKKyAgICBzdHJ1Y3QgUGFnZVNldHMgeworICAgICAgICBXZWFrSGFzaFNldDxX
ZWJQYWdlPiBwYWdlU2V0OworICAgICAgICBXZWFrSGFzaFNldDxXZWJQYWdlPiBoaWdoQWNjdXJh
Y3lQYWdlU2V0OworICAgIH07CisgICAgYm9vbCBpc1VwZGF0aW5nKGNvbnN0IFBhZ2VTZXRzJikg
Y29uc3Q7CisgICAgYm9vbCBpc0hpZ2hBY2N1cmFjeUVuYWJsZWQoY29uc3QgUGFnZVNldHMmKSBj
b25zdDsKKwogICAgIFdlYlByb2Nlc3MmIG1fcHJvY2VzczsKLSAgICBXZWFrSGFzaFNldDxXZWJQ
YWdlPiBtX3BhZ2VTZXQ7Ci0gICAgV2Vha0hhc2hTZXQ8V2ViUGFnZT4gbV9oaWdoQWNjdXJhY3lQ
YWdlU2V0OworICAgIEhhc2hNYXA8V2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4sIFBhZ2VTZXRz
PiBtX3BhZ2VTZXRzOworICAgIEhhc2hNYXA8V2ViUGFnZSosIFdlYkNvcmU6OlJlZ2lzdHJhYmxl
RG9tYWluPiBtX3BhZ2VUb1JlZ2lzdHJhYmxlRG9tYWluOwogfTsKIAogfSAvLyBuYW1lc3BhY2Ug
V2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR2VvbG9jYXRpb24v
V2ViR2VvbG9jYXRpb25NYW5hZ2VyLm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL0dlb2xvY2F0aW9uL1dlYkdlb2xvY2F0aW9uTWFuYWdlci5tZXNzYWdlcy5pbgppbmRleCA3
OWYzYjRjZTRlZmNhZjM0ODg1N2Q5OTMzMjUzZDg5NTRmMGYxYjg3Li42ZmNjNjBkMmUwOGUyNmVh
YjczYzFmNzFjZDg4NDJkYzUxMDUyZDE4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvR2VvbG9jYXRpb24vV2ViR2VvbG9jYXRpb25NYW5hZ2VyLm1lc3NhZ2VzLmluCisrKyBi
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HZW9sb2NhdGlvbi9XZWJHZW9sb2NhdGlvbk1hbmFn
ZXIubWVzc2FnZXMuaW4KQEAgLTIxLDkgKzIxLDkgQEAKICMgT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KIAogbWVzc2Fn
ZXMgLT4gV2ViR2VvbG9jYXRpb25NYW5hZ2VyIE5vdFJlZkNvdW50ZWQgewotICAgIERpZENoYW5n
ZVBvc2l0aW9uKFdlYkNvcmU6Okdlb2xvY2F0aW9uUG9zaXRpb25EYXRhIHBvc2l0aW9uKTsKLSAg
ICBEaWRGYWlsVG9EZXRlcm1pbmVQb3NpdGlvbihTdHJpbmcgZXJyb3JNZXNzYWdlKTsKKyAgICBE
aWRDaGFuZ2VQb3NpdGlvbihXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiByZWdpc3RyYWJsZURv
bWFpbiwgV2ViQ29yZTo6R2VvbG9jYXRpb25Qb3NpdGlvbkRhdGEgcG9zaXRpb24pOworICAgIERp
ZEZhaWxUb0RldGVybWluZVBvc2l0aW9uKFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluIHJlZ2lz
dHJhYmxlRG9tYWluLCBTdHJpbmcgZXJyb3JNZXNzYWdlKTsKICNpZiBQTEFURk9STShJT1NfRkFN
SUxZKQotICAgIFJlc2V0UGVybWlzc2lvbnMoKTsKKyAgICBSZXNldFBlcm1pc3Npb25zKFdlYkNv
cmU6OlJlZ2lzdHJhYmxlRG9tYWluIHJlZ2lzdHJhYmxlRG9tYWluKTsKICNlbmRpZgogfQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkdlb2xv
Y2F0aW9uQ2xpZW50LmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9y
dC9XZWJHZW9sb2NhdGlvbkNsaWVudC5jcHAKaW5kZXggZWEwMmYyYWMxNmY3MzFiZjU2NDJmODY3
OGQ4NmE0OTgxMWQ4YzM4Ni4uZDE4ZGY3ZWZhZjU2ZWZjZmM4ZDE2OTljOTFjZDI2YjY4OWJjODI2
YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dl
Ykdlb2xvY2F0aW9uQ2xpZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2Vi
Q29yZVN1cHBvcnQvV2ViR2VvbG9jYXRpb25DbGllbnQuY3BwCkBAIC00OCw5ICs0OCw5IEBAIHZv
aWQgV2ViR2VvbG9jYXRpb25DbGllbnQ6Omdlb2xvY2F0aW9uRGVzdHJveWVkKCkKICAgICBkZWxl
dGUgdGhpczsKIH0KIAotdm9pZCBXZWJHZW9sb2NhdGlvbkNsaWVudDo6c3RhcnRVcGRhdGluZyhj
b25zdCBTdHJpbmcmIGF1dGhvcml6YXRpb25Ub2tlbikKK3ZvaWQgV2ViR2VvbG9jYXRpb25DbGll
bnQ6OnN0YXJ0VXBkYXRpbmcoY29uc3QgU3RyaW5nJiBhdXRob3JpemF0aW9uVG9rZW4sIGJvb2wg
bmVlZHNIaWdoQWNjdXJhY3kpCiB7Ci0gICAgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkuc3VwcGxl
bWVudDxXZWJHZW9sb2NhdGlvbk1hbmFnZXI+KCktPnJlZ2lzdGVyV2ViUGFnZShtX3BhZ2UsIGF1
dGhvcml6YXRpb25Ub2tlbik7CisgICAgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkuc3VwcGxlbWVu
dDxXZWJHZW9sb2NhdGlvbk1hbmFnZXI+KCktPnJlZ2lzdGVyV2ViUGFnZShtX3BhZ2UsIGF1dGhv
cml6YXRpb25Ub2tlbiwgbmVlZHNIaWdoQWNjdXJhY3kpOwogfQogCiB2b2lkIFdlYkdlb2xvY2F0
aW9uQ2xpZW50OjpzdG9wVXBkYXRpbmcoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkdlb2xvY2F0aW9uQ2xpZW50LmggYi9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViR2VvbG9jYXRpb25DbGllbnQuaAppbmRl
eCBiMTY4MTY3NDg5NjIyNTQ3ZWM5NGU2Nzk4ZmI2OWRkOGZhNmQwMTFjLi42NWVjMGU5MzU0Mjgz
ZDVmYTc3YWYxMGI0ZTE4MGI4NzEyZmFlZjA3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViR2VvbG9jYXRpb25DbGllbnQuaAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViR2VvbG9jYXRpb25DbGllbnQu
aApAQCAtMzEsNyArMzEsNyBAQCBuYW1lc3BhY2UgV2ViS2l0IHsKIAogY2xhc3MgV2ViUGFnZTsK
IAotY2xhc3MgV2ViR2VvbG9jYXRpb25DbGllbnQgOiBwdWJsaWMgV2ViQ29yZTo6R2VvbG9jYXRp
b25DbGllbnQgeworY2xhc3MgV2ViR2VvbG9jYXRpb25DbGllbnQgZmluYWwgOiBwdWJsaWMgV2Vi
Q29yZTo6R2VvbG9jYXRpb25DbGllbnQgewogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwog
cHVibGljOgogICAgIFdlYkdlb2xvY2F0aW9uQ2xpZW50KFdlYlBhZ2UmIHBhZ2UpCkBAIC00Miwx
NyArNDIsMTcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgfldlYkdlb2xvY2F0aW9uQ2xpZW50KCk7
CiAKIHByaXZhdGU6Ci0gICAgdm9pZCBnZW9sb2NhdGlvbkRlc3Ryb3llZCgpIG92ZXJyaWRlOwor
ICAgIHZvaWQgZ2VvbG9jYXRpb25EZXN0cm95ZWQoKSBmaW5hbDsKIAotICAgIHZvaWQgc3RhcnRV
cGRhdGluZyhjb25zdCBTdHJpbmcmIGF1dGhvcml6YXRpb25Ub2tlbikgb3ZlcnJpZGU7Ci0gICAg
dm9pZCBzdG9wVXBkYXRpbmcoKSBvdmVycmlkZTsKLSAgICB2b2lkIHJldm9rZUF1dGhvcml6YXRp
b25Ub2tlbihjb25zdCBTdHJpbmcmKSBvdmVycmlkZTsKLSAgICB2b2lkIHNldEVuYWJsZUhpZ2hB
Y2N1cmFjeShib29sKSBvdmVycmlkZTsKKyAgICB2b2lkIHN0YXJ0VXBkYXRpbmcoY29uc3QgU3Ry
aW5nJiBhdXRob3JpemF0aW9uVG9rZW4sIGJvb2wgbmVlZHNIaWdoQWNjdXJhY3kpIGZpbmFsOwor
ICAgIHZvaWQgc3RvcFVwZGF0aW5nKCkgZmluYWw7CisgICAgdm9pZCByZXZva2VBdXRob3JpemF0
aW9uVG9rZW4oY29uc3QgU3RyaW5nJikgZmluYWw7CisgICAgdm9pZCBzZXRFbmFibGVIaWdoQWNj
dXJhY3koYm9vbCkgZmluYWw7CiAKLSAgICBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6Okdlb2xvY2F0
aW9uUG9zaXRpb25EYXRhPiBsYXN0UG9zaXRpb24oKSBvdmVycmlkZTsKKyAgICBzdGQ6Om9wdGlv
bmFsPFdlYkNvcmU6Okdlb2xvY2F0aW9uUG9zaXRpb25EYXRhPiBsYXN0UG9zaXRpb24oKSBmaW5h
bDsKIAotICAgIHZvaWQgcmVxdWVzdFBlcm1pc3Npb24oV2ViQ29yZTo6R2VvbG9jYXRpb24mKSBv
dmVycmlkZTsKLSAgICB2b2lkIGNhbmNlbFBlcm1pc3Npb25SZXF1ZXN0KFdlYkNvcmU6Okdlb2xv
Y2F0aW9uJikgb3ZlcnJpZGU7CisgICAgdm9pZCByZXF1ZXN0UGVybWlzc2lvbihXZWJDb3JlOjpH
ZW9sb2NhdGlvbiYpIGZpbmFsOworICAgIHZvaWQgY2FuY2VsUGVybWlzc2lvblJlcXVlc3QoV2Vi
Q29yZTo6R2VvbG9jYXRpb24mKSBmaW5hbDsKIAogICAgIFdlYlBhZ2UmIG1fcGFnZTsKIH07CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5jcHAKaW5kZXggZGQ0NWI0NTg4YmY5ZGQx
MjRlMThmYWE5NWEzMjZlZDMxOTMxYTQ1Ny4uNzk5NjEzZDM3NzQyMzYzYmZiZGNkOTUyOTc5OTYy
MjA2ZjAyMjhhOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlByb2Nl
c3MuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmNwcApAQCAt
MTUyNywxNiArMTUyNyw2IEBAIHZvaWQgV2ViUHJvY2Vzczo6cGFnZUFjdGl2aXR5U3RhdGVEaWRD
aGFuZ2UoUGFnZUlkZW50aWZpZXIsIE9wdGlvblNldDxXZWJDb3JlOjpBCiAgICAgfQogfQogCi0j
aWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKLXZvaWQgV2ViUHJvY2Vzczo6cmVzZXRBbGxHZW9sb2Nh
dGlvblBlcm1pc3Npb25zKCkKLXsKLSAgICBmb3IgKGF1dG8mIHBhZ2UgOiBtX3BhZ2VNYXAudmFs
dWVzKCkpIHsKLSAgICAgICAgaWYgKEZyYW1lKiBtYWluRnJhbWUgPSBwYWdlLT5tYWluRnJhbWUo
KSkKLSAgICAgICAgICAgIG1haW5GcmFtZS0+cmVzZXRBbGxHZW9sb2NhdGlvblBlcm1pc3Npb24o
KTsKLSAgICB9Ci19Ci0jZW5kaWYKLQogdm9pZCBXZWJQcm9jZXNzOjpwcmVwYXJlVG9TdXNwZW5k
KGJvb2wgaXNTdXNwZW5zaW9uSW1taW5lbnQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBj
b21wbGV0aW9uSGFuZGxlcikKIHsKICAgICBXRUJQUk9DRVNTX1JFTEVBU0VfTE9HKFByb2Nlc3NT
dXNwZW5zaW9uLCAicHJlcGFyZVRvU3VzcGVuZDogaXNTdXNwZW5zaW9uSW1taW5lbnQ9JWQiLCBp
c1N1c3BlbnNpb25JbW1pbmVudCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvV2ViUHJvY2Vzcy5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuaApp
bmRleCBjNWRkMjI1ZGMxYjcxZGE5Y2RkNGVlZGJhMGEwN2U3NjE3ODE1NzVlLi41OTVhZjBiOTc0
MTI5MGRhNmM3MzRhMDg4NmI4MjRkMjNiMWVlNTdlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9X
ZWJQcm9jZXNzLmgKQEAgLTMxMCwxMCArMzEwLDYgQEAgcHVibGljOgogCiAgICAgdm9pZCBpc0pJ
VEVuYWJsZWQoQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJik7CiAKLSNpZiBQTEFURk9S
TShJT1NfRkFNSUxZKQotICAgIHZvaWQgcmVzZXRBbGxHZW9sb2NhdGlvblBlcm1pc3Npb25zKCk7
Ci0jZW5kaWYKLQogI2lmIFBMQVRGT1JNKFdBWUxBTkQpCiAgICAgV2F5bGFuZENvbXBvc2l0b3JE
aXNwbGF5KiB3YXlsYW5kQ29tcG9zaXRvckRpc3BsYXkoKSBjb25zdCB7IHJldHVybiBtX3dheWxh
bmRDb21wb3NpdG9yRGlzcGxheS5nZXQoKTsgfQogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJHZW9sb2NhdGlvbkNsaWVudC5oIGIv
U291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViR2VvbG9jYXRpb25DbGll
bnQuaAppbmRleCA3N2MyODI4ZDg1OTUzNjM1YjY0YzRjODk5OTkwYTBhNjQ4MTcxYjZjLi5iMDdj
NzkwM2QyOTJhOTMzOTFlNWM0MGFlZGQ2NWRlZGJhZjhjNWYxIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJHZW9sb2NhdGlvbkNsaWVudC5oCisr
KyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkdlb2xvY2F0aW9u
Q2xpZW50LmgKQEAgLTM5LDcgKzM5LDcgQEAgcHVibGljOgogICAgIFdlYlZpZXcgKndlYlZpZXco
KSB7IHJldHVybiBtX3dlYlZpZXc7IH0KIAogICAgIHZvaWQgZ2VvbG9jYXRpb25EZXN0cm95ZWQo
KSBvdmVycmlkZTsKLSAgICB2b2lkIHN0YXJ0VXBkYXRpbmcoY29uc3QgU3RyaW5nJiBhdXRob3Jp
emF0aW9uVG9rZW4pIG92ZXJyaWRlOworICAgIHZvaWQgc3RhcnRVcGRhdGluZyhjb25zdCBTdHJp
bmcmIGF1dGhvcml6YXRpb25Ub2tlbiwgYm9vbCBlbmFibGVIaWdoQWNjdXJhY3kpIG92ZXJyaWRl
OwogICAgIHZvaWQgc3RvcFVwZGF0aW5nKCkgb3ZlcnJpZGU7CiAjaWYgUExBVEZPUk0oSU9TX0ZB
TUlMWSkKICAgICAvLyBGSVhNRTogdW5pZnkgdGhpcyB3aXRoIE1hYyBvbiBPcGVuU291cmNlLgpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViR2Vv
bG9jYXRpb25DbGllbnQubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9y
dC9XZWJHZW9sb2NhdGlvbkNsaWVudC5tbQppbmRleCBlNzg4YTU3ZGQ2ZjgwN2U3YjI1Yzc0MmJh
ODAxOTM1N2EyNzM0ZDM4Li5hOGI4NTIxZTJkYTQ3MThkYzE0YjQzNzBiMWE1YjRiOGQ2MzI4NTg5
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJH
ZW9sb2NhdGlvbkNsaWVudC5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3Jl
U3VwcG9ydC9XZWJHZW9sb2NhdGlvbkNsaWVudC5tbQpAQCAtODMsOSArODMsMTYgQEAgdm9pZCBX
ZWJHZW9sb2NhdGlvbkNsaWVudDo6Z2VvbG9jYXRpb25EZXN0cm95ZWQoKQogICAgIGRlbGV0ZSB0
aGlzOwogfQogCi12b2lkIFdlYkdlb2xvY2F0aW9uQ2xpZW50OjpzdGFydFVwZGF0aW5nKGNvbnN0
IFN0cmluZyYgYXV0aG9yaXphdGlvblRva2VuKQordm9pZCBXZWJHZW9sb2NhdGlvbkNsaWVudDo6
c3RhcnRVcGRhdGluZyhjb25zdCBTdHJpbmcmIGF1dGhvcml6YXRpb25Ub2tlbiwgYm9vbCBlbmFi
bGVIaWdoQWNjdXJhY3kpCiB7CiAgICAgVU5VU0VEX1BBUkFNKGF1dGhvcml6YXRpb25Ub2tlbik7
CisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKKyAgICBpZiAoZW5hYmxlSGlnaEFjY3VyYWN5KQor
ICAgICAgICBzZXRFbmFibGVIaWdoQWNjdXJhY3kodHJ1ZSk7CisjZWxzZQorICAgIFVOVVNFRF9Q
QVJBTShlbmFibGVIaWdoQWNjdXJhY3kpOworI2VuZGlmCisKICAgICBbW21fd2ViVmlldyBfZ2Vv
bG9jYXRpb25Qcm92aWRlcl0gcmVnaXN0ZXJXZWJWaWV3Om1fd2ViVmlld107CiB9CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkdlb2xvY2F0
aW9uQ2xpZW50LmNwcCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkNvcmVTdXBwb3J0L1dl
Ykdlb2xvY2F0aW9uQ2xpZW50LmNwcAppbmRleCBlMWZjYTI3NzI0OTYxNTRhNGUwNzBlNGRmZGE3
ZTc3ZTk3MzU4MmMxLi5hYzU0NTE0YzY0MmVhMGU1ZjhhZjMzNjllMWJiYmFlMGMzOTA3MWI3IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJHZW9s
b2NhdGlvbkNsaWVudC5jcHAKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViQ29yZVN1
cHBvcnQvV2ViR2VvbG9jYXRpb25DbGllbnQuY3BwCkBAIC00OCw5ICs0OCwxMCBAQCB2b2lkIFdl
Ykdlb2xvY2F0aW9uQ2xpZW50OjpnZW9sb2NhdGlvbkRlc3Ryb3llZCgpCiAgICAgZGVsZXRlIHRo
aXM7CiB9CiAKLXZvaWQgV2ViR2VvbG9jYXRpb25DbGllbnQ6OnN0YXJ0VXBkYXRpbmcoY29uc3Qg
U3RyaW5nJiBhdXRob3JpemF0aW9uVG9rZW4pCit2b2lkIFdlYkdlb2xvY2F0aW9uQ2xpZW50Ojpz
dGFydFVwZGF0aW5nKGNvbnN0IFN0cmluZyYgYXV0aG9yaXphdGlvblRva2VuLCBib29sIGVuYWJs
ZUhpZ2hBY2N1cmFjeSkKIHsKICAgICBVTlVTRURfUEFSQU0oYXV0aG9yaXphdGlvblRva2VuKTsK
KyAgICBVTlVTRURfUEFSQU0oZW5hYmxlSGlnaEFjY3VyYWN5KTsKICAgICBDT01QdHI8SVdlYkdl
b2xvY2F0aW9uUHJvdmlkZXI+IHByb3ZpZGVyOwogICAgIGlmIChGQUlMRUQobV93ZWJWaWV3LT5n
ZW9sb2NhdGlvblByb3ZpZGVyKCZwcm92aWRlcikpKQogICAgICAgICByZXR1cm47CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJHZW9sb2NhdGlv
bkNsaWVudC5oIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViQ29yZVN1cHBvcnQvV2ViR2Vv
bG9jYXRpb25DbGllbnQuaAppbmRleCAxOTU3NDE3YjU1ZDdlNWQyZjliNzFlNWM5ZDljMzAzZGZl
ZjRlMTg2Li41YjhlOTQ0NGYyMWZlZDQzZWRmMjU5MWEyYmExNWRhM2JkNDRmNDRhIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJHZW9sb2NhdGlv
bkNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkNvcmVTdXBwb3J0L1dl
Ykdlb2xvY2F0aW9uQ2xpZW50LmgKQEAgLTQxLDcgKzQxLDcgQEAgcHVibGljOgogICAgIFdlYkdl
b2xvY2F0aW9uQ2xpZW50KFdlYlZpZXcqKTsKIAogICAgIHZvaWQgZ2VvbG9jYXRpb25EZXN0cm95
ZWQoKSBmaW5hbDsKLSAgICB2b2lkIHN0YXJ0VXBkYXRpbmcoY29uc3QgU3RyaW5nJiBhdXRob3Jp
emF0aW9uVG9rZW4pIGZpbmFsOworICAgIHZvaWQgc3RhcnRVcGRhdGluZyhjb25zdCBTdHJpbmcm
IGF1dGhvcml6YXRpb25Ub2tlbiwgYm9vbCBlbmFibGVIaWdoQWNjdXJhY3kpIGZpbmFsOwogICAg
IHZvaWQgc3RvcFVwZGF0aW5nKCkgZmluYWw7CiAgICAgdm9pZCBzZXRFbmFibGVIaWdoQWNjdXJh
Y3koYm9vbCkgZmluYWwgeyB9CiAgICAgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpHZW9sb2NhdGlv
blBvc2l0aW9uRGF0YT4gbGFzdFBvc2l0aW9uKCkgZmluYWw7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>452026</attachid>
            <date>2022-02-15 08:15:14 -0800</date>
            <delta_ts>2022-02-15 08:47:17 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-236566-20220215081513.patch</filename>
            <type>text/plain</type>
            <size>110624</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg5ODEzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IGY2MDY5ODliY2RhNjQyMTdkZTJlNzcw
ODM4NmYzNzA2N2ExYThkZTQuLjlmOGM1ZmM4M2Q3YjdkZjViY2ZkZDE1M2EyZGIwM2IyYjNmOGFm
MjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMTUgQEAKKzIwMjItMDItMTMgIENocmlzIER1bWV6ICA8Y2R1bWV6
QGFwcGxlLmNvbT4KKworICAgICAgICBEbyBwcmVsaW1pbmFyeSB3b3JrIHRvIHBhc3MgZG9tYWlu
IG5hbWVzIHRvIENvcmVMb2NhdGlvbgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MjM2NTY2CisgICAgICAgIDxyZGFyOi8vODg3NjE0MTM+CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkIGJ1aWxkIHRpbWUg
ZmxhZyBmb3IgcGFzc2luZyB3ZWJzaXRlIGlkZW50aWZpZXJzIHRvIENvcmVMb2NhdGlvbi4KKwor
ICAgICAgICAqIHd0Zi9QbGF0Zm9ybUhhdmUuaDoKKwogMjAyMi0wMi0xNSAgUm9iaW4gTW9yaXNz
ZXQgIDxybW9yaXNzZXRAYXBwbGUuY29tPgogCiAgICAgICAgIFtXR1NMXSBJbXBsZW1lbnQgZW5v
dWdoIG9mIHRoZSBsZXhlciBmb3IgdGhlIHNpbXBsZXN0IHNoYWRlcnMKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCAz
ODI0ODY0YmM2ODI5NGY3YzMyYzkyYzQzYjdiMThhODhhYTFmMzZiLi42MGI1NzE5NzNiNDNiZDM3
ZGVlY2U4NjllMGQ1MWU5ZjhmNzg1OGU2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFu
Z2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNTQgQEAKKzIw
MjItMDItMTMgIENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KKworICAgICAgICBEbyBw
cmVsaW1pbmFyeSB3b3JrIHRvIHBhc3MgZG9tYWluIG5hbWVzIHRvIENvcmVMb2NhdGlvbgorICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjM2NTY2CisgICAg
ICAgIDxyZGFyOi8vODg3NjE0MTM+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgRGFyaW4gQWRsZXIu
CisKKyAgICAgICAgRG8gcHJlbGltaW5hcnkgd29yayB0byBwYXNzIGRvbWFpbiBuYW1lcyB0byBD
b3JlTG9jYXRpb24gd2hlbiB1c2luZyB0aGUgR2VvbG9jYXRpb24gQVBJLgorICAgICAgICBUaGlz
IHBpcGVzIHRoZSBkb21haW4gbmFtZXMgYWxsIHRoZSB3YXkgZnJvbSB0aGUgR2VvbG9jYXRpb24g
QVBJIHRvIHRoZSBDb3JlTG9jYXRpb24gY2FsbHMKKyAgICAgICAgYnV0IGRvZXNuJ3QgeWV0IHBh
c3MgdGhlIGRvbWFpbiB0byBDb3JlTG9jYXRpb24gZHVlIHRvIDxyZGFyOi8vODg4MzQzMDE+LiBJ
IHdpbGwgZm9sbG93LXVwCisgICAgICAgIG9uY2UgPHJkYXI6Ly84ODgzNDMwMT4gaXMgZml4ZWQu
CisKKyAgICAgICAgKiBNb2R1bGVzL2dlb2xvY2F0aW9uL0dlb2xvY2F0aW9uQ2xpZW50Lmg6Cisg
ICAgICAgICogTW9kdWxlcy9nZW9sb2NhdGlvbi9HZW9sb2NhdGlvbkNvbnRyb2xsZXIuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6R2VvbG9jYXRpb25Db250cm9sbGVyOjpkaWROYXZpZ2F0ZVBhZ2Up
OgorICAgICAgICAoV2ViQ29yZTo6R2VvbG9jYXRpb25Db250cm9sbGVyOjphZGRPYnNlcnZlcik6
CisgICAgICAgIChXZWJDb3JlOjpHZW9sb2NhdGlvbkNvbnRyb2xsZXI6OnJlbW92ZU9ic2VydmVy
KToKKyAgICAgICAgKFdlYkNvcmU6Okdlb2xvY2F0aW9uQ29udHJvbGxlcjo6YWN0aXZpdHlTdGF0
ZURpZENoYW5nZSk6CisgICAgICAgIChXZWJDb3JlOjpHZW9sb2NhdGlvbkNvbnRyb2xsZXI6OnN0
YXJ0VXBkYXRpbmdJZk5lY2Vzc2FyeSk6CisgICAgICAgIChXZWJDb3JlOjpHZW9sb2NhdGlvbkNv
bnRyb2xsZXI6OnN0b3BVcGRhdGluZ0lmTmVjZXNzYXJ5KToKKyAgICAgICAgKiBNb2R1bGVzL2dl
b2xvY2F0aW9uL0dlb2xvY2F0aW9uQ29udHJvbGxlci5oOgorICAgICAgICAoV2ViQ29yZTo6R2Vv
bG9jYXRpb25Db250cm9sbGVyOjpuZWVkc0hpZ2hBY2N1cmFjeSBjb25zdCk6CisgICAgICAgICog
TW9kdWxlcy9nZW9sb2NhdGlvbi9HZW9sb2NhdGlvblBvc2l0aW9uRGF0YS5oOgorICAgICAgICAq
IE1vZHVsZXMvZ2VvbG9jYXRpb24vaW9zL0dlb2xvY2F0aW9uUG9zaXRpb25EYXRhSU9TLm1tOgor
ICAgICAgICAqIFNvdXJjZXNDb2NvYS50eHQ6CisgICAgICAgICogV2ViQ29yZS54Y29kZXByb2ov
cHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIHBhZ2UvUGFnZS5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpQYWdlOjpkaWRDb21taXRMb2FkKToKKyAgICAgICAgKiBwbGF0Zm9ybS9jb2NvYS9Db3Jl
TG9jYXRpb25HZW9sb2NhdGlvblByb3ZpZGVyLmg6IENvcGllZCBmcm9tIFNvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvZ2VvbG9jYXRpb24vR2VvbG9jYXRpb25DbGllbnQuaC4KKyAgICAgICAgKiBwbGF0
Zm9ybS9jb2NvYS9Db3JlTG9jYXRpb25HZW9sb2NhdGlvblByb3ZpZGVyLm1tOiBBZGRlZC4KKyAg
ICAgICAgKGlzQXV0aG9yaXphdGlvbkdyYW50ZWQpOgorICAgICAgICAoLVtXZWJDTExvY2F0aW9u
TWFuYWdlciBpbml0V2l0aFdlYnNpdGVJZGVudGlmaWVyOmNsaWVudDpdKToKKyAgICAgICAgKC1b
V2ViQ0xMb2NhdGlvbk1hbmFnZXIgZGVhbGxvY10pOgorICAgICAgICAoLVtXZWJDTExvY2F0aW9u
TWFuYWdlciBzdGFydF0pOgorICAgICAgICAoLVtXZWJDTExvY2F0aW9uTWFuYWdlciBzdG9wXSk6
CisgICAgICAgICgtW1dlYkNMTG9jYXRpb25NYW5hZ2VyIHNldEVuYWJsZUhpZ2hBY2N1cmFjeTpd
KToKKyAgICAgICAgKC1bV2ViQ0xMb2NhdGlvbk1hbmFnZXIgcmVxdWVzdEdlb2xvY2F0aW9uQXV0
aG9yaXphdGlvbl0pOgorICAgICAgICAoLVtXZWJDTExvY2F0aW9uTWFuYWdlciBsb2NhdGlvbk1h
bmFnZXJEaWRDaGFuZ2VBdXRob3JpemF0aW9uOl0pOgorICAgICAgICAoLVtXZWJDTExvY2F0aW9u
TWFuYWdlciBsb2NhdGlvbk1hbmFnZXI6ZGlkVXBkYXRlTG9jYXRpb25zOl0pOgorICAgICAgICAo
LVtXZWJDTExvY2F0aW9uTWFuYWdlciBsb2NhdGlvbk1hbmFnZXI6ZGlkRmFpbFdpdGhFcnJvcjpd
KToKKyAgICAgICAgKFdlYkNvcmU6OkNvcmVMb2NhdGlvbkdlb2xvY2F0aW9uUHJvdmlkZXI6OkNv
cmVMb2NhdGlvbkdlb2xvY2F0aW9uUHJvdmlkZXIpOgorICAgICAgICAoV2ViQ29yZTo6Q29yZUxv
Y2F0aW9uR2VvbG9jYXRpb25Qcm92aWRlcjo6fkNvcmVMb2NhdGlvbkdlb2xvY2F0aW9uUHJvdmlk
ZXIpOgorICAgICAgICAoV2ViQ29yZTo6Q29yZUxvY2F0aW9uR2VvbG9jYXRpb25Qcm92aWRlcjo6
c3RhcnQpOgorICAgICAgICAoV2ViQ29yZTo6Q29yZUxvY2F0aW9uR2VvbG9jYXRpb25Qcm92aWRl
cjo6c3RvcCk6CisgICAgICAgIChXZWJDb3JlOjpDb3JlTG9jYXRpb25HZW9sb2NhdGlvblByb3Zp
ZGVyOjpzZXRFbmFibGVIaWdoQWNjdXJhY3kpOgorICAgICAgICAoV2ViQ29yZTo6Q29yZUxvY2F0
aW9uR2VvbG9jYXRpb25Qcm92aWRlcjo6cmVxdWVzdEF1dGhvcml6YXRpb24pOgorICAgICAgICAq
IHBsYXRmb3JtL21vY2svR2VvbG9jYXRpb25DbGllbnRNb2NrLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6Okdlb2xvY2F0aW9uQ2xpZW50TW9jazo6c3RhcnRVcGRhdGluZyk6CisgICAgICAgICogcGxh
dGZvcm0vbW9jay9HZW9sb2NhdGlvbkNsaWVudE1vY2suaDoKKwogMjAyMi0wMi0xNSAgWmlyYW4g
U3VuICA8enN1bkBpZ2FsaWEuY29tPgogCiAgICAgICAgIFtGb3Jtc10gdGhlIHNlbGVjdCgpIG1l
dGhvZCByZXR1cm5zIHNob3VsZCBiZSBpbiBsaW5lIHdpdGggc3BlY3MKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKaW5kZXggMjkx
NmE1NTY1NDlmYmJhNGE3NDMxNmI3OGQ1N2RmOWE2MjM5ZjY3YS4uMjBmYmJiNTM5MDRhYzY0ZDYw
NTgyODdlMzhlMmUzY2Y0ZjlhZGVlMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9DaGFuZ2VM
b2cKKysrIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKQEAgLTEsMyArMSw5NCBAQAorMjAyMi0w
Mi0xMyAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgorCisgICAgICAgIERvIHByZWxp
bWluYXJ5IHdvcmsgdG8gcGFzcyBkb21haW4gbmFtZXMgdG8gQ29yZUxvY2F0aW9uCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzY1NjYKKyAgICAgICAg
PHJkYXI6Ly84ODc2MTQxMz4KKworICAgICAgICBSZXZpZXdlZCBieSBEYXJpbiBBZGxlci4KKwor
ICAgICAgICBEbyBwcmVsaW1pbmFyeSB3b3JrIHRvIHBhc3MgZG9tYWluIG5hbWVzIHRvIENvcmVM
b2NhdGlvbiB3aGVuIHVzaW5nIHRoZSBHZW9sb2NhdGlvbiBBUEkuCisgICAgICAgIFRoaXMgcGlw
ZXMgdGhlIGRvbWFpbiBuYW1lcyBhbGwgdGhlIHdheSBmcm9tIHRoZSBHZW9sb2NhdGlvbiBBUEkg
dG8gdGhlIENvcmVMb2NhdGlvbiBjYWxscworICAgICAgICBidXQgZG9lc24ndCB5ZXQgcGFzcyB0
aGUgZG9tYWluIHRvIENvcmVMb2NhdGlvbiBkdWUgdG8gPHJkYXI6Ly84ODgzNDMwMT4uIEkgd2ls
bCBmb2xsb3ctdXAKKyAgICAgICAgb25jZSA8cmRhcjovLzg4ODM0MzAxPiBpcyBmaXhlZC4KKwor
ICAgICAgICAqIFNvdXJjZXNDb2NvYS50eHQ6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9DL1dL
R2VvbG9jYXRpb25NYW5hZ2VyLmNwcDoKKyAgICAgICAgKFdLR2VvbG9jYXRpb25NYW5hZ2VyU2V0
UHJvdmlkZXIpOgorICAgICAgICAqIFVJUHJvY2Vzcy9Db2NvYS9XZWJHZW9sb2NhdGlvbk1hbmFn
ZXJQcm94eUNvY29hLmNwcDogQWRkZWQuCisgICAgICAgIChXZWJLaXQ6OldlYkdlb2xvY2F0aW9u
TWFuYWdlclByb3h5Ojpwb3NpdGlvbkNoYW5nZWQpOgorICAgICAgICAoV2ViS2l0OjpXZWJHZW9s
b2NhdGlvbk1hbmFnZXJQcm94eTo6ZXJyb3JPY2N1cnJlZCk6CisgICAgICAgIChXZWJLaXQ6Oldl
Ykdlb2xvY2F0aW9uTWFuYWdlclByb3h5OjpyZXNldEdlb2xvY2F0aW9uKToKKyAgICAgICAgKFdl
YktpdDo6V2ViR2VvbG9jYXRpb25NYW5hZ2VyUHJveHk6OmlzVXBkYXRpbmcgY29uc3QpOgorICAg
ICAgICAoV2ViS2l0OjpXZWJHZW9sb2NhdGlvbk1hbmFnZXJQcm94eTo6aXNIaWdoQWNjdXJhY3lF
bmFibGVkIGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6V2ViR2VvbG9jYXRpb25NYW5hZ2VyUHJv
eHk6OnByb3ZpZGVyU3RhcnRVcGRhdGluZyk6CisgICAgICAgIChXZWJLaXQ6OldlYkdlb2xvY2F0
aW9uTWFuYWdlclByb3h5Ojpwcm92aWRlclN0b3BVcGRhdGluZyk6CisgICAgICAgIChXZWJLaXQ6
OldlYkdlb2xvY2F0aW9uTWFuYWdlclByb3h5Ojpwcm92aWRlclNldEVuYWJsZWRIaWdoQWNjdXJh
Y3kpOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJHZW9sb2NhdGlvbk1hbmFnZXJQcm94eS5jcHA6
CisgICAgICAgIChXZWJLaXQ6OldlYkdlb2xvY2F0aW9uTWFuYWdlclByb3h5OjpXZWJHZW9sb2Nh
dGlvbk1hbmFnZXJQcm94eSk6CisgICAgICAgIChXZWJLaXQ6OldlYkdlb2xvY2F0aW9uTWFuYWdl
clByb3h5Ojpwcm9jZXNzUG9vbERlc3Ryb3llZCk6CisgICAgICAgIChXZWJLaXQ6OldlYkdlb2xv
Y2F0aW9uTWFuYWdlclByb3h5Ojpwcm9jZXNzRGlkQ2xvc2UpOgorICAgICAgICAoV2ViS2l0OjpX
ZWJHZW9sb2NhdGlvbk1hbmFnZXJQcm94eTo6cHJvdmlkZXJEaWRDaGFuZ2VQb3NpdGlvbik6Cisg
ICAgICAgIChXZWJLaXQ6OldlYkdlb2xvY2F0aW9uTWFuYWdlclByb3h5Ojpwcm92aWRlckRpZEZh
aWxUb0RldGVybWluZVBvc2l0aW9uKToKKyAgICAgICAgKFdlYktpdDo6V2ViR2VvbG9jYXRpb25N
YW5hZ2VyUHJveHk6OnN0YXJ0VXBkYXRpbmcpOgorICAgICAgICAoV2ViS2l0OjpXZWJHZW9sb2Nh
dGlvbk1hbmFnZXJQcm94eTo6c3RvcFVwZGF0aW5nKToKKyAgICAgICAgKFdlYktpdDo6V2ViR2Vv
bG9jYXRpb25NYW5hZ2VyUHJveHk6OnNldEVuYWJsZUhpZ2hBY2N1cmFjeSk6CisgICAgICAgIChX
ZWJLaXQ6OldlYkdlb2xvY2F0aW9uTWFuYWdlclByb3h5OjpzZXRQcm92aWRlcik6CisgICAgICAg
IChXZWJLaXQ6OldlYkdlb2xvY2F0aW9uTWFuYWdlclByb3h5Ojppc1VwZGF0aW5nIGNvbnN0KToK
KyAgICAgICAgKFdlYktpdDo6V2ViR2VvbG9jYXRpb25NYW5hZ2VyUHJveHk6OmlzSGlnaEFjY3Vy
YWN5RW5hYmxlZCBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6OldlYkdlb2xvY2F0aW9uTWFuYWdl
clByb3h5Ojpwcm92aWRlclN0YXJ0VXBkYXRpbmcpOgorICAgICAgICAoV2ViS2l0OjpXZWJHZW9s
b2NhdGlvbk1hbmFnZXJQcm94eTo6cHJvdmlkZXJTdG9wVXBkYXRpbmcpOgorICAgICAgICAoV2Vi
S2l0OjpXZWJHZW9sb2NhdGlvbk1hbmFnZXJQcm94eTo6cHJvdmlkZXJTZXRFbmFibGVkSGlnaEFj
Y3VyYWN5KToKKyAgICAgICAgKFdlYktpdDo6V2ViR2VvbG9jYXRpb25NYW5hZ2VyUHJveHk6OnJl
c2V0UGVybWlzc2lvbnMpOiBEZWxldGVkLgorICAgICAgICAoV2ViS2l0OjpXZWJHZW9sb2NhdGlv
bk1hbmFnZXJQcm94eTo6cmVtb3ZlUmVxdWVzdGVyKTogRGVsZXRlZC4KKyAgICAgICAgKiBVSVBy
b2Nlc3MvV2ViR2VvbG9jYXRpb25NYW5hZ2VyUHJveHkuaDoKKyAgICAgICAgKFdlYktpdDo6V2Vi
R2VvbG9jYXRpb25NYW5hZ2VyUHJveHk6Omxhc3RQb3NpdGlvbiBjb25zdCk6IERlbGV0ZWQuCisg
ICAgICAgIChXZWJLaXQ6OldlYkdlb2xvY2F0aW9uTWFuYWdlclByb3h5Ojppc1VwZGF0aW5nIGNv
bnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYktpdDo6V2ViR2VvbG9jYXRpb25NYW5hZ2VyUHJv
eHk6OmlzSGlnaEFjY3VyYWN5RW5hYmxlZCBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgICogVUlQ
cm9jZXNzL1dlYkdlb2xvY2F0aW9uTWFuYWdlclByb3h5Lm1lc3NhZ2VzLmluOgorICAgICAgICAq
IFVJUHJvY2Vzcy9pb3MvV0tHZW9sb2NhdGlvblByb3ZpZGVySU9TLm1tOgorICAgICAgICAoLVtX
S0dlb2xvY2F0aW9uUHJvdmlkZXJJT1MgX3N0YXJ0VXBkYXRpbmddKToKKyAgICAgICAgKC1bV0tH
ZW9sb2NhdGlvblByb3ZpZGVySU9TIF9zdG9wVXBkYXRpbmddKToKKyAgICAgICAgKC1bV0tHZW9s
b2NhdGlvblByb3ZpZGVySU9TIF9zZXRFbmFibGVIaWdoQWNjdXJhY3k6XSk6CisgICAgICAgICgt
W1dLR2VvbG9jYXRpb25Qcm92aWRlcklPUyBpbml0V2l0aFByb2Nlc3NQb29sOl0pOgorICAgICAg
ICAoLVtXS0dlb2xvY2F0aW9uUHJvdmlkZXJJT1MgZGVjaWRlUG9saWN5Rm9yR2VvbG9jYXRpb25S
ZXF1ZXN0RnJvbU9yaWdpbjpjb21wbGV0aW9uSGFuZGxlcjp2aWV3Ol0pOgorICAgICAgICAoLVtX
S0dlb2xvY2F0aW9uUHJvdmlkZXJJT1MgZ2VvbG9jYXRpb25BdXRob3JpemF0aW9uR3JhbnRlZF0p
OgorICAgICAgICAoLVtXS0dlb2xvY2F0aW9uUHJvdmlkZXJJT1MgcG9zaXRpb25DaGFuZ2VkOl0p
OgorICAgICAgICAoLVtXS0dlb2xvY2F0aW9uUHJvdmlkZXJJT1MgZXJyb3JPY2N1cnJlZDpdKToK
KyAgICAgICAgKC1bV0tHZW9sb2NhdGlvblByb3ZpZGVySU9TIHJlc2V0R2VvbG9jYXRpb25dKToK
KyAgICAgICAgKHN0YXJ0VXBkYXRpbmdDYWxsYmFjayk6IERlbGV0ZWQuCisgICAgICAgIChzdG9w
VXBkYXRpbmdDYWxsYmFjayk6IERlbGV0ZWQuCisgICAgICAgIChzZXRFbmFibGVIaWdoQWNjdXJh
Y3kpOiBEZWxldGVkLgorICAgICAgICAoLVtXS0xlZ2FjeUNvcmVMb2NhdGlvblByb3ZpZGVyIHNl
dExpc3RlbmVyOl0pOiBEZWxldGVkLgorICAgICAgICAoLVtXS0xlZ2FjeUNvcmVMb2NhdGlvblBy
b3ZpZGVyIHJlcXVlc3RHZW9sb2NhdGlvbkF1dGhvcml6YXRpb25dKTogRGVsZXRlZC4KKyAgICAg
ICAgKC1bV0tMZWdhY3lDb3JlTG9jYXRpb25Qcm92aWRlciBzdGFydF0pOiBEZWxldGVkLgorICAg
ICAgICAoLVtXS0xlZ2FjeUNvcmVMb2NhdGlvblByb3ZpZGVyIHN0b3BdKTogRGVsZXRlZC4KKyAg
ICAgICAgKC1bV0tMZWdhY3lDb3JlTG9jYXRpb25Qcm92aWRlciBzZXRFbmFibGVIaWdoQWNjdXJh
Y3k6XSk6IERlbGV0ZWQuCisgICAgICAgICgtW1dLTGVnYWN5Q29yZUxvY2F0aW9uUHJvdmlkZXIg
Z2VvbG9jYXRpb25BdXRob3JpemF0aW9uR3JhbnRlZF0pOiBEZWxldGVkLgorICAgICAgICAoLVtX
S0xlZ2FjeUNvcmVMb2NhdGlvblByb3ZpZGVyIGdlb2xvY2F0aW9uQXV0aG9yaXphdGlvbkRlbmll
ZF0pOiBEZWxldGVkLgorICAgICAgICAoLVtXS0xlZ2FjeUNvcmVMb2NhdGlvblByb3ZpZGVyIHBv
c2l0aW9uQ2hhbmdlZDpdKTogRGVsZXRlZC4KKyAgICAgICAgKC1bV0tMZWdhY3lDb3JlTG9jYXRp
b25Qcm92aWRlciBlcnJvck9jY3VycmVkOl0pOiBEZWxldGVkLgorICAgICAgICAoLVtXS0xlZ2Fj
eUNvcmVMb2NhdGlvblByb3ZpZGVyIHJlc2V0R2VvbG9jYXRpb25dKTogRGVsZXRlZC4KKyAgICAg
ICAgKiBXZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBXZWJQcm9j
ZXNzL0dlb2xvY2F0aW9uL1dlYkdlb2xvY2F0aW9uTWFuYWdlci5jcHA6CisgICAgICAgIChXZWJL
aXQ6OnJlZ2lzdHJhYmxlRG9tYWluRm9yUGFnZSk6CisgICAgICAgIChXZWJLaXQ6OldlYkdlb2xv
Y2F0aW9uTWFuYWdlcjo6cmVnaXN0ZXJXZWJQYWdlKToKKyAgICAgICAgKFdlYktpdDo6V2ViR2Vv
bG9jYXRpb25NYW5hZ2VyOjp1bnJlZ2lzdGVyV2ViUGFnZSk6CisgICAgICAgIChXZWJLaXQ6Oldl
Ykdlb2xvY2F0aW9uTWFuYWdlcjo6c2V0RW5hYmxlSGlnaEFjY3VyYWN5Rm9yUGFnZSk6CisgICAg
ICAgIChXZWJLaXQ6OldlYkdlb2xvY2F0aW9uTWFuYWdlcjo6ZGlkQ2hhbmdlUG9zaXRpb24pOgor
ICAgICAgICAoV2ViS2l0OjpXZWJHZW9sb2NhdGlvbk1hbmFnZXI6OmRpZEZhaWxUb0RldGVybWlu
ZVBvc2l0aW9uKToKKyAgICAgICAgKFdlYktpdDo6V2ViR2VvbG9jYXRpb25NYW5hZ2VyOjpyZXNl
dFBlcm1pc3Npb25zKToKKyAgICAgICAgKFdlYktpdDo6V2ViR2VvbG9jYXRpb25NYW5hZ2VyOjpp
c1VwZGF0aW5nIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYktpdDo6V2ViR2VvbG9jYXRp
b25NYW5hZ2VyOjppc0hpZ2hBY2N1cmFjeUVuYWJsZWQgY29uc3QpOiBEZWxldGVkLgorICAgICAg
ICAqIFdlYlByb2Nlc3MvR2VvbG9jYXRpb24vV2ViR2VvbG9jYXRpb25NYW5hZ2VyLmg6CisgICAg
ICAgICogV2ViUHJvY2Vzcy9HZW9sb2NhdGlvbi9XZWJHZW9sb2NhdGlvbk1hbmFnZXIubWVzc2Fn
ZXMuaW46CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJHZW9sb2NhdGlv
bkNsaWVudC5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYkdlb2xvY2F0aW9uQ2xpZW50OjpzdGFy
dFVwZGF0aW5nKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkdlb2xv
Y2F0aW9uQ2xpZW50Lmg6CisgICAgICAgIChXZWJLaXQ6OldlYkdlb2xvY2F0aW9uQ2xpZW50OjpX
ZWJHZW9sb2NhdGlvbkNsaWVudCk6IERlbGV0ZWQuCisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQ
cm9jZXNzLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzczo6cmVzZXRBbGxHZW9sb2Nh
dGlvblBlcm1pc3Npb25zKTogRGVsZXRlZC4KKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlByb2Nl
c3MuaDoKKwogMjAyMi0wMi0xNSAgQ2FybG9zIEdhcmNpYSBDYW1wb3MgIDxjZ2FyY2lhQGlnYWxp
YS5jb20+CiAKICAgICAgICAgW0dUS10gRC1CdXMgY3Jhc2ggYXRrLWJyaWRnZQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdExlZ2Fj
eS9tYWMvQ2hhbmdlTG9nCmluZGV4IDY4MDM5NDg1OGExNWI4YTI1Njk2YWFlYzdjOGQ5NGFhNzNh
ZDcyMjMuLjk5Mzg2NTg0M2E3ZTg4ZTFmZjdkODRkY2Y5N2IxZTllMDcyMjZmYzYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0
TGVnYWN5L21hYy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNSBAQAorMjAyMi0wMi0xMyAgQ2hyaXMg
RHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgorCisgICAgICAgIERvIHByZWxpbWluYXJ5IHdvcmsg
dG8gcGFzcyBkb21haW4gbmFtZXMgdG8gQ29yZUxvY2F0aW9uCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzY1NjYKKyAgICAgICAgPHJkYXI6Ly84ODc2
MTQxMz4KKworICAgICAgICBSZXZpZXdlZCBieSBEYXJpbiBBZGxlci4KKworICAgICAgICAqIFdl
YkNvcmVTdXBwb3J0L1dlYkdlb2xvY2F0aW9uQ2xpZW50Lmg6CisgICAgICAgICogV2ViQ29yZVN1
cHBvcnQvV2ViR2VvbG9jYXRpb25DbGllbnQubW06CisgICAgICAgIChXZWJHZW9sb2NhdGlvbkNs
aWVudDo6c3RhcnRVcGRhdGluZyk6CisKIDIwMjItMDItMTEgIENocmlzIER1bWV6ICA8Y2R1bWV6
QGFwcGxlLmNvbT4KIAogICAgICAgICBVbnJldmlld2VkLCBmaXggYnVpbGQgd2l0aCB0aGUgbGF0
ZXN0IGlPUyBTREsuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9DaGFuZ2VM
b2cgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9DaGFuZ2VMb2cKaW5kZXggNjk1YWE5MTA1Mzll
ZjAyMTA1ZjUyMTkzMDRjMDk3ZTEwMzEyNjQ1NS4uZjQwMGYzNjdkMDUyYWJlNTg3NTlhNWQ3MmM1
Mjk2NTFkZDk5MTQzZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vQ2hhbmdl
TG9nCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE1
IEBACisyMDIyLTAyLTEzICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CisKKyAgICAg
ICAgRG8gcHJlbGltaW5hcnkgd29yayB0byBwYXNzIGRvbWFpbiBuYW1lcyB0byBDb3JlTG9jYXRp
b24KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzNjU2
NgorICAgICAgICA8cmRhcjovLzg4NzYxNDEzPgorCisgICAgICAgIFJldmlld2VkIGJ5IERhcmlu
IEFkbGVyLgorCisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2ViR2VvbG9jYXRpb25DbGllbnQu
Y3BwOgorICAgICAgICAoV2ViR2VvbG9jYXRpb25DbGllbnQ6OnN0YXJ0VXBkYXRpbmcpOgorICAg
ICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYkdlb2xvY2F0aW9uQ2xpZW50Lmg6CisKIDIwMjItMDIt
MDEgIE15bGVzIEMuIE1heGZpZWxkICA8bW1heGZpZWxkQGFwcGxlLmNvbT4KIAogICAgICAgICBS
ZW5hbWUgRm9udENhc2NhZGU6OmZvbnRNZXRyaWNzKCkgYW5kIFJlbmRlclN0eWxlOjpmb250TWV0
cmljcygpIHRvIGZvbnRNZXRyaWNzT2ZQcmltYXJ5Rm9udCgpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V1RGL3d0Zi9QbGF0Zm9ybUhhdmUuaCBiL1NvdXJjZS9XVEYvd3RmL1BsYXRmb3JtSGF2ZS5oCmlu
ZGV4IDA5MmJjMzYyMTUwMWQ0NGNlYWZiMDcwZmFjY2QzOTk1Y2RhMjMxMjcuLjY0YTVlNzliMDQ0
ZWZiYjgyYWVmMjQ5YTQxYjJkZDk4ZmJlODU3MGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3Rm
L1BsYXRmb3JtSGF2ZS5oCisrKyBiL1NvdXJjZS9XVEYvd3RmL1BsYXRmb3JtSGF2ZS5oCkBAIC0x
MTE5LDYgKzExMTksMTYgQEAKICNkZWZpbmUgSEFWRV9OU1RFWFRMSVNUX01BUktFUl9GT1JNQVRT
IDEKICNlbmRpZgogCisjaWYgKFBMQVRGT1JNKElPUykgJiYgX19JUEhPTkVfT1NfVkVSU0lPTl9N
QVhfQUxMT1dFRCA+PSAxNjAwMDApIFwKKyAgICB8fCAoUExBVEZPUk0oV0FUQ0hPUykgJiYgX19X
QVRDSF9PU19WRVJTSU9OX01BWF9BTExPV0VEID49IDkwMDAwKSBcCisgICAgfHwgKFBMQVRGT1JN
KEFQUExFVFYpICYmIF9fVFZfT1NfVkVSU0lPTl9NQVhfQUxMT1dFRCA+PSAxNjAwMDApCisjZGVm
aW5lIEhBVkVfQ09SRV9MT0NBVElPTl9XRUJTSVRFX0lERU5USUZJRVJTIDEKKyNlbmRpZgorCisj
aWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkgfHwgKFBMQVRGT1JNKE1BQykgJiYgX19NQUNfT1NfWF9W
RVJTSU9OX01JTl9SRVFVSVJFRCA+PSAxMDE0MDAgJiYgZGVmaW5lZCBfX2hhc19pbmNsdWRlICYm
IF9faGFzX2luY2x1ZGUoPENvcmVGb3VuZGF0aW9uL0NGUHJpdi5oPikpCisjZGVmaW5lIEhBVkVf
Q09SRV9MT0NBVElPTl9BVVRIT1JJWkVEX1dIRU5fSU5fVVNFIDEKKyNlbmRpZgorCiAjaWYgUExB
VEZPUk0oTUFDKQogI2RlZmluZSBIQVZFX1NDRU5FS0lUIDEKICNlbmRpZgpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9nZW9sb2NhdGlvbi9HZW9sb2NhdGlvbkNsaWVudC5oIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9nZW9sb2NhdGlvbi9HZW9sb2NhdGlvbkNsaWVudC5oCmlu
ZGV4IDViYWYzYWQ4MmM1N2U1YWNiYTk2ZTNkZjBlZDYwZWJjNzU0YmNiMDUuLmE0ZTg2MjM2MjU1
NjdlOWFkZmViMDBkODI0MDAwYTI3N2RiZWFmMDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvZ2VvbG9jYXRpb24vR2VvbG9jYXRpb25DbGllbnQuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2dlb2xvY2F0aW9uL0dlb2xvY2F0aW9uQ2xpZW50LmgKQEAgLTM4LDcgKzM4
LDcgQEAgY2xhc3MgR2VvbG9jYXRpb25DbGllbnQgewogcHVibGljOgogICAgIHZpcnR1YWwgdm9p
ZCBnZW9sb2NhdGlvbkRlc3Ryb3llZCgpID0gMDsKIAotICAgIHZpcnR1YWwgdm9pZCBzdGFydFVw
ZGF0aW5nKGNvbnN0IFN0cmluZyYgYXV0aG9yaXphdGlvblRva2VuKSA9IDA7CisgICAgdmlydHVh
bCB2b2lkIHN0YXJ0VXBkYXRpbmcoY29uc3QgU3RyaW5nJiBhdXRob3JpemF0aW9uVG9rZW4sIGJv
b2wgbmVlZHNIaWdoQWNjdXJhY3kpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgc3RvcFVwZGF0aW5n
KCkgPSAwOwogICAgIHZpcnR1YWwgdm9pZCByZXZva2VBdXRob3JpemF0aW9uVG9rZW4oY29uc3Qg
U3RyaW5nJikgeyB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZ2VvbG9j
YXRpb24vR2VvbG9jYXRpb25Db250cm9sbGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
Z2VvbG9jYXRpb24vR2VvbG9jYXRpb25Db250cm9sbGVyLmNwcAppbmRleCAwNjE2MjkxNjBkOWJj
YzdkNWRhZjc0Y2ZjNGY4MTU1MGJhNDhkZThjLi4wN2RkNjVmM2MxYWVlNzllYjljNzMyODM2YTJk
NWFhZDAxNzMzM2NmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2dlb2xvY2F0
aW9uL0dlb2xvY2F0aW9uQ29udHJvbGxlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9nZW9sb2NhdGlvbi9HZW9sb2NhdGlvbkNvbnRyb2xsZXIuY3BwCkBAIC01MiwxOSArNTIsMjUg
QEAgR2VvbG9jYXRpb25Db250cm9sbGVyOjp+R2VvbG9jYXRpb25Db250cm9sbGVyKCkKICAgICBt
X2NsaWVudC5nZW9sb2NhdGlvbkRlc3Ryb3llZCgpOwogfQogCit2b2lkIEdlb2xvY2F0aW9uQ29u
dHJvbGxlcjo6ZGlkTmF2aWdhdGVQYWdlKCkKK3sKKyAgICB3aGlsZSAoIW1fb2JzZXJ2ZXJzLmlz
RW1wdHkoKSkKKyAgICAgICAgcmVtb3ZlT2JzZXJ2ZXIobV9vYnNlcnZlcnMuYmVnaW4oKS0+Z2V0
KCkpOworfQorCiB2b2lkIEdlb2xvY2F0aW9uQ29udHJvbGxlcjo6YWRkT2JzZXJ2ZXIoR2VvbG9j
YXRpb24mIG9ic2VydmVyLCBib29sIGVuYWJsZUhpZ2hBY2N1cmFjeSkKIHsKLSAgICAvLyBUaGlz
IG1heSBiZSBjYWxsZWQgbXVsdGlwbGUgdGltZXMgd2l0aCB0aGUgc2FtZSBvYnNlcnZlciwgdGhv
dWdoIHJlbW92ZU9ic2VydmVyKCkKLSAgICAvLyBpcyBjYWxsZWQgb25seSBvbmNlIHdpdGggZWFj
aC4KLSAgICBib29sIHdhc0VtcHR5ID0gbV9vYnNlcnZlcnMuaXNFbXB0eSgpOworICAgIGJvb2wg
aGlnaEFjY3VyYWN5V2FzUmVxdWlyZWQgPSBuZWVkc0hpZ2hBY2N1cmFjeSgpOworCiAgICAgbV9v
YnNlcnZlcnMuYWRkKG9ic2VydmVyKTsKICAgICBpZiAoZW5hYmxlSGlnaEFjY3VyYWN5KQogICAg
ICAgICBtX2hpZ2hBY2N1cmFjeU9ic2VydmVycy5hZGQob2JzZXJ2ZXIpOwogCi0gICAgaWYgKGVu
YWJsZUhpZ2hBY2N1cmFjeSkKLSAgICAgICAgbV9jbGllbnQuc2V0RW5hYmxlSGlnaEFjY3VyYWN5
KHRydWUpOwotICAgIGlmICh3YXNFbXB0eSAmJiBtX3BhZ2UuaXNWaXNpYmxlKCkpCi0gICAgICAg
IG1fY2xpZW50LnN0YXJ0VXBkYXRpbmcob2JzZXJ2ZXIuYXV0aG9yaXphdGlvblRva2VuKCkpOwor
ICAgIGlmIChtX2lzVXBkYXRpbmcpIHsKKyAgICAgICAgaWYgKCFoaWdoQWNjdXJhY3lXYXNSZXF1
aXJlZCAmJiBlbmFibGVIaWdoQWNjdXJhY3kpCisgICAgICAgICAgICBtX2NsaWVudC5zZXRFbmFi
bGVIaWdoQWNjdXJhY3kodHJ1ZSk7CisgICAgfSBlbHNlCisgICAgICAgIHN0YXJ0VXBkYXRpbmdJ
Zk5lY2Vzc2FyeSgpOwogfQogCiB2b2lkIEdlb2xvY2F0aW9uQ29udHJvbGxlcjo6cmVtb3ZlT2Jz
ZXJ2ZXIoR2VvbG9jYXRpb24mIG9ic2VydmVyKQpAQCAtNzIsMTIgKzc4LDE3IEBAIHZvaWQgR2Vv
bG9jYXRpb25Db250cm9sbGVyOjpyZW1vdmVPYnNlcnZlcihHZW9sb2NhdGlvbiYgb2JzZXJ2ZXIp
CiAgICAgaWYgKCFtX29ic2VydmVycy5jb250YWlucyhvYnNlcnZlcikpCiAgICAgICAgIHJldHVy
bjsKIAorICAgIGJvb2wgaGlnaEFjY3VyYWN5V2FzUmVxdWlyZWQgPSBuZWVkc0hpZ2hBY2N1cmFj
eSgpOworCiAgICAgbV9vYnNlcnZlcnMucmVtb3ZlKG9ic2VydmVyKTsKICAgICBtX2hpZ2hBY2N1
cmFjeU9ic2VydmVycy5yZW1vdmUob2JzZXJ2ZXIpOwogCisgICAgaWYgKCFtX2lzVXBkYXRpbmcp
CisgICAgICAgIHJldHVybjsKKwogICAgIGlmIChtX29ic2VydmVycy5pc0VtcHR5KCkpCi0gICAg
ICAgIG1fY2xpZW50LnN0b3BVcGRhdGluZygpOwotICAgIGVsc2UgaWYgKG1faGlnaEFjY3VyYWN5
T2JzZXJ2ZXJzLmlzRW1wdHkoKSkKKyAgICAgICAgc3RvcFVwZGF0aW5nSWZOZWNlc3NhcnkoKTsK
KyAgICBlbHNlIGlmIChoaWdoQWNjdXJhY3lXYXNSZXF1aXJlZCAmJiAhbmVlZHNIaWdoQWNjdXJh
Y3koKSkKICAgICAgICAgbV9jbGllbnQuc2V0RW5hYmxlSGlnaEFjY3VyYWN5KGZhbHNlKTsKIH0K
IApAQCAtMTM5LDkgKzE1MCw5IEBAIHZvaWQgR2VvbG9jYXRpb25Db250cm9sbGVyOjphY3Rpdml0
eVN0YXRlRGlkQ2hhbmdlKE9wdGlvblNldDxBY3Rpdml0eVN0YXRlOjpGbGFnCiAgICAgYXV0byBj
aGFuZ2VkID0gb2xkQWN0aXZpdHlTdGF0ZSBeIG5ld0FjdGl2aXR5U3RhdGU7CiAgICAgaWYgKGNo
YW5nZWQgJiBBY3Rpdml0eVN0YXRlOjpJc1Zpc2libGUgJiYgIW1fb2JzZXJ2ZXJzLmlzRW1wdHko
KSkgewogICAgICAgICBpZiAobmV3QWN0aXZpdHlTdGF0ZSAmIEFjdGl2aXR5U3RhdGU6OklzVmlz
aWJsZSkKLSAgICAgICAgICAgIG1fY2xpZW50LnN0YXJ0VXBkYXRpbmcoKCptX29ic2VydmVycy5y
YW5kb20oKSktPmF1dGhvcml6YXRpb25Ub2tlbigpKTsKKyAgICAgICAgICAgIHN0YXJ0VXBkYXRp
bmdJZk5lY2Vzc2FyeSgpOwogICAgICAgICBlbHNlCi0gICAgICAgICAgICBtX2NsaWVudC5zdG9w
VXBkYXRpbmcoKTsKKyAgICAgICAgICAgIHN0b3BVcGRhdGluZ0lmTmVjZXNzYXJ5KCk7CiAgICAg
fQogCiAgICAgaWYgKCFtX3BhZ2UuaXNWaXNpYmxlKCkpCkBAIC0xNTIsNiArMTYzLDI0IEBAIHZv
aWQgR2VvbG9jYXRpb25Db250cm9sbGVyOjphY3Rpdml0eVN0YXRlRGlkQ2hhbmdlKE9wdGlvblNl
dDxBY3Rpdml0eVN0YXRlOjpGbGFnCiAgICAgICAgIG1fY2xpZW50LnJlcXVlc3RQZXJtaXNzaW9u
KHBlcm1pc3Npb25SZXF1ZXN0LmdldCgpKTsKIH0KIAordm9pZCBHZW9sb2NhdGlvbkNvbnRyb2xs
ZXI6OnN0YXJ0VXBkYXRpbmdJZk5lY2Vzc2FyeSgpCit7CisgICAgaWYgKG1faXNVcGRhdGluZyB8
fCAhbV9wYWdlLmlzVmlzaWJsZSgpIHx8IG1fb2JzZXJ2ZXJzLmlzRW1wdHkoKSkKKyAgICAgICAg
cmV0dXJuOworCisgICAgbV9jbGllbnQuc3RhcnRVcGRhdGluZygoKm1fb2JzZXJ2ZXJzLnJhbmRv
bSgpKS0+YXV0aG9yaXphdGlvblRva2VuKCksIG5lZWRzSGlnaEFjY3VyYWN5KCkpOworICAgIG1f
aXNVcGRhdGluZyA9IHRydWU7Cit9CisKK3ZvaWQgR2VvbG9jYXRpb25Db250cm9sbGVyOjpzdG9w
VXBkYXRpbmdJZk5lY2Vzc2FyeSgpCit7CisgICAgaWYgKCFtX2lzVXBkYXRpbmcpCisgICAgICAg
IHJldHVybjsKKworICAgIG1fY2xpZW50LnN0b3BVcGRhdGluZygpOworICAgIG1faXNVcGRhdGlu
ZyA9IGZhbHNlOworfQorCiBjb25zdCBjaGFyKiBHZW9sb2NhdGlvbkNvbnRyb2xsZXI6OnN1cHBs
ZW1lbnROYW1lKCkKIHsKICAgICByZXR1cm4gIkdlb2xvY2F0aW9uQ29udHJvbGxlciI7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2dlb2xvY2F0aW9uL0dlb2xvY2F0aW9uQ29u
dHJvbGxlci5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9nZW9sb2NhdGlvbi9HZW9sb2NhdGlv
bkNvbnRyb2xsZXIuaAppbmRleCA0MmY1ZDA2MmRiNmYwOWM2NjAxMTFkNjZkOWYwZmNmZmYzYjIw
NzQwLi5iYmZmNTc1ZWIwNTgzMjQwNzgwZDNiNDFhOTY3NDJjNmIxZDcyNDhlIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2dlb2xvY2F0aW9uL0dlb2xvY2F0aW9uQ29udHJvbGxl
ci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZ2VvbG9jYXRpb24vR2VvbG9jYXRpb25D
b250cm9sbGVyLmgKQEAgLTMwLDYgKzMwLDcgQEAKICNpbmNsdWRlICJBY3Rpdml0eVN0YXRlQ2hh
bmdlT2JzZXJ2ZXIuaCIKICNpbmNsdWRlICJHZW9sb2NhdGlvbi5oIgogI2luY2x1ZGUgIlBhZ2Uu
aCIKKyNpbmNsdWRlICJSZWdpc3RyYWJsZURvbWFpbi5oIgogI2luY2x1ZGUgPHd0Zi9IYXNoU2V0
Lmg+CiAjaW5jbHVkZSA8d3RmL05vbmNvcHlhYmxlLmg+CiAjaW5jbHVkZSA8d3RmL1JlZlB0ci5o
PgpAQCAtNjUsNiArNjYsOCBAQCBwdWJsaWM6CiAKICAgICB2b2lkIHJldm9rZUF1dGhvcml6YXRp
b25Ub2tlbihjb25zdCBTdHJpbmcmKTsKIAorICAgIHZvaWQgZGlkTmF2aWdhdGVQYWdlKCk7CisK
IHByaXZhdGU6CiAgICAgUGFnZSYgbV9wYWdlOwogICAgIEdlb2xvY2F0aW9uQ2xpZW50JiBtX2Ns
aWVudDsKQEAgLTczLDYgKzc2LDExIEBAIHByaXZhdGU6CiAKICAgICBzdGQ6Om9wdGlvbmFsPEdl
b2xvY2F0aW9uUG9zaXRpb25EYXRhPiBtX2xhc3RQb3NpdGlvbjsKIAorICAgIGJvb2wgbmVlZHNI
aWdoQWNjdXJhY3koKSBjb25zdCB7IHJldHVybiAhbV9oaWdoQWNjdXJhY3lPYnNlcnZlcnMuaXNF
bXB0eSgpOyB9CisKKyAgICB2b2lkIHN0YXJ0VXBkYXRpbmdJZk5lY2Vzc2FyeSgpOworICAgIHZv
aWQgc3RvcFVwZGF0aW5nSWZOZWNlc3NhcnkoKTsKKwogICAgIHR5cGVkZWYgSGFzaFNldDxSZWY8
R2VvbG9jYXRpb24+PiBPYnNlcnZlcnNTZXQ7CiAgICAgLy8gQWxsIG9ic2VydmVyczsgYm90aCB0
aG9zZSByZXF1ZXN0aW5nIGhpZ2ggYWNjdXJhY3kgYW5kIHRob3NlIG5vdC4KICAgICBPYnNlcnZl
cnNTZXQgbV9vYnNlcnZlcnM7CkBAIC04MCw2ICs4OCw5IEBAIHByaXZhdGU6CiAKICAgICAvLyBX
aGlsZSB0aGUgcGFnZSBpcyBub3QgdmlzaWJsZSwgd2UgcGVuZCBwZXJtaXNzaW9uIHJlcXVlc3Rz
LgogICAgIEhhc2hTZXQ8UmVmPEdlb2xvY2F0aW9uPj4gbV9wZW5kaW5nUGVybWlzc2lvblJlcXVl
c3Q7CisKKyAgICBSZWdpc3RyYWJsZURvbWFpbiBtX3JlZ2lzdHJhYmxlRG9tYWluOworICAgIGJv
b2wgbV9pc1VwZGF0aW5nIHsgZmFsc2UgfTsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZ2VvbG9jYXRpb24vR2VvbG9jYXRp
b25Qb3NpdGlvbkRhdGEuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZ2VvbG9jYXRpb24vR2Vv
bG9jYXRpb25Qb3NpdGlvbkRhdGEuaAppbmRleCA5MjYyMjE3MGM4YWFkNjk4OWI4YTEyY2U0ODM1
NmRjNjg3YmY2ZTM1Li5jYzIxODBhODM3ZDI3NDNjMWZiZjc2MWM0MTBlMWM3ZWJmZWFlZTdkIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2dlb2xvY2F0aW9uL0dlb2xvY2F0aW9u
UG9zaXRpb25EYXRhLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9nZW9sb2NhdGlvbi9H
ZW9sb2NhdGlvblBvc2l0aW9uRGF0YS5oCkBAIC0yOSw3ICsyOSw3IEBACiAjaW5jbHVkZSA8d3Rm
L1JlZi5oPgogI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CiAKLSNpZiBQTEFURk9STShJT1Nf
RkFNSUxZKQorI2lmIFBMQVRGT1JNKENPQ09BKQogT0JKQ19DTEFTUyBDTExvY2F0aW9uOwogI2Vu
ZGlmCiAKQEAgLTQ3LDcgKzQ3LDcgQEAgcHVibGljOgogICAgIHsKICAgICB9CiAKLSNpZiBQTEFU
Rk9STShJT1NfRkFNSUxZKQorI2lmIFBMQVRGT1JNKENPQ09BKQogICAgIFdFQkNPUkVfRVhQT1JU
IGV4cGxpY2l0IEdlb2xvY2F0aW9uUG9zaXRpb25EYXRhKENMTG9jYXRpb24qKTsKICNlbmRpZgog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2dlb2xvY2F0aW9uL2NvY29hL0dl
b2xvY2F0aW9uUG9zaXRpb25EYXRhQ29jb2EubW0gYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2dl
b2xvY2F0aW9uL2NvY29hL0dlb2xvY2F0aW9uUG9zaXRpb25EYXRhQ29jb2EubW0KbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uODFlNDBmMTY0MmIyNjg5NTJiN2IwMzk4ZTRlOGZlMmI4Y2Q1ODBkMQotLS0gL2Rldi9udWxs
CisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZ2VvbG9jYXRpb24vY29jb2EvR2VvbG9jYXRp
b25Qb3NpdGlvbkRhdGFDb2NvYS5tbQpAQCAtMCwwICsxLDUzIEBACisvKgorICogQ29weXJpZ2h0
IChDKSAyMDE3IEFwcGxlIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KKyAqCisgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisg
KiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisg
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBB
TlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQu
ICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVY
RU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2ltcG9ydCAiY29uZmlnLmgiCisjaW1wb3J0
ICJHZW9sb2NhdGlvblBvc2l0aW9uLmgiCisKKyNpbXBvcnQgPENvcmVMb2NhdGlvbi9DTExvY2F0
aW9uLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworR2VvbG9jYXRpb25Qb3NpdGlvbkRhdGE6
Okdlb2xvY2F0aW9uUG9zaXRpb25EYXRhKENMTG9jYXRpb24gKmxvY2F0aW9uKQorICAgIDogdGlt
ZXN0YW1wKGxvY2F0aW9uLnRpbWVzdGFtcC50aW1lSW50ZXJ2YWxTaW5jZTE5NzApCisgICAgLCBs
YXRpdHVkZShsb2NhdGlvbi5jb29yZGluYXRlLmxhdGl0dWRlKQorICAgICwgbG9uZ2l0dWRlKGxv
Y2F0aW9uLmNvb3JkaW5hdGUubG9uZ2l0dWRlKQorICAgICwgYWNjdXJhY3kobG9jYXRpb24uaG9y
aXpvbnRhbEFjY3VyYWN5KQoreworICAgIGlmIChsb2NhdGlvbi52ZXJ0aWNhbEFjY3VyYWN5ID49
IDAuMCkgeworICAgICAgICBhbHRpdHVkZSA9IGxvY2F0aW9uLmFsdGl0dWRlOworICAgICAgICBh
bHRpdHVkZUFjY3VyYWN5ID0gbG9jYXRpb24udmVydGljYWxBY2N1cmFjeTsKKyAgICB9CisgICAg
aWYgKGxvY2F0aW9uLnNwZWVkID49IDAuMCkKKyAgICAgICAgc3BlZWQgPSBsb2NhdGlvbi5zcGVl
ZDsKKyAgICBpZiAobG9jYXRpb24uY291cnNlID49IDAuMCkKKyAgICAgICAgaGVhZGluZyA9IGxv
Y2F0aW9uLmNvdXJzZTsKKyNpZiAhUExBVEZPUk0oTUFDQ0FUQUxZU1QpCisgICAgaWYgKGxvY2F0
aW9uLmZsb29yKQorICAgICAgICBmbG9vckxldmVsID0gbG9jYXRpb24uZmxvb3IubGV2ZWw7Cisj
ZW5kaWYKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9nZW9sb2NhdGlvbi9pb3MvR2VvbG9jYXRpb25Qb3NpdGlvbkRhdGFJT1Mu
bW0gYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2dlb2xvY2F0aW9uL2lvcy9HZW9sb2NhdGlvblBv
c2l0aW9uRGF0YUlPUy5tbQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOThkOWEyNDIx
ZTdmMjMwOWI0ZjYyM2IxNGQ3Y2JlMmI2YzdlMDQ1Yy4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2dlb2xvY2F0aW9u
L2lvcy9HZW9sb2NhdGlvblBvc2l0aW9uRGF0YUlPUy5tbQorKysgL2Rldi9udWxsCkBAIC0xLDU3
ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTcgQXBwbGUgSW5jLiBBbGwgUmlnaHRz
IFJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0Ogot
ICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhl
Ci0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
QVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKLSAqIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgot
ICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4g
T1IKLSAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLCBTUEVDSUFMLAotICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogUFJPQ1VSRU1FTlQgT0YgU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCi0gKiBQUk9G
SVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkg
VEhFT1JZCi0gKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0j
aW1wb3J0ICJjb25maWcuaCIKLSNpbXBvcnQgIkdlb2xvY2F0aW9uUG9zaXRpb24uaCIKLQotI2lm
IFBMQVRGT1JNKElPU19GQU1JTFkpCi0KLSNpbXBvcnQgPENvcmVMb2NhdGlvbi9DTExvY2F0aW9u
Lmg+Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotR2VvbG9jYXRpb25Qb3NpdGlvbkRhdGE6Okdl
b2xvY2F0aW9uUG9zaXRpb25EYXRhKENMTG9jYXRpb24qIGxvY2F0aW9uKQotICAgIDogdGltZXN0
YW1wKGxvY2F0aW9uLnRpbWVzdGFtcC50aW1lSW50ZXJ2YWxTaW5jZTE5NzApCi0gICAgLCBsYXRp
dHVkZShsb2NhdGlvbi5jb29yZGluYXRlLmxhdGl0dWRlKQotICAgICwgbG9uZ2l0dWRlKGxvY2F0
aW9uLmNvb3JkaW5hdGUubG9uZ2l0dWRlKQotICAgICwgYWNjdXJhY3kobG9jYXRpb24uaG9yaXpv
bnRhbEFjY3VyYWN5KQotewotICAgIGlmIChsb2NhdGlvbi52ZXJ0aWNhbEFjY3VyYWN5ID49IDAu
MCkgewotICAgICAgICBhbHRpdHVkZSA9IGxvY2F0aW9uLmFsdGl0dWRlOwotICAgICAgICBhbHRp
dHVkZUFjY3VyYWN5ID0gbG9jYXRpb24udmVydGljYWxBY2N1cmFjeTsKLSAgICB9Ci0gICAgaWYg
KGxvY2F0aW9uLnNwZWVkID49IDAuMCkKLSAgICAgICAgc3BlZWQgPSBsb2NhdGlvbi5zcGVlZDsK
LSAgICBpZiAobG9jYXRpb24uY291cnNlID49IDAuMCkKLSAgICAgICAgaGVhZGluZyA9IGxvY2F0
aW9uLmNvdXJzZTsKLSNpZiAhUExBVEZPUk0oTUFDQ0FUQUxZU1QpCi0gICAgaWYgKGxvY2F0aW9u
LmZsb29yKQotICAgICAgICBmbG9vckxldmVsID0gbG9jYXRpb24uZmxvb3IubGV2ZWw7Ci0jZW5k
aWYKLX0KLQotfQotCi0jZW5kaWYgLy8gUExBVEZPUk0oSU9TX0ZBTUlMWSkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL1NvdXJjZXNDb2NvYS50eHQgYi9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2Vz
Q29jb2EudHh0CmluZGV4IGM3YTJkYmRhYTBlNDBkZWNlYzAyODQ3Njk0MTQ5NjJhMGZmY2U1YTUu
LjQzZGYxY2NmMWY0OWI0MDAwNWIyYWMyNWIyNDU1ZmU1YmZmOGE3ZGMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL1NvdXJjZXNDb2NvYS50eHQKKysrIGIvU291cmNlL1dlYkNvcmUvU291cmNl
c0NvY29hLnR4dApAQCAtMjUxLDYgKzI1MSw3IEBAIHBsYXRmb3JtL2NmL01lZGlhQWNjZXNzaWJp
bGl0eVNvZnRMaW5rLmNwcAogcGxhdGZvcm0vY2YvUnVuTG9vcE9ic2VydmVyLmNwcAogcGxhdGZv
cm0vY2YvU2hhcmVkQnVmZmVyQ0YuY3BwCiBwbGF0Zm9ybS9jb2NvYS9Db250ZW50RmlsdGVyVW5i
bG9ja0hhbmRsZXJDb2NvYS5tbSBAbm8tdW5pZnkKK3BsYXRmb3JtL2NvY29hL0NvcmVMb2NhdGlv
bkdlb2xvY2F0aW9uUHJvdmlkZXIubW0KIHBsYXRmb3JtL2NvY29hL0NvcmVWaWRlb1NvZnRMaW5r
LmNwcAogcGxhdGZvcm0vY29jb2EvRHJhZ0RhdGFDb2NvYS5tbQogcGxhdGZvcm0vY29jb2EvRHJh
Z0ltYWdlQ29jb2EubW0KQEAgLTMwNyw3ICszMDgsNyBAQCBwbGF0Zm9ybS9ncmFwaGljcy9hdmZv
dW5kYXRpb24vTWVkaWFTZWxlY3Rpb25Hcm91cEFWRk9iakMubW0KIHBsYXRmb3JtL2dyYXBoaWNz
L2F2Zm91bmRhdGlvbi9TYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXIuY3BwCiBwbGF0Zm9ybS9ncmFw
aGljcy9hdmZvdW5kYXRpb24vV2ViTWVkaWFTZXNzaW9uTWFuYWdlck1hYy5jcHAKIHBsYXRmb3Jt
L2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0FWQXNzZXRNSU1FVHlwZUNhY2hlLm1tCi1wbGF0
Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9BVkFzc2V0VHJhY2tVdGlsaXRpZXMubW0K
K3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0FWQXNzZXRUcmFja1V0aWxpdGll
cy5tbSBAbm8tdW5pZnkKIHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0FWT3V0
cHV0RGV2aWNlTWVudUNvbnRyb2xsZXJUYXJnZXRQaWNrZXIubW0gQG5vLXVuaWZ5CiBwbGF0Zm9y
bS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9BVlJvdXRlUGlja2VyVmlld1RhcmdldFBpY2tl
ci5tbQogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvQVZTdHJlYW1EYXRhUGFy
c2VyTUlNRVR5cGVDYWNoZS5tbQpAQCAtMzE4LDcgKzMxOSw3IEBAIHBsYXRmb3JtL2dyYXBoaWNz
L2F2Zm91bmRhdGlvbi9vYmpjL0NETVNlc3Npb25BVkZvdW5kYXRpb25PYmpDLm1tCiBwbGF0Zm9y
bS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9DRE1TZXNzaW9uQVZTdHJlYW1TZXNzaW9uLm1t
CiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9DRE1TZXNzaW9uTWVkaWFTb3Vy
Y2VBVkZPYmpDLm1tCiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9JbWFnZURl
Y29kZXJBVkZPYmpDLm1tCi1wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9JbmJh
bmRUZXh0VHJhY2tQcml2YXRlQVZGT2JqQy5tbQorcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0
aW9uL29iamMvSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUFWRk9iakMubW0gQG5vLXVuaWZ5CiBwbGF0
Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9JbmJhbmRDaGFwdGVyVHJhY2tQcml2YXRl
QVZGT2JqQy5tbSBAbm8tdW5pZnkKIHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpj
L0xvY2FsU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyLm1tCiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZv
dW5kYXRpb24vb2JqYy9NZWRpYVBsYXliYWNrVGFyZ2V0UGlja2VyTWFjLm1tCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3Vy
Y2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggNzI4YzEz
ZDI2YjI1Y2I3YjVlOGY0Y2EwNzg1NGE4YWVmODE3MzRmNy4uNmY5ZWY4ZmQ2NDkxZThjMjY5ZWQ2
Nzg3NWRiNDAwNDE5NjVkYmU1NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNv
ZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMTM1Myw2ICsxMzUzLDcgQEAKIAkJNDY4MzQ0RTAx
RURERkFBQTAwQjc3OTVCIC8qIERPTVJlY3RMaXN0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0NjgzNDRERTFFRERGQTVGMDBCNzc5NUIgLyogRE9NUmVj
dExpc3QuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9Owog
CQk0NjgzREY0MDI3NjdERjk4MDA3RDAwQzggLyogSlNTaGFkb3dSZWFsbUdsb2JhbFNjb3BlQmFz
ZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDY4M0RG
M0UyNzY3REY5ODAwN0QwMEM4IC8qIEpTU2hhZG93UmVhbG1HbG9iYWxTY29wZUJhc2UuaCAqLzsg
fTsKIAkJNDY4M0RGNDEyNzY3RTkxQTAwN0QwMEM4IC8qIFNoYWRvd1JlYWxtR2xvYmFsU2NvcGUu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ2ODNERjNC
Mjc2N0RGMjYwMDdEMDBDOCAvKiBTaGFkb3dSZWFsbUdsb2JhbFNjb3BlLmggKi87IHNldHRpbmdz
ID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJNDY4OEU5ODAyN0I2QjQ1MDAw
NTY3Q0QyIC8qIENvcmVMb2NhdGlvbkdlb2xvY2F0aW9uUHJvdmlkZXIuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ2ODhFOTdGMjdCNkI0NDQwMDU2N0NE
MiAvKiBDb3JlTG9jYXRpb25HZW9sb2NhdGlvblByb3ZpZGVyLmggKi87IHNldHRpbmdzID0ge0FU
VFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNDY4OEVFM0MyNkREMjYxMDAwMkFGNUM0
IC8qIENyb3NzT3JpZ2luTW9kZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gNDY4OEVFM0EyNkREMjYwQzAwMkFGNUM0IC8qIENyb3NzT3JpZ2luTW9kZS5o
ICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTQ2OTQz
REM5Mjc2M0Y4MTcwMDRCNjEwRSAvKiBTaGFyZWRXb3JrZXJPYmplY3RJZGVudGlmaWVyLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0Njk0M0RDNzI3NjNG
ODBFMDA0QjYxMEUgLyogU2hhcmVkV29ya2VyT2JqZWN0SWRlbnRpZmllci5oICovOyBzZXR0aW5n
cyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTQ2OTg1RjIzMjdBNEE2QUQw
MDk3QTMyQiAvKiBTaGFyZWRXb3JrZXJLZXkuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDQ2OTg1RjIyMjdBNEE2ODYwMDk3QTMyQiAvKiBTaGFyZWRXb3Jr
ZXJLZXkuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwpA
QCAtMTM3MCw2ICsxMzcxLDcgQEAKIAkJNDZCOTUxOTkyMDdENjM0RDAwQTdEMkREIC8qIFJlbW90
ZURPTVdpbmRvdy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gNDZCOTUxOEUyMDdENjMyQTAwQTdEMkREIC8qIFJlbW90ZURPTVdpbmRvdy5oICovOyBzZXR0
aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTQ2Qjk1MTlBMjA3RDYz
NTQwMEE3RDJERCAvKiBSZW1vdGVGcmFtZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gNDZCOTUxOTIyMDdENjMyRTAwQTdEMkREIC8qIFJlbW90ZUZyYW1l
LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNDZC
OTVCRjUyMjMxQ0ZENjAwNTNBNTA0IC8qIERldmljZU9yaWVudGF0aW9uQW5kTW90aW9uQWNjZXNz
Q29udHJvbGxlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gNDZCOTVCRjQyMjMxQ0ZCODAwNTNBNTA0IC8qIERldmljZU9yaWVudGF0aW9uQW5kTW90aW9u
QWNjZXNzQ29udHJvbGxlci5oICovOyB9OworCQk0NkJBNDlCODI3QkI0NDMzMDA3N0Y2M0YgLyog
QVZBc3NldFRyYWNrVXRpbGl0aWVzLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gQ0RFQ0E4OTgxRURGNDQ3RDAwRENCMDhCIC8qIEFWQXNzZXRUcmFja1V0
aWxpdGllcy5tbSAqLzsgfTsKIAkJNDZCQ0JCQzIyMDg1MDA4RjAwNzEwNjM4IC8qIEpTUmVtb3Rl
RE9NV2luZG93QmFzZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gNDZCQ0JCQzAyMDg1MDA3RjAwNzEwNjM4IC8qIEpTUmVtb3RlRE9NV2luZG93QmFzZS5o
ICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTQ2QkQw
NUM1MjVCQjZFNTkwMDIyNUYzMCAvKiBBZGRFdmVudExpc3RlbmVyT3B0aW9ucy5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDZCRDA1QzIyNUJCNkU0RTAw
MjI1RjMwIC8qIEFkZEV2ZW50TGlzdGVuZXJPcHRpb25zLmggKi87IHNldHRpbmdzID0ge0FUVFJJ
QlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNDZCRDA1QzYyNUJCNkU2QzAwMjI1RjMwIC8q
IEV2ZW50TGlzdGVuZXJPcHRpb25zLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA0NkJEMDVDMzI1QkI2RTRFMDAyMjVGMzAgLyogRXZlbnRMaXN0ZW5lck9w
dGlvbnMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwpA
QCAtMTM3OCw2ICsxMzgwLDcgQEAKIAkJNDZDNjk2Q0IxRTcyMDVGNzAwNTk3OTM3IC8qIENQVU1v
bml0b3IuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ2
QzY5NkM5MUU3MjA1RTQwMDU5NzkzNyAvKiBDUFVNb25pdG9yLmggKi87IHNldHRpbmdzID0ge0FU
VFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNDZDNjk2Q0MxRTcyMDVGQzAwNTk3OTM3
IC8qIENQVU1vbml0b3IuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gNDZDNjk2Q0ExRTcyMDVFNDAwNTk3OTM3IC8qIENQVU1vbml0b3IuY3BwICovOyB9
OwogCQk0NkM4M0VGRTFBOUJCRTI5MDBBNzlBNDEgLyogR2VvTm90aWZpZXIuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ2QzgzRUZDMUE5QkJFMjkwMEE3
OUE0MSAvKiBHZW9Ob3RpZmllci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZh
dGUsICk7IH07IH07CisJCTQ2Q0E5NDMxMjdCODY5NTgwMEY0RjVGRiAvKiBJbmJhbmRUZXh0VHJh
Y2tQcml2YXRlQVZGT2JqQy5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDA3QUE2QjZBMTY2RDAxOTUwMEQ0NTY3MSAvKiBJbmJhbmRUZXh0VHJhY2tQcml2
YXRlQVZGT2JqQy5tbSAqLzsgfTsKIAkJNDZDQTlDNDQxRjk3QkJFOTAwNENGQzNBIC8qIFZpc2li
aWxpdHlTdGF0ZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gNDZDQTlDNDExRjk3QkJFNzAwNENGQzNBIC8qIFZpc2liaWxpdHlTdGF0ZS5oICovOyBzZXR0
aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTQ2Q0Y1MDRBMjdBQjFF
QTQwMDcwREJDOCAvKiBTaGFyZWRXb3JrZXJDb250ZXh0TWFuYWdlci5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDZDRjUwNDgyN0FCMUVBMTAwNzBEQkM4
IC8qIFNoYXJlZFdvcmtlckNvbnRleHRNYW5hZ2VyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVU
RVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNDZEMDAwNDAyNkEwRkVCMzAwRDFCRjFFIC8qIFN1
Ym1pdEV2ZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA0NkQwMDAzRTI2QTBGRTZGMDBEMUJGMUUgLyogU3VibWl0RXZlbnQuaCAqLzsgfTsKQEAgLTI2
OTIsNyArMjY5NSw3IEBACiAJCTgzNzY1Rjk1MURBQzUyMkYwMEMwNjUzNyAvKiBNb3VzZUV2ZW50
SW5pdC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODM3
NjVGOTQxREFDNTIxODAwQzA2NTM3IC8qIE1vdXNlRXZlbnRJbml0LmggKi87IHNldHRpbmdzID0g
e0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJODM3ODg3ODIyNEQ4QTYwOTAwMEQ0
QTVCIC8qIEF1ZGlvQnVmZmVyU291cmNlT3B0aW9ucy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODM3ODg3N0YyNEQ4QTVGQzAwMEQ0QTVCIC8qIEF1ZGlv
QnVmZmVyU291cmNlT3B0aW9ucy5oICovOyB9OwogCQk4Mzc5MzYzRjFGQkJCMEI0MDBDODAyM0Mg
LyogU2VydmljZVdvcmtlckNsaWVudERhdGEuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDgzNzkzNjNFMUZCQkIwQTUwMEM4MDIzQyAvKiBTZXJ2aWNlV29y
a2VyQ2xpZW50RGF0YS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7
IH07IH07Ci0JCTgzNzk2NENGMUY4REI2OUQwMDIxOEVBMCAvKiBHZW9sb2NhdGlvblBvc2l0aW9u
RGF0YUlPUy5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDgzNzk2NENFMUY4REI2OUEwMDIxOEVBMCAvKiBHZW9sb2NhdGlvblBvc2l0aW9uRGF0YUlPUy5t
bSAqLzsgfTsKKwkJODM3OTY0Q0YxRjhEQjY5RDAwMjE4RUEwIC8qIEdlb2xvY2F0aW9uUG9zaXRp
b25EYXRhQ29jb2EubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA4Mzc5NjRDRTFGOERCNjlBMDAyMThFQTAgLyogR2VvbG9jYXRpb25Qb3NpdGlvbkRhdGFD
b2NvYS5tbSAqLzsgfTsKIAkJODM3QTgwMTMxRTFFMTI3MzAwMDI2QjlGIC8qIExvY2FsaXphYmxl
LnN0cmluZ3NkaWN0IGluIFJlc291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA4MzdBODAxMTFFMUUxMjczMDAwMjZCOUYgLyogTG9jYWxpemFibGUuc3RyaW5nc2RpY3Qg
Ki87IH07CiAJCTgzN0MwQjc2MjREQjM4NTAwMDVENTk1OSAvKiBEeW5hbWljc0NvbXByZXNzb3JP
cHRpb25zLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4
MzdDMEI3MzI0REIzODQyMDA1RDU5NTkgLyogRHluYW1pY3NDb21wcmVzc29yT3B0aW9ucy5oICov
OyB9OwogCQk4MzdGQjM0NTFGOUVBMDZEMDBEMEZDMzEgLyogRXh0ZW5kYWJsZU1lc3NhZ2VFdmVu
dC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODM3RkIz
NDAxRjlFQTA2NjAwRDBGQzMxIC8qIEV4dGVuZGFibGVNZXNzYWdlRXZlbnQuaCAqLzsgfTsKQEAg
LTkyNzEsNiArOTI3NCw4IEBACiAJCTQ2ODNERjNDMjc2N0RGMjYwMDdEMDBDOCAvKiBTaGFkb3dS
ZWFsbUdsb2JhbFNjb3BlLmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25v
d25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBTaGFkb3dSZWFsbUdsb2JhbFNjb3BlLmlkbDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDY4M0RGM0QyNzY3REY5ODAwN0QwMEM4IC8qIEpT
U2hhZG93UmVhbG1HbG9iYWxTY29wZUJhc2UuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
Y3BwOyBwYXRoID0gSlNTaGFkb3dSZWFsbUdsb2JhbFNjb3BlQmFzZS5jcHA7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCTQ2ODNERjNFMjc2N0RGOTgwMDdEMDBDOCAvKiBKU1NoYWRvd1Jl
YWxtR2xvYmFsU2NvcGVCYXNlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpT
U2hhZG93UmVhbG1HbG9iYWxTY29wZUJhc2UuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
KwkJNDY4OEU5N0QyN0I2QjQ0MzAwNTY3Q0QyIC8qIENvcmVMb2NhdGlvbkdlb2xvY2F0aW9uUHJv
dmlkZXIubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBDb3JlTG9jYXRpb25HZW9sb2NhdGlvblBy
b3ZpZGVyLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk0Njg4RTk3RjI3QjZCNDQ0
MDA1NjdDRDIgLyogQ29yZUxvY2F0aW9uR2VvbG9jYXRpb25Qcm92aWRlci5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBDb3JlTG9jYXRpb25HZW9sb2NhdGlvblByb3ZpZGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCTQ2ODhFRTNBMjZERDI2MEMwMDJBRjVDNCAvKiBDcm9zc09yaWdpbk1vZGUu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gQ3Jvc3NPcmlnaW5Nb2RlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCTQ2OEI4QkRFMjVDQzg0OTMwMEY2NzgyMiAvKiBKU0Jhc2VBdWRpb0NvbnRleHRD
dXN0b20uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNCYXNlQXVkaW9Db250ZXh0Q3VzdG9tLmNw
cDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDY5NDNEQzcyNzYzRjgwRTAwNEI2MTBF
IC8qIFNoYXJlZFdvcmtlck9iamVjdElkZW50aWZpZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU2hhcmVk
V29ya2VyT2JqZWN0SWRlbnRpZmllci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAt
OTM4NSw4ICs5MzkwLDggQEAKIAkJNDk0QkQ3OTQwRjU1QzhFRTAwNzQ3ODI4IC8qIFdlYktpdFBv
aW50LmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBXZWJLaXRQb2ludC5pZGw7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQ5NEJENzlCMEY1NUM5NEMwMDc0NzgyOCAvKiBKU1dlYktp
dFBvaW50LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTV2ViS2l0
UG9pbnQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0OTRCRDc5QzBGNTVDOTRD
MDA3NDc4MjggLyogSlNXZWJLaXRQb2ludC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBKU1dlYktpdFBvaW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTQ5NEVC
RDA2MjdBQTlDNTMwMEY0ODQ0RiAvKiBQREZEb2N1bWVudC5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBQREZE
b2N1bWVudC5oOyBwYXRoID0gUERGRG9jdW1lbnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKLQkJNDk0RUJEMDgyN0FBOUM1MzAwRjQ4NDRGIC8qIFBERkRvY3VtZW50LmNwcCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
LmNwcDsgbmFtZSA9IFBERkRvY3VtZW50LmNwcDsgcGF0aCA9IFBERkRvY3VtZW50LmNwcDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNDk0RUJEMDYyN0FBOUM1MzAwRjQ4NDRGIC8qIFBE
RkRvY3VtZW50LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFBERkRvY3VtZW50Lmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CisJCTQ5NEVCRDA4MjdBQTlDNTMwMEY0ODQ0RiAvKiBQREZEb2N1bWVudC5j
cHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBQREZEb2N1bWVudC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCTQ5NTg3ODFGMTJBNTdEREYwMDcyMzhBQyAvKiBQbGF0Zm9ybUNBQW5pbWF0
aW9uQ29jb2EubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBQbGF0
Zm9ybUNBQW5pbWF0aW9uQ29jb2EubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQ5
NTg3ODIwMTJBNTdEREYwMDcyMzhBQyAvKiBQbGF0Zm9ybUNBTGF5ZXJDb2NvYS5tbSAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFBsYXRmb3JtQ0FMYXllckNvY29hLm1t
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0OTY5QjBGMDEzRDBCMzNGMDBERjM1MjEg
LyogSGl0VGVzdGluZ1RyYW5zZm9ybVN0YXRlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
LmNwcDsgcGF0aCA9IEhpdFRlc3RpbmdUcmFuc2Zvcm1TdGF0ZS5jcHA7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CkBAIC0xMjE4Nyw3ICsxMjE5Miw3IEBACiAJCTgzNzg4NzgxMjREOEE1RkMw
MDBENEE1QiAvKiBBdWRpb0J1ZmZlclNvdXJjZU9wdGlvbnMuaWRsICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IEF1ZGlvQnVmZmVy
U291cmNlT3B0aW9ucy5pZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTgzNzkzNjND
MUZCQkIwQTQwMEM4MDIzQyAvKiBTZXJ2aWNlV29ya2VyQ2xpZW50RGF0YS5jcHAgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBTZXJ2aWNlV29ya2VyQ2xpZW50RGF0YS5jcHA7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTgzNzkzNjNFMUZCQkIwQTUwMEM4MDIzQyAv
KiBTZXJ2aWNlV29ya2VyQ2xpZW50RGF0YS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBTZXJ2aWNlV29ya2VyQ2xpZW50RGF0YS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwotCQk4Mzc5NjRDRTFGOERCNjlBMDAyMThFQTAgLyogR2VvbG9jYXRpb25Qb3NpdGlvbkRhdGFJ
T1MubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IG5hbWUgPSBHZW9sb2NhdGlv
blBvc2l0aW9uRGF0YUlPUy5tbTsgcGF0aCA9IE1vZHVsZXMvZ2VvbG9jYXRpb24vaW9zL0dlb2xv
Y2F0aW9uUG9zaXRpb25EYXRhSU9TLm1tOyBzb3VyY2VUcmVlID0gU09VUkNFX1JPT1Q7IH07CisJ
CTgzNzk2NENFMUY4REI2OUEwMDIxOEVBMCAvKiBHZW9sb2NhdGlvblBvc2l0aW9uRGF0YUNvY29h
Lm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBuYW1lID0gR2VvbG9jYXRpb25Q
b3NpdGlvbkRhdGFDb2NvYS5tbTsgcGF0aCA9IE1vZHVsZXMvZ2VvbG9jYXRpb24vY29jb2EvR2Vv
bG9jYXRpb25Qb3NpdGlvbkRhdGFDb2NvYS5tbTsgc291cmNlVHJlZSA9IFNPVVJDRV9ST09UOyB9
OwogCQk4MzdBODAxMjFFMUUxMjczMDAwMjZCOUYgLyogZW4gKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0LnBsaXN0LnN0cmluZ3NkaWN0OyBuYW1l
ID0gZW47IHBhdGggPSBlbi5scHJvai9Mb2NhbGl6YWJsZS5zdHJpbmdzZGljdDsgc291cmNlVHJl
ZSA9IFNPVVJDRV9ST09UOyB9OwogCQk4MzdCN0QxRjFEQzNGNTRDMDBEMDUxRkMgLyogVmFsaWRh
dGlvbkJ1YmJsZUlPUy5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9
IFZhbGlkYXRpb25CdWJibGVJT1MubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTgz
N0MwQjczMjREQjM4NDIwMDVENTk1OSAvKiBEeW5hbWljc0NvbXByZXNzb3JPcHRpb25zLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IER5bmFtaWNzQ29tcHJlc3Nvck9wdGlvbnMuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKQEAgLTIxNjA5LDYgKzIxNjE0LDE0IEBACiAJCQlwYXRoID0gY29udGV4dDsK
IAkJCXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7CiAJCX07CisJCTQ2NUMzRDE5MjdCOTkxQzgwMDIx
MzAyRiAvKiBjb2NvYSAqLyA9IHsKKwkJCWlzYSA9IFBCWEdyb3VwOworCQkJY2hpbGRyZW4gPSAo
CisJCQkJODM3OTY0Q0UxRjhEQjY5QTAwMjE4RUEwIC8qIEdlb2xvY2F0aW9uUG9zaXRpb25EYXRh
Q29jb2EubW0gKi8sCisJCQkpOworCQkJcGF0aCA9IGNvY29hOworCQkJc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsKKwkJfTsKIAkJNDY2OTRDREUyNzU5NDQ2RDAwRTMxNTBFIC8qIHNoYXJlZCAqLyA9
IHsKIAkJCWlzYSA9IFBCWEdyb3VwOwogCQkJY2hpbGRyZW4gPSAoCkBAIC0yNTEwNCwxNCArMjUx
MTcsNiBAQAogCQkJcGF0aCA9IGJlYWNvbjsKIAkJCXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7CiAJ
CX07Ci0JCTgzNzk2NENDMUY4REI2N0QwMDIxOEVBMCAvKiBpb3MgKi8gPSB7Ci0JCQlpc2EgPSBQ
QlhHcm91cDsKLQkJCWNoaWxkcmVuID0gKAotCQkJCTgzNzk2NENFMUY4REI2OUEwMDIxOEVBMCAv
KiBHZW9sb2NhdGlvblBvc2l0aW9uRGF0YUlPUy5tbSAqLywKLQkJCSk7Ci0JCQluYW1lID0gaW9z
OwotCQkJc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsKLQkJfTsKIAkJODNGQjMzNjUxRjUwOEExNzAw
OTg2RTU0IC8qIGVudHJpZXNhcGkgKi8gPSB7CiAJCQlpc2EgPSBQQlhHcm91cDsKIAkJCWNoaWxk
cmVuID0gKApAQCAtMjU5MTQsMTAgKzI1OTE5LDEwIEBACiAJCQkJMzE0ODc3RTAxRkFBOEZFOTAw
QzA1NzU5IC8qIE9mZnNjcmVlbkNhbnZhcy5jcHAgKi8sCiAJCQkJMzE0ODc3RTExRkFBOEZFOTAw
QzA1NzU5IC8qIE9mZnNjcmVlbkNhbnZhcy5oICovLAogCQkJCTMxNDg3N0Q5MUZBQTg3MDYwMEMw
NTc1OSAvKiBPZmZzY3JlZW5DYW52YXMuaWRsICovLAotCQkJCTQ5NEVCRDA4MjdBQTlDNTMwMEY0
ODQ0RiAvKiBQREZEb2N1bWVudC5jcHAgKi8sCi0JCQkJNDk0RUJEMDYyN0FBOUM1MzAwRjQ4NDRG
IC8qIFBERkRvY3VtZW50LmggKi8sCiAJCQkJRjU1QjNEOTUxMjUxRjEyRDAwM0VGMjY5IC8qIFBh
c3N3b3JkSW5wdXRUeXBlLmNwcCAqLywKIAkJCQlGNTVCM0Q5NjEyNTFGMTJEMDAzRUYyNjkgLyog
UGFzc3dvcmRJbnB1dFR5cGUuaCAqLywKKwkJCQk0OTRFQkQwODI3QUE5QzUzMDBGNDg0NEYgLyog
UERGRG9jdW1lbnQuY3BwICovLAorCQkJCTQ5NEVCRDA2MjdBQTlDNTMwMEY0ODQ0RiAvKiBQREZE
b2N1bWVudC5oICovLAogCQkJCTk3MjA1QUI5MTIzOTI5MjcwMEIxNzM4MCAvKiBQbHVnaW5Eb2N1
bWVudC5jcHAgKi8sCiAJCQkJOTcyMDVBQkExMjM5MjkyNzAwQjE3MzgwIC8qIFBsdWdpbkRvY3Vt
ZW50LmggKi8sCiAJCQkJQ0RFRTM5MzYxNzk3NDI1OTAwMUQ3NTgwIC8qIFB1YmxpY1VSTE1hbmFn
ZXIuY3BwICovLApAQCAtMjYxMjQsNyArMjYxMjksNyBAQAogCQk5NzExNDVGRjE0RUYwMDc5MDA2
NzRGRDkgLyogZ2VvbG9jYXRpb24gKi8gPSB7CiAJCQlpc2EgPSBQQlhHcm91cDsKIAkJCWNoaWxk
cmVuID0gKAotCQkJCTgzNzk2NENDMUY4REI2N0QwMDIxOEVBMCAvKiBpb3MgKi8sCisJCQkJNDY1
QzNEMTkyN0I5OTFDODAwMjEzMDJGIC8qIGNvY29hICovLAogCQkJCTk3NDZBRjEzMTRGNERERTYw
MDNFN0E3MCAvKiBHZW9sb2NhdGlvbi5jcHAgKi8sCiAJCQkJOTc0NkFGMTQxNEY0RERFNjAwM0U3
QTcwIC8qIEdlb2xvY2F0aW9uLmggKi8sCiAJCQkJOTc0NkFGMTUxNEY0RERFNjAwM0U3QTcwIC8q
IEdlb2xvY2F0aW9uLmlkbCAqLywKQEAgLTI2ODM2LDYgKzI2ODQxLDggQEAKIAkJCQlDMUY3Qjcy
RjI0NDhGMkFDMDAxMjQ1NTcgLyogQUdYQ29tcGlsZXJTZXJ2aWNlLmNwcCAqLywKIAkJCQlDMUY3
QjczMDI0NDhGMkFDMDAxMjQ1NTcgLyogQUdYQ29tcGlsZXJTZXJ2aWNlLmggKi8sCiAJCQkJQTE0
MDkwRkExQUE1MUUxRDAwOTExOTFBIC8qIENvbnRlbnRGaWx0ZXJVbmJsb2NrSGFuZGxlckNvY29h
Lm1tICovLAorCQkJCTQ2ODhFOTdGMjdCNkI0NDQwMDU2N0NEMiAvKiBDb3JlTG9jYXRpb25HZW9s
b2NhdGlvblByb3ZpZGVyLmggKi8sCisJCQkJNDY4OEU5N0QyN0I2QjQ0MzAwNTY3Q0QyIC8qIENv
cmVMb2NhdGlvbkdlb2xvY2F0aW9uUHJvdmlkZXIubW0gKi8sCiAJCQkJQ0Q3RDMzNDUxQzdBMTZC
RjAwMDQxMjkzIC8qIENvcmVWaWRlb1NvZnRMaW5rLmNwcCAqLywKIAkJCQlDRDdEMzM0NjFDN0Ex
NkJGMDAwNDEyOTMgLyogQ29yZVZpZGVvU29mdExpbmsuaCAqLywKIAkJCQlGNDYyRTc5RjI0MkFE
QTNDMDAyMDREREQgLyogRHJhZ0RhdGFDb2NvYS5tbSAqLywKQEAgLTMzOTI3LDYgKzMzOTM0LDcg
QEAKIAkJCQkzRjgwMjAzNzFFOUU0N0M1MDBERUM2MUQgLyogQ29yZUF1ZGlvQ2FwdHVyZURldmlj
ZU1hbmFnZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTQxRkNDQzNCMjc0NjY3NTYwMDg5MkFENiAv
KiBDb3JlQXVkaW9DYXB0dXJlU291cmNlLmggaW4gSGVhZGVycyAqLywKIAkJCQkwN0FGRjQyMjFF
RkIxNDQ5MDBCNTQ1QjMgLyogQ29yZUF1ZGlvQ2FwdHVyZVNvdXJjZUlPUy5oIGluIEhlYWRlcnMg
Ki8sCisJCQkJNDY4OEU5ODAyN0I2QjQ1MDAwNTY3Q0QyIC8qIENvcmVMb2NhdGlvbkdlb2xvY2F0
aW9uUHJvdmlkZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCUNEN0QzMzQ4MUM3QTE2QkYwMDA0MTI5
MyAvKiBDb3JlVmlkZW9Tb2Z0TGluay5oIGluIEhlYWRlcnMgKi8sCiAJCQkJODYyRjEyOUUxOEMx
NTc2RjAwNUM1NEFGIC8qIENvdW50ZWRVc2VyQWN0aXZpdHkuaCBpbiBIZWFkZXJzICovLAogCQkJ
CUE4MEU2RDA0MEExOTg5Q0EwMDdGQjhDNSAvKiBDb3VudGVyLmggaW4gSGVhZGVycyAqLywKQEAg
LTM4NjgwLDYgKzM4Njg4LDcgQEAKIAkJCQlDRDBFRUUwRTE0NzQzRjM5MDAzRUFGQTIgLyogQXVk
aW9PdXRwdXRVbml0QWRhcHRvcklPUy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlDREE3OTgyNzE3
MEEyNzkxMDBENDVDNTUgLyogQXVkaW9TZXNzaW9uSU9TLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJ
Q0Q4QTdCQkIxOTc3MzVGRTAwQ0JENjQzIC8qIEF1ZGlvU291cmNlUHJvdmlkZXJBVkZPYmpDLm1t
IGluIFNvdXJjZXMgKi8sCisJCQkJNDZCQTQ5QjgyN0JCNDQzMzAwNzdGNjNGIC8qIEFWQXNzZXRU
cmFja1V0aWxpdGllcy5tbSBpbiBTb3VyY2VzICovLAogCQkJCTBGQ0EyOTM1MjZGQzM5MTcwMDZC
NEFFQiAvKiBBVkF1ZGlvU2Vzc2lvbkNhcHR1cmVEZXZpY2VNYW5hZ2VyLm1tIGluIFNvdXJjZXMg
Ki8sCiAJCQkJMDczOEU1RUMyNDk5ODM5MDAwREExMDFDIC8qIEFWT3V0cHV0RGV2aWNlTWVudUNv
bnRyb2xsZXJUYXJnZXRQaWNrZXIubW0gaW4gU291cmNlcyAqLywKIAkJCQlDRDMzNkY2MTE3RjlG
NjQ3MDBERERDRDAgLyogQVZUcmFja1ByaXZhdGVBVkZPYmpDSW1wbC5tbSBpbiBTb3VyY2VzICov
LApAQCAtMzg2OTgsMTMgKzM4NzA3LDE0IEBACiAJCQkJNTE4RjRGRjYxOTRDQTRFNjAwODFCQUFF
IC8qIEdhbWVwYWRCdXR0b24uY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNTE2QzYyMjAxOTUwRDQ4
NzAwMzM3RTc1IC8qIEdhbWVwYWRFdmVudC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk1MUE5RDlF
OTE5NUI5MzFGMDAxQjJCNUMgLyogR2FtZXBhZE1hbmFnZXIuY3BwIGluIFNvdXJjZXMgKi8sCi0J
CQkJODM3OTY0Q0YxRjhEQjY5RDAwMjE4RUEwIC8qIEdlb2xvY2F0aW9uUG9zaXRpb25EYXRhSU9T
Lm1tIGluIFNvdXJjZXMgKi8sCisJCQkJODM3OTY0Q0YxRjhEQjY5RDAwMjE4RUEwIC8qIEdlb2xv
Y2F0aW9uUG9zaXRpb25EYXRhQ29jb2EubW0gaW4gU291cmNlcyAqLywKIAkJCQk2RTcyRjU0RTIy
OURDRDEwMDBCM0UxNTEgLyogR3JhcGhpY3NDb250ZXh0R0xBTkdMRS5jcHAgaW4gU291cmNlcyAq
LywKIAkJCQk3QzNFNTEwQjE4REY4RjM1MDBDMTEyRjcgLyogSFRNTENvbnZlcnRlci5tbSBpbiBT
b3VyY2VzICovLAogCQkJCUE4RDA2QjNBMEEyNjVEQ0QwMDVFNzIwMyAvKiBIVE1MTmFtZXMuY3Bw
IGluIFNvdXJjZXMgKi8sCiAJCQkJMUFDOTAwQzMxOTQzQzBGQzAwODYyNUI1IC8qIEhUVFBIZWFk
ZXJOYW1lcy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlDRDI3QUU1MTIyQTk4Njg3MDA5NDdGRjkg
LyogSW1hZ2VSb3RhdGlvblNlc3Npb25WVC5tbSBpbiBTb3VyY2VzICovLAogCQkJCTA3MEUyRDBG
MjZGMjUwODkwMDE0QUFDMyAvKiBJbmJhbmRDaGFwdGVyVHJhY2tQcml2YXRlQVZGT2JqQy5tbSBp
biBTb3VyY2VzICovLAorCQkJCTQ2Q0E5NDMxMjdCODY5NTgwMEY0RjVGRiAvKiBJbmJhbmRUZXh0
VHJhY2tQcml2YXRlQVZGT2JqQy5tbSBpbiBTb3VyY2VzICovLAogCQkJCUNEMDYzRjgyMUUyM0ZB
ODkwMDgxMkJFMyAvKiBJbml0RGF0YVJlZ2lzdHJ5LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTkz
NUM0NzcwMDlBQzRENzMwMEE2QUFCNCAvKiBLZXlFdmVudE1hYy5tbSBpbiBTb3VyY2VzICovLAog
CQkJCUNEQTk4RTBCMTYwM0NENjAwMEZFQTNCMSAvKiBMZWdhY3lDRE0uY3BwIGluIFNvdXJjZXMg
Ki8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuY3BwIGIvU291cmNlL1dl
YkNvcmUvcGFnZS9QYWdlLmNwcAppbmRleCA2YTg1ZTg0M2Q4YmJlM2QxOTJkOTdmNDk2YmQ3ZWI0
NTQ3NDlkYmE0Li5lZmUwZTM4MDZkYzg0ODAzMGQyMmI5ZDkwMjkxNjc5MzM4NWJmZGFhIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BhZ2UvUGFnZS5jcHAKQEAgLTY5LDYgKzY5LDcgQEAKICNpbmNsdWRlICJGcmFtZVRyZWUuaCIK
ICNpbmNsdWRlICJGcmFtZVZpZXcuaCIKICNpbmNsdWRlICJGdWxsc2NyZWVuTWFuYWdlci5oIgor
I2luY2x1ZGUgIkdlb2xvY2F0aW9uQ29udHJvbGxlci5oIgogI2luY2x1ZGUgIkhUTUxFbGVtZW50
LmgiCiAjaW5jbHVkZSAiSFRNTEltYWdlRWxlbWVudC5oIgogI2luY2x1ZGUgIkhUTUxNZWRpYUVs
ZW1lbnQuaCIKQEAgLTEzMzIsNiArMTMzMywxMSBAQCB2b2lkIFBhZ2U6OmRpZENvbW1pdExvYWQo
KQogICAgIHJlc2V0VGV4dFJlY29nbml0aW9uUmVzdWx0cygpOwogICAgIHJlc2V0SW1hZ2VBbmFs
eXNpc1F1ZXVlKCk7CiAjZW5kaWYKKworI2lmIEVOQUJMRShHRU9MT0NBVElPTikKKyAgICBpZiAo
YXV0byogZ2VvbG9jYXRpb25Db250cm9sbGVyID0gR2VvbG9jYXRpb25Db250cm9sbGVyOjpmcm9t
KHRoaXMpKQorICAgICAgICBnZW9sb2NhdGlvbkNvbnRyb2xsZXItPmRpZE5hdmlnYXRlUGFnZSgp
OworI2VuZGlmCiB9CiAKIHZvaWQgUGFnZTo6ZGlkRmluaXNoTG9hZCgpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9Db3JlTG9jYXRpb25HZW9sb2NhdGlvblByb3Zp
ZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9Db3JlTG9jYXRpb25HZW9sb2Nh
dGlvblByb3ZpZGVyLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYzUyNDZjODg0YWNmOGY2OWZjYjhmOGFjNGFjYzdm
NGNkZTY0NWNlZAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Nv
Y29hL0NvcmVMb2NhdGlvbkdlb2xvY2F0aW9uUHJvdmlkZXIuaApAQCAtMCwwICsxLDY3IEBACisv
KgorICogQ29weXJpZ2h0IChDKSAyMDIyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4g
QU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJ
TVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQ
UExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VR
VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1F
TlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRB
LCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlIDx3dGYvQ29tcGxldGlvbkhhbmRs
ZXIuaD4KKyNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgorI2luY2x1ZGUgPHd0Zi9SZXRhaW5QdHIu
aD4KKworT0JKQ19DTEFTUyBXZWJDTExvY2F0aW9uTWFuYWdlcjsKKworbmFtZXNwYWNlIFdlYkNv
cmUgeworCitjbGFzcyBHZW9sb2NhdGlvblBvc2l0aW9uRGF0YTsKK2NsYXNzIFJlZ2lzdHJhYmxl
RG9tYWluOworCitjbGFzcyBXRUJDT1JFX0VYUE9SVCBDb3JlTG9jYXRpb25HZW9sb2NhdGlvblBy
b3ZpZGVyIHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKK3B1YmxpYzoKKyAgICBjbGFz
cyBDbGllbnQgeworICAgIHB1YmxpYzoKKyAgICAgICAgdmlydHVhbCB+Q2xpZW50KCkgeyB9CisK
KyAgICAgICAgdmlydHVhbCB2b2lkIGdlb2xvY2F0aW9uQXV0aG9yaXphdGlvbkdyYW50ZWQoY29u
c3QgU3RyaW5nJiAvKndlYnNpdGVJZGVudGlmaWVyKi8pIHsgfQorICAgICAgICB2aXJ0dWFsIHZv
aWQgZ2VvbG9jYXRpb25BdXRob3JpemF0aW9uRGVuaWVkKGNvbnN0IFN0cmluZyYgLyp3ZWJzaXRl
SWRlbnRpZmllciovKSB7IH0KKyAgICAgICAgdmlydHVhbCB2b2lkIHBvc2l0aW9uQ2hhbmdlZChj
b25zdCBTdHJpbmcmIHdlYnNpdGVJZGVudGlmaWVyLCBHZW9sb2NhdGlvblBvc2l0aW9uRGF0YSYm
KSA9IDA7CisgICAgICAgIHZpcnR1YWwgdm9pZCBlcnJvck9jY3VycmVkKGNvbnN0IFN0cmluZyYg
d2Vic2l0ZUlkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgZXJyb3JNZXNzYWdlKSA9IDA7CisgICAg
ICAgIHZpcnR1YWwgdm9pZCByZXNldEdlb2xvY2F0aW9uKGNvbnN0IFN0cmluZyYgd2Vic2l0ZUlk
ZW50aWZpZXIpID0gMDsKKyAgICB9OworCisgICAgQ29yZUxvY2F0aW9uR2VvbG9jYXRpb25Qcm92
aWRlcihjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYsIENsaWVudCYpOworICAgIH5Db3JlTG9jYXRp
b25HZW9sb2NhdGlvblByb3ZpZGVyKCk7CisKKyAgICB2b2lkIHN0YXJ0KCk7CisgICAgdm9pZCBz
dG9wKCk7CisKKyAgICB2b2lkIHNldEVuYWJsZUhpZ2hBY2N1cmFjeShib29sKTsKKworICAgIHN0
YXRpYyB2b2lkIHJlcXVlc3RBdXRob3JpemF0aW9uKGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiwg
Q29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJik7CisKK3ByaXZhdGU6CisgICAgUmV0YWlu
UHRyPFdlYkNMTG9jYXRpb25NYW5hZ2VyPiBtX2xvY2F0aW9uTWFuYWdlcjsKK307CisKK30gLy8g
bmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Nv
Y29hL0NvcmVMb2NhdGlvbkdlb2xvY2F0aW9uUHJvdmlkZXIubW0gYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9jb2NvYS9Db3JlTG9jYXRpb25HZW9sb2NhdGlvblByb3ZpZGVyLm1tCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjYzMTc2OTMzNGFlNjJiZjAyNzJkM2MzMTdmNzlmN2Y1MmY5OTNkMzgKLS0tIC9kZXYvbnVs
bAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9Db3JlTG9jYXRpb25HZW9sb2Nh
dGlvblByb3ZpZGVyLm1tCkBAIC0wLDAgKzEsMjY4IEBACisvKgorICogQ29weXJpZ2h0IChDKSAy
MDIyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMg
YGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRS
SUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2ltcG9ydCAi
Y29uZmlnLmgiCisjaW1wb3J0ICJDb3JlTG9jYXRpb25HZW9sb2NhdGlvblByb3ZpZGVyLmgiCisK
KyNpbXBvcnQgIkdlb2xvY2F0aW9uUG9zaXRpb25EYXRhLmgiCisjaW1wb3J0ICJSZWdpc3RyYWJs
ZURvbWFpbi5oIgorI2ltcG9ydCA8Q29yZUxvY2F0aW9uL0NMTG9jYXRpb25NYW5hZ2VyRGVsZWdh
dGUuaD4KKyNpbXBvcnQgPENvcmVMb2NhdGlvbi9Db3JlTG9jYXRpb24uaD4KKyNpbXBvcnQgPHd0
Zi9Tb2Z0TGlua2luZy5oPgorCisjaWYgVVNFKEFQUExFX0lOVEVSTkFMX1NESykKKyNpbXBvcnQg
PENvcmVMb2NhdGlvbi9DTExvY2F0aW9uTWFuYWdlcl9Qcml2YXRlLmg+CisjZW5kaWYKKworU09G
VF9MSU5LX0ZSQU1FV09SSyhDb3JlTG9jYXRpb24pCisKK1NPRlRfTElOS19DTEFTUyhDb3JlTG9j
YXRpb24sIENMTG9jYXRpb25NYW5hZ2VyKQorU09GVF9MSU5LX0NMQVNTKENvcmVMb2NhdGlvbiwg
Q0xMb2NhdGlvbikKKworU09GVF9MSU5LX0NPTlNUQU5UKENvcmVMb2NhdGlvbiwga0NMTG9jYXRp
b25BY2N1cmFjeUJlc3QsIGRvdWJsZSkKK1NPRlRfTElOS19DT05TVEFOVChDb3JlTG9jYXRpb24s
IGtDTExvY2F0aW9uQWNjdXJhY3lIdW5kcmVkTWV0ZXJzLCBkb3VibGUpCisKKyNkZWZpbmUga0NM
TG9jYXRpb25BY2N1cmFjeUJlc3QgZ2V0a0NMTG9jYXRpb25BY2N1cmFjeUJlc3QoKQorI2RlZmlu
ZSBrQ0xMb2NhdGlvbkFjY3VyYWN5SHVuZHJlZE1ldGVycyBnZXRrQ0xMb2NhdGlvbkFjY3VyYWN5
SHVuZHJlZE1ldGVycygpCisKK3N0YXRpYyBib29sIGlzQXV0aG9yaXphdGlvbkdyYW50ZWQoQ0xB
dXRob3JpemF0aW9uU3RhdHVzIHN0YXR1cykKK3sKKyAgICByZXR1cm4gc3RhdHVzID09IGtDTEF1
dGhvcml6YXRpb25TdGF0dXNBdXRob3JpemVkQWx3YXlzCisjaWYgSEFWRShDT1JFX0xPQ0FUSU9O
X0FVVEhPUklaRURfV0hFTl9JTl9VU0UpCisgICAgICAgIHx8IHN0YXR1cyA9PSBrQ0xBdXRob3Jp
emF0aW9uU3RhdHVzQXV0aG9yaXplZFdoZW5JblVzZQorI2VuZGlmCisgICAgICAgIDsKK30KKwor
QGludGVyZmFjZSBXZWJDTExvY2F0aW9uTWFuYWdlciA6IE5TT2JqZWN0PENMTG9jYXRpb25NYW5h
Z2VyRGVsZWdhdGU+CitAZW5kCisKK0BpbXBsZW1lbnRhdGlvbiBXZWJDTExvY2F0aW9uTWFuYWdl
ciB7CisgICAgUmV0YWluUHRyPENMTG9jYXRpb25NYW5hZ2VyPiBfbG9jYXRpb25NYW5hZ2VyOwor
ICAgIFdlYkNvcmU6OkNvcmVMb2NhdGlvbkdlb2xvY2F0aW9uUHJvdmlkZXI6OkNsaWVudCogX2Ns
aWVudDsKKyAgICBTdHJpbmcgX3dlYnNpdGVJZGVudGlmaWVyOworICAgIEJPT0wgX2lzV2FpdGlu
Z0ZvckF1dGhvcml6YXRpb247Cit9CisKKy0gKGluc3RhbmNldHlwZSlpbml0V2l0aFdlYnNpdGVJ
ZGVudGlmaWVyOihjb25zdCBTdHJpbmcmKXdlYnNpdGVJZGVudGlmaWVyIGNsaWVudDooV2ViQ29y
ZTo6Q29yZUxvY2F0aW9uR2VvbG9jYXRpb25Qcm92aWRlcjo6Q2xpZW50JiljbGllbnQKK3sKKyAg
ICBzZWxmID0gW3N1cGVyIGluaXRdOworICAgIGlmICghc2VsZikKKyAgICAgICAgcmV0dXJuIG5p
bDsKKworICAgIC8vIEZJWE1FOiBDYWxsIGluaXRXaXRoV2Vic2l0ZUlkZW50aWZpZXIgYW5kIHBh
c3MgdGhlIHdlYnNpdGVJZGVudGlmaWVyIHdoZW4gSEFWRShDT1JFX0xPQ0FUSU9OX1dFQlNJVEVf
SURFTlRJRklFUlMpIGFuZCAhd2Vic2l0ZUlkZW50aWZpZXIuaXNFbXB0eSgpIG9uY2UgPHJkYXI6
Ly84ODgzNDMwMT4gaXMgZml4ZWQuCisgICAgVU5VU0VEX1BBUkFNKHdlYnNpdGVJZGVudGlmaWVy
KTsKKyAgICBfbG9jYXRpb25NYW5hZ2VyID0gYWRvcHROUyhbYWxsb2NDTExvY2F0aW9uTWFuYWdl
ckluc3RhbmNlKCkgaW5pdF0pOworICAgIF9jbGllbnQgPSAmY2xpZW50OworICAgIF93ZWJzaXRl
SWRlbnRpZmllciA9IHdlYnNpdGVJZGVudGlmaWVyOworICAgIFtfbG9jYXRpb25NYW5hZ2VyIHNl
dERlbGVnYXRlOnNlbGZdOworICAgIHJldHVybiBzZWxmOworfQorCistICh2b2lkKWRlYWxsb2MK
K3sKKyAgICBbX2xvY2F0aW9uTWFuYWdlciBzZXREZWxlZ2F0ZTpuaWxdOworICAgIFtzdXBlciBk
ZWFsbG9jXTsKK30KKworLSAodm9pZClzdGFydAoreworICAgIGlmICghW2dldENMTG9jYXRpb25N
YW5hZ2VyQ2xhc3MoKSBsb2NhdGlvblNlcnZpY2VzRW5hYmxlZF0gfHwgIWlzQXV0aG9yaXphdGlv
bkdyYW50ZWQoW19sb2NhdGlvbk1hbmFnZXIgYXV0aG9yaXphdGlvblN0YXR1c10pKSB7CisgICAg
ICAgIFtfbG9jYXRpb25NYW5hZ2VyIHN0b3BVcGRhdGluZ0xvY2F0aW9uXTsKKyAgICAgICAgX2Ns
aWVudC0+cmVzZXRHZW9sb2NhdGlvbihfd2Vic2l0ZUlkZW50aWZpZXIpOworICAgICAgICByZXR1
cm47CisgICAgfQorCisgICAgW19sb2NhdGlvbk1hbmFnZXIgc3RhcnRVcGRhdGluZ0xvY2F0aW9u
XTsKK30KKworLSAodm9pZClzdG9wCit7CisgICAgW19sb2NhdGlvbk1hbmFnZXIgc3RvcFVwZGF0
aW5nTG9jYXRpb25dOworfQorCistICh2b2lkKXNldEVuYWJsZUhpZ2hBY2N1cmFjeTooQk9PTClo
aWdoQWNjdXJhY3lFbmFibGVkCit7CisgICAgW19sb2NhdGlvbk1hbmFnZXIgc2V0RGVzaXJlZEFj
Y3VyYWN5OmhpZ2hBY2N1cmFjeUVuYWJsZWQgPyBrQ0xMb2NhdGlvbkFjY3VyYWN5QmVzdCA6IGtD
TExvY2F0aW9uQWNjdXJhY3lIdW5kcmVkTWV0ZXJzXTsKK30KKworLSAodm9pZClyZXF1ZXN0R2Vv
bG9jYXRpb25BdXRob3JpemF0aW9uCit7CisgICAgaWYgKCFbZ2V0Q0xMb2NhdGlvbk1hbmFnZXJD
bGFzcygpIGxvY2F0aW9uU2VydmljZXNFbmFibGVkXSkgeworICAgICAgICBfY2xpZW50LT5nZW9s
b2NhdGlvbkF1dGhvcml6YXRpb25EZW5pZWQoX3dlYnNpdGVJZGVudGlmaWVyKTsKKyAgICAgICAg
cmV0dXJuOworICAgIH0KKworICAgIHN3aXRjaCAoW19sb2NhdGlvbk1hbmFnZXIgYXV0aG9yaXph
dGlvblN0YXR1c10pIHsKKyAgICBjYXNlIGtDTEF1dGhvcml6YXRpb25TdGF0dXNOb3REZXRlcm1p
bmVkOiB7CisgICAgICAgIGlmICghX2lzV2FpdGluZ0ZvckF1dGhvcml6YXRpb24pIHsKKyAgICAg
ICAgICAgIF9pc1dhaXRpbmdGb3JBdXRob3JpemF0aW9uID0gWUVTOworICAgICAgICAgICAgW19s
b2NhdGlvbk1hbmFnZXIgcmVxdWVzdFdoZW5JblVzZUF1dGhvcml6YXRpb25dOworICAgICAgICB9
CisgICAgICAgIGJyZWFrOworICAgIH0KKyAgICBjYXNlIGtDTEF1dGhvcml6YXRpb25TdGF0dXNB
dXRob3JpemVkQWx3YXlzOgorI2lmIEhBVkUoQ09SRV9MT0NBVElPTl9BVVRIT1JJWkVEX1dIRU5f
SU5fVVNFKQorICAgIGNhc2Uga0NMQXV0aG9yaXphdGlvblN0YXR1c0F1dGhvcml6ZWRXaGVuSW5V
c2U6CisjZW5kaWYKKyAgICAgICAgX2NsaWVudC0+Z2VvbG9jYXRpb25BdXRob3JpemF0aW9uR3Jh
bnRlZChfd2Vic2l0ZUlkZW50aWZpZXIpOworICAgICAgICBicmVhazsKKyAgICBjYXNlIGtDTEF1
dGhvcml6YXRpb25TdGF0dXNSZXN0cmljdGVkOgorICAgIGNhc2Uga0NMQXV0aG9yaXphdGlvblN0
YXR1c0RlbmllZDoKKyAgICAgICAgX2NsaWVudC0+Z2VvbG9jYXRpb25BdXRob3JpemF0aW9uRGVu
aWVkKF93ZWJzaXRlSWRlbnRpZmllcik7CisgICAgICAgIGJyZWFrOworICAgIH0KK30KKworLSAo
dm9pZClsb2NhdGlvbk1hbmFnZXJEaWRDaGFuZ2VBdXRob3JpemF0aW9uOihDTExvY2F0aW9uTWFu
YWdlciAqKW1hbmFnZXIKK3sKKyAgICBhdXRvIHN0YXR1cyA9IFtfbG9jYXRpb25NYW5hZ2VyIGF1
dGhvcml6YXRpb25TdGF0dXNdOworICAgIGlmIChfaXNXYWl0aW5nRm9yQXV0aG9yaXphdGlvbikg
eworICAgICAgICBzd2l0Y2ggKHN0YXR1cykgeworICAgICAgICBjYXNlIGtDTEF1dGhvcml6YXRp
b25TdGF0dXNOb3REZXRlcm1pbmVkOgorICAgICAgICAgICAgLy8gVGhpcyBjYW4gaGFwcGVuIGFm
dGVyIHJlc3VtZSBpZiB0aGUgdXNlciBoYXMgc3RpbGwgbm90IGFuc3dlcmVkIHRoZSBkaWFsb2cu
IFdlIGp1c3QgaGF2ZSB0byB3YWl0IGZvciB0aGUgcGVybWlzc2lvbi4KKyAgICAgICAgICAgIGJy
ZWFrOworICAgICAgICBjYXNlIGtDTEF1dGhvcml6YXRpb25TdGF0dXNEZW5pZWQ6CisgICAgICAg
IGNhc2Uga0NMQXV0aG9yaXphdGlvblN0YXR1c1Jlc3RyaWN0ZWQ6CisgICAgICAgICAgICBfaXNX
YWl0aW5nRm9yQXV0aG9yaXphdGlvbiA9IE5POworICAgICAgICAgICAgX2NsaWVudC0+Z2VvbG9j
YXRpb25BdXRob3JpemF0aW9uRGVuaWVkKF93ZWJzaXRlSWRlbnRpZmllcik7CisgICAgICAgICAg
ICBicmVhazsKKyAgICAgICAgY2FzZSBrQ0xBdXRob3JpemF0aW9uU3RhdHVzQXV0aG9yaXplZEFs
d2F5czoKKyNpZiBIQVZFKENPUkVfTE9DQVRJT05fQVVUSE9SSVpFRF9XSEVOX0lOX1VTRSkKKyAg
ICAgICAgY2FzZSBrQ0xBdXRob3JpemF0aW9uU3RhdHVzQXV0aG9yaXplZFdoZW5JblVzZToKKyNl
bmRpZgorICAgICAgICAgICAgX2lzV2FpdGluZ0ZvckF1dGhvcml6YXRpb24gPSBOTzsKKyAgICAg
ICAgICAgIF9jbGllbnQtPmdlb2xvY2F0aW9uQXV0aG9yaXphdGlvbkdyYW50ZWQoX3dlYnNpdGVJ
ZGVudGlmaWVyKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAgfSBlbHNlIHsK
KyAgICAgICAgaWYgKHN0YXR1cyA9PSBrQ0xBdXRob3JpemF0aW9uU3RhdHVzRGVuaWVkIHx8IHN0
YXR1cyA9PSBrQ0xBdXRob3JpemF0aW9uU3RhdHVzUmVzdHJpY3RlZCkgeworICAgICAgICAgICAg
W19sb2NhdGlvbk1hbmFnZXIgc3RvcFVwZGF0aW5nTG9jYXRpb25dOworICAgICAgICAgICAgX2Ns
aWVudC0+cmVzZXRHZW9sb2NhdGlvbihfd2Vic2l0ZUlkZW50aWZpZXIpOworICAgICAgICB9Cisg
ICAgfQorfQorCistICh2b2lkKWxvY2F0aW9uTWFuYWdlcjooQ0xMb2NhdGlvbk1hbmFnZXIgKilt
YW5hZ2VyIGRpZFVwZGF0ZUxvY2F0aW9uczooTlNBcnJheSAqKWxvY2F0aW9ucworeworICAgIFVO
VVNFRF9QQVJBTShtYW5hZ2VyKTsKKyAgICBmb3IgKENMTG9jYXRpb24gKmxvY2F0aW9uIGluIGxv
Y2F0aW9ucykKKyAgICAgICAgX2NsaWVudC0+cG9zaXRpb25DaGFuZ2VkKF93ZWJzaXRlSWRlbnRp
ZmllciwgV2ViQ29yZTo6R2VvbG9jYXRpb25Qb3NpdGlvbkRhdGEgeyBsb2NhdGlvbiB9KTsKK30K
KworLSAodm9pZClsb2NhdGlvbk1hbmFnZXI6KENMTG9jYXRpb25NYW5hZ2VyICopbWFuYWdlciBk
aWRGYWlsV2l0aEVycm9yOihOU0Vycm9yICopZXJyb3IKK3sKKyAgICBBU1NFUlQoZXJyb3IpOwor
ICAgIFVOVVNFRF9QQVJBTShtYW5hZ2VyKTsKKworICAgIGlmIChbZXJyb3IgY29kZV0gPT0ga0NM
RXJyb3JEZW5pZWQpIHsKKyAgICAgICAgLy8gSWdub3JlIHRoZSBlcnJvciBoZXJlIGFuZCBsZXQg
bG9jYXRpb25NYW5hZ2VyOmRpZENoYW5nZUF1dGhvcml6YXRpb25TdGF0dXM6IGhhbmRsZSB0aGUg
cGVybWlzc2lvbi4KKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIE5TU3RyaW5nICplcnJv
ck1lc3NhZ2UgPSBbZXJyb3IgbG9jYWxpemVkRGVzY3JpcHRpb25dOworICAgIF9jbGllbnQtPmVy
cm9yT2NjdXJyZWQoX3dlYnNpdGVJZGVudGlmaWVyLCBlcnJvck1lc3NhZ2UpOworfQorCitAZW5k
CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworQ29yZUxvY2F0aW9uR2VvbG9jYXRpb25Qcm92aWRl
cjo6Q29yZUxvY2F0aW9uR2VvbG9jYXRpb25Qcm92aWRlcihjb25zdCBSZWdpc3RyYWJsZURvbWFp
biYgcmVnaXN0cmFibGVEb21haW4sIENsaWVudCYgY2xpZW50KQorICAgIDogbV9sb2NhdGlvbk1h
bmFnZXIoYWRvcHROUyhbW1dlYkNMTG9jYXRpb25NYW5hZ2VyIGFsbG9jXSBpbml0V2l0aFdlYnNp
dGVJZGVudGlmaWVyOnJlZ2lzdHJhYmxlRG9tYWluLnN0cmluZygpIGNsaWVudDpjbGllbnRdKSkK
K3sKKyAgICAvLyBSZXF1ZXN0IHBlcm1pc3Npb24gZm9yIHRoZSBhcHAgdG8gdXNlIGdlb2xvY2F0
aW9uIChpZiBpdCBkb2Vzbid0IGFscmVhZHkpLgorICAgIFttX2xvY2F0aW9uTWFuYWdlciByZXF1
ZXN0R2VvbG9jYXRpb25BdXRob3JpemF0aW9uXTsKK30KKworQ29yZUxvY2F0aW9uR2VvbG9jYXRp
b25Qcm92aWRlcjo6fkNvcmVMb2NhdGlvbkdlb2xvY2F0aW9uUHJvdmlkZXIoKQoreworICAgIFtt
X2xvY2F0aW9uTWFuYWdlciBzdG9wXTsKK30KKwordm9pZCBDb3JlTG9jYXRpb25HZW9sb2NhdGlv
blByb3ZpZGVyOjpzdGFydCgpCit7CisgICAgW21fbG9jYXRpb25NYW5hZ2VyIHN0YXJ0XTsKK30K
Kwordm9pZCBDb3JlTG9jYXRpb25HZW9sb2NhdGlvblByb3ZpZGVyOjpzdG9wKCkKK3sKKyAgICBb
bV9sb2NhdGlvbk1hbmFnZXIgc3RvcF07Cit9CisKK3ZvaWQgQ29yZUxvY2F0aW9uR2VvbG9jYXRp
b25Qcm92aWRlcjo6c2V0RW5hYmxlSGlnaEFjY3VyYWN5KGJvb2wgaGlnaEFjY3VyYWN5RW5hYmxl
ZCkKK3sKKyAgICBbbV9sb2NhdGlvbk1hbmFnZXIgc2V0RW5hYmxlSGlnaEFjY3VyYWN5OmhpZ2hB
Y2N1cmFjeUVuYWJsZWRdOworfQorCitjbGFzcyBBdXRob3JpemF0aW9uQ2hlY2tlciBmaW5hbCA6
IHB1YmxpYyBSZWZDb3VudGVkPEF1dGhvcml6YXRpb25DaGVja2VyPiwgcHVibGljIENvcmVMb2Nh
dGlvbkdlb2xvY2F0aW9uUHJvdmlkZXI6OkNsaWVudCB7CitwdWJsaWM6CisgICAgc3RhdGljIFJl
ZjxBdXRob3JpemF0aW9uQ2hlY2tlcj4gY3JlYXRlKCkKKyAgICB7CisgICAgICAgIHJldHVybiBh
ZG9wdFJlZigqbmV3IEF1dGhvcml6YXRpb25DaGVja2VyKTsKKyAgICB9CisKKyAgICB2b2lkIGNo
ZWNrKGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiByZWdpc3RyYWJsZURvbWFpbiwgQ29tcGxldGlv
bkhhbmRsZXI8dm9pZChib29sKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKKyAgICB7CisgICAgICAg
IG1fY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKTsKKyAgICAg
ICAgbV9wcm92aWRlciA9IG1ha2VVbmlxdWU8Q29yZUxvY2F0aW9uR2VvbG9jYXRpb25Qcm92aWRl
cj4ocmVnaXN0cmFibGVEb21haW4sICp0aGlzKTsKKyAgICB9CisKK3ByaXZhdGU6CisgICAgQXV0
aG9yaXphdGlvbkNoZWNrZXIoKSA9IGRlZmF1bHQ7CisKKyAgICB2b2lkIGdlb2xvY2F0aW9uQXV0
aG9yaXphdGlvbkdyYW50ZWQoY29uc3QgU3RyaW5nJikgZmluYWwKKyAgICB7CisgICAgICAgIGlm
IChtX2NvbXBsZXRpb25IYW5kbGVyKQorICAgICAgICAgICAgbV9jb21wbGV0aW9uSGFuZGxlcih0
cnVlKTsKKyAgICB9CisKKyAgICB2b2lkIGdlb2xvY2F0aW9uQXV0aG9yaXphdGlvbkRlbmllZChj
b25zdCBTdHJpbmcmKSBmaW5hbAorICAgIHsKKyAgICAgICAgaWYgKG1fY29tcGxldGlvbkhhbmRs
ZXIpCisgICAgICAgICAgICBtX2NvbXBsZXRpb25IYW5kbGVyKGZhbHNlKTsKKyAgICB9CisKKyAg
ICB2b2lkIHBvc2l0aW9uQ2hhbmdlZChjb25zdCBTdHJpbmcmLCBHZW9sb2NhdGlvblBvc2l0aW9u
RGF0YSYmKSBmaW5hbCB7IH0KKyAgICB2b2lkIGVycm9yT2NjdXJyZWQoY29uc3QgU3RyaW5nJiwg
Y29uc3QgU3RyaW5nJikgZmluYWwKKyAgICB7CisgICAgICAgIGlmIChtX2NvbXBsZXRpb25IYW5k
bGVyKQorICAgICAgICAgICAgbV9jb21wbGV0aW9uSGFuZGxlcihmYWxzZSk7CisgICAgfQorICAg
IHZvaWQgcmVzZXRHZW9sb2NhdGlvbihjb25zdCBTdHJpbmcmKSBmaW5hbCB7IH0KKworICAgIHN0
ZDo6dW5pcXVlX3B0cjxDb3JlTG9jYXRpb25HZW9sb2NhdGlvblByb3ZpZGVyPiBtX3Byb3ZpZGVy
OworICAgIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+IG1fY29tcGxldGlvbkhhbmRsZXI7
Cit9OworCit2b2lkIENvcmVMb2NhdGlvbkdlb2xvY2F0aW9uUHJvdmlkZXI6OnJlcXVlc3RBdXRo
b3JpemF0aW9uKGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiByZWdpc3RyYWJsZURvbWFpbiwgQ29t
cGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3sKKyAgICBh
dXRvIGF1dGhvcml6YXRpb25DaGVja2VyID0gQXV0aG9yaXphdGlvbkNoZWNrZXI6OmNyZWF0ZSgp
OworICAgIGF1dGhvcml6YXRpb25DaGVja2VyLT5jaGVjayhyZWdpc3RyYWJsZURvbWFpbiwgW2F1
dGhvcml6YXRpb25DaGVja2VyLCBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlv
bkhhbmRsZXIpXShib29sIGF1dGhvcml6ZWQpIG11dGFibGUgeworICAgICAgICBjb21wbGV0aW9u
SGFuZGxlcihhdXRob3JpemVkKTsKKyAgICB9KTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29y
ZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9HZW9sb2NhdGlvbkNs
aWVudE1vY2suY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9HZW9sb2NhdGlvbkNs
aWVudE1vY2suY3BwCmluZGV4IDlkNWVmYzgzZjM0ZWIxOGQ1OTlkYzEwY2FhOGZjMGNhMzk5ZGIw
YTIuLmZhNDIwODJlNTA1OWE5ZWNmMjY0Y2FhZjRjMjY1MzJmNGIyZTVkN2EgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svR2VvbG9jYXRpb25DbGllbnRNb2NrLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL0dlb2xvY2F0aW9uQ2xpZW50TW9jay5j
cHAKQEAgLTEzNiwxMCArMTM2LDExIEBAIHZvaWQgR2VvbG9jYXRpb25DbGllbnRNb2NrOjpnZW9s
b2NhdGlvbkRlc3Ryb3llZCgpCiAgICAgQVNTRVJUKCFtX2lzQWN0aXZlKTsKIH0KIAotdm9pZCBH
ZW9sb2NhdGlvbkNsaWVudE1vY2s6OnN0YXJ0VXBkYXRpbmcoY29uc3QgU3RyaW5nJiBhdXRob3Jp
emF0aW9uVG9rZW4pCit2b2lkIEdlb2xvY2F0aW9uQ2xpZW50TW9jazo6c3RhcnRVcGRhdGluZyhj
b25zdCBTdHJpbmcmIGF1dGhvcml6YXRpb25Ub2tlbiwgYm9vbCBlbmFibGVIaWdoQWNjdXJhY3kp
CiB7CiAgICAgQVNTRVJUKCFtX2lzQWN0aXZlKTsKICAgICBVTlVTRURfUEFSQU0oYXV0aG9yaXph
dGlvblRva2VuKTsKKyAgICBVTlVTRURfUEFSQU0oZW5hYmxlSGlnaEFjY3VyYWN5KTsKICAgICBt
X2lzQWN0aXZlID0gdHJ1ZTsKICAgICBhc3luY1VwZGF0ZUNvbnRyb2xsZXIoKTsKIH0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svR2VvbG9jYXRpb25DbGllbnRNb2Nr
LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL0dlb2xvY2F0aW9uQ2xpZW50TW9jay5o
CmluZGV4IDJmYTc1ZTA1N2E1M2Q3ZTgxOGNjZmFmZWU3MDI0M2RkNTQ4MjE4NDUuLmY4YmFjMzhi
NWI2Y2NjOGNjMDhmODcwNzFlYmM3NWQ2NWIzMTA2NDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL21vY2svR2VvbG9jYXRpb25DbGllbnRNb2NrLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbW9jay9HZW9sb2NhdGlvbkNsaWVudE1vY2suaApAQCAtNTksNyArNTks
NyBAQCBwdWJsaWM6CiAKICAgICAvLyBHZW9sb2NhdGlvbkNsaWVudAogICAgIHZvaWQgZ2VvbG9j
YXRpb25EZXN0cm95ZWQoKSBvdmVycmlkZTsKLSAgICB2b2lkIHN0YXJ0VXBkYXRpbmcoY29uc3Qg
U3RyaW5nJiBhdXRob3JpemF0aW9uVG9rZW4pIG92ZXJyaWRlOworICAgIHZvaWQgc3RhcnRVcGRh
dGluZyhjb25zdCBTdHJpbmcmIGF1dGhvcml6YXRpb25Ub2tlbiwgYm9vbCBlbmFibGVIaWdoQWNj
dXJhY3kpIG92ZXJyaWRlOwogICAgIHZvaWQgc3RvcFVwZGF0aW5nKCkgb3ZlcnJpZGU7CiAgICAg
dm9pZCBzZXRFbmFibGVIaWdoQWNjdXJhY3koYm9vbCkgb3ZlcnJpZGU7CiAgICAgc3RkOjpvcHRp
b25hbDxHZW9sb2NhdGlvblBvc2l0aW9uRGF0YT4gbGFzdFBvc2l0aW9uKCkgb3ZlcnJpZGU7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NvdXJjZXNDb2NvYS50eHQgYi9Tb3VyY2UvV2ViS2l0
L1NvdXJjZXNDb2NvYS50eHQKaW5kZXggMmFjZGE5NDFlY2RmNGJjYmU3ZmU5NGE1MTgxNzQ5MWYx
YzBiZjM5YS4uMzlmZWE5MWNlNTYxNzU4MTYwYWQ5MjE4OTg5NDUzZTU4M2VkNjQ2MSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9Tb3VyY2VzQ29jb2EudHh0CisrKyBiL1NvdXJjZS9XZWJLaXQv
U291cmNlc0NvY29hLnR4dApAQCAtNDI3LDYgKzQyNyw3IEBAIFVJUHJvY2Vzcy9Db2NvYS9VSVJl
bW90ZU9iamVjdFJlZ2lzdHJ5LmNwcAogVUlQcm9jZXNzL0NvY29hL1VzZXJNZWRpYUNhcHR1cmVN
YW5hZ2VyUHJveHkuY3BwCiBVSVByb2Nlc3MvQ29jb2EvVXNlck1lZGlhUGVybWlzc2lvblJlcXVl
c3RNYW5hZ2VyUHJveHkubW0KIFVJUHJvY2Vzcy9Db2NvYS9WaWRlb0Z1bGxzY3JlZW5NYW5hZ2Vy
UHJveHkubW0KK1VJUHJvY2Vzcy9Db2NvYS9XZWJHZW9sb2NhdGlvbk1hbmFnZXJQcm94eUNvY29h
LmNwcAogVUlQcm9jZXNzL0NvY29hL1dlYlBhZ2VQcm94eUNvY29hLm1tCiBVSVByb2Nlc3MvQ29j
b2EvV2ViUGFzdGVib2FyZFByb3h5Q29jb2EubW0KIFVJUHJvY2Vzcy9Db2NvYS9XZWJQcmVmZXJl
bmNlc0NvY29hLm1tCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9X
ZWJHZW9sb2NhdGlvbk1hbmFnZXJQcm94eUNvY29hLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0NvY29hL1dlYkdlb2xvY2F0aW9uTWFuYWdlclByb3h5Q29jb2EuY3BwCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LmYwYmZiZGU5MzIyMmIxMDU3ZjE3MzZiNzI5MjIwMTIzMmIwMjU2OGYKLS0tIC9kZXYvbnVsbAor
KysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XZWJHZW9sb2NhdGlvbk1hbmFnZXJQ
cm94eUNvY29hLmNwcApAQCAtMCwwICsxLDc2IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIy
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBB
UyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJF
IERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJV
VE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVT
UworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
CisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNv
bmZpZy5oIgorI2luY2x1ZGUgIldlYkdlb2xvY2F0aW9uTWFuYWdlclByb3h5LmgiCisKKyNpbmNs
dWRlICJXZWJHZW9sb2NhdGlvbk1hbmFnZXJNZXNzYWdlcy5oIgorI2luY2x1ZGUgIldlYlByb2Nl
c3NQcm94eS5oIgorCituYW1lc3BhY2UgV2ViS2l0IHsKKworLy8gRklYTUU6IFRoaXMgc2hvdWxk
IGJlIHVzZWQgYnkgYWxsIENvY29hIHBvcnRzCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKKwor
dm9pZCBXZWJHZW9sb2NhdGlvbk1hbmFnZXJQcm94eTo6cG9zaXRpb25DaGFuZ2VkKGNvbnN0IFN0
cmluZyYgd2Vic2l0ZUlkZW50aWZpZXIsIFdlYkNvcmU6Okdlb2xvY2F0aW9uUG9zaXRpb25EYXRh
JiYgcG9zaXRpb24pCit7CisgICAgYXV0byByZWdpc3RyYWJsZURvbWFpbiA9IFdlYkNvcmU6OlJl
Z2lzdHJhYmxlRG9tYWluOjp1bmNoZWNrZWRDcmVhdGVGcm9tUmVnaXN0cmFibGVEb21haW5TdHJp
bmcod2Vic2l0ZUlkZW50aWZpZXIpOworICAgIGF1dG8gaXQgPSBtX3BlckRvbWFpbkRhdGEuZmlu
ZChyZWdpc3RyYWJsZURvbWFpbik7CisgICAgaWYgKGl0ID09IG1fcGVyRG9tYWluRGF0YS5lbmQo
KSkKKyAgICAgICAgcmV0dXJuOworCisgICAgYXV0byYgcGVyRG9tYWluRGF0YSA9ICppdC0+dmFs
dWU7CisgICAgcGVyRG9tYWluRGF0YS5sYXN0UG9zaXRpb24gPSBXVEZNb3ZlKHBvc2l0aW9uKTsK
KyAgICBmb3IgKGF1dG8mIHdlYlByb2Nlc3NQcm94eSA6IHBlckRvbWFpbkRhdGEud2F0Y2hlcnMp
CisgICAgICAgIHdlYlByb2Nlc3NQcm94eS5zZW5kKE1lc3NhZ2VzOjpXZWJHZW9sb2NhdGlvbk1h
bmFnZXI6OkRpZENoYW5nZVBvc2l0aW9uKHJlZ2lzdHJhYmxlRG9tYWluLCBwZXJEb21haW5EYXRh
Lmxhc3RQb3NpdGlvbi52YWx1ZSgpKSwgMCk7Cit9CisKK3ZvaWQgV2ViR2VvbG9jYXRpb25NYW5h
Z2VyUHJveHk6OmVycm9yT2NjdXJyZWQoY29uc3QgU3RyaW5nJiB3ZWJzaXRlSWRlbnRpZmllciwg
Y29uc3QgU3RyaW5nJiBlcnJvck1lc3NhZ2UpCit7CisgICAgYXV0byByZWdpc3RyYWJsZURvbWFp
biA9IFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluOjp1bmNoZWNrZWRDcmVhdGVGcm9tUmVnaXN0
cmFibGVEb21haW5TdHJpbmcod2Vic2l0ZUlkZW50aWZpZXIpOworICAgIGF1dG8gaXQgPSBtX3Bl
ckRvbWFpbkRhdGEuZmluZChyZWdpc3RyYWJsZURvbWFpbik7CisgICAgaWYgKGl0ID09IG1fcGVy
RG9tYWluRGF0YS5lbmQoKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgYXV0byYgcGVyRG9tYWlu
RGF0YSA9ICppdC0+dmFsdWU7CisgICAgZm9yIChhdXRvJiB3ZWJQcm9jZXNzUHJveHkgOiBwZXJE
b21haW5EYXRhLndhdGNoZXJzKQorICAgICAgICB3ZWJQcm9jZXNzUHJveHkuc2VuZChNZXNzYWdl
czo6V2ViR2VvbG9jYXRpb25NYW5hZ2VyOjpEaWRGYWlsVG9EZXRlcm1pbmVQb3NpdGlvbihyZWdp
c3RyYWJsZURvbWFpbiwgZXJyb3JNZXNzYWdlKSwgMCk7Cit9CisKK3ZvaWQgV2ViR2VvbG9jYXRp
b25NYW5hZ2VyUHJveHk6OnJlc2V0R2VvbG9jYXRpb24oY29uc3QgU3RyaW5nJiB3ZWJzaXRlSWRl
bnRpZmllcikKK3sKKyAgICBhdXRvIHJlZ2lzdHJhYmxlRG9tYWluID0gV2ViQ29yZTo6UmVnaXN0
cmFibGVEb21haW46OnVuY2hlY2tlZENyZWF0ZUZyb21SZWdpc3RyYWJsZURvbWFpblN0cmluZyh3
ZWJzaXRlSWRlbnRpZmllcik7CisgICAgYXV0byBpdCA9IG1fcGVyRG9tYWluRGF0YS5maW5kKHJl
Z2lzdHJhYmxlRG9tYWluKTsKKyAgICBpZiAoaXQgPT0gbV9wZXJEb21haW5EYXRhLmVuZCgpKQor
ICAgICAgICByZXR1cm47CisKKyAgICBhdXRvJiBwZXJEb21haW5EYXRhID0gKml0LT52YWx1ZTsK
KyAgICBmb3IgKGF1dG8mIHdlYlByb2Nlc3NQcm94eSA6IHBlckRvbWFpbkRhdGEud2F0Y2hlcnMp
CisgICAgICAgIHdlYlByb2Nlc3NQcm94eS5zZW5kKE1lc3NhZ2VzOjpXZWJHZW9sb2NhdGlvbk1h
bmFnZXI6OlJlc2V0UGVybWlzc2lvbnMocmVnaXN0cmFibGVEb21haW4pLCAwKTsKK30KKworI2Vu
ZGlmCisKK30gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvV2ViQ29udGV4dFN1cHBsZW1lbnQuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L1dlYkNvbnRleHRTdXBwbGVtZW50LmgKaW5kZXggZWQ1NWI0MDNkYjI5Zjk0MDA0MzhiYTMyYTYw
Yzc1ODI3NDkzNGZhNi4uZWMxOWNkY2NjYmI0MGY5MmQ1ODM1ZjNlYTYwMzFiZGRhNDc3YThlMiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQ29udGV4dFN1cHBsZW1lbnQu
aAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJDb250ZXh0U3VwcGxlbWVudC5oCkBA
IC00NywxNCArNDcsNiBAQCBwdWJsaWM6CiAgICAgewogICAgIH0KIAotICAgIHZpcnR1YWwgdm9p
ZCBwcm9jZXNzRGlkQ2xvc2UoV2ViUHJvY2Vzc1Byb3h5KikKLSAgICB7Ci0gICAgfQotCi0gICAg
dmlydHVhbCB2b2lkIHByb2Nlc3NEaWRDbG9zZShOZXR3b3JrUHJvY2Vzc1Byb3h5KikKLSAgICB7
Ci0gICAgfQotCiAgICAgV2ViUHJvY2Vzc1Bvb2wqIHByb2Nlc3NQb29sKCkgY29uc3QgeyByZXR1
cm4gbV9wcm9jZXNzUG9vbDsgfQogICAgIHZvaWQgY2xlYXJQcm9jZXNzUG9vbCgpIHsgbV9wcm9j
ZXNzUG9vbCA9IG51bGxwdHI7IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvV2ViR2VvbG9jYXRpb25NYW5hZ2VyUHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvV2ViR2VvbG9jYXRpb25NYW5hZ2VyUHJveHkuY3BwCmluZGV4IDA0ZjMyMjdjZDU1Yzk5MmE0
MmNkOTZhM2YyNWQ2OTdhZWQ3OTY1YTIuLmQwNmY0ODMxMWU4ZWQ1MTc3MjY4NTQ0NmM5MmU2NjZh
Zjc4MmNiODYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkdlb2xvY2F0
aW9uTWFuYWdlclByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJHZW9s
b2NhdGlvbk1hbmFnZXJQcm94eS5jcHAKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0
IChDKSAyMDExLCAyMDEyLCAyMDEzIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAq
IENvcHlyaWdodCAoQykgMjAxMS0yMDIyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
ICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMzMsMTEgKzMzLDMwIEBACiAjaW5j
bHVkZSAiV2ViR2VvbG9jYXRpb25Qb3NpdGlvbi5oIgogI2luY2x1ZGUgIldlYlBhZ2VQcm94eS5o
IgogI2luY2x1ZGUgIldlYlByb2Nlc3NQb29sLmgiCisjaW5jbHVkZSA8V2ViQ29yZS9HZW9sb2Nh
dGlvblBvc2l0aW9uRGF0YS5oPgorI2luY2x1ZGUgPHd0Zi9XZWFrSGFzaFNldC5oPgogCi0jZGVm
aW5lIE1FU1NBR0VfQ0hFQ0soYXNzZXJ0aW9uKSBNRVNTQUdFX0NIRUNLX0JBU0UoYXNzZXJ0aW9u
LCAoJmNvbm5lY3Rpb24pKQorI2RlZmluZSBNRVNTQUdFX0NIRUNLKGNvbm5lY3Rpb24sIGFzc2Vy
dGlvbikgTUVTU0FHRV9DSEVDS19CQVNFKGFzc2VydGlvbiwgKGNvbm5lY3Rpb24pKQogCiBuYW1l
c3BhY2UgV2ViS2l0IHsKIAorc3RydWN0IFdlYkdlb2xvY2F0aW9uTWFuYWdlclByb3h5OjpQZXJE
b21haW5EYXRhIHsKKyAgICBXVEZfTUFLRV9TVFJVQ1RfRkFTVF9BTExPQ0FURUQ7CisgICAgV2Vh
a0hhc2hTZXQ8V2ViUHJvY2Vzc1Byb3h5PiB3YXRjaGVyczsKKyAgICBXZWFrSGFzaFNldDxXZWJQ
cm9jZXNzUHJveHk+IHdhdGNoZXJzTmVlZGluZ0hpZ2hBY2N1cmFjeTsKKyAgICBzdGQ6Om9wdGlv
bmFsPFdlYkNvcmU6Okdlb2xvY2F0aW9uUG9zaXRpb25EYXRhPiBsYXN0UG9zaXRpb247CisKKyAg
ICAvLyBGSVhNRTogVXNlIGZvciBhbGwgQ29jb2EgcG9ydHMuCisjaWYgUExBVEZPUk0oSU9TX0ZB
TUlMWSkKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8V2ViQ29yZTo6Q29yZUxvY2F0aW9uR2VvbG9jYXRp
b25Qcm92aWRlcj4gcHJvdmlkZXI7CisjZW5kaWYKK307CisKK3N0YXRpYyBpbmxpbmUgV2ViUHJv
Y2Vzc1Byb3h5JiBjb25uZWN0aW9uVG9XZWJQcm9jZXNzUHJveHkoY29uc3QgSVBDOjpDb25uZWN0
aW9uJiBjb25uZWN0aW9uKQoreworICAgIHJldHVybiBzdGF0aWNfY2FzdDxXZWJQcm9jZXNzUHJv
eHkmPihjb25uZWN0aW9uLmNsaWVudCgpKTsKK30KKwogY29uc3QgY2hhciogV2ViR2VvbG9jYXRp
b25NYW5hZ2VyUHJveHk6OnN1cHBsZW1lbnROYW1lKCkKIHsKICAgICByZXR1cm4gIldlYkdlb2xv
Y2F0aW9uTWFuYWdlclByb3h5IjsKQEAgLTUwLDM0ICs2OSwzOCBAQCBSZWY8V2ViR2VvbG9jYXRp
b25NYW5hZ2VyUHJveHk+IFdlYkdlb2xvY2F0aW9uTWFuYWdlclByb3h5OjpjcmVhdGUoV2ViUHJv
Y2Vzc1BvbwogCiBXZWJHZW9sb2NhdGlvbk1hbmFnZXJQcm94eTo6V2ViR2VvbG9jYXRpb25NYW5h
Z2VyUHJveHkoV2ViUHJvY2Vzc1Bvb2wqIHByb2Nlc3NQb29sKQogICAgIDogV2ViQ29udGV4dFN1
cHBsZW1lbnQocHJvY2Vzc1Bvb2wpCi0gICAgLCBtX3Byb3ZpZGVyKG1ha2VVbmlxdWU8QVBJOjpH
ZW9sb2NhdGlvblByb3ZpZGVyPigpKQogewogICAgIFdlYkNvbnRleHRTdXBwbGVtZW50Ojpwcm9j
ZXNzUG9vbCgpLT5hZGRNZXNzYWdlUmVjZWl2ZXIoTWVzc2FnZXM6OldlYkdlb2xvY2F0aW9uTWFu
YWdlclByb3h5OjptZXNzYWdlUmVjZWl2ZXJOYW1lKCksICp0aGlzKTsKIH0KIAorV2ViR2VvbG9j
YXRpb25NYW5hZ2VyUHJveHk6On5XZWJHZW9sb2NhdGlvbk1hbmFnZXJQcm94eSgpID0gZGVmYXVs
dDsKKwogdm9pZCBXZWJHZW9sb2NhdGlvbk1hbmFnZXJQcm94eTo6c2V0UHJvdmlkZXIoc3RkOjp1
bmlxdWVfcHRyPEFQSTo6R2VvbG9jYXRpb25Qcm92aWRlcj4mJiBwcm92aWRlcikKIHsKLSAgICBp
ZiAoIXByb3ZpZGVyKQotICAgICAgICBtX3Byb3ZpZGVyID0gbWFrZVVuaXF1ZTxBUEk6Okdlb2xv
Y2F0aW9uUHJvdmlkZXI+KCk7Ci0gICAgZWxzZQotICAgICAgICBtX3Byb3ZpZGVyID0gV1RGTW92
ZShwcm92aWRlcik7CisgICAgbV9jbGllbnRQcm92aWRlciA9IFdURk1vdmUocHJvdmlkZXIpOwog
fQogCiAvLyBXZWJDb250ZXh0U3VwcGxlbWVudAogCiB2b2lkIFdlYkdlb2xvY2F0aW9uTWFuYWdl
clByb3h5Ojpwcm9jZXNzUG9vbERlc3Ryb3llZCgpCiB7Ci0gICAgYm9vbCB3YXNVcGRhdGluZyA9
IGlzVXBkYXRpbmcoKTsKLSAgICBtX3VwZGF0ZVJlcXVlc3RlcnMuY2xlYXIoKTsKKyAgICBpZiAo
bV9wZXJEb21haW5EYXRhLmlzRW1wdHkoKSkKKyAgICAgICAgcmV0dXJuOwogCi0gICAgQVNTRVJU
KCFpc1VwZGF0aW5nKCkpOwotICAgIGlmICh3YXNVcGRhdGluZykKLSAgICAgICAgbV9wcm92aWRl
ci0+c3RvcFVwZGF0aW5nKCp0aGlzKTsKKyAgICBtX3BlckRvbWFpbkRhdGEuY2xlYXIoKTsKKyAg
ICBpZiAobV9jbGllbnRQcm92aWRlcikKKyAgICAgICAgbV9jbGllbnRQcm92aWRlci0+c3RvcFVw
ZGF0aW5nKCp0aGlzKTsKIH0KIAotdm9pZCBXZWJHZW9sb2NhdGlvbk1hbmFnZXJQcm94eTo6cHJv
Y2Vzc0RpZENsb3NlKFdlYlByb2Nlc3NQcm94eSogd2ViUHJvY2Vzc1Byb3h5KQordm9pZCBXZWJH
ZW9sb2NhdGlvbk1hbmFnZXJQcm94eTo6d2ViUHJvY2Vzc0lzR29pbmdBd2F5KFdlYlByb2Nlc3NQ
cm94eSYgcHJveHkpCiB7Ci0gICAgcmVtb3ZlUmVxdWVzdGVyKHdlYlByb2Nlc3NQcm94eSk7Cisg
ICAgVmVjdG9yPFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluPiBhZmZlY3RlZERvbWFpbnM7Cisg
ICAgZm9yIChhdXRvJiBbcmVnaXN0cmFibGVEb21haW4sIHBlckRvbWFpbkRhdGFdIDogbV9wZXJE
b21haW5EYXRhKSB7CisgICAgICAgIGlmIChwZXJEb21haW5EYXRhLT53YXRjaGVycy5jb250YWlu
cyhwcm94eSkpCisgICAgICAgICAgICBhZmZlY3RlZERvbWFpbnMuYXBwZW5kKHJlZ2lzdHJhYmxl
RG9tYWluKTsKKyAgICB9CisgICAgZm9yIChhdXRvJiByZWdpc3RyYWJsZURvbWFpbiA6IGFmZmVj
dGVkRG9tYWlucykKKyAgICAgICAgc3RvcFVwZGF0aW5nV2l0aFByb3h5KHByb3h5LCByZWdpc3Ry
YWJsZURvbWFpbik7CiB9CiAKIHZvaWQgV2ViR2VvbG9jYXRpb25NYW5hZ2VyUHJveHk6OnJlZldl
YkNvbnRleHRTdXBwbGVtZW50KCkKQEAgLTkyLDgwICsxMTUsMjA0IEBAIHZvaWQgV2ViR2VvbG9j
YXRpb25NYW5hZ2VyUHJveHk6OmRlcmVmV2ViQ29udGV4dFN1cHBsZW1lbnQoKQogCiB2b2lkIFdl
Ykdlb2xvY2F0aW9uTWFuYWdlclByb3h5Ojpwcm92aWRlckRpZENoYW5nZVBvc2l0aW9uKFdlYkdl
b2xvY2F0aW9uUG9zaXRpb24qIHBvc2l0aW9uKQogewotICAgIG1fbGFzdFBvc2l0aW9uID0gcG9z
aXRpb24tPmNvcmVQb3NpdGlvbigpOwotCi0gICAgaWYgKCFwcm9jZXNzUG9vbCgpKQotICAgICAg
ICByZXR1cm47Ci0KLSAgICBwcm9jZXNzUG9vbCgpLT5zZW5kVG9BbGxQcm9jZXNzZXMoTWVzc2Fn
ZXM6OldlYkdlb2xvY2F0aW9uTWFuYWdlcjo6RGlkQ2hhbmdlUG9zaXRpb24obV9sYXN0UG9zaXRp
b24udmFsdWUoKSkpOworICAgIGZvciAoYXV0byYgW3JlZ2lzdHJhYmxlRG9tYWluLCBwZXJEb21h
aW5EYXRhXSA6IG1fcGVyRG9tYWluRGF0YSkgeworICAgICAgICBwZXJEb21haW5EYXRhLT5sYXN0
UG9zaXRpb24gPSBwb3NpdGlvbi0+Y29yZVBvc2l0aW9uKCk7CisgICAgICAgIGZvciAoYXV0byYg
cHJvY2VzcyA6IHBlckRvbWFpbkRhdGEtPndhdGNoZXJzKQorICAgICAgICAgICAgcHJvY2Vzcy5z
ZW5kKE1lc3NhZ2VzOjpXZWJHZW9sb2NhdGlvbk1hbmFnZXI6OkRpZENoYW5nZVBvc2l0aW9uKHJl
Z2lzdHJhYmxlRG9tYWluLCBwZXJEb21haW5EYXRhLT5sYXN0UG9zaXRpb24udmFsdWUoKSksIDAp
OworICAgIH0KIH0KIAogdm9pZCBXZWJHZW9sb2NhdGlvbk1hbmFnZXJQcm94eTo6cHJvdmlkZXJE
aWRGYWlsVG9EZXRlcm1pbmVQb3NpdGlvbihjb25zdCBTdHJpbmcmIGVycm9yTWVzc2FnZSkKIHsK
LSAgICBpZiAoIXByb2Nlc3NQb29sKCkpCi0gICAgICAgIHJldHVybjsKLQotICAgIHByb2Nlc3NQ
b29sKCktPnNlbmRUb0FsbFByb2Nlc3NlcyhNZXNzYWdlczo6V2ViR2VvbG9jYXRpb25NYW5hZ2Vy
OjpEaWRGYWlsVG9EZXRlcm1pbmVQb3NpdGlvbihlcnJvck1lc3NhZ2UpKTsKKyAgICBmb3IgKGF1
dG8mIFtyZWdpc3RyYWJsZURvbWFpbiwgcGVyRG9tYWluRGF0YV0gOiBtX3BlckRvbWFpbkRhdGEp
IHsKKyAgICAgICAgZm9yIChhdXRvJiBwcm94eSA6IHBlckRvbWFpbkRhdGEtPndhdGNoZXJzKQor
ICAgICAgICAgICAgcHJveHkuc2VuZChNZXNzYWdlczo6V2ViR2VvbG9jYXRpb25NYW5hZ2VyOjpE
aWRGYWlsVG9EZXRlcm1pbmVQb3NpdGlvbihyZWdpc3RyYWJsZURvbWFpbiwgZXJyb3JNZXNzYWdl
KSwgMCk7CisgICAgfQogfQogCiAjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKIHZvaWQgV2ViR2Vv
bG9jYXRpb25NYW5hZ2VyUHJveHk6OnJlc2V0UGVybWlzc2lvbnMoKQogewotICAgIHByb2Nlc3NQ
b29sKCktPnNlbmRUb0FsbFByb2Nlc3NlcyhNZXNzYWdlczo6V2ViR2VvbG9jYXRpb25NYW5hZ2Vy
OjpSZXNldFBlcm1pc3Npb25zKCkpOworICAgIEFTU0VSVChtX2NsaWVudFByb3ZpZGVyKTsKKyAg
ICBmb3IgKGF1dG8mIFtyZWdpc3RyYWJsZURvbWFpbiwgcGVyRG9tYWluRGF0YV0gOiBtX3BlckRv
bWFpbkRhdGEpIHsKKyAgICAgICAgZm9yIChhdXRvJiBwcm94eSA6IHBlckRvbWFpbkRhdGEtPndh
dGNoZXJzKQorICAgICAgICAgICAgcHJveHkuc2VuZChNZXNzYWdlczo6V2ViR2VvbG9jYXRpb25N
YW5hZ2VyOjpSZXNldFBlcm1pc3Npb25zKHJlZ2lzdHJhYmxlRG9tYWluKSwgMCk7CisgICAgfQog
fQogI2VuZGlmCiAKLXZvaWQgV2ViR2VvbG9jYXRpb25NYW5hZ2VyUHJveHk6OnN0YXJ0VXBkYXRp
bmcoSVBDOjpDb25uZWN0aW9uJiBjb25uZWN0aW9uLCBXZWJQYWdlUHJveHlJZGVudGlmaWVyIHBh
Z2VQcm94eUlELCBjb25zdCBTdHJpbmcmIGF1dGhvcml6YXRpb25Ub2tlbikKK3ZvaWQgV2ViR2Vv
bG9jYXRpb25NYW5hZ2VyUHJveHk6OnN0YXJ0VXBkYXRpbmcoSVBDOjpDb25uZWN0aW9uJiBjb25u
ZWN0aW9uLCBjb25zdCBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiYgcmVnaXN0cmFibGVEb21h
aW4sIFdlYlBhZ2VQcm94eUlkZW50aWZpZXIgcGFnZVByb3h5SUQsIGNvbnN0IFN0cmluZyYgYXV0
aG9yaXphdGlvblRva2VuLCBib29sIGVuYWJsZUhpZ2hBY2N1cmFjeSkKK3sKKyAgICBzdGFydFVw
ZGF0aW5nV2l0aFByb3h5KGNvbm5lY3Rpb25Ub1dlYlByb2Nlc3NQcm94eShjb25uZWN0aW9uKSwg
cmVnaXN0cmFibGVEb21haW4sIHBhZ2VQcm94eUlELCBhdXRob3JpemF0aW9uVG9rZW4sIGVuYWJs
ZUhpZ2hBY2N1cmFjeSk7Cit9CisKK3ZvaWQgV2ViR2VvbG9jYXRpb25NYW5hZ2VyUHJveHk6OnN0
YXJ0VXBkYXRpbmdXaXRoUHJveHkoV2ViUHJvY2Vzc1Byb3h5JiBwcm94eSwgY29uc3QgV2ViQ29y
ZTo6UmVnaXN0cmFibGVEb21haW4mIHJlZ2lzdHJhYmxlRG9tYWluLCBXZWJQYWdlUHJveHlJZGVu
dGlmaWVyIHBhZ2VQcm94eUlELCBjb25zdCBTdHJpbmcmIGF1dGhvcml6YXRpb25Ub2tlbiwgYm9v
bCBlbmFibGVIaWdoQWNjdXJhY3kpCiB7CiAgICAgYXV0byogcGFnZSA9IFdlYlByb2Nlc3NQcm94
eTo6d2ViUGFnZShwYWdlUHJveHlJRCk7Ci0gICAgTUVTU0FHRV9DSEVDSyhwYWdlKTsKKyAgICBN
RVNTQUdFX0NIRUNLKHByb3h5LmNvbm5lY3Rpb24oKSwgcGFnZSk7CiAKICAgICBhdXRvIGlzVmFs
aWRBdXRob3JpemF0aW9uVG9rZW4gPSBwYWdlLT5nZW9sb2NhdGlvblBlcm1pc3Npb25SZXF1ZXN0
TWFuYWdlcigpLmlzVmFsaWRBdXRob3JpemF0aW9uVG9rZW4oYXV0aG9yaXphdGlvblRva2VuKTsK
LSAgICBNRVNTQUdFX0NIRUNLKGlzVmFsaWRBdXRob3JpemF0aW9uVG9rZW4pOworICAgIE1FU1NB
R0VfQ0hFQ0socHJveHkuY29ubmVjdGlvbigpLCBpc1ZhbGlkQXV0aG9yaXphdGlvblRva2VuKTsK
KworICAgIGF1dG8mIHBlckRvbWFpbkRhdGEgPSAqbV9wZXJEb21haW5EYXRhLmVuc3VyZShyZWdp
c3RyYWJsZURvbWFpbiwgW10geworICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZTxQZXJEb21haW5E
YXRhPigpOworICAgIH0pLml0ZXJhdG9yLT52YWx1ZTsKKworICAgIGJvb2wgd2FzVXBkYXRpbmcg
PSBpc1VwZGF0aW5nKHBlckRvbWFpbkRhdGEpOworICAgIGJvb2wgaGlnaEFjY3VyYWN5V2FzRW5h
YmxlZCA9IGlzSGlnaEFjY3VyYWN5RW5hYmxlZChwZXJEb21haW5EYXRhKTsKKworICAgIHBlckRv
bWFpbkRhdGEud2F0Y2hlcnMuYWRkKHByb3h5KTsKKyAgICBpZiAoZW5hYmxlSGlnaEFjY3VyYWN5
KQorICAgICAgICBwZXJEb21haW5EYXRhLndhdGNoZXJzTmVlZGluZ0hpZ2hBY2N1cmFjeS5hZGQo
cHJveHkpOwogCi0gICAgYm9vbCB3YXNVcGRhdGluZyA9IGlzVXBkYXRpbmcoKTsKLSAgICBtX3Vw
ZGF0ZVJlcXVlc3RlcnMuYWRkKCZjb25uZWN0aW9uLmNsaWVudCgpKTsKICAgICBpZiAoIXdhc1Vw
ZGF0aW5nKSB7Ci0gICAgICAgIG1fcHJvdmlkZXItPnNldEVuYWJsZUhpZ2hBY2N1cmFjeSgqdGhp
cywgaXNIaWdoQWNjdXJhY3lFbmFibGVkKCkpOwotICAgICAgICBtX3Byb3ZpZGVyLT5zdGFydFVw
ZGF0aW5nKCp0aGlzKTsKLSAgICB9IGVsc2UgaWYgKG1fbGFzdFBvc2l0aW9uKQotICAgICAgICBj
b25uZWN0aW9uLnNlbmQoTWVzc2FnZXM6OldlYkdlb2xvY2F0aW9uTWFuYWdlcjo6RGlkQ2hhbmdl
UG9zaXRpb24obV9sYXN0UG9zaXRpb24udmFsdWUoKSksIDApOworICAgICAgICBwcm92aWRlclN0
YXJ0VXBkYXRpbmcocGVyRG9tYWluRGF0YSwgcmVnaXN0cmFibGVEb21haW4pOworICAgICAgICBy
ZXR1cm47CisgICAgfQorICAgIGlmICghaGlnaEFjY3VyYWN5V2FzRW5hYmxlZCAmJiBlbmFibGVI
aWdoQWNjdXJhY3kpCisgICAgICAgIHByb3ZpZGVyU2V0RW5hYmxlZEhpZ2hBY2N1cmFjeShwZXJE
b21haW5EYXRhLCBlbmFibGVIaWdoQWNjdXJhY3kpOworCisgICAgaWYgKHBlckRvbWFpbkRhdGEu
bGFzdFBvc2l0aW9uKQorICAgICAgICBwcm94eS5zZW5kKE1lc3NhZ2VzOjpXZWJHZW9sb2NhdGlv
bk1hbmFnZXI6OkRpZENoYW5nZVBvc2l0aW9uKHJlZ2lzdHJhYmxlRG9tYWluLCBwZXJEb21haW5E
YXRhLmxhc3RQb3NpdGlvbi52YWx1ZSgpKSwgMCk7CiB9CiAKLXZvaWQgV2ViR2VvbG9jYXRpb25N
YW5hZ2VyUHJveHk6OnN0b3BVcGRhdGluZyhJUEM6OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24pCit2
b2lkIFdlYkdlb2xvY2F0aW9uTWFuYWdlclByb3h5OjpzdG9wVXBkYXRpbmcoSVBDOjpDb25uZWN0
aW9uJiBjb25uZWN0aW9uLCBjb25zdCBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiYgcmVnaXN0
cmFibGVEb21haW4pCiB7Ci0gICAgcmVtb3ZlUmVxdWVzdGVyKCZjb25uZWN0aW9uLmNsaWVudCgp
KTsKKyAgICBzdG9wVXBkYXRpbmdXaXRoUHJveHkoY29ubmVjdGlvblRvV2ViUHJvY2Vzc1Byb3h5
KGNvbm5lY3Rpb24pLCByZWdpc3RyYWJsZURvbWFpbik7CiB9CiAKLXZvaWQgV2ViR2VvbG9jYXRp
b25NYW5hZ2VyUHJveHk6OnJlbW92ZVJlcXVlc3Rlcihjb25zdCBJUEM6OkNvbm5lY3Rpb246OkNs
aWVudCogY2xpZW50KQordm9pZCBXZWJHZW9sb2NhdGlvbk1hbmFnZXJQcm94eTo6c3RvcFVwZGF0
aW5nV2l0aFByb3h5KFdlYlByb2Nlc3NQcm94eSYgcHJveHksIGNvbnN0IFdlYkNvcmU6OlJlZ2lz
dHJhYmxlRG9tYWluJiByZWdpc3RyYWJsZURvbWFpbikKIHsKLSAgICBib29sIHdhc1VwZGF0aW5n
ID0gaXNVcGRhdGluZygpOwotICAgIGJvb2wgaGlnaEFjY3VyYWN5V2FzRW5hYmxlZCA9IGlzSGln
aEFjY3VyYWN5RW5hYmxlZCgpOworICAgIGF1dG8gaXQgPSBtX3BlckRvbWFpbkRhdGEuZmluZChy
ZWdpc3RyYWJsZURvbWFpbik7CisgICAgaWYgKGl0ID09IG1fcGVyRG9tYWluRGF0YS5lbmQoKSkK
KyAgICAgICAgcmV0dXJuOworCisgICAgYXV0byYgcGVyRG9tYWluRGF0YSA9ICppdC0+dmFsdWU7
CisgICAgYm9vbCB3YXNVcGRhdGluZyA9IGlzVXBkYXRpbmcocGVyRG9tYWluRGF0YSk7CisgICAg
Ym9vbCBoaWdoQWNjdXJhY3lXYXNFbmFibGVkID0gaXNIaWdoQWNjdXJhY3lFbmFibGVkKHBlckRv
bWFpbkRhdGEpOwogCi0gICAgbV9oaWdoQWNjdXJhY3lSZXF1ZXN0ZXJzLnJlbW92ZShjbGllbnQp
OwotICAgIG1fdXBkYXRlUmVxdWVzdGVycy5yZW1vdmUoY2xpZW50KTsKKyAgICBwZXJEb21haW5E
YXRhLndhdGNoZXJzLnJlbW92ZShwcm94eSk7CisgICAgcGVyRG9tYWluRGF0YS53YXRjaGVyc05l
ZWRpbmdIaWdoQWNjdXJhY3kucmVtb3ZlKHByb3h5KTsKIAotICAgIGlmICh3YXNVcGRhdGluZyAm
JiAhaXNVcGRhdGluZygpKQotICAgICAgICBtX3Byb3ZpZGVyLT5zdG9wVXBkYXRpbmcoKnRoaXMp
OworICAgIGlmICh3YXNVcGRhdGluZyAmJiAhaXNVcGRhdGluZyhwZXJEb21haW5EYXRhKSkKKyAg
ICAgICAgcHJvdmlkZXJTdG9wVXBkYXRpbmcocGVyRG9tYWluRGF0YSk7CiAgICAgZWxzZSB7Ci0g
ICAgICAgIGJvb2wgaGlnaEFjY3VyYWN5U2hvdWxkQmVFbmFibGVkID0gaXNIaWdoQWNjdXJhY3lF
bmFibGVkKCk7CisgICAgICAgIGJvb2wgaGlnaEFjY3VyYWN5U2hvdWxkQmVFbmFibGVkID0gaXNI
aWdoQWNjdXJhY3lFbmFibGVkKHBlckRvbWFpbkRhdGEpOwogICAgICAgICBpZiAoaGlnaEFjY3Vy
YWN5U2hvdWxkQmVFbmFibGVkICE9IGhpZ2hBY2N1cmFjeVdhc0VuYWJsZWQpCi0gICAgICAgICAg
ICBtX3Byb3ZpZGVyLT5zZXRFbmFibGVIaWdoQWNjdXJhY3koKnRoaXMsIGhpZ2hBY2N1cmFjeVNo
b3VsZEJlRW5hYmxlZCk7CisgICAgICAgICAgICBwcm92aWRlclNldEVuYWJsZWRIaWdoQWNjdXJh
Y3kocGVyRG9tYWluRGF0YSwgaGlnaEFjY3VyYWN5U2hvdWxkQmVFbmFibGVkKTsKICAgICB9CisK
KyAgICBpZiAocGVyRG9tYWluRGF0YS53YXRjaGVycy5jb21wdXRlc0VtcHR5KCkgJiYgcGVyRG9t
YWluRGF0YS53YXRjaGVyc05lZWRpbmdIaWdoQWNjdXJhY3kuY29tcHV0ZXNFbXB0eSgpKQorICAg
ICAgICBtX3BlckRvbWFpbkRhdGEucmVtb3ZlKGl0KTsKIH0KIAotdm9pZCBXZWJHZW9sb2NhdGlv
bk1hbmFnZXJQcm94eTo6c2V0RW5hYmxlSGlnaEFjY3VyYWN5KElQQzo6Q29ubmVjdGlvbiYgY29u
bmVjdGlvbiwgYm9vbCBlbmFibGVkKQordm9pZCBXZWJHZW9sb2NhdGlvbk1hbmFnZXJQcm94eTo6
c2V0RW5hYmxlSGlnaEFjY3VyYWN5KElQQzo6Q29ubmVjdGlvbiYgY29ubmVjdGlvbiwgY29uc3Qg
V2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4mIHJlZ2lzdHJhYmxlRG9tYWluLCBib29sIGVuYWJs
ZWQpCiB7Ci0gICAgYm9vbCBoaWdoQWNjdXJhY3lXYXNFbmFibGVkID0gaXNIaWdoQWNjdXJhY3lF
bmFibGVkKCk7CisgICAgc2V0RW5hYmxlSGlnaEFjY3VyYWN5V2l0aFByb3h5KGNvbm5lY3Rpb25U
b1dlYlByb2Nlc3NQcm94eShjb25uZWN0aW9uKSwgcmVnaXN0cmFibGVEb21haW4sIGVuYWJsZWQp
OworfQorCit2b2lkIFdlYkdlb2xvY2F0aW9uTWFuYWdlclByb3h5OjpzZXRFbmFibGVIaWdoQWNj
dXJhY3lXaXRoUHJveHkoV2ViUHJvY2Vzc1Byb3h5JiBwcm94eSwgY29uc3QgV2ViQ29yZTo6UmVn
aXN0cmFibGVEb21haW4mIHJlZ2lzdHJhYmxlRG9tYWluLCBib29sIGVuYWJsZWQpCit7CisgICAg
YXV0byBpdCA9IG1fcGVyRG9tYWluRGF0YS5maW5kKHJlZ2lzdHJhYmxlRG9tYWluKTsKKyAgICBB
U1NFUlQoaXQgIT0gbV9wZXJEb21haW5EYXRhLmVuZCgpKTsKKyAgICBpZiAoaXQgPT0gbV9wZXJE
b21haW5EYXRhLmVuZCgpKQorICAgICAgICByZXR1cm47CisKKyAgICBhdXRvJiBwZXJEb21haW5E
YXRhID0gKml0LT52YWx1ZTsKKyAgICBib29sIGhpZ2hBY2N1cmFjeVdhc0VuYWJsZWQgPSBpc0hp
Z2hBY2N1cmFjeUVuYWJsZWQocGVyRG9tYWluRGF0YSk7CiAKICAgICBpZiAoZW5hYmxlZCkKLSAg
ICAgICAgbV9oaWdoQWNjdXJhY3lSZXF1ZXN0ZXJzLmFkZCgmY29ubmVjdGlvbi5jbGllbnQoKSk7
CisgICAgICAgIHBlckRvbWFpbkRhdGEud2F0Y2hlcnNOZWVkaW5nSGlnaEFjY3VyYWN5LmFkZChw
cm94eSk7CiAgICAgZWxzZQotICAgICAgICBtX2hpZ2hBY2N1cmFjeVJlcXVlc3RlcnMucmVtb3Zl
KCZjb25uZWN0aW9uLmNsaWVudCgpKTsKKyAgICAgICAgcGVyRG9tYWluRGF0YS53YXRjaGVyc05l
ZWRpbmdIaWdoQWNjdXJhY3kucmVtb3ZlKHByb3h5KTsKKworICAgIGlmIChpc1VwZGF0aW5nKHBl
ckRvbWFpbkRhdGEpICYmIGhpZ2hBY2N1cmFjeVdhc0VuYWJsZWQgIT0gZW5hYmxlZCkKKyAgICAg
ICAgcHJvdmlkZXJTZXRFbmFibGVkSGlnaEFjY3VyYWN5KHBlckRvbWFpbkRhdGEsIGVuYWJsZWQp
OworfQorCitib29sIFdlYkdlb2xvY2F0aW9uTWFuYWdlclByb3h5Ojppc1VwZGF0aW5nKGNvbnN0
IFBlckRvbWFpbkRhdGEmIHBlckRvbWFpbkRhdGEpIGNvbnN0Cit7CisjaWYgUExBVEZPUk0oSU9T
X0ZBTUlMWSkKKyAgICBpZiAoIW1fY2xpZW50UHJvdmlkZXIpCisgICAgICAgIHJldHVybiAhcGVy
RG9tYWluRGF0YS53YXRjaGVycy5jb21wdXRlc0VtcHR5KCk7CisjZWxzZQorICAgIFVOVVNFRF9Q
QVJBTShwZXJEb21haW5EYXRhKTsKKyNlbmRpZgorCisgICAgZm9yIChhdXRvJiBwZXJEb21haW5E
YXRhIDogbV9wZXJEb21haW5EYXRhLnZhbHVlcygpKSB7CisgICAgICAgIGlmICghcGVyRG9tYWlu
RGF0YS0+d2F0Y2hlcnMuY29tcHV0ZXNFbXB0eSgpKQorICAgICAgICAgICAgcmV0dXJuIHRydWU7
CisgICAgfQorICAgIHJldHVybiBmYWxzZTsKK30KKworCitib29sIFdlYkdlb2xvY2F0aW9uTWFu
YWdlclByb3h5Ojppc0hpZ2hBY2N1cmFjeUVuYWJsZWQoY29uc3QgUGVyRG9tYWluRGF0YSYgcGVy
RG9tYWluRGF0YSkgY29uc3QKK3sKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZKQorICAgIGlmICgh
bV9jbGllbnRQcm92aWRlcikKKyAgICAgICAgcmV0dXJuICFwZXJEb21haW5EYXRhLndhdGNoZXJz
TmVlZGluZ0hpZ2hBY2N1cmFjeS5jb21wdXRlc0VtcHR5KCk7CisjZWxzZQorICAgIFVOVVNFRF9Q
QVJBTShwZXJEb21haW5EYXRhKTsKKyNlbmRpZgorCisgICAgZm9yIChhdXRvJiBkYXRhIDogbV9w
ZXJEb21haW5EYXRhLnZhbHVlcygpKSB7CisgICAgICAgIGlmICghZGF0YS0+d2F0Y2hlcnNOZWVk
aW5nSGlnaEFjY3VyYWN5LmNvbXB1dGVzRW1wdHkoKSkKKyAgICAgICAgICAgIHJldHVybiB0cnVl
OworICAgIH0KKyAgICByZXR1cm4gZmFsc2U7Cit9CisKK3ZvaWQgV2ViR2VvbG9jYXRpb25NYW5h
Z2VyUHJveHk6OnByb3ZpZGVyU3RhcnRVcGRhdGluZyhQZXJEb21haW5EYXRhJiBwZXJEb21haW5E
YXRhLCBjb25zdCBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiYgcmVnaXN0cmFibGVEb21haW4p
Cit7CisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKKyAgICBpZiAoIW1fY2xpZW50UHJvdmlkZXIp
IHsKKyAgICAgICAgQVNTRVJUKCFwZXJEb21haW5EYXRhLnByb3ZpZGVyKTsKKyAgICAgICAgcGVy
RG9tYWluRGF0YS5wcm92aWRlciA9IG1ha2VVbmlxdWU8V2ViQ29yZTo6Q29yZUxvY2F0aW9uR2Vv
bG9jYXRpb25Qcm92aWRlcj4ocmVnaXN0cmFibGVEb21haW4sICp0aGlzKTsKKyAgICAgICAgcGVy
RG9tYWluRGF0YS5wcm92aWRlci0+c2V0RW5hYmxlSGlnaEFjY3VyYWN5KCFwZXJEb21haW5EYXRh
LndhdGNoZXJzTmVlZGluZ0hpZ2hBY2N1cmFjeS5jb21wdXRlc0VtcHR5KCkpOworICAgICAgICBw
ZXJEb21haW5EYXRhLnByb3ZpZGVyLT5zdGFydCgpOworICAgICAgICByZXR1cm47CisgICAgfQor
I2Vsc2UKKyAgICBVTlVTRURfUEFSQU0ocmVnaXN0cmFibGVEb21haW4pOworICAgIGlmICghbV9j
bGllbnRQcm92aWRlcikKKyAgICAgICAgcmV0dXJuOworI2VuZGlmCisKKyAgICBtX2NsaWVudFBy
b3ZpZGVyLT5zZXRFbmFibGVIaWdoQWNjdXJhY3koKnRoaXMsIGlzSGlnaEFjY3VyYWN5RW5hYmxl
ZChwZXJEb21haW5EYXRhKSk7CisgICAgbV9jbGllbnRQcm92aWRlci0+c3RhcnRVcGRhdGluZygq
dGhpcyk7Cit9CisKK3ZvaWQgV2ViR2VvbG9jYXRpb25NYW5hZ2VyUHJveHk6OnByb3ZpZGVyU3Rv
cFVwZGF0aW5nKFBlckRvbWFpbkRhdGEmIHBlckRvbWFpbkRhdGEpCit7CisjaWYgUExBVEZPUk0o
SU9TX0ZBTUlMWSkKKyAgICBpZiAoIW1fY2xpZW50UHJvdmlkZXIpIHsKKyAgICAgICAgcGVyRG9t
YWluRGF0YS5wcm92aWRlci0+c3RvcCgpOworICAgICAgICByZXR1cm47CisgICAgfQorI2Vsc2UK
KyAgICBVTlVTRURfUEFSQU0ocGVyRG9tYWluRGF0YSk7CisgICAgaWYgKCFtX2NsaWVudFByb3Zp
ZGVyKQorICAgICAgICByZXR1cm47CisjZW5kaWYKKworICAgIG1fY2xpZW50UHJvdmlkZXItPnN0
b3BVcGRhdGluZygqdGhpcyk7Cit9CisKK3ZvaWQgV2ViR2VvbG9jYXRpb25NYW5hZ2VyUHJveHk6
OnByb3ZpZGVyU2V0RW5hYmxlZEhpZ2hBY2N1cmFjeShQZXJEb21haW5EYXRhJiBwZXJEb21haW5E
YXRhLCBib29sIGVuYWJsZWQpCit7CisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKKyAgICBpZiAo
IW1fY2xpZW50UHJvdmlkZXIpIHsKKyAgICAgICAgcGVyRG9tYWluRGF0YS5wcm92aWRlci0+c2V0
RW5hYmxlSGlnaEFjY3VyYWN5KGVuYWJsZWQpOworICAgICAgICByZXR1cm47CisgICAgfQorI2Vs
c2UKKyAgICBVTlVTRURfUEFSQU0ocGVyRG9tYWluRGF0YSk7CisgICAgaWYgKCFtX2NsaWVudFBy
b3ZpZGVyKQorICAgICAgICByZXR1cm47CisjZW5kaWYKIAotICAgIGJvb2wgaGlnaEFjY3VyYWN5
U2hvdWxkQmVFbmFibGVkID0gaXNIaWdoQWNjdXJhY3lFbmFibGVkKCk7Ci0gICAgaWYgKGlzVXBk
YXRpbmcoKSAmJiBoaWdoQWNjdXJhY3lXYXNFbmFibGVkICE9IGhpZ2hBY2N1cmFjeVNob3VsZEJl
RW5hYmxlZCkKLSAgICAgICAgbV9wcm92aWRlci0+c2V0RW5hYmxlSGlnaEFjY3VyYWN5KCp0aGlz
LCBoaWdoQWNjdXJhY3lTaG91bGRCZUVuYWJsZWQpOworICAgIG1fY2xpZW50UHJvdmlkZXItPnNl
dEVuYWJsZUhpZ2hBY2N1cmFjeSgqdGhpcywgZW5hYmxlZCk7CiB9CiAKIH0gLy8gbmFtZXNwYWNl
IFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViR2VvbG9jYXRp
b25NYW5hZ2VyUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkdlb2xvY2F0aW9u
TWFuYWdlclByb3h5LmgKaW5kZXggNzQ5MzZlNDVhMGQ4MzgzYThiNGIzZDZkNTc4YzliZDIyYmUz
ZmE1ZS4uNzY3ODY4OWMwYjQ0NDk5NTc3OTMyMjQwZGQxYmJjZjk3YWFjMDkwYyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViR2VvbG9jYXRpb25NYW5hZ2VyUHJveHkuaAor
KysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJHZW9sb2NhdGlvbk1hbmFnZXJQcm94eS5o
CkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMSwgMjAxMiwgMjAxMyBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEtMjAy
MiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKQEAgLTMwLDI0ICszMCwzNyBAQAogI2luY2x1ZGUgIk1lc3NhZ2VSZWNlaXZlci5o
IgogI2luY2x1ZGUgIldlYkNvbnRleHRTdXBwbGVtZW50LmgiCiAjaW5jbHVkZSAiV2ViUGFnZVBy
b3h5SWRlbnRpZmllci5oIgotI2luY2x1ZGUgPFdlYkNvcmUvR2VvbG9jYXRpb25Qb3NpdGlvbkRh
dGEuaD4KLSNpbmNsdWRlIDx3dGYvSGFzaFNldC5oPgorI2luY2x1ZGUgPFdlYkNvcmUvUmVnaXN0
cmFibGVEb21haW4uaD4KKyNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgogI2luY2x1ZGUgPHd0Zi90
ZXh0L1dURlN0cmluZy5oPgogCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKKyNpbmNsdWRlIDxX
ZWJDb3JlL0NvcmVMb2NhdGlvbkdlb2xvY2F0aW9uUHJvdmlkZXIuaD4KKyNlbmRpZgorCiBuYW1l
c3BhY2UgQVBJIHsKIGNsYXNzIEdlb2xvY2F0aW9uUHJvdmlkZXI7CiB9CiAKK25hbWVzcGFjZSBX
ZWJDb3JlIHsKK2NsYXNzIEdlb2xvY2F0aW9uUG9zaXRpb25EYXRhOworfQorCiBuYW1lc3BhY2Ug
V2ViS2l0IHsKIAogY2xhc3MgV2ViR2VvbG9jYXRpb25Qb3NpdGlvbjsKIGNsYXNzIFdlYlByb2Nl
c3NQb29sOwogCi1jbGFzcyBXZWJHZW9sb2NhdGlvbk1hbmFnZXJQcm94eSA6IHB1YmxpYyBBUEk6
Ok9iamVjdEltcGw8QVBJOjpPYmplY3Q6OlR5cGU6Okdlb2xvY2F0aW9uTWFuYWdlcj4sIHB1Ymxp
YyBXZWJDb250ZXh0U3VwcGxlbWVudCwgcHJpdmF0ZSBJUEM6Ok1lc3NhZ2VSZWNlaXZlciB7Citj
bGFzcyBXZWJHZW9sb2NhdGlvbk1hbmFnZXJQcm94eSA6IHB1YmxpYyBBUEk6Ok9iamVjdEltcGw8
QVBJOjpPYmplY3Q6OlR5cGU6Okdlb2xvY2F0aW9uTWFuYWdlcj4sIHB1YmxpYyBXZWJDb250ZXh0
U3VwcGxlbWVudCwgcHJpdmF0ZSBJUEM6Ok1lc3NhZ2VSZWNlaXZlcgorI2lmIFBMQVRGT1JNKElP
U19GQU1JTFkpCisgICAgLCBwdWJsaWMgV2ViQ29yZTo6Q29yZUxvY2F0aW9uR2VvbG9jYXRpb25Q
cm92aWRlcjo6Q2xpZW50CisjZW5kaWYKK3sKIHB1YmxpYzoKICAgICBzdGF0aWMgY29uc3QgY2hh
ciogc3VwcGxlbWVudE5hbWUoKTsKIAogICAgIHN0YXRpYyBSZWY8V2ViR2VvbG9jYXRpb25NYW5h
Z2VyUHJveHk+IGNyZWF0ZShXZWJQcm9jZXNzUG9vbCopOworICAgIH5XZWJHZW9sb2NhdGlvbk1h
bmFnZXJQcm94eSgpOwogCiAgICAgdm9pZCBzZXRQcm92aWRlcihzdGQ6OnVuaXF1ZV9wdHI8QVBJ
OjpHZW9sb2NhdGlvblByb3ZpZGVyPiYmKTsKIApAQCAtNTYsMzYgKzY5LDQ4IEBAIHB1YmxpYzoK
ICNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogICAgIHZvaWQgcmVzZXRQZXJtaXNzaW9ucygpOwog
I2VuZGlmCi0gICAgY29uc3Qgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpHZW9sb2NhdGlvblBvc2l0
aW9uRGF0YT4mIGxhc3RQb3NpdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fbGFzdFBvc2l0aW9uOyB9
CiAKICAgICB1c2luZyBBUEk6Ok9iamVjdDo6cmVmOwogICAgIHVzaW5nIEFQSTo6T2JqZWN0Ojpk
ZXJlZjsKIAorICAgIHZvaWQgd2ViUHJvY2Vzc0lzR29pbmdBd2F5KFdlYlByb2Nlc3NQcm94eSYp
OworCiBwcml2YXRlOgogICAgIGV4cGxpY2l0IFdlYkdlb2xvY2F0aW9uTWFuYWdlclByb3h5KFdl
YlByb2Nlc3NQb29sKik7CiAKICAgICAvLyBXZWJDb250ZXh0U3VwcGxlbWVudAogICAgIHZvaWQg
cHJvY2Vzc1Bvb2xEZXN0cm95ZWQoKSBvdmVycmlkZTsKLSAgICB2b2lkIHByb2Nlc3NEaWRDbG9z
ZShXZWJQcm9jZXNzUHJveHkqKSBvdmVycmlkZTsKICAgICB2b2lkIHJlZldlYkNvbnRleHRTdXBw
bGVtZW50KCkgb3ZlcnJpZGU7CiAgICAgdm9pZCBkZXJlZldlYkNvbnRleHRTdXBwbGVtZW50KCkg
b3ZlcnJpZGU7CiAKICAgICAvLyBJUEM6Ok1lc3NhZ2VSZWNlaXZlcgogICAgIHZvaWQgZGlkUmVj
ZWl2ZU1lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwgSVBDOjpEZWNvZGVyJikgb3ZlcnJpZGU7CiAK
LSAgICBib29sIGlzVXBkYXRpbmcoKSBjb25zdCB7IHJldHVybiAhbV91cGRhdGVSZXF1ZXN0ZXJz
LmlzRW1wdHkoKTsgfQotICAgIGJvb2wgaXNIaWdoQWNjdXJhY3lFbmFibGVkKCkgY29uc3QgeyBy
ZXR1cm4gIW1faGlnaEFjY3VyYWN5UmVxdWVzdGVycy5pc0VtcHR5KCk7IH0KKyAgICAvLyBJUEMg
bWVzc2FnZXMuCisgICAgdm9pZCBzdGFydFVwZGF0aW5nKElQQzo6Q29ubmVjdGlvbiYsIGNvbnN0
IFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluJiwgV2ViUGFnZVByb3h5SWRlbnRpZmllciwgY29u
c3QgU3RyaW5nJiBhdXRob3JpemF0aW9uVG9rZW4sIGJvb2wgZW5hYmxlSGlnaEFjY3VyYWN5KTsK
KyAgICB2b2lkIHN0b3BVcGRhdGluZyhJUEM6OkNvbm5lY3Rpb24mLCBjb25zdCBXZWJDb3JlOjpS
ZWdpc3RyYWJsZURvbWFpbiYpOworICAgIHZvaWQgc2V0RW5hYmxlSGlnaEFjY3VyYWN5KElQQzo6
Q29ubmVjdGlvbiYsIGNvbnN0IFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluJiwgYm9vbCk7CisK
KyAgICB2b2lkIHN0YXJ0VXBkYXRpbmdXaXRoUHJveHkoV2ViUHJvY2Vzc1Byb3h5JiwgY29uc3Qg
V2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4mLCBXZWJQYWdlUHJveHlJZGVudGlmaWVyLCBjb25z
dCBTdHJpbmcmIGF1dGhvcml6YXRpb25Ub2tlbiwgYm9vbCBlbmFibGVIaWdoQWNjdXJhY3kpOwor
ICAgIHZvaWQgc3RvcFVwZGF0aW5nV2l0aFByb3h5KFdlYlByb2Nlc3NQcm94eSYsIGNvbnN0IFdl
YkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluJik7CisgICAgdm9pZCBzZXRFbmFibGVIaWdoQWNjdXJh
Y3lXaXRoUHJveHkoV2ViUHJvY2Vzc1Byb3h5JiwgY29uc3QgV2ViQ29yZTo6UmVnaXN0cmFibGVE
b21haW4mLCBib29sKTsKIAotICAgIHZvaWQgc3RhcnRVcGRhdGluZyhJUEM6OkNvbm5lY3Rpb24m
LCBXZWJQYWdlUHJveHlJZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIGF1dGhvcml6YXRpb25Ub2tl
bik7Ci0gICAgdm9pZCBzdG9wVXBkYXRpbmcoSVBDOjpDb25uZWN0aW9uJik7Ci0gICAgdm9pZCBy
ZW1vdmVSZXF1ZXN0ZXIoY29uc3QgSVBDOjpDb25uZWN0aW9uOjpDbGllbnQqKTsKLSAgICB2b2lk
IHNldEVuYWJsZUhpZ2hBY2N1cmFjeShJUEM6OkNvbm5lY3Rpb24mLCBib29sKTsKKyNpZiBQTEFU
Rk9STShJT1NfRkFNSUxZKQorICAgIC8vIENvcmVMb2NhdGlvbkdlb2xvY2F0aW9uUHJvdmlkZXI6
OkNsaWVudAorICAgIHZvaWQgcG9zaXRpb25DaGFuZ2VkKGNvbnN0IFN0cmluZyYgd2Vic2l0ZUlk
ZW50aWZpZXIsIFdlYkNvcmU6Okdlb2xvY2F0aW9uUG9zaXRpb25EYXRhJiYpIGZpbmFsOworICAg
IHZvaWQgZXJyb3JPY2N1cnJlZChjb25zdCBTdHJpbmcmIHdlYnNpdGVJZGVudGlmaWVyLCBjb25z
dCBTdHJpbmcmIGVycm9yTWVzc2FnZSkgZmluYWw7CisgICAgdm9pZCByZXNldEdlb2xvY2F0aW9u
KGNvbnN0IFN0cmluZyYgd2Vic2l0ZUlkZW50aWZpZXIpIGZpbmFsOworI2VuZGlmCiAKLSAgICBI
YXNoU2V0PGNvbnN0IElQQzo6Q29ubmVjdGlvbjo6Q2xpZW50Kj4gbV91cGRhdGVSZXF1ZXN0ZXJz
OwotICAgIEhhc2hTZXQ8Y29uc3QgSVBDOjpDb25uZWN0aW9uOjpDbGllbnQqPiBtX2hpZ2hBY2N1
cmFjeVJlcXVlc3RlcnM7CisgICAgc3RydWN0IFBlckRvbWFpbkRhdGE7CisgICAgYm9vbCBpc1Vw
ZGF0aW5nKGNvbnN0IFBlckRvbWFpbkRhdGEmKSBjb25zdDsKKyAgICBib29sIGlzSGlnaEFjY3Vy
YWN5RW5hYmxlZChjb25zdCBQZXJEb21haW5EYXRhJikgY29uc3Q7CisgICAgdm9pZCBwcm92aWRl
clN0YXJ0VXBkYXRpbmcoUGVyRG9tYWluRGF0YSYsIGNvbnN0IFdlYkNvcmU6OlJlZ2lzdHJhYmxl
RG9tYWluJik7CisgICAgdm9pZCBwcm92aWRlclN0b3BVcGRhdGluZyhQZXJEb21haW5EYXRhJik7
CisgICAgdm9pZCBwcm92aWRlclNldEVuYWJsZWRIaWdoQWNjdXJhY3koUGVyRG9tYWluRGF0YSYs
IGJvb2wgZW5hYmxlZCk7CiAKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8QVBJOjpHZW9sb2NhdGlvblBy
b3ZpZGVyPiBtX3Byb3ZpZGVyOwotICAgIHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6R2VvbG9jYXRp
b25Qb3NpdGlvbkRhdGE+IG1fbGFzdFBvc2l0aW9uOworICAgIEhhc2hNYXA8V2ViQ29yZTo6UmVn
aXN0cmFibGVEb21haW4sIHN0ZDo6dW5pcXVlX3B0cjxQZXJEb21haW5EYXRhPj4gbV9wZXJEb21h
aW5EYXRhOworICAgIHN0ZDo6dW5pcXVlX3B0cjxBUEk6Okdlb2xvY2F0aW9uUHJvdmlkZXI+IG1f
Y2xpZW50UHJvdmlkZXI7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkdlb2xvY2F0aW9uTWFuYWdlclByb3h5Lm1lc3Nh
Z2VzLmluIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViR2VvbG9jYXRpb25NYW5hZ2VyUHJv
eHkubWVzc2FnZXMuaW4KaW5kZXggZTVlOWMyN2QxNGE1ZmI3MjZmY2MyYzgxZmYzZTE2NWVhM2U4
NDBiZS4uOTA0MWE5MGMyNTBmOGFkZDY4YmIxM2IzYWJiNTRiZWI2NmNiMmQyNyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViR2VvbG9jYXRpb25NYW5hZ2VyUHJveHkubWVz
c2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViR2VvbG9jYXRpb25NYW5h
Z2VyUHJveHkubWVzc2FnZXMuaW4KQEAgLTIxLDcgKzIxLDcgQEAKICMgT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KIAog
bWVzc2FnZXMgLT4gV2ViR2VvbG9jYXRpb25NYW5hZ2VyUHJveHkgewotICAgIFN0YXJ0VXBkYXRp
bmcoV2ViS2l0OjpXZWJQYWdlUHJveHlJZGVudGlmaWVyIHBhZ2VQcm94eUlELCBTdHJpbmcgYXV0
aG9yaXphdGlvblRva2VuKSBXYW50c0Nvbm5lY3Rpb24KLSAgICBTdG9wVXBkYXRpbmcoKSBXYW50
c0Nvbm5lY3Rpb24KLSAgICBTZXRFbmFibGVIaWdoQWNjdXJhY3koYm9vbCBlbmFibGVkKSBXYW50
c0Nvbm5lY3Rpb24KKyAgICBTdGFydFVwZGF0aW5nKFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWlu
IHJlZ2lzdHJhYmxlRG9tYWluLCBXZWJLaXQ6OldlYlBhZ2VQcm94eUlkZW50aWZpZXIgcGFnZVBy
b3h5SUQsIFN0cmluZyBhdXRob3JpemF0aW9uVG9rZW4sIGJvb2wgZW5hYmxlSGlnaEFjY3VyYWN5
KSBXYW50c0Nvbm5lY3Rpb24KKyAgICBTdG9wVXBkYXRpbmcoV2ViQ29yZTo6UmVnaXN0cmFibGVE
b21haW4gcmVnaXN0cmFibGVEb21haW4pIFdhbnRzQ29ubmVjdGlvbgorICAgIFNldEVuYWJsZUhp
Z2hBY2N1cmFjeShXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiByZWdpc3RyYWJsZURvbWFpbiwg
Ym9vbCBlbmFibGVkKSBXYW50c0Nvbm5lY3Rpb24KIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L1dlYlByb2Nlc3NQb29sLmNwcAppbmRleCBmNjBkM2VjZDJjYTZmMGZjNzM2NzBjMzlkYTJhYjc2
MDAzNWYyZjc0Li5mYTE3NDJjZjMyZGE5OTUyNzMyM2RmYzdjOGJmMGE3OTA2MzA0MWZlIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5jcHAKKysrIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuY3BwCkBAIC00MzEsOSArNDMx
LDYgQEAgdm9pZCBXZWJQcm9jZXNzUG9vbDo6c2NyZWVuUHJvcGVydGllc1N0YXRlQ2hhbmdlZCgp
CiAKIHZvaWQgV2ViUHJvY2Vzc1Bvb2w6Om5ldHdvcmtQcm9jZXNzRGlkVGVybWluYXRlKE5ldHdv
cmtQcm9jZXNzUHJveHkmIG5ldHdvcmtQcm9jZXNzUHJveHksIE5ldHdvcmtQcm9jZXNzUHJveHk6
OlRlcm1pbmF0aW9uUmVhc29uIHJlYXNvbikKIHsKLSAgICBmb3IgKGF1dG8mIHN1cHBsZW1lbnQg
OiBtX3N1cHBsZW1lbnRzLnZhbHVlcygpKQotICAgICAgICBzdXBwbGVtZW50LT5wcm9jZXNzRGlk
Q2xvc2UoJm5ldHdvcmtQcm9jZXNzUHJveHkpOwotCiAgICAgaWYgKHJlYXNvbiA9PSBOZXR3b3Jr
UHJvY2Vzc1Byb3h5OjpUZXJtaW5hdGlvblJlYXNvbjo6Q3Jhc2gpCiAgICAgICAgIG1fY2xpZW50
Lm5ldHdvcmtQcm9jZXNzRGlkQ3Jhc2godGhpcyk7CiAKQEAgLTEwNTcsNyArMTA1NCw3IEBAIHZv
aWQgV2ViUHJvY2Vzc1Bvb2w6OmRpc2Nvbm5lY3RQcm9jZXNzKFdlYlByb2Nlc3NQcm94eSYgcHJv
Y2VzcykKICAgICBpZiAocHJvY2Vzcy5pc1J1bm5pbmdXb3JrZXJzKCkpCiAgICAgICAgIHJlbW92
ZUZyb21SZW1vdGVXb3JrZXJQcm9jZXNzZXMocHJvY2Vzcyk7CiAKLSAgICBzdGF0aWNfY2FzdDxX
ZWJDb250ZXh0U3VwcGxlbWVudCo+KHN1cHBsZW1lbnQ8V2ViR2VvbG9jYXRpb25NYW5hZ2VyUHJv
eHk+KCkpLT5wcm9jZXNzRGlkQ2xvc2UoJnByb2Nlc3MpOworICAgIHN1cHBsZW1lbnQ8V2ViR2Vv
bG9jYXRpb25NYW5hZ2VyUHJveHk+KCktPndlYlByb2Nlc3NJc0dvaW5nQXdheShwcm9jZXNzKTsK
IAogICAgIG1fcHJvY2Vzc2VzLnJlbW92ZUZpcnN0KHByb2Nlc3MpOwogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tHZW9sb2NhdGlvblByb3ZpZGVySU9TLm1tIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dLR2VvbG9jYXRpb25Qcm92aWRlcklPUy5tbQpp
bmRleCBmNWU5ZmQ3YmMzNDEyOTdhZjdiMjRlNjc0MTYzMzJjZDk2YWQ3MzljLi5lNjM4YWQ5YzRl
OGI3MzhiZjE2NTE0ZDcxOWRjMWJlOGE3NmI1OWQ0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9pb3MvV0tHZW9sb2NhdGlvblByb3ZpZGVySU9TLm1tCisrKyBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL2lvcy9XS0dlb2xvY2F0aW9uUHJvdmlkZXJJT1MubW0KQEAgLTUxLDcg
KzUxLDYgQEAKICNpbXBvcnQgPHd0Zi9VUkwuaD4KIAogLy8gRklYTUU6IFJlbW92ZSB1c2Ugb2Yg
V2ViS2l0MSBmcm9tIFdlYktpdDIKLSNpbXBvcnQgPFdlYktpdC9XZWJHZW9sb2NhdGlvbkNvcmVM
b2NhdGlvblByb3ZpZGVyLmg+CiAjaW1wb3J0IDxXZWJLaXQvV2ViQWxsb3dEZW55UG9saWN5TGlz
dGVuZXIuaD4KIAogQUxMT1dfREVQUkVDQVRFRF9ERUNMQVJBVElPTlNfQkVHSU4KQEAgLTU5LDkg
KzU4LDYgQEAgQUxMT1dfREVQUkVDQVRFRF9ERUNMQVJBVElPTlNfQkVHSU4KIEBpbnRlcmZhY2Ug
V0tHZW9sb2NhdGlvblByb3ZpZGVySU9TIChfV0tHZW9sb2NhdGlvbkNvcmVMb2NhdGlvbkxpc3Rl
bmVyKSA8X1dLR2VvbG9jYXRpb25Db3JlTG9jYXRpb25MaXN0ZW5lcj4KIEBlbmQKIAotQGludGVy
ZmFjZSBXS0xlZ2FjeUNvcmVMb2NhdGlvblByb3ZpZGVyIDogTlNPYmplY3Q8X1dLR2VvbG9jYXRp
b25Db3JlTG9jYXRpb25Qcm92aWRlciwgV2ViR2VvbG9jYXRpb25Db3JlTG9jYXRpb25VcGRhdGVM
aXN0ZW5lcj4KLUBlbmQKLQogQGludGVyZmFjZSBXS1dlYkFsbG93RGVueVBvbGljeUxpc3RlbmVy
IDogTlNPYmplY3Q8V2ViQWxsb3dEZW55UG9saWN5TGlzdGVuZXI+CiAtIChpZClpbml0V2l0aENv
bXBsZXRpb25IYW5kbGVyOihGdW5jdGlvbjx2b2lkKGJvb2wpPiYmKWNvbXBsZXRpb25IYW5kbGVy
OwogLSAodm9pZClkZW55T25seVRoaXNSZXF1ZXN0IE5PX1JFVFVSTl9EVUVfVE9fQVNTRVJUOwpA
QCAtMTQ2LDI1ICsxNDIsNDIgQEAgLSAoaWQpaW5pdFdpdGhQcm9jZXNzUG9vbDooV2ViS2l0OjpX
ZWJQcm9jZXNzUG9vbCYpcHJvY2Vzc1Bvb2wKICAgICBzZWxmID0gW3N1cGVyIGluaXRdOwogICAg
IGlmICghc2VsZikKICAgICAgICAgcmV0dXJuIG5pbDsKLSAgICBfZ2VvbG9jYXRpb25NYW5hZ2Vy
ID0gcHJvY2Vzc1Bvb2wuc3VwcGxlbWVudDxXZWJLaXQ6OldlYkdlb2xvY2F0aW9uTWFuYWdlclBy
b3h5PigpOwotICAgIFdLR2VvbG9jYXRpb25Qcm92aWRlclYxIHByb3ZpZGVyQ2FsbGJhY2sgPSB7
Ci0gICAgICAgIHsgMSwgc2VsZiB9LAotICAgICAgICBzdGFydFVwZGF0aW5nQ2FsbGJhY2ssCi0g
ICAgICAgIHN0b3BVcGRhdGluZ0NhbGxiYWNrLAotICAgICAgICBzZXRFbmFibGVIaWdoQWNjdXJh
Y3kKLSAgICB9OwotICAgIFdLR2VvbG9jYXRpb25NYW5hZ2VyU2V0UHJvdmlkZXIodG9BUEkoX2dl
b2xvY2F0aW9uTWFuYWdlci5nZXQoKSksICZwcm92aWRlckNhbGxiYWNrLmJhc2UpOwotICAgIF9j
b3JlTG9jYXRpb25Qcm92aWRlciA9IHdyYXBwZXIocHJvY2Vzc1Bvb2wpLl9jb3JlTG9jYXRpb25Q
cm92aWRlciA/OiBhZG9wdE5TKHN0YXRpY19jYXN0PGlkIDxfV0tHZW9sb2NhdGlvbkNvcmVMb2Nh
dGlvblByb3ZpZGVyPj4oW1tXS0xlZ2FjeUNvcmVMb2NhdGlvblByb3ZpZGVyIGFsbG9jXSBpbml0
XSkpOwotICAgIFtfY29yZUxvY2F0aW9uUHJvdmlkZXIgc2V0TGlzdGVuZXI6c2VsZl07CisKKyAg
ICAvLyBPbiBpT1MsIFdlYktpdCBub3JtYWxseSBwcm92aWRlcyB0aGUgbG9jYXRpb24uIEhvd2V2
ZXIsIGlmIHRoZSBjbGllbnQgc2V0cyBhIGNvcmVMb2NhdGlvblByb3ZpZGVyLCB0aGVuIHdlIHVz
ZSB0aGF0IG9uZSBpbnN0ZWFkLgorICAgIC8vIFRoaXMgaXMgdXNlZnVsIGZvciBXZWJLaXRUZXN0
UnVubmVyIHRvIHByb3ZpZGUgYSBkdW1teSBnZW9sb2NhdGlvbiBwcm92aWRlci4gSXQgaXMgYWxz
byB1c2VkIGJ5IGNlcnRhaW4gYXBwcyB0byBkZW55IGFsbAorICAgIC8vIGdlb2xvY2F0aW9uIGF1
dGhvcml6YXRpb24gYXMgYSB3YXkgdG8gZGlzYWJsZSBzdXBwb3J0IGZvciBnZW9sb2NhdGlvbi4K
KyAgICBpZiAod3JhcHBlcihwcm9jZXNzUG9vbCkuX2NvcmVMb2NhdGlvblByb3ZpZGVyKSB7Cisg
ICAgICAgIF9nZW9sb2NhdGlvbk1hbmFnZXIgPSBwcm9jZXNzUG9vbC5zdXBwbGVtZW50PFdlYktp
dDo6V2ViR2VvbG9jYXRpb25NYW5hZ2VyUHJveHk+KCk7CisgICAgICAgIFdLR2VvbG9jYXRpb25Q
cm92aWRlclYxIHByb3ZpZGVyQ2FsbGJhY2sgPSB7CisgICAgICAgICAgICB7IDEsIHNlbGYgfSwK
KyAgICAgICAgICAgIHN0YXJ0VXBkYXRpbmdDYWxsYmFjaywKKyAgICAgICAgICAgIHN0b3BVcGRh
dGluZ0NhbGxiYWNrLAorICAgICAgICAgICAgc2V0RW5hYmxlSGlnaEFjY3VyYWN5CisgICAgICAg
IH07CisgICAgICAgIFdLR2VvbG9jYXRpb25NYW5hZ2VyU2V0UHJvdmlkZXIodG9BUEkoX2dlb2xv
Y2F0aW9uTWFuYWdlci5nZXQoKSksICZwcm92aWRlckNhbGxiYWNrLmJhc2UpOworICAgICAgICBf
Y29yZUxvY2F0aW9uUHJvdmlkZXIgPSB3cmFwcGVyKHByb2Nlc3NQb29sKS5fY29yZUxvY2F0aW9u
UHJvdmlkZXI7CisgICAgICAgIFtfY29yZUxvY2F0aW9uUHJvdmlkZXIgc2V0TGlzdGVuZXI6c2Vs
Zl07CisgICAgfQogICAgIHJldHVybiBzZWxmOwogfQogCiAtICh2b2lkKWRlY2lkZVBvbGljeUZv
ckdlb2xvY2F0aW9uUmVxdWVzdEZyb21PcmlnaW46KFdlYktpdDo6RnJhbWVJbmZvRGF0YSYmKWZy
YW1lSW5mbyBjb21wbGV0aW9uSGFuZGxlcjooRnVuY3Rpb248dm9pZChib29sKT4mJiljb21wbGV0
aW9uSGFuZGxlciB2aWV3OihXS1dlYlZpZXcgKiljb250ZW50VmlldwogewotICAgIC8vIFN0ZXAg
MTogYXNrIHRoZSB1c2VyIGlmIHRoZSBhcHAgY2FuIHVzZSBHZW9sb2NhdGlvbi4KKyAgICBXZWJD
b3JlOjpSZWdpc3RyYWJsZURvbWFpbiByZWdpc3RyYWJsZURvbWFpbihmcmFtZUluZm8uc2VjdXJp
dHlPcmlnaW4pOwogICAgIEdlb2xvY2F0aW9uUmVxdWVzdERhdGEgZ2VvbG9jYXRpb25SZXF1ZXN0
RGF0YSB7IFtjb250ZW50VmlldyBVUkxdLCBXVEZNb3ZlKGZyYW1lSW5mbyksIFdURk1vdmUoY29t
cGxldGlvbkhhbmRsZXIpLCBjb250ZW50VmlldyB9OwogICAgIF9yZXF1ZXN0c1dhaXRpbmdGb3JD
b3JlTG9jYXRpb25BdXRob3JpemF0aW9uLmFwcGVuZChXVEZNb3ZlKGdlb2xvY2F0aW9uUmVxdWVz
dERhdGEpKTsKLSAgICBbX2NvcmVMb2NhdGlvblByb3ZpZGVyIHJlcXVlc3RHZW9sb2NhdGlvbkF1
dGhvcml6YXRpb25dOworICAgIGlmIChfY29yZUxvY2F0aW9uUHJvdmlkZXIpIHsKKyAgICAgICAg
Ly8gU3RlcCAxOiBhc2sgdGhlIHVzZXIgaWYgdGhlIGFwcCBjYW4gdXNlIEdlb2xvY2F0aW9uLgor
ICAgICAgICBbX2NvcmVMb2NhdGlvblByb3ZpZGVyIHJlcXVlc3RHZW9sb2NhdGlvbkF1dGhvcml6
YXRpb25dOworICAgIH0gZWxzZSB7CisgICAgICAgIC8vIFN0ZXAgMTogYXNrIENvcmVMb2NhdGlv
biBpZiB0aGUgYXBwIGNhbiB1c2UgR2VvbG9jYXRpb24uCisgICAgICAgIFdlYkNvcmU6OkNvcmVM
b2NhdGlvbkdlb2xvY2F0aW9uUHJvdmlkZXI6OnJlcXVlc3RBdXRob3JpemF0aW9uKHJlZ2lzdHJh
YmxlRG9tYWluLCBbc2VsZiwgc3Ryb25nU2VsZiA9IHJldGFpblB0cihzZWxmKV0oYm9vbCBhdXRo
b3JpemVkKSB7CisgICAgICAgICAgICBpZiAoYXV0aG9yaXplZCkKKyAgICAgICAgICAgICAgICBb
c2VsZiBnZW9sb2NhdGlvbkF1dGhvcml6YXRpb25HcmFudGVkXTsKKyAgICAgICAgICAgIGVsc2UK
KyAgICAgICAgICAgICAgICBbc2VsZiBnZW9sb2NhdGlvbkF1dGhvcml6YXRpb25EZW5pZWRdOwor
ICAgICAgICB9KTsKKyAgICB9CiB9CiBAZW5kCiAKQEAgLTE3NCw3ICsxODcsNyBAQCBAaW1wbGVt
ZW50YXRpb24gV0tHZW9sb2NhdGlvblByb3ZpZGVySU9TIChXZWJHZW9sb2NhdGlvbkNvcmVMb2Nh
dGlvblVwZGF0ZUxpc3RlbgogCiAtICh2b2lkKWdlb2xvY2F0aW9uQXV0aG9yaXphdGlvbkdyYW50
ZWQKIHsKLSAgICAvLyBTdGVwIDI6IGFzayB0aGUgdXNlciBpZiB0aGlzIHBhcnRpY3VsYXIgcGFn
ZSBjYW4gdXNlIGdlbG9jYXRpb24uCisgICAgLy8gU3RlcCAyOiBhc2sgdGhlIHVzZXIgaWYgdGhp
cyBwYXJ0aWN1bGFyIHBhZ2UgY2FuIHVzZSBnZW9sb2NhdGlvbi4KICAgICBpZiAoX3JlcXVlc3Rz
V2FpdGluZ0ZvckNvcmVMb2NhdGlvbkF1dGhvcml6YXRpb24uaXNFbXB0eSgpKQogICAgICAgICBy
ZXR1cm47CiAKQEAgLTIyNiw4MSArMjM5LDYgQEAgLSAodm9pZClyZXNldEdlb2xvY2F0aW9uCiAK
IEBlbmQKIAotIyBwcmFnbWEgbWFyayAtIEltcGxlbWVudGF0aW9uIG9mIFdLTGVnYWN5Q29yZUxv
Y2F0aW9uUHJvdmlkZXIKLQotQGltcGxlbWVudGF0aW9uIFdLTGVnYWN5Q29yZUxvY2F0aW9uUHJv
dmlkZXIgewotICAgIGlkIDxfV0tHZW9sb2NhdGlvbkNvcmVMb2NhdGlvbkxpc3RlbmVyPiBfbGlz
dGVuZXI7Ci0gICAgUmV0YWluUHRyPFdlYkdlb2xvY2F0aW9uQ29yZUxvY2F0aW9uUHJvdmlkZXI+
IF9wcm92aWRlcjsKLX0KLQotLy8gPF9XS0dlb2xvY2F0aW9uQ29yZUxvY2F0aW9uUHJvdmlkZXI+
IE1ldGhvZHMKLQotLSAodm9pZClzZXRMaXN0ZW5lcjooaWQ8X1dLR2VvbG9jYXRpb25Db3JlTG9j
YXRpb25MaXN0ZW5lcj4pbGlzdGVuZXIKLXsKLSAgICBBU1NFUlQobGlzdGVuZXIgJiYgIV9saXN0
ZW5lciAmJiAhX3Byb3ZpZGVyKTsKLSAgICBfbGlzdGVuZXIgPSBsaXN0ZW5lcjsKLSAgICBfcHJv
dmlkZXIgPSBhZG9wdE5TKFtbV2ViR2VvbG9jYXRpb25Db3JlTG9jYXRpb25Qcm92aWRlciBhbGxv
Y10gaW5pdFdpdGhMaXN0ZW5lcjpzZWxmXSk7Ci19Ci0KLS0gKHZvaWQpcmVxdWVzdEdlb2xvY2F0
aW9uQXV0aG9yaXphdGlvbgotewotICAgIEFTU0VSVChfcHJvdmlkZXIpOwotICAgIFtfcHJvdmlk
ZXIgcmVxdWVzdEdlb2xvY2F0aW9uQXV0aG9yaXphdGlvbl07Ci19Ci0KLS0gKHZvaWQpc3RhcnQK
LXsKLSAgICBBU1NFUlQoX3Byb3ZpZGVyKTsKLSAgICBbX3Byb3ZpZGVyIHN0YXJ0XTsKLX0KLQot
LSAodm9pZClzdG9wCi17Ci0gICAgQVNTRVJUKF9wcm92aWRlcik7Ci0gICAgW19wcm92aWRlciBz
dG9wXTsKLX0KLQotLSAodm9pZClzZXRFbmFibGVIaWdoQWNjdXJhY3k6KEJPT0wpZmxhZwotewot
ICAgIEFTU0VSVChfcHJvdmlkZXIpOwotICAgIFtfcHJvdmlkZXIgc2V0RW5hYmxlSGlnaEFjY3Vy
YWN5OmZsYWddOwotfQotCi0vLyA8V2ViR2VvbG9jYXRpb25Db3JlTG9jYXRpb25VcGRhdGVMaXN0
ZW5lcj4gTWV0aG9kcwotCi0tICh2b2lkKWdlb2xvY2F0aW9uQXV0aG9yaXphdGlvbkdyYW50ZWQK
LXsKLSAgICBBU1NFUlQoX2xpc3RlbmVyKTsKLSAgICBbX2xpc3RlbmVyIGdlb2xvY2F0aW9uQXV0
aG9yaXphdGlvbkdyYW50ZWRdOwotfQotCi0tICh2b2lkKWdlb2xvY2F0aW9uQXV0aG9yaXphdGlv
bkRlbmllZAotewotICAgIEFTU0VSVChfbGlzdGVuZXIpOwotICAgIFtfbGlzdGVuZXIgZ2VvbG9j
YXRpb25BdXRob3JpemF0aW9uRGVuaWVkXTsKLX0KLQotLSAodm9pZClwb3NpdGlvbkNoYW5nZWQ6
KFdlYkNvcmU6Okdlb2xvY2F0aW9uUG9zaXRpb25EYXRhJiYpY29yZVBvc2l0aW9uCi17Ci0gICAg
QVNTRVJUKF9saXN0ZW5lcik7Ci0gICAgYXV0byBwb3NpdGlvbiA9IFdlYktpdDo6V2ViR2VvbG9j
YXRpb25Qb3NpdGlvbjo6Y3JlYXRlKFdURk1vdmUoY29yZVBvc2l0aW9uKSk7Ci0gICAgW19saXN0
ZW5lciBwb3NpdGlvbkNoYW5nZWQ6d3JhcHBlcihwb3NpdGlvbi5nZXQoKSldOwotfQotCi0tICh2
b2lkKWVycm9yT2NjdXJyZWQ6KE5TU3RyaW5nICopZXJyb3JNZXNzYWdlCi17Ci0gICAgQVNTRVJU
KF9saXN0ZW5lcik7Ci0gICAgW19saXN0ZW5lciBlcnJvck9jY3VycmVkOmVycm9yTWVzc2FnZV07
Ci19Ci0KLS0gKHZvaWQpcmVzZXRHZW9sb2NhdGlvbgotewotICAgIEFTU0VSVChfbGlzdGVuZXIp
OwotICAgIFtfbGlzdGVuZXIgcmVzZXRHZW9sb2NhdGlvbl07Ci19Ci0KLUBlbmQKLQogIyBwcmFn
bWEgbWFyayAtIEltcGxlbWVudGF0aW9uIG9mIFdLV2ViQWxsb3dEZW55UG9saWN5TGlzdGVuZXIK
IEBpbXBsZW1lbnRhdGlvbiBXS1dlYkFsbG93RGVueVBvbGljeUxpc3RlbmVyIHsKICAgICBGdW5j
dGlvbjx2b2lkKGJvb2wpPiBfY29tcGxldGlvbkhhbmRsZXI7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dlYktpdC9X
ZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCAxZWM4YjJiODVjZTFlNTY0Mzdm
MmVmZDFjNDRjMDY5MTYwNjkxOTMwLi5jYzI5NjA5N2E4NzYzOGZhNmVmM2U4NjBiNzgzMmVhZjhl
YjllZGJhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVj
dC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2oKQEAgLTQzMTksNiArNDMxOSw3IEBACiAJCTQ2Q0UzQjEwMjNEOEM4M0QwMDE2QTk2QSAv
KiBXZWJCYWNrRm9yd2FyZExpc3RDb3VudHMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gV2ViQmFja0ZvcndhcmRMaXN0Q291bnRzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTQ2RDQ4RkNDMjc5OUQ3REQwMDdEMjAxNCAvKiBXZWJTaGFyZWRXb3JrZXJTZXJ2ZXJU
b0NvbnRleHRDb25uZWN0aW9uLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdlYlNoYXJlZFdvcmtl
clNlcnZlclRvQ29udGV4dENvbm5lY3Rpb24uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQk0NkQ0OEZDRDI3OTlEN0RFMDA3RDIwMTQgLyogV2ViU2hhcmVkV29ya2VyU2VydmVyVG9D
b250ZXh0Q29ubmVjdGlvbi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJTaGFyZWRXb3JrZXJTZXJ2ZXJU
b0NvbnRleHRDb25uZWN0aW9uLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTQ2REEy
ODU3MjdCNzNFNzYwMDg5RDMzOSAvKiBXZWJHZW9sb2NhdGlvbk1hbmFnZXJQcm94eUNvY29hLmNw
cCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdlYkdlb2xvY2F0aW9uTWFuYWdlclByb3h5Q29jb2EuY3Bw
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0NkRGMDYzOTFGMzkwNUU1MDAxOTgwQkIg
LyogTmV0d29ya0NPUlNQcmVmbGlnaHRDaGVja2VyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLmNwcDsgcGF0aCA9IE5ldHdvcmtDT1JTUHJlZmxpZ2h0Q2hlY2tlci5jcHA7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQ2REYwNjNBMUYzOTA1RTUwMDE5ODBCQiAvKiBOZXR3b3Jr
Q09SU1ByZWZsaWdodENoZWNrZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
TmV0d29ya0NPUlNQcmVmbGlnaHRDaGVja2VyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCTQ2RTk3NjBBMjc1N0Y2QzkwMEFDREQzNyAvKiBXZWJCcm9hZGNhc3RDaGFubmVsUmVnaXN0
cnkubWVzc2FnZXMuaW4gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gV2ViQnJvYWRjYXN0Q2hhbm5l
bFJlZ2lzdHJ5Lm1lc3NhZ2VzLmluOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtNzYx
MSw2ICs3NjEyLDcgQEAKIAkJCQk1MkQ1QTFBQTFDNTc0OTRFMDBERTM0QTMgLyogVmlkZW9GdWxs
c2NyZWVuTWFuYWdlclByb3h5LmggKi8sCiAJCQkJNTJENUExQUIxQzU3NDk0RTAwREUzNEEzIC8q
IFZpZGVvRnVsbHNjcmVlbk1hbmFnZXJQcm94eS5tZXNzYWdlcy5pbiAqLywKIAkJCQk1MkQ1QTFB
QzFDNTc0OTRFMDBERTM0QTMgLyogVmlkZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5Lm1tICovLAor
CQkJCTQ2REEyODU3MjdCNzNFNzYwMDg5RDMzOSAvKiBXZWJHZW9sb2NhdGlvbk1hbmFnZXJQcm94
eUNvY29hLmNwcCAqLywKIAkJCQlDMThGM0ExMzI1NjMzMkE2MDA3OTdFNjYgLyogV2ViSW5zcGVj
dG9yUHJlZmVyZW5jZU9ic2VydmVyLmggKi8sCiAJCQkJQzE4RjNBMTQyNTYzMzM0MzAwNzk3RTY2
IC8qIFdlYkluc3BlY3RvclByZWZlcmVuY2VPYnNlcnZlci5tbSAqLywKIAkJCQlDREYxQjkxOTI2
NzAyMUQ2MDAwN0VDMTAgLyogV2ViS2l0U3dpZnRTb2Z0TGluay5oICovLApAQCAtMTM0ODYsNiAr
MTM0ODgsNyBAQAogCQkJCUUxOEU2OTE4MTY5QjY2N0IwMDlCNjY3MCAvKiBTZWNJdGVtU2hpbVBy
b3h5TWVzc2FnZXMuaCBpbiBIZWFkZXJzICovLAogCQkJCTU3MEFCOEYzMjBBRTNCRDcwMEI4QkU4
NyAvKiBTZWNLZXlQcm94eVN0b3JlLmggaW4gSGVhZGVycyAqLywKIAkJCQk1MTREOUY1NzE5MTE5
RDM1MDAwMDYzQTcgLyogU2VydmljZXNDb250cm9sbGVyLmggaW4gSGVhZGVycyAqLywKKwkJCQk1
MTY0NjU4MDI3QTlDNzc0MDBFMUYyQkEgLyogU2VydmljZVdvcmtlck5vdGlmaWNhdGlvbkhhbmRs
ZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTFBRkRFNjVBMTk1NEE0MkIwMEM0OEZGQSAvKiBTZXNz
aW9uU3RhdGUuaCBpbiBIZWFkZXJzICovLAogCQkJCTFBMDAyRDQ5MTk2QjM0NUQwMEI5QUQ0NCAv
KiBTZXNzaW9uU3RhdGVDb2RpbmcuaCBpbiBIZWFkZXJzICovLAogCQkJCTkzRTc5OUNFMjc2MDQ5
N0IwMDc0MDA4QSAvKiBTZXNzaW9uU3RvcmFnZU1hbmFnZXIuaCBpbiBIZWFkZXJzICovLApAQCAt
MTM5MzQsNyArMTM5MzcsNiBAQAogCQkJCUJDNEE2Mjk3MTQ3MzEzQTAwMDZDNjgxQSAvKiBXS0Nv
bm5lY3Rpb25SZWYuaCBpbiBIZWFkZXJzICovLAogCQkJCUU1OTZERDZBMjUxRTcxRDQwMEMyNzVB
NyAvKiBXS0NvbnRhY3RQaWNrZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTVDRDI4NjU0MUU3MjM1
QjEwMDk0RkRDOCAvKiBXS0NvbnRlbnRSdWxlTGlzdC5oIGluIEhlYWRlcnMgKi8sCi0JCQkJNTE2
NDY1ODAyN0E5Qzc3NDAwRTFGMkJBIC8qIFNlcnZpY2VXb3JrZXJOb3RpZmljYXRpb25IYW5kbGVy
LmggaW4gSGVhZGVycyAqLywKIAkJCQk1Q0QyODY1NTFFNzIzNUI4MDA5NEZEQzggLyogV0tDb250
ZW50UnVsZUxpc3RJbnRlcm5hbC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNUM1MTM5REIyNTkyN0Q4
MDAwOUMzRTMwIC8qIFdLQ29udGVudFJ1bGVMaXN0UHJpdmF0ZS5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJNUNEMjg2NTExRTcyMzU5OTAwOTRGREM4IC8qIFdLQ29udGVudFJ1bGVMaXN0U3RvcmUuaCBp
biBIZWFkZXJzICovLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dlb2xv
Y2F0aW9uL1dlYkdlb2xvY2F0aW9uTWFuYWdlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvR2VvbG9jYXRpb24vV2ViR2VvbG9jYXRpb25NYW5hZ2VyLmNwcAppbmRleCA1YTljOWY0ZDJh
MWNkNjZhNGI2NzU5YjU5Mzg3ZWEyY2Y1NWIyYWE4Li4yOGVjYzhjYmZjNzVhMDU3MDUyYjM2ZjRk
NjY1MzE2NzlkYzQ2NGFlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR2Vv
bG9jYXRpb24vV2ViR2VvbG9jYXRpb25NYW5hZ2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvR2VvbG9jYXRpb24vV2ViR2VvbG9jYXRpb25NYW5hZ2VyLmNwcApAQCAtMzksNiAr
MzksMTQgQEAKIG5hbWVzcGFjZSBXZWJLaXQgewogdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAK
K3N0YXRpYyBSZWdpc3RyYWJsZURvbWFpbiByZWdpc3RyYWJsZURvbWFpbkZvclBhZ2UoV2ViUGFn
ZSYgcGFnZSkKK3sKKyAgICBhdXRvKiBkb2N1bWVudCA9IHBhZ2UuY29yZVBhZ2UoKSA/IHBhZ2Uu
Y29yZVBhZ2UoKS0+bWFpbkZyYW1lKCkuZG9jdW1lbnQoKSA6IG51bGxwdHI7CisgICAgaWYgKCFk
b2N1bWVudCkKKyAgICAgICAgcmV0dXJuIHsgfTsKKyAgICByZXR1cm4geyBkb2N1bWVudC0+dXJs
KCkgfTsKK30KKwogY29uc3QgY2hhciogV2ViR2VvbG9jYXRpb25NYW5hZ2VyOjpzdXBwbGVtZW50
TmFtZSgpCiB7CiAgICAgcmV0dXJuICJXZWJHZW9sb2NhdGlvbk1hbmFnZXIiOwpAQCAtNTAsODgg
KzU4LDE0MCBAQCBXZWJHZW9sb2NhdGlvbk1hbmFnZXI6OldlYkdlb2xvY2F0aW9uTWFuYWdlcihX
ZWJQcm9jZXNzJiBwcm9jZXNzKQogICAgIG1fcHJvY2Vzcy5hZGRNZXNzYWdlUmVjZWl2ZXIoTWVz
c2FnZXM6OldlYkdlb2xvY2F0aW9uTWFuYWdlcjo6bWVzc2FnZVJlY2VpdmVyTmFtZSgpLCAqdGhp
cyk7CiB9CiAKLXZvaWQgV2ViR2VvbG9jYXRpb25NYW5hZ2VyOjpyZWdpc3RlcldlYlBhZ2UoV2Vi
UGFnZSYgcGFnZSwgY29uc3QgU3RyaW5nJiBhdXRob3JpemF0aW9uVG9rZW4pCi17Ci0gICAgYm9v
bCB3YXNVcGRhdGluZyA9IGlzVXBkYXRpbmcoKTsKK1dlYkdlb2xvY2F0aW9uTWFuYWdlcjo6fldl
Ykdlb2xvY2F0aW9uTWFuYWdlcigpID0gZGVmYXVsdDsKIAotICAgIG1fcGFnZVNldC5hZGQocGFn
ZSk7Cit2b2lkIFdlYkdlb2xvY2F0aW9uTWFuYWdlcjo6cmVnaXN0ZXJXZWJQYWdlKFdlYlBhZ2Um
IHBhZ2UsIGNvbnN0IFN0cmluZyYgYXV0aG9yaXphdGlvblRva2VuLCBib29sIG5lZWRzSGlnaEFj
Y3VyYWN5KQoreworICAgIGF1dG8gcmVnaXN0cmFibGVEb21haW4gPSByZWdpc3RyYWJsZURvbWFp
bkZvclBhZ2UocGFnZSk7CisgICAgaWYgKHJlZ2lzdHJhYmxlRG9tYWluLnN0cmluZygpLmlzRW1w
dHkoKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgYXV0byYgcGFnZVNldHMgPSBtX3BhZ2VTZXRz
LmFkZChyZWdpc3RyYWJsZURvbWFpbiwgUGFnZVNldHMoKSkuaXRlcmF0b3ItPnZhbHVlOworICAg
IGJvb2wgd2FzVXBkYXRpbmcgPSBpc1VwZGF0aW5nKHBhZ2VTZXRzKTsKKyAgICBib29sIGhpZ2hB
Y2N1cmFjeVdhc0VuYWJsZWQgPSBpc0hpZ2hBY2N1cmFjeUVuYWJsZWQocGFnZVNldHMpOworCisg
ICAgcGFnZVNldHMucGFnZVNldC5hZGQocGFnZSk7CisgICAgaWYgKG5lZWRzSGlnaEFjY3VyYWN5
KQorICAgICAgICBwYWdlU2V0cy5oaWdoQWNjdXJhY3lQYWdlU2V0LmFkZChwYWdlKTsKKyAgICBt
X3BhZ2VUb1JlZ2lzdHJhYmxlRG9tYWluLmFkZCgmcGFnZSwgcmVnaXN0cmFibGVEb21haW4pOwor
CisgICAgaWYgKCF3YXNVcGRhdGluZykgeworICAgICAgICBtX3Byb2Nlc3MucGFyZW50UHJvY2Vz
c0Nvbm5lY3Rpb24oKS0+c2VuZChNZXNzYWdlczo6V2ViR2VvbG9jYXRpb25NYW5hZ2VyUHJveHk6
OlN0YXJ0VXBkYXRpbmcocmVnaXN0cmFibGVEb21haW4sIHBhZ2Uud2ViUGFnZVByb3h5SWRlbnRp
ZmllcigpLCBhdXRob3JpemF0aW9uVG9rZW4sIG5lZWRzSGlnaEFjY3VyYWN5KSwgMCk7CisgICAg
ICAgIHJldHVybjsKKyAgICB9CiAKLSAgICBpZiAoIXdhc1VwZGF0aW5nKQotICAgICAgICBtX3By
b2Nlc3MucGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+c2VuZChNZXNzYWdlczo6V2ViR2VvbG9j
YXRpb25NYW5hZ2VyUHJveHk6OlN0YXJ0VXBkYXRpbmcocGFnZS53ZWJQYWdlUHJveHlJZGVudGlm
aWVyKCksIGF1dGhvcml6YXRpb25Ub2tlbiksIDApOworICAgIGJvb2wgaGlnaEFjY3VyYWN5U2hv
dWxkQmVFbmFibGVkID0gaXNIaWdoQWNjdXJhY3lFbmFibGVkKHBhZ2VTZXRzKTsKKyAgICBpZiAo
aGlnaEFjY3VyYWN5V2FzRW5hYmxlZCAhPSBoaWdoQWNjdXJhY3lTaG91bGRCZUVuYWJsZWQpCisg
ICAgICAgIG1fcHJvY2Vzcy5wYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpLT5zZW5kKE1lc3NhZ2Vz
OjpXZWJHZW9sb2NhdGlvbk1hbmFnZXJQcm94eTo6U2V0RW5hYmxlSGlnaEFjY3VyYWN5KHJlZ2lz
dHJhYmxlRG9tYWluLCBoaWdoQWNjdXJhY3lTaG91bGRCZUVuYWJsZWQpLCAwKTsKIH0KIAogdm9p
ZCBXZWJHZW9sb2NhdGlvbk1hbmFnZXI6OnVucmVnaXN0ZXJXZWJQYWdlKFdlYlBhZ2UmIHBhZ2Up
CiB7Ci0gICAgYm9vbCBoaWdoQWNjdXJhY3lXYXNFbmFibGVkID0gaXNIaWdoQWNjdXJhY3lFbmFi
bGVkKCk7CisgICAgYXV0byByZWdpc3RyYWJsZURvbWFpbiA9IG1fcGFnZVRvUmVnaXN0cmFibGVE
b21haW4udGFrZSgmcGFnZSk7CisgICAgaWYgKHJlZ2lzdHJhYmxlRG9tYWluLnN0cmluZygpLmlz
RW1wdHkoKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgYXV0byBpdCA9IG1fcGFnZVNldHMuZmlu
ZChyZWdpc3RyYWJsZURvbWFpbik7CisgICAgaWYgKGl0ID09IG1fcGFnZVNldHMuZW5kKCkpCisg
ICAgICAgIHJldHVybjsKIAotICAgIG1fcGFnZVNldC5yZW1vdmUocGFnZSk7Ci0gICAgbV9oaWdo
QWNjdXJhY3lQYWdlU2V0LnJlbW92ZShwYWdlKTsKKyAgICBhdXRvJiBwYWdlU2V0cyA9IGl0LT52
YWx1ZTsKKyAgICBib29sIGhpZ2hBY2N1cmFjeVdhc0VuYWJsZWQgPSBpc0hpZ2hBY2N1cmFjeUVu
YWJsZWQocGFnZVNldHMpOwogCi0gICAgaWYgKCFpc1VwZGF0aW5nKCkpCi0gICAgICAgIG1fcHJv
Y2Vzcy5wYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpLT5zZW5kKE1lc3NhZ2VzOjpXZWJHZW9sb2Nh
dGlvbk1hbmFnZXJQcm94eTo6U3RvcFVwZGF0aW5nKCksIDApOworICAgIHBhZ2VTZXRzLnBhZ2VT
ZXQucmVtb3ZlKHBhZ2UpOworICAgIHBhZ2VTZXRzLmhpZ2hBY2N1cmFjeVBhZ2VTZXQucmVtb3Zl
KHBhZ2UpOworCisgICAgaWYgKCFpc1VwZGF0aW5nKHBhZ2VTZXRzKSkKKyAgICAgICAgbV9wcm9j
ZXNzLnBhcmVudFByb2Nlc3NDb25uZWN0aW9uKCktPnNlbmQoTWVzc2FnZXM6OldlYkdlb2xvY2F0
aW9uTWFuYWdlclByb3h5OjpTdG9wVXBkYXRpbmcocmVnaXN0cmFibGVEb21haW4pLCAwKTsKICAg
ICBlbHNlIHsKLSAgICAgICAgYm9vbCBoaWdoQWNjdXJhY3lTaG91bGRCZUVuYWJsZWQgPSBpc0hp
Z2hBY2N1cmFjeUVuYWJsZWQoKTsKKyAgICAgICAgYm9vbCBoaWdoQWNjdXJhY3lTaG91bGRCZUVu
YWJsZWQgPSBpc0hpZ2hBY2N1cmFjeUVuYWJsZWQocGFnZVNldHMpOwogICAgICAgICBpZiAoaGln
aEFjY3VyYWN5V2FzRW5hYmxlZCAhPSBoaWdoQWNjdXJhY3lTaG91bGRCZUVuYWJsZWQpCi0gICAg
ICAgICAgICBtX3Byb2Nlc3MucGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+c2VuZChNZXNzYWdl
czo6V2ViR2VvbG9jYXRpb25NYW5hZ2VyUHJveHk6OlNldEVuYWJsZUhpZ2hBY2N1cmFjeShoaWdo
QWNjdXJhY3lTaG91bGRCZUVuYWJsZWQpLCAwKTsKKyAgICAgICAgICAgIG1fcHJvY2Vzcy5wYXJl
bnRQcm9jZXNzQ29ubmVjdGlvbigpLT5zZW5kKE1lc3NhZ2VzOjpXZWJHZW9sb2NhdGlvbk1hbmFn
ZXJQcm94eTo6U2V0RW5hYmxlSGlnaEFjY3VyYWN5KHJlZ2lzdHJhYmxlRG9tYWluLCBoaWdoQWNj
dXJhY3lTaG91bGRCZUVuYWJsZWQpLCAwKTsKICAgICB9CisKKyAgICBpZiAocGFnZVNldHMucGFn
ZVNldC5jb21wdXRlc0VtcHR5KCkgJiYgcGFnZVNldHMuaGlnaEFjY3VyYWN5UGFnZVNldC5jb21w
dXRlc0VtcHR5KCkpCisgICAgICAgIG1fcGFnZVNldHMucmVtb3ZlKGl0KTsKIH0KIAogdm9pZCBX
ZWJHZW9sb2NhdGlvbk1hbmFnZXI6OnNldEVuYWJsZUhpZ2hBY2N1cmFjeUZvclBhZ2UoV2ViUGFn
ZSYgcGFnZSwgYm9vbCBlbmFibGVkKQogewotICAgIGJvb2wgaGlnaEFjY3VyYWN5V2FzRW5hYmxl
ZCA9IGlzSGlnaEFjY3VyYWN5RW5hYmxlZCgpOworICAgIGF1dG8gcmVnaXN0cmFibGVEb21haW4g
PSBtX3BhZ2VUb1JlZ2lzdHJhYmxlRG9tYWluLmdldCgmcGFnZSk7CisgICAgaWYgKHJlZ2lzdHJh
YmxlRG9tYWluLnN0cmluZygpLmlzRW1wdHkoKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgYXV0
byBpdCA9IG1fcGFnZVNldHMuZmluZChyZWdpc3RyYWJsZURvbWFpbik7CisgICAgQVNTRVJUKGl0
ICE9IG1fcGFnZVNldHMuZW5kKCkpOworICAgIGlmIChpdCA9PSBtX3BhZ2VTZXRzLmVuZCgpKQor
ICAgICAgICByZXR1cm47CisKKyAgICBhdXRvJiBwYWdlU2V0cyA9IGl0LT52YWx1ZTsKKyAgICBi
b29sIGhpZ2hBY2N1cmFjeVdhc0VuYWJsZWQgPSBpc0hpZ2hBY2N1cmFjeUVuYWJsZWQocGFnZVNl
dHMpOwogCiAgICAgaWYgKGVuYWJsZWQpCi0gICAgICAgIG1faGlnaEFjY3VyYWN5UGFnZVNldC5h
ZGQocGFnZSk7CisgICAgICAgIHBhZ2VTZXRzLmhpZ2hBY2N1cmFjeVBhZ2VTZXQuYWRkKHBhZ2Up
OwogICAgIGVsc2UKLSAgICAgICAgbV9oaWdoQWNjdXJhY3lQYWdlU2V0LnJlbW92ZShwYWdlKTsK
KyAgICAgICAgcGFnZVNldHMuaGlnaEFjY3VyYWN5UGFnZVNldC5yZW1vdmUocGFnZSk7CiAKLSAg
ICBib29sIGhpZ2hBY2N1cmFjeVNob3VsZEJlRW5hYmxlZCA9IGlzSGlnaEFjY3VyYWN5RW5hYmxl
ZCgpOwotICAgIGlmIChoaWdoQWNjdXJhY3lXYXNFbmFibGVkICE9IGhpZ2hBY2N1cmFjeVNob3Vs
ZEJlRW5hYmxlZCkKLSAgICAgICAgbV9wcm9jZXNzLnBhcmVudFByb2Nlc3NDb25uZWN0aW9uKCkt
PnNlbmQoTWVzc2FnZXM6OldlYkdlb2xvY2F0aW9uTWFuYWdlclByb3h5OjpTZXRFbmFibGVIaWdo
QWNjdXJhY3koaGlnaEFjY3VyYWN5U2hvdWxkQmVFbmFibGVkKSwgMCk7CisgICAgYm9vbCBoaWdo
QWNjdXJhY3lTaG91bGRCZUVuYWJsZWQgPSBpc0hpZ2hBY2N1cmFjeUVuYWJsZWQocGFnZVNldHMp
OworICAgIGlmIChoaWdoQWNjdXJhY3lXYXNFbmFibGVkICE9IGlzSGlnaEFjY3VyYWN5RW5hYmxl
ZChwYWdlU2V0cykpCisgICAgICAgIG1fcHJvY2Vzcy5wYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigp
LT5zZW5kKE1lc3NhZ2VzOjpXZWJHZW9sb2NhdGlvbk1hbmFnZXJQcm94eTo6U2V0RW5hYmxlSGln
aEFjY3VyYWN5KHJlZ2lzdHJhYmxlRG9tYWluLCBoaWdoQWNjdXJhY3lTaG91bGRCZUVuYWJsZWQp
LCAwKTsKIH0KIAotdm9pZCBXZWJHZW9sb2NhdGlvbk1hbmFnZXI6OmRpZENoYW5nZVBvc2l0aW9u
KGNvbnN0IEdlb2xvY2F0aW9uUG9zaXRpb25EYXRhJiBwb3NpdGlvbikKK3ZvaWQgV2ViR2VvbG9j
YXRpb25NYW5hZ2VyOjpkaWRDaGFuZ2VQb3NpdGlvbihjb25zdCBXZWJDb3JlOjpSZWdpc3RyYWJs
ZURvbWFpbiYgcmVnaXN0cmFibGVEb21haW4sIGNvbnN0IEdlb2xvY2F0aW9uUG9zaXRpb25EYXRh
JiBwb3NpdGlvbikKIHsKICNpZiBFTkFCTEUoR0VPTE9DQVRJT04pCi0gICAgZm9yIChhdXRvJiBw
YWdlIDogY29weVRvVmVjdG9yKG1fcGFnZVNldCkpIHsKLSAgICAgICAgaWYgKHBhZ2UtPmNvcmVQ
YWdlKCkpCi0gICAgICAgICAgICBHZW9sb2NhdGlvbkNvbnRyb2xsZXI6OmZyb20ocGFnZS0+Y29y
ZVBhZ2UoKSktPnBvc2l0aW9uQ2hhbmdlZChwb3NpdGlvbik7CisgICAgaWYgKGF1dG8gaXQgPSBt
X3BhZ2VTZXRzLmZpbmQocmVnaXN0cmFibGVEb21haW4pOyBpdCAhPSBtX3BhZ2VTZXRzLmVuZCgp
KSB7CisgICAgICAgIGZvciAoYXV0byYgcGFnZSA6IGNvcHlUb1ZlY3RvcihpdC0+dmFsdWUucGFn
ZVNldCkpIHsKKyAgICAgICAgICAgIGlmIChwYWdlLT5jb3JlUGFnZSgpKQorICAgICAgICAgICAg
ICAgIEdlb2xvY2F0aW9uQ29udHJvbGxlcjo6ZnJvbShwYWdlLT5jb3JlUGFnZSgpKS0+cG9zaXRp
b25DaGFuZ2VkKHBvc2l0aW9uKTsKKyAgICAgICAgfQogICAgIH0KICNlbHNlCisgICAgVU5VU0VE
X1BBUkFNKHJlZ2lzdHJhYmxlRG9tYWluKTsKICAgICBVTlVTRURfUEFSQU0ocG9zaXRpb24pOwog
I2VuZGlmIC8vIEVOQUJMRShHRU9MT0NBVElPTikKIH0KIAotdm9pZCBXZWJHZW9sb2NhdGlvbk1h
bmFnZXI6OmRpZEZhaWxUb0RldGVybWluZVBvc2l0aW9uKGNvbnN0IFN0cmluZyYgZXJyb3JNZXNz
YWdlKQordm9pZCBXZWJHZW9sb2NhdGlvbk1hbmFnZXI6OmRpZEZhaWxUb0RldGVybWluZVBvc2l0
aW9uKGNvbnN0IFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluJiByZWdpc3RyYWJsZURvbWFpbiwg
Y29uc3QgU3RyaW5nJiBlcnJvck1lc3NhZ2UpCiB7CiAjaWYgRU5BQkxFKEdFT0xPQ0FUSU9OKQot
ICAgIC8vIEZJWE1FOiBBZGQgbG9jYWxpemVkIGVycm9yIHN0cmluZy4KLSAgICBhdXRvIGVycm9y
ID0gR2VvbG9jYXRpb25FcnJvcjo6Y3JlYXRlKEdlb2xvY2F0aW9uRXJyb3I6OlBvc2l0aW9uVW5h
dmFpbGFibGUsIGVycm9yTWVzc2FnZSk7Ci0KLSAgICBmb3IgKGF1dG8mIHBhZ2UgOiBjb3B5VG9W
ZWN0b3IobV9wYWdlU2V0KSkgewotICAgICAgICBpZiAocGFnZS0+Y29yZVBhZ2UoKSkKLSAgICAg
ICAgICAgIEdlb2xvY2F0aW9uQ29udHJvbGxlcjo6ZnJvbShwYWdlLT5jb3JlUGFnZSgpKS0+ZXJy
b3JPY2N1cnJlZChlcnJvci5nZXQoKSk7CisgICAgaWYgKGF1dG8gaXQgPSBtX3BhZ2VTZXRzLmZp
bmQocmVnaXN0cmFibGVEb21haW4pOyBpdCAhPSBtX3BhZ2VTZXRzLmVuZCgpKSB7CisgICAgICAg
IC8vIEZJWE1FOiBBZGQgbG9jYWxpemVkIGVycm9yIHN0cmluZy4KKyAgICAgICAgYXV0byBlcnJv
ciA9IEdlb2xvY2F0aW9uRXJyb3I6OmNyZWF0ZShHZW9sb2NhdGlvbkVycm9yOjpQb3NpdGlvblVu
YXZhaWxhYmxlLCBlcnJvck1lc3NhZ2UpOworCisgICAgICAgIGZvciAoYXV0byYgcGFnZSA6IGNv
cHlUb1ZlY3RvcihpdC0+dmFsdWUucGFnZVNldCkpIHsKKyAgICAgICAgICAgIGlmIChwYWdlLT5j
b3JlUGFnZSgpKQorICAgICAgICAgICAgICAgIEdlb2xvY2F0aW9uQ29udHJvbGxlcjo6ZnJvbShw
YWdlLT5jb3JlUGFnZSgpKS0+ZXJyb3JPY2N1cnJlZChlcnJvci5nZXQoKSk7CisgICAgICAgIH0K
ICAgICB9CiAjZWxzZQorICAgIFVOVVNFRF9QQVJBTShyZWdpc3RyYWJsZURvbWFpbik7CiAgICAg
VU5VU0VEX1BBUkFNKGVycm9yTWVzc2FnZSk7CiAjZW5kaWYgLy8gRU5BQkxFKEdFT0xPQ0FUSU9O
KQogfQogCi0jaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKLXZvaWQgV2ViR2VvbG9jYXRpb25NYW5h
Z2VyOjpyZXNldFBlcm1pc3Npb25zKCkKK2Jvb2wgV2ViR2VvbG9jYXRpb25NYW5hZ2VyOjppc1Vw
ZGF0aW5nKGNvbnN0IFBhZ2VTZXRzJiBwYWdlU2V0cykgY29uc3QKIHsKLSAgICBtX3Byb2Nlc3Mu
cmVzZXRBbGxHZW9sb2NhdGlvblBlcm1pc3Npb25zKCk7CisgICAgcmV0dXJuICFwYWdlU2V0cy5w
YWdlU2V0LmNvbXB1dGVzRW1wdHkoKTsKIH0KLSNlbmRpZiAvLyBQTEFURk9STShJT1NfRkFNSUxZ
KQogCi1ib29sIFdlYkdlb2xvY2F0aW9uTWFuYWdlcjo6aXNVcGRhdGluZygpIGNvbnN0Citib29s
IFdlYkdlb2xvY2F0aW9uTWFuYWdlcjo6aXNIaWdoQWNjdXJhY3lFbmFibGVkKGNvbnN0IFBhZ2VT
ZXRzJiBwYWdlU2V0cykgY29uc3QKIHsKLSAgICByZXR1cm4gIW1fcGFnZVNldC5jb21wdXRlc0Vt
cHR5KCk7CisgICAgcmV0dXJuICFwYWdlU2V0cy5oaWdoQWNjdXJhY3lQYWdlU2V0LmNvbXB1dGVz
RW1wdHkoKTsKIH0KIAotYm9vbCBXZWJHZW9sb2NhdGlvbk1hbmFnZXI6OmlzSGlnaEFjY3VyYWN5
RW5hYmxlZCgpIGNvbnN0CisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKK3ZvaWQgV2ViR2VvbG9j
YXRpb25NYW5hZ2VyOjpyZXNldFBlcm1pc3Npb25zKGNvbnN0IFdlYkNvcmU6OlJlZ2lzdHJhYmxl
RG9tYWluJiByZWdpc3RyYWJsZURvbWFpbikKIHsKLSAgICByZXR1cm4gIW1faGlnaEFjY3VyYWN5
UGFnZVNldC5jb21wdXRlc0VtcHR5KCk7CisgICAgYXV0byBpdCA9IG1fcGFnZVNldHMuZmluZChy
ZWdpc3RyYWJsZURvbWFpbik7CisgICAgaWYgKGl0ICE9IG1fcGFnZVNldHMuZW5kKCkpCisgICAg
ICAgIHJldHVybjsKKworICAgIGZvciAoYXV0byYgcGFnZSA6IGNvcHlUb1ZlY3RvcihpdC0+dmFs
dWUucGFnZVNldCkpIHsKKyAgICAgICAgaWYgKGF1dG8qIG1haW5GcmFtZSA9IHBhZ2UtPmNvcmVQ
YWdlKCkgPyAmcGFnZS0+Y29yZVBhZ2UoKS0+bWFpbkZyYW1lKCkgOiBudWxscHRyKQorICAgICAg
ICAgICAgbWFpbkZyYW1lLT5yZXNldEFsbEdlb2xvY2F0aW9uUGVybWlzc2lvbigpOworICAgIH0K
IH0KKyNlbmRpZiAvLyBQTEFURk9STShJT1NfRkFNSUxZKQogCiB9IC8vIG5hbWVzcGFjZSBXZWJL
aXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HZW9sb2NhdGlvbi9XZWJH
ZW9sb2NhdGlvbk1hbmFnZXIuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HZW9sb2NhdGlv
bi9XZWJHZW9sb2NhdGlvbk1hbmFnZXIuaAppbmRleCA0NDgzNTk2MzU4NzgyMTk3Y2NiYTU5Mjhl
ZmU2MjUxNTI2YzE4NTE1Li5jYjY1ODhjNmU3MTg4YmVmYmQ1NTEyM2Q0YTU1OWIyYjBiMzFhOTNh
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR2VvbG9jYXRpb24vV2ViR2Vv
bG9jYXRpb25NYW5hZ2VyLmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dlb2xvY2F0
aW9uL1dlYkdlb2xvY2F0aW9uTWFuYWdlci5oCkBAIC0yOCw2ICsyOCw3IEBACiAjaW5jbHVkZSAi
TWVzc2FnZVJlY2VpdmVyLmgiCiAjaW5jbHVkZSAiV2ViR2VvbG9jYXRpb25Qb3NpdGlvbi5oIgog
I2luY2x1ZGUgIldlYlByb2Nlc3NTdXBwbGVtZW50LmgiCisjaW5jbHVkZSA8V2ViQ29yZS9SZWdp
c3RyYWJsZURvbWFpbi5oPgogI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CiAjaW5jbHVkZSA8d3Rm
L05vbmNvcHlhYmxlLmg+CiAjaW5jbHVkZSA8d3RmL1dlYWtIYXNoU2V0Lmg+CkBAIC00NywzMSAr
NDgsMzQgQEAgY2xhc3MgV2ViR2VvbG9jYXRpb25NYW5hZ2VyIDogcHVibGljIFdlYlByb2Nlc3NT
dXBwbGVtZW50LCBwdWJsaWMgSVBDOjpNZXNzYWdlUmUKICAgICBXVEZfTUFLRV9OT05DT1BZQUJM
RShXZWJHZW9sb2NhdGlvbk1hbmFnZXIpOwogcHVibGljOgogICAgIGV4cGxpY2l0IFdlYkdlb2xv
Y2F0aW9uTWFuYWdlcihXZWJQcm9jZXNzJik7CisgICAgfldlYkdlb2xvY2F0aW9uTWFuYWdlcigp
OwogCiAgICAgc3RhdGljIGNvbnN0IGNoYXIqIHN1cHBsZW1lbnROYW1lKCk7CiAKLSAgICB2b2lk
IHJlZ2lzdGVyV2ViUGFnZShXZWJQYWdlJiwgY29uc3QgU3RyaW5nJiBhdXRob3JpemF0aW9uVG9r
ZW4pOworICAgIHZvaWQgcmVnaXN0ZXJXZWJQYWdlKFdlYlBhZ2UmLCBjb25zdCBTdHJpbmcmIGF1
dGhvcml6YXRpb25Ub2tlbiwgYm9vbCBuZWVkc0hpZ2hBY2N1cmFjeSk7CiAgICAgdm9pZCB1bnJl
Z2lzdGVyV2ViUGFnZShXZWJQYWdlJik7CiAgICAgdm9pZCBzZXRFbmFibGVIaWdoQWNjdXJhY3lG
b3JQYWdlKFdlYlBhZ2UmLCBib29sKTsKIAotICAgIHZvaWQgcmVxdWVzdFBlcm1pc3Npb24oV2Vi
Q29yZTo6R2VvbG9jYXRpb24mKTsKLQogcHJpdmF0ZToKICAgICAvLyBJUEM6Ok1lc3NhZ2VSZWNl
aXZlcgogICAgIHZvaWQgZGlkUmVjZWl2ZU1lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwgSVBDOjpE
ZWNvZGVyJikgb3ZlcnJpZGU7CiAKLSAgICBib29sIGlzVXBkYXRpbmcoKSBjb25zdDsKLSAgICBi
b29sIGlzSGlnaEFjY3VyYWN5RW5hYmxlZCgpIGNvbnN0OwotCi0gICAgdm9pZCBkaWRDaGFuZ2VQ
b3NpdGlvbihjb25zdCBXZWJDb3JlOjpHZW9sb2NhdGlvblBvc2l0aW9uRGF0YSYpOwotICAgIHZv
aWQgZGlkRmFpbFRvRGV0ZXJtaW5lUG9zaXRpb24oY29uc3QgU3RyaW5nJiBlcnJvck1lc3NhZ2Up
OworICAgIHZvaWQgZGlkQ2hhbmdlUG9zaXRpb24oY29uc3QgV2ViQ29yZTo6UmVnaXN0cmFibGVE
b21haW4mLCBjb25zdCBXZWJDb3JlOjpHZW9sb2NhdGlvblBvc2l0aW9uRGF0YSYpOworICAgIHZv
aWQgZGlkRmFpbFRvRGV0ZXJtaW5lUG9zaXRpb24oY29uc3QgV2ViQ29yZTo6UmVnaXN0cmFibGVE
b21haW4mLCBjb25zdCBTdHJpbmcmIGVycm9yTWVzc2FnZSk7CiAjaWYgUExBVEZPUk0oSU9TX0ZB
TUlMWSkKLSAgICB2b2lkIHJlc2V0UGVybWlzc2lvbnMoKTsKKyAgICB2b2lkIHJlc2V0UGVybWlz
c2lvbnMoY29uc3QgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4mKTsKICNlbmRpZiAvLyBQTEFU
Rk9STShJT1NfRkFNSUxZKQogCisgICAgc3RydWN0IFBhZ2VTZXRzIHsKKyAgICAgICAgV2Vha0hh
c2hTZXQ8V2ViUGFnZT4gcGFnZVNldDsKKyAgICAgICAgV2Vha0hhc2hTZXQ8V2ViUGFnZT4gaGln
aEFjY3VyYWN5UGFnZVNldDsKKyAgICB9OworICAgIGJvb2wgaXNVcGRhdGluZyhjb25zdCBQYWdl
U2V0cyYpIGNvbnN0OworICAgIGJvb2wgaXNIaWdoQWNjdXJhY3lFbmFibGVkKGNvbnN0IFBhZ2VT
ZXRzJikgY29uc3Q7CisKICAgICBXZWJQcm9jZXNzJiBtX3Byb2Nlc3M7Ci0gICAgV2Vha0hhc2hT
ZXQ8V2ViUGFnZT4gbV9wYWdlU2V0OwotICAgIFdlYWtIYXNoU2V0PFdlYlBhZ2U+IG1faGlnaEFj
Y3VyYWN5UGFnZVNldDsKKyAgICBIYXNoTWFwPFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluLCBQ
YWdlU2V0cz4gbV9wYWdlU2V0czsKKyAgICBIYXNoTWFwPFdlYlBhZ2UqLCBXZWJDb3JlOjpSZWdp
c3RyYWJsZURvbWFpbj4gbV9wYWdlVG9SZWdpc3RyYWJsZURvbWFpbjsKIH07CiAKIH0gLy8gbmFt
ZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dlb2xv
Y2F0aW9uL1dlYkdlb2xvY2F0aW9uTWFuYWdlci5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9HZW9sb2NhdGlvbi9XZWJHZW9sb2NhdGlvbk1hbmFnZXIubWVzc2FnZXMuaW4K
aW5kZXggNzlmM2I0Y2U0ZWZjYWYzNDg4NTdkOTkzMzI1M2Q4OTU0ZjBmMWI4Ny4uNmZjYzYwZDJl
MDhlMjZlYWI3M2MxZjcxY2Q4ODQyZGM1MTA1MmQxOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL0dlb2xvY2F0aW9uL1dlYkdlb2xvY2F0aW9uTWFuYWdlci5tZXNzYWdlcy5p
bgorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR2VvbG9jYXRpb24vV2ViR2VvbG9jYXRp
b25NYW5hZ2VyLm1lc3NhZ2VzLmluCkBAIC0yMSw5ICsyMSw5IEBACiAjIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAK
IG1lc3NhZ2VzIC0+IFdlYkdlb2xvY2F0aW9uTWFuYWdlciBOb3RSZWZDb3VudGVkIHsKLSAgICBE
aWRDaGFuZ2VQb3NpdGlvbihXZWJDb3JlOjpHZW9sb2NhdGlvblBvc2l0aW9uRGF0YSBwb3NpdGlv
bik7Ci0gICAgRGlkRmFpbFRvRGV0ZXJtaW5lUG9zaXRpb24oU3RyaW5nIGVycm9yTWVzc2FnZSk7
CisgICAgRGlkQ2hhbmdlUG9zaXRpb24oV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4gcmVnaXN0
cmFibGVEb21haW4sIFdlYkNvcmU6Okdlb2xvY2F0aW9uUG9zaXRpb25EYXRhIHBvc2l0aW9uKTsK
KyAgICBEaWRGYWlsVG9EZXRlcm1pbmVQb3NpdGlvbihXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFp
biByZWdpc3RyYWJsZURvbWFpbiwgU3RyaW5nIGVycm9yTWVzc2FnZSk7CiAjaWYgUExBVEZPUk0o
SU9TX0ZBTUlMWSkKLSAgICBSZXNldFBlcm1pc3Npb25zKCk7CisgICAgUmVzZXRQZXJtaXNzaW9u
cyhXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiByZWdpc3RyYWJsZURvbWFpbik7CiAjZW5kaWYK
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9X
ZWJHZW9sb2NhdGlvbkNsaWVudC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29y
ZVN1cHBvcnQvV2ViR2VvbG9jYXRpb25DbGllbnQuY3BwCmluZGV4IGVhMDJmMmFjMTZmNzMxYmY1
NjQyZjg2NzhkODZhNDk4MTFkOGMzODYuLmQxOGRmN2VmYWY1NmVmY2ZjOGQxNjk5YzkxY2QyNmI2
ODliYzgyNmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3Vw
cG9ydC9XZWJHZW9sb2NhdGlvbkNsaWVudC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkdlb2xvY2F0aW9uQ2xpZW50LmNwcApAQCAtNDgsOSArNDgs
OSBAQCB2b2lkIFdlYkdlb2xvY2F0aW9uQ2xpZW50OjpnZW9sb2NhdGlvbkRlc3Ryb3llZCgpCiAg
ICAgZGVsZXRlIHRoaXM7CiB9CiAKLXZvaWQgV2ViR2VvbG9jYXRpb25DbGllbnQ6OnN0YXJ0VXBk
YXRpbmcoY29uc3QgU3RyaW5nJiBhdXRob3JpemF0aW9uVG9rZW4pCit2b2lkIFdlYkdlb2xvY2F0
aW9uQ2xpZW50OjpzdGFydFVwZGF0aW5nKGNvbnN0IFN0cmluZyYgYXV0aG9yaXphdGlvblRva2Vu
LCBib29sIG5lZWRzSGlnaEFjY3VyYWN5KQogewotICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigp
LnN1cHBsZW1lbnQ8V2ViR2VvbG9jYXRpb25NYW5hZ2VyPigpLT5yZWdpc3RlcldlYlBhZ2UobV9w
YWdlLCBhdXRob3JpemF0aW9uVG9rZW4pOworICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLnN1
cHBsZW1lbnQ8V2ViR2VvbG9jYXRpb25NYW5hZ2VyPigpLT5yZWdpc3RlcldlYlBhZ2UobV9wYWdl
LCBhdXRob3JpemF0aW9uVG9rZW4sIG5lZWRzSGlnaEFjY3VyYWN5KTsKIH0KIAogdm9pZCBXZWJH
ZW9sb2NhdGlvbkNsaWVudDo6c3RvcFVwZGF0aW5nKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJHZW9sb2NhdGlvbkNsaWVudC5oIGIvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkdlb2xvY2F0aW9uQ2xpZW50
LmgKaW5kZXggYjE2ODE2NzQ4OTYyMjU0N2VjOTRlNjc5OGZiNjlkZDhmYTZkMDExYy4uNjVlYzBl
OTM1NDI4M2Q1ZmE3N2FmMTBiNGUxODBiODcxMmZhZWYwNyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkdlb2xvY2F0aW9uQ2xpZW50LmgKKysr
IGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkdlb2xvY2F0aW9u
Q2xpZW50LmgKQEAgLTMxLDcgKzMxLDcgQEAgbmFtZXNwYWNlIFdlYktpdCB7CiAKIGNsYXNzIFdl
YlBhZ2U7CiAKLWNsYXNzIFdlYkdlb2xvY2F0aW9uQ2xpZW50IDogcHVibGljIFdlYkNvcmU6Okdl
b2xvY2F0aW9uQ2xpZW50IHsKK2NsYXNzIFdlYkdlb2xvY2F0aW9uQ2xpZW50IGZpbmFsIDogcHVi
bGljIFdlYkNvcmU6Okdlb2xvY2F0aW9uQ2xpZW50IHsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9D
QVRFRDsKIHB1YmxpYzoKICAgICBXZWJHZW9sb2NhdGlvbkNsaWVudChXZWJQYWdlJiBwYWdlKQpA
QCAtNDIsMTcgKzQyLDE3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIH5XZWJHZW9sb2NhdGlvbkNs
aWVudCgpOwogCiBwcml2YXRlOgotICAgIHZvaWQgZ2VvbG9jYXRpb25EZXN0cm95ZWQoKSBvdmVy
cmlkZTsKKyAgICB2b2lkIGdlb2xvY2F0aW9uRGVzdHJveWVkKCkgZmluYWw7CiAKLSAgICB2b2lk
IHN0YXJ0VXBkYXRpbmcoY29uc3QgU3RyaW5nJiBhdXRob3JpemF0aW9uVG9rZW4pIG92ZXJyaWRl
OwotICAgIHZvaWQgc3RvcFVwZGF0aW5nKCkgb3ZlcnJpZGU7Ci0gICAgdm9pZCByZXZva2VBdXRo
b3JpemF0aW9uVG9rZW4oY29uc3QgU3RyaW5nJikgb3ZlcnJpZGU7Ci0gICAgdm9pZCBzZXRFbmFi
bGVIaWdoQWNjdXJhY3koYm9vbCkgb3ZlcnJpZGU7CisgICAgdm9pZCBzdGFydFVwZGF0aW5nKGNv
bnN0IFN0cmluZyYgYXV0aG9yaXphdGlvblRva2VuLCBib29sIG5lZWRzSGlnaEFjY3VyYWN5KSBm
aW5hbDsKKyAgICB2b2lkIHN0b3BVcGRhdGluZygpIGZpbmFsOworICAgIHZvaWQgcmV2b2tlQXV0
aG9yaXphdGlvblRva2VuKGNvbnN0IFN0cmluZyYpIGZpbmFsOworICAgIHZvaWQgc2V0RW5hYmxl
SGlnaEFjY3VyYWN5KGJvb2wpIGZpbmFsOwogCi0gICAgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpH
ZW9sb2NhdGlvblBvc2l0aW9uRGF0YT4gbGFzdFBvc2l0aW9uKCkgb3ZlcnJpZGU7CisgICAgc3Rk
OjpvcHRpb25hbDxXZWJDb3JlOjpHZW9sb2NhdGlvblBvc2l0aW9uRGF0YT4gbGFzdFBvc2l0aW9u
KCkgZmluYWw7CiAKLSAgICB2b2lkIHJlcXVlc3RQZXJtaXNzaW9uKFdlYkNvcmU6Okdlb2xvY2F0
aW9uJikgb3ZlcnJpZGU7Ci0gICAgdm9pZCBjYW5jZWxQZXJtaXNzaW9uUmVxdWVzdChXZWJDb3Jl
OjpHZW9sb2NhdGlvbiYpIG92ZXJyaWRlOworICAgIHZvaWQgcmVxdWVzdFBlcm1pc3Npb24oV2Vi
Q29yZTo6R2VvbG9jYXRpb24mKSBmaW5hbDsKKyAgICB2b2lkIGNhbmNlbFBlcm1pc3Npb25SZXF1
ZXN0KFdlYkNvcmU6Okdlb2xvY2F0aW9uJikgZmluYWw7CiAKICAgICBXZWJQYWdlJiBtX3BhZ2U7
CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3Bw
IGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3BwCmluZGV4IGRkNDViNDU4
OGJmOWRkMTI0ZTE4ZmFhOTVhMzI2ZWQzMTkzMWE0NTcuLjc5OTYxM2QzNzc0MjM2M2JmYmRjZDk1
Mjk3OTk2MjIwNmYwMjI4YTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9X
ZWJQcm9jZXNzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5j
cHAKQEAgLTE1MjcsMTYgKzE1MjcsNiBAQCB2b2lkIFdlYlByb2Nlc3M6OnBhZ2VBY3Rpdml0eVN0
YXRlRGlkQ2hhbmdlKFBhZ2VJZGVudGlmaWVyLCBPcHRpb25TZXQ8V2ViQ29yZTo6QQogICAgIH0K
IH0KIAotI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCi12b2lkIFdlYlByb2Nlc3M6OnJlc2V0QWxs
R2VvbG9jYXRpb25QZXJtaXNzaW9ucygpCi17Ci0gICAgZm9yIChhdXRvJiBwYWdlIDogbV9wYWdl
TWFwLnZhbHVlcygpKSB7Ci0gICAgICAgIGlmIChGcmFtZSogbWFpbkZyYW1lID0gcGFnZS0+bWFp
bkZyYW1lKCkpCi0gICAgICAgICAgICBtYWluRnJhbWUtPnJlc2V0QWxsR2VvbG9jYXRpb25QZXJt
aXNzaW9uKCk7Ci0gICAgfQotfQotI2VuZGlmCi0KIHZvaWQgV2ViUHJvY2Vzczo6cHJlcGFyZVRv
U3VzcGVuZChib29sIGlzU3VzcGVuc2lvbkltbWluZW50LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lk
KCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7CiAgICAgV0VCUFJPQ0VTU19SRUxFQVNFX0xPRyhQ
cm9jZXNzU3VzcGVuc2lvbiwgInByZXBhcmVUb1N1c3BlbmQ6IGlzU3VzcGVuc2lvbkltbWluZW50
PSVkIiwgaXNTdXNwZW5zaW9uSW1taW5lbnQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1dlYlByb2Nlc3MuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9j
ZXNzLmgKaW5kZXggYzVkZDIyNWRjMWI3MWRhOWNkZDRlZWRiYTBhMDdlNzYxNzgxNTc1ZS4uNTk1
YWYwYjk3NDEyOTBkYTZjNzM0YTA4ODZiODI0ZDIzYjFlZTU3ZSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvV2ViUHJvY2Vzcy5oCkBAIC0zMTAsMTAgKzMxMCw2IEBAIHB1YmxpYzoKIAogICAgIHZv
aWQgaXNKSVRFbmFibGVkKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYpOwogCi0jaWYg
UExBVEZPUk0oSU9TX0ZBTUlMWSkKLSAgICB2b2lkIHJlc2V0QWxsR2VvbG9jYXRpb25QZXJtaXNz
aW9ucygpOwotI2VuZGlmCi0KICNpZiBQTEFURk9STShXQVlMQU5EKQogICAgIFdheWxhbmRDb21w
b3NpdG9yRGlzcGxheSogd2F5bGFuZENvbXBvc2l0b3JEaXNwbGF5KCkgY29uc3QgeyByZXR1cm4g
bV93YXlsYW5kQ29tcG9zaXRvckRpc3BsYXkuZ2V0KCk7IH0KICNlbmRpZgpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViR2VvbG9jYXRpb25DbGll
bnQuaCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkdlb2xvY2F0
aW9uQ2xpZW50LmgKaW5kZXggNzdjMjgyOGQ4NTk1MzYzNWI2NGM0Yzg5OTk5MGEwYTY0ODE3MWI2
Yy4uYjA3Yzc5MDNkMjkyYTkzMzkxZTVjNDBhZWRkNjVkZWRiYWY4YzVmMSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViR2VvbG9jYXRpb25DbGll
bnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJHZW9s
b2NhdGlvbkNsaWVudC5oCkBAIC0zOSw3ICszOSw3IEBAIHB1YmxpYzoKICAgICBXZWJWaWV3ICp3
ZWJWaWV3KCkgeyByZXR1cm4gbV93ZWJWaWV3OyB9CiAKICAgICB2b2lkIGdlb2xvY2F0aW9uRGVz
dHJveWVkKCkgb3ZlcnJpZGU7Ci0gICAgdm9pZCBzdGFydFVwZGF0aW5nKGNvbnN0IFN0cmluZyYg
YXV0aG9yaXphdGlvblRva2VuKSBvdmVycmlkZTsKKyAgICB2b2lkIHN0YXJ0VXBkYXRpbmcoY29u
c3QgU3RyaW5nJiBhdXRob3JpemF0aW9uVG9rZW4sIGJvb2wgZW5hYmxlSGlnaEFjY3VyYWN5KSBv
dmVycmlkZTsKICAgICB2b2lkIHN0b3BVcGRhdGluZygpIG92ZXJyaWRlOwogI2lmIFBMQVRGT1JN
KElPU19GQU1JTFkpCiAgICAgLy8gRklYTUU6IHVuaWZ5IHRoaXMgd2l0aCBNYWMgb24gT3BlblNv
dXJjZS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0
L1dlYkdlb2xvY2F0aW9uQ2xpZW50Lm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29y
ZVN1cHBvcnQvV2ViR2VvbG9jYXRpb25DbGllbnQubW0KaW5kZXggZTc4OGE1N2RkNmY4MDdlN2Iy
NWM3NDJiYTgwMTkzNTdhMjczNGQzOC4uYThiODUyMWUyZGE0NzE4ZGMxNGI0MzcwYjFhNWI0Yjhk
NjMyODU4OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBv
cnQvV2ViR2VvbG9jYXRpb25DbGllbnQubW0KKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMv
V2ViQ29yZVN1cHBvcnQvV2ViR2VvbG9jYXRpb25DbGllbnQubW0KQEAgLTgzLDkgKzgzLDE2IEBA
IHZvaWQgV2ViR2VvbG9jYXRpb25DbGllbnQ6Omdlb2xvY2F0aW9uRGVzdHJveWVkKCkKICAgICBk
ZWxldGUgdGhpczsKIH0KIAotdm9pZCBXZWJHZW9sb2NhdGlvbkNsaWVudDo6c3RhcnRVcGRhdGlu
Zyhjb25zdCBTdHJpbmcmIGF1dGhvcml6YXRpb25Ub2tlbikKK3ZvaWQgV2ViR2VvbG9jYXRpb25D
bGllbnQ6OnN0YXJ0VXBkYXRpbmcoY29uc3QgU3RyaW5nJiBhdXRob3JpemF0aW9uVG9rZW4sIGJv
b2wgZW5hYmxlSGlnaEFjY3VyYWN5KQogewogICAgIFVOVVNFRF9QQVJBTShhdXRob3JpemF0aW9u
VG9rZW4pOworI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCisgICAgaWYgKGVuYWJsZUhpZ2hBY2N1
cmFjeSkKKyAgICAgICAgc2V0RW5hYmxlSGlnaEFjY3VyYWN5KHRydWUpOworI2Vsc2UKKyAgICBV
TlVTRURfUEFSQU0oZW5hYmxlSGlnaEFjY3VyYWN5KTsKKyNlbmRpZgorCiAgICAgW1ttX3dlYlZp
ZXcgX2dlb2xvY2F0aW9uUHJvdmlkZXJdIHJlZ2lzdGVyV2ViVmlldzptX3dlYlZpZXddOwogfQog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJH
ZW9sb2NhdGlvbkNsaWVudC5jcHAgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJDb3JlU3Vw
cG9ydC9XZWJHZW9sb2NhdGlvbkNsaWVudC5jcHAKaW5kZXggZTFmY2EyNzcyNDk2MTU0YTRlMDcw
ZTRkZmRhN2U3N2U5NzM1ODJjMS4uYWM1NDUxNGM2NDJlYTBlNWY4YWYzMzY5ZTFiYmJhZTBjMzkw
NzFiNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViQ29yZVN1cHBvcnQv
V2ViR2VvbG9jYXRpb25DbGllbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dl
YkNvcmVTdXBwb3J0L1dlYkdlb2xvY2F0aW9uQ2xpZW50LmNwcApAQCAtNDgsOSArNDgsMTAgQEAg
dm9pZCBXZWJHZW9sb2NhdGlvbkNsaWVudDo6Z2VvbG9jYXRpb25EZXN0cm95ZWQoKQogICAgIGRl
bGV0ZSB0aGlzOwogfQogCi12b2lkIFdlYkdlb2xvY2F0aW9uQ2xpZW50OjpzdGFydFVwZGF0aW5n
KGNvbnN0IFN0cmluZyYgYXV0aG9yaXphdGlvblRva2VuKQordm9pZCBXZWJHZW9sb2NhdGlvbkNs
aWVudDo6c3RhcnRVcGRhdGluZyhjb25zdCBTdHJpbmcmIGF1dGhvcml6YXRpb25Ub2tlbiwgYm9v
bCBlbmFibGVIaWdoQWNjdXJhY3kpCiB7CiAgICAgVU5VU0VEX1BBUkFNKGF1dGhvcml6YXRpb25U
b2tlbik7CisgICAgVU5VU0VEX1BBUkFNKGVuYWJsZUhpZ2hBY2N1cmFjeSk7CiAgICAgQ09NUHRy
PElXZWJHZW9sb2NhdGlvblByb3ZpZGVyPiBwcm92aWRlcjsKICAgICBpZiAoRkFJTEVEKG1fd2Vi
Vmlldy0+Z2VvbG9jYXRpb25Qcm92aWRlcigmcHJvdmlkZXIpKSkKICAgICAgICAgcmV0dXJuOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViQ29yZVN1cHBvcnQvV2ViR2Vv
bG9jYXRpb25DbGllbnQuaCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkNvcmVTdXBwb3J0
L1dlYkdlb2xvY2F0aW9uQ2xpZW50LmgKaW5kZXggMTk1NzQxN2I1NWQ3ZTVkMmY5YjcxZTVjOWQ5
YzMwM2RmZWY0ZTE4Ni4uNWI4ZTk0NDRmMjFmZWQ0M2VkZjI1OTFhMmJhMTVkYTNiZDQ0ZjQ0YSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViQ29yZVN1cHBvcnQvV2ViR2Vv
bG9jYXRpb25DbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJDb3JlU3Vw
cG9ydC9XZWJHZW9sb2NhdGlvbkNsaWVudC5oCkBAIC00MSw3ICs0MSw3IEBAIHB1YmxpYzoKICAg
ICBXZWJHZW9sb2NhdGlvbkNsaWVudChXZWJWaWV3Kik7CiAKICAgICB2b2lkIGdlb2xvY2F0aW9u
RGVzdHJveWVkKCkgZmluYWw7Ci0gICAgdm9pZCBzdGFydFVwZGF0aW5nKGNvbnN0IFN0cmluZyYg
YXV0aG9yaXphdGlvblRva2VuKSBmaW5hbDsKKyAgICB2b2lkIHN0YXJ0VXBkYXRpbmcoY29uc3Qg
U3RyaW5nJiBhdXRob3JpemF0aW9uVG9rZW4sIGJvb2wgZW5hYmxlSGlnaEFjY3VyYWN5KSBmaW5h
bDsKICAgICB2b2lkIHN0b3BVcGRhdGluZygpIGZpbmFsOwogICAgIHZvaWQgc2V0RW5hYmxlSGln
aEFjY3VyYWN5KGJvb2wpIGZpbmFsIHsgfQogICAgIHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6R2Vv
bG9jYXRpb25Qb3NpdGlvbkRhdGE+IGxhc3RQb3NpdGlvbigpIGZpbmFsOwo=
</data>
<flag name="commit-queue"
          id="478949"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>452028</attachid>
            <date>2022-02-15 08:46:34 -0800</date>
            <delta_ts>2022-02-15 09:53:25 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-236566-20220215084633.patch</filename>
            <type>text/plain</type>
            <size>110462</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg5ODEzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IGY2MDY5ODliY2RhNjQyMTdkZTJlNzcw
ODM4NmYzNzA2N2ExYThkZTQuLjlmOGM1ZmM4M2Q3YjdkZjViY2ZkZDE1M2EyZGIwM2IyYjNmOGFm
MjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMTUgQEAKKzIwMjItMDItMTMgIENocmlzIER1bWV6ICA8Y2R1bWV6
QGFwcGxlLmNvbT4KKworICAgICAgICBEbyBwcmVsaW1pbmFyeSB3b3JrIHRvIHBhc3MgZG9tYWlu
IG5hbWVzIHRvIENvcmVMb2NhdGlvbgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MjM2NTY2CisgICAgICAgIDxyZGFyOi8vODg3NjE0MTM+CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkIGJ1aWxkIHRpbWUg
ZmxhZyBmb3IgcGFzc2luZyB3ZWJzaXRlIGlkZW50aWZpZXJzIHRvIENvcmVMb2NhdGlvbi4KKwor
ICAgICAgICAqIHd0Zi9QbGF0Zm9ybUhhdmUuaDoKKwogMjAyMi0wMi0xNSAgUm9iaW4gTW9yaXNz
ZXQgIDxybW9yaXNzZXRAYXBwbGUuY29tPgogCiAgICAgICAgIFtXR1NMXSBJbXBsZW1lbnQgZW5v
dWdoIG9mIHRoZSBsZXhlciBmb3IgdGhlIHNpbXBsZXN0IHNoYWRlcnMKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCAz
ODI0ODY0YmM2ODI5NGY3YzMyYzkyYzQzYjdiMThhODhhYTFmMzZiLi42MGI1NzE5NzNiNDNiZDM3
ZGVlY2U4NjllMGQ1MWU5ZjhmNzg1OGU2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFu
Z2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNTQgQEAKKzIw
MjItMDItMTMgIENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KKworICAgICAgICBEbyBw
cmVsaW1pbmFyeSB3b3JrIHRvIHBhc3MgZG9tYWluIG5hbWVzIHRvIENvcmVMb2NhdGlvbgorICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjM2NTY2CisgICAg
ICAgIDxyZGFyOi8vODg3NjE0MTM+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgRGFyaW4gQWRsZXIu
CisKKyAgICAgICAgRG8gcHJlbGltaW5hcnkgd29yayB0byBwYXNzIGRvbWFpbiBuYW1lcyB0byBD
b3JlTG9jYXRpb24gd2hlbiB1c2luZyB0aGUgR2VvbG9jYXRpb24gQVBJLgorICAgICAgICBUaGlz
IHBpcGVzIHRoZSBkb21haW4gbmFtZXMgYWxsIHRoZSB3YXkgZnJvbSB0aGUgR2VvbG9jYXRpb24g
QVBJIHRvIHRoZSBDb3JlTG9jYXRpb24gY2FsbHMKKyAgICAgICAgYnV0IGRvZXNuJ3QgeWV0IHBh
c3MgdGhlIGRvbWFpbiB0byBDb3JlTG9jYXRpb24gZHVlIHRvIDxyZGFyOi8vODg4MzQzMDE+LiBJ
IHdpbGwgZm9sbG93LXVwCisgICAgICAgIG9uY2UgPHJkYXI6Ly84ODgzNDMwMT4gaXMgZml4ZWQu
CisKKyAgICAgICAgKiBNb2R1bGVzL2dlb2xvY2F0aW9uL0dlb2xvY2F0aW9uQ2xpZW50Lmg6Cisg
ICAgICAgICogTW9kdWxlcy9nZW9sb2NhdGlvbi9HZW9sb2NhdGlvbkNvbnRyb2xsZXIuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6R2VvbG9jYXRpb25Db250cm9sbGVyOjpkaWROYXZpZ2F0ZVBhZ2Up
OgorICAgICAgICAoV2ViQ29yZTo6R2VvbG9jYXRpb25Db250cm9sbGVyOjphZGRPYnNlcnZlcik6
CisgICAgICAgIChXZWJDb3JlOjpHZW9sb2NhdGlvbkNvbnRyb2xsZXI6OnJlbW92ZU9ic2VydmVy
KToKKyAgICAgICAgKFdlYkNvcmU6Okdlb2xvY2F0aW9uQ29udHJvbGxlcjo6YWN0aXZpdHlTdGF0
ZURpZENoYW5nZSk6CisgICAgICAgIChXZWJDb3JlOjpHZW9sb2NhdGlvbkNvbnRyb2xsZXI6OnN0
YXJ0VXBkYXRpbmdJZk5lY2Vzc2FyeSk6CisgICAgICAgIChXZWJDb3JlOjpHZW9sb2NhdGlvbkNv
bnRyb2xsZXI6OnN0b3BVcGRhdGluZ0lmTmVjZXNzYXJ5KToKKyAgICAgICAgKiBNb2R1bGVzL2dl
b2xvY2F0aW9uL0dlb2xvY2F0aW9uQ29udHJvbGxlci5oOgorICAgICAgICAoV2ViQ29yZTo6R2Vv
bG9jYXRpb25Db250cm9sbGVyOjpuZWVkc0hpZ2hBY2N1cmFjeSBjb25zdCk6CisgICAgICAgICog
TW9kdWxlcy9nZW9sb2NhdGlvbi9HZW9sb2NhdGlvblBvc2l0aW9uRGF0YS5oOgorICAgICAgICAq
IE1vZHVsZXMvZ2VvbG9jYXRpb24vaW9zL0dlb2xvY2F0aW9uUG9zaXRpb25EYXRhSU9TLm1tOgor
ICAgICAgICAqIFNvdXJjZXNDb2NvYS50eHQ6CisgICAgICAgICogV2ViQ29yZS54Y29kZXByb2ov
cHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIHBhZ2UvUGFnZS5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpQYWdlOjpkaWRDb21taXRMb2FkKToKKyAgICAgICAgKiBwbGF0Zm9ybS9jb2NvYS9Db3Jl
TG9jYXRpb25HZW9sb2NhdGlvblByb3ZpZGVyLmg6IENvcGllZCBmcm9tIFNvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvZ2VvbG9jYXRpb24vR2VvbG9jYXRpb25DbGllbnQuaC4KKyAgICAgICAgKiBwbGF0
Zm9ybS9jb2NvYS9Db3JlTG9jYXRpb25HZW9sb2NhdGlvblByb3ZpZGVyLm1tOiBBZGRlZC4KKyAg
ICAgICAgKGlzQXV0aG9yaXphdGlvbkdyYW50ZWQpOgorICAgICAgICAoLVtXZWJDTExvY2F0aW9u
TWFuYWdlciBpbml0V2l0aFdlYnNpdGVJZGVudGlmaWVyOmNsaWVudDpdKToKKyAgICAgICAgKC1b
V2ViQ0xMb2NhdGlvbk1hbmFnZXIgZGVhbGxvY10pOgorICAgICAgICAoLVtXZWJDTExvY2F0aW9u
TWFuYWdlciBzdGFydF0pOgorICAgICAgICAoLVtXZWJDTExvY2F0aW9uTWFuYWdlciBzdG9wXSk6
CisgICAgICAgICgtW1dlYkNMTG9jYXRpb25NYW5hZ2VyIHNldEVuYWJsZUhpZ2hBY2N1cmFjeTpd
KToKKyAgICAgICAgKC1bV2ViQ0xMb2NhdGlvbk1hbmFnZXIgcmVxdWVzdEdlb2xvY2F0aW9uQXV0
aG9yaXphdGlvbl0pOgorICAgICAgICAoLVtXZWJDTExvY2F0aW9uTWFuYWdlciBsb2NhdGlvbk1h
bmFnZXJEaWRDaGFuZ2VBdXRob3JpemF0aW9uOl0pOgorICAgICAgICAoLVtXZWJDTExvY2F0aW9u
TWFuYWdlciBsb2NhdGlvbk1hbmFnZXI6ZGlkVXBkYXRlTG9jYXRpb25zOl0pOgorICAgICAgICAo
LVtXZWJDTExvY2F0aW9uTWFuYWdlciBsb2NhdGlvbk1hbmFnZXI6ZGlkRmFpbFdpdGhFcnJvcjpd
KToKKyAgICAgICAgKFdlYkNvcmU6OkNvcmVMb2NhdGlvbkdlb2xvY2F0aW9uUHJvdmlkZXI6OkNv
cmVMb2NhdGlvbkdlb2xvY2F0aW9uUHJvdmlkZXIpOgorICAgICAgICAoV2ViQ29yZTo6Q29yZUxv
Y2F0aW9uR2VvbG9jYXRpb25Qcm92aWRlcjo6fkNvcmVMb2NhdGlvbkdlb2xvY2F0aW9uUHJvdmlk
ZXIpOgorICAgICAgICAoV2ViQ29yZTo6Q29yZUxvY2F0aW9uR2VvbG9jYXRpb25Qcm92aWRlcjo6
c3RhcnQpOgorICAgICAgICAoV2ViQ29yZTo6Q29yZUxvY2F0aW9uR2VvbG9jYXRpb25Qcm92aWRl
cjo6c3RvcCk6CisgICAgICAgIChXZWJDb3JlOjpDb3JlTG9jYXRpb25HZW9sb2NhdGlvblByb3Zp
ZGVyOjpzZXRFbmFibGVIaWdoQWNjdXJhY3kpOgorICAgICAgICAoV2ViQ29yZTo6Q29yZUxvY2F0
aW9uR2VvbG9jYXRpb25Qcm92aWRlcjo6cmVxdWVzdEF1dGhvcml6YXRpb24pOgorICAgICAgICAq
IHBsYXRmb3JtL21vY2svR2VvbG9jYXRpb25DbGllbnRNb2NrLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6Okdlb2xvY2F0aW9uQ2xpZW50TW9jazo6c3RhcnRVcGRhdGluZyk6CisgICAgICAgICogcGxh
dGZvcm0vbW9jay9HZW9sb2NhdGlvbkNsaWVudE1vY2suaDoKKwogMjAyMi0wMi0xNSAgWmlyYW4g
U3VuICA8enN1bkBpZ2FsaWEuY29tPgogCiAgICAgICAgIFtGb3Jtc10gdGhlIHNlbGVjdCgpIG1l
dGhvZCByZXR1cm5zIHNob3VsZCBiZSBpbiBsaW5lIHdpdGggc3BlY3MKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKaW5kZXggMjkx
NmE1NTY1NDlmYmJhNGE3NDMxNmI3OGQ1N2RmOWE2MjM5ZjY3YS4uMjBmYmJiNTM5MDRhYzY0ZDYw
NTgyODdlMzhlMmUzY2Y0ZjlhZGVlMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9DaGFuZ2VM
b2cKKysrIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKQEAgLTEsMyArMSw5NCBAQAorMjAyMi0w
Mi0xMyAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgorCisgICAgICAgIERvIHByZWxp
bWluYXJ5IHdvcmsgdG8gcGFzcyBkb21haW4gbmFtZXMgdG8gQ29yZUxvY2F0aW9uCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzY1NjYKKyAgICAgICAg
PHJkYXI6Ly84ODc2MTQxMz4KKworICAgICAgICBSZXZpZXdlZCBieSBEYXJpbiBBZGxlci4KKwor
ICAgICAgICBEbyBwcmVsaW1pbmFyeSB3b3JrIHRvIHBhc3MgZG9tYWluIG5hbWVzIHRvIENvcmVM
b2NhdGlvbiB3aGVuIHVzaW5nIHRoZSBHZW9sb2NhdGlvbiBBUEkuCisgICAgICAgIFRoaXMgcGlw
ZXMgdGhlIGRvbWFpbiBuYW1lcyBhbGwgdGhlIHdheSBmcm9tIHRoZSBHZW9sb2NhdGlvbiBBUEkg
dG8gdGhlIENvcmVMb2NhdGlvbiBjYWxscworICAgICAgICBidXQgZG9lc24ndCB5ZXQgcGFzcyB0
aGUgZG9tYWluIHRvIENvcmVMb2NhdGlvbiBkdWUgdG8gPHJkYXI6Ly84ODgzNDMwMT4uIEkgd2ls
bCBmb2xsb3ctdXAKKyAgICAgICAgb25jZSA8cmRhcjovLzg4ODM0MzAxPiBpcyBmaXhlZC4KKwor
ICAgICAgICAqIFNvdXJjZXNDb2NvYS50eHQ6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9DL1dL
R2VvbG9jYXRpb25NYW5hZ2VyLmNwcDoKKyAgICAgICAgKFdLR2VvbG9jYXRpb25NYW5hZ2VyU2V0
UHJvdmlkZXIpOgorICAgICAgICAqIFVJUHJvY2Vzcy9Db2NvYS9XZWJHZW9sb2NhdGlvbk1hbmFn
ZXJQcm94eUNvY29hLmNwcDogQWRkZWQuCisgICAgICAgIChXZWJLaXQ6OldlYkdlb2xvY2F0aW9u
TWFuYWdlclByb3h5Ojpwb3NpdGlvbkNoYW5nZWQpOgorICAgICAgICAoV2ViS2l0OjpXZWJHZW9s
b2NhdGlvbk1hbmFnZXJQcm94eTo6ZXJyb3JPY2N1cnJlZCk6CisgICAgICAgIChXZWJLaXQ6Oldl
Ykdlb2xvY2F0aW9uTWFuYWdlclByb3h5OjpyZXNldEdlb2xvY2F0aW9uKToKKyAgICAgICAgKFdl
YktpdDo6V2ViR2VvbG9jYXRpb25NYW5hZ2VyUHJveHk6OmlzVXBkYXRpbmcgY29uc3QpOgorICAg
ICAgICAoV2ViS2l0OjpXZWJHZW9sb2NhdGlvbk1hbmFnZXJQcm94eTo6aXNIaWdoQWNjdXJhY3lF
bmFibGVkIGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6V2ViR2VvbG9jYXRpb25NYW5hZ2VyUHJv
eHk6OnByb3ZpZGVyU3RhcnRVcGRhdGluZyk6CisgICAgICAgIChXZWJLaXQ6OldlYkdlb2xvY2F0
aW9uTWFuYWdlclByb3h5Ojpwcm92aWRlclN0b3BVcGRhdGluZyk6CisgICAgICAgIChXZWJLaXQ6
OldlYkdlb2xvY2F0aW9uTWFuYWdlclByb3h5Ojpwcm92aWRlclNldEVuYWJsZWRIaWdoQWNjdXJh
Y3kpOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJHZW9sb2NhdGlvbk1hbmFnZXJQcm94eS5jcHA6
CisgICAgICAgIChXZWJLaXQ6OldlYkdlb2xvY2F0aW9uTWFuYWdlclByb3h5OjpXZWJHZW9sb2Nh
dGlvbk1hbmFnZXJQcm94eSk6CisgICAgICAgIChXZWJLaXQ6OldlYkdlb2xvY2F0aW9uTWFuYWdl
clByb3h5Ojpwcm9jZXNzUG9vbERlc3Ryb3llZCk6CisgICAgICAgIChXZWJLaXQ6OldlYkdlb2xv
Y2F0aW9uTWFuYWdlclByb3h5Ojpwcm9jZXNzRGlkQ2xvc2UpOgorICAgICAgICAoV2ViS2l0OjpX
ZWJHZW9sb2NhdGlvbk1hbmFnZXJQcm94eTo6cHJvdmlkZXJEaWRDaGFuZ2VQb3NpdGlvbik6Cisg
ICAgICAgIChXZWJLaXQ6OldlYkdlb2xvY2F0aW9uTWFuYWdlclByb3h5Ojpwcm92aWRlckRpZEZh
aWxUb0RldGVybWluZVBvc2l0aW9uKToKKyAgICAgICAgKFdlYktpdDo6V2ViR2VvbG9jYXRpb25N
YW5hZ2VyUHJveHk6OnN0YXJ0VXBkYXRpbmcpOgorICAgICAgICAoV2ViS2l0OjpXZWJHZW9sb2Nh
dGlvbk1hbmFnZXJQcm94eTo6c3RvcFVwZGF0aW5nKToKKyAgICAgICAgKFdlYktpdDo6V2ViR2Vv
bG9jYXRpb25NYW5hZ2VyUHJveHk6OnNldEVuYWJsZUhpZ2hBY2N1cmFjeSk6CisgICAgICAgIChX
ZWJLaXQ6OldlYkdlb2xvY2F0aW9uTWFuYWdlclByb3h5OjpzZXRQcm92aWRlcik6CisgICAgICAg
IChXZWJLaXQ6OldlYkdlb2xvY2F0aW9uTWFuYWdlclByb3h5Ojppc1VwZGF0aW5nIGNvbnN0KToK
KyAgICAgICAgKFdlYktpdDo6V2ViR2VvbG9jYXRpb25NYW5hZ2VyUHJveHk6OmlzSGlnaEFjY3Vy
YWN5RW5hYmxlZCBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6OldlYkdlb2xvY2F0aW9uTWFuYWdl
clByb3h5Ojpwcm92aWRlclN0YXJ0VXBkYXRpbmcpOgorICAgICAgICAoV2ViS2l0OjpXZWJHZW9s
b2NhdGlvbk1hbmFnZXJQcm94eTo6cHJvdmlkZXJTdG9wVXBkYXRpbmcpOgorICAgICAgICAoV2Vi
S2l0OjpXZWJHZW9sb2NhdGlvbk1hbmFnZXJQcm94eTo6cHJvdmlkZXJTZXRFbmFibGVkSGlnaEFj
Y3VyYWN5KToKKyAgICAgICAgKFdlYktpdDo6V2ViR2VvbG9jYXRpb25NYW5hZ2VyUHJveHk6OnJl
c2V0UGVybWlzc2lvbnMpOiBEZWxldGVkLgorICAgICAgICAoV2ViS2l0OjpXZWJHZW9sb2NhdGlv
bk1hbmFnZXJQcm94eTo6cmVtb3ZlUmVxdWVzdGVyKTogRGVsZXRlZC4KKyAgICAgICAgKiBVSVBy
b2Nlc3MvV2ViR2VvbG9jYXRpb25NYW5hZ2VyUHJveHkuaDoKKyAgICAgICAgKFdlYktpdDo6V2Vi
R2VvbG9jYXRpb25NYW5hZ2VyUHJveHk6Omxhc3RQb3NpdGlvbiBjb25zdCk6IERlbGV0ZWQuCisg
ICAgICAgIChXZWJLaXQ6OldlYkdlb2xvY2F0aW9uTWFuYWdlclByb3h5Ojppc1VwZGF0aW5nIGNv
bnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYktpdDo6V2ViR2VvbG9jYXRpb25NYW5hZ2VyUHJv
eHk6OmlzSGlnaEFjY3VyYWN5RW5hYmxlZCBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgICogVUlQ
cm9jZXNzL1dlYkdlb2xvY2F0aW9uTWFuYWdlclByb3h5Lm1lc3NhZ2VzLmluOgorICAgICAgICAq
IFVJUHJvY2Vzcy9pb3MvV0tHZW9sb2NhdGlvblByb3ZpZGVySU9TLm1tOgorICAgICAgICAoLVtX
S0dlb2xvY2F0aW9uUHJvdmlkZXJJT1MgX3N0YXJ0VXBkYXRpbmddKToKKyAgICAgICAgKC1bV0tH
ZW9sb2NhdGlvblByb3ZpZGVySU9TIF9zdG9wVXBkYXRpbmddKToKKyAgICAgICAgKC1bV0tHZW9s
b2NhdGlvblByb3ZpZGVySU9TIF9zZXRFbmFibGVIaWdoQWNjdXJhY3k6XSk6CisgICAgICAgICgt
W1dLR2VvbG9jYXRpb25Qcm92aWRlcklPUyBpbml0V2l0aFByb2Nlc3NQb29sOl0pOgorICAgICAg
ICAoLVtXS0dlb2xvY2F0aW9uUHJvdmlkZXJJT1MgZGVjaWRlUG9saWN5Rm9yR2VvbG9jYXRpb25S
ZXF1ZXN0RnJvbU9yaWdpbjpjb21wbGV0aW9uSGFuZGxlcjp2aWV3Ol0pOgorICAgICAgICAoLVtX
S0dlb2xvY2F0aW9uUHJvdmlkZXJJT1MgZ2VvbG9jYXRpb25BdXRob3JpemF0aW9uR3JhbnRlZF0p
OgorICAgICAgICAoLVtXS0dlb2xvY2F0aW9uUHJvdmlkZXJJT1MgcG9zaXRpb25DaGFuZ2VkOl0p
OgorICAgICAgICAoLVtXS0dlb2xvY2F0aW9uUHJvdmlkZXJJT1MgZXJyb3JPY2N1cnJlZDpdKToK
KyAgICAgICAgKC1bV0tHZW9sb2NhdGlvblByb3ZpZGVySU9TIHJlc2V0R2VvbG9jYXRpb25dKToK
KyAgICAgICAgKHN0YXJ0VXBkYXRpbmdDYWxsYmFjayk6IERlbGV0ZWQuCisgICAgICAgIChzdG9w
VXBkYXRpbmdDYWxsYmFjayk6IERlbGV0ZWQuCisgICAgICAgIChzZXRFbmFibGVIaWdoQWNjdXJh
Y3kpOiBEZWxldGVkLgorICAgICAgICAoLVtXS0xlZ2FjeUNvcmVMb2NhdGlvblByb3ZpZGVyIHNl
dExpc3RlbmVyOl0pOiBEZWxldGVkLgorICAgICAgICAoLVtXS0xlZ2FjeUNvcmVMb2NhdGlvblBy
b3ZpZGVyIHJlcXVlc3RHZW9sb2NhdGlvbkF1dGhvcml6YXRpb25dKTogRGVsZXRlZC4KKyAgICAg
ICAgKC1bV0tMZWdhY3lDb3JlTG9jYXRpb25Qcm92aWRlciBzdGFydF0pOiBEZWxldGVkLgorICAg
ICAgICAoLVtXS0xlZ2FjeUNvcmVMb2NhdGlvblByb3ZpZGVyIHN0b3BdKTogRGVsZXRlZC4KKyAg
ICAgICAgKC1bV0tMZWdhY3lDb3JlTG9jYXRpb25Qcm92aWRlciBzZXRFbmFibGVIaWdoQWNjdXJh
Y3k6XSk6IERlbGV0ZWQuCisgICAgICAgICgtW1dLTGVnYWN5Q29yZUxvY2F0aW9uUHJvdmlkZXIg
Z2VvbG9jYXRpb25BdXRob3JpemF0aW9uR3JhbnRlZF0pOiBEZWxldGVkLgorICAgICAgICAoLVtX
S0xlZ2FjeUNvcmVMb2NhdGlvblByb3ZpZGVyIGdlb2xvY2F0aW9uQXV0aG9yaXphdGlvbkRlbmll
ZF0pOiBEZWxldGVkLgorICAgICAgICAoLVtXS0xlZ2FjeUNvcmVMb2NhdGlvblByb3ZpZGVyIHBv
c2l0aW9uQ2hhbmdlZDpdKTogRGVsZXRlZC4KKyAgICAgICAgKC1bV0tMZWdhY3lDb3JlTG9jYXRp
b25Qcm92aWRlciBlcnJvck9jY3VycmVkOl0pOiBEZWxldGVkLgorICAgICAgICAoLVtXS0xlZ2Fj
eUNvcmVMb2NhdGlvblByb3ZpZGVyIHJlc2V0R2VvbG9jYXRpb25dKTogRGVsZXRlZC4KKyAgICAg
ICAgKiBXZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBXZWJQcm9j
ZXNzL0dlb2xvY2F0aW9uL1dlYkdlb2xvY2F0aW9uTWFuYWdlci5jcHA6CisgICAgICAgIChXZWJL
aXQ6OnJlZ2lzdHJhYmxlRG9tYWluRm9yUGFnZSk6CisgICAgICAgIChXZWJLaXQ6OldlYkdlb2xv
Y2F0aW9uTWFuYWdlcjo6cmVnaXN0ZXJXZWJQYWdlKToKKyAgICAgICAgKFdlYktpdDo6V2ViR2Vv
bG9jYXRpb25NYW5hZ2VyOjp1bnJlZ2lzdGVyV2ViUGFnZSk6CisgICAgICAgIChXZWJLaXQ6Oldl
Ykdlb2xvY2F0aW9uTWFuYWdlcjo6c2V0RW5hYmxlSGlnaEFjY3VyYWN5Rm9yUGFnZSk6CisgICAg
ICAgIChXZWJLaXQ6OldlYkdlb2xvY2F0aW9uTWFuYWdlcjo6ZGlkQ2hhbmdlUG9zaXRpb24pOgor
ICAgICAgICAoV2ViS2l0OjpXZWJHZW9sb2NhdGlvbk1hbmFnZXI6OmRpZEZhaWxUb0RldGVybWlu
ZVBvc2l0aW9uKToKKyAgICAgICAgKFdlYktpdDo6V2ViR2VvbG9jYXRpb25NYW5hZ2VyOjpyZXNl
dFBlcm1pc3Npb25zKToKKyAgICAgICAgKFdlYktpdDo6V2ViR2VvbG9jYXRpb25NYW5hZ2VyOjpp
c1VwZGF0aW5nIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYktpdDo6V2ViR2VvbG9jYXRp
b25NYW5hZ2VyOjppc0hpZ2hBY2N1cmFjeUVuYWJsZWQgY29uc3QpOiBEZWxldGVkLgorICAgICAg
ICAqIFdlYlByb2Nlc3MvR2VvbG9jYXRpb24vV2ViR2VvbG9jYXRpb25NYW5hZ2VyLmg6CisgICAg
ICAgICogV2ViUHJvY2Vzcy9HZW9sb2NhdGlvbi9XZWJHZW9sb2NhdGlvbk1hbmFnZXIubWVzc2Fn
ZXMuaW46CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJHZW9sb2NhdGlv
bkNsaWVudC5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYkdlb2xvY2F0aW9uQ2xpZW50OjpzdGFy
dFVwZGF0aW5nKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkdlb2xv
Y2F0aW9uQ2xpZW50Lmg6CisgICAgICAgIChXZWJLaXQ6OldlYkdlb2xvY2F0aW9uQ2xpZW50OjpX
ZWJHZW9sb2NhdGlvbkNsaWVudCk6IERlbGV0ZWQuCisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQ
cm9jZXNzLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzczo6cmVzZXRBbGxHZW9sb2Nh
dGlvblBlcm1pc3Npb25zKTogRGVsZXRlZC4KKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlByb2Nl
c3MuaDoKKwogMjAyMi0wMi0xNSAgQ2FybG9zIEdhcmNpYSBDYW1wb3MgIDxjZ2FyY2lhQGlnYWxp
YS5jb20+CiAKICAgICAgICAgW0dUS10gRC1CdXMgY3Jhc2ggYXRrLWJyaWRnZQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdExlZ2Fj
eS9tYWMvQ2hhbmdlTG9nCmluZGV4IDY4MDM5NDg1OGExNWI4YTI1Njk2YWFlYzdjOGQ5NGFhNzNh
ZDcyMjMuLjk5Mzg2NTg0M2E3ZTg4ZTFmZjdkODRkY2Y5N2IxZTllMDcyMjZmYzYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0
TGVnYWN5L21hYy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNSBAQAorMjAyMi0wMi0xMyAgQ2hyaXMg
RHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgorCisgICAgICAgIERvIHByZWxpbWluYXJ5IHdvcmsg
dG8gcGFzcyBkb21haW4gbmFtZXMgdG8gQ29yZUxvY2F0aW9uCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzY1NjYKKyAgICAgICAgPHJkYXI6Ly84ODc2
MTQxMz4KKworICAgICAgICBSZXZpZXdlZCBieSBEYXJpbiBBZGxlci4KKworICAgICAgICAqIFdl
YkNvcmVTdXBwb3J0L1dlYkdlb2xvY2F0aW9uQ2xpZW50Lmg6CisgICAgICAgICogV2ViQ29yZVN1
cHBvcnQvV2ViR2VvbG9jYXRpb25DbGllbnQubW06CisgICAgICAgIChXZWJHZW9sb2NhdGlvbkNs
aWVudDo6c3RhcnRVcGRhdGluZyk6CisKIDIwMjItMDItMTEgIENocmlzIER1bWV6ICA8Y2R1bWV6
QGFwcGxlLmNvbT4KIAogICAgICAgICBVbnJldmlld2VkLCBmaXggYnVpbGQgd2l0aCB0aGUgbGF0
ZXN0IGlPUyBTREsuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9DaGFuZ2VM
b2cgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9DaGFuZ2VMb2cKaW5kZXggNjk1YWE5MTA1Mzll
ZjAyMTA1ZjUyMTkzMDRjMDk3ZTEwMzEyNjQ1NS4uZjQwMGYzNjdkMDUyYWJlNTg3NTlhNWQ3MmM1
Mjk2NTFkZDk5MTQzZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vQ2hhbmdl
TG9nCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE1
IEBACisyMDIyLTAyLTEzICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CisKKyAgICAg
ICAgRG8gcHJlbGltaW5hcnkgd29yayB0byBwYXNzIGRvbWFpbiBuYW1lcyB0byBDb3JlTG9jYXRp
b24KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzNjU2
NgorICAgICAgICA8cmRhcjovLzg4NzYxNDEzPgorCisgICAgICAgIFJldmlld2VkIGJ5IERhcmlu
IEFkbGVyLgorCisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2ViR2VvbG9jYXRpb25DbGllbnQu
Y3BwOgorICAgICAgICAoV2ViR2VvbG9jYXRpb25DbGllbnQ6OnN0YXJ0VXBkYXRpbmcpOgorICAg
ICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYkdlb2xvY2F0aW9uQ2xpZW50Lmg6CisKIDIwMjItMDIt
MDEgIE15bGVzIEMuIE1heGZpZWxkICA8bW1heGZpZWxkQGFwcGxlLmNvbT4KIAogICAgICAgICBS
ZW5hbWUgRm9udENhc2NhZGU6OmZvbnRNZXRyaWNzKCkgYW5kIFJlbmRlclN0eWxlOjpmb250TWV0
cmljcygpIHRvIGZvbnRNZXRyaWNzT2ZQcmltYXJ5Rm9udCgpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V1RGL3d0Zi9QbGF0Zm9ybUhhdmUuaCBiL1NvdXJjZS9XVEYvd3RmL1BsYXRmb3JtSGF2ZS5oCmlu
ZGV4IDA5MmJjMzYyMTUwMWQ0NGNlYWZiMDcwZmFjY2QzOTk1Y2RhMjMxMjcuLjY0YTVlNzliMDQ0
ZWZiYjgyYWVmMjQ5YTQxYjJkZDk4ZmJlODU3MGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3Rm
L1BsYXRmb3JtSGF2ZS5oCisrKyBiL1NvdXJjZS9XVEYvd3RmL1BsYXRmb3JtSGF2ZS5oCkBAIC0x
MTE5LDYgKzExMTksMTYgQEAKICNkZWZpbmUgSEFWRV9OU1RFWFRMSVNUX01BUktFUl9GT1JNQVRT
IDEKICNlbmRpZgogCisjaWYgKFBMQVRGT1JNKElPUykgJiYgX19JUEhPTkVfT1NfVkVSU0lPTl9N
QVhfQUxMT1dFRCA+PSAxNjAwMDApIFwKKyAgICB8fCAoUExBVEZPUk0oV0FUQ0hPUykgJiYgX19X
QVRDSF9PU19WRVJTSU9OX01BWF9BTExPV0VEID49IDkwMDAwKSBcCisgICAgfHwgKFBMQVRGT1JN
KEFQUExFVFYpICYmIF9fVFZfT1NfVkVSU0lPTl9NQVhfQUxMT1dFRCA+PSAxNjAwMDApCisjZGVm
aW5lIEhBVkVfQ09SRV9MT0NBVElPTl9XRUJTSVRFX0lERU5USUZJRVJTIDEKKyNlbmRpZgorCisj
aWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkgfHwgKFBMQVRGT1JNKE1BQykgJiYgX19NQUNfT1NfWF9W
RVJTSU9OX01JTl9SRVFVSVJFRCA+PSAxMDE0MDAgJiYgZGVmaW5lZCBfX2hhc19pbmNsdWRlICYm
IF9faGFzX2luY2x1ZGUoPENvcmVGb3VuZGF0aW9uL0NGUHJpdi5oPikpCisjZGVmaW5lIEhBVkVf
Q09SRV9MT0NBVElPTl9BVVRIT1JJWkVEX1dIRU5fSU5fVVNFIDEKKyNlbmRpZgorCiAjaWYgUExB
VEZPUk0oTUFDKQogI2RlZmluZSBIQVZFX1NDRU5FS0lUIDEKICNlbmRpZgpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9nZW9sb2NhdGlvbi9HZW9sb2NhdGlvbkNsaWVudC5oIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9nZW9sb2NhdGlvbi9HZW9sb2NhdGlvbkNsaWVudC5oCmlu
ZGV4IDViYWYzYWQ4MmM1N2U1YWNiYTk2ZTNkZjBlZDYwZWJjNzU0YmNiMDUuLmE0ZTg2MjM2MjU1
NjdlOWFkZmViMDBkODI0MDAwYTI3N2RiZWFmMDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvZ2VvbG9jYXRpb24vR2VvbG9jYXRpb25DbGllbnQuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2dlb2xvY2F0aW9uL0dlb2xvY2F0aW9uQ2xpZW50LmgKQEAgLTM4LDcgKzM4
LDcgQEAgY2xhc3MgR2VvbG9jYXRpb25DbGllbnQgewogcHVibGljOgogICAgIHZpcnR1YWwgdm9p
ZCBnZW9sb2NhdGlvbkRlc3Ryb3llZCgpID0gMDsKIAotICAgIHZpcnR1YWwgdm9pZCBzdGFydFVw
ZGF0aW5nKGNvbnN0IFN0cmluZyYgYXV0aG9yaXphdGlvblRva2VuKSA9IDA7CisgICAgdmlydHVh
bCB2b2lkIHN0YXJ0VXBkYXRpbmcoY29uc3QgU3RyaW5nJiBhdXRob3JpemF0aW9uVG9rZW4sIGJv
b2wgbmVlZHNIaWdoQWNjdXJhY3kpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgc3RvcFVwZGF0aW5n
KCkgPSAwOwogICAgIHZpcnR1YWwgdm9pZCByZXZva2VBdXRob3JpemF0aW9uVG9rZW4oY29uc3Qg
U3RyaW5nJikgeyB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZ2VvbG9j
YXRpb24vR2VvbG9jYXRpb25Db250cm9sbGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
Z2VvbG9jYXRpb24vR2VvbG9jYXRpb25Db250cm9sbGVyLmNwcAppbmRleCAwNjE2MjkxNjBkOWJj
YzdkNWRhZjc0Y2ZjNGY4MTU1MGJhNDhkZThjLi4wN2RkNjVmM2MxYWVlNzllYjljNzMyODM2YTJk
NWFhZDAxNzMzM2NmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2dlb2xvY2F0
aW9uL0dlb2xvY2F0aW9uQ29udHJvbGxlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9nZW9sb2NhdGlvbi9HZW9sb2NhdGlvbkNvbnRyb2xsZXIuY3BwCkBAIC01MiwxOSArNTIsMjUg
QEAgR2VvbG9jYXRpb25Db250cm9sbGVyOjp+R2VvbG9jYXRpb25Db250cm9sbGVyKCkKICAgICBt
X2NsaWVudC5nZW9sb2NhdGlvbkRlc3Ryb3llZCgpOwogfQogCit2b2lkIEdlb2xvY2F0aW9uQ29u
dHJvbGxlcjo6ZGlkTmF2aWdhdGVQYWdlKCkKK3sKKyAgICB3aGlsZSAoIW1fb2JzZXJ2ZXJzLmlz
RW1wdHkoKSkKKyAgICAgICAgcmVtb3ZlT2JzZXJ2ZXIobV9vYnNlcnZlcnMuYmVnaW4oKS0+Z2V0
KCkpOworfQorCiB2b2lkIEdlb2xvY2F0aW9uQ29udHJvbGxlcjo6YWRkT2JzZXJ2ZXIoR2VvbG9j
YXRpb24mIG9ic2VydmVyLCBib29sIGVuYWJsZUhpZ2hBY2N1cmFjeSkKIHsKLSAgICAvLyBUaGlz
IG1heSBiZSBjYWxsZWQgbXVsdGlwbGUgdGltZXMgd2l0aCB0aGUgc2FtZSBvYnNlcnZlciwgdGhv
dWdoIHJlbW92ZU9ic2VydmVyKCkKLSAgICAvLyBpcyBjYWxsZWQgb25seSBvbmNlIHdpdGggZWFj
aC4KLSAgICBib29sIHdhc0VtcHR5ID0gbV9vYnNlcnZlcnMuaXNFbXB0eSgpOworICAgIGJvb2wg
aGlnaEFjY3VyYWN5V2FzUmVxdWlyZWQgPSBuZWVkc0hpZ2hBY2N1cmFjeSgpOworCiAgICAgbV9v
YnNlcnZlcnMuYWRkKG9ic2VydmVyKTsKICAgICBpZiAoZW5hYmxlSGlnaEFjY3VyYWN5KQogICAg
ICAgICBtX2hpZ2hBY2N1cmFjeU9ic2VydmVycy5hZGQob2JzZXJ2ZXIpOwogCi0gICAgaWYgKGVu
YWJsZUhpZ2hBY2N1cmFjeSkKLSAgICAgICAgbV9jbGllbnQuc2V0RW5hYmxlSGlnaEFjY3VyYWN5
KHRydWUpOwotICAgIGlmICh3YXNFbXB0eSAmJiBtX3BhZ2UuaXNWaXNpYmxlKCkpCi0gICAgICAg
IG1fY2xpZW50LnN0YXJ0VXBkYXRpbmcob2JzZXJ2ZXIuYXV0aG9yaXphdGlvblRva2VuKCkpOwor
ICAgIGlmIChtX2lzVXBkYXRpbmcpIHsKKyAgICAgICAgaWYgKCFoaWdoQWNjdXJhY3lXYXNSZXF1
aXJlZCAmJiBlbmFibGVIaWdoQWNjdXJhY3kpCisgICAgICAgICAgICBtX2NsaWVudC5zZXRFbmFi
bGVIaWdoQWNjdXJhY3kodHJ1ZSk7CisgICAgfSBlbHNlCisgICAgICAgIHN0YXJ0VXBkYXRpbmdJ
Zk5lY2Vzc2FyeSgpOwogfQogCiB2b2lkIEdlb2xvY2F0aW9uQ29udHJvbGxlcjo6cmVtb3ZlT2Jz
ZXJ2ZXIoR2VvbG9jYXRpb24mIG9ic2VydmVyKQpAQCAtNzIsMTIgKzc4LDE3IEBAIHZvaWQgR2Vv
bG9jYXRpb25Db250cm9sbGVyOjpyZW1vdmVPYnNlcnZlcihHZW9sb2NhdGlvbiYgb2JzZXJ2ZXIp
CiAgICAgaWYgKCFtX29ic2VydmVycy5jb250YWlucyhvYnNlcnZlcikpCiAgICAgICAgIHJldHVy
bjsKIAorICAgIGJvb2wgaGlnaEFjY3VyYWN5V2FzUmVxdWlyZWQgPSBuZWVkc0hpZ2hBY2N1cmFj
eSgpOworCiAgICAgbV9vYnNlcnZlcnMucmVtb3ZlKG9ic2VydmVyKTsKICAgICBtX2hpZ2hBY2N1
cmFjeU9ic2VydmVycy5yZW1vdmUob2JzZXJ2ZXIpOwogCisgICAgaWYgKCFtX2lzVXBkYXRpbmcp
CisgICAgICAgIHJldHVybjsKKwogICAgIGlmIChtX29ic2VydmVycy5pc0VtcHR5KCkpCi0gICAg
ICAgIG1fY2xpZW50LnN0b3BVcGRhdGluZygpOwotICAgIGVsc2UgaWYgKG1faGlnaEFjY3VyYWN5
T2JzZXJ2ZXJzLmlzRW1wdHkoKSkKKyAgICAgICAgc3RvcFVwZGF0aW5nSWZOZWNlc3NhcnkoKTsK
KyAgICBlbHNlIGlmIChoaWdoQWNjdXJhY3lXYXNSZXF1aXJlZCAmJiAhbmVlZHNIaWdoQWNjdXJh
Y3koKSkKICAgICAgICAgbV9jbGllbnQuc2V0RW5hYmxlSGlnaEFjY3VyYWN5KGZhbHNlKTsKIH0K
IApAQCAtMTM5LDkgKzE1MCw5IEBAIHZvaWQgR2VvbG9jYXRpb25Db250cm9sbGVyOjphY3Rpdml0
eVN0YXRlRGlkQ2hhbmdlKE9wdGlvblNldDxBY3Rpdml0eVN0YXRlOjpGbGFnCiAgICAgYXV0byBj
aGFuZ2VkID0gb2xkQWN0aXZpdHlTdGF0ZSBeIG5ld0FjdGl2aXR5U3RhdGU7CiAgICAgaWYgKGNo
YW5nZWQgJiBBY3Rpdml0eVN0YXRlOjpJc1Zpc2libGUgJiYgIW1fb2JzZXJ2ZXJzLmlzRW1wdHko
KSkgewogICAgICAgICBpZiAobmV3QWN0aXZpdHlTdGF0ZSAmIEFjdGl2aXR5U3RhdGU6OklzVmlz
aWJsZSkKLSAgICAgICAgICAgIG1fY2xpZW50LnN0YXJ0VXBkYXRpbmcoKCptX29ic2VydmVycy5y
YW5kb20oKSktPmF1dGhvcml6YXRpb25Ub2tlbigpKTsKKyAgICAgICAgICAgIHN0YXJ0VXBkYXRp
bmdJZk5lY2Vzc2FyeSgpOwogICAgICAgICBlbHNlCi0gICAgICAgICAgICBtX2NsaWVudC5zdG9w
VXBkYXRpbmcoKTsKKyAgICAgICAgICAgIHN0b3BVcGRhdGluZ0lmTmVjZXNzYXJ5KCk7CiAgICAg
fQogCiAgICAgaWYgKCFtX3BhZ2UuaXNWaXNpYmxlKCkpCkBAIC0xNTIsNiArMTYzLDI0IEBAIHZv
aWQgR2VvbG9jYXRpb25Db250cm9sbGVyOjphY3Rpdml0eVN0YXRlRGlkQ2hhbmdlKE9wdGlvblNl
dDxBY3Rpdml0eVN0YXRlOjpGbGFnCiAgICAgICAgIG1fY2xpZW50LnJlcXVlc3RQZXJtaXNzaW9u
KHBlcm1pc3Npb25SZXF1ZXN0LmdldCgpKTsKIH0KIAordm9pZCBHZW9sb2NhdGlvbkNvbnRyb2xs
ZXI6OnN0YXJ0VXBkYXRpbmdJZk5lY2Vzc2FyeSgpCit7CisgICAgaWYgKG1faXNVcGRhdGluZyB8
fCAhbV9wYWdlLmlzVmlzaWJsZSgpIHx8IG1fb2JzZXJ2ZXJzLmlzRW1wdHkoKSkKKyAgICAgICAg
cmV0dXJuOworCisgICAgbV9jbGllbnQuc3RhcnRVcGRhdGluZygoKm1fb2JzZXJ2ZXJzLnJhbmRv
bSgpKS0+YXV0aG9yaXphdGlvblRva2VuKCksIG5lZWRzSGlnaEFjY3VyYWN5KCkpOworICAgIG1f
aXNVcGRhdGluZyA9IHRydWU7Cit9CisKK3ZvaWQgR2VvbG9jYXRpb25Db250cm9sbGVyOjpzdG9w
VXBkYXRpbmdJZk5lY2Vzc2FyeSgpCit7CisgICAgaWYgKCFtX2lzVXBkYXRpbmcpCisgICAgICAg
IHJldHVybjsKKworICAgIG1fY2xpZW50LnN0b3BVcGRhdGluZygpOworICAgIG1faXNVcGRhdGlu
ZyA9IGZhbHNlOworfQorCiBjb25zdCBjaGFyKiBHZW9sb2NhdGlvbkNvbnRyb2xsZXI6OnN1cHBs
ZW1lbnROYW1lKCkKIHsKICAgICByZXR1cm4gIkdlb2xvY2F0aW9uQ29udHJvbGxlciI7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2dlb2xvY2F0aW9uL0dlb2xvY2F0aW9uQ29u
dHJvbGxlci5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9nZW9sb2NhdGlvbi9HZW9sb2NhdGlv
bkNvbnRyb2xsZXIuaAppbmRleCA0MmY1ZDA2MmRiNmYwOWM2NjAxMTFkNjZkOWYwZmNmZmYzYjIw
NzQwLi5iYmZmNTc1ZWIwNTgzMjQwNzgwZDNiNDFhOTY3NDJjNmIxZDcyNDhlIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2dlb2xvY2F0aW9uL0dlb2xvY2F0aW9uQ29udHJvbGxl
ci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZ2VvbG9jYXRpb24vR2VvbG9jYXRpb25D
b250cm9sbGVyLmgKQEAgLTMwLDYgKzMwLDcgQEAKICNpbmNsdWRlICJBY3Rpdml0eVN0YXRlQ2hh
bmdlT2JzZXJ2ZXIuaCIKICNpbmNsdWRlICJHZW9sb2NhdGlvbi5oIgogI2luY2x1ZGUgIlBhZ2Uu
aCIKKyNpbmNsdWRlICJSZWdpc3RyYWJsZURvbWFpbi5oIgogI2luY2x1ZGUgPHd0Zi9IYXNoU2V0
Lmg+CiAjaW5jbHVkZSA8d3RmL05vbmNvcHlhYmxlLmg+CiAjaW5jbHVkZSA8d3RmL1JlZlB0ci5o
PgpAQCAtNjUsNiArNjYsOCBAQCBwdWJsaWM6CiAKICAgICB2b2lkIHJldm9rZUF1dGhvcml6YXRp
b25Ub2tlbihjb25zdCBTdHJpbmcmKTsKIAorICAgIHZvaWQgZGlkTmF2aWdhdGVQYWdlKCk7CisK
IHByaXZhdGU6CiAgICAgUGFnZSYgbV9wYWdlOwogICAgIEdlb2xvY2F0aW9uQ2xpZW50JiBtX2Ns
aWVudDsKQEAgLTczLDYgKzc2LDExIEBAIHByaXZhdGU6CiAKICAgICBzdGQ6Om9wdGlvbmFsPEdl
b2xvY2F0aW9uUG9zaXRpb25EYXRhPiBtX2xhc3RQb3NpdGlvbjsKIAorICAgIGJvb2wgbmVlZHNI
aWdoQWNjdXJhY3koKSBjb25zdCB7IHJldHVybiAhbV9oaWdoQWNjdXJhY3lPYnNlcnZlcnMuaXNF
bXB0eSgpOyB9CisKKyAgICB2b2lkIHN0YXJ0VXBkYXRpbmdJZk5lY2Vzc2FyeSgpOworICAgIHZv
aWQgc3RvcFVwZGF0aW5nSWZOZWNlc3NhcnkoKTsKKwogICAgIHR5cGVkZWYgSGFzaFNldDxSZWY8
R2VvbG9jYXRpb24+PiBPYnNlcnZlcnNTZXQ7CiAgICAgLy8gQWxsIG9ic2VydmVyczsgYm90aCB0
aG9zZSByZXF1ZXN0aW5nIGhpZ2ggYWNjdXJhY3kgYW5kIHRob3NlIG5vdC4KICAgICBPYnNlcnZl
cnNTZXQgbV9vYnNlcnZlcnM7CkBAIC04MCw2ICs4OCw5IEBAIHByaXZhdGU6CiAKICAgICAvLyBX
aGlsZSB0aGUgcGFnZSBpcyBub3QgdmlzaWJsZSwgd2UgcGVuZCBwZXJtaXNzaW9uIHJlcXVlc3Rz
LgogICAgIEhhc2hTZXQ8UmVmPEdlb2xvY2F0aW9uPj4gbV9wZW5kaW5nUGVybWlzc2lvblJlcXVl
c3Q7CisKKyAgICBSZWdpc3RyYWJsZURvbWFpbiBtX3JlZ2lzdHJhYmxlRG9tYWluOworICAgIGJv
b2wgbV9pc1VwZGF0aW5nIHsgZmFsc2UgfTsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZ2VvbG9jYXRpb24vR2VvbG9jYXRp
b25Qb3NpdGlvbkRhdGEuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZ2VvbG9jYXRpb24vR2Vv
bG9jYXRpb25Qb3NpdGlvbkRhdGEuaAppbmRleCA5MjYyMjE3MGM4YWFkNjk4OWI4YTEyY2U0ODM1
NmRjNjg3YmY2ZTM1Li5jYzIxODBhODM3ZDI3NDNjMWZiZjc2MWM0MTBlMWM3ZWJmZWFlZTdkIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2dlb2xvY2F0aW9uL0dlb2xvY2F0aW9u
UG9zaXRpb25EYXRhLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9nZW9sb2NhdGlvbi9H
ZW9sb2NhdGlvblBvc2l0aW9uRGF0YS5oCkBAIC0yOSw3ICsyOSw3IEBACiAjaW5jbHVkZSA8d3Rm
L1JlZi5oPgogI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CiAKLSNpZiBQTEFURk9STShJT1Nf
RkFNSUxZKQorI2lmIFBMQVRGT1JNKENPQ09BKQogT0JKQ19DTEFTUyBDTExvY2F0aW9uOwogI2Vu
ZGlmCiAKQEAgLTQ3LDcgKzQ3LDcgQEAgcHVibGljOgogICAgIHsKICAgICB9CiAKLSNpZiBQTEFU
Rk9STShJT1NfRkFNSUxZKQorI2lmIFBMQVRGT1JNKENPQ09BKQogICAgIFdFQkNPUkVfRVhQT1JU
IGV4cGxpY2l0IEdlb2xvY2F0aW9uUG9zaXRpb25EYXRhKENMTG9jYXRpb24qKTsKICNlbmRpZgog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2dlb2xvY2F0aW9uL2NvY29hL0dl
b2xvY2F0aW9uUG9zaXRpb25EYXRhQ29jb2EubW0gYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2dl
b2xvY2F0aW9uL2NvY29hL0dlb2xvY2F0aW9uUG9zaXRpb25EYXRhQ29jb2EubW0KbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uODFlNDBmMTY0MmIyNjg5NTJiN2IwMzk4ZTRlOGZlMmI4Y2Q1ODBkMQotLS0gL2Rldi9udWxs
CisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZ2VvbG9jYXRpb24vY29jb2EvR2VvbG9jYXRp
b25Qb3NpdGlvbkRhdGFDb2NvYS5tbQpAQCAtMCwwICsxLDUzIEBACisvKgorICogQ29weXJpZ2h0
IChDKSAyMDE3IEFwcGxlIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KKyAqCisgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisg
KiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisg
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBB
TlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQu
ICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVY
RU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2ltcG9ydCAiY29uZmlnLmgiCisjaW1wb3J0
ICJHZW9sb2NhdGlvblBvc2l0aW9uLmgiCisKKyNpbXBvcnQgPENvcmVMb2NhdGlvbi9DTExvY2F0
aW9uLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworR2VvbG9jYXRpb25Qb3NpdGlvbkRhdGE6
Okdlb2xvY2F0aW9uUG9zaXRpb25EYXRhKENMTG9jYXRpb24gKmxvY2F0aW9uKQorICAgIDogdGlt
ZXN0YW1wKGxvY2F0aW9uLnRpbWVzdGFtcC50aW1lSW50ZXJ2YWxTaW5jZTE5NzApCisgICAgLCBs
YXRpdHVkZShsb2NhdGlvbi5jb29yZGluYXRlLmxhdGl0dWRlKQorICAgICwgbG9uZ2l0dWRlKGxv
Y2F0aW9uLmNvb3JkaW5hdGUubG9uZ2l0dWRlKQorICAgICwgYWNjdXJhY3kobG9jYXRpb24uaG9y
aXpvbnRhbEFjY3VyYWN5KQoreworICAgIGlmIChsb2NhdGlvbi52ZXJ0aWNhbEFjY3VyYWN5ID49
IDAuMCkgeworICAgICAgICBhbHRpdHVkZSA9IGxvY2F0aW9uLmFsdGl0dWRlOworICAgICAgICBh
bHRpdHVkZUFjY3VyYWN5ID0gbG9jYXRpb24udmVydGljYWxBY2N1cmFjeTsKKyAgICB9CisgICAg
aWYgKGxvY2F0aW9uLnNwZWVkID49IDAuMCkKKyAgICAgICAgc3BlZWQgPSBsb2NhdGlvbi5zcGVl
ZDsKKyAgICBpZiAobG9jYXRpb24uY291cnNlID49IDAuMCkKKyAgICAgICAgaGVhZGluZyA9IGxv
Y2F0aW9uLmNvdXJzZTsKKyNpZiAhUExBVEZPUk0oTUFDQ0FUQUxZU1QpCisgICAgaWYgKGxvY2F0
aW9uLmZsb29yKQorICAgICAgICBmbG9vckxldmVsID0gbG9jYXRpb24uZmxvb3IubGV2ZWw7Cisj
ZW5kaWYKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9nZW9sb2NhdGlvbi9pb3MvR2VvbG9jYXRpb25Qb3NpdGlvbkRhdGFJT1Mu
bW0gYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2dlb2xvY2F0aW9uL2lvcy9HZW9sb2NhdGlvblBv
c2l0aW9uRGF0YUlPUy5tbQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOThkOWEyNDIx
ZTdmMjMwOWI0ZjYyM2IxNGQ3Y2JlMmI2YzdlMDQ1Yy4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2dlb2xvY2F0aW9u
L2lvcy9HZW9sb2NhdGlvblBvc2l0aW9uRGF0YUlPUy5tbQorKysgL2Rldi9udWxsCkBAIC0xLDU3
ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTcgQXBwbGUgSW5jLiBBbGwgUmlnaHRz
IFJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0Ogot
ICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhl
Ci0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
QVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKLSAqIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgot
ICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4g
T1IKLSAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLCBTUEVDSUFMLAotICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogUFJPQ1VSRU1FTlQgT0YgU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCi0gKiBQUk9G
SVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkg
VEhFT1JZCi0gKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0j
aW1wb3J0ICJjb25maWcuaCIKLSNpbXBvcnQgIkdlb2xvY2F0aW9uUG9zaXRpb24uaCIKLQotI2lm
IFBMQVRGT1JNKElPU19GQU1JTFkpCi0KLSNpbXBvcnQgPENvcmVMb2NhdGlvbi9DTExvY2F0aW9u
Lmg+Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotR2VvbG9jYXRpb25Qb3NpdGlvbkRhdGE6Okdl
b2xvY2F0aW9uUG9zaXRpb25EYXRhKENMTG9jYXRpb24qIGxvY2F0aW9uKQotICAgIDogdGltZXN0
YW1wKGxvY2F0aW9uLnRpbWVzdGFtcC50aW1lSW50ZXJ2YWxTaW5jZTE5NzApCi0gICAgLCBsYXRp
dHVkZShsb2NhdGlvbi5jb29yZGluYXRlLmxhdGl0dWRlKQotICAgICwgbG9uZ2l0dWRlKGxvY2F0
aW9uLmNvb3JkaW5hdGUubG9uZ2l0dWRlKQotICAgICwgYWNjdXJhY3kobG9jYXRpb24uaG9yaXpv
bnRhbEFjY3VyYWN5KQotewotICAgIGlmIChsb2NhdGlvbi52ZXJ0aWNhbEFjY3VyYWN5ID49IDAu
MCkgewotICAgICAgICBhbHRpdHVkZSA9IGxvY2F0aW9uLmFsdGl0dWRlOwotICAgICAgICBhbHRp
dHVkZUFjY3VyYWN5ID0gbG9jYXRpb24udmVydGljYWxBY2N1cmFjeTsKLSAgICB9Ci0gICAgaWYg
KGxvY2F0aW9uLnNwZWVkID49IDAuMCkKLSAgICAgICAgc3BlZWQgPSBsb2NhdGlvbi5zcGVlZDsK
LSAgICBpZiAobG9jYXRpb24uY291cnNlID49IDAuMCkKLSAgICAgICAgaGVhZGluZyA9IGxvY2F0
aW9uLmNvdXJzZTsKLSNpZiAhUExBVEZPUk0oTUFDQ0FUQUxZU1QpCi0gICAgaWYgKGxvY2F0aW9u
LmZsb29yKQotICAgICAgICBmbG9vckxldmVsID0gbG9jYXRpb24uZmxvb3IubGV2ZWw7Ci0jZW5k
aWYKLX0KLQotfQotCi0jZW5kaWYgLy8gUExBVEZPUk0oSU9TX0ZBTUlMWSkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL1NvdXJjZXNDb2NvYS50eHQgYi9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2Vz
Q29jb2EudHh0CmluZGV4IGM3YTJkYmRhYTBlNDBkZWNlYzAyODQ3Njk0MTQ5NjJhMGZmY2U1YTUu
LjQzZGYxY2NmMWY0OWI0MDAwNWIyYWMyNWIyNDU1ZmU1YmZmOGE3ZGMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL1NvdXJjZXNDb2NvYS50eHQKKysrIGIvU291cmNlL1dlYkNvcmUvU291cmNl
c0NvY29hLnR4dApAQCAtMjUxLDYgKzI1MSw3IEBAIHBsYXRmb3JtL2NmL01lZGlhQWNjZXNzaWJp
bGl0eVNvZnRMaW5rLmNwcAogcGxhdGZvcm0vY2YvUnVuTG9vcE9ic2VydmVyLmNwcAogcGxhdGZv
cm0vY2YvU2hhcmVkQnVmZmVyQ0YuY3BwCiBwbGF0Zm9ybS9jb2NvYS9Db250ZW50RmlsdGVyVW5i
bG9ja0hhbmRsZXJDb2NvYS5tbSBAbm8tdW5pZnkKK3BsYXRmb3JtL2NvY29hL0NvcmVMb2NhdGlv
bkdlb2xvY2F0aW9uUHJvdmlkZXIubW0KIHBsYXRmb3JtL2NvY29hL0NvcmVWaWRlb1NvZnRMaW5r
LmNwcAogcGxhdGZvcm0vY29jb2EvRHJhZ0RhdGFDb2NvYS5tbQogcGxhdGZvcm0vY29jb2EvRHJh
Z0ltYWdlQ29jb2EubW0KQEAgLTMwNyw3ICszMDgsNyBAQCBwbGF0Zm9ybS9ncmFwaGljcy9hdmZv
dW5kYXRpb24vTWVkaWFTZWxlY3Rpb25Hcm91cEFWRk9iakMubW0KIHBsYXRmb3JtL2dyYXBoaWNz
L2F2Zm91bmRhdGlvbi9TYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXIuY3BwCiBwbGF0Zm9ybS9ncmFw
aGljcy9hdmZvdW5kYXRpb24vV2ViTWVkaWFTZXNzaW9uTWFuYWdlck1hYy5jcHAKIHBsYXRmb3Jt
L2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0FWQXNzZXRNSU1FVHlwZUNhY2hlLm1tCi1wbGF0
Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9BVkFzc2V0VHJhY2tVdGlsaXRpZXMubW0K
K3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0FWQXNzZXRUcmFja1V0aWxpdGll
cy5tbSBAbm8tdW5pZnkKIHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0FWT3V0
cHV0RGV2aWNlTWVudUNvbnRyb2xsZXJUYXJnZXRQaWNrZXIubW0gQG5vLXVuaWZ5CiBwbGF0Zm9y
bS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9BVlJvdXRlUGlja2VyVmlld1RhcmdldFBpY2tl
ci5tbQogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvQVZTdHJlYW1EYXRhUGFy
c2VyTUlNRVR5cGVDYWNoZS5tbQpAQCAtMzE4LDcgKzMxOSw3IEBAIHBsYXRmb3JtL2dyYXBoaWNz
L2F2Zm91bmRhdGlvbi9vYmpjL0NETVNlc3Npb25BVkZvdW5kYXRpb25PYmpDLm1tCiBwbGF0Zm9y
bS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9DRE1TZXNzaW9uQVZTdHJlYW1TZXNzaW9uLm1t
CiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9DRE1TZXNzaW9uTWVkaWFTb3Vy
Y2VBVkZPYmpDLm1tCiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9JbWFnZURl
Y29kZXJBVkZPYmpDLm1tCi1wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9JbmJh
bmRUZXh0VHJhY2tQcml2YXRlQVZGT2JqQy5tbQorcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0
aW9uL29iamMvSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUFWRk9iakMubW0gQG5vLXVuaWZ5CiBwbGF0
Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9JbmJhbmRDaGFwdGVyVHJhY2tQcml2YXRl
QVZGT2JqQy5tbSBAbm8tdW5pZnkKIHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpj
L0xvY2FsU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyLm1tCiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZv
dW5kYXRpb24vb2JqYy9NZWRpYVBsYXliYWNrVGFyZ2V0UGlja2VyTWFjLm1tCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3Vy
Y2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggNzI4YzEz
ZDI2YjI1Y2I3YjVlOGY0Y2EwNzg1NGE4YWVmODE3MzRmNy4uNmY5ZWY4ZmQ2NDkxZThjMjY5ZWQ2
Nzg3NWRiNDAwNDE5NjVkYmU1NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNv
ZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMTM1Myw2ICsxMzUzLDcgQEAKIAkJNDY4MzQ0RTAx
RURERkFBQTAwQjc3OTVCIC8qIERPTVJlY3RMaXN0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0NjgzNDRERTFFRERGQTVGMDBCNzc5NUIgLyogRE9NUmVj
dExpc3QuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9Owog
CQk0NjgzREY0MDI3NjdERjk4MDA3RDAwQzggLyogSlNTaGFkb3dSZWFsbUdsb2JhbFNjb3BlQmFz
ZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDY4M0RG
M0UyNzY3REY5ODAwN0QwMEM4IC8qIEpTU2hhZG93UmVhbG1HbG9iYWxTY29wZUJhc2UuaCAqLzsg
fTsKIAkJNDY4M0RGNDEyNzY3RTkxQTAwN0QwMEM4IC8qIFNoYWRvd1JlYWxtR2xvYmFsU2NvcGUu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ2ODNERjNC
Mjc2N0RGMjYwMDdEMDBDOCAvKiBTaGFkb3dSZWFsbUdsb2JhbFNjb3BlLmggKi87IHNldHRpbmdz
ID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJNDY4OEU5ODAyN0I2QjQ1MDAw
NTY3Q0QyIC8qIENvcmVMb2NhdGlvbkdlb2xvY2F0aW9uUHJvdmlkZXIuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ2ODhFOTdGMjdCNkI0NDQwMDU2N0NE
MiAvKiBDb3JlTG9jYXRpb25HZW9sb2NhdGlvblByb3ZpZGVyLmggKi87IHNldHRpbmdzID0ge0FU
VFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNDY4OEVFM0MyNkREMjYxMDAwMkFGNUM0
IC8qIENyb3NzT3JpZ2luTW9kZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gNDY4OEVFM0EyNkREMjYwQzAwMkFGNUM0IC8qIENyb3NzT3JpZ2luTW9kZS5o
ICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTQ2OTQz
REM5Mjc2M0Y4MTcwMDRCNjEwRSAvKiBTaGFyZWRXb3JrZXJPYmplY3RJZGVudGlmaWVyLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0Njk0M0RDNzI3NjNG
ODBFMDA0QjYxMEUgLyogU2hhcmVkV29ya2VyT2JqZWN0SWRlbnRpZmllci5oICovOyBzZXR0aW5n
cyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTQ2OTg1RjIzMjdBNEE2QUQw
MDk3QTMyQiAvKiBTaGFyZWRXb3JrZXJLZXkuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDQ2OTg1RjIyMjdBNEE2ODYwMDk3QTMyQiAvKiBTaGFyZWRXb3Jr
ZXJLZXkuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwpA
QCAtMTM3MCw2ICsxMzcxLDcgQEAKIAkJNDZCOTUxOTkyMDdENjM0RDAwQTdEMkREIC8qIFJlbW90
ZURPTVdpbmRvdy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gNDZCOTUxOEUyMDdENjMyQTAwQTdEMkREIC8qIFJlbW90ZURPTVdpbmRvdy5oICovOyBzZXR0
aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTQ2Qjk1MTlBMjA3RDYz
NTQwMEE3RDJERCAvKiBSZW1vdGVGcmFtZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gNDZCOTUxOTIyMDdENjMyRTAwQTdEMkREIC8qIFJlbW90ZUZyYW1l
LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNDZC
OTVCRjUyMjMxQ0ZENjAwNTNBNTA0IC8qIERldmljZU9yaWVudGF0aW9uQW5kTW90aW9uQWNjZXNz
Q29udHJvbGxlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gNDZCOTVCRjQyMjMxQ0ZCODAwNTNBNTA0IC8qIERldmljZU9yaWVudGF0aW9uQW5kTW90aW9u
QWNjZXNzQ29udHJvbGxlci5oICovOyB9OworCQk0NkJBNDlCODI3QkI0NDMzMDA3N0Y2M0YgLyog
QVZBc3NldFRyYWNrVXRpbGl0aWVzLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gQ0RFQ0E4OTgxRURGNDQ3RDAwRENCMDhCIC8qIEFWQXNzZXRUcmFja1V0
aWxpdGllcy5tbSAqLzsgfTsKIAkJNDZCQ0JCQzIyMDg1MDA4RjAwNzEwNjM4IC8qIEpTUmVtb3Rl
RE9NV2luZG93QmFzZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gNDZCQ0JCQzAyMDg1MDA3RjAwNzEwNjM4IC8qIEpTUmVtb3RlRE9NV2luZG93QmFzZS5o
ICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTQ2QkQw
NUM1MjVCQjZFNTkwMDIyNUYzMCAvKiBBZGRFdmVudExpc3RlbmVyT3B0aW9ucy5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDZCRDA1QzIyNUJCNkU0RTAw
MjI1RjMwIC8qIEFkZEV2ZW50TGlzdGVuZXJPcHRpb25zLmggKi87IHNldHRpbmdzID0ge0FUVFJJ
QlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNDZCRDA1QzYyNUJCNkU2QzAwMjI1RjMwIC8q
IEV2ZW50TGlzdGVuZXJPcHRpb25zLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA0NkJEMDVDMzI1QkI2RTRFMDAyMjVGMzAgLyogRXZlbnRMaXN0ZW5lck9w
dGlvbnMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwpA
QCAtMTM3OCw2ICsxMzgwLDcgQEAKIAkJNDZDNjk2Q0IxRTcyMDVGNzAwNTk3OTM3IC8qIENQVU1v
bml0b3IuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ2
QzY5NkM5MUU3MjA1RTQwMDU5NzkzNyAvKiBDUFVNb25pdG9yLmggKi87IHNldHRpbmdzID0ge0FU
VFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNDZDNjk2Q0MxRTcyMDVGQzAwNTk3OTM3
IC8qIENQVU1vbml0b3IuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gNDZDNjk2Q0ExRTcyMDVFNDAwNTk3OTM3IC8qIENQVU1vbml0b3IuY3BwICovOyB9
OwogCQk0NkM4M0VGRTFBOUJCRTI5MDBBNzlBNDEgLyogR2VvTm90aWZpZXIuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ2QzgzRUZDMUE5QkJFMjkwMEE3
OUE0MSAvKiBHZW9Ob3RpZmllci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZh
dGUsICk7IH07IH07CisJCTQ2Q0E5NDMxMjdCODY5NTgwMEY0RjVGRiAvKiBJbmJhbmRUZXh0VHJh
Y2tQcml2YXRlQVZGT2JqQy5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDA3QUE2QjZBMTY2RDAxOTUwMEQ0NTY3MSAvKiBJbmJhbmRUZXh0VHJhY2tQcml2
YXRlQVZGT2JqQy5tbSAqLzsgfTsKIAkJNDZDQTlDNDQxRjk3QkJFOTAwNENGQzNBIC8qIFZpc2li
aWxpdHlTdGF0ZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gNDZDQTlDNDExRjk3QkJFNzAwNENGQzNBIC8qIFZpc2liaWxpdHlTdGF0ZS5oICovOyBzZXR0
aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTQ2Q0Y1MDRBMjdBQjFF
QTQwMDcwREJDOCAvKiBTaGFyZWRXb3JrZXJDb250ZXh0TWFuYWdlci5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDZDRjUwNDgyN0FCMUVBMTAwNzBEQkM4
IC8qIFNoYXJlZFdvcmtlckNvbnRleHRNYW5hZ2VyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVU
RVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNDZEMDAwNDAyNkEwRkVCMzAwRDFCRjFFIC8qIFN1
Ym1pdEV2ZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA0NkQwMDAzRTI2QTBGRTZGMDBEMUJGMUUgLyogU3VibWl0RXZlbnQuaCAqLzsgfTsKQEAgLTI2
OTIsNyArMjY5NSw3IEBACiAJCTgzNzY1Rjk1MURBQzUyMkYwMEMwNjUzNyAvKiBNb3VzZUV2ZW50
SW5pdC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODM3
NjVGOTQxREFDNTIxODAwQzA2NTM3IC8qIE1vdXNlRXZlbnRJbml0LmggKi87IHNldHRpbmdzID0g
e0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJODM3ODg3ODIyNEQ4QTYwOTAwMEQ0
QTVCIC8qIEF1ZGlvQnVmZmVyU291cmNlT3B0aW9ucy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODM3ODg3N0YyNEQ4QTVGQzAwMEQ0QTVCIC8qIEF1ZGlv
QnVmZmVyU291cmNlT3B0aW9ucy5oICovOyB9OwogCQk4Mzc5MzYzRjFGQkJCMEI0MDBDODAyM0Mg
LyogU2VydmljZVdvcmtlckNsaWVudERhdGEuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDgzNzkzNjNFMUZCQkIwQTUwMEM4MDIzQyAvKiBTZXJ2aWNlV29y
a2VyQ2xpZW50RGF0YS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7
IH07IH07Ci0JCTgzNzk2NENGMUY4REI2OUQwMDIxOEVBMCAvKiBHZW9sb2NhdGlvblBvc2l0aW9u
RGF0YUlPUy5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDgzNzk2NENFMUY4REI2OUEwMDIxOEVBMCAvKiBHZW9sb2NhdGlvblBvc2l0aW9uRGF0YUlPUy5t
bSAqLzsgfTsKKwkJODM3OTY0Q0YxRjhEQjY5RDAwMjE4RUEwIC8qIEdlb2xvY2F0aW9uUG9zaXRp
b25EYXRhQ29jb2EubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA4Mzc5NjRDRTFGOERCNjlBMDAyMThFQTAgLyogR2VvbG9jYXRpb25Qb3NpdGlvbkRhdGFD
b2NvYS5tbSAqLzsgfTsKIAkJODM3QTgwMTMxRTFFMTI3MzAwMDI2QjlGIC8qIExvY2FsaXphYmxl
LnN0cmluZ3NkaWN0IGluIFJlc291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA4MzdBODAxMTFFMUUxMjczMDAwMjZCOUYgLyogTG9jYWxpemFibGUuc3RyaW5nc2RpY3Qg
Ki87IH07CiAJCTgzN0MwQjc2MjREQjM4NTAwMDVENTk1OSAvKiBEeW5hbWljc0NvbXByZXNzb3JP
cHRpb25zLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4
MzdDMEI3MzI0REIzODQyMDA1RDU5NTkgLyogRHluYW1pY3NDb21wcmVzc29yT3B0aW9ucy5oICov
OyB9OwogCQk4MzdGQjM0NTFGOUVBMDZEMDBEMEZDMzEgLyogRXh0ZW5kYWJsZU1lc3NhZ2VFdmVu
dC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODM3RkIz
NDAxRjlFQTA2NjAwRDBGQzMxIC8qIEV4dGVuZGFibGVNZXNzYWdlRXZlbnQuaCAqLzsgfTsKQEAg
LTkyNzEsNiArOTI3NCw4IEBACiAJCTQ2ODNERjNDMjc2N0RGMjYwMDdEMDBDOCAvKiBTaGFkb3dS
ZWFsbUdsb2JhbFNjb3BlLmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25v
d25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBTaGFkb3dSZWFsbUdsb2JhbFNjb3BlLmlkbDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDY4M0RGM0QyNzY3REY5ODAwN0QwMEM4IC8qIEpT
U2hhZG93UmVhbG1HbG9iYWxTY29wZUJhc2UuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
Y3BwOyBwYXRoID0gSlNTaGFkb3dSZWFsbUdsb2JhbFNjb3BlQmFzZS5jcHA7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCTQ2ODNERjNFMjc2N0RGOTgwMDdEMDBDOCAvKiBKU1NoYWRvd1Jl
YWxtR2xvYmFsU2NvcGVCYXNlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpT
U2hhZG93UmVhbG1HbG9iYWxTY29wZUJhc2UuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
KwkJNDY4OEU5N0QyN0I2QjQ0MzAwNTY3Q0QyIC8qIENvcmVMb2NhdGlvbkdlb2xvY2F0aW9uUHJv
dmlkZXIubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBDb3JlTG9jYXRpb25HZW9sb2NhdGlvblBy
b3ZpZGVyLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk0Njg4RTk3RjI3QjZCNDQ0
MDA1NjdDRDIgLyogQ29yZUxvY2F0aW9uR2VvbG9jYXRpb25Qcm92aWRlci5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBDb3JlTG9jYXRpb25HZW9sb2NhdGlvblByb3ZpZGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCTQ2ODhFRTNBMjZERDI2MEMwMDJBRjVDNCAvKiBDcm9zc09yaWdpbk1vZGUu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gQ3Jvc3NPcmlnaW5Nb2RlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCTQ2OEI4QkRFMjVDQzg0OTMwMEY2NzgyMiAvKiBKU0Jhc2VBdWRpb0NvbnRleHRD
dXN0b20uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNCYXNlQXVkaW9Db250ZXh0Q3VzdG9tLmNw
cDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDY5NDNEQzcyNzYzRjgwRTAwNEI2MTBF
IC8qIFNoYXJlZFdvcmtlck9iamVjdElkZW50aWZpZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU2hhcmVk
V29ya2VyT2JqZWN0SWRlbnRpZmllci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAt
OTM4NSw4ICs5MzkwLDggQEAKIAkJNDk0QkQ3OTQwRjU1QzhFRTAwNzQ3ODI4IC8qIFdlYktpdFBv
aW50LmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBXZWJLaXRQb2ludC5pZGw7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQ5NEJENzlCMEY1NUM5NEMwMDc0NzgyOCAvKiBKU1dlYktp
dFBvaW50LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTV2ViS2l0
UG9pbnQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0OTRCRDc5QzBGNTVDOTRD
MDA3NDc4MjggLyogSlNXZWJLaXRQb2ludC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBKU1dlYktpdFBvaW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTQ5NEVC
RDA2MjdBQTlDNTMwMEY0ODQ0RiAvKiBQREZEb2N1bWVudC5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBQREZE
b2N1bWVudC5oOyBwYXRoID0gUERGRG9jdW1lbnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKLQkJNDk0RUJEMDgyN0FBOUM1MzAwRjQ4NDRGIC8qIFBERkRvY3VtZW50LmNwcCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
LmNwcDsgbmFtZSA9IFBERkRvY3VtZW50LmNwcDsgcGF0aCA9IFBERkRvY3VtZW50LmNwcDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNDk0RUJEMDYyN0FBOUM1MzAwRjQ4NDRGIC8qIFBE
RkRvY3VtZW50LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFBERkRvY3VtZW50Lmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CisJCTQ5NEVCRDA4MjdBQTlDNTMwMEY0ODQ0RiAvKiBQREZEb2N1bWVudC5j
cHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBQREZEb2N1bWVudC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCTQ5NTg3ODFGMTJBNTdEREYwMDcyMzhBQyAvKiBQbGF0Zm9ybUNBQW5pbWF0
aW9uQ29jb2EubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBQbGF0
Zm9ybUNBQW5pbWF0aW9uQ29jb2EubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQ5
NTg3ODIwMTJBNTdEREYwMDcyMzhBQyAvKiBQbGF0Zm9ybUNBTGF5ZXJDb2NvYS5tbSAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFBsYXRmb3JtQ0FMYXllckNvY29hLm1t
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0OTY5QjBGMDEzRDBCMzNGMDBERjM1MjEg
LyogSGl0VGVzdGluZ1RyYW5zZm9ybVN0YXRlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
LmNwcDsgcGF0aCA9IEhpdFRlc3RpbmdUcmFuc2Zvcm1TdGF0ZS5jcHA7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CkBAIC0xMjE4Nyw3ICsxMjE5Miw3IEBACiAJCTgzNzg4NzgxMjREOEE1RkMw
MDBENEE1QiAvKiBBdWRpb0J1ZmZlclNvdXJjZU9wdGlvbnMuaWRsICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IEF1ZGlvQnVmZmVy
U291cmNlT3B0aW9ucy5pZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTgzNzkzNjND
MUZCQkIwQTQwMEM4MDIzQyAvKiBTZXJ2aWNlV29ya2VyQ2xpZW50RGF0YS5jcHAgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBTZXJ2aWNlV29ya2VyQ2xpZW50RGF0YS5jcHA7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTgzNzkzNjNFMUZCQkIwQTUwMEM4MDIzQyAv
KiBTZXJ2aWNlV29ya2VyQ2xpZW50RGF0YS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBTZXJ2aWNlV29ya2VyQ2xpZW50RGF0YS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwotCQk4Mzc5NjRDRTFGOERCNjlBMDAyMThFQTAgLyogR2VvbG9jYXRpb25Qb3NpdGlvbkRhdGFJ
T1MubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IG5hbWUgPSBHZW9sb2NhdGlv
blBvc2l0aW9uRGF0YUlPUy5tbTsgcGF0aCA9IE1vZHVsZXMvZ2VvbG9jYXRpb24vaW9zL0dlb2xv
Y2F0aW9uUG9zaXRpb25EYXRhSU9TLm1tOyBzb3VyY2VUcmVlID0gU09VUkNFX1JPT1Q7IH07CisJ
CTgzNzk2NENFMUY4REI2OUEwMDIxOEVBMCAvKiBHZW9sb2NhdGlvblBvc2l0aW9uRGF0YUNvY29h
Lm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBuYW1lID0gR2VvbG9jYXRpb25Q
b3NpdGlvbkRhdGFDb2NvYS5tbTsgcGF0aCA9IE1vZHVsZXMvZ2VvbG9jYXRpb24vY29jb2EvR2Vv
bG9jYXRpb25Qb3NpdGlvbkRhdGFDb2NvYS5tbTsgc291cmNlVHJlZSA9IFNPVVJDRV9ST09UOyB9
OwogCQk4MzdBODAxMjFFMUUxMjczMDAwMjZCOUYgLyogZW4gKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0LnBsaXN0LnN0cmluZ3NkaWN0OyBuYW1l
ID0gZW47IHBhdGggPSBlbi5scHJvai9Mb2NhbGl6YWJsZS5zdHJpbmdzZGljdDsgc291cmNlVHJl
ZSA9IFNPVVJDRV9ST09UOyB9OwogCQk4MzdCN0QxRjFEQzNGNTRDMDBEMDUxRkMgLyogVmFsaWRh
dGlvbkJ1YmJsZUlPUy5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9
IFZhbGlkYXRpb25CdWJibGVJT1MubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTgz
N0MwQjczMjREQjM4NDIwMDVENTk1OSAvKiBEeW5hbWljc0NvbXByZXNzb3JPcHRpb25zLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IER5bmFtaWNzQ29tcHJlc3Nvck9wdGlvbnMuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKQEAgLTIxNjA5LDYgKzIxNjE0LDE0IEBACiAJCQlwYXRoID0gY29udGV4dDsK
IAkJCXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7CiAJCX07CisJCTQ2NUMzRDE5MjdCOTkxQzgwMDIx
MzAyRiAvKiBjb2NvYSAqLyA9IHsKKwkJCWlzYSA9IFBCWEdyb3VwOworCQkJY2hpbGRyZW4gPSAo
CisJCQkJODM3OTY0Q0UxRjhEQjY5QTAwMjE4RUEwIC8qIEdlb2xvY2F0aW9uUG9zaXRpb25EYXRh
Q29jb2EubW0gKi8sCisJCQkpOworCQkJcGF0aCA9IGNvY29hOworCQkJc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsKKwkJfTsKIAkJNDY2OTRDREUyNzU5NDQ2RDAwRTMxNTBFIC8qIHNoYXJlZCAqLyA9
IHsKIAkJCWlzYSA9IFBCWEdyb3VwOwogCQkJY2hpbGRyZW4gPSAoCkBAIC0yNTEwNCwxNCArMjUx
MTcsNiBAQAogCQkJcGF0aCA9IGJlYWNvbjsKIAkJCXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7CiAJ
CX07Ci0JCTgzNzk2NENDMUY4REI2N0QwMDIxOEVBMCAvKiBpb3MgKi8gPSB7Ci0JCQlpc2EgPSBQ
QlhHcm91cDsKLQkJCWNoaWxkcmVuID0gKAotCQkJCTgzNzk2NENFMUY4REI2OUEwMDIxOEVBMCAv
KiBHZW9sb2NhdGlvblBvc2l0aW9uRGF0YUlPUy5tbSAqLywKLQkJCSk7Ci0JCQluYW1lID0gaW9z
OwotCQkJc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsKLQkJfTsKIAkJODNGQjMzNjUxRjUwOEExNzAw
OTg2RTU0IC8qIGVudHJpZXNhcGkgKi8gPSB7CiAJCQlpc2EgPSBQQlhHcm91cDsKIAkJCWNoaWxk
cmVuID0gKApAQCAtMjU5MTQsMTAgKzI1OTE5LDEwIEBACiAJCQkJMzE0ODc3RTAxRkFBOEZFOTAw
QzA1NzU5IC8qIE9mZnNjcmVlbkNhbnZhcy5jcHAgKi8sCiAJCQkJMzE0ODc3RTExRkFBOEZFOTAw
QzA1NzU5IC8qIE9mZnNjcmVlbkNhbnZhcy5oICovLAogCQkJCTMxNDg3N0Q5MUZBQTg3MDYwMEMw
NTc1OSAvKiBPZmZzY3JlZW5DYW52YXMuaWRsICovLAotCQkJCTQ5NEVCRDA4MjdBQTlDNTMwMEY0
ODQ0RiAvKiBQREZEb2N1bWVudC5jcHAgKi8sCi0JCQkJNDk0RUJEMDYyN0FBOUM1MzAwRjQ4NDRG
IC8qIFBERkRvY3VtZW50LmggKi8sCiAJCQkJRjU1QjNEOTUxMjUxRjEyRDAwM0VGMjY5IC8qIFBh
c3N3b3JkSW5wdXRUeXBlLmNwcCAqLywKIAkJCQlGNTVCM0Q5NjEyNTFGMTJEMDAzRUYyNjkgLyog
UGFzc3dvcmRJbnB1dFR5cGUuaCAqLywKKwkJCQk0OTRFQkQwODI3QUE5QzUzMDBGNDg0NEYgLyog
UERGRG9jdW1lbnQuY3BwICovLAorCQkJCTQ5NEVCRDA2MjdBQTlDNTMwMEY0ODQ0RiAvKiBQREZE
b2N1bWVudC5oICovLAogCQkJCTk3MjA1QUI5MTIzOTI5MjcwMEIxNzM4MCAvKiBQbHVnaW5Eb2N1
bWVudC5jcHAgKi8sCiAJCQkJOTcyMDVBQkExMjM5MjkyNzAwQjE3MzgwIC8qIFBsdWdpbkRvY3Vt
ZW50LmggKi8sCiAJCQkJQ0RFRTM5MzYxNzk3NDI1OTAwMUQ3NTgwIC8qIFB1YmxpY1VSTE1hbmFn
ZXIuY3BwICovLApAQCAtMjYxMjQsNyArMjYxMjksNyBAQAogCQk5NzExNDVGRjE0RUYwMDc5MDA2
NzRGRDkgLyogZ2VvbG9jYXRpb24gKi8gPSB7CiAJCQlpc2EgPSBQQlhHcm91cDsKIAkJCWNoaWxk
cmVuID0gKAotCQkJCTgzNzk2NENDMUY4REI2N0QwMDIxOEVBMCAvKiBpb3MgKi8sCisJCQkJNDY1
QzNEMTkyN0I5OTFDODAwMjEzMDJGIC8qIGNvY29hICovLAogCQkJCTk3NDZBRjEzMTRGNERERTYw
MDNFN0E3MCAvKiBHZW9sb2NhdGlvbi5jcHAgKi8sCiAJCQkJOTc0NkFGMTQxNEY0RERFNjAwM0U3
QTcwIC8qIEdlb2xvY2F0aW9uLmggKi8sCiAJCQkJOTc0NkFGMTUxNEY0RERFNjAwM0U3QTcwIC8q
IEdlb2xvY2F0aW9uLmlkbCAqLywKQEAgLTI2ODM2LDYgKzI2ODQxLDggQEAKIAkJCQlDMUY3Qjcy
RjI0NDhGMkFDMDAxMjQ1NTcgLyogQUdYQ29tcGlsZXJTZXJ2aWNlLmNwcCAqLywKIAkJCQlDMUY3
QjczMDI0NDhGMkFDMDAxMjQ1NTcgLyogQUdYQ29tcGlsZXJTZXJ2aWNlLmggKi8sCiAJCQkJQTE0
MDkwRkExQUE1MUUxRDAwOTExOTFBIC8qIENvbnRlbnRGaWx0ZXJVbmJsb2NrSGFuZGxlckNvY29h
Lm1tICovLAorCQkJCTQ2ODhFOTdGMjdCNkI0NDQwMDU2N0NEMiAvKiBDb3JlTG9jYXRpb25HZW9s
b2NhdGlvblByb3ZpZGVyLmggKi8sCisJCQkJNDY4OEU5N0QyN0I2QjQ0MzAwNTY3Q0QyIC8qIENv
cmVMb2NhdGlvbkdlb2xvY2F0aW9uUHJvdmlkZXIubW0gKi8sCiAJCQkJQ0Q3RDMzNDUxQzdBMTZC
RjAwMDQxMjkzIC8qIENvcmVWaWRlb1NvZnRMaW5rLmNwcCAqLywKIAkJCQlDRDdEMzM0NjFDN0Ex
NkJGMDAwNDEyOTMgLyogQ29yZVZpZGVvU29mdExpbmsuaCAqLywKIAkJCQlGNDYyRTc5RjI0MkFE
QTNDMDAyMDREREQgLyogRHJhZ0RhdGFDb2NvYS5tbSAqLywKQEAgLTMzOTI3LDYgKzMzOTM0LDcg
QEAKIAkJCQkzRjgwMjAzNzFFOUU0N0M1MDBERUM2MUQgLyogQ29yZUF1ZGlvQ2FwdHVyZURldmlj
ZU1hbmFnZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTQxRkNDQzNCMjc0NjY3NTYwMDg5MkFENiAv
KiBDb3JlQXVkaW9DYXB0dXJlU291cmNlLmggaW4gSGVhZGVycyAqLywKIAkJCQkwN0FGRjQyMjFF
RkIxNDQ5MDBCNTQ1QjMgLyogQ29yZUF1ZGlvQ2FwdHVyZVNvdXJjZUlPUy5oIGluIEhlYWRlcnMg
Ki8sCisJCQkJNDY4OEU5ODAyN0I2QjQ1MDAwNTY3Q0QyIC8qIENvcmVMb2NhdGlvbkdlb2xvY2F0
aW9uUHJvdmlkZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCUNEN0QzMzQ4MUM3QTE2QkYwMDA0MTI5
MyAvKiBDb3JlVmlkZW9Tb2Z0TGluay5oIGluIEhlYWRlcnMgKi8sCiAJCQkJODYyRjEyOUUxOEMx
NTc2RjAwNUM1NEFGIC8qIENvdW50ZWRVc2VyQWN0aXZpdHkuaCBpbiBIZWFkZXJzICovLAogCQkJ
CUE4MEU2RDA0MEExOTg5Q0EwMDdGQjhDNSAvKiBDb3VudGVyLmggaW4gSGVhZGVycyAqLywKQEAg
LTM4NjgwLDYgKzM4Njg4LDcgQEAKIAkJCQlDRDBFRUUwRTE0NzQzRjM5MDAzRUFGQTIgLyogQXVk
aW9PdXRwdXRVbml0QWRhcHRvcklPUy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlDREE3OTgyNzE3
MEEyNzkxMDBENDVDNTUgLyogQXVkaW9TZXNzaW9uSU9TLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJ
Q0Q4QTdCQkIxOTc3MzVGRTAwQ0JENjQzIC8qIEF1ZGlvU291cmNlUHJvdmlkZXJBVkZPYmpDLm1t
IGluIFNvdXJjZXMgKi8sCisJCQkJNDZCQTQ5QjgyN0JCNDQzMzAwNzdGNjNGIC8qIEFWQXNzZXRU
cmFja1V0aWxpdGllcy5tbSBpbiBTb3VyY2VzICovLAogCQkJCTBGQ0EyOTM1MjZGQzM5MTcwMDZC
NEFFQiAvKiBBVkF1ZGlvU2Vzc2lvbkNhcHR1cmVEZXZpY2VNYW5hZ2VyLm1tIGluIFNvdXJjZXMg
Ki8sCiAJCQkJMDczOEU1RUMyNDk5ODM5MDAwREExMDFDIC8qIEFWT3V0cHV0RGV2aWNlTWVudUNv
bnRyb2xsZXJUYXJnZXRQaWNrZXIubW0gaW4gU291cmNlcyAqLywKIAkJCQlDRDMzNkY2MTE3RjlG
NjQ3MDBERERDRDAgLyogQVZUcmFja1ByaXZhdGVBVkZPYmpDSW1wbC5tbSBpbiBTb3VyY2VzICov
LApAQCAtMzg2OTgsMTMgKzM4NzA3LDE0IEBACiAJCQkJNTE4RjRGRjYxOTRDQTRFNjAwODFCQUFF
IC8qIEdhbWVwYWRCdXR0b24uY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNTE2QzYyMjAxOTUwRDQ4
NzAwMzM3RTc1IC8qIEdhbWVwYWRFdmVudC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk1MUE5RDlF
OTE5NUI5MzFGMDAxQjJCNUMgLyogR2FtZXBhZE1hbmFnZXIuY3BwIGluIFNvdXJjZXMgKi8sCi0J
CQkJODM3OTY0Q0YxRjhEQjY5RDAwMjE4RUEwIC8qIEdlb2xvY2F0aW9uUG9zaXRpb25EYXRhSU9T
Lm1tIGluIFNvdXJjZXMgKi8sCisJCQkJODM3OTY0Q0YxRjhEQjY5RDAwMjE4RUEwIC8qIEdlb2xv
Y2F0aW9uUG9zaXRpb25EYXRhQ29jb2EubW0gaW4gU291cmNlcyAqLywKIAkJCQk2RTcyRjU0RTIy
OURDRDEwMDBCM0UxNTEgLyogR3JhcGhpY3NDb250ZXh0R0xBTkdMRS5jcHAgaW4gU291cmNlcyAq
LywKIAkJCQk3QzNFNTEwQjE4REY4RjM1MDBDMTEyRjcgLyogSFRNTENvbnZlcnRlci5tbSBpbiBT
b3VyY2VzICovLAogCQkJCUE4RDA2QjNBMEEyNjVEQ0QwMDVFNzIwMyAvKiBIVE1MTmFtZXMuY3Bw
IGluIFNvdXJjZXMgKi8sCiAJCQkJMUFDOTAwQzMxOTQzQzBGQzAwODYyNUI1IC8qIEhUVFBIZWFk
ZXJOYW1lcy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlDRDI3QUU1MTIyQTk4Njg3MDA5NDdGRjkg
LyogSW1hZ2VSb3RhdGlvblNlc3Npb25WVC5tbSBpbiBTb3VyY2VzICovLAogCQkJCTA3MEUyRDBG
MjZGMjUwODkwMDE0QUFDMyAvKiBJbmJhbmRDaGFwdGVyVHJhY2tQcml2YXRlQVZGT2JqQy5tbSBp
biBTb3VyY2VzICovLAorCQkJCTQ2Q0E5NDMxMjdCODY5NTgwMEY0RjVGRiAvKiBJbmJhbmRUZXh0
VHJhY2tQcml2YXRlQVZGT2JqQy5tbSBpbiBTb3VyY2VzICovLAogCQkJCUNEMDYzRjgyMUUyM0ZB
ODkwMDgxMkJFMyAvKiBJbml0RGF0YVJlZ2lzdHJ5LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTkz
NUM0NzcwMDlBQzRENzMwMEE2QUFCNCAvKiBLZXlFdmVudE1hYy5tbSBpbiBTb3VyY2VzICovLAog
CQkJCUNEQTk4RTBCMTYwM0NENjAwMEZFQTNCMSAvKiBMZWdhY3lDRE0uY3BwIGluIFNvdXJjZXMg
Ki8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuY3BwIGIvU291cmNlL1dl
YkNvcmUvcGFnZS9QYWdlLmNwcAppbmRleCA2YTg1ZTg0M2Q4YmJlM2QxOTJkOTdmNDk2YmQ3ZWI0
NTQ3NDlkYmE0Li5lZmUwZTM4MDZkYzg0ODAzMGQyMmI5ZDkwMjkxNjc5MzM4NWJmZGFhIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BhZ2UvUGFnZS5jcHAKQEAgLTY5LDYgKzY5LDcgQEAKICNpbmNsdWRlICJGcmFtZVRyZWUuaCIK
ICNpbmNsdWRlICJGcmFtZVZpZXcuaCIKICNpbmNsdWRlICJGdWxsc2NyZWVuTWFuYWdlci5oIgor
I2luY2x1ZGUgIkdlb2xvY2F0aW9uQ29udHJvbGxlci5oIgogI2luY2x1ZGUgIkhUTUxFbGVtZW50
LmgiCiAjaW5jbHVkZSAiSFRNTEltYWdlRWxlbWVudC5oIgogI2luY2x1ZGUgIkhUTUxNZWRpYUVs
ZW1lbnQuaCIKQEAgLTEzMzIsNiArMTMzMywxMSBAQCB2b2lkIFBhZ2U6OmRpZENvbW1pdExvYWQo
KQogICAgIHJlc2V0VGV4dFJlY29nbml0aW9uUmVzdWx0cygpOwogICAgIHJlc2V0SW1hZ2VBbmFs
eXNpc1F1ZXVlKCk7CiAjZW5kaWYKKworI2lmIEVOQUJMRShHRU9MT0NBVElPTikKKyAgICBpZiAo
YXV0byogZ2VvbG9jYXRpb25Db250cm9sbGVyID0gR2VvbG9jYXRpb25Db250cm9sbGVyOjpmcm9t
KHRoaXMpKQorICAgICAgICBnZW9sb2NhdGlvbkNvbnRyb2xsZXItPmRpZE5hdmlnYXRlUGFnZSgp
OworI2VuZGlmCiB9CiAKIHZvaWQgUGFnZTo6ZGlkRmluaXNoTG9hZCgpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9Db3JlTG9jYXRpb25HZW9sb2NhdGlvblByb3Zp
ZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9Db3JlTG9jYXRpb25HZW9sb2Nh
dGlvblByb3ZpZGVyLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYzUyNDZjODg0YWNmOGY2OWZjYjhmOGFjNGFjYzdm
NGNkZTY0NWNlZAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Nv
Y29hL0NvcmVMb2NhdGlvbkdlb2xvY2F0aW9uUHJvdmlkZXIuaApAQCAtMCwwICsxLDY3IEBACisv
KgorICogQ29weXJpZ2h0IChDKSAyMDIyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4g
QU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJ
TVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQ
UExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VR
VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1F
TlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRB
LCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlIDx3dGYvQ29tcGxldGlvbkhhbmRs
ZXIuaD4KKyNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgorI2luY2x1ZGUgPHd0Zi9SZXRhaW5QdHIu
aD4KKworT0JKQ19DTEFTUyBXZWJDTExvY2F0aW9uTWFuYWdlcjsKKworbmFtZXNwYWNlIFdlYkNv
cmUgeworCitjbGFzcyBHZW9sb2NhdGlvblBvc2l0aW9uRGF0YTsKK2NsYXNzIFJlZ2lzdHJhYmxl
RG9tYWluOworCitjbGFzcyBXRUJDT1JFX0VYUE9SVCBDb3JlTG9jYXRpb25HZW9sb2NhdGlvblBy
b3ZpZGVyIHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKK3B1YmxpYzoKKyAgICBjbGFz
cyBDbGllbnQgeworICAgIHB1YmxpYzoKKyAgICAgICAgdmlydHVhbCB+Q2xpZW50KCkgeyB9CisK
KyAgICAgICAgdmlydHVhbCB2b2lkIGdlb2xvY2F0aW9uQXV0aG9yaXphdGlvbkdyYW50ZWQoY29u
c3QgU3RyaW5nJiAvKndlYnNpdGVJZGVudGlmaWVyKi8pIHsgfQorICAgICAgICB2aXJ0dWFsIHZv
aWQgZ2VvbG9jYXRpb25BdXRob3JpemF0aW9uRGVuaWVkKGNvbnN0IFN0cmluZyYgLyp3ZWJzaXRl
SWRlbnRpZmllciovKSB7IH0KKyAgICAgICAgdmlydHVhbCB2b2lkIHBvc2l0aW9uQ2hhbmdlZChj
b25zdCBTdHJpbmcmIHdlYnNpdGVJZGVudGlmaWVyLCBHZW9sb2NhdGlvblBvc2l0aW9uRGF0YSYm
KSA9IDA7CisgICAgICAgIHZpcnR1YWwgdm9pZCBlcnJvck9jY3VycmVkKGNvbnN0IFN0cmluZyYg
d2Vic2l0ZUlkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgZXJyb3JNZXNzYWdlKSA9IDA7CisgICAg
ICAgIHZpcnR1YWwgdm9pZCByZXNldEdlb2xvY2F0aW9uKGNvbnN0IFN0cmluZyYgd2Vic2l0ZUlk
ZW50aWZpZXIpID0gMDsKKyAgICB9OworCisgICAgQ29yZUxvY2F0aW9uR2VvbG9jYXRpb25Qcm92
aWRlcihjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYsIENsaWVudCYpOworICAgIH5Db3JlTG9jYXRp
b25HZW9sb2NhdGlvblByb3ZpZGVyKCk7CisKKyAgICB2b2lkIHN0YXJ0KCk7CisgICAgdm9pZCBz
dG9wKCk7CisKKyAgICB2b2lkIHNldEVuYWJsZUhpZ2hBY2N1cmFjeShib29sKTsKKworICAgIHN0
YXRpYyB2b2lkIHJlcXVlc3RBdXRob3JpemF0aW9uKGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiwg
Q29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJik7CisKK3ByaXZhdGU6CisgICAgUmV0YWlu
UHRyPFdlYkNMTG9jYXRpb25NYW5hZ2VyPiBtX2xvY2F0aW9uTWFuYWdlcjsKK307CisKK30gLy8g
bmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Nv
Y29hL0NvcmVMb2NhdGlvbkdlb2xvY2F0aW9uUHJvdmlkZXIubW0gYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9jb2NvYS9Db3JlTG9jYXRpb25HZW9sb2NhdGlvblByb3ZpZGVyLm1tCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjYzMTc2OTMzNGFlNjJiZjAyNzJkM2MzMTdmNzlmN2Y1MmY5OTNkMzgKLS0tIC9kZXYvbnVs
bAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9Db3JlTG9jYXRpb25HZW9sb2Nh
dGlvblByb3ZpZGVyLm1tCkBAIC0wLDAgKzEsMjY4IEBACisvKgorICogQ29weXJpZ2h0IChDKSAy
MDIyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMg
YGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRS
SUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2ltcG9ydCAi
Y29uZmlnLmgiCisjaW1wb3J0ICJDb3JlTG9jYXRpb25HZW9sb2NhdGlvblByb3ZpZGVyLmgiCisK
KyNpbXBvcnQgIkdlb2xvY2F0aW9uUG9zaXRpb25EYXRhLmgiCisjaW1wb3J0ICJSZWdpc3RyYWJs
ZURvbWFpbi5oIgorI2ltcG9ydCA8Q29yZUxvY2F0aW9uL0NMTG9jYXRpb25NYW5hZ2VyRGVsZWdh
dGUuaD4KKyNpbXBvcnQgPENvcmVMb2NhdGlvbi9Db3JlTG9jYXRpb24uaD4KKyNpbXBvcnQgPHd0
Zi9Tb2Z0TGlua2luZy5oPgorCisjaWYgVVNFKEFQUExFX0lOVEVSTkFMX1NESykKKyNpbXBvcnQg
PENvcmVMb2NhdGlvbi9DTExvY2F0aW9uTWFuYWdlcl9Qcml2YXRlLmg+CisjZW5kaWYKKworU09G
VF9MSU5LX0ZSQU1FV09SSyhDb3JlTG9jYXRpb24pCisKK1NPRlRfTElOS19DTEFTUyhDb3JlTG9j
YXRpb24sIENMTG9jYXRpb25NYW5hZ2VyKQorU09GVF9MSU5LX0NMQVNTKENvcmVMb2NhdGlvbiwg
Q0xMb2NhdGlvbikKKworU09GVF9MSU5LX0NPTlNUQU5UKENvcmVMb2NhdGlvbiwga0NMTG9jYXRp
b25BY2N1cmFjeUJlc3QsIGRvdWJsZSkKK1NPRlRfTElOS19DT05TVEFOVChDb3JlTG9jYXRpb24s
IGtDTExvY2F0aW9uQWNjdXJhY3lIdW5kcmVkTWV0ZXJzLCBkb3VibGUpCisKKyNkZWZpbmUga0NM
TG9jYXRpb25BY2N1cmFjeUJlc3QgZ2V0a0NMTG9jYXRpb25BY2N1cmFjeUJlc3QoKQorI2RlZmlu
ZSBrQ0xMb2NhdGlvbkFjY3VyYWN5SHVuZHJlZE1ldGVycyBnZXRrQ0xMb2NhdGlvbkFjY3VyYWN5
SHVuZHJlZE1ldGVycygpCisKK3N0YXRpYyBib29sIGlzQXV0aG9yaXphdGlvbkdyYW50ZWQoQ0xB
dXRob3JpemF0aW9uU3RhdHVzIHN0YXR1cykKK3sKKyAgICByZXR1cm4gc3RhdHVzID09IGtDTEF1
dGhvcml6YXRpb25TdGF0dXNBdXRob3JpemVkQWx3YXlzCisjaWYgSEFWRShDT1JFX0xPQ0FUSU9O
X0FVVEhPUklaRURfV0hFTl9JTl9VU0UpCisgICAgICAgIHx8IHN0YXR1cyA9PSBrQ0xBdXRob3Jp
emF0aW9uU3RhdHVzQXV0aG9yaXplZFdoZW5JblVzZQorI2VuZGlmCisgICAgICAgIDsKK30KKwor
QGludGVyZmFjZSBXZWJDTExvY2F0aW9uTWFuYWdlciA6IE5TT2JqZWN0PENMTG9jYXRpb25NYW5h
Z2VyRGVsZWdhdGU+CitAZW5kCisKK0BpbXBsZW1lbnRhdGlvbiBXZWJDTExvY2F0aW9uTWFuYWdl
ciB7CisgICAgUmV0YWluUHRyPENMTG9jYXRpb25NYW5hZ2VyPiBfbG9jYXRpb25NYW5hZ2VyOwor
ICAgIFdlYkNvcmU6OkNvcmVMb2NhdGlvbkdlb2xvY2F0aW9uUHJvdmlkZXI6OkNsaWVudCogX2Ns
aWVudDsKKyAgICBTdHJpbmcgX3dlYnNpdGVJZGVudGlmaWVyOworICAgIEJPT0wgX2lzV2FpdGlu
Z0ZvckF1dGhvcml6YXRpb247Cit9CisKKy0gKGluc3RhbmNldHlwZSlpbml0V2l0aFdlYnNpdGVJ
ZGVudGlmaWVyOihjb25zdCBTdHJpbmcmKXdlYnNpdGVJZGVudGlmaWVyIGNsaWVudDooV2ViQ29y
ZTo6Q29yZUxvY2F0aW9uR2VvbG9jYXRpb25Qcm92aWRlcjo6Q2xpZW50JiljbGllbnQKK3sKKyAg
ICBzZWxmID0gW3N1cGVyIGluaXRdOworICAgIGlmICghc2VsZikKKyAgICAgICAgcmV0dXJuIG5p
bDsKKworICAgIC8vIEZJWE1FOiBDYWxsIGluaXRXaXRoV2Vic2l0ZUlkZW50aWZpZXIgYW5kIHBh
c3MgdGhlIHdlYnNpdGVJZGVudGlmaWVyIHdoZW4gSEFWRShDT1JFX0xPQ0FUSU9OX1dFQlNJVEVf
SURFTlRJRklFUlMpIGFuZCAhd2Vic2l0ZUlkZW50aWZpZXIuaXNFbXB0eSgpIG9uY2UgPHJkYXI6
Ly84ODgzNDMwMT4gaXMgZml4ZWQuCisgICAgVU5VU0VEX1BBUkFNKHdlYnNpdGVJZGVudGlmaWVy
KTsKKyAgICBfbG9jYXRpb25NYW5hZ2VyID0gYWRvcHROUyhbYWxsb2NDTExvY2F0aW9uTWFuYWdl
ckluc3RhbmNlKCkgaW5pdF0pOworICAgIF9jbGllbnQgPSAmY2xpZW50OworICAgIF93ZWJzaXRl
SWRlbnRpZmllciA9IHdlYnNpdGVJZGVudGlmaWVyOworICAgIFtfbG9jYXRpb25NYW5hZ2VyIHNl
dERlbGVnYXRlOnNlbGZdOworICAgIHJldHVybiBzZWxmOworfQorCistICh2b2lkKWRlYWxsb2MK
K3sKKyAgICBbX2xvY2F0aW9uTWFuYWdlciBzZXREZWxlZ2F0ZTpuaWxdOworICAgIFtzdXBlciBk
ZWFsbG9jXTsKK30KKworLSAodm9pZClzdGFydAoreworICAgIGlmICghW2dldENMTG9jYXRpb25N
YW5hZ2VyQ2xhc3MoKSBsb2NhdGlvblNlcnZpY2VzRW5hYmxlZF0gfHwgIWlzQXV0aG9yaXphdGlv
bkdyYW50ZWQoW19sb2NhdGlvbk1hbmFnZXIgYXV0aG9yaXphdGlvblN0YXR1c10pKSB7CisgICAg
ICAgIFtfbG9jYXRpb25NYW5hZ2VyIHN0b3BVcGRhdGluZ0xvY2F0aW9uXTsKKyAgICAgICAgX2Ns
aWVudC0+cmVzZXRHZW9sb2NhdGlvbihfd2Vic2l0ZUlkZW50aWZpZXIpOworICAgICAgICByZXR1
cm47CisgICAgfQorCisgICAgW19sb2NhdGlvbk1hbmFnZXIgc3RhcnRVcGRhdGluZ0xvY2F0aW9u
XTsKK30KKworLSAodm9pZClzdG9wCit7CisgICAgW19sb2NhdGlvbk1hbmFnZXIgc3RvcFVwZGF0
aW5nTG9jYXRpb25dOworfQorCistICh2b2lkKXNldEVuYWJsZUhpZ2hBY2N1cmFjeTooQk9PTClo
aWdoQWNjdXJhY3lFbmFibGVkCit7CisgICAgW19sb2NhdGlvbk1hbmFnZXIgc2V0RGVzaXJlZEFj
Y3VyYWN5OmhpZ2hBY2N1cmFjeUVuYWJsZWQgPyBrQ0xMb2NhdGlvbkFjY3VyYWN5QmVzdCA6IGtD
TExvY2F0aW9uQWNjdXJhY3lIdW5kcmVkTWV0ZXJzXTsKK30KKworLSAodm9pZClyZXF1ZXN0R2Vv
bG9jYXRpb25BdXRob3JpemF0aW9uCit7CisgICAgaWYgKCFbZ2V0Q0xMb2NhdGlvbk1hbmFnZXJD
bGFzcygpIGxvY2F0aW9uU2VydmljZXNFbmFibGVkXSkgeworICAgICAgICBfY2xpZW50LT5nZW9s
b2NhdGlvbkF1dGhvcml6YXRpb25EZW5pZWQoX3dlYnNpdGVJZGVudGlmaWVyKTsKKyAgICAgICAg
cmV0dXJuOworICAgIH0KKworICAgIHN3aXRjaCAoW19sb2NhdGlvbk1hbmFnZXIgYXV0aG9yaXph
dGlvblN0YXR1c10pIHsKKyAgICBjYXNlIGtDTEF1dGhvcml6YXRpb25TdGF0dXNOb3REZXRlcm1p
bmVkOiB7CisgICAgICAgIGlmICghX2lzV2FpdGluZ0ZvckF1dGhvcml6YXRpb24pIHsKKyAgICAg
ICAgICAgIF9pc1dhaXRpbmdGb3JBdXRob3JpemF0aW9uID0gWUVTOworICAgICAgICAgICAgW19s
b2NhdGlvbk1hbmFnZXIgcmVxdWVzdFdoZW5JblVzZUF1dGhvcml6YXRpb25dOworICAgICAgICB9
CisgICAgICAgIGJyZWFrOworICAgIH0KKyAgICBjYXNlIGtDTEF1dGhvcml6YXRpb25TdGF0dXNB
dXRob3JpemVkQWx3YXlzOgorI2lmIEhBVkUoQ09SRV9MT0NBVElPTl9BVVRIT1JJWkVEX1dIRU5f
SU5fVVNFKQorICAgIGNhc2Uga0NMQXV0aG9yaXphdGlvblN0YXR1c0F1dGhvcml6ZWRXaGVuSW5V
c2U6CisjZW5kaWYKKyAgICAgICAgX2NsaWVudC0+Z2VvbG9jYXRpb25BdXRob3JpemF0aW9uR3Jh
bnRlZChfd2Vic2l0ZUlkZW50aWZpZXIpOworICAgICAgICBicmVhazsKKyAgICBjYXNlIGtDTEF1
dGhvcml6YXRpb25TdGF0dXNSZXN0cmljdGVkOgorICAgIGNhc2Uga0NMQXV0aG9yaXphdGlvblN0
YXR1c0RlbmllZDoKKyAgICAgICAgX2NsaWVudC0+Z2VvbG9jYXRpb25BdXRob3JpemF0aW9uRGVu
aWVkKF93ZWJzaXRlSWRlbnRpZmllcik7CisgICAgICAgIGJyZWFrOworICAgIH0KK30KKworLSAo
dm9pZClsb2NhdGlvbk1hbmFnZXJEaWRDaGFuZ2VBdXRob3JpemF0aW9uOihDTExvY2F0aW9uTWFu
YWdlciAqKW1hbmFnZXIKK3sKKyAgICBhdXRvIHN0YXR1cyA9IFtfbG9jYXRpb25NYW5hZ2VyIGF1
dGhvcml6YXRpb25TdGF0dXNdOworICAgIGlmIChfaXNXYWl0aW5nRm9yQXV0aG9yaXphdGlvbikg
eworICAgICAgICBzd2l0Y2ggKHN0YXR1cykgeworICAgICAgICBjYXNlIGtDTEF1dGhvcml6YXRp
b25TdGF0dXNOb3REZXRlcm1pbmVkOgorICAgICAgICAgICAgLy8gVGhpcyBjYW4gaGFwcGVuIGFm
dGVyIHJlc3VtZSBpZiB0aGUgdXNlciBoYXMgc3RpbGwgbm90IGFuc3dlcmVkIHRoZSBkaWFsb2cu
IFdlIGp1c3QgaGF2ZSB0byB3YWl0IGZvciB0aGUgcGVybWlzc2lvbi4KKyAgICAgICAgICAgIGJy
ZWFrOworICAgICAgICBjYXNlIGtDTEF1dGhvcml6YXRpb25TdGF0dXNEZW5pZWQ6CisgICAgICAg
IGNhc2Uga0NMQXV0aG9yaXphdGlvblN0YXR1c1Jlc3RyaWN0ZWQ6CisgICAgICAgICAgICBfaXNX
YWl0aW5nRm9yQXV0aG9yaXphdGlvbiA9IE5POworICAgICAgICAgICAgX2NsaWVudC0+Z2VvbG9j
YXRpb25BdXRob3JpemF0aW9uRGVuaWVkKF93ZWJzaXRlSWRlbnRpZmllcik7CisgICAgICAgICAg
ICBicmVhazsKKyAgICAgICAgY2FzZSBrQ0xBdXRob3JpemF0aW9uU3RhdHVzQXV0aG9yaXplZEFs
d2F5czoKKyNpZiBIQVZFKENPUkVfTE9DQVRJT05fQVVUSE9SSVpFRF9XSEVOX0lOX1VTRSkKKyAg
ICAgICAgY2FzZSBrQ0xBdXRob3JpemF0aW9uU3RhdHVzQXV0aG9yaXplZFdoZW5JblVzZToKKyNl
bmRpZgorICAgICAgICAgICAgX2lzV2FpdGluZ0ZvckF1dGhvcml6YXRpb24gPSBOTzsKKyAgICAg
ICAgICAgIF9jbGllbnQtPmdlb2xvY2F0aW9uQXV0aG9yaXphdGlvbkdyYW50ZWQoX3dlYnNpdGVJ
ZGVudGlmaWVyKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAgfSBlbHNlIHsK
KyAgICAgICAgaWYgKHN0YXR1cyA9PSBrQ0xBdXRob3JpemF0aW9uU3RhdHVzRGVuaWVkIHx8IHN0
YXR1cyA9PSBrQ0xBdXRob3JpemF0aW9uU3RhdHVzUmVzdHJpY3RlZCkgeworICAgICAgICAgICAg
W19sb2NhdGlvbk1hbmFnZXIgc3RvcFVwZGF0aW5nTG9jYXRpb25dOworICAgICAgICAgICAgX2Ns
aWVudC0+cmVzZXRHZW9sb2NhdGlvbihfd2Vic2l0ZUlkZW50aWZpZXIpOworICAgICAgICB9Cisg
ICAgfQorfQorCistICh2b2lkKWxvY2F0aW9uTWFuYWdlcjooQ0xMb2NhdGlvbk1hbmFnZXIgKilt
YW5hZ2VyIGRpZFVwZGF0ZUxvY2F0aW9uczooTlNBcnJheSAqKWxvY2F0aW9ucworeworICAgIFVO
VVNFRF9QQVJBTShtYW5hZ2VyKTsKKyAgICBmb3IgKENMTG9jYXRpb24gKmxvY2F0aW9uIGluIGxv
Y2F0aW9ucykKKyAgICAgICAgX2NsaWVudC0+cG9zaXRpb25DaGFuZ2VkKF93ZWJzaXRlSWRlbnRp
ZmllciwgV2ViQ29yZTo6R2VvbG9jYXRpb25Qb3NpdGlvbkRhdGEgeyBsb2NhdGlvbiB9KTsKK30K
KworLSAodm9pZClsb2NhdGlvbk1hbmFnZXI6KENMTG9jYXRpb25NYW5hZ2VyICopbWFuYWdlciBk
aWRGYWlsV2l0aEVycm9yOihOU0Vycm9yICopZXJyb3IKK3sKKyAgICBBU1NFUlQoZXJyb3IpOwor
ICAgIFVOVVNFRF9QQVJBTShtYW5hZ2VyKTsKKworICAgIGlmIChbZXJyb3IgY29kZV0gPT0ga0NM
RXJyb3JEZW5pZWQpIHsKKyAgICAgICAgLy8gSWdub3JlIHRoZSBlcnJvciBoZXJlIGFuZCBsZXQg
bG9jYXRpb25NYW5hZ2VyOmRpZENoYW5nZUF1dGhvcml6YXRpb25TdGF0dXM6IGhhbmRsZSB0aGUg
cGVybWlzc2lvbi4KKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIE5TU3RyaW5nICplcnJv
ck1lc3NhZ2UgPSBbZXJyb3IgbG9jYWxpemVkRGVzY3JpcHRpb25dOworICAgIF9jbGllbnQtPmVy
cm9yT2NjdXJyZWQoX3dlYnNpdGVJZGVudGlmaWVyLCBlcnJvck1lc3NhZ2UpOworfQorCitAZW5k
CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworQ29yZUxvY2F0aW9uR2VvbG9jYXRpb25Qcm92aWRl
cjo6Q29yZUxvY2F0aW9uR2VvbG9jYXRpb25Qcm92aWRlcihjb25zdCBSZWdpc3RyYWJsZURvbWFp
biYgcmVnaXN0cmFibGVEb21haW4sIENsaWVudCYgY2xpZW50KQorICAgIDogbV9sb2NhdGlvbk1h
bmFnZXIoYWRvcHROUyhbW1dlYkNMTG9jYXRpb25NYW5hZ2VyIGFsbG9jXSBpbml0V2l0aFdlYnNp
dGVJZGVudGlmaWVyOnJlZ2lzdHJhYmxlRG9tYWluLnN0cmluZygpIGNsaWVudDpjbGllbnRdKSkK
K3sKKyAgICAvLyBSZXF1ZXN0IHBlcm1pc3Npb24gZm9yIHRoZSBhcHAgdG8gdXNlIGdlb2xvY2F0
aW9uIChpZiBpdCBkb2Vzbid0IGFscmVhZHkpLgorICAgIFttX2xvY2F0aW9uTWFuYWdlciByZXF1
ZXN0R2VvbG9jYXRpb25BdXRob3JpemF0aW9uXTsKK30KKworQ29yZUxvY2F0aW9uR2VvbG9jYXRp
b25Qcm92aWRlcjo6fkNvcmVMb2NhdGlvbkdlb2xvY2F0aW9uUHJvdmlkZXIoKQoreworICAgIFtt
X2xvY2F0aW9uTWFuYWdlciBzdG9wXTsKK30KKwordm9pZCBDb3JlTG9jYXRpb25HZW9sb2NhdGlv
blByb3ZpZGVyOjpzdGFydCgpCit7CisgICAgW21fbG9jYXRpb25NYW5hZ2VyIHN0YXJ0XTsKK30K
Kwordm9pZCBDb3JlTG9jYXRpb25HZW9sb2NhdGlvblByb3ZpZGVyOjpzdG9wKCkKK3sKKyAgICBb
bV9sb2NhdGlvbk1hbmFnZXIgc3RvcF07Cit9CisKK3ZvaWQgQ29yZUxvY2F0aW9uR2VvbG9jYXRp
b25Qcm92aWRlcjo6c2V0RW5hYmxlSGlnaEFjY3VyYWN5KGJvb2wgaGlnaEFjY3VyYWN5RW5hYmxl
ZCkKK3sKKyAgICBbbV9sb2NhdGlvbk1hbmFnZXIgc2V0RW5hYmxlSGlnaEFjY3VyYWN5OmhpZ2hB
Y2N1cmFjeUVuYWJsZWRdOworfQorCitjbGFzcyBBdXRob3JpemF0aW9uQ2hlY2tlciBmaW5hbCA6
IHB1YmxpYyBSZWZDb3VudGVkPEF1dGhvcml6YXRpb25DaGVja2VyPiwgcHVibGljIENvcmVMb2Nh
dGlvbkdlb2xvY2F0aW9uUHJvdmlkZXI6OkNsaWVudCB7CitwdWJsaWM6CisgICAgc3RhdGljIFJl
ZjxBdXRob3JpemF0aW9uQ2hlY2tlcj4gY3JlYXRlKCkKKyAgICB7CisgICAgICAgIHJldHVybiBh
ZG9wdFJlZigqbmV3IEF1dGhvcml6YXRpb25DaGVja2VyKTsKKyAgICB9CisKKyAgICB2b2lkIGNo
ZWNrKGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiByZWdpc3RyYWJsZURvbWFpbiwgQ29tcGxldGlv
bkhhbmRsZXI8dm9pZChib29sKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKKyAgICB7CisgICAgICAg
IG1fY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKTsKKyAgICAg
ICAgbV9wcm92aWRlciA9IG1ha2VVbmlxdWU8Q29yZUxvY2F0aW9uR2VvbG9jYXRpb25Qcm92aWRl
cj4ocmVnaXN0cmFibGVEb21haW4sICp0aGlzKTsKKyAgICB9CisKK3ByaXZhdGU6CisgICAgQXV0
aG9yaXphdGlvbkNoZWNrZXIoKSA9IGRlZmF1bHQ7CisKKyAgICB2b2lkIGdlb2xvY2F0aW9uQXV0
aG9yaXphdGlvbkdyYW50ZWQoY29uc3QgU3RyaW5nJikgZmluYWwKKyAgICB7CisgICAgICAgIGlm
IChtX2NvbXBsZXRpb25IYW5kbGVyKQorICAgICAgICAgICAgbV9jb21wbGV0aW9uSGFuZGxlcih0
cnVlKTsKKyAgICB9CisKKyAgICB2b2lkIGdlb2xvY2F0aW9uQXV0aG9yaXphdGlvbkRlbmllZChj
b25zdCBTdHJpbmcmKSBmaW5hbAorICAgIHsKKyAgICAgICAgaWYgKG1fY29tcGxldGlvbkhhbmRs
ZXIpCisgICAgICAgICAgICBtX2NvbXBsZXRpb25IYW5kbGVyKGZhbHNlKTsKKyAgICB9CisKKyAg
ICB2b2lkIHBvc2l0aW9uQ2hhbmdlZChjb25zdCBTdHJpbmcmLCBHZW9sb2NhdGlvblBvc2l0aW9u
RGF0YSYmKSBmaW5hbCB7IH0KKyAgICB2b2lkIGVycm9yT2NjdXJyZWQoY29uc3QgU3RyaW5nJiwg
Y29uc3QgU3RyaW5nJikgZmluYWwKKyAgICB7CisgICAgICAgIGlmIChtX2NvbXBsZXRpb25IYW5k
bGVyKQorICAgICAgICAgICAgbV9jb21wbGV0aW9uSGFuZGxlcihmYWxzZSk7CisgICAgfQorICAg
IHZvaWQgcmVzZXRHZW9sb2NhdGlvbihjb25zdCBTdHJpbmcmKSBmaW5hbCB7IH0KKworICAgIHN0
ZDo6dW5pcXVlX3B0cjxDb3JlTG9jYXRpb25HZW9sb2NhdGlvblByb3ZpZGVyPiBtX3Byb3ZpZGVy
OworICAgIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+IG1fY29tcGxldGlvbkhhbmRsZXI7
Cit9OworCit2b2lkIENvcmVMb2NhdGlvbkdlb2xvY2F0aW9uUHJvdmlkZXI6OnJlcXVlc3RBdXRo
b3JpemF0aW9uKGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiByZWdpc3RyYWJsZURvbWFpbiwgQ29t
cGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3sKKyAgICBh
dXRvIGF1dGhvcml6YXRpb25DaGVja2VyID0gQXV0aG9yaXphdGlvbkNoZWNrZXI6OmNyZWF0ZSgp
OworICAgIGF1dGhvcml6YXRpb25DaGVja2VyLT5jaGVjayhyZWdpc3RyYWJsZURvbWFpbiwgW2F1
dGhvcml6YXRpb25DaGVja2VyLCBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlv
bkhhbmRsZXIpXShib29sIGF1dGhvcml6ZWQpIG11dGFibGUgeworICAgICAgICBjb21wbGV0aW9u
SGFuZGxlcihhdXRob3JpemVkKTsKKyAgICB9KTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29y
ZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9HZW9sb2NhdGlvbkNs
aWVudE1vY2suY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9HZW9sb2NhdGlvbkNs
aWVudE1vY2suY3BwCmluZGV4IDlkNWVmYzgzZjM0ZWIxOGQ1OTlkYzEwY2FhOGZjMGNhMzk5ZGIw
YTIuLmZhNDIwODJlNTA1OWE5ZWNmMjY0Y2FhZjRjMjY1MzJmNGIyZTVkN2EgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svR2VvbG9jYXRpb25DbGllbnRNb2NrLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL0dlb2xvY2F0aW9uQ2xpZW50TW9jay5j
cHAKQEAgLTEzNiwxMCArMTM2LDExIEBAIHZvaWQgR2VvbG9jYXRpb25DbGllbnRNb2NrOjpnZW9s
b2NhdGlvbkRlc3Ryb3llZCgpCiAgICAgQVNTRVJUKCFtX2lzQWN0aXZlKTsKIH0KIAotdm9pZCBH
ZW9sb2NhdGlvbkNsaWVudE1vY2s6OnN0YXJ0VXBkYXRpbmcoY29uc3QgU3RyaW5nJiBhdXRob3Jp
emF0aW9uVG9rZW4pCit2b2lkIEdlb2xvY2F0aW9uQ2xpZW50TW9jazo6c3RhcnRVcGRhdGluZyhj
b25zdCBTdHJpbmcmIGF1dGhvcml6YXRpb25Ub2tlbiwgYm9vbCBlbmFibGVIaWdoQWNjdXJhY3kp
CiB7CiAgICAgQVNTRVJUKCFtX2lzQWN0aXZlKTsKICAgICBVTlVTRURfUEFSQU0oYXV0aG9yaXph
dGlvblRva2VuKTsKKyAgICBVTlVTRURfUEFSQU0oZW5hYmxlSGlnaEFjY3VyYWN5KTsKICAgICBt
X2lzQWN0aXZlID0gdHJ1ZTsKICAgICBhc3luY1VwZGF0ZUNvbnRyb2xsZXIoKTsKIH0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svR2VvbG9jYXRpb25DbGllbnRNb2Nr
LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL0dlb2xvY2F0aW9uQ2xpZW50TW9jay5o
CmluZGV4IDJmYTc1ZTA1N2E1M2Q3ZTgxOGNjZmFmZWU3MDI0M2RkNTQ4MjE4NDUuLmY4YmFjMzhi
NWI2Y2NjOGNjMDhmODcwNzFlYmM3NWQ2NWIzMTA2NDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL21vY2svR2VvbG9jYXRpb25DbGllbnRNb2NrLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbW9jay9HZW9sb2NhdGlvbkNsaWVudE1vY2suaApAQCAtNTksNyArNTks
NyBAQCBwdWJsaWM6CiAKICAgICAvLyBHZW9sb2NhdGlvbkNsaWVudAogICAgIHZvaWQgZ2VvbG9j
YXRpb25EZXN0cm95ZWQoKSBvdmVycmlkZTsKLSAgICB2b2lkIHN0YXJ0VXBkYXRpbmcoY29uc3Qg
U3RyaW5nJiBhdXRob3JpemF0aW9uVG9rZW4pIG92ZXJyaWRlOworICAgIHZvaWQgc3RhcnRVcGRh
dGluZyhjb25zdCBTdHJpbmcmIGF1dGhvcml6YXRpb25Ub2tlbiwgYm9vbCBlbmFibGVIaWdoQWNj
dXJhY3kpIG92ZXJyaWRlOwogICAgIHZvaWQgc3RvcFVwZGF0aW5nKCkgb3ZlcnJpZGU7CiAgICAg
dm9pZCBzZXRFbmFibGVIaWdoQWNjdXJhY3koYm9vbCkgb3ZlcnJpZGU7CiAgICAgc3RkOjpvcHRp
b25hbDxHZW9sb2NhdGlvblBvc2l0aW9uRGF0YT4gbGFzdFBvc2l0aW9uKCkgb3ZlcnJpZGU7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NvdXJjZXNDb2NvYS50eHQgYi9Tb3VyY2UvV2ViS2l0
L1NvdXJjZXNDb2NvYS50eHQKaW5kZXggMmFjZGE5NDFlY2RmNGJjYmU3ZmU5NGE1MTgxNzQ5MWYx
YzBiZjM5YS4uMzlmZWE5MWNlNTYxNzU4MTYwYWQ5MjE4OTg5NDUzZTU4M2VkNjQ2MSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9Tb3VyY2VzQ29jb2EudHh0CisrKyBiL1NvdXJjZS9XZWJLaXQv
U291cmNlc0NvY29hLnR4dApAQCAtNDI3LDYgKzQyNyw3IEBAIFVJUHJvY2Vzcy9Db2NvYS9VSVJl
bW90ZU9iamVjdFJlZ2lzdHJ5LmNwcAogVUlQcm9jZXNzL0NvY29hL1VzZXJNZWRpYUNhcHR1cmVN
YW5hZ2VyUHJveHkuY3BwCiBVSVByb2Nlc3MvQ29jb2EvVXNlck1lZGlhUGVybWlzc2lvblJlcXVl
c3RNYW5hZ2VyUHJveHkubW0KIFVJUHJvY2Vzcy9Db2NvYS9WaWRlb0Z1bGxzY3JlZW5NYW5hZ2Vy
UHJveHkubW0KK1VJUHJvY2Vzcy9Db2NvYS9XZWJHZW9sb2NhdGlvbk1hbmFnZXJQcm94eUNvY29h
LmNwcAogVUlQcm9jZXNzL0NvY29hL1dlYlBhZ2VQcm94eUNvY29hLm1tCiBVSVByb2Nlc3MvQ29j
b2EvV2ViUGFzdGVib2FyZFByb3h5Q29jb2EubW0KIFVJUHJvY2Vzcy9Db2NvYS9XZWJQcmVmZXJl
bmNlc0NvY29hLm1tCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9X
ZWJHZW9sb2NhdGlvbk1hbmFnZXJQcm94eUNvY29hLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0NvY29hL1dlYkdlb2xvY2F0aW9uTWFuYWdlclByb3h5Q29jb2EuY3BwCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LmYwYmZiZGU5MzIyMmIxMDU3ZjE3MzZiNzI5MjIwMTIzMmIwMjU2OGYKLS0tIC9kZXYvbnVsbAor
KysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XZWJHZW9sb2NhdGlvbk1hbmFnZXJQ
cm94eUNvY29hLmNwcApAQCAtMCwwICsxLDc2IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIy
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBB
UyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJF
IERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJV
VE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVT
UworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
CisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNv
bmZpZy5oIgorI2luY2x1ZGUgIldlYkdlb2xvY2F0aW9uTWFuYWdlclByb3h5LmgiCisKKyNpbmNs
dWRlICJXZWJHZW9sb2NhdGlvbk1hbmFnZXJNZXNzYWdlcy5oIgorI2luY2x1ZGUgIldlYlByb2Nl
c3NQcm94eS5oIgorCituYW1lc3BhY2UgV2ViS2l0IHsKKworLy8gRklYTUU6IFRoaXMgc2hvdWxk
IGJlIHVzZWQgYnkgYWxsIENvY29hIHBvcnRzCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKKwor
dm9pZCBXZWJHZW9sb2NhdGlvbk1hbmFnZXJQcm94eTo6cG9zaXRpb25DaGFuZ2VkKGNvbnN0IFN0
cmluZyYgd2Vic2l0ZUlkZW50aWZpZXIsIFdlYkNvcmU6Okdlb2xvY2F0aW9uUG9zaXRpb25EYXRh
JiYgcG9zaXRpb24pCit7CisgICAgYXV0byByZWdpc3RyYWJsZURvbWFpbiA9IFdlYkNvcmU6OlJl
Z2lzdHJhYmxlRG9tYWluOjp1bmNoZWNrZWRDcmVhdGVGcm9tUmVnaXN0cmFibGVEb21haW5TdHJp
bmcod2Vic2l0ZUlkZW50aWZpZXIpOworICAgIGF1dG8gaXQgPSBtX3BlckRvbWFpbkRhdGEuZmlu
ZChyZWdpc3RyYWJsZURvbWFpbik7CisgICAgaWYgKGl0ID09IG1fcGVyRG9tYWluRGF0YS5lbmQo
KSkKKyAgICAgICAgcmV0dXJuOworCisgICAgYXV0byYgcGVyRG9tYWluRGF0YSA9ICppdC0+dmFs
dWU7CisgICAgcGVyRG9tYWluRGF0YS5sYXN0UG9zaXRpb24gPSBXVEZNb3ZlKHBvc2l0aW9uKTsK
KyAgICBmb3IgKGF1dG8mIHdlYlByb2Nlc3NQcm94eSA6IHBlckRvbWFpbkRhdGEud2F0Y2hlcnMp
CisgICAgICAgIHdlYlByb2Nlc3NQcm94eS5zZW5kKE1lc3NhZ2VzOjpXZWJHZW9sb2NhdGlvbk1h
bmFnZXI6OkRpZENoYW5nZVBvc2l0aW9uKHJlZ2lzdHJhYmxlRG9tYWluLCBwZXJEb21haW5EYXRh
Lmxhc3RQb3NpdGlvbi52YWx1ZSgpKSwgMCk7Cit9CisKK3ZvaWQgV2ViR2VvbG9jYXRpb25NYW5h
Z2VyUHJveHk6OmVycm9yT2NjdXJyZWQoY29uc3QgU3RyaW5nJiB3ZWJzaXRlSWRlbnRpZmllciwg
Y29uc3QgU3RyaW5nJiBlcnJvck1lc3NhZ2UpCit7CisgICAgYXV0byByZWdpc3RyYWJsZURvbWFp
biA9IFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluOjp1bmNoZWNrZWRDcmVhdGVGcm9tUmVnaXN0
cmFibGVEb21haW5TdHJpbmcod2Vic2l0ZUlkZW50aWZpZXIpOworICAgIGF1dG8gaXQgPSBtX3Bl
ckRvbWFpbkRhdGEuZmluZChyZWdpc3RyYWJsZURvbWFpbik7CisgICAgaWYgKGl0ID09IG1fcGVy
RG9tYWluRGF0YS5lbmQoKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgYXV0byYgcGVyRG9tYWlu
RGF0YSA9ICppdC0+dmFsdWU7CisgICAgZm9yIChhdXRvJiB3ZWJQcm9jZXNzUHJveHkgOiBwZXJE
b21haW5EYXRhLndhdGNoZXJzKQorICAgICAgICB3ZWJQcm9jZXNzUHJveHkuc2VuZChNZXNzYWdl
czo6V2ViR2VvbG9jYXRpb25NYW5hZ2VyOjpEaWRGYWlsVG9EZXRlcm1pbmVQb3NpdGlvbihyZWdp
c3RyYWJsZURvbWFpbiwgZXJyb3JNZXNzYWdlKSwgMCk7Cit9CisKK3ZvaWQgV2ViR2VvbG9jYXRp
b25NYW5hZ2VyUHJveHk6OnJlc2V0R2VvbG9jYXRpb24oY29uc3QgU3RyaW5nJiB3ZWJzaXRlSWRl
bnRpZmllcikKK3sKKyAgICBhdXRvIHJlZ2lzdHJhYmxlRG9tYWluID0gV2ViQ29yZTo6UmVnaXN0
cmFibGVEb21haW46OnVuY2hlY2tlZENyZWF0ZUZyb21SZWdpc3RyYWJsZURvbWFpblN0cmluZyh3
ZWJzaXRlSWRlbnRpZmllcik7CisgICAgYXV0byBpdCA9IG1fcGVyRG9tYWluRGF0YS5maW5kKHJl
Z2lzdHJhYmxlRG9tYWluKTsKKyAgICBpZiAoaXQgPT0gbV9wZXJEb21haW5EYXRhLmVuZCgpKQor
ICAgICAgICByZXR1cm47CisKKyAgICBhdXRvJiBwZXJEb21haW5EYXRhID0gKml0LT52YWx1ZTsK
KyAgICBmb3IgKGF1dG8mIHdlYlByb2Nlc3NQcm94eSA6IHBlckRvbWFpbkRhdGEud2F0Y2hlcnMp
CisgICAgICAgIHdlYlByb2Nlc3NQcm94eS5zZW5kKE1lc3NhZ2VzOjpXZWJHZW9sb2NhdGlvbk1h
bmFnZXI6OlJlc2V0UGVybWlzc2lvbnMocmVnaXN0cmFibGVEb21haW4pLCAwKTsKK30KKworI2Vu
ZGlmCisKK30gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvV2ViQ29udGV4dFN1cHBsZW1lbnQuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L1dlYkNvbnRleHRTdXBwbGVtZW50LmgKaW5kZXggZWQ1NWI0MDNkYjI5Zjk0MDA0MzhiYTMyYTYw
Yzc1ODI3NDkzNGZhNi4uZWMxOWNkY2NjYmI0MGY5MmQ1ODM1ZjNlYTYwMzFiZGRhNDc3YThlMiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQ29udGV4dFN1cHBsZW1lbnQu
aAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJDb250ZXh0U3VwcGxlbWVudC5oCkBA
IC00NywxNCArNDcsNiBAQCBwdWJsaWM6CiAgICAgewogICAgIH0KIAotICAgIHZpcnR1YWwgdm9p
ZCBwcm9jZXNzRGlkQ2xvc2UoV2ViUHJvY2Vzc1Byb3h5KikKLSAgICB7Ci0gICAgfQotCi0gICAg
dmlydHVhbCB2b2lkIHByb2Nlc3NEaWRDbG9zZShOZXR3b3JrUHJvY2Vzc1Byb3h5KikKLSAgICB7
Ci0gICAgfQotCiAgICAgV2ViUHJvY2Vzc1Bvb2wqIHByb2Nlc3NQb29sKCkgY29uc3QgeyByZXR1
cm4gbV9wcm9jZXNzUG9vbDsgfQogICAgIHZvaWQgY2xlYXJQcm9jZXNzUG9vbCgpIHsgbV9wcm9j
ZXNzUG9vbCA9IG51bGxwdHI7IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvV2ViR2VvbG9jYXRpb25NYW5hZ2VyUHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvV2ViR2VvbG9jYXRpb25NYW5hZ2VyUHJveHkuY3BwCmluZGV4IDA0ZjMyMjdjZDU1Yzk5MmE0
MmNkOTZhM2YyNWQ2OTdhZWQ3OTY1YTIuLjU2NjU3NGQzZTcxMjMyODU1ZGRjYzZjMWRlNDAzN2Mx
MzY2NDQ2NWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkdlb2xvY2F0
aW9uTWFuYWdlclByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJHZW9s
b2NhdGlvbk1hbmFnZXJQcm94eS5jcHAKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0
IChDKSAyMDExLCAyMDEyLCAyMDEzIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAq
IENvcHlyaWdodCAoQykgMjAxMS0yMDIyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
ICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMzQsMTAgKzM0LDE1IEBACiAjaW5j
bHVkZSAiV2ViUGFnZVByb3h5LmgiCiAjaW5jbHVkZSAiV2ViUHJvY2Vzc1Bvb2wuaCIKIAotI2Rl
ZmluZSBNRVNTQUdFX0NIRUNLKGFzc2VydGlvbikgTUVTU0FHRV9DSEVDS19CQVNFKGFzc2VydGlv
biwgKCZjb25uZWN0aW9uKSkKKyNkZWZpbmUgTUVTU0FHRV9DSEVDSyhjb25uZWN0aW9uLCBhc3Nl
cnRpb24pIE1FU1NBR0VfQ0hFQ0tfQkFTRShhc3NlcnRpb24sIChjb25uZWN0aW9uKSkKIAogbmFt
ZXNwYWNlIFdlYktpdCB7CiAKK3N0YXRpYyBpbmxpbmUgV2ViUHJvY2Vzc1Byb3h5JiBjb25uZWN0
aW9uVG9XZWJQcm9jZXNzUHJveHkoY29uc3QgSVBDOjpDb25uZWN0aW9uJiBjb25uZWN0aW9uKQor
eworICAgIHJldHVybiBzdGF0aWNfY2FzdDxXZWJQcm9jZXNzUHJveHkmPihjb25uZWN0aW9uLmNs
aWVudCgpKTsKK30KKwogY29uc3QgY2hhciogV2ViR2VvbG9jYXRpb25NYW5hZ2VyUHJveHk6OnN1
cHBsZW1lbnROYW1lKCkKIHsKICAgICByZXR1cm4gIldlYkdlb2xvY2F0aW9uTWFuYWdlclByb3h5
IjsKQEAgLTUwLDM0ICs1NSwzOCBAQCBSZWY8V2ViR2VvbG9jYXRpb25NYW5hZ2VyUHJveHk+IFdl
Ykdlb2xvY2F0aW9uTWFuYWdlclByb3h5OjpjcmVhdGUoV2ViUHJvY2Vzc1BvbwogCiBXZWJHZW9s
b2NhdGlvbk1hbmFnZXJQcm94eTo6V2ViR2VvbG9jYXRpb25NYW5hZ2VyUHJveHkoV2ViUHJvY2Vz
c1Bvb2wqIHByb2Nlc3NQb29sKQogICAgIDogV2ViQ29udGV4dFN1cHBsZW1lbnQocHJvY2Vzc1Bv
b2wpCi0gICAgLCBtX3Byb3ZpZGVyKG1ha2VVbmlxdWU8QVBJOjpHZW9sb2NhdGlvblByb3ZpZGVy
PigpKQogewogICAgIFdlYkNvbnRleHRTdXBwbGVtZW50Ojpwcm9jZXNzUG9vbCgpLT5hZGRNZXNz
YWdlUmVjZWl2ZXIoTWVzc2FnZXM6OldlYkdlb2xvY2F0aW9uTWFuYWdlclByb3h5OjptZXNzYWdl
UmVjZWl2ZXJOYW1lKCksICp0aGlzKTsKIH0KIAorV2ViR2VvbG9jYXRpb25NYW5hZ2VyUHJveHk6
On5XZWJHZW9sb2NhdGlvbk1hbmFnZXJQcm94eSgpID0gZGVmYXVsdDsKKwogdm9pZCBXZWJHZW9s
b2NhdGlvbk1hbmFnZXJQcm94eTo6c2V0UHJvdmlkZXIoc3RkOjp1bmlxdWVfcHRyPEFQSTo6R2Vv
bG9jYXRpb25Qcm92aWRlcj4mJiBwcm92aWRlcikKIHsKLSAgICBpZiAoIXByb3ZpZGVyKQotICAg
ICAgICBtX3Byb3ZpZGVyID0gbWFrZVVuaXF1ZTxBUEk6Okdlb2xvY2F0aW9uUHJvdmlkZXI+KCk7
Ci0gICAgZWxzZQotICAgICAgICBtX3Byb3ZpZGVyID0gV1RGTW92ZShwcm92aWRlcik7CisgICAg
bV9jbGllbnRQcm92aWRlciA9IFdURk1vdmUocHJvdmlkZXIpOwogfQogCiAvLyBXZWJDb250ZXh0
U3VwcGxlbWVudAogCiB2b2lkIFdlYkdlb2xvY2F0aW9uTWFuYWdlclByb3h5Ojpwcm9jZXNzUG9v
bERlc3Ryb3llZCgpCiB7Ci0gICAgYm9vbCB3YXNVcGRhdGluZyA9IGlzVXBkYXRpbmcoKTsKLSAg
ICBtX3VwZGF0ZVJlcXVlc3RlcnMuY2xlYXIoKTsKKyAgICBpZiAobV9wZXJEb21haW5EYXRhLmlz
RW1wdHkoKSkKKyAgICAgICAgcmV0dXJuOwogCi0gICAgQVNTRVJUKCFpc1VwZGF0aW5nKCkpOwot
ICAgIGlmICh3YXNVcGRhdGluZykKLSAgICAgICAgbV9wcm92aWRlci0+c3RvcFVwZGF0aW5nKCp0
aGlzKTsKKyAgICBtX3BlckRvbWFpbkRhdGEuY2xlYXIoKTsKKyAgICBpZiAobV9jbGllbnRQcm92
aWRlcikKKyAgICAgICAgbV9jbGllbnRQcm92aWRlci0+c3RvcFVwZGF0aW5nKCp0aGlzKTsKIH0K
IAotdm9pZCBXZWJHZW9sb2NhdGlvbk1hbmFnZXJQcm94eTo6cHJvY2Vzc0RpZENsb3NlKFdlYlBy
b2Nlc3NQcm94eSogd2ViUHJvY2Vzc1Byb3h5KQordm9pZCBXZWJHZW9sb2NhdGlvbk1hbmFnZXJQ
cm94eTo6d2ViUHJvY2Vzc0lzR29pbmdBd2F5KFdlYlByb2Nlc3NQcm94eSYgcHJveHkpCiB7Ci0g
ICAgcmVtb3ZlUmVxdWVzdGVyKHdlYlByb2Nlc3NQcm94eSk7CisgICAgVmVjdG9yPFdlYkNvcmU6
OlJlZ2lzdHJhYmxlRG9tYWluPiBhZmZlY3RlZERvbWFpbnM7CisgICAgZm9yIChhdXRvJiBbcmVn
aXN0cmFibGVEb21haW4sIHBlckRvbWFpbkRhdGFdIDogbV9wZXJEb21haW5EYXRhKSB7CisgICAg
ICAgIGlmIChwZXJEb21haW5EYXRhLT53YXRjaGVycy5jb250YWlucyhwcm94eSkpCisgICAgICAg
ICAgICBhZmZlY3RlZERvbWFpbnMuYXBwZW5kKHJlZ2lzdHJhYmxlRG9tYWluKTsKKyAgICB9Cisg
ICAgZm9yIChhdXRvJiByZWdpc3RyYWJsZURvbWFpbiA6IGFmZmVjdGVkRG9tYWlucykKKyAgICAg
ICAgc3RvcFVwZGF0aW5nV2l0aFByb3h5KHByb3h5LCByZWdpc3RyYWJsZURvbWFpbik7CiB9CiAK
IHZvaWQgV2ViR2VvbG9jYXRpb25NYW5hZ2VyUHJveHk6OnJlZldlYkNvbnRleHRTdXBwbGVtZW50
KCkKQEAgLTkyLDgwICsxMDEsMjA0IEBAIHZvaWQgV2ViR2VvbG9jYXRpb25NYW5hZ2VyUHJveHk6
OmRlcmVmV2ViQ29udGV4dFN1cHBsZW1lbnQoKQogCiB2b2lkIFdlYkdlb2xvY2F0aW9uTWFuYWdl
clByb3h5Ojpwcm92aWRlckRpZENoYW5nZVBvc2l0aW9uKFdlYkdlb2xvY2F0aW9uUG9zaXRpb24q
IHBvc2l0aW9uKQogewotICAgIG1fbGFzdFBvc2l0aW9uID0gcG9zaXRpb24tPmNvcmVQb3NpdGlv
bigpOwotCi0gICAgaWYgKCFwcm9jZXNzUG9vbCgpKQotICAgICAgICByZXR1cm47Ci0KLSAgICBw
cm9jZXNzUG9vbCgpLT5zZW5kVG9BbGxQcm9jZXNzZXMoTWVzc2FnZXM6OldlYkdlb2xvY2F0aW9u
TWFuYWdlcjo6RGlkQ2hhbmdlUG9zaXRpb24obV9sYXN0UG9zaXRpb24udmFsdWUoKSkpOworICAg
IGZvciAoYXV0byYgW3JlZ2lzdHJhYmxlRG9tYWluLCBwZXJEb21haW5EYXRhXSA6IG1fcGVyRG9t
YWluRGF0YSkgeworICAgICAgICBwZXJEb21haW5EYXRhLT5sYXN0UG9zaXRpb24gPSBwb3NpdGlv
bi0+Y29yZVBvc2l0aW9uKCk7CisgICAgICAgIGZvciAoYXV0byYgcHJvY2VzcyA6IHBlckRvbWFp
bkRhdGEtPndhdGNoZXJzKQorICAgICAgICAgICAgcHJvY2Vzcy5zZW5kKE1lc3NhZ2VzOjpXZWJH
ZW9sb2NhdGlvbk1hbmFnZXI6OkRpZENoYW5nZVBvc2l0aW9uKHJlZ2lzdHJhYmxlRG9tYWluLCBw
ZXJEb21haW5EYXRhLT5sYXN0UG9zaXRpb24udmFsdWUoKSksIDApOworICAgIH0KIH0KIAogdm9p
ZCBXZWJHZW9sb2NhdGlvbk1hbmFnZXJQcm94eTo6cHJvdmlkZXJEaWRGYWlsVG9EZXRlcm1pbmVQ
b3NpdGlvbihjb25zdCBTdHJpbmcmIGVycm9yTWVzc2FnZSkKIHsKLSAgICBpZiAoIXByb2Nlc3NQ
b29sKCkpCi0gICAgICAgIHJldHVybjsKLQotICAgIHByb2Nlc3NQb29sKCktPnNlbmRUb0FsbFBy
b2Nlc3NlcyhNZXNzYWdlczo6V2ViR2VvbG9jYXRpb25NYW5hZ2VyOjpEaWRGYWlsVG9EZXRlcm1p
bmVQb3NpdGlvbihlcnJvck1lc3NhZ2UpKTsKKyAgICBmb3IgKGF1dG8mIFtyZWdpc3RyYWJsZURv
bWFpbiwgcGVyRG9tYWluRGF0YV0gOiBtX3BlckRvbWFpbkRhdGEpIHsKKyAgICAgICAgZm9yIChh
dXRvJiBwcm94eSA6IHBlckRvbWFpbkRhdGEtPndhdGNoZXJzKQorICAgICAgICAgICAgcHJveHku
c2VuZChNZXNzYWdlczo6V2ViR2VvbG9jYXRpb25NYW5hZ2VyOjpEaWRGYWlsVG9EZXRlcm1pbmVQ
b3NpdGlvbihyZWdpc3RyYWJsZURvbWFpbiwgZXJyb3JNZXNzYWdlKSwgMCk7CisgICAgfQogfQog
CiAjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKIHZvaWQgV2ViR2VvbG9jYXRpb25NYW5hZ2VyUHJv
eHk6OnJlc2V0UGVybWlzc2lvbnMoKQogewotICAgIHByb2Nlc3NQb29sKCktPnNlbmRUb0FsbFBy
b2Nlc3NlcyhNZXNzYWdlczo6V2ViR2VvbG9jYXRpb25NYW5hZ2VyOjpSZXNldFBlcm1pc3Npb25z
KCkpOworICAgIEFTU0VSVChtX2NsaWVudFByb3ZpZGVyKTsKKyAgICBmb3IgKGF1dG8mIFtyZWdp
c3RyYWJsZURvbWFpbiwgcGVyRG9tYWluRGF0YV0gOiBtX3BlckRvbWFpbkRhdGEpIHsKKyAgICAg
ICAgZm9yIChhdXRvJiBwcm94eSA6IHBlckRvbWFpbkRhdGEtPndhdGNoZXJzKQorICAgICAgICAg
ICAgcHJveHkuc2VuZChNZXNzYWdlczo6V2ViR2VvbG9jYXRpb25NYW5hZ2VyOjpSZXNldFBlcm1p
c3Npb25zKHJlZ2lzdHJhYmxlRG9tYWluKSwgMCk7CisgICAgfQogfQogI2VuZGlmCiAKLXZvaWQg
V2ViR2VvbG9jYXRpb25NYW5hZ2VyUHJveHk6OnN0YXJ0VXBkYXRpbmcoSVBDOjpDb25uZWN0aW9u
JiBjb25uZWN0aW9uLCBXZWJQYWdlUHJveHlJZGVudGlmaWVyIHBhZ2VQcm94eUlELCBjb25zdCBT
dHJpbmcmIGF1dGhvcml6YXRpb25Ub2tlbikKK3ZvaWQgV2ViR2VvbG9jYXRpb25NYW5hZ2VyUHJv
eHk6OnN0YXJ0VXBkYXRpbmcoSVBDOjpDb25uZWN0aW9uJiBjb25uZWN0aW9uLCBjb25zdCBXZWJD
b3JlOjpSZWdpc3RyYWJsZURvbWFpbiYgcmVnaXN0cmFibGVEb21haW4sIFdlYlBhZ2VQcm94eUlk
ZW50aWZpZXIgcGFnZVByb3h5SUQsIGNvbnN0IFN0cmluZyYgYXV0aG9yaXphdGlvblRva2VuLCBi
b29sIGVuYWJsZUhpZ2hBY2N1cmFjeSkKK3sKKyAgICBzdGFydFVwZGF0aW5nV2l0aFByb3h5KGNv
bm5lY3Rpb25Ub1dlYlByb2Nlc3NQcm94eShjb25uZWN0aW9uKSwgcmVnaXN0cmFibGVEb21haW4s
IHBhZ2VQcm94eUlELCBhdXRob3JpemF0aW9uVG9rZW4sIGVuYWJsZUhpZ2hBY2N1cmFjeSk7Cit9
CisKK3ZvaWQgV2ViR2VvbG9jYXRpb25NYW5hZ2VyUHJveHk6OnN0YXJ0VXBkYXRpbmdXaXRoUHJv
eHkoV2ViUHJvY2Vzc1Byb3h5JiBwcm94eSwgY29uc3QgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21h
aW4mIHJlZ2lzdHJhYmxlRG9tYWluLCBXZWJQYWdlUHJveHlJZGVudGlmaWVyIHBhZ2VQcm94eUlE
LCBjb25zdCBTdHJpbmcmIGF1dGhvcml6YXRpb25Ub2tlbiwgYm9vbCBlbmFibGVIaWdoQWNjdXJh
Y3kpCiB7CiAgICAgYXV0byogcGFnZSA9IFdlYlByb2Nlc3NQcm94eTo6d2ViUGFnZShwYWdlUHJv
eHlJRCk7Ci0gICAgTUVTU0FHRV9DSEVDSyhwYWdlKTsKKyAgICBNRVNTQUdFX0NIRUNLKHByb3h5
LmNvbm5lY3Rpb24oKSwgcGFnZSk7CiAKICAgICBhdXRvIGlzVmFsaWRBdXRob3JpemF0aW9uVG9r
ZW4gPSBwYWdlLT5nZW9sb2NhdGlvblBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlcigpLmlzVmFsaWRB
dXRob3JpemF0aW9uVG9rZW4oYXV0aG9yaXphdGlvblRva2VuKTsKLSAgICBNRVNTQUdFX0NIRUNL
KGlzVmFsaWRBdXRob3JpemF0aW9uVG9rZW4pOworICAgIE1FU1NBR0VfQ0hFQ0socHJveHkuY29u
bmVjdGlvbigpLCBpc1ZhbGlkQXV0aG9yaXphdGlvblRva2VuKTsKKworICAgIGF1dG8mIHBlckRv
bWFpbkRhdGEgPSAqbV9wZXJEb21haW5EYXRhLmVuc3VyZShyZWdpc3RyYWJsZURvbWFpbiwgW10g
eworICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZTxQZXJEb21haW5EYXRhPigpOworICAgIH0pLml0
ZXJhdG9yLT52YWx1ZTsKKworICAgIGJvb2wgd2FzVXBkYXRpbmcgPSBpc1VwZGF0aW5nKHBlckRv
bWFpbkRhdGEpOworICAgIGJvb2wgaGlnaEFjY3VyYWN5V2FzRW5hYmxlZCA9IGlzSGlnaEFjY3Vy
YWN5RW5hYmxlZChwZXJEb21haW5EYXRhKTsKKworICAgIHBlckRvbWFpbkRhdGEud2F0Y2hlcnMu
YWRkKHByb3h5KTsKKyAgICBpZiAoZW5hYmxlSGlnaEFjY3VyYWN5KQorICAgICAgICBwZXJEb21h
aW5EYXRhLndhdGNoZXJzTmVlZGluZ0hpZ2hBY2N1cmFjeS5hZGQocHJveHkpOwogCi0gICAgYm9v
bCB3YXNVcGRhdGluZyA9IGlzVXBkYXRpbmcoKTsKLSAgICBtX3VwZGF0ZVJlcXVlc3RlcnMuYWRk
KCZjb25uZWN0aW9uLmNsaWVudCgpKTsKICAgICBpZiAoIXdhc1VwZGF0aW5nKSB7Ci0gICAgICAg
IG1fcHJvdmlkZXItPnNldEVuYWJsZUhpZ2hBY2N1cmFjeSgqdGhpcywgaXNIaWdoQWNjdXJhY3lF
bmFibGVkKCkpOwotICAgICAgICBtX3Byb3ZpZGVyLT5zdGFydFVwZGF0aW5nKCp0aGlzKTsKLSAg
ICB9IGVsc2UgaWYgKG1fbGFzdFBvc2l0aW9uKQotICAgICAgICBjb25uZWN0aW9uLnNlbmQoTWVz
c2FnZXM6OldlYkdlb2xvY2F0aW9uTWFuYWdlcjo6RGlkQ2hhbmdlUG9zaXRpb24obV9sYXN0UG9z
aXRpb24udmFsdWUoKSksIDApOworICAgICAgICBwcm92aWRlclN0YXJ0VXBkYXRpbmcocGVyRG9t
YWluRGF0YSwgcmVnaXN0cmFibGVEb21haW4pOworICAgICAgICByZXR1cm47CisgICAgfQorICAg
IGlmICghaGlnaEFjY3VyYWN5V2FzRW5hYmxlZCAmJiBlbmFibGVIaWdoQWNjdXJhY3kpCisgICAg
ICAgIHByb3ZpZGVyU2V0RW5hYmxlZEhpZ2hBY2N1cmFjeShwZXJEb21haW5EYXRhLCBlbmFibGVI
aWdoQWNjdXJhY3kpOworCisgICAgaWYgKHBlckRvbWFpbkRhdGEubGFzdFBvc2l0aW9uKQorICAg
ICAgICBwcm94eS5zZW5kKE1lc3NhZ2VzOjpXZWJHZW9sb2NhdGlvbk1hbmFnZXI6OkRpZENoYW5n
ZVBvc2l0aW9uKHJlZ2lzdHJhYmxlRG9tYWluLCBwZXJEb21haW5EYXRhLmxhc3RQb3NpdGlvbi52
YWx1ZSgpKSwgMCk7CiB9CiAKLXZvaWQgV2ViR2VvbG9jYXRpb25NYW5hZ2VyUHJveHk6OnN0b3BV
cGRhdGluZyhJUEM6OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24pCit2b2lkIFdlYkdlb2xvY2F0aW9u
TWFuYWdlclByb3h5OjpzdG9wVXBkYXRpbmcoSVBDOjpDb25uZWN0aW9uJiBjb25uZWN0aW9uLCBj
b25zdCBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiYgcmVnaXN0cmFibGVEb21haW4pCiB7Ci0g
ICAgcmVtb3ZlUmVxdWVzdGVyKCZjb25uZWN0aW9uLmNsaWVudCgpKTsKKyAgICBzdG9wVXBkYXRp
bmdXaXRoUHJveHkoY29ubmVjdGlvblRvV2ViUHJvY2Vzc1Byb3h5KGNvbm5lY3Rpb24pLCByZWdp
c3RyYWJsZURvbWFpbik7CiB9CiAKLXZvaWQgV2ViR2VvbG9jYXRpb25NYW5hZ2VyUHJveHk6OnJl
bW92ZVJlcXVlc3Rlcihjb25zdCBJUEM6OkNvbm5lY3Rpb246OkNsaWVudCogY2xpZW50KQordm9p
ZCBXZWJHZW9sb2NhdGlvbk1hbmFnZXJQcm94eTo6c3RvcFVwZGF0aW5nV2l0aFByb3h5KFdlYlBy
b2Nlc3NQcm94eSYgcHJveHksIGNvbnN0IFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluJiByZWdp
c3RyYWJsZURvbWFpbikKIHsKLSAgICBib29sIHdhc1VwZGF0aW5nID0gaXNVcGRhdGluZygpOwot
ICAgIGJvb2wgaGlnaEFjY3VyYWN5V2FzRW5hYmxlZCA9IGlzSGlnaEFjY3VyYWN5RW5hYmxlZCgp
OworICAgIGF1dG8gaXQgPSBtX3BlckRvbWFpbkRhdGEuZmluZChyZWdpc3RyYWJsZURvbWFpbik7
CisgICAgaWYgKGl0ID09IG1fcGVyRG9tYWluRGF0YS5lbmQoKSkKKyAgICAgICAgcmV0dXJuOwor
CisgICAgYXV0byYgcGVyRG9tYWluRGF0YSA9ICppdC0+dmFsdWU7CisgICAgYm9vbCB3YXNVcGRh
dGluZyA9IGlzVXBkYXRpbmcocGVyRG9tYWluRGF0YSk7CisgICAgYm9vbCBoaWdoQWNjdXJhY3lX
YXNFbmFibGVkID0gaXNIaWdoQWNjdXJhY3lFbmFibGVkKHBlckRvbWFpbkRhdGEpOwogCi0gICAg
bV9oaWdoQWNjdXJhY3lSZXF1ZXN0ZXJzLnJlbW92ZShjbGllbnQpOwotICAgIG1fdXBkYXRlUmVx
dWVzdGVycy5yZW1vdmUoY2xpZW50KTsKKyAgICBwZXJEb21haW5EYXRhLndhdGNoZXJzLnJlbW92
ZShwcm94eSk7CisgICAgcGVyRG9tYWluRGF0YS53YXRjaGVyc05lZWRpbmdIaWdoQWNjdXJhY3ku
cmVtb3ZlKHByb3h5KTsKIAotICAgIGlmICh3YXNVcGRhdGluZyAmJiAhaXNVcGRhdGluZygpKQot
ICAgICAgICBtX3Byb3ZpZGVyLT5zdG9wVXBkYXRpbmcoKnRoaXMpOworICAgIGlmICh3YXNVcGRh
dGluZyAmJiAhaXNVcGRhdGluZyhwZXJEb21haW5EYXRhKSkKKyAgICAgICAgcHJvdmlkZXJTdG9w
VXBkYXRpbmcocGVyRG9tYWluRGF0YSk7CiAgICAgZWxzZSB7Ci0gICAgICAgIGJvb2wgaGlnaEFj
Y3VyYWN5U2hvdWxkQmVFbmFibGVkID0gaXNIaWdoQWNjdXJhY3lFbmFibGVkKCk7CisgICAgICAg
IGJvb2wgaGlnaEFjY3VyYWN5U2hvdWxkQmVFbmFibGVkID0gaXNIaWdoQWNjdXJhY3lFbmFibGVk
KHBlckRvbWFpbkRhdGEpOwogICAgICAgICBpZiAoaGlnaEFjY3VyYWN5U2hvdWxkQmVFbmFibGVk
ICE9IGhpZ2hBY2N1cmFjeVdhc0VuYWJsZWQpCi0gICAgICAgICAgICBtX3Byb3ZpZGVyLT5zZXRF
bmFibGVIaWdoQWNjdXJhY3koKnRoaXMsIGhpZ2hBY2N1cmFjeVNob3VsZEJlRW5hYmxlZCk7Cisg
ICAgICAgICAgICBwcm92aWRlclNldEVuYWJsZWRIaWdoQWNjdXJhY3kocGVyRG9tYWluRGF0YSwg
aGlnaEFjY3VyYWN5U2hvdWxkQmVFbmFibGVkKTsKICAgICB9CisKKyAgICBpZiAocGVyRG9tYWlu
RGF0YS53YXRjaGVycy5jb21wdXRlc0VtcHR5KCkgJiYgcGVyRG9tYWluRGF0YS53YXRjaGVyc05l
ZWRpbmdIaWdoQWNjdXJhY3kuY29tcHV0ZXNFbXB0eSgpKQorICAgICAgICBtX3BlckRvbWFpbkRh
dGEucmVtb3ZlKGl0KTsKK30KKwordm9pZCBXZWJHZW9sb2NhdGlvbk1hbmFnZXJQcm94eTo6c2V0
RW5hYmxlSGlnaEFjY3VyYWN5KElQQzo6Q29ubmVjdGlvbiYgY29ubmVjdGlvbiwgY29uc3QgV2Vi
Q29yZTo6UmVnaXN0cmFibGVEb21haW4mIHJlZ2lzdHJhYmxlRG9tYWluLCBib29sIGVuYWJsZWQp
Cit7CisgICAgc2V0RW5hYmxlSGlnaEFjY3VyYWN5V2l0aFByb3h5KGNvbm5lY3Rpb25Ub1dlYlBy
b2Nlc3NQcm94eShjb25uZWN0aW9uKSwgcmVnaXN0cmFibGVEb21haW4sIGVuYWJsZWQpOwogfQog
Ci12b2lkIFdlYkdlb2xvY2F0aW9uTWFuYWdlclByb3h5OjpzZXRFbmFibGVIaWdoQWNjdXJhY3ko
SVBDOjpDb25uZWN0aW9uJiBjb25uZWN0aW9uLCBib29sIGVuYWJsZWQpCit2b2lkIFdlYkdlb2xv
Y2F0aW9uTWFuYWdlclByb3h5OjpzZXRFbmFibGVIaWdoQWNjdXJhY3lXaXRoUHJveHkoV2ViUHJv
Y2Vzc1Byb3h5JiBwcm94eSwgY29uc3QgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4mIHJlZ2lz
dHJhYmxlRG9tYWluLCBib29sIGVuYWJsZWQpCiB7Ci0gICAgYm9vbCBoaWdoQWNjdXJhY3lXYXNF
bmFibGVkID0gaXNIaWdoQWNjdXJhY3lFbmFibGVkKCk7CisgICAgYXV0byBpdCA9IG1fcGVyRG9t
YWluRGF0YS5maW5kKHJlZ2lzdHJhYmxlRG9tYWluKTsKKyAgICBBU1NFUlQoaXQgIT0gbV9wZXJE
b21haW5EYXRhLmVuZCgpKTsKKyAgICBpZiAoaXQgPT0gbV9wZXJEb21haW5EYXRhLmVuZCgpKQor
ICAgICAgICByZXR1cm47CisKKyAgICBhdXRvJiBwZXJEb21haW5EYXRhID0gKml0LT52YWx1ZTsK
KyAgICBib29sIGhpZ2hBY2N1cmFjeVdhc0VuYWJsZWQgPSBpc0hpZ2hBY2N1cmFjeUVuYWJsZWQo
cGVyRG9tYWluRGF0YSk7CiAKICAgICBpZiAoZW5hYmxlZCkKLSAgICAgICAgbV9oaWdoQWNjdXJh
Y3lSZXF1ZXN0ZXJzLmFkZCgmY29ubmVjdGlvbi5jbGllbnQoKSk7CisgICAgICAgIHBlckRvbWFp
bkRhdGEud2F0Y2hlcnNOZWVkaW5nSGlnaEFjY3VyYWN5LmFkZChwcm94eSk7CiAgICAgZWxzZQot
ICAgICAgICBtX2hpZ2hBY2N1cmFjeVJlcXVlc3RlcnMucmVtb3ZlKCZjb25uZWN0aW9uLmNsaWVu
dCgpKTsKKyAgICAgICAgcGVyRG9tYWluRGF0YS53YXRjaGVyc05lZWRpbmdIaWdoQWNjdXJhY3ku
cmVtb3ZlKHByb3h5KTsKKworICAgIGlmIChpc1VwZGF0aW5nKHBlckRvbWFpbkRhdGEpICYmIGhp
Z2hBY2N1cmFjeVdhc0VuYWJsZWQgIT0gZW5hYmxlZCkKKyAgICAgICAgcHJvdmlkZXJTZXRFbmFi
bGVkSGlnaEFjY3VyYWN5KHBlckRvbWFpbkRhdGEsIGVuYWJsZWQpOworfQorCitib29sIFdlYkdl
b2xvY2F0aW9uTWFuYWdlclByb3h5Ojppc1VwZGF0aW5nKGNvbnN0IFBlckRvbWFpbkRhdGEmIHBl
ckRvbWFpbkRhdGEpIGNvbnN0Cit7CisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKKyAgICBpZiAo
IW1fY2xpZW50UHJvdmlkZXIpCisgICAgICAgIHJldHVybiAhcGVyRG9tYWluRGF0YS53YXRjaGVy
cy5jb21wdXRlc0VtcHR5KCk7CisjZWxzZQorICAgIFVOVVNFRF9QQVJBTShwZXJEb21haW5EYXRh
KTsKKyNlbmRpZgorCisgICAgZm9yIChhdXRvJiBwZXJEb21haW5EYXRhIDogbV9wZXJEb21haW5E
YXRhLnZhbHVlcygpKSB7CisgICAgICAgIGlmICghcGVyRG9tYWluRGF0YS0+d2F0Y2hlcnMuY29t
cHV0ZXNFbXB0eSgpKQorICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfQorICAgIHJldHVy
biBmYWxzZTsKK30KKworCitib29sIFdlYkdlb2xvY2F0aW9uTWFuYWdlclByb3h5Ojppc0hpZ2hB
Y2N1cmFjeUVuYWJsZWQoY29uc3QgUGVyRG9tYWluRGF0YSYgcGVyRG9tYWluRGF0YSkgY29uc3QK
K3sKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZKQorICAgIGlmICghbV9jbGllbnRQcm92aWRlcikK
KyAgICAgICAgcmV0dXJuICFwZXJEb21haW5EYXRhLndhdGNoZXJzTmVlZGluZ0hpZ2hBY2N1cmFj
eS5jb21wdXRlc0VtcHR5KCk7CisjZWxzZQorICAgIFVOVVNFRF9QQVJBTShwZXJEb21haW5EYXRh
KTsKKyNlbmRpZgorCisgICAgZm9yIChhdXRvJiBkYXRhIDogbV9wZXJEb21haW5EYXRhLnZhbHVl
cygpKSB7CisgICAgICAgIGlmICghZGF0YS0+d2F0Y2hlcnNOZWVkaW5nSGlnaEFjY3VyYWN5LmNv
bXB1dGVzRW1wdHkoKSkKKyAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgIH0KKyAgICByZXR1
cm4gZmFsc2U7Cit9CisKK3ZvaWQgV2ViR2VvbG9jYXRpb25NYW5hZ2VyUHJveHk6OnByb3ZpZGVy
U3RhcnRVcGRhdGluZyhQZXJEb21haW5EYXRhJiBwZXJEb21haW5EYXRhLCBjb25zdCBXZWJDb3Jl
OjpSZWdpc3RyYWJsZURvbWFpbiYgcmVnaXN0cmFibGVEb21haW4pCit7CisjaWYgUExBVEZPUk0o
SU9TX0ZBTUlMWSkKKyAgICBpZiAoIW1fY2xpZW50UHJvdmlkZXIpIHsKKyAgICAgICAgQVNTRVJU
KCFwZXJEb21haW5EYXRhLnByb3ZpZGVyKTsKKyAgICAgICAgcGVyRG9tYWluRGF0YS5wcm92aWRl
ciA9IG1ha2VVbmlxdWU8V2ViQ29yZTo6Q29yZUxvY2F0aW9uR2VvbG9jYXRpb25Qcm92aWRlcj4o
cmVnaXN0cmFibGVEb21haW4sICp0aGlzKTsKKyAgICAgICAgcGVyRG9tYWluRGF0YS5wcm92aWRl
ci0+c2V0RW5hYmxlSGlnaEFjY3VyYWN5KCFwZXJEb21haW5EYXRhLndhdGNoZXJzTmVlZGluZ0hp
Z2hBY2N1cmFjeS5jb21wdXRlc0VtcHR5KCkpOworICAgICAgICBwZXJEb21haW5EYXRhLnByb3Zp
ZGVyLT5zdGFydCgpOworICAgICAgICByZXR1cm47CisgICAgfQorI2Vsc2UKKyAgICBVTlVTRURf
UEFSQU0ocmVnaXN0cmFibGVEb21haW4pOworICAgIGlmICghbV9jbGllbnRQcm92aWRlcikKKyAg
ICAgICAgcmV0dXJuOworI2VuZGlmCisKKyAgICBtX2NsaWVudFByb3ZpZGVyLT5zZXRFbmFibGVI
aWdoQWNjdXJhY3koKnRoaXMsIGlzSGlnaEFjY3VyYWN5RW5hYmxlZChwZXJEb21haW5EYXRhKSk7
CisgICAgbV9jbGllbnRQcm92aWRlci0+c3RhcnRVcGRhdGluZygqdGhpcyk7Cit9CisKK3ZvaWQg
V2ViR2VvbG9jYXRpb25NYW5hZ2VyUHJveHk6OnByb3ZpZGVyU3RvcFVwZGF0aW5nKFBlckRvbWFp
bkRhdGEmIHBlckRvbWFpbkRhdGEpCit7CisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKKyAgICBp
ZiAoIW1fY2xpZW50UHJvdmlkZXIpIHsKKyAgICAgICAgcGVyRG9tYWluRGF0YS5wcm92aWRlci0+
c3RvcCgpOworICAgICAgICByZXR1cm47CisgICAgfQorI2Vsc2UKKyAgICBVTlVTRURfUEFSQU0o
cGVyRG9tYWluRGF0YSk7CisgICAgaWYgKCFtX2NsaWVudFByb3ZpZGVyKQorICAgICAgICByZXR1
cm47CisjZW5kaWYKKworICAgIG1fY2xpZW50UHJvdmlkZXItPnN0b3BVcGRhdGluZygqdGhpcyk7
Cit9CisKK3ZvaWQgV2ViR2VvbG9jYXRpb25NYW5hZ2VyUHJveHk6OnByb3ZpZGVyU2V0RW5hYmxl
ZEhpZ2hBY2N1cmFjeShQZXJEb21haW5EYXRhJiBwZXJEb21haW5EYXRhLCBib29sIGVuYWJsZWQp
Cit7CisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKKyAgICBpZiAoIW1fY2xpZW50UHJvdmlkZXIp
IHsKKyAgICAgICAgcGVyRG9tYWluRGF0YS5wcm92aWRlci0+c2V0RW5hYmxlSGlnaEFjY3VyYWN5
KGVuYWJsZWQpOworICAgICAgICByZXR1cm47CisgICAgfQorI2Vsc2UKKyAgICBVTlVTRURfUEFS
QU0ocGVyRG9tYWluRGF0YSk7CisgICAgaWYgKCFtX2NsaWVudFByb3ZpZGVyKQorICAgICAgICBy
ZXR1cm47CisjZW5kaWYKIAotICAgIGJvb2wgaGlnaEFjY3VyYWN5U2hvdWxkQmVFbmFibGVkID0g
aXNIaWdoQWNjdXJhY3lFbmFibGVkKCk7Ci0gICAgaWYgKGlzVXBkYXRpbmcoKSAmJiBoaWdoQWNj
dXJhY3lXYXNFbmFibGVkICE9IGhpZ2hBY2N1cmFjeVNob3VsZEJlRW5hYmxlZCkKLSAgICAgICAg
bV9wcm92aWRlci0+c2V0RW5hYmxlSGlnaEFjY3VyYWN5KCp0aGlzLCBoaWdoQWNjdXJhY3lTaG91
bGRCZUVuYWJsZWQpOworICAgIG1fY2xpZW50UHJvdmlkZXItPnNldEVuYWJsZUhpZ2hBY2N1cmFj
eSgqdGhpcywgZW5hYmxlZCk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViR2VvbG9jYXRpb25NYW5hZ2VyUHJveHkuaCBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkdlb2xvY2F0aW9uTWFuYWdlclByb3h5LmgKaW5k
ZXggNzQ5MzZlNDVhMGQ4MzgzYThiNGIzZDZkNTc4YzliZDIyYmUzZmE1ZS4uZjlhMGNhNjQ5Nzhh
NDljOTEwMDBhZGYxYzRjYjRhMDExMjg3ZTEyZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvV2ViR2VvbG9jYXRpb25NYW5hZ2VyUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9XZWJHZW9sb2NhdGlvbk1hbmFnZXJQcm94eS5oCkBAIC0xLDUgKzEsNSBAQAog
LyoKLSAqIENvcHlyaWdodCAoQykgMjAxMSwgMjAxMiwgMjAxMyBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEtMjAyMiBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTMxLDkg
KzMxLDE1IEBACiAjaW5jbHVkZSAiV2ViQ29udGV4dFN1cHBsZW1lbnQuaCIKICNpbmNsdWRlICJX
ZWJQYWdlUHJveHlJZGVudGlmaWVyLmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9HZW9sb2NhdGlvblBv
c2l0aW9uRGF0YS5oPgotI2luY2x1ZGUgPHd0Zi9IYXNoU2V0Lmg+CisjaW5jbHVkZSA8V2ViQ29y
ZS9SZWdpc3RyYWJsZURvbWFpbi5oPgorI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CisjaW5jbHVk
ZSA8d3RmL1dlYWtIYXNoU2V0Lmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAK
KyNpZiBQTEFURk9STShJT1NfRkFNSUxZKQorI2luY2x1ZGUgPFdlYkNvcmUvQ29yZUxvY2F0aW9u
R2VvbG9jYXRpb25Qcm92aWRlci5oPgorI2VuZGlmCisKIG5hbWVzcGFjZSBBUEkgewogY2xhc3Mg
R2VvbG9jYXRpb25Qcm92aWRlcjsKIH0KQEAgLTQzLDExICs0OSwxNiBAQCBuYW1lc3BhY2UgV2Vi
S2l0IHsKIGNsYXNzIFdlYkdlb2xvY2F0aW9uUG9zaXRpb247CiBjbGFzcyBXZWJQcm9jZXNzUG9v
bDsKIAotY2xhc3MgV2ViR2VvbG9jYXRpb25NYW5hZ2VyUHJveHkgOiBwdWJsaWMgQVBJOjpPYmpl
Y3RJbXBsPEFQSTo6T2JqZWN0OjpUeXBlOjpHZW9sb2NhdGlvbk1hbmFnZXI+LCBwdWJsaWMgV2Vi
Q29udGV4dFN1cHBsZW1lbnQsIHByaXZhdGUgSVBDOjpNZXNzYWdlUmVjZWl2ZXIgeworY2xhc3Mg
V2ViR2VvbG9jYXRpb25NYW5hZ2VyUHJveHkgOiBwdWJsaWMgQVBJOjpPYmplY3RJbXBsPEFQSTo6
T2JqZWN0OjpUeXBlOjpHZW9sb2NhdGlvbk1hbmFnZXI+LCBwdWJsaWMgV2ViQ29udGV4dFN1cHBs
ZW1lbnQsIHByaXZhdGUgSVBDOjpNZXNzYWdlUmVjZWl2ZXIKKyNpZiBQTEFURk9STShJT1NfRkFN
SUxZKQorICAgICwgcHVibGljIFdlYkNvcmU6OkNvcmVMb2NhdGlvbkdlb2xvY2F0aW9uUHJvdmlk
ZXI6OkNsaWVudAorI2VuZGlmCit7CiBwdWJsaWM6CiAgICAgc3RhdGljIGNvbnN0IGNoYXIqIHN1
cHBsZW1lbnROYW1lKCk7CiAKICAgICBzdGF0aWMgUmVmPFdlYkdlb2xvY2F0aW9uTWFuYWdlclBy
b3h5PiBjcmVhdGUoV2ViUHJvY2Vzc1Bvb2wqKTsKKyAgICB+V2ViR2VvbG9jYXRpb25NYW5hZ2Vy
UHJveHkoKTsKIAogICAgIHZvaWQgc2V0UHJvdmlkZXIoc3RkOjp1bmlxdWVfcHRyPEFQSTo6R2Vv
bG9jYXRpb25Qcm92aWRlcj4mJik7CiAKQEAgLTU2LDM2ICs2Nyw1OSBAQCBwdWJsaWM6CiAjaWYg
UExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICB2b2lkIHJlc2V0UGVybWlzc2lvbnMoKTsKICNlbmRp
ZgotICAgIGNvbnN0IHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6R2VvbG9jYXRpb25Qb3NpdGlvbkRh
dGE+JiBsYXN0UG9zaXRpb24oKSBjb25zdCB7IHJldHVybiBtX2xhc3RQb3NpdGlvbjsgfQogCiAg
ICAgdXNpbmcgQVBJOjpPYmplY3Q6OnJlZjsKICAgICB1c2luZyBBUEk6Ok9iamVjdDo6ZGVyZWY7
CiAKKyAgICB2b2lkIHdlYlByb2Nlc3NJc0dvaW5nQXdheShXZWJQcm9jZXNzUHJveHkmKTsKKwog
cHJpdmF0ZToKICAgICBleHBsaWNpdCBXZWJHZW9sb2NhdGlvbk1hbmFnZXJQcm94eShXZWJQcm9j
ZXNzUG9vbCopOwogCiAgICAgLy8gV2ViQ29udGV4dFN1cHBsZW1lbnQKICAgICB2b2lkIHByb2Nl
c3NQb29sRGVzdHJveWVkKCkgb3ZlcnJpZGU7Ci0gICAgdm9pZCBwcm9jZXNzRGlkQ2xvc2UoV2Vi
UHJvY2Vzc1Byb3h5Kikgb3ZlcnJpZGU7CiAgICAgdm9pZCByZWZXZWJDb250ZXh0U3VwcGxlbWVu
dCgpIG92ZXJyaWRlOwogICAgIHZvaWQgZGVyZWZXZWJDb250ZXh0U3VwcGxlbWVudCgpIG92ZXJy
aWRlOwogCiAgICAgLy8gSVBDOjpNZXNzYWdlUmVjZWl2ZXIKICAgICB2b2lkIGRpZFJlY2VpdmVN
ZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYsIElQQzo6RGVjb2RlciYpIG92ZXJyaWRlOwogCi0gICAg
Ym9vbCBpc1VwZGF0aW5nKCkgY29uc3QgeyByZXR1cm4gIW1fdXBkYXRlUmVxdWVzdGVycy5pc0Vt
cHR5KCk7IH0KLSAgICBib29sIGlzSGlnaEFjY3VyYWN5RW5hYmxlZCgpIGNvbnN0IHsgcmV0dXJu
ICFtX2hpZ2hBY2N1cmFjeVJlcXVlc3RlcnMuaXNFbXB0eSgpOyB9CisgICAgLy8gSVBDIG1lc3Nh
Z2VzLgorICAgIHZvaWQgc3RhcnRVcGRhdGluZyhJUEM6OkNvbm5lY3Rpb24mLCBjb25zdCBXZWJD
b3JlOjpSZWdpc3RyYWJsZURvbWFpbiYsIFdlYlBhZ2VQcm94eUlkZW50aWZpZXIsIGNvbnN0IFN0
cmluZyYgYXV0aG9yaXphdGlvblRva2VuLCBib29sIGVuYWJsZUhpZ2hBY2N1cmFjeSk7CisgICAg
dm9pZCBzdG9wVXBkYXRpbmcoSVBDOjpDb25uZWN0aW9uJiwgY29uc3QgV2ViQ29yZTo6UmVnaXN0
cmFibGVEb21haW4mKTsKKyAgICB2b2lkIHNldEVuYWJsZUhpZ2hBY2N1cmFjeShJUEM6OkNvbm5l
Y3Rpb24mLCBjb25zdCBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiYsIGJvb2wpOworCisgICAg
dm9pZCBzdGFydFVwZGF0aW5nV2l0aFByb3h5KFdlYlByb2Nlc3NQcm94eSYsIGNvbnN0IFdlYkNv
cmU6OlJlZ2lzdHJhYmxlRG9tYWluJiwgV2ViUGFnZVByb3h5SWRlbnRpZmllciwgY29uc3QgU3Ry
aW5nJiBhdXRob3JpemF0aW9uVG9rZW4sIGJvb2wgZW5hYmxlSGlnaEFjY3VyYWN5KTsKKyAgICB2
b2lkIHN0b3BVcGRhdGluZ1dpdGhQcm94eShXZWJQcm9jZXNzUHJveHkmLCBjb25zdCBXZWJDb3Jl
OjpSZWdpc3RyYWJsZURvbWFpbiYpOworICAgIHZvaWQgc2V0RW5hYmxlSGlnaEFjY3VyYWN5V2l0
aFByb3h5KFdlYlByb2Nlc3NQcm94eSYsIGNvbnN0IFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWlu
JiwgYm9vbCk7CiAKLSAgICB2b2lkIHN0YXJ0VXBkYXRpbmcoSVBDOjpDb25uZWN0aW9uJiwgV2Vi
UGFnZVByb3h5SWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiBhdXRob3JpemF0aW9uVG9rZW4pOwot
ICAgIHZvaWQgc3RvcFVwZGF0aW5nKElQQzo6Q29ubmVjdGlvbiYpOwotICAgIHZvaWQgcmVtb3Zl
UmVxdWVzdGVyKGNvbnN0IElQQzo6Q29ubmVjdGlvbjo6Q2xpZW50Kik7Ci0gICAgdm9pZCBzZXRF
bmFibGVIaWdoQWNjdXJhY3koSVBDOjpDb25uZWN0aW9uJiwgYm9vbCk7CisjaWYgUExBVEZPUk0o
SU9TX0ZBTUlMWSkKKyAgICAvLyBDb3JlTG9jYXRpb25HZW9sb2NhdGlvblByb3ZpZGVyOjpDbGll
bnQKKyAgICB2b2lkIHBvc2l0aW9uQ2hhbmdlZChjb25zdCBTdHJpbmcmIHdlYnNpdGVJZGVudGlm
aWVyLCBXZWJDb3JlOjpHZW9sb2NhdGlvblBvc2l0aW9uRGF0YSYmKSBmaW5hbDsKKyAgICB2b2lk
IGVycm9yT2NjdXJyZWQoY29uc3QgU3RyaW5nJiB3ZWJzaXRlSWRlbnRpZmllciwgY29uc3QgU3Ry
aW5nJiBlcnJvck1lc3NhZ2UpIGZpbmFsOworICAgIHZvaWQgcmVzZXRHZW9sb2NhdGlvbihjb25z
dCBTdHJpbmcmIHdlYnNpdGVJZGVudGlmaWVyKSBmaW5hbDsKKyNlbmRpZgorCisgICAgc3RydWN0
IFBlckRvbWFpbkRhdGEgeworICAgICAgICBXVEZfTUFLRV9TVFJVQ1RfRkFTVF9BTExPQ0FURUQ7
CisgICAgICAgIFdlYWtIYXNoU2V0PFdlYlByb2Nlc3NQcm94eT4gd2F0Y2hlcnM7CisgICAgICAg
IFdlYWtIYXNoU2V0PFdlYlByb2Nlc3NQcm94eT4gd2F0Y2hlcnNOZWVkaW5nSGlnaEFjY3VyYWN5
OworICAgICAgICBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6Okdlb2xvY2F0aW9uUG9zaXRpb25EYXRh
PiBsYXN0UG9zaXRpb247CisKKyAgICAgICAgLy8gRklYTUU6IFVzZSBmb3IgYWxsIENvY29hIHBv
cnRzLgorI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCisgICAgICAgIHN0ZDo6dW5pcXVlX3B0cjxX
ZWJDb3JlOjpDb3JlTG9jYXRpb25HZW9sb2NhdGlvblByb3ZpZGVyPiBwcm92aWRlcjsKKyNlbmRp
ZgorICAgIH07CiAKLSAgICBIYXNoU2V0PGNvbnN0IElQQzo6Q29ubmVjdGlvbjo6Q2xpZW50Kj4g
bV91cGRhdGVSZXF1ZXN0ZXJzOwotICAgIEhhc2hTZXQ8Y29uc3QgSVBDOjpDb25uZWN0aW9uOjpD
bGllbnQqPiBtX2hpZ2hBY2N1cmFjeVJlcXVlc3RlcnM7CisgICAgYm9vbCBpc1VwZGF0aW5nKGNv
bnN0IFBlckRvbWFpbkRhdGEmKSBjb25zdDsKKyAgICBib29sIGlzSGlnaEFjY3VyYWN5RW5hYmxl
ZChjb25zdCBQZXJEb21haW5EYXRhJikgY29uc3Q7CisgICAgdm9pZCBwcm92aWRlclN0YXJ0VXBk
YXRpbmcoUGVyRG9tYWluRGF0YSYsIGNvbnN0IFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluJik7
CisgICAgdm9pZCBwcm92aWRlclN0b3BVcGRhdGluZyhQZXJEb21haW5EYXRhJik7CisgICAgdm9p
ZCBwcm92aWRlclNldEVuYWJsZWRIaWdoQWNjdXJhY3koUGVyRG9tYWluRGF0YSYsIGJvb2wgZW5h
YmxlZCk7CiAKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8QVBJOjpHZW9sb2NhdGlvblByb3ZpZGVyPiBt
X3Byb3ZpZGVyOwotICAgIHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6R2VvbG9jYXRpb25Qb3NpdGlv
bkRhdGE+IG1fbGFzdFBvc2l0aW9uOworICAgIEhhc2hNYXA8V2ViQ29yZTo6UmVnaXN0cmFibGVE
b21haW4sIHN0ZDo6dW5pcXVlX3B0cjxQZXJEb21haW5EYXRhPj4gbV9wZXJEb21haW5EYXRhOwor
ICAgIHN0ZDo6dW5pcXVlX3B0cjxBUEk6Okdlb2xvY2F0aW9uUHJvdmlkZXI+IG1fY2xpZW50UHJv
dmlkZXI7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL1dlYkdlb2xvY2F0aW9uTWFuYWdlclByb3h5Lm1lc3NhZ2VzLmluIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViR2VvbG9jYXRpb25NYW5hZ2VyUHJveHkubWVzc2Fn
ZXMuaW4KaW5kZXggZTVlOWMyN2QxNGE1ZmI3MjZmY2MyYzgxZmYzZTE2NWVhM2U4NDBiZS4uOTA0
MWE5MGMyNTBmOGFkZDY4YmIxM2IzYWJiNTRiZWI2NmNiMmQyNyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvV2ViR2VvbG9jYXRpb25NYW5hZ2VyUHJveHkubWVzc2FnZXMuaW4K
KysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViR2VvbG9jYXRpb25NYW5hZ2VyUHJveHku
bWVzc2FnZXMuaW4KQEAgLTIxLDcgKzIxLDcgQEAKICMgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KIAogbWVzc2FnZXMg
LT4gV2ViR2VvbG9jYXRpb25NYW5hZ2VyUHJveHkgewotICAgIFN0YXJ0VXBkYXRpbmcoV2ViS2l0
OjpXZWJQYWdlUHJveHlJZGVudGlmaWVyIHBhZ2VQcm94eUlELCBTdHJpbmcgYXV0aG9yaXphdGlv
blRva2VuKSBXYW50c0Nvbm5lY3Rpb24KLSAgICBTdG9wVXBkYXRpbmcoKSBXYW50c0Nvbm5lY3Rp
b24KLSAgICBTZXRFbmFibGVIaWdoQWNjdXJhY3koYm9vbCBlbmFibGVkKSBXYW50c0Nvbm5lY3Rp
b24KKyAgICBTdGFydFVwZGF0aW5nKFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluIHJlZ2lzdHJh
YmxlRG9tYWluLCBXZWJLaXQ6OldlYlBhZ2VQcm94eUlkZW50aWZpZXIgcGFnZVByb3h5SUQsIFN0
cmluZyBhdXRob3JpemF0aW9uVG9rZW4sIGJvb2wgZW5hYmxlSGlnaEFjY3VyYWN5KSBXYW50c0Nv
bm5lY3Rpb24KKyAgICBTdG9wVXBkYXRpbmcoV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4gcmVn
aXN0cmFibGVEb21haW4pIFdhbnRzQ29ubmVjdGlvbgorICAgIFNldEVuYWJsZUhpZ2hBY2N1cmFj
eShXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiByZWdpc3RyYWJsZURvbWFpbiwgYm9vbCBlbmFi
bGVkKSBXYW50c0Nvbm5lY3Rpb24KIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL1dlYlByb2Nlc3NQb29sLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nl
c3NQb29sLmNwcAppbmRleCBmNjBkM2VjZDJjYTZmMGZjNzM2NzBjMzlkYTJhYjc2MDAzNWYyZjc0
Li5mYTE3NDJjZjMyZGE5OTUyNzMyM2RmYzdjOGJmMGE3OTA2MzA0MWZlIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5jcHAKKysrIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuY3BwCkBAIC00MzEsOSArNDMxLDYgQEAgdm9p
ZCBXZWJQcm9jZXNzUG9vbDo6c2NyZWVuUHJvcGVydGllc1N0YXRlQ2hhbmdlZCgpCiAKIHZvaWQg
V2ViUHJvY2Vzc1Bvb2w6Om5ldHdvcmtQcm9jZXNzRGlkVGVybWluYXRlKE5ldHdvcmtQcm9jZXNz
UHJveHkmIG5ldHdvcmtQcm9jZXNzUHJveHksIE5ldHdvcmtQcm9jZXNzUHJveHk6OlRlcm1pbmF0
aW9uUmVhc29uIHJlYXNvbikKIHsKLSAgICBmb3IgKGF1dG8mIHN1cHBsZW1lbnQgOiBtX3N1cHBs
ZW1lbnRzLnZhbHVlcygpKQotICAgICAgICBzdXBwbGVtZW50LT5wcm9jZXNzRGlkQ2xvc2UoJm5l
dHdvcmtQcm9jZXNzUHJveHkpOwotCiAgICAgaWYgKHJlYXNvbiA9PSBOZXR3b3JrUHJvY2Vzc1By
b3h5OjpUZXJtaW5hdGlvblJlYXNvbjo6Q3Jhc2gpCiAgICAgICAgIG1fY2xpZW50Lm5ldHdvcmtQ
cm9jZXNzRGlkQ3Jhc2godGhpcyk7CiAKQEAgLTEwNTcsNyArMTA1NCw3IEBAIHZvaWQgV2ViUHJv
Y2Vzc1Bvb2w6OmRpc2Nvbm5lY3RQcm9jZXNzKFdlYlByb2Nlc3NQcm94eSYgcHJvY2VzcykKICAg
ICBpZiAocHJvY2Vzcy5pc1J1bm5pbmdXb3JrZXJzKCkpCiAgICAgICAgIHJlbW92ZUZyb21SZW1v
dGVXb3JrZXJQcm9jZXNzZXMocHJvY2Vzcyk7CiAKLSAgICBzdGF0aWNfY2FzdDxXZWJDb250ZXh0
U3VwcGxlbWVudCo+KHN1cHBsZW1lbnQ8V2ViR2VvbG9jYXRpb25NYW5hZ2VyUHJveHk+KCkpLT5w
cm9jZXNzRGlkQ2xvc2UoJnByb2Nlc3MpOworICAgIHN1cHBsZW1lbnQ8V2ViR2VvbG9jYXRpb25N
YW5hZ2VyUHJveHk+KCktPndlYlByb2Nlc3NJc0dvaW5nQXdheShwcm9jZXNzKTsKIAogICAgIG1f
cHJvY2Vzc2VzLnJlbW92ZUZpcnN0KHByb2Nlc3MpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9pb3MvV0tHZW9sb2NhdGlvblByb3ZpZGVySU9TLm1tIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvaW9zL1dLR2VvbG9jYXRpb25Qcm92aWRlcklPUy5tbQppbmRleCBmNWU5
ZmQ3YmMzNDEyOTdhZjdiMjRlNjc0MTYzMzJjZDk2YWQ3MzljLi5lNjM4YWQ5YzRlOGI3MzhiZjE2
NTE0ZDcxOWRjMWJlOGE3NmI1OWQ0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9pb3MvV0tHZW9sb2NhdGlvblByb3ZpZGVySU9TLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL2lvcy9XS0dlb2xvY2F0aW9uUHJvdmlkZXJJT1MubW0KQEAgLTUxLDcgKzUxLDYgQEAK
ICNpbXBvcnQgPHd0Zi9VUkwuaD4KIAogLy8gRklYTUU6IFJlbW92ZSB1c2Ugb2YgV2ViS2l0MSBm
cm9tIFdlYktpdDIKLSNpbXBvcnQgPFdlYktpdC9XZWJHZW9sb2NhdGlvbkNvcmVMb2NhdGlvblBy
b3ZpZGVyLmg+CiAjaW1wb3J0IDxXZWJLaXQvV2ViQWxsb3dEZW55UG9saWN5TGlzdGVuZXIuaD4K
IAogQUxMT1dfREVQUkVDQVRFRF9ERUNMQVJBVElPTlNfQkVHSU4KQEAgLTU5LDkgKzU4LDYgQEAg
QUxMT1dfREVQUkVDQVRFRF9ERUNMQVJBVElPTlNfQkVHSU4KIEBpbnRlcmZhY2UgV0tHZW9sb2Nh
dGlvblByb3ZpZGVySU9TIChfV0tHZW9sb2NhdGlvbkNvcmVMb2NhdGlvbkxpc3RlbmVyKSA8X1dL
R2VvbG9jYXRpb25Db3JlTG9jYXRpb25MaXN0ZW5lcj4KIEBlbmQKIAotQGludGVyZmFjZSBXS0xl
Z2FjeUNvcmVMb2NhdGlvblByb3ZpZGVyIDogTlNPYmplY3Q8X1dLR2VvbG9jYXRpb25Db3JlTG9j
YXRpb25Qcm92aWRlciwgV2ViR2VvbG9jYXRpb25Db3JlTG9jYXRpb25VcGRhdGVMaXN0ZW5lcj4K
LUBlbmQKLQogQGludGVyZmFjZSBXS1dlYkFsbG93RGVueVBvbGljeUxpc3RlbmVyIDogTlNPYmpl
Y3Q8V2ViQWxsb3dEZW55UG9saWN5TGlzdGVuZXI+CiAtIChpZClpbml0V2l0aENvbXBsZXRpb25I
YW5kbGVyOihGdW5jdGlvbjx2b2lkKGJvb2wpPiYmKWNvbXBsZXRpb25IYW5kbGVyOwogLSAodm9p
ZClkZW55T25seVRoaXNSZXF1ZXN0IE5PX1JFVFVSTl9EVUVfVE9fQVNTRVJUOwpAQCAtMTQ2LDI1
ICsxNDIsNDIgQEAgLSAoaWQpaW5pdFdpdGhQcm9jZXNzUG9vbDooV2ViS2l0OjpXZWJQcm9jZXNz
UG9vbCYpcHJvY2Vzc1Bvb2wKICAgICBzZWxmID0gW3N1cGVyIGluaXRdOwogICAgIGlmICghc2Vs
ZikKICAgICAgICAgcmV0dXJuIG5pbDsKLSAgICBfZ2VvbG9jYXRpb25NYW5hZ2VyID0gcHJvY2Vz
c1Bvb2wuc3VwcGxlbWVudDxXZWJLaXQ6OldlYkdlb2xvY2F0aW9uTWFuYWdlclByb3h5PigpOwot
ICAgIFdLR2VvbG9jYXRpb25Qcm92aWRlclYxIHByb3ZpZGVyQ2FsbGJhY2sgPSB7Ci0gICAgICAg
IHsgMSwgc2VsZiB9LAotICAgICAgICBzdGFydFVwZGF0aW5nQ2FsbGJhY2ssCi0gICAgICAgIHN0
b3BVcGRhdGluZ0NhbGxiYWNrLAotICAgICAgICBzZXRFbmFibGVIaWdoQWNjdXJhY3kKLSAgICB9
OwotICAgIFdLR2VvbG9jYXRpb25NYW5hZ2VyU2V0UHJvdmlkZXIodG9BUEkoX2dlb2xvY2F0aW9u
TWFuYWdlci5nZXQoKSksICZwcm92aWRlckNhbGxiYWNrLmJhc2UpOwotICAgIF9jb3JlTG9jYXRp
b25Qcm92aWRlciA9IHdyYXBwZXIocHJvY2Vzc1Bvb2wpLl9jb3JlTG9jYXRpb25Qcm92aWRlciA/
OiBhZG9wdE5TKHN0YXRpY19jYXN0PGlkIDxfV0tHZW9sb2NhdGlvbkNvcmVMb2NhdGlvblByb3Zp
ZGVyPj4oW1tXS0xlZ2FjeUNvcmVMb2NhdGlvblByb3ZpZGVyIGFsbG9jXSBpbml0XSkpOwotICAg
IFtfY29yZUxvY2F0aW9uUHJvdmlkZXIgc2V0TGlzdGVuZXI6c2VsZl07CisKKyAgICAvLyBPbiBp
T1MsIFdlYktpdCBub3JtYWxseSBwcm92aWRlcyB0aGUgbG9jYXRpb24uIEhvd2V2ZXIsIGlmIHRo
ZSBjbGllbnQgc2V0cyBhIGNvcmVMb2NhdGlvblByb3ZpZGVyLCB0aGVuIHdlIHVzZSB0aGF0IG9u
ZSBpbnN0ZWFkLgorICAgIC8vIFRoaXMgaXMgdXNlZnVsIGZvciBXZWJLaXRUZXN0UnVubmVyIHRv
IHByb3ZpZGUgYSBkdW1teSBnZW9sb2NhdGlvbiBwcm92aWRlci4gSXQgaXMgYWxzbyB1c2VkIGJ5
IGNlcnRhaW4gYXBwcyB0byBkZW55IGFsbAorICAgIC8vIGdlb2xvY2F0aW9uIGF1dGhvcml6YXRp
b24gYXMgYSB3YXkgdG8gZGlzYWJsZSBzdXBwb3J0IGZvciBnZW9sb2NhdGlvbi4KKyAgICBpZiAo
d3JhcHBlcihwcm9jZXNzUG9vbCkuX2NvcmVMb2NhdGlvblByb3ZpZGVyKSB7CisgICAgICAgIF9n
ZW9sb2NhdGlvbk1hbmFnZXIgPSBwcm9jZXNzUG9vbC5zdXBwbGVtZW50PFdlYktpdDo6V2ViR2Vv
bG9jYXRpb25NYW5hZ2VyUHJveHk+KCk7CisgICAgICAgIFdLR2VvbG9jYXRpb25Qcm92aWRlclYx
IHByb3ZpZGVyQ2FsbGJhY2sgPSB7CisgICAgICAgICAgICB7IDEsIHNlbGYgfSwKKyAgICAgICAg
ICAgIHN0YXJ0VXBkYXRpbmdDYWxsYmFjaywKKyAgICAgICAgICAgIHN0b3BVcGRhdGluZ0NhbGxi
YWNrLAorICAgICAgICAgICAgc2V0RW5hYmxlSGlnaEFjY3VyYWN5CisgICAgICAgIH07CisgICAg
ICAgIFdLR2VvbG9jYXRpb25NYW5hZ2VyU2V0UHJvdmlkZXIodG9BUEkoX2dlb2xvY2F0aW9uTWFu
YWdlci5nZXQoKSksICZwcm92aWRlckNhbGxiYWNrLmJhc2UpOworICAgICAgICBfY29yZUxvY2F0
aW9uUHJvdmlkZXIgPSB3cmFwcGVyKHByb2Nlc3NQb29sKS5fY29yZUxvY2F0aW9uUHJvdmlkZXI7
CisgICAgICAgIFtfY29yZUxvY2F0aW9uUHJvdmlkZXIgc2V0TGlzdGVuZXI6c2VsZl07CisgICAg
fQogICAgIHJldHVybiBzZWxmOwogfQogCiAtICh2b2lkKWRlY2lkZVBvbGljeUZvckdlb2xvY2F0
aW9uUmVxdWVzdEZyb21PcmlnaW46KFdlYktpdDo6RnJhbWVJbmZvRGF0YSYmKWZyYW1lSW5mbyBj
b21wbGV0aW9uSGFuZGxlcjooRnVuY3Rpb248dm9pZChib29sKT4mJiljb21wbGV0aW9uSGFuZGxl
ciB2aWV3OihXS1dlYlZpZXcgKiljb250ZW50VmlldwogewotICAgIC8vIFN0ZXAgMTogYXNrIHRo
ZSB1c2VyIGlmIHRoZSBhcHAgY2FuIHVzZSBHZW9sb2NhdGlvbi4KKyAgICBXZWJDb3JlOjpSZWdp
c3RyYWJsZURvbWFpbiByZWdpc3RyYWJsZURvbWFpbihmcmFtZUluZm8uc2VjdXJpdHlPcmlnaW4p
OwogICAgIEdlb2xvY2F0aW9uUmVxdWVzdERhdGEgZ2VvbG9jYXRpb25SZXF1ZXN0RGF0YSB7IFtj
b250ZW50VmlldyBVUkxdLCBXVEZNb3ZlKGZyYW1lSW5mbyksIFdURk1vdmUoY29tcGxldGlvbkhh
bmRsZXIpLCBjb250ZW50VmlldyB9OwogICAgIF9yZXF1ZXN0c1dhaXRpbmdGb3JDb3JlTG9jYXRp
b25BdXRob3JpemF0aW9uLmFwcGVuZChXVEZNb3ZlKGdlb2xvY2F0aW9uUmVxdWVzdERhdGEpKTsK
LSAgICBbX2NvcmVMb2NhdGlvblByb3ZpZGVyIHJlcXVlc3RHZW9sb2NhdGlvbkF1dGhvcml6YXRp
b25dOworICAgIGlmIChfY29yZUxvY2F0aW9uUHJvdmlkZXIpIHsKKyAgICAgICAgLy8gU3RlcCAx
OiBhc2sgdGhlIHVzZXIgaWYgdGhlIGFwcCBjYW4gdXNlIEdlb2xvY2F0aW9uLgorICAgICAgICBb
X2NvcmVMb2NhdGlvblByb3ZpZGVyIHJlcXVlc3RHZW9sb2NhdGlvbkF1dGhvcml6YXRpb25dOwor
ICAgIH0gZWxzZSB7CisgICAgICAgIC8vIFN0ZXAgMTogYXNrIENvcmVMb2NhdGlvbiBpZiB0aGUg
YXBwIGNhbiB1c2UgR2VvbG9jYXRpb24uCisgICAgICAgIFdlYkNvcmU6OkNvcmVMb2NhdGlvbkdl
b2xvY2F0aW9uUHJvdmlkZXI6OnJlcXVlc3RBdXRob3JpemF0aW9uKHJlZ2lzdHJhYmxlRG9tYWlu
LCBbc2VsZiwgc3Ryb25nU2VsZiA9IHJldGFpblB0cihzZWxmKV0oYm9vbCBhdXRob3JpemVkKSB7
CisgICAgICAgICAgICBpZiAoYXV0aG9yaXplZCkKKyAgICAgICAgICAgICAgICBbc2VsZiBnZW9s
b2NhdGlvbkF1dGhvcml6YXRpb25HcmFudGVkXTsKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAg
ICAgICAgICBbc2VsZiBnZW9sb2NhdGlvbkF1dGhvcml6YXRpb25EZW5pZWRdOworICAgICAgICB9
KTsKKyAgICB9CiB9CiBAZW5kCiAKQEAgLTE3NCw3ICsxODcsNyBAQCBAaW1wbGVtZW50YXRpb24g
V0tHZW9sb2NhdGlvblByb3ZpZGVySU9TIChXZWJHZW9sb2NhdGlvbkNvcmVMb2NhdGlvblVwZGF0
ZUxpc3RlbgogCiAtICh2b2lkKWdlb2xvY2F0aW9uQXV0aG9yaXphdGlvbkdyYW50ZWQKIHsKLSAg
ICAvLyBTdGVwIDI6IGFzayB0aGUgdXNlciBpZiB0aGlzIHBhcnRpY3VsYXIgcGFnZSBjYW4gdXNl
IGdlbG9jYXRpb24uCisgICAgLy8gU3RlcCAyOiBhc2sgdGhlIHVzZXIgaWYgdGhpcyBwYXJ0aWN1
bGFyIHBhZ2UgY2FuIHVzZSBnZW9sb2NhdGlvbi4KICAgICBpZiAoX3JlcXVlc3RzV2FpdGluZ0Zv
ckNvcmVMb2NhdGlvbkF1dGhvcml6YXRpb24uaXNFbXB0eSgpKQogICAgICAgICByZXR1cm47CiAK
QEAgLTIyNiw4MSArMjM5LDYgQEAgLSAodm9pZClyZXNldEdlb2xvY2F0aW9uCiAKIEBlbmQKIAot
IyBwcmFnbWEgbWFyayAtIEltcGxlbWVudGF0aW9uIG9mIFdLTGVnYWN5Q29yZUxvY2F0aW9uUHJv
dmlkZXIKLQotQGltcGxlbWVudGF0aW9uIFdLTGVnYWN5Q29yZUxvY2F0aW9uUHJvdmlkZXIgewot
ICAgIGlkIDxfV0tHZW9sb2NhdGlvbkNvcmVMb2NhdGlvbkxpc3RlbmVyPiBfbGlzdGVuZXI7Ci0g
ICAgUmV0YWluUHRyPFdlYkdlb2xvY2F0aW9uQ29yZUxvY2F0aW9uUHJvdmlkZXI+IF9wcm92aWRl
cjsKLX0KLQotLy8gPF9XS0dlb2xvY2F0aW9uQ29yZUxvY2F0aW9uUHJvdmlkZXI+IE1ldGhvZHMK
LQotLSAodm9pZClzZXRMaXN0ZW5lcjooaWQ8X1dLR2VvbG9jYXRpb25Db3JlTG9jYXRpb25MaXN0
ZW5lcj4pbGlzdGVuZXIKLXsKLSAgICBBU1NFUlQobGlzdGVuZXIgJiYgIV9saXN0ZW5lciAmJiAh
X3Byb3ZpZGVyKTsKLSAgICBfbGlzdGVuZXIgPSBsaXN0ZW5lcjsKLSAgICBfcHJvdmlkZXIgPSBh
ZG9wdE5TKFtbV2ViR2VvbG9jYXRpb25Db3JlTG9jYXRpb25Qcm92aWRlciBhbGxvY10gaW5pdFdp
dGhMaXN0ZW5lcjpzZWxmXSk7Ci19Ci0KLS0gKHZvaWQpcmVxdWVzdEdlb2xvY2F0aW9uQXV0aG9y
aXphdGlvbgotewotICAgIEFTU0VSVChfcHJvdmlkZXIpOwotICAgIFtfcHJvdmlkZXIgcmVxdWVz
dEdlb2xvY2F0aW9uQXV0aG9yaXphdGlvbl07Ci19Ci0KLS0gKHZvaWQpc3RhcnQKLXsKLSAgICBB
U1NFUlQoX3Byb3ZpZGVyKTsKLSAgICBbX3Byb3ZpZGVyIHN0YXJ0XTsKLX0KLQotLSAodm9pZClz
dG9wCi17Ci0gICAgQVNTRVJUKF9wcm92aWRlcik7Ci0gICAgW19wcm92aWRlciBzdG9wXTsKLX0K
LQotLSAodm9pZClzZXRFbmFibGVIaWdoQWNjdXJhY3k6KEJPT0wpZmxhZwotewotICAgIEFTU0VS
VChfcHJvdmlkZXIpOwotICAgIFtfcHJvdmlkZXIgc2V0RW5hYmxlSGlnaEFjY3VyYWN5OmZsYWdd
OwotfQotCi0vLyA8V2ViR2VvbG9jYXRpb25Db3JlTG9jYXRpb25VcGRhdGVMaXN0ZW5lcj4gTWV0
aG9kcwotCi0tICh2b2lkKWdlb2xvY2F0aW9uQXV0aG9yaXphdGlvbkdyYW50ZWQKLXsKLSAgICBB
U1NFUlQoX2xpc3RlbmVyKTsKLSAgICBbX2xpc3RlbmVyIGdlb2xvY2F0aW9uQXV0aG9yaXphdGlv
bkdyYW50ZWRdOwotfQotCi0tICh2b2lkKWdlb2xvY2F0aW9uQXV0aG9yaXphdGlvbkRlbmllZAot
ewotICAgIEFTU0VSVChfbGlzdGVuZXIpOwotICAgIFtfbGlzdGVuZXIgZ2VvbG9jYXRpb25BdXRo
b3JpemF0aW9uRGVuaWVkXTsKLX0KLQotLSAodm9pZClwb3NpdGlvbkNoYW5nZWQ6KFdlYkNvcmU6
Okdlb2xvY2F0aW9uUG9zaXRpb25EYXRhJiYpY29yZVBvc2l0aW9uCi17Ci0gICAgQVNTRVJUKF9s
aXN0ZW5lcik7Ci0gICAgYXV0byBwb3NpdGlvbiA9IFdlYktpdDo6V2ViR2VvbG9jYXRpb25Qb3Np
dGlvbjo6Y3JlYXRlKFdURk1vdmUoY29yZVBvc2l0aW9uKSk7Ci0gICAgW19saXN0ZW5lciBwb3Np
dGlvbkNoYW5nZWQ6d3JhcHBlcihwb3NpdGlvbi5nZXQoKSldOwotfQotCi0tICh2b2lkKWVycm9y
T2NjdXJyZWQ6KE5TU3RyaW5nICopZXJyb3JNZXNzYWdlCi17Ci0gICAgQVNTRVJUKF9saXN0ZW5l
cik7Ci0gICAgW19saXN0ZW5lciBlcnJvck9jY3VycmVkOmVycm9yTWVzc2FnZV07Ci19Ci0KLS0g
KHZvaWQpcmVzZXRHZW9sb2NhdGlvbgotewotICAgIEFTU0VSVChfbGlzdGVuZXIpOwotICAgIFtf
bGlzdGVuZXIgcmVzZXRHZW9sb2NhdGlvbl07Ci19Ci0KLUBlbmQKLQogIyBwcmFnbWEgbWFyayAt
IEltcGxlbWVudGF0aW9uIG9mIFdLV2ViQWxsb3dEZW55UG9saWN5TGlzdGVuZXIKIEBpbXBsZW1l
bnRhdGlvbiBXS1dlYkFsbG93RGVueVBvbGljeUxpc3RlbmVyIHsKICAgICBGdW5jdGlvbjx2b2lk
KGJvb2wpPiBfY29tcGxldGlvbkhhbmRsZXI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dl
YktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dlYktpdC9XZWJLaXQueGNv
ZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCAxZWM4YjJiODVjZTFlNTY0MzdmMmVmZDFjNDRj
MDY5MTYwNjkxOTMwLi5jYzI5NjA5N2E4NzYzOGZhNmVmM2U4NjBiNzgzMmVhZjhlYjllZGJhIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9q
CisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAg
LTQzMTksNiArNDMxOSw3IEBACiAJCTQ2Q0UzQjEwMjNEOEM4M0QwMDE2QTk2QSAvKiBXZWJCYWNr
Rm9yd2FyZExpc3RDb3VudHMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2Vi
QmFja0ZvcndhcmRMaXN0Q291bnRzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQ2
RDQ4RkNDMjc5OUQ3REQwMDdEMjAxNCAvKiBXZWJTaGFyZWRXb3JrZXJTZXJ2ZXJUb0NvbnRleHRD
b25uZWN0aW9uLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdlYlNoYXJlZFdvcmtlclNlcnZlclRv
Q29udGV4dENvbm5lY3Rpb24uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0NkQ0
OEZDRDI3OTlEN0RFMDA3RDIwMTQgLyogV2ViU2hhcmVkV29ya2VyU2VydmVyVG9Db250ZXh0Q29u
bmVjdGlvbi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJTaGFyZWRXb3JrZXJTZXJ2ZXJUb0NvbnRleHRD
b25uZWN0aW9uLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTQ2REEyODU3MjdCNzNF
NzYwMDg5RDMzOSAvKiBXZWJHZW9sb2NhdGlvbk1hbmFnZXJQcm94eUNvY29hLmNwcCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
LmNwcDsgcGF0aCA9IFdlYkdlb2xvY2F0aW9uTWFuYWdlclByb3h5Q29jb2EuY3BwOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQk0NkRGMDYzOTFGMzkwNUU1MDAxOTgwQkIgLyogTmV0d29y
a0NPUlNQcmVmbGlnaHRDaGVja2VyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsg
cGF0aCA9IE5ldHdvcmtDT1JTUHJlZmxpZ2h0Q2hlY2tlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCTQ2REYwNjNBMUYzOTA1RTUwMDE5ODBCQiAvKiBOZXR3b3JrQ09SU1ByZWZs
aWdodENoZWNrZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTmV0d29ya0NP
UlNQcmVmbGlnaHRDaGVja2VyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQ2RTk3
NjBBMjc1N0Y2QzkwMEFDREQzNyAvKiBXZWJCcm9hZGNhc3RDaGFubmVsUmVnaXN0cnkubWVzc2Fn
ZXMuaW4gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gV2ViQnJvYWRjYXN0Q2hhbm5lbFJlZ2lzdHJ5
Lm1lc3NhZ2VzLmluOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtNzYxMSw2ICs3NjEy
LDcgQEAKIAkJCQk1MkQ1QTFBQTFDNTc0OTRFMDBERTM0QTMgLyogVmlkZW9GdWxsc2NyZWVuTWFu
YWdlclByb3h5LmggKi8sCiAJCQkJNTJENUExQUIxQzU3NDk0RTAwREUzNEEzIC8qIFZpZGVvRnVs
bHNjcmVlbk1hbmFnZXJQcm94eS5tZXNzYWdlcy5pbiAqLywKIAkJCQk1MkQ1QTFBQzFDNTc0OTRF
MDBERTM0QTMgLyogVmlkZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5Lm1tICovLAorCQkJCTQ2REEy
ODU3MjdCNzNFNzYwMDg5RDMzOSAvKiBXZWJHZW9sb2NhdGlvbk1hbmFnZXJQcm94eUNvY29hLmNw
cCAqLywKIAkJCQlDMThGM0ExMzI1NjMzMkE2MDA3OTdFNjYgLyogV2ViSW5zcGVjdG9yUHJlZmVy
ZW5jZU9ic2VydmVyLmggKi8sCiAJCQkJQzE4RjNBMTQyNTYzMzM0MzAwNzk3RTY2IC8qIFdlYklu
c3BlY3RvclByZWZlcmVuY2VPYnNlcnZlci5tbSAqLywKIAkJCQlDREYxQjkxOTI2NzAyMUQ2MDAw
N0VDMTAgLyogV2ViS2l0U3dpZnRTb2Z0TGluay5oICovLApAQCAtMTM0ODYsNiArMTM0ODgsNyBA
QAogCQkJCUUxOEU2OTE4MTY5QjY2N0IwMDlCNjY3MCAvKiBTZWNJdGVtU2hpbVByb3h5TWVzc2Fn
ZXMuaCBpbiBIZWFkZXJzICovLAogCQkJCTU3MEFCOEYzMjBBRTNCRDcwMEI4QkU4NyAvKiBTZWNL
ZXlQcm94eVN0b3JlLmggaW4gSGVhZGVycyAqLywKIAkJCQk1MTREOUY1NzE5MTE5RDM1MDAwMDYz
QTcgLyogU2VydmljZXNDb250cm9sbGVyLmggaW4gSGVhZGVycyAqLywKKwkJCQk1MTY0NjU4MDI3
QTlDNzc0MDBFMUYyQkEgLyogU2VydmljZVdvcmtlck5vdGlmaWNhdGlvbkhhbmRsZXIuaCBpbiBI
ZWFkZXJzICovLAogCQkJCTFBRkRFNjVBMTk1NEE0MkIwMEM0OEZGQSAvKiBTZXNzaW9uU3RhdGUu
aCBpbiBIZWFkZXJzICovLAogCQkJCTFBMDAyRDQ5MTk2QjM0NUQwMEI5QUQ0NCAvKiBTZXNzaW9u
U3RhdGVDb2RpbmcuaCBpbiBIZWFkZXJzICovLAogCQkJCTkzRTc5OUNFMjc2MDQ5N0IwMDc0MDA4
QSAvKiBTZXNzaW9uU3RvcmFnZU1hbmFnZXIuaCBpbiBIZWFkZXJzICovLApAQCAtMTM5MzQsNyAr
MTM5MzcsNiBAQAogCQkJCUJDNEE2Mjk3MTQ3MzEzQTAwMDZDNjgxQSAvKiBXS0Nvbm5lY3Rpb25S
ZWYuaCBpbiBIZWFkZXJzICovLAogCQkJCUU1OTZERDZBMjUxRTcxRDQwMEMyNzVBNyAvKiBXS0Nv
bnRhY3RQaWNrZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTVDRDI4NjU0MUU3MjM1QjEwMDk0RkRD
OCAvKiBXS0NvbnRlbnRSdWxlTGlzdC5oIGluIEhlYWRlcnMgKi8sCi0JCQkJNTE2NDY1ODAyN0E5
Qzc3NDAwRTFGMkJBIC8qIFNlcnZpY2VXb3JrZXJOb3RpZmljYXRpb25IYW5kbGVyLmggaW4gSGVh
ZGVycyAqLywKIAkJCQk1Q0QyODY1NTFFNzIzNUI4MDA5NEZEQzggLyogV0tDb250ZW50UnVsZUxp
c3RJbnRlcm5hbC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNUM1MTM5REIyNTkyN0Q4MDAwOUMzRTMw
IC8qIFdLQ29udGVudFJ1bGVMaXN0UHJpdmF0ZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNUNEMjg2
NTExRTcyMzU5OTAwOTRGREM4IC8qIFdLQ29udGVudFJ1bGVMaXN0U3RvcmUuaCBpbiBIZWFkZXJz
ICovLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dlb2xvY2F0aW9uL1dl
Ykdlb2xvY2F0aW9uTWFuYWdlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR2VvbG9j
YXRpb24vV2ViR2VvbG9jYXRpb25NYW5hZ2VyLmNwcAppbmRleCA1YTljOWY0ZDJhMWNkNjZhNGI2
NzU5YjU5Mzg3ZWEyY2Y1NWIyYWE4Li5mOWQ4NzVjMTQ5NDRhYjAzM2U4N2E5ZmUyNjk1ZDE1ZjU0
ZjdmY2M3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR2VvbG9jYXRpb24v
V2ViR2VvbG9jYXRpb25NYW5hZ2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
R2VvbG9jYXRpb24vV2ViR2VvbG9jYXRpb25NYW5hZ2VyLmNwcApAQCAtMzksNiArMzksMTQgQEAK
IG5hbWVzcGFjZSBXZWJLaXQgewogdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKK3N0YXRpYyBS
ZWdpc3RyYWJsZURvbWFpbiByZWdpc3RyYWJsZURvbWFpbkZvclBhZ2UoV2ViUGFnZSYgcGFnZSkK
K3sKKyAgICBhdXRvKiBkb2N1bWVudCA9IHBhZ2UuY29yZVBhZ2UoKSA/IHBhZ2UuY29yZVBhZ2Uo
KS0+bWFpbkZyYW1lKCkuZG9jdW1lbnQoKSA6IG51bGxwdHI7CisgICAgaWYgKCFkb2N1bWVudCkK
KyAgICAgICAgcmV0dXJuIHsgfTsKKyAgICByZXR1cm4gUmVnaXN0cmFibGVEb21haW4geyBkb2N1
bWVudC0+dXJsKCkgfTsKK30KKwogY29uc3QgY2hhciogV2ViR2VvbG9jYXRpb25NYW5hZ2VyOjpz
dXBwbGVtZW50TmFtZSgpCiB7CiAgICAgcmV0dXJuICJXZWJHZW9sb2NhdGlvbk1hbmFnZXIiOwpA
QCAtNTAsODggKzU4LDE0MCBAQCBXZWJHZW9sb2NhdGlvbk1hbmFnZXI6OldlYkdlb2xvY2F0aW9u
TWFuYWdlcihXZWJQcm9jZXNzJiBwcm9jZXNzKQogICAgIG1fcHJvY2Vzcy5hZGRNZXNzYWdlUmVj
ZWl2ZXIoTWVzc2FnZXM6OldlYkdlb2xvY2F0aW9uTWFuYWdlcjo6bWVzc2FnZVJlY2VpdmVyTmFt
ZSgpLCAqdGhpcyk7CiB9CiAKLXZvaWQgV2ViR2VvbG9jYXRpb25NYW5hZ2VyOjpyZWdpc3Rlcldl
YlBhZ2UoV2ViUGFnZSYgcGFnZSwgY29uc3QgU3RyaW5nJiBhdXRob3JpemF0aW9uVG9rZW4pCi17
Ci0gICAgYm9vbCB3YXNVcGRhdGluZyA9IGlzVXBkYXRpbmcoKTsKK1dlYkdlb2xvY2F0aW9uTWFu
YWdlcjo6fldlYkdlb2xvY2F0aW9uTWFuYWdlcigpID0gZGVmYXVsdDsKIAotICAgIG1fcGFnZVNl
dC5hZGQocGFnZSk7Cit2b2lkIFdlYkdlb2xvY2F0aW9uTWFuYWdlcjo6cmVnaXN0ZXJXZWJQYWdl
KFdlYlBhZ2UmIHBhZ2UsIGNvbnN0IFN0cmluZyYgYXV0aG9yaXphdGlvblRva2VuLCBib29sIG5l
ZWRzSGlnaEFjY3VyYWN5KQoreworICAgIGF1dG8gcmVnaXN0cmFibGVEb21haW4gPSByZWdpc3Ry
YWJsZURvbWFpbkZvclBhZ2UocGFnZSk7CisgICAgaWYgKHJlZ2lzdHJhYmxlRG9tYWluLnN0cmlu
ZygpLmlzRW1wdHkoKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgYXV0byYgcGFnZVNldHMgPSBt
X3BhZ2VTZXRzLmFkZChyZWdpc3RyYWJsZURvbWFpbiwgUGFnZVNldHMoKSkuaXRlcmF0b3ItPnZh
bHVlOworICAgIGJvb2wgd2FzVXBkYXRpbmcgPSBpc1VwZGF0aW5nKHBhZ2VTZXRzKTsKKyAgICBi
b29sIGhpZ2hBY2N1cmFjeVdhc0VuYWJsZWQgPSBpc0hpZ2hBY2N1cmFjeUVuYWJsZWQocGFnZVNl
dHMpOworCisgICAgcGFnZVNldHMucGFnZVNldC5hZGQocGFnZSk7CisgICAgaWYgKG5lZWRzSGln
aEFjY3VyYWN5KQorICAgICAgICBwYWdlU2V0cy5oaWdoQWNjdXJhY3lQYWdlU2V0LmFkZChwYWdl
KTsKKyAgICBtX3BhZ2VUb1JlZ2lzdHJhYmxlRG9tYWluLmFkZCgmcGFnZSwgcmVnaXN0cmFibGVE
b21haW4pOworCisgICAgaWYgKCF3YXNVcGRhdGluZykgeworICAgICAgICBtX3Byb2Nlc3MucGFy
ZW50UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+c2VuZChNZXNzYWdlczo6V2ViR2VvbG9jYXRpb25NYW5h
Z2VyUHJveHk6OlN0YXJ0VXBkYXRpbmcocmVnaXN0cmFibGVEb21haW4sIHBhZ2Uud2ViUGFnZVBy
b3h5SWRlbnRpZmllcigpLCBhdXRob3JpemF0aW9uVG9rZW4sIG5lZWRzSGlnaEFjY3VyYWN5KSwg
MCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CiAKLSAgICBpZiAoIXdhc1VwZGF0aW5nKQotICAg
ICAgICBtX3Byb2Nlc3MucGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+c2VuZChNZXNzYWdlczo6
V2ViR2VvbG9jYXRpb25NYW5hZ2VyUHJveHk6OlN0YXJ0VXBkYXRpbmcocGFnZS53ZWJQYWdlUHJv
eHlJZGVudGlmaWVyKCksIGF1dGhvcml6YXRpb25Ub2tlbiksIDApOworICAgIGJvb2wgaGlnaEFj
Y3VyYWN5U2hvdWxkQmVFbmFibGVkID0gaXNIaWdoQWNjdXJhY3lFbmFibGVkKHBhZ2VTZXRzKTsK
KyAgICBpZiAoaGlnaEFjY3VyYWN5V2FzRW5hYmxlZCAhPSBoaWdoQWNjdXJhY3lTaG91bGRCZUVu
YWJsZWQpCisgICAgICAgIG1fcHJvY2Vzcy5wYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpLT5zZW5k
KE1lc3NhZ2VzOjpXZWJHZW9sb2NhdGlvbk1hbmFnZXJQcm94eTo6U2V0RW5hYmxlSGlnaEFjY3Vy
YWN5KHJlZ2lzdHJhYmxlRG9tYWluLCBoaWdoQWNjdXJhY3lTaG91bGRCZUVuYWJsZWQpLCAwKTsK
IH0KIAogdm9pZCBXZWJHZW9sb2NhdGlvbk1hbmFnZXI6OnVucmVnaXN0ZXJXZWJQYWdlKFdlYlBh
Z2UmIHBhZ2UpCiB7Ci0gICAgYm9vbCBoaWdoQWNjdXJhY3lXYXNFbmFibGVkID0gaXNIaWdoQWNj
dXJhY3lFbmFibGVkKCk7CisgICAgYXV0byByZWdpc3RyYWJsZURvbWFpbiA9IG1fcGFnZVRvUmVn
aXN0cmFibGVEb21haW4udGFrZSgmcGFnZSk7CisgICAgaWYgKHJlZ2lzdHJhYmxlRG9tYWluLnN0
cmluZygpLmlzRW1wdHkoKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgYXV0byBpdCA9IG1fcGFn
ZVNldHMuZmluZChyZWdpc3RyYWJsZURvbWFpbik7CisgICAgaWYgKGl0ID09IG1fcGFnZVNldHMu
ZW5kKCkpCisgICAgICAgIHJldHVybjsKIAotICAgIG1fcGFnZVNldC5yZW1vdmUocGFnZSk7Ci0g
ICAgbV9oaWdoQWNjdXJhY3lQYWdlU2V0LnJlbW92ZShwYWdlKTsKKyAgICBhdXRvJiBwYWdlU2V0
cyA9IGl0LT52YWx1ZTsKKyAgICBib29sIGhpZ2hBY2N1cmFjeVdhc0VuYWJsZWQgPSBpc0hpZ2hB
Y2N1cmFjeUVuYWJsZWQocGFnZVNldHMpOwogCi0gICAgaWYgKCFpc1VwZGF0aW5nKCkpCi0gICAg
ICAgIG1fcHJvY2Vzcy5wYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpLT5zZW5kKE1lc3NhZ2VzOjpX
ZWJHZW9sb2NhdGlvbk1hbmFnZXJQcm94eTo6U3RvcFVwZGF0aW5nKCksIDApOworICAgIHBhZ2VT
ZXRzLnBhZ2VTZXQucmVtb3ZlKHBhZ2UpOworICAgIHBhZ2VTZXRzLmhpZ2hBY2N1cmFjeVBhZ2VT
ZXQucmVtb3ZlKHBhZ2UpOworCisgICAgaWYgKCFpc1VwZGF0aW5nKHBhZ2VTZXRzKSkKKyAgICAg
ICAgbV9wcm9jZXNzLnBhcmVudFByb2Nlc3NDb25uZWN0aW9uKCktPnNlbmQoTWVzc2FnZXM6Oldl
Ykdlb2xvY2F0aW9uTWFuYWdlclByb3h5OjpTdG9wVXBkYXRpbmcocmVnaXN0cmFibGVEb21haW4p
LCAwKTsKICAgICBlbHNlIHsKLSAgICAgICAgYm9vbCBoaWdoQWNjdXJhY3lTaG91bGRCZUVuYWJs
ZWQgPSBpc0hpZ2hBY2N1cmFjeUVuYWJsZWQoKTsKKyAgICAgICAgYm9vbCBoaWdoQWNjdXJhY3lT
aG91bGRCZUVuYWJsZWQgPSBpc0hpZ2hBY2N1cmFjeUVuYWJsZWQocGFnZVNldHMpOwogICAgICAg
ICBpZiAoaGlnaEFjY3VyYWN5V2FzRW5hYmxlZCAhPSBoaWdoQWNjdXJhY3lTaG91bGRCZUVuYWJs
ZWQpCi0gICAgICAgICAgICBtX3Byb2Nlc3MucGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+c2Vu
ZChNZXNzYWdlczo6V2ViR2VvbG9jYXRpb25NYW5hZ2VyUHJveHk6OlNldEVuYWJsZUhpZ2hBY2N1
cmFjeShoaWdoQWNjdXJhY3lTaG91bGRCZUVuYWJsZWQpLCAwKTsKKyAgICAgICAgICAgIG1fcHJv
Y2Vzcy5wYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpLT5zZW5kKE1lc3NhZ2VzOjpXZWJHZW9sb2Nh
dGlvbk1hbmFnZXJQcm94eTo6U2V0RW5hYmxlSGlnaEFjY3VyYWN5KHJlZ2lzdHJhYmxlRG9tYWlu
LCBoaWdoQWNjdXJhY3lTaG91bGRCZUVuYWJsZWQpLCAwKTsKICAgICB9CisKKyAgICBpZiAocGFn
ZVNldHMucGFnZVNldC5jb21wdXRlc0VtcHR5KCkgJiYgcGFnZVNldHMuaGlnaEFjY3VyYWN5UGFn
ZVNldC5jb21wdXRlc0VtcHR5KCkpCisgICAgICAgIG1fcGFnZVNldHMucmVtb3ZlKGl0KTsKIH0K
IAogdm9pZCBXZWJHZW9sb2NhdGlvbk1hbmFnZXI6OnNldEVuYWJsZUhpZ2hBY2N1cmFjeUZvclBh
Z2UoV2ViUGFnZSYgcGFnZSwgYm9vbCBlbmFibGVkKQogewotICAgIGJvb2wgaGlnaEFjY3VyYWN5
V2FzRW5hYmxlZCA9IGlzSGlnaEFjY3VyYWN5RW5hYmxlZCgpOworICAgIGF1dG8gcmVnaXN0cmFi
bGVEb21haW4gPSBtX3BhZ2VUb1JlZ2lzdHJhYmxlRG9tYWluLmdldCgmcGFnZSk7CisgICAgaWYg
KHJlZ2lzdHJhYmxlRG9tYWluLnN0cmluZygpLmlzRW1wdHkoKSkKKyAgICAgICAgcmV0dXJuOwor
CisgICAgYXV0byBpdCA9IG1fcGFnZVNldHMuZmluZChyZWdpc3RyYWJsZURvbWFpbik7CisgICAg
QVNTRVJUKGl0ICE9IG1fcGFnZVNldHMuZW5kKCkpOworICAgIGlmIChpdCA9PSBtX3BhZ2VTZXRz
LmVuZCgpKQorICAgICAgICByZXR1cm47CisKKyAgICBhdXRvJiBwYWdlU2V0cyA9IGl0LT52YWx1
ZTsKKyAgICBib29sIGhpZ2hBY2N1cmFjeVdhc0VuYWJsZWQgPSBpc0hpZ2hBY2N1cmFjeUVuYWJs
ZWQocGFnZVNldHMpOwogCiAgICAgaWYgKGVuYWJsZWQpCi0gICAgICAgIG1faGlnaEFjY3VyYWN5
UGFnZVNldC5hZGQocGFnZSk7CisgICAgICAgIHBhZ2VTZXRzLmhpZ2hBY2N1cmFjeVBhZ2VTZXQu
YWRkKHBhZ2UpOwogICAgIGVsc2UKLSAgICAgICAgbV9oaWdoQWNjdXJhY3lQYWdlU2V0LnJlbW92
ZShwYWdlKTsKKyAgICAgICAgcGFnZVNldHMuaGlnaEFjY3VyYWN5UGFnZVNldC5yZW1vdmUocGFn
ZSk7CiAKLSAgICBib29sIGhpZ2hBY2N1cmFjeVNob3VsZEJlRW5hYmxlZCA9IGlzSGlnaEFjY3Vy
YWN5RW5hYmxlZCgpOwotICAgIGlmIChoaWdoQWNjdXJhY3lXYXNFbmFibGVkICE9IGhpZ2hBY2N1
cmFjeVNob3VsZEJlRW5hYmxlZCkKLSAgICAgICAgbV9wcm9jZXNzLnBhcmVudFByb2Nlc3NDb25u
ZWN0aW9uKCktPnNlbmQoTWVzc2FnZXM6OldlYkdlb2xvY2F0aW9uTWFuYWdlclByb3h5OjpTZXRF
bmFibGVIaWdoQWNjdXJhY3koaGlnaEFjY3VyYWN5U2hvdWxkQmVFbmFibGVkKSwgMCk7CisgICAg
Ym9vbCBoaWdoQWNjdXJhY3lTaG91bGRCZUVuYWJsZWQgPSBpc0hpZ2hBY2N1cmFjeUVuYWJsZWQo
cGFnZVNldHMpOworICAgIGlmIChoaWdoQWNjdXJhY3lXYXNFbmFibGVkICE9IGlzSGlnaEFjY3Vy
YWN5RW5hYmxlZChwYWdlU2V0cykpCisgICAgICAgIG1fcHJvY2Vzcy5wYXJlbnRQcm9jZXNzQ29u
bmVjdGlvbigpLT5zZW5kKE1lc3NhZ2VzOjpXZWJHZW9sb2NhdGlvbk1hbmFnZXJQcm94eTo6U2V0
RW5hYmxlSGlnaEFjY3VyYWN5KHJlZ2lzdHJhYmxlRG9tYWluLCBoaWdoQWNjdXJhY3lTaG91bGRC
ZUVuYWJsZWQpLCAwKTsKIH0KIAotdm9pZCBXZWJHZW9sb2NhdGlvbk1hbmFnZXI6OmRpZENoYW5n
ZVBvc2l0aW9uKGNvbnN0IEdlb2xvY2F0aW9uUG9zaXRpb25EYXRhJiBwb3NpdGlvbikKK3ZvaWQg
V2ViR2VvbG9jYXRpb25NYW5hZ2VyOjpkaWRDaGFuZ2VQb3NpdGlvbihjb25zdCBXZWJDb3JlOjpS
ZWdpc3RyYWJsZURvbWFpbiYgcmVnaXN0cmFibGVEb21haW4sIGNvbnN0IEdlb2xvY2F0aW9uUG9z
aXRpb25EYXRhJiBwb3NpdGlvbikKIHsKICNpZiBFTkFCTEUoR0VPTE9DQVRJT04pCi0gICAgZm9y
IChhdXRvJiBwYWdlIDogY29weVRvVmVjdG9yKG1fcGFnZVNldCkpIHsKLSAgICAgICAgaWYgKHBh
Z2UtPmNvcmVQYWdlKCkpCi0gICAgICAgICAgICBHZW9sb2NhdGlvbkNvbnRyb2xsZXI6OmZyb20o
cGFnZS0+Y29yZVBhZ2UoKSktPnBvc2l0aW9uQ2hhbmdlZChwb3NpdGlvbik7CisgICAgaWYgKGF1
dG8gaXQgPSBtX3BhZ2VTZXRzLmZpbmQocmVnaXN0cmFibGVEb21haW4pOyBpdCAhPSBtX3BhZ2VT
ZXRzLmVuZCgpKSB7CisgICAgICAgIGZvciAoYXV0byYgcGFnZSA6IGNvcHlUb1ZlY3RvcihpdC0+
dmFsdWUucGFnZVNldCkpIHsKKyAgICAgICAgICAgIGlmIChwYWdlLT5jb3JlUGFnZSgpKQorICAg
ICAgICAgICAgICAgIEdlb2xvY2F0aW9uQ29udHJvbGxlcjo6ZnJvbShwYWdlLT5jb3JlUGFnZSgp
KS0+cG9zaXRpb25DaGFuZ2VkKHBvc2l0aW9uKTsKKyAgICAgICAgfQogICAgIH0KICNlbHNlCisg
ICAgVU5VU0VEX1BBUkFNKHJlZ2lzdHJhYmxlRG9tYWluKTsKICAgICBVTlVTRURfUEFSQU0ocG9z
aXRpb24pOwogI2VuZGlmIC8vIEVOQUJMRShHRU9MT0NBVElPTikKIH0KIAotdm9pZCBXZWJHZW9s
b2NhdGlvbk1hbmFnZXI6OmRpZEZhaWxUb0RldGVybWluZVBvc2l0aW9uKGNvbnN0IFN0cmluZyYg
ZXJyb3JNZXNzYWdlKQordm9pZCBXZWJHZW9sb2NhdGlvbk1hbmFnZXI6OmRpZEZhaWxUb0RldGVy
bWluZVBvc2l0aW9uKGNvbnN0IFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluJiByZWdpc3RyYWJs
ZURvbWFpbiwgY29uc3QgU3RyaW5nJiBlcnJvck1lc3NhZ2UpCiB7CiAjaWYgRU5BQkxFKEdFT0xP
Q0FUSU9OKQotICAgIC8vIEZJWE1FOiBBZGQgbG9jYWxpemVkIGVycm9yIHN0cmluZy4KLSAgICBh
dXRvIGVycm9yID0gR2VvbG9jYXRpb25FcnJvcjo6Y3JlYXRlKEdlb2xvY2F0aW9uRXJyb3I6OlBv
c2l0aW9uVW5hdmFpbGFibGUsIGVycm9yTWVzc2FnZSk7Ci0KLSAgICBmb3IgKGF1dG8mIHBhZ2Ug
OiBjb3B5VG9WZWN0b3IobV9wYWdlU2V0KSkgewotICAgICAgICBpZiAocGFnZS0+Y29yZVBhZ2Uo
KSkKLSAgICAgICAgICAgIEdlb2xvY2F0aW9uQ29udHJvbGxlcjo6ZnJvbShwYWdlLT5jb3JlUGFn
ZSgpKS0+ZXJyb3JPY2N1cnJlZChlcnJvci5nZXQoKSk7CisgICAgaWYgKGF1dG8gaXQgPSBtX3Bh
Z2VTZXRzLmZpbmQocmVnaXN0cmFibGVEb21haW4pOyBpdCAhPSBtX3BhZ2VTZXRzLmVuZCgpKSB7
CisgICAgICAgIC8vIEZJWE1FOiBBZGQgbG9jYWxpemVkIGVycm9yIHN0cmluZy4KKyAgICAgICAg
YXV0byBlcnJvciA9IEdlb2xvY2F0aW9uRXJyb3I6OmNyZWF0ZShHZW9sb2NhdGlvbkVycm9yOjpQ
b3NpdGlvblVuYXZhaWxhYmxlLCBlcnJvck1lc3NhZ2UpOworCisgICAgICAgIGZvciAoYXV0byYg
cGFnZSA6IGNvcHlUb1ZlY3RvcihpdC0+dmFsdWUucGFnZVNldCkpIHsKKyAgICAgICAgICAgIGlm
IChwYWdlLT5jb3JlUGFnZSgpKQorICAgICAgICAgICAgICAgIEdlb2xvY2F0aW9uQ29udHJvbGxl
cjo6ZnJvbShwYWdlLT5jb3JlUGFnZSgpKS0+ZXJyb3JPY2N1cnJlZChlcnJvci5nZXQoKSk7Cisg
ICAgICAgIH0KICAgICB9CiAjZWxzZQorICAgIFVOVVNFRF9QQVJBTShyZWdpc3RyYWJsZURvbWFp
bik7CiAgICAgVU5VU0VEX1BBUkFNKGVycm9yTWVzc2FnZSk7CiAjZW5kaWYgLy8gRU5BQkxFKEdF
T0xPQ0FUSU9OKQogfQogCi0jaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKLXZvaWQgV2ViR2VvbG9j
YXRpb25NYW5hZ2VyOjpyZXNldFBlcm1pc3Npb25zKCkKK2Jvb2wgV2ViR2VvbG9jYXRpb25NYW5h
Z2VyOjppc1VwZGF0aW5nKGNvbnN0IFBhZ2VTZXRzJiBwYWdlU2V0cykgY29uc3QKIHsKLSAgICBt
X3Byb2Nlc3MucmVzZXRBbGxHZW9sb2NhdGlvblBlcm1pc3Npb25zKCk7CisgICAgcmV0dXJuICFw
YWdlU2V0cy5wYWdlU2V0LmNvbXB1dGVzRW1wdHkoKTsKIH0KLSNlbmRpZiAvLyBQTEFURk9STShJ
T1NfRkFNSUxZKQogCi1ib29sIFdlYkdlb2xvY2F0aW9uTWFuYWdlcjo6aXNVcGRhdGluZygpIGNv
bnN0Citib29sIFdlYkdlb2xvY2F0aW9uTWFuYWdlcjo6aXNIaWdoQWNjdXJhY3lFbmFibGVkKGNv
bnN0IFBhZ2VTZXRzJiBwYWdlU2V0cykgY29uc3QKIHsKLSAgICByZXR1cm4gIW1fcGFnZVNldC5j
b21wdXRlc0VtcHR5KCk7CisgICAgcmV0dXJuICFwYWdlU2V0cy5oaWdoQWNjdXJhY3lQYWdlU2V0
LmNvbXB1dGVzRW1wdHkoKTsKIH0KIAotYm9vbCBXZWJHZW9sb2NhdGlvbk1hbmFnZXI6OmlzSGln
aEFjY3VyYWN5RW5hYmxlZCgpIGNvbnN0CisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKK3ZvaWQg
V2ViR2VvbG9jYXRpb25NYW5hZ2VyOjpyZXNldFBlcm1pc3Npb25zKGNvbnN0IFdlYkNvcmU6OlJl
Z2lzdHJhYmxlRG9tYWluJiByZWdpc3RyYWJsZURvbWFpbikKIHsKLSAgICByZXR1cm4gIW1faGln
aEFjY3VyYWN5UGFnZVNldC5jb21wdXRlc0VtcHR5KCk7CisgICAgYXV0byBpdCA9IG1fcGFnZVNl
dHMuZmluZChyZWdpc3RyYWJsZURvbWFpbik7CisgICAgaWYgKGl0ICE9IG1fcGFnZVNldHMuZW5k
KCkpCisgICAgICAgIHJldHVybjsKKworICAgIGZvciAoYXV0byYgcGFnZSA6IGNvcHlUb1ZlY3Rv
cihpdC0+dmFsdWUucGFnZVNldCkpIHsKKyAgICAgICAgaWYgKGF1dG8qIG1haW5GcmFtZSA9IHBh
Z2UtPmNvcmVQYWdlKCkgPyAmcGFnZS0+Y29yZVBhZ2UoKS0+bWFpbkZyYW1lKCkgOiBudWxscHRy
KQorICAgICAgICAgICAgbWFpbkZyYW1lLT5yZXNldEFsbEdlb2xvY2F0aW9uUGVybWlzc2lvbigp
OworICAgIH0KIH0KKyNlbmRpZiAvLyBQTEFURk9STShJT1NfRkFNSUxZKQogCiB9IC8vIG5hbWVz
cGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HZW9sb2Nh
dGlvbi9XZWJHZW9sb2NhdGlvbk1hbmFnZXIuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9H
ZW9sb2NhdGlvbi9XZWJHZW9sb2NhdGlvbk1hbmFnZXIuaAppbmRleCA0NDgzNTk2MzU4NzgyMTk3
Y2NiYTU5MjhlZmU2MjUxNTI2YzE4NTE1Li5jYjY1ODhjNmU3MTg4YmVmYmQ1NTEyM2Q0YTU1OWIy
YjBiMzFhOTNhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR2VvbG9jYXRp
b24vV2ViR2VvbG9jYXRpb25NYW5hZ2VyLmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L0dlb2xvY2F0aW9uL1dlYkdlb2xvY2F0aW9uTWFuYWdlci5oCkBAIC0yOCw2ICsyOCw3IEBACiAj
aW5jbHVkZSAiTWVzc2FnZVJlY2VpdmVyLmgiCiAjaW5jbHVkZSAiV2ViR2VvbG9jYXRpb25Qb3Np
dGlvbi5oIgogI2luY2x1ZGUgIldlYlByb2Nlc3NTdXBwbGVtZW50LmgiCisjaW5jbHVkZSA8V2Vi
Q29yZS9SZWdpc3RyYWJsZURvbWFpbi5oPgogI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CiAjaW5j
bHVkZSA8d3RmL05vbmNvcHlhYmxlLmg+CiAjaW5jbHVkZSA8d3RmL1dlYWtIYXNoU2V0Lmg+CkBA
IC00NywzMSArNDgsMzQgQEAgY2xhc3MgV2ViR2VvbG9jYXRpb25NYW5hZ2VyIDogcHVibGljIFdl
YlByb2Nlc3NTdXBwbGVtZW50LCBwdWJsaWMgSVBDOjpNZXNzYWdlUmUKICAgICBXVEZfTUFLRV9O
T05DT1BZQUJMRShXZWJHZW9sb2NhdGlvbk1hbmFnZXIpOwogcHVibGljOgogICAgIGV4cGxpY2l0
IFdlYkdlb2xvY2F0aW9uTWFuYWdlcihXZWJQcm9jZXNzJik7CisgICAgfldlYkdlb2xvY2F0aW9u
TWFuYWdlcigpOwogCiAgICAgc3RhdGljIGNvbnN0IGNoYXIqIHN1cHBsZW1lbnROYW1lKCk7CiAK
LSAgICB2b2lkIHJlZ2lzdGVyV2ViUGFnZShXZWJQYWdlJiwgY29uc3QgU3RyaW5nJiBhdXRob3Jp
emF0aW9uVG9rZW4pOworICAgIHZvaWQgcmVnaXN0ZXJXZWJQYWdlKFdlYlBhZ2UmLCBjb25zdCBT
dHJpbmcmIGF1dGhvcml6YXRpb25Ub2tlbiwgYm9vbCBuZWVkc0hpZ2hBY2N1cmFjeSk7CiAgICAg
dm9pZCB1bnJlZ2lzdGVyV2ViUGFnZShXZWJQYWdlJik7CiAgICAgdm9pZCBzZXRFbmFibGVIaWdo
QWNjdXJhY3lGb3JQYWdlKFdlYlBhZ2UmLCBib29sKTsKIAotICAgIHZvaWQgcmVxdWVzdFBlcm1p
c3Npb24oV2ViQ29yZTo6R2VvbG9jYXRpb24mKTsKLQogcHJpdmF0ZToKICAgICAvLyBJUEM6Ok1l
c3NhZ2VSZWNlaXZlcgogICAgIHZvaWQgZGlkUmVjZWl2ZU1lc3NhZ2UoSVBDOjpDb25uZWN0aW9u
JiwgSVBDOjpEZWNvZGVyJikgb3ZlcnJpZGU7CiAKLSAgICBib29sIGlzVXBkYXRpbmcoKSBjb25z
dDsKLSAgICBib29sIGlzSGlnaEFjY3VyYWN5RW5hYmxlZCgpIGNvbnN0OwotCi0gICAgdm9pZCBk
aWRDaGFuZ2VQb3NpdGlvbihjb25zdCBXZWJDb3JlOjpHZW9sb2NhdGlvblBvc2l0aW9uRGF0YSYp
OwotICAgIHZvaWQgZGlkRmFpbFRvRGV0ZXJtaW5lUG9zaXRpb24oY29uc3QgU3RyaW5nJiBlcnJv
ck1lc3NhZ2UpOworICAgIHZvaWQgZGlkQ2hhbmdlUG9zaXRpb24oY29uc3QgV2ViQ29yZTo6UmVn
aXN0cmFibGVEb21haW4mLCBjb25zdCBXZWJDb3JlOjpHZW9sb2NhdGlvblBvc2l0aW9uRGF0YSYp
OworICAgIHZvaWQgZGlkRmFpbFRvRGV0ZXJtaW5lUG9zaXRpb24oY29uc3QgV2ViQ29yZTo6UmVn
aXN0cmFibGVEb21haW4mLCBjb25zdCBTdHJpbmcmIGVycm9yTWVzc2FnZSk7CiAjaWYgUExBVEZP
Uk0oSU9TX0ZBTUlMWSkKLSAgICB2b2lkIHJlc2V0UGVybWlzc2lvbnMoKTsKKyAgICB2b2lkIHJl
c2V0UGVybWlzc2lvbnMoY29uc3QgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4mKTsKICNlbmRp
ZiAvLyBQTEFURk9STShJT1NfRkFNSUxZKQogCisgICAgc3RydWN0IFBhZ2VTZXRzIHsKKyAgICAg
ICAgV2Vha0hhc2hTZXQ8V2ViUGFnZT4gcGFnZVNldDsKKyAgICAgICAgV2Vha0hhc2hTZXQ8V2Vi
UGFnZT4gaGlnaEFjY3VyYWN5UGFnZVNldDsKKyAgICB9OworICAgIGJvb2wgaXNVcGRhdGluZyhj
b25zdCBQYWdlU2V0cyYpIGNvbnN0OworICAgIGJvb2wgaXNIaWdoQWNjdXJhY3lFbmFibGVkKGNv
bnN0IFBhZ2VTZXRzJikgY29uc3Q7CisKICAgICBXZWJQcm9jZXNzJiBtX3Byb2Nlc3M7Ci0gICAg
V2Vha0hhc2hTZXQ8V2ViUGFnZT4gbV9wYWdlU2V0OwotICAgIFdlYWtIYXNoU2V0PFdlYlBhZ2U+
IG1faGlnaEFjY3VyYWN5UGFnZVNldDsKKyAgICBIYXNoTWFwPFdlYkNvcmU6OlJlZ2lzdHJhYmxl
RG9tYWluLCBQYWdlU2V0cz4gbV9wYWdlU2V0czsKKyAgICBIYXNoTWFwPFdlYlBhZ2UqLCBXZWJD
b3JlOjpSZWdpc3RyYWJsZURvbWFpbj4gbV9wYWdlVG9SZWdpc3RyYWJsZURvbWFpbjsKIH07CiAK
IH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL0dlb2xvY2F0aW9uL1dlYkdlb2xvY2F0aW9uTWFuYWdlci5tZXNzYWdlcy5pbiBiL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9HZW9sb2NhdGlvbi9XZWJHZW9sb2NhdGlvbk1hbmFnZXIubWVz
c2FnZXMuaW4KaW5kZXggNzlmM2I0Y2U0ZWZjYWYzNDg4NTdkOTkzMzI1M2Q4OTU0ZjBmMWI4Ny4u
NmZjYzYwZDJlMDhlMjZlYWI3M2MxZjcxY2Q4ODQyZGM1MTA1MmQxOCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dlb2xvY2F0aW9uL1dlYkdlb2xvY2F0aW9uTWFuYWdlci5t
ZXNzYWdlcy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR2VvbG9jYXRpb24vV2Vi
R2VvbG9jYXRpb25NYW5hZ2VyLm1lc3NhZ2VzLmluCkBAIC0yMSw5ICsyMSw5IEBACiAjIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCiAKIG1lc3NhZ2VzIC0+IFdlYkdlb2xvY2F0aW9uTWFuYWdlciBOb3RSZWZDb3VudGVk
IHsKLSAgICBEaWRDaGFuZ2VQb3NpdGlvbihXZWJDb3JlOjpHZW9sb2NhdGlvblBvc2l0aW9uRGF0
YSBwb3NpdGlvbik7Ci0gICAgRGlkRmFpbFRvRGV0ZXJtaW5lUG9zaXRpb24oU3RyaW5nIGVycm9y
TWVzc2FnZSk7CisgICAgRGlkQ2hhbmdlUG9zaXRpb24oV2ViQ29yZTo6UmVnaXN0cmFibGVEb21h
aW4gcmVnaXN0cmFibGVEb21haW4sIFdlYkNvcmU6Okdlb2xvY2F0aW9uUG9zaXRpb25EYXRhIHBv
c2l0aW9uKTsKKyAgICBEaWRGYWlsVG9EZXRlcm1pbmVQb3NpdGlvbihXZWJDb3JlOjpSZWdpc3Ry
YWJsZURvbWFpbiByZWdpc3RyYWJsZURvbWFpbiwgU3RyaW5nIGVycm9yTWVzc2FnZSk7CiAjaWYg
UExBVEZPUk0oSU9TX0ZBTUlMWSkKLSAgICBSZXNldFBlcm1pc3Npb25zKCk7CisgICAgUmVzZXRQ
ZXJtaXNzaW9ucyhXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiByZWdpc3RyYWJsZURvbWFpbik7
CiAjZW5kaWYKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3Jl
U3VwcG9ydC9XZWJHZW9sb2NhdGlvbkNsaWVudC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvV2ViQ29yZVN1cHBvcnQvV2ViR2VvbG9jYXRpb25DbGllbnQuY3BwCmluZGV4IGVhMDJmMmFj
MTZmNzMxYmY1NjQyZjg2NzhkODZhNDk4MTFkOGMzODYuLmQxOGRmN2VmYWY1NmVmY2ZjOGQxNjk5
YzkxY2QyNmI2ODliYzgyNmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9X
ZWJDb3JlU3VwcG9ydC9XZWJHZW9sb2NhdGlvbkNsaWVudC5jcHAKKysrIGIvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkdlb2xvY2F0aW9uQ2xpZW50LmNwcApAQCAt
NDgsOSArNDgsOSBAQCB2b2lkIFdlYkdlb2xvY2F0aW9uQ2xpZW50OjpnZW9sb2NhdGlvbkRlc3Ry
b3llZCgpCiAgICAgZGVsZXRlIHRoaXM7CiB9CiAKLXZvaWQgV2ViR2VvbG9jYXRpb25DbGllbnQ6
OnN0YXJ0VXBkYXRpbmcoY29uc3QgU3RyaW5nJiBhdXRob3JpemF0aW9uVG9rZW4pCit2b2lkIFdl
Ykdlb2xvY2F0aW9uQ2xpZW50OjpzdGFydFVwZGF0aW5nKGNvbnN0IFN0cmluZyYgYXV0aG9yaXph
dGlvblRva2VuLCBib29sIG5lZWRzSGlnaEFjY3VyYWN5KQogewotICAgIFdlYlByb2Nlc3M6OnNp
bmdsZXRvbigpLnN1cHBsZW1lbnQ8V2ViR2VvbG9jYXRpb25NYW5hZ2VyPigpLT5yZWdpc3Rlcldl
YlBhZ2UobV9wYWdlLCBhdXRob3JpemF0aW9uVG9rZW4pOworICAgIFdlYlByb2Nlc3M6OnNpbmds
ZXRvbigpLnN1cHBsZW1lbnQ8V2ViR2VvbG9jYXRpb25NYW5hZ2VyPigpLT5yZWdpc3RlcldlYlBh
Z2UobV9wYWdlLCBhdXRob3JpemF0aW9uVG9rZW4sIG5lZWRzSGlnaEFjY3VyYWN5KTsKIH0KIAog
dm9pZCBXZWJHZW9sb2NhdGlvbkNsaWVudDo6c3RvcFVwZGF0aW5nKCkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJHZW9sb2NhdGlvbkNsaWVu
dC5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkdlb2xvY2F0
aW9uQ2xpZW50LmgKaW5kZXggYjE2ODE2NzQ4OTYyMjU0N2VjOTRlNjc5OGZiNjlkZDhmYTZkMDEx
Yy4uNjVlYzBlOTM1NDI4M2Q1ZmE3N2FmMTBiNGUxODBiODcxMmZhZWYwNyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkdlb2xvY2F0aW9uQ2xp
ZW50LmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkdl
b2xvY2F0aW9uQ2xpZW50LmgKQEAgLTMxLDcgKzMxLDcgQEAgbmFtZXNwYWNlIFdlYktpdCB7CiAK
IGNsYXNzIFdlYlBhZ2U7CiAKLWNsYXNzIFdlYkdlb2xvY2F0aW9uQ2xpZW50IDogcHVibGljIFdl
YkNvcmU6Okdlb2xvY2F0aW9uQ2xpZW50IHsKK2NsYXNzIFdlYkdlb2xvY2F0aW9uQ2xpZW50IGZp
bmFsIDogcHVibGljIFdlYkNvcmU6Okdlb2xvY2F0aW9uQ2xpZW50IHsKICAgICBXVEZfTUFLRV9G
QVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBXZWJHZW9sb2NhdGlvbkNsaWVudChXZWJQYWdl
JiBwYWdlKQpAQCAtNDIsMTcgKzQyLDE3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIH5XZWJHZW9s
b2NhdGlvbkNsaWVudCgpOwogCiBwcml2YXRlOgotICAgIHZvaWQgZ2VvbG9jYXRpb25EZXN0cm95
ZWQoKSBvdmVycmlkZTsKKyAgICB2b2lkIGdlb2xvY2F0aW9uRGVzdHJveWVkKCkgZmluYWw7CiAK
LSAgICB2b2lkIHN0YXJ0VXBkYXRpbmcoY29uc3QgU3RyaW5nJiBhdXRob3JpemF0aW9uVG9rZW4p
IG92ZXJyaWRlOwotICAgIHZvaWQgc3RvcFVwZGF0aW5nKCkgb3ZlcnJpZGU7Ci0gICAgdm9pZCBy
ZXZva2VBdXRob3JpemF0aW9uVG9rZW4oY29uc3QgU3RyaW5nJikgb3ZlcnJpZGU7Ci0gICAgdm9p
ZCBzZXRFbmFibGVIaWdoQWNjdXJhY3koYm9vbCkgb3ZlcnJpZGU7CisgICAgdm9pZCBzdGFydFVw
ZGF0aW5nKGNvbnN0IFN0cmluZyYgYXV0aG9yaXphdGlvblRva2VuLCBib29sIG5lZWRzSGlnaEFj
Y3VyYWN5KSBmaW5hbDsKKyAgICB2b2lkIHN0b3BVcGRhdGluZygpIGZpbmFsOworICAgIHZvaWQg
cmV2b2tlQXV0aG9yaXphdGlvblRva2VuKGNvbnN0IFN0cmluZyYpIGZpbmFsOworICAgIHZvaWQg
c2V0RW5hYmxlSGlnaEFjY3VyYWN5KGJvb2wpIGZpbmFsOwogCi0gICAgc3RkOjpvcHRpb25hbDxX
ZWJDb3JlOjpHZW9sb2NhdGlvblBvc2l0aW9uRGF0YT4gbGFzdFBvc2l0aW9uKCkgb3ZlcnJpZGU7
CisgICAgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpHZW9sb2NhdGlvblBvc2l0aW9uRGF0YT4gbGFz
dFBvc2l0aW9uKCkgZmluYWw7CiAKLSAgICB2b2lkIHJlcXVlc3RQZXJtaXNzaW9uKFdlYkNvcmU6
Okdlb2xvY2F0aW9uJikgb3ZlcnJpZGU7Ci0gICAgdm9pZCBjYW5jZWxQZXJtaXNzaW9uUmVxdWVz
dChXZWJDb3JlOjpHZW9sb2NhdGlvbiYpIG92ZXJyaWRlOworICAgIHZvaWQgcmVxdWVzdFBlcm1p
c3Npb24oV2ViQ29yZTo6R2VvbG9jYXRpb24mKSBmaW5hbDsKKyAgICB2b2lkIGNhbmNlbFBlcm1p
c3Npb25SZXF1ZXN0KFdlYkNvcmU6Okdlb2xvY2F0aW9uJikgZmluYWw7CiAKICAgICBXZWJQYWdl
JiBtX3BhZ2U7CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBy
b2Nlc3MuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3BwCmluZGV4
IGRkNDViNDU4OGJmOWRkMTI0ZTE4ZmFhOTVhMzI2ZWQzMTkzMWE0NTcuLjc5OTYxM2QzNzc0MjM2
M2JmYmRjZDk1Mjk3OTk2MjIwNmYwMjI4YTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9XZWJQcm9jZXNzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2Vi
UHJvY2Vzcy5jcHAKQEAgLTE1MjcsMTYgKzE1MjcsNiBAQCB2b2lkIFdlYlByb2Nlc3M6OnBhZ2VB
Y3Rpdml0eVN0YXRlRGlkQ2hhbmdlKFBhZ2VJZGVudGlmaWVyLCBPcHRpb25TZXQ8V2ViQ29yZTo6
QQogICAgIH0KIH0KIAotI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCi12b2lkIFdlYlByb2Nlc3M6
OnJlc2V0QWxsR2VvbG9jYXRpb25QZXJtaXNzaW9ucygpCi17Ci0gICAgZm9yIChhdXRvJiBwYWdl
IDogbV9wYWdlTWFwLnZhbHVlcygpKSB7Ci0gICAgICAgIGlmIChGcmFtZSogbWFpbkZyYW1lID0g
cGFnZS0+bWFpbkZyYW1lKCkpCi0gICAgICAgICAgICBtYWluRnJhbWUtPnJlc2V0QWxsR2VvbG9j
YXRpb25QZXJtaXNzaW9uKCk7Ci0gICAgfQotfQotI2VuZGlmCi0KIHZvaWQgV2ViUHJvY2Vzczo6
cHJlcGFyZVRvU3VzcGVuZChib29sIGlzU3VzcGVuc2lvbkltbWluZW50LCBDb21wbGV0aW9uSGFu
ZGxlcjx2b2lkKCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7CiAgICAgV0VCUFJPQ0VTU19SRUxF
QVNFX0xPRyhQcm9jZXNzU3VzcGVuc2lvbiwgInByZXBhcmVUb1N1c3BlbmQ6IGlzU3VzcGVuc2lv
bkltbWluZW50PSVkIiwgaXNTdXNwZW5zaW9uSW1taW5lbnQpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9XZWJQcm9jZXNzLmgKaW5kZXggYzVkZDIyNWRjMWI3MWRhOWNkZDRlZWRiYTBhMDdlNzYxNzgx
NTc1ZS4uNTk1YWYwYjk3NDEyOTBkYTZjNzM0YTA4ODZiODI0ZDIzYjFlZTU3ZSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuaAorKysgYi9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5oCkBAIC0zMTAsMTAgKzMxMCw2IEBAIHB1YmxpYzoK
IAogICAgIHZvaWQgaXNKSVRFbmFibGVkKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYp
OwogCi0jaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKLSAgICB2b2lkIHJlc2V0QWxsR2VvbG9jYXRp
b25QZXJtaXNzaW9ucygpOwotI2VuZGlmCi0KICNpZiBQTEFURk9STShXQVlMQU5EKQogICAgIFdh
eWxhbmRDb21wb3NpdG9yRGlzcGxheSogd2F5bGFuZENvbXBvc2l0b3JEaXNwbGF5KCkgY29uc3Qg
eyByZXR1cm4gbV93YXlsYW5kQ29tcG9zaXRvckRpc3BsYXkuZ2V0KCk7IH0KICNlbmRpZgpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViR2VvbG9j
YXRpb25DbGllbnQuaCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dl
Ykdlb2xvY2F0aW9uQ2xpZW50LmgKaW5kZXggNzdjMjgyOGQ4NTk1MzYzNWI2NGM0Yzg5OTk5MGEw
YTY0ODE3MWI2Yy4uYjA3Yzc5MDNkMjkyYTkzMzkxZTVjNDBhZWRkNjVkZWRiYWY4YzVmMSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViR2VvbG9j
YXRpb25DbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9y
dC9XZWJHZW9sb2NhdGlvbkNsaWVudC5oCkBAIC0zOSw3ICszOSw3IEBAIHB1YmxpYzoKICAgICBX
ZWJWaWV3ICp3ZWJWaWV3KCkgeyByZXR1cm4gbV93ZWJWaWV3OyB9CiAKICAgICB2b2lkIGdlb2xv
Y2F0aW9uRGVzdHJveWVkKCkgb3ZlcnJpZGU7Ci0gICAgdm9pZCBzdGFydFVwZGF0aW5nKGNvbnN0
IFN0cmluZyYgYXV0aG9yaXphdGlvblRva2VuKSBvdmVycmlkZTsKKyAgICB2b2lkIHN0YXJ0VXBk
YXRpbmcoY29uc3QgU3RyaW5nJiBhdXRob3JpemF0aW9uVG9rZW4sIGJvb2wgZW5hYmxlSGlnaEFj
Y3VyYWN5KSBvdmVycmlkZTsKICAgICB2b2lkIHN0b3BVcGRhdGluZygpIG92ZXJyaWRlOwogI2lm
IFBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAgLy8gRklYTUU6IHVuaWZ5IHRoaXMgd2l0aCBNYWMg
b24gT3BlblNvdXJjZS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNv
cmVTdXBwb3J0L1dlYkdlb2xvY2F0aW9uQ2xpZW50Lm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9t
YWMvV2ViQ29yZVN1cHBvcnQvV2ViR2VvbG9jYXRpb25DbGllbnQubW0KaW5kZXggZTc4OGE1N2Rk
NmY4MDdlN2IyNWM3NDJiYTgwMTkzNTdhMjczNGQzOC4uYThiODUyMWUyZGE0NzE4ZGMxNGI0Mzcw
YjFhNWI0YjhkNjMyODU4OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2Vi
Q29yZVN1cHBvcnQvV2ViR2VvbG9jYXRpb25DbGllbnQubW0KKysrIGIvU291cmNlL1dlYktpdExl
Z2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViR2VvbG9jYXRpb25DbGllbnQubW0KQEAgLTgzLDkg
KzgzLDE2IEBAIHZvaWQgV2ViR2VvbG9jYXRpb25DbGllbnQ6Omdlb2xvY2F0aW9uRGVzdHJveWVk
KCkKICAgICBkZWxldGUgdGhpczsKIH0KIAotdm9pZCBXZWJHZW9sb2NhdGlvbkNsaWVudDo6c3Rh
cnRVcGRhdGluZyhjb25zdCBTdHJpbmcmIGF1dGhvcml6YXRpb25Ub2tlbikKK3ZvaWQgV2ViR2Vv
bG9jYXRpb25DbGllbnQ6OnN0YXJ0VXBkYXRpbmcoY29uc3QgU3RyaW5nJiBhdXRob3JpemF0aW9u
VG9rZW4sIGJvb2wgZW5hYmxlSGlnaEFjY3VyYWN5KQogewogICAgIFVOVVNFRF9QQVJBTShhdXRo
b3JpemF0aW9uVG9rZW4pOworI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCisgICAgaWYgKGVuYWJs
ZUhpZ2hBY2N1cmFjeSkKKyAgICAgICAgc2V0RW5hYmxlSGlnaEFjY3VyYWN5KHRydWUpOworI2Vs
c2UKKyAgICBVTlVTRURfUEFSQU0oZW5hYmxlSGlnaEFjY3VyYWN5KTsKKyNlbmRpZgorCiAgICAg
W1ttX3dlYlZpZXcgX2dlb2xvY2F0aW9uUHJvdmlkZXJdIHJlZ2lzdGVyV2ViVmlldzptX3dlYlZp
ZXddOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJDb3JlU3Vw
cG9ydC9XZWJHZW9sb2NhdGlvbkNsaWVudC5jcHAgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9X
ZWJDb3JlU3VwcG9ydC9XZWJHZW9sb2NhdGlvbkNsaWVudC5jcHAKaW5kZXggZTFmY2EyNzcyNDk2
MTU0YTRlMDcwZTRkZmRhN2U3N2U5NzM1ODJjMS4uYWM1NDUxNGM2NDJlYTBlNWY4YWYzMzY5ZTFi
YmJhZTBjMzkwNzFiNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViQ29y
ZVN1cHBvcnQvV2ViR2VvbG9jYXRpb25DbGllbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdh
Y3kvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkdlb2xvY2F0aW9uQ2xpZW50LmNwcApAQCAtNDgsOSAr
NDgsMTAgQEAgdm9pZCBXZWJHZW9sb2NhdGlvbkNsaWVudDo6Z2VvbG9jYXRpb25EZXN0cm95ZWQo
KQogICAgIGRlbGV0ZSB0aGlzOwogfQogCi12b2lkIFdlYkdlb2xvY2F0aW9uQ2xpZW50OjpzdGFy
dFVwZGF0aW5nKGNvbnN0IFN0cmluZyYgYXV0aG9yaXphdGlvblRva2VuKQordm9pZCBXZWJHZW9s
b2NhdGlvbkNsaWVudDo6c3RhcnRVcGRhdGluZyhjb25zdCBTdHJpbmcmIGF1dGhvcml6YXRpb25U
b2tlbiwgYm9vbCBlbmFibGVIaWdoQWNjdXJhY3kpCiB7CiAgICAgVU5VU0VEX1BBUkFNKGF1dGhv
cml6YXRpb25Ub2tlbik7CisgICAgVU5VU0VEX1BBUkFNKGVuYWJsZUhpZ2hBY2N1cmFjeSk7CiAg
ICAgQ09NUHRyPElXZWJHZW9sb2NhdGlvblByb3ZpZGVyPiBwcm92aWRlcjsKICAgICBpZiAoRkFJ
TEVEKG1fd2ViVmlldy0+Z2VvbG9jYXRpb25Qcm92aWRlcigmcHJvdmlkZXIpKSkKICAgICAgICAg
cmV0dXJuOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViQ29yZVN1cHBv
cnQvV2ViR2VvbG9jYXRpb25DbGllbnQuaCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkNv
cmVTdXBwb3J0L1dlYkdlb2xvY2F0aW9uQ2xpZW50LmgKaW5kZXggMTk1NzQxN2I1NWQ3ZTVkMmY5
YjcxZTVjOWQ5YzMwM2RmZWY0ZTE4Ni4uNWI4ZTk0NDRmMjFmZWQ0M2VkZjI1OTFhMmJhMTVkYTNi
ZDQ0ZjQ0YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViQ29yZVN1cHBv
cnQvV2ViR2VvbG9jYXRpb25DbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9X
ZWJDb3JlU3VwcG9ydC9XZWJHZW9sb2NhdGlvbkNsaWVudC5oCkBAIC00MSw3ICs0MSw3IEBAIHB1
YmxpYzoKICAgICBXZWJHZW9sb2NhdGlvbkNsaWVudChXZWJWaWV3Kik7CiAKICAgICB2b2lkIGdl
b2xvY2F0aW9uRGVzdHJveWVkKCkgZmluYWw7Ci0gICAgdm9pZCBzdGFydFVwZGF0aW5nKGNvbnN0
IFN0cmluZyYgYXV0aG9yaXphdGlvblRva2VuKSBmaW5hbDsKKyAgICB2b2lkIHN0YXJ0VXBkYXRp
bmcoY29uc3QgU3RyaW5nJiBhdXRob3JpemF0aW9uVG9rZW4sIGJvb2wgZW5hYmxlSGlnaEFjY3Vy
YWN5KSBmaW5hbDsKICAgICB2b2lkIHN0b3BVcGRhdGluZygpIGZpbmFsOwogICAgIHZvaWQgc2V0
RW5hYmxlSGlnaEFjY3VyYWN5KGJvb2wpIGZpbmFsIHsgfQogICAgIHN0ZDo6b3B0aW9uYWw8V2Vi
Q29yZTo6R2VvbG9jYXRpb25Qb3NpdGlvbkRhdGE+IGxhc3RQb3NpdGlvbigpIGZpbmFsOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>452044</attachid>
            <date>2022-02-15 09:53:28 -0800</date>
            <delta_ts>2022-02-15 10:54:20 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-236566-20220215095327.patch</filename>
            <type>text/plain</type>
            <size>110459</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg5ODEzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IGY2MDY5ODliY2RhNjQyMTdkZTJlNzcw
ODM4NmYzNzA2N2ExYThkZTQuLjE4NzM2NzA0OWU1NTRiZmUyMGNjNWM3ZGQ0OThiZjJjZTVjYWNi
MzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMTUgQEAKKzIwMjItMDItMTMgIENocmlzIER1bWV6ICA8Y2R1bWV6
QGFwcGxlLmNvbT4KKworICAgICAgICBEbyBwcmVsaW1pbmFyeSB3b3JrIHRvIHBhc3MgZG9tYWlu
IG5hbWVzIHRvIENvcmVMb2NhdGlvbgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MjM2NTY2CisgICAgICAgIDxyZGFyOi8vODg3NjE0MTM+CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgRGFyaW4gQWRsZXIuCisKKyAgICAgICAgQWRkIGJ1aWxkIHRpbWUgZmxh
ZyBmb3IgcGFzc2luZyB3ZWJzaXRlIGlkZW50aWZpZXJzIHRvIENvcmVMb2NhdGlvbi4KKworICAg
ICAgICAqIHd0Zi9QbGF0Zm9ybUhhdmUuaDoKKwogMjAyMi0wMi0xNSAgUm9iaW4gTW9yaXNzZXQg
IDxybW9yaXNzZXRAYXBwbGUuY29tPgogCiAgICAgICAgIFtXR1NMXSBJbXBsZW1lbnQgZW5vdWdo
IG9mIHRoZSBsZXhlciBmb3IgdGhlIHNpbXBsZXN0IHNoYWRlcnMKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCAzODI0
ODY0YmM2ODI5NGY3YzMyYzkyYzQzYjdiMThhODhhYTFmMzZiLi42MGI1NzE5NzNiNDNiZDM3ZGVl
Y2U4NjllMGQ1MWU5ZjhmNzg1OGU2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VM
b2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNTQgQEAKKzIwMjIt
MDItMTMgIENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KKworICAgICAgICBEbyBwcmVs
aW1pbmFyeSB3b3JrIHRvIHBhc3MgZG9tYWluIG5hbWVzIHRvIENvcmVMb2NhdGlvbgorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjM2NTY2CisgICAgICAg
IDxyZGFyOi8vODg3NjE0MTM+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgRGFyaW4gQWRsZXIuCisK
KyAgICAgICAgRG8gcHJlbGltaW5hcnkgd29yayB0byBwYXNzIGRvbWFpbiBuYW1lcyB0byBDb3Jl
TG9jYXRpb24gd2hlbiB1c2luZyB0aGUgR2VvbG9jYXRpb24gQVBJLgorICAgICAgICBUaGlzIHBp
cGVzIHRoZSBkb21haW4gbmFtZXMgYWxsIHRoZSB3YXkgZnJvbSB0aGUgR2VvbG9jYXRpb24gQVBJ
IHRvIHRoZSBDb3JlTG9jYXRpb24gY2FsbHMKKyAgICAgICAgYnV0IGRvZXNuJ3QgeWV0IHBhc3Mg
dGhlIGRvbWFpbiB0byBDb3JlTG9jYXRpb24gZHVlIHRvIDxyZGFyOi8vODg4MzQzMDE+LiBJIHdp
bGwgZm9sbG93LXVwCisgICAgICAgIG9uY2UgPHJkYXI6Ly84ODgzNDMwMT4gaXMgZml4ZWQuCisK
KyAgICAgICAgKiBNb2R1bGVzL2dlb2xvY2F0aW9uL0dlb2xvY2F0aW9uQ2xpZW50Lmg6CisgICAg
ICAgICogTW9kdWxlcy9nZW9sb2NhdGlvbi9HZW9sb2NhdGlvbkNvbnRyb2xsZXIuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6R2VvbG9jYXRpb25Db250cm9sbGVyOjpkaWROYXZpZ2F0ZVBhZ2UpOgor
ICAgICAgICAoV2ViQ29yZTo6R2VvbG9jYXRpb25Db250cm9sbGVyOjphZGRPYnNlcnZlcik6Cisg
ICAgICAgIChXZWJDb3JlOjpHZW9sb2NhdGlvbkNvbnRyb2xsZXI6OnJlbW92ZU9ic2VydmVyKToK
KyAgICAgICAgKFdlYkNvcmU6Okdlb2xvY2F0aW9uQ29udHJvbGxlcjo6YWN0aXZpdHlTdGF0ZURp
ZENoYW5nZSk6CisgICAgICAgIChXZWJDb3JlOjpHZW9sb2NhdGlvbkNvbnRyb2xsZXI6OnN0YXJ0
VXBkYXRpbmdJZk5lY2Vzc2FyeSk6CisgICAgICAgIChXZWJDb3JlOjpHZW9sb2NhdGlvbkNvbnRy
b2xsZXI6OnN0b3BVcGRhdGluZ0lmTmVjZXNzYXJ5KToKKyAgICAgICAgKiBNb2R1bGVzL2dlb2xv
Y2F0aW9uL0dlb2xvY2F0aW9uQ29udHJvbGxlci5oOgorICAgICAgICAoV2ViQ29yZTo6R2VvbG9j
YXRpb25Db250cm9sbGVyOjpuZWVkc0hpZ2hBY2N1cmFjeSBjb25zdCk6CisgICAgICAgICogTW9k
dWxlcy9nZW9sb2NhdGlvbi9HZW9sb2NhdGlvblBvc2l0aW9uRGF0YS5oOgorICAgICAgICAqIE1v
ZHVsZXMvZ2VvbG9jYXRpb24vaW9zL0dlb2xvY2F0aW9uUG9zaXRpb25EYXRhSU9TLm1tOgorICAg
ICAgICAqIFNvdXJjZXNDb2NvYS50eHQ6CisgICAgICAgICogV2ViQ29yZS54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qOgorICAgICAgICAqIHBhZ2UvUGFnZS5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpQYWdlOjpkaWRDb21taXRMb2FkKToKKyAgICAgICAgKiBwbGF0Zm9ybS9jb2NvYS9Db3JlTG9j
YXRpb25HZW9sb2NhdGlvblByb3ZpZGVyLmg6IENvcGllZCBmcm9tIFNvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvZ2VvbG9jYXRpb24vR2VvbG9jYXRpb25DbGllbnQuaC4KKyAgICAgICAgKiBwbGF0Zm9y
bS9jb2NvYS9Db3JlTG9jYXRpb25HZW9sb2NhdGlvblByb3ZpZGVyLm1tOiBBZGRlZC4KKyAgICAg
ICAgKGlzQXV0aG9yaXphdGlvbkdyYW50ZWQpOgorICAgICAgICAoLVtXZWJDTExvY2F0aW9uTWFu
YWdlciBpbml0V2l0aFdlYnNpdGVJZGVudGlmaWVyOmNsaWVudDpdKToKKyAgICAgICAgKC1bV2Vi
Q0xMb2NhdGlvbk1hbmFnZXIgZGVhbGxvY10pOgorICAgICAgICAoLVtXZWJDTExvY2F0aW9uTWFu
YWdlciBzdGFydF0pOgorICAgICAgICAoLVtXZWJDTExvY2F0aW9uTWFuYWdlciBzdG9wXSk6Cisg
ICAgICAgICgtW1dlYkNMTG9jYXRpb25NYW5hZ2VyIHNldEVuYWJsZUhpZ2hBY2N1cmFjeTpdKToK
KyAgICAgICAgKC1bV2ViQ0xMb2NhdGlvbk1hbmFnZXIgcmVxdWVzdEdlb2xvY2F0aW9uQXV0aG9y
aXphdGlvbl0pOgorICAgICAgICAoLVtXZWJDTExvY2F0aW9uTWFuYWdlciBsb2NhdGlvbk1hbmFn
ZXJEaWRDaGFuZ2VBdXRob3JpemF0aW9uOl0pOgorICAgICAgICAoLVtXZWJDTExvY2F0aW9uTWFu
YWdlciBsb2NhdGlvbk1hbmFnZXI6ZGlkVXBkYXRlTG9jYXRpb25zOl0pOgorICAgICAgICAoLVtX
ZWJDTExvY2F0aW9uTWFuYWdlciBsb2NhdGlvbk1hbmFnZXI6ZGlkRmFpbFdpdGhFcnJvcjpdKToK
KyAgICAgICAgKFdlYkNvcmU6OkNvcmVMb2NhdGlvbkdlb2xvY2F0aW9uUHJvdmlkZXI6OkNvcmVM
b2NhdGlvbkdlb2xvY2F0aW9uUHJvdmlkZXIpOgorICAgICAgICAoV2ViQ29yZTo6Q29yZUxvY2F0
aW9uR2VvbG9jYXRpb25Qcm92aWRlcjo6fkNvcmVMb2NhdGlvbkdlb2xvY2F0aW9uUHJvdmlkZXIp
OgorICAgICAgICAoV2ViQ29yZTo6Q29yZUxvY2F0aW9uR2VvbG9jYXRpb25Qcm92aWRlcjo6c3Rh
cnQpOgorICAgICAgICAoV2ViQ29yZTo6Q29yZUxvY2F0aW9uR2VvbG9jYXRpb25Qcm92aWRlcjo6
c3RvcCk6CisgICAgICAgIChXZWJDb3JlOjpDb3JlTG9jYXRpb25HZW9sb2NhdGlvblByb3ZpZGVy
OjpzZXRFbmFibGVIaWdoQWNjdXJhY3kpOgorICAgICAgICAoV2ViQ29yZTo6Q29yZUxvY2F0aW9u
R2VvbG9jYXRpb25Qcm92aWRlcjo6cmVxdWVzdEF1dGhvcml6YXRpb24pOgorICAgICAgICAqIHBs
YXRmb3JtL21vY2svR2VvbG9jYXRpb25DbGllbnRNb2NrLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
Okdlb2xvY2F0aW9uQ2xpZW50TW9jazo6c3RhcnRVcGRhdGluZyk6CisgICAgICAgICogcGxhdGZv
cm0vbW9jay9HZW9sb2NhdGlvbkNsaWVudE1vY2suaDoKKwogMjAyMi0wMi0xNSAgWmlyYW4gU3Vu
ICA8enN1bkBpZ2FsaWEuY29tPgogCiAgICAgICAgIFtGb3Jtc10gdGhlIHNlbGVjdCgpIG1ldGhv
ZCByZXR1cm5zIHNob3VsZCBiZSBpbiBsaW5lIHdpdGggc3BlY3MKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKaW5kZXggMjkxNmE1
NTY1NDlmYmJhNGE3NDMxNmI3OGQ1N2RmOWE2MjM5ZjY3YS4uMjBmYmJiNTM5MDRhYzY0ZDYwNTgy
ODdlMzhlMmUzY2Y0ZjlhZGVlMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cK
KysrIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKQEAgLTEsMyArMSw5NCBAQAorMjAyMi0wMi0x
MyAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgorCisgICAgICAgIERvIHByZWxpbWlu
YXJ5IHdvcmsgdG8gcGFzcyBkb21haW4gbmFtZXMgdG8gQ29yZUxvY2F0aW9uCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzY1NjYKKyAgICAgICAgPHJk
YXI6Ly84ODc2MTQxMz4KKworICAgICAgICBSZXZpZXdlZCBieSBEYXJpbiBBZGxlci4KKworICAg
ICAgICBEbyBwcmVsaW1pbmFyeSB3b3JrIHRvIHBhc3MgZG9tYWluIG5hbWVzIHRvIENvcmVMb2Nh
dGlvbiB3aGVuIHVzaW5nIHRoZSBHZW9sb2NhdGlvbiBBUEkuCisgICAgICAgIFRoaXMgcGlwZXMg
dGhlIGRvbWFpbiBuYW1lcyBhbGwgdGhlIHdheSBmcm9tIHRoZSBHZW9sb2NhdGlvbiBBUEkgdG8g
dGhlIENvcmVMb2NhdGlvbiBjYWxscworICAgICAgICBidXQgZG9lc24ndCB5ZXQgcGFzcyB0aGUg
ZG9tYWluIHRvIENvcmVMb2NhdGlvbiBkdWUgdG8gPHJkYXI6Ly84ODgzNDMwMT4uIEkgd2lsbCBm
b2xsb3ctdXAKKyAgICAgICAgb25jZSA8cmRhcjovLzg4ODM0MzAxPiBpcyBmaXhlZC4KKworICAg
ICAgICAqIFNvdXJjZXNDb2NvYS50eHQ6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9DL1dLR2Vv
bG9jYXRpb25NYW5hZ2VyLmNwcDoKKyAgICAgICAgKFdLR2VvbG9jYXRpb25NYW5hZ2VyU2V0UHJv
dmlkZXIpOgorICAgICAgICAqIFVJUHJvY2Vzcy9Db2NvYS9XZWJHZW9sb2NhdGlvbk1hbmFnZXJQ
cm94eUNvY29hLmNwcDogQWRkZWQuCisgICAgICAgIChXZWJLaXQ6OldlYkdlb2xvY2F0aW9uTWFu
YWdlclByb3h5Ojpwb3NpdGlvbkNoYW5nZWQpOgorICAgICAgICAoV2ViS2l0OjpXZWJHZW9sb2Nh
dGlvbk1hbmFnZXJQcm94eTo6ZXJyb3JPY2N1cnJlZCk6CisgICAgICAgIChXZWJLaXQ6OldlYkdl
b2xvY2F0aW9uTWFuYWdlclByb3h5OjpyZXNldEdlb2xvY2F0aW9uKToKKyAgICAgICAgKFdlYktp
dDo6V2ViR2VvbG9jYXRpb25NYW5hZ2VyUHJveHk6OmlzVXBkYXRpbmcgY29uc3QpOgorICAgICAg
ICAoV2ViS2l0OjpXZWJHZW9sb2NhdGlvbk1hbmFnZXJQcm94eTo6aXNIaWdoQWNjdXJhY3lFbmFi
bGVkIGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6V2ViR2VvbG9jYXRpb25NYW5hZ2VyUHJveHk6
OnByb3ZpZGVyU3RhcnRVcGRhdGluZyk6CisgICAgICAgIChXZWJLaXQ6OldlYkdlb2xvY2F0aW9u
TWFuYWdlclByb3h5Ojpwcm92aWRlclN0b3BVcGRhdGluZyk6CisgICAgICAgIChXZWJLaXQ6Oldl
Ykdlb2xvY2F0aW9uTWFuYWdlclByb3h5Ojpwcm92aWRlclNldEVuYWJsZWRIaWdoQWNjdXJhY3kp
OgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJHZW9sb2NhdGlvbk1hbmFnZXJQcm94eS5jcHA6Cisg
ICAgICAgIChXZWJLaXQ6OldlYkdlb2xvY2F0aW9uTWFuYWdlclByb3h5OjpXZWJHZW9sb2NhdGlv
bk1hbmFnZXJQcm94eSk6CisgICAgICAgIChXZWJLaXQ6OldlYkdlb2xvY2F0aW9uTWFuYWdlclBy
b3h5Ojpwcm9jZXNzUG9vbERlc3Ryb3llZCk6CisgICAgICAgIChXZWJLaXQ6OldlYkdlb2xvY2F0
aW9uTWFuYWdlclByb3h5Ojpwcm9jZXNzRGlkQ2xvc2UpOgorICAgICAgICAoV2ViS2l0OjpXZWJH
ZW9sb2NhdGlvbk1hbmFnZXJQcm94eTo6cHJvdmlkZXJEaWRDaGFuZ2VQb3NpdGlvbik6CisgICAg
ICAgIChXZWJLaXQ6OldlYkdlb2xvY2F0aW9uTWFuYWdlclByb3h5Ojpwcm92aWRlckRpZEZhaWxU
b0RldGVybWluZVBvc2l0aW9uKToKKyAgICAgICAgKFdlYktpdDo6V2ViR2VvbG9jYXRpb25NYW5h
Z2VyUHJveHk6OnN0YXJ0VXBkYXRpbmcpOgorICAgICAgICAoV2ViS2l0OjpXZWJHZW9sb2NhdGlv
bk1hbmFnZXJQcm94eTo6c3RvcFVwZGF0aW5nKToKKyAgICAgICAgKFdlYktpdDo6V2ViR2VvbG9j
YXRpb25NYW5hZ2VyUHJveHk6OnNldEVuYWJsZUhpZ2hBY2N1cmFjeSk6CisgICAgICAgIChXZWJL
aXQ6OldlYkdlb2xvY2F0aW9uTWFuYWdlclByb3h5OjpzZXRQcm92aWRlcik6CisgICAgICAgIChX
ZWJLaXQ6OldlYkdlb2xvY2F0aW9uTWFuYWdlclByb3h5Ojppc1VwZGF0aW5nIGNvbnN0KToKKyAg
ICAgICAgKFdlYktpdDo6V2ViR2VvbG9jYXRpb25NYW5hZ2VyUHJveHk6OmlzSGlnaEFjY3VyYWN5
RW5hYmxlZCBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6OldlYkdlb2xvY2F0aW9uTWFuYWdlclBy
b3h5Ojpwcm92aWRlclN0YXJ0VXBkYXRpbmcpOgorICAgICAgICAoV2ViS2l0OjpXZWJHZW9sb2Nh
dGlvbk1hbmFnZXJQcm94eTo6cHJvdmlkZXJTdG9wVXBkYXRpbmcpOgorICAgICAgICAoV2ViS2l0
OjpXZWJHZW9sb2NhdGlvbk1hbmFnZXJQcm94eTo6cHJvdmlkZXJTZXRFbmFibGVkSGlnaEFjY3Vy
YWN5KToKKyAgICAgICAgKFdlYktpdDo6V2ViR2VvbG9jYXRpb25NYW5hZ2VyUHJveHk6OnJlc2V0
UGVybWlzc2lvbnMpOiBEZWxldGVkLgorICAgICAgICAoV2ViS2l0OjpXZWJHZW9sb2NhdGlvbk1h
bmFnZXJQcm94eTo6cmVtb3ZlUmVxdWVzdGVyKTogRGVsZXRlZC4KKyAgICAgICAgKiBVSVByb2Nl
c3MvV2ViR2VvbG9jYXRpb25NYW5hZ2VyUHJveHkuaDoKKyAgICAgICAgKFdlYktpdDo6V2ViR2Vv
bG9jYXRpb25NYW5hZ2VyUHJveHk6Omxhc3RQb3NpdGlvbiBjb25zdCk6IERlbGV0ZWQuCisgICAg
ICAgIChXZWJLaXQ6OldlYkdlb2xvY2F0aW9uTWFuYWdlclByb3h5Ojppc1VwZGF0aW5nIGNvbnN0
KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYktpdDo6V2ViR2VvbG9jYXRpb25NYW5hZ2VyUHJveHk6
OmlzSGlnaEFjY3VyYWN5RW5hYmxlZCBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgICogVUlQcm9j
ZXNzL1dlYkdlb2xvY2F0aW9uTWFuYWdlclByb3h5Lm1lc3NhZ2VzLmluOgorICAgICAgICAqIFVJ
UHJvY2Vzcy9pb3MvV0tHZW9sb2NhdGlvblByb3ZpZGVySU9TLm1tOgorICAgICAgICAoLVtXS0dl
b2xvY2F0aW9uUHJvdmlkZXJJT1MgX3N0YXJ0VXBkYXRpbmddKToKKyAgICAgICAgKC1bV0tHZW9s
b2NhdGlvblByb3ZpZGVySU9TIF9zdG9wVXBkYXRpbmddKToKKyAgICAgICAgKC1bV0tHZW9sb2Nh
dGlvblByb3ZpZGVySU9TIF9zZXRFbmFibGVIaWdoQWNjdXJhY3k6XSk6CisgICAgICAgICgtW1dL
R2VvbG9jYXRpb25Qcm92aWRlcklPUyBpbml0V2l0aFByb2Nlc3NQb29sOl0pOgorICAgICAgICAo
LVtXS0dlb2xvY2F0aW9uUHJvdmlkZXJJT1MgZGVjaWRlUG9saWN5Rm9yR2VvbG9jYXRpb25SZXF1
ZXN0RnJvbU9yaWdpbjpjb21wbGV0aW9uSGFuZGxlcjp2aWV3Ol0pOgorICAgICAgICAoLVtXS0dl
b2xvY2F0aW9uUHJvdmlkZXJJT1MgZ2VvbG9jYXRpb25BdXRob3JpemF0aW9uR3JhbnRlZF0pOgor
ICAgICAgICAoLVtXS0dlb2xvY2F0aW9uUHJvdmlkZXJJT1MgcG9zaXRpb25DaGFuZ2VkOl0pOgor
ICAgICAgICAoLVtXS0dlb2xvY2F0aW9uUHJvdmlkZXJJT1MgZXJyb3JPY2N1cnJlZDpdKToKKyAg
ICAgICAgKC1bV0tHZW9sb2NhdGlvblByb3ZpZGVySU9TIHJlc2V0R2VvbG9jYXRpb25dKToKKyAg
ICAgICAgKHN0YXJ0VXBkYXRpbmdDYWxsYmFjayk6IERlbGV0ZWQuCisgICAgICAgIChzdG9wVXBk
YXRpbmdDYWxsYmFjayk6IERlbGV0ZWQuCisgICAgICAgIChzZXRFbmFibGVIaWdoQWNjdXJhY3kp
OiBEZWxldGVkLgorICAgICAgICAoLVtXS0xlZ2FjeUNvcmVMb2NhdGlvblByb3ZpZGVyIHNldExp
c3RlbmVyOl0pOiBEZWxldGVkLgorICAgICAgICAoLVtXS0xlZ2FjeUNvcmVMb2NhdGlvblByb3Zp
ZGVyIHJlcXVlc3RHZW9sb2NhdGlvbkF1dGhvcml6YXRpb25dKTogRGVsZXRlZC4KKyAgICAgICAg
KC1bV0tMZWdhY3lDb3JlTG9jYXRpb25Qcm92aWRlciBzdGFydF0pOiBEZWxldGVkLgorICAgICAg
ICAoLVtXS0xlZ2FjeUNvcmVMb2NhdGlvblByb3ZpZGVyIHN0b3BdKTogRGVsZXRlZC4KKyAgICAg
ICAgKC1bV0tMZWdhY3lDb3JlTG9jYXRpb25Qcm92aWRlciBzZXRFbmFibGVIaWdoQWNjdXJhY3k6
XSk6IERlbGV0ZWQuCisgICAgICAgICgtW1dLTGVnYWN5Q29yZUxvY2F0aW9uUHJvdmlkZXIgZ2Vv
bG9jYXRpb25BdXRob3JpemF0aW9uR3JhbnRlZF0pOiBEZWxldGVkLgorICAgICAgICAoLVtXS0xl
Z2FjeUNvcmVMb2NhdGlvblByb3ZpZGVyIGdlb2xvY2F0aW9uQXV0aG9yaXphdGlvbkRlbmllZF0p
OiBEZWxldGVkLgorICAgICAgICAoLVtXS0xlZ2FjeUNvcmVMb2NhdGlvblByb3ZpZGVyIHBvc2l0
aW9uQ2hhbmdlZDpdKTogRGVsZXRlZC4KKyAgICAgICAgKC1bV0tMZWdhY3lDb3JlTG9jYXRpb25Q
cm92aWRlciBlcnJvck9jY3VycmVkOl0pOiBEZWxldGVkLgorICAgICAgICAoLVtXS0xlZ2FjeUNv
cmVMb2NhdGlvblByb3ZpZGVyIHJlc2V0R2VvbG9jYXRpb25dKTogRGVsZXRlZC4KKyAgICAgICAg
KiBXZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBXZWJQcm9jZXNz
L0dlb2xvY2F0aW9uL1dlYkdlb2xvY2F0aW9uTWFuYWdlci5jcHA6CisgICAgICAgIChXZWJLaXQ6
OnJlZ2lzdHJhYmxlRG9tYWluRm9yUGFnZSk6CisgICAgICAgIChXZWJLaXQ6OldlYkdlb2xvY2F0
aW9uTWFuYWdlcjo6cmVnaXN0ZXJXZWJQYWdlKToKKyAgICAgICAgKFdlYktpdDo6V2ViR2VvbG9j
YXRpb25NYW5hZ2VyOjp1bnJlZ2lzdGVyV2ViUGFnZSk6CisgICAgICAgIChXZWJLaXQ6OldlYkdl
b2xvY2F0aW9uTWFuYWdlcjo6c2V0RW5hYmxlSGlnaEFjY3VyYWN5Rm9yUGFnZSk6CisgICAgICAg
IChXZWJLaXQ6OldlYkdlb2xvY2F0aW9uTWFuYWdlcjo6ZGlkQ2hhbmdlUG9zaXRpb24pOgorICAg
ICAgICAoV2ViS2l0OjpXZWJHZW9sb2NhdGlvbk1hbmFnZXI6OmRpZEZhaWxUb0RldGVybWluZVBv
c2l0aW9uKToKKyAgICAgICAgKFdlYktpdDo6V2ViR2VvbG9jYXRpb25NYW5hZ2VyOjpyZXNldFBl
cm1pc3Npb25zKToKKyAgICAgICAgKFdlYktpdDo6V2ViR2VvbG9jYXRpb25NYW5hZ2VyOjppc1Vw
ZGF0aW5nIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYktpdDo6V2ViR2VvbG9jYXRpb25N
YW5hZ2VyOjppc0hpZ2hBY2N1cmFjeUVuYWJsZWQgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAq
IFdlYlByb2Nlc3MvR2VvbG9jYXRpb24vV2ViR2VvbG9jYXRpb25NYW5hZ2VyLmg6CisgICAgICAg
ICogV2ViUHJvY2Vzcy9HZW9sb2NhdGlvbi9XZWJHZW9sb2NhdGlvbk1hbmFnZXIubWVzc2FnZXMu
aW46CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJHZW9sb2NhdGlvbkNs
aWVudC5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYkdlb2xvY2F0aW9uQ2xpZW50OjpzdGFydFVw
ZGF0aW5nKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkdlb2xvY2F0
aW9uQ2xpZW50Lmg6CisgICAgICAgIChXZWJLaXQ6OldlYkdlb2xvY2F0aW9uQ2xpZW50OjpXZWJH
ZW9sb2NhdGlvbkNsaWVudCk6IERlbGV0ZWQuCisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQcm9j
ZXNzLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzczo6cmVzZXRBbGxHZW9sb2NhdGlv
blBlcm1pc3Npb25zKTogRGVsZXRlZC4KKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlByb2Nlc3Mu
aDoKKwogMjAyMi0wMi0xNSAgQ2FybG9zIEdhcmNpYSBDYW1wb3MgIDxjZ2FyY2lhQGlnYWxpYS5j
b20+CiAKICAgICAgICAgW0dUS10gRC1CdXMgY3Jhc2ggYXRrLWJyaWRnZQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdExlZ2FjeS9t
YWMvQ2hhbmdlTG9nCmluZGV4IDY4MDM5NDg1OGExNWI4YTI1Njk2YWFlYzdjOGQ5NGFhNzNhZDcy
MjMuLjk5Mzg2NTg0M2E3ZTg4ZTFmZjdkODRkY2Y5N2IxZTllMDcyMjZmYzYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0TGVn
YWN5L21hYy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNSBAQAorMjAyMi0wMi0xMyAgQ2hyaXMgRHVt
ZXogIDxjZHVtZXpAYXBwbGUuY29tPgorCisgICAgICAgIERvIHByZWxpbWluYXJ5IHdvcmsgdG8g
cGFzcyBkb21haW4gbmFtZXMgdG8gQ29yZUxvY2F0aW9uCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzY1NjYKKyAgICAgICAgPHJkYXI6Ly84ODc2MTQx
Mz4KKworICAgICAgICBSZXZpZXdlZCBieSBEYXJpbiBBZGxlci4KKworICAgICAgICAqIFdlYkNv
cmVTdXBwb3J0L1dlYkdlb2xvY2F0aW9uQ2xpZW50Lmg6CisgICAgICAgICogV2ViQ29yZVN1cHBv
cnQvV2ViR2VvbG9jYXRpb25DbGllbnQubW06CisgICAgICAgIChXZWJHZW9sb2NhdGlvbkNsaWVu
dDo6c3RhcnRVcGRhdGluZyk6CisKIDIwMjItMDItMTEgIENocmlzIER1bWV6ICA8Y2R1bWV6QGFw
cGxlLmNvbT4KIAogICAgICAgICBVbnJldmlld2VkLCBmaXggYnVpbGQgd2l0aCB0aGUgbGF0ZXN0
IGlPUyBTREsuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9DaGFuZ2VMb2cg
Yi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9DaGFuZ2VMb2cKaW5kZXggNjk1YWE5MTA1MzllZjAy
MTA1ZjUyMTkzMDRjMDk3ZTEwMzEyNjQ1NS4uZjQwMGYzNjdkMDUyYWJlNTg3NTlhNWQ3MmM1Mjk2
NTFkZDk5MTQzZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vQ2hhbmdlTG9n
CisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE1IEBA
CisyMDIyLTAyLTEzICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CisKKyAgICAgICAg
RG8gcHJlbGltaW5hcnkgd29yayB0byBwYXNzIGRvbWFpbiBuYW1lcyB0byBDb3JlTG9jYXRpb24K
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzNjU2Ngor
ICAgICAgICA8cmRhcjovLzg4NzYxNDEzPgorCisgICAgICAgIFJldmlld2VkIGJ5IERhcmluIEFk
bGVyLgorCisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2ViR2VvbG9jYXRpb25DbGllbnQuY3Bw
OgorICAgICAgICAoV2ViR2VvbG9jYXRpb25DbGllbnQ6OnN0YXJ0VXBkYXRpbmcpOgorICAgICAg
ICAqIFdlYkNvcmVTdXBwb3J0L1dlYkdlb2xvY2F0aW9uQ2xpZW50Lmg6CisKIDIwMjItMDItMDEg
IE15bGVzIEMuIE1heGZpZWxkICA8bW1heGZpZWxkQGFwcGxlLmNvbT4KIAogICAgICAgICBSZW5h
bWUgRm9udENhc2NhZGU6OmZvbnRNZXRyaWNzKCkgYW5kIFJlbmRlclN0eWxlOjpmb250TWV0cmlj
cygpIHRvIGZvbnRNZXRyaWNzT2ZQcmltYXJ5Rm9udCgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RG
L3d0Zi9QbGF0Zm9ybUhhdmUuaCBiL1NvdXJjZS9XVEYvd3RmL1BsYXRmb3JtSGF2ZS5oCmluZGV4
IDA5MmJjMzYyMTUwMWQ0NGNlYWZiMDcwZmFjY2QzOTk1Y2RhMjMxMjcuLjY0YTVlNzliMDQ0ZWZi
YjgyYWVmMjQ5YTQxYjJkZDk4ZmJlODU3MGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL1Bs
YXRmb3JtSGF2ZS5oCisrKyBiL1NvdXJjZS9XVEYvd3RmL1BsYXRmb3JtSGF2ZS5oCkBAIC0xMTE5
LDYgKzExMTksMTYgQEAKICNkZWZpbmUgSEFWRV9OU1RFWFRMSVNUX01BUktFUl9GT1JNQVRTIDEK
ICNlbmRpZgogCisjaWYgKFBMQVRGT1JNKElPUykgJiYgX19JUEhPTkVfT1NfVkVSU0lPTl9NQVhf
QUxMT1dFRCA+PSAxNjAwMDApIFwKKyAgICB8fCAoUExBVEZPUk0oV0FUQ0hPUykgJiYgX19XQVRD
SF9PU19WRVJTSU9OX01BWF9BTExPV0VEID49IDkwMDAwKSBcCisgICAgfHwgKFBMQVRGT1JNKEFQ
UExFVFYpICYmIF9fVFZfT1NfVkVSU0lPTl9NQVhfQUxMT1dFRCA+PSAxNjAwMDApCisjZGVmaW5l
IEhBVkVfQ09SRV9MT0NBVElPTl9XRUJTSVRFX0lERU5USUZJRVJTIDEKKyNlbmRpZgorCisjaWYg
UExBVEZPUk0oSU9TX0ZBTUlMWSkgfHwgKFBMQVRGT1JNKE1BQykgJiYgX19NQUNfT1NfWF9WRVJT
SU9OX01JTl9SRVFVSVJFRCA+PSAxMDE0MDAgJiYgZGVmaW5lZCBfX2hhc19pbmNsdWRlICYmIF9f
aGFzX2luY2x1ZGUoPENvcmVGb3VuZGF0aW9uL0NGUHJpdi5oPikpCisjZGVmaW5lIEhBVkVfQ09S
RV9MT0NBVElPTl9BVVRIT1JJWkVEX1dIRU5fSU5fVVNFIDEKKyNlbmRpZgorCiAjaWYgUExBVEZP
Uk0oTUFDKQogI2RlZmluZSBIQVZFX1NDRU5FS0lUIDEKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9nZW9sb2NhdGlvbi9HZW9sb2NhdGlvbkNsaWVudC5oIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9nZW9sb2NhdGlvbi9HZW9sb2NhdGlvbkNsaWVudC5oCmluZGV4
IDViYWYzYWQ4MmM1N2U1YWNiYTk2ZTNkZjBlZDYwZWJjNzU0YmNiMDUuLmE0ZTg2MjM2MjU1Njdl
OWFkZmViMDBkODI0MDAwYTI3N2RiZWFmMDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvZ2VvbG9jYXRpb24vR2VvbG9jYXRpb25DbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2dlb2xvY2F0aW9uL0dlb2xvY2F0aW9uQ2xpZW50LmgKQEAgLTM4LDcgKzM4LDcg
QEAgY2xhc3MgR2VvbG9jYXRpb25DbGllbnQgewogcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBn
ZW9sb2NhdGlvbkRlc3Ryb3llZCgpID0gMDsKIAotICAgIHZpcnR1YWwgdm9pZCBzdGFydFVwZGF0
aW5nKGNvbnN0IFN0cmluZyYgYXV0aG9yaXphdGlvblRva2VuKSA9IDA7CisgICAgdmlydHVhbCB2
b2lkIHN0YXJ0VXBkYXRpbmcoY29uc3QgU3RyaW5nJiBhdXRob3JpemF0aW9uVG9rZW4sIGJvb2wg
bmVlZHNIaWdoQWNjdXJhY3kpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgc3RvcFVwZGF0aW5nKCkg
PSAwOwogICAgIHZpcnR1YWwgdm9pZCByZXZva2VBdXRob3JpemF0aW9uVG9rZW4oY29uc3QgU3Ry
aW5nJikgeyB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZ2VvbG9jYXRp
b24vR2VvbG9jYXRpb25Db250cm9sbGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZ2Vv
bG9jYXRpb24vR2VvbG9jYXRpb25Db250cm9sbGVyLmNwcAppbmRleCAwNjE2MjkxNjBkOWJjYzdk
NWRhZjc0Y2ZjNGY4MTU1MGJhNDhkZThjLi4wN2RkNjVmM2MxYWVlNzllYjljNzMyODM2YTJkNWFh
ZDAxNzMzM2NmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2dlb2xvY2F0aW9u
L0dlb2xvY2F0aW9uQ29udHJvbGxlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9n
ZW9sb2NhdGlvbi9HZW9sb2NhdGlvbkNvbnRyb2xsZXIuY3BwCkBAIC01MiwxOSArNTIsMjUgQEAg
R2VvbG9jYXRpb25Db250cm9sbGVyOjp+R2VvbG9jYXRpb25Db250cm9sbGVyKCkKICAgICBtX2Ns
aWVudC5nZW9sb2NhdGlvbkRlc3Ryb3llZCgpOwogfQogCit2b2lkIEdlb2xvY2F0aW9uQ29udHJv
bGxlcjo6ZGlkTmF2aWdhdGVQYWdlKCkKK3sKKyAgICB3aGlsZSAoIW1fb2JzZXJ2ZXJzLmlzRW1w
dHkoKSkKKyAgICAgICAgcmVtb3ZlT2JzZXJ2ZXIobV9vYnNlcnZlcnMuYmVnaW4oKS0+Z2V0KCkp
OworfQorCiB2b2lkIEdlb2xvY2F0aW9uQ29udHJvbGxlcjo6YWRkT2JzZXJ2ZXIoR2VvbG9jYXRp
b24mIG9ic2VydmVyLCBib29sIGVuYWJsZUhpZ2hBY2N1cmFjeSkKIHsKLSAgICAvLyBUaGlzIG1h
eSBiZSBjYWxsZWQgbXVsdGlwbGUgdGltZXMgd2l0aCB0aGUgc2FtZSBvYnNlcnZlciwgdGhvdWdo
IHJlbW92ZU9ic2VydmVyKCkKLSAgICAvLyBpcyBjYWxsZWQgb25seSBvbmNlIHdpdGggZWFjaC4K
LSAgICBib29sIHdhc0VtcHR5ID0gbV9vYnNlcnZlcnMuaXNFbXB0eSgpOworICAgIGJvb2wgaGln
aEFjY3VyYWN5V2FzUmVxdWlyZWQgPSBuZWVkc0hpZ2hBY2N1cmFjeSgpOworCiAgICAgbV9vYnNl
cnZlcnMuYWRkKG9ic2VydmVyKTsKICAgICBpZiAoZW5hYmxlSGlnaEFjY3VyYWN5KQogICAgICAg
ICBtX2hpZ2hBY2N1cmFjeU9ic2VydmVycy5hZGQob2JzZXJ2ZXIpOwogCi0gICAgaWYgKGVuYWJs
ZUhpZ2hBY2N1cmFjeSkKLSAgICAgICAgbV9jbGllbnQuc2V0RW5hYmxlSGlnaEFjY3VyYWN5KHRy
dWUpOwotICAgIGlmICh3YXNFbXB0eSAmJiBtX3BhZ2UuaXNWaXNpYmxlKCkpCi0gICAgICAgIG1f
Y2xpZW50LnN0YXJ0VXBkYXRpbmcob2JzZXJ2ZXIuYXV0aG9yaXphdGlvblRva2VuKCkpOworICAg
IGlmIChtX2lzVXBkYXRpbmcpIHsKKyAgICAgICAgaWYgKCFoaWdoQWNjdXJhY3lXYXNSZXF1aXJl
ZCAmJiBlbmFibGVIaWdoQWNjdXJhY3kpCisgICAgICAgICAgICBtX2NsaWVudC5zZXRFbmFibGVI
aWdoQWNjdXJhY3kodHJ1ZSk7CisgICAgfSBlbHNlCisgICAgICAgIHN0YXJ0VXBkYXRpbmdJZk5l
Y2Vzc2FyeSgpOwogfQogCiB2b2lkIEdlb2xvY2F0aW9uQ29udHJvbGxlcjo6cmVtb3ZlT2JzZXJ2
ZXIoR2VvbG9jYXRpb24mIG9ic2VydmVyKQpAQCAtNzIsMTIgKzc4LDE3IEBAIHZvaWQgR2VvbG9j
YXRpb25Db250cm9sbGVyOjpyZW1vdmVPYnNlcnZlcihHZW9sb2NhdGlvbiYgb2JzZXJ2ZXIpCiAg
ICAgaWYgKCFtX29ic2VydmVycy5jb250YWlucyhvYnNlcnZlcikpCiAgICAgICAgIHJldHVybjsK
IAorICAgIGJvb2wgaGlnaEFjY3VyYWN5V2FzUmVxdWlyZWQgPSBuZWVkc0hpZ2hBY2N1cmFjeSgp
OworCiAgICAgbV9vYnNlcnZlcnMucmVtb3ZlKG9ic2VydmVyKTsKICAgICBtX2hpZ2hBY2N1cmFj
eU9ic2VydmVycy5yZW1vdmUob2JzZXJ2ZXIpOwogCisgICAgaWYgKCFtX2lzVXBkYXRpbmcpCisg
ICAgICAgIHJldHVybjsKKwogICAgIGlmIChtX29ic2VydmVycy5pc0VtcHR5KCkpCi0gICAgICAg
IG1fY2xpZW50LnN0b3BVcGRhdGluZygpOwotICAgIGVsc2UgaWYgKG1faGlnaEFjY3VyYWN5T2Jz
ZXJ2ZXJzLmlzRW1wdHkoKSkKKyAgICAgICAgc3RvcFVwZGF0aW5nSWZOZWNlc3NhcnkoKTsKKyAg
ICBlbHNlIGlmIChoaWdoQWNjdXJhY3lXYXNSZXF1aXJlZCAmJiAhbmVlZHNIaWdoQWNjdXJhY3ko
KSkKICAgICAgICAgbV9jbGllbnQuc2V0RW5hYmxlSGlnaEFjY3VyYWN5KGZhbHNlKTsKIH0KIApA
QCAtMTM5LDkgKzE1MCw5IEBAIHZvaWQgR2VvbG9jYXRpb25Db250cm9sbGVyOjphY3Rpdml0eVN0
YXRlRGlkQ2hhbmdlKE9wdGlvblNldDxBY3Rpdml0eVN0YXRlOjpGbGFnCiAgICAgYXV0byBjaGFu
Z2VkID0gb2xkQWN0aXZpdHlTdGF0ZSBeIG5ld0FjdGl2aXR5U3RhdGU7CiAgICAgaWYgKGNoYW5n
ZWQgJiBBY3Rpdml0eVN0YXRlOjpJc1Zpc2libGUgJiYgIW1fb2JzZXJ2ZXJzLmlzRW1wdHkoKSkg
ewogICAgICAgICBpZiAobmV3QWN0aXZpdHlTdGF0ZSAmIEFjdGl2aXR5U3RhdGU6OklzVmlzaWJs
ZSkKLSAgICAgICAgICAgIG1fY2xpZW50LnN0YXJ0VXBkYXRpbmcoKCptX29ic2VydmVycy5yYW5k
b20oKSktPmF1dGhvcml6YXRpb25Ub2tlbigpKTsKKyAgICAgICAgICAgIHN0YXJ0VXBkYXRpbmdJ
Zk5lY2Vzc2FyeSgpOwogICAgICAgICBlbHNlCi0gICAgICAgICAgICBtX2NsaWVudC5zdG9wVXBk
YXRpbmcoKTsKKyAgICAgICAgICAgIHN0b3BVcGRhdGluZ0lmTmVjZXNzYXJ5KCk7CiAgICAgfQog
CiAgICAgaWYgKCFtX3BhZ2UuaXNWaXNpYmxlKCkpCkBAIC0xNTIsNiArMTYzLDI0IEBAIHZvaWQg
R2VvbG9jYXRpb25Db250cm9sbGVyOjphY3Rpdml0eVN0YXRlRGlkQ2hhbmdlKE9wdGlvblNldDxB
Y3Rpdml0eVN0YXRlOjpGbGFnCiAgICAgICAgIG1fY2xpZW50LnJlcXVlc3RQZXJtaXNzaW9uKHBl
cm1pc3Npb25SZXF1ZXN0LmdldCgpKTsKIH0KIAordm9pZCBHZW9sb2NhdGlvbkNvbnRyb2xsZXI6
OnN0YXJ0VXBkYXRpbmdJZk5lY2Vzc2FyeSgpCit7CisgICAgaWYgKG1faXNVcGRhdGluZyB8fCAh
bV9wYWdlLmlzVmlzaWJsZSgpIHx8IG1fb2JzZXJ2ZXJzLmlzRW1wdHkoKSkKKyAgICAgICAgcmV0
dXJuOworCisgICAgbV9jbGllbnQuc3RhcnRVcGRhdGluZygoKm1fb2JzZXJ2ZXJzLnJhbmRvbSgp
KS0+YXV0aG9yaXphdGlvblRva2VuKCksIG5lZWRzSGlnaEFjY3VyYWN5KCkpOworICAgIG1faXNV
cGRhdGluZyA9IHRydWU7Cit9CisKK3ZvaWQgR2VvbG9jYXRpb25Db250cm9sbGVyOjpzdG9wVXBk
YXRpbmdJZk5lY2Vzc2FyeSgpCit7CisgICAgaWYgKCFtX2lzVXBkYXRpbmcpCisgICAgICAgIHJl
dHVybjsKKworICAgIG1fY2xpZW50LnN0b3BVcGRhdGluZygpOworICAgIG1faXNVcGRhdGluZyA9
IGZhbHNlOworfQorCiBjb25zdCBjaGFyKiBHZW9sb2NhdGlvbkNvbnRyb2xsZXI6OnN1cHBsZW1l
bnROYW1lKCkKIHsKICAgICByZXR1cm4gIkdlb2xvY2F0aW9uQ29udHJvbGxlciI7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2dlb2xvY2F0aW9uL0dlb2xvY2F0aW9uQ29udHJv
bGxlci5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9nZW9sb2NhdGlvbi9HZW9sb2NhdGlvbkNv
bnRyb2xsZXIuaAppbmRleCA0MmY1ZDA2MmRiNmYwOWM2NjAxMTFkNjZkOWYwZmNmZmYzYjIwNzQw
Li5iYmZmNTc1ZWIwNTgzMjQwNzgwZDNiNDFhOTY3NDJjNmIxZDcyNDhlIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2dlb2xvY2F0aW9uL0dlb2xvY2F0aW9uQ29udHJvbGxlci5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZ2VvbG9jYXRpb24vR2VvbG9jYXRpb25Db250
cm9sbGVyLmgKQEAgLTMwLDYgKzMwLDcgQEAKICNpbmNsdWRlICJBY3Rpdml0eVN0YXRlQ2hhbmdl
T2JzZXJ2ZXIuaCIKICNpbmNsdWRlICJHZW9sb2NhdGlvbi5oIgogI2luY2x1ZGUgIlBhZ2UuaCIK
KyNpbmNsdWRlICJSZWdpc3RyYWJsZURvbWFpbi5oIgogI2luY2x1ZGUgPHd0Zi9IYXNoU2V0Lmg+
CiAjaW5jbHVkZSA8d3RmL05vbmNvcHlhYmxlLmg+CiAjaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgpA
QCAtNjUsNiArNjYsOCBAQCBwdWJsaWM6CiAKICAgICB2b2lkIHJldm9rZUF1dGhvcml6YXRpb25U
b2tlbihjb25zdCBTdHJpbmcmKTsKIAorICAgIHZvaWQgZGlkTmF2aWdhdGVQYWdlKCk7CisKIHBy
aXZhdGU6CiAgICAgUGFnZSYgbV9wYWdlOwogICAgIEdlb2xvY2F0aW9uQ2xpZW50JiBtX2NsaWVu
dDsKQEAgLTczLDYgKzc2LDExIEBAIHByaXZhdGU6CiAKICAgICBzdGQ6Om9wdGlvbmFsPEdlb2xv
Y2F0aW9uUG9zaXRpb25EYXRhPiBtX2xhc3RQb3NpdGlvbjsKIAorICAgIGJvb2wgbmVlZHNIaWdo
QWNjdXJhY3koKSBjb25zdCB7IHJldHVybiAhbV9oaWdoQWNjdXJhY3lPYnNlcnZlcnMuaXNFbXB0
eSgpOyB9CisKKyAgICB2b2lkIHN0YXJ0VXBkYXRpbmdJZk5lY2Vzc2FyeSgpOworICAgIHZvaWQg
c3RvcFVwZGF0aW5nSWZOZWNlc3NhcnkoKTsKKwogICAgIHR5cGVkZWYgSGFzaFNldDxSZWY8R2Vv
bG9jYXRpb24+PiBPYnNlcnZlcnNTZXQ7CiAgICAgLy8gQWxsIG9ic2VydmVyczsgYm90aCB0aG9z
ZSByZXF1ZXN0aW5nIGhpZ2ggYWNjdXJhY3kgYW5kIHRob3NlIG5vdC4KICAgICBPYnNlcnZlcnNT
ZXQgbV9vYnNlcnZlcnM7CkBAIC04MCw2ICs4OCw5IEBAIHByaXZhdGU6CiAKICAgICAvLyBXaGls
ZSB0aGUgcGFnZSBpcyBub3QgdmlzaWJsZSwgd2UgcGVuZCBwZXJtaXNzaW9uIHJlcXVlc3RzLgog
ICAgIEhhc2hTZXQ8UmVmPEdlb2xvY2F0aW9uPj4gbV9wZW5kaW5nUGVybWlzc2lvblJlcXVlc3Q7
CisKKyAgICBSZWdpc3RyYWJsZURvbWFpbiBtX3JlZ2lzdHJhYmxlRG9tYWluOworICAgIGJvb2wg
bV9pc1VwZGF0aW5nIHsgZmFsc2UgfTsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZ2VvbG9jYXRpb24vR2VvbG9jYXRpb25Q
b3NpdGlvbkRhdGEuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZ2VvbG9jYXRpb24vR2VvbG9j
YXRpb25Qb3NpdGlvbkRhdGEuaAppbmRleCA5MjYyMjE3MGM4YWFkNjk4OWI4YTEyY2U0ODM1NmRj
Njg3YmY2ZTM1Li5jYzIxODBhODM3ZDI3NDNjMWZiZjc2MWM0MTBlMWM3ZWJmZWFlZTdkIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2dlb2xvY2F0aW9uL0dlb2xvY2F0aW9uUG9z
aXRpb25EYXRhLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9nZW9sb2NhdGlvbi9HZW9s
b2NhdGlvblBvc2l0aW9uRGF0YS5oCkBAIC0yOSw3ICsyOSw3IEBACiAjaW5jbHVkZSA8d3RmL1Jl
Zi5oPgogI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CiAKLSNpZiBQTEFURk9STShJT1NfRkFN
SUxZKQorI2lmIFBMQVRGT1JNKENPQ09BKQogT0JKQ19DTEFTUyBDTExvY2F0aW9uOwogI2VuZGlm
CiAKQEAgLTQ3LDcgKzQ3LDcgQEAgcHVibGljOgogICAgIHsKICAgICB9CiAKLSNpZiBQTEFURk9S
TShJT1NfRkFNSUxZKQorI2lmIFBMQVRGT1JNKENPQ09BKQogICAgIFdFQkNPUkVfRVhQT1JUIGV4
cGxpY2l0IEdlb2xvY2F0aW9uUG9zaXRpb25EYXRhKENMTG9jYXRpb24qKTsKICNlbmRpZgogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2dlb2xvY2F0aW9uL2NvY29hL0dlb2xv
Y2F0aW9uUG9zaXRpb25EYXRhQ29jb2EubW0gYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2dlb2xv
Y2F0aW9uL2NvY29hL0dlb2xvY2F0aW9uUG9zaXRpb25EYXRhQ29jb2EubW0KbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
ODFlNDBmMTY0MmIyNjg5NTJiN2IwMzk4ZTRlOGZlMmI4Y2Q1ODBkMQotLS0gL2Rldi9udWxsCisr
KyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZ2VvbG9jYXRpb24vY29jb2EvR2VvbG9jYXRpb25Q
b3NpdGlvbkRhdGFDb2NvYS5tbQpAQCAtMCwwICsxLDUzIEBACisvKgorICogQ29weXJpZ2h0IChD
KSAyMDE3IEFwcGxlIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
KyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAy
LiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkK
KyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJ
TiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxF
IEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1Q
TEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExP
U1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2ltcG9ydCAiY29uZmlnLmgiCisjaW1wb3J0ICJH
ZW9sb2NhdGlvblBvc2l0aW9uLmgiCisKKyNpbXBvcnQgPENvcmVMb2NhdGlvbi9DTExvY2F0aW9u
Lmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworR2VvbG9jYXRpb25Qb3NpdGlvbkRhdGE6Okdl
b2xvY2F0aW9uUG9zaXRpb25EYXRhKENMTG9jYXRpb24gKmxvY2F0aW9uKQorICAgIDogdGltZXN0
YW1wKGxvY2F0aW9uLnRpbWVzdGFtcC50aW1lSW50ZXJ2YWxTaW5jZTE5NzApCisgICAgLCBsYXRp
dHVkZShsb2NhdGlvbi5jb29yZGluYXRlLmxhdGl0dWRlKQorICAgICwgbG9uZ2l0dWRlKGxvY2F0
aW9uLmNvb3JkaW5hdGUubG9uZ2l0dWRlKQorICAgICwgYWNjdXJhY3kobG9jYXRpb24uaG9yaXpv
bnRhbEFjY3VyYWN5KQoreworICAgIGlmIChsb2NhdGlvbi52ZXJ0aWNhbEFjY3VyYWN5ID49IDAu
MCkgeworICAgICAgICBhbHRpdHVkZSA9IGxvY2F0aW9uLmFsdGl0dWRlOworICAgICAgICBhbHRp
dHVkZUFjY3VyYWN5ID0gbG9jYXRpb24udmVydGljYWxBY2N1cmFjeTsKKyAgICB9CisgICAgaWYg
KGxvY2F0aW9uLnNwZWVkID49IDAuMCkKKyAgICAgICAgc3BlZWQgPSBsb2NhdGlvbi5zcGVlZDsK
KyAgICBpZiAobG9jYXRpb24uY291cnNlID49IDAuMCkKKyAgICAgICAgaGVhZGluZyA9IGxvY2F0
aW9uLmNvdXJzZTsKKyNpZiAhUExBVEZPUk0oTUFDQ0FUQUxZU1QpCisgICAgaWYgKGxvY2F0aW9u
LmZsb29yKQorICAgICAgICBmbG9vckxldmVsID0gbG9jYXRpb24uZmxvb3IubGV2ZWw7CisjZW5k
aWYKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9nZW9sb2NhdGlvbi9pb3MvR2VvbG9jYXRpb25Qb3NpdGlvbkRhdGFJT1MubW0g
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2dlb2xvY2F0aW9uL2lvcy9HZW9sb2NhdGlvblBvc2l0
aW9uRGF0YUlPUy5tbQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOThkOWEyNDIxZTdm
MjMwOWI0ZjYyM2IxNGQ3Y2JlMmI2YzdlMDQ1Yy4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2dlb2xvY2F0aW9uL2lv
cy9HZW9sb2NhdGlvblBvc2l0aW9uRGF0YUlPUy5tbQorKysgL2Rldi9udWxsCkBAIC0xLDU3ICsw
LDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTcgQXBwbGUgSW5jLiBBbGwgUmlnaHRzIFJl
c2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICog
MS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0g
KiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQ
TEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKLSAqIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICog
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IK
LSAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLCBTUEVDSUFMLAotICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMg
KElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCi0gKiBQUk9GSVRT
OyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhF
T1JZCi0gKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaW1w
b3J0ICJjb25maWcuaCIKLSNpbXBvcnQgIkdlb2xvY2F0aW9uUG9zaXRpb24uaCIKLQotI2lmIFBM
QVRGT1JNKElPU19GQU1JTFkpCi0KLSNpbXBvcnQgPENvcmVMb2NhdGlvbi9DTExvY2F0aW9uLmg+
Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotR2VvbG9jYXRpb25Qb3NpdGlvbkRhdGE6Okdlb2xv
Y2F0aW9uUG9zaXRpb25EYXRhKENMTG9jYXRpb24qIGxvY2F0aW9uKQotICAgIDogdGltZXN0YW1w
KGxvY2F0aW9uLnRpbWVzdGFtcC50aW1lSW50ZXJ2YWxTaW5jZTE5NzApCi0gICAgLCBsYXRpdHVk
ZShsb2NhdGlvbi5jb29yZGluYXRlLmxhdGl0dWRlKQotICAgICwgbG9uZ2l0dWRlKGxvY2F0aW9u
LmNvb3JkaW5hdGUubG9uZ2l0dWRlKQotICAgICwgYWNjdXJhY3kobG9jYXRpb24uaG9yaXpvbnRh
bEFjY3VyYWN5KQotewotICAgIGlmIChsb2NhdGlvbi52ZXJ0aWNhbEFjY3VyYWN5ID49IDAuMCkg
ewotICAgICAgICBhbHRpdHVkZSA9IGxvY2F0aW9uLmFsdGl0dWRlOwotICAgICAgICBhbHRpdHVk
ZUFjY3VyYWN5ID0gbG9jYXRpb24udmVydGljYWxBY2N1cmFjeTsKLSAgICB9Ci0gICAgaWYgKGxv
Y2F0aW9uLnNwZWVkID49IDAuMCkKLSAgICAgICAgc3BlZWQgPSBsb2NhdGlvbi5zcGVlZDsKLSAg
ICBpZiAobG9jYXRpb24uY291cnNlID49IDAuMCkKLSAgICAgICAgaGVhZGluZyA9IGxvY2F0aW9u
LmNvdXJzZTsKLSNpZiAhUExBVEZPUk0oTUFDQ0FUQUxZU1QpCi0gICAgaWYgKGxvY2F0aW9uLmZs
b29yKQotICAgICAgICBmbG9vckxldmVsID0gbG9jYXRpb24uZmxvb3IubGV2ZWw7Ci0jZW5kaWYK
LX0KLQotfQotCi0jZW5kaWYgLy8gUExBVEZPUk0oSU9TX0ZBTUlMWSkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL1NvdXJjZXNDb2NvYS50eHQgYi9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzQ29j
b2EudHh0CmluZGV4IGM3YTJkYmRhYTBlNDBkZWNlYzAyODQ3Njk0MTQ5NjJhMGZmY2U1YTUuLjQz
ZGYxY2NmMWY0OWI0MDAwNWIyYWMyNWIyNDU1ZmU1YmZmOGE3ZGMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL1NvdXJjZXNDb2NvYS50eHQKKysrIGIvU291cmNlL1dlYkNvcmUvU291cmNlc0Nv
Y29hLnR4dApAQCAtMjUxLDYgKzI1MSw3IEBAIHBsYXRmb3JtL2NmL01lZGlhQWNjZXNzaWJpbGl0
eVNvZnRMaW5rLmNwcAogcGxhdGZvcm0vY2YvUnVuTG9vcE9ic2VydmVyLmNwcAogcGxhdGZvcm0v
Y2YvU2hhcmVkQnVmZmVyQ0YuY3BwCiBwbGF0Zm9ybS9jb2NvYS9Db250ZW50RmlsdGVyVW5ibG9j
a0hhbmRsZXJDb2NvYS5tbSBAbm8tdW5pZnkKK3BsYXRmb3JtL2NvY29hL0NvcmVMb2NhdGlvbkdl
b2xvY2F0aW9uUHJvdmlkZXIubW0KIHBsYXRmb3JtL2NvY29hL0NvcmVWaWRlb1NvZnRMaW5rLmNw
cAogcGxhdGZvcm0vY29jb2EvRHJhZ0RhdGFDb2NvYS5tbQogcGxhdGZvcm0vY29jb2EvRHJhZ0lt
YWdlQ29jb2EubW0KQEAgLTMwNyw3ICszMDgsNyBAQCBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5k
YXRpb24vTWVkaWFTZWxlY3Rpb25Hcm91cEFWRk9iakMubW0KIHBsYXRmb3JtL2dyYXBoaWNzL2F2
Zm91bmRhdGlvbi9TYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXIuY3BwCiBwbGF0Zm9ybS9ncmFwaGlj
cy9hdmZvdW5kYXRpb24vV2ViTWVkaWFTZXNzaW9uTWFuYWdlck1hYy5jcHAKIHBsYXRmb3JtL2dy
YXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0FWQXNzZXRNSU1FVHlwZUNhY2hlLm1tCi1wbGF0Zm9y
bS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9BVkFzc2V0VHJhY2tVdGlsaXRpZXMubW0KK3Bs
YXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0FWQXNzZXRUcmFja1V0aWxpdGllcy5t
bSBAbm8tdW5pZnkKIHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0FWT3V0cHV0
RGV2aWNlTWVudUNvbnRyb2xsZXJUYXJnZXRQaWNrZXIubW0gQG5vLXVuaWZ5CiBwbGF0Zm9ybS9n
cmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9BVlJvdXRlUGlja2VyVmlld1RhcmdldFBpY2tlci5t
bQogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvQVZTdHJlYW1EYXRhUGFyc2Vy
TUlNRVR5cGVDYWNoZS5tbQpAQCAtMzE4LDcgKzMxOSw3IEBAIHBsYXRmb3JtL2dyYXBoaWNzL2F2
Zm91bmRhdGlvbi9vYmpjL0NETVNlc3Npb25BVkZvdW5kYXRpb25PYmpDLm1tCiBwbGF0Zm9ybS9n
cmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9DRE1TZXNzaW9uQVZTdHJlYW1TZXNzaW9uLm1tCiBw
bGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9DRE1TZXNzaW9uTWVkaWFTb3VyY2VB
VkZPYmpDLm1tCiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9JbWFnZURlY29k
ZXJBVkZPYmpDLm1tCi1wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9JbmJhbmRU
ZXh0VHJhY2tQcml2YXRlQVZGT2JqQy5tbQorcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9u
L29iamMvSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUFWRk9iakMubW0gQG5vLXVuaWZ5CiBwbGF0Zm9y
bS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9JbmJhbmRDaGFwdGVyVHJhY2tQcml2YXRlQVZG
T2JqQy5tbSBAbm8tdW5pZnkKIHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0xv
Y2FsU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyLm1tCiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5k
YXRpb24vb2JqYy9NZWRpYVBsYXliYWNrVGFyZ2V0UGlja2VyTWFjLm1tCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2Uv
V2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggNzI4YzEzZDI2
YjI1Y2I3YjVlOGY0Y2EwNzg1NGE4YWVmODE3MzRmNy4uNmY5ZWY4ZmQ2NDkxZThjMjY5ZWQ2Nzg3
NWRiNDAwNDE5NjVkYmU1NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMTM1Myw2ICsxMzUzLDcgQEAKIAkJNDY4MzQ0RTAxRURE
RkFBQTAwQjc3OTVCIC8qIERPTVJlY3RMaXN0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA0NjgzNDRERTFFRERGQTVGMDBCNzc5NUIgLyogRE9NUmVjdExp
c3QuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk0
NjgzREY0MDI3NjdERjk4MDA3RDAwQzggLyogSlNTaGFkb3dSZWFsbUdsb2JhbFNjb3BlQmFzZS5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDY4M0RGM0Uy
NzY3REY5ODAwN0QwMEM4IC8qIEpTU2hhZG93UmVhbG1HbG9iYWxTY29wZUJhc2UuaCAqLzsgfTsK
IAkJNDY4M0RGNDEyNzY3RTkxQTAwN0QwMEM4IC8qIFNoYWRvd1JlYWxtR2xvYmFsU2NvcGUuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ2ODNERjNCMjc2
N0RGMjYwMDdEMDBDOCAvKiBTaGFkb3dSZWFsbUdsb2JhbFNjb3BlLmggKi87IHNldHRpbmdzID0g
e0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJNDY4OEU5ODAyN0I2QjQ1MDAwNTY3
Q0QyIC8qIENvcmVMb2NhdGlvbkdlb2xvY2F0aW9uUHJvdmlkZXIuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ2ODhFOTdGMjdCNkI0NDQwMDU2N0NEMiAv
KiBDb3JlTG9jYXRpb25HZW9sb2NhdGlvblByb3ZpZGVyLmggKi87IHNldHRpbmdzID0ge0FUVFJJ
QlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNDY4OEVFM0MyNkREMjYxMDAwMkFGNUM0IC8q
IENyb3NzT3JpZ2luTW9kZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gNDY4OEVFM0EyNkREMjYwQzAwMkFGNUM0IC8qIENyb3NzT3JpZ2luTW9kZS5oICov
OyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTQ2OTQzREM5
Mjc2M0Y4MTcwMDRCNjEwRSAvKiBTaGFyZWRXb3JrZXJPYmplY3RJZGVudGlmaWVyLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0Njk0M0RDNzI3NjNGODBF
MDA0QjYxMEUgLyogU2hhcmVkV29ya2VyT2JqZWN0SWRlbnRpZmllci5oICovOyBzZXR0aW5ncyA9
IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTQ2OTg1RjIzMjdBNEE2QUQwMDk3
QTMyQiAvKiBTaGFyZWRXb3JrZXJLZXkuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDQ2OTg1RjIyMjdBNEE2ODYwMDk3QTMyQiAvKiBTaGFyZWRXb3JrZXJL
ZXkuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwpAQCAt
MTM3MCw2ICsxMzcxLDcgQEAKIAkJNDZCOTUxOTkyMDdENjM0RDAwQTdEMkREIC8qIFJlbW90ZURP
TVdpbmRvdy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
NDZCOTUxOEUyMDdENjMyQTAwQTdEMkREIC8qIFJlbW90ZURPTVdpbmRvdy5oICovOyBzZXR0aW5n
cyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTQ2Qjk1MTlBMjA3RDYzNTQw
MEE3RDJERCAvKiBSZW1vdGVGcmFtZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gNDZCOTUxOTIyMDdENjMyRTAwQTdEMkREIC8qIFJlbW90ZUZyYW1lLmgg
Ki87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNDZCOTVC
RjUyMjMxQ0ZENjAwNTNBNTA0IC8qIERldmljZU9yaWVudGF0aW9uQW5kTW90aW9uQWNjZXNzQ29u
dHJvbGxlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
NDZCOTVCRjQyMjMxQ0ZCODAwNTNBNTA0IC8qIERldmljZU9yaWVudGF0aW9uQW5kTW90aW9uQWNj
ZXNzQ29udHJvbGxlci5oICovOyB9OworCQk0NkJBNDlCODI3QkI0NDMzMDA3N0Y2M0YgLyogQVZB
c3NldFRyYWNrVXRpbGl0aWVzLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gQ0RFQ0E4OTgxRURGNDQ3RDAwRENCMDhCIC8qIEFWQXNzZXRUcmFja1V0aWxp
dGllcy5tbSAqLzsgfTsKIAkJNDZCQ0JCQzIyMDg1MDA4RjAwNzEwNjM4IC8qIEpTUmVtb3RlRE9N
V2luZG93QmFzZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gNDZCQ0JCQzAyMDg1MDA3RjAwNzEwNjM4IC8qIEpTUmVtb3RlRE9NV2luZG93QmFzZS5oICov
OyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTQ2QkQwNUM1
MjVCQjZFNTkwMDIyNUYzMCAvKiBBZGRFdmVudExpc3RlbmVyT3B0aW9ucy5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDZCRDA1QzIyNUJCNkU0RTAwMjI1
RjMwIC8qIEFkZEV2ZW50TGlzdGVuZXJPcHRpb25zLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVU
RVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNDZCRDA1QzYyNUJCNkU2QzAwMjI1RjMwIC8qIEV2
ZW50TGlzdGVuZXJPcHRpb25zLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA0NkJEMDVDMzI1QkI2RTRFMDAyMjVGMzAgLyogRXZlbnRMaXN0ZW5lck9wdGlv
bnMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwpAQCAt
MTM3OCw2ICsxMzgwLDcgQEAKIAkJNDZDNjk2Q0IxRTcyMDVGNzAwNTk3OTM3IC8qIENQVU1vbml0
b3IuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ2QzY5
NkM5MUU3MjA1RTQwMDU5NzkzNyAvKiBDUFVNb25pdG9yLmggKi87IHNldHRpbmdzID0ge0FUVFJJ
QlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNDZDNjk2Q0MxRTcyMDVGQzAwNTk3OTM3IC8q
IENQVU1vbml0b3IuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gNDZDNjk2Q0ExRTcyMDVFNDAwNTk3OTM3IC8qIENQVU1vbml0b3IuY3BwICovOyB9Owog
CQk0NkM4M0VGRTFBOUJCRTI5MDBBNzlBNDEgLyogR2VvTm90aWZpZXIuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ2QzgzRUZDMUE5QkJFMjkwMEE3OUE0
MSAvKiBHZW9Ob3RpZmllci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUs
ICk7IH07IH07CisJCTQ2Q0E5NDMxMjdCODY5NTgwMEY0RjVGRiAvKiBJbmJhbmRUZXh0VHJhY2tQ
cml2YXRlQVZGT2JqQy5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDA3QUE2QjZBMTY2RDAxOTUwMEQ0NTY3MSAvKiBJbmJhbmRUZXh0VHJhY2tQcml2YXRl
QVZGT2JqQy5tbSAqLzsgfTsKIAkJNDZDQTlDNDQxRjk3QkJFOTAwNENGQzNBIC8qIFZpc2liaWxp
dHlTdGF0ZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
NDZDQTlDNDExRjk3QkJFNzAwNENGQzNBIC8qIFZpc2liaWxpdHlTdGF0ZS5oICovOyBzZXR0aW5n
cyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTQ2Q0Y1MDRBMjdBQjFFQTQw
MDcwREJDOCAvKiBTaGFyZWRXb3JrZXJDb250ZXh0TWFuYWdlci5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDZDRjUwNDgyN0FCMUVBMTAwNzBEQkM4IC8q
IFNoYXJlZFdvcmtlckNvbnRleHRNYW5hZ2VyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMg
PSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNDZEMDAwNDAyNkEwRkVCMzAwRDFCRjFFIC8qIFN1Ym1p
dEV2ZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0
NkQwMDAzRTI2QTBGRTZGMDBEMUJGMUUgLyogU3VibWl0RXZlbnQuaCAqLzsgfTsKQEAgLTI2OTIs
NyArMjY5NSw3IEBACiAJCTgzNzY1Rjk1MURBQzUyMkYwMEMwNjUzNyAvKiBNb3VzZUV2ZW50SW5p
dC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODM3NjVG
OTQxREFDNTIxODAwQzA2NTM3IC8qIE1vdXNlRXZlbnRJbml0LmggKi87IHNldHRpbmdzID0ge0FU
VFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJODM3ODg3ODIyNEQ4QTYwOTAwMEQ0QTVC
IC8qIEF1ZGlvQnVmZmVyU291cmNlT3B0aW9ucy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gODM3ODg3N0YyNEQ4QTVGQzAwMEQ0QTVCIC8qIEF1ZGlvQnVm
ZmVyU291cmNlT3B0aW9ucy5oICovOyB9OwogCQk4Mzc5MzYzRjFGQkJCMEI0MDBDODAyM0MgLyog
U2VydmljZVdvcmtlckNsaWVudERhdGEuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDgzNzkzNjNFMUZCQkIwQTUwMEM4MDIzQyAvKiBTZXJ2aWNlV29ya2Vy
Q2xpZW50RGF0YS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07
IH07Ci0JCTgzNzk2NENGMUY4REI2OUQwMDIxOEVBMCAvKiBHZW9sb2NhdGlvblBvc2l0aW9uRGF0
YUlPUy5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDgz
Nzk2NENFMUY4REI2OUEwMDIxOEVBMCAvKiBHZW9sb2NhdGlvblBvc2l0aW9uRGF0YUlPUy5tbSAq
LzsgfTsKKwkJODM3OTY0Q0YxRjhEQjY5RDAwMjE4RUEwIC8qIEdlb2xvY2F0aW9uUG9zaXRpb25E
YXRhQ29jb2EubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA4Mzc5NjRDRTFGOERCNjlBMDAyMThFQTAgLyogR2VvbG9jYXRpb25Qb3NpdGlvbkRhdGFDb2Nv
YS5tbSAqLzsgfTsKIAkJODM3QTgwMTMxRTFFMTI3MzAwMDI2QjlGIC8qIExvY2FsaXphYmxlLnN0
cmluZ3NkaWN0IGluIFJlc291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA4MzdBODAxMTFFMUUxMjczMDAwMjZCOUYgLyogTG9jYWxpemFibGUuc3RyaW5nc2RpY3QgKi87
IH07CiAJCTgzN0MwQjc2MjREQjM4NTAwMDVENTk1OSAvKiBEeW5hbWljc0NvbXByZXNzb3JPcHRp
b25zLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4MzdD
MEI3MzI0REIzODQyMDA1RDU5NTkgLyogRHluYW1pY3NDb21wcmVzc29yT3B0aW9ucy5oICovOyB9
OwogCQk4MzdGQjM0NTFGOUVBMDZEMDBEMEZDMzEgLyogRXh0ZW5kYWJsZU1lc3NhZ2VFdmVudC5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODM3RkIzNDAx
RjlFQTA2NjAwRDBGQzMxIC8qIEV4dGVuZGFibGVNZXNzYWdlRXZlbnQuaCAqLzsgfTsKQEAgLTky
NzEsNiArOTI3NCw4IEBACiAJCTQ2ODNERjNDMjc2N0RGMjYwMDdEMDBDOCAvKiBTaGFkb3dSZWFs
bUdsb2JhbFNjb3BlLmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25G
aWxlVHlwZSA9IHRleHQ7IHBhdGggPSBTaGFkb3dSZWFsbUdsb2JhbFNjb3BlLmlkbDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDY4M0RGM0QyNzY3REY5ODAwN0QwMEM4IC8qIEpTU2hh
ZG93UmVhbG1HbG9iYWxTY29wZUJhc2UuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3Bw
OyBwYXRoID0gSlNTaGFkb3dSZWFsbUdsb2JhbFNjb3BlQmFzZS5jcHA7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCTQ2ODNERjNFMjc2N0RGOTgwMDdEMDBDOCAvKiBKU1NoYWRvd1JlYWxt
R2xvYmFsU2NvcGVCYXNlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTU2hh
ZG93UmVhbG1HbG9iYWxTY29wZUJhc2UuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJ
NDY4OEU5N0QyN0I2QjQ0MzAwNTY3Q0QyIC8qIENvcmVMb2NhdGlvbkdlb2xvY2F0aW9uUHJvdmlk
ZXIubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBDb3JlTG9jYXRpb25HZW9sb2NhdGlvblByb3Zp
ZGVyLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk0Njg4RTk3RjI3QjZCNDQ0MDA1
NjdDRDIgLyogQ29yZUxvY2F0aW9uR2VvbG9jYXRpb25Qcm92aWRlci5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBDb3JlTG9jYXRpb25HZW9sb2NhdGlvblByb3ZpZGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCTQ2ODhFRTNBMjZERDI2MEMwMDJBRjVDNCAvKiBDcm9zc09yaWdpbk1vZGUuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gQ3Jvc3NPcmlnaW5Nb2RlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTQ2OEI4QkRFMjVDQzg0OTMwMEY2NzgyMiAvKiBKU0Jhc2VBdWRpb0NvbnRleHRDdXN0
b20uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNCYXNlQXVkaW9Db250ZXh0Q3VzdG9tLmNwcDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDY5NDNEQzcyNzYzRjgwRTAwNEI2MTBFIC8q
IFNoYXJlZFdvcmtlck9iamVjdElkZW50aWZpZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU2hhcmVkV29y
a2VyT2JqZWN0SWRlbnRpZmllci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtOTM4
NSw4ICs5MzkwLDggQEAKIAkJNDk0QkQ3OTQwRjU1QzhFRTAwNzQ3ODI4IC8qIFdlYktpdFBvaW50
LmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBXZWJLaXRQb2ludC5pZGw7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCTQ5NEJENzlCMEY1NUM5NEMwMDc0NzgyOCAvKiBKU1dlYktpdFBv
aW50LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTV2ViS2l0UG9p
bnQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0OTRCRDc5QzBGNTVDOTRDMDA3
NDc4MjggLyogSlNXZWJLaXRQb2ludC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBKU1dlYktpdFBvaW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTQ5NEVCRDA2
MjdBQTlDNTMwMEY0ODQ0RiAvKiBQREZEb2N1bWVudC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBQREZEb2N1
bWVudC5oOyBwYXRoID0gUERGRG9jdW1lbnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
LQkJNDk0RUJEMDgyN0FBOUM1MzAwRjQ4NDRGIC8qIFBERkRvY3VtZW50LmNwcCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNw
cDsgbmFtZSA9IFBERkRvY3VtZW50LmNwcDsgcGF0aCA9IFBERkRvY3VtZW50LmNwcDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNDk0RUJEMDYyN0FBOUM1MzAwRjQ4NDRGIC8qIFBERkRv
Y3VtZW50LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFBERkRvY3VtZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CisJCTQ5NEVCRDA4MjdBQTlDNTMwMEY0ODQ0RiAvKiBQREZEb2N1bWVudC5jcHAg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5jcHA7IHBhdGggPSBQREZEb2N1bWVudC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCTQ5NTg3ODFGMTJBNTdEREYwMDcyMzhBQyAvKiBQbGF0Zm9ybUNBQW5pbWF0aW9u
Q29jb2EubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBQbGF0Zm9y
bUNBQW5pbWF0aW9uQ29jb2EubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQ5NTg3
ODIwMTJBNTdEREYwMDcyMzhBQyAvKiBQbGF0Zm9ybUNBTGF5ZXJDb2NvYS5tbSAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFBsYXRmb3JtQ0FMYXllckNvY29hLm1tOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0OTY5QjBGMDEzRDBCMzNGMDBERjM1MjEgLyog
SGl0VGVzdGluZ1RyYW5zZm9ybVN0YXRlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNw
cDsgcGF0aCA9IEhpdFRlc3RpbmdUcmFuc2Zvcm1TdGF0ZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CkBAIC0xMjE4Nyw3ICsxMjE5Miw3IEBACiAJCTgzNzg4NzgxMjREOEE1RkMwMDBE
NEE1QiAvKiBBdWRpb0J1ZmZlclNvdXJjZU9wdGlvbnMuaWRsICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IEF1ZGlvQnVmZmVyU291
cmNlT3B0aW9ucy5pZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTgzNzkzNjNDMUZC
QkIwQTQwMEM4MDIzQyAvKiBTZXJ2aWNlV29ya2VyQ2xpZW50RGF0YS5jcHAgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBTZXJ2aWNlV29ya2VyQ2xpZW50RGF0YS5jcHA7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTgzNzkzNjNFMUZCQkIwQTUwMEM4MDIzQyAvKiBT
ZXJ2aWNlV29ya2VyQ2xpZW50RGF0YS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBTZXJ2aWNlV29ya2VyQ2xpZW50RGF0YS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owot
CQk4Mzc5NjRDRTFGOERCNjlBMDAyMThFQTAgLyogR2VvbG9jYXRpb25Qb3NpdGlvbkRhdGFJT1Mu
bW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IG5hbWUgPSBHZW9sb2NhdGlvblBv
c2l0aW9uRGF0YUlPUy5tbTsgcGF0aCA9IE1vZHVsZXMvZ2VvbG9jYXRpb24vaW9zL0dlb2xvY2F0
aW9uUG9zaXRpb25EYXRhSU9TLm1tOyBzb3VyY2VUcmVlID0gU09VUkNFX1JPT1Q7IH07CisJCTgz
Nzk2NENFMUY4REI2OUEwMDIxOEVBMCAvKiBHZW9sb2NhdGlvblBvc2l0aW9uRGF0YUNvY29hLm1t
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBuYW1lID0gR2VvbG9jYXRpb25Qb3Np
dGlvbkRhdGFDb2NvYS5tbTsgcGF0aCA9IE1vZHVsZXMvZ2VvbG9jYXRpb24vY29jb2EvR2VvbG9j
YXRpb25Qb3NpdGlvbkRhdGFDb2NvYS5tbTsgc291cmNlVHJlZSA9IFNPVVJDRV9ST09UOyB9Owog
CQk4MzdBODAxMjFFMUUxMjczMDAwMjZCOUYgLyogZW4gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0LnBsaXN0LnN0cmluZ3NkaWN0OyBuYW1lID0g
ZW47IHBhdGggPSBlbi5scHJvai9Mb2NhbGl6YWJsZS5zdHJpbmdzZGljdDsgc291cmNlVHJlZSA9
IFNPVVJDRV9ST09UOyB9OwogCQk4MzdCN0QxRjFEQzNGNTRDMDBEMDUxRkMgLyogVmFsaWRhdGlv
bkJ1YmJsZUlPUy5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFZh
bGlkYXRpb25CdWJibGVJT1MubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTgzN0Mw
QjczMjREQjM4NDIwMDVENTk1OSAvKiBEeW5hbWljc0NvbXByZXNzb3JPcHRpb25zLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IER5bmFtaWNzQ29tcHJlc3Nvck9wdGlvbnMuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKQEAgLTIxNjA5LDYgKzIxNjE0LDE0IEBACiAJCQlwYXRoID0gY29udGV4dDsKIAkJ
CXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7CiAJCX07CisJCTQ2NUMzRDE5MjdCOTkxQzgwMDIxMzAy
RiAvKiBjb2NvYSAqLyA9IHsKKwkJCWlzYSA9IFBCWEdyb3VwOworCQkJY2hpbGRyZW4gPSAoCisJ
CQkJODM3OTY0Q0UxRjhEQjY5QTAwMjE4RUEwIC8qIEdlb2xvY2F0aW9uUG9zaXRpb25EYXRhQ29j
b2EubW0gKi8sCisJCQkpOworCQkJcGF0aCA9IGNvY29hOworCQkJc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsKKwkJfTsKIAkJNDY2OTRDREUyNzU5NDQ2RDAwRTMxNTBFIC8qIHNoYXJlZCAqLyA9IHsK
IAkJCWlzYSA9IFBCWEdyb3VwOwogCQkJY2hpbGRyZW4gPSAoCkBAIC0yNTEwNCwxNCArMjUxMTcs
NiBAQAogCQkJcGF0aCA9IGJlYWNvbjsKIAkJCXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7CiAJCX07
Ci0JCTgzNzk2NENDMUY4REI2N0QwMDIxOEVBMCAvKiBpb3MgKi8gPSB7Ci0JCQlpc2EgPSBQQlhH
cm91cDsKLQkJCWNoaWxkcmVuID0gKAotCQkJCTgzNzk2NENFMUY4REI2OUEwMDIxOEVBMCAvKiBH
ZW9sb2NhdGlvblBvc2l0aW9uRGF0YUlPUy5tbSAqLywKLQkJCSk7Ci0JCQluYW1lID0gaW9zOwot
CQkJc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsKLQkJfTsKIAkJODNGQjMzNjUxRjUwOEExNzAwOTg2
RTU0IC8qIGVudHJpZXNhcGkgKi8gPSB7CiAJCQlpc2EgPSBQQlhHcm91cDsKIAkJCWNoaWxkcmVu
ID0gKApAQCAtMjU5MTQsMTAgKzI1OTE5LDEwIEBACiAJCQkJMzE0ODc3RTAxRkFBOEZFOTAwQzA1
NzU5IC8qIE9mZnNjcmVlbkNhbnZhcy5jcHAgKi8sCiAJCQkJMzE0ODc3RTExRkFBOEZFOTAwQzA1
NzU5IC8qIE9mZnNjcmVlbkNhbnZhcy5oICovLAogCQkJCTMxNDg3N0Q5MUZBQTg3MDYwMEMwNTc1
OSAvKiBPZmZzY3JlZW5DYW52YXMuaWRsICovLAotCQkJCTQ5NEVCRDA4MjdBQTlDNTMwMEY0ODQ0
RiAvKiBQREZEb2N1bWVudC5jcHAgKi8sCi0JCQkJNDk0RUJEMDYyN0FBOUM1MzAwRjQ4NDRGIC8q
IFBERkRvY3VtZW50LmggKi8sCiAJCQkJRjU1QjNEOTUxMjUxRjEyRDAwM0VGMjY5IC8qIFBhc3N3
b3JkSW5wdXRUeXBlLmNwcCAqLywKIAkJCQlGNTVCM0Q5NjEyNTFGMTJEMDAzRUYyNjkgLyogUGFz
c3dvcmRJbnB1dFR5cGUuaCAqLywKKwkJCQk0OTRFQkQwODI3QUE5QzUzMDBGNDg0NEYgLyogUERG
RG9jdW1lbnQuY3BwICovLAorCQkJCTQ5NEVCRDA2MjdBQTlDNTMwMEY0ODQ0RiAvKiBQREZEb2N1
bWVudC5oICovLAogCQkJCTk3MjA1QUI5MTIzOTI5MjcwMEIxNzM4MCAvKiBQbHVnaW5Eb2N1bWVu
dC5jcHAgKi8sCiAJCQkJOTcyMDVBQkExMjM5MjkyNzAwQjE3MzgwIC8qIFBsdWdpbkRvY3VtZW50
LmggKi8sCiAJCQkJQ0RFRTM5MzYxNzk3NDI1OTAwMUQ3NTgwIC8qIFB1YmxpY1VSTE1hbmFnZXIu
Y3BwICovLApAQCAtMjYxMjQsNyArMjYxMjksNyBAQAogCQk5NzExNDVGRjE0RUYwMDc5MDA2NzRG
RDkgLyogZ2VvbG9jYXRpb24gKi8gPSB7CiAJCQlpc2EgPSBQQlhHcm91cDsKIAkJCWNoaWxkcmVu
ID0gKAotCQkJCTgzNzk2NENDMUY4REI2N0QwMDIxOEVBMCAvKiBpb3MgKi8sCisJCQkJNDY1QzNE
MTkyN0I5OTFDODAwMjEzMDJGIC8qIGNvY29hICovLAogCQkJCTk3NDZBRjEzMTRGNERERTYwMDNF
N0E3MCAvKiBHZW9sb2NhdGlvbi5jcHAgKi8sCiAJCQkJOTc0NkFGMTQxNEY0RERFNjAwM0U3QTcw
IC8qIEdlb2xvY2F0aW9uLmggKi8sCiAJCQkJOTc0NkFGMTUxNEY0RERFNjAwM0U3QTcwIC8qIEdl
b2xvY2F0aW9uLmlkbCAqLywKQEAgLTI2ODM2LDYgKzI2ODQxLDggQEAKIAkJCQlDMUY3QjcyRjI0
NDhGMkFDMDAxMjQ1NTcgLyogQUdYQ29tcGlsZXJTZXJ2aWNlLmNwcCAqLywKIAkJCQlDMUY3Qjcz
MDI0NDhGMkFDMDAxMjQ1NTcgLyogQUdYQ29tcGlsZXJTZXJ2aWNlLmggKi8sCiAJCQkJQTE0MDkw
RkExQUE1MUUxRDAwOTExOTFBIC8qIENvbnRlbnRGaWx0ZXJVbmJsb2NrSGFuZGxlckNvY29hLm1t
ICovLAorCQkJCTQ2ODhFOTdGMjdCNkI0NDQwMDU2N0NEMiAvKiBDb3JlTG9jYXRpb25HZW9sb2Nh
dGlvblByb3ZpZGVyLmggKi8sCisJCQkJNDY4OEU5N0QyN0I2QjQ0MzAwNTY3Q0QyIC8qIENvcmVM
b2NhdGlvbkdlb2xvY2F0aW9uUHJvdmlkZXIubW0gKi8sCiAJCQkJQ0Q3RDMzNDUxQzdBMTZCRjAw
MDQxMjkzIC8qIENvcmVWaWRlb1NvZnRMaW5rLmNwcCAqLywKIAkJCQlDRDdEMzM0NjFDN0ExNkJG
MDAwNDEyOTMgLyogQ29yZVZpZGVvU29mdExpbmsuaCAqLywKIAkJCQlGNDYyRTc5RjI0MkFEQTND
MDAyMDREREQgLyogRHJhZ0RhdGFDb2NvYS5tbSAqLywKQEAgLTMzOTI3LDYgKzMzOTM0LDcgQEAK
IAkJCQkzRjgwMjAzNzFFOUU0N0M1MDBERUM2MUQgLyogQ29yZUF1ZGlvQ2FwdHVyZURldmljZU1h
bmFnZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTQxRkNDQzNCMjc0NjY3NTYwMDg5MkFENiAvKiBD
b3JlQXVkaW9DYXB0dXJlU291cmNlLmggaW4gSGVhZGVycyAqLywKIAkJCQkwN0FGRjQyMjFFRkIx
NDQ5MDBCNTQ1QjMgLyogQ29yZUF1ZGlvQ2FwdHVyZVNvdXJjZUlPUy5oIGluIEhlYWRlcnMgKi8s
CisJCQkJNDY4OEU5ODAyN0I2QjQ1MDAwNTY3Q0QyIC8qIENvcmVMb2NhdGlvbkdlb2xvY2F0aW9u
UHJvdmlkZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCUNEN0QzMzQ4MUM3QTE2QkYwMDA0MTI5MyAv
KiBDb3JlVmlkZW9Tb2Z0TGluay5oIGluIEhlYWRlcnMgKi8sCiAJCQkJODYyRjEyOUUxOEMxNTc2
RjAwNUM1NEFGIC8qIENvdW50ZWRVc2VyQWN0aXZpdHkuaCBpbiBIZWFkZXJzICovLAogCQkJCUE4
MEU2RDA0MEExOTg5Q0EwMDdGQjhDNSAvKiBDb3VudGVyLmggaW4gSGVhZGVycyAqLywKQEAgLTM4
NjgwLDYgKzM4Njg4LDcgQEAKIAkJCQlDRDBFRUUwRTE0NzQzRjM5MDAzRUFGQTIgLyogQXVkaW9P
dXRwdXRVbml0QWRhcHRvcklPUy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlDREE3OTgyNzE3MEEy
NzkxMDBENDVDNTUgLyogQXVkaW9TZXNzaW9uSU9TLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJQ0Q4
QTdCQkIxOTc3MzVGRTAwQ0JENjQzIC8qIEF1ZGlvU291cmNlUHJvdmlkZXJBVkZPYmpDLm1tIGlu
IFNvdXJjZXMgKi8sCisJCQkJNDZCQTQ5QjgyN0JCNDQzMzAwNzdGNjNGIC8qIEFWQXNzZXRUcmFj
a1V0aWxpdGllcy5tbSBpbiBTb3VyY2VzICovLAogCQkJCTBGQ0EyOTM1MjZGQzM5MTcwMDZCNEFF
QiAvKiBBVkF1ZGlvU2Vzc2lvbkNhcHR1cmVEZXZpY2VNYW5hZ2VyLm1tIGluIFNvdXJjZXMgKi8s
CiAJCQkJMDczOEU1RUMyNDk5ODM5MDAwREExMDFDIC8qIEFWT3V0cHV0RGV2aWNlTWVudUNvbnRy
b2xsZXJUYXJnZXRQaWNrZXIubW0gaW4gU291cmNlcyAqLywKIAkJCQlDRDMzNkY2MTE3RjlGNjQ3
MDBERERDRDAgLyogQVZUcmFja1ByaXZhdGVBVkZPYmpDSW1wbC5tbSBpbiBTb3VyY2VzICovLApA
QCAtMzg2OTgsMTMgKzM4NzA3LDE0IEBACiAJCQkJNTE4RjRGRjYxOTRDQTRFNjAwODFCQUFFIC8q
IEdhbWVwYWRCdXR0b24uY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNTE2QzYyMjAxOTUwRDQ4NzAw
MzM3RTc1IC8qIEdhbWVwYWRFdmVudC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk1MUE5RDlFOTE5
NUI5MzFGMDAxQjJCNUMgLyogR2FtZXBhZE1hbmFnZXIuY3BwIGluIFNvdXJjZXMgKi8sCi0JCQkJ
ODM3OTY0Q0YxRjhEQjY5RDAwMjE4RUEwIC8qIEdlb2xvY2F0aW9uUG9zaXRpb25EYXRhSU9TLm1t
IGluIFNvdXJjZXMgKi8sCisJCQkJODM3OTY0Q0YxRjhEQjY5RDAwMjE4RUEwIC8qIEdlb2xvY2F0
aW9uUG9zaXRpb25EYXRhQ29jb2EubW0gaW4gU291cmNlcyAqLywKIAkJCQk2RTcyRjU0RTIyOURD
RDEwMDBCM0UxNTEgLyogR3JhcGhpY3NDb250ZXh0R0xBTkdMRS5jcHAgaW4gU291cmNlcyAqLywK
IAkJCQk3QzNFNTEwQjE4REY4RjM1MDBDMTEyRjcgLyogSFRNTENvbnZlcnRlci5tbSBpbiBTb3Vy
Y2VzICovLAogCQkJCUE4RDA2QjNBMEEyNjVEQ0QwMDVFNzIwMyAvKiBIVE1MTmFtZXMuY3BwIGlu
IFNvdXJjZXMgKi8sCiAJCQkJMUFDOTAwQzMxOTQzQzBGQzAwODYyNUI1IC8qIEhUVFBIZWFkZXJO
YW1lcy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlDRDI3QUU1MTIyQTk4Njg3MDA5NDdGRjkgLyog
SW1hZ2VSb3RhdGlvblNlc3Npb25WVC5tbSBpbiBTb3VyY2VzICovLAogCQkJCTA3MEUyRDBGMjZG
MjUwODkwMDE0QUFDMyAvKiBJbmJhbmRDaGFwdGVyVHJhY2tQcml2YXRlQVZGT2JqQy5tbSBpbiBT
b3VyY2VzICovLAorCQkJCTQ2Q0E5NDMxMjdCODY5NTgwMEY0RjVGRiAvKiBJbmJhbmRUZXh0VHJh
Y2tQcml2YXRlQVZGT2JqQy5tbSBpbiBTb3VyY2VzICovLAogCQkJCUNEMDYzRjgyMUUyM0ZBODkw
MDgxMkJFMyAvKiBJbml0RGF0YVJlZ2lzdHJ5LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTkzNUM0
NzcwMDlBQzRENzMwMEE2QUFCNCAvKiBLZXlFdmVudE1hYy5tbSBpbiBTb3VyY2VzICovLAogCQkJ
CUNEQTk4RTBCMTYwM0NENjAwMEZFQTNCMSAvKiBMZWdhY3lDRE0uY3BwIGluIFNvdXJjZXMgKi8s
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuY3BwIGIvU291cmNlL1dlYkNv
cmUvcGFnZS9QYWdlLmNwcAppbmRleCA2YTg1ZTg0M2Q4YmJlM2QxOTJkOTdmNDk2YmQ3ZWI0NTQ3
NDlkYmE0Li5lZmUwZTM4MDZkYzg0ODAzMGQyMmI5ZDkwMjkxNjc5MzM4NWJmZGFhIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bh
Z2UvUGFnZS5jcHAKQEAgLTY5LDYgKzY5LDcgQEAKICNpbmNsdWRlICJGcmFtZVRyZWUuaCIKICNp
bmNsdWRlICJGcmFtZVZpZXcuaCIKICNpbmNsdWRlICJGdWxsc2NyZWVuTWFuYWdlci5oIgorI2lu
Y2x1ZGUgIkdlb2xvY2F0aW9uQ29udHJvbGxlci5oIgogI2luY2x1ZGUgIkhUTUxFbGVtZW50Lmgi
CiAjaW5jbHVkZSAiSFRNTEltYWdlRWxlbWVudC5oIgogI2luY2x1ZGUgIkhUTUxNZWRpYUVsZW1l
bnQuaCIKQEAgLTEzMzIsNiArMTMzMywxMSBAQCB2b2lkIFBhZ2U6OmRpZENvbW1pdExvYWQoKQog
ICAgIHJlc2V0VGV4dFJlY29nbml0aW9uUmVzdWx0cygpOwogICAgIHJlc2V0SW1hZ2VBbmFseXNp
c1F1ZXVlKCk7CiAjZW5kaWYKKworI2lmIEVOQUJMRShHRU9MT0NBVElPTikKKyAgICBpZiAoYXV0
byogZ2VvbG9jYXRpb25Db250cm9sbGVyID0gR2VvbG9jYXRpb25Db250cm9sbGVyOjpmcm9tKHRo
aXMpKQorICAgICAgICBnZW9sb2NhdGlvbkNvbnRyb2xsZXItPmRpZE5hdmlnYXRlUGFnZSgpOwor
I2VuZGlmCiB9CiAKIHZvaWQgUGFnZTo6ZGlkRmluaXNoTG9hZCgpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9Db3JlTG9jYXRpb25HZW9sb2NhdGlvblByb3ZpZGVy
LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9Db3JlTG9jYXRpb25HZW9sb2NhdGlv
blByb3ZpZGVyLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYzUyNDZjODg0YWNmOGY2OWZjYjhmOGFjNGFjYzdmNGNk
ZTY0NWNlZAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29h
L0NvcmVMb2NhdGlvbkdlb2xvY2F0aW9uUHJvdmlkZXIuaApAQCAtMCwwICsxLDY3IEBACisvKgor
ICogQ29weXJpZ2h0IChDKSAyMDIyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAq
CisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5E
IElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExF
IElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVO
VElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQg
T0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBP
UiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
CisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlIDx3dGYvQ29tcGxldGlvbkhhbmRsZXIu
aD4KKyNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgorI2luY2x1ZGUgPHd0Zi9SZXRhaW5QdHIuaD4K
KworT0JKQ19DTEFTUyBXZWJDTExvY2F0aW9uTWFuYWdlcjsKKworbmFtZXNwYWNlIFdlYkNvcmUg
eworCitjbGFzcyBHZW9sb2NhdGlvblBvc2l0aW9uRGF0YTsKK2NsYXNzIFJlZ2lzdHJhYmxlRG9t
YWluOworCitjbGFzcyBXRUJDT1JFX0VYUE9SVCBDb3JlTG9jYXRpb25HZW9sb2NhdGlvblByb3Zp
ZGVyIHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKK3B1YmxpYzoKKyAgICBjbGFzcyBD
bGllbnQgeworICAgIHB1YmxpYzoKKyAgICAgICAgdmlydHVhbCB+Q2xpZW50KCkgeyB9CisKKyAg
ICAgICAgdmlydHVhbCB2b2lkIGdlb2xvY2F0aW9uQXV0aG9yaXphdGlvbkdyYW50ZWQoY29uc3Qg
U3RyaW5nJiAvKndlYnNpdGVJZGVudGlmaWVyKi8pIHsgfQorICAgICAgICB2aXJ0dWFsIHZvaWQg
Z2VvbG9jYXRpb25BdXRob3JpemF0aW9uRGVuaWVkKGNvbnN0IFN0cmluZyYgLyp3ZWJzaXRlSWRl
bnRpZmllciovKSB7IH0KKyAgICAgICAgdmlydHVhbCB2b2lkIHBvc2l0aW9uQ2hhbmdlZChjb25z
dCBTdHJpbmcmIHdlYnNpdGVJZGVudGlmaWVyLCBHZW9sb2NhdGlvblBvc2l0aW9uRGF0YSYmKSA9
IDA7CisgICAgICAgIHZpcnR1YWwgdm9pZCBlcnJvck9jY3VycmVkKGNvbnN0IFN0cmluZyYgd2Vi
c2l0ZUlkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgZXJyb3JNZXNzYWdlKSA9IDA7CisgICAgICAg
IHZpcnR1YWwgdm9pZCByZXNldEdlb2xvY2F0aW9uKGNvbnN0IFN0cmluZyYgd2Vic2l0ZUlkZW50
aWZpZXIpID0gMDsKKyAgICB9OworCisgICAgQ29yZUxvY2F0aW9uR2VvbG9jYXRpb25Qcm92aWRl
cihjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYsIENsaWVudCYpOworICAgIH5Db3JlTG9jYXRpb25H
ZW9sb2NhdGlvblByb3ZpZGVyKCk7CisKKyAgICB2b2lkIHN0YXJ0KCk7CisgICAgdm9pZCBzdG9w
KCk7CisKKyAgICB2b2lkIHNldEVuYWJsZUhpZ2hBY2N1cmFjeShib29sKTsKKworICAgIHN0YXRp
YyB2b2lkIHJlcXVlc3RBdXRob3JpemF0aW9uKGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiwgQ29t
cGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJik7CisKK3ByaXZhdGU6CisgICAgUmV0YWluUHRy
PFdlYkNMTG9jYXRpb25NYW5hZ2VyPiBtX2xvY2F0aW9uTWFuYWdlcjsKK307CisKK30gLy8gbmFt
ZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29h
L0NvcmVMb2NhdGlvbkdlb2xvY2F0aW9uUHJvdmlkZXIubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9jb2NvYS9Db3JlTG9jYXRpb25HZW9sb2NhdGlvblByb3ZpZGVyLm1tCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjYzMTc2OTMzNGFlNjJiZjAyNzJkM2MzMTdmNzlmN2Y1MmY5OTNkMzgKLS0tIC9kZXYvbnVsbAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9Db3JlTG9jYXRpb25HZW9sb2NhdGlv
blByb3ZpZGVyLm1tCkBAIC0wLDAgKzEsMjY4IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIy
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBB
UyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJF
IERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJV
VE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVT
UworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
CisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2ltcG9ydCAiY29u
ZmlnLmgiCisjaW1wb3J0ICJDb3JlTG9jYXRpb25HZW9sb2NhdGlvblByb3ZpZGVyLmgiCisKKyNp
bXBvcnQgIkdlb2xvY2F0aW9uUG9zaXRpb25EYXRhLmgiCisjaW1wb3J0ICJSZWdpc3RyYWJsZURv
bWFpbi5oIgorI2ltcG9ydCA8Q29yZUxvY2F0aW9uL0NMTG9jYXRpb25NYW5hZ2VyRGVsZWdhdGUu
aD4KKyNpbXBvcnQgPENvcmVMb2NhdGlvbi9Db3JlTG9jYXRpb24uaD4KKyNpbXBvcnQgPHd0Zi9T
b2Z0TGlua2luZy5oPgorCisjaWYgVVNFKEFQUExFX0lOVEVSTkFMX1NESykKKyNpbXBvcnQgPENv
cmVMb2NhdGlvbi9DTExvY2F0aW9uTWFuYWdlcl9Qcml2YXRlLmg+CisjZW5kaWYKKworU09GVF9M
SU5LX0ZSQU1FV09SSyhDb3JlTG9jYXRpb24pCisKK1NPRlRfTElOS19DTEFTUyhDb3JlTG9jYXRp
b24sIENMTG9jYXRpb25NYW5hZ2VyKQorU09GVF9MSU5LX0NMQVNTKENvcmVMb2NhdGlvbiwgQ0xM
b2NhdGlvbikKKworU09GVF9MSU5LX0NPTlNUQU5UKENvcmVMb2NhdGlvbiwga0NMTG9jYXRpb25B
Y2N1cmFjeUJlc3QsIGRvdWJsZSkKK1NPRlRfTElOS19DT05TVEFOVChDb3JlTG9jYXRpb24sIGtD
TExvY2F0aW9uQWNjdXJhY3lIdW5kcmVkTWV0ZXJzLCBkb3VibGUpCisKKyNkZWZpbmUga0NMTG9j
YXRpb25BY2N1cmFjeUJlc3QgZ2V0a0NMTG9jYXRpb25BY2N1cmFjeUJlc3QoKQorI2RlZmluZSBr
Q0xMb2NhdGlvbkFjY3VyYWN5SHVuZHJlZE1ldGVycyBnZXRrQ0xMb2NhdGlvbkFjY3VyYWN5SHVu
ZHJlZE1ldGVycygpCisKK3N0YXRpYyBib29sIGlzQXV0aG9yaXphdGlvbkdyYW50ZWQoQ0xBdXRo
b3JpemF0aW9uU3RhdHVzIHN0YXR1cykKK3sKKyAgICByZXR1cm4gc3RhdHVzID09IGtDTEF1dGhv
cml6YXRpb25TdGF0dXNBdXRob3JpemVkQWx3YXlzCisjaWYgSEFWRShDT1JFX0xPQ0FUSU9OX0FV
VEhPUklaRURfV0hFTl9JTl9VU0UpCisgICAgICAgIHx8IHN0YXR1cyA9PSBrQ0xBdXRob3JpemF0
aW9uU3RhdHVzQXV0aG9yaXplZFdoZW5JblVzZQorI2VuZGlmCisgICAgICAgIDsKK30KKworQGlu
dGVyZmFjZSBXZWJDTExvY2F0aW9uTWFuYWdlciA6IE5TT2JqZWN0PENMTG9jYXRpb25NYW5hZ2Vy
RGVsZWdhdGU+CitAZW5kCisKK0BpbXBsZW1lbnRhdGlvbiBXZWJDTExvY2F0aW9uTWFuYWdlciB7
CisgICAgUmV0YWluUHRyPENMTG9jYXRpb25NYW5hZ2VyPiBfbG9jYXRpb25NYW5hZ2VyOworICAg
IFdlYkNvcmU6OkNvcmVMb2NhdGlvbkdlb2xvY2F0aW9uUHJvdmlkZXI6OkNsaWVudCogX2NsaWVu
dDsKKyAgICBTdHJpbmcgX3dlYnNpdGVJZGVudGlmaWVyOworICAgIEJPT0wgX2lzV2FpdGluZ0Zv
ckF1dGhvcml6YXRpb247Cit9CisKKy0gKGluc3RhbmNldHlwZSlpbml0V2l0aFdlYnNpdGVJZGVu
dGlmaWVyOihjb25zdCBTdHJpbmcmKXdlYnNpdGVJZGVudGlmaWVyIGNsaWVudDooV2ViQ29yZTo6
Q29yZUxvY2F0aW9uR2VvbG9jYXRpb25Qcm92aWRlcjo6Q2xpZW50JiljbGllbnQKK3sKKyAgICBz
ZWxmID0gW3N1cGVyIGluaXRdOworICAgIGlmICghc2VsZikKKyAgICAgICAgcmV0dXJuIG5pbDsK
KworICAgIC8vIEZJWE1FOiBDYWxsIGluaXRXaXRoV2Vic2l0ZUlkZW50aWZpZXIgYW5kIHBhc3Mg
dGhlIHdlYnNpdGVJZGVudGlmaWVyIHdoZW4gSEFWRShDT1JFX0xPQ0FUSU9OX1dFQlNJVEVfSURF
TlRJRklFUlMpIGFuZCAhd2Vic2l0ZUlkZW50aWZpZXIuaXNFbXB0eSgpIG9uY2UgPHJkYXI6Ly84
ODgzNDMwMT4gaXMgZml4ZWQuCisgICAgVU5VU0VEX1BBUkFNKHdlYnNpdGVJZGVudGlmaWVyKTsK
KyAgICBfbG9jYXRpb25NYW5hZ2VyID0gYWRvcHROUyhbYWxsb2NDTExvY2F0aW9uTWFuYWdlcklu
c3RhbmNlKCkgaW5pdF0pOworICAgIF9jbGllbnQgPSAmY2xpZW50OworICAgIF93ZWJzaXRlSWRl
bnRpZmllciA9IHdlYnNpdGVJZGVudGlmaWVyOworICAgIFtfbG9jYXRpb25NYW5hZ2VyIHNldERl
bGVnYXRlOnNlbGZdOworICAgIHJldHVybiBzZWxmOworfQorCistICh2b2lkKWRlYWxsb2MKK3sK
KyAgICBbX2xvY2F0aW9uTWFuYWdlciBzZXREZWxlZ2F0ZTpuaWxdOworICAgIFtzdXBlciBkZWFs
bG9jXTsKK30KKworLSAodm9pZClzdGFydAoreworICAgIGlmICghW2dldENMTG9jYXRpb25NYW5h
Z2VyQ2xhc3MoKSBsb2NhdGlvblNlcnZpY2VzRW5hYmxlZF0gfHwgIWlzQXV0aG9yaXphdGlvbkdy
YW50ZWQoW19sb2NhdGlvbk1hbmFnZXIgYXV0aG9yaXphdGlvblN0YXR1c10pKSB7CisgICAgICAg
IFtfbG9jYXRpb25NYW5hZ2VyIHN0b3BVcGRhdGluZ0xvY2F0aW9uXTsKKyAgICAgICAgX2NsaWVu
dC0+cmVzZXRHZW9sb2NhdGlvbihfd2Vic2l0ZUlkZW50aWZpZXIpOworICAgICAgICByZXR1cm47
CisgICAgfQorCisgICAgW19sb2NhdGlvbk1hbmFnZXIgc3RhcnRVcGRhdGluZ0xvY2F0aW9uXTsK
K30KKworLSAodm9pZClzdG9wCit7CisgICAgW19sb2NhdGlvbk1hbmFnZXIgc3RvcFVwZGF0aW5n
TG9jYXRpb25dOworfQorCistICh2b2lkKXNldEVuYWJsZUhpZ2hBY2N1cmFjeTooQk9PTCloaWdo
QWNjdXJhY3lFbmFibGVkCit7CisgICAgW19sb2NhdGlvbk1hbmFnZXIgc2V0RGVzaXJlZEFjY3Vy
YWN5OmhpZ2hBY2N1cmFjeUVuYWJsZWQgPyBrQ0xMb2NhdGlvbkFjY3VyYWN5QmVzdCA6IGtDTExv
Y2F0aW9uQWNjdXJhY3lIdW5kcmVkTWV0ZXJzXTsKK30KKworLSAodm9pZClyZXF1ZXN0R2VvbG9j
YXRpb25BdXRob3JpemF0aW9uCit7CisgICAgaWYgKCFbZ2V0Q0xMb2NhdGlvbk1hbmFnZXJDbGFz
cygpIGxvY2F0aW9uU2VydmljZXNFbmFibGVkXSkgeworICAgICAgICBfY2xpZW50LT5nZW9sb2Nh
dGlvbkF1dGhvcml6YXRpb25EZW5pZWQoX3dlYnNpdGVJZGVudGlmaWVyKTsKKyAgICAgICAgcmV0
dXJuOworICAgIH0KKworICAgIHN3aXRjaCAoW19sb2NhdGlvbk1hbmFnZXIgYXV0aG9yaXphdGlv
blN0YXR1c10pIHsKKyAgICBjYXNlIGtDTEF1dGhvcml6YXRpb25TdGF0dXNOb3REZXRlcm1pbmVk
OiB7CisgICAgICAgIGlmICghX2lzV2FpdGluZ0ZvckF1dGhvcml6YXRpb24pIHsKKyAgICAgICAg
ICAgIF9pc1dhaXRpbmdGb3JBdXRob3JpemF0aW9uID0gWUVTOworICAgICAgICAgICAgW19sb2Nh
dGlvbk1hbmFnZXIgcmVxdWVzdFdoZW5JblVzZUF1dGhvcml6YXRpb25dOworICAgICAgICB9Cisg
ICAgICAgIGJyZWFrOworICAgIH0KKyAgICBjYXNlIGtDTEF1dGhvcml6YXRpb25TdGF0dXNBdXRo
b3JpemVkQWx3YXlzOgorI2lmIEhBVkUoQ09SRV9MT0NBVElPTl9BVVRIT1JJWkVEX1dIRU5fSU5f
VVNFKQorICAgIGNhc2Uga0NMQXV0aG9yaXphdGlvblN0YXR1c0F1dGhvcml6ZWRXaGVuSW5Vc2U6
CisjZW5kaWYKKyAgICAgICAgX2NsaWVudC0+Z2VvbG9jYXRpb25BdXRob3JpemF0aW9uR3JhbnRl
ZChfd2Vic2l0ZUlkZW50aWZpZXIpOworICAgICAgICBicmVhazsKKyAgICBjYXNlIGtDTEF1dGhv
cml6YXRpb25TdGF0dXNSZXN0cmljdGVkOgorICAgIGNhc2Uga0NMQXV0aG9yaXphdGlvblN0YXR1
c0RlbmllZDoKKyAgICAgICAgX2NsaWVudC0+Z2VvbG9jYXRpb25BdXRob3JpemF0aW9uRGVuaWVk
KF93ZWJzaXRlSWRlbnRpZmllcik7CisgICAgICAgIGJyZWFrOworICAgIH0KK30KKworLSAodm9p
ZClsb2NhdGlvbk1hbmFnZXJEaWRDaGFuZ2VBdXRob3JpemF0aW9uOihDTExvY2F0aW9uTWFuYWdl
ciAqKW1hbmFnZXIKK3sKKyAgICBhdXRvIHN0YXR1cyA9IFtfbG9jYXRpb25NYW5hZ2VyIGF1dGhv
cml6YXRpb25TdGF0dXNdOworICAgIGlmIChfaXNXYWl0aW5nRm9yQXV0aG9yaXphdGlvbikgewor
ICAgICAgICBzd2l0Y2ggKHN0YXR1cykgeworICAgICAgICBjYXNlIGtDTEF1dGhvcml6YXRpb25T
dGF0dXNOb3REZXRlcm1pbmVkOgorICAgICAgICAgICAgLy8gVGhpcyBjYW4gaGFwcGVuIGFmdGVy
IHJlc3VtZSBpZiB0aGUgdXNlciBoYXMgc3RpbGwgbm90IGFuc3dlcmVkIHRoZSBkaWFsb2cuIFdl
IGp1c3QgaGF2ZSB0byB3YWl0IGZvciB0aGUgcGVybWlzc2lvbi4KKyAgICAgICAgICAgIGJyZWFr
OworICAgICAgICBjYXNlIGtDTEF1dGhvcml6YXRpb25TdGF0dXNEZW5pZWQ6CisgICAgICAgIGNh
c2Uga0NMQXV0aG9yaXphdGlvblN0YXR1c1Jlc3RyaWN0ZWQ6CisgICAgICAgICAgICBfaXNXYWl0
aW5nRm9yQXV0aG9yaXphdGlvbiA9IE5POworICAgICAgICAgICAgX2NsaWVudC0+Z2VvbG9jYXRp
b25BdXRob3JpemF0aW9uRGVuaWVkKF93ZWJzaXRlSWRlbnRpZmllcik7CisgICAgICAgICAgICBi
cmVhazsKKyAgICAgICAgY2FzZSBrQ0xBdXRob3JpemF0aW9uU3RhdHVzQXV0aG9yaXplZEFsd2F5
czoKKyNpZiBIQVZFKENPUkVfTE9DQVRJT05fQVVUSE9SSVpFRF9XSEVOX0lOX1VTRSkKKyAgICAg
ICAgY2FzZSBrQ0xBdXRob3JpemF0aW9uU3RhdHVzQXV0aG9yaXplZFdoZW5JblVzZToKKyNlbmRp
ZgorICAgICAgICAgICAgX2lzV2FpdGluZ0ZvckF1dGhvcml6YXRpb24gPSBOTzsKKyAgICAgICAg
ICAgIF9jbGllbnQtPmdlb2xvY2F0aW9uQXV0aG9yaXphdGlvbkdyYW50ZWQoX3dlYnNpdGVJZGVu
dGlmaWVyKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAgfSBlbHNlIHsKKyAg
ICAgICAgaWYgKHN0YXR1cyA9PSBrQ0xBdXRob3JpemF0aW9uU3RhdHVzRGVuaWVkIHx8IHN0YXR1
cyA9PSBrQ0xBdXRob3JpemF0aW9uU3RhdHVzUmVzdHJpY3RlZCkgeworICAgICAgICAgICAgW19s
b2NhdGlvbk1hbmFnZXIgc3RvcFVwZGF0aW5nTG9jYXRpb25dOworICAgICAgICAgICAgX2NsaWVu
dC0+cmVzZXRHZW9sb2NhdGlvbihfd2Vic2l0ZUlkZW50aWZpZXIpOworICAgICAgICB9CisgICAg
fQorfQorCistICh2b2lkKWxvY2F0aW9uTWFuYWdlcjooQ0xMb2NhdGlvbk1hbmFnZXIgKiltYW5h
Z2VyIGRpZFVwZGF0ZUxvY2F0aW9uczooTlNBcnJheSAqKWxvY2F0aW9ucworeworICAgIFVOVVNF
RF9QQVJBTShtYW5hZ2VyKTsKKyAgICBmb3IgKENMTG9jYXRpb24gKmxvY2F0aW9uIGluIGxvY2F0
aW9ucykKKyAgICAgICAgX2NsaWVudC0+cG9zaXRpb25DaGFuZ2VkKF93ZWJzaXRlSWRlbnRpZmll
ciwgV2ViQ29yZTo6R2VvbG9jYXRpb25Qb3NpdGlvbkRhdGEgeyBsb2NhdGlvbiB9KTsKK30KKwor
LSAodm9pZClsb2NhdGlvbk1hbmFnZXI6KENMTG9jYXRpb25NYW5hZ2VyICopbWFuYWdlciBkaWRG
YWlsV2l0aEVycm9yOihOU0Vycm9yICopZXJyb3IKK3sKKyAgICBBU1NFUlQoZXJyb3IpOworICAg
IFVOVVNFRF9QQVJBTShtYW5hZ2VyKTsKKworICAgIGlmIChbZXJyb3IgY29kZV0gPT0ga0NMRXJy
b3JEZW5pZWQpIHsKKyAgICAgICAgLy8gSWdub3JlIHRoZSBlcnJvciBoZXJlIGFuZCBsZXQgbG9j
YXRpb25NYW5hZ2VyOmRpZENoYW5nZUF1dGhvcml6YXRpb25TdGF0dXM6IGhhbmRsZSB0aGUgcGVy
bWlzc2lvbi4KKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIE5TU3RyaW5nICplcnJvck1l
c3NhZ2UgPSBbZXJyb3IgbG9jYWxpemVkRGVzY3JpcHRpb25dOworICAgIF9jbGllbnQtPmVycm9y
T2NjdXJyZWQoX3dlYnNpdGVJZGVudGlmaWVyLCBlcnJvck1lc3NhZ2UpOworfQorCitAZW5kCisK
K25hbWVzcGFjZSBXZWJDb3JlIHsKKworQ29yZUxvY2F0aW9uR2VvbG9jYXRpb25Qcm92aWRlcjo6
Q29yZUxvY2F0aW9uR2VvbG9jYXRpb25Qcm92aWRlcihjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYg
cmVnaXN0cmFibGVEb21haW4sIENsaWVudCYgY2xpZW50KQorICAgIDogbV9sb2NhdGlvbk1hbmFn
ZXIoYWRvcHROUyhbW1dlYkNMTG9jYXRpb25NYW5hZ2VyIGFsbG9jXSBpbml0V2l0aFdlYnNpdGVJ
ZGVudGlmaWVyOnJlZ2lzdHJhYmxlRG9tYWluLnN0cmluZygpIGNsaWVudDpjbGllbnRdKSkKK3sK
KyAgICAvLyBSZXF1ZXN0IHBlcm1pc3Npb24gZm9yIHRoZSBhcHAgdG8gdXNlIGdlb2xvY2F0aW9u
IChpZiBpdCBkb2Vzbid0IGFscmVhZHkpLgorICAgIFttX2xvY2F0aW9uTWFuYWdlciByZXF1ZXN0
R2VvbG9jYXRpb25BdXRob3JpemF0aW9uXTsKK30KKworQ29yZUxvY2F0aW9uR2VvbG9jYXRpb25Q
cm92aWRlcjo6fkNvcmVMb2NhdGlvbkdlb2xvY2F0aW9uUHJvdmlkZXIoKQoreworICAgIFttX2xv
Y2F0aW9uTWFuYWdlciBzdG9wXTsKK30KKwordm9pZCBDb3JlTG9jYXRpb25HZW9sb2NhdGlvblBy
b3ZpZGVyOjpzdGFydCgpCit7CisgICAgW21fbG9jYXRpb25NYW5hZ2VyIHN0YXJ0XTsKK30KKwor
dm9pZCBDb3JlTG9jYXRpb25HZW9sb2NhdGlvblByb3ZpZGVyOjpzdG9wKCkKK3sKKyAgICBbbV9s
b2NhdGlvbk1hbmFnZXIgc3RvcF07Cit9CisKK3ZvaWQgQ29yZUxvY2F0aW9uR2VvbG9jYXRpb25Q
cm92aWRlcjo6c2V0RW5hYmxlSGlnaEFjY3VyYWN5KGJvb2wgaGlnaEFjY3VyYWN5RW5hYmxlZCkK
K3sKKyAgICBbbV9sb2NhdGlvbk1hbmFnZXIgc2V0RW5hYmxlSGlnaEFjY3VyYWN5OmhpZ2hBY2N1
cmFjeUVuYWJsZWRdOworfQorCitjbGFzcyBBdXRob3JpemF0aW9uQ2hlY2tlciBmaW5hbCA6IHB1
YmxpYyBSZWZDb3VudGVkPEF1dGhvcml6YXRpb25DaGVja2VyPiwgcHVibGljIENvcmVMb2NhdGlv
bkdlb2xvY2F0aW9uUHJvdmlkZXI6OkNsaWVudCB7CitwdWJsaWM6CisgICAgc3RhdGljIFJlZjxB
dXRob3JpemF0aW9uQ2hlY2tlcj4gY3JlYXRlKCkKKyAgICB7CisgICAgICAgIHJldHVybiBhZG9w
dFJlZigqbmV3IEF1dGhvcml6YXRpb25DaGVja2VyKTsKKyAgICB9CisKKyAgICB2b2lkIGNoZWNr
KGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiByZWdpc3RyYWJsZURvbWFpbiwgQ29tcGxldGlvbkhh
bmRsZXI8dm9pZChib29sKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKKyAgICB7CisgICAgICAgIG1f
Y29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKTsKKyAgICAgICAg
bV9wcm92aWRlciA9IG1ha2VVbmlxdWU8Q29yZUxvY2F0aW9uR2VvbG9jYXRpb25Qcm92aWRlcj4o
cmVnaXN0cmFibGVEb21haW4sICp0aGlzKTsKKyAgICB9CisKK3ByaXZhdGU6CisgICAgQXV0aG9y
aXphdGlvbkNoZWNrZXIoKSA9IGRlZmF1bHQ7CisKKyAgICB2b2lkIGdlb2xvY2F0aW9uQXV0aG9y
aXphdGlvbkdyYW50ZWQoY29uc3QgU3RyaW5nJikgZmluYWwKKyAgICB7CisgICAgICAgIGlmICht
X2NvbXBsZXRpb25IYW5kbGVyKQorICAgICAgICAgICAgbV9jb21wbGV0aW9uSGFuZGxlcih0cnVl
KTsKKyAgICB9CisKKyAgICB2b2lkIGdlb2xvY2F0aW9uQXV0aG9yaXphdGlvbkRlbmllZChjb25z
dCBTdHJpbmcmKSBmaW5hbAorICAgIHsKKyAgICAgICAgaWYgKG1fY29tcGxldGlvbkhhbmRsZXIp
CisgICAgICAgICAgICBtX2NvbXBsZXRpb25IYW5kbGVyKGZhbHNlKTsKKyAgICB9CisKKyAgICB2
b2lkIHBvc2l0aW9uQ2hhbmdlZChjb25zdCBTdHJpbmcmLCBHZW9sb2NhdGlvblBvc2l0aW9uRGF0
YSYmKSBmaW5hbCB7IH0KKyAgICB2b2lkIGVycm9yT2NjdXJyZWQoY29uc3QgU3RyaW5nJiwgY29u
c3QgU3RyaW5nJikgZmluYWwKKyAgICB7CisgICAgICAgIGlmIChtX2NvbXBsZXRpb25IYW5kbGVy
KQorICAgICAgICAgICAgbV9jb21wbGV0aW9uSGFuZGxlcihmYWxzZSk7CisgICAgfQorICAgIHZv
aWQgcmVzZXRHZW9sb2NhdGlvbihjb25zdCBTdHJpbmcmKSBmaW5hbCB7IH0KKworICAgIHN0ZDo6
dW5pcXVlX3B0cjxDb3JlTG9jYXRpb25HZW9sb2NhdGlvblByb3ZpZGVyPiBtX3Byb3ZpZGVyOwor
ICAgIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+IG1fY29tcGxldGlvbkhhbmRsZXI7Cit9
OworCit2b2lkIENvcmVMb2NhdGlvbkdlb2xvY2F0aW9uUHJvdmlkZXI6OnJlcXVlc3RBdXRob3Jp
emF0aW9uKGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiByZWdpc3RyYWJsZURvbWFpbiwgQ29tcGxl
dGlvbkhhbmRsZXI8dm9pZChib29sKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3sKKyAgICBhdXRv
IGF1dGhvcml6YXRpb25DaGVja2VyID0gQXV0aG9yaXphdGlvbkNoZWNrZXI6OmNyZWF0ZSgpOwor
ICAgIGF1dGhvcml6YXRpb25DaGVja2VyLT5jaGVjayhyZWdpc3RyYWJsZURvbWFpbiwgW2F1dGhv
cml6YXRpb25DaGVja2VyLCBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhh
bmRsZXIpXShib29sIGF1dGhvcml6ZWQpIG11dGFibGUgeworICAgICAgICBjb21wbGV0aW9uSGFu
ZGxlcihhdXRob3JpemVkKTsKKyAgICB9KTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9HZW9sb2NhdGlvbkNsaWVu
dE1vY2suY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9HZW9sb2NhdGlvbkNsaWVu
dE1vY2suY3BwCmluZGV4IDlkNWVmYzgzZjM0ZWIxOGQ1OTlkYzEwY2FhOGZjMGNhMzk5ZGIwYTIu
LmZhNDIwODJlNTA1OWE5ZWNmMjY0Y2FhZjRjMjY1MzJmNGIyZTVkN2EgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svR2VvbG9jYXRpb25DbGllbnRNb2NrLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL0dlb2xvY2F0aW9uQ2xpZW50TW9jay5jcHAK
QEAgLTEzNiwxMCArMTM2LDExIEBAIHZvaWQgR2VvbG9jYXRpb25DbGllbnRNb2NrOjpnZW9sb2Nh
dGlvbkRlc3Ryb3llZCgpCiAgICAgQVNTRVJUKCFtX2lzQWN0aXZlKTsKIH0KIAotdm9pZCBHZW9s
b2NhdGlvbkNsaWVudE1vY2s6OnN0YXJ0VXBkYXRpbmcoY29uc3QgU3RyaW5nJiBhdXRob3JpemF0
aW9uVG9rZW4pCit2b2lkIEdlb2xvY2F0aW9uQ2xpZW50TW9jazo6c3RhcnRVcGRhdGluZyhjb25z
dCBTdHJpbmcmIGF1dGhvcml6YXRpb25Ub2tlbiwgYm9vbCBlbmFibGVIaWdoQWNjdXJhY3kpCiB7
CiAgICAgQVNTRVJUKCFtX2lzQWN0aXZlKTsKICAgICBVTlVTRURfUEFSQU0oYXV0aG9yaXphdGlv
blRva2VuKTsKKyAgICBVTlVTRURfUEFSQU0oZW5hYmxlSGlnaEFjY3VyYWN5KTsKICAgICBtX2lz
QWN0aXZlID0gdHJ1ZTsKICAgICBhc3luY1VwZGF0ZUNvbnRyb2xsZXIoKTsKIH0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svR2VvbG9jYXRpb25DbGllbnRNb2NrLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL0dlb2xvY2F0aW9uQ2xpZW50TW9jay5oCmlu
ZGV4IDJmYTc1ZTA1N2E1M2Q3ZTgxOGNjZmFmZWU3MDI0M2RkNTQ4MjE4NDUuLmY4YmFjMzhiNWI2
Y2NjOGNjMDhmODcwNzFlYmM3NWQ2NWIzMTA2NDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL21vY2svR2VvbG9jYXRpb25DbGllbnRNb2NrLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbW9jay9HZW9sb2NhdGlvbkNsaWVudE1vY2suaApAQCAtNTksNyArNTksNyBA
QCBwdWJsaWM6CiAKICAgICAvLyBHZW9sb2NhdGlvbkNsaWVudAogICAgIHZvaWQgZ2VvbG9jYXRp
b25EZXN0cm95ZWQoKSBvdmVycmlkZTsKLSAgICB2b2lkIHN0YXJ0VXBkYXRpbmcoY29uc3QgU3Ry
aW5nJiBhdXRob3JpemF0aW9uVG9rZW4pIG92ZXJyaWRlOworICAgIHZvaWQgc3RhcnRVcGRhdGlu
Zyhjb25zdCBTdHJpbmcmIGF1dGhvcml6YXRpb25Ub2tlbiwgYm9vbCBlbmFibGVIaWdoQWNjdXJh
Y3kpIG92ZXJyaWRlOwogICAgIHZvaWQgc3RvcFVwZGF0aW5nKCkgb3ZlcnJpZGU7CiAgICAgdm9p
ZCBzZXRFbmFibGVIaWdoQWNjdXJhY3koYm9vbCkgb3ZlcnJpZGU7CiAgICAgc3RkOjpvcHRpb25h
bDxHZW9sb2NhdGlvblBvc2l0aW9uRGF0YT4gbGFzdFBvc2l0aW9uKCkgb3ZlcnJpZGU7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NvdXJjZXNDb2NvYS50eHQgYi9Tb3VyY2UvV2ViS2l0L1Nv
dXJjZXNDb2NvYS50eHQKaW5kZXggMmFjZGE5NDFlY2RmNGJjYmU3ZmU5NGE1MTgxNzQ5MWYxYzBi
ZjM5YS4uMzlmZWE5MWNlNTYxNzU4MTYwYWQ5MjE4OTg5NDUzZTU4M2VkNjQ2MSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9Tb3VyY2VzQ29jb2EudHh0CisrKyBiL1NvdXJjZS9XZWJLaXQvU291
cmNlc0NvY29hLnR4dApAQCAtNDI3LDYgKzQyNyw3IEBAIFVJUHJvY2Vzcy9Db2NvYS9VSVJlbW90
ZU9iamVjdFJlZ2lzdHJ5LmNwcAogVUlQcm9jZXNzL0NvY29hL1VzZXJNZWRpYUNhcHR1cmVNYW5h
Z2VyUHJveHkuY3BwCiBVSVByb2Nlc3MvQ29jb2EvVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RN
YW5hZ2VyUHJveHkubW0KIFVJUHJvY2Vzcy9Db2NvYS9WaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyUHJv
eHkubW0KK1VJUHJvY2Vzcy9Db2NvYS9XZWJHZW9sb2NhdGlvbk1hbmFnZXJQcm94eUNvY29hLmNw
cAogVUlQcm9jZXNzL0NvY29hL1dlYlBhZ2VQcm94eUNvY29hLm1tCiBVSVByb2Nlc3MvQ29jb2Ev
V2ViUGFzdGVib2FyZFByb3h5Q29jb2EubW0KIFVJUHJvY2Vzcy9Db2NvYS9XZWJQcmVmZXJlbmNl
c0NvY29hLm1tCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XZWJH
ZW9sb2NhdGlvbk1hbmFnZXJQcm94eUNvY29hLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0NvY29hL1dlYkdlb2xvY2F0aW9uTWFuYWdlclByb3h5Q29jb2EuY3BwCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmYw
YmZiZGU5MzIyMmIxMDU3ZjE3MzZiNzI5MjIwMTIzMmIwMjU2OGYKLS0tIC9kZXYvbnVsbAorKysg
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XZWJHZW9sb2NhdGlvbk1hbmFnZXJQcm94
eUNvY29hLmNwcApAQCAtMCwwICsxLDc2IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIyIEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJ
UycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9S
UworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BF
Q0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwor
ICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisg
KiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZp
Zy5oIgorI2luY2x1ZGUgIldlYkdlb2xvY2F0aW9uTWFuYWdlclByb3h5LmgiCisKKyNpbmNsdWRl
ICJXZWJHZW9sb2NhdGlvbk1hbmFnZXJNZXNzYWdlcy5oIgorI2luY2x1ZGUgIldlYlByb2Nlc3NQ
cm94eS5oIgorCituYW1lc3BhY2UgV2ViS2l0IHsKKworLy8gRklYTUU6IFRoaXMgc2hvdWxkIGJl
IHVzZWQgYnkgYWxsIENvY29hIHBvcnRzCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKKwordm9p
ZCBXZWJHZW9sb2NhdGlvbk1hbmFnZXJQcm94eTo6cG9zaXRpb25DaGFuZ2VkKGNvbnN0IFN0cmlu
ZyYgd2Vic2l0ZUlkZW50aWZpZXIsIFdlYkNvcmU6Okdlb2xvY2F0aW9uUG9zaXRpb25EYXRhJiYg
cG9zaXRpb24pCit7CisgICAgYXV0byByZWdpc3RyYWJsZURvbWFpbiA9IFdlYkNvcmU6OlJlZ2lz
dHJhYmxlRG9tYWluOjp1bmNoZWNrZWRDcmVhdGVGcm9tUmVnaXN0cmFibGVEb21haW5TdHJpbmco
d2Vic2l0ZUlkZW50aWZpZXIpOworICAgIGF1dG8gaXQgPSBtX3BlckRvbWFpbkRhdGEuZmluZChy
ZWdpc3RyYWJsZURvbWFpbik7CisgICAgaWYgKGl0ID09IG1fcGVyRG9tYWluRGF0YS5lbmQoKSkK
KyAgICAgICAgcmV0dXJuOworCisgICAgYXV0byYgcGVyRG9tYWluRGF0YSA9ICppdC0+dmFsdWU7
CisgICAgcGVyRG9tYWluRGF0YS5sYXN0UG9zaXRpb24gPSBXVEZNb3ZlKHBvc2l0aW9uKTsKKyAg
ICBmb3IgKGF1dG8mIHdlYlByb2Nlc3NQcm94eSA6IHBlckRvbWFpbkRhdGEud2F0Y2hlcnMpCisg
ICAgICAgIHdlYlByb2Nlc3NQcm94eS5zZW5kKE1lc3NhZ2VzOjpXZWJHZW9sb2NhdGlvbk1hbmFn
ZXI6OkRpZENoYW5nZVBvc2l0aW9uKHJlZ2lzdHJhYmxlRG9tYWluLCBwZXJEb21haW5EYXRhLmxh
c3RQb3NpdGlvbi52YWx1ZSgpKSwgMCk7Cit9CisKK3ZvaWQgV2ViR2VvbG9jYXRpb25NYW5hZ2Vy
UHJveHk6OmVycm9yT2NjdXJyZWQoY29uc3QgU3RyaW5nJiB3ZWJzaXRlSWRlbnRpZmllciwgY29u
c3QgU3RyaW5nJiBlcnJvck1lc3NhZ2UpCit7CisgICAgYXV0byByZWdpc3RyYWJsZURvbWFpbiA9
IFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluOjp1bmNoZWNrZWRDcmVhdGVGcm9tUmVnaXN0cmFi
bGVEb21haW5TdHJpbmcod2Vic2l0ZUlkZW50aWZpZXIpOworICAgIGF1dG8gaXQgPSBtX3BlckRv
bWFpbkRhdGEuZmluZChyZWdpc3RyYWJsZURvbWFpbik7CisgICAgaWYgKGl0ID09IG1fcGVyRG9t
YWluRGF0YS5lbmQoKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgYXV0byYgcGVyRG9tYWluRGF0
YSA9ICppdC0+dmFsdWU7CisgICAgZm9yIChhdXRvJiB3ZWJQcm9jZXNzUHJveHkgOiBwZXJEb21h
aW5EYXRhLndhdGNoZXJzKQorICAgICAgICB3ZWJQcm9jZXNzUHJveHkuc2VuZChNZXNzYWdlczo6
V2ViR2VvbG9jYXRpb25NYW5hZ2VyOjpEaWRGYWlsVG9EZXRlcm1pbmVQb3NpdGlvbihyZWdpc3Ry
YWJsZURvbWFpbiwgZXJyb3JNZXNzYWdlKSwgMCk7Cit9CisKK3ZvaWQgV2ViR2VvbG9jYXRpb25N
YW5hZ2VyUHJveHk6OnJlc2V0R2VvbG9jYXRpb24oY29uc3QgU3RyaW5nJiB3ZWJzaXRlSWRlbnRp
ZmllcikKK3sKKyAgICBhdXRvIHJlZ2lzdHJhYmxlRG9tYWluID0gV2ViQ29yZTo6UmVnaXN0cmFi
bGVEb21haW46OnVuY2hlY2tlZENyZWF0ZUZyb21SZWdpc3RyYWJsZURvbWFpblN0cmluZyh3ZWJz
aXRlSWRlbnRpZmllcik7CisgICAgYXV0byBpdCA9IG1fcGVyRG9tYWluRGF0YS5maW5kKHJlZ2lz
dHJhYmxlRG9tYWluKTsKKyAgICBpZiAoaXQgPT0gbV9wZXJEb21haW5EYXRhLmVuZCgpKQorICAg
ICAgICByZXR1cm47CisKKyAgICBhdXRvJiBwZXJEb21haW5EYXRhID0gKml0LT52YWx1ZTsKKyAg
ICBmb3IgKGF1dG8mIHdlYlByb2Nlc3NQcm94eSA6IHBlckRvbWFpbkRhdGEud2F0Y2hlcnMpCisg
ICAgICAgIHdlYlByb2Nlc3NQcm94eS5zZW5kKE1lc3NhZ2VzOjpXZWJHZW9sb2NhdGlvbk1hbmFn
ZXI6OlJlc2V0UGVybWlzc2lvbnMocmVnaXN0cmFibGVEb21haW4pLCAwKTsKK30KKworI2VuZGlm
CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvV2ViQ29udGV4dFN1cHBsZW1lbnQuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dl
YkNvbnRleHRTdXBwbGVtZW50LmgKaW5kZXggZWQ1NWI0MDNkYjI5Zjk0MDA0MzhiYTMyYTYwYzc1
ODI3NDkzNGZhNi4uZWMxOWNkY2NjYmI0MGY5MmQ1ODM1ZjNlYTYwMzFiZGRhNDc3YThlMiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQ29udGV4dFN1cHBsZW1lbnQuaAor
KysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJDb250ZXh0U3VwcGxlbWVudC5oCkBAIC00
NywxNCArNDcsNiBAQCBwdWJsaWM6CiAgICAgewogICAgIH0KIAotICAgIHZpcnR1YWwgdm9pZCBw
cm9jZXNzRGlkQ2xvc2UoV2ViUHJvY2Vzc1Byb3h5KikKLSAgICB7Ci0gICAgfQotCi0gICAgdmly
dHVhbCB2b2lkIHByb2Nlc3NEaWRDbG9zZShOZXR3b3JrUHJvY2Vzc1Byb3h5KikKLSAgICB7Ci0g
ICAgfQotCiAgICAgV2ViUHJvY2Vzc1Bvb2wqIHByb2Nlc3NQb29sKCkgY29uc3QgeyByZXR1cm4g
bV9wcm9jZXNzUG9vbDsgfQogICAgIHZvaWQgY2xlYXJQcm9jZXNzUG9vbCgpIHsgbV9wcm9jZXNz
UG9vbCA9IG51bGxwdHI7IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
V2ViR2VvbG9jYXRpb25NYW5hZ2VyUHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
V2ViR2VvbG9jYXRpb25NYW5hZ2VyUHJveHkuY3BwCmluZGV4IDA0ZjMyMjdjZDU1Yzk5MmE0MmNk
OTZhM2YyNWQ2OTdhZWQ3OTY1YTIuLjU2NjU3NGQzZTcxMjMyODU1ZGRjYzZjMWRlNDAzN2MxMzY2
NDQ2NWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkdlb2xvY2F0aW9u
TWFuYWdlclByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJHZW9sb2Nh
dGlvbk1hbmFnZXJQcm94eS5jcHAKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChD
KSAyMDExLCAyMDEyLCAyMDEzIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENv
cHlyaWdodCAoQykgMjAxMS0yMDIyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAq
CiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMzQsMTAgKzM0LDE1IEBACiAjaW5jbHVk
ZSAiV2ViUGFnZVByb3h5LmgiCiAjaW5jbHVkZSAiV2ViUHJvY2Vzc1Bvb2wuaCIKIAotI2RlZmlu
ZSBNRVNTQUdFX0NIRUNLKGFzc2VydGlvbikgTUVTU0FHRV9DSEVDS19CQVNFKGFzc2VydGlvbiwg
KCZjb25uZWN0aW9uKSkKKyNkZWZpbmUgTUVTU0FHRV9DSEVDSyhjb25uZWN0aW9uLCBhc3NlcnRp
b24pIE1FU1NBR0VfQ0hFQ0tfQkFTRShhc3NlcnRpb24sIChjb25uZWN0aW9uKSkKIAogbmFtZXNw
YWNlIFdlYktpdCB7CiAKK3N0YXRpYyBpbmxpbmUgV2ViUHJvY2Vzc1Byb3h5JiBjb25uZWN0aW9u
VG9XZWJQcm9jZXNzUHJveHkoY29uc3QgSVBDOjpDb25uZWN0aW9uJiBjb25uZWN0aW9uKQorewor
ICAgIHJldHVybiBzdGF0aWNfY2FzdDxXZWJQcm9jZXNzUHJveHkmPihjb25uZWN0aW9uLmNsaWVu
dCgpKTsKK30KKwogY29uc3QgY2hhciogV2ViR2VvbG9jYXRpb25NYW5hZ2VyUHJveHk6OnN1cHBs
ZW1lbnROYW1lKCkKIHsKICAgICByZXR1cm4gIldlYkdlb2xvY2F0aW9uTWFuYWdlclByb3h5IjsK
QEAgLTUwLDM0ICs1NSwzOCBAQCBSZWY8V2ViR2VvbG9jYXRpb25NYW5hZ2VyUHJveHk+IFdlYkdl
b2xvY2F0aW9uTWFuYWdlclByb3h5OjpjcmVhdGUoV2ViUHJvY2Vzc1BvbwogCiBXZWJHZW9sb2Nh
dGlvbk1hbmFnZXJQcm94eTo6V2ViR2VvbG9jYXRpb25NYW5hZ2VyUHJveHkoV2ViUHJvY2Vzc1Bv
b2wqIHByb2Nlc3NQb29sKQogICAgIDogV2ViQ29udGV4dFN1cHBsZW1lbnQocHJvY2Vzc1Bvb2wp
Ci0gICAgLCBtX3Byb3ZpZGVyKG1ha2VVbmlxdWU8QVBJOjpHZW9sb2NhdGlvblByb3ZpZGVyPigp
KQogewogICAgIFdlYkNvbnRleHRTdXBwbGVtZW50Ojpwcm9jZXNzUG9vbCgpLT5hZGRNZXNzYWdl
UmVjZWl2ZXIoTWVzc2FnZXM6OldlYkdlb2xvY2F0aW9uTWFuYWdlclByb3h5OjptZXNzYWdlUmVj
ZWl2ZXJOYW1lKCksICp0aGlzKTsKIH0KIAorV2ViR2VvbG9jYXRpb25NYW5hZ2VyUHJveHk6On5X
ZWJHZW9sb2NhdGlvbk1hbmFnZXJQcm94eSgpID0gZGVmYXVsdDsKKwogdm9pZCBXZWJHZW9sb2Nh
dGlvbk1hbmFnZXJQcm94eTo6c2V0UHJvdmlkZXIoc3RkOjp1bmlxdWVfcHRyPEFQSTo6R2VvbG9j
YXRpb25Qcm92aWRlcj4mJiBwcm92aWRlcikKIHsKLSAgICBpZiAoIXByb3ZpZGVyKQotICAgICAg
ICBtX3Byb3ZpZGVyID0gbWFrZVVuaXF1ZTxBUEk6Okdlb2xvY2F0aW9uUHJvdmlkZXI+KCk7Ci0g
ICAgZWxzZQotICAgICAgICBtX3Byb3ZpZGVyID0gV1RGTW92ZShwcm92aWRlcik7CisgICAgbV9j
bGllbnRQcm92aWRlciA9IFdURk1vdmUocHJvdmlkZXIpOwogfQogCiAvLyBXZWJDb250ZXh0U3Vw
cGxlbWVudAogCiB2b2lkIFdlYkdlb2xvY2F0aW9uTWFuYWdlclByb3h5Ojpwcm9jZXNzUG9vbERl
c3Ryb3llZCgpCiB7Ci0gICAgYm9vbCB3YXNVcGRhdGluZyA9IGlzVXBkYXRpbmcoKTsKLSAgICBt
X3VwZGF0ZVJlcXVlc3RlcnMuY2xlYXIoKTsKKyAgICBpZiAobV9wZXJEb21haW5EYXRhLmlzRW1w
dHkoKSkKKyAgICAgICAgcmV0dXJuOwogCi0gICAgQVNTRVJUKCFpc1VwZGF0aW5nKCkpOwotICAg
IGlmICh3YXNVcGRhdGluZykKLSAgICAgICAgbV9wcm92aWRlci0+c3RvcFVwZGF0aW5nKCp0aGlz
KTsKKyAgICBtX3BlckRvbWFpbkRhdGEuY2xlYXIoKTsKKyAgICBpZiAobV9jbGllbnRQcm92aWRl
cikKKyAgICAgICAgbV9jbGllbnRQcm92aWRlci0+c3RvcFVwZGF0aW5nKCp0aGlzKTsKIH0KIAot
dm9pZCBXZWJHZW9sb2NhdGlvbk1hbmFnZXJQcm94eTo6cHJvY2Vzc0RpZENsb3NlKFdlYlByb2Nl
c3NQcm94eSogd2ViUHJvY2Vzc1Byb3h5KQordm9pZCBXZWJHZW9sb2NhdGlvbk1hbmFnZXJQcm94
eTo6d2ViUHJvY2Vzc0lzR29pbmdBd2F5KFdlYlByb2Nlc3NQcm94eSYgcHJveHkpCiB7Ci0gICAg
cmVtb3ZlUmVxdWVzdGVyKHdlYlByb2Nlc3NQcm94eSk7CisgICAgVmVjdG9yPFdlYkNvcmU6OlJl
Z2lzdHJhYmxlRG9tYWluPiBhZmZlY3RlZERvbWFpbnM7CisgICAgZm9yIChhdXRvJiBbcmVnaXN0
cmFibGVEb21haW4sIHBlckRvbWFpbkRhdGFdIDogbV9wZXJEb21haW5EYXRhKSB7CisgICAgICAg
IGlmIChwZXJEb21haW5EYXRhLT53YXRjaGVycy5jb250YWlucyhwcm94eSkpCisgICAgICAgICAg
ICBhZmZlY3RlZERvbWFpbnMuYXBwZW5kKHJlZ2lzdHJhYmxlRG9tYWluKTsKKyAgICB9CisgICAg
Zm9yIChhdXRvJiByZWdpc3RyYWJsZURvbWFpbiA6IGFmZmVjdGVkRG9tYWlucykKKyAgICAgICAg
c3RvcFVwZGF0aW5nV2l0aFByb3h5KHByb3h5LCByZWdpc3RyYWJsZURvbWFpbik7CiB9CiAKIHZv
aWQgV2ViR2VvbG9jYXRpb25NYW5hZ2VyUHJveHk6OnJlZldlYkNvbnRleHRTdXBwbGVtZW50KCkK
QEAgLTkyLDgwICsxMDEsMjA0IEBAIHZvaWQgV2ViR2VvbG9jYXRpb25NYW5hZ2VyUHJveHk6OmRl
cmVmV2ViQ29udGV4dFN1cHBsZW1lbnQoKQogCiB2b2lkIFdlYkdlb2xvY2F0aW9uTWFuYWdlclBy
b3h5Ojpwcm92aWRlckRpZENoYW5nZVBvc2l0aW9uKFdlYkdlb2xvY2F0aW9uUG9zaXRpb24qIHBv
c2l0aW9uKQogewotICAgIG1fbGFzdFBvc2l0aW9uID0gcG9zaXRpb24tPmNvcmVQb3NpdGlvbigp
OwotCi0gICAgaWYgKCFwcm9jZXNzUG9vbCgpKQotICAgICAgICByZXR1cm47Ci0KLSAgICBwcm9j
ZXNzUG9vbCgpLT5zZW5kVG9BbGxQcm9jZXNzZXMoTWVzc2FnZXM6OldlYkdlb2xvY2F0aW9uTWFu
YWdlcjo6RGlkQ2hhbmdlUG9zaXRpb24obV9sYXN0UG9zaXRpb24udmFsdWUoKSkpOworICAgIGZv
ciAoYXV0byYgW3JlZ2lzdHJhYmxlRG9tYWluLCBwZXJEb21haW5EYXRhXSA6IG1fcGVyRG9tYWlu
RGF0YSkgeworICAgICAgICBwZXJEb21haW5EYXRhLT5sYXN0UG9zaXRpb24gPSBwb3NpdGlvbi0+
Y29yZVBvc2l0aW9uKCk7CisgICAgICAgIGZvciAoYXV0byYgcHJvY2VzcyA6IHBlckRvbWFpbkRh
dGEtPndhdGNoZXJzKQorICAgICAgICAgICAgcHJvY2Vzcy5zZW5kKE1lc3NhZ2VzOjpXZWJHZW9s
b2NhdGlvbk1hbmFnZXI6OkRpZENoYW5nZVBvc2l0aW9uKHJlZ2lzdHJhYmxlRG9tYWluLCBwZXJE
b21haW5EYXRhLT5sYXN0UG9zaXRpb24udmFsdWUoKSksIDApOworICAgIH0KIH0KIAogdm9pZCBX
ZWJHZW9sb2NhdGlvbk1hbmFnZXJQcm94eTo6cHJvdmlkZXJEaWRGYWlsVG9EZXRlcm1pbmVQb3Np
dGlvbihjb25zdCBTdHJpbmcmIGVycm9yTWVzc2FnZSkKIHsKLSAgICBpZiAoIXByb2Nlc3NQb29s
KCkpCi0gICAgICAgIHJldHVybjsKLQotICAgIHByb2Nlc3NQb29sKCktPnNlbmRUb0FsbFByb2Nl
c3NlcyhNZXNzYWdlczo6V2ViR2VvbG9jYXRpb25NYW5hZ2VyOjpEaWRGYWlsVG9EZXRlcm1pbmVQ
b3NpdGlvbihlcnJvck1lc3NhZ2UpKTsKKyAgICBmb3IgKGF1dG8mIFtyZWdpc3RyYWJsZURvbWFp
biwgcGVyRG9tYWluRGF0YV0gOiBtX3BlckRvbWFpbkRhdGEpIHsKKyAgICAgICAgZm9yIChhdXRv
JiBwcm94eSA6IHBlckRvbWFpbkRhdGEtPndhdGNoZXJzKQorICAgICAgICAgICAgcHJveHkuc2Vu
ZChNZXNzYWdlczo6V2ViR2VvbG9jYXRpb25NYW5hZ2VyOjpEaWRGYWlsVG9EZXRlcm1pbmVQb3Np
dGlvbihyZWdpc3RyYWJsZURvbWFpbiwgZXJyb3JNZXNzYWdlKSwgMCk7CisgICAgfQogfQogCiAj
aWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKIHZvaWQgV2ViR2VvbG9jYXRpb25NYW5hZ2VyUHJveHk6
OnJlc2V0UGVybWlzc2lvbnMoKQogewotICAgIHByb2Nlc3NQb29sKCktPnNlbmRUb0FsbFByb2Nl
c3NlcyhNZXNzYWdlczo6V2ViR2VvbG9jYXRpb25NYW5hZ2VyOjpSZXNldFBlcm1pc3Npb25zKCkp
OworICAgIEFTU0VSVChtX2NsaWVudFByb3ZpZGVyKTsKKyAgICBmb3IgKGF1dG8mIFtyZWdpc3Ry
YWJsZURvbWFpbiwgcGVyRG9tYWluRGF0YV0gOiBtX3BlckRvbWFpbkRhdGEpIHsKKyAgICAgICAg
Zm9yIChhdXRvJiBwcm94eSA6IHBlckRvbWFpbkRhdGEtPndhdGNoZXJzKQorICAgICAgICAgICAg
cHJveHkuc2VuZChNZXNzYWdlczo6V2ViR2VvbG9jYXRpb25NYW5hZ2VyOjpSZXNldFBlcm1pc3Np
b25zKHJlZ2lzdHJhYmxlRG9tYWluKSwgMCk7CisgICAgfQogfQogI2VuZGlmCiAKLXZvaWQgV2Vi
R2VvbG9jYXRpb25NYW5hZ2VyUHJveHk6OnN0YXJ0VXBkYXRpbmcoSVBDOjpDb25uZWN0aW9uJiBj
b25uZWN0aW9uLCBXZWJQYWdlUHJveHlJZGVudGlmaWVyIHBhZ2VQcm94eUlELCBjb25zdCBTdHJp
bmcmIGF1dGhvcml6YXRpb25Ub2tlbikKK3ZvaWQgV2ViR2VvbG9jYXRpb25NYW5hZ2VyUHJveHk6
OnN0YXJ0VXBkYXRpbmcoSVBDOjpDb25uZWN0aW9uJiBjb25uZWN0aW9uLCBjb25zdCBXZWJDb3Jl
OjpSZWdpc3RyYWJsZURvbWFpbiYgcmVnaXN0cmFibGVEb21haW4sIFdlYlBhZ2VQcm94eUlkZW50
aWZpZXIgcGFnZVByb3h5SUQsIGNvbnN0IFN0cmluZyYgYXV0aG9yaXphdGlvblRva2VuLCBib29s
IGVuYWJsZUhpZ2hBY2N1cmFjeSkKK3sKKyAgICBzdGFydFVwZGF0aW5nV2l0aFByb3h5KGNvbm5l
Y3Rpb25Ub1dlYlByb2Nlc3NQcm94eShjb25uZWN0aW9uKSwgcmVnaXN0cmFibGVEb21haW4sIHBh
Z2VQcm94eUlELCBhdXRob3JpemF0aW9uVG9rZW4sIGVuYWJsZUhpZ2hBY2N1cmFjeSk7Cit9CisK
K3ZvaWQgV2ViR2VvbG9jYXRpb25NYW5hZ2VyUHJveHk6OnN0YXJ0VXBkYXRpbmdXaXRoUHJveHko
V2ViUHJvY2Vzc1Byb3h5JiBwcm94eSwgY29uc3QgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4m
IHJlZ2lzdHJhYmxlRG9tYWluLCBXZWJQYWdlUHJveHlJZGVudGlmaWVyIHBhZ2VQcm94eUlELCBj
b25zdCBTdHJpbmcmIGF1dGhvcml6YXRpb25Ub2tlbiwgYm9vbCBlbmFibGVIaWdoQWNjdXJhY3kp
CiB7CiAgICAgYXV0byogcGFnZSA9IFdlYlByb2Nlc3NQcm94eTo6d2ViUGFnZShwYWdlUHJveHlJ
RCk7Ci0gICAgTUVTU0FHRV9DSEVDSyhwYWdlKTsKKyAgICBNRVNTQUdFX0NIRUNLKHByb3h5LmNv
bm5lY3Rpb24oKSwgcGFnZSk7CiAKICAgICBhdXRvIGlzVmFsaWRBdXRob3JpemF0aW9uVG9rZW4g
PSBwYWdlLT5nZW9sb2NhdGlvblBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlcigpLmlzVmFsaWRBdXRo
b3JpemF0aW9uVG9rZW4oYXV0aG9yaXphdGlvblRva2VuKTsKLSAgICBNRVNTQUdFX0NIRUNLKGlz
VmFsaWRBdXRob3JpemF0aW9uVG9rZW4pOworICAgIE1FU1NBR0VfQ0hFQ0socHJveHkuY29ubmVj
dGlvbigpLCBpc1ZhbGlkQXV0aG9yaXphdGlvblRva2VuKTsKKworICAgIGF1dG8mIHBlckRvbWFp
bkRhdGEgPSAqbV9wZXJEb21haW5EYXRhLmVuc3VyZShyZWdpc3RyYWJsZURvbWFpbiwgW10gewor
ICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZTxQZXJEb21haW5EYXRhPigpOworICAgIH0pLml0ZXJh
dG9yLT52YWx1ZTsKKworICAgIGJvb2wgd2FzVXBkYXRpbmcgPSBpc1VwZGF0aW5nKHBlckRvbWFp
bkRhdGEpOworICAgIGJvb2wgaGlnaEFjY3VyYWN5V2FzRW5hYmxlZCA9IGlzSGlnaEFjY3VyYWN5
RW5hYmxlZChwZXJEb21haW5EYXRhKTsKKworICAgIHBlckRvbWFpbkRhdGEud2F0Y2hlcnMuYWRk
KHByb3h5KTsKKyAgICBpZiAoZW5hYmxlSGlnaEFjY3VyYWN5KQorICAgICAgICBwZXJEb21haW5E
YXRhLndhdGNoZXJzTmVlZGluZ0hpZ2hBY2N1cmFjeS5hZGQocHJveHkpOwogCi0gICAgYm9vbCB3
YXNVcGRhdGluZyA9IGlzVXBkYXRpbmcoKTsKLSAgICBtX3VwZGF0ZVJlcXVlc3RlcnMuYWRkKCZj
b25uZWN0aW9uLmNsaWVudCgpKTsKICAgICBpZiAoIXdhc1VwZGF0aW5nKSB7Ci0gICAgICAgIG1f
cHJvdmlkZXItPnNldEVuYWJsZUhpZ2hBY2N1cmFjeSgqdGhpcywgaXNIaWdoQWNjdXJhY3lFbmFi
bGVkKCkpOwotICAgICAgICBtX3Byb3ZpZGVyLT5zdGFydFVwZGF0aW5nKCp0aGlzKTsKLSAgICB9
IGVsc2UgaWYgKG1fbGFzdFBvc2l0aW9uKQotICAgICAgICBjb25uZWN0aW9uLnNlbmQoTWVzc2Fn
ZXM6OldlYkdlb2xvY2F0aW9uTWFuYWdlcjo6RGlkQ2hhbmdlUG9zaXRpb24obV9sYXN0UG9zaXRp
b24udmFsdWUoKSksIDApOworICAgICAgICBwcm92aWRlclN0YXJ0VXBkYXRpbmcocGVyRG9tYWlu
RGF0YSwgcmVnaXN0cmFibGVEb21haW4pOworICAgICAgICByZXR1cm47CisgICAgfQorICAgIGlm
ICghaGlnaEFjY3VyYWN5V2FzRW5hYmxlZCAmJiBlbmFibGVIaWdoQWNjdXJhY3kpCisgICAgICAg
IHByb3ZpZGVyU2V0RW5hYmxlZEhpZ2hBY2N1cmFjeShwZXJEb21haW5EYXRhLCBlbmFibGVIaWdo
QWNjdXJhY3kpOworCisgICAgaWYgKHBlckRvbWFpbkRhdGEubGFzdFBvc2l0aW9uKQorICAgICAg
ICBwcm94eS5zZW5kKE1lc3NhZ2VzOjpXZWJHZW9sb2NhdGlvbk1hbmFnZXI6OkRpZENoYW5nZVBv
c2l0aW9uKHJlZ2lzdHJhYmxlRG9tYWluLCBwZXJEb21haW5EYXRhLmxhc3RQb3NpdGlvbi52YWx1
ZSgpKSwgMCk7CiB9CiAKLXZvaWQgV2ViR2VvbG9jYXRpb25NYW5hZ2VyUHJveHk6OnN0b3BVcGRh
dGluZyhJUEM6OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24pCit2b2lkIFdlYkdlb2xvY2F0aW9uTWFu
YWdlclByb3h5OjpzdG9wVXBkYXRpbmcoSVBDOjpDb25uZWN0aW9uJiBjb25uZWN0aW9uLCBjb25z
dCBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiYgcmVnaXN0cmFibGVEb21haW4pCiB7Ci0gICAg
cmVtb3ZlUmVxdWVzdGVyKCZjb25uZWN0aW9uLmNsaWVudCgpKTsKKyAgICBzdG9wVXBkYXRpbmdX
aXRoUHJveHkoY29ubmVjdGlvblRvV2ViUHJvY2Vzc1Byb3h5KGNvbm5lY3Rpb24pLCByZWdpc3Ry
YWJsZURvbWFpbik7CiB9CiAKLXZvaWQgV2ViR2VvbG9jYXRpb25NYW5hZ2VyUHJveHk6OnJlbW92
ZVJlcXVlc3Rlcihjb25zdCBJUEM6OkNvbm5lY3Rpb246OkNsaWVudCogY2xpZW50KQordm9pZCBX
ZWJHZW9sb2NhdGlvbk1hbmFnZXJQcm94eTo6c3RvcFVwZGF0aW5nV2l0aFByb3h5KFdlYlByb2Nl
c3NQcm94eSYgcHJveHksIGNvbnN0IFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluJiByZWdpc3Ry
YWJsZURvbWFpbikKIHsKLSAgICBib29sIHdhc1VwZGF0aW5nID0gaXNVcGRhdGluZygpOwotICAg
IGJvb2wgaGlnaEFjY3VyYWN5V2FzRW5hYmxlZCA9IGlzSGlnaEFjY3VyYWN5RW5hYmxlZCgpOwor
ICAgIGF1dG8gaXQgPSBtX3BlckRvbWFpbkRhdGEuZmluZChyZWdpc3RyYWJsZURvbWFpbik7Cisg
ICAgaWYgKGl0ID09IG1fcGVyRG9tYWluRGF0YS5lbmQoKSkKKyAgICAgICAgcmV0dXJuOworCisg
ICAgYXV0byYgcGVyRG9tYWluRGF0YSA9ICppdC0+dmFsdWU7CisgICAgYm9vbCB3YXNVcGRhdGlu
ZyA9IGlzVXBkYXRpbmcocGVyRG9tYWluRGF0YSk7CisgICAgYm9vbCBoaWdoQWNjdXJhY3lXYXNF
bmFibGVkID0gaXNIaWdoQWNjdXJhY3lFbmFibGVkKHBlckRvbWFpbkRhdGEpOwogCi0gICAgbV9o
aWdoQWNjdXJhY3lSZXF1ZXN0ZXJzLnJlbW92ZShjbGllbnQpOwotICAgIG1fdXBkYXRlUmVxdWVz
dGVycy5yZW1vdmUoY2xpZW50KTsKKyAgICBwZXJEb21haW5EYXRhLndhdGNoZXJzLnJlbW92ZShw
cm94eSk7CisgICAgcGVyRG9tYWluRGF0YS53YXRjaGVyc05lZWRpbmdIaWdoQWNjdXJhY3kucmVt
b3ZlKHByb3h5KTsKIAotICAgIGlmICh3YXNVcGRhdGluZyAmJiAhaXNVcGRhdGluZygpKQotICAg
ICAgICBtX3Byb3ZpZGVyLT5zdG9wVXBkYXRpbmcoKnRoaXMpOworICAgIGlmICh3YXNVcGRhdGlu
ZyAmJiAhaXNVcGRhdGluZyhwZXJEb21haW5EYXRhKSkKKyAgICAgICAgcHJvdmlkZXJTdG9wVXBk
YXRpbmcocGVyRG9tYWluRGF0YSk7CiAgICAgZWxzZSB7Ci0gICAgICAgIGJvb2wgaGlnaEFjY3Vy
YWN5U2hvdWxkQmVFbmFibGVkID0gaXNIaWdoQWNjdXJhY3lFbmFibGVkKCk7CisgICAgICAgIGJv
b2wgaGlnaEFjY3VyYWN5U2hvdWxkQmVFbmFibGVkID0gaXNIaWdoQWNjdXJhY3lFbmFibGVkKHBl
ckRvbWFpbkRhdGEpOwogICAgICAgICBpZiAoaGlnaEFjY3VyYWN5U2hvdWxkQmVFbmFibGVkICE9
IGhpZ2hBY2N1cmFjeVdhc0VuYWJsZWQpCi0gICAgICAgICAgICBtX3Byb3ZpZGVyLT5zZXRFbmFi
bGVIaWdoQWNjdXJhY3koKnRoaXMsIGhpZ2hBY2N1cmFjeVNob3VsZEJlRW5hYmxlZCk7CisgICAg
ICAgICAgICBwcm92aWRlclNldEVuYWJsZWRIaWdoQWNjdXJhY3kocGVyRG9tYWluRGF0YSwgaGln
aEFjY3VyYWN5U2hvdWxkQmVFbmFibGVkKTsKICAgICB9CisKKyAgICBpZiAocGVyRG9tYWluRGF0
YS53YXRjaGVycy5jb21wdXRlc0VtcHR5KCkgJiYgcGVyRG9tYWluRGF0YS53YXRjaGVyc05lZWRp
bmdIaWdoQWNjdXJhY3kuY29tcHV0ZXNFbXB0eSgpKQorICAgICAgICBtX3BlckRvbWFpbkRhdGEu
cmVtb3ZlKGl0KTsKK30KKwordm9pZCBXZWJHZW9sb2NhdGlvbk1hbmFnZXJQcm94eTo6c2V0RW5h
YmxlSGlnaEFjY3VyYWN5KElQQzo6Q29ubmVjdGlvbiYgY29ubmVjdGlvbiwgY29uc3QgV2ViQ29y
ZTo6UmVnaXN0cmFibGVEb21haW4mIHJlZ2lzdHJhYmxlRG9tYWluLCBib29sIGVuYWJsZWQpCit7
CisgICAgc2V0RW5hYmxlSGlnaEFjY3VyYWN5V2l0aFByb3h5KGNvbm5lY3Rpb25Ub1dlYlByb2Nl
c3NQcm94eShjb25uZWN0aW9uKSwgcmVnaXN0cmFibGVEb21haW4sIGVuYWJsZWQpOwogfQogCi12
b2lkIFdlYkdlb2xvY2F0aW9uTWFuYWdlclByb3h5OjpzZXRFbmFibGVIaWdoQWNjdXJhY3koSVBD
OjpDb25uZWN0aW9uJiBjb25uZWN0aW9uLCBib29sIGVuYWJsZWQpCit2b2lkIFdlYkdlb2xvY2F0
aW9uTWFuYWdlclByb3h5OjpzZXRFbmFibGVIaWdoQWNjdXJhY3lXaXRoUHJveHkoV2ViUHJvY2Vz
c1Byb3h5JiBwcm94eSwgY29uc3QgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4mIHJlZ2lzdHJh
YmxlRG9tYWluLCBib29sIGVuYWJsZWQpCiB7Ci0gICAgYm9vbCBoaWdoQWNjdXJhY3lXYXNFbmFi
bGVkID0gaXNIaWdoQWNjdXJhY3lFbmFibGVkKCk7CisgICAgYXV0byBpdCA9IG1fcGVyRG9tYWlu
RGF0YS5maW5kKHJlZ2lzdHJhYmxlRG9tYWluKTsKKyAgICBBU1NFUlQoaXQgIT0gbV9wZXJEb21h
aW5EYXRhLmVuZCgpKTsKKyAgICBpZiAoaXQgPT0gbV9wZXJEb21haW5EYXRhLmVuZCgpKQorICAg
ICAgICByZXR1cm47CisKKyAgICBhdXRvJiBwZXJEb21haW5EYXRhID0gKml0LT52YWx1ZTsKKyAg
ICBib29sIGhpZ2hBY2N1cmFjeVdhc0VuYWJsZWQgPSBpc0hpZ2hBY2N1cmFjeUVuYWJsZWQocGVy
RG9tYWluRGF0YSk7CiAKICAgICBpZiAoZW5hYmxlZCkKLSAgICAgICAgbV9oaWdoQWNjdXJhY3lS
ZXF1ZXN0ZXJzLmFkZCgmY29ubmVjdGlvbi5jbGllbnQoKSk7CisgICAgICAgIHBlckRvbWFpbkRh
dGEud2F0Y2hlcnNOZWVkaW5nSGlnaEFjY3VyYWN5LmFkZChwcm94eSk7CiAgICAgZWxzZQotICAg
ICAgICBtX2hpZ2hBY2N1cmFjeVJlcXVlc3RlcnMucmVtb3ZlKCZjb25uZWN0aW9uLmNsaWVudCgp
KTsKKyAgICAgICAgcGVyRG9tYWluRGF0YS53YXRjaGVyc05lZWRpbmdIaWdoQWNjdXJhY3kucmVt
b3ZlKHByb3h5KTsKKworICAgIGlmIChpc1VwZGF0aW5nKHBlckRvbWFpbkRhdGEpICYmIGhpZ2hB
Y2N1cmFjeVdhc0VuYWJsZWQgIT0gZW5hYmxlZCkKKyAgICAgICAgcHJvdmlkZXJTZXRFbmFibGVk
SGlnaEFjY3VyYWN5KHBlckRvbWFpbkRhdGEsIGVuYWJsZWQpOworfQorCitib29sIFdlYkdlb2xv
Y2F0aW9uTWFuYWdlclByb3h5Ojppc1VwZGF0aW5nKGNvbnN0IFBlckRvbWFpbkRhdGEmIHBlckRv
bWFpbkRhdGEpIGNvbnN0Cit7CisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKKyAgICBpZiAoIW1f
Y2xpZW50UHJvdmlkZXIpCisgICAgICAgIHJldHVybiAhcGVyRG9tYWluRGF0YS53YXRjaGVycy5j
b21wdXRlc0VtcHR5KCk7CisjZWxzZQorICAgIFVOVVNFRF9QQVJBTShwZXJEb21haW5EYXRhKTsK
KyNlbmRpZgorCisgICAgZm9yIChhdXRvJiBwZXJEb21haW5EYXRhIDogbV9wZXJEb21haW5EYXRh
LnZhbHVlcygpKSB7CisgICAgICAgIGlmICghcGVyRG9tYWluRGF0YS0+d2F0Y2hlcnMuY29tcHV0
ZXNFbXB0eSgpKQorICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfQorICAgIHJldHVybiBm
YWxzZTsKK30KKworCitib29sIFdlYkdlb2xvY2F0aW9uTWFuYWdlclByb3h5Ojppc0hpZ2hBY2N1
cmFjeUVuYWJsZWQoY29uc3QgUGVyRG9tYWluRGF0YSYgcGVyRG9tYWluRGF0YSkgY29uc3QKK3sK
KyNpZiBQTEFURk9STShJT1NfRkFNSUxZKQorICAgIGlmICghbV9jbGllbnRQcm92aWRlcikKKyAg
ICAgICAgcmV0dXJuICFwZXJEb21haW5EYXRhLndhdGNoZXJzTmVlZGluZ0hpZ2hBY2N1cmFjeS5j
b21wdXRlc0VtcHR5KCk7CisjZWxzZQorICAgIFVOVVNFRF9QQVJBTShwZXJEb21haW5EYXRhKTsK
KyNlbmRpZgorCisgICAgZm9yIChhdXRvJiBkYXRhIDogbV9wZXJEb21haW5EYXRhLnZhbHVlcygp
KSB7CisgICAgICAgIGlmICghZGF0YS0+d2F0Y2hlcnNOZWVkaW5nSGlnaEFjY3VyYWN5LmNvbXB1
dGVzRW1wdHkoKSkKKyAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgIH0KKyAgICByZXR1cm4g
ZmFsc2U7Cit9CisKK3ZvaWQgV2ViR2VvbG9jYXRpb25NYW5hZ2VyUHJveHk6OnByb3ZpZGVyU3Rh
cnRVcGRhdGluZyhQZXJEb21haW5EYXRhJiBwZXJEb21haW5EYXRhLCBjb25zdCBXZWJDb3JlOjpS
ZWdpc3RyYWJsZURvbWFpbiYgcmVnaXN0cmFibGVEb21haW4pCit7CisjaWYgUExBVEZPUk0oSU9T
X0ZBTUlMWSkKKyAgICBpZiAoIW1fY2xpZW50UHJvdmlkZXIpIHsKKyAgICAgICAgQVNTRVJUKCFw
ZXJEb21haW5EYXRhLnByb3ZpZGVyKTsKKyAgICAgICAgcGVyRG9tYWluRGF0YS5wcm92aWRlciA9
IG1ha2VVbmlxdWU8V2ViQ29yZTo6Q29yZUxvY2F0aW9uR2VvbG9jYXRpb25Qcm92aWRlcj4ocmVn
aXN0cmFibGVEb21haW4sICp0aGlzKTsKKyAgICAgICAgcGVyRG9tYWluRGF0YS5wcm92aWRlci0+
c2V0RW5hYmxlSGlnaEFjY3VyYWN5KCFwZXJEb21haW5EYXRhLndhdGNoZXJzTmVlZGluZ0hpZ2hB
Y2N1cmFjeS5jb21wdXRlc0VtcHR5KCkpOworICAgICAgICBwZXJEb21haW5EYXRhLnByb3ZpZGVy
LT5zdGFydCgpOworICAgICAgICByZXR1cm47CisgICAgfQorI2Vsc2UKKyAgICBVTlVTRURfUEFS
QU0ocmVnaXN0cmFibGVEb21haW4pOworICAgIGlmICghbV9jbGllbnRQcm92aWRlcikKKyAgICAg
ICAgcmV0dXJuOworI2VuZGlmCisKKyAgICBtX2NsaWVudFByb3ZpZGVyLT5zZXRFbmFibGVIaWdo
QWNjdXJhY3koKnRoaXMsIGlzSGlnaEFjY3VyYWN5RW5hYmxlZChwZXJEb21haW5EYXRhKSk7Cisg
ICAgbV9jbGllbnRQcm92aWRlci0+c3RhcnRVcGRhdGluZygqdGhpcyk7Cit9CisKK3ZvaWQgV2Vi
R2VvbG9jYXRpb25NYW5hZ2VyUHJveHk6OnByb3ZpZGVyU3RvcFVwZGF0aW5nKFBlckRvbWFpbkRh
dGEmIHBlckRvbWFpbkRhdGEpCit7CisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKKyAgICBpZiAo
IW1fY2xpZW50UHJvdmlkZXIpIHsKKyAgICAgICAgcGVyRG9tYWluRGF0YS5wcm92aWRlci0+c3Rv
cCgpOworICAgICAgICByZXR1cm47CisgICAgfQorI2Vsc2UKKyAgICBVTlVTRURfUEFSQU0ocGVy
RG9tYWluRGF0YSk7CisgICAgaWYgKCFtX2NsaWVudFByb3ZpZGVyKQorICAgICAgICByZXR1cm47
CisjZW5kaWYKKworICAgIG1fY2xpZW50UHJvdmlkZXItPnN0b3BVcGRhdGluZygqdGhpcyk7Cit9
CisKK3ZvaWQgV2ViR2VvbG9jYXRpb25NYW5hZ2VyUHJveHk6OnByb3ZpZGVyU2V0RW5hYmxlZEhp
Z2hBY2N1cmFjeShQZXJEb21haW5EYXRhJiBwZXJEb21haW5EYXRhLCBib29sIGVuYWJsZWQpCit7
CisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKKyAgICBpZiAoIW1fY2xpZW50UHJvdmlkZXIpIHsK
KyAgICAgICAgcGVyRG9tYWluRGF0YS5wcm92aWRlci0+c2V0RW5hYmxlSGlnaEFjY3VyYWN5KGVu
YWJsZWQpOworICAgICAgICByZXR1cm47CisgICAgfQorI2Vsc2UKKyAgICBVTlVTRURfUEFSQU0o
cGVyRG9tYWluRGF0YSk7CisgICAgaWYgKCFtX2NsaWVudFByb3ZpZGVyKQorICAgICAgICByZXR1
cm47CisjZW5kaWYKIAotICAgIGJvb2wgaGlnaEFjY3VyYWN5U2hvdWxkQmVFbmFibGVkID0gaXNI
aWdoQWNjdXJhY3lFbmFibGVkKCk7Ci0gICAgaWYgKGlzVXBkYXRpbmcoKSAmJiBoaWdoQWNjdXJh
Y3lXYXNFbmFibGVkICE9IGhpZ2hBY2N1cmFjeVNob3VsZEJlRW5hYmxlZCkKLSAgICAgICAgbV9w
cm92aWRlci0+c2V0RW5hYmxlSGlnaEFjY3VyYWN5KCp0aGlzLCBoaWdoQWNjdXJhY3lTaG91bGRC
ZUVuYWJsZWQpOworICAgIG1fY2xpZW50UHJvdmlkZXItPnNldEVuYWJsZUhpZ2hBY2N1cmFjeSgq
dGhpcywgZW5hYmxlZCk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViR2VvbG9jYXRpb25NYW5hZ2VyUHJveHkuaCBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkdlb2xvY2F0aW9uTWFuYWdlclByb3h5LmgKaW5kZXgg
NzQ5MzZlNDVhMGQ4MzgzYThiNGIzZDZkNTc4YzliZDIyYmUzZmE1ZS4uZjlhMGNhNjQ5NzhhNDlj
OTEwMDBhZGYxYzRjYjRhMDExMjg3ZTEyZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvV2ViR2VvbG9jYXRpb25NYW5hZ2VyUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9XZWJHZW9sb2NhdGlvbk1hbmFnZXJQcm94eS5oCkBAIC0xLDUgKzEsNSBAQAogLyoK
LSAqIENvcHlyaWdodCAoQykgMjAxMSwgMjAxMiwgMjAxMyBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEtMjAyMiBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTMxLDkgKzMx
LDE1IEBACiAjaW5jbHVkZSAiV2ViQ29udGV4dFN1cHBsZW1lbnQuaCIKICNpbmNsdWRlICJXZWJQ
YWdlUHJveHlJZGVudGlmaWVyLmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9HZW9sb2NhdGlvblBvc2l0
aW9uRGF0YS5oPgotI2luY2x1ZGUgPHd0Zi9IYXNoU2V0Lmg+CisjaW5jbHVkZSA8V2ViQ29yZS9S
ZWdpc3RyYWJsZURvbWFpbi5oPgorI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CisjaW5jbHVkZSA8
d3RmL1dlYWtIYXNoU2V0Lmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAKKyNp
ZiBQTEFURk9STShJT1NfRkFNSUxZKQorI2luY2x1ZGUgPFdlYkNvcmUvQ29yZUxvY2F0aW9uR2Vv
bG9jYXRpb25Qcm92aWRlci5oPgorI2VuZGlmCisKIG5hbWVzcGFjZSBBUEkgewogY2xhc3MgR2Vv
bG9jYXRpb25Qcm92aWRlcjsKIH0KQEAgLTQzLDExICs0OSwxNiBAQCBuYW1lc3BhY2UgV2ViS2l0
IHsKIGNsYXNzIFdlYkdlb2xvY2F0aW9uUG9zaXRpb247CiBjbGFzcyBXZWJQcm9jZXNzUG9vbDsK
IAotY2xhc3MgV2ViR2VvbG9jYXRpb25NYW5hZ2VyUHJveHkgOiBwdWJsaWMgQVBJOjpPYmplY3RJ
bXBsPEFQSTo6T2JqZWN0OjpUeXBlOjpHZW9sb2NhdGlvbk1hbmFnZXI+LCBwdWJsaWMgV2ViQ29u
dGV4dFN1cHBsZW1lbnQsIHByaXZhdGUgSVBDOjpNZXNzYWdlUmVjZWl2ZXIgeworY2xhc3MgV2Vi
R2VvbG9jYXRpb25NYW5hZ2VyUHJveHkgOiBwdWJsaWMgQVBJOjpPYmplY3RJbXBsPEFQSTo6T2Jq
ZWN0OjpUeXBlOjpHZW9sb2NhdGlvbk1hbmFnZXI+LCBwdWJsaWMgV2ViQ29udGV4dFN1cHBsZW1l
bnQsIHByaXZhdGUgSVBDOjpNZXNzYWdlUmVjZWl2ZXIKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZ
KQorICAgICwgcHVibGljIFdlYkNvcmU6OkNvcmVMb2NhdGlvbkdlb2xvY2F0aW9uUHJvdmlkZXI6
OkNsaWVudAorI2VuZGlmCit7CiBwdWJsaWM6CiAgICAgc3RhdGljIGNvbnN0IGNoYXIqIHN1cHBs
ZW1lbnROYW1lKCk7CiAKICAgICBzdGF0aWMgUmVmPFdlYkdlb2xvY2F0aW9uTWFuYWdlclByb3h5
PiBjcmVhdGUoV2ViUHJvY2Vzc1Bvb2wqKTsKKyAgICB+V2ViR2VvbG9jYXRpb25NYW5hZ2VyUHJv
eHkoKTsKIAogICAgIHZvaWQgc2V0UHJvdmlkZXIoc3RkOjp1bmlxdWVfcHRyPEFQSTo6R2VvbG9j
YXRpb25Qcm92aWRlcj4mJik7CiAKQEAgLTU2LDM2ICs2Nyw1OSBAQCBwdWJsaWM6CiAjaWYgUExB
VEZPUk0oSU9TX0ZBTUlMWSkKICAgICB2b2lkIHJlc2V0UGVybWlzc2lvbnMoKTsKICNlbmRpZgot
ICAgIGNvbnN0IHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6R2VvbG9jYXRpb25Qb3NpdGlvbkRhdGE+
JiBsYXN0UG9zaXRpb24oKSBjb25zdCB7IHJldHVybiBtX2xhc3RQb3NpdGlvbjsgfQogCiAgICAg
dXNpbmcgQVBJOjpPYmplY3Q6OnJlZjsKICAgICB1c2luZyBBUEk6Ok9iamVjdDo6ZGVyZWY7CiAK
KyAgICB2b2lkIHdlYlByb2Nlc3NJc0dvaW5nQXdheShXZWJQcm9jZXNzUHJveHkmKTsKKwogcHJp
dmF0ZToKICAgICBleHBsaWNpdCBXZWJHZW9sb2NhdGlvbk1hbmFnZXJQcm94eShXZWJQcm9jZXNz
UG9vbCopOwogCiAgICAgLy8gV2ViQ29udGV4dFN1cHBsZW1lbnQKICAgICB2b2lkIHByb2Nlc3NQ
b29sRGVzdHJveWVkKCkgb3ZlcnJpZGU7Ci0gICAgdm9pZCBwcm9jZXNzRGlkQ2xvc2UoV2ViUHJv
Y2Vzc1Byb3h5Kikgb3ZlcnJpZGU7CiAgICAgdm9pZCByZWZXZWJDb250ZXh0U3VwcGxlbWVudCgp
IG92ZXJyaWRlOwogICAgIHZvaWQgZGVyZWZXZWJDb250ZXh0U3VwcGxlbWVudCgpIG92ZXJyaWRl
OwogCiAgICAgLy8gSVBDOjpNZXNzYWdlUmVjZWl2ZXIKICAgICB2b2lkIGRpZFJlY2VpdmVNZXNz
YWdlKElQQzo6Q29ubmVjdGlvbiYsIElQQzo6RGVjb2RlciYpIG92ZXJyaWRlOwogCi0gICAgYm9v
bCBpc1VwZGF0aW5nKCkgY29uc3QgeyByZXR1cm4gIW1fdXBkYXRlUmVxdWVzdGVycy5pc0VtcHR5
KCk7IH0KLSAgICBib29sIGlzSGlnaEFjY3VyYWN5RW5hYmxlZCgpIGNvbnN0IHsgcmV0dXJuICFt
X2hpZ2hBY2N1cmFjeVJlcXVlc3RlcnMuaXNFbXB0eSgpOyB9CisgICAgLy8gSVBDIG1lc3NhZ2Vz
LgorICAgIHZvaWQgc3RhcnRVcGRhdGluZyhJUEM6OkNvbm5lY3Rpb24mLCBjb25zdCBXZWJDb3Jl
OjpSZWdpc3RyYWJsZURvbWFpbiYsIFdlYlBhZ2VQcm94eUlkZW50aWZpZXIsIGNvbnN0IFN0cmlu
ZyYgYXV0aG9yaXphdGlvblRva2VuLCBib29sIGVuYWJsZUhpZ2hBY2N1cmFjeSk7CisgICAgdm9p
ZCBzdG9wVXBkYXRpbmcoSVBDOjpDb25uZWN0aW9uJiwgY29uc3QgV2ViQ29yZTo6UmVnaXN0cmFi
bGVEb21haW4mKTsKKyAgICB2b2lkIHNldEVuYWJsZUhpZ2hBY2N1cmFjeShJUEM6OkNvbm5lY3Rp
b24mLCBjb25zdCBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiYsIGJvb2wpOworCisgICAgdm9p
ZCBzdGFydFVwZGF0aW5nV2l0aFByb3h5KFdlYlByb2Nlc3NQcm94eSYsIGNvbnN0IFdlYkNvcmU6
OlJlZ2lzdHJhYmxlRG9tYWluJiwgV2ViUGFnZVByb3h5SWRlbnRpZmllciwgY29uc3QgU3RyaW5n
JiBhdXRob3JpemF0aW9uVG9rZW4sIGJvb2wgZW5hYmxlSGlnaEFjY3VyYWN5KTsKKyAgICB2b2lk
IHN0b3BVcGRhdGluZ1dpdGhQcm94eShXZWJQcm9jZXNzUHJveHkmLCBjb25zdCBXZWJDb3JlOjpS
ZWdpc3RyYWJsZURvbWFpbiYpOworICAgIHZvaWQgc2V0RW5hYmxlSGlnaEFjY3VyYWN5V2l0aFBy
b3h5KFdlYlByb2Nlc3NQcm94eSYsIGNvbnN0IFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluJiwg
Ym9vbCk7CiAKLSAgICB2b2lkIHN0YXJ0VXBkYXRpbmcoSVBDOjpDb25uZWN0aW9uJiwgV2ViUGFn
ZVByb3h5SWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiBhdXRob3JpemF0aW9uVG9rZW4pOwotICAg
IHZvaWQgc3RvcFVwZGF0aW5nKElQQzo6Q29ubmVjdGlvbiYpOwotICAgIHZvaWQgcmVtb3ZlUmVx
dWVzdGVyKGNvbnN0IElQQzo6Q29ubmVjdGlvbjo6Q2xpZW50Kik7Ci0gICAgdm9pZCBzZXRFbmFi
bGVIaWdoQWNjdXJhY3koSVBDOjpDb25uZWN0aW9uJiwgYm9vbCk7CisjaWYgUExBVEZPUk0oSU9T
X0ZBTUlMWSkKKyAgICAvLyBDb3JlTG9jYXRpb25HZW9sb2NhdGlvblByb3ZpZGVyOjpDbGllbnQK
KyAgICB2b2lkIHBvc2l0aW9uQ2hhbmdlZChjb25zdCBTdHJpbmcmIHdlYnNpdGVJZGVudGlmaWVy
LCBXZWJDb3JlOjpHZW9sb2NhdGlvblBvc2l0aW9uRGF0YSYmKSBmaW5hbDsKKyAgICB2b2lkIGVy
cm9yT2NjdXJyZWQoY29uc3QgU3RyaW5nJiB3ZWJzaXRlSWRlbnRpZmllciwgY29uc3QgU3RyaW5n
JiBlcnJvck1lc3NhZ2UpIGZpbmFsOworICAgIHZvaWQgcmVzZXRHZW9sb2NhdGlvbihjb25zdCBT
dHJpbmcmIHdlYnNpdGVJZGVudGlmaWVyKSBmaW5hbDsKKyNlbmRpZgorCisgICAgc3RydWN0IFBl
ckRvbWFpbkRhdGEgeworICAgICAgICBXVEZfTUFLRV9TVFJVQ1RfRkFTVF9BTExPQ0FURUQ7Cisg
ICAgICAgIFdlYWtIYXNoU2V0PFdlYlByb2Nlc3NQcm94eT4gd2F0Y2hlcnM7CisgICAgICAgIFdl
YWtIYXNoU2V0PFdlYlByb2Nlc3NQcm94eT4gd2F0Y2hlcnNOZWVkaW5nSGlnaEFjY3VyYWN5Owor
ICAgICAgICBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6Okdlb2xvY2F0aW9uUG9zaXRpb25EYXRhPiBs
YXN0UG9zaXRpb247CisKKyAgICAgICAgLy8gRklYTUU6IFVzZSBmb3IgYWxsIENvY29hIHBvcnRz
LgorI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCisgICAgICAgIHN0ZDo6dW5pcXVlX3B0cjxXZWJD
b3JlOjpDb3JlTG9jYXRpb25HZW9sb2NhdGlvblByb3ZpZGVyPiBwcm92aWRlcjsKKyNlbmRpZgor
ICAgIH07CiAKLSAgICBIYXNoU2V0PGNvbnN0IElQQzo6Q29ubmVjdGlvbjo6Q2xpZW50Kj4gbV91
cGRhdGVSZXF1ZXN0ZXJzOwotICAgIEhhc2hTZXQ8Y29uc3QgSVBDOjpDb25uZWN0aW9uOjpDbGll
bnQqPiBtX2hpZ2hBY2N1cmFjeVJlcXVlc3RlcnM7CisgICAgYm9vbCBpc1VwZGF0aW5nKGNvbnN0
IFBlckRvbWFpbkRhdGEmKSBjb25zdDsKKyAgICBib29sIGlzSGlnaEFjY3VyYWN5RW5hYmxlZChj
b25zdCBQZXJEb21haW5EYXRhJikgY29uc3Q7CisgICAgdm9pZCBwcm92aWRlclN0YXJ0VXBkYXRp
bmcoUGVyRG9tYWluRGF0YSYsIGNvbnN0IFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluJik7Cisg
ICAgdm9pZCBwcm92aWRlclN0b3BVcGRhdGluZyhQZXJEb21haW5EYXRhJik7CisgICAgdm9pZCBw
cm92aWRlclNldEVuYWJsZWRIaWdoQWNjdXJhY3koUGVyRG9tYWluRGF0YSYsIGJvb2wgZW5hYmxl
ZCk7CiAKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8QVBJOjpHZW9sb2NhdGlvblByb3ZpZGVyPiBtX3By
b3ZpZGVyOwotICAgIHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6R2VvbG9jYXRpb25Qb3NpdGlvbkRh
dGE+IG1fbGFzdFBvc2l0aW9uOworICAgIEhhc2hNYXA8V2ViQ29yZTo6UmVnaXN0cmFibGVEb21h
aW4sIHN0ZDo6dW5pcXVlX3B0cjxQZXJEb21haW5EYXRhPj4gbV9wZXJEb21haW5EYXRhOworICAg
IHN0ZDo6dW5pcXVlX3B0cjxBUEk6Okdlb2xvY2F0aW9uUHJvdmlkZXI+IG1fY2xpZW50UHJvdmlk
ZXI7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL1dlYkdlb2xvY2F0aW9uTWFuYWdlclByb3h5Lm1lc3NhZ2VzLmluIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViR2VvbG9jYXRpb25NYW5hZ2VyUHJveHkubWVzc2FnZXMu
aW4KaW5kZXggZTVlOWMyN2QxNGE1ZmI3MjZmY2MyYzgxZmYzZTE2NWVhM2U4NDBiZS4uOTA0MWE5
MGMyNTBmOGFkZDY4YmIxM2IzYWJiNTRiZWI2NmNiMmQyNyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvV2ViR2VvbG9jYXRpb25NYW5hZ2VyUHJveHkubWVzc2FnZXMuaW4KKysr
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViR2VvbG9jYXRpb25NYW5hZ2VyUHJveHkubWVz
c2FnZXMuaW4KQEAgLTIxLDcgKzIxLDcgQEAKICMgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KIAogbWVzc2FnZXMgLT4g
V2ViR2VvbG9jYXRpb25NYW5hZ2VyUHJveHkgewotICAgIFN0YXJ0VXBkYXRpbmcoV2ViS2l0OjpX
ZWJQYWdlUHJveHlJZGVudGlmaWVyIHBhZ2VQcm94eUlELCBTdHJpbmcgYXV0aG9yaXphdGlvblRv
a2VuKSBXYW50c0Nvbm5lY3Rpb24KLSAgICBTdG9wVXBkYXRpbmcoKSBXYW50c0Nvbm5lY3Rpb24K
LSAgICBTZXRFbmFibGVIaWdoQWNjdXJhY3koYm9vbCBlbmFibGVkKSBXYW50c0Nvbm5lY3Rpb24K
KyAgICBTdGFydFVwZGF0aW5nKFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluIHJlZ2lzdHJhYmxl
RG9tYWluLCBXZWJLaXQ6OldlYlBhZ2VQcm94eUlkZW50aWZpZXIgcGFnZVByb3h5SUQsIFN0cmlu
ZyBhdXRob3JpemF0aW9uVG9rZW4sIGJvb2wgZW5hYmxlSGlnaEFjY3VyYWN5KSBXYW50c0Nvbm5l
Y3Rpb24KKyAgICBTdG9wVXBkYXRpbmcoV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4gcmVnaXN0
cmFibGVEb21haW4pIFdhbnRzQ29ubmVjdGlvbgorICAgIFNldEVuYWJsZUhpZ2hBY2N1cmFjeShX
ZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiByZWdpc3RyYWJsZURvbWFpbiwgYm9vbCBlbmFibGVk
KSBXYW50c0Nvbm5lY3Rpb24KIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L1dlYlByb2Nlc3NQb29sLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQ
b29sLmNwcAppbmRleCBmNjBkM2VjZDJjYTZmMGZjNzM2NzBjMzlkYTJhYjc2MDAzNWYyZjc0Li5m
YTE3NDJjZjMyZGE5OTUyNzMyM2RmYzdjOGJmMGE3OTA2MzA0MWZlIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5jcHAKKysrIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuY3BwCkBAIC00MzEsOSArNDMxLDYgQEAgdm9pZCBX
ZWJQcm9jZXNzUG9vbDo6c2NyZWVuUHJvcGVydGllc1N0YXRlQ2hhbmdlZCgpCiAKIHZvaWQgV2Vi
UHJvY2Vzc1Bvb2w6Om5ldHdvcmtQcm9jZXNzRGlkVGVybWluYXRlKE5ldHdvcmtQcm9jZXNzUHJv
eHkmIG5ldHdvcmtQcm9jZXNzUHJveHksIE5ldHdvcmtQcm9jZXNzUHJveHk6OlRlcm1pbmF0aW9u
UmVhc29uIHJlYXNvbikKIHsKLSAgICBmb3IgKGF1dG8mIHN1cHBsZW1lbnQgOiBtX3N1cHBsZW1l
bnRzLnZhbHVlcygpKQotICAgICAgICBzdXBwbGVtZW50LT5wcm9jZXNzRGlkQ2xvc2UoJm5ldHdv
cmtQcm9jZXNzUHJveHkpOwotCiAgICAgaWYgKHJlYXNvbiA9PSBOZXR3b3JrUHJvY2Vzc1Byb3h5
OjpUZXJtaW5hdGlvblJlYXNvbjo6Q3Jhc2gpCiAgICAgICAgIG1fY2xpZW50Lm5ldHdvcmtQcm9j
ZXNzRGlkQ3Jhc2godGhpcyk7CiAKQEAgLTEwNTcsNyArMTA1NCw3IEBAIHZvaWQgV2ViUHJvY2Vz
c1Bvb2w6OmRpc2Nvbm5lY3RQcm9jZXNzKFdlYlByb2Nlc3NQcm94eSYgcHJvY2VzcykKICAgICBp
ZiAocHJvY2Vzcy5pc1J1bm5pbmdXb3JrZXJzKCkpCiAgICAgICAgIHJlbW92ZUZyb21SZW1vdGVX
b3JrZXJQcm9jZXNzZXMocHJvY2Vzcyk7CiAKLSAgICBzdGF0aWNfY2FzdDxXZWJDb250ZXh0U3Vw
cGxlbWVudCo+KHN1cHBsZW1lbnQ8V2ViR2VvbG9jYXRpb25NYW5hZ2VyUHJveHk+KCkpLT5wcm9j
ZXNzRGlkQ2xvc2UoJnByb2Nlc3MpOworICAgIHN1cHBsZW1lbnQ8V2ViR2VvbG9jYXRpb25NYW5h
Z2VyUHJveHk+KCktPndlYlByb2Nlc3NJc0dvaW5nQXdheShwcm9jZXNzKTsKIAogICAgIG1fcHJv
Y2Vzc2VzLnJlbW92ZUZpcnN0KHByb2Nlc3MpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9pb3MvV0tHZW9sb2NhdGlvblByb3ZpZGVySU9TLm1tIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvaW9zL1dLR2VvbG9jYXRpb25Qcm92aWRlcklPUy5tbQppbmRleCBmNWU5ZmQ3
YmMzNDEyOTdhZjdiMjRlNjc0MTYzMzJjZDk2YWQ3MzljLi5lNjM4YWQ5YzRlOGI3MzhiZjE2NTE0
ZDcxOWRjMWJlOGE3NmI1OWQ0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9p
b3MvV0tHZW9sb2NhdGlvblByb3ZpZGVySU9TLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL2lvcy9XS0dlb2xvY2F0aW9uUHJvdmlkZXJJT1MubW0KQEAgLTUxLDcgKzUxLDYgQEAKICNp
bXBvcnQgPHd0Zi9VUkwuaD4KIAogLy8gRklYTUU6IFJlbW92ZSB1c2Ugb2YgV2ViS2l0MSBmcm9t
IFdlYktpdDIKLSNpbXBvcnQgPFdlYktpdC9XZWJHZW9sb2NhdGlvbkNvcmVMb2NhdGlvblByb3Zp
ZGVyLmg+CiAjaW1wb3J0IDxXZWJLaXQvV2ViQWxsb3dEZW55UG9saWN5TGlzdGVuZXIuaD4KIAog
QUxMT1dfREVQUkVDQVRFRF9ERUNMQVJBVElPTlNfQkVHSU4KQEAgLTU5LDkgKzU4LDYgQEAgQUxM
T1dfREVQUkVDQVRFRF9ERUNMQVJBVElPTlNfQkVHSU4KIEBpbnRlcmZhY2UgV0tHZW9sb2NhdGlv
blByb3ZpZGVySU9TIChfV0tHZW9sb2NhdGlvbkNvcmVMb2NhdGlvbkxpc3RlbmVyKSA8X1dLR2Vv
bG9jYXRpb25Db3JlTG9jYXRpb25MaXN0ZW5lcj4KIEBlbmQKIAotQGludGVyZmFjZSBXS0xlZ2Fj
eUNvcmVMb2NhdGlvblByb3ZpZGVyIDogTlNPYmplY3Q8X1dLR2VvbG9jYXRpb25Db3JlTG9jYXRp
b25Qcm92aWRlciwgV2ViR2VvbG9jYXRpb25Db3JlTG9jYXRpb25VcGRhdGVMaXN0ZW5lcj4KLUBl
bmQKLQogQGludGVyZmFjZSBXS1dlYkFsbG93RGVueVBvbGljeUxpc3RlbmVyIDogTlNPYmplY3Q8
V2ViQWxsb3dEZW55UG9saWN5TGlzdGVuZXI+CiAtIChpZClpbml0V2l0aENvbXBsZXRpb25IYW5k
bGVyOihGdW5jdGlvbjx2b2lkKGJvb2wpPiYmKWNvbXBsZXRpb25IYW5kbGVyOwogLSAodm9pZClk
ZW55T25seVRoaXNSZXF1ZXN0IE5PX1JFVFVSTl9EVUVfVE9fQVNTRVJUOwpAQCAtMTQ2LDI1ICsx
NDIsNDIgQEAgLSAoaWQpaW5pdFdpdGhQcm9jZXNzUG9vbDooV2ViS2l0OjpXZWJQcm9jZXNzUG9v
bCYpcHJvY2Vzc1Bvb2wKICAgICBzZWxmID0gW3N1cGVyIGluaXRdOwogICAgIGlmICghc2VsZikK
ICAgICAgICAgcmV0dXJuIG5pbDsKLSAgICBfZ2VvbG9jYXRpb25NYW5hZ2VyID0gcHJvY2Vzc1Bv
b2wuc3VwcGxlbWVudDxXZWJLaXQ6OldlYkdlb2xvY2F0aW9uTWFuYWdlclByb3h5PigpOwotICAg
IFdLR2VvbG9jYXRpb25Qcm92aWRlclYxIHByb3ZpZGVyQ2FsbGJhY2sgPSB7Ci0gICAgICAgIHsg
MSwgc2VsZiB9LAotICAgICAgICBzdGFydFVwZGF0aW5nQ2FsbGJhY2ssCi0gICAgICAgIHN0b3BV
cGRhdGluZ0NhbGxiYWNrLAotICAgICAgICBzZXRFbmFibGVIaWdoQWNjdXJhY3kKLSAgICB9Owot
ICAgIFdLR2VvbG9jYXRpb25NYW5hZ2VyU2V0UHJvdmlkZXIodG9BUEkoX2dlb2xvY2F0aW9uTWFu
YWdlci5nZXQoKSksICZwcm92aWRlckNhbGxiYWNrLmJhc2UpOwotICAgIF9jb3JlTG9jYXRpb25Q
cm92aWRlciA9IHdyYXBwZXIocHJvY2Vzc1Bvb2wpLl9jb3JlTG9jYXRpb25Qcm92aWRlciA/OiBh
ZG9wdE5TKHN0YXRpY19jYXN0PGlkIDxfV0tHZW9sb2NhdGlvbkNvcmVMb2NhdGlvblByb3ZpZGVy
Pj4oW1tXS0xlZ2FjeUNvcmVMb2NhdGlvblByb3ZpZGVyIGFsbG9jXSBpbml0XSkpOwotICAgIFtf
Y29yZUxvY2F0aW9uUHJvdmlkZXIgc2V0TGlzdGVuZXI6c2VsZl07CisKKyAgICAvLyBPbiBpT1Ms
IFdlYktpdCBub3JtYWxseSBwcm92aWRlcyB0aGUgbG9jYXRpb24uIEhvd2V2ZXIsIGlmIHRoZSBj
bGllbnQgc2V0cyBhIGNvcmVMb2NhdGlvblByb3ZpZGVyLCB0aGVuIHdlIHVzZSB0aGF0IG9uZSBp
bnN0ZWFkLgorICAgIC8vIFRoaXMgaXMgdXNlZnVsIGZvciBXZWJLaXRUZXN0UnVubmVyIHRvIHBy
b3ZpZGUgYSBkdW1teSBnZW9sb2NhdGlvbiBwcm92aWRlci4gSXQgaXMgYWxzbyB1c2VkIGJ5IGNl
cnRhaW4gYXBwcyB0byBkZW55IGFsbAorICAgIC8vIGdlb2xvY2F0aW9uIGF1dGhvcml6YXRpb24g
YXMgYSB3YXkgdG8gZGlzYWJsZSBzdXBwb3J0IGZvciBnZW9sb2NhdGlvbi4KKyAgICBpZiAod3Jh
cHBlcihwcm9jZXNzUG9vbCkuX2NvcmVMb2NhdGlvblByb3ZpZGVyKSB7CisgICAgICAgIF9nZW9s
b2NhdGlvbk1hbmFnZXIgPSBwcm9jZXNzUG9vbC5zdXBwbGVtZW50PFdlYktpdDo6V2ViR2VvbG9j
YXRpb25NYW5hZ2VyUHJveHk+KCk7CisgICAgICAgIFdLR2VvbG9jYXRpb25Qcm92aWRlclYxIHBy
b3ZpZGVyQ2FsbGJhY2sgPSB7CisgICAgICAgICAgICB7IDEsIHNlbGYgfSwKKyAgICAgICAgICAg
IHN0YXJ0VXBkYXRpbmdDYWxsYmFjaywKKyAgICAgICAgICAgIHN0b3BVcGRhdGluZ0NhbGxiYWNr
LAorICAgICAgICAgICAgc2V0RW5hYmxlSGlnaEFjY3VyYWN5CisgICAgICAgIH07CisgICAgICAg
IFdLR2VvbG9jYXRpb25NYW5hZ2VyU2V0UHJvdmlkZXIodG9BUEkoX2dlb2xvY2F0aW9uTWFuYWdl
ci5nZXQoKSksICZwcm92aWRlckNhbGxiYWNrLmJhc2UpOworICAgICAgICBfY29yZUxvY2F0aW9u
UHJvdmlkZXIgPSB3cmFwcGVyKHByb2Nlc3NQb29sKS5fY29yZUxvY2F0aW9uUHJvdmlkZXI7Cisg
ICAgICAgIFtfY29yZUxvY2F0aW9uUHJvdmlkZXIgc2V0TGlzdGVuZXI6c2VsZl07CisgICAgfQog
ICAgIHJldHVybiBzZWxmOwogfQogCiAtICh2b2lkKWRlY2lkZVBvbGljeUZvckdlb2xvY2F0aW9u
UmVxdWVzdEZyb21PcmlnaW46KFdlYktpdDo6RnJhbWVJbmZvRGF0YSYmKWZyYW1lSW5mbyBjb21w
bGV0aW9uSGFuZGxlcjooRnVuY3Rpb248dm9pZChib29sKT4mJiljb21wbGV0aW9uSGFuZGxlciB2
aWV3OihXS1dlYlZpZXcgKiljb250ZW50VmlldwogewotICAgIC8vIFN0ZXAgMTogYXNrIHRoZSB1
c2VyIGlmIHRoZSBhcHAgY2FuIHVzZSBHZW9sb2NhdGlvbi4KKyAgICBXZWJDb3JlOjpSZWdpc3Ry
YWJsZURvbWFpbiByZWdpc3RyYWJsZURvbWFpbihmcmFtZUluZm8uc2VjdXJpdHlPcmlnaW4pOwog
ICAgIEdlb2xvY2F0aW9uUmVxdWVzdERhdGEgZ2VvbG9jYXRpb25SZXF1ZXN0RGF0YSB7IFtjb250
ZW50VmlldyBVUkxdLCBXVEZNb3ZlKGZyYW1lSW5mbyksIFdURk1vdmUoY29tcGxldGlvbkhhbmRs
ZXIpLCBjb250ZW50VmlldyB9OwogICAgIF9yZXF1ZXN0c1dhaXRpbmdGb3JDb3JlTG9jYXRpb25B
dXRob3JpemF0aW9uLmFwcGVuZChXVEZNb3ZlKGdlb2xvY2F0aW9uUmVxdWVzdERhdGEpKTsKLSAg
ICBbX2NvcmVMb2NhdGlvblByb3ZpZGVyIHJlcXVlc3RHZW9sb2NhdGlvbkF1dGhvcml6YXRpb25d
OworICAgIGlmIChfY29yZUxvY2F0aW9uUHJvdmlkZXIpIHsKKyAgICAgICAgLy8gU3RlcCAxOiBh
c2sgdGhlIHVzZXIgaWYgdGhlIGFwcCBjYW4gdXNlIEdlb2xvY2F0aW9uLgorICAgICAgICBbX2Nv
cmVMb2NhdGlvblByb3ZpZGVyIHJlcXVlc3RHZW9sb2NhdGlvbkF1dGhvcml6YXRpb25dOworICAg
IH0gZWxzZSB7CisgICAgICAgIC8vIFN0ZXAgMTogYXNrIENvcmVMb2NhdGlvbiBpZiB0aGUgYXBw
IGNhbiB1c2UgR2VvbG9jYXRpb24uCisgICAgICAgIFdlYkNvcmU6OkNvcmVMb2NhdGlvbkdlb2xv
Y2F0aW9uUHJvdmlkZXI6OnJlcXVlc3RBdXRob3JpemF0aW9uKHJlZ2lzdHJhYmxlRG9tYWluLCBb
c2VsZiwgc3Ryb25nU2VsZiA9IHJldGFpblB0cihzZWxmKV0oYm9vbCBhdXRob3JpemVkKSB7Cisg
ICAgICAgICAgICBpZiAoYXV0aG9yaXplZCkKKyAgICAgICAgICAgICAgICBbc2VsZiBnZW9sb2Nh
dGlvbkF1dGhvcml6YXRpb25HcmFudGVkXTsKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAg
ICAgICBbc2VsZiBnZW9sb2NhdGlvbkF1dGhvcml6YXRpb25EZW5pZWRdOworICAgICAgICB9KTsK
KyAgICB9CiB9CiBAZW5kCiAKQEAgLTE3NCw3ICsxODcsNyBAQCBAaW1wbGVtZW50YXRpb24gV0tH
ZW9sb2NhdGlvblByb3ZpZGVySU9TIChXZWJHZW9sb2NhdGlvbkNvcmVMb2NhdGlvblVwZGF0ZUxp
c3RlbgogCiAtICh2b2lkKWdlb2xvY2F0aW9uQXV0aG9yaXphdGlvbkdyYW50ZWQKIHsKLSAgICAv
LyBTdGVwIDI6IGFzayB0aGUgdXNlciBpZiB0aGlzIHBhcnRpY3VsYXIgcGFnZSBjYW4gdXNlIGdl
bG9jYXRpb24uCisgICAgLy8gU3RlcCAyOiBhc2sgdGhlIHVzZXIgaWYgdGhpcyBwYXJ0aWN1bGFy
IHBhZ2UgY2FuIHVzZSBnZW9sb2NhdGlvbi4KICAgICBpZiAoX3JlcXVlc3RzV2FpdGluZ0ZvckNv
cmVMb2NhdGlvbkF1dGhvcml6YXRpb24uaXNFbXB0eSgpKQogICAgICAgICByZXR1cm47CiAKQEAg
LTIyNiw4MSArMjM5LDYgQEAgLSAodm9pZClyZXNldEdlb2xvY2F0aW9uCiAKIEBlbmQKIAotIyBw
cmFnbWEgbWFyayAtIEltcGxlbWVudGF0aW9uIG9mIFdLTGVnYWN5Q29yZUxvY2F0aW9uUHJvdmlk
ZXIKLQotQGltcGxlbWVudGF0aW9uIFdLTGVnYWN5Q29yZUxvY2F0aW9uUHJvdmlkZXIgewotICAg
IGlkIDxfV0tHZW9sb2NhdGlvbkNvcmVMb2NhdGlvbkxpc3RlbmVyPiBfbGlzdGVuZXI7Ci0gICAg
UmV0YWluUHRyPFdlYkdlb2xvY2F0aW9uQ29yZUxvY2F0aW9uUHJvdmlkZXI+IF9wcm92aWRlcjsK
LX0KLQotLy8gPF9XS0dlb2xvY2F0aW9uQ29yZUxvY2F0aW9uUHJvdmlkZXI+IE1ldGhvZHMKLQot
LSAodm9pZClzZXRMaXN0ZW5lcjooaWQ8X1dLR2VvbG9jYXRpb25Db3JlTG9jYXRpb25MaXN0ZW5l
cj4pbGlzdGVuZXIKLXsKLSAgICBBU1NFUlQobGlzdGVuZXIgJiYgIV9saXN0ZW5lciAmJiAhX3By
b3ZpZGVyKTsKLSAgICBfbGlzdGVuZXIgPSBsaXN0ZW5lcjsKLSAgICBfcHJvdmlkZXIgPSBhZG9w
dE5TKFtbV2ViR2VvbG9jYXRpb25Db3JlTG9jYXRpb25Qcm92aWRlciBhbGxvY10gaW5pdFdpdGhM
aXN0ZW5lcjpzZWxmXSk7Ci19Ci0KLS0gKHZvaWQpcmVxdWVzdEdlb2xvY2F0aW9uQXV0aG9yaXph
dGlvbgotewotICAgIEFTU0VSVChfcHJvdmlkZXIpOwotICAgIFtfcHJvdmlkZXIgcmVxdWVzdEdl
b2xvY2F0aW9uQXV0aG9yaXphdGlvbl07Ci19Ci0KLS0gKHZvaWQpc3RhcnQKLXsKLSAgICBBU1NF
UlQoX3Byb3ZpZGVyKTsKLSAgICBbX3Byb3ZpZGVyIHN0YXJ0XTsKLX0KLQotLSAodm9pZClzdG9w
Ci17Ci0gICAgQVNTRVJUKF9wcm92aWRlcik7Ci0gICAgW19wcm92aWRlciBzdG9wXTsKLX0KLQot
LSAodm9pZClzZXRFbmFibGVIaWdoQWNjdXJhY3k6KEJPT0wpZmxhZwotewotICAgIEFTU0VSVChf
cHJvdmlkZXIpOwotICAgIFtfcHJvdmlkZXIgc2V0RW5hYmxlSGlnaEFjY3VyYWN5OmZsYWddOwot
fQotCi0vLyA8V2ViR2VvbG9jYXRpb25Db3JlTG9jYXRpb25VcGRhdGVMaXN0ZW5lcj4gTWV0aG9k
cwotCi0tICh2b2lkKWdlb2xvY2F0aW9uQXV0aG9yaXphdGlvbkdyYW50ZWQKLXsKLSAgICBBU1NF
UlQoX2xpc3RlbmVyKTsKLSAgICBbX2xpc3RlbmVyIGdlb2xvY2F0aW9uQXV0aG9yaXphdGlvbkdy
YW50ZWRdOwotfQotCi0tICh2b2lkKWdlb2xvY2F0aW9uQXV0aG9yaXphdGlvbkRlbmllZAotewot
ICAgIEFTU0VSVChfbGlzdGVuZXIpOwotICAgIFtfbGlzdGVuZXIgZ2VvbG9jYXRpb25BdXRob3Jp
emF0aW9uRGVuaWVkXTsKLX0KLQotLSAodm9pZClwb3NpdGlvbkNoYW5nZWQ6KFdlYkNvcmU6Okdl
b2xvY2F0aW9uUG9zaXRpb25EYXRhJiYpY29yZVBvc2l0aW9uCi17Ci0gICAgQVNTRVJUKF9saXN0
ZW5lcik7Ci0gICAgYXV0byBwb3NpdGlvbiA9IFdlYktpdDo6V2ViR2VvbG9jYXRpb25Qb3NpdGlv
bjo6Y3JlYXRlKFdURk1vdmUoY29yZVBvc2l0aW9uKSk7Ci0gICAgW19saXN0ZW5lciBwb3NpdGlv
bkNoYW5nZWQ6d3JhcHBlcihwb3NpdGlvbi5nZXQoKSldOwotfQotCi0tICh2b2lkKWVycm9yT2Nj
dXJyZWQ6KE5TU3RyaW5nICopZXJyb3JNZXNzYWdlCi17Ci0gICAgQVNTRVJUKF9saXN0ZW5lcik7
Ci0gICAgW19saXN0ZW5lciBlcnJvck9jY3VycmVkOmVycm9yTWVzc2FnZV07Ci19Ci0KLS0gKHZv
aWQpcmVzZXRHZW9sb2NhdGlvbgotewotICAgIEFTU0VSVChfbGlzdGVuZXIpOwotICAgIFtfbGlz
dGVuZXIgcmVzZXRHZW9sb2NhdGlvbl07Ci19Ci0KLUBlbmQKLQogIyBwcmFnbWEgbWFyayAtIElt
cGxlbWVudGF0aW9uIG9mIFdLV2ViQWxsb3dEZW55UG9saWN5TGlzdGVuZXIKIEBpbXBsZW1lbnRh
dGlvbiBXS1dlYkFsbG93RGVueVBvbGljeUxpc3RlbmVyIHsKICAgICBGdW5jdGlvbjx2b2lkKGJv
b2wpPiBfY29tcGxldGlvbkhhbmRsZXI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYktp
dC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvagppbmRleCAxZWM4YjJiODVjZTFlNTY0MzdmMmVmZDFjNDRjMDY5
MTYwNjkxOTMwLi5jYzI5NjA5N2E4NzYzOGZhNmVmM2U4NjBiNzgzMmVhZjhlYjllZGJhIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisr
KyBiL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTQz
MTksNiArNDMxOSw3IEBACiAJCTQ2Q0UzQjEwMjNEOEM4M0QwMDE2QTk2QSAvKiBXZWJCYWNrRm9y
d2FyZExpc3RDb3VudHMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2ViQmFj
a0ZvcndhcmRMaXN0Q291bnRzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQ2RDQ4
RkNDMjc5OUQ3REQwMDdEMjAxNCAvKiBXZWJTaGFyZWRXb3JrZXJTZXJ2ZXJUb0NvbnRleHRDb25u
ZWN0aW9uLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdlYlNoYXJlZFdvcmtlclNlcnZlclRvQ29u
dGV4dENvbm5lY3Rpb24uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0NkQ0OEZD
RDI3OTlEN0RFMDA3RDIwMTQgLyogV2ViU2hhcmVkV29ya2VyU2VydmVyVG9Db250ZXh0Q29ubmVj
dGlvbi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJTaGFyZWRXb3JrZXJTZXJ2ZXJUb0NvbnRleHRDb25u
ZWN0aW9uLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTQ2REEyODU3MjdCNzNFNzYw
MDg5RDMzOSAvKiBXZWJHZW9sb2NhdGlvbk1hbmFnZXJQcm94eUNvY29hLmNwcCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNw
cDsgcGF0aCA9IFdlYkdlb2xvY2F0aW9uTWFuYWdlclByb3h5Q29jb2EuY3BwOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQk0NkRGMDYzOTFGMzkwNUU1MDAxOTgwQkIgLyogTmV0d29ya0NP
UlNQcmVmbGlnaHRDaGVja2VyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0
aCA9IE5ldHdvcmtDT1JTUHJlZmxpZ2h0Q2hlY2tlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCTQ2REYwNjNBMUYzOTA1RTUwMDE5ODBCQiAvKiBOZXR3b3JrQ09SU1ByZWZsaWdo
dENoZWNrZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTmV0d29ya0NPUlNQ
cmVmbGlnaHRDaGVja2VyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQ2RTk3NjBB
Mjc1N0Y2QzkwMEFDREQzNyAvKiBXZWJCcm9hZGNhc3RDaGFubmVsUmVnaXN0cnkubWVzc2FnZXMu
aW4gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gV2ViQnJvYWRjYXN0Q2hhbm5lbFJlZ2lzdHJ5Lm1l
c3NhZ2VzLmluOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtNzYxMSw2ICs3NjEyLDcg
QEAKIAkJCQk1MkQ1QTFBQTFDNTc0OTRFMDBERTM0QTMgLyogVmlkZW9GdWxsc2NyZWVuTWFuYWdl
clByb3h5LmggKi8sCiAJCQkJNTJENUExQUIxQzU3NDk0RTAwREUzNEEzIC8qIFZpZGVvRnVsbHNj
cmVlbk1hbmFnZXJQcm94eS5tZXNzYWdlcy5pbiAqLywKIAkJCQk1MkQ1QTFBQzFDNTc0OTRFMDBE
RTM0QTMgLyogVmlkZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5Lm1tICovLAorCQkJCTQ2REEyODU3
MjdCNzNFNzYwMDg5RDMzOSAvKiBXZWJHZW9sb2NhdGlvbk1hbmFnZXJQcm94eUNvY29hLmNwcCAq
LywKIAkJCQlDMThGM0ExMzI1NjMzMkE2MDA3OTdFNjYgLyogV2ViSW5zcGVjdG9yUHJlZmVyZW5j
ZU9ic2VydmVyLmggKi8sCiAJCQkJQzE4RjNBMTQyNTYzMzM0MzAwNzk3RTY2IC8qIFdlYkluc3Bl
Y3RvclByZWZlcmVuY2VPYnNlcnZlci5tbSAqLywKIAkJCQlDREYxQjkxOTI2NzAyMUQ2MDAwN0VD
MTAgLyogV2ViS2l0U3dpZnRTb2Z0TGluay5oICovLApAQCAtMTM0ODYsNiArMTM0ODgsNyBAQAog
CQkJCUUxOEU2OTE4MTY5QjY2N0IwMDlCNjY3MCAvKiBTZWNJdGVtU2hpbVByb3h5TWVzc2FnZXMu
aCBpbiBIZWFkZXJzICovLAogCQkJCTU3MEFCOEYzMjBBRTNCRDcwMEI4QkU4NyAvKiBTZWNLZXlQ
cm94eVN0b3JlLmggaW4gSGVhZGVycyAqLywKIAkJCQk1MTREOUY1NzE5MTE5RDM1MDAwMDYzQTcg
LyogU2VydmljZXNDb250cm9sbGVyLmggaW4gSGVhZGVycyAqLywKKwkJCQk1MTY0NjU4MDI3QTlD
Nzc0MDBFMUYyQkEgLyogU2VydmljZVdvcmtlck5vdGlmaWNhdGlvbkhhbmRsZXIuaCBpbiBIZWFk
ZXJzICovLAogCQkJCTFBRkRFNjVBMTk1NEE0MkIwMEM0OEZGQSAvKiBTZXNzaW9uU3RhdGUuaCBp
biBIZWFkZXJzICovLAogCQkJCTFBMDAyRDQ5MTk2QjM0NUQwMEI5QUQ0NCAvKiBTZXNzaW9uU3Rh
dGVDb2RpbmcuaCBpbiBIZWFkZXJzICovLAogCQkJCTkzRTc5OUNFMjc2MDQ5N0IwMDc0MDA4QSAv
KiBTZXNzaW9uU3RvcmFnZU1hbmFnZXIuaCBpbiBIZWFkZXJzICovLApAQCAtMTM5MzQsNyArMTM5
MzcsNiBAQAogCQkJCUJDNEE2Mjk3MTQ3MzEzQTAwMDZDNjgxQSAvKiBXS0Nvbm5lY3Rpb25SZWYu
aCBpbiBIZWFkZXJzICovLAogCQkJCUU1OTZERDZBMjUxRTcxRDQwMEMyNzVBNyAvKiBXS0NvbnRh
Y3RQaWNrZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTVDRDI4NjU0MUU3MjM1QjEwMDk0RkRDOCAv
KiBXS0NvbnRlbnRSdWxlTGlzdC5oIGluIEhlYWRlcnMgKi8sCi0JCQkJNTE2NDY1ODAyN0E5Qzc3
NDAwRTFGMkJBIC8qIFNlcnZpY2VXb3JrZXJOb3RpZmljYXRpb25IYW5kbGVyLmggaW4gSGVhZGVy
cyAqLywKIAkJCQk1Q0QyODY1NTFFNzIzNUI4MDA5NEZEQzggLyogV0tDb250ZW50UnVsZUxpc3RJ
bnRlcm5hbC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNUM1MTM5REIyNTkyN0Q4MDAwOUMzRTMwIC8q
IFdLQ29udGVudFJ1bGVMaXN0UHJpdmF0ZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNUNEMjg2NTEx
RTcyMzU5OTAwOTRGREM4IC8qIFdLQ29udGVudFJ1bGVMaXN0U3RvcmUuaCBpbiBIZWFkZXJzICov
LApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dlb2xvY2F0aW9uL1dlYkdl
b2xvY2F0aW9uTWFuYWdlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR2VvbG9jYXRp
b24vV2ViR2VvbG9jYXRpb25NYW5hZ2VyLmNwcAppbmRleCA1YTljOWY0ZDJhMWNkNjZhNGI2NzU5
YjU5Mzg3ZWEyY2Y1NWIyYWE4Li5mOWQ4NzVjMTQ5NDRhYjAzM2U4N2E5ZmUyNjk1ZDE1ZjU0Zjdm
Y2M3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR2VvbG9jYXRpb24vV2Vi
R2VvbG9jYXRpb25NYW5hZ2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR2Vv
bG9jYXRpb24vV2ViR2VvbG9jYXRpb25NYW5hZ2VyLmNwcApAQCAtMzksNiArMzksMTQgQEAKIG5h
bWVzcGFjZSBXZWJLaXQgewogdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKK3N0YXRpYyBSZWdp
c3RyYWJsZURvbWFpbiByZWdpc3RyYWJsZURvbWFpbkZvclBhZ2UoV2ViUGFnZSYgcGFnZSkKK3sK
KyAgICBhdXRvKiBkb2N1bWVudCA9IHBhZ2UuY29yZVBhZ2UoKSA/IHBhZ2UuY29yZVBhZ2UoKS0+
bWFpbkZyYW1lKCkuZG9jdW1lbnQoKSA6IG51bGxwdHI7CisgICAgaWYgKCFkb2N1bWVudCkKKyAg
ICAgICAgcmV0dXJuIHsgfTsKKyAgICByZXR1cm4gUmVnaXN0cmFibGVEb21haW4geyBkb2N1bWVu
dC0+dXJsKCkgfTsKK30KKwogY29uc3QgY2hhciogV2ViR2VvbG9jYXRpb25NYW5hZ2VyOjpzdXBw
bGVtZW50TmFtZSgpCiB7CiAgICAgcmV0dXJuICJXZWJHZW9sb2NhdGlvbk1hbmFnZXIiOwpAQCAt
NTAsODggKzU4LDE0MCBAQCBXZWJHZW9sb2NhdGlvbk1hbmFnZXI6OldlYkdlb2xvY2F0aW9uTWFu
YWdlcihXZWJQcm9jZXNzJiBwcm9jZXNzKQogICAgIG1fcHJvY2Vzcy5hZGRNZXNzYWdlUmVjZWl2
ZXIoTWVzc2FnZXM6OldlYkdlb2xvY2F0aW9uTWFuYWdlcjo6bWVzc2FnZVJlY2VpdmVyTmFtZSgp
LCAqdGhpcyk7CiB9CiAKLXZvaWQgV2ViR2VvbG9jYXRpb25NYW5hZ2VyOjpyZWdpc3RlcldlYlBh
Z2UoV2ViUGFnZSYgcGFnZSwgY29uc3QgU3RyaW5nJiBhdXRob3JpemF0aW9uVG9rZW4pCi17Ci0g
ICAgYm9vbCB3YXNVcGRhdGluZyA9IGlzVXBkYXRpbmcoKTsKK1dlYkdlb2xvY2F0aW9uTWFuYWdl
cjo6fldlYkdlb2xvY2F0aW9uTWFuYWdlcigpID0gZGVmYXVsdDsKIAotICAgIG1fcGFnZVNldC5h
ZGQocGFnZSk7Cit2b2lkIFdlYkdlb2xvY2F0aW9uTWFuYWdlcjo6cmVnaXN0ZXJXZWJQYWdlKFdl
YlBhZ2UmIHBhZ2UsIGNvbnN0IFN0cmluZyYgYXV0aG9yaXphdGlvblRva2VuLCBib29sIG5lZWRz
SGlnaEFjY3VyYWN5KQoreworICAgIGF1dG8gcmVnaXN0cmFibGVEb21haW4gPSByZWdpc3RyYWJs
ZURvbWFpbkZvclBhZ2UocGFnZSk7CisgICAgaWYgKHJlZ2lzdHJhYmxlRG9tYWluLnN0cmluZygp
LmlzRW1wdHkoKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgYXV0byYgcGFnZVNldHMgPSBtX3Bh
Z2VTZXRzLmFkZChyZWdpc3RyYWJsZURvbWFpbiwgUGFnZVNldHMoKSkuaXRlcmF0b3ItPnZhbHVl
OworICAgIGJvb2wgd2FzVXBkYXRpbmcgPSBpc1VwZGF0aW5nKHBhZ2VTZXRzKTsKKyAgICBib29s
IGhpZ2hBY2N1cmFjeVdhc0VuYWJsZWQgPSBpc0hpZ2hBY2N1cmFjeUVuYWJsZWQocGFnZVNldHMp
OworCisgICAgcGFnZVNldHMucGFnZVNldC5hZGQocGFnZSk7CisgICAgaWYgKG5lZWRzSGlnaEFj
Y3VyYWN5KQorICAgICAgICBwYWdlU2V0cy5oaWdoQWNjdXJhY3lQYWdlU2V0LmFkZChwYWdlKTsK
KyAgICBtX3BhZ2VUb1JlZ2lzdHJhYmxlRG9tYWluLmFkZCgmcGFnZSwgcmVnaXN0cmFibGVEb21h
aW4pOworCisgICAgaWYgKCF3YXNVcGRhdGluZykgeworICAgICAgICBtX3Byb2Nlc3MucGFyZW50
UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+c2VuZChNZXNzYWdlczo6V2ViR2VvbG9jYXRpb25NYW5hZ2Vy
UHJveHk6OlN0YXJ0VXBkYXRpbmcocmVnaXN0cmFibGVEb21haW4sIHBhZ2Uud2ViUGFnZVByb3h5
SWRlbnRpZmllcigpLCBhdXRob3JpemF0aW9uVG9rZW4sIG5lZWRzSGlnaEFjY3VyYWN5KSwgMCk7
CisgICAgICAgIHJldHVybjsKKyAgICB9CiAKLSAgICBpZiAoIXdhc1VwZGF0aW5nKQotICAgICAg
ICBtX3Byb2Nlc3MucGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+c2VuZChNZXNzYWdlczo6V2Vi
R2VvbG9jYXRpb25NYW5hZ2VyUHJveHk6OlN0YXJ0VXBkYXRpbmcocGFnZS53ZWJQYWdlUHJveHlJ
ZGVudGlmaWVyKCksIGF1dGhvcml6YXRpb25Ub2tlbiksIDApOworICAgIGJvb2wgaGlnaEFjY3Vy
YWN5U2hvdWxkQmVFbmFibGVkID0gaXNIaWdoQWNjdXJhY3lFbmFibGVkKHBhZ2VTZXRzKTsKKyAg
ICBpZiAoaGlnaEFjY3VyYWN5V2FzRW5hYmxlZCAhPSBoaWdoQWNjdXJhY3lTaG91bGRCZUVuYWJs
ZWQpCisgICAgICAgIG1fcHJvY2Vzcy5wYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpLT5zZW5kKE1l
c3NhZ2VzOjpXZWJHZW9sb2NhdGlvbk1hbmFnZXJQcm94eTo6U2V0RW5hYmxlSGlnaEFjY3VyYWN5
KHJlZ2lzdHJhYmxlRG9tYWluLCBoaWdoQWNjdXJhY3lTaG91bGRCZUVuYWJsZWQpLCAwKTsKIH0K
IAogdm9pZCBXZWJHZW9sb2NhdGlvbk1hbmFnZXI6OnVucmVnaXN0ZXJXZWJQYWdlKFdlYlBhZ2Um
IHBhZ2UpCiB7Ci0gICAgYm9vbCBoaWdoQWNjdXJhY3lXYXNFbmFibGVkID0gaXNIaWdoQWNjdXJh
Y3lFbmFibGVkKCk7CisgICAgYXV0byByZWdpc3RyYWJsZURvbWFpbiA9IG1fcGFnZVRvUmVnaXN0
cmFibGVEb21haW4udGFrZSgmcGFnZSk7CisgICAgaWYgKHJlZ2lzdHJhYmxlRG9tYWluLnN0cmlu
ZygpLmlzRW1wdHkoKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgYXV0byBpdCA9IG1fcGFnZVNl
dHMuZmluZChyZWdpc3RyYWJsZURvbWFpbik7CisgICAgaWYgKGl0ID09IG1fcGFnZVNldHMuZW5k
KCkpCisgICAgICAgIHJldHVybjsKIAotICAgIG1fcGFnZVNldC5yZW1vdmUocGFnZSk7Ci0gICAg
bV9oaWdoQWNjdXJhY3lQYWdlU2V0LnJlbW92ZShwYWdlKTsKKyAgICBhdXRvJiBwYWdlU2V0cyA9
IGl0LT52YWx1ZTsKKyAgICBib29sIGhpZ2hBY2N1cmFjeVdhc0VuYWJsZWQgPSBpc0hpZ2hBY2N1
cmFjeUVuYWJsZWQocGFnZVNldHMpOwogCi0gICAgaWYgKCFpc1VwZGF0aW5nKCkpCi0gICAgICAg
IG1fcHJvY2Vzcy5wYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpLT5zZW5kKE1lc3NhZ2VzOjpXZWJH
ZW9sb2NhdGlvbk1hbmFnZXJQcm94eTo6U3RvcFVwZGF0aW5nKCksIDApOworICAgIHBhZ2VTZXRz
LnBhZ2VTZXQucmVtb3ZlKHBhZ2UpOworICAgIHBhZ2VTZXRzLmhpZ2hBY2N1cmFjeVBhZ2VTZXQu
cmVtb3ZlKHBhZ2UpOworCisgICAgaWYgKCFpc1VwZGF0aW5nKHBhZ2VTZXRzKSkKKyAgICAgICAg
bV9wcm9jZXNzLnBhcmVudFByb2Nlc3NDb25uZWN0aW9uKCktPnNlbmQoTWVzc2FnZXM6OldlYkdl
b2xvY2F0aW9uTWFuYWdlclByb3h5OjpTdG9wVXBkYXRpbmcocmVnaXN0cmFibGVEb21haW4pLCAw
KTsKICAgICBlbHNlIHsKLSAgICAgICAgYm9vbCBoaWdoQWNjdXJhY3lTaG91bGRCZUVuYWJsZWQg
PSBpc0hpZ2hBY2N1cmFjeUVuYWJsZWQoKTsKKyAgICAgICAgYm9vbCBoaWdoQWNjdXJhY3lTaG91
bGRCZUVuYWJsZWQgPSBpc0hpZ2hBY2N1cmFjeUVuYWJsZWQocGFnZVNldHMpOwogICAgICAgICBp
ZiAoaGlnaEFjY3VyYWN5V2FzRW5hYmxlZCAhPSBoaWdoQWNjdXJhY3lTaG91bGRCZUVuYWJsZWQp
Ci0gICAgICAgICAgICBtX3Byb2Nlc3MucGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+c2VuZChN
ZXNzYWdlczo6V2ViR2VvbG9jYXRpb25NYW5hZ2VyUHJveHk6OlNldEVuYWJsZUhpZ2hBY2N1cmFj
eShoaWdoQWNjdXJhY3lTaG91bGRCZUVuYWJsZWQpLCAwKTsKKyAgICAgICAgICAgIG1fcHJvY2Vz
cy5wYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpLT5zZW5kKE1lc3NhZ2VzOjpXZWJHZW9sb2NhdGlv
bk1hbmFnZXJQcm94eTo6U2V0RW5hYmxlSGlnaEFjY3VyYWN5KHJlZ2lzdHJhYmxlRG9tYWluLCBo
aWdoQWNjdXJhY3lTaG91bGRCZUVuYWJsZWQpLCAwKTsKICAgICB9CisKKyAgICBpZiAocGFnZVNl
dHMucGFnZVNldC5jb21wdXRlc0VtcHR5KCkgJiYgcGFnZVNldHMuaGlnaEFjY3VyYWN5UGFnZVNl
dC5jb21wdXRlc0VtcHR5KCkpCisgICAgICAgIG1fcGFnZVNldHMucmVtb3ZlKGl0KTsKIH0KIAog
dm9pZCBXZWJHZW9sb2NhdGlvbk1hbmFnZXI6OnNldEVuYWJsZUhpZ2hBY2N1cmFjeUZvclBhZ2Uo
V2ViUGFnZSYgcGFnZSwgYm9vbCBlbmFibGVkKQogewotICAgIGJvb2wgaGlnaEFjY3VyYWN5V2Fz
RW5hYmxlZCA9IGlzSGlnaEFjY3VyYWN5RW5hYmxlZCgpOworICAgIGF1dG8gcmVnaXN0cmFibGVE
b21haW4gPSBtX3BhZ2VUb1JlZ2lzdHJhYmxlRG9tYWluLmdldCgmcGFnZSk7CisgICAgaWYgKHJl
Z2lzdHJhYmxlRG9tYWluLnN0cmluZygpLmlzRW1wdHkoKSkKKyAgICAgICAgcmV0dXJuOworCisg
ICAgYXV0byBpdCA9IG1fcGFnZVNldHMuZmluZChyZWdpc3RyYWJsZURvbWFpbik7CisgICAgQVNT
RVJUKGl0ICE9IG1fcGFnZVNldHMuZW5kKCkpOworICAgIGlmIChpdCA9PSBtX3BhZ2VTZXRzLmVu
ZCgpKQorICAgICAgICByZXR1cm47CisKKyAgICBhdXRvJiBwYWdlU2V0cyA9IGl0LT52YWx1ZTsK
KyAgICBib29sIGhpZ2hBY2N1cmFjeVdhc0VuYWJsZWQgPSBpc0hpZ2hBY2N1cmFjeUVuYWJsZWQo
cGFnZVNldHMpOwogCiAgICAgaWYgKGVuYWJsZWQpCi0gICAgICAgIG1faGlnaEFjY3VyYWN5UGFn
ZVNldC5hZGQocGFnZSk7CisgICAgICAgIHBhZ2VTZXRzLmhpZ2hBY2N1cmFjeVBhZ2VTZXQuYWRk
KHBhZ2UpOwogICAgIGVsc2UKLSAgICAgICAgbV9oaWdoQWNjdXJhY3lQYWdlU2V0LnJlbW92ZShw
YWdlKTsKKyAgICAgICAgcGFnZVNldHMuaGlnaEFjY3VyYWN5UGFnZVNldC5yZW1vdmUocGFnZSk7
CiAKLSAgICBib29sIGhpZ2hBY2N1cmFjeVNob3VsZEJlRW5hYmxlZCA9IGlzSGlnaEFjY3VyYWN5
RW5hYmxlZCgpOwotICAgIGlmIChoaWdoQWNjdXJhY3lXYXNFbmFibGVkICE9IGhpZ2hBY2N1cmFj
eVNob3VsZEJlRW5hYmxlZCkKLSAgICAgICAgbV9wcm9jZXNzLnBhcmVudFByb2Nlc3NDb25uZWN0
aW9uKCktPnNlbmQoTWVzc2FnZXM6OldlYkdlb2xvY2F0aW9uTWFuYWdlclByb3h5OjpTZXRFbmFi
bGVIaWdoQWNjdXJhY3koaGlnaEFjY3VyYWN5U2hvdWxkQmVFbmFibGVkKSwgMCk7CisgICAgYm9v
bCBoaWdoQWNjdXJhY3lTaG91bGRCZUVuYWJsZWQgPSBpc0hpZ2hBY2N1cmFjeUVuYWJsZWQocGFn
ZVNldHMpOworICAgIGlmIChoaWdoQWNjdXJhY3lXYXNFbmFibGVkICE9IGlzSGlnaEFjY3VyYWN5
RW5hYmxlZChwYWdlU2V0cykpCisgICAgICAgIG1fcHJvY2Vzcy5wYXJlbnRQcm9jZXNzQ29ubmVj
dGlvbigpLT5zZW5kKE1lc3NhZ2VzOjpXZWJHZW9sb2NhdGlvbk1hbmFnZXJQcm94eTo6U2V0RW5h
YmxlSGlnaEFjY3VyYWN5KHJlZ2lzdHJhYmxlRG9tYWluLCBoaWdoQWNjdXJhY3lTaG91bGRCZUVu
YWJsZWQpLCAwKTsKIH0KIAotdm9pZCBXZWJHZW9sb2NhdGlvbk1hbmFnZXI6OmRpZENoYW5nZVBv
c2l0aW9uKGNvbnN0IEdlb2xvY2F0aW9uUG9zaXRpb25EYXRhJiBwb3NpdGlvbikKK3ZvaWQgV2Vi
R2VvbG9jYXRpb25NYW5hZ2VyOjpkaWRDaGFuZ2VQb3NpdGlvbihjb25zdCBXZWJDb3JlOjpSZWdp
c3RyYWJsZURvbWFpbiYgcmVnaXN0cmFibGVEb21haW4sIGNvbnN0IEdlb2xvY2F0aW9uUG9zaXRp
b25EYXRhJiBwb3NpdGlvbikKIHsKICNpZiBFTkFCTEUoR0VPTE9DQVRJT04pCi0gICAgZm9yIChh
dXRvJiBwYWdlIDogY29weVRvVmVjdG9yKG1fcGFnZVNldCkpIHsKLSAgICAgICAgaWYgKHBhZ2Ut
PmNvcmVQYWdlKCkpCi0gICAgICAgICAgICBHZW9sb2NhdGlvbkNvbnRyb2xsZXI6OmZyb20ocGFn
ZS0+Y29yZVBhZ2UoKSktPnBvc2l0aW9uQ2hhbmdlZChwb3NpdGlvbik7CisgICAgaWYgKGF1dG8g
aXQgPSBtX3BhZ2VTZXRzLmZpbmQocmVnaXN0cmFibGVEb21haW4pOyBpdCAhPSBtX3BhZ2VTZXRz
LmVuZCgpKSB7CisgICAgICAgIGZvciAoYXV0byYgcGFnZSA6IGNvcHlUb1ZlY3RvcihpdC0+dmFs
dWUucGFnZVNldCkpIHsKKyAgICAgICAgICAgIGlmIChwYWdlLT5jb3JlUGFnZSgpKQorICAgICAg
ICAgICAgICAgIEdlb2xvY2F0aW9uQ29udHJvbGxlcjo6ZnJvbShwYWdlLT5jb3JlUGFnZSgpKS0+
cG9zaXRpb25DaGFuZ2VkKHBvc2l0aW9uKTsKKyAgICAgICAgfQogICAgIH0KICNlbHNlCisgICAg
VU5VU0VEX1BBUkFNKHJlZ2lzdHJhYmxlRG9tYWluKTsKICAgICBVTlVTRURfUEFSQU0ocG9zaXRp
b24pOwogI2VuZGlmIC8vIEVOQUJMRShHRU9MT0NBVElPTikKIH0KIAotdm9pZCBXZWJHZW9sb2Nh
dGlvbk1hbmFnZXI6OmRpZEZhaWxUb0RldGVybWluZVBvc2l0aW9uKGNvbnN0IFN0cmluZyYgZXJy
b3JNZXNzYWdlKQordm9pZCBXZWJHZW9sb2NhdGlvbk1hbmFnZXI6OmRpZEZhaWxUb0RldGVybWlu
ZVBvc2l0aW9uKGNvbnN0IFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluJiByZWdpc3RyYWJsZURv
bWFpbiwgY29uc3QgU3RyaW5nJiBlcnJvck1lc3NhZ2UpCiB7CiAjaWYgRU5BQkxFKEdFT0xPQ0FU
SU9OKQotICAgIC8vIEZJWE1FOiBBZGQgbG9jYWxpemVkIGVycm9yIHN0cmluZy4KLSAgICBhdXRv
IGVycm9yID0gR2VvbG9jYXRpb25FcnJvcjo6Y3JlYXRlKEdlb2xvY2F0aW9uRXJyb3I6OlBvc2l0
aW9uVW5hdmFpbGFibGUsIGVycm9yTWVzc2FnZSk7Ci0KLSAgICBmb3IgKGF1dG8mIHBhZ2UgOiBj
b3B5VG9WZWN0b3IobV9wYWdlU2V0KSkgewotICAgICAgICBpZiAocGFnZS0+Y29yZVBhZ2UoKSkK
LSAgICAgICAgICAgIEdlb2xvY2F0aW9uQ29udHJvbGxlcjo6ZnJvbShwYWdlLT5jb3JlUGFnZSgp
KS0+ZXJyb3JPY2N1cnJlZChlcnJvci5nZXQoKSk7CisgICAgaWYgKGF1dG8gaXQgPSBtX3BhZ2VT
ZXRzLmZpbmQocmVnaXN0cmFibGVEb21haW4pOyBpdCAhPSBtX3BhZ2VTZXRzLmVuZCgpKSB7Cisg
ICAgICAgIC8vIEZJWE1FOiBBZGQgbG9jYWxpemVkIGVycm9yIHN0cmluZy4KKyAgICAgICAgYXV0
byBlcnJvciA9IEdlb2xvY2F0aW9uRXJyb3I6OmNyZWF0ZShHZW9sb2NhdGlvbkVycm9yOjpQb3Np
dGlvblVuYXZhaWxhYmxlLCBlcnJvck1lc3NhZ2UpOworCisgICAgICAgIGZvciAoYXV0byYgcGFn
ZSA6IGNvcHlUb1ZlY3RvcihpdC0+dmFsdWUucGFnZVNldCkpIHsKKyAgICAgICAgICAgIGlmIChw
YWdlLT5jb3JlUGFnZSgpKQorICAgICAgICAgICAgICAgIEdlb2xvY2F0aW9uQ29udHJvbGxlcjo6
ZnJvbShwYWdlLT5jb3JlUGFnZSgpKS0+ZXJyb3JPY2N1cnJlZChlcnJvci5nZXQoKSk7CisgICAg
ICAgIH0KICAgICB9CiAjZWxzZQorICAgIFVOVVNFRF9QQVJBTShyZWdpc3RyYWJsZURvbWFpbik7
CiAgICAgVU5VU0VEX1BBUkFNKGVycm9yTWVzc2FnZSk7CiAjZW5kaWYgLy8gRU5BQkxFKEdFT0xP
Q0FUSU9OKQogfQogCi0jaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKLXZvaWQgV2ViR2VvbG9jYXRp
b25NYW5hZ2VyOjpyZXNldFBlcm1pc3Npb25zKCkKK2Jvb2wgV2ViR2VvbG9jYXRpb25NYW5hZ2Vy
Ojppc1VwZGF0aW5nKGNvbnN0IFBhZ2VTZXRzJiBwYWdlU2V0cykgY29uc3QKIHsKLSAgICBtX3By
b2Nlc3MucmVzZXRBbGxHZW9sb2NhdGlvblBlcm1pc3Npb25zKCk7CisgICAgcmV0dXJuICFwYWdl
U2V0cy5wYWdlU2V0LmNvbXB1dGVzRW1wdHkoKTsKIH0KLSNlbmRpZiAvLyBQTEFURk9STShJT1Nf
RkFNSUxZKQogCi1ib29sIFdlYkdlb2xvY2F0aW9uTWFuYWdlcjo6aXNVcGRhdGluZygpIGNvbnN0
Citib29sIFdlYkdlb2xvY2F0aW9uTWFuYWdlcjo6aXNIaWdoQWNjdXJhY3lFbmFibGVkKGNvbnN0
IFBhZ2VTZXRzJiBwYWdlU2V0cykgY29uc3QKIHsKLSAgICByZXR1cm4gIW1fcGFnZVNldC5jb21w
dXRlc0VtcHR5KCk7CisgICAgcmV0dXJuICFwYWdlU2V0cy5oaWdoQWNjdXJhY3lQYWdlU2V0LmNv
bXB1dGVzRW1wdHkoKTsKIH0KIAotYm9vbCBXZWJHZW9sb2NhdGlvbk1hbmFnZXI6OmlzSGlnaEFj
Y3VyYWN5RW5hYmxlZCgpIGNvbnN0CisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKK3ZvaWQgV2Vi
R2VvbG9jYXRpb25NYW5hZ2VyOjpyZXNldFBlcm1pc3Npb25zKGNvbnN0IFdlYkNvcmU6OlJlZ2lz
dHJhYmxlRG9tYWluJiByZWdpc3RyYWJsZURvbWFpbikKIHsKLSAgICByZXR1cm4gIW1faGlnaEFj
Y3VyYWN5UGFnZVNldC5jb21wdXRlc0VtcHR5KCk7CisgICAgYXV0byBpdCA9IG1fcGFnZVNldHMu
ZmluZChyZWdpc3RyYWJsZURvbWFpbik7CisgICAgaWYgKGl0ICE9IG1fcGFnZVNldHMuZW5kKCkp
CisgICAgICAgIHJldHVybjsKKworICAgIGZvciAoYXV0byYgcGFnZSA6IGNvcHlUb1ZlY3Rvcihp
dC0+dmFsdWUucGFnZVNldCkpIHsKKyAgICAgICAgaWYgKGF1dG8qIG1haW5GcmFtZSA9IHBhZ2Ut
PmNvcmVQYWdlKCkgPyAmcGFnZS0+Y29yZVBhZ2UoKS0+bWFpbkZyYW1lKCkgOiBudWxscHRyKQor
ICAgICAgICAgICAgbWFpbkZyYW1lLT5yZXNldEFsbEdlb2xvY2F0aW9uUGVybWlzc2lvbigpOwor
ICAgIH0KIH0KKyNlbmRpZiAvLyBQTEFURk9STShJT1NfRkFNSUxZKQogCiB9IC8vIG5hbWVzcGFj
ZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HZW9sb2NhdGlv
bi9XZWJHZW9sb2NhdGlvbk1hbmFnZXIuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HZW9s
b2NhdGlvbi9XZWJHZW9sb2NhdGlvbk1hbmFnZXIuaAppbmRleCA0NDgzNTk2MzU4NzgyMTk3Y2Ni
YTU5MjhlZmU2MjUxNTI2YzE4NTE1Li5jYjY1ODhjNmU3MTg4YmVmYmQ1NTEyM2Q0YTU1OWIyYjBi
MzFhOTNhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR2VvbG9jYXRpb24v
V2ViR2VvbG9jYXRpb25NYW5hZ2VyLmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dl
b2xvY2F0aW9uL1dlYkdlb2xvY2F0aW9uTWFuYWdlci5oCkBAIC0yOCw2ICsyOCw3IEBACiAjaW5j
bHVkZSAiTWVzc2FnZVJlY2VpdmVyLmgiCiAjaW5jbHVkZSAiV2ViR2VvbG9jYXRpb25Qb3NpdGlv
bi5oIgogI2luY2x1ZGUgIldlYlByb2Nlc3NTdXBwbGVtZW50LmgiCisjaW5jbHVkZSA8V2ViQ29y
ZS9SZWdpc3RyYWJsZURvbWFpbi5oPgogI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CiAjaW5jbHVk
ZSA8d3RmL05vbmNvcHlhYmxlLmg+CiAjaW5jbHVkZSA8d3RmL1dlYWtIYXNoU2V0Lmg+CkBAIC00
NywzMSArNDgsMzQgQEAgY2xhc3MgV2ViR2VvbG9jYXRpb25NYW5hZ2VyIDogcHVibGljIFdlYlBy
b2Nlc3NTdXBwbGVtZW50LCBwdWJsaWMgSVBDOjpNZXNzYWdlUmUKICAgICBXVEZfTUFLRV9OT05D
T1BZQUJMRShXZWJHZW9sb2NhdGlvbk1hbmFnZXIpOwogcHVibGljOgogICAgIGV4cGxpY2l0IFdl
Ykdlb2xvY2F0aW9uTWFuYWdlcihXZWJQcm9jZXNzJik7CisgICAgfldlYkdlb2xvY2F0aW9uTWFu
YWdlcigpOwogCiAgICAgc3RhdGljIGNvbnN0IGNoYXIqIHN1cHBsZW1lbnROYW1lKCk7CiAKLSAg
ICB2b2lkIHJlZ2lzdGVyV2ViUGFnZShXZWJQYWdlJiwgY29uc3QgU3RyaW5nJiBhdXRob3JpemF0
aW9uVG9rZW4pOworICAgIHZvaWQgcmVnaXN0ZXJXZWJQYWdlKFdlYlBhZ2UmLCBjb25zdCBTdHJp
bmcmIGF1dGhvcml6YXRpb25Ub2tlbiwgYm9vbCBuZWVkc0hpZ2hBY2N1cmFjeSk7CiAgICAgdm9p
ZCB1bnJlZ2lzdGVyV2ViUGFnZShXZWJQYWdlJik7CiAgICAgdm9pZCBzZXRFbmFibGVIaWdoQWNj
dXJhY3lGb3JQYWdlKFdlYlBhZ2UmLCBib29sKTsKIAotICAgIHZvaWQgcmVxdWVzdFBlcm1pc3Np
b24oV2ViQ29yZTo6R2VvbG9jYXRpb24mKTsKLQogcHJpdmF0ZToKICAgICAvLyBJUEM6Ok1lc3Nh
Z2VSZWNlaXZlcgogICAgIHZvaWQgZGlkUmVjZWl2ZU1lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwg
SVBDOjpEZWNvZGVyJikgb3ZlcnJpZGU7CiAKLSAgICBib29sIGlzVXBkYXRpbmcoKSBjb25zdDsK
LSAgICBib29sIGlzSGlnaEFjY3VyYWN5RW5hYmxlZCgpIGNvbnN0OwotCi0gICAgdm9pZCBkaWRD
aGFuZ2VQb3NpdGlvbihjb25zdCBXZWJDb3JlOjpHZW9sb2NhdGlvblBvc2l0aW9uRGF0YSYpOwot
ICAgIHZvaWQgZGlkRmFpbFRvRGV0ZXJtaW5lUG9zaXRpb24oY29uc3QgU3RyaW5nJiBlcnJvck1l
c3NhZ2UpOworICAgIHZvaWQgZGlkQ2hhbmdlUG9zaXRpb24oY29uc3QgV2ViQ29yZTo6UmVnaXN0
cmFibGVEb21haW4mLCBjb25zdCBXZWJDb3JlOjpHZW9sb2NhdGlvblBvc2l0aW9uRGF0YSYpOwor
ICAgIHZvaWQgZGlkRmFpbFRvRGV0ZXJtaW5lUG9zaXRpb24oY29uc3QgV2ViQ29yZTo6UmVnaXN0
cmFibGVEb21haW4mLCBjb25zdCBTdHJpbmcmIGVycm9yTWVzc2FnZSk7CiAjaWYgUExBVEZPUk0o
SU9TX0ZBTUlMWSkKLSAgICB2b2lkIHJlc2V0UGVybWlzc2lvbnMoKTsKKyAgICB2b2lkIHJlc2V0
UGVybWlzc2lvbnMoY29uc3QgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4mKTsKICNlbmRpZiAv
LyBQTEFURk9STShJT1NfRkFNSUxZKQogCisgICAgc3RydWN0IFBhZ2VTZXRzIHsKKyAgICAgICAg
V2Vha0hhc2hTZXQ8V2ViUGFnZT4gcGFnZVNldDsKKyAgICAgICAgV2Vha0hhc2hTZXQ8V2ViUGFn
ZT4gaGlnaEFjY3VyYWN5UGFnZVNldDsKKyAgICB9OworICAgIGJvb2wgaXNVcGRhdGluZyhjb25z
dCBQYWdlU2V0cyYpIGNvbnN0OworICAgIGJvb2wgaXNIaWdoQWNjdXJhY3lFbmFibGVkKGNvbnN0
IFBhZ2VTZXRzJikgY29uc3Q7CisKICAgICBXZWJQcm9jZXNzJiBtX3Byb2Nlc3M7Ci0gICAgV2Vh
a0hhc2hTZXQ8V2ViUGFnZT4gbV9wYWdlU2V0OwotICAgIFdlYWtIYXNoU2V0PFdlYlBhZ2U+IG1f
aGlnaEFjY3VyYWN5UGFnZVNldDsKKyAgICBIYXNoTWFwPFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9t
YWluLCBQYWdlU2V0cz4gbV9wYWdlU2V0czsKKyAgICBIYXNoTWFwPFdlYlBhZ2UqLCBXZWJDb3Jl
OjpSZWdpc3RyYWJsZURvbWFpbj4gbV9wYWdlVG9SZWdpc3RyYWJsZURvbWFpbjsKIH07CiAKIH0g
Ly8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L0dlb2xvY2F0aW9uL1dlYkdlb2xvY2F0aW9uTWFuYWdlci5tZXNzYWdlcy5pbiBiL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9HZW9sb2NhdGlvbi9XZWJHZW9sb2NhdGlvbk1hbmFnZXIubWVzc2Fn
ZXMuaW4KaW5kZXggNzlmM2I0Y2U0ZWZjYWYzNDg4NTdkOTkzMzI1M2Q4OTU0ZjBmMWI4Ny4uNmZj
YzYwZDJlMDhlMjZlYWI3M2MxZjcxY2Q4ODQyZGM1MTA1MmQxOCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL0dlb2xvY2F0aW9uL1dlYkdlb2xvY2F0aW9uTWFuYWdlci5tZXNz
YWdlcy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR2VvbG9jYXRpb24vV2ViR2Vv
bG9jYXRpb25NYW5hZ2VyLm1lc3NhZ2VzLmluCkBAIC0yMSw5ICsyMSw5IEBACiAjIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCiAKIG1lc3NhZ2VzIC0+IFdlYkdlb2xvY2F0aW9uTWFuYWdlciBOb3RSZWZDb3VudGVkIHsK
LSAgICBEaWRDaGFuZ2VQb3NpdGlvbihXZWJDb3JlOjpHZW9sb2NhdGlvblBvc2l0aW9uRGF0YSBw
b3NpdGlvbik7Ci0gICAgRGlkRmFpbFRvRGV0ZXJtaW5lUG9zaXRpb24oU3RyaW5nIGVycm9yTWVz
c2FnZSk7CisgICAgRGlkQ2hhbmdlUG9zaXRpb24oV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4g
cmVnaXN0cmFibGVEb21haW4sIFdlYkNvcmU6Okdlb2xvY2F0aW9uUG9zaXRpb25EYXRhIHBvc2l0
aW9uKTsKKyAgICBEaWRGYWlsVG9EZXRlcm1pbmVQb3NpdGlvbihXZWJDb3JlOjpSZWdpc3RyYWJs
ZURvbWFpbiByZWdpc3RyYWJsZURvbWFpbiwgU3RyaW5nIGVycm9yTWVzc2FnZSk7CiAjaWYgUExB
VEZPUk0oSU9TX0ZBTUlMWSkKLSAgICBSZXNldFBlcm1pc3Npb25zKCk7CisgICAgUmVzZXRQZXJt
aXNzaW9ucyhXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiByZWdpc3RyYWJsZURvbWFpbik7CiAj
ZW5kaWYKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3Vw
cG9ydC9XZWJHZW9sb2NhdGlvbkNsaWVudC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
V2ViQ29yZVN1cHBvcnQvV2ViR2VvbG9jYXRpb25DbGllbnQuY3BwCmluZGV4IGVhMDJmMmFjMTZm
NzMxYmY1NjQyZjg2NzhkODZhNDk4MTFkOGMzODYuLmQxOGRmN2VmYWY1NmVmY2ZjOGQxNjk5Yzkx
Y2QyNmI2ODliYzgyNmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJD
b3JlU3VwcG9ydC9XZWJHZW9sb2NhdGlvbkNsaWVudC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkdlb2xvY2F0aW9uQ2xpZW50LmNwcApAQCAtNDgs
OSArNDgsOSBAQCB2b2lkIFdlYkdlb2xvY2F0aW9uQ2xpZW50OjpnZW9sb2NhdGlvbkRlc3Ryb3ll
ZCgpCiAgICAgZGVsZXRlIHRoaXM7CiB9CiAKLXZvaWQgV2ViR2VvbG9jYXRpb25DbGllbnQ6OnN0
YXJ0VXBkYXRpbmcoY29uc3QgU3RyaW5nJiBhdXRob3JpemF0aW9uVG9rZW4pCit2b2lkIFdlYkdl
b2xvY2F0aW9uQ2xpZW50OjpzdGFydFVwZGF0aW5nKGNvbnN0IFN0cmluZyYgYXV0aG9yaXphdGlv
blRva2VuLCBib29sIG5lZWRzSGlnaEFjY3VyYWN5KQogewotICAgIFdlYlByb2Nlc3M6OnNpbmds
ZXRvbigpLnN1cHBsZW1lbnQ8V2ViR2VvbG9jYXRpb25NYW5hZ2VyPigpLT5yZWdpc3RlcldlYlBh
Z2UobV9wYWdlLCBhdXRob3JpemF0aW9uVG9rZW4pOworICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRv
bigpLnN1cHBsZW1lbnQ8V2ViR2VvbG9jYXRpb25NYW5hZ2VyPigpLT5yZWdpc3RlcldlYlBhZ2Uo
bV9wYWdlLCBhdXRob3JpemF0aW9uVG9rZW4sIG5lZWRzSGlnaEFjY3VyYWN5KTsKIH0KIAogdm9p
ZCBXZWJHZW9sb2NhdGlvbkNsaWVudDo6c3RvcFVwZGF0aW5nKCkKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJHZW9sb2NhdGlvbkNsaWVudC5o
IGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkdlb2xvY2F0aW9u
Q2xpZW50LmgKaW5kZXggYjE2ODE2NzQ4OTYyMjU0N2VjOTRlNjc5OGZiNjlkZDhmYTZkMDExYy4u
NjVlYzBlOTM1NDI4M2Q1ZmE3N2FmMTBiNGUxODBiODcxMmZhZWYwNyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkdlb2xvY2F0aW9uQ2xpZW50
LmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkdlb2xv
Y2F0aW9uQ2xpZW50LmgKQEAgLTMxLDcgKzMxLDcgQEAgbmFtZXNwYWNlIFdlYktpdCB7CiAKIGNs
YXNzIFdlYlBhZ2U7CiAKLWNsYXNzIFdlYkdlb2xvY2F0aW9uQ2xpZW50IDogcHVibGljIFdlYkNv
cmU6Okdlb2xvY2F0aW9uQ2xpZW50IHsKK2NsYXNzIFdlYkdlb2xvY2F0aW9uQ2xpZW50IGZpbmFs
IDogcHVibGljIFdlYkNvcmU6Okdlb2xvY2F0aW9uQ2xpZW50IHsKICAgICBXVEZfTUFLRV9GQVNU
X0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBXZWJHZW9sb2NhdGlvbkNsaWVudChXZWJQYWdlJiBw
YWdlKQpAQCAtNDIsMTcgKzQyLDE3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIH5XZWJHZW9sb2Nh
dGlvbkNsaWVudCgpOwogCiBwcml2YXRlOgotICAgIHZvaWQgZ2VvbG9jYXRpb25EZXN0cm95ZWQo
KSBvdmVycmlkZTsKKyAgICB2b2lkIGdlb2xvY2F0aW9uRGVzdHJveWVkKCkgZmluYWw7CiAKLSAg
ICB2b2lkIHN0YXJ0VXBkYXRpbmcoY29uc3QgU3RyaW5nJiBhdXRob3JpemF0aW9uVG9rZW4pIG92
ZXJyaWRlOwotICAgIHZvaWQgc3RvcFVwZGF0aW5nKCkgb3ZlcnJpZGU7Ci0gICAgdm9pZCByZXZv
a2VBdXRob3JpemF0aW9uVG9rZW4oY29uc3QgU3RyaW5nJikgb3ZlcnJpZGU7Ci0gICAgdm9pZCBz
ZXRFbmFibGVIaWdoQWNjdXJhY3koYm9vbCkgb3ZlcnJpZGU7CisgICAgdm9pZCBzdGFydFVwZGF0
aW5nKGNvbnN0IFN0cmluZyYgYXV0aG9yaXphdGlvblRva2VuLCBib29sIG5lZWRzSGlnaEFjY3Vy
YWN5KSBmaW5hbDsKKyAgICB2b2lkIHN0b3BVcGRhdGluZygpIGZpbmFsOworICAgIHZvaWQgcmV2
b2tlQXV0aG9yaXphdGlvblRva2VuKGNvbnN0IFN0cmluZyYpIGZpbmFsOworICAgIHZvaWQgc2V0
RW5hYmxlSGlnaEFjY3VyYWN5KGJvb2wpIGZpbmFsOwogCi0gICAgc3RkOjpvcHRpb25hbDxXZWJD
b3JlOjpHZW9sb2NhdGlvblBvc2l0aW9uRGF0YT4gbGFzdFBvc2l0aW9uKCkgb3ZlcnJpZGU7Cisg
ICAgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpHZW9sb2NhdGlvblBvc2l0aW9uRGF0YT4gbGFzdFBv
c2l0aW9uKCkgZmluYWw7CiAKLSAgICB2b2lkIHJlcXVlc3RQZXJtaXNzaW9uKFdlYkNvcmU6Okdl
b2xvY2F0aW9uJikgb3ZlcnJpZGU7Ci0gICAgdm9pZCBjYW5jZWxQZXJtaXNzaW9uUmVxdWVzdChX
ZWJDb3JlOjpHZW9sb2NhdGlvbiYpIG92ZXJyaWRlOworICAgIHZvaWQgcmVxdWVzdFBlcm1pc3Np
b24oV2ViQ29yZTo6R2VvbG9jYXRpb24mKSBmaW5hbDsKKyAgICB2b2lkIGNhbmNlbFBlcm1pc3Np
b25SZXF1ZXN0KFdlYkNvcmU6Okdlb2xvY2F0aW9uJikgZmluYWw7CiAKICAgICBXZWJQYWdlJiBt
X3BhZ2U7CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlByb2Nl
c3MuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3BwCmluZGV4IGRk
NDViNDU4OGJmOWRkMTI0ZTE4ZmFhOTVhMzI2ZWQzMTkzMWE0NTcuLjc5OTYxM2QzNzc0MjM2M2Jm
YmRjZDk1Mjk3OTk2MjIwNmYwMjI4YTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9XZWJQcm9jZXNzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJv
Y2Vzcy5jcHAKQEAgLTE1MjcsMTYgKzE1MjcsNiBAQCB2b2lkIFdlYlByb2Nlc3M6OnBhZ2VBY3Rp
dml0eVN0YXRlRGlkQ2hhbmdlKFBhZ2VJZGVudGlmaWVyLCBPcHRpb25TZXQ8V2ViQ29yZTo6QQog
ICAgIH0KIH0KIAotI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCi12b2lkIFdlYlByb2Nlc3M6OnJl
c2V0QWxsR2VvbG9jYXRpb25QZXJtaXNzaW9ucygpCi17Ci0gICAgZm9yIChhdXRvJiBwYWdlIDog
bV9wYWdlTWFwLnZhbHVlcygpKSB7Ci0gICAgICAgIGlmIChGcmFtZSogbWFpbkZyYW1lID0gcGFn
ZS0+bWFpbkZyYW1lKCkpCi0gICAgICAgICAgICBtYWluRnJhbWUtPnJlc2V0QWxsR2VvbG9jYXRp
b25QZXJtaXNzaW9uKCk7Ci0gICAgfQotfQotI2VuZGlmCi0KIHZvaWQgV2ViUHJvY2Vzczo6cHJl
cGFyZVRvU3VzcGVuZChib29sIGlzU3VzcGVuc2lvbkltbWluZW50LCBDb21wbGV0aW9uSGFuZGxl
cjx2b2lkKCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7CiAgICAgV0VCUFJPQ0VTU19SRUxFQVNF
X0xPRyhQcm9jZXNzU3VzcGVuc2lvbiwgInByZXBhcmVUb1N1c3BlbmQ6IGlzU3VzcGVuc2lvbklt
bWluZW50PSVkIiwgaXNTdXNwZW5zaW9uSW1taW5lbnQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9X
ZWJQcm9jZXNzLmgKaW5kZXggYzVkZDIyNWRjMWI3MWRhOWNkZDRlZWRiYTBhMDdlNzYxNzgxNTc1
ZS4uNTk1YWYwYjk3NDEyOTBkYTZjNzM0YTA4ODZiODI0ZDIzYjFlZTU3ZSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuaAorKysgYi9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5oCkBAIC0zMTAsMTAgKzMxMCw2IEBAIHB1YmxpYzoKIAog
ICAgIHZvaWQgaXNKSVRFbmFibGVkKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYpOwog
Ci0jaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKLSAgICB2b2lkIHJlc2V0QWxsR2VvbG9jYXRpb25Q
ZXJtaXNzaW9ucygpOwotI2VuZGlmCi0KICNpZiBQTEFURk9STShXQVlMQU5EKQogICAgIFdheWxh
bmRDb21wb3NpdG9yRGlzcGxheSogd2F5bGFuZENvbXBvc2l0b3JEaXNwbGF5KCkgY29uc3QgeyBy
ZXR1cm4gbV93YXlsYW5kQ29tcG9zaXRvckRpc3BsYXkuZ2V0KCk7IH0KICNlbmRpZgpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViR2VvbG9jYXRp
b25DbGllbnQuaCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkdl
b2xvY2F0aW9uQ2xpZW50LmgKaW5kZXggNzdjMjgyOGQ4NTk1MzYzNWI2NGM0Yzg5OTk5MGEwYTY0
ODE3MWI2Yy4uYjA3Yzc5MDNkMjkyYTkzMzkxZTVjNDBhZWRkNjVkZWRiYWY4YzVmMSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViR2VvbG9jYXRp
b25DbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9X
ZWJHZW9sb2NhdGlvbkNsaWVudC5oCkBAIC0zOSw3ICszOSw3IEBAIHB1YmxpYzoKICAgICBXZWJW
aWV3ICp3ZWJWaWV3KCkgeyByZXR1cm4gbV93ZWJWaWV3OyB9CiAKICAgICB2b2lkIGdlb2xvY2F0
aW9uRGVzdHJveWVkKCkgb3ZlcnJpZGU7Ci0gICAgdm9pZCBzdGFydFVwZGF0aW5nKGNvbnN0IFN0
cmluZyYgYXV0aG9yaXphdGlvblRva2VuKSBvdmVycmlkZTsKKyAgICB2b2lkIHN0YXJ0VXBkYXRp
bmcoY29uc3QgU3RyaW5nJiBhdXRob3JpemF0aW9uVG9rZW4sIGJvb2wgZW5hYmxlSGlnaEFjY3Vy
YWN5KSBvdmVycmlkZTsKICAgICB2b2lkIHN0b3BVcGRhdGluZygpIG92ZXJyaWRlOwogI2lmIFBM
QVRGT1JNKElPU19GQU1JTFkpCiAgICAgLy8gRklYTUU6IHVuaWZ5IHRoaXMgd2l0aCBNYWMgb24g
T3BlblNvdXJjZS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVT
dXBwb3J0L1dlYkdlb2xvY2F0aW9uQ2xpZW50Lm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMv
V2ViQ29yZVN1cHBvcnQvV2ViR2VvbG9jYXRpb25DbGllbnQubW0KaW5kZXggZTc4OGE1N2RkNmY4
MDdlN2IyNWM3NDJiYTgwMTkzNTdhMjczNGQzOC4uYThiODUyMWUyZGE0NzE4ZGMxNGI0MzcwYjFh
NWI0YjhkNjMyODU4OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29y
ZVN1cHBvcnQvV2ViR2VvbG9jYXRpb25DbGllbnQubW0KKysrIGIvU291cmNlL1dlYktpdExlZ2Fj
eS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViR2VvbG9jYXRpb25DbGllbnQubW0KQEAgLTgzLDkgKzgz
LDE2IEBAIHZvaWQgV2ViR2VvbG9jYXRpb25DbGllbnQ6Omdlb2xvY2F0aW9uRGVzdHJveWVkKCkK
ICAgICBkZWxldGUgdGhpczsKIH0KIAotdm9pZCBXZWJHZW9sb2NhdGlvbkNsaWVudDo6c3RhcnRV
cGRhdGluZyhjb25zdCBTdHJpbmcmIGF1dGhvcml6YXRpb25Ub2tlbikKK3ZvaWQgV2ViR2VvbG9j
YXRpb25DbGllbnQ6OnN0YXJ0VXBkYXRpbmcoY29uc3QgU3RyaW5nJiBhdXRob3JpemF0aW9uVG9r
ZW4sIGJvb2wgZW5hYmxlSGlnaEFjY3VyYWN5KQogewogICAgIFVOVVNFRF9QQVJBTShhdXRob3Jp
emF0aW9uVG9rZW4pOworI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCisgICAgaWYgKGVuYWJsZUhp
Z2hBY2N1cmFjeSkKKyAgICAgICAgc2V0RW5hYmxlSGlnaEFjY3VyYWN5KHRydWUpOworI2Vsc2UK
KyAgICBVTlVTRURfUEFSQU0oZW5hYmxlSGlnaEFjY3VyYWN5KTsKKyNlbmRpZgorCiAgICAgW1tt
X3dlYlZpZXcgX2dlb2xvY2F0aW9uUHJvdmlkZXJdIHJlZ2lzdGVyV2ViVmlldzptX3dlYlZpZXdd
OwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJDb3JlU3VwcG9y
dC9XZWJHZW9sb2NhdGlvbkNsaWVudC5jcHAgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJD
b3JlU3VwcG9ydC9XZWJHZW9sb2NhdGlvbkNsaWVudC5jcHAKaW5kZXggZTFmY2EyNzcyNDk2MTU0
YTRlMDcwZTRkZmRhN2U3N2U5NzM1ODJjMS4uYWM1NDUxNGM2NDJlYTBlNWY4YWYzMzY5ZTFiYmJh
ZTBjMzkwNzFiNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViQ29yZVN1
cHBvcnQvV2ViR2VvbG9jYXRpb25DbGllbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kv
d2luL1dlYkNvcmVTdXBwb3J0L1dlYkdlb2xvY2F0aW9uQ2xpZW50LmNwcApAQCAtNDgsOSArNDgs
MTAgQEAgdm9pZCBXZWJHZW9sb2NhdGlvbkNsaWVudDo6Z2VvbG9jYXRpb25EZXN0cm95ZWQoKQog
ICAgIGRlbGV0ZSB0aGlzOwogfQogCi12b2lkIFdlYkdlb2xvY2F0aW9uQ2xpZW50OjpzdGFydFVw
ZGF0aW5nKGNvbnN0IFN0cmluZyYgYXV0aG9yaXphdGlvblRva2VuKQordm9pZCBXZWJHZW9sb2Nh
dGlvbkNsaWVudDo6c3RhcnRVcGRhdGluZyhjb25zdCBTdHJpbmcmIGF1dGhvcml6YXRpb25Ub2tl
biwgYm9vbCBlbmFibGVIaWdoQWNjdXJhY3kpCiB7CiAgICAgVU5VU0VEX1BBUkFNKGF1dGhvcml6
YXRpb25Ub2tlbik7CisgICAgVU5VU0VEX1BBUkFNKGVuYWJsZUhpZ2hBY2N1cmFjeSk7CiAgICAg
Q09NUHRyPElXZWJHZW9sb2NhdGlvblByb3ZpZGVyPiBwcm92aWRlcjsKICAgICBpZiAoRkFJTEVE
KG1fd2ViVmlldy0+Z2VvbG9jYXRpb25Qcm92aWRlcigmcHJvdmlkZXIpKSkKICAgICAgICAgcmV0
dXJuOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViQ29yZVN1cHBvcnQv
V2ViR2VvbG9jYXRpb25DbGllbnQuaCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkNvcmVT
dXBwb3J0L1dlYkdlb2xvY2F0aW9uQ2xpZW50LmgKaW5kZXggMTk1NzQxN2I1NWQ3ZTVkMmY5Yjcx
ZTVjOWQ5YzMwM2RmZWY0ZTE4Ni4uNWI4ZTk0NDRmMjFmZWQ0M2VkZjI1OTFhMmJhMTVkYTNiZDQ0
ZjQ0YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViQ29yZVN1cHBvcnQv
V2ViR2VvbG9jYXRpb25DbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJD
b3JlU3VwcG9ydC9XZWJHZW9sb2NhdGlvbkNsaWVudC5oCkBAIC00MSw3ICs0MSw3IEBAIHB1Ymxp
YzoKICAgICBXZWJHZW9sb2NhdGlvbkNsaWVudChXZWJWaWV3Kik7CiAKICAgICB2b2lkIGdlb2xv
Y2F0aW9uRGVzdHJveWVkKCkgZmluYWw7Ci0gICAgdm9pZCBzdGFydFVwZGF0aW5nKGNvbnN0IFN0
cmluZyYgYXV0aG9yaXphdGlvblRva2VuKSBmaW5hbDsKKyAgICB2b2lkIHN0YXJ0VXBkYXRpbmco
Y29uc3QgU3RyaW5nJiBhdXRob3JpemF0aW9uVG9rZW4sIGJvb2wgZW5hYmxlSGlnaEFjY3VyYWN5
KSBmaW5hbDsKICAgICB2b2lkIHN0b3BVcGRhdGluZygpIGZpbmFsOwogICAgIHZvaWQgc2V0RW5h
YmxlSGlnaEFjY3VyYWN5KGJvb2wpIGZpbmFsIHsgfQogICAgIHN0ZDo6b3B0aW9uYWw8V2ViQ29y
ZTo6R2VvbG9jYXRpb25Qb3NpdGlvbkRhdGE+IGxhc3RQb3NpdGlvbigpIGZpbmFsOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>452055</attachid>
            <date>2022-02-15 10:54:22 -0800</date>
            <delta_ts>2022-02-15 11:20:02 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-236566-20220215105422.patch</filename>
            <type>text/plain</type>
            <size>110526</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg5ODE3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IGY2MDY5ODliY2RhNjQyMTdkZTJlNzcw
ODM4NmYzNzA2N2ExYThkZTQuLjE4NzM2NzA0OWU1NTRiZmUyMGNjNWM3ZGQ0OThiZjJjZTVjYWNi
MzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMTUgQEAKKzIwMjItMDItMTMgIENocmlzIER1bWV6ICA8Y2R1bWV6
QGFwcGxlLmNvbT4KKworICAgICAgICBEbyBwcmVsaW1pbmFyeSB3b3JrIHRvIHBhc3MgZG9tYWlu
IG5hbWVzIHRvIENvcmVMb2NhdGlvbgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MjM2NTY2CisgICAgICAgIDxyZGFyOi8vODg3NjE0MTM+CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgRGFyaW4gQWRsZXIuCisKKyAgICAgICAgQWRkIGJ1aWxkIHRpbWUgZmxh
ZyBmb3IgcGFzc2luZyB3ZWJzaXRlIGlkZW50aWZpZXJzIHRvIENvcmVMb2NhdGlvbi4KKworICAg
ICAgICAqIHd0Zi9QbGF0Zm9ybUhhdmUuaDoKKwogMjAyMi0wMi0xNSAgUm9iaW4gTW9yaXNzZXQg
IDxybW9yaXNzZXRAYXBwbGUuY29tPgogCiAgICAgICAgIFtXR1NMXSBJbXBsZW1lbnQgZW5vdWdo
IG9mIHRoZSBsZXhlciBmb3IgdGhlIHNpbXBsZXN0IHNoYWRlcnMKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCAyZDVh
YTY0ODYxOTQ5YjZmMWY1ZDJmMDg5Nzk4MTE1NjI4OWRlZmUwLi5lNzcxYTJlMzI4ODNjYWU3YTlk
NmFlNzA2ZGI1ZWRjODQyODhmNjZmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VM
b2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNTQgQEAKKzIwMjIt
MDItMTMgIENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KKworICAgICAgICBEbyBwcmVs
aW1pbmFyeSB3b3JrIHRvIHBhc3MgZG9tYWluIG5hbWVzIHRvIENvcmVMb2NhdGlvbgorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjM2NTY2CisgICAgICAg
IDxyZGFyOi8vODg3NjE0MTM+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgRGFyaW4gQWRsZXIuCisK
KyAgICAgICAgRG8gcHJlbGltaW5hcnkgd29yayB0byBwYXNzIGRvbWFpbiBuYW1lcyB0byBDb3Jl
TG9jYXRpb24gd2hlbiB1c2luZyB0aGUgR2VvbG9jYXRpb24gQVBJLgorICAgICAgICBUaGlzIHBp
cGVzIHRoZSBkb21haW4gbmFtZXMgYWxsIHRoZSB3YXkgZnJvbSB0aGUgR2VvbG9jYXRpb24gQVBJ
IHRvIHRoZSBDb3JlTG9jYXRpb24gY2FsbHMKKyAgICAgICAgYnV0IGRvZXNuJ3QgeWV0IHBhc3Mg
dGhlIGRvbWFpbiB0byBDb3JlTG9jYXRpb24gZHVlIHRvIDxyZGFyOi8vODg4MzQzMDE+LiBJIHdp
bGwgZm9sbG93LXVwCisgICAgICAgIG9uY2UgPHJkYXI6Ly84ODgzNDMwMT4gaXMgZml4ZWQuCisK
KyAgICAgICAgKiBNb2R1bGVzL2dlb2xvY2F0aW9uL0dlb2xvY2F0aW9uQ2xpZW50Lmg6CisgICAg
ICAgICogTW9kdWxlcy9nZW9sb2NhdGlvbi9HZW9sb2NhdGlvbkNvbnRyb2xsZXIuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6R2VvbG9jYXRpb25Db250cm9sbGVyOjpkaWROYXZpZ2F0ZVBhZ2UpOgor
ICAgICAgICAoV2ViQ29yZTo6R2VvbG9jYXRpb25Db250cm9sbGVyOjphZGRPYnNlcnZlcik6Cisg
ICAgICAgIChXZWJDb3JlOjpHZW9sb2NhdGlvbkNvbnRyb2xsZXI6OnJlbW92ZU9ic2VydmVyKToK
KyAgICAgICAgKFdlYkNvcmU6Okdlb2xvY2F0aW9uQ29udHJvbGxlcjo6YWN0aXZpdHlTdGF0ZURp
ZENoYW5nZSk6CisgICAgICAgIChXZWJDb3JlOjpHZW9sb2NhdGlvbkNvbnRyb2xsZXI6OnN0YXJ0
VXBkYXRpbmdJZk5lY2Vzc2FyeSk6CisgICAgICAgIChXZWJDb3JlOjpHZW9sb2NhdGlvbkNvbnRy
b2xsZXI6OnN0b3BVcGRhdGluZ0lmTmVjZXNzYXJ5KToKKyAgICAgICAgKiBNb2R1bGVzL2dlb2xv
Y2F0aW9uL0dlb2xvY2F0aW9uQ29udHJvbGxlci5oOgorICAgICAgICAoV2ViQ29yZTo6R2VvbG9j
YXRpb25Db250cm9sbGVyOjpuZWVkc0hpZ2hBY2N1cmFjeSBjb25zdCk6CisgICAgICAgICogTW9k
dWxlcy9nZW9sb2NhdGlvbi9HZW9sb2NhdGlvblBvc2l0aW9uRGF0YS5oOgorICAgICAgICAqIE1v
ZHVsZXMvZ2VvbG9jYXRpb24vaW9zL0dlb2xvY2F0aW9uUG9zaXRpb25EYXRhSU9TLm1tOgorICAg
ICAgICAqIFNvdXJjZXNDb2NvYS50eHQ6CisgICAgICAgICogV2ViQ29yZS54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qOgorICAgICAgICAqIHBhZ2UvUGFnZS5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpQYWdlOjpkaWRDb21taXRMb2FkKToKKyAgICAgICAgKiBwbGF0Zm9ybS9jb2NvYS9Db3JlTG9j
YXRpb25HZW9sb2NhdGlvblByb3ZpZGVyLmg6IENvcGllZCBmcm9tIFNvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvZ2VvbG9jYXRpb24vR2VvbG9jYXRpb25DbGllbnQuaC4KKyAgICAgICAgKiBwbGF0Zm9y
bS9jb2NvYS9Db3JlTG9jYXRpb25HZW9sb2NhdGlvblByb3ZpZGVyLm1tOiBBZGRlZC4KKyAgICAg
ICAgKGlzQXV0aG9yaXphdGlvbkdyYW50ZWQpOgorICAgICAgICAoLVtXZWJDTExvY2F0aW9uTWFu
YWdlciBpbml0V2l0aFdlYnNpdGVJZGVudGlmaWVyOmNsaWVudDpdKToKKyAgICAgICAgKC1bV2Vi
Q0xMb2NhdGlvbk1hbmFnZXIgZGVhbGxvY10pOgorICAgICAgICAoLVtXZWJDTExvY2F0aW9uTWFu
YWdlciBzdGFydF0pOgorICAgICAgICAoLVtXZWJDTExvY2F0aW9uTWFuYWdlciBzdG9wXSk6Cisg
ICAgICAgICgtW1dlYkNMTG9jYXRpb25NYW5hZ2VyIHNldEVuYWJsZUhpZ2hBY2N1cmFjeTpdKToK
KyAgICAgICAgKC1bV2ViQ0xMb2NhdGlvbk1hbmFnZXIgcmVxdWVzdEdlb2xvY2F0aW9uQXV0aG9y
aXphdGlvbl0pOgorICAgICAgICAoLVtXZWJDTExvY2F0aW9uTWFuYWdlciBsb2NhdGlvbk1hbmFn
ZXJEaWRDaGFuZ2VBdXRob3JpemF0aW9uOl0pOgorICAgICAgICAoLVtXZWJDTExvY2F0aW9uTWFu
YWdlciBsb2NhdGlvbk1hbmFnZXI6ZGlkVXBkYXRlTG9jYXRpb25zOl0pOgorICAgICAgICAoLVtX
ZWJDTExvY2F0aW9uTWFuYWdlciBsb2NhdGlvbk1hbmFnZXI6ZGlkRmFpbFdpdGhFcnJvcjpdKToK
KyAgICAgICAgKFdlYkNvcmU6OkNvcmVMb2NhdGlvbkdlb2xvY2F0aW9uUHJvdmlkZXI6OkNvcmVM
b2NhdGlvbkdlb2xvY2F0aW9uUHJvdmlkZXIpOgorICAgICAgICAoV2ViQ29yZTo6Q29yZUxvY2F0
aW9uR2VvbG9jYXRpb25Qcm92aWRlcjo6fkNvcmVMb2NhdGlvbkdlb2xvY2F0aW9uUHJvdmlkZXIp
OgorICAgICAgICAoV2ViQ29yZTo6Q29yZUxvY2F0aW9uR2VvbG9jYXRpb25Qcm92aWRlcjo6c3Rh
cnQpOgorICAgICAgICAoV2ViQ29yZTo6Q29yZUxvY2F0aW9uR2VvbG9jYXRpb25Qcm92aWRlcjo6
c3RvcCk6CisgICAgICAgIChXZWJDb3JlOjpDb3JlTG9jYXRpb25HZW9sb2NhdGlvblByb3ZpZGVy
OjpzZXRFbmFibGVIaWdoQWNjdXJhY3kpOgorICAgICAgICAoV2ViQ29yZTo6Q29yZUxvY2F0aW9u
R2VvbG9jYXRpb25Qcm92aWRlcjo6cmVxdWVzdEF1dGhvcml6YXRpb24pOgorICAgICAgICAqIHBs
YXRmb3JtL21vY2svR2VvbG9jYXRpb25DbGllbnRNb2NrLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
Okdlb2xvY2F0aW9uQ2xpZW50TW9jazo6c3RhcnRVcGRhdGluZyk6CisgICAgICAgICogcGxhdGZv
cm0vbW9jay9HZW9sb2NhdGlvbkNsaWVudE1vY2suaDoKKwogMjAyMi0wMi0xMCAgU2VyZ2lvIFZp
bGxhciBTZW5pbiAgPHN2aWxsYXJAaWdhbGlhLmNvbT4KIAogICAgICAgICBEbyBub3QgdXBkYXRl
IHRoZSBmcmFnbWVudGVkIGZsb3cgc3RhdGUgd2hpbGUgaW50ZXJuYWxseSBtdXRhdGluZyB0aGUg
cmVuZGVyIHRyZWUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nIGIvU291cmNl
L1dlYktpdC9DaGFuZ2VMb2cKaW5kZXggOGU4ZmJlNzNmMzliNzc2MDI3Yjk1YTQ5ZDk0N2JiMGQ3
OTBjMDJjOS4uZDZjYTE1ZWZkMWMwZjlmYjI4NGFlODJmYTZmMDJhNTJkOWM2M2JkMiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9DaGFuZ2VM
b2cKQEAgLTEsMyArMSw5NCBAQAorMjAyMi0wMi0xMyAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBw
bGUuY29tPgorCisgICAgICAgIERvIHByZWxpbWluYXJ5IHdvcmsgdG8gcGFzcyBkb21haW4gbmFt
ZXMgdG8gQ29yZUxvY2F0aW9uCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0yMzY1NjYKKyAgICAgICAgPHJkYXI6Ly84ODc2MTQxMz4KKworICAgICAgICBS
ZXZpZXdlZCBieSBEYXJpbiBBZGxlci4KKworICAgICAgICBEbyBwcmVsaW1pbmFyeSB3b3JrIHRv
IHBhc3MgZG9tYWluIG5hbWVzIHRvIENvcmVMb2NhdGlvbiB3aGVuIHVzaW5nIHRoZSBHZW9sb2Nh
dGlvbiBBUEkuCisgICAgICAgIFRoaXMgcGlwZXMgdGhlIGRvbWFpbiBuYW1lcyBhbGwgdGhlIHdh
eSBmcm9tIHRoZSBHZW9sb2NhdGlvbiBBUEkgdG8gdGhlIENvcmVMb2NhdGlvbiBjYWxscworICAg
ICAgICBidXQgZG9lc24ndCB5ZXQgcGFzcyB0aGUgZG9tYWluIHRvIENvcmVMb2NhdGlvbiBkdWUg
dG8gPHJkYXI6Ly84ODgzNDMwMT4uIEkgd2lsbCBmb2xsb3ctdXAKKyAgICAgICAgb25jZSA8cmRh
cjovLzg4ODM0MzAxPiBpcyBmaXhlZC4KKworICAgICAgICAqIFNvdXJjZXNDb2NvYS50eHQ6Cisg
ICAgICAgICogVUlQcm9jZXNzL0FQSS9DL1dLR2VvbG9jYXRpb25NYW5hZ2VyLmNwcDoKKyAgICAg
ICAgKFdLR2VvbG9jYXRpb25NYW5hZ2VyU2V0UHJvdmlkZXIpOgorICAgICAgICAqIFVJUHJvY2Vz
cy9Db2NvYS9XZWJHZW9sb2NhdGlvbk1hbmFnZXJQcm94eUNvY29hLmNwcDogQWRkZWQuCisgICAg
ICAgIChXZWJLaXQ6OldlYkdlb2xvY2F0aW9uTWFuYWdlclByb3h5Ojpwb3NpdGlvbkNoYW5nZWQp
OgorICAgICAgICAoV2ViS2l0OjpXZWJHZW9sb2NhdGlvbk1hbmFnZXJQcm94eTo6ZXJyb3JPY2N1
cnJlZCk6CisgICAgICAgIChXZWJLaXQ6OldlYkdlb2xvY2F0aW9uTWFuYWdlclByb3h5OjpyZXNl
dEdlb2xvY2F0aW9uKToKKyAgICAgICAgKFdlYktpdDo6V2ViR2VvbG9jYXRpb25NYW5hZ2VyUHJv
eHk6OmlzVXBkYXRpbmcgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpXZWJHZW9sb2NhdGlvbk1h
bmFnZXJQcm94eTo6aXNIaWdoQWNjdXJhY3lFbmFibGVkIGNvbnN0KToKKyAgICAgICAgKFdlYktp
dDo6V2ViR2VvbG9jYXRpb25NYW5hZ2VyUHJveHk6OnByb3ZpZGVyU3RhcnRVcGRhdGluZyk6Cisg
ICAgICAgIChXZWJLaXQ6OldlYkdlb2xvY2F0aW9uTWFuYWdlclByb3h5Ojpwcm92aWRlclN0b3BV
cGRhdGluZyk6CisgICAgICAgIChXZWJLaXQ6OldlYkdlb2xvY2F0aW9uTWFuYWdlclByb3h5Ojpw
cm92aWRlclNldEVuYWJsZWRIaWdoQWNjdXJhY3kpOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJH
ZW9sb2NhdGlvbk1hbmFnZXJQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYkdlb2xvY2F0
aW9uTWFuYWdlclByb3h5OjpXZWJHZW9sb2NhdGlvbk1hbmFnZXJQcm94eSk6CisgICAgICAgIChX
ZWJLaXQ6OldlYkdlb2xvY2F0aW9uTWFuYWdlclByb3h5Ojpwcm9jZXNzUG9vbERlc3Ryb3llZCk6
CisgICAgICAgIChXZWJLaXQ6OldlYkdlb2xvY2F0aW9uTWFuYWdlclByb3h5Ojpwcm9jZXNzRGlk
Q2xvc2UpOgorICAgICAgICAoV2ViS2l0OjpXZWJHZW9sb2NhdGlvbk1hbmFnZXJQcm94eTo6cHJv
dmlkZXJEaWRDaGFuZ2VQb3NpdGlvbik6CisgICAgICAgIChXZWJLaXQ6OldlYkdlb2xvY2F0aW9u
TWFuYWdlclByb3h5Ojpwcm92aWRlckRpZEZhaWxUb0RldGVybWluZVBvc2l0aW9uKToKKyAgICAg
ICAgKFdlYktpdDo6V2ViR2VvbG9jYXRpb25NYW5hZ2VyUHJveHk6OnN0YXJ0VXBkYXRpbmcpOgor
ICAgICAgICAoV2ViS2l0OjpXZWJHZW9sb2NhdGlvbk1hbmFnZXJQcm94eTo6c3RvcFVwZGF0aW5n
KToKKyAgICAgICAgKFdlYktpdDo6V2ViR2VvbG9jYXRpb25NYW5hZ2VyUHJveHk6OnNldEVuYWJs
ZUhpZ2hBY2N1cmFjeSk6CisgICAgICAgIChXZWJLaXQ6OldlYkdlb2xvY2F0aW9uTWFuYWdlclBy
b3h5OjpzZXRQcm92aWRlcik6CisgICAgICAgIChXZWJLaXQ6OldlYkdlb2xvY2F0aW9uTWFuYWdl
clByb3h5Ojppc1VwZGF0aW5nIGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6V2ViR2VvbG9jYXRp
b25NYW5hZ2VyUHJveHk6OmlzSGlnaEFjY3VyYWN5RW5hYmxlZCBjb25zdCk6CisgICAgICAgIChX
ZWJLaXQ6OldlYkdlb2xvY2F0aW9uTWFuYWdlclByb3h5Ojpwcm92aWRlclN0YXJ0VXBkYXRpbmcp
OgorICAgICAgICAoV2ViS2l0OjpXZWJHZW9sb2NhdGlvbk1hbmFnZXJQcm94eTo6cHJvdmlkZXJT
dG9wVXBkYXRpbmcpOgorICAgICAgICAoV2ViS2l0OjpXZWJHZW9sb2NhdGlvbk1hbmFnZXJQcm94
eTo6cHJvdmlkZXJTZXRFbmFibGVkSGlnaEFjY3VyYWN5KToKKyAgICAgICAgKFdlYktpdDo6V2Vi
R2VvbG9jYXRpb25NYW5hZ2VyUHJveHk6OnJlc2V0UGVybWlzc2lvbnMpOiBEZWxldGVkLgorICAg
ICAgICAoV2ViS2l0OjpXZWJHZW9sb2NhdGlvbk1hbmFnZXJQcm94eTo6cmVtb3ZlUmVxdWVzdGVy
KTogRGVsZXRlZC4KKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViR2VvbG9jYXRpb25NYW5hZ2VyUHJv
eHkuaDoKKyAgICAgICAgKFdlYktpdDo6V2ViR2VvbG9jYXRpb25NYW5hZ2VyUHJveHk6Omxhc3RQ
b3NpdGlvbiBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJLaXQ6OldlYkdlb2xvY2F0aW9u
TWFuYWdlclByb3h5Ojppc1VwZGF0aW5nIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYktp
dDo6V2ViR2VvbG9jYXRpb25NYW5hZ2VyUHJveHk6OmlzSGlnaEFjY3VyYWN5RW5hYmxlZCBjb25z
dCk6IERlbGV0ZWQuCisgICAgICAgICogVUlQcm9jZXNzL1dlYkdlb2xvY2F0aW9uTWFuYWdlclBy
b3h5Lm1lc3NhZ2VzLmluOgorICAgICAgICAqIFVJUHJvY2Vzcy9pb3MvV0tHZW9sb2NhdGlvblBy
b3ZpZGVySU9TLm1tOgorICAgICAgICAoLVtXS0dlb2xvY2F0aW9uUHJvdmlkZXJJT1MgX3N0YXJ0
VXBkYXRpbmddKToKKyAgICAgICAgKC1bV0tHZW9sb2NhdGlvblByb3ZpZGVySU9TIF9zdG9wVXBk
YXRpbmddKToKKyAgICAgICAgKC1bV0tHZW9sb2NhdGlvblByb3ZpZGVySU9TIF9zZXRFbmFibGVI
aWdoQWNjdXJhY3k6XSk6CisgICAgICAgICgtW1dLR2VvbG9jYXRpb25Qcm92aWRlcklPUyBpbml0
V2l0aFByb2Nlc3NQb29sOl0pOgorICAgICAgICAoLVtXS0dlb2xvY2F0aW9uUHJvdmlkZXJJT1Mg
ZGVjaWRlUG9saWN5Rm9yR2VvbG9jYXRpb25SZXF1ZXN0RnJvbU9yaWdpbjpjb21wbGV0aW9uSGFu
ZGxlcjp2aWV3Ol0pOgorICAgICAgICAoLVtXS0dlb2xvY2F0aW9uUHJvdmlkZXJJT1MgZ2VvbG9j
YXRpb25BdXRob3JpemF0aW9uR3JhbnRlZF0pOgorICAgICAgICAoLVtXS0dlb2xvY2F0aW9uUHJv
dmlkZXJJT1MgcG9zaXRpb25DaGFuZ2VkOl0pOgorICAgICAgICAoLVtXS0dlb2xvY2F0aW9uUHJv
dmlkZXJJT1MgZXJyb3JPY2N1cnJlZDpdKToKKyAgICAgICAgKC1bV0tHZW9sb2NhdGlvblByb3Zp
ZGVySU9TIHJlc2V0R2VvbG9jYXRpb25dKToKKyAgICAgICAgKHN0YXJ0VXBkYXRpbmdDYWxsYmFj
ayk6IERlbGV0ZWQuCisgICAgICAgIChzdG9wVXBkYXRpbmdDYWxsYmFjayk6IERlbGV0ZWQuCisg
ICAgICAgIChzZXRFbmFibGVIaWdoQWNjdXJhY3kpOiBEZWxldGVkLgorICAgICAgICAoLVtXS0xl
Z2FjeUNvcmVMb2NhdGlvblByb3ZpZGVyIHNldExpc3RlbmVyOl0pOiBEZWxldGVkLgorICAgICAg
ICAoLVtXS0xlZ2FjeUNvcmVMb2NhdGlvblByb3ZpZGVyIHJlcXVlc3RHZW9sb2NhdGlvbkF1dGhv
cml6YXRpb25dKTogRGVsZXRlZC4KKyAgICAgICAgKC1bV0tMZWdhY3lDb3JlTG9jYXRpb25Qcm92
aWRlciBzdGFydF0pOiBEZWxldGVkLgorICAgICAgICAoLVtXS0xlZ2FjeUNvcmVMb2NhdGlvblBy
b3ZpZGVyIHN0b3BdKTogRGVsZXRlZC4KKyAgICAgICAgKC1bV0tMZWdhY3lDb3JlTG9jYXRpb25Q
cm92aWRlciBzZXRFbmFibGVIaWdoQWNjdXJhY3k6XSk6IERlbGV0ZWQuCisgICAgICAgICgtW1dL
TGVnYWN5Q29yZUxvY2F0aW9uUHJvdmlkZXIgZ2VvbG9jYXRpb25BdXRob3JpemF0aW9uR3JhbnRl
ZF0pOiBEZWxldGVkLgorICAgICAgICAoLVtXS0xlZ2FjeUNvcmVMb2NhdGlvblByb3ZpZGVyIGdl
b2xvY2F0aW9uQXV0aG9yaXphdGlvbkRlbmllZF0pOiBEZWxldGVkLgorICAgICAgICAoLVtXS0xl
Z2FjeUNvcmVMb2NhdGlvblByb3ZpZGVyIHBvc2l0aW9uQ2hhbmdlZDpdKTogRGVsZXRlZC4KKyAg
ICAgICAgKC1bV0tMZWdhY3lDb3JlTG9jYXRpb25Qcm92aWRlciBlcnJvck9jY3VycmVkOl0pOiBE
ZWxldGVkLgorICAgICAgICAoLVtXS0xlZ2FjeUNvcmVMb2NhdGlvblByb3ZpZGVyIHJlc2V0R2Vv
bG9jYXRpb25dKTogRGVsZXRlZC4KKyAgICAgICAgKiBXZWJLaXQueGNvZGVwcm9qL3Byb2plY3Qu
cGJ4cHJvajoKKyAgICAgICAgKiBXZWJQcm9jZXNzL0dlb2xvY2F0aW9uL1dlYkdlb2xvY2F0aW9u
TWFuYWdlci5jcHA6CisgICAgICAgIChXZWJLaXQ6OnJlZ2lzdHJhYmxlRG9tYWluRm9yUGFnZSk6
CisgICAgICAgIChXZWJLaXQ6OldlYkdlb2xvY2F0aW9uTWFuYWdlcjo6cmVnaXN0ZXJXZWJQYWdl
KToKKyAgICAgICAgKFdlYktpdDo6V2ViR2VvbG9jYXRpb25NYW5hZ2VyOjp1bnJlZ2lzdGVyV2Vi
UGFnZSk6CisgICAgICAgIChXZWJLaXQ6OldlYkdlb2xvY2F0aW9uTWFuYWdlcjo6c2V0RW5hYmxl
SGlnaEFjY3VyYWN5Rm9yUGFnZSk6CisgICAgICAgIChXZWJLaXQ6OldlYkdlb2xvY2F0aW9uTWFu
YWdlcjo6ZGlkQ2hhbmdlUG9zaXRpb24pOgorICAgICAgICAoV2ViS2l0OjpXZWJHZW9sb2NhdGlv
bk1hbmFnZXI6OmRpZEZhaWxUb0RldGVybWluZVBvc2l0aW9uKToKKyAgICAgICAgKFdlYktpdDo6
V2ViR2VvbG9jYXRpb25NYW5hZ2VyOjpyZXNldFBlcm1pc3Npb25zKToKKyAgICAgICAgKFdlYktp
dDo6V2ViR2VvbG9jYXRpb25NYW5hZ2VyOjppc1VwZGF0aW5nIGNvbnN0KTogRGVsZXRlZC4KKyAg
ICAgICAgKFdlYktpdDo6V2ViR2VvbG9jYXRpb25NYW5hZ2VyOjppc0hpZ2hBY2N1cmFjeUVuYWJs
ZWQgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAqIFdlYlByb2Nlc3MvR2VvbG9jYXRpb24vV2Vi
R2VvbG9jYXRpb25NYW5hZ2VyLmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9HZW9sb2NhdGlvbi9X
ZWJHZW9sb2NhdGlvbk1hbmFnZXIubWVzc2FnZXMuaW46CisgICAgICAgICogV2ViUHJvY2Vzcy9X
ZWJDb3JlU3VwcG9ydC9XZWJHZW9sb2NhdGlvbkNsaWVudC5jcHA6CisgICAgICAgIChXZWJLaXQ6
OldlYkdlb2xvY2F0aW9uQ2xpZW50OjpzdGFydFVwZGF0aW5nKToKKyAgICAgICAgKiBXZWJQcm9j
ZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkdlb2xvY2F0aW9uQ2xpZW50Lmg6CisgICAgICAgIChXZWJL
aXQ6OldlYkdlb2xvY2F0aW9uQ2xpZW50OjpXZWJHZW9sb2NhdGlvbkNsaWVudCk6IERlbGV0ZWQu
CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmNwcDoKKyAgICAgICAgKFdlYktpdDo6
V2ViUHJvY2Vzczo6cmVzZXRBbGxHZW9sb2NhdGlvblBlcm1pc3Npb25zKTogRGVsZXRlZC4KKyAg
ICAgICAgKiBXZWJQcm9jZXNzL1dlYlByb2Nlc3MuaDoKKwogMjAyMi0wMi0xNSAgSiBQYXNjb2Ug
IDxqX3Bhc2NvZUBhcHBsZS5jb20+CiAKICAgICAgICAgTW9kaWZ5IGdldEFsbExvY2FsQXV0aGVu
dGljYXRvckNyZWRlbnRpYWxzIGFjY29yZGluZyB0byBpbnRlcm5hbCByZXF1aXJlbWVudHMKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJL
aXRMZWdhY3kvbWFjL0NoYW5nZUxvZwppbmRleCA2ODAzOTQ4NThhMTViOGEyNTY5NmFhZWM3Yzhk
OTRhYTczYWQ3MjIzLi45OTM4NjU4NDNhN2U4OGUxZmY3ZDg0ZGNmOTdiMWU5ZTA3MjI2ZmM2IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9DaGFuZ2VMb2cKKysrIGIvU291cmNl
L1dlYktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTUgQEAKKzIwMjItMDItMTMg
IENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KKworICAgICAgICBEbyBwcmVsaW1pbmFy
eSB3b3JrIHRvIHBhc3MgZG9tYWluIG5hbWVzIHRvIENvcmVMb2NhdGlvbgorICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjM2NTY2CisgICAgICAgIDxyZGFy
Oi8vODg3NjE0MTM+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgRGFyaW4gQWRsZXIuCisKKyAgICAg
ICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJHZW9sb2NhdGlvbkNsaWVudC5oOgorICAgICAgICAqIFdl
YkNvcmVTdXBwb3J0L1dlYkdlb2xvY2F0aW9uQ2xpZW50Lm1tOgorICAgICAgICAoV2ViR2VvbG9j
YXRpb25DbGllbnQ6OnN0YXJ0VXBkYXRpbmcpOgorCiAyMDIyLTAyLTExICBDaHJpcyBEdW1leiAg
PGNkdW1lekBhcHBsZS5jb20+CiAKICAgICAgICAgVW5yZXZpZXdlZCwgZml4IGJ1aWxkIHdpdGgg
dGhlIGxhdGVzdCBpT1MgU0RLLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4v
Q2hhbmdlTG9nIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vQ2hhbmdlTG9nCmluZGV4IDY5NWFh
OTEwNTM5ZWYwMjEwNWY1MjE5MzA0YzA5N2UxMDMxMjY0NTUuLmY0MDBmMzY3ZDA1MmFiZTU4NzU5
YTVkNzJjNTI5NjUxZGQ5OTE0M2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2lu
L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxNSBAQAorMjAyMi0wMi0xMyAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgor
CisgICAgICAgIERvIHByZWxpbWluYXJ5IHdvcmsgdG8gcGFzcyBkb21haW4gbmFtZXMgdG8gQ29y
ZUxvY2F0aW9uCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0yMzY1NjYKKyAgICAgICAgPHJkYXI6Ly84ODc2MTQxMz4KKworICAgICAgICBSZXZpZXdlZCBi
eSBEYXJpbiBBZGxlci4KKworICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYkdlb2xvY2F0aW9u
Q2xpZW50LmNwcDoKKyAgICAgICAgKFdlYkdlb2xvY2F0aW9uQ2xpZW50OjpzdGFydFVwZGF0aW5n
KToKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJHZW9sb2NhdGlvbkNsaWVudC5oOgorCiAy
MDIyLTAyLTAxICBNeWxlcyBDLiBNYXhmaWVsZCAgPG1tYXhmaWVsZEBhcHBsZS5jb20+CiAKICAg
ICAgICAgUmVuYW1lIEZvbnRDYXNjYWRlOjpmb250TWV0cmljcygpIGFuZCBSZW5kZXJTdHlsZTo6
Zm9udE1ldHJpY3MoKSB0byBmb250TWV0cmljc09mUHJpbWFyeUZvbnQoKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dURi93dGYvUGxhdGZvcm1IYXZlLmggYi9Tb3VyY2UvV1RGL3d0Zi9QbGF0Zm9ybUhh
dmUuaAppbmRleCAwOTJiYzM2MjE1MDFkNDRjZWFmYjA3MGZhY2NkMzk5NWNkYTIzMTI3Li42NGE1
ZTc5YjA0NGVmYmI4MmFlZjI0OWE0MWIyZGQ5OGZiZTg1NzBhIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V1RGL3d0Zi9QbGF0Zm9ybUhhdmUuaAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9QbGF0Zm9ybUhhdmUu
aApAQCAtMTExOSw2ICsxMTE5LDE2IEBACiAjZGVmaW5lIEhBVkVfTlNURVhUTElTVF9NQVJLRVJf
Rk9STUFUUyAxCiAjZW5kaWYKIAorI2lmIChQTEFURk9STShJT1MpICYmIF9fSVBIT05FX09TX1ZF
UlNJT05fTUFYX0FMTE9XRUQgPj0gMTYwMDAwKSBcCisgICAgfHwgKFBMQVRGT1JNKFdBVENIT1Mp
ICYmIF9fV0FUQ0hfT1NfVkVSU0lPTl9NQVhfQUxMT1dFRCA+PSA5MDAwMCkgXAorICAgIHx8IChQ
TEFURk9STShBUFBMRVRWKSAmJiBfX1RWX09TX1ZFUlNJT05fTUFYX0FMTE9XRUQgPj0gMTYwMDAw
KQorI2RlZmluZSBIQVZFX0NPUkVfTE9DQVRJT05fV0VCU0lURV9JREVOVElGSUVSUyAxCisjZW5k
aWYKKworI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpIHx8IChQTEFURk9STShNQUMpICYmIF9fTUFD
X09TX1hfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0gMTAxNDAwICYmIGRlZmluZWQgX19oYXNfaW5j
bHVkZSAmJiBfX2hhc19pbmNsdWRlKDxDb3JlRm91bmRhdGlvbi9DRlByaXYuaD4pKQorI2RlZmlu
ZSBIQVZFX0NPUkVfTE9DQVRJT05fQVVUSE9SSVpFRF9XSEVOX0lOX1VTRSAxCisjZW5kaWYKKwog
I2lmIFBMQVRGT1JNKE1BQykKICNkZWZpbmUgSEFWRV9TQ0VORUtJVCAxCiAjZW5kaWYKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZ2VvbG9jYXRpb24vR2VvbG9jYXRpb25DbGll
bnQuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZ2VvbG9jYXRpb24vR2VvbG9jYXRpb25DbGll
bnQuaAppbmRleCA1YmFmM2FkODJjNTdlNWFjYmE5NmUzZGYwZWQ2MGViYzc1NGJjYjA1Li5hNGU4
NjIzNjI1NTY3ZTlhZGZlYjAwZDgyNDAwMGEyNzdkYmVhZjAwIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2dlb2xvY2F0aW9uL0dlb2xvY2F0aW9uQ2xpZW50LmgKKysrIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9nZW9sb2NhdGlvbi9HZW9sb2NhdGlvbkNsaWVudC5oCkBAIC0z
OCw3ICszOCw3IEBAIGNsYXNzIEdlb2xvY2F0aW9uQ2xpZW50IHsKIHB1YmxpYzoKICAgICB2aXJ0
dWFsIHZvaWQgZ2VvbG9jYXRpb25EZXN0cm95ZWQoKSA9IDA7CiAKLSAgICB2aXJ0dWFsIHZvaWQg
c3RhcnRVcGRhdGluZyhjb25zdCBTdHJpbmcmIGF1dGhvcml6YXRpb25Ub2tlbikgPSAwOworICAg
IHZpcnR1YWwgdm9pZCBzdGFydFVwZGF0aW5nKGNvbnN0IFN0cmluZyYgYXV0aG9yaXphdGlvblRv
a2VuLCBib29sIG5lZWRzSGlnaEFjY3VyYWN5KSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIHN0b3BV
cGRhdGluZygpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgcmV2b2tlQXV0aG9yaXphdGlvblRva2Vu
KGNvbnN0IFN0cmluZyYpIHsgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2dlb2xvY2F0aW9uL0dlb2xvY2F0aW9uQ29udHJvbGxlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2dlb2xvY2F0aW9uL0dlb2xvY2F0aW9uQ29udHJvbGxlci5jcHAKaW5kZXggMDYxNjI5
MTYwZDliY2M3ZDVkYWY3NGNmYzRmODE1NTBiYTQ4ZGU4Yy4uMDdkZDY1ZjNjMWFlZTc5ZWI5Yzcz
MjgzNmEyZDVhYWQwMTczMzNjZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9n
ZW9sb2NhdGlvbi9HZW9sb2NhdGlvbkNvbnRyb2xsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvZ2VvbG9jYXRpb24vR2VvbG9jYXRpb25Db250cm9sbGVyLmNwcApAQCAtNTIsMTkg
KzUyLDI1IEBAIEdlb2xvY2F0aW9uQ29udHJvbGxlcjo6fkdlb2xvY2F0aW9uQ29udHJvbGxlcigp
CiAgICAgbV9jbGllbnQuZ2VvbG9jYXRpb25EZXN0cm95ZWQoKTsKIH0KIAordm9pZCBHZW9sb2Nh
dGlvbkNvbnRyb2xsZXI6OmRpZE5hdmlnYXRlUGFnZSgpCit7CisgICAgd2hpbGUgKCFtX29ic2Vy
dmVycy5pc0VtcHR5KCkpCisgICAgICAgIHJlbW92ZU9ic2VydmVyKG1fb2JzZXJ2ZXJzLmJlZ2lu
KCktPmdldCgpKTsKK30KKwogdm9pZCBHZW9sb2NhdGlvbkNvbnRyb2xsZXI6OmFkZE9ic2VydmVy
KEdlb2xvY2F0aW9uJiBvYnNlcnZlciwgYm9vbCBlbmFibGVIaWdoQWNjdXJhY3kpCiB7Ci0gICAg
Ly8gVGhpcyBtYXkgYmUgY2FsbGVkIG11bHRpcGxlIHRpbWVzIHdpdGggdGhlIHNhbWUgb2JzZXJ2
ZXIsIHRob3VnaCByZW1vdmVPYnNlcnZlcigpCi0gICAgLy8gaXMgY2FsbGVkIG9ubHkgb25jZSB3
aXRoIGVhY2guCi0gICAgYm9vbCB3YXNFbXB0eSA9IG1fb2JzZXJ2ZXJzLmlzRW1wdHkoKTsKKyAg
ICBib29sIGhpZ2hBY2N1cmFjeVdhc1JlcXVpcmVkID0gbmVlZHNIaWdoQWNjdXJhY3koKTsKKwog
ICAgIG1fb2JzZXJ2ZXJzLmFkZChvYnNlcnZlcik7CiAgICAgaWYgKGVuYWJsZUhpZ2hBY2N1cmFj
eSkKICAgICAgICAgbV9oaWdoQWNjdXJhY3lPYnNlcnZlcnMuYWRkKG9ic2VydmVyKTsKIAotICAg
IGlmIChlbmFibGVIaWdoQWNjdXJhY3kpCi0gICAgICAgIG1fY2xpZW50LnNldEVuYWJsZUhpZ2hB
Y2N1cmFjeSh0cnVlKTsKLSAgICBpZiAod2FzRW1wdHkgJiYgbV9wYWdlLmlzVmlzaWJsZSgpKQot
ICAgICAgICBtX2NsaWVudC5zdGFydFVwZGF0aW5nKG9ic2VydmVyLmF1dGhvcml6YXRpb25Ub2tl
bigpKTsKKyAgICBpZiAobV9pc1VwZGF0aW5nKSB7CisgICAgICAgIGlmICghaGlnaEFjY3VyYWN5
V2FzUmVxdWlyZWQgJiYgZW5hYmxlSGlnaEFjY3VyYWN5KQorICAgICAgICAgICAgbV9jbGllbnQu
c2V0RW5hYmxlSGlnaEFjY3VyYWN5KHRydWUpOworICAgIH0gZWxzZQorICAgICAgICBzdGFydFVw
ZGF0aW5nSWZOZWNlc3NhcnkoKTsKIH0KIAogdm9pZCBHZW9sb2NhdGlvbkNvbnRyb2xsZXI6OnJl
bW92ZU9ic2VydmVyKEdlb2xvY2F0aW9uJiBvYnNlcnZlcikKQEAgLTcyLDEyICs3OCwxNyBAQCB2
b2lkIEdlb2xvY2F0aW9uQ29udHJvbGxlcjo6cmVtb3ZlT2JzZXJ2ZXIoR2VvbG9jYXRpb24mIG9i
c2VydmVyKQogICAgIGlmICghbV9vYnNlcnZlcnMuY29udGFpbnMob2JzZXJ2ZXIpKQogICAgICAg
ICByZXR1cm47CiAKKyAgICBib29sIGhpZ2hBY2N1cmFjeVdhc1JlcXVpcmVkID0gbmVlZHNIaWdo
QWNjdXJhY3koKTsKKwogICAgIG1fb2JzZXJ2ZXJzLnJlbW92ZShvYnNlcnZlcik7CiAgICAgbV9o
aWdoQWNjdXJhY3lPYnNlcnZlcnMucmVtb3ZlKG9ic2VydmVyKTsKIAorICAgIGlmICghbV9pc1Vw
ZGF0aW5nKQorICAgICAgICByZXR1cm47CisKICAgICBpZiAobV9vYnNlcnZlcnMuaXNFbXB0eSgp
KQotICAgICAgICBtX2NsaWVudC5zdG9wVXBkYXRpbmcoKTsKLSAgICBlbHNlIGlmIChtX2hpZ2hB
Y2N1cmFjeU9ic2VydmVycy5pc0VtcHR5KCkpCisgICAgICAgIHN0b3BVcGRhdGluZ0lmTmVjZXNz
YXJ5KCk7CisgICAgZWxzZSBpZiAoaGlnaEFjY3VyYWN5V2FzUmVxdWlyZWQgJiYgIW5lZWRzSGln
aEFjY3VyYWN5KCkpCiAgICAgICAgIG1fY2xpZW50LnNldEVuYWJsZUhpZ2hBY2N1cmFjeShmYWxz
ZSk7CiB9CiAKQEAgLTEzOSw5ICsxNTAsOSBAQCB2b2lkIEdlb2xvY2F0aW9uQ29udHJvbGxlcjo6
YWN0aXZpdHlTdGF0ZURpZENoYW5nZShPcHRpb25TZXQ8QWN0aXZpdHlTdGF0ZTo6RmxhZwogICAg
IGF1dG8gY2hhbmdlZCA9IG9sZEFjdGl2aXR5U3RhdGUgXiBuZXdBY3Rpdml0eVN0YXRlOwogICAg
IGlmIChjaGFuZ2VkICYgQWN0aXZpdHlTdGF0ZTo6SXNWaXNpYmxlICYmICFtX29ic2VydmVycy5p
c0VtcHR5KCkpIHsKICAgICAgICAgaWYgKG5ld0FjdGl2aXR5U3RhdGUgJiBBY3Rpdml0eVN0YXRl
OjpJc1Zpc2libGUpCi0gICAgICAgICAgICBtX2NsaWVudC5zdGFydFVwZGF0aW5nKCgqbV9vYnNl
cnZlcnMucmFuZG9tKCkpLT5hdXRob3JpemF0aW9uVG9rZW4oKSk7CisgICAgICAgICAgICBzdGFy
dFVwZGF0aW5nSWZOZWNlc3NhcnkoKTsKICAgICAgICAgZWxzZQotICAgICAgICAgICAgbV9jbGll
bnQuc3RvcFVwZGF0aW5nKCk7CisgICAgICAgICAgICBzdG9wVXBkYXRpbmdJZk5lY2Vzc2FyeSgp
OwogICAgIH0KIAogICAgIGlmICghbV9wYWdlLmlzVmlzaWJsZSgpKQpAQCAtMTUyLDYgKzE2Mywy
NCBAQCB2b2lkIEdlb2xvY2F0aW9uQ29udHJvbGxlcjo6YWN0aXZpdHlTdGF0ZURpZENoYW5nZShP
cHRpb25TZXQ8QWN0aXZpdHlTdGF0ZTo6RmxhZwogICAgICAgICBtX2NsaWVudC5yZXF1ZXN0UGVy
bWlzc2lvbihwZXJtaXNzaW9uUmVxdWVzdC5nZXQoKSk7CiB9CiAKK3ZvaWQgR2VvbG9jYXRpb25D
b250cm9sbGVyOjpzdGFydFVwZGF0aW5nSWZOZWNlc3NhcnkoKQoreworICAgIGlmIChtX2lzVXBk
YXRpbmcgfHwgIW1fcGFnZS5pc1Zpc2libGUoKSB8fCBtX29ic2VydmVycy5pc0VtcHR5KCkpCisg
ICAgICAgIHJldHVybjsKKworICAgIG1fY2xpZW50LnN0YXJ0VXBkYXRpbmcoKCptX29ic2VydmVy
cy5yYW5kb20oKSktPmF1dGhvcml6YXRpb25Ub2tlbigpLCBuZWVkc0hpZ2hBY2N1cmFjeSgpKTsK
KyAgICBtX2lzVXBkYXRpbmcgPSB0cnVlOworfQorCit2b2lkIEdlb2xvY2F0aW9uQ29udHJvbGxl
cjo6c3RvcFVwZGF0aW5nSWZOZWNlc3NhcnkoKQoreworICAgIGlmICghbV9pc1VwZGF0aW5nKQor
ICAgICAgICByZXR1cm47CisKKyAgICBtX2NsaWVudC5zdG9wVXBkYXRpbmcoKTsKKyAgICBtX2lz
VXBkYXRpbmcgPSBmYWxzZTsKK30KKwogY29uc3QgY2hhciogR2VvbG9jYXRpb25Db250cm9sbGVy
OjpzdXBwbGVtZW50TmFtZSgpCiB7CiAgICAgcmV0dXJuICJHZW9sb2NhdGlvbkNvbnRyb2xsZXIi
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9nZW9sb2NhdGlvbi9HZW9sb2Nh
dGlvbkNvbnRyb2xsZXIuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZ2VvbG9jYXRpb24vR2Vv
bG9jYXRpb25Db250cm9sbGVyLmgKaW5kZXggNDJmNWQwNjJkYjZmMDljNjYwMTExZDY2ZDlmMGZj
ZmZmM2IyMDc0MC4uYmJmZjU3NWViMDU4MzI0MDc4MGQzYjQxYTk2NzQyYzZiMWQ3MjQ4ZSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9nZW9sb2NhdGlvbi9HZW9sb2NhdGlvbkNv
bnRyb2xsZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2dlb2xvY2F0aW9uL0dlb2xv
Y2F0aW9uQ29udHJvbGxlci5oCkBAIC0zMCw2ICszMCw3IEBACiAjaW5jbHVkZSAiQWN0aXZpdHlT
dGF0ZUNoYW5nZU9ic2VydmVyLmgiCiAjaW5jbHVkZSAiR2VvbG9jYXRpb24uaCIKICNpbmNsdWRl
ICJQYWdlLmgiCisjaW5jbHVkZSAiUmVnaXN0cmFibGVEb21haW4uaCIKICNpbmNsdWRlIDx3dGYv
SGFzaFNldC5oPgogI2luY2x1ZGUgPHd0Zi9Ob25jb3B5YWJsZS5oPgogI2luY2x1ZGUgPHd0Zi9S
ZWZQdHIuaD4KQEAgLTY1LDYgKzY2LDggQEAgcHVibGljOgogCiAgICAgdm9pZCByZXZva2VBdXRo
b3JpemF0aW9uVG9rZW4oY29uc3QgU3RyaW5nJik7CiAKKyAgICB2b2lkIGRpZE5hdmlnYXRlUGFn
ZSgpOworCiBwcml2YXRlOgogICAgIFBhZ2UmIG1fcGFnZTsKICAgICBHZW9sb2NhdGlvbkNsaWVu
dCYgbV9jbGllbnQ7CkBAIC03Myw2ICs3NiwxMSBAQCBwcml2YXRlOgogCiAgICAgc3RkOjpvcHRp
b25hbDxHZW9sb2NhdGlvblBvc2l0aW9uRGF0YT4gbV9sYXN0UG9zaXRpb247CiAKKyAgICBib29s
IG5lZWRzSGlnaEFjY3VyYWN5KCkgY29uc3QgeyByZXR1cm4gIW1faGlnaEFjY3VyYWN5T2JzZXJ2
ZXJzLmlzRW1wdHkoKTsgfQorCisgICAgdm9pZCBzdGFydFVwZGF0aW5nSWZOZWNlc3NhcnkoKTsK
KyAgICB2b2lkIHN0b3BVcGRhdGluZ0lmTmVjZXNzYXJ5KCk7CisKICAgICB0eXBlZGVmIEhhc2hT
ZXQ8UmVmPEdlb2xvY2F0aW9uPj4gT2JzZXJ2ZXJzU2V0OwogICAgIC8vIEFsbCBvYnNlcnZlcnM7
IGJvdGggdGhvc2UgcmVxdWVzdGluZyBoaWdoIGFjY3VyYWN5IGFuZCB0aG9zZSBub3QuCiAgICAg
T2JzZXJ2ZXJzU2V0IG1fb2JzZXJ2ZXJzOwpAQCAtODAsNiArODgsOSBAQCBwcml2YXRlOgogCiAg
ICAgLy8gV2hpbGUgdGhlIHBhZ2UgaXMgbm90IHZpc2libGUsIHdlIHBlbmQgcGVybWlzc2lvbiBy
ZXF1ZXN0cy4KICAgICBIYXNoU2V0PFJlZjxHZW9sb2NhdGlvbj4+IG1fcGVuZGluZ1Blcm1pc3Np
b25SZXF1ZXN0OworCisgICAgUmVnaXN0cmFibGVEb21haW4gbV9yZWdpc3RyYWJsZURvbWFpbjsK
KyAgICBib29sIG1faXNVcGRhdGluZyB7IGZhbHNlIH07CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBX
ZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2dlb2xvY2F0aW9uL0dl
b2xvY2F0aW9uUG9zaXRpb25EYXRhLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2dlb2xvY2F0
aW9uL0dlb2xvY2F0aW9uUG9zaXRpb25EYXRhLmgKaW5kZXggOTI2MjIxNzBjOGFhZDY5ODliOGEx
MmNlNDgzNTZkYzY4N2JmNmUzNS4uY2MyMTgwYTgzN2QyNzQzYzFmYmY3NjFjNDEwZTFjN2ViZmVh
ZWU3ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9nZW9sb2NhdGlvbi9HZW9s
b2NhdGlvblBvc2l0aW9uRGF0YS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZ2VvbG9j
YXRpb24vR2VvbG9jYXRpb25Qb3NpdGlvbkRhdGEuaApAQCAtMjksNyArMjksNyBAQAogI2luY2x1
ZGUgPHd0Zi9SZWYuaD4KICNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgogCi0jaWYgUExBVEZP
Uk0oSU9TX0ZBTUlMWSkKKyNpZiBQTEFURk9STShDT0NPQSkKIE9CSkNfQ0xBU1MgQ0xMb2NhdGlv
bjsKICNlbmRpZgogCkBAIC00Nyw3ICs0Nyw3IEBAIHB1YmxpYzoKICAgICB7CiAgICAgfQogCi0j
aWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKKyNpZiBQTEFURk9STShDT0NPQSkKICAgICBXRUJDT1JF
X0VYUE9SVCBleHBsaWNpdCBHZW9sb2NhdGlvblBvc2l0aW9uRGF0YShDTExvY2F0aW9uKik7CiAj
ZW5kaWYKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9nZW9sb2NhdGlvbi9j
b2NvYS9HZW9sb2NhdGlvblBvc2l0aW9uRGF0YUNvY29hLm1tIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9nZW9sb2NhdGlvbi9jb2NvYS9HZW9sb2NhdGlvblBvc2l0aW9uRGF0YUNvY29hLm1tCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjgxZTQwZjE2NDJiMjY4OTUyYjdiMDM5OGU0ZThmZTJiOGNkNTgwZDEKLS0tIC9k
ZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2dlb2xvY2F0aW9uL2NvY29hL0dl
b2xvY2F0aW9uUG9zaXRpb25EYXRhQ29jb2EubW0KQEAgLTAsMCArMSw1MyBAQAorLyoKKyAqIENv
cHlyaWdodCAoQykgMjAxNyBBcHBsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisgKgorICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24u
CisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMn
JyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JT
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
CisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICog
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbXBvcnQgImNvbmZpZy5oIgor
I2ltcG9ydCAiR2VvbG9jYXRpb25Qb3NpdGlvbi5oIgorCisjaW1wb3J0IDxDb3JlTG9jYXRpb24v
Q0xMb2NhdGlvbi5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK0dlb2xvY2F0aW9uUG9zaXRp
b25EYXRhOjpHZW9sb2NhdGlvblBvc2l0aW9uRGF0YShDTExvY2F0aW9uICpsb2NhdGlvbikKKyAg
ICA6IHRpbWVzdGFtcChsb2NhdGlvbi50aW1lc3RhbXAudGltZUludGVydmFsU2luY2UxOTcwKQor
ICAgICwgbGF0aXR1ZGUobG9jYXRpb24uY29vcmRpbmF0ZS5sYXRpdHVkZSkKKyAgICAsIGxvbmdp
dHVkZShsb2NhdGlvbi5jb29yZGluYXRlLmxvbmdpdHVkZSkKKyAgICAsIGFjY3VyYWN5KGxvY2F0
aW9uLmhvcml6b250YWxBY2N1cmFjeSkKK3sKKyAgICBpZiAobG9jYXRpb24udmVydGljYWxBY2N1
cmFjeSA+PSAwLjApIHsKKyAgICAgICAgYWx0aXR1ZGUgPSBsb2NhdGlvbi5hbHRpdHVkZTsKKyAg
ICAgICAgYWx0aXR1ZGVBY2N1cmFjeSA9IGxvY2F0aW9uLnZlcnRpY2FsQWNjdXJhY3k7CisgICAg
fQorICAgIGlmIChsb2NhdGlvbi5zcGVlZCA+PSAwLjApCisgICAgICAgIHNwZWVkID0gbG9jYXRp
b24uc3BlZWQ7CisgICAgaWYgKGxvY2F0aW9uLmNvdXJzZSA+PSAwLjApCisgICAgICAgIGhlYWRp
bmcgPSBsb2NhdGlvbi5jb3Vyc2U7CisjaWYgIVBMQVRGT1JNKE1BQ0NBVEFMWVNUKQorICAgIGlm
IChsb2NhdGlvbi5mbG9vcikKKyAgICAgICAgZmxvb3JMZXZlbCA9IGxvY2F0aW9uLmZsb29yLmxl
dmVsOworI2VuZGlmCit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvZ2VvbG9jYXRpb24vaW9zL0dlb2xvY2F0aW9uUG9zaXRpb25E
YXRhSU9TLm1tIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9nZW9sb2NhdGlvbi9pb3MvR2VvbG9j
YXRpb25Qb3NpdGlvbkRhdGFJT1MubW0KZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDk4
ZDlhMjQyMWU3ZjIzMDliNGY2MjNiMTRkN2NiZTJiNmM3ZTA0NWMuLjAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9nZW9s
b2NhdGlvbi9pb3MvR2VvbG9jYXRpb25Qb3NpdGlvbkRhdGFJT1MubW0KKysrIC9kZXYvbnVsbApA
QCAtMSw1NyArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE3IEFwcGxlIEluYy4gQWxs
IFJpZ2h0cyBSZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJl
IG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
IGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCi0gKiBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBM
RSBJTkMuIE9SCi0gKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKLSAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElB
TCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFBST0NVUkVNRU5U
IE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgot
ICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04gQU5ZIFRIRU9SWQotICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0g
Ki8KLQotI2ltcG9ydCAiY29uZmlnLmgiCi0jaW1wb3J0ICJHZW9sb2NhdGlvblBvc2l0aW9uLmgi
Ci0KLSNpZiBQTEFURk9STShJT1NfRkFNSUxZKQotCi0jaW1wb3J0IDxDb3JlTG9jYXRpb24vQ0xM
b2NhdGlvbi5oPgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLUdlb2xvY2F0aW9uUG9zaXRpb25E
YXRhOjpHZW9sb2NhdGlvblBvc2l0aW9uRGF0YShDTExvY2F0aW9uKiBsb2NhdGlvbikKLSAgICA6
IHRpbWVzdGFtcChsb2NhdGlvbi50aW1lc3RhbXAudGltZUludGVydmFsU2luY2UxOTcwKQotICAg
ICwgbGF0aXR1ZGUobG9jYXRpb24uY29vcmRpbmF0ZS5sYXRpdHVkZSkKLSAgICAsIGxvbmdpdHVk
ZShsb2NhdGlvbi5jb29yZGluYXRlLmxvbmdpdHVkZSkKLSAgICAsIGFjY3VyYWN5KGxvY2F0aW9u
Lmhvcml6b250YWxBY2N1cmFjeSkKLXsKLSAgICBpZiAobG9jYXRpb24udmVydGljYWxBY2N1cmFj
eSA+PSAwLjApIHsKLSAgICAgICAgYWx0aXR1ZGUgPSBsb2NhdGlvbi5hbHRpdHVkZTsKLSAgICAg
ICAgYWx0aXR1ZGVBY2N1cmFjeSA9IGxvY2F0aW9uLnZlcnRpY2FsQWNjdXJhY3k7Ci0gICAgfQot
ICAgIGlmIChsb2NhdGlvbi5zcGVlZCA+PSAwLjApCi0gICAgICAgIHNwZWVkID0gbG9jYXRpb24u
c3BlZWQ7Ci0gICAgaWYgKGxvY2F0aW9uLmNvdXJzZSA+PSAwLjApCi0gICAgICAgIGhlYWRpbmcg
PSBsb2NhdGlvbi5jb3Vyc2U7Ci0jaWYgIVBMQVRGT1JNKE1BQ0NBVEFMWVNUKQotICAgIGlmIChs
b2NhdGlvbi5mbG9vcikKLSAgICAgICAgZmxvb3JMZXZlbCA9IGxvY2F0aW9uLmZsb29yLmxldmVs
OwotI2VuZGlmCi19Ci0KLX0KLQotI2VuZGlmIC8vIFBMQVRGT1JNKElPU19GQU1JTFkpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzQ29jb2EudHh0IGIvU291cmNlL1dlYkNvcmUv
U291cmNlc0NvY29hLnR4dAppbmRleCBjN2EyZGJkYWEwZTQwZGVjZWMwMjg0NzY5NDE0OTYyYTBm
ZmNlNWE1Li40M2RmMWNjZjFmNDliNDAwMDViMmFjMjViMjQ1NWZlNWJmZjhhN2RjIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzQ29jb2EudHh0CisrKyBiL1NvdXJjZS9XZWJDb3Jl
L1NvdXJjZXNDb2NvYS50eHQKQEAgLTI1MSw2ICsyNTEsNyBAQCBwbGF0Zm9ybS9jZi9NZWRpYUFj
Y2Vzc2liaWxpdHlTb2Z0TGluay5jcHAKIHBsYXRmb3JtL2NmL1J1bkxvb3BPYnNlcnZlci5jcHAK
IHBsYXRmb3JtL2NmL1NoYXJlZEJ1ZmZlckNGLmNwcAogcGxhdGZvcm0vY29jb2EvQ29udGVudEZp
bHRlclVuYmxvY2tIYW5kbGVyQ29jb2EubW0gQG5vLXVuaWZ5CitwbGF0Zm9ybS9jb2NvYS9Db3Jl
TG9jYXRpb25HZW9sb2NhdGlvblByb3ZpZGVyLm1tCiBwbGF0Zm9ybS9jb2NvYS9Db3JlVmlkZW9T
b2Z0TGluay5jcHAKIHBsYXRmb3JtL2NvY29hL0RyYWdEYXRhQ29jb2EubW0KIHBsYXRmb3JtL2Nv
Y29hL0RyYWdJbWFnZUNvY29hLm1tCkBAIC0zMDcsNyArMzA4LDcgQEAgcGxhdGZvcm0vZ3JhcGhp
Y3MvYXZmb3VuZGF0aW9uL01lZGlhU2VsZWN0aW9uR3JvdXBBVkZPYmpDLm1tCiBwbGF0Zm9ybS9n
cmFwaGljcy9hdmZvdW5kYXRpb24vU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyLmNwcAogcGxhdGZv
cm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL1dlYk1lZGlhU2Vzc2lvbk1hbmFnZXJNYWMuY3BwCiBw
bGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9BVkFzc2V0TUlNRVR5cGVDYWNoZS5t
bQotcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvQVZBc3NldFRyYWNrVXRpbGl0
aWVzLm1tCitwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9BVkFzc2V0VHJhY2tV
dGlsaXRpZXMubW0gQG5vLXVuaWZ5CiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2Jq
Yy9BVk91dHB1dERldmljZU1lbnVDb250cm9sbGVyVGFyZ2V0UGlja2VyLm1tIEBuby11bmlmeQog
cGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvQVZSb3V0ZVBpY2tlclZpZXdUYXJn
ZXRQaWNrZXIubW0KIHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0FWU3RyZWFt
RGF0YVBhcnNlck1JTUVUeXBlQ2FjaGUubW0KQEAgLTMxOCw3ICszMTksNyBAQCBwbGF0Zm9ybS9n
cmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9DRE1TZXNzaW9uQVZGb3VuZGF0aW9uT2JqQy5tbQog
cGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvQ0RNU2Vzc2lvbkFWU3RyZWFtU2Vz
c2lvbi5tbQogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvQ0RNU2Vzc2lvbk1l
ZGlhU291cmNlQVZGT2JqQy5tbQogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMv
SW1hZ2VEZWNvZGVyQVZGT2JqQy5tbQotcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29i
amMvSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUFWRk9iakMubW0KK3BsYXRmb3JtL2dyYXBoaWNzL2F2
Zm91bmRhdGlvbi9vYmpjL0luYmFuZFRleHRUcmFja1ByaXZhdGVBVkZPYmpDLm1tIEBuby11bmlm
eQogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvSW5iYW5kQ2hhcHRlclRyYWNr
UHJpdmF0ZUFWRk9iakMubW0gQG5vLXVuaWZ5CiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRp
b24vb2JqYy9Mb2NhbFNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllci5tbQogcGxhdGZvcm0vZ3JhcGhp
Y3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5YmFja1RhcmdldFBpY2tlck1hYy5tbQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9q
IGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4
IDcyOGMxM2QyNmIyNWNiN2I1ZThmNGNhMDc4NTRhOGFlZjgxNzM0ZjcuLjZmOWVmOGZkNjQ5MWU4
YzI2OWVkNjc4NzVkYjQwMDQxOTY1ZGJlNTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dl
YkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJD
b3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTEzNTMsNiArMTM1Myw3IEBACiAJCTQ2
ODM0NEUwMUVEREZBQUEwMEI3Nzk1QiAvKiBET01SZWN0TGlzdC5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDY4MzQ0REUxRURERkE1RjAwQjc3OTVCIC8q
IERPTVJlY3RMaXN0LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsg
fTsgfTsKIAkJNDY4M0RGNDAyNzY3REY5ODAwN0QwMEM4IC8qIEpTU2hhZG93UmVhbG1HbG9iYWxT
Y29wZUJhc2UuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDQ2ODNERjNFMjc2N0RGOTgwMDdEMDBDOCAvKiBKU1NoYWRvd1JlYWxtR2xvYmFsU2NvcGVCYXNl
LmggKi87IH07CiAJCTQ2ODNERjQxMjc2N0U5MUEwMDdEMDBDOCAvKiBTaGFkb3dSZWFsbUdsb2Jh
bFNjb3BlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0
NjgzREYzQjI3NjdERjI2MDA3RDAwQzggLyogU2hhZG93UmVhbG1HbG9iYWxTY29wZS5oICovOyBz
ZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCTQ2ODhFOTgwMjdC
NkI0NTAwMDU2N0NEMiAvKiBDb3JlTG9jYXRpb25HZW9sb2NhdGlvblByb3ZpZGVyLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0Njg4RTk3RjI3QjZCNDQ0
MDA1NjdDRDIgLyogQ29yZUxvY2F0aW9uR2VvbG9jYXRpb25Qcm92aWRlci5oICovOyBzZXR0aW5n
cyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTQ2ODhFRTNDMjZERDI2MTAw
MDJBRjVDNCAvKiBDcm9zc09yaWdpbk1vZGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDQ2ODhFRTNBMjZERDI2MEMwMDJBRjVDNCAvKiBDcm9zc09yaWdp
bk1vZGUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9Owog
CQk0Njk0M0RDOTI3NjNGODE3MDA0QjYxMEUgLyogU2hhcmVkV29ya2VyT2JqZWN0SWRlbnRpZmll
ci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDY5NDNE
QzcyNzYzRjgwRTAwNEI2MTBFIC8qIFNoYXJlZFdvcmtlck9iamVjdElkZW50aWZpZXIuaCAqLzsg
c2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk0Njk4NUYyMzI3
QTRBNkFEMDA5N0EzMkIgLyogU2hhcmVkV29ya2VyS2V5LmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0Njk4NUYyMjI3QTRBNjg2MDA5N0EzMkIgLyogU2hh
cmVkV29ya2VyS2V5LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsg
fTsgfTsKQEAgLTEzNzAsNiArMTM3MSw3IEBACiAJCTQ2Qjk1MTk5MjA3RDYzNEQwMEE3RDJERCAv
KiBSZW1vdGVET01XaW5kb3cuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDQ2Qjk1MThFMjA3RDYzMkEwMEE3RDJERCAvKiBSZW1vdGVET01XaW5kb3cuaCAq
Lzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk0NkI5NTE5
QTIwN0Q2MzU0MDBBN0QyREQgLyogUmVtb3RlRnJhbWUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ2Qjk1MTkyMjA3RDYzMkUwMEE3RDJERCAvKiBSZW1v
dGVGcmFtZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07
CiAJCTQ2Qjk1QkY1MjIzMUNGRDYwMDUzQTUwNCAvKiBEZXZpY2VPcmllbnRhdGlvbkFuZE1vdGlv
bkFjY2Vzc0NvbnRyb2xsZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDQ2Qjk1QkY0MjIzMUNGQjgwMDUzQTUwNCAvKiBEZXZpY2VPcmllbnRhdGlvbkFu
ZE1vdGlvbkFjY2Vzc0NvbnRyb2xsZXIuaCAqLzsgfTsKKwkJNDZCQTQ5QjgyN0JCNDQzMzAwNzdG
NjNGIC8qIEFWQXNzZXRUcmFja1V0aWxpdGllcy5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENERUNBODk4MUVERjQ0N0QwMERDQjA4QiAvKiBBVkFzc2V0
VHJhY2tVdGlsaXRpZXMubW0gKi87IH07CiAJCTQ2QkNCQkMyMjA4NTAwOEYwMDcxMDYzOCAvKiBK
U1JlbW90ZURPTVdpbmRvd0Jhc2UuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDQ2QkNCQkMwMjA4NTAwN0YwMDcxMDYzOCAvKiBKU1JlbW90ZURPTVdpbmRv
d0Jhc2UuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9Owog
CQk0NkJEMDVDNTI1QkI2RTU5MDAyMjVGMzAgLyogQWRkRXZlbnRMaXN0ZW5lck9wdGlvbnMuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ2QkQwNUMyMjVC
QjZFNEUwMDIyNUYzMCAvKiBBZGRFdmVudExpc3RlbmVyT3B0aW9ucy5oICovOyBzZXR0aW5ncyA9
IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTQ2QkQwNUM2MjVCQjZFNkMwMDIy
NUYzMCAvKiBFdmVudExpc3RlbmVyT3B0aW9ucy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gNDZCRDA1QzMyNUJCNkU0RTAwMjI1RjMwIC8qIEV2ZW50TGlz
dGVuZXJPcHRpb25zLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsg
fTsgfTsKQEAgLTEzNzgsNiArMTM4MCw3IEBACiAJCTQ2QzY5NkNCMUU3MjA1RjcwMDU5NzkzNyAv
KiBDUFVNb25pdG9yLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA0NkM2OTZDOTFFNzIwNUU0MDA1OTc5MzcgLyogQ1BVTW9uaXRvci5oICovOyBzZXR0aW5n
cyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTQ2QzY5NkNDMUU3MjA1RkMw
MDU5NzkzNyAvKiBDUFVNb25pdG9yLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDQ2QzY5NkNBMUU3MjA1RTQwMDU5NzkzNyAvKiBDUFVNb25pdG9yLmNw
cCAqLzsgfTsKIAkJNDZDODNFRkUxQTlCQkUyOTAwQTc5QTQxIC8qIEdlb05vdGlmaWVyLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0NkM4M0VGQzFBOUJC
RTI5MDBBNzlBNDEgLyogR2VvTm90aWZpZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9
IChQcml2YXRlLCApOyB9OyB9OworCQk0NkNBOTQzMTI3Qjg2OTU4MDBGNEY1RkYgLyogSW5iYW5k
VGV4dFRyYWNrUHJpdmF0ZUFWRk9iakMubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSAwN0FBNkI2QTE2NkQwMTk1MDBENDU2NzEgLyogSW5iYW5kVGV4dFRy
YWNrUHJpdmF0ZUFWRk9iakMubW0gKi87IH07CiAJCTQ2Q0E5QzQ0MUY5N0JCRTkwMDRDRkMzQSAv
KiBWaXNpYmlsaXR5U3RhdGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDQ2Q0E5QzQxMUY5N0JCRTcwMDRDRkMzQSAvKiBWaXNpYmlsaXR5U3RhdGUuaCAq
Lzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk0NkNGNTA0
QTI3QUIxRUE0MDA3MERCQzggLyogU2hhcmVkV29ya2VyQ29udGV4dE1hbmFnZXIuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ2Q0Y1MDQ4MjdBQjFFQTEw
MDcwREJDOCAvKiBTaGFyZWRXb3JrZXJDb250ZXh0TWFuYWdlci5oICovOyBzZXR0aW5ncyA9IHtB
VFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTQ2RDAwMDQwMjZBMEZFQjMwMEQxQkYx
RSAvKiBTdWJtaXRFdmVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gNDZEMDAwM0UyNkEwRkU2RjAwRDFCRjFFIC8qIFN1Ym1pdEV2ZW50LmggKi87IH07
CkBAIC0yNjkyLDcgKzI2OTUsNyBAQAogCQk4Mzc2NUY5NTFEQUM1MjJGMDBDMDY1MzcgLyogTW91
c2VFdmVudEluaXQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDgzNzY1Rjk0MURBQzUyMTgwMEMwNjUzNyAvKiBNb3VzZUV2ZW50SW5pdC5oICovOyBzZXR0
aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTgzNzg4NzgyMjREOEE2
MDkwMDBENEE1QiAvKiBBdWRpb0J1ZmZlclNvdXJjZU9wdGlvbnMuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDgzNzg4NzdGMjREOEE1RkMwMDBENEE1QiAv
KiBBdWRpb0J1ZmZlclNvdXJjZU9wdGlvbnMuaCAqLzsgfTsKIAkJODM3OTM2M0YxRkJCQjBCNDAw
QzgwMjNDIC8qIFNlcnZpY2VXb3JrZXJDbGllbnREYXRhLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4Mzc5MzYzRTFGQkJCMEE1MDBDODAyM0MgLyogU2Vy
dmljZVdvcmtlckNsaWVudERhdGEuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2
YXRlLCApOyB9OyB9OwotCQk4Mzc5NjRDRjFGOERCNjlEMDAyMThFQTAgLyogR2VvbG9jYXRpb25Q
b3NpdGlvbkRhdGFJT1MubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA4Mzc5NjRDRTFGOERCNjlBMDAyMThFQTAgLyogR2VvbG9jYXRpb25Qb3NpdGlvbkRh
dGFJT1MubW0gKi87IH07CisJCTgzNzk2NENGMUY4REI2OUQwMDIxOEVBMCAvKiBHZW9sb2NhdGlv
blBvc2l0aW9uRGF0YUNvY29hLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gODM3OTY0Q0UxRjhEQjY5QTAwMjE4RUEwIC8qIEdlb2xvY2F0aW9uUG9zaXRp
b25EYXRhQ29jb2EubW0gKi87IH07CiAJCTgzN0E4MDEzMUUxRTEyNzMwMDAyNkI5RiAvKiBMb2Nh
bGl6YWJsZS5zdHJpbmdzZGljdCBpbiBSZXNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gODM3QTgwMTExRTFFMTI3MzAwMDI2QjlGIC8qIExvY2FsaXphYmxlLnN0cmlu
Z3NkaWN0ICovOyB9OwogCQk4MzdDMEI3NjI0REIzODUwMDA1RDU5NTkgLyogRHluYW1pY3NDb21w
cmVzc29yT3B0aW9ucy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gODM3QzBCNzMyNERCMzg0MjAwNUQ1OTU5IC8qIER5bmFtaWNzQ29tcHJlc3Nvck9wdGlv
bnMuaCAqLzsgfTsKIAkJODM3RkIzNDUxRjlFQTA2RDAwRDBGQzMxIC8qIEV4dGVuZGFibGVNZXNz
YWdlRXZlbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDgzN0ZCMzQwMUY5RUEwNjYwMEQwRkMzMSAvKiBFeHRlbmRhYmxlTWVzc2FnZUV2ZW50LmggKi87
IH07CkBAIC05MjcxLDYgKzkyNzQsOCBAQAogCQk0NjgzREYzQzI3NjdERjI2MDA3RDAwQzggLyog
U2hhZG93UmVhbG1HbG9iYWxTY29wZS5pZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
bGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gU2hhZG93UmVhbG1HbG9iYWxTY29wZS5p
ZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQ2ODNERjNEMjc2N0RGOTgwMDdEMDBD
OCAvKiBKU1NoYWRvd1JlYWxtR2xvYmFsU2NvcGVCYXNlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLmNwcDsgcGF0aCA9IEpTU2hhZG93UmVhbG1HbG9iYWxTY29wZUJhc2UuY3BwOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0NjgzREYzRTI3NjdERjk4MDA3RDAwQzggLyogSlNT
aGFkb3dSZWFsbUdsb2JhbFNjb3BlQmFzZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBKU1NoYWRvd1JlYWxtR2xvYmFsU2NvcGVCYXNlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CisJCTQ2ODhFOTdEMjdCNkI0NDMwMDU2N0NEMiAvKiBDb3JlTG9jYXRpb25HZW9sb2Nh
dGlvblByb3ZpZGVyLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gQ29yZUxvY2F0aW9uR2VvbG9j
YXRpb25Qcm92aWRlci5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNDY4OEU5N0Yy
N0I2QjQ0NDAwNTY3Q0QyIC8qIENvcmVMb2NhdGlvbkdlb2xvY2F0aW9uUHJvdmlkZXIuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gQ29yZUxvY2F0aW9uR2VvbG9jYXRpb25Qcm92aWRlci5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQk0Njg4RUUzQTI2REQyNjBDMDAyQUY1QzQgLyogQ3Jvc3NPcmln
aW5Nb2RlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IENyb3NzT3JpZ2luTW9kZS5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQk0NjhCOEJERTI1Q0M4NDkzMDBGNjc4MjIgLyogSlNCYXNlQXVkaW9D
b250ZXh0Q3VzdG9tLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTQmFzZUF1ZGlvQ29udGV4dEN1
c3RvbS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQ2OTQzREM3Mjc2M0Y4MEUw
MDRCNjEwRSAvKiBTaGFyZWRXb3JrZXJPYmplY3RJZGVudGlmaWVyLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IFNoYXJlZFdvcmtlck9iamVjdElkZW50aWZpZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKQEAgLTkzODUsOCArOTM5MCw4IEBACiAJCTQ5NEJENzk0MEY1NUM4RUUwMDc0NzgyOCAvKiBX
ZWJLaXRQb2ludC5pZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gV2ViS2l0UG9pbnQuaWRsOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0OTRCRDc5QjBGNTVDOTRDMDA3NDc4MjggLyog
SlNXZWJLaXRQb2ludC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBK
U1dlYktpdFBvaW50LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDk0QkQ3OUMw
RjU1Qzk0QzAwNzQ3ODI4IC8qIEpTV2ViS2l0UG9pbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gSlNXZWJLaXRQb2ludC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owot
CQk0OTRFQkQwNjI3QUE5QzUzMDBGNDg0NEYgLyogUERGRG9jdW1lbnQuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1l
ID0gUERGRG9jdW1lbnQuaDsgcGF0aCA9IFBERkRvY3VtZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07Ci0JCTQ5NEVCRDA4MjdBQTlDNTMwMEY0ODQ0RiAvKiBQREZEb2N1bWVudC5jcHAg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5jcHA7IG5hbWUgPSBQREZEb2N1bWVudC5jcHA7IHBhdGggPSBQREZEb2N1bWVudC5j
cHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTQ5NEVCRDA2MjdBQTlDNTMwMEY0ODQ0
RiAvKiBQREZEb2N1bWVudC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBQREZEb2N1bWVudC5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OworCQk0OTRFQkQwODI3QUE5QzUzMDBGNDg0NEYgLyogUERGRG9j
dW1lbnQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUERGRG9jdW1lbnQuY3BwOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQk0OTU4NzgxRjEyQTU3RERGMDA3MjM4QUMgLyogUGxhdGZvcm1D
QUFuaW1hdGlvbkNvY29hLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRo
ID0gUGxhdGZvcm1DQUFuaW1hdGlvbkNvY29hLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQk0OTU4NzgyMDEyQTU3RERGMDA3MjM4QUMgLyogUGxhdGZvcm1DQUxheWVyQ29jb2EubW0g
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBQbGF0Zm9ybUNBTGF5ZXJD
b2NvYS5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDk2OUIwRjAxM0QwQjMzRjAw
REYzNTIxIC8qIEhpdFRlc3RpbmdUcmFuc2Zvcm1TdGF0ZS5jcHAgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5jcHA7IHBhdGggPSBIaXRUZXN0aW5nVHJhbnNmb3JtU3RhdGUuY3BwOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwpAQCAtMTIxODcsNyArMTIxOTIsNyBAQAogCQk4Mzc4ODc4MTI0
RDhBNUZDMDAwRDRBNUIgLyogQXVkaW9CdWZmZXJTb3VyY2VPcHRpb25zLmlkbCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBBdWRp
b0J1ZmZlclNvdXJjZU9wdGlvbnMuaWRsOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk4
Mzc5MzYzQzFGQkJCMEE0MDBDODAyM0MgLyogU2VydmljZVdvcmtlckNsaWVudERhdGEuY3BwICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gU2VydmljZVdvcmtlckNsaWVudERh
dGEuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk4Mzc5MzYzRTFGQkJCMEE1MDBD
ODAyM0MgLyogU2VydmljZVdvcmtlckNsaWVudERhdGEuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gU2VydmljZVdvcmtlckNsaWVudERhdGEuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKLQkJODM3OTY0Q0UxRjhEQjY5QTAwMjE4RUEwIC8qIEdlb2xvY2F0aW9uUG9zaXRp
b25EYXRhSU9TLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBuYW1lID0gR2Vv
bG9jYXRpb25Qb3NpdGlvbkRhdGFJT1MubW07IHBhdGggPSBNb2R1bGVzL2dlb2xvY2F0aW9uL2lv
cy9HZW9sb2NhdGlvblBvc2l0aW9uRGF0YUlPUy5tbTsgc291cmNlVHJlZSA9IFNPVVJDRV9ST09U
OyB9OworCQk4Mzc5NjRDRTFGOERCNjlBMDAyMThFQTAgLyogR2VvbG9jYXRpb25Qb3NpdGlvbkRh
dGFDb2NvYS5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgbmFtZSA9IEdlb2xv
Y2F0aW9uUG9zaXRpb25EYXRhQ29jb2EubW07IHBhdGggPSBNb2R1bGVzL2dlb2xvY2F0aW9uL2Nv
Y29hL0dlb2xvY2F0aW9uUG9zaXRpb25EYXRhQ29jb2EubW07IHNvdXJjZVRyZWUgPSBTT1VSQ0Vf
Uk9PVDsgfTsKIAkJODM3QTgwMTIxRTFFMTI3MzAwMDI2QjlGIC8qIGVuICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dC5wbGlzdC5zdHJpbmdzZGlj
dDsgbmFtZSA9IGVuOyBwYXRoID0gZW4ubHByb2ovTG9jYWxpemFibGUuc3RyaW5nc2RpY3Q7IHNv
dXJjZVRyZWUgPSBTT1VSQ0VfUk9PVDsgfTsKIAkJODM3QjdEMUYxREMzRjU0QzAwRDA1MUZDIC8q
IFZhbGlkYXRpb25CdWJibGVJT1MubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7
IHBhdGggPSBWYWxpZGF0aW9uQnViYmxlSU9TLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQk4MzdDMEI3MzI0REIzODQyMDA1RDU5NTkgLyogRHluYW1pY3NDb21wcmVzc29yT3B0aW9u
cy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBEeW5hbWljc0NvbXByZXNzb3JPcHRpb25zLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0yMTYwOSw2ICsyMTYxNCwxNCBAQAogCQkJcGF0aCA9IGNv
bnRleHQ7CiAJCQlzb3VyY2VUcmVlID0gIjxncm91cD4iOwogCQl9OworCQk0NjVDM0QxOTI3Qjk5
MUM4MDAyMTMwMkYgLyogY29jb2EgKi8gPSB7CisJCQlpc2EgPSBQQlhHcm91cDsKKwkJCWNoaWxk
cmVuID0gKAorCQkJCTgzNzk2NENFMUY4REI2OUEwMDIxOEVBMCAvKiBHZW9sb2NhdGlvblBvc2l0
aW9uRGF0YUNvY29hLm1tICovLAorCQkJKTsKKwkJCXBhdGggPSBjb2NvYTsKKwkJCXNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7CisJCX07CiAJCTQ2Njk0Q0RFMjc1OTQ0NkQwMEUzMTUwRSAvKiBzaGFy
ZWQgKi8gPSB7CiAJCQlpc2EgPSBQQlhHcm91cDsKIAkJCWNoaWxkcmVuID0gKApAQCAtMjUxMDQs
MTQgKzI1MTE3LDYgQEAKIAkJCXBhdGggPSBiZWFjb247CiAJCQlzb3VyY2VUcmVlID0gIjxncm91
cD4iOwogCQl9OwotCQk4Mzc5NjRDQzFGOERCNjdEMDAyMThFQTAgLyogaW9zICovID0gewotCQkJ
aXNhID0gUEJYR3JvdXA7Ci0JCQljaGlsZHJlbiA9ICgKLQkJCQk4Mzc5NjRDRTFGOERCNjlBMDAy
MThFQTAgLyogR2VvbG9jYXRpb25Qb3NpdGlvbkRhdGFJT1MubW0gKi8sCi0JCQkpOwotCQkJbmFt
ZSA9IGlvczsKLQkJCXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7Ci0JCX07CiAJCTgzRkIzMzY1MUY1
MDhBMTcwMDk4NkU1NCAvKiBlbnRyaWVzYXBpICovID0gewogCQkJaXNhID0gUEJYR3JvdXA7CiAJ
CQljaGlsZHJlbiA9ICgKQEAgLTI1OTE0LDEwICsyNTkxOSwxMCBAQAogCQkJCTMxNDg3N0UwMUZB
QThGRTkwMEMwNTc1OSAvKiBPZmZzY3JlZW5DYW52YXMuY3BwICovLAogCQkJCTMxNDg3N0UxMUZB
QThGRTkwMEMwNTc1OSAvKiBPZmZzY3JlZW5DYW52YXMuaCAqLywKIAkJCQkzMTQ4NzdEOTFGQUE4
NzA2MDBDMDU3NTkgLyogT2Zmc2NyZWVuQ2FudmFzLmlkbCAqLywKLQkJCQk0OTRFQkQwODI3QUE5
QzUzMDBGNDg0NEYgLyogUERGRG9jdW1lbnQuY3BwICovLAotCQkJCTQ5NEVCRDA2MjdBQTlDNTMw
MEY0ODQ0RiAvKiBQREZEb2N1bWVudC5oICovLAogCQkJCUY1NUIzRDk1MTI1MUYxMkQwMDNFRjI2
OSAvKiBQYXNzd29yZElucHV0VHlwZS5jcHAgKi8sCiAJCQkJRjU1QjNEOTYxMjUxRjEyRDAwM0VG
MjY5IC8qIFBhc3N3b3JkSW5wdXRUeXBlLmggKi8sCisJCQkJNDk0RUJEMDgyN0FBOUM1MzAwRjQ4
NDRGIC8qIFBERkRvY3VtZW50LmNwcCAqLywKKwkJCQk0OTRFQkQwNjI3QUE5QzUzMDBGNDg0NEYg
LyogUERGRG9jdW1lbnQuaCAqLywKIAkJCQk5NzIwNUFCOTEyMzkyOTI3MDBCMTczODAgLyogUGx1
Z2luRG9jdW1lbnQuY3BwICovLAogCQkJCTk3MjA1QUJBMTIzOTI5MjcwMEIxNzM4MCAvKiBQbHVn
aW5Eb2N1bWVudC5oICovLAogCQkJCUNERUUzOTM2MTc5NzQyNTkwMDFENzU4MCAvKiBQdWJsaWNV
UkxNYW5hZ2VyLmNwcCAqLywKQEAgLTI2MTI0LDcgKzI2MTI5LDcgQEAKIAkJOTcxMTQ1RkYxNEVG
MDA3OTAwNjc0RkQ5IC8qIGdlb2xvY2F0aW9uICovID0gewogCQkJaXNhID0gUEJYR3JvdXA7CiAJ
CQljaGlsZHJlbiA9ICgKLQkJCQk4Mzc5NjRDQzFGOERCNjdEMDAyMThFQTAgLyogaW9zICovLAor
CQkJCTQ2NUMzRDE5MjdCOTkxQzgwMDIxMzAyRiAvKiBjb2NvYSAqLywKIAkJCQk5NzQ2QUYxMzE0
RjREREU2MDAzRTdBNzAgLyogR2VvbG9jYXRpb24uY3BwICovLAogCQkJCTk3NDZBRjE0MTRGNERE
RTYwMDNFN0E3MCAvKiBHZW9sb2NhdGlvbi5oICovLAogCQkJCTk3NDZBRjE1MTRGNERERTYwMDNF
N0E3MCAvKiBHZW9sb2NhdGlvbi5pZGwgKi8sCkBAIC0yNjgzNiw2ICsyNjg0MSw4IEBACiAJCQkJ
QzFGN0I3MkYyNDQ4RjJBQzAwMTI0NTU3IC8qIEFHWENvbXBpbGVyU2VydmljZS5jcHAgKi8sCiAJ
CQkJQzFGN0I3MzAyNDQ4RjJBQzAwMTI0NTU3IC8qIEFHWENvbXBpbGVyU2VydmljZS5oICovLAog
CQkJCUExNDA5MEZBMUFBNTFFMUQwMDkxMTkxQSAvKiBDb250ZW50RmlsdGVyVW5ibG9ja0hhbmRs
ZXJDb2NvYS5tbSAqLywKKwkJCQk0Njg4RTk3RjI3QjZCNDQ0MDA1NjdDRDIgLyogQ29yZUxvY2F0
aW9uR2VvbG9jYXRpb25Qcm92aWRlci5oICovLAorCQkJCTQ2ODhFOTdEMjdCNkI0NDMwMDU2N0NE
MiAvKiBDb3JlTG9jYXRpb25HZW9sb2NhdGlvblByb3ZpZGVyLm1tICovLAogCQkJCUNEN0QzMzQ1
MUM3QTE2QkYwMDA0MTI5MyAvKiBDb3JlVmlkZW9Tb2Z0TGluay5jcHAgKi8sCiAJCQkJQ0Q3RDMz
NDYxQzdBMTZCRjAwMDQxMjkzIC8qIENvcmVWaWRlb1NvZnRMaW5rLmggKi8sCiAJCQkJRjQ2MkU3
OUYyNDJBREEzQzAwMjA0REREIC8qIERyYWdEYXRhQ29jb2EubW0gKi8sCkBAIC0zMzkyNyw2ICsz
MzkzNCw3IEBACiAJCQkJM0Y4MDIwMzcxRTlFNDdDNTAwREVDNjFEIC8qIENvcmVBdWRpb0NhcHR1
cmVEZXZpY2VNYW5hZ2VyLmggaW4gSGVhZGVycyAqLywKIAkJCQk0MUZDQ0MzQjI3NDY2NzU2MDA4
OTJBRDYgLyogQ29yZUF1ZGlvQ2FwdHVyZVNvdXJjZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMDdB
RkY0MjIxRUZCMTQ0OTAwQjU0NUIzIC8qIENvcmVBdWRpb0NhcHR1cmVTb3VyY2VJT1MuaCBpbiBI
ZWFkZXJzICovLAorCQkJCTQ2ODhFOTgwMjdCNkI0NTAwMDU2N0NEMiAvKiBDb3JlTG9jYXRpb25H
ZW9sb2NhdGlvblByb3ZpZGVyLmggaW4gSGVhZGVycyAqLywKIAkJCQlDRDdEMzM0ODFDN0ExNkJG
MDAwNDEyOTMgLyogQ29yZVZpZGVvU29mdExpbmsuaCBpbiBIZWFkZXJzICovLAogCQkJCTg2MkYx
MjlFMThDMTU3NkYwMDVDNTRBRiAvKiBDb3VudGVkVXNlckFjdGl2aXR5LmggaW4gSGVhZGVycyAq
LywKIAkJCQlBODBFNkQwNDBBMTk4OUNBMDA3RkI4QzUgLyogQ291bnRlci5oIGluIEhlYWRlcnMg
Ki8sCkBAIC0zODY4MCw2ICszODY4OCw3IEBACiAJCQkJQ0QwRUVFMEUxNDc0M0YzOTAwM0VBRkEy
IC8qIEF1ZGlvT3V0cHV0VW5pdEFkYXB0b3JJT1MuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQ0RB
Nzk4MjcxNzBBMjc5MTAwRDQ1QzU1IC8qIEF1ZGlvU2Vzc2lvbklPUy5tbSBpbiBTb3VyY2VzICov
LAogCQkJCUNEOEE3QkJCMTk3NzM1RkUwMENCRDY0MyAvKiBBdWRpb1NvdXJjZVByb3ZpZGVyQVZG
T2JqQy5tbSBpbiBTb3VyY2VzICovLAorCQkJCTQ2QkE0OUI4MjdCQjQ0MzMwMDc3RjYzRiAvKiBB
VkFzc2V0VHJhY2tVdGlsaXRpZXMubW0gaW4gU291cmNlcyAqLywKIAkJCQkwRkNBMjkzNTI2RkMz
OTE3MDA2QjRBRUIgLyogQVZBdWRpb1Nlc3Npb25DYXB0dXJlRGV2aWNlTWFuYWdlci5tbSBpbiBT
b3VyY2VzICovLAogCQkJCTA3MzhFNUVDMjQ5OTgzOTAwMERBMTAxQyAvKiBBVk91dHB1dERldmlj
ZU1lbnVDb250cm9sbGVyVGFyZ2V0UGlja2VyLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJQ0QzMzZG
NjExN0Y5RjY0NzAwREREQ0QwIC8qIEFWVHJhY2tQcml2YXRlQVZGT2JqQ0ltcGwubW0gaW4gU291
cmNlcyAqLywKQEAgLTM4Njk4LDEzICszODcwNywxNCBAQAogCQkJCTUxOEY0RkY2MTk0Q0E0RTYw
MDgxQkFBRSAvKiBHYW1lcGFkQnV0dG9uLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTUxNkM2MjIw
MTk1MEQ0ODcwMDMzN0U3NSAvKiBHYW1lcGFkRXZlbnQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJ
NTFBOUQ5RTkxOTVCOTMxRjAwMUIyQjVDIC8qIEdhbWVwYWRNYW5hZ2VyLmNwcCBpbiBTb3VyY2Vz
ICovLAotCQkJCTgzNzk2NENGMUY4REI2OUQwMDIxOEVBMCAvKiBHZW9sb2NhdGlvblBvc2l0aW9u
RGF0YUlPUy5tbSBpbiBTb3VyY2VzICovLAorCQkJCTgzNzk2NENGMUY4REI2OUQwMDIxOEVBMCAv
KiBHZW9sb2NhdGlvblBvc2l0aW9uRGF0YUNvY29hLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJNkU3
MkY1NEUyMjlEQ0QxMDAwQjNFMTUxIC8qIEdyYXBoaWNzQ29udGV4dEdMQU5HTEUuY3BwIGluIFNv
dXJjZXMgKi8sCiAJCQkJN0MzRTUxMEIxOERGOEYzNTAwQzExMkY3IC8qIEhUTUxDb252ZXJ0ZXIu
bW0gaW4gU291cmNlcyAqLywKIAkJCQlBOEQwNkIzQTBBMjY1RENEMDA1RTcyMDMgLyogSFRNTE5h
bWVzLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTFBQzkwMEMzMTk0M0MwRkMwMDg2MjVCNSAvKiBI
VFRQSGVhZGVyTmFtZXMuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQ0QyN0FFNTEyMkE5ODY4NzAw
OTQ3RkY5IC8qIEltYWdlUm90YXRpb25TZXNzaW9uVlQubW0gaW4gU291cmNlcyAqLywKIAkJCQkw
NzBFMkQwRjI2RjI1MDg5MDAxNEFBQzMgLyogSW5iYW5kQ2hhcHRlclRyYWNrUHJpdmF0ZUFWRk9i
akMubW0gaW4gU291cmNlcyAqLywKKwkJCQk0NkNBOTQzMTI3Qjg2OTU4MDBGNEY1RkYgLyogSW5i
YW5kVGV4dFRyYWNrUHJpdmF0ZUFWRk9iakMubW0gaW4gU291cmNlcyAqLywKIAkJCQlDRDA2M0Y4
MjFFMjNGQTg5MDA4MTJCRTMgLyogSW5pdERhdGFSZWdpc3RyeS5jcHAgaW4gU291cmNlcyAqLywK
IAkJCQk5MzVDNDc3MDA5QUM0RDczMDBBNkFBQjQgLyogS2V5RXZlbnRNYWMubW0gaW4gU291cmNl
cyAqLywKIAkJCQlDREE5OEUwQjE2MDNDRDYwMDBGRUEzQjEgLyogTGVnYWN5Q0RNLmNwcCBpbiBT
b3VyY2VzICovLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5jcHAKaW5kZXggNmE4NWU4NDNkOGJiZTNkMTkyZDk3ZjQ5
NmJkN2ViNDU0NzQ5ZGJhNC4uZWZlMGUzODA2ZGM4NDgwMzBkMjJiOWQ5MDI5MTY3OTMzODViZmRh
YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL1BhZ2UuY3BwCkBAIC02OSw2ICs2OSw3IEBACiAjaW5jbHVkZSAiRnJhbWVU
cmVlLmgiCiAjaW5jbHVkZSAiRnJhbWVWaWV3LmgiCiAjaW5jbHVkZSAiRnVsbHNjcmVlbk1hbmFn
ZXIuaCIKKyNpbmNsdWRlICJHZW9sb2NhdGlvbkNvbnRyb2xsZXIuaCIKICNpbmNsdWRlICJIVE1M
RWxlbWVudC5oIgogI2luY2x1ZGUgIkhUTUxJbWFnZUVsZW1lbnQuaCIKICNpbmNsdWRlICJIVE1M
TWVkaWFFbGVtZW50LmgiCkBAIC0xMzMyLDYgKzEzMzMsMTEgQEAgdm9pZCBQYWdlOjpkaWRDb21t
aXRMb2FkKCkKICAgICByZXNldFRleHRSZWNvZ25pdGlvblJlc3VsdHMoKTsKICAgICByZXNldElt
YWdlQW5hbHlzaXNRdWV1ZSgpOwogI2VuZGlmCisKKyNpZiBFTkFCTEUoR0VPTE9DQVRJT04pCisg
ICAgaWYgKGF1dG8qIGdlb2xvY2F0aW9uQ29udHJvbGxlciA9IEdlb2xvY2F0aW9uQ29udHJvbGxl
cjo6ZnJvbSh0aGlzKSkKKyAgICAgICAgZ2VvbG9jYXRpb25Db250cm9sbGVyLT5kaWROYXZpZ2F0
ZVBhZ2UoKTsKKyNlbmRpZgogfQogCiB2b2lkIFBhZ2U6OmRpZEZpbmlzaExvYWQoKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvQ29yZUxvY2F0aW9uR2VvbG9jYXRp
b25Qcm92aWRlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvQ29yZUxvY2F0aW9u
R2VvbG9jYXRpb25Qcm92aWRlci5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmM1MjQ2Yzg4NGFjZjhmNjlmY2I4Zjhh
YzRhY2M3ZjRjZGU2NDVjZWQKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9jb2NvYS9Db3JlTG9jYXRpb25HZW9sb2NhdGlvblByb3ZpZGVyLmgKQEAgLTAsMCArMSw2
NyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAx
LiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAq
ICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBM
RSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisg
KiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBT
SEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAq
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBS
T0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSA8d3RmL0NvbXBsZXRp
b25IYW5kbGVyLmg+CisjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KKyNpbmNsdWRlIDx3dGYvUmV0
YWluUHRyLmg+CisKK09CSkNfQ0xBU1MgV2ViQ0xMb2NhdGlvbk1hbmFnZXI7CisKK25hbWVzcGFj
ZSBXZWJDb3JlIHsKKworY2xhc3MgR2VvbG9jYXRpb25Qb3NpdGlvbkRhdGE7CitjbGFzcyBSZWdp
c3RyYWJsZURvbWFpbjsKKworY2xhc3MgV0VCQ09SRV9FWFBPUlQgQ29yZUxvY2F0aW9uR2VvbG9j
YXRpb25Qcm92aWRlciB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CitwdWJsaWM6Cisg
ICAgY2xhc3MgQ2xpZW50IHsKKyAgICBwdWJsaWM6CisgICAgICAgIHZpcnR1YWwgfkNsaWVudCgp
IHsgfQorCisgICAgICAgIHZpcnR1YWwgdm9pZCBnZW9sb2NhdGlvbkF1dGhvcml6YXRpb25HcmFu
dGVkKGNvbnN0IFN0cmluZyYgLyp3ZWJzaXRlSWRlbnRpZmllciovKSB7IH0KKyAgICAgICAgdmly
dHVhbCB2b2lkIGdlb2xvY2F0aW9uQXV0aG9yaXphdGlvbkRlbmllZChjb25zdCBTdHJpbmcmIC8q
d2Vic2l0ZUlkZW50aWZpZXIqLykgeyB9CisgICAgICAgIHZpcnR1YWwgdm9pZCBwb3NpdGlvbkNo
YW5nZWQoY29uc3QgU3RyaW5nJiB3ZWJzaXRlSWRlbnRpZmllciwgR2VvbG9jYXRpb25Qb3NpdGlv
bkRhdGEmJikgPSAwOworICAgICAgICB2aXJ0dWFsIHZvaWQgZXJyb3JPY2N1cnJlZChjb25zdCBT
dHJpbmcmIHdlYnNpdGVJZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIGVycm9yTWVzc2FnZSkgPSAw
OworICAgICAgICB2aXJ0dWFsIHZvaWQgcmVzZXRHZW9sb2NhdGlvbihjb25zdCBTdHJpbmcmIHdl
YnNpdGVJZGVudGlmaWVyKSA9IDA7CisgICAgfTsKKworICAgIENvcmVMb2NhdGlvbkdlb2xvY2F0
aW9uUHJvdmlkZXIoY29uc3QgUmVnaXN0cmFibGVEb21haW4mLCBDbGllbnQmKTsKKyAgICB+Q29y
ZUxvY2F0aW9uR2VvbG9jYXRpb25Qcm92aWRlcigpOworCisgICAgdm9pZCBzdGFydCgpOworICAg
IHZvaWQgc3RvcCgpOworCisgICAgdm9pZCBzZXRFbmFibGVIaWdoQWNjdXJhY3koYm9vbCk7CisK
KyAgICBzdGF0aWMgdm9pZCByZXF1ZXN0QXV0aG9yaXphdGlvbihjb25zdCBSZWdpc3RyYWJsZURv
bWFpbiYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYpOworCitwcml2YXRlOgorICAg
IFJldGFpblB0cjxXZWJDTExvY2F0aW9uTWFuYWdlcj4gbV9sb2NhdGlvbk1hbmFnZXI7Cit9Owor
Cit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9jb2NvYS9Db3JlTG9jYXRpb25HZW9sb2NhdGlvblByb3ZpZGVyLm1tIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vY29jb2EvQ29yZUxvY2F0aW9uR2VvbG9jYXRpb25Qcm92aWRlci5tbQpu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi42MzE3NjkzMzRhZTYyYmYwMjcyZDNjMzE3Zjc5ZjdmNTJmOTkzZDM4Ci0tLSAv
ZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvQ29yZUxvY2F0aW9u
R2VvbG9jYXRpb25Qcm92aWRlci5tbQpAQCAtMCwwICsxLDI2OCBAQAorLyoKKyAqIENvcHlyaWdo
dCAoQykgMjAyMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgor
ICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgor
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJ
QlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElU
UyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsg
T1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBU
SEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNp
bXBvcnQgImNvbmZpZy5oIgorI2ltcG9ydCAiQ29yZUxvY2F0aW9uR2VvbG9jYXRpb25Qcm92aWRl
ci5oIgorCisjaW1wb3J0ICJHZW9sb2NhdGlvblBvc2l0aW9uRGF0YS5oIgorI2ltcG9ydCAiUmVn
aXN0cmFibGVEb21haW4uaCIKKyNpbXBvcnQgPENvcmVMb2NhdGlvbi9DTExvY2F0aW9uTWFuYWdl
ckRlbGVnYXRlLmg+CisjaW1wb3J0IDxDb3JlTG9jYXRpb24vQ29yZUxvY2F0aW9uLmg+CisjaW1w
b3J0IDx3dGYvU29mdExpbmtpbmcuaD4KKworI2lmIFVTRShBUFBMRV9JTlRFUk5BTF9TREspCisj
aW1wb3J0IDxDb3JlTG9jYXRpb24vQ0xMb2NhdGlvbk1hbmFnZXJfUHJpdmF0ZS5oPgorI2VuZGlm
CisKK1NPRlRfTElOS19GUkFNRVdPUksoQ29yZUxvY2F0aW9uKQorCitTT0ZUX0xJTktfQ0xBU1Mo
Q29yZUxvY2F0aW9uLCBDTExvY2F0aW9uTWFuYWdlcikKK1NPRlRfTElOS19DTEFTUyhDb3JlTG9j
YXRpb24sIENMTG9jYXRpb24pCisKK1NPRlRfTElOS19DT05TVEFOVChDb3JlTG9jYXRpb24sIGtD
TExvY2F0aW9uQWNjdXJhY3lCZXN0LCBkb3VibGUpCitTT0ZUX0xJTktfQ09OU1RBTlQoQ29yZUxv
Y2F0aW9uLCBrQ0xMb2NhdGlvbkFjY3VyYWN5SHVuZHJlZE1ldGVycywgZG91YmxlKQorCisjZGVm
aW5lIGtDTExvY2F0aW9uQWNjdXJhY3lCZXN0IGdldGtDTExvY2F0aW9uQWNjdXJhY3lCZXN0KCkK
KyNkZWZpbmUga0NMTG9jYXRpb25BY2N1cmFjeUh1bmRyZWRNZXRlcnMgZ2V0a0NMTG9jYXRpb25B
Y2N1cmFjeUh1bmRyZWRNZXRlcnMoKQorCitzdGF0aWMgYm9vbCBpc0F1dGhvcml6YXRpb25HcmFu
dGVkKENMQXV0aG9yaXphdGlvblN0YXR1cyBzdGF0dXMpCit7CisgICAgcmV0dXJuIHN0YXR1cyA9
PSBrQ0xBdXRob3JpemF0aW9uU3RhdHVzQXV0aG9yaXplZEFsd2F5cworI2lmIEhBVkUoQ09SRV9M
T0NBVElPTl9BVVRIT1JJWkVEX1dIRU5fSU5fVVNFKQorICAgICAgICB8fCBzdGF0dXMgPT0ga0NM
QXV0aG9yaXphdGlvblN0YXR1c0F1dGhvcml6ZWRXaGVuSW5Vc2UKKyNlbmRpZgorICAgICAgICA7
Cit9CisKK0BpbnRlcmZhY2UgV2ViQ0xMb2NhdGlvbk1hbmFnZXIgOiBOU09iamVjdDxDTExvY2F0
aW9uTWFuYWdlckRlbGVnYXRlPgorQGVuZAorCitAaW1wbGVtZW50YXRpb24gV2ViQ0xMb2NhdGlv
bk1hbmFnZXIgeworICAgIFJldGFpblB0cjxDTExvY2F0aW9uTWFuYWdlcj4gX2xvY2F0aW9uTWFu
YWdlcjsKKyAgICBXZWJDb3JlOjpDb3JlTG9jYXRpb25HZW9sb2NhdGlvblByb3ZpZGVyOjpDbGll
bnQqIF9jbGllbnQ7CisgICAgU3RyaW5nIF93ZWJzaXRlSWRlbnRpZmllcjsKKyAgICBCT09MIF9p
c1dhaXRpbmdGb3JBdXRob3JpemF0aW9uOworfQorCistIChpbnN0YW5jZXR5cGUpaW5pdFdpdGhX
ZWJzaXRlSWRlbnRpZmllcjooY29uc3QgU3RyaW5nJil3ZWJzaXRlSWRlbnRpZmllciBjbGllbnQ6
KFdlYkNvcmU6OkNvcmVMb2NhdGlvbkdlb2xvY2F0aW9uUHJvdmlkZXI6OkNsaWVudCYpY2xpZW50
Cit7CisgICAgc2VsZiA9IFtzdXBlciBpbml0XTsKKyAgICBpZiAoIXNlbGYpCisgICAgICAgIHJl
dHVybiBuaWw7CisKKyAgICAvLyBGSVhNRTogQ2FsbCBpbml0V2l0aFdlYnNpdGVJZGVudGlmaWVy
IGFuZCBwYXNzIHRoZSB3ZWJzaXRlSWRlbnRpZmllciB3aGVuIEhBVkUoQ09SRV9MT0NBVElPTl9X
RUJTSVRFX0lERU5USUZJRVJTKSBhbmQgIXdlYnNpdGVJZGVudGlmaWVyLmlzRW1wdHkoKSBvbmNl
IDxyZGFyOi8vODg4MzQzMDE+IGlzIGZpeGVkLgorICAgIFVOVVNFRF9QQVJBTSh3ZWJzaXRlSWRl
bnRpZmllcik7CisgICAgX2xvY2F0aW9uTWFuYWdlciA9IGFkb3B0TlMoW2FsbG9jQ0xMb2NhdGlv
bk1hbmFnZXJJbnN0YW5jZSgpIGluaXRdKTsKKyAgICBfY2xpZW50ID0gJmNsaWVudDsKKyAgICBf
d2Vic2l0ZUlkZW50aWZpZXIgPSB3ZWJzaXRlSWRlbnRpZmllcjsKKyAgICBbX2xvY2F0aW9uTWFu
YWdlciBzZXREZWxlZ2F0ZTpzZWxmXTsKKyAgICByZXR1cm4gc2VsZjsKK30KKworLSAodm9pZClk
ZWFsbG9jCit7CisgICAgW19sb2NhdGlvbk1hbmFnZXIgc2V0RGVsZWdhdGU6bmlsXTsKKyAgICBb
c3VwZXIgZGVhbGxvY107Cit9CisKKy0gKHZvaWQpc3RhcnQKK3sKKyAgICBpZiAoIVtnZXRDTExv
Y2F0aW9uTWFuYWdlckNsYXNzKCkgbG9jYXRpb25TZXJ2aWNlc0VuYWJsZWRdIHx8ICFpc0F1dGhv
cml6YXRpb25HcmFudGVkKFtfbG9jYXRpb25NYW5hZ2VyIGF1dGhvcml6YXRpb25TdGF0dXNdKSkg
eworICAgICAgICBbX2xvY2F0aW9uTWFuYWdlciBzdG9wVXBkYXRpbmdMb2NhdGlvbl07CisgICAg
ICAgIF9jbGllbnQtPnJlc2V0R2VvbG9jYXRpb24oX3dlYnNpdGVJZGVudGlmaWVyKTsKKyAgICAg
ICAgcmV0dXJuOworICAgIH0KKworICAgIFtfbG9jYXRpb25NYW5hZ2VyIHN0YXJ0VXBkYXRpbmdM
b2NhdGlvbl07Cit9CisKKy0gKHZvaWQpc3RvcAoreworICAgIFtfbG9jYXRpb25NYW5hZ2VyIHN0
b3BVcGRhdGluZ0xvY2F0aW9uXTsKK30KKworLSAodm9pZClzZXRFbmFibGVIaWdoQWNjdXJhY3k6
KEJPT0wpaGlnaEFjY3VyYWN5RW5hYmxlZAoreworICAgIFtfbG9jYXRpb25NYW5hZ2VyIHNldERl
c2lyZWRBY2N1cmFjeTpoaWdoQWNjdXJhY3lFbmFibGVkID8ga0NMTG9jYXRpb25BY2N1cmFjeUJl
c3QgOiBrQ0xMb2NhdGlvbkFjY3VyYWN5SHVuZHJlZE1ldGVyc107Cit9CisKKy0gKHZvaWQpcmVx
dWVzdEdlb2xvY2F0aW9uQXV0aG9yaXphdGlvbgoreworICAgIGlmICghW2dldENMTG9jYXRpb25N
YW5hZ2VyQ2xhc3MoKSBsb2NhdGlvblNlcnZpY2VzRW5hYmxlZF0pIHsKKyAgICAgICAgX2NsaWVu
dC0+Z2VvbG9jYXRpb25BdXRob3JpemF0aW9uRGVuaWVkKF93ZWJzaXRlSWRlbnRpZmllcik7Cisg
ICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBzd2l0Y2ggKFtfbG9jYXRpb25NYW5hZ2VyIGF1
dGhvcml6YXRpb25TdGF0dXNdKSB7CisgICAgY2FzZSBrQ0xBdXRob3JpemF0aW9uU3RhdHVzTm90
RGV0ZXJtaW5lZDogeworICAgICAgICBpZiAoIV9pc1dhaXRpbmdGb3JBdXRob3JpemF0aW9uKSB7
CisgICAgICAgICAgICBfaXNXYWl0aW5nRm9yQXV0aG9yaXphdGlvbiA9IFlFUzsKKyAgICAgICAg
ICAgIFtfbG9jYXRpb25NYW5hZ2VyIHJlcXVlc3RXaGVuSW5Vc2VBdXRob3JpemF0aW9uXTsKKyAg
ICAgICAgfQorICAgICAgICBicmVhazsKKyAgICB9CisgICAgY2FzZSBrQ0xBdXRob3JpemF0aW9u
U3RhdHVzQXV0aG9yaXplZEFsd2F5czoKKyNpZiBIQVZFKENPUkVfTE9DQVRJT05fQVVUSE9SSVpF
RF9XSEVOX0lOX1VTRSkKKyAgICBjYXNlIGtDTEF1dGhvcml6YXRpb25TdGF0dXNBdXRob3JpemVk
V2hlbkluVXNlOgorI2VuZGlmCisgICAgICAgIF9jbGllbnQtPmdlb2xvY2F0aW9uQXV0aG9yaXph
dGlvbkdyYW50ZWQoX3dlYnNpdGVJZGVudGlmaWVyKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2Fz
ZSBrQ0xBdXRob3JpemF0aW9uU3RhdHVzUmVzdHJpY3RlZDoKKyAgICBjYXNlIGtDTEF1dGhvcml6
YXRpb25TdGF0dXNEZW5pZWQ6CisgICAgICAgIF9jbGllbnQtPmdlb2xvY2F0aW9uQXV0aG9yaXph
dGlvbkRlbmllZChfd2Vic2l0ZUlkZW50aWZpZXIpOworICAgICAgICBicmVhazsKKyAgICB9Cit9
CisKKy0gKHZvaWQpbG9jYXRpb25NYW5hZ2VyRGlkQ2hhbmdlQXV0aG9yaXphdGlvbjooQ0xMb2Nh
dGlvbk1hbmFnZXIgKiltYW5hZ2VyCit7CisgICAgYXV0byBzdGF0dXMgPSBbX2xvY2F0aW9uTWFu
YWdlciBhdXRob3JpemF0aW9uU3RhdHVzXTsKKyAgICBpZiAoX2lzV2FpdGluZ0ZvckF1dGhvcml6
YXRpb24pIHsKKyAgICAgICAgc3dpdGNoIChzdGF0dXMpIHsKKyAgICAgICAgY2FzZSBrQ0xBdXRo
b3JpemF0aW9uU3RhdHVzTm90RGV0ZXJtaW5lZDoKKyAgICAgICAgICAgIC8vIFRoaXMgY2FuIGhh
cHBlbiBhZnRlciByZXN1bWUgaWYgdGhlIHVzZXIgaGFzIHN0aWxsIG5vdCBhbnN3ZXJlZCB0aGUg
ZGlhbG9nLiBXZSBqdXN0IGhhdmUgdG8gd2FpdCBmb3IgdGhlIHBlcm1pc3Npb24uCisgICAgICAg
ICAgICBicmVhazsKKyAgICAgICAgY2FzZSBrQ0xBdXRob3JpemF0aW9uU3RhdHVzRGVuaWVkOgor
ICAgICAgICBjYXNlIGtDTEF1dGhvcml6YXRpb25TdGF0dXNSZXN0cmljdGVkOgorICAgICAgICAg
ICAgX2lzV2FpdGluZ0ZvckF1dGhvcml6YXRpb24gPSBOTzsKKyAgICAgICAgICAgIF9jbGllbnQt
Pmdlb2xvY2F0aW9uQXV0aG9yaXphdGlvbkRlbmllZChfd2Vic2l0ZUlkZW50aWZpZXIpOworICAg
ICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2Uga0NMQXV0aG9yaXphdGlvblN0YXR1c0F1dGhv
cml6ZWRBbHdheXM6CisjaWYgSEFWRShDT1JFX0xPQ0FUSU9OX0FVVEhPUklaRURfV0hFTl9JTl9V
U0UpCisgICAgICAgIGNhc2Uga0NMQXV0aG9yaXphdGlvblN0YXR1c0F1dGhvcml6ZWRXaGVuSW5V
c2U6CisjZW5kaWYKKyAgICAgICAgICAgIF9pc1dhaXRpbmdGb3JBdXRob3JpemF0aW9uID0gTk87
CisgICAgICAgICAgICBfY2xpZW50LT5nZW9sb2NhdGlvbkF1dGhvcml6YXRpb25HcmFudGVkKF93
ZWJzaXRlSWRlbnRpZmllcik7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorICAgIH0g
ZWxzZSB7CisgICAgICAgIGlmIChzdGF0dXMgPT0ga0NMQXV0aG9yaXphdGlvblN0YXR1c0Rlbmll
ZCB8fCBzdGF0dXMgPT0ga0NMQXV0aG9yaXphdGlvblN0YXR1c1Jlc3RyaWN0ZWQpIHsKKyAgICAg
ICAgICAgIFtfbG9jYXRpb25NYW5hZ2VyIHN0b3BVcGRhdGluZ0xvY2F0aW9uXTsKKyAgICAgICAg
ICAgIF9jbGllbnQtPnJlc2V0R2VvbG9jYXRpb24oX3dlYnNpdGVJZGVudGlmaWVyKTsKKyAgICAg
ICAgfQorICAgIH0KK30KKworLSAodm9pZClsb2NhdGlvbk1hbmFnZXI6KENMTG9jYXRpb25NYW5h
Z2VyICopbWFuYWdlciBkaWRVcGRhdGVMb2NhdGlvbnM6KE5TQXJyYXkgKilsb2NhdGlvbnMKK3sK
KyAgICBVTlVTRURfUEFSQU0obWFuYWdlcik7CisgICAgZm9yIChDTExvY2F0aW9uICpsb2NhdGlv
biBpbiBsb2NhdGlvbnMpCisgICAgICAgIF9jbGllbnQtPnBvc2l0aW9uQ2hhbmdlZChfd2Vic2l0
ZUlkZW50aWZpZXIsIFdlYkNvcmU6Okdlb2xvY2F0aW9uUG9zaXRpb25EYXRhIHsgbG9jYXRpb24g
fSk7Cit9CisKKy0gKHZvaWQpbG9jYXRpb25NYW5hZ2VyOihDTExvY2F0aW9uTWFuYWdlciAqKW1h
bmFnZXIgZGlkRmFpbFdpdGhFcnJvcjooTlNFcnJvciAqKWVycm9yCit7CisgICAgQVNTRVJUKGVy
cm9yKTsKKyAgICBVTlVTRURfUEFSQU0obWFuYWdlcik7CisKKyAgICBpZiAoW2Vycm9yIGNvZGVd
ID09IGtDTEVycm9yRGVuaWVkKSB7CisgICAgICAgIC8vIElnbm9yZSB0aGUgZXJyb3IgaGVyZSBh
bmQgbGV0IGxvY2F0aW9uTWFuYWdlcjpkaWRDaGFuZ2VBdXRob3JpemF0aW9uU3RhdHVzOiBoYW5k
bGUgdGhlIHBlcm1pc3Npb24uCisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBOU1N0cmlu
ZyAqZXJyb3JNZXNzYWdlID0gW2Vycm9yIGxvY2FsaXplZERlc2NyaXB0aW9uXTsKKyAgICBfY2xp
ZW50LT5lcnJvck9jY3VycmVkKF93ZWJzaXRlSWRlbnRpZmllciwgZXJyb3JNZXNzYWdlKTsKK30K
KworQGVuZAorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK0NvcmVMb2NhdGlvbkdlb2xvY2F0aW9u
UHJvdmlkZXI6OkNvcmVMb2NhdGlvbkdlb2xvY2F0aW9uUHJvdmlkZXIoY29uc3QgUmVnaXN0cmFi
bGVEb21haW4mIHJlZ2lzdHJhYmxlRG9tYWluLCBDbGllbnQmIGNsaWVudCkKKyAgICA6IG1fbG9j
YXRpb25NYW5hZ2VyKGFkb3B0TlMoW1tXZWJDTExvY2F0aW9uTWFuYWdlciBhbGxvY10gaW5pdFdp
dGhXZWJzaXRlSWRlbnRpZmllcjpyZWdpc3RyYWJsZURvbWFpbi5zdHJpbmcoKSBjbGllbnQ6Y2xp
ZW50XSkpCit7CisgICAgLy8gUmVxdWVzdCBwZXJtaXNzaW9uIGZvciB0aGUgYXBwIHRvIHVzZSBn
ZW9sb2NhdGlvbiAoaWYgaXQgZG9lc24ndCBhbHJlYWR5KS4KKyAgICBbbV9sb2NhdGlvbk1hbmFn
ZXIgcmVxdWVzdEdlb2xvY2F0aW9uQXV0aG9yaXphdGlvbl07Cit9CisKK0NvcmVMb2NhdGlvbkdl
b2xvY2F0aW9uUHJvdmlkZXI6On5Db3JlTG9jYXRpb25HZW9sb2NhdGlvblByb3ZpZGVyKCkKK3sK
KyAgICBbbV9sb2NhdGlvbk1hbmFnZXIgc3RvcF07Cit9CisKK3ZvaWQgQ29yZUxvY2F0aW9uR2Vv
bG9jYXRpb25Qcm92aWRlcjo6c3RhcnQoKQoreworICAgIFttX2xvY2F0aW9uTWFuYWdlciBzdGFy
dF07Cit9CisKK3ZvaWQgQ29yZUxvY2F0aW9uR2VvbG9jYXRpb25Qcm92aWRlcjo6c3RvcCgpCit7
CisgICAgW21fbG9jYXRpb25NYW5hZ2VyIHN0b3BdOworfQorCit2b2lkIENvcmVMb2NhdGlvbkdl
b2xvY2F0aW9uUHJvdmlkZXI6OnNldEVuYWJsZUhpZ2hBY2N1cmFjeShib29sIGhpZ2hBY2N1cmFj
eUVuYWJsZWQpCit7CisgICAgW21fbG9jYXRpb25NYW5hZ2VyIHNldEVuYWJsZUhpZ2hBY2N1cmFj
eTpoaWdoQWNjdXJhY3lFbmFibGVkXTsKK30KKworY2xhc3MgQXV0aG9yaXphdGlvbkNoZWNrZXIg
ZmluYWwgOiBwdWJsaWMgUmVmQ291bnRlZDxBdXRob3JpemF0aW9uQ2hlY2tlcj4sIHB1YmxpYyBD
b3JlTG9jYXRpb25HZW9sb2NhdGlvblByb3ZpZGVyOjpDbGllbnQgeworcHVibGljOgorICAgIHN0
YXRpYyBSZWY8QXV0aG9yaXphdGlvbkNoZWNrZXI+IGNyZWF0ZSgpCisgICAgeworICAgICAgICBy
ZXR1cm4gYWRvcHRSZWYoKm5ldyBBdXRob3JpemF0aW9uQ2hlY2tlcik7CisgICAgfQorCisgICAg
dm9pZCBjaGVjayhjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYgcmVnaXN0cmFibGVEb21haW4sIENv
bXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCisgICAgewor
ICAgICAgICBtX2NvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcik7
CisgICAgICAgIG1fcHJvdmlkZXIgPSBtYWtlVW5pcXVlPENvcmVMb2NhdGlvbkdlb2xvY2F0aW9u
UHJvdmlkZXI+KHJlZ2lzdHJhYmxlRG9tYWluLCAqdGhpcyk7CisgICAgfQorCitwcml2YXRlOgor
ICAgIEF1dGhvcml6YXRpb25DaGVja2VyKCkgPSBkZWZhdWx0OworCisgICAgdm9pZCBnZW9sb2Nh
dGlvbkF1dGhvcml6YXRpb25HcmFudGVkKGNvbnN0IFN0cmluZyYpIGZpbmFsCisgICAgeworICAg
ICAgICBpZiAobV9jb21wbGV0aW9uSGFuZGxlcikKKyAgICAgICAgICAgIG1fY29tcGxldGlvbkhh
bmRsZXIodHJ1ZSk7CisgICAgfQorCisgICAgdm9pZCBnZW9sb2NhdGlvbkF1dGhvcml6YXRpb25E
ZW5pZWQoY29uc3QgU3RyaW5nJikgZmluYWwKKyAgICB7CisgICAgICAgIGlmIChtX2NvbXBsZXRp
b25IYW5kbGVyKQorICAgICAgICAgICAgbV9jb21wbGV0aW9uSGFuZGxlcihmYWxzZSk7CisgICAg
fQorCisgICAgdm9pZCBwb3NpdGlvbkNoYW5nZWQoY29uc3QgU3RyaW5nJiwgR2VvbG9jYXRpb25Q
b3NpdGlvbkRhdGEmJikgZmluYWwgeyB9CisgICAgdm9pZCBlcnJvck9jY3VycmVkKGNvbnN0IFN0
cmluZyYsIGNvbnN0IFN0cmluZyYpIGZpbmFsCisgICAgeworICAgICAgICBpZiAobV9jb21wbGV0
aW9uSGFuZGxlcikKKyAgICAgICAgICAgIG1fY29tcGxldGlvbkhhbmRsZXIoZmFsc2UpOworICAg
IH0KKyAgICB2b2lkIHJlc2V0R2VvbG9jYXRpb24oY29uc3QgU3RyaW5nJikgZmluYWwgeyB9CisK
KyAgICBzdGQ6OnVuaXF1ZV9wdHI8Q29yZUxvY2F0aW9uR2VvbG9jYXRpb25Qcm92aWRlcj4gbV9w
cm92aWRlcjsKKyAgICBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiBtX2NvbXBsZXRpb25I
YW5kbGVyOworfTsKKwordm9pZCBDb3JlTG9jYXRpb25HZW9sb2NhdGlvblByb3ZpZGVyOjpyZXF1
ZXN0QXV0aG9yaXphdGlvbihjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYgcmVnaXN0cmFibGVEb21h
aW4sIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCit7
CisgICAgYXV0byBhdXRob3JpemF0aW9uQ2hlY2tlciA9IEF1dGhvcml6YXRpb25DaGVja2VyOjpj
cmVhdGUoKTsKKyAgICBhdXRob3JpemF0aW9uQ2hlY2tlci0+Y2hlY2socmVnaXN0cmFibGVEb21h
aW4sIFthdXRob3JpemF0aW9uQ2hlY2tlciwgY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNv
bXBsZXRpb25IYW5kbGVyKV0oYm9vbCBhdXRob3JpemVkKSBtdXRhYmxlIHsKKyAgICAgICAgY29t
cGxldGlvbkhhbmRsZXIoYXV0aG9yaXplZCk7CisgICAgfSk7Cit9CisKK30gLy8gbmFtZXNwYWNl
IFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svR2VvbG9j
YXRpb25DbGllbnRNb2NrLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svR2VvbG9j
YXRpb25DbGllbnRNb2NrLmNwcAppbmRleCA5ZDVlZmM4M2YzNGViMThkNTk5ZGMxMGNhYThmYzBj
YTM5OWRiMGEyLi5mYTQyMDgyZTUwNTlhOWVjZjI2NGNhYWY0YzI2NTMyZjRiMmU1ZDdhIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL0dlb2xvY2F0aW9uQ2xpZW50TW9j
ay5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9HZW9sb2NhdGlvbkNsaWVu
dE1vY2suY3BwCkBAIC0xMzYsMTAgKzEzNiwxMSBAQCB2b2lkIEdlb2xvY2F0aW9uQ2xpZW50TW9j
azo6Z2VvbG9jYXRpb25EZXN0cm95ZWQoKQogICAgIEFTU0VSVCghbV9pc0FjdGl2ZSk7CiB9CiAK
LXZvaWQgR2VvbG9jYXRpb25DbGllbnRNb2NrOjpzdGFydFVwZGF0aW5nKGNvbnN0IFN0cmluZyYg
YXV0aG9yaXphdGlvblRva2VuKQordm9pZCBHZW9sb2NhdGlvbkNsaWVudE1vY2s6OnN0YXJ0VXBk
YXRpbmcoY29uc3QgU3RyaW5nJiBhdXRob3JpemF0aW9uVG9rZW4sIGJvb2wgZW5hYmxlSGlnaEFj
Y3VyYWN5KQogewogICAgIEFTU0VSVCghbV9pc0FjdGl2ZSk7CiAgICAgVU5VU0VEX1BBUkFNKGF1
dGhvcml6YXRpb25Ub2tlbik7CisgICAgVU5VU0VEX1BBUkFNKGVuYWJsZUhpZ2hBY2N1cmFjeSk7
CiAgICAgbV9pc0FjdGl2ZSA9IHRydWU7CiAgICAgYXN5bmNVcGRhdGVDb250cm9sbGVyKCk7CiB9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL0dlb2xvY2F0aW9uQ2xp
ZW50TW9jay5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9HZW9sb2NhdGlvbkNsaWVu
dE1vY2suaAppbmRleCAyZmE3NWUwNTdhNTNkN2U4MThjY2ZhZmVlNzAyNDNkZDU0ODIxODQ1Li5m
OGJhYzM4YjViNmNjYzhjYzA4Zjg3MDcxZWJjNzVkNjViMzEwNjQwIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL0dlb2xvY2F0aW9uQ2xpZW50TW9jay5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svR2VvbG9jYXRpb25DbGllbnRNb2NrLmgKQEAgLTU5
LDcgKzU5LDcgQEAgcHVibGljOgogCiAgICAgLy8gR2VvbG9jYXRpb25DbGllbnQKICAgICB2b2lk
IGdlb2xvY2F0aW9uRGVzdHJveWVkKCkgb3ZlcnJpZGU7Ci0gICAgdm9pZCBzdGFydFVwZGF0aW5n
KGNvbnN0IFN0cmluZyYgYXV0aG9yaXphdGlvblRva2VuKSBvdmVycmlkZTsKKyAgICB2b2lkIHN0
YXJ0VXBkYXRpbmcoY29uc3QgU3RyaW5nJiBhdXRob3JpemF0aW9uVG9rZW4sIGJvb2wgZW5hYmxl
SGlnaEFjY3VyYWN5KSBvdmVycmlkZTsKICAgICB2b2lkIHN0b3BVcGRhdGluZygpIG92ZXJyaWRl
OwogICAgIHZvaWQgc2V0RW5hYmxlSGlnaEFjY3VyYWN5KGJvb2wpIG92ZXJyaWRlOwogICAgIHN0
ZDo6b3B0aW9uYWw8R2VvbG9jYXRpb25Qb3NpdGlvbkRhdGE+IGxhc3RQb3NpdGlvbigpIG92ZXJy
aWRlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9Tb3VyY2VzQ29jb2EudHh0IGIvU291cmNl
L1dlYktpdC9Tb3VyY2VzQ29jb2EudHh0CmluZGV4IDJhY2RhOTQxZWNkZjRiY2JlN2ZlOTRhNTE4
MTc0OTFmMWMwYmYzOWEuLjM5ZmVhOTFjZTU2MTc1ODE2MGFkOTIxODk4OTQ1M2U1ODNlZDY0NjEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU291cmNlc0NvY29hLnR4dAorKysgYi9Tb3VyY2Uv
V2ViS2l0L1NvdXJjZXNDb2NvYS50eHQKQEAgLTQyNyw2ICs0MjcsNyBAQCBVSVByb2Nlc3MvQ29j
b2EvVUlSZW1vdGVPYmplY3RSZWdpc3RyeS5jcHAKIFVJUHJvY2Vzcy9Db2NvYS9Vc2VyTWVkaWFD
YXB0dXJlTWFuYWdlclByb3h5LmNwcAogVUlQcm9jZXNzL0NvY29hL1VzZXJNZWRpYVBlcm1pc3Np
b25SZXF1ZXN0TWFuYWdlclByb3h5Lm1tCiBVSVByb2Nlc3MvQ29jb2EvVmlkZW9GdWxsc2NyZWVu
TWFuYWdlclByb3h5Lm1tCitVSVByb2Nlc3MvQ29jb2EvV2ViR2VvbG9jYXRpb25NYW5hZ2VyUHJv
eHlDb2NvYS5jcHAKIFVJUHJvY2Vzcy9Db2NvYS9XZWJQYWdlUHJveHlDb2NvYS5tbQogVUlQcm9j
ZXNzL0NvY29hL1dlYlBhc3RlYm9hcmRQcm94eUNvY29hLm1tCiBVSVByb2Nlc3MvQ29jb2EvV2Vi
UHJlZmVyZW5jZXNDb2NvYS5tbQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
Q29jb2EvV2ViR2VvbG9jYXRpb25NYW5hZ2VyUHJveHlDb2NvYS5jcHAgYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9Db2NvYS9XZWJHZW9sb2NhdGlvbk1hbmFnZXJQcm94eUNvY29hLmNwcApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi5mMGJmYmRlOTMyMjJiMTA1N2YxNzM2YjcyOTIyMDEyMzJiMDI1NjhmCi0tLSAvZGV2
L251bGwKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV2ViR2VvbG9jYXRpb25N
YW5hZ2VyUHJveHlDb2NvYS5jcHAKQEAgLTAsMCArMSw3NiBAQAorLyoKKyAqIENvcHlyaWdodCAo
QykgMjAyMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICog
Mi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVU
T1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQ
T1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBD
T05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1Ig
QlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVP
UlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNs
dWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJXZWJHZW9sb2NhdGlvbk1hbmFnZXJQcm94eS5oIgor
CisjaW5jbHVkZSAiV2ViR2VvbG9jYXRpb25NYW5hZ2VyTWVzc2FnZXMuaCIKKyNpbmNsdWRlICJX
ZWJQcm9jZXNzUHJveHkuaCIKKworbmFtZXNwYWNlIFdlYktpdCB7CisKKy8vIEZJWE1FOiBUaGlz
IHNob3VsZCBiZSB1c2VkIGJ5IGFsbCBDb2NvYSBwb3J0cworI2lmIFBMQVRGT1JNKElPU19GQU1J
TFkpCisKK3ZvaWQgV2ViR2VvbG9jYXRpb25NYW5hZ2VyUHJveHk6OnBvc2l0aW9uQ2hhbmdlZChj
b25zdCBTdHJpbmcmIHdlYnNpdGVJZGVudGlmaWVyLCBXZWJDb3JlOjpHZW9sb2NhdGlvblBvc2l0
aW9uRGF0YSYmIHBvc2l0aW9uKQoreworICAgIGF1dG8gcmVnaXN0cmFibGVEb21haW4gPSBXZWJD
b3JlOjpSZWdpc3RyYWJsZURvbWFpbjo6dW5jaGVja2VkQ3JlYXRlRnJvbVJlZ2lzdHJhYmxlRG9t
YWluU3RyaW5nKHdlYnNpdGVJZGVudGlmaWVyKTsKKyAgICBhdXRvIGl0ID0gbV9wZXJEb21haW5E
YXRhLmZpbmQocmVnaXN0cmFibGVEb21haW4pOworICAgIGlmIChpdCA9PSBtX3BlckRvbWFpbkRh
dGEuZW5kKCkpCisgICAgICAgIHJldHVybjsKKworICAgIGF1dG8mIHBlckRvbWFpbkRhdGEgPSAq
aXQtPnZhbHVlOworICAgIHBlckRvbWFpbkRhdGEubGFzdFBvc2l0aW9uID0gV1RGTW92ZShwb3Np
dGlvbik7CisgICAgZm9yIChhdXRvJiB3ZWJQcm9jZXNzUHJveHkgOiBwZXJEb21haW5EYXRhLndh
dGNoZXJzKQorICAgICAgICB3ZWJQcm9jZXNzUHJveHkuc2VuZChNZXNzYWdlczo6V2ViR2VvbG9j
YXRpb25NYW5hZ2VyOjpEaWRDaGFuZ2VQb3NpdGlvbihyZWdpc3RyYWJsZURvbWFpbiwgcGVyRG9t
YWluRGF0YS5sYXN0UG9zaXRpb24udmFsdWUoKSksIDApOworfQorCit2b2lkIFdlYkdlb2xvY2F0
aW9uTWFuYWdlclByb3h5OjplcnJvck9jY3VycmVkKGNvbnN0IFN0cmluZyYgd2Vic2l0ZUlkZW50
aWZpZXIsIGNvbnN0IFN0cmluZyYgZXJyb3JNZXNzYWdlKQoreworICAgIGF1dG8gcmVnaXN0cmFi
bGVEb21haW4gPSBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbjo6dW5jaGVja2VkQ3JlYXRlRnJv
bVJlZ2lzdHJhYmxlRG9tYWluU3RyaW5nKHdlYnNpdGVJZGVudGlmaWVyKTsKKyAgICBhdXRvIGl0
ID0gbV9wZXJEb21haW5EYXRhLmZpbmQocmVnaXN0cmFibGVEb21haW4pOworICAgIGlmIChpdCA9
PSBtX3BlckRvbWFpbkRhdGEuZW5kKCkpCisgICAgICAgIHJldHVybjsKKworICAgIGF1dG8mIHBl
ckRvbWFpbkRhdGEgPSAqaXQtPnZhbHVlOworICAgIGZvciAoYXV0byYgd2ViUHJvY2Vzc1Byb3h5
IDogcGVyRG9tYWluRGF0YS53YXRjaGVycykKKyAgICAgICAgd2ViUHJvY2Vzc1Byb3h5LnNlbmQo
TWVzc2FnZXM6OldlYkdlb2xvY2F0aW9uTWFuYWdlcjo6RGlkRmFpbFRvRGV0ZXJtaW5lUG9zaXRp
b24ocmVnaXN0cmFibGVEb21haW4sIGVycm9yTWVzc2FnZSksIDApOworfQorCit2b2lkIFdlYkdl
b2xvY2F0aW9uTWFuYWdlclByb3h5OjpyZXNldEdlb2xvY2F0aW9uKGNvbnN0IFN0cmluZyYgd2Vi
c2l0ZUlkZW50aWZpZXIpCit7CisgICAgYXV0byByZWdpc3RyYWJsZURvbWFpbiA9IFdlYkNvcmU6
OlJlZ2lzdHJhYmxlRG9tYWluOjp1bmNoZWNrZWRDcmVhdGVGcm9tUmVnaXN0cmFibGVEb21haW5T
dHJpbmcod2Vic2l0ZUlkZW50aWZpZXIpOworICAgIGF1dG8gaXQgPSBtX3BlckRvbWFpbkRhdGEu
ZmluZChyZWdpc3RyYWJsZURvbWFpbik7CisgICAgaWYgKGl0ID09IG1fcGVyRG9tYWluRGF0YS5l
bmQoKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgYXV0byYgcGVyRG9tYWluRGF0YSA9ICppdC0+
dmFsdWU7CisgICAgZm9yIChhdXRvJiB3ZWJQcm9jZXNzUHJveHkgOiBwZXJEb21haW5EYXRhLndh
dGNoZXJzKQorICAgICAgICB3ZWJQcm9jZXNzUHJveHkuc2VuZChNZXNzYWdlczo6V2ViR2VvbG9j
YXRpb25NYW5hZ2VyOjpSZXNldFBlcm1pc3Npb25zKHJlZ2lzdHJhYmxlRG9tYWluKSwgMCk7Cit9
CisKKyNlbmRpZgorCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL1dlYkNvbnRleHRTdXBwbGVtZW50LmggYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9XZWJDb250ZXh0U3VwcGxlbWVudC5oCmluZGV4IGVkNTViNDAzZGIyOWY5NDAwNDM4
YmEzMmE2MGM3NTgyNzQ5MzRmYTYuLmVjMTljZGNjY2JiNDBmOTJkNTgzNWYzZWE2MDMxYmRkYTQ3
N2E4ZTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkNvbnRleHRTdXBw
bGVtZW50LmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQ29udGV4dFN1cHBsZW1l
bnQuaApAQCAtNDcsMTQgKzQ3LDYgQEAgcHVibGljOgogICAgIHsKICAgICB9CiAKLSAgICB2aXJ0
dWFsIHZvaWQgcHJvY2Vzc0RpZENsb3NlKFdlYlByb2Nlc3NQcm94eSopCi0gICAgewotICAgIH0K
LQotICAgIHZpcnR1YWwgdm9pZCBwcm9jZXNzRGlkQ2xvc2UoTmV0d29ya1Byb2Nlc3NQcm94eSop
Ci0gICAgewotICAgIH0KLQogICAgIFdlYlByb2Nlc3NQb29sKiBwcm9jZXNzUG9vbCgpIGNvbnN0
IHsgcmV0dXJuIG1fcHJvY2Vzc1Bvb2w7IH0KICAgICB2b2lkIGNsZWFyUHJvY2Vzc1Bvb2woKSB7
IG1fcHJvY2Vzc1Bvb2wgPSBudWxscHRyOyB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL1dlYkdlb2xvY2F0aW9uTWFuYWdlclByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL1dlYkdlb2xvY2F0aW9uTWFuYWdlclByb3h5LmNwcAppbmRleCAwNGYzMjI3Y2Q1
NWM5OTJhNDJjZDk2YTNmMjVkNjk3YWVkNzk2NWEyLi41NjY1NzRkM2U3MTIzMjg1NWRkY2M2YzFk
ZTQwMzdjMTM2NjQ0NjViIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJH
ZW9sb2NhdGlvbk1hbmFnZXJQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
V2ViR2VvbG9jYXRpb25NYW5hZ2VyUHJveHkuY3BwCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENv
cHlyaWdodCAoQykgMjAxMSwgMjAxMiwgMjAxMyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEtMjAyMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTM0LDEwICszNCwxNSBA
QAogI2luY2x1ZGUgIldlYlBhZ2VQcm94eS5oIgogI2luY2x1ZGUgIldlYlByb2Nlc3NQb29sLmgi
CiAKLSNkZWZpbmUgTUVTU0FHRV9DSEVDSyhhc3NlcnRpb24pIE1FU1NBR0VfQ0hFQ0tfQkFTRShh
c3NlcnRpb24sICgmY29ubmVjdGlvbikpCisjZGVmaW5lIE1FU1NBR0VfQ0hFQ0soY29ubmVjdGlv
biwgYXNzZXJ0aW9uKSBNRVNTQUdFX0NIRUNLX0JBU0UoYXNzZXJ0aW9uLCAoY29ubmVjdGlvbikp
CiAKIG5hbWVzcGFjZSBXZWJLaXQgewogCitzdGF0aWMgaW5saW5lIFdlYlByb2Nlc3NQcm94eSYg
Y29ubmVjdGlvblRvV2ViUHJvY2Vzc1Byb3h5KGNvbnN0IElQQzo6Q29ubmVjdGlvbiYgY29ubmVj
dGlvbikKK3sKKyAgICByZXR1cm4gc3RhdGljX2Nhc3Q8V2ViUHJvY2Vzc1Byb3h5Jj4oY29ubmVj
dGlvbi5jbGllbnQoKSk7Cit9CisKIGNvbnN0IGNoYXIqIFdlYkdlb2xvY2F0aW9uTWFuYWdlclBy
b3h5OjpzdXBwbGVtZW50TmFtZSgpCiB7CiAgICAgcmV0dXJuICJXZWJHZW9sb2NhdGlvbk1hbmFn
ZXJQcm94eSI7CkBAIC01MCwzNCArNTUsMzggQEAgUmVmPFdlYkdlb2xvY2F0aW9uTWFuYWdlclBy
b3h5PiBXZWJHZW9sb2NhdGlvbk1hbmFnZXJQcm94eTo6Y3JlYXRlKFdlYlByb2Nlc3NQb28KIAog
V2ViR2VvbG9jYXRpb25NYW5hZ2VyUHJveHk6OldlYkdlb2xvY2F0aW9uTWFuYWdlclByb3h5KFdl
YlByb2Nlc3NQb29sKiBwcm9jZXNzUG9vbCkKICAgICA6IFdlYkNvbnRleHRTdXBwbGVtZW50KHBy
b2Nlc3NQb29sKQotICAgICwgbV9wcm92aWRlcihtYWtlVW5pcXVlPEFQSTo6R2VvbG9jYXRpb25Q
cm92aWRlcj4oKSkKIHsKICAgICBXZWJDb250ZXh0U3VwcGxlbWVudDo6cHJvY2Vzc1Bvb2woKS0+
YWRkTWVzc2FnZVJlY2VpdmVyKE1lc3NhZ2VzOjpXZWJHZW9sb2NhdGlvbk1hbmFnZXJQcm94eTo6
bWVzc2FnZVJlY2VpdmVyTmFtZSgpLCAqdGhpcyk7CiB9CiAKK1dlYkdlb2xvY2F0aW9uTWFuYWdl
clByb3h5Ojp+V2ViR2VvbG9jYXRpb25NYW5hZ2VyUHJveHkoKSA9IGRlZmF1bHQ7CisKIHZvaWQg
V2ViR2VvbG9jYXRpb25NYW5hZ2VyUHJveHk6OnNldFByb3ZpZGVyKHN0ZDo6dW5pcXVlX3B0cjxB
UEk6Okdlb2xvY2F0aW9uUHJvdmlkZXI+JiYgcHJvdmlkZXIpCiB7Ci0gICAgaWYgKCFwcm92aWRl
cikKLSAgICAgICAgbV9wcm92aWRlciA9IG1ha2VVbmlxdWU8QVBJOjpHZW9sb2NhdGlvblByb3Zp
ZGVyPigpOwotICAgIGVsc2UKLSAgICAgICAgbV9wcm92aWRlciA9IFdURk1vdmUocHJvdmlkZXIp
OworICAgIG1fY2xpZW50UHJvdmlkZXIgPSBXVEZNb3ZlKHByb3ZpZGVyKTsKIH0KIAogLy8gV2Vi
Q29udGV4dFN1cHBsZW1lbnQKIAogdm9pZCBXZWJHZW9sb2NhdGlvbk1hbmFnZXJQcm94eTo6cHJv
Y2Vzc1Bvb2xEZXN0cm95ZWQoKQogewotICAgIGJvb2wgd2FzVXBkYXRpbmcgPSBpc1VwZGF0aW5n
KCk7Ci0gICAgbV91cGRhdGVSZXF1ZXN0ZXJzLmNsZWFyKCk7CisgICAgaWYgKG1fcGVyRG9tYWlu
RGF0YS5pc0VtcHR5KCkpCisgICAgICAgIHJldHVybjsKIAotICAgIEFTU0VSVCghaXNVcGRhdGlu
ZygpKTsKLSAgICBpZiAod2FzVXBkYXRpbmcpCi0gICAgICAgIG1fcHJvdmlkZXItPnN0b3BVcGRh
dGluZygqdGhpcyk7CisgICAgbV9wZXJEb21haW5EYXRhLmNsZWFyKCk7CisgICAgaWYgKG1fY2xp
ZW50UHJvdmlkZXIpCisgICAgICAgIG1fY2xpZW50UHJvdmlkZXItPnN0b3BVcGRhdGluZygqdGhp
cyk7CiB9CiAKLXZvaWQgV2ViR2VvbG9jYXRpb25NYW5hZ2VyUHJveHk6OnByb2Nlc3NEaWRDbG9z
ZShXZWJQcm9jZXNzUHJveHkqIHdlYlByb2Nlc3NQcm94eSkKK3ZvaWQgV2ViR2VvbG9jYXRpb25N
YW5hZ2VyUHJveHk6OndlYlByb2Nlc3NJc0dvaW5nQXdheShXZWJQcm9jZXNzUHJveHkmIHByb3h5
KQogewotICAgIHJlbW92ZVJlcXVlc3Rlcih3ZWJQcm9jZXNzUHJveHkpOworICAgIFZlY3RvcjxX
ZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbj4gYWZmZWN0ZWREb21haW5zOworICAgIGZvciAoYXV0
byYgW3JlZ2lzdHJhYmxlRG9tYWluLCBwZXJEb21haW5EYXRhXSA6IG1fcGVyRG9tYWluRGF0YSkg
eworICAgICAgICBpZiAocGVyRG9tYWluRGF0YS0+d2F0Y2hlcnMuY29udGFpbnMocHJveHkpKQor
ICAgICAgICAgICAgYWZmZWN0ZWREb21haW5zLmFwcGVuZChyZWdpc3RyYWJsZURvbWFpbik7Cisg
ICAgfQorICAgIGZvciAoYXV0byYgcmVnaXN0cmFibGVEb21haW4gOiBhZmZlY3RlZERvbWFpbnMp
CisgICAgICAgIHN0b3BVcGRhdGluZ1dpdGhQcm94eShwcm94eSwgcmVnaXN0cmFibGVEb21haW4p
OwogfQogCiB2b2lkIFdlYkdlb2xvY2F0aW9uTWFuYWdlclByb3h5OjpyZWZXZWJDb250ZXh0U3Vw
cGxlbWVudCgpCkBAIC05Miw4MCArMTAxLDIwNCBAQCB2b2lkIFdlYkdlb2xvY2F0aW9uTWFuYWdl
clByb3h5OjpkZXJlZldlYkNvbnRleHRTdXBwbGVtZW50KCkKIAogdm9pZCBXZWJHZW9sb2NhdGlv
bk1hbmFnZXJQcm94eTo6cHJvdmlkZXJEaWRDaGFuZ2VQb3NpdGlvbihXZWJHZW9sb2NhdGlvblBv
c2l0aW9uKiBwb3NpdGlvbikKIHsKLSAgICBtX2xhc3RQb3NpdGlvbiA9IHBvc2l0aW9uLT5jb3Jl
UG9zaXRpb24oKTsKLQotICAgIGlmICghcHJvY2Vzc1Bvb2woKSkKLSAgICAgICAgcmV0dXJuOwot
Ci0gICAgcHJvY2Vzc1Bvb2woKS0+c2VuZFRvQWxsUHJvY2Vzc2VzKE1lc3NhZ2VzOjpXZWJHZW9s
b2NhdGlvbk1hbmFnZXI6OkRpZENoYW5nZVBvc2l0aW9uKG1fbGFzdFBvc2l0aW9uLnZhbHVlKCkp
KTsKKyAgICBmb3IgKGF1dG8mIFtyZWdpc3RyYWJsZURvbWFpbiwgcGVyRG9tYWluRGF0YV0gOiBt
X3BlckRvbWFpbkRhdGEpIHsKKyAgICAgICAgcGVyRG9tYWluRGF0YS0+bGFzdFBvc2l0aW9uID0g
cG9zaXRpb24tPmNvcmVQb3NpdGlvbigpOworICAgICAgICBmb3IgKGF1dG8mIHByb2Nlc3MgOiBw
ZXJEb21haW5EYXRhLT53YXRjaGVycykKKyAgICAgICAgICAgIHByb2Nlc3Muc2VuZChNZXNzYWdl
czo6V2ViR2VvbG9jYXRpb25NYW5hZ2VyOjpEaWRDaGFuZ2VQb3NpdGlvbihyZWdpc3RyYWJsZURv
bWFpbiwgcGVyRG9tYWluRGF0YS0+bGFzdFBvc2l0aW9uLnZhbHVlKCkpLCAwKTsKKyAgICB9CiB9
CiAKIHZvaWQgV2ViR2VvbG9jYXRpb25NYW5hZ2VyUHJveHk6OnByb3ZpZGVyRGlkRmFpbFRvRGV0
ZXJtaW5lUG9zaXRpb24oY29uc3QgU3RyaW5nJiBlcnJvck1lc3NhZ2UpCiB7Ci0gICAgaWYgKCFw
cm9jZXNzUG9vbCgpKQotICAgICAgICByZXR1cm47Ci0KLSAgICBwcm9jZXNzUG9vbCgpLT5zZW5k
VG9BbGxQcm9jZXNzZXMoTWVzc2FnZXM6OldlYkdlb2xvY2F0aW9uTWFuYWdlcjo6RGlkRmFpbFRv
RGV0ZXJtaW5lUG9zaXRpb24oZXJyb3JNZXNzYWdlKSk7CisgICAgZm9yIChhdXRvJiBbcmVnaXN0
cmFibGVEb21haW4sIHBlckRvbWFpbkRhdGFdIDogbV9wZXJEb21haW5EYXRhKSB7CisgICAgICAg
IGZvciAoYXV0byYgcHJveHkgOiBwZXJEb21haW5EYXRhLT53YXRjaGVycykKKyAgICAgICAgICAg
IHByb3h5LnNlbmQoTWVzc2FnZXM6OldlYkdlb2xvY2F0aW9uTWFuYWdlcjo6RGlkRmFpbFRvRGV0
ZXJtaW5lUG9zaXRpb24ocmVnaXN0cmFibGVEb21haW4sIGVycm9yTWVzc2FnZSksIDApOworICAg
IH0KIH0KIAogI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiB2b2lkIFdlYkdlb2xvY2F0aW9uTWFu
YWdlclByb3h5OjpyZXNldFBlcm1pc3Npb25zKCkKIHsKLSAgICBwcm9jZXNzUG9vbCgpLT5zZW5k
VG9BbGxQcm9jZXNzZXMoTWVzc2FnZXM6OldlYkdlb2xvY2F0aW9uTWFuYWdlcjo6UmVzZXRQZXJt
aXNzaW9ucygpKTsKKyAgICBBU1NFUlQobV9jbGllbnRQcm92aWRlcik7CisgICAgZm9yIChhdXRv
JiBbcmVnaXN0cmFibGVEb21haW4sIHBlckRvbWFpbkRhdGFdIDogbV9wZXJEb21haW5EYXRhKSB7
CisgICAgICAgIGZvciAoYXV0byYgcHJveHkgOiBwZXJEb21haW5EYXRhLT53YXRjaGVycykKKyAg
ICAgICAgICAgIHByb3h5LnNlbmQoTWVzc2FnZXM6OldlYkdlb2xvY2F0aW9uTWFuYWdlcjo6UmVz
ZXRQZXJtaXNzaW9ucyhyZWdpc3RyYWJsZURvbWFpbiksIDApOworICAgIH0KIH0KICNlbmRpZgog
Ci12b2lkIFdlYkdlb2xvY2F0aW9uTWFuYWdlclByb3h5OjpzdGFydFVwZGF0aW5nKElQQzo6Q29u
bmVjdGlvbiYgY29ubmVjdGlvbiwgV2ViUGFnZVByb3h5SWRlbnRpZmllciBwYWdlUHJveHlJRCwg
Y29uc3QgU3RyaW5nJiBhdXRob3JpemF0aW9uVG9rZW4pCit2b2lkIFdlYkdlb2xvY2F0aW9uTWFu
YWdlclByb3h5OjpzdGFydFVwZGF0aW5nKElQQzo6Q29ubmVjdGlvbiYgY29ubmVjdGlvbiwgY29u
c3QgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4mIHJlZ2lzdHJhYmxlRG9tYWluLCBXZWJQYWdl
UHJveHlJZGVudGlmaWVyIHBhZ2VQcm94eUlELCBjb25zdCBTdHJpbmcmIGF1dGhvcml6YXRpb25U
b2tlbiwgYm9vbCBlbmFibGVIaWdoQWNjdXJhY3kpCit7CisgICAgc3RhcnRVcGRhdGluZ1dpdGhQ
cm94eShjb25uZWN0aW9uVG9XZWJQcm9jZXNzUHJveHkoY29ubmVjdGlvbiksIHJlZ2lzdHJhYmxl
RG9tYWluLCBwYWdlUHJveHlJRCwgYXV0aG9yaXphdGlvblRva2VuLCBlbmFibGVIaWdoQWNjdXJh
Y3kpOworfQorCit2b2lkIFdlYkdlb2xvY2F0aW9uTWFuYWdlclByb3h5OjpzdGFydFVwZGF0aW5n
V2l0aFByb3h5KFdlYlByb2Nlc3NQcm94eSYgcHJveHksIGNvbnN0IFdlYkNvcmU6OlJlZ2lzdHJh
YmxlRG9tYWluJiByZWdpc3RyYWJsZURvbWFpbiwgV2ViUGFnZVByb3h5SWRlbnRpZmllciBwYWdl
UHJveHlJRCwgY29uc3QgU3RyaW5nJiBhdXRob3JpemF0aW9uVG9rZW4sIGJvb2wgZW5hYmxlSGln
aEFjY3VyYWN5KQogewogICAgIGF1dG8qIHBhZ2UgPSBXZWJQcm9jZXNzUHJveHk6OndlYlBhZ2Uo
cGFnZVByb3h5SUQpOwotICAgIE1FU1NBR0VfQ0hFQ0socGFnZSk7CisgICAgTUVTU0FHRV9DSEVD
Syhwcm94eS5jb25uZWN0aW9uKCksIHBhZ2UpOwogCiAgICAgYXV0byBpc1ZhbGlkQXV0aG9yaXph
dGlvblRva2VuID0gcGFnZS0+Z2VvbG9jYXRpb25QZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXIoKS5p
c1ZhbGlkQXV0aG9yaXphdGlvblRva2VuKGF1dGhvcml6YXRpb25Ub2tlbik7Ci0gICAgTUVTU0FH
RV9DSEVDSyhpc1ZhbGlkQXV0aG9yaXphdGlvblRva2VuKTsKKyAgICBNRVNTQUdFX0NIRUNLKHBy
b3h5LmNvbm5lY3Rpb24oKSwgaXNWYWxpZEF1dGhvcml6YXRpb25Ub2tlbik7CisKKyAgICBhdXRv
JiBwZXJEb21haW5EYXRhID0gKm1fcGVyRG9tYWluRGF0YS5lbnN1cmUocmVnaXN0cmFibGVEb21h
aW4sIFtdIHsKKyAgICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8UGVyRG9tYWluRGF0YT4oKTsKKyAg
ICB9KS5pdGVyYXRvci0+dmFsdWU7CisKKyAgICBib29sIHdhc1VwZGF0aW5nID0gaXNVcGRhdGlu
ZyhwZXJEb21haW5EYXRhKTsKKyAgICBib29sIGhpZ2hBY2N1cmFjeVdhc0VuYWJsZWQgPSBpc0hp
Z2hBY2N1cmFjeUVuYWJsZWQocGVyRG9tYWluRGF0YSk7CisKKyAgICBwZXJEb21haW5EYXRhLndh
dGNoZXJzLmFkZChwcm94eSk7CisgICAgaWYgKGVuYWJsZUhpZ2hBY2N1cmFjeSkKKyAgICAgICAg
cGVyRG9tYWluRGF0YS53YXRjaGVyc05lZWRpbmdIaWdoQWNjdXJhY3kuYWRkKHByb3h5KTsKIAot
ICAgIGJvb2wgd2FzVXBkYXRpbmcgPSBpc1VwZGF0aW5nKCk7Ci0gICAgbV91cGRhdGVSZXF1ZXN0
ZXJzLmFkZCgmY29ubmVjdGlvbi5jbGllbnQoKSk7CiAgICAgaWYgKCF3YXNVcGRhdGluZykgewot
ICAgICAgICBtX3Byb3ZpZGVyLT5zZXRFbmFibGVIaWdoQWNjdXJhY3koKnRoaXMsIGlzSGlnaEFj
Y3VyYWN5RW5hYmxlZCgpKTsKLSAgICAgICAgbV9wcm92aWRlci0+c3RhcnRVcGRhdGluZygqdGhp
cyk7Ci0gICAgfSBlbHNlIGlmIChtX2xhc3RQb3NpdGlvbikKLSAgICAgICAgY29ubmVjdGlvbi5z
ZW5kKE1lc3NhZ2VzOjpXZWJHZW9sb2NhdGlvbk1hbmFnZXI6OkRpZENoYW5nZVBvc2l0aW9uKG1f
bGFzdFBvc2l0aW9uLnZhbHVlKCkpLCAwKTsKKyAgICAgICAgcHJvdmlkZXJTdGFydFVwZGF0aW5n
KHBlckRvbWFpbkRhdGEsIHJlZ2lzdHJhYmxlRG9tYWluKTsKKyAgICAgICAgcmV0dXJuOworICAg
IH0KKyAgICBpZiAoIWhpZ2hBY2N1cmFjeVdhc0VuYWJsZWQgJiYgZW5hYmxlSGlnaEFjY3VyYWN5
KQorICAgICAgICBwcm92aWRlclNldEVuYWJsZWRIaWdoQWNjdXJhY3kocGVyRG9tYWluRGF0YSwg
ZW5hYmxlSGlnaEFjY3VyYWN5KTsKKworICAgIGlmIChwZXJEb21haW5EYXRhLmxhc3RQb3NpdGlv
bikKKyAgICAgICAgcHJveHkuc2VuZChNZXNzYWdlczo6V2ViR2VvbG9jYXRpb25NYW5hZ2VyOjpE
aWRDaGFuZ2VQb3NpdGlvbihyZWdpc3RyYWJsZURvbWFpbiwgcGVyRG9tYWluRGF0YS5sYXN0UG9z
aXRpb24udmFsdWUoKSksIDApOwogfQogCi12b2lkIFdlYkdlb2xvY2F0aW9uTWFuYWdlclByb3h5
OjpzdG9wVXBkYXRpbmcoSVBDOjpDb25uZWN0aW9uJiBjb25uZWN0aW9uKQordm9pZCBXZWJHZW9s
b2NhdGlvbk1hbmFnZXJQcm94eTo6c3RvcFVwZGF0aW5nKElQQzo6Q29ubmVjdGlvbiYgY29ubmVj
dGlvbiwgY29uc3QgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4mIHJlZ2lzdHJhYmxlRG9tYWlu
KQogewotICAgIHJlbW92ZVJlcXVlc3RlcigmY29ubmVjdGlvbi5jbGllbnQoKSk7CisgICAgc3Rv
cFVwZGF0aW5nV2l0aFByb3h5KGNvbm5lY3Rpb25Ub1dlYlByb2Nlc3NQcm94eShjb25uZWN0aW9u
KSwgcmVnaXN0cmFibGVEb21haW4pOwogfQogCi12b2lkIFdlYkdlb2xvY2F0aW9uTWFuYWdlclBy
b3h5OjpyZW1vdmVSZXF1ZXN0ZXIoY29uc3QgSVBDOjpDb25uZWN0aW9uOjpDbGllbnQqIGNsaWVu
dCkKK3ZvaWQgV2ViR2VvbG9jYXRpb25NYW5hZ2VyUHJveHk6OnN0b3BVcGRhdGluZ1dpdGhQcm94
eShXZWJQcm9jZXNzUHJveHkmIHByb3h5LCBjb25zdCBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFp
biYgcmVnaXN0cmFibGVEb21haW4pCiB7Ci0gICAgYm9vbCB3YXNVcGRhdGluZyA9IGlzVXBkYXRp
bmcoKTsKLSAgICBib29sIGhpZ2hBY2N1cmFjeVdhc0VuYWJsZWQgPSBpc0hpZ2hBY2N1cmFjeUVu
YWJsZWQoKTsKKyAgICBhdXRvIGl0ID0gbV9wZXJEb21haW5EYXRhLmZpbmQocmVnaXN0cmFibGVE
b21haW4pOworICAgIGlmIChpdCA9PSBtX3BlckRvbWFpbkRhdGEuZW5kKCkpCisgICAgICAgIHJl
dHVybjsKKworICAgIGF1dG8mIHBlckRvbWFpbkRhdGEgPSAqaXQtPnZhbHVlOworICAgIGJvb2wg
d2FzVXBkYXRpbmcgPSBpc1VwZGF0aW5nKHBlckRvbWFpbkRhdGEpOworICAgIGJvb2wgaGlnaEFj
Y3VyYWN5V2FzRW5hYmxlZCA9IGlzSGlnaEFjY3VyYWN5RW5hYmxlZChwZXJEb21haW5EYXRhKTsK
IAotICAgIG1faGlnaEFjY3VyYWN5UmVxdWVzdGVycy5yZW1vdmUoY2xpZW50KTsKLSAgICBtX3Vw
ZGF0ZVJlcXVlc3RlcnMucmVtb3ZlKGNsaWVudCk7CisgICAgcGVyRG9tYWluRGF0YS53YXRjaGVy
cy5yZW1vdmUocHJveHkpOworICAgIHBlckRvbWFpbkRhdGEud2F0Y2hlcnNOZWVkaW5nSGlnaEFj
Y3VyYWN5LnJlbW92ZShwcm94eSk7CiAKLSAgICBpZiAod2FzVXBkYXRpbmcgJiYgIWlzVXBkYXRp
bmcoKSkKLSAgICAgICAgbV9wcm92aWRlci0+c3RvcFVwZGF0aW5nKCp0aGlzKTsKKyAgICBpZiAo
d2FzVXBkYXRpbmcgJiYgIWlzVXBkYXRpbmcocGVyRG9tYWluRGF0YSkpCisgICAgICAgIHByb3Zp
ZGVyU3RvcFVwZGF0aW5nKHBlckRvbWFpbkRhdGEpOwogICAgIGVsc2UgewotICAgICAgICBib29s
IGhpZ2hBY2N1cmFjeVNob3VsZEJlRW5hYmxlZCA9IGlzSGlnaEFjY3VyYWN5RW5hYmxlZCgpOwor
ICAgICAgICBib29sIGhpZ2hBY2N1cmFjeVNob3VsZEJlRW5hYmxlZCA9IGlzSGlnaEFjY3VyYWN5
RW5hYmxlZChwZXJEb21haW5EYXRhKTsKICAgICAgICAgaWYgKGhpZ2hBY2N1cmFjeVNob3VsZEJl
RW5hYmxlZCAhPSBoaWdoQWNjdXJhY3lXYXNFbmFibGVkKQotICAgICAgICAgICAgbV9wcm92aWRl
ci0+c2V0RW5hYmxlSGlnaEFjY3VyYWN5KCp0aGlzLCBoaWdoQWNjdXJhY3lTaG91bGRCZUVuYWJs
ZWQpOworICAgICAgICAgICAgcHJvdmlkZXJTZXRFbmFibGVkSGlnaEFjY3VyYWN5KHBlckRvbWFp
bkRhdGEsIGhpZ2hBY2N1cmFjeVNob3VsZEJlRW5hYmxlZCk7CiAgICAgfQorCisgICAgaWYgKHBl
ckRvbWFpbkRhdGEud2F0Y2hlcnMuY29tcHV0ZXNFbXB0eSgpICYmIHBlckRvbWFpbkRhdGEud2F0
Y2hlcnNOZWVkaW5nSGlnaEFjY3VyYWN5LmNvbXB1dGVzRW1wdHkoKSkKKyAgICAgICAgbV9wZXJE
b21haW5EYXRhLnJlbW92ZShpdCk7Cit9CisKK3ZvaWQgV2ViR2VvbG9jYXRpb25NYW5hZ2VyUHJv
eHk6OnNldEVuYWJsZUhpZ2hBY2N1cmFjeShJUEM6OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24sIGNv
bnN0IFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluJiByZWdpc3RyYWJsZURvbWFpbiwgYm9vbCBl
bmFibGVkKQoreworICAgIHNldEVuYWJsZUhpZ2hBY2N1cmFjeVdpdGhQcm94eShjb25uZWN0aW9u
VG9XZWJQcm9jZXNzUHJveHkoY29ubmVjdGlvbiksIHJlZ2lzdHJhYmxlRG9tYWluLCBlbmFibGVk
KTsKIH0KIAotdm9pZCBXZWJHZW9sb2NhdGlvbk1hbmFnZXJQcm94eTo6c2V0RW5hYmxlSGlnaEFj
Y3VyYWN5KElQQzo6Q29ubmVjdGlvbiYgY29ubmVjdGlvbiwgYm9vbCBlbmFibGVkKQordm9pZCBX
ZWJHZW9sb2NhdGlvbk1hbmFnZXJQcm94eTo6c2V0RW5hYmxlSGlnaEFjY3VyYWN5V2l0aFByb3h5
KFdlYlByb2Nlc3NQcm94eSYgcHJveHksIGNvbnN0IFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWlu
JiByZWdpc3RyYWJsZURvbWFpbiwgYm9vbCBlbmFibGVkKQogewotICAgIGJvb2wgaGlnaEFjY3Vy
YWN5V2FzRW5hYmxlZCA9IGlzSGlnaEFjY3VyYWN5RW5hYmxlZCgpOworICAgIGF1dG8gaXQgPSBt
X3BlckRvbWFpbkRhdGEuZmluZChyZWdpc3RyYWJsZURvbWFpbik7CisgICAgQVNTRVJUKGl0ICE9
IG1fcGVyRG9tYWluRGF0YS5lbmQoKSk7CisgICAgaWYgKGl0ID09IG1fcGVyRG9tYWluRGF0YS5l
bmQoKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgYXV0byYgcGVyRG9tYWluRGF0YSA9ICppdC0+
dmFsdWU7CisgICAgYm9vbCBoaWdoQWNjdXJhY3lXYXNFbmFibGVkID0gaXNIaWdoQWNjdXJhY3lF
bmFibGVkKHBlckRvbWFpbkRhdGEpOwogCiAgICAgaWYgKGVuYWJsZWQpCi0gICAgICAgIG1faGln
aEFjY3VyYWN5UmVxdWVzdGVycy5hZGQoJmNvbm5lY3Rpb24uY2xpZW50KCkpOworICAgICAgICBw
ZXJEb21haW5EYXRhLndhdGNoZXJzTmVlZGluZ0hpZ2hBY2N1cmFjeS5hZGQocHJveHkpOwogICAg
IGVsc2UKLSAgICAgICAgbV9oaWdoQWNjdXJhY3lSZXF1ZXN0ZXJzLnJlbW92ZSgmY29ubmVjdGlv
bi5jbGllbnQoKSk7CisgICAgICAgIHBlckRvbWFpbkRhdGEud2F0Y2hlcnNOZWVkaW5nSGlnaEFj
Y3VyYWN5LnJlbW92ZShwcm94eSk7CisKKyAgICBpZiAoaXNVcGRhdGluZyhwZXJEb21haW5EYXRh
KSAmJiBoaWdoQWNjdXJhY3lXYXNFbmFibGVkICE9IGVuYWJsZWQpCisgICAgICAgIHByb3ZpZGVy
U2V0RW5hYmxlZEhpZ2hBY2N1cmFjeShwZXJEb21haW5EYXRhLCBlbmFibGVkKTsKK30KKworYm9v
bCBXZWJHZW9sb2NhdGlvbk1hbmFnZXJQcm94eTo6aXNVcGRhdGluZyhjb25zdCBQZXJEb21haW5E
YXRhJiBwZXJEb21haW5EYXRhKSBjb25zdAoreworI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCisg
ICAgaWYgKCFtX2NsaWVudFByb3ZpZGVyKQorICAgICAgICByZXR1cm4gIXBlckRvbWFpbkRhdGEu
d2F0Y2hlcnMuY29tcHV0ZXNFbXB0eSgpOworI2Vsc2UKKyAgICBVTlVTRURfUEFSQU0ocGVyRG9t
YWluRGF0YSk7CisjZW5kaWYKKworICAgIGZvciAoYXV0byYgcGVyRG9tYWluRGF0YSA6IG1fcGVy
RG9tYWluRGF0YS52YWx1ZXMoKSkgeworICAgICAgICBpZiAoIXBlckRvbWFpbkRhdGEtPndhdGNo
ZXJzLmNvbXB1dGVzRW1wdHkoKSkKKyAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgIH0KKyAg
ICByZXR1cm4gZmFsc2U7Cit9CisKKworYm9vbCBXZWJHZW9sb2NhdGlvbk1hbmFnZXJQcm94eTo6
aXNIaWdoQWNjdXJhY3lFbmFibGVkKGNvbnN0IFBlckRvbWFpbkRhdGEmIHBlckRvbWFpbkRhdGEp
IGNvbnN0Cit7CisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKKyAgICBpZiAoIW1fY2xpZW50UHJv
dmlkZXIpCisgICAgICAgIHJldHVybiAhcGVyRG9tYWluRGF0YS53YXRjaGVyc05lZWRpbmdIaWdo
QWNjdXJhY3kuY29tcHV0ZXNFbXB0eSgpOworI2Vsc2UKKyAgICBVTlVTRURfUEFSQU0ocGVyRG9t
YWluRGF0YSk7CisjZW5kaWYKKworICAgIGZvciAoYXV0byYgZGF0YSA6IG1fcGVyRG9tYWluRGF0
YS52YWx1ZXMoKSkgeworICAgICAgICBpZiAoIWRhdGEtPndhdGNoZXJzTmVlZGluZ0hpZ2hBY2N1
cmFjeS5jb21wdXRlc0VtcHR5KCkpCisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9Cisg
ICAgcmV0dXJuIGZhbHNlOworfQorCit2b2lkIFdlYkdlb2xvY2F0aW9uTWFuYWdlclByb3h5Ojpw
cm92aWRlclN0YXJ0VXBkYXRpbmcoUGVyRG9tYWluRGF0YSYgcGVyRG9tYWluRGF0YSwgY29uc3Qg
V2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4mIHJlZ2lzdHJhYmxlRG9tYWluKQoreworI2lmIFBM
QVRGT1JNKElPU19GQU1JTFkpCisgICAgaWYgKCFtX2NsaWVudFByb3ZpZGVyKSB7CisgICAgICAg
IEFTU0VSVCghcGVyRG9tYWluRGF0YS5wcm92aWRlcik7CisgICAgICAgIHBlckRvbWFpbkRhdGEu
cHJvdmlkZXIgPSBtYWtlVW5pcXVlPFdlYkNvcmU6OkNvcmVMb2NhdGlvbkdlb2xvY2F0aW9uUHJv
dmlkZXI+KHJlZ2lzdHJhYmxlRG9tYWluLCAqdGhpcyk7CisgICAgICAgIHBlckRvbWFpbkRhdGEu
cHJvdmlkZXItPnNldEVuYWJsZUhpZ2hBY2N1cmFjeSghcGVyRG9tYWluRGF0YS53YXRjaGVyc05l
ZWRpbmdIaWdoQWNjdXJhY3kuY29tcHV0ZXNFbXB0eSgpKTsKKyAgICAgICAgcGVyRG9tYWluRGF0
YS5wcm92aWRlci0+c3RhcnQoKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyNlbHNlCisgICAg
VU5VU0VEX1BBUkFNKHJlZ2lzdHJhYmxlRG9tYWluKTsKKyAgICBpZiAoIW1fY2xpZW50UHJvdmlk
ZXIpCisgICAgICAgIHJldHVybjsKKyNlbmRpZgorCisgICAgbV9jbGllbnRQcm92aWRlci0+c2V0
RW5hYmxlSGlnaEFjY3VyYWN5KCp0aGlzLCBpc0hpZ2hBY2N1cmFjeUVuYWJsZWQocGVyRG9tYWlu
RGF0YSkpOworICAgIG1fY2xpZW50UHJvdmlkZXItPnN0YXJ0VXBkYXRpbmcoKnRoaXMpOworfQor
Cit2b2lkIFdlYkdlb2xvY2F0aW9uTWFuYWdlclByb3h5Ojpwcm92aWRlclN0b3BVcGRhdGluZyhQ
ZXJEb21haW5EYXRhJiBwZXJEb21haW5EYXRhKQoreworI2lmIFBMQVRGT1JNKElPU19GQU1JTFkp
CisgICAgaWYgKCFtX2NsaWVudFByb3ZpZGVyKSB7CisgICAgICAgIHBlckRvbWFpbkRhdGEucHJv
dmlkZXItPnN0b3AoKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyNlbHNlCisgICAgVU5VU0VE
X1BBUkFNKHBlckRvbWFpbkRhdGEpOworICAgIGlmICghbV9jbGllbnRQcm92aWRlcikKKyAgICAg
ICAgcmV0dXJuOworI2VuZGlmCisKKyAgICBtX2NsaWVudFByb3ZpZGVyLT5zdG9wVXBkYXRpbmco
KnRoaXMpOworfQorCit2b2lkIFdlYkdlb2xvY2F0aW9uTWFuYWdlclByb3h5Ojpwcm92aWRlclNl
dEVuYWJsZWRIaWdoQWNjdXJhY3koUGVyRG9tYWluRGF0YSYgcGVyRG9tYWluRGF0YSwgYm9vbCBl
bmFibGVkKQoreworI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCisgICAgaWYgKCFtX2NsaWVudFBy
b3ZpZGVyKSB7CisgICAgICAgIHBlckRvbWFpbkRhdGEucHJvdmlkZXItPnNldEVuYWJsZUhpZ2hB
Y2N1cmFjeShlbmFibGVkKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyNlbHNlCisgICAgVU5V
U0VEX1BBUkFNKHBlckRvbWFpbkRhdGEpOworICAgIGlmICghbV9jbGllbnRQcm92aWRlcikKKyAg
ICAgICAgcmV0dXJuOworI2VuZGlmCiAKLSAgICBib29sIGhpZ2hBY2N1cmFjeVNob3VsZEJlRW5h
YmxlZCA9IGlzSGlnaEFjY3VyYWN5RW5hYmxlZCgpOwotICAgIGlmIChpc1VwZGF0aW5nKCkgJiYg
aGlnaEFjY3VyYWN5V2FzRW5hYmxlZCAhPSBoaWdoQWNjdXJhY3lTaG91bGRCZUVuYWJsZWQpCi0g
ICAgICAgIG1fcHJvdmlkZXItPnNldEVuYWJsZUhpZ2hBY2N1cmFjeSgqdGhpcywgaGlnaEFjY3Vy
YWN5U2hvdWxkQmVFbmFibGVkKTsKKyAgICBtX2NsaWVudFByb3ZpZGVyLT5zZXRFbmFibGVIaWdo
QWNjdXJhY3koKnRoaXMsIGVuYWJsZWQpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkdlb2xvY2F0aW9uTWFuYWdlclBy
b3h5LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJHZW9sb2NhdGlvbk1hbmFnZXJQcm94
eS5oCmluZGV4IDc0OTM2ZTQ1YTBkODM4M2E4YjRiM2Q2ZDU3OGM5YmQyMmJlM2ZhNWUuLmY5YTBj
YTY0OTc4YTQ5YzkxMDAwYWRmMWM0Y2I0YTAxMTI4N2UxMmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL1dlYkdlb2xvY2F0aW9uTWFuYWdlclByb3h5LmgKKysrIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvV2ViR2VvbG9jYXRpb25NYW5hZ2VyUHJveHkuaApAQCAtMSw1ICsx
LDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTEsIDIwMTIsIDIwMTMgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDExLTIwMjIgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBA
IC0zMSw5ICszMSwxNSBAQAogI2luY2x1ZGUgIldlYkNvbnRleHRTdXBwbGVtZW50LmgiCiAjaW5j
bHVkZSAiV2ViUGFnZVByb3h5SWRlbnRpZmllci5oIgogI2luY2x1ZGUgPFdlYkNvcmUvR2VvbG9j
YXRpb25Qb3NpdGlvbkRhdGEuaD4KLSNpbmNsdWRlIDx3dGYvSGFzaFNldC5oPgorI2luY2x1ZGUg
PFdlYkNvcmUvUmVnaXN0cmFibGVEb21haW4uaD4KKyNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgor
I2luY2x1ZGUgPHd0Zi9XZWFrSGFzaFNldC5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmlu
Zy5oPgogCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKKyNpbmNsdWRlIDxXZWJDb3JlL0NvcmVM
b2NhdGlvbkdlb2xvY2F0aW9uUHJvdmlkZXIuaD4KKyNlbmRpZgorCiBuYW1lc3BhY2UgQVBJIHsK
IGNsYXNzIEdlb2xvY2F0aW9uUHJvdmlkZXI7CiB9CkBAIC00MywxMSArNDksMTYgQEAgbmFtZXNw
YWNlIFdlYktpdCB7CiBjbGFzcyBXZWJHZW9sb2NhdGlvblBvc2l0aW9uOwogY2xhc3MgV2ViUHJv
Y2Vzc1Bvb2w7CiAKLWNsYXNzIFdlYkdlb2xvY2F0aW9uTWFuYWdlclByb3h5IDogcHVibGljIEFQ
STo6T2JqZWN0SW1wbDxBUEk6Ok9iamVjdDo6VHlwZTo6R2VvbG9jYXRpb25NYW5hZ2VyPiwgcHVi
bGljIFdlYkNvbnRleHRTdXBwbGVtZW50LCBwcml2YXRlIElQQzo6TWVzc2FnZVJlY2VpdmVyIHsK
K2NsYXNzIFdlYkdlb2xvY2F0aW9uTWFuYWdlclByb3h5IDogcHVibGljIEFQSTo6T2JqZWN0SW1w
bDxBUEk6Ok9iamVjdDo6VHlwZTo6R2VvbG9jYXRpb25NYW5hZ2VyPiwgcHVibGljIFdlYkNvbnRl
eHRTdXBwbGVtZW50LCBwcml2YXRlIElQQzo6TWVzc2FnZVJlY2VpdmVyCisjaWYgUExBVEZPUk0o
SU9TX0ZBTUlMWSkKKyAgICAsIHB1YmxpYyBXZWJDb3JlOjpDb3JlTG9jYXRpb25HZW9sb2NhdGlv
blByb3ZpZGVyOjpDbGllbnQKKyNlbmRpZgorewogcHVibGljOgogICAgIHN0YXRpYyBjb25zdCBj
aGFyKiBzdXBwbGVtZW50TmFtZSgpOwogCiAgICAgc3RhdGljIFJlZjxXZWJHZW9sb2NhdGlvbk1h
bmFnZXJQcm94eT4gY3JlYXRlKFdlYlByb2Nlc3NQb29sKik7CisgICAgfldlYkdlb2xvY2F0aW9u
TWFuYWdlclByb3h5KCk7CiAKICAgICB2b2lkIHNldFByb3ZpZGVyKHN0ZDo6dW5pcXVlX3B0cjxB
UEk6Okdlb2xvY2F0aW9uUHJvdmlkZXI+JiYpOwogCkBAIC01NiwzNiArNjcsNTkgQEAgcHVibGlj
OgogI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAgdm9pZCByZXNldFBlcm1pc3Npb25zKCk7
CiAjZW5kaWYKLSAgICBjb25zdCBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6Okdlb2xvY2F0aW9uUG9z
aXRpb25EYXRhPiYgbGFzdFBvc2l0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9sYXN0UG9zaXRpb247
IH0KIAogICAgIHVzaW5nIEFQSTo6T2JqZWN0OjpyZWY7CiAgICAgdXNpbmcgQVBJOjpPYmplY3Q6
OmRlcmVmOwogCisgICAgdm9pZCB3ZWJQcm9jZXNzSXNHb2luZ0F3YXkoV2ViUHJvY2Vzc1Byb3h5
Jik7CisKIHByaXZhdGU6CiAgICAgZXhwbGljaXQgV2ViR2VvbG9jYXRpb25NYW5hZ2VyUHJveHko
V2ViUHJvY2Vzc1Bvb2wqKTsKIAogICAgIC8vIFdlYkNvbnRleHRTdXBwbGVtZW50CiAgICAgdm9p
ZCBwcm9jZXNzUG9vbERlc3Ryb3llZCgpIG92ZXJyaWRlOwotICAgIHZvaWQgcHJvY2Vzc0RpZENs
b3NlKFdlYlByb2Nlc3NQcm94eSopIG92ZXJyaWRlOwogICAgIHZvaWQgcmVmV2ViQ29udGV4dFN1
cHBsZW1lbnQoKSBvdmVycmlkZTsKICAgICB2b2lkIGRlcmVmV2ViQ29udGV4dFN1cHBsZW1lbnQo
KSBvdmVycmlkZTsKIAogICAgIC8vIElQQzo6TWVzc2FnZVJlY2VpdmVyCiAgICAgdm9pZCBkaWRS
ZWNlaXZlTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6OkRlY29kZXImKSBvdmVycmlkZTsK
IAotICAgIGJvb2wgaXNVcGRhdGluZygpIGNvbnN0IHsgcmV0dXJuICFtX3VwZGF0ZVJlcXVlc3Rl
cnMuaXNFbXB0eSgpOyB9Ci0gICAgYm9vbCBpc0hpZ2hBY2N1cmFjeUVuYWJsZWQoKSBjb25zdCB7
IHJldHVybiAhbV9oaWdoQWNjdXJhY3lSZXF1ZXN0ZXJzLmlzRW1wdHkoKTsgfQorICAgIC8vIElQ
QyBtZXNzYWdlcy4KKyAgICB2b2lkIHN0YXJ0VXBkYXRpbmcoSVBDOjpDb25uZWN0aW9uJiwgY29u
c3QgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4mLCBXZWJQYWdlUHJveHlJZGVudGlmaWVyLCBj
b25zdCBTdHJpbmcmIGF1dGhvcml6YXRpb25Ub2tlbiwgYm9vbCBlbmFibGVIaWdoQWNjdXJhY3kp
OworICAgIHZvaWQgc3RvcFVwZGF0aW5nKElQQzo6Q29ubmVjdGlvbiYsIGNvbnN0IFdlYkNvcmU6
OlJlZ2lzdHJhYmxlRG9tYWluJik7CisgICAgdm9pZCBzZXRFbmFibGVIaWdoQWNjdXJhY3koSVBD
OjpDb25uZWN0aW9uJiwgY29uc3QgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4mLCBib29sKTsK
KworICAgIHZvaWQgc3RhcnRVcGRhdGluZ1dpdGhQcm94eShXZWJQcm9jZXNzUHJveHkmLCBjb25z
dCBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiYsIFdlYlBhZ2VQcm94eUlkZW50aWZpZXIsIGNv
bnN0IFN0cmluZyYgYXV0aG9yaXphdGlvblRva2VuLCBib29sIGVuYWJsZUhpZ2hBY2N1cmFjeSk7
CisgICAgdm9pZCBzdG9wVXBkYXRpbmdXaXRoUHJveHkoV2ViUHJvY2Vzc1Byb3h5JiwgY29uc3Qg
V2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4mKTsKKyAgICB2b2lkIHNldEVuYWJsZUhpZ2hBY2N1
cmFjeVdpdGhQcm94eShXZWJQcm9jZXNzUHJveHkmLCBjb25zdCBXZWJDb3JlOjpSZWdpc3RyYWJs
ZURvbWFpbiYsIGJvb2wpOwogCi0gICAgdm9pZCBzdGFydFVwZGF0aW5nKElQQzo6Q29ubmVjdGlv
biYsIFdlYlBhZ2VQcm94eUlkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgYXV0aG9yaXphdGlvblRv
a2VuKTsKLSAgICB2b2lkIHN0b3BVcGRhdGluZyhJUEM6OkNvbm5lY3Rpb24mKTsKLSAgICB2b2lk
IHJlbW92ZVJlcXVlc3Rlcihjb25zdCBJUEM6OkNvbm5lY3Rpb246OkNsaWVudCopOwotICAgIHZv
aWQgc2V0RW5hYmxlSGlnaEFjY3VyYWN5KElQQzo6Q29ubmVjdGlvbiYsIGJvb2wpOworI2lmIFBM
QVRGT1JNKElPU19GQU1JTFkpCisgICAgLy8gQ29yZUxvY2F0aW9uR2VvbG9jYXRpb25Qcm92aWRl
cjo6Q2xpZW50CisgICAgdm9pZCBwb3NpdGlvbkNoYW5nZWQoY29uc3QgU3RyaW5nJiB3ZWJzaXRl
SWRlbnRpZmllciwgV2ViQ29yZTo6R2VvbG9jYXRpb25Qb3NpdGlvbkRhdGEmJikgZmluYWw7Cisg
ICAgdm9pZCBlcnJvck9jY3VycmVkKGNvbnN0IFN0cmluZyYgd2Vic2l0ZUlkZW50aWZpZXIsIGNv
bnN0IFN0cmluZyYgZXJyb3JNZXNzYWdlKSBmaW5hbDsKKyAgICB2b2lkIHJlc2V0R2VvbG9jYXRp
b24oY29uc3QgU3RyaW5nJiB3ZWJzaXRlSWRlbnRpZmllcikgZmluYWw7CisjZW5kaWYKKworICAg
IHN0cnVjdCBQZXJEb21haW5EYXRhIHsKKyAgICAgICAgV1RGX01BS0VfU1RSVUNUX0ZBU1RfQUxM
T0NBVEVEOworICAgICAgICBXZWFrSGFzaFNldDxXZWJQcm9jZXNzUHJveHk+IHdhdGNoZXJzOwor
ICAgICAgICBXZWFrSGFzaFNldDxXZWJQcm9jZXNzUHJveHk+IHdhdGNoZXJzTmVlZGluZ0hpZ2hB
Y2N1cmFjeTsKKyAgICAgICAgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpHZW9sb2NhdGlvblBvc2l0
aW9uRGF0YT4gbGFzdFBvc2l0aW9uOworCisgICAgICAgIC8vIEZJWE1FOiBVc2UgZm9yIGFsbCBD
b2NvYSBwb3J0cy4KKyNpZiBQTEFURk9STShJT1NfRkFNSUxZKQorICAgICAgICBzdGQ6OnVuaXF1
ZV9wdHI8V2ViQ29yZTo6Q29yZUxvY2F0aW9uR2VvbG9jYXRpb25Qcm92aWRlcj4gcHJvdmlkZXI7
CisjZW5kaWYKKyAgICB9OwogCi0gICAgSGFzaFNldDxjb25zdCBJUEM6OkNvbm5lY3Rpb246OkNs
aWVudCo+IG1fdXBkYXRlUmVxdWVzdGVyczsKLSAgICBIYXNoU2V0PGNvbnN0IElQQzo6Q29ubmVj
dGlvbjo6Q2xpZW50Kj4gbV9oaWdoQWNjdXJhY3lSZXF1ZXN0ZXJzOworICAgIGJvb2wgaXNVcGRh
dGluZyhjb25zdCBQZXJEb21haW5EYXRhJikgY29uc3Q7CisgICAgYm9vbCBpc0hpZ2hBY2N1cmFj
eUVuYWJsZWQoY29uc3QgUGVyRG9tYWluRGF0YSYpIGNvbnN0OworICAgIHZvaWQgcHJvdmlkZXJT
dGFydFVwZGF0aW5nKFBlckRvbWFpbkRhdGEmLCBjb25zdCBXZWJDb3JlOjpSZWdpc3RyYWJsZURv
bWFpbiYpOworICAgIHZvaWQgcHJvdmlkZXJTdG9wVXBkYXRpbmcoUGVyRG9tYWluRGF0YSYpOwor
ICAgIHZvaWQgcHJvdmlkZXJTZXRFbmFibGVkSGlnaEFjY3VyYWN5KFBlckRvbWFpbkRhdGEmLCBi
b29sIGVuYWJsZWQpOwogCi0gICAgc3RkOjp1bmlxdWVfcHRyPEFQSTo6R2VvbG9jYXRpb25Qcm92
aWRlcj4gbV9wcm92aWRlcjsKLSAgICBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6Okdlb2xvY2F0aW9u
UG9zaXRpb25EYXRhPiBtX2xhc3RQb3NpdGlvbjsKKyAgICBIYXNoTWFwPFdlYkNvcmU6OlJlZ2lz
dHJhYmxlRG9tYWluLCBzdGQ6OnVuaXF1ZV9wdHI8UGVyRG9tYWluRGF0YT4+IG1fcGVyRG9tYWlu
RGF0YTsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8QVBJOjpHZW9sb2NhdGlvblByb3ZpZGVyPiBtX2Ns
aWVudFByb3ZpZGVyOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJHZW9sb2NhdGlvbk1hbmFnZXJQcm94eS5tZXNzYWdl
cy5pbiBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkdlb2xvY2F0aW9uTWFuYWdlclByb3h5
Lm1lc3NhZ2VzLmluCmluZGV4IGU1ZTljMjdkMTRhNWZiNzI2ZmNjMmM4MWZmM2UxNjVlYTNlODQw
YmUuLjkwNDFhOTBjMjUwZjhhZGQ2OGJiMTNiM2FiYjU0YmViNjZjYjJkMjcgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkdlb2xvY2F0aW9uTWFuYWdlclByb3h5Lm1lc3Nh
Z2VzLmluCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkdlb2xvY2F0aW9uTWFuYWdl
clByb3h5Lm1lc3NhZ2VzLmluCkBAIC0yMSw3ICsyMSw3IEBACiAjIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAKIG1l
c3NhZ2VzIC0+IFdlYkdlb2xvY2F0aW9uTWFuYWdlclByb3h5IHsKLSAgICBTdGFydFVwZGF0aW5n
KFdlYktpdDo6V2ViUGFnZVByb3h5SWRlbnRpZmllciBwYWdlUHJveHlJRCwgU3RyaW5nIGF1dGhv
cml6YXRpb25Ub2tlbikgV2FudHNDb25uZWN0aW9uCi0gICAgU3RvcFVwZGF0aW5nKCkgV2FudHND
b25uZWN0aW9uCi0gICAgU2V0RW5hYmxlSGlnaEFjY3VyYWN5KGJvb2wgZW5hYmxlZCkgV2FudHND
b25uZWN0aW9uCisgICAgU3RhcnRVcGRhdGluZyhXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiBy
ZWdpc3RyYWJsZURvbWFpbiwgV2ViS2l0OjpXZWJQYWdlUHJveHlJZGVudGlmaWVyIHBhZ2VQcm94
eUlELCBTdHJpbmcgYXV0aG9yaXphdGlvblRva2VuLCBib29sIGVuYWJsZUhpZ2hBY2N1cmFjeSkg
V2FudHNDb25uZWN0aW9uCisgICAgU3RvcFVwZGF0aW5nKFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9t
YWluIHJlZ2lzdHJhYmxlRG9tYWluKSBXYW50c0Nvbm5lY3Rpb24KKyAgICBTZXRFbmFibGVIaWdo
QWNjdXJhY3koV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4gcmVnaXN0cmFibGVEb21haW4sIGJv
b2wgZW5hYmxlZCkgV2FudHNDb25uZWN0aW9uCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9X
ZWJQcm9jZXNzUG9vbC5jcHAKaW5kZXggZjYwZDNlY2QyY2E2ZjBmYzczNjcwYzM5ZGEyYWI3NjAw
MzVmMmY3NC4uZmExNzQyY2YzMmRhOTk1MjczMjNkZmM3YzhiZjBhNzkwNjMwNDFmZSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmNwcApAQCAtNDMxLDkgKzQzMSw2
IEBAIHZvaWQgV2ViUHJvY2Vzc1Bvb2w6OnNjcmVlblByb3BlcnRpZXNTdGF0ZUNoYW5nZWQoKQog
CiB2b2lkIFdlYlByb2Nlc3NQb29sOjpuZXR3b3JrUHJvY2Vzc0RpZFRlcm1pbmF0ZShOZXR3b3Jr
UHJvY2Vzc1Byb3h5JiBuZXR3b3JrUHJvY2Vzc1Byb3h5LCBOZXR3b3JrUHJvY2Vzc1Byb3h5OjpU
ZXJtaW5hdGlvblJlYXNvbiByZWFzb24pCiB7Ci0gICAgZm9yIChhdXRvJiBzdXBwbGVtZW50IDog
bV9zdXBwbGVtZW50cy52YWx1ZXMoKSkKLSAgICAgICAgc3VwcGxlbWVudC0+cHJvY2Vzc0RpZENs
b3NlKCZuZXR3b3JrUHJvY2Vzc1Byb3h5KTsKLQogICAgIGlmIChyZWFzb24gPT0gTmV0d29ya1By
b2Nlc3NQcm94eTo6VGVybWluYXRpb25SZWFzb246OkNyYXNoKQogICAgICAgICBtX2NsaWVudC5u
ZXR3b3JrUHJvY2Vzc0RpZENyYXNoKHRoaXMpOwogCkBAIC0xMDU3LDcgKzEwNTQsNyBAQCB2b2lk
IFdlYlByb2Nlc3NQb29sOjpkaXNjb25uZWN0UHJvY2VzcyhXZWJQcm9jZXNzUHJveHkmIHByb2Nl
c3MpCiAgICAgaWYgKHByb2Nlc3MuaXNSdW5uaW5nV29ya2VycygpKQogICAgICAgICByZW1vdmVG
cm9tUmVtb3RlV29ya2VyUHJvY2Vzc2VzKHByb2Nlc3MpOwogCi0gICAgc3RhdGljX2Nhc3Q8V2Vi
Q29udGV4dFN1cHBsZW1lbnQqPihzdXBwbGVtZW50PFdlYkdlb2xvY2F0aW9uTWFuYWdlclByb3h5
PigpKS0+cHJvY2Vzc0RpZENsb3NlKCZwcm9jZXNzKTsKKyAgICBzdXBwbGVtZW50PFdlYkdlb2xv
Y2F0aW9uTWFuYWdlclByb3h5PigpLT53ZWJQcm9jZXNzSXNHb2luZ0F3YXkocHJvY2Vzcyk7CiAK
ICAgICBtX3Byb2Nlc3Nlcy5yZW1vdmVGaXJzdChwcm9jZXNzKTsKIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dLR2VvbG9jYXRpb25Qcm92aWRlcklPUy5tbSBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XS0dlb2xvY2F0aW9uUHJvdmlkZXJJT1MubW0KaW5k
ZXggZjVlOWZkN2JjMzQxMjk3YWY3YjI0ZTY3NDE2MzMyY2Q5NmFkNzM5Yy4uZTYzOGFkOWM0ZThi
NzM4YmYxNjUxNGQ3MTlkYzFiZThhNzZiNTlkNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvaW9zL1dLR2VvbG9jYXRpb25Qcm92aWRlcklPUy5tbQorKysgYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9pb3MvV0tHZW9sb2NhdGlvblByb3ZpZGVySU9TLm1tCkBAIC01MSw3ICs1
MSw2IEBACiAjaW1wb3J0IDx3dGYvVVJMLmg+CiAKIC8vIEZJWE1FOiBSZW1vdmUgdXNlIG9mIFdl
YktpdDEgZnJvbSBXZWJLaXQyCi0jaW1wb3J0IDxXZWJLaXQvV2ViR2VvbG9jYXRpb25Db3JlTG9j
YXRpb25Qcm92aWRlci5oPgogI2ltcG9ydCA8V2ViS2l0L1dlYkFsbG93RGVueVBvbGljeUxpc3Rl
bmVyLmg+CiAKIEFMTE9XX0RFUFJFQ0FURURfREVDTEFSQVRJT05TX0JFR0lOCkBAIC01OSw5ICs1
OCw2IEBAIEFMTE9XX0RFUFJFQ0FURURfREVDTEFSQVRJT05TX0JFR0lOCiBAaW50ZXJmYWNlIFdL
R2VvbG9jYXRpb25Qcm92aWRlcklPUyAoX1dLR2VvbG9jYXRpb25Db3JlTG9jYXRpb25MaXN0ZW5l
cikgPF9XS0dlb2xvY2F0aW9uQ29yZUxvY2F0aW9uTGlzdGVuZXI+CiBAZW5kCiAKLUBpbnRlcmZh
Y2UgV0tMZWdhY3lDb3JlTG9jYXRpb25Qcm92aWRlciA6IE5TT2JqZWN0PF9XS0dlb2xvY2F0aW9u
Q29yZUxvY2F0aW9uUHJvdmlkZXIsIFdlYkdlb2xvY2F0aW9uQ29yZUxvY2F0aW9uVXBkYXRlTGlz
dGVuZXI+Ci1AZW5kCi0KIEBpbnRlcmZhY2UgV0tXZWJBbGxvd0RlbnlQb2xpY3lMaXN0ZW5lciA6
IE5TT2JqZWN0PFdlYkFsbG93RGVueVBvbGljeUxpc3RlbmVyPgogLSAoaWQpaW5pdFdpdGhDb21w
bGV0aW9uSGFuZGxlcjooRnVuY3Rpb248dm9pZChib29sKT4mJiljb21wbGV0aW9uSGFuZGxlcjsK
IC0gKHZvaWQpZGVueU9ubHlUaGlzUmVxdWVzdCBOT19SRVRVUk5fRFVFX1RPX0FTU0VSVDsKQEAg
LTE0NiwyNSArMTQyLDQyIEBAIC0gKGlkKWluaXRXaXRoUHJvY2Vzc1Bvb2w6KFdlYktpdDo6V2Vi
UHJvY2Vzc1Bvb2wmKXByb2Nlc3NQb29sCiAgICAgc2VsZiA9IFtzdXBlciBpbml0XTsKICAgICBp
ZiAoIXNlbGYpCiAgICAgICAgIHJldHVybiBuaWw7Ci0gICAgX2dlb2xvY2F0aW9uTWFuYWdlciA9
IHByb2Nlc3NQb29sLnN1cHBsZW1lbnQ8V2ViS2l0OjpXZWJHZW9sb2NhdGlvbk1hbmFnZXJQcm94
eT4oKTsKLSAgICBXS0dlb2xvY2F0aW9uUHJvdmlkZXJWMSBwcm92aWRlckNhbGxiYWNrID0gewot
ICAgICAgICB7IDEsIHNlbGYgfSwKLSAgICAgICAgc3RhcnRVcGRhdGluZ0NhbGxiYWNrLAotICAg
ICAgICBzdG9wVXBkYXRpbmdDYWxsYmFjaywKLSAgICAgICAgc2V0RW5hYmxlSGlnaEFjY3VyYWN5
Ci0gICAgfTsKLSAgICBXS0dlb2xvY2F0aW9uTWFuYWdlclNldFByb3ZpZGVyKHRvQVBJKF9nZW9s
b2NhdGlvbk1hbmFnZXIuZ2V0KCkpLCAmcHJvdmlkZXJDYWxsYmFjay5iYXNlKTsKLSAgICBfY29y
ZUxvY2F0aW9uUHJvdmlkZXIgPSB3cmFwcGVyKHByb2Nlc3NQb29sKS5fY29yZUxvY2F0aW9uUHJv
dmlkZXIgPzogYWRvcHROUyhzdGF0aWNfY2FzdDxpZCA8X1dLR2VvbG9jYXRpb25Db3JlTG9jYXRp
b25Qcm92aWRlcj4+KFtbV0tMZWdhY3lDb3JlTG9jYXRpb25Qcm92aWRlciBhbGxvY10gaW5pdF0p
KTsKLSAgICBbX2NvcmVMb2NhdGlvblByb3ZpZGVyIHNldExpc3RlbmVyOnNlbGZdOworCisgICAg
Ly8gT24gaU9TLCBXZWJLaXQgbm9ybWFsbHkgcHJvdmlkZXMgdGhlIGxvY2F0aW9uLiBIb3dldmVy
LCBpZiB0aGUgY2xpZW50IHNldHMgYSBjb3JlTG9jYXRpb25Qcm92aWRlciwgdGhlbiB3ZSB1c2Ug
dGhhdCBvbmUgaW5zdGVhZC4KKyAgICAvLyBUaGlzIGlzIHVzZWZ1bCBmb3IgV2ViS2l0VGVzdFJ1
bm5lciB0byBwcm92aWRlIGEgZHVtbXkgZ2VvbG9jYXRpb24gcHJvdmlkZXIuIEl0IGlzIGFsc28g
dXNlZCBieSBjZXJ0YWluIGFwcHMgdG8gZGVueSBhbGwKKyAgICAvLyBnZW9sb2NhdGlvbiBhdXRo
b3JpemF0aW9uIGFzIGEgd2F5IHRvIGRpc2FibGUgc3VwcG9ydCBmb3IgZ2VvbG9jYXRpb24uCisg
ICAgaWYgKHdyYXBwZXIocHJvY2Vzc1Bvb2wpLl9jb3JlTG9jYXRpb25Qcm92aWRlcikgeworICAg
ICAgICBfZ2VvbG9jYXRpb25NYW5hZ2VyID0gcHJvY2Vzc1Bvb2wuc3VwcGxlbWVudDxXZWJLaXQ6
OldlYkdlb2xvY2F0aW9uTWFuYWdlclByb3h5PigpOworICAgICAgICBXS0dlb2xvY2F0aW9uUHJv
dmlkZXJWMSBwcm92aWRlckNhbGxiYWNrID0geworICAgICAgICAgICAgeyAxLCBzZWxmIH0sCisg
ICAgICAgICAgICBzdGFydFVwZGF0aW5nQ2FsbGJhY2ssCisgICAgICAgICAgICBzdG9wVXBkYXRp
bmdDYWxsYmFjaywKKyAgICAgICAgICAgIHNldEVuYWJsZUhpZ2hBY2N1cmFjeQorICAgICAgICB9
OworICAgICAgICBXS0dlb2xvY2F0aW9uTWFuYWdlclNldFByb3ZpZGVyKHRvQVBJKF9nZW9sb2Nh
dGlvbk1hbmFnZXIuZ2V0KCkpLCAmcHJvdmlkZXJDYWxsYmFjay5iYXNlKTsKKyAgICAgICAgX2Nv
cmVMb2NhdGlvblByb3ZpZGVyID0gd3JhcHBlcihwcm9jZXNzUG9vbCkuX2NvcmVMb2NhdGlvblBy
b3ZpZGVyOworICAgICAgICBbX2NvcmVMb2NhdGlvblByb3ZpZGVyIHNldExpc3RlbmVyOnNlbGZd
OworICAgIH0KICAgICByZXR1cm4gc2VsZjsKIH0KIAogLSAodm9pZClkZWNpZGVQb2xpY3lGb3JH
ZW9sb2NhdGlvblJlcXVlc3RGcm9tT3JpZ2luOihXZWJLaXQ6OkZyYW1lSW5mb0RhdGEmJilmcmFt
ZUluZm8gY29tcGxldGlvbkhhbmRsZXI6KEZ1bmN0aW9uPHZvaWQoYm9vbCk+JiYpY29tcGxldGlv
bkhhbmRsZXIgdmlldzooV0tXZWJWaWV3ICopY29udGVudFZpZXcKIHsKLSAgICAvLyBTdGVwIDE6
IGFzayB0aGUgdXNlciBpZiB0aGUgYXBwIGNhbiB1c2UgR2VvbG9jYXRpb24uCisgICAgV2ViQ29y
ZTo6UmVnaXN0cmFibGVEb21haW4gcmVnaXN0cmFibGVEb21haW4oZnJhbWVJbmZvLnNlY3VyaXR5
T3JpZ2luKTsKICAgICBHZW9sb2NhdGlvblJlcXVlc3REYXRhIGdlb2xvY2F0aW9uUmVxdWVzdERh
dGEgeyBbY29udGVudFZpZXcgVVJMXSwgV1RGTW92ZShmcmFtZUluZm8pLCBXVEZNb3ZlKGNvbXBs
ZXRpb25IYW5kbGVyKSwgY29udGVudFZpZXcgfTsKICAgICBfcmVxdWVzdHNXYWl0aW5nRm9yQ29y
ZUxvY2F0aW9uQXV0aG9yaXphdGlvbi5hcHBlbmQoV1RGTW92ZShnZW9sb2NhdGlvblJlcXVlc3RE
YXRhKSk7Ci0gICAgW19jb3JlTG9jYXRpb25Qcm92aWRlciByZXF1ZXN0R2VvbG9jYXRpb25BdXRo
b3JpemF0aW9uXTsKKyAgICBpZiAoX2NvcmVMb2NhdGlvblByb3ZpZGVyKSB7CisgICAgICAgIC8v
IFN0ZXAgMTogYXNrIHRoZSB1c2VyIGlmIHRoZSBhcHAgY2FuIHVzZSBHZW9sb2NhdGlvbi4KKyAg
ICAgICAgW19jb3JlTG9jYXRpb25Qcm92aWRlciByZXF1ZXN0R2VvbG9jYXRpb25BdXRob3JpemF0
aW9uXTsKKyAgICB9IGVsc2UgeworICAgICAgICAvLyBTdGVwIDE6IGFzayBDb3JlTG9jYXRpb24g
aWYgdGhlIGFwcCBjYW4gdXNlIEdlb2xvY2F0aW9uLgorICAgICAgICBXZWJDb3JlOjpDb3JlTG9j
YXRpb25HZW9sb2NhdGlvblByb3ZpZGVyOjpyZXF1ZXN0QXV0aG9yaXphdGlvbihyZWdpc3RyYWJs
ZURvbWFpbiwgW3NlbGYsIHN0cm9uZ1NlbGYgPSByZXRhaW5QdHIoc2VsZildKGJvb2wgYXV0aG9y
aXplZCkgeworICAgICAgICAgICAgaWYgKGF1dGhvcml6ZWQpCisgICAgICAgICAgICAgICAgW3Nl
bGYgZ2VvbG9jYXRpb25BdXRob3JpemF0aW9uR3JhbnRlZF07CisgICAgICAgICAgICBlbHNlCisg
ICAgICAgICAgICAgICAgW3NlbGYgZ2VvbG9jYXRpb25BdXRob3JpemF0aW9uRGVuaWVkXTsKKyAg
ICAgICAgfSk7CisgICAgfQogfQogQGVuZAogCkBAIC0xNzQsNyArMTg3LDcgQEAgQGltcGxlbWVu
dGF0aW9uIFdLR2VvbG9jYXRpb25Qcm92aWRlcklPUyAoV2ViR2VvbG9jYXRpb25Db3JlTG9jYXRp
b25VcGRhdGVMaXN0ZW4KIAogLSAodm9pZClnZW9sb2NhdGlvbkF1dGhvcml6YXRpb25HcmFudGVk
CiB7Ci0gICAgLy8gU3RlcCAyOiBhc2sgdGhlIHVzZXIgaWYgdGhpcyBwYXJ0aWN1bGFyIHBhZ2Ug
Y2FuIHVzZSBnZWxvY2F0aW9uLgorICAgIC8vIFN0ZXAgMjogYXNrIHRoZSB1c2VyIGlmIHRoaXMg
cGFydGljdWxhciBwYWdlIGNhbiB1c2UgZ2VvbG9jYXRpb24uCiAgICAgaWYgKF9yZXF1ZXN0c1dh
aXRpbmdGb3JDb3JlTG9jYXRpb25BdXRob3JpemF0aW9uLmlzRW1wdHkoKSkKICAgICAgICAgcmV0
dXJuOwogCkBAIC0yMjYsODEgKzIzOSw2IEBAIC0gKHZvaWQpcmVzZXRHZW9sb2NhdGlvbgogCiBA
ZW5kCiAKLSMgcHJhZ21hIG1hcmsgLSBJbXBsZW1lbnRhdGlvbiBvZiBXS0xlZ2FjeUNvcmVMb2Nh
dGlvblByb3ZpZGVyCi0KLUBpbXBsZW1lbnRhdGlvbiBXS0xlZ2FjeUNvcmVMb2NhdGlvblByb3Zp
ZGVyIHsKLSAgICBpZCA8X1dLR2VvbG9jYXRpb25Db3JlTG9jYXRpb25MaXN0ZW5lcj4gX2xpc3Rl
bmVyOwotICAgIFJldGFpblB0cjxXZWJHZW9sb2NhdGlvbkNvcmVMb2NhdGlvblByb3ZpZGVyPiBf
cHJvdmlkZXI7Ci19Ci0KLS8vIDxfV0tHZW9sb2NhdGlvbkNvcmVMb2NhdGlvblByb3ZpZGVyPiBN
ZXRob2RzCi0KLS0gKHZvaWQpc2V0TGlzdGVuZXI6KGlkPF9XS0dlb2xvY2F0aW9uQ29yZUxvY2F0
aW9uTGlzdGVuZXI+KWxpc3RlbmVyCi17Ci0gICAgQVNTRVJUKGxpc3RlbmVyICYmICFfbGlzdGVu
ZXIgJiYgIV9wcm92aWRlcik7Ci0gICAgX2xpc3RlbmVyID0gbGlzdGVuZXI7Ci0gICAgX3Byb3Zp
ZGVyID0gYWRvcHROUyhbW1dlYkdlb2xvY2F0aW9uQ29yZUxvY2F0aW9uUHJvdmlkZXIgYWxsb2Nd
IGluaXRXaXRoTGlzdGVuZXI6c2VsZl0pOwotfQotCi0tICh2b2lkKXJlcXVlc3RHZW9sb2NhdGlv
bkF1dGhvcml6YXRpb24KLXsKLSAgICBBU1NFUlQoX3Byb3ZpZGVyKTsKLSAgICBbX3Byb3ZpZGVy
IHJlcXVlc3RHZW9sb2NhdGlvbkF1dGhvcml6YXRpb25dOwotfQotCi0tICh2b2lkKXN0YXJ0Ci17
Ci0gICAgQVNTRVJUKF9wcm92aWRlcik7Ci0gICAgW19wcm92aWRlciBzdGFydF07Ci19Ci0KLS0g
KHZvaWQpc3RvcAotewotICAgIEFTU0VSVChfcHJvdmlkZXIpOwotICAgIFtfcHJvdmlkZXIgc3Rv
cF07Ci19Ci0KLS0gKHZvaWQpc2V0RW5hYmxlSGlnaEFjY3VyYWN5OihCT09MKWZsYWcKLXsKLSAg
ICBBU1NFUlQoX3Byb3ZpZGVyKTsKLSAgICBbX3Byb3ZpZGVyIHNldEVuYWJsZUhpZ2hBY2N1cmFj
eTpmbGFnXTsKLX0KLQotLy8gPFdlYkdlb2xvY2F0aW9uQ29yZUxvY2F0aW9uVXBkYXRlTGlzdGVu
ZXI+IE1ldGhvZHMKLQotLSAodm9pZClnZW9sb2NhdGlvbkF1dGhvcml6YXRpb25HcmFudGVkCi17
Ci0gICAgQVNTRVJUKF9saXN0ZW5lcik7Ci0gICAgW19saXN0ZW5lciBnZW9sb2NhdGlvbkF1dGhv
cml6YXRpb25HcmFudGVkXTsKLX0KLQotLSAodm9pZClnZW9sb2NhdGlvbkF1dGhvcml6YXRpb25E
ZW5pZWQKLXsKLSAgICBBU1NFUlQoX2xpc3RlbmVyKTsKLSAgICBbX2xpc3RlbmVyIGdlb2xvY2F0
aW9uQXV0aG9yaXphdGlvbkRlbmllZF07Ci19Ci0KLS0gKHZvaWQpcG9zaXRpb25DaGFuZ2VkOihX
ZWJDb3JlOjpHZW9sb2NhdGlvblBvc2l0aW9uRGF0YSYmKWNvcmVQb3NpdGlvbgotewotICAgIEFT
U0VSVChfbGlzdGVuZXIpOwotICAgIGF1dG8gcG9zaXRpb24gPSBXZWJLaXQ6OldlYkdlb2xvY2F0
aW9uUG9zaXRpb246OmNyZWF0ZShXVEZNb3ZlKGNvcmVQb3NpdGlvbikpOwotICAgIFtfbGlzdGVu
ZXIgcG9zaXRpb25DaGFuZ2VkOndyYXBwZXIocG9zaXRpb24uZ2V0KCkpXTsKLX0KLQotLSAodm9p
ZCllcnJvck9jY3VycmVkOihOU1N0cmluZyAqKWVycm9yTWVzc2FnZQotewotICAgIEFTU0VSVChf
bGlzdGVuZXIpOwotICAgIFtfbGlzdGVuZXIgZXJyb3JPY2N1cnJlZDplcnJvck1lc3NhZ2VdOwot
fQotCi0tICh2b2lkKXJlc2V0R2VvbG9jYXRpb24KLXsKLSAgICBBU1NFUlQoX2xpc3RlbmVyKTsK
LSAgICBbX2xpc3RlbmVyIHJlc2V0R2VvbG9jYXRpb25dOwotfQotCi1AZW5kCi0KICMgcHJhZ21h
IG1hcmsgLSBJbXBsZW1lbnRhdGlvbiBvZiBXS1dlYkFsbG93RGVueVBvbGljeUxpc3RlbmVyCiBA
aW1wbGVtZW50YXRpb24gV0tXZWJBbGxvd0RlbnlQb2xpY3lMaXN0ZW5lciB7CiAgICAgRnVuY3Rp
b248dm9pZChib29sKT4gX2NvbXBsZXRpb25IYW5kbGVyOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJLaXQvV2Vi
S2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggMWVjOGIyYjg1Y2UxZTU2NDM3ZjJl
ZmQxYzQ0YzA2OTE2MDY5MTkzMC4uY2MyOTYwOTdhODc2MzhmYTZlZjNlODYwYjc4MzJlYWY4ZWI5
ZWRiYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3Qu
cGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qCkBAIC00MzE5LDYgKzQzMTksNyBAQAogCQk0NkNFM0IxMDIzRDhDODNEMDAxNkE5NkEgLyog
V2ViQmFja0ZvcndhcmRMaXN0Q291bnRzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IFdlYkJhY2tGb3J3YXJkTGlzdENvdW50cy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQk0NkQ0OEZDQzI3OTlEN0REMDA3RDIwMTQgLyogV2ViU2hhcmVkV29ya2VyU2VydmVyVG9D
b250ZXh0Q29ubmVjdGlvbi5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXZWJTaGFyZWRXb3JrZXJT
ZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJNDZENDhGQ0QyNzk5RDdERTAwN0QyMDE0IC8qIFdlYlNoYXJlZFdvcmtlclNlcnZlclRvQ29u
dGV4dENvbm5lY3Rpb24uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2ViU2hhcmVkV29ya2VyU2VydmVyVG9D
b250ZXh0Q29ubmVjdGlvbi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk0NkRBMjg1
NzI3QjczRTc2MDA4OUQzMzkgLyogV2ViR2VvbG9jYXRpb25NYW5hZ2VyUHJveHlDb2NvYS5jcHAg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5jcHA7IHBhdGggPSBXZWJHZW9sb2NhdGlvbk1hbmFnZXJQcm94eUNvY29hLmNwcDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDZERjA2MzkxRjM5MDVFNTAwMTk4MEJCIC8q
IE5ldHdvcmtDT1JTUHJlZmxpZ2h0Q2hlY2tlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5jcHA7IHBhdGggPSBOZXR3b3JrQ09SU1ByZWZsaWdodENoZWNrZXIuY3BwOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQk0NkRGMDYzQTFGMzkwNUU1MDAxOTgwQkIgLyogTmV0d29ya0NP
UlNQcmVmbGlnaHRDaGVja2VyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE5l
dHdvcmtDT1JTUHJlZmxpZ2h0Q2hlY2tlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQk0NkU5NzYwQTI3NTdGNkM5MDBBQ0REMzcgLyogV2ViQnJvYWRjYXN0Q2hhbm5lbFJlZ2lzdHJ5
Lm1lc3NhZ2VzLmluICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IFdlYkJyb2FkY2FzdENoYW5uZWxS
ZWdpc3RyeS5tZXNzYWdlcy5pbjsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTc2MTEs
NiArNzYxMiw3IEBACiAJCQkJNTJENUExQUExQzU3NDk0RTAwREUzNEEzIC8qIFZpZGVvRnVsbHNj
cmVlbk1hbmFnZXJQcm94eS5oICovLAogCQkJCTUyRDVBMUFCMUM1NzQ5NEUwMERFMzRBMyAvKiBW
aWRlb0Z1bGxzY3JlZW5NYW5hZ2VyUHJveHkubWVzc2FnZXMuaW4gKi8sCiAJCQkJNTJENUExQUMx
QzU3NDk0RTAwREUzNEEzIC8qIFZpZGVvRnVsbHNjcmVlbk1hbmFnZXJQcm94eS5tbSAqLywKKwkJ
CQk0NkRBMjg1NzI3QjczRTc2MDA4OUQzMzkgLyogV2ViR2VvbG9jYXRpb25NYW5hZ2VyUHJveHlD
b2NvYS5jcHAgKi8sCiAJCQkJQzE4RjNBMTMyNTYzMzJBNjAwNzk3RTY2IC8qIFdlYkluc3BlY3Rv
clByZWZlcmVuY2VPYnNlcnZlci5oICovLAogCQkJCUMxOEYzQTE0MjU2MzMzNDMwMDc5N0U2NiAv
KiBXZWJJbnNwZWN0b3JQcmVmZXJlbmNlT2JzZXJ2ZXIubW0gKi8sCiAJCQkJQ0RGMUI5MTkyNjcw
MjFENjAwMDdFQzEwIC8qIFdlYktpdFN3aWZ0U29mdExpbmsuaCAqLywKQEAgLTEzNDg2LDYgKzEz
NDg4LDcgQEAKIAkJCQlFMThFNjkxODE2OUI2NjdCMDA5QjY2NzAgLyogU2VjSXRlbVNoaW1Qcm94
eU1lc3NhZ2VzLmggaW4gSGVhZGVycyAqLywKIAkJCQk1NzBBQjhGMzIwQUUzQkQ3MDBCOEJFODcg
LyogU2VjS2V5UHJveHlTdG9yZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNTE0RDlGNTcxOTExOUQz
NTAwMDA2M0E3IC8qIFNlcnZpY2VzQ29udHJvbGxlci5oIGluIEhlYWRlcnMgKi8sCisJCQkJNTE2
NDY1ODAyN0E5Qzc3NDAwRTFGMkJBIC8qIFNlcnZpY2VXb3JrZXJOb3RpZmljYXRpb25IYW5kbGVy
LmggaW4gSGVhZGVycyAqLywKIAkJCQkxQUZERTY1QTE5NTRBNDJCMDBDNDhGRkEgLyogU2Vzc2lv
blN0YXRlLmggaW4gSGVhZGVycyAqLywKIAkJCQkxQTAwMkQ0OTE5NkIzNDVEMDBCOUFENDQgLyog
U2Vzc2lvblN0YXRlQ29kaW5nLmggaW4gSGVhZGVycyAqLywKIAkJCQk5M0U3OTlDRTI3NjA0OTdC
MDA3NDAwOEEgLyogU2Vzc2lvblN0b3JhZ2VNYW5hZ2VyLmggaW4gSGVhZGVycyAqLywKQEAgLTEz
OTM0LDcgKzEzOTM3LDYgQEAKIAkJCQlCQzRBNjI5NzE0NzMxM0EwMDA2QzY4MUEgLyogV0tDb25u
ZWN0aW9uUmVmLmggaW4gSGVhZGVycyAqLywKIAkJCQlFNTk2REQ2QTI1MUU3MUQ0MDBDMjc1QTcg
LyogV0tDb250YWN0UGlja2VyLmggaW4gSGVhZGVycyAqLywKIAkJCQk1Q0QyODY1NDFFNzIzNUIx
MDA5NEZEQzggLyogV0tDb250ZW50UnVsZUxpc3QuaCBpbiBIZWFkZXJzICovLAotCQkJCTUxNjQ2
NTgwMjdBOUM3NzQwMEUxRjJCQSAvKiBTZXJ2aWNlV29ya2VyTm90aWZpY2F0aW9uSGFuZGxlci5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJNUNEMjg2NTUxRTcyMzVCODAwOTRGREM4IC8qIFdLQ29udGVu
dFJ1bGVMaXN0SW50ZXJuYWwuaCBpbiBIZWFkZXJzICovLAogCQkJCTVDNTEzOURCMjU5MjdEODAw
MDlDM0UzMCAvKiBXS0NvbnRlbnRSdWxlTGlzdFByaXZhdGUuaCBpbiBIZWFkZXJzICovLAogCQkJ
CTVDRDI4NjUxMUU3MjM1OTkwMDk0RkRDOCAvKiBXS0NvbnRlbnRSdWxlTGlzdFN0b3JlLmggaW4g
SGVhZGVycyAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HZW9sb2Nh
dGlvbi9XZWJHZW9sb2NhdGlvbk1hbmFnZXIuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L0dlb2xvY2F0aW9uL1dlYkdlb2xvY2F0aW9uTWFuYWdlci5jcHAKaW5kZXggNWE5YzlmNGQyYTFj
ZDY2YTRiNjc1OWI1OTM4N2VhMmNmNTViMmFhOC4uZjlkODc1YzE0OTQ0YWIwMzNlODdhOWZlMjY5
NWQxNWY1NGY3ZmNjNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dlb2xv
Y2F0aW9uL1dlYkdlb2xvY2F0aW9uTWFuYWdlci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL0dlb2xvY2F0aW9uL1dlYkdlb2xvY2F0aW9uTWFuYWdlci5jcHAKQEAgLTM5LDYgKzM5
LDE0IEBACiBuYW1lc3BhY2UgV2ViS2l0IHsKIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCitz
dGF0aWMgUmVnaXN0cmFibGVEb21haW4gcmVnaXN0cmFibGVEb21haW5Gb3JQYWdlKFdlYlBhZ2Um
IHBhZ2UpCit7CisgICAgYXV0byogZG9jdW1lbnQgPSBwYWdlLmNvcmVQYWdlKCkgPyBwYWdlLmNv
cmVQYWdlKCktPm1haW5GcmFtZSgpLmRvY3VtZW50KCkgOiBudWxscHRyOworICAgIGlmICghZG9j
dW1lbnQpCisgICAgICAgIHJldHVybiB7IH07CisgICAgcmV0dXJuIFJlZ2lzdHJhYmxlRG9tYWlu
IHsgZG9jdW1lbnQtPnVybCgpIH07Cit9CisKIGNvbnN0IGNoYXIqIFdlYkdlb2xvY2F0aW9uTWFu
YWdlcjo6c3VwcGxlbWVudE5hbWUoKQogewogICAgIHJldHVybiAiV2ViR2VvbG9jYXRpb25NYW5h
Z2VyIjsKQEAgLTUwLDg4ICs1OCwxNDAgQEAgV2ViR2VvbG9jYXRpb25NYW5hZ2VyOjpXZWJHZW9s
b2NhdGlvbk1hbmFnZXIoV2ViUHJvY2VzcyYgcHJvY2VzcykKICAgICBtX3Byb2Nlc3MuYWRkTWVz
c2FnZVJlY2VpdmVyKE1lc3NhZ2VzOjpXZWJHZW9sb2NhdGlvbk1hbmFnZXI6Om1lc3NhZ2VSZWNl
aXZlck5hbWUoKSwgKnRoaXMpOwogfQogCi12b2lkIFdlYkdlb2xvY2F0aW9uTWFuYWdlcjo6cmVn
aXN0ZXJXZWJQYWdlKFdlYlBhZ2UmIHBhZ2UsIGNvbnN0IFN0cmluZyYgYXV0aG9yaXphdGlvblRv
a2VuKQotewotICAgIGJvb2wgd2FzVXBkYXRpbmcgPSBpc1VwZGF0aW5nKCk7CitXZWJHZW9sb2Nh
dGlvbk1hbmFnZXI6On5XZWJHZW9sb2NhdGlvbk1hbmFnZXIoKSA9IGRlZmF1bHQ7CiAKLSAgICBt
X3BhZ2VTZXQuYWRkKHBhZ2UpOwordm9pZCBXZWJHZW9sb2NhdGlvbk1hbmFnZXI6OnJlZ2lzdGVy
V2ViUGFnZShXZWJQYWdlJiBwYWdlLCBjb25zdCBTdHJpbmcmIGF1dGhvcml6YXRpb25Ub2tlbiwg
Ym9vbCBuZWVkc0hpZ2hBY2N1cmFjeSkKK3sKKyAgICBhdXRvIHJlZ2lzdHJhYmxlRG9tYWluID0g
cmVnaXN0cmFibGVEb21haW5Gb3JQYWdlKHBhZ2UpOworICAgIGlmIChyZWdpc3RyYWJsZURvbWFp
bi5zdHJpbmcoKS5pc0VtcHR5KCkpCisgICAgICAgIHJldHVybjsKKworICAgIGF1dG8mIHBhZ2VT
ZXRzID0gbV9wYWdlU2V0cy5hZGQocmVnaXN0cmFibGVEb21haW4sIFBhZ2VTZXRzKCkpLml0ZXJh
dG9yLT52YWx1ZTsKKyAgICBib29sIHdhc1VwZGF0aW5nID0gaXNVcGRhdGluZyhwYWdlU2V0cyk7
CisgICAgYm9vbCBoaWdoQWNjdXJhY3lXYXNFbmFibGVkID0gaXNIaWdoQWNjdXJhY3lFbmFibGVk
KHBhZ2VTZXRzKTsKKworICAgIHBhZ2VTZXRzLnBhZ2VTZXQuYWRkKHBhZ2UpOworICAgIGlmIChu
ZWVkc0hpZ2hBY2N1cmFjeSkKKyAgICAgICAgcGFnZVNldHMuaGlnaEFjY3VyYWN5UGFnZVNldC5h
ZGQocGFnZSk7CisgICAgbV9wYWdlVG9SZWdpc3RyYWJsZURvbWFpbi5hZGQoJnBhZ2UsIHJlZ2lz
dHJhYmxlRG9tYWluKTsKKworICAgIGlmICghd2FzVXBkYXRpbmcpIHsKKyAgICAgICAgbV9wcm9j
ZXNzLnBhcmVudFByb2Nlc3NDb25uZWN0aW9uKCktPnNlbmQoTWVzc2FnZXM6OldlYkdlb2xvY2F0
aW9uTWFuYWdlclByb3h5OjpTdGFydFVwZGF0aW5nKHJlZ2lzdHJhYmxlRG9tYWluLCBwYWdlLndl
YlBhZ2VQcm94eUlkZW50aWZpZXIoKSwgYXV0aG9yaXphdGlvblRva2VuLCBuZWVkc0hpZ2hBY2N1
cmFjeSksIDApOworICAgICAgICByZXR1cm47CisgICAgfQogCi0gICAgaWYgKCF3YXNVcGRhdGlu
ZykKLSAgICAgICAgbV9wcm9jZXNzLnBhcmVudFByb2Nlc3NDb25uZWN0aW9uKCktPnNlbmQoTWVz
c2FnZXM6OldlYkdlb2xvY2F0aW9uTWFuYWdlclByb3h5OjpTdGFydFVwZGF0aW5nKHBhZ2Uud2Vi
UGFnZVByb3h5SWRlbnRpZmllcigpLCBhdXRob3JpemF0aW9uVG9rZW4pLCAwKTsKKyAgICBib29s
IGhpZ2hBY2N1cmFjeVNob3VsZEJlRW5hYmxlZCA9IGlzSGlnaEFjY3VyYWN5RW5hYmxlZChwYWdl
U2V0cyk7CisgICAgaWYgKGhpZ2hBY2N1cmFjeVdhc0VuYWJsZWQgIT0gaGlnaEFjY3VyYWN5U2hv
dWxkQmVFbmFibGVkKQorICAgICAgICBtX3Byb2Nlc3MucGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24o
KS0+c2VuZChNZXNzYWdlczo6V2ViR2VvbG9jYXRpb25NYW5hZ2VyUHJveHk6OlNldEVuYWJsZUhp
Z2hBY2N1cmFjeShyZWdpc3RyYWJsZURvbWFpbiwgaGlnaEFjY3VyYWN5U2hvdWxkQmVFbmFibGVk
KSwgMCk7CiB9CiAKIHZvaWQgV2ViR2VvbG9jYXRpb25NYW5hZ2VyOjp1bnJlZ2lzdGVyV2ViUGFn
ZShXZWJQYWdlJiBwYWdlKQogewotICAgIGJvb2wgaGlnaEFjY3VyYWN5V2FzRW5hYmxlZCA9IGlz
SGlnaEFjY3VyYWN5RW5hYmxlZCgpOworICAgIGF1dG8gcmVnaXN0cmFibGVEb21haW4gPSBtX3Bh
Z2VUb1JlZ2lzdHJhYmxlRG9tYWluLnRha2UoJnBhZ2UpOworICAgIGlmIChyZWdpc3RyYWJsZURv
bWFpbi5zdHJpbmcoKS5pc0VtcHR5KCkpCisgICAgICAgIHJldHVybjsKKworICAgIGF1dG8gaXQg
PSBtX3BhZ2VTZXRzLmZpbmQocmVnaXN0cmFibGVEb21haW4pOworICAgIGlmIChpdCA9PSBtX3Bh
Z2VTZXRzLmVuZCgpKQorICAgICAgICByZXR1cm47CiAKLSAgICBtX3BhZ2VTZXQucmVtb3ZlKHBh
Z2UpOwotICAgIG1faGlnaEFjY3VyYWN5UGFnZVNldC5yZW1vdmUocGFnZSk7CisgICAgYXV0byYg
cGFnZVNldHMgPSBpdC0+dmFsdWU7CisgICAgYm9vbCBoaWdoQWNjdXJhY3lXYXNFbmFibGVkID0g
aXNIaWdoQWNjdXJhY3lFbmFibGVkKHBhZ2VTZXRzKTsKIAotICAgIGlmICghaXNVcGRhdGluZygp
KQotICAgICAgICBtX3Byb2Nlc3MucGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+c2VuZChNZXNz
YWdlczo6V2ViR2VvbG9jYXRpb25NYW5hZ2VyUHJveHk6OlN0b3BVcGRhdGluZygpLCAwKTsKKyAg
ICBwYWdlU2V0cy5wYWdlU2V0LnJlbW92ZShwYWdlKTsKKyAgICBwYWdlU2V0cy5oaWdoQWNjdXJh
Y3lQYWdlU2V0LnJlbW92ZShwYWdlKTsKKworICAgIGlmICghaXNVcGRhdGluZyhwYWdlU2V0cykp
CisgICAgICAgIG1fcHJvY2Vzcy5wYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpLT5zZW5kKE1lc3Nh
Z2VzOjpXZWJHZW9sb2NhdGlvbk1hbmFnZXJQcm94eTo6U3RvcFVwZGF0aW5nKHJlZ2lzdHJhYmxl
RG9tYWluKSwgMCk7CiAgICAgZWxzZSB7Ci0gICAgICAgIGJvb2wgaGlnaEFjY3VyYWN5U2hvdWxk
QmVFbmFibGVkID0gaXNIaWdoQWNjdXJhY3lFbmFibGVkKCk7CisgICAgICAgIGJvb2wgaGlnaEFj
Y3VyYWN5U2hvdWxkQmVFbmFibGVkID0gaXNIaWdoQWNjdXJhY3lFbmFibGVkKHBhZ2VTZXRzKTsK
ICAgICAgICAgaWYgKGhpZ2hBY2N1cmFjeVdhc0VuYWJsZWQgIT0gaGlnaEFjY3VyYWN5U2hvdWxk
QmVFbmFibGVkKQotICAgICAgICAgICAgbV9wcm9jZXNzLnBhcmVudFByb2Nlc3NDb25uZWN0aW9u
KCktPnNlbmQoTWVzc2FnZXM6OldlYkdlb2xvY2F0aW9uTWFuYWdlclByb3h5OjpTZXRFbmFibGVI
aWdoQWNjdXJhY3koaGlnaEFjY3VyYWN5U2hvdWxkQmVFbmFibGVkKSwgMCk7CisgICAgICAgICAg
ICBtX3Byb2Nlc3MucGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+c2VuZChNZXNzYWdlczo6V2Vi
R2VvbG9jYXRpb25NYW5hZ2VyUHJveHk6OlNldEVuYWJsZUhpZ2hBY2N1cmFjeShyZWdpc3RyYWJs
ZURvbWFpbiwgaGlnaEFjY3VyYWN5U2hvdWxkQmVFbmFibGVkKSwgMCk7CiAgICAgfQorCisgICAg
aWYgKHBhZ2VTZXRzLnBhZ2VTZXQuY29tcHV0ZXNFbXB0eSgpICYmIHBhZ2VTZXRzLmhpZ2hBY2N1
cmFjeVBhZ2VTZXQuY29tcHV0ZXNFbXB0eSgpKQorICAgICAgICBtX3BhZ2VTZXRzLnJlbW92ZShp
dCk7CiB9CiAKIHZvaWQgV2ViR2VvbG9jYXRpb25NYW5hZ2VyOjpzZXRFbmFibGVIaWdoQWNjdXJh
Y3lGb3JQYWdlKFdlYlBhZ2UmIHBhZ2UsIGJvb2wgZW5hYmxlZCkKIHsKLSAgICBib29sIGhpZ2hB
Y2N1cmFjeVdhc0VuYWJsZWQgPSBpc0hpZ2hBY2N1cmFjeUVuYWJsZWQoKTsKKyAgICBhdXRvIHJl
Z2lzdHJhYmxlRG9tYWluID0gbV9wYWdlVG9SZWdpc3RyYWJsZURvbWFpbi5nZXQoJnBhZ2UpOwor
ICAgIGlmIChyZWdpc3RyYWJsZURvbWFpbi5zdHJpbmcoKS5pc0VtcHR5KCkpCisgICAgICAgIHJl
dHVybjsKKworICAgIGF1dG8gaXQgPSBtX3BhZ2VTZXRzLmZpbmQocmVnaXN0cmFibGVEb21haW4p
OworICAgIEFTU0VSVChpdCAhPSBtX3BhZ2VTZXRzLmVuZCgpKTsKKyAgICBpZiAoaXQgPT0gbV9w
YWdlU2V0cy5lbmQoKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgYXV0byYgcGFnZVNldHMgPSBp
dC0+dmFsdWU7CisgICAgYm9vbCBoaWdoQWNjdXJhY3lXYXNFbmFibGVkID0gaXNIaWdoQWNjdXJh
Y3lFbmFibGVkKHBhZ2VTZXRzKTsKIAogICAgIGlmIChlbmFibGVkKQotICAgICAgICBtX2hpZ2hB
Y2N1cmFjeVBhZ2VTZXQuYWRkKHBhZ2UpOworICAgICAgICBwYWdlU2V0cy5oaWdoQWNjdXJhY3lQ
YWdlU2V0LmFkZChwYWdlKTsKICAgICBlbHNlCi0gICAgICAgIG1faGlnaEFjY3VyYWN5UGFnZVNl
dC5yZW1vdmUocGFnZSk7CisgICAgICAgIHBhZ2VTZXRzLmhpZ2hBY2N1cmFjeVBhZ2VTZXQucmVt
b3ZlKHBhZ2UpOwogCi0gICAgYm9vbCBoaWdoQWNjdXJhY3lTaG91bGRCZUVuYWJsZWQgPSBpc0hp
Z2hBY2N1cmFjeUVuYWJsZWQoKTsKLSAgICBpZiAoaGlnaEFjY3VyYWN5V2FzRW5hYmxlZCAhPSBo
aWdoQWNjdXJhY3lTaG91bGRCZUVuYWJsZWQpCi0gICAgICAgIG1fcHJvY2Vzcy5wYXJlbnRQcm9j
ZXNzQ29ubmVjdGlvbigpLT5zZW5kKE1lc3NhZ2VzOjpXZWJHZW9sb2NhdGlvbk1hbmFnZXJQcm94
eTo6U2V0RW5hYmxlSGlnaEFjY3VyYWN5KGhpZ2hBY2N1cmFjeVNob3VsZEJlRW5hYmxlZCksIDAp
OworICAgIGJvb2wgaGlnaEFjY3VyYWN5U2hvdWxkQmVFbmFibGVkID0gaXNIaWdoQWNjdXJhY3lF
bmFibGVkKHBhZ2VTZXRzKTsKKyAgICBpZiAoaGlnaEFjY3VyYWN5V2FzRW5hYmxlZCAhPSBpc0hp
Z2hBY2N1cmFjeUVuYWJsZWQocGFnZVNldHMpKQorICAgICAgICBtX3Byb2Nlc3MucGFyZW50UHJv
Y2Vzc0Nvbm5lY3Rpb24oKS0+c2VuZChNZXNzYWdlczo6V2ViR2VvbG9jYXRpb25NYW5hZ2VyUHJv
eHk6OlNldEVuYWJsZUhpZ2hBY2N1cmFjeShyZWdpc3RyYWJsZURvbWFpbiwgaGlnaEFjY3VyYWN5
U2hvdWxkQmVFbmFibGVkKSwgMCk7CiB9CiAKLXZvaWQgV2ViR2VvbG9jYXRpb25NYW5hZ2VyOjpk
aWRDaGFuZ2VQb3NpdGlvbihjb25zdCBHZW9sb2NhdGlvblBvc2l0aW9uRGF0YSYgcG9zaXRpb24p
Cit2b2lkIFdlYkdlb2xvY2F0aW9uTWFuYWdlcjo6ZGlkQ2hhbmdlUG9zaXRpb24oY29uc3QgV2Vi
Q29yZTo6UmVnaXN0cmFibGVEb21haW4mIHJlZ2lzdHJhYmxlRG9tYWluLCBjb25zdCBHZW9sb2Nh
dGlvblBvc2l0aW9uRGF0YSYgcG9zaXRpb24pCiB7CiAjaWYgRU5BQkxFKEdFT0xPQ0FUSU9OKQot
ICAgIGZvciAoYXV0byYgcGFnZSA6IGNvcHlUb1ZlY3RvcihtX3BhZ2VTZXQpKSB7Ci0gICAgICAg
IGlmIChwYWdlLT5jb3JlUGFnZSgpKQotICAgICAgICAgICAgR2VvbG9jYXRpb25Db250cm9sbGVy
Ojpmcm9tKHBhZ2UtPmNvcmVQYWdlKCkpLT5wb3NpdGlvbkNoYW5nZWQocG9zaXRpb24pOworICAg
IGlmIChhdXRvIGl0ID0gbV9wYWdlU2V0cy5maW5kKHJlZ2lzdHJhYmxlRG9tYWluKTsgaXQgIT0g
bV9wYWdlU2V0cy5lbmQoKSkgeworICAgICAgICBmb3IgKGF1dG8mIHBhZ2UgOiBjb3B5VG9WZWN0
b3IoaXQtPnZhbHVlLnBhZ2VTZXQpKSB7CisgICAgICAgICAgICBpZiAocGFnZS0+Y29yZVBhZ2Uo
KSkKKyAgICAgICAgICAgICAgICBHZW9sb2NhdGlvbkNvbnRyb2xsZXI6OmZyb20ocGFnZS0+Y29y
ZVBhZ2UoKSktPnBvc2l0aW9uQ2hhbmdlZChwb3NpdGlvbik7CisgICAgICAgIH0KICAgICB9CiAj
ZWxzZQorICAgIFVOVVNFRF9QQVJBTShyZWdpc3RyYWJsZURvbWFpbik7CiAgICAgVU5VU0VEX1BB
UkFNKHBvc2l0aW9uKTsKICNlbmRpZiAvLyBFTkFCTEUoR0VPTE9DQVRJT04pCiB9CiAKLXZvaWQg
V2ViR2VvbG9jYXRpb25NYW5hZ2VyOjpkaWRGYWlsVG9EZXRlcm1pbmVQb3NpdGlvbihjb25zdCBT
dHJpbmcmIGVycm9yTWVzc2FnZSkKK3ZvaWQgV2ViR2VvbG9jYXRpb25NYW5hZ2VyOjpkaWRGYWls
VG9EZXRlcm1pbmVQb3NpdGlvbihjb25zdCBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiYgcmVn
aXN0cmFibGVEb21haW4sIGNvbnN0IFN0cmluZyYgZXJyb3JNZXNzYWdlKQogewogI2lmIEVOQUJM
RShHRU9MT0NBVElPTikKLSAgICAvLyBGSVhNRTogQWRkIGxvY2FsaXplZCBlcnJvciBzdHJpbmcu
Ci0gICAgYXV0byBlcnJvciA9IEdlb2xvY2F0aW9uRXJyb3I6OmNyZWF0ZShHZW9sb2NhdGlvbkVy
cm9yOjpQb3NpdGlvblVuYXZhaWxhYmxlLCBlcnJvck1lc3NhZ2UpOwotCi0gICAgZm9yIChhdXRv
JiBwYWdlIDogY29weVRvVmVjdG9yKG1fcGFnZVNldCkpIHsKLSAgICAgICAgaWYgKHBhZ2UtPmNv
cmVQYWdlKCkpCi0gICAgICAgICAgICBHZW9sb2NhdGlvbkNvbnRyb2xsZXI6OmZyb20ocGFnZS0+
Y29yZVBhZ2UoKSktPmVycm9yT2NjdXJyZWQoZXJyb3IuZ2V0KCkpOworICAgIGlmIChhdXRvIGl0
ID0gbV9wYWdlU2V0cy5maW5kKHJlZ2lzdHJhYmxlRG9tYWluKTsgaXQgIT0gbV9wYWdlU2V0cy5l
bmQoKSkgeworICAgICAgICAvLyBGSVhNRTogQWRkIGxvY2FsaXplZCBlcnJvciBzdHJpbmcuCisg
ICAgICAgIGF1dG8gZXJyb3IgPSBHZW9sb2NhdGlvbkVycm9yOjpjcmVhdGUoR2VvbG9jYXRpb25F
cnJvcjo6UG9zaXRpb25VbmF2YWlsYWJsZSwgZXJyb3JNZXNzYWdlKTsKKworICAgICAgICBmb3Ig
KGF1dG8mIHBhZ2UgOiBjb3B5VG9WZWN0b3IoaXQtPnZhbHVlLnBhZ2VTZXQpKSB7CisgICAgICAg
ICAgICBpZiAocGFnZS0+Y29yZVBhZ2UoKSkKKyAgICAgICAgICAgICAgICBHZW9sb2NhdGlvbkNv
bnRyb2xsZXI6OmZyb20ocGFnZS0+Y29yZVBhZ2UoKSktPmVycm9yT2NjdXJyZWQoZXJyb3IuZ2V0
KCkpOworICAgICAgICB9CiAgICAgfQogI2Vsc2UKKyAgICBVTlVTRURfUEFSQU0ocmVnaXN0cmFi
bGVEb21haW4pOwogICAgIFVOVVNFRF9QQVJBTShlcnJvck1lc3NhZ2UpOwogI2VuZGlmIC8vIEVO
QUJMRShHRU9MT0NBVElPTikKIH0KIAotI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCi12b2lkIFdl
Ykdlb2xvY2F0aW9uTWFuYWdlcjo6cmVzZXRQZXJtaXNzaW9ucygpCitib29sIFdlYkdlb2xvY2F0
aW9uTWFuYWdlcjo6aXNVcGRhdGluZyhjb25zdCBQYWdlU2V0cyYgcGFnZVNldHMpIGNvbnN0CiB7
Ci0gICAgbV9wcm9jZXNzLnJlc2V0QWxsR2VvbG9jYXRpb25QZXJtaXNzaW9ucygpOworICAgIHJl
dHVybiAhcGFnZVNldHMucGFnZVNldC5jb21wdXRlc0VtcHR5KCk7CiB9Ci0jZW5kaWYgLy8gUExB
VEZPUk0oSU9TX0ZBTUlMWSkKIAotYm9vbCBXZWJHZW9sb2NhdGlvbk1hbmFnZXI6OmlzVXBkYXRp
bmcoKSBjb25zdAorYm9vbCBXZWJHZW9sb2NhdGlvbk1hbmFnZXI6OmlzSGlnaEFjY3VyYWN5RW5h
YmxlZChjb25zdCBQYWdlU2V0cyYgcGFnZVNldHMpIGNvbnN0CiB7Ci0gICAgcmV0dXJuICFtX3Bh
Z2VTZXQuY29tcHV0ZXNFbXB0eSgpOworICAgIHJldHVybiAhcGFnZVNldHMuaGlnaEFjY3VyYWN5
UGFnZVNldC5jb21wdXRlc0VtcHR5KCk7CiB9CiAKLWJvb2wgV2ViR2VvbG9jYXRpb25NYW5hZ2Vy
Ojppc0hpZ2hBY2N1cmFjeUVuYWJsZWQoKSBjb25zdAorI2lmIFBMQVRGT1JNKElPU19GQU1JTFkp
Cit2b2lkIFdlYkdlb2xvY2F0aW9uTWFuYWdlcjo6cmVzZXRQZXJtaXNzaW9ucyhjb25zdCBXZWJD
b3JlOjpSZWdpc3RyYWJsZURvbWFpbiYgcmVnaXN0cmFibGVEb21haW4pCiB7Ci0gICAgcmV0dXJu
ICFtX2hpZ2hBY2N1cmFjeVBhZ2VTZXQuY29tcHV0ZXNFbXB0eSgpOworICAgIGF1dG8gaXQgPSBt
X3BhZ2VTZXRzLmZpbmQocmVnaXN0cmFibGVEb21haW4pOworICAgIGlmIChpdCAhPSBtX3BhZ2VT
ZXRzLmVuZCgpKQorICAgICAgICByZXR1cm47CisKKyAgICBmb3IgKGF1dG8mIHBhZ2UgOiBjb3B5
VG9WZWN0b3IoaXQtPnZhbHVlLnBhZ2VTZXQpKSB7CisgICAgICAgIGlmIChhdXRvKiBtYWluRnJh
bWUgPSBwYWdlLT5jb3JlUGFnZSgpID8gJnBhZ2UtPmNvcmVQYWdlKCktPm1haW5GcmFtZSgpIDog
bnVsbHB0cikKKyAgICAgICAgICAgIG1haW5GcmFtZS0+cmVzZXRBbGxHZW9sb2NhdGlvblBlcm1p
c3Npb24oKTsKKyAgICB9CiB9CisjZW5kaWYgLy8gUExBVEZPUk0oSU9TX0ZBTUlMWSkKIAogfSAv
LyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
R2VvbG9jYXRpb24vV2ViR2VvbG9jYXRpb25NYW5hZ2VyLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvR2VvbG9jYXRpb24vV2ViR2VvbG9jYXRpb25NYW5hZ2VyLmgKaW5kZXggNDQ4MzU5NjM1
ODc4MjE5N2NjYmE1OTI4ZWZlNjI1MTUyNmMxODUxNS4uY2I2NTg4YzZlNzE4OGJlZmJkNTUxMjNk
NGE1NTliMmIwYjMxYTkzYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dl
b2xvY2F0aW9uL1dlYkdlb2xvY2F0aW9uTWFuYWdlci5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9HZW9sb2NhdGlvbi9XZWJHZW9sb2NhdGlvbk1hbmFnZXIuaApAQCAtMjgsNiArMjgs
NyBAQAogI2luY2x1ZGUgIk1lc3NhZ2VSZWNlaXZlci5oIgogI2luY2x1ZGUgIldlYkdlb2xvY2F0
aW9uUG9zaXRpb24uaCIKICNpbmNsdWRlICJXZWJQcm9jZXNzU3VwcGxlbWVudC5oIgorI2luY2x1
ZGUgPFdlYkNvcmUvUmVnaXN0cmFibGVEb21haW4uaD4KICNpbmNsdWRlIDx3dGYvRm9yd2FyZC5o
PgogI2luY2x1ZGUgPHd0Zi9Ob25jb3B5YWJsZS5oPgogI2luY2x1ZGUgPHd0Zi9XZWFrSGFzaFNl
dC5oPgpAQCAtNDcsMzEgKzQ4LDM0IEBAIGNsYXNzIFdlYkdlb2xvY2F0aW9uTWFuYWdlciA6IHB1
YmxpYyBXZWJQcm9jZXNzU3VwcGxlbWVudCwgcHVibGljIElQQzo6TWVzc2FnZVJlCiAgICAgV1RG
X01BS0VfTk9OQ09QWUFCTEUoV2ViR2VvbG9jYXRpb25NYW5hZ2VyKTsKIHB1YmxpYzoKICAgICBl
eHBsaWNpdCBXZWJHZW9sb2NhdGlvbk1hbmFnZXIoV2ViUHJvY2VzcyYpOworICAgIH5XZWJHZW9s
b2NhdGlvbk1hbmFnZXIoKTsKIAogICAgIHN0YXRpYyBjb25zdCBjaGFyKiBzdXBwbGVtZW50TmFt
ZSgpOwogCi0gICAgdm9pZCByZWdpc3RlcldlYlBhZ2UoV2ViUGFnZSYsIGNvbnN0IFN0cmluZyYg
YXV0aG9yaXphdGlvblRva2VuKTsKKyAgICB2b2lkIHJlZ2lzdGVyV2ViUGFnZShXZWJQYWdlJiwg
Y29uc3QgU3RyaW5nJiBhdXRob3JpemF0aW9uVG9rZW4sIGJvb2wgbmVlZHNIaWdoQWNjdXJhY3kp
OwogICAgIHZvaWQgdW5yZWdpc3RlcldlYlBhZ2UoV2ViUGFnZSYpOwogICAgIHZvaWQgc2V0RW5h
YmxlSGlnaEFjY3VyYWN5Rm9yUGFnZShXZWJQYWdlJiwgYm9vbCk7CiAKLSAgICB2b2lkIHJlcXVl
c3RQZXJtaXNzaW9uKFdlYkNvcmU6Okdlb2xvY2F0aW9uJik7Ci0KIHByaXZhdGU6CiAgICAgLy8g
SVBDOjpNZXNzYWdlUmVjZWl2ZXIKICAgICB2b2lkIGRpZFJlY2VpdmVNZXNzYWdlKElQQzo6Q29u
bmVjdGlvbiYsIElQQzo6RGVjb2RlciYpIG92ZXJyaWRlOwogCi0gICAgYm9vbCBpc1VwZGF0aW5n
KCkgY29uc3Q7Ci0gICAgYm9vbCBpc0hpZ2hBY2N1cmFjeUVuYWJsZWQoKSBjb25zdDsKLQotICAg
IHZvaWQgZGlkQ2hhbmdlUG9zaXRpb24oY29uc3QgV2ViQ29yZTo6R2VvbG9jYXRpb25Qb3NpdGlv
bkRhdGEmKTsKLSAgICB2b2lkIGRpZEZhaWxUb0RldGVybWluZVBvc2l0aW9uKGNvbnN0IFN0cmlu
ZyYgZXJyb3JNZXNzYWdlKTsKKyAgICB2b2lkIGRpZENoYW5nZVBvc2l0aW9uKGNvbnN0IFdlYkNv
cmU6OlJlZ2lzdHJhYmxlRG9tYWluJiwgY29uc3QgV2ViQ29yZTo6R2VvbG9jYXRpb25Qb3NpdGlv
bkRhdGEmKTsKKyAgICB2b2lkIGRpZEZhaWxUb0RldGVybWluZVBvc2l0aW9uKGNvbnN0IFdlYkNv
cmU6OlJlZ2lzdHJhYmxlRG9tYWluJiwgY29uc3QgU3RyaW5nJiBlcnJvck1lc3NhZ2UpOwogI2lm
IFBMQVRGT1JNKElPU19GQU1JTFkpCi0gICAgdm9pZCByZXNldFBlcm1pc3Npb25zKCk7CisgICAg
dm9pZCByZXNldFBlcm1pc3Npb25zKGNvbnN0IFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluJik7
CiAjZW5kaWYgLy8gUExBVEZPUk0oSU9TX0ZBTUlMWSkKIAorICAgIHN0cnVjdCBQYWdlU2V0cyB7
CisgICAgICAgIFdlYWtIYXNoU2V0PFdlYlBhZ2U+IHBhZ2VTZXQ7CisgICAgICAgIFdlYWtIYXNo
U2V0PFdlYlBhZ2U+IGhpZ2hBY2N1cmFjeVBhZ2VTZXQ7CisgICAgfTsKKyAgICBib29sIGlzVXBk
YXRpbmcoY29uc3QgUGFnZVNldHMmKSBjb25zdDsKKyAgICBib29sIGlzSGlnaEFjY3VyYWN5RW5h
YmxlZChjb25zdCBQYWdlU2V0cyYpIGNvbnN0OworCiAgICAgV2ViUHJvY2VzcyYgbV9wcm9jZXNz
OwotICAgIFdlYWtIYXNoU2V0PFdlYlBhZ2U+IG1fcGFnZVNldDsKLSAgICBXZWFrSGFzaFNldDxX
ZWJQYWdlPiBtX2hpZ2hBY2N1cmFjeVBhZ2VTZXQ7CisgICAgSGFzaE1hcDxXZWJDb3JlOjpSZWdp
c3RyYWJsZURvbWFpbiwgUGFnZVNldHM+IG1fcGFnZVNldHM7CisgICAgSGFzaE1hcDxXZWJQYWdl
KiwgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4+IG1fcGFnZVRvUmVnaXN0cmFibGVEb21haW47
CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9HZW9sb2NhdGlvbi9XZWJHZW9sb2NhdGlvbk1hbmFnZXIubWVzc2FnZXMuaW4g
Yi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR2VvbG9jYXRpb24vV2ViR2VvbG9jYXRpb25NYW5h
Z2VyLm1lc3NhZ2VzLmluCmluZGV4IDc5ZjNiNGNlNGVmY2FmMzQ4ODU3ZDk5MzMyNTNkODk1NGYw
ZjFiODcuLjZmY2M2MGQyZTA4ZTI2ZWFiNzNjMWY3MWNkODg0MmRjNTEwNTJkMTggMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HZW9sb2NhdGlvbi9XZWJHZW9sb2NhdGlvbk1h
bmFnZXIubWVzc2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dlb2xvY2F0
aW9uL1dlYkdlb2xvY2F0aW9uTWFuYWdlci5tZXNzYWdlcy5pbgpAQCAtMjEsOSArMjEsOSBAQAog
IyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgogCiBtZXNzYWdlcyAtPiBXZWJHZW9sb2NhdGlvbk1hbmFnZXIgTm90UmVm
Q291bnRlZCB7Ci0gICAgRGlkQ2hhbmdlUG9zaXRpb24oV2ViQ29yZTo6R2VvbG9jYXRpb25Qb3Np
dGlvbkRhdGEgcG9zaXRpb24pOwotICAgIERpZEZhaWxUb0RldGVybWluZVBvc2l0aW9uKFN0cmlu
ZyBlcnJvck1lc3NhZ2UpOworICAgIERpZENoYW5nZVBvc2l0aW9uKFdlYkNvcmU6OlJlZ2lzdHJh
YmxlRG9tYWluIHJlZ2lzdHJhYmxlRG9tYWluLCBXZWJDb3JlOjpHZW9sb2NhdGlvblBvc2l0aW9u
RGF0YSBwb3NpdGlvbik7CisgICAgRGlkRmFpbFRvRGV0ZXJtaW5lUG9zaXRpb24oV2ViQ29yZTo6
UmVnaXN0cmFibGVEb21haW4gcmVnaXN0cmFibGVEb21haW4sIFN0cmluZyBlcnJvck1lc3NhZ2Up
OwogI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCi0gICAgUmVzZXRQZXJtaXNzaW9ucygpOworICAg
IFJlc2V0UGVybWlzc2lvbnMoV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4gcmVnaXN0cmFibGVE
b21haW4pOwogI2VuZGlmCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
V2ViQ29yZVN1cHBvcnQvV2ViR2VvbG9jYXRpb25DbGllbnQuY3BwIGIvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkdlb2xvY2F0aW9uQ2xpZW50LmNwcAppbmRleCBl
YTAyZjJhYzE2ZjczMWJmNTY0MmY4Njc4ZDg2YTQ5ODExZDhjMzg2Li5kMThkZjdlZmFmNTZlZmNm
YzhkMTY5OWM5MWNkMjZiNjg5YmM4MjZhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViR2VvbG9jYXRpb25DbGllbnQuY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJHZW9sb2NhdGlvbkNsaWVudC5j
cHAKQEAgLTQ4LDkgKzQ4LDkgQEAgdm9pZCBXZWJHZW9sb2NhdGlvbkNsaWVudDo6Z2VvbG9jYXRp
b25EZXN0cm95ZWQoKQogICAgIGRlbGV0ZSB0aGlzOwogfQogCi12b2lkIFdlYkdlb2xvY2F0aW9u
Q2xpZW50OjpzdGFydFVwZGF0aW5nKGNvbnN0IFN0cmluZyYgYXV0aG9yaXphdGlvblRva2VuKQor
dm9pZCBXZWJHZW9sb2NhdGlvbkNsaWVudDo6c3RhcnRVcGRhdGluZyhjb25zdCBTdHJpbmcmIGF1
dGhvcml6YXRpb25Ub2tlbiwgYm9vbCBuZWVkc0hpZ2hBY2N1cmFjeSkKIHsKLSAgICBXZWJQcm9j
ZXNzOjpzaW5nbGV0b24oKS5zdXBwbGVtZW50PFdlYkdlb2xvY2F0aW9uTWFuYWdlcj4oKS0+cmVn
aXN0ZXJXZWJQYWdlKG1fcGFnZSwgYXV0aG9yaXphdGlvblRva2VuKTsKKyAgICBXZWJQcm9jZXNz
OjpzaW5nbGV0b24oKS5zdXBwbGVtZW50PFdlYkdlb2xvY2F0aW9uTWFuYWdlcj4oKS0+cmVnaXN0
ZXJXZWJQYWdlKG1fcGFnZSwgYXV0aG9yaXphdGlvblRva2VuLCBuZWVkc0hpZ2hBY2N1cmFjeSk7
CiB9CiAKIHZvaWQgV2ViR2VvbG9jYXRpb25DbGllbnQ6OnN0b3BVcGRhdGluZygpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViR2VvbG9jYXRp
b25DbGllbnQuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJH
ZW9sb2NhdGlvbkNsaWVudC5oCmluZGV4IGIxNjgxNjc0ODk2MjI1NDdlYzk0ZTY3OThmYjY5ZGQ4
ZmE2ZDAxMWMuLjY1ZWMwZTkzNTQyODNkNWZhNzdhZjEwYjRlMTgwYjg3MTJmYWVmMDcgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJHZW9sb2Nh
dGlvbkNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9y
dC9XZWJHZW9sb2NhdGlvbkNsaWVudC5oCkBAIC0zMSw3ICszMSw3IEBAIG5hbWVzcGFjZSBXZWJL
aXQgewogCiBjbGFzcyBXZWJQYWdlOwogCi1jbGFzcyBXZWJHZW9sb2NhdGlvbkNsaWVudCA6IHB1
YmxpYyBXZWJDb3JlOjpHZW9sb2NhdGlvbkNsaWVudCB7CitjbGFzcyBXZWJHZW9sb2NhdGlvbkNs
aWVudCBmaW5hbCA6IHB1YmxpYyBXZWJDb3JlOjpHZW9sb2NhdGlvbkNsaWVudCB7CiAgICAgV1RG
X01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgV2ViR2VvbG9jYXRpb25DbGllbnQo
V2ViUGFnZSYgcGFnZSkKQEAgLTQyLDE3ICs0MiwxNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB+
V2ViR2VvbG9jYXRpb25DbGllbnQoKTsKIAogcHJpdmF0ZToKLSAgICB2b2lkIGdlb2xvY2F0aW9u
RGVzdHJveWVkKCkgb3ZlcnJpZGU7CisgICAgdm9pZCBnZW9sb2NhdGlvbkRlc3Ryb3llZCgpIGZp
bmFsOwogCi0gICAgdm9pZCBzdGFydFVwZGF0aW5nKGNvbnN0IFN0cmluZyYgYXV0aG9yaXphdGlv
blRva2VuKSBvdmVycmlkZTsKLSAgICB2b2lkIHN0b3BVcGRhdGluZygpIG92ZXJyaWRlOwotICAg
IHZvaWQgcmV2b2tlQXV0aG9yaXphdGlvblRva2VuKGNvbnN0IFN0cmluZyYpIG92ZXJyaWRlOwot
ICAgIHZvaWQgc2V0RW5hYmxlSGlnaEFjY3VyYWN5KGJvb2wpIG92ZXJyaWRlOworICAgIHZvaWQg
c3RhcnRVcGRhdGluZyhjb25zdCBTdHJpbmcmIGF1dGhvcml6YXRpb25Ub2tlbiwgYm9vbCBuZWVk
c0hpZ2hBY2N1cmFjeSkgZmluYWw7CisgICAgdm9pZCBzdG9wVXBkYXRpbmcoKSBmaW5hbDsKKyAg
ICB2b2lkIHJldm9rZUF1dGhvcml6YXRpb25Ub2tlbihjb25zdCBTdHJpbmcmKSBmaW5hbDsKKyAg
ICB2b2lkIHNldEVuYWJsZUhpZ2hBY2N1cmFjeShib29sKSBmaW5hbDsKIAotICAgIHN0ZDo6b3B0
aW9uYWw8V2ViQ29yZTo6R2VvbG9jYXRpb25Qb3NpdGlvbkRhdGE+IGxhc3RQb3NpdGlvbigpIG92
ZXJyaWRlOworICAgIHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6R2VvbG9jYXRpb25Qb3NpdGlvbkRh
dGE+IGxhc3RQb3NpdGlvbigpIGZpbmFsOwogCi0gICAgdm9pZCByZXF1ZXN0UGVybWlzc2lvbihX
ZWJDb3JlOjpHZW9sb2NhdGlvbiYpIG92ZXJyaWRlOwotICAgIHZvaWQgY2FuY2VsUGVybWlzc2lv
blJlcXVlc3QoV2ViQ29yZTo6R2VvbG9jYXRpb24mKSBvdmVycmlkZTsKKyAgICB2b2lkIHJlcXVl
c3RQZXJtaXNzaW9uKFdlYkNvcmU6Okdlb2xvY2F0aW9uJikgZmluYWw7CisgICAgdm9pZCBjYW5j
ZWxQZXJtaXNzaW9uUmVxdWVzdChXZWJDb3JlOjpHZW9sb2NhdGlvbiYpIGZpbmFsOwogCiAgICAg
V2ViUGFnZSYgbV9wYWdlOwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9XZWJQcm9jZXNzLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmNw
cAppbmRleCBkZDQ1YjQ1ODhiZjlkZDEyNGUxOGZhYTk1YTMyNmVkMzE5MzFhNDU3Li43OTk2MTNk
Mzc3NDIzNjNiZmJkY2Q5NTI5Nzk5NjIyMDZmMDIyOGE4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1dlYlByb2Nlc3MuY3BwCkBAIC0xNTI3LDE2ICsxNTI3LDYgQEAgdm9pZCBXZWJQcm9jZXNz
OjpwYWdlQWN0aXZpdHlTdGF0ZURpZENoYW5nZShQYWdlSWRlbnRpZmllciwgT3B0aW9uU2V0PFdl
YkNvcmU6OkEKICAgICB9CiB9CiAKLSNpZiBQTEFURk9STShJT1NfRkFNSUxZKQotdm9pZCBXZWJQ
cm9jZXNzOjpyZXNldEFsbEdlb2xvY2F0aW9uUGVybWlzc2lvbnMoKQotewotICAgIGZvciAoYXV0
byYgcGFnZSA6IG1fcGFnZU1hcC52YWx1ZXMoKSkgewotICAgICAgICBpZiAoRnJhbWUqIG1haW5G
cmFtZSA9IHBhZ2UtPm1haW5GcmFtZSgpKQotICAgICAgICAgICAgbWFpbkZyYW1lLT5yZXNldEFs
bEdlb2xvY2F0aW9uUGVybWlzc2lvbigpOwotICAgIH0KLX0KLSNlbmRpZgotCiB2b2lkIFdlYlBy
b2Nlc3M6OnByZXBhcmVUb1N1c3BlbmQoYm9vbCBpc1N1c3BlbnNpb25JbW1pbmVudCwgQ29tcGxl
dGlvbkhhbmRsZXI8dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewogICAgIFdFQlBST0NF
U1NfUkVMRUFTRV9MT0coUHJvY2Vzc1N1c3BlbnNpb24sICJwcmVwYXJlVG9TdXNwZW5kOiBpc1N1
c3BlbnNpb25JbW1pbmVudD0lZCIsIGlzU3VzcGVuc2lvbkltbWluZW50KTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmggYi9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvV2ViUHJvY2Vzcy5oCmluZGV4IGM1ZGQyMjVkYzFiNzFkYTljZGQ0ZWVkYmEwYTA3
ZTc2MTc4MTU3NWUuLjU5NWFmMGI5NzQxMjkwZGE2YzczNGEwODg2YjgyNGQyM2IxZWU1N2UgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmgKKysrIGIvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuaApAQCAtMzEwLDEwICszMTAsNiBAQCBw
dWJsaWM6CiAKICAgICB2b2lkIGlzSklURW5hYmxlZChDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJv
b2wpPiYmKTsKIAotI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCi0gICAgdm9pZCByZXNldEFsbEdl
b2xvY2F0aW9uUGVybWlzc2lvbnMoKTsKLSNlbmRpZgotCiAjaWYgUExBVEZPUk0oV0FZTEFORCkK
ICAgICBXYXlsYW5kQ29tcG9zaXRvckRpc3BsYXkqIHdheWxhbmRDb21wb3NpdG9yRGlzcGxheSgp
IGNvbnN0IHsgcmV0dXJuIG1fd2F5bGFuZENvbXBvc2l0b3JEaXNwbGF5LmdldCgpOyB9CiAjZW5k
aWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dl
Ykdlb2xvY2F0aW9uQ2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3Vw
cG9ydC9XZWJHZW9sb2NhdGlvbkNsaWVudC5oCmluZGV4IDc3YzI4MjhkODU5NTM2MzViNjRjNGM4
OTk5OTBhMGE2NDgxNzFiNmMuLmIwN2M3OTAzZDI5MmE5MzM5MWU1YzQwYWVkZDY1ZGVkYmFmOGM1
ZjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dl
Ykdlb2xvY2F0aW9uQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29y
ZVN1cHBvcnQvV2ViR2VvbG9jYXRpb25DbGllbnQuaApAQCAtMzksNyArMzksNyBAQCBwdWJsaWM6
CiAgICAgV2ViVmlldyAqd2ViVmlldygpIHsgcmV0dXJuIG1fd2ViVmlldzsgfQogCiAgICAgdm9p
ZCBnZW9sb2NhdGlvbkRlc3Ryb3llZCgpIG92ZXJyaWRlOwotICAgIHZvaWQgc3RhcnRVcGRhdGlu
Zyhjb25zdCBTdHJpbmcmIGF1dGhvcml6YXRpb25Ub2tlbikgb3ZlcnJpZGU7CisgICAgdm9pZCBz
dGFydFVwZGF0aW5nKGNvbnN0IFN0cmluZyYgYXV0aG9yaXphdGlvblRva2VuLCBib29sIGVuYWJs
ZUhpZ2hBY2N1cmFjeSkgb3ZlcnJpZGU7CiAgICAgdm9pZCBzdG9wVXBkYXRpbmcoKSBvdmVycmlk
ZTsKICNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogICAgIC8vIEZJWE1FOiB1bmlmeSB0aGlzIHdp
dGggTWFjIG9uIE9wZW5Tb3VyY2UuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21h
Yy9XZWJDb3JlU3VwcG9ydC9XZWJHZW9sb2NhdGlvbkNsaWVudC5tbSBiL1NvdXJjZS9XZWJLaXRM
ZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkdlb2xvY2F0aW9uQ2xpZW50Lm1tCmluZGV4IGU3
ODhhNTdkZDZmODA3ZTdiMjVjNzQyYmE4MDE5MzU3YTI3MzRkMzguLmE4Yjg1MjFlMmRhNDcxOGRj
MTRiNDM3MGIxYTViNGI4ZDYzMjg1ODkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kv
bWFjL1dlYkNvcmVTdXBwb3J0L1dlYkdlb2xvY2F0aW9uQ2xpZW50Lm1tCisrKyBiL1NvdXJjZS9X
ZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkdlb2xvY2F0aW9uQ2xpZW50Lm1tCkBA
IC04Myw5ICs4MywxNiBAQCB2b2lkIFdlYkdlb2xvY2F0aW9uQ2xpZW50OjpnZW9sb2NhdGlvbkRl
c3Ryb3llZCgpCiAgICAgZGVsZXRlIHRoaXM7CiB9CiAKLXZvaWQgV2ViR2VvbG9jYXRpb25DbGll
bnQ6OnN0YXJ0VXBkYXRpbmcoY29uc3QgU3RyaW5nJiBhdXRob3JpemF0aW9uVG9rZW4pCit2b2lk
IFdlYkdlb2xvY2F0aW9uQ2xpZW50OjpzdGFydFVwZGF0aW5nKGNvbnN0IFN0cmluZyYgYXV0aG9y
aXphdGlvblRva2VuLCBib29sIGVuYWJsZUhpZ2hBY2N1cmFjeSkKIHsKICAgICBVTlVTRURfUEFS
QU0oYXV0aG9yaXphdGlvblRva2VuKTsKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZKQorICAgIGlm
IChlbmFibGVIaWdoQWNjdXJhY3kpCisgICAgICAgIHNldEVuYWJsZUhpZ2hBY2N1cmFjeSh0cnVl
KTsKKyNlbHNlCisgICAgVU5VU0VEX1BBUkFNKGVuYWJsZUhpZ2hBY2N1cmFjeSk7CisjZW5kaWYK
KwogICAgIFtbbV93ZWJWaWV3IF9nZW9sb2NhdGlvblByb3ZpZGVyXSByZWdpc3RlcldlYlZpZXc6
bV93ZWJWaWV3XTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2Vi
Q29yZVN1cHBvcnQvV2ViR2VvbG9jYXRpb25DbGllbnQuY3BwIGIvU291cmNlL1dlYktpdExlZ2Fj
eS93aW4vV2ViQ29yZVN1cHBvcnQvV2ViR2VvbG9jYXRpb25DbGllbnQuY3BwCmluZGV4IGUxZmNh
Mjc3MjQ5NjE1NGE0ZTA3MGU0ZGZkYTdlNzdlOTczNTgyYzEuLmFjNTQ1MTRjNjQyZWEwZTVmOGFm
MzM2OWUxYmJiYWUwYzM5MDcxYjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2lu
L1dlYkNvcmVTdXBwb3J0L1dlYkdlb2xvY2F0aW9uQ2xpZW50LmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0TGVnYWN5L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJHZW9sb2NhdGlvbkNsaWVudC5jcHAKQEAg
LTQ4LDkgKzQ4LDEwIEBAIHZvaWQgV2ViR2VvbG9jYXRpb25DbGllbnQ6Omdlb2xvY2F0aW9uRGVz
dHJveWVkKCkKICAgICBkZWxldGUgdGhpczsKIH0KIAotdm9pZCBXZWJHZW9sb2NhdGlvbkNsaWVu
dDo6c3RhcnRVcGRhdGluZyhjb25zdCBTdHJpbmcmIGF1dGhvcml6YXRpb25Ub2tlbikKK3ZvaWQg
V2ViR2VvbG9jYXRpb25DbGllbnQ6OnN0YXJ0VXBkYXRpbmcoY29uc3QgU3RyaW5nJiBhdXRob3Jp
emF0aW9uVG9rZW4sIGJvb2wgZW5hYmxlSGlnaEFjY3VyYWN5KQogewogICAgIFVOVVNFRF9QQVJB
TShhdXRob3JpemF0aW9uVG9rZW4pOworICAgIFVOVVNFRF9QQVJBTShlbmFibGVIaWdoQWNjdXJh
Y3kpOwogICAgIENPTVB0cjxJV2ViR2VvbG9jYXRpb25Qcm92aWRlcj4gcHJvdmlkZXI7CiAgICAg
aWYgKEZBSUxFRChtX3dlYlZpZXctPmdlb2xvY2F0aW9uUHJvdmlkZXIoJnByb3ZpZGVyKSkpCiAg
ICAgICAgIHJldHVybjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkNv
cmVTdXBwb3J0L1dlYkdlb2xvY2F0aW9uQ2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dp
bi9XZWJDb3JlU3VwcG9ydC9XZWJHZW9sb2NhdGlvbkNsaWVudC5oCmluZGV4IDE5NTc0MTdiNTVk
N2U1ZDJmOWI3MWU1YzlkOWMzMDNkZmVmNGUxODYuLjViOGU5NDQ0ZjIxZmVkNDNlZGYyNTkxYTJi
YTE1ZGEzYmQ0NGY0NGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkNv
cmVTdXBwb3J0L1dlYkdlb2xvY2F0aW9uQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYktpdExlZ2Fj
eS93aW4vV2ViQ29yZVN1cHBvcnQvV2ViR2VvbG9jYXRpb25DbGllbnQuaApAQCAtNDEsNyArNDEs
NyBAQCBwdWJsaWM6CiAgICAgV2ViR2VvbG9jYXRpb25DbGllbnQoV2ViVmlldyopOwogCiAgICAg
dm9pZCBnZW9sb2NhdGlvbkRlc3Ryb3llZCgpIGZpbmFsOwotICAgIHZvaWQgc3RhcnRVcGRhdGlu
Zyhjb25zdCBTdHJpbmcmIGF1dGhvcml6YXRpb25Ub2tlbikgZmluYWw7CisgICAgdm9pZCBzdGFy
dFVwZGF0aW5nKGNvbnN0IFN0cmluZyYgYXV0aG9yaXphdGlvblRva2VuLCBib29sIGVuYWJsZUhp
Z2hBY2N1cmFjeSkgZmluYWw7CiAgICAgdm9pZCBzdG9wVXBkYXRpbmcoKSBmaW5hbDsKICAgICB2
b2lkIHNldEVuYWJsZUhpZ2hBY2N1cmFjeShib29sKSBmaW5hbCB7IH0KICAgICBzdGQ6Om9wdGlv
bmFsPFdlYkNvcmU6Okdlb2xvY2F0aW9uUG9zaXRpb25EYXRhPiBsYXN0UG9zaXRpb24oKSBmaW5h
bDsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>452062</attachid>
            <date>2022-02-15 11:20:05 -0800</date>
            <delta_ts>2022-02-15 13:11:55 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-236566-20220215112004.patch</filename>
            <type>text/plain</type>
            <size>109769</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg5ODM4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IGY2MDY5ODliY2RhNjQyMTdkZTJlNzcw
ODM4NmYzNzA2N2ExYThkZTQuLjE4NzM2NzA0OWU1NTRiZmUyMGNjNWM3ZGQ0OThiZjJjZTVjYWNi
MzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMTUgQEAKKzIwMjItMDItMTMgIENocmlzIER1bWV6ICA8Y2R1bWV6
QGFwcGxlLmNvbT4KKworICAgICAgICBEbyBwcmVsaW1pbmFyeSB3b3JrIHRvIHBhc3MgZG9tYWlu
IG5hbWVzIHRvIENvcmVMb2NhdGlvbgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MjM2NTY2CisgICAgICAgIDxyZGFyOi8vODg3NjE0MTM+CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgRGFyaW4gQWRsZXIuCisKKyAgICAgICAgQWRkIGJ1aWxkIHRpbWUgZmxh
ZyBmb3IgcGFzc2luZyB3ZWJzaXRlIGlkZW50aWZpZXJzIHRvIENvcmVMb2NhdGlvbi4KKworICAg
ICAgICAqIHd0Zi9QbGF0Zm9ybUhhdmUuaDoKKwogMjAyMi0wMi0xNSAgUm9iaW4gTW9yaXNzZXQg
IDxybW9yaXNzZXRAYXBwbGUuY29tPgogCiAgICAgICAgIFtXR1NMXSBJbXBsZW1lbnQgZW5vdWdo
IG9mIHRoZSBsZXhlciBmb3IgdGhlIHNpbXBsZXN0IHNoYWRlcnMKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCAyMzNh
NGMzZjE4ODg5YmRlYWQ3NDc4YjdmNjM0NzU5YWJkMTdmM2VlLi4wNjIzYjZhNWViYTBkMTU0NzAy
N2VhNDYwYzczZTJlYmU0YWY0YjM1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VM
b2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNTQgQEAKKzIwMjIt
MDItMTMgIENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KKworICAgICAgICBEbyBwcmVs
aW1pbmFyeSB3b3JrIHRvIHBhc3MgZG9tYWluIG5hbWVzIHRvIENvcmVMb2NhdGlvbgorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjM2NTY2CisgICAgICAg
IDxyZGFyOi8vODg3NjE0MTM+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgRGFyaW4gQWRsZXIuCisK
KyAgICAgICAgRG8gcHJlbGltaW5hcnkgd29yayB0byBwYXNzIGRvbWFpbiBuYW1lcyB0byBDb3Jl
TG9jYXRpb24gd2hlbiB1c2luZyB0aGUgR2VvbG9jYXRpb24gQVBJLgorICAgICAgICBUaGlzIHBp
cGVzIHRoZSBkb21haW4gbmFtZXMgYWxsIHRoZSB3YXkgZnJvbSB0aGUgR2VvbG9jYXRpb24gQVBJ
IHRvIHRoZSBDb3JlTG9jYXRpb24gY2FsbHMKKyAgICAgICAgYnV0IGRvZXNuJ3QgeWV0IHBhc3Mg
dGhlIGRvbWFpbiB0byBDb3JlTG9jYXRpb24gZHVlIHRvIDxyZGFyOi8vODg4MzQzMDE+LiBJIHdp
bGwgZm9sbG93LXVwCisgICAgICAgIG9uY2UgPHJkYXI6Ly84ODgzNDMwMT4gaXMgZml4ZWQuCisK
KyAgICAgICAgKiBNb2R1bGVzL2dlb2xvY2F0aW9uL0dlb2xvY2F0aW9uQ2xpZW50Lmg6CisgICAg
ICAgICogTW9kdWxlcy9nZW9sb2NhdGlvbi9HZW9sb2NhdGlvbkNvbnRyb2xsZXIuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6R2VvbG9jYXRpb25Db250cm9sbGVyOjpkaWROYXZpZ2F0ZVBhZ2UpOgor
ICAgICAgICAoV2ViQ29yZTo6R2VvbG9jYXRpb25Db250cm9sbGVyOjphZGRPYnNlcnZlcik6Cisg
ICAgICAgIChXZWJDb3JlOjpHZW9sb2NhdGlvbkNvbnRyb2xsZXI6OnJlbW92ZU9ic2VydmVyKToK
KyAgICAgICAgKFdlYkNvcmU6Okdlb2xvY2F0aW9uQ29udHJvbGxlcjo6YWN0aXZpdHlTdGF0ZURp
ZENoYW5nZSk6CisgICAgICAgIChXZWJDb3JlOjpHZW9sb2NhdGlvbkNvbnRyb2xsZXI6OnN0YXJ0
VXBkYXRpbmdJZk5lY2Vzc2FyeSk6CisgICAgICAgIChXZWJDb3JlOjpHZW9sb2NhdGlvbkNvbnRy
b2xsZXI6OnN0b3BVcGRhdGluZ0lmTmVjZXNzYXJ5KToKKyAgICAgICAgKiBNb2R1bGVzL2dlb2xv
Y2F0aW9uL0dlb2xvY2F0aW9uQ29udHJvbGxlci5oOgorICAgICAgICAoV2ViQ29yZTo6R2VvbG9j
YXRpb25Db250cm9sbGVyOjpuZWVkc0hpZ2hBY2N1cmFjeSBjb25zdCk6CisgICAgICAgICogTW9k
dWxlcy9nZW9sb2NhdGlvbi9HZW9sb2NhdGlvblBvc2l0aW9uRGF0YS5oOgorICAgICAgICAqIE1v
ZHVsZXMvZ2VvbG9jYXRpb24vaW9zL0dlb2xvY2F0aW9uUG9zaXRpb25EYXRhSU9TLm1tOgorICAg
ICAgICAqIFNvdXJjZXNDb2NvYS50eHQ6CisgICAgICAgICogV2ViQ29yZS54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qOgorICAgICAgICAqIHBhZ2UvUGFnZS5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpQYWdlOjpkaWRDb21taXRMb2FkKToKKyAgICAgICAgKiBwbGF0Zm9ybS9jb2NvYS9Db3JlTG9j
YXRpb25HZW9sb2NhdGlvblByb3ZpZGVyLmg6IENvcGllZCBmcm9tIFNvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvZ2VvbG9jYXRpb24vR2VvbG9jYXRpb25DbGllbnQuaC4KKyAgICAgICAgKiBwbGF0Zm9y
bS9jb2NvYS9Db3JlTG9jYXRpb25HZW9sb2NhdGlvblByb3ZpZGVyLm1tOiBBZGRlZC4KKyAgICAg
ICAgKGlzQXV0aG9yaXphdGlvbkdyYW50ZWQpOgorICAgICAgICAoLVtXZWJDTExvY2F0aW9uTWFu
YWdlciBpbml0V2l0aFdlYnNpdGVJZGVudGlmaWVyOmNsaWVudDpdKToKKyAgICAgICAgKC1bV2Vi
Q0xMb2NhdGlvbk1hbmFnZXIgZGVhbGxvY10pOgorICAgICAgICAoLVtXZWJDTExvY2F0aW9uTWFu
YWdlciBzdGFydF0pOgorICAgICAgICAoLVtXZWJDTExvY2F0aW9uTWFuYWdlciBzdG9wXSk6Cisg
ICAgICAgICgtW1dlYkNMTG9jYXRpb25NYW5hZ2VyIHNldEVuYWJsZUhpZ2hBY2N1cmFjeTpdKToK
KyAgICAgICAgKC1bV2ViQ0xMb2NhdGlvbk1hbmFnZXIgcmVxdWVzdEdlb2xvY2F0aW9uQXV0aG9y
aXphdGlvbl0pOgorICAgICAgICAoLVtXZWJDTExvY2F0aW9uTWFuYWdlciBsb2NhdGlvbk1hbmFn
ZXJEaWRDaGFuZ2VBdXRob3JpemF0aW9uOl0pOgorICAgICAgICAoLVtXZWJDTExvY2F0aW9uTWFu
YWdlciBsb2NhdGlvbk1hbmFnZXI6ZGlkVXBkYXRlTG9jYXRpb25zOl0pOgorICAgICAgICAoLVtX
ZWJDTExvY2F0aW9uTWFuYWdlciBsb2NhdGlvbk1hbmFnZXI6ZGlkRmFpbFdpdGhFcnJvcjpdKToK
KyAgICAgICAgKFdlYkNvcmU6OkNvcmVMb2NhdGlvbkdlb2xvY2F0aW9uUHJvdmlkZXI6OkNvcmVM
b2NhdGlvbkdlb2xvY2F0aW9uUHJvdmlkZXIpOgorICAgICAgICAoV2ViQ29yZTo6Q29yZUxvY2F0
aW9uR2VvbG9jYXRpb25Qcm92aWRlcjo6fkNvcmVMb2NhdGlvbkdlb2xvY2F0aW9uUHJvdmlkZXIp
OgorICAgICAgICAoV2ViQ29yZTo6Q29yZUxvY2F0aW9uR2VvbG9jYXRpb25Qcm92aWRlcjo6c3Rh
cnQpOgorICAgICAgICAoV2ViQ29yZTo6Q29yZUxvY2F0aW9uR2VvbG9jYXRpb25Qcm92aWRlcjo6
c3RvcCk6CisgICAgICAgIChXZWJDb3JlOjpDb3JlTG9jYXRpb25HZW9sb2NhdGlvblByb3ZpZGVy
OjpzZXRFbmFibGVIaWdoQWNjdXJhY3kpOgorICAgICAgICAoV2ViQ29yZTo6Q29yZUxvY2F0aW9u
R2VvbG9jYXRpb25Qcm92aWRlcjo6cmVxdWVzdEF1dGhvcml6YXRpb24pOgorICAgICAgICAqIHBs
YXRmb3JtL21vY2svR2VvbG9jYXRpb25DbGllbnRNb2NrLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
Okdlb2xvY2F0aW9uQ2xpZW50TW9jazo6c3RhcnRVcGRhdGluZyk6CisgICAgICAgICogcGxhdGZv
cm0vbW9jay9HZW9sb2NhdGlvbkNsaWVudE1vY2suaDoKKwogMjAyMi0wMi0xNSAgQW50dGkgS29p
dmlzdG8gIDxhbnR0aUBhcHBsZS5jb20+CiAKICAgICAgICAgW0NTUyBDb250YWluZXIgUXVlcmll
c10gU3VwcG9ydCBhbGwgc2l6ZSBmZWF0dXJlcwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwppbmRleCA2OGJmZGI0ODczYWEwNWJm
YjFkNjIzNTFkZWYzNjQ0ZmQ3MDkzZTA3Li5kMDkyNGFhNzQxMDhmOTNmMzE4NjU0MzA4MzljNGYz
OTgyMTU1YmIxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZworKysgYi9Tb3Vy
Y2UvV2ViS2l0L0NoYW5nZUxvZwpAQCAtMSwzICsxLDk0IEBACisyMDIyLTAyLTEzICBDaHJpcyBE
dW1leiAgPGNkdW1lekBhcHBsZS5jb20+CisKKyAgICAgICAgRG8gcHJlbGltaW5hcnkgd29yayB0
byBwYXNzIGRvbWFpbiBuYW1lcyB0byBDb3JlTG9jYXRpb24KKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzNjU2NgorICAgICAgICA8cmRhcjovLzg4NzYx
NDEzPgorCisgICAgICAgIFJldmlld2VkIGJ5IERhcmluIEFkbGVyLgorCisgICAgICAgIERvIHBy
ZWxpbWluYXJ5IHdvcmsgdG8gcGFzcyBkb21haW4gbmFtZXMgdG8gQ29yZUxvY2F0aW9uIHdoZW4g
dXNpbmcgdGhlIEdlb2xvY2F0aW9uIEFQSS4KKyAgICAgICAgVGhpcyBwaXBlcyB0aGUgZG9tYWlu
IG5hbWVzIGFsbCB0aGUgd2F5IGZyb20gdGhlIEdlb2xvY2F0aW9uIEFQSSB0byB0aGUgQ29yZUxv
Y2F0aW9uIGNhbGxzCisgICAgICAgIGJ1dCBkb2Vzbid0IHlldCBwYXNzIHRoZSBkb21haW4gdG8g
Q29yZUxvY2F0aW9uIGR1ZSB0byA8cmRhcjovLzg4ODM0MzAxPi4gSSB3aWxsIGZvbGxvdy11cAor
ICAgICAgICBvbmNlIDxyZGFyOi8vODg4MzQzMDE+IGlzIGZpeGVkLgorCisgICAgICAgICogU291
cmNlc0NvY29hLnR4dDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0MvV0tHZW9sb2NhdGlvbk1h
bmFnZXIuY3BwOgorICAgICAgICAoV0tHZW9sb2NhdGlvbk1hbmFnZXJTZXRQcm92aWRlcik6Cisg
ICAgICAgICogVUlQcm9jZXNzL0NvY29hL1dlYkdlb2xvY2F0aW9uTWFuYWdlclByb3h5Q29jb2Eu
Y3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYktpdDo6V2ViR2VvbG9jYXRpb25NYW5hZ2VyUHJveHk6
OnBvc2l0aW9uQ2hhbmdlZCk6CisgICAgICAgIChXZWJLaXQ6OldlYkdlb2xvY2F0aW9uTWFuYWdl
clByb3h5OjplcnJvck9jY3VycmVkKToKKyAgICAgICAgKFdlYktpdDo6V2ViR2VvbG9jYXRpb25N
YW5hZ2VyUHJveHk6OnJlc2V0R2VvbG9jYXRpb24pOgorICAgICAgICAoV2ViS2l0OjpXZWJHZW9s
b2NhdGlvbk1hbmFnZXJQcm94eTo6aXNVcGRhdGluZyBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6
OldlYkdlb2xvY2F0aW9uTWFuYWdlclByb3h5Ojppc0hpZ2hBY2N1cmFjeUVuYWJsZWQgY29uc3Qp
OgorICAgICAgICAoV2ViS2l0OjpXZWJHZW9sb2NhdGlvbk1hbmFnZXJQcm94eTo6cHJvdmlkZXJT
dGFydFVwZGF0aW5nKToKKyAgICAgICAgKFdlYktpdDo6V2ViR2VvbG9jYXRpb25NYW5hZ2VyUHJv
eHk6OnByb3ZpZGVyU3RvcFVwZGF0aW5nKToKKyAgICAgICAgKFdlYktpdDo6V2ViR2VvbG9jYXRp
b25NYW5hZ2VyUHJveHk6OnByb3ZpZGVyU2V0RW5hYmxlZEhpZ2hBY2N1cmFjeSk6CisgICAgICAg
ICogVUlQcm9jZXNzL1dlYkdlb2xvY2F0aW9uTWFuYWdlclByb3h5LmNwcDoKKyAgICAgICAgKFdl
YktpdDo6V2ViR2VvbG9jYXRpb25NYW5hZ2VyUHJveHk6OldlYkdlb2xvY2F0aW9uTWFuYWdlclBy
b3h5KToKKyAgICAgICAgKFdlYktpdDo6V2ViR2VvbG9jYXRpb25NYW5hZ2VyUHJveHk6OnByb2Nl
c3NQb29sRGVzdHJveWVkKToKKyAgICAgICAgKFdlYktpdDo6V2ViR2VvbG9jYXRpb25NYW5hZ2Vy
UHJveHk6OnByb2Nlc3NEaWRDbG9zZSk6CisgICAgICAgIChXZWJLaXQ6OldlYkdlb2xvY2F0aW9u
TWFuYWdlclByb3h5Ojpwcm92aWRlckRpZENoYW5nZVBvc2l0aW9uKToKKyAgICAgICAgKFdlYktp
dDo6V2ViR2VvbG9jYXRpb25NYW5hZ2VyUHJveHk6OnByb3ZpZGVyRGlkRmFpbFRvRGV0ZXJtaW5l
UG9zaXRpb24pOgorICAgICAgICAoV2ViS2l0OjpXZWJHZW9sb2NhdGlvbk1hbmFnZXJQcm94eTo6
c3RhcnRVcGRhdGluZyk6CisgICAgICAgIChXZWJLaXQ6OldlYkdlb2xvY2F0aW9uTWFuYWdlclBy
b3h5OjpzdG9wVXBkYXRpbmcpOgorICAgICAgICAoV2ViS2l0OjpXZWJHZW9sb2NhdGlvbk1hbmFn
ZXJQcm94eTo6c2V0RW5hYmxlSGlnaEFjY3VyYWN5KToKKyAgICAgICAgKFdlYktpdDo6V2ViR2Vv
bG9jYXRpb25NYW5hZ2VyUHJveHk6OnNldFByb3ZpZGVyKToKKyAgICAgICAgKFdlYktpdDo6V2Vi
R2VvbG9jYXRpb25NYW5hZ2VyUHJveHk6OmlzVXBkYXRpbmcgY29uc3QpOgorICAgICAgICAoV2Vi
S2l0OjpXZWJHZW9sb2NhdGlvbk1hbmFnZXJQcm94eTo6aXNIaWdoQWNjdXJhY3lFbmFibGVkIGNv
bnN0KToKKyAgICAgICAgKFdlYktpdDo6V2ViR2VvbG9jYXRpb25NYW5hZ2VyUHJveHk6OnByb3Zp
ZGVyU3RhcnRVcGRhdGluZyk6CisgICAgICAgIChXZWJLaXQ6OldlYkdlb2xvY2F0aW9uTWFuYWdl
clByb3h5Ojpwcm92aWRlclN0b3BVcGRhdGluZyk6CisgICAgICAgIChXZWJLaXQ6OldlYkdlb2xv
Y2F0aW9uTWFuYWdlclByb3h5Ojpwcm92aWRlclNldEVuYWJsZWRIaWdoQWNjdXJhY3kpOgorICAg
ICAgICAoV2ViS2l0OjpXZWJHZW9sb2NhdGlvbk1hbmFnZXJQcm94eTo6cmVzZXRQZXJtaXNzaW9u
cyk6IERlbGV0ZWQuCisgICAgICAgIChXZWJLaXQ6OldlYkdlb2xvY2F0aW9uTWFuYWdlclByb3h5
OjpyZW1vdmVSZXF1ZXN0ZXIpOiBEZWxldGVkLgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJHZW9s
b2NhdGlvbk1hbmFnZXJQcm94eS5oOgorICAgICAgICAoV2ViS2l0OjpXZWJHZW9sb2NhdGlvbk1h
bmFnZXJQcm94eTo6bGFzdFBvc2l0aW9uIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYktp
dDo6V2ViR2VvbG9jYXRpb25NYW5hZ2VyUHJveHk6OmlzVXBkYXRpbmcgY29uc3QpOiBEZWxldGVk
LgorICAgICAgICAoV2ViS2l0OjpXZWJHZW9sb2NhdGlvbk1hbmFnZXJQcm94eTo6aXNIaWdoQWNj
dXJhY3lFbmFibGVkIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViR2Vv
bG9jYXRpb25NYW5hZ2VyUHJveHkubWVzc2FnZXMuaW46CisgICAgICAgICogVUlQcm9jZXNzL2lv
cy9XS0dlb2xvY2F0aW9uUHJvdmlkZXJJT1MubW06CisgICAgICAgICgtW1dLR2VvbG9jYXRpb25Q
cm92aWRlcklPUyBfc3RhcnRVcGRhdGluZ10pOgorICAgICAgICAoLVtXS0dlb2xvY2F0aW9uUHJv
dmlkZXJJT1MgX3N0b3BVcGRhdGluZ10pOgorICAgICAgICAoLVtXS0dlb2xvY2F0aW9uUHJvdmlk
ZXJJT1MgX3NldEVuYWJsZUhpZ2hBY2N1cmFjeTpdKToKKyAgICAgICAgKC1bV0tHZW9sb2NhdGlv
blByb3ZpZGVySU9TIGluaXRXaXRoUHJvY2Vzc1Bvb2w6XSk6CisgICAgICAgICgtW1dLR2VvbG9j
YXRpb25Qcm92aWRlcklPUyBkZWNpZGVQb2xpY3lGb3JHZW9sb2NhdGlvblJlcXVlc3RGcm9tT3Jp
Z2luOmNvbXBsZXRpb25IYW5kbGVyOnZpZXc6XSk6CisgICAgICAgICgtW1dLR2VvbG9jYXRpb25Q
cm92aWRlcklPUyBnZW9sb2NhdGlvbkF1dGhvcml6YXRpb25HcmFudGVkXSk6CisgICAgICAgICgt
W1dLR2VvbG9jYXRpb25Qcm92aWRlcklPUyBwb3NpdGlvbkNoYW5nZWQ6XSk6CisgICAgICAgICgt
W1dLR2VvbG9jYXRpb25Qcm92aWRlcklPUyBlcnJvck9jY3VycmVkOl0pOgorICAgICAgICAoLVtX
S0dlb2xvY2F0aW9uUHJvdmlkZXJJT1MgcmVzZXRHZW9sb2NhdGlvbl0pOgorICAgICAgICAoc3Rh
cnRVcGRhdGluZ0NhbGxiYWNrKTogRGVsZXRlZC4KKyAgICAgICAgKHN0b3BVcGRhdGluZ0NhbGxi
YWNrKTogRGVsZXRlZC4KKyAgICAgICAgKHNldEVuYWJsZUhpZ2hBY2N1cmFjeSk6IERlbGV0ZWQu
CisgICAgICAgICgtW1dLTGVnYWN5Q29yZUxvY2F0aW9uUHJvdmlkZXIgc2V0TGlzdGVuZXI6XSk6
IERlbGV0ZWQuCisgICAgICAgICgtW1dLTGVnYWN5Q29yZUxvY2F0aW9uUHJvdmlkZXIgcmVxdWVz
dEdlb2xvY2F0aW9uQXV0aG9yaXphdGlvbl0pOiBEZWxldGVkLgorICAgICAgICAoLVtXS0xlZ2Fj
eUNvcmVMb2NhdGlvblByb3ZpZGVyIHN0YXJ0XSk6IERlbGV0ZWQuCisgICAgICAgICgtW1dLTGVn
YWN5Q29yZUxvY2F0aW9uUHJvdmlkZXIgc3RvcF0pOiBEZWxldGVkLgorICAgICAgICAoLVtXS0xl
Z2FjeUNvcmVMb2NhdGlvblByb3ZpZGVyIHNldEVuYWJsZUhpZ2hBY2N1cmFjeTpdKTogRGVsZXRl
ZC4KKyAgICAgICAgKC1bV0tMZWdhY3lDb3JlTG9jYXRpb25Qcm92aWRlciBnZW9sb2NhdGlvbkF1
dGhvcml6YXRpb25HcmFudGVkXSk6IERlbGV0ZWQuCisgICAgICAgICgtW1dLTGVnYWN5Q29yZUxv
Y2F0aW9uUHJvdmlkZXIgZ2VvbG9jYXRpb25BdXRob3JpemF0aW9uRGVuaWVkXSk6IERlbGV0ZWQu
CisgICAgICAgICgtW1dLTGVnYWN5Q29yZUxvY2F0aW9uUHJvdmlkZXIgcG9zaXRpb25DaGFuZ2Vk
Ol0pOiBEZWxldGVkLgorICAgICAgICAoLVtXS0xlZ2FjeUNvcmVMb2NhdGlvblByb3ZpZGVyIGVy
cm9yT2NjdXJyZWQ6XSk6IERlbGV0ZWQuCisgICAgICAgICgtW1dLTGVnYWN5Q29yZUxvY2F0aW9u
UHJvdmlkZXIgcmVzZXRHZW9sb2NhdGlvbl0pOiBEZWxldGVkLgorICAgICAgICAqIFdlYktpdC54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIFdlYlByb2Nlc3MvR2VvbG9jYXRp
b24vV2ViR2VvbG9jYXRpb25NYW5hZ2VyLmNwcDoKKyAgICAgICAgKFdlYktpdDo6cmVnaXN0cmFi
bGVEb21haW5Gb3JQYWdlKToKKyAgICAgICAgKFdlYktpdDo6V2ViR2VvbG9jYXRpb25NYW5hZ2Vy
OjpyZWdpc3RlcldlYlBhZ2UpOgorICAgICAgICAoV2ViS2l0OjpXZWJHZW9sb2NhdGlvbk1hbmFn
ZXI6OnVucmVnaXN0ZXJXZWJQYWdlKToKKyAgICAgICAgKFdlYktpdDo6V2ViR2VvbG9jYXRpb25N
YW5hZ2VyOjpzZXRFbmFibGVIaWdoQWNjdXJhY3lGb3JQYWdlKToKKyAgICAgICAgKFdlYktpdDo6
V2ViR2VvbG9jYXRpb25NYW5hZ2VyOjpkaWRDaGFuZ2VQb3NpdGlvbik6CisgICAgICAgIChXZWJL
aXQ6OldlYkdlb2xvY2F0aW9uTWFuYWdlcjo6ZGlkRmFpbFRvRGV0ZXJtaW5lUG9zaXRpb24pOgor
ICAgICAgICAoV2ViS2l0OjpXZWJHZW9sb2NhdGlvbk1hbmFnZXI6OnJlc2V0UGVybWlzc2lvbnMp
OgorICAgICAgICAoV2ViS2l0OjpXZWJHZW9sb2NhdGlvbk1hbmFnZXI6OmlzVXBkYXRpbmcgY29u
c3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViS2l0OjpXZWJHZW9sb2NhdGlvbk1hbmFnZXI6Omlz
SGlnaEFjY3VyYWN5RW5hYmxlZCBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgICogV2ViUHJvY2Vz
cy9HZW9sb2NhdGlvbi9XZWJHZW9sb2NhdGlvbk1hbmFnZXIuaDoKKyAgICAgICAgKiBXZWJQcm9j
ZXNzL0dlb2xvY2F0aW9uL1dlYkdlb2xvY2F0aW9uTWFuYWdlci5tZXNzYWdlcy5pbjoKKyAgICAg
ICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkdlb2xvY2F0aW9uQ2xpZW50LmNwcDoK
KyAgICAgICAgKFdlYktpdDo6V2ViR2VvbG9jYXRpb25DbGllbnQ6OnN0YXJ0VXBkYXRpbmcpOgor
ICAgICAgICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViR2VvbG9jYXRpb25DbGllbnQu
aDoKKyAgICAgICAgKFdlYktpdDo6V2ViR2VvbG9jYXRpb25DbGllbnQ6OldlYkdlb2xvY2F0aW9u
Q2xpZW50KTogRGVsZXRlZC4KKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3BwOgor
ICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzOjpyZXNldEFsbEdlb2xvY2F0aW9uUGVybWlzc2lv
bnMpOiBEZWxldGVkLgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUHJvY2Vzcy5oOgorCiAyMDIy
LTAyLTE1ICBNZWdhbiBHYXJkbmVyICA8bWVnYW5fZ2FyZG5lckBhcHBsZS5jb20+CiAKICAgICAg
ICAgSW1wbGVtZW50IGFkZGl0aW9uYWwgUmV2ZWVhbCBtZXRob2RzLgpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMv
Q2hhbmdlTG9nCmluZGV4IDY4MDM5NDg1OGExNWI4YTI1Njk2YWFlYzdjOGQ5NGFhNzNhZDcyMjMu
Ljk5Mzg2NTg0M2E3ZTg4ZTFmZjdkODRkY2Y5N2IxZTllMDcyMjZmYzYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5
L21hYy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNSBAQAorMjAyMi0wMi0xMyAgQ2hyaXMgRHVtZXog
IDxjZHVtZXpAYXBwbGUuY29tPgorCisgICAgICAgIERvIHByZWxpbWluYXJ5IHdvcmsgdG8gcGFz
cyBkb21haW4gbmFtZXMgdG8gQ29yZUxvY2F0aW9uCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzY1NjYKKyAgICAgICAgPHJkYXI6Ly84ODc2MTQxMz4K
KworICAgICAgICBSZXZpZXdlZCBieSBEYXJpbiBBZGxlci4KKworICAgICAgICAqIFdlYkNvcmVT
dXBwb3J0L1dlYkdlb2xvY2F0aW9uQ2xpZW50Lmg6CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQv
V2ViR2VvbG9jYXRpb25DbGllbnQubW06CisgICAgICAgIChXZWJHZW9sb2NhdGlvbkNsaWVudDo6
c3RhcnRVcGRhdGluZyk6CisKIDIwMjItMDItMTEgIENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxl
LmNvbT4KIAogICAgICAgICBVbnJldmlld2VkLCBmaXggYnVpbGQgd2l0aCB0aGUgbGF0ZXN0IGlP
UyBTREsuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9DaGFuZ2VMb2cgYi9T
b3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9DaGFuZ2VMb2cKaW5kZXggNjk1YWE5MTA1MzllZjAyMTA1
ZjUyMTkzMDRjMDk3ZTEwMzEyNjQ1NS4uZjQwMGYzNjdkMDUyYWJlNTg3NTlhNWQ3MmM1Mjk2NTFk
ZDk5MTQzZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vQ2hhbmdlTG9nCisr
KyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE1IEBACisy
MDIyLTAyLTEzICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CisKKyAgICAgICAgRG8g
cHJlbGltaW5hcnkgd29yayB0byBwYXNzIGRvbWFpbiBuYW1lcyB0byBDb3JlTG9jYXRpb24KKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzNjU2NgorICAg
ICAgICA8cmRhcjovLzg4NzYxNDEzPgorCisgICAgICAgIFJldmlld2VkIGJ5IERhcmluIEFkbGVy
LgorCisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2ViR2VvbG9jYXRpb25DbGllbnQuY3BwOgor
ICAgICAgICAoV2ViR2VvbG9jYXRpb25DbGllbnQ6OnN0YXJ0VXBkYXRpbmcpOgorICAgICAgICAq
IFdlYkNvcmVTdXBwb3J0L1dlYkdlb2xvY2F0aW9uQ2xpZW50Lmg6CisKIDIwMjItMDItMDEgIE15
bGVzIEMuIE1heGZpZWxkICA8bW1heGZpZWxkQGFwcGxlLmNvbT4KIAogICAgICAgICBSZW5hbWUg
Rm9udENhc2NhZGU6OmZvbnRNZXRyaWNzKCkgYW5kIFJlbmRlclN0eWxlOjpmb250TWV0cmljcygp
IHRvIGZvbnRNZXRyaWNzT2ZQcmltYXJ5Rm9udCgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0
Zi9QbGF0Zm9ybUhhdmUuaCBiL1NvdXJjZS9XVEYvd3RmL1BsYXRmb3JtSGF2ZS5oCmluZGV4IDA5
MmJjMzYyMTUwMWQ0NGNlYWZiMDcwZmFjY2QzOTk1Y2RhMjMxMjcuLjY0YTVlNzliMDQ0ZWZiYjgy
YWVmMjQ5YTQxYjJkZDk4ZmJlODU3MGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL1BsYXRm
b3JtSGF2ZS5oCisrKyBiL1NvdXJjZS9XVEYvd3RmL1BsYXRmb3JtSGF2ZS5oCkBAIC0xMTE5LDYg
KzExMTksMTYgQEAKICNkZWZpbmUgSEFWRV9OU1RFWFRMSVNUX01BUktFUl9GT1JNQVRTIDEKICNl
bmRpZgogCisjaWYgKFBMQVRGT1JNKElPUykgJiYgX19JUEhPTkVfT1NfVkVSU0lPTl9NQVhfQUxM
T1dFRCA+PSAxNjAwMDApIFwKKyAgICB8fCAoUExBVEZPUk0oV0FUQ0hPUykgJiYgX19XQVRDSF9P
U19WRVJTSU9OX01BWF9BTExPV0VEID49IDkwMDAwKSBcCisgICAgfHwgKFBMQVRGT1JNKEFQUExF
VFYpICYmIF9fVFZfT1NfVkVSU0lPTl9NQVhfQUxMT1dFRCA+PSAxNjAwMDApCisjZGVmaW5lIEhB
VkVfQ09SRV9MT0NBVElPTl9XRUJTSVRFX0lERU5USUZJRVJTIDEKKyNlbmRpZgorCisjaWYgUExB
VEZPUk0oSU9TX0ZBTUlMWSkgfHwgKFBMQVRGT1JNKE1BQykgJiYgX19NQUNfT1NfWF9WRVJTSU9O
X01JTl9SRVFVSVJFRCA+PSAxMDE0MDAgJiYgZGVmaW5lZCBfX2hhc19pbmNsdWRlICYmIF9faGFz
X2luY2x1ZGUoPENvcmVGb3VuZGF0aW9uL0NGUHJpdi5oPikpCisjZGVmaW5lIEhBVkVfQ09SRV9M
T0NBVElPTl9BVVRIT1JJWkVEX1dIRU5fSU5fVVNFIDEKKyNlbmRpZgorCiAjaWYgUExBVEZPUk0o
TUFDKQogI2RlZmluZSBIQVZFX1NDRU5FS0lUIDEKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9nZW9sb2NhdGlvbi9HZW9sb2NhdGlvbkNsaWVudC5oIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9nZW9sb2NhdGlvbi9HZW9sb2NhdGlvbkNsaWVudC5oCmluZGV4IDVi
YWYzYWQ4MmM1N2U1YWNiYTk2ZTNkZjBlZDYwZWJjNzU0YmNiMDUuLmE0ZTg2MjM2MjU1NjdlOWFk
ZmViMDBkODI0MDAwYTI3N2RiZWFmMDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvZ2VvbG9jYXRpb24vR2VvbG9jYXRpb25DbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2dlb2xvY2F0aW9uL0dlb2xvY2F0aW9uQ2xpZW50LmgKQEAgLTM4LDcgKzM4LDcgQEAg
Y2xhc3MgR2VvbG9jYXRpb25DbGllbnQgewogcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBnZW9s
b2NhdGlvbkRlc3Ryb3llZCgpID0gMDsKIAotICAgIHZpcnR1YWwgdm9pZCBzdGFydFVwZGF0aW5n
KGNvbnN0IFN0cmluZyYgYXV0aG9yaXphdGlvblRva2VuKSA9IDA7CisgICAgdmlydHVhbCB2b2lk
IHN0YXJ0VXBkYXRpbmcoY29uc3QgU3RyaW5nJiBhdXRob3JpemF0aW9uVG9rZW4sIGJvb2wgbmVl
ZHNIaWdoQWNjdXJhY3kpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgc3RvcFVwZGF0aW5nKCkgPSAw
OwogICAgIHZpcnR1YWwgdm9pZCByZXZva2VBdXRob3JpemF0aW9uVG9rZW4oY29uc3QgU3RyaW5n
JikgeyB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZ2VvbG9jYXRpb24v
R2VvbG9jYXRpb25Db250cm9sbGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZ2VvbG9j
YXRpb24vR2VvbG9jYXRpb25Db250cm9sbGVyLmNwcAppbmRleCAwNjE2MjkxNjBkOWJjYzdkNWRh
Zjc0Y2ZjNGY4MTU1MGJhNDhkZThjLi4wN2RkNjVmM2MxYWVlNzllYjljNzMyODM2YTJkNWFhZDAx
NzMzM2NmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2dlb2xvY2F0aW9uL0dl
b2xvY2F0aW9uQ29udHJvbGxlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9nZW9s
b2NhdGlvbi9HZW9sb2NhdGlvbkNvbnRyb2xsZXIuY3BwCkBAIC01MiwxOSArNTIsMjUgQEAgR2Vv
bG9jYXRpb25Db250cm9sbGVyOjp+R2VvbG9jYXRpb25Db250cm9sbGVyKCkKICAgICBtX2NsaWVu
dC5nZW9sb2NhdGlvbkRlc3Ryb3llZCgpOwogfQogCit2b2lkIEdlb2xvY2F0aW9uQ29udHJvbGxl
cjo6ZGlkTmF2aWdhdGVQYWdlKCkKK3sKKyAgICB3aGlsZSAoIW1fb2JzZXJ2ZXJzLmlzRW1wdHko
KSkKKyAgICAgICAgcmVtb3ZlT2JzZXJ2ZXIobV9vYnNlcnZlcnMuYmVnaW4oKS0+Z2V0KCkpOwor
fQorCiB2b2lkIEdlb2xvY2F0aW9uQ29udHJvbGxlcjo6YWRkT2JzZXJ2ZXIoR2VvbG9jYXRpb24m
IG9ic2VydmVyLCBib29sIGVuYWJsZUhpZ2hBY2N1cmFjeSkKIHsKLSAgICAvLyBUaGlzIG1heSBi
ZSBjYWxsZWQgbXVsdGlwbGUgdGltZXMgd2l0aCB0aGUgc2FtZSBvYnNlcnZlciwgdGhvdWdoIHJl
bW92ZU9ic2VydmVyKCkKLSAgICAvLyBpcyBjYWxsZWQgb25seSBvbmNlIHdpdGggZWFjaC4KLSAg
ICBib29sIHdhc0VtcHR5ID0gbV9vYnNlcnZlcnMuaXNFbXB0eSgpOworICAgIGJvb2wgaGlnaEFj
Y3VyYWN5V2FzUmVxdWlyZWQgPSBuZWVkc0hpZ2hBY2N1cmFjeSgpOworCiAgICAgbV9vYnNlcnZl
cnMuYWRkKG9ic2VydmVyKTsKICAgICBpZiAoZW5hYmxlSGlnaEFjY3VyYWN5KQogICAgICAgICBt
X2hpZ2hBY2N1cmFjeU9ic2VydmVycy5hZGQob2JzZXJ2ZXIpOwogCi0gICAgaWYgKGVuYWJsZUhp
Z2hBY2N1cmFjeSkKLSAgICAgICAgbV9jbGllbnQuc2V0RW5hYmxlSGlnaEFjY3VyYWN5KHRydWUp
OwotICAgIGlmICh3YXNFbXB0eSAmJiBtX3BhZ2UuaXNWaXNpYmxlKCkpCi0gICAgICAgIG1fY2xp
ZW50LnN0YXJ0VXBkYXRpbmcob2JzZXJ2ZXIuYXV0aG9yaXphdGlvblRva2VuKCkpOworICAgIGlm
IChtX2lzVXBkYXRpbmcpIHsKKyAgICAgICAgaWYgKCFoaWdoQWNjdXJhY3lXYXNSZXF1aXJlZCAm
JiBlbmFibGVIaWdoQWNjdXJhY3kpCisgICAgICAgICAgICBtX2NsaWVudC5zZXRFbmFibGVIaWdo
QWNjdXJhY3kodHJ1ZSk7CisgICAgfSBlbHNlCisgICAgICAgIHN0YXJ0VXBkYXRpbmdJZk5lY2Vz
c2FyeSgpOwogfQogCiB2b2lkIEdlb2xvY2F0aW9uQ29udHJvbGxlcjo6cmVtb3ZlT2JzZXJ2ZXIo
R2VvbG9jYXRpb24mIG9ic2VydmVyKQpAQCAtNzIsMTIgKzc4LDE3IEBAIHZvaWQgR2VvbG9jYXRp
b25Db250cm9sbGVyOjpyZW1vdmVPYnNlcnZlcihHZW9sb2NhdGlvbiYgb2JzZXJ2ZXIpCiAgICAg
aWYgKCFtX29ic2VydmVycy5jb250YWlucyhvYnNlcnZlcikpCiAgICAgICAgIHJldHVybjsKIAor
ICAgIGJvb2wgaGlnaEFjY3VyYWN5V2FzUmVxdWlyZWQgPSBuZWVkc0hpZ2hBY2N1cmFjeSgpOwor
CiAgICAgbV9vYnNlcnZlcnMucmVtb3ZlKG9ic2VydmVyKTsKICAgICBtX2hpZ2hBY2N1cmFjeU9i
c2VydmVycy5yZW1vdmUob2JzZXJ2ZXIpOwogCisgICAgaWYgKCFtX2lzVXBkYXRpbmcpCisgICAg
ICAgIHJldHVybjsKKwogICAgIGlmIChtX29ic2VydmVycy5pc0VtcHR5KCkpCi0gICAgICAgIG1f
Y2xpZW50LnN0b3BVcGRhdGluZygpOwotICAgIGVsc2UgaWYgKG1faGlnaEFjY3VyYWN5T2JzZXJ2
ZXJzLmlzRW1wdHkoKSkKKyAgICAgICAgc3RvcFVwZGF0aW5nSWZOZWNlc3NhcnkoKTsKKyAgICBl
bHNlIGlmIChoaWdoQWNjdXJhY3lXYXNSZXF1aXJlZCAmJiAhbmVlZHNIaWdoQWNjdXJhY3koKSkK
ICAgICAgICAgbV9jbGllbnQuc2V0RW5hYmxlSGlnaEFjY3VyYWN5KGZhbHNlKTsKIH0KIApAQCAt
MTM5LDkgKzE1MCw5IEBAIHZvaWQgR2VvbG9jYXRpb25Db250cm9sbGVyOjphY3Rpdml0eVN0YXRl
RGlkQ2hhbmdlKE9wdGlvblNldDxBY3Rpdml0eVN0YXRlOjpGbGFnCiAgICAgYXV0byBjaGFuZ2Vk
ID0gb2xkQWN0aXZpdHlTdGF0ZSBeIG5ld0FjdGl2aXR5U3RhdGU7CiAgICAgaWYgKGNoYW5nZWQg
JiBBY3Rpdml0eVN0YXRlOjpJc1Zpc2libGUgJiYgIW1fb2JzZXJ2ZXJzLmlzRW1wdHkoKSkgewog
ICAgICAgICBpZiAobmV3QWN0aXZpdHlTdGF0ZSAmIEFjdGl2aXR5U3RhdGU6OklzVmlzaWJsZSkK
LSAgICAgICAgICAgIG1fY2xpZW50LnN0YXJ0VXBkYXRpbmcoKCptX29ic2VydmVycy5yYW5kb20o
KSktPmF1dGhvcml6YXRpb25Ub2tlbigpKTsKKyAgICAgICAgICAgIHN0YXJ0VXBkYXRpbmdJZk5l
Y2Vzc2FyeSgpOwogICAgICAgICBlbHNlCi0gICAgICAgICAgICBtX2NsaWVudC5zdG9wVXBkYXRp
bmcoKTsKKyAgICAgICAgICAgIHN0b3BVcGRhdGluZ0lmTmVjZXNzYXJ5KCk7CiAgICAgfQogCiAg
ICAgaWYgKCFtX3BhZ2UuaXNWaXNpYmxlKCkpCkBAIC0xNTIsNiArMTYzLDI0IEBAIHZvaWQgR2Vv
bG9jYXRpb25Db250cm9sbGVyOjphY3Rpdml0eVN0YXRlRGlkQ2hhbmdlKE9wdGlvblNldDxBY3Rp
dml0eVN0YXRlOjpGbGFnCiAgICAgICAgIG1fY2xpZW50LnJlcXVlc3RQZXJtaXNzaW9uKHBlcm1p
c3Npb25SZXF1ZXN0LmdldCgpKTsKIH0KIAordm9pZCBHZW9sb2NhdGlvbkNvbnRyb2xsZXI6OnN0
YXJ0VXBkYXRpbmdJZk5lY2Vzc2FyeSgpCit7CisgICAgaWYgKG1faXNVcGRhdGluZyB8fCAhbV9w
YWdlLmlzVmlzaWJsZSgpIHx8IG1fb2JzZXJ2ZXJzLmlzRW1wdHkoKSkKKyAgICAgICAgcmV0dXJu
OworCisgICAgbV9jbGllbnQuc3RhcnRVcGRhdGluZygoKm1fb2JzZXJ2ZXJzLnJhbmRvbSgpKS0+
YXV0aG9yaXphdGlvblRva2VuKCksIG5lZWRzSGlnaEFjY3VyYWN5KCkpOworICAgIG1faXNVcGRh
dGluZyA9IHRydWU7Cit9CisKK3ZvaWQgR2VvbG9jYXRpb25Db250cm9sbGVyOjpzdG9wVXBkYXRp
bmdJZk5lY2Vzc2FyeSgpCit7CisgICAgaWYgKCFtX2lzVXBkYXRpbmcpCisgICAgICAgIHJldHVy
bjsKKworICAgIG1fY2xpZW50LnN0b3BVcGRhdGluZygpOworICAgIG1faXNVcGRhdGluZyA9IGZh
bHNlOworfQorCiBjb25zdCBjaGFyKiBHZW9sb2NhdGlvbkNvbnRyb2xsZXI6OnN1cHBsZW1lbnRO
YW1lKCkKIHsKICAgICByZXR1cm4gIkdlb2xvY2F0aW9uQ29udHJvbGxlciI7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2dlb2xvY2F0aW9uL0dlb2xvY2F0aW9uQ29udHJvbGxl
ci5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9nZW9sb2NhdGlvbi9HZW9sb2NhdGlvbkNvbnRy
b2xsZXIuaAppbmRleCA0MmY1ZDA2MmRiNmYwOWM2NjAxMTFkNjZkOWYwZmNmZmYzYjIwNzQwLi5i
YmZmNTc1ZWIwNTgzMjQwNzgwZDNiNDFhOTY3NDJjNmIxZDcyNDhlIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2dlb2xvY2F0aW9uL0dlb2xvY2F0aW9uQ29udHJvbGxlci5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZ2VvbG9jYXRpb24vR2VvbG9jYXRpb25Db250cm9s
bGVyLmgKQEAgLTMwLDYgKzMwLDcgQEAKICNpbmNsdWRlICJBY3Rpdml0eVN0YXRlQ2hhbmdlT2Jz
ZXJ2ZXIuaCIKICNpbmNsdWRlICJHZW9sb2NhdGlvbi5oIgogI2luY2x1ZGUgIlBhZ2UuaCIKKyNp
bmNsdWRlICJSZWdpc3RyYWJsZURvbWFpbi5oIgogI2luY2x1ZGUgPHd0Zi9IYXNoU2V0Lmg+CiAj
aW5jbHVkZSA8d3RmL05vbmNvcHlhYmxlLmg+CiAjaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgpAQCAt
NjUsNiArNjYsOCBAQCBwdWJsaWM6CiAKICAgICB2b2lkIHJldm9rZUF1dGhvcml6YXRpb25Ub2tl
bihjb25zdCBTdHJpbmcmKTsKIAorICAgIHZvaWQgZGlkTmF2aWdhdGVQYWdlKCk7CisKIHByaXZh
dGU6CiAgICAgUGFnZSYgbV9wYWdlOwogICAgIEdlb2xvY2F0aW9uQ2xpZW50JiBtX2NsaWVudDsK
QEAgLTczLDYgKzc2LDExIEBAIHByaXZhdGU6CiAKICAgICBzdGQ6Om9wdGlvbmFsPEdlb2xvY2F0
aW9uUG9zaXRpb25EYXRhPiBtX2xhc3RQb3NpdGlvbjsKIAorICAgIGJvb2wgbmVlZHNIaWdoQWNj
dXJhY3koKSBjb25zdCB7IHJldHVybiAhbV9oaWdoQWNjdXJhY3lPYnNlcnZlcnMuaXNFbXB0eSgp
OyB9CisKKyAgICB2b2lkIHN0YXJ0VXBkYXRpbmdJZk5lY2Vzc2FyeSgpOworICAgIHZvaWQgc3Rv
cFVwZGF0aW5nSWZOZWNlc3NhcnkoKTsKKwogICAgIHR5cGVkZWYgSGFzaFNldDxSZWY8R2VvbG9j
YXRpb24+PiBPYnNlcnZlcnNTZXQ7CiAgICAgLy8gQWxsIG9ic2VydmVyczsgYm90aCB0aG9zZSBy
ZXF1ZXN0aW5nIGhpZ2ggYWNjdXJhY3kgYW5kIHRob3NlIG5vdC4KICAgICBPYnNlcnZlcnNTZXQg
bV9vYnNlcnZlcnM7CkBAIC04MCw2ICs4OCw5IEBAIHByaXZhdGU6CiAKICAgICAvLyBXaGlsZSB0
aGUgcGFnZSBpcyBub3QgdmlzaWJsZSwgd2UgcGVuZCBwZXJtaXNzaW9uIHJlcXVlc3RzLgogICAg
IEhhc2hTZXQ8UmVmPEdlb2xvY2F0aW9uPj4gbV9wZW5kaW5nUGVybWlzc2lvblJlcXVlc3Q7CisK
KyAgICBSZWdpc3RyYWJsZURvbWFpbiBtX3JlZ2lzdHJhYmxlRG9tYWluOworICAgIGJvb2wgbV9p
c1VwZGF0aW5nIHsgZmFsc2UgfTsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZ2VvbG9jYXRpb24vR2VvbG9jYXRpb25Qb3Np
dGlvbkRhdGEuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZ2VvbG9jYXRpb24vR2VvbG9jYXRp
b25Qb3NpdGlvbkRhdGEuaAppbmRleCA5MjYyMjE3MGM4YWFkNjk4OWI4YTEyY2U0ODM1NmRjNjg3
YmY2ZTM1Li5jYzIxODBhODM3ZDI3NDNjMWZiZjc2MWM0MTBlMWM3ZWJmZWFlZTdkIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2dlb2xvY2F0aW9uL0dlb2xvY2F0aW9uUG9zaXRp
b25EYXRhLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9nZW9sb2NhdGlvbi9HZW9sb2Nh
dGlvblBvc2l0aW9uRGF0YS5oCkBAIC0yOSw3ICsyOSw3IEBACiAjaW5jbHVkZSA8d3RmL1JlZi5o
PgogI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CiAKLSNpZiBQTEFURk9STShJT1NfRkFNSUxZ
KQorI2lmIFBMQVRGT1JNKENPQ09BKQogT0JKQ19DTEFTUyBDTExvY2F0aW9uOwogI2VuZGlmCiAK
QEAgLTQ3LDcgKzQ3LDcgQEAgcHVibGljOgogICAgIHsKICAgICB9CiAKLSNpZiBQTEFURk9STShJ
T1NfRkFNSUxZKQorI2lmIFBMQVRGT1JNKENPQ09BKQogICAgIFdFQkNPUkVfRVhQT1JUIGV4cGxp
Y2l0IEdlb2xvY2F0aW9uUG9zaXRpb25EYXRhKENMTG9jYXRpb24qKTsKICNlbmRpZgogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2dlb2xvY2F0aW9uL2NvY29hL0dlb2xvY2F0
aW9uUG9zaXRpb25EYXRhQ29jb2EubW0gYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2dlb2xvY2F0
aW9uL2NvY29hL0dlb2xvY2F0aW9uUG9zaXRpb25EYXRhQ29jb2EubW0KbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uODFl
NDBmMTY0MmIyNjg5NTJiN2IwMzk4ZTRlOGZlMmI4Y2Q1ODBkMQotLS0gL2Rldi9udWxsCisrKyBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZ2VvbG9jYXRpb24vY29jb2EvR2VvbG9jYXRpb25Qb3Np
dGlvbkRhdGFDb2NvYS5tbQpAQCAtMCwwICsxLDUzIEBACisvKgorICogQ29weXJpZ2h0IChDKSAy
MDE3IEFwcGxlIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAq
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBO
TyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFS
WSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UK
KyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2ltcG9ydCAiY29uZmlnLmgiCisjaW1wb3J0ICJHZW9s
b2NhdGlvblBvc2l0aW9uLmgiCisKKyNpbXBvcnQgPENvcmVMb2NhdGlvbi9DTExvY2F0aW9uLmg+
CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworR2VvbG9jYXRpb25Qb3NpdGlvbkRhdGE6Okdlb2xv
Y2F0aW9uUG9zaXRpb25EYXRhKENMTG9jYXRpb24gKmxvY2F0aW9uKQorICAgIDogdGltZXN0YW1w
KGxvY2F0aW9uLnRpbWVzdGFtcC50aW1lSW50ZXJ2YWxTaW5jZTE5NzApCisgICAgLCBsYXRpdHVk
ZShsb2NhdGlvbi5jb29yZGluYXRlLmxhdGl0dWRlKQorICAgICwgbG9uZ2l0dWRlKGxvY2F0aW9u
LmNvb3JkaW5hdGUubG9uZ2l0dWRlKQorICAgICwgYWNjdXJhY3kobG9jYXRpb24uaG9yaXpvbnRh
bEFjY3VyYWN5KQoreworICAgIGlmIChsb2NhdGlvbi52ZXJ0aWNhbEFjY3VyYWN5ID49IDAuMCkg
eworICAgICAgICBhbHRpdHVkZSA9IGxvY2F0aW9uLmFsdGl0dWRlOworICAgICAgICBhbHRpdHVk
ZUFjY3VyYWN5ID0gbG9jYXRpb24udmVydGljYWxBY2N1cmFjeTsKKyAgICB9CisgICAgaWYgKGxv
Y2F0aW9uLnNwZWVkID49IDAuMCkKKyAgICAgICAgc3BlZWQgPSBsb2NhdGlvbi5zcGVlZDsKKyAg
ICBpZiAobG9jYXRpb24uY291cnNlID49IDAuMCkKKyAgICAgICAgaGVhZGluZyA9IGxvY2F0aW9u
LmNvdXJzZTsKKyNpZiAhUExBVEZPUk0oTUFDQ0FUQUxZU1QpCisgICAgaWYgKGxvY2F0aW9uLmZs
b29yKQorICAgICAgICBmbG9vckxldmVsID0gbG9jYXRpb24uZmxvb3IubGV2ZWw7CisjZW5kaWYK
K30KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9nZW9sb2NhdGlvbi9pb3MvR2VvbG9jYXRpb25Qb3NpdGlvbkRhdGFJT1MubW0gYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2dlb2xvY2F0aW9uL2lvcy9HZW9sb2NhdGlvblBvc2l0aW9u
RGF0YUlPUy5tbQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOThkOWEyNDIxZTdmMjMw
OWI0ZjYyM2IxNGQ3Y2JlMmI2YzdlMDQ1Yy4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2dlb2xvY2F0aW9uL2lvcy9H
ZW9sb2NhdGlvblBvc2l0aW9uRGF0YUlPUy5tbQorKysgL2Rldi9udWxsCkBAIC0xLDU3ICswLDAg
QEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTcgQXBwbGUgSW5jLiBBbGwgUmlnaHRzIFJlc2Vy
dmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4g
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAg
ICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUg
ZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUg
SU5DLiBgYEFTIElTJycgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKLSAqIElNUExJRUQgV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVS
UE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKLSAq
IENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLAotICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCi0gKiBQUk9GSVRTOyBP
UiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZ
Ci0gKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaW1wb3J0
ICJjb25maWcuaCIKLSNpbXBvcnQgIkdlb2xvY2F0aW9uUG9zaXRpb24uaCIKLQotI2lmIFBMQVRG
T1JNKElPU19GQU1JTFkpCi0KLSNpbXBvcnQgPENvcmVMb2NhdGlvbi9DTExvY2F0aW9uLmg+Ci0K
LW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotR2VvbG9jYXRpb25Qb3NpdGlvbkRhdGE6Okdlb2xvY2F0
aW9uUG9zaXRpb25EYXRhKENMTG9jYXRpb24qIGxvY2F0aW9uKQotICAgIDogdGltZXN0YW1wKGxv
Y2F0aW9uLnRpbWVzdGFtcC50aW1lSW50ZXJ2YWxTaW5jZTE5NzApCi0gICAgLCBsYXRpdHVkZShs
b2NhdGlvbi5jb29yZGluYXRlLmxhdGl0dWRlKQotICAgICwgbG9uZ2l0dWRlKGxvY2F0aW9uLmNv
b3JkaW5hdGUubG9uZ2l0dWRlKQotICAgICwgYWNjdXJhY3kobG9jYXRpb24uaG9yaXpvbnRhbEFj
Y3VyYWN5KQotewotICAgIGlmIChsb2NhdGlvbi52ZXJ0aWNhbEFjY3VyYWN5ID49IDAuMCkgewot
ICAgICAgICBhbHRpdHVkZSA9IGxvY2F0aW9uLmFsdGl0dWRlOwotICAgICAgICBhbHRpdHVkZUFj
Y3VyYWN5ID0gbG9jYXRpb24udmVydGljYWxBY2N1cmFjeTsKLSAgICB9Ci0gICAgaWYgKGxvY2F0
aW9uLnNwZWVkID49IDAuMCkKLSAgICAgICAgc3BlZWQgPSBsb2NhdGlvbi5zcGVlZDsKLSAgICBp
ZiAobG9jYXRpb24uY291cnNlID49IDAuMCkKLSAgICAgICAgaGVhZGluZyA9IGxvY2F0aW9uLmNv
dXJzZTsKLSNpZiAhUExBVEZPUk0oTUFDQ0FUQUxZU1QpCi0gICAgaWYgKGxvY2F0aW9uLmZsb29y
KQotICAgICAgICBmbG9vckxldmVsID0gbG9jYXRpb24uZmxvb3IubGV2ZWw7Ci0jZW5kaWYKLX0K
LQotfQotCi0jZW5kaWYgLy8gUExBVEZPUk0oSU9TX0ZBTUlMWSkKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL1NvdXJjZXNDb2NvYS50eHQgYi9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzQ29jb2Eu
dHh0CmluZGV4IGExMjc4MDQxMDQwOWRlMWYyZjk4NjljMDRlN2Q5N2U1N2E0ODViNDkuLjAyODE0
ZDAyMjJiMjZlMjg5OWI4ZGFjYWVkMWE0MmU1NmI1NzQxOTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL1NvdXJjZXNDb2NvYS50eHQKKysrIGIvU291cmNlL1dlYkNvcmUvU291cmNlc0NvY29h
LnR4dApAQCAtMjUyLDYgKzI1Miw3IEBAIHBsYXRmb3JtL2NmL01lZGlhQWNjZXNzaWJpbGl0eVNv
ZnRMaW5rLmNwcAogcGxhdGZvcm0vY2YvUnVuTG9vcE9ic2VydmVyLmNwcAogcGxhdGZvcm0vY2Yv
U2hhcmVkQnVmZmVyQ0YuY3BwCiBwbGF0Zm9ybS9jb2NvYS9Db250ZW50RmlsdGVyVW5ibG9ja0hh
bmRsZXJDb2NvYS5tbSBAbm8tdW5pZnkKK3BsYXRmb3JtL2NvY29hL0NvcmVMb2NhdGlvbkdlb2xv
Y2F0aW9uUHJvdmlkZXIubW0KIHBsYXRmb3JtL2NvY29hL0NvcmVWaWRlb1NvZnRMaW5rLmNwcAog
cGxhdGZvcm0vY29jb2EvRHJhZ0RhdGFDb2NvYS5tbQogcGxhdGZvcm0vY29jb2EvRHJhZ0ltYWdl
Q29jb2EubW0KQEAgLTMwOCw3ICszMDksNyBAQCBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRp
b24vTWVkaWFTZWxlY3Rpb25Hcm91cEFWRk9iakMubW0KIHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91
bmRhdGlvbi9TYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXIuY3BwCiBwbGF0Zm9ybS9ncmFwaGljcy9h
dmZvdW5kYXRpb24vV2ViTWVkaWFTZXNzaW9uTWFuYWdlck1hYy5jcHAKIHBsYXRmb3JtL2dyYXBo
aWNzL2F2Zm91bmRhdGlvbi9vYmpjL0FWQXNzZXRNSU1FVHlwZUNhY2hlLm1tCi1wbGF0Zm9ybS9n
cmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9BVkFzc2V0VHJhY2tVdGlsaXRpZXMubW0KK3BsYXRm
b3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0FWQXNzZXRUcmFja1V0aWxpdGllcy5tbSBA
bm8tdW5pZnkKIHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0FWT3V0cHV0RGV2
aWNlTWVudUNvbnRyb2xsZXJUYXJnZXRQaWNrZXIubW0gQG5vLXVuaWZ5CiBwbGF0Zm9ybS9ncmFw
aGljcy9hdmZvdW5kYXRpb24vb2JqYy9BVlJvdXRlUGlja2VyVmlld1RhcmdldFBpY2tlci5tbQog
cGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvQVZTdHJlYW1EYXRhUGFyc2VyTUlN
RVR5cGVDYWNoZS5tbQpAQCAtMzE5LDcgKzMyMCw3IEBAIHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91
bmRhdGlvbi9vYmpjL0NETVNlc3Npb25BVkZvdW5kYXRpb25PYmpDLm1tCiBwbGF0Zm9ybS9ncmFw
aGljcy9hdmZvdW5kYXRpb24vb2JqYy9DRE1TZXNzaW9uQVZTdHJlYW1TZXNzaW9uLm1tCiBwbGF0
Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9DRE1TZXNzaW9uTWVkaWFTb3VyY2VBVkZP
YmpDLm1tCiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9JbWFnZURlY29kZXJB
VkZPYmpDLm1tCi1wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9JbmJhbmRUZXh0
VHJhY2tQcml2YXRlQVZGT2JqQy5tbQorcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29i
amMvSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUFWRk9iakMubW0gQG5vLXVuaWZ5CiBwbGF0Zm9ybS9n
cmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9JbmJhbmRDaGFwdGVyVHJhY2tQcml2YXRlQVZGT2Jq
Qy5tbSBAbm8tdW5pZnkKIHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0xvY2Fs
U2FtcGxlQnVmZmVyRGlzcGxheUxheWVyLm1tCiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRp
b24vb2JqYy9NZWRpYVBsYXliYWNrVGFyZ2V0UGlja2VyTWFjLm1tCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2Vi
Q29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggZjg1MDI0OTQ0OWIw
ZjhhZjhmMmNhOTU0YzQ1NjgzMDA0NDg3YWQ4My4uNTFhYjg4ZDgyYWQ4ZjA1NTA1NmIzMmQxYTg4
MGM4OGI3ZDYyNTU3NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvagpAQCAtMTM1Myw2ICsxMzUzLDcgQEAKIAkJNDY4MzQ0RTAxRURERkFB
QTAwQjc3OTVCIC8qIERPTVJlY3RMaXN0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA0NjgzNDRERTFFRERGQTVGMDBCNzc5NUIgLyogRE9NUmVjdExpc3Qu
aCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk0Njgz
REY0MDI3NjdERjk4MDA3RDAwQzggLyogSlNTaGFkb3dSZWFsbUdsb2JhbFNjb3BlQmFzZS5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDY4M0RGM0UyNzY3
REY5ODAwN0QwMEM4IC8qIEpTU2hhZG93UmVhbG1HbG9iYWxTY29wZUJhc2UuaCAqLzsgfTsKIAkJ
NDY4M0RGNDEyNzY3RTkxQTAwN0QwMEM4IC8qIFNoYWRvd1JlYWxtR2xvYmFsU2NvcGUuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ2ODNERjNCMjc2N0RG
MjYwMDdEMDBDOCAvKiBTaGFkb3dSZWFsbUdsb2JhbFNjb3BlLmggKi87IHNldHRpbmdzID0ge0FU
VFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJNDY4OEU5ODAyN0I2QjQ1MDAwNTY3Q0Qy
IC8qIENvcmVMb2NhdGlvbkdlb2xvY2F0aW9uUHJvdmlkZXIuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ2ODhFOTdGMjdCNkI0NDQwMDU2N0NEMiAvKiBD
b3JlTG9jYXRpb25HZW9sb2NhdGlvblByb3ZpZGVyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVU
RVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNDY4OEVFM0MyNkREMjYxMDAwMkFGNUM0IC8qIENy
b3NzT3JpZ2luTW9kZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gNDY4OEVFM0EyNkREMjYwQzAwMkFGNUM0IC8qIENyb3NzT3JpZ2luTW9kZS5oICovOyBz
ZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTQ2OTQzREM5Mjc2
M0Y4MTcwMDRCNjEwRSAvKiBTaGFyZWRXb3JrZXJPYmplY3RJZGVudGlmaWVyLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0Njk0M0RDNzI3NjNGODBFMDA0
QjYxMEUgLyogU2hhcmVkV29ya2VyT2JqZWN0SWRlbnRpZmllci5oICovOyBzZXR0aW5ncyA9IHtB
VFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTQ2OTg1RjIzMjdBNEE2QUQwMDk3QTMy
QiAvKiBTaGFyZWRXb3JrZXJLZXkuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDQ2OTg1RjIyMjdBNEE2ODYwMDk3QTMyQiAvKiBTaGFyZWRXb3JrZXJLZXku
aCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwpAQCAtMTM3
MCw2ICsxMzcxLDcgQEAKIAkJNDZCOTUxOTkyMDdENjM0RDAwQTdEMkREIC8qIFJlbW90ZURPTVdp
bmRvdy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDZC
OTUxOEUyMDdENjMyQTAwQTdEMkREIC8qIFJlbW90ZURPTVdpbmRvdy5oICovOyBzZXR0aW5ncyA9
IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTQ2Qjk1MTlBMjA3RDYzNTQwMEE3
RDJERCAvKiBSZW1vdGVGcmFtZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gNDZCOTUxOTIyMDdENjMyRTAwQTdEMkREIC8qIFJlbW90ZUZyYW1lLmggKi87
IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNDZCOTVCRjUy
MjMxQ0ZENjAwNTNBNTA0IC8qIERldmljZU9yaWVudGF0aW9uQW5kTW90aW9uQWNjZXNzQ29udHJv
bGxlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDZC
OTVCRjQyMjMxQ0ZCODAwNTNBNTA0IC8qIERldmljZU9yaWVudGF0aW9uQW5kTW90aW9uQWNjZXNz
Q29udHJvbGxlci5oICovOyB9OworCQk0NkJBNDlCODI3QkI0NDMzMDA3N0Y2M0YgLyogQVZBc3Nl
dFRyYWNrVXRpbGl0aWVzLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gQ0RFQ0E4OTgxRURGNDQ3RDAwRENCMDhCIC8qIEFWQXNzZXRUcmFja1V0aWxpdGll
cy5tbSAqLzsgfTsKIAkJNDZCQ0JCQzIyMDg1MDA4RjAwNzEwNjM4IC8qIEpTUmVtb3RlRE9NV2lu
ZG93QmFzZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
NDZCQ0JCQzAyMDg1MDA3RjAwNzEwNjM4IC8qIEpTUmVtb3RlRE9NV2luZG93QmFzZS5oICovOyBz
ZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTQ2QkQwNUM1MjVC
QjZFNTkwMDIyNUYzMCAvKiBBZGRFdmVudExpc3RlbmVyT3B0aW9ucy5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDZCRDA1QzIyNUJCNkU0RTAwMjI1RjMw
IC8qIEFkZEV2ZW50TGlzdGVuZXJPcHRpb25zLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMg
PSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNDZCRDA1QzYyNUJCNkU2QzAwMjI1RjMwIC8qIEV2ZW50
TGlzdGVuZXJPcHRpb25zLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA0NkJEMDVDMzI1QkI2RTRFMDAyMjVGMzAgLyogRXZlbnRMaXN0ZW5lck9wdGlvbnMu
aCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwpAQCAtMTM3
OCw2ICsxMzgwLDcgQEAKIAkJNDZDNjk2Q0IxRTcyMDVGNzAwNTk3OTM3IC8qIENQVU1vbml0b3Iu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ2QzY5NkM5
MUU3MjA1RTQwMDU5NzkzNyAvKiBDUFVNb25pdG9yLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVU
RVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNDZDNjk2Q0MxRTcyMDVGQzAwNTk3OTM3IC8qIENQ
VU1vbml0b3IuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gNDZDNjk2Q0ExRTcyMDVFNDAwNTk3OTM3IC8qIENQVU1vbml0b3IuY3BwICovOyB9OwogCQk0
NkM4M0VGRTFBOUJCRTI5MDBBNzlBNDEgLyogR2VvTm90aWZpZXIuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ2QzgzRUZDMUE5QkJFMjkwMEE3OUE0MSAv
KiBHZW9Ob3RpZmllci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7
IH07IH07CisJCTQ2Q0E5NDMxMjdCODY5NTgwMEY0RjVGRiAvKiBJbmJhbmRUZXh0VHJhY2tQcml2
YXRlQVZGT2JqQy5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDA3QUE2QjZBMTY2RDAxOTUwMEQ0NTY3MSAvKiBJbmJhbmRUZXh0VHJhY2tQcml2YXRlQVZG
T2JqQy5tbSAqLzsgfTsKIAkJNDZDQTlDNDQxRjk3QkJFOTAwNENGQzNBIC8qIFZpc2liaWxpdHlT
dGF0ZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDZD
QTlDNDExRjk3QkJFNzAwNENGQzNBIC8qIFZpc2liaWxpdHlTdGF0ZS5oICovOyBzZXR0aW5ncyA9
IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTQ2Q0Y1MDRBMjdBQjFFQTQwMDcw
REJDOCAvKiBTaGFyZWRXb3JrZXJDb250ZXh0TWFuYWdlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDZDRjUwNDgyN0FCMUVBMTAwNzBEQkM4IC8qIFNo
YXJlZFdvcmtlckNvbnRleHRNYW5hZ2VyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAo
UHJpdmF0ZSwgKTsgfTsgfTsKIAkJNDZEMDAwNDAyNkEwRkVCMzAwRDFCRjFFIC8qIFN1Ym1pdEV2
ZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0NkQw
MDAzRTI2QTBGRTZGMDBEMUJGMUUgLyogU3VibWl0RXZlbnQuaCAqLzsgfTsKQEAgLTI2OTIsNyAr
MjY5NSw3IEBACiAJCTgzNzY1Rjk1MURBQzUyMkYwMEMwNjUzNyAvKiBNb3VzZUV2ZW50SW5pdC5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODM3NjVGOTQx
REFDNTIxODAwQzA2NTM3IC8qIE1vdXNlRXZlbnRJbml0LmggKi87IHNldHRpbmdzID0ge0FUVFJJ
QlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJODM3ODg3ODIyNEQ4QTYwOTAwMEQ0QTVCIC8q
IEF1ZGlvQnVmZmVyU291cmNlT3B0aW9ucy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gODM3ODg3N0YyNEQ4QTVGQzAwMEQ0QTVCIC8qIEF1ZGlvQnVmZmVy
U291cmNlT3B0aW9ucy5oICovOyB9OwogCQk4Mzc5MzYzRjFGQkJCMEI0MDBDODAyM0MgLyogU2Vy
dmljZVdvcmtlckNsaWVudERhdGEuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDgzNzkzNjNFMUZCQkIwQTUwMEM4MDIzQyAvKiBTZXJ2aWNlV29ya2VyQ2xp
ZW50RGF0YS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07
Ci0JCTgzNzk2NENGMUY4REI2OUQwMDIxOEVBMCAvKiBHZW9sb2NhdGlvblBvc2l0aW9uRGF0YUlP
Uy5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDgzNzk2
NENFMUY4REI2OUEwMDIxOEVBMCAvKiBHZW9sb2NhdGlvblBvc2l0aW9uRGF0YUlPUy5tbSAqLzsg
fTsKKwkJODM3OTY0Q0YxRjhEQjY5RDAwMjE4RUEwIC8qIEdlb2xvY2F0aW9uUG9zaXRpb25EYXRh
Q29jb2EubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4
Mzc5NjRDRTFGOERCNjlBMDAyMThFQTAgLyogR2VvbG9jYXRpb25Qb3NpdGlvbkRhdGFDb2NvYS5t
bSAqLzsgfTsKIAkJODM3QTgwMTMxRTFFMTI3MzAwMDI2QjlGIC8qIExvY2FsaXphYmxlLnN0cmlu
Z3NkaWN0IGluIFJlc291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4
MzdBODAxMTFFMUUxMjczMDAwMjZCOUYgLyogTG9jYWxpemFibGUuc3RyaW5nc2RpY3QgKi87IH07
CiAJCTgzN0MwQjc2MjREQjM4NTAwMDVENTk1OSAvKiBEeW5hbWljc0NvbXByZXNzb3JPcHRpb25z
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4MzdDMEI3
MzI0REIzODQyMDA1RDU5NTkgLyogRHluYW1pY3NDb21wcmVzc29yT3B0aW9ucy5oICovOyB9Owog
CQk4MzdGQjM0NTFGOUVBMDZEMDBEMEZDMzEgLyogRXh0ZW5kYWJsZU1lc3NhZ2VFdmVudC5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODM3RkIzNDAxRjlF
QTA2NjAwRDBGQzMxIC8qIEV4dGVuZGFibGVNZXNzYWdlRXZlbnQuaCAqLzsgfTsKQEAgLTkyNzIs
NiArOTI3NSw4IEBACiAJCTQ2ODNERjNDMjc2N0RGMjYwMDdEMDBDOCAvKiBTaGFkb3dSZWFsbUds
b2JhbFNjb3BlLmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxl
VHlwZSA9IHRleHQ7IHBhdGggPSBTaGFkb3dSZWFsbUdsb2JhbFNjb3BlLmlkbDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDY4M0RGM0QyNzY3REY5ODAwN0QwMEM4IC8qIEpTU2hhZG93
UmVhbG1HbG9iYWxTY29wZUJhc2UuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBw
YXRoID0gSlNTaGFkb3dSZWFsbUdsb2JhbFNjb3BlQmFzZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCTQ2ODNERjNFMjc2N0RGOTgwMDdEMDBDOCAvKiBKU1NoYWRvd1JlYWxtR2xv
YmFsU2NvcGVCYXNlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTU2hhZG93
UmVhbG1HbG9iYWxTY29wZUJhc2UuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNDY4
OEU5N0QyN0I2QjQ0MzAwNTY3Q0QyIC8qIENvcmVMb2NhdGlvbkdlb2xvY2F0aW9uUHJvdmlkZXIu
bW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBDb3JlTG9jYXRpb25HZW9sb2NhdGlvblByb3ZpZGVy
Lm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk0Njg4RTk3RjI3QjZCNDQ0MDA1NjdD
RDIgLyogQ29yZUxvY2F0aW9uR2VvbG9jYXRpb25Qcm92aWRlci5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBD
b3JlTG9jYXRpb25HZW9sb2NhdGlvblByb3ZpZGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTQ2ODhFRTNBMjZERDI2MEMwMDJBRjVDNCAvKiBDcm9zc09yaWdpbk1vZGUuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gQ3Jvc3NPcmlnaW5Nb2RlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCTQ2OEI4QkRFMjVDQzg0OTMwMEY2NzgyMiAvKiBKU0Jhc2VBdWRpb0NvbnRleHRDdXN0b20u
Y3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNCYXNlQXVkaW9Db250ZXh0Q3VzdG9tLmNwcDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDY5NDNEQzcyNzYzRjgwRTAwNEI2MTBFIC8qIFNo
YXJlZFdvcmtlck9iamVjdElkZW50aWZpZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU2hhcmVkV29ya2Vy
T2JqZWN0SWRlbnRpZmllci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtOTM4Niw4
ICs5MzkxLDggQEAKIAkJNDk0QkQ3OTQwRjU1QzhFRTAwNzQ3ODI4IC8qIFdlYktpdFBvaW50Lmlk
bCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBXZWJLaXRQb2ludC5pZGw7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCTQ5NEJENzlCMEY1NUM5NEMwMDc0NzgyOCAvKiBKU1dlYktpdFBvaW50
LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTV2ViS2l0UG9pbnQu
Y3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0OTRCRDc5QzBGNTVDOTRDMDA3NDc4
MjggLyogSlNXZWJLaXRQb2ludC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBK
U1dlYktpdFBvaW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTQ5NEVCRDA2MjdB
QTlDNTMwMEY0ODQ0RiAvKiBQREZEb2N1bWVudC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBQREZEb2N1bWVu
dC5oOyBwYXRoID0gUERGRG9jdW1lbnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJ
NDk0RUJEMDgyN0FBOUM1MzAwRjQ4NDRGIC8qIFBERkRvY3VtZW50LmNwcCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsg
bmFtZSA9IFBERkRvY3VtZW50LmNwcDsgcGF0aCA9IFBERkRvY3VtZW50LmNwcDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNDk0RUJEMDYyN0FBOUM1MzAwRjQ4NDRGIC8qIFBERkRvY3Vt
ZW50LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFBERkRvY3VtZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CisJCTQ5NEVCRDA4MjdBQTlDNTMwMEY0ODQ0RiAvKiBQREZEb2N1bWVudC5jcHAgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5jcHA7IHBhdGggPSBQREZEb2N1bWVudC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTQ5NTg3ODFGMTJBNTdEREYwMDcyMzhBQyAvKiBQbGF0Zm9ybUNBQW5pbWF0aW9uQ29j
b2EubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBQbGF0Zm9ybUNB
QW5pbWF0aW9uQ29jb2EubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQ5NTg3ODIw
MTJBNTdEREYwMDcyMzhBQyAvKiBQbGF0Zm9ybUNBTGF5ZXJDb2NvYS5tbSAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFBsYXRmb3JtQ0FMYXllckNvY29hLm1tOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0OTY5QjBGMDEzRDBCMzNGMDBERjM1MjEgLyogSGl0
VGVzdGluZ1RyYW5zZm9ybVN0YXRlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsg
cGF0aCA9IEhpdFRlc3RpbmdUcmFuc2Zvcm1TdGF0ZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CkBAIC0xMjE4OCw3ICsxMjE5Myw3IEBACiAJCTgzNzg4NzgxMjREOEE1RkMwMDBENEE1
QiAvKiBBdWRpb0J1ZmZlclNvdXJjZU9wdGlvbnMuaWRsICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IEF1ZGlvQnVmZmVyU291cmNl
T3B0aW9ucy5pZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTgzNzkzNjNDMUZCQkIw
QTQwMEM4MDIzQyAvKiBTZXJ2aWNlV29ya2VyQ2xpZW50RGF0YS5jcHAgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBTZXJ2aWNlV29ya2VyQ2xpZW50RGF0YS5jcHA7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTgzNzkzNjNFMUZCQkIwQTUwMEM4MDIzQyAvKiBTZXJ2
aWNlV29ya2VyQ2xpZW50RGF0YS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBT
ZXJ2aWNlV29ya2VyQ2xpZW50RGF0YS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQk4
Mzc5NjRDRTFGOERCNjlBMDAyMThFQTAgLyogR2VvbG9jYXRpb25Qb3NpdGlvbkRhdGFJT1MubW0g
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IG5hbWUgPSBHZW9sb2NhdGlvblBvc2l0
aW9uRGF0YUlPUy5tbTsgcGF0aCA9IE1vZHVsZXMvZ2VvbG9jYXRpb24vaW9zL0dlb2xvY2F0aW9u
UG9zaXRpb25EYXRhSU9TLm1tOyBzb3VyY2VUcmVlID0gU09VUkNFX1JPT1Q7IH07CisJCTgzNzk2
NENFMUY4REI2OUEwMDIxOEVBMCAvKiBHZW9sb2NhdGlvblBvc2l0aW9uRGF0YUNvY29hLm1tICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBuYW1lID0gR2VvbG9jYXRpb25Qb3NpdGlv
bkRhdGFDb2NvYS5tbTsgcGF0aCA9IE1vZHVsZXMvZ2VvbG9jYXRpb24vY29jb2EvR2VvbG9jYXRp
b25Qb3NpdGlvbkRhdGFDb2NvYS5tbTsgc291cmNlVHJlZSA9IFNPVVJDRV9ST09UOyB9OwogCQk4
MzdBODAxMjFFMUUxMjczMDAwMjZCOUYgLyogZW4gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0LnBsaXN0LnN0cmluZ3NkaWN0OyBuYW1lID0gZW47
IHBhdGggPSBlbi5scHJvai9Mb2NhbGl6YWJsZS5zdHJpbmdzZGljdDsgc291cmNlVHJlZSA9IFNP
VVJDRV9ST09UOyB9OwogCQk4MzdCN0QxRjFEQzNGNTRDMDBEMDUxRkMgLyogVmFsaWRhdGlvbkJ1
YmJsZUlPUy5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFZhbGlk
YXRpb25CdWJibGVJT1MubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTgzN0MwQjcz
MjREQjM4NDIwMDVENTk1OSAvKiBEeW5hbWljc0NvbXByZXNzb3JPcHRpb25zLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IER5bmFtaWNzQ29tcHJlc3Nvck9wdGlvbnMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKQEAgLTIxNjExLDYgKzIxNjE2LDE0IEBACiAJCQlwYXRoID0gY29udGV4dDsKIAkJCXNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7CiAJCX07CisJCTQ2NUMzRDE5MjdCOTkxQzgwMDIxMzAyRiAv
KiBjb2NvYSAqLyA9IHsKKwkJCWlzYSA9IFBCWEdyb3VwOworCQkJY2hpbGRyZW4gPSAoCisJCQkJ
ODM3OTY0Q0UxRjhEQjY5QTAwMjE4RUEwIC8qIEdlb2xvY2F0aW9uUG9zaXRpb25EYXRhQ29jb2Eu
bW0gKi8sCisJCQkpOworCQkJcGF0aCA9IGNvY29hOworCQkJc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsKKwkJfTsKIAkJNDY2OTRDREUyNzU5NDQ2RDAwRTMxNTBFIC8qIHNoYXJlZCAqLyA9IHsKIAkJ
CWlzYSA9IFBCWEdyb3VwOwogCQkJY2hpbGRyZW4gPSAoCkBAIC0yNTEwNywxNCArMjUxMjAsNiBA
QAogCQkJcGF0aCA9IGJlYWNvbjsKIAkJCXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7CiAJCX07Ci0J
CTgzNzk2NENDMUY4REI2N0QwMDIxOEVBMCAvKiBpb3MgKi8gPSB7Ci0JCQlpc2EgPSBQQlhHcm91
cDsKLQkJCWNoaWxkcmVuID0gKAotCQkJCTgzNzk2NENFMUY4REI2OUEwMDIxOEVBMCAvKiBHZW9s
b2NhdGlvblBvc2l0aW9uRGF0YUlPUy5tbSAqLywKLQkJCSk7Ci0JCQluYW1lID0gaW9zOwotCQkJ
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsKLQkJfTsKIAkJODNGQjMzNjUxRjUwOEExNzAwOTg2RTU0
IC8qIGVudHJpZXNhcGkgKi8gPSB7CiAJCQlpc2EgPSBQQlhHcm91cDsKIAkJCWNoaWxkcmVuID0g
KApAQCAtMjYxMjcsNyArMjYxMzIsNyBAQAogCQk5NzExNDVGRjE0RUYwMDc5MDA2NzRGRDkgLyog
Z2VvbG9jYXRpb24gKi8gPSB7CiAJCQlpc2EgPSBQQlhHcm91cDsKIAkJCWNoaWxkcmVuID0gKAot
CQkJCTgzNzk2NENDMUY4REI2N0QwMDIxOEVBMCAvKiBpb3MgKi8sCisJCQkJNDY1QzNEMTkyN0I5
OTFDODAwMjEzMDJGIC8qIGNvY29hICovLAogCQkJCTk3NDZBRjEzMTRGNERERTYwMDNFN0E3MCAv
KiBHZW9sb2NhdGlvbi5jcHAgKi8sCiAJCQkJOTc0NkFGMTQxNEY0RERFNjAwM0U3QTcwIC8qIEdl
b2xvY2F0aW9uLmggKi8sCiAJCQkJOTc0NkFGMTUxNEY0RERFNjAwM0U3QTcwIC8qIEdlb2xvY2F0
aW9uLmlkbCAqLywKQEAgLTI2ODM5LDYgKzI2ODQ0LDggQEAKIAkJCQlDMUY3QjcyRjI0NDhGMkFD
MDAxMjQ1NTcgLyogQUdYQ29tcGlsZXJTZXJ2aWNlLmNwcCAqLywKIAkJCQlDMUY3QjczMDI0NDhG
MkFDMDAxMjQ1NTcgLyogQUdYQ29tcGlsZXJTZXJ2aWNlLmggKi8sCiAJCQkJQTE0MDkwRkExQUE1
MUUxRDAwOTExOTFBIC8qIENvbnRlbnRGaWx0ZXJVbmJsb2NrSGFuZGxlckNvY29hLm1tICovLAor
CQkJCTQ2ODhFOTdGMjdCNkI0NDQwMDU2N0NEMiAvKiBDb3JlTG9jYXRpb25HZW9sb2NhdGlvblBy
b3ZpZGVyLmggKi8sCisJCQkJNDY4OEU5N0QyN0I2QjQ0MzAwNTY3Q0QyIC8qIENvcmVMb2NhdGlv
bkdlb2xvY2F0aW9uUHJvdmlkZXIubW0gKi8sCiAJCQkJQ0Q3RDMzNDUxQzdBMTZCRjAwMDQxMjkz
IC8qIENvcmVWaWRlb1NvZnRMaW5rLmNwcCAqLywKIAkJCQlDRDdEMzM0NjFDN0ExNkJGMDAwNDEy
OTMgLyogQ29yZVZpZGVvU29mdExpbmsuaCAqLywKIAkJCQlGNDYyRTc5RjI0MkFEQTNDMDAyMDRE
REQgLyogRHJhZ0RhdGFDb2NvYS5tbSAqLywKQEAgLTMzOTMxLDYgKzMzOTM4LDcgQEAKIAkJCQkz
RjgwMjAzNzFFOUU0N0M1MDBERUM2MUQgLyogQ29yZUF1ZGlvQ2FwdHVyZURldmljZU1hbmFnZXIu
aCBpbiBIZWFkZXJzICovLAogCQkJCTQxRkNDQzNCMjc0NjY3NTYwMDg5MkFENiAvKiBDb3JlQXVk
aW9DYXB0dXJlU291cmNlLmggaW4gSGVhZGVycyAqLywKIAkJCQkwN0FGRjQyMjFFRkIxNDQ5MDBC
NTQ1QjMgLyogQ29yZUF1ZGlvQ2FwdHVyZVNvdXJjZUlPUy5oIGluIEhlYWRlcnMgKi8sCisJCQkJ
NDY4OEU5ODAyN0I2QjQ1MDAwNTY3Q0QyIC8qIENvcmVMb2NhdGlvbkdlb2xvY2F0aW9uUHJvdmlk
ZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCUNEN0QzMzQ4MUM3QTE2QkYwMDA0MTI5MyAvKiBDb3Jl
VmlkZW9Tb2Z0TGluay5oIGluIEhlYWRlcnMgKi8sCiAJCQkJODYyRjEyOUUxOEMxNTc2RjAwNUM1
NEFGIC8qIENvdW50ZWRVc2VyQWN0aXZpdHkuaCBpbiBIZWFkZXJzICovLAogCQkJCUE4MEU2RDA0
MEExOTg5Q0EwMDdGQjhDNSAvKiBDb3VudGVyLmggaW4gSGVhZGVycyAqLywKQEAgLTM4Njg0LDYg
KzM4NjkyLDcgQEAKIAkJCQlDRDBFRUUwRTE0NzQzRjM5MDAzRUFGQTIgLyogQXVkaW9PdXRwdXRV
bml0QWRhcHRvcklPUy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlDREE3OTgyNzE3MEEyNzkxMDBE
NDVDNTUgLyogQXVkaW9TZXNzaW9uSU9TLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJQ0Q4QTdCQkIx
OTc3MzVGRTAwQ0JENjQzIC8qIEF1ZGlvU291cmNlUHJvdmlkZXJBVkZPYmpDLm1tIGluIFNvdXJj
ZXMgKi8sCisJCQkJNDZCQTQ5QjgyN0JCNDQzMzAwNzdGNjNGIC8qIEFWQXNzZXRUcmFja1V0aWxp
dGllcy5tbSBpbiBTb3VyY2VzICovLAogCQkJCTBGQ0EyOTM1MjZGQzM5MTcwMDZCNEFFQiAvKiBB
VkF1ZGlvU2Vzc2lvbkNhcHR1cmVEZXZpY2VNYW5hZ2VyLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJ
MDczOEU1RUMyNDk5ODM5MDAwREExMDFDIC8qIEFWT3V0cHV0RGV2aWNlTWVudUNvbnRyb2xsZXJU
YXJnZXRQaWNrZXIubW0gaW4gU291cmNlcyAqLywKIAkJCQlDRDMzNkY2MTE3RjlGNjQ3MDBERERD
RDAgLyogQVZUcmFja1ByaXZhdGVBVkZPYmpDSW1wbC5tbSBpbiBTb3VyY2VzICovLApAQCAtMzg3
MDIsMTMgKzM4NzExLDE0IEBACiAJCQkJNTE4RjRGRjYxOTRDQTRFNjAwODFCQUFFIC8qIEdhbWVw
YWRCdXR0b24uY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNTE2QzYyMjAxOTUwRDQ4NzAwMzM3RTc1
IC8qIEdhbWVwYWRFdmVudC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk1MUE5RDlFOTE5NUI5MzFG
MDAxQjJCNUMgLyogR2FtZXBhZE1hbmFnZXIuY3BwIGluIFNvdXJjZXMgKi8sCi0JCQkJODM3OTY0
Q0YxRjhEQjY5RDAwMjE4RUEwIC8qIEdlb2xvY2F0aW9uUG9zaXRpb25EYXRhSU9TLm1tIGluIFNv
dXJjZXMgKi8sCisJCQkJODM3OTY0Q0YxRjhEQjY5RDAwMjE4RUEwIC8qIEdlb2xvY2F0aW9uUG9z
aXRpb25EYXRhQ29jb2EubW0gaW4gU291cmNlcyAqLywKIAkJCQk2RTcyRjU0RTIyOURDRDEwMDBC
M0UxNTEgLyogR3JhcGhpY3NDb250ZXh0R0xBTkdMRS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk3
QzNFNTEwQjE4REY4RjM1MDBDMTEyRjcgLyogSFRNTENvbnZlcnRlci5tbSBpbiBTb3VyY2VzICov
LAogCQkJCUE4RDA2QjNBMEEyNjVEQ0QwMDVFNzIwMyAvKiBIVE1MTmFtZXMuY3BwIGluIFNvdXJj
ZXMgKi8sCiAJCQkJMUFDOTAwQzMxOTQzQzBGQzAwODYyNUI1IC8qIEhUVFBIZWFkZXJOYW1lcy5j
cHAgaW4gU291cmNlcyAqLywKIAkJCQlDRDI3QUU1MTIyQTk4Njg3MDA5NDdGRjkgLyogSW1hZ2VS
b3RhdGlvblNlc3Npb25WVC5tbSBpbiBTb3VyY2VzICovLAogCQkJCTA3MEUyRDBGMjZGMjUwODkw
MDE0QUFDMyAvKiBJbmJhbmRDaGFwdGVyVHJhY2tQcml2YXRlQVZGT2JqQy5tbSBpbiBTb3VyY2Vz
ICovLAorCQkJCTQ2Q0E5NDMxMjdCODY5NTgwMEY0RjVGRiAvKiBJbmJhbmRUZXh0VHJhY2tQcml2
YXRlQVZGT2JqQy5tbSBpbiBTb3VyY2VzICovLAogCQkJCUNEMDYzRjgyMUUyM0ZBODkwMDgxMkJF
MyAvKiBJbml0RGF0YVJlZ2lzdHJ5LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTkzNUM0NzcwMDlB
QzRENzMwMEE2QUFCNCAvKiBLZXlFdmVudE1hYy5tbSBpbiBTb3VyY2VzICovLAogCQkJCUNEQTk4
RTBCMTYwM0NENjAwMEZFQTNCMSAvKiBMZWdhY3lDRE0uY3BwIGluIFNvdXJjZXMgKi8sCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFn
ZS9QYWdlLmNwcAppbmRleCA2YTg1ZTg0M2Q4YmJlM2QxOTJkOTdmNDk2YmQ3ZWI0NTQ3NDlkYmE0
Li5lZmUwZTM4MDZkYzg0ODAzMGQyMmI5ZDkwMjkxNjc5MzM4NWJmZGFhIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFn
ZS5jcHAKQEAgLTY5LDYgKzY5LDcgQEAKICNpbmNsdWRlICJGcmFtZVRyZWUuaCIKICNpbmNsdWRl
ICJGcmFtZVZpZXcuaCIKICNpbmNsdWRlICJGdWxsc2NyZWVuTWFuYWdlci5oIgorI2luY2x1ZGUg
Ikdlb2xvY2F0aW9uQ29udHJvbGxlci5oIgogI2luY2x1ZGUgIkhUTUxFbGVtZW50LmgiCiAjaW5j
bHVkZSAiSFRNTEltYWdlRWxlbWVudC5oIgogI2luY2x1ZGUgIkhUTUxNZWRpYUVsZW1lbnQuaCIK
QEAgLTEzMzIsNiArMTMzMywxMSBAQCB2b2lkIFBhZ2U6OmRpZENvbW1pdExvYWQoKQogICAgIHJl
c2V0VGV4dFJlY29nbml0aW9uUmVzdWx0cygpOwogICAgIHJlc2V0SW1hZ2VBbmFseXNpc1F1ZXVl
KCk7CiAjZW5kaWYKKworI2lmIEVOQUJMRShHRU9MT0NBVElPTikKKyAgICBpZiAoYXV0byogZ2Vv
bG9jYXRpb25Db250cm9sbGVyID0gR2VvbG9jYXRpb25Db250cm9sbGVyOjpmcm9tKHRoaXMpKQor
ICAgICAgICBnZW9sb2NhdGlvbkNvbnRyb2xsZXItPmRpZE5hdmlnYXRlUGFnZSgpOworI2VuZGlm
CiB9CiAKIHZvaWQgUGFnZTo6ZGlkRmluaXNoTG9hZCgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9jb2NvYS9Db3JlTG9jYXRpb25HZW9sb2NhdGlvblByb3ZpZGVyLmggYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9Db3JlTG9jYXRpb25HZW9sb2NhdGlvblByb3Zp
ZGVyLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uYzUyNDZjODg0YWNmOGY2OWZjYjhmOGFjNGFjYzdmNGNkZTY0NWNl
ZAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL0NvcmVM
b2NhdGlvbkdlb2xvY2F0aW9uUHJvdmlkZXIuaApAQCAtMCwwICsxLDY3IEBACisvKgorICogQ29w
eXJpZ2h0IChDKSAyMDIyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4K
KyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBD
T05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIK
KyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4g
T1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAq
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9G
SVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisg
KiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8K
KworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlIDx3dGYvQ29tcGxldGlvbkhhbmRsZXIuaD4KKyNp
bmNsdWRlIDx3dGYvRm9yd2FyZC5oPgorI2luY2x1ZGUgPHd0Zi9SZXRhaW5QdHIuaD4KKworT0JK
Q19DTEFTUyBXZWJDTExvY2F0aW9uTWFuYWdlcjsKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitj
bGFzcyBHZW9sb2NhdGlvblBvc2l0aW9uRGF0YTsKK2NsYXNzIFJlZ2lzdHJhYmxlRG9tYWluOwor
CitjbGFzcyBXRUJDT1JFX0VYUE9SVCBDb3JlTG9jYXRpb25HZW9sb2NhdGlvblByb3ZpZGVyIHsK
KyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKK3B1YmxpYzoKKyAgICBjbGFzcyBDbGllbnQg
eworICAgIHB1YmxpYzoKKyAgICAgICAgdmlydHVhbCB+Q2xpZW50KCkgeyB9CisKKyAgICAgICAg
dmlydHVhbCB2b2lkIGdlb2xvY2F0aW9uQXV0aG9yaXphdGlvbkdyYW50ZWQoY29uc3QgU3RyaW5n
JiAvKndlYnNpdGVJZGVudGlmaWVyKi8pIHsgfQorICAgICAgICB2aXJ0dWFsIHZvaWQgZ2VvbG9j
YXRpb25BdXRob3JpemF0aW9uRGVuaWVkKGNvbnN0IFN0cmluZyYgLyp3ZWJzaXRlSWRlbnRpZmll
ciovKSB7IH0KKyAgICAgICAgdmlydHVhbCB2b2lkIHBvc2l0aW9uQ2hhbmdlZChjb25zdCBTdHJp
bmcmIHdlYnNpdGVJZGVudGlmaWVyLCBHZW9sb2NhdGlvblBvc2l0aW9uRGF0YSYmKSA9IDA7Cisg
ICAgICAgIHZpcnR1YWwgdm9pZCBlcnJvck9jY3VycmVkKGNvbnN0IFN0cmluZyYgd2Vic2l0ZUlk
ZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgZXJyb3JNZXNzYWdlKSA9IDA7CisgICAgICAgIHZpcnR1
YWwgdm9pZCByZXNldEdlb2xvY2F0aW9uKGNvbnN0IFN0cmluZyYgd2Vic2l0ZUlkZW50aWZpZXIp
ID0gMDsKKyAgICB9OworCisgICAgQ29yZUxvY2F0aW9uR2VvbG9jYXRpb25Qcm92aWRlcihjb25z
dCBSZWdpc3RyYWJsZURvbWFpbiYsIENsaWVudCYpOworICAgIH5Db3JlTG9jYXRpb25HZW9sb2Nh
dGlvblByb3ZpZGVyKCk7CisKKyAgICB2b2lkIHN0YXJ0KCk7CisgICAgdm9pZCBzdG9wKCk7CisK
KyAgICB2b2lkIHNldEVuYWJsZUhpZ2hBY2N1cmFjeShib29sKTsKKworICAgIHN0YXRpYyB2b2lk
IHJlcXVlc3RBdXRob3JpemF0aW9uKGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiwgQ29tcGxldGlv
bkhhbmRsZXI8dm9pZChib29sKT4mJik7CisKK3ByaXZhdGU6CisgICAgUmV0YWluUHRyPFdlYkNM
TG9jYXRpb25NYW5hZ2VyPiBtX2xvY2F0aW9uTWFuYWdlcjsKK307CisKK30gLy8gbmFtZXNwYWNl
IFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL0NvcmVM
b2NhdGlvbkdlb2xvY2F0aW9uUHJvdmlkZXIubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9j
b2NvYS9Db3JlTG9jYXRpb25HZW9sb2NhdGlvblByb3ZpZGVyLm1tCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjYzMTc2
OTMzNGFlNjJiZjAyNzJkM2MzMTdmNzlmN2Y1MmY5OTNkMzgKLS0tIC9kZXYvbnVsbAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9Db3JlTG9jYXRpb25HZW9sb2NhdGlvblByb3Zp
ZGVyLm1tCkBAIC0wLDAgKzEsMjY4IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIyIEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycn
CisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwor
ICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lB
TCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICog
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2ltcG9ydCAiY29uZmlnLmgi
CisjaW1wb3J0ICJDb3JlTG9jYXRpb25HZW9sb2NhdGlvblByb3ZpZGVyLmgiCisKKyNpbXBvcnQg
Ikdlb2xvY2F0aW9uUG9zaXRpb25EYXRhLmgiCisjaW1wb3J0ICJSZWdpc3RyYWJsZURvbWFpbi5o
IgorI2ltcG9ydCA8Q29yZUxvY2F0aW9uL0NMTG9jYXRpb25NYW5hZ2VyRGVsZWdhdGUuaD4KKyNp
bXBvcnQgPENvcmVMb2NhdGlvbi9Db3JlTG9jYXRpb24uaD4KKyNpbXBvcnQgPHd0Zi9Tb2Z0TGlu
a2luZy5oPgorCisjaWYgVVNFKEFQUExFX0lOVEVSTkFMX1NESykKKyNpbXBvcnQgPENvcmVMb2Nh
dGlvbi9DTExvY2F0aW9uTWFuYWdlcl9Qcml2YXRlLmg+CisjZW5kaWYKKworU09GVF9MSU5LX0ZS
QU1FV09SSyhDb3JlTG9jYXRpb24pCisKK1NPRlRfTElOS19DTEFTUyhDb3JlTG9jYXRpb24sIENM
TG9jYXRpb25NYW5hZ2VyKQorU09GVF9MSU5LX0NMQVNTKENvcmVMb2NhdGlvbiwgQ0xMb2NhdGlv
bikKKworU09GVF9MSU5LX0NPTlNUQU5UKENvcmVMb2NhdGlvbiwga0NMTG9jYXRpb25BY2N1cmFj
eUJlc3QsIGRvdWJsZSkKK1NPRlRfTElOS19DT05TVEFOVChDb3JlTG9jYXRpb24sIGtDTExvY2F0
aW9uQWNjdXJhY3lIdW5kcmVkTWV0ZXJzLCBkb3VibGUpCisKKyNkZWZpbmUga0NMTG9jYXRpb25B
Y2N1cmFjeUJlc3QgZ2V0a0NMTG9jYXRpb25BY2N1cmFjeUJlc3QoKQorI2RlZmluZSBrQ0xMb2Nh
dGlvbkFjY3VyYWN5SHVuZHJlZE1ldGVycyBnZXRrQ0xMb2NhdGlvbkFjY3VyYWN5SHVuZHJlZE1l
dGVycygpCisKK3N0YXRpYyBib29sIGlzQXV0aG9yaXphdGlvbkdyYW50ZWQoQ0xBdXRob3JpemF0
aW9uU3RhdHVzIHN0YXR1cykKK3sKKyAgICByZXR1cm4gc3RhdHVzID09IGtDTEF1dGhvcml6YXRp
b25TdGF0dXNBdXRob3JpemVkQWx3YXlzCisjaWYgSEFWRShDT1JFX0xPQ0FUSU9OX0FVVEhPUkla
RURfV0hFTl9JTl9VU0UpCisgICAgICAgIHx8IHN0YXR1cyA9PSBrQ0xBdXRob3JpemF0aW9uU3Rh
dHVzQXV0aG9yaXplZFdoZW5JblVzZQorI2VuZGlmCisgICAgICAgIDsKK30KKworQGludGVyZmFj
ZSBXZWJDTExvY2F0aW9uTWFuYWdlciA6IE5TT2JqZWN0PENMTG9jYXRpb25NYW5hZ2VyRGVsZWdh
dGU+CitAZW5kCisKK0BpbXBsZW1lbnRhdGlvbiBXZWJDTExvY2F0aW9uTWFuYWdlciB7CisgICAg
UmV0YWluUHRyPENMTG9jYXRpb25NYW5hZ2VyPiBfbG9jYXRpb25NYW5hZ2VyOworICAgIFdlYkNv
cmU6OkNvcmVMb2NhdGlvbkdlb2xvY2F0aW9uUHJvdmlkZXI6OkNsaWVudCogX2NsaWVudDsKKyAg
ICBTdHJpbmcgX3dlYnNpdGVJZGVudGlmaWVyOworICAgIEJPT0wgX2lzV2FpdGluZ0ZvckF1dGhv
cml6YXRpb247Cit9CisKKy0gKGluc3RhbmNldHlwZSlpbml0V2l0aFdlYnNpdGVJZGVudGlmaWVy
Oihjb25zdCBTdHJpbmcmKXdlYnNpdGVJZGVudGlmaWVyIGNsaWVudDooV2ViQ29yZTo6Q29yZUxv
Y2F0aW9uR2VvbG9jYXRpb25Qcm92aWRlcjo6Q2xpZW50JiljbGllbnQKK3sKKyAgICBzZWxmID0g
W3N1cGVyIGluaXRdOworICAgIGlmICghc2VsZikKKyAgICAgICAgcmV0dXJuIG5pbDsKKworICAg
IC8vIEZJWE1FOiBDYWxsIGluaXRXaXRoV2Vic2l0ZUlkZW50aWZpZXIgYW5kIHBhc3MgdGhlIHdl
YnNpdGVJZGVudGlmaWVyIHdoZW4gSEFWRShDT1JFX0xPQ0FUSU9OX1dFQlNJVEVfSURFTlRJRklF
UlMpIGFuZCAhd2Vic2l0ZUlkZW50aWZpZXIuaXNFbXB0eSgpIG9uY2UgPHJkYXI6Ly84ODgzNDMw
MT4gaXMgZml4ZWQuCisgICAgVU5VU0VEX1BBUkFNKHdlYnNpdGVJZGVudGlmaWVyKTsKKyAgICBf
bG9jYXRpb25NYW5hZ2VyID0gYWRvcHROUyhbYWxsb2NDTExvY2F0aW9uTWFuYWdlckluc3RhbmNl
KCkgaW5pdF0pOworICAgIF9jbGllbnQgPSAmY2xpZW50OworICAgIF93ZWJzaXRlSWRlbnRpZmll
ciA9IHdlYnNpdGVJZGVudGlmaWVyOworICAgIFtfbG9jYXRpb25NYW5hZ2VyIHNldERlbGVnYXRl
OnNlbGZdOworICAgIHJldHVybiBzZWxmOworfQorCistICh2b2lkKWRlYWxsb2MKK3sKKyAgICBb
X2xvY2F0aW9uTWFuYWdlciBzZXREZWxlZ2F0ZTpuaWxdOworICAgIFtzdXBlciBkZWFsbG9jXTsK
K30KKworLSAodm9pZClzdGFydAoreworICAgIGlmICghW2dldENMTG9jYXRpb25NYW5hZ2VyQ2xh
c3MoKSBsb2NhdGlvblNlcnZpY2VzRW5hYmxlZF0gfHwgIWlzQXV0aG9yaXphdGlvbkdyYW50ZWQo
W19sb2NhdGlvbk1hbmFnZXIgYXV0aG9yaXphdGlvblN0YXR1c10pKSB7CisgICAgICAgIFtfbG9j
YXRpb25NYW5hZ2VyIHN0b3BVcGRhdGluZ0xvY2F0aW9uXTsKKyAgICAgICAgX2NsaWVudC0+cmVz
ZXRHZW9sb2NhdGlvbihfd2Vic2l0ZUlkZW50aWZpZXIpOworICAgICAgICByZXR1cm47CisgICAg
fQorCisgICAgW19sb2NhdGlvbk1hbmFnZXIgc3RhcnRVcGRhdGluZ0xvY2F0aW9uXTsKK30KKwor
LSAodm9pZClzdG9wCit7CisgICAgW19sb2NhdGlvbk1hbmFnZXIgc3RvcFVwZGF0aW5nTG9jYXRp
b25dOworfQorCistICh2b2lkKXNldEVuYWJsZUhpZ2hBY2N1cmFjeTooQk9PTCloaWdoQWNjdXJh
Y3lFbmFibGVkCit7CisgICAgW19sb2NhdGlvbk1hbmFnZXIgc2V0RGVzaXJlZEFjY3VyYWN5Omhp
Z2hBY2N1cmFjeUVuYWJsZWQgPyBrQ0xMb2NhdGlvbkFjY3VyYWN5QmVzdCA6IGtDTExvY2F0aW9u
QWNjdXJhY3lIdW5kcmVkTWV0ZXJzXTsKK30KKworLSAodm9pZClyZXF1ZXN0R2VvbG9jYXRpb25B
dXRob3JpemF0aW9uCit7CisgICAgaWYgKCFbZ2V0Q0xMb2NhdGlvbk1hbmFnZXJDbGFzcygpIGxv
Y2F0aW9uU2VydmljZXNFbmFibGVkXSkgeworICAgICAgICBfY2xpZW50LT5nZW9sb2NhdGlvbkF1
dGhvcml6YXRpb25EZW5pZWQoX3dlYnNpdGVJZGVudGlmaWVyKTsKKyAgICAgICAgcmV0dXJuOwor
ICAgIH0KKworICAgIHN3aXRjaCAoW19sb2NhdGlvbk1hbmFnZXIgYXV0aG9yaXphdGlvblN0YXR1
c10pIHsKKyAgICBjYXNlIGtDTEF1dGhvcml6YXRpb25TdGF0dXNOb3REZXRlcm1pbmVkOiB7Cisg
ICAgICAgIGlmICghX2lzV2FpdGluZ0ZvckF1dGhvcml6YXRpb24pIHsKKyAgICAgICAgICAgIF9p
c1dhaXRpbmdGb3JBdXRob3JpemF0aW9uID0gWUVTOworICAgICAgICAgICAgW19sb2NhdGlvbk1h
bmFnZXIgcmVxdWVzdFdoZW5JblVzZUF1dGhvcml6YXRpb25dOworICAgICAgICB9CisgICAgICAg
IGJyZWFrOworICAgIH0KKyAgICBjYXNlIGtDTEF1dGhvcml6YXRpb25TdGF0dXNBdXRob3JpemVk
QWx3YXlzOgorI2lmIEhBVkUoQ09SRV9MT0NBVElPTl9BVVRIT1JJWkVEX1dIRU5fSU5fVVNFKQor
ICAgIGNhc2Uga0NMQXV0aG9yaXphdGlvblN0YXR1c0F1dGhvcml6ZWRXaGVuSW5Vc2U6CisjZW5k
aWYKKyAgICAgICAgX2NsaWVudC0+Z2VvbG9jYXRpb25BdXRob3JpemF0aW9uR3JhbnRlZChfd2Vi
c2l0ZUlkZW50aWZpZXIpOworICAgICAgICBicmVhazsKKyAgICBjYXNlIGtDTEF1dGhvcml6YXRp
b25TdGF0dXNSZXN0cmljdGVkOgorICAgIGNhc2Uga0NMQXV0aG9yaXphdGlvblN0YXR1c0Rlbmll
ZDoKKyAgICAgICAgX2NsaWVudC0+Z2VvbG9jYXRpb25BdXRob3JpemF0aW9uRGVuaWVkKF93ZWJz
aXRlSWRlbnRpZmllcik7CisgICAgICAgIGJyZWFrOworICAgIH0KK30KKworLSAodm9pZClsb2Nh
dGlvbk1hbmFnZXJEaWRDaGFuZ2VBdXRob3JpemF0aW9uOihDTExvY2F0aW9uTWFuYWdlciAqKW1h
bmFnZXIKK3sKKyAgICBhdXRvIHN0YXR1cyA9IFtfbG9jYXRpb25NYW5hZ2VyIGF1dGhvcml6YXRp
b25TdGF0dXNdOworICAgIGlmIChfaXNXYWl0aW5nRm9yQXV0aG9yaXphdGlvbikgeworICAgICAg
ICBzd2l0Y2ggKHN0YXR1cykgeworICAgICAgICBjYXNlIGtDTEF1dGhvcml6YXRpb25TdGF0dXNO
b3REZXRlcm1pbmVkOgorICAgICAgICAgICAgLy8gVGhpcyBjYW4gaGFwcGVuIGFmdGVyIHJlc3Vt
ZSBpZiB0aGUgdXNlciBoYXMgc3RpbGwgbm90IGFuc3dlcmVkIHRoZSBkaWFsb2cuIFdlIGp1c3Qg
aGF2ZSB0byB3YWl0IGZvciB0aGUgcGVybWlzc2lvbi4KKyAgICAgICAgICAgIGJyZWFrOworICAg
ICAgICBjYXNlIGtDTEF1dGhvcml6YXRpb25TdGF0dXNEZW5pZWQ6CisgICAgICAgIGNhc2Uga0NM
QXV0aG9yaXphdGlvblN0YXR1c1Jlc3RyaWN0ZWQ6CisgICAgICAgICAgICBfaXNXYWl0aW5nRm9y
QXV0aG9yaXphdGlvbiA9IE5POworICAgICAgICAgICAgX2NsaWVudC0+Z2VvbG9jYXRpb25BdXRo
b3JpemF0aW9uRGVuaWVkKF93ZWJzaXRlSWRlbnRpZmllcik7CisgICAgICAgICAgICBicmVhazsK
KyAgICAgICAgY2FzZSBrQ0xBdXRob3JpemF0aW9uU3RhdHVzQXV0aG9yaXplZEFsd2F5czoKKyNp
ZiBIQVZFKENPUkVfTE9DQVRJT05fQVVUSE9SSVpFRF9XSEVOX0lOX1VTRSkKKyAgICAgICAgY2Fz
ZSBrQ0xBdXRob3JpemF0aW9uU3RhdHVzQXV0aG9yaXplZFdoZW5JblVzZToKKyNlbmRpZgorICAg
ICAgICAgICAgX2lzV2FpdGluZ0ZvckF1dGhvcml6YXRpb24gPSBOTzsKKyAgICAgICAgICAgIF9j
bGllbnQtPmdlb2xvY2F0aW9uQXV0aG9yaXphdGlvbkdyYW50ZWQoX3dlYnNpdGVJZGVudGlmaWVy
KTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAgfSBlbHNlIHsKKyAgICAgICAg
aWYgKHN0YXR1cyA9PSBrQ0xBdXRob3JpemF0aW9uU3RhdHVzRGVuaWVkIHx8IHN0YXR1cyA9PSBr
Q0xBdXRob3JpemF0aW9uU3RhdHVzUmVzdHJpY3RlZCkgeworICAgICAgICAgICAgW19sb2NhdGlv
bk1hbmFnZXIgc3RvcFVwZGF0aW5nTG9jYXRpb25dOworICAgICAgICAgICAgX2NsaWVudC0+cmVz
ZXRHZW9sb2NhdGlvbihfd2Vic2l0ZUlkZW50aWZpZXIpOworICAgICAgICB9CisgICAgfQorfQor
CistICh2b2lkKWxvY2F0aW9uTWFuYWdlcjooQ0xMb2NhdGlvbk1hbmFnZXIgKiltYW5hZ2VyIGRp
ZFVwZGF0ZUxvY2F0aW9uczooTlNBcnJheSAqKWxvY2F0aW9ucworeworICAgIFVOVVNFRF9QQVJB
TShtYW5hZ2VyKTsKKyAgICBmb3IgKENMTG9jYXRpb24gKmxvY2F0aW9uIGluIGxvY2F0aW9ucykK
KyAgICAgICAgX2NsaWVudC0+cG9zaXRpb25DaGFuZ2VkKF93ZWJzaXRlSWRlbnRpZmllciwgV2Vi
Q29yZTo6R2VvbG9jYXRpb25Qb3NpdGlvbkRhdGEgeyBsb2NhdGlvbiB9KTsKK30KKworLSAodm9p
ZClsb2NhdGlvbk1hbmFnZXI6KENMTG9jYXRpb25NYW5hZ2VyICopbWFuYWdlciBkaWRGYWlsV2l0
aEVycm9yOihOU0Vycm9yICopZXJyb3IKK3sKKyAgICBBU1NFUlQoZXJyb3IpOworICAgIFVOVVNF
RF9QQVJBTShtYW5hZ2VyKTsKKworICAgIGlmIChbZXJyb3IgY29kZV0gPT0ga0NMRXJyb3JEZW5p
ZWQpIHsKKyAgICAgICAgLy8gSWdub3JlIHRoZSBlcnJvciBoZXJlIGFuZCBsZXQgbG9jYXRpb25N
YW5hZ2VyOmRpZENoYW5nZUF1dGhvcml6YXRpb25TdGF0dXM6IGhhbmRsZSB0aGUgcGVybWlzc2lv
bi4KKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIE5TU3RyaW5nICplcnJvck1lc3NhZ2Ug
PSBbZXJyb3IgbG9jYWxpemVkRGVzY3JpcHRpb25dOworICAgIF9jbGllbnQtPmVycm9yT2NjdXJy
ZWQoX3dlYnNpdGVJZGVudGlmaWVyLCBlcnJvck1lc3NhZ2UpOworfQorCitAZW5kCisKK25hbWVz
cGFjZSBXZWJDb3JlIHsKKworQ29yZUxvY2F0aW9uR2VvbG9jYXRpb25Qcm92aWRlcjo6Q29yZUxv
Y2F0aW9uR2VvbG9jYXRpb25Qcm92aWRlcihjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYgcmVnaXN0
cmFibGVEb21haW4sIENsaWVudCYgY2xpZW50KQorICAgIDogbV9sb2NhdGlvbk1hbmFnZXIoYWRv
cHROUyhbW1dlYkNMTG9jYXRpb25NYW5hZ2VyIGFsbG9jXSBpbml0V2l0aFdlYnNpdGVJZGVudGlm
aWVyOnJlZ2lzdHJhYmxlRG9tYWluLnN0cmluZygpIGNsaWVudDpjbGllbnRdKSkKK3sKKyAgICAv
LyBSZXF1ZXN0IHBlcm1pc3Npb24gZm9yIHRoZSBhcHAgdG8gdXNlIGdlb2xvY2F0aW9uIChpZiBp
dCBkb2Vzbid0IGFscmVhZHkpLgorICAgIFttX2xvY2F0aW9uTWFuYWdlciByZXF1ZXN0R2VvbG9j
YXRpb25BdXRob3JpemF0aW9uXTsKK30KKworQ29yZUxvY2F0aW9uR2VvbG9jYXRpb25Qcm92aWRl
cjo6fkNvcmVMb2NhdGlvbkdlb2xvY2F0aW9uUHJvdmlkZXIoKQoreworICAgIFttX2xvY2F0aW9u
TWFuYWdlciBzdG9wXTsKK30KKwordm9pZCBDb3JlTG9jYXRpb25HZW9sb2NhdGlvblByb3ZpZGVy
OjpzdGFydCgpCit7CisgICAgW21fbG9jYXRpb25NYW5hZ2VyIHN0YXJ0XTsKK30KKwordm9pZCBD
b3JlTG9jYXRpb25HZW9sb2NhdGlvblByb3ZpZGVyOjpzdG9wKCkKK3sKKyAgICBbbV9sb2NhdGlv
bk1hbmFnZXIgc3RvcF07Cit9CisKK3ZvaWQgQ29yZUxvY2F0aW9uR2VvbG9jYXRpb25Qcm92aWRl
cjo6c2V0RW5hYmxlSGlnaEFjY3VyYWN5KGJvb2wgaGlnaEFjY3VyYWN5RW5hYmxlZCkKK3sKKyAg
ICBbbV9sb2NhdGlvbk1hbmFnZXIgc2V0RW5hYmxlSGlnaEFjY3VyYWN5OmhpZ2hBY2N1cmFjeUVu
YWJsZWRdOworfQorCitjbGFzcyBBdXRob3JpemF0aW9uQ2hlY2tlciBmaW5hbCA6IHB1YmxpYyBS
ZWZDb3VudGVkPEF1dGhvcml6YXRpb25DaGVja2VyPiwgcHVibGljIENvcmVMb2NhdGlvbkdlb2xv
Y2F0aW9uUHJvdmlkZXI6OkNsaWVudCB7CitwdWJsaWM6CisgICAgc3RhdGljIFJlZjxBdXRob3Jp
emF0aW9uQ2hlY2tlcj4gY3JlYXRlKCkKKyAgICB7CisgICAgICAgIHJldHVybiBhZG9wdFJlZigq
bmV3IEF1dGhvcml6YXRpb25DaGVja2VyKTsKKyAgICB9CisKKyAgICB2b2lkIGNoZWNrKGNvbnN0
IFJlZ2lzdHJhYmxlRG9tYWluJiByZWdpc3RyYWJsZURvbWFpbiwgQ29tcGxldGlvbkhhbmRsZXI8
dm9pZChib29sKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKKyAgICB7CisgICAgICAgIG1fY29tcGxl
dGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKTsKKyAgICAgICAgbV9wcm92
aWRlciA9IG1ha2VVbmlxdWU8Q29yZUxvY2F0aW9uR2VvbG9jYXRpb25Qcm92aWRlcj4ocmVnaXN0
cmFibGVEb21haW4sICp0aGlzKTsKKyAgICB9CisKK3ByaXZhdGU6CisgICAgQXV0aG9yaXphdGlv
bkNoZWNrZXIoKSA9IGRlZmF1bHQ7CisKKyAgICB2b2lkIGdlb2xvY2F0aW9uQXV0aG9yaXphdGlv
bkdyYW50ZWQoY29uc3QgU3RyaW5nJikgZmluYWwKKyAgICB7CisgICAgICAgIGlmIChtX2NvbXBs
ZXRpb25IYW5kbGVyKQorICAgICAgICAgICAgbV9jb21wbGV0aW9uSGFuZGxlcih0cnVlKTsKKyAg
ICB9CisKKyAgICB2b2lkIGdlb2xvY2F0aW9uQXV0aG9yaXphdGlvbkRlbmllZChjb25zdCBTdHJp
bmcmKSBmaW5hbAorICAgIHsKKyAgICAgICAgaWYgKG1fY29tcGxldGlvbkhhbmRsZXIpCisgICAg
ICAgICAgICBtX2NvbXBsZXRpb25IYW5kbGVyKGZhbHNlKTsKKyAgICB9CisKKyAgICB2b2lkIHBv
c2l0aW9uQ2hhbmdlZChjb25zdCBTdHJpbmcmLCBHZW9sb2NhdGlvblBvc2l0aW9uRGF0YSYmKSBm
aW5hbCB7IH0KKyAgICB2b2lkIGVycm9yT2NjdXJyZWQoY29uc3QgU3RyaW5nJiwgY29uc3QgU3Ry
aW5nJikgZmluYWwKKyAgICB7CisgICAgICAgIGlmIChtX2NvbXBsZXRpb25IYW5kbGVyKQorICAg
ICAgICAgICAgbV9jb21wbGV0aW9uSGFuZGxlcihmYWxzZSk7CisgICAgfQorICAgIHZvaWQgcmVz
ZXRHZW9sb2NhdGlvbihjb25zdCBTdHJpbmcmKSBmaW5hbCB7IH0KKworICAgIHN0ZDo6dW5pcXVl
X3B0cjxDb3JlTG9jYXRpb25HZW9sb2NhdGlvblByb3ZpZGVyPiBtX3Byb3ZpZGVyOworICAgIENv
bXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+IG1fY29tcGxldGlvbkhhbmRsZXI7Cit9OworCit2
b2lkIENvcmVMb2NhdGlvbkdlb2xvY2F0aW9uUHJvdmlkZXI6OnJlcXVlc3RBdXRob3JpemF0aW9u
KGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiByZWdpc3RyYWJsZURvbWFpbiwgQ29tcGxldGlvbkhh
bmRsZXI8dm9pZChib29sKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3sKKyAgICBhdXRvIGF1dGhv
cml6YXRpb25DaGVja2VyID0gQXV0aG9yaXphdGlvbkNoZWNrZXI6OmNyZWF0ZSgpOworICAgIGF1
dGhvcml6YXRpb25DaGVja2VyLT5jaGVjayhyZWdpc3RyYWJsZURvbWFpbiwgW2F1dGhvcml6YXRp
b25DaGVja2VyLCBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIp
XShib29sIGF1dGhvcml6ZWQpIG11dGFibGUgeworICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihh
dXRob3JpemVkKTsKKyAgICB9KTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9HZW9sb2NhdGlvbkNsaWVudE1vY2su
Y3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9HZW9sb2NhdGlvbkNsaWVudE1vY2su
Y3BwCmluZGV4IDlkNWVmYzgzZjM0ZWIxOGQ1OTlkYzEwY2FhOGZjMGNhMzk5ZGIwYTIuLmZhNDIw
ODJlNTA1OWE5ZWNmMjY0Y2FhZjRjMjY1MzJmNGIyZTVkN2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL21vY2svR2VvbG9jYXRpb25DbGllbnRNb2NrLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL0dlb2xvY2F0aW9uQ2xpZW50TW9jay5jcHAKQEAgLTEz
NiwxMCArMTM2LDExIEBAIHZvaWQgR2VvbG9jYXRpb25DbGllbnRNb2NrOjpnZW9sb2NhdGlvbkRl
c3Ryb3llZCgpCiAgICAgQVNTRVJUKCFtX2lzQWN0aXZlKTsKIH0KIAotdm9pZCBHZW9sb2NhdGlv
bkNsaWVudE1vY2s6OnN0YXJ0VXBkYXRpbmcoY29uc3QgU3RyaW5nJiBhdXRob3JpemF0aW9uVG9r
ZW4pCit2b2lkIEdlb2xvY2F0aW9uQ2xpZW50TW9jazo6c3RhcnRVcGRhdGluZyhjb25zdCBTdHJp
bmcmIGF1dGhvcml6YXRpb25Ub2tlbiwgYm9vbCBlbmFibGVIaWdoQWNjdXJhY3kpCiB7CiAgICAg
QVNTRVJUKCFtX2lzQWN0aXZlKTsKICAgICBVTlVTRURfUEFSQU0oYXV0aG9yaXphdGlvblRva2Vu
KTsKKyAgICBVTlVTRURfUEFSQU0oZW5hYmxlSGlnaEFjY3VyYWN5KTsKICAgICBtX2lzQWN0aXZl
ID0gdHJ1ZTsKICAgICBhc3luY1VwZGF0ZUNvbnRyb2xsZXIoKTsKIH0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svR2VvbG9jYXRpb25DbGllbnRNb2NrLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL0dlb2xvY2F0aW9uQ2xpZW50TW9jay5oCmluZGV4IDJm
YTc1ZTA1N2E1M2Q3ZTgxOGNjZmFmZWU3MDI0M2RkNTQ4MjE4NDUuLmY4YmFjMzhiNWI2Y2NjOGNj
MDhmODcwNzFlYmM3NWQ2NWIzMTA2NDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL21vY2svR2VvbG9jYXRpb25DbGllbnRNb2NrLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbW9jay9HZW9sb2NhdGlvbkNsaWVudE1vY2suaApAQCAtNTksNyArNTksNyBAQCBwdWJs
aWM6CiAKICAgICAvLyBHZW9sb2NhdGlvbkNsaWVudAogICAgIHZvaWQgZ2VvbG9jYXRpb25EZXN0
cm95ZWQoKSBvdmVycmlkZTsKLSAgICB2b2lkIHN0YXJ0VXBkYXRpbmcoY29uc3QgU3RyaW5nJiBh
dXRob3JpemF0aW9uVG9rZW4pIG92ZXJyaWRlOworICAgIHZvaWQgc3RhcnRVcGRhdGluZyhjb25z
dCBTdHJpbmcmIGF1dGhvcml6YXRpb25Ub2tlbiwgYm9vbCBlbmFibGVIaWdoQWNjdXJhY3kpIG92
ZXJyaWRlOwogICAgIHZvaWQgc3RvcFVwZGF0aW5nKCkgb3ZlcnJpZGU7CiAgICAgdm9pZCBzZXRF
bmFibGVIaWdoQWNjdXJhY3koYm9vbCkgb3ZlcnJpZGU7CiAgICAgc3RkOjpvcHRpb25hbDxHZW9s
b2NhdGlvblBvc2l0aW9uRGF0YT4gbGFzdFBvc2l0aW9uKCkgb3ZlcnJpZGU7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1NvdXJjZXNDb2NvYS50eHQgYi9Tb3VyY2UvV2ViS2l0L1NvdXJjZXND
b2NvYS50eHQKaW5kZXggMmFjZGE5NDFlY2RmNGJjYmU3ZmU5NGE1MTgxNzQ5MWYxYzBiZjM5YS4u
MzlmZWE5MWNlNTYxNzU4MTYwYWQ5MjE4OTg5NDUzZTU4M2VkNjQ2MSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9Tb3VyY2VzQ29jb2EudHh0CisrKyBiL1NvdXJjZS9XZWJLaXQvU291cmNlc0Nv
Y29hLnR4dApAQCAtNDI3LDYgKzQyNyw3IEBAIFVJUHJvY2Vzcy9Db2NvYS9VSVJlbW90ZU9iamVj
dFJlZ2lzdHJ5LmNwcAogVUlQcm9jZXNzL0NvY29hL1VzZXJNZWRpYUNhcHR1cmVNYW5hZ2VyUHJv
eHkuY3BwCiBVSVByb2Nlc3MvQ29jb2EvVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RNYW5hZ2Vy
UHJveHkubW0KIFVJUHJvY2Vzcy9Db2NvYS9WaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyUHJveHkubW0K
K1VJUHJvY2Vzcy9Db2NvYS9XZWJHZW9sb2NhdGlvbk1hbmFnZXJQcm94eUNvY29hLmNwcAogVUlQ
cm9jZXNzL0NvY29hL1dlYlBhZ2VQcm94eUNvY29hLm1tCiBVSVByb2Nlc3MvQ29jb2EvV2ViUGFz
dGVib2FyZFByb3h5Q29jb2EubW0KIFVJUHJvY2Vzcy9Db2NvYS9XZWJQcmVmZXJlbmNlc0NvY29h
Lm1tCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XZWJHZW9sb2Nh
dGlvbk1hbmFnZXJQcm94eUNvY29hLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29h
L1dlYkdlb2xvY2F0aW9uTWFuYWdlclByb3h5Q29jb2EuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmYwYmZiZGU5
MzIyMmIxMDU3ZjE3MzZiNzI5MjIwMTIzMmIwMjU2OGYKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XZWJHZW9sb2NhdGlvbk1hbmFnZXJQcm94eUNvY29h
LmNwcApAQCAtMCwwICsxLDc2IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIyIEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwor
ICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisg
KiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICog
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwg
RVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgor
I2luY2x1ZGUgIldlYkdlb2xvY2F0aW9uTWFuYWdlclByb3h5LmgiCisKKyNpbmNsdWRlICJXZWJH
ZW9sb2NhdGlvbk1hbmFnZXJNZXNzYWdlcy5oIgorI2luY2x1ZGUgIldlYlByb2Nlc3NQcm94eS5o
IgorCituYW1lc3BhY2UgV2ViS2l0IHsKKworLy8gRklYTUU6IFRoaXMgc2hvdWxkIGJlIHVzZWQg
YnkgYWxsIENvY29hIHBvcnRzCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKKwordm9pZCBXZWJH
ZW9sb2NhdGlvbk1hbmFnZXJQcm94eTo6cG9zaXRpb25DaGFuZ2VkKGNvbnN0IFN0cmluZyYgd2Vi
c2l0ZUlkZW50aWZpZXIsIFdlYkNvcmU6Okdlb2xvY2F0aW9uUG9zaXRpb25EYXRhJiYgcG9zaXRp
b24pCit7CisgICAgYXV0byByZWdpc3RyYWJsZURvbWFpbiA9IFdlYkNvcmU6OlJlZ2lzdHJhYmxl
RG9tYWluOjp1bmNoZWNrZWRDcmVhdGVGcm9tUmVnaXN0cmFibGVEb21haW5TdHJpbmcod2Vic2l0
ZUlkZW50aWZpZXIpOworICAgIGF1dG8gaXQgPSBtX3BlckRvbWFpbkRhdGEuZmluZChyZWdpc3Ry
YWJsZURvbWFpbik7CisgICAgaWYgKGl0ID09IG1fcGVyRG9tYWluRGF0YS5lbmQoKSkKKyAgICAg
ICAgcmV0dXJuOworCisgICAgYXV0byYgcGVyRG9tYWluRGF0YSA9ICppdC0+dmFsdWU7CisgICAg
cGVyRG9tYWluRGF0YS5sYXN0UG9zaXRpb24gPSBXVEZNb3ZlKHBvc2l0aW9uKTsKKyAgICBmb3Ig
KGF1dG8mIHdlYlByb2Nlc3NQcm94eSA6IHBlckRvbWFpbkRhdGEud2F0Y2hlcnMpCisgICAgICAg
IHdlYlByb2Nlc3NQcm94eS5zZW5kKE1lc3NhZ2VzOjpXZWJHZW9sb2NhdGlvbk1hbmFnZXI6OkRp
ZENoYW5nZVBvc2l0aW9uKHJlZ2lzdHJhYmxlRG9tYWluLCBwZXJEb21haW5EYXRhLmxhc3RQb3Np
dGlvbi52YWx1ZSgpKSwgMCk7Cit9CisKK3ZvaWQgV2ViR2VvbG9jYXRpb25NYW5hZ2VyUHJveHk6
OmVycm9yT2NjdXJyZWQoY29uc3QgU3RyaW5nJiB3ZWJzaXRlSWRlbnRpZmllciwgY29uc3QgU3Ry
aW5nJiBlcnJvck1lc3NhZ2UpCit7CisgICAgYXV0byByZWdpc3RyYWJsZURvbWFpbiA9IFdlYkNv
cmU6OlJlZ2lzdHJhYmxlRG9tYWluOjp1bmNoZWNrZWRDcmVhdGVGcm9tUmVnaXN0cmFibGVEb21h
aW5TdHJpbmcod2Vic2l0ZUlkZW50aWZpZXIpOworICAgIGF1dG8gaXQgPSBtX3BlckRvbWFpbkRh
dGEuZmluZChyZWdpc3RyYWJsZURvbWFpbik7CisgICAgaWYgKGl0ID09IG1fcGVyRG9tYWluRGF0
YS5lbmQoKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgYXV0byYgcGVyRG9tYWluRGF0YSA9ICpp
dC0+dmFsdWU7CisgICAgZm9yIChhdXRvJiB3ZWJQcm9jZXNzUHJveHkgOiBwZXJEb21haW5EYXRh
LndhdGNoZXJzKQorICAgICAgICB3ZWJQcm9jZXNzUHJveHkuc2VuZChNZXNzYWdlczo6V2ViR2Vv
bG9jYXRpb25NYW5hZ2VyOjpEaWRGYWlsVG9EZXRlcm1pbmVQb3NpdGlvbihyZWdpc3RyYWJsZURv
bWFpbiwgZXJyb3JNZXNzYWdlKSwgMCk7Cit9CisKK3ZvaWQgV2ViR2VvbG9jYXRpb25NYW5hZ2Vy
UHJveHk6OnJlc2V0R2VvbG9jYXRpb24oY29uc3QgU3RyaW5nJiB3ZWJzaXRlSWRlbnRpZmllcikK
K3sKKyAgICBhdXRvIHJlZ2lzdHJhYmxlRG9tYWluID0gV2ViQ29yZTo6UmVnaXN0cmFibGVEb21h
aW46OnVuY2hlY2tlZENyZWF0ZUZyb21SZWdpc3RyYWJsZURvbWFpblN0cmluZyh3ZWJzaXRlSWRl
bnRpZmllcik7CisgICAgYXV0byBpdCA9IG1fcGVyRG9tYWluRGF0YS5maW5kKHJlZ2lzdHJhYmxl
RG9tYWluKTsKKyAgICBpZiAoaXQgPT0gbV9wZXJEb21haW5EYXRhLmVuZCgpKQorICAgICAgICBy
ZXR1cm47CisKKyAgICBhdXRvJiBwZXJEb21haW5EYXRhID0gKml0LT52YWx1ZTsKKyAgICBmb3Ig
KGF1dG8mIHdlYlByb2Nlc3NQcm94eSA6IHBlckRvbWFpbkRhdGEud2F0Y2hlcnMpCisgICAgICAg
IHdlYlByb2Nlc3NQcm94eS5zZW5kKE1lc3NhZ2VzOjpXZWJHZW9sb2NhdGlvbk1hbmFnZXI6OlJl
c2V0UGVybWlzc2lvbnMocmVnaXN0cmFibGVEb21haW4pLCAwKTsKK30KKworI2VuZGlmCisKK30g
Ly8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
V2ViQ29udGV4dFN1cHBsZW1lbnQuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkNvbnRl
eHRTdXBwbGVtZW50LmgKaW5kZXggZWQ1NWI0MDNkYjI5Zjk0MDA0MzhiYTMyYTYwYzc1ODI3NDkz
NGZhNi4uZWMxOWNkY2NjYmI0MGY5MmQ1ODM1ZjNlYTYwMzFiZGRhNDc3YThlMiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQ29udGV4dFN1cHBsZW1lbnQuaAorKysgYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJDb250ZXh0U3VwcGxlbWVudC5oCkBAIC00NywxNCAr
NDcsNiBAQCBwdWJsaWM6CiAgICAgewogICAgIH0KIAotICAgIHZpcnR1YWwgdm9pZCBwcm9jZXNz
RGlkQ2xvc2UoV2ViUHJvY2Vzc1Byb3h5KikKLSAgICB7Ci0gICAgfQotCi0gICAgdmlydHVhbCB2
b2lkIHByb2Nlc3NEaWRDbG9zZShOZXR3b3JrUHJvY2Vzc1Byb3h5KikKLSAgICB7Ci0gICAgfQot
CiAgICAgV2ViUHJvY2Vzc1Bvb2wqIHByb2Nlc3NQb29sKCkgY29uc3QgeyByZXR1cm4gbV9wcm9j
ZXNzUG9vbDsgfQogICAgIHZvaWQgY2xlYXJQcm9jZXNzUG9vbCgpIHsgbV9wcm9jZXNzUG9vbCA9
IG51bGxwdHI7IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViR2Vv
bG9jYXRpb25NYW5hZ2VyUHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViR2Vv
bG9jYXRpb25NYW5hZ2VyUHJveHkuY3BwCmluZGV4IDA0ZjMyMjdjZDU1Yzk5MmE0MmNkOTZhM2Yy
NWQ2OTdhZWQ3OTY1YTIuLjU2NjU3NGQzZTcxMjMyODU1ZGRjYzZjMWRlNDAzN2MxMzY2NDQ2NWIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkdlb2xvY2F0aW9uTWFuYWdl
clByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJHZW9sb2NhdGlvbk1h
bmFnZXJQcm94eS5jcHAKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDEx
LCAyMDEyLCAyMDEzIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdo
dCAoQykgMjAxMS0yMDIyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMzQsMTAgKzM0LDE1IEBACiAjaW5jbHVkZSAiV2Vi
UGFnZVByb3h5LmgiCiAjaW5jbHVkZSAiV2ViUHJvY2Vzc1Bvb2wuaCIKIAotI2RlZmluZSBNRVNT
QUdFX0NIRUNLKGFzc2VydGlvbikgTUVTU0FHRV9DSEVDS19CQVNFKGFzc2VydGlvbiwgKCZjb25u
ZWN0aW9uKSkKKyNkZWZpbmUgTUVTU0FHRV9DSEVDSyhjb25uZWN0aW9uLCBhc3NlcnRpb24pIE1F
U1NBR0VfQ0hFQ0tfQkFTRShhc3NlcnRpb24sIChjb25uZWN0aW9uKSkKIAogbmFtZXNwYWNlIFdl
YktpdCB7CiAKK3N0YXRpYyBpbmxpbmUgV2ViUHJvY2Vzc1Byb3h5JiBjb25uZWN0aW9uVG9XZWJQ
cm9jZXNzUHJveHkoY29uc3QgSVBDOjpDb25uZWN0aW9uJiBjb25uZWN0aW9uKQoreworICAgIHJl
dHVybiBzdGF0aWNfY2FzdDxXZWJQcm9jZXNzUHJveHkmPihjb25uZWN0aW9uLmNsaWVudCgpKTsK
K30KKwogY29uc3QgY2hhciogV2ViR2VvbG9jYXRpb25NYW5hZ2VyUHJveHk6OnN1cHBsZW1lbnRO
YW1lKCkKIHsKICAgICByZXR1cm4gIldlYkdlb2xvY2F0aW9uTWFuYWdlclByb3h5IjsKQEAgLTUw
LDM0ICs1NSwzOCBAQCBSZWY8V2ViR2VvbG9jYXRpb25NYW5hZ2VyUHJveHk+IFdlYkdlb2xvY2F0
aW9uTWFuYWdlclByb3h5OjpjcmVhdGUoV2ViUHJvY2Vzc1BvbwogCiBXZWJHZW9sb2NhdGlvbk1h
bmFnZXJQcm94eTo6V2ViR2VvbG9jYXRpb25NYW5hZ2VyUHJveHkoV2ViUHJvY2Vzc1Bvb2wqIHBy
b2Nlc3NQb29sKQogICAgIDogV2ViQ29udGV4dFN1cHBsZW1lbnQocHJvY2Vzc1Bvb2wpCi0gICAg
LCBtX3Byb3ZpZGVyKG1ha2VVbmlxdWU8QVBJOjpHZW9sb2NhdGlvblByb3ZpZGVyPigpKQogewog
ICAgIFdlYkNvbnRleHRTdXBwbGVtZW50Ojpwcm9jZXNzUG9vbCgpLT5hZGRNZXNzYWdlUmVjZWl2
ZXIoTWVzc2FnZXM6OldlYkdlb2xvY2F0aW9uTWFuYWdlclByb3h5OjptZXNzYWdlUmVjZWl2ZXJO
YW1lKCksICp0aGlzKTsKIH0KIAorV2ViR2VvbG9jYXRpb25NYW5hZ2VyUHJveHk6On5XZWJHZW9s
b2NhdGlvbk1hbmFnZXJQcm94eSgpID0gZGVmYXVsdDsKKwogdm9pZCBXZWJHZW9sb2NhdGlvbk1h
bmFnZXJQcm94eTo6c2V0UHJvdmlkZXIoc3RkOjp1bmlxdWVfcHRyPEFQSTo6R2VvbG9jYXRpb25Q
cm92aWRlcj4mJiBwcm92aWRlcikKIHsKLSAgICBpZiAoIXByb3ZpZGVyKQotICAgICAgICBtX3By
b3ZpZGVyID0gbWFrZVVuaXF1ZTxBUEk6Okdlb2xvY2F0aW9uUHJvdmlkZXI+KCk7Ci0gICAgZWxz
ZQotICAgICAgICBtX3Byb3ZpZGVyID0gV1RGTW92ZShwcm92aWRlcik7CisgICAgbV9jbGllbnRQ
cm92aWRlciA9IFdURk1vdmUocHJvdmlkZXIpOwogfQogCiAvLyBXZWJDb250ZXh0U3VwcGxlbWVu
dAogCiB2b2lkIFdlYkdlb2xvY2F0aW9uTWFuYWdlclByb3h5Ojpwcm9jZXNzUG9vbERlc3Ryb3ll
ZCgpCiB7Ci0gICAgYm9vbCB3YXNVcGRhdGluZyA9IGlzVXBkYXRpbmcoKTsKLSAgICBtX3VwZGF0
ZVJlcXVlc3RlcnMuY2xlYXIoKTsKKyAgICBpZiAobV9wZXJEb21haW5EYXRhLmlzRW1wdHkoKSkK
KyAgICAgICAgcmV0dXJuOwogCi0gICAgQVNTRVJUKCFpc1VwZGF0aW5nKCkpOwotICAgIGlmICh3
YXNVcGRhdGluZykKLSAgICAgICAgbV9wcm92aWRlci0+c3RvcFVwZGF0aW5nKCp0aGlzKTsKKyAg
ICBtX3BlckRvbWFpbkRhdGEuY2xlYXIoKTsKKyAgICBpZiAobV9jbGllbnRQcm92aWRlcikKKyAg
ICAgICAgbV9jbGllbnRQcm92aWRlci0+c3RvcFVwZGF0aW5nKCp0aGlzKTsKIH0KIAotdm9pZCBX
ZWJHZW9sb2NhdGlvbk1hbmFnZXJQcm94eTo6cHJvY2Vzc0RpZENsb3NlKFdlYlByb2Nlc3NQcm94
eSogd2ViUHJvY2Vzc1Byb3h5KQordm9pZCBXZWJHZW9sb2NhdGlvbk1hbmFnZXJQcm94eTo6d2Vi
UHJvY2Vzc0lzR29pbmdBd2F5KFdlYlByb2Nlc3NQcm94eSYgcHJveHkpCiB7Ci0gICAgcmVtb3Zl
UmVxdWVzdGVyKHdlYlByb2Nlc3NQcm94eSk7CisgICAgVmVjdG9yPFdlYkNvcmU6OlJlZ2lzdHJh
YmxlRG9tYWluPiBhZmZlY3RlZERvbWFpbnM7CisgICAgZm9yIChhdXRvJiBbcmVnaXN0cmFibGVE
b21haW4sIHBlckRvbWFpbkRhdGFdIDogbV9wZXJEb21haW5EYXRhKSB7CisgICAgICAgIGlmIChw
ZXJEb21haW5EYXRhLT53YXRjaGVycy5jb250YWlucyhwcm94eSkpCisgICAgICAgICAgICBhZmZl
Y3RlZERvbWFpbnMuYXBwZW5kKHJlZ2lzdHJhYmxlRG9tYWluKTsKKyAgICB9CisgICAgZm9yIChh
dXRvJiByZWdpc3RyYWJsZURvbWFpbiA6IGFmZmVjdGVkRG9tYWlucykKKyAgICAgICAgc3RvcFVw
ZGF0aW5nV2l0aFByb3h5KHByb3h5LCByZWdpc3RyYWJsZURvbWFpbik7CiB9CiAKIHZvaWQgV2Vi
R2VvbG9jYXRpb25NYW5hZ2VyUHJveHk6OnJlZldlYkNvbnRleHRTdXBwbGVtZW50KCkKQEAgLTky
LDgwICsxMDEsMjA0IEBAIHZvaWQgV2ViR2VvbG9jYXRpb25NYW5hZ2VyUHJveHk6OmRlcmVmV2Vi
Q29udGV4dFN1cHBsZW1lbnQoKQogCiB2b2lkIFdlYkdlb2xvY2F0aW9uTWFuYWdlclByb3h5Ojpw
cm92aWRlckRpZENoYW5nZVBvc2l0aW9uKFdlYkdlb2xvY2F0aW9uUG9zaXRpb24qIHBvc2l0aW9u
KQogewotICAgIG1fbGFzdFBvc2l0aW9uID0gcG9zaXRpb24tPmNvcmVQb3NpdGlvbigpOwotCi0g
ICAgaWYgKCFwcm9jZXNzUG9vbCgpKQotICAgICAgICByZXR1cm47Ci0KLSAgICBwcm9jZXNzUG9v
bCgpLT5zZW5kVG9BbGxQcm9jZXNzZXMoTWVzc2FnZXM6OldlYkdlb2xvY2F0aW9uTWFuYWdlcjo6
RGlkQ2hhbmdlUG9zaXRpb24obV9sYXN0UG9zaXRpb24udmFsdWUoKSkpOworICAgIGZvciAoYXV0
byYgW3JlZ2lzdHJhYmxlRG9tYWluLCBwZXJEb21haW5EYXRhXSA6IG1fcGVyRG9tYWluRGF0YSkg
eworICAgICAgICBwZXJEb21haW5EYXRhLT5sYXN0UG9zaXRpb24gPSBwb3NpdGlvbi0+Y29yZVBv
c2l0aW9uKCk7CisgICAgICAgIGZvciAoYXV0byYgcHJvY2VzcyA6IHBlckRvbWFpbkRhdGEtPndh
dGNoZXJzKQorICAgICAgICAgICAgcHJvY2Vzcy5zZW5kKE1lc3NhZ2VzOjpXZWJHZW9sb2NhdGlv
bk1hbmFnZXI6OkRpZENoYW5nZVBvc2l0aW9uKHJlZ2lzdHJhYmxlRG9tYWluLCBwZXJEb21haW5E
YXRhLT5sYXN0UG9zaXRpb24udmFsdWUoKSksIDApOworICAgIH0KIH0KIAogdm9pZCBXZWJHZW9s
b2NhdGlvbk1hbmFnZXJQcm94eTo6cHJvdmlkZXJEaWRGYWlsVG9EZXRlcm1pbmVQb3NpdGlvbihj
b25zdCBTdHJpbmcmIGVycm9yTWVzc2FnZSkKIHsKLSAgICBpZiAoIXByb2Nlc3NQb29sKCkpCi0g
ICAgICAgIHJldHVybjsKLQotICAgIHByb2Nlc3NQb29sKCktPnNlbmRUb0FsbFByb2Nlc3NlcyhN
ZXNzYWdlczo6V2ViR2VvbG9jYXRpb25NYW5hZ2VyOjpEaWRGYWlsVG9EZXRlcm1pbmVQb3NpdGlv
bihlcnJvck1lc3NhZ2UpKTsKKyAgICBmb3IgKGF1dG8mIFtyZWdpc3RyYWJsZURvbWFpbiwgcGVy
RG9tYWluRGF0YV0gOiBtX3BlckRvbWFpbkRhdGEpIHsKKyAgICAgICAgZm9yIChhdXRvJiBwcm94
eSA6IHBlckRvbWFpbkRhdGEtPndhdGNoZXJzKQorICAgICAgICAgICAgcHJveHkuc2VuZChNZXNz
YWdlczo6V2ViR2VvbG9jYXRpb25NYW5hZ2VyOjpEaWRGYWlsVG9EZXRlcm1pbmVQb3NpdGlvbihy
ZWdpc3RyYWJsZURvbWFpbiwgZXJyb3JNZXNzYWdlKSwgMCk7CisgICAgfQogfQogCiAjaWYgUExB
VEZPUk0oSU9TX0ZBTUlMWSkKIHZvaWQgV2ViR2VvbG9jYXRpb25NYW5hZ2VyUHJveHk6OnJlc2V0
UGVybWlzc2lvbnMoKQogewotICAgIHByb2Nlc3NQb29sKCktPnNlbmRUb0FsbFByb2Nlc3NlcyhN
ZXNzYWdlczo6V2ViR2VvbG9jYXRpb25NYW5hZ2VyOjpSZXNldFBlcm1pc3Npb25zKCkpOworICAg
IEFTU0VSVChtX2NsaWVudFByb3ZpZGVyKTsKKyAgICBmb3IgKGF1dG8mIFtyZWdpc3RyYWJsZURv
bWFpbiwgcGVyRG9tYWluRGF0YV0gOiBtX3BlckRvbWFpbkRhdGEpIHsKKyAgICAgICAgZm9yIChh
dXRvJiBwcm94eSA6IHBlckRvbWFpbkRhdGEtPndhdGNoZXJzKQorICAgICAgICAgICAgcHJveHku
c2VuZChNZXNzYWdlczo6V2ViR2VvbG9jYXRpb25NYW5hZ2VyOjpSZXNldFBlcm1pc3Npb25zKHJl
Z2lzdHJhYmxlRG9tYWluKSwgMCk7CisgICAgfQogfQogI2VuZGlmCiAKLXZvaWQgV2ViR2VvbG9j
YXRpb25NYW5hZ2VyUHJveHk6OnN0YXJ0VXBkYXRpbmcoSVBDOjpDb25uZWN0aW9uJiBjb25uZWN0
aW9uLCBXZWJQYWdlUHJveHlJZGVudGlmaWVyIHBhZ2VQcm94eUlELCBjb25zdCBTdHJpbmcmIGF1
dGhvcml6YXRpb25Ub2tlbikKK3ZvaWQgV2ViR2VvbG9jYXRpb25NYW5hZ2VyUHJveHk6OnN0YXJ0
VXBkYXRpbmcoSVBDOjpDb25uZWN0aW9uJiBjb25uZWN0aW9uLCBjb25zdCBXZWJDb3JlOjpSZWdp
c3RyYWJsZURvbWFpbiYgcmVnaXN0cmFibGVEb21haW4sIFdlYlBhZ2VQcm94eUlkZW50aWZpZXIg
cGFnZVByb3h5SUQsIGNvbnN0IFN0cmluZyYgYXV0aG9yaXphdGlvblRva2VuLCBib29sIGVuYWJs
ZUhpZ2hBY2N1cmFjeSkKK3sKKyAgICBzdGFydFVwZGF0aW5nV2l0aFByb3h5KGNvbm5lY3Rpb25U
b1dlYlByb2Nlc3NQcm94eShjb25uZWN0aW9uKSwgcmVnaXN0cmFibGVEb21haW4sIHBhZ2VQcm94
eUlELCBhdXRob3JpemF0aW9uVG9rZW4sIGVuYWJsZUhpZ2hBY2N1cmFjeSk7Cit9CisKK3ZvaWQg
V2ViR2VvbG9jYXRpb25NYW5hZ2VyUHJveHk6OnN0YXJ0VXBkYXRpbmdXaXRoUHJveHkoV2ViUHJv
Y2Vzc1Byb3h5JiBwcm94eSwgY29uc3QgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4mIHJlZ2lz
dHJhYmxlRG9tYWluLCBXZWJQYWdlUHJveHlJZGVudGlmaWVyIHBhZ2VQcm94eUlELCBjb25zdCBT
dHJpbmcmIGF1dGhvcml6YXRpb25Ub2tlbiwgYm9vbCBlbmFibGVIaWdoQWNjdXJhY3kpCiB7CiAg
ICAgYXV0byogcGFnZSA9IFdlYlByb2Nlc3NQcm94eTo6d2ViUGFnZShwYWdlUHJveHlJRCk7Ci0g
ICAgTUVTU0FHRV9DSEVDSyhwYWdlKTsKKyAgICBNRVNTQUdFX0NIRUNLKHByb3h5LmNvbm5lY3Rp
b24oKSwgcGFnZSk7CiAKICAgICBhdXRvIGlzVmFsaWRBdXRob3JpemF0aW9uVG9rZW4gPSBwYWdl
LT5nZW9sb2NhdGlvblBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlcigpLmlzVmFsaWRBdXRob3JpemF0
aW9uVG9rZW4oYXV0aG9yaXphdGlvblRva2VuKTsKLSAgICBNRVNTQUdFX0NIRUNLKGlzVmFsaWRB
dXRob3JpemF0aW9uVG9rZW4pOworICAgIE1FU1NBR0VfQ0hFQ0socHJveHkuY29ubmVjdGlvbigp
LCBpc1ZhbGlkQXV0aG9yaXphdGlvblRva2VuKTsKKworICAgIGF1dG8mIHBlckRvbWFpbkRhdGEg
PSAqbV9wZXJEb21haW5EYXRhLmVuc3VyZShyZWdpc3RyYWJsZURvbWFpbiwgW10geworICAgICAg
ICByZXR1cm4gbWFrZVVuaXF1ZTxQZXJEb21haW5EYXRhPigpOworICAgIH0pLml0ZXJhdG9yLT52
YWx1ZTsKKworICAgIGJvb2wgd2FzVXBkYXRpbmcgPSBpc1VwZGF0aW5nKHBlckRvbWFpbkRhdGEp
OworICAgIGJvb2wgaGlnaEFjY3VyYWN5V2FzRW5hYmxlZCA9IGlzSGlnaEFjY3VyYWN5RW5hYmxl
ZChwZXJEb21haW5EYXRhKTsKKworICAgIHBlckRvbWFpbkRhdGEud2F0Y2hlcnMuYWRkKHByb3h5
KTsKKyAgICBpZiAoZW5hYmxlSGlnaEFjY3VyYWN5KQorICAgICAgICBwZXJEb21haW5EYXRhLndh
dGNoZXJzTmVlZGluZ0hpZ2hBY2N1cmFjeS5hZGQocHJveHkpOwogCi0gICAgYm9vbCB3YXNVcGRh
dGluZyA9IGlzVXBkYXRpbmcoKTsKLSAgICBtX3VwZGF0ZVJlcXVlc3RlcnMuYWRkKCZjb25uZWN0
aW9uLmNsaWVudCgpKTsKICAgICBpZiAoIXdhc1VwZGF0aW5nKSB7Ci0gICAgICAgIG1fcHJvdmlk
ZXItPnNldEVuYWJsZUhpZ2hBY2N1cmFjeSgqdGhpcywgaXNIaWdoQWNjdXJhY3lFbmFibGVkKCkp
OwotICAgICAgICBtX3Byb3ZpZGVyLT5zdGFydFVwZGF0aW5nKCp0aGlzKTsKLSAgICB9IGVsc2Ug
aWYgKG1fbGFzdFBvc2l0aW9uKQotICAgICAgICBjb25uZWN0aW9uLnNlbmQoTWVzc2FnZXM6Oldl
Ykdlb2xvY2F0aW9uTWFuYWdlcjo6RGlkQ2hhbmdlUG9zaXRpb24obV9sYXN0UG9zaXRpb24udmFs
dWUoKSksIDApOworICAgICAgICBwcm92aWRlclN0YXJ0VXBkYXRpbmcocGVyRG9tYWluRGF0YSwg
cmVnaXN0cmFibGVEb21haW4pOworICAgICAgICByZXR1cm47CisgICAgfQorICAgIGlmICghaGln
aEFjY3VyYWN5V2FzRW5hYmxlZCAmJiBlbmFibGVIaWdoQWNjdXJhY3kpCisgICAgICAgIHByb3Zp
ZGVyU2V0RW5hYmxlZEhpZ2hBY2N1cmFjeShwZXJEb21haW5EYXRhLCBlbmFibGVIaWdoQWNjdXJh
Y3kpOworCisgICAgaWYgKHBlckRvbWFpbkRhdGEubGFzdFBvc2l0aW9uKQorICAgICAgICBwcm94
eS5zZW5kKE1lc3NhZ2VzOjpXZWJHZW9sb2NhdGlvbk1hbmFnZXI6OkRpZENoYW5nZVBvc2l0aW9u
KHJlZ2lzdHJhYmxlRG9tYWluLCBwZXJEb21haW5EYXRhLmxhc3RQb3NpdGlvbi52YWx1ZSgpKSwg
MCk7CiB9CiAKLXZvaWQgV2ViR2VvbG9jYXRpb25NYW5hZ2VyUHJveHk6OnN0b3BVcGRhdGluZyhJ
UEM6OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24pCit2b2lkIFdlYkdlb2xvY2F0aW9uTWFuYWdlclBy
b3h5OjpzdG9wVXBkYXRpbmcoSVBDOjpDb25uZWN0aW9uJiBjb25uZWN0aW9uLCBjb25zdCBXZWJD
b3JlOjpSZWdpc3RyYWJsZURvbWFpbiYgcmVnaXN0cmFibGVEb21haW4pCiB7Ci0gICAgcmVtb3Zl
UmVxdWVzdGVyKCZjb25uZWN0aW9uLmNsaWVudCgpKTsKKyAgICBzdG9wVXBkYXRpbmdXaXRoUHJv
eHkoY29ubmVjdGlvblRvV2ViUHJvY2Vzc1Byb3h5KGNvbm5lY3Rpb24pLCByZWdpc3RyYWJsZURv
bWFpbik7CiB9CiAKLXZvaWQgV2ViR2VvbG9jYXRpb25NYW5hZ2VyUHJveHk6OnJlbW92ZVJlcXVl
c3Rlcihjb25zdCBJUEM6OkNvbm5lY3Rpb246OkNsaWVudCogY2xpZW50KQordm9pZCBXZWJHZW9s
b2NhdGlvbk1hbmFnZXJQcm94eTo6c3RvcFVwZGF0aW5nV2l0aFByb3h5KFdlYlByb2Nlc3NQcm94
eSYgcHJveHksIGNvbnN0IFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluJiByZWdpc3RyYWJsZURv
bWFpbikKIHsKLSAgICBib29sIHdhc1VwZGF0aW5nID0gaXNVcGRhdGluZygpOwotICAgIGJvb2wg
aGlnaEFjY3VyYWN5V2FzRW5hYmxlZCA9IGlzSGlnaEFjY3VyYWN5RW5hYmxlZCgpOworICAgIGF1
dG8gaXQgPSBtX3BlckRvbWFpbkRhdGEuZmluZChyZWdpc3RyYWJsZURvbWFpbik7CisgICAgaWYg
KGl0ID09IG1fcGVyRG9tYWluRGF0YS5lbmQoKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgYXV0
byYgcGVyRG9tYWluRGF0YSA9ICppdC0+dmFsdWU7CisgICAgYm9vbCB3YXNVcGRhdGluZyA9IGlz
VXBkYXRpbmcocGVyRG9tYWluRGF0YSk7CisgICAgYm9vbCBoaWdoQWNjdXJhY3lXYXNFbmFibGVk
ID0gaXNIaWdoQWNjdXJhY3lFbmFibGVkKHBlckRvbWFpbkRhdGEpOwogCi0gICAgbV9oaWdoQWNj
dXJhY3lSZXF1ZXN0ZXJzLnJlbW92ZShjbGllbnQpOwotICAgIG1fdXBkYXRlUmVxdWVzdGVycy5y
ZW1vdmUoY2xpZW50KTsKKyAgICBwZXJEb21haW5EYXRhLndhdGNoZXJzLnJlbW92ZShwcm94eSk7
CisgICAgcGVyRG9tYWluRGF0YS53YXRjaGVyc05lZWRpbmdIaWdoQWNjdXJhY3kucmVtb3ZlKHBy
b3h5KTsKIAotICAgIGlmICh3YXNVcGRhdGluZyAmJiAhaXNVcGRhdGluZygpKQotICAgICAgICBt
X3Byb3ZpZGVyLT5zdG9wVXBkYXRpbmcoKnRoaXMpOworICAgIGlmICh3YXNVcGRhdGluZyAmJiAh
aXNVcGRhdGluZyhwZXJEb21haW5EYXRhKSkKKyAgICAgICAgcHJvdmlkZXJTdG9wVXBkYXRpbmco
cGVyRG9tYWluRGF0YSk7CiAgICAgZWxzZSB7Ci0gICAgICAgIGJvb2wgaGlnaEFjY3VyYWN5U2hv
dWxkQmVFbmFibGVkID0gaXNIaWdoQWNjdXJhY3lFbmFibGVkKCk7CisgICAgICAgIGJvb2wgaGln
aEFjY3VyYWN5U2hvdWxkQmVFbmFibGVkID0gaXNIaWdoQWNjdXJhY3lFbmFibGVkKHBlckRvbWFp
bkRhdGEpOwogICAgICAgICBpZiAoaGlnaEFjY3VyYWN5U2hvdWxkQmVFbmFibGVkICE9IGhpZ2hB
Y2N1cmFjeVdhc0VuYWJsZWQpCi0gICAgICAgICAgICBtX3Byb3ZpZGVyLT5zZXRFbmFibGVIaWdo
QWNjdXJhY3koKnRoaXMsIGhpZ2hBY2N1cmFjeVNob3VsZEJlRW5hYmxlZCk7CisgICAgICAgICAg
ICBwcm92aWRlclNldEVuYWJsZWRIaWdoQWNjdXJhY3kocGVyRG9tYWluRGF0YSwgaGlnaEFjY3Vy
YWN5U2hvdWxkQmVFbmFibGVkKTsKICAgICB9CisKKyAgICBpZiAocGVyRG9tYWluRGF0YS53YXRj
aGVycy5jb21wdXRlc0VtcHR5KCkgJiYgcGVyRG9tYWluRGF0YS53YXRjaGVyc05lZWRpbmdIaWdo
QWNjdXJhY3kuY29tcHV0ZXNFbXB0eSgpKQorICAgICAgICBtX3BlckRvbWFpbkRhdGEucmVtb3Zl
KGl0KTsKK30KKwordm9pZCBXZWJHZW9sb2NhdGlvbk1hbmFnZXJQcm94eTo6c2V0RW5hYmxlSGln
aEFjY3VyYWN5KElQQzo6Q29ubmVjdGlvbiYgY29ubmVjdGlvbiwgY29uc3QgV2ViQ29yZTo6UmVn
aXN0cmFibGVEb21haW4mIHJlZ2lzdHJhYmxlRG9tYWluLCBib29sIGVuYWJsZWQpCit7CisgICAg
c2V0RW5hYmxlSGlnaEFjY3VyYWN5V2l0aFByb3h5KGNvbm5lY3Rpb25Ub1dlYlByb2Nlc3NQcm94
eShjb25uZWN0aW9uKSwgcmVnaXN0cmFibGVEb21haW4sIGVuYWJsZWQpOwogfQogCi12b2lkIFdl
Ykdlb2xvY2F0aW9uTWFuYWdlclByb3h5OjpzZXRFbmFibGVIaWdoQWNjdXJhY3koSVBDOjpDb25u
ZWN0aW9uJiBjb25uZWN0aW9uLCBib29sIGVuYWJsZWQpCit2b2lkIFdlYkdlb2xvY2F0aW9uTWFu
YWdlclByb3h5OjpzZXRFbmFibGVIaWdoQWNjdXJhY3lXaXRoUHJveHkoV2ViUHJvY2Vzc1Byb3h5
JiBwcm94eSwgY29uc3QgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4mIHJlZ2lzdHJhYmxlRG9t
YWluLCBib29sIGVuYWJsZWQpCiB7Ci0gICAgYm9vbCBoaWdoQWNjdXJhY3lXYXNFbmFibGVkID0g
aXNIaWdoQWNjdXJhY3lFbmFibGVkKCk7CisgICAgYXV0byBpdCA9IG1fcGVyRG9tYWluRGF0YS5m
aW5kKHJlZ2lzdHJhYmxlRG9tYWluKTsKKyAgICBBU1NFUlQoaXQgIT0gbV9wZXJEb21haW5EYXRh
LmVuZCgpKTsKKyAgICBpZiAoaXQgPT0gbV9wZXJEb21haW5EYXRhLmVuZCgpKQorICAgICAgICBy
ZXR1cm47CisKKyAgICBhdXRvJiBwZXJEb21haW5EYXRhID0gKml0LT52YWx1ZTsKKyAgICBib29s
IGhpZ2hBY2N1cmFjeVdhc0VuYWJsZWQgPSBpc0hpZ2hBY2N1cmFjeUVuYWJsZWQocGVyRG9tYWlu
RGF0YSk7CiAKICAgICBpZiAoZW5hYmxlZCkKLSAgICAgICAgbV9oaWdoQWNjdXJhY3lSZXF1ZXN0
ZXJzLmFkZCgmY29ubmVjdGlvbi5jbGllbnQoKSk7CisgICAgICAgIHBlckRvbWFpbkRhdGEud2F0
Y2hlcnNOZWVkaW5nSGlnaEFjY3VyYWN5LmFkZChwcm94eSk7CiAgICAgZWxzZQotICAgICAgICBt
X2hpZ2hBY2N1cmFjeVJlcXVlc3RlcnMucmVtb3ZlKCZjb25uZWN0aW9uLmNsaWVudCgpKTsKKyAg
ICAgICAgcGVyRG9tYWluRGF0YS53YXRjaGVyc05lZWRpbmdIaWdoQWNjdXJhY3kucmVtb3ZlKHBy
b3h5KTsKKworICAgIGlmIChpc1VwZGF0aW5nKHBlckRvbWFpbkRhdGEpICYmIGhpZ2hBY2N1cmFj
eVdhc0VuYWJsZWQgIT0gZW5hYmxlZCkKKyAgICAgICAgcHJvdmlkZXJTZXRFbmFibGVkSGlnaEFj
Y3VyYWN5KHBlckRvbWFpbkRhdGEsIGVuYWJsZWQpOworfQorCitib29sIFdlYkdlb2xvY2F0aW9u
TWFuYWdlclByb3h5Ojppc1VwZGF0aW5nKGNvbnN0IFBlckRvbWFpbkRhdGEmIHBlckRvbWFpbkRh
dGEpIGNvbnN0Cit7CisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKKyAgICBpZiAoIW1fY2xpZW50
UHJvdmlkZXIpCisgICAgICAgIHJldHVybiAhcGVyRG9tYWluRGF0YS53YXRjaGVycy5jb21wdXRl
c0VtcHR5KCk7CisjZWxzZQorICAgIFVOVVNFRF9QQVJBTShwZXJEb21haW5EYXRhKTsKKyNlbmRp
ZgorCisgICAgZm9yIChhdXRvJiBwZXJEb21haW5EYXRhIDogbV9wZXJEb21haW5EYXRhLnZhbHVl
cygpKSB7CisgICAgICAgIGlmICghcGVyRG9tYWluRGF0YS0+d2F0Y2hlcnMuY29tcHV0ZXNFbXB0
eSgpKQorICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfQorICAgIHJldHVybiBmYWxzZTsK
K30KKworCitib29sIFdlYkdlb2xvY2F0aW9uTWFuYWdlclByb3h5Ojppc0hpZ2hBY2N1cmFjeUVu
YWJsZWQoY29uc3QgUGVyRG9tYWluRGF0YSYgcGVyRG9tYWluRGF0YSkgY29uc3QKK3sKKyNpZiBQ
TEFURk9STShJT1NfRkFNSUxZKQorICAgIGlmICghbV9jbGllbnRQcm92aWRlcikKKyAgICAgICAg
cmV0dXJuICFwZXJEb21haW5EYXRhLndhdGNoZXJzTmVlZGluZ0hpZ2hBY2N1cmFjeS5jb21wdXRl
c0VtcHR5KCk7CisjZWxzZQorICAgIFVOVVNFRF9QQVJBTShwZXJEb21haW5EYXRhKTsKKyNlbmRp
ZgorCisgICAgZm9yIChhdXRvJiBkYXRhIDogbV9wZXJEb21haW5EYXRhLnZhbHVlcygpKSB7Cisg
ICAgICAgIGlmICghZGF0YS0+d2F0Y2hlcnNOZWVkaW5nSGlnaEFjY3VyYWN5LmNvbXB1dGVzRW1w
dHkoKSkKKyAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgIH0KKyAgICByZXR1cm4gZmFsc2U7
Cit9CisKK3ZvaWQgV2ViR2VvbG9jYXRpb25NYW5hZ2VyUHJveHk6OnByb3ZpZGVyU3RhcnRVcGRh
dGluZyhQZXJEb21haW5EYXRhJiBwZXJEb21haW5EYXRhLCBjb25zdCBXZWJDb3JlOjpSZWdpc3Ry
YWJsZURvbWFpbiYgcmVnaXN0cmFibGVEb21haW4pCit7CisjaWYgUExBVEZPUk0oSU9TX0ZBTUlM
WSkKKyAgICBpZiAoIW1fY2xpZW50UHJvdmlkZXIpIHsKKyAgICAgICAgQVNTRVJUKCFwZXJEb21h
aW5EYXRhLnByb3ZpZGVyKTsKKyAgICAgICAgcGVyRG9tYWluRGF0YS5wcm92aWRlciA9IG1ha2VV
bmlxdWU8V2ViQ29yZTo6Q29yZUxvY2F0aW9uR2VvbG9jYXRpb25Qcm92aWRlcj4ocmVnaXN0cmFi
bGVEb21haW4sICp0aGlzKTsKKyAgICAgICAgcGVyRG9tYWluRGF0YS5wcm92aWRlci0+c2V0RW5h
YmxlSGlnaEFjY3VyYWN5KCFwZXJEb21haW5EYXRhLndhdGNoZXJzTmVlZGluZ0hpZ2hBY2N1cmFj
eS5jb21wdXRlc0VtcHR5KCkpOworICAgICAgICBwZXJEb21haW5EYXRhLnByb3ZpZGVyLT5zdGFy
dCgpOworICAgICAgICByZXR1cm47CisgICAgfQorI2Vsc2UKKyAgICBVTlVTRURfUEFSQU0ocmVn
aXN0cmFibGVEb21haW4pOworICAgIGlmICghbV9jbGllbnRQcm92aWRlcikKKyAgICAgICAgcmV0
dXJuOworI2VuZGlmCisKKyAgICBtX2NsaWVudFByb3ZpZGVyLT5zZXRFbmFibGVIaWdoQWNjdXJh
Y3koKnRoaXMsIGlzSGlnaEFjY3VyYWN5RW5hYmxlZChwZXJEb21haW5EYXRhKSk7CisgICAgbV9j
bGllbnRQcm92aWRlci0+c3RhcnRVcGRhdGluZygqdGhpcyk7Cit9CisKK3ZvaWQgV2ViR2VvbG9j
YXRpb25NYW5hZ2VyUHJveHk6OnByb3ZpZGVyU3RvcFVwZGF0aW5nKFBlckRvbWFpbkRhdGEmIHBl
ckRvbWFpbkRhdGEpCit7CisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKKyAgICBpZiAoIW1fY2xp
ZW50UHJvdmlkZXIpIHsKKyAgICAgICAgcGVyRG9tYWluRGF0YS5wcm92aWRlci0+c3RvcCgpOwor
ICAgICAgICByZXR1cm47CisgICAgfQorI2Vsc2UKKyAgICBVTlVTRURfUEFSQU0ocGVyRG9tYWlu
RGF0YSk7CisgICAgaWYgKCFtX2NsaWVudFByb3ZpZGVyKQorICAgICAgICByZXR1cm47CisjZW5k
aWYKKworICAgIG1fY2xpZW50UHJvdmlkZXItPnN0b3BVcGRhdGluZygqdGhpcyk7Cit9CisKK3Zv
aWQgV2ViR2VvbG9jYXRpb25NYW5hZ2VyUHJveHk6OnByb3ZpZGVyU2V0RW5hYmxlZEhpZ2hBY2N1
cmFjeShQZXJEb21haW5EYXRhJiBwZXJEb21haW5EYXRhLCBib29sIGVuYWJsZWQpCit7CisjaWYg
UExBVEZPUk0oSU9TX0ZBTUlMWSkKKyAgICBpZiAoIW1fY2xpZW50UHJvdmlkZXIpIHsKKyAgICAg
ICAgcGVyRG9tYWluRGF0YS5wcm92aWRlci0+c2V0RW5hYmxlSGlnaEFjY3VyYWN5KGVuYWJsZWQp
OworICAgICAgICByZXR1cm47CisgICAgfQorI2Vsc2UKKyAgICBVTlVTRURfUEFSQU0ocGVyRG9t
YWluRGF0YSk7CisgICAgaWYgKCFtX2NsaWVudFByb3ZpZGVyKQorICAgICAgICByZXR1cm47Cisj
ZW5kaWYKIAotICAgIGJvb2wgaGlnaEFjY3VyYWN5U2hvdWxkQmVFbmFibGVkID0gaXNIaWdoQWNj
dXJhY3lFbmFibGVkKCk7Ci0gICAgaWYgKGlzVXBkYXRpbmcoKSAmJiBoaWdoQWNjdXJhY3lXYXNF
bmFibGVkICE9IGhpZ2hBY2N1cmFjeVNob3VsZEJlRW5hYmxlZCkKLSAgICAgICAgbV9wcm92aWRl
ci0+c2V0RW5hYmxlSGlnaEFjY3VyYWN5KCp0aGlzLCBoaWdoQWNjdXJhY3lTaG91bGRCZUVuYWJs
ZWQpOworICAgIG1fY2xpZW50UHJvdmlkZXItPnNldEVuYWJsZUhpZ2hBY2N1cmFjeSgqdGhpcywg
ZW5hYmxlZCk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvV2ViR2VvbG9jYXRpb25NYW5hZ2VyUHJveHkuaCBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL1dlYkdlb2xvY2F0aW9uTWFuYWdlclByb3h5LmgKaW5kZXggNzQ5MzZl
NDVhMGQ4MzgzYThiNGIzZDZkNTc4YzliZDIyYmUzZmE1ZS4uZjlhMGNhNjQ5NzhhNDljOTEwMDBh
ZGYxYzRjYjRhMDExMjg3ZTEyZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
V2ViR2VvbG9jYXRpb25NYW5hZ2VyUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9XZWJHZW9sb2NhdGlvbk1hbmFnZXJQcm94eS5oCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENv
cHlyaWdodCAoQykgMjAxMSwgMjAxMiwgMjAxMyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEtMjAyMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTMxLDkgKzMxLDE1IEBA
CiAjaW5jbHVkZSAiV2ViQ29udGV4dFN1cHBsZW1lbnQuaCIKICNpbmNsdWRlICJXZWJQYWdlUHJv
eHlJZGVudGlmaWVyLmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9HZW9sb2NhdGlvblBvc2l0aW9uRGF0
YS5oPgotI2luY2x1ZGUgPHd0Zi9IYXNoU2V0Lmg+CisjaW5jbHVkZSA8V2ViQ29yZS9SZWdpc3Ry
YWJsZURvbWFpbi5oPgorI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CisjaW5jbHVkZSA8d3RmL1dl
YWtIYXNoU2V0Lmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAKKyNpZiBQTEFU
Rk9STShJT1NfRkFNSUxZKQorI2luY2x1ZGUgPFdlYkNvcmUvQ29yZUxvY2F0aW9uR2VvbG9jYXRp
b25Qcm92aWRlci5oPgorI2VuZGlmCisKIG5hbWVzcGFjZSBBUEkgewogY2xhc3MgR2VvbG9jYXRp
b25Qcm92aWRlcjsKIH0KQEAgLTQzLDExICs0OSwxNiBAQCBuYW1lc3BhY2UgV2ViS2l0IHsKIGNs
YXNzIFdlYkdlb2xvY2F0aW9uUG9zaXRpb247CiBjbGFzcyBXZWJQcm9jZXNzUG9vbDsKIAotY2xh
c3MgV2ViR2VvbG9jYXRpb25NYW5hZ2VyUHJveHkgOiBwdWJsaWMgQVBJOjpPYmplY3RJbXBsPEFQ
STo6T2JqZWN0OjpUeXBlOjpHZW9sb2NhdGlvbk1hbmFnZXI+LCBwdWJsaWMgV2ViQ29udGV4dFN1
cHBsZW1lbnQsIHByaXZhdGUgSVBDOjpNZXNzYWdlUmVjZWl2ZXIgeworY2xhc3MgV2ViR2VvbG9j
YXRpb25NYW5hZ2VyUHJveHkgOiBwdWJsaWMgQVBJOjpPYmplY3RJbXBsPEFQSTo6T2JqZWN0OjpU
eXBlOjpHZW9sb2NhdGlvbk1hbmFnZXI+LCBwdWJsaWMgV2ViQ29udGV4dFN1cHBsZW1lbnQsIHBy
aXZhdGUgSVBDOjpNZXNzYWdlUmVjZWl2ZXIKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZKQorICAg
ICwgcHVibGljIFdlYkNvcmU6OkNvcmVMb2NhdGlvbkdlb2xvY2F0aW9uUHJvdmlkZXI6OkNsaWVu
dAorI2VuZGlmCit7CiBwdWJsaWM6CiAgICAgc3RhdGljIGNvbnN0IGNoYXIqIHN1cHBsZW1lbnRO
YW1lKCk7CiAKICAgICBzdGF0aWMgUmVmPFdlYkdlb2xvY2F0aW9uTWFuYWdlclByb3h5PiBjcmVh
dGUoV2ViUHJvY2Vzc1Bvb2wqKTsKKyAgICB+V2ViR2VvbG9jYXRpb25NYW5hZ2VyUHJveHkoKTsK
IAogICAgIHZvaWQgc2V0UHJvdmlkZXIoc3RkOjp1bmlxdWVfcHRyPEFQSTo6R2VvbG9jYXRpb25Q
cm92aWRlcj4mJik7CiAKQEAgLTU2LDM2ICs2Nyw1OSBAQCBwdWJsaWM6CiAjaWYgUExBVEZPUk0o
SU9TX0ZBTUlMWSkKICAgICB2b2lkIHJlc2V0UGVybWlzc2lvbnMoKTsKICNlbmRpZgotICAgIGNv
bnN0IHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6R2VvbG9jYXRpb25Qb3NpdGlvbkRhdGE+JiBsYXN0
UG9zaXRpb24oKSBjb25zdCB7IHJldHVybiBtX2xhc3RQb3NpdGlvbjsgfQogCiAgICAgdXNpbmcg
QVBJOjpPYmplY3Q6OnJlZjsKICAgICB1c2luZyBBUEk6Ok9iamVjdDo6ZGVyZWY7CiAKKyAgICB2
b2lkIHdlYlByb2Nlc3NJc0dvaW5nQXdheShXZWJQcm9jZXNzUHJveHkmKTsKKwogcHJpdmF0ZToK
ICAgICBleHBsaWNpdCBXZWJHZW9sb2NhdGlvbk1hbmFnZXJQcm94eShXZWJQcm9jZXNzUG9vbCop
OwogCiAgICAgLy8gV2ViQ29udGV4dFN1cHBsZW1lbnQKICAgICB2b2lkIHByb2Nlc3NQb29sRGVz
dHJveWVkKCkgb3ZlcnJpZGU7Ci0gICAgdm9pZCBwcm9jZXNzRGlkQ2xvc2UoV2ViUHJvY2Vzc1By
b3h5Kikgb3ZlcnJpZGU7CiAgICAgdm9pZCByZWZXZWJDb250ZXh0U3VwcGxlbWVudCgpIG92ZXJy
aWRlOwogICAgIHZvaWQgZGVyZWZXZWJDb250ZXh0U3VwcGxlbWVudCgpIG92ZXJyaWRlOwogCiAg
ICAgLy8gSVBDOjpNZXNzYWdlUmVjZWl2ZXIKICAgICB2b2lkIGRpZFJlY2VpdmVNZXNzYWdlKElQ
Qzo6Q29ubmVjdGlvbiYsIElQQzo6RGVjb2RlciYpIG92ZXJyaWRlOwogCi0gICAgYm9vbCBpc1Vw
ZGF0aW5nKCkgY29uc3QgeyByZXR1cm4gIW1fdXBkYXRlUmVxdWVzdGVycy5pc0VtcHR5KCk7IH0K
LSAgICBib29sIGlzSGlnaEFjY3VyYWN5RW5hYmxlZCgpIGNvbnN0IHsgcmV0dXJuICFtX2hpZ2hB
Y2N1cmFjeVJlcXVlc3RlcnMuaXNFbXB0eSgpOyB9CisgICAgLy8gSVBDIG1lc3NhZ2VzLgorICAg
IHZvaWQgc3RhcnRVcGRhdGluZyhJUEM6OkNvbm5lY3Rpb24mLCBjb25zdCBXZWJDb3JlOjpSZWdp
c3RyYWJsZURvbWFpbiYsIFdlYlBhZ2VQcm94eUlkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgYXV0
aG9yaXphdGlvblRva2VuLCBib29sIGVuYWJsZUhpZ2hBY2N1cmFjeSk7CisgICAgdm9pZCBzdG9w
VXBkYXRpbmcoSVBDOjpDb25uZWN0aW9uJiwgY29uc3QgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21h
aW4mKTsKKyAgICB2b2lkIHNldEVuYWJsZUhpZ2hBY2N1cmFjeShJUEM6OkNvbm5lY3Rpb24mLCBj
b25zdCBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiYsIGJvb2wpOworCisgICAgdm9pZCBzdGFy
dFVwZGF0aW5nV2l0aFByb3h5KFdlYlByb2Nlc3NQcm94eSYsIGNvbnN0IFdlYkNvcmU6OlJlZ2lz
dHJhYmxlRG9tYWluJiwgV2ViUGFnZVByb3h5SWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiBhdXRo
b3JpemF0aW9uVG9rZW4sIGJvb2wgZW5hYmxlSGlnaEFjY3VyYWN5KTsKKyAgICB2b2lkIHN0b3BV
cGRhdGluZ1dpdGhQcm94eShXZWJQcm9jZXNzUHJveHkmLCBjb25zdCBXZWJDb3JlOjpSZWdpc3Ry
YWJsZURvbWFpbiYpOworICAgIHZvaWQgc2V0RW5hYmxlSGlnaEFjY3VyYWN5V2l0aFByb3h5KFdl
YlByb2Nlc3NQcm94eSYsIGNvbnN0IFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluJiwgYm9vbCk7
CiAKLSAgICB2b2lkIHN0YXJ0VXBkYXRpbmcoSVBDOjpDb25uZWN0aW9uJiwgV2ViUGFnZVByb3h5
SWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiBhdXRob3JpemF0aW9uVG9rZW4pOwotICAgIHZvaWQg
c3RvcFVwZGF0aW5nKElQQzo6Q29ubmVjdGlvbiYpOwotICAgIHZvaWQgcmVtb3ZlUmVxdWVzdGVy
KGNvbnN0IElQQzo6Q29ubmVjdGlvbjo6Q2xpZW50Kik7Ci0gICAgdm9pZCBzZXRFbmFibGVIaWdo
QWNjdXJhY3koSVBDOjpDb25uZWN0aW9uJiwgYm9vbCk7CisjaWYgUExBVEZPUk0oSU9TX0ZBTUlM
WSkKKyAgICAvLyBDb3JlTG9jYXRpb25HZW9sb2NhdGlvblByb3ZpZGVyOjpDbGllbnQKKyAgICB2
b2lkIHBvc2l0aW9uQ2hhbmdlZChjb25zdCBTdHJpbmcmIHdlYnNpdGVJZGVudGlmaWVyLCBXZWJD
b3JlOjpHZW9sb2NhdGlvblBvc2l0aW9uRGF0YSYmKSBmaW5hbDsKKyAgICB2b2lkIGVycm9yT2Nj
dXJyZWQoY29uc3QgU3RyaW5nJiB3ZWJzaXRlSWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiBlcnJv
ck1lc3NhZ2UpIGZpbmFsOworICAgIHZvaWQgcmVzZXRHZW9sb2NhdGlvbihjb25zdCBTdHJpbmcm
IHdlYnNpdGVJZGVudGlmaWVyKSBmaW5hbDsKKyNlbmRpZgorCisgICAgc3RydWN0IFBlckRvbWFp
bkRhdGEgeworICAgICAgICBXVEZfTUFLRV9TVFJVQ1RfRkFTVF9BTExPQ0FURUQ7CisgICAgICAg
IFdlYWtIYXNoU2V0PFdlYlByb2Nlc3NQcm94eT4gd2F0Y2hlcnM7CisgICAgICAgIFdlYWtIYXNo
U2V0PFdlYlByb2Nlc3NQcm94eT4gd2F0Y2hlcnNOZWVkaW5nSGlnaEFjY3VyYWN5OworICAgICAg
ICBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6Okdlb2xvY2F0aW9uUG9zaXRpb25EYXRhPiBsYXN0UG9z
aXRpb247CisKKyAgICAgICAgLy8gRklYTUU6IFVzZSBmb3IgYWxsIENvY29hIHBvcnRzLgorI2lm
IFBMQVRGT1JNKElPU19GQU1JTFkpCisgICAgICAgIHN0ZDo6dW5pcXVlX3B0cjxXZWJDb3JlOjpD
b3JlTG9jYXRpb25HZW9sb2NhdGlvblByb3ZpZGVyPiBwcm92aWRlcjsKKyNlbmRpZgorICAgIH07
CiAKLSAgICBIYXNoU2V0PGNvbnN0IElQQzo6Q29ubmVjdGlvbjo6Q2xpZW50Kj4gbV91cGRhdGVS
ZXF1ZXN0ZXJzOwotICAgIEhhc2hTZXQ8Y29uc3QgSVBDOjpDb25uZWN0aW9uOjpDbGllbnQqPiBt
X2hpZ2hBY2N1cmFjeVJlcXVlc3RlcnM7CisgICAgYm9vbCBpc1VwZGF0aW5nKGNvbnN0IFBlckRv
bWFpbkRhdGEmKSBjb25zdDsKKyAgICBib29sIGlzSGlnaEFjY3VyYWN5RW5hYmxlZChjb25zdCBQ
ZXJEb21haW5EYXRhJikgY29uc3Q7CisgICAgdm9pZCBwcm92aWRlclN0YXJ0VXBkYXRpbmcoUGVy
RG9tYWluRGF0YSYsIGNvbnN0IFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluJik7CisgICAgdm9p
ZCBwcm92aWRlclN0b3BVcGRhdGluZyhQZXJEb21haW5EYXRhJik7CisgICAgdm9pZCBwcm92aWRl
clNldEVuYWJsZWRIaWdoQWNjdXJhY3koUGVyRG9tYWluRGF0YSYsIGJvb2wgZW5hYmxlZCk7CiAK
LSAgICBzdGQ6OnVuaXF1ZV9wdHI8QVBJOjpHZW9sb2NhdGlvblByb3ZpZGVyPiBtX3Byb3ZpZGVy
OwotICAgIHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6R2VvbG9jYXRpb25Qb3NpdGlvbkRhdGE+IG1f
bGFzdFBvc2l0aW9uOworICAgIEhhc2hNYXA8V2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4sIHN0
ZDo6dW5pcXVlX3B0cjxQZXJEb21haW5EYXRhPj4gbV9wZXJEb21haW5EYXRhOworICAgIHN0ZDo6
dW5pcXVlX3B0cjxBUEk6Okdlb2xvY2F0aW9uUHJvdmlkZXI+IG1fY2xpZW50UHJvdmlkZXI7CiB9
OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL1dlYkdlb2xvY2F0aW9uTWFuYWdlclByb3h5Lm1lc3NhZ2VzLmluIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvV2ViR2VvbG9jYXRpb25NYW5hZ2VyUHJveHkubWVzc2FnZXMuaW4KaW5k
ZXggZTVlOWMyN2QxNGE1ZmI3MjZmY2MyYzgxZmYzZTE2NWVhM2U4NDBiZS4uOTA0MWE5MGMyNTBm
OGFkZDY4YmIxM2IzYWJiNTRiZWI2NmNiMmQyNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvV2ViR2VvbG9jYXRpb25NYW5hZ2VyUHJveHkubWVzc2FnZXMuaW4KKysrIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViR2VvbG9jYXRpb25NYW5hZ2VyUHJveHkubWVzc2FnZXMu
aW4KQEAgLTIxLDcgKzIxLDcgQEAKICMgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KIAogbWVzc2FnZXMgLT4gV2ViR2Vv
bG9jYXRpb25NYW5hZ2VyUHJveHkgewotICAgIFN0YXJ0VXBkYXRpbmcoV2ViS2l0OjpXZWJQYWdl
UHJveHlJZGVudGlmaWVyIHBhZ2VQcm94eUlELCBTdHJpbmcgYXV0aG9yaXphdGlvblRva2VuKSBX
YW50c0Nvbm5lY3Rpb24KLSAgICBTdG9wVXBkYXRpbmcoKSBXYW50c0Nvbm5lY3Rpb24KLSAgICBT
ZXRFbmFibGVIaWdoQWNjdXJhY3koYm9vbCBlbmFibGVkKSBXYW50c0Nvbm5lY3Rpb24KKyAgICBT
dGFydFVwZGF0aW5nKFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluIHJlZ2lzdHJhYmxlRG9tYWlu
LCBXZWJLaXQ6OldlYlBhZ2VQcm94eUlkZW50aWZpZXIgcGFnZVByb3h5SUQsIFN0cmluZyBhdXRo
b3JpemF0aW9uVG9rZW4sIGJvb2wgZW5hYmxlSGlnaEFjY3VyYWN5KSBXYW50c0Nvbm5lY3Rpb24K
KyAgICBTdG9wVXBkYXRpbmcoV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4gcmVnaXN0cmFibGVE
b21haW4pIFdhbnRzQ29ubmVjdGlvbgorICAgIFNldEVuYWJsZUhpZ2hBY2N1cmFjeShXZWJDb3Jl
OjpSZWdpc3RyYWJsZURvbWFpbiByZWdpc3RyYWJsZURvbWFpbiwgYm9vbCBlbmFibGVkKSBXYW50
c0Nvbm5lY3Rpb24KIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBy
b2Nlc3NQb29sLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmNw
cAppbmRleCBmNjBkM2VjZDJjYTZmMGZjNzM2NzBjMzlkYTJhYjc2MDAzNWYyZjc0Li5mYTE3NDJj
ZjMyZGE5OTUyNzMyM2RmYzdjOGJmMGE3OTA2MzA0MWZlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuY3BwCkBAIC00MzEsOSArNDMxLDYgQEAgdm9pZCBXZWJQcm9j
ZXNzUG9vbDo6c2NyZWVuUHJvcGVydGllc1N0YXRlQ2hhbmdlZCgpCiAKIHZvaWQgV2ViUHJvY2Vz
c1Bvb2w6Om5ldHdvcmtQcm9jZXNzRGlkVGVybWluYXRlKE5ldHdvcmtQcm9jZXNzUHJveHkmIG5l
dHdvcmtQcm9jZXNzUHJveHksIE5ldHdvcmtQcm9jZXNzUHJveHk6OlRlcm1pbmF0aW9uUmVhc29u
IHJlYXNvbikKIHsKLSAgICBmb3IgKGF1dG8mIHN1cHBsZW1lbnQgOiBtX3N1cHBsZW1lbnRzLnZh
bHVlcygpKQotICAgICAgICBzdXBwbGVtZW50LT5wcm9jZXNzRGlkQ2xvc2UoJm5ldHdvcmtQcm9j
ZXNzUHJveHkpOwotCiAgICAgaWYgKHJlYXNvbiA9PSBOZXR3b3JrUHJvY2Vzc1Byb3h5OjpUZXJt
aW5hdGlvblJlYXNvbjo6Q3Jhc2gpCiAgICAgICAgIG1fY2xpZW50Lm5ldHdvcmtQcm9jZXNzRGlk
Q3Jhc2godGhpcyk7CiAKQEAgLTEwNTcsNyArMTA1NCw3IEBAIHZvaWQgV2ViUHJvY2Vzc1Bvb2w6
OmRpc2Nvbm5lY3RQcm9jZXNzKFdlYlByb2Nlc3NQcm94eSYgcHJvY2VzcykKICAgICBpZiAocHJv
Y2Vzcy5pc1J1bm5pbmdXb3JrZXJzKCkpCiAgICAgICAgIHJlbW92ZUZyb21SZW1vdGVXb3JrZXJQ
cm9jZXNzZXMocHJvY2Vzcyk7CiAKLSAgICBzdGF0aWNfY2FzdDxXZWJDb250ZXh0U3VwcGxlbWVu
dCo+KHN1cHBsZW1lbnQ8V2ViR2VvbG9jYXRpb25NYW5hZ2VyUHJveHk+KCkpLT5wcm9jZXNzRGlk
Q2xvc2UoJnByb2Nlc3MpOworICAgIHN1cHBsZW1lbnQ8V2ViR2VvbG9jYXRpb25NYW5hZ2VyUHJv
eHk+KCktPndlYlByb2Nlc3NJc0dvaW5nQXdheShwcm9jZXNzKTsKIAogICAgIG1fcHJvY2Vzc2Vz
LnJlbW92ZUZpcnN0KHByb2Nlc3MpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9pb3MvV0tHZW9sb2NhdGlvblByb3ZpZGVySU9TLm1tIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvaW9zL1dLR2VvbG9jYXRpb25Qcm92aWRlcklPUy5tbQppbmRleCBmNWU5ZmQ3YmMzNDEy
OTdhZjdiMjRlNjc0MTYzMzJjZDk2YWQ3MzljLi5lNjM4YWQ5YzRlOGI3MzhiZjE2NTE0ZDcxOWRj
MWJlOGE3NmI1OWQ0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tH
ZW9sb2NhdGlvblByb3ZpZGVySU9TLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lv
cy9XS0dlb2xvY2F0aW9uUHJvdmlkZXJJT1MubW0KQEAgLTUxLDcgKzUxLDYgQEAKICNpbXBvcnQg
PHd0Zi9VUkwuaD4KIAogLy8gRklYTUU6IFJlbW92ZSB1c2Ugb2YgV2ViS2l0MSBmcm9tIFdlYktp
dDIKLSNpbXBvcnQgPFdlYktpdC9XZWJHZW9sb2NhdGlvbkNvcmVMb2NhdGlvblByb3ZpZGVyLmg+
CiAjaW1wb3J0IDxXZWJLaXQvV2ViQWxsb3dEZW55UG9saWN5TGlzdGVuZXIuaD4KIAogQUxMT1df
REVQUkVDQVRFRF9ERUNMQVJBVElPTlNfQkVHSU4KQEAgLTU5LDkgKzU4LDYgQEAgQUxMT1dfREVQ
UkVDQVRFRF9ERUNMQVJBVElPTlNfQkVHSU4KIEBpbnRlcmZhY2UgV0tHZW9sb2NhdGlvblByb3Zp
ZGVySU9TIChfV0tHZW9sb2NhdGlvbkNvcmVMb2NhdGlvbkxpc3RlbmVyKSA8X1dLR2VvbG9jYXRp
b25Db3JlTG9jYXRpb25MaXN0ZW5lcj4KIEBlbmQKIAotQGludGVyZmFjZSBXS0xlZ2FjeUNvcmVM
b2NhdGlvblByb3ZpZGVyIDogTlNPYmplY3Q8X1dLR2VvbG9jYXRpb25Db3JlTG9jYXRpb25Qcm92
aWRlciwgV2ViR2VvbG9jYXRpb25Db3JlTG9jYXRpb25VcGRhdGVMaXN0ZW5lcj4KLUBlbmQKLQog
QGludGVyZmFjZSBXS1dlYkFsbG93RGVueVBvbGljeUxpc3RlbmVyIDogTlNPYmplY3Q8V2ViQWxs
b3dEZW55UG9saWN5TGlzdGVuZXI+CiAtIChpZClpbml0V2l0aENvbXBsZXRpb25IYW5kbGVyOihG
dW5jdGlvbjx2b2lkKGJvb2wpPiYmKWNvbXBsZXRpb25IYW5kbGVyOwogLSAodm9pZClkZW55T25s
eVRoaXNSZXF1ZXN0IE5PX1JFVFVSTl9EVUVfVE9fQVNTRVJUOwpAQCAtMTQ2LDI1ICsxNDIsNDIg
QEAgLSAoaWQpaW5pdFdpdGhQcm9jZXNzUG9vbDooV2ViS2l0OjpXZWJQcm9jZXNzUG9vbCYpcHJv
Y2Vzc1Bvb2wKICAgICBzZWxmID0gW3N1cGVyIGluaXRdOwogICAgIGlmICghc2VsZikKICAgICAg
ICAgcmV0dXJuIG5pbDsKLSAgICBfZ2VvbG9jYXRpb25NYW5hZ2VyID0gcHJvY2Vzc1Bvb2wuc3Vw
cGxlbWVudDxXZWJLaXQ6OldlYkdlb2xvY2F0aW9uTWFuYWdlclByb3h5PigpOwotICAgIFdLR2Vv
bG9jYXRpb25Qcm92aWRlclYxIHByb3ZpZGVyQ2FsbGJhY2sgPSB7Ci0gICAgICAgIHsgMSwgc2Vs
ZiB9LAotICAgICAgICBzdGFydFVwZGF0aW5nQ2FsbGJhY2ssCi0gICAgICAgIHN0b3BVcGRhdGlu
Z0NhbGxiYWNrLAotICAgICAgICBzZXRFbmFibGVIaWdoQWNjdXJhY3kKLSAgICB9OwotICAgIFdL
R2VvbG9jYXRpb25NYW5hZ2VyU2V0UHJvdmlkZXIodG9BUEkoX2dlb2xvY2F0aW9uTWFuYWdlci5n
ZXQoKSksICZwcm92aWRlckNhbGxiYWNrLmJhc2UpOwotICAgIF9jb3JlTG9jYXRpb25Qcm92aWRl
ciA9IHdyYXBwZXIocHJvY2Vzc1Bvb2wpLl9jb3JlTG9jYXRpb25Qcm92aWRlciA/OiBhZG9wdE5T
KHN0YXRpY19jYXN0PGlkIDxfV0tHZW9sb2NhdGlvbkNvcmVMb2NhdGlvblByb3ZpZGVyPj4oW1tX
S0xlZ2FjeUNvcmVMb2NhdGlvblByb3ZpZGVyIGFsbG9jXSBpbml0XSkpOwotICAgIFtfY29yZUxv
Y2F0aW9uUHJvdmlkZXIgc2V0TGlzdGVuZXI6c2VsZl07CisKKyAgICAvLyBPbiBpT1MsIFdlYktp
dCBub3JtYWxseSBwcm92aWRlcyB0aGUgbG9jYXRpb24uIEhvd2V2ZXIsIGlmIHRoZSBjbGllbnQg
c2V0cyBhIGNvcmVMb2NhdGlvblByb3ZpZGVyLCB0aGVuIHdlIHVzZSB0aGF0IG9uZSBpbnN0ZWFk
LgorICAgIC8vIFRoaXMgaXMgdXNlZnVsIGZvciBXZWJLaXRUZXN0UnVubmVyIHRvIHByb3ZpZGUg
YSBkdW1teSBnZW9sb2NhdGlvbiBwcm92aWRlci4gSXQgaXMgYWxzbyB1c2VkIGJ5IGNlcnRhaW4g
YXBwcyB0byBkZW55IGFsbAorICAgIC8vIGdlb2xvY2F0aW9uIGF1dGhvcml6YXRpb24gYXMgYSB3
YXkgdG8gZGlzYWJsZSBzdXBwb3J0IGZvciBnZW9sb2NhdGlvbi4KKyAgICBpZiAod3JhcHBlcihw
cm9jZXNzUG9vbCkuX2NvcmVMb2NhdGlvblByb3ZpZGVyKSB7CisgICAgICAgIF9nZW9sb2NhdGlv
bk1hbmFnZXIgPSBwcm9jZXNzUG9vbC5zdXBwbGVtZW50PFdlYktpdDo6V2ViR2VvbG9jYXRpb25N
YW5hZ2VyUHJveHk+KCk7CisgICAgICAgIFdLR2VvbG9jYXRpb25Qcm92aWRlclYxIHByb3ZpZGVy
Q2FsbGJhY2sgPSB7CisgICAgICAgICAgICB7IDEsIHNlbGYgfSwKKyAgICAgICAgICAgIHN0YXJ0
VXBkYXRpbmdDYWxsYmFjaywKKyAgICAgICAgICAgIHN0b3BVcGRhdGluZ0NhbGxiYWNrLAorICAg
ICAgICAgICAgc2V0RW5hYmxlSGlnaEFjY3VyYWN5CisgICAgICAgIH07CisgICAgICAgIFdLR2Vv
bG9jYXRpb25NYW5hZ2VyU2V0UHJvdmlkZXIodG9BUEkoX2dlb2xvY2F0aW9uTWFuYWdlci5nZXQo
KSksICZwcm92aWRlckNhbGxiYWNrLmJhc2UpOworICAgICAgICBfY29yZUxvY2F0aW9uUHJvdmlk
ZXIgPSB3cmFwcGVyKHByb2Nlc3NQb29sKS5fY29yZUxvY2F0aW9uUHJvdmlkZXI7CisgICAgICAg
IFtfY29yZUxvY2F0aW9uUHJvdmlkZXIgc2V0TGlzdGVuZXI6c2VsZl07CisgICAgfQogICAgIHJl
dHVybiBzZWxmOwogfQogCiAtICh2b2lkKWRlY2lkZVBvbGljeUZvckdlb2xvY2F0aW9uUmVxdWVz
dEZyb21PcmlnaW46KFdlYktpdDo6RnJhbWVJbmZvRGF0YSYmKWZyYW1lSW5mbyBjb21wbGV0aW9u
SGFuZGxlcjooRnVuY3Rpb248dm9pZChib29sKT4mJiljb21wbGV0aW9uSGFuZGxlciB2aWV3OihX
S1dlYlZpZXcgKiljb250ZW50VmlldwogewotICAgIC8vIFN0ZXAgMTogYXNrIHRoZSB1c2VyIGlm
IHRoZSBhcHAgY2FuIHVzZSBHZW9sb2NhdGlvbi4KKyAgICBXZWJDb3JlOjpSZWdpc3RyYWJsZURv
bWFpbiByZWdpc3RyYWJsZURvbWFpbihmcmFtZUluZm8uc2VjdXJpdHlPcmlnaW4pOwogICAgIEdl
b2xvY2F0aW9uUmVxdWVzdERhdGEgZ2VvbG9jYXRpb25SZXF1ZXN0RGF0YSB7IFtjb250ZW50Vmll
dyBVUkxdLCBXVEZNb3ZlKGZyYW1lSW5mbyksIFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpLCBj
b250ZW50VmlldyB9OwogICAgIF9yZXF1ZXN0c1dhaXRpbmdGb3JDb3JlTG9jYXRpb25BdXRob3Jp
emF0aW9uLmFwcGVuZChXVEZNb3ZlKGdlb2xvY2F0aW9uUmVxdWVzdERhdGEpKTsKLSAgICBbX2Nv
cmVMb2NhdGlvblByb3ZpZGVyIHJlcXVlc3RHZW9sb2NhdGlvbkF1dGhvcml6YXRpb25dOworICAg
IGlmIChfY29yZUxvY2F0aW9uUHJvdmlkZXIpIHsKKyAgICAgICAgLy8gU3RlcCAxOiBhc2sgdGhl
IHVzZXIgaWYgdGhlIGFwcCBjYW4gdXNlIEdlb2xvY2F0aW9uLgorICAgICAgICBbX2NvcmVMb2Nh
dGlvblByb3ZpZGVyIHJlcXVlc3RHZW9sb2NhdGlvbkF1dGhvcml6YXRpb25dOworICAgIH0gZWxz
ZSB7CisgICAgICAgIC8vIFN0ZXAgMTogYXNrIENvcmVMb2NhdGlvbiBpZiB0aGUgYXBwIGNhbiB1
c2UgR2VvbG9jYXRpb24uCisgICAgICAgIFdlYkNvcmU6OkNvcmVMb2NhdGlvbkdlb2xvY2F0aW9u
UHJvdmlkZXI6OnJlcXVlc3RBdXRob3JpemF0aW9uKHJlZ2lzdHJhYmxlRG9tYWluLCBbc2VsZiwg
c3Ryb25nU2VsZiA9IHJldGFpblB0cihzZWxmKV0oYm9vbCBhdXRob3JpemVkKSB7CisgICAgICAg
ICAgICBpZiAoYXV0aG9yaXplZCkKKyAgICAgICAgICAgICAgICBbc2VsZiBnZW9sb2NhdGlvbkF1
dGhvcml6YXRpb25HcmFudGVkXTsKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICBb
c2VsZiBnZW9sb2NhdGlvbkF1dGhvcml6YXRpb25EZW5pZWRdOworICAgICAgICB9KTsKKyAgICB9
CiB9CiBAZW5kCiAKQEAgLTE3NCw3ICsxODcsNyBAQCBAaW1wbGVtZW50YXRpb24gV0tHZW9sb2Nh
dGlvblByb3ZpZGVySU9TIChXZWJHZW9sb2NhdGlvbkNvcmVMb2NhdGlvblVwZGF0ZUxpc3Rlbgog
CiAtICh2b2lkKWdlb2xvY2F0aW9uQXV0aG9yaXphdGlvbkdyYW50ZWQKIHsKLSAgICAvLyBTdGVw
IDI6IGFzayB0aGUgdXNlciBpZiB0aGlzIHBhcnRpY3VsYXIgcGFnZSBjYW4gdXNlIGdlbG9jYXRp
b24uCisgICAgLy8gU3RlcCAyOiBhc2sgdGhlIHVzZXIgaWYgdGhpcyBwYXJ0aWN1bGFyIHBhZ2Ug
Y2FuIHVzZSBnZW9sb2NhdGlvbi4KICAgICBpZiAoX3JlcXVlc3RzV2FpdGluZ0ZvckNvcmVMb2Nh
dGlvbkF1dGhvcml6YXRpb24uaXNFbXB0eSgpKQogICAgICAgICByZXR1cm47CiAKQEAgLTIyNiw4
MSArMjM5LDYgQEAgLSAodm9pZClyZXNldEdlb2xvY2F0aW9uCiAKIEBlbmQKIAotIyBwcmFnbWEg
bWFyayAtIEltcGxlbWVudGF0aW9uIG9mIFdLTGVnYWN5Q29yZUxvY2F0aW9uUHJvdmlkZXIKLQot
QGltcGxlbWVudGF0aW9uIFdLTGVnYWN5Q29yZUxvY2F0aW9uUHJvdmlkZXIgewotICAgIGlkIDxf
V0tHZW9sb2NhdGlvbkNvcmVMb2NhdGlvbkxpc3RlbmVyPiBfbGlzdGVuZXI7Ci0gICAgUmV0YWlu
UHRyPFdlYkdlb2xvY2F0aW9uQ29yZUxvY2F0aW9uUHJvdmlkZXI+IF9wcm92aWRlcjsKLX0KLQot
Ly8gPF9XS0dlb2xvY2F0aW9uQ29yZUxvY2F0aW9uUHJvdmlkZXI+IE1ldGhvZHMKLQotLSAodm9p
ZClzZXRMaXN0ZW5lcjooaWQ8X1dLR2VvbG9jYXRpb25Db3JlTG9jYXRpb25MaXN0ZW5lcj4pbGlz
dGVuZXIKLXsKLSAgICBBU1NFUlQobGlzdGVuZXIgJiYgIV9saXN0ZW5lciAmJiAhX3Byb3ZpZGVy
KTsKLSAgICBfbGlzdGVuZXIgPSBsaXN0ZW5lcjsKLSAgICBfcHJvdmlkZXIgPSBhZG9wdE5TKFtb
V2ViR2VvbG9jYXRpb25Db3JlTG9jYXRpb25Qcm92aWRlciBhbGxvY10gaW5pdFdpdGhMaXN0ZW5l
cjpzZWxmXSk7Ci19Ci0KLS0gKHZvaWQpcmVxdWVzdEdlb2xvY2F0aW9uQXV0aG9yaXphdGlvbgot
ewotICAgIEFTU0VSVChfcHJvdmlkZXIpOwotICAgIFtfcHJvdmlkZXIgcmVxdWVzdEdlb2xvY2F0
aW9uQXV0aG9yaXphdGlvbl07Ci19Ci0KLS0gKHZvaWQpc3RhcnQKLXsKLSAgICBBU1NFUlQoX3By
b3ZpZGVyKTsKLSAgICBbX3Byb3ZpZGVyIHN0YXJ0XTsKLX0KLQotLSAodm9pZClzdG9wCi17Ci0g
ICAgQVNTRVJUKF9wcm92aWRlcik7Ci0gICAgW19wcm92aWRlciBzdG9wXTsKLX0KLQotLSAodm9p
ZClzZXRFbmFibGVIaWdoQWNjdXJhY3k6KEJPT0wpZmxhZwotewotICAgIEFTU0VSVChfcHJvdmlk
ZXIpOwotICAgIFtfcHJvdmlkZXIgc2V0RW5hYmxlSGlnaEFjY3VyYWN5OmZsYWddOwotfQotCi0v
LyA8V2ViR2VvbG9jYXRpb25Db3JlTG9jYXRpb25VcGRhdGVMaXN0ZW5lcj4gTWV0aG9kcwotCi0t
ICh2b2lkKWdlb2xvY2F0aW9uQXV0aG9yaXphdGlvbkdyYW50ZWQKLXsKLSAgICBBU1NFUlQoX2xp
c3RlbmVyKTsKLSAgICBbX2xpc3RlbmVyIGdlb2xvY2F0aW9uQXV0aG9yaXphdGlvbkdyYW50ZWRd
OwotfQotCi0tICh2b2lkKWdlb2xvY2F0aW9uQXV0aG9yaXphdGlvbkRlbmllZAotewotICAgIEFT
U0VSVChfbGlzdGVuZXIpOwotICAgIFtfbGlzdGVuZXIgZ2VvbG9jYXRpb25BdXRob3JpemF0aW9u
RGVuaWVkXTsKLX0KLQotLSAodm9pZClwb3NpdGlvbkNoYW5nZWQ6KFdlYkNvcmU6Okdlb2xvY2F0
aW9uUG9zaXRpb25EYXRhJiYpY29yZVBvc2l0aW9uCi17Ci0gICAgQVNTRVJUKF9saXN0ZW5lcik7
Ci0gICAgYXV0byBwb3NpdGlvbiA9IFdlYktpdDo6V2ViR2VvbG9jYXRpb25Qb3NpdGlvbjo6Y3Jl
YXRlKFdURk1vdmUoY29yZVBvc2l0aW9uKSk7Ci0gICAgW19saXN0ZW5lciBwb3NpdGlvbkNoYW5n
ZWQ6d3JhcHBlcihwb3NpdGlvbi5nZXQoKSldOwotfQotCi0tICh2b2lkKWVycm9yT2NjdXJyZWQ6
KE5TU3RyaW5nICopZXJyb3JNZXNzYWdlCi17Ci0gICAgQVNTRVJUKF9saXN0ZW5lcik7Ci0gICAg
W19saXN0ZW5lciBlcnJvck9jY3VycmVkOmVycm9yTWVzc2FnZV07Ci19Ci0KLS0gKHZvaWQpcmVz
ZXRHZW9sb2NhdGlvbgotewotICAgIEFTU0VSVChfbGlzdGVuZXIpOwotICAgIFtfbGlzdGVuZXIg
cmVzZXRHZW9sb2NhdGlvbl07Ci19Ci0KLUBlbmQKLQogIyBwcmFnbWEgbWFyayAtIEltcGxlbWVu
dGF0aW9uIG9mIFdLV2ViQWxsb3dEZW55UG9saWN5TGlzdGVuZXIKIEBpbXBsZW1lbnRhdGlvbiBX
S1dlYkFsbG93RGVueVBvbGljeUxpc3RlbmVyIHsKICAgICBGdW5jdGlvbjx2b2lkKGJvb2wpPiBf
Y29tcGxldGlvbkhhbmRsZXI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3By
b2plY3QucGJ4cHJvagppbmRleCAxZWM4YjJiODVjZTFlNTY0MzdmMmVmZDFjNDRjMDY5MTYwNjkx
OTMwLi5jYzI5NjA5N2E4NzYzOGZhNmVmM2U4NjBiNzgzMmVhZjhlYjllZGJhIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1Nv
dXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTQzMTksNiAr
NDMxOSw3IEBACiAJCTQ2Q0UzQjEwMjNEOEM4M0QwMDE2QTk2QSAvKiBXZWJCYWNrRm9yd2FyZExp
c3RDb3VudHMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2ViQmFja0Zvcndh
cmRMaXN0Q291bnRzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQ2RDQ4RkNDMjc5
OUQ3REQwMDdEMjAxNCAvKiBXZWJTaGFyZWRXb3JrZXJTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9u
LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdlYlNoYXJlZFdvcmtlclNlcnZlclRvQ29udGV4dENv
bm5lY3Rpb24uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0NkQ0OEZDRDI3OTlE
N0RFMDA3RDIwMTQgLyogV2ViU2hhcmVkV29ya2VyU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbi5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBXZWJTaGFyZWRXb3JrZXJTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9u
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTQ2REEyODU3MjdCNzNFNzYwMDg5RDMz
OSAvKiBXZWJHZW9sb2NhdGlvbk1hbmFnZXJQcm94eUNvY29hLmNwcCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0
aCA9IFdlYkdlb2xvY2F0aW9uTWFuYWdlclByb3h5Q29jb2EuY3BwOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQk0NkRGMDYzOTFGMzkwNUU1MDAxOTgwQkIgLyogTmV0d29ya0NPUlNQcmVm
bGlnaHRDaGVja2VyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IE5l
dHdvcmtDT1JTUHJlZmxpZ2h0Q2hlY2tlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCTQ2REYwNjNBMUYzOTA1RTUwMDE5ODBCQiAvKiBOZXR3b3JrQ09SU1ByZWZsaWdodENoZWNr
ZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTmV0d29ya0NPUlNQcmVmbGln
aHRDaGVja2VyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQ2RTk3NjBBMjc1N0Y2
QzkwMEFDREQzNyAvKiBXZWJCcm9hZGNhc3RDaGFubmVsUmVnaXN0cnkubWVzc2FnZXMuaW4gKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSB0ZXh0OyBwYXRoID0gV2ViQnJvYWRjYXN0Q2hhbm5lbFJlZ2lzdHJ5Lm1lc3NhZ2Vz
LmluOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtNzYxMSw2ICs3NjEyLDcgQEAKIAkJ
CQk1MkQ1QTFBQTFDNTc0OTRFMDBERTM0QTMgLyogVmlkZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5
LmggKi8sCiAJCQkJNTJENUExQUIxQzU3NDk0RTAwREUzNEEzIC8qIFZpZGVvRnVsbHNjcmVlbk1h
bmFnZXJQcm94eS5tZXNzYWdlcy5pbiAqLywKIAkJCQk1MkQ1QTFBQzFDNTc0OTRFMDBERTM0QTMg
LyogVmlkZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5Lm1tICovLAorCQkJCTQ2REEyODU3MjdCNzNF
NzYwMDg5RDMzOSAvKiBXZWJHZW9sb2NhdGlvbk1hbmFnZXJQcm94eUNvY29hLmNwcCAqLywKIAkJ
CQlDMThGM0ExMzI1NjMzMkE2MDA3OTdFNjYgLyogV2ViSW5zcGVjdG9yUHJlZmVyZW5jZU9ic2Vy
dmVyLmggKi8sCiAJCQkJQzE4RjNBMTQyNTYzMzM0MzAwNzk3RTY2IC8qIFdlYkluc3BlY3RvclBy
ZWZlcmVuY2VPYnNlcnZlci5tbSAqLywKIAkJCQlDREYxQjkxOTI2NzAyMUQ2MDAwN0VDMTAgLyog
V2ViS2l0U3dpZnRTb2Z0TGluay5oICovLApAQCAtMTM0ODYsNiArMTM0ODgsNyBAQAogCQkJCUUx
OEU2OTE4MTY5QjY2N0IwMDlCNjY3MCAvKiBTZWNJdGVtU2hpbVByb3h5TWVzc2FnZXMuaCBpbiBI
ZWFkZXJzICovLAogCQkJCTU3MEFCOEYzMjBBRTNCRDcwMEI4QkU4NyAvKiBTZWNLZXlQcm94eVN0
b3JlLmggaW4gSGVhZGVycyAqLywKIAkJCQk1MTREOUY1NzE5MTE5RDM1MDAwMDYzQTcgLyogU2Vy
dmljZXNDb250cm9sbGVyLmggaW4gSGVhZGVycyAqLywKKwkJCQk1MTY0NjU4MDI3QTlDNzc0MDBF
MUYyQkEgLyogU2VydmljZVdvcmtlck5vdGlmaWNhdGlvbkhhbmRsZXIuaCBpbiBIZWFkZXJzICov
LAogCQkJCTFBRkRFNjVBMTk1NEE0MkIwMEM0OEZGQSAvKiBTZXNzaW9uU3RhdGUuaCBpbiBIZWFk
ZXJzICovLAogCQkJCTFBMDAyRDQ5MTk2QjM0NUQwMEI5QUQ0NCAvKiBTZXNzaW9uU3RhdGVDb2Rp
bmcuaCBpbiBIZWFkZXJzICovLAogCQkJCTkzRTc5OUNFMjc2MDQ5N0IwMDc0MDA4QSAvKiBTZXNz
aW9uU3RvcmFnZU1hbmFnZXIuaCBpbiBIZWFkZXJzICovLApAQCAtMTM5MzQsNyArMTM5MzcsNiBA
QAogCQkJCUJDNEE2Mjk3MTQ3MzEzQTAwMDZDNjgxQSAvKiBXS0Nvbm5lY3Rpb25SZWYuaCBpbiBI
ZWFkZXJzICovLAogCQkJCUU1OTZERDZBMjUxRTcxRDQwMEMyNzVBNyAvKiBXS0NvbnRhY3RQaWNr
ZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTVDRDI4NjU0MUU3MjM1QjEwMDk0RkRDOCAvKiBXS0Nv
bnRlbnRSdWxlTGlzdC5oIGluIEhlYWRlcnMgKi8sCi0JCQkJNTE2NDY1ODAyN0E5Qzc3NDAwRTFG
MkJBIC8qIFNlcnZpY2VXb3JrZXJOb3RpZmljYXRpb25IYW5kbGVyLmggaW4gSGVhZGVycyAqLywK
IAkJCQk1Q0QyODY1NTFFNzIzNUI4MDA5NEZEQzggLyogV0tDb250ZW50UnVsZUxpc3RJbnRlcm5h
bC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNUM1MTM5REIyNTkyN0Q4MDAwOUMzRTMwIC8qIFdLQ29u
dGVudFJ1bGVMaXN0UHJpdmF0ZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNUNEMjg2NTExRTcyMzU5
OTAwOTRGREM4IC8qIFdLQ29udGVudFJ1bGVMaXN0U3RvcmUuaCBpbiBIZWFkZXJzICovLApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dlb2xvY2F0aW9uL1dlYkdlb2xvY2F0
aW9uTWFuYWdlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR2VvbG9jYXRpb24vV2Vi
R2VvbG9jYXRpb25NYW5hZ2VyLmNwcAppbmRleCA1YTljOWY0ZDJhMWNkNjZhNGI2NzU5YjU5Mzg3
ZWEyY2Y1NWIyYWE4Li5mOWQ4NzVjMTQ5NDRhYjAzM2U4N2E5ZmUyNjk1ZDE1ZjU0ZjdmY2M3IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR2VvbG9jYXRpb24vV2ViR2VvbG9j
YXRpb25NYW5hZ2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR2VvbG9jYXRp
b24vV2ViR2VvbG9jYXRpb25NYW5hZ2VyLmNwcApAQCAtMzksNiArMzksMTQgQEAKIG5hbWVzcGFj
ZSBXZWJLaXQgewogdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKK3N0YXRpYyBSZWdpc3RyYWJs
ZURvbWFpbiByZWdpc3RyYWJsZURvbWFpbkZvclBhZ2UoV2ViUGFnZSYgcGFnZSkKK3sKKyAgICBh
dXRvKiBkb2N1bWVudCA9IHBhZ2UuY29yZVBhZ2UoKSA/IHBhZ2UuY29yZVBhZ2UoKS0+bWFpbkZy
YW1lKCkuZG9jdW1lbnQoKSA6IG51bGxwdHI7CisgICAgaWYgKCFkb2N1bWVudCkKKyAgICAgICAg
cmV0dXJuIHsgfTsKKyAgICByZXR1cm4gUmVnaXN0cmFibGVEb21haW4geyBkb2N1bWVudC0+dXJs
KCkgfTsKK30KKwogY29uc3QgY2hhciogV2ViR2VvbG9jYXRpb25NYW5hZ2VyOjpzdXBwbGVtZW50
TmFtZSgpCiB7CiAgICAgcmV0dXJuICJXZWJHZW9sb2NhdGlvbk1hbmFnZXIiOwpAQCAtNTAsODgg
KzU4LDE0MCBAQCBXZWJHZW9sb2NhdGlvbk1hbmFnZXI6OldlYkdlb2xvY2F0aW9uTWFuYWdlcihX
ZWJQcm9jZXNzJiBwcm9jZXNzKQogICAgIG1fcHJvY2Vzcy5hZGRNZXNzYWdlUmVjZWl2ZXIoTWVz
c2FnZXM6OldlYkdlb2xvY2F0aW9uTWFuYWdlcjo6bWVzc2FnZVJlY2VpdmVyTmFtZSgpLCAqdGhp
cyk7CiB9CiAKLXZvaWQgV2ViR2VvbG9jYXRpb25NYW5hZ2VyOjpyZWdpc3RlcldlYlBhZ2UoV2Vi
UGFnZSYgcGFnZSwgY29uc3QgU3RyaW5nJiBhdXRob3JpemF0aW9uVG9rZW4pCi17Ci0gICAgYm9v
bCB3YXNVcGRhdGluZyA9IGlzVXBkYXRpbmcoKTsKK1dlYkdlb2xvY2F0aW9uTWFuYWdlcjo6fldl
Ykdlb2xvY2F0aW9uTWFuYWdlcigpID0gZGVmYXVsdDsKIAotICAgIG1fcGFnZVNldC5hZGQocGFn
ZSk7Cit2b2lkIFdlYkdlb2xvY2F0aW9uTWFuYWdlcjo6cmVnaXN0ZXJXZWJQYWdlKFdlYlBhZ2Um
IHBhZ2UsIGNvbnN0IFN0cmluZyYgYXV0aG9yaXphdGlvblRva2VuLCBib29sIG5lZWRzSGlnaEFj
Y3VyYWN5KQoreworICAgIGF1dG8gcmVnaXN0cmFibGVEb21haW4gPSByZWdpc3RyYWJsZURvbWFp
bkZvclBhZ2UocGFnZSk7CisgICAgaWYgKHJlZ2lzdHJhYmxlRG9tYWluLnN0cmluZygpLmlzRW1w
dHkoKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgYXV0byYgcGFnZVNldHMgPSBtX3BhZ2VTZXRz
LmFkZChyZWdpc3RyYWJsZURvbWFpbiwgUGFnZVNldHMoKSkuaXRlcmF0b3ItPnZhbHVlOworICAg
IGJvb2wgd2FzVXBkYXRpbmcgPSBpc1VwZGF0aW5nKHBhZ2VTZXRzKTsKKyAgICBib29sIGhpZ2hB
Y2N1cmFjeVdhc0VuYWJsZWQgPSBpc0hpZ2hBY2N1cmFjeUVuYWJsZWQocGFnZVNldHMpOworCisg
ICAgcGFnZVNldHMucGFnZVNldC5hZGQocGFnZSk7CisgICAgaWYgKG5lZWRzSGlnaEFjY3VyYWN5
KQorICAgICAgICBwYWdlU2V0cy5oaWdoQWNjdXJhY3lQYWdlU2V0LmFkZChwYWdlKTsKKyAgICBt
X3BhZ2VUb1JlZ2lzdHJhYmxlRG9tYWluLmFkZCgmcGFnZSwgcmVnaXN0cmFibGVEb21haW4pOwor
CisgICAgaWYgKCF3YXNVcGRhdGluZykgeworICAgICAgICBtX3Byb2Nlc3MucGFyZW50UHJvY2Vz
c0Nvbm5lY3Rpb24oKS0+c2VuZChNZXNzYWdlczo6V2ViR2VvbG9jYXRpb25NYW5hZ2VyUHJveHk6
OlN0YXJ0VXBkYXRpbmcocmVnaXN0cmFibGVEb21haW4sIHBhZ2Uud2ViUGFnZVByb3h5SWRlbnRp
ZmllcigpLCBhdXRob3JpemF0aW9uVG9rZW4sIG5lZWRzSGlnaEFjY3VyYWN5KSwgMCk7CisgICAg
ICAgIHJldHVybjsKKyAgICB9CiAKLSAgICBpZiAoIXdhc1VwZGF0aW5nKQotICAgICAgICBtX3By
b2Nlc3MucGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+c2VuZChNZXNzYWdlczo6V2ViR2VvbG9j
YXRpb25NYW5hZ2VyUHJveHk6OlN0YXJ0VXBkYXRpbmcocGFnZS53ZWJQYWdlUHJveHlJZGVudGlm
aWVyKCksIGF1dGhvcml6YXRpb25Ub2tlbiksIDApOworICAgIGJvb2wgaGlnaEFjY3VyYWN5U2hv
dWxkQmVFbmFibGVkID0gaXNIaWdoQWNjdXJhY3lFbmFibGVkKHBhZ2VTZXRzKTsKKyAgICBpZiAo
aGlnaEFjY3VyYWN5V2FzRW5hYmxlZCAhPSBoaWdoQWNjdXJhY3lTaG91bGRCZUVuYWJsZWQpCisg
ICAgICAgIG1fcHJvY2Vzcy5wYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpLT5zZW5kKE1lc3NhZ2Vz
OjpXZWJHZW9sb2NhdGlvbk1hbmFnZXJQcm94eTo6U2V0RW5hYmxlSGlnaEFjY3VyYWN5KHJlZ2lz
dHJhYmxlRG9tYWluLCBoaWdoQWNjdXJhY3lTaG91bGRCZUVuYWJsZWQpLCAwKTsKIH0KIAogdm9p
ZCBXZWJHZW9sb2NhdGlvbk1hbmFnZXI6OnVucmVnaXN0ZXJXZWJQYWdlKFdlYlBhZ2UmIHBhZ2Up
CiB7Ci0gICAgYm9vbCBoaWdoQWNjdXJhY3lXYXNFbmFibGVkID0gaXNIaWdoQWNjdXJhY3lFbmFi
bGVkKCk7CisgICAgYXV0byByZWdpc3RyYWJsZURvbWFpbiA9IG1fcGFnZVRvUmVnaXN0cmFibGVE
b21haW4udGFrZSgmcGFnZSk7CisgICAgaWYgKHJlZ2lzdHJhYmxlRG9tYWluLnN0cmluZygpLmlz
RW1wdHkoKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgYXV0byBpdCA9IG1fcGFnZVNldHMuZmlu
ZChyZWdpc3RyYWJsZURvbWFpbik7CisgICAgaWYgKGl0ID09IG1fcGFnZVNldHMuZW5kKCkpCisg
ICAgICAgIHJldHVybjsKIAotICAgIG1fcGFnZVNldC5yZW1vdmUocGFnZSk7Ci0gICAgbV9oaWdo
QWNjdXJhY3lQYWdlU2V0LnJlbW92ZShwYWdlKTsKKyAgICBhdXRvJiBwYWdlU2V0cyA9IGl0LT52
YWx1ZTsKKyAgICBib29sIGhpZ2hBY2N1cmFjeVdhc0VuYWJsZWQgPSBpc0hpZ2hBY2N1cmFjeUVu
YWJsZWQocGFnZVNldHMpOwogCi0gICAgaWYgKCFpc1VwZGF0aW5nKCkpCi0gICAgICAgIG1fcHJv
Y2Vzcy5wYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpLT5zZW5kKE1lc3NhZ2VzOjpXZWJHZW9sb2Nh
dGlvbk1hbmFnZXJQcm94eTo6U3RvcFVwZGF0aW5nKCksIDApOworICAgIHBhZ2VTZXRzLnBhZ2VT
ZXQucmVtb3ZlKHBhZ2UpOworICAgIHBhZ2VTZXRzLmhpZ2hBY2N1cmFjeVBhZ2VTZXQucmVtb3Zl
KHBhZ2UpOworCisgICAgaWYgKCFpc1VwZGF0aW5nKHBhZ2VTZXRzKSkKKyAgICAgICAgbV9wcm9j
ZXNzLnBhcmVudFByb2Nlc3NDb25uZWN0aW9uKCktPnNlbmQoTWVzc2FnZXM6OldlYkdlb2xvY2F0
aW9uTWFuYWdlclByb3h5OjpTdG9wVXBkYXRpbmcocmVnaXN0cmFibGVEb21haW4pLCAwKTsKICAg
ICBlbHNlIHsKLSAgICAgICAgYm9vbCBoaWdoQWNjdXJhY3lTaG91bGRCZUVuYWJsZWQgPSBpc0hp
Z2hBY2N1cmFjeUVuYWJsZWQoKTsKKyAgICAgICAgYm9vbCBoaWdoQWNjdXJhY3lTaG91bGRCZUVu
YWJsZWQgPSBpc0hpZ2hBY2N1cmFjeUVuYWJsZWQocGFnZVNldHMpOwogICAgICAgICBpZiAoaGln
aEFjY3VyYWN5V2FzRW5hYmxlZCAhPSBoaWdoQWNjdXJhY3lTaG91bGRCZUVuYWJsZWQpCi0gICAg
ICAgICAgICBtX3Byb2Nlc3MucGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+c2VuZChNZXNzYWdl
czo6V2ViR2VvbG9jYXRpb25NYW5hZ2VyUHJveHk6OlNldEVuYWJsZUhpZ2hBY2N1cmFjeShoaWdo
QWNjdXJhY3lTaG91bGRCZUVuYWJsZWQpLCAwKTsKKyAgICAgICAgICAgIG1fcHJvY2Vzcy5wYXJl
bnRQcm9jZXNzQ29ubmVjdGlvbigpLT5zZW5kKE1lc3NhZ2VzOjpXZWJHZW9sb2NhdGlvbk1hbmFn
ZXJQcm94eTo6U2V0RW5hYmxlSGlnaEFjY3VyYWN5KHJlZ2lzdHJhYmxlRG9tYWluLCBoaWdoQWNj
dXJhY3lTaG91bGRCZUVuYWJsZWQpLCAwKTsKICAgICB9CisKKyAgICBpZiAocGFnZVNldHMucGFn
ZVNldC5jb21wdXRlc0VtcHR5KCkgJiYgcGFnZVNldHMuaGlnaEFjY3VyYWN5UGFnZVNldC5jb21w
dXRlc0VtcHR5KCkpCisgICAgICAgIG1fcGFnZVNldHMucmVtb3ZlKGl0KTsKIH0KIAogdm9pZCBX
ZWJHZW9sb2NhdGlvbk1hbmFnZXI6OnNldEVuYWJsZUhpZ2hBY2N1cmFjeUZvclBhZ2UoV2ViUGFn
ZSYgcGFnZSwgYm9vbCBlbmFibGVkKQogewotICAgIGJvb2wgaGlnaEFjY3VyYWN5V2FzRW5hYmxl
ZCA9IGlzSGlnaEFjY3VyYWN5RW5hYmxlZCgpOworICAgIGF1dG8gcmVnaXN0cmFibGVEb21haW4g
PSBtX3BhZ2VUb1JlZ2lzdHJhYmxlRG9tYWluLmdldCgmcGFnZSk7CisgICAgaWYgKHJlZ2lzdHJh
YmxlRG9tYWluLnN0cmluZygpLmlzRW1wdHkoKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgYXV0
byBpdCA9IG1fcGFnZVNldHMuZmluZChyZWdpc3RyYWJsZURvbWFpbik7CisgICAgQVNTRVJUKGl0
ICE9IG1fcGFnZVNldHMuZW5kKCkpOworICAgIGlmIChpdCA9PSBtX3BhZ2VTZXRzLmVuZCgpKQor
ICAgICAgICByZXR1cm47CisKKyAgICBhdXRvJiBwYWdlU2V0cyA9IGl0LT52YWx1ZTsKKyAgICBi
b29sIGhpZ2hBY2N1cmFjeVdhc0VuYWJsZWQgPSBpc0hpZ2hBY2N1cmFjeUVuYWJsZWQocGFnZVNl
dHMpOwogCiAgICAgaWYgKGVuYWJsZWQpCi0gICAgICAgIG1faGlnaEFjY3VyYWN5UGFnZVNldC5h
ZGQocGFnZSk7CisgICAgICAgIHBhZ2VTZXRzLmhpZ2hBY2N1cmFjeVBhZ2VTZXQuYWRkKHBhZ2Up
OwogICAgIGVsc2UKLSAgICAgICAgbV9oaWdoQWNjdXJhY3lQYWdlU2V0LnJlbW92ZShwYWdlKTsK
KyAgICAgICAgcGFnZVNldHMuaGlnaEFjY3VyYWN5UGFnZVNldC5yZW1vdmUocGFnZSk7CiAKLSAg
ICBib29sIGhpZ2hBY2N1cmFjeVNob3VsZEJlRW5hYmxlZCA9IGlzSGlnaEFjY3VyYWN5RW5hYmxl
ZCgpOwotICAgIGlmIChoaWdoQWNjdXJhY3lXYXNFbmFibGVkICE9IGhpZ2hBY2N1cmFjeVNob3Vs
ZEJlRW5hYmxlZCkKLSAgICAgICAgbV9wcm9jZXNzLnBhcmVudFByb2Nlc3NDb25uZWN0aW9uKCkt
PnNlbmQoTWVzc2FnZXM6OldlYkdlb2xvY2F0aW9uTWFuYWdlclByb3h5OjpTZXRFbmFibGVIaWdo
QWNjdXJhY3koaGlnaEFjY3VyYWN5U2hvdWxkQmVFbmFibGVkKSwgMCk7CisgICAgYm9vbCBoaWdo
QWNjdXJhY3lTaG91bGRCZUVuYWJsZWQgPSBpc0hpZ2hBY2N1cmFjeUVuYWJsZWQocGFnZVNldHMp
OworICAgIGlmIChoaWdoQWNjdXJhY3lXYXNFbmFibGVkICE9IGlzSGlnaEFjY3VyYWN5RW5hYmxl
ZChwYWdlU2V0cykpCisgICAgICAgIG1fcHJvY2Vzcy5wYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigp
LT5zZW5kKE1lc3NhZ2VzOjpXZWJHZW9sb2NhdGlvbk1hbmFnZXJQcm94eTo6U2V0RW5hYmxlSGln
aEFjY3VyYWN5KHJlZ2lzdHJhYmxlRG9tYWluLCBoaWdoQWNjdXJhY3lTaG91bGRCZUVuYWJsZWQp
LCAwKTsKIH0KIAotdm9pZCBXZWJHZW9sb2NhdGlvbk1hbmFnZXI6OmRpZENoYW5nZVBvc2l0aW9u
KGNvbnN0IEdlb2xvY2F0aW9uUG9zaXRpb25EYXRhJiBwb3NpdGlvbikKK3ZvaWQgV2ViR2VvbG9j
YXRpb25NYW5hZ2VyOjpkaWRDaGFuZ2VQb3NpdGlvbihjb25zdCBXZWJDb3JlOjpSZWdpc3RyYWJs
ZURvbWFpbiYgcmVnaXN0cmFibGVEb21haW4sIGNvbnN0IEdlb2xvY2F0aW9uUG9zaXRpb25EYXRh
JiBwb3NpdGlvbikKIHsKICNpZiBFTkFCTEUoR0VPTE9DQVRJT04pCi0gICAgZm9yIChhdXRvJiBw
YWdlIDogY29weVRvVmVjdG9yKG1fcGFnZVNldCkpIHsKLSAgICAgICAgaWYgKHBhZ2UtPmNvcmVQ
YWdlKCkpCi0gICAgICAgICAgICBHZW9sb2NhdGlvbkNvbnRyb2xsZXI6OmZyb20ocGFnZS0+Y29y
ZVBhZ2UoKSktPnBvc2l0aW9uQ2hhbmdlZChwb3NpdGlvbik7CisgICAgaWYgKGF1dG8gaXQgPSBt
X3BhZ2VTZXRzLmZpbmQocmVnaXN0cmFibGVEb21haW4pOyBpdCAhPSBtX3BhZ2VTZXRzLmVuZCgp
KSB7CisgICAgICAgIGZvciAoYXV0byYgcGFnZSA6IGNvcHlUb1ZlY3RvcihpdC0+dmFsdWUucGFn
ZVNldCkpIHsKKyAgICAgICAgICAgIGlmIChwYWdlLT5jb3JlUGFnZSgpKQorICAgICAgICAgICAg
ICAgIEdlb2xvY2F0aW9uQ29udHJvbGxlcjo6ZnJvbShwYWdlLT5jb3JlUGFnZSgpKS0+cG9zaXRp
b25DaGFuZ2VkKHBvc2l0aW9uKTsKKyAgICAgICAgfQogICAgIH0KICNlbHNlCisgICAgVU5VU0VE
X1BBUkFNKHJlZ2lzdHJhYmxlRG9tYWluKTsKICAgICBVTlVTRURfUEFSQU0ocG9zaXRpb24pOwog
I2VuZGlmIC8vIEVOQUJMRShHRU9MT0NBVElPTikKIH0KIAotdm9pZCBXZWJHZW9sb2NhdGlvbk1h
bmFnZXI6OmRpZEZhaWxUb0RldGVybWluZVBvc2l0aW9uKGNvbnN0IFN0cmluZyYgZXJyb3JNZXNz
YWdlKQordm9pZCBXZWJHZW9sb2NhdGlvbk1hbmFnZXI6OmRpZEZhaWxUb0RldGVybWluZVBvc2l0
aW9uKGNvbnN0IFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluJiByZWdpc3RyYWJsZURvbWFpbiwg
Y29uc3QgU3RyaW5nJiBlcnJvck1lc3NhZ2UpCiB7CiAjaWYgRU5BQkxFKEdFT0xPQ0FUSU9OKQot
ICAgIC8vIEZJWE1FOiBBZGQgbG9jYWxpemVkIGVycm9yIHN0cmluZy4KLSAgICBhdXRvIGVycm9y
ID0gR2VvbG9jYXRpb25FcnJvcjo6Y3JlYXRlKEdlb2xvY2F0aW9uRXJyb3I6OlBvc2l0aW9uVW5h
dmFpbGFibGUsIGVycm9yTWVzc2FnZSk7Ci0KLSAgICBmb3IgKGF1dG8mIHBhZ2UgOiBjb3B5VG9W
ZWN0b3IobV9wYWdlU2V0KSkgewotICAgICAgICBpZiAocGFnZS0+Y29yZVBhZ2UoKSkKLSAgICAg
ICAgICAgIEdlb2xvY2F0aW9uQ29udHJvbGxlcjo6ZnJvbShwYWdlLT5jb3JlUGFnZSgpKS0+ZXJy
b3JPY2N1cnJlZChlcnJvci5nZXQoKSk7CisgICAgaWYgKGF1dG8gaXQgPSBtX3BhZ2VTZXRzLmZp
bmQocmVnaXN0cmFibGVEb21haW4pOyBpdCAhPSBtX3BhZ2VTZXRzLmVuZCgpKSB7CisgICAgICAg
IC8vIEZJWE1FOiBBZGQgbG9jYWxpemVkIGVycm9yIHN0cmluZy4KKyAgICAgICAgYXV0byBlcnJv
ciA9IEdlb2xvY2F0aW9uRXJyb3I6OmNyZWF0ZShHZW9sb2NhdGlvbkVycm9yOjpQb3NpdGlvblVu
YXZhaWxhYmxlLCBlcnJvck1lc3NhZ2UpOworCisgICAgICAgIGZvciAoYXV0byYgcGFnZSA6IGNv
cHlUb1ZlY3RvcihpdC0+dmFsdWUucGFnZVNldCkpIHsKKyAgICAgICAgICAgIGlmIChwYWdlLT5j
b3JlUGFnZSgpKQorICAgICAgICAgICAgICAgIEdlb2xvY2F0aW9uQ29udHJvbGxlcjo6ZnJvbShw
YWdlLT5jb3JlUGFnZSgpKS0+ZXJyb3JPY2N1cnJlZChlcnJvci5nZXQoKSk7CisgICAgICAgIH0K
ICAgICB9CiAjZWxzZQorICAgIFVOVVNFRF9QQVJBTShyZWdpc3RyYWJsZURvbWFpbik7CiAgICAg
VU5VU0VEX1BBUkFNKGVycm9yTWVzc2FnZSk7CiAjZW5kaWYgLy8gRU5BQkxFKEdFT0xPQ0FUSU9O
KQogfQogCi0jaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKLXZvaWQgV2ViR2VvbG9jYXRpb25NYW5h
Z2VyOjpyZXNldFBlcm1pc3Npb25zKCkKK2Jvb2wgV2ViR2VvbG9jYXRpb25NYW5hZ2VyOjppc1Vw
ZGF0aW5nKGNvbnN0IFBhZ2VTZXRzJiBwYWdlU2V0cykgY29uc3QKIHsKLSAgICBtX3Byb2Nlc3Mu
cmVzZXRBbGxHZW9sb2NhdGlvblBlcm1pc3Npb25zKCk7CisgICAgcmV0dXJuICFwYWdlU2V0cy5w
YWdlU2V0LmNvbXB1dGVzRW1wdHkoKTsKIH0KLSNlbmRpZiAvLyBQTEFURk9STShJT1NfRkFNSUxZ
KQogCi1ib29sIFdlYkdlb2xvY2F0aW9uTWFuYWdlcjo6aXNVcGRhdGluZygpIGNvbnN0Citib29s
IFdlYkdlb2xvY2F0aW9uTWFuYWdlcjo6aXNIaWdoQWNjdXJhY3lFbmFibGVkKGNvbnN0IFBhZ2VT
ZXRzJiBwYWdlU2V0cykgY29uc3QKIHsKLSAgICByZXR1cm4gIW1fcGFnZVNldC5jb21wdXRlc0Vt
cHR5KCk7CisgICAgcmV0dXJuICFwYWdlU2V0cy5oaWdoQWNjdXJhY3lQYWdlU2V0LmNvbXB1dGVz
RW1wdHkoKTsKIH0KIAotYm9vbCBXZWJHZW9sb2NhdGlvbk1hbmFnZXI6OmlzSGlnaEFjY3VyYWN5
RW5hYmxlZCgpIGNvbnN0CisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKK3ZvaWQgV2ViR2VvbG9j
YXRpb25NYW5hZ2VyOjpyZXNldFBlcm1pc3Npb25zKGNvbnN0IFdlYkNvcmU6OlJlZ2lzdHJhYmxl
RG9tYWluJiByZWdpc3RyYWJsZURvbWFpbikKIHsKLSAgICByZXR1cm4gIW1faGlnaEFjY3VyYWN5
UGFnZVNldC5jb21wdXRlc0VtcHR5KCk7CisgICAgYXV0byBpdCA9IG1fcGFnZVNldHMuZmluZChy
ZWdpc3RyYWJsZURvbWFpbik7CisgICAgaWYgKGl0ICE9IG1fcGFnZVNldHMuZW5kKCkpCisgICAg
ICAgIHJldHVybjsKKworICAgIGZvciAoYXV0byYgcGFnZSA6IGNvcHlUb1ZlY3RvcihpdC0+dmFs
dWUucGFnZVNldCkpIHsKKyAgICAgICAgaWYgKGF1dG8qIG1haW5GcmFtZSA9IHBhZ2UtPmNvcmVQ
YWdlKCkgPyAmcGFnZS0+Y29yZVBhZ2UoKS0+bWFpbkZyYW1lKCkgOiBudWxscHRyKQorICAgICAg
ICAgICAgbWFpbkZyYW1lLT5yZXNldEFsbEdlb2xvY2F0aW9uUGVybWlzc2lvbigpOworICAgIH0K
IH0KKyNlbmRpZiAvLyBQTEFURk9STShJT1NfRkFNSUxZKQogCiB9IC8vIG5hbWVzcGFjZSBXZWJL
aXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HZW9sb2NhdGlvbi9XZWJH
ZW9sb2NhdGlvbk1hbmFnZXIuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HZW9sb2NhdGlv
bi9XZWJHZW9sb2NhdGlvbk1hbmFnZXIuaAppbmRleCA0NDgzNTk2MzU4NzgyMTk3Y2NiYTU5Mjhl
ZmU2MjUxNTI2YzE4NTE1Li5jYjY1ODhjNmU3MTg4YmVmYmQ1NTEyM2Q0YTU1OWIyYjBiMzFhOTNh
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR2VvbG9jYXRpb24vV2ViR2Vv
bG9jYXRpb25NYW5hZ2VyLmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dlb2xvY2F0
aW9uL1dlYkdlb2xvY2F0aW9uTWFuYWdlci5oCkBAIC0yOCw2ICsyOCw3IEBACiAjaW5jbHVkZSAi
TWVzc2FnZVJlY2VpdmVyLmgiCiAjaW5jbHVkZSAiV2ViR2VvbG9jYXRpb25Qb3NpdGlvbi5oIgog
I2luY2x1ZGUgIldlYlByb2Nlc3NTdXBwbGVtZW50LmgiCisjaW5jbHVkZSA8V2ViQ29yZS9SZWdp
c3RyYWJsZURvbWFpbi5oPgogI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CiAjaW5jbHVkZSA8d3Rm
L05vbmNvcHlhYmxlLmg+CiAjaW5jbHVkZSA8d3RmL1dlYWtIYXNoU2V0Lmg+CkBAIC00NywzMSAr
NDgsMzQgQEAgY2xhc3MgV2ViR2VvbG9jYXRpb25NYW5hZ2VyIDogcHVibGljIFdlYlByb2Nlc3NT
dXBwbGVtZW50LCBwdWJsaWMgSVBDOjpNZXNzYWdlUmUKICAgICBXVEZfTUFLRV9OT05DT1BZQUJM
RShXZWJHZW9sb2NhdGlvbk1hbmFnZXIpOwogcHVibGljOgogICAgIGV4cGxpY2l0IFdlYkdlb2xv
Y2F0aW9uTWFuYWdlcihXZWJQcm9jZXNzJik7CisgICAgfldlYkdlb2xvY2F0aW9uTWFuYWdlcigp
OwogCiAgICAgc3RhdGljIGNvbnN0IGNoYXIqIHN1cHBsZW1lbnROYW1lKCk7CiAKLSAgICB2b2lk
IHJlZ2lzdGVyV2ViUGFnZShXZWJQYWdlJiwgY29uc3QgU3RyaW5nJiBhdXRob3JpemF0aW9uVG9r
ZW4pOworICAgIHZvaWQgcmVnaXN0ZXJXZWJQYWdlKFdlYlBhZ2UmLCBjb25zdCBTdHJpbmcmIGF1
dGhvcml6YXRpb25Ub2tlbiwgYm9vbCBuZWVkc0hpZ2hBY2N1cmFjeSk7CiAgICAgdm9pZCB1bnJl
Z2lzdGVyV2ViUGFnZShXZWJQYWdlJik7CiAgICAgdm9pZCBzZXRFbmFibGVIaWdoQWNjdXJhY3lG
b3JQYWdlKFdlYlBhZ2UmLCBib29sKTsKIAotICAgIHZvaWQgcmVxdWVzdFBlcm1pc3Npb24oV2Vi
Q29yZTo6R2VvbG9jYXRpb24mKTsKLQogcHJpdmF0ZToKICAgICAvLyBJUEM6Ok1lc3NhZ2VSZWNl
aXZlcgogICAgIHZvaWQgZGlkUmVjZWl2ZU1lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwgSVBDOjpE
ZWNvZGVyJikgb3ZlcnJpZGU7CiAKLSAgICBib29sIGlzVXBkYXRpbmcoKSBjb25zdDsKLSAgICBi
b29sIGlzSGlnaEFjY3VyYWN5RW5hYmxlZCgpIGNvbnN0OwotCi0gICAgdm9pZCBkaWRDaGFuZ2VQ
b3NpdGlvbihjb25zdCBXZWJDb3JlOjpHZW9sb2NhdGlvblBvc2l0aW9uRGF0YSYpOwotICAgIHZv
aWQgZGlkRmFpbFRvRGV0ZXJtaW5lUG9zaXRpb24oY29uc3QgU3RyaW5nJiBlcnJvck1lc3NhZ2Up
OworICAgIHZvaWQgZGlkQ2hhbmdlUG9zaXRpb24oY29uc3QgV2ViQ29yZTo6UmVnaXN0cmFibGVE
b21haW4mLCBjb25zdCBXZWJDb3JlOjpHZW9sb2NhdGlvblBvc2l0aW9uRGF0YSYpOworICAgIHZv
aWQgZGlkRmFpbFRvRGV0ZXJtaW5lUG9zaXRpb24oY29uc3QgV2ViQ29yZTo6UmVnaXN0cmFibGVE
b21haW4mLCBjb25zdCBTdHJpbmcmIGVycm9yTWVzc2FnZSk7CiAjaWYgUExBVEZPUk0oSU9TX0ZB
TUlMWSkKLSAgICB2b2lkIHJlc2V0UGVybWlzc2lvbnMoKTsKKyAgICB2b2lkIHJlc2V0UGVybWlz
c2lvbnMoY29uc3QgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4mKTsKICNlbmRpZiAvLyBQTEFU
Rk9STShJT1NfRkFNSUxZKQogCisgICAgc3RydWN0IFBhZ2VTZXRzIHsKKyAgICAgICAgV2Vha0hh
c2hTZXQ8V2ViUGFnZT4gcGFnZVNldDsKKyAgICAgICAgV2Vha0hhc2hTZXQ8V2ViUGFnZT4gaGln
aEFjY3VyYWN5UGFnZVNldDsKKyAgICB9OworICAgIGJvb2wgaXNVcGRhdGluZyhjb25zdCBQYWdl
U2V0cyYpIGNvbnN0OworICAgIGJvb2wgaXNIaWdoQWNjdXJhY3lFbmFibGVkKGNvbnN0IFBhZ2VT
ZXRzJikgY29uc3Q7CisKICAgICBXZWJQcm9jZXNzJiBtX3Byb2Nlc3M7Ci0gICAgV2Vha0hhc2hT
ZXQ8V2ViUGFnZT4gbV9wYWdlU2V0OwotICAgIFdlYWtIYXNoU2V0PFdlYlBhZ2U+IG1faGlnaEFj
Y3VyYWN5UGFnZVNldDsKKyAgICBIYXNoTWFwPFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluLCBQ
YWdlU2V0cz4gbV9wYWdlU2V0czsKKyAgICBIYXNoTWFwPFdlYlBhZ2UqLCBXZWJDb3JlOjpSZWdp
c3RyYWJsZURvbWFpbj4gbV9wYWdlVG9SZWdpc3RyYWJsZURvbWFpbjsKIH07CiAKIH0gLy8gbmFt
ZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dlb2xv
Y2F0aW9uL1dlYkdlb2xvY2F0aW9uTWFuYWdlci5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9HZW9sb2NhdGlvbi9XZWJHZW9sb2NhdGlvbk1hbmFnZXIubWVzc2FnZXMuaW4K
aW5kZXggNzlmM2I0Y2U0ZWZjYWYzNDg4NTdkOTkzMzI1M2Q4OTU0ZjBmMWI4Ny4uNmZjYzYwZDJl
MDhlMjZlYWI3M2MxZjcxY2Q4ODQyZGM1MTA1MmQxOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL0dlb2xvY2F0aW9uL1dlYkdlb2xvY2F0aW9uTWFuYWdlci5tZXNzYWdlcy5p
bgorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR2VvbG9jYXRpb24vV2ViR2VvbG9jYXRp
b25NYW5hZ2VyLm1lc3NhZ2VzLmluCkBAIC0yMSw5ICsyMSw5IEBACiAjIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAK
IG1lc3NhZ2VzIC0+IFdlYkdlb2xvY2F0aW9uTWFuYWdlciBOb3RSZWZDb3VudGVkIHsKLSAgICBE
aWRDaGFuZ2VQb3NpdGlvbihXZWJDb3JlOjpHZW9sb2NhdGlvblBvc2l0aW9uRGF0YSBwb3NpdGlv
bik7Ci0gICAgRGlkRmFpbFRvRGV0ZXJtaW5lUG9zaXRpb24oU3RyaW5nIGVycm9yTWVzc2FnZSk7
CisgICAgRGlkQ2hhbmdlUG9zaXRpb24oV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4gcmVnaXN0
cmFibGVEb21haW4sIFdlYkNvcmU6Okdlb2xvY2F0aW9uUG9zaXRpb25EYXRhIHBvc2l0aW9uKTsK
KyAgICBEaWRGYWlsVG9EZXRlcm1pbmVQb3NpdGlvbihXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFp
biByZWdpc3RyYWJsZURvbWFpbiwgU3RyaW5nIGVycm9yTWVzc2FnZSk7CiAjaWYgUExBVEZPUk0o
SU9TX0ZBTUlMWSkKLSAgICBSZXNldFBlcm1pc3Npb25zKCk7CisgICAgUmVzZXRQZXJtaXNzaW9u
cyhXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiByZWdpc3RyYWJsZURvbWFpbik7CiAjZW5kaWYK
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9X
ZWJHZW9sb2NhdGlvbkNsaWVudC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29y
ZVN1cHBvcnQvV2ViR2VvbG9jYXRpb25DbGllbnQuY3BwCmluZGV4IGVhMDJmMmFjMTZmNzMxYmY1
NjQyZjg2NzhkODZhNDk4MTFkOGMzODYuLmQxOGRmN2VmYWY1NmVmY2ZjOGQxNjk5YzkxY2QyNmI2
ODliYzgyNmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3Vw
cG9ydC9XZWJHZW9sb2NhdGlvbkNsaWVudC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkdlb2xvY2F0aW9uQ2xpZW50LmNwcApAQCAtNDgsOSArNDgs
OSBAQCB2b2lkIFdlYkdlb2xvY2F0aW9uQ2xpZW50OjpnZW9sb2NhdGlvbkRlc3Ryb3llZCgpCiAg
ICAgZGVsZXRlIHRoaXM7CiB9CiAKLXZvaWQgV2ViR2VvbG9jYXRpb25DbGllbnQ6OnN0YXJ0VXBk
YXRpbmcoY29uc3QgU3RyaW5nJiBhdXRob3JpemF0aW9uVG9rZW4pCit2b2lkIFdlYkdlb2xvY2F0
aW9uQ2xpZW50OjpzdGFydFVwZGF0aW5nKGNvbnN0IFN0cmluZyYgYXV0aG9yaXphdGlvblRva2Vu
LCBib29sIG5lZWRzSGlnaEFjY3VyYWN5KQogewotICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigp
LnN1cHBsZW1lbnQ8V2ViR2VvbG9jYXRpb25NYW5hZ2VyPigpLT5yZWdpc3RlcldlYlBhZ2UobV9w
YWdlLCBhdXRob3JpemF0aW9uVG9rZW4pOworICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLnN1
cHBsZW1lbnQ8V2ViR2VvbG9jYXRpb25NYW5hZ2VyPigpLT5yZWdpc3RlcldlYlBhZ2UobV9wYWdl
LCBhdXRob3JpemF0aW9uVG9rZW4sIG5lZWRzSGlnaEFjY3VyYWN5KTsKIH0KIAogdm9pZCBXZWJH
ZW9sb2NhdGlvbkNsaWVudDo6c3RvcFVwZGF0aW5nKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJHZW9sb2NhdGlvbkNsaWVudC5oIGIvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkdlb2xvY2F0aW9uQ2xpZW50
LmgKaW5kZXggYjE2ODE2NzQ4OTYyMjU0N2VjOTRlNjc5OGZiNjlkZDhmYTZkMDExYy4uNjVlYzBl
OTM1NDI4M2Q1ZmE3N2FmMTBiNGUxODBiODcxMmZhZWYwNyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkdlb2xvY2F0aW9uQ2xpZW50LmgKKysr
IGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkdlb2xvY2F0aW9u
Q2xpZW50LmgKQEAgLTMxLDcgKzMxLDcgQEAgbmFtZXNwYWNlIFdlYktpdCB7CiAKIGNsYXNzIFdl
YlBhZ2U7CiAKLWNsYXNzIFdlYkdlb2xvY2F0aW9uQ2xpZW50IDogcHVibGljIFdlYkNvcmU6Okdl
b2xvY2F0aW9uQ2xpZW50IHsKK2NsYXNzIFdlYkdlb2xvY2F0aW9uQ2xpZW50IGZpbmFsIDogcHVi
bGljIFdlYkNvcmU6Okdlb2xvY2F0aW9uQ2xpZW50IHsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9D
QVRFRDsKIHB1YmxpYzoKICAgICBXZWJHZW9sb2NhdGlvbkNsaWVudChXZWJQYWdlJiBwYWdlKQpA
QCAtNDIsMTcgKzQyLDE3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIH5XZWJHZW9sb2NhdGlvbkNs
aWVudCgpOwogCiBwcml2YXRlOgotICAgIHZvaWQgZ2VvbG9jYXRpb25EZXN0cm95ZWQoKSBvdmVy
cmlkZTsKKyAgICB2b2lkIGdlb2xvY2F0aW9uRGVzdHJveWVkKCkgZmluYWw7CiAKLSAgICB2b2lk
IHN0YXJ0VXBkYXRpbmcoY29uc3QgU3RyaW5nJiBhdXRob3JpemF0aW9uVG9rZW4pIG92ZXJyaWRl
OwotICAgIHZvaWQgc3RvcFVwZGF0aW5nKCkgb3ZlcnJpZGU7Ci0gICAgdm9pZCByZXZva2VBdXRo
b3JpemF0aW9uVG9rZW4oY29uc3QgU3RyaW5nJikgb3ZlcnJpZGU7Ci0gICAgdm9pZCBzZXRFbmFi
bGVIaWdoQWNjdXJhY3koYm9vbCkgb3ZlcnJpZGU7CisgICAgdm9pZCBzdGFydFVwZGF0aW5nKGNv
bnN0IFN0cmluZyYgYXV0aG9yaXphdGlvblRva2VuLCBib29sIG5lZWRzSGlnaEFjY3VyYWN5KSBm
aW5hbDsKKyAgICB2b2lkIHN0b3BVcGRhdGluZygpIGZpbmFsOworICAgIHZvaWQgcmV2b2tlQXV0
aG9yaXphdGlvblRva2VuKGNvbnN0IFN0cmluZyYpIGZpbmFsOworICAgIHZvaWQgc2V0RW5hYmxl
SGlnaEFjY3VyYWN5KGJvb2wpIGZpbmFsOwogCi0gICAgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpH
ZW9sb2NhdGlvblBvc2l0aW9uRGF0YT4gbGFzdFBvc2l0aW9uKCkgb3ZlcnJpZGU7CisgICAgc3Rk
OjpvcHRpb25hbDxXZWJDb3JlOjpHZW9sb2NhdGlvblBvc2l0aW9uRGF0YT4gbGFzdFBvc2l0aW9u
KCkgZmluYWw7CiAKLSAgICB2b2lkIHJlcXVlc3RQZXJtaXNzaW9uKFdlYkNvcmU6Okdlb2xvY2F0
aW9uJikgb3ZlcnJpZGU7Ci0gICAgdm9pZCBjYW5jZWxQZXJtaXNzaW9uUmVxdWVzdChXZWJDb3Jl
OjpHZW9sb2NhdGlvbiYpIG92ZXJyaWRlOworICAgIHZvaWQgcmVxdWVzdFBlcm1pc3Npb24oV2Vi
Q29yZTo6R2VvbG9jYXRpb24mKSBmaW5hbDsKKyAgICB2b2lkIGNhbmNlbFBlcm1pc3Npb25SZXF1
ZXN0KFdlYkNvcmU6Okdlb2xvY2F0aW9uJikgZmluYWw7CiAKICAgICBXZWJQYWdlJiBtX3BhZ2U7
CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3Bw
IGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3BwCmluZGV4IGRkNDViNDU4
OGJmOWRkMTI0ZTE4ZmFhOTVhMzI2ZWQzMTkzMWE0NTcuLjc5OTYxM2QzNzc0MjM2M2JmYmRjZDk1
Mjk3OTk2MjIwNmYwMjI4YTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9X
ZWJQcm9jZXNzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5j
cHAKQEAgLTE1MjcsMTYgKzE1MjcsNiBAQCB2b2lkIFdlYlByb2Nlc3M6OnBhZ2VBY3Rpdml0eVN0
YXRlRGlkQ2hhbmdlKFBhZ2VJZGVudGlmaWVyLCBPcHRpb25TZXQ8V2ViQ29yZTo6QQogICAgIH0K
IH0KIAotI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCi12b2lkIFdlYlByb2Nlc3M6OnJlc2V0QWxs
R2VvbG9jYXRpb25QZXJtaXNzaW9ucygpCi17Ci0gICAgZm9yIChhdXRvJiBwYWdlIDogbV9wYWdl
TWFwLnZhbHVlcygpKSB7Ci0gICAgICAgIGlmIChGcmFtZSogbWFpbkZyYW1lID0gcGFnZS0+bWFp
bkZyYW1lKCkpCi0gICAgICAgICAgICBtYWluRnJhbWUtPnJlc2V0QWxsR2VvbG9jYXRpb25QZXJt
aXNzaW9uKCk7Ci0gICAgfQotfQotI2VuZGlmCi0KIHZvaWQgV2ViUHJvY2Vzczo6cHJlcGFyZVRv
U3VzcGVuZChib29sIGlzU3VzcGVuc2lvbkltbWluZW50LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lk
KCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7CiAgICAgV0VCUFJPQ0VTU19SRUxFQVNFX0xPRyhQ
cm9jZXNzU3VzcGVuc2lvbiwgInByZXBhcmVUb1N1c3BlbmQ6IGlzU3VzcGVuc2lvbkltbWluZW50
PSVkIiwgaXNTdXNwZW5zaW9uSW1taW5lbnQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1dlYlByb2Nlc3MuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9j
ZXNzLmgKaW5kZXggYzVkZDIyNWRjMWI3MWRhOWNkZDRlZWRiYTBhMDdlNzYxNzgxNTc1ZS4uNTk1
YWYwYjk3NDEyOTBkYTZjNzM0YTA4ODZiODI0ZDIzYjFlZTU3ZSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvV2ViUHJvY2Vzcy5oCkBAIC0zMTAsMTAgKzMxMCw2IEBAIHB1YmxpYzoKIAogICAgIHZv
aWQgaXNKSVRFbmFibGVkKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYpOwogCi0jaWYg
UExBVEZPUk0oSU9TX0ZBTUlMWSkKLSAgICB2b2lkIHJlc2V0QWxsR2VvbG9jYXRpb25QZXJtaXNz
aW9ucygpOwotI2VuZGlmCi0KICNpZiBQTEFURk9STShXQVlMQU5EKQogICAgIFdheWxhbmRDb21w
b3NpdG9yRGlzcGxheSogd2F5bGFuZENvbXBvc2l0b3JEaXNwbGF5KCkgY29uc3QgeyByZXR1cm4g
bV93YXlsYW5kQ29tcG9zaXRvckRpc3BsYXkuZ2V0KCk7IH0KICNlbmRpZgpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViR2VvbG9jYXRpb25DbGll
bnQuaCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkdlb2xvY2F0
aW9uQ2xpZW50LmgKaW5kZXggNzdjMjgyOGQ4NTk1MzYzNWI2NGM0Yzg5OTk5MGEwYTY0ODE3MWI2
Yy4uYjA3Yzc5MDNkMjkyYTkzMzkxZTVjNDBhZWRkNjVkZWRiYWY4YzVmMSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViR2VvbG9jYXRpb25DbGll
bnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJHZW9s
b2NhdGlvbkNsaWVudC5oCkBAIC0zOSw3ICszOSw3IEBAIHB1YmxpYzoKICAgICBXZWJWaWV3ICp3
ZWJWaWV3KCkgeyByZXR1cm4gbV93ZWJWaWV3OyB9CiAKICAgICB2b2lkIGdlb2xvY2F0aW9uRGVz
dHJveWVkKCkgb3ZlcnJpZGU7Ci0gICAgdm9pZCBzdGFydFVwZGF0aW5nKGNvbnN0IFN0cmluZyYg
YXV0aG9yaXphdGlvblRva2VuKSBvdmVycmlkZTsKKyAgICB2b2lkIHN0YXJ0VXBkYXRpbmcoY29u
c3QgU3RyaW5nJiBhdXRob3JpemF0aW9uVG9rZW4sIGJvb2wgZW5hYmxlSGlnaEFjY3VyYWN5KSBv
dmVycmlkZTsKICAgICB2b2lkIHN0b3BVcGRhdGluZygpIG92ZXJyaWRlOwogI2lmIFBMQVRGT1JN
KElPU19GQU1JTFkpCiAgICAgLy8gRklYTUU6IHVuaWZ5IHRoaXMgd2l0aCBNYWMgb24gT3BlblNv
dXJjZS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0
L1dlYkdlb2xvY2F0aW9uQ2xpZW50Lm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29y
ZVN1cHBvcnQvV2ViR2VvbG9jYXRpb25DbGllbnQubW0KaW5kZXggZTc4OGE1N2RkNmY4MDdlN2Iy
NWM3NDJiYTgwMTkzNTdhMjczNGQzOC4uYThiODUyMWUyZGE0NzE4ZGMxNGI0MzcwYjFhNWI0Yjhk
NjMyODU4OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBv
cnQvV2ViR2VvbG9jYXRpb25DbGllbnQubW0KKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMv
V2ViQ29yZVN1cHBvcnQvV2ViR2VvbG9jYXRpb25DbGllbnQubW0KQEAgLTgzLDkgKzgzLDE2IEBA
IHZvaWQgV2ViR2VvbG9jYXRpb25DbGllbnQ6Omdlb2xvY2F0aW9uRGVzdHJveWVkKCkKICAgICBk
ZWxldGUgdGhpczsKIH0KIAotdm9pZCBXZWJHZW9sb2NhdGlvbkNsaWVudDo6c3RhcnRVcGRhdGlu
Zyhjb25zdCBTdHJpbmcmIGF1dGhvcml6YXRpb25Ub2tlbikKK3ZvaWQgV2ViR2VvbG9jYXRpb25D
bGllbnQ6OnN0YXJ0VXBkYXRpbmcoY29uc3QgU3RyaW5nJiBhdXRob3JpemF0aW9uVG9rZW4sIGJv
b2wgZW5hYmxlSGlnaEFjY3VyYWN5KQogewogICAgIFVOVVNFRF9QQVJBTShhdXRob3JpemF0aW9u
VG9rZW4pOworI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCisgICAgaWYgKGVuYWJsZUhpZ2hBY2N1
cmFjeSkKKyAgICAgICAgc2V0RW5hYmxlSGlnaEFjY3VyYWN5KHRydWUpOworI2Vsc2UKKyAgICBV
TlVTRURfUEFSQU0oZW5hYmxlSGlnaEFjY3VyYWN5KTsKKyNlbmRpZgorCiAgICAgW1ttX3dlYlZp
ZXcgX2dlb2xvY2F0aW9uUHJvdmlkZXJdIHJlZ2lzdGVyV2ViVmlldzptX3dlYlZpZXddOwogfQog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJH
ZW9sb2NhdGlvbkNsaWVudC5jcHAgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJDb3JlU3Vw
cG9ydC9XZWJHZW9sb2NhdGlvbkNsaWVudC5jcHAKaW5kZXggZTFmY2EyNzcyNDk2MTU0YTRlMDcw
ZTRkZmRhN2U3N2U5NzM1ODJjMS4uYWM1NDUxNGM2NDJlYTBlNWY4YWYzMzY5ZTFiYmJhZTBjMzkw
NzFiNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViQ29yZVN1cHBvcnQv
V2ViR2VvbG9jYXRpb25DbGllbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dl
YkNvcmVTdXBwb3J0L1dlYkdlb2xvY2F0aW9uQ2xpZW50LmNwcApAQCAtNDgsOSArNDgsMTAgQEAg
dm9pZCBXZWJHZW9sb2NhdGlvbkNsaWVudDo6Z2VvbG9jYXRpb25EZXN0cm95ZWQoKQogICAgIGRl
bGV0ZSB0aGlzOwogfQogCi12b2lkIFdlYkdlb2xvY2F0aW9uQ2xpZW50OjpzdGFydFVwZGF0aW5n
KGNvbnN0IFN0cmluZyYgYXV0aG9yaXphdGlvblRva2VuKQordm9pZCBXZWJHZW9sb2NhdGlvbkNs
aWVudDo6c3RhcnRVcGRhdGluZyhjb25zdCBTdHJpbmcmIGF1dGhvcml6YXRpb25Ub2tlbiwgYm9v
bCBlbmFibGVIaWdoQWNjdXJhY3kpCiB7CiAgICAgVU5VU0VEX1BBUkFNKGF1dGhvcml6YXRpb25U
b2tlbik7CisgICAgVU5VU0VEX1BBUkFNKGVuYWJsZUhpZ2hBY2N1cmFjeSk7CiAgICAgQ09NUHRy
PElXZWJHZW9sb2NhdGlvblByb3ZpZGVyPiBwcm92aWRlcjsKICAgICBpZiAoRkFJTEVEKG1fd2Vi
Vmlldy0+Z2VvbG9jYXRpb25Qcm92aWRlcigmcHJvdmlkZXIpKSkKICAgICAgICAgcmV0dXJuOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViQ29yZVN1cHBvcnQvV2ViR2Vv
bG9jYXRpb25DbGllbnQuaCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkNvcmVTdXBwb3J0
L1dlYkdlb2xvY2F0aW9uQ2xpZW50LmgKaW5kZXggMTk1NzQxN2I1NWQ3ZTVkMmY5YjcxZTVjOWQ5
YzMwM2RmZWY0ZTE4Ni4uNWI4ZTk0NDRmMjFmZWQ0M2VkZjI1OTFhMmJhMTVkYTNiZDQ0ZjQ0YSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViQ29yZVN1cHBvcnQvV2ViR2Vv
bG9jYXRpb25DbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJDb3JlU3Vw
cG9ydC9XZWJHZW9sb2NhdGlvbkNsaWVudC5oCkBAIC00MSw3ICs0MSw3IEBAIHB1YmxpYzoKICAg
ICBXZWJHZW9sb2NhdGlvbkNsaWVudChXZWJWaWV3Kik7CiAKICAgICB2b2lkIGdlb2xvY2F0aW9u
RGVzdHJveWVkKCkgZmluYWw7Ci0gICAgdm9pZCBzdGFydFVwZGF0aW5nKGNvbnN0IFN0cmluZyYg
YXV0aG9yaXphdGlvblRva2VuKSBmaW5hbDsKKyAgICB2b2lkIHN0YXJ0VXBkYXRpbmcoY29uc3Qg
U3RyaW5nJiBhdXRob3JpemF0aW9uVG9rZW4sIGJvb2wgZW5hYmxlSGlnaEFjY3VyYWN5KSBmaW5h
bDsKICAgICB2b2lkIHN0b3BVcGRhdGluZygpIGZpbmFsOwogICAgIHZvaWQgc2V0RW5hYmxlSGln
aEFjY3VyYWN5KGJvb2wpIGZpbmFsIHsgfQogICAgIHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6R2Vv
bG9jYXRpb25Qb3NpdGlvbkRhdGE+IGxhc3RQb3NpdGlvbigpIGZpbmFsOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>452079</attachid>
            <date>2022-02-15 13:11:58 -0800</date>
            <delta_ts>2022-02-15 13:34:41 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-236566-20220215131157.patch</filename>
            <type>text/plain</type>
            <size>110147</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg5ODM4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IGY2MDY5ODliY2RhNjQyMTdkZTJlNzcw
ODM4NmYzNzA2N2ExYThkZTQuLjE4NzM2NzA0OWU1NTRiZmUyMGNjNWM3ZGQ0OThiZjJjZTVjYWNi
MzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMTUgQEAKKzIwMjItMDItMTMgIENocmlzIER1bWV6ICA8Y2R1bWV6
QGFwcGxlLmNvbT4KKworICAgICAgICBEbyBwcmVsaW1pbmFyeSB3b3JrIHRvIHBhc3MgZG9tYWlu
IG5hbWVzIHRvIENvcmVMb2NhdGlvbgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MjM2NTY2CisgICAgICAgIDxyZGFyOi8vODg3NjE0MTM+CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgRGFyaW4gQWRsZXIuCisKKyAgICAgICAgQWRkIGJ1aWxkIHRpbWUgZmxh
ZyBmb3IgcGFzc2luZyB3ZWJzaXRlIGlkZW50aWZpZXJzIHRvIENvcmVMb2NhdGlvbi4KKworICAg
ICAgICAqIHd0Zi9QbGF0Zm9ybUhhdmUuaDoKKwogMjAyMi0wMi0xNSAgUm9iaW4gTW9yaXNzZXQg
IDxybW9yaXNzZXRAYXBwbGUuY29tPgogCiAgICAgICAgIFtXR1NMXSBJbXBsZW1lbnQgZW5vdWdo
IG9mIHRoZSBsZXhlciBmb3IgdGhlIHNpbXBsZXN0IHNoYWRlcnMKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCAyMzNh
NGMzZjE4ODg5YmRlYWQ3NDc4YjdmNjM0NzU5YWJkMTdmM2VlLi4wNjIzYjZhNWViYTBkMTU0NzAy
N2VhNDYwYzczZTJlYmU0YWY0YjM1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VM
b2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNTQgQEAKKzIwMjIt
MDItMTMgIENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KKworICAgICAgICBEbyBwcmVs
aW1pbmFyeSB3b3JrIHRvIHBhc3MgZG9tYWluIG5hbWVzIHRvIENvcmVMb2NhdGlvbgorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjM2NTY2CisgICAgICAg
IDxyZGFyOi8vODg3NjE0MTM+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgRGFyaW4gQWRsZXIuCisK
KyAgICAgICAgRG8gcHJlbGltaW5hcnkgd29yayB0byBwYXNzIGRvbWFpbiBuYW1lcyB0byBDb3Jl
TG9jYXRpb24gd2hlbiB1c2luZyB0aGUgR2VvbG9jYXRpb24gQVBJLgorICAgICAgICBUaGlzIHBp
cGVzIHRoZSBkb21haW4gbmFtZXMgYWxsIHRoZSB3YXkgZnJvbSB0aGUgR2VvbG9jYXRpb24gQVBJ
IHRvIHRoZSBDb3JlTG9jYXRpb24gY2FsbHMKKyAgICAgICAgYnV0IGRvZXNuJ3QgeWV0IHBhc3Mg
dGhlIGRvbWFpbiB0byBDb3JlTG9jYXRpb24gZHVlIHRvIDxyZGFyOi8vODg4MzQzMDE+LiBJIHdp
bGwgZm9sbG93LXVwCisgICAgICAgIG9uY2UgPHJkYXI6Ly84ODgzNDMwMT4gaXMgZml4ZWQuCisK
KyAgICAgICAgKiBNb2R1bGVzL2dlb2xvY2F0aW9uL0dlb2xvY2F0aW9uQ2xpZW50Lmg6CisgICAg
ICAgICogTW9kdWxlcy9nZW9sb2NhdGlvbi9HZW9sb2NhdGlvbkNvbnRyb2xsZXIuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6R2VvbG9jYXRpb25Db250cm9sbGVyOjpkaWROYXZpZ2F0ZVBhZ2UpOgor
ICAgICAgICAoV2ViQ29yZTo6R2VvbG9jYXRpb25Db250cm9sbGVyOjphZGRPYnNlcnZlcik6Cisg
ICAgICAgIChXZWJDb3JlOjpHZW9sb2NhdGlvbkNvbnRyb2xsZXI6OnJlbW92ZU9ic2VydmVyKToK
KyAgICAgICAgKFdlYkNvcmU6Okdlb2xvY2F0aW9uQ29udHJvbGxlcjo6YWN0aXZpdHlTdGF0ZURp
ZENoYW5nZSk6CisgICAgICAgIChXZWJDb3JlOjpHZW9sb2NhdGlvbkNvbnRyb2xsZXI6OnN0YXJ0
VXBkYXRpbmdJZk5lY2Vzc2FyeSk6CisgICAgICAgIChXZWJDb3JlOjpHZW9sb2NhdGlvbkNvbnRy
b2xsZXI6OnN0b3BVcGRhdGluZ0lmTmVjZXNzYXJ5KToKKyAgICAgICAgKiBNb2R1bGVzL2dlb2xv
Y2F0aW9uL0dlb2xvY2F0aW9uQ29udHJvbGxlci5oOgorICAgICAgICAoV2ViQ29yZTo6R2VvbG9j
YXRpb25Db250cm9sbGVyOjpuZWVkc0hpZ2hBY2N1cmFjeSBjb25zdCk6CisgICAgICAgICogTW9k
dWxlcy9nZW9sb2NhdGlvbi9HZW9sb2NhdGlvblBvc2l0aW9uRGF0YS5oOgorICAgICAgICAqIE1v
ZHVsZXMvZ2VvbG9jYXRpb24vaW9zL0dlb2xvY2F0aW9uUG9zaXRpb25EYXRhSU9TLm1tOgorICAg
ICAgICAqIFNvdXJjZXNDb2NvYS50eHQ6CisgICAgICAgICogV2ViQ29yZS54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qOgorICAgICAgICAqIHBhZ2UvUGFnZS5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpQYWdlOjpkaWRDb21taXRMb2FkKToKKyAgICAgICAgKiBwbGF0Zm9ybS9jb2NvYS9Db3JlTG9j
YXRpb25HZW9sb2NhdGlvblByb3ZpZGVyLmg6IENvcGllZCBmcm9tIFNvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvZ2VvbG9jYXRpb24vR2VvbG9jYXRpb25DbGllbnQuaC4KKyAgICAgICAgKiBwbGF0Zm9y
bS9jb2NvYS9Db3JlTG9jYXRpb25HZW9sb2NhdGlvblByb3ZpZGVyLm1tOiBBZGRlZC4KKyAgICAg
ICAgKGlzQXV0aG9yaXphdGlvbkdyYW50ZWQpOgorICAgICAgICAoLVtXZWJDTExvY2F0aW9uTWFu
YWdlciBpbml0V2l0aFdlYnNpdGVJZGVudGlmaWVyOmNsaWVudDpdKToKKyAgICAgICAgKC1bV2Vi
Q0xMb2NhdGlvbk1hbmFnZXIgZGVhbGxvY10pOgorICAgICAgICAoLVtXZWJDTExvY2F0aW9uTWFu
YWdlciBzdGFydF0pOgorICAgICAgICAoLVtXZWJDTExvY2F0aW9uTWFuYWdlciBzdG9wXSk6Cisg
ICAgICAgICgtW1dlYkNMTG9jYXRpb25NYW5hZ2VyIHNldEVuYWJsZUhpZ2hBY2N1cmFjeTpdKToK
KyAgICAgICAgKC1bV2ViQ0xMb2NhdGlvbk1hbmFnZXIgcmVxdWVzdEdlb2xvY2F0aW9uQXV0aG9y
aXphdGlvbl0pOgorICAgICAgICAoLVtXZWJDTExvY2F0aW9uTWFuYWdlciBsb2NhdGlvbk1hbmFn
ZXJEaWRDaGFuZ2VBdXRob3JpemF0aW9uOl0pOgorICAgICAgICAoLVtXZWJDTExvY2F0aW9uTWFu
YWdlciBsb2NhdGlvbk1hbmFnZXI6ZGlkVXBkYXRlTG9jYXRpb25zOl0pOgorICAgICAgICAoLVtX
ZWJDTExvY2F0aW9uTWFuYWdlciBsb2NhdGlvbk1hbmFnZXI6ZGlkRmFpbFdpdGhFcnJvcjpdKToK
KyAgICAgICAgKFdlYkNvcmU6OkNvcmVMb2NhdGlvbkdlb2xvY2F0aW9uUHJvdmlkZXI6OkNvcmVM
b2NhdGlvbkdlb2xvY2F0aW9uUHJvdmlkZXIpOgorICAgICAgICAoV2ViQ29yZTo6Q29yZUxvY2F0
aW9uR2VvbG9jYXRpb25Qcm92aWRlcjo6fkNvcmVMb2NhdGlvbkdlb2xvY2F0aW9uUHJvdmlkZXIp
OgorICAgICAgICAoV2ViQ29yZTo6Q29yZUxvY2F0aW9uR2VvbG9jYXRpb25Qcm92aWRlcjo6c3Rh
cnQpOgorICAgICAgICAoV2ViQ29yZTo6Q29yZUxvY2F0aW9uR2VvbG9jYXRpb25Qcm92aWRlcjo6
c3RvcCk6CisgICAgICAgIChXZWJDb3JlOjpDb3JlTG9jYXRpb25HZW9sb2NhdGlvblByb3ZpZGVy
OjpzZXRFbmFibGVIaWdoQWNjdXJhY3kpOgorICAgICAgICAoV2ViQ29yZTo6Q29yZUxvY2F0aW9u
R2VvbG9jYXRpb25Qcm92aWRlcjo6cmVxdWVzdEF1dGhvcml6YXRpb24pOgorICAgICAgICAqIHBs
YXRmb3JtL21vY2svR2VvbG9jYXRpb25DbGllbnRNb2NrLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
Okdlb2xvY2F0aW9uQ2xpZW50TW9jazo6c3RhcnRVcGRhdGluZyk6CisgICAgICAgICogcGxhdGZv
cm0vbW9jay9HZW9sb2NhdGlvbkNsaWVudE1vY2suaDoKKwogMjAyMi0wMi0xNSAgQW50dGkgS29p
dmlzdG8gIDxhbnR0aUBhcHBsZS5jb20+CiAKICAgICAgICAgW0NTUyBDb250YWluZXIgUXVlcmll
c10gU3VwcG9ydCBhbGwgc2l6ZSBmZWF0dXJlcwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwppbmRleCA2OGJmZGI0ODczYWEwNWJm
YjFkNjIzNTFkZWYzNjQ0ZmQ3MDkzZTA3Li5kMDkyNGFhNzQxMDhmOTNmMzE4NjU0MzA4MzljNGYz
OTgyMTU1YmIxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZworKysgYi9Tb3Vy
Y2UvV2ViS2l0L0NoYW5nZUxvZwpAQCAtMSwzICsxLDk0IEBACisyMDIyLTAyLTEzICBDaHJpcyBE
dW1leiAgPGNkdW1lekBhcHBsZS5jb20+CisKKyAgICAgICAgRG8gcHJlbGltaW5hcnkgd29yayB0
byBwYXNzIGRvbWFpbiBuYW1lcyB0byBDb3JlTG9jYXRpb24KKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzNjU2NgorICAgICAgICA8cmRhcjovLzg4NzYx
NDEzPgorCisgICAgICAgIFJldmlld2VkIGJ5IERhcmluIEFkbGVyLgorCisgICAgICAgIERvIHBy
ZWxpbWluYXJ5IHdvcmsgdG8gcGFzcyBkb21haW4gbmFtZXMgdG8gQ29yZUxvY2F0aW9uIHdoZW4g
dXNpbmcgdGhlIEdlb2xvY2F0aW9uIEFQSS4KKyAgICAgICAgVGhpcyBwaXBlcyB0aGUgZG9tYWlu
IG5hbWVzIGFsbCB0aGUgd2F5IGZyb20gdGhlIEdlb2xvY2F0aW9uIEFQSSB0byB0aGUgQ29yZUxv
Y2F0aW9uIGNhbGxzCisgICAgICAgIGJ1dCBkb2Vzbid0IHlldCBwYXNzIHRoZSBkb21haW4gdG8g
Q29yZUxvY2F0aW9uIGR1ZSB0byA8cmRhcjovLzg4ODM0MzAxPi4gSSB3aWxsIGZvbGxvdy11cAor
ICAgICAgICBvbmNlIDxyZGFyOi8vODg4MzQzMDE+IGlzIGZpeGVkLgorCisgICAgICAgICogU291
cmNlc0NvY29hLnR4dDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0MvV0tHZW9sb2NhdGlvbk1h
bmFnZXIuY3BwOgorICAgICAgICAoV0tHZW9sb2NhdGlvbk1hbmFnZXJTZXRQcm92aWRlcik6Cisg
ICAgICAgICogVUlQcm9jZXNzL0NvY29hL1dlYkdlb2xvY2F0aW9uTWFuYWdlclByb3h5Q29jb2Eu
Y3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYktpdDo6V2ViR2VvbG9jYXRpb25NYW5hZ2VyUHJveHk6
OnBvc2l0aW9uQ2hhbmdlZCk6CisgICAgICAgIChXZWJLaXQ6OldlYkdlb2xvY2F0aW9uTWFuYWdl
clByb3h5OjplcnJvck9jY3VycmVkKToKKyAgICAgICAgKFdlYktpdDo6V2ViR2VvbG9jYXRpb25N
YW5hZ2VyUHJveHk6OnJlc2V0R2VvbG9jYXRpb24pOgorICAgICAgICAoV2ViS2l0OjpXZWJHZW9s
b2NhdGlvbk1hbmFnZXJQcm94eTo6aXNVcGRhdGluZyBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6
OldlYkdlb2xvY2F0aW9uTWFuYWdlclByb3h5Ojppc0hpZ2hBY2N1cmFjeUVuYWJsZWQgY29uc3Qp
OgorICAgICAgICAoV2ViS2l0OjpXZWJHZW9sb2NhdGlvbk1hbmFnZXJQcm94eTo6cHJvdmlkZXJT
dGFydFVwZGF0aW5nKToKKyAgICAgICAgKFdlYktpdDo6V2ViR2VvbG9jYXRpb25NYW5hZ2VyUHJv
eHk6OnByb3ZpZGVyU3RvcFVwZGF0aW5nKToKKyAgICAgICAgKFdlYktpdDo6V2ViR2VvbG9jYXRp
b25NYW5hZ2VyUHJveHk6OnByb3ZpZGVyU2V0RW5hYmxlZEhpZ2hBY2N1cmFjeSk6CisgICAgICAg
ICogVUlQcm9jZXNzL1dlYkdlb2xvY2F0aW9uTWFuYWdlclByb3h5LmNwcDoKKyAgICAgICAgKFdl
YktpdDo6V2ViR2VvbG9jYXRpb25NYW5hZ2VyUHJveHk6OldlYkdlb2xvY2F0aW9uTWFuYWdlclBy
b3h5KToKKyAgICAgICAgKFdlYktpdDo6V2ViR2VvbG9jYXRpb25NYW5hZ2VyUHJveHk6OnByb2Nl
c3NQb29sRGVzdHJveWVkKToKKyAgICAgICAgKFdlYktpdDo6V2ViR2VvbG9jYXRpb25NYW5hZ2Vy
UHJveHk6OnByb2Nlc3NEaWRDbG9zZSk6CisgICAgICAgIChXZWJLaXQ6OldlYkdlb2xvY2F0aW9u
TWFuYWdlclByb3h5Ojpwcm92aWRlckRpZENoYW5nZVBvc2l0aW9uKToKKyAgICAgICAgKFdlYktp
dDo6V2ViR2VvbG9jYXRpb25NYW5hZ2VyUHJveHk6OnByb3ZpZGVyRGlkRmFpbFRvRGV0ZXJtaW5l
UG9zaXRpb24pOgorICAgICAgICAoV2ViS2l0OjpXZWJHZW9sb2NhdGlvbk1hbmFnZXJQcm94eTo6
c3RhcnRVcGRhdGluZyk6CisgICAgICAgIChXZWJLaXQ6OldlYkdlb2xvY2F0aW9uTWFuYWdlclBy
b3h5OjpzdG9wVXBkYXRpbmcpOgorICAgICAgICAoV2ViS2l0OjpXZWJHZW9sb2NhdGlvbk1hbmFn
ZXJQcm94eTo6c2V0RW5hYmxlSGlnaEFjY3VyYWN5KToKKyAgICAgICAgKFdlYktpdDo6V2ViR2Vv
bG9jYXRpb25NYW5hZ2VyUHJveHk6OnNldFByb3ZpZGVyKToKKyAgICAgICAgKFdlYktpdDo6V2Vi
R2VvbG9jYXRpb25NYW5hZ2VyUHJveHk6OmlzVXBkYXRpbmcgY29uc3QpOgorICAgICAgICAoV2Vi
S2l0OjpXZWJHZW9sb2NhdGlvbk1hbmFnZXJQcm94eTo6aXNIaWdoQWNjdXJhY3lFbmFibGVkIGNv
bnN0KToKKyAgICAgICAgKFdlYktpdDo6V2ViR2VvbG9jYXRpb25NYW5hZ2VyUHJveHk6OnByb3Zp
ZGVyU3RhcnRVcGRhdGluZyk6CisgICAgICAgIChXZWJLaXQ6OldlYkdlb2xvY2F0aW9uTWFuYWdl
clByb3h5Ojpwcm92aWRlclN0b3BVcGRhdGluZyk6CisgICAgICAgIChXZWJLaXQ6OldlYkdlb2xv
Y2F0aW9uTWFuYWdlclByb3h5Ojpwcm92aWRlclNldEVuYWJsZWRIaWdoQWNjdXJhY3kpOgorICAg
ICAgICAoV2ViS2l0OjpXZWJHZW9sb2NhdGlvbk1hbmFnZXJQcm94eTo6cmVzZXRQZXJtaXNzaW9u
cyk6IERlbGV0ZWQuCisgICAgICAgIChXZWJLaXQ6OldlYkdlb2xvY2F0aW9uTWFuYWdlclByb3h5
OjpyZW1vdmVSZXF1ZXN0ZXIpOiBEZWxldGVkLgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJHZW9s
b2NhdGlvbk1hbmFnZXJQcm94eS5oOgorICAgICAgICAoV2ViS2l0OjpXZWJHZW9sb2NhdGlvbk1h
bmFnZXJQcm94eTo6bGFzdFBvc2l0aW9uIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYktp
dDo6V2ViR2VvbG9jYXRpb25NYW5hZ2VyUHJveHk6OmlzVXBkYXRpbmcgY29uc3QpOiBEZWxldGVk
LgorICAgICAgICAoV2ViS2l0OjpXZWJHZW9sb2NhdGlvbk1hbmFnZXJQcm94eTo6aXNIaWdoQWNj
dXJhY3lFbmFibGVkIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViR2Vv
bG9jYXRpb25NYW5hZ2VyUHJveHkubWVzc2FnZXMuaW46CisgICAgICAgICogVUlQcm9jZXNzL2lv
cy9XS0dlb2xvY2F0aW9uUHJvdmlkZXJJT1MubW06CisgICAgICAgICgtW1dLR2VvbG9jYXRpb25Q
cm92aWRlcklPUyBfc3RhcnRVcGRhdGluZ10pOgorICAgICAgICAoLVtXS0dlb2xvY2F0aW9uUHJv
dmlkZXJJT1MgX3N0b3BVcGRhdGluZ10pOgorICAgICAgICAoLVtXS0dlb2xvY2F0aW9uUHJvdmlk
ZXJJT1MgX3NldEVuYWJsZUhpZ2hBY2N1cmFjeTpdKToKKyAgICAgICAgKC1bV0tHZW9sb2NhdGlv
blByb3ZpZGVySU9TIGluaXRXaXRoUHJvY2Vzc1Bvb2w6XSk6CisgICAgICAgICgtW1dLR2VvbG9j
YXRpb25Qcm92aWRlcklPUyBkZWNpZGVQb2xpY3lGb3JHZW9sb2NhdGlvblJlcXVlc3RGcm9tT3Jp
Z2luOmNvbXBsZXRpb25IYW5kbGVyOnZpZXc6XSk6CisgICAgICAgICgtW1dLR2VvbG9jYXRpb25Q
cm92aWRlcklPUyBnZW9sb2NhdGlvbkF1dGhvcml6YXRpb25HcmFudGVkXSk6CisgICAgICAgICgt
W1dLR2VvbG9jYXRpb25Qcm92aWRlcklPUyBwb3NpdGlvbkNoYW5nZWQ6XSk6CisgICAgICAgICgt
W1dLR2VvbG9jYXRpb25Qcm92aWRlcklPUyBlcnJvck9jY3VycmVkOl0pOgorICAgICAgICAoLVtX
S0dlb2xvY2F0aW9uUHJvdmlkZXJJT1MgcmVzZXRHZW9sb2NhdGlvbl0pOgorICAgICAgICAoc3Rh
cnRVcGRhdGluZ0NhbGxiYWNrKTogRGVsZXRlZC4KKyAgICAgICAgKHN0b3BVcGRhdGluZ0NhbGxi
YWNrKTogRGVsZXRlZC4KKyAgICAgICAgKHNldEVuYWJsZUhpZ2hBY2N1cmFjeSk6IERlbGV0ZWQu
CisgICAgICAgICgtW1dLTGVnYWN5Q29yZUxvY2F0aW9uUHJvdmlkZXIgc2V0TGlzdGVuZXI6XSk6
IERlbGV0ZWQuCisgICAgICAgICgtW1dLTGVnYWN5Q29yZUxvY2F0aW9uUHJvdmlkZXIgcmVxdWVz
dEdlb2xvY2F0aW9uQXV0aG9yaXphdGlvbl0pOiBEZWxldGVkLgorICAgICAgICAoLVtXS0xlZ2Fj
eUNvcmVMb2NhdGlvblByb3ZpZGVyIHN0YXJ0XSk6IERlbGV0ZWQuCisgICAgICAgICgtW1dLTGVn
YWN5Q29yZUxvY2F0aW9uUHJvdmlkZXIgc3RvcF0pOiBEZWxldGVkLgorICAgICAgICAoLVtXS0xl
Z2FjeUNvcmVMb2NhdGlvblByb3ZpZGVyIHNldEVuYWJsZUhpZ2hBY2N1cmFjeTpdKTogRGVsZXRl
ZC4KKyAgICAgICAgKC1bV0tMZWdhY3lDb3JlTG9jYXRpb25Qcm92aWRlciBnZW9sb2NhdGlvbkF1
dGhvcml6YXRpb25HcmFudGVkXSk6IERlbGV0ZWQuCisgICAgICAgICgtW1dLTGVnYWN5Q29yZUxv
Y2F0aW9uUHJvdmlkZXIgZ2VvbG9jYXRpb25BdXRob3JpemF0aW9uRGVuaWVkXSk6IERlbGV0ZWQu
CisgICAgICAgICgtW1dLTGVnYWN5Q29yZUxvY2F0aW9uUHJvdmlkZXIgcG9zaXRpb25DaGFuZ2Vk
Ol0pOiBEZWxldGVkLgorICAgICAgICAoLVtXS0xlZ2FjeUNvcmVMb2NhdGlvblByb3ZpZGVyIGVy
cm9yT2NjdXJyZWQ6XSk6IERlbGV0ZWQuCisgICAgICAgICgtW1dLTGVnYWN5Q29yZUxvY2F0aW9u
UHJvdmlkZXIgcmVzZXRHZW9sb2NhdGlvbl0pOiBEZWxldGVkLgorICAgICAgICAqIFdlYktpdC54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIFdlYlByb2Nlc3MvR2VvbG9jYXRp
b24vV2ViR2VvbG9jYXRpb25NYW5hZ2VyLmNwcDoKKyAgICAgICAgKFdlYktpdDo6cmVnaXN0cmFi
bGVEb21haW5Gb3JQYWdlKToKKyAgICAgICAgKFdlYktpdDo6V2ViR2VvbG9jYXRpb25NYW5hZ2Vy
OjpyZWdpc3RlcldlYlBhZ2UpOgorICAgICAgICAoV2ViS2l0OjpXZWJHZW9sb2NhdGlvbk1hbmFn
ZXI6OnVucmVnaXN0ZXJXZWJQYWdlKToKKyAgICAgICAgKFdlYktpdDo6V2ViR2VvbG9jYXRpb25N
YW5hZ2VyOjpzZXRFbmFibGVIaWdoQWNjdXJhY3lGb3JQYWdlKToKKyAgICAgICAgKFdlYktpdDo6
V2ViR2VvbG9jYXRpb25NYW5hZ2VyOjpkaWRDaGFuZ2VQb3NpdGlvbik6CisgICAgICAgIChXZWJL
aXQ6OldlYkdlb2xvY2F0aW9uTWFuYWdlcjo6ZGlkRmFpbFRvRGV0ZXJtaW5lUG9zaXRpb24pOgor
ICAgICAgICAoV2ViS2l0OjpXZWJHZW9sb2NhdGlvbk1hbmFnZXI6OnJlc2V0UGVybWlzc2lvbnMp
OgorICAgICAgICAoV2ViS2l0OjpXZWJHZW9sb2NhdGlvbk1hbmFnZXI6OmlzVXBkYXRpbmcgY29u
c3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViS2l0OjpXZWJHZW9sb2NhdGlvbk1hbmFnZXI6Omlz
SGlnaEFjY3VyYWN5RW5hYmxlZCBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgICogV2ViUHJvY2Vz
cy9HZW9sb2NhdGlvbi9XZWJHZW9sb2NhdGlvbk1hbmFnZXIuaDoKKyAgICAgICAgKiBXZWJQcm9j
ZXNzL0dlb2xvY2F0aW9uL1dlYkdlb2xvY2F0aW9uTWFuYWdlci5tZXNzYWdlcy5pbjoKKyAgICAg
ICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkdlb2xvY2F0aW9uQ2xpZW50LmNwcDoK
KyAgICAgICAgKFdlYktpdDo6V2ViR2VvbG9jYXRpb25DbGllbnQ6OnN0YXJ0VXBkYXRpbmcpOgor
ICAgICAgICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViR2VvbG9jYXRpb25DbGllbnQu
aDoKKyAgICAgICAgKFdlYktpdDo6V2ViR2VvbG9jYXRpb25DbGllbnQ6OldlYkdlb2xvY2F0aW9u
Q2xpZW50KTogRGVsZXRlZC4KKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3BwOgor
ICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzOjpyZXNldEFsbEdlb2xvY2F0aW9uUGVybWlzc2lv
bnMpOiBEZWxldGVkLgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUHJvY2Vzcy5oOgorCiAyMDIy
LTAyLTE1ICBNZWdhbiBHYXJkbmVyICA8bWVnYW5fZ2FyZG5lckBhcHBsZS5jb20+CiAKICAgICAg
ICAgSW1wbGVtZW50IGFkZGl0aW9uYWwgUmV2ZWVhbCBtZXRob2RzLgpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMv
Q2hhbmdlTG9nCmluZGV4IDY4MDM5NDg1OGExNWI4YTI1Njk2YWFlYzdjOGQ5NGFhNzNhZDcyMjMu
Ljk5Mzg2NTg0M2E3ZTg4ZTFmZjdkODRkY2Y5N2IxZTllMDcyMjZmYzYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5
L21hYy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNSBAQAorMjAyMi0wMi0xMyAgQ2hyaXMgRHVtZXog
IDxjZHVtZXpAYXBwbGUuY29tPgorCisgICAgICAgIERvIHByZWxpbWluYXJ5IHdvcmsgdG8gcGFz
cyBkb21haW4gbmFtZXMgdG8gQ29yZUxvY2F0aW9uCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzY1NjYKKyAgICAgICAgPHJkYXI6Ly84ODc2MTQxMz4K
KworICAgICAgICBSZXZpZXdlZCBieSBEYXJpbiBBZGxlci4KKworICAgICAgICAqIFdlYkNvcmVT
dXBwb3J0L1dlYkdlb2xvY2F0aW9uQ2xpZW50Lmg6CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQv
V2ViR2VvbG9jYXRpb25DbGllbnQubW06CisgICAgICAgIChXZWJHZW9sb2NhdGlvbkNsaWVudDo6
c3RhcnRVcGRhdGluZyk6CisKIDIwMjItMDItMTEgIENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxl
LmNvbT4KIAogICAgICAgICBVbnJldmlld2VkLCBmaXggYnVpbGQgd2l0aCB0aGUgbGF0ZXN0IGlP
UyBTREsuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9DaGFuZ2VMb2cgYi9T
b3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9DaGFuZ2VMb2cKaW5kZXggNjk1YWE5MTA1MzllZjAyMTA1
ZjUyMTkzMDRjMDk3ZTEwMzEyNjQ1NS4uZjQwMGYzNjdkMDUyYWJlNTg3NTlhNWQ3MmM1Mjk2NTFk
ZDk5MTQzZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vQ2hhbmdlTG9nCisr
KyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE1IEBACisy
MDIyLTAyLTEzICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CisKKyAgICAgICAgRG8g
cHJlbGltaW5hcnkgd29yayB0byBwYXNzIGRvbWFpbiBuYW1lcyB0byBDb3JlTG9jYXRpb24KKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzNjU2NgorICAg
ICAgICA8cmRhcjovLzg4NzYxNDEzPgorCisgICAgICAgIFJldmlld2VkIGJ5IERhcmluIEFkbGVy
LgorCisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2ViR2VvbG9jYXRpb25DbGllbnQuY3BwOgor
ICAgICAgICAoV2ViR2VvbG9jYXRpb25DbGllbnQ6OnN0YXJ0VXBkYXRpbmcpOgorICAgICAgICAq
IFdlYkNvcmVTdXBwb3J0L1dlYkdlb2xvY2F0aW9uQ2xpZW50Lmg6CisKIDIwMjItMDItMDEgIE15
bGVzIEMuIE1heGZpZWxkICA8bW1heGZpZWxkQGFwcGxlLmNvbT4KIAogICAgICAgICBSZW5hbWUg
Rm9udENhc2NhZGU6OmZvbnRNZXRyaWNzKCkgYW5kIFJlbmRlclN0eWxlOjpmb250TWV0cmljcygp
IHRvIGZvbnRNZXRyaWNzT2ZQcmltYXJ5Rm9udCgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0
Zi9QbGF0Zm9ybUhhdmUuaCBiL1NvdXJjZS9XVEYvd3RmL1BsYXRmb3JtSGF2ZS5oCmluZGV4IDA5
MmJjMzYyMTUwMWQ0NGNlYWZiMDcwZmFjY2QzOTk1Y2RhMjMxMjcuLjQ5NTM4YjFlYjY5NDllYzZh
NTZmMmQyNzZmYWMwNDUyNjMxZTcwZTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL1BsYXRm
b3JtSGF2ZS5oCisrKyBiL1NvdXJjZS9XVEYvd3RmL1BsYXRmb3JtSGF2ZS5oCkBAIC0xMTE5LDYg
KzExMTksMjAgQEAKICNkZWZpbmUgSEFWRV9OU1RFWFRMSVNUX01BUktFUl9GT1JNQVRTIDEKICNl
bmRpZgogCisjaWYgKFBMQVRGT1JNKElPUykgJiYgX19JUEhPTkVfT1NfVkVSU0lPTl9NQVhfQUxM
T1dFRCA+PSAxNjAwMDApIFwKKyAgICB8fCAoUExBVEZPUk0oV0FUQ0hPUykgJiYgX19XQVRDSF9P
U19WRVJTSU9OX01BWF9BTExPV0VEID49IDkwMDAwKSBcCisgICAgfHwgKFBMQVRGT1JNKEFQUExF
VFYpICYmIF9fVFZfT1NfVkVSU0lPTl9NQVhfQUxMT1dFRCA+PSAxNjAwMDApCisjZGVmaW5lIEhB
VkVfQ09SRV9MT0NBVElPTl9XRUJTSVRFX0lERU5USUZJRVJTIDEKKyNlbmRpZgorCisjaWYgUExB
VEZPUk0oSU9TX0ZBTUlMWSkgfHwgKFBMQVRGT1JNKE1BQykgJiYgX19NQUNfT1NfWF9WRVJTSU9O
X01JTl9SRVFVSVJFRCA+PSAxMDE0MDAgJiYgZGVmaW5lZCBfX2hhc19pbmNsdWRlICYmIF9faGFz
X2luY2x1ZGUoPENvcmVGb3VuZGF0aW9uL0NGUHJpdi5oPikpCisjZGVmaW5lIEhBVkVfQ09SRV9M
T0NBVElPTl9BVVRIT1JJWkVEX1dIRU5fSU5fVVNFIDEKKyNlbmRpZgorCisjaWYgUExBVEZPUk0o
SU9TX0ZBTUlMWSkgfHwgKFBMQVRGT1JNKE1BQykgJiYgX19NQUNfT1NfWF9WRVJTSU9OX01JTl9S
RVFVSVJFRCA+PSAxMDE2MDApCisjZGVmaW5lIEhBVkVfQ09SRV9MT0NBVElPTl9BVVRIT1JJWkFU
SU9OX1NUQVRVU19JTlNUQUxMX1BST1BFUlRZIDEKKyNlbmRpZgorCiAjaWYgUExBVEZPUk0oTUFD
KQogI2RlZmluZSBIQVZFX1NDRU5FS0lUIDEKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9nZW9sb2NhdGlvbi9HZW9sb2NhdGlvbkNsaWVudC5oIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9nZW9sb2NhdGlvbi9HZW9sb2NhdGlvbkNsaWVudC5oCmluZGV4IDViYWYz
YWQ4MmM1N2U1YWNiYTk2ZTNkZjBlZDYwZWJjNzU0YmNiMDUuLmE0ZTg2MjM2MjU1NjdlOWFkZmVi
MDBkODI0MDAwYTI3N2RiZWFmMDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
Z2VvbG9jYXRpb24vR2VvbG9jYXRpb25DbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2dlb2xvY2F0aW9uL0dlb2xvY2F0aW9uQ2xpZW50LmgKQEAgLTM4LDcgKzM4LDcgQEAgY2xh
c3MgR2VvbG9jYXRpb25DbGllbnQgewogcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBnZW9sb2Nh
dGlvbkRlc3Ryb3llZCgpID0gMDsKIAotICAgIHZpcnR1YWwgdm9pZCBzdGFydFVwZGF0aW5nKGNv
bnN0IFN0cmluZyYgYXV0aG9yaXphdGlvblRva2VuKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHN0
YXJ0VXBkYXRpbmcoY29uc3QgU3RyaW5nJiBhdXRob3JpemF0aW9uVG9rZW4sIGJvb2wgbmVlZHNI
aWdoQWNjdXJhY3kpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgc3RvcFVwZGF0aW5nKCkgPSAwOwog
ICAgIHZpcnR1YWwgdm9pZCByZXZva2VBdXRob3JpemF0aW9uVG9rZW4oY29uc3QgU3RyaW5nJikg
eyB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZ2VvbG9jYXRpb24vR2Vv
bG9jYXRpb25Db250cm9sbGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZ2VvbG9jYXRp
b24vR2VvbG9jYXRpb25Db250cm9sbGVyLmNwcAppbmRleCAwNjE2MjkxNjBkOWJjYzdkNWRhZjc0
Y2ZjNGY4MTU1MGJhNDhkZThjLi4wN2RkNjVmM2MxYWVlNzllYjljNzMyODM2YTJkNWFhZDAxNzMz
M2NmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2dlb2xvY2F0aW9uL0dlb2xv
Y2F0aW9uQ29udHJvbGxlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9nZW9sb2Nh
dGlvbi9HZW9sb2NhdGlvbkNvbnRyb2xsZXIuY3BwCkBAIC01MiwxOSArNTIsMjUgQEAgR2VvbG9j
YXRpb25Db250cm9sbGVyOjp+R2VvbG9jYXRpb25Db250cm9sbGVyKCkKICAgICBtX2NsaWVudC5n
ZW9sb2NhdGlvbkRlc3Ryb3llZCgpOwogfQogCit2b2lkIEdlb2xvY2F0aW9uQ29udHJvbGxlcjo6
ZGlkTmF2aWdhdGVQYWdlKCkKK3sKKyAgICB3aGlsZSAoIW1fb2JzZXJ2ZXJzLmlzRW1wdHkoKSkK
KyAgICAgICAgcmVtb3ZlT2JzZXJ2ZXIobV9vYnNlcnZlcnMuYmVnaW4oKS0+Z2V0KCkpOworfQor
CiB2b2lkIEdlb2xvY2F0aW9uQ29udHJvbGxlcjo6YWRkT2JzZXJ2ZXIoR2VvbG9jYXRpb24mIG9i
c2VydmVyLCBib29sIGVuYWJsZUhpZ2hBY2N1cmFjeSkKIHsKLSAgICAvLyBUaGlzIG1heSBiZSBj
YWxsZWQgbXVsdGlwbGUgdGltZXMgd2l0aCB0aGUgc2FtZSBvYnNlcnZlciwgdGhvdWdoIHJlbW92
ZU9ic2VydmVyKCkKLSAgICAvLyBpcyBjYWxsZWQgb25seSBvbmNlIHdpdGggZWFjaC4KLSAgICBi
b29sIHdhc0VtcHR5ID0gbV9vYnNlcnZlcnMuaXNFbXB0eSgpOworICAgIGJvb2wgaGlnaEFjY3Vy
YWN5V2FzUmVxdWlyZWQgPSBuZWVkc0hpZ2hBY2N1cmFjeSgpOworCiAgICAgbV9vYnNlcnZlcnMu
YWRkKG9ic2VydmVyKTsKICAgICBpZiAoZW5hYmxlSGlnaEFjY3VyYWN5KQogICAgICAgICBtX2hp
Z2hBY2N1cmFjeU9ic2VydmVycy5hZGQob2JzZXJ2ZXIpOwogCi0gICAgaWYgKGVuYWJsZUhpZ2hB
Y2N1cmFjeSkKLSAgICAgICAgbV9jbGllbnQuc2V0RW5hYmxlSGlnaEFjY3VyYWN5KHRydWUpOwot
ICAgIGlmICh3YXNFbXB0eSAmJiBtX3BhZ2UuaXNWaXNpYmxlKCkpCi0gICAgICAgIG1fY2xpZW50
LnN0YXJ0VXBkYXRpbmcob2JzZXJ2ZXIuYXV0aG9yaXphdGlvblRva2VuKCkpOworICAgIGlmICht
X2lzVXBkYXRpbmcpIHsKKyAgICAgICAgaWYgKCFoaWdoQWNjdXJhY3lXYXNSZXF1aXJlZCAmJiBl
bmFibGVIaWdoQWNjdXJhY3kpCisgICAgICAgICAgICBtX2NsaWVudC5zZXRFbmFibGVIaWdoQWNj
dXJhY3kodHJ1ZSk7CisgICAgfSBlbHNlCisgICAgICAgIHN0YXJ0VXBkYXRpbmdJZk5lY2Vzc2Fy
eSgpOwogfQogCiB2b2lkIEdlb2xvY2F0aW9uQ29udHJvbGxlcjo6cmVtb3ZlT2JzZXJ2ZXIoR2Vv
bG9jYXRpb24mIG9ic2VydmVyKQpAQCAtNzIsMTIgKzc4LDE3IEBAIHZvaWQgR2VvbG9jYXRpb25D
b250cm9sbGVyOjpyZW1vdmVPYnNlcnZlcihHZW9sb2NhdGlvbiYgb2JzZXJ2ZXIpCiAgICAgaWYg
KCFtX29ic2VydmVycy5jb250YWlucyhvYnNlcnZlcikpCiAgICAgICAgIHJldHVybjsKIAorICAg
IGJvb2wgaGlnaEFjY3VyYWN5V2FzUmVxdWlyZWQgPSBuZWVkc0hpZ2hBY2N1cmFjeSgpOworCiAg
ICAgbV9vYnNlcnZlcnMucmVtb3ZlKG9ic2VydmVyKTsKICAgICBtX2hpZ2hBY2N1cmFjeU9ic2Vy
dmVycy5yZW1vdmUob2JzZXJ2ZXIpOwogCisgICAgaWYgKCFtX2lzVXBkYXRpbmcpCisgICAgICAg
IHJldHVybjsKKwogICAgIGlmIChtX29ic2VydmVycy5pc0VtcHR5KCkpCi0gICAgICAgIG1fY2xp
ZW50LnN0b3BVcGRhdGluZygpOwotICAgIGVsc2UgaWYgKG1faGlnaEFjY3VyYWN5T2JzZXJ2ZXJz
LmlzRW1wdHkoKSkKKyAgICAgICAgc3RvcFVwZGF0aW5nSWZOZWNlc3NhcnkoKTsKKyAgICBlbHNl
IGlmIChoaWdoQWNjdXJhY3lXYXNSZXF1aXJlZCAmJiAhbmVlZHNIaWdoQWNjdXJhY3koKSkKICAg
ICAgICAgbV9jbGllbnQuc2V0RW5hYmxlSGlnaEFjY3VyYWN5KGZhbHNlKTsKIH0KIApAQCAtMTM5
LDkgKzE1MCw5IEBAIHZvaWQgR2VvbG9jYXRpb25Db250cm9sbGVyOjphY3Rpdml0eVN0YXRlRGlk
Q2hhbmdlKE9wdGlvblNldDxBY3Rpdml0eVN0YXRlOjpGbGFnCiAgICAgYXV0byBjaGFuZ2VkID0g
b2xkQWN0aXZpdHlTdGF0ZSBeIG5ld0FjdGl2aXR5U3RhdGU7CiAgICAgaWYgKGNoYW5nZWQgJiBB
Y3Rpdml0eVN0YXRlOjpJc1Zpc2libGUgJiYgIW1fb2JzZXJ2ZXJzLmlzRW1wdHkoKSkgewogICAg
ICAgICBpZiAobmV3QWN0aXZpdHlTdGF0ZSAmIEFjdGl2aXR5U3RhdGU6OklzVmlzaWJsZSkKLSAg
ICAgICAgICAgIG1fY2xpZW50LnN0YXJ0VXBkYXRpbmcoKCptX29ic2VydmVycy5yYW5kb20oKSkt
PmF1dGhvcml6YXRpb25Ub2tlbigpKTsKKyAgICAgICAgICAgIHN0YXJ0VXBkYXRpbmdJZk5lY2Vz
c2FyeSgpOwogICAgICAgICBlbHNlCi0gICAgICAgICAgICBtX2NsaWVudC5zdG9wVXBkYXRpbmco
KTsKKyAgICAgICAgICAgIHN0b3BVcGRhdGluZ0lmTmVjZXNzYXJ5KCk7CiAgICAgfQogCiAgICAg
aWYgKCFtX3BhZ2UuaXNWaXNpYmxlKCkpCkBAIC0xNTIsNiArMTYzLDI0IEBAIHZvaWQgR2VvbG9j
YXRpb25Db250cm9sbGVyOjphY3Rpdml0eVN0YXRlRGlkQ2hhbmdlKE9wdGlvblNldDxBY3Rpdml0
eVN0YXRlOjpGbGFnCiAgICAgICAgIG1fY2xpZW50LnJlcXVlc3RQZXJtaXNzaW9uKHBlcm1pc3Np
b25SZXF1ZXN0LmdldCgpKTsKIH0KIAordm9pZCBHZW9sb2NhdGlvbkNvbnRyb2xsZXI6OnN0YXJ0
VXBkYXRpbmdJZk5lY2Vzc2FyeSgpCit7CisgICAgaWYgKG1faXNVcGRhdGluZyB8fCAhbV9wYWdl
LmlzVmlzaWJsZSgpIHx8IG1fb2JzZXJ2ZXJzLmlzRW1wdHkoKSkKKyAgICAgICAgcmV0dXJuOwor
CisgICAgbV9jbGllbnQuc3RhcnRVcGRhdGluZygoKm1fb2JzZXJ2ZXJzLnJhbmRvbSgpKS0+YXV0
aG9yaXphdGlvblRva2VuKCksIG5lZWRzSGlnaEFjY3VyYWN5KCkpOworICAgIG1faXNVcGRhdGlu
ZyA9IHRydWU7Cit9CisKK3ZvaWQgR2VvbG9jYXRpb25Db250cm9sbGVyOjpzdG9wVXBkYXRpbmdJ
Zk5lY2Vzc2FyeSgpCit7CisgICAgaWYgKCFtX2lzVXBkYXRpbmcpCisgICAgICAgIHJldHVybjsK
KworICAgIG1fY2xpZW50LnN0b3BVcGRhdGluZygpOworICAgIG1faXNVcGRhdGluZyA9IGZhbHNl
OworfQorCiBjb25zdCBjaGFyKiBHZW9sb2NhdGlvbkNvbnRyb2xsZXI6OnN1cHBsZW1lbnROYW1l
KCkKIHsKICAgICByZXR1cm4gIkdlb2xvY2F0aW9uQ29udHJvbGxlciI7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2dlb2xvY2F0aW9uL0dlb2xvY2F0aW9uQ29udHJvbGxlci5o
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9nZW9sb2NhdGlvbi9HZW9sb2NhdGlvbkNvbnRyb2xs
ZXIuaAppbmRleCA0MmY1ZDA2MmRiNmYwOWM2NjAxMTFkNjZkOWYwZmNmZmYzYjIwNzQwLi5iYmZm
NTc1ZWIwNTgzMjQwNzgwZDNiNDFhOTY3NDJjNmIxZDcyNDhlIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2dlb2xvY2F0aW9uL0dlb2xvY2F0aW9uQ29udHJvbGxlci5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZ2VvbG9jYXRpb24vR2VvbG9jYXRpb25Db250cm9sbGVy
LmgKQEAgLTMwLDYgKzMwLDcgQEAKICNpbmNsdWRlICJBY3Rpdml0eVN0YXRlQ2hhbmdlT2JzZXJ2
ZXIuaCIKICNpbmNsdWRlICJHZW9sb2NhdGlvbi5oIgogI2luY2x1ZGUgIlBhZ2UuaCIKKyNpbmNs
dWRlICJSZWdpc3RyYWJsZURvbWFpbi5oIgogI2luY2x1ZGUgPHd0Zi9IYXNoU2V0Lmg+CiAjaW5j
bHVkZSA8d3RmL05vbmNvcHlhYmxlLmg+CiAjaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgpAQCAtNjUs
NiArNjYsOCBAQCBwdWJsaWM6CiAKICAgICB2b2lkIHJldm9rZUF1dGhvcml6YXRpb25Ub2tlbihj
b25zdCBTdHJpbmcmKTsKIAorICAgIHZvaWQgZGlkTmF2aWdhdGVQYWdlKCk7CisKIHByaXZhdGU6
CiAgICAgUGFnZSYgbV9wYWdlOwogICAgIEdlb2xvY2F0aW9uQ2xpZW50JiBtX2NsaWVudDsKQEAg
LTczLDYgKzc2LDExIEBAIHByaXZhdGU6CiAKICAgICBzdGQ6Om9wdGlvbmFsPEdlb2xvY2F0aW9u
UG9zaXRpb25EYXRhPiBtX2xhc3RQb3NpdGlvbjsKIAorICAgIGJvb2wgbmVlZHNIaWdoQWNjdXJh
Y3koKSBjb25zdCB7IHJldHVybiAhbV9oaWdoQWNjdXJhY3lPYnNlcnZlcnMuaXNFbXB0eSgpOyB9
CisKKyAgICB2b2lkIHN0YXJ0VXBkYXRpbmdJZk5lY2Vzc2FyeSgpOworICAgIHZvaWQgc3RvcFVw
ZGF0aW5nSWZOZWNlc3NhcnkoKTsKKwogICAgIHR5cGVkZWYgSGFzaFNldDxSZWY8R2VvbG9jYXRp
b24+PiBPYnNlcnZlcnNTZXQ7CiAgICAgLy8gQWxsIG9ic2VydmVyczsgYm90aCB0aG9zZSByZXF1
ZXN0aW5nIGhpZ2ggYWNjdXJhY3kgYW5kIHRob3NlIG5vdC4KICAgICBPYnNlcnZlcnNTZXQgbV9v
YnNlcnZlcnM7CkBAIC04MCw2ICs4OCw5IEBAIHByaXZhdGU6CiAKICAgICAvLyBXaGlsZSB0aGUg
cGFnZSBpcyBub3QgdmlzaWJsZSwgd2UgcGVuZCBwZXJtaXNzaW9uIHJlcXVlc3RzLgogICAgIEhh
c2hTZXQ8UmVmPEdlb2xvY2F0aW9uPj4gbV9wZW5kaW5nUGVybWlzc2lvblJlcXVlc3Q7CisKKyAg
ICBSZWdpc3RyYWJsZURvbWFpbiBtX3JlZ2lzdHJhYmxlRG9tYWluOworICAgIGJvb2wgbV9pc1Vw
ZGF0aW5nIHsgZmFsc2UgfTsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZ2VvbG9jYXRpb24vR2VvbG9jYXRpb25Qb3NpdGlv
bkRhdGEuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZ2VvbG9jYXRpb24vR2VvbG9jYXRpb25Q
b3NpdGlvbkRhdGEuaAppbmRleCA5MjYyMjE3MGM4YWFkNjk4OWI4YTEyY2U0ODM1NmRjNjg3YmY2
ZTM1Li5jYzIxODBhODM3ZDI3NDNjMWZiZjc2MWM0MTBlMWM3ZWJmZWFlZTdkIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2dlb2xvY2F0aW9uL0dlb2xvY2F0aW9uUG9zaXRpb25E
YXRhLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9nZW9sb2NhdGlvbi9HZW9sb2NhdGlv
blBvc2l0aW9uRGF0YS5oCkBAIC0yOSw3ICsyOSw3IEBACiAjaW5jbHVkZSA8d3RmL1JlZi5oPgog
I2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CiAKLSNpZiBQTEFURk9STShJT1NfRkFNSUxZKQor
I2lmIFBMQVRGT1JNKENPQ09BKQogT0JKQ19DTEFTUyBDTExvY2F0aW9uOwogI2VuZGlmCiAKQEAg
LTQ3LDcgKzQ3LDcgQEAgcHVibGljOgogICAgIHsKICAgICB9CiAKLSNpZiBQTEFURk9STShJT1Nf
RkFNSUxZKQorI2lmIFBMQVRGT1JNKENPQ09BKQogICAgIFdFQkNPUkVfRVhQT1JUIGV4cGxpY2l0
IEdlb2xvY2F0aW9uUG9zaXRpb25EYXRhKENMTG9jYXRpb24qKTsKICNlbmRpZgogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2dlb2xvY2F0aW9uL2NvY29hL0dlb2xvY2F0aW9u
UG9zaXRpb25EYXRhQ29jb2EubW0gYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2dlb2xvY2F0aW9u
L2NvY29hL0dlb2xvY2F0aW9uUG9zaXRpb25EYXRhQ29jb2EubW0KbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uODFlNDBm
MTY0MmIyNjg5NTJiN2IwMzk4ZTRlOGZlMmI4Y2Q1ODBkMQotLS0gL2Rldi9udWxsCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvZ2VvbG9jYXRpb24vY29jb2EvR2VvbG9jYXRpb25Qb3NpdGlv
bkRhdGFDb2NvYS5tbQpAQCAtMCwwICsxLDUzIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE3
IEFwcGxlIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBF
VkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwg
T1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywK
KyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAq
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCisgKi8KKworI2ltcG9ydCAiY29uZmlnLmgiCisjaW1wb3J0ICJHZW9sb2Nh
dGlvblBvc2l0aW9uLmgiCisKKyNpbXBvcnQgPENvcmVMb2NhdGlvbi9DTExvY2F0aW9uLmg+CisK
K25hbWVzcGFjZSBXZWJDb3JlIHsKKworR2VvbG9jYXRpb25Qb3NpdGlvbkRhdGE6Okdlb2xvY2F0
aW9uUG9zaXRpb25EYXRhKENMTG9jYXRpb24gKmxvY2F0aW9uKQorICAgIDogdGltZXN0YW1wKGxv
Y2F0aW9uLnRpbWVzdGFtcC50aW1lSW50ZXJ2YWxTaW5jZTE5NzApCisgICAgLCBsYXRpdHVkZShs
b2NhdGlvbi5jb29yZGluYXRlLmxhdGl0dWRlKQorICAgICwgbG9uZ2l0dWRlKGxvY2F0aW9uLmNv
b3JkaW5hdGUubG9uZ2l0dWRlKQorICAgICwgYWNjdXJhY3kobG9jYXRpb24uaG9yaXpvbnRhbEFj
Y3VyYWN5KQoreworICAgIGlmIChsb2NhdGlvbi52ZXJ0aWNhbEFjY3VyYWN5ID49IDAuMCkgewor
ICAgICAgICBhbHRpdHVkZSA9IGxvY2F0aW9uLmFsdGl0dWRlOworICAgICAgICBhbHRpdHVkZUFj
Y3VyYWN5ID0gbG9jYXRpb24udmVydGljYWxBY2N1cmFjeTsKKyAgICB9CisgICAgaWYgKGxvY2F0
aW9uLnNwZWVkID49IDAuMCkKKyAgICAgICAgc3BlZWQgPSBsb2NhdGlvbi5zcGVlZDsKKyAgICBp
ZiAobG9jYXRpb24uY291cnNlID49IDAuMCkKKyAgICAgICAgaGVhZGluZyA9IGxvY2F0aW9uLmNv
dXJzZTsKKyNpZiAhUExBVEZPUk0oTUFDQ0FUQUxZU1QpCisgICAgaWYgKGxvY2F0aW9uLmZsb29y
KQorICAgICAgICBmbG9vckxldmVsID0gbG9jYXRpb24uZmxvb3IubGV2ZWw7CisjZW5kaWYKK30K
KworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9nZW9sb2NhdGlvbi9pb3MvR2VvbG9jYXRpb25Qb3NpdGlvbkRhdGFJT1MubW0gYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2dlb2xvY2F0aW9uL2lvcy9HZW9sb2NhdGlvblBvc2l0aW9uRGF0
YUlPUy5tbQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOThkOWEyNDIxZTdmMjMwOWI0
ZjYyM2IxNGQ3Y2JlMmI2YzdlMDQ1Yy4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2dlb2xvY2F0aW9uL2lvcy9HZW9s
b2NhdGlvblBvc2l0aW9uRGF0YUlPUy5tbQorKysgL2Rldi9udWxsCkBAIC0xLDU3ICswLDAgQEAK
LS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTcgQXBwbGUgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVk
LgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlz
dHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5D
LiBgYEFTIElTJycgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKLSAqIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKLSAqIENP
TlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LCBTUEVDSUFMLAotICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCi0gKiBQUk9GSVRTOyBPUiBC
VVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCi0g
KiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaW1wb3J0ICJj
b25maWcuaCIKLSNpbXBvcnQgIkdlb2xvY2F0aW9uUG9zaXRpb24uaCIKLQotI2lmIFBMQVRGT1JN
KElPU19GQU1JTFkpCi0KLSNpbXBvcnQgPENvcmVMb2NhdGlvbi9DTExvY2F0aW9uLmg+Ci0KLW5h
bWVzcGFjZSBXZWJDb3JlIHsKLQotR2VvbG9jYXRpb25Qb3NpdGlvbkRhdGE6Okdlb2xvY2F0aW9u
UG9zaXRpb25EYXRhKENMTG9jYXRpb24qIGxvY2F0aW9uKQotICAgIDogdGltZXN0YW1wKGxvY2F0
aW9uLnRpbWVzdGFtcC50aW1lSW50ZXJ2YWxTaW5jZTE5NzApCi0gICAgLCBsYXRpdHVkZShsb2Nh
dGlvbi5jb29yZGluYXRlLmxhdGl0dWRlKQotICAgICwgbG9uZ2l0dWRlKGxvY2F0aW9uLmNvb3Jk
aW5hdGUubG9uZ2l0dWRlKQotICAgICwgYWNjdXJhY3kobG9jYXRpb24uaG9yaXpvbnRhbEFjY3Vy
YWN5KQotewotICAgIGlmIChsb2NhdGlvbi52ZXJ0aWNhbEFjY3VyYWN5ID49IDAuMCkgewotICAg
ICAgICBhbHRpdHVkZSA9IGxvY2F0aW9uLmFsdGl0dWRlOwotICAgICAgICBhbHRpdHVkZUFjY3Vy
YWN5ID0gbG9jYXRpb24udmVydGljYWxBY2N1cmFjeTsKLSAgICB9Ci0gICAgaWYgKGxvY2F0aW9u
LnNwZWVkID49IDAuMCkKLSAgICAgICAgc3BlZWQgPSBsb2NhdGlvbi5zcGVlZDsKLSAgICBpZiAo
bG9jYXRpb24uY291cnNlID49IDAuMCkKLSAgICAgICAgaGVhZGluZyA9IGxvY2F0aW9uLmNvdXJz
ZTsKLSNpZiAhUExBVEZPUk0oTUFDQ0FUQUxZU1QpCi0gICAgaWYgKGxvY2F0aW9uLmZsb29yKQot
ICAgICAgICBmbG9vckxldmVsID0gbG9jYXRpb24uZmxvb3IubGV2ZWw7Ci0jZW5kaWYKLX0KLQot
fQotCi0jZW5kaWYgLy8gUExBVEZPUk0oSU9TX0ZBTUlMWSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL1NvdXJjZXNDb2NvYS50eHQgYi9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzQ29jb2EudHh0
CmluZGV4IGExMjc4MDQxMDQwOWRlMWYyZjk4NjljMDRlN2Q5N2U1N2E0ODViNDkuLjAyODE0ZDAy
MjJiMjZlMjg5OWI4ZGFjYWVkMWE0MmU1NmI1NzQxOTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL1NvdXJjZXNDb2NvYS50eHQKKysrIGIvU291cmNlL1dlYkNvcmUvU291cmNlc0NvY29hLnR4
dApAQCAtMjUyLDYgKzI1Miw3IEBAIHBsYXRmb3JtL2NmL01lZGlhQWNjZXNzaWJpbGl0eVNvZnRM
aW5rLmNwcAogcGxhdGZvcm0vY2YvUnVuTG9vcE9ic2VydmVyLmNwcAogcGxhdGZvcm0vY2YvU2hh
cmVkQnVmZmVyQ0YuY3BwCiBwbGF0Zm9ybS9jb2NvYS9Db250ZW50RmlsdGVyVW5ibG9ja0hhbmRs
ZXJDb2NvYS5tbSBAbm8tdW5pZnkKK3BsYXRmb3JtL2NvY29hL0NvcmVMb2NhdGlvbkdlb2xvY2F0
aW9uUHJvdmlkZXIubW0KIHBsYXRmb3JtL2NvY29hL0NvcmVWaWRlb1NvZnRMaW5rLmNwcAogcGxh
dGZvcm0vY29jb2EvRHJhZ0RhdGFDb2NvYS5tbQogcGxhdGZvcm0vY29jb2EvRHJhZ0ltYWdlQ29j
b2EubW0KQEAgLTMwOCw3ICszMDksNyBAQCBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24v
TWVkaWFTZWxlY3Rpb25Hcm91cEFWRk9iakMubW0KIHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRh
dGlvbi9TYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXIuY3BwCiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZv
dW5kYXRpb24vV2ViTWVkaWFTZXNzaW9uTWFuYWdlck1hYy5jcHAKIHBsYXRmb3JtL2dyYXBoaWNz
L2F2Zm91bmRhdGlvbi9vYmpjL0FWQXNzZXRNSU1FVHlwZUNhY2hlLm1tCi1wbGF0Zm9ybS9ncmFw
aGljcy9hdmZvdW5kYXRpb24vb2JqYy9BVkFzc2V0VHJhY2tVdGlsaXRpZXMubW0KK3BsYXRmb3Jt
L2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0FWQXNzZXRUcmFja1V0aWxpdGllcy5tbSBAbm8t
dW5pZnkKIHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0FWT3V0cHV0RGV2aWNl
TWVudUNvbnRyb2xsZXJUYXJnZXRQaWNrZXIubW0gQG5vLXVuaWZ5CiBwbGF0Zm9ybS9ncmFwaGlj
cy9hdmZvdW5kYXRpb24vb2JqYy9BVlJvdXRlUGlja2VyVmlld1RhcmdldFBpY2tlci5tbQogcGxh
dGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvQVZTdHJlYW1EYXRhUGFyc2VyTUlNRVR5
cGVDYWNoZS5tbQpAQCAtMzE5LDcgKzMyMCw3IEBAIHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRh
dGlvbi9vYmpjL0NETVNlc3Npb25BVkZvdW5kYXRpb25PYmpDLm1tCiBwbGF0Zm9ybS9ncmFwaGlj
cy9hdmZvdW5kYXRpb24vb2JqYy9DRE1TZXNzaW9uQVZTdHJlYW1TZXNzaW9uLm1tCiBwbGF0Zm9y
bS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9DRE1TZXNzaW9uTWVkaWFTb3VyY2VBVkZPYmpD
Lm1tCiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9JbWFnZURlY29kZXJBVkZP
YmpDLm1tCi1wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9JbmJhbmRUZXh0VHJh
Y2tQcml2YXRlQVZGT2JqQy5tbQorcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMv
SW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUFWRk9iakMubW0gQG5vLXVuaWZ5CiBwbGF0Zm9ybS9ncmFw
aGljcy9hdmZvdW5kYXRpb24vb2JqYy9JbmJhbmRDaGFwdGVyVHJhY2tQcml2YXRlQVZGT2JqQy5t
bSBAbm8tdW5pZnkKIHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0xvY2FsU2Ft
cGxlQnVmZmVyRGlzcGxheUxheWVyLm1tCiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24v
b2JqYy9NZWRpYVBsYXliYWNrVGFyZ2V0UGlja2VyTWFjLm1tCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViQ29y
ZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggZjg1MDI0OTQ0OWIwZjhh
ZjhmMmNhOTU0YzQ1NjgzMDA0NDg3YWQ4My4uNTFhYjg4ZDgyYWQ4ZjA1NTA1NmIzMmQxYTg4MGM4
OGI3ZDYyNTU3NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ov
cHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3By
b2plY3QucGJ4cHJvagpAQCAtMTM1Myw2ICsxMzUzLDcgQEAKIAkJNDY4MzQ0RTAxRURERkFBQTAw
Qjc3OTVCIC8qIERPTVJlY3RMaXN0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA0NjgzNDRERTFFRERGQTVGMDBCNzc5NUIgLyogRE9NUmVjdExpc3QuaCAq
Lzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk0NjgzREY0
MDI3NjdERjk4MDA3RDAwQzggLyogSlNTaGFkb3dSZWFsbUdsb2JhbFNjb3BlQmFzZS5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDY4M0RGM0UyNzY3REY5
ODAwN0QwMEM4IC8qIEpTU2hhZG93UmVhbG1HbG9iYWxTY29wZUJhc2UuaCAqLzsgfTsKIAkJNDY4
M0RGNDEyNzY3RTkxQTAwN0QwMEM4IC8qIFNoYWRvd1JlYWxtR2xvYmFsU2NvcGUuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ2ODNERjNCMjc2N0RGMjYw
MDdEMDBDOCAvKiBTaGFkb3dSZWFsbUdsb2JhbFNjb3BlLmggKi87IHNldHRpbmdzID0ge0FUVFJJ
QlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJNDY4OEU5ODAyN0I2QjQ1MDAwNTY3Q0QyIC8q
IENvcmVMb2NhdGlvbkdlb2xvY2F0aW9uUHJvdmlkZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ2ODhFOTdGMjdCNkI0NDQwMDU2N0NEMiAvKiBDb3Jl
TG9jYXRpb25HZW9sb2NhdGlvblByb3ZpZGVyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMg
PSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNDY4OEVFM0MyNkREMjYxMDAwMkFGNUM0IC8qIENyb3Nz
T3JpZ2luTW9kZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gNDY4OEVFM0EyNkREMjYwQzAwMkFGNUM0IC8qIENyb3NzT3JpZ2luTW9kZS5oICovOyBzZXR0
aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTQ2OTQzREM5Mjc2M0Y4
MTcwMDRCNjEwRSAvKiBTaGFyZWRXb3JrZXJPYmplY3RJZGVudGlmaWVyLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0Njk0M0RDNzI3NjNGODBFMDA0QjYx
MEUgLyogU2hhcmVkV29ya2VyT2JqZWN0SWRlbnRpZmllci5oICovOyBzZXR0aW5ncyA9IHtBVFRS
SUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTQ2OTg1RjIzMjdBNEE2QUQwMDk3QTMyQiAv
KiBTaGFyZWRXb3JrZXJLZXkuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDQ2OTg1RjIyMjdBNEE2ODYwMDk3QTMyQiAvKiBTaGFyZWRXb3JrZXJLZXkuaCAq
Lzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwpAQCAtMTM3MCw2
ICsxMzcxLDcgQEAKIAkJNDZCOTUxOTkyMDdENjM0RDAwQTdEMkREIC8qIFJlbW90ZURPTVdpbmRv
dy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDZCOTUx
OEUyMDdENjMyQTAwQTdEMkREIC8qIFJlbW90ZURPTVdpbmRvdy5oICovOyBzZXR0aW5ncyA9IHtB
VFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTQ2Qjk1MTlBMjA3RDYzNTQwMEE3RDJE
RCAvKiBSZW1vdGVGcmFtZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gNDZCOTUxOTIyMDdENjMyRTAwQTdEMkREIC8qIFJlbW90ZUZyYW1lLmggKi87IHNl
dHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNDZCOTVCRjUyMjMx
Q0ZENjAwNTNBNTA0IC8qIERldmljZU9yaWVudGF0aW9uQW5kTW90aW9uQWNjZXNzQ29udHJvbGxl
ci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDZCOTVC
RjQyMjMxQ0ZCODAwNTNBNTA0IC8qIERldmljZU9yaWVudGF0aW9uQW5kTW90aW9uQWNjZXNzQ29u
dHJvbGxlci5oICovOyB9OworCQk0NkJBNDlCODI3QkI0NDMzMDA3N0Y2M0YgLyogQVZBc3NldFRy
YWNrVXRpbGl0aWVzLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gQ0RFQ0E4OTgxRURGNDQ3RDAwRENCMDhCIC8qIEFWQXNzZXRUcmFja1V0aWxpdGllcy5t
bSAqLzsgfTsKIAkJNDZCQ0JCQzIyMDg1MDA4RjAwNzEwNjM4IC8qIEpTUmVtb3RlRE9NV2luZG93
QmFzZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDZC
Q0JCQzAyMDg1MDA3RjAwNzEwNjM4IC8qIEpTUmVtb3RlRE9NV2luZG93QmFzZS5oICovOyBzZXR0
aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTQ2QkQwNUM1MjVCQjZF
NTkwMDIyNUYzMCAvKiBBZGRFdmVudExpc3RlbmVyT3B0aW9ucy5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDZCRDA1QzIyNUJCNkU0RTAwMjI1RjMwIC8q
IEFkZEV2ZW50TGlzdGVuZXJPcHRpb25zLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAo
UHJpdmF0ZSwgKTsgfTsgfTsKIAkJNDZCRDA1QzYyNUJCNkU2QzAwMjI1RjMwIC8qIEV2ZW50TGlz
dGVuZXJPcHRpb25zLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA0NkJEMDVDMzI1QkI2RTRFMDAyMjVGMzAgLyogRXZlbnRMaXN0ZW5lck9wdGlvbnMuaCAq
Lzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwpAQCAtMTM3OCw2
ICsxMzgwLDcgQEAKIAkJNDZDNjk2Q0IxRTcyMDVGNzAwNTk3OTM3IC8qIENQVU1vbml0b3IuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ2QzY5NkM5MUU3
MjA1RTQwMDU5NzkzNyAvKiBDUFVNb25pdG9yLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMg
PSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNDZDNjk2Q0MxRTcyMDVGQzAwNTk3OTM3IC8qIENQVU1v
bml0b3IuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
NDZDNjk2Q0ExRTcyMDVFNDAwNTk3OTM3IC8qIENQVU1vbml0b3IuY3BwICovOyB9OwogCQk0NkM4
M0VGRTFBOUJCRTI5MDBBNzlBNDEgLyogR2VvTm90aWZpZXIuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ2QzgzRUZDMUE5QkJFMjkwMEE3OUE0MSAvKiBH
ZW9Ob3RpZmllci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07
IH07CisJCTQ2Q0E5NDMxMjdCODY5NTgwMEY0RjVGRiAvKiBJbmJhbmRUZXh0VHJhY2tQcml2YXRl
QVZGT2JqQy5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDA3QUE2QjZBMTY2RDAxOTUwMEQ0NTY3MSAvKiBJbmJhbmRUZXh0VHJhY2tQcml2YXRlQVZGT2Jq
Qy5tbSAqLzsgfTsKIAkJNDZDQTlDNDQxRjk3QkJFOTAwNENGQzNBIC8qIFZpc2liaWxpdHlTdGF0
ZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDZDQTlD
NDExRjk3QkJFNzAwNENGQzNBIC8qIFZpc2liaWxpdHlTdGF0ZS5oICovOyBzZXR0aW5ncyA9IHtB
VFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTQ2Q0Y1MDRBMjdBQjFFQTQwMDcwREJD
OCAvKiBTaGFyZWRXb3JrZXJDb250ZXh0TWFuYWdlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDZDRjUwNDgyN0FCMUVBMTAwNzBEQkM4IC8qIFNoYXJl
ZFdvcmtlckNvbnRleHRNYW5hZ2VyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJp
dmF0ZSwgKTsgfTsgfTsKIAkJNDZEMDAwNDAyNkEwRkVCMzAwRDFCRjFFIC8qIFN1Ym1pdEV2ZW50
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0NkQwMDAz
RTI2QTBGRTZGMDBEMUJGMUUgLyogU3VibWl0RXZlbnQuaCAqLzsgfTsKQEAgLTI2OTIsNyArMjY5
NSw3IEBACiAJCTgzNzY1Rjk1MURBQzUyMkYwMEMwNjUzNyAvKiBNb3VzZUV2ZW50SW5pdC5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODM3NjVGOTQxREFD
NTIxODAwQzA2NTM3IC8qIE1vdXNlRXZlbnRJbml0LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVU
RVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJODM3ODg3ODIyNEQ4QTYwOTAwMEQ0QTVCIC8qIEF1
ZGlvQnVmZmVyU291cmNlT3B0aW9ucy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gODM3ODg3N0YyNEQ4QTVGQzAwMEQ0QTVCIC8qIEF1ZGlvQnVmZmVyU291
cmNlT3B0aW9ucy5oICovOyB9OwogCQk4Mzc5MzYzRjFGQkJCMEI0MDBDODAyM0MgLyogU2Vydmlj
ZVdvcmtlckNsaWVudERhdGEuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDgzNzkzNjNFMUZCQkIwQTUwMEM4MDIzQyAvKiBTZXJ2aWNlV29ya2VyQ2xpZW50
RGF0YS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07Ci0J
CTgzNzk2NENGMUY4REI2OUQwMDIxOEVBMCAvKiBHZW9sb2NhdGlvblBvc2l0aW9uRGF0YUlPUy5t
bSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDgzNzk2NENF
MUY4REI2OUEwMDIxOEVBMCAvKiBHZW9sb2NhdGlvblBvc2l0aW9uRGF0YUlPUy5tbSAqLzsgfTsK
KwkJODM3OTY0Q0YxRjhEQjY5RDAwMjE4RUEwIC8qIEdlb2xvY2F0aW9uUG9zaXRpb25EYXRhQ29j
b2EubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4Mzc5
NjRDRTFGOERCNjlBMDAyMThFQTAgLyogR2VvbG9jYXRpb25Qb3NpdGlvbkRhdGFDb2NvYS5tbSAq
LzsgfTsKIAkJODM3QTgwMTMxRTFFMTI3MzAwMDI2QjlGIC8qIExvY2FsaXphYmxlLnN0cmluZ3Nk
aWN0IGluIFJlc291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4MzdB
ODAxMTFFMUUxMjczMDAwMjZCOUYgLyogTG9jYWxpemFibGUuc3RyaW5nc2RpY3QgKi87IH07CiAJ
CTgzN0MwQjc2MjREQjM4NTAwMDVENTk1OSAvKiBEeW5hbWljc0NvbXByZXNzb3JPcHRpb25zLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4MzdDMEI3MzI0
REIzODQyMDA1RDU5NTkgLyogRHluYW1pY3NDb21wcmVzc29yT3B0aW9ucy5oICovOyB9OwogCQk4
MzdGQjM0NTFGOUVBMDZEMDBEMEZDMzEgLyogRXh0ZW5kYWJsZU1lc3NhZ2VFdmVudC5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODM3RkIzNDAxRjlFQTA2
NjAwRDBGQzMxIC8qIEV4dGVuZGFibGVNZXNzYWdlRXZlbnQuaCAqLzsgfTsKQEAgLTkyNzIsNiAr
OTI3NSw4IEBACiAJCTQ2ODNERjNDMjc2N0RGMjYwMDdEMDBDOCAvKiBTaGFkb3dSZWFsbUdsb2Jh
bFNjb3BlLmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlw
ZSA9IHRleHQ7IHBhdGggPSBTaGFkb3dSZWFsbUdsb2JhbFNjb3BlLmlkbDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJNDY4M0RGM0QyNzY3REY5ODAwN0QwMEM4IC8qIEpTU2hhZG93UmVh
bG1HbG9iYWxTY29wZUJhc2UuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRo
ID0gSlNTaGFkb3dSZWFsbUdsb2JhbFNjb3BlQmFzZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCTQ2ODNERjNFMjc2N0RGOTgwMDdEMDBDOCAvKiBKU1NoYWRvd1JlYWxtR2xvYmFs
U2NvcGVCYXNlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTU2hhZG93UmVh
bG1HbG9iYWxTY29wZUJhc2UuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNDY4OEU5
N0QyN0I2QjQ0MzAwNTY3Q0QyIC8qIENvcmVMb2NhdGlvbkdlb2xvY2F0aW9uUHJvdmlkZXIubW0g
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5vYmpjcHA7IHBhdGggPSBDb3JlTG9jYXRpb25HZW9sb2NhdGlvblByb3ZpZGVyLm1t
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk0Njg4RTk3RjI3QjZCNDQ0MDA1NjdDRDIg
LyogQ29yZUxvY2F0aW9uR2VvbG9jYXRpb25Qcm92aWRlci5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBDb3Jl
TG9jYXRpb25HZW9sb2NhdGlvblByb3ZpZGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCTQ2ODhFRTNBMjZERDI2MEMwMDJBRjVDNCAvKiBDcm9zc09yaWdpbk1vZGUuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gQ3Jvc3NPcmlnaW5Nb2RlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CTQ2OEI4QkRFMjVDQzg0OTMwMEY2NzgyMiAvKiBKU0Jhc2VBdWRpb0NvbnRleHRDdXN0b20uY3Bw
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAuY3BwOyBwYXRoID0gSlNCYXNlQXVkaW9Db250ZXh0Q3VzdG9tLmNwcDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDY5NDNEQzcyNzYzRjgwRTAwNEI2MTBFIC8qIFNoYXJl
ZFdvcmtlck9iamVjdElkZW50aWZpZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU2hhcmVkV29ya2VyT2Jq
ZWN0SWRlbnRpZmllci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtOTM4Niw4ICs5
MzkxLDggQEAKIAkJNDk0QkQ3OTQwRjU1QzhFRTAwNzQ3ODI4IC8qIFdlYktpdFBvaW50LmlkbCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHRleHQ7IHBhdGggPSBXZWJLaXRQb2ludC5pZGw7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCTQ5NEJENzlCMEY1NUM5NEMwMDc0NzgyOCAvKiBKU1dlYktpdFBvaW50LmNw
cCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTV2ViS2l0UG9pbnQuY3Bw
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0OTRCRDc5QzBGNTVDOTRDMDA3NDc4Mjgg
LyogSlNXZWJLaXRQb2ludC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKU1dl
YktpdFBvaW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTQ5NEVCRDA2MjdBQTlD
NTMwMEY0ODQ0RiAvKiBQREZEb2N1bWVudC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBQREZEb2N1bWVudC5o
OyBwYXRoID0gUERGRG9jdW1lbnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJNDk0
RUJEMDgyN0FBOUM1MzAwRjQ4NDRGIC8qIFBERkRvY3VtZW50LmNwcCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFt
ZSA9IFBERkRvY3VtZW50LmNwcDsgcGF0aCA9IFBERkRvY3VtZW50LmNwcDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKKwkJNDk0RUJEMDYyN0FBOUM1MzAwRjQ4NDRGIC8qIFBERkRvY3VtZW50
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IFBERkRvY3VtZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CisJCTQ5NEVCRDA4MjdBQTlDNTMwMEY0ODQ0RiAvKiBQREZEb2N1bWVudC5jcHAgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5jcHA7IHBhdGggPSBQREZEb2N1bWVudC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCTQ5NTg3ODFGMTJBNTdEREYwMDcyMzhBQyAvKiBQbGF0Zm9ybUNBQW5pbWF0aW9uQ29jb2Eu
bW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBQbGF0Zm9ybUNBQW5p
bWF0aW9uQ29jb2EubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQ5NTg3ODIwMTJB
NTdEREYwMDcyMzhBQyAvKiBQbGF0Zm9ybUNBTGF5ZXJDb2NvYS5tbSAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFBsYXRmb3JtQ0FMYXllckNvY29hLm1tOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQk0OTY5QjBGMDEzRDBCMzNGMDBERjM1MjEgLyogSGl0VGVz
dGluZ1RyYW5zZm9ybVN0YXRlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0
aCA9IEhpdFRlc3RpbmdUcmFuc2Zvcm1TdGF0ZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CkBAIC0xMjE4OCw3ICsxMjE5Myw3IEBACiAJCTgzNzg4NzgxMjREOEE1RkMwMDBENEE1QiAv
KiBBdWRpb0J1ZmZlclNvdXJjZU9wdGlvbnMuaWRsICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IEF1ZGlvQnVmZmVyU291cmNlT3B0
aW9ucy5pZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTgzNzkzNjNDMUZCQkIwQTQw
MEM4MDIzQyAvKiBTZXJ2aWNlV29ya2VyQ2xpZW50RGF0YS5jcHAgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5jcHA7IHBhdGggPSBTZXJ2aWNlV29ya2VyQ2xpZW50RGF0YS5jcHA7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTgzNzkzNjNFMUZCQkIwQTUwMEM4MDIzQyAvKiBTZXJ2aWNl
V29ya2VyQ2xpZW50RGF0YS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTZXJ2
aWNlV29ya2VyQ2xpZW50RGF0YS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQk4Mzc5
NjRDRTFGOERCNjlBMDAyMThFQTAgLyogR2VvbG9jYXRpb25Qb3NpdGlvbkRhdGFJT1MubW0gKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IG5hbWUgPSBHZW9sb2NhdGlvblBvc2l0aW9u
RGF0YUlPUy5tbTsgcGF0aCA9IE1vZHVsZXMvZ2VvbG9jYXRpb24vaW9zL0dlb2xvY2F0aW9uUG9z
aXRpb25EYXRhSU9TLm1tOyBzb3VyY2VUcmVlID0gU09VUkNFX1JPT1Q7IH07CisJCTgzNzk2NENF
MUY4REI2OUEwMDIxOEVBMCAvKiBHZW9sb2NhdGlvblBvc2l0aW9uRGF0YUNvY29hLm1tICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBuYW1lID0gR2VvbG9jYXRpb25Qb3NpdGlvbkRh
dGFDb2NvYS5tbTsgcGF0aCA9IE1vZHVsZXMvZ2VvbG9jYXRpb24vY29jb2EvR2VvbG9jYXRpb25Q
b3NpdGlvbkRhdGFDb2NvYS5tbTsgc291cmNlVHJlZSA9IFNPVVJDRV9ST09UOyB9OwogCQk4MzdB
ODAxMjFFMUUxMjczMDAwMjZCOUYgLyogZW4gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
bGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0LnBsaXN0LnN0cmluZ3NkaWN0OyBuYW1lID0gZW47IHBh
dGggPSBlbi5scHJvai9Mb2NhbGl6YWJsZS5zdHJpbmdzZGljdDsgc291cmNlVHJlZSA9IFNPVVJD
RV9ST09UOyB9OwogCQk4MzdCN0QxRjFEQzNGNTRDMDBEMDUxRkMgLyogVmFsaWRhdGlvbkJ1YmJs
ZUlPUy5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFZhbGlkYXRp
b25CdWJibGVJT1MubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTgzN0MwQjczMjRE
QjM4NDIwMDVENTk1OSAvKiBEeW5hbWljc0NvbXByZXNzb3JPcHRpb25zLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IER5bmFtaWNzQ29tcHJlc3Nvck9wdGlvbnMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKQEAgLTIxNjExLDYgKzIxNjE2LDE0IEBACiAJCQlwYXRoID0gY29udGV4dDsKIAkJCXNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7CiAJCX07CisJCTQ2NUMzRDE5MjdCOTkxQzgwMDIxMzAyRiAvKiBj
b2NvYSAqLyA9IHsKKwkJCWlzYSA9IFBCWEdyb3VwOworCQkJY2hpbGRyZW4gPSAoCisJCQkJODM3
OTY0Q0UxRjhEQjY5QTAwMjE4RUEwIC8qIEdlb2xvY2F0aW9uUG9zaXRpb25EYXRhQ29jb2EubW0g
Ki8sCisJCQkpOworCQkJcGF0aCA9IGNvY29hOworCQkJc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsK
KwkJfTsKIAkJNDY2OTRDREUyNzU5NDQ2RDAwRTMxNTBFIC8qIHNoYXJlZCAqLyA9IHsKIAkJCWlz
YSA9IFBCWEdyb3VwOwogCQkJY2hpbGRyZW4gPSAoCkBAIC0yNTEwNywxNCArMjUxMjAsNiBAQAog
CQkJcGF0aCA9IGJlYWNvbjsKIAkJCXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7CiAJCX07Ci0JCTgz
Nzk2NENDMUY4REI2N0QwMDIxOEVBMCAvKiBpb3MgKi8gPSB7Ci0JCQlpc2EgPSBQQlhHcm91cDsK
LQkJCWNoaWxkcmVuID0gKAotCQkJCTgzNzk2NENFMUY4REI2OUEwMDIxOEVBMCAvKiBHZW9sb2Nh
dGlvblBvc2l0aW9uRGF0YUlPUy5tbSAqLywKLQkJCSk7Ci0JCQluYW1lID0gaW9zOwotCQkJc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsKLQkJfTsKIAkJODNGQjMzNjUxRjUwOEExNzAwOTg2RTU0IC8q
IGVudHJpZXNhcGkgKi8gPSB7CiAJCQlpc2EgPSBQQlhHcm91cDsKIAkJCWNoaWxkcmVuID0gKApA
QCAtMjYxMjcsNyArMjYxMzIsNyBAQAogCQk5NzExNDVGRjE0RUYwMDc5MDA2NzRGRDkgLyogZ2Vv
bG9jYXRpb24gKi8gPSB7CiAJCQlpc2EgPSBQQlhHcm91cDsKIAkJCWNoaWxkcmVuID0gKAotCQkJ
CTgzNzk2NENDMUY4REI2N0QwMDIxOEVBMCAvKiBpb3MgKi8sCisJCQkJNDY1QzNEMTkyN0I5OTFD
ODAwMjEzMDJGIC8qIGNvY29hICovLAogCQkJCTk3NDZBRjEzMTRGNERERTYwMDNFN0E3MCAvKiBH
ZW9sb2NhdGlvbi5jcHAgKi8sCiAJCQkJOTc0NkFGMTQxNEY0RERFNjAwM0U3QTcwIC8qIEdlb2xv
Y2F0aW9uLmggKi8sCiAJCQkJOTc0NkFGMTUxNEY0RERFNjAwM0U3QTcwIC8qIEdlb2xvY2F0aW9u
LmlkbCAqLywKQEAgLTI2ODM5LDYgKzI2ODQ0LDggQEAKIAkJCQlDMUY3QjcyRjI0NDhGMkFDMDAx
MjQ1NTcgLyogQUdYQ29tcGlsZXJTZXJ2aWNlLmNwcCAqLywKIAkJCQlDMUY3QjczMDI0NDhGMkFD
MDAxMjQ1NTcgLyogQUdYQ29tcGlsZXJTZXJ2aWNlLmggKi8sCiAJCQkJQTE0MDkwRkExQUE1MUUx
RDAwOTExOTFBIC8qIENvbnRlbnRGaWx0ZXJVbmJsb2NrSGFuZGxlckNvY29hLm1tICovLAorCQkJ
CTQ2ODhFOTdGMjdCNkI0NDQwMDU2N0NEMiAvKiBDb3JlTG9jYXRpb25HZW9sb2NhdGlvblByb3Zp
ZGVyLmggKi8sCisJCQkJNDY4OEU5N0QyN0I2QjQ0MzAwNTY3Q0QyIC8qIENvcmVMb2NhdGlvbkdl
b2xvY2F0aW9uUHJvdmlkZXIubW0gKi8sCiAJCQkJQ0Q3RDMzNDUxQzdBMTZCRjAwMDQxMjkzIC8q
IENvcmVWaWRlb1NvZnRMaW5rLmNwcCAqLywKIAkJCQlDRDdEMzM0NjFDN0ExNkJGMDAwNDEyOTMg
LyogQ29yZVZpZGVvU29mdExpbmsuaCAqLywKIAkJCQlGNDYyRTc5RjI0MkFEQTNDMDAyMDREREQg
LyogRHJhZ0RhdGFDb2NvYS5tbSAqLywKQEAgLTMzOTMxLDYgKzMzOTM4LDcgQEAKIAkJCQkzRjgw
MjAzNzFFOUU0N0M1MDBERUM2MUQgLyogQ29yZUF1ZGlvQ2FwdHVyZURldmljZU1hbmFnZXIuaCBp
biBIZWFkZXJzICovLAogCQkJCTQxRkNDQzNCMjc0NjY3NTYwMDg5MkFENiAvKiBDb3JlQXVkaW9D
YXB0dXJlU291cmNlLmggaW4gSGVhZGVycyAqLywKIAkJCQkwN0FGRjQyMjFFRkIxNDQ5MDBCNTQ1
QjMgLyogQ29yZUF1ZGlvQ2FwdHVyZVNvdXJjZUlPUy5oIGluIEhlYWRlcnMgKi8sCisJCQkJNDY4
OEU5ODAyN0I2QjQ1MDAwNTY3Q0QyIC8qIENvcmVMb2NhdGlvbkdlb2xvY2F0aW9uUHJvdmlkZXIu
aCBpbiBIZWFkZXJzICovLAogCQkJCUNEN0QzMzQ4MUM3QTE2QkYwMDA0MTI5MyAvKiBDb3JlVmlk
ZW9Tb2Z0TGluay5oIGluIEhlYWRlcnMgKi8sCiAJCQkJODYyRjEyOUUxOEMxNTc2RjAwNUM1NEFG
IC8qIENvdW50ZWRVc2VyQWN0aXZpdHkuaCBpbiBIZWFkZXJzICovLAogCQkJCUE4MEU2RDA0MEEx
OTg5Q0EwMDdGQjhDNSAvKiBDb3VudGVyLmggaW4gSGVhZGVycyAqLywKQEAgLTM4Njg0LDYgKzM4
NjkyLDcgQEAKIAkJCQlDRDBFRUUwRTE0NzQzRjM5MDAzRUFGQTIgLyogQXVkaW9PdXRwdXRVbml0
QWRhcHRvcklPUy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlDREE3OTgyNzE3MEEyNzkxMDBENDVD
NTUgLyogQXVkaW9TZXNzaW9uSU9TLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJQ0Q4QTdCQkIxOTc3
MzVGRTAwQ0JENjQzIC8qIEF1ZGlvU291cmNlUHJvdmlkZXJBVkZPYmpDLm1tIGluIFNvdXJjZXMg
Ki8sCisJCQkJNDZCQTQ5QjgyN0JCNDQzMzAwNzdGNjNGIC8qIEFWQXNzZXRUcmFja1V0aWxpdGll
cy5tbSBpbiBTb3VyY2VzICovLAogCQkJCTBGQ0EyOTM1MjZGQzM5MTcwMDZCNEFFQiAvKiBBVkF1
ZGlvU2Vzc2lvbkNhcHR1cmVEZXZpY2VNYW5hZ2VyLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJMDcz
OEU1RUMyNDk5ODM5MDAwREExMDFDIC8qIEFWT3V0cHV0RGV2aWNlTWVudUNvbnRyb2xsZXJUYXJn
ZXRQaWNrZXIubW0gaW4gU291cmNlcyAqLywKIAkJCQlDRDMzNkY2MTE3RjlGNjQ3MDBERERDRDAg
LyogQVZUcmFja1ByaXZhdGVBVkZPYmpDSW1wbC5tbSBpbiBTb3VyY2VzICovLApAQCAtMzg3MDIs
MTMgKzM4NzExLDE0IEBACiAJCQkJNTE4RjRGRjYxOTRDQTRFNjAwODFCQUFFIC8qIEdhbWVwYWRC
dXR0b24uY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNTE2QzYyMjAxOTUwRDQ4NzAwMzM3RTc1IC8q
IEdhbWVwYWRFdmVudC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk1MUE5RDlFOTE5NUI5MzFGMDAx
QjJCNUMgLyogR2FtZXBhZE1hbmFnZXIuY3BwIGluIFNvdXJjZXMgKi8sCi0JCQkJODM3OTY0Q0Yx
RjhEQjY5RDAwMjE4RUEwIC8qIEdlb2xvY2F0aW9uUG9zaXRpb25EYXRhSU9TLm1tIGluIFNvdXJj
ZXMgKi8sCisJCQkJODM3OTY0Q0YxRjhEQjY5RDAwMjE4RUEwIC8qIEdlb2xvY2F0aW9uUG9zaXRp
b25EYXRhQ29jb2EubW0gaW4gU291cmNlcyAqLywKIAkJCQk2RTcyRjU0RTIyOURDRDEwMDBCM0Ux
NTEgLyogR3JhcGhpY3NDb250ZXh0R0xBTkdMRS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk3QzNF
NTEwQjE4REY4RjM1MDBDMTEyRjcgLyogSFRNTENvbnZlcnRlci5tbSBpbiBTb3VyY2VzICovLAog
CQkJCUE4RDA2QjNBMEEyNjVEQ0QwMDVFNzIwMyAvKiBIVE1MTmFtZXMuY3BwIGluIFNvdXJjZXMg
Ki8sCiAJCQkJMUFDOTAwQzMxOTQzQzBGQzAwODYyNUI1IC8qIEhUVFBIZWFkZXJOYW1lcy5jcHAg
aW4gU291cmNlcyAqLywKIAkJCQlDRDI3QUU1MTIyQTk4Njg3MDA5NDdGRjkgLyogSW1hZ2VSb3Rh
dGlvblNlc3Npb25WVC5tbSBpbiBTb3VyY2VzICovLAogCQkJCTA3MEUyRDBGMjZGMjUwODkwMDE0
QUFDMyAvKiBJbmJhbmRDaGFwdGVyVHJhY2tQcml2YXRlQVZGT2JqQy5tbSBpbiBTb3VyY2VzICov
LAorCQkJCTQ2Q0E5NDMxMjdCODY5NTgwMEY0RjVGRiAvKiBJbmJhbmRUZXh0VHJhY2tQcml2YXRl
QVZGT2JqQy5tbSBpbiBTb3VyY2VzICovLAogCQkJCUNEMDYzRjgyMUUyM0ZBODkwMDgxMkJFMyAv
KiBJbml0RGF0YVJlZ2lzdHJ5LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTkzNUM0NzcwMDlBQzRE
NzMwMEE2QUFCNCAvKiBLZXlFdmVudE1hYy5tbSBpbiBTb3VyY2VzICovLAogCQkJCUNEQTk4RTBC
MTYwM0NENjAwMEZFQTNCMSAvKiBMZWdhY3lDRE0uY3BwIGluIFNvdXJjZXMgKi8sCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9Q
YWdlLmNwcAppbmRleCA2YTg1ZTg0M2Q4YmJlM2QxOTJkOTdmNDk2YmQ3ZWI0NTQ3NDlkYmE0Li5l
ZmUwZTM4MDZkYzg0ODAzMGQyMmI5ZDkwMjkxNjc5MzM4NWJmZGFhIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL1BhZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5j
cHAKQEAgLTY5LDYgKzY5LDcgQEAKICNpbmNsdWRlICJGcmFtZVRyZWUuaCIKICNpbmNsdWRlICJG
cmFtZVZpZXcuaCIKICNpbmNsdWRlICJGdWxsc2NyZWVuTWFuYWdlci5oIgorI2luY2x1ZGUgIkdl
b2xvY2F0aW9uQ29udHJvbGxlci5oIgogI2luY2x1ZGUgIkhUTUxFbGVtZW50LmgiCiAjaW5jbHVk
ZSAiSFRNTEltYWdlRWxlbWVudC5oIgogI2luY2x1ZGUgIkhUTUxNZWRpYUVsZW1lbnQuaCIKQEAg
LTEzMzIsNiArMTMzMywxMSBAQCB2b2lkIFBhZ2U6OmRpZENvbW1pdExvYWQoKQogICAgIHJlc2V0
VGV4dFJlY29nbml0aW9uUmVzdWx0cygpOwogICAgIHJlc2V0SW1hZ2VBbmFseXNpc1F1ZXVlKCk7
CiAjZW5kaWYKKworI2lmIEVOQUJMRShHRU9MT0NBVElPTikKKyAgICBpZiAoYXV0byogZ2VvbG9j
YXRpb25Db250cm9sbGVyID0gR2VvbG9jYXRpb25Db250cm9sbGVyOjpmcm9tKHRoaXMpKQorICAg
ICAgICBnZW9sb2NhdGlvbkNvbnRyb2xsZXItPmRpZE5hdmlnYXRlUGFnZSgpOworI2VuZGlmCiB9
CiAKIHZvaWQgUGFnZTo6ZGlkRmluaXNoTG9hZCgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9jb2NvYS9Db3JlTG9jYXRpb25HZW9sb2NhdGlvblByb3ZpZGVyLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9Db3JlTG9jYXRpb25HZW9sb2NhdGlvblByb3ZpZGVy
LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uYzUyNDZjODg0YWNmOGY2OWZjYjhmOGFjNGFjYzdmNGNkZTY0NWNlZAot
LS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL0NvcmVMb2Nh
dGlvbkdlb2xvY2F0aW9uUHJvdmlkZXIuaApAQCAtMCwwICsxLDY3IEBACisvKgorICogQ29weXJp
Z2h0IChDKSAyMDIyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
CisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAq
CisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05U
UklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAq
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1Ig
SVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRT
OyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5Z
IFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKwor
I3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlIDx3dGYvQ29tcGxldGlvbkhhbmRsZXIuaD4KKyNpbmNs
dWRlIDx3dGYvRm9yd2FyZC5oPgorI2luY2x1ZGUgPHd0Zi9SZXRhaW5QdHIuaD4KKworT0JKQ19D
TEFTUyBXZWJDTExvY2F0aW9uTWFuYWdlcjsKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFz
cyBHZW9sb2NhdGlvblBvc2l0aW9uRGF0YTsKK2NsYXNzIFJlZ2lzdHJhYmxlRG9tYWluOworCitj
bGFzcyBXRUJDT1JFX0VYUE9SVCBDb3JlTG9jYXRpb25HZW9sb2NhdGlvblByb3ZpZGVyIHsKKyAg
ICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKK3B1YmxpYzoKKyAgICBjbGFzcyBDbGllbnQgewor
ICAgIHB1YmxpYzoKKyAgICAgICAgdmlydHVhbCB+Q2xpZW50KCkgeyB9CisKKyAgICAgICAgdmly
dHVhbCB2b2lkIGdlb2xvY2F0aW9uQXV0aG9yaXphdGlvbkdyYW50ZWQoY29uc3QgU3RyaW5nJiAv
KndlYnNpdGVJZGVudGlmaWVyKi8pIHsgfQorICAgICAgICB2aXJ0dWFsIHZvaWQgZ2VvbG9jYXRp
b25BdXRob3JpemF0aW9uRGVuaWVkKGNvbnN0IFN0cmluZyYgLyp3ZWJzaXRlSWRlbnRpZmllciov
KSB7IH0KKyAgICAgICAgdmlydHVhbCB2b2lkIHBvc2l0aW9uQ2hhbmdlZChjb25zdCBTdHJpbmcm
IHdlYnNpdGVJZGVudGlmaWVyLCBHZW9sb2NhdGlvblBvc2l0aW9uRGF0YSYmKSA9IDA7CisgICAg
ICAgIHZpcnR1YWwgdm9pZCBlcnJvck9jY3VycmVkKGNvbnN0IFN0cmluZyYgd2Vic2l0ZUlkZW50
aWZpZXIsIGNvbnN0IFN0cmluZyYgZXJyb3JNZXNzYWdlKSA9IDA7CisgICAgICAgIHZpcnR1YWwg
dm9pZCByZXNldEdlb2xvY2F0aW9uKGNvbnN0IFN0cmluZyYgd2Vic2l0ZUlkZW50aWZpZXIpID0g
MDsKKyAgICB9OworCisgICAgQ29yZUxvY2F0aW9uR2VvbG9jYXRpb25Qcm92aWRlcihjb25zdCBS
ZWdpc3RyYWJsZURvbWFpbiYsIENsaWVudCYpOworICAgIH5Db3JlTG9jYXRpb25HZW9sb2NhdGlv
blByb3ZpZGVyKCk7CisKKyAgICB2b2lkIHN0YXJ0KCk7CisgICAgdm9pZCBzdG9wKCk7CisKKyAg
ICB2b2lkIHNldEVuYWJsZUhpZ2hBY2N1cmFjeShib29sKTsKKworICAgIHN0YXRpYyB2b2lkIHJl
cXVlc3RBdXRob3JpemF0aW9uKGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiwgQ29tcGxldGlvbkhh
bmRsZXI8dm9pZChib29sKT4mJik7CisKK3ByaXZhdGU6CisgICAgUmV0YWluUHRyPFdlYkNMTG9j
YXRpb25NYW5hZ2VyPiBtX2xvY2F0aW9uTWFuYWdlcjsKK307CisKK30gLy8gbmFtZXNwYWNlIFdl
YkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL0NvcmVMb2Nh
dGlvbkdlb2xvY2F0aW9uUHJvdmlkZXIubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2Nv
YS9Db3JlTG9jYXRpb25HZW9sb2NhdGlvblByb3ZpZGVyLm1tCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjJmODNjOTlj
YTQ5ODBhMTMzODkyOWQxMzMxMzZiMWUyMjZkN2RhOTAKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9Db3JlTG9jYXRpb25HZW9sb2NhdGlvblByb3ZpZGVy
Lm1tCkBAIC0wLDAgKzEsMjc3IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIyIEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwor
ICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisg
KiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICog
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwg
RVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2ltcG9ydCAiY29uZmlnLmgiCisj
aW1wb3J0ICJDb3JlTG9jYXRpb25HZW9sb2NhdGlvblByb3ZpZGVyLmgiCisKKyNpbXBvcnQgIkdl
b2xvY2F0aW9uUG9zaXRpb25EYXRhLmgiCisjaW1wb3J0ICJSZWdpc3RyYWJsZURvbWFpbi5oIgor
I2ltcG9ydCA8Q29yZUxvY2F0aW9uL0NMTG9jYXRpb25NYW5hZ2VyRGVsZWdhdGUuaD4KKyNpbXBv
cnQgPENvcmVMb2NhdGlvbi9Db3JlTG9jYXRpb24uaD4KKyNpbXBvcnQgPHd0Zi9Tb2Z0TGlua2lu
Zy5oPgorCisjaWYgVVNFKEFQUExFX0lOVEVSTkFMX1NESykKKyNpbXBvcnQgPENvcmVMb2NhdGlv
bi9DTExvY2F0aW9uTWFuYWdlcl9Qcml2YXRlLmg+CisjZW5kaWYKKworU09GVF9MSU5LX0ZSQU1F
V09SSyhDb3JlTG9jYXRpb24pCisKK1NPRlRfTElOS19DTEFTUyhDb3JlTG9jYXRpb24sIENMTG9j
YXRpb25NYW5hZ2VyKQorU09GVF9MSU5LX0NMQVNTKENvcmVMb2NhdGlvbiwgQ0xMb2NhdGlvbikK
KworU09GVF9MSU5LX0NPTlNUQU5UKENvcmVMb2NhdGlvbiwga0NMTG9jYXRpb25BY2N1cmFjeUJl
c3QsIGRvdWJsZSkKK1NPRlRfTElOS19DT05TVEFOVChDb3JlTG9jYXRpb24sIGtDTExvY2F0aW9u
QWNjdXJhY3lIdW5kcmVkTWV0ZXJzLCBkb3VibGUpCisKKyNkZWZpbmUga0NMTG9jYXRpb25BY2N1
cmFjeUJlc3QgZ2V0a0NMTG9jYXRpb25BY2N1cmFjeUJlc3QoKQorI2RlZmluZSBrQ0xMb2NhdGlv
bkFjY3VyYWN5SHVuZHJlZE1ldGVycyBnZXRrQ0xMb2NhdGlvbkFjY3VyYWN5SHVuZHJlZE1ldGVy
cygpCisKK3N0YXRpYyBib29sIGlzQXV0aG9yaXphdGlvbkdyYW50ZWQoQ0xBdXRob3JpemF0aW9u
U3RhdHVzIHN0YXR1cykKK3sKKyAgICByZXR1cm4gc3RhdHVzID09IGtDTEF1dGhvcml6YXRpb25T
dGF0dXNBdXRob3JpemVkQWx3YXlzCisjaWYgSEFWRShDT1JFX0xPQ0FUSU9OX0FVVEhPUklaRURf
V0hFTl9JTl9VU0UpCisgICAgICAgIHx8IHN0YXR1cyA9PSBrQ0xBdXRob3JpemF0aW9uU3RhdHVz
QXV0aG9yaXplZFdoZW5JblVzZQorI2VuZGlmCisgICAgICAgIDsKK30KKworQGludGVyZmFjZSBX
ZWJDTExvY2F0aW9uTWFuYWdlciA6IE5TT2JqZWN0PENMTG9jYXRpb25NYW5hZ2VyRGVsZWdhdGU+
CitAZW5kCisKK0BpbXBsZW1lbnRhdGlvbiBXZWJDTExvY2F0aW9uTWFuYWdlciB7CisgICAgUmV0
YWluUHRyPENMTG9jYXRpb25NYW5hZ2VyPiBfbG9jYXRpb25NYW5hZ2VyOworICAgIFdlYkNvcmU6
OkNvcmVMb2NhdGlvbkdlb2xvY2F0aW9uUHJvdmlkZXI6OkNsaWVudCogX2NsaWVudDsKKyAgICBT
dHJpbmcgX3dlYnNpdGVJZGVudGlmaWVyOworICAgIEJPT0wgX2lzV2FpdGluZ0ZvckF1dGhvcml6
YXRpb247Cit9CisKKy0gKGluc3RhbmNldHlwZSlpbml0V2l0aFdlYnNpdGVJZGVudGlmaWVyOihj
b25zdCBTdHJpbmcmKXdlYnNpdGVJZGVudGlmaWVyIGNsaWVudDooV2ViQ29yZTo6Q29yZUxvY2F0
aW9uR2VvbG9jYXRpb25Qcm92aWRlcjo6Q2xpZW50JiljbGllbnQKK3sKKyAgICBzZWxmID0gW3N1
cGVyIGluaXRdOworICAgIGlmICghc2VsZikKKyAgICAgICAgcmV0dXJuIG5pbDsKKworICAgIC8v
IEZJWE1FOiBDYWxsIGluaXRXaXRoV2Vic2l0ZUlkZW50aWZpZXIgYW5kIHBhc3MgdGhlIHdlYnNp
dGVJZGVudGlmaWVyIHdoZW4gSEFWRShDT1JFX0xPQ0FUSU9OX1dFQlNJVEVfSURFTlRJRklFUlMp
IGFuZCAhd2Vic2l0ZUlkZW50aWZpZXIuaXNFbXB0eSgpIG9uY2UgPHJkYXI6Ly84ODgzNDMwMT4g
aXMgZml4ZWQuCisgICAgVU5VU0VEX1BBUkFNKHdlYnNpdGVJZGVudGlmaWVyKTsKKyAgICBfbG9j
YXRpb25NYW5hZ2VyID0gYWRvcHROUyhbYWxsb2NDTExvY2F0aW9uTWFuYWdlckluc3RhbmNlKCkg
aW5pdF0pOworICAgIF9jbGllbnQgPSAmY2xpZW50OworICAgIF93ZWJzaXRlSWRlbnRpZmllciA9
IHdlYnNpdGVJZGVudGlmaWVyOworICAgIFtfbG9jYXRpb25NYW5hZ2VyIHNldERlbGVnYXRlOnNl
bGZdOworICAgIHJldHVybiBzZWxmOworfQorCistICh2b2lkKWRlYWxsb2MKK3sKKyAgICBbX2xv
Y2F0aW9uTWFuYWdlciBzZXREZWxlZ2F0ZTpuaWxdOworICAgIFtzdXBlciBkZWFsbG9jXTsKK30K
KworLSAoQ0xBdXRob3JpemF0aW9uU3RhdHVzKWF1dGhvcml6YXRpb25TdGF0dXMKK3sKKyNpZiBI
QVZFKENPUkVfTE9DQVRJT05fQVVUSE9SSVpBVElPTl9TVEFUVVNfSU5TVEFMTF9QUk9QRVJUWSkK
KyAgICByZXR1cm4gW19sb2NhdGlvbk1hbmFnZXIgYXV0aG9yaXphdGlvblN0YXR1c107CisjZWxz
ZQorICAgIHJldHVybiBbZ2V0Q0xMb2NhdGlvbk1hbmFnZXJDbGFzcygpIGF1dGhvcml6YXRpb25T
dGF0dXNdOworI2VuZGlmCit9CisKKy0gKHZvaWQpc3RhcnQKK3sKKyAgICBpZiAoIVtnZXRDTExv
Y2F0aW9uTWFuYWdlckNsYXNzKCkgbG9jYXRpb25TZXJ2aWNlc0VuYWJsZWRdIHx8ICFpc0F1dGhv
cml6YXRpb25HcmFudGVkKFtzZWxmIGF1dGhvcml6YXRpb25TdGF0dXNdKSkgeworICAgICAgICBb
X2xvY2F0aW9uTWFuYWdlciBzdG9wVXBkYXRpbmdMb2NhdGlvbl07CisgICAgICAgIF9jbGllbnQt
PnJlc2V0R2VvbG9jYXRpb24oX3dlYnNpdGVJZGVudGlmaWVyKTsKKyAgICAgICAgcmV0dXJuOwor
ICAgIH0KKworICAgIFtfbG9jYXRpb25NYW5hZ2VyIHN0YXJ0VXBkYXRpbmdMb2NhdGlvbl07Cit9
CisKKy0gKHZvaWQpc3RvcAoreworICAgIFtfbG9jYXRpb25NYW5hZ2VyIHN0b3BVcGRhdGluZ0xv
Y2F0aW9uXTsKK30KKworLSAodm9pZClzZXRFbmFibGVIaWdoQWNjdXJhY3k6KEJPT0wpaGlnaEFj
Y3VyYWN5RW5hYmxlZAoreworICAgIFtfbG9jYXRpb25NYW5hZ2VyIHNldERlc2lyZWRBY2N1cmFj
eTpoaWdoQWNjdXJhY3lFbmFibGVkID8ga0NMTG9jYXRpb25BY2N1cmFjeUJlc3QgOiBrQ0xMb2Nh
dGlvbkFjY3VyYWN5SHVuZHJlZE1ldGVyc107Cit9CisKKy0gKHZvaWQpcmVxdWVzdEdlb2xvY2F0
aW9uQXV0aG9yaXphdGlvbgoreworICAgIGlmICghW2dldENMTG9jYXRpb25NYW5hZ2VyQ2xhc3Mo
KSBsb2NhdGlvblNlcnZpY2VzRW5hYmxlZF0pIHsKKyAgICAgICAgX2NsaWVudC0+Z2VvbG9jYXRp
b25BdXRob3JpemF0aW9uRGVuaWVkKF93ZWJzaXRlSWRlbnRpZmllcik7CisgICAgICAgIHJldHVy
bjsKKyAgICB9CisKKyAgICBzd2l0Y2ggKFtzZWxmIGF1dGhvcml6YXRpb25TdGF0dXNdKSB7Cisg
ICAgY2FzZSBrQ0xBdXRob3JpemF0aW9uU3RhdHVzTm90RGV0ZXJtaW5lZDogeworICAgICAgICBp
ZiAoIV9pc1dhaXRpbmdGb3JBdXRob3JpemF0aW9uKSB7CisgICAgICAgICAgICBfaXNXYWl0aW5n
Rm9yQXV0aG9yaXphdGlvbiA9IFlFUzsKKyAgICAgICAgICAgIFtfbG9jYXRpb25NYW5hZ2VyIHJl
cXVlc3RXaGVuSW5Vc2VBdXRob3JpemF0aW9uXTsKKyAgICAgICAgfQorICAgICAgICBicmVhazsK
KyAgICB9CisgICAgY2FzZSBrQ0xBdXRob3JpemF0aW9uU3RhdHVzQXV0aG9yaXplZEFsd2F5czoK
KyNpZiBIQVZFKENPUkVfTE9DQVRJT05fQVVUSE9SSVpFRF9XSEVOX0lOX1VTRSkKKyAgICBjYXNl
IGtDTEF1dGhvcml6YXRpb25TdGF0dXNBdXRob3JpemVkV2hlbkluVXNlOgorI2VuZGlmCisgICAg
ICAgIF9jbGllbnQtPmdlb2xvY2F0aW9uQXV0aG9yaXphdGlvbkdyYW50ZWQoX3dlYnNpdGVJZGVu
dGlmaWVyKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBrQ0xBdXRob3JpemF0aW9uU3RhdHVz
UmVzdHJpY3RlZDoKKyAgICBjYXNlIGtDTEF1dGhvcml6YXRpb25TdGF0dXNEZW5pZWQ6CisgICAg
ICAgIF9jbGllbnQtPmdlb2xvY2F0aW9uQXV0aG9yaXphdGlvbkRlbmllZChfd2Vic2l0ZUlkZW50
aWZpZXIpOworICAgICAgICBicmVhazsKKyAgICB9Cit9CisKKy0gKHZvaWQpbG9jYXRpb25NYW5h
Z2VyRGlkQ2hhbmdlQXV0aG9yaXphdGlvbjooQ0xMb2NhdGlvbk1hbmFnZXIgKiltYW5hZ2VyCit7
CisgICAgYXV0byBzdGF0dXMgPSBbc2VsZiBhdXRob3JpemF0aW9TdGF0dXNdOworICAgIGlmIChf
aXNXYWl0aW5nRm9yQXV0aG9yaXphdGlvbikgeworICAgICAgICBzd2l0Y2ggKHN0YXR1cykgewor
ICAgICAgICBjYXNlIGtDTEF1dGhvcml6YXRpb25TdGF0dXNOb3REZXRlcm1pbmVkOgorICAgICAg
ICAgICAgLy8gVGhpcyBjYW4gaGFwcGVuIGFmdGVyIHJlc3VtZSBpZiB0aGUgdXNlciBoYXMgc3Rp
bGwgbm90IGFuc3dlcmVkIHRoZSBkaWFsb2cuIFdlIGp1c3QgaGF2ZSB0byB3YWl0IGZvciB0aGUg
cGVybWlzc2lvbi4KKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIGtDTEF1dGhvcml6
YXRpb25TdGF0dXNEZW5pZWQ6CisgICAgICAgIGNhc2Uga0NMQXV0aG9yaXphdGlvblN0YXR1c1Jl
c3RyaWN0ZWQ6CisgICAgICAgICAgICBfaXNXYWl0aW5nRm9yQXV0aG9yaXphdGlvbiA9IE5POwor
ICAgICAgICAgICAgX2NsaWVudC0+Z2VvbG9jYXRpb25BdXRob3JpemF0aW9uRGVuaWVkKF93ZWJz
aXRlSWRlbnRpZmllcik7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBrQ0xBdXRo
b3JpemF0aW9uU3RhdHVzQXV0aG9yaXplZEFsd2F5czoKKyNpZiBIQVZFKENPUkVfTE9DQVRJT05f
QVVUSE9SSVpFRF9XSEVOX0lOX1VTRSkKKyAgICAgICAgY2FzZSBrQ0xBdXRob3JpemF0aW9uU3Rh
dHVzQXV0aG9yaXplZFdoZW5JblVzZToKKyNlbmRpZgorICAgICAgICAgICAgX2lzV2FpdGluZ0Zv
ckF1dGhvcml6YXRpb24gPSBOTzsKKyAgICAgICAgICAgIF9jbGllbnQtPmdlb2xvY2F0aW9uQXV0
aG9yaXphdGlvbkdyYW50ZWQoX3dlYnNpdGVJZGVudGlmaWVyKTsKKyAgICAgICAgICAgIGJyZWFr
OworICAgICAgICB9CisgICAgfSBlbHNlIHsKKyAgICAgICAgaWYgKHN0YXR1cyA9PSBrQ0xBdXRo
b3JpemF0aW9uU3RhdHVzRGVuaWVkIHx8IHN0YXR1cyA9PSBrQ0xBdXRob3JpemF0aW9uU3RhdHVz
UmVzdHJpY3RlZCkgeworICAgICAgICAgICAgW19sb2NhdGlvbk1hbmFnZXIgc3RvcFVwZGF0aW5n
TG9jYXRpb25dOworICAgICAgICAgICAgX2NsaWVudC0+cmVzZXRHZW9sb2NhdGlvbihfd2Vic2l0
ZUlkZW50aWZpZXIpOworICAgICAgICB9CisgICAgfQorfQorCistICh2b2lkKWxvY2F0aW9uTWFu
YWdlcjooQ0xMb2NhdGlvbk1hbmFnZXIgKiltYW5hZ2VyIGRpZFVwZGF0ZUxvY2F0aW9uczooTlNB
cnJheSAqKWxvY2F0aW9ucworeworICAgIFVOVVNFRF9QQVJBTShtYW5hZ2VyKTsKKyAgICBmb3Ig
KENMTG9jYXRpb24gKmxvY2F0aW9uIGluIGxvY2F0aW9ucykKKyAgICAgICAgX2NsaWVudC0+cG9z
aXRpb25DaGFuZ2VkKF93ZWJzaXRlSWRlbnRpZmllciwgV2ViQ29yZTo6R2VvbG9jYXRpb25Qb3Np
dGlvbkRhdGEgeyBsb2NhdGlvbiB9KTsKK30KKworLSAodm9pZClsb2NhdGlvbk1hbmFnZXI6KENM
TG9jYXRpb25NYW5hZ2VyICopbWFuYWdlciBkaWRGYWlsV2l0aEVycm9yOihOU0Vycm9yICopZXJy
b3IKK3sKKyAgICBBU1NFUlQoZXJyb3IpOworICAgIFVOVVNFRF9QQVJBTShtYW5hZ2VyKTsKKwor
ICAgIGlmIChbZXJyb3IgY29kZV0gPT0ga0NMRXJyb3JEZW5pZWQpIHsKKyAgICAgICAgLy8gSWdu
b3JlIHRoZSBlcnJvciBoZXJlIGFuZCBsZXQgbG9jYXRpb25NYW5hZ2VyOmRpZENoYW5nZUF1dGhv
cml6YXRpb25TdGF0dXM6IGhhbmRsZSB0aGUgcGVybWlzc2lvbi4KKyAgICAgICAgcmV0dXJuOwor
ICAgIH0KKworICAgIE5TU3RyaW5nICplcnJvck1lc3NhZ2UgPSBbZXJyb3IgbG9jYWxpemVkRGVz
Y3JpcHRpb25dOworICAgIF9jbGllbnQtPmVycm9yT2NjdXJyZWQoX3dlYnNpdGVJZGVudGlmaWVy
LCBlcnJvck1lc3NhZ2UpOworfQorCitAZW5kCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworQ29y
ZUxvY2F0aW9uR2VvbG9jYXRpb25Qcm92aWRlcjo6Q29yZUxvY2F0aW9uR2VvbG9jYXRpb25Qcm92
aWRlcihjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYgcmVnaXN0cmFibGVEb21haW4sIENsaWVudCYg
Y2xpZW50KQorICAgIDogbV9sb2NhdGlvbk1hbmFnZXIoYWRvcHROUyhbW1dlYkNMTG9jYXRpb25N
YW5hZ2VyIGFsbG9jXSBpbml0V2l0aFdlYnNpdGVJZGVudGlmaWVyOnJlZ2lzdHJhYmxlRG9tYWlu
LnN0cmluZygpIGNsaWVudDpjbGllbnRdKSkKK3sKKyAgICAvLyBSZXF1ZXN0IHBlcm1pc3Npb24g
Zm9yIHRoZSBhcHAgdG8gdXNlIGdlb2xvY2F0aW9uIChpZiBpdCBkb2Vzbid0IGFscmVhZHkpLgor
ICAgIFttX2xvY2F0aW9uTWFuYWdlciByZXF1ZXN0R2VvbG9jYXRpb25BdXRob3JpemF0aW9uXTsK
K30KKworQ29yZUxvY2F0aW9uR2VvbG9jYXRpb25Qcm92aWRlcjo6fkNvcmVMb2NhdGlvbkdlb2xv
Y2F0aW9uUHJvdmlkZXIoKQoreworICAgIFttX2xvY2F0aW9uTWFuYWdlciBzdG9wXTsKK30KKwor
dm9pZCBDb3JlTG9jYXRpb25HZW9sb2NhdGlvblByb3ZpZGVyOjpzdGFydCgpCit7CisgICAgW21f
bG9jYXRpb25NYW5hZ2VyIHN0YXJ0XTsKK30KKwordm9pZCBDb3JlTG9jYXRpb25HZW9sb2NhdGlv
blByb3ZpZGVyOjpzdG9wKCkKK3sKKyAgICBbbV9sb2NhdGlvbk1hbmFnZXIgc3RvcF07Cit9CisK
K3ZvaWQgQ29yZUxvY2F0aW9uR2VvbG9jYXRpb25Qcm92aWRlcjo6c2V0RW5hYmxlSGlnaEFjY3Vy
YWN5KGJvb2wgaGlnaEFjY3VyYWN5RW5hYmxlZCkKK3sKKyAgICBbbV9sb2NhdGlvbk1hbmFnZXIg
c2V0RW5hYmxlSGlnaEFjY3VyYWN5OmhpZ2hBY2N1cmFjeUVuYWJsZWRdOworfQorCitjbGFzcyBB
dXRob3JpemF0aW9uQ2hlY2tlciBmaW5hbCA6IHB1YmxpYyBSZWZDb3VudGVkPEF1dGhvcml6YXRp
b25DaGVja2VyPiwgcHVibGljIENvcmVMb2NhdGlvbkdlb2xvY2F0aW9uUHJvdmlkZXI6OkNsaWVu
dCB7CitwdWJsaWM6CisgICAgc3RhdGljIFJlZjxBdXRob3JpemF0aW9uQ2hlY2tlcj4gY3JlYXRl
KCkKKyAgICB7CisgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IEF1dGhvcml6YXRpb25DaGVj
a2VyKTsKKyAgICB9CisKKyAgICB2b2lkIGNoZWNrKGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiBy
ZWdpc3RyYWJsZURvbWFpbiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJiBjb21wbGV0
aW9uSGFuZGxlcikKKyAgICB7CisgICAgICAgIG1fY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3Zl
KGNvbXBsZXRpb25IYW5kbGVyKTsKKyAgICAgICAgbV9wcm92aWRlciA9IG1ha2VVbmlxdWU8Q29y
ZUxvY2F0aW9uR2VvbG9jYXRpb25Qcm92aWRlcj4ocmVnaXN0cmFibGVEb21haW4sICp0aGlzKTsK
KyAgICB9CisKK3ByaXZhdGU6CisgICAgQXV0aG9yaXphdGlvbkNoZWNrZXIoKSA9IGRlZmF1bHQ7
CisKKyAgICB2b2lkIGdlb2xvY2F0aW9uQXV0aG9yaXphdGlvbkdyYW50ZWQoY29uc3QgU3RyaW5n
JikgZmluYWwKKyAgICB7CisgICAgICAgIGlmIChtX2NvbXBsZXRpb25IYW5kbGVyKQorICAgICAg
ICAgICAgbV9jb21wbGV0aW9uSGFuZGxlcih0cnVlKTsKKyAgICB9CisKKyAgICB2b2lkIGdlb2xv
Y2F0aW9uQXV0aG9yaXphdGlvbkRlbmllZChjb25zdCBTdHJpbmcmKSBmaW5hbAorICAgIHsKKyAg
ICAgICAgaWYgKG1fY29tcGxldGlvbkhhbmRsZXIpCisgICAgICAgICAgICBtX2NvbXBsZXRpb25I
YW5kbGVyKGZhbHNlKTsKKyAgICB9CisKKyAgICB2b2lkIHBvc2l0aW9uQ2hhbmdlZChjb25zdCBT
dHJpbmcmLCBHZW9sb2NhdGlvblBvc2l0aW9uRGF0YSYmKSBmaW5hbCB7IH0KKyAgICB2b2lkIGVy
cm9yT2NjdXJyZWQoY29uc3QgU3RyaW5nJiwgY29uc3QgU3RyaW5nJikgZmluYWwKKyAgICB7Cisg
ICAgICAgIGlmIChtX2NvbXBsZXRpb25IYW5kbGVyKQorICAgICAgICAgICAgbV9jb21wbGV0aW9u
SGFuZGxlcihmYWxzZSk7CisgICAgfQorICAgIHZvaWQgcmVzZXRHZW9sb2NhdGlvbihjb25zdCBT
dHJpbmcmKSBmaW5hbCB7IH0KKworICAgIHN0ZDo6dW5pcXVlX3B0cjxDb3JlTG9jYXRpb25HZW9s
b2NhdGlvblByb3ZpZGVyPiBtX3Byb3ZpZGVyOworICAgIENvbXBsZXRpb25IYW5kbGVyPHZvaWQo
Ym9vbCk+IG1fY29tcGxldGlvbkhhbmRsZXI7Cit9OworCit2b2lkIENvcmVMb2NhdGlvbkdlb2xv
Y2F0aW9uUHJvdmlkZXI6OnJlcXVlc3RBdXRob3JpemF0aW9uKGNvbnN0IFJlZ2lzdHJhYmxlRG9t
YWluJiByZWdpc3RyYWJsZURvbWFpbiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJiBj
b21wbGV0aW9uSGFuZGxlcikKK3sKKyAgICBhdXRvIGF1dGhvcml6YXRpb25DaGVja2VyID0gQXV0
aG9yaXphdGlvbkNoZWNrZXI6OmNyZWF0ZSgpOworICAgIGF1dGhvcml6YXRpb25DaGVja2VyLT5j
aGVjayhyZWdpc3RyYWJsZURvbWFpbiwgW2F1dGhvcml6YXRpb25DaGVja2VyLCBjb21wbGV0aW9u
SGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXShib29sIGF1dGhvcml6ZWQpIG11
dGFibGUgeworICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihhdXRob3JpemVkKTsKKyAgICB9KTsK
K30KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbW9jay9HZW9sb2NhdGlvbkNsaWVudE1vY2suY3BwIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbW9jay9HZW9sb2NhdGlvbkNsaWVudE1vY2suY3BwCmluZGV4IDlkNWVmYzgzZjM0
ZWIxOGQ1OTlkYzEwY2FhOGZjMGNhMzk5ZGIwYTIuLmZhNDIwODJlNTA1OWE5ZWNmMjY0Y2FhZjRj
MjY1MzJmNGIyZTVkN2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2sv
R2VvbG9jYXRpb25DbGllbnRNb2NrLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9t
b2NrL0dlb2xvY2F0aW9uQ2xpZW50TW9jay5jcHAKQEAgLTEzNiwxMCArMTM2LDExIEBAIHZvaWQg
R2VvbG9jYXRpb25DbGllbnRNb2NrOjpnZW9sb2NhdGlvbkRlc3Ryb3llZCgpCiAgICAgQVNTRVJU
KCFtX2lzQWN0aXZlKTsKIH0KIAotdm9pZCBHZW9sb2NhdGlvbkNsaWVudE1vY2s6OnN0YXJ0VXBk
YXRpbmcoY29uc3QgU3RyaW5nJiBhdXRob3JpemF0aW9uVG9rZW4pCit2b2lkIEdlb2xvY2F0aW9u
Q2xpZW50TW9jazo6c3RhcnRVcGRhdGluZyhjb25zdCBTdHJpbmcmIGF1dGhvcml6YXRpb25Ub2tl
biwgYm9vbCBlbmFibGVIaWdoQWNjdXJhY3kpCiB7CiAgICAgQVNTRVJUKCFtX2lzQWN0aXZlKTsK
ICAgICBVTlVTRURfUEFSQU0oYXV0aG9yaXphdGlvblRva2VuKTsKKyAgICBVTlVTRURfUEFSQU0o
ZW5hYmxlSGlnaEFjY3VyYWN5KTsKICAgICBtX2lzQWN0aXZlID0gdHJ1ZTsKICAgICBhc3luY1Vw
ZGF0ZUNvbnRyb2xsZXIoKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L21vY2svR2VvbG9jYXRpb25DbGllbnRNb2NrLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9t
b2NrL0dlb2xvY2F0aW9uQ2xpZW50TW9jay5oCmluZGV4IDJmYTc1ZTA1N2E1M2Q3ZTgxOGNjZmFm
ZWU3MDI0M2RkNTQ4MjE4NDUuLmY4YmFjMzhiNWI2Y2NjOGNjMDhmODcwNzFlYmM3NWQ2NWIzMTA2
NDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svR2VvbG9jYXRpb25D
bGllbnRNb2NrLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9HZW9sb2NhdGlv
bkNsaWVudE1vY2suaApAQCAtNTksNyArNTksNyBAQCBwdWJsaWM6CiAKICAgICAvLyBHZW9sb2Nh
dGlvbkNsaWVudAogICAgIHZvaWQgZ2VvbG9jYXRpb25EZXN0cm95ZWQoKSBvdmVycmlkZTsKLSAg
ICB2b2lkIHN0YXJ0VXBkYXRpbmcoY29uc3QgU3RyaW5nJiBhdXRob3JpemF0aW9uVG9rZW4pIG92
ZXJyaWRlOworICAgIHZvaWQgc3RhcnRVcGRhdGluZyhjb25zdCBTdHJpbmcmIGF1dGhvcml6YXRp
b25Ub2tlbiwgYm9vbCBlbmFibGVIaWdoQWNjdXJhY3kpIG92ZXJyaWRlOwogICAgIHZvaWQgc3Rv
cFVwZGF0aW5nKCkgb3ZlcnJpZGU7CiAgICAgdm9pZCBzZXRFbmFibGVIaWdoQWNjdXJhY3koYm9v
bCkgb3ZlcnJpZGU7CiAgICAgc3RkOjpvcHRpb25hbDxHZW9sb2NhdGlvblBvc2l0aW9uRGF0YT4g
bGFzdFBvc2l0aW9uKCkgb3ZlcnJpZGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NvdXJj
ZXNDb2NvYS50eHQgYi9Tb3VyY2UvV2ViS2l0L1NvdXJjZXNDb2NvYS50eHQKaW5kZXggMmFjZGE5
NDFlY2RmNGJjYmU3ZmU5NGE1MTgxNzQ5MWYxYzBiZjM5YS4uMzlmZWE5MWNlNTYxNzU4MTYwYWQ5
MjE4OTg5NDUzZTU4M2VkNjQ2MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9Tb3VyY2VzQ29j
b2EudHh0CisrKyBiL1NvdXJjZS9XZWJLaXQvU291cmNlc0NvY29hLnR4dApAQCAtNDI3LDYgKzQy
Nyw3IEBAIFVJUHJvY2Vzcy9Db2NvYS9VSVJlbW90ZU9iamVjdFJlZ2lzdHJ5LmNwcAogVUlQcm9j
ZXNzL0NvY29hL1VzZXJNZWRpYUNhcHR1cmVNYW5hZ2VyUHJveHkuY3BwCiBVSVByb2Nlc3MvQ29j
b2EvVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyUHJveHkubW0KIFVJUHJvY2Vzcy9D
b2NvYS9WaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyUHJveHkubW0KK1VJUHJvY2Vzcy9Db2NvYS9XZWJH
ZW9sb2NhdGlvbk1hbmFnZXJQcm94eUNvY29hLmNwcAogVUlQcm9jZXNzL0NvY29hL1dlYlBhZ2VQ
cm94eUNvY29hLm1tCiBVSVByb2Nlc3MvQ29jb2EvV2ViUGFzdGVib2FyZFByb3h5Q29jb2EubW0K
IFVJUHJvY2Vzcy9Db2NvYS9XZWJQcmVmZXJlbmNlc0NvY29hLm1tCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XZWJHZW9sb2NhdGlvbk1hbmFnZXJQcm94eUNvY29h
LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dlYkdlb2xvY2F0aW9uTWFuYWdl
clByb3h5Q29jb2EuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmYwYmZiZGU5MzIyMmIxMDU3ZjE3MzZiNzI5MjIw
MTIzMmIwMjU2OGYKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9D
b2NvYS9XZWJHZW9sb2NhdGlvbk1hbmFnZXJQcm94eUNvY29hLmNwcApAQCAtMCwwICsxLDc2IEBA
CisvKgorICogQ29weXJpZ2h0IChDKSAyMDIyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElO
Qy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRI
RSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxM
IEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VS
RU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBE
QVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIldlYkdlb2xvY2F0
aW9uTWFuYWdlclByb3h5LmgiCisKKyNpbmNsdWRlICJXZWJHZW9sb2NhdGlvbk1hbmFnZXJNZXNz
YWdlcy5oIgorI2luY2x1ZGUgIldlYlByb2Nlc3NQcm94eS5oIgorCituYW1lc3BhY2UgV2ViS2l0
IHsKKworLy8gRklYTUU6IFRoaXMgc2hvdWxkIGJlIHVzZWQgYnkgYWxsIENvY29hIHBvcnRzCisj
aWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKKwordm9pZCBXZWJHZW9sb2NhdGlvbk1hbmFnZXJQcm94
eTo6cG9zaXRpb25DaGFuZ2VkKGNvbnN0IFN0cmluZyYgd2Vic2l0ZUlkZW50aWZpZXIsIFdlYkNv
cmU6Okdlb2xvY2F0aW9uUG9zaXRpb25EYXRhJiYgcG9zaXRpb24pCit7CisgICAgYXV0byByZWdp
c3RyYWJsZURvbWFpbiA9IFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluOjp1bmNoZWNrZWRDcmVh
dGVGcm9tUmVnaXN0cmFibGVEb21haW5TdHJpbmcod2Vic2l0ZUlkZW50aWZpZXIpOworICAgIGF1
dG8gaXQgPSBtX3BlckRvbWFpbkRhdGEuZmluZChyZWdpc3RyYWJsZURvbWFpbik7CisgICAgaWYg
KGl0ID09IG1fcGVyRG9tYWluRGF0YS5lbmQoKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgYXV0
byYgcGVyRG9tYWluRGF0YSA9ICppdC0+dmFsdWU7CisgICAgcGVyRG9tYWluRGF0YS5sYXN0UG9z
aXRpb24gPSBXVEZNb3ZlKHBvc2l0aW9uKTsKKyAgICBmb3IgKGF1dG8mIHdlYlByb2Nlc3NQcm94
eSA6IHBlckRvbWFpbkRhdGEud2F0Y2hlcnMpCisgICAgICAgIHdlYlByb2Nlc3NQcm94eS5zZW5k
KE1lc3NhZ2VzOjpXZWJHZW9sb2NhdGlvbk1hbmFnZXI6OkRpZENoYW5nZVBvc2l0aW9uKHJlZ2lz
dHJhYmxlRG9tYWluLCBwZXJEb21haW5EYXRhLmxhc3RQb3NpdGlvbi52YWx1ZSgpKSwgMCk7Cit9
CisKK3ZvaWQgV2ViR2VvbG9jYXRpb25NYW5hZ2VyUHJveHk6OmVycm9yT2NjdXJyZWQoY29uc3Qg
U3RyaW5nJiB3ZWJzaXRlSWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiBlcnJvck1lc3NhZ2UpCit7
CisgICAgYXV0byByZWdpc3RyYWJsZURvbWFpbiA9IFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWlu
Ojp1bmNoZWNrZWRDcmVhdGVGcm9tUmVnaXN0cmFibGVEb21haW5TdHJpbmcod2Vic2l0ZUlkZW50
aWZpZXIpOworICAgIGF1dG8gaXQgPSBtX3BlckRvbWFpbkRhdGEuZmluZChyZWdpc3RyYWJsZURv
bWFpbik7CisgICAgaWYgKGl0ID09IG1fcGVyRG9tYWluRGF0YS5lbmQoKSkKKyAgICAgICAgcmV0
dXJuOworCisgICAgYXV0byYgcGVyRG9tYWluRGF0YSA9ICppdC0+dmFsdWU7CisgICAgZm9yIChh
dXRvJiB3ZWJQcm9jZXNzUHJveHkgOiBwZXJEb21haW5EYXRhLndhdGNoZXJzKQorICAgICAgICB3
ZWJQcm9jZXNzUHJveHkuc2VuZChNZXNzYWdlczo6V2ViR2VvbG9jYXRpb25NYW5hZ2VyOjpEaWRG
YWlsVG9EZXRlcm1pbmVQb3NpdGlvbihyZWdpc3RyYWJsZURvbWFpbiwgZXJyb3JNZXNzYWdlKSwg
MCk7Cit9CisKK3ZvaWQgV2ViR2VvbG9jYXRpb25NYW5hZ2VyUHJveHk6OnJlc2V0R2VvbG9jYXRp
b24oY29uc3QgU3RyaW5nJiB3ZWJzaXRlSWRlbnRpZmllcikKK3sKKyAgICBhdXRvIHJlZ2lzdHJh
YmxlRG9tYWluID0gV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW46OnVuY2hlY2tlZENyZWF0ZUZy
b21SZWdpc3RyYWJsZURvbWFpblN0cmluZyh3ZWJzaXRlSWRlbnRpZmllcik7CisgICAgYXV0byBp
dCA9IG1fcGVyRG9tYWluRGF0YS5maW5kKHJlZ2lzdHJhYmxlRG9tYWluKTsKKyAgICBpZiAoaXQg
PT0gbV9wZXJEb21haW5EYXRhLmVuZCgpKQorICAgICAgICByZXR1cm47CisKKyAgICBhdXRvJiBw
ZXJEb21haW5EYXRhID0gKml0LT52YWx1ZTsKKyAgICBmb3IgKGF1dG8mIHdlYlByb2Nlc3NQcm94
eSA6IHBlckRvbWFpbkRhdGEud2F0Y2hlcnMpCisgICAgICAgIHdlYlByb2Nlc3NQcm94eS5zZW5k
KE1lc3NhZ2VzOjpXZWJHZW9sb2NhdGlvbk1hbmFnZXI6OlJlc2V0UGVybWlzc2lvbnMocmVnaXN0
cmFibGVEb21haW4pLCAwKTsKK30KKworI2VuZGlmCisKK30gLy8gbmFtZXNwYWNlIFdlYktpdApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQ29udGV4dFN1cHBsZW1lbnQu
aCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkNvbnRleHRTdXBwbGVtZW50LmgKaW5kZXgg
ZWQ1NWI0MDNkYjI5Zjk0MDA0MzhiYTMyYTYwYzc1ODI3NDkzNGZhNi4uZWMxOWNkY2NjYmI0MGY5
MmQ1ODM1ZjNlYTYwMzFiZGRhNDc3YThlMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvV2ViQ29udGV4dFN1cHBsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9XZWJDb250ZXh0U3VwcGxlbWVudC5oCkBAIC00NywxNCArNDcsNiBAQCBwdWJsaWM6CiAgICAg
ewogICAgIH0KIAotICAgIHZpcnR1YWwgdm9pZCBwcm9jZXNzRGlkQ2xvc2UoV2ViUHJvY2Vzc1By
b3h5KikKLSAgICB7Ci0gICAgfQotCi0gICAgdmlydHVhbCB2b2lkIHByb2Nlc3NEaWRDbG9zZShO
ZXR3b3JrUHJvY2Vzc1Byb3h5KikKLSAgICB7Ci0gICAgfQotCiAgICAgV2ViUHJvY2Vzc1Bvb2wq
IHByb2Nlc3NQb29sKCkgY29uc3QgeyByZXR1cm4gbV9wcm9jZXNzUG9vbDsgfQogICAgIHZvaWQg
Y2xlYXJQcm9jZXNzUG9vbCgpIHsgbV9wcm9jZXNzUG9vbCA9IG51bGxwdHI7IH0KIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViR2VvbG9jYXRpb25NYW5hZ2VyUHJveHku
Y3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViR2VvbG9jYXRpb25NYW5hZ2VyUHJveHku
Y3BwCmluZGV4IDA0ZjMyMjdjZDU1Yzk5MmE0MmNkOTZhM2YyNWQ2OTdhZWQ3OTY1YTIuLjU2NjU3
NGQzZTcxMjMyODU1ZGRjYzZjMWRlNDAzN2MxMzY2NDQ2NWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL1dlYkdlb2xvY2F0aW9uTWFuYWdlclByb3h5LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJHZW9sb2NhdGlvbk1hbmFnZXJQcm94eS5jcHAKQEAgLTEs
NSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDExLCAyMDEyLCAyMDEzIEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMS0yMDIyIEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cwpAQCAtMzQsMTAgKzM0LDE1IEBACiAjaW5jbHVkZSAiV2ViUGFnZVByb3h5LmgiCiAjaW5jbHVk
ZSAiV2ViUHJvY2Vzc1Bvb2wuaCIKIAotI2RlZmluZSBNRVNTQUdFX0NIRUNLKGFzc2VydGlvbikg
TUVTU0FHRV9DSEVDS19CQVNFKGFzc2VydGlvbiwgKCZjb25uZWN0aW9uKSkKKyNkZWZpbmUgTUVT
U0FHRV9DSEVDSyhjb25uZWN0aW9uLCBhc3NlcnRpb24pIE1FU1NBR0VfQ0hFQ0tfQkFTRShhc3Nl
cnRpb24sIChjb25uZWN0aW9uKSkKIAogbmFtZXNwYWNlIFdlYktpdCB7CiAKK3N0YXRpYyBpbmxp
bmUgV2ViUHJvY2Vzc1Byb3h5JiBjb25uZWN0aW9uVG9XZWJQcm9jZXNzUHJveHkoY29uc3QgSVBD
OjpDb25uZWN0aW9uJiBjb25uZWN0aW9uKQoreworICAgIHJldHVybiBzdGF0aWNfY2FzdDxXZWJQ
cm9jZXNzUHJveHkmPihjb25uZWN0aW9uLmNsaWVudCgpKTsKK30KKwogY29uc3QgY2hhciogV2Vi
R2VvbG9jYXRpb25NYW5hZ2VyUHJveHk6OnN1cHBsZW1lbnROYW1lKCkKIHsKICAgICByZXR1cm4g
IldlYkdlb2xvY2F0aW9uTWFuYWdlclByb3h5IjsKQEAgLTUwLDM0ICs1NSwzOCBAQCBSZWY8V2Vi
R2VvbG9jYXRpb25NYW5hZ2VyUHJveHk+IFdlYkdlb2xvY2F0aW9uTWFuYWdlclByb3h5OjpjcmVh
dGUoV2ViUHJvY2Vzc1BvbwogCiBXZWJHZW9sb2NhdGlvbk1hbmFnZXJQcm94eTo6V2ViR2VvbG9j
YXRpb25NYW5hZ2VyUHJveHkoV2ViUHJvY2Vzc1Bvb2wqIHByb2Nlc3NQb29sKQogICAgIDogV2Vi
Q29udGV4dFN1cHBsZW1lbnQocHJvY2Vzc1Bvb2wpCi0gICAgLCBtX3Byb3ZpZGVyKG1ha2VVbmlx
dWU8QVBJOjpHZW9sb2NhdGlvblByb3ZpZGVyPigpKQogewogICAgIFdlYkNvbnRleHRTdXBwbGVt
ZW50Ojpwcm9jZXNzUG9vbCgpLT5hZGRNZXNzYWdlUmVjZWl2ZXIoTWVzc2FnZXM6OldlYkdlb2xv
Y2F0aW9uTWFuYWdlclByb3h5OjptZXNzYWdlUmVjZWl2ZXJOYW1lKCksICp0aGlzKTsKIH0KIAor
V2ViR2VvbG9jYXRpb25NYW5hZ2VyUHJveHk6On5XZWJHZW9sb2NhdGlvbk1hbmFnZXJQcm94eSgp
ID0gZGVmYXVsdDsKKwogdm9pZCBXZWJHZW9sb2NhdGlvbk1hbmFnZXJQcm94eTo6c2V0UHJvdmlk
ZXIoc3RkOjp1bmlxdWVfcHRyPEFQSTo6R2VvbG9jYXRpb25Qcm92aWRlcj4mJiBwcm92aWRlcikK
IHsKLSAgICBpZiAoIXByb3ZpZGVyKQotICAgICAgICBtX3Byb3ZpZGVyID0gbWFrZVVuaXF1ZTxB
UEk6Okdlb2xvY2F0aW9uUHJvdmlkZXI+KCk7Ci0gICAgZWxzZQotICAgICAgICBtX3Byb3ZpZGVy
ID0gV1RGTW92ZShwcm92aWRlcik7CisgICAgbV9jbGllbnRQcm92aWRlciA9IFdURk1vdmUocHJv
dmlkZXIpOwogfQogCiAvLyBXZWJDb250ZXh0U3VwcGxlbWVudAogCiB2b2lkIFdlYkdlb2xvY2F0
aW9uTWFuYWdlclByb3h5Ojpwcm9jZXNzUG9vbERlc3Ryb3llZCgpCiB7Ci0gICAgYm9vbCB3YXNV
cGRhdGluZyA9IGlzVXBkYXRpbmcoKTsKLSAgICBtX3VwZGF0ZVJlcXVlc3RlcnMuY2xlYXIoKTsK
KyAgICBpZiAobV9wZXJEb21haW5EYXRhLmlzRW1wdHkoKSkKKyAgICAgICAgcmV0dXJuOwogCi0g
ICAgQVNTRVJUKCFpc1VwZGF0aW5nKCkpOwotICAgIGlmICh3YXNVcGRhdGluZykKLSAgICAgICAg
bV9wcm92aWRlci0+c3RvcFVwZGF0aW5nKCp0aGlzKTsKKyAgICBtX3BlckRvbWFpbkRhdGEuY2xl
YXIoKTsKKyAgICBpZiAobV9jbGllbnRQcm92aWRlcikKKyAgICAgICAgbV9jbGllbnRQcm92aWRl
ci0+c3RvcFVwZGF0aW5nKCp0aGlzKTsKIH0KIAotdm9pZCBXZWJHZW9sb2NhdGlvbk1hbmFnZXJQ
cm94eTo6cHJvY2Vzc0RpZENsb3NlKFdlYlByb2Nlc3NQcm94eSogd2ViUHJvY2Vzc1Byb3h5KQor
dm9pZCBXZWJHZW9sb2NhdGlvbk1hbmFnZXJQcm94eTo6d2ViUHJvY2Vzc0lzR29pbmdBd2F5KFdl
YlByb2Nlc3NQcm94eSYgcHJveHkpCiB7Ci0gICAgcmVtb3ZlUmVxdWVzdGVyKHdlYlByb2Nlc3NQ
cm94eSk7CisgICAgVmVjdG9yPFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluPiBhZmZlY3RlZERv
bWFpbnM7CisgICAgZm9yIChhdXRvJiBbcmVnaXN0cmFibGVEb21haW4sIHBlckRvbWFpbkRhdGFd
IDogbV9wZXJEb21haW5EYXRhKSB7CisgICAgICAgIGlmIChwZXJEb21haW5EYXRhLT53YXRjaGVy
cy5jb250YWlucyhwcm94eSkpCisgICAgICAgICAgICBhZmZlY3RlZERvbWFpbnMuYXBwZW5kKHJl
Z2lzdHJhYmxlRG9tYWluKTsKKyAgICB9CisgICAgZm9yIChhdXRvJiByZWdpc3RyYWJsZURvbWFp
biA6IGFmZmVjdGVkRG9tYWlucykKKyAgICAgICAgc3RvcFVwZGF0aW5nV2l0aFByb3h5KHByb3h5
LCByZWdpc3RyYWJsZURvbWFpbik7CiB9CiAKIHZvaWQgV2ViR2VvbG9jYXRpb25NYW5hZ2VyUHJv
eHk6OnJlZldlYkNvbnRleHRTdXBwbGVtZW50KCkKQEAgLTkyLDgwICsxMDEsMjA0IEBAIHZvaWQg
V2ViR2VvbG9jYXRpb25NYW5hZ2VyUHJveHk6OmRlcmVmV2ViQ29udGV4dFN1cHBsZW1lbnQoKQog
CiB2b2lkIFdlYkdlb2xvY2F0aW9uTWFuYWdlclByb3h5Ojpwcm92aWRlckRpZENoYW5nZVBvc2l0
aW9uKFdlYkdlb2xvY2F0aW9uUG9zaXRpb24qIHBvc2l0aW9uKQogewotICAgIG1fbGFzdFBvc2l0
aW9uID0gcG9zaXRpb24tPmNvcmVQb3NpdGlvbigpOwotCi0gICAgaWYgKCFwcm9jZXNzUG9vbCgp
KQotICAgICAgICByZXR1cm47Ci0KLSAgICBwcm9jZXNzUG9vbCgpLT5zZW5kVG9BbGxQcm9jZXNz
ZXMoTWVzc2FnZXM6OldlYkdlb2xvY2F0aW9uTWFuYWdlcjo6RGlkQ2hhbmdlUG9zaXRpb24obV9s
YXN0UG9zaXRpb24udmFsdWUoKSkpOworICAgIGZvciAoYXV0byYgW3JlZ2lzdHJhYmxlRG9tYWlu
LCBwZXJEb21haW5EYXRhXSA6IG1fcGVyRG9tYWluRGF0YSkgeworICAgICAgICBwZXJEb21haW5E
YXRhLT5sYXN0UG9zaXRpb24gPSBwb3NpdGlvbi0+Y29yZVBvc2l0aW9uKCk7CisgICAgICAgIGZv
ciAoYXV0byYgcHJvY2VzcyA6IHBlckRvbWFpbkRhdGEtPndhdGNoZXJzKQorICAgICAgICAgICAg
cHJvY2Vzcy5zZW5kKE1lc3NhZ2VzOjpXZWJHZW9sb2NhdGlvbk1hbmFnZXI6OkRpZENoYW5nZVBv
c2l0aW9uKHJlZ2lzdHJhYmxlRG9tYWluLCBwZXJEb21haW5EYXRhLT5sYXN0UG9zaXRpb24udmFs
dWUoKSksIDApOworICAgIH0KIH0KIAogdm9pZCBXZWJHZW9sb2NhdGlvbk1hbmFnZXJQcm94eTo6
cHJvdmlkZXJEaWRGYWlsVG9EZXRlcm1pbmVQb3NpdGlvbihjb25zdCBTdHJpbmcmIGVycm9yTWVz
c2FnZSkKIHsKLSAgICBpZiAoIXByb2Nlc3NQb29sKCkpCi0gICAgICAgIHJldHVybjsKLQotICAg
IHByb2Nlc3NQb29sKCktPnNlbmRUb0FsbFByb2Nlc3NlcyhNZXNzYWdlczo6V2ViR2VvbG9jYXRp
b25NYW5hZ2VyOjpEaWRGYWlsVG9EZXRlcm1pbmVQb3NpdGlvbihlcnJvck1lc3NhZ2UpKTsKKyAg
ICBmb3IgKGF1dG8mIFtyZWdpc3RyYWJsZURvbWFpbiwgcGVyRG9tYWluRGF0YV0gOiBtX3BlckRv
bWFpbkRhdGEpIHsKKyAgICAgICAgZm9yIChhdXRvJiBwcm94eSA6IHBlckRvbWFpbkRhdGEtPndh
dGNoZXJzKQorICAgICAgICAgICAgcHJveHkuc2VuZChNZXNzYWdlczo6V2ViR2VvbG9jYXRpb25N
YW5hZ2VyOjpEaWRGYWlsVG9EZXRlcm1pbmVQb3NpdGlvbihyZWdpc3RyYWJsZURvbWFpbiwgZXJy
b3JNZXNzYWdlKSwgMCk7CisgICAgfQogfQogCiAjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKIHZv
aWQgV2ViR2VvbG9jYXRpb25NYW5hZ2VyUHJveHk6OnJlc2V0UGVybWlzc2lvbnMoKQogewotICAg
IHByb2Nlc3NQb29sKCktPnNlbmRUb0FsbFByb2Nlc3NlcyhNZXNzYWdlczo6V2ViR2VvbG9jYXRp
b25NYW5hZ2VyOjpSZXNldFBlcm1pc3Npb25zKCkpOworICAgIEFTU0VSVChtX2NsaWVudFByb3Zp
ZGVyKTsKKyAgICBmb3IgKGF1dG8mIFtyZWdpc3RyYWJsZURvbWFpbiwgcGVyRG9tYWluRGF0YV0g
OiBtX3BlckRvbWFpbkRhdGEpIHsKKyAgICAgICAgZm9yIChhdXRvJiBwcm94eSA6IHBlckRvbWFp
bkRhdGEtPndhdGNoZXJzKQorICAgICAgICAgICAgcHJveHkuc2VuZChNZXNzYWdlczo6V2ViR2Vv
bG9jYXRpb25NYW5hZ2VyOjpSZXNldFBlcm1pc3Npb25zKHJlZ2lzdHJhYmxlRG9tYWluKSwgMCk7
CisgICAgfQogfQogI2VuZGlmCiAKLXZvaWQgV2ViR2VvbG9jYXRpb25NYW5hZ2VyUHJveHk6OnN0
YXJ0VXBkYXRpbmcoSVBDOjpDb25uZWN0aW9uJiBjb25uZWN0aW9uLCBXZWJQYWdlUHJveHlJZGVu
dGlmaWVyIHBhZ2VQcm94eUlELCBjb25zdCBTdHJpbmcmIGF1dGhvcml6YXRpb25Ub2tlbikKK3Zv
aWQgV2ViR2VvbG9jYXRpb25NYW5hZ2VyUHJveHk6OnN0YXJ0VXBkYXRpbmcoSVBDOjpDb25uZWN0
aW9uJiBjb25uZWN0aW9uLCBjb25zdCBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiYgcmVnaXN0
cmFibGVEb21haW4sIFdlYlBhZ2VQcm94eUlkZW50aWZpZXIgcGFnZVByb3h5SUQsIGNvbnN0IFN0
cmluZyYgYXV0aG9yaXphdGlvblRva2VuLCBib29sIGVuYWJsZUhpZ2hBY2N1cmFjeSkKK3sKKyAg
ICBzdGFydFVwZGF0aW5nV2l0aFByb3h5KGNvbm5lY3Rpb25Ub1dlYlByb2Nlc3NQcm94eShjb25u
ZWN0aW9uKSwgcmVnaXN0cmFibGVEb21haW4sIHBhZ2VQcm94eUlELCBhdXRob3JpemF0aW9uVG9r
ZW4sIGVuYWJsZUhpZ2hBY2N1cmFjeSk7Cit9CisKK3ZvaWQgV2ViR2VvbG9jYXRpb25NYW5hZ2Vy
UHJveHk6OnN0YXJ0VXBkYXRpbmdXaXRoUHJveHkoV2ViUHJvY2Vzc1Byb3h5JiBwcm94eSwgY29u
c3QgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4mIHJlZ2lzdHJhYmxlRG9tYWluLCBXZWJQYWdl
UHJveHlJZGVudGlmaWVyIHBhZ2VQcm94eUlELCBjb25zdCBTdHJpbmcmIGF1dGhvcml6YXRpb25U
b2tlbiwgYm9vbCBlbmFibGVIaWdoQWNjdXJhY3kpCiB7CiAgICAgYXV0byogcGFnZSA9IFdlYlBy
b2Nlc3NQcm94eTo6d2ViUGFnZShwYWdlUHJveHlJRCk7Ci0gICAgTUVTU0FHRV9DSEVDSyhwYWdl
KTsKKyAgICBNRVNTQUdFX0NIRUNLKHByb3h5LmNvbm5lY3Rpb24oKSwgcGFnZSk7CiAKICAgICBh
dXRvIGlzVmFsaWRBdXRob3JpemF0aW9uVG9rZW4gPSBwYWdlLT5nZW9sb2NhdGlvblBlcm1pc3Np
b25SZXF1ZXN0TWFuYWdlcigpLmlzVmFsaWRBdXRob3JpemF0aW9uVG9rZW4oYXV0aG9yaXphdGlv
blRva2VuKTsKLSAgICBNRVNTQUdFX0NIRUNLKGlzVmFsaWRBdXRob3JpemF0aW9uVG9rZW4pOwor
ICAgIE1FU1NBR0VfQ0hFQ0socHJveHkuY29ubmVjdGlvbigpLCBpc1ZhbGlkQXV0aG9yaXphdGlv
blRva2VuKTsKKworICAgIGF1dG8mIHBlckRvbWFpbkRhdGEgPSAqbV9wZXJEb21haW5EYXRhLmVu
c3VyZShyZWdpc3RyYWJsZURvbWFpbiwgW10geworICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZTxQ
ZXJEb21haW5EYXRhPigpOworICAgIH0pLml0ZXJhdG9yLT52YWx1ZTsKKworICAgIGJvb2wgd2Fz
VXBkYXRpbmcgPSBpc1VwZGF0aW5nKHBlckRvbWFpbkRhdGEpOworICAgIGJvb2wgaGlnaEFjY3Vy
YWN5V2FzRW5hYmxlZCA9IGlzSGlnaEFjY3VyYWN5RW5hYmxlZChwZXJEb21haW5EYXRhKTsKKwor
ICAgIHBlckRvbWFpbkRhdGEud2F0Y2hlcnMuYWRkKHByb3h5KTsKKyAgICBpZiAoZW5hYmxlSGln
aEFjY3VyYWN5KQorICAgICAgICBwZXJEb21haW5EYXRhLndhdGNoZXJzTmVlZGluZ0hpZ2hBY2N1
cmFjeS5hZGQocHJveHkpOwogCi0gICAgYm9vbCB3YXNVcGRhdGluZyA9IGlzVXBkYXRpbmcoKTsK
LSAgICBtX3VwZGF0ZVJlcXVlc3RlcnMuYWRkKCZjb25uZWN0aW9uLmNsaWVudCgpKTsKICAgICBp
ZiAoIXdhc1VwZGF0aW5nKSB7Ci0gICAgICAgIG1fcHJvdmlkZXItPnNldEVuYWJsZUhpZ2hBY2N1
cmFjeSgqdGhpcywgaXNIaWdoQWNjdXJhY3lFbmFibGVkKCkpOwotICAgICAgICBtX3Byb3ZpZGVy
LT5zdGFydFVwZGF0aW5nKCp0aGlzKTsKLSAgICB9IGVsc2UgaWYgKG1fbGFzdFBvc2l0aW9uKQot
ICAgICAgICBjb25uZWN0aW9uLnNlbmQoTWVzc2FnZXM6OldlYkdlb2xvY2F0aW9uTWFuYWdlcjo6
RGlkQ2hhbmdlUG9zaXRpb24obV9sYXN0UG9zaXRpb24udmFsdWUoKSksIDApOworICAgICAgICBw
cm92aWRlclN0YXJ0VXBkYXRpbmcocGVyRG9tYWluRGF0YSwgcmVnaXN0cmFibGVEb21haW4pOwor
ICAgICAgICByZXR1cm47CisgICAgfQorICAgIGlmICghaGlnaEFjY3VyYWN5V2FzRW5hYmxlZCAm
JiBlbmFibGVIaWdoQWNjdXJhY3kpCisgICAgICAgIHByb3ZpZGVyU2V0RW5hYmxlZEhpZ2hBY2N1
cmFjeShwZXJEb21haW5EYXRhLCBlbmFibGVIaWdoQWNjdXJhY3kpOworCisgICAgaWYgKHBlckRv
bWFpbkRhdGEubGFzdFBvc2l0aW9uKQorICAgICAgICBwcm94eS5zZW5kKE1lc3NhZ2VzOjpXZWJH
ZW9sb2NhdGlvbk1hbmFnZXI6OkRpZENoYW5nZVBvc2l0aW9uKHJlZ2lzdHJhYmxlRG9tYWluLCBw
ZXJEb21haW5EYXRhLmxhc3RQb3NpdGlvbi52YWx1ZSgpKSwgMCk7CiB9CiAKLXZvaWQgV2ViR2Vv
bG9jYXRpb25NYW5hZ2VyUHJveHk6OnN0b3BVcGRhdGluZyhJUEM6OkNvbm5lY3Rpb24mIGNvbm5l
Y3Rpb24pCit2b2lkIFdlYkdlb2xvY2F0aW9uTWFuYWdlclByb3h5OjpzdG9wVXBkYXRpbmcoSVBD
OjpDb25uZWN0aW9uJiBjb25uZWN0aW9uLCBjb25zdCBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFp
biYgcmVnaXN0cmFibGVEb21haW4pCiB7Ci0gICAgcmVtb3ZlUmVxdWVzdGVyKCZjb25uZWN0aW9u
LmNsaWVudCgpKTsKKyAgICBzdG9wVXBkYXRpbmdXaXRoUHJveHkoY29ubmVjdGlvblRvV2ViUHJv
Y2Vzc1Byb3h5KGNvbm5lY3Rpb24pLCByZWdpc3RyYWJsZURvbWFpbik7CiB9CiAKLXZvaWQgV2Vi
R2VvbG9jYXRpb25NYW5hZ2VyUHJveHk6OnJlbW92ZVJlcXVlc3Rlcihjb25zdCBJUEM6OkNvbm5l
Y3Rpb246OkNsaWVudCogY2xpZW50KQordm9pZCBXZWJHZW9sb2NhdGlvbk1hbmFnZXJQcm94eTo6
c3RvcFVwZGF0aW5nV2l0aFByb3h5KFdlYlByb2Nlc3NQcm94eSYgcHJveHksIGNvbnN0IFdlYkNv
cmU6OlJlZ2lzdHJhYmxlRG9tYWluJiByZWdpc3RyYWJsZURvbWFpbikKIHsKLSAgICBib29sIHdh
c1VwZGF0aW5nID0gaXNVcGRhdGluZygpOwotICAgIGJvb2wgaGlnaEFjY3VyYWN5V2FzRW5hYmxl
ZCA9IGlzSGlnaEFjY3VyYWN5RW5hYmxlZCgpOworICAgIGF1dG8gaXQgPSBtX3BlckRvbWFpbkRh
dGEuZmluZChyZWdpc3RyYWJsZURvbWFpbik7CisgICAgaWYgKGl0ID09IG1fcGVyRG9tYWluRGF0
YS5lbmQoKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgYXV0byYgcGVyRG9tYWluRGF0YSA9ICpp
dC0+dmFsdWU7CisgICAgYm9vbCB3YXNVcGRhdGluZyA9IGlzVXBkYXRpbmcocGVyRG9tYWluRGF0
YSk7CisgICAgYm9vbCBoaWdoQWNjdXJhY3lXYXNFbmFibGVkID0gaXNIaWdoQWNjdXJhY3lFbmFi
bGVkKHBlckRvbWFpbkRhdGEpOwogCi0gICAgbV9oaWdoQWNjdXJhY3lSZXF1ZXN0ZXJzLnJlbW92
ZShjbGllbnQpOwotICAgIG1fdXBkYXRlUmVxdWVzdGVycy5yZW1vdmUoY2xpZW50KTsKKyAgICBw
ZXJEb21haW5EYXRhLndhdGNoZXJzLnJlbW92ZShwcm94eSk7CisgICAgcGVyRG9tYWluRGF0YS53
YXRjaGVyc05lZWRpbmdIaWdoQWNjdXJhY3kucmVtb3ZlKHByb3h5KTsKIAotICAgIGlmICh3YXNV
cGRhdGluZyAmJiAhaXNVcGRhdGluZygpKQotICAgICAgICBtX3Byb3ZpZGVyLT5zdG9wVXBkYXRp
bmcoKnRoaXMpOworICAgIGlmICh3YXNVcGRhdGluZyAmJiAhaXNVcGRhdGluZyhwZXJEb21haW5E
YXRhKSkKKyAgICAgICAgcHJvdmlkZXJTdG9wVXBkYXRpbmcocGVyRG9tYWluRGF0YSk7CiAgICAg
ZWxzZSB7Ci0gICAgICAgIGJvb2wgaGlnaEFjY3VyYWN5U2hvdWxkQmVFbmFibGVkID0gaXNIaWdo
QWNjdXJhY3lFbmFibGVkKCk7CisgICAgICAgIGJvb2wgaGlnaEFjY3VyYWN5U2hvdWxkQmVFbmFi
bGVkID0gaXNIaWdoQWNjdXJhY3lFbmFibGVkKHBlckRvbWFpbkRhdGEpOwogICAgICAgICBpZiAo
aGlnaEFjY3VyYWN5U2hvdWxkQmVFbmFibGVkICE9IGhpZ2hBY2N1cmFjeVdhc0VuYWJsZWQpCi0g
ICAgICAgICAgICBtX3Byb3ZpZGVyLT5zZXRFbmFibGVIaWdoQWNjdXJhY3koKnRoaXMsIGhpZ2hB
Y2N1cmFjeVNob3VsZEJlRW5hYmxlZCk7CisgICAgICAgICAgICBwcm92aWRlclNldEVuYWJsZWRI
aWdoQWNjdXJhY3kocGVyRG9tYWluRGF0YSwgaGlnaEFjY3VyYWN5U2hvdWxkQmVFbmFibGVkKTsK
ICAgICB9CisKKyAgICBpZiAocGVyRG9tYWluRGF0YS53YXRjaGVycy5jb21wdXRlc0VtcHR5KCkg
JiYgcGVyRG9tYWluRGF0YS53YXRjaGVyc05lZWRpbmdIaWdoQWNjdXJhY3kuY29tcHV0ZXNFbXB0
eSgpKQorICAgICAgICBtX3BlckRvbWFpbkRhdGEucmVtb3ZlKGl0KTsKK30KKwordm9pZCBXZWJH
ZW9sb2NhdGlvbk1hbmFnZXJQcm94eTo6c2V0RW5hYmxlSGlnaEFjY3VyYWN5KElQQzo6Q29ubmVj
dGlvbiYgY29ubmVjdGlvbiwgY29uc3QgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4mIHJlZ2lz
dHJhYmxlRG9tYWluLCBib29sIGVuYWJsZWQpCit7CisgICAgc2V0RW5hYmxlSGlnaEFjY3VyYWN5
V2l0aFByb3h5KGNvbm5lY3Rpb25Ub1dlYlByb2Nlc3NQcm94eShjb25uZWN0aW9uKSwgcmVnaXN0
cmFibGVEb21haW4sIGVuYWJsZWQpOwogfQogCi12b2lkIFdlYkdlb2xvY2F0aW9uTWFuYWdlclBy
b3h5OjpzZXRFbmFibGVIaWdoQWNjdXJhY3koSVBDOjpDb25uZWN0aW9uJiBjb25uZWN0aW9uLCBi
b29sIGVuYWJsZWQpCit2b2lkIFdlYkdlb2xvY2F0aW9uTWFuYWdlclByb3h5OjpzZXRFbmFibGVI
aWdoQWNjdXJhY3lXaXRoUHJveHkoV2ViUHJvY2Vzc1Byb3h5JiBwcm94eSwgY29uc3QgV2ViQ29y
ZTo6UmVnaXN0cmFibGVEb21haW4mIHJlZ2lzdHJhYmxlRG9tYWluLCBib29sIGVuYWJsZWQpCiB7
Ci0gICAgYm9vbCBoaWdoQWNjdXJhY3lXYXNFbmFibGVkID0gaXNIaWdoQWNjdXJhY3lFbmFibGVk
KCk7CisgICAgYXV0byBpdCA9IG1fcGVyRG9tYWluRGF0YS5maW5kKHJlZ2lzdHJhYmxlRG9tYWlu
KTsKKyAgICBBU1NFUlQoaXQgIT0gbV9wZXJEb21haW5EYXRhLmVuZCgpKTsKKyAgICBpZiAoaXQg
PT0gbV9wZXJEb21haW5EYXRhLmVuZCgpKQorICAgICAgICByZXR1cm47CisKKyAgICBhdXRvJiBw
ZXJEb21haW5EYXRhID0gKml0LT52YWx1ZTsKKyAgICBib29sIGhpZ2hBY2N1cmFjeVdhc0VuYWJs
ZWQgPSBpc0hpZ2hBY2N1cmFjeUVuYWJsZWQocGVyRG9tYWluRGF0YSk7CiAKICAgICBpZiAoZW5h
YmxlZCkKLSAgICAgICAgbV9oaWdoQWNjdXJhY3lSZXF1ZXN0ZXJzLmFkZCgmY29ubmVjdGlvbi5j
bGllbnQoKSk7CisgICAgICAgIHBlckRvbWFpbkRhdGEud2F0Y2hlcnNOZWVkaW5nSGlnaEFjY3Vy
YWN5LmFkZChwcm94eSk7CiAgICAgZWxzZQotICAgICAgICBtX2hpZ2hBY2N1cmFjeVJlcXVlc3Rl
cnMucmVtb3ZlKCZjb25uZWN0aW9uLmNsaWVudCgpKTsKKyAgICAgICAgcGVyRG9tYWluRGF0YS53
YXRjaGVyc05lZWRpbmdIaWdoQWNjdXJhY3kucmVtb3ZlKHByb3h5KTsKKworICAgIGlmIChpc1Vw
ZGF0aW5nKHBlckRvbWFpbkRhdGEpICYmIGhpZ2hBY2N1cmFjeVdhc0VuYWJsZWQgIT0gZW5hYmxl
ZCkKKyAgICAgICAgcHJvdmlkZXJTZXRFbmFibGVkSGlnaEFjY3VyYWN5KHBlckRvbWFpbkRhdGEs
IGVuYWJsZWQpOworfQorCitib29sIFdlYkdlb2xvY2F0aW9uTWFuYWdlclByb3h5Ojppc1VwZGF0
aW5nKGNvbnN0IFBlckRvbWFpbkRhdGEmIHBlckRvbWFpbkRhdGEpIGNvbnN0Cit7CisjaWYgUExB
VEZPUk0oSU9TX0ZBTUlMWSkKKyAgICBpZiAoIW1fY2xpZW50UHJvdmlkZXIpCisgICAgICAgIHJl
dHVybiAhcGVyRG9tYWluRGF0YS53YXRjaGVycy5jb21wdXRlc0VtcHR5KCk7CisjZWxzZQorICAg
IFVOVVNFRF9QQVJBTShwZXJEb21haW5EYXRhKTsKKyNlbmRpZgorCisgICAgZm9yIChhdXRvJiBw
ZXJEb21haW5EYXRhIDogbV9wZXJEb21haW5EYXRhLnZhbHVlcygpKSB7CisgICAgICAgIGlmICgh
cGVyRG9tYWluRGF0YS0+d2F0Y2hlcnMuY29tcHV0ZXNFbXB0eSgpKQorICAgICAgICAgICAgcmV0
dXJuIHRydWU7CisgICAgfQorICAgIHJldHVybiBmYWxzZTsKK30KKworCitib29sIFdlYkdlb2xv
Y2F0aW9uTWFuYWdlclByb3h5Ojppc0hpZ2hBY2N1cmFjeUVuYWJsZWQoY29uc3QgUGVyRG9tYWlu
RGF0YSYgcGVyRG9tYWluRGF0YSkgY29uc3QKK3sKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZKQor
ICAgIGlmICghbV9jbGllbnRQcm92aWRlcikKKyAgICAgICAgcmV0dXJuICFwZXJEb21haW5EYXRh
LndhdGNoZXJzTmVlZGluZ0hpZ2hBY2N1cmFjeS5jb21wdXRlc0VtcHR5KCk7CisjZWxzZQorICAg
IFVOVVNFRF9QQVJBTShwZXJEb21haW5EYXRhKTsKKyNlbmRpZgorCisgICAgZm9yIChhdXRvJiBk
YXRhIDogbV9wZXJEb21haW5EYXRhLnZhbHVlcygpKSB7CisgICAgICAgIGlmICghZGF0YS0+d2F0
Y2hlcnNOZWVkaW5nSGlnaEFjY3VyYWN5LmNvbXB1dGVzRW1wdHkoKSkKKyAgICAgICAgICAgIHJl
dHVybiB0cnVlOworICAgIH0KKyAgICByZXR1cm4gZmFsc2U7Cit9CisKK3ZvaWQgV2ViR2VvbG9j
YXRpb25NYW5hZ2VyUHJveHk6OnByb3ZpZGVyU3RhcnRVcGRhdGluZyhQZXJEb21haW5EYXRhJiBw
ZXJEb21haW5EYXRhLCBjb25zdCBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiYgcmVnaXN0cmFi
bGVEb21haW4pCit7CisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKKyAgICBpZiAoIW1fY2xpZW50
UHJvdmlkZXIpIHsKKyAgICAgICAgQVNTRVJUKCFwZXJEb21haW5EYXRhLnByb3ZpZGVyKTsKKyAg
ICAgICAgcGVyRG9tYWluRGF0YS5wcm92aWRlciA9IG1ha2VVbmlxdWU8V2ViQ29yZTo6Q29yZUxv
Y2F0aW9uR2VvbG9jYXRpb25Qcm92aWRlcj4ocmVnaXN0cmFibGVEb21haW4sICp0aGlzKTsKKyAg
ICAgICAgcGVyRG9tYWluRGF0YS5wcm92aWRlci0+c2V0RW5hYmxlSGlnaEFjY3VyYWN5KCFwZXJE
b21haW5EYXRhLndhdGNoZXJzTmVlZGluZ0hpZ2hBY2N1cmFjeS5jb21wdXRlc0VtcHR5KCkpOwor
ICAgICAgICBwZXJEb21haW5EYXRhLnByb3ZpZGVyLT5zdGFydCgpOworICAgICAgICByZXR1cm47
CisgICAgfQorI2Vsc2UKKyAgICBVTlVTRURfUEFSQU0ocmVnaXN0cmFibGVEb21haW4pOworICAg
IGlmICghbV9jbGllbnRQcm92aWRlcikKKyAgICAgICAgcmV0dXJuOworI2VuZGlmCisKKyAgICBt
X2NsaWVudFByb3ZpZGVyLT5zZXRFbmFibGVIaWdoQWNjdXJhY3koKnRoaXMsIGlzSGlnaEFjY3Vy
YWN5RW5hYmxlZChwZXJEb21haW5EYXRhKSk7CisgICAgbV9jbGllbnRQcm92aWRlci0+c3RhcnRV
cGRhdGluZygqdGhpcyk7Cit9CisKK3ZvaWQgV2ViR2VvbG9jYXRpb25NYW5hZ2VyUHJveHk6OnBy
b3ZpZGVyU3RvcFVwZGF0aW5nKFBlckRvbWFpbkRhdGEmIHBlckRvbWFpbkRhdGEpCit7CisjaWYg
UExBVEZPUk0oSU9TX0ZBTUlMWSkKKyAgICBpZiAoIW1fY2xpZW50UHJvdmlkZXIpIHsKKyAgICAg
ICAgcGVyRG9tYWluRGF0YS5wcm92aWRlci0+c3RvcCgpOworICAgICAgICByZXR1cm47CisgICAg
fQorI2Vsc2UKKyAgICBVTlVTRURfUEFSQU0ocGVyRG9tYWluRGF0YSk7CisgICAgaWYgKCFtX2Ns
aWVudFByb3ZpZGVyKQorICAgICAgICByZXR1cm47CisjZW5kaWYKKworICAgIG1fY2xpZW50UHJv
dmlkZXItPnN0b3BVcGRhdGluZygqdGhpcyk7Cit9CisKK3ZvaWQgV2ViR2VvbG9jYXRpb25NYW5h
Z2VyUHJveHk6OnByb3ZpZGVyU2V0RW5hYmxlZEhpZ2hBY2N1cmFjeShQZXJEb21haW5EYXRhJiBw
ZXJEb21haW5EYXRhLCBib29sIGVuYWJsZWQpCit7CisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkK
KyAgICBpZiAoIW1fY2xpZW50UHJvdmlkZXIpIHsKKyAgICAgICAgcGVyRG9tYWluRGF0YS5wcm92
aWRlci0+c2V0RW5hYmxlSGlnaEFjY3VyYWN5KGVuYWJsZWQpOworICAgICAgICByZXR1cm47Cisg
ICAgfQorI2Vsc2UKKyAgICBVTlVTRURfUEFSQU0ocGVyRG9tYWluRGF0YSk7CisgICAgaWYgKCFt
X2NsaWVudFByb3ZpZGVyKQorICAgICAgICByZXR1cm47CisjZW5kaWYKIAotICAgIGJvb2wgaGln
aEFjY3VyYWN5U2hvdWxkQmVFbmFibGVkID0gaXNIaWdoQWNjdXJhY3lFbmFibGVkKCk7Ci0gICAg
aWYgKGlzVXBkYXRpbmcoKSAmJiBoaWdoQWNjdXJhY3lXYXNFbmFibGVkICE9IGhpZ2hBY2N1cmFj
eVNob3VsZEJlRW5hYmxlZCkKLSAgICAgICAgbV9wcm92aWRlci0+c2V0RW5hYmxlSGlnaEFjY3Vy
YWN5KCp0aGlzLCBoaWdoQWNjdXJhY3lTaG91bGRCZUVuYWJsZWQpOworICAgIG1fY2xpZW50UHJv
dmlkZXItPnNldEVuYWJsZUhpZ2hBY2N1cmFjeSgqdGhpcywgZW5hYmxlZCk7CiB9CiAKIH0gLy8g
bmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vi
R2VvbG9jYXRpb25NYW5hZ2VyUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkdl
b2xvY2F0aW9uTWFuYWdlclByb3h5LmgKaW5kZXggNzQ5MzZlNDVhMGQ4MzgzYThiNGIzZDZkNTc4
YzliZDIyYmUzZmE1ZS4uZjlhMGNhNjQ5NzhhNDljOTEwMDBhZGYxYzRjYjRhMDExMjg3ZTEyZiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViR2VvbG9jYXRpb25NYW5hZ2Vy
UHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJHZW9sb2NhdGlvbk1hbmFn
ZXJQcm94eS5oCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMSwgMjAx
MiwgMjAxMyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMp
IDIwMTEtMjAyMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKQEAgLTMxLDkgKzMxLDE1IEBACiAjaW5jbHVkZSAiV2ViQ29udGV4
dFN1cHBsZW1lbnQuaCIKICNpbmNsdWRlICJXZWJQYWdlUHJveHlJZGVudGlmaWVyLmgiCiAjaW5j
bHVkZSA8V2ViQ29yZS9HZW9sb2NhdGlvblBvc2l0aW9uRGF0YS5oPgotI2luY2x1ZGUgPHd0Zi9I
YXNoU2V0Lmg+CisjaW5jbHVkZSA8V2ViQ29yZS9SZWdpc3RyYWJsZURvbWFpbi5oPgorI2luY2x1
ZGUgPHd0Zi9IYXNoTWFwLmg+CisjaW5jbHVkZSA8d3RmL1dlYWtIYXNoU2V0Lmg+CiAjaW5jbHVk
ZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZKQorI2lu
Y2x1ZGUgPFdlYkNvcmUvQ29yZUxvY2F0aW9uR2VvbG9jYXRpb25Qcm92aWRlci5oPgorI2VuZGlm
CisKIG5hbWVzcGFjZSBBUEkgewogY2xhc3MgR2VvbG9jYXRpb25Qcm92aWRlcjsKIH0KQEAgLTQz
LDExICs0OSwxNiBAQCBuYW1lc3BhY2UgV2ViS2l0IHsKIGNsYXNzIFdlYkdlb2xvY2F0aW9uUG9z
aXRpb247CiBjbGFzcyBXZWJQcm9jZXNzUG9vbDsKIAotY2xhc3MgV2ViR2VvbG9jYXRpb25NYW5h
Z2VyUHJveHkgOiBwdWJsaWMgQVBJOjpPYmplY3RJbXBsPEFQSTo6T2JqZWN0OjpUeXBlOjpHZW9s
b2NhdGlvbk1hbmFnZXI+LCBwdWJsaWMgV2ViQ29udGV4dFN1cHBsZW1lbnQsIHByaXZhdGUgSVBD
OjpNZXNzYWdlUmVjZWl2ZXIgeworY2xhc3MgV2ViR2VvbG9jYXRpb25NYW5hZ2VyUHJveHkgOiBw
dWJsaWMgQVBJOjpPYmplY3RJbXBsPEFQSTo6T2JqZWN0OjpUeXBlOjpHZW9sb2NhdGlvbk1hbmFn
ZXI+LCBwdWJsaWMgV2ViQ29udGV4dFN1cHBsZW1lbnQsIHByaXZhdGUgSVBDOjpNZXNzYWdlUmVj
ZWl2ZXIKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZKQorICAgICwgcHVibGljIFdlYkNvcmU6OkNv
cmVMb2NhdGlvbkdlb2xvY2F0aW9uUHJvdmlkZXI6OkNsaWVudAorI2VuZGlmCit7CiBwdWJsaWM6
CiAgICAgc3RhdGljIGNvbnN0IGNoYXIqIHN1cHBsZW1lbnROYW1lKCk7CiAKICAgICBzdGF0aWMg
UmVmPFdlYkdlb2xvY2F0aW9uTWFuYWdlclByb3h5PiBjcmVhdGUoV2ViUHJvY2Vzc1Bvb2wqKTsK
KyAgICB+V2ViR2VvbG9jYXRpb25NYW5hZ2VyUHJveHkoKTsKIAogICAgIHZvaWQgc2V0UHJvdmlk
ZXIoc3RkOjp1bmlxdWVfcHRyPEFQSTo6R2VvbG9jYXRpb25Qcm92aWRlcj4mJik7CiAKQEAgLTU2
LDM2ICs2Nyw1OSBAQCBwdWJsaWM6CiAjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICB2b2lk
IHJlc2V0UGVybWlzc2lvbnMoKTsKICNlbmRpZgotICAgIGNvbnN0IHN0ZDo6b3B0aW9uYWw8V2Vi
Q29yZTo6R2VvbG9jYXRpb25Qb3NpdGlvbkRhdGE+JiBsYXN0UG9zaXRpb24oKSBjb25zdCB7IHJl
dHVybiBtX2xhc3RQb3NpdGlvbjsgfQogCiAgICAgdXNpbmcgQVBJOjpPYmplY3Q6OnJlZjsKICAg
ICB1c2luZyBBUEk6Ok9iamVjdDo6ZGVyZWY7CiAKKyAgICB2b2lkIHdlYlByb2Nlc3NJc0dvaW5n
QXdheShXZWJQcm9jZXNzUHJveHkmKTsKKwogcHJpdmF0ZToKICAgICBleHBsaWNpdCBXZWJHZW9s
b2NhdGlvbk1hbmFnZXJQcm94eShXZWJQcm9jZXNzUG9vbCopOwogCiAgICAgLy8gV2ViQ29udGV4
dFN1cHBsZW1lbnQKICAgICB2b2lkIHByb2Nlc3NQb29sRGVzdHJveWVkKCkgb3ZlcnJpZGU7Ci0g
ICAgdm9pZCBwcm9jZXNzRGlkQ2xvc2UoV2ViUHJvY2Vzc1Byb3h5Kikgb3ZlcnJpZGU7CiAgICAg
dm9pZCByZWZXZWJDb250ZXh0U3VwcGxlbWVudCgpIG92ZXJyaWRlOwogICAgIHZvaWQgZGVyZWZX
ZWJDb250ZXh0U3VwcGxlbWVudCgpIG92ZXJyaWRlOwogCiAgICAgLy8gSVBDOjpNZXNzYWdlUmVj
ZWl2ZXIKICAgICB2b2lkIGRpZFJlY2VpdmVNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYsIElQQzo6
RGVjb2RlciYpIG92ZXJyaWRlOwogCi0gICAgYm9vbCBpc1VwZGF0aW5nKCkgY29uc3QgeyByZXR1
cm4gIW1fdXBkYXRlUmVxdWVzdGVycy5pc0VtcHR5KCk7IH0KLSAgICBib29sIGlzSGlnaEFjY3Vy
YWN5RW5hYmxlZCgpIGNvbnN0IHsgcmV0dXJuICFtX2hpZ2hBY2N1cmFjeVJlcXVlc3RlcnMuaXNF
bXB0eSgpOyB9CisgICAgLy8gSVBDIG1lc3NhZ2VzLgorICAgIHZvaWQgc3RhcnRVcGRhdGluZyhJ
UEM6OkNvbm5lY3Rpb24mLCBjb25zdCBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiYsIFdlYlBh
Z2VQcm94eUlkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgYXV0aG9yaXphdGlvblRva2VuLCBib29s
IGVuYWJsZUhpZ2hBY2N1cmFjeSk7CisgICAgdm9pZCBzdG9wVXBkYXRpbmcoSVBDOjpDb25uZWN0
aW9uJiwgY29uc3QgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4mKTsKKyAgICB2b2lkIHNldEVu
YWJsZUhpZ2hBY2N1cmFjeShJUEM6OkNvbm5lY3Rpb24mLCBjb25zdCBXZWJDb3JlOjpSZWdpc3Ry
YWJsZURvbWFpbiYsIGJvb2wpOworCisgICAgdm9pZCBzdGFydFVwZGF0aW5nV2l0aFByb3h5KFdl
YlByb2Nlc3NQcm94eSYsIGNvbnN0IFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluJiwgV2ViUGFn
ZVByb3h5SWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiBhdXRob3JpemF0aW9uVG9rZW4sIGJvb2wg
ZW5hYmxlSGlnaEFjY3VyYWN5KTsKKyAgICB2b2lkIHN0b3BVcGRhdGluZ1dpdGhQcm94eShXZWJQ
cm9jZXNzUHJveHkmLCBjb25zdCBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiYpOworICAgIHZv
aWQgc2V0RW5hYmxlSGlnaEFjY3VyYWN5V2l0aFByb3h5KFdlYlByb2Nlc3NQcm94eSYsIGNvbnN0
IFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluJiwgYm9vbCk7CiAKLSAgICB2b2lkIHN0YXJ0VXBk
YXRpbmcoSVBDOjpDb25uZWN0aW9uJiwgV2ViUGFnZVByb3h5SWRlbnRpZmllciwgY29uc3QgU3Ry
aW5nJiBhdXRob3JpemF0aW9uVG9rZW4pOwotICAgIHZvaWQgc3RvcFVwZGF0aW5nKElQQzo6Q29u
bmVjdGlvbiYpOwotICAgIHZvaWQgcmVtb3ZlUmVxdWVzdGVyKGNvbnN0IElQQzo6Q29ubmVjdGlv
bjo6Q2xpZW50Kik7Ci0gICAgdm9pZCBzZXRFbmFibGVIaWdoQWNjdXJhY3koSVBDOjpDb25uZWN0
aW9uJiwgYm9vbCk7CisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKKyAgICAvLyBDb3JlTG9jYXRp
b25HZW9sb2NhdGlvblByb3ZpZGVyOjpDbGllbnQKKyAgICB2b2lkIHBvc2l0aW9uQ2hhbmdlZChj
b25zdCBTdHJpbmcmIHdlYnNpdGVJZGVudGlmaWVyLCBXZWJDb3JlOjpHZW9sb2NhdGlvblBvc2l0
aW9uRGF0YSYmKSBmaW5hbDsKKyAgICB2b2lkIGVycm9yT2NjdXJyZWQoY29uc3QgU3RyaW5nJiB3
ZWJzaXRlSWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiBlcnJvck1lc3NhZ2UpIGZpbmFsOworICAg
IHZvaWQgcmVzZXRHZW9sb2NhdGlvbihjb25zdCBTdHJpbmcmIHdlYnNpdGVJZGVudGlmaWVyKSBm
aW5hbDsKKyNlbmRpZgorCisgICAgc3RydWN0IFBlckRvbWFpbkRhdGEgeworICAgICAgICBXVEZf
TUFLRV9TVFJVQ1RfRkFTVF9BTExPQ0FURUQ7CisgICAgICAgIFdlYWtIYXNoU2V0PFdlYlByb2Nl
c3NQcm94eT4gd2F0Y2hlcnM7CisgICAgICAgIFdlYWtIYXNoU2V0PFdlYlByb2Nlc3NQcm94eT4g
d2F0Y2hlcnNOZWVkaW5nSGlnaEFjY3VyYWN5OworICAgICAgICBzdGQ6Om9wdGlvbmFsPFdlYkNv
cmU6Okdlb2xvY2F0aW9uUG9zaXRpb25EYXRhPiBsYXN0UG9zaXRpb247CisKKyAgICAgICAgLy8g
RklYTUU6IFVzZSBmb3IgYWxsIENvY29hIHBvcnRzLgorI2lmIFBMQVRGT1JNKElPU19GQU1JTFkp
CisgICAgICAgIHN0ZDo6dW5pcXVlX3B0cjxXZWJDb3JlOjpDb3JlTG9jYXRpb25HZW9sb2NhdGlv
blByb3ZpZGVyPiBwcm92aWRlcjsKKyNlbmRpZgorICAgIH07CiAKLSAgICBIYXNoU2V0PGNvbnN0
IElQQzo6Q29ubmVjdGlvbjo6Q2xpZW50Kj4gbV91cGRhdGVSZXF1ZXN0ZXJzOwotICAgIEhhc2hT
ZXQ8Y29uc3QgSVBDOjpDb25uZWN0aW9uOjpDbGllbnQqPiBtX2hpZ2hBY2N1cmFjeVJlcXVlc3Rl
cnM7CisgICAgYm9vbCBpc1VwZGF0aW5nKGNvbnN0IFBlckRvbWFpbkRhdGEmKSBjb25zdDsKKyAg
ICBib29sIGlzSGlnaEFjY3VyYWN5RW5hYmxlZChjb25zdCBQZXJEb21haW5EYXRhJikgY29uc3Q7
CisgICAgdm9pZCBwcm92aWRlclN0YXJ0VXBkYXRpbmcoUGVyRG9tYWluRGF0YSYsIGNvbnN0IFdl
YkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluJik7CisgICAgdm9pZCBwcm92aWRlclN0b3BVcGRhdGlu
ZyhQZXJEb21haW5EYXRhJik7CisgICAgdm9pZCBwcm92aWRlclNldEVuYWJsZWRIaWdoQWNjdXJh
Y3koUGVyRG9tYWluRGF0YSYsIGJvb2wgZW5hYmxlZCk7CiAKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8
QVBJOjpHZW9sb2NhdGlvblByb3ZpZGVyPiBtX3Byb3ZpZGVyOwotICAgIHN0ZDo6b3B0aW9uYWw8
V2ViQ29yZTo6R2VvbG9jYXRpb25Qb3NpdGlvbkRhdGE+IG1fbGFzdFBvc2l0aW9uOworICAgIEhh
c2hNYXA8V2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4sIHN0ZDo6dW5pcXVlX3B0cjxQZXJEb21h
aW5EYXRhPj4gbV9wZXJEb21haW5EYXRhOworICAgIHN0ZDo6dW5pcXVlX3B0cjxBUEk6Okdlb2xv
Y2F0aW9uUHJvdmlkZXI+IG1fY2xpZW50UHJvdmlkZXI7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBX
ZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkdlb2xvY2F0aW9u
TWFuYWdlclByb3h5Lm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViR2Vv
bG9jYXRpb25NYW5hZ2VyUHJveHkubWVzc2FnZXMuaW4KaW5kZXggZTVlOWMyN2QxNGE1ZmI3MjZm
Y2MyYzgxZmYzZTE2NWVhM2U4NDBiZS4uOTA0MWE5MGMyNTBmOGFkZDY4YmIxM2IzYWJiNTRiZWI2
NmNiMmQyNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViR2VvbG9jYXRp
b25NYW5hZ2VyUHJveHkubWVzc2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
V2ViR2VvbG9jYXRpb25NYW5hZ2VyUHJveHkubWVzc2FnZXMuaW4KQEAgLTIxLDcgKzIxLDcgQEAK
ICMgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KIAogbWVzc2FnZXMgLT4gV2ViR2VvbG9jYXRpb25NYW5hZ2VyUHJveHkg
ewotICAgIFN0YXJ0VXBkYXRpbmcoV2ViS2l0OjpXZWJQYWdlUHJveHlJZGVudGlmaWVyIHBhZ2VQ
cm94eUlELCBTdHJpbmcgYXV0aG9yaXphdGlvblRva2VuKSBXYW50c0Nvbm5lY3Rpb24KLSAgICBT
dG9wVXBkYXRpbmcoKSBXYW50c0Nvbm5lY3Rpb24KLSAgICBTZXRFbmFibGVIaWdoQWNjdXJhY3ko
Ym9vbCBlbmFibGVkKSBXYW50c0Nvbm5lY3Rpb24KKyAgICBTdGFydFVwZGF0aW5nKFdlYkNvcmU6
OlJlZ2lzdHJhYmxlRG9tYWluIHJlZ2lzdHJhYmxlRG9tYWluLCBXZWJLaXQ6OldlYlBhZ2VQcm94
eUlkZW50aWZpZXIgcGFnZVByb3h5SUQsIFN0cmluZyBhdXRob3JpemF0aW9uVG9rZW4sIGJvb2wg
ZW5hYmxlSGlnaEFjY3VyYWN5KSBXYW50c0Nvbm5lY3Rpb24KKyAgICBTdG9wVXBkYXRpbmcoV2Vi
Q29yZTo6UmVnaXN0cmFibGVEb21haW4gcmVnaXN0cmFibGVEb21haW4pIFdhbnRzQ29ubmVjdGlv
bgorICAgIFNldEVuYWJsZUhpZ2hBY2N1cmFjeShXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiBy
ZWdpc3RyYWJsZURvbWFpbiwgYm9vbCBlbmFibGVkKSBXYW50c0Nvbm5lY3Rpb24KIH0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmNwcCBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmNwcAppbmRleCBmNjBkM2VjZDJjYTZm
MGZjNzM2NzBjMzlkYTJhYjc2MDAzNWYyZjc0Li5mYTE3NDJjZjMyZGE5OTUyNzMyM2RmYzdjOGJm
MGE3OTA2MzA0MWZlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9j
ZXNzUG9vbC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wu
Y3BwCkBAIC00MzEsOSArNDMxLDYgQEAgdm9pZCBXZWJQcm9jZXNzUG9vbDo6c2NyZWVuUHJvcGVy
dGllc1N0YXRlQ2hhbmdlZCgpCiAKIHZvaWQgV2ViUHJvY2Vzc1Bvb2w6Om5ldHdvcmtQcm9jZXNz
RGlkVGVybWluYXRlKE5ldHdvcmtQcm9jZXNzUHJveHkmIG5ldHdvcmtQcm9jZXNzUHJveHksIE5l
dHdvcmtQcm9jZXNzUHJveHk6OlRlcm1pbmF0aW9uUmVhc29uIHJlYXNvbikKIHsKLSAgICBmb3Ig
KGF1dG8mIHN1cHBsZW1lbnQgOiBtX3N1cHBsZW1lbnRzLnZhbHVlcygpKQotICAgICAgICBzdXBw
bGVtZW50LT5wcm9jZXNzRGlkQ2xvc2UoJm5ldHdvcmtQcm9jZXNzUHJveHkpOwotCiAgICAgaWYg
KHJlYXNvbiA9PSBOZXR3b3JrUHJvY2Vzc1Byb3h5OjpUZXJtaW5hdGlvblJlYXNvbjo6Q3Jhc2gp
CiAgICAgICAgIG1fY2xpZW50Lm5ldHdvcmtQcm9jZXNzRGlkQ3Jhc2godGhpcyk7CiAKQEAgLTEw
NTcsNyArMTA1NCw3IEBAIHZvaWQgV2ViUHJvY2Vzc1Bvb2w6OmRpc2Nvbm5lY3RQcm9jZXNzKFdl
YlByb2Nlc3NQcm94eSYgcHJvY2VzcykKICAgICBpZiAocHJvY2Vzcy5pc1J1bm5pbmdXb3JrZXJz
KCkpCiAgICAgICAgIHJlbW92ZUZyb21SZW1vdGVXb3JrZXJQcm9jZXNzZXMocHJvY2Vzcyk7CiAK
LSAgICBzdGF0aWNfY2FzdDxXZWJDb250ZXh0U3VwcGxlbWVudCo+KHN1cHBsZW1lbnQ8V2ViR2Vv
bG9jYXRpb25NYW5hZ2VyUHJveHk+KCkpLT5wcm9jZXNzRGlkQ2xvc2UoJnByb2Nlc3MpOworICAg
IHN1cHBsZW1lbnQ8V2ViR2VvbG9jYXRpb25NYW5hZ2VyUHJveHk+KCktPndlYlByb2Nlc3NJc0dv
aW5nQXdheShwcm9jZXNzKTsKIAogICAgIG1fcHJvY2Vzc2VzLnJlbW92ZUZpcnN0KHByb2Nlc3Mp
OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tHZW9sb2NhdGlv
blByb3ZpZGVySU9TLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dLR2VvbG9jYXRp
b25Qcm92aWRlcklPUy5tbQppbmRleCBmNWU5ZmQ3YmMzNDEyOTdhZjdiMjRlNjc0MTYzMzJjZDk2
YWQ3MzljLi5lNjM4YWQ5YzRlOGI3MzhiZjE2NTE0ZDcxOWRjMWJlOGE3NmI1OWQ0IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tHZW9sb2NhdGlvblByb3ZpZGVySU9T
Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XS0dlb2xvY2F0aW9uUHJvdmlk
ZXJJT1MubW0KQEAgLTUxLDcgKzUxLDYgQEAKICNpbXBvcnQgPHd0Zi9VUkwuaD4KIAogLy8gRklY
TUU6IFJlbW92ZSB1c2Ugb2YgV2ViS2l0MSBmcm9tIFdlYktpdDIKLSNpbXBvcnQgPFdlYktpdC9X
ZWJHZW9sb2NhdGlvbkNvcmVMb2NhdGlvblByb3ZpZGVyLmg+CiAjaW1wb3J0IDxXZWJLaXQvV2Vi
QWxsb3dEZW55UG9saWN5TGlzdGVuZXIuaD4KIAogQUxMT1dfREVQUkVDQVRFRF9ERUNMQVJBVElP
TlNfQkVHSU4KQEAgLTU5LDkgKzU4LDYgQEAgQUxMT1dfREVQUkVDQVRFRF9ERUNMQVJBVElPTlNf
QkVHSU4KIEBpbnRlcmZhY2UgV0tHZW9sb2NhdGlvblByb3ZpZGVySU9TIChfV0tHZW9sb2NhdGlv
bkNvcmVMb2NhdGlvbkxpc3RlbmVyKSA8X1dLR2VvbG9jYXRpb25Db3JlTG9jYXRpb25MaXN0ZW5l
cj4KIEBlbmQKIAotQGludGVyZmFjZSBXS0xlZ2FjeUNvcmVMb2NhdGlvblByb3ZpZGVyIDogTlNP
YmplY3Q8X1dLR2VvbG9jYXRpb25Db3JlTG9jYXRpb25Qcm92aWRlciwgV2ViR2VvbG9jYXRpb25D
b3JlTG9jYXRpb25VcGRhdGVMaXN0ZW5lcj4KLUBlbmQKLQogQGludGVyZmFjZSBXS1dlYkFsbG93
RGVueVBvbGljeUxpc3RlbmVyIDogTlNPYmplY3Q8V2ViQWxsb3dEZW55UG9saWN5TGlzdGVuZXI+
CiAtIChpZClpbml0V2l0aENvbXBsZXRpb25IYW5kbGVyOihGdW5jdGlvbjx2b2lkKGJvb2wpPiYm
KWNvbXBsZXRpb25IYW5kbGVyOwogLSAodm9pZClkZW55T25seVRoaXNSZXF1ZXN0IE5PX1JFVFVS
Tl9EVUVfVE9fQVNTRVJUOwpAQCAtMTQ2LDI1ICsxNDIsNDIgQEAgLSAoaWQpaW5pdFdpdGhQcm9j
ZXNzUG9vbDooV2ViS2l0OjpXZWJQcm9jZXNzUG9vbCYpcHJvY2Vzc1Bvb2wKICAgICBzZWxmID0g
W3N1cGVyIGluaXRdOwogICAgIGlmICghc2VsZikKICAgICAgICAgcmV0dXJuIG5pbDsKLSAgICBf
Z2VvbG9jYXRpb25NYW5hZ2VyID0gcHJvY2Vzc1Bvb2wuc3VwcGxlbWVudDxXZWJLaXQ6OldlYkdl
b2xvY2F0aW9uTWFuYWdlclByb3h5PigpOwotICAgIFdLR2VvbG9jYXRpb25Qcm92aWRlclYxIHBy
b3ZpZGVyQ2FsbGJhY2sgPSB7Ci0gICAgICAgIHsgMSwgc2VsZiB9LAotICAgICAgICBzdGFydFVw
ZGF0aW5nQ2FsbGJhY2ssCi0gICAgICAgIHN0b3BVcGRhdGluZ0NhbGxiYWNrLAotICAgICAgICBz
ZXRFbmFibGVIaWdoQWNjdXJhY3kKLSAgICB9OwotICAgIFdLR2VvbG9jYXRpb25NYW5hZ2VyU2V0
UHJvdmlkZXIodG9BUEkoX2dlb2xvY2F0aW9uTWFuYWdlci5nZXQoKSksICZwcm92aWRlckNhbGxi
YWNrLmJhc2UpOwotICAgIF9jb3JlTG9jYXRpb25Qcm92aWRlciA9IHdyYXBwZXIocHJvY2Vzc1Bv
b2wpLl9jb3JlTG9jYXRpb25Qcm92aWRlciA/OiBhZG9wdE5TKHN0YXRpY19jYXN0PGlkIDxfV0tH
ZW9sb2NhdGlvbkNvcmVMb2NhdGlvblByb3ZpZGVyPj4oW1tXS0xlZ2FjeUNvcmVMb2NhdGlvblBy
b3ZpZGVyIGFsbG9jXSBpbml0XSkpOwotICAgIFtfY29yZUxvY2F0aW9uUHJvdmlkZXIgc2V0TGlz
dGVuZXI6c2VsZl07CisKKyAgICAvLyBPbiBpT1MsIFdlYktpdCBub3JtYWxseSBwcm92aWRlcyB0
aGUgbG9jYXRpb24uIEhvd2V2ZXIsIGlmIHRoZSBjbGllbnQgc2V0cyBhIGNvcmVMb2NhdGlvblBy
b3ZpZGVyLCB0aGVuIHdlIHVzZSB0aGF0IG9uZSBpbnN0ZWFkLgorICAgIC8vIFRoaXMgaXMgdXNl
ZnVsIGZvciBXZWJLaXRUZXN0UnVubmVyIHRvIHByb3ZpZGUgYSBkdW1teSBnZW9sb2NhdGlvbiBw
cm92aWRlci4gSXQgaXMgYWxzbyB1c2VkIGJ5IGNlcnRhaW4gYXBwcyB0byBkZW55IGFsbAorICAg
IC8vIGdlb2xvY2F0aW9uIGF1dGhvcml6YXRpb24gYXMgYSB3YXkgdG8gZGlzYWJsZSBzdXBwb3J0
IGZvciBnZW9sb2NhdGlvbi4KKyAgICBpZiAod3JhcHBlcihwcm9jZXNzUG9vbCkuX2NvcmVMb2Nh
dGlvblByb3ZpZGVyKSB7CisgICAgICAgIF9nZW9sb2NhdGlvbk1hbmFnZXIgPSBwcm9jZXNzUG9v
bC5zdXBwbGVtZW50PFdlYktpdDo6V2ViR2VvbG9jYXRpb25NYW5hZ2VyUHJveHk+KCk7CisgICAg
ICAgIFdLR2VvbG9jYXRpb25Qcm92aWRlclYxIHByb3ZpZGVyQ2FsbGJhY2sgPSB7CisgICAgICAg
ICAgICB7IDEsIHNlbGYgfSwKKyAgICAgICAgICAgIHN0YXJ0VXBkYXRpbmdDYWxsYmFjaywKKyAg
ICAgICAgICAgIHN0b3BVcGRhdGluZ0NhbGxiYWNrLAorICAgICAgICAgICAgc2V0RW5hYmxlSGln
aEFjY3VyYWN5CisgICAgICAgIH07CisgICAgICAgIFdLR2VvbG9jYXRpb25NYW5hZ2VyU2V0UHJv
dmlkZXIodG9BUEkoX2dlb2xvY2F0aW9uTWFuYWdlci5nZXQoKSksICZwcm92aWRlckNhbGxiYWNr
LmJhc2UpOworICAgICAgICBfY29yZUxvY2F0aW9uUHJvdmlkZXIgPSB3cmFwcGVyKHByb2Nlc3NQ
b29sKS5fY29yZUxvY2F0aW9uUHJvdmlkZXI7CisgICAgICAgIFtfY29yZUxvY2F0aW9uUHJvdmlk
ZXIgc2V0TGlzdGVuZXI6c2VsZl07CisgICAgfQogICAgIHJldHVybiBzZWxmOwogfQogCiAtICh2
b2lkKWRlY2lkZVBvbGljeUZvckdlb2xvY2F0aW9uUmVxdWVzdEZyb21PcmlnaW46KFdlYktpdDo6
RnJhbWVJbmZvRGF0YSYmKWZyYW1lSW5mbyBjb21wbGV0aW9uSGFuZGxlcjooRnVuY3Rpb248dm9p
ZChib29sKT4mJiljb21wbGV0aW9uSGFuZGxlciB2aWV3OihXS1dlYlZpZXcgKiljb250ZW50Vmll
dwogewotICAgIC8vIFN0ZXAgMTogYXNrIHRoZSB1c2VyIGlmIHRoZSBhcHAgY2FuIHVzZSBHZW9s
b2NhdGlvbi4KKyAgICBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiByZWdpc3RyYWJsZURvbWFp
bihmcmFtZUluZm8uc2VjdXJpdHlPcmlnaW4pOwogICAgIEdlb2xvY2F0aW9uUmVxdWVzdERhdGEg
Z2VvbG9jYXRpb25SZXF1ZXN0RGF0YSB7IFtjb250ZW50VmlldyBVUkxdLCBXVEZNb3ZlKGZyYW1l
SW5mbyksIFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpLCBjb250ZW50VmlldyB9OwogICAgIF9y
ZXF1ZXN0c1dhaXRpbmdGb3JDb3JlTG9jYXRpb25BdXRob3JpemF0aW9uLmFwcGVuZChXVEZNb3Zl
KGdlb2xvY2F0aW9uUmVxdWVzdERhdGEpKTsKLSAgICBbX2NvcmVMb2NhdGlvblByb3ZpZGVyIHJl
cXVlc3RHZW9sb2NhdGlvbkF1dGhvcml6YXRpb25dOworICAgIGlmIChfY29yZUxvY2F0aW9uUHJv
dmlkZXIpIHsKKyAgICAgICAgLy8gU3RlcCAxOiBhc2sgdGhlIHVzZXIgaWYgdGhlIGFwcCBjYW4g
dXNlIEdlb2xvY2F0aW9uLgorICAgICAgICBbX2NvcmVMb2NhdGlvblByb3ZpZGVyIHJlcXVlc3RH
ZW9sb2NhdGlvbkF1dGhvcml6YXRpb25dOworICAgIH0gZWxzZSB7CisgICAgICAgIC8vIFN0ZXAg
MTogYXNrIENvcmVMb2NhdGlvbiBpZiB0aGUgYXBwIGNhbiB1c2UgR2VvbG9jYXRpb24uCisgICAg
ICAgIFdlYkNvcmU6OkNvcmVMb2NhdGlvbkdlb2xvY2F0aW9uUHJvdmlkZXI6OnJlcXVlc3RBdXRo
b3JpemF0aW9uKHJlZ2lzdHJhYmxlRG9tYWluLCBbc2VsZiwgc3Ryb25nU2VsZiA9IHJldGFpblB0
cihzZWxmKV0oYm9vbCBhdXRob3JpemVkKSB7CisgICAgICAgICAgICBpZiAoYXV0aG9yaXplZCkK
KyAgICAgICAgICAgICAgICBbc2VsZiBnZW9sb2NhdGlvbkF1dGhvcml6YXRpb25HcmFudGVkXTsK
KyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICBbc2VsZiBnZW9sb2NhdGlvbkF1dGhv
cml6YXRpb25EZW5pZWRdOworICAgICAgICB9KTsKKyAgICB9CiB9CiBAZW5kCiAKQEAgLTE3NCw3
ICsxODcsNyBAQCBAaW1wbGVtZW50YXRpb24gV0tHZW9sb2NhdGlvblByb3ZpZGVySU9TIChXZWJH
ZW9sb2NhdGlvbkNvcmVMb2NhdGlvblVwZGF0ZUxpc3RlbgogCiAtICh2b2lkKWdlb2xvY2F0aW9u
QXV0aG9yaXphdGlvbkdyYW50ZWQKIHsKLSAgICAvLyBTdGVwIDI6IGFzayB0aGUgdXNlciBpZiB0
aGlzIHBhcnRpY3VsYXIgcGFnZSBjYW4gdXNlIGdlbG9jYXRpb24uCisgICAgLy8gU3RlcCAyOiBh
c2sgdGhlIHVzZXIgaWYgdGhpcyBwYXJ0aWN1bGFyIHBhZ2UgY2FuIHVzZSBnZW9sb2NhdGlvbi4K
ICAgICBpZiAoX3JlcXVlc3RzV2FpdGluZ0ZvckNvcmVMb2NhdGlvbkF1dGhvcml6YXRpb24uaXNF
bXB0eSgpKQogICAgICAgICByZXR1cm47CiAKQEAgLTIyNiw4MSArMjM5LDYgQEAgLSAodm9pZCly
ZXNldEdlb2xvY2F0aW9uCiAKIEBlbmQKIAotIyBwcmFnbWEgbWFyayAtIEltcGxlbWVudGF0aW9u
IG9mIFdLTGVnYWN5Q29yZUxvY2F0aW9uUHJvdmlkZXIKLQotQGltcGxlbWVudGF0aW9uIFdLTGVn
YWN5Q29yZUxvY2F0aW9uUHJvdmlkZXIgewotICAgIGlkIDxfV0tHZW9sb2NhdGlvbkNvcmVMb2Nh
dGlvbkxpc3RlbmVyPiBfbGlzdGVuZXI7Ci0gICAgUmV0YWluUHRyPFdlYkdlb2xvY2F0aW9uQ29y
ZUxvY2F0aW9uUHJvdmlkZXI+IF9wcm92aWRlcjsKLX0KLQotLy8gPF9XS0dlb2xvY2F0aW9uQ29y
ZUxvY2F0aW9uUHJvdmlkZXI+IE1ldGhvZHMKLQotLSAodm9pZClzZXRMaXN0ZW5lcjooaWQ8X1dL
R2VvbG9jYXRpb25Db3JlTG9jYXRpb25MaXN0ZW5lcj4pbGlzdGVuZXIKLXsKLSAgICBBU1NFUlQo
bGlzdGVuZXIgJiYgIV9saXN0ZW5lciAmJiAhX3Byb3ZpZGVyKTsKLSAgICBfbGlzdGVuZXIgPSBs
aXN0ZW5lcjsKLSAgICBfcHJvdmlkZXIgPSBhZG9wdE5TKFtbV2ViR2VvbG9jYXRpb25Db3JlTG9j
YXRpb25Qcm92aWRlciBhbGxvY10gaW5pdFdpdGhMaXN0ZW5lcjpzZWxmXSk7Ci19Ci0KLS0gKHZv
aWQpcmVxdWVzdEdlb2xvY2F0aW9uQXV0aG9yaXphdGlvbgotewotICAgIEFTU0VSVChfcHJvdmlk
ZXIpOwotICAgIFtfcHJvdmlkZXIgcmVxdWVzdEdlb2xvY2F0aW9uQXV0aG9yaXphdGlvbl07Ci19
Ci0KLS0gKHZvaWQpc3RhcnQKLXsKLSAgICBBU1NFUlQoX3Byb3ZpZGVyKTsKLSAgICBbX3Byb3Zp
ZGVyIHN0YXJ0XTsKLX0KLQotLSAodm9pZClzdG9wCi17Ci0gICAgQVNTRVJUKF9wcm92aWRlcik7
Ci0gICAgW19wcm92aWRlciBzdG9wXTsKLX0KLQotLSAodm9pZClzZXRFbmFibGVIaWdoQWNjdXJh
Y3k6KEJPT0wpZmxhZwotewotICAgIEFTU0VSVChfcHJvdmlkZXIpOwotICAgIFtfcHJvdmlkZXIg
c2V0RW5hYmxlSGlnaEFjY3VyYWN5OmZsYWddOwotfQotCi0vLyA8V2ViR2VvbG9jYXRpb25Db3Jl
TG9jYXRpb25VcGRhdGVMaXN0ZW5lcj4gTWV0aG9kcwotCi0tICh2b2lkKWdlb2xvY2F0aW9uQXV0
aG9yaXphdGlvbkdyYW50ZWQKLXsKLSAgICBBU1NFUlQoX2xpc3RlbmVyKTsKLSAgICBbX2xpc3Rl
bmVyIGdlb2xvY2F0aW9uQXV0aG9yaXphdGlvbkdyYW50ZWRdOwotfQotCi0tICh2b2lkKWdlb2xv
Y2F0aW9uQXV0aG9yaXphdGlvbkRlbmllZAotewotICAgIEFTU0VSVChfbGlzdGVuZXIpOwotICAg
IFtfbGlzdGVuZXIgZ2VvbG9jYXRpb25BdXRob3JpemF0aW9uRGVuaWVkXTsKLX0KLQotLSAodm9p
ZClwb3NpdGlvbkNoYW5nZWQ6KFdlYkNvcmU6Okdlb2xvY2F0aW9uUG9zaXRpb25EYXRhJiYpY29y
ZVBvc2l0aW9uCi17Ci0gICAgQVNTRVJUKF9saXN0ZW5lcik7Ci0gICAgYXV0byBwb3NpdGlvbiA9
IFdlYktpdDo6V2ViR2VvbG9jYXRpb25Qb3NpdGlvbjo6Y3JlYXRlKFdURk1vdmUoY29yZVBvc2l0
aW9uKSk7Ci0gICAgW19saXN0ZW5lciBwb3NpdGlvbkNoYW5nZWQ6d3JhcHBlcihwb3NpdGlvbi5n
ZXQoKSldOwotfQotCi0tICh2b2lkKWVycm9yT2NjdXJyZWQ6KE5TU3RyaW5nICopZXJyb3JNZXNz
YWdlCi17Ci0gICAgQVNTRVJUKF9saXN0ZW5lcik7Ci0gICAgW19saXN0ZW5lciBlcnJvck9jY3Vy
cmVkOmVycm9yTWVzc2FnZV07Ci19Ci0KLS0gKHZvaWQpcmVzZXRHZW9sb2NhdGlvbgotewotICAg
IEFTU0VSVChfbGlzdGVuZXIpOwotICAgIFtfbGlzdGVuZXIgcmVzZXRHZW9sb2NhdGlvbl07Ci19
Ci0KLUBlbmQKLQogIyBwcmFnbWEgbWFyayAtIEltcGxlbWVudGF0aW9uIG9mIFdLV2ViQWxsb3dE
ZW55UG9saWN5TGlzdGVuZXIKIEBpbXBsZW1lbnRhdGlvbiBXS1dlYkFsbG93RGVueVBvbGljeUxp
c3RlbmVyIHsKICAgICBGdW5jdGlvbjx2b2lkKGJvb2wpPiBfY29tcGxldGlvbkhhbmRsZXI7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9q
IGIvU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCAx
ZWM4YjJiODVjZTFlNTY0MzdmMmVmZDFjNDRjMDY5MTYwNjkxOTMwLi5jYzI5NjA5N2E4NzYzOGZh
NmVmM2U4NjBiNzgzMmVhZjhlYjllZGJhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYktp
dC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhj
b2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTQzMTksNiArNDMxOSw3IEBACiAJCTQ2Q0UzQjEw
MjNEOEM4M0QwMDE2QTk2QSAvKiBXZWJCYWNrRm9yd2FyZExpc3RDb3VudHMuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2ViQmFja0ZvcndhcmRMaXN0Q291bnRzLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQ2RDQ4RkNDMjc5OUQ3REQwMDdEMjAxNCAvKiBXZWJT
aGFyZWRXb3JrZXJTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uLmNwcCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0
aCA9IFdlYlNoYXJlZFdvcmtlclNlcnZlclRvQ29udGV4dENvbm5lY3Rpb24uY3BwOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQk0NkQ0OEZDRDI3OTlEN0RFMDA3RDIwMTQgLyogV2ViU2hh
cmVkV29ya2VyU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbi5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJT
aGFyZWRXb3JrZXJTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CisJCTQ2REEyODU3MjdCNzNFNzYwMDg5RDMzOSAvKiBXZWJHZW9sb2NhdGlvbk1h
bmFnZXJQcm94eUNvY29hLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdlYkdlb2xvY2F0aW9uTWFu
YWdlclByb3h5Q29jb2EuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0NkRGMDYz
OTFGMzkwNUU1MDAxOTgwQkIgLyogTmV0d29ya0NPUlNQcmVmbGlnaHRDaGVja2VyLmNwcCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IE5ldHdvcmtDT1JTUHJlZmxpZ2h0Q2hl
Y2tlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQ2REYwNjNBMUYzOTA1RTUw
MDE5ODBCQiAvKiBOZXR3b3JrQ09SU1ByZWZsaWdodENoZWNrZXIuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gTmV0d29ya0NPUlNQcmVmbGlnaHRDaGVja2VyLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQ2RTk3NjBBMjc1N0Y2QzkwMEFDREQzNyAvKiBXZWJCcm9h
ZGNhc3RDaGFubmVsUmVnaXN0cnkubWVzc2FnZXMuaW4gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0g
V2ViQnJvYWRjYXN0Q2hhbm5lbFJlZ2lzdHJ5Lm1lc3NhZ2VzLmluOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwpAQCAtNzYxMSw2ICs3NjEyLDcgQEAKIAkJCQk1MkQ1QTFBQTFDNTc0OTRFMDBE
RTM0QTMgLyogVmlkZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5LmggKi8sCiAJCQkJNTJENUExQUIx
QzU3NDk0RTAwREUzNEEzIC8qIFZpZGVvRnVsbHNjcmVlbk1hbmFnZXJQcm94eS5tZXNzYWdlcy5p
biAqLywKIAkJCQk1MkQ1QTFBQzFDNTc0OTRFMDBERTM0QTMgLyogVmlkZW9GdWxsc2NyZWVuTWFu
YWdlclByb3h5Lm1tICovLAorCQkJCTQ2REEyODU3MjdCNzNFNzYwMDg5RDMzOSAvKiBXZWJHZW9s
b2NhdGlvbk1hbmFnZXJQcm94eUNvY29hLmNwcCAqLywKIAkJCQlDMThGM0ExMzI1NjMzMkE2MDA3
OTdFNjYgLyogV2ViSW5zcGVjdG9yUHJlZmVyZW5jZU9ic2VydmVyLmggKi8sCiAJCQkJQzE4RjNB
MTQyNTYzMzM0MzAwNzk3RTY2IC8qIFdlYkluc3BlY3RvclByZWZlcmVuY2VPYnNlcnZlci5tbSAq
LywKIAkJCQlDREYxQjkxOTI2NzAyMUQ2MDAwN0VDMTAgLyogV2ViS2l0U3dpZnRTb2Z0TGluay5o
ICovLApAQCAtMTM0ODYsNiArMTM0ODgsNyBAQAogCQkJCUUxOEU2OTE4MTY5QjY2N0IwMDlCNjY3
MCAvKiBTZWNJdGVtU2hpbVByb3h5TWVzc2FnZXMuaCBpbiBIZWFkZXJzICovLAogCQkJCTU3MEFC
OEYzMjBBRTNCRDcwMEI4QkU4NyAvKiBTZWNLZXlQcm94eVN0b3JlLmggaW4gSGVhZGVycyAqLywK
IAkJCQk1MTREOUY1NzE5MTE5RDM1MDAwMDYzQTcgLyogU2VydmljZXNDb250cm9sbGVyLmggaW4g
SGVhZGVycyAqLywKKwkJCQk1MTY0NjU4MDI3QTlDNzc0MDBFMUYyQkEgLyogU2VydmljZVdvcmtl
ck5vdGlmaWNhdGlvbkhhbmRsZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTFBRkRFNjVBMTk1NEE0
MkIwMEM0OEZGQSAvKiBTZXNzaW9uU3RhdGUuaCBpbiBIZWFkZXJzICovLAogCQkJCTFBMDAyRDQ5
MTk2QjM0NUQwMEI5QUQ0NCAvKiBTZXNzaW9uU3RhdGVDb2RpbmcuaCBpbiBIZWFkZXJzICovLAog
CQkJCTkzRTc5OUNFMjc2MDQ5N0IwMDc0MDA4QSAvKiBTZXNzaW9uU3RvcmFnZU1hbmFnZXIuaCBp
biBIZWFkZXJzICovLApAQCAtMTM5MzQsNyArMTM5MzcsNiBAQAogCQkJCUJDNEE2Mjk3MTQ3MzEz
QTAwMDZDNjgxQSAvKiBXS0Nvbm5lY3Rpb25SZWYuaCBpbiBIZWFkZXJzICovLAogCQkJCUU1OTZE
RDZBMjUxRTcxRDQwMEMyNzVBNyAvKiBXS0NvbnRhY3RQaWNrZXIuaCBpbiBIZWFkZXJzICovLAog
CQkJCTVDRDI4NjU0MUU3MjM1QjEwMDk0RkRDOCAvKiBXS0NvbnRlbnRSdWxlTGlzdC5oIGluIEhl
YWRlcnMgKi8sCi0JCQkJNTE2NDY1ODAyN0E5Qzc3NDAwRTFGMkJBIC8qIFNlcnZpY2VXb3JrZXJO
b3RpZmljYXRpb25IYW5kbGVyLmggaW4gSGVhZGVycyAqLywKIAkJCQk1Q0QyODY1NTFFNzIzNUI4
MDA5NEZEQzggLyogV0tDb250ZW50UnVsZUxpc3RJbnRlcm5hbC5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJNUM1MTM5REIyNTkyN0Q4MDAwOUMzRTMwIC8qIFdLQ29udGVudFJ1bGVMaXN0UHJpdmF0ZS5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJNUNEMjg2NTExRTcyMzU5OTAwOTRGREM4IC8qIFdLQ29udGVu
dFJ1bGVMaXN0U3RvcmUuaCBpbiBIZWFkZXJzICovLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL0dlb2xvY2F0aW9uL1dlYkdlb2xvY2F0aW9uTWFuYWdlci5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvR2VvbG9jYXRpb24vV2ViR2VvbG9jYXRpb25NYW5hZ2VyLmNw
cAppbmRleCA1YTljOWY0ZDJhMWNkNjZhNGI2NzU5YjU5Mzg3ZWEyY2Y1NWIyYWE4Li5mOWQ4NzVj
MTQ5NDRhYjAzM2U4N2E5ZmUyNjk1ZDE1ZjU0ZjdmY2M3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvR2VvbG9jYXRpb24vV2ViR2VvbG9jYXRpb25NYW5hZ2VyLmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR2VvbG9jYXRpb24vV2ViR2VvbG9jYXRpb25NYW5h
Z2VyLmNwcApAQCAtMzksNiArMzksMTQgQEAKIG5hbWVzcGFjZSBXZWJLaXQgewogdXNpbmcgbmFt
ZXNwYWNlIFdlYkNvcmU7CiAKK3N0YXRpYyBSZWdpc3RyYWJsZURvbWFpbiByZWdpc3RyYWJsZURv
bWFpbkZvclBhZ2UoV2ViUGFnZSYgcGFnZSkKK3sKKyAgICBhdXRvKiBkb2N1bWVudCA9IHBhZ2Uu
Y29yZVBhZ2UoKSA/IHBhZ2UuY29yZVBhZ2UoKS0+bWFpbkZyYW1lKCkuZG9jdW1lbnQoKSA6IG51
bGxwdHI7CisgICAgaWYgKCFkb2N1bWVudCkKKyAgICAgICAgcmV0dXJuIHsgfTsKKyAgICByZXR1
cm4gUmVnaXN0cmFibGVEb21haW4geyBkb2N1bWVudC0+dXJsKCkgfTsKK30KKwogY29uc3QgY2hh
ciogV2ViR2VvbG9jYXRpb25NYW5hZ2VyOjpzdXBwbGVtZW50TmFtZSgpCiB7CiAgICAgcmV0dXJu
ICJXZWJHZW9sb2NhdGlvbk1hbmFnZXIiOwpAQCAtNTAsODggKzU4LDE0MCBAQCBXZWJHZW9sb2Nh
dGlvbk1hbmFnZXI6OldlYkdlb2xvY2F0aW9uTWFuYWdlcihXZWJQcm9jZXNzJiBwcm9jZXNzKQog
ICAgIG1fcHJvY2Vzcy5hZGRNZXNzYWdlUmVjZWl2ZXIoTWVzc2FnZXM6OldlYkdlb2xvY2F0aW9u
TWFuYWdlcjo6bWVzc2FnZVJlY2VpdmVyTmFtZSgpLCAqdGhpcyk7CiB9CiAKLXZvaWQgV2ViR2Vv
bG9jYXRpb25NYW5hZ2VyOjpyZWdpc3RlcldlYlBhZ2UoV2ViUGFnZSYgcGFnZSwgY29uc3QgU3Ry
aW5nJiBhdXRob3JpemF0aW9uVG9rZW4pCi17Ci0gICAgYm9vbCB3YXNVcGRhdGluZyA9IGlzVXBk
YXRpbmcoKTsKK1dlYkdlb2xvY2F0aW9uTWFuYWdlcjo6fldlYkdlb2xvY2F0aW9uTWFuYWdlcigp
ID0gZGVmYXVsdDsKIAotICAgIG1fcGFnZVNldC5hZGQocGFnZSk7Cit2b2lkIFdlYkdlb2xvY2F0
aW9uTWFuYWdlcjo6cmVnaXN0ZXJXZWJQYWdlKFdlYlBhZ2UmIHBhZ2UsIGNvbnN0IFN0cmluZyYg
YXV0aG9yaXphdGlvblRva2VuLCBib29sIG5lZWRzSGlnaEFjY3VyYWN5KQoreworICAgIGF1dG8g
cmVnaXN0cmFibGVEb21haW4gPSByZWdpc3RyYWJsZURvbWFpbkZvclBhZ2UocGFnZSk7CisgICAg
aWYgKHJlZ2lzdHJhYmxlRG9tYWluLnN0cmluZygpLmlzRW1wdHkoKSkKKyAgICAgICAgcmV0dXJu
OworCisgICAgYXV0byYgcGFnZVNldHMgPSBtX3BhZ2VTZXRzLmFkZChyZWdpc3RyYWJsZURvbWFp
biwgUGFnZVNldHMoKSkuaXRlcmF0b3ItPnZhbHVlOworICAgIGJvb2wgd2FzVXBkYXRpbmcgPSBp
c1VwZGF0aW5nKHBhZ2VTZXRzKTsKKyAgICBib29sIGhpZ2hBY2N1cmFjeVdhc0VuYWJsZWQgPSBp
c0hpZ2hBY2N1cmFjeUVuYWJsZWQocGFnZVNldHMpOworCisgICAgcGFnZVNldHMucGFnZVNldC5h
ZGQocGFnZSk7CisgICAgaWYgKG5lZWRzSGlnaEFjY3VyYWN5KQorICAgICAgICBwYWdlU2V0cy5o
aWdoQWNjdXJhY3lQYWdlU2V0LmFkZChwYWdlKTsKKyAgICBtX3BhZ2VUb1JlZ2lzdHJhYmxlRG9t
YWluLmFkZCgmcGFnZSwgcmVnaXN0cmFibGVEb21haW4pOworCisgICAgaWYgKCF3YXNVcGRhdGlu
ZykgeworICAgICAgICBtX3Byb2Nlc3MucGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+c2VuZChN
ZXNzYWdlczo6V2ViR2VvbG9jYXRpb25NYW5hZ2VyUHJveHk6OlN0YXJ0VXBkYXRpbmcocmVnaXN0
cmFibGVEb21haW4sIHBhZ2Uud2ViUGFnZVByb3h5SWRlbnRpZmllcigpLCBhdXRob3JpemF0aW9u
VG9rZW4sIG5lZWRzSGlnaEFjY3VyYWN5KSwgMCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CiAK
LSAgICBpZiAoIXdhc1VwZGF0aW5nKQotICAgICAgICBtX3Byb2Nlc3MucGFyZW50UHJvY2Vzc0Nv
bm5lY3Rpb24oKS0+c2VuZChNZXNzYWdlczo6V2ViR2VvbG9jYXRpb25NYW5hZ2VyUHJveHk6OlN0
YXJ0VXBkYXRpbmcocGFnZS53ZWJQYWdlUHJveHlJZGVudGlmaWVyKCksIGF1dGhvcml6YXRpb25U
b2tlbiksIDApOworICAgIGJvb2wgaGlnaEFjY3VyYWN5U2hvdWxkQmVFbmFibGVkID0gaXNIaWdo
QWNjdXJhY3lFbmFibGVkKHBhZ2VTZXRzKTsKKyAgICBpZiAoaGlnaEFjY3VyYWN5V2FzRW5hYmxl
ZCAhPSBoaWdoQWNjdXJhY3lTaG91bGRCZUVuYWJsZWQpCisgICAgICAgIG1fcHJvY2Vzcy5wYXJl
bnRQcm9jZXNzQ29ubmVjdGlvbigpLT5zZW5kKE1lc3NhZ2VzOjpXZWJHZW9sb2NhdGlvbk1hbmFn
ZXJQcm94eTo6U2V0RW5hYmxlSGlnaEFjY3VyYWN5KHJlZ2lzdHJhYmxlRG9tYWluLCBoaWdoQWNj
dXJhY3lTaG91bGRCZUVuYWJsZWQpLCAwKTsKIH0KIAogdm9pZCBXZWJHZW9sb2NhdGlvbk1hbmFn
ZXI6OnVucmVnaXN0ZXJXZWJQYWdlKFdlYlBhZ2UmIHBhZ2UpCiB7Ci0gICAgYm9vbCBoaWdoQWNj
dXJhY3lXYXNFbmFibGVkID0gaXNIaWdoQWNjdXJhY3lFbmFibGVkKCk7CisgICAgYXV0byByZWdp
c3RyYWJsZURvbWFpbiA9IG1fcGFnZVRvUmVnaXN0cmFibGVEb21haW4udGFrZSgmcGFnZSk7Cisg
ICAgaWYgKHJlZ2lzdHJhYmxlRG9tYWluLnN0cmluZygpLmlzRW1wdHkoKSkKKyAgICAgICAgcmV0
dXJuOworCisgICAgYXV0byBpdCA9IG1fcGFnZVNldHMuZmluZChyZWdpc3RyYWJsZURvbWFpbik7
CisgICAgaWYgKGl0ID09IG1fcGFnZVNldHMuZW5kKCkpCisgICAgICAgIHJldHVybjsKIAotICAg
IG1fcGFnZVNldC5yZW1vdmUocGFnZSk7Ci0gICAgbV9oaWdoQWNjdXJhY3lQYWdlU2V0LnJlbW92
ZShwYWdlKTsKKyAgICBhdXRvJiBwYWdlU2V0cyA9IGl0LT52YWx1ZTsKKyAgICBib29sIGhpZ2hB
Y2N1cmFjeVdhc0VuYWJsZWQgPSBpc0hpZ2hBY2N1cmFjeUVuYWJsZWQocGFnZVNldHMpOwogCi0g
ICAgaWYgKCFpc1VwZGF0aW5nKCkpCi0gICAgICAgIG1fcHJvY2Vzcy5wYXJlbnRQcm9jZXNzQ29u
bmVjdGlvbigpLT5zZW5kKE1lc3NhZ2VzOjpXZWJHZW9sb2NhdGlvbk1hbmFnZXJQcm94eTo6U3Rv
cFVwZGF0aW5nKCksIDApOworICAgIHBhZ2VTZXRzLnBhZ2VTZXQucmVtb3ZlKHBhZ2UpOworICAg
IHBhZ2VTZXRzLmhpZ2hBY2N1cmFjeVBhZ2VTZXQucmVtb3ZlKHBhZ2UpOworCisgICAgaWYgKCFp
c1VwZGF0aW5nKHBhZ2VTZXRzKSkKKyAgICAgICAgbV9wcm9jZXNzLnBhcmVudFByb2Nlc3NDb25u
ZWN0aW9uKCktPnNlbmQoTWVzc2FnZXM6OldlYkdlb2xvY2F0aW9uTWFuYWdlclByb3h5OjpTdG9w
VXBkYXRpbmcocmVnaXN0cmFibGVEb21haW4pLCAwKTsKICAgICBlbHNlIHsKLSAgICAgICAgYm9v
bCBoaWdoQWNjdXJhY3lTaG91bGRCZUVuYWJsZWQgPSBpc0hpZ2hBY2N1cmFjeUVuYWJsZWQoKTsK
KyAgICAgICAgYm9vbCBoaWdoQWNjdXJhY3lTaG91bGRCZUVuYWJsZWQgPSBpc0hpZ2hBY2N1cmFj
eUVuYWJsZWQocGFnZVNldHMpOwogICAgICAgICBpZiAoaGlnaEFjY3VyYWN5V2FzRW5hYmxlZCAh
PSBoaWdoQWNjdXJhY3lTaG91bGRCZUVuYWJsZWQpCi0gICAgICAgICAgICBtX3Byb2Nlc3MucGFy
ZW50UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+c2VuZChNZXNzYWdlczo6V2ViR2VvbG9jYXRpb25NYW5h
Z2VyUHJveHk6OlNldEVuYWJsZUhpZ2hBY2N1cmFjeShoaWdoQWNjdXJhY3lTaG91bGRCZUVuYWJs
ZWQpLCAwKTsKKyAgICAgICAgICAgIG1fcHJvY2Vzcy5wYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigp
LT5zZW5kKE1lc3NhZ2VzOjpXZWJHZW9sb2NhdGlvbk1hbmFnZXJQcm94eTo6U2V0RW5hYmxlSGln
aEFjY3VyYWN5KHJlZ2lzdHJhYmxlRG9tYWluLCBoaWdoQWNjdXJhY3lTaG91bGRCZUVuYWJsZWQp
LCAwKTsKICAgICB9CisKKyAgICBpZiAocGFnZVNldHMucGFnZVNldC5jb21wdXRlc0VtcHR5KCkg
JiYgcGFnZVNldHMuaGlnaEFjY3VyYWN5UGFnZVNldC5jb21wdXRlc0VtcHR5KCkpCisgICAgICAg
IG1fcGFnZVNldHMucmVtb3ZlKGl0KTsKIH0KIAogdm9pZCBXZWJHZW9sb2NhdGlvbk1hbmFnZXI6
OnNldEVuYWJsZUhpZ2hBY2N1cmFjeUZvclBhZ2UoV2ViUGFnZSYgcGFnZSwgYm9vbCBlbmFibGVk
KQogewotICAgIGJvb2wgaGlnaEFjY3VyYWN5V2FzRW5hYmxlZCA9IGlzSGlnaEFjY3VyYWN5RW5h
YmxlZCgpOworICAgIGF1dG8gcmVnaXN0cmFibGVEb21haW4gPSBtX3BhZ2VUb1JlZ2lzdHJhYmxl
RG9tYWluLmdldCgmcGFnZSk7CisgICAgaWYgKHJlZ2lzdHJhYmxlRG9tYWluLnN0cmluZygpLmlz
RW1wdHkoKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgYXV0byBpdCA9IG1fcGFnZVNldHMuZmlu
ZChyZWdpc3RyYWJsZURvbWFpbik7CisgICAgQVNTRVJUKGl0ICE9IG1fcGFnZVNldHMuZW5kKCkp
OworICAgIGlmIChpdCA9PSBtX3BhZ2VTZXRzLmVuZCgpKQorICAgICAgICByZXR1cm47CisKKyAg
ICBhdXRvJiBwYWdlU2V0cyA9IGl0LT52YWx1ZTsKKyAgICBib29sIGhpZ2hBY2N1cmFjeVdhc0Vu
YWJsZWQgPSBpc0hpZ2hBY2N1cmFjeUVuYWJsZWQocGFnZVNldHMpOwogCiAgICAgaWYgKGVuYWJs
ZWQpCi0gICAgICAgIG1faGlnaEFjY3VyYWN5UGFnZVNldC5hZGQocGFnZSk7CisgICAgICAgIHBh
Z2VTZXRzLmhpZ2hBY2N1cmFjeVBhZ2VTZXQuYWRkKHBhZ2UpOwogICAgIGVsc2UKLSAgICAgICAg
bV9oaWdoQWNjdXJhY3lQYWdlU2V0LnJlbW92ZShwYWdlKTsKKyAgICAgICAgcGFnZVNldHMuaGln
aEFjY3VyYWN5UGFnZVNldC5yZW1vdmUocGFnZSk7CiAKLSAgICBib29sIGhpZ2hBY2N1cmFjeVNo
b3VsZEJlRW5hYmxlZCA9IGlzSGlnaEFjY3VyYWN5RW5hYmxlZCgpOwotICAgIGlmIChoaWdoQWNj
dXJhY3lXYXNFbmFibGVkICE9IGhpZ2hBY2N1cmFjeVNob3VsZEJlRW5hYmxlZCkKLSAgICAgICAg
bV9wcm9jZXNzLnBhcmVudFByb2Nlc3NDb25uZWN0aW9uKCktPnNlbmQoTWVzc2FnZXM6OldlYkdl
b2xvY2F0aW9uTWFuYWdlclByb3h5OjpTZXRFbmFibGVIaWdoQWNjdXJhY3koaGlnaEFjY3VyYWN5
U2hvdWxkQmVFbmFibGVkKSwgMCk7CisgICAgYm9vbCBoaWdoQWNjdXJhY3lTaG91bGRCZUVuYWJs
ZWQgPSBpc0hpZ2hBY2N1cmFjeUVuYWJsZWQocGFnZVNldHMpOworICAgIGlmIChoaWdoQWNjdXJh
Y3lXYXNFbmFibGVkICE9IGlzSGlnaEFjY3VyYWN5RW5hYmxlZChwYWdlU2V0cykpCisgICAgICAg
IG1fcHJvY2Vzcy5wYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpLT5zZW5kKE1lc3NhZ2VzOjpXZWJH
ZW9sb2NhdGlvbk1hbmFnZXJQcm94eTo6U2V0RW5hYmxlSGlnaEFjY3VyYWN5KHJlZ2lzdHJhYmxl
RG9tYWluLCBoaWdoQWNjdXJhY3lTaG91bGRCZUVuYWJsZWQpLCAwKTsKIH0KIAotdm9pZCBXZWJH
ZW9sb2NhdGlvbk1hbmFnZXI6OmRpZENoYW5nZVBvc2l0aW9uKGNvbnN0IEdlb2xvY2F0aW9uUG9z
aXRpb25EYXRhJiBwb3NpdGlvbikKK3ZvaWQgV2ViR2VvbG9jYXRpb25NYW5hZ2VyOjpkaWRDaGFu
Z2VQb3NpdGlvbihjb25zdCBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiYgcmVnaXN0cmFibGVE
b21haW4sIGNvbnN0IEdlb2xvY2F0aW9uUG9zaXRpb25EYXRhJiBwb3NpdGlvbikKIHsKICNpZiBF
TkFCTEUoR0VPTE9DQVRJT04pCi0gICAgZm9yIChhdXRvJiBwYWdlIDogY29weVRvVmVjdG9yKG1f
cGFnZVNldCkpIHsKLSAgICAgICAgaWYgKHBhZ2UtPmNvcmVQYWdlKCkpCi0gICAgICAgICAgICBH
ZW9sb2NhdGlvbkNvbnRyb2xsZXI6OmZyb20ocGFnZS0+Y29yZVBhZ2UoKSktPnBvc2l0aW9uQ2hh
bmdlZChwb3NpdGlvbik7CisgICAgaWYgKGF1dG8gaXQgPSBtX3BhZ2VTZXRzLmZpbmQocmVnaXN0
cmFibGVEb21haW4pOyBpdCAhPSBtX3BhZ2VTZXRzLmVuZCgpKSB7CisgICAgICAgIGZvciAoYXV0
byYgcGFnZSA6IGNvcHlUb1ZlY3RvcihpdC0+dmFsdWUucGFnZVNldCkpIHsKKyAgICAgICAgICAg
IGlmIChwYWdlLT5jb3JlUGFnZSgpKQorICAgICAgICAgICAgICAgIEdlb2xvY2F0aW9uQ29udHJv
bGxlcjo6ZnJvbShwYWdlLT5jb3JlUGFnZSgpKS0+cG9zaXRpb25DaGFuZ2VkKHBvc2l0aW9uKTsK
KyAgICAgICAgfQogICAgIH0KICNlbHNlCisgICAgVU5VU0VEX1BBUkFNKHJlZ2lzdHJhYmxlRG9t
YWluKTsKICAgICBVTlVTRURfUEFSQU0ocG9zaXRpb24pOwogI2VuZGlmIC8vIEVOQUJMRShHRU9M
T0NBVElPTikKIH0KIAotdm9pZCBXZWJHZW9sb2NhdGlvbk1hbmFnZXI6OmRpZEZhaWxUb0RldGVy
bWluZVBvc2l0aW9uKGNvbnN0IFN0cmluZyYgZXJyb3JNZXNzYWdlKQordm9pZCBXZWJHZW9sb2Nh
dGlvbk1hbmFnZXI6OmRpZEZhaWxUb0RldGVybWluZVBvc2l0aW9uKGNvbnN0IFdlYkNvcmU6OlJl
Z2lzdHJhYmxlRG9tYWluJiByZWdpc3RyYWJsZURvbWFpbiwgY29uc3QgU3RyaW5nJiBlcnJvck1l
c3NhZ2UpCiB7CiAjaWYgRU5BQkxFKEdFT0xPQ0FUSU9OKQotICAgIC8vIEZJWE1FOiBBZGQgbG9j
YWxpemVkIGVycm9yIHN0cmluZy4KLSAgICBhdXRvIGVycm9yID0gR2VvbG9jYXRpb25FcnJvcjo6
Y3JlYXRlKEdlb2xvY2F0aW9uRXJyb3I6OlBvc2l0aW9uVW5hdmFpbGFibGUsIGVycm9yTWVzc2Fn
ZSk7Ci0KLSAgICBmb3IgKGF1dG8mIHBhZ2UgOiBjb3B5VG9WZWN0b3IobV9wYWdlU2V0KSkgewot
ICAgICAgICBpZiAocGFnZS0+Y29yZVBhZ2UoKSkKLSAgICAgICAgICAgIEdlb2xvY2F0aW9uQ29u
dHJvbGxlcjo6ZnJvbShwYWdlLT5jb3JlUGFnZSgpKS0+ZXJyb3JPY2N1cnJlZChlcnJvci5nZXQo
KSk7CisgICAgaWYgKGF1dG8gaXQgPSBtX3BhZ2VTZXRzLmZpbmQocmVnaXN0cmFibGVEb21haW4p
OyBpdCAhPSBtX3BhZ2VTZXRzLmVuZCgpKSB7CisgICAgICAgIC8vIEZJWE1FOiBBZGQgbG9jYWxp
emVkIGVycm9yIHN0cmluZy4KKyAgICAgICAgYXV0byBlcnJvciA9IEdlb2xvY2F0aW9uRXJyb3I6
OmNyZWF0ZShHZW9sb2NhdGlvbkVycm9yOjpQb3NpdGlvblVuYXZhaWxhYmxlLCBlcnJvck1lc3Nh
Z2UpOworCisgICAgICAgIGZvciAoYXV0byYgcGFnZSA6IGNvcHlUb1ZlY3RvcihpdC0+dmFsdWUu
cGFnZVNldCkpIHsKKyAgICAgICAgICAgIGlmIChwYWdlLT5jb3JlUGFnZSgpKQorICAgICAgICAg
ICAgICAgIEdlb2xvY2F0aW9uQ29udHJvbGxlcjo6ZnJvbShwYWdlLT5jb3JlUGFnZSgpKS0+ZXJy
b3JPY2N1cnJlZChlcnJvci5nZXQoKSk7CisgICAgICAgIH0KICAgICB9CiAjZWxzZQorICAgIFVO
VVNFRF9QQVJBTShyZWdpc3RyYWJsZURvbWFpbik7CiAgICAgVU5VU0VEX1BBUkFNKGVycm9yTWVz
c2FnZSk7CiAjZW5kaWYgLy8gRU5BQkxFKEdFT0xPQ0FUSU9OKQogfQogCi0jaWYgUExBVEZPUk0o
SU9TX0ZBTUlMWSkKLXZvaWQgV2ViR2VvbG9jYXRpb25NYW5hZ2VyOjpyZXNldFBlcm1pc3Npb25z
KCkKK2Jvb2wgV2ViR2VvbG9jYXRpb25NYW5hZ2VyOjppc1VwZGF0aW5nKGNvbnN0IFBhZ2VTZXRz
JiBwYWdlU2V0cykgY29uc3QKIHsKLSAgICBtX3Byb2Nlc3MucmVzZXRBbGxHZW9sb2NhdGlvblBl
cm1pc3Npb25zKCk7CisgICAgcmV0dXJuICFwYWdlU2V0cy5wYWdlU2V0LmNvbXB1dGVzRW1wdHko
KTsKIH0KLSNlbmRpZiAvLyBQTEFURk9STShJT1NfRkFNSUxZKQogCi1ib29sIFdlYkdlb2xvY2F0
aW9uTWFuYWdlcjo6aXNVcGRhdGluZygpIGNvbnN0Citib29sIFdlYkdlb2xvY2F0aW9uTWFuYWdl
cjo6aXNIaWdoQWNjdXJhY3lFbmFibGVkKGNvbnN0IFBhZ2VTZXRzJiBwYWdlU2V0cykgY29uc3QK
IHsKLSAgICByZXR1cm4gIW1fcGFnZVNldC5jb21wdXRlc0VtcHR5KCk7CisgICAgcmV0dXJuICFw
YWdlU2V0cy5oaWdoQWNjdXJhY3lQYWdlU2V0LmNvbXB1dGVzRW1wdHkoKTsKIH0KIAotYm9vbCBX
ZWJHZW9sb2NhdGlvbk1hbmFnZXI6OmlzSGlnaEFjY3VyYWN5RW5hYmxlZCgpIGNvbnN0CisjaWYg
UExBVEZPUk0oSU9TX0ZBTUlMWSkKK3ZvaWQgV2ViR2VvbG9jYXRpb25NYW5hZ2VyOjpyZXNldFBl
cm1pc3Npb25zKGNvbnN0IFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluJiByZWdpc3RyYWJsZURv
bWFpbikKIHsKLSAgICByZXR1cm4gIW1faGlnaEFjY3VyYWN5UGFnZVNldC5jb21wdXRlc0VtcHR5
KCk7CisgICAgYXV0byBpdCA9IG1fcGFnZVNldHMuZmluZChyZWdpc3RyYWJsZURvbWFpbik7Cisg
ICAgaWYgKGl0ICE9IG1fcGFnZVNldHMuZW5kKCkpCisgICAgICAgIHJldHVybjsKKworICAgIGZv
ciAoYXV0byYgcGFnZSA6IGNvcHlUb1ZlY3RvcihpdC0+dmFsdWUucGFnZVNldCkpIHsKKyAgICAg
ICAgaWYgKGF1dG8qIG1haW5GcmFtZSA9IHBhZ2UtPmNvcmVQYWdlKCkgPyAmcGFnZS0+Y29yZVBh
Z2UoKS0+bWFpbkZyYW1lKCkgOiBudWxscHRyKQorICAgICAgICAgICAgbWFpbkZyYW1lLT5yZXNl
dEFsbEdlb2xvY2F0aW9uUGVybWlzc2lvbigpOworICAgIH0KIH0KKyNlbmRpZiAvLyBQTEFURk9S
TShJT1NfRkFNSUxZKQogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9HZW9sb2NhdGlvbi9XZWJHZW9sb2NhdGlvbk1hbmFnZXIuaCBi
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HZW9sb2NhdGlvbi9XZWJHZW9sb2NhdGlvbk1hbmFn
ZXIuaAppbmRleCA0NDgzNTk2MzU4NzgyMTk3Y2NiYTU5MjhlZmU2MjUxNTI2YzE4NTE1Li5jYjY1
ODhjNmU3MTg4YmVmYmQ1NTEyM2Q0YTU1OWIyYjBiMzFhOTNhIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvR2VvbG9jYXRpb24vV2ViR2VvbG9jYXRpb25NYW5hZ2VyLmgKKysr
IGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dlb2xvY2F0aW9uL1dlYkdlb2xvY2F0aW9uTWFu
YWdlci5oCkBAIC0yOCw2ICsyOCw3IEBACiAjaW5jbHVkZSAiTWVzc2FnZVJlY2VpdmVyLmgiCiAj
aW5jbHVkZSAiV2ViR2VvbG9jYXRpb25Qb3NpdGlvbi5oIgogI2luY2x1ZGUgIldlYlByb2Nlc3NT
dXBwbGVtZW50LmgiCisjaW5jbHVkZSA8V2ViQ29yZS9SZWdpc3RyYWJsZURvbWFpbi5oPgogI2lu
Y2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CiAjaW5jbHVkZSA8d3RmL05vbmNvcHlhYmxlLmg+CiAjaW5j
bHVkZSA8d3RmL1dlYWtIYXNoU2V0Lmg+CkBAIC00NywzMSArNDgsMzQgQEAgY2xhc3MgV2ViR2Vv
bG9jYXRpb25NYW5hZ2VyIDogcHVibGljIFdlYlByb2Nlc3NTdXBwbGVtZW50LCBwdWJsaWMgSVBD
OjpNZXNzYWdlUmUKICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShXZWJHZW9sb2NhdGlvbk1hbmFn
ZXIpOwogcHVibGljOgogICAgIGV4cGxpY2l0IFdlYkdlb2xvY2F0aW9uTWFuYWdlcihXZWJQcm9j
ZXNzJik7CisgICAgfldlYkdlb2xvY2F0aW9uTWFuYWdlcigpOwogCiAgICAgc3RhdGljIGNvbnN0
IGNoYXIqIHN1cHBsZW1lbnROYW1lKCk7CiAKLSAgICB2b2lkIHJlZ2lzdGVyV2ViUGFnZShXZWJQ
YWdlJiwgY29uc3QgU3RyaW5nJiBhdXRob3JpemF0aW9uVG9rZW4pOworICAgIHZvaWQgcmVnaXN0
ZXJXZWJQYWdlKFdlYlBhZ2UmLCBjb25zdCBTdHJpbmcmIGF1dGhvcml6YXRpb25Ub2tlbiwgYm9v
bCBuZWVkc0hpZ2hBY2N1cmFjeSk7CiAgICAgdm9pZCB1bnJlZ2lzdGVyV2ViUGFnZShXZWJQYWdl
Jik7CiAgICAgdm9pZCBzZXRFbmFibGVIaWdoQWNjdXJhY3lGb3JQYWdlKFdlYlBhZ2UmLCBib29s
KTsKIAotICAgIHZvaWQgcmVxdWVzdFBlcm1pc3Npb24oV2ViQ29yZTo6R2VvbG9jYXRpb24mKTsK
LQogcHJpdmF0ZToKICAgICAvLyBJUEM6Ok1lc3NhZ2VSZWNlaXZlcgogICAgIHZvaWQgZGlkUmVj
ZWl2ZU1lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwgSVBDOjpEZWNvZGVyJikgb3ZlcnJpZGU7CiAK
LSAgICBib29sIGlzVXBkYXRpbmcoKSBjb25zdDsKLSAgICBib29sIGlzSGlnaEFjY3VyYWN5RW5h
YmxlZCgpIGNvbnN0OwotCi0gICAgdm9pZCBkaWRDaGFuZ2VQb3NpdGlvbihjb25zdCBXZWJDb3Jl
OjpHZW9sb2NhdGlvblBvc2l0aW9uRGF0YSYpOwotICAgIHZvaWQgZGlkRmFpbFRvRGV0ZXJtaW5l
UG9zaXRpb24oY29uc3QgU3RyaW5nJiBlcnJvck1lc3NhZ2UpOworICAgIHZvaWQgZGlkQ2hhbmdl
UG9zaXRpb24oY29uc3QgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4mLCBjb25zdCBXZWJDb3Jl
OjpHZW9sb2NhdGlvblBvc2l0aW9uRGF0YSYpOworICAgIHZvaWQgZGlkRmFpbFRvRGV0ZXJtaW5l
UG9zaXRpb24oY29uc3QgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4mLCBjb25zdCBTdHJpbmcm
IGVycm9yTWVzc2FnZSk7CiAjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKLSAgICB2b2lkIHJlc2V0
UGVybWlzc2lvbnMoKTsKKyAgICB2b2lkIHJlc2V0UGVybWlzc2lvbnMoY29uc3QgV2ViQ29yZTo6
UmVnaXN0cmFibGVEb21haW4mKTsKICNlbmRpZiAvLyBQTEFURk9STShJT1NfRkFNSUxZKQogCisg
ICAgc3RydWN0IFBhZ2VTZXRzIHsKKyAgICAgICAgV2Vha0hhc2hTZXQ8V2ViUGFnZT4gcGFnZVNl
dDsKKyAgICAgICAgV2Vha0hhc2hTZXQ8V2ViUGFnZT4gaGlnaEFjY3VyYWN5UGFnZVNldDsKKyAg
ICB9OworICAgIGJvb2wgaXNVcGRhdGluZyhjb25zdCBQYWdlU2V0cyYpIGNvbnN0OworICAgIGJv
b2wgaXNIaWdoQWNjdXJhY3lFbmFibGVkKGNvbnN0IFBhZ2VTZXRzJikgY29uc3Q7CisKICAgICBX
ZWJQcm9jZXNzJiBtX3Byb2Nlc3M7Ci0gICAgV2Vha0hhc2hTZXQ8V2ViUGFnZT4gbV9wYWdlU2V0
OwotICAgIFdlYWtIYXNoU2V0PFdlYlBhZ2U+IG1faGlnaEFjY3VyYWN5UGFnZVNldDsKKyAgICBI
YXNoTWFwPFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluLCBQYWdlU2V0cz4gbV9wYWdlU2V0czsK
KyAgICBIYXNoTWFwPFdlYlBhZ2UqLCBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbj4gbV9wYWdl
VG9SZWdpc3RyYWJsZURvbWFpbjsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dlb2xvY2F0aW9uL1dlYkdlb2xvY2F0aW9u
TWFuYWdlci5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HZW9sb2NhdGlv
bi9XZWJHZW9sb2NhdGlvbk1hbmFnZXIubWVzc2FnZXMuaW4KaW5kZXggNzlmM2I0Y2U0ZWZjYWYz
NDg4NTdkOTkzMzI1M2Q4OTU0ZjBmMWI4Ny4uNmZjYzYwZDJlMDhlMjZlYWI3M2MxZjcxY2Q4ODQy
ZGM1MTA1MmQxOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dlb2xvY2F0
aW9uL1dlYkdlb2xvY2F0aW9uTWFuYWdlci5tZXNzYWdlcy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvR2VvbG9jYXRpb24vV2ViR2VvbG9jYXRpb25NYW5hZ2VyLm1lc3NhZ2VzLmlu
CkBAIC0yMSw5ICsyMSw5IEBACiAjIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAKIG1lc3NhZ2VzIC0+IFdlYkdlb2xv
Y2F0aW9uTWFuYWdlciBOb3RSZWZDb3VudGVkIHsKLSAgICBEaWRDaGFuZ2VQb3NpdGlvbihXZWJD
b3JlOjpHZW9sb2NhdGlvblBvc2l0aW9uRGF0YSBwb3NpdGlvbik7Ci0gICAgRGlkRmFpbFRvRGV0
ZXJtaW5lUG9zaXRpb24oU3RyaW5nIGVycm9yTWVzc2FnZSk7CisgICAgRGlkQ2hhbmdlUG9zaXRp
b24oV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4gcmVnaXN0cmFibGVEb21haW4sIFdlYkNvcmU6
Okdlb2xvY2F0aW9uUG9zaXRpb25EYXRhIHBvc2l0aW9uKTsKKyAgICBEaWRGYWlsVG9EZXRlcm1p
bmVQb3NpdGlvbihXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiByZWdpc3RyYWJsZURvbWFpbiwg
U3RyaW5nIGVycm9yTWVzc2FnZSk7CiAjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKLSAgICBSZXNl
dFBlcm1pc3Npb25zKCk7CisgICAgUmVzZXRQZXJtaXNzaW9ucyhXZWJDb3JlOjpSZWdpc3RyYWJs
ZURvbWFpbiByZWdpc3RyYWJsZURvbWFpbik7CiAjZW5kaWYKIH0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJHZW9sb2NhdGlvbkNsaWVudC5j
cHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViR2VvbG9jYXRp
b25DbGllbnQuY3BwCmluZGV4IGVhMDJmMmFjMTZmNzMxYmY1NjQyZjg2NzhkODZhNDk4MTFkOGMz
ODYuLmQxOGRmN2VmYWY1NmVmY2ZjOGQxNjk5YzkxY2QyNmI2ODliYzgyNmEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJHZW9sb2NhdGlvbkNs
aWVudC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dl
Ykdlb2xvY2F0aW9uQ2xpZW50LmNwcApAQCAtNDgsOSArNDgsOSBAQCB2b2lkIFdlYkdlb2xvY2F0
aW9uQ2xpZW50OjpnZW9sb2NhdGlvbkRlc3Ryb3llZCgpCiAgICAgZGVsZXRlIHRoaXM7CiB9CiAK
LXZvaWQgV2ViR2VvbG9jYXRpb25DbGllbnQ6OnN0YXJ0VXBkYXRpbmcoY29uc3QgU3RyaW5nJiBh
dXRob3JpemF0aW9uVG9rZW4pCit2b2lkIFdlYkdlb2xvY2F0aW9uQ2xpZW50OjpzdGFydFVwZGF0
aW5nKGNvbnN0IFN0cmluZyYgYXV0aG9yaXphdGlvblRva2VuLCBib29sIG5lZWRzSGlnaEFjY3Vy
YWN5KQogewotICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLnN1cHBsZW1lbnQ8V2ViR2VvbG9j
YXRpb25NYW5hZ2VyPigpLT5yZWdpc3RlcldlYlBhZ2UobV9wYWdlLCBhdXRob3JpemF0aW9uVG9r
ZW4pOworICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLnN1cHBsZW1lbnQ8V2ViR2VvbG9jYXRp
b25NYW5hZ2VyPigpLT5yZWdpc3RlcldlYlBhZ2UobV9wYWdlLCBhdXRob3JpemF0aW9uVG9rZW4s
IG5lZWRzSGlnaEFjY3VyYWN5KTsKIH0KIAogdm9pZCBXZWJHZW9sb2NhdGlvbkNsaWVudDo6c3Rv
cFVwZGF0aW5nKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3Jl
U3VwcG9ydC9XZWJHZW9sb2NhdGlvbkNsaWVudC5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1dlYkNvcmVTdXBwb3J0L1dlYkdlb2xvY2F0aW9uQ2xpZW50LmgKaW5kZXggYjE2ODE2NzQ4OTYy
MjU0N2VjOTRlNjc5OGZiNjlkZDhmYTZkMDExYy4uNjVlYzBlOTM1NDI4M2Q1ZmE3N2FmMTBiNGUx
ODBiODcxMmZhZWYwNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNv
cmVTdXBwb3J0L1dlYkdlb2xvY2F0aW9uQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkdlb2xvY2F0aW9uQ2xpZW50LmgKQEAgLTMxLDcgKzMx
LDcgQEAgbmFtZXNwYWNlIFdlYktpdCB7CiAKIGNsYXNzIFdlYlBhZ2U7CiAKLWNsYXNzIFdlYkdl
b2xvY2F0aW9uQ2xpZW50IDogcHVibGljIFdlYkNvcmU6Okdlb2xvY2F0aW9uQ2xpZW50IHsKK2Ns
YXNzIFdlYkdlb2xvY2F0aW9uQ2xpZW50IGZpbmFsIDogcHVibGljIFdlYkNvcmU6Okdlb2xvY2F0
aW9uQ2xpZW50IHsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBX
ZWJHZW9sb2NhdGlvbkNsaWVudChXZWJQYWdlJiBwYWdlKQpAQCAtNDIsMTcgKzQyLDE3IEBAIHB1
YmxpYzoKICAgICB2aXJ0dWFsIH5XZWJHZW9sb2NhdGlvbkNsaWVudCgpOwogCiBwcml2YXRlOgot
ICAgIHZvaWQgZ2VvbG9jYXRpb25EZXN0cm95ZWQoKSBvdmVycmlkZTsKKyAgICB2b2lkIGdlb2xv
Y2F0aW9uRGVzdHJveWVkKCkgZmluYWw7CiAKLSAgICB2b2lkIHN0YXJ0VXBkYXRpbmcoY29uc3Qg
U3RyaW5nJiBhdXRob3JpemF0aW9uVG9rZW4pIG92ZXJyaWRlOwotICAgIHZvaWQgc3RvcFVwZGF0
aW5nKCkgb3ZlcnJpZGU7Ci0gICAgdm9pZCByZXZva2VBdXRob3JpemF0aW9uVG9rZW4oY29uc3Qg
U3RyaW5nJikgb3ZlcnJpZGU7Ci0gICAgdm9pZCBzZXRFbmFibGVIaWdoQWNjdXJhY3koYm9vbCkg
b3ZlcnJpZGU7CisgICAgdm9pZCBzdGFydFVwZGF0aW5nKGNvbnN0IFN0cmluZyYgYXV0aG9yaXph
dGlvblRva2VuLCBib29sIG5lZWRzSGlnaEFjY3VyYWN5KSBmaW5hbDsKKyAgICB2b2lkIHN0b3BV
cGRhdGluZygpIGZpbmFsOworICAgIHZvaWQgcmV2b2tlQXV0aG9yaXphdGlvblRva2VuKGNvbnN0
IFN0cmluZyYpIGZpbmFsOworICAgIHZvaWQgc2V0RW5hYmxlSGlnaEFjY3VyYWN5KGJvb2wpIGZp
bmFsOwogCi0gICAgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpHZW9sb2NhdGlvblBvc2l0aW9uRGF0
YT4gbGFzdFBvc2l0aW9uKCkgb3ZlcnJpZGU7CisgICAgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpH
ZW9sb2NhdGlvblBvc2l0aW9uRGF0YT4gbGFzdFBvc2l0aW9uKCkgZmluYWw7CiAKLSAgICB2b2lk
IHJlcXVlc3RQZXJtaXNzaW9uKFdlYkNvcmU6Okdlb2xvY2F0aW9uJikgb3ZlcnJpZGU7Ci0gICAg
dm9pZCBjYW5jZWxQZXJtaXNzaW9uUmVxdWVzdChXZWJDb3JlOjpHZW9sb2NhdGlvbiYpIG92ZXJy
aWRlOworICAgIHZvaWQgcmVxdWVzdFBlcm1pc3Npb24oV2ViQ29yZTo6R2VvbG9jYXRpb24mKSBm
aW5hbDsKKyAgICB2b2lkIGNhbmNlbFBlcm1pc3Npb25SZXF1ZXN0KFdlYkNvcmU6Okdlb2xvY2F0
aW9uJikgZmluYWw7CiAKICAgICBXZWJQYWdlJiBtX3BhZ2U7CiB9OwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1dlYlByb2Nlc3MuY3BwCmluZGV4IGRkNDViNDU4OGJmOWRkMTI0ZTE4ZmFhOTVhMzI2
ZWQzMTkzMWE0NTcuLjc5OTYxM2QzNzc0MjM2M2JmYmRjZDk1Mjk3OTk2MjIwNmYwMjI4YTggMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5jcHAKQEAgLTE1MjcsMTYgKzE1Mjcs
NiBAQCB2b2lkIFdlYlByb2Nlc3M6OnBhZ2VBY3Rpdml0eVN0YXRlRGlkQ2hhbmdlKFBhZ2VJZGVu
dGlmaWVyLCBPcHRpb25TZXQ8V2ViQ29yZTo6QQogICAgIH0KIH0KIAotI2lmIFBMQVRGT1JNKElP
U19GQU1JTFkpCi12b2lkIFdlYlByb2Nlc3M6OnJlc2V0QWxsR2VvbG9jYXRpb25QZXJtaXNzaW9u
cygpCi17Ci0gICAgZm9yIChhdXRvJiBwYWdlIDogbV9wYWdlTWFwLnZhbHVlcygpKSB7Ci0gICAg
ICAgIGlmIChGcmFtZSogbWFpbkZyYW1lID0gcGFnZS0+bWFpbkZyYW1lKCkpCi0gICAgICAgICAg
ICBtYWluRnJhbWUtPnJlc2V0QWxsR2VvbG9jYXRpb25QZXJtaXNzaW9uKCk7Ci0gICAgfQotfQot
I2VuZGlmCi0KIHZvaWQgV2ViUHJvY2Vzczo6cHJlcGFyZVRvU3VzcGVuZChib29sIGlzU3VzcGVu
c2lvbkltbWluZW50LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYgY29tcGxldGlvbkhhbmRs
ZXIpCiB7CiAgICAgV0VCUFJPQ0VTU19SRUxFQVNFX0xPRyhQcm9jZXNzU3VzcGVuc2lvbiwgInBy
ZXBhcmVUb1N1c3BlbmQ6IGlzU3VzcGVuc2lvbkltbWluZW50PSVkIiwgaXNTdXNwZW5zaW9uSW1t
aW5lbnQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlByb2Nlc3Mu
aCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmgKaW5kZXggYzVkZDIyNWRj
MWI3MWRhOWNkZDRlZWRiYTBhMDdlNzYxNzgxNTc1ZS4uNTk1YWYwYjk3NDEyOTBkYTZjNzM0YTA4
ODZiODI0ZDIzYjFlZTU3ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dl
YlByb2Nlc3MuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5oCkBA
IC0zMTAsMTAgKzMxMCw2IEBAIHB1YmxpYzoKIAogICAgIHZvaWQgaXNKSVRFbmFibGVkKENvbXBs
ZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYpOwogCi0jaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkK
LSAgICB2b2lkIHJlc2V0QWxsR2VvbG9jYXRpb25QZXJtaXNzaW9ucygpOwotI2VuZGlmCi0KICNp
ZiBQTEFURk9STShXQVlMQU5EKQogICAgIFdheWxhbmRDb21wb3NpdG9yRGlzcGxheSogd2F5bGFu
ZENvbXBvc2l0b3JEaXNwbGF5KCkgY29uc3QgeyByZXR1cm4gbV93YXlsYW5kQ29tcG9zaXRvckRp
c3BsYXkuZ2V0KCk7IH0KICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9t
YWMvV2ViQ29yZVN1cHBvcnQvV2ViR2VvbG9jYXRpb25DbGllbnQuaCBiL1NvdXJjZS9XZWJLaXRM
ZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkdlb2xvY2F0aW9uQ2xpZW50LmgKaW5kZXggNzdj
MjgyOGQ4NTk1MzYzNWI2NGM0Yzg5OTk5MGEwYTY0ODE3MWI2Yy4uYjA3Yzc5MDNkMjkyYTkzMzkx
ZTVjNDBhZWRkNjVkZWRiYWY4YzVmMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9t
YWMvV2ViQ29yZVN1cHBvcnQvV2ViR2VvbG9jYXRpb25DbGllbnQuaAorKysgYi9Tb3VyY2UvV2Vi
S2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJHZW9sb2NhdGlvbkNsaWVudC5oCkBAIC0z
OSw3ICszOSw3IEBAIHB1YmxpYzoKICAgICBXZWJWaWV3ICp3ZWJWaWV3KCkgeyByZXR1cm4gbV93
ZWJWaWV3OyB9CiAKICAgICB2b2lkIGdlb2xvY2F0aW9uRGVzdHJveWVkKCkgb3ZlcnJpZGU7Ci0g
ICAgdm9pZCBzdGFydFVwZGF0aW5nKGNvbnN0IFN0cmluZyYgYXV0aG9yaXphdGlvblRva2VuKSBv
dmVycmlkZTsKKyAgICB2b2lkIHN0YXJ0VXBkYXRpbmcoY29uc3QgU3RyaW5nJiBhdXRob3JpemF0
aW9uVG9rZW4sIGJvb2wgZW5hYmxlSGlnaEFjY3VyYWN5KSBvdmVycmlkZTsKICAgICB2b2lkIHN0
b3BVcGRhdGluZygpIG92ZXJyaWRlOwogI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAgLy8g
RklYTUU6IHVuaWZ5IHRoaXMgd2l0aCBNYWMgb24gT3BlblNvdXJjZS4KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkdlb2xvY2F0aW9uQ2xpZW50
Lm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViR2VvbG9jYXRp
b25DbGllbnQubW0KaW5kZXggZTc4OGE1N2RkNmY4MDdlN2IyNWM3NDJiYTgwMTkzNTdhMjczNGQz
OC4uYThiODUyMWUyZGE0NzE4ZGMxNGI0MzcwYjFhNWI0YjhkNjMyODU4OSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViR2VvbG9jYXRpb25DbGll
bnQubW0KKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViR2Vv
bG9jYXRpb25DbGllbnQubW0KQEAgLTgzLDkgKzgzLDE2IEBAIHZvaWQgV2ViR2VvbG9jYXRpb25D
bGllbnQ6Omdlb2xvY2F0aW9uRGVzdHJveWVkKCkKICAgICBkZWxldGUgdGhpczsKIH0KIAotdm9p
ZCBXZWJHZW9sb2NhdGlvbkNsaWVudDo6c3RhcnRVcGRhdGluZyhjb25zdCBTdHJpbmcmIGF1dGhv
cml6YXRpb25Ub2tlbikKK3ZvaWQgV2ViR2VvbG9jYXRpb25DbGllbnQ6OnN0YXJ0VXBkYXRpbmco
Y29uc3QgU3RyaW5nJiBhdXRob3JpemF0aW9uVG9rZW4sIGJvb2wgZW5hYmxlSGlnaEFjY3VyYWN5
KQogewogICAgIFVOVVNFRF9QQVJBTShhdXRob3JpemF0aW9uVG9rZW4pOworI2lmIFBMQVRGT1JN
KElPU19GQU1JTFkpCisgICAgaWYgKGVuYWJsZUhpZ2hBY2N1cmFjeSkKKyAgICAgICAgc2V0RW5h
YmxlSGlnaEFjY3VyYWN5KHRydWUpOworI2Vsc2UKKyAgICBVTlVTRURfUEFSQU0oZW5hYmxlSGln
aEFjY3VyYWN5KTsKKyNlbmRpZgorCiAgICAgW1ttX3dlYlZpZXcgX2dlb2xvY2F0aW9uUHJvdmlk
ZXJdIHJlZ2lzdGVyV2ViVmlldzptX3dlYlZpZXddOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0TGVnYWN5L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJHZW9sb2NhdGlvbkNsaWVudC5jcHAg
Yi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJHZW9sb2NhdGlvbkNs
aWVudC5jcHAKaW5kZXggZTFmY2EyNzcyNDk2MTU0YTRlMDcwZTRkZmRhN2U3N2U5NzM1ODJjMS4u
YWM1NDUxNGM2NDJlYTBlNWY4YWYzMzY5ZTFiYmJhZTBjMzkwNzFiNyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViQ29yZVN1cHBvcnQvV2ViR2VvbG9jYXRpb25DbGllbnQu
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkdlb2xv
Y2F0aW9uQ2xpZW50LmNwcApAQCAtNDgsOSArNDgsMTAgQEAgdm9pZCBXZWJHZW9sb2NhdGlvbkNs
aWVudDo6Z2VvbG9jYXRpb25EZXN0cm95ZWQoKQogICAgIGRlbGV0ZSB0aGlzOwogfQogCi12b2lk
IFdlYkdlb2xvY2F0aW9uQ2xpZW50OjpzdGFydFVwZGF0aW5nKGNvbnN0IFN0cmluZyYgYXV0aG9y
aXphdGlvblRva2VuKQordm9pZCBXZWJHZW9sb2NhdGlvbkNsaWVudDo6c3RhcnRVcGRhdGluZyhj
b25zdCBTdHJpbmcmIGF1dGhvcml6YXRpb25Ub2tlbiwgYm9vbCBlbmFibGVIaWdoQWNjdXJhY3kp
CiB7CiAgICAgVU5VU0VEX1BBUkFNKGF1dGhvcml6YXRpb25Ub2tlbik7CisgICAgVU5VU0VEX1BB
UkFNKGVuYWJsZUhpZ2hBY2N1cmFjeSk7CiAgICAgQ09NUHRyPElXZWJHZW9sb2NhdGlvblByb3Zp
ZGVyPiBwcm92aWRlcjsKICAgICBpZiAoRkFJTEVEKG1fd2ViVmlldy0+Z2VvbG9jYXRpb25Qcm92
aWRlcigmcHJvdmlkZXIpKSkKICAgICAgICAgcmV0dXJuOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdExlZ2FjeS93aW4vV2ViQ29yZVN1cHBvcnQvV2ViR2VvbG9jYXRpb25DbGllbnQuaCBiL1Nv
dXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkdlb2xvY2F0aW9uQ2xpZW50
LmgKaW5kZXggMTk1NzQxN2I1NWQ3ZTVkMmY5YjcxZTVjOWQ5YzMwM2RmZWY0ZTE4Ni4uNWI4ZTk0
NDRmMjFmZWQ0M2VkZjI1OTFhMmJhMTVkYTNiZDQ0ZjQ0YSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdExlZ2FjeS93aW4vV2ViQ29yZVN1cHBvcnQvV2ViR2VvbG9jYXRpb25DbGllbnQuaAorKysg
Yi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJHZW9sb2NhdGlvbkNs
aWVudC5oCkBAIC00MSw3ICs0MSw3IEBAIHB1YmxpYzoKICAgICBXZWJHZW9sb2NhdGlvbkNsaWVu
dChXZWJWaWV3Kik7CiAKICAgICB2b2lkIGdlb2xvY2F0aW9uRGVzdHJveWVkKCkgZmluYWw7Ci0g
ICAgdm9pZCBzdGFydFVwZGF0aW5nKGNvbnN0IFN0cmluZyYgYXV0aG9yaXphdGlvblRva2VuKSBm
aW5hbDsKKyAgICB2b2lkIHN0YXJ0VXBkYXRpbmcoY29uc3QgU3RyaW5nJiBhdXRob3JpemF0aW9u
VG9rZW4sIGJvb2wgZW5hYmxlSGlnaEFjY3VyYWN5KSBmaW5hbDsKICAgICB2b2lkIHN0b3BVcGRh
dGluZygpIGZpbmFsOwogICAgIHZvaWQgc2V0RW5hYmxlSGlnaEFjY3VyYWN5KGJvb2wpIGZpbmFs
IHsgfQogICAgIHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6R2VvbG9jYXRpb25Qb3NpdGlvbkRhdGE+
IGxhc3RQb3NpdGlvbigpIGZpbmFsOwo=
</data>
<flag name="commit-queue"
          id="479017"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>452081</attachid>
            <date>2022-02-15 13:18:36 -0800</date>
            <delta_ts>2022-02-15 16:02:04 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-236566-20220215131835.patch</filename>
            <type>text/plain</type>
            <size>110384</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg5ODM4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IGY2MDY5ODliY2RhNjQyMTdkZTJlNzcw
ODM4NmYzNzA2N2ExYThkZTQuLjE4NzM2NzA0OWU1NTRiZmUyMGNjNWM3ZGQ0OThiZjJjZTVjYWNi
MzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMTUgQEAKKzIwMjItMDItMTMgIENocmlzIER1bWV6ICA8Y2R1bWV6
QGFwcGxlLmNvbT4KKworICAgICAgICBEbyBwcmVsaW1pbmFyeSB3b3JrIHRvIHBhc3MgZG9tYWlu
IG5hbWVzIHRvIENvcmVMb2NhdGlvbgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MjM2NTY2CisgICAgICAgIDxyZGFyOi8vODg3NjE0MTM+CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgRGFyaW4gQWRsZXIuCisKKyAgICAgICAgQWRkIGJ1aWxkIHRpbWUgZmxh
ZyBmb3IgcGFzc2luZyB3ZWJzaXRlIGlkZW50aWZpZXJzIHRvIENvcmVMb2NhdGlvbi4KKworICAg
ICAgICAqIHd0Zi9QbGF0Zm9ybUhhdmUuaDoKKwogMjAyMi0wMi0xNSAgUm9iaW4gTW9yaXNzZXQg
IDxybW9yaXNzZXRAYXBwbGUuY29tPgogCiAgICAgICAgIFtXR1NMXSBJbXBsZW1lbnQgZW5vdWdo
IG9mIHRoZSBsZXhlciBmb3IgdGhlIHNpbXBsZXN0IHNoYWRlcnMKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCAyMzNh
NGMzZjE4ODg5YmRlYWQ3NDc4YjdmNjM0NzU5YWJkMTdmM2VlLi4wNjIzYjZhNWViYTBkMTU0NzAy
N2VhNDYwYzczZTJlYmU0YWY0YjM1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VM
b2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNTQgQEAKKzIwMjIt
MDItMTMgIENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KKworICAgICAgICBEbyBwcmVs
aW1pbmFyeSB3b3JrIHRvIHBhc3MgZG9tYWluIG5hbWVzIHRvIENvcmVMb2NhdGlvbgorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjM2NTY2CisgICAgICAg
IDxyZGFyOi8vODg3NjE0MTM+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgRGFyaW4gQWRsZXIuCisK
KyAgICAgICAgRG8gcHJlbGltaW5hcnkgd29yayB0byBwYXNzIGRvbWFpbiBuYW1lcyB0byBDb3Jl
TG9jYXRpb24gd2hlbiB1c2luZyB0aGUgR2VvbG9jYXRpb24gQVBJLgorICAgICAgICBUaGlzIHBp
cGVzIHRoZSBkb21haW4gbmFtZXMgYWxsIHRoZSB3YXkgZnJvbSB0aGUgR2VvbG9jYXRpb24gQVBJ
IHRvIHRoZSBDb3JlTG9jYXRpb24gY2FsbHMKKyAgICAgICAgYnV0IGRvZXNuJ3QgeWV0IHBhc3Mg
dGhlIGRvbWFpbiB0byBDb3JlTG9jYXRpb24gZHVlIHRvIDxyZGFyOi8vODg4MzQzMDE+LiBJIHdp
bGwgZm9sbG93LXVwCisgICAgICAgIG9uY2UgPHJkYXI6Ly84ODgzNDMwMT4gaXMgZml4ZWQuCisK
KyAgICAgICAgKiBNb2R1bGVzL2dlb2xvY2F0aW9uL0dlb2xvY2F0aW9uQ2xpZW50Lmg6CisgICAg
ICAgICogTW9kdWxlcy9nZW9sb2NhdGlvbi9HZW9sb2NhdGlvbkNvbnRyb2xsZXIuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6R2VvbG9jYXRpb25Db250cm9sbGVyOjpkaWROYXZpZ2F0ZVBhZ2UpOgor
ICAgICAgICAoV2ViQ29yZTo6R2VvbG9jYXRpb25Db250cm9sbGVyOjphZGRPYnNlcnZlcik6Cisg
ICAgICAgIChXZWJDb3JlOjpHZW9sb2NhdGlvbkNvbnRyb2xsZXI6OnJlbW92ZU9ic2VydmVyKToK
KyAgICAgICAgKFdlYkNvcmU6Okdlb2xvY2F0aW9uQ29udHJvbGxlcjo6YWN0aXZpdHlTdGF0ZURp
ZENoYW5nZSk6CisgICAgICAgIChXZWJDb3JlOjpHZW9sb2NhdGlvbkNvbnRyb2xsZXI6OnN0YXJ0
VXBkYXRpbmdJZk5lY2Vzc2FyeSk6CisgICAgICAgIChXZWJDb3JlOjpHZW9sb2NhdGlvbkNvbnRy
b2xsZXI6OnN0b3BVcGRhdGluZ0lmTmVjZXNzYXJ5KToKKyAgICAgICAgKiBNb2R1bGVzL2dlb2xv
Y2F0aW9uL0dlb2xvY2F0aW9uQ29udHJvbGxlci5oOgorICAgICAgICAoV2ViQ29yZTo6R2VvbG9j
YXRpb25Db250cm9sbGVyOjpuZWVkc0hpZ2hBY2N1cmFjeSBjb25zdCk6CisgICAgICAgICogTW9k
dWxlcy9nZW9sb2NhdGlvbi9HZW9sb2NhdGlvblBvc2l0aW9uRGF0YS5oOgorICAgICAgICAqIE1v
ZHVsZXMvZ2VvbG9jYXRpb24vaW9zL0dlb2xvY2F0aW9uUG9zaXRpb25EYXRhSU9TLm1tOgorICAg
ICAgICAqIFNvdXJjZXNDb2NvYS50eHQ6CisgICAgICAgICogV2ViQ29yZS54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qOgorICAgICAgICAqIHBhZ2UvUGFnZS5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpQYWdlOjpkaWRDb21taXRMb2FkKToKKyAgICAgICAgKiBwbGF0Zm9ybS9jb2NvYS9Db3JlTG9j
YXRpb25HZW9sb2NhdGlvblByb3ZpZGVyLmg6IENvcGllZCBmcm9tIFNvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvZ2VvbG9jYXRpb24vR2VvbG9jYXRpb25DbGllbnQuaC4KKyAgICAgICAgKiBwbGF0Zm9y
bS9jb2NvYS9Db3JlTG9jYXRpb25HZW9sb2NhdGlvblByb3ZpZGVyLm1tOiBBZGRlZC4KKyAgICAg
ICAgKGlzQXV0aG9yaXphdGlvbkdyYW50ZWQpOgorICAgICAgICAoLVtXZWJDTExvY2F0aW9uTWFu
YWdlciBpbml0V2l0aFdlYnNpdGVJZGVudGlmaWVyOmNsaWVudDpdKToKKyAgICAgICAgKC1bV2Vi
Q0xMb2NhdGlvbk1hbmFnZXIgZGVhbGxvY10pOgorICAgICAgICAoLVtXZWJDTExvY2F0aW9uTWFu
YWdlciBzdGFydF0pOgorICAgICAgICAoLVtXZWJDTExvY2F0aW9uTWFuYWdlciBzdG9wXSk6Cisg
ICAgICAgICgtW1dlYkNMTG9jYXRpb25NYW5hZ2VyIHNldEVuYWJsZUhpZ2hBY2N1cmFjeTpdKToK
KyAgICAgICAgKC1bV2ViQ0xMb2NhdGlvbk1hbmFnZXIgcmVxdWVzdEdlb2xvY2F0aW9uQXV0aG9y
aXphdGlvbl0pOgorICAgICAgICAoLVtXZWJDTExvY2F0aW9uTWFuYWdlciBsb2NhdGlvbk1hbmFn
ZXJEaWRDaGFuZ2VBdXRob3JpemF0aW9uOl0pOgorICAgICAgICAoLVtXZWJDTExvY2F0aW9uTWFu
YWdlciBsb2NhdGlvbk1hbmFnZXI6ZGlkVXBkYXRlTG9jYXRpb25zOl0pOgorICAgICAgICAoLVtX
ZWJDTExvY2F0aW9uTWFuYWdlciBsb2NhdGlvbk1hbmFnZXI6ZGlkRmFpbFdpdGhFcnJvcjpdKToK
KyAgICAgICAgKFdlYkNvcmU6OkNvcmVMb2NhdGlvbkdlb2xvY2F0aW9uUHJvdmlkZXI6OkNvcmVM
b2NhdGlvbkdlb2xvY2F0aW9uUHJvdmlkZXIpOgorICAgICAgICAoV2ViQ29yZTo6Q29yZUxvY2F0
aW9uR2VvbG9jYXRpb25Qcm92aWRlcjo6fkNvcmVMb2NhdGlvbkdlb2xvY2F0aW9uUHJvdmlkZXIp
OgorICAgICAgICAoV2ViQ29yZTo6Q29yZUxvY2F0aW9uR2VvbG9jYXRpb25Qcm92aWRlcjo6c3Rh
cnQpOgorICAgICAgICAoV2ViQ29yZTo6Q29yZUxvY2F0aW9uR2VvbG9jYXRpb25Qcm92aWRlcjo6
c3RvcCk6CisgICAgICAgIChXZWJDb3JlOjpDb3JlTG9jYXRpb25HZW9sb2NhdGlvblByb3ZpZGVy
OjpzZXRFbmFibGVIaWdoQWNjdXJhY3kpOgorICAgICAgICAoV2ViQ29yZTo6Q29yZUxvY2F0aW9u
R2VvbG9jYXRpb25Qcm92aWRlcjo6cmVxdWVzdEF1dGhvcml6YXRpb24pOgorICAgICAgICAqIHBs
YXRmb3JtL21vY2svR2VvbG9jYXRpb25DbGllbnRNb2NrLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
Okdlb2xvY2F0aW9uQ2xpZW50TW9jazo6c3RhcnRVcGRhdGluZyk6CisgICAgICAgICogcGxhdGZv
cm0vbW9jay9HZW9sb2NhdGlvbkNsaWVudE1vY2suaDoKKwogMjAyMi0wMi0xNSAgQW50dGkgS29p
dmlzdG8gIDxhbnR0aUBhcHBsZS5jb20+CiAKICAgICAgICAgW0NTUyBDb250YWluZXIgUXVlcmll
c10gU3VwcG9ydCBhbGwgc2l6ZSBmZWF0dXJlcwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwppbmRleCA2OGJmZGI0ODczYWEwNWJm
YjFkNjIzNTFkZWYzNjQ0ZmQ3MDkzZTA3Li5kMDkyNGFhNzQxMDhmOTNmMzE4NjU0MzA4MzljNGYz
OTgyMTU1YmIxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZworKysgYi9Tb3Vy
Y2UvV2ViS2l0L0NoYW5nZUxvZwpAQCAtMSwzICsxLDk0IEBACisyMDIyLTAyLTEzICBDaHJpcyBE
dW1leiAgPGNkdW1lekBhcHBsZS5jb20+CisKKyAgICAgICAgRG8gcHJlbGltaW5hcnkgd29yayB0
byBwYXNzIGRvbWFpbiBuYW1lcyB0byBDb3JlTG9jYXRpb24KKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzNjU2NgorICAgICAgICA8cmRhcjovLzg4NzYx
NDEzPgorCisgICAgICAgIFJldmlld2VkIGJ5IERhcmluIEFkbGVyLgorCisgICAgICAgIERvIHBy
ZWxpbWluYXJ5IHdvcmsgdG8gcGFzcyBkb21haW4gbmFtZXMgdG8gQ29yZUxvY2F0aW9uIHdoZW4g
dXNpbmcgdGhlIEdlb2xvY2F0aW9uIEFQSS4KKyAgICAgICAgVGhpcyBwaXBlcyB0aGUgZG9tYWlu
IG5hbWVzIGFsbCB0aGUgd2F5IGZyb20gdGhlIEdlb2xvY2F0aW9uIEFQSSB0byB0aGUgQ29yZUxv
Y2F0aW9uIGNhbGxzCisgICAgICAgIGJ1dCBkb2Vzbid0IHlldCBwYXNzIHRoZSBkb21haW4gdG8g
Q29yZUxvY2F0aW9uIGR1ZSB0byA8cmRhcjovLzg4ODM0MzAxPi4gSSB3aWxsIGZvbGxvdy11cAor
ICAgICAgICBvbmNlIDxyZGFyOi8vODg4MzQzMDE+IGlzIGZpeGVkLgorCisgICAgICAgICogU291
cmNlc0NvY29hLnR4dDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0MvV0tHZW9sb2NhdGlvbk1h
bmFnZXIuY3BwOgorICAgICAgICAoV0tHZW9sb2NhdGlvbk1hbmFnZXJTZXRQcm92aWRlcik6Cisg
ICAgICAgICogVUlQcm9jZXNzL0NvY29hL1dlYkdlb2xvY2F0aW9uTWFuYWdlclByb3h5Q29jb2Eu
Y3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYktpdDo6V2ViR2VvbG9jYXRpb25NYW5hZ2VyUHJveHk6
OnBvc2l0aW9uQ2hhbmdlZCk6CisgICAgICAgIChXZWJLaXQ6OldlYkdlb2xvY2F0aW9uTWFuYWdl
clByb3h5OjplcnJvck9jY3VycmVkKToKKyAgICAgICAgKFdlYktpdDo6V2ViR2VvbG9jYXRpb25N
YW5hZ2VyUHJveHk6OnJlc2V0R2VvbG9jYXRpb24pOgorICAgICAgICAoV2ViS2l0OjpXZWJHZW9s
b2NhdGlvbk1hbmFnZXJQcm94eTo6aXNVcGRhdGluZyBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6
OldlYkdlb2xvY2F0aW9uTWFuYWdlclByb3h5Ojppc0hpZ2hBY2N1cmFjeUVuYWJsZWQgY29uc3Qp
OgorICAgICAgICAoV2ViS2l0OjpXZWJHZW9sb2NhdGlvbk1hbmFnZXJQcm94eTo6cHJvdmlkZXJT
dGFydFVwZGF0aW5nKToKKyAgICAgICAgKFdlYktpdDo6V2ViR2VvbG9jYXRpb25NYW5hZ2VyUHJv
eHk6OnByb3ZpZGVyU3RvcFVwZGF0aW5nKToKKyAgICAgICAgKFdlYktpdDo6V2ViR2VvbG9jYXRp
b25NYW5hZ2VyUHJveHk6OnByb3ZpZGVyU2V0RW5hYmxlZEhpZ2hBY2N1cmFjeSk6CisgICAgICAg
ICogVUlQcm9jZXNzL1dlYkdlb2xvY2F0aW9uTWFuYWdlclByb3h5LmNwcDoKKyAgICAgICAgKFdl
YktpdDo6V2ViR2VvbG9jYXRpb25NYW5hZ2VyUHJveHk6OldlYkdlb2xvY2F0aW9uTWFuYWdlclBy
b3h5KToKKyAgICAgICAgKFdlYktpdDo6V2ViR2VvbG9jYXRpb25NYW5hZ2VyUHJveHk6OnByb2Nl
c3NQb29sRGVzdHJveWVkKToKKyAgICAgICAgKFdlYktpdDo6V2ViR2VvbG9jYXRpb25NYW5hZ2Vy
UHJveHk6OnByb2Nlc3NEaWRDbG9zZSk6CisgICAgICAgIChXZWJLaXQ6OldlYkdlb2xvY2F0aW9u
TWFuYWdlclByb3h5Ojpwcm92aWRlckRpZENoYW5nZVBvc2l0aW9uKToKKyAgICAgICAgKFdlYktp
dDo6V2ViR2VvbG9jYXRpb25NYW5hZ2VyUHJveHk6OnByb3ZpZGVyRGlkRmFpbFRvRGV0ZXJtaW5l
UG9zaXRpb24pOgorICAgICAgICAoV2ViS2l0OjpXZWJHZW9sb2NhdGlvbk1hbmFnZXJQcm94eTo6
c3RhcnRVcGRhdGluZyk6CisgICAgICAgIChXZWJLaXQ6OldlYkdlb2xvY2F0aW9uTWFuYWdlclBy
b3h5OjpzdG9wVXBkYXRpbmcpOgorICAgICAgICAoV2ViS2l0OjpXZWJHZW9sb2NhdGlvbk1hbmFn
ZXJQcm94eTo6c2V0RW5hYmxlSGlnaEFjY3VyYWN5KToKKyAgICAgICAgKFdlYktpdDo6V2ViR2Vv
bG9jYXRpb25NYW5hZ2VyUHJveHk6OnNldFByb3ZpZGVyKToKKyAgICAgICAgKFdlYktpdDo6V2Vi
R2VvbG9jYXRpb25NYW5hZ2VyUHJveHk6OmlzVXBkYXRpbmcgY29uc3QpOgorICAgICAgICAoV2Vi
S2l0OjpXZWJHZW9sb2NhdGlvbk1hbmFnZXJQcm94eTo6aXNIaWdoQWNjdXJhY3lFbmFibGVkIGNv
bnN0KToKKyAgICAgICAgKFdlYktpdDo6V2ViR2VvbG9jYXRpb25NYW5hZ2VyUHJveHk6OnByb3Zp
ZGVyU3RhcnRVcGRhdGluZyk6CisgICAgICAgIChXZWJLaXQ6OldlYkdlb2xvY2F0aW9uTWFuYWdl
clByb3h5Ojpwcm92aWRlclN0b3BVcGRhdGluZyk6CisgICAgICAgIChXZWJLaXQ6OldlYkdlb2xv
Y2F0aW9uTWFuYWdlclByb3h5Ojpwcm92aWRlclNldEVuYWJsZWRIaWdoQWNjdXJhY3kpOgorICAg
ICAgICAoV2ViS2l0OjpXZWJHZW9sb2NhdGlvbk1hbmFnZXJQcm94eTo6cmVzZXRQZXJtaXNzaW9u
cyk6IERlbGV0ZWQuCisgICAgICAgIChXZWJLaXQ6OldlYkdlb2xvY2F0aW9uTWFuYWdlclByb3h5
OjpyZW1vdmVSZXF1ZXN0ZXIpOiBEZWxldGVkLgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJHZW9s
b2NhdGlvbk1hbmFnZXJQcm94eS5oOgorICAgICAgICAoV2ViS2l0OjpXZWJHZW9sb2NhdGlvbk1h
bmFnZXJQcm94eTo6bGFzdFBvc2l0aW9uIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYktp
dDo6V2ViR2VvbG9jYXRpb25NYW5hZ2VyUHJveHk6OmlzVXBkYXRpbmcgY29uc3QpOiBEZWxldGVk
LgorICAgICAgICAoV2ViS2l0OjpXZWJHZW9sb2NhdGlvbk1hbmFnZXJQcm94eTo6aXNIaWdoQWNj
dXJhY3lFbmFibGVkIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViR2Vv
bG9jYXRpb25NYW5hZ2VyUHJveHkubWVzc2FnZXMuaW46CisgICAgICAgICogVUlQcm9jZXNzL2lv
cy9XS0dlb2xvY2F0aW9uUHJvdmlkZXJJT1MubW06CisgICAgICAgICgtW1dLR2VvbG9jYXRpb25Q
cm92aWRlcklPUyBfc3RhcnRVcGRhdGluZ10pOgorICAgICAgICAoLVtXS0dlb2xvY2F0aW9uUHJv
dmlkZXJJT1MgX3N0b3BVcGRhdGluZ10pOgorICAgICAgICAoLVtXS0dlb2xvY2F0aW9uUHJvdmlk
ZXJJT1MgX3NldEVuYWJsZUhpZ2hBY2N1cmFjeTpdKToKKyAgICAgICAgKC1bV0tHZW9sb2NhdGlv
blByb3ZpZGVySU9TIGluaXRXaXRoUHJvY2Vzc1Bvb2w6XSk6CisgICAgICAgICgtW1dLR2VvbG9j
YXRpb25Qcm92aWRlcklPUyBkZWNpZGVQb2xpY3lGb3JHZW9sb2NhdGlvblJlcXVlc3RGcm9tT3Jp
Z2luOmNvbXBsZXRpb25IYW5kbGVyOnZpZXc6XSk6CisgICAgICAgICgtW1dLR2VvbG9jYXRpb25Q
cm92aWRlcklPUyBnZW9sb2NhdGlvbkF1dGhvcml6YXRpb25HcmFudGVkXSk6CisgICAgICAgICgt
W1dLR2VvbG9jYXRpb25Qcm92aWRlcklPUyBwb3NpdGlvbkNoYW5nZWQ6XSk6CisgICAgICAgICgt
W1dLR2VvbG9jYXRpb25Qcm92aWRlcklPUyBlcnJvck9jY3VycmVkOl0pOgorICAgICAgICAoLVtX
S0dlb2xvY2F0aW9uUHJvdmlkZXJJT1MgcmVzZXRHZW9sb2NhdGlvbl0pOgorICAgICAgICAoc3Rh
cnRVcGRhdGluZ0NhbGxiYWNrKTogRGVsZXRlZC4KKyAgICAgICAgKHN0b3BVcGRhdGluZ0NhbGxi
YWNrKTogRGVsZXRlZC4KKyAgICAgICAgKHNldEVuYWJsZUhpZ2hBY2N1cmFjeSk6IERlbGV0ZWQu
CisgICAgICAgICgtW1dLTGVnYWN5Q29yZUxvY2F0aW9uUHJvdmlkZXIgc2V0TGlzdGVuZXI6XSk6
IERlbGV0ZWQuCisgICAgICAgICgtW1dLTGVnYWN5Q29yZUxvY2F0aW9uUHJvdmlkZXIgcmVxdWVz
dEdlb2xvY2F0aW9uQXV0aG9yaXphdGlvbl0pOiBEZWxldGVkLgorICAgICAgICAoLVtXS0xlZ2Fj
eUNvcmVMb2NhdGlvblByb3ZpZGVyIHN0YXJ0XSk6IERlbGV0ZWQuCisgICAgICAgICgtW1dLTGVn
YWN5Q29yZUxvY2F0aW9uUHJvdmlkZXIgc3RvcF0pOiBEZWxldGVkLgorICAgICAgICAoLVtXS0xl
Z2FjeUNvcmVMb2NhdGlvblByb3ZpZGVyIHNldEVuYWJsZUhpZ2hBY2N1cmFjeTpdKTogRGVsZXRl
ZC4KKyAgICAgICAgKC1bV0tMZWdhY3lDb3JlTG9jYXRpb25Qcm92aWRlciBnZW9sb2NhdGlvbkF1
dGhvcml6YXRpb25HcmFudGVkXSk6IERlbGV0ZWQuCisgICAgICAgICgtW1dLTGVnYWN5Q29yZUxv
Y2F0aW9uUHJvdmlkZXIgZ2VvbG9jYXRpb25BdXRob3JpemF0aW9uRGVuaWVkXSk6IERlbGV0ZWQu
CisgICAgICAgICgtW1dLTGVnYWN5Q29yZUxvY2F0aW9uUHJvdmlkZXIgcG9zaXRpb25DaGFuZ2Vk
Ol0pOiBEZWxldGVkLgorICAgICAgICAoLVtXS0xlZ2FjeUNvcmVMb2NhdGlvblByb3ZpZGVyIGVy
cm9yT2NjdXJyZWQ6XSk6IERlbGV0ZWQuCisgICAgICAgICgtW1dLTGVnYWN5Q29yZUxvY2F0aW9u
UHJvdmlkZXIgcmVzZXRHZW9sb2NhdGlvbl0pOiBEZWxldGVkLgorICAgICAgICAqIFdlYktpdC54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIFdlYlByb2Nlc3MvR2VvbG9jYXRp
b24vV2ViR2VvbG9jYXRpb25NYW5hZ2VyLmNwcDoKKyAgICAgICAgKFdlYktpdDo6cmVnaXN0cmFi
bGVEb21haW5Gb3JQYWdlKToKKyAgICAgICAgKFdlYktpdDo6V2ViR2VvbG9jYXRpb25NYW5hZ2Vy
OjpyZWdpc3RlcldlYlBhZ2UpOgorICAgICAgICAoV2ViS2l0OjpXZWJHZW9sb2NhdGlvbk1hbmFn
ZXI6OnVucmVnaXN0ZXJXZWJQYWdlKToKKyAgICAgICAgKFdlYktpdDo6V2ViR2VvbG9jYXRpb25N
YW5hZ2VyOjpzZXRFbmFibGVIaWdoQWNjdXJhY3lGb3JQYWdlKToKKyAgICAgICAgKFdlYktpdDo6
V2ViR2VvbG9jYXRpb25NYW5hZ2VyOjpkaWRDaGFuZ2VQb3NpdGlvbik6CisgICAgICAgIChXZWJL
aXQ6OldlYkdlb2xvY2F0aW9uTWFuYWdlcjo6ZGlkRmFpbFRvRGV0ZXJtaW5lUG9zaXRpb24pOgor
ICAgICAgICAoV2ViS2l0OjpXZWJHZW9sb2NhdGlvbk1hbmFnZXI6OnJlc2V0UGVybWlzc2lvbnMp
OgorICAgICAgICAoV2ViS2l0OjpXZWJHZW9sb2NhdGlvbk1hbmFnZXI6OmlzVXBkYXRpbmcgY29u
c3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViS2l0OjpXZWJHZW9sb2NhdGlvbk1hbmFnZXI6Omlz
SGlnaEFjY3VyYWN5RW5hYmxlZCBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgICogV2ViUHJvY2Vz
cy9HZW9sb2NhdGlvbi9XZWJHZW9sb2NhdGlvbk1hbmFnZXIuaDoKKyAgICAgICAgKiBXZWJQcm9j
ZXNzL0dlb2xvY2F0aW9uL1dlYkdlb2xvY2F0aW9uTWFuYWdlci5tZXNzYWdlcy5pbjoKKyAgICAg
ICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkdlb2xvY2F0aW9uQ2xpZW50LmNwcDoK
KyAgICAgICAgKFdlYktpdDo6V2ViR2VvbG9jYXRpb25DbGllbnQ6OnN0YXJ0VXBkYXRpbmcpOgor
ICAgICAgICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViR2VvbG9jYXRpb25DbGllbnQu
aDoKKyAgICAgICAgKFdlYktpdDo6V2ViR2VvbG9jYXRpb25DbGllbnQ6OldlYkdlb2xvY2F0aW9u
Q2xpZW50KTogRGVsZXRlZC4KKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3BwOgor
ICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzOjpyZXNldEFsbEdlb2xvY2F0aW9uUGVybWlzc2lv
bnMpOiBEZWxldGVkLgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUHJvY2Vzcy5oOgorCiAyMDIy
LTAyLTE1ICBNZWdhbiBHYXJkbmVyICA8bWVnYW5fZ2FyZG5lckBhcHBsZS5jb20+CiAKICAgICAg
ICAgSW1wbGVtZW50IGFkZGl0aW9uYWwgUmV2ZWVhbCBtZXRob2RzLgpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMv
Q2hhbmdlTG9nCmluZGV4IDY4MDM5NDg1OGExNWI4YTI1Njk2YWFlYzdjOGQ5NGFhNzNhZDcyMjMu
Ljk5Mzg2NTg0M2E3ZTg4ZTFmZjdkODRkY2Y5N2IxZTllMDcyMjZmYzYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5
L21hYy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNSBAQAorMjAyMi0wMi0xMyAgQ2hyaXMgRHVtZXog
IDxjZHVtZXpAYXBwbGUuY29tPgorCisgICAgICAgIERvIHByZWxpbWluYXJ5IHdvcmsgdG8gcGFz
cyBkb21haW4gbmFtZXMgdG8gQ29yZUxvY2F0aW9uCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzY1NjYKKyAgICAgICAgPHJkYXI6Ly84ODc2MTQxMz4K
KworICAgICAgICBSZXZpZXdlZCBieSBEYXJpbiBBZGxlci4KKworICAgICAgICAqIFdlYkNvcmVT
dXBwb3J0L1dlYkdlb2xvY2F0aW9uQ2xpZW50Lmg6CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQv
V2ViR2VvbG9jYXRpb25DbGllbnQubW06CisgICAgICAgIChXZWJHZW9sb2NhdGlvbkNsaWVudDo6
c3RhcnRVcGRhdGluZyk6CisKIDIwMjItMDItMTEgIENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxl
LmNvbT4KIAogICAgICAgICBVbnJldmlld2VkLCBmaXggYnVpbGQgd2l0aCB0aGUgbGF0ZXN0IGlP
UyBTREsuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9DaGFuZ2VMb2cgYi9T
b3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9DaGFuZ2VMb2cKaW5kZXggNjk1YWE5MTA1MzllZjAyMTA1
ZjUyMTkzMDRjMDk3ZTEwMzEyNjQ1NS4uZjQwMGYzNjdkMDUyYWJlNTg3NTlhNWQ3MmM1Mjk2NTFk
ZDk5MTQzZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vQ2hhbmdlTG9nCisr
KyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE1IEBACisy
MDIyLTAyLTEzICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CisKKyAgICAgICAgRG8g
cHJlbGltaW5hcnkgd29yayB0byBwYXNzIGRvbWFpbiBuYW1lcyB0byBDb3JlTG9jYXRpb24KKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzNjU2NgorICAg
ICAgICA8cmRhcjovLzg4NzYxNDEzPgorCisgICAgICAgIFJldmlld2VkIGJ5IERhcmluIEFkbGVy
LgorCisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2ViR2VvbG9jYXRpb25DbGllbnQuY3BwOgor
ICAgICAgICAoV2ViR2VvbG9jYXRpb25DbGllbnQ6OnN0YXJ0VXBkYXRpbmcpOgorICAgICAgICAq
IFdlYkNvcmVTdXBwb3J0L1dlYkdlb2xvY2F0aW9uQ2xpZW50Lmg6CisKIDIwMjItMDItMDEgIE15
bGVzIEMuIE1heGZpZWxkICA8bW1heGZpZWxkQGFwcGxlLmNvbT4KIAogICAgICAgICBSZW5hbWUg
Rm9udENhc2NhZGU6OmZvbnRNZXRyaWNzKCkgYW5kIFJlbmRlclN0eWxlOjpmb250TWV0cmljcygp
IHRvIGZvbnRNZXRyaWNzT2ZQcmltYXJ5Rm9udCgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0
Zi9QbGF0Zm9ybUhhdmUuaCBiL1NvdXJjZS9XVEYvd3RmL1BsYXRmb3JtSGF2ZS5oCmluZGV4IDA5
MmJjMzYyMTUwMWQ0NGNlYWZiMDcwZmFjY2QzOTk1Y2RhMjMxMjcuLmIxNjY0Y2RhMDY3NTAyNDE4
NjFlZDJjZmU5MjgzY2EzZTNjYTFiMDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL1BsYXRm
b3JtSGF2ZS5oCisrKyBiL1NvdXJjZS9XVEYvd3RmL1BsYXRmb3JtSGF2ZS5oCkBAIC0xMTE5LDYg
KzExMTksMjEgQEAKICNkZWZpbmUgSEFWRV9OU1RFWFRMSVNUX01BUktFUl9GT1JNQVRTIDEKICNl
bmRpZgogCisjaWYgKFBMQVRGT1JNKElPUykgJiYgX19JUEhPTkVfT1NfVkVSU0lPTl9NQVhfQUxM
T1dFRCA+PSAxNjAwMDApIFwKKyAgICB8fCAoUExBVEZPUk0oV0FUQ0hPUykgJiYgX19XQVRDSF9P
U19WRVJTSU9OX01BWF9BTExPV0VEID49IDkwMDAwKSBcCisgICAgfHwgKFBMQVRGT1JNKEFQUExF
VFYpICYmIF9fVFZfT1NfVkVSU0lPTl9NQVhfQUxMT1dFRCA+PSAxNjAwMDApCisjZGVmaW5lIEhB
VkVfQ09SRV9MT0NBVElPTl9XRUJTSVRFX0lERU5USUZJRVJTIDEKKyNlbmRpZgorCisjaWYgUExB
VEZPUk0oSU9TX0ZBTUlMWSkgfHwgKFBMQVRGT1JNKE1BQykgJiYgX19NQUNfT1NfWF9WRVJTSU9O
X01JTl9SRVFVSVJFRCA+PSAxMDE0MDAgJiYgZGVmaW5lZCBfX2hhc19pbmNsdWRlICYmIF9faGFz
X2luY2x1ZGUoPENvcmVGb3VuZGF0aW9uL0NGUHJpdi5oPikpCisjZGVmaW5lIEhBVkVfQ09SRV9M
T0NBVElPTl9BVVRIT1JJWkVEX1dIRU5fSU5fVVNFIDEKKyNlbmRpZgorCisjaWYgUExBVEZPUk0o
SU9TX0ZBTUlMWSkgfHwgKFBMQVRGT1JNKE1BQykgJiYgX19NQUNfT1NfWF9WRVJTSU9OX01JTl9S
RVFVSVJFRCA+PSAxMDE2MDApCisjZGVmaW5lIEhBVkVfQ09SRV9MT0NBVElPTl9BVVRIT1JJWkFU
SU9OX1NUQVRVU19JTlNUQUxMX1BST1BFUlRZIDEKKyNkZWZpbmUgSEFWRV9DT1JFX0xPQ0FUSU9O
X0RJRF9DSEFOR0VfQVVUSE9SSVpBVElPTiAxCisjZW5kaWYKKwogI2lmIFBMQVRGT1JNKE1BQykK
ICNkZWZpbmUgSEFWRV9TQ0VORUtJVCAxCiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvZ2VvbG9jYXRpb24vR2VvbG9jYXRpb25DbGllbnQuaCBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvZ2VvbG9jYXRpb24vR2VvbG9jYXRpb25DbGllbnQuaAppbmRleCA1YmFmM2Fk
ODJjNTdlNWFjYmE5NmUzZGYwZWQ2MGViYzc1NGJjYjA1Li5hNGU4NjIzNjI1NTY3ZTlhZGZlYjAw
ZDgyNDAwMGEyNzdkYmVhZjAwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2dl
b2xvY2F0aW9uL0dlb2xvY2F0aW9uQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9nZW9sb2NhdGlvbi9HZW9sb2NhdGlvbkNsaWVudC5oCkBAIC0zOCw3ICszOCw3IEBAIGNsYXNz
IEdlb2xvY2F0aW9uQ2xpZW50IHsKIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgZ2VvbG9jYXRp
b25EZXN0cm95ZWQoKSA9IDA7CiAKLSAgICB2aXJ0dWFsIHZvaWQgc3RhcnRVcGRhdGluZyhjb25z
dCBTdHJpbmcmIGF1dGhvcml6YXRpb25Ub2tlbikgPSAwOworICAgIHZpcnR1YWwgdm9pZCBzdGFy
dFVwZGF0aW5nKGNvbnN0IFN0cmluZyYgYXV0aG9yaXphdGlvblRva2VuLCBib29sIG5lZWRzSGln
aEFjY3VyYWN5KSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIHN0b3BVcGRhdGluZygpID0gMDsKICAg
ICB2aXJ0dWFsIHZvaWQgcmV2b2tlQXV0aG9yaXphdGlvblRva2VuKGNvbnN0IFN0cmluZyYpIHsg
fQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2dlb2xvY2F0aW9uL0dlb2xv
Y2F0aW9uQ29udHJvbGxlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2dlb2xvY2F0aW9u
L0dlb2xvY2F0aW9uQ29udHJvbGxlci5jcHAKaW5kZXggMDYxNjI5MTYwZDliY2M3ZDVkYWY3NGNm
YzRmODE1NTBiYTQ4ZGU4Yy4uMDdkZDY1ZjNjMWFlZTc5ZWI5YzczMjgzNmEyZDVhYWQwMTczMzNj
ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9nZW9sb2NhdGlvbi9HZW9sb2Nh
dGlvbkNvbnRyb2xsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZ2VvbG9jYXRp
b24vR2VvbG9jYXRpb25Db250cm9sbGVyLmNwcApAQCAtNTIsMTkgKzUyLDI1IEBAIEdlb2xvY2F0
aW9uQ29udHJvbGxlcjo6fkdlb2xvY2F0aW9uQ29udHJvbGxlcigpCiAgICAgbV9jbGllbnQuZ2Vv
bG9jYXRpb25EZXN0cm95ZWQoKTsKIH0KIAordm9pZCBHZW9sb2NhdGlvbkNvbnRyb2xsZXI6OmRp
ZE5hdmlnYXRlUGFnZSgpCit7CisgICAgd2hpbGUgKCFtX29ic2VydmVycy5pc0VtcHR5KCkpCisg
ICAgICAgIHJlbW92ZU9ic2VydmVyKG1fb2JzZXJ2ZXJzLmJlZ2luKCktPmdldCgpKTsKK30KKwog
dm9pZCBHZW9sb2NhdGlvbkNvbnRyb2xsZXI6OmFkZE9ic2VydmVyKEdlb2xvY2F0aW9uJiBvYnNl
cnZlciwgYm9vbCBlbmFibGVIaWdoQWNjdXJhY3kpCiB7Ci0gICAgLy8gVGhpcyBtYXkgYmUgY2Fs
bGVkIG11bHRpcGxlIHRpbWVzIHdpdGggdGhlIHNhbWUgb2JzZXJ2ZXIsIHRob3VnaCByZW1vdmVP
YnNlcnZlcigpCi0gICAgLy8gaXMgY2FsbGVkIG9ubHkgb25jZSB3aXRoIGVhY2guCi0gICAgYm9v
bCB3YXNFbXB0eSA9IG1fb2JzZXJ2ZXJzLmlzRW1wdHkoKTsKKyAgICBib29sIGhpZ2hBY2N1cmFj
eVdhc1JlcXVpcmVkID0gbmVlZHNIaWdoQWNjdXJhY3koKTsKKwogICAgIG1fb2JzZXJ2ZXJzLmFk
ZChvYnNlcnZlcik7CiAgICAgaWYgKGVuYWJsZUhpZ2hBY2N1cmFjeSkKICAgICAgICAgbV9oaWdo
QWNjdXJhY3lPYnNlcnZlcnMuYWRkKG9ic2VydmVyKTsKIAotICAgIGlmIChlbmFibGVIaWdoQWNj
dXJhY3kpCi0gICAgICAgIG1fY2xpZW50LnNldEVuYWJsZUhpZ2hBY2N1cmFjeSh0cnVlKTsKLSAg
ICBpZiAod2FzRW1wdHkgJiYgbV9wYWdlLmlzVmlzaWJsZSgpKQotICAgICAgICBtX2NsaWVudC5z
dGFydFVwZGF0aW5nKG9ic2VydmVyLmF1dGhvcml6YXRpb25Ub2tlbigpKTsKKyAgICBpZiAobV9p
c1VwZGF0aW5nKSB7CisgICAgICAgIGlmICghaGlnaEFjY3VyYWN5V2FzUmVxdWlyZWQgJiYgZW5h
YmxlSGlnaEFjY3VyYWN5KQorICAgICAgICAgICAgbV9jbGllbnQuc2V0RW5hYmxlSGlnaEFjY3Vy
YWN5KHRydWUpOworICAgIH0gZWxzZQorICAgICAgICBzdGFydFVwZGF0aW5nSWZOZWNlc3Nhcnko
KTsKIH0KIAogdm9pZCBHZW9sb2NhdGlvbkNvbnRyb2xsZXI6OnJlbW92ZU9ic2VydmVyKEdlb2xv
Y2F0aW9uJiBvYnNlcnZlcikKQEAgLTcyLDEyICs3OCwxNyBAQCB2b2lkIEdlb2xvY2F0aW9uQ29u
dHJvbGxlcjo6cmVtb3ZlT2JzZXJ2ZXIoR2VvbG9jYXRpb24mIG9ic2VydmVyKQogICAgIGlmICgh
bV9vYnNlcnZlcnMuY29udGFpbnMob2JzZXJ2ZXIpKQogICAgICAgICByZXR1cm47CiAKKyAgICBi
b29sIGhpZ2hBY2N1cmFjeVdhc1JlcXVpcmVkID0gbmVlZHNIaWdoQWNjdXJhY3koKTsKKwogICAg
IG1fb2JzZXJ2ZXJzLnJlbW92ZShvYnNlcnZlcik7CiAgICAgbV9oaWdoQWNjdXJhY3lPYnNlcnZl
cnMucmVtb3ZlKG9ic2VydmVyKTsKIAorICAgIGlmICghbV9pc1VwZGF0aW5nKQorICAgICAgICBy
ZXR1cm47CisKICAgICBpZiAobV9vYnNlcnZlcnMuaXNFbXB0eSgpKQotICAgICAgICBtX2NsaWVu
dC5zdG9wVXBkYXRpbmcoKTsKLSAgICBlbHNlIGlmIChtX2hpZ2hBY2N1cmFjeU9ic2VydmVycy5p
c0VtcHR5KCkpCisgICAgICAgIHN0b3BVcGRhdGluZ0lmTmVjZXNzYXJ5KCk7CisgICAgZWxzZSBp
ZiAoaGlnaEFjY3VyYWN5V2FzUmVxdWlyZWQgJiYgIW5lZWRzSGlnaEFjY3VyYWN5KCkpCiAgICAg
ICAgIG1fY2xpZW50LnNldEVuYWJsZUhpZ2hBY2N1cmFjeShmYWxzZSk7CiB9CiAKQEAgLTEzOSw5
ICsxNTAsOSBAQCB2b2lkIEdlb2xvY2F0aW9uQ29udHJvbGxlcjo6YWN0aXZpdHlTdGF0ZURpZENo
YW5nZShPcHRpb25TZXQ8QWN0aXZpdHlTdGF0ZTo6RmxhZwogICAgIGF1dG8gY2hhbmdlZCA9IG9s
ZEFjdGl2aXR5U3RhdGUgXiBuZXdBY3Rpdml0eVN0YXRlOwogICAgIGlmIChjaGFuZ2VkICYgQWN0
aXZpdHlTdGF0ZTo6SXNWaXNpYmxlICYmICFtX29ic2VydmVycy5pc0VtcHR5KCkpIHsKICAgICAg
ICAgaWYgKG5ld0FjdGl2aXR5U3RhdGUgJiBBY3Rpdml0eVN0YXRlOjpJc1Zpc2libGUpCi0gICAg
ICAgICAgICBtX2NsaWVudC5zdGFydFVwZGF0aW5nKCgqbV9vYnNlcnZlcnMucmFuZG9tKCkpLT5h
dXRob3JpemF0aW9uVG9rZW4oKSk7CisgICAgICAgICAgICBzdGFydFVwZGF0aW5nSWZOZWNlc3Nh
cnkoKTsKICAgICAgICAgZWxzZQotICAgICAgICAgICAgbV9jbGllbnQuc3RvcFVwZGF0aW5nKCk7
CisgICAgICAgICAgICBzdG9wVXBkYXRpbmdJZk5lY2Vzc2FyeSgpOwogICAgIH0KIAogICAgIGlm
ICghbV9wYWdlLmlzVmlzaWJsZSgpKQpAQCAtMTUyLDYgKzE2MywyNCBAQCB2b2lkIEdlb2xvY2F0
aW9uQ29udHJvbGxlcjo6YWN0aXZpdHlTdGF0ZURpZENoYW5nZShPcHRpb25TZXQ8QWN0aXZpdHlT
dGF0ZTo6RmxhZwogICAgICAgICBtX2NsaWVudC5yZXF1ZXN0UGVybWlzc2lvbihwZXJtaXNzaW9u
UmVxdWVzdC5nZXQoKSk7CiB9CiAKK3ZvaWQgR2VvbG9jYXRpb25Db250cm9sbGVyOjpzdGFydFVw
ZGF0aW5nSWZOZWNlc3NhcnkoKQoreworICAgIGlmIChtX2lzVXBkYXRpbmcgfHwgIW1fcGFnZS5p
c1Zpc2libGUoKSB8fCBtX29ic2VydmVycy5pc0VtcHR5KCkpCisgICAgICAgIHJldHVybjsKKwor
ICAgIG1fY2xpZW50LnN0YXJ0VXBkYXRpbmcoKCptX29ic2VydmVycy5yYW5kb20oKSktPmF1dGhv
cml6YXRpb25Ub2tlbigpLCBuZWVkc0hpZ2hBY2N1cmFjeSgpKTsKKyAgICBtX2lzVXBkYXRpbmcg
PSB0cnVlOworfQorCit2b2lkIEdlb2xvY2F0aW9uQ29udHJvbGxlcjo6c3RvcFVwZGF0aW5nSWZO
ZWNlc3NhcnkoKQoreworICAgIGlmICghbV9pc1VwZGF0aW5nKQorICAgICAgICByZXR1cm47CisK
KyAgICBtX2NsaWVudC5zdG9wVXBkYXRpbmcoKTsKKyAgICBtX2lzVXBkYXRpbmcgPSBmYWxzZTsK
K30KKwogY29uc3QgY2hhciogR2VvbG9jYXRpb25Db250cm9sbGVyOjpzdXBwbGVtZW50TmFtZSgp
CiB7CiAgICAgcmV0dXJuICJHZW9sb2NhdGlvbkNvbnRyb2xsZXIiOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9nZW9sb2NhdGlvbi9HZW9sb2NhdGlvbkNvbnRyb2xsZXIuaCBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZ2VvbG9jYXRpb24vR2VvbG9jYXRpb25Db250cm9sbGVy
LmgKaW5kZXggNDJmNWQwNjJkYjZmMDljNjYwMTExZDY2ZDlmMGZjZmZmM2IyMDc0MC4uYmJmZjU3
NWViMDU4MzI0MDc4MGQzYjQxYTk2NzQyYzZiMWQ3MjQ4ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9nZW9sb2NhdGlvbi9HZW9sb2NhdGlvbkNvbnRyb2xsZXIuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2dlb2xvY2F0aW9uL0dlb2xvY2F0aW9uQ29udHJvbGxlci5o
CkBAIC0zMCw2ICszMCw3IEBACiAjaW5jbHVkZSAiQWN0aXZpdHlTdGF0ZUNoYW5nZU9ic2VydmVy
LmgiCiAjaW5jbHVkZSAiR2VvbG9jYXRpb24uaCIKICNpbmNsdWRlICJQYWdlLmgiCisjaW5jbHVk
ZSAiUmVnaXN0cmFibGVEb21haW4uaCIKICNpbmNsdWRlIDx3dGYvSGFzaFNldC5oPgogI2luY2x1
ZGUgPHd0Zi9Ob25jb3B5YWJsZS5oPgogI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KQEAgLTY1LDYg
KzY2LDggQEAgcHVibGljOgogCiAgICAgdm9pZCByZXZva2VBdXRob3JpemF0aW9uVG9rZW4oY29u
c3QgU3RyaW5nJik7CiAKKyAgICB2b2lkIGRpZE5hdmlnYXRlUGFnZSgpOworCiBwcml2YXRlOgog
ICAgIFBhZ2UmIG1fcGFnZTsKICAgICBHZW9sb2NhdGlvbkNsaWVudCYgbV9jbGllbnQ7CkBAIC03
Myw2ICs3NiwxMSBAQCBwcml2YXRlOgogCiAgICAgc3RkOjpvcHRpb25hbDxHZW9sb2NhdGlvblBv
c2l0aW9uRGF0YT4gbV9sYXN0UG9zaXRpb247CiAKKyAgICBib29sIG5lZWRzSGlnaEFjY3VyYWN5
KCkgY29uc3QgeyByZXR1cm4gIW1faGlnaEFjY3VyYWN5T2JzZXJ2ZXJzLmlzRW1wdHkoKTsgfQor
CisgICAgdm9pZCBzdGFydFVwZGF0aW5nSWZOZWNlc3NhcnkoKTsKKyAgICB2b2lkIHN0b3BVcGRh
dGluZ0lmTmVjZXNzYXJ5KCk7CisKICAgICB0eXBlZGVmIEhhc2hTZXQ8UmVmPEdlb2xvY2F0aW9u
Pj4gT2JzZXJ2ZXJzU2V0OwogICAgIC8vIEFsbCBvYnNlcnZlcnM7IGJvdGggdGhvc2UgcmVxdWVz
dGluZyBoaWdoIGFjY3VyYWN5IGFuZCB0aG9zZSBub3QuCiAgICAgT2JzZXJ2ZXJzU2V0IG1fb2Jz
ZXJ2ZXJzOwpAQCAtODAsNiArODgsOSBAQCBwcml2YXRlOgogCiAgICAgLy8gV2hpbGUgdGhlIHBh
Z2UgaXMgbm90IHZpc2libGUsIHdlIHBlbmQgcGVybWlzc2lvbiByZXF1ZXN0cy4KICAgICBIYXNo
U2V0PFJlZjxHZW9sb2NhdGlvbj4+IG1fcGVuZGluZ1Blcm1pc3Npb25SZXF1ZXN0OworCisgICAg
UmVnaXN0cmFibGVEb21haW4gbV9yZWdpc3RyYWJsZURvbWFpbjsKKyAgICBib29sIG1faXNVcGRh
dGluZyB7IGZhbHNlIH07CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2dlb2xvY2F0aW9uL0dlb2xvY2F0aW9uUG9zaXRpb25E
YXRhLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2dlb2xvY2F0aW9uL0dlb2xvY2F0aW9uUG9z
aXRpb25EYXRhLmgKaW5kZXggOTI2MjIxNzBjOGFhZDY5ODliOGExMmNlNDgzNTZkYzY4N2JmNmUz
NS4uY2MyMTgwYTgzN2QyNzQzYzFmYmY3NjFjNDEwZTFjN2ViZmVhZWU3ZCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9nZW9sb2NhdGlvbi9HZW9sb2NhdGlvblBvc2l0aW9uRGF0
YS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZ2VvbG9jYXRpb24vR2VvbG9jYXRpb25Q
b3NpdGlvbkRhdGEuaApAQCAtMjksNyArMjksNyBAQAogI2luY2x1ZGUgPHd0Zi9SZWYuaD4KICNp
bmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgogCi0jaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKKyNp
ZiBQTEFURk9STShDT0NPQSkKIE9CSkNfQ0xBU1MgQ0xMb2NhdGlvbjsKICNlbmRpZgogCkBAIC00
Nyw3ICs0Nyw3IEBAIHB1YmxpYzoKICAgICB7CiAgICAgfQogCi0jaWYgUExBVEZPUk0oSU9TX0ZB
TUlMWSkKKyNpZiBQTEFURk9STShDT0NPQSkKICAgICBXRUJDT1JFX0VYUE9SVCBleHBsaWNpdCBH
ZW9sb2NhdGlvblBvc2l0aW9uRGF0YShDTExvY2F0aW9uKik7CiAjZW5kaWYKIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9nZW9sb2NhdGlvbi9jb2NvYS9HZW9sb2NhdGlvblBv
c2l0aW9uRGF0YUNvY29hLm1tIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9nZW9sb2NhdGlvbi9j
b2NvYS9HZW9sb2NhdGlvblBvc2l0aW9uRGF0YUNvY29hLm1tCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjgxZTQwZjE2
NDJiMjY4OTUyYjdiMDM5OGU0ZThmZTJiOGNkNTgwZDEKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2dlb2xvY2F0aW9uL2NvY29hL0dlb2xvY2F0aW9uUG9zaXRpb25E
YXRhQ29jb2EubW0KQEAgLTAsMCArMSw1MyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNyBB
cHBsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZF
TlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9S
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisg
KiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgorICovCisKKyNpbXBvcnQgImNvbmZpZy5oIgorI2ltcG9ydCAiR2VvbG9jYXRp
b25Qb3NpdGlvbi5oIgorCisjaW1wb3J0IDxDb3JlTG9jYXRpb24vQ0xMb2NhdGlvbi5oPgorCitu
YW1lc3BhY2UgV2ViQ29yZSB7CisKK0dlb2xvY2F0aW9uUG9zaXRpb25EYXRhOjpHZW9sb2NhdGlv
blBvc2l0aW9uRGF0YShDTExvY2F0aW9uICpsb2NhdGlvbikKKyAgICA6IHRpbWVzdGFtcChsb2Nh
dGlvbi50aW1lc3RhbXAudGltZUludGVydmFsU2luY2UxOTcwKQorICAgICwgbGF0aXR1ZGUobG9j
YXRpb24uY29vcmRpbmF0ZS5sYXRpdHVkZSkKKyAgICAsIGxvbmdpdHVkZShsb2NhdGlvbi5jb29y
ZGluYXRlLmxvbmdpdHVkZSkKKyAgICAsIGFjY3VyYWN5KGxvY2F0aW9uLmhvcml6b250YWxBY2N1
cmFjeSkKK3sKKyAgICBpZiAobG9jYXRpb24udmVydGljYWxBY2N1cmFjeSA+PSAwLjApIHsKKyAg
ICAgICAgYWx0aXR1ZGUgPSBsb2NhdGlvbi5hbHRpdHVkZTsKKyAgICAgICAgYWx0aXR1ZGVBY2N1
cmFjeSA9IGxvY2F0aW9uLnZlcnRpY2FsQWNjdXJhY3k7CisgICAgfQorICAgIGlmIChsb2NhdGlv
bi5zcGVlZCA+PSAwLjApCisgICAgICAgIHNwZWVkID0gbG9jYXRpb24uc3BlZWQ7CisgICAgaWYg
KGxvY2F0aW9uLmNvdXJzZSA+PSAwLjApCisgICAgICAgIGhlYWRpbmcgPSBsb2NhdGlvbi5jb3Vy
c2U7CisjaWYgIVBMQVRGT1JNKE1BQ0NBVEFMWVNUKQorICAgIGlmIChsb2NhdGlvbi5mbG9vcikK
KyAgICAgICAgZmxvb3JMZXZlbCA9IGxvY2F0aW9uLmZsb29yLmxldmVsOworI2VuZGlmCit9CisK
K30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvZ2VvbG9jYXRpb24vaW9zL0dlb2xvY2F0aW9uUG9zaXRpb25EYXRhSU9TLm1tIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9nZW9sb2NhdGlvbi9pb3MvR2VvbG9jYXRpb25Qb3NpdGlvbkRhdGFJ
T1MubW0KZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDk4ZDlhMjQyMWU3ZjIzMDliNGY2
MjNiMTRkN2NiZTJiNmM3ZTA0NWMuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9nZW9sb2NhdGlvbi9pb3MvR2VvbG9j
YXRpb25Qb3NpdGlvbkRhdGFJT1MubW0KKysrIC9kZXYvbnVsbApAQCAtMSw1NyArMCwwIEBACi0v
KgotICogQ29weXJpZ2h0IChDKSAyMDE3IEFwcGxlIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4K
LSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4g
YGBBUyBJUycnIEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCi0gKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCi0gKiBDT05U
UklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwKLSAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgotICogUFJPRklUUzsgT1IgQlVT
SU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQotICog
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2ltcG9ydCAiY29u
ZmlnLmgiCi0jaW1wb3J0ICJHZW9sb2NhdGlvblBvc2l0aW9uLmgiCi0KLSNpZiBQTEFURk9STShJ
T1NfRkFNSUxZKQotCi0jaW1wb3J0IDxDb3JlTG9jYXRpb24vQ0xMb2NhdGlvbi5oPgotCi1uYW1l
c3BhY2UgV2ViQ29yZSB7Ci0KLUdlb2xvY2F0aW9uUG9zaXRpb25EYXRhOjpHZW9sb2NhdGlvblBv
c2l0aW9uRGF0YShDTExvY2F0aW9uKiBsb2NhdGlvbikKLSAgICA6IHRpbWVzdGFtcChsb2NhdGlv
bi50aW1lc3RhbXAudGltZUludGVydmFsU2luY2UxOTcwKQotICAgICwgbGF0aXR1ZGUobG9jYXRp
b24uY29vcmRpbmF0ZS5sYXRpdHVkZSkKLSAgICAsIGxvbmdpdHVkZShsb2NhdGlvbi5jb29yZGlu
YXRlLmxvbmdpdHVkZSkKLSAgICAsIGFjY3VyYWN5KGxvY2F0aW9uLmhvcml6b250YWxBY2N1cmFj
eSkKLXsKLSAgICBpZiAobG9jYXRpb24udmVydGljYWxBY2N1cmFjeSA+PSAwLjApIHsKLSAgICAg
ICAgYWx0aXR1ZGUgPSBsb2NhdGlvbi5hbHRpdHVkZTsKLSAgICAgICAgYWx0aXR1ZGVBY2N1cmFj
eSA9IGxvY2F0aW9uLnZlcnRpY2FsQWNjdXJhY3k7Ci0gICAgfQotICAgIGlmIChsb2NhdGlvbi5z
cGVlZCA+PSAwLjApCi0gICAgICAgIHNwZWVkID0gbG9jYXRpb24uc3BlZWQ7Ci0gICAgaWYgKGxv
Y2F0aW9uLmNvdXJzZSA+PSAwLjApCi0gICAgICAgIGhlYWRpbmcgPSBsb2NhdGlvbi5jb3Vyc2U7
Ci0jaWYgIVBMQVRGT1JNKE1BQ0NBVEFMWVNUKQotICAgIGlmIChsb2NhdGlvbi5mbG9vcikKLSAg
ICAgICAgZmxvb3JMZXZlbCA9IGxvY2F0aW9uLmZsb29yLmxldmVsOwotI2VuZGlmCi19Ci0KLX0K
LQotI2VuZGlmIC8vIFBMQVRGT1JNKElPU19GQU1JTFkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9Tb3VyY2VzQ29jb2EudHh0IGIvU291cmNlL1dlYkNvcmUvU291cmNlc0NvY29hLnR4dApp
bmRleCBhMTI3ODA0MTA0MDlkZTFmMmY5ODY5YzA0ZTdkOTdlNTdhNDg1YjQ5Li4wMjgxNGQwMjIy
YjI2ZTI4OTliOGRhY2FlZDFhNDJlNTZiNTc0MTk0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9Tb3VyY2VzQ29jb2EudHh0CisrKyBiL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXNDb2NvYS50eHQK
QEAgLTI1Miw2ICsyNTIsNyBAQCBwbGF0Zm9ybS9jZi9NZWRpYUFjY2Vzc2liaWxpdHlTb2Z0TGlu
ay5jcHAKIHBsYXRmb3JtL2NmL1J1bkxvb3BPYnNlcnZlci5jcHAKIHBsYXRmb3JtL2NmL1NoYXJl
ZEJ1ZmZlckNGLmNwcAogcGxhdGZvcm0vY29jb2EvQ29udGVudEZpbHRlclVuYmxvY2tIYW5kbGVy
Q29jb2EubW0gQG5vLXVuaWZ5CitwbGF0Zm9ybS9jb2NvYS9Db3JlTG9jYXRpb25HZW9sb2NhdGlv
blByb3ZpZGVyLm1tCiBwbGF0Zm9ybS9jb2NvYS9Db3JlVmlkZW9Tb2Z0TGluay5jcHAKIHBsYXRm
b3JtL2NvY29hL0RyYWdEYXRhQ29jb2EubW0KIHBsYXRmb3JtL2NvY29hL0RyYWdJbWFnZUNvY29h
Lm1tCkBAIC0zMDgsNyArMzA5LDcgQEAgcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL01l
ZGlhU2VsZWN0aW9uR3JvdXBBVkZPYmpDLm1tCiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRp
b24vU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyLmNwcAogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3Vu
ZGF0aW9uL1dlYk1lZGlhU2Vzc2lvbk1hbmFnZXJNYWMuY3BwCiBwbGF0Zm9ybS9ncmFwaGljcy9h
dmZvdW5kYXRpb24vb2JqYy9BVkFzc2V0TUlNRVR5cGVDYWNoZS5tbQotcGxhdGZvcm0vZ3JhcGhp
Y3MvYXZmb3VuZGF0aW9uL29iamMvQVZBc3NldFRyYWNrVXRpbGl0aWVzLm1tCitwbGF0Zm9ybS9n
cmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9BVkFzc2V0VHJhY2tVdGlsaXRpZXMubW0gQG5vLXVu
aWZ5CiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9BVk91dHB1dERldmljZU1l
bnVDb250cm9sbGVyVGFyZ2V0UGlja2VyLm1tIEBuby11bmlmeQogcGxhdGZvcm0vZ3JhcGhpY3Mv
YXZmb3VuZGF0aW9uL29iamMvQVZSb3V0ZVBpY2tlclZpZXdUYXJnZXRQaWNrZXIubW0KIHBsYXRm
b3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0FWU3RyZWFtRGF0YVBhcnNlck1JTUVUeXBl
Q2FjaGUubW0KQEAgLTMxOSw3ICszMjAsNyBAQCBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRp
b24vb2JqYy9DRE1TZXNzaW9uQVZGb3VuZGF0aW9uT2JqQy5tbQogcGxhdGZvcm0vZ3JhcGhpY3Mv
YXZmb3VuZGF0aW9uL29iamMvQ0RNU2Vzc2lvbkFWU3RyZWFtU2Vzc2lvbi5tbQogcGxhdGZvcm0v
Z3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvQ0RNU2Vzc2lvbk1lZGlhU291cmNlQVZGT2JqQy5t
bQogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvSW1hZ2VEZWNvZGVyQVZGT2Jq
Qy5tbQotcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvSW5iYW5kVGV4dFRyYWNr
UHJpdmF0ZUFWRk9iakMubW0KK3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0lu
YmFuZFRleHRUcmFja1ByaXZhdGVBVkZPYmpDLm1tIEBuby11bmlmeQogcGxhdGZvcm0vZ3JhcGhp
Y3MvYXZmb3VuZGF0aW9uL29iamMvSW5iYW5kQ2hhcHRlclRyYWNrUHJpdmF0ZUFWRk9iakMubW0g
QG5vLXVuaWZ5CiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9Mb2NhbFNhbXBs
ZUJ1ZmZlckRpc3BsYXlMYXllci5tbQogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29i
amMvTWVkaWFQbGF5YmFja1RhcmdldFBpY2tlck1hYy5tbQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dlYkNvcmUv
V2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IGY4NTAyNDk0NDliMGY4YWY4
ZjJjYTk1NGM0NTY4MzAwNDQ4N2FkODMuLjUxYWI4OGQ4MmFkOGYwNTUwNTZiMzJkMWE4ODBjODhi
N2Q2MjU1NzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3By
b2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9q
ZWN0LnBieHByb2oKQEAgLTEzNTMsNiArMTM1Myw3IEBACiAJCTQ2ODM0NEUwMUVEREZBQUEwMEI3
Nzk1QiAvKiBET01SZWN0TGlzdC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gNDY4MzQ0REUxRURERkE1RjAwQjc3OTVCIC8qIERPTVJlY3RMaXN0LmggKi87
IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNDY4M0RGNDAy
NzY3REY5ODAwN0QwMEM4IC8qIEpTU2hhZG93UmVhbG1HbG9iYWxTY29wZUJhc2UuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ2ODNERjNFMjc2N0RGOTgw
MDdEMDBDOCAvKiBKU1NoYWRvd1JlYWxtR2xvYmFsU2NvcGVCYXNlLmggKi87IH07CiAJCTQ2ODNE
RjQxMjc2N0U5MUEwMDdEMDBDOCAvKiBTaGFkb3dSZWFsbUdsb2JhbFNjb3BlLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0NjgzREYzQjI3NjdERjI2MDA3
RDAwQzggLyogU2hhZG93UmVhbG1HbG9iYWxTY29wZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJV
VEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCTQ2ODhFOTgwMjdCNkI0NTAwMDU2N0NEMiAvKiBD
b3JlTG9jYXRpb25HZW9sb2NhdGlvblByb3ZpZGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0Njg4RTk3RjI3QjZCNDQ0MDA1NjdDRDIgLyogQ29yZUxv
Y2F0aW9uR2VvbG9jYXRpb25Qcm92aWRlci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0g
KFByaXZhdGUsICk7IH07IH07CiAJCTQ2ODhFRTNDMjZERDI2MTAwMDJBRjVDNCAvKiBDcm9zc09y
aWdpbk1vZGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDQ2ODhFRTNBMjZERDI2MEMwMDJBRjVDNCAvKiBDcm9zc09yaWdpbk1vZGUuaCAqLzsgc2V0dGlu
Z3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk0Njk0M0RDOTI3NjNGODE3
MDA0QjYxMEUgLyogU2hhcmVkV29ya2VyT2JqZWN0SWRlbnRpZmllci5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDY5NDNEQzcyNzYzRjgwRTAwNEI2MTBF
IC8qIFNoYXJlZFdvcmtlck9iamVjdElkZW50aWZpZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklC
VVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk0Njk4NUYyMzI3QTRBNkFEMDA5N0EzMkIgLyog
U2hhcmVkV29ya2VyS2V5LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA0Njk4NUYyMjI3QTRBNjg2MDA5N0EzMkIgLyogU2hhcmVkV29ya2VyS2V5LmggKi87
IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKQEAgLTEzNzAsNiAr
MTM3MSw3IEBACiAJCTQ2Qjk1MTk5MjA3RDYzNEQwMEE3RDJERCAvKiBSZW1vdGVET01XaW5kb3cu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ2Qjk1MThF
MjA3RDYzMkEwMEE3RDJERCAvKiBSZW1vdGVET01XaW5kb3cuaCAqLzsgc2V0dGluZ3MgPSB7QVRU
UklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk0NkI5NTE5QTIwN0Q2MzU0MDBBN0QyREQg
LyogUmVtb3RlRnJhbWUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDQ2Qjk1MTkyMjA3RDYzMkUwMEE3RDJERCAvKiBSZW1vdGVGcmFtZS5oICovOyBzZXR0
aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTQ2Qjk1QkY1MjIzMUNG
RDYwMDUzQTUwNCAvKiBEZXZpY2VPcmllbnRhdGlvbkFuZE1vdGlvbkFjY2Vzc0NvbnRyb2xsZXIu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ2Qjk1QkY0
MjIzMUNGQjgwMDUzQTUwNCAvKiBEZXZpY2VPcmllbnRhdGlvbkFuZE1vdGlvbkFjY2Vzc0NvbnRy
b2xsZXIuaCAqLzsgfTsKKwkJNDZCQTQ5QjgyN0JCNDQzMzAwNzdGNjNGIC8qIEFWQXNzZXRUcmFj
a1V0aWxpdGllcy5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IENERUNBODk4MUVERjQ0N0QwMERDQjA4QiAvKiBBVkFzc2V0VHJhY2tVdGlsaXRpZXMubW0g
Ki87IH07CiAJCTQ2QkNCQkMyMjA4NTAwOEYwMDcxMDYzOCAvKiBKU1JlbW90ZURPTVdpbmRvd0Jh
c2UuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ2QkNC
QkMwMjA4NTAwN0YwMDcxMDYzOCAvKiBKU1JlbW90ZURPTVdpbmRvd0Jhc2UuaCAqLzsgc2V0dGlu
Z3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk0NkJEMDVDNTI1QkI2RTU5
MDAyMjVGMzAgLyogQWRkRXZlbnRMaXN0ZW5lck9wdGlvbnMuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ2QkQwNUMyMjVCQjZFNEUwMDIyNUYzMCAvKiBB
ZGRFdmVudExpc3RlbmVyT3B0aW9ucy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFBy
aXZhdGUsICk7IH07IH07CiAJCTQ2QkQwNUM2MjVCQjZFNkMwMDIyNUYzMCAvKiBFdmVudExpc3Rl
bmVyT3B0aW9ucy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gNDZCRDA1QzMyNUJCNkU0RTAwMjI1RjMwIC8qIEV2ZW50TGlzdGVuZXJPcHRpb25zLmggKi87
IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKQEAgLTEzNzgsNiAr
MTM4MCw3IEBACiAJCTQ2QzY5NkNCMUU3MjA1RjcwMDU5NzkzNyAvKiBDUFVNb25pdG9yLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0NkM2OTZDOTFFNzIw
NUU0MDA1OTc5MzcgLyogQ1BVTW9uaXRvci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0g
KFByaXZhdGUsICk7IH07IH07CiAJCTQ2QzY5NkNDMUU3MjA1RkMwMDU5NzkzNyAvKiBDUFVNb25p
dG9yLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ2
QzY5NkNBMUU3MjA1RTQwMDU5NzkzNyAvKiBDUFVNb25pdG9yLmNwcCAqLzsgfTsKIAkJNDZDODNF
RkUxQTlCQkUyOTAwQTc5QTQxIC8qIEdlb05vdGlmaWVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0NkM4M0VGQzFBOUJCRTI5MDBBNzlBNDEgLyogR2Vv
Tm90aWZpZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9
OworCQk0NkNBOTQzMTI3Qjg2OTU4MDBGNEY1RkYgLyogSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUFW
Rk9iakMubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAw
N0FBNkI2QTE2NkQwMTk1MDBENDU2NzEgLyogSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUFWRk9iakMu
bW0gKi87IH07CiAJCTQ2Q0E5QzQ0MUY5N0JCRTkwMDRDRkMzQSAvKiBWaXNpYmlsaXR5U3RhdGUu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ2Q0E5QzQx
MUY5N0JCRTcwMDRDRkMzQSAvKiBWaXNpYmlsaXR5U3RhdGUuaCAqLzsgc2V0dGluZ3MgPSB7QVRU
UklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk0NkNGNTA0QTI3QUIxRUE0MDA3MERCQzgg
LyogU2hhcmVkV29ya2VyQ29udGV4dE1hbmFnZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ2Q0Y1MDQ4MjdBQjFFQTEwMDcwREJDOCAvKiBTaGFyZWRX
b3JrZXJDb250ZXh0TWFuYWdlci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZh
dGUsICk7IH07IH07CiAJCTQ2RDAwMDQwMjZBMEZFQjMwMEQxQkYxRSAvKiBTdWJtaXRFdmVudC5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDZEMDAwM0Uy
NkEwRkU2RjAwRDFCRjFFIC8qIFN1Ym1pdEV2ZW50LmggKi87IH07CkBAIC0yNjkyLDcgKzI2OTUs
NyBAQAogCQk4Mzc2NUY5NTFEQUM1MjJGMDBDMDY1MzcgLyogTW91c2VFdmVudEluaXQuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDgzNzY1Rjk0MURBQzUy
MTgwMEMwNjUzNyAvKiBNb3VzZUV2ZW50SW5pdC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVT
ID0gKFByaXZhdGUsICk7IH07IH07CiAJCTgzNzg4NzgyMjREOEE2MDkwMDBENEE1QiAvKiBBdWRp
b0J1ZmZlclNvdXJjZU9wdGlvbnMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDgzNzg4NzdGMjREOEE1RkMwMDBENEE1QiAvKiBBdWRpb0J1ZmZlclNvdXJj
ZU9wdGlvbnMuaCAqLzsgfTsKIAkJODM3OTM2M0YxRkJCQjBCNDAwQzgwMjNDIC8qIFNlcnZpY2VX
b3JrZXJDbGllbnREYXRhLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA4Mzc5MzYzRTFGQkJCMEE1MDBDODAyM0MgLyogU2VydmljZVdvcmtlckNsaWVudERh
dGEuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwotCQk4
Mzc5NjRDRjFGOERCNjlEMDAyMThFQTAgLyogR2VvbG9jYXRpb25Qb3NpdGlvbkRhdGFJT1MubW0g
aW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4Mzc5NjRDRTFG
OERCNjlBMDAyMThFQTAgLyogR2VvbG9jYXRpb25Qb3NpdGlvbkRhdGFJT1MubW0gKi87IH07CisJ
CTgzNzk2NENGMUY4REI2OUQwMDIxOEVBMCAvKiBHZW9sb2NhdGlvblBvc2l0aW9uRGF0YUNvY29h
Lm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODM3OTY0
Q0UxRjhEQjY5QTAwMjE4RUEwIC8qIEdlb2xvY2F0aW9uUG9zaXRpb25EYXRhQ29jb2EubW0gKi87
IH07CiAJCTgzN0E4MDEzMUUxRTEyNzMwMDAyNkI5RiAvKiBMb2NhbGl6YWJsZS5zdHJpbmdzZGlj
dCBpbiBSZXNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODM3QTgw
MTExRTFFMTI3MzAwMDI2QjlGIC8qIExvY2FsaXphYmxlLnN0cmluZ3NkaWN0ICovOyB9OwogCQk4
MzdDMEI3NjI0REIzODUwMDA1RDU5NTkgLyogRHluYW1pY3NDb21wcmVzc29yT3B0aW9ucy5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODM3QzBCNzMyNERC
Mzg0MjAwNUQ1OTU5IC8qIER5bmFtaWNzQ29tcHJlc3Nvck9wdGlvbnMuaCAqLzsgfTsKIAkJODM3
RkIzNDUxRjlFQTA2RDAwRDBGQzMxIC8qIEV4dGVuZGFibGVNZXNzYWdlRXZlbnQuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDgzN0ZCMzQwMUY5RUEwNjYw
MEQwRkMzMSAvKiBFeHRlbmRhYmxlTWVzc2FnZUV2ZW50LmggKi87IH07CkBAIC05MjcyLDYgKzky
NzUsOCBAQAogCQk0NjgzREYzQzI3NjdERjI2MDA3RDAwQzggLyogU2hhZG93UmVhbG1HbG9iYWxT
Y29wZS5pZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUg
PSB0ZXh0OyBwYXRoID0gU2hhZG93UmVhbG1HbG9iYWxTY29wZS5pZGw7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCTQ2ODNERjNEMjc2N0RGOTgwMDdEMDBDOCAvKiBKU1NoYWRvd1JlYWxt
R2xvYmFsU2NvcGVCYXNlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9
IEpTU2hhZG93UmVhbG1HbG9iYWxTY29wZUJhc2UuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQk0NjgzREYzRTI3NjdERjk4MDA3RDAwQzggLyogSlNTaGFkb3dSZWFsbUdsb2JhbFNj
b3BlQmFzZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKU1NoYWRvd1JlYWxt
R2xvYmFsU2NvcGVCYXNlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTQ2ODhFOTdE
MjdCNkI0NDMwMDU2N0NEMiAvKiBDb3JlTG9jYXRpb25HZW9sb2NhdGlvblByb3ZpZGVyLm1tICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAub2JqY3BwOyBwYXRoID0gQ29yZUxvY2F0aW9uR2VvbG9jYXRpb25Qcm92aWRlci5tbTsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNDY4OEU5N0YyN0I2QjQ0NDAwNTY3Q0QyIC8q
IENvcmVMb2NhdGlvbkdlb2xvY2F0aW9uUHJvdmlkZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQ29yZUxv
Y2F0aW9uR2VvbG9jYXRpb25Qcm92aWRlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQk0Njg4RUUzQTI2REQyNjBDMDAyQUY1QzQgLyogQ3Jvc3NPcmlnaW5Nb2RlLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IENyb3NzT3JpZ2luTW9kZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0
NjhCOEJERTI1Q0M4NDkzMDBGNjc4MjIgLyogSlNCYXNlQXVkaW9Db250ZXh0Q3VzdG9tLmNwcCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLmNwcDsgcGF0aCA9IEpTQmFzZUF1ZGlvQ29udGV4dEN1c3RvbS5jcHA7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQ2OTQzREM3Mjc2M0Y4MEUwMDRCNjEwRSAvKiBTaGFyZWRX
b3JrZXJPYmplY3RJZGVudGlmaWVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNoYXJlZFdvcmtlck9iamVj
dElkZW50aWZpZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTkzODYsOCArOTM5
MSw4IEBACiAJCTQ5NEJENzk0MEY1NUM4RUUwMDc0NzgyOCAvKiBXZWJLaXRQb2ludC5pZGwgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSB0ZXh0OyBwYXRoID0gV2ViS2l0UG9pbnQuaWRsOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQk0OTRCRDc5QjBGNTVDOTRDMDA3NDc4MjggLyogSlNXZWJLaXRQb2ludC5jcHAg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU1dlYktpdFBvaW50LmNwcDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDk0QkQ3OUMwRjU1Qzk0QzAwNzQ3ODI4IC8q
IEpTV2ViS2l0UG9pbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNXZWJL
aXRQb2ludC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQk0OTRFQkQwNjI3QUE5QzUz
MDBGNDg0NEYgLyogUERGRG9jdW1lbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gUERGRG9jdW1lbnQuaDsg
cGF0aCA9IFBERkRvY3VtZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTQ5NEVC
RDA4MjdBQTlDNTMwMEY0ODQ0RiAvKiBQREZEb2N1bWVudC5jcHAgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUg
PSBQREZEb2N1bWVudC5jcHA7IHBhdGggPSBQREZEb2N1bWVudC5jcHA7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CisJCTQ5NEVCRDA2MjdBQTlDNTMwMEY0ODQ0RiAvKiBQREZEb2N1bWVudC5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBQREZEb2N1bWVudC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OworCQk0OTRFQkQwODI3QUE5QzUzMDBGNDg0NEYgLyogUERGRG9jdW1lbnQuY3BwICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
Y3BwOyBwYXRoID0gUERGRG9jdW1lbnQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQk0OTU4NzgxRjEyQTU3RERGMDA3MjM4QUMgLyogUGxhdGZvcm1DQUFuaW1hdGlvbkNvY29hLm1t
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gUGxhdGZvcm1DQUFuaW1h
dGlvbkNvY29hLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0OTU4NzgyMDEyQTU3
RERGMDA3MjM4QUMgLyogUGxhdGZvcm1DQUxheWVyQ29jb2EubW0gKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5vYmpjcHA7IHBhdGggPSBQbGF0Zm9ybUNBTGF5ZXJDb2NvYS5tbTsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDk2OUIwRjAxM0QwQjMzRjAwREYzNTIxIC8qIEhpdFRlc3Rp
bmdUcmFuc2Zvcm1TdGF0ZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGgg
PSBIaXRUZXN0aW5nVHJhbnNmb3JtU3RhdGUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwpAQCAtMTIxODgsNyArMTIxOTMsNyBAQAogCQk4Mzc4ODc4MTI0RDhBNUZDMDAwRDRBNUIgLyog
QXVkaW9CdWZmZXJTb3VyY2VPcHRpb25zLmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBBdWRpb0J1ZmZlclNvdXJjZU9wdGlv
bnMuaWRsOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk4Mzc5MzYzQzFGQkJCMEE0MDBD
ODAyM0MgLyogU2VydmljZVdvcmtlckNsaWVudERhdGEuY3BwICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAuY3BwOyBwYXRoID0gU2VydmljZVdvcmtlckNsaWVudERhdGEuY3BwOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQk4Mzc5MzYzRTFGQkJCMEE1MDBDODAyM0MgLyogU2VydmljZVdv
cmtlckNsaWVudERhdGEuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU2Vydmlj
ZVdvcmtlckNsaWVudERhdGEuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJODM3OTY0
Q0UxRjhEQjY5QTAwMjE4RUEwIC8qIEdlb2xvY2F0aW9uUG9zaXRpb25EYXRhSU9TLm1tICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBuYW1lID0gR2VvbG9jYXRpb25Qb3NpdGlvbkRh
dGFJT1MubW07IHBhdGggPSBNb2R1bGVzL2dlb2xvY2F0aW9uL2lvcy9HZW9sb2NhdGlvblBvc2l0
aW9uRGF0YUlPUy5tbTsgc291cmNlVHJlZSA9IFNPVVJDRV9ST09UOyB9OworCQk4Mzc5NjRDRTFG
OERCNjlBMDAyMThFQTAgLyogR2VvbG9jYXRpb25Qb3NpdGlvbkRhdGFDb2NvYS5tbSAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgbmFtZSA9IEdlb2xvY2F0aW9uUG9zaXRpb25EYXRh
Q29jb2EubW07IHBhdGggPSBNb2R1bGVzL2dlb2xvY2F0aW9uL2NvY29hL0dlb2xvY2F0aW9uUG9z
aXRpb25EYXRhQ29jb2EubW07IHNvdXJjZVRyZWUgPSBTT1VSQ0VfUk9PVDsgfTsKIAkJODM3QTgw
MTIxRTFFMTI3MzAwMDI2QjlGIC8qIGVuICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxh
c3RLbm93bkZpbGVUeXBlID0gdGV4dC5wbGlzdC5zdHJpbmdzZGljdDsgbmFtZSA9IGVuOyBwYXRo
ID0gZW4ubHByb2ovTG9jYWxpemFibGUuc3RyaW5nc2RpY3Q7IHNvdXJjZVRyZWUgPSBTT1VSQ0Vf
Uk9PVDsgfTsKIAkJODM3QjdEMUYxREMzRjU0QzAwRDA1MUZDIC8qIFZhbGlkYXRpb25CdWJibGVJ
T1MubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBWYWxpZGF0aW9u
QnViYmxlSU9TLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk4MzdDMEI3MzI0REIz
ODQyMDA1RDU5NTkgLyogRHluYW1pY3NDb21wcmVzc29yT3B0aW9ucy5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBEeW5hbWljc0NvbXByZXNzb3JPcHRpb25zLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CkBAIC0yMTYxMSw2ICsyMTYxNiwxNCBAQAogCQkJcGF0aCA9IGNvbnRleHQ7CiAJCQlzb3VyY2VU
cmVlID0gIjxncm91cD4iOwogCQl9OworCQk0NjVDM0QxOTI3Qjk5MUM4MDAyMTMwMkYgLyogY29j
b2EgKi8gPSB7CisJCQlpc2EgPSBQQlhHcm91cDsKKwkJCWNoaWxkcmVuID0gKAorCQkJCTgzNzk2
NENFMUY4REI2OUEwMDIxOEVBMCAvKiBHZW9sb2NhdGlvblBvc2l0aW9uRGF0YUNvY29hLm1tICov
LAorCQkJKTsKKwkJCXBhdGggPSBjb2NvYTsKKwkJCXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7CisJ
CX07CiAJCTQ2Njk0Q0RFMjc1OTQ0NkQwMEUzMTUwRSAvKiBzaGFyZWQgKi8gPSB7CiAJCQlpc2Eg
PSBQQlhHcm91cDsKIAkJCWNoaWxkcmVuID0gKApAQCAtMjUxMDcsMTQgKzI1MTIwLDYgQEAKIAkJ
CXBhdGggPSBiZWFjb247CiAJCQlzb3VyY2VUcmVlID0gIjxncm91cD4iOwogCQl9OwotCQk4Mzc5
NjRDQzFGOERCNjdEMDAyMThFQTAgLyogaW9zICovID0gewotCQkJaXNhID0gUEJYR3JvdXA7Ci0J
CQljaGlsZHJlbiA9ICgKLQkJCQk4Mzc5NjRDRTFGOERCNjlBMDAyMThFQTAgLyogR2VvbG9jYXRp
b25Qb3NpdGlvbkRhdGFJT1MubW0gKi8sCi0JCQkpOwotCQkJbmFtZSA9IGlvczsKLQkJCXNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7Ci0JCX07CiAJCTgzRkIzMzY1MUY1MDhBMTcwMDk4NkU1NCAvKiBl
bnRyaWVzYXBpICovID0gewogCQkJaXNhID0gUEJYR3JvdXA7CiAJCQljaGlsZHJlbiA9ICgKQEAg
LTI2MTI3LDcgKzI2MTMyLDcgQEAKIAkJOTcxMTQ1RkYxNEVGMDA3OTAwNjc0RkQ5IC8qIGdlb2xv
Y2F0aW9uICovID0gewogCQkJaXNhID0gUEJYR3JvdXA7CiAJCQljaGlsZHJlbiA9ICgKLQkJCQk4
Mzc5NjRDQzFGOERCNjdEMDAyMThFQTAgLyogaW9zICovLAorCQkJCTQ2NUMzRDE5MjdCOTkxQzgw
MDIxMzAyRiAvKiBjb2NvYSAqLywKIAkJCQk5NzQ2QUYxMzE0RjREREU2MDAzRTdBNzAgLyogR2Vv
bG9jYXRpb24uY3BwICovLAogCQkJCTk3NDZBRjE0MTRGNERERTYwMDNFN0E3MCAvKiBHZW9sb2Nh
dGlvbi5oICovLAogCQkJCTk3NDZBRjE1MTRGNERERTYwMDNFN0E3MCAvKiBHZW9sb2NhdGlvbi5p
ZGwgKi8sCkBAIC0yNjgzOSw2ICsyNjg0NCw4IEBACiAJCQkJQzFGN0I3MkYyNDQ4RjJBQzAwMTI0
NTU3IC8qIEFHWENvbXBpbGVyU2VydmljZS5jcHAgKi8sCiAJCQkJQzFGN0I3MzAyNDQ4RjJBQzAw
MTI0NTU3IC8qIEFHWENvbXBpbGVyU2VydmljZS5oICovLAogCQkJCUExNDA5MEZBMUFBNTFFMUQw
MDkxMTkxQSAvKiBDb250ZW50RmlsdGVyVW5ibG9ja0hhbmRsZXJDb2NvYS5tbSAqLywKKwkJCQk0
Njg4RTk3RjI3QjZCNDQ0MDA1NjdDRDIgLyogQ29yZUxvY2F0aW9uR2VvbG9jYXRpb25Qcm92aWRl
ci5oICovLAorCQkJCTQ2ODhFOTdEMjdCNkI0NDMwMDU2N0NEMiAvKiBDb3JlTG9jYXRpb25HZW9s
b2NhdGlvblByb3ZpZGVyLm1tICovLAogCQkJCUNEN0QzMzQ1MUM3QTE2QkYwMDA0MTI5MyAvKiBD
b3JlVmlkZW9Tb2Z0TGluay5jcHAgKi8sCiAJCQkJQ0Q3RDMzNDYxQzdBMTZCRjAwMDQxMjkzIC8q
IENvcmVWaWRlb1NvZnRMaW5rLmggKi8sCiAJCQkJRjQ2MkU3OUYyNDJBREEzQzAwMjA0REREIC8q
IERyYWdEYXRhQ29jb2EubW0gKi8sCkBAIC0zMzkzMSw2ICszMzkzOCw3IEBACiAJCQkJM0Y4MDIw
MzcxRTlFNDdDNTAwREVDNjFEIC8qIENvcmVBdWRpb0NhcHR1cmVEZXZpY2VNYW5hZ2VyLmggaW4g
SGVhZGVycyAqLywKIAkJCQk0MUZDQ0MzQjI3NDY2NzU2MDA4OTJBRDYgLyogQ29yZUF1ZGlvQ2Fw
dHVyZVNvdXJjZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMDdBRkY0MjIxRUZCMTQ0OTAwQjU0NUIz
IC8qIENvcmVBdWRpb0NhcHR1cmVTb3VyY2VJT1MuaCBpbiBIZWFkZXJzICovLAorCQkJCTQ2ODhF
OTgwMjdCNkI0NTAwMDU2N0NEMiAvKiBDb3JlTG9jYXRpb25HZW9sb2NhdGlvblByb3ZpZGVyLmgg
aW4gSGVhZGVycyAqLywKIAkJCQlDRDdEMzM0ODFDN0ExNkJGMDAwNDEyOTMgLyogQ29yZVZpZGVv
U29mdExpbmsuaCBpbiBIZWFkZXJzICovLAogCQkJCTg2MkYxMjlFMThDMTU3NkYwMDVDNTRBRiAv
KiBDb3VudGVkVXNlckFjdGl2aXR5LmggaW4gSGVhZGVycyAqLywKIAkJCQlBODBFNkQwNDBBMTk4
OUNBMDA3RkI4QzUgLyogQ291bnRlci5oIGluIEhlYWRlcnMgKi8sCkBAIC0zODY4NCw2ICszODY5
Miw3IEBACiAJCQkJQ0QwRUVFMEUxNDc0M0YzOTAwM0VBRkEyIC8qIEF1ZGlvT3V0cHV0VW5pdEFk
YXB0b3JJT1MuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQ0RBNzk4MjcxNzBBMjc5MTAwRDQ1QzU1
IC8qIEF1ZGlvU2Vzc2lvbklPUy5tbSBpbiBTb3VyY2VzICovLAogCQkJCUNEOEE3QkJCMTk3NzM1
RkUwMENCRDY0MyAvKiBBdWRpb1NvdXJjZVByb3ZpZGVyQVZGT2JqQy5tbSBpbiBTb3VyY2VzICov
LAorCQkJCTQ2QkE0OUI4MjdCQjQ0MzMwMDc3RjYzRiAvKiBBVkFzc2V0VHJhY2tVdGlsaXRpZXMu
bW0gaW4gU291cmNlcyAqLywKIAkJCQkwRkNBMjkzNTI2RkMzOTE3MDA2QjRBRUIgLyogQVZBdWRp
b1Nlc3Npb25DYXB0dXJlRGV2aWNlTWFuYWdlci5tbSBpbiBTb3VyY2VzICovLAogCQkJCTA3MzhF
NUVDMjQ5OTgzOTAwMERBMTAxQyAvKiBBVk91dHB1dERldmljZU1lbnVDb250cm9sbGVyVGFyZ2V0
UGlja2VyLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJQ0QzMzZGNjExN0Y5RjY0NzAwREREQ0QwIC8q
IEFWVHJhY2tQcml2YXRlQVZGT2JqQ0ltcGwubW0gaW4gU291cmNlcyAqLywKQEAgLTM4NzAyLDEz
ICszODcxMSwxNCBAQAogCQkJCTUxOEY0RkY2MTk0Q0E0RTYwMDgxQkFBRSAvKiBHYW1lcGFkQnV0
dG9uLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTUxNkM2MjIwMTk1MEQ0ODcwMDMzN0U3NSAvKiBH
YW1lcGFkRXZlbnQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNTFBOUQ5RTkxOTVCOTMxRjAwMUIy
QjVDIC8qIEdhbWVwYWRNYW5hZ2VyLmNwcCBpbiBTb3VyY2VzICovLAotCQkJCTgzNzk2NENGMUY4
REI2OUQwMDIxOEVBMCAvKiBHZW9sb2NhdGlvblBvc2l0aW9uRGF0YUlPUy5tbSBpbiBTb3VyY2Vz
ICovLAorCQkJCTgzNzk2NENGMUY4REI2OUQwMDIxOEVBMCAvKiBHZW9sb2NhdGlvblBvc2l0aW9u
RGF0YUNvY29hLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJNkU3MkY1NEUyMjlEQ0QxMDAwQjNFMTUx
IC8qIEdyYXBoaWNzQ29udGV4dEdMQU5HTEUuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJN0MzRTUx
MEIxOERGOEYzNTAwQzExMkY3IC8qIEhUTUxDb252ZXJ0ZXIubW0gaW4gU291cmNlcyAqLywKIAkJ
CQlBOEQwNkIzQTBBMjY1RENEMDA1RTcyMDMgLyogSFRNTE5hbWVzLmNwcCBpbiBTb3VyY2VzICov
LAogCQkJCTFBQzkwMEMzMTk0M0MwRkMwMDg2MjVCNSAvKiBIVFRQSGVhZGVyTmFtZXMuY3BwIGlu
IFNvdXJjZXMgKi8sCiAJCQkJQ0QyN0FFNTEyMkE5ODY4NzAwOTQ3RkY5IC8qIEltYWdlUm90YXRp
b25TZXNzaW9uVlQubW0gaW4gU291cmNlcyAqLywKIAkJCQkwNzBFMkQwRjI2RjI1MDg5MDAxNEFB
QzMgLyogSW5iYW5kQ2hhcHRlclRyYWNrUHJpdmF0ZUFWRk9iakMubW0gaW4gU291cmNlcyAqLywK
KwkJCQk0NkNBOTQzMTI3Qjg2OTU4MDBGNEY1RkYgLyogSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUFW
Rk9iakMubW0gaW4gU291cmNlcyAqLywKIAkJCQlDRDA2M0Y4MjFFMjNGQTg5MDA4MTJCRTMgLyog
SW5pdERhdGFSZWdpc3RyeS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk5MzVDNDc3MDA5QUM0RDcz
MDBBNkFBQjQgLyogS2V5RXZlbnRNYWMubW0gaW4gU291cmNlcyAqLywKIAkJCQlDREE5OEUwQjE2
MDNDRDYwMDBGRUEzQjEgLyogTGVnYWN5Q0RNLmNwcCBpbiBTb3VyY2VzICovLApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFn
ZS5jcHAKaW5kZXggNmE4NWU4NDNkOGJiZTNkMTkyZDk3ZjQ5NmJkN2ViNDU0NzQ5ZGJhNC4uZWZl
MGUzODA2ZGM4NDgwMzBkMjJiOWQ5MDI5MTY3OTMzODViZmRhYSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGFnZS9QYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuY3Bw
CkBAIC02OSw2ICs2OSw3IEBACiAjaW5jbHVkZSAiRnJhbWVUcmVlLmgiCiAjaW5jbHVkZSAiRnJh
bWVWaWV3LmgiCiAjaW5jbHVkZSAiRnVsbHNjcmVlbk1hbmFnZXIuaCIKKyNpbmNsdWRlICJHZW9s
b2NhdGlvbkNvbnRyb2xsZXIuaCIKICNpbmNsdWRlICJIVE1MRWxlbWVudC5oIgogI2luY2x1ZGUg
IkhUTUxJbWFnZUVsZW1lbnQuaCIKICNpbmNsdWRlICJIVE1MTWVkaWFFbGVtZW50LmgiCkBAIC0x
MzMyLDYgKzEzMzMsMTEgQEAgdm9pZCBQYWdlOjpkaWRDb21taXRMb2FkKCkKICAgICByZXNldFRl
eHRSZWNvZ25pdGlvblJlc3VsdHMoKTsKICAgICByZXNldEltYWdlQW5hbHlzaXNRdWV1ZSgpOwog
I2VuZGlmCisKKyNpZiBFTkFCTEUoR0VPTE9DQVRJT04pCisgICAgaWYgKGF1dG8qIGdlb2xvY2F0
aW9uQ29udHJvbGxlciA9IEdlb2xvY2F0aW9uQ29udHJvbGxlcjo6ZnJvbSh0aGlzKSkKKyAgICAg
ICAgZ2VvbG9jYXRpb25Db250cm9sbGVyLT5kaWROYXZpZ2F0ZVBhZ2UoKTsKKyNlbmRpZgogfQog
CiB2b2lkIFBhZ2U6OmRpZEZpbmlzaExvYWQoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vY29jb2EvQ29yZUxvY2F0aW9uR2VvbG9jYXRpb25Qcm92aWRlci5oIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvQ29yZUxvY2F0aW9uR2VvbG9jYXRpb25Qcm92aWRlci5o
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLmM1MjQ2Yzg4NGFjZjhmNjlmY2I4ZjhhYzRhY2M3ZjRjZGU2NDVjZWQKLS0t
IC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9Db3JlTG9jYXRp
b25HZW9sb2NhdGlvblByb3ZpZGVyLmgKQEAgLTAsMCArMSw2NyBAQAorLyoKKyAqIENvcHlyaWdo
dCAoQykgMjAyMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgor
ICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgor
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJ
QlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElU
UyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsg
T1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBU
SEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNw
cmFnbWEgb25jZQorCisjaW5jbHVkZSA8d3RmL0NvbXBsZXRpb25IYW5kbGVyLmg+CisjaW5jbHVk
ZSA8d3RmL0ZvcndhcmQuaD4KKyNpbmNsdWRlIDx3dGYvUmV0YWluUHRyLmg+CisKK09CSkNfQ0xB
U1MgV2ViQ0xMb2NhdGlvbk1hbmFnZXI7CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3Mg
R2VvbG9jYXRpb25Qb3NpdGlvbkRhdGE7CitjbGFzcyBSZWdpc3RyYWJsZURvbWFpbjsKKworY2xh
c3MgV0VCQ09SRV9FWFBPUlQgQ29yZUxvY2F0aW9uR2VvbG9jYXRpb25Qcm92aWRlciB7CisgICAg
V1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CitwdWJsaWM6CisgICAgY2xhc3MgQ2xpZW50IHsKKyAg
ICBwdWJsaWM6CisgICAgICAgIHZpcnR1YWwgfkNsaWVudCgpIHsgfQorCisgICAgICAgIHZpcnR1
YWwgdm9pZCBnZW9sb2NhdGlvbkF1dGhvcml6YXRpb25HcmFudGVkKGNvbnN0IFN0cmluZyYgLyp3
ZWJzaXRlSWRlbnRpZmllciovKSB7IH0KKyAgICAgICAgdmlydHVhbCB2b2lkIGdlb2xvY2F0aW9u
QXV0aG9yaXphdGlvbkRlbmllZChjb25zdCBTdHJpbmcmIC8qd2Vic2l0ZUlkZW50aWZpZXIqLykg
eyB9CisgICAgICAgIHZpcnR1YWwgdm9pZCBwb3NpdGlvbkNoYW5nZWQoY29uc3QgU3RyaW5nJiB3
ZWJzaXRlSWRlbnRpZmllciwgR2VvbG9jYXRpb25Qb3NpdGlvbkRhdGEmJikgPSAwOworICAgICAg
ICB2aXJ0dWFsIHZvaWQgZXJyb3JPY2N1cnJlZChjb25zdCBTdHJpbmcmIHdlYnNpdGVJZGVudGlm
aWVyLCBjb25zdCBTdHJpbmcmIGVycm9yTWVzc2FnZSkgPSAwOworICAgICAgICB2aXJ0dWFsIHZv
aWQgcmVzZXRHZW9sb2NhdGlvbihjb25zdCBTdHJpbmcmIHdlYnNpdGVJZGVudGlmaWVyKSA9IDA7
CisgICAgfTsKKworICAgIENvcmVMb2NhdGlvbkdlb2xvY2F0aW9uUHJvdmlkZXIoY29uc3QgUmVn
aXN0cmFibGVEb21haW4mLCBDbGllbnQmKTsKKyAgICB+Q29yZUxvY2F0aW9uR2VvbG9jYXRpb25Q
cm92aWRlcigpOworCisgICAgdm9pZCBzdGFydCgpOworICAgIHZvaWQgc3RvcCgpOworCisgICAg
dm9pZCBzZXRFbmFibGVIaWdoQWNjdXJhY3koYm9vbCk7CisKKyAgICBzdGF0aWMgdm9pZCByZXF1
ZXN0QXV0aG9yaXphdGlvbihjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYsIENvbXBsZXRpb25IYW5k
bGVyPHZvaWQoYm9vbCk+JiYpOworCitwcml2YXRlOgorICAgIFJldGFpblB0cjxXZWJDTExvY2F0
aW9uTWFuYWdlcj4gbV9sb2NhdGlvbk1hbmFnZXI7Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJD
b3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9Db3JlTG9jYXRp
b25HZW9sb2NhdGlvblByb3ZpZGVyLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2Ev
Q29yZUxvY2F0aW9uR2VvbG9jYXRpb25Qcm92aWRlci5tbQpuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40OGEzNTg1Mjkw
MDdkYWVlNzE4YmI2M2Q0OTA0ODBhOGExNTg4OWEzCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvQ29yZUxvY2F0aW9uR2VvbG9jYXRpb25Qcm92aWRlci5t
bQpAQCAtMCwwICsxLDI4MiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMiBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAq
IGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICog
QU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVY
RU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbXBvcnQgImNvbmZpZy5oIgorI2lt
cG9ydCAiQ29yZUxvY2F0aW9uR2VvbG9jYXRpb25Qcm92aWRlci5oIgorCisjaW1wb3J0ICJHZW9s
b2NhdGlvblBvc2l0aW9uRGF0YS5oIgorI2ltcG9ydCAiUmVnaXN0cmFibGVEb21haW4uaCIKKyNp
bXBvcnQgPENvcmVMb2NhdGlvbi9DTExvY2F0aW9uTWFuYWdlckRlbGVnYXRlLmg+CisjaW1wb3J0
IDxDb3JlTG9jYXRpb24vQ29yZUxvY2F0aW9uLmg+CisjaW1wb3J0IDx3dGYvU29mdExpbmtpbmcu
aD4KKworI2lmIFVTRShBUFBMRV9JTlRFUk5BTF9TREspCisjaW1wb3J0IDxDb3JlTG9jYXRpb24v
Q0xMb2NhdGlvbk1hbmFnZXJfUHJpdmF0ZS5oPgorI2VuZGlmCisKK1NPRlRfTElOS19GUkFNRVdP
UksoQ29yZUxvY2F0aW9uKQorCitTT0ZUX0xJTktfQ0xBU1MoQ29yZUxvY2F0aW9uLCBDTExvY2F0
aW9uTWFuYWdlcikKK1NPRlRfTElOS19DTEFTUyhDb3JlTG9jYXRpb24sIENMTG9jYXRpb24pCisK
K1NPRlRfTElOS19DT05TVEFOVChDb3JlTG9jYXRpb24sIGtDTExvY2F0aW9uQWNjdXJhY3lCZXN0
LCBkb3VibGUpCitTT0ZUX0xJTktfQ09OU1RBTlQoQ29yZUxvY2F0aW9uLCBrQ0xMb2NhdGlvbkFj
Y3VyYWN5SHVuZHJlZE1ldGVycywgZG91YmxlKQorCisjZGVmaW5lIGtDTExvY2F0aW9uQWNjdXJh
Y3lCZXN0IGdldGtDTExvY2F0aW9uQWNjdXJhY3lCZXN0KCkKKyNkZWZpbmUga0NMTG9jYXRpb25B
Y2N1cmFjeUh1bmRyZWRNZXRlcnMgZ2V0a0NMTG9jYXRpb25BY2N1cmFjeUh1bmRyZWRNZXRlcnMo
KQorCitzdGF0aWMgYm9vbCBpc0F1dGhvcml6YXRpb25HcmFudGVkKENMQXV0aG9yaXphdGlvblN0
YXR1cyBzdGF0dXMpCit7CisgICAgcmV0dXJuIHN0YXR1cyA9PSBrQ0xBdXRob3JpemF0aW9uU3Rh
dHVzQXV0aG9yaXplZEFsd2F5cworI2lmIEhBVkUoQ09SRV9MT0NBVElPTl9BVVRIT1JJWkVEX1dI
RU5fSU5fVVNFKQorICAgICAgICB8fCBzdGF0dXMgPT0ga0NMQXV0aG9yaXphdGlvblN0YXR1c0F1
dGhvcml6ZWRXaGVuSW5Vc2UKKyNlbmRpZgorICAgICAgICA7Cit9CisKK0BpbnRlcmZhY2UgV2Vi
Q0xMb2NhdGlvbk1hbmFnZXIgOiBOU09iamVjdDxDTExvY2F0aW9uTWFuYWdlckRlbGVnYXRlPgor
QGVuZAorCitAaW1wbGVtZW50YXRpb24gV2ViQ0xMb2NhdGlvbk1hbmFnZXIgeworICAgIFJldGFp
blB0cjxDTExvY2F0aW9uTWFuYWdlcj4gX2xvY2F0aW9uTWFuYWdlcjsKKyAgICBXZWJDb3JlOjpD
b3JlTG9jYXRpb25HZW9sb2NhdGlvblByb3ZpZGVyOjpDbGllbnQqIF9jbGllbnQ7CisgICAgU3Ry
aW5nIF93ZWJzaXRlSWRlbnRpZmllcjsKKyAgICBCT09MIF9pc1dhaXRpbmdGb3JBdXRob3JpemF0
aW9uOworfQorCistIChpbnN0YW5jZXR5cGUpaW5pdFdpdGhXZWJzaXRlSWRlbnRpZmllcjooY29u
c3QgU3RyaW5nJil3ZWJzaXRlSWRlbnRpZmllciBjbGllbnQ6KFdlYkNvcmU6OkNvcmVMb2NhdGlv
bkdlb2xvY2F0aW9uUHJvdmlkZXI6OkNsaWVudCYpY2xpZW50Cit7CisgICAgc2VsZiA9IFtzdXBl
ciBpbml0XTsKKyAgICBpZiAoIXNlbGYpCisgICAgICAgIHJldHVybiBuaWw7CisKKyAgICAvLyBG
SVhNRTogQ2FsbCBpbml0V2l0aFdlYnNpdGVJZGVudGlmaWVyIGFuZCBwYXNzIHRoZSB3ZWJzaXRl
SWRlbnRpZmllciB3aGVuIEhBVkUoQ09SRV9MT0NBVElPTl9XRUJTSVRFX0lERU5USUZJRVJTKSBh
bmQgIXdlYnNpdGVJZGVudGlmaWVyLmlzRW1wdHkoKSBvbmNlIDxyZGFyOi8vODg4MzQzMDE+IGlz
IGZpeGVkLgorICAgIFVOVVNFRF9QQVJBTSh3ZWJzaXRlSWRlbnRpZmllcik7CisgICAgX2xvY2F0
aW9uTWFuYWdlciA9IGFkb3B0TlMoW2FsbG9jQ0xMb2NhdGlvbk1hbmFnZXJJbnN0YW5jZSgpIGlu
aXRdKTsKKyAgICBfY2xpZW50ID0gJmNsaWVudDsKKyAgICBfd2Vic2l0ZUlkZW50aWZpZXIgPSB3
ZWJzaXRlSWRlbnRpZmllcjsKKyAgICBbX2xvY2F0aW9uTWFuYWdlciBzZXREZWxlZ2F0ZTpzZWxm
XTsKKyAgICByZXR1cm4gc2VsZjsKK30KKworLSAodm9pZClkZWFsbG9jCit7CisgICAgW19sb2Nh
dGlvbk1hbmFnZXIgc2V0RGVsZWdhdGU6bmlsXTsKKyAgICBbc3VwZXIgZGVhbGxvY107Cit9CisK
Ky0gKENMQXV0aG9yaXphdGlvblN0YXR1cylhdXRob3JpemF0aW9uU3RhdHVzCit7CisjaWYgSEFW
RShDT1JFX0xPQ0FUSU9OX0FVVEhPUklaQVRJT05fU1RBVFVTX0lOU1RBTExfUFJPUEVSVFkpCisg
ICAgcmV0dXJuIFtfbG9jYXRpb25NYW5hZ2VyIGF1dGhvcml6YXRpb25TdGF0dXNdOworI2Vsc2UK
KyAgICByZXR1cm4gW2dldENMTG9jYXRpb25NYW5hZ2VyQ2xhc3MoKSBhdXRob3JpemF0aW9uU3Rh
dHVzXTsKKyNlbmRpZgorfQorCistICh2b2lkKXN0YXJ0Cit7CisgICAgaWYgKCFbZ2V0Q0xMb2Nh
dGlvbk1hbmFnZXJDbGFzcygpIGxvY2F0aW9uU2VydmljZXNFbmFibGVkXSB8fCAhaXNBdXRob3Jp
emF0aW9uR3JhbnRlZChbc2VsZiBhdXRob3JpemF0aW9uU3RhdHVzXSkpIHsKKyAgICAgICAgW19s
b2NhdGlvbk1hbmFnZXIgc3RvcFVwZGF0aW5nTG9jYXRpb25dOworICAgICAgICBfY2xpZW50LT5y
ZXNldEdlb2xvY2F0aW9uKF93ZWJzaXRlSWRlbnRpZmllcik7CisgICAgICAgIHJldHVybjsKKyAg
ICB9CisKKyAgICBbX2xvY2F0aW9uTWFuYWdlciBzdGFydFVwZGF0aW5nTG9jYXRpb25dOworfQor
CistICh2b2lkKXN0b3AKK3sKKyAgICBbX2xvY2F0aW9uTWFuYWdlciBzdG9wVXBkYXRpbmdMb2Nh
dGlvbl07Cit9CisKKy0gKHZvaWQpc2V0RW5hYmxlSGlnaEFjY3VyYWN5OihCT09MKWhpZ2hBY2N1
cmFjeUVuYWJsZWQKK3sKKyAgICBbX2xvY2F0aW9uTWFuYWdlciBzZXREZXNpcmVkQWNjdXJhY3k6
aGlnaEFjY3VyYWN5RW5hYmxlZCA/IGtDTExvY2F0aW9uQWNjdXJhY3lCZXN0IDoga0NMTG9jYXRp
b25BY2N1cmFjeUh1bmRyZWRNZXRlcnNdOworfQorCistICh2b2lkKXJlcXVlc3RHZW9sb2NhdGlv
bkF1dGhvcml6YXRpb24KK3sKKyAgICBpZiAoIVtnZXRDTExvY2F0aW9uTWFuYWdlckNsYXNzKCkg
bG9jYXRpb25TZXJ2aWNlc0VuYWJsZWRdKSB7CisgICAgICAgIF9jbGllbnQtPmdlb2xvY2F0aW9u
QXV0aG9yaXphdGlvbkRlbmllZChfd2Vic2l0ZUlkZW50aWZpZXIpOworICAgICAgICByZXR1cm47
CisgICAgfQorCisgICAgc3dpdGNoIChbc2VsZiBhdXRob3JpemF0aW9uU3RhdHVzXSkgeworICAg
IGNhc2Uga0NMQXV0aG9yaXphdGlvblN0YXR1c05vdERldGVybWluZWQ6IHsKKyAgICAgICAgaWYg
KCFfaXNXYWl0aW5nRm9yQXV0aG9yaXphdGlvbikgeworICAgICAgICAgICAgX2lzV2FpdGluZ0Zv
ckF1dGhvcml6YXRpb24gPSBZRVM7CisgICAgICAgICAgICBbX2xvY2F0aW9uTWFuYWdlciByZXF1
ZXN0V2hlbkluVXNlQXV0aG9yaXphdGlvbl07CisgICAgICAgIH0KKyAgICAgICAgYnJlYWs7Cisg
ICAgfQorICAgIGNhc2Uga0NMQXV0aG9yaXphdGlvblN0YXR1c0F1dGhvcml6ZWRBbHdheXM6Cisj
aWYgSEFWRShDT1JFX0xPQ0FUSU9OX0FVVEhPUklaRURfV0hFTl9JTl9VU0UpCisgICAgY2FzZSBr
Q0xBdXRob3JpemF0aW9uU3RhdHVzQXV0aG9yaXplZFdoZW5JblVzZToKKyNlbmRpZgorICAgICAg
ICBfY2xpZW50LT5nZW9sb2NhdGlvbkF1dGhvcml6YXRpb25HcmFudGVkKF93ZWJzaXRlSWRlbnRp
Zmllcik7CisgICAgICAgIGJyZWFrOworICAgIGNhc2Uga0NMQXV0aG9yaXphdGlvblN0YXR1c1Jl
c3RyaWN0ZWQ6CisgICAgY2FzZSBrQ0xBdXRob3JpemF0aW9uU3RhdHVzRGVuaWVkOgorICAgICAg
ICBfY2xpZW50LT5nZW9sb2NhdGlvbkF1dGhvcml6YXRpb25EZW5pZWQoX3dlYnNpdGVJZGVudGlm
aWVyKTsKKyAgICAgICAgYnJlYWs7CisgICAgfQorfQorCisjaWYgSEFWRShDT1JFX0xPQ0FUSU9O
X0RJRF9DSEFOR0VfQVVUSE9SSVpBVElPTikKKy0gKHZvaWQpbG9jYXRpb25NYW5hZ2VyRGlkQ2hh
bmdlQXV0aG9yaXphdGlvbjooQ0xMb2NhdGlvbk1hbmFnZXIgKiltYW5hZ2VyCit7CisgICAgYXV0
byBzdGF0dXMgPSBbc2VsZiBhdXRob3JpemF0aW9uU3RhdHVzXTsKKyNlbHNlCistICh2b2lkKWxv
Y2F0aW9uTWFuYWdlcjooQ0xMb2NhdGlvbk1hbmFnZXIgKiltYW5hZ2VyIGRpZENoYW5nZUF1dGhv
cml6YXRpb25TdGF0dXM6KENMQXV0aG9yaXphdGlvblN0YXR1cylzdGF0dXMKK3sKKyNlbmRpZgor
ICAgIGlmIChfaXNXYWl0aW5nRm9yQXV0aG9yaXphdGlvbikgeworICAgICAgICBzd2l0Y2ggKHN0
YXR1cykgeworICAgICAgICBjYXNlIGtDTEF1dGhvcml6YXRpb25TdGF0dXNOb3REZXRlcm1pbmVk
OgorICAgICAgICAgICAgLy8gVGhpcyBjYW4gaGFwcGVuIGFmdGVyIHJlc3VtZSBpZiB0aGUgdXNl
ciBoYXMgc3RpbGwgbm90IGFuc3dlcmVkIHRoZSBkaWFsb2cuIFdlIGp1c3QgaGF2ZSB0byB3YWl0
IGZvciB0aGUgcGVybWlzc2lvbi4KKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIGtD
TEF1dGhvcml6YXRpb25TdGF0dXNEZW5pZWQ6CisgICAgICAgIGNhc2Uga0NMQXV0aG9yaXphdGlv
blN0YXR1c1Jlc3RyaWN0ZWQ6CisgICAgICAgICAgICBfaXNXYWl0aW5nRm9yQXV0aG9yaXphdGlv
biA9IE5POworICAgICAgICAgICAgX2NsaWVudC0+Z2VvbG9jYXRpb25BdXRob3JpemF0aW9uRGVu
aWVkKF93ZWJzaXRlSWRlbnRpZmllcik7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2Fz
ZSBrQ0xBdXRob3JpemF0aW9uU3RhdHVzQXV0aG9yaXplZEFsd2F5czoKKyNpZiBIQVZFKENPUkVf
TE9DQVRJT05fQVVUSE9SSVpFRF9XSEVOX0lOX1VTRSkKKyAgICAgICAgY2FzZSBrQ0xBdXRob3Jp
emF0aW9uU3RhdHVzQXV0aG9yaXplZFdoZW5JblVzZToKKyNlbmRpZgorICAgICAgICAgICAgX2lz
V2FpdGluZ0ZvckF1dGhvcml6YXRpb24gPSBOTzsKKyAgICAgICAgICAgIF9jbGllbnQtPmdlb2xv
Y2F0aW9uQXV0aG9yaXphdGlvbkdyYW50ZWQoX3dlYnNpdGVJZGVudGlmaWVyKTsKKyAgICAgICAg
ICAgIGJyZWFrOworICAgICAgICB9CisgICAgfSBlbHNlIHsKKyAgICAgICAgaWYgKHN0YXR1cyA9
PSBrQ0xBdXRob3JpemF0aW9uU3RhdHVzRGVuaWVkIHx8IHN0YXR1cyA9PSBrQ0xBdXRob3JpemF0
aW9uU3RhdHVzUmVzdHJpY3RlZCkgeworICAgICAgICAgICAgW19sb2NhdGlvbk1hbmFnZXIgc3Rv
cFVwZGF0aW5nTG9jYXRpb25dOworICAgICAgICAgICAgX2NsaWVudC0+cmVzZXRHZW9sb2NhdGlv
bihfd2Vic2l0ZUlkZW50aWZpZXIpOworICAgICAgICB9CisgICAgfQorfQorCistICh2b2lkKWxv
Y2F0aW9uTWFuYWdlcjooQ0xMb2NhdGlvbk1hbmFnZXIgKiltYW5hZ2VyIGRpZFVwZGF0ZUxvY2F0
aW9uczooTlNBcnJheSAqKWxvY2F0aW9ucworeworICAgIFVOVVNFRF9QQVJBTShtYW5hZ2VyKTsK
KyAgICBmb3IgKENMTG9jYXRpb24gKmxvY2F0aW9uIGluIGxvY2F0aW9ucykKKyAgICAgICAgX2Ns
aWVudC0+cG9zaXRpb25DaGFuZ2VkKF93ZWJzaXRlSWRlbnRpZmllciwgV2ViQ29yZTo6R2VvbG9j
YXRpb25Qb3NpdGlvbkRhdGEgeyBsb2NhdGlvbiB9KTsKK30KKworLSAodm9pZClsb2NhdGlvbk1h
bmFnZXI6KENMTG9jYXRpb25NYW5hZ2VyICopbWFuYWdlciBkaWRGYWlsV2l0aEVycm9yOihOU0Vy
cm9yICopZXJyb3IKK3sKKyAgICBBU1NFUlQoZXJyb3IpOworICAgIFVOVVNFRF9QQVJBTShtYW5h
Z2VyKTsKKworICAgIGlmIChbZXJyb3IgY29kZV0gPT0ga0NMRXJyb3JEZW5pZWQpIHsKKyAgICAg
ICAgLy8gSWdub3JlIHRoZSBlcnJvciBoZXJlIGFuZCBsZXQgbG9jYXRpb25NYW5hZ2VyOmRpZENo
YW5nZUF1dGhvcml6YXRpb25TdGF0dXM6IGhhbmRsZSB0aGUgcGVybWlzc2lvbi4KKyAgICAgICAg
cmV0dXJuOworICAgIH0KKworICAgIE5TU3RyaW5nICplcnJvck1lc3NhZ2UgPSBbZXJyb3IgbG9j
YWxpemVkRGVzY3JpcHRpb25dOworICAgIF9jbGllbnQtPmVycm9yT2NjdXJyZWQoX3dlYnNpdGVJ
ZGVudGlmaWVyLCBlcnJvck1lc3NhZ2UpOworfQorCitAZW5kCisKK25hbWVzcGFjZSBXZWJDb3Jl
IHsKKworQ29yZUxvY2F0aW9uR2VvbG9jYXRpb25Qcm92aWRlcjo6Q29yZUxvY2F0aW9uR2VvbG9j
YXRpb25Qcm92aWRlcihjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYgcmVnaXN0cmFibGVEb21haW4s
IENsaWVudCYgY2xpZW50KQorICAgIDogbV9sb2NhdGlvbk1hbmFnZXIoYWRvcHROUyhbW1dlYkNM
TG9jYXRpb25NYW5hZ2VyIGFsbG9jXSBpbml0V2l0aFdlYnNpdGVJZGVudGlmaWVyOnJlZ2lzdHJh
YmxlRG9tYWluLnN0cmluZygpIGNsaWVudDpjbGllbnRdKSkKK3sKKyAgICAvLyBSZXF1ZXN0IHBl
cm1pc3Npb24gZm9yIHRoZSBhcHAgdG8gdXNlIGdlb2xvY2F0aW9uIChpZiBpdCBkb2Vzbid0IGFs
cmVhZHkpLgorICAgIFttX2xvY2F0aW9uTWFuYWdlciByZXF1ZXN0R2VvbG9jYXRpb25BdXRob3Jp
emF0aW9uXTsKK30KKworQ29yZUxvY2F0aW9uR2VvbG9jYXRpb25Qcm92aWRlcjo6fkNvcmVMb2Nh
dGlvbkdlb2xvY2F0aW9uUHJvdmlkZXIoKQoreworICAgIFttX2xvY2F0aW9uTWFuYWdlciBzdG9w
XTsKK30KKwordm9pZCBDb3JlTG9jYXRpb25HZW9sb2NhdGlvblByb3ZpZGVyOjpzdGFydCgpCit7
CisgICAgW21fbG9jYXRpb25NYW5hZ2VyIHN0YXJ0XTsKK30KKwordm9pZCBDb3JlTG9jYXRpb25H
ZW9sb2NhdGlvblByb3ZpZGVyOjpzdG9wKCkKK3sKKyAgICBbbV9sb2NhdGlvbk1hbmFnZXIgc3Rv
cF07Cit9CisKK3ZvaWQgQ29yZUxvY2F0aW9uR2VvbG9jYXRpb25Qcm92aWRlcjo6c2V0RW5hYmxl
SGlnaEFjY3VyYWN5KGJvb2wgaGlnaEFjY3VyYWN5RW5hYmxlZCkKK3sKKyAgICBbbV9sb2NhdGlv
bk1hbmFnZXIgc2V0RW5hYmxlSGlnaEFjY3VyYWN5OmhpZ2hBY2N1cmFjeUVuYWJsZWRdOworfQor
CitjbGFzcyBBdXRob3JpemF0aW9uQ2hlY2tlciBmaW5hbCA6IHB1YmxpYyBSZWZDb3VudGVkPEF1
dGhvcml6YXRpb25DaGVja2VyPiwgcHVibGljIENvcmVMb2NhdGlvbkdlb2xvY2F0aW9uUHJvdmlk
ZXI6OkNsaWVudCB7CitwdWJsaWM6CisgICAgc3RhdGljIFJlZjxBdXRob3JpemF0aW9uQ2hlY2tl
cj4gY3JlYXRlKCkKKyAgICB7CisgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IEF1dGhvcml6
YXRpb25DaGVja2VyKTsKKyAgICB9CisKKyAgICB2b2lkIGNoZWNrKGNvbnN0IFJlZ2lzdHJhYmxl
RG9tYWluJiByZWdpc3RyYWJsZURvbWFpbiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4m
JiBjb21wbGV0aW9uSGFuZGxlcikKKyAgICB7CisgICAgICAgIG1fY29tcGxldGlvbkhhbmRsZXIg
PSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKTsKKyAgICAgICAgbV9wcm92aWRlciA9IG1ha2VV
bmlxdWU8Q29yZUxvY2F0aW9uR2VvbG9jYXRpb25Qcm92aWRlcj4ocmVnaXN0cmFibGVEb21haW4s
ICp0aGlzKTsKKyAgICB9CisKK3ByaXZhdGU6CisgICAgQXV0aG9yaXphdGlvbkNoZWNrZXIoKSA9
IGRlZmF1bHQ7CisKKyAgICB2b2lkIGdlb2xvY2F0aW9uQXV0aG9yaXphdGlvbkdyYW50ZWQoY29u
c3QgU3RyaW5nJikgZmluYWwKKyAgICB7CisgICAgICAgIGlmIChtX2NvbXBsZXRpb25IYW5kbGVy
KQorICAgICAgICAgICAgbV9jb21wbGV0aW9uSGFuZGxlcih0cnVlKTsKKyAgICB9CisKKyAgICB2
b2lkIGdlb2xvY2F0aW9uQXV0aG9yaXphdGlvbkRlbmllZChjb25zdCBTdHJpbmcmKSBmaW5hbAor
ICAgIHsKKyAgICAgICAgaWYgKG1fY29tcGxldGlvbkhhbmRsZXIpCisgICAgICAgICAgICBtX2Nv
bXBsZXRpb25IYW5kbGVyKGZhbHNlKTsKKyAgICB9CisKKyAgICB2b2lkIHBvc2l0aW9uQ2hhbmdl
ZChjb25zdCBTdHJpbmcmLCBHZW9sb2NhdGlvblBvc2l0aW9uRGF0YSYmKSBmaW5hbCB7IH0KKyAg
ICB2b2lkIGVycm9yT2NjdXJyZWQoY29uc3QgU3RyaW5nJiwgY29uc3QgU3RyaW5nJikgZmluYWwK
KyAgICB7CisgICAgICAgIGlmIChtX2NvbXBsZXRpb25IYW5kbGVyKQorICAgICAgICAgICAgbV9j
b21wbGV0aW9uSGFuZGxlcihmYWxzZSk7CisgICAgfQorICAgIHZvaWQgcmVzZXRHZW9sb2NhdGlv
bihjb25zdCBTdHJpbmcmKSBmaW5hbCB7IH0KKworICAgIHN0ZDo6dW5pcXVlX3B0cjxDb3JlTG9j
YXRpb25HZW9sb2NhdGlvblByb3ZpZGVyPiBtX3Byb3ZpZGVyOworICAgIENvbXBsZXRpb25IYW5k
bGVyPHZvaWQoYm9vbCk+IG1fY29tcGxldGlvbkhhbmRsZXI7Cit9OworCit2b2lkIENvcmVMb2Nh
dGlvbkdlb2xvY2F0aW9uUHJvdmlkZXI6OnJlcXVlc3RBdXRob3JpemF0aW9uKGNvbnN0IFJlZ2lz
dHJhYmxlRG9tYWluJiByZWdpc3RyYWJsZURvbWFpbiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChi
b29sKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3sKKyAgICBhdXRvIGF1dGhvcml6YXRpb25DaGVj
a2VyID0gQXV0aG9yaXphdGlvbkNoZWNrZXI6OmNyZWF0ZSgpOworICAgIGF1dGhvcml6YXRpb25D
aGVja2VyLT5jaGVjayhyZWdpc3RyYWJsZURvbWFpbiwgW2F1dGhvcml6YXRpb25DaGVja2VyLCBj
b21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXShib29sIGF1dGhv
cml6ZWQpIG11dGFibGUgeworICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihhdXRob3JpemVkKTsK
KyAgICB9KTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbW9jay9HZW9sb2NhdGlvbkNsaWVudE1vY2suY3BwIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbW9jay9HZW9sb2NhdGlvbkNsaWVudE1vY2suY3BwCmluZGV4IDlk
NWVmYzgzZjM0ZWIxOGQ1OTlkYzEwY2FhOGZjMGNhMzk5ZGIwYTIuLmZhNDIwODJlNTA1OWE5ZWNm
MjY0Y2FhZjRjMjY1MzJmNGIyZTVkN2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL21vY2svR2VvbG9jYXRpb25DbGllbnRNb2NrLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9tb2NrL0dlb2xvY2F0aW9uQ2xpZW50TW9jay5jcHAKQEAgLTEzNiwxMCArMTM2LDEx
IEBAIHZvaWQgR2VvbG9jYXRpb25DbGllbnRNb2NrOjpnZW9sb2NhdGlvbkRlc3Ryb3llZCgpCiAg
ICAgQVNTRVJUKCFtX2lzQWN0aXZlKTsKIH0KIAotdm9pZCBHZW9sb2NhdGlvbkNsaWVudE1vY2s6
OnN0YXJ0VXBkYXRpbmcoY29uc3QgU3RyaW5nJiBhdXRob3JpemF0aW9uVG9rZW4pCit2b2lkIEdl
b2xvY2F0aW9uQ2xpZW50TW9jazo6c3RhcnRVcGRhdGluZyhjb25zdCBTdHJpbmcmIGF1dGhvcml6
YXRpb25Ub2tlbiwgYm9vbCBlbmFibGVIaWdoQWNjdXJhY3kpCiB7CiAgICAgQVNTRVJUKCFtX2lz
QWN0aXZlKTsKICAgICBVTlVTRURfUEFSQU0oYXV0aG9yaXphdGlvblRva2VuKTsKKyAgICBVTlVT
RURfUEFSQU0oZW5hYmxlSGlnaEFjY3VyYWN5KTsKICAgICBtX2lzQWN0aXZlID0gdHJ1ZTsKICAg
ICBhc3luY1VwZGF0ZUNvbnRyb2xsZXIoKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL21vY2svR2VvbG9jYXRpb25DbGllbnRNb2NrLmggYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9tb2NrL0dlb2xvY2F0aW9uQ2xpZW50TW9jay5oCmluZGV4IDJmYTc1ZTA1N2E1M2Q3
ZTgxOGNjZmFmZWU3MDI0M2RkNTQ4MjE4NDUuLmY4YmFjMzhiNWI2Y2NjOGNjMDhmODcwNzFlYmM3
NWQ2NWIzMTA2NDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svR2Vv
bG9jYXRpb25DbGllbnRNb2NrLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9H
ZW9sb2NhdGlvbkNsaWVudE1vY2suaApAQCAtNTksNyArNTksNyBAQCBwdWJsaWM6CiAKICAgICAv
LyBHZW9sb2NhdGlvbkNsaWVudAogICAgIHZvaWQgZ2VvbG9jYXRpb25EZXN0cm95ZWQoKSBvdmVy
cmlkZTsKLSAgICB2b2lkIHN0YXJ0VXBkYXRpbmcoY29uc3QgU3RyaW5nJiBhdXRob3JpemF0aW9u
VG9rZW4pIG92ZXJyaWRlOworICAgIHZvaWQgc3RhcnRVcGRhdGluZyhjb25zdCBTdHJpbmcmIGF1
dGhvcml6YXRpb25Ub2tlbiwgYm9vbCBlbmFibGVIaWdoQWNjdXJhY3kpIG92ZXJyaWRlOwogICAg
IHZvaWQgc3RvcFVwZGF0aW5nKCkgb3ZlcnJpZGU7CiAgICAgdm9pZCBzZXRFbmFibGVIaWdoQWNj
dXJhY3koYm9vbCkgb3ZlcnJpZGU7CiAgICAgc3RkOjpvcHRpb25hbDxHZW9sb2NhdGlvblBvc2l0
aW9uRGF0YT4gbGFzdFBvc2l0aW9uKCkgb3ZlcnJpZGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1NvdXJjZXNDb2NvYS50eHQgYi9Tb3VyY2UvV2ViS2l0L1NvdXJjZXNDb2NvYS50eHQKaW5k
ZXggMmFjZGE5NDFlY2RmNGJjYmU3ZmU5NGE1MTgxNzQ5MWYxYzBiZjM5YS4uMzlmZWE5MWNlNTYx
NzU4MTYwYWQ5MjE4OTg5NDUzZTU4M2VkNjQ2MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9T
b3VyY2VzQ29jb2EudHh0CisrKyBiL1NvdXJjZS9XZWJLaXQvU291cmNlc0NvY29hLnR4dApAQCAt
NDI3LDYgKzQyNyw3IEBAIFVJUHJvY2Vzcy9Db2NvYS9VSVJlbW90ZU9iamVjdFJlZ2lzdHJ5LmNw
cAogVUlQcm9jZXNzL0NvY29hL1VzZXJNZWRpYUNhcHR1cmVNYW5hZ2VyUHJveHkuY3BwCiBVSVBy
b2Nlc3MvQ29jb2EvVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyUHJveHkubW0KIFVJ
UHJvY2Vzcy9Db2NvYS9WaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyUHJveHkubW0KK1VJUHJvY2Vzcy9D
b2NvYS9XZWJHZW9sb2NhdGlvbk1hbmFnZXJQcm94eUNvY29hLmNwcAogVUlQcm9jZXNzL0NvY29h
L1dlYlBhZ2VQcm94eUNvY29hLm1tCiBVSVByb2Nlc3MvQ29jb2EvV2ViUGFzdGVib2FyZFByb3h5
Q29jb2EubW0KIFVJUHJvY2Vzcy9Db2NvYS9XZWJQcmVmZXJlbmNlc0NvY29hLm1tCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XZWJHZW9sb2NhdGlvbk1hbmFnZXJQ
cm94eUNvY29hLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dlYkdlb2xvY2F0
aW9uTWFuYWdlclByb3h5Q29jb2EuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmYwYmZiZGU5MzIyMmIxMDU3ZjE3
MzZiNzI5MjIwMTIzMmIwMjU2OGYKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9Db2NvYS9XZWJHZW9sb2NhdGlvbk1hbmFnZXJQcm94eUNvY29hLmNwcApAQCAtMCww
ICsxLDc2IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIyIEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoK
KyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRo
ZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVW
RU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBP
UgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4K
KyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0Ug
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIldl
Ykdlb2xvY2F0aW9uTWFuYWdlclByb3h5LmgiCisKKyNpbmNsdWRlICJXZWJHZW9sb2NhdGlvbk1h
bmFnZXJNZXNzYWdlcy5oIgorI2luY2x1ZGUgIldlYlByb2Nlc3NQcm94eS5oIgorCituYW1lc3Bh
Y2UgV2ViS2l0IHsKKworLy8gRklYTUU6IFRoaXMgc2hvdWxkIGJlIHVzZWQgYnkgYWxsIENvY29h
IHBvcnRzCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKKwordm9pZCBXZWJHZW9sb2NhdGlvbk1h
bmFnZXJQcm94eTo6cG9zaXRpb25DaGFuZ2VkKGNvbnN0IFN0cmluZyYgd2Vic2l0ZUlkZW50aWZp
ZXIsIFdlYkNvcmU6Okdlb2xvY2F0aW9uUG9zaXRpb25EYXRhJiYgcG9zaXRpb24pCit7CisgICAg
YXV0byByZWdpc3RyYWJsZURvbWFpbiA9IFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluOjp1bmNo
ZWNrZWRDcmVhdGVGcm9tUmVnaXN0cmFibGVEb21haW5TdHJpbmcod2Vic2l0ZUlkZW50aWZpZXIp
OworICAgIGF1dG8gaXQgPSBtX3BlckRvbWFpbkRhdGEuZmluZChyZWdpc3RyYWJsZURvbWFpbik7
CisgICAgaWYgKGl0ID09IG1fcGVyRG9tYWluRGF0YS5lbmQoKSkKKyAgICAgICAgcmV0dXJuOwor
CisgICAgYXV0byYgcGVyRG9tYWluRGF0YSA9ICppdC0+dmFsdWU7CisgICAgcGVyRG9tYWluRGF0
YS5sYXN0UG9zaXRpb24gPSBXVEZNb3ZlKHBvc2l0aW9uKTsKKyAgICBmb3IgKGF1dG8mIHdlYlBy
b2Nlc3NQcm94eSA6IHBlckRvbWFpbkRhdGEud2F0Y2hlcnMpCisgICAgICAgIHdlYlByb2Nlc3NQ
cm94eS5zZW5kKE1lc3NhZ2VzOjpXZWJHZW9sb2NhdGlvbk1hbmFnZXI6OkRpZENoYW5nZVBvc2l0
aW9uKHJlZ2lzdHJhYmxlRG9tYWluLCBwZXJEb21haW5EYXRhLmxhc3RQb3NpdGlvbi52YWx1ZSgp
KSwgMCk7Cit9CisKK3ZvaWQgV2ViR2VvbG9jYXRpb25NYW5hZ2VyUHJveHk6OmVycm9yT2NjdXJy
ZWQoY29uc3QgU3RyaW5nJiB3ZWJzaXRlSWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiBlcnJvck1l
c3NhZ2UpCit7CisgICAgYXV0byByZWdpc3RyYWJsZURvbWFpbiA9IFdlYkNvcmU6OlJlZ2lzdHJh
YmxlRG9tYWluOjp1bmNoZWNrZWRDcmVhdGVGcm9tUmVnaXN0cmFibGVEb21haW5TdHJpbmcod2Vi
c2l0ZUlkZW50aWZpZXIpOworICAgIGF1dG8gaXQgPSBtX3BlckRvbWFpbkRhdGEuZmluZChyZWdp
c3RyYWJsZURvbWFpbik7CisgICAgaWYgKGl0ID09IG1fcGVyRG9tYWluRGF0YS5lbmQoKSkKKyAg
ICAgICAgcmV0dXJuOworCisgICAgYXV0byYgcGVyRG9tYWluRGF0YSA9ICppdC0+dmFsdWU7Cisg
ICAgZm9yIChhdXRvJiB3ZWJQcm9jZXNzUHJveHkgOiBwZXJEb21haW5EYXRhLndhdGNoZXJzKQor
ICAgICAgICB3ZWJQcm9jZXNzUHJveHkuc2VuZChNZXNzYWdlczo6V2ViR2VvbG9jYXRpb25NYW5h
Z2VyOjpEaWRGYWlsVG9EZXRlcm1pbmVQb3NpdGlvbihyZWdpc3RyYWJsZURvbWFpbiwgZXJyb3JN
ZXNzYWdlKSwgMCk7Cit9CisKK3ZvaWQgV2ViR2VvbG9jYXRpb25NYW5hZ2VyUHJveHk6OnJlc2V0
R2VvbG9jYXRpb24oY29uc3QgU3RyaW5nJiB3ZWJzaXRlSWRlbnRpZmllcikKK3sKKyAgICBhdXRv
IHJlZ2lzdHJhYmxlRG9tYWluID0gV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW46OnVuY2hlY2tl
ZENyZWF0ZUZyb21SZWdpc3RyYWJsZURvbWFpblN0cmluZyh3ZWJzaXRlSWRlbnRpZmllcik7Cisg
ICAgYXV0byBpdCA9IG1fcGVyRG9tYWluRGF0YS5maW5kKHJlZ2lzdHJhYmxlRG9tYWluKTsKKyAg
ICBpZiAoaXQgPT0gbV9wZXJEb21haW5EYXRhLmVuZCgpKQorICAgICAgICByZXR1cm47CisKKyAg
ICBhdXRvJiBwZXJEb21haW5EYXRhID0gKml0LT52YWx1ZTsKKyAgICBmb3IgKGF1dG8mIHdlYlBy
b2Nlc3NQcm94eSA6IHBlckRvbWFpbkRhdGEud2F0Y2hlcnMpCisgICAgICAgIHdlYlByb2Nlc3NQ
cm94eS5zZW5kKE1lc3NhZ2VzOjpXZWJHZW9sb2NhdGlvbk1hbmFnZXI6OlJlc2V0UGVybWlzc2lv
bnMocmVnaXN0cmFibGVEb21haW4pLCAwKTsKK30KKworI2VuZGlmCisKK30gLy8gbmFtZXNwYWNl
IFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQ29udGV4dFN1
cHBsZW1lbnQuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkNvbnRleHRTdXBwbGVtZW50
LmgKaW5kZXggZWQ1NWI0MDNkYjI5Zjk0MDA0MzhiYTMyYTYwYzc1ODI3NDkzNGZhNi4uZWMxOWNk
Y2NjYmI0MGY5MmQ1ODM1ZjNlYTYwMzFiZGRhNDc3YThlMiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvV2ViQ29udGV4dFN1cHBsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9XZWJDb250ZXh0U3VwcGxlbWVudC5oCkBAIC00NywxNCArNDcsNiBAQCBwdWJs
aWM6CiAgICAgewogICAgIH0KIAotICAgIHZpcnR1YWwgdm9pZCBwcm9jZXNzRGlkQ2xvc2UoV2Vi
UHJvY2Vzc1Byb3h5KikKLSAgICB7Ci0gICAgfQotCi0gICAgdmlydHVhbCB2b2lkIHByb2Nlc3NE
aWRDbG9zZShOZXR3b3JrUHJvY2Vzc1Byb3h5KikKLSAgICB7Ci0gICAgfQotCiAgICAgV2ViUHJv
Y2Vzc1Bvb2wqIHByb2Nlc3NQb29sKCkgY29uc3QgeyByZXR1cm4gbV9wcm9jZXNzUG9vbDsgfQog
ICAgIHZvaWQgY2xlYXJQcm9jZXNzUG9vbCgpIHsgbV9wcm9jZXNzUG9vbCA9IG51bGxwdHI7IH0K
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViR2VvbG9jYXRpb25NYW5h
Z2VyUHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViR2VvbG9jYXRpb25NYW5h
Z2VyUHJveHkuY3BwCmluZGV4IDA0ZjMyMjdjZDU1Yzk5MmE0MmNkOTZhM2YyNWQ2OTdhZWQ3OTY1
YTIuLjU2NjU3NGQzZTcxMjMyODU1ZGRjYzZjMWRlNDAzN2MxMzY2NDQ2NWIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkdlb2xvY2F0aW9uTWFuYWdlclByb3h5LmNwcAor
KysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJHZW9sb2NhdGlvbk1hbmFnZXJQcm94eS5j
cHAKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDExLCAyMDEyLCAyMDEz
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMS0y
MDIyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucwpAQCAtMzQsMTAgKzM0LDE1IEBACiAjaW5jbHVkZSAiV2ViUGFnZVByb3h5Lmgi
CiAjaW5jbHVkZSAiV2ViUHJvY2Vzc1Bvb2wuaCIKIAotI2RlZmluZSBNRVNTQUdFX0NIRUNLKGFz
c2VydGlvbikgTUVTU0FHRV9DSEVDS19CQVNFKGFzc2VydGlvbiwgKCZjb25uZWN0aW9uKSkKKyNk
ZWZpbmUgTUVTU0FHRV9DSEVDSyhjb25uZWN0aW9uLCBhc3NlcnRpb24pIE1FU1NBR0VfQ0hFQ0tf
QkFTRShhc3NlcnRpb24sIChjb25uZWN0aW9uKSkKIAogbmFtZXNwYWNlIFdlYktpdCB7CiAKK3N0
YXRpYyBpbmxpbmUgV2ViUHJvY2Vzc1Byb3h5JiBjb25uZWN0aW9uVG9XZWJQcm9jZXNzUHJveHko
Y29uc3QgSVBDOjpDb25uZWN0aW9uJiBjb25uZWN0aW9uKQoreworICAgIHJldHVybiBzdGF0aWNf
Y2FzdDxXZWJQcm9jZXNzUHJveHkmPihjb25uZWN0aW9uLmNsaWVudCgpKTsKK30KKwogY29uc3Qg
Y2hhciogV2ViR2VvbG9jYXRpb25NYW5hZ2VyUHJveHk6OnN1cHBsZW1lbnROYW1lKCkKIHsKICAg
ICByZXR1cm4gIldlYkdlb2xvY2F0aW9uTWFuYWdlclByb3h5IjsKQEAgLTUwLDM0ICs1NSwzOCBA
QCBSZWY8V2ViR2VvbG9jYXRpb25NYW5hZ2VyUHJveHk+IFdlYkdlb2xvY2F0aW9uTWFuYWdlclBy
b3h5OjpjcmVhdGUoV2ViUHJvY2Vzc1BvbwogCiBXZWJHZW9sb2NhdGlvbk1hbmFnZXJQcm94eTo6
V2ViR2VvbG9jYXRpb25NYW5hZ2VyUHJveHkoV2ViUHJvY2Vzc1Bvb2wqIHByb2Nlc3NQb29sKQog
ICAgIDogV2ViQ29udGV4dFN1cHBsZW1lbnQocHJvY2Vzc1Bvb2wpCi0gICAgLCBtX3Byb3ZpZGVy
KG1ha2VVbmlxdWU8QVBJOjpHZW9sb2NhdGlvblByb3ZpZGVyPigpKQogewogICAgIFdlYkNvbnRl
eHRTdXBwbGVtZW50Ojpwcm9jZXNzUG9vbCgpLT5hZGRNZXNzYWdlUmVjZWl2ZXIoTWVzc2FnZXM6
OldlYkdlb2xvY2F0aW9uTWFuYWdlclByb3h5OjptZXNzYWdlUmVjZWl2ZXJOYW1lKCksICp0aGlz
KTsKIH0KIAorV2ViR2VvbG9jYXRpb25NYW5hZ2VyUHJveHk6On5XZWJHZW9sb2NhdGlvbk1hbmFn
ZXJQcm94eSgpID0gZGVmYXVsdDsKKwogdm9pZCBXZWJHZW9sb2NhdGlvbk1hbmFnZXJQcm94eTo6
c2V0UHJvdmlkZXIoc3RkOjp1bmlxdWVfcHRyPEFQSTo6R2VvbG9jYXRpb25Qcm92aWRlcj4mJiBw
cm92aWRlcikKIHsKLSAgICBpZiAoIXByb3ZpZGVyKQotICAgICAgICBtX3Byb3ZpZGVyID0gbWFr
ZVVuaXF1ZTxBUEk6Okdlb2xvY2F0aW9uUHJvdmlkZXI+KCk7Ci0gICAgZWxzZQotICAgICAgICBt
X3Byb3ZpZGVyID0gV1RGTW92ZShwcm92aWRlcik7CisgICAgbV9jbGllbnRQcm92aWRlciA9IFdU
Rk1vdmUocHJvdmlkZXIpOwogfQogCiAvLyBXZWJDb250ZXh0U3VwcGxlbWVudAogCiB2b2lkIFdl
Ykdlb2xvY2F0aW9uTWFuYWdlclByb3h5Ojpwcm9jZXNzUG9vbERlc3Ryb3llZCgpCiB7Ci0gICAg
Ym9vbCB3YXNVcGRhdGluZyA9IGlzVXBkYXRpbmcoKTsKLSAgICBtX3VwZGF0ZVJlcXVlc3RlcnMu
Y2xlYXIoKTsKKyAgICBpZiAobV9wZXJEb21haW5EYXRhLmlzRW1wdHkoKSkKKyAgICAgICAgcmV0
dXJuOwogCi0gICAgQVNTRVJUKCFpc1VwZGF0aW5nKCkpOwotICAgIGlmICh3YXNVcGRhdGluZykK
LSAgICAgICAgbV9wcm92aWRlci0+c3RvcFVwZGF0aW5nKCp0aGlzKTsKKyAgICBtX3BlckRvbWFp
bkRhdGEuY2xlYXIoKTsKKyAgICBpZiAobV9jbGllbnRQcm92aWRlcikKKyAgICAgICAgbV9jbGll
bnRQcm92aWRlci0+c3RvcFVwZGF0aW5nKCp0aGlzKTsKIH0KIAotdm9pZCBXZWJHZW9sb2NhdGlv
bk1hbmFnZXJQcm94eTo6cHJvY2Vzc0RpZENsb3NlKFdlYlByb2Nlc3NQcm94eSogd2ViUHJvY2Vz
c1Byb3h5KQordm9pZCBXZWJHZW9sb2NhdGlvbk1hbmFnZXJQcm94eTo6d2ViUHJvY2Vzc0lzR29p
bmdBd2F5KFdlYlByb2Nlc3NQcm94eSYgcHJveHkpCiB7Ci0gICAgcmVtb3ZlUmVxdWVzdGVyKHdl
YlByb2Nlc3NQcm94eSk7CisgICAgVmVjdG9yPFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluPiBh
ZmZlY3RlZERvbWFpbnM7CisgICAgZm9yIChhdXRvJiBbcmVnaXN0cmFibGVEb21haW4sIHBlckRv
bWFpbkRhdGFdIDogbV9wZXJEb21haW5EYXRhKSB7CisgICAgICAgIGlmIChwZXJEb21haW5EYXRh
LT53YXRjaGVycy5jb250YWlucyhwcm94eSkpCisgICAgICAgICAgICBhZmZlY3RlZERvbWFpbnMu
YXBwZW5kKHJlZ2lzdHJhYmxlRG9tYWluKTsKKyAgICB9CisgICAgZm9yIChhdXRvJiByZWdpc3Ry
YWJsZURvbWFpbiA6IGFmZmVjdGVkRG9tYWlucykKKyAgICAgICAgc3RvcFVwZGF0aW5nV2l0aFBy
b3h5KHByb3h5LCByZWdpc3RyYWJsZURvbWFpbik7CiB9CiAKIHZvaWQgV2ViR2VvbG9jYXRpb25N
YW5hZ2VyUHJveHk6OnJlZldlYkNvbnRleHRTdXBwbGVtZW50KCkKQEAgLTkyLDgwICsxMDEsMjA0
IEBAIHZvaWQgV2ViR2VvbG9jYXRpb25NYW5hZ2VyUHJveHk6OmRlcmVmV2ViQ29udGV4dFN1cHBs
ZW1lbnQoKQogCiB2b2lkIFdlYkdlb2xvY2F0aW9uTWFuYWdlclByb3h5Ojpwcm92aWRlckRpZENo
YW5nZVBvc2l0aW9uKFdlYkdlb2xvY2F0aW9uUG9zaXRpb24qIHBvc2l0aW9uKQogewotICAgIG1f
bGFzdFBvc2l0aW9uID0gcG9zaXRpb24tPmNvcmVQb3NpdGlvbigpOwotCi0gICAgaWYgKCFwcm9j
ZXNzUG9vbCgpKQotICAgICAgICByZXR1cm47Ci0KLSAgICBwcm9jZXNzUG9vbCgpLT5zZW5kVG9B
bGxQcm9jZXNzZXMoTWVzc2FnZXM6OldlYkdlb2xvY2F0aW9uTWFuYWdlcjo6RGlkQ2hhbmdlUG9z
aXRpb24obV9sYXN0UG9zaXRpb24udmFsdWUoKSkpOworICAgIGZvciAoYXV0byYgW3JlZ2lzdHJh
YmxlRG9tYWluLCBwZXJEb21haW5EYXRhXSA6IG1fcGVyRG9tYWluRGF0YSkgeworICAgICAgICBw
ZXJEb21haW5EYXRhLT5sYXN0UG9zaXRpb24gPSBwb3NpdGlvbi0+Y29yZVBvc2l0aW9uKCk7Cisg
ICAgICAgIGZvciAoYXV0byYgcHJvY2VzcyA6IHBlckRvbWFpbkRhdGEtPndhdGNoZXJzKQorICAg
ICAgICAgICAgcHJvY2Vzcy5zZW5kKE1lc3NhZ2VzOjpXZWJHZW9sb2NhdGlvbk1hbmFnZXI6OkRp
ZENoYW5nZVBvc2l0aW9uKHJlZ2lzdHJhYmxlRG9tYWluLCBwZXJEb21haW5EYXRhLT5sYXN0UG9z
aXRpb24udmFsdWUoKSksIDApOworICAgIH0KIH0KIAogdm9pZCBXZWJHZW9sb2NhdGlvbk1hbmFn
ZXJQcm94eTo6cHJvdmlkZXJEaWRGYWlsVG9EZXRlcm1pbmVQb3NpdGlvbihjb25zdCBTdHJpbmcm
IGVycm9yTWVzc2FnZSkKIHsKLSAgICBpZiAoIXByb2Nlc3NQb29sKCkpCi0gICAgICAgIHJldHVy
bjsKLQotICAgIHByb2Nlc3NQb29sKCktPnNlbmRUb0FsbFByb2Nlc3NlcyhNZXNzYWdlczo6V2Vi
R2VvbG9jYXRpb25NYW5hZ2VyOjpEaWRGYWlsVG9EZXRlcm1pbmVQb3NpdGlvbihlcnJvck1lc3Nh
Z2UpKTsKKyAgICBmb3IgKGF1dG8mIFtyZWdpc3RyYWJsZURvbWFpbiwgcGVyRG9tYWluRGF0YV0g
OiBtX3BlckRvbWFpbkRhdGEpIHsKKyAgICAgICAgZm9yIChhdXRvJiBwcm94eSA6IHBlckRvbWFp
bkRhdGEtPndhdGNoZXJzKQorICAgICAgICAgICAgcHJveHkuc2VuZChNZXNzYWdlczo6V2ViR2Vv
bG9jYXRpb25NYW5hZ2VyOjpEaWRGYWlsVG9EZXRlcm1pbmVQb3NpdGlvbihyZWdpc3RyYWJsZURv
bWFpbiwgZXJyb3JNZXNzYWdlKSwgMCk7CisgICAgfQogfQogCiAjaWYgUExBVEZPUk0oSU9TX0ZB
TUlMWSkKIHZvaWQgV2ViR2VvbG9jYXRpb25NYW5hZ2VyUHJveHk6OnJlc2V0UGVybWlzc2lvbnMo
KQogewotICAgIHByb2Nlc3NQb29sKCktPnNlbmRUb0FsbFByb2Nlc3NlcyhNZXNzYWdlczo6V2Vi
R2VvbG9jYXRpb25NYW5hZ2VyOjpSZXNldFBlcm1pc3Npb25zKCkpOworICAgIEFTU0VSVChtX2Ns
aWVudFByb3ZpZGVyKTsKKyAgICBmb3IgKGF1dG8mIFtyZWdpc3RyYWJsZURvbWFpbiwgcGVyRG9t
YWluRGF0YV0gOiBtX3BlckRvbWFpbkRhdGEpIHsKKyAgICAgICAgZm9yIChhdXRvJiBwcm94eSA6
IHBlckRvbWFpbkRhdGEtPndhdGNoZXJzKQorICAgICAgICAgICAgcHJveHkuc2VuZChNZXNzYWdl
czo6V2ViR2VvbG9jYXRpb25NYW5hZ2VyOjpSZXNldFBlcm1pc3Npb25zKHJlZ2lzdHJhYmxlRG9t
YWluKSwgMCk7CisgICAgfQogfQogI2VuZGlmCiAKLXZvaWQgV2ViR2VvbG9jYXRpb25NYW5hZ2Vy
UHJveHk6OnN0YXJ0VXBkYXRpbmcoSVBDOjpDb25uZWN0aW9uJiBjb25uZWN0aW9uLCBXZWJQYWdl
UHJveHlJZGVudGlmaWVyIHBhZ2VQcm94eUlELCBjb25zdCBTdHJpbmcmIGF1dGhvcml6YXRpb25U
b2tlbikKK3ZvaWQgV2ViR2VvbG9jYXRpb25NYW5hZ2VyUHJveHk6OnN0YXJ0VXBkYXRpbmcoSVBD
OjpDb25uZWN0aW9uJiBjb25uZWN0aW9uLCBjb25zdCBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFp
biYgcmVnaXN0cmFibGVEb21haW4sIFdlYlBhZ2VQcm94eUlkZW50aWZpZXIgcGFnZVByb3h5SUQs
IGNvbnN0IFN0cmluZyYgYXV0aG9yaXphdGlvblRva2VuLCBib29sIGVuYWJsZUhpZ2hBY2N1cmFj
eSkKK3sKKyAgICBzdGFydFVwZGF0aW5nV2l0aFByb3h5KGNvbm5lY3Rpb25Ub1dlYlByb2Nlc3NQ
cm94eShjb25uZWN0aW9uKSwgcmVnaXN0cmFibGVEb21haW4sIHBhZ2VQcm94eUlELCBhdXRob3Jp
emF0aW9uVG9rZW4sIGVuYWJsZUhpZ2hBY2N1cmFjeSk7Cit9CisKK3ZvaWQgV2ViR2VvbG9jYXRp
b25NYW5hZ2VyUHJveHk6OnN0YXJ0VXBkYXRpbmdXaXRoUHJveHkoV2ViUHJvY2Vzc1Byb3h5JiBw
cm94eSwgY29uc3QgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4mIHJlZ2lzdHJhYmxlRG9tYWlu
LCBXZWJQYWdlUHJveHlJZGVudGlmaWVyIHBhZ2VQcm94eUlELCBjb25zdCBTdHJpbmcmIGF1dGhv
cml6YXRpb25Ub2tlbiwgYm9vbCBlbmFibGVIaWdoQWNjdXJhY3kpCiB7CiAgICAgYXV0byogcGFn
ZSA9IFdlYlByb2Nlc3NQcm94eTo6d2ViUGFnZShwYWdlUHJveHlJRCk7Ci0gICAgTUVTU0FHRV9D
SEVDSyhwYWdlKTsKKyAgICBNRVNTQUdFX0NIRUNLKHByb3h5LmNvbm5lY3Rpb24oKSwgcGFnZSk7
CiAKICAgICBhdXRvIGlzVmFsaWRBdXRob3JpemF0aW9uVG9rZW4gPSBwYWdlLT5nZW9sb2NhdGlv
blBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlcigpLmlzVmFsaWRBdXRob3JpemF0aW9uVG9rZW4oYXV0
aG9yaXphdGlvblRva2VuKTsKLSAgICBNRVNTQUdFX0NIRUNLKGlzVmFsaWRBdXRob3JpemF0aW9u
VG9rZW4pOworICAgIE1FU1NBR0VfQ0hFQ0socHJveHkuY29ubmVjdGlvbigpLCBpc1ZhbGlkQXV0
aG9yaXphdGlvblRva2VuKTsKKworICAgIGF1dG8mIHBlckRvbWFpbkRhdGEgPSAqbV9wZXJEb21h
aW5EYXRhLmVuc3VyZShyZWdpc3RyYWJsZURvbWFpbiwgW10geworICAgICAgICByZXR1cm4gbWFr
ZVVuaXF1ZTxQZXJEb21haW5EYXRhPigpOworICAgIH0pLml0ZXJhdG9yLT52YWx1ZTsKKworICAg
IGJvb2wgd2FzVXBkYXRpbmcgPSBpc1VwZGF0aW5nKHBlckRvbWFpbkRhdGEpOworICAgIGJvb2wg
aGlnaEFjY3VyYWN5V2FzRW5hYmxlZCA9IGlzSGlnaEFjY3VyYWN5RW5hYmxlZChwZXJEb21haW5E
YXRhKTsKKworICAgIHBlckRvbWFpbkRhdGEud2F0Y2hlcnMuYWRkKHByb3h5KTsKKyAgICBpZiAo
ZW5hYmxlSGlnaEFjY3VyYWN5KQorICAgICAgICBwZXJEb21haW5EYXRhLndhdGNoZXJzTmVlZGlu
Z0hpZ2hBY2N1cmFjeS5hZGQocHJveHkpOwogCi0gICAgYm9vbCB3YXNVcGRhdGluZyA9IGlzVXBk
YXRpbmcoKTsKLSAgICBtX3VwZGF0ZVJlcXVlc3RlcnMuYWRkKCZjb25uZWN0aW9uLmNsaWVudCgp
KTsKICAgICBpZiAoIXdhc1VwZGF0aW5nKSB7Ci0gICAgICAgIG1fcHJvdmlkZXItPnNldEVuYWJs
ZUhpZ2hBY2N1cmFjeSgqdGhpcywgaXNIaWdoQWNjdXJhY3lFbmFibGVkKCkpOwotICAgICAgICBt
X3Byb3ZpZGVyLT5zdGFydFVwZGF0aW5nKCp0aGlzKTsKLSAgICB9IGVsc2UgaWYgKG1fbGFzdFBv
c2l0aW9uKQotICAgICAgICBjb25uZWN0aW9uLnNlbmQoTWVzc2FnZXM6OldlYkdlb2xvY2F0aW9u
TWFuYWdlcjo6RGlkQ2hhbmdlUG9zaXRpb24obV9sYXN0UG9zaXRpb24udmFsdWUoKSksIDApOwor
ICAgICAgICBwcm92aWRlclN0YXJ0VXBkYXRpbmcocGVyRG9tYWluRGF0YSwgcmVnaXN0cmFibGVE
b21haW4pOworICAgICAgICByZXR1cm47CisgICAgfQorICAgIGlmICghaGlnaEFjY3VyYWN5V2Fz
RW5hYmxlZCAmJiBlbmFibGVIaWdoQWNjdXJhY3kpCisgICAgICAgIHByb3ZpZGVyU2V0RW5hYmxl
ZEhpZ2hBY2N1cmFjeShwZXJEb21haW5EYXRhLCBlbmFibGVIaWdoQWNjdXJhY3kpOworCisgICAg
aWYgKHBlckRvbWFpbkRhdGEubGFzdFBvc2l0aW9uKQorICAgICAgICBwcm94eS5zZW5kKE1lc3Nh
Z2VzOjpXZWJHZW9sb2NhdGlvbk1hbmFnZXI6OkRpZENoYW5nZVBvc2l0aW9uKHJlZ2lzdHJhYmxl
RG9tYWluLCBwZXJEb21haW5EYXRhLmxhc3RQb3NpdGlvbi52YWx1ZSgpKSwgMCk7CiB9CiAKLXZv
aWQgV2ViR2VvbG9jYXRpb25NYW5hZ2VyUHJveHk6OnN0b3BVcGRhdGluZyhJUEM6OkNvbm5lY3Rp
b24mIGNvbm5lY3Rpb24pCit2b2lkIFdlYkdlb2xvY2F0aW9uTWFuYWdlclByb3h5OjpzdG9wVXBk
YXRpbmcoSVBDOjpDb25uZWN0aW9uJiBjb25uZWN0aW9uLCBjb25zdCBXZWJDb3JlOjpSZWdpc3Ry
YWJsZURvbWFpbiYgcmVnaXN0cmFibGVEb21haW4pCiB7Ci0gICAgcmVtb3ZlUmVxdWVzdGVyKCZj
b25uZWN0aW9uLmNsaWVudCgpKTsKKyAgICBzdG9wVXBkYXRpbmdXaXRoUHJveHkoY29ubmVjdGlv
blRvV2ViUHJvY2Vzc1Byb3h5KGNvbm5lY3Rpb24pLCByZWdpc3RyYWJsZURvbWFpbik7CiB9CiAK
LXZvaWQgV2ViR2VvbG9jYXRpb25NYW5hZ2VyUHJveHk6OnJlbW92ZVJlcXVlc3Rlcihjb25zdCBJ
UEM6OkNvbm5lY3Rpb246OkNsaWVudCogY2xpZW50KQordm9pZCBXZWJHZW9sb2NhdGlvbk1hbmFn
ZXJQcm94eTo6c3RvcFVwZGF0aW5nV2l0aFByb3h5KFdlYlByb2Nlc3NQcm94eSYgcHJveHksIGNv
bnN0IFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluJiByZWdpc3RyYWJsZURvbWFpbikKIHsKLSAg
ICBib29sIHdhc1VwZGF0aW5nID0gaXNVcGRhdGluZygpOwotICAgIGJvb2wgaGlnaEFjY3VyYWN5
V2FzRW5hYmxlZCA9IGlzSGlnaEFjY3VyYWN5RW5hYmxlZCgpOworICAgIGF1dG8gaXQgPSBtX3Bl
ckRvbWFpbkRhdGEuZmluZChyZWdpc3RyYWJsZURvbWFpbik7CisgICAgaWYgKGl0ID09IG1fcGVy
RG9tYWluRGF0YS5lbmQoKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgYXV0byYgcGVyRG9tYWlu
RGF0YSA9ICppdC0+dmFsdWU7CisgICAgYm9vbCB3YXNVcGRhdGluZyA9IGlzVXBkYXRpbmcocGVy
RG9tYWluRGF0YSk7CisgICAgYm9vbCBoaWdoQWNjdXJhY3lXYXNFbmFibGVkID0gaXNIaWdoQWNj
dXJhY3lFbmFibGVkKHBlckRvbWFpbkRhdGEpOwogCi0gICAgbV9oaWdoQWNjdXJhY3lSZXF1ZXN0
ZXJzLnJlbW92ZShjbGllbnQpOwotICAgIG1fdXBkYXRlUmVxdWVzdGVycy5yZW1vdmUoY2xpZW50
KTsKKyAgICBwZXJEb21haW5EYXRhLndhdGNoZXJzLnJlbW92ZShwcm94eSk7CisgICAgcGVyRG9t
YWluRGF0YS53YXRjaGVyc05lZWRpbmdIaWdoQWNjdXJhY3kucmVtb3ZlKHByb3h5KTsKIAotICAg
IGlmICh3YXNVcGRhdGluZyAmJiAhaXNVcGRhdGluZygpKQotICAgICAgICBtX3Byb3ZpZGVyLT5z
dG9wVXBkYXRpbmcoKnRoaXMpOworICAgIGlmICh3YXNVcGRhdGluZyAmJiAhaXNVcGRhdGluZyhw
ZXJEb21haW5EYXRhKSkKKyAgICAgICAgcHJvdmlkZXJTdG9wVXBkYXRpbmcocGVyRG9tYWluRGF0
YSk7CiAgICAgZWxzZSB7Ci0gICAgICAgIGJvb2wgaGlnaEFjY3VyYWN5U2hvdWxkQmVFbmFibGVk
ID0gaXNIaWdoQWNjdXJhY3lFbmFibGVkKCk7CisgICAgICAgIGJvb2wgaGlnaEFjY3VyYWN5U2hv
dWxkQmVFbmFibGVkID0gaXNIaWdoQWNjdXJhY3lFbmFibGVkKHBlckRvbWFpbkRhdGEpOwogICAg
ICAgICBpZiAoaGlnaEFjY3VyYWN5U2hvdWxkQmVFbmFibGVkICE9IGhpZ2hBY2N1cmFjeVdhc0Vu
YWJsZWQpCi0gICAgICAgICAgICBtX3Byb3ZpZGVyLT5zZXRFbmFibGVIaWdoQWNjdXJhY3koKnRo
aXMsIGhpZ2hBY2N1cmFjeVNob3VsZEJlRW5hYmxlZCk7CisgICAgICAgICAgICBwcm92aWRlclNl
dEVuYWJsZWRIaWdoQWNjdXJhY3kocGVyRG9tYWluRGF0YSwgaGlnaEFjY3VyYWN5U2hvdWxkQmVF
bmFibGVkKTsKICAgICB9CisKKyAgICBpZiAocGVyRG9tYWluRGF0YS53YXRjaGVycy5jb21wdXRl
c0VtcHR5KCkgJiYgcGVyRG9tYWluRGF0YS53YXRjaGVyc05lZWRpbmdIaWdoQWNjdXJhY3kuY29t
cHV0ZXNFbXB0eSgpKQorICAgICAgICBtX3BlckRvbWFpbkRhdGEucmVtb3ZlKGl0KTsKK30KKwor
dm9pZCBXZWJHZW9sb2NhdGlvbk1hbmFnZXJQcm94eTo6c2V0RW5hYmxlSGlnaEFjY3VyYWN5KElQ
Qzo6Q29ubmVjdGlvbiYgY29ubmVjdGlvbiwgY29uc3QgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21h
aW4mIHJlZ2lzdHJhYmxlRG9tYWluLCBib29sIGVuYWJsZWQpCit7CisgICAgc2V0RW5hYmxlSGln
aEFjY3VyYWN5V2l0aFByb3h5KGNvbm5lY3Rpb25Ub1dlYlByb2Nlc3NQcm94eShjb25uZWN0aW9u
KSwgcmVnaXN0cmFibGVEb21haW4sIGVuYWJsZWQpOwogfQogCi12b2lkIFdlYkdlb2xvY2F0aW9u
TWFuYWdlclByb3h5OjpzZXRFbmFibGVIaWdoQWNjdXJhY3koSVBDOjpDb25uZWN0aW9uJiBjb25u
ZWN0aW9uLCBib29sIGVuYWJsZWQpCit2b2lkIFdlYkdlb2xvY2F0aW9uTWFuYWdlclByb3h5Ojpz
ZXRFbmFibGVIaWdoQWNjdXJhY3lXaXRoUHJveHkoV2ViUHJvY2Vzc1Byb3h5JiBwcm94eSwgY29u
c3QgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4mIHJlZ2lzdHJhYmxlRG9tYWluLCBib29sIGVu
YWJsZWQpCiB7Ci0gICAgYm9vbCBoaWdoQWNjdXJhY3lXYXNFbmFibGVkID0gaXNIaWdoQWNjdXJh
Y3lFbmFibGVkKCk7CisgICAgYXV0byBpdCA9IG1fcGVyRG9tYWluRGF0YS5maW5kKHJlZ2lzdHJh
YmxlRG9tYWluKTsKKyAgICBBU1NFUlQoaXQgIT0gbV9wZXJEb21haW5EYXRhLmVuZCgpKTsKKyAg
ICBpZiAoaXQgPT0gbV9wZXJEb21haW5EYXRhLmVuZCgpKQorICAgICAgICByZXR1cm47CisKKyAg
ICBhdXRvJiBwZXJEb21haW5EYXRhID0gKml0LT52YWx1ZTsKKyAgICBib29sIGhpZ2hBY2N1cmFj
eVdhc0VuYWJsZWQgPSBpc0hpZ2hBY2N1cmFjeUVuYWJsZWQocGVyRG9tYWluRGF0YSk7CiAKICAg
ICBpZiAoZW5hYmxlZCkKLSAgICAgICAgbV9oaWdoQWNjdXJhY3lSZXF1ZXN0ZXJzLmFkZCgmY29u
bmVjdGlvbi5jbGllbnQoKSk7CisgICAgICAgIHBlckRvbWFpbkRhdGEud2F0Y2hlcnNOZWVkaW5n
SGlnaEFjY3VyYWN5LmFkZChwcm94eSk7CiAgICAgZWxzZQotICAgICAgICBtX2hpZ2hBY2N1cmFj
eVJlcXVlc3RlcnMucmVtb3ZlKCZjb25uZWN0aW9uLmNsaWVudCgpKTsKKyAgICAgICAgcGVyRG9t
YWluRGF0YS53YXRjaGVyc05lZWRpbmdIaWdoQWNjdXJhY3kucmVtb3ZlKHByb3h5KTsKKworICAg
IGlmIChpc1VwZGF0aW5nKHBlckRvbWFpbkRhdGEpICYmIGhpZ2hBY2N1cmFjeVdhc0VuYWJsZWQg
IT0gZW5hYmxlZCkKKyAgICAgICAgcHJvdmlkZXJTZXRFbmFibGVkSGlnaEFjY3VyYWN5KHBlckRv
bWFpbkRhdGEsIGVuYWJsZWQpOworfQorCitib29sIFdlYkdlb2xvY2F0aW9uTWFuYWdlclByb3h5
Ojppc1VwZGF0aW5nKGNvbnN0IFBlckRvbWFpbkRhdGEmIHBlckRvbWFpbkRhdGEpIGNvbnN0Cit7
CisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKKyAgICBpZiAoIW1fY2xpZW50UHJvdmlkZXIpCisg
ICAgICAgIHJldHVybiAhcGVyRG9tYWluRGF0YS53YXRjaGVycy5jb21wdXRlc0VtcHR5KCk7Cisj
ZWxzZQorICAgIFVOVVNFRF9QQVJBTShwZXJEb21haW5EYXRhKTsKKyNlbmRpZgorCisgICAgZm9y
IChhdXRvJiBwZXJEb21haW5EYXRhIDogbV9wZXJEb21haW5EYXRhLnZhbHVlcygpKSB7CisgICAg
ICAgIGlmICghcGVyRG9tYWluRGF0YS0+d2F0Y2hlcnMuY29tcHV0ZXNFbXB0eSgpKQorICAgICAg
ICAgICAgcmV0dXJuIHRydWU7CisgICAgfQorICAgIHJldHVybiBmYWxzZTsKK30KKworCitib29s
IFdlYkdlb2xvY2F0aW9uTWFuYWdlclByb3h5Ojppc0hpZ2hBY2N1cmFjeUVuYWJsZWQoY29uc3Qg
UGVyRG9tYWluRGF0YSYgcGVyRG9tYWluRGF0YSkgY29uc3QKK3sKKyNpZiBQTEFURk9STShJT1Nf
RkFNSUxZKQorICAgIGlmICghbV9jbGllbnRQcm92aWRlcikKKyAgICAgICAgcmV0dXJuICFwZXJE
b21haW5EYXRhLndhdGNoZXJzTmVlZGluZ0hpZ2hBY2N1cmFjeS5jb21wdXRlc0VtcHR5KCk7Cisj
ZWxzZQorICAgIFVOVVNFRF9QQVJBTShwZXJEb21haW5EYXRhKTsKKyNlbmRpZgorCisgICAgZm9y
IChhdXRvJiBkYXRhIDogbV9wZXJEb21haW5EYXRhLnZhbHVlcygpKSB7CisgICAgICAgIGlmICgh
ZGF0YS0+d2F0Y2hlcnNOZWVkaW5nSGlnaEFjY3VyYWN5LmNvbXB1dGVzRW1wdHkoKSkKKyAgICAg
ICAgICAgIHJldHVybiB0cnVlOworICAgIH0KKyAgICByZXR1cm4gZmFsc2U7Cit9CisKK3ZvaWQg
V2ViR2VvbG9jYXRpb25NYW5hZ2VyUHJveHk6OnByb3ZpZGVyU3RhcnRVcGRhdGluZyhQZXJEb21h
aW5EYXRhJiBwZXJEb21haW5EYXRhLCBjb25zdCBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiYg
cmVnaXN0cmFibGVEb21haW4pCit7CisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKKyAgICBpZiAo
IW1fY2xpZW50UHJvdmlkZXIpIHsKKyAgICAgICAgQVNTRVJUKCFwZXJEb21haW5EYXRhLnByb3Zp
ZGVyKTsKKyAgICAgICAgcGVyRG9tYWluRGF0YS5wcm92aWRlciA9IG1ha2VVbmlxdWU8V2ViQ29y
ZTo6Q29yZUxvY2F0aW9uR2VvbG9jYXRpb25Qcm92aWRlcj4ocmVnaXN0cmFibGVEb21haW4sICp0
aGlzKTsKKyAgICAgICAgcGVyRG9tYWluRGF0YS5wcm92aWRlci0+c2V0RW5hYmxlSGlnaEFjY3Vy
YWN5KCFwZXJEb21haW5EYXRhLndhdGNoZXJzTmVlZGluZ0hpZ2hBY2N1cmFjeS5jb21wdXRlc0Vt
cHR5KCkpOworICAgICAgICBwZXJEb21haW5EYXRhLnByb3ZpZGVyLT5zdGFydCgpOworICAgICAg
ICByZXR1cm47CisgICAgfQorI2Vsc2UKKyAgICBVTlVTRURfUEFSQU0ocmVnaXN0cmFibGVEb21h
aW4pOworICAgIGlmICghbV9jbGllbnRQcm92aWRlcikKKyAgICAgICAgcmV0dXJuOworI2VuZGlm
CisKKyAgICBtX2NsaWVudFByb3ZpZGVyLT5zZXRFbmFibGVIaWdoQWNjdXJhY3koKnRoaXMsIGlz
SGlnaEFjY3VyYWN5RW5hYmxlZChwZXJEb21haW5EYXRhKSk7CisgICAgbV9jbGllbnRQcm92aWRl
ci0+c3RhcnRVcGRhdGluZygqdGhpcyk7Cit9CisKK3ZvaWQgV2ViR2VvbG9jYXRpb25NYW5hZ2Vy
UHJveHk6OnByb3ZpZGVyU3RvcFVwZGF0aW5nKFBlckRvbWFpbkRhdGEmIHBlckRvbWFpbkRhdGEp
Cit7CisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKKyAgICBpZiAoIW1fY2xpZW50UHJvdmlkZXIp
IHsKKyAgICAgICAgcGVyRG9tYWluRGF0YS5wcm92aWRlci0+c3RvcCgpOworICAgICAgICByZXR1
cm47CisgICAgfQorI2Vsc2UKKyAgICBVTlVTRURfUEFSQU0ocGVyRG9tYWluRGF0YSk7CisgICAg
aWYgKCFtX2NsaWVudFByb3ZpZGVyKQorICAgICAgICByZXR1cm47CisjZW5kaWYKKworICAgIG1f
Y2xpZW50UHJvdmlkZXItPnN0b3BVcGRhdGluZygqdGhpcyk7Cit9CisKK3ZvaWQgV2ViR2VvbG9j
YXRpb25NYW5hZ2VyUHJveHk6OnByb3ZpZGVyU2V0RW5hYmxlZEhpZ2hBY2N1cmFjeShQZXJEb21h
aW5EYXRhJiBwZXJEb21haW5EYXRhLCBib29sIGVuYWJsZWQpCit7CisjaWYgUExBVEZPUk0oSU9T
X0ZBTUlMWSkKKyAgICBpZiAoIW1fY2xpZW50UHJvdmlkZXIpIHsKKyAgICAgICAgcGVyRG9tYWlu
RGF0YS5wcm92aWRlci0+c2V0RW5hYmxlSGlnaEFjY3VyYWN5KGVuYWJsZWQpOworICAgICAgICBy
ZXR1cm47CisgICAgfQorI2Vsc2UKKyAgICBVTlVTRURfUEFSQU0ocGVyRG9tYWluRGF0YSk7Cisg
ICAgaWYgKCFtX2NsaWVudFByb3ZpZGVyKQorICAgICAgICByZXR1cm47CisjZW5kaWYKIAotICAg
IGJvb2wgaGlnaEFjY3VyYWN5U2hvdWxkQmVFbmFibGVkID0gaXNIaWdoQWNjdXJhY3lFbmFibGVk
KCk7Ci0gICAgaWYgKGlzVXBkYXRpbmcoKSAmJiBoaWdoQWNjdXJhY3lXYXNFbmFibGVkICE9IGhp
Z2hBY2N1cmFjeVNob3VsZEJlRW5hYmxlZCkKLSAgICAgICAgbV9wcm92aWRlci0+c2V0RW5hYmxl
SGlnaEFjY3VyYWN5KCp0aGlzLCBoaWdoQWNjdXJhY3lTaG91bGRCZUVuYWJsZWQpOworICAgIG1f
Y2xpZW50UHJvdmlkZXItPnNldEVuYWJsZUhpZ2hBY2N1cmFjeSgqdGhpcywgZW5hYmxlZCk7CiB9
CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvV2ViR2VvbG9jYXRpb25NYW5hZ2VyUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL1dlYkdlb2xvY2F0aW9uTWFuYWdlclByb3h5LmgKaW5kZXggNzQ5MzZlNDVhMGQ4MzgzYThi
NGIzZDZkNTc4YzliZDIyYmUzZmE1ZS4uZjlhMGNhNjQ5NzhhNDljOTEwMDBhZGYxYzRjYjRhMDEx
Mjg3ZTEyZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViR2VvbG9jYXRp
b25NYW5hZ2VyUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJHZW9sb2Nh
dGlvbk1hbmFnZXJQcm94eS5oCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykg
MjAxMSwgMjAxMiwgMjAxMyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5
cmlnaHQgKEMpIDIwMTEtMjAyMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgog
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTMxLDkgKzMxLDE1IEBACiAjaW5jbHVkZSAi
V2ViQ29udGV4dFN1cHBsZW1lbnQuaCIKICNpbmNsdWRlICJXZWJQYWdlUHJveHlJZGVudGlmaWVy
LmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9HZW9sb2NhdGlvblBvc2l0aW9uRGF0YS5oPgotI2luY2x1
ZGUgPHd0Zi9IYXNoU2V0Lmg+CisjaW5jbHVkZSA8V2ViQ29yZS9SZWdpc3RyYWJsZURvbWFpbi5o
PgorI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CisjaW5jbHVkZSA8d3RmL1dlYWtIYXNoU2V0Lmg+
CiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAKKyNpZiBQTEFURk9STShJT1NfRkFN
SUxZKQorI2luY2x1ZGUgPFdlYkNvcmUvQ29yZUxvY2F0aW9uR2VvbG9jYXRpb25Qcm92aWRlci5o
PgorI2VuZGlmCisKIG5hbWVzcGFjZSBBUEkgewogY2xhc3MgR2VvbG9jYXRpb25Qcm92aWRlcjsK
IH0KQEAgLTQzLDExICs0OSwxNiBAQCBuYW1lc3BhY2UgV2ViS2l0IHsKIGNsYXNzIFdlYkdlb2xv
Y2F0aW9uUG9zaXRpb247CiBjbGFzcyBXZWJQcm9jZXNzUG9vbDsKIAotY2xhc3MgV2ViR2VvbG9j
YXRpb25NYW5hZ2VyUHJveHkgOiBwdWJsaWMgQVBJOjpPYmplY3RJbXBsPEFQSTo6T2JqZWN0OjpU
eXBlOjpHZW9sb2NhdGlvbk1hbmFnZXI+LCBwdWJsaWMgV2ViQ29udGV4dFN1cHBsZW1lbnQsIHBy
aXZhdGUgSVBDOjpNZXNzYWdlUmVjZWl2ZXIgeworY2xhc3MgV2ViR2VvbG9jYXRpb25NYW5hZ2Vy
UHJveHkgOiBwdWJsaWMgQVBJOjpPYmplY3RJbXBsPEFQSTo6T2JqZWN0OjpUeXBlOjpHZW9sb2Nh
dGlvbk1hbmFnZXI+LCBwdWJsaWMgV2ViQ29udGV4dFN1cHBsZW1lbnQsIHByaXZhdGUgSVBDOjpN
ZXNzYWdlUmVjZWl2ZXIKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZKQorICAgICwgcHVibGljIFdl
YkNvcmU6OkNvcmVMb2NhdGlvbkdlb2xvY2F0aW9uUHJvdmlkZXI6OkNsaWVudAorI2VuZGlmCit7
CiBwdWJsaWM6CiAgICAgc3RhdGljIGNvbnN0IGNoYXIqIHN1cHBsZW1lbnROYW1lKCk7CiAKICAg
ICBzdGF0aWMgUmVmPFdlYkdlb2xvY2F0aW9uTWFuYWdlclByb3h5PiBjcmVhdGUoV2ViUHJvY2Vz
c1Bvb2wqKTsKKyAgICB+V2ViR2VvbG9jYXRpb25NYW5hZ2VyUHJveHkoKTsKIAogICAgIHZvaWQg
c2V0UHJvdmlkZXIoc3RkOjp1bmlxdWVfcHRyPEFQSTo6R2VvbG9jYXRpb25Qcm92aWRlcj4mJik7
CiAKQEAgLTU2LDM2ICs2Nyw1OSBAQCBwdWJsaWM6CiAjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkK
ICAgICB2b2lkIHJlc2V0UGVybWlzc2lvbnMoKTsKICNlbmRpZgotICAgIGNvbnN0IHN0ZDo6b3B0
aW9uYWw8V2ViQ29yZTo6R2VvbG9jYXRpb25Qb3NpdGlvbkRhdGE+JiBsYXN0UG9zaXRpb24oKSBj
b25zdCB7IHJldHVybiBtX2xhc3RQb3NpdGlvbjsgfQogCiAgICAgdXNpbmcgQVBJOjpPYmplY3Q6
OnJlZjsKICAgICB1c2luZyBBUEk6Ok9iamVjdDo6ZGVyZWY7CiAKKyAgICB2b2lkIHdlYlByb2Nl
c3NJc0dvaW5nQXdheShXZWJQcm9jZXNzUHJveHkmKTsKKwogcHJpdmF0ZToKICAgICBleHBsaWNp
dCBXZWJHZW9sb2NhdGlvbk1hbmFnZXJQcm94eShXZWJQcm9jZXNzUG9vbCopOwogCiAgICAgLy8g
V2ViQ29udGV4dFN1cHBsZW1lbnQKICAgICB2b2lkIHByb2Nlc3NQb29sRGVzdHJveWVkKCkgb3Zl
cnJpZGU7Ci0gICAgdm9pZCBwcm9jZXNzRGlkQ2xvc2UoV2ViUHJvY2Vzc1Byb3h5Kikgb3ZlcnJp
ZGU7CiAgICAgdm9pZCByZWZXZWJDb250ZXh0U3VwcGxlbWVudCgpIG92ZXJyaWRlOwogICAgIHZv
aWQgZGVyZWZXZWJDb250ZXh0U3VwcGxlbWVudCgpIG92ZXJyaWRlOwogCiAgICAgLy8gSVBDOjpN
ZXNzYWdlUmVjZWl2ZXIKICAgICB2b2lkIGRpZFJlY2VpdmVNZXNzYWdlKElQQzo6Q29ubmVjdGlv
biYsIElQQzo6RGVjb2RlciYpIG92ZXJyaWRlOwogCi0gICAgYm9vbCBpc1VwZGF0aW5nKCkgY29u
c3QgeyByZXR1cm4gIW1fdXBkYXRlUmVxdWVzdGVycy5pc0VtcHR5KCk7IH0KLSAgICBib29sIGlz
SGlnaEFjY3VyYWN5RW5hYmxlZCgpIGNvbnN0IHsgcmV0dXJuICFtX2hpZ2hBY2N1cmFjeVJlcXVl
c3RlcnMuaXNFbXB0eSgpOyB9CisgICAgLy8gSVBDIG1lc3NhZ2VzLgorICAgIHZvaWQgc3RhcnRV
cGRhdGluZyhJUEM6OkNvbm5lY3Rpb24mLCBjb25zdCBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFp
biYsIFdlYlBhZ2VQcm94eUlkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgYXV0aG9yaXphdGlvblRv
a2VuLCBib29sIGVuYWJsZUhpZ2hBY2N1cmFjeSk7CisgICAgdm9pZCBzdG9wVXBkYXRpbmcoSVBD
OjpDb25uZWN0aW9uJiwgY29uc3QgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4mKTsKKyAgICB2
b2lkIHNldEVuYWJsZUhpZ2hBY2N1cmFjeShJUEM6OkNvbm5lY3Rpb24mLCBjb25zdCBXZWJDb3Jl
OjpSZWdpc3RyYWJsZURvbWFpbiYsIGJvb2wpOworCisgICAgdm9pZCBzdGFydFVwZGF0aW5nV2l0
aFByb3h5KFdlYlByb2Nlc3NQcm94eSYsIGNvbnN0IFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWlu
JiwgV2ViUGFnZVByb3h5SWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiBhdXRob3JpemF0aW9uVG9r
ZW4sIGJvb2wgZW5hYmxlSGlnaEFjY3VyYWN5KTsKKyAgICB2b2lkIHN0b3BVcGRhdGluZ1dpdGhQ
cm94eShXZWJQcm9jZXNzUHJveHkmLCBjb25zdCBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiYp
OworICAgIHZvaWQgc2V0RW5hYmxlSGlnaEFjY3VyYWN5V2l0aFByb3h5KFdlYlByb2Nlc3NQcm94
eSYsIGNvbnN0IFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluJiwgYm9vbCk7CiAKLSAgICB2b2lk
IHN0YXJ0VXBkYXRpbmcoSVBDOjpDb25uZWN0aW9uJiwgV2ViUGFnZVByb3h5SWRlbnRpZmllciwg
Y29uc3QgU3RyaW5nJiBhdXRob3JpemF0aW9uVG9rZW4pOwotICAgIHZvaWQgc3RvcFVwZGF0aW5n
KElQQzo6Q29ubmVjdGlvbiYpOwotICAgIHZvaWQgcmVtb3ZlUmVxdWVzdGVyKGNvbnN0IElQQzo6
Q29ubmVjdGlvbjo6Q2xpZW50Kik7Ci0gICAgdm9pZCBzZXRFbmFibGVIaWdoQWNjdXJhY3koSVBD
OjpDb25uZWN0aW9uJiwgYm9vbCk7CisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKKyAgICAvLyBD
b3JlTG9jYXRpb25HZW9sb2NhdGlvblByb3ZpZGVyOjpDbGllbnQKKyAgICB2b2lkIHBvc2l0aW9u
Q2hhbmdlZChjb25zdCBTdHJpbmcmIHdlYnNpdGVJZGVudGlmaWVyLCBXZWJDb3JlOjpHZW9sb2Nh
dGlvblBvc2l0aW9uRGF0YSYmKSBmaW5hbDsKKyAgICB2b2lkIGVycm9yT2NjdXJyZWQoY29uc3Qg
U3RyaW5nJiB3ZWJzaXRlSWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiBlcnJvck1lc3NhZ2UpIGZp
bmFsOworICAgIHZvaWQgcmVzZXRHZW9sb2NhdGlvbihjb25zdCBTdHJpbmcmIHdlYnNpdGVJZGVu
dGlmaWVyKSBmaW5hbDsKKyNlbmRpZgorCisgICAgc3RydWN0IFBlckRvbWFpbkRhdGEgeworICAg
ICAgICBXVEZfTUFLRV9TVFJVQ1RfRkFTVF9BTExPQ0FURUQ7CisgICAgICAgIFdlYWtIYXNoU2V0
PFdlYlByb2Nlc3NQcm94eT4gd2F0Y2hlcnM7CisgICAgICAgIFdlYWtIYXNoU2V0PFdlYlByb2Nl
c3NQcm94eT4gd2F0Y2hlcnNOZWVkaW5nSGlnaEFjY3VyYWN5OworICAgICAgICBzdGQ6Om9wdGlv
bmFsPFdlYkNvcmU6Okdlb2xvY2F0aW9uUG9zaXRpb25EYXRhPiBsYXN0UG9zaXRpb247CisKKyAg
ICAgICAgLy8gRklYTUU6IFVzZSBmb3IgYWxsIENvY29hIHBvcnRzLgorI2lmIFBMQVRGT1JNKElP
U19GQU1JTFkpCisgICAgICAgIHN0ZDo6dW5pcXVlX3B0cjxXZWJDb3JlOjpDb3JlTG9jYXRpb25H
ZW9sb2NhdGlvblByb3ZpZGVyPiBwcm92aWRlcjsKKyNlbmRpZgorICAgIH07CiAKLSAgICBIYXNo
U2V0PGNvbnN0IElQQzo6Q29ubmVjdGlvbjo6Q2xpZW50Kj4gbV91cGRhdGVSZXF1ZXN0ZXJzOwot
ICAgIEhhc2hTZXQ8Y29uc3QgSVBDOjpDb25uZWN0aW9uOjpDbGllbnQqPiBtX2hpZ2hBY2N1cmFj
eVJlcXVlc3RlcnM7CisgICAgYm9vbCBpc1VwZGF0aW5nKGNvbnN0IFBlckRvbWFpbkRhdGEmKSBj
b25zdDsKKyAgICBib29sIGlzSGlnaEFjY3VyYWN5RW5hYmxlZChjb25zdCBQZXJEb21haW5EYXRh
JikgY29uc3Q7CisgICAgdm9pZCBwcm92aWRlclN0YXJ0VXBkYXRpbmcoUGVyRG9tYWluRGF0YSYs
IGNvbnN0IFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluJik7CisgICAgdm9pZCBwcm92aWRlclN0
b3BVcGRhdGluZyhQZXJEb21haW5EYXRhJik7CisgICAgdm9pZCBwcm92aWRlclNldEVuYWJsZWRI
aWdoQWNjdXJhY3koUGVyRG9tYWluRGF0YSYsIGJvb2wgZW5hYmxlZCk7CiAKLSAgICBzdGQ6OnVu
aXF1ZV9wdHI8QVBJOjpHZW9sb2NhdGlvblByb3ZpZGVyPiBtX3Byb3ZpZGVyOwotICAgIHN0ZDo6
b3B0aW9uYWw8V2ViQ29yZTo6R2VvbG9jYXRpb25Qb3NpdGlvbkRhdGE+IG1fbGFzdFBvc2l0aW9u
OworICAgIEhhc2hNYXA8V2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4sIHN0ZDo6dW5pcXVlX3B0
cjxQZXJEb21haW5EYXRhPj4gbV9wZXJEb21haW5EYXRhOworICAgIHN0ZDo6dW5pcXVlX3B0cjxB
UEk6Okdlb2xvY2F0aW9uUHJvdmlkZXI+IG1fY2xpZW50UHJvdmlkZXI7CiB9OwogCiB9IC8vIG5h
bWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkdl
b2xvY2F0aW9uTWFuYWdlclByb3h5Lm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvV2ViR2VvbG9jYXRpb25NYW5hZ2VyUHJveHkubWVzc2FnZXMuaW4KaW5kZXggZTVlOWMyN2Qx
NGE1ZmI3MjZmY2MyYzgxZmYzZTE2NWVhM2U4NDBiZS4uOTA0MWE5MGMyNTBmOGFkZDY4YmIxM2Iz
YWJiNTRiZWI2NmNiMmQyNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vi
R2VvbG9jYXRpb25NYW5hZ2VyUHJveHkubWVzc2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvV2ViR2VvbG9jYXRpb25NYW5hZ2VyUHJveHkubWVzc2FnZXMuaW4KQEAgLTIxLDcg
KzIxLDcgQEAKICMgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KIAogbWVzc2FnZXMgLT4gV2ViR2VvbG9jYXRpb25NYW5h
Z2VyUHJveHkgewotICAgIFN0YXJ0VXBkYXRpbmcoV2ViS2l0OjpXZWJQYWdlUHJveHlJZGVudGlm
aWVyIHBhZ2VQcm94eUlELCBTdHJpbmcgYXV0aG9yaXphdGlvblRva2VuKSBXYW50c0Nvbm5lY3Rp
b24KLSAgICBTdG9wVXBkYXRpbmcoKSBXYW50c0Nvbm5lY3Rpb24KLSAgICBTZXRFbmFibGVIaWdo
QWNjdXJhY3koYm9vbCBlbmFibGVkKSBXYW50c0Nvbm5lY3Rpb24KKyAgICBTdGFydFVwZGF0aW5n
KFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluIHJlZ2lzdHJhYmxlRG9tYWluLCBXZWJLaXQ6Oldl
YlBhZ2VQcm94eUlkZW50aWZpZXIgcGFnZVByb3h5SUQsIFN0cmluZyBhdXRob3JpemF0aW9uVG9r
ZW4sIGJvb2wgZW5hYmxlSGlnaEFjY3VyYWN5KSBXYW50c0Nvbm5lY3Rpb24KKyAgICBTdG9wVXBk
YXRpbmcoV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4gcmVnaXN0cmFibGVEb21haW4pIFdhbnRz
Q29ubmVjdGlvbgorICAgIFNldEVuYWJsZUhpZ2hBY2N1cmFjeShXZWJDb3JlOjpSZWdpc3RyYWJs
ZURvbWFpbiByZWdpc3RyYWJsZURvbWFpbiwgYm9vbCBlbmFibGVkKSBXYW50c0Nvbm5lY3Rpb24K
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmNw
cCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmNwcAppbmRleCBmNjBk
M2VjZDJjYTZmMGZjNzM2NzBjMzlkYTJhYjc2MDAzNWYyZjc0Li5mYTE3NDJjZjMyZGE5OTUyNzMy
M2RmYzdjOGJmMGE3OTA2MzA0MWZlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9XZWJQcm9jZXNzUG9vbC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJv
Y2Vzc1Bvb2wuY3BwCkBAIC00MzEsOSArNDMxLDYgQEAgdm9pZCBXZWJQcm9jZXNzUG9vbDo6c2Ny
ZWVuUHJvcGVydGllc1N0YXRlQ2hhbmdlZCgpCiAKIHZvaWQgV2ViUHJvY2Vzc1Bvb2w6Om5ldHdv
cmtQcm9jZXNzRGlkVGVybWluYXRlKE5ldHdvcmtQcm9jZXNzUHJveHkmIG5ldHdvcmtQcm9jZXNz
UHJveHksIE5ldHdvcmtQcm9jZXNzUHJveHk6OlRlcm1pbmF0aW9uUmVhc29uIHJlYXNvbikKIHsK
LSAgICBmb3IgKGF1dG8mIHN1cHBsZW1lbnQgOiBtX3N1cHBsZW1lbnRzLnZhbHVlcygpKQotICAg
ICAgICBzdXBwbGVtZW50LT5wcm9jZXNzRGlkQ2xvc2UoJm5ldHdvcmtQcm9jZXNzUHJveHkpOwot
CiAgICAgaWYgKHJlYXNvbiA9PSBOZXR3b3JrUHJvY2Vzc1Byb3h5OjpUZXJtaW5hdGlvblJlYXNv
bjo6Q3Jhc2gpCiAgICAgICAgIG1fY2xpZW50Lm5ldHdvcmtQcm9jZXNzRGlkQ3Jhc2godGhpcyk7
CiAKQEAgLTEwNTcsNyArMTA1NCw3IEBAIHZvaWQgV2ViUHJvY2Vzc1Bvb2w6OmRpc2Nvbm5lY3RQ
cm9jZXNzKFdlYlByb2Nlc3NQcm94eSYgcHJvY2VzcykKICAgICBpZiAocHJvY2Vzcy5pc1J1bm5p
bmdXb3JrZXJzKCkpCiAgICAgICAgIHJlbW92ZUZyb21SZW1vdGVXb3JrZXJQcm9jZXNzZXMocHJv
Y2Vzcyk7CiAKLSAgICBzdGF0aWNfY2FzdDxXZWJDb250ZXh0U3VwcGxlbWVudCo+KHN1cHBsZW1l
bnQ8V2ViR2VvbG9jYXRpb25NYW5hZ2VyUHJveHk+KCkpLT5wcm9jZXNzRGlkQ2xvc2UoJnByb2Nl
c3MpOworICAgIHN1cHBsZW1lbnQ8V2ViR2VvbG9jYXRpb25NYW5hZ2VyUHJveHk+KCktPndlYlBy
b2Nlc3NJc0dvaW5nQXdheShwcm9jZXNzKTsKIAogICAgIG1fcHJvY2Vzc2VzLnJlbW92ZUZpcnN0
KHByb2Nlc3MpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tH
ZW9sb2NhdGlvblByb3ZpZGVySU9TLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dL
R2VvbG9jYXRpb25Qcm92aWRlcklPUy5tbQppbmRleCBmNWU5ZmQ3YmMzNDEyOTdhZjdiMjRlNjc0
MTYzMzJjZDk2YWQ3MzljLi5lNjM4YWQ5YzRlOGI3MzhiZjE2NTE0ZDcxOWRjMWJlOGE3NmI1OWQ0
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tHZW9sb2NhdGlvblBy
b3ZpZGVySU9TLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XS0dlb2xvY2F0
aW9uUHJvdmlkZXJJT1MubW0KQEAgLTUxLDcgKzUxLDYgQEAKICNpbXBvcnQgPHd0Zi9VUkwuaD4K
IAogLy8gRklYTUU6IFJlbW92ZSB1c2Ugb2YgV2ViS2l0MSBmcm9tIFdlYktpdDIKLSNpbXBvcnQg
PFdlYktpdC9XZWJHZW9sb2NhdGlvbkNvcmVMb2NhdGlvblByb3ZpZGVyLmg+CiAjaW1wb3J0IDxX
ZWJLaXQvV2ViQWxsb3dEZW55UG9saWN5TGlzdGVuZXIuaD4KIAogQUxMT1dfREVQUkVDQVRFRF9E
RUNMQVJBVElPTlNfQkVHSU4KQEAgLTU5LDkgKzU4LDYgQEAgQUxMT1dfREVQUkVDQVRFRF9ERUNM
QVJBVElPTlNfQkVHSU4KIEBpbnRlcmZhY2UgV0tHZW9sb2NhdGlvblByb3ZpZGVySU9TIChfV0tH
ZW9sb2NhdGlvbkNvcmVMb2NhdGlvbkxpc3RlbmVyKSA8X1dLR2VvbG9jYXRpb25Db3JlTG9jYXRp
b25MaXN0ZW5lcj4KIEBlbmQKIAotQGludGVyZmFjZSBXS0xlZ2FjeUNvcmVMb2NhdGlvblByb3Zp
ZGVyIDogTlNPYmplY3Q8X1dLR2VvbG9jYXRpb25Db3JlTG9jYXRpb25Qcm92aWRlciwgV2ViR2Vv
bG9jYXRpb25Db3JlTG9jYXRpb25VcGRhdGVMaXN0ZW5lcj4KLUBlbmQKLQogQGludGVyZmFjZSBX
S1dlYkFsbG93RGVueVBvbGljeUxpc3RlbmVyIDogTlNPYmplY3Q8V2ViQWxsb3dEZW55UG9saWN5
TGlzdGVuZXI+CiAtIChpZClpbml0V2l0aENvbXBsZXRpb25IYW5kbGVyOihGdW5jdGlvbjx2b2lk
KGJvb2wpPiYmKWNvbXBsZXRpb25IYW5kbGVyOwogLSAodm9pZClkZW55T25seVRoaXNSZXF1ZXN0
IE5PX1JFVFVSTl9EVUVfVE9fQVNTRVJUOwpAQCAtMTQ2LDI1ICsxNDIsNDIgQEAgLSAoaWQpaW5p
dFdpdGhQcm9jZXNzUG9vbDooV2ViS2l0OjpXZWJQcm9jZXNzUG9vbCYpcHJvY2Vzc1Bvb2wKICAg
ICBzZWxmID0gW3N1cGVyIGluaXRdOwogICAgIGlmICghc2VsZikKICAgICAgICAgcmV0dXJuIG5p
bDsKLSAgICBfZ2VvbG9jYXRpb25NYW5hZ2VyID0gcHJvY2Vzc1Bvb2wuc3VwcGxlbWVudDxXZWJL
aXQ6OldlYkdlb2xvY2F0aW9uTWFuYWdlclByb3h5PigpOwotICAgIFdLR2VvbG9jYXRpb25Qcm92
aWRlclYxIHByb3ZpZGVyQ2FsbGJhY2sgPSB7Ci0gICAgICAgIHsgMSwgc2VsZiB9LAotICAgICAg
ICBzdGFydFVwZGF0aW5nQ2FsbGJhY2ssCi0gICAgICAgIHN0b3BVcGRhdGluZ0NhbGxiYWNrLAot
ICAgICAgICBzZXRFbmFibGVIaWdoQWNjdXJhY3kKLSAgICB9OwotICAgIFdLR2VvbG9jYXRpb25N
YW5hZ2VyU2V0UHJvdmlkZXIodG9BUEkoX2dlb2xvY2F0aW9uTWFuYWdlci5nZXQoKSksICZwcm92
aWRlckNhbGxiYWNrLmJhc2UpOwotICAgIF9jb3JlTG9jYXRpb25Qcm92aWRlciA9IHdyYXBwZXIo
cHJvY2Vzc1Bvb2wpLl9jb3JlTG9jYXRpb25Qcm92aWRlciA/OiBhZG9wdE5TKHN0YXRpY19jYXN0
PGlkIDxfV0tHZW9sb2NhdGlvbkNvcmVMb2NhdGlvblByb3ZpZGVyPj4oW1tXS0xlZ2FjeUNvcmVM
b2NhdGlvblByb3ZpZGVyIGFsbG9jXSBpbml0XSkpOwotICAgIFtfY29yZUxvY2F0aW9uUHJvdmlk
ZXIgc2V0TGlzdGVuZXI6c2VsZl07CisKKyAgICAvLyBPbiBpT1MsIFdlYktpdCBub3JtYWxseSBw
cm92aWRlcyB0aGUgbG9jYXRpb24uIEhvd2V2ZXIsIGlmIHRoZSBjbGllbnQgc2V0cyBhIGNvcmVM
b2NhdGlvblByb3ZpZGVyLCB0aGVuIHdlIHVzZSB0aGF0IG9uZSBpbnN0ZWFkLgorICAgIC8vIFRo
aXMgaXMgdXNlZnVsIGZvciBXZWJLaXRUZXN0UnVubmVyIHRvIHByb3ZpZGUgYSBkdW1teSBnZW9s
b2NhdGlvbiBwcm92aWRlci4gSXQgaXMgYWxzbyB1c2VkIGJ5IGNlcnRhaW4gYXBwcyB0byBkZW55
IGFsbAorICAgIC8vIGdlb2xvY2F0aW9uIGF1dGhvcml6YXRpb24gYXMgYSB3YXkgdG8gZGlzYWJs
ZSBzdXBwb3J0IGZvciBnZW9sb2NhdGlvbi4KKyAgICBpZiAod3JhcHBlcihwcm9jZXNzUG9vbCku
X2NvcmVMb2NhdGlvblByb3ZpZGVyKSB7CisgICAgICAgIF9nZW9sb2NhdGlvbk1hbmFnZXIgPSBw
cm9jZXNzUG9vbC5zdXBwbGVtZW50PFdlYktpdDo6V2ViR2VvbG9jYXRpb25NYW5hZ2VyUHJveHk+
KCk7CisgICAgICAgIFdLR2VvbG9jYXRpb25Qcm92aWRlclYxIHByb3ZpZGVyQ2FsbGJhY2sgPSB7
CisgICAgICAgICAgICB7IDEsIHNlbGYgfSwKKyAgICAgICAgICAgIHN0YXJ0VXBkYXRpbmdDYWxs
YmFjaywKKyAgICAgICAgICAgIHN0b3BVcGRhdGluZ0NhbGxiYWNrLAorICAgICAgICAgICAgc2V0
RW5hYmxlSGlnaEFjY3VyYWN5CisgICAgICAgIH07CisgICAgICAgIFdLR2VvbG9jYXRpb25NYW5h
Z2VyU2V0UHJvdmlkZXIodG9BUEkoX2dlb2xvY2F0aW9uTWFuYWdlci5nZXQoKSksICZwcm92aWRl
ckNhbGxiYWNrLmJhc2UpOworICAgICAgICBfY29yZUxvY2F0aW9uUHJvdmlkZXIgPSB3cmFwcGVy
KHByb2Nlc3NQb29sKS5fY29yZUxvY2F0aW9uUHJvdmlkZXI7CisgICAgICAgIFtfY29yZUxvY2F0
aW9uUHJvdmlkZXIgc2V0TGlzdGVuZXI6c2VsZl07CisgICAgfQogICAgIHJldHVybiBzZWxmOwog
fQogCiAtICh2b2lkKWRlY2lkZVBvbGljeUZvckdlb2xvY2F0aW9uUmVxdWVzdEZyb21PcmlnaW46
KFdlYktpdDo6RnJhbWVJbmZvRGF0YSYmKWZyYW1lSW5mbyBjb21wbGV0aW9uSGFuZGxlcjooRnVu
Y3Rpb248dm9pZChib29sKT4mJiljb21wbGV0aW9uSGFuZGxlciB2aWV3OihXS1dlYlZpZXcgKilj
b250ZW50VmlldwogewotICAgIC8vIFN0ZXAgMTogYXNrIHRoZSB1c2VyIGlmIHRoZSBhcHAgY2Fu
IHVzZSBHZW9sb2NhdGlvbi4KKyAgICBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiByZWdpc3Ry
YWJsZURvbWFpbihmcmFtZUluZm8uc2VjdXJpdHlPcmlnaW4pOwogICAgIEdlb2xvY2F0aW9uUmVx
dWVzdERhdGEgZ2VvbG9jYXRpb25SZXF1ZXN0RGF0YSB7IFtjb250ZW50VmlldyBVUkxdLCBXVEZN
b3ZlKGZyYW1lSW5mbyksIFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpLCBjb250ZW50VmlldyB9
OwogICAgIF9yZXF1ZXN0c1dhaXRpbmdGb3JDb3JlTG9jYXRpb25BdXRob3JpemF0aW9uLmFwcGVu
ZChXVEZNb3ZlKGdlb2xvY2F0aW9uUmVxdWVzdERhdGEpKTsKLSAgICBbX2NvcmVMb2NhdGlvblBy
b3ZpZGVyIHJlcXVlc3RHZW9sb2NhdGlvbkF1dGhvcml6YXRpb25dOworICAgIGlmIChfY29yZUxv
Y2F0aW9uUHJvdmlkZXIpIHsKKyAgICAgICAgLy8gU3RlcCAxOiBhc2sgdGhlIHVzZXIgaWYgdGhl
IGFwcCBjYW4gdXNlIEdlb2xvY2F0aW9uLgorICAgICAgICBbX2NvcmVMb2NhdGlvblByb3ZpZGVy
IHJlcXVlc3RHZW9sb2NhdGlvbkF1dGhvcml6YXRpb25dOworICAgIH0gZWxzZSB7CisgICAgICAg
IC8vIFN0ZXAgMTogYXNrIENvcmVMb2NhdGlvbiBpZiB0aGUgYXBwIGNhbiB1c2UgR2VvbG9jYXRp
b24uCisgICAgICAgIFdlYkNvcmU6OkNvcmVMb2NhdGlvbkdlb2xvY2F0aW9uUHJvdmlkZXI6OnJl
cXVlc3RBdXRob3JpemF0aW9uKHJlZ2lzdHJhYmxlRG9tYWluLCBbc2VsZiwgc3Ryb25nU2VsZiA9
IHJldGFpblB0cihzZWxmKV0oYm9vbCBhdXRob3JpemVkKSB7CisgICAgICAgICAgICBpZiAoYXV0
aG9yaXplZCkKKyAgICAgICAgICAgICAgICBbc2VsZiBnZW9sb2NhdGlvbkF1dGhvcml6YXRpb25H
cmFudGVkXTsKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICBbc2VsZiBnZW9sb2Nh
dGlvbkF1dGhvcml6YXRpb25EZW5pZWRdOworICAgICAgICB9KTsKKyAgICB9CiB9CiBAZW5kCiAK
QEAgLTE3NCw3ICsxODcsNyBAQCBAaW1wbGVtZW50YXRpb24gV0tHZW9sb2NhdGlvblByb3ZpZGVy
SU9TIChXZWJHZW9sb2NhdGlvbkNvcmVMb2NhdGlvblVwZGF0ZUxpc3RlbgogCiAtICh2b2lkKWdl
b2xvY2F0aW9uQXV0aG9yaXphdGlvbkdyYW50ZWQKIHsKLSAgICAvLyBTdGVwIDI6IGFzayB0aGUg
dXNlciBpZiB0aGlzIHBhcnRpY3VsYXIgcGFnZSBjYW4gdXNlIGdlbG9jYXRpb24uCisgICAgLy8g
U3RlcCAyOiBhc2sgdGhlIHVzZXIgaWYgdGhpcyBwYXJ0aWN1bGFyIHBhZ2UgY2FuIHVzZSBnZW9s
b2NhdGlvbi4KICAgICBpZiAoX3JlcXVlc3RzV2FpdGluZ0ZvckNvcmVMb2NhdGlvbkF1dGhvcml6
YXRpb24uaXNFbXB0eSgpKQogICAgICAgICByZXR1cm47CiAKQEAgLTIyNiw4MSArMjM5LDYgQEAg
LSAodm9pZClyZXNldEdlb2xvY2F0aW9uCiAKIEBlbmQKIAotIyBwcmFnbWEgbWFyayAtIEltcGxl
bWVudGF0aW9uIG9mIFdLTGVnYWN5Q29yZUxvY2F0aW9uUHJvdmlkZXIKLQotQGltcGxlbWVudGF0
aW9uIFdLTGVnYWN5Q29yZUxvY2F0aW9uUHJvdmlkZXIgewotICAgIGlkIDxfV0tHZW9sb2NhdGlv
bkNvcmVMb2NhdGlvbkxpc3RlbmVyPiBfbGlzdGVuZXI7Ci0gICAgUmV0YWluUHRyPFdlYkdlb2xv
Y2F0aW9uQ29yZUxvY2F0aW9uUHJvdmlkZXI+IF9wcm92aWRlcjsKLX0KLQotLy8gPF9XS0dlb2xv
Y2F0aW9uQ29yZUxvY2F0aW9uUHJvdmlkZXI+IE1ldGhvZHMKLQotLSAodm9pZClzZXRMaXN0ZW5l
cjooaWQ8X1dLR2VvbG9jYXRpb25Db3JlTG9jYXRpb25MaXN0ZW5lcj4pbGlzdGVuZXIKLXsKLSAg
ICBBU1NFUlQobGlzdGVuZXIgJiYgIV9saXN0ZW5lciAmJiAhX3Byb3ZpZGVyKTsKLSAgICBfbGlz
dGVuZXIgPSBsaXN0ZW5lcjsKLSAgICBfcHJvdmlkZXIgPSBhZG9wdE5TKFtbV2ViR2VvbG9jYXRp
b25Db3JlTG9jYXRpb25Qcm92aWRlciBhbGxvY10gaW5pdFdpdGhMaXN0ZW5lcjpzZWxmXSk7Ci19
Ci0KLS0gKHZvaWQpcmVxdWVzdEdlb2xvY2F0aW9uQXV0aG9yaXphdGlvbgotewotICAgIEFTU0VS
VChfcHJvdmlkZXIpOwotICAgIFtfcHJvdmlkZXIgcmVxdWVzdEdlb2xvY2F0aW9uQXV0aG9yaXph
dGlvbl07Ci19Ci0KLS0gKHZvaWQpc3RhcnQKLXsKLSAgICBBU1NFUlQoX3Byb3ZpZGVyKTsKLSAg
ICBbX3Byb3ZpZGVyIHN0YXJ0XTsKLX0KLQotLSAodm9pZClzdG9wCi17Ci0gICAgQVNTRVJUKF9w
cm92aWRlcik7Ci0gICAgW19wcm92aWRlciBzdG9wXTsKLX0KLQotLSAodm9pZClzZXRFbmFibGVI
aWdoQWNjdXJhY3k6KEJPT0wpZmxhZwotewotICAgIEFTU0VSVChfcHJvdmlkZXIpOwotICAgIFtf
cHJvdmlkZXIgc2V0RW5hYmxlSGlnaEFjY3VyYWN5OmZsYWddOwotfQotCi0vLyA8V2ViR2VvbG9j
YXRpb25Db3JlTG9jYXRpb25VcGRhdGVMaXN0ZW5lcj4gTWV0aG9kcwotCi0tICh2b2lkKWdlb2xv
Y2F0aW9uQXV0aG9yaXphdGlvbkdyYW50ZWQKLXsKLSAgICBBU1NFUlQoX2xpc3RlbmVyKTsKLSAg
ICBbX2xpc3RlbmVyIGdlb2xvY2F0aW9uQXV0aG9yaXphdGlvbkdyYW50ZWRdOwotfQotCi0tICh2
b2lkKWdlb2xvY2F0aW9uQXV0aG9yaXphdGlvbkRlbmllZAotewotICAgIEFTU0VSVChfbGlzdGVu
ZXIpOwotICAgIFtfbGlzdGVuZXIgZ2VvbG9jYXRpb25BdXRob3JpemF0aW9uRGVuaWVkXTsKLX0K
LQotLSAodm9pZClwb3NpdGlvbkNoYW5nZWQ6KFdlYkNvcmU6Okdlb2xvY2F0aW9uUG9zaXRpb25E
YXRhJiYpY29yZVBvc2l0aW9uCi17Ci0gICAgQVNTRVJUKF9saXN0ZW5lcik7Ci0gICAgYXV0byBw
b3NpdGlvbiA9IFdlYktpdDo6V2ViR2VvbG9jYXRpb25Qb3NpdGlvbjo6Y3JlYXRlKFdURk1vdmUo
Y29yZVBvc2l0aW9uKSk7Ci0gICAgW19saXN0ZW5lciBwb3NpdGlvbkNoYW5nZWQ6d3JhcHBlcihw
b3NpdGlvbi5nZXQoKSldOwotfQotCi0tICh2b2lkKWVycm9yT2NjdXJyZWQ6KE5TU3RyaW5nICop
ZXJyb3JNZXNzYWdlCi17Ci0gICAgQVNTRVJUKF9saXN0ZW5lcik7Ci0gICAgW19saXN0ZW5lciBl
cnJvck9jY3VycmVkOmVycm9yTWVzc2FnZV07Ci19Ci0KLS0gKHZvaWQpcmVzZXRHZW9sb2NhdGlv
bgotewotICAgIEFTU0VSVChfbGlzdGVuZXIpOwotICAgIFtfbGlzdGVuZXIgcmVzZXRHZW9sb2Nh
dGlvbl07Ci19Ci0KLUBlbmQKLQogIyBwcmFnbWEgbWFyayAtIEltcGxlbWVudGF0aW9uIG9mIFdL
V2ViQWxsb3dEZW55UG9saWN5TGlzdGVuZXIKIEBpbXBsZW1lbnRhdGlvbiBXS1dlYkFsbG93RGVu
eVBvbGljeUxpc3RlbmVyIHsKICAgICBGdW5jdGlvbjx2b2lkKGJvb2wpPiBfY29tcGxldGlvbkhh
bmRsZXI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVj
dC5wYnhwcm9qIGIvU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJv
agppbmRleCAxZWM4YjJiODVjZTFlNTY0MzdmMmVmZDFjNDRjMDY5MTYwNjkxOTMwLi5jYzI5NjA5
N2E4NzYzOGZhNmVmM2U4NjBiNzgzMmVhZjhlYjllZGJhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJLaXQv
V2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTQzMTksNiArNDMxOSw3IEBACiAJ
CTQ2Q0UzQjEwMjNEOEM4M0QwMDE2QTk2QSAvKiBXZWJCYWNrRm9yd2FyZExpc3RDb3VudHMuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2ViQmFja0ZvcndhcmRMaXN0Q291bnRz
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQ2RDQ4RkNDMjc5OUQ3REQwMDdEMjAx
NCAvKiBXZWJTaGFyZWRXb3JrZXJTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uLmNwcCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
LmNwcDsgcGF0aCA9IFdlYlNoYXJlZFdvcmtlclNlcnZlclRvQ29udGV4dENvbm5lY3Rpb24uY3Bw
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0NkQ0OEZDRDI3OTlEN0RFMDA3RDIwMTQg
LyogV2ViU2hhcmVkV29ya2VyU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbi5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBXZWJTaGFyZWRXb3JrZXJTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CisJCTQ2REEyODU3MjdCNzNFNzYwMDg5RDMzOSAvKiBXZWJHZW9s
b2NhdGlvbk1hbmFnZXJQcm94eUNvY29hLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdlYkdlb2xv
Y2F0aW9uTWFuYWdlclByb3h5Q29jb2EuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQk0NkRGMDYzOTFGMzkwNUU1MDAxOTgwQkIgLyogTmV0d29ya0NPUlNQcmVmbGlnaHRDaGVja2Vy
LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IE5ldHdvcmtDT1JTUHJl
ZmxpZ2h0Q2hlY2tlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQ2REYwNjNB
MUYzOTA1RTUwMDE5ODBCQiAvKiBOZXR3b3JrQ09SU1ByZWZsaWdodENoZWNrZXIuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTmV0d29ya0NPUlNQcmVmbGlnaHRDaGVja2VyLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQ2RTk3NjBBMjc1N0Y2QzkwMEFDREQzNyAv
KiBXZWJCcm9hZGNhc3RDaGFubmVsUmVnaXN0cnkubWVzc2FnZXMuaW4gKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0
OyBwYXRoID0gV2ViQnJvYWRjYXN0Q2hhbm5lbFJlZ2lzdHJ5Lm1lc3NhZ2VzLmluOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwpAQCAtNzYxMSw2ICs3NjEyLDcgQEAKIAkJCQk1MkQ1QTFBQTFD
NTc0OTRFMDBERTM0QTMgLyogVmlkZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5LmggKi8sCiAJCQkJ
NTJENUExQUIxQzU3NDk0RTAwREUzNEEzIC8qIFZpZGVvRnVsbHNjcmVlbk1hbmFnZXJQcm94eS5t
ZXNzYWdlcy5pbiAqLywKIAkJCQk1MkQ1QTFBQzFDNTc0OTRFMDBERTM0QTMgLyogVmlkZW9GdWxs
c2NyZWVuTWFuYWdlclByb3h5Lm1tICovLAorCQkJCTQ2REEyODU3MjdCNzNFNzYwMDg5RDMzOSAv
KiBXZWJHZW9sb2NhdGlvbk1hbmFnZXJQcm94eUNvY29hLmNwcCAqLywKIAkJCQlDMThGM0ExMzI1
NjMzMkE2MDA3OTdFNjYgLyogV2ViSW5zcGVjdG9yUHJlZmVyZW5jZU9ic2VydmVyLmggKi8sCiAJ
CQkJQzE4RjNBMTQyNTYzMzM0MzAwNzk3RTY2IC8qIFdlYkluc3BlY3RvclByZWZlcmVuY2VPYnNl
cnZlci5tbSAqLywKIAkJCQlDREYxQjkxOTI2NzAyMUQ2MDAwN0VDMTAgLyogV2ViS2l0U3dpZnRT
b2Z0TGluay5oICovLApAQCAtMTM0ODYsNiArMTM0ODgsNyBAQAogCQkJCUUxOEU2OTE4MTY5QjY2
N0IwMDlCNjY3MCAvKiBTZWNJdGVtU2hpbVByb3h5TWVzc2FnZXMuaCBpbiBIZWFkZXJzICovLAog
CQkJCTU3MEFCOEYzMjBBRTNCRDcwMEI4QkU4NyAvKiBTZWNLZXlQcm94eVN0b3JlLmggaW4gSGVh
ZGVycyAqLywKIAkJCQk1MTREOUY1NzE5MTE5RDM1MDAwMDYzQTcgLyogU2VydmljZXNDb250cm9s
bGVyLmggaW4gSGVhZGVycyAqLywKKwkJCQk1MTY0NjU4MDI3QTlDNzc0MDBFMUYyQkEgLyogU2Vy
dmljZVdvcmtlck5vdGlmaWNhdGlvbkhhbmRsZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTFBRkRF
NjVBMTk1NEE0MkIwMEM0OEZGQSAvKiBTZXNzaW9uU3RhdGUuaCBpbiBIZWFkZXJzICovLAogCQkJ
CTFBMDAyRDQ5MTk2QjM0NUQwMEI5QUQ0NCAvKiBTZXNzaW9uU3RhdGVDb2RpbmcuaCBpbiBIZWFk
ZXJzICovLAogCQkJCTkzRTc5OUNFMjc2MDQ5N0IwMDc0MDA4QSAvKiBTZXNzaW9uU3RvcmFnZU1h
bmFnZXIuaCBpbiBIZWFkZXJzICovLApAQCAtMTM5MzQsNyArMTM5MzcsNiBAQAogCQkJCUJDNEE2
Mjk3MTQ3MzEzQTAwMDZDNjgxQSAvKiBXS0Nvbm5lY3Rpb25SZWYuaCBpbiBIZWFkZXJzICovLAog
CQkJCUU1OTZERDZBMjUxRTcxRDQwMEMyNzVBNyAvKiBXS0NvbnRhY3RQaWNrZXIuaCBpbiBIZWFk
ZXJzICovLAogCQkJCTVDRDI4NjU0MUU3MjM1QjEwMDk0RkRDOCAvKiBXS0NvbnRlbnRSdWxlTGlz
dC5oIGluIEhlYWRlcnMgKi8sCi0JCQkJNTE2NDY1ODAyN0E5Qzc3NDAwRTFGMkJBIC8qIFNlcnZp
Y2VXb3JrZXJOb3RpZmljYXRpb25IYW5kbGVyLmggaW4gSGVhZGVycyAqLywKIAkJCQk1Q0QyODY1
NTFFNzIzNUI4MDA5NEZEQzggLyogV0tDb250ZW50UnVsZUxpc3RJbnRlcm5hbC5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJNUM1MTM5REIyNTkyN0Q4MDAwOUMzRTMwIC8qIFdLQ29udGVudFJ1bGVMaXN0
UHJpdmF0ZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNUNEMjg2NTExRTcyMzU5OTAwOTRGREM4IC8q
IFdLQ29udGVudFJ1bGVMaXN0U3RvcmUuaCBpbiBIZWFkZXJzICovLApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dlb2xvY2F0aW9uL1dlYkdlb2xvY2F0aW9uTWFuYWdlci5j
cHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR2VvbG9jYXRpb24vV2ViR2VvbG9jYXRpb25N
YW5hZ2VyLmNwcAppbmRleCA1YTljOWY0ZDJhMWNkNjZhNGI2NzU5YjU5Mzg3ZWEyY2Y1NWIyYWE4
Li5mOWQ4NzVjMTQ5NDRhYjAzM2U4N2E5ZmUyNjk1ZDE1ZjU0ZjdmY2M3IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR2VvbG9jYXRpb24vV2ViR2VvbG9jYXRpb25NYW5hZ2Vy
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR2VvbG9jYXRpb24vV2ViR2VvbG9j
YXRpb25NYW5hZ2VyLmNwcApAQCAtMzksNiArMzksMTQgQEAKIG5hbWVzcGFjZSBXZWJLaXQgewog
dXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKK3N0YXRpYyBSZWdpc3RyYWJsZURvbWFpbiByZWdp
c3RyYWJsZURvbWFpbkZvclBhZ2UoV2ViUGFnZSYgcGFnZSkKK3sKKyAgICBhdXRvKiBkb2N1bWVu
dCA9IHBhZ2UuY29yZVBhZ2UoKSA/IHBhZ2UuY29yZVBhZ2UoKS0+bWFpbkZyYW1lKCkuZG9jdW1l
bnQoKSA6IG51bGxwdHI7CisgICAgaWYgKCFkb2N1bWVudCkKKyAgICAgICAgcmV0dXJuIHsgfTsK
KyAgICByZXR1cm4gUmVnaXN0cmFibGVEb21haW4geyBkb2N1bWVudC0+dXJsKCkgfTsKK30KKwog
Y29uc3QgY2hhciogV2ViR2VvbG9jYXRpb25NYW5hZ2VyOjpzdXBwbGVtZW50TmFtZSgpCiB7CiAg
ICAgcmV0dXJuICJXZWJHZW9sb2NhdGlvbk1hbmFnZXIiOwpAQCAtNTAsODggKzU4LDE0MCBAQCBX
ZWJHZW9sb2NhdGlvbk1hbmFnZXI6OldlYkdlb2xvY2F0aW9uTWFuYWdlcihXZWJQcm9jZXNzJiBw
cm9jZXNzKQogICAgIG1fcHJvY2Vzcy5hZGRNZXNzYWdlUmVjZWl2ZXIoTWVzc2FnZXM6OldlYkdl
b2xvY2F0aW9uTWFuYWdlcjo6bWVzc2FnZVJlY2VpdmVyTmFtZSgpLCAqdGhpcyk7CiB9CiAKLXZv
aWQgV2ViR2VvbG9jYXRpb25NYW5hZ2VyOjpyZWdpc3RlcldlYlBhZ2UoV2ViUGFnZSYgcGFnZSwg
Y29uc3QgU3RyaW5nJiBhdXRob3JpemF0aW9uVG9rZW4pCi17Ci0gICAgYm9vbCB3YXNVcGRhdGlu
ZyA9IGlzVXBkYXRpbmcoKTsKK1dlYkdlb2xvY2F0aW9uTWFuYWdlcjo6fldlYkdlb2xvY2F0aW9u
TWFuYWdlcigpID0gZGVmYXVsdDsKIAotICAgIG1fcGFnZVNldC5hZGQocGFnZSk7Cit2b2lkIFdl
Ykdlb2xvY2F0aW9uTWFuYWdlcjo6cmVnaXN0ZXJXZWJQYWdlKFdlYlBhZ2UmIHBhZ2UsIGNvbnN0
IFN0cmluZyYgYXV0aG9yaXphdGlvblRva2VuLCBib29sIG5lZWRzSGlnaEFjY3VyYWN5KQorewor
ICAgIGF1dG8gcmVnaXN0cmFibGVEb21haW4gPSByZWdpc3RyYWJsZURvbWFpbkZvclBhZ2UocGFn
ZSk7CisgICAgaWYgKHJlZ2lzdHJhYmxlRG9tYWluLnN0cmluZygpLmlzRW1wdHkoKSkKKyAgICAg
ICAgcmV0dXJuOworCisgICAgYXV0byYgcGFnZVNldHMgPSBtX3BhZ2VTZXRzLmFkZChyZWdpc3Ry
YWJsZURvbWFpbiwgUGFnZVNldHMoKSkuaXRlcmF0b3ItPnZhbHVlOworICAgIGJvb2wgd2FzVXBk
YXRpbmcgPSBpc1VwZGF0aW5nKHBhZ2VTZXRzKTsKKyAgICBib29sIGhpZ2hBY2N1cmFjeVdhc0Vu
YWJsZWQgPSBpc0hpZ2hBY2N1cmFjeUVuYWJsZWQocGFnZVNldHMpOworCisgICAgcGFnZVNldHMu
cGFnZVNldC5hZGQocGFnZSk7CisgICAgaWYgKG5lZWRzSGlnaEFjY3VyYWN5KQorICAgICAgICBw
YWdlU2V0cy5oaWdoQWNjdXJhY3lQYWdlU2V0LmFkZChwYWdlKTsKKyAgICBtX3BhZ2VUb1JlZ2lz
dHJhYmxlRG9tYWluLmFkZCgmcGFnZSwgcmVnaXN0cmFibGVEb21haW4pOworCisgICAgaWYgKCF3
YXNVcGRhdGluZykgeworICAgICAgICBtX3Byb2Nlc3MucGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24o
KS0+c2VuZChNZXNzYWdlczo6V2ViR2VvbG9jYXRpb25NYW5hZ2VyUHJveHk6OlN0YXJ0VXBkYXRp
bmcocmVnaXN0cmFibGVEb21haW4sIHBhZ2Uud2ViUGFnZVByb3h5SWRlbnRpZmllcigpLCBhdXRo
b3JpemF0aW9uVG9rZW4sIG5lZWRzSGlnaEFjY3VyYWN5KSwgMCk7CisgICAgICAgIHJldHVybjsK
KyAgICB9CiAKLSAgICBpZiAoIXdhc1VwZGF0aW5nKQotICAgICAgICBtX3Byb2Nlc3MucGFyZW50
UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+c2VuZChNZXNzYWdlczo6V2ViR2VvbG9jYXRpb25NYW5hZ2Vy
UHJveHk6OlN0YXJ0VXBkYXRpbmcocGFnZS53ZWJQYWdlUHJveHlJZGVudGlmaWVyKCksIGF1dGhv
cml6YXRpb25Ub2tlbiksIDApOworICAgIGJvb2wgaGlnaEFjY3VyYWN5U2hvdWxkQmVFbmFibGVk
ID0gaXNIaWdoQWNjdXJhY3lFbmFibGVkKHBhZ2VTZXRzKTsKKyAgICBpZiAoaGlnaEFjY3VyYWN5
V2FzRW5hYmxlZCAhPSBoaWdoQWNjdXJhY3lTaG91bGRCZUVuYWJsZWQpCisgICAgICAgIG1fcHJv
Y2Vzcy5wYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpLT5zZW5kKE1lc3NhZ2VzOjpXZWJHZW9sb2Nh
dGlvbk1hbmFnZXJQcm94eTo6U2V0RW5hYmxlSGlnaEFjY3VyYWN5KHJlZ2lzdHJhYmxlRG9tYWlu
LCBoaWdoQWNjdXJhY3lTaG91bGRCZUVuYWJsZWQpLCAwKTsKIH0KIAogdm9pZCBXZWJHZW9sb2Nh
dGlvbk1hbmFnZXI6OnVucmVnaXN0ZXJXZWJQYWdlKFdlYlBhZ2UmIHBhZ2UpCiB7Ci0gICAgYm9v
bCBoaWdoQWNjdXJhY3lXYXNFbmFibGVkID0gaXNIaWdoQWNjdXJhY3lFbmFibGVkKCk7CisgICAg
YXV0byByZWdpc3RyYWJsZURvbWFpbiA9IG1fcGFnZVRvUmVnaXN0cmFibGVEb21haW4udGFrZSgm
cGFnZSk7CisgICAgaWYgKHJlZ2lzdHJhYmxlRG9tYWluLnN0cmluZygpLmlzRW1wdHkoKSkKKyAg
ICAgICAgcmV0dXJuOworCisgICAgYXV0byBpdCA9IG1fcGFnZVNldHMuZmluZChyZWdpc3RyYWJs
ZURvbWFpbik7CisgICAgaWYgKGl0ID09IG1fcGFnZVNldHMuZW5kKCkpCisgICAgICAgIHJldHVy
bjsKIAotICAgIG1fcGFnZVNldC5yZW1vdmUocGFnZSk7Ci0gICAgbV9oaWdoQWNjdXJhY3lQYWdl
U2V0LnJlbW92ZShwYWdlKTsKKyAgICBhdXRvJiBwYWdlU2V0cyA9IGl0LT52YWx1ZTsKKyAgICBi
b29sIGhpZ2hBY2N1cmFjeVdhc0VuYWJsZWQgPSBpc0hpZ2hBY2N1cmFjeUVuYWJsZWQocGFnZVNl
dHMpOwogCi0gICAgaWYgKCFpc1VwZGF0aW5nKCkpCi0gICAgICAgIG1fcHJvY2Vzcy5wYXJlbnRQ
cm9jZXNzQ29ubmVjdGlvbigpLT5zZW5kKE1lc3NhZ2VzOjpXZWJHZW9sb2NhdGlvbk1hbmFnZXJQ
cm94eTo6U3RvcFVwZGF0aW5nKCksIDApOworICAgIHBhZ2VTZXRzLnBhZ2VTZXQucmVtb3ZlKHBh
Z2UpOworICAgIHBhZ2VTZXRzLmhpZ2hBY2N1cmFjeVBhZ2VTZXQucmVtb3ZlKHBhZ2UpOworCisg
ICAgaWYgKCFpc1VwZGF0aW5nKHBhZ2VTZXRzKSkKKyAgICAgICAgbV9wcm9jZXNzLnBhcmVudFBy
b2Nlc3NDb25uZWN0aW9uKCktPnNlbmQoTWVzc2FnZXM6OldlYkdlb2xvY2F0aW9uTWFuYWdlclBy
b3h5OjpTdG9wVXBkYXRpbmcocmVnaXN0cmFibGVEb21haW4pLCAwKTsKICAgICBlbHNlIHsKLSAg
ICAgICAgYm9vbCBoaWdoQWNjdXJhY3lTaG91bGRCZUVuYWJsZWQgPSBpc0hpZ2hBY2N1cmFjeUVu
YWJsZWQoKTsKKyAgICAgICAgYm9vbCBoaWdoQWNjdXJhY3lTaG91bGRCZUVuYWJsZWQgPSBpc0hp
Z2hBY2N1cmFjeUVuYWJsZWQocGFnZVNldHMpOwogICAgICAgICBpZiAoaGlnaEFjY3VyYWN5V2Fz
RW5hYmxlZCAhPSBoaWdoQWNjdXJhY3lTaG91bGRCZUVuYWJsZWQpCi0gICAgICAgICAgICBtX3By
b2Nlc3MucGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+c2VuZChNZXNzYWdlczo6V2ViR2VvbG9j
YXRpb25NYW5hZ2VyUHJveHk6OlNldEVuYWJsZUhpZ2hBY2N1cmFjeShoaWdoQWNjdXJhY3lTaG91
bGRCZUVuYWJsZWQpLCAwKTsKKyAgICAgICAgICAgIG1fcHJvY2Vzcy5wYXJlbnRQcm9jZXNzQ29u
bmVjdGlvbigpLT5zZW5kKE1lc3NhZ2VzOjpXZWJHZW9sb2NhdGlvbk1hbmFnZXJQcm94eTo6U2V0
RW5hYmxlSGlnaEFjY3VyYWN5KHJlZ2lzdHJhYmxlRG9tYWluLCBoaWdoQWNjdXJhY3lTaG91bGRC
ZUVuYWJsZWQpLCAwKTsKICAgICB9CisKKyAgICBpZiAocGFnZVNldHMucGFnZVNldC5jb21wdXRl
c0VtcHR5KCkgJiYgcGFnZVNldHMuaGlnaEFjY3VyYWN5UGFnZVNldC5jb21wdXRlc0VtcHR5KCkp
CisgICAgICAgIG1fcGFnZVNldHMucmVtb3ZlKGl0KTsKIH0KIAogdm9pZCBXZWJHZW9sb2NhdGlv
bk1hbmFnZXI6OnNldEVuYWJsZUhpZ2hBY2N1cmFjeUZvclBhZ2UoV2ViUGFnZSYgcGFnZSwgYm9v
bCBlbmFibGVkKQogewotICAgIGJvb2wgaGlnaEFjY3VyYWN5V2FzRW5hYmxlZCA9IGlzSGlnaEFj
Y3VyYWN5RW5hYmxlZCgpOworICAgIGF1dG8gcmVnaXN0cmFibGVEb21haW4gPSBtX3BhZ2VUb1Jl
Z2lzdHJhYmxlRG9tYWluLmdldCgmcGFnZSk7CisgICAgaWYgKHJlZ2lzdHJhYmxlRG9tYWluLnN0
cmluZygpLmlzRW1wdHkoKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgYXV0byBpdCA9IG1fcGFn
ZVNldHMuZmluZChyZWdpc3RyYWJsZURvbWFpbik7CisgICAgQVNTRVJUKGl0ICE9IG1fcGFnZVNl
dHMuZW5kKCkpOworICAgIGlmIChpdCA9PSBtX3BhZ2VTZXRzLmVuZCgpKQorICAgICAgICByZXR1
cm47CisKKyAgICBhdXRvJiBwYWdlU2V0cyA9IGl0LT52YWx1ZTsKKyAgICBib29sIGhpZ2hBY2N1
cmFjeVdhc0VuYWJsZWQgPSBpc0hpZ2hBY2N1cmFjeUVuYWJsZWQocGFnZVNldHMpOwogCiAgICAg
aWYgKGVuYWJsZWQpCi0gICAgICAgIG1faGlnaEFjY3VyYWN5UGFnZVNldC5hZGQocGFnZSk7Cisg
ICAgICAgIHBhZ2VTZXRzLmhpZ2hBY2N1cmFjeVBhZ2VTZXQuYWRkKHBhZ2UpOwogICAgIGVsc2UK
LSAgICAgICAgbV9oaWdoQWNjdXJhY3lQYWdlU2V0LnJlbW92ZShwYWdlKTsKKyAgICAgICAgcGFn
ZVNldHMuaGlnaEFjY3VyYWN5UGFnZVNldC5yZW1vdmUocGFnZSk7CiAKLSAgICBib29sIGhpZ2hB
Y2N1cmFjeVNob3VsZEJlRW5hYmxlZCA9IGlzSGlnaEFjY3VyYWN5RW5hYmxlZCgpOwotICAgIGlm
IChoaWdoQWNjdXJhY3lXYXNFbmFibGVkICE9IGhpZ2hBY2N1cmFjeVNob3VsZEJlRW5hYmxlZCkK
LSAgICAgICAgbV9wcm9jZXNzLnBhcmVudFByb2Nlc3NDb25uZWN0aW9uKCktPnNlbmQoTWVzc2Fn
ZXM6OldlYkdlb2xvY2F0aW9uTWFuYWdlclByb3h5OjpTZXRFbmFibGVIaWdoQWNjdXJhY3koaGln
aEFjY3VyYWN5U2hvdWxkQmVFbmFibGVkKSwgMCk7CisgICAgYm9vbCBoaWdoQWNjdXJhY3lTaG91
bGRCZUVuYWJsZWQgPSBpc0hpZ2hBY2N1cmFjeUVuYWJsZWQocGFnZVNldHMpOworICAgIGlmICho
aWdoQWNjdXJhY3lXYXNFbmFibGVkICE9IGlzSGlnaEFjY3VyYWN5RW5hYmxlZChwYWdlU2V0cykp
CisgICAgICAgIG1fcHJvY2Vzcy5wYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpLT5zZW5kKE1lc3Nh
Z2VzOjpXZWJHZW9sb2NhdGlvbk1hbmFnZXJQcm94eTo6U2V0RW5hYmxlSGlnaEFjY3VyYWN5KHJl
Z2lzdHJhYmxlRG9tYWluLCBoaWdoQWNjdXJhY3lTaG91bGRCZUVuYWJsZWQpLCAwKTsKIH0KIAot
dm9pZCBXZWJHZW9sb2NhdGlvbk1hbmFnZXI6OmRpZENoYW5nZVBvc2l0aW9uKGNvbnN0IEdlb2xv
Y2F0aW9uUG9zaXRpb25EYXRhJiBwb3NpdGlvbikKK3ZvaWQgV2ViR2VvbG9jYXRpb25NYW5hZ2Vy
OjpkaWRDaGFuZ2VQb3NpdGlvbihjb25zdCBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiYgcmVn
aXN0cmFibGVEb21haW4sIGNvbnN0IEdlb2xvY2F0aW9uUG9zaXRpb25EYXRhJiBwb3NpdGlvbikK
IHsKICNpZiBFTkFCTEUoR0VPTE9DQVRJT04pCi0gICAgZm9yIChhdXRvJiBwYWdlIDogY29weVRv
VmVjdG9yKG1fcGFnZVNldCkpIHsKLSAgICAgICAgaWYgKHBhZ2UtPmNvcmVQYWdlKCkpCi0gICAg
ICAgICAgICBHZW9sb2NhdGlvbkNvbnRyb2xsZXI6OmZyb20ocGFnZS0+Y29yZVBhZ2UoKSktPnBv
c2l0aW9uQ2hhbmdlZChwb3NpdGlvbik7CisgICAgaWYgKGF1dG8gaXQgPSBtX3BhZ2VTZXRzLmZp
bmQocmVnaXN0cmFibGVEb21haW4pOyBpdCAhPSBtX3BhZ2VTZXRzLmVuZCgpKSB7CisgICAgICAg
IGZvciAoYXV0byYgcGFnZSA6IGNvcHlUb1ZlY3RvcihpdC0+dmFsdWUucGFnZVNldCkpIHsKKyAg
ICAgICAgICAgIGlmIChwYWdlLT5jb3JlUGFnZSgpKQorICAgICAgICAgICAgICAgIEdlb2xvY2F0
aW9uQ29udHJvbGxlcjo6ZnJvbShwYWdlLT5jb3JlUGFnZSgpKS0+cG9zaXRpb25DaGFuZ2VkKHBv
c2l0aW9uKTsKKyAgICAgICAgfQogICAgIH0KICNlbHNlCisgICAgVU5VU0VEX1BBUkFNKHJlZ2lz
dHJhYmxlRG9tYWluKTsKICAgICBVTlVTRURfUEFSQU0ocG9zaXRpb24pOwogI2VuZGlmIC8vIEVO
QUJMRShHRU9MT0NBVElPTikKIH0KIAotdm9pZCBXZWJHZW9sb2NhdGlvbk1hbmFnZXI6OmRpZEZh
aWxUb0RldGVybWluZVBvc2l0aW9uKGNvbnN0IFN0cmluZyYgZXJyb3JNZXNzYWdlKQordm9pZCBX
ZWJHZW9sb2NhdGlvbk1hbmFnZXI6OmRpZEZhaWxUb0RldGVybWluZVBvc2l0aW9uKGNvbnN0IFdl
YkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluJiByZWdpc3RyYWJsZURvbWFpbiwgY29uc3QgU3RyaW5n
JiBlcnJvck1lc3NhZ2UpCiB7CiAjaWYgRU5BQkxFKEdFT0xPQ0FUSU9OKQotICAgIC8vIEZJWE1F
OiBBZGQgbG9jYWxpemVkIGVycm9yIHN0cmluZy4KLSAgICBhdXRvIGVycm9yID0gR2VvbG9jYXRp
b25FcnJvcjo6Y3JlYXRlKEdlb2xvY2F0aW9uRXJyb3I6OlBvc2l0aW9uVW5hdmFpbGFibGUsIGVy
cm9yTWVzc2FnZSk7Ci0KLSAgICBmb3IgKGF1dG8mIHBhZ2UgOiBjb3B5VG9WZWN0b3IobV9wYWdl
U2V0KSkgewotICAgICAgICBpZiAocGFnZS0+Y29yZVBhZ2UoKSkKLSAgICAgICAgICAgIEdlb2xv
Y2F0aW9uQ29udHJvbGxlcjo6ZnJvbShwYWdlLT5jb3JlUGFnZSgpKS0+ZXJyb3JPY2N1cnJlZChl
cnJvci5nZXQoKSk7CisgICAgaWYgKGF1dG8gaXQgPSBtX3BhZ2VTZXRzLmZpbmQocmVnaXN0cmFi
bGVEb21haW4pOyBpdCAhPSBtX3BhZ2VTZXRzLmVuZCgpKSB7CisgICAgICAgIC8vIEZJWE1FOiBB
ZGQgbG9jYWxpemVkIGVycm9yIHN0cmluZy4KKyAgICAgICAgYXV0byBlcnJvciA9IEdlb2xvY2F0
aW9uRXJyb3I6OmNyZWF0ZShHZW9sb2NhdGlvbkVycm9yOjpQb3NpdGlvblVuYXZhaWxhYmxlLCBl
cnJvck1lc3NhZ2UpOworCisgICAgICAgIGZvciAoYXV0byYgcGFnZSA6IGNvcHlUb1ZlY3Rvcihp
dC0+dmFsdWUucGFnZVNldCkpIHsKKyAgICAgICAgICAgIGlmIChwYWdlLT5jb3JlUGFnZSgpKQor
ICAgICAgICAgICAgICAgIEdlb2xvY2F0aW9uQ29udHJvbGxlcjo6ZnJvbShwYWdlLT5jb3JlUGFn
ZSgpKS0+ZXJyb3JPY2N1cnJlZChlcnJvci5nZXQoKSk7CisgICAgICAgIH0KICAgICB9CiAjZWxz
ZQorICAgIFVOVVNFRF9QQVJBTShyZWdpc3RyYWJsZURvbWFpbik7CiAgICAgVU5VU0VEX1BBUkFN
KGVycm9yTWVzc2FnZSk7CiAjZW5kaWYgLy8gRU5BQkxFKEdFT0xPQ0FUSU9OKQogfQogCi0jaWYg
UExBVEZPUk0oSU9TX0ZBTUlMWSkKLXZvaWQgV2ViR2VvbG9jYXRpb25NYW5hZ2VyOjpyZXNldFBl
cm1pc3Npb25zKCkKK2Jvb2wgV2ViR2VvbG9jYXRpb25NYW5hZ2VyOjppc1VwZGF0aW5nKGNvbnN0
IFBhZ2VTZXRzJiBwYWdlU2V0cykgY29uc3QKIHsKLSAgICBtX3Byb2Nlc3MucmVzZXRBbGxHZW9s
b2NhdGlvblBlcm1pc3Npb25zKCk7CisgICAgcmV0dXJuICFwYWdlU2V0cy5wYWdlU2V0LmNvbXB1
dGVzRW1wdHkoKTsKIH0KLSNlbmRpZiAvLyBQTEFURk9STShJT1NfRkFNSUxZKQogCi1ib29sIFdl
Ykdlb2xvY2F0aW9uTWFuYWdlcjo6aXNVcGRhdGluZygpIGNvbnN0Citib29sIFdlYkdlb2xvY2F0
aW9uTWFuYWdlcjo6aXNIaWdoQWNjdXJhY3lFbmFibGVkKGNvbnN0IFBhZ2VTZXRzJiBwYWdlU2V0
cykgY29uc3QKIHsKLSAgICByZXR1cm4gIW1fcGFnZVNldC5jb21wdXRlc0VtcHR5KCk7CisgICAg
cmV0dXJuICFwYWdlU2V0cy5oaWdoQWNjdXJhY3lQYWdlU2V0LmNvbXB1dGVzRW1wdHkoKTsKIH0K
IAotYm9vbCBXZWJHZW9sb2NhdGlvbk1hbmFnZXI6OmlzSGlnaEFjY3VyYWN5RW5hYmxlZCgpIGNv
bnN0CisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKK3ZvaWQgV2ViR2VvbG9jYXRpb25NYW5hZ2Vy
OjpyZXNldFBlcm1pc3Npb25zKGNvbnN0IFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluJiByZWdp
c3RyYWJsZURvbWFpbikKIHsKLSAgICByZXR1cm4gIW1faGlnaEFjY3VyYWN5UGFnZVNldC5jb21w
dXRlc0VtcHR5KCk7CisgICAgYXV0byBpdCA9IG1fcGFnZVNldHMuZmluZChyZWdpc3RyYWJsZURv
bWFpbik7CisgICAgaWYgKGl0ICE9IG1fcGFnZVNldHMuZW5kKCkpCisgICAgICAgIHJldHVybjsK
KworICAgIGZvciAoYXV0byYgcGFnZSA6IGNvcHlUb1ZlY3RvcihpdC0+dmFsdWUucGFnZVNldCkp
IHsKKyAgICAgICAgaWYgKGF1dG8qIG1haW5GcmFtZSA9IHBhZ2UtPmNvcmVQYWdlKCkgPyAmcGFn
ZS0+Y29yZVBhZ2UoKS0+bWFpbkZyYW1lKCkgOiBudWxscHRyKQorICAgICAgICAgICAgbWFpbkZy
YW1lLT5yZXNldEFsbEdlb2xvY2F0aW9uUGVybWlzc2lvbigpOworICAgIH0KIH0KKyNlbmRpZiAv
LyBQTEFURk9STShJT1NfRkFNSUxZKQogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HZW9sb2NhdGlvbi9XZWJHZW9sb2NhdGlvbk1h
bmFnZXIuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HZW9sb2NhdGlvbi9XZWJHZW9sb2Nh
dGlvbk1hbmFnZXIuaAppbmRleCA0NDgzNTk2MzU4NzgyMTk3Y2NiYTU5MjhlZmU2MjUxNTI2YzE4
NTE1Li5jYjY1ODhjNmU3MTg4YmVmYmQ1NTEyM2Q0YTU1OWIyYjBiMzFhOTNhIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR2VvbG9jYXRpb24vV2ViR2VvbG9jYXRpb25NYW5h
Z2VyLmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dlb2xvY2F0aW9uL1dlYkdlb2xv
Y2F0aW9uTWFuYWdlci5oCkBAIC0yOCw2ICsyOCw3IEBACiAjaW5jbHVkZSAiTWVzc2FnZVJlY2Vp
dmVyLmgiCiAjaW5jbHVkZSAiV2ViR2VvbG9jYXRpb25Qb3NpdGlvbi5oIgogI2luY2x1ZGUgIldl
YlByb2Nlc3NTdXBwbGVtZW50LmgiCisjaW5jbHVkZSA8V2ViQ29yZS9SZWdpc3RyYWJsZURvbWFp
bi5oPgogI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CiAjaW5jbHVkZSA8d3RmL05vbmNvcHlhYmxl
Lmg+CiAjaW5jbHVkZSA8d3RmL1dlYWtIYXNoU2V0Lmg+CkBAIC00NywzMSArNDgsMzQgQEAgY2xh
c3MgV2ViR2VvbG9jYXRpb25NYW5hZ2VyIDogcHVibGljIFdlYlByb2Nlc3NTdXBwbGVtZW50LCBw
dWJsaWMgSVBDOjpNZXNzYWdlUmUKICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShXZWJHZW9sb2Nh
dGlvbk1hbmFnZXIpOwogcHVibGljOgogICAgIGV4cGxpY2l0IFdlYkdlb2xvY2F0aW9uTWFuYWdl
cihXZWJQcm9jZXNzJik7CisgICAgfldlYkdlb2xvY2F0aW9uTWFuYWdlcigpOwogCiAgICAgc3Rh
dGljIGNvbnN0IGNoYXIqIHN1cHBsZW1lbnROYW1lKCk7CiAKLSAgICB2b2lkIHJlZ2lzdGVyV2Vi
UGFnZShXZWJQYWdlJiwgY29uc3QgU3RyaW5nJiBhdXRob3JpemF0aW9uVG9rZW4pOworICAgIHZv
aWQgcmVnaXN0ZXJXZWJQYWdlKFdlYlBhZ2UmLCBjb25zdCBTdHJpbmcmIGF1dGhvcml6YXRpb25U
b2tlbiwgYm9vbCBuZWVkc0hpZ2hBY2N1cmFjeSk7CiAgICAgdm9pZCB1bnJlZ2lzdGVyV2ViUGFn
ZShXZWJQYWdlJik7CiAgICAgdm9pZCBzZXRFbmFibGVIaWdoQWNjdXJhY3lGb3JQYWdlKFdlYlBh
Z2UmLCBib29sKTsKIAotICAgIHZvaWQgcmVxdWVzdFBlcm1pc3Npb24oV2ViQ29yZTo6R2VvbG9j
YXRpb24mKTsKLQogcHJpdmF0ZToKICAgICAvLyBJUEM6Ok1lc3NhZ2VSZWNlaXZlcgogICAgIHZv
aWQgZGlkUmVjZWl2ZU1lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwgSVBDOjpEZWNvZGVyJikgb3Zl
cnJpZGU7CiAKLSAgICBib29sIGlzVXBkYXRpbmcoKSBjb25zdDsKLSAgICBib29sIGlzSGlnaEFj
Y3VyYWN5RW5hYmxlZCgpIGNvbnN0OwotCi0gICAgdm9pZCBkaWRDaGFuZ2VQb3NpdGlvbihjb25z
dCBXZWJDb3JlOjpHZW9sb2NhdGlvblBvc2l0aW9uRGF0YSYpOwotICAgIHZvaWQgZGlkRmFpbFRv
RGV0ZXJtaW5lUG9zaXRpb24oY29uc3QgU3RyaW5nJiBlcnJvck1lc3NhZ2UpOworICAgIHZvaWQg
ZGlkQ2hhbmdlUG9zaXRpb24oY29uc3QgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4mLCBjb25z
dCBXZWJDb3JlOjpHZW9sb2NhdGlvblBvc2l0aW9uRGF0YSYpOworICAgIHZvaWQgZGlkRmFpbFRv
RGV0ZXJtaW5lUG9zaXRpb24oY29uc3QgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4mLCBjb25z
dCBTdHJpbmcmIGVycm9yTWVzc2FnZSk7CiAjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKLSAgICB2
b2lkIHJlc2V0UGVybWlzc2lvbnMoKTsKKyAgICB2b2lkIHJlc2V0UGVybWlzc2lvbnMoY29uc3Qg
V2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4mKTsKICNlbmRpZiAvLyBQTEFURk9STShJT1NfRkFN
SUxZKQogCisgICAgc3RydWN0IFBhZ2VTZXRzIHsKKyAgICAgICAgV2Vha0hhc2hTZXQ8V2ViUGFn
ZT4gcGFnZVNldDsKKyAgICAgICAgV2Vha0hhc2hTZXQ8V2ViUGFnZT4gaGlnaEFjY3VyYWN5UGFn
ZVNldDsKKyAgICB9OworICAgIGJvb2wgaXNVcGRhdGluZyhjb25zdCBQYWdlU2V0cyYpIGNvbnN0
OworICAgIGJvb2wgaXNIaWdoQWNjdXJhY3lFbmFibGVkKGNvbnN0IFBhZ2VTZXRzJikgY29uc3Q7
CisKICAgICBXZWJQcm9jZXNzJiBtX3Byb2Nlc3M7Ci0gICAgV2Vha0hhc2hTZXQ8V2ViUGFnZT4g
bV9wYWdlU2V0OwotICAgIFdlYWtIYXNoU2V0PFdlYlBhZ2U+IG1faGlnaEFjY3VyYWN5UGFnZVNl
dDsKKyAgICBIYXNoTWFwPFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluLCBQYWdlU2V0cz4gbV9w
YWdlU2V0czsKKyAgICBIYXNoTWFwPFdlYlBhZ2UqLCBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFp
bj4gbV9wYWdlVG9SZWdpc3RyYWJsZURvbWFpbjsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktp
dApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dlb2xvY2F0aW9uL1dlYkdl
b2xvY2F0aW9uTWFuYWdlci5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9H
ZW9sb2NhdGlvbi9XZWJHZW9sb2NhdGlvbk1hbmFnZXIubWVzc2FnZXMuaW4KaW5kZXggNzlmM2I0
Y2U0ZWZjYWYzNDg4NTdkOTkzMzI1M2Q4OTU0ZjBmMWI4Ny4uNmZjYzYwZDJlMDhlMjZlYWI3M2Mx
ZjcxY2Q4ODQyZGM1MTA1MmQxOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L0dlb2xvY2F0aW9uL1dlYkdlb2xvY2F0aW9uTWFuYWdlci5tZXNzYWdlcy5pbgorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvR2VvbG9jYXRpb24vV2ViR2VvbG9jYXRpb25NYW5hZ2VyLm1l
c3NhZ2VzLmluCkBAIC0yMSw5ICsyMSw5IEBACiAjIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAKIG1lc3NhZ2VzIC0+
IFdlYkdlb2xvY2F0aW9uTWFuYWdlciBOb3RSZWZDb3VudGVkIHsKLSAgICBEaWRDaGFuZ2VQb3Np
dGlvbihXZWJDb3JlOjpHZW9sb2NhdGlvblBvc2l0aW9uRGF0YSBwb3NpdGlvbik7Ci0gICAgRGlk
RmFpbFRvRGV0ZXJtaW5lUG9zaXRpb24oU3RyaW5nIGVycm9yTWVzc2FnZSk7CisgICAgRGlkQ2hh
bmdlUG9zaXRpb24oV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4gcmVnaXN0cmFibGVEb21haW4s
IFdlYkNvcmU6Okdlb2xvY2F0aW9uUG9zaXRpb25EYXRhIHBvc2l0aW9uKTsKKyAgICBEaWRGYWls
VG9EZXRlcm1pbmVQb3NpdGlvbihXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiByZWdpc3RyYWJs
ZURvbWFpbiwgU3RyaW5nIGVycm9yTWVzc2FnZSk7CiAjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkK
LSAgICBSZXNldFBlcm1pc3Npb25zKCk7CisgICAgUmVzZXRQZXJtaXNzaW9ucyhXZWJDb3JlOjpS
ZWdpc3RyYWJsZURvbWFpbiByZWdpc3RyYWJsZURvbWFpbik7CiAjZW5kaWYKIH0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJHZW9sb2NhdGlv
bkNsaWVudC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2Vi
R2VvbG9jYXRpb25DbGllbnQuY3BwCmluZGV4IGVhMDJmMmFjMTZmNzMxYmY1NjQyZjg2NzhkODZh
NDk4MTFkOGMzODYuLmQxOGRmN2VmYWY1NmVmY2ZjOGQxNjk5YzkxY2QyNmI2ODliYzgyNmEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJHZW9s
b2NhdGlvbkNsaWVudC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVT
dXBwb3J0L1dlYkdlb2xvY2F0aW9uQ2xpZW50LmNwcApAQCAtNDgsOSArNDgsOSBAQCB2b2lkIFdl
Ykdlb2xvY2F0aW9uQ2xpZW50OjpnZW9sb2NhdGlvbkRlc3Ryb3llZCgpCiAgICAgZGVsZXRlIHRo
aXM7CiB9CiAKLXZvaWQgV2ViR2VvbG9jYXRpb25DbGllbnQ6OnN0YXJ0VXBkYXRpbmcoY29uc3Qg
U3RyaW5nJiBhdXRob3JpemF0aW9uVG9rZW4pCit2b2lkIFdlYkdlb2xvY2F0aW9uQ2xpZW50Ojpz
dGFydFVwZGF0aW5nKGNvbnN0IFN0cmluZyYgYXV0aG9yaXphdGlvblRva2VuLCBib29sIG5lZWRz
SGlnaEFjY3VyYWN5KQogewotICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLnN1cHBsZW1lbnQ8
V2ViR2VvbG9jYXRpb25NYW5hZ2VyPigpLT5yZWdpc3RlcldlYlBhZ2UobV9wYWdlLCBhdXRob3Jp
emF0aW9uVG9rZW4pOworICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLnN1cHBsZW1lbnQ8V2Vi
R2VvbG9jYXRpb25NYW5hZ2VyPigpLT5yZWdpc3RlcldlYlBhZ2UobV9wYWdlLCBhdXRob3JpemF0
aW9uVG9rZW4sIG5lZWRzSGlnaEFjY3VyYWN5KTsKIH0KIAogdm9pZCBXZWJHZW9sb2NhdGlvbkNs
aWVudDo6c3RvcFVwZGF0aW5nKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9XZWJDb3JlU3VwcG9ydC9XZWJHZW9sb2NhdGlvbkNsaWVudC5oIGIvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkdlb2xvY2F0aW9uQ2xpZW50LmgKaW5kZXggYjE2
ODE2NzQ4OTYyMjU0N2VjOTRlNjc5OGZiNjlkZDhmYTZkMDExYy4uNjVlYzBlOTM1NDI4M2Q1ZmE3
N2FmMTBiNGUxODBiODcxMmZhZWYwNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkdlb2xvY2F0aW9uQ2xpZW50LmgKKysrIGIvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkdlb2xvY2F0aW9uQ2xpZW50LmgKQEAg
LTMxLDcgKzMxLDcgQEAgbmFtZXNwYWNlIFdlYktpdCB7CiAKIGNsYXNzIFdlYlBhZ2U7CiAKLWNs
YXNzIFdlYkdlb2xvY2F0aW9uQ2xpZW50IDogcHVibGljIFdlYkNvcmU6Okdlb2xvY2F0aW9uQ2xp
ZW50IHsKK2NsYXNzIFdlYkdlb2xvY2F0aW9uQ2xpZW50IGZpbmFsIDogcHVibGljIFdlYkNvcmU6
Okdlb2xvY2F0aW9uQ2xpZW50IHsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1Ymxp
YzoKICAgICBXZWJHZW9sb2NhdGlvbkNsaWVudChXZWJQYWdlJiBwYWdlKQpAQCAtNDIsMTcgKzQy
LDE3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIH5XZWJHZW9sb2NhdGlvbkNsaWVudCgpOwogCiBw
cml2YXRlOgotICAgIHZvaWQgZ2VvbG9jYXRpb25EZXN0cm95ZWQoKSBvdmVycmlkZTsKKyAgICB2
b2lkIGdlb2xvY2F0aW9uRGVzdHJveWVkKCkgZmluYWw7CiAKLSAgICB2b2lkIHN0YXJ0VXBkYXRp
bmcoY29uc3QgU3RyaW5nJiBhdXRob3JpemF0aW9uVG9rZW4pIG92ZXJyaWRlOwotICAgIHZvaWQg
c3RvcFVwZGF0aW5nKCkgb3ZlcnJpZGU7Ci0gICAgdm9pZCByZXZva2VBdXRob3JpemF0aW9uVG9r
ZW4oY29uc3QgU3RyaW5nJikgb3ZlcnJpZGU7Ci0gICAgdm9pZCBzZXRFbmFibGVIaWdoQWNjdXJh
Y3koYm9vbCkgb3ZlcnJpZGU7CisgICAgdm9pZCBzdGFydFVwZGF0aW5nKGNvbnN0IFN0cmluZyYg
YXV0aG9yaXphdGlvblRva2VuLCBib29sIG5lZWRzSGlnaEFjY3VyYWN5KSBmaW5hbDsKKyAgICB2
b2lkIHN0b3BVcGRhdGluZygpIGZpbmFsOworICAgIHZvaWQgcmV2b2tlQXV0aG9yaXphdGlvblRv
a2VuKGNvbnN0IFN0cmluZyYpIGZpbmFsOworICAgIHZvaWQgc2V0RW5hYmxlSGlnaEFjY3VyYWN5
KGJvb2wpIGZpbmFsOwogCi0gICAgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpHZW9sb2NhdGlvblBv
c2l0aW9uRGF0YT4gbGFzdFBvc2l0aW9uKCkgb3ZlcnJpZGU7CisgICAgc3RkOjpvcHRpb25hbDxX
ZWJDb3JlOjpHZW9sb2NhdGlvblBvc2l0aW9uRGF0YT4gbGFzdFBvc2l0aW9uKCkgZmluYWw7CiAK
LSAgICB2b2lkIHJlcXVlc3RQZXJtaXNzaW9uKFdlYkNvcmU6Okdlb2xvY2F0aW9uJikgb3ZlcnJp
ZGU7Ci0gICAgdm9pZCBjYW5jZWxQZXJtaXNzaW9uUmVxdWVzdChXZWJDb3JlOjpHZW9sb2NhdGlv
biYpIG92ZXJyaWRlOworICAgIHZvaWQgcmVxdWVzdFBlcm1pc3Npb24oV2ViQ29yZTo6R2VvbG9j
YXRpb24mKSBmaW5hbDsKKyAgICB2b2lkIGNhbmNlbFBlcm1pc3Npb25SZXF1ZXN0KFdlYkNvcmU6
Okdlb2xvY2F0aW9uJikgZmluYWw7CiAKICAgICBXZWJQYWdlJiBtX3BhZ2U7CiB9OwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3BwIGIvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3BwCmluZGV4IGRkNDViNDU4OGJmOWRkMTI0ZTE4
ZmFhOTVhMzI2ZWQzMTkzMWE0NTcuLjc5OTYxM2QzNzc0MjM2M2JmYmRjZDk1Mjk3OTk2MjIwNmYw
MjI4YTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5jcHAKQEAgLTE1Mjcs
MTYgKzE1MjcsNiBAQCB2b2lkIFdlYlByb2Nlc3M6OnBhZ2VBY3Rpdml0eVN0YXRlRGlkQ2hhbmdl
KFBhZ2VJZGVudGlmaWVyLCBPcHRpb25TZXQ8V2ViQ29yZTo6QQogICAgIH0KIH0KIAotI2lmIFBM
QVRGT1JNKElPU19GQU1JTFkpCi12b2lkIFdlYlByb2Nlc3M6OnJlc2V0QWxsR2VvbG9jYXRpb25Q
ZXJtaXNzaW9ucygpCi17Ci0gICAgZm9yIChhdXRvJiBwYWdlIDogbV9wYWdlTWFwLnZhbHVlcygp
KSB7Ci0gICAgICAgIGlmIChGcmFtZSogbWFpbkZyYW1lID0gcGFnZS0+bWFpbkZyYW1lKCkpCi0g
ICAgICAgICAgICBtYWluRnJhbWUtPnJlc2V0QWxsR2VvbG9jYXRpb25QZXJtaXNzaW9uKCk7Ci0g
ICAgfQotfQotI2VuZGlmCi0KIHZvaWQgV2ViUHJvY2Vzczo6cHJlcGFyZVRvU3VzcGVuZChib29s
IGlzU3VzcGVuc2lvbkltbWluZW50LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYgY29tcGxl
dGlvbkhhbmRsZXIpCiB7CiAgICAgV0VCUFJPQ0VTU19SRUxFQVNFX0xPRyhQcm9jZXNzU3VzcGVu
c2lvbiwgInByZXBhcmVUb1N1c3BlbmQ6IGlzU3VzcGVuc2lvbkltbWluZW50PSVkIiwgaXNTdXNw
ZW5zaW9uSW1taW5lbnQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dl
YlByb2Nlc3MuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmgKaW5kZXgg
YzVkZDIyNWRjMWI3MWRhOWNkZDRlZWRiYTBhMDdlNzYxNzgxNTc1ZS4uNTk1YWYwYjk3NDEyOTBk
YTZjNzM0YTA4ODZiODI0ZDIzYjFlZTU3ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1dlYlByb2Nlc3MuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJv
Y2Vzcy5oCkBAIC0zMTAsMTAgKzMxMCw2IEBAIHB1YmxpYzoKIAogICAgIHZvaWQgaXNKSVRFbmFi
bGVkKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYpOwogCi0jaWYgUExBVEZPUk0oSU9T
X0ZBTUlMWSkKLSAgICB2b2lkIHJlc2V0QWxsR2VvbG9jYXRpb25QZXJtaXNzaW9ucygpOwotI2Vu
ZGlmCi0KICNpZiBQTEFURk9STShXQVlMQU5EKQogICAgIFdheWxhbmRDb21wb3NpdG9yRGlzcGxh
eSogd2F5bGFuZENvbXBvc2l0b3JEaXNwbGF5KCkgY29uc3QgeyByZXR1cm4gbV93YXlsYW5kQ29t
cG9zaXRvckRpc3BsYXkuZ2V0KCk7IH0KICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViR2VvbG9jYXRpb25DbGllbnQuaCBiL1NvdXJj
ZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkdlb2xvY2F0aW9uQ2xpZW50LmgK
aW5kZXggNzdjMjgyOGQ4NTk1MzYzNWI2NGM0Yzg5OTk5MGEwYTY0ODE3MWI2Yy4uYjA3Yzc5MDNk
MjkyYTkzMzkxZTVjNDBhZWRkNjVkZWRiYWY4YzVmMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViR2VvbG9jYXRpb25DbGllbnQuaAorKysgYi9T
b3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJHZW9sb2NhdGlvbkNsaWVu
dC5oCkBAIC0zOSw3ICszOSw3IEBAIHB1YmxpYzoKICAgICBXZWJWaWV3ICp3ZWJWaWV3KCkgeyBy
ZXR1cm4gbV93ZWJWaWV3OyB9CiAKICAgICB2b2lkIGdlb2xvY2F0aW9uRGVzdHJveWVkKCkgb3Zl
cnJpZGU7Ci0gICAgdm9pZCBzdGFydFVwZGF0aW5nKGNvbnN0IFN0cmluZyYgYXV0aG9yaXphdGlv
blRva2VuKSBvdmVycmlkZTsKKyAgICB2b2lkIHN0YXJ0VXBkYXRpbmcoY29uc3QgU3RyaW5nJiBh
dXRob3JpemF0aW9uVG9rZW4sIGJvb2wgZW5hYmxlSGlnaEFjY3VyYWN5KSBvdmVycmlkZTsKICAg
ICB2b2lkIHN0b3BVcGRhdGluZygpIG92ZXJyaWRlOwogI2lmIFBMQVRGT1JNKElPU19GQU1JTFkp
CiAgICAgLy8gRklYTUU6IHVuaWZ5IHRoaXMgd2l0aCBNYWMgb24gT3BlblNvdXJjZS4KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkdlb2xvY2F0
aW9uQ2xpZW50Lm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2Vi
R2VvbG9jYXRpb25DbGllbnQubW0KaW5kZXggZTc4OGE1N2RkNmY4MDdlN2IyNWM3NDJiYTgwMTkz
NTdhMjczNGQzOC4uYThiODUyMWUyZGE0NzE4ZGMxNGI0MzcwYjFhNWI0YjhkNjMyODU4OSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViR2VvbG9j
YXRpb25DbGllbnQubW0KKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBv
cnQvV2ViR2VvbG9jYXRpb25DbGllbnQubW0KQEAgLTgzLDkgKzgzLDE2IEBAIHZvaWQgV2ViR2Vv
bG9jYXRpb25DbGllbnQ6Omdlb2xvY2F0aW9uRGVzdHJveWVkKCkKICAgICBkZWxldGUgdGhpczsK
IH0KIAotdm9pZCBXZWJHZW9sb2NhdGlvbkNsaWVudDo6c3RhcnRVcGRhdGluZyhjb25zdCBTdHJp
bmcmIGF1dGhvcml6YXRpb25Ub2tlbikKK3ZvaWQgV2ViR2VvbG9jYXRpb25DbGllbnQ6OnN0YXJ0
VXBkYXRpbmcoY29uc3QgU3RyaW5nJiBhdXRob3JpemF0aW9uVG9rZW4sIGJvb2wgZW5hYmxlSGln
aEFjY3VyYWN5KQogewogICAgIFVOVVNFRF9QQVJBTShhdXRob3JpemF0aW9uVG9rZW4pOworI2lm
IFBMQVRGT1JNKElPU19GQU1JTFkpCisgICAgaWYgKGVuYWJsZUhpZ2hBY2N1cmFjeSkKKyAgICAg
ICAgc2V0RW5hYmxlSGlnaEFjY3VyYWN5KHRydWUpOworI2Vsc2UKKyAgICBVTlVTRURfUEFSQU0o
ZW5hYmxlSGlnaEFjY3VyYWN5KTsKKyNlbmRpZgorCiAgICAgW1ttX3dlYlZpZXcgX2dlb2xvY2F0
aW9uUHJvdmlkZXJdIHJlZ2lzdGVyV2ViVmlldzptX3dlYlZpZXddOwogfQogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJHZW9sb2NhdGlvbkNs
aWVudC5jcHAgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJHZW9s
b2NhdGlvbkNsaWVudC5jcHAKaW5kZXggZTFmY2EyNzcyNDk2MTU0YTRlMDcwZTRkZmRhN2U3N2U5
NzM1ODJjMS4uYWM1NDUxNGM2NDJlYTBlNWY4YWYzMzY5ZTFiYmJhZTBjMzkwNzFiNyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViQ29yZVN1cHBvcnQvV2ViR2VvbG9jYXRp
b25DbGllbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkNvcmVTdXBwb3J0
L1dlYkdlb2xvY2F0aW9uQ2xpZW50LmNwcApAQCAtNDgsOSArNDgsMTAgQEAgdm9pZCBXZWJHZW9s
b2NhdGlvbkNsaWVudDo6Z2VvbG9jYXRpb25EZXN0cm95ZWQoKQogICAgIGRlbGV0ZSB0aGlzOwog
fQogCi12b2lkIFdlYkdlb2xvY2F0aW9uQ2xpZW50OjpzdGFydFVwZGF0aW5nKGNvbnN0IFN0cmlu
ZyYgYXV0aG9yaXphdGlvblRva2VuKQordm9pZCBXZWJHZW9sb2NhdGlvbkNsaWVudDo6c3RhcnRV
cGRhdGluZyhjb25zdCBTdHJpbmcmIGF1dGhvcml6YXRpb25Ub2tlbiwgYm9vbCBlbmFibGVIaWdo
QWNjdXJhY3kpCiB7CiAgICAgVU5VU0VEX1BBUkFNKGF1dGhvcml6YXRpb25Ub2tlbik7CisgICAg
VU5VU0VEX1BBUkFNKGVuYWJsZUhpZ2hBY2N1cmFjeSk7CiAgICAgQ09NUHRyPElXZWJHZW9sb2Nh
dGlvblByb3ZpZGVyPiBwcm92aWRlcjsKICAgICBpZiAoRkFJTEVEKG1fd2ViVmlldy0+Z2VvbG9j
YXRpb25Qcm92aWRlcigmcHJvdmlkZXIpKSkKICAgICAgICAgcmV0dXJuOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViQ29yZVN1cHBvcnQvV2ViR2VvbG9jYXRpb25DbGll
bnQuaCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkdlb2xvY2F0
aW9uQ2xpZW50LmgKaW5kZXggMTk1NzQxN2I1NWQ3ZTVkMmY5YjcxZTVjOWQ5YzMwM2RmZWY0ZTE4
Ni4uNWI4ZTk0NDRmMjFmZWQ0M2VkZjI1OTFhMmJhMTVkYTNiZDQ0ZjQ0YSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViQ29yZVN1cHBvcnQvV2ViR2VvbG9jYXRpb25DbGll
bnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJHZW9s
b2NhdGlvbkNsaWVudC5oCkBAIC00MSw3ICs0MSw3IEBAIHB1YmxpYzoKICAgICBXZWJHZW9sb2Nh
dGlvbkNsaWVudChXZWJWaWV3Kik7CiAKICAgICB2b2lkIGdlb2xvY2F0aW9uRGVzdHJveWVkKCkg
ZmluYWw7Ci0gICAgdm9pZCBzdGFydFVwZGF0aW5nKGNvbnN0IFN0cmluZyYgYXV0aG9yaXphdGlv
blRva2VuKSBmaW5hbDsKKyAgICB2b2lkIHN0YXJ0VXBkYXRpbmcoY29uc3QgU3RyaW5nJiBhdXRo
b3JpemF0aW9uVG9rZW4sIGJvb2wgZW5hYmxlSGlnaEFjY3VyYWN5KSBmaW5hbDsKICAgICB2b2lk
IHN0b3BVcGRhdGluZygpIGZpbmFsOwogICAgIHZvaWQgc2V0RW5hYmxlSGlnaEFjY3VyYWN5KGJv
b2wpIGZpbmFsIHsgfQogICAgIHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6R2VvbG9jYXRpb25Qb3Np
dGlvbkRhdGE+IGxhc3RQb3NpdGlvbigpIGZpbmFsOwo=
</data>
<flag name="commit-queue"
          id="479039"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>452104</attachid>
            <date>2022-02-15 15:42:15 -0800</date>
            <delta_ts>2022-02-15 15:51:47 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-236566-20220215154214.patch</filename>
            <type>text/plain</type>
            <size>111631</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg5ODU2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IGY2MDY5ODliY2RhNjQyMTdkZTJlNzcw
ODM4NmYzNzA2N2ExYThkZTQuLjE4NzM2NzA0OWU1NTRiZmUyMGNjNWM3ZGQ0OThiZjJjZTVjYWNi
MzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMTUgQEAKKzIwMjItMDItMTMgIENocmlzIER1bWV6ICA8Y2R1bWV6
QGFwcGxlLmNvbT4KKworICAgICAgICBEbyBwcmVsaW1pbmFyeSB3b3JrIHRvIHBhc3MgZG9tYWlu
IG5hbWVzIHRvIENvcmVMb2NhdGlvbgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MjM2NTY2CisgICAgICAgIDxyZGFyOi8vODg3NjE0MTM+CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgRGFyaW4gQWRsZXIuCisKKyAgICAgICAgQWRkIGJ1aWxkIHRpbWUgZmxh
ZyBmb3IgcGFzc2luZyB3ZWJzaXRlIGlkZW50aWZpZXJzIHRvIENvcmVMb2NhdGlvbi4KKworICAg
ICAgICAqIHd0Zi9QbGF0Zm9ybUhhdmUuaDoKKwogMjAyMi0wMi0xNSAgUm9iaW4gTW9yaXNzZXQg
IDxybW9yaXNzZXRAYXBwbGUuY29tPgogCiAgICAgICAgIFtXR1NMXSBJbXBsZW1lbnQgZW5vdWdo
IG9mIHRoZSBsZXhlciBmb3IgdGhlIHNpbXBsZXN0IHNoYWRlcnMKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCBjYWM3
ZWMxNzI0OGNjMGM1YzQzYmM5NjUwZGZlODE4YWUxZDY2ZmM3Li44NWFlYWZlZTUzYTNkMmRlZGY4
ZTcxMmUwZjgwNTc2NWEzYjFjY2Q0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VM
b2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNTQgQEAKKzIwMjIt
MDItMTMgIENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KKworICAgICAgICBEbyBwcmVs
aW1pbmFyeSB3b3JrIHRvIHBhc3MgZG9tYWluIG5hbWVzIHRvIENvcmVMb2NhdGlvbgorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjM2NTY2CisgICAgICAg
IDxyZGFyOi8vODg3NjE0MTM+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgRGFyaW4gQWRsZXIuCisK
KyAgICAgICAgRG8gcHJlbGltaW5hcnkgd29yayB0byBwYXNzIGRvbWFpbiBuYW1lcyB0byBDb3Jl
TG9jYXRpb24gd2hlbiB1c2luZyB0aGUgR2VvbG9jYXRpb24gQVBJLgorICAgICAgICBUaGlzIHBp
cGVzIHRoZSBkb21haW4gbmFtZXMgYWxsIHRoZSB3YXkgZnJvbSB0aGUgR2VvbG9jYXRpb24gQVBJ
IHRvIHRoZSBDb3JlTG9jYXRpb24gY2FsbHMKKyAgICAgICAgYnV0IGRvZXNuJ3QgeWV0IHBhc3Mg
dGhlIGRvbWFpbiB0byBDb3JlTG9jYXRpb24gZHVlIHRvIDxyZGFyOi8vODg4MzQzMDE+LiBJIHdp
bGwgZm9sbG93LXVwCisgICAgICAgIG9uY2UgPHJkYXI6Ly84ODgzNDMwMT4gaXMgZml4ZWQuCisK
KyAgICAgICAgKiBNb2R1bGVzL2dlb2xvY2F0aW9uL0dlb2xvY2F0aW9uQ2xpZW50Lmg6CisgICAg
ICAgICogTW9kdWxlcy9nZW9sb2NhdGlvbi9HZW9sb2NhdGlvbkNvbnRyb2xsZXIuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6R2VvbG9jYXRpb25Db250cm9sbGVyOjpkaWROYXZpZ2F0ZVBhZ2UpOgor
ICAgICAgICAoV2ViQ29yZTo6R2VvbG9jYXRpb25Db250cm9sbGVyOjphZGRPYnNlcnZlcik6Cisg
ICAgICAgIChXZWJDb3JlOjpHZW9sb2NhdGlvbkNvbnRyb2xsZXI6OnJlbW92ZU9ic2VydmVyKToK
KyAgICAgICAgKFdlYkNvcmU6Okdlb2xvY2F0aW9uQ29udHJvbGxlcjo6YWN0aXZpdHlTdGF0ZURp
ZENoYW5nZSk6CisgICAgICAgIChXZWJDb3JlOjpHZW9sb2NhdGlvbkNvbnRyb2xsZXI6OnN0YXJ0
VXBkYXRpbmdJZk5lY2Vzc2FyeSk6CisgICAgICAgIChXZWJDb3JlOjpHZW9sb2NhdGlvbkNvbnRy
b2xsZXI6OnN0b3BVcGRhdGluZ0lmTmVjZXNzYXJ5KToKKyAgICAgICAgKiBNb2R1bGVzL2dlb2xv
Y2F0aW9uL0dlb2xvY2F0aW9uQ29udHJvbGxlci5oOgorICAgICAgICAoV2ViQ29yZTo6R2VvbG9j
YXRpb25Db250cm9sbGVyOjpuZWVkc0hpZ2hBY2N1cmFjeSBjb25zdCk6CisgICAgICAgICogTW9k
dWxlcy9nZW9sb2NhdGlvbi9HZW9sb2NhdGlvblBvc2l0aW9uRGF0YS5oOgorICAgICAgICAqIE1v
ZHVsZXMvZ2VvbG9jYXRpb24vaW9zL0dlb2xvY2F0aW9uUG9zaXRpb25EYXRhSU9TLm1tOgorICAg
ICAgICAqIFNvdXJjZXNDb2NvYS50eHQ6CisgICAgICAgICogV2ViQ29yZS54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qOgorICAgICAgICAqIHBhZ2UvUGFnZS5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpQYWdlOjpkaWRDb21taXRMb2FkKToKKyAgICAgICAgKiBwbGF0Zm9ybS9jb2NvYS9Db3JlTG9j
YXRpb25HZW9sb2NhdGlvblByb3ZpZGVyLmg6IENvcGllZCBmcm9tIFNvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvZ2VvbG9jYXRpb24vR2VvbG9jYXRpb25DbGllbnQuaC4KKyAgICAgICAgKiBwbGF0Zm9y
bS9jb2NvYS9Db3JlTG9jYXRpb25HZW9sb2NhdGlvblByb3ZpZGVyLm1tOiBBZGRlZC4KKyAgICAg
ICAgKGlzQXV0aG9yaXphdGlvbkdyYW50ZWQpOgorICAgICAgICAoLVtXZWJDTExvY2F0aW9uTWFu
YWdlciBpbml0V2l0aFdlYnNpdGVJZGVudGlmaWVyOmNsaWVudDpdKToKKyAgICAgICAgKC1bV2Vi
Q0xMb2NhdGlvbk1hbmFnZXIgZGVhbGxvY10pOgorICAgICAgICAoLVtXZWJDTExvY2F0aW9uTWFu
YWdlciBzdGFydF0pOgorICAgICAgICAoLVtXZWJDTExvY2F0aW9uTWFuYWdlciBzdG9wXSk6Cisg
ICAgICAgICgtW1dlYkNMTG9jYXRpb25NYW5hZ2VyIHNldEVuYWJsZUhpZ2hBY2N1cmFjeTpdKToK
KyAgICAgICAgKC1bV2ViQ0xMb2NhdGlvbk1hbmFnZXIgcmVxdWVzdEdlb2xvY2F0aW9uQXV0aG9y
aXphdGlvbl0pOgorICAgICAgICAoLVtXZWJDTExvY2F0aW9uTWFuYWdlciBsb2NhdGlvbk1hbmFn
ZXJEaWRDaGFuZ2VBdXRob3JpemF0aW9uOl0pOgorICAgICAgICAoLVtXZWJDTExvY2F0aW9uTWFu
YWdlciBsb2NhdGlvbk1hbmFnZXI6ZGlkVXBkYXRlTG9jYXRpb25zOl0pOgorICAgICAgICAoLVtX
ZWJDTExvY2F0aW9uTWFuYWdlciBsb2NhdGlvbk1hbmFnZXI6ZGlkRmFpbFdpdGhFcnJvcjpdKToK
KyAgICAgICAgKFdlYkNvcmU6OkNvcmVMb2NhdGlvbkdlb2xvY2F0aW9uUHJvdmlkZXI6OkNvcmVM
b2NhdGlvbkdlb2xvY2F0aW9uUHJvdmlkZXIpOgorICAgICAgICAoV2ViQ29yZTo6Q29yZUxvY2F0
aW9uR2VvbG9jYXRpb25Qcm92aWRlcjo6fkNvcmVMb2NhdGlvbkdlb2xvY2F0aW9uUHJvdmlkZXIp
OgorICAgICAgICAoV2ViQ29yZTo6Q29yZUxvY2F0aW9uR2VvbG9jYXRpb25Qcm92aWRlcjo6c3Rh
cnQpOgorICAgICAgICAoV2ViQ29yZTo6Q29yZUxvY2F0aW9uR2VvbG9jYXRpb25Qcm92aWRlcjo6
c3RvcCk6CisgICAgICAgIChXZWJDb3JlOjpDb3JlTG9jYXRpb25HZW9sb2NhdGlvblByb3ZpZGVy
OjpzZXRFbmFibGVIaWdoQWNjdXJhY3kpOgorICAgICAgICAoV2ViQ29yZTo6Q29yZUxvY2F0aW9u
R2VvbG9jYXRpb25Qcm92aWRlcjo6cmVxdWVzdEF1dGhvcml6YXRpb24pOgorICAgICAgICAqIHBs
YXRmb3JtL21vY2svR2VvbG9jYXRpb25DbGllbnRNb2NrLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
Okdlb2xvY2F0aW9uQ2xpZW50TW9jazo6c3RhcnRVcGRhdGluZyk6CisgICAgICAgICogcGxhdGZv
cm0vbW9jay9HZW9sb2NhdGlvbkNsaWVudE1vY2suaDoKKwogMjAyMi0wMi0xNSAgRnVqaWkgSGly
b25vcmkgIDxIaXJvbm9yaS5GdWppaUBzb255LmNvbT4KIAogICAgICAgICBbVGV4dHVyZU1hcHBl
ckdMXSBkcm9wLXNoYWRvdyBmaWx0ZXIgd2l0aCBibHVyLXJhZGl1cyBkb2Vzbid0IHdvcmsgYXMg
ZXhwZWN0ZWQgaWYgaXQgaXMgdGhlIGxhc3QgZmlsdGVyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDM3OTQxYjFmNzRh
OTVlMTE0ODQ1ZGY4MTVlMjZkMWRjZTM4MDkyYjUuLjhiNzc0MDZkNTMyMmU2N2U2YjYxNDU5Y2Fl
ZTY0ZTA0MjdmZWRjMWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBi
L1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsOTQgQEAKKzIwMjItMDItMTMgIENo
cmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KKworICAgICAgICBEbyBwcmVsaW1pbmFyeSB3
b3JrIHRvIHBhc3MgZG9tYWluIG5hbWVzIHRvIENvcmVMb2NhdGlvbgorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjM2NTY2CisgICAgICAgIDxyZGFyOi8v
ODg3NjE0MTM+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgRGFyaW4gQWRsZXIuCisKKyAgICAgICAg
RG8gcHJlbGltaW5hcnkgd29yayB0byBwYXNzIGRvbWFpbiBuYW1lcyB0byBDb3JlTG9jYXRpb24g
d2hlbiB1c2luZyB0aGUgR2VvbG9jYXRpb24gQVBJLgorICAgICAgICBUaGlzIHBpcGVzIHRoZSBk
b21haW4gbmFtZXMgYWxsIHRoZSB3YXkgZnJvbSB0aGUgR2VvbG9jYXRpb24gQVBJIHRvIHRoZSBD
b3JlTG9jYXRpb24gY2FsbHMKKyAgICAgICAgYnV0IGRvZXNuJ3QgeWV0IHBhc3MgdGhlIGRvbWFp
biB0byBDb3JlTG9jYXRpb24gZHVlIHRvIDxyZGFyOi8vODg4MzQzMDE+LiBJIHdpbGwgZm9sbG93
LXVwCisgICAgICAgIG9uY2UgPHJkYXI6Ly84ODgzNDMwMT4gaXMgZml4ZWQuCisKKyAgICAgICAg
KiBTb3VyY2VzQ29jb2EudHh0OgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQy9XS0dlb2xvY2F0
aW9uTWFuYWdlci5jcHA6CisgICAgICAgIChXS0dlb2xvY2F0aW9uTWFuYWdlclNldFByb3ZpZGVy
KToKKyAgICAgICAgKiBVSVByb2Nlc3MvQ29jb2EvV2ViR2VvbG9jYXRpb25NYW5hZ2VyUHJveHlD
b2NvYS5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViS2l0OjpXZWJHZW9sb2NhdGlvbk1hbmFnZXJQ
cm94eTo6cG9zaXRpb25DaGFuZ2VkKToKKyAgICAgICAgKFdlYktpdDo6V2ViR2VvbG9jYXRpb25N
YW5hZ2VyUHJveHk6OmVycm9yT2NjdXJyZWQpOgorICAgICAgICAoV2ViS2l0OjpXZWJHZW9sb2Nh
dGlvbk1hbmFnZXJQcm94eTo6cmVzZXRHZW9sb2NhdGlvbik6CisgICAgICAgIChXZWJLaXQ6Oldl
Ykdlb2xvY2F0aW9uTWFuYWdlclByb3h5Ojppc1VwZGF0aW5nIGNvbnN0KToKKyAgICAgICAgKFdl
YktpdDo6V2ViR2VvbG9jYXRpb25NYW5hZ2VyUHJveHk6OmlzSGlnaEFjY3VyYWN5RW5hYmxlZCBj
b25zdCk6CisgICAgICAgIChXZWJLaXQ6OldlYkdlb2xvY2F0aW9uTWFuYWdlclByb3h5Ojpwcm92
aWRlclN0YXJ0VXBkYXRpbmcpOgorICAgICAgICAoV2ViS2l0OjpXZWJHZW9sb2NhdGlvbk1hbmFn
ZXJQcm94eTo6cHJvdmlkZXJTdG9wVXBkYXRpbmcpOgorICAgICAgICAoV2ViS2l0OjpXZWJHZW9s
b2NhdGlvbk1hbmFnZXJQcm94eTo6cHJvdmlkZXJTZXRFbmFibGVkSGlnaEFjY3VyYWN5KToKKyAg
ICAgICAgKiBVSVByb2Nlc3MvV2ViR2VvbG9jYXRpb25NYW5hZ2VyUHJveHkuY3BwOgorICAgICAg
ICAoV2ViS2l0OjpXZWJHZW9sb2NhdGlvbk1hbmFnZXJQcm94eTo6V2ViR2VvbG9jYXRpb25NYW5h
Z2VyUHJveHkpOgorICAgICAgICAoV2ViS2l0OjpXZWJHZW9sb2NhdGlvbk1hbmFnZXJQcm94eTo6
cHJvY2Vzc1Bvb2xEZXN0cm95ZWQpOgorICAgICAgICAoV2ViS2l0OjpXZWJHZW9sb2NhdGlvbk1h
bmFnZXJQcm94eTo6cHJvY2Vzc0RpZENsb3NlKToKKyAgICAgICAgKFdlYktpdDo6V2ViR2VvbG9j
YXRpb25NYW5hZ2VyUHJveHk6OnByb3ZpZGVyRGlkQ2hhbmdlUG9zaXRpb24pOgorICAgICAgICAo
V2ViS2l0OjpXZWJHZW9sb2NhdGlvbk1hbmFnZXJQcm94eTo6cHJvdmlkZXJEaWRGYWlsVG9EZXRl
cm1pbmVQb3NpdGlvbik6CisgICAgICAgIChXZWJLaXQ6OldlYkdlb2xvY2F0aW9uTWFuYWdlclBy
b3h5OjpzdGFydFVwZGF0aW5nKToKKyAgICAgICAgKFdlYktpdDo6V2ViR2VvbG9jYXRpb25NYW5h
Z2VyUHJveHk6OnN0b3BVcGRhdGluZyk6CisgICAgICAgIChXZWJLaXQ6OldlYkdlb2xvY2F0aW9u
TWFuYWdlclByb3h5OjpzZXRFbmFibGVIaWdoQWNjdXJhY3kpOgorICAgICAgICAoV2ViS2l0OjpX
ZWJHZW9sb2NhdGlvbk1hbmFnZXJQcm94eTo6c2V0UHJvdmlkZXIpOgorICAgICAgICAoV2ViS2l0
OjpXZWJHZW9sb2NhdGlvbk1hbmFnZXJQcm94eTo6aXNVcGRhdGluZyBjb25zdCk6CisgICAgICAg
IChXZWJLaXQ6OldlYkdlb2xvY2F0aW9uTWFuYWdlclByb3h5Ojppc0hpZ2hBY2N1cmFjeUVuYWJs
ZWQgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpXZWJHZW9sb2NhdGlvbk1hbmFnZXJQcm94eTo6
cHJvdmlkZXJTdGFydFVwZGF0aW5nKToKKyAgICAgICAgKFdlYktpdDo6V2ViR2VvbG9jYXRpb25N
YW5hZ2VyUHJveHk6OnByb3ZpZGVyU3RvcFVwZGF0aW5nKToKKyAgICAgICAgKFdlYktpdDo6V2Vi
R2VvbG9jYXRpb25NYW5hZ2VyUHJveHk6OnByb3ZpZGVyU2V0RW5hYmxlZEhpZ2hBY2N1cmFjeSk6
CisgICAgICAgIChXZWJLaXQ6OldlYkdlb2xvY2F0aW9uTWFuYWdlclByb3h5OjpyZXNldFBlcm1p
c3Npb25zKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYktpdDo6V2ViR2VvbG9jYXRpb25NYW5hZ2Vy
UHJveHk6OnJlbW92ZVJlcXVlc3Rlcik6IERlbGV0ZWQuCisgICAgICAgICogVUlQcm9jZXNzL1dl
Ykdlb2xvY2F0aW9uTWFuYWdlclByb3h5Lmg6CisgICAgICAgIChXZWJLaXQ6OldlYkdlb2xvY2F0
aW9uTWFuYWdlclByb3h5OjpsYXN0UG9zaXRpb24gY29uc3QpOiBEZWxldGVkLgorICAgICAgICAo
V2ViS2l0OjpXZWJHZW9sb2NhdGlvbk1hbmFnZXJQcm94eTo6aXNVcGRhdGluZyBjb25zdCk6IERl
bGV0ZWQuCisgICAgICAgIChXZWJLaXQ6OldlYkdlb2xvY2F0aW9uTWFuYWdlclByb3h5Ojppc0hp
Z2hBY2N1cmFjeUVuYWJsZWQgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAqIFVJUHJvY2Vzcy9X
ZWJHZW9sb2NhdGlvbk1hbmFnZXJQcm94eS5tZXNzYWdlcy5pbjoKKyAgICAgICAgKiBVSVByb2Nl
c3MvaW9zL1dLR2VvbG9jYXRpb25Qcm92aWRlcklPUy5tbToKKyAgICAgICAgKC1bV0tHZW9sb2Nh
dGlvblByb3ZpZGVySU9TIF9zdGFydFVwZGF0aW5nXSk6CisgICAgICAgICgtW1dLR2VvbG9jYXRp
b25Qcm92aWRlcklPUyBfc3RvcFVwZGF0aW5nXSk6CisgICAgICAgICgtW1dLR2VvbG9jYXRpb25Q
cm92aWRlcklPUyBfc2V0RW5hYmxlSGlnaEFjY3VyYWN5Ol0pOgorICAgICAgICAoLVtXS0dlb2xv
Y2F0aW9uUHJvdmlkZXJJT1MgaW5pdFdpdGhQcm9jZXNzUG9vbDpdKToKKyAgICAgICAgKC1bV0tH
ZW9sb2NhdGlvblByb3ZpZGVySU9TIGRlY2lkZVBvbGljeUZvckdlb2xvY2F0aW9uUmVxdWVzdEZy
b21PcmlnaW46Y29tcGxldGlvbkhhbmRsZXI6dmlldzpdKToKKyAgICAgICAgKC1bV0tHZW9sb2Nh
dGlvblByb3ZpZGVySU9TIGdlb2xvY2F0aW9uQXV0aG9yaXphdGlvbkdyYW50ZWRdKToKKyAgICAg
ICAgKC1bV0tHZW9sb2NhdGlvblByb3ZpZGVySU9TIHBvc2l0aW9uQ2hhbmdlZDpdKToKKyAgICAg
ICAgKC1bV0tHZW9sb2NhdGlvblByb3ZpZGVySU9TIGVycm9yT2NjdXJyZWQ6XSk6CisgICAgICAg
ICgtW1dLR2VvbG9jYXRpb25Qcm92aWRlcklPUyByZXNldEdlb2xvY2F0aW9uXSk6CisgICAgICAg
IChzdGFydFVwZGF0aW5nQ2FsbGJhY2spOiBEZWxldGVkLgorICAgICAgICAoc3RvcFVwZGF0aW5n
Q2FsbGJhY2spOiBEZWxldGVkLgorICAgICAgICAoc2V0RW5hYmxlSGlnaEFjY3VyYWN5KTogRGVs
ZXRlZC4KKyAgICAgICAgKC1bV0tMZWdhY3lDb3JlTG9jYXRpb25Qcm92aWRlciBzZXRMaXN0ZW5l
cjpdKTogRGVsZXRlZC4KKyAgICAgICAgKC1bV0tMZWdhY3lDb3JlTG9jYXRpb25Qcm92aWRlciBy
ZXF1ZXN0R2VvbG9jYXRpb25BdXRob3JpemF0aW9uXSk6IERlbGV0ZWQuCisgICAgICAgICgtW1dL
TGVnYWN5Q29yZUxvY2F0aW9uUHJvdmlkZXIgc3RhcnRdKTogRGVsZXRlZC4KKyAgICAgICAgKC1b
V0tMZWdhY3lDb3JlTG9jYXRpb25Qcm92aWRlciBzdG9wXSk6IERlbGV0ZWQuCisgICAgICAgICgt
W1dLTGVnYWN5Q29yZUxvY2F0aW9uUHJvdmlkZXIgc2V0RW5hYmxlSGlnaEFjY3VyYWN5Ol0pOiBE
ZWxldGVkLgorICAgICAgICAoLVtXS0xlZ2FjeUNvcmVMb2NhdGlvblByb3ZpZGVyIGdlb2xvY2F0
aW9uQXV0aG9yaXphdGlvbkdyYW50ZWRdKTogRGVsZXRlZC4KKyAgICAgICAgKC1bV0tMZWdhY3lD
b3JlTG9jYXRpb25Qcm92aWRlciBnZW9sb2NhdGlvbkF1dGhvcml6YXRpb25EZW5pZWRdKTogRGVs
ZXRlZC4KKyAgICAgICAgKC1bV0tMZWdhY3lDb3JlTG9jYXRpb25Qcm92aWRlciBwb3NpdGlvbkNo
YW5nZWQ6XSk6IERlbGV0ZWQuCisgICAgICAgICgtW1dLTGVnYWN5Q29yZUxvY2F0aW9uUHJvdmlk
ZXIgZXJyb3JPY2N1cnJlZDpdKTogRGVsZXRlZC4KKyAgICAgICAgKC1bV0tMZWdhY3lDb3JlTG9j
YXRpb25Qcm92aWRlciByZXNldEdlb2xvY2F0aW9uXSk6IERlbGV0ZWQuCisgICAgICAgICogV2Vi
S2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogV2ViUHJvY2Vzcy9HZW9s
b2NhdGlvbi9XZWJHZW9sb2NhdGlvbk1hbmFnZXIuY3BwOgorICAgICAgICAoV2ViS2l0OjpyZWdp
c3RyYWJsZURvbWFpbkZvclBhZ2UpOgorICAgICAgICAoV2ViS2l0OjpXZWJHZW9sb2NhdGlvbk1h
bmFnZXI6OnJlZ2lzdGVyV2ViUGFnZSk6CisgICAgICAgIChXZWJLaXQ6OldlYkdlb2xvY2F0aW9u
TWFuYWdlcjo6dW5yZWdpc3RlcldlYlBhZ2UpOgorICAgICAgICAoV2ViS2l0OjpXZWJHZW9sb2Nh
dGlvbk1hbmFnZXI6OnNldEVuYWJsZUhpZ2hBY2N1cmFjeUZvclBhZ2UpOgorICAgICAgICAoV2Vi
S2l0OjpXZWJHZW9sb2NhdGlvbk1hbmFnZXI6OmRpZENoYW5nZVBvc2l0aW9uKToKKyAgICAgICAg
KFdlYktpdDo6V2ViR2VvbG9jYXRpb25NYW5hZ2VyOjpkaWRGYWlsVG9EZXRlcm1pbmVQb3NpdGlv
bik6CisgICAgICAgIChXZWJLaXQ6OldlYkdlb2xvY2F0aW9uTWFuYWdlcjo6cmVzZXRQZXJtaXNz
aW9ucyk6CisgICAgICAgIChXZWJLaXQ6OldlYkdlb2xvY2F0aW9uTWFuYWdlcjo6aXNVcGRhdGlu
ZyBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJLaXQ6OldlYkdlb2xvY2F0aW9uTWFuYWdl
cjo6aXNIaWdoQWNjdXJhY3lFbmFibGVkIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKiBXZWJQ
cm9jZXNzL0dlb2xvY2F0aW9uL1dlYkdlb2xvY2F0aW9uTWFuYWdlci5oOgorICAgICAgICAqIFdl
YlByb2Nlc3MvR2VvbG9jYXRpb24vV2ViR2VvbG9jYXRpb25NYW5hZ2VyLm1lc3NhZ2VzLmluOgor
ICAgICAgICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViR2VvbG9jYXRpb25DbGllbnQu
Y3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJHZW9sb2NhdGlvbkNsaWVudDo6c3RhcnRVcGRhdGlu
Zyk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJHZW9sb2NhdGlvbkNs
aWVudC5oOgorICAgICAgICAoV2ViS2l0OjpXZWJHZW9sb2NhdGlvbkNsaWVudDo6V2ViR2VvbG9j
YXRpb25DbGllbnQpOiBEZWxldGVkLgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUHJvY2Vzcy5j
cHA6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3M6OnJlc2V0QWxsR2VvbG9jYXRpb25QZXJt
aXNzaW9ucyk6IERlbGV0ZWQuCisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmg6CisK
IDIwMjItMDItMTUgIFdlbnNvbiBIc2llaCAgPHdlbnNvbl9oc2llaEBhcHBsZS5jb20+CiAKICAg
ICAgICAgW21hY09TXSBBZGQgYSBjb250ZXh0IG1lbnUgaXRlbSB0byAiQ29weSBDcm9wcGVkIElt
YWdlIgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9nIGIvU291
cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9nCmluZGV4IGY0ZTg2NWRmMTc5OTk1ZWVlOWQy
MDJmYWY1NmMxZTIwZmU3NmE0ZGIuLmM2YTJkYzM5OTFiMDkxMjA3YThkZWQ5MThhZDAxMDAzOGI0
MDhmMTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxvZworKysg
Yi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNSBAQAorMjAy
Mi0wMi0xMyAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgorCisgICAgICAgIERvIHBy
ZWxpbWluYXJ5IHdvcmsgdG8gcGFzcyBkb21haW4gbmFtZXMgdG8gQ29yZUxvY2F0aW9uCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzY1NjYKKyAgICAg
ICAgPHJkYXI6Ly84ODc2MTQxMz4KKworICAgICAgICBSZXZpZXdlZCBieSBEYXJpbiBBZGxlci4K
KworICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYkdlb2xvY2F0aW9uQ2xpZW50Lmg6CisgICAg
ICAgICogV2ViQ29yZVN1cHBvcnQvV2ViR2VvbG9jYXRpb25DbGllbnQubW06CisgICAgICAgIChX
ZWJHZW9sb2NhdGlvbkNsaWVudDo6c3RhcnRVcGRhdGluZyk6CisKIDIwMjItMDItMTUgIFdlbnNv
biBIc2llaCAgPHdlbnNvbl9oc2llaEBhcHBsZS5jb20+CiAKICAgICAgICAgW21hY09TXSBBZGQg
YSBjb250ZXh0IG1lbnUgaXRlbSB0byAiQ29weSBDcm9wcGVkIEltYWdlIgpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdExlZ2FjeS93aW4vQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdExlZ2FjeS93
aW4vQ2hhbmdlTG9nCmluZGV4IDY5NWFhOTEwNTM5ZWYwMjEwNWY1MjE5MzA0YzA5N2UxMDMxMjY0
NTUuLmY0MDBmMzY3ZDA1MmFiZTU4NzU5YTVkNzJjNTI5NjUxZGQ5OTE0M2YgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0TGVn
YWN5L3dpbi9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNSBAQAorMjAyMi0wMi0xMyAgQ2hyaXMgRHVt
ZXogIDxjZHVtZXpAYXBwbGUuY29tPgorCisgICAgICAgIERvIHByZWxpbWluYXJ5IHdvcmsgdG8g
cGFzcyBkb21haW4gbmFtZXMgdG8gQ29yZUxvY2F0aW9uCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzY1NjYKKyAgICAgICAgPHJkYXI6Ly84ODc2MTQx
Mz4KKworICAgICAgICBSZXZpZXdlZCBieSBEYXJpbiBBZGxlci4KKworICAgICAgICAqIFdlYkNv
cmVTdXBwb3J0L1dlYkdlb2xvY2F0aW9uQ2xpZW50LmNwcDoKKyAgICAgICAgKFdlYkdlb2xvY2F0
aW9uQ2xpZW50OjpzdGFydFVwZGF0aW5nKToKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJH
ZW9sb2NhdGlvbkNsaWVudC5oOgorCiAyMDIyLTAyLTAxICBNeWxlcyBDLiBNYXhmaWVsZCAgPG1t
YXhmaWVsZEBhcHBsZS5jb20+CiAKICAgICAgICAgUmVuYW1lIEZvbnRDYXNjYWRlOjpmb250TWV0
cmljcygpIGFuZCBSZW5kZXJTdHlsZTo6Zm9udE1ldHJpY3MoKSB0byBmb250TWV0cmljc09mUHJp
bWFyeUZvbnQoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvUGxhdGZvcm1IYXZlLmggYi9T
b3VyY2UvV1RGL3d0Zi9QbGF0Zm9ybUhhdmUuaAppbmRleCAwOTJiYzM2MjE1MDFkNDRjZWFmYjA3
MGZhY2NkMzk5NWNkYTIzMTI3Li45ODA3ZTI0N2NkNWYwYTIyMzYwNTc2Y2I0N2ZhNzQ2MzFjOWZh
MzllIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9QbGF0Zm9ybUhhdmUuaAorKysgYi9Tb3Vy
Y2UvV1RGL3d0Zi9QbGF0Zm9ybUhhdmUuaApAQCAtMTExOSw2ICsxMTE5LDIyIEBACiAjZGVmaW5l
IEhBVkVfTlNURVhUTElTVF9NQVJLRVJfRk9STUFUUyAxCiAjZW5kaWYKIAorI2lmIChQTEFURk9S
TShJT1MpICYmIF9fSVBIT05FX09TX1ZFUlNJT05fTUFYX0FMTE9XRUQgPj0gMTYwMDAwKSBcCisg
ICAgfHwgKFBMQVRGT1JNKFdBVENIT1MpICYmIF9fV0FUQ0hfT1NfVkVSU0lPTl9NQVhfQUxMT1dF
RCA+PSA5MDAwMCkgXAorICAgIHx8IChQTEFURk9STShBUFBMRVRWKSAmJiBfX1RWX09TX1ZFUlNJ
T05fTUFYX0FMTE9XRUQgPj0gMTYwMDAwKQorI2RlZmluZSBIQVZFX0NPUkVfTE9DQVRJT05fV0VC
U0lURV9JREVOVElGSUVSUyAxCisjZW5kaWYKKworI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpIHx8
IChQTEFURk9STShNQUMpICYmIF9fTUFDX09TX1hfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0gMTAx
NDAwICYmIGRlZmluZWQgX19oYXNfaW5jbHVkZSAmJiBfX2hhc19pbmNsdWRlKDxDb3JlRm91bmRh
dGlvbi9DRlByaXYuaD4pKQorI2RlZmluZSBIQVZFX0NPUkVfTE9DQVRJT05fQVVUSE9SSVpFRF9X
SEVOX0lOX1VTRSAxCisjZW5kaWYKKworI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpIHx8IChQTEFU
Rk9STShNQUMpICYmIF9fTUFDX09TX1hfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0gMTAxNjAwKQor
I2RlZmluZSBIQVZFX0NPUkVfTE9DQVRJT05fQVVUSE9SSVpBVElPTl9TVEFUVVNfSU5TVEFMTF9Q
Uk9QRVJUWSAxCisjZGVmaW5lIEhBVkVfQ09SRV9MT0NBVElPTl9ESURfQ0hBTkdFX0FVVEhPUkla
QVRJT04gMQorI2RlZmluZSBIQVZFX0NPUkVfTE9DQVRJT05fUkVRVUVTVF9BVVRIT1JJWkFUSU9O
IDEKKyNlbmRpZgorCiAjaWYgUExBVEZPUk0oTUFDKQogI2RlZmluZSBIQVZFX1NDRU5FS0lUIDEK
ICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9nZW9sb2NhdGlvbi9H
ZW9sb2NhdGlvbkNsaWVudC5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9nZW9sb2NhdGlvbi9H
ZW9sb2NhdGlvbkNsaWVudC5oCmluZGV4IDViYWYzYWQ4MmM1N2U1YWNiYTk2ZTNkZjBlZDYwZWJj
NzU0YmNiMDUuLmE0ZTg2MjM2MjU1NjdlOWFkZmViMDBkODI0MDAwYTI3N2RiZWFmMDAgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZ2VvbG9jYXRpb24vR2VvbG9jYXRpb25DbGll
bnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2dlb2xvY2F0aW9uL0dlb2xvY2F0aW9u
Q2xpZW50LmgKQEAgLTM4LDcgKzM4LDcgQEAgY2xhc3MgR2VvbG9jYXRpb25DbGllbnQgewogcHVi
bGljOgogICAgIHZpcnR1YWwgdm9pZCBnZW9sb2NhdGlvbkRlc3Ryb3llZCgpID0gMDsKIAotICAg
IHZpcnR1YWwgdm9pZCBzdGFydFVwZGF0aW5nKGNvbnN0IFN0cmluZyYgYXV0aG9yaXphdGlvblRv
a2VuKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHN0YXJ0VXBkYXRpbmcoY29uc3QgU3RyaW5nJiBh
dXRob3JpemF0aW9uVG9rZW4sIGJvb2wgbmVlZHNIaWdoQWNjdXJhY3kpID0gMDsKICAgICB2aXJ0
dWFsIHZvaWQgc3RvcFVwZGF0aW5nKCkgPSAwOwogICAgIHZpcnR1YWwgdm9pZCByZXZva2VBdXRo
b3JpemF0aW9uVG9rZW4oY29uc3QgU3RyaW5nJikgeyB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvZ2VvbG9jYXRpb24vR2VvbG9jYXRpb25Db250cm9sbGVyLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvZ2VvbG9jYXRpb24vR2VvbG9jYXRpb25Db250cm9sbGVyLmNw
cAppbmRleCAwNjE2MjkxNjBkOWJjYzdkNWRhZjc0Y2ZjNGY4MTU1MGJhNDhkZThjLi4wN2RkNjVm
M2MxYWVlNzllYjljNzMyODM2YTJkNWFhZDAxNzMzM2NmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2dlb2xvY2F0aW9uL0dlb2xvY2F0aW9uQ29udHJvbGxlci5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9nZW9sb2NhdGlvbi9HZW9sb2NhdGlvbkNvbnRyb2xsZXIu
Y3BwCkBAIC01MiwxOSArNTIsMjUgQEAgR2VvbG9jYXRpb25Db250cm9sbGVyOjp+R2VvbG9jYXRp
b25Db250cm9sbGVyKCkKICAgICBtX2NsaWVudC5nZW9sb2NhdGlvbkRlc3Ryb3llZCgpOwogfQog
Cit2b2lkIEdlb2xvY2F0aW9uQ29udHJvbGxlcjo6ZGlkTmF2aWdhdGVQYWdlKCkKK3sKKyAgICB3
aGlsZSAoIW1fb2JzZXJ2ZXJzLmlzRW1wdHkoKSkKKyAgICAgICAgcmVtb3ZlT2JzZXJ2ZXIobV9v
YnNlcnZlcnMuYmVnaW4oKS0+Z2V0KCkpOworfQorCiB2b2lkIEdlb2xvY2F0aW9uQ29udHJvbGxl
cjo6YWRkT2JzZXJ2ZXIoR2VvbG9jYXRpb24mIG9ic2VydmVyLCBib29sIGVuYWJsZUhpZ2hBY2N1
cmFjeSkKIHsKLSAgICAvLyBUaGlzIG1heSBiZSBjYWxsZWQgbXVsdGlwbGUgdGltZXMgd2l0aCB0
aGUgc2FtZSBvYnNlcnZlciwgdGhvdWdoIHJlbW92ZU9ic2VydmVyKCkKLSAgICAvLyBpcyBjYWxs
ZWQgb25seSBvbmNlIHdpdGggZWFjaC4KLSAgICBib29sIHdhc0VtcHR5ID0gbV9vYnNlcnZlcnMu
aXNFbXB0eSgpOworICAgIGJvb2wgaGlnaEFjY3VyYWN5V2FzUmVxdWlyZWQgPSBuZWVkc0hpZ2hB
Y2N1cmFjeSgpOworCiAgICAgbV9vYnNlcnZlcnMuYWRkKG9ic2VydmVyKTsKICAgICBpZiAoZW5h
YmxlSGlnaEFjY3VyYWN5KQogICAgICAgICBtX2hpZ2hBY2N1cmFjeU9ic2VydmVycy5hZGQob2Jz
ZXJ2ZXIpOwogCi0gICAgaWYgKGVuYWJsZUhpZ2hBY2N1cmFjeSkKLSAgICAgICAgbV9jbGllbnQu
c2V0RW5hYmxlSGlnaEFjY3VyYWN5KHRydWUpOwotICAgIGlmICh3YXNFbXB0eSAmJiBtX3BhZ2Uu
aXNWaXNpYmxlKCkpCi0gICAgICAgIG1fY2xpZW50LnN0YXJ0VXBkYXRpbmcob2JzZXJ2ZXIuYXV0
aG9yaXphdGlvblRva2VuKCkpOworICAgIGlmIChtX2lzVXBkYXRpbmcpIHsKKyAgICAgICAgaWYg
KCFoaWdoQWNjdXJhY3lXYXNSZXF1aXJlZCAmJiBlbmFibGVIaWdoQWNjdXJhY3kpCisgICAgICAg
ICAgICBtX2NsaWVudC5zZXRFbmFibGVIaWdoQWNjdXJhY3kodHJ1ZSk7CisgICAgfSBlbHNlCisg
ICAgICAgIHN0YXJ0VXBkYXRpbmdJZk5lY2Vzc2FyeSgpOwogfQogCiB2b2lkIEdlb2xvY2F0aW9u
Q29udHJvbGxlcjo6cmVtb3ZlT2JzZXJ2ZXIoR2VvbG9jYXRpb24mIG9ic2VydmVyKQpAQCAtNzIs
MTIgKzc4LDE3IEBAIHZvaWQgR2VvbG9jYXRpb25Db250cm9sbGVyOjpyZW1vdmVPYnNlcnZlcihH
ZW9sb2NhdGlvbiYgb2JzZXJ2ZXIpCiAgICAgaWYgKCFtX29ic2VydmVycy5jb250YWlucyhvYnNl
cnZlcikpCiAgICAgICAgIHJldHVybjsKIAorICAgIGJvb2wgaGlnaEFjY3VyYWN5V2FzUmVxdWly
ZWQgPSBuZWVkc0hpZ2hBY2N1cmFjeSgpOworCiAgICAgbV9vYnNlcnZlcnMucmVtb3ZlKG9ic2Vy
dmVyKTsKICAgICBtX2hpZ2hBY2N1cmFjeU9ic2VydmVycy5yZW1vdmUob2JzZXJ2ZXIpOwogCisg
ICAgaWYgKCFtX2lzVXBkYXRpbmcpCisgICAgICAgIHJldHVybjsKKwogICAgIGlmIChtX29ic2Vy
dmVycy5pc0VtcHR5KCkpCi0gICAgICAgIG1fY2xpZW50LnN0b3BVcGRhdGluZygpOwotICAgIGVs
c2UgaWYgKG1faGlnaEFjY3VyYWN5T2JzZXJ2ZXJzLmlzRW1wdHkoKSkKKyAgICAgICAgc3RvcFVw
ZGF0aW5nSWZOZWNlc3NhcnkoKTsKKyAgICBlbHNlIGlmIChoaWdoQWNjdXJhY3lXYXNSZXF1aXJl
ZCAmJiAhbmVlZHNIaWdoQWNjdXJhY3koKSkKICAgICAgICAgbV9jbGllbnQuc2V0RW5hYmxlSGln
aEFjY3VyYWN5KGZhbHNlKTsKIH0KIApAQCAtMTM5LDkgKzE1MCw5IEBAIHZvaWQgR2VvbG9jYXRp
b25Db250cm9sbGVyOjphY3Rpdml0eVN0YXRlRGlkQ2hhbmdlKE9wdGlvblNldDxBY3Rpdml0eVN0
YXRlOjpGbGFnCiAgICAgYXV0byBjaGFuZ2VkID0gb2xkQWN0aXZpdHlTdGF0ZSBeIG5ld0FjdGl2
aXR5U3RhdGU7CiAgICAgaWYgKGNoYW5nZWQgJiBBY3Rpdml0eVN0YXRlOjpJc1Zpc2libGUgJiYg
IW1fb2JzZXJ2ZXJzLmlzRW1wdHkoKSkgewogICAgICAgICBpZiAobmV3QWN0aXZpdHlTdGF0ZSAm
IEFjdGl2aXR5U3RhdGU6OklzVmlzaWJsZSkKLSAgICAgICAgICAgIG1fY2xpZW50LnN0YXJ0VXBk
YXRpbmcoKCptX29ic2VydmVycy5yYW5kb20oKSktPmF1dGhvcml6YXRpb25Ub2tlbigpKTsKKyAg
ICAgICAgICAgIHN0YXJ0VXBkYXRpbmdJZk5lY2Vzc2FyeSgpOwogICAgICAgICBlbHNlCi0gICAg
ICAgICAgICBtX2NsaWVudC5zdG9wVXBkYXRpbmcoKTsKKyAgICAgICAgICAgIHN0b3BVcGRhdGlu
Z0lmTmVjZXNzYXJ5KCk7CiAgICAgfQogCiAgICAgaWYgKCFtX3BhZ2UuaXNWaXNpYmxlKCkpCkBA
IC0xNTIsNiArMTYzLDI0IEBAIHZvaWQgR2VvbG9jYXRpb25Db250cm9sbGVyOjphY3Rpdml0eVN0
YXRlRGlkQ2hhbmdlKE9wdGlvblNldDxBY3Rpdml0eVN0YXRlOjpGbGFnCiAgICAgICAgIG1fY2xp
ZW50LnJlcXVlc3RQZXJtaXNzaW9uKHBlcm1pc3Npb25SZXF1ZXN0LmdldCgpKTsKIH0KIAordm9p
ZCBHZW9sb2NhdGlvbkNvbnRyb2xsZXI6OnN0YXJ0VXBkYXRpbmdJZk5lY2Vzc2FyeSgpCit7Cisg
ICAgaWYgKG1faXNVcGRhdGluZyB8fCAhbV9wYWdlLmlzVmlzaWJsZSgpIHx8IG1fb2JzZXJ2ZXJz
LmlzRW1wdHkoKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgbV9jbGllbnQuc3RhcnRVcGRhdGlu
ZygoKm1fb2JzZXJ2ZXJzLnJhbmRvbSgpKS0+YXV0aG9yaXphdGlvblRva2VuKCksIG5lZWRzSGln
aEFjY3VyYWN5KCkpOworICAgIG1faXNVcGRhdGluZyA9IHRydWU7Cit9CisKK3ZvaWQgR2VvbG9j
YXRpb25Db250cm9sbGVyOjpzdG9wVXBkYXRpbmdJZk5lY2Vzc2FyeSgpCit7CisgICAgaWYgKCFt
X2lzVXBkYXRpbmcpCisgICAgICAgIHJldHVybjsKKworICAgIG1fY2xpZW50LnN0b3BVcGRhdGlu
ZygpOworICAgIG1faXNVcGRhdGluZyA9IGZhbHNlOworfQorCiBjb25zdCBjaGFyKiBHZW9sb2Nh
dGlvbkNvbnRyb2xsZXI6OnN1cHBsZW1lbnROYW1lKCkKIHsKICAgICByZXR1cm4gIkdlb2xvY2F0
aW9uQ29udHJvbGxlciI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2dlb2xv
Y2F0aW9uL0dlb2xvY2F0aW9uQ29udHJvbGxlci5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9n
ZW9sb2NhdGlvbi9HZW9sb2NhdGlvbkNvbnRyb2xsZXIuaAppbmRleCA0MmY1ZDA2MmRiNmYwOWM2
NjAxMTFkNjZkOWYwZmNmZmYzYjIwNzQwLi5iYmZmNTc1ZWIwNTgzMjQwNzgwZDNiNDFhOTY3NDJj
NmIxZDcyNDhlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2dlb2xvY2F0aW9u
L0dlb2xvY2F0aW9uQ29udHJvbGxlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZ2Vv
bG9jYXRpb24vR2VvbG9jYXRpb25Db250cm9sbGVyLmgKQEAgLTMwLDYgKzMwLDcgQEAKICNpbmNs
dWRlICJBY3Rpdml0eVN0YXRlQ2hhbmdlT2JzZXJ2ZXIuaCIKICNpbmNsdWRlICJHZW9sb2NhdGlv
bi5oIgogI2luY2x1ZGUgIlBhZ2UuaCIKKyNpbmNsdWRlICJSZWdpc3RyYWJsZURvbWFpbi5oIgog
I2luY2x1ZGUgPHd0Zi9IYXNoU2V0Lmg+CiAjaW5jbHVkZSA8d3RmL05vbmNvcHlhYmxlLmg+CiAj
aW5jbHVkZSA8d3RmL1JlZlB0ci5oPgpAQCAtNjUsNiArNjYsOCBAQCBwdWJsaWM6CiAKICAgICB2
b2lkIHJldm9rZUF1dGhvcml6YXRpb25Ub2tlbihjb25zdCBTdHJpbmcmKTsKIAorICAgIHZvaWQg
ZGlkTmF2aWdhdGVQYWdlKCk7CisKIHByaXZhdGU6CiAgICAgUGFnZSYgbV9wYWdlOwogICAgIEdl
b2xvY2F0aW9uQ2xpZW50JiBtX2NsaWVudDsKQEAgLTczLDYgKzc2LDExIEBAIHByaXZhdGU6CiAK
ICAgICBzdGQ6Om9wdGlvbmFsPEdlb2xvY2F0aW9uUG9zaXRpb25EYXRhPiBtX2xhc3RQb3NpdGlv
bjsKIAorICAgIGJvb2wgbmVlZHNIaWdoQWNjdXJhY3koKSBjb25zdCB7IHJldHVybiAhbV9oaWdo
QWNjdXJhY3lPYnNlcnZlcnMuaXNFbXB0eSgpOyB9CisKKyAgICB2b2lkIHN0YXJ0VXBkYXRpbmdJ
Zk5lY2Vzc2FyeSgpOworICAgIHZvaWQgc3RvcFVwZGF0aW5nSWZOZWNlc3NhcnkoKTsKKwogICAg
IHR5cGVkZWYgSGFzaFNldDxSZWY8R2VvbG9jYXRpb24+PiBPYnNlcnZlcnNTZXQ7CiAgICAgLy8g
QWxsIG9ic2VydmVyczsgYm90aCB0aG9zZSByZXF1ZXN0aW5nIGhpZ2ggYWNjdXJhY3kgYW5kIHRo
b3NlIG5vdC4KICAgICBPYnNlcnZlcnNTZXQgbV9vYnNlcnZlcnM7CkBAIC04MCw2ICs4OCw5IEBA
IHByaXZhdGU6CiAKICAgICAvLyBXaGlsZSB0aGUgcGFnZSBpcyBub3QgdmlzaWJsZSwgd2UgcGVu
ZCBwZXJtaXNzaW9uIHJlcXVlc3RzLgogICAgIEhhc2hTZXQ8UmVmPEdlb2xvY2F0aW9uPj4gbV9w
ZW5kaW5nUGVybWlzc2lvblJlcXVlc3Q7CisKKyAgICBSZWdpc3RyYWJsZURvbWFpbiBtX3JlZ2lz
dHJhYmxlRG9tYWluOworICAgIGJvb2wgbV9pc1VwZGF0aW5nIHsgZmFsc2UgfTsKIH07CiAKIH0g
Ly8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
Z2VvbG9jYXRpb24vR2VvbG9jYXRpb25Qb3NpdGlvbkRhdGEuaCBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvZ2VvbG9jYXRpb24vR2VvbG9jYXRpb25Qb3NpdGlvbkRhdGEuaAppbmRleCA5MjYyMjE3
MGM4YWFkNjk4OWI4YTEyY2U0ODM1NmRjNjg3YmY2ZTM1Li5jYzIxODBhODM3ZDI3NDNjMWZiZjc2
MWM0MTBlMWM3ZWJmZWFlZTdkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2dl
b2xvY2F0aW9uL0dlb2xvY2F0aW9uUG9zaXRpb25EYXRhLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9nZW9sb2NhdGlvbi9HZW9sb2NhdGlvblBvc2l0aW9uRGF0YS5oCkBAIC0yOSw3ICsy
OSw3IEBACiAjaW5jbHVkZSA8d3RmL1JlZi5oPgogI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+
CiAKLSNpZiBQTEFURk9STShJT1NfRkFNSUxZKQorI2lmIFBMQVRGT1JNKENPQ09BKQogT0JKQ19D
TEFTUyBDTExvY2F0aW9uOwogI2VuZGlmCiAKQEAgLTQ3LDcgKzQ3LDcgQEAgcHVibGljOgogICAg
IHsKICAgICB9CiAKLSNpZiBQTEFURk9STShJT1NfRkFNSUxZKQorI2lmIFBMQVRGT1JNKENPQ09B
KQogICAgIFdFQkNPUkVfRVhQT1JUIGV4cGxpY2l0IEdlb2xvY2F0aW9uUG9zaXRpb25EYXRhKENM
TG9jYXRpb24qKTsKICNlbmRpZgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2dlb2xvY2F0aW9uL2NvY29hL0dlb2xvY2F0aW9uUG9zaXRpb25EYXRhQ29jb2EubW0gYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2dlb2xvY2F0aW9uL2NvY29hL0dlb2xvY2F0aW9uUG9zaXRpb25E
YXRhQ29jb2EubW0KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uODFlNDBmMTY0MmIyNjg5NTJiN2IwMzk4ZTRlOGZlMmI4
Y2Q1ODBkMQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZ2VvbG9j
YXRpb24vY29jb2EvR2VvbG9jYXRpb25Qb3NpdGlvbkRhdGFDb2NvYS5tbQpAQCAtMCwwICsxLDUz
IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE3IEFwcGxlIEluYy4gQWxsIFJpZ2h0cyBSZXNl
cnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEu
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICog
ICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExF
IElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBV
UlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisg
KiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsg
T1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9S
WQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2ltcG9y
dCAiY29uZmlnLmgiCisjaW1wb3J0ICJHZW9sb2NhdGlvblBvc2l0aW9uLmgiCisKKyNpbXBvcnQg
PENvcmVMb2NhdGlvbi9DTExvY2F0aW9uLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworR2Vv
bG9jYXRpb25Qb3NpdGlvbkRhdGE6Okdlb2xvY2F0aW9uUG9zaXRpb25EYXRhKENMTG9jYXRpb24g
KmxvY2F0aW9uKQorICAgIDogdGltZXN0YW1wKGxvY2F0aW9uLnRpbWVzdGFtcC50aW1lSW50ZXJ2
YWxTaW5jZTE5NzApCisgICAgLCBsYXRpdHVkZShsb2NhdGlvbi5jb29yZGluYXRlLmxhdGl0dWRl
KQorICAgICwgbG9uZ2l0dWRlKGxvY2F0aW9uLmNvb3JkaW5hdGUubG9uZ2l0dWRlKQorICAgICwg
YWNjdXJhY3kobG9jYXRpb24uaG9yaXpvbnRhbEFjY3VyYWN5KQoreworICAgIGlmIChsb2NhdGlv
bi52ZXJ0aWNhbEFjY3VyYWN5ID49IDAuMCkgeworICAgICAgICBhbHRpdHVkZSA9IGxvY2F0aW9u
LmFsdGl0dWRlOworICAgICAgICBhbHRpdHVkZUFjY3VyYWN5ID0gbG9jYXRpb24udmVydGljYWxB
Y2N1cmFjeTsKKyAgICB9CisgICAgaWYgKGxvY2F0aW9uLnNwZWVkID49IDAuMCkKKyAgICAgICAg
c3BlZWQgPSBsb2NhdGlvbi5zcGVlZDsKKyAgICBpZiAobG9jYXRpb24uY291cnNlID49IDAuMCkK
KyAgICAgICAgaGVhZGluZyA9IGxvY2F0aW9uLmNvdXJzZTsKKyNpZiAhUExBVEZPUk0oTUFDQ0FU
QUxZU1QpCisgICAgaWYgKGxvY2F0aW9uLmZsb29yKQorICAgICAgICBmbG9vckxldmVsID0gbG9j
YXRpb24uZmxvb3IubGV2ZWw7CisjZW5kaWYKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9nZW9sb2NhdGlvbi9pb3MvR2VvbG9j
YXRpb25Qb3NpdGlvbkRhdGFJT1MubW0gYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2dlb2xvY2F0
aW9uL2lvcy9HZW9sb2NhdGlvblBvc2l0aW9uRGF0YUlPUy5tbQpkZWxldGVkIGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggOThkOWEyNDIxZTdmMjMwOWI0ZjYyM2IxNGQ3Y2JlMmI2YzdlMDQ1Yy4uMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2dlb2xvY2F0aW9uL2lvcy9HZW9sb2NhdGlvblBvc2l0aW9uRGF0YUlPUy5tbQor
KysgL2Rldi9udWxsCkBAIC0xLDU3ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTcg
QXBwbGUgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJp
Z2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQotICogRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBUSEUKLSAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVW
RU5UIFNIQUxMIEFQUExFIElOQy4gT1IKLSAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAotICogRVhFTVBMQVJZLCBP
UiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAot
ICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsIERBVEEsIE9SCi0gKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCi0gKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4g
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICog
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KLSAqLwotCi0jaW1wb3J0ICJjb25maWcuaCIKLSNpbXBvcnQgIkdlb2xvY2F0
aW9uUG9zaXRpb24uaCIKLQotI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCi0KLSNpbXBvcnQgPENv
cmVMb2NhdGlvbi9DTExvY2F0aW9uLmg+Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotR2VvbG9j
YXRpb25Qb3NpdGlvbkRhdGE6Okdlb2xvY2F0aW9uUG9zaXRpb25EYXRhKENMTG9jYXRpb24qIGxv
Y2F0aW9uKQotICAgIDogdGltZXN0YW1wKGxvY2F0aW9uLnRpbWVzdGFtcC50aW1lSW50ZXJ2YWxT
aW5jZTE5NzApCi0gICAgLCBsYXRpdHVkZShsb2NhdGlvbi5jb29yZGluYXRlLmxhdGl0dWRlKQot
ICAgICwgbG9uZ2l0dWRlKGxvY2F0aW9uLmNvb3JkaW5hdGUubG9uZ2l0dWRlKQotICAgICwgYWNj
dXJhY3kobG9jYXRpb24uaG9yaXpvbnRhbEFjY3VyYWN5KQotewotICAgIGlmIChsb2NhdGlvbi52
ZXJ0aWNhbEFjY3VyYWN5ID49IDAuMCkgewotICAgICAgICBhbHRpdHVkZSA9IGxvY2F0aW9uLmFs
dGl0dWRlOwotICAgICAgICBhbHRpdHVkZUFjY3VyYWN5ID0gbG9jYXRpb24udmVydGljYWxBY2N1
cmFjeTsKLSAgICB9Ci0gICAgaWYgKGxvY2F0aW9uLnNwZWVkID49IDAuMCkKLSAgICAgICAgc3Bl
ZWQgPSBsb2NhdGlvbi5zcGVlZDsKLSAgICBpZiAobG9jYXRpb24uY291cnNlID49IDAuMCkKLSAg
ICAgICAgaGVhZGluZyA9IGxvY2F0aW9uLmNvdXJzZTsKLSNpZiAhUExBVEZPUk0oTUFDQ0FUQUxZ
U1QpCi0gICAgaWYgKGxvY2F0aW9uLmZsb29yKQotICAgICAgICBmbG9vckxldmVsID0gbG9jYXRp
b24uZmxvb3IubGV2ZWw7Ci0jZW5kaWYKLX0KLQotfQotCi0jZW5kaWYgLy8gUExBVEZPUk0oSU9T
X0ZBTUlMWSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXNDb2NvYS50eHQgYi9T
b3VyY2UvV2ViQ29yZS9Tb3VyY2VzQ29jb2EudHh0CmluZGV4IGExMjc4MDQxMDQwOWRlMWYyZjk4
NjljMDRlN2Q5N2U1N2E0ODViNDkuLjAyODE0ZDAyMjJiMjZlMjg5OWI4ZGFjYWVkMWE0MmU1NmI1
NzQxOTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXNDb2NvYS50eHQKKysrIGIv
U291cmNlL1dlYkNvcmUvU291cmNlc0NvY29hLnR4dApAQCAtMjUyLDYgKzI1Miw3IEBAIHBsYXRm
b3JtL2NmL01lZGlhQWNjZXNzaWJpbGl0eVNvZnRMaW5rLmNwcAogcGxhdGZvcm0vY2YvUnVuTG9v
cE9ic2VydmVyLmNwcAogcGxhdGZvcm0vY2YvU2hhcmVkQnVmZmVyQ0YuY3BwCiBwbGF0Zm9ybS9j
b2NvYS9Db250ZW50RmlsdGVyVW5ibG9ja0hhbmRsZXJDb2NvYS5tbSBAbm8tdW5pZnkKK3BsYXRm
b3JtL2NvY29hL0NvcmVMb2NhdGlvbkdlb2xvY2F0aW9uUHJvdmlkZXIubW0KIHBsYXRmb3JtL2Nv
Y29hL0NvcmVWaWRlb1NvZnRMaW5rLmNwcAogcGxhdGZvcm0vY29jb2EvRHJhZ0RhdGFDb2NvYS5t
bQogcGxhdGZvcm0vY29jb2EvRHJhZ0ltYWdlQ29jb2EubW0KQEAgLTMwOCw3ICszMDksNyBAQCBw
bGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vTWVkaWFTZWxlY3Rpb25Hcm91cEFWRk9iakMu
bW0KIHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9TYW1wbGVCdWZmZXJEaXNwbGF5TGF5
ZXIuY3BwCiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vV2ViTWVkaWFTZXNzaW9uTWFu
YWdlck1hYy5jcHAKIHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0FWQXNzZXRN
SU1FVHlwZUNhY2hlLm1tCi1wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9BVkFz
c2V0VHJhY2tVdGlsaXRpZXMubW0KK3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpj
L0FWQXNzZXRUcmFja1V0aWxpdGllcy5tbSBAbm8tdW5pZnkKIHBsYXRmb3JtL2dyYXBoaWNzL2F2
Zm91bmRhdGlvbi9vYmpjL0FWT3V0cHV0RGV2aWNlTWVudUNvbnRyb2xsZXJUYXJnZXRQaWNrZXIu
bW0gQG5vLXVuaWZ5CiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9BVlJvdXRl
UGlja2VyVmlld1RhcmdldFBpY2tlci5tbQogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9u
L29iamMvQVZTdHJlYW1EYXRhUGFyc2VyTUlNRVR5cGVDYWNoZS5tbQpAQCAtMzE5LDcgKzMyMCw3
IEBAIHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0NETVNlc3Npb25BVkZvdW5k
YXRpb25PYmpDLm1tCiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9DRE1TZXNz
aW9uQVZTdHJlYW1TZXNzaW9uLm1tCiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2Jq
Yy9DRE1TZXNzaW9uTWVkaWFTb3VyY2VBVkZPYmpDLm1tCiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZv
dW5kYXRpb24vb2JqYy9JbWFnZURlY29kZXJBVkZPYmpDLm1tCi1wbGF0Zm9ybS9ncmFwaGljcy9h
dmZvdW5kYXRpb24vb2JqYy9JbmJhbmRUZXh0VHJhY2tQcml2YXRlQVZGT2JqQy5tbQorcGxhdGZv
cm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUFWRk9i
akMubW0gQG5vLXVuaWZ5CiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9JbmJh
bmRDaGFwdGVyVHJhY2tQcml2YXRlQVZGT2JqQy5tbSBAbm8tdW5pZnkKIHBsYXRmb3JtL2dyYXBo
aWNzL2F2Zm91bmRhdGlvbi9vYmpjL0xvY2FsU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyLm1tCiBw
bGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXliYWNrVGFyZ2V0UGlj
a2VyTWFjLm1tCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9w
cm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0
LnBieHByb2oKaW5kZXggNjExMGU5NjJkOGQxOGZiZjljMDA1NDk3MmFlOGNlM2NkMTI2NTVmZi4u
ZmI5ZmI3Y2MyMjE4OWYwMzQzMDIwY2Y2YzBmYTNkNjY1ZGI5ZWIzOCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMTM1Myw2ICsx
MzUzLDcgQEAKIAkJNDY4MzQ0RTAxRURERkFBQTAwQjc3OTVCIC8qIERPTVJlY3RMaXN0LmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0NjgzNDRERTFFRERG
QTVGMDBCNzc5NUIgLyogRE9NUmVjdExpc3QuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9
IChQcml2YXRlLCApOyB9OyB9OwogCQk0NjgzREY0MDI3NjdERjk4MDA3RDAwQzggLyogSlNTaGFk
b3dSZWFsbUdsb2JhbFNjb3BlQmFzZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gNDY4M0RGM0UyNzY3REY5ODAwN0QwMEM4IC8qIEpTU2hhZG93UmVhbG1H
bG9iYWxTY29wZUJhc2UuaCAqLzsgfTsKIAkJNDY4M0RGNDEyNzY3RTkxQTAwN0QwMEM4IC8qIFNo
YWRvd1JlYWxtR2xvYmFsU2NvcGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDQ2ODNERjNCMjc2N0RGMjYwMDdEMDBDOCAvKiBTaGFkb3dSZWFsbUdsb2Jh
bFNjb3BlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsK
KwkJNDY4OEU5ODAyN0I2QjQ1MDAwNTY3Q0QyIC8qIENvcmVMb2NhdGlvbkdlb2xvY2F0aW9uUHJv
dmlkZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ2
ODhFOTdGMjdCNkI0NDQwMDU2N0NEMiAvKiBDb3JlTG9jYXRpb25HZW9sb2NhdGlvblByb3ZpZGVy
LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNDY4
OEVFM0MyNkREMjYxMDAwMkFGNUM0IC8qIENyb3NzT3JpZ2luTW9kZS5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDY4OEVFM0EyNkREMjYwQzAwMkFGNUM0
IC8qIENyb3NzT3JpZ2luTW9kZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZh
dGUsICk7IH07IH07CiAJCTQ2OTQzREM5Mjc2M0Y4MTcwMDRCNjEwRSAvKiBTaGFyZWRXb3JrZXJP
YmplY3RJZGVudGlmaWVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA0Njk0M0RDNzI3NjNGODBFMDA0QjYxMEUgLyogU2hhcmVkV29ya2VyT2JqZWN0SWRl
bnRpZmllci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07
CiAJCTQ2OTg1RjIzMjdBNEE2QUQwMDk3QTMyQiAvKiBTaGFyZWRXb3JrZXJLZXkuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ2OTg1RjIyMjdBNEE2ODYw
MDk3QTMyQiAvKiBTaGFyZWRXb3JrZXJLZXkuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9
IChQcml2YXRlLCApOyB9OyB9OwpAQCAtMTM3MCw2ICsxMzcxLDcgQEAKIAkJNDZCOTUxOTkyMDdE
NjM0RDAwQTdEMkREIC8qIFJlbW90ZURPTVdpbmRvdy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDZCOTUxOEUyMDdENjMyQTAwQTdEMkREIC8qIFJlbW90
ZURPTVdpbmRvdy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07
IH07CiAJCTQ2Qjk1MTlBMjA3RDYzNTQwMEE3RDJERCAvKiBSZW1vdGVGcmFtZS5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDZCOTUxOTIyMDdENjMyRTAw
QTdEMkREIC8qIFJlbW90ZUZyYW1lLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJp
dmF0ZSwgKTsgfTsgfTsKIAkJNDZCOTVCRjUyMjMxQ0ZENjAwNTNBNTA0IC8qIERldmljZU9yaWVu
dGF0aW9uQW5kTW90aW9uQWNjZXNzQ29udHJvbGxlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDZCOTVCRjQyMjMxQ0ZCODAwNTNBNTA0IC8qIERldmlj
ZU9yaWVudGF0aW9uQW5kTW90aW9uQWNjZXNzQ29udHJvbGxlci5oICovOyB9OworCQk0NkJBNDlC
ODI3QkI0NDMzMDA3N0Y2M0YgLyogQVZBc3NldFRyYWNrVXRpbGl0aWVzLm1tIGluIFNvdXJjZXMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0RFQ0E4OTgxRURGNDQ3RDAwRENC
MDhCIC8qIEFWQXNzZXRUcmFja1V0aWxpdGllcy5tbSAqLzsgfTsKIAkJNDZCQ0JCQzIyMDg1MDA4
RjAwNzEwNjM4IC8qIEpTUmVtb3RlRE9NV2luZG93QmFzZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDZCQ0JCQzAyMDg1MDA3RjAwNzEwNjM4IC8qIEpT
UmVtb3RlRE9NV2luZG93QmFzZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZh
dGUsICk7IH07IH07CiAJCTQ2QkQwNUM1MjVCQjZFNTkwMDIyNUYzMCAvKiBBZGRFdmVudExpc3Rl
bmVyT3B0aW9ucy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gNDZCRDA1QzIyNUJCNkU0RTAwMjI1RjMwIC8qIEFkZEV2ZW50TGlzdGVuZXJPcHRpb25zLmgg
Ki87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNDZCRDA1
QzYyNUJCNkU2QzAwMjI1RjMwIC8qIEV2ZW50TGlzdGVuZXJPcHRpb25zLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0NkJEMDVDMzI1QkI2RTRFMDAyMjVG
MzAgLyogRXZlbnRMaXN0ZW5lck9wdGlvbnMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9
IChQcml2YXRlLCApOyB9OyB9OwpAQCAtMTM3OCw2ICsxMzgwLDcgQEAKIAkJNDZDNjk2Q0IxRTcy
MDVGNzAwNTk3OTM3IC8qIENQVU1vbml0b3IuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDQ2QzY5NkM5MUU3MjA1RTQwMDU5NzkzNyAvKiBDUFVNb25pdG9y
LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNDZD
Njk2Q0MxRTcyMDVGQzAwNTk3OTM3IC8qIENQVU1vbml0b3IuY3BwIGluIFNvdXJjZXMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDZDNjk2Q0ExRTcyMDVFNDAwNTk3OTM3IC8q
IENQVU1vbml0b3IuY3BwICovOyB9OwogCQk0NkM4M0VGRTFBOUJCRTI5MDBBNzlBNDEgLyogR2Vv
Tm90aWZpZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDQ2QzgzRUZDMUE5QkJFMjkwMEE3OUE0MSAvKiBHZW9Ob3RpZmllci5oICovOyBzZXR0aW5ncyA9
IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCTQ2Q0E5NDMxMjdCODY5NTgwMEY0
RjVGRiAvKiBJbmJhbmRUZXh0VHJhY2tQcml2YXRlQVZGT2JqQy5tbSBpbiBTb3VyY2VzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDA3QUE2QjZBMTY2RDAxOTUwMEQ0NTY3MSAv
KiBJbmJhbmRUZXh0VHJhY2tQcml2YXRlQVZGT2JqQy5tbSAqLzsgfTsKIAkJNDZDQTlDNDQxRjk3
QkJFOTAwNENGQzNBIC8qIFZpc2liaWxpdHlTdGF0ZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDZDQTlDNDExRjk3QkJFNzAwNENGQzNBIC8qIFZpc2li
aWxpdHlTdGF0ZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07
IH07CiAJCTQ2Q0Y1MDRBMjdBQjFFQTQwMDcwREJDOCAvKiBTaGFyZWRXb3JrZXJDb250ZXh0TWFu
YWdlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDZD
RjUwNDgyN0FCMUVBMTAwNzBEQkM4IC8qIFNoYXJlZFdvcmtlckNvbnRleHRNYW5hZ2VyLmggKi87
IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNDZEMDAwNDAy
NkEwRkVCMzAwRDFCRjFFIC8qIFN1Ym1pdEV2ZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0NkQwMDAzRTI2QTBGRTZGMDBEMUJGMUUgLyogU3VibWl0
RXZlbnQuaCAqLzsgfTsKQEAgLTI2OTMsNyArMjY5Niw3IEBACiAJCTgzNzY1Rjk1MURBQzUyMkYw
MEMwNjUzNyAvKiBNb3VzZUV2ZW50SW5pdC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gODM3NjVGOTQxREFDNTIxODAwQzA2NTM3IC8qIE1vdXNlRXZlbnRJ
bml0LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJ
ODM3ODg3ODIyNEQ4QTYwOTAwMEQ0QTVCIC8qIEF1ZGlvQnVmZmVyU291cmNlT3B0aW9ucy5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODM3ODg3N0YyNEQ4
QTVGQzAwMEQ0QTVCIC8qIEF1ZGlvQnVmZmVyU291cmNlT3B0aW9ucy5oICovOyB9OwogCQk4Mzc5
MzYzRjFGQkJCMEI0MDBDODAyM0MgLyogU2VydmljZVdvcmtlckNsaWVudERhdGEuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDgzNzkzNjNFMUZCQkIwQTUw
MEM4MDIzQyAvKiBTZXJ2aWNlV29ya2VyQ2xpZW50RGF0YS5oICovOyBzZXR0aW5ncyA9IHtBVFRS
SUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07Ci0JCTgzNzk2NENGMUY4REI2OUQwMDIxOEVBMCAv
KiBHZW9sb2NhdGlvblBvc2l0aW9uRGF0YUlPUy5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDgzNzk2NENFMUY4REI2OUEwMDIxOEVBMCAvKiBHZW9sb2Nh
dGlvblBvc2l0aW9uRGF0YUlPUy5tbSAqLzsgfTsKKwkJODM3OTY0Q0YxRjhEQjY5RDAwMjE4RUEw
IC8qIEdlb2xvY2F0aW9uUG9zaXRpb25EYXRhQ29jb2EubW0gaW4gU291cmNlcyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4Mzc5NjRDRTFGOERCNjlBMDAyMThFQTAgLyogR2Vv
bG9jYXRpb25Qb3NpdGlvbkRhdGFDb2NvYS5tbSAqLzsgfTsKIAkJODM3QTgwMTMxRTFFMTI3MzAw
MDI2QjlGIC8qIExvY2FsaXphYmxlLnN0cmluZ3NkaWN0IGluIFJlc291cmNlcyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4MzdBODAxMTFFMUUxMjczMDAwMjZCOUYgLyogTG9j
YWxpemFibGUuc3RyaW5nc2RpY3QgKi87IH07CiAJCTgzN0MwQjc2MjREQjM4NTAwMDVENTk1OSAv
KiBEeW5hbWljc0NvbXByZXNzb3JPcHRpb25zLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA4MzdDMEI3MzI0REIzODQyMDA1RDU5NTkgLyogRHluYW1pY3ND
b21wcmVzc29yT3B0aW9ucy5oICovOyB9OwogCQk4MzdGQjM0NTFGOUVBMDZEMDBEMEZDMzEgLyog
RXh0ZW5kYWJsZU1lc3NhZ2VFdmVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gODM3RkIzNDAxRjlFQTA2NjAwRDBGQzMxIC8qIEV4dGVuZGFibGVNZXNz
YWdlRXZlbnQuaCAqLzsgfTsKQEAgLTkyNzMsNiArOTI3Niw4IEBACiAJCTQ2ODNERjNDMjc2N0RG
MjYwMDdEMDBDOCAvKiBTaGFkb3dSZWFsbUdsb2JhbFNjb3BlLmlkbCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBTaGFkb3dSZWFs
bUdsb2JhbFNjb3BlLmlkbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDY4M0RGM0Qy
NzY3REY5ODAwN0QwMEM4IC8qIEpTU2hhZG93UmVhbG1HbG9iYWxTY29wZUJhc2UuY3BwICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNTaGFkb3dSZWFsbUdsb2JhbFNjb3Bl
QmFzZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQ2ODNERjNFMjc2N0RGOTgw
MDdEMDBDOCAvKiBKU1NoYWRvd1JlYWxtR2xvYmFsU2NvcGVCYXNlLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IEpTU2hhZG93UmVhbG1HbG9iYWxTY29wZUJhc2UuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNDY4OEU5N0QyN0I2QjQ0MzAwNTY3Q0QyIC8qIENvcmVM
b2NhdGlvbkdlb2xvY2F0aW9uUHJvdmlkZXIubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBDb3Jl
TG9jYXRpb25HZW9sb2NhdGlvblByb3ZpZGVyLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OworCQk0Njg4RTk3RjI3QjZCNDQ0MDA1NjdDRDIgLyogQ29yZUxvY2F0aW9uR2VvbG9jYXRpb25Q
cm92aWRlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBDb3JlTG9jYXRpb25HZW9sb2NhdGlvblByb3ZpZGVy
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQ2ODhFRTNBMjZERDI2MEMwMDJBRjVD
NCAvKiBDcm9zc09yaWdpbk1vZGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQ3Jvc3NPcmlnaW5Nb2RlLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQ2OEI4QkRFMjVDQzg0OTMwMEY2NzgyMiAv
KiBKU0Jhc2VBdWRpb0NvbnRleHRDdXN0b20uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNCYXNl
QXVkaW9Db250ZXh0Q3VzdG9tLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDY5
NDNEQzcyNzYzRjgwRTAwNEI2MTBFIC8qIFNoYXJlZFdvcmtlck9iamVjdElkZW50aWZpZXIuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gU2hhcmVkV29ya2VyT2JqZWN0SWRlbnRpZmllci5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwpAQCAtOTM4Nyw4ICs5MzkyLDggQEAKIAkJNDk0QkQ3OTQwRjU1QzhF
RTAwNzQ3ODI4IC8qIFdlYktpdFBvaW50LmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBXZWJL
aXRQb2ludC5pZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQ5NEJENzlCMEY1NUM5
NEMwMDc0NzgyOCAvKiBKU1dlYktpdFBvaW50LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
LmNwcDsgcGF0aCA9IEpTV2ViS2l0UG9pbnQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQk0OTRCRDc5QzBGNTVDOTRDMDA3NDc4MjggLyogSlNXZWJLaXRQb2ludC5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKU1dlYktpdFBvaW50Lmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07Ci0JCTQ5NEVCRDA2MjdBQTlDNTMwMEY0ODQ0RiAvKiBQREZEb2N1bWVudC5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IG5hbWUgPSBQREZEb2N1bWVudC5oOyBwYXRoID0gUERGRG9jdW1lbnQuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJNDk0RUJEMDgyN0FBOUM1MzAwRjQ4NDRGIC8qIFBE
RkRvY3VtZW50LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IFBERkRvY3VtZW50LmNwcDsgcGF0aCA9
IFBERkRvY3VtZW50LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNDk0RUJEMDYy
N0FBOUM1MzAwRjQ4NDRGIC8qIFBERkRvY3VtZW50LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFBERkRvY3Vt
ZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTQ5NEVCRDA4MjdBQTlDNTMwMEY0
ODQ0RiAvKiBQREZEb2N1bWVudC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBQREZEb2N1bWVudC5j
cHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQ5NTg3ODFGMTJBNTdEREYwMDcyMzhB
QyAvKiBQbGF0Zm9ybUNBQW5pbWF0aW9uQ29jb2EubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5vYmpjcHA7IHBhdGggPSBQbGF0Zm9ybUNBQW5pbWF0aW9uQ29jb2EubW07IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCTQ5NTg3ODIwMTJBNTdEREYwMDcyMzhBQyAvKiBQbGF0Zm9ybUNB
TGF5ZXJDb2NvYS5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFBs
YXRmb3JtQ0FMYXllckNvY29hLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0OTY5
QjBGMDEzRDBCMzNGMDBERjM1MjEgLyogSGl0VGVzdGluZ1RyYW5zZm9ybVN0YXRlLmNwcCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEhpdFRlc3RpbmdUcmFuc2Zvcm1TdGF0
ZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0xMjE5MCw3ICsxMjE5NSw3IEBA
CiAJCTgzNzg4NzgxMjREOEE1RkMwMDBENEE1QiAvKiBBdWRpb0J1ZmZlclNvdXJjZU9wdGlvbnMu
aWRsICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4
dDsgcGF0aCA9IEF1ZGlvQnVmZmVyU291cmNlT3B0aW9ucy5pZGw7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCTgzNzkzNjNDMUZCQkIwQTQwMEM4MDIzQyAvKiBTZXJ2aWNlV29ya2VyQ2xp
ZW50RGF0YS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBTZXJ2aWNl
V29ya2VyQ2xpZW50RGF0YS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTgzNzkz
NjNFMUZCQkIwQTUwMEM4MDIzQyAvKiBTZXJ2aWNlV29ya2VyQ2xpZW50RGF0YS5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTZXJ2aWNlV29ya2VyQ2xpZW50RGF0YS5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwotCQk4Mzc5NjRDRTFGOERCNjlBMDAyMThFQTAgLyogR2Vv
bG9jYXRpb25Qb3NpdGlvbkRhdGFJT1MubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpj
cHA7IG5hbWUgPSBHZW9sb2NhdGlvblBvc2l0aW9uRGF0YUlPUy5tbTsgcGF0aCA9IE1vZHVsZXMv
Z2VvbG9jYXRpb24vaW9zL0dlb2xvY2F0aW9uUG9zaXRpb25EYXRhSU9TLm1tOyBzb3VyY2VUcmVl
ID0gU09VUkNFX1JPT1Q7IH07CisJCTgzNzk2NENFMUY4REI2OUEwMDIxOEVBMCAvKiBHZW9sb2Nh
dGlvblBvc2l0aW9uRGF0YUNvY29hLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3Bw
OyBuYW1lID0gR2VvbG9jYXRpb25Qb3NpdGlvbkRhdGFDb2NvYS5tbTsgcGF0aCA9IE1vZHVsZXMv
Z2VvbG9jYXRpb24vY29jb2EvR2VvbG9jYXRpb25Qb3NpdGlvbkRhdGFDb2NvYS5tbTsgc291cmNl
VHJlZSA9IFNPVVJDRV9ST09UOyB9OwogCQk4MzdBODAxMjFFMUUxMjczMDAwMjZCOUYgLyogZW4g
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0LnBs
aXN0LnN0cmluZ3NkaWN0OyBuYW1lID0gZW47IHBhdGggPSBlbi5scHJvai9Mb2NhbGl6YWJsZS5z
dHJpbmdzZGljdDsgc291cmNlVHJlZSA9IFNPVVJDRV9ST09UOyB9OwogCQk4MzdCN0QxRjFEQzNG
NTRDMDBEMDUxRkMgLyogVmFsaWRhdGlvbkJ1YmJsZUlPUy5tbSAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLm9iamNwcDsgcGF0aCA9IFZhbGlkYXRpb25CdWJibGVJT1MubW07IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCTgzN0MwQjczMjREQjM4NDIwMDVENTk1OSAvKiBEeW5hbWljc0Nv
bXByZXNzb3JPcHRpb25zLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IER5bmFtaWNzQ29tcHJlc3Nvck9wdGlv
bnMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTE5MTU2LDkgKzE5MTYxLDkgQEAK
IAkJMDg5QzE2NjVGRTg0MTE1OEMwMkFBQzA3IC8qIFJlc291cmNlcyAqLyA9IHsKIAkJCWlzYSA9
IFBCWEdyb3VwOwogCQkJY2hpbGRyZW4gPSAoCi0JCQkJNDlFQ0Y3MkQyN0JBRTg1NDAwODgwOTkx
IC8qIHBkZmpzICovLAogCQkJCUNEMERCQjNFMTQyMjc0RTYwMDI4MDI2MyAvKiBhdWRpbyAqLywK
IAkJCQk2NTk5OEE2NTBFNUY1RkQzMDA0RTA5N0EgLyogaW1hZ2VzICovLAorCQkJCTQ5RUNGNzJE
MjdCQUU4NTQwMDg4MDk5MSAvKiBwZGZqcyAqLywKIAkJCQlBMUFBOUFCODFEMjM5MTE1MDBGRUFE
QjMgLyogQ29udGVudEZpbHRlckJsb2NrZWRQYWdlLmh0bWwgKi8sCiAJCQkJQTExRThDMDAxQjFF
MjhCRTAwMDNBN0M3IC8qIGNvcHlDdXJzb3IucG5nICovLAogCQkJCTJEOUYwRTEyMTRGRjFDQkYw
MEJBMEZGNyAvKiBsaW5lYXJTUkdCLmljYyAqLywKQEAgLTIxNjE0LDYgKzIxNjE5LDE0IEBACiAJ
CQlwYXRoID0gY29udGV4dDsKIAkJCXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7CiAJCX07CisJCTQ2
NUMzRDE5MjdCOTkxQzgwMDIxMzAyRiAvKiBjb2NvYSAqLyA9IHsKKwkJCWlzYSA9IFBCWEdyb3Vw
OworCQkJY2hpbGRyZW4gPSAoCisJCQkJODM3OTY0Q0UxRjhEQjY5QTAwMjE4RUEwIC8qIEdlb2xv
Y2F0aW9uUG9zaXRpb25EYXRhQ29jb2EubW0gKi8sCisJCQkpOworCQkJcGF0aCA9IGNvY29hOwor
CQkJc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsKKwkJfTsKIAkJNDY2OTRDREUyNzU5NDQ2RDAwRTMx
NTBFIC8qIHNoYXJlZCAqLyA9IHsKIAkJCWlzYSA9IFBCWEdyb3VwOwogCQkJY2hpbGRyZW4gPSAo
CkBAIC0yNTExMCwxNCArMjUxMjMsNiBAQAogCQkJcGF0aCA9IGJlYWNvbjsKIAkJCXNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7CiAJCX07Ci0JCTgzNzk2NENDMUY4REI2N0QwMDIxOEVBMCAvKiBpb3Mg
Ki8gPSB7Ci0JCQlpc2EgPSBQQlhHcm91cDsKLQkJCWNoaWxkcmVuID0gKAotCQkJCTgzNzk2NENF
MUY4REI2OUEwMDIxOEVBMCAvKiBHZW9sb2NhdGlvblBvc2l0aW9uRGF0YUlPUy5tbSAqLywKLQkJ
CSk7Ci0JCQluYW1lID0gaW9zOwotCQkJc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsKLQkJfTsKIAkJ
ODNGQjMzNjUxRjUwOEExNzAwOTg2RTU0IC8qIGVudHJpZXNhcGkgKi8gPSB7CiAJCQlpc2EgPSBQ
QlhHcm91cDsKIAkJCWNoaWxkcmVuID0gKApAQCAtMjYxMzAsNyArMjYxMzUsNyBAQAogCQk5NzEx
NDVGRjE0RUYwMDc5MDA2NzRGRDkgLyogZ2VvbG9jYXRpb24gKi8gPSB7CiAJCQlpc2EgPSBQQlhH
cm91cDsKIAkJCWNoaWxkcmVuID0gKAotCQkJCTgzNzk2NENDMUY4REI2N0QwMDIxOEVBMCAvKiBp
b3MgKi8sCisJCQkJNDY1QzNEMTkyN0I5OTFDODAwMjEzMDJGIC8qIGNvY29hICovLAogCQkJCTk3
NDZBRjEzMTRGNERERTYwMDNFN0E3MCAvKiBHZW9sb2NhdGlvbi5jcHAgKi8sCiAJCQkJOTc0NkFG
MTQxNEY0RERFNjAwM0U3QTcwIC8qIEdlb2xvY2F0aW9uLmggKi8sCiAJCQkJOTc0NkFGMTUxNEY0
RERFNjAwM0U3QTcwIC8qIEdlb2xvY2F0aW9uLmlkbCAqLywKQEAgLTI2ODQyLDYgKzI2ODQ3LDgg
QEAKIAkJCQlDMUY3QjcyRjI0NDhGMkFDMDAxMjQ1NTcgLyogQUdYQ29tcGlsZXJTZXJ2aWNlLmNw
cCAqLywKIAkJCQlDMUY3QjczMDI0NDhGMkFDMDAxMjQ1NTcgLyogQUdYQ29tcGlsZXJTZXJ2aWNl
LmggKi8sCiAJCQkJQTE0MDkwRkExQUE1MUUxRDAwOTExOTFBIC8qIENvbnRlbnRGaWx0ZXJVbmJs
b2NrSGFuZGxlckNvY29hLm1tICovLAorCQkJCTQ2ODhFOTdGMjdCNkI0NDQwMDU2N0NEMiAvKiBD
b3JlTG9jYXRpb25HZW9sb2NhdGlvblByb3ZpZGVyLmggKi8sCisJCQkJNDY4OEU5N0QyN0I2QjQ0
MzAwNTY3Q0QyIC8qIENvcmVMb2NhdGlvbkdlb2xvY2F0aW9uUHJvdmlkZXIubW0gKi8sCiAJCQkJ
Q0Q3RDMzNDUxQzdBMTZCRjAwMDQxMjkzIC8qIENvcmVWaWRlb1NvZnRMaW5rLmNwcCAqLywKIAkJ
CQlDRDdEMzM0NjFDN0ExNkJGMDAwNDEyOTMgLyogQ29yZVZpZGVvU29mdExpbmsuaCAqLywKIAkJ
CQlGNDYyRTc5RjI0MkFEQTNDMDAyMDREREQgLyogRHJhZ0RhdGFDb2NvYS5tbSAqLywKQEAgLTMz
OTM0LDYgKzMzOTQxLDcgQEAKIAkJCQkzRjgwMjAzNzFFOUU0N0M1MDBERUM2MUQgLyogQ29yZUF1
ZGlvQ2FwdHVyZURldmljZU1hbmFnZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTQxRkNDQzNCMjc0
NjY3NTYwMDg5MkFENiAvKiBDb3JlQXVkaW9DYXB0dXJlU291cmNlLmggaW4gSGVhZGVycyAqLywK
IAkJCQkwN0FGRjQyMjFFRkIxNDQ5MDBCNTQ1QjMgLyogQ29yZUF1ZGlvQ2FwdHVyZVNvdXJjZUlP
Uy5oIGluIEhlYWRlcnMgKi8sCisJCQkJNDY4OEU5ODAyN0I2QjQ1MDAwNTY3Q0QyIC8qIENvcmVM
b2NhdGlvbkdlb2xvY2F0aW9uUHJvdmlkZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCUNEN0QzMzQ4
MUM3QTE2QkYwMDA0MTI5MyAvKiBDb3JlVmlkZW9Tb2Z0TGluay5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJODYyRjEyOUUxOEMxNTc2RjAwNUM1NEFGIC8qIENvdW50ZWRVc2VyQWN0aXZpdHkuaCBpbiBI
ZWFkZXJzICovLAogCQkJCUE4MEU2RDA0MEExOTg5Q0EwMDdGQjhDNSAvKiBDb3VudGVyLmggaW4g
SGVhZGVycyAqLywKQEAgLTM4MzczLDkgKzM4MzgxLDkgQEAKIAkJCQlBMTFFOEMwNzFCMUUyOEZF
MDAwM0E3QzcgLyogbm9ydGhFYXN0U291dGhXZXN0UmVzaXplQ3Vyc29yLnBuZyBpbiBSZXNvdXJj
ZXMgKi8sCiAJCQkJQTExRThDMDgxQjFFMjkwMjAwMDNBN0M3IC8qIG5vcnRoU291dGhSZXNpemVD
dXJzb3IucG5nIGluIFJlc291cmNlcyAqLywKIAkJCQlBMTFFOEMwOTFCMUUyOTA3MDAwM0E3Qzcg
Lyogbm9ydGhXZXN0U291dGhFYXN0UmVzaXplQ3Vyc29yLnBuZyBpbiBSZXNvdXJjZXMgKi8sCisJ
CQkJNDlFQ0Y3MkYyN0JBRTg1NDAwODgwOTkxIC8qIHBkZmpzIGluIFJlc291cmNlcyAqLywKIAkJ
CQk5MzE1M0JEQzE0MTk1OUJDMDBGQ0Y1QkUgLyogdGV4dEFyZWFSZXNpemVDb3JuZXIucG5nIGlu
IFJlc291cmNlcyAqLywKIAkJCQk5MzcwOTE4RDE0MTZEODZCMDA0NzczMzMgLyogdGV4dEFyZWFS
ZXNpemVDb3JuZXJAMngucG5nIGluIFJlc291cmNlcyAqLywKLQkJCQk0OUVDRjcyRjI3QkFFODU0
MDA4ODA5OTEgLyogcGRmanMgaW4gUmVzb3VyY2VzICovLAogCQkJKTsKIAkJCXJ1bk9ubHlGb3JE
ZXBsb3ltZW50UG9zdHByb2Nlc3NpbmcgPSAwOwogCQl9OwpAQCAtMzg2ODgsNiArMzg2OTYsNyBA
QAogCQkJCUNEMEVFRTBFMTQ3NDNGMzkwMDNFQUZBMiAvKiBBdWRpb091dHB1dFVuaXRBZGFwdG9y
SU9TLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUNEQTc5ODI3MTcwQTI3OTEwMEQ0NUM1NSAvKiBB
dWRpb1Nlc3Npb25JT1MubW0gaW4gU291cmNlcyAqLywKIAkJCQlDRDhBN0JCQjE5NzczNUZFMDBD
QkQ2NDMgLyogQXVkaW9Tb3VyY2VQcm92aWRlckFWRk9iakMubW0gaW4gU291cmNlcyAqLywKKwkJ
CQk0NkJBNDlCODI3QkI0NDMzMDA3N0Y2M0YgLyogQVZBc3NldFRyYWNrVXRpbGl0aWVzLm1tIGlu
IFNvdXJjZXMgKi8sCiAJCQkJMEZDQTI5MzUyNkZDMzkxNzAwNkI0QUVCIC8qIEFWQXVkaW9TZXNz
aW9uQ2FwdHVyZURldmljZU1hbmFnZXIubW0gaW4gU291cmNlcyAqLywKIAkJCQkwNzM4RTVFQzI0
OTk4MzkwMDBEQTEwMUMgLyogQVZPdXRwdXREZXZpY2VNZW51Q29udHJvbGxlclRhcmdldFBpY2tl
ci5tbSBpbiBTb3VyY2VzICovLAogCQkJCUNEMzM2RjYxMTdGOUY2NDcwMERERENEMCAvKiBBVlRy
YWNrUHJpdmF0ZUFWRk9iakNJbXBsLm1tIGluIFNvdXJjZXMgKi8sCkBAIC0zODcwNiwxMyArMzg3
MTUsMTQgQEAKIAkJCQk1MThGNEZGNjE5NENBNEU2MDA4MUJBQUUgLyogR2FtZXBhZEJ1dHRvbi5j
cHAgaW4gU291cmNlcyAqLywKIAkJCQk1MTZDNjIyMDE5NTBENDg3MDAzMzdFNzUgLyogR2FtZXBh
ZEV2ZW50LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTUxQTlEOUU5MTk1QjkzMUYwMDFCMkI1QyAv
KiBHYW1lcGFkTWFuYWdlci5jcHAgaW4gU291cmNlcyAqLywKLQkJCQk4Mzc5NjRDRjFGOERCNjlE
MDAyMThFQTAgLyogR2VvbG9jYXRpb25Qb3NpdGlvbkRhdGFJT1MubW0gaW4gU291cmNlcyAqLywK
KwkJCQk4Mzc5NjRDRjFGOERCNjlEMDAyMThFQTAgLyogR2VvbG9jYXRpb25Qb3NpdGlvbkRhdGFD
b2NvYS5tbSBpbiBTb3VyY2VzICovLAogCQkJCTZFNzJGNTRFMjI5RENEMTAwMEIzRTE1MSAvKiBH
cmFwaGljc0NvbnRleHRHTEFOR0xFLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTdDM0U1MTBCMThE
RjhGMzUwMEMxMTJGNyAvKiBIVE1MQ29udmVydGVyLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJQThE
MDZCM0EwQTI2NURDRDAwNUU3MjAzIC8qIEhUTUxOYW1lcy5jcHAgaW4gU291cmNlcyAqLywKIAkJ
CQkxQUM5MDBDMzE5NDNDMEZDMDA4NjI1QjUgLyogSFRUUEhlYWRlck5hbWVzLmNwcCBpbiBTb3Vy
Y2VzICovLAogCQkJCUNEMjdBRTUxMjJBOTg2ODcwMDk0N0ZGOSAvKiBJbWFnZVJvdGF0aW9uU2Vz
c2lvblZULm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJMDcwRTJEMEYyNkYyNTA4OTAwMTRBQUMzIC8q
IEluYmFuZENoYXB0ZXJUcmFja1ByaXZhdGVBVkZPYmpDLm1tIGluIFNvdXJjZXMgKi8sCisJCQkJ
NDZDQTk0MzEyN0I4Njk1ODAwRjRGNUZGIC8qIEluYmFuZFRleHRUcmFja1ByaXZhdGVBVkZPYmpD
Lm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJQ0QwNjNGODIxRTIzRkE4OTAwODEyQkUzIC8qIEluaXRE
YXRhUmVnaXN0cnkuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJOTM1QzQ3NzAwOUFDNEQ3MzAwQTZB
QUI0IC8qIEtleUV2ZW50TWFjLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJQ0RBOThFMEIxNjAzQ0Q2
MDAwRkVBM0IxIC8qIExlZ2FjeUNETS5jcHAgaW4gU291cmNlcyAqLywKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuY3Bw
CmluZGV4IDIwZGY4MTE1ZThmZDk1MjAzYTU1MTJkMmY4OGYwNGZlZjkxNjdmZDUuLmZiNTZhZTE5
MWE2MjI3ZGQ2ZWE0NGU4NjdkMzQ2MjU5NDBlMTBiNTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BhZ2UvUGFnZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmNwcApAQCAt
NjksNiArNjksNyBAQAogI2luY2x1ZGUgIkZyYW1lVHJlZS5oIgogI2luY2x1ZGUgIkZyYW1lVmll
dy5oIgogI2luY2x1ZGUgIkZ1bGxzY3JlZW5NYW5hZ2VyLmgiCisjaW5jbHVkZSAiR2VvbG9jYXRp
b25Db250cm9sbGVyLmgiCiAjaW5jbHVkZSAiSFRNTEVsZW1lbnQuaCIKICNpbmNsdWRlICJIVE1M
SW1hZ2VFbGVtZW50LmgiCiAjaW5jbHVkZSAiSFRNTE1lZGlhRWxlbWVudC5oIgpAQCAtMTMzMiw2
ICsxMzMzLDExIEBAIHZvaWQgUGFnZTo6ZGlkQ29tbWl0TG9hZCgpCiAgICAgcmVzZXRUZXh0UmVj
b2duaXRpb25SZXN1bHRzKCk7CiAgICAgcmVzZXRJbWFnZUFuYWx5c2lzUXVldWUoKTsKICNlbmRp
ZgorCisjaWYgRU5BQkxFKEdFT0xPQ0FUSU9OKQorICAgIGlmIChhdXRvKiBnZW9sb2NhdGlvbkNv
bnRyb2xsZXIgPSBHZW9sb2NhdGlvbkNvbnRyb2xsZXI6OmZyb20odGhpcykpCisgICAgICAgIGdl
b2xvY2F0aW9uQ29udHJvbGxlci0+ZGlkTmF2aWdhdGVQYWdlKCk7CisjZW5kaWYKIH0KIAogdm9p
ZCBQYWdlOjpkaWRGaW5pc2hMb2FkKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2NvY29hL0NvcmVMb2NhdGlvbkdlb2xvY2F0aW9uUHJvdmlkZXIuaCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2NvY29hL0NvcmVMb2NhdGlvbkdlb2xvY2F0aW9uUHJvdmlkZXIuaApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi5jNTI0NmM4ODRhY2Y4ZjY5ZmNiOGY4YWM0YWNjN2Y0Y2RlNjQ1Y2VkCi0tLSAvZGV2
L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvQ29yZUxvY2F0aW9uR2Vv
bG9jYXRpb25Qcm92aWRlci5oCkBAIC0wLDAgKzEsNjcgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMp
IDIwMjIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAor
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIu
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9S
UyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09O
VFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJV
U0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZ
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21h
IG9uY2UKKworI2luY2x1ZGUgPHd0Zi9Db21wbGV0aW9uSGFuZGxlci5oPgorI2luY2x1ZGUgPHd0
Zi9Gb3J3YXJkLmg+CisjaW5jbHVkZSA8d3RmL1JldGFpblB0ci5oPgorCitPQkpDX0NMQVNTIFdl
YkNMTG9jYXRpb25NYW5hZ2VyOworCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIEdlb2xv
Y2F0aW9uUG9zaXRpb25EYXRhOworY2xhc3MgUmVnaXN0cmFibGVEb21haW47CisKK2NsYXNzIFdF
QkNPUkVfRVhQT1JUIENvcmVMb2NhdGlvbkdlb2xvY2F0aW9uUHJvdmlkZXIgeworICAgIFdURl9N
QUtFX0ZBU1RfQUxMT0NBVEVEOworcHVibGljOgorICAgIGNsYXNzIENsaWVudCB7CisgICAgcHVi
bGljOgorICAgICAgICB2aXJ0dWFsIH5DbGllbnQoKSB7IH0KKworICAgICAgICB2aXJ0dWFsIHZv
aWQgZ2VvbG9jYXRpb25BdXRob3JpemF0aW9uR3JhbnRlZChjb25zdCBTdHJpbmcmIC8qd2Vic2l0
ZUlkZW50aWZpZXIqLykgeyB9CisgICAgICAgIHZpcnR1YWwgdm9pZCBnZW9sb2NhdGlvbkF1dGhv
cml6YXRpb25EZW5pZWQoY29uc3QgU3RyaW5nJiAvKndlYnNpdGVJZGVudGlmaWVyKi8pIHsgfQor
ICAgICAgICB2aXJ0dWFsIHZvaWQgcG9zaXRpb25DaGFuZ2VkKGNvbnN0IFN0cmluZyYgd2Vic2l0
ZUlkZW50aWZpZXIsIEdlb2xvY2F0aW9uUG9zaXRpb25EYXRhJiYpID0gMDsKKyAgICAgICAgdmly
dHVhbCB2b2lkIGVycm9yT2NjdXJyZWQoY29uc3QgU3RyaW5nJiB3ZWJzaXRlSWRlbnRpZmllciwg
Y29uc3QgU3RyaW5nJiBlcnJvck1lc3NhZ2UpID0gMDsKKyAgICAgICAgdmlydHVhbCB2b2lkIHJl
c2V0R2VvbG9jYXRpb24oY29uc3QgU3RyaW5nJiB3ZWJzaXRlSWRlbnRpZmllcikgPSAwOworICAg
IH07CisKKyAgICBDb3JlTG9jYXRpb25HZW9sb2NhdGlvblByb3ZpZGVyKGNvbnN0IFJlZ2lzdHJh
YmxlRG9tYWluJiwgQ2xpZW50Jik7CisgICAgfkNvcmVMb2NhdGlvbkdlb2xvY2F0aW9uUHJvdmlk
ZXIoKTsKKworICAgIHZvaWQgc3RhcnQoKTsKKyAgICB2b2lkIHN0b3AoKTsKKworICAgIHZvaWQg
c2V0RW5hYmxlSGlnaEFjY3VyYWN5KGJvb2wpOworCisgICAgc3RhdGljIHZvaWQgcmVxdWVzdEF1
dGhvcml6YXRpb24oY29uc3QgUmVnaXN0cmFibGVEb21haW4mLCBDb21wbGV0aW9uSGFuZGxlcjx2
b2lkKGJvb2wpPiYmKTsKKworcHJpdmF0ZToKKyAgICBSZXRhaW5QdHI8V2ViQ0xMb2NhdGlvbk1h
bmFnZXI+IG1fbG9jYXRpb25NYW5hZ2VyOworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvQ29yZUxvY2F0aW9uR2Vv
bG9jYXRpb25Qcm92aWRlci5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL0NvcmVM
b2NhdGlvbkdlb2xvY2F0aW9uUHJvdmlkZXIubW0KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYWFiOWZiODY1YTQ4YTg4
MDg3Njk3MTZlOTQyNThkMmY3OTA1ZmYwZAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2NvY29hL0NvcmVMb2NhdGlvbkdlb2xvY2F0aW9uUHJvdmlkZXIubW0KQEAg
LTAsMCArMSwyODQgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjIgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUg
bWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBB
TlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4g
Tk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExB
UlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW1wb3J0ICJjb25maWcuaCIKKyNpbXBvcnQg
IkNvcmVMb2NhdGlvbkdlb2xvY2F0aW9uUHJvdmlkZXIuaCIKKworI2ltcG9ydCAiR2VvbG9jYXRp
b25Qb3NpdGlvbkRhdGEuaCIKKyNpbXBvcnQgIlJlZ2lzdHJhYmxlRG9tYWluLmgiCisjaW1wb3J0
IDxDb3JlTG9jYXRpb24vQ0xMb2NhdGlvbk1hbmFnZXJEZWxlZ2F0ZS5oPgorI2ltcG9ydCA8Q29y
ZUxvY2F0aW9uL0NvcmVMb2NhdGlvbi5oPgorI2ltcG9ydCA8d3RmL1NvZnRMaW5raW5nLmg+CisK
KyNpZiBVU0UoQVBQTEVfSU5URVJOQUxfU0RLKQorI2ltcG9ydCA8Q29yZUxvY2F0aW9uL0NMTG9j
YXRpb25NYW5hZ2VyX1ByaXZhdGUuaD4KKyNlbmRpZgorCitTT0ZUX0xJTktfRlJBTUVXT1JLKENv
cmVMb2NhdGlvbikKKworU09GVF9MSU5LX0NMQVNTKENvcmVMb2NhdGlvbiwgQ0xMb2NhdGlvbk1h
bmFnZXIpCitTT0ZUX0xJTktfQ0xBU1MoQ29yZUxvY2F0aW9uLCBDTExvY2F0aW9uKQorCitTT0ZU
X0xJTktfQ09OU1RBTlQoQ29yZUxvY2F0aW9uLCBrQ0xMb2NhdGlvbkFjY3VyYWN5QmVzdCwgZG91
YmxlKQorU09GVF9MSU5LX0NPTlNUQU5UKENvcmVMb2NhdGlvbiwga0NMTG9jYXRpb25BY2N1cmFj
eUh1bmRyZWRNZXRlcnMsIGRvdWJsZSkKKworI2RlZmluZSBrQ0xMb2NhdGlvbkFjY3VyYWN5QmVz
dCBnZXRrQ0xMb2NhdGlvbkFjY3VyYWN5QmVzdCgpCisjZGVmaW5lIGtDTExvY2F0aW9uQWNjdXJh
Y3lIdW5kcmVkTWV0ZXJzIGdldGtDTExvY2F0aW9uQWNjdXJhY3lIdW5kcmVkTWV0ZXJzKCkKKwor
c3RhdGljIGJvb2wgaXNBdXRob3JpemF0aW9uR3JhbnRlZChDTEF1dGhvcml6YXRpb25TdGF0dXMg
c3RhdHVzKQoreworICAgIHJldHVybiBzdGF0dXMgPT0ga0NMQXV0aG9yaXphdGlvblN0YXR1c0F1
dGhvcml6ZWRBbHdheXMKKyNpZiBIQVZFKENPUkVfTE9DQVRJT05fQVVUSE9SSVpFRF9XSEVOX0lO
X1VTRSkKKyAgICAgICAgfHwgc3RhdHVzID09IGtDTEF1dGhvcml6YXRpb25TdGF0dXNBdXRob3Jp
emVkV2hlbkluVXNlCisjZW5kaWYKKyAgICAgICAgOworfQorCitAaW50ZXJmYWNlIFdlYkNMTG9j
YXRpb25NYW5hZ2VyIDogTlNPYmplY3Q8Q0xMb2NhdGlvbk1hbmFnZXJEZWxlZ2F0ZT4KK0BlbmQK
KworQGltcGxlbWVudGF0aW9uIFdlYkNMTG9jYXRpb25NYW5hZ2VyIHsKKyAgICBSZXRhaW5QdHI8
Q0xMb2NhdGlvbk1hbmFnZXI+IF9sb2NhdGlvbk1hbmFnZXI7CisgICAgV2ViQ29yZTo6Q29yZUxv
Y2F0aW9uR2VvbG9jYXRpb25Qcm92aWRlcjo6Q2xpZW50KiBfY2xpZW50OworICAgIFN0cmluZyBf
d2Vic2l0ZUlkZW50aWZpZXI7CisgICAgQk9PTCBfaXNXYWl0aW5nRm9yQXV0aG9yaXphdGlvbjsK
K30KKworLSAoaW5zdGFuY2V0eXBlKWluaXRXaXRoV2Vic2l0ZUlkZW50aWZpZXI6KGNvbnN0IFN0
cmluZyYpd2Vic2l0ZUlkZW50aWZpZXIgY2xpZW50OihXZWJDb3JlOjpDb3JlTG9jYXRpb25HZW9s
b2NhdGlvblByb3ZpZGVyOjpDbGllbnQmKWNsaWVudAoreworICAgIHNlbGYgPSBbc3VwZXIgaW5p
dF07CisgICAgaWYgKCFzZWxmKQorICAgICAgICByZXR1cm4gbmlsOworCisgICAgLy8gRklYTUU6
IENhbGwgaW5pdFdpdGhXZWJzaXRlSWRlbnRpZmllciBhbmQgcGFzcyB0aGUgd2Vic2l0ZUlkZW50
aWZpZXIgd2hlbiBIQVZFKENPUkVfTE9DQVRJT05fV0VCU0lURV9JREVOVElGSUVSUykgYW5kICF3
ZWJzaXRlSWRlbnRpZmllci5pc0VtcHR5KCkgb25jZSA8cmRhcjovLzg4ODM0MzAxPiBpcyBmaXhl
ZC4KKyAgICBVTlVTRURfUEFSQU0od2Vic2l0ZUlkZW50aWZpZXIpOworICAgIF9sb2NhdGlvbk1h
bmFnZXIgPSBhZG9wdE5TKFthbGxvY0NMTG9jYXRpb25NYW5hZ2VySW5zdGFuY2UoKSBpbml0XSk7
CisgICAgX2NsaWVudCA9ICZjbGllbnQ7CisgICAgX3dlYnNpdGVJZGVudGlmaWVyID0gd2Vic2l0
ZUlkZW50aWZpZXI7CisgICAgW19sb2NhdGlvbk1hbmFnZXIgc2V0RGVsZWdhdGU6c2VsZl07Cisg
ICAgcmV0dXJuIHNlbGY7Cit9CisKKy0gKHZvaWQpZGVhbGxvYworeworICAgIFtfbG9jYXRpb25N
YW5hZ2VyIHNldERlbGVnYXRlOm5pbF07CisgICAgW3N1cGVyIGRlYWxsb2NdOworfQorCistIChD
TEF1dGhvcml6YXRpb25TdGF0dXMpYXV0aG9yaXphdGlvblN0YXR1cworeworI2lmIEhBVkUoQ09S
RV9MT0NBVElPTl9BVVRIT1JJWkFUSU9OX1NUQVRVU19JTlNUQUxMX1BST1BFUlRZKQorICAgIHJl
dHVybiBbX2xvY2F0aW9uTWFuYWdlciBhdXRob3JpemF0aW9uU3RhdHVzXTsKKyNlbHNlCisgICAg
cmV0dXJuIFtnZXRDTExvY2F0aW9uTWFuYWdlckNsYXNzKCkgYXV0aG9yaXphdGlvblN0YXR1c107
CisjZW5kaWYKK30KKworLSAodm9pZClzdGFydAoreworICAgIGlmICghW2dldENMTG9jYXRpb25N
YW5hZ2VyQ2xhc3MoKSBsb2NhdGlvblNlcnZpY2VzRW5hYmxlZF0gfHwgIWlzQXV0aG9yaXphdGlv
bkdyYW50ZWQoW3NlbGYgYXV0aG9yaXphdGlvblN0YXR1c10pKSB7CisgICAgICAgIFtfbG9jYXRp
b25NYW5hZ2VyIHN0b3BVcGRhdGluZ0xvY2F0aW9uXTsKKyAgICAgICAgX2NsaWVudC0+cmVzZXRH
ZW9sb2NhdGlvbihfd2Vic2l0ZUlkZW50aWZpZXIpOworICAgICAgICByZXR1cm47CisgICAgfQor
CisgICAgW19sb2NhdGlvbk1hbmFnZXIgc3RhcnRVcGRhdGluZ0xvY2F0aW9uXTsKK30KKworLSAo
dm9pZClzdG9wCit7CisgICAgW19sb2NhdGlvbk1hbmFnZXIgc3RvcFVwZGF0aW5nTG9jYXRpb25d
OworfQorCistICh2b2lkKXNldEVuYWJsZUhpZ2hBY2N1cmFjeTooQk9PTCloaWdoQWNjdXJhY3lF
bmFibGVkCit7CisgICAgW19sb2NhdGlvbk1hbmFnZXIgc2V0RGVzaXJlZEFjY3VyYWN5OmhpZ2hB
Y2N1cmFjeUVuYWJsZWQgPyBrQ0xMb2NhdGlvbkFjY3VyYWN5QmVzdCA6IGtDTExvY2F0aW9uQWNj
dXJhY3lIdW5kcmVkTWV0ZXJzXTsKK30KKworLSAodm9pZClyZXF1ZXN0R2VvbG9jYXRpb25BdXRo
b3JpemF0aW9uCit7CisgICAgaWYgKCFbZ2V0Q0xMb2NhdGlvbk1hbmFnZXJDbGFzcygpIGxvY2F0
aW9uU2VydmljZXNFbmFibGVkXSkgeworICAgICAgICBfY2xpZW50LT5nZW9sb2NhdGlvbkF1dGhv
cml6YXRpb25EZW5pZWQoX3dlYnNpdGVJZGVudGlmaWVyKTsKKyAgICAgICAgcmV0dXJuOworICAg
IH0KKworICAgIHN3aXRjaCAoW3NlbGYgYXV0aG9yaXphdGlvblN0YXR1c10pIHsKKyAgICBjYXNl
IGtDTEF1dGhvcml6YXRpb25TdGF0dXNOb3REZXRlcm1pbmVkOiB7CisgICAgICAgIGlmICghX2lz
V2FpdGluZ0ZvckF1dGhvcml6YXRpb24pIHsKKyAgICAgICAgICAgIF9pc1dhaXRpbmdGb3JBdXRo
b3JpemF0aW9uID0gWUVTOworI2lmIEhBVkUoQ09SRV9MT0NBVElPTl9SRVFVRVNUX0FVVEhPUkla
QVRJT04pCisgICAgICAgICAgICBbX2xvY2F0aW9uTWFuYWdlciByZXF1ZXN0V2hlbkluVXNlQXV0
aG9yaXphdGlvbl07CisjZW5kaWYKKyAgICAgICAgfQorICAgICAgICBicmVhazsKKyAgICB9Cisg
ICAgY2FzZSBrQ0xBdXRob3JpemF0aW9uU3RhdHVzQXV0aG9yaXplZEFsd2F5czoKKyNpZiBIQVZF
KENPUkVfTE9DQVRJT05fQVVUSE9SSVpFRF9XSEVOX0lOX1VTRSkKKyAgICBjYXNlIGtDTEF1dGhv
cml6YXRpb25TdGF0dXNBdXRob3JpemVkV2hlbkluVXNlOgorI2VuZGlmCisgICAgICAgIF9jbGll
bnQtPmdlb2xvY2F0aW9uQXV0aG9yaXphdGlvbkdyYW50ZWQoX3dlYnNpdGVJZGVudGlmaWVyKTsK
KyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBrQ0xBdXRob3JpemF0aW9uU3RhdHVzUmVzdHJpY3Rl
ZDoKKyAgICBjYXNlIGtDTEF1dGhvcml6YXRpb25TdGF0dXNEZW5pZWQ6CisgICAgICAgIF9jbGll
bnQtPmdlb2xvY2F0aW9uQXV0aG9yaXphdGlvbkRlbmllZChfd2Vic2l0ZUlkZW50aWZpZXIpOwor
ICAgICAgICBicmVhazsKKyAgICB9Cit9CisKKyNpZiBIQVZFKENPUkVfTE9DQVRJT05fRElEX0NI
QU5HRV9BVVRIT1JJWkFUSU9OKQorLSAodm9pZClsb2NhdGlvbk1hbmFnZXJEaWRDaGFuZ2VBdXRo
b3JpemF0aW9uOihDTExvY2F0aW9uTWFuYWdlciAqKW1hbmFnZXIKK3sKKyAgICBhdXRvIHN0YXR1
cyA9IFtzZWxmIGF1dGhvcml6YXRpb25TdGF0dXNdOworI2Vsc2UKKy0gKHZvaWQpbG9jYXRpb25N
YW5hZ2VyOihDTExvY2F0aW9uTWFuYWdlciAqKW1hbmFnZXIgZGlkQ2hhbmdlQXV0aG9yaXphdGlv
blN0YXR1czooQ0xBdXRob3JpemF0aW9uU3RhdHVzKXN0YXR1cworeworI2VuZGlmCisgICAgaWYg
KF9pc1dhaXRpbmdGb3JBdXRob3JpemF0aW9uKSB7CisgICAgICAgIHN3aXRjaCAoc3RhdHVzKSB7
CisgICAgICAgIGNhc2Uga0NMQXV0aG9yaXphdGlvblN0YXR1c05vdERldGVybWluZWQ6CisgICAg
ICAgICAgICAvLyBUaGlzIGNhbiBoYXBwZW4gYWZ0ZXIgcmVzdW1lIGlmIHRoZSB1c2VyIGhhcyBz
dGlsbCBub3QgYW5zd2VyZWQgdGhlIGRpYWxvZy4gV2UganVzdCBoYXZlIHRvIHdhaXQgZm9yIHRo
ZSBwZXJtaXNzaW9uLgorICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2Uga0NMQXV0aG9y
aXphdGlvblN0YXR1c0RlbmllZDoKKyAgICAgICAgY2FzZSBrQ0xBdXRob3JpemF0aW9uU3RhdHVz
UmVzdHJpY3RlZDoKKyAgICAgICAgICAgIF9pc1dhaXRpbmdGb3JBdXRob3JpemF0aW9uID0gTk87
CisgICAgICAgICAgICBfY2xpZW50LT5nZW9sb2NhdGlvbkF1dGhvcml6YXRpb25EZW5pZWQoX3dl
YnNpdGVJZGVudGlmaWVyKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIGtDTEF1
dGhvcml6YXRpb25TdGF0dXNBdXRob3JpemVkQWx3YXlzOgorI2lmIEhBVkUoQ09SRV9MT0NBVElP
Tl9BVVRIT1JJWkVEX1dIRU5fSU5fVVNFKQorICAgICAgICBjYXNlIGtDTEF1dGhvcml6YXRpb25T
dGF0dXNBdXRob3JpemVkV2hlbkluVXNlOgorI2VuZGlmCisgICAgICAgICAgICBfaXNXYWl0aW5n
Rm9yQXV0aG9yaXphdGlvbiA9IE5POworICAgICAgICAgICAgX2NsaWVudC0+Z2VvbG9jYXRpb25B
dXRob3JpemF0aW9uR3JhbnRlZChfd2Vic2l0ZUlkZW50aWZpZXIpOworICAgICAgICAgICAgYnJl
YWs7CisgICAgICAgIH0KKyAgICB9IGVsc2UgeworICAgICAgICBpZiAoc3RhdHVzID09IGtDTEF1
dGhvcml6YXRpb25TdGF0dXNEZW5pZWQgfHwgc3RhdHVzID09IGtDTEF1dGhvcml6YXRpb25TdGF0
dXNSZXN0cmljdGVkKSB7CisgICAgICAgICAgICBbX2xvY2F0aW9uTWFuYWdlciBzdG9wVXBkYXRp
bmdMb2NhdGlvbl07CisgICAgICAgICAgICBfY2xpZW50LT5yZXNldEdlb2xvY2F0aW9uKF93ZWJz
aXRlSWRlbnRpZmllcik7CisgICAgICAgIH0KKyAgICB9Cit9CisKKy0gKHZvaWQpbG9jYXRpb25N
YW5hZ2VyOihDTExvY2F0aW9uTWFuYWdlciAqKW1hbmFnZXIgZGlkVXBkYXRlTG9jYXRpb25zOihO
U0FycmF5ICopbG9jYXRpb25zCit7CisgICAgVU5VU0VEX1BBUkFNKG1hbmFnZXIpOworICAgIGZv
ciAoQ0xMb2NhdGlvbiAqbG9jYXRpb24gaW4gbG9jYXRpb25zKQorICAgICAgICBfY2xpZW50LT5w
b3NpdGlvbkNoYW5nZWQoX3dlYnNpdGVJZGVudGlmaWVyLCBXZWJDb3JlOjpHZW9sb2NhdGlvblBv
c2l0aW9uRGF0YSB7IGxvY2F0aW9uIH0pOworfQorCistICh2b2lkKWxvY2F0aW9uTWFuYWdlcjoo
Q0xMb2NhdGlvbk1hbmFnZXIgKiltYW5hZ2VyIGRpZEZhaWxXaXRoRXJyb3I6KE5TRXJyb3IgKill
cnJvcgoreworICAgIEFTU0VSVChlcnJvcik7CisgICAgVU5VU0VEX1BBUkFNKG1hbmFnZXIpOwor
CisgICAgaWYgKFtlcnJvciBjb2RlXSA9PSBrQ0xFcnJvckRlbmllZCkgeworICAgICAgICAvLyBJ
Z25vcmUgdGhlIGVycm9yIGhlcmUgYW5kIGxldCBsb2NhdGlvbk1hbmFnZXI6ZGlkQ2hhbmdlQXV0
aG9yaXphdGlvblN0YXR1czogaGFuZGxlIHRoZSBwZXJtaXNzaW9uLgorICAgICAgICByZXR1cm47
CisgICAgfQorCisgICAgTlNTdHJpbmcgKmVycm9yTWVzc2FnZSA9IFtlcnJvciBsb2NhbGl6ZWRE
ZXNjcmlwdGlvbl07CisgICAgX2NsaWVudC0+ZXJyb3JPY2N1cnJlZChfd2Vic2l0ZUlkZW50aWZp
ZXIsIGVycm9yTWVzc2FnZSk7Cit9CisKK0BlbmQKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitD
b3JlTG9jYXRpb25HZW9sb2NhdGlvblByb3ZpZGVyOjpDb3JlTG9jYXRpb25HZW9sb2NhdGlvblBy
b3ZpZGVyKGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiByZWdpc3RyYWJsZURvbWFpbiwgQ2xpZW50
JiBjbGllbnQpCisgICAgOiBtX2xvY2F0aW9uTWFuYWdlcihhZG9wdE5TKFtbV2ViQ0xMb2NhdGlv
bk1hbmFnZXIgYWxsb2NdIGluaXRXaXRoV2Vic2l0ZUlkZW50aWZpZXI6cmVnaXN0cmFibGVEb21h
aW4uc3RyaW5nKCkgY2xpZW50OmNsaWVudF0pKQoreworICAgIC8vIFJlcXVlc3QgcGVybWlzc2lv
biBmb3IgdGhlIGFwcCB0byB1c2UgZ2VvbG9jYXRpb24gKGlmIGl0IGRvZXNuJ3QgYWxyZWFkeSku
CisgICAgW21fbG9jYXRpb25NYW5hZ2VyIHJlcXVlc3RHZW9sb2NhdGlvbkF1dGhvcml6YXRpb25d
OworfQorCitDb3JlTG9jYXRpb25HZW9sb2NhdGlvblByb3ZpZGVyOjp+Q29yZUxvY2F0aW9uR2Vv
bG9jYXRpb25Qcm92aWRlcigpCit7CisgICAgW21fbG9jYXRpb25NYW5hZ2VyIHN0b3BdOworfQor
Cit2b2lkIENvcmVMb2NhdGlvbkdlb2xvY2F0aW9uUHJvdmlkZXI6OnN0YXJ0KCkKK3sKKyAgICBb
bV9sb2NhdGlvbk1hbmFnZXIgc3RhcnRdOworfQorCit2b2lkIENvcmVMb2NhdGlvbkdlb2xvY2F0
aW9uUHJvdmlkZXI6OnN0b3AoKQoreworICAgIFttX2xvY2F0aW9uTWFuYWdlciBzdG9wXTsKK30K
Kwordm9pZCBDb3JlTG9jYXRpb25HZW9sb2NhdGlvblByb3ZpZGVyOjpzZXRFbmFibGVIaWdoQWNj
dXJhY3koYm9vbCBoaWdoQWNjdXJhY3lFbmFibGVkKQoreworICAgIFttX2xvY2F0aW9uTWFuYWdl
ciBzZXRFbmFibGVIaWdoQWNjdXJhY3k6aGlnaEFjY3VyYWN5RW5hYmxlZF07Cit9CisKK2NsYXNz
IEF1dGhvcml6YXRpb25DaGVja2VyIGZpbmFsIDogcHVibGljIFJlZkNvdW50ZWQ8QXV0aG9yaXph
dGlvbkNoZWNrZXI+LCBwdWJsaWMgQ29yZUxvY2F0aW9uR2VvbG9jYXRpb25Qcm92aWRlcjo6Q2xp
ZW50IHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgUmVmPEF1dGhvcml6YXRpb25DaGVja2VyPiBjcmVh
dGUoKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgQXV0aG9yaXphdGlvbkNo
ZWNrZXIpOworICAgIH0KKworICAgIHZvaWQgY2hlY2soY29uc3QgUmVnaXN0cmFibGVEb21haW4m
IHJlZ2lzdHJhYmxlRG9tYWluLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmIGNvbXBs
ZXRpb25IYW5kbGVyKQorICAgIHsKKyAgICAgICAgbV9jb21wbGV0aW9uSGFuZGxlciA9IFdURk1v
dmUoY29tcGxldGlvbkhhbmRsZXIpOworICAgICAgICBtX3Byb3ZpZGVyID0gbWFrZVVuaXF1ZTxD
b3JlTG9jYXRpb25HZW9sb2NhdGlvblByb3ZpZGVyPihyZWdpc3RyYWJsZURvbWFpbiwgKnRoaXMp
OworICAgIH0KKworcHJpdmF0ZToKKyAgICBBdXRob3JpemF0aW9uQ2hlY2tlcigpID0gZGVmYXVs
dDsKKworICAgIHZvaWQgZ2VvbG9jYXRpb25BdXRob3JpemF0aW9uR3JhbnRlZChjb25zdCBTdHJp
bmcmKSBmaW5hbAorICAgIHsKKyAgICAgICAgaWYgKG1fY29tcGxldGlvbkhhbmRsZXIpCisgICAg
ICAgICAgICBtX2NvbXBsZXRpb25IYW5kbGVyKHRydWUpOworICAgIH0KKworICAgIHZvaWQgZ2Vv
bG9jYXRpb25BdXRob3JpemF0aW9uRGVuaWVkKGNvbnN0IFN0cmluZyYpIGZpbmFsCisgICAgewor
ICAgICAgICBpZiAobV9jb21wbGV0aW9uSGFuZGxlcikKKyAgICAgICAgICAgIG1fY29tcGxldGlv
bkhhbmRsZXIoZmFsc2UpOworICAgIH0KKworICAgIHZvaWQgcG9zaXRpb25DaGFuZ2VkKGNvbnN0
IFN0cmluZyYsIEdlb2xvY2F0aW9uUG9zaXRpb25EYXRhJiYpIGZpbmFsIHsgfQorICAgIHZvaWQg
ZXJyb3JPY2N1cnJlZChjb25zdCBTdHJpbmcmLCBjb25zdCBTdHJpbmcmKSBmaW5hbAorICAgIHsK
KyAgICAgICAgaWYgKG1fY29tcGxldGlvbkhhbmRsZXIpCisgICAgICAgICAgICBtX2NvbXBsZXRp
b25IYW5kbGVyKGZhbHNlKTsKKyAgICB9CisgICAgdm9pZCByZXNldEdlb2xvY2F0aW9uKGNvbnN0
IFN0cmluZyYpIGZpbmFsIHsgfQorCisgICAgc3RkOjp1bmlxdWVfcHRyPENvcmVMb2NhdGlvbkdl
b2xvY2F0aW9uUHJvdmlkZXI+IG1fcHJvdmlkZXI7CisgICAgQ29tcGxldGlvbkhhbmRsZXI8dm9p
ZChib29sKT4gbV9jb21wbGV0aW9uSGFuZGxlcjsKK307CisKK3ZvaWQgQ29yZUxvY2F0aW9uR2Vv
bG9jYXRpb25Qcm92aWRlcjo6cmVxdWVzdEF1dGhvcml6YXRpb24oY29uc3QgUmVnaXN0cmFibGVE
b21haW4mIHJlZ2lzdHJhYmxlRG9tYWluLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYm
IGNvbXBsZXRpb25IYW5kbGVyKQoreworICAgIGF1dG8gYXV0aG9yaXphdGlvbkNoZWNrZXIgPSBB
dXRob3JpemF0aW9uQ2hlY2tlcjo6Y3JlYXRlKCk7CisgICAgYXV0aG9yaXphdGlvbkNoZWNrZXIt
PmNoZWNrKHJlZ2lzdHJhYmxlRG9tYWluLCBbYXV0aG9yaXphdGlvbkNoZWNrZXIsIGNvbXBsZXRp
b25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildKGJvb2wgYXV0aG9yaXplZCkg
bXV0YWJsZSB7CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKGF1dGhvcml6ZWQpOworICAgIH0p
OworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9tb2NrL0dlb2xvY2F0aW9uQ2xpZW50TW9jay5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9tb2NrL0dlb2xvY2F0aW9uQ2xpZW50TW9jay5jcHAKaW5kZXggOWQ1ZWZjODNm
MzRlYjE4ZDU5OWRjMTBjYWE4ZmMwY2EzOTlkYjBhMi4uZmE0MjA4MmU1MDU5YTllY2YyNjRjYWFm
NGMyNjUzMmY0YjJlNWQ3YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9j
ay9HZW9sb2NhdGlvbkNsaWVudE1vY2suY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L21vY2svR2VvbG9jYXRpb25DbGllbnRNb2NrLmNwcApAQCAtMTM2LDEwICsxMzYsMTEgQEAgdm9p
ZCBHZW9sb2NhdGlvbkNsaWVudE1vY2s6Omdlb2xvY2F0aW9uRGVzdHJveWVkKCkKICAgICBBU1NF
UlQoIW1faXNBY3RpdmUpOwogfQogCi12b2lkIEdlb2xvY2F0aW9uQ2xpZW50TW9jazo6c3RhcnRV
cGRhdGluZyhjb25zdCBTdHJpbmcmIGF1dGhvcml6YXRpb25Ub2tlbikKK3ZvaWQgR2VvbG9jYXRp
b25DbGllbnRNb2NrOjpzdGFydFVwZGF0aW5nKGNvbnN0IFN0cmluZyYgYXV0aG9yaXphdGlvblRv
a2VuLCBib29sIGVuYWJsZUhpZ2hBY2N1cmFjeSkKIHsKICAgICBBU1NFUlQoIW1faXNBY3RpdmUp
OwogICAgIFVOVVNFRF9QQVJBTShhdXRob3JpemF0aW9uVG9rZW4pOworICAgIFVOVVNFRF9QQVJB
TShlbmFibGVIaWdoQWNjdXJhY3kpOwogICAgIG1faXNBY3RpdmUgPSB0cnVlOwogICAgIGFzeW5j
VXBkYXRlQ29udHJvbGxlcigpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbW9jay9HZW9sb2NhdGlvbkNsaWVudE1vY2suaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L21vY2svR2VvbG9jYXRpb25DbGllbnRNb2NrLmgKaW5kZXggMmZhNzVlMDU3YTUzZDdlODE4Y2Nm
YWZlZTcwMjQzZGQ1NDgyMTg0NS4uZjhiYWMzOGI1YjZjY2M4Y2MwOGY4NzA3MWViYzc1ZDY1YjMx
MDY0MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9HZW9sb2NhdGlv
bkNsaWVudE1vY2suaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL0dlb2xvY2F0
aW9uQ2xpZW50TW9jay5oCkBAIC01OSw3ICs1OSw3IEBAIHB1YmxpYzoKIAogICAgIC8vIEdlb2xv
Y2F0aW9uQ2xpZW50CiAgICAgdm9pZCBnZW9sb2NhdGlvbkRlc3Ryb3llZCgpIG92ZXJyaWRlOwot
ICAgIHZvaWQgc3RhcnRVcGRhdGluZyhjb25zdCBTdHJpbmcmIGF1dGhvcml6YXRpb25Ub2tlbikg
b3ZlcnJpZGU7CisgICAgdm9pZCBzdGFydFVwZGF0aW5nKGNvbnN0IFN0cmluZyYgYXV0aG9yaXph
dGlvblRva2VuLCBib29sIGVuYWJsZUhpZ2hBY2N1cmFjeSkgb3ZlcnJpZGU7CiAgICAgdm9pZCBz
dG9wVXBkYXRpbmcoKSBvdmVycmlkZTsKICAgICB2b2lkIHNldEVuYWJsZUhpZ2hBY2N1cmFjeShi
b29sKSBvdmVycmlkZTsKICAgICBzdGQ6Om9wdGlvbmFsPEdlb2xvY2F0aW9uUG9zaXRpb25EYXRh
PiBsYXN0UG9zaXRpb24oKSBvdmVycmlkZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU291
cmNlc0NvY29hLnR4dCBiL1NvdXJjZS9XZWJLaXQvU291cmNlc0NvY29hLnR4dAppbmRleCAyYWNk
YTk0MWVjZGY0YmNiZTdmZTk0YTUxODE3NDkxZjFjMGJmMzlhLi4zOWZlYTkxY2U1NjE3NTgxNjBh
ZDkyMTg5ODk0NTNlNTgzZWQ2NDYxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NvdXJjZXND
b2NvYS50eHQKKysrIGIvU291cmNlL1dlYktpdC9Tb3VyY2VzQ29jb2EudHh0CkBAIC00MjcsNiAr
NDI3LDcgQEAgVUlQcm9jZXNzL0NvY29hL1VJUmVtb3RlT2JqZWN0UmVnaXN0cnkuY3BwCiBVSVBy
b2Nlc3MvQ29jb2EvVXNlck1lZGlhQ2FwdHVyZU1hbmFnZXJQcm94eS5jcHAKIFVJUHJvY2Vzcy9D
b2NvYS9Vc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXJQcm94eS5tbQogVUlQcm9jZXNz
L0NvY29hL1ZpZGVvRnVsbHNjcmVlbk1hbmFnZXJQcm94eS5tbQorVUlQcm9jZXNzL0NvY29hL1dl
Ykdlb2xvY2F0aW9uTWFuYWdlclByb3h5Q29jb2EuY3BwCiBVSVByb2Nlc3MvQ29jb2EvV2ViUGFn
ZVByb3h5Q29jb2EubW0KIFVJUHJvY2Vzcy9Db2NvYS9XZWJQYXN0ZWJvYXJkUHJveHlDb2NvYS5t
bQogVUlQcm9jZXNzL0NvY29hL1dlYlByZWZlcmVuY2VzQ29jb2EubW0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dlYkdlb2xvY2F0aW9uTWFuYWdlclByb3h5Q29j
b2EuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV2ViR2VvbG9jYXRpb25NYW5h
Z2VyUHJveHlDb2NvYS5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZjBiZmJkZTkzMjIyYjEwNTdmMTczNmI3Mjky
MjAxMjMyYjAyNTY4ZgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0NvY29hL1dlYkdlb2xvY2F0aW9uTWFuYWdlclByb3h5Q29jb2EuY3BwCkBAIC0wLDAgKzEsNzYg
QEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4g
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAg
ICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUg
ZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUg
SU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICog
VEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hB
TEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9D
VVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
IERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiV2ViR2VvbG9j
YXRpb25NYW5hZ2VyUHJveHkuaCIKKworI2luY2x1ZGUgIldlYkdlb2xvY2F0aW9uTWFuYWdlck1l
c3NhZ2VzLmgiCisjaW5jbHVkZSAiV2ViUHJvY2Vzc1Byb3h5LmgiCisKK25hbWVzcGFjZSBXZWJL
aXQgeworCisvLyBGSVhNRTogVGhpcyBzaG91bGQgYmUgdXNlZCBieSBhbGwgQ29jb2EgcG9ydHMK
KyNpZiBQTEFURk9STShJT1NfRkFNSUxZKQorCit2b2lkIFdlYkdlb2xvY2F0aW9uTWFuYWdlclBy
b3h5Ojpwb3NpdGlvbkNoYW5nZWQoY29uc3QgU3RyaW5nJiB3ZWJzaXRlSWRlbnRpZmllciwgV2Vi
Q29yZTo6R2VvbG9jYXRpb25Qb3NpdGlvbkRhdGEmJiBwb3NpdGlvbikKK3sKKyAgICBhdXRvIHJl
Z2lzdHJhYmxlRG9tYWluID0gV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW46OnVuY2hlY2tlZENy
ZWF0ZUZyb21SZWdpc3RyYWJsZURvbWFpblN0cmluZyh3ZWJzaXRlSWRlbnRpZmllcik7CisgICAg
YXV0byBpdCA9IG1fcGVyRG9tYWluRGF0YS5maW5kKHJlZ2lzdHJhYmxlRG9tYWluKTsKKyAgICBp
ZiAoaXQgPT0gbV9wZXJEb21haW5EYXRhLmVuZCgpKQorICAgICAgICByZXR1cm47CisKKyAgICBh
dXRvJiBwZXJEb21haW5EYXRhID0gKml0LT52YWx1ZTsKKyAgICBwZXJEb21haW5EYXRhLmxhc3RQ
b3NpdGlvbiA9IFdURk1vdmUocG9zaXRpb24pOworICAgIGZvciAoYXV0byYgd2ViUHJvY2Vzc1By
b3h5IDogcGVyRG9tYWluRGF0YS53YXRjaGVycykKKyAgICAgICAgd2ViUHJvY2Vzc1Byb3h5LnNl
bmQoTWVzc2FnZXM6OldlYkdlb2xvY2F0aW9uTWFuYWdlcjo6RGlkQ2hhbmdlUG9zaXRpb24ocmVn
aXN0cmFibGVEb21haW4sIHBlckRvbWFpbkRhdGEubGFzdFBvc2l0aW9uLnZhbHVlKCkpLCAwKTsK
K30KKwordm9pZCBXZWJHZW9sb2NhdGlvbk1hbmFnZXJQcm94eTo6ZXJyb3JPY2N1cnJlZChjb25z
dCBTdHJpbmcmIHdlYnNpdGVJZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIGVycm9yTWVzc2FnZSkK
K3sKKyAgICBhdXRvIHJlZ2lzdHJhYmxlRG9tYWluID0gV2ViQ29yZTo6UmVnaXN0cmFibGVEb21h
aW46OnVuY2hlY2tlZENyZWF0ZUZyb21SZWdpc3RyYWJsZURvbWFpblN0cmluZyh3ZWJzaXRlSWRl
bnRpZmllcik7CisgICAgYXV0byBpdCA9IG1fcGVyRG9tYWluRGF0YS5maW5kKHJlZ2lzdHJhYmxl
RG9tYWluKTsKKyAgICBpZiAoaXQgPT0gbV9wZXJEb21haW5EYXRhLmVuZCgpKQorICAgICAgICBy
ZXR1cm47CisKKyAgICBhdXRvJiBwZXJEb21haW5EYXRhID0gKml0LT52YWx1ZTsKKyAgICBmb3Ig
KGF1dG8mIHdlYlByb2Nlc3NQcm94eSA6IHBlckRvbWFpbkRhdGEud2F0Y2hlcnMpCisgICAgICAg
IHdlYlByb2Nlc3NQcm94eS5zZW5kKE1lc3NhZ2VzOjpXZWJHZW9sb2NhdGlvbk1hbmFnZXI6OkRp
ZEZhaWxUb0RldGVybWluZVBvc2l0aW9uKHJlZ2lzdHJhYmxlRG9tYWluLCBlcnJvck1lc3NhZ2Up
LCAwKTsKK30KKwordm9pZCBXZWJHZW9sb2NhdGlvbk1hbmFnZXJQcm94eTo6cmVzZXRHZW9sb2Nh
dGlvbihjb25zdCBTdHJpbmcmIHdlYnNpdGVJZGVudGlmaWVyKQoreworICAgIGF1dG8gcmVnaXN0
cmFibGVEb21haW4gPSBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbjo6dW5jaGVja2VkQ3JlYXRl
RnJvbVJlZ2lzdHJhYmxlRG9tYWluU3RyaW5nKHdlYnNpdGVJZGVudGlmaWVyKTsKKyAgICBhdXRv
IGl0ID0gbV9wZXJEb21haW5EYXRhLmZpbmQocmVnaXN0cmFibGVEb21haW4pOworICAgIGlmIChp
dCA9PSBtX3BlckRvbWFpbkRhdGEuZW5kKCkpCisgICAgICAgIHJldHVybjsKKworICAgIGF1dG8m
IHBlckRvbWFpbkRhdGEgPSAqaXQtPnZhbHVlOworICAgIGZvciAoYXV0byYgd2ViUHJvY2Vzc1By
b3h5IDogcGVyRG9tYWluRGF0YS53YXRjaGVycykKKyAgICAgICAgd2ViUHJvY2Vzc1Byb3h5LnNl
bmQoTWVzc2FnZXM6OldlYkdlb2xvY2F0aW9uTWFuYWdlcjo6UmVzZXRQZXJtaXNzaW9ucyhyZWdp
c3RyYWJsZURvbWFpbiksIDApOworfQorCisjZW5kaWYKKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJDb250ZXh0U3VwcGxlbWVu
dC5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQ29udGV4dFN1cHBsZW1lbnQuaAppbmRl
eCBlZDU1YjQwM2RiMjlmOTQwMDQzOGJhMzJhNjBjNzU4Mjc0OTM0ZmE2Li5lYzE5Y2RjY2NiYjQw
ZjkyZDU4MzVmM2VhNjAzMWJkZGE0NzdhOGUyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9XZWJDb250ZXh0U3VwcGxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL1dlYkNvbnRleHRTdXBwbGVtZW50LmgKQEAgLTQ3LDE0ICs0Nyw2IEBAIHB1YmxpYzoKICAg
ICB7CiAgICAgfQogCi0gICAgdmlydHVhbCB2b2lkIHByb2Nlc3NEaWRDbG9zZShXZWJQcm9jZXNz
UHJveHkqKQotICAgIHsKLSAgICB9Ci0KLSAgICB2aXJ0dWFsIHZvaWQgcHJvY2Vzc0RpZENsb3Nl
KE5ldHdvcmtQcm9jZXNzUHJveHkqKQotICAgIHsKLSAgICB9Ci0KICAgICBXZWJQcm9jZXNzUG9v
bCogcHJvY2Vzc1Bvb2woKSBjb25zdCB7IHJldHVybiBtX3Byb2Nlc3NQb29sOyB9CiAgICAgdm9p
ZCBjbGVhclByb2Nlc3NQb29sKCkgeyBtX3Byb2Nlc3NQb29sID0gbnVsbHB0cjsgfQogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJHZW9sb2NhdGlvbk1hbmFnZXJQcm94
eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJHZW9sb2NhdGlvbk1hbmFnZXJQcm94
eS5jcHAKaW5kZXggMDRmMzIyN2NkNTVjOTkyYTQyY2Q5NmEzZjI1ZDY5N2FlZDc5NjVhMi4uNTY2
NTc0ZDNlNzEyMzI4NTVkZGNjNmMxZGU0MDM3YzEzNjY0NDY1YiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvV2ViR2VvbG9jYXRpb25NYW5hZ2VyUHJveHkuY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkdlb2xvY2F0aW9uTWFuYWdlclByb3h5LmNwcApAQCAt
MSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTEsIDIwMTIsIDIwMTMgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDExLTIwMjIgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCkBAIC0zNCwxMCArMzQsMTUgQEAKICNpbmNsdWRlICJXZWJQYWdlUHJveHkuaCIKICNpbmNs
dWRlICJXZWJQcm9jZXNzUG9vbC5oIgogCi0jZGVmaW5lIE1FU1NBR0VfQ0hFQ0soYXNzZXJ0aW9u
KSBNRVNTQUdFX0NIRUNLX0JBU0UoYXNzZXJ0aW9uLCAoJmNvbm5lY3Rpb24pKQorI2RlZmluZSBN
RVNTQUdFX0NIRUNLKGNvbm5lY3Rpb24sIGFzc2VydGlvbikgTUVTU0FHRV9DSEVDS19CQVNFKGFz
c2VydGlvbiwgKGNvbm5lY3Rpb24pKQogCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAorc3RhdGljIGlu
bGluZSBXZWJQcm9jZXNzUHJveHkmIGNvbm5lY3Rpb25Ub1dlYlByb2Nlc3NQcm94eShjb25zdCBJ
UEM6OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24pCit7CisgICAgcmV0dXJuIHN0YXRpY19jYXN0PFdl
YlByb2Nlc3NQcm94eSY+KGNvbm5lY3Rpb24uY2xpZW50KCkpOworfQorCiBjb25zdCBjaGFyKiBX
ZWJHZW9sb2NhdGlvbk1hbmFnZXJQcm94eTo6c3VwcGxlbWVudE5hbWUoKQogewogICAgIHJldHVy
biAiV2ViR2VvbG9jYXRpb25NYW5hZ2VyUHJveHkiOwpAQCAtNTAsMzQgKzU1LDM4IEBAIFJlZjxX
ZWJHZW9sb2NhdGlvbk1hbmFnZXJQcm94eT4gV2ViR2VvbG9jYXRpb25NYW5hZ2VyUHJveHk6OmNy
ZWF0ZShXZWJQcm9jZXNzUG9vCiAKIFdlYkdlb2xvY2F0aW9uTWFuYWdlclByb3h5OjpXZWJHZW9s
b2NhdGlvbk1hbmFnZXJQcm94eShXZWJQcm9jZXNzUG9vbCogcHJvY2Vzc1Bvb2wpCiAgICAgOiBX
ZWJDb250ZXh0U3VwcGxlbWVudChwcm9jZXNzUG9vbCkKLSAgICAsIG1fcHJvdmlkZXIobWFrZVVu
aXF1ZTxBUEk6Okdlb2xvY2F0aW9uUHJvdmlkZXI+KCkpCiB7CiAgICAgV2ViQ29udGV4dFN1cHBs
ZW1lbnQ6OnByb2Nlc3NQb29sKCktPmFkZE1lc3NhZ2VSZWNlaXZlcihNZXNzYWdlczo6V2ViR2Vv
bG9jYXRpb25NYW5hZ2VyUHJveHk6Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSwgKnRoaXMpOwogfQog
CitXZWJHZW9sb2NhdGlvbk1hbmFnZXJQcm94eTo6fldlYkdlb2xvY2F0aW9uTWFuYWdlclByb3h5
KCkgPSBkZWZhdWx0OworCiB2b2lkIFdlYkdlb2xvY2F0aW9uTWFuYWdlclByb3h5OjpzZXRQcm92
aWRlcihzdGQ6OnVuaXF1ZV9wdHI8QVBJOjpHZW9sb2NhdGlvblByb3ZpZGVyPiYmIHByb3ZpZGVy
KQogewotICAgIGlmICghcHJvdmlkZXIpCi0gICAgICAgIG1fcHJvdmlkZXIgPSBtYWtlVW5pcXVl
PEFQSTo6R2VvbG9jYXRpb25Qcm92aWRlcj4oKTsKLSAgICBlbHNlCi0gICAgICAgIG1fcHJvdmlk
ZXIgPSBXVEZNb3ZlKHByb3ZpZGVyKTsKKyAgICBtX2NsaWVudFByb3ZpZGVyID0gV1RGTW92ZShw
cm92aWRlcik7CiB9CiAKIC8vIFdlYkNvbnRleHRTdXBwbGVtZW50CiAKIHZvaWQgV2ViR2VvbG9j
YXRpb25NYW5hZ2VyUHJveHk6OnByb2Nlc3NQb29sRGVzdHJveWVkKCkKIHsKLSAgICBib29sIHdh
c1VwZGF0aW5nID0gaXNVcGRhdGluZygpOwotICAgIG1fdXBkYXRlUmVxdWVzdGVycy5jbGVhcigp
OworICAgIGlmIChtX3BlckRvbWFpbkRhdGEuaXNFbXB0eSgpKQorICAgICAgICByZXR1cm47CiAK
LSAgICBBU1NFUlQoIWlzVXBkYXRpbmcoKSk7Ci0gICAgaWYgKHdhc1VwZGF0aW5nKQotICAgICAg
ICBtX3Byb3ZpZGVyLT5zdG9wVXBkYXRpbmcoKnRoaXMpOworICAgIG1fcGVyRG9tYWluRGF0YS5j
bGVhcigpOworICAgIGlmIChtX2NsaWVudFByb3ZpZGVyKQorICAgICAgICBtX2NsaWVudFByb3Zp
ZGVyLT5zdG9wVXBkYXRpbmcoKnRoaXMpOwogfQogCi12b2lkIFdlYkdlb2xvY2F0aW9uTWFuYWdl
clByb3h5Ojpwcm9jZXNzRGlkQ2xvc2UoV2ViUHJvY2Vzc1Byb3h5KiB3ZWJQcm9jZXNzUHJveHkp
Cit2b2lkIFdlYkdlb2xvY2F0aW9uTWFuYWdlclByb3h5Ojp3ZWJQcm9jZXNzSXNHb2luZ0F3YXko
V2ViUHJvY2Vzc1Byb3h5JiBwcm94eSkKIHsKLSAgICByZW1vdmVSZXF1ZXN0ZXIod2ViUHJvY2Vz
c1Byb3h5KTsKKyAgICBWZWN0b3I8V2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4+IGFmZmVjdGVk
RG9tYWluczsKKyAgICBmb3IgKGF1dG8mIFtyZWdpc3RyYWJsZURvbWFpbiwgcGVyRG9tYWluRGF0
YV0gOiBtX3BlckRvbWFpbkRhdGEpIHsKKyAgICAgICAgaWYgKHBlckRvbWFpbkRhdGEtPndhdGNo
ZXJzLmNvbnRhaW5zKHByb3h5KSkKKyAgICAgICAgICAgIGFmZmVjdGVkRG9tYWlucy5hcHBlbmQo
cmVnaXN0cmFibGVEb21haW4pOworICAgIH0KKyAgICBmb3IgKGF1dG8mIHJlZ2lzdHJhYmxlRG9t
YWluIDogYWZmZWN0ZWREb21haW5zKQorICAgICAgICBzdG9wVXBkYXRpbmdXaXRoUHJveHkocHJv
eHksIHJlZ2lzdHJhYmxlRG9tYWluKTsKIH0KIAogdm9pZCBXZWJHZW9sb2NhdGlvbk1hbmFnZXJQ
cm94eTo6cmVmV2ViQ29udGV4dFN1cHBsZW1lbnQoKQpAQCAtOTIsODAgKzEwMSwyMDQgQEAgdm9p
ZCBXZWJHZW9sb2NhdGlvbk1hbmFnZXJQcm94eTo6ZGVyZWZXZWJDb250ZXh0U3VwcGxlbWVudCgp
CiAKIHZvaWQgV2ViR2VvbG9jYXRpb25NYW5hZ2VyUHJveHk6OnByb3ZpZGVyRGlkQ2hhbmdlUG9z
aXRpb24oV2ViR2VvbG9jYXRpb25Qb3NpdGlvbiogcG9zaXRpb24pCiB7Ci0gICAgbV9sYXN0UG9z
aXRpb24gPSBwb3NpdGlvbi0+Y29yZVBvc2l0aW9uKCk7Ci0KLSAgICBpZiAoIXByb2Nlc3NQb29s
KCkpCi0gICAgICAgIHJldHVybjsKLQotICAgIHByb2Nlc3NQb29sKCktPnNlbmRUb0FsbFByb2Nl
c3NlcyhNZXNzYWdlczo6V2ViR2VvbG9jYXRpb25NYW5hZ2VyOjpEaWRDaGFuZ2VQb3NpdGlvbiht
X2xhc3RQb3NpdGlvbi52YWx1ZSgpKSk7CisgICAgZm9yIChhdXRvJiBbcmVnaXN0cmFibGVEb21h
aW4sIHBlckRvbWFpbkRhdGFdIDogbV9wZXJEb21haW5EYXRhKSB7CisgICAgICAgIHBlckRvbWFp
bkRhdGEtPmxhc3RQb3NpdGlvbiA9IHBvc2l0aW9uLT5jb3JlUG9zaXRpb24oKTsKKyAgICAgICAg
Zm9yIChhdXRvJiBwcm9jZXNzIDogcGVyRG9tYWluRGF0YS0+d2F0Y2hlcnMpCisgICAgICAgICAg
ICBwcm9jZXNzLnNlbmQoTWVzc2FnZXM6OldlYkdlb2xvY2F0aW9uTWFuYWdlcjo6RGlkQ2hhbmdl
UG9zaXRpb24ocmVnaXN0cmFibGVEb21haW4sIHBlckRvbWFpbkRhdGEtPmxhc3RQb3NpdGlvbi52
YWx1ZSgpKSwgMCk7CisgICAgfQogfQogCiB2b2lkIFdlYkdlb2xvY2F0aW9uTWFuYWdlclByb3h5
Ojpwcm92aWRlckRpZEZhaWxUb0RldGVybWluZVBvc2l0aW9uKGNvbnN0IFN0cmluZyYgZXJyb3JN
ZXNzYWdlKQogewotICAgIGlmICghcHJvY2Vzc1Bvb2woKSkKLSAgICAgICAgcmV0dXJuOwotCi0g
ICAgcHJvY2Vzc1Bvb2woKS0+c2VuZFRvQWxsUHJvY2Vzc2VzKE1lc3NhZ2VzOjpXZWJHZW9sb2Nh
dGlvbk1hbmFnZXI6OkRpZEZhaWxUb0RldGVybWluZVBvc2l0aW9uKGVycm9yTWVzc2FnZSkpOwor
ICAgIGZvciAoYXV0byYgW3JlZ2lzdHJhYmxlRG9tYWluLCBwZXJEb21haW5EYXRhXSA6IG1fcGVy
RG9tYWluRGF0YSkgeworICAgICAgICBmb3IgKGF1dG8mIHByb3h5IDogcGVyRG9tYWluRGF0YS0+
d2F0Y2hlcnMpCisgICAgICAgICAgICBwcm94eS5zZW5kKE1lc3NhZ2VzOjpXZWJHZW9sb2NhdGlv
bk1hbmFnZXI6OkRpZEZhaWxUb0RldGVybWluZVBvc2l0aW9uKHJlZ2lzdHJhYmxlRG9tYWluLCBl
cnJvck1lc3NhZ2UpLCAwKTsKKyAgICB9CiB9CiAKICNpZiBQTEFURk9STShJT1NfRkFNSUxZKQog
dm9pZCBXZWJHZW9sb2NhdGlvbk1hbmFnZXJQcm94eTo6cmVzZXRQZXJtaXNzaW9ucygpCiB7Ci0g
ICAgcHJvY2Vzc1Bvb2woKS0+c2VuZFRvQWxsUHJvY2Vzc2VzKE1lc3NhZ2VzOjpXZWJHZW9sb2Nh
dGlvbk1hbmFnZXI6OlJlc2V0UGVybWlzc2lvbnMoKSk7CisgICAgQVNTRVJUKG1fY2xpZW50UHJv
dmlkZXIpOworICAgIGZvciAoYXV0byYgW3JlZ2lzdHJhYmxlRG9tYWluLCBwZXJEb21haW5EYXRh
XSA6IG1fcGVyRG9tYWluRGF0YSkgeworICAgICAgICBmb3IgKGF1dG8mIHByb3h5IDogcGVyRG9t
YWluRGF0YS0+d2F0Y2hlcnMpCisgICAgICAgICAgICBwcm94eS5zZW5kKE1lc3NhZ2VzOjpXZWJH
ZW9sb2NhdGlvbk1hbmFnZXI6OlJlc2V0UGVybWlzc2lvbnMocmVnaXN0cmFibGVEb21haW4pLCAw
KTsKKyAgICB9CiB9CiAjZW5kaWYKIAotdm9pZCBXZWJHZW9sb2NhdGlvbk1hbmFnZXJQcm94eTo6
c3RhcnRVcGRhdGluZyhJUEM6OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24sIFdlYlBhZ2VQcm94eUlk
ZW50aWZpZXIgcGFnZVByb3h5SUQsIGNvbnN0IFN0cmluZyYgYXV0aG9yaXphdGlvblRva2VuKQor
dm9pZCBXZWJHZW9sb2NhdGlvbk1hbmFnZXJQcm94eTo6c3RhcnRVcGRhdGluZyhJUEM6OkNvbm5l
Y3Rpb24mIGNvbm5lY3Rpb24sIGNvbnN0IFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluJiByZWdp
c3RyYWJsZURvbWFpbiwgV2ViUGFnZVByb3h5SWRlbnRpZmllciBwYWdlUHJveHlJRCwgY29uc3Qg
U3RyaW5nJiBhdXRob3JpemF0aW9uVG9rZW4sIGJvb2wgZW5hYmxlSGlnaEFjY3VyYWN5KQorewor
ICAgIHN0YXJ0VXBkYXRpbmdXaXRoUHJveHkoY29ubmVjdGlvblRvV2ViUHJvY2Vzc1Byb3h5KGNv
bm5lY3Rpb24pLCByZWdpc3RyYWJsZURvbWFpbiwgcGFnZVByb3h5SUQsIGF1dGhvcml6YXRpb25U
b2tlbiwgZW5hYmxlSGlnaEFjY3VyYWN5KTsKK30KKwordm9pZCBXZWJHZW9sb2NhdGlvbk1hbmFn
ZXJQcm94eTo6c3RhcnRVcGRhdGluZ1dpdGhQcm94eShXZWJQcm9jZXNzUHJveHkmIHByb3h5LCBj
b25zdCBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiYgcmVnaXN0cmFibGVEb21haW4sIFdlYlBh
Z2VQcm94eUlkZW50aWZpZXIgcGFnZVByb3h5SUQsIGNvbnN0IFN0cmluZyYgYXV0aG9yaXphdGlv
blRva2VuLCBib29sIGVuYWJsZUhpZ2hBY2N1cmFjeSkKIHsKICAgICBhdXRvKiBwYWdlID0gV2Vi
UHJvY2Vzc1Byb3h5Ojp3ZWJQYWdlKHBhZ2VQcm94eUlEKTsKLSAgICBNRVNTQUdFX0NIRUNLKHBh
Z2UpOworICAgIE1FU1NBR0VfQ0hFQ0socHJveHkuY29ubmVjdGlvbigpLCBwYWdlKTsKIAogICAg
IGF1dG8gaXNWYWxpZEF1dGhvcml6YXRpb25Ub2tlbiA9IHBhZ2UtPmdlb2xvY2F0aW9uUGVybWlz
c2lvblJlcXVlc3RNYW5hZ2VyKCkuaXNWYWxpZEF1dGhvcml6YXRpb25Ub2tlbihhdXRob3JpemF0
aW9uVG9rZW4pOwotICAgIE1FU1NBR0VfQ0hFQ0soaXNWYWxpZEF1dGhvcml6YXRpb25Ub2tlbik7
CisgICAgTUVTU0FHRV9DSEVDSyhwcm94eS5jb25uZWN0aW9uKCksIGlzVmFsaWRBdXRob3JpemF0
aW9uVG9rZW4pOworCisgICAgYXV0byYgcGVyRG9tYWluRGF0YSA9ICptX3BlckRvbWFpbkRhdGEu
ZW5zdXJlKHJlZ2lzdHJhYmxlRG9tYWluLCBbXSB7CisgICAgICAgIHJldHVybiBtYWtlVW5pcXVl
PFBlckRvbWFpbkRhdGE+KCk7CisgICAgfSkuaXRlcmF0b3ItPnZhbHVlOworCisgICAgYm9vbCB3
YXNVcGRhdGluZyA9IGlzVXBkYXRpbmcocGVyRG9tYWluRGF0YSk7CisgICAgYm9vbCBoaWdoQWNj
dXJhY3lXYXNFbmFibGVkID0gaXNIaWdoQWNjdXJhY3lFbmFibGVkKHBlckRvbWFpbkRhdGEpOwor
CisgICAgcGVyRG9tYWluRGF0YS53YXRjaGVycy5hZGQocHJveHkpOworICAgIGlmIChlbmFibGVI
aWdoQWNjdXJhY3kpCisgICAgICAgIHBlckRvbWFpbkRhdGEud2F0Y2hlcnNOZWVkaW5nSGlnaEFj
Y3VyYWN5LmFkZChwcm94eSk7CiAKLSAgICBib29sIHdhc1VwZGF0aW5nID0gaXNVcGRhdGluZygp
OwotICAgIG1fdXBkYXRlUmVxdWVzdGVycy5hZGQoJmNvbm5lY3Rpb24uY2xpZW50KCkpOwogICAg
IGlmICghd2FzVXBkYXRpbmcpIHsKLSAgICAgICAgbV9wcm92aWRlci0+c2V0RW5hYmxlSGlnaEFj
Y3VyYWN5KCp0aGlzLCBpc0hpZ2hBY2N1cmFjeUVuYWJsZWQoKSk7Ci0gICAgICAgIG1fcHJvdmlk
ZXItPnN0YXJ0VXBkYXRpbmcoKnRoaXMpOwotICAgIH0gZWxzZSBpZiAobV9sYXN0UG9zaXRpb24p
Ci0gICAgICAgIGNvbm5lY3Rpb24uc2VuZChNZXNzYWdlczo6V2ViR2VvbG9jYXRpb25NYW5hZ2Vy
OjpEaWRDaGFuZ2VQb3NpdGlvbihtX2xhc3RQb3NpdGlvbi52YWx1ZSgpKSwgMCk7CisgICAgICAg
IHByb3ZpZGVyU3RhcnRVcGRhdGluZyhwZXJEb21haW5EYXRhLCByZWdpc3RyYWJsZURvbWFpbik7
CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgaWYgKCFoaWdoQWNjdXJhY3lXYXNFbmFibGVk
ICYmIGVuYWJsZUhpZ2hBY2N1cmFjeSkKKyAgICAgICAgcHJvdmlkZXJTZXRFbmFibGVkSGlnaEFj
Y3VyYWN5KHBlckRvbWFpbkRhdGEsIGVuYWJsZUhpZ2hBY2N1cmFjeSk7CisKKyAgICBpZiAocGVy
RG9tYWluRGF0YS5sYXN0UG9zaXRpb24pCisgICAgICAgIHByb3h5LnNlbmQoTWVzc2FnZXM6Oldl
Ykdlb2xvY2F0aW9uTWFuYWdlcjo6RGlkQ2hhbmdlUG9zaXRpb24ocmVnaXN0cmFibGVEb21haW4s
IHBlckRvbWFpbkRhdGEubGFzdFBvc2l0aW9uLnZhbHVlKCkpLCAwKTsKIH0KIAotdm9pZCBXZWJH
ZW9sb2NhdGlvbk1hbmFnZXJQcm94eTo6c3RvcFVwZGF0aW5nKElQQzo6Q29ubmVjdGlvbiYgY29u
bmVjdGlvbikKK3ZvaWQgV2ViR2VvbG9jYXRpb25NYW5hZ2VyUHJveHk6OnN0b3BVcGRhdGluZyhJ
UEM6OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24sIGNvbnN0IFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9t
YWluJiByZWdpc3RyYWJsZURvbWFpbikKIHsKLSAgICByZW1vdmVSZXF1ZXN0ZXIoJmNvbm5lY3Rp
b24uY2xpZW50KCkpOworICAgIHN0b3BVcGRhdGluZ1dpdGhQcm94eShjb25uZWN0aW9uVG9XZWJQ
cm9jZXNzUHJveHkoY29ubmVjdGlvbiksIHJlZ2lzdHJhYmxlRG9tYWluKTsKIH0KIAotdm9pZCBX
ZWJHZW9sb2NhdGlvbk1hbmFnZXJQcm94eTo6cmVtb3ZlUmVxdWVzdGVyKGNvbnN0IElQQzo6Q29u
bmVjdGlvbjo6Q2xpZW50KiBjbGllbnQpCit2b2lkIFdlYkdlb2xvY2F0aW9uTWFuYWdlclByb3h5
OjpzdG9wVXBkYXRpbmdXaXRoUHJveHkoV2ViUHJvY2Vzc1Byb3h5JiBwcm94eSwgY29uc3QgV2Vi
Q29yZTo6UmVnaXN0cmFibGVEb21haW4mIHJlZ2lzdHJhYmxlRG9tYWluKQogewotICAgIGJvb2wg
d2FzVXBkYXRpbmcgPSBpc1VwZGF0aW5nKCk7Ci0gICAgYm9vbCBoaWdoQWNjdXJhY3lXYXNFbmFi
bGVkID0gaXNIaWdoQWNjdXJhY3lFbmFibGVkKCk7CisgICAgYXV0byBpdCA9IG1fcGVyRG9tYWlu
RGF0YS5maW5kKHJlZ2lzdHJhYmxlRG9tYWluKTsKKyAgICBpZiAoaXQgPT0gbV9wZXJEb21haW5E
YXRhLmVuZCgpKQorICAgICAgICByZXR1cm47CisKKyAgICBhdXRvJiBwZXJEb21haW5EYXRhID0g
Kml0LT52YWx1ZTsKKyAgICBib29sIHdhc1VwZGF0aW5nID0gaXNVcGRhdGluZyhwZXJEb21haW5E
YXRhKTsKKyAgICBib29sIGhpZ2hBY2N1cmFjeVdhc0VuYWJsZWQgPSBpc0hpZ2hBY2N1cmFjeUVu
YWJsZWQocGVyRG9tYWluRGF0YSk7CiAKLSAgICBtX2hpZ2hBY2N1cmFjeVJlcXVlc3RlcnMucmVt
b3ZlKGNsaWVudCk7Ci0gICAgbV91cGRhdGVSZXF1ZXN0ZXJzLnJlbW92ZShjbGllbnQpOworICAg
IHBlckRvbWFpbkRhdGEud2F0Y2hlcnMucmVtb3ZlKHByb3h5KTsKKyAgICBwZXJEb21haW5EYXRh
LndhdGNoZXJzTmVlZGluZ0hpZ2hBY2N1cmFjeS5yZW1vdmUocHJveHkpOwogCi0gICAgaWYgKHdh
c1VwZGF0aW5nICYmICFpc1VwZGF0aW5nKCkpCi0gICAgICAgIG1fcHJvdmlkZXItPnN0b3BVcGRh
dGluZygqdGhpcyk7CisgICAgaWYgKHdhc1VwZGF0aW5nICYmICFpc1VwZGF0aW5nKHBlckRvbWFp
bkRhdGEpKQorICAgICAgICBwcm92aWRlclN0b3BVcGRhdGluZyhwZXJEb21haW5EYXRhKTsKICAg
ICBlbHNlIHsKLSAgICAgICAgYm9vbCBoaWdoQWNjdXJhY3lTaG91bGRCZUVuYWJsZWQgPSBpc0hp
Z2hBY2N1cmFjeUVuYWJsZWQoKTsKKyAgICAgICAgYm9vbCBoaWdoQWNjdXJhY3lTaG91bGRCZUVu
YWJsZWQgPSBpc0hpZ2hBY2N1cmFjeUVuYWJsZWQocGVyRG9tYWluRGF0YSk7CiAgICAgICAgIGlm
IChoaWdoQWNjdXJhY3lTaG91bGRCZUVuYWJsZWQgIT0gaGlnaEFjY3VyYWN5V2FzRW5hYmxlZCkK
LSAgICAgICAgICAgIG1fcHJvdmlkZXItPnNldEVuYWJsZUhpZ2hBY2N1cmFjeSgqdGhpcywgaGln
aEFjY3VyYWN5U2hvdWxkQmVFbmFibGVkKTsKKyAgICAgICAgICAgIHByb3ZpZGVyU2V0RW5hYmxl
ZEhpZ2hBY2N1cmFjeShwZXJEb21haW5EYXRhLCBoaWdoQWNjdXJhY3lTaG91bGRCZUVuYWJsZWQp
OwogICAgIH0KKworICAgIGlmIChwZXJEb21haW5EYXRhLndhdGNoZXJzLmNvbXB1dGVzRW1wdHko
KSAmJiBwZXJEb21haW5EYXRhLndhdGNoZXJzTmVlZGluZ0hpZ2hBY2N1cmFjeS5jb21wdXRlc0Vt
cHR5KCkpCisgICAgICAgIG1fcGVyRG9tYWluRGF0YS5yZW1vdmUoaXQpOworfQorCit2b2lkIFdl
Ykdlb2xvY2F0aW9uTWFuYWdlclByb3h5OjpzZXRFbmFibGVIaWdoQWNjdXJhY3koSVBDOjpDb25u
ZWN0aW9uJiBjb25uZWN0aW9uLCBjb25zdCBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiYgcmVn
aXN0cmFibGVEb21haW4sIGJvb2wgZW5hYmxlZCkKK3sKKyAgICBzZXRFbmFibGVIaWdoQWNjdXJh
Y3lXaXRoUHJveHkoY29ubmVjdGlvblRvV2ViUHJvY2Vzc1Byb3h5KGNvbm5lY3Rpb24pLCByZWdp
c3RyYWJsZURvbWFpbiwgZW5hYmxlZCk7CiB9CiAKLXZvaWQgV2ViR2VvbG9jYXRpb25NYW5hZ2Vy
UHJveHk6OnNldEVuYWJsZUhpZ2hBY2N1cmFjeShJUEM6OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24s
IGJvb2wgZW5hYmxlZCkKK3ZvaWQgV2ViR2VvbG9jYXRpb25NYW5hZ2VyUHJveHk6OnNldEVuYWJs
ZUhpZ2hBY2N1cmFjeVdpdGhQcm94eShXZWJQcm9jZXNzUHJveHkmIHByb3h5LCBjb25zdCBXZWJD
b3JlOjpSZWdpc3RyYWJsZURvbWFpbiYgcmVnaXN0cmFibGVEb21haW4sIGJvb2wgZW5hYmxlZCkK
IHsKLSAgICBib29sIGhpZ2hBY2N1cmFjeVdhc0VuYWJsZWQgPSBpc0hpZ2hBY2N1cmFjeUVuYWJs
ZWQoKTsKKyAgICBhdXRvIGl0ID0gbV9wZXJEb21haW5EYXRhLmZpbmQocmVnaXN0cmFibGVEb21h
aW4pOworICAgIEFTU0VSVChpdCAhPSBtX3BlckRvbWFpbkRhdGEuZW5kKCkpOworICAgIGlmIChp
dCA9PSBtX3BlckRvbWFpbkRhdGEuZW5kKCkpCisgICAgICAgIHJldHVybjsKKworICAgIGF1dG8m
IHBlckRvbWFpbkRhdGEgPSAqaXQtPnZhbHVlOworICAgIGJvb2wgaGlnaEFjY3VyYWN5V2FzRW5h
YmxlZCA9IGlzSGlnaEFjY3VyYWN5RW5hYmxlZChwZXJEb21haW5EYXRhKTsKIAogICAgIGlmIChl
bmFibGVkKQotICAgICAgICBtX2hpZ2hBY2N1cmFjeVJlcXVlc3RlcnMuYWRkKCZjb25uZWN0aW9u
LmNsaWVudCgpKTsKKyAgICAgICAgcGVyRG9tYWluRGF0YS53YXRjaGVyc05lZWRpbmdIaWdoQWNj
dXJhY3kuYWRkKHByb3h5KTsKICAgICBlbHNlCi0gICAgICAgIG1faGlnaEFjY3VyYWN5UmVxdWVz
dGVycy5yZW1vdmUoJmNvbm5lY3Rpb24uY2xpZW50KCkpOworICAgICAgICBwZXJEb21haW5EYXRh
LndhdGNoZXJzTmVlZGluZ0hpZ2hBY2N1cmFjeS5yZW1vdmUocHJveHkpOworCisgICAgaWYgKGlz
VXBkYXRpbmcocGVyRG9tYWluRGF0YSkgJiYgaGlnaEFjY3VyYWN5V2FzRW5hYmxlZCAhPSBlbmFi
bGVkKQorICAgICAgICBwcm92aWRlclNldEVuYWJsZWRIaWdoQWNjdXJhY3kocGVyRG9tYWluRGF0
YSwgZW5hYmxlZCk7Cit9CisKK2Jvb2wgV2ViR2VvbG9jYXRpb25NYW5hZ2VyUHJveHk6OmlzVXBk
YXRpbmcoY29uc3QgUGVyRG9tYWluRGF0YSYgcGVyRG9tYWluRGF0YSkgY29uc3QKK3sKKyNpZiBQ
TEFURk9STShJT1NfRkFNSUxZKQorICAgIGlmICghbV9jbGllbnRQcm92aWRlcikKKyAgICAgICAg
cmV0dXJuICFwZXJEb21haW5EYXRhLndhdGNoZXJzLmNvbXB1dGVzRW1wdHkoKTsKKyNlbHNlCisg
ICAgVU5VU0VEX1BBUkFNKHBlckRvbWFpbkRhdGEpOworI2VuZGlmCisKKyAgICBmb3IgKGF1dG8m
IHBlckRvbWFpbkRhdGEgOiBtX3BlckRvbWFpbkRhdGEudmFsdWVzKCkpIHsKKyAgICAgICAgaWYg
KCFwZXJEb21haW5EYXRhLT53YXRjaGVycy5jb21wdXRlc0VtcHR5KCkpCisgICAgICAgICAgICBy
ZXR1cm4gdHJ1ZTsKKyAgICB9CisgICAgcmV0dXJuIGZhbHNlOworfQorCisKK2Jvb2wgV2ViR2Vv
bG9jYXRpb25NYW5hZ2VyUHJveHk6OmlzSGlnaEFjY3VyYWN5RW5hYmxlZChjb25zdCBQZXJEb21h
aW5EYXRhJiBwZXJEb21haW5EYXRhKSBjb25zdAoreworI2lmIFBMQVRGT1JNKElPU19GQU1JTFkp
CisgICAgaWYgKCFtX2NsaWVudFByb3ZpZGVyKQorICAgICAgICByZXR1cm4gIXBlckRvbWFpbkRh
dGEud2F0Y2hlcnNOZWVkaW5nSGlnaEFjY3VyYWN5LmNvbXB1dGVzRW1wdHkoKTsKKyNlbHNlCisg
ICAgVU5VU0VEX1BBUkFNKHBlckRvbWFpbkRhdGEpOworI2VuZGlmCisKKyAgICBmb3IgKGF1dG8m
IGRhdGEgOiBtX3BlckRvbWFpbkRhdGEudmFsdWVzKCkpIHsKKyAgICAgICAgaWYgKCFkYXRhLT53
YXRjaGVyc05lZWRpbmdIaWdoQWNjdXJhY3kuY29tcHV0ZXNFbXB0eSgpKQorICAgICAgICAgICAg
cmV0dXJuIHRydWU7CisgICAgfQorICAgIHJldHVybiBmYWxzZTsKK30KKwordm9pZCBXZWJHZW9s
b2NhdGlvbk1hbmFnZXJQcm94eTo6cHJvdmlkZXJTdGFydFVwZGF0aW5nKFBlckRvbWFpbkRhdGEm
IHBlckRvbWFpbkRhdGEsIGNvbnN0IFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluJiByZWdpc3Ry
YWJsZURvbWFpbikKK3sKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZKQorICAgIGlmICghbV9jbGll
bnRQcm92aWRlcikgeworICAgICAgICBBU1NFUlQoIXBlckRvbWFpbkRhdGEucHJvdmlkZXIpOwor
ICAgICAgICBwZXJEb21haW5EYXRhLnByb3ZpZGVyID0gbWFrZVVuaXF1ZTxXZWJDb3JlOjpDb3Jl
TG9jYXRpb25HZW9sb2NhdGlvblByb3ZpZGVyPihyZWdpc3RyYWJsZURvbWFpbiwgKnRoaXMpOwor
ICAgICAgICBwZXJEb21haW5EYXRhLnByb3ZpZGVyLT5zZXRFbmFibGVIaWdoQWNjdXJhY3koIXBl
ckRvbWFpbkRhdGEud2F0Y2hlcnNOZWVkaW5nSGlnaEFjY3VyYWN5LmNvbXB1dGVzRW1wdHkoKSk7
CisgICAgICAgIHBlckRvbWFpbkRhdGEucHJvdmlkZXItPnN0YXJ0KCk7CisgICAgICAgIHJldHVy
bjsKKyAgICB9CisjZWxzZQorICAgIFVOVVNFRF9QQVJBTShyZWdpc3RyYWJsZURvbWFpbik7Cisg
ICAgaWYgKCFtX2NsaWVudFByb3ZpZGVyKQorICAgICAgICByZXR1cm47CisjZW5kaWYKKworICAg
IG1fY2xpZW50UHJvdmlkZXItPnNldEVuYWJsZUhpZ2hBY2N1cmFjeSgqdGhpcywgaXNIaWdoQWNj
dXJhY3lFbmFibGVkKHBlckRvbWFpbkRhdGEpKTsKKyAgICBtX2NsaWVudFByb3ZpZGVyLT5zdGFy
dFVwZGF0aW5nKCp0aGlzKTsKK30KKwordm9pZCBXZWJHZW9sb2NhdGlvbk1hbmFnZXJQcm94eTo6
cHJvdmlkZXJTdG9wVXBkYXRpbmcoUGVyRG9tYWluRGF0YSYgcGVyRG9tYWluRGF0YSkKK3sKKyNp
ZiBQTEFURk9STShJT1NfRkFNSUxZKQorICAgIGlmICghbV9jbGllbnRQcm92aWRlcikgeworICAg
ICAgICBwZXJEb21haW5EYXRhLnByb3ZpZGVyLT5zdG9wKCk7CisgICAgICAgIHJldHVybjsKKyAg
ICB9CisjZWxzZQorICAgIFVOVVNFRF9QQVJBTShwZXJEb21haW5EYXRhKTsKKyAgICBpZiAoIW1f
Y2xpZW50UHJvdmlkZXIpCisgICAgICAgIHJldHVybjsKKyNlbmRpZgorCisgICAgbV9jbGllbnRQ
cm92aWRlci0+c3RvcFVwZGF0aW5nKCp0aGlzKTsKK30KKwordm9pZCBXZWJHZW9sb2NhdGlvbk1h
bmFnZXJQcm94eTo6cHJvdmlkZXJTZXRFbmFibGVkSGlnaEFjY3VyYWN5KFBlckRvbWFpbkRhdGEm
IHBlckRvbWFpbkRhdGEsIGJvb2wgZW5hYmxlZCkKK3sKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZ
KQorICAgIGlmICghbV9jbGllbnRQcm92aWRlcikgeworICAgICAgICBwZXJEb21haW5EYXRhLnBy
b3ZpZGVyLT5zZXRFbmFibGVIaWdoQWNjdXJhY3koZW5hYmxlZCk7CisgICAgICAgIHJldHVybjsK
KyAgICB9CisjZWxzZQorICAgIFVOVVNFRF9QQVJBTShwZXJEb21haW5EYXRhKTsKKyAgICBpZiAo
IW1fY2xpZW50UHJvdmlkZXIpCisgICAgICAgIHJldHVybjsKKyNlbmRpZgogCi0gICAgYm9vbCBo
aWdoQWNjdXJhY3lTaG91bGRCZUVuYWJsZWQgPSBpc0hpZ2hBY2N1cmFjeUVuYWJsZWQoKTsKLSAg
ICBpZiAoaXNVcGRhdGluZygpICYmIGhpZ2hBY2N1cmFjeVdhc0VuYWJsZWQgIT0gaGlnaEFjY3Vy
YWN5U2hvdWxkQmVFbmFibGVkKQotICAgICAgICBtX3Byb3ZpZGVyLT5zZXRFbmFibGVIaWdoQWNj
dXJhY3koKnRoaXMsIGhpZ2hBY2N1cmFjeVNob3VsZEJlRW5hYmxlZCk7CisgICAgbV9jbGllbnRQ
cm92aWRlci0+c2V0RW5hYmxlSGlnaEFjY3VyYWN5KCp0aGlzLCBlbmFibGVkKTsKIH0KIAogfSAv
LyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9X
ZWJHZW9sb2NhdGlvbk1hbmFnZXJQcm94eS5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vi
R2VvbG9jYXRpb25NYW5hZ2VyUHJveHkuaAppbmRleCA3NDkzNmU0NWEwZDgzODNhOGI0YjNkNmQ1
NzhjOWJkMjJiZTNmYTVlLi5mOWEwY2E2NDk3OGE0OWM5MTAwMGFkZjFjNGNiNGEwMTEyODdlMTJm
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJHZW9sb2NhdGlvbk1hbmFn
ZXJQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkdlb2xvY2F0aW9uTWFu
YWdlclByb3h5LmgKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDExLCAy
MDEyLCAyMDEzIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAo
QykgMjAxMS0yMDIyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMzEsOSArMzEsMTUgQEAKICNpbmNsdWRlICJXZWJDb250
ZXh0U3VwcGxlbWVudC5oIgogI2luY2x1ZGUgIldlYlBhZ2VQcm94eUlkZW50aWZpZXIuaCIKICNp
bmNsdWRlIDxXZWJDb3JlL0dlb2xvY2F0aW9uUG9zaXRpb25EYXRhLmg+Ci0jaW5jbHVkZSA8d3Rm
L0hhc2hTZXQuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL1JlZ2lzdHJhYmxlRG9tYWluLmg+CisjaW5j
bHVkZSA8d3RmL0hhc2hNYXAuaD4KKyNpbmNsdWRlIDx3dGYvV2Vha0hhc2hTZXQuaD4KICNpbmNs
dWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KIAorI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCisj
aW5jbHVkZSA8V2ViQ29yZS9Db3JlTG9jYXRpb25HZW9sb2NhdGlvblByb3ZpZGVyLmg+CisjZW5k
aWYKKwogbmFtZXNwYWNlIEFQSSB7CiBjbGFzcyBHZW9sb2NhdGlvblByb3ZpZGVyOwogfQpAQCAt
NDMsMTEgKzQ5LDE2IEBAIG5hbWVzcGFjZSBXZWJLaXQgewogY2xhc3MgV2ViR2VvbG9jYXRpb25Q
b3NpdGlvbjsKIGNsYXNzIFdlYlByb2Nlc3NQb29sOwogCi1jbGFzcyBXZWJHZW9sb2NhdGlvbk1h
bmFnZXJQcm94eSA6IHB1YmxpYyBBUEk6Ok9iamVjdEltcGw8QVBJOjpPYmplY3Q6OlR5cGU6Okdl
b2xvY2F0aW9uTWFuYWdlcj4sIHB1YmxpYyBXZWJDb250ZXh0U3VwcGxlbWVudCwgcHJpdmF0ZSBJ
UEM6Ok1lc3NhZ2VSZWNlaXZlciB7CitjbGFzcyBXZWJHZW9sb2NhdGlvbk1hbmFnZXJQcm94eSA6
IHB1YmxpYyBBUEk6Ok9iamVjdEltcGw8QVBJOjpPYmplY3Q6OlR5cGU6Okdlb2xvY2F0aW9uTWFu
YWdlcj4sIHB1YmxpYyBXZWJDb250ZXh0U3VwcGxlbWVudCwgcHJpdmF0ZSBJUEM6Ok1lc3NhZ2VS
ZWNlaXZlcgorI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCisgICAgLCBwdWJsaWMgV2ViQ29yZTo6
Q29yZUxvY2F0aW9uR2VvbG9jYXRpb25Qcm92aWRlcjo6Q2xpZW50CisjZW5kaWYKK3sKIHB1Ymxp
YzoKICAgICBzdGF0aWMgY29uc3QgY2hhciogc3VwcGxlbWVudE5hbWUoKTsKIAogICAgIHN0YXRp
YyBSZWY8V2ViR2VvbG9jYXRpb25NYW5hZ2VyUHJveHk+IGNyZWF0ZShXZWJQcm9jZXNzUG9vbCop
OworICAgIH5XZWJHZW9sb2NhdGlvbk1hbmFnZXJQcm94eSgpOwogCiAgICAgdm9pZCBzZXRQcm92
aWRlcihzdGQ6OnVuaXF1ZV9wdHI8QVBJOjpHZW9sb2NhdGlvblByb3ZpZGVyPiYmKTsKIApAQCAt
NTYsMzYgKzY3LDU5IEBAIHB1YmxpYzoKICNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogICAgIHZv
aWQgcmVzZXRQZXJtaXNzaW9ucygpOwogI2VuZGlmCi0gICAgY29uc3Qgc3RkOjpvcHRpb25hbDxX
ZWJDb3JlOjpHZW9sb2NhdGlvblBvc2l0aW9uRGF0YT4mIGxhc3RQb3NpdGlvbigpIGNvbnN0IHsg
cmV0dXJuIG1fbGFzdFBvc2l0aW9uOyB9CiAKICAgICB1c2luZyBBUEk6Ok9iamVjdDo6cmVmOwog
ICAgIHVzaW5nIEFQSTo6T2JqZWN0OjpkZXJlZjsKIAorICAgIHZvaWQgd2ViUHJvY2Vzc0lzR29p
bmdBd2F5KFdlYlByb2Nlc3NQcm94eSYpOworCiBwcml2YXRlOgogICAgIGV4cGxpY2l0IFdlYkdl
b2xvY2F0aW9uTWFuYWdlclByb3h5KFdlYlByb2Nlc3NQb29sKik7CiAKICAgICAvLyBXZWJDb250
ZXh0U3VwcGxlbWVudAogICAgIHZvaWQgcHJvY2Vzc1Bvb2xEZXN0cm95ZWQoKSBvdmVycmlkZTsK
LSAgICB2b2lkIHByb2Nlc3NEaWRDbG9zZShXZWJQcm9jZXNzUHJveHkqKSBvdmVycmlkZTsKICAg
ICB2b2lkIHJlZldlYkNvbnRleHRTdXBwbGVtZW50KCkgb3ZlcnJpZGU7CiAgICAgdm9pZCBkZXJl
ZldlYkNvbnRleHRTdXBwbGVtZW50KCkgb3ZlcnJpZGU7CiAKICAgICAvLyBJUEM6Ok1lc3NhZ2VS
ZWNlaXZlcgogICAgIHZvaWQgZGlkUmVjZWl2ZU1lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwgSVBD
OjpEZWNvZGVyJikgb3ZlcnJpZGU7CiAKLSAgICBib29sIGlzVXBkYXRpbmcoKSBjb25zdCB7IHJl
dHVybiAhbV91cGRhdGVSZXF1ZXN0ZXJzLmlzRW1wdHkoKTsgfQotICAgIGJvb2wgaXNIaWdoQWNj
dXJhY3lFbmFibGVkKCkgY29uc3QgeyByZXR1cm4gIW1faGlnaEFjY3VyYWN5UmVxdWVzdGVycy5p
c0VtcHR5KCk7IH0KKyAgICAvLyBJUEMgbWVzc2FnZXMuCisgICAgdm9pZCBzdGFydFVwZGF0aW5n
KElQQzo6Q29ubmVjdGlvbiYsIGNvbnN0IFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluJiwgV2Vi
UGFnZVByb3h5SWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiBhdXRob3JpemF0aW9uVG9rZW4sIGJv
b2wgZW5hYmxlSGlnaEFjY3VyYWN5KTsKKyAgICB2b2lkIHN0b3BVcGRhdGluZyhJUEM6OkNvbm5l
Y3Rpb24mLCBjb25zdCBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiYpOworICAgIHZvaWQgc2V0
RW5hYmxlSGlnaEFjY3VyYWN5KElQQzo6Q29ubmVjdGlvbiYsIGNvbnN0IFdlYkNvcmU6OlJlZ2lz
dHJhYmxlRG9tYWluJiwgYm9vbCk7CisKKyAgICB2b2lkIHN0YXJ0VXBkYXRpbmdXaXRoUHJveHko
V2ViUHJvY2Vzc1Byb3h5JiwgY29uc3QgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4mLCBXZWJQ
YWdlUHJveHlJZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIGF1dGhvcml6YXRpb25Ub2tlbiwgYm9v
bCBlbmFibGVIaWdoQWNjdXJhY3kpOworICAgIHZvaWQgc3RvcFVwZGF0aW5nV2l0aFByb3h5KFdl
YlByb2Nlc3NQcm94eSYsIGNvbnN0IFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluJik7CisgICAg
dm9pZCBzZXRFbmFibGVIaWdoQWNjdXJhY3lXaXRoUHJveHkoV2ViUHJvY2Vzc1Byb3h5JiwgY29u
c3QgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4mLCBib29sKTsKIAotICAgIHZvaWQgc3RhcnRV
cGRhdGluZyhJUEM6OkNvbm5lY3Rpb24mLCBXZWJQYWdlUHJveHlJZGVudGlmaWVyLCBjb25zdCBT
dHJpbmcmIGF1dGhvcml6YXRpb25Ub2tlbik7Ci0gICAgdm9pZCBzdG9wVXBkYXRpbmcoSVBDOjpD
b25uZWN0aW9uJik7Ci0gICAgdm9pZCByZW1vdmVSZXF1ZXN0ZXIoY29uc3QgSVBDOjpDb25uZWN0
aW9uOjpDbGllbnQqKTsKLSAgICB2b2lkIHNldEVuYWJsZUhpZ2hBY2N1cmFjeShJUEM6OkNvbm5l
Y3Rpb24mLCBib29sKTsKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZKQorICAgIC8vIENvcmVMb2Nh
dGlvbkdlb2xvY2F0aW9uUHJvdmlkZXI6OkNsaWVudAorICAgIHZvaWQgcG9zaXRpb25DaGFuZ2Vk
KGNvbnN0IFN0cmluZyYgd2Vic2l0ZUlkZW50aWZpZXIsIFdlYkNvcmU6Okdlb2xvY2F0aW9uUG9z
aXRpb25EYXRhJiYpIGZpbmFsOworICAgIHZvaWQgZXJyb3JPY2N1cnJlZChjb25zdCBTdHJpbmcm
IHdlYnNpdGVJZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIGVycm9yTWVzc2FnZSkgZmluYWw7Cisg
ICAgdm9pZCByZXNldEdlb2xvY2F0aW9uKGNvbnN0IFN0cmluZyYgd2Vic2l0ZUlkZW50aWZpZXIp
IGZpbmFsOworI2VuZGlmCisKKyAgICBzdHJ1Y3QgUGVyRG9tYWluRGF0YSB7CisgICAgICAgIFdU
Rl9NQUtFX1NUUlVDVF9GQVNUX0FMTE9DQVRFRDsKKyAgICAgICAgV2Vha0hhc2hTZXQ8V2ViUHJv
Y2Vzc1Byb3h5PiB3YXRjaGVyczsKKyAgICAgICAgV2Vha0hhc2hTZXQ8V2ViUHJvY2Vzc1Byb3h5
PiB3YXRjaGVyc05lZWRpbmdIaWdoQWNjdXJhY3k7CisgICAgICAgIHN0ZDo6b3B0aW9uYWw8V2Vi
Q29yZTo6R2VvbG9jYXRpb25Qb3NpdGlvbkRhdGE+IGxhc3RQb3NpdGlvbjsKKworICAgICAgICAv
LyBGSVhNRTogVXNlIGZvciBhbGwgQ29jb2EgcG9ydHMuCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlM
WSkKKyAgICAgICAgc3RkOjp1bmlxdWVfcHRyPFdlYkNvcmU6OkNvcmVMb2NhdGlvbkdlb2xvY2F0
aW9uUHJvdmlkZXI+IHByb3ZpZGVyOworI2VuZGlmCisgICAgfTsKIAotICAgIEhhc2hTZXQ8Y29u
c3QgSVBDOjpDb25uZWN0aW9uOjpDbGllbnQqPiBtX3VwZGF0ZVJlcXVlc3RlcnM7Ci0gICAgSGFz
aFNldDxjb25zdCBJUEM6OkNvbm5lY3Rpb246OkNsaWVudCo+IG1faGlnaEFjY3VyYWN5UmVxdWVz
dGVyczsKKyAgICBib29sIGlzVXBkYXRpbmcoY29uc3QgUGVyRG9tYWluRGF0YSYpIGNvbnN0Owor
ICAgIGJvb2wgaXNIaWdoQWNjdXJhY3lFbmFibGVkKGNvbnN0IFBlckRvbWFpbkRhdGEmKSBjb25z
dDsKKyAgICB2b2lkIHByb3ZpZGVyU3RhcnRVcGRhdGluZyhQZXJEb21haW5EYXRhJiwgY29uc3Qg
V2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4mKTsKKyAgICB2b2lkIHByb3ZpZGVyU3RvcFVwZGF0
aW5nKFBlckRvbWFpbkRhdGEmKTsKKyAgICB2b2lkIHByb3ZpZGVyU2V0RW5hYmxlZEhpZ2hBY2N1
cmFjeShQZXJEb21haW5EYXRhJiwgYm9vbCBlbmFibGVkKTsKIAotICAgIHN0ZDo6dW5pcXVlX3B0
cjxBUEk6Okdlb2xvY2F0aW9uUHJvdmlkZXI+IG1fcHJvdmlkZXI7Ci0gICAgc3RkOjpvcHRpb25h
bDxXZWJDb3JlOjpHZW9sb2NhdGlvblBvc2l0aW9uRGF0YT4gbV9sYXN0UG9zaXRpb247CisgICAg
SGFzaE1hcDxXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiwgc3RkOjp1bmlxdWVfcHRyPFBlckRv
bWFpbkRhdGE+PiBtX3BlckRvbWFpbkRhdGE7CisgICAgc3RkOjp1bmlxdWVfcHRyPEFQSTo6R2Vv
bG9jYXRpb25Qcm92aWRlcj4gbV9jbGllbnRQcm92aWRlcjsKIH07CiAKIH0gLy8gbmFtZXNwYWNl
IFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViR2VvbG9jYXRp
b25NYW5hZ2VyUHJveHkubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJH
ZW9sb2NhdGlvbk1hbmFnZXJQcm94eS5tZXNzYWdlcy5pbgppbmRleCBlNWU5YzI3ZDE0YTVmYjcy
NmZjYzJjODFmZjNlMTY1ZWEzZTg0MGJlLi45MDQxYTkwYzI1MGY4YWRkNjhiYjEzYjNhYmI1NGJl
YjY2Y2IyZDI3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJHZW9sb2Nh
dGlvbk1hbmFnZXJQcm94eS5tZXNzYWdlcy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9XZWJHZW9sb2NhdGlvbk1hbmFnZXJQcm94eS5tZXNzYWdlcy5pbgpAQCAtMjEsNyArMjEsNyBA
QAogIyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgogCiBtZXNzYWdlcyAtPiBXZWJHZW9sb2NhdGlvbk1hbmFnZXJQcm94
eSB7Ci0gICAgU3RhcnRVcGRhdGluZyhXZWJLaXQ6OldlYlBhZ2VQcm94eUlkZW50aWZpZXIgcGFn
ZVByb3h5SUQsIFN0cmluZyBhdXRob3JpemF0aW9uVG9rZW4pIFdhbnRzQ29ubmVjdGlvbgotICAg
IFN0b3BVcGRhdGluZygpIFdhbnRzQ29ubmVjdGlvbgotICAgIFNldEVuYWJsZUhpZ2hBY2N1cmFj
eShib29sIGVuYWJsZWQpIFdhbnRzQ29ubmVjdGlvbgorICAgIFN0YXJ0VXBkYXRpbmcoV2ViQ29y
ZTo6UmVnaXN0cmFibGVEb21haW4gcmVnaXN0cmFibGVEb21haW4sIFdlYktpdDo6V2ViUGFnZVBy
b3h5SWRlbnRpZmllciBwYWdlUHJveHlJRCwgU3RyaW5nIGF1dGhvcml6YXRpb25Ub2tlbiwgYm9v
bCBlbmFibGVIaWdoQWNjdXJhY3kpIFdhbnRzQ29ubmVjdGlvbgorICAgIFN0b3BVcGRhdGluZyhX
ZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiByZWdpc3RyYWJsZURvbWFpbikgV2FudHNDb25uZWN0
aW9uCisgICAgU2V0RW5hYmxlSGlnaEFjY3VyYWN5KFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWlu
IHJlZ2lzdHJhYmxlRG9tYWluLCBib29sIGVuYWJsZWQpIFdhbnRzQ29ubmVjdGlvbgogfQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuY3BwIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuY3BwCmluZGV4IGY2MGQzZWNkMmNh
NmYwZmM3MzY3MGMzOWRhMmFiNzYwMDM1ZjJmNzQuLmZhMTc0MmNmMzJkYTk5NTI3MzIzZGZjN2M4
YmYwYTc5MDYzMDQxZmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBy
b2Nlc3NQb29sLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9v
bC5jcHAKQEAgLTQzMSw5ICs0MzEsNiBAQCB2b2lkIFdlYlByb2Nlc3NQb29sOjpzY3JlZW5Qcm9w
ZXJ0aWVzU3RhdGVDaGFuZ2VkKCkKIAogdm9pZCBXZWJQcm9jZXNzUG9vbDo6bmV0d29ya1Byb2Nl
c3NEaWRUZXJtaW5hdGUoTmV0d29ya1Byb2Nlc3NQcm94eSYgbmV0d29ya1Byb2Nlc3NQcm94eSwg
TmV0d29ya1Byb2Nlc3NQcm94eTo6VGVybWluYXRpb25SZWFzb24gcmVhc29uKQogewotICAgIGZv
ciAoYXV0byYgc3VwcGxlbWVudCA6IG1fc3VwcGxlbWVudHMudmFsdWVzKCkpCi0gICAgICAgIHN1
cHBsZW1lbnQtPnByb2Nlc3NEaWRDbG9zZSgmbmV0d29ya1Byb2Nlc3NQcm94eSk7Ci0KICAgICBp
ZiAocmVhc29uID09IE5ldHdvcmtQcm9jZXNzUHJveHk6OlRlcm1pbmF0aW9uUmVhc29uOjpDcmFz
aCkKICAgICAgICAgbV9jbGllbnQubmV0d29ya1Byb2Nlc3NEaWRDcmFzaCh0aGlzKTsKIApAQCAt
MTA1Nyw3ICsxMDU0LDcgQEAgdm9pZCBXZWJQcm9jZXNzUG9vbDo6ZGlzY29ubmVjdFByb2Nlc3Mo
V2ViUHJvY2Vzc1Byb3h5JiBwcm9jZXNzKQogICAgIGlmIChwcm9jZXNzLmlzUnVubmluZ1dvcmtl
cnMoKSkKICAgICAgICAgcmVtb3ZlRnJvbVJlbW90ZVdvcmtlclByb2Nlc3Nlcyhwcm9jZXNzKTsK
IAotICAgIHN0YXRpY19jYXN0PFdlYkNvbnRleHRTdXBwbGVtZW50Kj4oc3VwcGxlbWVudDxXZWJH
ZW9sb2NhdGlvbk1hbmFnZXJQcm94eT4oKSktPnByb2Nlc3NEaWRDbG9zZSgmcHJvY2Vzcyk7Cisg
ICAgc3VwcGxlbWVudDxXZWJHZW9sb2NhdGlvbk1hbmFnZXJQcm94eT4oKS0+d2ViUHJvY2Vzc0lz
R29pbmdBd2F5KHByb2Nlc3MpOwogCiAgICAgbV9wcm9jZXNzZXMucmVtb3ZlRmlyc3QocHJvY2Vz
cyk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XS0dlb2xvY2F0
aW9uUHJvdmlkZXJJT1MubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tHZW9sb2Nh
dGlvblByb3ZpZGVySU9TLm1tCmluZGV4IGY1ZTlmZDdiYzM0MTI5N2FmN2IyNGU2NzQxNjMzMmNk
OTZhZDczOWMuLmU2MzhhZDljNGU4YjczOGJmMTY1MTRkNzE5ZGMxYmU4YTc2YjU5ZDQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XS0dlb2xvY2F0aW9uUHJvdmlkZXJJ
T1MubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dLR2VvbG9jYXRpb25Qcm92
aWRlcklPUy5tbQpAQCAtNTEsNyArNTEsNiBAQAogI2ltcG9ydCA8d3RmL1VSTC5oPgogCiAvLyBG
SVhNRTogUmVtb3ZlIHVzZSBvZiBXZWJLaXQxIGZyb20gV2ViS2l0MgotI2ltcG9ydCA8V2ViS2l0
L1dlYkdlb2xvY2F0aW9uQ29yZUxvY2F0aW9uUHJvdmlkZXIuaD4KICNpbXBvcnQgPFdlYktpdC9X
ZWJBbGxvd0RlbnlQb2xpY3lMaXN0ZW5lci5oPgogCiBBTExPV19ERVBSRUNBVEVEX0RFQ0xBUkFU
SU9OU19CRUdJTgpAQCAtNTksOSArNTgsNiBAQCBBTExPV19ERVBSRUNBVEVEX0RFQ0xBUkFUSU9O
U19CRUdJTgogQGludGVyZmFjZSBXS0dlb2xvY2F0aW9uUHJvdmlkZXJJT1MgKF9XS0dlb2xvY2F0
aW9uQ29yZUxvY2F0aW9uTGlzdGVuZXIpIDxfV0tHZW9sb2NhdGlvbkNvcmVMb2NhdGlvbkxpc3Rl
bmVyPgogQGVuZAogCi1AaW50ZXJmYWNlIFdLTGVnYWN5Q29yZUxvY2F0aW9uUHJvdmlkZXIgOiBO
U09iamVjdDxfV0tHZW9sb2NhdGlvbkNvcmVMb2NhdGlvblByb3ZpZGVyLCBXZWJHZW9sb2NhdGlv
bkNvcmVMb2NhdGlvblVwZGF0ZUxpc3RlbmVyPgotQGVuZAotCiBAaW50ZXJmYWNlIFdLV2ViQWxs
b3dEZW55UG9saWN5TGlzdGVuZXIgOiBOU09iamVjdDxXZWJBbGxvd0RlbnlQb2xpY3lMaXN0ZW5l
cj4KIC0gKGlkKWluaXRXaXRoQ29tcGxldGlvbkhhbmRsZXI6KEZ1bmN0aW9uPHZvaWQoYm9vbCk+
JiYpY29tcGxldGlvbkhhbmRsZXI7CiAtICh2b2lkKWRlbnlPbmx5VGhpc1JlcXVlc3QgTk9fUkVU
VVJOX0RVRV9UT19BU1NFUlQ7CkBAIC0xNDYsMjUgKzE0Miw0MiBAQCAtIChpZClpbml0V2l0aFBy
b2Nlc3NQb29sOihXZWJLaXQ6OldlYlByb2Nlc3NQb29sJilwcm9jZXNzUG9vbAogICAgIHNlbGYg
PSBbc3VwZXIgaW5pdF07CiAgICAgaWYgKCFzZWxmKQogICAgICAgICByZXR1cm4gbmlsOwotICAg
IF9nZW9sb2NhdGlvbk1hbmFnZXIgPSBwcm9jZXNzUG9vbC5zdXBwbGVtZW50PFdlYktpdDo6V2Vi
R2VvbG9jYXRpb25NYW5hZ2VyUHJveHk+KCk7Ci0gICAgV0tHZW9sb2NhdGlvblByb3ZpZGVyVjEg
cHJvdmlkZXJDYWxsYmFjayA9IHsKLSAgICAgICAgeyAxLCBzZWxmIH0sCi0gICAgICAgIHN0YXJ0
VXBkYXRpbmdDYWxsYmFjaywKLSAgICAgICAgc3RvcFVwZGF0aW5nQ2FsbGJhY2ssCi0gICAgICAg
IHNldEVuYWJsZUhpZ2hBY2N1cmFjeQotICAgIH07Ci0gICAgV0tHZW9sb2NhdGlvbk1hbmFnZXJT
ZXRQcm92aWRlcih0b0FQSShfZ2VvbG9jYXRpb25NYW5hZ2VyLmdldCgpKSwgJnByb3ZpZGVyQ2Fs
bGJhY2suYmFzZSk7Ci0gICAgX2NvcmVMb2NhdGlvblByb3ZpZGVyID0gd3JhcHBlcihwcm9jZXNz
UG9vbCkuX2NvcmVMb2NhdGlvblByb3ZpZGVyID86IGFkb3B0TlMoc3RhdGljX2Nhc3Q8aWQgPF9X
S0dlb2xvY2F0aW9uQ29yZUxvY2F0aW9uUHJvdmlkZXI+PihbW1dLTGVnYWN5Q29yZUxvY2F0aW9u
UHJvdmlkZXIgYWxsb2NdIGluaXRdKSk7Ci0gICAgW19jb3JlTG9jYXRpb25Qcm92aWRlciBzZXRM
aXN0ZW5lcjpzZWxmXTsKKworICAgIC8vIE9uIGlPUywgV2ViS2l0IG5vcm1hbGx5IHByb3ZpZGVz
IHRoZSBsb2NhdGlvbi4gSG93ZXZlciwgaWYgdGhlIGNsaWVudCBzZXRzIGEgY29yZUxvY2F0aW9u
UHJvdmlkZXIsIHRoZW4gd2UgdXNlIHRoYXQgb25lIGluc3RlYWQuCisgICAgLy8gVGhpcyBpcyB1
c2VmdWwgZm9yIFdlYktpdFRlc3RSdW5uZXIgdG8gcHJvdmlkZSBhIGR1bW15IGdlb2xvY2F0aW9u
IHByb3ZpZGVyLiBJdCBpcyBhbHNvIHVzZWQgYnkgY2VydGFpbiBhcHBzIHRvIGRlbnkgYWxsCisg
ICAgLy8gZ2VvbG9jYXRpb24gYXV0aG9yaXphdGlvbiBhcyBhIHdheSB0byBkaXNhYmxlIHN1cHBv
cnQgZm9yIGdlb2xvY2F0aW9uLgorICAgIGlmICh3cmFwcGVyKHByb2Nlc3NQb29sKS5fY29yZUxv
Y2F0aW9uUHJvdmlkZXIpIHsKKyAgICAgICAgX2dlb2xvY2F0aW9uTWFuYWdlciA9IHByb2Nlc3NQ
b29sLnN1cHBsZW1lbnQ8V2ViS2l0OjpXZWJHZW9sb2NhdGlvbk1hbmFnZXJQcm94eT4oKTsKKyAg
ICAgICAgV0tHZW9sb2NhdGlvblByb3ZpZGVyVjEgcHJvdmlkZXJDYWxsYmFjayA9IHsKKyAgICAg
ICAgICAgIHsgMSwgc2VsZiB9LAorICAgICAgICAgICAgc3RhcnRVcGRhdGluZ0NhbGxiYWNrLAor
ICAgICAgICAgICAgc3RvcFVwZGF0aW5nQ2FsbGJhY2ssCisgICAgICAgICAgICBzZXRFbmFibGVI
aWdoQWNjdXJhY3kKKyAgICAgICAgfTsKKyAgICAgICAgV0tHZW9sb2NhdGlvbk1hbmFnZXJTZXRQ
cm92aWRlcih0b0FQSShfZ2VvbG9jYXRpb25NYW5hZ2VyLmdldCgpKSwgJnByb3ZpZGVyQ2FsbGJh
Y2suYmFzZSk7CisgICAgICAgIF9jb3JlTG9jYXRpb25Qcm92aWRlciA9IHdyYXBwZXIocHJvY2Vz
c1Bvb2wpLl9jb3JlTG9jYXRpb25Qcm92aWRlcjsKKyAgICAgICAgW19jb3JlTG9jYXRpb25Qcm92
aWRlciBzZXRMaXN0ZW5lcjpzZWxmXTsKKyAgICB9CiAgICAgcmV0dXJuIHNlbGY7CiB9CiAKIC0g
KHZvaWQpZGVjaWRlUG9saWN5Rm9yR2VvbG9jYXRpb25SZXF1ZXN0RnJvbU9yaWdpbjooV2ViS2l0
OjpGcmFtZUluZm9EYXRhJiYpZnJhbWVJbmZvIGNvbXBsZXRpb25IYW5kbGVyOihGdW5jdGlvbjx2
b2lkKGJvb2wpPiYmKWNvbXBsZXRpb25IYW5kbGVyIHZpZXc6KFdLV2ViVmlldyAqKWNvbnRlbnRW
aWV3CiB7Ci0gICAgLy8gU3RlcCAxOiBhc2sgdGhlIHVzZXIgaWYgdGhlIGFwcCBjYW4gdXNlIEdl
b2xvY2F0aW9uLgorICAgIFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluIHJlZ2lzdHJhYmxlRG9t
YWluKGZyYW1lSW5mby5zZWN1cml0eU9yaWdpbik7CiAgICAgR2VvbG9jYXRpb25SZXF1ZXN0RGF0
YSBnZW9sb2NhdGlvblJlcXVlc3REYXRhIHsgW2NvbnRlbnRWaWV3IFVSTF0sIFdURk1vdmUoZnJh
bWVJbmZvKSwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlciksIGNvbnRlbnRWaWV3IH07CiAgICAg
X3JlcXVlc3RzV2FpdGluZ0ZvckNvcmVMb2NhdGlvbkF1dGhvcml6YXRpb24uYXBwZW5kKFdURk1v
dmUoZ2VvbG9jYXRpb25SZXF1ZXN0RGF0YSkpOwotICAgIFtfY29yZUxvY2F0aW9uUHJvdmlkZXIg
cmVxdWVzdEdlb2xvY2F0aW9uQXV0aG9yaXphdGlvbl07CisgICAgaWYgKF9jb3JlTG9jYXRpb25Q
cm92aWRlcikgeworICAgICAgICAvLyBTdGVwIDE6IGFzayB0aGUgdXNlciBpZiB0aGUgYXBwIGNh
biB1c2UgR2VvbG9jYXRpb24uCisgICAgICAgIFtfY29yZUxvY2F0aW9uUHJvdmlkZXIgcmVxdWVz
dEdlb2xvY2F0aW9uQXV0aG9yaXphdGlvbl07CisgICAgfSBlbHNlIHsKKyAgICAgICAgLy8gU3Rl
cCAxOiBhc2sgQ29yZUxvY2F0aW9uIGlmIHRoZSBhcHAgY2FuIHVzZSBHZW9sb2NhdGlvbi4KKyAg
ICAgICAgV2ViQ29yZTo6Q29yZUxvY2F0aW9uR2VvbG9jYXRpb25Qcm92aWRlcjo6cmVxdWVzdEF1
dGhvcml6YXRpb24ocmVnaXN0cmFibGVEb21haW4sIFtzZWxmLCBzdHJvbmdTZWxmID0gcmV0YWlu
UHRyKHNlbGYpXShib29sIGF1dGhvcml6ZWQpIHsKKyAgICAgICAgICAgIGlmIChhdXRob3JpemVk
KQorICAgICAgICAgICAgICAgIFtzZWxmIGdlb2xvY2F0aW9uQXV0aG9yaXphdGlvbkdyYW50ZWRd
OworICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIFtzZWxmIGdlb2xvY2F0aW9uQXV0
aG9yaXphdGlvbkRlbmllZF07CisgICAgICAgIH0pOworICAgIH0KIH0KIEBlbmQKIApAQCAtMTc0
LDcgKzE4Nyw3IEBAIEBpbXBsZW1lbnRhdGlvbiBXS0dlb2xvY2F0aW9uUHJvdmlkZXJJT1MgKFdl
Ykdlb2xvY2F0aW9uQ29yZUxvY2F0aW9uVXBkYXRlTGlzdGVuCiAKIC0gKHZvaWQpZ2VvbG9jYXRp
b25BdXRob3JpemF0aW9uR3JhbnRlZAogewotICAgIC8vIFN0ZXAgMjogYXNrIHRoZSB1c2VyIGlm
IHRoaXMgcGFydGljdWxhciBwYWdlIGNhbiB1c2UgZ2Vsb2NhdGlvbi4KKyAgICAvLyBTdGVwIDI6
IGFzayB0aGUgdXNlciBpZiB0aGlzIHBhcnRpY3VsYXIgcGFnZSBjYW4gdXNlIGdlb2xvY2F0aW9u
LgogICAgIGlmIChfcmVxdWVzdHNXYWl0aW5nRm9yQ29yZUxvY2F0aW9uQXV0aG9yaXphdGlvbi5p
c0VtcHR5KCkpCiAgICAgICAgIHJldHVybjsKIApAQCAtMjI2LDgxICsyMzksNiBAQCAtICh2b2lk
KXJlc2V0R2VvbG9jYXRpb24KIAogQGVuZAogCi0jIHByYWdtYSBtYXJrIC0gSW1wbGVtZW50YXRp
b24gb2YgV0tMZWdhY3lDb3JlTG9jYXRpb25Qcm92aWRlcgotCi1AaW1wbGVtZW50YXRpb24gV0tM
ZWdhY3lDb3JlTG9jYXRpb25Qcm92aWRlciB7Ci0gICAgaWQgPF9XS0dlb2xvY2F0aW9uQ29yZUxv
Y2F0aW9uTGlzdGVuZXI+IF9saXN0ZW5lcjsKLSAgICBSZXRhaW5QdHI8V2ViR2VvbG9jYXRpb25D
b3JlTG9jYXRpb25Qcm92aWRlcj4gX3Byb3ZpZGVyOwotfQotCi0vLyA8X1dLR2VvbG9jYXRpb25D
b3JlTG9jYXRpb25Qcm92aWRlcj4gTWV0aG9kcwotCi0tICh2b2lkKXNldExpc3RlbmVyOihpZDxf
V0tHZW9sb2NhdGlvbkNvcmVMb2NhdGlvbkxpc3RlbmVyPilsaXN0ZW5lcgotewotICAgIEFTU0VS
VChsaXN0ZW5lciAmJiAhX2xpc3RlbmVyICYmICFfcHJvdmlkZXIpOwotICAgIF9saXN0ZW5lciA9
IGxpc3RlbmVyOwotICAgIF9wcm92aWRlciA9IGFkb3B0TlMoW1tXZWJHZW9sb2NhdGlvbkNvcmVM
b2NhdGlvblByb3ZpZGVyIGFsbG9jXSBpbml0V2l0aExpc3RlbmVyOnNlbGZdKTsKLX0KLQotLSAo
dm9pZClyZXF1ZXN0R2VvbG9jYXRpb25BdXRob3JpemF0aW9uCi17Ci0gICAgQVNTRVJUKF9wcm92
aWRlcik7Ci0gICAgW19wcm92aWRlciByZXF1ZXN0R2VvbG9jYXRpb25BdXRob3JpemF0aW9uXTsK
LX0KLQotLSAodm9pZClzdGFydAotewotICAgIEFTU0VSVChfcHJvdmlkZXIpOwotICAgIFtfcHJv
dmlkZXIgc3RhcnRdOwotfQotCi0tICh2b2lkKXN0b3AKLXsKLSAgICBBU1NFUlQoX3Byb3ZpZGVy
KTsKLSAgICBbX3Byb3ZpZGVyIHN0b3BdOwotfQotCi0tICh2b2lkKXNldEVuYWJsZUhpZ2hBY2N1
cmFjeTooQk9PTClmbGFnCi17Ci0gICAgQVNTRVJUKF9wcm92aWRlcik7Ci0gICAgW19wcm92aWRl
ciBzZXRFbmFibGVIaWdoQWNjdXJhY3k6ZmxhZ107Ci19Ci0KLS8vIDxXZWJHZW9sb2NhdGlvbkNv
cmVMb2NhdGlvblVwZGF0ZUxpc3RlbmVyPiBNZXRob2RzCi0KLS0gKHZvaWQpZ2VvbG9jYXRpb25B
dXRob3JpemF0aW9uR3JhbnRlZAotewotICAgIEFTU0VSVChfbGlzdGVuZXIpOwotICAgIFtfbGlz
dGVuZXIgZ2VvbG9jYXRpb25BdXRob3JpemF0aW9uR3JhbnRlZF07Ci19Ci0KLS0gKHZvaWQpZ2Vv
bG9jYXRpb25BdXRob3JpemF0aW9uRGVuaWVkCi17Ci0gICAgQVNTRVJUKF9saXN0ZW5lcik7Ci0g
ICAgW19saXN0ZW5lciBnZW9sb2NhdGlvbkF1dGhvcml6YXRpb25EZW5pZWRdOwotfQotCi0tICh2
b2lkKXBvc2l0aW9uQ2hhbmdlZDooV2ViQ29yZTo6R2VvbG9jYXRpb25Qb3NpdGlvbkRhdGEmJilj
b3JlUG9zaXRpb24KLXsKLSAgICBBU1NFUlQoX2xpc3RlbmVyKTsKLSAgICBhdXRvIHBvc2l0aW9u
ID0gV2ViS2l0OjpXZWJHZW9sb2NhdGlvblBvc2l0aW9uOjpjcmVhdGUoV1RGTW92ZShjb3JlUG9z
aXRpb24pKTsKLSAgICBbX2xpc3RlbmVyIHBvc2l0aW9uQ2hhbmdlZDp3cmFwcGVyKHBvc2l0aW9u
LmdldCgpKV07Ci19Ci0KLS0gKHZvaWQpZXJyb3JPY2N1cnJlZDooTlNTdHJpbmcgKillcnJvck1l
c3NhZ2UKLXsKLSAgICBBU1NFUlQoX2xpc3RlbmVyKTsKLSAgICBbX2xpc3RlbmVyIGVycm9yT2Nj
dXJyZWQ6ZXJyb3JNZXNzYWdlXTsKLX0KLQotLSAodm9pZClyZXNldEdlb2xvY2F0aW9uCi17Ci0g
ICAgQVNTRVJUKF9saXN0ZW5lcik7Ci0gICAgW19saXN0ZW5lciByZXNldEdlb2xvY2F0aW9uXTsK
LX0KLQotQGVuZAotCiAjIHByYWdtYSBtYXJrIC0gSW1wbGVtZW50YXRpb24gb2YgV0tXZWJBbGxv
d0RlbnlQb2xpY3lMaXN0ZW5lcgogQGltcGxlbWVudGF0aW9uIFdLV2ViQWxsb3dEZW55UG9saWN5
TGlzdGVuZXIgewogICAgIEZ1bmN0aW9uPHZvaWQoYm9vbCk+IF9jb21wbGV0aW9uSGFuZGxlcjsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2ogYi9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4
IDFlYzhiMmI4NWNlMWU1NjQzN2YyZWZkMWM0NGMwNjkxNjA2OTE5MzAuLmNjMjk2MDk3YTg3NjM4
ZmE2ZWYzZTg2MGI3ODMyZWFmOGViOWVkYmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2Vi
S2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dlYktpdC9XZWJLaXQu
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtNDMxOSw2ICs0MzE5LDcgQEAKIAkJNDZDRTNC
MTAyM0Q4QzgzRDAwMTZBOTZBIC8qIFdlYkJhY2tGb3J3YXJkTGlzdENvdW50cy5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJCYWNrRm9yd2FyZExpc3RDb3VudHMuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDZENDhGQ0MyNzk5RDdERDAwN0QyMDE0IC8qIFdl
YlNoYXJlZFdvcmtlclNlcnZlclRvQ29udGV4dENvbm5lY3Rpb24uY3BwICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBw
YXRoID0gV2ViU2hhcmVkV29ya2VyU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbi5jcHA7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQ2RDQ4RkNEMjc5OUQ3REUwMDdEMjAxNCAvKiBXZWJT
aGFyZWRXb3JrZXJTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdl
YlNoYXJlZFdvcmtlclNlcnZlclRvQ29udGV4dENvbm5lY3Rpb24uaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKKwkJNDZEQTI4NTcyN0I3M0U3NjAwODlEMzM5IC8qIFdlYkdlb2xvY2F0aW9u
TWFuYWdlclByb3h5Q29jb2EuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gV2ViR2VvbG9jYXRpb25N
YW5hZ2VyUHJveHlDb2NvYS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQ2REYw
NjM5MUYzOTA1RTUwMDE5ODBCQiAvKiBOZXR3b3JrQ09SU1ByZWZsaWdodENoZWNrZXIuY3BwICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gTmV0d29ya0NPUlNQcmVmbGlnaHRD
aGVja2VyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDZERjA2M0ExRjM5MDVF
NTAwMTk4MEJCIC8qIE5ldHdvcmtDT1JTUHJlZmxpZ2h0Q2hlY2tlci5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBOZXR3b3JrQ09SU1ByZWZsaWdodENoZWNrZXIuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDZFOTc2MEEyNzU3RjZDOTAwQUNERDM3IC8qIFdlYkJy
b2FkY2FzdENoYW5uZWxSZWdpc3RyeS5tZXNzYWdlcy5pbiAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGgg
PSBXZWJCcm9hZGNhc3RDaGFubmVsUmVnaXN0cnkubWVzc2FnZXMuaW47IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CkBAIC03NjExLDYgKzc2MTIsNyBAQAogCQkJCTUyRDVBMUFBMUM1NzQ5NEUw
MERFMzRBMyAvKiBWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyUHJveHkuaCAqLywKIAkJCQk1MkQ1QTFB
QjFDNTc0OTRFMDBERTM0QTMgLyogVmlkZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5Lm1lc3NhZ2Vz
LmluICovLAogCQkJCTUyRDVBMUFDMUM1NzQ5NEUwMERFMzRBMyAvKiBWaWRlb0Z1bGxzY3JlZW5N
YW5hZ2VyUHJveHkubW0gKi8sCisJCQkJNDZEQTI4NTcyN0I3M0U3NjAwODlEMzM5IC8qIFdlYkdl
b2xvY2F0aW9uTWFuYWdlclByb3h5Q29jb2EuY3BwICovLAogCQkJCUMxOEYzQTEzMjU2MzMyQTYw
MDc5N0U2NiAvKiBXZWJJbnNwZWN0b3JQcmVmZXJlbmNlT2JzZXJ2ZXIuaCAqLywKIAkJCQlDMThG
M0ExNDI1NjMzMzQzMDA3OTdFNjYgLyogV2ViSW5zcGVjdG9yUHJlZmVyZW5jZU9ic2VydmVyLm1t
ICovLAogCQkJCUNERjFCOTE5MjY3MDIxRDYwMDA3RUMxMCAvKiBXZWJLaXRTd2lmdFNvZnRMaW5r
LmggKi8sCkBAIC0xMzQ4Niw2ICsxMzQ4OCw3IEBACiAJCQkJRTE4RTY5MTgxNjlCNjY3QjAwOUI2
NjcwIC8qIFNlY0l0ZW1TaGltUHJveHlNZXNzYWdlcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNTcw
QUI4RjMyMEFFM0JENzAwQjhCRTg3IC8qIFNlY0tleVByb3h5U3RvcmUuaCBpbiBIZWFkZXJzICov
LAogCQkJCTUxNEQ5RjU3MTkxMTlEMzUwMDAwNjNBNyAvKiBTZXJ2aWNlc0NvbnRyb2xsZXIuaCBp
biBIZWFkZXJzICovLAorCQkJCTUxNjQ2NTgwMjdBOUM3NzQwMEUxRjJCQSAvKiBTZXJ2aWNlV29y
a2VyTm90aWZpY2F0aW9uSGFuZGxlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMUFGREU2NUExOTU0
QTQyQjAwQzQ4RkZBIC8qIFNlc3Npb25TdGF0ZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMUEwMDJE
NDkxOTZCMzQ1RDAwQjlBRDQ0IC8qIFNlc3Npb25TdGF0ZUNvZGluZy5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJOTNFNzk5Q0UyNzYwNDk3QjAwNzQwMDhBIC8qIFNlc3Npb25TdG9yYWdlTWFuYWdlci5o
IGluIEhlYWRlcnMgKi8sCkBAIC0xMzkzNCw3ICsxMzkzNyw2IEBACiAJCQkJQkM0QTYyOTcxNDcz
MTNBMDAwNkM2ODFBIC8qIFdLQ29ubmVjdGlvblJlZi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRTU5
NkRENkEyNTFFNzFENDAwQzI3NUE3IC8qIFdLQ29udGFjdFBpY2tlci5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJNUNEMjg2NTQxRTcyMzVCMTAwOTRGREM4IC8qIFdLQ29udGVudFJ1bGVMaXN0LmggaW4g
SGVhZGVycyAqLywKLQkJCQk1MTY0NjU4MDI3QTlDNzc0MDBFMUYyQkEgLyogU2VydmljZVdvcmtl
ck5vdGlmaWNhdGlvbkhhbmRsZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTVDRDI4NjU1MUU3MjM1
QjgwMDk0RkRDOCAvKiBXS0NvbnRlbnRSdWxlTGlzdEludGVybmFsLmggaW4gSGVhZGVycyAqLywK
IAkJCQk1QzUxMzlEQjI1OTI3RDgwMDA5QzNFMzAgLyogV0tDb250ZW50UnVsZUxpc3RQcml2YXRl
LmggaW4gSGVhZGVycyAqLywKIAkJCQk1Q0QyODY1MTFFNzIzNTk5MDA5NEZEQzggLyogV0tDb250
ZW50UnVsZUxpc3RTdG9yZS5oIGluIEhlYWRlcnMgKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvR2VvbG9jYXRpb24vV2ViR2VvbG9jYXRpb25NYW5hZ2VyLmNwcCBiL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HZW9sb2NhdGlvbi9XZWJHZW9sb2NhdGlvbk1hbmFnZXIu
Y3BwCmluZGV4IDVhOWM5ZjRkMmExY2Q2NmE0YjY3NTliNTkzODdlYTJjZjU1YjJhYTguLmY5ZDg3
NWMxNDk0NGFiMDMzZTg3YTlmZTI2OTVkMTVmNTRmN2ZjYzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9HZW9sb2NhdGlvbi9XZWJHZW9sb2NhdGlvbk1hbmFnZXIuY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HZW9sb2NhdGlvbi9XZWJHZW9sb2NhdGlvbk1h
bmFnZXIuY3BwCkBAIC0zOSw2ICszOSwxNCBAQAogbmFtZXNwYWNlIFdlYktpdCB7CiB1c2luZyBu
YW1lc3BhY2UgV2ViQ29yZTsKIAorc3RhdGljIFJlZ2lzdHJhYmxlRG9tYWluIHJlZ2lzdHJhYmxl
RG9tYWluRm9yUGFnZShXZWJQYWdlJiBwYWdlKQoreworICAgIGF1dG8qIGRvY3VtZW50ID0gcGFn
ZS5jb3JlUGFnZSgpID8gcGFnZS5jb3JlUGFnZSgpLT5tYWluRnJhbWUoKS5kb2N1bWVudCgpIDog
bnVsbHB0cjsKKyAgICBpZiAoIWRvY3VtZW50KQorICAgICAgICByZXR1cm4geyB9OworICAgIHJl
dHVybiBSZWdpc3RyYWJsZURvbWFpbiB7IGRvY3VtZW50LT51cmwoKSB9OworfQorCiBjb25zdCBj
aGFyKiBXZWJHZW9sb2NhdGlvbk1hbmFnZXI6OnN1cHBsZW1lbnROYW1lKCkKIHsKICAgICByZXR1
cm4gIldlYkdlb2xvY2F0aW9uTWFuYWdlciI7CkBAIC01MCw4OCArNTgsMTQwIEBAIFdlYkdlb2xv
Y2F0aW9uTWFuYWdlcjo6V2ViR2VvbG9jYXRpb25NYW5hZ2VyKFdlYlByb2Nlc3MmIHByb2Nlc3Mp
CiAgICAgbV9wcm9jZXNzLmFkZE1lc3NhZ2VSZWNlaXZlcihNZXNzYWdlczo6V2ViR2VvbG9jYXRp
b25NYW5hZ2VyOjptZXNzYWdlUmVjZWl2ZXJOYW1lKCksICp0aGlzKTsKIH0KIAotdm9pZCBXZWJH
ZW9sb2NhdGlvbk1hbmFnZXI6OnJlZ2lzdGVyV2ViUGFnZShXZWJQYWdlJiBwYWdlLCBjb25zdCBT
dHJpbmcmIGF1dGhvcml6YXRpb25Ub2tlbikKLXsKLSAgICBib29sIHdhc1VwZGF0aW5nID0gaXNV
cGRhdGluZygpOworV2ViR2VvbG9jYXRpb25NYW5hZ2VyOjp+V2ViR2VvbG9jYXRpb25NYW5hZ2Vy
KCkgPSBkZWZhdWx0OwogCi0gICAgbV9wYWdlU2V0LmFkZChwYWdlKTsKK3ZvaWQgV2ViR2VvbG9j
YXRpb25NYW5hZ2VyOjpyZWdpc3RlcldlYlBhZ2UoV2ViUGFnZSYgcGFnZSwgY29uc3QgU3RyaW5n
JiBhdXRob3JpemF0aW9uVG9rZW4sIGJvb2wgbmVlZHNIaWdoQWNjdXJhY3kpCit7CisgICAgYXV0
byByZWdpc3RyYWJsZURvbWFpbiA9IHJlZ2lzdHJhYmxlRG9tYWluRm9yUGFnZShwYWdlKTsKKyAg
ICBpZiAocmVnaXN0cmFibGVEb21haW4uc3RyaW5nKCkuaXNFbXB0eSgpKQorICAgICAgICByZXR1
cm47CisKKyAgICBhdXRvJiBwYWdlU2V0cyA9IG1fcGFnZVNldHMuYWRkKHJlZ2lzdHJhYmxlRG9t
YWluLCBQYWdlU2V0cygpKS5pdGVyYXRvci0+dmFsdWU7CisgICAgYm9vbCB3YXNVcGRhdGluZyA9
IGlzVXBkYXRpbmcocGFnZVNldHMpOworICAgIGJvb2wgaGlnaEFjY3VyYWN5V2FzRW5hYmxlZCA9
IGlzSGlnaEFjY3VyYWN5RW5hYmxlZChwYWdlU2V0cyk7CisKKyAgICBwYWdlU2V0cy5wYWdlU2V0
LmFkZChwYWdlKTsKKyAgICBpZiAobmVlZHNIaWdoQWNjdXJhY3kpCisgICAgICAgIHBhZ2VTZXRz
LmhpZ2hBY2N1cmFjeVBhZ2VTZXQuYWRkKHBhZ2UpOworICAgIG1fcGFnZVRvUmVnaXN0cmFibGVE
b21haW4uYWRkKCZwYWdlLCByZWdpc3RyYWJsZURvbWFpbik7CisKKyAgICBpZiAoIXdhc1VwZGF0
aW5nKSB7CisgICAgICAgIG1fcHJvY2Vzcy5wYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpLT5zZW5k
KE1lc3NhZ2VzOjpXZWJHZW9sb2NhdGlvbk1hbmFnZXJQcm94eTo6U3RhcnRVcGRhdGluZyhyZWdp
c3RyYWJsZURvbWFpbiwgcGFnZS53ZWJQYWdlUHJveHlJZGVudGlmaWVyKCksIGF1dGhvcml6YXRp
b25Ub2tlbiwgbmVlZHNIaWdoQWNjdXJhY3kpLCAwKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0K
IAotICAgIGlmICghd2FzVXBkYXRpbmcpCi0gICAgICAgIG1fcHJvY2Vzcy5wYXJlbnRQcm9jZXNz
Q29ubmVjdGlvbigpLT5zZW5kKE1lc3NhZ2VzOjpXZWJHZW9sb2NhdGlvbk1hbmFnZXJQcm94eTo6
U3RhcnRVcGRhdGluZyhwYWdlLndlYlBhZ2VQcm94eUlkZW50aWZpZXIoKSwgYXV0aG9yaXphdGlv
blRva2VuKSwgMCk7CisgICAgYm9vbCBoaWdoQWNjdXJhY3lTaG91bGRCZUVuYWJsZWQgPSBpc0hp
Z2hBY2N1cmFjeUVuYWJsZWQocGFnZVNldHMpOworICAgIGlmIChoaWdoQWNjdXJhY3lXYXNFbmFi
bGVkICE9IGhpZ2hBY2N1cmFjeVNob3VsZEJlRW5hYmxlZCkKKyAgICAgICAgbV9wcm9jZXNzLnBh
cmVudFByb2Nlc3NDb25uZWN0aW9uKCktPnNlbmQoTWVzc2FnZXM6OldlYkdlb2xvY2F0aW9uTWFu
YWdlclByb3h5OjpTZXRFbmFibGVIaWdoQWNjdXJhY3kocmVnaXN0cmFibGVEb21haW4sIGhpZ2hB
Y2N1cmFjeVNob3VsZEJlRW5hYmxlZCksIDApOwogfQogCiB2b2lkIFdlYkdlb2xvY2F0aW9uTWFu
YWdlcjo6dW5yZWdpc3RlcldlYlBhZ2UoV2ViUGFnZSYgcGFnZSkKIHsKLSAgICBib29sIGhpZ2hB
Y2N1cmFjeVdhc0VuYWJsZWQgPSBpc0hpZ2hBY2N1cmFjeUVuYWJsZWQoKTsKKyAgICBhdXRvIHJl
Z2lzdHJhYmxlRG9tYWluID0gbV9wYWdlVG9SZWdpc3RyYWJsZURvbWFpbi50YWtlKCZwYWdlKTsK
KyAgICBpZiAocmVnaXN0cmFibGVEb21haW4uc3RyaW5nKCkuaXNFbXB0eSgpKQorICAgICAgICBy
ZXR1cm47CisKKyAgICBhdXRvIGl0ID0gbV9wYWdlU2V0cy5maW5kKHJlZ2lzdHJhYmxlRG9tYWlu
KTsKKyAgICBpZiAoaXQgPT0gbV9wYWdlU2V0cy5lbmQoKSkKKyAgICAgICAgcmV0dXJuOwogCi0g
ICAgbV9wYWdlU2V0LnJlbW92ZShwYWdlKTsKLSAgICBtX2hpZ2hBY2N1cmFjeVBhZ2VTZXQucmVt
b3ZlKHBhZ2UpOworICAgIGF1dG8mIHBhZ2VTZXRzID0gaXQtPnZhbHVlOworICAgIGJvb2wgaGln
aEFjY3VyYWN5V2FzRW5hYmxlZCA9IGlzSGlnaEFjY3VyYWN5RW5hYmxlZChwYWdlU2V0cyk7CiAK
LSAgICBpZiAoIWlzVXBkYXRpbmcoKSkKLSAgICAgICAgbV9wcm9jZXNzLnBhcmVudFByb2Nlc3ND
b25uZWN0aW9uKCktPnNlbmQoTWVzc2FnZXM6OldlYkdlb2xvY2F0aW9uTWFuYWdlclByb3h5OjpT
dG9wVXBkYXRpbmcoKSwgMCk7CisgICAgcGFnZVNldHMucGFnZVNldC5yZW1vdmUocGFnZSk7Cisg
ICAgcGFnZVNldHMuaGlnaEFjY3VyYWN5UGFnZVNldC5yZW1vdmUocGFnZSk7CisKKyAgICBpZiAo
IWlzVXBkYXRpbmcocGFnZVNldHMpKQorICAgICAgICBtX3Byb2Nlc3MucGFyZW50UHJvY2Vzc0Nv
bm5lY3Rpb24oKS0+c2VuZChNZXNzYWdlczo6V2ViR2VvbG9jYXRpb25NYW5hZ2VyUHJveHk6OlN0
b3BVcGRhdGluZyhyZWdpc3RyYWJsZURvbWFpbiksIDApOwogICAgIGVsc2UgewotICAgICAgICBi
b29sIGhpZ2hBY2N1cmFjeVNob3VsZEJlRW5hYmxlZCA9IGlzSGlnaEFjY3VyYWN5RW5hYmxlZCgp
OworICAgICAgICBib29sIGhpZ2hBY2N1cmFjeVNob3VsZEJlRW5hYmxlZCA9IGlzSGlnaEFjY3Vy
YWN5RW5hYmxlZChwYWdlU2V0cyk7CiAgICAgICAgIGlmIChoaWdoQWNjdXJhY3lXYXNFbmFibGVk
ICE9IGhpZ2hBY2N1cmFjeVNob3VsZEJlRW5hYmxlZCkKLSAgICAgICAgICAgIG1fcHJvY2Vzcy5w
YXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpLT5zZW5kKE1lc3NhZ2VzOjpXZWJHZW9sb2NhdGlvbk1h
bmFnZXJQcm94eTo6U2V0RW5hYmxlSGlnaEFjY3VyYWN5KGhpZ2hBY2N1cmFjeVNob3VsZEJlRW5h
YmxlZCksIDApOworICAgICAgICAgICAgbV9wcm9jZXNzLnBhcmVudFByb2Nlc3NDb25uZWN0aW9u
KCktPnNlbmQoTWVzc2FnZXM6OldlYkdlb2xvY2F0aW9uTWFuYWdlclByb3h5OjpTZXRFbmFibGVI
aWdoQWNjdXJhY3kocmVnaXN0cmFibGVEb21haW4sIGhpZ2hBY2N1cmFjeVNob3VsZEJlRW5hYmxl
ZCksIDApOwogICAgIH0KKworICAgIGlmIChwYWdlU2V0cy5wYWdlU2V0LmNvbXB1dGVzRW1wdHko
KSAmJiBwYWdlU2V0cy5oaWdoQWNjdXJhY3lQYWdlU2V0LmNvbXB1dGVzRW1wdHkoKSkKKyAgICAg
ICAgbV9wYWdlU2V0cy5yZW1vdmUoaXQpOwogfQogCiB2b2lkIFdlYkdlb2xvY2F0aW9uTWFuYWdl
cjo6c2V0RW5hYmxlSGlnaEFjY3VyYWN5Rm9yUGFnZShXZWJQYWdlJiBwYWdlLCBib29sIGVuYWJs
ZWQpCiB7Ci0gICAgYm9vbCBoaWdoQWNjdXJhY3lXYXNFbmFibGVkID0gaXNIaWdoQWNjdXJhY3lF
bmFibGVkKCk7CisgICAgYXV0byByZWdpc3RyYWJsZURvbWFpbiA9IG1fcGFnZVRvUmVnaXN0cmFi
bGVEb21haW4uZ2V0KCZwYWdlKTsKKyAgICBpZiAocmVnaXN0cmFibGVEb21haW4uc3RyaW5nKCku
aXNFbXB0eSgpKQorICAgICAgICByZXR1cm47CisKKyAgICBhdXRvIGl0ID0gbV9wYWdlU2V0cy5m
aW5kKHJlZ2lzdHJhYmxlRG9tYWluKTsKKyAgICBBU1NFUlQoaXQgIT0gbV9wYWdlU2V0cy5lbmQo
KSk7CisgICAgaWYgKGl0ID09IG1fcGFnZVNldHMuZW5kKCkpCisgICAgICAgIHJldHVybjsKKwor
ICAgIGF1dG8mIHBhZ2VTZXRzID0gaXQtPnZhbHVlOworICAgIGJvb2wgaGlnaEFjY3VyYWN5V2Fz
RW5hYmxlZCA9IGlzSGlnaEFjY3VyYWN5RW5hYmxlZChwYWdlU2V0cyk7CiAKICAgICBpZiAoZW5h
YmxlZCkKLSAgICAgICAgbV9oaWdoQWNjdXJhY3lQYWdlU2V0LmFkZChwYWdlKTsKKyAgICAgICAg
cGFnZVNldHMuaGlnaEFjY3VyYWN5UGFnZVNldC5hZGQocGFnZSk7CiAgICAgZWxzZQotICAgICAg
ICBtX2hpZ2hBY2N1cmFjeVBhZ2VTZXQucmVtb3ZlKHBhZ2UpOworICAgICAgICBwYWdlU2V0cy5o
aWdoQWNjdXJhY3lQYWdlU2V0LnJlbW92ZShwYWdlKTsKIAotICAgIGJvb2wgaGlnaEFjY3VyYWN5
U2hvdWxkQmVFbmFibGVkID0gaXNIaWdoQWNjdXJhY3lFbmFibGVkKCk7Ci0gICAgaWYgKGhpZ2hB
Y2N1cmFjeVdhc0VuYWJsZWQgIT0gaGlnaEFjY3VyYWN5U2hvdWxkQmVFbmFibGVkKQotICAgICAg
ICBtX3Byb2Nlc3MucGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+c2VuZChNZXNzYWdlczo6V2Vi
R2VvbG9jYXRpb25NYW5hZ2VyUHJveHk6OlNldEVuYWJsZUhpZ2hBY2N1cmFjeShoaWdoQWNjdXJh
Y3lTaG91bGRCZUVuYWJsZWQpLCAwKTsKKyAgICBib29sIGhpZ2hBY2N1cmFjeVNob3VsZEJlRW5h
YmxlZCA9IGlzSGlnaEFjY3VyYWN5RW5hYmxlZChwYWdlU2V0cyk7CisgICAgaWYgKGhpZ2hBY2N1
cmFjeVdhc0VuYWJsZWQgIT0gaXNIaWdoQWNjdXJhY3lFbmFibGVkKHBhZ2VTZXRzKSkKKyAgICAg
ICAgbV9wcm9jZXNzLnBhcmVudFByb2Nlc3NDb25uZWN0aW9uKCktPnNlbmQoTWVzc2FnZXM6Oldl
Ykdlb2xvY2F0aW9uTWFuYWdlclByb3h5OjpTZXRFbmFibGVIaWdoQWNjdXJhY3kocmVnaXN0cmFi
bGVEb21haW4sIGhpZ2hBY2N1cmFjeVNob3VsZEJlRW5hYmxlZCksIDApOwogfQogCi12b2lkIFdl
Ykdlb2xvY2F0aW9uTWFuYWdlcjo6ZGlkQ2hhbmdlUG9zaXRpb24oY29uc3QgR2VvbG9jYXRpb25Q
b3NpdGlvbkRhdGEmIHBvc2l0aW9uKQordm9pZCBXZWJHZW9sb2NhdGlvbk1hbmFnZXI6OmRpZENo
YW5nZVBvc2l0aW9uKGNvbnN0IFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluJiByZWdpc3RyYWJs
ZURvbWFpbiwgY29uc3QgR2VvbG9jYXRpb25Qb3NpdGlvbkRhdGEmIHBvc2l0aW9uKQogewogI2lm
IEVOQUJMRShHRU9MT0NBVElPTikKLSAgICBmb3IgKGF1dG8mIHBhZ2UgOiBjb3B5VG9WZWN0b3Io
bV9wYWdlU2V0KSkgewotICAgICAgICBpZiAocGFnZS0+Y29yZVBhZ2UoKSkKLSAgICAgICAgICAg
IEdlb2xvY2F0aW9uQ29udHJvbGxlcjo6ZnJvbShwYWdlLT5jb3JlUGFnZSgpKS0+cG9zaXRpb25D
aGFuZ2VkKHBvc2l0aW9uKTsKKyAgICBpZiAoYXV0byBpdCA9IG1fcGFnZVNldHMuZmluZChyZWdp
c3RyYWJsZURvbWFpbik7IGl0ICE9IG1fcGFnZVNldHMuZW5kKCkpIHsKKyAgICAgICAgZm9yIChh
dXRvJiBwYWdlIDogY29weVRvVmVjdG9yKGl0LT52YWx1ZS5wYWdlU2V0KSkgeworICAgICAgICAg
ICAgaWYgKHBhZ2UtPmNvcmVQYWdlKCkpCisgICAgICAgICAgICAgICAgR2VvbG9jYXRpb25Db250
cm9sbGVyOjpmcm9tKHBhZ2UtPmNvcmVQYWdlKCkpLT5wb3NpdGlvbkNoYW5nZWQocG9zaXRpb24p
OworICAgICAgICB9CiAgICAgfQogI2Vsc2UKKyAgICBVTlVTRURfUEFSQU0ocmVnaXN0cmFibGVE
b21haW4pOwogICAgIFVOVVNFRF9QQVJBTShwb3NpdGlvbik7CiAjZW5kaWYgLy8gRU5BQkxFKEdF
T0xPQ0FUSU9OKQogfQogCi12b2lkIFdlYkdlb2xvY2F0aW9uTWFuYWdlcjo6ZGlkRmFpbFRvRGV0
ZXJtaW5lUG9zaXRpb24oY29uc3QgU3RyaW5nJiBlcnJvck1lc3NhZ2UpCit2b2lkIFdlYkdlb2xv
Y2F0aW9uTWFuYWdlcjo6ZGlkRmFpbFRvRGV0ZXJtaW5lUG9zaXRpb24oY29uc3QgV2ViQ29yZTo6
UmVnaXN0cmFibGVEb21haW4mIHJlZ2lzdHJhYmxlRG9tYWluLCBjb25zdCBTdHJpbmcmIGVycm9y
TWVzc2FnZSkKIHsKICNpZiBFTkFCTEUoR0VPTE9DQVRJT04pCi0gICAgLy8gRklYTUU6IEFkZCBs
b2NhbGl6ZWQgZXJyb3Igc3RyaW5nLgotICAgIGF1dG8gZXJyb3IgPSBHZW9sb2NhdGlvbkVycm9y
OjpjcmVhdGUoR2VvbG9jYXRpb25FcnJvcjo6UG9zaXRpb25VbmF2YWlsYWJsZSwgZXJyb3JNZXNz
YWdlKTsKLQotICAgIGZvciAoYXV0byYgcGFnZSA6IGNvcHlUb1ZlY3RvcihtX3BhZ2VTZXQpKSB7
Ci0gICAgICAgIGlmIChwYWdlLT5jb3JlUGFnZSgpKQotICAgICAgICAgICAgR2VvbG9jYXRpb25D
b250cm9sbGVyOjpmcm9tKHBhZ2UtPmNvcmVQYWdlKCkpLT5lcnJvck9jY3VycmVkKGVycm9yLmdl
dCgpKTsKKyAgICBpZiAoYXV0byBpdCA9IG1fcGFnZVNldHMuZmluZChyZWdpc3RyYWJsZURvbWFp
bik7IGl0ICE9IG1fcGFnZVNldHMuZW5kKCkpIHsKKyAgICAgICAgLy8gRklYTUU6IEFkZCBsb2Nh
bGl6ZWQgZXJyb3Igc3RyaW5nLgorICAgICAgICBhdXRvIGVycm9yID0gR2VvbG9jYXRpb25FcnJv
cjo6Y3JlYXRlKEdlb2xvY2F0aW9uRXJyb3I6OlBvc2l0aW9uVW5hdmFpbGFibGUsIGVycm9yTWVz
c2FnZSk7CisKKyAgICAgICAgZm9yIChhdXRvJiBwYWdlIDogY29weVRvVmVjdG9yKGl0LT52YWx1
ZS5wYWdlU2V0KSkgeworICAgICAgICAgICAgaWYgKHBhZ2UtPmNvcmVQYWdlKCkpCisgICAgICAg
ICAgICAgICAgR2VvbG9jYXRpb25Db250cm9sbGVyOjpmcm9tKHBhZ2UtPmNvcmVQYWdlKCkpLT5l
cnJvck9jY3VycmVkKGVycm9yLmdldCgpKTsKKyAgICAgICAgfQogICAgIH0KICNlbHNlCisgICAg
VU5VU0VEX1BBUkFNKHJlZ2lzdHJhYmxlRG9tYWluKTsKICAgICBVTlVTRURfUEFSQU0oZXJyb3JN
ZXNzYWdlKTsKICNlbmRpZiAvLyBFTkFCTEUoR0VPTE9DQVRJT04pCiB9CiAKLSNpZiBQTEFURk9S
TShJT1NfRkFNSUxZKQotdm9pZCBXZWJHZW9sb2NhdGlvbk1hbmFnZXI6OnJlc2V0UGVybWlzc2lv
bnMoKQorYm9vbCBXZWJHZW9sb2NhdGlvbk1hbmFnZXI6OmlzVXBkYXRpbmcoY29uc3QgUGFnZVNl
dHMmIHBhZ2VTZXRzKSBjb25zdAogewotICAgIG1fcHJvY2Vzcy5yZXNldEFsbEdlb2xvY2F0aW9u
UGVybWlzc2lvbnMoKTsKKyAgICByZXR1cm4gIXBhZ2VTZXRzLnBhZ2VTZXQuY29tcHV0ZXNFbXB0
eSgpOwogfQotI2VuZGlmIC8vIFBMQVRGT1JNKElPU19GQU1JTFkpCiAKLWJvb2wgV2ViR2VvbG9j
YXRpb25NYW5hZ2VyOjppc1VwZGF0aW5nKCkgY29uc3QKK2Jvb2wgV2ViR2VvbG9jYXRpb25NYW5h
Z2VyOjppc0hpZ2hBY2N1cmFjeUVuYWJsZWQoY29uc3QgUGFnZVNldHMmIHBhZ2VTZXRzKSBjb25z
dAogewotICAgIHJldHVybiAhbV9wYWdlU2V0LmNvbXB1dGVzRW1wdHkoKTsKKyAgICByZXR1cm4g
IXBhZ2VTZXRzLmhpZ2hBY2N1cmFjeVBhZ2VTZXQuY29tcHV0ZXNFbXB0eSgpOwogfQogCi1ib29s
IFdlYkdlb2xvY2F0aW9uTWFuYWdlcjo6aXNIaWdoQWNjdXJhY3lFbmFibGVkKCkgY29uc3QKKyNp
ZiBQTEFURk9STShJT1NfRkFNSUxZKQordm9pZCBXZWJHZW9sb2NhdGlvbk1hbmFnZXI6OnJlc2V0
UGVybWlzc2lvbnMoY29uc3QgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4mIHJlZ2lzdHJhYmxl
RG9tYWluKQogewotICAgIHJldHVybiAhbV9oaWdoQWNjdXJhY3lQYWdlU2V0LmNvbXB1dGVzRW1w
dHkoKTsKKyAgICBhdXRvIGl0ID0gbV9wYWdlU2V0cy5maW5kKHJlZ2lzdHJhYmxlRG9tYWluKTsK
KyAgICBpZiAoaXQgIT0gbV9wYWdlU2V0cy5lbmQoKSkKKyAgICAgICAgcmV0dXJuOworCisgICAg
Zm9yIChhdXRvJiBwYWdlIDogY29weVRvVmVjdG9yKGl0LT52YWx1ZS5wYWdlU2V0KSkgeworICAg
ICAgICBpZiAoYXV0byogbWFpbkZyYW1lID0gcGFnZS0+Y29yZVBhZ2UoKSA/ICZwYWdlLT5jb3Jl
UGFnZSgpLT5tYWluRnJhbWUoKSA6IG51bGxwdHIpCisgICAgICAgICAgICBtYWluRnJhbWUtPnJl
c2V0QWxsR2VvbG9jYXRpb25QZXJtaXNzaW9uKCk7CisgICAgfQogfQorI2VuZGlmIC8vIFBMQVRG
T1JNKElPU19GQU1JTFkpCiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dlb2xvY2F0aW9uL1dlYkdlb2xvY2F0aW9uTWFuYWdlci5o
IGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dlb2xvY2F0aW9uL1dlYkdlb2xvY2F0aW9uTWFu
YWdlci5oCmluZGV4IDQ0ODM1OTYzNTg3ODIxOTdjY2JhNTkyOGVmZTYyNTE1MjZjMTg1MTUuLmNi
NjU4OGM2ZTcxODhiZWZiZDU1MTIzZDRhNTU5YjJiMGIzMWE5M2EgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9HZW9sb2NhdGlvbi9XZWJHZW9sb2NhdGlvbk1hbmFnZXIuaAor
KysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR2VvbG9jYXRpb24vV2ViR2VvbG9jYXRpb25N
YW5hZ2VyLmgKQEAgLTI4LDYgKzI4LDcgQEAKICNpbmNsdWRlICJNZXNzYWdlUmVjZWl2ZXIuaCIK
ICNpbmNsdWRlICJXZWJHZW9sb2NhdGlvblBvc2l0aW9uLmgiCiAjaW5jbHVkZSAiV2ViUHJvY2Vz
c1N1cHBsZW1lbnQuaCIKKyNpbmNsdWRlIDxXZWJDb3JlL1JlZ2lzdHJhYmxlRG9tYWluLmg+CiAj
aW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KICNpbmNsdWRlIDx3dGYvTm9uY29weWFibGUuaD4KICNp
bmNsdWRlIDx3dGYvV2Vha0hhc2hTZXQuaD4KQEAgLTQ3LDMxICs0OCwzNCBAQCBjbGFzcyBXZWJH
ZW9sb2NhdGlvbk1hbmFnZXIgOiBwdWJsaWMgV2ViUHJvY2Vzc1N1cHBsZW1lbnQsIHB1YmxpYyBJ
UEM6Ok1lc3NhZ2VSZQogICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKFdlYkdlb2xvY2F0aW9uTWFu
YWdlcik7CiBwdWJsaWM6CiAgICAgZXhwbGljaXQgV2ViR2VvbG9jYXRpb25NYW5hZ2VyKFdlYlBy
b2Nlc3MmKTsKKyAgICB+V2ViR2VvbG9jYXRpb25NYW5hZ2VyKCk7CiAKICAgICBzdGF0aWMgY29u
c3QgY2hhciogc3VwcGxlbWVudE5hbWUoKTsKIAotICAgIHZvaWQgcmVnaXN0ZXJXZWJQYWdlKFdl
YlBhZ2UmLCBjb25zdCBTdHJpbmcmIGF1dGhvcml6YXRpb25Ub2tlbik7CisgICAgdm9pZCByZWdp
c3RlcldlYlBhZ2UoV2ViUGFnZSYsIGNvbnN0IFN0cmluZyYgYXV0aG9yaXphdGlvblRva2VuLCBi
b29sIG5lZWRzSGlnaEFjY3VyYWN5KTsKICAgICB2b2lkIHVucmVnaXN0ZXJXZWJQYWdlKFdlYlBh
Z2UmKTsKICAgICB2b2lkIHNldEVuYWJsZUhpZ2hBY2N1cmFjeUZvclBhZ2UoV2ViUGFnZSYsIGJv
b2wpOwogCi0gICAgdm9pZCByZXF1ZXN0UGVybWlzc2lvbihXZWJDb3JlOjpHZW9sb2NhdGlvbiYp
OwotCiBwcml2YXRlOgogICAgIC8vIElQQzo6TWVzc2FnZVJlY2VpdmVyCiAgICAgdm9pZCBkaWRS
ZWNlaXZlTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6OkRlY29kZXImKSBvdmVycmlkZTsK
IAotICAgIGJvb2wgaXNVcGRhdGluZygpIGNvbnN0OwotICAgIGJvb2wgaXNIaWdoQWNjdXJhY3lF
bmFibGVkKCkgY29uc3Q7Ci0KLSAgICB2b2lkIGRpZENoYW5nZVBvc2l0aW9uKGNvbnN0IFdlYkNv
cmU6Okdlb2xvY2F0aW9uUG9zaXRpb25EYXRhJik7Ci0gICAgdm9pZCBkaWRGYWlsVG9EZXRlcm1p
bmVQb3NpdGlvbihjb25zdCBTdHJpbmcmIGVycm9yTWVzc2FnZSk7CisgICAgdm9pZCBkaWRDaGFu
Z2VQb3NpdGlvbihjb25zdCBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiYsIGNvbnN0IFdlYkNv
cmU6Okdlb2xvY2F0aW9uUG9zaXRpb25EYXRhJik7CisgICAgdm9pZCBkaWRGYWlsVG9EZXRlcm1p
bmVQb3NpdGlvbihjb25zdCBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiYsIGNvbnN0IFN0cmlu
ZyYgZXJyb3JNZXNzYWdlKTsKICNpZiBQTEFURk9STShJT1NfRkFNSUxZKQotICAgIHZvaWQgcmVz
ZXRQZXJtaXNzaW9ucygpOworICAgIHZvaWQgcmVzZXRQZXJtaXNzaW9ucyhjb25zdCBXZWJDb3Jl
OjpSZWdpc3RyYWJsZURvbWFpbiYpOwogI2VuZGlmIC8vIFBMQVRGT1JNKElPU19GQU1JTFkpCiAK
KyAgICBzdHJ1Y3QgUGFnZVNldHMgeworICAgICAgICBXZWFrSGFzaFNldDxXZWJQYWdlPiBwYWdl
U2V0OworICAgICAgICBXZWFrSGFzaFNldDxXZWJQYWdlPiBoaWdoQWNjdXJhY3lQYWdlU2V0Owor
ICAgIH07CisgICAgYm9vbCBpc1VwZGF0aW5nKGNvbnN0IFBhZ2VTZXRzJikgY29uc3Q7CisgICAg
Ym9vbCBpc0hpZ2hBY2N1cmFjeUVuYWJsZWQoY29uc3QgUGFnZVNldHMmKSBjb25zdDsKKwogICAg
IFdlYlByb2Nlc3MmIG1fcHJvY2VzczsKLSAgICBXZWFrSGFzaFNldDxXZWJQYWdlPiBtX3BhZ2VT
ZXQ7Ci0gICAgV2Vha0hhc2hTZXQ8V2ViUGFnZT4gbV9oaWdoQWNjdXJhY3lQYWdlU2V0OworICAg
IEhhc2hNYXA8V2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4sIFBhZ2VTZXRzPiBtX3BhZ2VTZXRz
OworICAgIEhhc2hNYXA8V2ViUGFnZSosIFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluPiBtX3Bh
Z2VUb1JlZ2lzdHJhYmxlRG9tYWluOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR2VvbG9jYXRpb24vV2ViR2VvbG9jYXRp
b25NYW5hZ2VyLm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dlb2xvY2F0
aW9uL1dlYkdlb2xvY2F0aW9uTWFuYWdlci5tZXNzYWdlcy5pbgppbmRleCA3OWYzYjRjZTRlZmNh
ZjM0ODg1N2Q5OTMzMjUzZDg5NTRmMGYxYjg3Li42ZmNjNjBkMmUwOGUyNmVhYjczYzFmNzFjZDg4
NDJkYzUxMDUyZDE4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR2VvbG9j
YXRpb24vV2ViR2VvbG9jYXRpb25NYW5hZ2VyLm1lc3NhZ2VzLmluCisrKyBiL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9HZW9sb2NhdGlvbi9XZWJHZW9sb2NhdGlvbk1hbmFnZXIubWVzc2FnZXMu
aW4KQEAgLTIxLDkgKzIxLDkgQEAKICMgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KIAogbWVzc2FnZXMgLT4gV2ViR2Vv
bG9jYXRpb25NYW5hZ2VyIE5vdFJlZkNvdW50ZWQgewotICAgIERpZENoYW5nZVBvc2l0aW9uKFdl
YkNvcmU6Okdlb2xvY2F0aW9uUG9zaXRpb25EYXRhIHBvc2l0aW9uKTsKLSAgICBEaWRGYWlsVG9E
ZXRlcm1pbmVQb3NpdGlvbihTdHJpbmcgZXJyb3JNZXNzYWdlKTsKKyAgICBEaWRDaGFuZ2VQb3Np
dGlvbihXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiByZWdpc3RyYWJsZURvbWFpbiwgV2ViQ29y
ZTo6R2VvbG9jYXRpb25Qb3NpdGlvbkRhdGEgcG9zaXRpb24pOworICAgIERpZEZhaWxUb0RldGVy
bWluZVBvc2l0aW9uKFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluIHJlZ2lzdHJhYmxlRG9tYWlu
LCBTdHJpbmcgZXJyb3JNZXNzYWdlKTsKICNpZiBQTEFURk9STShJT1NfRkFNSUxZKQotICAgIFJl
c2V0UGVybWlzc2lvbnMoKTsKKyAgICBSZXNldFBlcm1pc3Npb25zKFdlYkNvcmU6OlJlZ2lzdHJh
YmxlRG9tYWluIHJlZ2lzdHJhYmxlRG9tYWluKTsKICNlbmRpZgogfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkdlb2xvY2F0aW9uQ2xpZW50
LmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJHZW9sb2Nh
dGlvbkNsaWVudC5jcHAKaW5kZXggZWEwMmYyYWMxNmY3MzFiZjU2NDJmODY3OGQ4NmE0OTgxMWQ4
YzM4Ni4uZDE4ZGY3ZWZhZjU2ZWZjZmM4ZDE2OTljOTFjZDI2YjY4OWJjODI2YSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkdlb2xvY2F0aW9u
Q2xpZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQv
V2ViR2VvbG9jYXRpb25DbGllbnQuY3BwCkBAIC00OCw5ICs0OCw5IEBAIHZvaWQgV2ViR2VvbG9j
YXRpb25DbGllbnQ6Omdlb2xvY2F0aW9uRGVzdHJveWVkKCkKICAgICBkZWxldGUgdGhpczsKIH0K
IAotdm9pZCBXZWJHZW9sb2NhdGlvbkNsaWVudDo6c3RhcnRVcGRhdGluZyhjb25zdCBTdHJpbmcm
IGF1dGhvcml6YXRpb25Ub2tlbikKK3ZvaWQgV2ViR2VvbG9jYXRpb25DbGllbnQ6OnN0YXJ0VXBk
YXRpbmcoY29uc3QgU3RyaW5nJiBhdXRob3JpemF0aW9uVG9rZW4sIGJvb2wgbmVlZHNIaWdoQWNj
dXJhY3kpCiB7Ci0gICAgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkuc3VwcGxlbWVudDxXZWJHZW9s
b2NhdGlvbk1hbmFnZXI+KCktPnJlZ2lzdGVyV2ViUGFnZShtX3BhZ2UsIGF1dGhvcml6YXRpb25U
b2tlbik7CisgICAgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkuc3VwcGxlbWVudDxXZWJHZW9sb2Nh
dGlvbk1hbmFnZXI+KCktPnJlZ2lzdGVyV2ViUGFnZShtX3BhZ2UsIGF1dGhvcml6YXRpb25Ub2tl
biwgbmVlZHNIaWdoQWNjdXJhY3kpOwogfQogCiB2b2lkIFdlYkdlb2xvY2F0aW9uQ2xpZW50Ojpz
dG9wVXBkYXRpbmcoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNv
cmVTdXBwb3J0L1dlYkdlb2xvY2F0aW9uQ2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvV2ViQ29yZVN1cHBvcnQvV2ViR2VvbG9jYXRpb25DbGllbnQuaAppbmRleCBiMTY4MTY3NDg5
NjIyNTQ3ZWM5NGU2Nzk4ZmI2OWRkOGZhNmQwMTFjLi42NWVjMGU5MzU0MjgzZDVmYTc3YWYxMGI0
ZTE4MGI4NzEyZmFlZjA3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2Vi
Q29yZVN1cHBvcnQvV2ViR2VvbG9jYXRpb25DbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViR2VvbG9jYXRpb25DbGllbnQuaApAQCAtMzEsNyAr
MzEsNyBAQCBuYW1lc3BhY2UgV2ViS2l0IHsKIAogY2xhc3MgV2ViUGFnZTsKIAotY2xhc3MgV2Vi
R2VvbG9jYXRpb25DbGllbnQgOiBwdWJsaWMgV2ViQ29yZTo6R2VvbG9jYXRpb25DbGllbnQgewor
Y2xhc3MgV2ViR2VvbG9jYXRpb25DbGllbnQgZmluYWwgOiBwdWJsaWMgV2ViQ29yZTo6R2VvbG9j
YXRpb25DbGllbnQgewogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAg
IFdlYkdlb2xvY2F0aW9uQ2xpZW50KFdlYlBhZ2UmIHBhZ2UpCkBAIC00MiwxNyArNDIsMTcgQEAg
cHVibGljOgogICAgIHZpcnR1YWwgfldlYkdlb2xvY2F0aW9uQ2xpZW50KCk7CiAKIHByaXZhdGU6
Ci0gICAgdm9pZCBnZW9sb2NhdGlvbkRlc3Ryb3llZCgpIG92ZXJyaWRlOworICAgIHZvaWQgZ2Vv
bG9jYXRpb25EZXN0cm95ZWQoKSBmaW5hbDsKIAotICAgIHZvaWQgc3RhcnRVcGRhdGluZyhjb25z
dCBTdHJpbmcmIGF1dGhvcml6YXRpb25Ub2tlbikgb3ZlcnJpZGU7Ci0gICAgdm9pZCBzdG9wVXBk
YXRpbmcoKSBvdmVycmlkZTsKLSAgICB2b2lkIHJldm9rZUF1dGhvcml6YXRpb25Ub2tlbihjb25z
dCBTdHJpbmcmKSBvdmVycmlkZTsKLSAgICB2b2lkIHNldEVuYWJsZUhpZ2hBY2N1cmFjeShib29s
KSBvdmVycmlkZTsKKyAgICB2b2lkIHN0YXJ0VXBkYXRpbmcoY29uc3QgU3RyaW5nJiBhdXRob3Jp
emF0aW9uVG9rZW4sIGJvb2wgbmVlZHNIaWdoQWNjdXJhY3kpIGZpbmFsOworICAgIHZvaWQgc3Rv
cFVwZGF0aW5nKCkgZmluYWw7CisgICAgdm9pZCByZXZva2VBdXRob3JpemF0aW9uVG9rZW4oY29u
c3QgU3RyaW5nJikgZmluYWw7CisgICAgdm9pZCBzZXRFbmFibGVIaWdoQWNjdXJhY3koYm9vbCkg
ZmluYWw7CiAKLSAgICBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6Okdlb2xvY2F0aW9uUG9zaXRpb25E
YXRhPiBsYXN0UG9zaXRpb24oKSBvdmVycmlkZTsKKyAgICBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6
Okdlb2xvY2F0aW9uUG9zaXRpb25EYXRhPiBsYXN0UG9zaXRpb24oKSBmaW5hbDsKIAotICAgIHZv
aWQgcmVxdWVzdFBlcm1pc3Npb24oV2ViQ29yZTo6R2VvbG9jYXRpb24mKSBvdmVycmlkZTsKLSAg
ICB2b2lkIGNhbmNlbFBlcm1pc3Npb25SZXF1ZXN0KFdlYkNvcmU6Okdlb2xvY2F0aW9uJikgb3Zl
cnJpZGU7CisgICAgdm9pZCByZXF1ZXN0UGVybWlzc2lvbihXZWJDb3JlOjpHZW9sb2NhdGlvbiYp
IGZpbmFsOworICAgIHZvaWQgY2FuY2VsUGVybWlzc2lvblJlcXVlc3QoV2ViQ29yZTo6R2VvbG9j
YXRpb24mKSBmaW5hbDsKIAogICAgIFdlYlBhZ2UmIG1fcGFnZTsKIH07CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvV2ViUHJvY2Vzcy5jcHAKaW5kZXggZGQ0NWI0NTg4YmY5ZGQxMjRlMThmYWE5NWEz
MjZlZDMxOTMxYTQ1Ny4uNzk5NjEzZDM3NzQyMzYzYmZiZGNkOTUyOTc5OTYyMjA2ZjAyMjhhOCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmNwcApAQCAtMTUyNywxNiArMTUy
Nyw2IEBAIHZvaWQgV2ViUHJvY2Vzczo6cGFnZUFjdGl2aXR5U3RhdGVEaWRDaGFuZ2UoUGFnZUlk
ZW50aWZpZXIsIE9wdGlvblNldDxXZWJDb3JlOjpBCiAgICAgfQogfQogCi0jaWYgUExBVEZPUk0o
SU9TX0ZBTUlMWSkKLXZvaWQgV2ViUHJvY2Vzczo6cmVzZXRBbGxHZW9sb2NhdGlvblBlcm1pc3Np
b25zKCkKLXsKLSAgICBmb3IgKGF1dG8mIHBhZ2UgOiBtX3BhZ2VNYXAudmFsdWVzKCkpIHsKLSAg
ICAgICAgaWYgKEZyYW1lKiBtYWluRnJhbWUgPSBwYWdlLT5tYWluRnJhbWUoKSkKLSAgICAgICAg
ICAgIG1haW5GcmFtZS0+cmVzZXRBbGxHZW9sb2NhdGlvblBlcm1pc3Npb24oKTsKLSAgICB9Ci19
Ci0jZW5kaWYKLQogdm9pZCBXZWJQcm9jZXNzOjpwcmVwYXJlVG9TdXNwZW5kKGJvb2wgaXNTdXNw
ZW5zaW9uSW1taW5lbnQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBjb21wbGV0aW9uSGFu
ZGxlcikKIHsKICAgICBXRUJQUk9DRVNTX1JFTEVBU0VfTE9HKFByb2Nlc3NTdXNwZW5zaW9uLCAi
cHJlcGFyZVRvU3VzcGVuZDogaXNTdXNwZW5zaW9uSW1taW5lbnQ9JWQiLCBpc1N1c3BlbnNpb25J
bW1pbmVudCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vz
cy5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuaAppbmRleCBjNWRkMjI1
ZGMxYjcxZGE5Y2RkNGVlZGJhMGEwN2U3NjE3ODE1NzVlLi41OTVhZjBiOTc0MTI5MGRhNmM3MzRh
MDg4NmI4MjRkMjNiMWVlNTdlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
V2ViUHJvY2Vzcy5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmgK
QEAgLTMxMCwxMCArMzEwLDYgQEAgcHVibGljOgogCiAgICAgdm9pZCBpc0pJVEVuYWJsZWQoQ29t
cGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJik7CiAKLSNpZiBQTEFURk9STShJT1NfRkFNSUxZ
KQotICAgIHZvaWQgcmVzZXRBbGxHZW9sb2NhdGlvblBlcm1pc3Npb25zKCk7Ci0jZW5kaWYKLQog
I2lmIFBMQVRGT1JNKFdBWUxBTkQpCiAgICAgV2F5bGFuZENvbXBvc2l0b3JEaXNwbGF5KiB3YXls
YW5kQ29tcG9zaXRvckRpc3BsYXkoKSBjb25zdCB7IHJldHVybiBtX3dheWxhbmRDb21wb3NpdG9y
RGlzcGxheS5nZXQoKTsgfQogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5
L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJHZW9sb2NhdGlvbkNsaWVudC5oIGIvU291cmNlL1dlYktp
dExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViR2VvbG9jYXRpb25DbGllbnQuaAppbmRleCA3
N2MyODI4ZDg1OTUzNjM1YjY0YzRjODk5OTkwYTBhNjQ4MTcxYjZjLi5iMDdjNzkwM2QyOTJhOTMz
OTFlNWM0MGFlZGQ2NWRlZGJhZjhjNWYxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5
L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJHZW9sb2NhdGlvbkNsaWVudC5oCisrKyBiL1NvdXJjZS9X
ZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkdlb2xvY2F0aW9uQ2xpZW50LmgKQEAg
LTM5LDcgKzM5LDcgQEAgcHVibGljOgogICAgIFdlYlZpZXcgKndlYlZpZXcoKSB7IHJldHVybiBt
X3dlYlZpZXc7IH0KIAogICAgIHZvaWQgZ2VvbG9jYXRpb25EZXN0cm95ZWQoKSBvdmVycmlkZTsK
LSAgICB2b2lkIHN0YXJ0VXBkYXRpbmcoY29uc3QgU3RyaW5nJiBhdXRob3JpemF0aW9uVG9rZW4p
IG92ZXJyaWRlOworICAgIHZvaWQgc3RhcnRVcGRhdGluZyhjb25zdCBTdHJpbmcmIGF1dGhvcml6
YXRpb25Ub2tlbiwgYm9vbCBlbmFibGVIaWdoQWNjdXJhY3kpIG92ZXJyaWRlOwogICAgIHZvaWQg
c3RvcFVwZGF0aW5nKCkgb3ZlcnJpZGU7CiAjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICAv
LyBGSVhNRTogdW5pZnkgdGhpcyB3aXRoIE1hYyBvbiBPcGVuU291cmNlLgpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViR2VvbG9jYXRpb25DbGll
bnQubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJHZW9sb2Nh
dGlvbkNsaWVudC5tbQppbmRleCBlNzg4YTU3ZGQ2ZjgwN2U3YjI1Yzc0MmJhODAxOTM1N2EyNzM0
ZDM4Li5hOGI4NTIxZTJkYTQ3MThkYzE0YjQzNzBiMWE1YjRiOGQ2MzI4NTg5IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJHZW9sb2NhdGlvbkNs
aWVudC5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJH
ZW9sb2NhdGlvbkNsaWVudC5tbQpAQCAtODMsOSArODMsMTYgQEAgdm9pZCBXZWJHZW9sb2NhdGlv
bkNsaWVudDo6Z2VvbG9jYXRpb25EZXN0cm95ZWQoKQogICAgIGRlbGV0ZSB0aGlzOwogfQogCi12
b2lkIFdlYkdlb2xvY2F0aW9uQ2xpZW50OjpzdGFydFVwZGF0aW5nKGNvbnN0IFN0cmluZyYgYXV0
aG9yaXphdGlvblRva2VuKQordm9pZCBXZWJHZW9sb2NhdGlvbkNsaWVudDo6c3RhcnRVcGRhdGlu
Zyhjb25zdCBTdHJpbmcmIGF1dGhvcml6YXRpb25Ub2tlbiwgYm9vbCBlbmFibGVIaWdoQWNjdXJh
Y3kpCiB7CiAgICAgVU5VU0VEX1BBUkFNKGF1dGhvcml6YXRpb25Ub2tlbik7CisjaWYgUExBVEZP
Uk0oSU9TX0ZBTUlMWSkKKyAgICBpZiAoZW5hYmxlSGlnaEFjY3VyYWN5KQorICAgICAgICBzZXRF
bmFibGVIaWdoQWNjdXJhY3kodHJ1ZSk7CisjZWxzZQorICAgIFVOVVNFRF9QQVJBTShlbmFibGVI
aWdoQWNjdXJhY3kpOworI2VuZGlmCisKICAgICBbW21fd2ViVmlldyBfZ2VvbG9jYXRpb25Qcm92
aWRlcl0gcmVnaXN0ZXJXZWJWaWV3Om1fd2ViVmlld107CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXRMZWdhY3kvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkdlb2xvY2F0aW9uQ2xpZW50LmNw
cCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkdlb2xvY2F0aW9u
Q2xpZW50LmNwcAppbmRleCBlMWZjYTI3NzI0OTYxNTRhNGUwNzBlNGRmZGE3ZTc3ZTk3MzU4MmMx
Li5hYzU0NTE0YzY0MmVhMGU1ZjhhZjMzNjllMWJiYmFlMGMzOTA3MWI3IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJHZW9sb2NhdGlvbkNsaWVu
dC5jcHAKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViQ29yZVN1cHBvcnQvV2ViR2Vv
bG9jYXRpb25DbGllbnQuY3BwCkBAIC00OCw5ICs0OCwxMCBAQCB2b2lkIFdlYkdlb2xvY2F0aW9u
Q2xpZW50OjpnZW9sb2NhdGlvbkRlc3Ryb3llZCgpCiAgICAgZGVsZXRlIHRoaXM7CiB9CiAKLXZv
aWQgV2ViR2VvbG9jYXRpb25DbGllbnQ6OnN0YXJ0VXBkYXRpbmcoY29uc3QgU3RyaW5nJiBhdXRo
b3JpemF0aW9uVG9rZW4pCit2b2lkIFdlYkdlb2xvY2F0aW9uQ2xpZW50OjpzdGFydFVwZGF0aW5n
KGNvbnN0IFN0cmluZyYgYXV0aG9yaXphdGlvblRva2VuLCBib29sIGVuYWJsZUhpZ2hBY2N1cmFj
eSkKIHsKICAgICBVTlVTRURfUEFSQU0oYXV0aG9yaXphdGlvblRva2VuKTsKKyAgICBVTlVTRURf
UEFSQU0oZW5hYmxlSGlnaEFjY3VyYWN5KTsKICAgICBDT01QdHI8SVdlYkdlb2xvY2F0aW9uUHJv
dmlkZXI+IHByb3ZpZGVyOwogICAgIGlmIChGQUlMRUQobV93ZWJWaWV3LT5nZW9sb2NhdGlvblBy
b3ZpZGVyKCZwcm92aWRlcikpKQogICAgICAgICByZXR1cm47CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0TGVnYWN5L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJHZW9sb2NhdGlvbkNsaWVudC5oIGIv
U291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViQ29yZVN1cHBvcnQvV2ViR2VvbG9jYXRpb25DbGll
bnQuaAppbmRleCAxOTU3NDE3YjU1ZDdlNWQyZjliNzFlNWM5ZDljMzAzZGZlZjRlMTg2Li41Yjhl
OTQ0NGYyMWZlZDQzZWRmMjU5MWEyYmExNWRhM2JkNDRmNDRhIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0TGVnYWN5L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJHZW9sb2NhdGlvbkNsaWVudC5oCisr
KyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkdlb2xvY2F0aW9u
Q2xpZW50LmgKQEAgLTQxLDcgKzQxLDcgQEAgcHVibGljOgogICAgIFdlYkdlb2xvY2F0aW9uQ2xp
ZW50KFdlYlZpZXcqKTsKIAogICAgIHZvaWQgZ2VvbG9jYXRpb25EZXN0cm95ZWQoKSBmaW5hbDsK
LSAgICB2b2lkIHN0YXJ0VXBkYXRpbmcoY29uc3QgU3RyaW5nJiBhdXRob3JpemF0aW9uVG9rZW4p
IGZpbmFsOworICAgIHZvaWQgc3RhcnRVcGRhdGluZyhjb25zdCBTdHJpbmcmIGF1dGhvcml6YXRp
b25Ub2tlbiwgYm9vbCBlbmFibGVIaWdoQWNjdXJhY3kpIGZpbmFsOwogICAgIHZvaWQgc3RvcFVw
ZGF0aW5nKCkgZmluYWw7CiAgICAgdm9pZCBzZXRFbmFibGVIaWdoQWNjdXJhY3koYm9vbCkgZmlu
YWwgeyB9CiAgICAgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpHZW9sb2NhdGlvblBvc2l0aW9uRGF0
YT4gbGFzdFBvc2l0aW9uKCkgZmluYWw7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>452105</attachid>
            <date>2022-02-15 15:51:50 -0800</date>
            <delta_ts>2022-02-15 16:16:29 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-236566-20220215155149.patch</filename>
            <type>text/plain</type>
            <size>111186</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg5ODU2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IGY2MDY5ODliY2RhNjQyMTdkZTJlNzcw
ODM4NmYzNzA2N2ExYThkZTQuLjE4NzM2NzA0OWU1NTRiZmUyMGNjNWM3ZGQ0OThiZjJjZTVjYWNi
MzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMTUgQEAKKzIwMjItMDItMTMgIENocmlzIER1bWV6ICA8Y2R1bWV6
QGFwcGxlLmNvbT4KKworICAgICAgICBEbyBwcmVsaW1pbmFyeSB3b3JrIHRvIHBhc3MgZG9tYWlu
IG5hbWVzIHRvIENvcmVMb2NhdGlvbgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MjM2NTY2CisgICAgICAgIDxyZGFyOi8vODg3NjE0MTM+CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgRGFyaW4gQWRsZXIuCisKKyAgICAgICAgQWRkIGJ1aWxkIHRpbWUgZmxh
ZyBmb3IgcGFzc2luZyB3ZWJzaXRlIGlkZW50aWZpZXJzIHRvIENvcmVMb2NhdGlvbi4KKworICAg
ICAgICAqIHd0Zi9QbGF0Zm9ybUhhdmUuaDoKKwogMjAyMi0wMi0xNSAgUm9iaW4gTW9yaXNzZXQg
IDxybW9yaXNzZXRAYXBwbGUuY29tPgogCiAgICAgICAgIFtXR1NMXSBJbXBsZW1lbnQgZW5vdWdo
IG9mIHRoZSBsZXhlciBmb3IgdGhlIHNpbXBsZXN0IHNoYWRlcnMKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCBjYWM3
ZWMxNzI0OGNjMGM1YzQzYmM5NjUwZGZlODE4YWUxZDY2ZmM3Li44NWFlYWZlZTUzYTNkMmRlZGY4
ZTcxMmUwZjgwNTc2NWEzYjFjY2Q0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VM
b2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNTQgQEAKKzIwMjIt
MDItMTMgIENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KKworICAgICAgICBEbyBwcmVs
aW1pbmFyeSB3b3JrIHRvIHBhc3MgZG9tYWluIG5hbWVzIHRvIENvcmVMb2NhdGlvbgorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjM2NTY2CisgICAgICAg
IDxyZGFyOi8vODg3NjE0MTM+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgRGFyaW4gQWRsZXIuCisK
KyAgICAgICAgRG8gcHJlbGltaW5hcnkgd29yayB0byBwYXNzIGRvbWFpbiBuYW1lcyB0byBDb3Jl
TG9jYXRpb24gd2hlbiB1c2luZyB0aGUgR2VvbG9jYXRpb24gQVBJLgorICAgICAgICBUaGlzIHBp
cGVzIHRoZSBkb21haW4gbmFtZXMgYWxsIHRoZSB3YXkgZnJvbSB0aGUgR2VvbG9jYXRpb24gQVBJ
IHRvIHRoZSBDb3JlTG9jYXRpb24gY2FsbHMKKyAgICAgICAgYnV0IGRvZXNuJ3QgeWV0IHBhc3Mg
dGhlIGRvbWFpbiB0byBDb3JlTG9jYXRpb24gZHVlIHRvIDxyZGFyOi8vODg4MzQzMDE+LiBJIHdp
bGwgZm9sbG93LXVwCisgICAgICAgIG9uY2UgPHJkYXI6Ly84ODgzNDMwMT4gaXMgZml4ZWQuCisK
KyAgICAgICAgKiBNb2R1bGVzL2dlb2xvY2F0aW9uL0dlb2xvY2F0aW9uQ2xpZW50Lmg6CisgICAg
ICAgICogTW9kdWxlcy9nZW9sb2NhdGlvbi9HZW9sb2NhdGlvbkNvbnRyb2xsZXIuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6R2VvbG9jYXRpb25Db250cm9sbGVyOjpkaWROYXZpZ2F0ZVBhZ2UpOgor
ICAgICAgICAoV2ViQ29yZTo6R2VvbG9jYXRpb25Db250cm9sbGVyOjphZGRPYnNlcnZlcik6Cisg
ICAgICAgIChXZWJDb3JlOjpHZW9sb2NhdGlvbkNvbnRyb2xsZXI6OnJlbW92ZU9ic2VydmVyKToK
KyAgICAgICAgKFdlYkNvcmU6Okdlb2xvY2F0aW9uQ29udHJvbGxlcjo6YWN0aXZpdHlTdGF0ZURp
ZENoYW5nZSk6CisgICAgICAgIChXZWJDb3JlOjpHZW9sb2NhdGlvbkNvbnRyb2xsZXI6OnN0YXJ0
VXBkYXRpbmdJZk5lY2Vzc2FyeSk6CisgICAgICAgIChXZWJDb3JlOjpHZW9sb2NhdGlvbkNvbnRy
b2xsZXI6OnN0b3BVcGRhdGluZ0lmTmVjZXNzYXJ5KToKKyAgICAgICAgKiBNb2R1bGVzL2dlb2xv
Y2F0aW9uL0dlb2xvY2F0aW9uQ29udHJvbGxlci5oOgorICAgICAgICAoV2ViQ29yZTo6R2VvbG9j
YXRpb25Db250cm9sbGVyOjpuZWVkc0hpZ2hBY2N1cmFjeSBjb25zdCk6CisgICAgICAgICogTW9k
dWxlcy9nZW9sb2NhdGlvbi9HZW9sb2NhdGlvblBvc2l0aW9uRGF0YS5oOgorICAgICAgICAqIE1v
ZHVsZXMvZ2VvbG9jYXRpb24vaW9zL0dlb2xvY2F0aW9uUG9zaXRpb25EYXRhSU9TLm1tOgorICAg
ICAgICAqIFNvdXJjZXNDb2NvYS50eHQ6CisgICAgICAgICogV2ViQ29yZS54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qOgorICAgICAgICAqIHBhZ2UvUGFnZS5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpQYWdlOjpkaWRDb21taXRMb2FkKToKKyAgICAgICAgKiBwbGF0Zm9ybS9jb2NvYS9Db3JlTG9j
YXRpb25HZW9sb2NhdGlvblByb3ZpZGVyLmg6IENvcGllZCBmcm9tIFNvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvZ2VvbG9jYXRpb24vR2VvbG9jYXRpb25DbGllbnQuaC4KKyAgICAgICAgKiBwbGF0Zm9y
bS9jb2NvYS9Db3JlTG9jYXRpb25HZW9sb2NhdGlvblByb3ZpZGVyLm1tOiBBZGRlZC4KKyAgICAg
ICAgKGlzQXV0aG9yaXphdGlvbkdyYW50ZWQpOgorICAgICAgICAoLVtXZWJDTExvY2F0aW9uTWFu
YWdlciBpbml0V2l0aFdlYnNpdGVJZGVudGlmaWVyOmNsaWVudDpdKToKKyAgICAgICAgKC1bV2Vi
Q0xMb2NhdGlvbk1hbmFnZXIgZGVhbGxvY10pOgorICAgICAgICAoLVtXZWJDTExvY2F0aW9uTWFu
YWdlciBzdGFydF0pOgorICAgICAgICAoLVtXZWJDTExvY2F0aW9uTWFuYWdlciBzdG9wXSk6Cisg
ICAgICAgICgtW1dlYkNMTG9jYXRpb25NYW5hZ2VyIHNldEVuYWJsZUhpZ2hBY2N1cmFjeTpdKToK
KyAgICAgICAgKC1bV2ViQ0xMb2NhdGlvbk1hbmFnZXIgcmVxdWVzdEdlb2xvY2F0aW9uQXV0aG9y
aXphdGlvbl0pOgorICAgICAgICAoLVtXZWJDTExvY2F0aW9uTWFuYWdlciBsb2NhdGlvbk1hbmFn
ZXJEaWRDaGFuZ2VBdXRob3JpemF0aW9uOl0pOgorICAgICAgICAoLVtXZWJDTExvY2F0aW9uTWFu
YWdlciBsb2NhdGlvbk1hbmFnZXI6ZGlkVXBkYXRlTG9jYXRpb25zOl0pOgorICAgICAgICAoLVtX
ZWJDTExvY2F0aW9uTWFuYWdlciBsb2NhdGlvbk1hbmFnZXI6ZGlkRmFpbFdpdGhFcnJvcjpdKToK
KyAgICAgICAgKFdlYkNvcmU6OkNvcmVMb2NhdGlvbkdlb2xvY2F0aW9uUHJvdmlkZXI6OkNvcmVM
b2NhdGlvbkdlb2xvY2F0aW9uUHJvdmlkZXIpOgorICAgICAgICAoV2ViQ29yZTo6Q29yZUxvY2F0
aW9uR2VvbG9jYXRpb25Qcm92aWRlcjo6fkNvcmVMb2NhdGlvbkdlb2xvY2F0aW9uUHJvdmlkZXIp
OgorICAgICAgICAoV2ViQ29yZTo6Q29yZUxvY2F0aW9uR2VvbG9jYXRpb25Qcm92aWRlcjo6c3Rh
cnQpOgorICAgICAgICAoV2ViQ29yZTo6Q29yZUxvY2F0aW9uR2VvbG9jYXRpb25Qcm92aWRlcjo6
c3RvcCk6CisgICAgICAgIChXZWJDb3JlOjpDb3JlTG9jYXRpb25HZW9sb2NhdGlvblByb3ZpZGVy
OjpzZXRFbmFibGVIaWdoQWNjdXJhY3kpOgorICAgICAgICAoV2ViQ29yZTo6Q29yZUxvY2F0aW9u
R2VvbG9jYXRpb25Qcm92aWRlcjo6cmVxdWVzdEF1dGhvcml6YXRpb24pOgorICAgICAgICAqIHBs
YXRmb3JtL21vY2svR2VvbG9jYXRpb25DbGllbnRNb2NrLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
Okdlb2xvY2F0aW9uQ2xpZW50TW9jazo6c3RhcnRVcGRhdGluZyk6CisgICAgICAgICogcGxhdGZv
cm0vbW9jay9HZW9sb2NhdGlvbkNsaWVudE1vY2suaDoKKwogMjAyMi0wMi0xNSAgRnVqaWkgSGly
b25vcmkgIDxIaXJvbm9yaS5GdWppaUBzb255LmNvbT4KIAogICAgICAgICBbVGV4dHVyZU1hcHBl
ckdMXSBkcm9wLXNoYWRvdyBmaWx0ZXIgd2l0aCBibHVyLXJhZGl1cyBkb2Vzbid0IHdvcmsgYXMg
ZXhwZWN0ZWQgaWYgaXQgaXMgdGhlIGxhc3QgZmlsdGVyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDM3OTQxYjFmNzRh
OTVlMTE0ODQ1ZGY4MTVlMjZkMWRjZTM4MDkyYjUuLjhiNzc0MDZkNTMyMmU2N2U2YjYxNDU5Y2Fl
ZTY0ZTA0MjdmZWRjMWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBi
L1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsOTQgQEAKKzIwMjItMDItMTMgIENo
cmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KKworICAgICAgICBEbyBwcmVsaW1pbmFyeSB3
b3JrIHRvIHBhc3MgZG9tYWluIG5hbWVzIHRvIENvcmVMb2NhdGlvbgorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjM2NTY2CisgICAgICAgIDxyZGFyOi8v
ODg3NjE0MTM+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgRGFyaW4gQWRsZXIuCisKKyAgICAgICAg
RG8gcHJlbGltaW5hcnkgd29yayB0byBwYXNzIGRvbWFpbiBuYW1lcyB0byBDb3JlTG9jYXRpb24g
d2hlbiB1c2luZyB0aGUgR2VvbG9jYXRpb24gQVBJLgorICAgICAgICBUaGlzIHBpcGVzIHRoZSBk
b21haW4gbmFtZXMgYWxsIHRoZSB3YXkgZnJvbSB0aGUgR2VvbG9jYXRpb24gQVBJIHRvIHRoZSBD
b3JlTG9jYXRpb24gY2FsbHMKKyAgICAgICAgYnV0IGRvZXNuJ3QgeWV0IHBhc3MgdGhlIGRvbWFp
biB0byBDb3JlTG9jYXRpb24gZHVlIHRvIDxyZGFyOi8vODg4MzQzMDE+LiBJIHdpbGwgZm9sbG93
LXVwCisgICAgICAgIG9uY2UgPHJkYXI6Ly84ODgzNDMwMT4gaXMgZml4ZWQuCisKKyAgICAgICAg
KiBTb3VyY2VzQ29jb2EudHh0OgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQy9XS0dlb2xvY2F0
aW9uTWFuYWdlci5jcHA6CisgICAgICAgIChXS0dlb2xvY2F0aW9uTWFuYWdlclNldFByb3ZpZGVy
KToKKyAgICAgICAgKiBVSVByb2Nlc3MvQ29jb2EvV2ViR2VvbG9jYXRpb25NYW5hZ2VyUHJveHlD
b2NvYS5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViS2l0OjpXZWJHZW9sb2NhdGlvbk1hbmFnZXJQ
cm94eTo6cG9zaXRpb25DaGFuZ2VkKToKKyAgICAgICAgKFdlYktpdDo6V2ViR2VvbG9jYXRpb25N
YW5hZ2VyUHJveHk6OmVycm9yT2NjdXJyZWQpOgorICAgICAgICAoV2ViS2l0OjpXZWJHZW9sb2Nh
dGlvbk1hbmFnZXJQcm94eTo6cmVzZXRHZW9sb2NhdGlvbik6CisgICAgICAgIChXZWJLaXQ6Oldl
Ykdlb2xvY2F0aW9uTWFuYWdlclByb3h5Ojppc1VwZGF0aW5nIGNvbnN0KToKKyAgICAgICAgKFdl
YktpdDo6V2ViR2VvbG9jYXRpb25NYW5hZ2VyUHJveHk6OmlzSGlnaEFjY3VyYWN5RW5hYmxlZCBj
b25zdCk6CisgICAgICAgIChXZWJLaXQ6OldlYkdlb2xvY2F0aW9uTWFuYWdlclByb3h5Ojpwcm92
aWRlclN0YXJ0VXBkYXRpbmcpOgorICAgICAgICAoV2ViS2l0OjpXZWJHZW9sb2NhdGlvbk1hbmFn
ZXJQcm94eTo6cHJvdmlkZXJTdG9wVXBkYXRpbmcpOgorICAgICAgICAoV2ViS2l0OjpXZWJHZW9s
b2NhdGlvbk1hbmFnZXJQcm94eTo6cHJvdmlkZXJTZXRFbmFibGVkSGlnaEFjY3VyYWN5KToKKyAg
ICAgICAgKiBVSVByb2Nlc3MvV2ViR2VvbG9jYXRpb25NYW5hZ2VyUHJveHkuY3BwOgorICAgICAg
ICAoV2ViS2l0OjpXZWJHZW9sb2NhdGlvbk1hbmFnZXJQcm94eTo6V2ViR2VvbG9jYXRpb25NYW5h
Z2VyUHJveHkpOgorICAgICAgICAoV2ViS2l0OjpXZWJHZW9sb2NhdGlvbk1hbmFnZXJQcm94eTo6
cHJvY2Vzc1Bvb2xEZXN0cm95ZWQpOgorICAgICAgICAoV2ViS2l0OjpXZWJHZW9sb2NhdGlvbk1h
bmFnZXJQcm94eTo6cHJvY2Vzc0RpZENsb3NlKToKKyAgICAgICAgKFdlYktpdDo6V2ViR2VvbG9j
YXRpb25NYW5hZ2VyUHJveHk6OnByb3ZpZGVyRGlkQ2hhbmdlUG9zaXRpb24pOgorICAgICAgICAo
V2ViS2l0OjpXZWJHZW9sb2NhdGlvbk1hbmFnZXJQcm94eTo6cHJvdmlkZXJEaWRGYWlsVG9EZXRl
cm1pbmVQb3NpdGlvbik6CisgICAgICAgIChXZWJLaXQ6OldlYkdlb2xvY2F0aW9uTWFuYWdlclBy
b3h5OjpzdGFydFVwZGF0aW5nKToKKyAgICAgICAgKFdlYktpdDo6V2ViR2VvbG9jYXRpb25NYW5h
Z2VyUHJveHk6OnN0b3BVcGRhdGluZyk6CisgICAgICAgIChXZWJLaXQ6OldlYkdlb2xvY2F0aW9u
TWFuYWdlclByb3h5OjpzZXRFbmFibGVIaWdoQWNjdXJhY3kpOgorICAgICAgICAoV2ViS2l0OjpX
ZWJHZW9sb2NhdGlvbk1hbmFnZXJQcm94eTo6c2V0UHJvdmlkZXIpOgorICAgICAgICAoV2ViS2l0
OjpXZWJHZW9sb2NhdGlvbk1hbmFnZXJQcm94eTo6aXNVcGRhdGluZyBjb25zdCk6CisgICAgICAg
IChXZWJLaXQ6OldlYkdlb2xvY2F0aW9uTWFuYWdlclByb3h5Ojppc0hpZ2hBY2N1cmFjeUVuYWJs
ZWQgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpXZWJHZW9sb2NhdGlvbk1hbmFnZXJQcm94eTo6
cHJvdmlkZXJTdGFydFVwZGF0aW5nKToKKyAgICAgICAgKFdlYktpdDo6V2ViR2VvbG9jYXRpb25N
YW5hZ2VyUHJveHk6OnByb3ZpZGVyU3RvcFVwZGF0aW5nKToKKyAgICAgICAgKFdlYktpdDo6V2Vi
R2VvbG9jYXRpb25NYW5hZ2VyUHJveHk6OnByb3ZpZGVyU2V0RW5hYmxlZEhpZ2hBY2N1cmFjeSk6
CisgICAgICAgIChXZWJLaXQ6OldlYkdlb2xvY2F0aW9uTWFuYWdlclByb3h5OjpyZXNldFBlcm1p
c3Npb25zKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYktpdDo6V2ViR2VvbG9jYXRpb25NYW5hZ2Vy
UHJveHk6OnJlbW92ZVJlcXVlc3Rlcik6IERlbGV0ZWQuCisgICAgICAgICogVUlQcm9jZXNzL1dl
Ykdlb2xvY2F0aW9uTWFuYWdlclByb3h5Lmg6CisgICAgICAgIChXZWJLaXQ6OldlYkdlb2xvY2F0
aW9uTWFuYWdlclByb3h5OjpsYXN0UG9zaXRpb24gY29uc3QpOiBEZWxldGVkLgorICAgICAgICAo
V2ViS2l0OjpXZWJHZW9sb2NhdGlvbk1hbmFnZXJQcm94eTo6aXNVcGRhdGluZyBjb25zdCk6IERl
bGV0ZWQuCisgICAgICAgIChXZWJLaXQ6OldlYkdlb2xvY2F0aW9uTWFuYWdlclByb3h5Ojppc0hp
Z2hBY2N1cmFjeUVuYWJsZWQgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAqIFVJUHJvY2Vzcy9X
ZWJHZW9sb2NhdGlvbk1hbmFnZXJQcm94eS5tZXNzYWdlcy5pbjoKKyAgICAgICAgKiBVSVByb2Nl
c3MvaW9zL1dLR2VvbG9jYXRpb25Qcm92aWRlcklPUy5tbToKKyAgICAgICAgKC1bV0tHZW9sb2Nh
dGlvblByb3ZpZGVySU9TIF9zdGFydFVwZGF0aW5nXSk6CisgICAgICAgICgtW1dLR2VvbG9jYXRp
b25Qcm92aWRlcklPUyBfc3RvcFVwZGF0aW5nXSk6CisgICAgICAgICgtW1dLR2VvbG9jYXRpb25Q
cm92aWRlcklPUyBfc2V0RW5hYmxlSGlnaEFjY3VyYWN5Ol0pOgorICAgICAgICAoLVtXS0dlb2xv
Y2F0aW9uUHJvdmlkZXJJT1MgaW5pdFdpdGhQcm9jZXNzUG9vbDpdKToKKyAgICAgICAgKC1bV0tH
ZW9sb2NhdGlvblByb3ZpZGVySU9TIGRlY2lkZVBvbGljeUZvckdlb2xvY2F0aW9uUmVxdWVzdEZy
b21PcmlnaW46Y29tcGxldGlvbkhhbmRsZXI6dmlldzpdKToKKyAgICAgICAgKC1bV0tHZW9sb2Nh
dGlvblByb3ZpZGVySU9TIGdlb2xvY2F0aW9uQXV0aG9yaXphdGlvbkdyYW50ZWRdKToKKyAgICAg
ICAgKC1bV0tHZW9sb2NhdGlvblByb3ZpZGVySU9TIHBvc2l0aW9uQ2hhbmdlZDpdKToKKyAgICAg
ICAgKC1bV0tHZW9sb2NhdGlvblByb3ZpZGVySU9TIGVycm9yT2NjdXJyZWQ6XSk6CisgICAgICAg
ICgtW1dLR2VvbG9jYXRpb25Qcm92aWRlcklPUyByZXNldEdlb2xvY2F0aW9uXSk6CisgICAgICAg
IChzdGFydFVwZGF0aW5nQ2FsbGJhY2spOiBEZWxldGVkLgorICAgICAgICAoc3RvcFVwZGF0aW5n
Q2FsbGJhY2spOiBEZWxldGVkLgorICAgICAgICAoc2V0RW5hYmxlSGlnaEFjY3VyYWN5KTogRGVs
ZXRlZC4KKyAgICAgICAgKC1bV0tMZWdhY3lDb3JlTG9jYXRpb25Qcm92aWRlciBzZXRMaXN0ZW5l
cjpdKTogRGVsZXRlZC4KKyAgICAgICAgKC1bV0tMZWdhY3lDb3JlTG9jYXRpb25Qcm92aWRlciBy
ZXF1ZXN0R2VvbG9jYXRpb25BdXRob3JpemF0aW9uXSk6IERlbGV0ZWQuCisgICAgICAgICgtW1dL
TGVnYWN5Q29yZUxvY2F0aW9uUHJvdmlkZXIgc3RhcnRdKTogRGVsZXRlZC4KKyAgICAgICAgKC1b
V0tMZWdhY3lDb3JlTG9jYXRpb25Qcm92aWRlciBzdG9wXSk6IERlbGV0ZWQuCisgICAgICAgICgt
W1dLTGVnYWN5Q29yZUxvY2F0aW9uUHJvdmlkZXIgc2V0RW5hYmxlSGlnaEFjY3VyYWN5Ol0pOiBE
ZWxldGVkLgorICAgICAgICAoLVtXS0xlZ2FjeUNvcmVMb2NhdGlvblByb3ZpZGVyIGdlb2xvY2F0
aW9uQXV0aG9yaXphdGlvbkdyYW50ZWRdKTogRGVsZXRlZC4KKyAgICAgICAgKC1bV0tMZWdhY3lD
b3JlTG9jYXRpb25Qcm92aWRlciBnZW9sb2NhdGlvbkF1dGhvcml6YXRpb25EZW5pZWRdKTogRGVs
ZXRlZC4KKyAgICAgICAgKC1bV0tMZWdhY3lDb3JlTG9jYXRpb25Qcm92aWRlciBwb3NpdGlvbkNo
YW5nZWQ6XSk6IERlbGV0ZWQuCisgICAgICAgICgtW1dLTGVnYWN5Q29yZUxvY2F0aW9uUHJvdmlk
ZXIgZXJyb3JPY2N1cnJlZDpdKTogRGVsZXRlZC4KKyAgICAgICAgKC1bV0tMZWdhY3lDb3JlTG9j
YXRpb25Qcm92aWRlciByZXNldEdlb2xvY2F0aW9uXSk6IERlbGV0ZWQuCisgICAgICAgICogV2Vi
S2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogV2ViUHJvY2Vzcy9HZW9s
b2NhdGlvbi9XZWJHZW9sb2NhdGlvbk1hbmFnZXIuY3BwOgorICAgICAgICAoV2ViS2l0OjpyZWdp
c3RyYWJsZURvbWFpbkZvclBhZ2UpOgorICAgICAgICAoV2ViS2l0OjpXZWJHZW9sb2NhdGlvbk1h
bmFnZXI6OnJlZ2lzdGVyV2ViUGFnZSk6CisgICAgICAgIChXZWJLaXQ6OldlYkdlb2xvY2F0aW9u
TWFuYWdlcjo6dW5yZWdpc3RlcldlYlBhZ2UpOgorICAgICAgICAoV2ViS2l0OjpXZWJHZW9sb2Nh
dGlvbk1hbmFnZXI6OnNldEVuYWJsZUhpZ2hBY2N1cmFjeUZvclBhZ2UpOgorICAgICAgICAoV2Vi
S2l0OjpXZWJHZW9sb2NhdGlvbk1hbmFnZXI6OmRpZENoYW5nZVBvc2l0aW9uKToKKyAgICAgICAg
KFdlYktpdDo6V2ViR2VvbG9jYXRpb25NYW5hZ2VyOjpkaWRGYWlsVG9EZXRlcm1pbmVQb3NpdGlv
bik6CisgICAgICAgIChXZWJLaXQ6OldlYkdlb2xvY2F0aW9uTWFuYWdlcjo6cmVzZXRQZXJtaXNz
aW9ucyk6CisgICAgICAgIChXZWJLaXQ6OldlYkdlb2xvY2F0aW9uTWFuYWdlcjo6aXNVcGRhdGlu
ZyBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJLaXQ6OldlYkdlb2xvY2F0aW9uTWFuYWdl
cjo6aXNIaWdoQWNjdXJhY3lFbmFibGVkIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKiBXZWJQ
cm9jZXNzL0dlb2xvY2F0aW9uL1dlYkdlb2xvY2F0aW9uTWFuYWdlci5oOgorICAgICAgICAqIFdl
YlByb2Nlc3MvR2VvbG9jYXRpb24vV2ViR2VvbG9jYXRpb25NYW5hZ2VyLm1lc3NhZ2VzLmluOgor
ICAgICAgICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViR2VvbG9jYXRpb25DbGllbnQu
Y3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJHZW9sb2NhdGlvbkNsaWVudDo6c3RhcnRVcGRhdGlu
Zyk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJHZW9sb2NhdGlvbkNs
aWVudC5oOgorICAgICAgICAoV2ViS2l0OjpXZWJHZW9sb2NhdGlvbkNsaWVudDo6V2ViR2VvbG9j
YXRpb25DbGllbnQpOiBEZWxldGVkLgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUHJvY2Vzcy5j
cHA6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3M6OnJlc2V0QWxsR2VvbG9jYXRpb25QZXJt
aXNzaW9ucyk6IERlbGV0ZWQuCisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmg6CisK
IDIwMjItMDItMTUgIFdlbnNvbiBIc2llaCAgPHdlbnNvbl9oc2llaEBhcHBsZS5jb20+CiAKICAg
ICAgICAgW21hY09TXSBBZGQgYSBjb250ZXh0IG1lbnUgaXRlbSB0byAiQ29weSBDcm9wcGVkIElt
YWdlIgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9nIGIvU291
cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9nCmluZGV4IGY0ZTg2NWRmMTc5OTk1ZWVlOWQy
MDJmYWY1NmMxZTIwZmU3NmE0ZGIuLmM2YTJkYzM5OTFiMDkxMjA3YThkZWQ5MThhZDAxMDAzOGI0
MDhmMTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxvZworKysg
Yi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNSBAQAorMjAy
Mi0wMi0xMyAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgorCisgICAgICAgIERvIHBy
ZWxpbWluYXJ5IHdvcmsgdG8gcGFzcyBkb21haW4gbmFtZXMgdG8gQ29yZUxvY2F0aW9uCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzY1NjYKKyAgICAg
ICAgPHJkYXI6Ly84ODc2MTQxMz4KKworICAgICAgICBSZXZpZXdlZCBieSBEYXJpbiBBZGxlci4K
KworICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYkdlb2xvY2F0aW9uQ2xpZW50Lmg6CisgICAg
ICAgICogV2ViQ29yZVN1cHBvcnQvV2ViR2VvbG9jYXRpb25DbGllbnQubW06CisgICAgICAgIChX
ZWJHZW9sb2NhdGlvbkNsaWVudDo6c3RhcnRVcGRhdGluZyk6CisKIDIwMjItMDItMTUgIFdlbnNv
biBIc2llaCAgPHdlbnNvbl9oc2llaEBhcHBsZS5jb20+CiAKICAgICAgICAgW21hY09TXSBBZGQg
YSBjb250ZXh0IG1lbnUgaXRlbSB0byAiQ29weSBDcm9wcGVkIEltYWdlIgpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdExlZ2FjeS93aW4vQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdExlZ2FjeS93
aW4vQ2hhbmdlTG9nCmluZGV4IDY5NWFhOTEwNTM5ZWYwMjEwNWY1MjE5MzA0YzA5N2UxMDMxMjY0
NTUuLmY0MDBmMzY3ZDA1MmFiZTU4NzU5YTVkNzJjNTI5NjUxZGQ5OTE0M2YgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0TGVn
YWN5L3dpbi9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNSBAQAorMjAyMi0wMi0xMyAgQ2hyaXMgRHVt
ZXogIDxjZHVtZXpAYXBwbGUuY29tPgorCisgICAgICAgIERvIHByZWxpbWluYXJ5IHdvcmsgdG8g
cGFzcyBkb21haW4gbmFtZXMgdG8gQ29yZUxvY2F0aW9uCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzY1NjYKKyAgICAgICAgPHJkYXI6Ly84ODc2MTQx
Mz4KKworICAgICAgICBSZXZpZXdlZCBieSBEYXJpbiBBZGxlci4KKworICAgICAgICAqIFdlYkNv
cmVTdXBwb3J0L1dlYkdlb2xvY2F0aW9uQ2xpZW50LmNwcDoKKyAgICAgICAgKFdlYkdlb2xvY2F0
aW9uQ2xpZW50OjpzdGFydFVwZGF0aW5nKToKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJH
ZW9sb2NhdGlvbkNsaWVudC5oOgorCiAyMDIyLTAyLTAxICBNeWxlcyBDLiBNYXhmaWVsZCAgPG1t
YXhmaWVsZEBhcHBsZS5jb20+CiAKICAgICAgICAgUmVuYW1lIEZvbnRDYXNjYWRlOjpmb250TWV0
cmljcygpIGFuZCBSZW5kZXJTdHlsZTo6Zm9udE1ldHJpY3MoKSB0byBmb250TWV0cmljc09mUHJp
bWFyeUZvbnQoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvUGxhdGZvcm1IYXZlLmggYi9T
b3VyY2UvV1RGL3d0Zi9QbGF0Zm9ybUhhdmUuaAppbmRleCAwOTJiYzM2MjE1MDFkNDRjZWFmYjA3
MGZhY2NkMzk5NWNkYTIzMTI3Li44NjZiMGRhZTZjNjc2OTc2YzY2NjEyODZjNjRiZGIxODNhMGMx
YmUzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9QbGF0Zm9ybUhhdmUuaAorKysgYi9Tb3Vy
Y2UvV1RGL3d0Zi9QbGF0Zm9ybUhhdmUuaApAQCAtMTExOSw2ICsxMTE5LDIwIEBACiAjZGVmaW5l
IEhBVkVfTlNURVhUTElTVF9NQVJLRVJfRk9STUFUUyAxCiAjZW5kaWYKIAorI2lmIChQTEFURk9S
TShJT1MpICYmIF9fSVBIT05FX09TX1ZFUlNJT05fTUFYX0FMTE9XRUQgPj0gMTYwMDAwKSBcCisg
ICAgfHwgKFBMQVRGT1JNKFdBVENIT1MpICYmIF9fV0FUQ0hfT1NfVkVSU0lPTl9NQVhfQUxMT1dF
RCA+PSA5MDAwMCkgXAorICAgIHx8IChQTEFURk9STShBUFBMRVRWKSAmJiBfX1RWX09TX1ZFUlNJ
T05fTUFYX0FMTE9XRUQgPj0gMTYwMDAwKQorI2RlZmluZSBIQVZFX0NPUkVfTE9DQVRJT05fV0VC
U0lURV9JREVOVElGSUVSUyAxCisjZW5kaWYKKworI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpIHx8
IChQTEFURk9STShNQUMpICYmIF9fTUFDX09TX1hfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0gMTAx
NjAwKQorI2RlZmluZSBIQVZFX0NPUkVfTE9DQVRJT04gMQorLy8ga0NMQXV0aG9yaXphdGlvblN0
YXR1c0F1dGhvcml6ZWRXaGVuSW5Vc2UgaXMgb25seSBhdmFpbGFibGUgb24gbWFjT1MgYXMgcGFy
dCBvZiB0aGUgaW50ZXJuYWwgU0RLLgorI2lmIFBMQVRGT1JNKE1BQykgJiYgZGVmaW5lZCBfX2hh
c19pbmNsdWRlICYmIF9faGFzX2luY2x1ZGUoPENvcmVGb3VuZGF0aW9uL0NGUHJpdi5oPikKKyNk
ZWZpbmUgSEFWRV9DT1JFX0xPQ0FUSU9OX0FVVEhPUklaRURfV0hFTl9JTl9VU0UgMQorI2VuZGlm
CisjZW5kaWYKKwogI2lmIFBMQVRGT1JNKE1BQykKICNkZWZpbmUgSEFWRV9TQ0VORUtJVCAxCiAj
ZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZ2VvbG9jYXRpb24vR2Vv
bG9jYXRpb25DbGllbnQuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZ2VvbG9jYXRpb24vR2Vv
bG9jYXRpb25DbGllbnQuaAppbmRleCA1YmFmM2FkODJjNTdlNWFjYmE5NmUzZGYwZWQ2MGViYzc1
NGJjYjA1Li5hNGU4NjIzNjI1NTY3ZTlhZGZlYjAwZDgyNDAwMGEyNzdkYmVhZjAwIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2dlb2xvY2F0aW9uL0dlb2xvY2F0aW9uQ2xpZW50
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9nZW9sb2NhdGlvbi9HZW9sb2NhdGlvbkNs
aWVudC5oCkBAIC0zOCw3ICszOCw3IEBAIGNsYXNzIEdlb2xvY2F0aW9uQ2xpZW50IHsKIHB1Ymxp
YzoKICAgICB2aXJ0dWFsIHZvaWQgZ2VvbG9jYXRpb25EZXN0cm95ZWQoKSA9IDA7CiAKLSAgICB2
aXJ0dWFsIHZvaWQgc3RhcnRVcGRhdGluZyhjb25zdCBTdHJpbmcmIGF1dGhvcml6YXRpb25Ub2tl
bikgPSAwOworICAgIHZpcnR1YWwgdm9pZCBzdGFydFVwZGF0aW5nKGNvbnN0IFN0cmluZyYgYXV0
aG9yaXphdGlvblRva2VuLCBib29sIG5lZWRzSGlnaEFjY3VyYWN5KSA9IDA7CiAgICAgdmlydHVh
bCB2b2lkIHN0b3BVcGRhdGluZygpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgcmV2b2tlQXV0aG9y
aXphdGlvblRva2VuKGNvbnN0IFN0cmluZyYpIHsgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2dlb2xvY2F0aW9uL0dlb2xvY2F0aW9uQ29udHJvbGxlci5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2dlb2xvY2F0aW9uL0dlb2xvY2F0aW9uQ29udHJvbGxlci5jcHAK
aW5kZXggMDYxNjI5MTYwZDliY2M3ZDVkYWY3NGNmYzRmODE1NTBiYTQ4ZGU4Yy4uMDdkZDY1ZjNj
MWFlZTc5ZWI5YzczMjgzNmEyZDVhYWQwMTczMzNjZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9nZW9sb2NhdGlvbi9HZW9sb2NhdGlvbkNvbnRyb2xsZXIuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvZ2VvbG9jYXRpb24vR2VvbG9jYXRpb25Db250cm9sbGVyLmNw
cApAQCAtNTIsMTkgKzUyLDI1IEBAIEdlb2xvY2F0aW9uQ29udHJvbGxlcjo6fkdlb2xvY2F0aW9u
Q29udHJvbGxlcigpCiAgICAgbV9jbGllbnQuZ2VvbG9jYXRpb25EZXN0cm95ZWQoKTsKIH0KIAor
dm9pZCBHZW9sb2NhdGlvbkNvbnRyb2xsZXI6OmRpZE5hdmlnYXRlUGFnZSgpCit7CisgICAgd2hp
bGUgKCFtX29ic2VydmVycy5pc0VtcHR5KCkpCisgICAgICAgIHJlbW92ZU9ic2VydmVyKG1fb2Jz
ZXJ2ZXJzLmJlZ2luKCktPmdldCgpKTsKK30KKwogdm9pZCBHZW9sb2NhdGlvbkNvbnRyb2xsZXI6
OmFkZE9ic2VydmVyKEdlb2xvY2F0aW9uJiBvYnNlcnZlciwgYm9vbCBlbmFibGVIaWdoQWNjdXJh
Y3kpCiB7Ci0gICAgLy8gVGhpcyBtYXkgYmUgY2FsbGVkIG11bHRpcGxlIHRpbWVzIHdpdGggdGhl
IHNhbWUgb2JzZXJ2ZXIsIHRob3VnaCByZW1vdmVPYnNlcnZlcigpCi0gICAgLy8gaXMgY2FsbGVk
IG9ubHkgb25jZSB3aXRoIGVhY2guCi0gICAgYm9vbCB3YXNFbXB0eSA9IG1fb2JzZXJ2ZXJzLmlz
RW1wdHkoKTsKKyAgICBib29sIGhpZ2hBY2N1cmFjeVdhc1JlcXVpcmVkID0gbmVlZHNIaWdoQWNj
dXJhY3koKTsKKwogICAgIG1fb2JzZXJ2ZXJzLmFkZChvYnNlcnZlcik7CiAgICAgaWYgKGVuYWJs
ZUhpZ2hBY2N1cmFjeSkKICAgICAgICAgbV9oaWdoQWNjdXJhY3lPYnNlcnZlcnMuYWRkKG9ic2Vy
dmVyKTsKIAotICAgIGlmIChlbmFibGVIaWdoQWNjdXJhY3kpCi0gICAgICAgIG1fY2xpZW50LnNl
dEVuYWJsZUhpZ2hBY2N1cmFjeSh0cnVlKTsKLSAgICBpZiAod2FzRW1wdHkgJiYgbV9wYWdlLmlz
VmlzaWJsZSgpKQotICAgICAgICBtX2NsaWVudC5zdGFydFVwZGF0aW5nKG9ic2VydmVyLmF1dGhv
cml6YXRpb25Ub2tlbigpKTsKKyAgICBpZiAobV9pc1VwZGF0aW5nKSB7CisgICAgICAgIGlmICgh
aGlnaEFjY3VyYWN5V2FzUmVxdWlyZWQgJiYgZW5hYmxlSGlnaEFjY3VyYWN5KQorICAgICAgICAg
ICAgbV9jbGllbnQuc2V0RW5hYmxlSGlnaEFjY3VyYWN5KHRydWUpOworICAgIH0gZWxzZQorICAg
ICAgICBzdGFydFVwZGF0aW5nSWZOZWNlc3NhcnkoKTsKIH0KIAogdm9pZCBHZW9sb2NhdGlvbkNv
bnRyb2xsZXI6OnJlbW92ZU9ic2VydmVyKEdlb2xvY2F0aW9uJiBvYnNlcnZlcikKQEAgLTcyLDEy
ICs3OCwxNyBAQCB2b2lkIEdlb2xvY2F0aW9uQ29udHJvbGxlcjo6cmVtb3ZlT2JzZXJ2ZXIoR2Vv
bG9jYXRpb24mIG9ic2VydmVyKQogICAgIGlmICghbV9vYnNlcnZlcnMuY29udGFpbnMob2JzZXJ2
ZXIpKQogICAgICAgICByZXR1cm47CiAKKyAgICBib29sIGhpZ2hBY2N1cmFjeVdhc1JlcXVpcmVk
ID0gbmVlZHNIaWdoQWNjdXJhY3koKTsKKwogICAgIG1fb2JzZXJ2ZXJzLnJlbW92ZShvYnNlcnZl
cik7CiAgICAgbV9oaWdoQWNjdXJhY3lPYnNlcnZlcnMucmVtb3ZlKG9ic2VydmVyKTsKIAorICAg
IGlmICghbV9pc1VwZGF0aW5nKQorICAgICAgICByZXR1cm47CisKICAgICBpZiAobV9vYnNlcnZl
cnMuaXNFbXB0eSgpKQotICAgICAgICBtX2NsaWVudC5zdG9wVXBkYXRpbmcoKTsKLSAgICBlbHNl
IGlmIChtX2hpZ2hBY2N1cmFjeU9ic2VydmVycy5pc0VtcHR5KCkpCisgICAgICAgIHN0b3BVcGRh
dGluZ0lmTmVjZXNzYXJ5KCk7CisgICAgZWxzZSBpZiAoaGlnaEFjY3VyYWN5V2FzUmVxdWlyZWQg
JiYgIW5lZWRzSGlnaEFjY3VyYWN5KCkpCiAgICAgICAgIG1fY2xpZW50LnNldEVuYWJsZUhpZ2hB
Y2N1cmFjeShmYWxzZSk7CiB9CiAKQEAgLTEzOSw5ICsxNTAsOSBAQCB2b2lkIEdlb2xvY2F0aW9u
Q29udHJvbGxlcjo6YWN0aXZpdHlTdGF0ZURpZENoYW5nZShPcHRpb25TZXQ8QWN0aXZpdHlTdGF0
ZTo6RmxhZwogICAgIGF1dG8gY2hhbmdlZCA9IG9sZEFjdGl2aXR5U3RhdGUgXiBuZXdBY3Rpdml0
eVN0YXRlOwogICAgIGlmIChjaGFuZ2VkICYgQWN0aXZpdHlTdGF0ZTo6SXNWaXNpYmxlICYmICFt
X29ic2VydmVycy5pc0VtcHR5KCkpIHsKICAgICAgICAgaWYgKG5ld0FjdGl2aXR5U3RhdGUgJiBB
Y3Rpdml0eVN0YXRlOjpJc1Zpc2libGUpCi0gICAgICAgICAgICBtX2NsaWVudC5zdGFydFVwZGF0
aW5nKCgqbV9vYnNlcnZlcnMucmFuZG9tKCkpLT5hdXRob3JpemF0aW9uVG9rZW4oKSk7CisgICAg
ICAgICAgICBzdGFydFVwZGF0aW5nSWZOZWNlc3NhcnkoKTsKICAgICAgICAgZWxzZQotICAgICAg
ICAgICAgbV9jbGllbnQuc3RvcFVwZGF0aW5nKCk7CisgICAgICAgICAgICBzdG9wVXBkYXRpbmdJ
Zk5lY2Vzc2FyeSgpOwogICAgIH0KIAogICAgIGlmICghbV9wYWdlLmlzVmlzaWJsZSgpKQpAQCAt
MTUyLDYgKzE2MywyNCBAQCB2b2lkIEdlb2xvY2F0aW9uQ29udHJvbGxlcjo6YWN0aXZpdHlTdGF0
ZURpZENoYW5nZShPcHRpb25TZXQ8QWN0aXZpdHlTdGF0ZTo6RmxhZwogICAgICAgICBtX2NsaWVu
dC5yZXF1ZXN0UGVybWlzc2lvbihwZXJtaXNzaW9uUmVxdWVzdC5nZXQoKSk7CiB9CiAKK3ZvaWQg
R2VvbG9jYXRpb25Db250cm9sbGVyOjpzdGFydFVwZGF0aW5nSWZOZWNlc3NhcnkoKQoreworICAg
IGlmIChtX2lzVXBkYXRpbmcgfHwgIW1fcGFnZS5pc1Zpc2libGUoKSB8fCBtX29ic2VydmVycy5p
c0VtcHR5KCkpCisgICAgICAgIHJldHVybjsKKworICAgIG1fY2xpZW50LnN0YXJ0VXBkYXRpbmco
KCptX29ic2VydmVycy5yYW5kb20oKSktPmF1dGhvcml6YXRpb25Ub2tlbigpLCBuZWVkc0hpZ2hB
Y2N1cmFjeSgpKTsKKyAgICBtX2lzVXBkYXRpbmcgPSB0cnVlOworfQorCit2b2lkIEdlb2xvY2F0
aW9uQ29udHJvbGxlcjo6c3RvcFVwZGF0aW5nSWZOZWNlc3NhcnkoKQoreworICAgIGlmICghbV9p
c1VwZGF0aW5nKQorICAgICAgICByZXR1cm47CisKKyAgICBtX2NsaWVudC5zdG9wVXBkYXRpbmco
KTsKKyAgICBtX2lzVXBkYXRpbmcgPSBmYWxzZTsKK30KKwogY29uc3QgY2hhciogR2VvbG9jYXRp
b25Db250cm9sbGVyOjpzdXBwbGVtZW50TmFtZSgpCiB7CiAgICAgcmV0dXJuICJHZW9sb2NhdGlv
bkNvbnRyb2xsZXIiOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9nZW9sb2Nh
dGlvbi9HZW9sb2NhdGlvbkNvbnRyb2xsZXIuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZ2Vv
bG9jYXRpb24vR2VvbG9jYXRpb25Db250cm9sbGVyLmgKaW5kZXggNDJmNWQwNjJkYjZmMDljNjYw
MTExZDY2ZDlmMGZjZmZmM2IyMDc0MC4uYmJmZjU3NWViMDU4MzI0MDc4MGQzYjQxYTk2NzQyYzZi
MWQ3MjQ4ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9nZW9sb2NhdGlvbi9H
ZW9sb2NhdGlvbkNvbnRyb2xsZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2dlb2xv
Y2F0aW9uL0dlb2xvY2F0aW9uQ29udHJvbGxlci5oCkBAIC0zMCw2ICszMCw3IEBACiAjaW5jbHVk
ZSAiQWN0aXZpdHlTdGF0ZUNoYW5nZU9ic2VydmVyLmgiCiAjaW5jbHVkZSAiR2VvbG9jYXRpb24u
aCIKICNpbmNsdWRlICJQYWdlLmgiCisjaW5jbHVkZSAiUmVnaXN0cmFibGVEb21haW4uaCIKICNp
bmNsdWRlIDx3dGYvSGFzaFNldC5oPgogI2luY2x1ZGUgPHd0Zi9Ob25jb3B5YWJsZS5oPgogI2lu
Y2x1ZGUgPHd0Zi9SZWZQdHIuaD4KQEAgLTY1LDYgKzY2LDggQEAgcHVibGljOgogCiAgICAgdm9p
ZCByZXZva2VBdXRob3JpemF0aW9uVG9rZW4oY29uc3QgU3RyaW5nJik7CiAKKyAgICB2b2lkIGRp
ZE5hdmlnYXRlUGFnZSgpOworCiBwcml2YXRlOgogICAgIFBhZ2UmIG1fcGFnZTsKICAgICBHZW9s
b2NhdGlvbkNsaWVudCYgbV9jbGllbnQ7CkBAIC03Myw2ICs3NiwxMSBAQCBwcml2YXRlOgogCiAg
ICAgc3RkOjpvcHRpb25hbDxHZW9sb2NhdGlvblBvc2l0aW9uRGF0YT4gbV9sYXN0UG9zaXRpb247
CiAKKyAgICBib29sIG5lZWRzSGlnaEFjY3VyYWN5KCkgY29uc3QgeyByZXR1cm4gIW1faGlnaEFj
Y3VyYWN5T2JzZXJ2ZXJzLmlzRW1wdHkoKTsgfQorCisgICAgdm9pZCBzdGFydFVwZGF0aW5nSWZO
ZWNlc3NhcnkoKTsKKyAgICB2b2lkIHN0b3BVcGRhdGluZ0lmTmVjZXNzYXJ5KCk7CisKICAgICB0
eXBlZGVmIEhhc2hTZXQ8UmVmPEdlb2xvY2F0aW9uPj4gT2JzZXJ2ZXJzU2V0OwogICAgIC8vIEFs
bCBvYnNlcnZlcnM7IGJvdGggdGhvc2UgcmVxdWVzdGluZyBoaWdoIGFjY3VyYWN5IGFuZCB0aG9z
ZSBub3QuCiAgICAgT2JzZXJ2ZXJzU2V0IG1fb2JzZXJ2ZXJzOwpAQCAtODAsNiArODgsOSBAQCBw
cml2YXRlOgogCiAgICAgLy8gV2hpbGUgdGhlIHBhZ2UgaXMgbm90IHZpc2libGUsIHdlIHBlbmQg
cGVybWlzc2lvbiByZXF1ZXN0cy4KICAgICBIYXNoU2V0PFJlZjxHZW9sb2NhdGlvbj4+IG1fcGVu
ZGluZ1Blcm1pc3Npb25SZXF1ZXN0OworCisgICAgUmVnaXN0cmFibGVEb21haW4gbV9yZWdpc3Ry
YWJsZURvbWFpbjsKKyAgICBib29sIG1faXNVcGRhdGluZyB7IGZhbHNlIH07CiB9OwogCiB9IC8v
IG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2dl
b2xvY2F0aW9uL0dlb2xvY2F0aW9uUG9zaXRpb25EYXRhLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2dlb2xvY2F0aW9uL0dlb2xvY2F0aW9uUG9zaXRpb25EYXRhLmgKaW5kZXggOTI2MjIxNzBj
OGFhZDY5ODliOGExMmNlNDgzNTZkYzY4N2JmNmUzNS4uY2MyMTgwYTgzN2QyNzQzYzFmYmY3NjFj
NDEwZTFjN2ViZmVhZWU3ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9nZW9s
b2NhdGlvbi9HZW9sb2NhdGlvblBvc2l0aW9uRGF0YS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvZ2VvbG9jYXRpb24vR2VvbG9jYXRpb25Qb3NpdGlvbkRhdGEuaApAQCAtMjksNyArMjks
NyBAQAogI2luY2x1ZGUgPHd0Zi9SZWYuaD4KICNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgog
Ci0jaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKKyNpZiBQTEFURk9STShDT0NPQSkKIE9CSkNfQ0xB
U1MgQ0xMb2NhdGlvbjsKICNlbmRpZgogCkBAIC00Nyw3ICs0Nyw3IEBAIHB1YmxpYzoKICAgICB7
CiAgICAgfQogCi0jaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKKyNpZiBQTEFURk9STShDT0NPQSkK
ICAgICBXRUJDT1JFX0VYUE9SVCBleHBsaWNpdCBHZW9sb2NhdGlvblBvc2l0aW9uRGF0YShDTExv
Y2F0aW9uKik7CiAjZW5kaWYKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9n
ZW9sb2NhdGlvbi9jb2NvYS9HZW9sb2NhdGlvblBvc2l0aW9uRGF0YUNvY29hLm1tIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9nZW9sb2NhdGlvbi9jb2NvYS9HZW9sb2NhdGlvblBvc2l0aW9uRGF0
YUNvY29hLm1tCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjgxZTQwZjE2NDJiMjY4OTUyYjdiMDM5OGU0ZThmZTJiOGNk
NTgwZDEKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2dlb2xvY2F0
aW9uL2NvY29hL0dlb2xvY2F0aW9uUG9zaXRpb25EYXRhQ29jb2EubW0KQEAgLTAsMCArMSw1MyBA
QAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNyBBcHBsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2
ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAg
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBk
aXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJ
TkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQ
T1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICog
Q09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9S
IEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkK
KyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbXBvcnQg
ImNvbmZpZy5oIgorI2ltcG9ydCAiR2VvbG9jYXRpb25Qb3NpdGlvbi5oIgorCisjaW1wb3J0IDxD
b3JlTG9jYXRpb24vQ0xMb2NhdGlvbi5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK0dlb2xv
Y2F0aW9uUG9zaXRpb25EYXRhOjpHZW9sb2NhdGlvblBvc2l0aW9uRGF0YShDTExvY2F0aW9uICps
b2NhdGlvbikKKyAgICA6IHRpbWVzdGFtcChsb2NhdGlvbi50aW1lc3RhbXAudGltZUludGVydmFs
U2luY2UxOTcwKQorICAgICwgbGF0aXR1ZGUobG9jYXRpb24uY29vcmRpbmF0ZS5sYXRpdHVkZSkK
KyAgICAsIGxvbmdpdHVkZShsb2NhdGlvbi5jb29yZGluYXRlLmxvbmdpdHVkZSkKKyAgICAsIGFj
Y3VyYWN5KGxvY2F0aW9uLmhvcml6b250YWxBY2N1cmFjeSkKK3sKKyAgICBpZiAobG9jYXRpb24u
dmVydGljYWxBY2N1cmFjeSA+PSAwLjApIHsKKyAgICAgICAgYWx0aXR1ZGUgPSBsb2NhdGlvbi5h
bHRpdHVkZTsKKyAgICAgICAgYWx0aXR1ZGVBY2N1cmFjeSA9IGxvY2F0aW9uLnZlcnRpY2FsQWNj
dXJhY3k7CisgICAgfQorICAgIGlmIChsb2NhdGlvbi5zcGVlZCA+PSAwLjApCisgICAgICAgIHNw
ZWVkID0gbG9jYXRpb24uc3BlZWQ7CisgICAgaWYgKGxvY2F0aW9uLmNvdXJzZSA+PSAwLjApCisg
ICAgICAgIGhlYWRpbmcgPSBsb2NhdGlvbi5jb3Vyc2U7CisjaWYgIVBMQVRGT1JNKE1BQ0NBVEFM
WVNUKQorICAgIGlmIChsb2NhdGlvbi5mbG9vcikKKyAgICAgICAgZmxvb3JMZXZlbCA9IGxvY2F0
aW9uLmZsb29yLmxldmVsOworI2VuZGlmCit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZ2VvbG9jYXRpb24vaW9zL0dlb2xvY2F0
aW9uUG9zaXRpb25EYXRhSU9TLm1tIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9nZW9sb2NhdGlv
bi9pb3MvR2VvbG9jYXRpb25Qb3NpdGlvbkRhdGFJT1MubW0KZGVsZXRlZCBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDk4ZDlhMjQyMWU3ZjIzMDliNGY2MjNiMTRkN2NiZTJiNmM3ZTA0NWMuLjAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9nZW9sb2NhdGlvbi9pb3MvR2VvbG9jYXRpb25Qb3NpdGlvbkRhdGFJT1MubW0KKysr
IC9kZXYvbnVsbApAQCAtMSw1NyArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE3IEFw
cGxlIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKLSAqIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
VEhFCi0gKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVO
VCBTSEFMTCBBUFBMRSBJTkMuIE9SCi0gKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKLSAqIEVYRU1QTEFSWSwgT1Ig
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAq
IFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LCBEQVRBLCBPUgotICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQotICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCi0gKi8KLQotI2ltcG9ydCAiY29uZmlnLmgiCi0jaW1wb3J0ICJHZW9sb2NhdGlv
blBvc2l0aW9uLmgiCi0KLSNpZiBQTEFURk9STShJT1NfRkFNSUxZKQotCi0jaW1wb3J0IDxDb3Jl
TG9jYXRpb24vQ0xMb2NhdGlvbi5oPgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLUdlb2xvY2F0
aW9uUG9zaXRpb25EYXRhOjpHZW9sb2NhdGlvblBvc2l0aW9uRGF0YShDTExvY2F0aW9uKiBsb2Nh
dGlvbikKLSAgICA6IHRpbWVzdGFtcChsb2NhdGlvbi50aW1lc3RhbXAudGltZUludGVydmFsU2lu
Y2UxOTcwKQotICAgICwgbGF0aXR1ZGUobG9jYXRpb24uY29vcmRpbmF0ZS5sYXRpdHVkZSkKLSAg
ICAsIGxvbmdpdHVkZShsb2NhdGlvbi5jb29yZGluYXRlLmxvbmdpdHVkZSkKLSAgICAsIGFjY3Vy
YWN5KGxvY2F0aW9uLmhvcml6b250YWxBY2N1cmFjeSkKLXsKLSAgICBpZiAobG9jYXRpb24udmVy
dGljYWxBY2N1cmFjeSA+PSAwLjApIHsKLSAgICAgICAgYWx0aXR1ZGUgPSBsb2NhdGlvbi5hbHRp
dHVkZTsKLSAgICAgICAgYWx0aXR1ZGVBY2N1cmFjeSA9IGxvY2F0aW9uLnZlcnRpY2FsQWNjdXJh
Y3k7Ci0gICAgfQotICAgIGlmIChsb2NhdGlvbi5zcGVlZCA+PSAwLjApCi0gICAgICAgIHNwZWVk
ID0gbG9jYXRpb24uc3BlZWQ7Ci0gICAgaWYgKGxvY2F0aW9uLmNvdXJzZSA+PSAwLjApCi0gICAg
ICAgIGhlYWRpbmcgPSBsb2NhdGlvbi5jb3Vyc2U7Ci0jaWYgIVBMQVRGT1JNKE1BQ0NBVEFMWVNU
KQotICAgIGlmIChsb2NhdGlvbi5mbG9vcikKLSAgICAgICAgZmxvb3JMZXZlbCA9IGxvY2F0aW9u
LmZsb29yLmxldmVsOwotI2VuZGlmCi19Ci0KLX0KLQotI2VuZGlmIC8vIFBMQVRGT1JNKElPU19G
QU1JTFkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzQ29jb2EudHh0IGIvU291
cmNlL1dlYkNvcmUvU291cmNlc0NvY29hLnR4dAppbmRleCBhMTI3ODA0MTA0MDlkZTFmMmY5ODY5
YzA0ZTdkOTdlNTdhNDg1YjQ5Li4wMjgxNGQwMjIyYjI2ZTI4OTliOGRhY2FlZDFhNDJlNTZiNTc0
MTk0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzQ29jb2EudHh0CisrKyBiL1Nv
dXJjZS9XZWJDb3JlL1NvdXJjZXNDb2NvYS50eHQKQEAgLTI1Miw2ICsyNTIsNyBAQCBwbGF0Zm9y
bS9jZi9NZWRpYUFjY2Vzc2liaWxpdHlTb2Z0TGluay5jcHAKIHBsYXRmb3JtL2NmL1J1bkxvb3BP
YnNlcnZlci5jcHAKIHBsYXRmb3JtL2NmL1NoYXJlZEJ1ZmZlckNGLmNwcAogcGxhdGZvcm0vY29j
b2EvQ29udGVudEZpbHRlclVuYmxvY2tIYW5kbGVyQ29jb2EubW0gQG5vLXVuaWZ5CitwbGF0Zm9y
bS9jb2NvYS9Db3JlTG9jYXRpb25HZW9sb2NhdGlvblByb3ZpZGVyLm1tCiBwbGF0Zm9ybS9jb2Nv
YS9Db3JlVmlkZW9Tb2Z0TGluay5jcHAKIHBsYXRmb3JtL2NvY29hL0RyYWdEYXRhQ29jb2EubW0K
IHBsYXRmb3JtL2NvY29hL0RyYWdJbWFnZUNvY29hLm1tCkBAIC0zMDgsNyArMzA5LDcgQEAgcGxh
dGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL01lZGlhU2VsZWN0aW9uR3JvdXBBVkZPYmpDLm1t
CiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vU2FtcGxlQnVmZmVyRGlzcGxheUxheWVy
LmNwcAogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL1dlYk1lZGlhU2Vzc2lvbk1hbmFn
ZXJNYWMuY3BwCiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9BVkFzc2V0TUlN
RVR5cGVDYWNoZS5tbQotcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvQVZBc3Nl
dFRyYWNrVXRpbGl0aWVzLm1tCitwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9B
VkFzc2V0VHJhY2tVdGlsaXRpZXMubW0gQG5vLXVuaWZ5CiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZv
dW5kYXRpb24vb2JqYy9BVk91dHB1dERldmljZU1lbnVDb250cm9sbGVyVGFyZ2V0UGlja2VyLm1t
IEBuby11bmlmeQogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvQVZSb3V0ZVBp
Y2tlclZpZXdUYXJnZXRQaWNrZXIubW0KIHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9v
YmpjL0FWU3RyZWFtRGF0YVBhcnNlck1JTUVUeXBlQ2FjaGUubW0KQEAgLTMxOSw3ICszMjAsNyBA
QCBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9DRE1TZXNzaW9uQVZGb3VuZGF0
aW9uT2JqQy5tbQogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvQ0RNU2Vzc2lv
bkFWU3RyZWFtU2Vzc2lvbi5tbQogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMv
Q0RNU2Vzc2lvbk1lZGlhU291cmNlQVZGT2JqQy5tbQogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3Vu
ZGF0aW9uL29iamMvSW1hZ2VEZWNvZGVyQVZGT2JqQy5tbQotcGxhdGZvcm0vZ3JhcGhpY3MvYXZm
b3VuZGF0aW9uL29iamMvSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUFWRk9iakMubW0KK3BsYXRmb3Jt
L2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0luYmFuZFRleHRUcmFja1ByaXZhdGVBVkZPYmpD
Lm1tIEBuby11bmlmeQogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvSW5iYW5k
Q2hhcHRlclRyYWNrUHJpdmF0ZUFWRk9iakMubW0gQG5vLXVuaWZ5CiBwbGF0Zm9ybS9ncmFwaGlj
cy9hdmZvdW5kYXRpb24vb2JqYy9Mb2NhbFNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllci5tbQogcGxh
dGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5YmFja1RhcmdldFBpY2tl
ck1hYy5tbQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5w
Ynhwcm9qCmluZGV4IDYxMTBlOTYyZDhkMThmYmY5YzAwNTQ5NzJhZThjZTNjZDEyNjU1ZmYuLmZi
OWZiN2NjMjIxODlmMDM0MzAyMGNmNmMwZmEzZDY2NWRiOWViMzggMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTEzNTMsNiArMTM1
Myw3IEBACiAJCTQ2ODM0NEUwMUVEREZBQUEwMEI3Nzk1QiAvKiBET01SZWN0TGlzdC5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDY4MzQ0REUxRURERkE1
RjAwQjc3OTVCIC8qIERPTVJlY3RMaXN0LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAo
UHJpdmF0ZSwgKTsgfTsgfTsKIAkJNDY4M0RGNDAyNzY3REY5ODAwN0QwMEM4IC8qIEpTU2hhZG93
UmVhbG1HbG9iYWxTY29wZUJhc2UuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDQ2ODNERjNFMjc2N0RGOTgwMDdEMDBDOCAvKiBKU1NoYWRvd1JlYWxtR2xv
YmFsU2NvcGVCYXNlLmggKi87IH07CiAJCTQ2ODNERjQxMjc2N0U5MUEwMDdEMDBDOCAvKiBTaGFk
b3dSZWFsbUdsb2JhbFNjb3BlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA0NjgzREYzQjI3NjdERjI2MDA3RDAwQzggLyogU2hhZG93UmVhbG1HbG9iYWxT
Y29wZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJ
CTQ2ODhFOTgwMjdCNkI0NTAwMDU2N0NEMiAvKiBDb3JlTG9jYXRpb25HZW9sb2NhdGlvblByb3Zp
ZGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0Njg4
RTk3RjI3QjZCNDQ0MDA1NjdDRDIgLyogQ29yZUxvY2F0aW9uR2VvbG9jYXRpb25Qcm92aWRlci5o
ICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTQ2ODhF
RTNDMjZERDI2MTAwMDJBRjVDNCAvKiBDcm9zc09yaWdpbk1vZGUuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ2ODhFRTNBMjZERDI2MEMwMDJBRjVDNCAv
KiBDcm9zc09yaWdpbk1vZGUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRl
LCApOyB9OyB9OwogCQk0Njk0M0RDOTI3NjNGODE3MDA0QjYxMEUgLyogU2hhcmVkV29ya2VyT2Jq
ZWN0SWRlbnRpZmllci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gNDY5NDNEQzcyNzYzRjgwRTAwNEI2MTBFIC8qIFNoYXJlZFdvcmtlck9iamVjdElkZW50
aWZpZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9Owog
CQk0Njk4NUYyMzI3QTRBNkFEMDA5N0EzMkIgLyogU2hhcmVkV29ya2VyS2V5LmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0Njk4NUYyMjI3QTRBNjg2MDA5
N0EzMkIgLyogU2hhcmVkV29ya2VyS2V5LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAo
UHJpdmF0ZSwgKTsgfTsgfTsKQEAgLTEzNzAsNiArMTM3MSw3IEBACiAJCTQ2Qjk1MTk5MjA3RDYz
NEQwMEE3RDJERCAvKiBSZW1vdGVET01XaW5kb3cuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ2Qjk1MThFMjA3RDYzMkEwMEE3RDJERCAvKiBSZW1vdGVE
T01XaW5kb3cuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9
OwogCQk0NkI5NTE5QTIwN0Q2MzU0MDBBN0QyREQgLyogUmVtb3RlRnJhbWUuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ2Qjk1MTkyMjA3RDYzMkUwMEE3
RDJERCAvKiBSZW1vdGVGcmFtZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZh
dGUsICk7IH07IH07CiAJCTQ2Qjk1QkY1MjIzMUNGRDYwMDUzQTUwNCAvKiBEZXZpY2VPcmllbnRh
dGlvbkFuZE1vdGlvbkFjY2Vzc0NvbnRyb2xsZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ2Qjk1QkY0MjIzMUNGQjgwMDUzQTUwNCAvKiBEZXZpY2VP
cmllbnRhdGlvbkFuZE1vdGlvbkFjY2Vzc0NvbnRyb2xsZXIuaCAqLzsgfTsKKwkJNDZCQTQ5Qjgy
N0JCNDQzMzAwNzdGNjNGIC8qIEFWQXNzZXRUcmFja1V0aWxpdGllcy5tbSBpbiBTb3VyY2VzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENERUNBODk4MUVERjQ0N0QwMERDQjA4
QiAvKiBBVkFzc2V0VHJhY2tVdGlsaXRpZXMubW0gKi87IH07CiAJCTQ2QkNCQkMyMjA4NTAwOEYw
MDcxMDYzOCAvKiBKU1JlbW90ZURPTVdpbmRvd0Jhc2UuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ2QkNCQkMwMjA4NTAwN0YwMDcxMDYzOCAvKiBKU1Jl
bW90ZURPTVdpbmRvd0Jhc2UuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRl
LCApOyB9OyB9OwogCQk0NkJEMDVDNTI1QkI2RTU5MDAyMjVGMzAgLyogQWRkRXZlbnRMaXN0ZW5l
ck9wdGlvbnMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDQ2QkQwNUMyMjVCQjZFNEUwMDIyNUYzMCAvKiBBZGRFdmVudExpc3RlbmVyT3B0aW9ucy5oICov
OyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTQ2QkQwNUM2
MjVCQjZFNkMwMDIyNUYzMCAvKiBFdmVudExpc3RlbmVyT3B0aW9ucy5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDZCRDA1QzMyNUJCNkU0RTAwMjI1RjMw
IC8qIEV2ZW50TGlzdGVuZXJPcHRpb25zLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAo
UHJpdmF0ZSwgKTsgfTsgfTsKQEAgLTEzNzgsNiArMTM4MCw3IEBACiAJCTQ2QzY5NkNCMUU3MjA1
RjcwMDU5NzkzNyAvKiBDUFVNb25pdG9yLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA0NkM2OTZDOTFFNzIwNUU0MDA1OTc5MzcgLyogQ1BVTW9uaXRvci5o
ICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTQ2QzY5
NkNDMUU3MjA1RkMwMDU5NzkzNyAvKiBDUFVNb25pdG9yLmNwcCBpbiBTb3VyY2VzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ2QzY5NkNBMUU3MjA1RTQwMDU5NzkzNyAvKiBD
UFVNb25pdG9yLmNwcCAqLzsgfTsKIAkJNDZDODNFRkUxQTlCQkUyOTAwQTc5QTQxIC8qIEdlb05v
dGlmaWVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0
NkM4M0VGQzFBOUJCRTI5MDBBNzlBNDEgLyogR2VvTm90aWZpZXIuaCAqLzsgc2V0dGluZ3MgPSB7
QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQk0NkNBOTQzMTI3Qjg2OTU4MDBGNEY1
RkYgLyogSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUFWRk9iakMubW0gaW4gU291cmNlcyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwN0FBNkI2QTE2NkQwMTk1MDBENDU2NzEgLyog
SW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUFWRk9iakMubW0gKi87IH07CiAJCTQ2Q0E5QzQ0MUY5N0JC
RTkwMDRDRkMzQSAvKiBWaXNpYmlsaXR5U3RhdGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ2Q0E5QzQxMUY5N0JCRTcwMDRDRkMzQSAvKiBWaXNpYmls
aXR5U3RhdGUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9
OwogCQk0NkNGNTA0QTI3QUIxRUE0MDA3MERCQzggLyogU2hhcmVkV29ya2VyQ29udGV4dE1hbmFn
ZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ2Q0Y1
MDQ4MjdBQjFFQTEwMDcwREJDOCAvKiBTaGFyZWRXb3JrZXJDb250ZXh0TWFuYWdlci5oICovOyBz
ZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTQ2RDAwMDQwMjZB
MEZFQjMwMEQxQkYxRSAvKiBTdWJtaXRFdmVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gNDZEMDAwM0UyNkEwRkU2RjAwRDFCRjFFIC8qIFN1Ym1pdEV2
ZW50LmggKi87IH07CkBAIC0yNjkzLDcgKzI2OTYsNyBAQAogCQk4Mzc2NUY5NTFEQUM1MjJGMDBD
MDY1MzcgLyogTW91c2VFdmVudEluaXQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDgzNzY1Rjk0MURBQzUyMTgwMEMwNjUzNyAvKiBNb3VzZUV2ZW50SW5p
dC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTgz
Nzg4NzgyMjREOEE2MDkwMDBENEE1QiAvKiBBdWRpb0J1ZmZlclNvdXJjZU9wdGlvbnMuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDgzNzg4NzdGMjREOEE1
RkMwMDBENEE1QiAvKiBBdWRpb0J1ZmZlclNvdXJjZU9wdGlvbnMuaCAqLzsgfTsKIAkJODM3OTM2
M0YxRkJCQjBCNDAwQzgwMjNDIC8qIFNlcnZpY2VXb3JrZXJDbGllbnREYXRhLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4Mzc5MzYzRTFGQkJCMEE1MDBD
ODAyM0MgLyogU2VydmljZVdvcmtlckNsaWVudERhdGEuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklC
VVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwotCQk4Mzc5NjRDRjFGOERCNjlEMDAyMThFQTAgLyog
R2VvbG9jYXRpb25Qb3NpdGlvbkRhdGFJT1MubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA4Mzc5NjRDRTFGOERCNjlBMDAyMThFQTAgLyogR2VvbG9jYXRp
b25Qb3NpdGlvbkRhdGFJT1MubW0gKi87IH07CisJCTgzNzk2NENGMUY4REI2OUQwMDIxOEVBMCAv
KiBHZW9sb2NhdGlvblBvc2l0aW9uRGF0YUNvY29hLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODM3OTY0Q0UxRjhEQjY5QTAwMjE4RUEwIC8qIEdlb2xv
Y2F0aW9uUG9zaXRpb25EYXRhQ29jb2EubW0gKi87IH07CiAJCTgzN0E4MDEzMUUxRTEyNzMwMDAy
NkI5RiAvKiBMb2NhbGl6YWJsZS5zdHJpbmdzZGljdCBpbiBSZXNvdXJjZXMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODM3QTgwMTExRTFFMTI3MzAwMDI2QjlGIC8qIExvY2Fs
aXphYmxlLnN0cmluZ3NkaWN0ICovOyB9OwogCQk4MzdDMEI3NjI0REIzODUwMDA1RDU5NTkgLyog
RHluYW1pY3NDb21wcmVzc29yT3B0aW9ucy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gODM3QzBCNzMyNERCMzg0MjAwNUQ1OTU5IC8qIER5bmFtaWNzQ29t
cHJlc3Nvck9wdGlvbnMuaCAqLzsgfTsKIAkJODM3RkIzNDUxRjlFQTA2RDAwRDBGQzMxIC8qIEV4
dGVuZGFibGVNZXNzYWdlRXZlbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDgzN0ZCMzQwMUY5RUEwNjYwMEQwRkMzMSAvKiBFeHRlbmRhYmxlTWVzc2Fn
ZUV2ZW50LmggKi87IH07CkBAIC05MjczLDYgKzkyNzYsOCBAQAogCQk0NjgzREYzQzI3NjdERjI2
MDA3RDAwQzggLyogU2hhZG93UmVhbG1HbG9iYWxTY29wZS5pZGwgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gU2hhZG93UmVhbG1H
bG9iYWxTY29wZS5pZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQ2ODNERjNEMjc2
N0RGOTgwMDdEMDBDOCAvKiBKU1NoYWRvd1JlYWxtR2xvYmFsU2NvcGVCYXNlLmNwcCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTU2hhZG93UmVhbG1HbG9iYWxTY29wZUJh
c2UuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0NjgzREYzRTI3NjdERjk4MDA3
RDAwQzggLyogSlNTaGFkb3dSZWFsbUdsb2JhbFNjb3BlQmFzZS5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBKU1NoYWRvd1JlYWxtR2xvYmFsU2NvcGVCYXNlLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CisJCTQ2ODhFOTdEMjdCNkI0NDMwMDU2N0NEMiAvKiBDb3JlTG9j
YXRpb25HZW9sb2NhdGlvblByb3ZpZGVyLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gQ29yZUxv
Y2F0aW9uR2VvbG9jYXRpb25Qcm92aWRlci5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
KwkJNDY4OEU5N0YyN0I2QjQ0NDAwNTY3Q0QyIC8qIENvcmVMb2NhdGlvbkdlb2xvY2F0aW9uUHJv
dmlkZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQ29yZUxvY2F0aW9uR2VvbG9jYXRpb25Qcm92aWRlci5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0Njg4RUUzQTI2REQyNjBDMDAyQUY1QzQg
LyogQ3Jvc3NPcmlnaW5Nb2RlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IENyb3NzT3JpZ2luTW9kZS5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0NjhCOEJERTI1Q0M4NDkzMDBGNjc4MjIgLyog
SlNCYXNlQXVkaW9Db250ZXh0Q3VzdG9tLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTQmFzZUF1
ZGlvQ29udGV4dEN1c3RvbS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQ2OTQz
REM3Mjc2M0Y4MEUwMDRCNjEwRSAvKiBTaGFyZWRXb3JrZXJPYmplY3RJZGVudGlmaWVyLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IFNoYXJlZFdvcmtlck9iamVjdElkZW50aWZpZXIuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKQEAgLTkzODcsOCArOTM5Miw4IEBACiAJCTQ5NEJENzk0MEY1NUM4RUUw
MDc0NzgyOCAvKiBXZWJLaXRQb2ludC5pZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gV2ViS2l0
UG9pbnQuaWRsOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0OTRCRDc5QjBGNTVDOTRD
MDA3NDc4MjggLyogSlNXZWJLaXRQb2ludC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5j
cHA7IHBhdGggPSBKU1dlYktpdFBvaW50LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJNDk0QkQ3OUMwRjU1Qzk0QzAwNzQ3ODI4IC8qIEpTV2ViS2l0UG9pbnQuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNXZWJLaXRQb2ludC5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwotCQk0OTRFQkQwNjI3QUE5QzUzMDBGNDg0NEYgLyogUERGRG9jdW1lbnQuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBuYW1lID0gUERGRG9jdW1lbnQuaDsgcGF0aCA9IFBERkRvY3VtZW50Lmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTQ5NEVCRDA4MjdBQTlDNTMwMEY0ODQ0RiAvKiBQREZE
b2N1bWVudC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBQREZEb2N1bWVudC5jcHA7IHBhdGggPSBQ
REZEb2N1bWVudC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTQ5NEVCRDA2MjdB
QTlDNTMwMEY0ODQ0RiAvKiBQREZEb2N1bWVudC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBQREZEb2N1bWVu
dC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk0OTRFQkQwODI3QUE5QzUzMDBGNDg0
NEYgLyogUERGRG9jdW1lbnQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUERGRG9jdW1lbnQuY3Bw
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0OTU4NzgxRjEyQTU3RERGMDA3MjM4QUMg
LyogUGxhdGZvcm1DQUFuaW1hdGlvbkNvY29hLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
b2JqY3BwOyBwYXRoID0gUGxhdGZvcm1DQUFuaW1hdGlvbkNvY29hLm1tOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQk0OTU4NzgyMDEyQTU3RERGMDA3MjM4QUMgLyogUGxhdGZvcm1DQUxh
eWVyQ29jb2EubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBQbGF0
Zm9ybUNBTGF5ZXJDb2NvYS5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDk2OUIw
RjAxM0QwQjMzRjAwREYzNTIxIC8qIEhpdFRlc3RpbmdUcmFuc2Zvcm1TdGF0ZS5jcHAgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBIaXRUZXN0aW5nVHJhbnNmb3JtU3RhdGUu
Y3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMTIxOTAsNyArMTIxOTUsNyBAQAog
CQk4Mzc4ODc4MTI0RDhBNUZDMDAwRDRBNUIgLyogQXVkaW9CdWZmZXJTb3VyY2VPcHRpb25zLmlk
bCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7
IHBhdGggPSBBdWRpb0J1ZmZlclNvdXJjZU9wdGlvbnMuaWRsOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQk4Mzc5MzYzQzFGQkJCMEE0MDBDODAyM0MgLyogU2VydmljZVdvcmtlckNsaWVu
dERhdGEuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gU2VydmljZVdv
cmtlckNsaWVudERhdGEuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk4Mzc5MzYz
RTFGQkJCMEE1MDBDODAyM0MgLyogU2VydmljZVdvcmtlckNsaWVudERhdGEuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU2VydmljZVdvcmtlckNsaWVudERhdGEuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJODM3OTY0Q0UxRjhEQjY5QTAwMjE4RUEwIC8qIEdlb2xv
Y2F0aW9uUG9zaXRpb25EYXRhSU9TLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3Bw
OyBuYW1lID0gR2VvbG9jYXRpb25Qb3NpdGlvbkRhdGFJT1MubW07IHBhdGggPSBNb2R1bGVzL2dl
b2xvY2F0aW9uL2lvcy9HZW9sb2NhdGlvblBvc2l0aW9uRGF0YUlPUy5tbTsgc291cmNlVHJlZSA9
IFNPVVJDRV9ST09UOyB9OworCQk4Mzc5NjRDRTFGOERCNjlBMDAyMThFQTAgLyogR2VvbG9jYXRp
b25Qb3NpdGlvbkRhdGFDb2NvYS5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsg
bmFtZSA9IEdlb2xvY2F0aW9uUG9zaXRpb25EYXRhQ29jb2EubW07IHBhdGggPSBNb2R1bGVzL2dl
b2xvY2F0aW9uL2NvY29hL0dlb2xvY2F0aW9uUG9zaXRpb25EYXRhQ29jb2EubW07IHNvdXJjZVRy
ZWUgPSBTT1VSQ0VfUk9PVDsgfTsKIAkJODM3QTgwMTIxRTFFMTI3MzAwMDI2QjlGIC8qIGVuICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dC5wbGlz
dC5zdHJpbmdzZGljdDsgbmFtZSA9IGVuOyBwYXRoID0gZW4ubHByb2ovTG9jYWxpemFibGUuc3Ry
aW5nc2RpY3Q7IHNvdXJjZVRyZWUgPSBTT1VSQ0VfUk9PVDsgfTsKIAkJODM3QjdEMUYxREMzRjU0
QzAwRDA1MUZDIC8qIFZhbGlkYXRpb25CdWJibGVJT1MubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5vYmpjcHA7IHBhdGggPSBWYWxpZGF0aW9uQnViYmxlSU9TLm1tOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQk4MzdDMEI3MzI0REIzODQyMDA1RDU5NTkgLyogRHluYW1pY3NDb21w
cmVzc29yT3B0aW9ucy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBEeW5hbWljc0NvbXByZXNzb3JPcHRpb25z
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0xOTE1Niw5ICsxOTE2MSw5IEBACiAJ
CTA4OUMxNjY1RkU4NDExNThDMDJBQUMwNyAvKiBSZXNvdXJjZXMgKi8gPSB7CiAJCQlpc2EgPSBQ
QlhHcm91cDsKIAkJCWNoaWxkcmVuID0gKAotCQkJCTQ5RUNGNzJEMjdCQUU4NTQwMDg4MDk5MSAv
KiBwZGZqcyAqLywKIAkJCQlDRDBEQkIzRTE0MjI3NEU2MDAyODAyNjMgLyogYXVkaW8gKi8sCiAJ
CQkJNjU5OThBNjUwRTVGNUZEMzAwNEUwOTdBIC8qIGltYWdlcyAqLywKKwkJCQk0OUVDRjcyRDI3
QkFFODU0MDA4ODA5OTEgLyogcGRmanMgKi8sCiAJCQkJQTFBQTlBQjgxRDIzOTExNTAwRkVBREIz
IC8qIENvbnRlbnRGaWx0ZXJCbG9ja2VkUGFnZS5odG1sICovLAogCQkJCUExMUU4QzAwMUIxRTI4
QkUwMDAzQTdDNyAvKiBjb3B5Q3Vyc29yLnBuZyAqLywKIAkJCQkyRDlGMEUxMjE0RkYxQ0JGMDBC
QTBGRjcgLyogbGluZWFyU1JHQi5pY2MgKi8sCkBAIC0yMTYxNCw2ICsyMTYxOSwxNCBAQAogCQkJ
cGF0aCA9IGNvbnRleHQ7CiAJCQlzb3VyY2VUcmVlID0gIjxncm91cD4iOwogCQl9OworCQk0NjVD
M0QxOTI3Qjk5MUM4MDAyMTMwMkYgLyogY29jb2EgKi8gPSB7CisJCQlpc2EgPSBQQlhHcm91cDsK
KwkJCWNoaWxkcmVuID0gKAorCQkJCTgzNzk2NENFMUY4REI2OUEwMDIxOEVBMCAvKiBHZW9sb2Nh
dGlvblBvc2l0aW9uRGF0YUNvY29hLm1tICovLAorCQkJKTsKKwkJCXBhdGggPSBjb2NvYTsKKwkJ
CXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7CisJCX07CiAJCTQ2Njk0Q0RFMjc1OTQ0NkQwMEUzMTUw
RSAvKiBzaGFyZWQgKi8gPSB7CiAJCQlpc2EgPSBQQlhHcm91cDsKIAkJCWNoaWxkcmVuID0gKApA
QCAtMjUxMTAsMTQgKzI1MTIzLDYgQEAKIAkJCXBhdGggPSBiZWFjb247CiAJCQlzb3VyY2VUcmVl
ID0gIjxncm91cD4iOwogCQl9OwotCQk4Mzc5NjRDQzFGOERCNjdEMDAyMThFQTAgLyogaW9zICov
ID0gewotCQkJaXNhID0gUEJYR3JvdXA7Ci0JCQljaGlsZHJlbiA9ICgKLQkJCQk4Mzc5NjRDRTFG
OERCNjlBMDAyMThFQTAgLyogR2VvbG9jYXRpb25Qb3NpdGlvbkRhdGFJT1MubW0gKi8sCi0JCQkp
OwotCQkJbmFtZSA9IGlvczsKLQkJCXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7Ci0JCX07CiAJCTgz
RkIzMzY1MUY1MDhBMTcwMDk4NkU1NCAvKiBlbnRyaWVzYXBpICovID0gewogCQkJaXNhID0gUEJY
R3JvdXA7CiAJCQljaGlsZHJlbiA9ICgKQEAgLTI2MTMwLDcgKzI2MTM1LDcgQEAKIAkJOTcxMTQ1
RkYxNEVGMDA3OTAwNjc0RkQ5IC8qIGdlb2xvY2F0aW9uICovID0gewogCQkJaXNhID0gUEJYR3Jv
dXA7CiAJCQljaGlsZHJlbiA9ICgKLQkJCQk4Mzc5NjRDQzFGOERCNjdEMDAyMThFQTAgLyogaW9z
ICovLAorCQkJCTQ2NUMzRDE5MjdCOTkxQzgwMDIxMzAyRiAvKiBjb2NvYSAqLywKIAkJCQk5NzQ2
QUYxMzE0RjREREU2MDAzRTdBNzAgLyogR2VvbG9jYXRpb24uY3BwICovLAogCQkJCTk3NDZBRjE0
MTRGNERERTYwMDNFN0E3MCAvKiBHZW9sb2NhdGlvbi5oICovLAogCQkJCTk3NDZBRjE1MTRGNERE
RTYwMDNFN0E3MCAvKiBHZW9sb2NhdGlvbi5pZGwgKi8sCkBAIC0yNjg0Miw2ICsyNjg0Nyw4IEBA
CiAJCQkJQzFGN0I3MkYyNDQ4RjJBQzAwMTI0NTU3IC8qIEFHWENvbXBpbGVyU2VydmljZS5jcHAg
Ki8sCiAJCQkJQzFGN0I3MzAyNDQ4RjJBQzAwMTI0NTU3IC8qIEFHWENvbXBpbGVyU2VydmljZS5o
ICovLAogCQkJCUExNDA5MEZBMUFBNTFFMUQwMDkxMTkxQSAvKiBDb250ZW50RmlsdGVyVW5ibG9j
a0hhbmRsZXJDb2NvYS5tbSAqLywKKwkJCQk0Njg4RTk3RjI3QjZCNDQ0MDA1NjdDRDIgLyogQ29y
ZUxvY2F0aW9uR2VvbG9jYXRpb25Qcm92aWRlci5oICovLAorCQkJCTQ2ODhFOTdEMjdCNkI0NDMw
MDU2N0NEMiAvKiBDb3JlTG9jYXRpb25HZW9sb2NhdGlvblByb3ZpZGVyLm1tICovLAogCQkJCUNE
N0QzMzQ1MUM3QTE2QkYwMDA0MTI5MyAvKiBDb3JlVmlkZW9Tb2Z0TGluay5jcHAgKi8sCiAJCQkJ
Q0Q3RDMzNDYxQzdBMTZCRjAwMDQxMjkzIC8qIENvcmVWaWRlb1NvZnRMaW5rLmggKi8sCiAJCQkJ
RjQ2MkU3OUYyNDJBREEzQzAwMjA0REREIC8qIERyYWdEYXRhQ29jb2EubW0gKi8sCkBAIC0zMzkz
NCw2ICszMzk0MSw3IEBACiAJCQkJM0Y4MDIwMzcxRTlFNDdDNTAwREVDNjFEIC8qIENvcmVBdWRp
b0NhcHR1cmVEZXZpY2VNYW5hZ2VyLmggaW4gSGVhZGVycyAqLywKIAkJCQk0MUZDQ0MzQjI3NDY2
NzU2MDA4OTJBRDYgLyogQ29yZUF1ZGlvQ2FwdHVyZVNvdXJjZS5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJMDdBRkY0MjIxRUZCMTQ0OTAwQjU0NUIzIC8qIENvcmVBdWRpb0NhcHR1cmVTb3VyY2VJT1Mu
aCBpbiBIZWFkZXJzICovLAorCQkJCTQ2ODhFOTgwMjdCNkI0NTAwMDU2N0NEMiAvKiBDb3JlTG9j
YXRpb25HZW9sb2NhdGlvblByb3ZpZGVyLmggaW4gSGVhZGVycyAqLywKIAkJCQlDRDdEMzM0ODFD
N0ExNkJGMDAwNDEyOTMgLyogQ29yZVZpZGVvU29mdExpbmsuaCBpbiBIZWFkZXJzICovLAogCQkJ
CTg2MkYxMjlFMThDMTU3NkYwMDVDNTRBRiAvKiBDb3VudGVkVXNlckFjdGl2aXR5LmggaW4gSGVh
ZGVycyAqLywKIAkJCQlBODBFNkQwNDBBMTk4OUNBMDA3RkI4QzUgLyogQ291bnRlci5oIGluIEhl
YWRlcnMgKi8sCkBAIC0zODM3Myw5ICszODM4MSw5IEBACiAJCQkJQTExRThDMDcxQjFFMjhGRTAw
MDNBN0M3IC8qIG5vcnRoRWFzdFNvdXRoV2VzdFJlc2l6ZUN1cnNvci5wbmcgaW4gUmVzb3VyY2Vz
ICovLAogCQkJCUExMUU4QzA4MUIxRTI5MDIwMDAzQTdDNyAvKiBub3J0aFNvdXRoUmVzaXplQ3Vy
c29yLnBuZyBpbiBSZXNvdXJjZXMgKi8sCiAJCQkJQTExRThDMDkxQjFFMjkwNzAwMDNBN0M3IC8q
IG5vcnRoV2VzdFNvdXRoRWFzdFJlc2l6ZUN1cnNvci5wbmcgaW4gUmVzb3VyY2VzICovLAorCQkJ
CTQ5RUNGNzJGMjdCQUU4NTQwMDg4MDk5MSAvKiBwZGZqcyBpbiBSZXNvdXJjZXMgKi8sCiAJCQkJ
OTMxNTNCREMxNDE5NTlCQzAwRkNGNUJFIC8qIHRleHRBcmVhUmVzaXplQ29ybmVyLnBuZyBpbiBS
ZXNvdXJjZXMgKi8sCiAJCQkJOTM3MDkxOEQxNDE2RDg2QjAwNDc3MzMzIC8qIHRleHRBcmVhUmVz
aXplQ29ybmVyQDJ4LnBuZyBpbiBSZXNvdXJjZXMgKi8sCi0JCQkJNDlFQ0Y3MkYyN0JBRTg1NDAw
ODgwOTkxIC8qIHBkZmpzIGluIFJlc291cmNlcyAqLywKIAkJCSk7CiAJCQlydW5Pbmx5Rm9yRGVw
bG95bWVudFBvc3Rwcm9jZXNzaW5nID0gMDsKIAkJfTsKQEAgLTM4Njg4LDYgKzM4Njk2LDcgQEAK
IAkJCQlDRDBFRUUwRTE0NzQzRjM5MDAzRUFGQTIgLyogQXVkaW9PdXRwdXRVbml0QWRhcHRvcklP
Uy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlDREE3OTgyNzE3MEEyNzkxMDBENDVDNTUgLyogQXVk
aW9TZXNzaW9uSU9TLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJQ0Q4QTdCQkIxOTc3MzVGRTAwQ0JE
NjQzIC8qIEF1ZGlvU291cmNlUHJvdmlkZXJBVkZPYmpDLm1tIGluIFNvdXJjZXMgKi8sCisJCQkJ
NDZCQTQ5QjgyN0JCNDQzMzAwNzdGNjNGIC8qIEFWQXNzZXRUcmFja1V0aWxpdGllcy5tbSBpbiBT
b3VyY2VzICovLAogCQkJCTBGQ0EyOTM1MjZGQzM5MTcwMDZCNEFFQiAvKiBBVkF1ZGlvU2Vzc2lv
bkNhcHR1cmVEZXZpY2VNYW5hZ2VyLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJMDczOEU1RUMyNDk5
ODM5MDAwREExMDFDIC8qIEFWT3V0cHV0RGV2aWNlTWVudUNvbnRyb2xsZXJUYXJnZXRQaWNrZXIu
bW0gaW4gU291cmNlcyAqLywKIAkJCQlDRDMzNkY2MTE3RjlGNjQ3MDBERERDRDAgLyogQVZUcmFj
a1ByaXZhdGVBVkZPYmpDSW1wbC5tbSBpbiBTb3VyY2VzICovLApAQCAtMzg3MDYsMTMgKzM4NzE1
LDE0IEBACiAJCQkJNTE4RjRGRjYxOTRDQTRFNjAwODFCQUFFIC8qIEdhbWVwYWRCdXR0b24uY3Bw
IGluIFNvdXJjZXMgKi8sCiAJCQkJNTE2QzYyMjAxOTUwRDQ4NzAwMzM3RTc1IC8qIEdhbWVwYWRF
dmVudC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk1MUE5RDlFOTE5NUI5MzFGMDAxQjJCNUMgLyog
R2FtZXBhZE1hbmFnZXIuY3BwIGluIFNvdXJjZXMgKi8sCi0JCQkJODM3OTY0Q0YxRjhEQjY5RDAw
MjE4RUEwIC8qIEdlb2xvY2F0aW9uUG9zaXRpb25EYXRhSU9TLm1tIGluIFNvdXJjZXMgKi8sCisJ
CQkJODM3OTY0Q0YxRjhEQjY5RDAwMjE4RUEwIC8qIEdlb2xvY2F0aW9uUG9zaXRpb25EYXRhQ29j
b2EubW0gaW4gU291cmNlcyAqLywKIAkJCQk2RTcyRjU0RTIyOURDRDEwMDBCM0UxNTEgLyogR3Jh
cGhpY3NDb250ZXh0R0xBTkdMRS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk3QzNFNTEwQjE4REY4
RjM1MDBDMTEyRjcgLyogSFRNTENvbnZlcnRlci5tbSBpbiBTb3VyY2VzICovLAogCQkJCUE4RDA2
QjNBMEEyNjVEQ0QwMDVFNzIwMyAvKiBIVE1MTmFtZXMuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJ
MUFDOTAwQzMxOTQzQzBGQzAwODYyNUI1IC8qIEhUVFBIZWFkZXJOYW1lcy5jcHAgaW4gU291cmNl
cyAqLywKIAkJCQlDRDI3QUU1MTIyQTk4Njg3MDA5NDdGRjkgLyogSW1hZ2VSb3RhdGlvblNlc3Np
b25WVC5tbSBpbiBTb3VyY2VzICovLAogCQkJCTA3MEUyRDBGMjZGMjUwODkwMDE0QUFDMyAvKiBJ
bmJhbmRDaGFwdGVyVHJhY2tQcml2YXRlQVZGT2JqQy5tbSBpbiBTb3VyY2VzICovLAorCQkJCTQ2
Q0E5NDMxMjdCODY5NTgwMEY0RjVGRiAvKiBJbmJhbmRUZXh0VHJhY2tQcml2YXRlQVZGT2JqQy5t
bSBpbiBTb3VyY2VzICovLAogCQkJCUNEMDYzRjgyMUUyM0ZBODkwMDgxMkJFMyAvKiBJbml0RGF0
YVJlZ2lzdHJ5LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTkzNUM0NzcwMDlBQzRENzMwMEE2QUFC
NCAvKiBLZXlFdmVudE1hYy5tbSBpbiBTb3VyY2VzICovLAogCQkJCUNEQTk4RTBCMTYwM0NENjAw
MEZFQTNCMSAvKiBMZWdhY3lDRE0uY3BwIGluIFNvdXJjZXMgKi8sCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL1BhZ2UuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmNwcApp
bmRleCAyMGRmODExNWU4ZmQ5NTIwM2E1NTEyZDJmODhmMDRmZWY5MTY3ZmQ1Li5mYjU2YWUxOTFh
NjIyN2RkNmVhNDRlODY3ZDM0NjI1OTQwZTEwYjUzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL1BhZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5jcHAKQEAgLTY5
LDYgKzY5LDcgQEAKICNpbmNsdWRlICJGcmFtZVRyZWUuaCIKICNpbmNsdWRlICJGcmFtZVZpZXcu
aCIKICNpbmNsdWRlICJGdWxsc2NyZWVuTWFuYWdlci5oIgorI2luY2x1ZGUgIkdlb2xvY2F0aW9u
Q29udHJvbGxlci5oIgogI2luY2x1ZGUgIkhUTUxFbGVtZW50LmgiCiAjaW5jbHVkZSAiSFRNTElt
YWdlRWxlbWVudC5oIgogI2luY2x1ZGUgIkhUTUxNZWRpYUVsZW1lbnQuaCIKQEAgLTEzMzIsNiAr
MTMzMywxMSBAQCB2b2lkIFBhZ2U6OmRpZENvbW1pdExvYWQoKQogICAgIHJlc2V0VGV4dFJlY29n
bml0aW9uUmVzdWx0cygpOwogICAgIHJlc2V0SW1hZ2VBbmFseXNpc1F1ZXVlKCk7CiAjZW5kaWYK
KworI2lmIEVOQUJMRShHRU9MT0NBVElPTikKKyAgICBpZiAoYXV0byogZ2VvbG9jYXRpb25Db250
cm9sbGVyID0gR2VvbG9jYXRpb25Db250cm9sbGVyOjpmcm9tKHRoaXMpKQorICAgICAgICBnZW9s
b2NhdGlvbkNvbnRyb2xsZXItPmRpZE5hdmlnYXRlUGFnZSgpOworI2VuZGlmCiB9CiAKIHZvaWQg
UGFnZTo6ZGlkRmluaXNoTG9hZCgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9jb2NvYS9Db3JlTG9jYXRpb25HZW9sb2NhdGlvblByb3ZpZGVyLmggYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9jb2NvYS9Db3JlTG9jYXRpb25HZW9sb2NhdGlvblByb3ZpZGVyLmgKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uM2M1NzBkNjRjYjc0MTgyMjc1NDNkOWJiNzE1NjhkZGM0ZDE0MTM5NAotLS0gL2Rldi9u
dWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL0NvcmVMb2NhdGlvbkdlb2xv
Y2F0aW9uUHJvdmlkZXIuaApAQCAtMCwwICsxLDcwIEBACisvKgorICogQ29weXJpZ2h0IChDKSAy
MDIyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMg
YGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRS
SUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBv
bmNlCisKKyNpZiBIQVZFKENPUkVfTE9DQVRJT04pCisjaW5jbHVkZSA8d3RmL0NvbXBsZXRpb25I
YW5kbGVyLmg+CisjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KKyNpbmNsdWRlIDx3dGYvUmV0YWlu
UHRyLmg+CisKK09CSkNfQ0xBU1MgV2ViQ0xMb2NhdGlvbk1hbmFnZXI7CisKK25hbWVzcGFjZSBX
ZWJDb3JlIHsKKworY2xhc3MgR2VvbG9jYXRpb25Qb3NpdGlvbkRhdGE7CitjbGFzcyBSZWdpc3Ry
YWJsZURvbWFpbjsKKworY2xhc3MgV0VCQ09SRV9FWFBPUlQgQ29yZUxvY2F0aW9uR2VvbG9jYXRp
b25Qcm92aWRlciB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CitwdWJsaWM6CisgICAg
Y2xhc3MgQ2xpZW50IHsKKyAgICBwdWJsaWM6CisgICAgICAgIHZpcnR1YWwgfkNsaWVudCgpIHsg
fQorCisgICAgICAgIHZpcnR1YWwgdm9pZCBnZW9sb2NhdGlvbkF1dGhvcml6YXRpb25HcmFudGVk
KGNvbnN0IFN0cmluZyYgLyp3ZWJzaXRlSWRlbnRpZmllciovKSB7IH0KKyAgICAgICAgdmlydHVh
bCB2b2lkIGdlb2xvY2F0aW9uQXV0aG9yaXphdGlvbkRlbmllZChjb25zdCBTdHJpbmcmIC8qd2Vi
c2l0ZUlkZW50aWZpZXIqLykgeyB9CisgICAgICAgIHZpcnR1YWwgdm9pZCBwb3NpdGlvbkNoYW5n
ZWQoY29uc3QgU3RyaW5nJiB3ZWJzaXRlSWRlbnRpZmllciwgR2VvbG9jYXRpb25Qb3NpdGlvbkRh
dGEmJikgPSAwOworICAgICAgICB2aXJ0dWFsIHZvaWQgZXJyb3JPY2N1cnJlZChjb25zdCBTdHJp
bmcmIHdlYnNpdGVJZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIGVycm9yTWVzc2FnZSkgPSAwOwor
ICAgICAgICB2aXJ0dWFsIHZvaWQgcmVzZXRHZW9sb2NhdGlvbihjb25zdCBTdHJpbmcmIHdlYnNp
dGVJZGVudGlmaWVyKSA9IDA7CisgICAgfTsKKworICAgIENvcmVMb2NhdGlvbkdlb2xvY2F0aW9u
UHJvdmlkZXIoY29uc3QgUmVnaXN0cmFibGVEb21haW4mLCBDbGllbnQmKTsKKyAgICB+Q29yZUxv
Y2F0aW9uR2VvbG9jYXRpb25Qcm92aWRlcigpOworCisgICAgdm9pZCBzdGFydCgpOworICAgIHZv
aWQgc3RvcCgpOworCisgICAgdm9pZCBzZXRFbmFibGVIaWdoQWNjdXJhY3koYm9vbCk7CisKKyAg
ICBzdGF0aWMgdm9pZCByZXF1ZXN0QXV0aG9yaXphdGlvbihjb25zdCBSZWdpc3RyYWJsZURvbWFp
biYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYpOworCitwcml2YXRlOgorICAgIFJl
dGFpblB0cjxXZWJDTExvY2F0aW9uTWFuYWdlcj4gbV9sb2NhdGlvbk1hbmFnZXI7Cit9OworCisj
ZW5kaWYgLy8gSEFWRShDT1JFX0xPQ0FUSU9OKQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9Db3JlTG9jYXRpb25HZW9s
b2NhdGlvblByb3ZpZGVyLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvQ29yZUxv
Y2F0aW9uR2VvbG9jYXRpb25Qcm92aWRlci5tbQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5hZTZmM2MxZGIyM2Q0MjJk
MWMxZDJlMzgxNzQ1NGNiZDY0NjkzZTgxCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vY29jb2EvQ29yZUxvY2F0aW9uR2VvbG9jYXRpb25Qcm92aWRlci5tbQpAQCAt
MCwwICsxLDI3MiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMiBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBt
ZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBp
biB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFO
WSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBO
TyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFS
WSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbXBvcnQgImNvbmZpZy5oIgorCisjaWYgSEFW
RShDT1JFX0xPQ0FUSU9OKQorI2ltcG9ydCAiQ29yZUxvY2F0aW9uR2VvbG9jYXRpb25Qcm92aWRl
ci5oIgorCisjaW1wb3J0ICJHZW9sb2NhdGlvblBvc2l0aW9uRGF0YS5oIgorI2ltcG9ydCAiUmVn
aXN0cmFibGVEb21haW4uaCIKKyNpbXBvcnQgPENvcmVMb2NhdGlvbi9DTExvY2F0aW9uTWFuYWdl
ckRlbGVnYXRlLmg+CisjaW1wb3J0IDxDb3JlTG9jYXRpb24vQ29yZUxvY2F0aW9uLmg+CisjaW1w
b3J0IDx3dGYvU29mdExpbmtpbmcuaD4KKworI2lmIFVTRShBUFBMRV9JTlRFUk5BTF9TREspCisj
aW1wb3J0IDxDb3JlTG9jYXRpb24vQ0xMb2NhdGlvbk1hbmFnZXJfUHJpdmF0ZS5oPgorI2VuZGlm
CisKK1NPRlRfTElOS19GUkFNRVdPUksoQ29yZUxvY2F0aW9uKQorCitTT0ZUX0xJTktfQ0xBU1Mo
Q29yZUxvY2F0aW9uLCBDTExvY2F0aW9uTWFuYWdlcikKK1NPRlRfTElOS19DTEFTUyhDb3JlTG9j
YXRpb24sIENMTG9jYXRpb24pCisKK1NPRlRfTElOS19DT05TVEFOVChDb3JlTG9jYXRpb24sIGtD
TExvY2F0aW9uQWNjdXJhY3lCZXN0LCBkb3VibGUpCitTT0ZUX0xJTktfQ09OU1RBTlQoQ29yZUxv
Y2F0aW9uLCBrQ0xMb2NhdGlvbkFjY3VyYWN5SHVuZHJlZE1ldGVycywgZG91YmxlKQorCisjZGVm
aW5lIGtDTExvY2F0aW9uQWNjdXJhY3lCZXN0IGdldGtDTExvY2F0aW9uQWNjdXJhY3lCZXN0KCkK
KyNkZWZpbmUga0NMTG9jYXRpb25BY2N1cmFjeUh1bmRyZWRNZXRlcnMgZ2V0a0NMTG9jYXRpb25B
Y2N1cmFjeUh1bmRyZWRNZXRlcnMoKQorCitzdGF0aWMgYm9vbCBpc0F1dGhvcml6YXRpb25HcmFu
dGVkKENMQXV0aG9yaXphdGlvblN0YXR1cyBzdGF0dXMpCit7CisgICAgcmV0dXJuIHN0YXR1cyA9
PSBrQ0xBdXRob3JpemF0aW9uU3RhdHVzQXV0aG9yaXplZEFsd2F5cworI2lmIEhBVkUoQ09SRV9M
T0NBVElPTl9BVVRIT1JJWkVEX1dIRU5fSU5fVVNFKQorICAgICAgICB8fCBzdGF0dXMgPT0ga0NM
QXV0aG9yaXphdGlvblN0YXR1c0F1dGhvcml6ZWRXaGVuSW5Vc2UKKyNlbmRpZgorICAgICAgICA7
Cit9CisKK0BpbnRlcmZhY2UgV2ViQ0xMb2NhdGlvbk1hbmFnZXIgOiBOU09iamVjdDxDTExvY2F0
aW9uTWFuYWdlckRlbGVnYXRlPgorQGVuZAorCitAaW1wbGVtZW50YXRpb24gV2ViQ0xMb2NhdGlv
bk1hbmFnZXIgeworICAgIFJldGFpblB0cjxDTExvY2F0aW9uTWFuYWdlcj4gX2xvY2F0aW9uTWFu
YWdlcjsKKyAgICBXZWJDb3JlOjpDb3JlTG9jYXRpb25HZW9sb2NhdGlvblByb3ZpZGVyOjpDbGll
bnQqIF9jbGllbnQ7CisgICAgU3RyaW5nIF93ZWJzaXRlSWRlbnRpZmllcjsKKyAgICBCT09MIF9p
c1dhaXRpbmdGb3JBdXRob3JpemF0aW9uOworfQorCistIChpbnN0YW5jZXR5cGUpaW5pdFdpdGhX
ZWJzaXRlSWRlbnRpZmllcjooY29uc3QgU3RyaW5nJil3ZWJzaXRlSWRlbnRpZmllciBjbGllbnQ6
KFdlYkNvcmU6OkNvcmVMb2NhdGlvbkdlb2xvY2F0aW9uUHJvdmlkZXI6OkNsaWVudCYpY2xpZW50
Cit7CisgICAgc2VsZiA9IFtzdXBlciBpbml0XTsKKyAgICBpZiAoIXNlbGYpCisgICAgICAgIHJl
dHVybiBuaWw7CisKKyAgICAvLyBGSVhNRTogQ2FsbCBpbml0V2l0aFdlYnNpdGVJZGVudGlmaWVy
IGFuZCBwYXNzIHRoZSB3ZWJzaXRlSWRlbnRpZmllciB3aGVuIEhBVkUoQ09SRV9MT0NBVElPTl9X
RUJTSVRFX0lERU5USUZJRVJTKSBhbmQgIXdlYnNpdGVJZGVudGlmaWVyLmlzRW1wdHkoKSBvbmNl
IDxyZGFyOi8vODg4MzQzMDE+IGlzIGZpeGVkLgorICAgIFVOVVNFRF9QQVJBTSh3ZWJzaXRlSWRl
bnRpZmllcik7CisgICAgX2xvY2F0aW9uTWFuYWdlciA9IGFkb3B0TlMoW2FsbG9jQ0xMb2NhdGlv
bk1hbmFnZXJJbnN0YW5jZSgpIGluaXRdKTsKKyAgICBfY2xpZW50ID0gJmNsaWVudDsKKyAgICBf
d2Vic2l0ZUlkZW50aWZpZXIgPSB3ZWJzaXRlSWRlbnRpZmllcjsKKyAgICBbX2xvY2F0aW9uTWFu
YWdlciBzZXREZWxlZ2F0ZTpzZWxmXTsKKyAgICByZXR1cm4gc2VsZjsKK30KKworLSAodm9pZClk
ZWFsbG9jCit7CisgICAgW19sb2NhdGlvbk1hbmFnZXIgc2V0RGVsZWdhdGU6bmlsXTsKKyAgICBb
c3VwZXIgZGVhbGxvY107Cit9CisKKy0gKHZvaWQpc3RhcnQKK3sKKyAgICBpZiAoIVtnZXRDTExv
Y2F0aW9uTWFuYWdlckNsYXNzKCkgbG9jYXRpb25TZXJ2aWNlc0VuYWJsZWRdIHx8ICFpc0F1dGhv
cml6YXRpb25HcmFudGVkKFtfbG9jYXRpb25NYW5hZ2VyIGF1dGhvcml6YXRpb25TdGF0dXNdKSkg
eworICAgICAgICBbX2xvY2F0aW9uTWFuYWdlciBzdG9wVXBkYXRpbmdMb2NhdGlvbl07CisgICAg
ICAgIF9jbGllbnQtPnJlc2V0R2VvbG9jYXRpb24oX3dlYnNpdGVJZGVudGlmaWVyKTsKKyAgICAg
ICAgcmV0dXJuOworICAgIH0KKworICAgIFtfbG9jYXRpb25NYW5hZ2VyIHN0YXJ0VXBkYXRpbmdM
b2NhdGlvbl07Cit9CisKKy0gKHZvaWQpc3RvcAoreworICAgIFtfbG9jYXRpb25NYW5hZ2VyIHN0
b3BVcGRhdGluZ0xvY2F0aW9uXTsKK30KKworLSAodm9pZClzZXRFbmFibGVIaWdoQWNjdXJhY3k6
KEJPT0wpaGlnaEFjY3VyYWN5RW5hYmxlZAoreworICAgIFtfbG9jYXRpb25NYW5hZ2VyIHNldERl
c2lyZWRBY2N1cmFjeTpoaWdoQWNjdXJhY3lFbmFibGVkID8ga0NMTG9jYXRpb25BY2N1cmFjeUJl
c3QgOiBrQ0xMb2NhdGlvbkFjY3VyYWN5SHVuZHJlZE1ldGVyc107Cit9CisKKy0gKHZvaWQpcmVx
dWVzdEdlb2xvY2F0aW9uQXV0aG9yaXphdGlvbgoreworICAgIGlmICghW2dldENMTG9jYXRpb25N
YW5hZ2VyQ2xhc3MoKSBsb2NhdGlvblNlcnZpY2VzRW5hYmxlZF0pIHsKKyAgICAgICAgX2NsaWVu
dC0+Z2VvbG9jYXRpb25BdXRob3JpemF0aW9uRGVuaWVkKF93ZWJzaXRlSWRlbnRpZmllcik7Cisg
ICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBzd2l0Y2ggKFtfbG9jYXRpb25NYW5hZ2VyIGF1
dGhvcml6YXRpb25TdGF0dXNdKSB7CisgICAgY2FzZSBrQ0xBdXRob3JpemF0aW9uU3RhdHVzTm90
RGV0ZXJtaW5lZDogeworICAgICAgICBpZiAoIV9pc1dhaXRpbmdGb3JBdXRob3JpemF0aW9uKSB7
CisgICAgICAgICAgICBfaXNXYWl0aW5nRm9yQXV0aG9yaXphdGlvbiA9IFlFUzsKKyAgICAgICAg
ICAgIFtfbG9jYXRpb25NYW5hZ2VyIHJlcXVlc3RXaGVuSW5Vc2VBdXRob3JpemF0aW9uXTsKKyAg
ICAgICAgfQorICAgICAgICBicmVhazsKKyAgICB9CisgICAgY2FzZSBrQ0xBdXRob3JpemF0aW9u
U3RhdHVzQXV0aG9yaXplZEFsd2F5czoKKyNpZiBIQVZFKENPUkVfTE9DQVRJT05fQVVUSE9SSVpF
RF9XSEVOX0lOX1VTRSkKKyAgICBjYXNlIGtDTEF1dGhvcml6YXRpb25TdGF0dXNBdXRob3JpemVk
V2hlbkluVXNlOgorI2VuZGlmCisgICAgICAgIF9jbGllbnQtPmdlb2xvY2F0aW9uQXV0aG9yaXph
dGlvbkdyYW50ZWQoX3dlYnNpdGVJZGVudGlmaWVyKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2Fz
ZSBrQ0xBdXRob3JpemF0aW9uU3RhdHVzUmVzdHJpY3RlZDoKKyAgICBjYXNlIGtDTEF1dGhvcml6
YXRpb25TdGF0dXNEZW5pZWQ6CisgICAgICAgIF9jbGllbnQtPmdlb2xvY2F0aW9uQXV0aG9yaXph
dGlvbkRlbmllZChfd2Vic2l0ZUlkZW50aWZpZXIpOworICAgICAgICBicmVhazsKKyAgICB9Cit9
CisKKy0gKHZvaWQpbG9jYXRpb25NYW5hZ2VyRGlkQ2hhbmdlQXV0aG9yaXphdGlvbjooQ0xMb2Nh
dGlvbk1hbmFnZXIgKiltYW5hZ2VyCit7CisgICAgYXV0byBzdGF0dXMgPSBbX2xvY2F0aW9uTWFu
YWdlciBhdXRob3JpemF0aW9uU3RhdHVzXTsKKyAgICBpZiAoX2lzV2FpdGluZ0ZvckF1dGhvcml6
YXRpb24pIHsKKyAgICAgICAgc3dpdGNoIChzdGF0dXMpIHsKKyAgICAgICAgY2FzZSBrQ0xBdXRo
b3JpemF0aW9uU3RhdHVzTm90RGV0ZXJtaW5lZDoKKyAgICAgICAgICAgIC8vIFRoaXMgY2FuIGhh
cHBlbiBhZnRlciByZXN1bWUgaWYgdGhlIHVzZXIgaGFzIHN0aWxsIG5vdCBhbnN3ZXJlZCB0aGUg
ZGlhbG9nLiBXZSBqdXN0IGhhdmUgdG8gd2FpdCBmb3IgdGhlIHBlcm1pc3Npb24uCisgICAgICAg
ICAgICBicmVhazsKKyAgICAgICAgY2FzZSBrQ0xBdXRob3JpemF0aW9uU3RhdHVzRGVuaWVkOgor
ICAgICAgICBjYXNlIGtDTEF1dGhvcml6YXRpb25TdGF0dXNSZXN0cmljdGVkOgorICAgICAgICAg
ICAgX2lzV2FpdGluZ0ZvckF1dGhvcml6YXRpb24gPSBOTzsKKyAgICAgICAgICAgIF9jbGllbnQt
Pmdlb2xvY2F0aW9uQXV0aG9yaXphdGlvbkRlbmllZChfd2Vic2l0ZUlkZW50aWZpZXIpOworICAg
ICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2Uga0NMQXV0aG9yaXphdGlvblN0YXR1c0F1dGhv
cml6ZWRBbHdheXM6CisjaWYgSEFWRShDT1JFX0xPQ0FUSU9OX0FVVEhPUklaRURfV0hFTl9JTl9V
U0UpCisgICAgICAgIGNhc2Uga0NMQXV0aG9yaXphdGlvblN0YXR1c0F1dGhvcml6ZWRXaGVuSW5V
c2U6CisjZW5kaWYKKyAgICAgICAgICAgIF9pc1dhaXRpbmdGb3JBdXRob3JpemF0aW9uID0gTk87
CisgICAgICAgICAgICBfY2xpZW50LT5nZW9sb2NhdGlvbkF1dGhvcml6YXRpb25HcmFudGVkKF93
ZWJzaXRlSWRlbnRpZmllcik7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorICAgIH0g
ZWxzZSB7CisgICAgICAgIGlmIChzdGF0dXMgPT0ga0NMQXV0aG9yaXphdGlvblN0YXR1c0Rlbmll
ZCB8fCBzdGF0dXMgPT0ga0NMQXV0aG9yaXphdGlvblN0YXR1c1Jlc3RyaWN0ZWQpIHsKKyAgICAg
ICAgICAgIFtfbG9jYXRpb25NYW5hZ2VyIHN0b3BVcGRhdGluZ0xvY2F0aW9uXTsKKyAgICAgICAg
ICAgIF9jbGllbnQtPnJlc2V0R2VvbG9jYXRpb24oX3dlYnNpdGVJZGVudGlmaWVyKTsKKyAgICAg
ICAgfQorICAgIH0KK30KKworLSAodm9pZClsb2NhdGlvbk1hbmFnZXI6KENMTG9jYXRpb25NYW5h
Z2VyICopbWFuYWdlciBkaWRVcGRhdGVMb2NhdGlvbnM6KE5TQXJyYXkgKilsb2NhdGlvbnMKK3sK
KyAgICBVTlVTRURfUEFSQU0obWFuYWdlcik7CisgICAgZm9yIChDTExvY2F0aW9uICpsb2NhdGlv
biBpbiBsb2NhdGlvbnMpCisgICAgICAgIF9jbGllbnQtPnBvc2l0aW9uQ2hhbmdlZChfd2Vic2l0
ZUlkZW50aWZpZXIsIFdlYkNvcmU6Okdlb2xvY2F0aW9uUG9zaXRpb25EYXRhIHsgbG9jYXRpb24g
fSk7Cit9CisKKy0gKHZvaWQpbG9jYXRpb25NYW5hZ2VyOihDTExvY2F0aW9uTWFuYWdlciAqKW1h
bmFnZXIgZGlkRmFpbFdpdGhFcnJvcjooTlNFcnJvciAqKWVycm9yCit7CisgICAgQVNTRVJUKGVy
cm9yKTsKKyAgICBVTlVTRURfUEFSQU0obWFuYWdlcik7CisKKyAgICBpZiAoW2Vycm9yIGNvZGVd
ID09IGtDTEVycm9yRGVuaWVkKSB7CisgICAgICAgIC8vIElnbm9yZSB0aGUgZXJyb3IgaGVyZSBh
bmQgbGV0IGxvY2F0aW9uTWFuYWdlcjpkaWRDaGFuZ2VBdXRob3JpemF0aW9uU3RhdHVzOiBoYW5k
bGUgdGhlIHBlcm1pc3Npb24uCisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBOU1N0cmlu
ZyAqZXJyb3JNZXNzYWdlID0gW2Vycm9yIGxvY2FsaXplZERlc2NyaXB0aW9uXTsKKyAgICBfY2xp
ZW50LT5lcnJvck9jY3VycmVkKF93ZWJzaXRlSWRlbnRpZmllciwgZXJyb3JNZXNzYWdlKTsKK30K
KworQGVuZAorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK0NvcmVMb2NhdGlvbkdlb2xvY2F0aW9u
UHJvdmlkZXI6OkNvcmVMb2NhdGlvbkdlb2xvY2F0aW9uUHJvdmlkZXIoY29uc3QgUmVnaXN0cmFi
bGVEb21haW4mIHJlZ2lzdHJhYmxlRG9tYWluLCBDbGllbnQmIGNsaWVudCkKKyAgICA6IG1fbG9j
YXRpb25NYW5hZ2VyKGFkb3B0TlMoW1tXZWJDTExvY2F0aW9uTWFuYWdlciBhbGxvY10gaW5pdFdp
dGhXZWJzaXRlSWRlbnRpZmllcjpyZWdpc3RyYWJsZURvbWFpbi5zdHJpbmcoKSBjbGllbnQ6Y2xp
ZW50XSkpCit7CisgICAgLy8gUmVxdWVzdCBwZXJtaXNzaW9uIGZvciB0aGUgYXBwIHRvIHVzZSBn
ZW9sb2NhdGlvbiAoaWYgaXQgZG9lc24ndCBhbHJlYWR5KS4KKyAgICBbbV9sb2NhdGlvbk1hbmFn
ZXIgcmVxdWVzdEdlb2xvY2F0aW9uQXV0aG9yaXphdGlvbl07Cit9CisKK0NvcmVMb2NhdGlvbkdl
b2xvY2F0aW9uUHJvdmlkZXI6On5Db3JlTG9jYXRpb25HZW9sb2NhdGlvblByb3ZpZGVyKCkKK3sK
KyAgICBbbV9sb2NhdGlvbk1hbmFnZXIgc3RvcF07Cit9CisKK3ZvaWQgQ29yZUxvY2F0aW9uR2Vv
bG9jYXRpb25Qcm92aWRlcjo6c3RhcnQoKQoreworICAgIFttX2xvY2F0aW9uTWFuYWdlciBzdGFy
dF07Cit9CisKK3ZvaWQgQ29yZUxvY2F0aW9uR2VvbG9jYXRpb25Qcm92aWRlcjo6c3RvcCgpCit7
CisgICAgW21fbG9jYXRpb25NYW5hZ2VyIHN0b3BdOworfQorCit2b2lkIENvcmVMb2NhdGlvbkdl
b2xvY2F0aW9uUHJvdmlkZXI6OnNldEVuYWJsZUhpZ2hBY2N1cmFjeShib29sIGhpZ2hBY2N1cmFj
eUVuYWJsZWQpCit7CisgICAgW21fbG9jYXRpb25NYW5hZ2VyIHNldEVuYWJsZUhpZ2hBY2N1cmFj
eTpoaWdoQWNjdXJhY3lFbmFibGVkXTsKK30KKworY2xhc3MgQXV0aG9yaXphdGlvbkNoZWNrZXIg
ZmluYWwgOiBwdWJsaWMgUmVmQ291bnRlZDxBdXRob3JpemF0aW9uQ2hlY2tlcj4sIHB1YmxpYyBD
b3JlTG9jYXRpb25HZW9sb2NhdGlvblByb3ZpZGVyOjpDbGllbnQgeworcHVibGljOgorICAgIHN0
YXRpYyBSZWY8QXV0aG9yaXphdGlvbkNoZWNrZXI+IGNyZWF0ZSgpCisgICAgeworICAgICAgICBy
ZXR1cm4gYWRvcHRSZWYoKm5ldyBBdXRob3JpemF0aW9uQ2hlY2tlcik7CisgICAgfQorCisgICAg
dm9pZCBjaGVjayhjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYgcmVnaXN0cmFibGVEb21haW4sIENv
bXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCisgICAgewor
ICAgICAgICBtX2NvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcik7
CisgICAgICAgIG1fcHJvdmlkZXIgPSBtYWtlVW5pcXVlPENvcmVMb2NhdGlvbkdlb2xvY2F0aW9u
UHJvdmlkZXI+KHJlZ2lzdHJhYmxlRG9tYWluLCAqdGhpcyk7CisgICAgfQorCitwcml2YXRlOgor
ICAgIEF1dGhvcml6YXRpb25DaGVja2VyKCkgPSBkZWZhdWx0OworCisgICAgdm9pZCBnZW9sb2Nh
dGlvbkF1dGhvcml6YXRpb25HcmFudGVkKGNvbnN0IFN0cmluZyYpIGZpbmFsCisgICAgeworICAg
ICAgICBpZiAobV9jb21wbGV0aW9uSGFuZGxlcikKKyAgICAgICAgICAgIG1fY29tcGxldGlvbkhh
bmRsZXIodHJ1ZSk7CisgICAgfQorCisgICAgdm9pZCBnZW9sb2NhdGlvbkF1dGhvcml6YXRpb25E
ZW5pZWQoY29uc3QgU3RyaW5nJikgZmluYWwKKyAgICB7CisgICAgICAgIGlmIChtX2NvbXBsZXRp
b25IYW5kbGVyKQorICAgICAgICAgICAgbV9jb21wbGV0aW9uSGFuZGxlcihmYWxzZSk7CisgICAg
fQorCisgICAgdm9pZCBwb3NpdGlvbkNoYW5nZWQoY29uc3QgU3RyaW5nJiwgR2VvbG9jYXRpb25Q
b3NpdGlvbkRhdGEmJikgZmluYWwgeyB9CisgICAgdm9pZCBlcnJvck9jY3VycmVkKGNvbnN0IFN0
cmluZyYsIGNvbnN0IFN0cmluZyYpIGZpbmFsCisgICAgeworICAgICAgICBpZiAobV9jb21wbGV0
aW9uSGFuZGxlcikKKyAgICAgICAgICAgIG1fY29tcGxldGlvbkhhbmRsZXIoZmFsc2UpOworICAg
IH0KKyAgICB2b2lkIHJlc2V0R2VvbG9jYXRpb24oY29uc3QgU3RyaW5nJikgZmluYWwgeyB9CisK
KyAgICBzdGQ6OnVuaXF1ZV9wdHI8Q29yZUxvY2F0aW9uR2VvbG9jYXRpb25Qcm92aWRlcj4gbV9w
cm92aWRlcjsKKyAgICBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiBtX2NvbXBsZXRpb25I
YW5kbGVyOworfTsKKwordm9pZCBDb3JlTG9jYXRpb25HZW9sb2NhdGlvblByb3ZpZGVyOjpyZXF1
ZXN0QXV0aG9yaXphdGlvbihjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYgcmVnaXN0cmFibGVEb21h
aW4sIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCit7
CisgICAgYXV0byBhdXRob3JpemF0aW9uQ2hlY2tlciA9IEF1dGhvcml6YXRpb25DaGVja2VyOjpj
cmVhdGUoKTsKKyAgICBhdXRob3JpemF0aW9uQ2hlY2tlci0+Y2hlY2socmVnaXN0cmFibGVEb21h
aW4sIFthdXRob3JpemF0aW9uQ2hlY2tlciwgY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNv
bXBsZXRpb25IYW5kbGVyKV0oYm9vbCBhdXRob3JpemVkKSBtdXRhYmxlIHsKKyAgICAgICAgY29t
cGxldGlvbkhhbmRsZXIoYXV0aG9yaXplZCk7CisgICAgfSk7Cit9CisKK30gLy8gbmFtZXNwYWNl
IFdlYkNvcmUKKworI2VuZGlmIC8vIEhBVkUoQ09SRV9MT0NBVElPTikKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svR2VvbG9jYXRpb25DbGllbnRNb2NrLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svR2VvbG9jYXRpb25DbGllbnRNb2NrLmNwcAppbmRl
eCA5ZDVlZmM4M2YzNGViMThkNTk5ZGMxMGNhYThmYzBjYTM5OWRiMGEyLi5mYTQyMDgyZTUwNTlh
OWVjZjI2NGNhYWY0YzI2NTMyZjRiMmU1ZDdhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9tb2NrL0dlb2xvY2F0aW9uQ2xpZW50TW9jay5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbW9jay9HZW9sb2NhdGlvbkNsaWVudE1vY2suY3BwCkBAIC0xMzYsMTAgKzEz
NiwxMSBAQCB2b2lkIEdlb2xvY2F0aW9uQ2xpZW50TW9jazo6Z2VvbG9jYXRpb25EZXN0cm95ZWQo
KQogICAgIEFTU0VSVCghbV9pc0FjdGl2ZSk7CiB9CiAKLXZvaWQgR2VvbG9jYXRpb25DbGllbnRN
b2NrOjpzdGFydFVwZGF0aW5nKGNvbnN0IFN0cmluZyYgYXV0aG9yaXphdGlvblRva2VuKQordm9p
ZCBHZW9sb2NhdGlvbkNsaWVudE1vY2s6OnN0YXJ0VXBkYXRpbmcoY29uc3QgU3RyaW5nJiBhdXRo
b3JpemF0aW9uVG9rZW4sIGJvb2wgZW5hYmxlSGlnaEFjY3VyYWN5KQogewogICAgIEFTU0VSVCgh
bV9pc0FjdGl2ZSk7CiAgICAgVU5VU0VEX1BBUkFNKGF1dGhvcml6YXRpb25Ub2tlbik7CisgICAg
VU5VU0VEX1BBUkFNKGVuYWJsZUhpZ2hBY2N1cmFjeSk7CiAgICAgbV9pc0FjdGl2ZSA9IHRydWU7
CiAgICAgYXN5bmNVcGRhdGVDb250cm9sbGVyKCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9tb2NrL0dlb2xvY2F0aW9uQ2xpZW50TW9jay5oIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbW9jay9HZW9sb2NhdGlvbkNsaWVudE1vY2suaAppbmRleCAyZmE3NWUwNTdh
NTNkN2U4MThjY2ZhZmVlNzAyNDNkZDU0ODIxODQ1Li5mOGJhYzM4YjViNmNjYzhjYzA4Zjg3MDcx
ZWJjNzVkNjViMzEwNjQwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2Nr
L0dlb2xvY2F0aW9uQ2xpZW50TW9jay5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21v
Y2svR2VvbG9jYXRpb25DbGllbnRNb2NrLmgKQEAgLTU5LDcgKzU5LDcgQEAgcHVibGljOgogCiAg
ICAgLy8gR2VvbG9jYXRpb25DbGllbnQKICAgICB2b2lkIGdlb2xvY2F0aW9uRGVzdHJveWVkKCkg
b3ZlcnJpZGU7Ci0gICAgdm9pZCBzdGFydFVwZGF0aW5nKGNvbnN0IFN0cmluZyYgYXV0aG9yaXph
dGlvblRva2VuKSBvdmVycmlkZTsKKyAgICB2b2lkIHN0YXJ0VXBkYXRpbmcoY29uc3QgU3RyaW5n
JiBhdXRob3JpemF0aW9uVG9rZW4sIGJvb2wgZW5hYmxlSGlnaEFjY3VyYWN5KSBvdmVycmlkZTsK
ICAgICB2b2lkIHN0b3BVcGRhdGluZygpIG92ZXJyaWRlOwogICAgIHZvaWQgc2V0RW5hYmxlSGln
aEFjY3VyYWN5KGJvb2wpIG92ZXJyaWRlOwogICAgIHN0ZDo6b3B0aW9uYWw8R2VvbG9jYXRpb25Q
b3NpdGlvbkRhdGE+IGxhc3RQb3NpdGlvbigpIG92ZXJyaWRlOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9Tb3VyY2VzQ29jb2EudHh0IGIvU291cmNlL1dlYktpdC9Tb3VyY2VzQ29jb2EudHh0
CmluZGV4IDJhY2RhOTQxZWNkZjRiY2JlN2ZlOTRhNTE4MTc0OTFmMWMwYmYzOWEuLjM5ZmVhOTFj
ZTU2MTc1ODE2MGFkOTIxODk4OTQ1M2U1ODNlZDY0NjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvU291cmNlc0NvY29hLnR4dAorKysgYi9Tb3VyY2UvV2ViS2l0L1NvdXJjZXNDb2NvYS50eHQK
QEAgLTQyNyw2ICs0MjcsNyBAQCBVSVByb2Nlc3MvQ29jb2EvVUlSZW1vdGVPYmplY3RSZWdpc3Ry
eS5jcHAKIFVJUHJvY2Vzcy9Db2NvYS9Vc2VyTWVkaWFDYXB0dXJlTWFuYWdlclByb3h5LmNwcAog
VUlQcm9jZXNzL0NvY29hL1VzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlclByb3h5Lm1t
CiBVSVByb2Nlc3MvQ29jb2EvVmlkZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5Lm1tCitVSVByb2Nl
c3MvQ29jb2EvV2ViR2VvbG9jYXRpb25NYW5hZ2VyUHJveHlDb2NvYS5jcHAKIFVJUHJvY2Vzcy9D
b2NvYS9XZWJQYWdlUHJveHlDb2NvYS5tbQogVUlQcm9jZXNzL0NvY29hL1dlYlBhc3RlYm9hcmRQ
cm94eUNvY29hLm1tCiBVSVByb2Nlc3MvQ29jb2EvV2ViUHJlZmVyZW5jZXNDb2NvYS5tbQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV2ViR2VvbG9jYXRpb25NYW5h
Z2VyUHJveHlDb2NvYS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XZWJHZW9s
b2NhdGlvbk1hbmFnZXJQcm94eUNvY29hLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5mMGJmYmRlOTMyMjJiMTA1
N2YxNzM2YjcyOTIyMDEyMzJiMDI1NjhmCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQ29jb2EvV2ViR2VvbG9jYXRpb25NYW5hZ2VyUHJveHlDb2NvYS5jcHAKQEAg
LTAsMCArMSw3NiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMiBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBt
ZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBp
biB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFO
WSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBO
TyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFS
WSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRl
ICJXZWJHZW9sb2NhdGlvbk1hbmFnZXJQcm94eS5oIgorCisjaW5jbHVkZSAiV2ViR2VvbG9jYXRp
b25NYW5hZ2VyTWVzc2FnZXMuaCIKKyNpbmNsdWRlICJXZWJQcm9jZXNzUHJveHkuaCIKKworbmFt
ZXNwYWNlIFdlYktpdCB7CisKKy8vIEZJWE1FOiBUaGlzIHNob3VsZCBiZSB1c2VkIGJ5IGFsbCBD
b2NvYSBwb3J0cworI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCisKK3ZvaWQgV2ViR2VvbG9jYXRp
b25NYW5hZ2VyUHJveHk6OnBvc2l0aW9uQ2hhbmdlZChjb25zdCBTdHJpbmcmIHdlYnNpdGVJZGVu
dGlmaWVyLCBXZWJDb3JlOjpHZW9sb2NhdGlvblBvc2l0aW9uRGF0YSYmIHBvc2l0aW9uKQorewor
ICAgIGF1dG8gcmVnaXN0cmFibGVEb21haW4gPSBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbjo6
dW5jaGVja2VkQ3JlYXRlRnJvbVJlZ2lzdHJhYmxlRG9tYWluU3RyaW5nKHdlYnNpdGVJZGVudGlm
aWVyKTsKKyAgICBhdXRvIGl0ID0gbV9wZXJEb21haW5EYXRhLmZpbmQocmVnaXN0cmFibGVEb21h
aW4pOworICAgIGlmIChpdCA9PSBtX3BlckRvbWFpbkRhdGEuZW5kKCkpCisgICAgICAgIHJldHVy
bjsKKworICAgIGF1dG8mIHBlckRvbWFpbkRhdGEgPSAqaXQtPnZhbHVlOworICAgIHBlckRvbWFp
bkRhdGEubGFzdFBvc2l0aW9uID0gV1RGTW92ZShwb3NpdGlvbik7CisgICAgZm9yIChhdXRvJiB3
ZWJQcm9jZXNzUHJveHkgOiBwZXJEb21haW5EYXRhLndhdGNoZXJzKQorICAgICAgICB3ZWJQcm9j
ZXNzUHJveHkuc2VuZChNZXNzYWdlczo6V2ViR2VvbG9jYXRpb25NYW5hZ2VyOjpEaWRDaGFuZ2VQ
b3NpdGlvbihyZWdpc3RyYWJsZURvbWFpbiwgcGVyRG9tYWluRGF0YS5sYXN0UG9zaXRpb24udmFs
dWUoKSksIDApOworfQorCit2b2lkIFdlYkdlb2xvY2F0aW9uTWFuYWdlclByb3h5OjplcnJvck9j
Y3VycmVkKGNvbnN0IFN0cmluZyYgd2Vic2l0ZUlkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgZXJy
b3JNZXNzYWdlKQoreworICAgIGF1dG8gcmVnaXN0cmFibGVEb21haW4gPSBXZWJDb3JlOjpSZWdp
c3RyYWJsZURvbWFpbjo6dW5jaGVja2VkQ3JlYXRlRnJvbVJlZ2lzdHJhYmxlRG9tYWluU3RyaW5n
KHdlYnNpdGVJZGVudGlmaWVyKTsKKyAgICBhdXRvIGl0ID0gbV9wZXJEb21haW5EYXRhLmZpbmQo
cmVnaXN0cmFibGVEb21haW4pOworICAgIGlmIChpdCA9PSBtX3BlckRvbWFpbkRhdGEuZW5kKCkp
CisgICAgICAgIHJldHVybjsKKworICAgIGF1dG8mIHBlckRvbWFpbkRhdGEgPSAqaXQtPnZhbHVl
OworICAgIGZvciAoYXV0byYgd2ViUHJvY2Vzc1Byb3h5IDogcGVyRG9tYWluRGF0YS53YXRjaGVy
cykKKyAgICAgICAgd2ViUHJvY2Vzc1Byb3h5LnNlbmQoTWVzc2FnZXM6OldlYkdlb2xvY2F0aW9u
TWFuYWdlcjo6RGlkRmFpbFRvRGV0ZXJtaW5lUG9zaXRpb24ocmVnaXN0cmFibGVEb21haW4sIGVy
cm9yTWVzc2FnZSksIDApOworfQorCit2b2lkIFdlYkdlb2xvY2F0aW9uTWFuYWdlclByb3h5Ojpy
ZXNldEdlb2xvY2F0aW9uKGNvbnN0IFN0cmluZyYgd2Vic2l0ZUlkZW50aWZpZXIpCit7CisgICAg
YXV0byByZWdpc3RyYWJsZURvbWFpbiA9IFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluOjp1bmNo
ZWNrZWRDcmVhdGVGcm9tUmVnaXN0cmFibGVEb21haW5TdHJpbmcod2Vic2l0ZUlkZW50aWZpZXIp
OworICAgIGF1dG8gaXQgPSBtX3BlckRvbWFpbkRhdGEuZmluZChyZWdpc3RyYWJsZURvbWFpbik7
CisgICAgaWYgKGl0ID09IG1fcGVyRG9tYWluRGF0YS5lbmQoKSkKKyAgICAgICAgcmV0dXJuOwor
CisgICAgYXV0byYgcGVyRG9tYWluRGF0YSA9ICppdC0+dmFsdWU7CisgICAgZm9yIChhdXRvJiB3
ZWJQcm9jZXNzUHJveHkgOiBwZXJEb21haW5EYXRhLndhdGNoZXJzKQorICAgICAgICB3ZWJQcm9j
ZXNzUHJveHkuc2VuZChNZXNzYWdlczo6V2ViR2VvbG9jYXRpb25NYW5hZ2VyOjpSZXNldFBlcm1p
c3Npb25zKHJlZ2lzdHJhYmxlRG9tYWluKSwgMCk7Cit9CisKKyNlbmRpZgorCit9IC8vIG5hbWVz
cGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkNvbnRl
eHRTdXBwbGVtZW50LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJDb250ZXh0U3VwcGxl
bWVudC5oCmluZGV4IGVkNTViNDAzZGIyOWY5NDAwNDM4YmEzMmE2MGM3NTgyNzQ5MzRmYTYuLmVj
MTljZGNjY2JiNDBmOTJkNTgzNWYzZWE2MDMxYmRkYTQ3N2E4ZTIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkNvbnRleHRTdXBwbGVtZW50LmgKKysrIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvV2ViQ29udGV4dFN1cHBsZW1lbnQuaApAQCAtNDcsMTQgKzQ3LDYgQEAg
cHVibGljOgogICAgIHsKICAgICB9CiAKLSAgICB2aXJ0dWFsIHZvaWQgcHJvY2Vzc0RpZENsb3Nl
KFdlYlByb2Nlc3NQcm94eSopCi0gICAgewotICAgIH0KLQotICAgIHZpcnR1YWwgdm9pZCBwcm9j
ZXNzRGlkQ2xvc2UoTmV0d29ya1Byb2Nlc3NQcm94eSopCi0gICAgewotICAgIH0KLQogICAgIFdl
YlByb2Nlc3NQb29sKiBwcm9jZXNzUG9vbCgpIGNvbnN0IHsgcmV0dXJuIG1fcHJvY2Vzc1Bvb2w7
IH0KICAgICB2b2lkIGNsZWFyUHJvY2Vzc1Bvb2woKSB7IG1fcHJvY2Vzc1Bvb2wgPSBudWxscHRy
OyB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkdlb2xvY2F0aW9u
TWFuYWdlclByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkdlb2xvY2F0aW9u
TWFuYWdlclByb3h5LmNwcAppbmRleCAwNGYzMjI3Y2Q1NWM5OTJhNDJjZDk2YTNmMjVkNjk3YWVk
Nzk2NWEyLi41NjY1NzRkM2U3MTIzMjg1NWRkY2M2YzFkZTQwMzdjMTM2NjQ0NjViIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJHZW9sb2NhdGlvbk1hbmFnZXJQcm94eS5j
cHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViR2VvbG9jYXRpb25NYW5hZ2VyUHJv
eHkuY3BwCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMSwgMjAxMiwg
MjAxMyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIw
MTEtMjAyMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKQEAgLTM0LDEwICszNCwxNSBAQAogI2luY2x1ZGUgIldlYlBhZ2VQcm94
eS5oIgogI2luY2x1ZGUgIldlYlByb2Nlc3NQb29sLmgiCiAKLSNkZWZpbmUgTUVTU0FHRV9DSEVD
Syhhc3NlcnRpb24pIE1FU1NBR0VfQ0hFQ0tfQkFTRShhc3NlcnRpb24sICgmY29ubmVjdGlvbikp
CisjZGVmaW5lIE1FU1NBR0VfQ0hFQ0soY29ubmVjdGlvbiwgYXNzZXJ0aW9uKSBNRVNTQUdFX0NI
RUNLX0JBU0UoYXNzZXJ0aW9uLCAoY29ubmVjdGlvbikpCiAKIG5hbWVzcGFjZSBXZWJLaXQgewog
CitzdGF0aWMgaW5saW5lIFdlYlByb2Nlc3NQcm94eSYgY29ubmVjdGlvblRvV2ViUHJvY2Vzc1By
b3h5KGNvbnN0IElQQzo6Q29ubmVjdGlvbiYgY29ubmVjdGlvbikKK3sKKyAgICByZXR1cm4gc3Rh
dGljX2Nhc3Q8V2ViUHJvY2Vzc1Byb3h5Jj4oY29ubmVjdGlvbi5jbGllbnQoKSk7Cit9CisKIGNv
bnN0IGNoYXIqIFdlYkdlb2xvY2F0aW9uTWFuYWdlclByb3h5OjpzdXBwbGVtZW50TmFtZSgpCiB7
CiAgICAgcmV0dXJuICJXZWJHZW9sb2NhdGlvbk1hbmFnZXJQcm94eSI7CkBAIC01MCwzNCArNTUs
MzggQEAgUmVmPFdlYkdlb2xvY2F0aW9uTWFuYWdlclByb3h5PiBXZWJHZW9sb2NhdGlvbk1hbmFn
ZXJQcm94eTo6Y3JlYXRlKFdlYlByb2Nlc3NQb28KIAogV2ViR2VvbG9jYXRpb25NYW5hZ2VyUHJv
eHk6OldlYkdlb2xvY2F0aW9uTWFuYWdlclByb3h5KFdlYlByb2Nlc3NQb29sKiBwcm9jZXNzUG9v
bCkKICAgICA6IFdlYkNvbnRleHRTdXBwbGVtZW50KHByb2Nlc3NQb29sKQotICAgICwgbV9wcm92
aWRlcihtYWtlVW5pcXVlPEFQSTo6R2VvbG9jYXRpb25Qcm92aWRlcj4oKSkKIHsKICAgICBXZWJD
b250ZXh0U3VwcGxlbWVudDo6cHJvY2Vzc1Bvb2woKS0+YWRkTWVzc2FnZVJlY2VpdmVyKE1lc3Nh
Z2VzOjpXZWJHZW9sb2NhdGlvbk1hbmFnZXJQcm94eTo6bWVzc2FnZVJlY2VpdmVyTmFtZSgpLCAq
dGhpcyk7CiB9CiAKK1dlYkdlb2xvY2F0aW9uTWFuYWdlclByb3h5Ojp+V2ViR2VvbG9jYXRpb25N
YW5hZ2VyUHJveHkoKSA9IGRlZmF1bHQ7CisKIHZvaWQgV2ViR2VvbG9jYXRpb25NYW5hZ2VyUHJv
eHk6OnNldFByb3ZpZGVyKHN0ZDo6dW5pcXVlX3B0cjxBUEk6Okdlb2xvY2F0aW9uUHJvdmlkZXI+
JiYgcHJvdmlkZXIpCiB7Ci0gICAgaWYgKCFwcm92aWRlcikKLSAgICAgICAgbV9wcm92aWRlciA9
IG1ha2VVbmlxdWU8QVBJOjpHZW9sb2NhdGlvblByb3ZpZGVyPigpOwotICAgIGVsc2UKLSAgICAg
ICAgbV9wcm92aWRlciA9IFdURk1vdmUocHJvdmlkZXIpOworICAgIG1fY2xpZW50UHJvdmlkZXIg
PSBXVEZNb3ZlKHByb3ZpZGVyKTsKIH0KIAogLy8gV2ViQ29udGV4dFN1cHBsZW1lbnQKIAogdm9p
ZCBXZWJHZW9sb2NhdGlvbk1hbmFnZXJQcm94eTo6cHJvY2Vzc1Bvb2xEZXN0cm95ZWQoKQogewot
ICAgIGJvb2wgd2FzVXBkYXRpbmcgPSBpc1VwZGF0aW5nKCk7Ci0gICAgbV91cGRhdGVSZXF1ZXN0
ZXJzLmNsZWFyKCk7CisgICAgaWYgKG1fcGVyRG9tYWluRGF0YS5pc0VtcHR5KCkpCisgICAgICAg
IHJldHVybjsKIAotICAgIEFTU0VSVCghaXNVcGRhdGluZygpKTsKLSAgICBpZiAod2FzVXBkYXRp
bmcpCi0gICAgICAgIG1fcHJvdmlkZXItPnN0b3BVcGRhdGluZygqdGhpcyk7CisgICAgbV9wZXJE
b21haW5EYXRhLmNsZWFyKCk7CisgICAgaWYgKG1fY2xpZW50UHJvdmlkZXIpCisgICAgICAgIG1f
Y2xpZW50UHJvdmlkZXItPnN0b3BVcGRhdGluZygqdGhpcyk7CiB9CiAKLXZvaWQgV2ViR2VvbG9j
YXRpb25NYW5hZ2VyUHJveHk6OnByb2Nlc3NEaWRDbG9zZShXZWJQcm9jZXNzUHJveHkqIHdlYlBy
b2Nlc3NQcm94eSkKK3ZvaWQgV2ViR2VvbG9jYXRpb25NYW5hZ2VyUHJveHk6OndlYlByb2Nlc3NJ
c0dvaW5nQXdheShXZWJQcm9jZXNzUHJveHkmIHByb3h5KQogewotICAgIHJlbW92ZVJlcXVlc3Rl
cih3ZWJQcm9jZXNzUHJveHkpOworICAgIFZlY3RvcjxXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFp
bj4gYWZmZWN0ZWREb21haW5zOworICAgIGZvciAoYXV0byYgW3JlZ2lzdHJhYmxlRG9tYWluLCBw
ZXJEb21haW5EYXRhXSA6IG1fcGVyRG9tYWluRGF0YSkgeworICAgICAgICBpZiAocGVyRG9tYWlu
RGF0YS0+d2F0Y2hlcnMuY29udGFpbnMocHJveHkpKQorICAgICAgICAgICAgYWZmZWN0ZWREb21h
aW5zLmFwcGVuZChyZWdpc3RyYWJsZURvbWFpbik7CisgICAgfQorICAgIGZvciAoYXV0byYgcmVn
aXN0cmFibGVEb21haW4gOiBhZmZlY3RlZERvbWFpbnMpCisgICAgICAgIHN0b3BVcGRhdGluZ1dp
dGhQcm94eShwcm94eSwgcmVnaXN0cmFibGVEb21haW4pOwogfQogCiB2b2lkIFdlYkdlb2xvY2F0
aW9uTWFuYWdlclByb3h5OjpyZWZXZWJDb250ZXh0U3VwcGxlbWVudCgpCkBAIC05Miw4MCArMTAx
LDIwNCBAQCB2b2lkIFdlYkdlb2xvY2F0aW9uTWFuYWdlclByb3h5OjpkZXJlZldlYkNvbnRleHRT
dXBwbGVtZW50KCkKIAogdm9pZCBXZWJHZW9sb2NhdGlvbk1hbmFnZXJQcm94eTo6cHJvdmlkZXJE
aWRDaGFuZ2VQb3NpdGlvbihXZWJHZW9sb2NhdGlvblBvc2l0aW9uKiBwb3NpdGlvbikKIHsKLSAg
ICBtX2xhc3RQb3NpdGlvbiA9IHBvc2l0aW9uLT5jb3JlUG9zaXRpb24oKTsKLQotICAgIGlmICgh
cHJvY2Vzc1Bvb2woKSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgcHJvY2Vzc1Bvb2woKS0+c2Vu
ZFRvQWxsUHJvY2Vzc2VzKE1lc3NhZ2VzOjpXZWJHZW9sb2NhdGlvbk1hbmFnZXI6OkRpZENoYW5n
ZVBvc2l0aW9uKG1fbGFzdFBvc2l0aW9uLnZhbHVlKCkpKTsKKyAgICBmb3IgKGF1dG8mIFtyZWdp
c3RyYWJsZURvbWFpbiwgcGVyRG9tYWluRGF0YV0gOiBtX3BlckRvbWFpbkRhdGEpIHsKKyAgICAg
ICAgcGVyRG9tYWluRGF0YS0+bGFzdFBvc2l0aW9uID0gcG9zaXRpb24tPmNvcmVQb3NpdGlvbigp
OworICAgICAgICBmb3IgKGF1dG8mIHByb2Nlc3MgOiBwZXJEb21haW5EYXRhLT53YXRjaGVycykK
KyAgICAgICAgICAgIHByb2Nlc3Muc2VuZChNZXNzYWdlczo6V2ViR2VvbG9jYXRpb25NYW5hZ2Vy
OjpEaWRDaGFuZ2VQb3NpdGlvbihyZWdpc3RyYWJsZURvbWFpbiwgcGVyRG9tYWluRGF0YS0+bGFz
dFBvc2l0aW9uLnZhbHVlKCkpLCAwKTsKKyAgICB9CiB9CiAKIHZvaWQgV2ViR2VvbG9jYXRpb25N
YW5hZ2VyUHJveHk6OnByb3ZpZGVyRGlkRmFpbFRvRGV0ZXJtaW5lUG9zaXRpb24oY29uc3QgU3Ry
aW5nJiBlcnJvck1lc3NhZ2UpCiB7Ci0gICAgaWYgKCFwcm9jZXNzUG9vbCgpKQotICAgICAgICBy
ZXR1cm47Ci0KLSAgICBwcm9jZXNzUG9vbCgpLT5zZW5kVG9BbGxQcm9jZXNzZXMoTWVzc2FnZXM6
OldlYkdlb2xvY2F0aW9uTWFuYWdlcjo6RGlkRmFpbFRvRGV0ZXJtaW5lUG9zaXRpb24oZXJyb3JN
ZXNzYWdlKSk7CisgICAgZm9yIChhdXRvJiBbcmVnaXN0cmFibGVEb21haW4sIHBlckRvbWFpbkRh
dGFdIDogbV9wZXJEb21haW5EYXRhKSB7CisgICAgICAgIGZvciAoYXV0byYgcHJveHkgOiBwZXJE
b21haW5EYXRhLT53YXRjaGVycykKKyAgICAgICAgICAgIHByb3h5LnNlbmQoTWVzc2FnZXM6Oldl
Ykdlb2xvY2F0aW9uTWFuYWdlcjo6RGlkRmFpbFRvRGV0ZXJtaW5lUG9zaXRpb24ocmVnaXN0cmFi
bGVEb21haW4sIGVycm9yTWVzc2FnZSksIDApOworICAgIH0KIH0KIAogI2lmIFBMQVRGT1JNKElP
U19GQU1JTFkpCiB2b2lkIFdlYkdlb2xvY2F0aW9uTWFuYWdlclByb3h5OjpyZXNldFBlcm1pc3Np
b25zKCkKIHsKLSAgICBwcm9jZXNzUG9vbCgpLT5zZW5kVG9BbGxQcm9jZXNzZXMoTWVzc2FnZXM6
OldlYkdlb2xvY2F0aW9uTWFuYWdlcjo6UmVzZXRQZXJtaXNzaW9ucygpKTsKKyAgICBBU1NFUlQo
bV9jbGllbnRQcm92aWRlcik7CisgICAgZm9yIChhdXRvJiBbcmVnaXN0cmFibGVEb21haW4sIHBl
ckRvbWFpbkRhdGFdIDogbV9wZXJEb21haW5EYXRhKSB7CisgICAgICAgIGZvciAoYXV0byYgcHJv
eHkgOiBwZXJEb21haW5EYXRhLT53YXRjaGVycykKKyAgICAgICAgICAgIHByb3h5LnNlbmQoTWVz
c2FnZXM6OldlYkdlb2xvY2F0aW9uTWFuYWdlcjo6UmVzZXRQZXJtaXNzaW9ucyhyZWdpc3RyYWJs
ZURvbWFpbiksIDApOworICAgIH0KIH0KICNlbmRpZgogCi12b2lkIFdlYkdlb2xvY2F0aW9uTWFu
YWdlclByb3h5OjpzdGFydFVwZGF0aW5nKElQQzo6Q29ubmVjdGlvbiYgY29ubmVjdGlvbiwgV2Vi
UGFnZVByb3h5SWRlbnRpZmllciBwYWdlUHJveHlJRCwgY29uc3QgU3RyaW5nJiBhdXRob3JpemF0
aW9uVG9rZW4pCit2b2lkIFdlYkdlb2xvY2F0aW9uTWFuYWdlclByb3h5OjpzdGFydFVwZGF0aW5n
KElQQzo6Q29ubmVjdGlvbiYgY29ubmVjdGlvbiwgY29uc3QgV2ViQ29yZTo6UmVnaXN0cmFibGVE
b21haW4mIHJlZ2lzdHJhYmxlRG9tYWluLCBXZWJQYWdlUHJveHlJZGVudGlmaWVyIHBhZ2VQcm94
eUlELCBjb25zdCBTdHJpbmcmIGF1dGhvcml6YXRpb25Ub2tlbiwgYm9vbCBlbmFibGVIaWdoQWNj
dXJhY3kpCit7CisgICAgc3RhcnRVcGRhdGluZ1dpdGhQcm94eShjb25uZWN0aW9uVG9XZWJQcm9j
ZXNzUHJveHkoY29ubmVjdGlvbiksIHJlZ2lzdHJhYmxlRG9tYWluLCBwYWdlUHJveHlJRCwgYXV0
aG9yaXphdGlvblRva2VuLCBlbmFibGVIaWdoQWNjdXJhY3kpOworfQorCit2b2lkIFdlYkdlb2xv
Y2F0aW9uTWFuYWdlclByb3h5OjpzdGFydFVwZGF0aW5nV2l0aFByb3h5KFdlYlByb2Nlc3NQcm94
eSYgcHJveHksIGNvbnN0IFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluJiByZWdpc3RyYWJsZURv
bWFpbiwgV2ViUGFnZVByb3h5SWRlbnRpZmllciBwYWdlUHJveHlJRCwgY29uc3QgU3RyaW5nJiBh
dXRob3JpemF0aW9uVG9rZW4sIGJvb2wgZW5hYmxlSGlnaEFjY3VyYWN5KQogewogICAgIGF1dG8q
IHBhZ2UgPSBXZWJQcm9jZXNzUHJveHk6OndlYlBhZ2UocGFnZVByb3h5SUQpOwotICAgIE1FU1NB
R0VfQ0hFQ0socGFnZSk7CisgICAgTUVTU0FHRV9DSEVDSyhwcm94eS5jb25uZWN0aW9uKCksIHBh
Z2UpOwogCiAgICAgYXV0byBpc1ZhbGlkQXV0aG9yaXphdGlvblRva2VuID0gcGFnZS0+Z2VvbG9j
YXRpb25QZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXIoKS5pc1ZhbGlkQXV0aG9yaXphdGlvblRva2Vu
KGF1dGhvcml6YXRpb25Ub2tlbik7Ci0gICAgTUVTU0FHRV9DSEVDSyhpc1ZhbGlkQXV0aG9yaXph
dGlvblRva2VuKTsKKyAgICBNRVNTQUdFX0NIRUNLKHByb3h5LmNvbm5lY3Rpb24oKSwgaXNWYWxp
ZEF1dGhvcml6YXRpb25Ub2tlbik7CisKKyAgICBhdXRvJiBwZXJEb21haW5EYXRhID0gKm1fcGVy
RG9tYWluRGF0YS5lbnN1cmUocmVnaXN0cmFibGVEb21haW4sIFtdIHsKKyAgICAgICAgcmV0dXJu
IG1ha2VVbmlxdWU8UGVyRG9tYWluRGF0YT4oKTsKKyAgICB9KS5pdGVyYXRvci0+dmFsdWU7CisK
KyAgICBib29sIHdhc1VwZGF0aW5nID0gaXNVcGRhdGluZyhwZXJEb21haW5EYXRhKTsKKyAgICBi
b29sIGhpZ2hBY2N1cmFjeVdhc0VuYWJsZWQgPSBpc0hpZ2hBY2N1cmFjeUVuYWJsZWQocGVyRG9t
YWluRGF0YSk7CisKKyAgICBwZXJEb21haW5EYXRhLndhdGNoZXJzLmFkZChwcm94eSk7CisgICAg
aWYgKGVuYWJsZUhpZ2hBY2N1cmFjeSkKKyAgICAgICAgcGVyRG9tYWluRGF0YS53YXRjaGVyc05l
ZWRpbmdIaWdoQWNjdXJhY3kuYWRkKHByb3h5KTsKIAotICAgIGJvb2wgd2FzVXBkYXRpbmcgPSBp
c1VwZGF0aW5nKCk7Ci0gICAgbV91cGRhdGVSZXF1ZXN0ZXJzLmFkZCgmY29ubmVjdGlvbi5jbGll
bnQoKSk7CiAgICAgaWYgKCF3YXNVcGRhdGluZykgewotICAgICAgICBtX3Byb3ZpZGVyLT5zZXRF
bmFibGVIaWdoQWNjdXJhY3koKnRoaXMsIGlzSGlnaEFjY3VyYWN5RW5hYmxlZCgpKTsKLSAgICAg
ICAgbV9wcm92aWRlci0+c3RhcnRVcGRhdGluZygqdGhpcyk7Ci0gICAgfSBlbHNlIGlmIChtX2xh
c3RQb3NpdGlvbikKLSAgICAgICAgY29ubmVjdGlvbi5zZW5kKE1lc3NhZ2VzOjpXZWJHZW9sb2Nh
dGlvbk1hbmFnZXI6OkRpZENoYW5nZVBvc2l0aW9uKG1fbGFzdFBvc2l0aW9uLnZhbHVlKCkpLCAw
KTsKKyAgICAgICAgcHJvdmlkZXJTdGFydFVwZGF0aW5nKHBlckRvbWFpbkRhdGEsIHJlZ2lzdHJh
YmxlRG9tYWluKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICBpZiAoIWhpZ2hBY2N1cmFj
eVdhc0VuYWJsZWQgJiYgZW5hYmxlSGlnaEFjY3VyYWN5KQorICAgICAgICBwcm92aWRlclNldEVu
YWJsZWRIaWdoQWNjdXJhY3kocGVyRG9tYWluRGF0YSwgZW5hYmxlSGlnaEFjY3VyYWN5KTsKKwor
ICAgIGlmIChwZXJEb21haW5EYXRhLmxhc3RQb3NpdGlvbikKKyAgICAgICAgcHJveHkuc2VuZChN
ZXNzYWdlczo6V2ViR2VvbG9jYXRpb25NYW5hZ2VyOjpEaWRDaGFuZ2VQb3NpdGlvbihyZWdpc3Ry
YWJsZURvbWFpbiwgcGVyRG9tYWluRGF0YS5sYXN0UG9zaXRpb24udmFsdWUoKSksIDApOwogfQog
Ci12b2lkIFdlYkdlb2xvY2F0aW9uTWFuYWdlclByb3h5OjpzdG9wVXBkYXRpbmcoSVBDOjpDb25u
ZWN0aW9uJiBjb25uZWN0aW9uKQordm9pZCBXZWJHZW9sb2NhdGlvbk1hbmFnZXJQcm94eTo6c3Rv
cFVwZGF0aW5nKElQQzo6Q29ubmVjdGlvbiYgY29ubmVjdGlvbiwgY29uc3QgV2ViQ29yZTo6UmVn
aXN0cmFibGVEb21haW4mIHJlZ2lzdHJhYmxlRG9tYWluKQogewotICAgIHJlbW92ZVJlcXVlc3Rl
cigmY29ubmVjdGlvbi5jbGllbnQoKSk7CisgICAgc3RvcFVwZGF0aW5nV2l0aFByb3h5KGNvbm5l
Y3Rpb25Ub1dlYlByb2Nlc3NQcm94eShjb25uZWN0aW9uKSwgcmVnaXN0cmFibGVEb21haW4pOwog
fQogCi12b2lkIFdlYkdlb2xvY2F0aW9uTWFuYWdlclByb3h5OjpyZW1vdmVSZXF1ZXN0ZXIoY29u
c3QgSVBDOjpDb25uZWN0aW9uOjpDbGllbnQqIGNsaWVudCkKK3ZvaWQgV2ViR2VvbG9jYXRpb25N
YW5hZ2VyUHJveHk6OnN0b3BVcGRhdGluZ1dpdGhQcm94eShXZWJQcm9jZXNzUHJveHkmIHByb3h5
LCBjb25zdCBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiYgcmVnaXN0cmFibGVEb21haW4pCiB7
Ci0gICAgYm9vbCB3YXNVcGRhdGluZyA9IGlzVXBkYXRpbmcoKTsKLSAgICBib29sIGhpZ2hBY2N1
cmFjeVdhc0VuYWJsZWQgPSBpc0hpZ2hBY2N1cmFjeUVuYWJsZWQoKTsKKyAgICBhdXRvIGl0ID0g
bV9wZXJEb21haW5EYXRhLmZpbmQocmVnaXN0cmFibGVEb21haW4pOworICAgIGlmIChpdCA9PSBt
X3BlckRvbWFpbkRhdGEuZW5kKCkpCisgICAgICAgIHJldHVybjsKKworICAgIGF1dG8mIHBlckRv
bWFpbkRhdGEgPSAqaXQtPnZhbHVlOworICAgIGJvb2wgd2FzVXBkYXRpbmcgPSBpc1VwZGF0aW5n
KHBlckRvbWFpbkRhdGEpOworICAgIGJvb2wgaGlnaEFjY3VyYWN5V2FzRW5hYmxlZCA9IGlzSGln
aEFjY3VyYWN5RW5hYmxlZChwZXJEb21haW5EYXRhKTsKIAotICAgIG1faGlnaEFjY3VyYWN5UmVx
dWVzdGVycy5yZW1vdmUoY2xpZW50KTsKLSAgICBtX3VwZGF0ZVJlcXVlc3RlcnMucmVtb3ZlKGNs
aWVudCk7CisgICAgcGVyRG9tYWluRGF0YS53YXRjaGVycy5yZW1vdmUocHJveHkpOworICAgIHBl
ckRvbWFpbkRhdGEud2F0Y2hlcnNOZWVkaW5nSGlnaEFjY3VyYWN5LnJlbW92ZShwcm94eSk7CiAK
LSAgICBpZiAod2FzVXBkYXRpbmcgJiYgIWlzVXBkYXRpbmcoKSkKLSAgICAgICAgbV9wcm92aWRl
ci0+c3RvcFVwZGF0aW5nKCp0aGlzKTsKKyAgICBpZiAod2FzVXBkYXRpbmcgJiYgIWlzVXBkYXRp
bmcocGVyRG9tYWluRGF0YSkpCisgICAgICAgIHByb3ZpZGVyU3RvcFVwZGF0aW5nKHBlckRvbWFp
bkRhdGEpOwogICAgIGVsc2UgewotICAgICAgICBib29sIGhpZ2hBY2N1cmFjeVNob3VsZEJlRW5h
YmxlZCA9IGlzSGlnaEFjY3VyYWN5RW5hYmxlZCgpOworICAgICAgICBib29sIGhpZ2hBY2N1cmFj
eVNob3VsZEJlRW5hYmxlZCA9IGlzSGlnaEFjY3VyYWN5RW5hYmxlZChwZXJEb21haW5EYXRhKTsK
ICAgICAgICAgaWYgKGhpZ2hBY2N1cmFjeVNob3VsZEJlRW5hYmxlZCAhPSBoaWdoQWNjdXJhY3lX
YXNFbmFibGVkKQotICAgICAgICAgICAgbV9wcm92aWRlci0+c2V0RW5hYmxlSGlnaEFjY3VyYWN5
KCp0aGlzLCBoaWdoQWNjdXJhY3lTaG91bGRCZUVuYWJsZWQpOworICAgICAgICAgICAgcHJvdmlk
ZXJTZXRFbmFibGVkSGlnaEFjY3VyYWN5KHBlckRvbWFpbkRhdGEsIGhpZ2hBY2N1cmFjeVNob3Vs
ZEJlRW5hYmxlZCk7CiAgICAgfQorCisgICAgaWYgKHBlckRvbWFpbkRhdGEud2F0Y2hlcnMuY29t
cHV0ZXNFbXB0eSgpICYmIHBlckRvbWFpbkRhdGEud2F0Y2hlcnNOZWVkaW5nSGlnaEFjY3VyYWN5
LmNvbXB1dGVzRW1wdHkoKSkKKyAgICAgICAgbV9wZXJEb21haW5EYXRhLnJlbW92ZShpdCk7Cit9
CisKK3ZvaWQgV2ViR2VvbG9jYXRpb25NYW5hZ2VyUHJveHk6OnNldEVuYWJsZUhpZ2hBY2N1cmFj
eShJUEM6OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24sIGNvbnN0IFdlYkNvcmU6OlJlZ2lzdHJhYmxl
RG9tYWluJiByZWdpc3RyYWJsZURvbWFpbiwgYm9vbCBlbmFibGVkKQoreworICAgIHNldEVuYWJs
ZUhpZ2hBY2N1cmFjeVdpdGhQcm94eShjb25uZWN0aW9uVG9XZWJQcm9jZXNzUHJveHkoY29ubmVj
dGlvbiksIHJlZ2lzdHJhYmxlRG9tYWluLCBlbmFibGVkKTsKIH0KIAotdm9pZCBXZWJHZW9sb2Nh
dGlvbk1hbmFnZXJQcm94eTo6c2V0RW5hYmxlSGlnaEFjY3VyYWN5KElQQzo6Q29ubmVjdGlvbiYg
Y29ubmVjdGlvbiwgYm9vbCBlbmFibGVkKQordm9pZCBXZWJHZW9sb2NhdGlvbk1hbmFnZXJQcm94
eTo6c2V0RW5hYmxlSGlnaEFjY3VyYWN5V2l0aFByb3h5KFdlYlByb2Nlc3NQcm94eSYgcHJveHks
IGNvbnN0IFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluJiByZWdpc3RyYWJsZURvbWFpbiwgYm9v
bCBlbmFibGVkKQogewotICAgIGJvb2wgaGlnaEFjY3VyYWN5V2FzRW5hYmxlZCA9IGlzSGlnaEFj
Y3VyYWN5RW5hYmxlZCgpOworICAgIGF1dG8gaXQgPSBtX3BlckRvbWFpbkRhdGEuZmluZChyZWdp
c3RyYWJsZURvbWFpbik7CisgICAgQVNTRVJUKGl0ICE9IG1fcGVyRG9tYWluRGF0YS5lbmQoKSk7
CisgICAgaWYgKGl0ID09IG1fcGVyRG9tYWluRGF0YS5lbmQoKSkKKyAgICAgICAgcmV0dXJuOwor
CisgICAgYXV0byYgcGVyRG9tYWluRGF0YSA9ICppdC0+dmFsdWU7CisgICAgYm9vbCBoaWdoQWNj
dXJhY3lXYXNFbmFibGVkID0gaXNIaWdoQWNjdXJhY3lFbmFibGVkKHBlckRvbWFpbkRhdGEpOwog
CiAgICAgaWYgKGVuYWJsZWQpCi0gICAgICAgIG1faGlnaEFjY3VyYWN5UmVxdWVzdGVycy5hZGQo
JmNvbm5lY3Rpb24uY2xpZW50KCkpOworICAgICAgICBwZXJEb21haW5EYXRhLndhdGNoZXJzTmVl
ZGluZ0hpZ2hBY2N1cmFjeS5hZGQocHJveHkpOwogICAgIGVsc2UKLSAgICAgICAgbV9oaWdoQWNj
dXJhY3lSZXF1ZXN0ZXJzLnJlbW92ZSgmY29ubmVjdGlvbi5jbGllbnQoKSk7CisgICAgICAgIHBl
ckRvbWFpbkRhdGEud2F0Y2hlcnNOZWVkaW5nSGlnaEFjY3VyYWN5LnJlbW92ZShwcm94eSk7CisK
KyAgICBpZiAoaXNVcGRhdGluZyhwZXJEb21haW5EYXRhKSAmJiBoaWdoQWNjdXJhY3lXYXNFbmFi
bGVkICE9IGVuYWJsZWQpCisgICAgICAgIHByb3ZpZGVyU2V0RW5hYmxlZEhpZ2hBY2N1cmFjeShw
ZXJEb21haW5EYXRhLCBlbmFibGVkKTsKK30KKworYm9vbCBXZWJHZW9sb2NhdGlvbk1hbmFnZXJQ
cm94eTo6aXNVcGRhdGluZyhjb25zdCBQZXJEb21haW5EYXRhJiBwZXJEb21haW5EYXRhKSBjb25z
dAoreworI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCisgICAgaWYgKCFtX2NsaWVudFByb3ZpZGVy
KQorICAgICAgICByZXR1cm4gIXBlckRvbWFpbkRhdGEud2F0Y2hlcnMuY29tcHV0ZXNFbXB0eSgp
OworI2Vsc2UKKyAgICBVTlVTRURfUEFSQU0ocGVyRG9tYWluRGF0YSk7CisjZW5kaWYKKworICAg
IGZvciAoYXV0byYgcGVyRG9tYWluRGF0YSA6IG1fcGVyRG9tYWluRGF0YS52YWx1ZXMoKSkgewor
ICAgICAgICBpZiAoIXBlckRvbWFpbkRhdGEtPndhdGNoZXJzLmNvbXB1dGVzRW1wdHkoKSkKKyAg
ICAgICAgICAgIHJldHVybiB0cnVlOworICAgIH0KKyAgICByZXR1cm4gZmFsc2U7Cit9CisKKwor
Ym9vbCBXZWJHZW9sb2NhdGlvbk1hbmFnZXJQcm94eTo6aXNIaWdoQWNjdXJhY3lFbmFibGVkKGNv
bnN0IFBlckRvbWFpbkRhdGEmIHBlckRvbWFpbkRhdGEpIGNvbnN0Cit7CisjaWYgUExBVEZPUk0o
SU9TX0ZBTUlMWSkKKyAgICBpZiAoIW1fY2xpZW50UHJvdmlkZXIpCisgICAgICAgIHJldHVybiAh
cGVyRG9tYWluRGF0YS53YXRjaGVyc05lZWRpbmdIaWdoQWNjdXJhY3kuY29tcHV0ZXNFbXB0eSgp
OworI2Vsc2UKKyAgICBVTlVTRURfUEFSQU0ocGVyRG9tYWluRGF0YSk7CisjZW5kaWYKKworICAg
IGZvciAoYXV0byYgZGF0YSA6IG1fcGVyRG9tYWluRGF0YS52YWx1ZXMoKSkgeworICAgICAgICBp
ZiAoIWRhdGEtPndhdGNoZXJzTmVlZGluZ0hpZ2hBY2N1cmFjeS5jb21wdXRlc0VtcHR5KCkpCisg
ICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9CisgICAgcmV0dXJuIGZhbHNlOworfQorCit2
b2lkIFdlYkdlb2xvY2F0aW9uTWFuYWdlclByb3h5Ojpwcm92aWRlclN0YXJ0VXBkYXRpbmcoUGVy
RG9tYWluRGF0YSYgcGVyRG9tYWluRGF0YSwgY29uc3QgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21h
aW4mIHJlZ2lzdHJhYmxlRG9tYWluKQoreworI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCisgICAg
aWYgKCFtX2NsaWVudFByb3ZpZGVyKSB7CisgICAgICAgIEFTU0VSVCghcGVyRG9tYWluRGF0YS5w
cm92aWRlcik7CisgICAgICAgIHBlckRvbWFpbkRhdGEucHJvdmlkZXIgPSBtYWtlVW5pcXVlPFdl
YkNvcmU6OkNvcmVMb2NhdGlvbkdlb2xvY2F0aW9uUHJvdmlkZXI+KHJlZ2lzdHJhYmxlRG9tYWlu
LCAqdGhpcyk7CisgICAgICAgIHBlckRvbWFpbkRhdGEucHJvdmlkZXItPnNldEVuYWJsZUhpZ2hB
Y2N1cmFjeSghcGVyRG9tYWluRGF0YS53YXRjaGVyc05lZWRpbmdIaWdoQWNjdXJhY3kuY29tcHV0
ZXNFbXB0eSgpKTsKKyAgICAgICAgcGVyRG9tYWluRGF0YS5wcm92aWRlci0+c3RhcnQoKTsKKyAg
ICAgICAgcmV0dXJuOworICAgIH0KKyNlbHNlCisgICAgVU5VU0VEX1BBUkFNKHJlZ2lzdHJhYmxl
RG9tYWluKTsKKyAgICBpZiAoIW1fY2xpZW50UHJvdmlkZXIpCisgICAgICAgIHJldHVybjsKKyNl
bmRpZgorCisgICAgbV9jbGllbnRQcm92aWRlci0+c2V0RW5hYmxlSGlnaEFjY3VyYWN5KCp0aGlz
LCBpc0hpZ2hBY2N1cmFjeUVuYWJsZWQocGVyRG9tYWluRGF0YSkpOworICAgIG1fY2xpZW50UHJv
dmlkZXItPnN0YXJ0VXBkYXRpbmcoKnRoaXMpOworfQorCit2b2lkIFdlYkdlb2xvY2F0aW9uTWFu
YWdlclByb3h5Ojpwcm92aWRlclN0b3BVcGRhdGluZyhQZXJEb21haW5EYXRhJiBwZXJEb21haW5E
YXRhKQoreworI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCisgICAgaWYgKCFtX2NsaWVudFByb3Zp
ZGVyKSB7CisgICAgICAgIHBlckRvbWFpbkRhdGEucHJvdmlkZXItPnN0b3AoKTsKKyAgICAgICAg
cmV0dXJuOworICAgIH0KKyNlbHNlCisgICAgVU5VU0VEX1BBUkFNKHBlckRvbWFpbkRhdGEpOwor
ICAgIGlmICghbV9jbGllbnRQcm92aWRlcikKKyAgICAgICAgcmV0dXJuOworI2VuZGlmCisKKyAg
ICBtX2NsaWVudFByb3ZpZGVyLT5zdG9wVXBkYXRpbmcoKnRoaXMpOworfQorCit2b2lkIFdlYkdl
b2xvY2F0aW9uTWFuYWdlclByb3h5Ojpwcm92aWRlclNldEVuYWJsZWRIaWdoQWNjdXJhY3koUGVy
RG9tYWluRGF0YSYgcGVyRG9tYWluRGF0YSwgYm9vbCBlbmFibGVkKQoreworI2lmIFBMQVRGT1JN
KElPU19GQU1JTFkpCisgICAgaWYgKCFtX2NsaWVudFByb3ZpZGVyKSB7CisgICAgICAgIHBlckRv
bWFpbkRhdGEucHJvdmlkZXItPnNldEVuYWJsZUhpZ2hBY2N1cmFjeShlbmFibGVkKTsKKyAgICAg
ICAgcmV0dXJuOworICAgIH0KKyNlbHNlCisgICAgVU5VU0VEX1BBUkFNKHBlckRvbWFpbkRhdGEp
OworICAgIGlmICghbV9jbGllbnRQcm92aWRlcikKKyAgICAgICAgcmV0dXJuOworI2VuZGlmCiAK
LSAgICBib29sIGhpZ2hBY2N1cmFjeVNob3VsZEJlRW5hYmxlZCA9IGlzSGlnaEFjY3VyYWN5RW5h
YmxlZCgpOwotICAgIGlmIChpc1VwZGF0aW5nKCkgJiYgaGlnaEFjY3VyYWN5V2FzRW5hYmxlZCAh
PSBoaWdoQWNjdXJhY3lTaG91bGRCZUVuYWJsZWQpCi0gICAgICAgIG1fcHJvdmlkZXItPnNldEVu
YWJsZUhpZ2hBY2N1cmFjeSgqdGhpcywgaGlnaEFjY3VyYWN5U2hvdWxkQmVFbmFibGVkKTsKKyAg
ICBtX2NsaWVudFByb3ZpZGVyLT5zZXRFbmFibGVIaWdoQWNjdXJhY3koKnRoaXMsIGVuYWJsZWQp
OwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL1dlYkdlb2xvY2F0aW9uTWFuYWdlclByb3h5LmggYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9XZWJHZW9sb2NhdGlvbk1hbmFnZXJQcm94eS5oCmluZGV4IDc0OTM2ZTQ1YTBkODM4
M2E4YjRiM2Q2ZDU3OGM5YmQyMmJlM2ZhNWUuLmY5YTBjYTY0OTc4YTQ5YzkxMDAwYWRmMWM0Y2I0
YTAxMTI4N2UxMmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkdlb2xv
Y2F0aW9uTWFuYWdlclByb3h5LmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViR2Vv
bG9jYXRpb25NYW5hZ2VyUHJveHkuaApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQg
KEMpIDIwMTEsIDIwMTIsIDIwMTMgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICog
Q29weXJpZ2h0IChDKSAyMDExLTIwMjIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgog
ICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0zMSw5ICszMSwxNSBAQAogI2luY2x1
ZGUgIldlYkNvbnRleHRTdXBwbGVtZW50LmgiCiAjaW5jbHVkZSAiV2ViUGFnZVByb3h5SWRlbnRp
Zmllci5oIgogI2luY2x1ZGUgPFdlYkNvcmUvR2VvbG9jYXRpb25Qb3NpdGlvbkRhdGEuaD4KLSNp
bmNsdWRlIDx3dGYvSGFzaFNldC5oPgorI2luY2x1ZGUgPFdlYkNvcmUvUmVnaXN0cmFibGVEb21h
aW4uaD4KKyNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgorI2luY2x1ZGUgPHd0Zi9XZWFrSGFzaFNl
dC5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgogCisjaWYgUExBVEZPUk0oSU9T
X0ZBTUlMWSkKKyNpbmNsdWRlIDxXZWJDb3JlL0NvcmVMb2NhdGlvbkdlb2xvY2F0aW9uUHJvdmlk
ZXIuaD4KKyNlbmRpZgorCiBuYW1lc3BhY2UgQVBJIHsKIGNsYXNzIEdlb2xvY2F0aW9uUHJvdmlk
ZXI7CiB9CkBAIC00MywxMSArNDksMTYgQEAgbmFtZXNwYWNlIFdlYktpdCB7CiBjbGFzcyBXZWJH
ZW9sb2NhdGlvblBvc2l0aW9uOwogY2xhc3MgV2ViUHJvY2Vzc1Bvb2w7CiAKLWNsYXNzIFdlYkdl
b2xvY2F0aW9uTWFuYWdlclByb3h5IDogcHVibGljIEFQSTo6T2JqZWN0SW1wbDxBUEk6Ok9iamVj
dDo6VHlwZTo6R2VvbG9jYXRpb25NYW5hZ2VyPiwgcHVibGljIFdlYkNvbnRleHRTdXBwbGVtZW50
LCBwcml2YXRlIElQQzo6TWVzc2FnZVJlY2VpdmVyIHsKK2NsYXNzIFdlYkdlb2xvY2F0aW9uTWFu
YWdlclByb3h5IDogcHVibGljIEFQSTo6T2JqZWN0SW1wbDxBUEk6Ok9iamVjdDo6VHlwZTo6R2Vv
bG9jYXRpb25NYW5hZ2VyPiwgcHVibGljIFdlYkNvbnRleHRTdXBwbGVtZW50LCBwcml2YXRlIElQ
Qzo6TWVzc2FnZVJlY2VpdmVyCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKKyAgICAsIHB1Ymxp
YyBXZWJDb3JlOjpDb3JlTG9jYXRpb25HZW9sb2NhdGlvblByb3ZpZGVyOjpDbGllbnQKKyNlbmRp
ZgorewogcHVibGljOgogICAgIHN0YXRpYyBjb25zdCBjaGFyKiBzdXBwbGVtZW50TmFtZSgpOwog
CiAgICAgc3RhdGljIFJlZjxXZWJHZW9sb2NhdGlvbk1hbmFnZXJQcm94eT4gY3JlYXRlKFdlYlBy
b2Nlc3NQb29sKik7CisgICAgfldlYkdlb2xvY2F0aW9uTWFuYWdlclByb3h5KCk7CiAKICAgICB2
b2lkIHNldFByb3ZpZGVyKHN0ZDo6dW5pcXVlX3B0cjxBUEk6Okdlb2xvY2F0aW9uUHJvdmlkZXI+
JiYpOwogCkBAIC01NiwzNiArNjcsNTkgQEAgcHVibGljOgogI2lmIFBMQVRGT1JNKElPU19GQU1J
TFkpCiAgICAgdm9pZCByZXNldFBlcm1pc3Npb25zKCk7CiAjZW5kaWYKLSAgICBjb25zdCBzdGQ6
Om9wdGlvbmFsPFdlYkNvcmU6Okdlb2xvY2F0aW9uUG9zaXRpb25EYXRhPiYgbGFzdFBvc2l0aW9u
KCkgY29uc3QgeyByZXR1cm4gbV9sYXN0UG9zaXRpb247IH0KIAogICAgIHVzaW5nIEFQSTo6T2Jq
ZWN0OjpyZWY7CiAgICAgdXNpbmcgQVBJOjpPYmplY3Q6OmRlcmVmOwogCisgICAgdm9pZCB3ZWJQ
cm9jZXNzSXNHb2luZ0F3YXkoV2ViUHJvY2Vzc1Byb3h5Jik7CisKIHByaXZhdGU6CiAgICAgZXhw
bGljaXQgV2ViR2VvbG9jYXRpb25NYW5hZ2VyUHJveHkoV2ViUHJvY2Vzc1Bvb2wqKTsKIAogICAg
IC8vIFdlYkNvbnRleHRTdXBwbGVtZW50CiAgICAgdm9pZCBwcm9jZXNzUG9vbERlc3Ryb3llZCgp
IG92ZXJyaWRlOwotICAgIHZvaWQgcHJvY2Vzc0RpZENsb3NlKFdlYlByb2Nlc3NQcm94eSopIG92
ZXJyaWRlOwogICAgIHZvaWQgcmVmV2ViQ29udGV4dFN1cHBsZW1lbnQoKSBvdmVycmlkZTsKICAg
ICB2b2lkIGRlcmVmV2ViQ29udGV4dFN1cHBsZW1lbnQoKSBvdmVycmlkZTsKIAogICAgIC8vIElQ
Qzo6TWVzc2FnZVJlY2VpdmVyCiAgICAgdm9pZCBkaWRSZWNlaXZlTWVzc2FnZShJUEM6OkNvbm5l
Y3Rpb24mLCBJUEM6OkRlY29kZXImKSBvdmVycmlkZTsKIAotICAgIGJvb2wgaXNVcGRhdGluZygp
IGNvbnN0IHsgcmV0dXJuICFtX3VwZGF0ZVJlcXVlc3RlcnMuaXNFbXB0eSgpOyB9Ci0gICAgYm9v
bCBpc0hpZ2hBY2N1cmFjeUVuYWJsZWQoKSBjb25zdCB7IHJldHVybiAhbV9oaWdoQWNjdXJhY3lS
ZXF1ZXN0ZXJzLmlzRW1wdHkoKTsgfQorICAgIC8vIElQQyBtZXNzYWdlcy4KKyAgICB2b2lkIHN0
YXJ0VXBkYXRpbmcoSVBDOjpDb25uZWN0aW9uJiwgY29uc3QgV2ViQ29yZTo6UmVnaXN0cmFibGVE
b21haW4mLCBXZWJQYWdlUHJveHlJZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIGF1dGhvcml6YXRp
b25Ub2tlbiwgYm9vbCBlbmFibGVIaWdoQWNjdXJhY3kpOworICAgIHZvaWQgc3RvcFVwZGF0aW5n
KElQQzo6Q29ubmVjdGlvbiYsIGNvbnN0IFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluJik7Cisg
ICAgdm9pZCBzZXRFbmFibGVIaWdoQWNjdXJhY3koSVBDOjpDb25uZWN0aW9uJiwgY29uc3QgV2Vi
Q29yZTo6UmVnaXN0cmFibGVEb21haW4mLCBib29sKTsKKworICAgIHZvaWQgc3RhcnRVcGRhdGlu
Z1dpdGhQcm94eShXZWJQcm9jZXNzUHJveHkmLCBjb25zdCBXZWJDb3JlOjpSZWdpc3RyYWJsZURv
bWFpbiYsIFdlYlBhZ2VQcm94eUlkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgYXV0aG9yaXphdGlv
blRva2VuLCBib29sIGVuYWJsZUhpZ2hBY2N1cmFjeSk7CisgICAgdm9pZCBzdG9wVXBkYXRpbmdX
aXRoUHJveHkoV2ViUHJvY2Vzc1Byb3h5JiwgY29uc3QgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21h
aW4mKTsKKyAgICB2b2lkIHNldEVuYWJsZUhpZ2hBY2N1cmFjeVdpdGhQcm94eShXZWJQcm9jZXNz
UHJveHkmLCBjb25zdCBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiYsIGJvb2wpOwogCi0gICAg
dm9pZCBzdGFydFVwZGF0aW5nKElQQzo6Q29ubmVjdGlvbiYsIFdlYlBhZ2VQcm94eUlkZW50aWZp
ZXIsIGNvbnN0IFN0cmluZyYgYXV0aG9yaXphdGlvblRva2VuKTsKLSAgICB2b2lkIHN0b3BVcGRh
dGluZyhJUEM6OkNvbm5lY3Rpb24mKTsKLSAgICB2b2lkIHJlbW92ZVJlcXVlc3Rlcihjb25zdCBJ
UEM6OkNvbm5lY3Rpb246OkNsaWVudCopOwotICAgIHZvaWQgc2V0RW5hYmxlSGlnaEFjY3VyYWN5
KElQQzo6Q29ubmVjdGlvbiYsIGJvb2wpOworI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCisgICAg
Ly8gQ29yZUxvY2F0aW9uR2VvbG9jYXRpb25Qcm92aWRlcjo6Q2xpZW50CisgICAgdm9pZCBwb3Np
dGlvbkNoYW5nZWQoY29uc3QgU3RyaW5nJiB3ZWJzaXRlSWRlbnRpZmllciwgV2ViQ29yZTo6R2Vv
bG9jYXRpb25Qb3NpdGlvbkRhdGEmJikgZmluYWw7CisgICAgdm9pZCBlcnJvck9jY3VycmVkKGNv
bnN0IFN0cmluZyYgd2Vic2l0ZUlkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgZXJyb3JNZXNzYWdl
KSBmaW5hbDsKKyAgICB2b2lkIHJlc2V0R2VvbG9jYXRpb24oY29uc3QgU3RyaW5nJiB3ZWJzaXRl
SWRlbnRpZmllcikgZmluYWw7CisjZW5kaWYKKworICAgIHN0cnVjdCBQZXJEb21haW5EYXRhIHsK
KyAgICAgICAgV1RGX01BS0VfU1RSVUNUX0ZBU1RfQUxMT0NBVEVEOworICAgICAgICBXZWFrSGFz
aFNldDxXZWJQcm9jZXNzUHJveHk+IHdhdGNoZXJzOworICAgICAgICBXZWFrSGFzaFNldDxXZWJQ
cm9jZXNzUHJveHk+IHdhdGNoZXJzTmVlZGluZ0hpZ2hBY2N1cmFjeTsKKyAgICAgICAgc3RkOjpv
cHRpb25hbDxXZWJDb3JlOjpHZW9sb2NhdGlvblBvc2l0aW9uRGF0YT4gbGFzdFBvc2l0aW9uOwor
CisgICAgICAgIC8vIEZJWE1FOiBVc2UgZm9yIGFsbCBDb2NvYSBwb3J0cy4KKyNpZiBQTEFURk9S
TShJT1NfRkFNSUxZKQorICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8V2ViQ29yZTo6Q29yZUxvY2F0
aW9uR2VvbG9jYXRpb25Qcm92aWRlcj4gcHJvdmlkZXI7CisjZW5kaWYKKyAgICB9OwogCi0gICAg
SGFzaFNldDxjb25zdCBJUEM6OkNvbm5lY3Rpb246OkNsaWVudCo+IG1fdXBkYXRlUmVxdWVzdGVy
czsKLSAgICBIYXNoU2V0PGNvbnN0IElQQzo6Q29ubmVjdGlvbjo6Q2xpZW50Kj4gbV9oaWdoQWNj
dXJhY3lSZXF1ZXN0ZXJzOworICAgIGJvb2wgaXNVcGRhdGluZyhjb25zdCBQZXJEb21haW5EYXRh
JikgY29uc3Q7CisgICAgYm9vbCBpc0hpZ2hBY2N1cmFjeUVuYWJsZWQoY29uc3QgUGVyRG9tYWlu
RGF0YSYpIGNvbnN0OworICAgIHZvaWQgcHJvdmlkZXJTdGFydFVwZGF0aW5nKFBlckRvbWFpbkRh
dGEmLCBjb25zdCBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiYpOworICAgIHZvaWQgcHJvdmlk
ZXJTdG9wVXBkYXRpbmcoUGVyRG9tYWluRGF0YSYpOworICAgIHZvaWQgcHJvdmlkZXJTZXRFbmFi
bGVkSGlnaEFjY3VyYWN5KFBlckRvbWFpbkRhdGEmLCBib29sIGVuYWJsZWQpOwogCi0gICAgc3Rk
Ojp1bmlxdWVfcHRyPEFQSTo6R2VvbG9jYXRpb25Qcm92aWRlcj4gbV9wcm92aWRlcjsKLSAgICBz
dGQ6Om9wdGlvbmFsPFdlYkNvcmU6Okdlb2xvY2F0aW9uUG9zaXRpb25EYXRhPiBtX2xhc3RQb3Np
dGlvbjsKKyAgICBIYXNoTWFwPFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluLCBzdGQ6OnVuaXF1
ZV9wdHI8UGVyRG9tYWluRGF0YT4+IG1fcGVyRG9tYWluRGF0YTsKKyAgICBzdGQ6OnVuaXF1ZV9w
dHI8QVBJOjpHZW9sb2NhdGlvblByb3ZpZGVyPiBtX2NsaWVudFByb3ZpZGVyOwogfTsKIAogfSAv
LyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9X
ZWJHZW9sb2NhdGlvbk1hbmFnZXJQcm94eS5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL1dlYkdlb2xvY2F0aW9uTWFuYWdlclByb3h5Lm1lc3NhZ2VzLmluCmluZGV4IGU1ZTlj
MjdkMTRhNWZiNzI2ZmNjMmM4MWZmM2UxNjVlYTNlODQwYmUuLjkwNDFhOTBjMjUwZjhhZGQ2OGJi
MTNiM2FiYjU0YmViNjZjYjJkMjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L1dlYkdlb2xvY2F0aW9uTWFuYWdlclByb3h5Lm1lc3NhZ2VzLmluCisrKyBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL1dlYkdlb2xvY2F0aW9uTWFuYWdlclByb3h5Lm1lc3NhZ2VzLmluCkBAIC0y
MSw3ICsyMSw3IEBACiAjIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAKIG1lc3NhZ2VzIC0+IFdlYkdlb2xvY2F0aW9u
TWFuYWdlclByb3h5IHsKLSAgICBTdGFydFVwZGF0aW5nKFdlYktpdDo6V2ViUGFnZVByb3h5SWRl
bnRpZmllciBwYWdlUHJveHlJRCwgU3RyaW5nIGF1dGhvcml6YXRpb25Ub2tlbikgV2FudHNDb25u
ZWN0aW9uCi0gICAgU3RvcFVwZGF0aW5nKCkgV2FudHNDb25uZWN0aW9uCi0gICAgU2V0RW5hYmxl
SGlnaEFjY3VyYWN5KGJvb2wgZW5hYmxlZCkgV2FudHNDb25uZWN0aW9uCisgICAgU3RhcnRVcGRh
dGluZyhXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiByZWdpc3RyYWJsZURvbWFpbiwgV2ViS2l0
OjpXZWJQYWdlUHJveHlJZGVudGlmaWVyIHBhZ2VQcm94eUlELCBTdHJpbmcgYXV0aG9yaXphdGlv
blRva2VuLCBib29sIGVuYWJsZUhpZ2hBY2N1cmFjeSkgV2FudHNDb25uZWN0aW9uCisgICAgU3Rv
cFVwZGF0aW5nKFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluIHJlZ2lzdHJhYmxlRG9tYWluKSBX
YW50c0Nvbm5lY3Rpb24KKyAgICBTZXRFbmFibGVIaWdoQWNjdXJhY3koV2ViQ29yZTo6UmVnaXN0
cmFibGVEb21haW4gcmVnaXN0cmFibGVEb21haW4sIGJvb2wgZW5hYmxlZCkgV2FudHNDb25uZWN0
aW9uCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9v
bC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5jcHAKaW5kZXgg
ZjYwZDNlY2QyY2E2ZjBmYzczNjcwYzM5ZGEyYWI3NjAwMzVmMmY3NC4uZmExNzQyY2YzMmRhOTk1
MjczMjNkZmM3YzhiZjBhNzkwNjMwNDFmZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dl
YlByb2Nlc3NQb29sLmNwcApAQCAtNDMxLDkgKzQzMSw2IEBAIHZvaWQgV2ViUHJvY2Vzc1Bvb2w6
OnNjcmVlblByb3BlcnRpZXNTdGF0ZUNoYW5nZWQoKQogCiB2b2lkIFdlYlByb2Nlc3NQb29sOjpu
ZXR3b3JrUHJvY2Vzc0RpZFRlcm1pbmF0ZShOZXR3b3JrUHJvY2Vzc1Byb3h5JiBuZXR3b3JrUHJv
Y2Vzc1Byb3h5LCBOZXR3b3JrUHJvY2Vzc1Byb3h5OjpUZXJtaW5hdGlvblJlYXNvbiByZWFzb24p
CiB7Ci0gICAgZm9yIChhdXRvJiBzdXBwbGVtZW50IDogbV9zdXBwbGVtZW50cy52YWx1ZXMoKSkK
LSAgICAgICAgc3VwcGxlbWVudC0+cHJvY2Vzc0RpZENsb3NlKCZuZXR3b3JrUHJvY2Vzc1Byb3h5
KTsKLQogICAgIGlmIChyZWFzb24gPT0gTmV0d29ya1Byb2Nlc3NQcm94eTo6VGVybWluYXRpb25S
ZWFzb246OkNyYXNoKQogICAgICAgICBtX2NsaWVudC5uZXR3b3JrUHJvY2Vzc0RpZENyYXNoKHRo
aXMpOwogCkBAIC0xMDU3LDcgKzEwNTQsNyBAQCB2b2lkIFdlYlByb2Nlc3NQb29sOjpkaXNjb25u
ZWN0UHJvY2VzcyhXZWJQcm9jZXNzUHJveHkmIHByb2Nlc3MpCiAgICAgaWYgKHByb2Nlc3MuaXNS
dW5uaW5nV29ya2VycygpKQogICAgICAgICByZW1vdmVGcm9tUmVtb3RlV29ya2VyUHJvY2Vzc2Vz
KHByb2Nlc3MpOwogCi0gICAgc3RhdGljX2Nhc3Q8V2ViQ29udGV4dFN1cHBsZW1lbnQqPihzdXBw
bGVtZW50PFdlYkdlb2xvY2F0aW9uTWFuYWdlclByb3h5PigpKS0+cHJvY2Vzc0RpZENsb3NlKCZw
cm9jZXNzKTsKKyAgICBzdXBwbGVtZW50PFdlYkdlb2xvY2F0aW9uTWFuYWdlclByb3h5PigpLT53
ZWJQcm9jZXNzSXNHb2luZ0F3YXkocHJvY2Vzcyk7CiAKICAgICBtX3Byb2Nlc3Nlcy5yZW1vdmVG
aXJzdChwcm9jZXNzKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9z
L1dLR2VvbG9jYXRpb25Qcm92aWRlcklPUy5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lv
cy9XS0dlb2xvY2F0aW9uUHJvdmlkZXJJT1MubW0KaW5kZXggZjVlOWZkN2JjMzQxMjk3YWY3YjI0
ZTY3NDE2MzMyY2Q5NmFkNzM5Yy4uZTYzOGFkOWM0ZThiNzM4YmYxNjUxNGQ3MTlkYzFiZThhNzZi
NTlkNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dLR2VvbG9jYXRp
b25Qcm92aWRlcklPUy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tHZW9s
b2NhdGlvblByb3ZpZGVySU9TLm1tCkBAIC01MSw3ICs1MSw2IEBACiAjaW1wb3J0IDx3dGYvVVJM
Lmg+CiAKIC8vIEZJWE1FOiBSZW1vdmUgdXNlIG9mIFdlYktpdDEgZnJvbSBXZWJLaXQyCi0jaW1w
b3J0IDxXZWJLaXQvV2ViR2VvbG9jYXRpb25Db3JlTG9jYXRpb25Qcm92aWRlci5oPgogI2ltcG9y
dCA8V2ViS2l0L1dlYkFsbG93RGVueVBvbGljeUxpc3RlbmVyLmg+CiAKIEFMTE9XX0RFUFJFQ0FU
RURfREVDTEFSQVRJT05TX0JFR0lOCkBAIC01OSw5ICs1OCw2IEBAIEFMTE9XX0RFUFJFQ0FURURf
REVDTEFSQVRJT05TX0JFR0lOCiBAaW50ZXJmYWNlIFdLR2VvbG9jYXRpb25Qcm92aWRlcklPUyAo
X1dLR2VvbG9jYXRpb25Db3JlTG9jYXRpb25MaXN0ZW5lcikgPF9XS0dlb2xvY2F0aW9uQ29yZUxv
Y2F0aW9uTGlzdGVuZXI+CiBAZW5kCiAKLUBpbnRlcmZhY2UgV0tMZWdhY3lDb3JlTG9jYXRpb25Q
cm92aWRlciA6IE5TT2JqZWN0PF9XS0dlb2xvY2F0aW9uQ29yZUxvY2F0aW9uUHJvdmlkZXIsIFdl
Ykdlb2xvY2F0aW9uQ29yZUxvY2F0aW9uVXBkYXRlTGlzdGVuZXI+Ci1AZW5kCi0KIEBpbnRlcmZh
Y2UgV0tXZWJBbGxvd0RlbnlQb2xpY3lMaXN0ZW5lciA6IE5TT2JqZWN0PFdlYkFsbG93RGVueVBv
bGljeUxpc3RlbmVyPgogLSAoaWQpaW5pdFdpdGhDb21wbGV0aW9uSGFuZGxlcjooRnVuY3Rpb248
dm9pZChib29sKT4mJiljb21wbGV0aW9uSGFuZGxlcjsKIC0gKHZvaWQpZGVueU9ubHlUaGlzUmVx
dWVzdCBOT19SRVRVUk5fRFVFX1RPX0FTU0VSVDsKQEAgLTE0NiwyNSArMTQyLDQyIEBAIC0gKGlk
KWluaXRXaXRoUHJvY2Vzc1Bvb2w6KFdlYktpdDo6V2ViUHJvY2Vzc1Bvb2wmKXByb2Nlc3NQb29s
CiAgICAgc2VsZiA9IFtzdXBlciBpbml0XTsKICAgICBpZiAoIXNlbGYpCiAgICAgICAgIHJldHVy
biBuaWw7Ci0gICAgX2dlb2xvY2F0aW9uTWFuYWdlciA9IHByb2Nlc3NQb29sLnN1cHBsZW1lbnQ8
V2ViS2l0OjpXZWJHZW9sb2NhdGlvbk1hbmFnZXJQcm94eT4oKTsKLSAgICBXS0dlb2xvY2F0aW9u
UHJvdmlkZXJWMSBwcm92aWRlckNhbGxiYWNrID0gewotICAgICAgICB7IDEsIHNlbGYgfSwKLSAg
ICAgICAgc3RhcnRVcGRhdGluZ0NhbGxiYWNrLAotICAgICAgICBzdG9wVXBkYXRpbmdDYWxsYmFj
aywKLSAgICAgICAgc2V0RW5hYmxlSGlnaEFjY3VyYWN5Ci0gICAgfTsKLSAgICBXS0dlb2xvY2F0
aW9uTWFuYWdlclNldFByb3ZpZGVyKHRvQVBJKF9nZW9sb2NhdGlvbk1hbmFnZXIuZ2V0KCkpLCAm
cHJvdmlkZXJDYWxsYmFjay5iYXNlKTsKLSAgICBfY29yZUxvY2F0aW9uUHJvdmlkZXIgPSB3cmFw
cGVyKHByb2Nlc3NQb29sKS5fY29yZUxvY2F0aW9uUHJvdmlkZXIgPzogYWRvcHROUyhzdGF0aWNf
Y2FzdDxpZCA8X1dLR2VvbG9jYXRpb25Db3JlTG9jYXRpb25Qcm92aWRlcj4+KFtbV0tMZWdhY3lD
b3JlTG9jYXRpb25Qcm92aWRlciBhbGxvY10gaW5pdF0pKTsKLSAgICBbX2NvcmVMb2NhdGlvblBy
b3ZpZGVyIHNldExpc3RlbmVyOnNlbGZdOworCisgICAgLy8gT24gaU9TLCBXZWJLaXQgbm9ybWFs
bHkgcHJvdmlkZXMgdGhlIGxvY2F0aW9uLiBIb3dldmVyLCBpZiB0aGUgY2xpZW50IHNldHMgYSBj
b3JlTG9jYXRpb25Qcm92aWRlciwgdGhlbiB3ZSB1c2UgdGhhdCBvbmUgaW5zdGVhZC4KKyAgICAv
LyBUaGlzIGlzIHVzZWZ1bCBmb3IgV2ViS2l0VGVzdFJ1bm5lciB0byBwcm92aWRlIGEgZHVtbXkg
Z2VvbG9jYXRpb24gcHJvdmlkZXIuIEl0IGlzIGFsc28gdXNlZCBieSBjZXJ0YWluIGFwcHMgdG8g
ZGVueSBhbGwKKyAgICAvLyBnZW9sb2NhdGlvbiBhdXRob3JpemF0aW9uIGFzIGEgd2F5IHRvIGRp
c2FibGUgc3VwcG9ydCBmb3IgZ2VvbG9jYXRpb24uCisgICAgaWYgKHdyYXBwZXIocHJvY2Vzc1Bv
b2wpLl9jb3JlTG9jYXRpb25Qcm92aWRlcikgeworICAgICAgICBfZ2VvbG9jYXRpb25NYW5hZ2Vy
ID0gcHJvY2Vzc1Bvb2wuc3VwcGxlbWVudDxXZWJLaXQ6OldlYkdlb2xvY2F0aW9uTWFuYWdlclBy
b3h5PigpOworICAgICAgICBXS0dlb2xvY2F0aW9uUHJvdmlkZXJWMSBwcm92aWRlckNhbGxiYWNr
ID0geworICAgICAgICAgICAgeyAxLCBzZWxmIH0sCisgICAgICAgICAgICBzdGFydFVwZGF0aW5n
Q2FsbGJhY2ssCisgICAgICAgICAgICBzdG9wVXBkYXRpbmdDYWxsYmFjaywKKyAgICAgICAgICAg
IHNldEVuYWJsZUhpZ2hBY2N1cmFjeQorICAgICAgICB9OworICAgICAgICBXS0dlb2xvY2F0aW9u
TWFuYWdlclNldFByb3ZpZGVyKHRvQVBJKF9nZW9sb2NhdGlvbk1hbmFnZXIuZ2V0KCkpLCAmcHJv
dmlkZXJDYWxsYmFjay5iYXNlKTsKKyAgICAgICAgX2NvcmVMb2NhdGlvblByb3ZpZGVyID0gd3Jh
cHBlcihwcm9jZXNzUG9vbCkuX2NvcmVMb2NhdGlvblByb3ZpZGVyOworICAgICAgICBbX2NvcmVM
b2NhdGlvblByb3ZpZGVyIHNldExpc3RlbmVyOnNlbGZdOworICAgIH0KICAgICByZXR1cm4gc2Vs
ZjsKIH0KIAogLSAodm9pZClkZWNpZGVQb2xpY3lGb3JHZW9sb2NhdGlvblJlcXVlc3RGcm9tT3Jp
Z2luOihXZWJLaXQ6OkZyYW1lSW5mb0RhdGEmJilmcmFtZUluZm8gY29tcGxldGlvbkhhbmRsZXI6
KEZ1bmN0aW9uPHZvaWQoYm9vbCk+JiYpY29tcGxldGlvbkhhbmRsZXIgdmlldzooV0tXZWJWaWV3
ICopY29udGVudFZpZXcKIHsKLSAgICAvLyBTdGVwIDE6IGFzayB0aGUgdXNlciBpZiB0aGUgYXBw
IGNhbiB1c2UgR2VvbG9jYXRpb24uCisgICAgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4gcmVn
aXN0cmFibGVEb21haW4oZnJhbWVJbmZvLnNlY3VyaXR5T3JpZ2luKTsKICAgICBHZW9sb2NhdGlv
blJlcXVlc3REYXRhIGdlb2xvY2F0aW9uUmVxdWVzdERhdGEgeyBbY29udGVudFZpZXcgVVJMXSwg
V1RGTW92ZShmcmFtZUluZm8pLCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSwgY29udGVudFZp
ZXcgfTsKICAgICBfcmVxdWVzdHNXYWl0aW5nRm9yQ29yZUxvY2F0aW9uQXV0aG9yaXphdGlvbi5h
cHBlbmQoV1RGTW92ZShnZW9sb2NhdGlvblJlcXVlc3REYXRhKSk7Ci0gICAgW19jb3JlTG9jYXRp
b25Qcm92aWRlciByZXF1ZXN0R2VvbG9jYXRpb25BdXRob3JpemF0aW9uXTsKKyAgICBpZiAoX2Nv
cmVMb2NhdGlvblByb3ZpZGVyKSB7CisgICAgICAgIC8vIFN0ZXAgMTogYXNrIHRoZSB1c2VyIGlm
IHRoZSBhcHAgY2FuIHVzZSBHZW9sb2NhdGlvbi4KKyAgICAgICAgW19jb3JlTG9jYXRpb25Qcm92
aWRlciByZXF1ZXN0R2VvbG9jYXRpb25BdXRob3JpemF0aW9uXTsKKyAgICB9IGVsc2UgeworICAg
ICAgICAvLyBTdGVwIDE6IGFzayBDb3JlTG9jYXRpb24gaWYgdGhlIGFwcCBjYW4gdXNlIEdlb2xv
Y2F0aW9uLgorICAgICAgICBXZWJDb3JlOjpDb3JlTG9jYXRpb25HZW9sb2NhdGlvblByb3ZpZGVy
OjpyZXF1ZXN0QXV0aG9yaXphdGlvbihyZWdpc3RyYWJsZURvbWFpbiwgW3NlbGYsIHN0cm9uZ1Nl
bGYgPSByZXRhaW5QdHIoc2VsZildKGJvb2wgYXV0aG9yaXplZCkgeworICAgICAgICAgICAgaWYg
KGF1dGhvcml6ZWQpCisgICAgICAgICAgICAgICAgW3NlbGYgZ2VvbG9jYXRpb25BdXRob3JpemF0
aW9uR3JhbnRlZF07CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgW3NlbGYgZ2Vv
bG9jYXRpb25BdXRob3JpemF0aW9uRGVuaWVkXTsKKyAgICAgICAgfSk7CisgICAgfQogfQogQGVu
ZAogCkBAIC0xNzQsNyArMTg3LDcgQEAgQGltcGxlbWVudGF0aW9uIFdLR2VvbG9jYXRpb25Qcm92
aWRlcklPUyAoV2ViR2VvbG9jYXRpb25Db3JlTG9jYXRpb25VcGRhdGVMaXN0ZW4KIAogLSAodm9p
ZClnZW9sb2NhdGlvbkF1dGhvcml6YXRpb25HcmFudGVkCiB7Ci0gICAgLy8gU3RlcCAyOiBhc2sg
dGhlIHVzZXIgaWYgdGhpcyBwYXJ0aWN1bGFyIHBhZ2UgY2FuIHVzZSBnZWxvY2F0aW9uLgorICAg
IC8vIFN0ZXAgMjogYXNrIHRoZSB1c2VyIGlmIHRoaXMgcGFydGljdWxhciBwYWdlIGNhbiB1c2Ug
Z2VvbG9jYXRpb24uCiAgICAgaWYgKF9yZXF1ZXN0c1dhaXRpbmdGb3JDb3JlTG9jYXRpb25BdXRo
b3JpemF0aW9uLmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuOwogCkBAIC0yMjYsODEgKzIzOSw2
IEBAIC0gKHZvaWQpcmVzZXRHZW9sb2NhdGlvbgogCiBAZW5kCiAKLSMgcHJhZ21hIG1hcmsgLSBJ
bXBsZW1lbnRhdGlvbiBvZiBXS0xlZ2FjeUNvcmVMb2NhdGlvblByb3ZpZGVyCi0KLUBpbXBsZW1l
bnRhdGlvbiBXS0xlZ2FjeUNvcmVMb2NhdGlvblByb3ZpZGVyIHsKLSAgICBpZCA8X1dLR2VvbG9j
YXRpb25Db3JlTG9jYXRpb25MaXN0ZW5lcj4gX2xpc3RlbmVyOwotICAgIFJldGFpblB0cjxXZWJH
ZW9sb2NhdGlvbkNvcmVMb2NhdGlvblByb3ZpZGVyPiBfcHJvdmlkZXI7Ci19Ci0KLS8vIDxfV0tH
ZW9sb2NhdGlvbkNvcmVMb2NhdGlvblByb3ZpZGVyPiBNZXRob2RzCi0KLS0gKHZvaWQpc2V0TGlz
dGVuZXI6KGlkPF9XS0dlb2xvY2F0aW9uQ29yZUxvY2F0aW9uTGlzdGVuZXI+KWxpc3RlbmVyCi17
Ci0gICAgQVNTRVJUKGxpc3RlbmVyICYmICFfbGlzdGVuZXIgJiYgIV9wcm92aWRlcik7Ci0gICAg
X2xpc3RlbmVyID0gbGlzdGVuZXI7Ci0gICAgX3Byb3ZpZGVyID0gYWRvcHROUyhbW1dlYkdlb2xv
Y2F0aW9uQ29yZUxvY2F0aW9uUHJvdmlkZXIgYWxsb2NdIGluaXRXaXRoTGlzdGVuZXI6c2VsZl0p
OwotfQotCi0tICh2b2lkKXJlcXVlc3RHZW9sb2NhdGlvbkF1dGhvcml6YXRpb24KLXsKLSAgICBB
U1NFUlQoX3Byb3ZpZGVyKTsKLSAgICBbX3Byb3ZpZGVyIHJlcXVlc3RHZW9sb2NhdGlvbkF1dGhv
cml6YXRpb25dOwotfQotCi0tICh2b2lkKXN0YXJ0Ci17Ci0gICAgQVNTRVJUKF9wcm92aWRlcik7
Ci0gICAgW19wcm92aWRlciBzdGFydF07Ci19Ci0KLS0gKHZvaWQpc3RvcAotewotICAgIEFTU0VS
VChfcHJvdmlkZXIpOwotICAgIFtfcHJvdmlkZXIgc3RvcF07Ci19Ci0KLS0gKHZvaWQpc2V0RW5h
YmxlSGlnaEFjY3VyYWN5OihCT09MKWZsYWcKLXsKLSAgICBBU1NFUlQoX3Byb3ZpZGVyKTsKLSAg
ICBbX3Byb3ZpZGVyIHNldEVuYWJsZUhpZ2hBY2N1cmFjeTpmbGFnXTsKLX0KLQotLy8gPFdlYkdl
b2xvY2F0aW9uQ29yZUxvY2F0aW9uVXBkYXRlTGlzdGVuZXI+IE1ldGhvZHMKLQotLSAodm9pZCln
ZW9sb2NhdGlvbkF1dGhvcml6YXRpb25HcmFudGVkCi17Ci0gICAgQVNTRVJUKF9saXN0ZW5lcik7
Ci0gICAgW19saXN0ZW5lciBnZW9sb2NhdGlvbkF1dGhvcml6YXRpb25HcmFudGVkXTsKLX0KLQot
LSAodm9pZClnZW9sb2NhdGlvbkF1dGhvcml6YXRpb25EZW5pZWQKLXsKLSAgICBBU1NFUlQoX2xp
c3RlbmVyKTsKLSAgICBbX2xpc3RlbmVyIGdlb2xvY2F0aW9uQXV0aG9yaXphdGlvbkRlbmllZF07
Ci19Ci0KLS0gKHZvaWQpcG9zaXRpb25DaGFuZ2VkOihXZWJDb3JlOjpHZW9sb2NhdGlvblBvc2l0
aW9uRGF0YSYmKWNvcmVQb3NpdGlvbgotewotICAgIEFTU0VSVChfbGlzdGVuZXIpOwotICAgIGF1
dG8gcG9zaXRpb24gPSBXZWJLaXQ6OldlYkdlb2xvY2F0aW9uUG9zaXRpb246OmNyZWF0ZShXVEZN
b3ZlKGNvcmVQb3NpdGlvbikpOwotICAgIFtfbGlzdGVuZXIgcG9zaXRpb25DaGFuZ2VkOndyYXBw
ZXIocG9zaXRpb24uZ2V0KCkpXTsKLX0KLQotLSAodm9pZCllcnJvck9jY3VycmVkOihOU1N0cmlu
ZyAqKWVycm9yTWVzc2FnZQotewotICAgIEFTU0VSVChfbGlzdGVuZXIpOwotICAgIFtfbGlzdGVu
ZXIgZXJyb3JPY2N1cnJlZDplcnJvck1lc3NhZ2VdOwotfQotCi0tICh2b2lkKXJlc2V0R2VvbG9j
YXRpb24KLXsKLSAgICBBU1NFUlQoX2xpc3RlbmVyKTsKLSAgICBbX2xpc3RlbmVyIHJlc2V0R2Vv
bG9jYXRpb25dOwotfQotCi1AZW5kCi0KICMgcHJhZ21hIG1hcmsgLSBJbXBsZW1lbnRhdGlvbiBv
ZiBXS1dlYkFsbG93RGVueVBvbGljeUxpc3RlbmVyCiBAaW1wbGVtZW50YXRpb24gV0tXZWJBbGxv
d0RlbnlQb2xpY3lMaXN0ZW5lciB7CiAgICAgRnVuY3Rpb248dm9pZChib29sKT4gX2NvbXBsZXRp
b25IYW5kbGVyOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3By
b2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2oKaW5kZXggMWVjOGIyYjg1Y2UxZTU2NDM3ZjJlZmQxYzQ0YzA2OTE2MDY5MTkzMC4uY2My
OTYwOTdhODc2MzhmYTZlZjNlODYwYjc4MzJlYWY4ZWI5ZWRiYSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2Vi
S2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC00MzE5LDYgKzQzMTksNyBA
QAogCQk0NkNFM0IxMDIzRDhDODNEMDAxNkE5NkEgLyogV2ViQmFja0ZvcndhcmRMaXN0Q291bnRz
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYkJhY2tGb3J3YXJkTGlzdENv
dW50cy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0NkQ0OEZDQzI3OTlEN0REMDA3
RDIwMTQgLyogV2ViU2hhcmVkV29ya2VyU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbi5jcHAgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5jcHA7IHBhdGggPSBXZWJTaGFyZWRXb3JrZXJTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9u
LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDZENDhGQ0QyNzk5RDdERTAwN0Qy
MDE0IC8qIFdlYlNoYXJlZFdvcmtlclNlcnZlclRvQ29udGV4dENvbm5lY3Rpb24uaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gV2ViU2hhcmVkV29ya2VyU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbi5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OworCQk0NkRBMjg1NzI3QjczRTc2MDA4OUQzMzkgLyogV2Vi
R2VvbG9jYXRpb25NYW5hZ2VyUHJveHlDb2NvYS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXZWJH
ZW9sb2NhdGlvbk1hbmFnZXJQcm94eUNvY29hLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJNDZERjA2MzkxRjM5MDVFNTAwMTk4MEJCIC8qIE5ldHdvcmtDT1JTUHJlZmxpZ2h0Q2hl
Y2tlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBOZXR3b3JrQ09S
U1ByZWZsaWdodENoZWNrZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0NkRG
MDYzQTFGMzkwNUU1MDAxOTgwQkIgLyogTmV0d29ya0NPUlNQcmVmbGlnaHRDaGVja2VyLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE5ldHdvcmtDT1JTUHJlZmxpZ2h0Q2hlY2tl
ci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0NkU5NzYwQTI3NTdGNkM5MDBBQ0RE
MzcgLyogV2ViQnJvYWRjYXN0Q2hhbm5lbFJlZ2lzdHJ5Lm1lc3NhZ2VzLmluICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
dGV4dDsgcGF0aCA9IFdlYkJyb2FkY2FzdENoYW5uZWxSZWdpc3RyeS5tZXNzYWdlcy5pbjsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTc2MTEsNiArNzYxMiw3IEBACiAJCQkJNTJENUEx
QUExQzU3NDk0RTAwREUzNEEzIC8qIFZpZGVvRnVsbHNjcmVlbk1hbmFnZXJQcm94eS5oICovLAog
CQkJCTUyRDVBMUFCMUM1NzQ5NEUwMERFMzRBMyAvKiBWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyUHJv
eHkubWVzc2FnZXMuaW4gKi8sCiAJCQkJNTJENUExQUMxQzU3NDk0RTAwREUzNEEzIC8qIFZpZGVv
RnVsbHNjcmVlbk1hbmFnZXJQcm94eS5tbSAqLywKKwkJCQk0NkRBMjg1NzI3QjczRTc2MDA4OUQz
MzkgLyogV2ViR2VvbG9jYXRpb25NYW5hZ2VyUHJveHlDb2NvYS5jcHAgKi8sCiAJCQkJQzE4RjNB
MTMyNTYzMzJBNjAwNzk3RTY2IC8qIFdlYkluc3BlY3RvclByZWZlcmVuY2VPYnNlcnZlci5oICov
LAogCQkJCUMxOEYzQTE0MjU2MzMzNDMwMDc5N0U2NiAvKiBXZWJJbnNwZWN0b3JQcmVmZXJlbmNl
T2JzZXJ2ZXIubW0gKi8sCiAJCQkJQ0RGMUI5MTkyNjcwMjFENjAwMDdFQzEwIC8qIFdlYktpdFN3
aWZ0U29mdExpbmsuaCAqLywKQEAgLTEzNDg2LDYgKzEzNDg4LDcgQEAKIAkJCQlFMThFNjkxODE2
OUI2NjdCMDA5QjY2NzAgLyogU2VjSXRlbVNoaW1Qcm94eU1lc3NhZ2VzLmggaW4gSGVhZGVycyAq
LywKIAkJCQk1NzBBQjhGMzIwQUUzQkQ3MDBCOEJFODcgLyogU2VjS2V5UHJveHlTdG9yZS5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJNTE0RDlGNTcxOTExOUQzNTAwMDA2M0E3IC8qIFNlcnZpY2VzQ29u
dHJvbGxlci5oIGluIEhlYWRlcnMgKi8sCisJCQkJNTE2NDY1ODAyN0E5Qzc3NDAwRTFGMkJBIC8q
IFNlcnZpY2VXb3JrZXJOb3RpZmljYXRpb25IYW5kbGVyLmggaW4gSGVhZGVycyAqLywKIAkJCQkx
QUZERTY1QTE5NTRBNDJCMDBDNDhGRkEgLyogU2Vzc2lvblN0YXRlLmggaW4gSGVhZGVycyAqLywK
IAkJCQkxQTAwMkQ0OTE5NkIzNDVEMDBCOUFENDQgLyogU2Vzc2lvblN0YXRlQ29kaW5nLmggaW4g
SGVhZGVycyAqLywKIAkJCQk5M0U3OTlDRTI3NjA0OTdCMDA3NDAwOEEgLyogU2Vzc2lvblN0b3Jh
Z2VNYW5hZ2VyLmggaW4gSGVhZGVycyAqLywKQEAgLTEzOTM0LDcgKzEzOTM3LDYgQEAKIAkJCQlC
QzRBNjI5NzE0NzMxM0EwMDA2QzY4MUEgLyogV0tDb25uZWN0aW9uUmVmLmggaW4gSGVhZGVycyAq
LywKIAkJCQlFNTk2REQ2QTI1MUU3MUQ0MDBDMjc1QTcgLyogV0tDb250YWN0UGlja2VyLmggaW4g
SGVhZGVycyAqLywKIAkJCQk1Q0QyODY1NDFFNzIzNUIxMDA5NEZEQzggLyogV0tDb250ZW50UnVs
ZUxpc3QuaCBpbiBIZWFkZXJzICovLAotCQkJCTUxNjQ2NTgwMjdBOUM3NzQwMEUxRjJCQSAvKiBT
ZXJ2aWNlV29ya2VyTm90aWZpY2F0aW9uSGFuZGxlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNUNE
Mjg2NTUxRTcyMzVCODAwOTRGREM4IC8qIFdLQ29udGVudFJ1bGVMaXN0SW50ZXJuYWwuaCBpbiBI
ZWFkZXJzICovLAogCQkJCTVDNTEzOURCMjU5MjdEODAwMDlDM0UzMCAvKiBXS0NvbnRlbnRSdWxl
TGlzdFByaXZhdGUuaCBpbiBIZWFkZXJzICovLAogCQkJCTVDRDI4NjUxMUU3MjM1OTkwMDk0RkRD
OCAvKiBXS0NvbnRlbnRSdWxlTGlzdFN0b3JlLmggaW4gSGVhZGVycyAqLywKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HZW9sb2NhdGlvbi9XZWJHZW9sb2NhdGlvbk1hbmFn
ZXIuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dlb2xvY2F0aW9uL1dlYkdlb2xvY2F0
aW9uTWFuYWdlci5jcHAKaW5kZXggNWE5YzlmNGQyYTFjZDY2YTRiNjc1OWI1OTM4N2VhMmNmNTVi
MmFhOC4uZjlkODc1YzE0OTQ0YWIwMzNlODdhOWZlMjY5NWQxNWY1NGY3ZmNjNyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dlb2xvY2F0aW9uL1dlYkdlb2xvY2F0aW9uTWFu
YWdlci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dlb2xvY2F0aW9uL1dlYkdl
b2xvY2F0aW9uTWFuYWdlci5jcHAKQEAgLTM5LDYgKzM5LDE0IEBACiBuYW1lc3BhY2UgV2ViS2l0
IHsKIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCitzdGF0aWMgUmVnaXN0cmFibGVEb21haW4g
cmVnaXN0cmFibGVEb21haW5Gb3JQYWdlKFdlYlBhZ2UmIHBhZ2UpCit7CisgICAgYXV0byogZG9j
dW1lbnQgPSBwYWdlLmNvcmVQYWdlKCkgPyBwYWdlLmNvcmVQYWdlKCktPm1haW5GcmFtZSgpLmRv
Y3VtZW50KCkgOiBudWxscHRyOworICAgIGlmICghZG9jdW1lbnQpCisgICAgICAgIHJldHVybiB7
IH07CisgICAgcmV0dXJuIFJlZ2lzdHJhYmxlRG9tYWluIHsgZG9jdW1lbnQtPnVybCgpIH07Cit9
CisKIGNvbnN0IGNoYXIqIFdlYkdlb2xvY2F0aW9uTWFuYWdlcjo6c3VwcGxlbWVudE5hbWUoKQog
ewogICAgIHJldHVybiAiV2ViR2VvbG9jYXRpb25NYW5hZ2VyIjsKQEAgLTUwLDg4ICs1OCwxNDAg
QEAgV2ViR2VvbG9jYXRpb25NYW5hZ2VyOjpXZWJHZW9sb2NhdGlvbk1hbmFnZXIoV2ViUHJvY2Vz
cyYgcHJvY2VzcykKICAgICBtX3Byb2Nlc3MuYWRkTWVzc2FnZVJlY2VpdmVyKE1lc3NhZ2VzOjpX
ZWJHZW9sb2NhdGlvbk1hbmFnZXI6Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSwgKnRoaXMpOwogfQog
Ci12b2lkIFdlYkdlb2xvY2F0aW9uTWFuYWdlcjo6cmVnaXN0ZXJXZWJQYWdlKFdlYlBhZ2UmIHBh
Z2UsIGNvbnN0IFN0cmluZyYgYXV0aG9yaXphdGlvblRva2VuKQotewotICAgIGJvb2wgd2FzVXBk
YXRpbmcgPSBpc1VwZGF0aW5nKCk7CitXZWJHZW9sb2NhdGlvbk1hbmFnZXI6On5XZWJHZW9sb2Nh
dGlvbk1hbmFnZXIoKSA9IGRlZmF1bHQ7CiAKLSAgICBtX3BhZ2VTZXQuYWRkKHBhZ2UpOwordm9p
ZCBXZWJHZW9sb2NhdGlvbk1hbmFnZXI6OnJlZ2lzdGVyV2ViUGFnZShXZWJQYWdlJiBwYWdlLCBj
b25zdCBTdHJpbmcmIGF1dGhvcml6YXRpb25Ub2tlbiwgYm9vbCBuZWVkc0hpZ2hBY2N1cmFjeSkK
K3sKKyAgICBhdXRvIHJlZ2lzdHJhYmxlRG9tYWluID0gcmVnaXN0cmFibGVEb21haW5Gb3JQYWdl
KHBhZ2UpOworICAgIGlmIChyZWdpc3RyYWJsZURvbWFpbi5zdHJpbmcoKS5pc0VtcHR5KCkpCisg
ICAgICAgIHJldHVybjsKKworICAgIGF1dG8mIHBhZ2VTZXRzID0gbV9wYWdlU2V0cy5hZGQocmVn
aXN0cmFibGVEb21haW4sIFBhZ2VTZXRzKCkpLml0ZXJhdG9yLT52YWx1ZTsKKyAgICBib29sIHdh
c1VwZGF0aW5nID0gaXNVcGRhdGluZyhwYWdlU2V0cyk7CisgICAgYm9vbCBoaWdoQWNjdXJhY3lX
YXNFbmFibGVkID0gaXNIaWdoQWNjdXJhY3lFbmFibGVkKHBhZ2VTZXRzKTsKKworICAgIHBhZ2VT
ZXRzLnBhZ2VTZXQuYWRkKHBhZ2UpOworICAgIGlmIChuZWVkc0hpZ2hBY2N1cmFjeSkKKyAgICAg
ICAgcGFnZVNldHMuaGlnaEFjY3VyYWN5UGFnZVNldC5hZGQocGFnZSk7CisgICAgbV9wYWdlVG9S
ZWdpc3RyYWJsZURvbWFpbi5hZGQoJnBhZ2UsIHJlZ2lzdHJhYmxlRG9tYWluKTsKKworICAgIGlm
ICghd2FzVXBkYXRpbmcpIHsKKyAgICAgICAgbV9wcm9jZXNzLnBhcmVudFByb2Nlc3NDb25uZWN0
aW9uKCktPnNlbmQoTWVzc2FnZXM6OldlYkdlb2xvY2F0aW9uTWFuYWdlclByb3h5OjpTdGFydFVw
ZGF0aW5nKHJlZ2lzdHJhYmxlRG9tYWluLCBwYWdlLndlYlBhZ2VQcm94eUlkZW50aWZpZXIoKSwg
YXV0aG9yaXphdGlvblRva2VuLCBuZWVkc0hpZ2hBY2N1cmFjeSksIDApOworICAgICAgICByZXR1
cm47CisgICAgfQogCi0gICAgaWYgKCF3YXNVcGRhdGluZykKLSAgICAgICAgbV9wcm9jZXNzLnBh
cmVudFByb2Nlc3NDb25uZWN0aW9uKCktPnNlbmQoTWVzc2FnZXM6OldlYkdlb2xvY2F0aW9uTWFu
YWdlclByb3h5OjpTdGFydFVwZGF0aW5nKHBhZ2Uud2ViUGFnZVByb3h5SWRlbnRpZmllcigpLCBh
dXRob3JpemF0aW9uVG9rZW4pLCAwKTsKKyAgICBib29sIGhpZ2hBY2N1cmFjeVNob3VsZEJlRW5h
YmxlZCA9IGlzSGlnaEFjY3VyYWN5RW5hYmxlZChwYWdlU2V0cyk7CisgICAgaWYgKGhpZ2hBY2N1
cmFjeVdhc0VuYWJsZWQgIT0gaGlnaEFjY3VyYWN5U2hvdWxkQmVFbmFibGVkKQorICAgICAgICBt
X3Byb2Nlc3MucGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+c2VuZChNZXNzYWdlczo6V2ViR2Vv
bG9jYXRpb25NYW5hZ2VyUHJveHk6OlNldEVuYWJsZUhpZ2hBY2N1cmFjeShyZWdpc3RyYWJsZURv
bWFpbiwgaGlnaEFjY3VyYWN5U2hvdWxkQmVFbmFibGVkKSwgMCk7CiB9CiAKIHZvaWQgV2ViR2Vv
bG9jYXRpb25NYW5hZ2VyOjp1bnJlZ2lzdGVyV2ViUGFnZShXZWJQYWdlJiBwYWdlKQogewotICAg
IGJvb2wgaGlnaEFjY3VyYWN5V2FzRW5hYmxlZCA9IGlzSGlnaEFjY3VyYWN5RW5hYmxlZCgpOwor
ICAgIGF1dG8gcmVnaXN0cmFibGVEb21haW4gPSBtX3BhZ2VUb1JlZ2lzdHJhYmxlRG9tYWluLnRh
a2UoJnBhZ2UpOworICAgIGlmIChyZWdpc3RyYWJsZURvbWFpbi5zdHJpbmcoKS5pc0VtcHR5KCkp
CisgICAgICAgIHJldHVybjsKKworICAgIGF1dG8gaXQgPSBtX3BhZ2VTZXRzLmZpbmQocmVnaXN0
cmFibGVEb21haW4pOworICAgIGlmIChpdCA9PSBtX3BhZ2VTZXRzLmVuZCgpKQorICAgICAgICBy
ZXR1cm47CiAKLSAgICBtX3BhZ2VTZXQucmVtb3ZlKHBhZ2UpOwotICAgIG1faGlnaEFjY3VyYWN5
UGFnZVNldC5yZW1vdmUocGFnZSk7CisgICAgYXV0byYgcGFnZVNldHMgPSBpdC0+dmFsdWU7Cisg
ICAgYm9vbCBoaWdoQWNjdXJhY3lXYXNFbmFibGVkID0gaXNIaWdoQWNjdXJhY3lFbmFibGVkKHBh
Z2VTZXRzKTsKIAotICAgIGlmICghaXNVcGRhdGluZygpKQotICAgICAgICBtX3Byb2Nlc3MucGFy
ZW50UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+c2VuZChNZXNzYWdlczo6V2ViR2VvbG9jYXRpb25NYW5h
Z2VyUHJveHk6OlN0b3BVcGRhdGluZygpLCAwKTsKKyAgICBwYWdlU2V0cy5wYWdlU2V0LnJlbW92
ZShwYWdlKTsKKyAgICBwYWdlU2V0cy5oaWdoQWNjdXJhY3lQYWdlU2V0LnJlbW92ZShwYWdlKTsK
KworICAgIGlmICghaXNVcGRhdGluZyhwYWdlU2V0cykpCisgICAgICAgIG1fcHJvY2Vzcy5wYXJl
bnRQcm9jZXNzQ29ubmVjdGlvbigpLT5zZW5kKE1lc3NhZ2VzOjpXZWJHZW9sb2NhdGlvbk1hbmFn
ZXJQcm94eTo6U3RvcFVwZGF0aW5nKHJlZ2lzdHJhYmxlRG9tYWluKSwgMCk7CiAgICAgZWxzZSB7
Ci0gICAgICAgIGJvb2wgaGlnaEFjY3VyYWN5U2hvdWxkQmVFbmFibGVkID0gaXNIaWdoQWNjdXJh
Y3lFbmFibGVkKCk7CisgICAgICAgIGJvb2wgaGlnaEFjY3VyYWN5U2hvdWxkQmVFbmFibGVkID0g
aXNIaWdoQWNjdXJhY3lFbmFibGVkKHBhZ2VTZXRzKTsKICAgICAgICAgaWYgKGhpZ2hBY2N1cmFj
eVdhc0VuYWJsZWQgIT0gaGlnaEFjY3VyYWN5U2hvdWxkQmVFbmFibGVkKQotICAgICAgICAgICAg
bV9wcm9jZXNzLnBhcmVudFByb2Nlc3NDb25uZWN0aW9uKCktPnNlbmQoTWVzc2FnZXM6OldlYkdl
b2xvY2F0aW9uTWFuYWdlclByb3h5OjpTZXRFbmFibGVIaWdoQWNjdXJhY3koaGlnaEFjY3VyYWN5
U2hvdWxkQmVFbmFibGVkKSwgMCk7CisgICAgICAgICAgICBtX3Byb2Nlc3MucGFyZW50UHJvY2Vz
c0Nvbm5lY3Rpb24oKS0+c2VuZChNZXNzYWdlczo6V2ViR2VvbG9jYXRpb25NYW5hZ2VyUHJveHk6
OlNldEVuYWJsZUhpZ2hBY2N1cmFjeShyZWdpc3RyYWJsZURvbWFpbiwgaGlnaEFjY3VyYWN5U2hv
dWxkQmVFbmFibGVkKSwgMCk7CiAgICAgfQorCisgICAgaWYgKHBhZ2VTZXRzLnBhZ2VTZXQuY29t
cHV0ZXNFbXB0eSgpICYmIHBhZ2VTZXRzLmhpZ2hBY2N1cmFjeVBhZ2VTZXQuY29tcHV0ZXNFbXB0
eSgpKQorICAgICAgICBtX3BhZ2VTZXRzLnJlbW92ZShpdCk7CiB9CiAKIHZvaWQgV2ViR2VvbG9j
YXRpb25NYW5hZ2VyOjpzZXRFbmFibGVIaWdoQWNjdXJhY3lGb3JQYWdlKFdlYlBhZ2UmIHBhZ2Us
IGJvb2wgZW5hYmxlZCkKIHsKLSAgICBib29sIGhpZ2hBY2N1cmFjeVdhc0VuYWJsZWQgPSBpc0hp
Z2hBY2N1cmFjeUVuYWJsZWQoKTsKKyAgICBhdXRvIHJlZ2lzdHJhYmxlRG9tYWluID0gbV9wYWdl
VG9SZWdpc3RyYWJsZURvbWFpbi5nZXQoJnBhZ2UpOworICAgIGlmIChyZWdpc3RyYWJsZURvbWFp
bi5zdHJpbmcoKS5pc0VtcHR5KCkpCisgICAgICAgIHJldHVybjsKKworICAgIGF1dG8gaXQgPSBt
X3BhZ2VTZXRzLmZpbmQocmVnaXN0cmFibGVEb21haW4pOworICAgIEFTU0VSVChpdCAhPSBtX3Bh
Z2VTZXRzLmVuZCgpKTsKKyAgICBpZiAoaXQgPT0gbV9wYWdlU2V0cy5lbmQoKSkKKyAgICAgICAg
cmV0dXJuOworCisgICAgYXV0byYgcGFnZVNldHMgPSBpdC0+dmFsdWU7CisgICAgYm9vbCBoaWdo
QWNjdXJhY3lXYXNFbmFibGVkID0gaXNIaWdoQWNjdXJhY3lFbmFibGVkKHBhZ2VTZXRzKTsKIAog
ICAgIGlmIChlbmFibGVkKQotICAgICAgICBtX2hpZ2hBY2N1cmFjeVBhZ2VTZXQuYWRkKHBhZ2Up
OworICAgICAgICBwYWdlU2V0cy5oaWdoQWNjdXJhY3lQYWdlU2V0LmFkZChwYWdlKTsKICAgICBl
bHNlCi0gICAgICAgIG1faGlnaEFjY3VyYWN5UGFnZVNldC5yZW1vdmUocGFnZSk7CisgICAgICAg
IHBhZ2VTZXRzLmhpZ2hBY2N1cmFjeVBhZ2VTZXQucmVtb3ZlKHBhZ2UpOwogCi0gICAgYm9vbCBo
aWdoQWNjdXJhY3lTaG91bGRCZUVuYWJsZWQgPSBpc0hpZ2hBY2N1cmFjeUVuYWJsZWQoKTsKLSAg
ICBpZiAoaGlnaEFjY3VyYWN5V2FzRW5hYmxlZCAhPSBoaWdoQWNjdXJhY3lTaG91bGRCZUVuYWJs
ZWQpCi0gICAgICAgIG1fcHJvY2Vzcy5wYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpLT5zZW5kKE1l
c3NhZ2VzOjpXZWJHZW9sb2NhdGlvbk1hbmFnZXJQcm94eTo6U2V0RW5hYmxlSGlnaEFjY3VyYWN5
KGhpZ2hBY2N1cmFjeVNob3VsZEJlRW5hYmxlZCksIDApOworICAgIGJvb2wgaGlnaEFjY3VyYWN5
U2hvdWxkQmVFbmFibGVkID0gaXNIaWdoQWNjdXJhY3lFbmFibGVkKHBhZ2VTZXRzKTsKKyAgICBp
ZiAoaGlnaEFjY3VyYWN5V2FzRW5hYmxlZCAhPSBpc0hpZ2hBY2N1cmFjeUVuYWJsZWQocGFnZVNl
dHMpKQorICAgICAgICBtX3Byb2Nlc3MucGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+c2VuZChN
ZXNzYWdlczo6V2ViR2VvbG9jYXRpb25NYW5hZ2VyUHJveHk6OlNldEVuYWJsZUhpZ2hBY2N1cmFj
eShyZWdpc3RyYWJsZURvbWFpbiwgaGlnaEFjY3VyYWN5U2hvdWxkQmVFbmFibGVkKSwgMCk7CiB9
CiAKLXZvaWQgV2ViR2VvbG9jYXRpb25NYW5hZ2VyOjpkaWRDaGFuZ2VQb3NpdGlvbihjb25zdCBH
ZW9sb2NhdGlvblBvc2l0aW9uRGF0YSYgcG9zaXRpb24pCit2b2lkIFdlYkdlb2xvY2F0aW9uTWFu
YWdlcjo6ZGlkQ2hhbmdlUG9zaXRpb24oY29uc3QgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4m
IHJlZ2lzdHJhYmxlRG9tYWluLCBjb25zdCBHZW9sb2NhdGlvblBvc2l0aW9uRGF0YSYgcG9zaXRp
b24pCiB7CiAjaWYgRU5BQkxFKEdFT0xPQ0FUSU9OKQotICAgIGZvciAoYXV0byYgcGFnZSA6IGNv
cHlUb1ZlY3RvcihtX3BhZ2VTZXQpKSB7Ci0gICAgICAgIGlmIChwYWdlLT5jb3JlUGFnZSgpKQot
ICAgICAgICAgICAgR2VvbG9jYXRpb25Db250cm9sbGVyOjpmcm9tKHBhZ2UtPmNvcmVQYWdlKCkp
LT5wb3NpdGlvbkNoYW5nZWQocG9zaXRpb24pOworICAgIGlmIChhdXRvIGl0ID0gbV9wYWdlU2V0
cy5maW5kKHJlZ2lzdHJhYmxlRG9tYWluKTsgaXQgIT0gbV9wYWdlU2V0cy5lbmQoKSkgeworICAg
ICAgICBmb3IgKGF1dG8mIHBhZ2UgOiBjb3B5VG9WZWN0b3IoaXQtPnZhbHVlLnBhZ2VTZXQpKSB7
CisgICAgICAgICAgICBpZiAocGFnZS0+Y29yZVBhZ2UoKSkKKyAgICAgICAgICAgICAgICBHZW9s
b2NhdGlvbkNvbnRyb2xsZXI6OmZyb20ocGFnZS0+Y29yZVBhZ2UoKSktPnBvc2l0aW9uQ2hhbmdl
ZChwb3NpdGlvbik7CisgICAgICAgIH0KICAgICB9CiAjZWxzZQorICAgIFVOVVNFRF9QQVJBTShy
ZWdpc3RyYWJsZURvbWFpbik7CiAgICAgVU5VU0VEX1BBUkFNKHBvc2l0aW9uKTsKICNlbmRpZiAv
LyBFTkFCTEUoR0VPTE9DQVRJT04pCiB9CiAKLXZvaWQgV2ViR2VvbG9jYXRpb25NYW5hZ2VyOjpk
aWRGYWlsVG9EZXRlcm1pbmVQb3NpdGlvbihjb25zdCBTdHJpbmcmIGVycm9yTWVzc2FnZSkKK3Zv
aWQgV2ViR2VvbG9jYXRpb25NYW5hZ2VyOjpkaWRGYWlsVG9EZXRlcm1pbmVQb3NpdGlvbihjb25z
dCBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiYgcmVnaXN0cmFibGVEb21haW4sIGNvbnN0IFN0
cmluZyYgZXJyb3JNZXNzYWdlKQogewogI2lmIEVOQUJMRShHRU9MT0NBVElPTikKLSAgICAvLyBG
SVhNRTogQWRkIGxvY2FsaXplZCBlcnJvciBzdHJpbmcuCi0gICAgYXV0byBlcnJvciA9IEdlb2xv
Y2F0aW9uRXJyb3I6OmNyZWF0ZShHZW9sb2NhdGlvbkVycm9yOjpQb3NpdGlvblVuYXZhaWxhYmxl
LCBlcnJvck1lc3NhZ2UpOwotCi0gICAgZm9yIChhdXRvJiBwYWdlIDogY29weVRvVmVjdG9yKG1f
cGFnZVNldCkpIHsKLSAgICAgICAgaWYgKHBhZ2UtPmNvcmVQYWdlKCkpCi0gICAgICAgICAgICBH
ZW9sb2NhdGlvbkNvbnRyb2xsZXI6OmZyb20ocGFnZS0+Y29yZVBhZ2UoKSktPmVycm9yT2NjdXJy
ZWQoZXJyb3IuZ2V0KCkpOworICAgIGlmIChhdXRvIGl0ID0gbV9wYWdlU2V0cy5maW5kKHJlZ2lz
dHJhYmxlRG9tYWluKTsgaXQgIT0gbV9wYWdlU2V0cy5lbmQoKSkgeworICAgICAgICAvLyBGSVhN
RTogQWRkIGxvY2FsaXplZCBlcnJvciBzdHJpbmcuCisgICAgICAgIGF1dG8gZXJyb3IgPSBHZW9s
b2NhdGlvbkVycm9yOjpjcmVhdGUoR2VvbG9jYXRpb25FcnJvcjo6UG9zaXRpb25VbmF2YWlsYWJs
ZSwgZXJyb3JNZXNzYWdlKTsKKworICAgICAgICBmb3IgKGF1dG8mIHBhZ2UgOiBjb3B5VG9WZWN0
b3IoaXQtPnZhbHVlLnBhZ2VTZXQpKSB7CisgICAgICAgICAgICBpZiAocGFnZS0+Y29yZVBhZ2Uo
KSkKKyAgICAgICAgICAgICAgICBHZW9sb2NhdGlvbkNvbnRyb2xsZXI6OmZyb20ocGFnZS0+Y29y
ZVBhZ2UoKSktPmVycm9yT2NjdXJyZWQoZXJyb3IuZ2V0KCkpOworICAgICAgICB9CiAgICAgfQog
I2Vsc2UKKyAgICBVTlVTRURfUEFSQU0ocmVnaXN0cmFibGVEb21haW4pOwogICAgIFVOVVNFRF9Q
QVJBTShlcnJvck1lc3NhZ2UpOwogI2VuZGlmIC8vIEVOQUJMRShHRU9MT0NBVElPTikKIH0KIAot
I2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCi12b2lkIFdlYkdlb2xvY2F0aW9uTWFuYWdlcjo6cmVz
ZXRQZXJtaXNzaW9ucygpCitib29sIFdlYkdlb2xvY2F0aW9uTWFuYWdlcjo6aXNVcGRhdGluZyhj
b25zdCBQYWdlU2V0cyYgcGFnZVNldHMpIGNvbnN0CiB7Ci0gICAgbV9wcm9jZXNzLnJlc2V0QWxs
R2VvbG9jYXRpb25QZXJtaXNzaW9ucygpOworICAgIHJldHVybiAhcGFnZVNldHMucGFnZVNldC5j
b21wdXRlc0VtcHR5KCk7CiB9Ci0jZW5kaWYgLy8gUExBVEZPUk0oSU9TX0ZBTUlMWSkKIAotYm9v
bCBXZWJHZW9sb2NhdGlvbk1hbmFnZXI6OmlzVXBkYXRpbmcoKSBjb25zdAorYm9vbCBXZWJHZW9s
b2NhdGlvbk1hbmFnZXI6OmlzSGlnaEFjY3VyYWN5RW5hYmxlZChjb25zdCBQYWdlU2V0cyYgcGFn
ZVNldHMpIGNvbnN0CiB7Ci0gICAgcmV0dXJuICFtX3BhZ2VTZXQuY29tcHV0ZXNFbXB0eSgpOwor
ICAgIHJldHVybiAhcGFnZVNldHMuaGlnaEFjY3VyYWN5UGFnZVNldC5jb21wdXRlc0VtcHR5KCk7
CiB9CiAKLWJvb2wgV2ViR2VvbG9jYXRpb25NYW5hZ2VyOjppc0hpZ2hBY2N1cmFjeUVuYWJsZWQo
KSBjb25zdAorI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCit2b2lkIFdlYkdlb2xvY2F0aW9uTWFu
YWdlcjo6cmVzZXRQZXJtaXNzaW9ucyhjb25zdCBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiYg
cmVnaXN0cmFibGVEb21haW4pCiB7Ci0gICAgcmV0dXJuICFtX2hpZ2hBY2N1cmFjeVBhZ2VTZXQu
Y29tcHV0ZXNFbXB0eSgpOworICAgIGF1dG8gaXQgPSBtX3BhZ2VTZXRzLmZpbmQocmVnaXN0cmFi
bGVEb21haW4pOworICAgIGlmIChpdCAhPSBtX3BhZ2VTZXRzLmVuZCgpKQorICAgICAgICByZXR1
cm47CisKKyAgICBmb3IgKGF1dG8mIHBhZ2UgOiBjb3B5VG9WZWN0b3IoaXQtPnZhbHVlLnBhZ2VT
ZXQpKSB7CisgICAgICAgIGlmIChhdXRvKiBtYWluRnJhbWUgPSBwYWdlLT5jb3JlUGFnZSgpID8g
JnBhZ2UtPmNvcmVQYWdlKCktPm1haW5GcmFtZSgpIDogbnVsbHB0cikKKyAgICAgICAgICAgIG1h
aW5GcmFtZS0+cmVzZXRBbGxHZW9sb2NhdGlvblBlcm1pc3Npb24oKTsKKyAgICB9CiB9CisjZW5k
aWYgLy8gUExBVEZPUk0oSU9TX0ZBTUlMWSkKIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR2VvbG9jYXRpb24vV2ViR2VvbG9jYXRp
b25NYW5hZ2VyLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR2VvbG9jYXRpb24vV2ViR2Vv
bG9jYXRpb25NYW5hZ2VyLmgKaW5kZXggNDQ4MzU5NjM1ODc4MjE5N2NjYmE1OTI4ZWZlNjI1MTUy
NmMxODUxNS4uY2I2NTg4YzZlNzE4OGJlZmJkNTUxMjNkNGE1NTliMmIwYjMxYTkzYSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dlb2xvY2F0aW9uL1dlYkdlb2xvY2F0aW9u
TWFuYWdlci5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HZW9sb2NhdGlvbi9XZWJH
ZW9sb2NhdGlvbk1hbmFnZXIuaApAQCAtMjgsNiArMjgsNyBAQAogI2luY2x1ZGUgIk1lc3NhZ2VS
ZWNlaXZlci5oIgogI2luY2x1ZGUgIldlYkdlb2xvY2F0aW9uUG9zaXRpb24uaCIKICNpbmNsdWRl
ICJXZWJQcm9jZXNzU3VwcGxlbWVudC5oIgorI2luY2x1ZGUgPFdlYkNvcmUvUmVnaXN0cmFibGVE
b21haW4uaD4KICNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgogI2luY2x1ZGUgPHd0Zi9Ob25jb3B5
YWJsZS5oPgogI2luY2x1ZGUgPHd0Zi9XZWFrSGFzaFNldC5oPgpAQCAtNDcsMzEgKzQ4LDM0IEBA
IGNsYXNzIFdlYkdlb2xvY2F0aW9uTWFuYWdlciA6IHB1YmxpYyBXZWJQcm9jZXNzU3VwcGxlbWVu
dCwgcHVibGljIElQQzo6TWVzc2FnZVJlCiAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoV2ViR2Vv
bG9jYXRpb25NYW5hZ2VyKTsKIHB1YmxpYzoKICAgICBleHBsaWNpdCBXZWJHZW9sb2NhdGlvbk1h
bmFnZXIoV2ViUHJvY2VzcyYpOworICAgIH5XZWJHZW9sb2NhdGlvbk1hbmFnZXIoKTsKIAogICAg
IHN0YXRpYyBjb25zdCBjaGFyKiBzdXBwbGVtZW50TmFtZSgpOwogCi0gICAgdm9pZCByZWdpc3Rl
cldlYlBhZ2UoV2ViUGFnZSYsIGNvbnN0IFN0cmluZyYgYXV0aG9yaXphdGlvblRva2VuKTsKKyAg
ICB2b2lkIHJlZ2lzdGVyV2ViUGFnZShXZWJQYWdlJiwgY29uc3QgU3RyaW5nJiBhdXRob3JpemF0
aW9uVG9rZW4sIGJvb2wgbmVlZHNIaWdoQWNjdXJhY3kpOwogICAgIHZvaWQgdW5yZWdpc3Rlcldl
YlBhZ2UoV2ViUGFnZSYpOwogICAgIHZvaWQgc2V0RW5hYmxlSGlnaEFjY3VyYWN5Rm9yUGFnZShX
ZWJQYWdlJiwgYm9vbCk7CiAKLSAgICB2b2lkIHJlcXVlc3RQZXJtaXNzaW9uKFdlYkNvcmU6Okdl
b2xvY2F0aW9uJik7Ci0KIHByaXZhdGU6CiAgICAgLy8gSVBDOjpNZXNzYWdlUmVjZWl2ZXIKICAg
ICB2b2lkIGRpZFJlY2VpdmVNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYsIElQQzo6RGVjb2RlciYp
IG92ZXJyaWRlOwogCi0gICAgYm9vbCBpc1VwZGF0aW5nKCkgY29uc3Q7Ci0gICAgYm9vbCBpc0hp
Z2hBY2N1cmFjeUVuYWJsZWQoKSBjb25zdDsKLQotICAgIHZvaWQgZGlkQ2hhbmdlUG9zaXRpb24o
Y29uc3QgV2ViQ29yZTo6R2VvbG9jYXRpb25Qb3NpdGlvbkRhdGEmKTsKLSAgICB2b2lkIGRpZEZh
aWxUb0RldGVybWluZVBvc2l0aW9uKGNvbnN0IFN0cmluZyYgZXJyb3JNZXNzYWdlKTsKKyAgICB2
b2lkIGRpZENoYW5nZVBvc2l0aW9uKGNvbnN0IFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluJiwg
Y29uc3QgV2ViQ29yZTo6R2VvbG9jYXRpb25Qb3NpdGlvbkRhdGEmKTsKKyAgICB2b2lkIGRpZEZh
aWxUb0RldGVybWluZVBvc2l0aW9uKGNvbnN0IFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluJiwg
Y29uc3QgU3RyaW5nJiBlcnJvck1lc3NhZ2UpOwogI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCi0g
ICAgdm9pZCByZXNldFBlcm1pc3Npb25zKCk7CisgICAgdm9pZCByZXNldFBlcm1pc3Npb25zKGNv
bnN0IFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluJik7CiAjZW5kaWYgLy8gUExBVEZPUk0oSU9T
X0ZBTUlMWSkKIAorICAgIHN0cnVjdCBQYWdlU2V0cyB7CisgICAgICAgIFdlYWtIYXNoU2V0PFdl
YlBhZ2U+IHBhZ2VTZXQ7CisgICAgICAgIFdlYWtIYXNoU2V0PFdlYlBhZ2U+IGhpZ2hBY2N1cmFj
eVBhZ2VTZXQ7CisgICAgfTsKKyAgICBib29sIGlzVXBkYXRpbmcoY29uc3QgUGFnZVNldHMmKSBj
b25zdDsKKyAgICBib29sIGlzSGlnaEFjY3VyYWN5RW5hYmxlZChjb25zdCBQYWdlU2V0cyYpIGNv
bnN0OworCiAgICAgV2ViUHJvY2VzcyYgbV9wcm9jZXNzOwotICAgIFdlYWtIYXNoU2V0PFdlYlBh
Z2U+IG1fcGFnZVNldDsKLSAgICBXZWFrSGFzaFNldDxXZWJQYWdlPiBtX2hpZ2hBY2N1cmFjeVBh
Z2VTZXQ7CisgICAgSGFzaE1hcDxXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiwgUGFnZVNldHM+
IG1fcGFnZVNldHM7CisgICAgSGFzaE1hcDxXZWJQYWdlKiwgV2ViQ29yZTo6UmVnaXN0cmFibGVE
b21haW4+IG1fcGFnZVRvUmVnaXN0cmFibGVEb21haW47CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBX
ZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HZW9sb2NhdGlvbi9X
ZWJHZW9sb2NhdGlvbk1hbmFnZXIubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvR2VvbG9jYXRpb24vV2ViR2VvbG9jYXRpb25NYW5hZ2VyLm1lc3NhZ2VzLmluCmluZGV4IDc5
ZjNiNGNlNGVmY2FmMzQ4ODU3ZDk5MzMyNTNkODk1NGYwZjFiODcuLjZmY2M2MGQyZTA4ZTI2ZWFi
NzNjMWY3MWNkODg0MmRjNTEwNTJkMTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9HZW9sb2NhdGlvbi9XZWJHZW9sb2NhdGlvbk1hbmFnZXIubWVzc2FnZXMuaW4KKysrIGIv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dlb2xvY2F0aW9uL1dlYkdlb2xvY2F0aW9uTWFuYWdl
ci5tZXNzYWdlcy5pbgpAQCAtMjEsOSArMjEsOSBAQAogIyBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogCiBtZXNzYWdl
cyAtPiBXZWJHZW9sb2NhdGlvbk1hbmFnZXIgTm90UmVmQ291bnRlZCB7Ci0gICAgRGlkQ2hhbmdl
UG9zaXRpb24oV2ViQ29yZTo6R2VvbG9jYXRpb25Qb3NpdGlvbkRhdGEgcG9zaXRpb24pOwotICAg
IERpZEZhaWxUb0RldGVybWluZVBvc2l0aW9uKFN0cmluZyBlcnJvck1lc3NhZ2UpOworICAgIERp
ZENoYW5nZVBvc2l0aW9uKFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluIHJlZ2lzdHJhYmxlRG9t
YWluLCBXZWJDb3JlOjpHZW9sb2NhdGlvblBvc2l0aW9uRGF0YSBwb3NpdGlvbik7CisgICAgRGlk
RmFpbFRvRGV0ZXJtaW5lUG9zaXRpb24oV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4gcmVnaXN0
cmFibGVEb21haW4sIFN0cmluZyBlcnJvck1lc3NhZ2UpOwogI2lmIFBMQVRGT1JNKElPU19GQU1J
TFkpCi0gICAgUmVzZXRQZXJtaXNzaW9ucygpOworICAgIFJlc2V0UGVybWlzc2lvbnMoV2ViQ29y
ZTo6UmVnaXN0cmFibGVEb21haW4gcmVnaXN0cmFibGVEb21haW4pOwogI2VuZGlmCiB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViR2VvbG9j
YXRpb25DbGllbnQuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0
L1dlYkdlb2xvY2F0aW9uQ2xpZW50LmNwcAppbmRleCBlYTAyZjJhYzE2ZjczMWJmNTY0MmY4Njc4
ZDg2YTQ5ODExZDhjMzg2Li5kMThkZjdlZmFmNTZlZmNmYzhkMTY5OWM5MWNkMjZiNjg5YmM4MjZh
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2Vi
R2VvbG9jYXRpb25DbGllbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJD
b3JlU3VwcG9ydC9XZWJHZW9sb2NhdGlvbkNsaWVudC5jcHAKQEAgLTQ4LDkgKzQ4LDkgQEAgdm9p
ZCBXZWJHZW9sb2NhdGlvbkNsaWVudDo6Z2VvbG9jYXRpb25EZXN0cm95ZWQoKQogICAgIGRlbGV0
ZSB0aGlzOwogfQogCi12b2lkIFdlYkdlb2xvY2F0aW9uQ2xpZW50OjpzdGFydFVwZGF0aW5nKGNv
bnN0IFN0cmluZyYgYXV0aG9yaXphdGlvblRva2VuKQordm9pZCBXZWJHZW9sb2NhdGlvbkNsaWVu
dDo6c3RhcnRVcGRhdGluZyhjb25zdCBTdHJpbmcmIGF1dGhvcml6YXRpb25Ub2tlbiwgYm9vbCBu
ZWVkc0hpZ2hBY2N1cmFjeSkKIHsKLSAgICBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5zdXBwbGVt
ZW50PFdlYkdlb2xvY2F0aW9uTWFuYWdlcj4oKS0+cmVnaXN0ZXJXZWJQYWdlKG1fcGFnZSwgYXV0
aG9yaXphdGlvblRva2VuKTsKKyAgICBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5zdXBwbGVtZW50
PFdlYkdlb2xvY2F0aW9uTWFuYWdlcj4oKS0+cmVnaXN0ZXJXZWJQYWdlKG1fcGFnZSwgYXV0aG9y
aXphdGlvblRva2VuLCBuZWVkc0hpZ2hBY2N1cmFjeSk7CiB9CiAKIHZvaWQgV2ViR2VvbG9jYXRp
b25DbGllbnQ6OnN0b3BVcGRhdGluZygpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViR2VvbG9jYXRpb25DbGllbnQuaCBiL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJHZW9sb2NhdGlvbkNsaWVudC5oCmluZGV4
IGIxNjgxNjc0ODk2MjI1NDdlYzk0ZTY3OThmYjY5ZGQ4ZmE2ZDAxMWMuLjY1ZWMwZTkzNTQyODNk
NWZhNzdhZjEwYjRlMTgwYjg3MTJmYWVmMDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJHZW9sb2NhdGlvbkNsaWVudC5oCisrKyBiL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJHZW9sb2NhdGlvbkNsaWVudC5o
CkBAIC0zMSw3ICszMSw3IEBAIG5hbWVzcGFjZSBXZWJLaXQgewogCiBjbGFzcyBXZWJQYWdlOwog
Ci1jbGFzcyBXZWJHZW9sb2NhdGlvbkNsaWVudCA6IHB1YmxpYyBXZWJDb3JlOjpHZW9sb2NhdGlv
bkNsaWVudCB7CitjbGFzcyBXZWJHZW9sb2NhdGlvbkNsaWVudCBmaW5hbCA6IHB1YmxpYyBXZWJD
b3JlOjpHZW9sb2NhdGlvbkNsaWVudCB7CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBw
dWJsaWM6CiAgICAgV2ViR2VvbG9jYXRpb25DbGllbnQoV2ViUGFnZSYgcGFnZSkKQEAgLTQyLDE3
ICs0MiwxNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB+V2ViR2VvbG9jYXRpb25DbGllbnQoKTsK
IAogcHJpdmF0ZToKLSAgICB2b2lkIGdlb2xvY2F0aW9uRGVzdHJveWVkKCkgb3ZlcnJpZGU7Cisg
ICAgdm9pZCBnZW9sb2NhdGlvbkRlc3Ryb3llZCgpIGZpbmFsOwogCi0gICAgdm9pZCBzdGFydFVw
ZGF0aW5nKGNvbnN0IFN0cmluZyYgYXV0aG9yaXphdGlvblRva2VuKSBvdmVycmlkZTsKLSAgICB2
b2lkIHN0b3BVcGRhdGluZygpIG92ZXJyaWRlOwotICAgIHZvaWQgcmV2b2tlQXV0aG9yaXphdGlv
blRva2VuKGNvbnN0IFN0cmluZyYpIG92ZXJyaWRlOwotICAgIHZvaWQgc2V0RW5hYmxlSGlnaEFj
Y3VyYWN5KGJvb2wpIG92ZXJyaWRlOworICAgIHZvaWQgc3RhcnRVcGRhdGluZyhjb25zdCBTdHJp
bmcmIGF1dGhvcml6YXRpb25Ub2tlbiwgYm9vbCBuZWVkc0hpZ2hBY2N1cmFjeSkgZmluYWw7Cisg
ICAgdm9pZCBzdG9wVXBkYXRpbmcoKSBmaW5hbDsKKyAgICB2b2lkIHJldm9rZUF1dGhvcml6YXRp
b25Ub2tlbihjb25zdCBTdHJpbmcmKSBmaW5hbDsKKyAgICB2b2lkIHNldEVuYWJsZUhpZ2hBY2N1
cmFjeShib29sKSBmaW5hbDsKIAotICAgIHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6R2VvbG9jYXRp
b25Qb3NpdGlvbkRhdGE+IGxhc3RQb3NpdGlvbigpIG92ZXJyaWRlOworICAgIHN0ZDo6b3B0aW9u
YWw8V2ViQ29yZTo6R2VvbG9jYXRpb25Qb3NpdGlvbkRhdGE+IGxhc3RQb3NpdGlvbigpIGZpbmFs
OwogCi0gICAgdm9pZCByZXF1ZXN0UGVybWlzc2lvbihXZWJDb3JlOjpHZW9sb2NhdGlvbiYpIG92
ZXJyaWRlOwotICAgIHZvaWQgY2FuY2VsUGVybWlzc2lvblJlcXVlc3QoV2ViQ29yZTo6R2VvbG9j
YXRpb24mKSBvdmVycmlkZTsKKyAgICB2b2lkIHJlcXVlc3RQZXJtaXNzaW9uKFdlYkNvcmU6Okdl
b2xvY2F0aW9uJikgZmluYWw7CisgICAgdm9pZCBjYW5jZWxQZXJtaXNzaW9uUmVxdWVzdChXZWJD
b3JlOjpHZW9sb2NhdGlvbiYpIGZpbmFsOwogCiAgICAgV2ViUGFnZSYgbV9wYWdlOwogfTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmNwcCBiL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmNwcAppbmRleCBkZDQ1YjQ1ODhiZjlkZDEy
NGUxOGZhYTk1YTMyNmVkMzE5MzFhNDU3Li43OTk2MTNkMzc3NDIzNjNiZmJkY2Q5NTI5Nzk5NjIy
MDZmMDIyOGE4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vz
cy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3BwCkBAIC0x
NTI3LDE2ICsxNTI3LDYgQEAgdm9pZCBXZWJQcm9jZXNzOjpwYWdlQWN0aXZpdHlTdGF0ZURpZENo
YW5nZShQYWdlSWRlbnRpZmllciwgT3B0aW9uU2V0PFdlYkNvcmU6OkEKICAgICB9CiB9CiAKLSNp
ZiBQTEFURk9STShJT1NfRkFNSUxZKQotdm9pZCBXZWJQcm9jZXNzOjpyZXNldEFsbEdlb2xvY2F0
aW9uUGVybWlzc2lvbnMoKQotewotICAgIGZvciAoYXV0byYgcGFnZSA6IG1fcGFnZU1hcC52YWx1
ZXMoKSkgewotICAgICAgICBpZiAoRnJhbWUqIG1haW5GcmFtZSA9IHBhZ2UtPm1haW5GcmFtZSgp
KQotICAgICAgICAgICAgbWFpbkZyYW1lLT5yZXNldEFsbEdlb2xvY2F0aW9uUGVybWlzc2lvbigp
OwotICAgIH0KLX0KLSNlbmRpZgotCiB2b2lkIFdlYlByb2Nlc3M6OnByZXBhcmVUb1N1c3BlbmQo
Ym9vbCBpc1N1c3BlbnNpb25JbW1pbmVudCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmIGNv
bXBsZXRpb25IYW5kbGVyKQogewogICAgIFdFQlBST0NFU1NfUkVMRUFTRV9MT0coUHJvY2Vzc1N1
c3BlbnNpb24sICJwcmVwYXJlVG9TdXNwZW5kOiBpc1N1c3BlbnNpb25JbW1pbmVudD0lZCIsIGlz
U3VzcGVuc2lvbkltbWluZW50KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9XZWJQcm9jZXNzLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5oCmlu
ZGV4IGM1ZGQyMjVkYzFiNzFkYTljZGQ0ZWVkYmEwYTA3ZTc2MTc4MTU3NWUuLjU5NWFmMGI5NzQx
MjkwZGE2YzczNGEwODg2YjgyNGQyM2IxZWU1N2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dl
YlByb2Nlc3MuaApAQCAtMzEwLDEwICszMTAsNiBAQCBwdWJsaWM6CiAKICAgICB2b2lkIGlzSklU
RW5hYmxlZChDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmKTsKIAotI2lmIFBMQVRGT1JN
KElPU19GQU1JTFkpCi0gICAgdm9pZCByZXNldEFsbEdlb2xvY2F0aW9uUGVybWlzc2lvbnMoKTsK
LSNlbmRpZgotCiAjaWYgUExBVEZPUk0oV0FZTEFORCkKICAgICBXYXlsYW5kQ29tcG9zaXRvckRp
c3BsYXkqIHdheWxhbmRDb21wb3NpdG9yRGlzcGxheSgpIGNvbnN0IHsgcmV0dXJuIG1fd2F5bGFu
ZENvbXBvc2l0b3JEaXNwbGF5LmdldCgpOyB9CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkdlb2xvY2F0aW9uQ2xpZW50LmggYi9T
b3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJHZW9sb2NhdGlvbkNsaWVu
dC5oCmluZGV4IDc3YzI4MjhkODU5NTM2MzViNjRjNGM4OTk5OTBhMGE2NDgxNzFiNmMuLmIwN2M3
OTAzZDI5MmE5MzM5MWU1YzQwYWVkZDY1ZGVkYmFmOGM1ZjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkdlb2xvY2F0aW9uQ2xpZW50LmgKKysr
IGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViR2VvbG9jYXRpb25D
bGllbnQuaApAQCAtMzksNyArMzksNyBAQCBwdWJsaWM6CiAgICAgV2ViVmlldyAqd2ViVmlldygp
IHsgcmV0dXJuIG1fd2ViVmlldzsgfQogCiAgICAgdm9pZCBnZW9sb2NhdGlvbkRlc3Ryb3llZCgp
IG92ZXJyaWRlOwotICAgIHZvaWQgc3RhcnRVcGRhdGluZyhjb25zdCBTdHJpbmcmIGF1dGhvcml6
YXRpb25Ub2tlbikgb3ZlcnJpZGU7CisgICAgdm9pZCBzdGFydFVwZGF0aW5nKGNvbnN0IFN0cmlu
ZyYgYXV0aG9yaXphdGlvblRva2VuLCBib29sIGVuYWJsZUhpZ2hBY2N1cmFjeSkgb3ZlcnJpZGU7
CiAgICAgdm9pZCBzdG9wVXBkYXRpbmcoKSBvdmVycmlkZTsKICNpZiBQTEFURk9STShJT1NfRkFN
SUxZKQogICAgIC8vIEZJWE1FOiB1bmlmeSB0aGlzIHdpdGggTWFjIG9uIE9wZW5Tb3VyY2UuCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJHZW9s
b2NhdGlvbkNsaWVudC5tbSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0
L1dlYkdlb2xvY2F0aW9uQ2xpZW50Lm1tCmluZGV4IGU3ODhhNTdkZDZmODA3ZTdiMjVjNzQyYmE4
MDE5MzU3YTI3MzRkMzguLmE4Yjg1MjFlMmRhNDcxOGRjMTRiNDM3MGIxYTViNGI4ZDYzMjg1ODkg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkdl
b2xvY2F0aW9uQ2xpZW50Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVT
dXBwb3J0L1dlYkdlb2xvY2F0aW9uQ2xpZW50Lm1tCkBAIC04Myw5ICs4MywxNiBAQCB2b2lkIFdl
Ykdlb2xvY2F0aW9uQ2xpZW50OjpnZW9sb2NhdGlvbkRlc3Ryb3llZCgpCiAgICAgZGVsZXRlIHRo
aXM7CiB9CiAKLXZvaWQgV2ViR2VvbG9jYXRpb25DbGllbnQ6OnN0YXJ0VXBkYXRpbmcoY29uc3Qg
U3RyaW5nJiBhdXRob3JpemF0aW9uVG9rZW4pCit2b2lkIFdlYkdlb2xvY2F0aW9uQ2xpZW50Ojpz
dGFydFVwZGF0aW5nKGNvbnN0IFN0cmluZyYgYXV0aG9yaXphdGlvblRva2VuLCBib29sIGVuYWJs
ZUhpZ2hBY2N1cmFjeSkKIHsKICAgICBVTlVTRURfUEFSQU0oYXV0aG9yaXphdGlvblRva2VuKTsK
KyNpZiBQTEFURk9STShJT1NfRkFNSUxZKQorICAgIGlmIChlbmFibGVIaWdoQWNjdXJhY3kpCisg
ICAgICAgIHNldEVuYWJsZUhpZ2hBY2N1cmFjeSh0cnVlKTsKKyNlbHNlCisgICAgVU5VU0VEX1BB
UkFNKGVuYWJsZUhpZ2hBY2N1cmFjeSk7CisjZW5kaWYKKwogICAgIFtbbV93ZWJWaWV3IF9nZW9s
b2NhdGlvblByb3ZpZGVyXSByZWdpc3RlcldlYlZpZXc6bV93ZWJWaWV3XTsKIH0KIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViQ29yZVN1cHBvcnQvV2ViR2VvbG9jYXRp
b25DbGllbnQuY3BwIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViQ29yZVN1cHBvcnQvV2Vi
R2VvbG9jYXRpb25DbGllbnQuY3BwCmluZGV4IGUxZmNhMjc3MjQ5NjE1NGE0ZTA3MGU0ZGZkYTdl
NzdlOTczNTgyYzEuLmFjNTQ1MTRjNjQyZWEwZTVmOGFmMzM2OWUxYmJiYWUwYzM5MDcxYjcgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkdlb2xv
Y2F0aW9uQ2xpZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJDb3JlU3Vw
cG9ydC9XZWJHZW9sb2NhdGlvbkNsaWVudC5jcHAKQEAgLTQ4LDkgKzQ4LDEwIEBAIHZvaWQgV2Vi
R2VvbG9jYXRpb25DbGllbnQ6Omdlb2xvY2F0aW9uRGVzdHJveWVkKCkKICAgICBkZWxldGUgdGhp
czsKIH0KIAotdm9pZCBXZWJHZW9sb2NhdGlvbkNsaWVudDo6c3RhcnRVcGRhdGluZyhjb25zdCBT
dHJpbmcmIGF1dGhvcml6YXRpb25Ub2tlbikKK3ZvaWQgV2ViR2VvbG9jYXRpb25DbGllbnQ6OnN0
YXJ0VXBkYXRpbmcoY29uc3QgU3RyaW5nJiBhdXRob3JpemF0aW9uVG9rZW4sIGJvb2wgZW5hYmxl
SGlnaEFjY3VyYWN5KQogewogICAgIFVOVVNFRF9QQVJBTShhdXRob3JpemF0aW9uVG9rZW4pOwor
ICAgIFVOVVNFRF9QQVJBTShlbmFibGVIaWdoQWNjdXJhY3kpOwogICAgIENPTVB0cjxJV2ViR2Vv
bG9jYXRpb25Qcm92aWRlcj4gcHJvdmlkZXI7CiAgICAgaWYgKEZBSUxFRChtX3dlYlZpZXctPmdl
b2xvY2F0aW9uUHJvdmlkZXIoJnByb3ZpZGVyKSkpCiAgICAgICAgIHJldHVybjsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkdlb2xvY2F0aW9u
Q2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJHZW9s
b2NhdGlvbkNsaWVudC5oCmluZGV4IDE5NTc0MTdiNTVkN2U1ZDJmOWI3MWU1YzlkOWMzMDNkZmVm
NGUxODYuLjViOGU5NDQ0ZjIxZmVkNDNlZGYyNTkxYTJiYTE1ZGEzYmQ0NGY0NGEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkdlb2xvY2F0aW9u
Q2xpZW50LmgKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViQ29yZVN1cHBvcnQvV2Vi
R2VvbG9jYXRpb25DbGllbnQuaApAQCAtNDEsNyArNDEsNyBAQCBwdWJsaWM6CiAgICAgV2ViR2Vv
bG9jYXRpb25DbGllbnQoV2ViVmlldyopOwogCiAgICAgdm9pZCBnZW9sb2NhdGlvbkRlc3Ryb3ll
ZCgpIGZpbmFsOwotICAgIHZvaWQgc3RhcnRVcGRhdGluZyhjb25zdCBTdHJpbmcmIGF1dGhvcml6
YXRpb25Ub2tlbikgZmluYWw7CisgICAgdm9pZCBzdGFydFVwZGF0aW5nKGNvbnN0IFN0cmluZyYg
YXV0aG9yaXphdGlvblRva2VuLCBib29sIGVuYWJsZUhpZ2hBY2N1cmFjeSkgZmluYWw7CiAgICAg
dm9pZCBzdG9wVXBkYXRpbmcoKSBmaW5hbDsKICAgICB2b2lkIHNldEVuYWJsZUhpZ2hBY2N1cmFj
eShib29sKSBmaW5hbCB7IH0KICAgICBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6Okdlb2xvY2F0aW9u
UG9zaXRpb25EYXRhPiBsYXN0UG9zaXRpb24oKSBmaW5hbDsK
</data>
<flag name="commit-queue"
          id="479043"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>452106</attachid>
            <date>2022-02-15 16:04:14 -0800</date>
            <delta_ts>2022-02-15 20:55:59 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-236566-20220215160413.patch</filename>
            <type>text/plain</type>
            <size>111195</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg5ODU2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IGY2MDY5ODliY2RhNjQyMTdkZTJlNzcw
ODM4NmYzNzA2N2ExYThkZTQuLjE4NzM2NzA0OWU1NTRiZmUyMGNjNWM3ZGQ0OThiZjJjZTVjYWNi
MzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMTUgQEAKKzIwMjItMDItMTMgIENocmlzIER1bWV6ICA8Y2R1bWV6
QGFwcGxlLmNvbT4KKworICAgICAgICBEbyBwcmVsaW1pbmFyeSB3b3JrIHRvIHBhc3MgZG9tYWlu
IG5hbWVzIHRvIENvcmVMb2NhdGlvbgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MjM2NTY2CisgICAgICAgIDxyZGFyOi8vODg3NjE0MTM+CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgRGFyaW4gQWRsZXIuCisKKyAgICAgICAgQWRkIGJ1aWxkIHRpbWUgZmxh
ZyBmb3IgcGFzc2luZyB3ZWJzaXRlIGlkZW50aWZpZXJzIHRvIENvcmVMb2NhdGlvbi4KKworICAg
ICAgICAqIHd0Zi9QbGF0Zm9ybUhhdmUuaDoKKwogMjAyMi0wMi0xNSAgUm9iaW4gTW9yaXNzZXQg
IDxybW9yaXNzZXRAYXBwbGUuY29tPgogCiAgICAgICAgIFtXR1NMXSBJbXBsZW1lbnQgZW5vdWdo
IG9mIHRoZSBsZXhlciBmb3IgdGhlIHNpbXBsZXN0IHNoYWRlcnMKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCBjYWM3
ZWMxNzI0OGNjMGM1YzQzYmM5NjUwZGZlODE4YWUxZDY2ZmM3Li44NWFlYWZlZTUzYTNkMmRlZGY4
ZTcxMmUwZjgwNTc2NWEzYjFjY2Q0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VM
b2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNTQgQEAKKzIwMjIt
MDItMTMgIENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KKworICAgICAgICBEbyBwcmVs
aW1pbmFyeSB3b3JrIHRvIHBhc3MgZG9tYWluIG5hbWVzIHRvIENvcmVMb2NhdGlvbgorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjM2NTY2CisgICAgICAg
IDxyZGFyOi8vODg3NjE0MTM+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgRGFyaW4gQWRsZXIuCisK
KyAgICAgICAgRG8gcHJlbGltaW5hcnkgd29yayB0byBwYXNzIGRvbWFpbiBuYW1lcyB0byBDb3Jl
TG9jYXRpb24gd2hlbiB1c2luZyB0aGUgR2VvbG9jYXRpb24gQVBJLgorICAgICAgICBUaGlzIHBp
cGVzIHRoZSBkb21haW4gbmFtZXMgYWxsIHRoZSB3YXkgZnJvbSB0aGUgR2VvbG9jYXRpb24gQVBJ
IHRvIHRoZSBDb3JlTG9jYXRpb24gY2FsbHMKKyAgICAgICAgYnV0IGRvZXNuJ3QgeWV0IHBhc3Mg
dGhlIGRvbWFpbiB0byBDb3JlTG9jYXRpb24gZHVlIHRvIDxyZGFyOi8vODg4MzQzMDE+LiBJIHdp
bGwgZm9sbG93LXVwCisgICAgICAgIG9uY2UgPHJkYXI6Ly84ODgzNDMwMT4gaXMgZml4ZWQuCisK
KyAgICAgICAgKiBNb2R1bGVzL2dlb2xvY2F0aW9uL0dlb2xvY2F0aW9uQ2xpZW50Lmg6CisgICAg
ICAgICogTW9kdWxlcy9nZW9sb2NhdGlvbi9HZW9sb2NhdGlvbkNvbnRyb2xsZXIuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6R2VvbG9jYXRpb25Db250cm9sbGVyOjpkaWROYXZpZ2F0ZVBhZ2UpOgor
ICAgICAgICAoV2ViQ29yZTo6R2VvbG9jYXRpb25Db250cm9sbGVyOjphZGRPYnNlcnZlcik6Cisg
ICAgICAgIChXZWJDb3JlOjpHZW9sb2NhdGlvbkNvbnRyb2xsZXI6OnJlbW92ZU9ic2VydmVyKToK
KyAgICAgICAgKFdlYkNvcmU6Okdlb2xvY2F0aW9uQ29udHJvbGxlcjo6YWN0aXZpdHlTdGF0ZURp
ZENoYW5nZSk6CisgICAgICAgIChXZWJDb3JlOjpHZW9sb2NhdGlvbkNvbnRyb2xsZXI6OnN0YXJ0
VXBkYXRpbmdJZk5lY2Vzc2FyeSk6CisgICAgICAgIChXZWJDb3JlOjpHZW9sb2NhdGlvbkNvbnRy
b2xsZXI6OnN0b3BVcGRhdGluZ0lmTmVjZXNzYXJ5KToKKyAgICAgICAgKiBNb2R1bGVzL2dlb2xv
Y2F0aW9uL0dlb2xvY2F0aW9uQ29udHJvbGxlci5oOgorICAgICAgICAoV2ViQ29yZTo6R2VvbG9j
YXRpb25Db250cm9sbGVyOjpuZWVkc0hpZ2hBY2N1cmFjeSBjb25zdCk6CisgICAgICAgICogTW9k
dWxlcy9nZW9sb2NhdGlvbi9HZW9sb2NhdGlvblBvc2l0aW9uRGF0YS5oOgorICAgICAgICAqIE1v
ZHVsZXMvZ2VvbG9jYXRpb24vaW9zL0dlb2xvY2F0aW9uUG9zaXRpb25EYXRhSU9TLm1tOgorICAg
ICAgICAqIFNvdXJjZXNDb2NvYS50eHQ6CisgICAgICAgICogV2ViQ29yZS54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qOgorICAgICAgICAqIHBhZ2UvUGFnZS5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpQYWdlOjpkaWRDb21taXRMb2FkKToKKyAgICAgICAgKiBwbGF0Zm9ybS9jb2NvYS9Db3JlTG9j
YXRpb25HZW9sb2NhdGlvblByb3ZpZGVyLmg6IENvcGllZCBmcm9tIFNvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvZ2VvbG9jYXRpb24vR2VvbG9jYXRpb25DbGllbnQuaC4KKyAgICAgICAgKiBwbGF0Zm9y
bS9jb2NvYS9Db3JlTG9jYXRpb25HZW9sb2NhdGlvblByb3ZpZGVyLm1tOiBBZGRlZC4KKyAgICAg
ICAgKGlzQXV0aG9yaXphdGlvbkdyYW50ZWQpOgorICAgICAgICAoLVtXZWJDTExvY2F0aW9uTWFu
YWdlciBpbml0V2l0aFdlYnNpdGVJZGVudGlmaWVyOmNsaWVudDpdKToKKyAgICAgICAgKC1bV2Vi
Q0xMb2NhdGlvbk1hbmFnZXIgZGVhbGxvY10pOgorICAgICAgICAoLVtXZWJDTExvY2F0aW9uTWFu
YWdlciBzdGFydF0pOgorICAgICAgICAoLVtXZWJDTExvY2F0aW9uTWFuYWdlciBzdG9wXSk6Cisg
ICAgICAgICgtW1dlYkNMTG9jYXRpb25NYW5hZ2VyIHNldEVuYWJsZUhpZ2hBY2N1cmFjeTpdKToK
KyAgICAgICAgKC1bV2ViQ0xMb2NhdGlvbk1hbmFnZXIgcmVxdWVzdEdlb2xvY2F0aW9uQXV0aG9y
aXphdGlvbl0pOgorICAgICAgICAoLVtXZWJDTExvY2F0aW9uTWFuYWdlciBsb2NhdGlvbk1hbmFn
ZXJEaWRDaGFuZ2VBdXRob3JpemF0aW9uOl0pOgorICAgICAgICAoLVtXZWJDTExvY2F0aW9uTWFu
YWdlciBsb2NhdGlvbk1hbmFnZXI6ZGlkVXBkYXRlTG9jYXRpb25zOl0pOgorICAgICAgICAoLVtX
ZWJDTExvY2F0aW9uTWFuYWdlciBsb2NhdGlvbk1hbmFnZXI6ZGlkRmFpbFdpdGhFcnJvcjpdKToK
KyAgICAgICAgKFdlYkNvcmU6OkNvcmVMb2NhdGlvbkdlb2xvY2F0aW9uUHJvdmlkZXI6OkNvcmVM
b2NhdGlvbkdlb2xvY2F0aW9uUHJvdmlkZXIpOgorICAgICAgICAoV2ViQ29yZTo6Q29yZUxvY2F0
aW9uR2VvbG9jYXRpb25Qcm92aWRlcjo6fkNvcmVMb2NhdGlvbkdlb2xvY2F0aW9uUHJvdmlkZXIp
OgorICAgICAgICAoV2ViQ29yZTo6Q29yZUxvY2F0aW9uR2VvbG9jYXRpb25Qcm92aWRlcjo6c3Rh
cnQpOgorICAgICAgICAoV2ViQ29yZTo6Q29yZUxvY2F0aW9uR2VvbG9jYXRpb25Qcm92aWRlcjo6
c3RvcCk6CisgICAgICAgIChXZWJDb3JlOjpDb3JlTG9jYXRpb25HZW9sb2NhdGlvblByb3ZpZGVy
OjpzZXRFbmFibGVIaWdoQWNjdXJhY3kpOgorICAgICAgICAoV2ViQ29yZTo6Q29yZUxvY2F0aW9u
R2VvbG9jYXRpb25Qcm92aWRlcjo6cmVxdWVzdEF1dGhvcml6YXRpb24pOgorICAgICAgICAqIHBs
YXRmb3JtL21vY2svR2VvbG9jYXRpb25DbGllbnRNb2NrLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
Okdlb2xvY2F0aW9uQ2xpZW50TW9jazo6c3RhcnRVcGRhdGluZyk6CisgICAgICAgICogcGxhdGZv
cm0vbW9jay9HZW9sb2NhdGlvbkNsaWVudE1vY2suaDoKKwogMjAyMi0wMi0xNSAgRnVqaWkgSGly
b25vcmkgIDxIaXJvbm9yaS5GdWppaUBzb255LmNvbT4KIAogICAgICAgICBbVGV4dHVyZU1hcHBl
ckdMXSBkcm9wLXNoYWRvdyBmaWx0ZXIgd2l0aCBibHVyLXJhZGl1cyBkb2Vzbid0IHdvcmsgYXMg
ZXhwZWN0ZWQgaWYgaXQgaXMgdGhlIGxhc3QgZmlsdGVyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDM3OTQxYjFmNzRh
OTVlMTE0ODQ1ZGY4MTVlMjZkMWRjZTM4MDkyYjUuLjhiNzc0MDZkNTMyMmU2N2U2YjYxNDU5Y2Fl
ZTY0ZTA0MjdmZWRjMWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBi
L1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsOTQgQEAKKzIwMjItMDItMTMgIENo
cmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KKworICAgICAgICBEbyBwcmVsaW1pbmFyeSB3
b3JrIHRvIHBhc3MgZG9tYWluIG5hbWVzIHRvIENvcmVMb2NhdGlvbgorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjM2NTY2CisgICAgICAgIDxyZGFyOi8v
ODg3NjE0MTM+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgRGFyaW4gQWRsZXIuCisKKyAgICAgICAg
RG8gcHJlbGltaW5hcnkgd29yayB0byBwYXNzIGRvbWFpbiBuYW1lcyB0byBDb3JlTG9jYXRpb24g
d2hlbiB1c2luZyB0aGUgR2VvbG9jYXRpb24gQVBJLgorICAgICAgICBUaGlzIHBpcGVzIHRoZSBk
b21haW4gbmFtZXMgYWxsIHRoZSB3YXkgZnJvbSB0aGUgR2VvbG9jYXRpb24gQVBJIHRvIHRoZSBD
b3JlTG9jYXRpb24gY2FsbHMKKyAgICAgICAgYnV0IGRvZXNuJ3QgeWV0IHBhc3MgdGhlIGRvbWFp
biB0byBDb3JlTG9jYXRpb24gZHVlIHRvIDxyZGFyOi8vODg4MzQzMDE+LiBJIHdpbGwgZm9sbG93
LXVwCisgICAgICAgIG9uY2UgPHJkYXI6Ly84ODgzNDMwMT4gaXMgZml4ZWQuCisKKyAgICAgICAg
KiBTb3VyY2VzQ29jb2EudHh0OgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQy9XS0dlb2xvY2F0
aW9uTWFuYWdlci5jcHA6CisgICAgICAgIChXS0dlb2xvY2F0aW9uTWFuYWdlclNldFByb3ZpZGVy
KToKKyAgICAgICAgKiBVSVByb2Nlc3MvQ29jb2EvV2ViR2VvbG9jYXRpb25NYW5hZ2VyUHJveHlD
b2NvYS5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViS2l0OjpXZWJHZW9sb2NhdGlvbk1hbmFnZXJQ
cm94eTo6cG9zaXRpb25DaGFuZ2VkKToKKyAgICAgICAgKFdlYktpdDo6V2ViR2VvbG9jYXRpb25N
YW5hZ2VyUHJveHk6OmVycm9yT2NjdXJyZWQpOgorICAgICAgICAoV2ViS2l0OjpXZWJHZW9sb2Nh
dGlvbk1hbmFnZXJQcm94eTo6cmVzZXRHZW9sb2NhdGlvbik6CisgICAgICAgIChXZWJLaXQ6Oldl
Ykdlb2xvY2F0aW9uTWFuYWdlclByb3h5Ojppc1VwZGF0aW5nIGNvbnN0KToKKyAgICAgICAgKFdl
YktpdDo6V2ViR2VvbG9jYXRpb25NYW5hZ2VyUHJveHk6OmlzSGlnaEFjY3VyYWN5RW5hYmxlZCBj
b25zdCk6CisgICAgICAgIChXZWJLaXQ6OldlYkdlb2xvY2F0aW9uTWFuYWdlclByb3h5Ojpwcm92
aWRlclN0YXJ0VXBkYXRpbmcpOgorICAgICAgICAoV2ViS2l0OjpXZWJHZW9sb2NhdGlvbk1hbmFn
ZXJQcm94eTo6cHJvdmlkZXJTdG9wVXBkYXRpbmcpOgorICAgICAgICAoV2ViS2l0OjpXZWJHZW9s
b2NhdGlvbk1hbmFnZXJQcm94eTo6cHJvdmlkZXJTZXRFbmFibGVkSGlnaEFjY3VyYWN5KToKKyAg
ICAgICAgKiBVSVByb2Nlc3MvV2ViR2VvbG9jYXRpb25NYW5hZ2VyUHJveHkuY3BwOgorICAgICAg
ICAoV2ViS2l0OjpXZWJHZW9sb2NhdGlvbk1hbmFnZXJQcm94eTo6V2ViR2VvbG9jYXRpb25NYW5h
Z2VyUHJveHkpOgorICAgICAgICAoV2ViS2l0OjpXZWJHZW9sb2NhdGlvbk1hbmFnZXJQcm94eTo6
cHJvY2Vzc1Bvb2xEZXN0cm95ZWQpOgorICAgICAgICAoV2ViS2l0OjpXZWJHZW9sb2NhdGlvbk1h
bmFnZXJQcm94eTo6cHJvY2Vzc0RpZENsb3NlKToKKyAgICAgICAgKFdlYktpdDo6V2ViR2VvbG9j
YXRpb25NYW5hZ2VyUHJveHk6OnByb3ZpZGVyRGlkQ2hhbmdlUG9zaXRpb24pOgorICAgICAgICAo
V2ViS2l0OjpXZWJHZW9sb2NhdGlvbk1hbmFnZXJQcm94eTo6cHJvdmlkZXJEaWRGYWlsVG9EZXRl
cm1pbmVQb3NpdGlvbik6CisgICAgICAgIChXZWJLaXQ6OldlYkdlb2xvY2F0aW9uTWFuYWdlclBy
b3h5OjpzdGFydFVwZGF0aW5nKToKKyAgICAgICAgKFdlYktpdDo6V2ViR2VvbG9jYXRpb25NYW5h
Z2VyUHJveHk6OnN0b3BVcGRhdGluZyk6CisgICAgICAgIChXZWJLaXQ6OldlYkdlb2xvY2F0aW9u
TWFuYWdlclByb3h5OjpzZXRFbmFibGVIaWdoQWNjdXJhY3kpOgorICAgICAgICAoV2ViS2l0OjpX
ZWJHZW9sb2NhdGlvbk1hbmFnZXJQcm94eTo6c2V0UHJvdmlkZXIpOgorICAgICAgICAoV2ViS2l0
OjpXZWJHZW9sb2NhdGlvbk1hbmFnZXJQcm94eTo6aXNVcGRhdGluZyBjb25zdCk6CisgICAgICAg
IChXZWJLaXQ6OldlYkdlb2xvY2F0aW9uTWFuYWdlclByb3h5Ojppc0hpZ2hBY2N1cmFjeUVuYWJs
ZWQgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpXZWJHZW9sb2NhdGlvbk1hbmFnZXJQcm94eTo6
cHJvdmlkZXJTdGFydFVwZGF0aW5nKToKKyAgICAgICAgKFdlYktpdDo6V2ViR2VvbG9jYXRpb25N
YW5hZ2VyUHJveHk6OnByb3ZpZGVyU3RvcFVwZGF0aW5nKToKKyAgICAgICAgKFdlYktpdDo6V2Vi
R2VvbG9jYXRpb25NYW5hZ2VyUHJveHk6OnByb3ZpZGVyU2V0RW5hYmxlZEhpZ2hBY2N1cmFjeSk6
CisgICAgICAgIChXZWJLaXQ6OldlYkdlb2xvY2F0aW9uTWFuYWdlclByb3h5OjpyZXNldFBlcm1p
c3Npb25zKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYktpdDo6V2ViR2VvbG9jYXRpb25NYW5hZ2Vy
UHJveHk6OnJlbW92ZVJlcXVlc3Rlcik6IERlbGV0ZWQuCisgICAgICAgICogVUlQcm9jZXNzL1dl
Ykdlb2xvY2F0aW9uTWFuYWdlclByb3h5Lmg6CisgICAgICAgIChXZWJLaXQ6OldlYkdlb2xvY2F0
aW9uTWFuYWdlclByb3h5OjpsYXN0UG9zaXRpb24gY29uc3QpOiBEZWxldGVkLgorICAgICAgICAo
V2ViS2l0OjpXZWJHZW9sb2NhdGlvbk1hbmFnZXJQcm94eTo6aXNVcGRhdGluZyBjb25zdCk6IERl
bGV0ZWQuCisgICAgICAgIChXZWJLaXQ6OldlYkdlb2xvY2F0aW9uTWFuYWdlclByb3h5Ojppc0hp
Z2hBY2N1cmFjeUVuYWJsZWQgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAqIFVJUHJvY2Vzcy9X
ZWJHZW9sb2NhdGlvbk1hbmFnZXJQcm94eS5tZXNzYWdlcy5pbjoKKyAgICAgICAgKiBVSVByb2Nl
c3MvaW9zL1dLR2VvbG9jYXRpb25Qcm92aWRlcklPUy5tbToKKyAgICAgICAgKC1bV0tHZW9sb2Nh
dGlvblByb3ZpZGVySU9TIF9zdGFydFVwZGF0aW5nXSk6CisgICAgICAgICgtW1dLR2VvbG9jYXRp
b25Qcm92aWRlcklPUyBfc3RvcFVwZGF0aW5nXSk6CisgICAgICAgICgtW1dLR2VvbG9jYXRpb25Q
cm92aWRlcklPUyBfc2V0RW5hYmxlSGlnaEFjY3VyYWN5Ol0pOgorICAgICAgICAoLVtXS0dlb2xv
Y2F0aW9uUHJvdmlkZXJJT1MgaW5pdFdpdGhQcm9jZXNzUG9vbDpdKToKKyAgICAgICAgKC1bV0tH
ZW9sb2NhdGlvblByb3ZpZGVySU9TIGRlY2lkZVBvbGljeUZvckdlb2xvY2F0aW9uUmVxdWVzdEZy
b21PcmlnaW46Y29tcGxldGlvbkhhbmRsZXI6dmlldzpdKToKKyAgICAgICAgKC1bV0tHZW9sb2Nh
dGlvblByb3ZpZGVySU9TIGdlb2xvY2F0aW9uQXV0aG9yaXphdGlvbkdyYW50ZWRdKToKKyAgICAg
ICAgKC1bV0tHZW9sb2NhdGlvblByb3ZpZGVySU9TIHBvc2l0aW9uQ2hhbmdlZDpdKToKKyAgICAg
ICAgKC1bV0tHZW9sb2NhdGlvblByb3ZpZGVySU9TIGVycm9yT2NjdXJyZWQ6XSk6CisgICAgICAg
ICgtW1dLR2VvbG9jYXRpb25Qcm92aWRlcklPUyByZXNldEdlb2xvY2F0aW9uXSk6CisgICAgICAg
IChzdGFydFVwZGF0aW5nQ2FsbGJhY2spOiBEZWxldGVkLgorICAgICAgICAoc3RvcFVwZGF0aW5n
Q2FsbGJhY2spOiBEZWxldGVkLgorICAgICAgICAoc2V0RW5hYmxlSGlnaEFjY3VyYWN5KTogRGVs
ZXRlZC4KKyAgICAgICAgKC1bV0tMZWdhY3lDb3JlTG9jYXRpb25Qcm92aWRlciBzZXRMaXN0ZW5l
cjpdKTogRGVsZXRlZC4KKyAgICAgICAgKC1bV0tMZWdhY3lDb3JlTG9jYXRpb25Qcm92aWRlciBy
ZXF1ZXN0R2VvbG9jYXRpb25BdXRob3JpemF0aW9uXSk6IERlbGV0ZWQuCisgICAgICAgICgtW1dL
TGVnYWN5Q29yZUxvY2F0aW9uUHJvdmlkZXIgc3RhcnRdKTogRGVsZXRlZC4KKyAgICAgICAgKC1b
V0tMZWdhY3lDb3JlTG9jYXRpb25Qcm92aWRlciBzdG9wXSk6IERlbGV0ZWQuCisgICAgICAgICgt
W1dLTGVnYWN5Q29yZUxvY2F0aW9uUHJvdmlkZXIgc2V0RW5hYmxlSGlnaEFjY3VyYWN5Ol0pOiBE
ZWxldGVkLgorICAgICAgICAoLVtXS0xlZ2FjeUNvcmVMb2NhdGlvblByb3ZpZGVyIGdlb2xvY2F0
aW9uQXV0aG9yaXphdGlvbkdyYW50ZWRdKTogRGVsZXRlZC4KKyAgICAgICAgKC1bV0tMZWdhY3lD
b3JlTG9jYXRpb25Qcm92aWRlciBnZW9sb2NhdGlvbkF1dGhvcml6YXRpb25EZW5pZWRdKTogRGVs
ZXRlZC4KKyAgICAgICAgKC1bV0tMZWdhY3lDb3JlTG9jYXRpb25Qcm92aWRlciBwb3NpdGlvbkNo
YW5nZWQ6XSk6IERlbGV0ZWQuCisgICAgICAgICgtW1dLTGVnYWN5Q29yZUxvY2F0aW9uUHJvdmlk
ZXIgZXJyb3JPY2N1cnJlZDpdKTogRGVsZXRlZC4KKyAgICAgICAgKC1bV0tMZWdhY3lDb3JlTG9j
YXRpb25Qcm92aWRlciByZXNldEdlb2xvY2F0aW9uXSk6IERlbGV0ZWQuCisgICAgICAgICogV2Vi
S2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogV2ViUHJvY2Vzcy9HZW9s
b2NhdGlvbi9XZWJHZW9sb2NhdGlvbk1hbmFnZXIuY3BwOgorICAgICAgICAoV2ViS2l0OjpyZWdp
c3RyYWJsZURvbWFpbkZvclBhZ2UpOgorICAgICAgICAoV2ViS2l0OjpXZWJHZW9sb2NhdGlvbk1h
bmFnZXI6OnJlZ2lzdGVyV2ViUGFnZSk6CisgICAgICAgIChXZWJLaXQ6OldlYkdlb2xvY2F0aW9u
TWFuYWdlcjo6dW5yZWdpc3RlcldlYlBhZ2UpOgorICAgICAgICAoV2ViS2l0OjpXZWJHZW9sb2Nh
dGlvbk1hbmFnZXI6OnNldEVuYWJsZUhpZ2hBY2N1cmFjeUZvclBhZ2UpOgorICAgICAgICAoV2Vi
S2l0OjpXZWJHZW9sb2NhdGlvbk1hbmFnZXI6OmRpZENoYW5nZVBvc2l0aW9uKToKKyAgICAgICAg
KFdlYktpdDo6V2ViR2VvbG9jYXRpb25NYW5hZ2VyOjpkaWRGYWlsVG9EZXRlcm1pbmVQb3NpdGlv
bik6CisgICAgICAgIChXZWJLaXQ6OldlYkdlb2xvY2F0aW9uTWFuYWdlcjo6cmVzZXRQZXJtaXNz
aW9ucyk6CisgICAgICAgIChXZWJLaXQ6OldlYkdlb2xvY2F0aW9uTWFuYWdlcjo6aXNVcGRhdGlu
ZyBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJLaXQ6OldlYkdlb2xvY2F0aW9uTWFuYWdl
cjo6aXNIaWdoQWNjdXJhY3lFbmFibGVkIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKiBXZWJQ
cm9jZXNzL0dlb2xvY2F0aW9uL1dlYkdlb2xvY2F0aW9uTWFuYWdlci5oOgorICAgICAgICAqIFdl
YlByb2Nlc3MvR2VvbG9jYXRpb24vV2ViR2VvbG9jYXRpb25NYW5hZ2VyLm1lc3NhZ2VzLmluOgor
ICAgICAgICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViR2VvbG9jYXRpb25DbGllbnQu
Y3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJHZW9sb2NhdGlvbkNsaWVudDo6c3RhcnRVcGRhdGlu
Zyk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJHZW9sb2NhdGlvbkNs
aWVudC5oOgorICAgICAgICAoV2ViS2l0OjpXZWJHZW9sb2NhdGlvbkNsaWVudDo6V2ViR2VvbG9j
YXRpb25DbGllbnQpOiBEZWxldGVkLgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUHJvY2Vzcy5j
cHA6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3M6OnJlc2V0QWxsR2VvbG9jYXRpb25QZXJt
aXNzaW9ucyk6IERlbGV0ZWQuCisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmg6CisK
IDIwMjItMDItMTUgIFdlbnNvbiBIc2llaCAgPHdlbnNvbl9oc2llaEBhcHBsZS5jb20+CiAKICAg
ICAgICAgW21hY09TXSBBZGQgYSBjb250ZXh0IG1lbnUgaXRlbSB0byAiQ29weSBDcm9wcGVkIElt
YWdlIgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9nIGIvU291
cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9nCmluZGV4IGY0ZTg2NWRmMTc5OTk1ZWVlOWQy
MDJmYWY1NmMxZTIwZmU3NmE0ZGIuLmM2YTJkYzM5OTFiMDkxMjA3YThkZWQ5MThhZDAxMDAzOGI0
MDhmMTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxvZworKysg
Yi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNSBAQAorMjAy
Mi0wMi0xMyAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgorCisgICAgICAgIERvIHBy
ZWxpbWluYXJ5IHdvcmsgdG8gcGFzcyBkb21haW4gbmFtZXMgdG8gQ29yZUxvY2F0aW9uCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzY1NjYKKyAgICAg
ICAgPHJkYXI6Ly84ODc2MTQxMz4KKworICAgICAgICBSZXZpZXdlZCBieSBEYXJpbiBBZGxlci4K
KworICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYkdlb2xvY2F0aW9uQ2xpZW50Lmg6CisgICAg
ICAgICogV2ViQ29yZVN1cHBvcnQvV2ViR2VvbG9jYXRpb25DbGllbnQubW06CisgICAgICAgIChX
ZWJHZW9sb2NhdGlvbkNsaWVudDo6c3RhcnRVcGRhdGluZyk6CisKIDIwMjItMDItMTUgIFdlbnNv
biBIc2llaCAgPHdlbnNvbl9oc2llaEBhcHBsZS5jb20+CiAKICAgICAgICAgW21hY09TXSBBZGQg
YSBjb250ZXh0IG1lbnUgaXRlbSB0byAiQ29weSBDcm9wcGVkIEltYWdlIgpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdExlZ2FjeS93aW4vQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdExlZ2FjeS93
aW4vQ2hhbmdlTG9nCmluZGV4IDY5NWFhOTEwNTM5ZWYwMjEwNWY1MjE5MzA0YzA5N2UxMDMxMjY0
NTUuLmY0MDBmMzY3ZDA1MmFiZTU4NzU5YTVkNzJjNTI5NjUxZGQ5OTE0M2YgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0TGVn
YWN5L3dpbi9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNSBAQAorMjAyMi0wMi0xMyAgQ2hyaXMgRHVt
ZXogIDxjZHVtZXpAYXBwbGUuY29tPgorCisgICAgICAgIERvIHByZWxpbWluYXJ5IHdvcmsgdG8g
cGFzcyBkb21haW4gbmFtZXMgdG8gQ29yZUxvY2F0aW9uCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzY1NjYKKyAgICAgICAgPHJkYXI6Ly84ODc2MTQx
Mz4KKworICAgICAgICBSZXZpZXdlZCBieSBEYXJpbiBBZGxlci4KKworICAgICAgICAqIFdlYkNv
cmVTdXBwb3J0L1dlYkdlb2xvY2F0aW9uQ2xpZW50LmNwcDoKKyAgICAgICAgKFdlYkdlb2xvY2F0
aW9uQ2xpZW50OjpzdGFydFVwZGF0aW5nKToKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJH
ZW9sb2NhdGlvbkNsaWVudC5oOgorCiAyMDIyLTAyLTAxICBNeWxlcyBDLiBNYXhmaWVsZCAgPG1t
YXhmaWVsZEBhcHBsZS5jb20+CiAKICAgICAgICAgUmVuYW1lIEZvbnRDYXNjYWRlOjpmb250TWV0
cmljcygpIGFuZCBSZW5kZXJTdHlsZTo6Zm9udE1ldHJpY3MoKSB0byBmb250TWV0cmljc09mUHJp
bWFyeUZvbnQoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvUGxhdGZvcm1IYXZlLmggYi9T
b3VyY2UvV1RGL3d0Zi9QbGF0Zm9ybUhhdmUuaAppbmRleCAwOTJiYzM2MjE1MDFkNDRjZWFmYjA3
MGZhY2NkMzk5NWNkYTIzMTI3Li4yN2JmYjM5MDMzOGI5NjUxNDhlYWEyYmIwNDgyYzNkYjVlZjk5
ZjM0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9QbGF0Zm9ybUhhdmUuaAorKysgYi9Tb3Vy
Y2UvV1RGL3d0Zi9QbGF0Zm9ybUhhdmUuaApAQCAtMTExOSw2ICsxMTE5LDIwIEBACiAjZGVmaW5l
IEhBVkVfTlNURVhUTElTVF9NQVJLRVJfRk9STUFUUyAxCiAjZW5kaWYKIAorI2lmIChQTEFURk9S
TShJT1MpICYmIF9fSVBIT05FX09TX1ZFUlNJT05fTUFYX0FMTE9XRUQgPj0gMTYwMDAwKSBcCisg
ICAgfHwgKFBMQVRGT1JNKFdBVENIT1MpICYmIF9fV0FUQ0hfT1NfVkVSU0lPTl9NQVhfQUxMT1dF
RCA+PSA5MDAwMCkgXAorICAgIHx8IChQTEFURk9STShBUFBMRVRWKSAmJiBfX1RWX09TX1ZFUlNJ
T05fTUFYX0FMTE9XRUQgPj0gMTYwMDAwKQorI2RlZmluZSBIQVZFX0NPUkVfTE9DQVRJT05fV0VC
U0lURV9JREVOVElGSUVSUyAxCisjZW5kaWYKKworI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpIHx8
IChQTEFURk9STShNQUMpICYmIF9fTUFDX09TX1hfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0gMTAx
NjAwKQorI2RlZmluZSBIQVZFX0NPUkVfTE9DQVRJT04gMQorLy8ga0NMQXV0aG9yaXphdGlvblN0
YXR1c0F1dGhvcml6ZWRXaGVuSW5Vc2UgaXMgb25seSBhdmFpbGFibGUgb24gbWFjT1MgYXMgcGFy
dCBvZiB0aGUgaW50ZXJuYWwgU0RLLgorI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpIHx8IChkZWZp
bmVkIF9faGFzX2luY2x1ZGUgJiYgX19oYXNfaW5jbHVkZSg8Q29yZUZvdW5kYXRpb24vQ0ZQcml2
Lmg+KSkKKyNkZWZpbmUgSEFWRV9DT1JFX0xPQ0FUSU9OX0FVVEhPUklaRURfV0hFTl9JTl9VU0Ug
MQorI2VuZGlmCisjZW5kaWYKKwogI2lmIFBMQVRGT1JNKE1BQykKICNkZWZpbmUgSEFWRV9TQ0VO
RUtJVCAxCiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZ2VvbG9j
YXRpb24vR2VvbG9jYXRpb25DbGllbnQuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZ2VvbG9j
YXRpb24vR2VvbG9jYXRpb25DbGllbnQuaAppbmRleCA1YmFmM2FkODJjNTdlNWFjYmE5NmUzZGYw
ZWQ2MGViYzc1NGJjYjA1Li5hNGU4NjIzNjI1NTY3ZTlhZGZlYjAwZDgyNDAwMGEyNzdkYmVhZjAw
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2dlb2xvY2F0aW9uL0dlb2xvY2F0
aW9uQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9nZW9sb2NhdGlvbi9HZW9s
b2NhdGlvbkNsaWVudC5oCkBAIC0zOCw3ICszOCw3IEBAIGNsYXNzIEdlb2xvY2F0aW9uQ2xpZW50
IHsKIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgZ2VvbG9jYXRpb25EZXN0cm95ZWQoKSA9IDA7
CiAKLSAgICB2aXJ0dWFsIHZvaWQgc3RhcnRVcGRhdGluZyhjb25zdCBTdHJpbmcmIGF1dGhvcml6
YXRpb25Ub2tlbikgPSAwOworICAgIHZpcnR1YWwgdm9pZCBzdGFydFVwZGF0aW5nKGNvbnN0IFN0
cmluZyYgYXV0aG9yaXphdGlvblRva2VuLCBib29sIG5lZWRzSGlnaEFjY3VyYWN5KSA9IDA7CiAg
ICAgdmlydHVhbCB2b2lkIHN0b3BVcGRhdGluZygpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgcmV2
b2tlQXV0aG9yaXphdGlvblRva2VuKGNvbnN0IFN0cmluZyYpIHsgfQogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2dlb2xvY2F0aW9uL0dlb2xvY2F0aW9uQ29udHJvbGxlci5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2dlb2xvY2F0aW9uL0dlb2xvY2F0aW9uQ29udHJv
bGxlci5jcHAKaW5kZXggMDYxNjI5MTYwZDliY2M3ZDVkYWY3NGNmYzRmODE1NTBiYTQ4ZGU4Yy4u
MDdkZDY1ZjNjMWFlZTc5ZWI5YzczMjgzNmEyZDVhYWQwMTczMzNjZiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9nZW9sb2NhdGlvbi9HZW9sb2NhdGlvbkNvbnRyb2xsZXIuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZ2VvbG9jYXRpb24vR2VvbG9jYXRpb25Db250
cm9sbGVyLmNwcApAQCAtNTIsMTkgKzUyLDI1IEBAIEdlb2xvY2F0aW9uQ29udHJvbGxlcjo6fkdl
b2xvY2F0aW9uQ29udHJvbGxlcigpCiAgICAgbV9jbGllbnQuZ2VvbG9jYXRpb25EZXN0cm95ZWQo
KTsKIH0KIAordm9pZCBHZW9sb2NhdGlvbkNvbnRyb2xsZXI6OmRpZE5hdmlnYXRlUGFnZSgpCit7
CisgICAgd2hpbGUgKCFtX29ic2VydmVycy5pc0VtcHR5KCkpCisgICAgICAgIHJlbW92ZU9ic2Vy
dmVyKG1fb2JzZXJ2ZXJzLmJlZ2luKCktPmdldCgpKTsKK30KKwogdm9pZCBHZW9sb2NhdGlvbkNv
bnRyb2xsZXI6OmFkZE9ic2VydmVyKEdlb2xvY2F0aW9uJiBvYnNlcnZlciwgYm9vbCBlbmFibGVI
aWdoQWNjdXJhY3kpCiB7Ci0gICAgLy8gVGhpcyBtYXkgYmUgY2FsbGVkIG11bHRpcGxlIHRpbWVz
IHdpdGggdGhlIHNhbWUgb2JzZXJ2ZXIsIHRob3VnaCByZW1vdmVPYnNlcnZlcigpCi0gICAgLy8g
aXMgY2FsbGVkIG9ubHkgb25jZSB3aXRoIGVhY2guCi0gICAgYm9vbCB3YXNFbXB0eSA9IG1fb2Jz
ZXJ2ZXJzLmlzRW1wdHkoKTsKKyAgICBib29sIGhpZ2hBY2N1cmFjeVdhc1JlcXVpcmVkID0gbmVl
ZHNIaWdoQWNjdXJhY3koKTsKKwogICAgIG1fb2JzZXJ2ZXJzLmFkZChvYnNlcnZlcik7CiAgICAg
aWYgKGVuYWJsZUhpZ2hBY2N1cmFjeSkKICAgICAgICAgbV9oaWdoQWNjdXJhY3lPYnNlcnZlcnMu
YWRkKG9ic2VydmVyKTsKIAotICAgIGlmIChlbmFibGVIaWdoQWNjdXJhY3kpCi0gICAgICAgIG1f
Y2xpZW50LnNldEVuYWJsZUhpZ2hBY2N1cmFjeSh0cnVlKTsKLSAgICBpZiAod2FzRW1wdHkgJiYg
bV9wYWdlLmlzVmlzaWJsZSgpKQotICAgICAgICBtX2NsaWVudC5zdGFydFVwZGF0aW5nKG9ic2Vy
dmVyLmF1dGhvcml6YXRpb25Ub2tlbigpKTsKKyAgICBpZiAobV9pc1VwZGF0aW5nKSB7CisgICAg
ICAgIGlmICghaGlnaEFjY3VyYWN5V2FzUmVxdWlyZWQgJiYgZW5hYmxlSGlnaEFjY3VyYWN5KQor
ICAgICAgICAgICAgbV9jbGllbnQuc2V0RW5hYmxlSGlnaEFjY3VyYWN5KHRydWUpOworICAgIH0g
ZWxzZQorICAgICAgICBzdGFydFVwZGF0aW5nSWZOZWNlc3NhcnkoKTsKIH0KIAogdm9pZCBHZW9s
b2NhdGlvbkNvbnRyb2xsZXI6OnJlbW92ZU9ic2VydmVyKEdlb2xvY2F0aW9uJiBvYnNlcnZlcikK
QEAgLTcyLDEyICs3OCwxNyBAQCB2b2lkIEdlb2xvY2F0aW9uQ29udHJvbGxlcjo6cmVtb3ZlT2Jz
ZXJ2ZXIoR2VvbG9jYXRpb24mIG9ic2VydmVyKQogICAgIGlmICghbV9vYnNlcnZlcnMuY29udGFp
bnMob2JzZXJ2ZXIpKQogICAgICAgICByZXR1cm47CiAKKyAgICBib29sIGhpZ2hBY2N1cmFjeVdh
c1JlcXVpcmVkID0gbmVlZHNIaWdoQWNjdXJhY3koKTsKKwogICAgIG1fb2JzZXJ2ZXJzLnJlbW92
ZShvYnNlcnZlcik7CiAgICAgbV9oaWdoQWNjdXJhY3lPYnNlcnZlcnMucmVtb3ZlKG9ic2VydmVy
KTsKIAorICAgIGlmICghbV9pc1VwZGF0aW5nKQorICAgICAgICByZXR1cm47CisKICAgICBpZiAo
bV9vYnNlcnZlcnMuaXNFbXB0eSgpKQotICAgICAgICBtX2NsaWVudC5zdG9wVXBkYXRpbmcoKTsK
LSAgICBlbHNlIGlmIChtX2hpZ2hBY2N1cmFjeU9ic2VydmVycy5pc0VtcHR5KCkpCisgICAgICAg
IHN0b3BVcGRhdGluZ0lmTmVjZXNzYXJ5KCk7CisgICAgZWxzZSBpZiAoaGlnaEFjY3VyYWN5V2Fz
UmVxdWlyZWQgJiYgIW5lZWRzSGlnaEFjY3VyYWN5KCkpCiAgICAgICAgIG1fY2xpZW50LnNldEVu
YWJsZUhpZ2hBY2N1cmFjeShmYWxzZSk7CiB9CiAKQEAgLTEzOSw5ICsxNTAsOSBAQCB2b2lkIEdl
b2xvY2F0aW9uQ29udHJvbGxlcjo6YWN0aXZpdHlTdGF0ZURpZENoYW5nZShPcHRpb25TZXQ8QWN0
aXZpdHlTdGF0ZTo6RmxhZwogICAgIGF1dG8gY2hhbmdlZCA9IG9sZEFjdGl2aXR5U3RhdGUgXiBu
ZXdBY3Rpdml0eVN0YXRlOwogICAgIGlmIChjaGFuZ2VkICYgQWN0aXZpdHlTdGF0ZTo6SXNWaXNp
YmxlICYmICFtX29ic2VydmVycy5pc0VtcHR5KCkpIHsKICAgICAgICAgaWYgKG5ld0FjdGl2aXR5
U3RhdGUgJiBBY3Rpdml0eVN0YXRlOjpJc1Zpc2libGUpCi0gICAgICAgICAgICBtX2NsaWVudC5z
dGFydFVwZGF0aW5nKCgqbV9vYnNlcnZlcnMucmFuZG9tKCkpLT5hdXRob3JpemF0aW9uVG9rZW4o
KSk7CisgICAgICAgICAgICBzdGFydFVwZGF0aW5nSWZOZWNlc3NhcnkoKTsKICAgICAgICAgZWxz
ZQotICAgICAgICAgICAgbV9jbGllbnQuc3RvcFVwZGF0aW5nKCk7CisgICAgICAgICAgICBzdG9w
VXBkYXRpbmdJZk5lY2Vzc2FyeSgpOwogICAgIH0KIAogICAgIGlmICghbV9wYWdlLmlzVmlzaWJs
ZSgpKQpAQCAtMTUyLDYgKzE2MywyNCBAQCB2b2lkIEdlb2xvY2F0aW9uQ29udHJvbGxlcjo6YWN0
aXZpdHlTdGF0ZURpZENoYW5nZShPcHRpb25TZXQ8QWN0aXZpdHlTdGF0ZTo6RmxhZwogICAgICAg
ICBtX2NsaWVudC5yZXF1ZXN0UGVybWlzc2lvbihwZXJtaXNzaW9uUmVxdWVzdC5nZXQoKSk7CiB9
CiAKK3ZvaWQgR2VvbG9jYXRpb25Db250cm9sbGVyOjpzdGFydFVwZGF0aW5nSWZOZWNlc3Nhcnko
KQoreworICAgIGlmIChtX2lzVXBkYXRpbmcgfHwgIW1fcGFnZS5pc1Zpc2libGUoKSB8fCBtX29i
c2VydmVycy5pc0VtcHR5KCkpCisgICAgICAgIHJldHVybjsKKworICAgIG1fY2xpZW50LnN0YXJ0
VXBkYXRpbmcoKCptX29ic2VydmVycy5yYW5kb20oKSktPmF1dGhvcml6YXRpb25Ub2tlbigpLCBu
ZWVkc0hpZ2hBY2N1cmFjeSgpKTsKKyAgICBtX2lzVXBkYXRpbmcgPSB0cnVlOworfQorCit2b2lk
IEdlb2xvY2F0aW9uQ29udHJvbGxlcjo6c3RvcFVwZGF0aW5nSWZOZWNlc3NhcnkoKQoreworICAg
IGlmICghbV9pc1VwZGF0aW5nKQorICAgICAgICByZXR1cm47CisKKyAgICBtX2NsaWVudC5zdG9w
VXBkYXRpbmcoKTsKKyAgICBtX2lzVXBkYXRpbmcgPSBmYWxzZTsKK30KKwogY29uc3QgY2hhciog
R2VvbG9jYXRpb25Db250cm9sbGVyOjpzdXBwbGVtZW50TmFtZSgpCiB7CiAgICAgcmV0dXJuICJH
ZW9sb2NhdGlvbkNvbnRyb2xsZXIiOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9nZW9sb2NhdGlvbi9HZW9sb2NhdGlvbkNvbnRyb2xsZXIuaCBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvZ2VvbG9jYXRpb24vR2VvbG9jYXRpb25Db250cm9sbGVyLmgKaW5kZXggNDJmNWQwNjJk
YjZmMDljNjYwMTExZDY2ZDlmMGZjZmZmM2IyMDc0MC4uYmJmZjU3NWViMDU4MzI0MDc4MGQzYjQx
YTk2NzQyYzZiMWQ3MjQ4ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9nZW9s
b2NhdGlvbi9HZW9sb2NhdGlvbkNvbnRyb2xsZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2dlb2xvY2F0aW9uL0dlb2xvY2F0aW9uQ29udHJvbGxlci5oCkBAIC0zMCw2ICszMCw3IEBA
CiAjaW5jbHVkZSAiQWN0aXZpdHlTdGF0ZUNoYW5nZU9ic2VydmVyLmgiCiAjaW5jbHVkZSAiR2Vv
bG9jYXRpb24uaCIKICNpbmNsdWRlICJQYWdlLmgiCisjaW5jbHVkZSAiUmVnaXN0cmFibGVEb21h
aW4uaCIKICNpbmNsdWRlIDx3dGYvSGFzaFNldC5oPgogI2luY2x1ZGUgPHd0Zi9Ob25jb3B5YWJs
ZS5oPgogI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KQEAgLTY1LDYgKzY2LDggQEAgcHVibGljOgog
CiAgICAgdm9pZCByZXZva2VBdXRob3JpemF0aW9uVG9rZW4oY29uc3QgU3RyaW5nJik7CiAKKyAg
ICB2b2lkIGRpZE5hdmlnYXRlUGFnZSgpOworCiBwcml2YXRlOgogICAgIFBhZ2UmIG1fcGFnZTsK
ICAgICBHZW9sb2NhdGlvbkNsaWVudCYgbV9jbGllbnQ7CkBAIC03Myw2ICs3NiwxMSBAQCBwcml2
YXRlOgogCiAgICAgc3RkOjpvcHRpb25hbDxHZW9sb2NhdGlvblBvc2l0aW9uRGF0YT4gbV9sYXN0
UG9zaXRpb247CiAKKyAgICBib29sIG5lZWRzSGlnaEFjY3VyYWN5KCkgY29uc3QgeyByZXR1cm4g
IW1faGlnaEFjY3VyYWN5T2JzZXJ2ZXJzLmlzRW1wdHkoKTsgfQorCisgICAgdm9pZCBzdGFydFVw
ZGF0aW5nSWZOZWNlc3NhcnkoKTsKKyAgICB2b2lkIHN0b3BVcGRhdGluZ0lmTmVjZXNzYXJ5KCk7
CisKICAgICB0eXBlZGVmIEhhc2hTZXQ8UmVmPEdlb2xvY2F0aW9uPj4gT2JzZXJ2ZXJzU2V0Owog
ICAgIC8vIEFsbCBvYnNlcnZlcnM7IGJvdGggdGhvc2UgcmVxdWVzdGluZyBoaWdoIGFjY3VyYWN5
IGFuZCB0aG9zZSBub3QuCiAgICAgT2JzZXJ2ZXJzU2V0IG1fb2JzZXJ2ZXJzOwpAQCAtODAsNiAr
ODgsOSBAQCBwcml2YXRlOgogCiAgICAgLy8gV2hpbGUgdGhlIHBhZ2UgaXMgbm90IHZpc2libGUs
IHdlIHBlbmQgcGVybWlzc2lvbiByZXF1ZXN0cy4KICAgICBIYXNoU2V0PFJlZjxHZW9sb2NhdGlv
bj4+IG1fcGVuZGluZ1Blcm1pc3Npb25SZXF1ZXN0OworCisgICAgUmVnaXN0cmFibGVEb21haW4g
bV9yZWdpc3RyYWJsZURvbWFpbjsKKyAgICBib29sIG1faXNVcGRhdGluZyB7IGZhbHNlIH07CiB9
OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2dlb2xvY2F0aW9uL0dlb2xvY2F0aW9uUG9zaXRpb25EYXRhLmggYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2dlb2xvY2F0aW9uL0dlb2xvY2F0aW9uUG9zaXRpb25EYXRhLmgKaW5kZXgg
OTI2MjIxNzBjOGFhZDY5ODliOGExMmNlNDgzNTZkYzY4N2JmNmUzNS4uY2MyMTgwYTgzN2QyNzQz
YzFmYmY3NjFjNDEwZTFjN2ViZmVhZWU3ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9nZW9sb2NhdGlvbi9HZW9sb2NhdGlvblBvc2l0aW9uRGF0YS5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvZ2VvbG9jYXRpb24vR2VvbG9jYXRpb25Qb3NpdGlvbkRhdGEuaApAQCAt
MjksNyArMjksNyBAQAogI2luY2x1ZGUgPHd0Zi9SZWYuaD4KICNpbmNsdWRlIDx3dGYvUmVmQ291
bnRlZC5oPgogCi0jaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKKyNpZiBQTEFURk9STShDT0NPQSkK
IE9CSkNfQ0xBU1MgQ0xMb2NhdGlvbjsKICNlbmRpZgogCkBAIC00Nyw3ICs0Nyw3IEBAIHB1Ymxp
YzoKICAgICB7CiAgICAgfQogCi0jaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKKyNpZiBQTEFURk9S
TShDT0NPQSkKICAgICBXRUJDT1JFX0VYUE9SVCBleHBsaWNpdCBHZW9sb2NhdGlvblBvc2l0aW9u
RGF0YShDTExvY2F0aW9uKik7CiAjZW5kaWYKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9nZW9sb2NhdGlvbi9jb2NvYS9HZW9sb2NhdGlvblBvc2l0aW9uRGF0YUNvY29hLm1t
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9nZW9sb2NhdGlvbi9jb2NvYS9HZW9sb2NhdGlvblBv
c2l0aW9uRGF0YUNvY29hLm1tCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjgxZTQwZjE2NDJiMjY4OTUyYjdiMDM5OGU0
ZThmZTJiOGNkNTgwZDEKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2dlb2xvY2F0aW9uL2NvY29hL0dlb2xvY2F0aW9uUG9zaXRpb25EYXRhQ29jb2EubW0KQEAgLTAs
MCArMSw1MyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNyBBcHBsZSBJbmMuIEFsbCBSaWdo
dHMgUmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6
CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0
aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS
CisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5D
LiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBS
T0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO
WSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkg
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisK
KyNpbXBvcnQgImNvbmZpZy5oIgorI2ltcG9ydCAiR2VvbG9jYXRpb25Qb3NpdGlvbi5oIgorCisj
aW1wb3J0IDxDb3JlTG9jYXRpb24vQ0xMb2NhdGlvbi5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7
CisKK0dlb2xvY2F0aW9uUG9zaXRpb25EYXRhOjpHZW9sb2NhdGlvblBvc2l0aW9uRGF0YShDTExv
Y2F0aW9uICpsb2NhdGlvbikKKyAgICA6IHRpbWVzdGFtcChsb2NhdGlvbi50aW1lc3RhbXAudGlt
ZUludGVydmFsU2luY2UxOTcwKQorICAgICwgbGF0aXR1ZGUobG9jYXRpb24uY29vcmRpbmF0ZS5s
YXRpdHVkZSkKKyAgICAsIGxvbmdpdHVkZShsb2NhdGlvbi5jb29yZGluYXRlLmxvbmdpdHVkZSkK
KyAgICAsIGFjY3VyYWN5KGxvY2F0aW9uLmhvcml6b250YWxBY2N1cmFjeSkKK3sKKyAgICBpZiAo
bG9jYXRpb24udmVydGljYWxBY2N1cmFjeSA+PSAwLjApIHsKKyAgICAgICAgYWx0aXR1ZGUgPSBs
b2NhdGlvbi5hbHRpdHVkZTsKKyAgICAgICAgYWx0aXR1ZGVBY2N1cmFjeSA9IGxvY2F0aW9uLnZl
cnRpY2FsQWNjdXJhY3k7CisgICAgfQorICAgIGlmIChsb2NhdGlvbi5zcGVlZCA+PSAwLjApCisg
ICAgICAgIHNwZWVkID0gbG9jYXRpb24uc3BlZWQ7CisgICAgaWYgKGxvY2F0aW9uLmNvdXJzZSA+
PSAwLjApCisgICAgICAgIGhlYWRpbmcgPSBsb2NhdGlvbi5jb3Vyc2U7CisjaWYgIVBMQVRGT1JN
KE1BQ0NBVEFMWVNUKQorICAgIGlmIChsb2NhdGlvbi5mbG9vcikKKyAgICAgICAgZmxvb3JMZXZl
bCA9IGxvY2F0aW9uLmZsb29yLmxldmVsOworI2VuZGlmCit9CisKK30gLy8gbmFtZXNwYWNlIFdl
YkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZ2VvbG9jYXRpb24vaW9z
L0dlb2xvY2F0aW9uUG9zaXRpb25EYXRhSU9TLm1tIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9n
ZW9sb2NhdGlvbi9pb3MvR2VvbG9jYXRpb25Qb3NpdGlvbkRhdGFJT1MubW0KZGVsZXRlZCBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDk4ZDlhMjQyMWU3ZjIzMDliNGY2MjNiMTRkN2NiZTJiNmM3ZTA0
NWMuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9nZW9sb2NhdGlvbi9pb3MvR2VvbG9jYXRpb25Qb3NpdGlvbkRhdGFJ
T1MubW0KKysrIC9kZXYvbnVsbApAQCAtMSw1NyArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChD
KSAyMDE3IEFwcGxlIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
LSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAy
LiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
IGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkK
LSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgVEhFCi0gKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJ
TiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCi0gKiBDT05UUklCVVRPUlMgQkUgTElBQkxF
IEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKLSAqIEVYRU1Q
TEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywKLSAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExP
U1MgT0YgVVNFLCBEQVRBLCBPUgotICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQotICogT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2ltcG9ydCAiY29uZmlnLmgiCi0jaW1wb3J0ICJH
ZW9sb2NhdGlvblBvc2l0aW9uLmgiCi0KLSNpZiBQTEFURk9STShJT1NfRkFNSUxZKQotCi0jaW1w
b3J0IDxDb3JlTG9jYXRpb24vQ0xMb2NhdGlvbi5oPgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0K
LUdlb2xvY2F0aW9uUG9zaXRpb25EYXRhOjpHZW9sb2NhdGlvblBvc2l0aW9uRGF0YShDTExvY2F0
aW9uKiBsb2NhdGlvbikKLSAgICA6IHRpbWVzdGFtcChsb2NhdGlvbi50aW1lc3RhbXAudGltZUlu
dGVydmFsU2luY2UxOTcwKQotICAgICwgbGF0aXR1ZGUobG9jYXRpb24uY29vcmRpbmF0ZS5sYXRp
dHVkZSkKLSAgICAsIGxvbmdpdHVkZShsb2NhdGlvbi5jb29yZGluYXRlLmxvbmdpdHVkZSkKLSAg
ICAsIGFjY3VyYWN5KGxvY2F0aW9uLmhvcml6b250YWxBY2N1cmFjeSkKLXsKLSAgICBpZiAobG9j
YXRpb24udmVydGljYWxBY2N1cmFjeSA+PSAwLjApIHsKLSAgICAgICAgYWx0aXR1ZGUgPSBsb2Nh
dGlvbi5hbHRpdHVkZTsKLSAgICAgICAgYWx0aXR1ZGVBY2N1cmFjeSA9IGxvY2F0aW9uLnZlcnRp
Y2FsQWNjdXJhY3k7Ci0gICAgfQotICAgIGlmIChsb2NhdGlvbi5zcGVlZCA+PSAwLjApCi0gICAg
ICAgIHNwZWVkID0gbG9jYXRpb24uc3BlZWQ7Ci0gICAgaWYgKGxvY2F0aW9uLmNvdXJzZSA+PSAw
LjApCi0gICAgICAgIGhlYWRpbmcgPSBsb2NhdGlvbi5jb3Vyc2U7Ci0jaWYgIVBMQVRGT1JNKE1B
Q0NBVEFMWVNUKQotICAgIGlmIChsb2NhdGlvbi5mbG9vcikKLSAgICAgICAgZmxvb3JMZXZlbCA9
IGxvY2F0aW9uLmZsb29yLmxldmVsOwotI2VuZGlmCi19Ci0KLX0KLQotI2VuZGlmIC8vIFBMQVRG
T1JNKElPU19GQU1JTFkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzQ29jb2Eu
dHh0IGIvU291cmNlL1dlYkNvcmUvU291cmNlc0NvY29hLnR4dAppbmRleCBhMTI3ODA0MTA0MDlk
ZTFmMmY5ODY5YzA0ZTdkOTdlNTdhNDg1YjQ5Li4wMjgxNGQwMjIyYjI2ZTI4OTliOGRhY2FlZDFh
NDJlNTZiNTc0MTk0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzQ29jb2EudHh0
CisrKyBiL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXNDb2NvYS50eHQKQEAgLTI1Miw2ICsyNTIsNyBA
QCBwbGF0Zm9ybS9jZi9NZWRpYUFjY2Vzc2liaWxpdHlTb2Z0TGluay5jcHAKIHBsYXRmb3JtL2Nm
L1J1bkxvb3BPYnNlcnZlci5jcHAKIHBsYXRmb3JtL2NmL1NoYXJlZEJ1ZmZlckNGLmNwcAogcGxh
dGZvcm0vY29jb2EvQ29udGVudEZpbHRlclVuYmxvY2tIYW5kbGVyQ29jb2EubW0gQG5vLXVuaWZ5
CitwbGF0Zm9ybS9jb2NvYS9Db3JlTG9jYXRpb25HZW9sb2NhdGlvblByb3ZpZGVyLm1tCiBwbGF0
Zm9ybS9jb2NvYS9Db3JlVmlkZW9Tb2Z0TGluay5jcHAKIHBsYXRmb3JtL2NvY29hL0RyYWdEYXRh
Q29jb2EubW0KIHBsYXRmb3JtL2NvY29hL0RyYWdJbWFnZUNvY29hLm1tCkBAIC0zMDgsNyArMzA5
LDcgQEAgcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL01lZGlhU2VsZWN0aW9uR3JvdXBB
VkZPYmpDLm1tCiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vU2FtcGxlQnVmZmVyRGlz
cGxheUxheWVyLmNwcAogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL1dlYk1lZGlhU2Vz
c2lvbk1hbmFnZXJNYWMuY3BwCiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9B
VkFzc2V0TUlNRVR5cGVDYWNoZS5tbQotcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29i
amMvQVZBc3NldFRyYWNrVXRpbGl0aWVzLm1tCitwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRp
b24vb2JqYy9BVkFzc2V0VHJhY2tVdGlsaXRpZXMubW0gQG5vLXVuaWZ5CiBwbGF0Zm9ybS9ncmFw
aGljcy9hdmZvdW5kYXRpb24vb2JqYy9BVk91dHB1dERldmljZU1lbnVDb250cm9sbGVyVGFyZ2V0
UGlja2VyLm1tIEBuby11bmlmeQogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMv
QVZSb3V0ZVBpY2tlclZpZXdUYXJnZXRQaWNrZXIubW0KIHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91
bmRhdGlvbi9vYmpjL0FWU3RyZWFtRGF0YVBhcnNlck1JTUVUeXBlQ2FjaGUubW0KQEAgLTMxOSw3
ICszMjAsNyBAQCBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9DRE1TZXNzaW9u
QVZGb3VuZGF0aW9uT2JqQy5tbQogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMv
Q0RNU2Vzc2lvbkFWU3RyZWFtU2Vzc2lvbi5tbQogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0
aW9uL29iamMvQ0RNU2Vzc2lvbk1lZGlhU291cmNlQVZGT2JqQy5tbQogcGxhdGZvcm0vZ3JhcGhp
Y3MvYXZmb3VuZGF0aW9uL29iamMvSW1hZ2VEZWNvZGVyQVZGT2JqQy5tbQotcGxhdGZvcm0vZ3Jh
cGhpY3MvYXZmb3VuZGF0aW9uL29iamMvSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUFWRk9iakMubW0K
K3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0luYmFuZFRleHRUcmFja1ByaXZh
dGVBVkZPYmpDLm1tIEBuby11bmlmeQogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29i
amMvSW5iYW5kQ2hhcHRlclRyYWNrUHJpdmF0ZUFWRk9iakMubW0gQG5vLXVuaWZ5CiBwbGF0Zm9y
bS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9Mb2NhbFNhbXBsZUJ1ZmZlckRpc3BsYXlMYXll
ci5tbQogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5YmFja1Rh
cmdldFBpY2tlck1hYy5tbQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ov
cHJvamVjdC5wYnhwcm9qCmluZGV4IDYxMTBlOTYyZDhkMThmYmY5YzAwNTQ5NzJhZThjZTNjZDEy
NjU1ZmYuLmZiOWZiN2NjMjIxODlmMDM0MzAyMGNmNmMwZmEzZDY2NWRiOWViMzggMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTEz
NTMsNiArMTM1Myw3IEBACiAJCTQ2ODM0NEUwMUVEREZBQUEwMEI3Nzk1QiAvKiBET01SZWN0TGlz
dC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDY4MzQ0
REUxRURERkE1RjAwQjc3OTVCIC8qIERPTVJlY3RMaXN0LmggKi87IHNldHRpbmdzID0ge0FUVFJJ
QlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNDY4M0RGNDAyNzY3REY5ODAwN0QwMEM4IC8q
IEpTU2hhZG93UmVhbG1HbG9iYWxTY29wZUJhc2UuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ2ODNERjNFMjc2N0RGOTgwMDdEMDBDOCAvKiBKU1NoYWRv
d1JlYWxtR2xvYmFsU2NvcGVCYXNlLmggKi87IH07CiAJCTQ2ODNERjQxMjc2N0U5MUEwMDdEMDBD
OCAvKiBTaGFkb3dSZWFsbUdsb2JhbFNjb3BlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA0NjgzREYzQjI3NjdERjI2MDA3RDAwQzggLyogU2hhZG93UmVh
bG1HbG9iYWxTY29wZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7
IH07IH07CisJCTQ2ODhFOTgwMjdCNkI0NTAwMDU2N0NEMiAvKiBDb3JlTG9jYXRpb25HZW9sb2Nh
dGlvblByb3ZpZGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA0Njg4RTk3RjI3QjZCNDQ0MDA1NjdDRDIgLyogQ29yZUxvY2F0aW9uR2VvbG9jYXRpb25Q
cm92aWRlci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07
CiAJCTQ2ODhFRTNDMjZERDI2MTAwMDJBRjVDNCAvKiBDcm9zc09yaWdpbk1vZGUuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ2ODhFRTNBMjZERDI2MEMw
MDJBRjVDNCAvKiBDcm9zc09yaWdpbk1vZGUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9
IChQcml2YXRlLCApOyB9OyB9OwogCQk0Njk0M0RDOTI3NjNGODE3MDA0QjYxMEUgLyogU2hhcmVk
V29ya2VyT2JqZWN0SWRlbnRpZmllci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gNDY5NDNEQzcyNzYzRjgwRTAwNEI2MTBFIC8qIFNoYXJlZFdvcmtlck9i
amVjdElkZW50aWZpZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCAp
OyB9OyB9OwogCQk0Njk4NUYyMzI3QTRBNkFEMDA5N0EzMkIgLyogU2hhcmVkV29ya2VyS2V5Lmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0Njk4NUYyMjI3
QTRBNjg2MDA5N0EzMkIgLyogU2hhcmVkV29ya2VyS2V5LmggKi87IHNldHRpbmdzID0ge0FUVFJJ
QlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKQEAgLTEzNzAsNiArMTM3MSw3IEBACiAJCTQ2Qjk1
MTk5MjA3RDYzNEQwMEE3RDJERCAvKiBSZW1vdGVET01XaW5kb3cuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ2Qjk1MThFMjA3RDYzMkEwMEE3RDJERCAv
KiBSZW1vdGVET01XaW5kb3cuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRl
LCApOyB9OyB9OwogCQk0NkI5NTE5QTIwN0Q2MzU0MDBBN0QyREQgLyogUmVtb3RlRnJhbWUuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ2Qjk1MTkyMjA3
RDYzMkUwMEE3RDJERCAvKiBSZW1vdGVGcmFtZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVT
ID0gKFByaXZhdGUsICk7IH07IH07CiAJCTQ2Qjk1QkY1MjIzMUNGRDYwMDUzQTUwNCAvKiBEZXZp
Y2VPcmllbnRhdGlvbkFuZE1vdGlvbkFjY2Vzc0NvbnRyb2xsZXIuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ2Qjk1QkY0MjIzMUNGQjgwMDUzQTUwNCAv
KiBEZXZpY2VPcmllbnRhdGlvbkFuZE1vdGlvbkFjY2Vzc0NvbnRyb2xsZXIuaCAqLzsgfTsKKwkJ
NDZCQTQ5QjgyN0JCNDQzMzAwNzdGNjNGIC8qIEFWQXNzZXRUcmFja1V0aWxpdGllcy5tbSBpbiBT
b3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENERUNBODk4MUVERjQ0
N0QwMERDQjA4QiAvKiBBVkFzc2V0VHJhY2tVdGlsaXRpZXMubW0gKi87IH07CiAJCTQ2QkNCQkMy
MjA4NTAwOEYwMDcxMDYzOCAvKiBKU1JlbW90ZURPTVdpbmRvd0Jhc2UuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ2QkNCQkMwMjA4NTAwN0YwMDcxMDYz
OCAvKiBKU1JlbW90ZURPTVdpbmRvd0Jhc2UuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9
IChQcml2YXRlLCApOyB9OyB9OwogCQk0NkJEMDVDNTI1QkI2RTU5MDAyMjVGMzAgLyogQWRkRXZl
bnRMaXN0ZW5lck9wdGlvbnMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDQ2QkQwNUMyMjVCQjZFNEUwMDIyNUYzMCAvKiBBZGRFdmVudExpc3RlbmVyT3B0
aW9ucy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJ
CTQ2QkQwNUM2MjVCQjZFNkMwMDIyNUYzMCAvKiBFdmVudExpc3RlbmVyT3B0aW9ucy5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDZCRDA1QzMyNUJCNkU0
RTAwMjI1RjMwIC8qIEV2ZW50TGlzdGVuZXJPcHRpb25zLmggKi87IHNldHRpbmdzID0ge0FUVFJJ
QlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKQEAgLTEzNzgsNiArMTM4MCw3IEBACiAJCTQ2QzY5
NkNCMUU3MjA1RjcwMDU5NzkzNyAvKiBDUFVNb25pdG9yLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0NkM2OTZDOTFFNzIwNUU0MDA1OTc5MzcgLyogQ1BV
TW9uaXRvci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07
CiAJCTQ2QzY5NkNDMUU3MjA1RkMwMDU5NzkzNyAvKiBDUFVNb25pdG9yLmNwcCBpbiBTb3VyY2Vz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ2QzY5NkNBMUU3MjA1RTQwMDU5
NzkzNyAvKiBDUFVNb25pdG9yLmNwcCAqLzsgfTsKIAkJNDZDODNFRkUxQTlCQkUyOTAwQTc5QTQx
IC8qIEdlb05vdGlmaWVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA0NkM4M0VGQzFBOUJCRTI5MDBBNzlBNDEgLyogR2VvTm90aWZpZXIuaCAqLzsgc2V0
dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQk0NkNBOTQzMTI3Qjg2
OTU4MDBGNEY1RkYgLyogSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUFWRk9iakMubW0gaW4gU291cmNl
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwN0FBNkI2QTE2NkQwMTk1MDBE
NDU2NzEgLyogSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUFWRk9iakMubW0gKi87IH07CiAJCTQ2Q0E5
QzQ0MUY5N0JCRTkwMDRDRkMzQSAvKiBWaXNpYmlsaXR5U3RhdGUuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ2Q0E5QzQxMUY5N0JCRTcwMDRDRkMzQSAv
KiBWaXNpYmlsaXR5U3RhdGUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRl
LCApOyB9OyB9OwogCQk0NkNGNTA0QTI3QUIxRUE0MDA3MERCQzggLyogU2hhcmVkV29ya2VyQ29u
dGV4dE1hbmFnZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDQ2Q0Y1MDQ4MjdBQjFFQTEwMDcwREJDOCAvKiBTaGFyZWRXb3JrZXJDb250ZXh0TWFuYWdl
ci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTQ2
RDAwMDQwMjZBMEZFQjMwMEQxQkYxRSAvKiBTdWJtaXRFdmVudC5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDZEMDAwM0UyNkEwRkU2RjAwRDFCRjFFIC8q
IFN1Ym1pdEV2ZW50LmggKi87IH07CkBAIC0yNjkzLDcgKzI2OTYsNyBAQAogCQk4Mzc2NUY5NTFE
QUM1MjJGMDBDMDY1MzcgLyogTW91c2VFdmVudEluaXQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDgzNzY1Rjk0MURBQzUyMTgwMEMwNjUzNyAvKiBNb3Vz
ZUV2ZW50SW5pdC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07
IH07CiAJCTgzNzg4NzgyMjREOEE2MDkwMDBENEE1QiAvKiBBdWRpb0J1ZmZlclNvdXJjZU9wdGlv
bnMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDgzNzg4
NzdGMjREOEE1RkMwMDBENEE1QiAvKiBBdWRpb0J1ZmZlclNvdXJjZU9wdGlvbnMuaCAqLzsgfTsK
IAkJODM3OTM2M0YxRkJCQjBCNDAwQzgwMjNDIC8qIFNlcnZpY2VXb3JrZXJDbGllbnREYXRhLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4Mzc5MzYzRTFG
QkJCMEE1MDBDODAyM0MgLyogU2VydmljZVdvcmtlckNsaWVudERhdGEuaCAqLzsgc2V0dGluZ3Mg
PSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwotCQk4Mzc5NjRDRjFGOERCNjlEMDAy
MThFQTAgLyogR2VvbG9jYXRpb25Qb3NpdGlvbkRhdGFJT1MubW0gaW4gU291cmNlcyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4Mzc5NjRDRTFGOERCNjlBMDAyMThFQTAgLyog
R2VvbG9jYXRpb25Qb3NpdGlvbkRhdGFJT1MubW0gKi87IH07CisJCTgzNzk2NENGMUY4REI2OUQw
MDIxOEVBMCAvKiBHZW9sb2NhdGlvblBvc2l0aW9uRGF0YUNvY29hLm1tIGluIFNvdXJjZXMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODM3OTY0Q0UxRjhEQjY5QTAwMjE4RUEw
IC8qIEdlb2xvY2F0aW9uUG9zaXRpb25EYXRhQ29jb2EubW0gKi87IH07CiAJCTgzN0E4MDEzMUUx
RTEyNzMwMDAyNkI5RiAvKiBMb2NhbGl6YWJsZS5zdHJpbmdzZGljdCBpbiBSZXNvdXJjZXMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODM3QTgwMTExRTFFMTI3MzAwMDI2QjlG
IC8qIExvY2FsaXphYmxlLnN0cmluZ3NkaWN0ICovOyB9OwogCQk4MzdDMEI3NjI0REIzODUwMDA1
RDU5NTkgLyogRHluYW1pY3NDb21wcmVzc29yT3B0aW9ucy5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODM3QzBCNzMyNERCMzg0MjAwNUQ1OTU5IC8qIER5
bmFtaWNzQ29tcHJlc3Nvck9wdGlvbnMuaCAqLzsgfTsKIAkJODM3RkIzNDUxRjlFQTA2RDAwRDBG
QzMxIC8qIEV4dGVuZGFibGVNZXNzYWdlRXZlbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDgzN0ZCMzQwMUY5RUEwNjYwMEQwRkMzMSAvKiBFeHRlbmRh
YmxlTWVzc2FnZUV2ZW50LmggKi87IH07CkBAIC05MjczLDYgKzkyNzYsOCBAQAogCQk0NjgzREYz
QzI3NjdERjI2MDA3RDAwQzggLyogU2hhZG93UmVhbG1HbG9iYWxTY29wZS5pZGwgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gU2hh
ZG93UmVhbG1HbG9iYWxTY29wZS5pZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQ2
ODNERjNEMjc2N0RGOTgwMDdEMDBDOCAvKiBKU1NoYWRvd1JlYWxtR2xvYmFsU2NvcGVCYXNlLmNw
cCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTU2hhZG93UmVhbG1HbG9i
YWxTY29wZUJhc2UuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0NjgzREYzRTI3
NjdERjk4MDA3RDAwQzggLyogSlNTaGFkb3dSZWFsbUdsb2JhbFNjb3BlQmFzZS5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKU1NoYWRvd1JlYWxtR2xvYmFsU2NvcGVCYXNlLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTQ2ODhFOTdEMjdCNkI0NDMwMDU2N0NEMiAv
KiBDb3JlTG9jYXRpb25HZW9sb2NhdGlvblByb3ZpZGVyLm1tICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRo
ID0gQ29yZUxvY2F0aW9uR2VvbG9jYXRpb25Qcm92aWRlci5tbTsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKKwkJNDY4OEU5N0YyN0I2QjQ0NDAwNTY3Q0QyIC8qIENvcmVMb2NhdGlvbkdlb2xv
Y2F0aW9uUHJvdmlkZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQ29yZUxvY2F0aW9uR2VvbG9jYXRpb25Q
cm92aWRlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0Njg4RUUzQTI2REQyNjBD
MDAyQUY1QzQgLyogQ3Jvc3NPcmlnaW5Nb2RlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IENyb3NzT3JpZ2lu
TW9kZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0NjhCOEJERTI1Q0M4NDkzMDBG
Njc4MjIgLyogSlNCYXNlQXVkaW9Db250ZXh0Q3VzdG9tLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9
IEpTQmFzZUF1ZGlvQ29udGV4dEN1c3RvbS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCTQ2OTQzREM3Mjc2M0Y4MEUwMDRCNjEwRSAvKiBTaGFyZWRXb3JrZXJPYmplY3RJZGVudGlm
aWVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNoYXJlZFdvcmtlck9iamVjdElkZW50aWZpZXIuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTkzODcsOCArOTM5Miw4IEBACiAJCTQ5NEJENzk0
MEY1NUM4RUUwMDc0NzgyOCAvKiBXZWJLaXRQb2ludC5pZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRo
ID0gV2ViS2l0UG9pbnQuaWRsOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0OTRCRDc5
QjBGNTVDOTRDMDA3NDc4MjggLyogSlNXZWJLaXRQb2ludC5jcHAgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5jcHA7IHBhdGggPSBKU1dlYktpdFBvaW50LmNwcDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJNDk0QkQ3OUMwRjU1Qzk0QzAwNzQ3ODI4IC8qIEpTV2ViS2l0UG9pbnQuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNXZWJLaXRQb2ludC5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwotCQk0OTRFQkQwNjI3QUE5QzUzMDBGNDg0NEYgLyogUERGRG9j
dW1lbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gUERGRG9jdW1lbnQuaDsgcGF0aCA9IFBERkRvY3VtZW50
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTQ5NEVCRDA4MjdBQTlDNTMwMEY0ODQ0
RiAvKiBQREZEb2N1bWVudC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBQREZEb2N1bWVudC5jcHA7
IHBhdGggPSBQREZEb2N1bWVudC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTQ5
NEVCRDA2MjdBQTlDNTMwMEY0ODQ0RiAvKiBQREZEb2N1bWVudC5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBQ
REZEb2N1bWVudC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk0OTRFQkQwODI3QUE5
QzUzMDBGNDg0NEYgLyogUERGRG9jdW1lbnQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUERGRG9j
dW1lbnQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0OTU4NzgxRjEyQTU3RERG
MDA3MjM4QUMgLyogUGxhdGZvcm1DQUFuaW1hdGlvbkNvY29hLm1tICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAub2JqY3BwOyBwYXRoID0gUGxhdGZvcm1DQUFuaW1hdGlvbkNvY29hLm1tOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0OTU4NzgyMDEyQTU3RERGMDA3MjM4QUMgLyogUGxh
dGZvcm1DQUxheWVyQ29jb2EubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBh
dGggPSBQbGF0Zm9ybUNBTGF5ZXJDb2NvYS5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJNDk2OUIwRjAxM0QwQjMzRjAwREYzNTIxIC8qIEhpdFRlc3RpbmdUcmFuc2Zvcm1TdGF0ZS5j
cHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBIaXRUZXN0aW5nVHJhbnNm
b3JtU3RhdGUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMTIxOTAsNyArMTIx
OTUsNyBAQAogCQk4Mzc4ODc4MTI0RDhBNUZDMDAwRDRBNUIgLyogQXVkaW9CdWZmZXJTb3VyY2VP
cHRpb25zLmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlw
ZSA9IHRleHQ7IHBhdGggPSBBdWRpb0J1ZmZlclNvdXJjZU9wdGlvbnMuaWRsOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQk4Mzc5MzYzQzFGQkJCMEE0MDBDODAyM0MgLyogU2VydmljZVdv
cmtlckNsaWVudERhdGEuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0g
U2VydmljZVdvcmtlckNsaWVudERhdGEuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQk4Mzc5MzYzRTFGQkJCMEE1MDBDODAyM0MgLyogU2VydmljZVdvcmtlckNsaWVudERhdGEuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU2VydmljZVdvcmtlckNsaWVudERhdGEu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJODM3OTY0Q0UxRjhEQjY5QTAwMjE4RUEw
IC8qIEdlb2xvY2F0aW9uUG9zaXRpb25EYXRhSU9TLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAub2JqY3BwOyBuYW1lID0gR2VvbG9jYXRpb25Qb3NpdGlvbkRhdGFJT1MubW07IHBhdGggPSBN
b2R1bGVzL2dlb2xvY2F0aW9uL2lvcy9HZW9sb2NhdGlvblBvc2l0aW9uRGF0YUlPUy5tbTsgc291
cmNlVHJlZSA9IFNPVVJDRV9ST09UOyB9OworCQk4Mzc5NjRDRTFGOERCNjlBMDAyMThFQTAgLyog
R2VvbG9jYXRpb25Qb3NpdGlvbkRhdGFDb2NvYS5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
Lm9iamNwcDsgbmFtZSA9IEdlb2xvY2F0aW9uUG9zaXRpb25EYXRhQ29jb2EubW07IHBhdGggPSBN
b2R1bGVzL2dlb2xvY2F0aW9uL2NvY29hL0dlb2xvY2F0aW9uUG9zaXRpb25EYXRhQ29jb2EubW07
IHNvdXJjZVRyZWUgPSBTT1VSQ0VfUk9PVDsgfTsKIAkJODM3QTgwMTIxRTFFMTI3MzAwMDI2QjlG
IC8qIGVuICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0g
dGV4dC5wbGlzdC5zdHJpbmdzZGljdDsgbmFtZSA9IGVuOyBwYXRoID0gZW4ubHByb2ovTG9jYWxp
emFibGUuc3RyaW5nc2RpY3Q7IHNvdXJjZVRyZWUgPSBTT1VSQ0VfUk9PVDsgfTsKIAkJODM3QjdE
MUYxREMzRjU0QzAwRDA1MUZDIC8qIFZhbGlkYXRpb25CdWJibGVJT1MubW0gKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBWYWxpZGF0aW9uQnViYmxlSU9TLm1tOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk4MzdDMEI3MzI0REIzODQyMDA1RDU5NTkgLyogRHlu
YW1pY3NDb21wcmVzc29yT3B0aW9ucy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBEeW5hbWljc0NvbXByZXNz
b3JPcHRpb25zLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0xOTE1Niw5ICsxOTE2
MSw5IEBACiAJCTA4OUMxNjY1RkU4NDExNThDMDJBQUMwNyAvKiBSZXNvdXJjZXMgKi8gPSB7CiAJ
CQlpc2EgPSBQQlhHcm91cDsKIAkJCWNoaWxkcmVuID0gKAotCQkJCTQ5RUNGNzJEMjdCQUU4NTQw
MDg4MDk5MSAvKiBwZGZqcyAqLywKIAkJCQlDRDBEQkIzRTE0MjI3NEU2MDAyODAyNjMgLyogYXVk
aW8gKi8sCiAJCQkJNjU5OThBNjUwRTVGNUZEMzAwNEUwOTdBIC8qIGltYWdlcyAqLywKKwkJCQk0
OUVDRjcyRDI3QkFFODU0MDA4ODA5OTEgLyogcGRmanMgKi8sCiAJCQkJQTFBQTlBQjgxRDIzOTEx
NTAwRkVBREIzIC8qIENvbnRlbnRGaWx0ZXJCbG9ja2VkUGFnZS5odG1sICovLAogCQkJCUExMUU4
QzAwMUIxRTI4QkUwMDAzQTdDNyAvKiBjb3B5Q3Vyc29yLnBuZyAqLywKIAkJCQkyRDlGMEUxMjE0
RkYxQ0JGMDBCQTBGRjcgLyogbGluZWFyU1JHQi5pY2MgKi8sCkBAIC0yMTYxNCw2ICsyMTYxOSwx
NCBAQAogCQkJcGF0aCA9IGNvbnRleHQ7CiAJCQlzb3VyY2VUcmVlID0gIjxncm91cD4iOwogCQl9
OworCQk0NjVDM0QxOTI3Qjk5MUM4MDAyMTMwMkYgLyogY29jb2EgKi8gPSB7CisJCQlpc2EgPSBQ
QlhHcm91cDsKKwkJCWNoaWxkcmVuID0gKAorCQkJCTgzNzk2NENFMUY4REI2OUEwMDIxOEVBMCAv
KiBHZW9sb2NhdGlvblBvc2l0aW9uRGF0YUNvY29hLm1tICovLAorCQkJKTsKKwkJCXBhdGggPSBj
b2NvYTsKKwkJCXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7CisJCX07CiAJCTQ2Njk0Q0RFMjc1OTQ0
NkQwMEUzMTUwRSAvKiBzaGFyZWQgKi8gPSB7CiAJCQlpc2EgPSBQQlhHcm91cDsKIAkJCWNoaWxk
cmVuID0gKApAQCAtMjUxMTAsMTQgKzI1MTIzLDYgQEAKIAkJCXBhdGggPSBiZWFjb247CiAJCQlz
b3VyY2VUcmVlID0gIjxncm91cD4iOwogCQl9OwotCQk4Mzc5NjRDQzFGOERCNjdEMDAyMThFQTAg
LyogaW9zICovID0gewotCQkJaXNhID0gUEJYR3JvdXA7Ci0JCQljaGlsZHJlbiA9ICgKLQkJCQk4
Mzc5NjRDRTFGOERCNjlBMDAyMThFQTAgLyogR2VvbG9jYXRpb25Qb3NpdGlvbkRhdGFJT1MubW0g
Ki8sCi0JCQkpOwotCQkJbmFtZSA9IGlvczsKLQkJCXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7Ci0J
CX07CiAJCTgzRkIzMzY1MUY1MDhBMTcwMDk4NkU1NCAvKiBlbnRyaWVzYXBpICovID0gewogCQkJ
aXNhID0gUEJYR3JvdXA7CiAJCQljaGlsZHJlbiA9ICgKQEAgLTI2MTMwLDcgKzI2MTM1LDcgQEAK
IAkJOTcxMTQ1RkYxNEVGMDA3OTAwNjc0RkQ5IC8qIGdlb2xvY2F0aW9uICovID0gewogCQkJaXNh
ID0gUEJYR3JvdXA7CiAJCQljaGlsZHJlbiA9ICgKLQkJCQk4Mzc5NjRDQzFGOERCNjdEMDAyMThF
QTAgLyogaW9zICovLAorCQkJCTQ2NUMzRDE5MjdCOTkxQzgwMDIxMzAyRiAvKiBjb2NvYSAqLywK
IAkJCQk5NzQ2QUYxMzE0RjREREU2MDAzRTdBNzAgLyogR2VvbG9jYXRpb24uY3BwICovLAogCQkJ
CTk3NDZBRjE0MTRGNERERTYwMDNFN0E3MCAvKiBHZW9sb2NhdGlvbi5oICovLAogCQkJCTk3NDZB
RjE1MTRGNERERTYwMDNFN0E3MCAvKiBHZW9sb2NhdGlvbi5pZGwgKi8sCkBAIC0yNjg0Miw2ICsy
Njg0Nyw4IEBACiAJCQkJQzFGN0I3MkYyNDQ4RjJBQzAwMTI0NTU3IC8qIEFHWENvbXBpbGVyU2Vy
dmljZS5jcHAgKi8sCiAJCQkJQzFGN0I3MzAyNDQ4RjJBQzAwMTI0NTU3IC8qIEFHWENvbXBpbGVy
U2VydmljZS5oICovLAogCQkJCUExNDA5MEZBMUFBNTFFMUQwMDkxMTkxQSAvKiBDb250ZW50Rmls
dGVyVW5ibG9ja0hhbmRsZXJDb2NvYS5tbSAqLywKKwkJCQk0Njg4RTk3RjI3QjZCNDQ0MDA1NjdD
RDIgLyogQ29yZUxvY2F0aW9uR2VvbG9jYXRpb25Qcm92aWRlci5oICovLAorCQkJCTQ2ODhFOTdE
MjdCNkI0NDMwMDU2N0NEMiAvKiBDb3JlTG9jYXRpb25HZW9sb2NhdGlvblByb3ZpZGVyLm1tICov
LAogCQkJCUNEN0QzMzQ1MUM3QTE2QkYwMDA0MTI5MyAvKiBDb3JlVmlkZW9Tb2Z0TGluay5jcHAg
Ki8sCiAJCQkJQ0Q3RDMzNDYxQzdBMTZCRjAwMDQxMjkzIC8qIENvcmVWaWRlb1NvZnRMaW5rLmgg
Ki8sCiAJCQkJRjQ2MkU3OUYyNDJBREEzQzAwMjA0REREIC8qIERyYWdEYXRhQ29jb2EubW0gKi8s
CkBAIC0zMzkzNCw2ICszMzk0MSw3IEBACiAJCQkJM0Y4MDIwMzcxRTlFNDdDNTAwREVDNjFEIC8q
IENvcmVBdWRpb0NhcHR1cmVEZXZpY2VNYW5hZ2VyLmggaW4gSGVhZGVycyAqLywKIAkJCQk0MUZD
Q0MzQjI3NDY2NzU2MDA4OTJBRDYgLyogQ29yZUF1ZGlvQ2FwdHVyZVNvdXJjZS5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJMDdBRkY0MjIxRUZCMTQ0OTAwQjU0NUIzIC8qIENvcmVBdWRpb0NhcHR1cmVT
b3VyY2VJT1MuaCBpbiBIZWFkZXJzICovLAorCQkJCTQ2ODhFOTgwMjdCNkI0NTAwMDU2N0NEMiAv
KiBDb3JlTG9jYXRpb25HZW9sb2NhdGlvblByb3ZpZGVyLmggaW4gSGVhZGVycyAqLywKIAkJCQlD
RDdEMzM0ODFDN0ExNkJGMDAwNDEyOTMgLyogQ29yZVZpZGVvU29mdExpbmsuaCBpbiBIZWFkZXJz
ICovLAogCQkJCTg2MkYxMjlFMThDMTU3NkYwMDVDNTRBRiAvKiBDb3VudGVkVXNlckFjdGl2aXR5
LmggaW4gSGVhZGVycyAqLywKIAkJCQlBODBFNkQwNDBBMTk4OUNBMDA3RkI4QzUgLyogQ291bnRl
ci5oIGluIEhlYWRlcnMgKi8sCkBAIC0zODM3Myw5ICszODM4MSw5IEBACiAJCQkJQTExRThDMDcx
QjFFMjhGRTAwMDNBN0M3IC8qIG5vcnRoRWFzdFNvdXRoV2VzdFJlc2l6ZUN1cnNvci5wbmcgaW4g
UmVzb3VyY2VzICovLAogCQkJCUExMUU4QzA4MUIxRTI5MDIwMDAzQTdDNyAvKiBub3J0aFNvdXRo
UmVzaXplQ3Vyc29yLnBuZyBpbiBSZXNvdXJjZXMgKi8sCiAJCQkJQTExRThDMDkxQjFFMjkwNzAw
MDNBN0M3IC8qIG5vcnRoV2VzdFNvdXRoRWFzdFJlc2l6ZUN1cnNvci5wbmcgaW4gUmVzb3VyY2Vz
ICovLAorCQkJCTQ5RUNGNzJGMjdCQUU4NTQwMDg4MDk5MSAvKiBwZGZqcyBpbiBSZXNvdXJjZXMg
Ki8sCiAJCQkJOTMxNTNCREMxNDE5NTlCQzAwRkNGNUJFIC8qIHRleHRBcmVhUmVzaXplQ29ybmVy
LnBuZyBpbiBSZXNvdXJjZXMgKi8sCiAJCQkJOTM3MDkxOEQxNDE2RDg2QjAwNDc3MzMzIC8qIHRl
eHRBcmVhUmVzaXplQ29ybmVyQDJ4LnBuZyBpbiBSZXNvdXJjZXMgKi8sCi0JCQkJNDlFQ0Y3MkYy
N0JBRTg1NDAwODgwOTkxIC8qIHBkZmpzIGluIFJlc291cmNlcyAqLywKIAkJCSk7CiAJCQlydW5P
bmx5Rm9yRGVwbG95bWVudFBvc3Rwcm9jZXNzaW5nID0gMDsKIAkJfTsKQEAgLTM4Njg4LDYgKzM4
Njk2LDcgQEAKIAkJCQlDRDBFRUUwRTE0NzQzRjM5MDAzRUFGQTIgLyogQXVkaW9PdXRwdXRVbml0
QWRhcHRvcklPUy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlDREE3OTgyNzE3MEEyNzkxMDBENDVD
NTUgLyogQXVkaW9TZXNzaW9uSU9TLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJQ0Q4QTdCQkIxOTc3
MzVGRTAwQ0JENjQzIC8qIEF1ZGlvU291cmNlUHJvdmlkZXJBVkZPYmpDLm1tIGluIFNvdXJjZXMg
Ki8sCisJCQkJNDZCQTQ5QjgyN0JCNDQzMzAwNzdGNjNGIC8qIEFWQXNzZXRUcmFja1V0aWxpdGll
cy5tbSBpbiBTb3VyY2VzICovLAogCQkJCTBGQ0EyOTM1MjZGQzM5MTcwMDZCNEFFQiAvKiBBVkF1
ZGlvU2Vzc2lvbkNhcHR1cmVEZXZpY2VNYW5hZ2VyLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJMDcz
OEU1RUMyNDk5ODM5MDAwREExMDFDIC8qIEFWT3V0cHV0RGV2aWNlTWVudUNvbnRyb2xsZXJUYXJn
ZXRQaWNrZXIubW0gaW4gU291cmNlcyAqLywKIAkJCQlDRDMzNkY2MTE3RjlGNjQ3MDBERERDRDAg
LyogQVZUcmFja1ByaXZhdGVBVkZPYmpDSW1wbC5tbSBpbiBTb3VyY2VzICovLApAQCAtMzg3MDYs
MTMgKzM4NzE1LDE0IEBACiAJCQkJNTE4RjRGRjYxOTRDQTRFNjAwODFCQUFFIC8qIEdhbWVwYWRC
dXR0b24uY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNTE2QzYyMjAxOTUwRDQ4NzAwMzM3RTc1IC8q
IEdhbWVwYWRFdmVudC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk1MUE5RDlFOTE5NUI5MzFGMDAx
QjJCNUMgLyogR2FtZXBhZE1hbmFnZXIuY3BwIGluIFNvdXJjZXMgKi8sCi0JCQkJODM3OTY0Q0Yx
RjhEQjY5RDAwMjE4RUEwIC8qIEdlb2xvY2F0aW9uUG9zaXRpb25EYXRhSU9TLm1tIGluIFNvdXJj
ZXMgKi8sCisJCQkJODM3OTY0Q0YxRjhEQjY5RDAwMjE4RUEwIC8qIEdlb2xvY2F0aW9uUG9zaXRp
b25EYXRhQ29jb2EubW0gaW4gU291cmNlcyAqLywKIAkJCQk2RTcyRjU0RTIyOURDRDEwMDBCM0Ux
NTEgLyogR3JhcGhpY3NDb250ZXh0R0xBTkdMRS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk3QzNF
NTEwQjE4REY4RjM1MDBDMTEyRjcgLyogSFRNTENvbnZlcnRlci5tbSBpbiBTb3VyY2VzICovLAog
CQkJCUE4RDA2QjNBMEEyNjVEQ0QwMDVFNzIwMyAvKiBIVE1MTmFtZXMuY3BwIGluIFNvdXJjZXMg
Ki8sCiAJCQkJMUFDOTAwQzMxOTQzQzBGQzAwODYyNUI1IC8qIEhUVFBIZWFkZXJOYW1lcy5jcHAg
aW4gU291cmNlcyAqLywKIAkJCQlDRDI3QUU1MTIyQTk4Njg3MDA5NDdGRjkgLyogSW1hZ2VSb3Rh
dGlvblNlc3Npb25WVC5tbSBpbiBTb3VyY2VzICovLAogCQkJCTA3MEUyRDBGMjZGMjUwODkwMDE0
QUFDMyAvKiBJbmJhbmRDaGFwdGVyVHJhY2tQcml2YXRlQVZGT2JqQy5tbSBpbiBTb3VyY2VzICov
LAorCQkJCTQ2Q0E5NDMxMjdCODY5NTgwMEY0RjVGRiAvKiBJbmJhbmRUZXh0VHJhY2tQcml2YXRl
QVZGT2JqQy5tbSBpbiBTb3VyY2VzICovLAogCQkJCUNEMDYzRjgyMUUyM0ZBODkwMDgxMkJFMyAv
KiBJbml0RGF0YVJlZ2lzdHJ5LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTkzNUM0NzcwMDlBQzRE
NzMwMEE2QUFCNCAvKiBLZXlFdmVudE1hYy5tbSBpbiBTb3VyY2VzICovLAogCQkJCUNEQTk4RTBC
MTYwM0NENjAwMEZFQTNCMSAvKiBMZWdhY3lDRE0uY3BwIGluIFNvdXJjZXMgKi8sCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9Q
YWdlLmNwcAppbmRleCAyMGRmODExNWU4ZmQ5NTIwM2E1NTEyZDJmODhmMDRmZWY5MTY3ZmQ1Li5m
YjU2YWUxOTFhNjIyN2RkNmVhNDRlODY3ZDM0NjI1OTQwZTEwYjUzIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL1BhZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5j
cHAKQEAgLTY5LDYgKzY5LDcgQEAKICNpbmNsdWRlICJGcmFtZVRyZWUuaCIKICNpbmNsdWRlICJG
cmFtZVZpZXcuaCIKICNpbmNsdWRlICJGdWxsc2NyZWVuTWFuYWdlci5oIgorI2luY2x1ZGUgIkdl
b2xvY2F0aW9uQ29udHJvbGxlci5oIgogI2luY2x1ZGUgIkhUTUxFbGVtZW50LmgiCiAjaW5jbHVk
ZSAiSFRNTEltYWdlRWxlbWVudC5oIgogI2luY2x1ZGUgIkhUTUxNZWRpYUVsZW1lbnQuaCIKQEAg
LTEzMzIsNiArMTMzMywxMSBAQCB2b2lkIFBhZ2U6OmRpZENvbW1pdExvYWQoKQogICAgIHJlc2V0
VGV4dFJlY29nbml0aW9uUmVzdWx0cygpOwogICAgIHJlc2V0SW1hZ2VBbmFseXNpc1F1ZXVlKCk7
CiAjZW5kaWYKKworI2lmIEVOQUJMRShHRU9MT0NBVElPTikKKyAgICBpZiAoYXV0byogZ2VvbG9j
YXRpb25Db250cm9sbGVyID0gR2VvbG9jYXRpb25Db250cm9sbGVyOjpmcm9tKHRoaXMpKQorICAg
ICAgICBnZW9sb2NhdGlvbkNvbnRyb2xsZXItPmRpZE5hdmlnYXRlUGFnZSgpOworI2VuZGlmCiB9
CiAKIHZvaWQgUGFnZTo6ZGlkRmluaXNoTG9hZCgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9jb2NvYS9Db3JlTG9jYXRpb25HZW9sb2NhdGlvblByb3ZpZGVyLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9Db3JlTG9jYXRpb25HZW9sb2NhdGlvblByb3ZpZGVy
LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uM2M1NzBkNjRjYjc0MTgyMjc1NDNkOWJiNzE1NjhkZGM0ZDE0MTM5NAot
LS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL0NvcmVMb2Nh
dGlvbkdlb2xvY2F0aW9uUHJvdmlkZXIuaApAQCAtMCwwICsxLDcwIEBACisvKgorICogQ29weXJp
Z2h0IChDKSAyMDIyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
CisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAq
CisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05U
UklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAq
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1Ig
SVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRT
OyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5Z
IFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKwor
I3ByYWdtYSBvbmNlCisKKyNpZiBIQVZFKENPUkVfTE9DQVRJT04pCisjaW5jbHVkZSA8d3RmL0Nv
bXBsZXRpb25IYW5kbGVyLmg+CisjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KKyNpbmNsdWRlIDx3
dGYvUmV0YWluUHRyLmg+CisKK09CSkNfQ0xBU1MgV2ViQ0xMb2NhdGlvbk1hbmFnZXI7CisKK25h
bWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgR2VvbG9jYXRpb25Qb3NpdGlvbkRhdGE7CitjbGFz
cyBSZWdpc3RyYWJsZURvbWFpbjsKKworY2xhc3MgV0VCQ09SRV9FWFBPUlQgQ29yZUxvY2F0aW9u
R2VvbG9jYXRpb25Qcm92aWRlciB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CitwdWJs
aWM6CisgICAgY2xhc3MgQ2xpZW50IHsKKyAgICBwdWJsaWM6CisgICAgICAgIHZpcnR1YWwgfkNs
aWVudCgpIHsgfQorCisgICAgICAgIHZpcnR1YWwgdm9pZCBnZW9sb2NhdGlvbkF1dGhvcml6YXRp
b25HcmFudGVkKGNvbnN0IFN0cmluZyYgLyp3ZWJzaXRlSWRlbnRpZmllciovKSB7IH0KKyAgICAg
ICAgdmlydHVhbCB2b2lkIGdlb2xvY2F0aW9uQXV0aG9yaXphdGlvbkRlbmllZChjb25zdCBTdHJp
bmcmIC8qd2Vic2l0ZUlkZW50aWZpZXIqLykgeyB9CisgICAgICAgIHZpcnR1YWwgdm9pZCBwb3Np
dGlvbkNoYW5nZWQoY29uc3QgU3RyaW5nJiB3ZWJzaXRlSWRlbnRpZmllciwgR2VvbG9jYXRpb25Q
b3NpdGlvbkRhdGEmJikgPSAwOworICAgICAgICB2aXJ0dWFsIHZvaWQgZXJyb3JPY2N1cnJlZChj
b25zdCBTdHJpbmcmIHdlYnNpdGVJZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIGVycm9yTWVzc2Fn
ZSkgPSAwOworICAgICAgICB2aXJ0dWFsIHZvaWQgcmVzZXRHZW9sb2NhdGlvbihjb25zdCBTdHJp
bmcmIHdlYnNpdGVJZGVudGlmaWVyKSA9IDA7CisgICAgfTsKKworICAgIENvcmVMb2NhdGlvbkdl
b2xvY2F0aW9uUHJvdmlkZXIoY29uc3QgUmVnaXN0cmFibGVEb21haW4mLCBDbGllbnQmKTsKKyAg
ICB+Q29yZUxvY2F0aW9uR2VvbG9jYXRpb25Qcm92aWRlcigpOworCisgICAgdm9pZCBzdGFydCgp
OworICAgIHZvaWQgc3RvcCgpOworCisgICAgdm9pZCBzZXRFbmFibGVIaWdoQWNjdXJhY3koYm9v
bCk7CisKKyAgICBzdGF0aWMgdm9pZCByZXF1ZXN0QXV0aG9yaXphdGlvbihjb25zdCBSZWdpc3Ry
YWJsZURvbWFpbiYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYpOworCitwcml2YXRl
OgorICAgIFJldGFpblB0cjxXZWJDTExvY2F0aW9uTWFuYWdlcj4gbV9sb2NhdGlvbk1hbmFnZXI7
Cit9OworCisjZW5kaWYgLy8gSEFWRShDT1JFX0xPQ0FUSU9OKQorCit9IC8vIG5hbWVzcGFjZSBX
ZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9Db3JlTG9j
YXRpb25HZW9sb2NhdGlvblByb3ZpZGVyLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29j
b2EvQ29yZUxvY2F0aW9uR2VvbG9jYXRpb25Qcm92aWRlci5tbQpuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5hZTZmM2Mx
ZGIyM2Q0MjJkMWMxZDJlMzgxNzQ1NGNiZDY0NjkzZTgxCi0tLSAvZGV2L251bGwKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvQ29yZUxvY2F0aW9uR2VvbG9jYXRpb25Qcm92aWRl
ci5tbQpAQCAtMCwwICsxLDI3MiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMiBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
KyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwor
ICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAq
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
IEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbXBvcnQgImNvbmZpZy5oIgor
CisjaWYgSEFWRShDT1JFX0xPQ0FUSU9OKQorI2ltcG9ydCAiQ29yZUxvY2F0aW9uR2VvbG9jYXRp
b25Qcm92aWRlci5oIgorCisjaW1wb3J0ICJHZW9sb2NhdGlvblBvc2l0aW9uRGF0YS5oIgorI2lt
cG9ydCAiUmVnaXN0cmFibGVEb21haW4uaCIKKyNpbXBvcnQgPENvcmVMb2NhdGlvbi9DTExvY2F0
aW9uTWFuYWdlckRlbGVnYXRlLmg+CisjaW1wb3J0IDxDb3JlTG9jYXRpb24vQ29yZUxvY2F0aW9u
Lmg+CisjaW1wb3J0IDx3dGYvU29mdExpbmtpbmcuaD4KKworI2lmIFVTRShBUFBMRV9JTlRFUk5B
TF9TREspCisjaW1wb3J0IDxDb3JlTG9jYXRpb24vQ0xMb2NhdGlvbk1hbmFnZXJfUHJpdmF0ZS5o
PgorI2VuZGlmCisKK1NPRlRfTElOS19GUkFNRVdPUksoQ29yZUxvY2F0aW9uKQorCitTT0ZUX0xJ
TktfQ0xBU1MoQ29yZUxvY2F0aW9uLCBDTExvY2F0aW9uTWFuYWdlcikKK1NPRlRfTElOS19DTEFT
UyhDb3JlTG9jYXRpb24sIENMTG9jYXRpb24pCisKK1NPRlRfTElOS19DT05TVEFOVChDb3JlTG9j
YXRpb24sIGtDTExvY2F0aW9uQWNjdXJhY3lCZXN0LCBkb3VibGUpCitTT0ZUX0xJTktfQ09OU1RB
TlQoQ29yZUxvY2F0aW9uLCBrQ0xMb2NhdGlvbkFjY3VyYWN5SHVuZHJlZE1ldGVycywgZG91Ymxl
KQorCisjZGVmaW5lIGtDTExvY2F0aW9uQWNjdXJhY3lCZXN0IGdldGtDTExvY2F0aW9uQWNjdXJh
Y3lCZXN0KCkKKyNkZWZpbmUga0NMTG9jYXRpb25BY2N1cmFjeUh1bmRyZWRNZXRlcnMgZ2V0a0NM
TG9jYXRpb25BY2N1cmFjeUh1bmRyZWRNZXRlcnMoKQorCitzdGF0aWMgYm9vbCBpc0F1dGhvcml6
YXRpb25HcmFudGVkKENMQXV0aG9yaXphdGlvblN0YXR1cyBzdGF0dXMpCit7CisgICAgcmV0dXJu
IHN0YXR1cyA9PSBrQ0xBdXRob3JpemF0aW9uU3RhdHVzQXV0aG9yaXplZEFsd2F5cworI2lmIEhB
VkUoQ09SRV9MT0NBVElPTl9BVVRIT1JJWkVEX1dIRU5fSU5fVVNFKQorICAgICAgICB8fCBzdGF0
dXMgPT0ga0NMQXV0aG9yaXphdGlvblN0YXR1c0F1dGhvcml6ZWRXaGVuSW5Vc2UKKyNlbmRpZgor
ICAgICAgICA7Cit9CisKK0BpbnRlcmZhY2UgV2ViQ0xMb2NhdGlvbk1hbmFnZXIgOiBOU09iamVj
dDxDTExvY2F0aW9uTWFuYWdlckRlbGVnYXRlPgorQGVuZAorCitAaW1wbGVtZW50YXRpb24gV2Vi
Q0xMb2NhdGlvbk1hbmFnZXIgeworICAgIFJldGFpblB0cjxDTExvY2F0aW9uTWFuYWdlcj4gX2xv
Y2F0aW9uTWFuYWdlcjsKKyAgICBXZWJDb3JlOjpDb3JlTG9jYXRpb25HZW9sb2NhdGlvblByb3Zp
ZGVyOjpDbGllbnQqIF9jbGllbnQ7CisgICAgU3RyaW5nIF93ZWJzaXRlSWRlbnRpZmllcjsKKyAg
ICBCT09MIF9pc1dhaXRpbmdGb3JBdXRob3JpemF0aW9uOworfQorCistIChpbnN0YW5jZXR5cGUp
aW5pdFdpdGhXZWJzaXRlSWRlbnRpZmllcjooY29uc3QgU3RyaW5nJil3ZWJzaXRlSWRlbnRpZmll
ciBjbGllbnQ6KFdlYkNvcmU6OkNvcmVMb2NhdGlvbkdlb2xvY2F0aW9uUHJvdmlkZXI6OkNsaWVu
dCYpY2xpZW50Cit7CisgICAgc2VsZiA9IFtzdXBlciBpbml0XTsKKyAgICBpZiAoIXNlbGYpCisg
ICAgICAgIHJldHVybiBuaWw7CisKKyAgICAvLyBGSVhNRTogQ2FsbCBpbml0V2l0aFdlYnNpdGVJ
ZGVudGlmaWVyIGFuZCBwYXNzIHRoZSB3ZWJzaXRlSWRlbnRpZmllciB3aGVuIEhBVkUoQ09SRV9M
T0NBVElPTl9XRUJTSVRFX0lERU5USUZJRVJTKSBhbmQgIXdlYnNpdGVJZGVudGlmaWVyLmlzRW1w
dHkoKSBvbmNlIDxyZGFyOi8vODg4MzQzMDE+IGlzIGZpeGVkLgorICAgIFVOVVNFRF9QQVJBTSh3
ZWJzaXRlSWRlbnRpZmllcik7CisgICAgX2xvY2F0aW9uTWFuYWdlciA9IGFkb3B0TlMoW2FsbG9j
Q0xMb2NhdGlvbk1hbmFnZXJJbnN0YW5jZSgpIGluaXRdKTsKKyAgICBfY2xpZW50ID0gJmNsaWVu
dDsKKyAgICBfd2Vic2l0ZUlkZW50aWZpZXIgPSB3ZWJzaXRlSWRlbnRpZmllcjsKKyAgICBbX2xv
Y2F0aW9uTWFuYWdlciBzZXREZWxlZ2F0ZTpzZWxmXTsKKyAgICByZXR1cm4gc2VsZjsKK30KKwor
LSAodm9pZClkZWFsbG9jCit7CisgICAgW19sb2NhdGlvbk1hbmFnZXIgc2V0RGVsZWdhdGU6bmls
XTsKKyAgICBbc3VwZXIgZGVhbGxvY107Cit9CisKKy0gKHZvaWQpc3RhcnQKK3sKKyAgICBpZiAo
IVtnZXRDTExvY2F0aW9uTWFuYWdlckNsYXNzKCkgbG9jYXRpb25TZXJ2aWNlc0VuYWJsZWRdIHx8
ICFpc0F1dGhvcml6YXRpb25HcmFudGVkKFtfbG9jYXRpb25NYW5hZ2VyIGF1dGhvcml6YXRpb25T
dGF0dXNdKSkgeworICAgICAgICBbX2xvY2F0aW9uTWFuYWdlciBzdG9wVXBkYXRpbmdMb2NhdGlv
bl07CisgICAgICAgIF9jbGllbnQtPnJlc2V0R2VvbG9jYXRpb24oX3dlYnNpdGVJZGVudGlmaWVy
KTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIFtfbG9jYXRpb25NYW5hZ2VyIHN0YXJ0
VXBkYXRpbmdMb2NhdGlvbl07Cit9CisKKy0gKHZvaWQpc3RvcAoreworICAgIFtfbG9jYXRpb25N
YW5hZ2VyIHN0b3BVcGRhdGluZ0xvY2F0aW9uXTsKK30KKworLSAodm9pZClzZXRFbmFibGVIaWdo
QWNjdXJhY3k6KEJPT0wpaGlnaEFjY3VyYWN5RW5hYmxlZAoreworICAgIFtfbG9jYXRpb25NYW5h
Z2VyIHNldERlc2lyZWRBY2N1cmFjeTpoaWdoQWNjdXJhY3lFbmFibGVkID8ga0NMTG9jYXRpb25B
Y2N1cmFjeUJlc3QgOiBrQ0xMb2NhdGlvbkFjY3VyYWN5SHVuZHJlZE1ldGVyc107Cit9CisKKy0g
KHZvaWQpcmVxdWVzdEdlb2xvY2F0aW9uQXV0aG9yaXphdGlvbgoreworICAgIGlmICghW2dldENM
TG9jYXRpb25NYW5hZ2VyQ2xhc3MoKSBsb2NhdGlvblNlcnZpY2VzRW5hYmxlZF0pIHsKKyAgICAg
ICAgX2NsaWVudC0+Z2VvbG9jYXRpb25BdXRob3JpemF0aW9uRGVuaWVkKF93ZWJzaXRlSWRlbnRp
Zmllcik7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBzd2l0Y2ggKFtfbG9jYXRpb25N
YW5hZ2VyIGF1dGhvcml6YXRpb25TdGF0dXNdKSB7CisgICAgY2FzZSBrQ0xBdXRob3JpemF0aW9u
U3RhdHVzTm90RGV0ZXJtaW5lZDogeworICAgICAgICBpZiAoIV9pc1dhaXRpbmdGb3JBdXRob3Jp
emF0aW9uKSB7CisgICAgICAgICAgICBfaXNXYWl0aW5nRm9yQXV0aG9yaXphdGlvbiA9IFlFUzsK
KyAgICAgICAgICAgIFtfbG9jYXRpb25NYW5hZ2VyIHJlcXVlc3RXaGVuSW5Vc2VBdXRob3JpemF0
aW9uXTsKKyAgICAgICAgfQorICAgICAgICBicmVhazsKKyAgICB9CisgICAgY2FzZSBrQ0xBdXRo
b3JpemF0aW9uU3RhdHVzQXV0aG9yaXplZEFsd2F5czoKKyNpZiBIQVZFKENPUkVfTE9DQVRJT05f
QVVUSE9SSVpFRF9XSEVOX0lOX1VTRSkKKyAgICBjYXNlIGtDTEF1dGhvcml6YXRpb25TdGF0dXNB
dXRob3JpemVkV2hlbkluVXNlOgorI2VuZGlmCisgICAgICAgIF9jbGllbnQtPmdlb2xvY2F0aW9u
QXV0aG9yaXphdGlvbkdyYW50ZWQoX3dlYnNpdGVJZGVudGlmaWVyKTsKKyAgICAgICAgYnJlYWs7
CisgICAgY2FzZSBrQ0xBdXRob3JpemF0aW9uU3RhdHVzUmVzdHJpY3RlZDoKKyAgICBjYXNlIGtD
TEF1dGhvcml6YXRpb25TdGF0dXNEZW5pZWQ6CisgICAgICAgIF9jbGllbnQtPmdlb2xvY2F0aW9u
QXV0aG9yaXphdGlvbkRlbmllZChfd2Vic2l0ZUlkZW50aWZpZXIpOworICAgICAgICBicmVhazsK
KyAgICB9Cit9CisKKy0gKHZvaWQpbG9jYXRpb25NYW5hZ2VyRGlkQ2hhbmdlQXV0aG9yaXphdGlv
bjooQ0xMb2NhdGlvbk1hbmFnZXIgKiltYW5hZ2VyCit7CisgICAgYXV0byBzdGF0dXMgPSBbX2xv
Y2F0aW9uTWFuYWdlciBhdXRob3JpemF0aW9uU3RhdHVzXTsKKyAgICBpZiAoX2lzV2FpdGluZ0Zv
ckF1dGhvcml6YXRpb24pIHsKKyAgICAgICAgc3dpdGNoIChzdGF0dXMpIHsKKyAgICAgICAgY2Fz
ZSBrQ0xBdXRob3JpemF0aW9uU3RhdHVzTm90RGV0ZXJtaW5lZDoKKyAgICAgICAgICAgIC8vIFRo
aXMgY2FuIGhhcHBlbiBhZnRlciByZXN1bWUgaWYgdGhlIHVzZXIgaGFzIHN0aWxsIG5vdCBhbnN3
ZXJlZCB0aGUgZGlhbG9nLiBXZSBqdXN0IGhhdmUgdG8gd2FpdCBmb3IgdGhlIHBlcm1pc3Npb24u
CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBrQ0xBdXRob3JpemF0aW9uU3RhdHVz
RGVuaWVkOgorICAgICAgICBjYXNlIGtDTEF1dGhvcml6YXRpb25TdGF0dXNSZXN0cmljdGVkOgor
ICAgICAgICAgICAgX2lzV2FpdGluZ0ZvckF1dGhvcml6YXRpb24gPSBOTzsKKyAgICAgICAgICAg
IF9jbGllbnQtPmdlb2xvY2F0aW9uQXV0aG9yaXphdGlvbkRlbmllZChfd2Vic2l0ZUlkZW50aWZp
ZXIpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2Uga0NMQXV0aG9yaXphdGlvblN0
YXR1c0F1dGhvcml6ZWRBbHdheXM6CisjaWYgSEFWRShDT1JFX0xPQ0FUSU9OX0FVVEhPUklaRURf
V0hFTl9JTl9VU0UpCisgICAgICAgIGNhc2Uga0NMQXV0aG9yaXphdGlvblN0YXR1c0F1dGhvcml6
ZWRXaGVuSW5Vc2U6CisjZW5kaWYKKyAgICAgICAgICAgIF9pc1dhaXRpbmdGb3JBdXRob3JpemF0
aW9uID0gTk87CisgICAgICAgICAgICBfY2xpZW50LT5nZW9sb2NhdGlvbkF1dGhvcml6YXRpb25H
cmFudGVkKF93ZWJzaXRlSWRlbnRpZmllcik7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAg
fQorICAgIH0gZWxzZSB7CisgICAgICAgIGlmIChzdGF0dXMgPT0ga0NMQXV0aG9yaXphdGlvblN0
YXR1c0RlbmllZCB8fCBzdGF0dXMgPT0ga0NMQXV0aG9yaXphdGlvblN0YXR1c1Jlc3RyaWN0ZWQp
IHsKKyAgICAgICAgICAgIFtfbG9jYXRpb25NYW5hZ2VyIHN0b3BVcGRhdGluZ0xvY2F0aW9uXTsK
KyAgICAgICAgICAgIF9jbGllbnQtPnJlc2V0R2VvbG9jYXRpb24oX3dlYnNpdGVJZGVudGlmaWVy
KTsKKyAgICAgICAgfQorICAgIH0KK30KKworLSAodm9pZClsb2NhdGlvbk1hbmFnZXI6KENMTG9j
YXRpb25NYW5hZ2VyICopbWFuYWdlciBkaWRVcGRhdGVMb2NhdGlvbnM6KE5TQXJyYXkgKilsb2Nh
dGlvbnMKK3sKKyAgICBVTlVTRURfUEFSQU0obWFuYWdlcik7CisgICAgZm9yIChDTExvY2F0aW9u
ICpsb2NhdGlvbiBpbiBsb2NhdGlvbnMpCisgICAgICAgIF9jbGllbnQtPnBvc2l0aW9uQ2hhbmdl
ZChfd2Vic2l0ZUlkZW50aWZpZXIsIFdlYkNvcmU6Okdlb2xvY2F0aW9uUG9zaXRpb25EYXRhIHsg
bG9jYXRpb24gfSk7Cit9CisKKy0gKHZvaWQpbG9jYXRpb25NYW5hZ2VyOihDTExvY2F0aW9uTWFu
YWdlciAqKW1hbmFnZXIgZGlkRmFpbFdpdGhFcnJvcjooTlNFcnJvciAqKWVycm9yCit7CisgICAg
QVNTRVJUKGVycm9yKTsKKyAgICBVTlVTRURfUEFSQU0obWFuYWdlcik7CisKKyAgICBpZiAoW2Vy
cm9yIGNvZGVdID09IGtDTEVycm9yRGVuaWVkKSB7CisgICAgICAgIC8vIElnbm9yZSB0aGUgZXJy
b3IgaGVyZSBhbmQgbGV0IGxvY2F0aW9uTWFuYWdlcjpkaWRDaGFuZ2VBdXRob3JpemF0aW9uU3Rh
dHVzOiBoYW5kbGUgdGhlIHBlcm1pc3Npb24uCisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAg
ICBOU1N0cmluZyAqZXJyb3JNZXNzYWdlID0gW2Vycm9yIGxvY2FsaXplZERlc2NyaXB0aW9uXTsK
KyAgICBfY2xpZW50LT5lcnJvck9jY3VycmVkKF93ZWJzaXRlSWRlbnRpZmllciwgZXJyb3JNZXNz
YWdlKTsKK30KKworQGVuZAorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK0NvcmVMb2NhdGlvbkdl
b2xvY2F0aW9uUHJvdmlkZXI6OkNvcmVMb2NhdGlvbkdlb2xvY2F0aW9uUHJvdmlkZXIoY29uc3Qg
UmVnaXN0cmFibGVEb21haW4mIHJlZ2lzdHJhYmxlRG9tYWluLCBDbGllbnQmIGNsaWVudCkKKyAg
ICA6IG1fbG9jYXRpb25NYW5hZ2VyKGFkb3B0TlMoW1tXZWJDTExvY2F0aW9uTWFuYWdlciBhbGxv
Y10gaW5pdFdpdGhXZWJzaXRlSWRlbnRpZmllcjpyZWdpc3RyYWJsZURvbWFpbi5zdHJpbmcoKSBj
bGllbnQ6Y2xpZW50XSkpCit7CisgICAgLy8gUmVxdWVzdCBwZXJtaXNzaW9uIGZvciB0aGUgYXBw
IHRvIHVzZSBnZW9sb2NhdGlvbiAoaWYgaXQgZG9lc24ndCBhbHJlYWR5KS4KKyAgICBbbV9sb2Nh
dGlvbk1hbmFnZXIgcmVxdWVzdEdlb2xvY2F0aW9uQXV0aG9yaXphdGlvbl07Cit9CisKK0NvcmVM
b2NhdGlvbkdlb2xvY2F0aW9uUHJvdmlkZXI6On5Db3JlTG9jYXRpb25HZW9sb2NhdGlvblByb3Zp
ZGVyKCkKK3sKKyAgICBbbV9sb2NhdGlvbk1hbmFnZXIgc3RvcF07Cit9CisKK3ZvaWQgQ29yZUxv
Y2F0aW9uR2VvbG9jYXRpb25Qcm92aWRlcjo6c3RhcnQoKQoreworICAgIFttX2xvY2F0aW9uTWFu
YWdlciBzdGFydF07Cit9CisKK3ZvaWQgQ29yZUxvY2F0aW9uR2VvbG9jYXRpb25Qcm92aWRlcjo6
c3RvcCgpCit7CisgICAgW21fbG9jYXRpb25NYW5hZ2VyIHN0b3BdOworfQorCit2b2lkIENvcmVM
b2NhdGlvbkdlb2xvY2F0aW9uUHJvdmlkZXI6OnNldEVuYWJsZUhpZ2hBY2N1cmFjeShib29sIGhp
Z2hBY2N1cmFjeUVuYWJsZWQpCit7CisgICAgW21fbG9jYXRpb25NYW5hZ2VyIHNldEVuYWJsZUhp
Z2hBY2N1cmFjeTpoaWdoQWNjdXJhY3lFbmFibGVkXTsKK30KKworY2xhc3MgQXV0aG9yaXphdGlv
bkNoZWNrZXIgZmluYWwgOiBwdWJsaWMgUmVmQ291bnRlZDxBdXRob3JpemF0aW9uQ2hlY2tlcj4s
IHB1YmxpYyBDb3JlTG9jYXRpb25HZW9sb2NhdGlvblByb3ZpZGVyOjpDbGllbnQgeworcHVibGlj
OgorICAgIHN0YXRpYyBSZWY8QXV0aG9yaXphdGlvbkNoZWNrZXI+IGNyZWF0ZSgpCisgICAgewor
ICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBBdXRob3JpemF0aW9uQ2hlY2tlcik7CisgICAg
fQorCisgICAgdm9pZCBjaGVjayhjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYgcmVnaXN0cmFibGVE
b21haW4sIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYgY29tcGxldGlvbkhhbmRsZXIp
CisgICAgeworICAgICAgICBtX2NvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9u
SGFuZGxlcik7CisgICAgICAgIG1fcHJvdmlkZXIgPSBtYWtlVW5pcXVlPENvcmVMb2NhdGlvbkdl
b2xvY2F0aW9uUHJvdmlkZXI+KHJlZ2lzdHJhYmxlRG9tYWluLCAqdGhpcyk7CisgICAgfQorCitw
cml2YXRlOgorICAgIEF1dGhvcml6YXRpb25DaGVja2VyKCkgPSBkZWZhdWx0OworCisgICAgdm9p
ZCBnZW9sb2NhdGlvbkF1dGhvcml6YXRpb25HcmFudGVkKGNvbnN0IFN0cmluZyYpIGZpbmFsCisg
ICAgeworICAgICAgICBpZiAobV9jb21wbGV0aW9uSGFuZGxlcikKKyAgICAgICAgICAgIG1fY29t
cGxldGlvbkhhbmRsZXIodHJ1ZSk7CisgICAgfQorCisgICAgdm9pZCBnZW9sb2NhdGlvbkF1dGhv
cml6YXRpb25EZW5pZWQoY29uc3QgU3RyaW5nJikgZmluYWwKKyAgICB7CisgICAgICAgIGlmICht
X2NvbXBsZXRpb25IYW5kbGVyKQorICAgICAgICAgICAgbV9jb21wbGV0aW9uSGFuZGxlcihmYWxz
ZSk7CisgICAgfQorCisgICAgdm9pZCBwb3NpdGlvbkNoYW5nZWQoY29uc3QgU3RyaW5nJiwgR2Vv
bG9jYXRpb25Qb3NpdGlvbkRhdGEmJikgZmluYWwgeyB9CisgICAgdm9pZCBlcnJvck9jY3VycmVk
KGNvbnN0IFN0cmluZyYsIGNvbnN0IFN0cmluZyYpIGZpbmFsCisgICAgeworICAgICAgICBpZiAo
bV9jb21wbGV0aW9uSGFuZGxlcikKKyAgICAgICAgICAgIG1fY29tcGxldGlvbkhhbmRsZXIoZmFs
c2UpOworICAgIH0KKyAgICB2b2lkIHJlc2V0R2VvbG9jYXRpb24oY29uc3QgU3RyaW5nJikgZmlu
YWwgeyB9CisKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8Q29yZUxvY2F0aW9uR2VvbG9jYXRpb25Qcm92
aWRlcj4gbV9wcm92aWRlcjsKKyAgICBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiBtX2Nv
bXBsZXRpb25IYW5kbGVyOworfTsKKwordm9pZCBDb3JlTG9jYXRpb25HZW9sb2NhdGlvblByb3Zp
ZGVyOjpyZXF1ZXN0QXV0aG9yaXphdGlvbihjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYgcmVnaXN0
cmFibGVEb21haW4sIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYgY29tcGxldGlvbkhh
bmRsZXIpCit7CisgICAgYXV0byBhdXRob3JpemF0aW9uQ2hlY2tlciA9IEF1dGhvcml6YXRpb25D
aGVja2VyOjpjcmVhdGUoKTsKKyAgICBhdXRob3JpemF0aW9uQ2hlY2tlci0+Y2hlY2socmVnaXN0
cmFibGVEb21haW4sIFthdXRob3JpemF0aW9uQ2hlY2tlciwgY29tcGxldGlvbkhhbmRsZXIgPSBX
VEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0oYm9vbCBhdXRob3JpemVkKSBtdXRhYmxlIHsKKyAg
ICAgICAgY29tcGxldGlvbkhhbmRsZXIoYXV0aG9yaXplZCk7CisgICAgfSk7Cit9CisKK30gLy8g
bmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIEhBVkUoQ09SRV9MT0NBVElPTikKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svR2VvbG9jYXRpb25DbGllbnRNb2Nr
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svR2VvbG9jYXRpb25DbGllbnRNb2Nr
LmNwcAppbmRleCA5ZDVlZmM4M2YzNGViMThkNTk5ZGMxMGNhYThmYzBjYTM5OWRiMGEyLi5mYTQy
MDgyZTUwNTlhOWVjZjI2NGNhYWY0YzI2NTMyZjRiMmU1ZDdhIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9tb2NrL0dlb2xvY2F0aW9uQ2xpZW50TW9jay5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9HZW9sb2NhdGlvbkNsaWVudE1vY2suY3BwCkBAIC0x
MzYsMTAgKzEzNiwxMSBAQCB2b2lkIEdlb2xvY2F0aW9uQ2xpZW50TW9jazo6Z2VvbG9jYXRpb25E
ZXN0cm95ZWQoKQogICAgIEFTU0VSVCghbV9pc0FjdGl2ZSk7CiB9CiAKLXZvaWQgR2VvbG9jYXRp
b25DbGllbnRNb2NrOjpzdGFydFVwZGF0aW5nKGNvbnN0IFN0cmluZyYgYXV0aG9yaXphdGlvblRv
a2VuKQordm9pZCBHZW9sb2NhdGlvbkNsaWVudE1vY2s6OnN0YXJ0VXBkYXRpbmcoY29uc3QgU3Ry
aW5nJiBhdXRob3JpemF0aW9uVG9rZW4sIGJvb2wgZW5hYmxlSGlnaEFjY3VyYWN5KQogewogICAg
IEFTU0VSVCghbV9pc0FjdGl2ZSk7CiAgICAgVU5VU0VEX1BBUkFNKGF1dGhvcml6YXRpb25Ub2tl
bik7CisgICAgVU5VU0VEX1BBUkFNKGVuYWJsZUhpZ2hBY2N1cmFjeSk7CiAgICAgbV9pc0FjdGl2
ZSA9IHRydWU7CiAgICAgYXN5bmNVcGRhdGVDb250cm9sbGVyKCk7CiB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL0dlb2xvY2F0aW9uQ2xpZW50TW9jay5oIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9HZW9sb2NhdGlvbkNsaWVudE1vY2suaAppbmRleCAy
ZmE3NWUwNTdhNTNkN2U4MThjY2ZhZmVlNzAyNDNkZDU0ODIxODQ1Li5mOGJhYzM4YjViNmNjYzhj
YzA4Zjg3MDcxZWJjNzVkNjViMzEwNjQwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9tb2NrL0dlb2xvY2F0aW9uQ2xpZW50TW9jay5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL21vY2svR2VvbG9jYXRpb25DbGllbnRNb2NrLmgKQEAgLTU5LDcgKzU5LDcgQEAgcHVi
bGljOgogCiAgICAgLy8gR2VvbG9jYXRpb25DbGllbnQKICAgICB2b2lkIGdlb2xvY2F0aW9uRGVz
dHJveWVkKCkgb3ZlcnJpZGU7Ci0gICAgdm9pZCBzdGFydFVwZGF0aW5nKGNvbnN0IFN0cmluZyYg
YXV0aG9yaXphdGlvblRva2VuKSBvdmVycmlkZTsKKyAgICB2b2lkIHN0YXJ0VXBkYXRpbmcoY29u
c3QgU3RyaW5nJiBhdXRob3JpemF0aW9uVG9rZW4sIGJvb2wgZW5hYmxlSGlnaEFjY3VyYWN5KSBv
dmVycmlkZTsKICAgICB2b2lkIHN0b3BVcGRhdGluZygpIG92ZXJyaWRlOwogICAgIHZvaWQgc2V0
RW5hYmxlSGlnaEFjY3VyYWN5KGJvb2wpIG92ZXJyaWRlOwogICAgIHN0ZDo6b3B0aW9uYWw8R2Vv
bG9jYXRpb25Qb3NpdGlvbkRhdGE+IGxhc3RQb3NpdGlvbigpIG92ZXJyaWRlOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9Tb3VyY2VzQ29jb2EudHh0IGIvU291cmNlL1dlYktpdC9Tb3VyY2Vz
Q29jb2EudHh0CmluZGV4IDJhY2RhOTQxZWNkZjRiY2JlN2ZlOTRhNTE4MTc0OTFmMWMwYmYzOWEu
LjM5ZmVhOTFjZTU2MTc1ODE2MGFkOTIxODk4OTQ1M2U1ODNlZDY0NjEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvU291cmNlc0NvY29hLnR4dAorKysgYi9Tb3VyY2UvV2ViS2l0L1NvdXJjZXND
b2NvYS50eHQKQEAgLTQyNyw2ICs0MjcsNyBAQCBVSVByb2Nlc3MvQ29jb2EvVUlSZW1vdGVPYmpl
Y3RSZWdpc3RyeS5jcHAKIFVJUHJvY2Vzcy9Db2NvYS9Vc2VyTWVkaWFDYXB0dXJlTWFuYWdlclBy
b3h5LmNwcAogVUlQcm9jZXNzL0NvY29hL1VzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0TWFuYWdl
clByb3h5Lm1tCiBVSVByb2Nlc3MvQ29jb2EvVmlkZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5Lm1t
CitVSVByb2Nlc3MvQ29jb2EvV2ViR2VvbG9jYXRpb25NYW5hZ2VyUHJveHlDb2NvYS5jcHAKIFVJ
UHJvY2Vzcy9Db2NvYS9XZWJQYWdlUHJveHlDb2NvYS5tbQogVUlQcm9jZXNzL0NvY29hL1dlYlBh
c3RlYm9hcmRQcm94eUNvY29hLm1tCiBVSVByb2Nlc3MvQ29jb2EvV2ViUHJlZmVyZW5jZXNDb2Nv
YS5tbQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV2ViR2VvbG9j
YXRpb25NYW5hZ2VyUHJveHlDb2NvYS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2Nv
YS9XZWJHZW9sb2NhdGlvbk1hbmFnZXJQcm94eUNvY29hLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5mMGJmYmRl
OTMyMjJiMTA1N2YxNzM2YjcyOTIyMDEyMzJiMDI1NjhmCi0tLSAvZGV2L251bGwKKysrIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV2ViR2VvbG9jYXRpb25NYW5hZ2VyUHJveHlDb2Nv
YS5jcHAKQEAgLTAsMCArMSw3NiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMiBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
KyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwor
ICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAq
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
IEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIK
KyNpbmNsdWRlICJXZWJHZW9sb2NhdGlvbk1hbmFnZXJQcm94eS5oIgorCisjaW5jbHVkZSAiV2Vi
R2VvbG9jYXRpb25NYW5hZ2VyTWVzc2FnZXMuaCIKKyNpbmNsdWRlICJXZWJQcm9jZXNzUHJveHku
aCIKKworbmFtZXNwYWNlIFdlYktpdCB7CisKKy8vIEZJWE1FOiBUaGlzIHNob3VsZCBiZSB1c2Vk
IGJ5IGFsbCBDb2NvYSBwb3J0cworI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCisKK3ZvaWQgV2Vi
R2VvbG9jYXRpb25NYW5hZ2VyUHJveHk6OnBvc2l0aW9uQ2hhbmdlZChjb25zdCBTdHJpbmcmIHdl
YnNpdGVJZGVudGlmaWVyLCBXZWJDb3JlOjpHZW9sb2NhdGlvblBvc2l0aW9uRGF0YSYmIHBvc2l0
aW9uKQoreworICAgIGF1dG8gcmVnaXN0cmFibGVEb21haW4gPSBXZWJDb3JlOjpSZWdpc3RyYWJs
ZURvbWFpbjo6dW5jaGVja2VkQ3JlYXRlRnJvbVJlZ2lzdHJhYmxlRG9tYWluU3RyaW5nKHdlYnNp
dGVJZGVudGlmaWVyKTsKKyAgICBhdXRvIGl0ID0gbV9wZXJEb21haW5EYXRhLmZpbmQocmVnaXN0
cmFibGVEb21haW4pOworICAgIGlmIChpdCA9PSBtX3BlckRvbWFpbkRhdGEuZW5kKCkpCisgICAg
ICAgIHJldHVybjsKKworICAgIGF1dG8mIHBlckRvbWFpbkRhdGEgPSAqaXQtPnZhbHVlOworICAg
IHBlckRvbWFpbkRhdGEubGFzdFBvc2l0aW9uID0gV1RGTW92ZShwb3NpdGlvbik7CisgICAgZm9y
IChhdXRvJiB3ZWJQcm9jZXNzUHJveHkgOiBwZXJEb21haW5EYXRhLndhdGNoZXJzKQorICAgICAg
ICB3ZWJQcm9jZXNzUHJveHkuc2VuZChNZXNzYWdlczo6V2ViR2VvbG9jYXRpb25NYW5hZ2VyOjpE
aWRDaGFuZ2VQb3NpdGlvbihyZWdpc3RyYWJsZURvbWFpbiwgcGVyRG9tYWluRGF0YS5sYXN0UG9z
aXRpb24udmFsdWUoKSksIDApOworfQorCit2b2lkIFdlYkdlb2xvY2F0aW9uTWFuYWdlclByb3h5
OjplcnJvck9jY3VycmVkKGNvbnN0IFN0cmluZyYgd2Vic2l0ZUlkZW50aWZpZXIsIGNvbnN0IFN0
cmluZyYgZXJyb3JNZXNzYWdlKQoreworICAgIGF1dG8gcmVnaXN0cmFibGVEb21haW4gPSBXZWJD
b3JlOjpSZWdpc3RyYWJsZURvbWFpbjo6dW5jaGVja2VkQ3JlYXRlRnJvbVJlZ2lzdHJhYmxlRG9t
YWluU3RyaW5nKHdlYnNpdGVJZGVudGlmaWVyKTsKKyAgICBhdXRvIGl0ID0gbV9wZXJEb21haW5E
YXRhLmZpbmQocmVnaXN0cmFibGVEb21haW4pOworICAgIGlmIChpdCA9PSBtX3BlckRvbWFpbkRh
dGEuZW5kKCkpCisgICAgICAgIHJldHVybjsKKworICAgIGF1dG8mIHBlckRvbWFpbkRhdGEgPSAq
aXQtPnZhbHVlOworICAgIGZvciAoYXV0byYgd2ViUHJvY2Vzc1Byb3h5IDogcGVyRG9tYWluRGF0
YS53YXRjaGVycykKKyAgICAgICAgd2ViUHJvY2Vzc1Byb3h5LnNlbmQoTWVzc2FnZXM6OldlYkdl
b2xvY2F0aW9uTWFuYWdlcjo6RGlkRmFpbFRvRGV0ZXJtaW5lUG9zaXRpb24ocmVnaXN0cmFibGVE
b21haW4sIGVycm9yTWVzc2FnZSksIDApOworfQorCit2b2lkIFdlYkdlb2xvY2F0aW9uTWFuYWdl
clByb3h5OjpyZXNldEdlb2xvY2F0aW9uKGNvbnN0IFN0cmluZyYgd2Vic2l0ZUlkZW50aWZpZXIp
Cit7CisgICAgYXV0byByZWdpc3RyYWJsZURvbWFpbiA9IFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9t
YWluOjp1bmNoZWNrZWRDcmVhdGVGcm9tUmVnaXN0cmFibGVEb21haW5TdHJpbmcod2Vic2l0ZUlk
ZW50aWZpZXIpOworICAgIGF1dG8gaXQgPSBtX3BlckRvbWFpbkRhdGEuZmluZChyZWdpc3RyYWJs
ZURvbWFpbik7CisgICAgaWYgKGl0ID09IG1fcGVyRG9tYWluRGF0YS5lbmQoKSkKKyAgICAgICAg
cmV0dXJuOworCisgICAgYXV0byYgcGVyRG9tYWluRGF0YSA9ICppdC0+dmFsdWU7CisgICAgZm9y
IChhdXRvJiB3ZWJQcm9jZXNzUHJveHkgOiBwZXJEb21haW5EYXRhLndhdGNoZXJzKQorICAgICAg
ICB3ZWJQcm9jZXNzUHJveHkuc2VuZChNZXNzYWdlczo6V2ViR2VvbG9jYXRpb25NYW5hZ2VyOjpS
ZXNldFBlcm1pc3Npb25zKHJlZ2lzdHJhYmxlRG9tYWluKSwgMCk7Cit9CisKKyNlbmRpZgorCit9
IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L1dlYkNvbnRleHRTdXBwbGVtZW50LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJDb250
ZXh0U3VwcGxlbWVudC5oCmluZGV4IGVkNTViNDAzZGIyOWY5NDAwNDM4YmEzMmE2MGM3NTgyNzQ5
MzRmYTYuLmVjMTljZGNjY2JiNDBmOTJkNTgzNWYzZWE2MDMxYmRkYTQ3N2E4ZTIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkNvbnRleHRTdXBwbGVtZW50LmgKKysrIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQ29udGV4dFN1cHBsZW1lbnQuaApAQCAtNDcsMTQg
KzQ3LDYgQEAgcHVibGljOgogICAgIHsKICAgICB9CiAKLSAgICB2aXJ0dWFsIHZvaWQgcHJvY2Vz
c0RpZENsb3NlKFdlYlByb2Nlc3NQcm94eSopCi0gICAgewotICAgIH0KLQotICAgIHZpcnR1YWwg
dm9pZCBwcm9jZXNzRGlkQ2xvc2UoTmV0d29ya1Byb2Nlc3NQcm94eSopCi0gICAgewotICAgIH0K
LQogICAgIFdlYlByb2Nlc3NQb29sKiBwcm9jZXNzUG9vbCgpIGNvbnN0IHsgcmV0dXJuIG1fcHJv
Y2Vzc1Bvb2w7IH0KICAgICB2b2lkIGNsZWFyUHJvY2Vzc1Bvb2woKSB7IG1fcHJvY2Vzc1Bvb2wg
PSBudWxscHRyOyB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkdl
b2xvY2F0aW9uTWFuYWdlclByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkdl
b2xvY2F0aW9uTWFuYWdlclByb3h5LmNwcAppbmRleCAwNGYzMjI3Y2Q1NWM5OTJhNDJjZDk2YTNm
MjVkNjk3YWVkNzk2NWEyLi41NjY1NzRkM2U3MTIzMjg1NWRkY2M2YzFkZTQwMzdjMTM2NjQ0NjVi
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJHZW9sb2NhdGlvbk1hbmFn
ZXJQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViR2VvbG9jYXRpb25N
YW5hZ2VyUHJveHkuY3BwCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAx
MSwgMjAxMiwgMjAxMyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmln
aHQgKEMpIDIwMTEtMjAyMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTM0LDEwICszNCwxNSBAQAogI2luY2x1ZGUgIldl
YlBhZ2VQcm94eS5oIgogI2luY2x1ZGUgIldlYlByb2Nlc3NQb29sLmgiCiAKLSNkZWZpbmUgTUVT
U0FHRV9DSEVDSyhhc3NlcnRpb24pIE1FU1NBR0VfQ0hFQ0tfQkFTRShhc3NlcnRpb24sICgmY29u
bmVjdGlvbikpCisjZGVmaW5lIE1FU1NBR0VfQ0hFQ0soY29ubmVjdGlvbiwgYXNzZXJ0aW9uKSBN
RVNTQUdFX0NIRUNLX0JBU0UoYXNzZXJ0aW9uLCAoY29ubmVjdGlvbikpCiAKIG5hbWVzcGFjZSBX
ZWJLaXQgewogCitzdGF0aWMgaW5saW5lIFdlYlByb2Nlc3NQcm94eSYgY29ubmVjdGlvblRvV2Vi
UHJvY2Vzc1Byb3h5KGNvbnN0IElQQzo6Q29ubmVjdGlvbiYgY29ubmVjdGlvbikKK3sKKyAgICBy
ZXR1cm4gc3RhdGljX2Nhc3Q8V2ViUHJvY2Vzc1Byb3h5Jj4oY29ubmVjdGlvbi5jbGllbnQoKSk7
Cit9CisKIGNvbnN0IGNoYXIqIFdlYkdlb2xvY2F0aW9uTWFuYWdlclByb3h5OjpzdXBwbGVtZW50
TmFtZSgpCiB7CiAgICAgcmV0dXJuICJXZWJHZW9sb2NhdGlvbk1hbmFnZXJQcm94eSI7CkBAIC01
MCwzNCArNTUsMzggQEAgUmVmPFdlYkdlb2xvY2F0aW9uTWFuYWdlclByb3h5PiBXZWJHZW9sb2Nh
dGlvbk1hbmFnZXJQcm94eTo6Y3JlYXRlKFdlYlByb2Nlc3NQb28KIAogV2ViR2VvbG9jYXRpb25N
YW5hZ2VyUHJveHk6OldlYkdlb2xvY2F0aW9uTWFuYWdlclByb3h5KFdlYlByb2Nlc3NQb29sKiBw
cm9jZXNzUG9vbCkKICAgICA6IFdlYkNvbnRleHRTdXBwbGVtZW50KHByb2Nlc3NQb29sKQotICAg
ICwgbV9wcm92aWRlcihtYWtlVW5pcXVlPEFQSTo6R2VvbG9jYXRpb25Qcm92aWRlcj4oKSkKIHsK
ICAgICBXZWJDb250ZXh0U3VwcGxlbWVudDo6cHJvY2Vzc1Bvb2woKS0+YWRkTWVzc2FnZVJlY2Vp
dmVyKE1lc3NhZ2VzOjpXZWJHZW9sb2NhdGlvbk1hbmFnZXJQcm94eTo6bWVzc2FnZVJlY2VpdmVy
TmFtZSgpLCAqdGhpcyk7CiB9CiAKK1dlYkdlb2xvY2F0aW9uTWFuYWdlclByb3h5Ojp+V2ViR2Vv
bG9jYXRpb25NYW5hZ2VyUHJveHkoKSA9IGRlZmF1bHQ7CisKIHZvaWQgV2ViR2VvbG9jYXRpb25N
YW5hZ2VyUHJveHk6OnNldFByb3ZpZGVyKHN0ZDo6dW5pcXVlX3B0cjxBUEk6Okdlb2xvY2F0aW9u
UHJvdmlkZXI+JiYgcHJvdmlkZXIpCiB7Ci0gICAgaWYgKCFwcm92aWRlcikKLSAgICAgICAgbV9w
cm92aWRlciA9IG1ha2VVbmlxdWU8QVBJOjpHZW9sb2NhdGlvblByb3ZpZGVyPigpOwotICAgIGVs
c2UKLSAgICAgICAgbV9wcm92aWRlciA9IFdURk1vdmUocHJvdmlkZXIpOworICAgIG1fY2xpZW50
UHJvdmlkZXIgPSBXVEZNb3ZlKHByb3ZpZGVyKTsKIH0KIAogLy8gV2ViQ29udGV4dFN1cHBsZW1l
bnQKIAogdm9pZCBXZWJHZW9sb2NhdGlvbk1hbmFnZXJQcm94eTo6cHJvY2Vzc1Bvb2xEZXN0cm95
ZWQoKQogewotICAgIGJvb2wgd2FzVXBkYXRpbmcgPSBpc1VwZGF0aW5nKCk7Ci0gICAgbV91cGRh
dGVSZXF1ZXN0ZXJzLmNsZWFyKCk7CisgICAgaWYgKG1fcGVyRG9tYWluRGF0YS5pc0VtcHR5KCkp
CisgICAgICAgIHJldHVybjsKIAotICAgIEFTU0VSVCghaXNVcGRhdGluZygpKTsKLSAgICBpZiAo
d2FzVXBkYXRpbmcpCi0gICAgICAgIG1fcHJvdmlkZXItPnN0b3BVcGRhdGluZygqdGhpcyk7Cisg
ICAgbV9wZXJEb21haW5EYXRhLmNsZWFyKCk7CisgICAgaWYgKG1fY2xpZW50UHJvdmlkZXIpCisg
ICAgICAgIG1fY2xpZW50UHJvdmlkZXItPnN0b3BVcGRhdGluZygqdGhpcyk7CiB9CiAKLXZvaWQg
V2ViR2VvbG9jYXRpb25NYW5hZ2VyUHJveHk6OnByb2Nlc3NEaWRDbG9zZShXZWJQcm9jZXNzUHJv
eHkqIHdlYlByb2Nlc3NQcm94eSkKK3ZvaWQgV2ViR2VvbG9jYXRpb25NYW5hZ2VyUHJveHk6Ondl
YlByb2Nlc3NJc0dvaW5nQXdheShXZWJQcm9jZXNzUHJveHkmIHByb3h5KQogewotICAgIHJlbW92
ZVJlcXVlc3Rlcih3ZWJQcm9jZXNzUHJveHkpOworICAgIFZlY3RvcjxXZWJDb3JlOjpSZWdpc3Ry
YWJsZURvbWFpbj4gYWZmZWN0ZWREb21haW5zOworICAgIGZvciAoYXV0byYgW3JlZ2lzdHJhYmxl
RG9tYWluLCBwZXJEb21haW5EYXRhXSA6IG1fcGVyRG9tYWluRGF0YSkgeworICAgICAgICBpZiAo
cGVyRG9tYWluRGF0YS0+d2F0Y2hlcnMuY29udGFpbnMocHJveHkpKQorICAgICAgICAgICAgYWZm
ZWN0ZWREb21haW5zLmFwcGVuZChyZWdpc3RyYWJsZURvbWFpbik7CisgICAgfQorICAgIGZvciAo
YXV0byYgcmVnaXN0cmFibGVEb21haW4gOiBhZmZlY3RlZERvbWFpbnMpCisgICAgICAgIHN0b3BV
cGRhdGluZ1dpdGhQcm94eShwcm94eSwgcmVnaXN0cmFibGVEb21haW4pOwogfQogCiB2b2lkIFdl
Ykdlb2xvY2F0aW9uTWFuYWdlclByb3h5OjpyZWZXZWJDb250ZXh0U3VwcGxlbWVudCgpCkBAIC05
Miw4MCArMTAxLDIwNCBAQCB2b2lkIFdlYkdlb2xvY2F0aW9uTWFuYWdlclByb3h5OjpkZXJlZldl
YkNvbnRleHRTdXBwbGVtZW50KCkKIAogdm9pZCBXZWJHZW9sb2NhdGlvbk1hbmFnZXJQcm94eTo6
cHJvdmlkZXJEaWRDaGFuZ2VQb3NpdGlvbihXZWJHZW9sb2NhdGlvblBvc2l0aW9uKiBwb3NpdGlv
bikKIHsKLSAgICBtX2xhc3RQb3NpdGlvbiA9IHBvc2l0aW9uLT5jb3JlUG9zaXRpb24oKTsKLQot
ICAgIGlmICghcHJvY2Vzc1Bvb2woKSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgcHJvY2Vzc1Bv
b2woKS0+c2VuZFRvQWxsUHJvY2Vzc2VzKE1lc3NhZ2VzOjpXZWJHZW9sb2NhdGlvbk1hbmFnZXI6
OkRpZENoYW5nZVBvc2l0aW9uKG1fbGFzdFBvc2l0aW9uLnZhbHVlKCkpKTsKKyAgICBmb3IgKGF1
dG8mIFtyZWdpc3RyYWJsZURvbWFpbiwgcGVyRG9tYWluRGF0YV0gOiBtX3BlckRvbWFpbkRhdGEp
IHsKKyAgICAgICAgcGVyRG9tYWluRGF0YS0+bGFzdFBvc2l0aW9uID0gcG9zaXRpb24tPmNvcmVQ
b3NpdGlvbigpOworICAgICAgICBmb3IgKGF1dG8mIHByb2Nlc3MgOiBwZXJEb21haW5EYXRhLT53
YXRjaGVycykKKyAgICAgICAgICAgIHByb2Nlc3Muc2VuZChNZXNzYWdlczo6V2ViR2VvbG9jYXRp
b25NYW5hZ2VyOjpEaWRDaGFuZ2VQb3NpdGlvbihyZWdpc3RyYWJsZURvbWFpbiwgcGVyRG9tYWlu
RGF0YS0+bGFzdFBvc2l0aW9uLnZhbHVlKCkpLCAwKTsKKyAgICB9CiB9CiAKIHZvaWQgV2ViR2Vv
bG9jYXRpb25NYW5hZ2VyUHJveHk6OnByb3ZpZGVyRGlkRmFpbFRvRGV0ZXJtaW5lUG9zaXRpb24o
Y29uc3QgU3RyaW5nJiBlcnJvck1lc3NhZ2UpCiB7Ci0gICAgaWYgKCFwcm9jZXNzUG9vbCgpKQot
ICAgICAgICByZXR1cm47Ci0KLSAgICBwcm9jZXNzUG9vbCgpLT5zZW5kVG9BbGxQcm9jZXNzZXMo
TWVzc2FnZXM6OldlYkdlb2xvY2F0aW9uTWFuYWdlcjo6RGlkRmFpbFRvRGV0ZXJtaW5lUG9zaXRp
b24oZXJyb3JNZXNzYWdlKSk7CisgICAgZm9yIChhdXRvJiBbcmVnaXN0cmFibGVEb21haW4sIHBl
ckRvbWFpbkRhdGFdIDogbV9wZXJEb21haW5EYXRhKSB7CisgICAgICAgIGZvciAoYXV0byYgcHJv
eHkgOiBwZXJEb21haW5EYXRhLT53YXRjaGVycykKKyAgICAgICAgICAgIHByb3h5LnNlbmQoTWVz
c2FnZXM6OldlYkdlb2xvY2F0aW9uTWFuYWdlcjo6RGlkRmFpbFRvRGV0ZXJtaW5lUG9zaXRpb24o
cmVnaXN0cmFibGVEb21haW4sIGVycm9yTWVzc2FnZSksIDApOworICAgIH0KIH0KIAogI2lmIFBM
QVRGT1JNKElPU19GQU1JTFkpCiB2b2lkIFdlYkdlb2xvY2F0aW9uTWFuYWdlclByb3h5OjpyZXNl
dFBlcm1pc3Npb25zKCkKIHsKLSAgICBwcm9jZXNzUG9vbCgpLT5zZW5kVG9BbGxQcm9jZXNzZXMo
TWVzc2FnZXM6OldlYkdlb2xvY2F0aW9uTWFuYWdlcjo6UmVzZXRQZXJtaXNzaW9ucygpKTsKKyAg
ICBBU1NFUlQobV9jbGllbnRQcm92aWRlcik7CisgICAgZm9yIChhdXRvJiBbcmVnaXN0cmFibGVE
b21haW4sIHBlckRvbWFpbkRhdGFdIDogbV9wZXJEb21haW5EYXRhKSB7CisgICAgICAgIGZvciAo
YXV0byYgcHJveHkgOiBwZXJEb21haW5EYXRhLT53YXRjaGVycykKKyAgICAgICAgICAgIHByb3h5
LnNlbmQoTWVzc2FnZXM6OldlYkdlb2xvY2F0aW9uTWFuYWdlcjo6UmVzZXRQZXJtaXNzaW9ucyhy
ZWdpc3RyYWJsZURvbWFpbiksIDApOworICAgIH0KIH0KICNlbmRpZgogCi12b2lkIFdlYkdlb2xv
Y2F0aW9uTWFuYWdlclByb3h5OjpzdGFydFVwZGF0aW5nKElQQzo6Q29ubmVjdGlvbiYgY29ubmVj
dGlvbiwgV2ViUGFnZVByb3h5SWRlbnRpZmllciBwYWdlUHJveHlJRCwgY29uc3QgU3RyaW5nJiBh
dXRob3JpemF0aW9uVG9rZW4pCit2b2lkIFdlYkdlb2xvY2F0aW9uTWFuYWdlclByb3h5OjpzdGFy
dFVwZGF0aW5nKElQQzo6Q29ubmVjdGlvbiYgY29ubmVjdGlvbiwgY29uc3QgV2ViQ29yZTo6UmVn
aXN0cmFibGVEb21haW4mIHJlZ2lzdHJhYmxlRG9tYWluLCBXZWJQYWdlUHJveHlJZGVudGlmaWVy
IHBhZ2VQcm94eUlELCBjb25zdCBTdHJpbmcmIGF1dGhvcml6YXRpb25Ub2tlbiwgYm9vbCBlbmFi
bGVIaWdoQWNjdXJhY3kpCit7CisgICAgc3RhcnRVcGRhdGluZ1dpdGhQcm94eShjb25uZWN0aW9u
VG9XZWJQcm9jZXNzUHJveHkoY29ubmVjdGlvbiksIHJlZ2lzdHJhYmxlRG9tYWluLCBwYWdlUHJv
eHlJRCwgYXV0aG9yaXphdGlvblRva2VuLCBlbmFibGVIaWdoQWNjdXJhY3kpOworfQorCit2b2lk
IFdlYkdlb2xvY2F0aW9uTWFuYWdlclByb3h5OjpzdGFydFVwZGF0aW5nV2l0aFByb3h5KFdlYlBy
b2Nlc3NQcm94eSYgcHJveHksIGNvbnN0IFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluJiByZWdp
c3RyYWJsZURvbWFpbiwgV2ViUGFnZVByb3h5SWRlbnRpZmllciBwYWdlUHJveHlJRCwgY29uc3Qg
U3RyaW5nJiBhdXRob3JpemF0aW9uVG9rZW4sIGJvb2wgZW5hYmxlSGlnaEFjY3VyYWN5KQogewog
ICAgIGF1dG8qIHBhZ2UgPSBXZWJQcm9jZXNzUHJveHk6OndlYlBhZ2UocGFnZVByb3h5SUQpOwot
ICAgIE1FU1NBR0VfQ0hFQ0socGFnZSk7CisgICAgTUVTU0FHRV9DSEVDSyhwcm94eS5jb25uZWN0
aW9uKCksIHBhZ2UpOwogCiAgICAgYXV0byBpc1ZhbGlkQXV0aG9yaXphdGlvblRva2VuID0gcGFn
ZS0+Z2VvbG9jYXRpb25QZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXIoKS5pc1ZhbGlkQXV0aG9yaXph
dGlvblRva2VuKGF1dGhvcml6YXRpb25Ub2tlbik7Ci0gICAgTUVTU0FHRV9DSEVDSyhpc1ZhbGlk
QXV0aG9yaXphdGlvblRva2VuKTsKKyAgICBNRVNTQUdFX0NIRUNLKHByb3h5LmNvbm5lY3Rpb24o
KSwgaXNWYWxpZEF1dGhvcml6YXRpb25Ub2tlbik7CisKKyAgICBhdXRvJiBwZXJEb21haW5EYXRh
ID0gKm1fcGVyRG9tYWluRGF0YS5lbnN1cmUocmVnaXN0cmFibGVEb21haW4sIFtdIHsKKyAgICAg
ICAgcmV0dXJuIG1ha2VVbmlxdWU8UGVyRG9tYWluRGF0YT4oKTsKKyAgICB9KS5pdGVyYXRvci0+
dmFsdWU7CisKKyAgICBib29sIHdhc1VwZGF0aW5nID0gaXNVcGRhdGluZyhwZXJEb21haW5EYXRh
KTsKKyAgICBib29sIGhpZ2hBY2N1cmFjeVdhc0VuYWJsZWQgPSBpc0hpZ2hBY2N1cmFjeUVuYWJs
ZWQocGVyRG9tYWluRGF0YSk7CisKKyAgICBwZXJEb21haW5EYXRhLndhdGNoZXJzLmFkZChwcm94
eSk7CisgICAgaWYgKGVuYWJsZUhpZ2hBY2N1cmFjeSkKKyAgICAgICAgcGVyRG9tYWluRGF0YS53
YXRjaGVyc05lZWRpbmdIaWdoQWNjdXJhY3kuYWRkKHByb3h5KTsKIAotICAgIGJvb2wgd2FzVXBk
YXRpbmcgPSBpc1VwZGF0aW5nKCk7Ci0gICAgbV91cGRhdGVSZXF1ZXN0ZXJzLmFkZCgmY29ubmVj
dGlvbi5jbGllbnQoKSk7CiAgICAgaWYgKCF3YXNVcGRhdGluZykgewotICAgICAgICBtX3Byb3Zp
ZGVyLT5zZXRFbmFibGVIaWdoQWNjdXJhY3koKnRoaXMsIGlzSGlnaEFjY3VyYWN5RW5hYmxlZCgp
KTsKLSAgICAgICAgbV9wcm92aWRlci0+c3RhcnRVcGRhdGluZygqdGhpcyk7Ci0gICAgfSBlbHNl
IGlmIChtX2xhc3RQb3NpdGlvbikKLSAgICAgICAgY29ubmVjdGlvbi5zZW5kKE1lc3NhZ2VzOjpX
ZWJHZW9sb2NhdGlvbk1hbmFnZXI6OkRpZENoYW5nZVBvc2l0aW9uKG1fbGFzdFBvc2l0aW9uLnZh
bHVlKCkpLCAwKTsKKyAgICAgICAgcHJvdmlkZXJTdGFydFVwZGF0aW5nKHBlckRvbWFpbkRhdGEs
IHJlZ2lzdHJhYmxlRG9tYWluKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICBpZiAoIWhp
Z2hBY2N1cmFjeVdhc0VuYWJsZWQgJiYgZW5hYmxlSGlnaEFjY3VyYWN5KQorICAgICAgICBwcm92
aWRlclNldEVuYWJsZWRIaWdoQWNjdXJhY3kocGVyRG9tYWluRGF0YSwgZW5hYmxlSGlnaEFjY3Vy
YWN5KTsKKworICAgIGlmIChwZXJEb21haW5EYXRhLmxhc3RQb3NpdGlvbikKKyAgICAgICAgcHJv
eHkuc2VuZChNZXNzYWdlczo6V2ViR2VvbG9jYXRpb25NYW5hZ2VyOjpEaWRDaGFuZ2VQb3NpdGlv
bihyZWdpc3RyYWJsZURvbWFpbiwgcGVyRG9tYWluRGF0YS5sYXN0UG9zaXRpb24udmFsdWUoKSks
IDApOwogfQogCi12b2lkIFdlYkdlb2xvY2F0aW9uTWFuYWdlclByb3h5OjpzdG9wVXBkYXRpbmco
SVBDOjpDb25uZWN0aW9uJiBjb25uZWN0aW9uKQordm9pZCBXZWJHZW9sb2NhdGlvbk1hbmFnZXJQ
cm94eTo6c3RvcFVwZGF0aW5nKElQQzo6Q29ubmVjdGlvbiYgY29ubmVjdGlvbiwgY29uc3QgV2Vi
Q29yZTo6UmVnaXN0cmFibGVEb21haW4mIHJlZ2lzdHJhYmxlRG9tYWluKQogewotICAgIHJlbW92
ZVJlcXVlc3RlcigmY29ubmVjdGlvbi5jbGllbnQoKSk7CisgICAgc3RvcFVwZGF0aW5nV2l0aFBy
b3h5KGNvbm5lY3Rpb25Ub1dlYlByb2Nlc3NQcm94eShjb25uZWN0aW9uKSwgcmVnaXN0cmFibGVE
b21haW4pOwogfQogCi12b2lkIFdlYkdlb2xvY2F0aW9uTWFuYWdlclByb3h5OjpyZW1vdmVSZXF1
ZXN0ZXIoY29uc3QgSVBDOjpDb25uZWN0aW9uOjpDbGllbnQqIGNsaWVudCkKK3ZvaWQgV2ViR2Vv
bG9jYXRpb25NYW5hZ2VyUHJveHk6OnN0b3BVcGRhdGluZ1dpdGhQcm94eShXZWJQcm9jZXNzUHJv
eHkmIHByb3h5LCBjb25zdCBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiYgcmVnaXN0cmFibGVE
b21haW4pCiB7Ci0gICAgYm9vbCB3YXNVcGRhdGluZyA9IGlzVXBkYXRpbmcoKTsKLSAgICBib29s
IGhpZ2hBY2N1cmFjeVdhc0VuYWJsZWQgPSBpc0hpZ2hBY2N1cmFjeUVuYWJsZWQoKTsKKyAgICBh
dXRvIGl0ID0gbV9wZXJEb21haW5EYXRhLmZpbmQocmVnaXN0cmFibGVEb21haW4pOworICAgIGlm
IChpdCA9PSBtX3BlckRvbWFpbkRhdGEuZW5kKCkpCisgICAgICAgIHJldHVybjsKKworICAgIGF1
dG8mIHBlckRvbWFpbkRhdGEgPSAqaXQtPnZhbHVlOworICAgIGJvb2wgd2FzVXBkYXRpbmcgPSBp
c1VwZGF0aW5nKHBlckRvbWFpbkRhdGEpOworICAgIGJvb2wgaGlnaEFjY3VyYWN5V2FzRW5hYmxl
ZCA9IGlzSGlnaEFjY3VyYWN5RW5hYmxlZChwZXJEb21haW5EYXRhKTsKIAotICAgIG1faGlnaEFj
Y3VyYWN5UmVxdWVzdGVycy5yZW1vdmUoY2xpZW50KTsKLSAgICBtX3VwZGF0ZVJlcXVlc3RlcnMu
cmVtb3ZlKGNsaWVudCk7CisgICAgcGVyRG9tYWluRGF0YS53YXRjaGVycy5yZW1vdmUocHJveHkp
OworICAgIHBlckRvbWFpbkRhdGEud2F0Y2hlcnNOZWVkaW5nSGlnaEFjY3VyYWN5LnJlbW92ZShw
cm94eSk7CiAKLSAgICBpZiAod2FzVXBkYXRpbmcgJiYgIWlzVXBkYXRpbmcoKSkKLSAgICAgICAg
bV9wcm92aWRlci0+c3RvcFVwZGF0aW5nKCp0aGlzKTsKKyAgICBpZiAod2FzVXBkYXRpbmcgJiYg
IWlzVXBkYXRpbmcocGVyRG9tYWluRGF0YSkpCisgICAgICAgIHByb3ZpZGVyU3RvcFVwZGF0aW5n
KHBlckRvbWFpbkRhdGEpOwogICAgIGVsc2UgewotICAgICAgICBib29sIGhpZ2hBY2N1cmFjeVNo
b3VsZEJlRW5hYmxlZCA9IGlzSGlnaEFjY3VyYWN5RW5hYmxlZCgpOworICAgICAgICBib29sIGhp
Z2hBY2N1cmFjeVNob3VsZEJlRW5hYmxlZCA9IGlzSGlnaEFjY3VyYWN5RW5hYmxlZChwZXJEb21h
aW5EYXRhKTsKICAgICAgICAgaWYgKGhpZ2hBY2N1cmFjeVNob3VsZEJlRW5hYmxlZCAhPSBoaWdo
QWNjdXJhY3lXYXNFbmFibGVkKQotICAgICAgICAgICAgbV9wcm92aWRlci0+c2V0RW5hYmxlSGln
aEFjY3VyYWN5KCp0aGlzLCBoaWdoQWNjdXJhY3lTaG91bGRCZUVuYWJsZWQpOworICAgICAgICAg
ICAgcHJvdmlkZXJTZXRFbmFibGVkSGlnaEFjY3VyYWN5KHBlckRvbWFpbkRhdGEsIGhpZ2hBY2N1
cmFjeVNob3VsZEJlRW5hYmxlZCk7CiAgICAgfQorCisgICAgaWYgKHBlckRvbWFpbkRhdGEud2F0
Y2hlcnMuY29tcHV0ZXNFbXB0eSgpICYmIHBlckRvbWFpbkRhdGEud2F0Y2hlcnNOZWVkaW5nSGln
aEFjY3VyYWN5LmNvbXB1dGVzRW1wdHkoKSkKKyAgICAgICAgbV9wZXJEb21haW5EYXRhLnJlbW92
ZShpdCk7Cit9CisKK3ZvaWQgV2ViR2VvbG9jYXRpb25NYW5hZ2VyUHJveHk6OnNldEVuYWJsZUhp
Z2hBY2N1cmFjeShJUEM6OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24sIGNvbnN0IFdlYkNvcmU6OlJl
Z2lzdHJhYmxlRG9tYWluJiByZWdpc3RyYWJsZURvbWFpbiwgYm9vbCBlbmFibGVkKQoreworICAg
IHNldEVuYWJsZUhpZ2hBY2N1cmFjeVdpdGhQcm94eShjb25uZWN0aW9uVG9XZWJQcm9jZXNzUHJv
eHkoY29ubmVjdGlvbiksIHJlZ2lzdHJhYmxlRG9tYWluLCBlbmFibGVkKTsKIH0KIAotdm9pZCBX
ZWJHZW9sb2NhdGlvbk1hbmFnZXJQcm94eTo6c2V0RW5hYmxlSGlnaEFjY3VyYWN5KElQQzo6Q29u
bmVjdGlvbiYgY29ubmVjdGlvbiwgYm9vbCBlbmFibGVkKQordm9pZCBXZWJHZW9sb2NhdGlvbk1h
bmFnZXJQcm94eTo6c2V0RW5hYmxlSGlnaEFjY3VyYWN5V2l0aFByb3h5KFdlYlByb2Nlc3NQcm94
eSYgcHJveHksIGNvbnN0IFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluJiByZWdpc3RyYWJsZURv
bWFpbiwgYm9vbCBlbmFibGVkKQogewotICAgIGJvb2wgaGlnaEFjY3VyYWN5V2FzRW5hYmxlZCA9
IGlzSGlnaEFjY3VyYWN5RW5hYmxlZCgpOworICAgIGF1dG8gaXQgPSBtX3BlckRvbWFpbkRhdGEu
ZmluZChyZWdpc3RyYWJsZURvbWFpbik7CisgICAgQVNTRVJUKGl0ICE9IG1fcGVyRG9tYWluRGF0
YS5lbmQoKSk7CisgICAgaWYgKGl0ID09IG1fcGVyRG9tYWluRGF0YS5lbmQoKSkKKyAgICAgICAg
cmV0dXJuOworCisgICAgYXV0byYgcGVyRG9tYWluRGF0YSA9ICppdC0+dmFsdWU7CisgICAgYm9v
bCBoaWdoQWNjdXJhY3lXYXNFbmFibGVkID0gaXNIaWdoQWNjdXJhY3lFbmFibGVkKHBlckRvbWFp
bkRhdGEpOwogCiAgICAgaWYgKGVuYWJsZWQpCi0gICAgICAgIG1faGlnaEFjY3VyYWN5UmVxdWVz
dGVycy5hZGQoJmNvbm5lY3Rpb24uY2xpZW50KCkpOworICAgICAgICBwZXJEb21haW5EYXRhLndh
dGNoZXJzTmVlZGluZ0hpZ2hBY2N1cmFjeS5hZGQocHJveHkpOwogICAgIGVsc2UKLSAgICAgICAg
bV9oaWdoQWNjdXJhY3lSZXF1ZXN0ZXJzLnJlbW92ZSgmY29ubmVjdGlvbi5jbGllbnQoKSk7Cisg
ICAgICAgIHBlckRvbWFpbkRhdGEud2F0Y2hlcnNOZWVkaW5nSGlnaEFjY3VyYWN5LnJlbW92ZShw
cm94eSk7CisKKyAgICBpZiAoaXNVcGRhdGluZyhwZXJEb21haW5EYXRhKSAmJiBoaWdoQWNjdXJh
Y3lXYXNFbmFibGVkICE9IGVuYWJsZWQpCisgICAgICAgIHByb3ZpZGVyU2V0RW5hYmxlZEhpZ2hB
Y2N1cmFjeShwZXJEb21haW5EYXRhLCBlbmFibGVkKTsKK30KKworYm9vbCBXZWJHZW9sb2NhdGlv
bk1hbmFnZXJQcm94eTo6aXNVcGRhdGluZyhjb25zdCBQZXJEb21haW5EYXRhJiBwZXJEb21haW5E
YXRhKSBjb25zdAoreworI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCisgICAgaWYgKCFtX2NsaWVu
dFByb3ZpZGVyKQorICAgICAgICByZXR1cm4gIXBlckRvbWFpbkRhdGEud2F0Y2hlcnMuY29tcHV0
ZXNFbXB0eSgpOworI2Vsc2UKKyAgICBVTlVTRURfUEFSQU0ocGVyRG9tYWluRGF0YSk7CisjZW5k
aWYKKworICAgIGZvciAoYXV0byYgcGVyRG9tYWluRGF0YSA6IG1fcGVyRG9tYWluRGF0YS52YWx1
ZXMoKSkgeworICAgICAgICBpZiAoIXBlckRvbWFpbkRhdGEtPndhdGNoZXJzLmNvbXB1dGVzRW1w
dHkoKSkKKyAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgIH0KKyAgICByZXR1cm4gZmFsc2U7
Cit9CisKKworYm9vbCBXZWJHZW9sb2NhdGlvbk1hbmFnZXJQcm94eTo6aXNIaWdoQWNjdXJhY3lF
bmFibGVkKGNvbnN0IFBlckRvbWFpbkRhdGEmIHBlckRvbWFpbkRhdGEpIGNvbnN0Cit7CisjaWYg
UExBVEZPUk0oSU9TX0ZBTUlMWSkKKyAgICBpZiAoIW1fY2xpZW50UHJvdmlkZXIpCisgICAgICAg
IHJldHVybiAhcGVyRG9tYWluRGF0YS53YXRjaGVyc05lZWRpbmdIaWdoQWNjdXJhY3kuY29tcHV0
ZXNFbXB0eSgpOworI2Vsc2UKKyAgICBVTlVTRURfUEFSQU0ocGVyRG9tYWluRGF0YSk7CisjZW5k
aWYKKworICAgIGZvciAoYXV0byYgZGF0YSA6IG1fcGVyRG9tYWluRGF0YS52YWx1ZXMoKSkgewor
ICAgICAgICBpZiAoIWRhdGEtPndhdGNoZXJzTmVlZGluZ0hpZ2hBY2N1cmFjeS5jb21wdXRlc0Vt
cHR5KCkpCisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9CisgICAgcmV0dXJuIGZhbHNl
OworfQorCit2b2lkIFdlYkdlb2xvY2F0aW9uTWFuYWdlclByb3h5Ojpwcm92aWRlclN0YXJ0VXBk
YXRpbmcoUGVyRG9tYWluRGF0YSYgcGVyRG9tYWluRGF0YSwgY29uc3QgV2ViQ29yZTo6UmVnaXN0
cmFibGVEb21haW4mIHJlZ2lzdHJhYmxlRG9tYWluKQoreworI2lmIFBMQVRGT1JNKElPU19GQU1J
TFkpCisgICAgaWYgKCFtX2NsaWVudFByb3ZpZGVyKSB7CisgICAgICAgIEFTU0VSVCghcGVyRG9t
YWluRGF0YS5wcm92aWRlcik7CisgICAgICAgIHBlckRvbWFpbkRhdGEucHJvdmlkZXIgPSBtYWtl
VW5pcXVlPFdlYkNvcmU6OkNvcmVMb2NhdGlvbkdlb2xvY2F0aW9uUHJvdmlkZXI+KHJlZ2lzdHJh
YmxlRG9tYWluLCAqdGhpcyk7CisgICAgICAgIHBlckRvbWFpbkRhdGEucHJvdmlkZXItPnNldEVu
YWJsZUhpZ2hBY2N1cmFjeSghcGVyRG9tYWluRGF0YS53YXRjaGVyc05lZWRpbmdIaWdoQWNjdXJh
Y3kuY29tcHV0ZXNFbXB0eSgpKTsKKyAgICAgICAgcGVyRG9tYWluRGF0YS5wcm92aWRlci0+c3Rh
cnQoKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyNlbHNlCisgICAgVU5VU0VEX1BBUkFNKHJl
Z2lzdHJhYmxlRG9tYWluKTsKKyAgICBpZiAoIW1fY2xpZW50UHJvdmlkZXIpCisgICAgICAgIHJl
dHVybjsKKyNlbmRpZgorCisgICAgbV9jbGllbnRQcm92aWRlci0+c2V0RW5hYmxlSGlnaEFjY3Vy
YWN5KCp0aGlzLCBpc0hpZ2hBY2N1cmFjeUVuYWJsZWQocGVyRG9tYWluRGF0YSkpOworICAgIG1f
Y2xpZW50UHJvdmlkZXItPnN0YXJ0VXBkYXRpbmcoKnRoaXMpOworfQorCit2b2lkIFdlYkdlb2xv
Y2F0aW9uTWFuYWdlclByb3h5Ojpwcm92aWRlclN0b3BVcGRhdGluZyhQZXJEb21haW5EYXRhJiBw
ZXJEb21haW5EYXRhKQoreworI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCisgICAgaWYgKCFtX2Ns
aWVudFByb3ZpZGVyKSB7CisgICAgICAgIHBlckRvbWFpbkRhdGEucHJvdmlkZXItPnN0b3AoKTsK
KyAgICAgICAgcmV0dXJuOworICAgIH0KKyNlbHNlCisgICAgVU5VU0VEX1BBUkFNKHBlckRvbWFp
bkRhdGEpOworICAgIGlmICghbV9jbGllbnRQcm92aWRlcikKKyAgICAgICAgcmV0dXJuOworI2Vu
ZGlmCisKKyAgICBtX2NsaWVudFByb3ZpZGVyLT5zdG9wVXBkYXRpbmcoKnRoaXMpOworfQorCit2
b2lkIFdlYkdlb2xvY2F0aW9uTWFuYWdlclByb3h5Ojpwcm92aWRlclNldEVuYWJsZWRIaWdoQWNj
dXJhY3koUGVyRG9tYWluRGF0YSYgcGVyRG9tYWluRGF0YSwgYm9vbCBlbmFibGVkKQoreworI2lm
IFBMQVRGT1JNKElPU19GQU1JTFkpCisgICAgaWYgKCFtX2NsaWVudFByb3ZpZGVyKSB7CisgICAg
ICAgIHBlckRvbWFpbkRhdGEucHJvdmlkZXItPnNldEVuYWJsZUhpZ2hBY2N1cmFjeShlbmFibGVk
KTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyNlbHNlCisgICAgVU5VU0VEX1BBUkFNKHBlckRv
bWFpbkRhdGEpOworICAgIGlmICghbV9jbGllbnRQcm92aWRlcikKKyAgICAgICAgcmV0dXJuOwor
I2VuZGlmCiAKLSAgICBib29sIGhpZ2hBY2N1cmFjeVNob3VsZEJlRW5hYmxlZCA9IGlzSGlnaEFj
Y3VyYWN5RW5hYmxlZCgpOwotICAgIGlmIChpc1VwZGF0aW5nKCkgJiYgaGlnaEFjY3VyYWN5V2Fz
RW5hYmxlZCAhPSBoaWdoQWNjdXJhY3lTaG91bGRCZUVuYWJsZWQpCi0gICAgICAgIG1fcHJvdmlk
ZXItPnNldEVuYWJsZUhpZ2hBY2N1cmFjeSgqdGhpcywgaGlnaEFjY3VyYWN5U2hvdWxkQmVFbmFi
bGVkKTsKKyAgICBtX2NsaWVudFByb3ZpZGVyLT5zZXRFbmFibGVIaWdoQWNjdXJhY3koKnRoaXMs
IGVuYWJsZWQpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkdlb2xvY2F0aW9uTWFuYWdlclByb3h5LmggYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9XZWJHZW9sb2NhdGlvbk1hbmFnZXJQcm94eS5oCmluZGV4IDc0OTM2
ZTQ1YTBkODM4M2E4YjRiM2Q2ZDU3OGM5YmQyMmJlM2ZhNWUuLmY5YTBjYTY0OTc4YTQ5YzkxMDAw
YWRmMWM0Y2I0YTAxMTI4N2UxMmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L1dlYkdlb2xvY2F0aW9uTWFuYWdlclByb3h5LmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvV2ViR2VvbG9jYXRpb25NYW5hZ2VyUHJveHkuaApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBD
b3B5cmlnaHQgKEMpIDIwMTEsIDIwMTIsIDIwMTMgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICogQ29weXJpZ2h0IChDKSAyMDExLTIwMjIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0zMSw5ICszMSwxNSBA
QAogI2luY2x1ZGUgIldlYkNvbnRleHRTdXBwbGVtZW50LmgiCiAjaW5jbHVkZSAiV2ViUGFnZVBy
b3h5SWRlbnRpZmllci5oIgogI2luY2x1ZGUgPFdlYkNvcmUvR2VvbG9jYXRpb25Qb3NpdGlvbkRh
dGEuaD4KLSNpbmNsdWRlIDx3dGYvSGFzaFNldC5oPgorI2luY2x1ZGUgPFdlYkNvcmUvUmVnaXN0
cmFibGVEb21haW4uaD4KKyNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgorI2luY2x1ZGUgPHd0Zi9X
ZWFrSGFzaFNldC5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgogCisjaWYgUExB
VEZPUk0oSU9TX0ZBTUlMWSkKKyNpbmNsdWRlIDxXZWJDb3JlL0NvcmVMb2NhdGlvbkdlb2xvY2F0
aW9uUHJvdmlkZXIuaD4KKyNlbmRpZgorCiBuYW1lc3BhY2UgQVBJIHsKIGNsYXNzIEdlb2xvY2F0
aW9uUHJvdmlkZXI7CiB9CkBAIC00MywxMSArNDksMTYgQEAgbmFtZXNwYWNlIFdlYktpdCB7CiBj
bGFzcyBXZWJHZW9sb2NhdGlvblBvc2l0aW9uOwogY2xhc3MgV2ViUHJvY2Vzc1Bvb2w7CiAKLWNs
YXNzIFdlYkdlb2xvY2F0aW9uTWFuYWdlclByb3h5IDogcHVibGljIEFQSTo6T2JqZWN0SW1wbDxB
UEk6Ok9iamVjdDo6VHlwZTo6R2VvbG9jYXRpb25NYW5hZ2VyPiwgcHVibGljIFdlYkNvbnRleHRT
dXBwbGVtZW50LCBwcml2YXRlIElQQzo6TWVzc2FnZVJlY2VpdmVyIHsKK2NsYXNzIFdlYkdlb2xv
Y2F0aW9uTWFuYWdlclByb3h5IDogcHVibGljIEFQSTo6T2JqZWN0SW1wbDxBUEk6Ok9iamVjdDo6
VHlwZTo6R2VvbG9jYXRpb25NYW5hZ2VyPiwgcHVibGljIFdlYkNvbnRleHRTdXBwbGVtZW50LCBw
cml2YXRlIElQQzo6TWVzc2FnZVJlY2VpdmVyCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKKyAg
ICAsIHB1YmxpYyBXZWJDb3JlOjpDb3JlTG9jYXRpb25HZW9sb2NhdGlvblByb3ZpZGVyOjpDbGll
bnQKKyNlbmRpZgorewogcHVibGljOgogICAgIHN0YXRpYyBjb25zdCBjaGFyKiBzdXBwbGVtZW50
TmFtZSgpOwogCiAgICAgc3RhdGljIFJlZjxXZWJHZW9sb2NhdGlvbk1hbmFnZXJQcm94eT4gY3Jl
YXRlKFdlYlByb2Nlc3NQb29sKik7CisgICAgfldlYkdlb2xvY2F0aW9uTWFuYWdlclByb3h5KCk7
CiAKICAgICB2b2lkIHNldFByb3ZpZGVyKHN0ZDo6dW5pcXVlX3B0cjxBUEk6Okdlb2xvY2F0aW9u
UHJvdmlkZXI+JiYpOwogCkBAIC01NiwzNiArNjcsNTkgQEAgcHVibGljOgogI2lmIFBMQVRGT1JN
KElPU19GQU1JTFkpCiAgICAgdm9pZCByZXNldFBlcm1pc3Npb25zKCk7CiAjZW5kaWYKLSAgICBj
b25zdCBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6Okdlb2xvY2F0aW9uUG9zaXRpb25EYXRhPiYgbGFz
dFBvc2l0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9sYXN0UG9zaXRpb247IH0KIAogICAgIHVzaW5n
IEFQSTo6T2JqZWN0OjpyZWY7CiAgICAgdXNpbmcgQVBJOjpPYmplY3Q6OmRlcmVmOwogCisgICAg
dm9pZCB3ZWJQcm9jZXNzSXNHb2luZ0F3YXkoV2ViUHJvY2Vzc1Byb3h5Jik7CisKIHByaXZhdGU6
CiAgICAgZXhwbGljaXQgV2ViR2VvbG9jYXRpb25NYW5hZ2VyUHJveHkoV2ViUHJvY2Vzc1Bvb2wq
KTsKIAogICAgIC8vIFdlYkNvbnRleHRTdXBwbGVtZW50CiAgICAgdm9pZCBwcm9jZXNzUG9vbERl
c3Ryb3llZCgpIG92ZXJyaWRlOwotICAgIHZvaWQgcHJvY2Vzc0RpZENsb3NlKFdlYlByb2Nlc3NQ
cm94eSopIG92ZXJyaWRlOwogICAgIHZvaWQgcmVmV2ViQ29udGV4dFN1cHBsZW1lbnQoKSBvdmVy
cmlkZTsKICAgICB2b2lkIGRlcmVmV2ViQ29udGV4dFN1cHBsZW1lbnQoKSBvdmVycmlkZTsKIAog
ICAgIC8vIElQQzo6TWVzc2FnZVJlY2VpdmVyCiAgICAgdm9pZCBkaWRSZWNlaXZlTWVzc2FnZShJ
UEM6OkNvbm5lY3Rpb24mLCBJUEM6OkRlY29kZXImKSBvdmVycmlkZTsKIAotICAgIGJvb2wgaXNV
cGRhdGluZygpIGNvbnN0IHsgcmV0dXJuICFtX3VwZGF0ZVJlcXVlc3RlcnMuaXNFbXB0eSgpOyB9
Ci0gICAgYm9vbCBpc0hpZ2hBY2N1cmFjeUVuYWJsZWQoKSBjb25zdCB7IHJldHVybiAhbV9oaWdo
QWNjdXJhY3lSZXF1ZXN0ZXJzLmlzRW1wdHkoKTsgfQorICAgIC8vIElQQyBtZXNzYWdlcy4KKyAg
ICB2b2lkIHN0YXJ0VXBkYXRpbmcoSVBDOjpDb25uZWN0aW9uJiwgY29uc3QgV2ViQ29yZTo6UmVn
aXN0cmFibGVEb21haW4mLCBXZWJQYWdlUHJveHlJZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIGF1
dGhvcml6YXRpb25Ub2tlbiwgYm9vbCBlbmFibGVIaWdoQWNjdXJhY3kpOworICAgIHZvaWQgc3Rv
cFVwZGF0aW5nKElQQzo6Q29ubmVjdGlvbiYsIGNvbnN0IFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9t
YWluJik7CisgICAgdm9pZCBzZXRFbmFibGVIaWdoQWNjdXJhY3koSVBDOjpDb25uZWN0aW9uJiwg
Y29uc3QgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4mLCBib29sKTsKKworICAgIHZvaWQgc3Rh
cnRVcGRhdGluZ1dpdGhQcm94eShXZWJQcm9jZXNzUHJveHkmLCBjb25zdCBXZWJDb3JlOjpSZWdp
c3RyYWJsZURvbWFpbiYsIFdlYlBhZ2VQcm94eUlkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgYXV0
aG9yaXphdGlvblRva2VuLCBib29sIGVuYWJsZUhpZ2hBY2N1cmFjeSk7CisgICAgdm9pZCBzdG9w
VXBkYXRpbmdXaXRoUHJveHkoV2ViUHJvY2Vzc1Byb3h5JiwgY29uc3QgV2ViQ29yZTo6UmVnaXN0
cmFibGVEb21haW4mKTsKKyAgICB2b2lkIHNldEVuYWJsZUhpZ2hBY2N1cmFjeVdpdGhQcm94eShX
ZWJQcm9jZXNzUHJveHkmLCBjb25zdCBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiYsIGJvb2wp
OwogCi0gICAgdm9pZCBzdGFydFVwZGF0aW5nKElQQzo6Q29ubmVjdGlvbiYsIFdlYlBhZ2VQcm94
eUlkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgYXV0aG9yaXphdGlvblRva2VuKTsKLSAgICB2b2lk
IHN0b3BVcGRhdGluZyhJUEM6OkNvbm5lY3Rpb24mKTsKLSAgICB2b2lkIHJlbW92ZVJlcXVlc3Rl
cihjb25zdCBJUEM6OkNvbm5lY3Rpb246OkNsaWVudCopOwotICAgIHZvaWQgc2V0RW5hYmxlSGln
aEFjY3VyYWN5KElQQzo6Q29ubmVjdGlvbiYsIGJvb2wpOworI2lmIFBMQVRGT1JNKElPU19GQU1J
TFkpCisgICAgLy8gQ29yZUxvY2F0aW9uR2VvbG9jYXRpb25Qcm92aWRlcjo6Q2xpZW50CisgICAg
dm9pZCBwb3NpdGlvbkNoYW5nZWQoY29uc3QgU3RyaW5nJiB3ZWJzaXRlSWRlbnRpZmllciwgV2Vi
Q29yZTo6R2VvbG9jYXRpb25Qb3NpdGlvbkRhdGEmJikgZmluYWw7CisgICAgdm9pZCBlcnJvck9j
Y3VycmVkKGNvbnN0IFN0cmluZyYgd2Vic2l0ZUlkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgZXJy
b3JNZXNzYWdlKSBmaW5hbDsKKyAgICB2b2lkIHJlc2V0R2VvbG9jYXRpb24oY29uc3QgU3RyaW5n
JiB3ZWJzaXRlSWRlbnRpZmllcikgZmluYWw7CisjZW5kaWYKKworICAgIHN0cnVjdCBQZXJEb21h
aW5EYXRhIHsKKyAgICAgICAgV1RGX01BS0VfU1RSVUNUX0ZBU1RfQUxMT0NBVEVEOworICAgICAg
ICBXZWFrSGFzaFNldDxXZWJQcm9jZXNzUHJveHk+IHdhdGNoZXJzOworICAgICAgICBXZWFrSGFz
aFNldDxXZWJQcm9jZXNzUHJveHk+IHdhdGNoZXJzTmVlZGluZ0hpZ2hBY2N1cmFjeTsKKyAgICAg
ICAgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpHZW9sb2NhdGlvblBvc2l0aW9uRGF0YT4gbGFzdFBv
c2l0aW9uOworCisgICAgICAgIC8vIEZJWE1FOiBVc2UgZm9yIGFsbCBDb2NvYSBwb3J0cy4KKyNp
ZiBQTEFURk9STShJT1NfRkFNSUxZKQorICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8V2ViQ29yZTo6
Q29yZUxvY2F0aW9uR2VvbG9jYXRpb25Qcm92aWRlcj4gcHJvdmlkZXI7CisjZW5kaWYKKyAgICB9
OwogCi0gICAgSGFzaFNldDxjb25zdCBJUEM6OkNvbm5lY3Rpb246OkNsaWVudCo+IG1fdXBkYXRl
UmVxdWVzdGVyczsKLSAgICBIYXNoU2V0PGNvbnN0IElQQzo6Q29ubmVjdGlvbjo6Q2xpZW50Kj4g
bV9oaWdoQWNjdXJhY3lSZXF1ZXN0ZXJzOworICAgIGJvb2wgaXNVcGRhdGluZyhjb25zdCBQZXJE
b21haW5EYXRhJikgY29uc3Q7CisgICAgYm9vbCBpc0hpZ2hBY2N1cmFjeUVuYWJsZWQoY29uc3Qg
UGVyRG9tYWluRGF0YSYpIGNvbnN0OworICAgIHZvaWQgcHJvdmlkZXJTdGFydFVwZGF0aW5nKFBl
ckRvbWFpbkRhdGEmLCBjb25zdCBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiYpOworICAgIHZv
aWQgcHJvdmlkZXJTdG9wVXBkYXRpbmcoUGVyRG9tYWluRGF0YSYpOworICAgIHZvaWQgcHJvdmlk
ZXJTZXRFbmFibGVkSGlnaEFjY3VyYWN5KFBlckRvbWFpbkRhdGEmLCBib29sIGVuYWJsZWQpOwog
Ci0gICAgc3RkOjp1bmlxdWVfcHRyPEFQSTo6R2VvbG9jYXRpb25Qcm92aWRlcj4gbV9wcm92aWRl
cjsKLSAgICBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6Okdlb2xvY2F0aW9uUG9zaXRpb25EYXRhPiBt
X2xhc3RQb3NpdGlvbjsKKyAgICBIYXNoTWFwPFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluLCBz
dGQ6OnVuaXF1ZV9wdHI8UGVyRG9tYWluRGF0YT4+IG1fcGVyRG9tYWluRGF0YTsKKyAgICBzdGQ6
OnVuaXF1ZV9wdHI8QVBJOjpHZW9sb2NhdGlvblByb3ZpZGVyPiBtX2NsaWVudFByb3ZpZGVyOwog
fTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9XZWJHZW9sb2NhdGlvbk1hbmFnZXJQcm94eS5tZXNzYWdlcy5pbiBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL1dlYkdlb2xvY2F0aW9uTWFuYWdlclByb3h5Lm1lc3NhZ2VzLmluCmlu
ZGV4IGU1ZTljMjdkMTRhNWZiNzI2ZmNjMmM4MWZmM2UxNjVlYTNlODQwYmUuLjkwNDFhOTBjMjUw
ZjhhZGQ2OGJiMTNiM2FiYjU0YmViNjZjYjJkMjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL1dlYkdlb2xvY2F0aW9uTWFuYWdlclByb3h5Lm1lc3NhZ2VzLmluCisrKyBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkdlb2xvY2F0aW9uTWFuYWdlclByb3h5Lm1lc3NhZ2Vz
LmluCkBAIC0yMSw3ICsyMSw3IEBACiAjIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAKIG1lc3NhZ2VzIC0+IFdlYkdl
b2xvY2F0aW9uTWFuYWdlclByb3h5IHsKLSAgICBTdGFydFVwZGF0aW5nKFdlYktpdDo6V2ViUGFn
ZVByb3h5SWRlbnRpZmllciBwYWdlUHJveHlJRCwgU3RyaW5nIGF1dGhvcml6YXRpb25Ub2tlbikg
V2FudHNDb25uZWN0aW9uCi0gICAgU3RvcFVwZGF0aW5nKCkgV2FudHNDb25uZWN0aW9uCi0gICAg
U2V0RW5hYmxlSGlnaEFjY3VyYWN5KGJvb2wgZW5hYmxlZCkgV2FudHNDb25uZWN0aW9uCisgICAg
U3RhcnRVcGRhdGluZyhXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiByZWdpc3RyYWJsZURvbWFp
biwgV2ViS2l0OjpXZWJQYWdlUHJveHlJZGVudGlmaWVyIHBhZ2VQcm94eUlELCBTdHJpbmcgYXV0
aG9yaXphdGlvblRva2VuLCBib29sIGVuYWJsZUhpZ2hBY2N1cmFjeSkgV2FudHNDb25uZWN0aW9u
CisgICAgU3RvcFVwZGF0aW5nKFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluIHJlZ2lzdHJhYmxl
RG9tYWluKSBXYW50c0Nvbm5lY3Rpb24KKyAgICBTZXRFbmFibGVIaWdoQWNjdXJhY3koV2ViQ29y
ZTo6UmVnaXN0cmFibGVEb21haW4gcmVnaXN0cmFibGVEb21haW4sIGJvb2wgZW5hYmxlZCkgV2Fu
dHNDb25uZWN0aW9uCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQ
cm9jZXNzUG9vbC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5j
cHAKaW5kZXggZjYwZDNlY2QyY2E2ZjBmYzczNjcwYzM5ZGEyYWI3NjAwMzVmMmY3NC4uZmExNzQy
Y2YzMmRhOTk1MjczMjNkZmM3YzhiZjBhNzkwNjMwNDFmZSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL1dlYlByb2Nlc3NQb29sLmNwcApAQCAtNDMxLDkgKzQzMSw2IEBAIHZvaWQgV2ViUHJv
Y2Vzc1Bvb2w6OnNjcmVlblByb3BlcnRpZXNTdGF0ZUNoYW5nZWQoKQogCiB2b2lkIFdlYlByb2Nl
c3NQb29sOjpuZXR3b3JrUHJvY2Vzc0RpZFRlcm1pbmF0ZShOZXR3b3JrUHJvY2Vzc1Byb3h5JiBu
ZXR3b3JrUHJvY2Vzc1Byb3h5LCBOZXR3b3JrUHJvY2Vzc1Byb3h5OjpUZXJtaW5hdGlvblJlYXNv
biByZWFzb24pCiB7Ci0gICAgZm9yIChhdXRvJiBzdXBwbGVtZW50IDogbV9zdXBwbGVtZW50cy52
YWx1ZXMoKSkKLSAgICAgICAgc3VwcGxlbWVudC0+cHJvY2Vzc0RpZENsb3NlKCZuZXR3b3JrUHJv
Y2Vzc1Byb3h5KTsKLQogICAgIGlmIChyZWFzb24gPT0gTmV0d29ya1Byb2Nlc3NQcm94eTo6VGVy
bWluYXRpb25SZWFzb246OkNyYXNoKQogICAgICAgICBtX2NsaWVudC5uZXR3b3JrUHJvY2Vzc0Rp
ZENyYXNoKHRoaXMpOwogCkBAIC0xMDU3LDcgKzEwNTQsNyBAQCB2b2lkIFdlYlByb2Nlc3NQb29s
OjpkaXNjb25uZWN0UHJvY2VzcyhXZWJQcm9jZXNzUHJveHkmIHByb2Nlc3MpCiAgICAgaWYgKHBy
b2Nlc3MuaXNSdW5uaW5nV29ya2VycygpKQogICAgICAgICByZW1vdmVGcm9tUmVtb3RlV29ya2Vy
UHJvY2Vzc2VzKHByb2Nlc3MpOwogCi0gICAgc3RhdGljX2Nhc3Q8V2ViQ29udGV4dFN1cHBsZW1l
bnQqPihzdXBwbGVtZW50PFdlYkdlb2xvY2F0aW9uTWFuYWdlclByb3h5PigpKS0+cHJvY2Vzc0Rp
ZENsb3NlKCZwcm9jZXNzKTsKKyAgICBzdXBwbGVtZW50PFdlYkdlb2xvY2F0aW9uTWFuYWdlclBy
b3h5PigpLT53ZWJQcm9jZXNzSXNHb2luZ0F3YXkocHJvY2Vzcyk7CiAKICAgICBtX3Byb2Nlc3Nl
cy5yZW1vdmVGaXJzdChwcm9jZXNzKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvaW9zL1dLR2VvbG9jYXRpb25Qcm92aWRlcklPUy5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL2lvcy9XS0dlb2xvY2F0aW9uUHJvdmlkZXJJT1MubW0KaW5kZXggZjVlOWZkN2JjMzQx
Mjk3YWY3YjI0ZTY3NDE2MzMyY2Q5NmFkNzM5Yy4uZTYzOGFkOWM0ZThiNzM4YmYxNjUxNGQ3MTlk
YzFiZThhNzZiNTlkNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dL
R2VvbG9jYXRpb25Qcm92aWRlcklPUy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9p
b3MvV0tHZW9sb2NhdGlvblByb3ZpZGVySU9TLm1tCkBAIC01MSw3ICs1MSw2IEBACiAjaW1wb3J0
IDx3dGYvVVJMLmg+CiAKIC8vIEZJWE1FOiBSZW1vdmUgdXNlIG9mIFdlYktpdDEgZnJvbSBXZWJL
aXQyCi0jaW1wb3J0IDxXZWJLaXQvV2ViR2VvbG9jYXRpb25Db3JlTG9jYXRpb25Qcm92aWRlci5o
PgogI2ltcG9ydCA8V2ViS2l0L1dlYkFsbG93RGVueVBvbGljeUxpc3RlbmVyLmg+CiAKIEFMTE9X
X0RFUFJFQ0FURURfREVDTEFSQVRJT05TX0JFR0lOCkBAIC01OSw5ICs1OCw2IEBAIEFMTE9XX0RF
UFJFQ0FURURfREVDTEFSQVRJT05TX0JFR0lOCiBAaW50ZXJmYWNlIFdLR2VvbG9jYXRpb25Qcm92
aWRlcklPUyAoX1dLR2VvbG9jYXRpb25Db3JlTG9jYXRpb25MaXN0ZW5lcikgPF9XS0dlb2xvY2F0
aW9uQ29yZUxvY2F0aW9uTGlzdGVuZXI+CiBAZW5kCiAKLUBpbnRlcmZhY2UgV0tMZWdhY3lDb3Jl
TG9jYXRpb25Qcm92aWRlciA6IE5TT2JqZWN0PF9XS0dlb2xvY2F0aW9uQ29yZUxvY2F0aW9uUHJv
dmlkZXIsIFdlYkdlb2xvY2F0aW9uQ29yZUxvY2F0aW9uVXBkYXRlTGlzdGVuZXI+Ci1AZW5kCi0K
IEBpbnRlcmZhY2UgV0tXZWJBbGxvd0RlbnlQb2xpY3lMaXN0ZW5lciA6IE5TT2JqZWN0PFdlYkFs
bG93RGVueVBvbGljeUxpc3RlbmVyPgogLSAoaWQpaW5pdFdpdGhDb21wbGV0aW9uSGFuZGxlcjoo
RnVuY3Rpb248dm9pZChib29sKT4mJiljb21wbGV0aW9uSGFuZGxlcjsKIC0gKHZvaWQpZGVueU9u
bHlUaGlzUmVxdWVzdCBOT19SRVRVUk5fRFVFX1RPX0FTU0VSVDsKQEAgLTE0NiwyNSArMTQyLDQy
IEBAIC0gKGlkKWluaXRXaXRoUHJvY2Vzc1Bvb2w6KFdlYktpdDo6V2ViUHJvY2Vzc1Bvb2wmKXBy
b2Nlc3NQb29sCiAgICAgc2VsZiA9IFtzdXBlciBpbml0XTsKICAgICBpZiAoIXNlbGYpCiAgICAg
ICAgIHJldHVybiBuaWw7Ci0gICAgX2dlb2xvY2F0aW9uTWFuYWdlciA9IHByb2Nlc3NQb29sLnN1
cHBsZW1lbnQ8V2ViS2l0OjpXZWJHZW9sb2NhdGlvbk1hbmFnZXJQcm94eT4oKTsKLSAgICBXS0dl
b2xvY2F0aW9uUHJvdmlkZXJWMSBwcm92aWRlckNhbGxiYWNrID0gewotICAgICAgICB7IDEsIHNl
bGYgfSwKLSAgICAgICAgc3RhcnRVcGRhdGluZ0NhbGxiYWNrLAotICAgICAgICBzdG9wVXBkYXRp
bmdDYWxsYmFjaywKLSAgICAgICAgc2V0RW5hYmxlSGlnaEFjY3VyYWN5Ci0gICAgfTsKLSAgICBX
S0dlb2xvY2F0aW9uTWFuYWdlclNldFByb3ZpZGVyKHRvQVBJKF9nZW9sb2NhdGlvbk1hbmFnZXIu
Z2V0KCkpLCAmcHJvdmlkZXJDYWxsYmFjay5iYXNlKTsKLSAgICBfY29yZUxvY2F0aW9uUHJvdmlk
ZXIgPSB3cmFwcGVyKHByb2Nlc3NQb29sKS5fY29yZUxvY2F0aW9uUHJvdmlkZXIgPzogYWRvcHRO
UyhzdGF0aWNfY2FzdDxpZCA8X1dLR2VvbG9jYXRpb25Db3JlTG9jYXRpb25Qcm92aWRlcj4+KFtb
V0tMZWdhY3lDb3JlTG9jYXRpb25Qcm92aWRlciBhbGxvY10gaW5pdF0pKTsKLSAgICBbX2NvcmVM
b2NhdGlvblByb3ZpZGVyIHNldExpc3RlbmVyOnNlbGZdOworCisgICAgLy8gT24gaU9TLCBXZWJL
aXQgbm9ybWFsbHkgcHJvdmlkZXMgdGhlIGxvY2F0aW9uLiBIb3dldmVyLCBpZiB0aGUgY2xpZW50
IHNldHMgYSBjb3JlTG9jYXRpb25Qcm92aWRlciwgdGhlbiB3ZSB1c2UgdGhhdCBvbmUgaW5zdGVh
ZC4KKyAgICAvLyBUaGlzIGlzIHVzZWZ1bCBmb3IgV2ViS2l0VGVzdFJ1bm5lciB0byBwcm92aWRl
IGEgZHVtbXkgZ2VvbG9jYXRpb24gcHJvdmlkZXIuIEl0IGlzIGFsc28gdXNlZCBieSBjZXJ0YWlu
IGFwcHMgdG8gZGVueSBhbGwKKyAgICAvLyBnZW9sb2NhdGlvbiBhdXRob3JpemF0aW9uIGFzIGEg
d2F5IHRvIGRpc2FibGUgc3VwcG9ydCBmb3IgZ2VvbG9jYXRpb24uCisgICAgaWYgKHdyYXBwZXIo
cHJvY2Vzc1Bvb2wpLl9jb3JlTG9jYXRpb25Qcm92aWRlcikgeworICAgICAgICBfZ2VvbG9jYXRp
b25NYW5hZ2VyID0gcHJvY2Vzc1Bvb2wuc3VwcGxlbWVudDxXZWJLaXQ6OldlYkdlb2xvY2F0aW9u
TWFuYWdlclByb3h5PigpOworICAgICAgICBXS0dlb2xvY2F0aW9uUHJvdmlkZXJWMSBwcm92aWRl
ckNhbGxiYWNrID0geworICAgICAgICAgICAgeyAxLCBzZWxmIH0sCisgICAgICAgICAgICBzdGFy
dFVwZGF0aW5nQ2FsbGJhY2ssCisgICAgICAgICAgICBzdG9wVXBkYXRpbmdDYWxsYmFjaywKKyAg
ICAgICAgICAgIHNldEVuYWJsZUhpZ2hBY2N1cmFjeQorICAgICAgICB9OworICAgICAgICBXS0dl
b2xvY2F0aW9uTWFuYWdlclNldFByb3ZpZGVyKHRvQVBJKF9nZW9sb2NhdGlvbk1hbmFnZXIuZ2V0
KCkpLCAmcHJvdmlkZXJDYWxsYmFjay5iYXNlKTsKKyAgICAgICAgX2NvcmVMb2NhdGlvblByb3Zp
ZGVyID0gd3JhcHBlcihwcm9jZXNzUG9vbCkuX2NvcmVMb2NhdGlvblByb3ZpZGVyOworICAgICAg
ICBbX2NvcmVMb2NhdGlvblByb3ZpZGVyIHNldExpc3RlbmVyOnNlbGZdOworICAgIH0KICAgICBy
ZXR1cm4gc2VsZjsKIH0KIAogLSAodm9pZClkZWNpZGVQb2xpY3lGb3JHZW9sb2NhdGlvblJlcXVl
c3RGcm9tT3JpZ2luOihXZWJLaXQ6OkZyYW1lSW5mb0RhdGEmJilmcmFtZUluZm8gY29tcGxldGlv
bkhhbmRsZXI6KEZ1bmN0aW9uPHZvaWQoYm9vbCk+JiYpY29tcGxldGlvbkhhbmRsZXIgdmlldzoo
V0tXZWJWaWV3ICopY29udGVudFZpZXcKIHsKLSAgICAvLyBTdGVwIDE6IGFzayB0aGUgdXNlciBp
ZiB0aGUgYXBwIGNhbiB1c2UgR2VvbG9jYXRpb24uCisgICAgV2ViQ29yZTo6UmVnaXN0cmFibGVE
b21haW4gcmVnaXN0cmFibGVEb21haW4oZnJhbWVJbmZvLnNlY3VyaXR5T3JpZ2luKTsKICAgICBH
ZW9sb2NhdGlvblJlcXVlc3REYXRhIGdlb2xvY2F0aW9uUmVxdWVzdERhdGEgeyBbY29udGVudFZp
ZXcgVVJMXSwgV1RGTW92ZShmcmFtZUluZm8pLCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSwg
Y29udGVudFZpZXcgfTsKICAgICBfcmVxdWVzdHNXYWl0aW5nRm9yQ29yZUxvY2F0aW9uQXV0aG9y
aXphdGlvbi5hcHBlbmQoV1RGTW92ZShnZW9sb2NhdGlvblJlcXVlc3REYXRhKSk7Ci0gICAgW19j
b3JlTG9jYXRpb25Qcm92aWRlciByZXF1ZXN0R2VvbG9jYXRpb25BdXRob3JpemF0aW9uXTsKKyAg
ICBpZiAoX2NvcmVMb2NhdGlvblByb3ZpZGVyKSB7CisgICAgICAgIC8vIFN0ZXAgMTogYXNrIHRo
ZSB1c2VyIGlmIHRoZSBhcHAgY2FuIHVzZSBHZW9sb2NhdGlvbi4KKyAgICAgICAgW19jb3JlTG9j
YXRpb25Qcm92aWRlciByZXF1ZXN0R2VvbG9jYXRpb25BdXRob3JpemF0aW9uXTsKKyAgICB9IGVs
c2UgeworICAgICAgICAvLyBTdGVwIDE6IGFzayBDb3JlTG9jYXRpb24gaWYgdGhlIGFwcCBjYW4g
dXNlIEdlb2xvY2F0aW9uLgorICAgICAgICBXZWJDb3JlOjpDb3JlTG9jYXRpb25HZW9sb2NhdGlv
blByb3ZpZGVyOjpyZXF1ZXN0QXV0aG9yaXphdGlvbihyZWdpc3RyYWJsZURvbWFpbiwgW3NlbGYs
IHN0cm9uZ1NlbGYgPSByZXRhaW5QdHIoc2VsZildKGJvb2wgYXV0aG9yaXplZCkgeworICAgICAg
ICAgICAgaWYgKGF1dGhvcml6ZWQpCisgICAgICAgICAgICAgICAgW3NlbGYgZ2VvbG9jYXRpb25B
dXRob3JpemF0aW9uR3JhbnRlZF07CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAg
W3NlbGYgZ2VvbG9jYXRpb25BdXRob3JpemF0aW9uRGVuaWVkXTsKKyAgICAgICAgfSk7CisgICAg
fQogfQogQGVuZAogCkBAIC0xNzQsNyArMTg3LDcgQEAgQGltcGxlbWVudGF0aW9uIFdLR2VvbG9j
YXRpb25Qcm92aWRlcklPUyAoV2ViR2VvbG9jYXRpb25Db3JlTG9jYXRpb25VcGRhdGVMaXN0ZW4K
IAogLSAodm9pZClnZW9sb2NhdGlvbkF1dGhvcml6YXRpb25HcmFudGVkCiB7Ci0gICAgLy8gU3Rl
cCAyOiBhc2sgdGhlIHVzZXIgaWYgdGhpcyBwYXJ0aWN1bGFyIHBhZ2UgY2FuIHVzZSBnZWxvY2F0
aW9uLgorICAgIC8vIFN0ZXAgMjogYXNrIHRoZSB1c2VyIGlmIHRoaXMgcGFydGljdWxhciBwYWdl
IGNhbiB1c2UgZ2VvbG9jYXRpb24uCiAgICAgaWYgKF9yZXF1ZXN0c1dhaXRpbmdGb3JDb3JlTG9j
YXRpb25BdXRob3JpemF0aW9uLmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuOwogCkBAIC0yMjYs
ODEgKzIzOSw2IEBAIC0gKHZvaWQpcmVzZXRHZW9sb2NhdGlvbgogCiBAZW5kCiAKLSMgcHJhZ21h
IG1hcmsgLSBJbXBsZW1lbnRhdGlvbiBvZiBXS0xlZ2FjeUNvcmVMb2NhdGlvblByb3ZpZGVyCi0K
LUBpbXBsZW1lbnRhdGlvbiBXS0xlZ2FjeUNvcmVMb2NhdGlvblByb3ZpZGVyIHsKLSAgICBpZCA8
X1dLR2VvbG9jYXRpb25Db3JlTG9jYXRpb25MaXN0ZW5lcj4gX2xpc3RlbmVyOwotICAgIFJldGFp
blB0cjxXZWJHZW9sb2NhdGlvbkNvcmVMb2NhdGlvblByb3ZpZGVyPiBfcHJvdmlkZXI7Ci19Ci0K
LS8vIDxfV0tHZW9sb2NhdGlvbkNvcmVMb2NhdGlvblByb3ZpZGVyPiBNZXRob2RzCi0KLS0gKHZv
aWQpc2V0TGlzdGVuZXI6KGlkPF9XS0dlb2xvY2F0aW9uQ29yZUxvY2F0aW9uTGlzdGVuZXI+KWxp
c3RlbmVyCi17Ci0gICAgQVNTRVJUKGxpc3RlbmVyICYmICFfbGlzdGVuZXIgJiYgIV9wcm92aWRl
cik7Ci0gICAgX2xpc3RlbmVyID0gbGlzdGVuZXI7Ci0gICAgX3Byb3ZpZGVyID0gYWRvcHROUyhb
W1dlYkdlb2xvY2F0aW9uQ29yZUxvY2F0aW9uUHJvdmlkZXIgYWxsb2NdIGluaXRXaXRoTGlzdGVu
ZXI6c2VsZl0pOwotfQotCi0tICh2b2lkKXJlcXVlc3RHZW9sb2NhdGlvbkF1dGhvcml6YXRpb24K
LXsKLSAgICBBU1NFUlQoX3Byb3ZpZGVyKTsKLSAgICBbX3Byb3ZpZGVyIHJlcXVlc3RHZW9sb2Nh
dGlvbkF1dGhvcml6YXRpb25dOwotfQotCi0tICh2b2lkKXN0YXJ0Ci17Ci0gICAgQVNTRVJUKF9w
cm92aWRlcik7Ci0gICAgW19wcm92aWRlciBzdGFydF07Ci19Ci0KLS0gKHZvaWQpc3RvcAotewot
ICAgIEFTU0VSVChfcHJvdmlkZXIpOwotICAgIFtfcHJvdmlkZXIgc3RvcF07Ci19Ci0KLS0gKHZv
aWQpc2V0RW5hYmxlSGlnaEFjY3VyYWN5OihCT09MKWZsYWcKLXsKLSAgICBBU1NFUlQoX3Byb3Zp
ZGVyKTsKLSAgICBbX3Byb3ZpZGVyIHNldEVuYWJsZUhpZ2hBY2N1cmFjeTpmbGFnXTsKLX0KLQot
Ly8gPFdlYkdlb2xvY2F0aW9uQ29yZUxvY2F0aW9uVXBkYXRlTGlzdGVuZXI+IE1ldGhvZHMKLQot
LSAodm9pZClnZW9sb2NhdGlvbkF1dGhvcml6YXRpb25HcmFudGVkCi17Ci0gICAgQVNTRVJUKF9s
aXN0ZW5lcik7Ci0gICAgW19saXN0ZW5lciBnZW9sb2NhdGlvbkF1dGhvcml6YXRpb25HcmFudGVk
XTsKLX0KLQotLSAodm9pZClnZW9sb2NhdGlvbkF1dGhvcml6YXRpb25EZW5pZWQKLXsKLSAgICBB
U1NFUlQoX2xpc3RlbmVyKTsKLSAgICBbX2xpc3RlbmVyIGdlb2xvY2F0aW9uQXV0aG9yaXphdGlv
bkRlbmllZF07Ci19Ci0KLS0gKHZvaWQpcG9zaXRpb25DaGFuZ2VkOihXZWJDb3JlOjpHZW9sb2Nh
dGlvblBvc2l0aW9uRGF0YSYmKWNvcmVQb3NpdGlvbgotewotICAgIEFTU0VSVChfbGlzdGVuZXIp
OwotICAgIGF1dG8gcG9zaXRpb24gPSBXZWJLaXQ6OldlYkdlb2xvY2F0aW9uUG9zaXRpb246OmNy
ZWF0ZShXVEZNb3ZlKGNvcmVQb3NpdGlvbikpOwotICAgIFtfbGlzdGVuZXIgcG9zaXRpb25DaGFu
Z2VkOndyYXBwZXIocG9zaXRpb24uZ2V0KCkpXTsKLX0KLQotLSAodm9pZCllcnJvck9jY3VycmVk
OihOU1N0cmluZyAqKWVycm9yTWVzc2FnZQotewotICAgIEFTU0VSVChfbGlzdGVuZXIpOwotICAg
IFtfbGlzdGVuZXIgZXJyb3JPY2N1cnJlZDplcnJvck1lc3NhZ2VdOwotfQotCi0tICh2b2lkKXJl
c2V0R2VvbG9jYXRpb24KLXsKLSAgICBBU1NFUlQoX2xpc3RlbmVyKTsKLSAgICBbX2xpc3RlbmVy
IHJlc2V0R2VvbG9jYXRpb25dOwotfQotCi1AZW5kCi0KICMgcHJhZ21hIG1hcmsgLSBJbXBsZW1l
bnRhdGlvbiBvZiBXS1dlYkFsbG93RGVueVBvbGljeUxpc3RlbmVyCiBAaW1wbGVtZW50YXRpb24g
V0tXZWJBbGxvd0RlbnlQb2xpY3lMaXN0ZW5lciB7CiAgICAgRnVuY3Rpb248dm9pZChib29sKT4g
X2NvbXBsZXRpb25IYW5kbGVyOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJLaXQueGNv
ZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9w
cm9qZWN0LnBieHByb2oKaW5kZXggMWVjOGIyYjg1Y2UxZTU2NDM3ZjJlZmQxYzQ0YzA2OTE2MDY5
MTkzMC4uY2MyOTYwOTdhODc2MzhmYTZlZjNlODYwYjc4MzJlYWY4ZWI5ZWRiYSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9T
b3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC00MzE5LDYg
KzQzMTksNyBAQAogCQk0NkNFM0IxMDIzRDhDODNEMDAxNkE5NkEgLyogV2ViQmFja0ZvcndhcmRM
aXN0Q291bnRzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYkJhY2tGb3J3
YXJkTGlzdENvdW50cy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0NkQ0OEZDQzI3
OTlEN0REMDA3RDIwMTQgLyogV2ViU2hhcmVkV29ya2VyU2VydmVyVG9Db250ZXh0Q29ubmVjdGlv
bi5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXZWJTaGFyZWRXb3JrZXJTZXJ2ZXJUb0NvbnRleHRD
b25uZWN0aW9uLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDZENDhGQ0QyNzk5
RDdERTAwN0QyMDE0IC8qIFdlYlNoYXJlZFdvcmtlclNlcnZlclRvQ29udGV4dENvbm5lY3Rpb24u
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gV2ViU2hhcmVkV29ya2VyU2VydmVyVG9Db250ZXh0Q29ubmVjdGlv
bi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk0NkRBMjg1NzI3QjczRTc2MDA4OUQz
MzkgLyogV2ViR2VvbG9jYXRpb25NYW5hZ2VyUHJveHlDb2NvYS5jcHAgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBh
dGggPSBXZWJHZW9sb2NhdGlvbk1hbmFnZXJQcm94eUNvY29hLmNwcDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJNDZERjA2MzkxRjM5MDVFNTAwMTk4MEJCIC8qIE5ldHdvcmtDT1JTUHJl
ZmxpZ2h0Q2hlY2tlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBO
ZXR3b3JrQ09SU1ByZWZsaWdodENoZWNrZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQk0NkRGMDYzQTFGMzkwNUU1MDAxOTgwQkIgLyogTmV0d29ya0NPUlNQcmVmbGlnaHRDaGVj
a2VyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE5ldHdvcmtDT1JTUHJlZmxp
Z2h0Q2hlY2tlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0NkU5NzYwQTI3NTdG
NkM5MDBBQ0REMzcgLyogV2ViQnJvYWRjYXN0Q2hhbm5lbFJlZ2lzdHJ5Lm1lc3NhZ2VzLmluICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gdGV4dDsgcGF0aCA9IFdlYkJyb2FkY2FzdENoYW5uZWxSZWdpc3RyeS5tZXNzYWdl
cy5pbjsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTc2MTEsNiArNzYxMiw3IEBACiAJ
CQkJNTJENUExQUExQzU3NDk0RTAwREUzNEEzIC8qIFZpZGVvRnVsbHNjcmVlbk1hbmFnZXJQcm94
eS5oICovLAogCQkJCTUyRDVBMUFCMUM1NzQ5NEUwMERFMzRBMyAvKiBWaWRlb0Z1bGxzY3JlZW5N
YW5hZ2VyUHJveHkubWVzc2FnZXMuaW4gKi8sCiAJCQkJNTJENUExQUMxQzU3NDk0RTAwREUzNEEz
IC8qIFZpZGVvRnVsbHNjcmVlbk1hbmFnZXJQcm94eS5tbSAqLywKKwkJCQk0NkRBMjg1NzI3Qjcz
RTc2MDA4OUQzMzkgLyogV2ViR2VvbG9jYXRpb25NYW5hZ2VyUHJveHlDb2NvYS5jcHAgKi8sCiAJ
CQkJQzE4RjNBMTMyNTYzMzJBNjAwNzk3RTY2IC8qIFdlYkluc3BlY3RvclByZWZlcmVuY2VPYnNl
cnZlci5oICovLAogCQkJCUMxOEYzQTE0MjU2MzMzNDMwMDc5N0U2NiAvKiBXZWJJbnNwZWN0b3JQ
cmVmZXJlbmNlT2JzZXJ2ZXIubW0gKi8sCiAJCQkJQ0RGMUI5MTkyNjcwMjFENjAwMDdFQzEwIC8q
IFdlYktpdFN3aWZ0U29mdExpbmsuaCAqLywKQEAgLTEzNDg2LDYgKzEzNDg4LDcgQEAKIAkJCQlF
MThFNjkxODE2OUI2NjdCMDA5QjY2NzAgLyogU2VjSXRlbVNoaW1Qcm94eU1lc3NhZ2VzLmggaW4g
SGVhZGVycyAqLywKIAkJCQk1NzBBQjhGMzIwQUUzQkQ3MDBCOEJFODcgLyogU2VjS2V5UHJveHlT
dG9yZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNTE0RDlGNTcxOTExOUQzNTAwMDA2M0E3IC8qIFNl
cnZpY2VzQ29udHJvbGxlci5oIGluIEhlYWRlcnMgKi8sCisJCQkJNTE2NDY1ODAyN0E5Qzc3NDAw
RTFGMkJBIC8qIFNlcnZpY2VXb3JrZXJOb3RpZmljYXRpb25IYW5kbGVyLmggaW4gSGVhZGVycyAq
LywKIAkJCQkxQUZERTY1QTE5NTRBNDJCMDBDNDhGRkEgLyogU2Vzc2lvblN0YXRlLmggaW4gSGVh
ZGVycyAqLywKIAkJCQkxQTAwMkQ0OTE5NkIzNDVEMDBCOUFENDQgLyogU2Vzc2lvblN0YXRlQ29k
aW5nLmggaW4gSGVhZGVycyAqLywKIAkJCQk5M0U3OTlDRTI3NjA0OTdCMDA3NDAwOEEgLyogU2Vz
c2lvblN0b3JhZ2VNYW5hZ2VyLmggaW4gSGVhZGVycyAqLywKQEAgLTEzOTM0LDcgKzEzOTM3LDYg
QEAKIAkJCQlCQzRBNjI5NzE0NzMxM0EwMDA2QzY4MUEgLyogV0tDb25uZWN0aW9uUmVmLmggaW4g
SGVhZGVycyAqLywKIAkJCQlFNTk2REQ2QTI1MUU3MUQ0MDBDMjc1QTcgLyogV0tDb250YWN0UGlj
a2VyLmggaW4gSGVhZGVycyAqLywKIAkJCQk1Q0QyODY1NDFFNzIzNUIxMDA5NEZEQzggLyogV0tD
b250ZW50UnVsZUxpc3QuaCBpbiBIZWFkZXJzICovLAotCQkJCTUxNjQ2NTgwMjdBOUM3NzQwMEUx
RjJCQSAvKiBTZXJ2aWNlV29ya2VyTm90aWZpY2F0aW9uSGFuZGxlci5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJNUNEMjg2NTUxRTcyMzVCODAwOTRGREM4IC8qIFdLQ29udGVudFJ1bGVMaXN0SW50ZXJu
YWwuaCBpbiBIZWFkZXJzICovLAogCQkJCTVDNTEzOURCMjU5MjdEODAwMDlDM0UzMCAvKiBXS0Nv
bnRlbnRSdWxlTGlzdFByaXZhdGUuaCBpbiBIZWFkZXJzICovLAogCQkJCTVDRDI4NjUxMUU3MjM1
OTkwMDk0RkRDOCAvKiBXS0NvbnRlbnRSdWxlTGlzdFN0b3JlLmggaW4gSGVhZGVycyAqLywKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HZW9sb2NhdGlvbi9XZWJHZW9sb2Nh
dGlvbk1hbmFnZXIuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dlb2xvY2F0aW9uL1dl
Ykdlb2xvY2F0aW9uTWFuYWdlci5jcHAKaW5kZXggNWE5YzlmNGQyYTFjZDY2YTRiNjc1OWI1OTM4
N2VhMmNmNTViMmFhOC4uZjlkODc1YzE0OTQ0YWIwMzNlODdhOWZlMjY5NWQxNWY1NGY3ZmNjNyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dlb2xvY2F0aW9uL1dlYkdlb2xv
Y2F0aW9uTWFuYWdlci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dlb2xvY2F0
aW9uL1dlYkdlb2xvY2F0aW9uTWFuYWdlci5jcHAKQEAgLTM5LDYgKzM5LDE0IEBACiBuYW1lc3Bh
Y2UgV2ViS2l0IHsKIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCitzdGF0aWMgUmVnaXN0cmFi
bGVEb21haW4gcmVnaXN0cmFibGVEb21haW5Gb3JQYWdlKFdlYlBhZ2UmIHBhZ2UpCit7CisgICAg
YXV0byogZG9jdW1lbnQgPSBwYWdlLmNvcmVQYWdlKCkgPyBwYWdlLmNvcmVQYWdlKCktPm1haW5G
cmFtZSgpLmRvY3VtZW50KCkgOiBudWxscHRyOworICAgIGlmICghZG9jdW1lbnQpCisgICAgICAg
IHJldHVybiB7IH07CisgICAgcmV0dXJuIFJlZ2lzdHJhYmxlRG9tYWluIHsgZG9jdW1lbnQtPnVy
bCgpIH07Cit9CisKIGNvbnN0IGNoYXIqIFdlYkdlb2xvY2F0aW9uTWFuYWdlcjo6c3VwcGxlbWVu
dE5hbWUoKQogewogICAgIHJldHVybiAiV2ViR2VvbG9jYXRpb25NYW5hZ2VyIjsKQEAgLTUwLDg4
ICs1OCwxNDAgQEAgV2ViR2VvbG9jYXRpb25NYW5hZ2VyOjpXZWJHZW9sb2NhdGlvbk1hbmFnZXIo
V2ViUHJvY2VzcyYgcHJvY2VzcykKICAgICBtX3Byb2Nlc3MuYWRkTWVzc2FnZVJlY2VpdmVyKE1l
c3NhZ2VzOjpXZWJHZW9sb2NhdGlvbk1hbmFnZXI6Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSwgKnRo
aXMpOwogfQogCi12b2lkIFdlYkdlb2xvY2F0aW9uTWFuYWdlcjo6cmVnaXN0ZXJXZWJQYWdlKFdl
YlBhZ2UmIHBhZ2UsIGNvbnN0IFN0cmluZyYgYXV0aG9yaXphdGlvblRva2VuKQotewotICAgIGJv
b2wgd2FzVXBkYXRpbmcgPSBpc1VwZGF0aW5nKCk7CitXZWJHZW9sb2NhdGlvbk1hbmFnZXI6On5X
ZWJHZW9sb2NhdGlvbk1hbmFnZXIoKSA9IGRlZmF1bHQ7CiAKLSAgICBtX3BhZ2VTZXQuYWRkKHBh
Z2UpOwordm9pZCBXZWJHZW9sb2NhdGlvbk1hbmFnZXI6OnJlZ2lzdGVyV2ViUGFnZShXZWJQYWdl
JiBwYWdlLCBjb25zdCBTdHJpbmcmIGF1dGhvcml6YXRpb25Ub2tlbiwgYm9vbCBuZWVkc0hpZ2hB
Y2N1cmFjeSkKK3sKKyAgICBhdXRvIHJlZ2lzdHJhYmxlRG9tYWluID0gcmVnaXN0cmFibGVEb21h
aW5Gb3JQYWdlKHBhZ2UpOworICAgIGlmIChyZWdpc3RyYWJsZURvbWFpbi5zdHJpbmcoKS5pc0Vt
cHR5KCkpCisgICAgICAgIHJldHVybjsKKworICAgIGF1dG8mIHBhZ2VTZXRzID0gbV9wYWdlU2V0
cy5hZGQocmVnaXN0cmFibGVEb21haW4sIFBhZ2VTZXRzKCkpLml0ZXJhdG9yLT52YWx1ZTsKKyAg
ICBib29sIHdhc1VwZGF0aW5nID0gaXNVcGRhdGluZyhwYWdlU2V0cyk7CisgICAgYm9vbCBoaWdo
QWNjdXJhY3lXYXNFbmFibGVkID0gaXNIaWdoQWNjdXJhY3lFbmFibGVkKHBhZ2VTZXRzKTsKKwor
ICAgIHBhZ2VTZXRzLnBhZ2VTZXQuYWRkKHBhZ2UpOworICAgIGlmIChuZWVkc0hpZ2hBY2N1cmFj
eSkKKyAgICAgICAgcGFnZVNldHMuaGlnaEFjY3VyYWN5UGFnZVNldC5hZGQocGFnZSk7CisgICAg
bV9wYWdlVG9SZWdpc3RyYWJsZURvbWFpbi5hZGQoJnBhZ2UsIHJlZ2lzdHJhYmxlRG9tYWluKTsK
KworICAgIGlmICghd2FzVXBkYXRpbmcpIHsKKyAgICAgICAgbV9wcm9jZXNzLnBhcmVudFByb2Nl
c3NDb25uZWN0aW9uKCktPnNlbmQoTWVzc2FnZXM6OldlYkdlb2xvY2F0aW9uTWFuYWdlclByb3h5
OjpTdGFydFVwZGF0aW5nKHJlZ2lzdHJhYmxlRG9tYWluLCBwYWdlLndlYlBhZ2VQcm94eUlkZW50
aWZpZXIoKSwgYXV0aG9yaXphdGlvblRva2VuLCBuZWVkc0hpZ2hBY2N1cmFjeSksIDApOworICAg
ICAgICByZXR1cm47CisgICAgfQogCi0gICAgaWYgKCF3YXNVcGRhdGluZykKLSAgICAgICAgbV9w
cm9jZXNzLnBhcmVudFByb2Nlc3NDb25uZWN0aW9uKCktPnNlbmQoTWVzc2FnZXM6OldlYkdlb2xv
Y2F0aW9uTWFuYWdlclByb3h5OjpTdGFydFVwZGF0aW5nKHBhZ2Uud2ViUGFnZVByb3h5SWRlbnRp
ZmllcigpLCBhdXRob3JpemF0aW9uVG9rZW4pLCAwKTsKKyAgICBib29sIGhpZ2hBY2N1cmFjeVNo
b3VsZEJlRW5hYmxlZCA9IGlzSGlnaEFjY3VyYWN5RW5hYmxlZChwYWdlU2V0cyk7CisgICAgaWYg
KGhpZ2hBY2N1cmFjeVdhc0VuYWJsZWQgIT0gaGlnaEFjY3VyYWN5U2hvdWxkQmVFbmFibGVkKQor
ICAgICAgICBtX3Byb2Nlc3MucGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+c2VuZChNZXNzYWdl
czo6V2ViR2VvbG9jYXRpb25NYW5hZ2VyUHJveHk6OlNldEVuYWJsZUhpZ2hBY2N1cmFjeShyZWdp
c3RyYWJsZURvbWFpbiwgaGlnaEFjY3VyYWN5U2hvdWxkQmVFbmFibGVkKSwgMCk7CiB9CiAKIHZv
aWQgV2ViR2VvbG9jYXRpb25NYW5hZ2VyOjp1bnJlZ2lzdGVyV2ViUGFnZShXZWJQYWdlJiBwYWdl
KQogewotICAgIGJvb2wgaGlnaEFjY3VyYWN5V2FzRW5hYmxlZCA9IGlzSGlnaEFjY3VyYWN5RW5h
YmxlZCgpOworICAgIGF1dG8gcmVnaXN0cmFibGVEb21haW4gPSBtX3BhZ2VUb1JlZ2lzdHJhYmxl
RG9tYWluLnRha2UoJnBhZ2UpOworICAgIGlmIChyZWdpc3RyYWJsZURvbWFpbi5zdHJpbmcoKS5p
c0VtcHR5KCkpCisgICAgICAgIHJldHVybjsKKworICAgIGF1dG8gaXQgPSBtX3BhZ2VTZXRzLmZp
bmQocmVnaXN0cmFibGVEb21haW4pOworICAgIGlmIChpdCA9PSBtX3BhZ2VTZXRzLmVuZCgpKQor
ICAgICAgICByZXR1cm47CiAKLSAgICBtX3BhZ2VTZXQucmVtb3ZlKHBhZ2UpOwotICAgIG1faGln
aEFjY3VyYWN5UGFnZVNldC5yZW1vdmUocGFnZSk7CisgICAgYXV0byYgcGFnZVNldHMgPSBpdC0+
dmFsdWU7CisgICAgYm9vbCBoaWdoQWNjdXJhY3lXYXNFbmFibGVkID0gaXNIaWdoQWNjdXJhY3lF
bmFibGVkKHBhZ2VTZXRzKTsKIAotICAgIGlmICghaXNVcGRhdGluZygpKQotICAgICAgICBtX3By
b2Nlc3MucGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+c2VuZChNZXNzYWdlczo6V2ViR2VvbG9j
YXRpb25NYW5hZ2VyUHJveHk6OlN0b3BVcGRhdGluZygpLCAwKTsKKyAgICBwYWdlU2V0cy5wYWdl
U2V0LnJlbW92ZShwYWdlKTsKKyAgICBwYWdlU2V0cy5oaWdoQWNjdXJhY3lQYWdlU2V0LnJlbW92
ZShwYWdlKTsKKworICAgIGlmICghaXNVcGRhdGluZyhwYWdlU2V0cykpCisgICAgICAgIG1fcHJv
Y2Vzcy5wYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpLT5zZW5kKE1lc3NhZ2VzOjpXZWJHZW9sb2Nh
dGlvbk1hbmFnZXJQcm94eTo6U3RvcFVwZGF0aW5nKHJlZ2lzdHJhYmxlRG9tYWluKSwgMCk7CiAg
ICAgZWxzZSB7Ci0gICAgICAgIGJvb2wgaGlnaEFjY3VyYWN5U2hvdWxkQmVFbmFibGVkID0gaXNI
aWdoQWNjdXJhY3lFbmFibGVkKCk7CisgICAgICAgIGJvb2wgaGlnaEFjY3VyYWN5U2hvdWxkQmVF
bmFibGVkID0gaXNIaWdoQWNjdXJhY3lFbmFibGVkKHBhZ2VTZXRzKTsKICAgICAgICAgaWYgKGhp
Z2hBY2N1cmFjeVdhc0VuYWJsZWQgIT0gaGlnaEFjY3VyYWN5U2hvdWxkQmVFbmFibGVkKQotICAg
ICAgICAgICAgbV9wcm9jZXNzLnBhcmVudFByb2Nlc3NDb25uZWN0aW9uKCktPnNlbmQoTWVzc2Fn
ZXM6OldlYkdlb2xvY2F0aW9uTWFuYWdlclByb3h5OjpTZXRFbmFibGVIaWdoQWNjdXJhY3koaGln
aEFjY3VyYWN5U2hvdWxkQmVFbmFibGVkKSwgMCk7CisgICAgICAgICAgICBtX3Byb2Nlc3MucGFy
ZW50UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+c2VuZChNZXNzYWdlczo6V2ViR2VvbG9jYXRpb25NYW5h
Z2VyUHJveHk6OlNldEVuYWJsZUhpZ2hBY2N1cmFjeShyZWdpc3RyYWJsZURvbWFpbiwgaGlnaEFj
Y3VyYWN5U2hvdWxkQmVFbmFibGVkKSwgMCk7CiAgICAgfQorCisgICAgaWYgKHBhZ2VTZXRzLnBh
Z2VTZXQuY29tcHV0ZXNFbXB0eSgpICYmIHBhZ2VTZXRzLmhpZ2hBY2N1cmFjeVBhZ2VTZXQuY29t
cHV0ZXNFbXB0eSgpKQorICAgICAgICBtX3BhZ2VTZXRzLnJlbW92ZShpdCk7CiB9CiAKIHZvaWQg
V2ViR2VvbG9jYXRpb25NYW5hZ2VyOjpzZXRFbmFibGVIaWdoQWNjdXJhY3lGb3JQYWdlKFdlYlBh
Z2UmIHBhZ2UsIGJvb2wgZW5hYmxlZCkKIHsKLSAgICBib29sIGhpZ2hBY2N1cmFjeVdhc0VuYWJs
ZWQgPSBpc0hpZ2hBY2N1cmFjeUVuYWJsZWQoKTsKKyAgICBhdXRvIHJlZ2lzdHJhYmxlRG9tYWlu
ID0gbV9wYWdlVG9SZWdpc3RyYWJsZURvbWFpbi5nZXQoJnBhZ2UpOworICAgIGlmIChyZWdpc3Ry
YWJsZURvbWFpbi5zdHJpbmcoKS5pc0VtcHR5KCkpCisgICAgICAgIHJldHVybjsKKworICAgIGF1
dG8gaXQgPSBtX3BhZ2VTZXRzLmZpbmQocmVnaXN0cmFibGVEb21haW4pOworICAgIEFTU0VSVChp
dCAhPSBtX3BhZ2VTZXRzLmVuZCgpKTsKKyAgICBpZiAoaXQgPT0gbV9wYWdlU2V0cy5lbmQoKSkK
KyAgICAgICAgcmV0dXJuOworCisgICAgYXV0byYgcGFnZVNldHMgPSBpdC0+dmFsdWU7CisgICAg
Ym9vbCBoaWdoQWNjdXJhY3lXYXNFbmFibGVkID0gaXNIaWdoQWNjdXJhY3lFbmFibGVkKHBhZ2VT
ZXRzKTsKIAogICAgIGlmIChlbmFibGVkKQotICAgICAgICBtX2hpZ2hBY2N1cmFjeVBhZ2VTZXQu
YWRkKHBhZ2UpOworICAgICAgICBwYWdlU2V0cy5oaWdoQWNjdXJhY3lQYWdlU2V0LmFkZChwYWdl
KTsKICAgICBlbHNlCi0gICAgICAgIG1faGlnaEFjY3VyYWN5UGFnZVNldC5yZW1vdmUocGFnZSk7
CisgICAgICAgIHBhZ2VTZXRzLmhpZ2hBY2N1cmFjeVBhZ2VTZXQucmVtb3ZlKHBhZ2UpOwogCi0g
ICAgYm9vbCBoaWdoQWNjdXJhY3lTaG91bGRCZUVuYWJsZWQgPSBpc0hpZ2hBY2N1cmFjeUVuYWJs
ZWQoKTsKLSAgICBpZiAoaGlnaEFjY3VyYWN5V2FzRW5hYmxlZCAhPSBoaWdoQWNjdXJhY3lTaG91
bGRCZUVuYWJsZWQpCi0gICAgICAgIG1fcHJvY2Vzcy5wYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigp
LT5zZW5kKE1lc3NhZ2VzOjpXZWJHZW9sb2NhdGlvbk1hbmFnZXJQcm94eTo6U2V0RW5hYmxlSGln
aEFjY3VyYWN5KGhpZ2hBY2N1cmFjeVNob3VsZEJlRW5hYmxlZCksIDApOworICAgIGJvb2wgaGln
aEFjY3VyYWN5U2hvdWxkQmVFbmFibGVkID0gaXNIaWdoQWNjdXJhY3lFbmFibGVkKHBhZ2VTZXRz
KTsKKyAgICBpZiAoaGlnaEFjY3VyYWN5V2FzRW5hYmxlZCAhPSBpc0hpZ2hBY2N1cmFjeUVuYWJs
ZWQocGFnZVNldHMpKQorICAgICAgICBtX3Byb2Nlc3MucGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24o
KS0+c2VuZChNZXNzYWdlczo6V2ViR2VvbG9jYXRpb25NYW5hZ2VyUHJveHk6OlNldEVuYWJsZUhp
Z2hBY2N1cmFjeShyZWdpc3RyYWJsZURvbWFpbiwgaGlnaEFjY3VyYWN5U2hvdWxkQmVFbmFibGVk
KSwgMCk7CiB9CiAKLXZvaWQgV2ViR2VvbG9jYXRpb25NYW5hZ2VyOjpkaWRDaGFuZ2VQb3NpdGlv
bihjb25zdCBHZW9sb2NhdGlvblBvc2l0aW9uRGF0YSYgcG9zaXRpb24pCit2b2lkIFdlYkdlb2xv
Y2F0aW9uTWFuYWdlcjo6ZGlkQ2hhbmdlUG9zaXRpb24oY29uc3QgV2ViQ29yZTo6UmVnaXN0cmFi
bGVEb21haW4mIHJlZ2lzdHJhYmxlRG9tYWluLCBjb25zdCBHZW9sb2NhdGlvblBvc2l0aW9uRGF0
YSYgcG9zaXRpb24pCiB7CiAjaWYgRU5BQkxFKEdFT0xPQ0FUSU9OKQotICAgIGZvciAoYXV0byYg
cGFnZSA6IGNvcHlUb1ZlY3RvcihtX3BhZ2VTZXQpKSB7Ci0gICAgICAgIGlmIChwYWdlLT5jb3Jl
UGFnZSgpKQotICAgICAgICAgICAgR2VvbG9jYXRpb25Db250cm9sbGVyOjpmcm9tKHBhZ2UtPmNv
cmVQYWdlKCkpLT5wb3NpdGlvbkNoYW5nZWQocG9zaXRpb24pOworICAgIGlmIChhdXRvIGl0ID0g
bV9wYWdlU2V0cy5maW5kKHJlZ2lzdHJhYmxlRG9tYWluKTsgaXQgIT0gbV9wYWdlU2V0cy5lbmQo
KSkgeworICAgICAgICBmb3IgKGF1dG8mIHBhZ2UgOiBjb3B5VG9WZWN0b3IoaXQtPnZhbHVlLnBh
Z2VTZXQpKSB7CisgICAgICAgICAgICBpZiAocGFnZS0+Y29yZVBhZ2UoKSkKKyAgICAgICAgICAg
ICAgICBHZW9sb2NhdGlvbkNvbnRyb2xsZXI6OmZyb20ocGFnZS0+Y29yZVBhZ2UoKSktPnBvc2l0
aW9uQ2hhbmdlZChwb3NpdGlvbik7CisgICAgICAgIH0KICAgICB9CiAjZWxzZQorICAgIFVOVVNF
RF9QQVJBTShyZWdpc3RyYWJsZURvbWFpbik7CiAgICAgVU5VU0VEX1BBUkFNKHBvc2l0aW9uKTsK
ICNlbmRpZiAvLyBFTkFCTEUoR0VPTE9DQVRJT04pCiB9CiAKLXZvaWQgV2ViR2VvbG9jYXRpb25N
YW5hZ2VyOjpkaWRGYWlsVG9EZXRlcm1pbmVQb3NpdGlvbihjb25zdCBTdHJpbmcmIGVycm9yTWVz
c2FnZSkKK3ZvaWQgV2ViR2VvbG9jYXRpb25NYW5hZ2VyOjpkaWRGYWlsVG9EZXRlcm1pbmVQb3Np
dGlvbihjb25zdCBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiYgcmVnaXN0cmFibGVEb21haW4s
IGNvbnN0IFN0cmluZyYgZXJyb3JNZXNzYWdlKQogewogI2lmIEVOQUJMRShHRU9MT0NBVElPTikK
LSAgICAvLyBGSVhNRTogQWRkIGxvY2FsaXplZCBlcnJvciBzdHJpbmcuCi0gICAgYXV0byBlcnJv
ciA9IEdlb2xvY2F0aW9uRXJyb3I6OmNyZWF0ZShHZW9sb2NhdGlvbkVycm9yOjpQb3NpdGlvblVu
YXZhaWxhYmxlLCBlcnJvck1lc3NhZ2UpOwotCi0gICAgZm9yIChhdXRvJiBwYWdlIDogY29weVRv
VmVjdG9yKG1fcGFnZVNldCkpIHsKLSAgICAgICAgaWYgKHBhZ2UtPmNvcmVQYWdlKCkpCi0gICAg
ICAgICAgICBHZW9sb2NhdGlvbkNvbnRyb2xsZXI6OmZyb20ocGFnZS0+Y29yZVBhZ2UoKSktPmVy
cm9yT2NjdXJyZWQoZXJyb3IuZ2V0KCkpOworICAgIGlmIChhdXRvIGl0ID0gbV9wYWdlU2V0cy5m
aW5kKHJlZ2lzdHJhYmxlRG9tYWluKTsgaXQgIT0gbV9wYWdlU2V0cy5lbmQoKSkgeworICAgICAg
ICAvLyBGSVhNRTogQWRkIGxvY2FsaXplZCBlcnJvciBzdHJpbmcuCisgICAgICAgIGF1dG8gZXJy
b3IgPSBHZW9sb2NhdGlvbkVycm9yOjpjcmVhdGUoR2VvbG9jYXRpb25FcnJvcjo6UG9zaXRpb25V
bmF2YWlsYWJsZSwgZXJyb3JNZXNzYWdlKTsKKworICAgICAgICBmb3IgKGF1dG8mIHBhZ2UgOiBj
b3B5VG9WZWN0b3IoaXQtPnZhbHVlLnBhZ2VTZXQpKSB7CisgICAgICAgICAgICBpZiAocGFnZS0+
Y29yZVBhZ2UoKSkKKyAgICAgICAgICAgICAgICBHZW9sb2NhdGlvbkNvbnRyb2xsZXI6OmZyb20o
cGFnZS0+Y29yZVBhZ2UoKSktPmVycm9yT2NjdXJyZWQoZXJyb3IuZ2V0KCkpOworICAgICAgICB9
CiAgICAgfQogI2Vsc2UKKyAgICBVTlVTRURfUEFSQU0ocmVnaXN0cmFibGVEb21haW4pOwogICAg
IFVOVVNFRF9QQVJBTShlcnJvck1lc3NhZ2UpOwogI2VuZGlmIC8vIEVOQUJMRShHRU9MT0NBVElP
TikKIH0KIAotI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCi12b2lkIFdlYkdlb2xvY2F0aW9uTWFu
YWdlcjo6cmVzZXRQZXJtaXNzaW9ucygpCitib29sIFdlYkdlb2xvY2F0aW9uTWFuYWdlcjo6aXNV
cGRhdGluZyhjb25zdCBQYWdlU2V0cyYgcGFnZVNldHMpIGNvbnN0CiB7Ci0gICAgbV9wcm9jZXNz
LnJlc2V0QWxsR2VvbG9jYXRpb25QZXJtaXNzaW9ucygpOworICAgIHJldHVybiAhcGFnZVNldHMu
cGFnZVNldC5jb21wdXRlc0VtcHR5KCk7CiB9Ci0jZW5kaWYgLy8gUExBVEZPUk0oSU9TX0ZBTUlM
WSkKIAotYm9vbCBXZWJHZW9sb2NhdGlvbk1hbmFnZXI6OmlzVXBkYXRpbmcoKSBjb25zdAorYm9v
bCBXZWJHZW9sb2NhdGlvbk1hbmFnZXI6OmlzSGlnaEFjY3VyYWN5RW5hYmxlZChjb25zdCBQYWdl
U2V0cyYgcGFnZVNldHMpIGNvbnN0CiB7Ci0gICAgcmV0dXJuICFtX3BhZ2VTZXQuY29tcHV0ZXNF
bXB0eSgpOworICAgIHJldHVybiAhcGFnZVNldHMuaGlnaEFjY3VyYWN5UGFnZVNldC5jb21wdXRl
c0VtcHR5KCk7CiB9CiAKLWJvb2wgV2ViR2VvbG9jYXRpb25NYW5hZ2VyOjppc0hpZ2hBY2N1cmFj
eUVuYWJsZWQoKSBjb25zdAorI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCit2b2lkIFdlYkdlb2xv
Y2F0aW9uTWFuYWdlcjo6cmVzZXRQZXJtaXNzaW9ucyhjb25zdCBXZWJDb3JlOjpSZWdpc3RyYWJs
ZURvbWFpbiYgcmVnaXN0cmFibGVEb21haW4pCiB7Ci0gICAgcmV0dXJuICFtX2hpZ2hBY2N1cmFj
eVBhZ2VTZXQuY29tcHV0ZXNFbXB0eSgpOworICAgIGF1dG8gaXQgPSBtX3BhZ2VTZXRzLmZpbmQo
cmVnaXN0cmFibGVEb21haW4pOworICAgIGlmIChpdCAhPSBtX3BhZ2VTZXRzLmVuZCgpKQorICAg
ICAgICByZXR1cm47CisKKyAgICBmb3IgKGF1dG8mIHBhZ2UgOiBjb3B5VG9WZWN0b3IoaXQtPnZh
bHVlLnBhZ2VTZXQpKSB7CisgICAgICAgIGlmIChhdXRvKiBtYWluRnJhbWUgPSBwYWdlLT5jb3Jl
UGFnZSgpID8gJnBhZ2UtPmNvcmVQYWdlKCktPm1haW5GcmFtZSgpIDogbnVsbHB0cikKKyAgICAg
ICAgICAgIG1haW5GcmFtZS0+cmVzZXRBbGxHZW9sb2NhdGlvblBlcm1pc3Npb24oKTsKKyAgICB9
CiB9CisjZW5kaWYgLy8gUExBVEZPUk0oSU9TX0ZBTUlMWSkKIAogfSAvLyBuYW1lc3BhY2UgV2Vi
S2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR2VvbG9jYXRpb24vV2Vi
R2VvbG9jYXRpb25NYW5hZ2VyLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR2VvbG9jYXRp
b24vV2ViR2VvbG9jYXRpb25NYW5hZ2VyLmgKaW5kZXggNDQ4MzU5NjM1ODc4MjE5N2NjYmE1OTI4
ZWZlNjI1MTUyNmMxODUxNS4uY2I2NTg4YzZlNzE4OGJlZmJkNTUxMjNkNGE1NTliMmIwYjMxYTkz
YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dlb2xvY2F0aW9uL1dlYkdl
b2xvY2F0aW9uTWFuYWdlci5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HZW9sb2Nh
dGlvbi9XZWJHZW9sb2NhdGlvbk1hbmFnZXIuaApAQCAtMjgsNiArMjgsNyBAQAogI2luY2x1ZGUg
Ik1lc3NhZ2VSZWNlaXZlci5oIgogI2luY2x1ZGUgIldlYkdlb2xvY2F0aW9uUG9zaXRpb24uaCIK
ICNpbmNsdWRlICJXZWJQcm9jZXNzU3VwcGxlbWVudC5oIgorI2luY2x1ZGUgPFdlYkNvcmUvUmVn
aXN0cmFibGVEb21haW4uaD4KICNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgogI2luY2x1ZGUgPHd0
Zi9Ob25jb3B5YWJsZS5oPgogI2luY2x1ZGUgPHd0Zi9XZWFrSGFzaFNldC5oPgpAQCAtNDcsMzEg
KzQ4LDM0IEBAIGNsYXNzIFdlYkdlb2xvY2F0aW9uTWFuYWdlciA6IHB1YmxpYyBXZWJQcm9jZXNz
U3VwcGxlbWVudCwgcHVibGljIElQQzo6TWVzc2FnZVJlCiAgICAgV1RGX01BS0VfTk9OQ09QWUFC
TEUoV2ViR2VvbG9jYXRpb25NYW5hZ2VyKTsKIHB1YmxpYzoKICAgICBleHBsaWNpdCBXZWJHZW9s
b2NhdGlvbk1hbmFnZXIoV2ViUHJvY2VzcyYpOworICAgIH5XZWJHZW9sb2NhdGlvbk1hbmFnZXIo
KTsKIAogICAgIHN0YXRpYyBjb25zdCBjaGFyKiBzdXBwbGVtZW50TmFtZSgpOwogCi0gICAgdm9p
ZCByZWdpc3RlcldlYlBhZ2UoV2ViUGFnZSYsIGNvbnN0IFN0cmluZyYgYXV0aG9yaXphdGlvblRv
a2VuKTsKKyAgICB2b2lkIHJlZ2lzdGVyV2ViUGFnZShXZWJQYWdlJiwgY29uc3QgU3RyaW5nJiBh
dXRob3JpemF0aW9uVG9rZW4sIGJvb2wgbmVlZHNIaWdoQWNjdXJhY3kpOwogICAgIHZvaWQgdW5y
ZWdpc3RlcldlYlBhZ2UoV2ViUGFnZSYpOwogICAgIHZvaWQgc2V0RW5hYmxlSGlnaEFjY3VyYWN5
Rm9yUGFnZShXZWJQYWdlJiwgYm9vbCk7CiAKLSAgICB2b2lkIHJlcXVlc3RQZXJtaXNzaW9uKFdl
YkNvcmU6Okdlb2xvY2F0aW9uJik7Ci0KIHByaXZhdGU6CiAgICAgLy8gSVBDOjpNZXNzYWdlUmVj
ZWl2ZXIKICAgICB2b2lkIGRpZFJlY2VpdmVNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYsIElQQzo6
RGVjb2RlciYpIG92ZXJyaWRlOwogCi0gICAgYm9vbCBpc1VwZGF0aW5nKCkgY29uc3Q7Ci0gICAg
Ym9vbCBpc0hpZ2hBY2N1cmFjeUVuYWJsZWQoKSBjb25zdDsKLQotICAgIHZvaWQgZGlkQ2hhbmdl
UG9zaXRpb24oY29uc3QgV2ViQ29yZTo6R2VvbG9jYXRpb25Qb3NpdGlvbkRhdGEmKTsKLSAgICB2
b2lkIGRpZEZhaWxUb0RldGVybWluZVBvc2l0aW9uKGNvbnN0IFN0cmluZyYgZXJyb3JNZXNzYWdl
KTsKKyAgICB2b2lkIGRpZENoYW5nZVBvc2l0aW9uKGNvbnN0IFdlYkNvcmU6OlJlZ2lzdHJhYmxl
RG9tYWluJiwgY29uc3QgV2ViQ29yZTo6R2VvbG9jYXRpb25Qb3NpdGlvbkRhdGEmKTsKKyAgICB2
b2lkIGRpZEZhaWxUb0RldGVybWluZVBvc2l0aW9uKGNvbnN0IFdlYkNvcmU6OlJlZ2lzdHJhYmxl
RG9tYWluJiwgY29uc3QgU3RyaW5nJiBlcnJvck1lc3NhZ2UpOwogI2lmIFBMQVRGT1JNKElPU19G
QU1JTFkpCi0gICAgdm9pZCByZXNldFBlcm1pc3Npb25zKCk7CisgICAgdm9pZCByZXNldFBlcm1p
c3Npb25zKGNvbnN0IFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluJik7CiAjZW5kaWYgLy8gUExB
VEZPUk0oSU9TX0ZBTUlMWSkKIAorICAgIHN0cnVjdCBQYWdlU2V0cyB7CisgICAgICAgIFdlYWtI
YXNoU2V0PFdlYlBhZ2U+IHBhZ2VTZXQ7CisgICAgICAgIFdlYWtIYXNoU2V0PFdlYlBhZ2U+IGhp
Z2hBY2N1cmFjeVBhZ2VTZXQ7CisgICAgfTsKKyAgICBib29sIGlzVXBkYXRpbmcoY29uc3QgUGFn
ZVNldHMmKSBjb25zdDsKKyAgICBib29sIGlzSGlnaEFjY3VyYWN5RW5hYmxlZChjb25zdCBQYWdl
U2V0cyYpIGNvbnN0OworCiAgICAgV2ViUHJvY2VzcyYgbV9wcm9jZXNzOwotICAgIFdlYWtIYXNo
U2V0PFdlYlBhZ2U+IG1fcGFnZVNldDsKLSAgICBXZWFrSGFzaFNldDxXZWJQYWdlPiBtX2hpZ2hB
Y2N1cmFjeVBhZ2VTZXQ7CisgICAgSGFzaE1hcDxXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiwg
UGFnZVNldHM+IG1fcGFnZVNldHM7CisgICAgSGFzaE1hcDxXZWJQYWdlKiwgV2ViQ29yZTo6UmVn
aXN0cmFibGVEb21haW4+IG1fcGFnZVRvUmVnaXN0cmFibGVEb21haW47CiB9OwogCiB9IC8vIG5h
bWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HZW9s
b2NhdGlvbi9XZWJHZW9sb2NhdGlvbk1hbmFnZXIubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvR2VvbG9jYXRpb24vV2ViR2VvbG9jYXRpb25NYW5hZ2VyLm1lc3NhZ2VzLmlu
CmluZGV4IDc5ZjNiNGNlNGVmY2FmMzQ4ODU3ZDk5MzMyNTNkODk1NGYwZjFiODcuLjZmY2M2MGQy
ZTA4ZTI2ZWFiNzNjMWY3MWNkODg0MmRjNTEwNTJkMTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9HZW9sb2NhdGlvbi9XZWJHZW9sb2NhdGlvbk1hbmFnZXIubWVzc2FnZXMu
aW4KKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dlb2xvY2F0aW9uL1dlYkdlb2xvY2F0
aW9uTWFuYWdlci5tZXNzYWdlcy5pbgpAQCAtMjEsOSArMjEsOSBAQAogIyBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgog
CiBtZXNzYWdlcyAtPiBXZWJHZW9sb2NhdGlvbk1hbmFnZXIgTm90UmVmQ291bnRlZCB7Ci0gICAg
RGlkQ2hhbmdlUG9zaXRpb24oV2ViQ29yZTo6R2VvbG9jYXRpb25Qb3NpdGlvbkRhdGEgcG9zaXRp
b24pOwotICAgIERpZEZhaWxUb0RldGVybWluZVBvc2l0aW9uKFN0cmluZyBlcnJvck1lc3NhZ2Up
OworICAgIERpZENoYW5nZVBvc2l0aW9uKFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluIHJlZ2lz
dHJhYmxlRG9tYWluLCBXZWJDb3JlOjpHZW9sb2NhdGlvblBvc2l0aW9uRGF0YSBwb3NpdGlvbik7
CisgICAgRGlkRmFpbFRvRGV0ZXJtaW5lUG9zaXRpb24oV2ViQ29yZTo6UmVnaXN0cmFibGVEb21h
aW4gcmVnaXN0cmFibGVEb21haW4sIFN0cmluZyBlcnJvck1lc3NhZ2UpOwogI2lmIFBMQVRGT1JN
KElPU19GQU1JTFkpCi0gICAgUmVzZXRQZXJtaXNzaW9ucygpOworICAgIFJlc2V0UGVybWlzc2lv
bnMoV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4gcmVnaXN0cmFibGVEb21haW4pOwogI2VuZGlm
CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQv
V2ViR2VvbG9jYXRpb25DbGllbnQuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNv
cmVTdXBwb3J0L1dlYkdlb2xvY2F0aW9uQ2xpZW50LmNwcAppbmRleCBlYTAyZjJhYzE2ZjczMWJm
NTY0MmY4Njc4ZDg2YTQ5ODExZDhjMzg2Li5kMThkZjdlZmFmNTZlZmNmYzhkMTY5OWM5MWNkMjZi
Njg5YmM4MjZhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1
cHBvcnQvV2ViR2VvbG9jYXRpb25DbGllbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJHZW9sb2NhdGlvbkNsaWVudC5jcHAKQEAgLTQ4LDkgKzQ4
LDkgQEAgdm9pZCBXZWJHZW9sb2NhdGlvbkNsaWVudDo6Z2VvbG9jYXRpb25EZXN0cm95ZWQoKQog
ICAgIGRlbGV0ZSB0aGlzOwogfQogCi12b2lkIFdlYkdlb2xvY2F0aW9uQ2xpZW50OjpzdGFydFVw
ZGF0aW5nKGNvbnN0IFN0cmluZyYgYXV0aG9yaXphdGlvblRva2VuKQordm9pZCBXZWJHZW9sb2Nh
dGlvbkNsaWVudDo6c3RhcnRVcGRhdGluZyhjb25zdCBTdHJpbmcmIGF1dGhvcml6YXRpb25Ub2tl
biwgYm9vbCBuZWVkc0hpZ2hBY2N1cmFjeSkKIHsKLSAgICBXZWJQcm9jZXNzOjpzaW5nbGV0b24o
KS5zdXBwbGVtZW50PFdlYkdlb2xvY2F0aW9uTWFuYWdlcj4oKS0+cmVnaXN0ZXJXZWJQYWdlKG1f
cGFnZSwgYXV0aG9yaXphdGlvblRva2VuKTsKKyAgICBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5z
dXBwbGVtZW50PFdlYkdlb2xvY2F0aW9uTWFuYWdlcj4oKS0+cmVnaXN0ZXJXZWJQYWdlKG1fcGFn
ZSwgYXV0aG9yaXphdGlvblRva2VuLCBuZWVkc0hpZ2hBY2N1cmFjeSk7CiB9CiAKIHZvaWQgV2Vi
R2VvbG9jYXRpb25DbGllbnQ6OnN0b3BVcGRhdGluZygpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViR2VvbG9jYXRpb25DbGllbnQuaCBiL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJHZW9sb2NhdGlvbkNsaWVu
dC5oCmluZGV4IGIxNjgxNjc0ODk2MjI1NDdlYzk0ZTY3OThmYjY5ZGQ4ZmE2ZDAxMWMuLjY1ZWMw
ZTkzNTQyODNkNWZhNzdhZjEwYjRlMTgwYjg3MTJmYWVmMDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJHZW9sb2NhdGlvbkNsaWVudC5oCisr
KyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJHZW9sb2NhdGlv
bkNsaWVudC5oCkBAIC0zMSw3ICszMSw3IEBAIG5hbWVzcGFjZSBXZWJLaXQgewogCiBjbGFzcyBX
ZWJQYWdlOwogCi1jbGFzcyBXZWJHZW9sb2NhdGlvbkNsaWVudCA6IHB1YmxpYyBXZWJDb3JlOjpH
ZW9sb2NhdGlvbkNsaWVudCB7CitjbGFzcyBXZWJHZW9sb2NhdGlvbkNsaWVudCBmaW5hbCA6IHB1
YmxpYyBXZWJDb3JlOjpHZW9sb2NhdGlvbkNsaWVudCB7CiAgICAgV1RGX01BS0VfRkFTVF9BTExP
Q0FURUQ7CiBwdWJsaWM6CiAgICAgV2ViR2VvbG9jYXRpb25DbGllbnQoV2ViUGFnZSYgcGFnZSkK
QEAgLTQyLDE3ICs0MiwxNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB+V2ViR2VvbG9jYXRpb25D
bGllbnQoKTsKIAogcHJpdmF0ZToKLSAgICB2b2lkIGdlb2xvY2F0aW9uRGVzdHJveWVkKCkgb3Zl
cnJpZGU7CisgICAgdm9pZCBnZW9sb2NhdGlvbkRlc3Ryb3llZCgpIGZpbmFsOwogCi0gICAgdm9p
ZCBzdGFydFVwZGF0aW5nKGNvbnN0IFN0cmluZyYgYXV0aG9yaXphdGlvblRva2VuKSBvdmVycmlk
ZTsKLSAgICB2b2lkIHN0b3BVcGRhdGluZygpIG92ZXJyaWRlOwotICAgIHZvaWQgcmV2b2tlQXV0
aG9yaXphdGlvblRva2VuKGNvbnN0IFN0cmluZyYpIG92ZXJyaWRlOwotICAgIHZvaWQgc2V0RW5h
YmxlSGlnaEFjY3VyYWN5KGJvb2wpIG92ZXJyaWRlOworICAgIHZvaWQgc3RhcnRVcGRhdGluZyhj
b25zdCBTdHJpbmcmIGF1dGhvcml6YXRpb25Ub2tlbiwgYm9vbCBuZWVkc0hpZ2hBY2N1cmFjeSkg
ZmluYWw7CisgICAgdm9pZCBzdG9wVXBkYXRpbmcoKSBmaW5hbDsKKyAgICB2b2lkIHJldm9rZUF1
dGhvcml6YXRpb25Ub2tlbihjb25zdCBTdHJpbmcmKSBmaW5hbDsKKyAgICB2b2lkIHNldEVuYWJs
ZUhpZ2hBY2N1cmFjeShib29sKSBmaW5hbDsKIAotICAgIHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6
R2VvbG9jYXRpb25Qb3NpdGlvbkRhdGE+IGxhc3RQb3NpdGlvbigpIG92ZXJyaWRlOworICAgIHN0
ZDo6b3B0aW9uYWw8V2ViQ29yZTo6R2VvbG9jYXRpb25Qb3NpdGlvbkRhdGE+IGxhc3RQb3NpdGlv
bigpIGZpbmFsOwogCi0gICAgdm9pZCByZXF1ZXN0UGVybWlzc2lvbihXZWJDb3JlOjpHZW9sb2Nh
dGlvbiYpIG92ZXJyaWRlOwotICAgIHZvaWQgY2FuY2VsUGVybWlzc2lvblJlcXVlc3QoV2ViQ29y
ZTo6R2VvbG9jYXRpb24mKSBvdmVycmlkZTsKKyAgICB2b2lkIHJlcXVlc3RQZXJtaXNzaW9uKFdl
YkNvcmU6Okdlb2xvY2F0aW9uJikgZmluYWw7CisgICAgdm9pZCBjYW5jZWxQZXJtaXNzaW9uUmVx
dWVzdChXZWJDb3JlOjpHZW9sb2NhdGlvbiYpIGZpbmFsOwogCiAgICAgV2ViUGFnZSYgbV9wYWdl
OwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmNw
cCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmNwcAppbmRleCBkZDQ1YjQ1
ODhiZjlkZDEyNGUxOGZhYTk1YTMyNmVkMzE5MzFhNDU3Li43OTk2MTNkMzc3NDIzNjNiZmJkY2Q5
NTI5Nzk5NjIyMDZmMDIyOGE4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
V2ViUHJvY2Vzcy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlByb2Nlc3Mu
Y3BwCkBAIC0xNTI3LDE2ICsxNTI3LDYgQEAgdm9pZCBXZWJQcm9jZXNzOjpwYWdlQWN0aXZpdHlT
dGF0ZURpZENoYW5nZShQYWdlSWRlbnRpZmllciwgT3B0aW9uU2V0PFdlYkNvcmU6OkEKICAgICB9
CiB9CiAKLSNpZiBQTEFURk9STShJT1NfRkFNSUxZKQotdm9pZCBXZWJQcm9jZXNzOjpyZXNldEFs
bEdlb2xvY2F0aW9uUGVybWlzc2lvbnMoKQotewotICAgIGZvciAoYXV0byYgcGFnZSA6IG1fcGFn
ZU1hcC52YWx1ZXMoKSkgewotICAgICAgICBpZiAoRnJhbWUqIG1haW5GcmFtZSA9IHBhZ2UtPm1h
aW5GcmFtZSgpKQotICAgICAgICAgICAgbWFpbkZyYW1lLT5yZXNldEFsbEdlb2xvY2F0aW9uUGVy
bWlzc2lvbigpOwotICAgIH0KLX0KLSNlbmRpZgotCiB2b2lkIFdlYlByb2Nlc3M6OnByZXBhcmVU
b1N1c3BlbmQoYm9vbCBpc1N1c3BlbnNpb25JbW1pbmVudCwgQ29tcGxldGlvbkhhbmRsZXI8dm9p
ZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewogICAgIFdFQlBST0NFU1NfUkVMRUFTRV9MT0co
UHJvY2Vzc1N1c3BlbnNpb24sICJwcmVwYXJlVG9TdXNwZW5kOiBpc1N1c3BlbnNpb25JbW1pbmVu
dD0lZCIsIGlzU3VzcGVuc2lvbkltbWluZW50KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJv
Y2Vzcy5oCmluZGV4IGM1ZGQyMjVkYzFiNzFkYTljZGQ0ZWVkYmEwYTA3ZTc2MTc4MTU3NWUuLjU5
NWFmMGI5NzQxMjkwZGE2YzczNGEwODg2YjgyNGQyM2IxZWU1N2UgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1dlYlByb2Nlc3MuaApAQCAtMzEwLDEwICszMTAsNiBAQCBwdWJsaWM6CiAKICAgICB2
b2lkIGlzSklURW5hYmxlZChDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmKTsKIAotI2lm
IFBMQVRGT1JNKElPU19GQU1JTFkpCi0gICAgdm9pZCByZXNldEFsbEdlb2xvY2F0aW9uUGVybWlz
c2lvbnMoKTsKLSNlbmRpZgotCiAjaWYgUExBVEZPUk0oV0FZTEFORCkKICAgICBXYXlsYW5kQ29t
cG9zaXRvckRpc3BsYXkqIHdheWxhbmRDb21wb3NpdG9yRGlzcGxheSgpIGNvbnN0IHsgcmV0dXJu
IG1fd2F5bGFuZENvbXBvc2l0b3JEaXNwbGF5LmdldCgpOyB9CiAjZW5kaWYKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkdlb2xvY2F0aW9uQ2xp
ZW50LmggYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJHZW9sb2Nh
dGlvbkNsaWVudC5oCmluZGV4IDc3YzI4MjhkODU5NTM2MzViNjRjNGM4OTk5OTBhMGE2NDgxNzFi
NmMuLmIwN2M3OTAzZDI5MmE5MzM5MWU1YzQwYWVkZDY1ZGVkYmFmOGM1ZjEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkdlb2xvY2F0aW9uQ2xp
ZW50LmgKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViR2Vv
bG9jYXRpb25DbGllbnQuaApAQCAtMzksNyArMzksNyBAQCBwdWJsaWM6CiAgICAgV2ViVmlldyAq
d2ViVmlldygpIHsgcmV0dXJuIG1fd2ViVmlldzsgfQogCiAgICAgdm9pZCBnZW9sb2NhdGlvbkRl
c3Ryb3llZCgpIG92ZXJyaWRlOwotICAgIHZvaWQgc3RhcnRVcGRhdGluZyhjb25zdCBTdHJpbmcm
IGF1dGhvcml6YXRpb25Ub2tlbikgb3ZlcnJpZGU7CisgICAgdm9pZCBzdGFydFVwZGF0aW5nKGNv
bnN0IFN0cmluZyYgYXV0aG9yaXphdGlvblRva2VuLCBib29sIGVuYWJsZUhpZ2hBY2N1cmFjeSkg
b3ZlcnJpZGU7CiAgICAgdm9pZCBzdG9wVXBkYXRpbmcoKSBvdmVycmlkZTsKICNpZiBQTEFURk9S
TShJT1NfRkFNSUxZKQogICAgIC8vIEZJWE1FOiB1bmlmeSB0aGlzIHdpdGggTWFjIG9uIE9wZW5T
b3VyY2UuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9y
dC9XZWJHZW9sb2NhdGlvbkNsaWVudC5tbSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNv
cmVTdXBwb3J0L1dlYkdlb2xvY2F0aW9uQ2xpZW50Lm1tCmluZGV4IGU3ODhhNTdkZDZmODA3ZTdi
MjVjNzQyYmE4MDE5MzU3YTI3MzRkMzguLmE4Yjg1MjFlMmRhNDcxOGRjMTRiNDM3MGIxYTViNGI4
ZDYzMjg1ODkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBw
b3J0L1dlYkdlb2xvY2F0aW9uQ2xpZW50Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFj
L1dlYkNvcmVTdXBwb3J0L1dlYkdlb2xvY2F0aW9uQ2xpZW50Lm1tCkBAIC04Myw5ICs4MywxNiBA
QCB2b2lkIFdlYkdlb2xvY2F0aW9uQ2xpZW50OjpnZW9sb2NhdGlvbkRlc3Ryb3llZCgpCiAgICAg
ZGVsZXRlIHRoaXM7CiB9CiAKLXZvaWQgV2ViR2VvbG9jYXRpb25DbGllbnQ6OnN0YXJ0VXBkYXRp
bmcoY29uc3QgU3RyaW5nJiBhdXRob3JpemF0aW9uVG9rZW4pCit2b2lkIFdlYkdlb2xvY2F0aW9u
Q2xpZW50OjpzdGFydFVwZGF0aW5nKGNvbnN0IFN0cmluZyYgYXV0aG9yaXphdGlvblRva2VuLCBi
b29sIGVuYWJsZUhpZ2hBY2N1cmFjeSkKIHsKICAgICBVTlVTRURfUEFSQU0oYXV0aG9yaXphdGlv
blRva2VuKTsKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZKQorICAgIGlmIChlbmFibGVIaWdoQWNj
dXJhY3kpCisgICAgICAgIHNldEVuYWJsZUhpZ2hBY2N1cmFjeSh0cnVlKTsKKyNlbHNlCisgICAg
VU5VU0VEX1BBUkFNKGVuYWJsZUhpZ2hBY2N1cmFjeSk7CisjZW5kaWYKKwogICAgIFtbbV93ZWJW
aWV3IF9nZW9sb2NhdGlvblByb3ZpZGVyXSByZWdpc3RlcldlYlZpZXc6bV93ZWJWaWV3XTsKIH0K
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViQ29yZVN1cHBvcnQvV2Vi
R2VvbG9jYXRpb25DbGllbnQuY3BwIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViQ29yZVN1
cHBvcnQvV2ViR2VvbG9jYXRpb25DbGllbnQuY3BwCmluZGV4IGUxZmNhMjc3MjQ5NjE1NGE0ZTA3
MGU0ZGZkYTdlNzdlOTczNTgyYzEuLmFjNTQ1MTRjNjQyZWEwZTVmOGFmMzM2OWUxYmJiYWUwYzM5
MDcxYjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkNvcmVTdXBwb3J0
L1dlYkdlb2xvY2F0aW9uQ2xpZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9X
ZWJDb3JlU3VwcG9ydC9XZWJHZW9sb2NhdGlvbkNsaWVudC5jcHAKQEAgLTQ4LDkgKzQ4LDEwIEBA
IHZvaWQgV2ViR2VvbG9jYXRpb25DbGllbnQ6Omdlb2xvY2F0aW9uRGVzdHJveWVkKCkKICAgICBk
ZWxldGUgdGhpczsKIH0KIAotdm9pZCBXZWJHZW9sb2NhdGlvbkNsaWVudDo6c3RhcnRVcGRhdGlu
Zyhjb25zdCBTdHJpbmcmIGF1dGhvcml6YXRpb25Ub2tlbikKK3ZvaWQgV2ViR2VvbG9jYXRpb25D
bGllbnQ6OnN0YXJ0VXBkYXRpbmcoY29uc3QgU3RyaW5nJiBhdXRob3JpemF0aW9uVG9rZW4sIGJv
b2wgZW5hYmxlSGlnaEFjY3VyYWN5KQogewogICAgIFVOVVNFRF9QQVJBTShhdXRob3JpemF0aW9u
VG9rZW4pOworICAgIFVOVVNFRF9QQVJBTShlbmFibGVIaWdoQWNjdXJhY3kpOwogICAgIENPTVB0
cjxJV2ViR2VvbG9jYXRpb25Qcm92aWRlcj4gcHJvdmlkZXI7CiAgICAgaWYgKEZBSUxFRChtX3dl
YlZpZXctPmdlb2xvY2F0aW9uUHJvdmlkZXIoJnByb3ZpZGVyKSkpCiAgICAgICAgIHJldHVybjsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkdl
b2xvY2F0aW9uQ2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJDb3JlU3VwcG9y
dC9XZWJHZW9sb2NhdGlvbkNsaWVudC5oCmluZGV4IDE5NTc0MTdiNTVkN2U1ZDJmOWI3MWU1Yzlk
OWMzMDNkZmVmNGUxODYuLjViOGU5NDQ0ZjIxZmVkNDNlZGYyNTkxYTJiYTE1ZGEzYmQ0NGY0NGEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkdl
b2xvY2F0aW9uQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViQ29yZVN1
cHBvcnQvV2ViR2VvbG9jYXRpb25DbGllbnQuaApAQCAtNDEsNyArNDEsNyBAQCBwdWJsaWM6CiAg
ICAgV2ViR2VvbG9jYXRpb25DbGllbnQoV2ViVmlldyopOwogCiAgICAgdm9pZCBnZW9sb2NhdGlv
bkRlc3Ryb3llZCgpIGZpbmFsOwotICAgIHZvaWQgc3RhcnRVcGRhdGluZyhjb25zdCBTdHJpbmcm
IGF1dGhvcml6YXRpb25Ub2tlbikgZmluYWw7CisgICAgdm9pZCBzdGFydFVwZGF0aW5nKGNvbnN0
IFN0cmluZyYgYXV0aG9yaXphdGlvblRva2VuLCBib29sIGVuYWJsZUhpZ2hBY2N1cmFjeSkgZmlu
YWw7CiAgICAgdm9pZCBzdG9wVXBkYXRpbmcoKSBmaW5hbDsKICAgICB2b2lkIHNldEVuYWJsZUhp
Z2hBY2N1cmFjeShib29sKSBmaW5hbCB7IH0KICAgICBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6Okdl
b2xvY2F0aW9uUG9zaXRpb25EYXRhPiBsYXN0UG9zaXRpb24oKSBmaW5hbDsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>452135</attachid>
            <date>2022-02-15 20:49:50 -0800</date>
            <delta_ts>2022-02-15 20:54:51 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-236566-20220215204949.patch</filename>
            <type>text/plain</type>
            <size>300831</size>
            <attacher name="Myles C. Maxfield">mmaxfield</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg5ODcyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMzM4NThhMzM1MTFjMTZj
MzBjMDdhMTJhMWJhMjNmYzdlNWJlMTdkZC4uYjRmMzZhMDgyYWQ5NjcwMjZiMzNjYTJiMzRlODdi
MjM2ZWY2ZGM5MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDExOSBAQAorMjAyMi0wMi0xNSAgTXls
ZXMgQy4gTWF4ZmllbGQgIDxtbWF4ZmllbGRAYXBwbGUuY29tPgorCisgICAgICAgIFtXZWJHUFVd
IFVwZGF0ZSBJRExzIGFuZCBzdHVicyB0byBsYXRlc3QgdmVyc2lvbiBvZiB0aGUgc3BlYworICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjM2NjM5CisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhpcyB1cGRhdGVz
IG91ciBXZWJHUFUgaW5mcmFzdHJ1Y3R1cmUgdG8gc3BlYyByZXZpc2lvbiA2MjZmOGMwNWM4ZTY3
YjU0MTU5ZTkzYWU3YzM2OTlhODg5ZjBiMTE1LiBUaGlzCisgICAgICAgIGlzIGp1c3QgdGhlIHBs
dW1iaW5nIHRoYXQgY29ubmVjdHMgSURMIC0+IFdlYkNvcmUgQysrIC0+IFBBTCB2aXJ0dWFsIG1l
dGhvZHMgLT4gV2ViS2l0IFdlYiBwcm9jZXNzIC0+CisgICAgICAgIFdlYktpdCBHUFUgcHJvY2Vz
cyAtPiBQQUwgdmlydHVhbCBtZXRob2RzIC0+IFBBTCBXZWJHUFUgaW1wbGVtZW50YXRpb24gLT4g
V2ViR1BVLmZyYW1ld29yay4gVGhpcyBhbHNvCisgICAgICAgIHVwZGF0ZXMgdGhlIFdlYkdQVS5o
IHNoYXJlZCBoZWFkZXIgdG8gcmV2aXNpb24gMDhlZjU3NzMzNTAzYjhmYjUwNGUwNjgxYThkYjY1
MGM4ODIyNTk0Ny4gVGhpcyBpcyBqdXN0CisgICAgICAgIHBsdW1iaW5nIC0gdGhlIGFjdHVhbCBp
bXBsZW1lbnRhdGlvbiBvZiB0aGlzIHN0dWZmIGlzIHN0aWxsIGp1c3Qgc3R1YnMgaW4gV2ViR1BV
LmZyYW1ld29yay4KKworICAgICAgICBUaGVyZSBoYXZlIGJlZW4gYSBmZXcgdmFyaW91cyBjaGFu
Z2VzOgorICAgICAgICAtIEEgdmlld0Zvcm1hdHMgYXJyYXkgaGFzIGJlZW4gYWRkZWQgdG8gR1BV
Q2FudmFzQ29uZmlndXJhdGlvbiBhbmQgR1BVVGV4dHVyZURlc2NyaXB0b3IKKyAgICAgICAgLSBm
aWxsQnVmZmVyKCkgaGFzIGJlZW4gcmVuYW1lZCB0byBjbGVhckJ1ZmZlcigpCisgICAgICAgIC0g
UGlwZWxpbmUgc3RhdGlzdGljcyBxdWVyaWVzIGhhdmUgYmVlbiBkZWxldGVkCisgICAgICAgIC0g
QSBmZXcgcmVmYWN0b3JpbmdzIHRvIHR1cm4gVmVjdG9yPEZvbz4gdGhpbmdzIGludG8gVmVjdG9y
PHN0ZDo6b3B0aW9uYWw8Rm9vPj4KKyAgICAgICAgLSBmbGlwWSBoYXMgYmVlbiBhZGRlZCB0byBH
UFVJbWFnZUNvcHlFeHRlcm5hbEltYWdlCisgICAgICAgIC0gTG9hZCBvcGVyYXRpb25zIGhhdmUg
YmVlbiByZWRlc2lnbmVkIG9uIGJvdGggR1BVUmVuZGVyUGFzc0NvbG9yQXR0YWNobWVudCBhbmQK
KyAgICAgICAgICAgICAgR1BVUmVuZGVyUGFzc0RlcHRoU3RlbmNpbEF0dGFjaG1lbnQKKyAgICAg
ICAgLSBlbmRQYXNzKCkgaGFzIGJlZW4gcmVuYW1lZCB0byBlbmQoKQorICAgICAgICAtIFNoYWRl
ciBjb21waWxhdGlvbiBub3cgdGFrZXMgYSByZWNvcmQ8ZW50cnkgcG9pbnQgbmFtZSwgR1BVU2hh
ZGVyTW9kdWxlQ29tcGlsYXRpb25IaW50PgorCisgICAgICAgIE5vIG5ldyB0ZXN0cyBiZWNhdXNl
IHRoZSBpbXBsZW1lbnRhdGlvbiBpcyBzdGlsbCBqdXN0IHN0dWJzLgorCisgICAgICAgICogQ01h
a2VMaXN0cy50eHQ6CisgICAgICAgICogRGVyaXZlZFNvdXJjZXMtaW5wdXQueGNmaWxlbGlzdDoK
KyAgICAgICAgKiBEZXJpdmVkU291cmNlcy1vdXRwdXQueGNmaWxlbGlzdDoKKyAgICAgICAgKiBE
ZXJpdmVkU291cmNlcy5tYWtlOgorICAgICAgICAqIEhlYWRlcnMuY21ha2U6CisgICAgICAgICog
TW9kdWxlcy9XZWJHUFUvR1BVQnVmZmVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkdQVUJ1ZmZl
cjo6bWFwQXN5bmMpOgorICAgICAgICAoV2ViQ29yZTo6R1BVQnVmZmVyOjpnZXRNYXBwZWRSYW5n
ZSk6CisgICAgICAgICogTW9kdWxlcy9XZWJHUFUvR1BVQnVmZmVyLmg6CisgICAgICAgICogTW9k
dWxlcy9XZWJHUFUvR1BVQ2FudmFzQ29uZmlndXJhdGlvbi5oOgorICAgICAgICAoV2ViQ29yZTo6
R1BVQ2FudmFzQ29uZmlndXJhdGlvbjo6Y29udmVydFRvQmFja2luZyBjb25zdCk6CisgICAgICAg
ICogTW9kdWxlcy9XZWJHUFUvR1BVQ2FudmFzQ29uZmlndXJhdGlvbi5pZGw6CisgICAgICAgICog
TW9kdWxlcy9XZWJHUFUvR1BVQ29tbWFuZEVuY29kZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
R1BVQ29tbWFuZEVuY29kZXI6OmNsZWFyQnVmZmVyKToKKyAgICAgICAgKFdlYkNvcmU6OkdQVUNv
bW1hbmRFbmNvZGVyOjpmaWxsQnVmZmVyKTogRGVsZXRlZC4KKyAgICAgICAgKiBNb2R1bGVzL1dl
YkdQVS9HUFVDb21tYW5kRW5jb2Rlci5oOgorICAgICAgICAqIE1vZHVsZXMvV2ViR1BVL0dQVUNv
bW1hbmRFbmNvZGVyLmlkbDoKKyAgICAgICAgKiBNb2R1bGVzL1dlYkdQVS9HUFVDb21tYW5kc01p
eGluLmlkbDogQ29waWVkIGZyb20gU291cmNlL1dlYkNvcmUvTW9kdWxlcy9XZWJHUFUvR1BVTG9h
ZE9wLmlkbC4KKyAgICAgICAgKiBNb2R1bGVzL1dlYkdQVS9HUFVDb21wdXRlUGFzc0VuY29kZXIu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6R1BVQ29tcHV0ZVBhc3NFbmNvZGVyOjpkaXNwYXRjaCk6
CisgICAgICAgIChXZWJDb3JlOjpHUFVDb21wdXRlUGFzc0VuY29kZXI6OmVuZCk6CisgICAgICAg
IChXZWJDb3JlOjpHUFVDb21wdXRlUGFzc0VuY29kZXI6OmJlZ2luUGlwZWxpbmVTdGF0aXN0aWNz
UXVlcnkpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6R1BVQ29tcHV0ZVBhc3NFbmNvZGVy
OjplbmRQaXBlbGluZVN0YXRpc3RpY3NRdWVyeSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3Jl
OjpHUFVDb21wdXRlUGFzc0VuY29kZXI6OmVuZFBhc3MpOiBEZWxldGVkLgorICAgICAgICAqIE1v
ZHVsZXMvV2ViR1BVL0dQVUNvbXB1dGVQYXNzRW5jb2Rlci5oOgorICAgICAgICAqIE1vZHVsZXMv
V2ViR1BVL0dQVUNvbXB1dGVQYXNzRW5jb2Rlci5pZGw6CisgICAgICAgICogTW9kdWxlcy9XZWJH
UFUvR1BVRGVidWdDb21tYW5kc01peGluLmlkbDogQ29waWVkIGZyb20gU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9XZWJHUFUvR1BVRnJhZ21lbnRTdGF0ZS5pZGwuCisgICAgICAgICogTW9kdWxlcy9X
ZWJHUFUvR1BVRmVhdHVyZU5hbWUuaDoKKyAgICAgICAgKFdlYkNvcmU6OmNvbnZlcnRUb0JhY2tp
bmcpOgorICAgICAgICAqIE1vZHVsZXMvV2ViR1BVL0dQVUZlYXR1cmVOYW1lLmlkbDoKKyAgICAg
ICAgKiBNb2R1bGVzL1dlYkdQVS9HUFVGcmFnbWVudFN0YXRlLmg6CisgICAgICAgIChXZWJDb3Jl
OjpHUFVGcmFnbWVudFN0YXRlOjpjb252ZXJ0VG9CYWNraW5nIGNvbnN0KToKKyAgICAgICAgKiBN
b2R1bGVzL1dlYkdQVS9HUFVGcmFnbWVudFN0YXRlLmlkbDoKKyAgICAgICAgKiBNb2R1bGVzL1dl
YkdQVS9HUFVJbWFnZUNvcHlFeHRlcm5hbEltYWdlLmg6CisgICAgICAgIChXZWJDb3JlOjpHUFVJ
bWFnZUNvcHlFeHRlcm5hbEltYWdlOjpjb252ZXJ0VG9CYWNraW5nIGNvbnN0KToKKyAgICAgICAg
KiBNb2R1bGVzL1dlYkdQVS9HUFVJbWFnZUNvcHlFeHRlcm5hbEltYWdlLmlkbDoKKyAgICAgICAg
KiBNb2R1bGVzL1dlYkdQVS9HUFVMb2FkT3AuaDoKKyAgICAgICAgKFdlYkNvcmU6OmNvbnZlcnRU
b0JhY2tpbmcpOgorICAgICAgICAqIE1vZHVsZXMvV2ViR1BVL0dQVUxvYWRPcC5pZGw6CisgICAg
ICAgICogTW9kdWxlcy9XZWJHUFUvR1BVT2JqZWN0QmFzZS5pZGw6CisgICAgICAgICogTW9kdWxl
cy9XZWJHUFUvR1BVUGlwZWxpbmVTdGF0aXN0aWNOYW1lLmg6IFJlbW92ZWQuCisgICAgICAgICog
TW9kdWxlcy9XZWJHUFUvR1BVUGlwZWxpbmVTdGF0aXN0aWNOYW1lLmlkbDogUmVtb3ZlZC4KKyAg
ICAgICAgKiBNb2R1bGVzL1dlYkdQVS9HUFVQcm9ncmFtbWFibGVQYXNzRW5jb2Rlci5pZGw6Cisg
ICAgICAgICogTW9kdWxlcy9XZWJHUFUvR1BVUXVlcnlTZXREZXNjcmlwdG9yLmg6CisgICAgICAg
IChXZWJDb3JlOjpHUFVRdWVyeVNldERlc2NyaXB0b3I6OmNvbnZlcnRUb0JhY2tpbmcgY29uc3Qp
OgorICAgICAgICAqIE1vZHVsZXMvV2ViR1BVL0dQVVF1ZXJ5U2V0RGVzY3JpcHRvci5pZGw6Cisg
ICAgICAgICogTW9kdWxlcy9XZWJHUFUvR1BVUXVlcnlUeXBlLmg6CisgICAgICAgIChXZWJDb3Jl
Ojpjb252ZXJ0VG9CYWNraW5nKToKKyAgICAgICAgKiBNb2R1bGVzL1dlYkdQVS9HUFVRdWVyeVR5
cGUuaWRsOgorICAgICAgICAqIE1vZHVsZXMvV2ViR1BVL0dQVVF1ZXVlLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkdQVVF1ZXVlOjp3cml0ZUJ1ZmZlcik6CisgICAgICAgICogTW9kdWxlcy9XZWJH
UFUvR1BVUXVldWUuaDoKKyAgICAgICAgKiBNb2R1bGVzL1dlYkdQVS9HUFVSZW5kZXJCdW5kbGVF
bmNvZGVyLmlkbDoKKyAgICAgICAgKiBNb2R1bGVzL1dlYkdQVS9HUFVSZW5kZXJCdW5kbGVFbmNv
ZGVyRGVzY3JpcHRvci5oOgorICAgICAgICAoV2ViQ29yZTo6R1BVUmVuZGVyQnVuZGxlRW5jb2Rl
ckRlc2NyaXB0b3I6OmNvbnZlcnRUb0JhY2tpbmcgY29uc3QpOgorICAgICAgICAqIE1vZHVsZXMv
V2ViR1BVL0dQVVJlbmRlclBhc3NDb2xvckF0dGFjaG1lbnQuaDoKKyAgICAgICAgKFdlYkNvcmU6
OkdQVVJlbmRlclBhc3NDb2xvckF0dGFjaG1lbnQ6OmNvbnZlcnRUb0JhY2tpbmcgY29uc3QpOgor
ICAgICAgICAqIE1vZHVsZXMvV2ViR1BVL0dQVVJlbmRlclBhc3NDb2xvckF0dGFjaG1lbnQuaWRs
OgorICAgICAgICAqIE1vZHVsZXMvV2ViR1BVL0dQVVJlbmRlclBhc3NEZXB0aFN0ZW5jaWxBdHRh
Y2htZW50Lmg6CisgICAgICAgIChXZWJDb3JlOjpHUFVSZW5kZXJQYXNzRGVwdGhTdGVuY2lsQXR0
YWNobWVudDo6Y29udmVydFRvQmFja2luZyBjb25zdCk6CisgICAgICAgICogTW9kdWxlcy9XZWJH
UFUvR1BVUmVuZGVyUGFzc0RlcHRoU3RlbmNpbEF0dGFjaG1lbnQuaWRsOgorICAgICAgICAqIE1v
ZHVsZXMvV2ViR1BVL0dQVVJlbmRlclBhc3NEZXNjcmlwdG9yLmg6CisgICAgICAgIChXZWJDb3Jl
OjpHUFVSZW5kZXJQYXNzRGVzY3JpcHRvcjo6Y29udmVydFRvQmFja2luZyBjb25zdCk6CisgICAg
ICAgICogTW9kdWxlcy9XZWJHUFUvR1BVUmVuZGVyUGFzc0Rlc2NyaXB0b3IuaWRsOgorICAgICAg
ICAqIE1vZHVsZXMvV2ViR1BVL0dQVVJlbmRlclBhc3NFbmNvZGVyLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkdQVVJlbmRlclBhc3NFbmNvZGVyOjplbmQpOgorICAgICAgICAoV2ViQ29yZTo6R1BV
UmVuZGVyUGFzc0VuY29kZXI6OmJlZ2luUGlwZWxpbmVTdGF0aXN0aWNzUXVlcnkpOiBEZWxldGVk
LgorICAgICAgICAoV2ViQ29yZTo6R1BVUmVuZGVyUGFzc0VuY29kZXI6OmVuZFBpcGVsaW5lU3Rh
dGlzdGljc1F1ZXJ5KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkdQVVJlbmRlclBhc3NF
bmNvZGVyOjplbmRQYXNzKTogRGVsZXRlZC4KKyAgICAgICAgKiBNb2R1bGVzL1dlYkdQVS9HUFVS
ZW5kZXJQYXNzRW5jb2Rlci5oOgorICAgICAgICAqIE1vZHVsZXMvV2ViR1BVL0dQVVJlbmRlclBh
c3NFbmNvZGVyLmlkbDoKKyAgICAgICAgKiBNb2R1bGVzL1dlYkdQVS9HUFVSZW5kZXJQYXNzTGF5
b3V0Lmg6CisgICAgICAgIChXZWJDb3JlOjpHUFVSZW5kZXJQYXNzTGF5b3V0Ojpjb252ZXJ0VG9C
YWNraW5nIGNvbnN0KToKKyAgICAgICAgKiBNb2R1bGVzL1dlYkdQVS9HUFVSZW5kZXJQYXNzTGF5
b3V0LmlkbDoKKyAgICAgICAgKiBNb2R1bGVzL1dlYkdQVS9HUFVTaGFkZXJNb2R1bGVDb21waWxh
dGlvbkhpbnQuaDogQ29waWVkIGZyb20gU291cmNlL1dlYkNvcmUvTW9kdWxlcy9XZWJHUFUvR1BV
TG9hZE9wLmguCisgICAgICAgIChXZWJDb3JlOjpHUFVTaGFkZXJNb2R1bGVDb21waWxhdGlvbkhp
bnQ6OmNvbnZlcnRUb0JhY2tpbmcgY29uc3QpOgorICAgICAgICAqIE1vZHVsZXMvV2ViR1BVL0dQ
VVNoYWRlck1vZHVsZUNvbXBpbGF0aW9uSGludC5pZGw6IENvcGllZCBmcm9tIFNvdXJjZS9XZWJD
b3JlL01vZHVsZXMvV2ViR1BVL0dQVVF1ZXJ5VHlwZS5pZGwuCisgICAgICAgICogTW9kdWxlcy9X
ZWJHUFUvR1BVU2hhZGVyTW9kdWxlRGVzY3JpcHRvci5oOgorICAgICAgICAoV2ViQ29yZTo6R1BV
U2hhZGVyTW9kdWxlRGVzY3JpcHRvcjo6Y29udmVydFRvQmFja2luZyBjb25zdCk6CisgICAgICAg
ICogTW9kdWxlcy9XZWJHUFUvR1BVU2hhZGVyTW9kdWxlRGVzY3JpcHRvci5pZGw6CisgICAgICAg
ICogTW9kdWxlcy9XZWJHUFUvR1BVVGV4dHVyZURlc2NyaXB0b3IuaDoKKyAgICAgICAgKFdlYkNv
cmU6OkdQVVRleHR1cmVEZXNjcmlwdG9yOjpjb252ZXJ0VG9CYWNraW5nIGNvbnN0KToKKyAgICAg
ICAgKiBNb2R1bGVzL1dlYkdQVS9HUFVUZXh0dXJlRGVzY3JpcHRvci5pZGw6CisgICAgICAgICog
TW9kdWxlcy9XZWJHUFUvR1BVVGV4dHVyZUZvcm1hdC5oOgorICAgICAgICAoV2ViQ29yZTo6Y29u
dmVydFRvQmFja2luZyk6CisgICAgICAgICogTW9kdWxlcy9XZWJHUFUvR1BVVGV4dHVyZUZvcm1h
dC5pZGw6CisgICAgICAgICogTW9kdWxlcy9XZWJHUFUvR1BVVW5jYXB0dXJlZEVycm9yRXZlbnQu
aWRsOgorICAgICAgICAqIFNvdXJjZXMudHh0OgorICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvajoKKwogMjAyMi0wMi0xNSAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBw
bGUuY29tPgogCiAgICAgICAgIERvIHByZWxpbWluYXJ5IHdvcmsgdG8gcGFzcyBkb21haW4gbmFt
ZXMgdG8gQ29yZUxvY2F0aW9uCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9QQUwvQ2hhbmdl
TG9nIGIvU291cmNlL1dlYkNvcmUvUEFML0NoYW5nZUxvZwppbmRleCAxN2YzOWIzZTg5ZWYyMTg0
MTc0NjVhZGJjY2E4MzYwZmM3NjBlYjU1Li41YzFlZTg2NzExYTY1NmYyYTA1MDU1NjgwNzllZjJi
ZDA0N2ZmYTEyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9QQUwvQ2hhbmdlTG9nCisrKyBi
L1NvdXJjZS9XZWJDb3JlL1BBTC9DaGFuZ2VMb2cKQEAgLTEsMyArMSw3MCBAQAorMjAyMi0wMi0x
NSAgTXlsZXMgQy4gTWF4ZmllbGQgIDxtbWF4ZmllbGRAYXBwbGUuY29tPgorCisgICAgICAgIFtX
ZWJHUFVdIFVwZGF0ZSBJRExzIGFuZCBzdHVicyB0byBsYXRlc3QgdmVyc2lvbiBvZiB0aGUgc3Bl
YworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjM2NjM5
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBQQUwu
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBwYWwvZ3JhcGhpY3MvV2ViR1BV
L0ltcGwvV2ViR1BVQWRhcHRlckltcGwuY3BwOgorICAgICAgICAoUEFMOjpXZWJHUFU6OnN1cHBv
cnRlZEZlYXR1cmVzKToKKyAgICAgICAgKFBBTDo6V2ViR1BVOjpBZGFwdGVySW1wbDo6cmVxdWVz
dERldmljZSk6CisgICAgICAgICogcGFsL2dyYXBoaWNzL1dlYkdQVS9JbXBsL1dlYkdQVUJ1ZmZl
ckltcGwuY3BwOgorICAgICAgICAoUEFMOjpXZWJHUFU6OkJ1ZmZlckltcGw6Om1hcEFzeW5jKToK
KyAgICAgICAgKFBBTDo6V2ViR1BVOjpCdWZmZXJJbXBsOjpnZXRNYXBwZWRSYW5nZSk6CisgICAg
ICAgICogcGFsL2dyYXBoaWNzL1dlYkdQVS9JbXBsL1dlYkdQVUJ1ZmZlckltcGwuaDoKKyAgICAg
ICAgKiBwYWwvZ3JhcGhpY3MvV2ViR1BVL0ltcGwvV2ViR1BVQ29tbWFuZEVuY29kZXJJbXBsLmNw
cDoKKyAgICAgICAgKFBBTDo6V2ViR1BVOjpDb21tYW5kRW5jb2RlckltcGw6OmJlZ2luUmVuZGVy
UGFzcyk6CisgICAgICAgIChQQUw6OldlYkdQVTo6Q29tbWFuZEVuY29kZXJJbXBsOjpiZWdpbkNv
bXB1dGVQYXNzKToKKyAgICAgICAgKFBBTDo6V2ViR1BVOjpDb21tYW5kRW5jb2RlckltcGw6OmNs
ZWFyQnVmZmVyKToKKyAgICAgICAgKFBBTDo6V2ViR1BVOjpDb21tYW5kRW5jb2RlckltcGw6OmZp
bGxCdWZmZXIpOiBEZWxldGVkLgorICAgICAgICAqIHBhbC9ncmFwaGljcy9XZWJHUFUvSW1wbC9X
ZWJHUFVDb21tYW5kRW5jb2RlckltcGwuaDoKKyAgICAgICAgKiBwYWwvZ3JhcGhpY3MvV2ViR1BV
L0ltcGwvV2ViR1BVQ29tcHV0ZVBhc3NFbmNvZGVySW1wbC5jcHA6CisgICAgICAgIChQQUw6Oldl
YkdQVTo6Q29tcHV0ZVBhc3NFbmNvZGVySW1wbDo6ZGlzcGF0Y2gpOgorICAgICAgICAoUEFMOjpX
ZWJHUFU6OkNvbXB1dGVQYXNzRW5jb2RlckltcGw6OmVuZCk6CisgICAgICAgIChQQUw6OldlYkdQ
VTo6Q29tcHV0ZVBhc3NFbmNvZGVySW1wbDo6YmVnaW5QaXBlbGluZVN0YXRpc3RpY3NRdWVyeSk6
IERlbGV0ZWQuCisgICAgICAgIChQQUw6OldlYkdQVTo6Q29tcHV0ZVBhc3NFbmNvZGVySW1wbDo6
ZW5kUGlwZWxpbmVTdGF0aXN0aWNzUXVlcnkpOiBEZWxldGVkLgorICAgICAgICAoUEFMOjpXZWJH
UFU6OkNvbXB1dGVQYXNzRW5jb2RlckltcGw6OmVuZFBhc3MpOiBEZWxldGVkLgorICAgICAgICAq
IHBhbC9ncmFwaGljcy9XZWJHUFUvSW1wbC9XZWJHUFVDb21wdXRlUGFzc0VuY29kZXJJbXBsLmg6
CisgICAgICAgICogcGFsL2dyYXBoaWNzL1dlYkdQVS9JbXBsL1dlYkdQVUNvbnZlcnRUb0JhY2tp
bmdDb250ZXh0LmNwcDoKKyAgICAgICAgKFBBTDo6V2ViR1BVOjpDb252ZXJ0VG9CYWNraW5nQ29u
dGV4dDo6Y29udmVydFRvQmFja2luZyk6CisgICAgICAgICogcGFsL2dyYXBoaWNzL1dlYkdQVS9J
bXBsL1dlYkdQVUNvbnZlcnRUb0JhY2tpbmdDb250ZXh0Lmg6CisgICAgICAgICogcGFsL2dyYXBo
aWNzL1dlYkdQVS9JbXBsL1dlYkdQVURldmljZUltcGwuY3BwOgorICAgICAgICAoUEFMOjpXZWJH
UFU6OkRldmljZUltcGw6OmNyZWF0ZVRleHR1cmUpOgorICAgICAgICAoUEFMOjpXZWJHUFU6OkRl
dmljZUltcGw6OmNyZWF0ZVNoYWRlck1vZHVsZSk6CisgICAgICAgIChQQUw6OldlYkdQVTo6Y29u
dmVydFRvQmFja2luZyk6CisgICAgICAgIChQQUw6OldlYkdQVTo6RGV2aWNlSW1wbDo6Y3JlYXRl
UmVuZGVyQnVuZGxlRW5jb2Rlcik6CisgICAgICAgIChQQUw6OldlYkdQVTo6RGV2aWNlSW1wbDo6
Y3JlYXRlUXVlcnlTZXQpOgorICAgICAgICAqIHBhbC9ncmFwaGljcy9XZWJHUFUvSW1wbC9XZWJH
UFVJbXBsLmNwcDoKKyAgICAgICAgKFBBTDo6V2ViR1BVOjpHUFVJbXBsOjpyZXF1ZXN0QWRhcHRl
cik6CisgICAgICAgICogcGFsL2dyYXBoaWNzL1dlYkdQVS9JbXBsL1dlYkdQVVJlbmRlclBhc3NF
bmNvZGVySW1wbC5jcHA6CisgICAgICAgIChQQUw6OldlYkdQVTo6UmVuZGVyUGFzc0VuY29kZXJJ
bXBsOjplbmQpOgorICAgICAgICAoUEFMOjpXZWJHUFU6OlJlbmRlclBhc3NFbmNvZGVySW1wbDo6
YmVnaW5QaXBlbGluZVN0YXRpc3RpY3NRdWVyeSk6IERlbGV0ZWQuCisgICAgICAgIChQQUw6Oldl
YkdQVTo6UmVuZGVyUGFzc0VuY29kZXJJbXBsOjplbmRQaXBlbGluZVN0YXRpc3RpY3NRdWVyeSk6
IERlbGV0ZWQuCisgICAgICAgIChQQUw6OldlYkdQVTo6UmVuZGVyUGFzc0VuY29kZXJJbXBsOjpl
bmRQYXNzKTogRGVsZXRlZC4KKyAgICAgICAgKiBwYWwvZ3JhcGhpY3MvV2ViR1BVL0ltcGwvV2Vi
R1BVUmVuZGVyUGFzc0VuY29kZXJJbXBsLmg6CisgICAgICAgICogcGFsL2dyYXBoaWNzL1dlYkdQ
VS9XZWJHUFVCdWZmZXIuaDoKKyAgICAgICAgKiBwYWwvZ3JhcGhpY3MvV2ViR1BVL1dlYkdQVUNh
bnZhc0NvbmZpZ3VyYXRpb24uaDoKKyAgICAgICAgKiBwYWwvZ3JhcGhpY3MvV2ViR1BVL1dlYkdQ
VUNvbW1hbmRFbmNvZGVyLmg6CisgICAgICAgICogcGFsL2dyYXBoaWNzL1dlYkdQVS9XZWJHUFVD
b21wdXRlUGFzc0VuY29kZXIuaDoKKyAgICAgICAgKiBwYWwvZ3JhcGhpY3MvV2ViR1BVL1dlYkdQ
VUZlYXR1cmVOYW1lLmg6CisgICAgICAgICogcGFsL2dyYXBoaWNzL1dlYkdQVS9XZWJHUFVGcmFn
bWVudFN0YXRlLmg6CisgICAgICAgICogcGFsL2dyYXBoaWNzL1dlYkdQVS9XZWJHUFVJbWFnZUNv
cHlFeHRlcm5hbEltYWdlLmg6CisgICAgICAgICogcGFsL2dyYXBoaWNzL1dlYkdQVS9XZWJHUFVM
b2FkT3AuaDoKKyAgICAgICAgKiBwYWwvZ3JhcGhpY3MvV2ViR1BVL1dlYkdQVVBpcGVsaW5lU3Rh
dGlzdGljTmFtZS5oOiBSZW1vdmVkLgorICAgICAgICAqIHBhbC9ncmFwaGljcy9XZWJHUFUvV2Vi
R1BVUXVlcnlTZXREZXNjcmlwdG9yLmg6CisgICAgICAgICogcGFsL2dyYXBoaWNzL1dlYkdQVS9X
ZWJHUFVRdWVyeVR5cGUuaDoKKyAgICAgICAgKiBwYWwvZ3JhcGhpY3MvV2ViR1BVL1dlYkdQVVF1
ZXVlLmg6CisgICAgICAgICogcGFsL2dyYXBoaWNzL1dlYkdQVS9XZWJHUFVSZW5kZXJQYXNzQ29s
b3JBdHRhY2htZW50Lmg6CisgICAgICAgICogcGFsL2dyYXBoaWNzL1dlYkdQVS9XZWJHUFVSZW5k
ZXJQYXNzRGVwdGhTdGVuY2lsQXR0YWNobWVudC5oOgorICAgICAgICAqIHBhbC9ncmFwaGljcy9X
ZWJHUFUvV2ViR1BVUmVuZGVyUGFzc0Rlc2NyaXB0b3IuaDoKKyAgICAgICAgKiBwYWwvZ3JhcGhp
Y3MvV2ViR1BVL1dlYkdQVVJlbmRlclBhc3NFbmNvZGVyLmg6CisgICAgICAgICogcGFsL2dyYXBo
aWNzL1dlYkdQVS9XZWJHUFVSZW5kZXJQYXNzTGF5b3V0Lmg6CisgICAgICAgICogcGFsL2dyYXBo
aWNzL1dlYkdQVS9XZWJHUFVTaGFkZXJNb2R1bGVDb21waWxhdGlvbkhpbnQuaDogQ29waWVkIGZy
b20gU291cmNlL1dlYkNvcmUvUEFML3BhbC9ncmFwaGljcy9XZWJHUFUvV2ViR1BVSW1hZ2VDb3B5
RXh0ZXJuYWxJbWFnZS5oLgorICAgICAgICAqIHBhbC9ncmFwaGljcy9XZWJHUFUvV2ViR1BVU2hh
ZGVyTW9kdWxlRGVzY3JpcHRvci5oOgorICAgICAgICAqIHBhbC9ncmFwaGljcy9XZWJHUFUvV2Vi
R1BVVGV4dHVyZURlc2NyaXB0b3IuaDoKKyAgICAgICAgKiBwYWwvZ3JhcGhpY3MvV2ViR1BVL1dl
YkdQVVRleHR1cmVGb3JtYXQuaDoKKwogMjAyMi0wMi0xNSAgQWxleCBDaHJpc3RlbnNlbiAgPGFj
aHJpc3RlbnNlbkB3ZWJraXQub3JnPgogCiAgICAgICAgIEZpeCBpbnRlcm5hbCBCaWcgU3VyIGJ1
aWxkCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViR1BVL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJHUFUv
Q2hhbmdlTG9nCmluZGV4IDgxZTMwMTUzMzEzNWEwZTM3NzUzN2EyMDRkNmVmMzBlODY2MjY0MmUu
LmFmNjM0MjA4YzY2NDg5NTVjMmNkODgyMTc2NzMyZWY1NWRlOTZiYjkgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJHUFUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJHUFUvQ2hhbmdlTG9nCkBAIC0x
LDMgKzEsNDUgQEAKKzIwMjItMDItMTUgIE15bGVzIEMuIE1heGZpZWxkICA8bW1heGZpZWxkQGFw
cGxlLmNvbT4KKworICAgICAgICBbV2ViR1BVXSBVcGRhdGUgSURMcyBhbmQgc3R1YnMgdG8gbGF0
ZXN0IHZlcnNpb24gb2YgdGhlIHNwZWMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTIzNjYzOQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgICogV2ViR1BVL0FkYXB0ZXIuaDoKKyAgICAgICAgKiBXZWJHUFUvQWRh
cHRlci5tbToKKyAgICAgICAgKFdlYkdQVTo6QWRhcHRlcjo6ZW51bWVyYXRlRmVhdHVyZXMpOgor
ICAgICAgICAod2dwdUFkYXB0ZXJFbnVtZXJhdGVGZWF0dXJlcyk6CisgICAgICAgIChXZWJHUFU6
OkFkYXB0ZXI6OmdldEZlYXR1cmVBdEluZGV4KTogRGVsZXRlZC4KKyAgICAgICAgKHdncHVBZGFw
dGVyR2V0RmVhdHVyZUF0SW5kZXgpOiBEZWxldGVkLgorICAgICAgICAqIFdlYkdQVS9Db21tYW5k
RW5jb2Rlci5oOgorICAgICAgICAqIFdlYkdQVS9Db21tYW5kRW5jb2Rlci5tbToKKyAgICAgICAg
KFdlYkdQVTo6Q29tbWFuZEVuY29kZXI6OmNsZWFyQnVmZmVyKToKKyAgICAgICAgKHdncHVDb21t
YW5kRW5jb2RlckNsZWFyQnVmZmVyKToKKyAgICAgICAgKFdlYkdQVTo6Q29tbWFuZEVuY29kZXI6
OmZpbGxCdWZmZXIpOiBEZWxldGVkLgorICAgICAgICAod2dwdUNvbW1hbmRFbmNvZGVyRmlsbEJ1
ZmZlcik6IERlbGV0ZWQuCisgICAgICAgICogV2ViR1BVL0NvbXB1dGVQYXNzRW5jb2Rlci5oOgor
ICAgICAgICAqIFdlYkdQVS9Db21wdXRlUGFzc0VuY29kZXIubW06CisgICAgICAgIChXZWJHUFU6
OkNvbXB1dGVQYXNzRW5jb2Rlcjo6d3JpdGVUaW1lc3RhbXApOiBEZWxldGVkLgorICAgICAgICAo
d2dwdUNvbXB1dGVQYXNzRW5jb2RlcldyaXRlVGltZXN0YW1wKTogRGVsZXRlZC4KKyAgICAgICAg
KiBXZWJHUFUvRGV2aWNlLmg6CisgICAgICAgICogV2ViR1BVL0RldmljZS5tbToKKyAgICAgICAg
KFdlYkdQVTo6RGV2aWNlOjplbnVtZXJhdGVGZWF0dXJlcyk6CisgICAgICAgIChXZWJHUFU6OkRl
dmljZTo6aGFzRmVhdHVyZSk6CisgICAgICAgICh3Z3B1RGV2aWNlRW51bWVyYXRlRmVhdHVyZXMp
OgorICAgICAgICAod2dwdURldmljZUhhc0ZlYXR1cmUpOgorICAgICAgICAqIFdlYkdQVS9JbnN0
YW5jZS5tbToKKyAgICAgICAgKHdncHVHZXRQcm9jQWRkcmVzcyk6CisgICAgICAgICogV2ViR1BV
L1JlbmRlclBhc3NFbmNvZGVyLmg6CisgICAgICAgICogV2ViR1BVL1JlbmRlclBhc3NFbmNvZGVy
Lm1tOgorICAgICAgICAoV2ViR1BVOjpSZW5kZXJQYXNzRW5jb2Rlcjo6d3JpdGVUaW1lc3RhbXAp
OiBEZWxldGVkLgorICAgICAgICAod2dwdVJlbmRlclBhc3NFbmNvZGVyV3JpdGVUaW1lc3RhbXAp
OiBEZWxldGVkLgorICAgICAgICAqIFdlYkdQVS9TaGFkZXJNb2R1bGUuaDoKKyAgICAgICAgKiBX
ZWJHUFUvU2hhZGVyTW9kdWxlLm1tOgorICAgICAgICAoV2ViR1BVOjpTaGFkZXJNb2R1bGU6Omdl
dENvbXBpbGF0aW9uSW5mbyk6CisgICAgICAgICh3Z3B1U2hhZGVyTW9kdWxlR2V0Q29tcGlsYXRp
b25JbmZvKToKKyAgICAgICAgKiBXZWJHUFUvV2ViR1BVLmg6CisgICAgICAgICogV2ViR1BVL1dl
YkdQVUV4dC5oOgorCiAyMDIyLTAyLTE1ICBSb2JpbiBNb3Jpc3NldCAgPHJtb3Jpc3NldEBhcHBs
ZS5jb20+CiAKICAgICAgICAgW1dHU0xdIEltcGxlbWVudCBlbm91Z2ggb2YgdGhlIGxleGVyIGZv
ciB0aGUgc2ltcGxlc3Qgc2hhZGVycwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9DaGFuZ2VM
b2cgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwppbmRleCBkOGJkYjE5MWE0NmRiM2UxNGEzMmU4
NGY4NGMyMTMxNWRlNDRkM2Q2Li5hMjQ4N2M2NjdmZmZmNTBhNTUwOWY0MzZiZjg3YTAyMGY0ZmVh
ODAwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2Vi
S2l0L0NoYW5nZUxvZwpAQCAtMSwzICsxLDEyNCBAQAorMjAyMi0wMi0xNSAgTXlsZXMgQy4gTWF4
ZmllbGQgIDxtbWF4ZmllbGRAYXBwbGUuY29tPgorCisgICAgICAgIFtXZWJHUFVdIFVwZGF0ZSBJ
RExzIGFuZCBzdHVicyB0byBsYXRlc3QgdmVyc2lvbiBvZiB0aGUgc3BlYworICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjM2NjM5CisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBHUFVQcm9jZXNzL2dyYXBoaWNz
L1dlYkdQVS9SZW1vdGVCdWZmZXIuY3BwOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVCdWZmZXI6
Om1hcEFzeW5jKToKKyAgICAgICAgKiBHUFVQcm9jZXNzL2dyYXBoaWNzL1dlYkdQVS9SZW1vdGVC
dWZmZXIuaDoKKyAgICAgICAgKiBHUFVQcm9jZXNzL2dyYXBoaWNzL1dlYkdQVS9SZW1vdGVCdWZm
ZXIubWVzc2FnZXMuaW46CisgICAgICAgICogR1BVUHJvY2Vzcy9ncmFwaGljcy9XZWJHUFUvUmVt
b3RlQ29tbWFuZEVuY29kZXIuY3BwOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVDb21tYW5kRW5j
b2Rlcjo6Y2xlYXJCdWZmZXIpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVDb21tYW5kRW5jb2Rl
cjo6ZmlsbEJ1ZmZlcik6IERlbGV0ZWQuCisgICAgICAgICogR1BVUHJvY2Vzcy9ncmFwaGljcy9X
ZWJHUFUvUmVtb3RlQ29tbWFuZEVuY29kZXIuaDoKKyAgICAgICAgKiBHUFVQcm9jZXNzL2dyYXBo
aWNzL1dlYkdQVS9SZW1vdGVDb21tYW5kRW5jb2Rlci5tZXNzYWdlcy5pbjoKKyAgICAgICAgKiBH
UFVQcm9jZXNzL2dyYXBoaWNzL1dlYkdQVS9SZW1vdGVDb21wdXRlUGFzc0VuY29kZXIuY3BwOgor
ICAgICAgICAoV2ViS2l0OjpSZW1vdGVDb21wdXRlUGFzc0VuY29kZXI6OmRpc3BhdGNoKToKKyAg
ICAgICAgKFdlYktpdDo6UmVtb3RlQ29tcHV0ZVBhc3NFbmNvZGVyOjplbmQpOgorICAgICAgICAo
V2ViS2l0OjpSZW1vdGVDb21wdXRlUGFzc0VuY29kZXI6OmJlZ2luUGlwZWxpbmVTdGF0aXN0aWNz
UXVlcnkpOiBEZWxldGVkLgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVDb21wdXRlUGFzc0VuY29k
ZXI6OmVuZFBpcGVsaW5lU3RhdGlzdGljc1F1ZXJ5KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYktp
dDo6UmVtb3RlQ29tcHV0ZVBhc3NFbmNvZGVyOjplbmRQYXNzKTogRGVsZXRlZC4KKyAgICAgICAg
KiBHUFVQcm9jZXNzL2dyYXBoaWNzL1dlYkdQVS9SZW1vdGVDb21wdXRlUGFzc0VuY29kZXIuaDoK
KyAgICAgICAgKiBHUFVQcm9jZXNzL2dyYXBoaWNzL1dlYkdQVS9SZW1vdGVDb21wdXRlUGFzc0Vu
Y29kZXIubWVzc2FnZXMuaW46CisgICAgICAgICogR1BVUHJvY2Vzcy9ncmFwaGljcy9XZWJHUFUv
UmVtb3RlUmVuZGVyUGFzc0VuY29kZXIuY3BwOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVSZW5k
ZXJQYXNzRW5jb2Rlcjo6ZW5kKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlUmVuZGVyUGFzc0Vu
Y29kZXI6OmJlZ2luUGlwZWxpbmVTdGF0aXN0aWNzUXVlcnkpOiBEZWxldGVkLgorICAgICAgICAo
V2ViS2l0OjpSZW1vdGVSZW5kZXJQYXNzRW5jb2Rlcjo6ZW5kUGlwZWxpbmVTdGF0aXN0aWNzUXVl
cnkpOiBEZWxldGVkLgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVSZW5kZXJQYXNzRW5jb2Rlcjo6
ZW5kUGFzcyk6IERlbGV0ZWQuCisgICAgICAgICogR1BVUHJvY2Vzcy9ncmFwaGljcy9XZWJHUFUv
UmVtb3RlUmVuZGVyUGFzc0VuY29kZXIuaDoKKyAgICAgICAgKiBHUFVQcm9jZXNzL2dyYXBoaWNz
L1dlYkdQVS9SZW1vdGVSZW5kZXJQYXNzRW5jb2Rlci5tZXNzYWdlcy5pbjoKKyAgICAgICAgKiBT
aGFyZWQvV2ViR1BVL1dlYkdQVUNhbnZhc0NvbmZpZ3VyYXRpb24uY3BwOgorICAgICAgICAoV2Vi
S2l0OjpXZWJHUFU6OkNvbnZlcnRUb0JhY2tpbmdDb250ZXh0Ojpjb252ZXJ0VG9CYWNraW5nKToK
KyAgICAgICAgKFdlYktpdDo6V2ViR1BVOjpDb252ZXJ0RnJvbUJhY2tpbmdDb250ZXh0Ojpjb252
ZXJ0RnJvbUJhY2tpbmcpOgorICAgICAgICAqIFNoYXJlZC9XZWJHUFUvV2ViR1BVQ2FudmFzQ29u
ZmlndXJhdGlvbi5oOgorICAgICAgICAoV2ViS2l0OjpXZWJHUFU6OkNhbnZhc0NvbmZpZ3VyYXRp
b246OmVuY29kZSBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6OldlYkdQVTo6Q2FudmFzQ29uZmln
dXJhdGlvbjo6ZGVjb2RlKToKKyAgICAgICAgKiBTaGFyZWQvV2ViR1BVL1dlYkdQVUNvbnZlcnRG
cm9tQmFja2luZ0NvbnRleHQuaDoKKyAgICAgICAgKiBTaGFyZWQvV2ViR1BVL1dlYkdQVUNvbnZl
cnRUb0JhY2tpbmdDb250ZXh0Lmg6CisgICAgICAgICogU2hhcmVkL1dlYkdQVS9XZWJHUFVGcmFn
bWVudFN0YXRlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViR1BVOjpDb252ZXJ0VG9CYWNraW5n
Q29udGV4dDo6Y29udmVydFRvQmFja2luZyk6CisgICAgICAgIChXZWJLaXQ6OldlYkdQVTo6Q29u
dmVydEZyb21CYWNraW5nQ29udGV4dDo6Y29udmVydEZyb21CYWNraW5nKToKKyAgICAgICAgKiBT
aGFyZWQvV2ViR1BVL1dlYkdQVUZyYWdtZW50U3RhdGUuaDoKKyAgICAgICAgKFdlYktpdDo6V2Vi
R1BVOjpGcmFnbWVudFN0YXRlOjpkZWNvZGUpOgorICAgICAgICAqIFNoYXJlZC9XZWJHUFUvV2Vi
R1BVSW1hZ2VDb3B5RXh0ZXJuYWxJbWFnZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYkdQVTo6
Q29udmVydFRvQmFja2luZ0NvbnRleHQ6OmNvbnZlcnRUb0JhY2tpbmcpOgorICAgICAgICAoV2Vi
S2l0OjpXZWJHUFU6OkNvbnZlcnRGcm9tQmFja2luZ0NvbnRleHQ6OmNvbnZlcnRGcm9tQmFja2lu
Zyk6CisgICAgICAgICogU2hhcmVkL1dlYkdQVS9XZWJHUFVJbWFnZUNvcHlFeHRlcm5hbEltYWdl
Lmg6CisgICAgICAgIChXZWJLaXQ6OldlYkdQVTo6SW1hZ2VDb3B5RXh0ZXJuYWxJbWFnZTo6ZW5j
b2RlIGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6V2ViR1BVOjpJbWFnZUNvcHlFeHRlcm5hbElt
YWdlOjpkZWNvZGUpOgorICAgICAgICAqIFNoYXJlZC9XZWJHUFUvV2ViR1BVSW1hZ2VDb3B5VGV4
dHVyZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYkdQVTo6Q29udmVydFRvQmFja2luZ0NvbnRl
eHQ6OmNvbnZlcnRUb0JhY2tpbmcpOgorICAgICAgICAoV2ViS2l0OjpXZWJHUFU6OkNvbnZlcnRG
cm9tQmFja2luZ0NvbnRleHQ6OmNvbnZlcnRGcm9tQmFja2luZyk6CisgICAgICAgICogU2hhcmVk
L1dlYkdQVS9XZWJHUFVRdWVyeVNldERlc2NyaXB0b3IuY3BwOgorICAgICAgICAoV2ViS2l0OjpX
ZWJHUFU6OkNvbnZlcnRUb0JhY2tpbmdDb250ZXh0Ojpjb252ZXJ0VG9CYWNraW5nKToKKyAgICAg
ICAgKFdlYktpdDo6V2ViR1BVOjpDb252ZXJ0RnJvbUJhY2tpbmdDb250ZXh0Ojpjb252ZXJ0RnJv
bUJhY2tpbmcpOgorICAgICAgICAqIFNoYXJlZC9XZWJHUFUvV2ViR1BVUXVlcnlTZXREZXNjcmlw
dG9yLmg6CisgICAgICAgIChXZWJLaXQ6OldlYkdQVTo6UXVlcnlTZXREZXNjcmlwdG9yOjplbmNv
ZGUgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpXZWJHUFU6OlF1ZXJ5U2V0RGVzY3JpcHRvcjo6
ZGVjb2RlKToKKyAgICAgICAgKiBTaGFyZWQvV2ViR1BVL1dlYkdQVVJlbmRlclBhc3NDb2xvckF0
dGFjaG1lbnQuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJHUFU6OkNvbnZlcnRUb0JhY2tpbmdD
b250ZXh0Ojpjb252ZXJ0VG9CYWNraW5nKToKKyAgICAgICAgKFdlYktpdDo6V2ViR1BVOjpDb252
ZXJ0RnJvbUJhY2tpbmdDb250ZXh0Ojpjb252ZXJ0RnJvbUJhY2tpbmcpOgorICAgICAgICAqIFNo
YXJlZC9XZWJHUFUvV2ViR1BVUmVuZGVyUGFzc0NvbG9yQXR0YWNobWVudC5oOgorICAgICAgICAo
V2ViS2l0OjpXZWJHUFU6OlJlbmRlclBhc3NDb2xvckF0dGFjaG1lbnQ6OmVuY29kZSBjb25zdCk6
CisgICAgICAgIChXZWJLaXQ6OldlYkdQVTo6UmVuZGVyUGFzc0NvbG9yQXR0YWNobWVudDo6ZGVj
b2RlKToKKyAgICAgICAgKiBTaGFyZWQvV2ViR1BVL1dlYkdQVVJlbmRlclBhc3NEZXB0aFN0ZW5j
aWxBdHRhY2htZW50LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViR1BVOjpDb252ZXJ0VG9CYWNr
aW5nQ29udGV4dDo6Y29udmVydFRvQmFja2luZyk6CisgICAgICAgIChXZWJLaXQ6OldlYkdQVTo6
Q29udmVydEZyb21CYWNraW5nQ29udGV4dDo6Y29udmVydEZyb21CYWNraW5nKToKKyAgICAgICAg
KiBTaGFyZWQvV2ViR1BVL1dlYkdQVVJlbmRlclBhc3NEZXB0aFN0ZW5jaWxBdHRhY2htZW50Lmg6
CisgICAgICAgIChXZWJLaXQ6OldlYkdQVTo6UmVuZGVyUGFzc0RlcHRoU3RlbmNpbEF0dGFjaG1l
bnQ6OmVuY29kZSBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6OldlYkdQVTo6UmVuZGVyUGFzc0Rl
cHRoU3RlbmNpbEF0dGFjaG1lbnQ6OmRlY29kZSk6CisgICAgICAgICogU2hhcmVkL1dlYkdQVS9X
ZWJHUFVSZW5kZXJQYXNzRGVzY3JpcHRvci5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYkdQVTo6
Q29udmVydFRvQmFja2luZ0NvbnRleHQ6OmNvbnZlcnRUb0JhY2tpbmcpOgorICAgICAgICAoV2Vi
S2l0OjpXZWJHUFU6OkNvbnZlcnRGcm9tQmFja2luZ0NvbnRleHQ6OmNvbnZlcnRGcm9tQmFja2lu
Zyk6CisgICAgICAgICogU2hhcmVkL1dlYkdQVS9XZWJHUFVSZW5kZXJQYXNzRGVzY3JpcHRvci5o
OgorICAgICAgICAoV2ViS2l0OjpXZWJHUFU6OlJlbmRlclBhc3NEZXNjcmlwdG9yOjpkZWNvZGUp
OgorICAgICAgICAqIFNoYXJlZC9XZWJHUFUvV2ViR1BVUmVuZGVyUGFzc0xheW91dC5oOgorICAg
ICAgICAoV2ViS2l0OjpXZWJHUFU6OlJlbmRlclBhc3NMYXlvdXQ6OmRlY29kZSk6CisgICAgICAg
ICogU2hhcmVkL1dlYkdQVS9XZWJHUFVTaGFkZXJNb2R1bGVDb21waWxhdGlvbkhpbnQuY3BwOiBD
b3BpZWQgZnJvbSBTb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJHUFUvV2ViR1BVU2hhZGVyTW9kdWxl
RGVzY3JpcHRvci5jcHAuCisgICAgICAgIChXZWJLaXQ6OldlYkdQVTo6Q29udmVydFRvQmFja2lu
Z0NvbnRleHQ6OmNvbnZlcnRUb0JhY2tpbmcpOgorICAgICAgICAoV2ViS2l0OjpXZWJHUFU6OkNv
bnZlcnRGcm9tQmFja2luZ0NvbnRleHQ6OmNvbnZlcnRGcm9tQmFja2luZyk6CisgICAgICAgICog
U2hhcmVkL1dlYkdQVS9XZWJHUFVTaGFkZXJNb2R1bGVDb21waWxhdGlvbkhpbnQuaDogQ29waWVk
IGZyb20gU291cmNlL1dlYktpdC9TaGFyZWQvV2ViR1BVL1dlYkdQVUltYWdlQ29weUV4dGVybmFs
SW1hZ2UuaC4KKyAgICAgICAgKFdlYktpdDo6V2ViR1BVOjpTaGFkZXJNb2R1bGVDb21waWxhdGlv
bkhpbnQ6OmVuY29kZSBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6OldlYkdQVTo6U2hhZGVyTW9k
dWxlQ29tcGlsYXRpb25IaW50OjpkZWNvZGUpOgorICAgICAgICAqIFNoYXJlZC9XZWJHUFUvV2Vi
R1BVU2hhZGVyTW9kdWxlRGVzY3JpcHRvci5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYkdQVTo6
Q29udmVydFRvQmFja2luZ0NvbnRleHQ6OmNvbnZlcnRUb0JhY2tpbmcpOgorICAgICAgICAoV2Vi
S2l0OjpXZWJHUFU6OkNvbnZlcnRGcm9tQmFja2luZ0NvbnRleHQ6OmNvbnZlcnRGcm9tQmFja2lu
Zyk6CisgICAgICAgICogU2hhcmVkL1dlYkdQVS9XZWJHUFVTaGFkZXJNb2R1bGVEZXNjcmlwdG9y
Lmg6CisgICAgICAgIChXZWJLaXQ6OldlYkdQVTo6U2hhZGVyTW9kdWxlRGVzY3JpcHRvcjo6ZW5j
b2RlIGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6V2ViR1BVOjpTaGFkZXJNb2R1bGVEZXNjcmlw
dG9yOjpkZWNvZGUpOgorICAgICAgICAqIFNoYXJlZC9XZWJHUFUvV2ViR1BVVGV4dHVyZURlc2Ny
aXB0b3IuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJHUFU6OkNvbnZlcnRUb0JhY2tpbmdDb250
ZXh0Ojpjb252ZXJ0VG9CYWNraW5nKToKKyAgICAgICAgKFdlYktpdDo6V2ViR1BVOjpDb252ZXJ0
RnJvbUJhY2tpbmdDb250ZXh0Ojpjb252ZXJ0RnJvbUJhY2tpbmcpOgorICAgICAgICAqIFNoYXJl
ZC9XZWJHUFUvV2ViR1BVVGV4dHVyZURlc2NyaXB0b3IuaDoKKyAgICAgICAgKFdlYktpdDo6V2Vi
R1BVOjpUZXh0dXJlRGVzY3JpcHRvcjo6ZW5jb2RlIGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6
V2ViR1BVOjpUZXh0dXJlRGVzY3JpcHRvcjo6ZGVjb2RlKToKKyAgICAgICAgKiBTb3VyY2VzLnR4
dDoKKyAgICAgICAgKiBXZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAg
KiBXZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9XZWJHUFUvUmVtb3RlQnVmZmVyUHJveHkuY3BwOgor
ICAgICAgICAoV2ViS2l0OjpXZWJHUFU6OlJlbW90ZUJ1ZmZlclByb3h5OjptYXBBc3luYyk6Cisg
ICAgICAgIChXZWJLaXQ6OldlYkdQVTo6UmVtb3RlQnVmZmVyUHJveHk6OmdldE1hcHBlZFJhbmdl
KToKKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9XZWJHUFUvUmVtb3RlQnVmZmVy
UHJveHkuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9XZWJHUFUvUmVtb3Rl
Q29tbWFuZEVuY29kZXJQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYkdQVTo6UmVtb3Rl
Q29tbWFuZEVuY29kZXJQcm94eTo6Y2xlYXJCdWZmZXIpOgorICAgICAgICAoV2ViS2l0OjpXZWJH
UFU6OlJlbW90ZUNvbW1hbmRFbmNvZGVyUHJveHk6OmZpbGxCdWZmZXIpOiBEZWxldGVkLgorICAg
ICAgICAqIFdlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1dlYkdQVS9SZW1vdGVDb21tYW5kRW5jb2Rl
clByb3h5Lmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvV2ViR1BVL1JlbW90
ZUNvbXB1dGVQYXNzRW5jb2RlclByb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViR1BVOjpS
ZW1vdGVDb21wdXRlUGFzc0VuY29kZXJQcm94eTo6ZGlzcGF0Y2gpOgorICAgICAgICAoV2ViS2l0
OjpXZWJHUFU6OlJlbW90ZUNvbXB1dGVQYXNzRW5jb2RlclByb3h5OjplbmQpOgorICAgICAgICAo
V2ViS2l0OjpXZWJHUFU6OlJlbW90ZUNvbXB1dGVQYXNzRW5jb2RlclByb3h5OjpiZWdpblBpcGVs
aW5lU3RhdGlzdGljc1F1ZXJ5KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYktpdDo6V2ViR1BVOjpS
ZW1vdGVDb21wdXRlUGFzc0VuY29kZXJQcm94eTo6ZW5kUGlwZWxpbmVTdGF0aXN0aWNzUXVlcnkp
OiBEZWxldGVkLgorICAgICAgICAoV2ViS2l0OjpXZWJHUFU6OlJlbW90ZUNvbXB1dGVQYXNzRW5j
b2RlclByb3h5OjplbmRQYXNzKTogRGVsZXRlZC4KKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQVS9n
cmFwaGljcy9XZWJHUFUvUmVtb3RlQ29tcHV0ZVBhc3NFbmNvZGVyUHJveHkuaDoKKyAgICAgICAg
KiBXZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9XZWJHUFUvUmVtb3RlUXVldWVQcm94eS5oOgorICAg
ICAgICAqIFdlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1dlYkdQVS9SZW1vdGVSZW5kZXJQYXNzRW5j
b2RlclByb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViR1BVOjpSZW1vdGVSZW5kZXJQYXNz
RW5jb2RlclByb3h5OjplbmQpOgorICAgICAgICAoV2ViS2l0OjpXZWJHUFU6OlJlbW90ZVJlbmRl
clBhc3NFbmNvZGVyUHJveHk6OmJlZ2luUGlwZWxpbmVTdGF0aXN0aWNzUXVlcnkpOiBEZWxldGVk
LgorICAgICAgICAoV2ViS2l0OjpXZWJHUFU6OlJlbW90ZVJlbmRlclBhc3NFbmNvZGVyUHJveHk6
OmVuZFBpcGVsaW5lU3RhdGlzdGljc1F1ZXJ5KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYktpdDo6
V2ViR1BVOjpSZW1vdGVSZW5kZXJQYXNzRW5jb2RlclByb3h5OjplbmRQYXNzKTogRGVsZXRlZC4K
KyAgICAgICAgKiBXZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9XZWJHUFUvUmVtb3RlUmVuZGVyUGFz
c0VuY29kZXJQcm94eS5oOgorCiAyMDIyLTAyLTE1ICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBs
ZS5jb20+CiAKICAgICAgICAgRG8gcHJlbGltaW5hcnkgd29yayB0byBwYXNzIGRvbWFpbiBuYW1l
cyB0byBDb3JlTG9jYXRpb24KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMu
dHh0IGIvU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQKaW5kZXggMWQ2ODAxNTBlYmY5YzEx
MTliYzk1ZTYxMTc3MGVlMzM1MzAyZDAyZi4uNzhjNmQyYmE5NmZmNzNkMTljYWUyNWU5NTYxMTY1
ZjNmMjc1ZjJjOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQKKysr
IGIvU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQKQEAgLTE1MjgsNiArMTUyOCw3IEBAIGxp
c3QoQVBQRU5EIFdlYkNvcmVfTk9OX1NWR19JRExfRklMRVMKICAgICBNb2R1bGVzL1dlYkdQVS9H
UFVDb21tYW5kQnVmZmVyRGVzY3JpcHRvci5pZGwKICAgICBNb2R1bGVzL1dlYkdQVS9HUFVDb21t
YW5kRW5jb2Rlci5pZGwKICAgICBNb2R1bGVzL1dlYkdQVS9HUFVDb21tYW5kRW5jb2RlckRlc2Ny
aXB0b3IuaWRsCisgICAgTW9kdWxlcy9XZWJHUFUvR1BVQ29tbWFuZHNNaXhpbi5pZGwKICAgICBN
b2R1bGVzL1dlYkdQVS9HUFVDb21wYXJlRnVuY3Rpb24uaWRsCiAgICAgTW9kdWxlcy9XZWJHUFUv
R1BVQ29tcGlsYXRpb25JbmZvLmlkbAogICAgIE1vZHVsZXMvV2ViR1BVL0dQVUNvbXBpbGF0aW9u
TWVzc2FnZS5pZGwKQEAgLTE1MzksNiArMTU0MCw3IEBAIGxpc3QoQVBQRU5EIFdlYkNvcmVfTk9O
X1NWR19JRExfRklMRVMKICAgICBNb2R1bGVzL1dlYkdQVS9HUFVDb21wdXRlUGlwZWxpbmUuaWRs
CiAgICAgTW9kdWxlcy9XZWJHUFUvR1BVQ29tcHV0ZVBpcGVsaW5lRGVzY3JpcHRvci5pZGwKICAg
ICBNb2R1bGVzL1dlYkdQVS9HUFVDdWxsTW9kZS5pZGwKKyAgICBNb2R1bGVzL1dlYkdQVS9HUFVE
ZWJ1Z0NvbW1hbmRzTWl4aW4uaWRsCiAgICAgTW9kdWxlcy9XZWJHUFUvR1BVRGVwdGhTdGVuY2ls
U3RhdGUuaWRsCiAgICAgTW9kdWxlcy9XZWJHUFUvR1BVRGV2aWNlLmlkbAogICAgIE1vZHVsZXMv
V2ViR1BVL0dQVURldmljZURlc2NyaXB0b3IuaWRsCkBAIC0xNTc0LDcgKzE1NzYsNiBAQCBsaXN0
KEFQUEVORCBXZWJDb3JlX05PTl9TVkdfSURMX0ZJTEVTCiAgICAgTW9kdWxlcy9XZWJHUFUvR1BV
UGlwZWxpbmVEZXNjcmlwdG9yQmFzZS5pZGwKICAgICBNb2R1bGVzL1dlYkdQVS9HUFVQaXBlbGlu
ZUxheW91dC5pZGwKICAgICBNb2R1bGVzL1dlYkdQVS9HUFVQaXBlbGluZUxheW91dERlc2NyaXB0
b3IuaWRsCi0gICAgTW9kdWxlcy9XZWJHUFUvR1BVUGlwZWxpbmVTdGF0aXN0aWNOYW1lLmlkbAog
ICAgIE1vZHVsZXMvV2ViR1BVL0dQVVBvd2VyUHJlZmVyZW5jZS5pZGwKICAgICBNb2R1bGVzL1dl
YkdQVS9HUFVQcmVkZWZpbmVkQ29sb3JTcGFjZS5pZGwKICAgICBNb2R1bGVzL1dlYkdQVS9HUFVQ
cmltaXRpdmVTdGF0ZS5pZGwKQEAgLTE2MDUsNiArMTYwNiw3IEBAIGxpc3QoQVBQRU5EIFdlYkNv
cmVfTk9OX1NWR19JRExfRklMRVMKICAgICBNb2R1bGVzL1dlYkdQVS9HUFVTYW1wbGVyQmluZGlu
Z1R5cGUuaWRsCiAgICAgTW9kdWxlcy9XZWJHUFUvR1BVU2FtcGxlckRlc2NyaXB0b3IuaWRsCiAg
ICAgTW9kdWxlcy9XZWJHUFUvR1BVU2hhZGVyTW9kdWxlLmlkbAorICAgIE1vZHVsZXMvV2ViR1BV
L0dQVVNoYWRlck1vZHVsZUNvbXBpbGF0aW9uSGludC5pZGwKICAgICBNb2R1bGVzL1dlYkdQVS9H
UFVTaGFkZXJNb2R1bGVEZXNjcmlwdG9yLmlkbAogICAgIE1vZHVsZXMvV2ViR1BVL0dQVVNoYWRl
clN0YWdlLmlkbAogICAgIE1vZHVsZXMvV2ViR1BVL0dQVVN0ZW5jaWxGYWNlU3RhdGUuaWRsCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9EZXJpdmVkU291cmNlcy1pbnB1dC54Y2ZpbGVsaXN0
IGIvU291cmNlL1dlYkNvcmUvRGVyaXZlZFNvdXJjZXMtaW5wdXQueGNmaWxlbGlzdAppbmRleCBh
ODBjZTEzMzIwZWU1YTIzOWQ2M2Q3MmZlMjRlZmMzZGQ2ODhmYjAwLi41OTg1MjNhNDc5NDcxNDdm
YjgwNzU1NTQ1YmUzZjY4MDA1MGMzODUxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9EZXJp
dmVkU291cmNlcy1pbnB1dC54Y2ZpbGVsaXN0CisrKyBiL1NvdXJjZS9XZWJDb3JlL0Rlcml2ZWRT
b3VyY2VzLWlucHV0LnhjZmlsZWxpc3QKQEAgLTYzLDYgKzYzLDcgQEAgJChQUk9KRUNUX0RJUikv
TW9kdWxlcy9XZWJHUFUvR1BVQ29tbWFuZEJ1ZmZlci5pZGwKICQoUFJPSkVDVF9ESVIpL01vZHVs
ZXMvV2ViR1BVL0dQVUNvbW1hbmRCdWZmZXJEZXNjcmlwdG9yLmlkbAogJChQUk9KRUNUX0RJUikv
TW9kdWxlcy9XZWJHUFUvR1BVQ29tbWFuZEVuY29kZXIuaWRsCiAkKFBST0pFQ1RfRElSKS9Nb2R1
bGVzL1dlYkdQVS9HUFVDb21tYW5kRW5jb2RlckRlc2NyaXB0b3IuaWRsCiskKFBST0pFQ1RfRElS
KS9Nb2R1bGVzL1dlYkdQVS9HUFVDb21tYW5kc01peGluLmlkbAogJChQUk9KRUNUX0RJUikvTW9k
dWxlcy9XZWJHUFUvR1BVQ29tcGFyZUZ1bmN0aW9uLmlkbAogJChQUk9KRUNUX0RJUikvTW9kdWxl
cy9XZWJHUFUvR1BVQ29tcGlsYXRpb25JbmZvLmlkbAogJChQUk9KRUNUX0RJUikvTW9kdWxlcy9X
ZWJHUFUvR1BVQ29tcGlsYXRpb25NZXNzYWdlLmlkbApAQCAtNzQsNiArNzUsNyBAQCAkKFBST0pF
Q1RfRElSKS9Nb2R1bGVzL1dlYkdQVS9HUFVDb21wdXRlUGFzc1RpbWVzdGFtcFdyaXRlLmlkbAog
JChQUk9KRUNUX0RJUikvTW9kdWxlcy9XZWJHUFUvR1BVQ29tcHV0ZVBpcGVsaW5lLmlkbAogJChQ
Uk9KRUNUX0RJUikvTW9kdWxlcy9XZWJHUFUvR1BVQ29tcHV0ZVBpcGVsaW5lRGVzY3JpcHRvci5p
ZGwKICQoUFJPSkVDVF9ESVIpL01vZHVsZXMvV2ViR1BVL0dQVUN1bGxNb2RlLmlkbAorJChQUk9K
RUNUX0RJUikvTW9kdWxlcy9XZWJHUFUvR1BVRGVidWdDb21tYW5kc01peGluLmlkbAogJChQUk9K
RUNUX0RJUikvTW9kdWxlcy9XZWJHUFUvR1BVRGVwdGhTdGVuY2lsU3RhdGUuaWRsCiAkKFBST0pF
Q1RfRElSKS9Nb2R1bGVzL1dlYkdQVS9HUFVEZXZpY2UuaWRsCiAkKFBST0pFQ1RfRElSKS9Nb2R1
bGVzL1dlYkdQVS9HUFVEZXZpY2VEZXNjcmlwdG9yLmlkbApAQCAtMTQwLDYgKzE0Miw3IEBAICQo
UFJPSkVDVF9ESVIpL01vZHVsZXMvV2ViR1BVL0dQVVNhbXBsZXJCaW5kaW5nTGF5b3V0LmlkbAog
JChQUk9KRUNUX0RJUikvTW9kdWxlcy9XZWJHUFUvR1BVU2FtcGxlckJpbmRpbmdUeXBlLmlkbAog
JChQUk9KRUNUX0RJUikvTW9kdWxlcy9XZWJHUFUvR1BVU2FtcGxlckRlc2NyaXB0b3IuaWRsCiAk
KFBST0pFQ1RfRElSKS9Nb2R1bGVzL1dlYkdQVS9HUFVTaGFkZXJNb2R1bGUuaWRsCiskKFBST0pF
Q1RfRElSKS9Nb2R1bGVzL1dlYkdQVS9HUFVTaGFkZXJNb2R1bGVDb21waWxhdGlvbkhpbnQuaWRs
CiAkKFBST0pFQ1RfRElSKS9Nb2R1bGVzL1dlYkdQVS9HUFVTaGFkZXJNb2R1bGVEZXNjcmlwdG9y
LmlkbAogJChQUk9KRUNUX0RJUikvTW9kdWxlcy9XZWJHUFUvR1BVU2hhZGVyU3RhZ2UuaWRsCiAk
KFBST0pFQ1RfRElSKS9Nb2R1bGVzL1dlYkdQVS9HUFVTaXplNjQuaWRsCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9EZXJpdmVkU291cmNlcy1vdXRwdXQueGNmaWxlbGlzdCBiL1NvdXJjZS9X
ZWJDb3JlL0Rlcml2ZWRTb3VyY2VzLW91dHB1dC54Y2ZpbGVsaXN0CmluZGV4IGZhZjFkOWY4ODg4
ODRjOTM0Y2I0YmVmMDBiMTExZTdmYjIzNzBhNzIuLjU5MWM0ZTEzOTI3NjZiM2RiMWNmMTllZjk2
YjZkZGE4YzJiOTg0NjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0Rlcml2ZWRTb3VyY2Vz
LW91dHB1dC54Y2ZpbGVsaXN0CisrKyBiL1NvdXJjZS9XZWJDb3JlL0Rlcml2ZWRTb3VyY2VzLW91
dHB1dC54Y2ZpbGVsaXN0CkBAIC05NDEsNiArOTQxLDggQEAgJChCVUlMVF9QUk9EVUNUU19ESVIp
L0Rlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNHUFVDb21tYW5kRW5jb2Rlci5jcHAKICQoQlVJTFRf
UFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTR1BVQ29tbWFuZEVuY29kZXIu
aAogJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNHUFVDb21t
YW5kRW5jb2RlckRlc2NyaXB0b3IuY3BwCiAkKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNv
dXJjZXMvV2ViQ29yZS9KU0dQVUNvbW1hbmRFbmNvZGVyRGVzY3JpcHRvci5oCiskKEJVSUxUX1BS
T0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU0dQVUNvbW1hbmRzTWl4aW4uY3Bw
CiskKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU0dQVUNvbW1h
bmRzTWl4aW4uaAogJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYkNvcmUv
SlNHUFVDb21wYXJlRnVuY3Rpb24uY3BwCiAkKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNv
dXJjZXMvV2ViQ29yZS9KU0dQVUNvbXBhcmVGdW5jdGlvbi5oCiAkKEJVSUxUX1BST0RVQ1RTX0RJ
UikvRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU0dQVUNvbXBpbGF0aW9uSW5mby5jcHAKQEAgLTk2
Myw2ICs5NjUsOCBAQCAkKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViQ29y
ZS9KU0dQVUNvbXB1dGVQaXBlbGluZURlc2NyaXB0b3IuY3BwCiAkKEJVSUxUX1BST0RVQ1RTX0RJ
UikvRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU0dQVUNvbXB1dGVQaXBlbGluZURlc2NyaXB0b3Iu
aAogJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNHUFVDdWxs
TW9kZS5jcHAKICQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJDb3JlL0pT
R1BVQ3VsbE1vZGUuaAorJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYkNv
cmUvSlNHUFVEZWJ1Z0NvbW1hbmRzTWl4aW4uY3BwCiskKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVy
aXZlZFNvdXJjZXMvV2ViQ29yZS9KU0dQVURlYnVnQ29tbWFuZHNNaXhpbi5oCiAkKEJVSUxUX1BS
T0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU0dQVURlcHRoU3RlbmNpbFN0YXRl
LmNwcAogJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNHUFVE
ZXB0aFN0ZW5jaWxTdGF0ZS5oCiAkKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMv
V2ViQ29yZS9KU0dQVURldmljZS5jcHAKQEAgLTEwOTUsNiArMTA5OSw4IEBAICQoQlVJTFRfUFJP
RFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTR1BVU2FtcGxlckRlc2NyaXB0b3Iu
Y3BwCiAkKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU0dQVVNh
bXBsZXJEZXNjcmlwdG9yLmgKICQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9X
ZWJDb3JlL0pTR1BVU2hhZGVyTW9kdWxlLmNwcAogJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2
ZWRTb3VyY2VzL1dlYkNvcmUvSlNHUFVTaGFkZXJNb2R1bGUuaAorJChCVUlMVF9QUk9EVUNUU19E
SVIpL0Rlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNHUFVTaGFkZXJNb2R1bGVDb21waWxhdGlvbkhp
bnQuY3BwCiskKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU0dQ
VVNoYWRlck1vZHVsZUNvbXBpbGF0aW9uSGludC5oCiAkKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVy
aXZlZFNvdXJjZXMvV2ViQ29yZS9KU0dQVVNoYWRlck1vZHVsZURlc2NyaXB0b3IuY3BwCiAkKEJV
SUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU0dQVVNoYWRlck1vZHVs
ZURlc2NyaXB0b3IuaAogJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYkNv
cmUvSlNHUFVTaGFkZXJTdGFnZS5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0Rlcml2
ZWRTb3VyY2VzLm1ha2UgYi9Tb3VyY2UvV2ViQ29yZS9EZXJpdmVkU291cmNlcy5tYWtlCmluZGV4
IDIxYTY1YjkzMTNhZTdjNTNiYjE1ODA0M2Y1NDczZDI5YmRmMDI3MGUuLmM0ODBkOWUyNTVlNGYw
Y2FmY2UxYjMwMTQ2OWUyZmU3NTBjODcyNzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0Rl
cml2ZWRTb3VyY2VzLm1ha2UKKysrIGIvU291cmNlL1dlYkNvcmUvRGVyaXZlZFNvdXJjZXMubWFr
ZQpAQCAtODYsNiArODYsNyBAQCBKU19CSU5ESU5HX0lETFMgOj0gXAogICAgICQoV2ViQ29yZSkv
TW9kdWxlcy9XZWJHUFUvR1BVQ29tbWFuZEJ1ZmZlckRlc2NyaXB0b3IuaWRsIFwKICAgICAkKFdl
YkNvcmUpL01vZHVsZXMvV2ViR1BVL0dQVUNvbW1hbmRFbmNvZGVyLmlkbCBcCiAgICAgJChXZWJD
b3JlKS9Nb2R1bGVzL1dlYkdQVS9HUFVDb21tYW5kRW5jb2RlckRlc2NyaXB0b3IuaWRsIFwKKyAg
ICAkKFdlYkNvcmUpL01vZHVsZXMvV2ViR1BVL0dQVUNvbW1hbmRzTWl4aW4uaWRsIFwKICAgICAk
KFdlYkNvcmUpL01vZHVsZXMvV2ViR1BVL0dQVUNvbXBhcmVGdW5jdGlvbi5pZGwgXAogICAgICQo
V2ViQ29yZSkvTW9kdWxlcy9XZWJHUFUvR1BVQ29tcGlsYXRpb25JbmZvLmlkbCBcCiAgICAgJChX
ZWJDb3JlKS9Nb2R1bGVzL1dlYkdQVS9HUFVDb21waWxhdGlvbk1lc3NhZ2UuaWRsIFwKQEAgLTk3
LDYgKzk4LDcgQEAgSlNfQklORElOR19JRExTIDo9IFwKICAgICAkKFdlYkNvcmUpL01vZHVsZXMv
V2ViR1BVL0dQVUNvbXB1dGVQaXBlbGluZS5pZGwgXAogICAgICQoV2ViQ29yZSkvTW9kdWxlcy9X
ZWJHUFUvR1BVQ29tcHV0ZVBpcGVsaW5lRGVzY3JpcHRvci5pZGwgXAogICAgICQoV2ViQ29yZSkv
TW9kdWxlcy9XZWJHUFUvR1BVQ3VsbE1vZGUuaWRsIFwKKyAgICAkKFdlYkNvcmUpL01vZHVsZXMv
V2ViR1BVL0dQVURlYnVnQ29tbWFuZHNNaXhpbi5pZGwgXAogICAgICQoV2ViQ29yZSkvTW9kdWxl
cy9XZWJHUFUvR1BVRGVwdGhTdGVuY2lsU3RhdGUuaWRsIFwKICAgICAkKFdlYkNvcmUpL01vZHVs
ZXMvV2ViR1BVL0dQVURldmljZS5pZGwgXAogICAgICQoV2ViQ29yZSkvTW9kdWxlcy9XZWJHUFUv
R1BVRGV2aWNlRGVzY3JpcHRvci5pZGwgXApAQCAtMTMyLDcgKzEzNCw2IEBAIEpTX0JJTkRJTkdf
SURMUyA6PSBcCiAgICAgJChXZWJDb3JlKS9Nb2R1bGVzL1dlYkdQVS9HUFVQaXBlbGluZURlc2Ny
aXB0b3JCYXNlLmlkbCBcCiAgICAgJChXZWJDb3JlKS9Nb2R1bGVzL1dlYkdQVS9HUFVQaXBlbGlu
ZUxheW91dC5pZGwgXAogICAgICQoV2ViQ29yZSkvTW9kdWxlcy9XZWJHUFUvR1BVUGlwZWxpbmVM
YXlvdXREZXNjcmlwdG9yLmlkbCBcCi0gICAgJChXZWJDb3JlKS9Nb2R1bGVzL1dlYkdQVS9HUFVQ
aXBlbGluZVN0YXRpc3RpY05hbWUuaWRsIFwKICAgICAkKFdlYkNvcmUpL01vZHVsZXMvV2ViR1BV
L0dQVVBvd2VyUHJlZmVyZW5jZS5pZGwgXAogICAgICQoV2ViQ29yZSkvTW9kdWxlcy9XZWJHUFUv
R1BVUHJlZGVmaW5lZENvbG9yU3BhY2UuaWRsIFwKICAgICAkKFdlYkNvcmUpL01vZHVsZXMvV2Vi
R1BVL0dQVVByaW1pdGl2ZVN0YXRlLmlkbCBcCkBAIC0xNjMsNiArMTY0LDcgQEAgSlNfQklORElO
R19JRExTIDo9IFwKICAgICAkKFdlYkNvcmUpL01vZHVsZXMvV2ViR1BVL0dQVVNhbXBsZXJCaW5k
aW5nVHlwZS5pZGwgXAogICAgICQoV2ViQ29yZSkvTW9kdWxlcy9XZWJHUFUvR1BVU2FtcGxlckRl
c2NyaXB0b3IuaWRsIFwKICAgICAkKFdlYkNvcmUpL01vZHVsZXMvV2ViR1BVL0dQVVNoYWRlck1v
ZHVsZS5pZGwgXAorICAgICQoV2ViQ29yZSkvTW9kdWxlcy9XZWJHUFUvR1BVU2hhZGVyTW9kdWxl
Q29tcGlsYXRpb25IaW50LmlkbCBcCiAgICAgJChXZWJDb3JlKS9Nb2R1bGVzL1dlYkdQVS9HUFVT
aGFkZXJNb2R1bGVEZXNjcmlwdG9yLmlkbCBcCiAgICAgJChXZWJDb3JlKS9Nb2R1bGVzL1dlYkdQ
VS9HUFVTaGFkZXJTdGFnZS5pZGwgXAogICAgICQoV2ViQ29yZSkvTW9kdWxlcy9XZWJHUFUvR1BV
U3RlbmNpbEZhY2VTdGF0ZS5pZGwgXApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvSGVhZGVy
cy5jbWFrZSBiL1NvdXJjZS9XZWJDb3JlL0hlYWRlcnMuY21ha2UKaW5kZXggYWM3NDZhOWU1ZWY1
YjRhNGQwZGZjZmE0ZGMxYTQ1YjkxZGM1NDJlYS4uZmVhMTQ5MGU5ZGEwMWQyYTJlODY2MmViZTIz
YmYyNzU5NjU5YjZhNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvSGVhZGVycy5jbWFrZQor
KysgYi9Tb3VyY2UvV2ViQ29yZS9IZWFkZXJzLmNtYWtlCkBAIC03MSw3ICs3MSw2IEBAIHNldChX
ZWJDb3JlX1BSSVZBVEVfRlJBTUVXT1JLX0hFQURFUlMKICAgICBNb2R1bGVzL1dlYkdQVS9HUFVQ
aXBlbGluZURlc2NyaXB0b3JCYXNlLmgKICAgICBNb2R1bGVzL1dlYkdQVS9HUFVQaXBlbGluZUxh
eW91dC5oCiAgICAgTW9kdWxlcy9XZWJHUFUvR1BVUGlwZWxpbmVMYXlvdXREZXNjcmlwdG9yLmgK
LSAgICBNb2R1bGVzL1dlYkdQVS9HUFVQaXBlbGluZVN0YXRpc3RpY05hbWUuaAogICAgIE1vZHVs
ZXMvV2ViR1BVL0dQVVBvd2VyUHJlZmVyZW5jZS5oCiAgICAgTW9kdWxlcy9XZWJHUFUvR1BVUHJl
ZGVmaW5lZENvbG9yU3BhY2UuaAogICAgIE1vZHVsZXMvV2ViR1BVL0dQVVByaW1pdGl2ZVN0YXRl
LmgKQEAgLTEwMCw2ICs5OSw3IEBAIHNldChXZWJDb3JlX1BSSVZBVEVfRlJBTUVXT1JLX0hFQURF
UlMKICAgICBNb2R1bGVzL1dlYkdQVS9HUFVTYW1wbGVyQmluZGluZ1R5cGUuaAogICAgIE1vZHVs
ZXMvV2ViR1BVL0dQVVNhbXBsZXJEZXNjcmlwdG9yLmgKICAgICBNb2R1bGVzL1dlYkdQVS9HUFVT
aGFkZXJNb2R1bGUuaAorICAgIE1vZHVsZXMvV2ViR1BVL0dQVVNoYWRlck1vZHVsZUNvbXBpbGF0
aW9uSGludC5oCiAgICAgTW9kdWxlcy9XZWJHUFUvR1BVU2hhZGVyTW9kdWxlRGVzY3JpcHRvci5o
CiAgICAgTW9kdWxlcy9XZWJHUFUvR1BVU2hhZGVyU3RhZ2UuaAogICAgIE1vZHVsZXMvV2ViR1BV
L0dQVVN0ZW5jaWxGYWNlU3RhdGUuaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9XZWJHUFUvR1BVQnVmZmVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvV2ViR1BVL0dQ
VUJ1ZmZlci5jcHAKaW5kZXggN2ZkNDg1NzJhOWU1NzNjOTliMDNmYjMzMjhiMjRkOTY0MWMyNzQ5
Ny4uNGM5NGE0ZmQ5MTc4NzBjYjQwYzRmZjk0ZTgwMWM0YTFlZTMyYjAzYyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9XZWJHUFUvR1BVQnVmZmVyLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL1dlYkdQVS9HUFVCdWZmZXIuY3BwCkBAIC0zOCwxNCArMzgsMTQgQEAg
dm9pZCBHUFVCdWZmZXI6OnNldExhYmVsKFN0cmluZyYmIGxhYmVsKQogICAgIG1fYmFja2luZy0+
c2V0TGFiZWwoV1RGTW92ZShsYWJlbCkpOwogfQogCi12b2lkIEdQVUJ1ZmZlcjo6bWFwQXN5bmMo
R1BVTWFwTW9kZUZsYWdzIG1vZGUsIHN0ZDo6b3B0aW9uYWw8R1BVU2l6ZTY0PiBvZmZzZXQsIHN0
ZDo6b3B0aW9uYWw8R1BVU2l6ZTY0PiBzaXplLCBNYXBBc3luY1Byb21pc2UmJiBwcm9taXNlKQor
dm9pZCBHUFVCdWZmZXI6Om1hcEFzeW5jKEdQVU1hcE1vZGVGbGFncyBtb2RlLCBHUFVTaXplNjQg
b2Zmc2V0LCBzdGQ6Om9wdGlvbmFsPEdQVVNpemU2ND4gc2l6ZSwgTWFwQXN5bmNQcm9taXNlJiYg
cHJvbWlzZSkKIHsKICAgICBtX2JhY2tpbmctPm1hcEFzeW5jKGNvbnZlcnRNYXBNb2RlRmxhZ3NU
b0JhY2tpbmcobW9kZSksIG9mZnNldCwgc2l6ZSwgW3Byb21pc2UgPSBXVEZNb3ZlKHByb21pc2Up
XSAoKSBtdXRhYmxlIHsKICAgICAgICAgcHJvbWlzZS5yZXNvbHZlKG51bGxwdHIpOwogICAgIH0p
OwogfQogCi1SZWY8SlNDOjpBcnJheUJ1ZmZlcj4gR1BVQnVmZmVyOjpnZXRNYXBwZWRSYW5nZShz
dGQ6Om9wdGlvbmFsPEdQVVNpemU2ND4gb2Zmc2V0LCBzdGQ6Om9wdGlvbmFsPEdQVVNpemU2ND4g
c2l6ZSkKK1JlZjxKU0M6OkFycmF5QnVmZmVyPiBHUFVCdWZmZXI6OmdldE1hcHBlZFJhbmdlKEdQ
VVNpemU2NCBvZmZzZXQsIHN0ZDo6b3B0aW9uYWw8R1BVU2l6ZTY0PiBzaXplKQogewogICAgIGF1
dG8gbWFwcGVkUmFuZ2UgPSBtX2JhY2tpbmctPmdldE1hcHBlZFJhbmdlKG9mZnNldCwgc2l6ZSk7
CiAgICAgcmV0dXJuIEFycmF5QnVmZmVyOjpjcmVhdGUobWFwcGVkUmFuZ2Uuc291cmNlLCBtYXBw
ZWRSYW5nZS5ieXRlTGVuZ3RoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
V2ViR1BVL0dQVUJ1ZmZlci5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9XZWJHUFUvR1BVQnVm
ZmVyLmgKaW5kZXggYzYyOGNjMDY3YzA0MzEwMzBjOTZmNWM5MTZkMWNiOTJhODAwNzdkZS4uNDdl
OWU0NWFkMzk1ODIzNThhNTRlYTAxOGY0MjYwOTgxODkxODU1OSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9XZWJHUFUvR1BVQnVmZmVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9XZWJHUFUvR1BVQnVmZmVyLmgKQEAgLTQ5LDggKzQ5LDggQEAgcHVibGljOgogICAg
IHZvaWQgc2V0TGFiZWwoU3RyaW5nJiYpOwogCiAgICAgdXNpbmcgTWFwQXN5bmNQcm9taXNlID0g
RE9NUHJvbWlzZURlZmVycmVkPElETE51bGw+OwotICAgIHZvaWQgbWFwQXN5bmMoR1BVTWFwTW9k
ZUZsYWdzLCBzdGQ6Om9wdGlvbmFsPEdQVVNpemU2ND4gb2Zmc2V0LCBzdGQ6Om9wdGlvbmFsPEdQ
VVNpemU2ND4gc2l6ZUZvck1hcCwgTWFwQXN5bmNQcm9taXNlJiYpOwotICAgIFJlZjxKU0M6OkFy
cmF5QnVmZmVyPiBnZXRNYXBwZWRSYW5nZShzdGQ6Om9wdGlvbmFsPEdQVVNpemU2ND4gb2Zmc2V0
LCBzdGQ6Om9wdGlvbmFsPEdQVVNpemU2ND4gcmFuZ2VTaXplKTsKKyAgICB2b2lkIG1hcEFzeW5j
KEdQVU1hcE1vZGVGbGFncywgR1BVU2l6ZTY0IG9mZnNldCwgc3RkOjpvcHRpb25hbDxHUFVTaXpl
NjQ+IHNpemVGb3JNYXAsIE1hcEFzeW5jUHJvbWlzZSYmKTsKKyAgICBSZWY8SlNDOjpBcnJheUJ1
ZmZlcj4gZ2V0TWFwcGVkUmFuZ2UoR1BVU2l6ZTY0IG9mZnNldCwgc3RkOjpvcHRpb25hbDxHUFVT
aXplNjQ+IHJhbmdlU2l6ZSk7CiAgICAgdm9pZCB1bm1hcCgpOwogCiAgICAgdm9pZCBkZXN0cm95
KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL1dlYkdQVS9HUFVDYW52YXND
b25maWd1cmF0aW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL1dlYkdQVS9HUFVDYW52YXND
b25maWd1cmF0aW9uLmgKaW5kZXggNjk2MGU3ZGI4MWIyMmM5MDJlMzFiNjczNjdlNjY0MmZkMzBi
MzU5Zi4uYWY3NWI1YzQ4YjFiOWE1ZDg2NDNlYjE1OTIwNWIxYmRiZGVhZTVhMiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9XZWJHUFUvR1BVQ2FudmFzQ29uZmlndXJhdGlvbi5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvV2ViR1BVL0dQVUNhbnZhc0NvbmZpZ3VyYXRp
b24uaApAQCAtMzUsNiArMzUsNyBAQAogI2luY2x1ZGUgPG9wdGlvbmFsPgogI2luY2x1ZGUgPHBh
bC9ncmFwaGljcy9XZWJHUFUvV2ViR1BVQ2FudmFzQ29uZmlndXJhdGlvbi5oPgogI2luY2x1ZGUg
PHd0Zi9SZWZQdHIuaD4KKyNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CiAKIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIApAQCAtNDYsNiArNDcsOSBAQCBzdHJ1Y3QgR1BVQ2FudmFzQ29uZmlndXJhdGlvbiB7
CiAgICAgICAgICAgICBkZXZpY2UtPmJhY2tpbmcoKSwKICAgICAgICAgICAgIFdlYkNvcmU6OmNv
bnZlcnRUb0JhY2tpbmcoZm9ybWF0KSwKICAgICAgICAgICAgIGNvbnZlcnRUZXh0dXJlVXNhZ2VG
bGFnc1RvQmFja2luZyh1c2FnZSksCisgICAgICAgICAgICB2aWV3Rm9ybWF0cy5tYXAoW10gKGF1
dG8mIHZpZXdGb3JtYXQpIHsKKyAgICAgICAgICAgICAgICByZXR1cm4gV2ViQ29yZTo6Y29udmVy
dFRvQmFja2luZyh2aWV3Rm9ybWF0KTsKKyAgICAgICAgICAgIH0pLAogICAgICAgICAgICAgV2Vi
Q29yZTo6Y29udmVydFRvQmFja2luZyhjb2xvclNwYWNlKSwKICAgICAgICAgICAgIFdlYkNvcmU6
OmNvbnZlcnRUb0JhY2tpbmcoY29tcG9zaXRpbmdBbHBoYU1vZGUpLAogICAgICAgICAgICAgc2l6
ZSA/IHN0ZDo6b3B0aW9uYWwgeyBXZWJDb3JlOjpjb252ZXJ0VG9CYWNraW5nKCpzaXplKSB9IDog
c3RkOjpudWxsb3B0LApAQCAtNTUsNiArNTksNyBAQCBzdHJ1Y3QgR1BVQ2FudmFzQ29uZmlndXJh
dGlvbiB7CiAgICAgR1BVRGV2aWNlKiBkZXZpY2UgeyBudWxscHRyIH07CiAgICAgR1BVVGV4dHVy
ZUZvcm1hdCBmb3JtYXQgeyBHUFVUZXh0dXJlRm9ybWF0OjpSOHVub3JtIH07CiAgICAgR1BVVGV4
dHVyZVVzYWdlRmxhZ3MgdXNhZ2UgeyBHUFVUZXh0dXJlVXNhZ2U6OlJFTkRFUl9BVFRBQ0hNRU5U
IH07CisgICAgVmVjdG9yPEdQVVRleHR1cmVGb3JtYXQ+IHZpZXdGb3JtYXRzOwogICAgIEdQVVBy
ZWRlZmluZWRDb2xvclNwYWNlIGNvbG9yU3BhY2UgeyBHUFVQcmVkZWZpbmVkQ29sb3JTcGFjZTo6
U1JHQiB9OwogICAgIEdQVUNhbnZhc0NvbXBvc2l0aW5nQWxwaGFNb2RlIGNvbXBvc2l0aW5nQWxw
aGFNb2RlIHsgR1BVQ2FudmFzQ29tcG9zaXRpbmdBbHBoYU1vZGU6Ok9wYXF1ZSB9OwogICAgIHN0
ZDo6b3B0aW9uYWw8R1BVRXh0ZW50M0Q+IHNpemU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL1dlYkdQVS9HUFVDYW52YXNDb25maWd1cmF0aW9uLmlkbCBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvV2ViR1BVL0dQVUNhbnZhc0NvbmZpZ3VyYXRpb24uaWRsCmluZGV4IGZjYWM4
Y2RhOWZlZDAyMTZhNjFhNDc0NDY1N2UwNDA4YmJhOGM2YTEuLmIxNGEyYzc2MTliYjNjMTJmZTY3
YWUxOTg1ZmU2ZjdkY2U2MTNhNDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
V2ViR1BVL0dQVUNhbnZhc0NvbmZpZ3VyYXRpb24uaWRsCisrKyBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvV2ViR1BVL0dQVUNhbnZhc0NvbmZpZ3VyYXRpb24uaWRsCkBAIC0zNyw2ICszNyw3IEBA
IGRpY3Rpb25hcnkgR1BVQ2FudmFzQ29uZmlndXJhdGlvbiB7CiAgICAgcmVxdWlyZWQgR1BVRGV2
aWNlIGRldmljZTsKICAgICByZXF1aXJlZCBHUFVUZXh0dXJlRm9ybWF0IGZvcm1hdDsKICAgICBH
UFVUZXh0dXJlVXNhZ2VGbGFncyB1c2FnZSA9IDB4MTA7ICAvLyBHUFVUZXh0dXJlVXNhZ2UuUkVO
REVSX0FUVEFDSE1FTlQKKyAgICBzZXF1ZW5jZTxHUFVUZXh0dXJlRm9ybWF0PiB2aWV3Rm9ybWF0
cyA9IFtdOwogICAgIEdQVVByZWRlZmluZWRDb2xvclNwYWNlIGNvbG9yU3BhY2UgPSAic3JnYiI7
CiAgICAgR1BVQ2FudmFzQ29tcG9zaXRpbmdBbHBoYU1vZGUgY29tcG9zaXRpbmdBbHBoYU1vZGUg
PSAib3BhcXVlIjsKICAgICBHUFVFeHRlbnQzRCBzaXplOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9XZWJHUFUvR1BVQ29tbWFuZEVuY29kZXIuY3BwIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9XZWJHUFUvR1BVQ29tbWFuZEVuY29kZXIuY3BwCmluZGV4IDgxN2MzNTJlYzAw
YTJkZDUxZWU3YjE3ZDcwYzVkZjI1OGZmOGQ0YzUuLmJkZmQyZDQ5YjI5YzU4YmZiZjAyYjdiMmU2
YzUxMWZmN2ZlNDU5NDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvV2ViR1BV
L0dQVUNvbW1hbmRFbmNvZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL1dlYkdQ
VS9HUFVDb21tYW5kRW5jb2Rlci5jcHAKQEAgLTg1LDEyICs4NSwxMyBAQCB2b2lkIEdQVUNvbW1h
bmRFbmNvZGVyOjpjb3B5VGV4dHVyZVRvVGV4dHVyZSgKICAgICBtX2JhY2tpbmctPmNvcHlUZXh0
dXJlVG9UZXh0dXJlKHNvdXJjZS5jb252ZXJ0VG9CYWNraW5nKCksIGRlc3RpbmF0aW9uLmNvbnZl
cnRUb0JhY2tpbmcoKSwgY29udmVydFRvQmFja2luZyhjb3B5U2l6ZSkpOwogfQogCi12b2lkIEdQ
VUNvbW1hbmRFbmNvZGVyOjpmaWxsQnVmZmVyKAotICAgIGNvbnN0IEdQVUJ1ZmZlciYgZGVzdGlu
YXRpb24sCi0gICAgR1BVU2l6ZTY0IGRlc3RpbmF0aW9uT2Zmc2V0LAotICAgIEdQVVNpemU2NCBz
aXplKQorCit2b2lkIEdQVUNvbW1hbmRFbmNvZGVyOjpjbGVhckJ1ZmZlcigKKyAgICBjb25zdCBH
UFVCdWZmZXImIGJ1ZmZlciwKKyAgICBHUFVTaXplNjQgb2Zmc2V0LAorICAgIHN0ZDo6b3B0aW9u
YWw8R1BVU2l6ZTY0PiBzaXplKQogewotICAgIG1fYmFja2luZy0+ZmlsbEJ1ZmZlcihkZXN0aW5h
dGlvbi5iYWNraW5nKCksIGRlc3RpbmF0aW9uT2Zmc2V0LCBzaXplKTsKKyAgICBtX2JhY2tpbmct
PmNsZWFyQnVmZmVyKGJ1ZmZlci5iYWNraW5nKCksIG9mZnNldCwgc2l6ZSk7CiB9CiAKIHZvaWQg
R1BVQ29tbWFuZEVuY29kZXI6OnB1c2hEZWJ1Z0dyb3VwKFN0cmluZyYmIGdyb3VwTGFiZWwpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL1dlYkdQVS9HUFVDb21tYW5kRW5jb2Rl
ci5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9XZWJHUFUvR1BVQ29tbWFuZEVuY29kZXIuaApp
bmRleCBhMDFlMzI2ODQ1NDg4M2Q5YTZlNGJlMmQ4NjI2N2EyNWQwMDRkZDkwLi4xNzFhODRhZmJj
ZWNkZTJiNzA1MjM5ODE2NTYzZmY3MmRiZTg0OTk1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL1dlYkdQVS9HUFVDb21tYW5kRW5jb2Rlci5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvV2ViR1BVL0dQVUNvbW1hbmRFbmNvZGVyLmgKQEAgLTgxLDEwICs4MSwxMCBAQCBw
dWJsaWM6CiAgICAgICAgIGNvbnN0IEdQVUltYWdlQ29weVRleHR1cmUmIGRlc3RpbmF0aW9uLAog
ICAgICAgICBjb25zdCBHUFVFeHRlbnQzRCYgY29weVNpemUpOwogCi0gICAgdm9pZCBmaWxsQnVm
ZmVyKAotICAgICAgICBjb25zdCBHUFVCdWZmZXImIGRlc3RpbmF0aW9uLAotICAgICAgICBHUFVT
aXplNjQgZGVzdGluYXRpb25PZmZzZXQsCi0gICAgICAgIEdQVVNpemU2NCk7CisgICAgdm9pZCBj
bGVhckJ1ZmZlcigKKyAgICAgICAgY29uc3QgR1BVQnVmZmVyJiwKKyAgICAgICAgR1BVU2l6ZTY0
IG9mZnNldCwKKyAgICAgICAgc3RkOjpvcHRpb25hbDxHUFVTaXplNjQ+KTsKIAogICAgIHZvaWQg
cHVzaERlYnVnR3JvdXAoU3RyaW5nJiYgZ3JvdXBMYWJlbCk7CiAgICAgdm9pZCBwb3BEZWJ1Z0dy
b3VwKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL1dlYkdQVS9HUFVDb21t
YW5kRW5jb2Rlci5pZGwgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL1dlYkdQVS9HUFVDb21tYW5k
RW5jb2Rlci5pZGwKaW5kZXggYWE5NGNhMDM0NDdiZjVkYjExNGE3MDMxMDQzM2ZhODYwYjAyYTE0
My4uMjY3OTZmNmQ1MzE4YjMwNzY0OGI4MmI3ZDkwMjQ4MjU3MzM3NzA0NyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9XZWJHUFUvR1BVQ29tbWFuZEVuY29kZXIuaWRsCisrKyBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvV2ViR1BVL0dQVUNvbW1hbmRFbmNvZGVyLmlkbApAQCAt
NjIsMTQgKzYyLDEwIEBAIGludGVyZmFjZSBHUFVDb21tYW5kRW5jb2RlciB7CiAgICAgICAgIEdQ
VUltYWdlQ29weVRleHR1cmUgZGVzdGluYXRpb24sCiAgICAgICAgIEdQVUV4dGVudDNEIGNvcHlT
aXplKTsKIAotICAgIHVuZGVmaW5lZCBmaWxsQnVmZmVyKAotICAgICAgICBHUFVCdWZmZXIgZGVz
dGluYXRpb24sCi0gICAgICAgIEdQVVNpemU2NCBkZXN0aW5hdGlvbk9mZnNldCwKLSAgICAgICAg
R1BVU2l6ZTY0IHNpemUpOwotCi0gICAgdW5kZWZpbmVkIHB1c2hEZWJ1Z0dyb3VwKFVTVlN0cmlu
ZyBncm91cExhYmVsKTsKLSAgICB1bmRlZmluZWQgcG9wRGVidWdHcm91cCgpOwotICAgIHVuZGVm
aW5lZCBpbnNlcnREZWJ1Z01hcmtlcihVU1ZTdHJpbmcgbWFya2VyTGFiZWwpOworICAgIHVuZGVm
aW5lZCBjbGVhckJ1ZmZlcigKKyAgICAgICAgR1BVQnVmZmVyIGJ1ZmZlciwKKyAgICAgICAgb3B0
aW9uYWwgR1BVU2l6ZTY0IG9mZnNldCA9IDAsCisgICAgICAgIG9wdGlvbmFsIEdQVVNpemU2NCBz
aXplKTsKIAogICAgIHVuZGVmaW5lZCB3cml0ZVRpbWVzdGFtcChHUFVRdWVyeVNldCBxdWVyeVNl
dCwgR1BVU2l6ZTMyIHF1ZXJ5SW5kZXgpOwogCkBAIC04MywzICs3OSw1IEBAIGludGVyZmFjZSBH
UFVDb21tYW5kRW5jb2RlciB7CiAgICAgR1BVQ29tbWFuZEJ1ZmZlciBmaW5pc2gob3B0aW9uYWwg
R1BVQ29tbWFuZEJ1ZmZlckRlc2NyaXB0b3IgZGVzY3JpcHRvcik7CiB9OwogR1BVQ29tbWFuZEVu
Y29kZXIgaW5jbHVkZXMgR1BVT2JqZWN0QmFzZTsKK0dQVUNvbW1hbmRFbmNvZGVyIGluY2x1ZGVz
IEdQVUNvbW1hbmRzTWl4aW47CitHUFVDb21tYW5kRW5jb2RlciBpbmNsdWRlcyBHUFVEZWJ1Z0Nv
bW1hbmRzTWl4aW47CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL1dlYkdQVS9H
UFVDb21tYW5kc01peGluLmlkbCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvV2ViR1BVL0dQVUNv
bW1hbmRzTWl4aW4uaWRsCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjJhY2MzZGVlNDFkMzhkNmZjYTc5NmViZWZmMjdh
NWRlY2U2ZWJjYmEKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL1dl
YkdQVS9HUFVDb21tYW5kc01peGluLmlkbApAQCAtMCwwICsxLDMyIEBACisvKgorICogQ29weXJp
Z2h0IChDKSAyMDIyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
CisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAq
CisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05U
UklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAq
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1Ig
SVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRT
OyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5Z
IFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKwor
Ly8gaHR0cHM6Ly9ncHV3ZWIuZ2l0aHViLmlvL2dwdXdlYi8jZ3B1Y29tbWFuZHNtaXhpbgorCitb
CisgICAgRW5hYmxlZEJ5U2V0dGluZz1XZWJHUFUKK10KK2ludGVyZmFjZSBtaXhpbiBHUFVDb21t
YW5kc01peGluIHsKK307CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL1dlYkdQ
VS9HUFVDb21wdXRlUGFzc0VuY29kZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9XZWJH
UFUvR1BVQ29tcHV0ZVBhc3NFbmNvZGVyLmNwcAppbmRleCBiMDExZjUwZTc2NjJlMWVhOWU5OWQ3
NzQ0MjhiOGNhMjI2OGQ0ZDE2Li45NGQ1ODRhNmVjNjhmN2JhODYzOTQzNjVmNThiNjJjMTcwZTVk
OWY4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL1dlYkdQVS9HUFVDb21wdXRl
UGFzc0VuY29kZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvV2ViR1BVL0dQVUNv
bXB1dGVQYXNzRW5jb2Rlci5jcHAKQEAgLTQ4LDkgKzQ4LDkgQEAgdm9pZCBHUFVDb21wdXRlUGFz
c0VuY29kZXI6OnNldFBpcGVsaW5lKGNvbnN0IEdQVUNvbXB1dGVQaXBlbGluZSYgY29tcHV0ZVBp
cGVsaW4KICAgICBtX2JhY2tpbmctPnNldFBpcGVsaW5lKGNvbXB1dGVQaXBlbGluZS5iYWNraW5n
KCkpOwogfQogCi12b2lkIEdQVUNvbXB1dGVQYXNzRW5jb2Rlcjo6ZGlzcGF0Y2goR1BVU2l6ZTMy
IHgsIHN0ZDo6b3B0aW9uYWw8R1BVU2l6ZTMyPiB5LCBzdGQ6Om9wdGlvbmFsPEdQVVNpemUzMj4g
eikKK3ZvaWQgR1BVQ29tcHV0ZVBhc3NFbmNvZGVyOjpkaXNwYXRjaChHUFVTaXplMzIgd29ya2dy
b3VwQ291bnRYLCBHUFVTaXplMzIgd29ya2dyb3VwQ291bnRZLCBHUFVTaXplMzIgd29ya2dyb3Vw
Q291bnRaKQogewotICAgIG1fYmFja2luZy0+ZGlzcGF0Y2goeCwgeSwgeik7CisgICAgbV9iYWNr
aW5nLT5kaXNwYXRjaCh3b3JrZ3JvdXBDb3VudFgsIHdvcmtncm91cENvdW50WSwgd29ya2dyb3Vw
Q291bnRaKTsKIH0KIAogdm9pZCBHUFVDb21wdXRlUGFzc0VuY29kZXI6OmRpc3BhdGNoSW5kaXJl
Y3QoY29uc3QgR1BVQnVmZmVyJiBpbmRpcmVjdEJ1ZmZlciwgR1BVU2l6ZTY0IGluZGlyZWN0T2Zm
c2V0KQpAQCAtNTgsMTkgKzU4LDkgQEAgdm9pZCBHUFVDb21wdXRlUGFzc0VuY29kZXI6OmRpc3Bh
dGNoSW5kaXJlY3QoY29uc3QgR1BVQnVmZmVyJiBpbmRpcmVjdEJ1ZmZlciwgR1AKICAgICBtX2Jh
Y2tpbmctPmRpc3BhdGNoSW5kaXJlY3QoaW5kaXJlY3RCdWZmZXIuYmFja2luZygpLCBpbmRpcmVj
dE9mZnNldCk7CiB9CiAKLXZvaWQgR1BVQ29tcHV0ZVBhc3NFbmNvZGVyOjpiZWdpblBpcGVsaW5l
U3RhdGlzdGljc1F1ZXJ5KGNvbnN0IEdQVVF1ZXJ5U2V0JiBxdWVyeVNldCwgR1BVU2l6ZTMyIHF1
ZXJ5SW5kZXgpCit2b2lkIEdQVUNvbXB1dGVQYXNzRW5jb2Rlcjo6ZW5kKCkKIHsKLSAgICBtX2Jh
Y2tpbmctPmJlZ2luUGlwZWxpbmVTdGF0aXN0aWNzUXVlcnkocXVlcnlTZXQuYmFja2luZygpLCBx
dWVyeUluZGV4KTsKLX0KLQotdm9pZCBHUFVDb21wdXRlUGFzc0VuY29kZXI6OmVuZFBpcGVsaW5l
U3RhdGlzdGljc1F1ZXJ5KCkKLXsKLSAgICBtX2JhY2tpbmctPmVuZFBpcGVsaW5lU3RhdGlzdGlj
c1F1ZXJ5KCk7Ci19Ci0KLXZvaWQgR1BVQ29tcHV0ZVBhc3NFbmNvZGVyOjplbmRQYXNzKCkKLXsK
LSAgICBtX2JhY2tpbmctPmVuZFBhc3MoKTsKKyAgICBtX2JhY2tpbmctPmVuZCgpOwogfQogCiB2
b2lkIEdQVUNvbXB1dGVQYXNzRW5jb2Rlcjo6c2V0QmluZEdyb3VwKEdQVUluZGV4MzIgaW5kZXgs
IGNvbnN0IEdQVUJpbmRHcm91cCYgYmluZEdyb3VwLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9XZWJHUFUvR1BVQ29tcHV0ZVBhc3NFbmNvZGVyLmggYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL1dlYkdQVS9HUFVDb21wdXRlUGFzc0VuY29kZXIuaAppbmRleCA3MDY2OGE3MWQ2
MDJiMjllZWIwMTg3MjUyMzFlZDgwN2FiM2ZiZjAwLi43YjdlY2IzODExMzU5NjkzZWU2ZGU4MGFl
MDBkZjZhNmE4NTFlN2IyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL1dlYkdQ
VS9HUFVDb21wdXRlUGFzc0VuY29kZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL1dl
YkdQVS9HUFVDb21wdXRlUGFzc0VuY29kZXIuaApAQCAtNTIsMTMgKzUyLDEwIEBAIHB1YmxpYzoK
ICAgICB2b2lkIHNldExhYmVsKFN0cmluZyYmKTsKIAogICAgIHZvaWQgc2V0UGlwZWxpbmUoY29u
c3QgR1BVQ29tcHV0ZVBpcGVsaW5lJik7Ci0gICAgdm9pZCBkaXNwYXRjaChHUFVTaXplMzIgeCwg
c3RkOjpvcHRpb25hbDxHUFVTaXplMzI+IHksIHN0ZDo6b3B0aW9uYWw8R1BVU2l6ZTMyPik7Cisg
ICAgdm9pZCBkaXNwYXRjaChHUFVTaXplMzIgd29ya2dyb3VwQ291bnRYLCBHUFVTaXplMzIgd29y
a2dyb3VwQ291bnRZLCBHUFVTaXplMzIgd29ya2dyb3VwQ291bnRaKTsKICAgICB2b2lkIGRpc3Bh
dGNoSW5kaXJlY3QoY29uc3QgR1BVQnVmZmVyJiBpbmRpcmVjdEJ1ZmZlciwgR1BVU2l6ZTY0IGlu
ZGlyZWN0T2Zmc2V0KTsKIAotICAgIHZvaWQgYmVnaW5QaXBlbGluZVN0YXRpc3RpY3NRdWVyeShj
b25zdCBHUFVRdWVyeVNldCYsIEdQVVNpemUzMiBxdWVyeUluZGV4KTsKLSAgICB2b2lkIGVuZFBp
cGVsaW5lU3RhdGlzdGljc1F1ZXJ5KCk7Ci0KLSAgICB2b2lkIGVuZFBhc3MoKTsKKyAgICB2b2lk
IGVuZCgpOwogCiAgICAgdm9pZCBzZXRCaW5kR3JvdXAoR1BVSW5kZXgzMiwgY29uc3QgR1BVQmlu
ZEdyb3VwJiwKICAgICAgICAgc3RkOjpvcHRpb25hbDxWZWN0b3I8R1BVQnVmZmVyRHluYW1pY09m
ZnNldD4+JiYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9XZWJHUFUvR1BV
Q29tcHV0ZVBhc3NFbmNvZGVyLmlkbCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvV2ViR1BVL0dQ
VUNvbXB1dGVQYXNzRW5jb2Rlci5pZGwKaW5kZXggOTU4ZGQ3N2U3Njc0MDYyNjI5OGZkNDJiZGQw
NGFlMWM3OGU1Yjg5OC4uOWZmYTZiMDYwMTcyODFkNmQ0ZjY1MmM0ZmRhZDYwNGRmYzE1NTFjZCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9XZWJHUFUvR1BVQ29tcHV0ZVBhc3NF
bmNvZGVyLmlkbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL1dlYkdQVS9HUFVDb21wdXRl
UGFzc0VuY29kZXIuaWRsCkBAIC0zNiwxMyArMzYsMTIgQEAgdHlwZWRlZiBbRW5mb3JjZVJhbmdl
XSB1bnNpZ25lZCBsb25nIGxvbmcgR1BVU2l6ZTY0OwogXQogaW50ZXJmYWNlIEdQVUNvbXB1dGVQ
YXNzRW5jb2RlciB7CiAgICAgdW5kZWZpbmVkIHNldFBpcGVsaW5lKEdQVUNvbXB1dGVQaXBlbGlu
ZSBwaXBlbGluZSk7Ci0gICAgdW5kZWZpbmVkIGRpc3BhdGNoKEdQVVNpemUzMiB4LCBvcHRpb25h
bCBHUFVTaXplMzIgeSA9IDEsIG9wdGlvbmFsIEdQVVNpemUzMiB6ID0gMSk7CisgICAgdW5kZWZp
bmVkIGRpc3BhdGNoKEdQVVNpemUzMiB3b3JrZ3JvdXBDb3VudFgsIG9wdGlvbmFsIEdQVVNpemUz
MiB3b3JrZ3JvdXBDb3VudFkgPSAxLCBvcHRpb25hbCBHUFVTaXplMzIgd29ya2dyb3VwQ291bnRa
ID0gMSk7CiAgICAgdW5kZWZpbmVkIGRpc3BhdGNoSW5kaXJlY3QoR1BVQnVmZmVyIGluZGlyZWN0
QnVmZmVyLCBHUFVTaXplNjQgaW5kaXJlY3RPZmZzZXQpOwogCi0gICAgdW5kZWZpbmVkIGJlZ2lu
UGlwZWxpbmVTdGF0aXN0aWNzUXVlcnkoR1BVUXVlcnlTZXQgcXVlcnlTZXQsIEdQVVNpemUzMiBx
dWVyeUluZGV4KTsKLSAgICB1bmRlZmluZWQgZW5kUGlwZWxpbmVTdGF0aXN0aWNzUXVlcnkoKTsK
LQotICAgIHVuZGVmaW5lZCBlbmRQYXNzKCk7CisgICAgdW5kZWZpbmVkIGVuZCgpOwogfTsKIEdQ
VUNvbXB1dGVQYXNzRW5jb2RlciBpbmNsdWRlcyBHUFVPYmplY3RCYXNlOworR1BVQ29tcHV0ZVBh
c3NFbmNvZGVyIGluY2x1ZGVzIEdQVUNvbW1hbmRzTWl4aW47CitHUFVDb21wdXRlUGFzc0VuY29k
ZXIgaW5jbHVkZXMgR1BVRGVidWdDb21tYW5kc01peGluOwogR1BVQ29tcHV0ZVBhc3NFbmNvZGVy
IGluY2x1ZGVzIEdQVVByb2dyYW1tYWJsZVBhc3NFbmNvZGVyOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9XZWJHUFUvR1BVRGVidWdDb21tYW5kc01peGluLmlkbCBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvV2ViR1BVL0dQVURlYnVnQ29tbWFuZHNNaXhpbi5pZGwKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uMWY4NDhhNDJkY2JjY2E2NmMzMTgxYmE4YmUxNDA4ZTYzYzA1NjQwNAotLS0gL2Rldi9u
dWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvV2ViR1BVL0dQVURlYnVnQ29tbWFuZHNN
aXhpbi5pZGwKQEAgLTAsMCArMSwzNSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMiBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMn
JworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMK
KyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJ
QUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAq
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICog
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKy8vIGh0dHBzOi8vZ3B1d2Vi
LmdpdGh1Yi5pby9ncHV3ZWIvI2dwdWRlYnVnY29tbWFuZHNtaXhpbgorCitbCisgICAgRW5hYmxl
ZEJ5U2V0dGluZz1XZWJHUFUKK10KK2ludGVyZmFjZSBtaXhpbiBHUFVEZWJ1Z0NvbW1hbmRzTWl4
aW4geworICAgIHVuZGVmaW5lZCBwdXNoRGVidWdHcm91cChVU1ZTdHJpbmcgZ3JvdXBMYWJlbCk7
CisgICAgdW5kZWZpbmVkIHBvcERlYnVnR3JvdXAoKTsKKyAgICB1bmRlZmluZWQgaW5zZXJ0RGVi
dWdNYXJrZXIoVVNWU3RyaW5nIG1hcmtlckxhYmVsKTsKK307CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL1dlYkdQVS9HUFVGZWF0dXJlTmFtZS5oIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9XZWJHUFUvR1BVRmVhdHVyZU5hbWUuaAppbmRleCA0ZmVhYjUwMWM1YWM0N2UyMzJj
YmNiN2JhZDUwYjAwZjczNDFjYzk4Li5hODAzYWMyZjU1OGQ4NWI2YmRmYTUxZjUxNzUwN2U5ZTg2
ZTZkZWNiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL1dlYkdQVS9HUFVGZWF0
dXJlTmFtZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvV2ViR1BVL0dQVUZlYXR1cmVO
YW1lLmgKQEAgLTM0LDcgKzM0LDYgQEAgZW51bSBjbGFzcyBHUFVGZWF0dXJlTmFtZSA6IHVpbnQ4
X3QgewogICAgIERlcHRoQ2xpcENvbnRyb2wsCiAgICAgRGVwdGgyNHVub3JtU3RlbmNpbDgsCiAg
ICAgRGVwdGgzMmZsb2F0U3RlbmNpbDgsCi0gICAgUGlwZWxpbmVTdGF0aXN0aWNzUXVlcnksCiAg
ICAgVGV4dHVyZUNvbXByZXNzaW9uQmMsCiAgICAgVGV4dHVyZUNvbXByZXNzaW9uRXRjMiwKICAg
ICBUZXh0dXJlQ29tcHJlc3Npb25Bc3RjLApAQCAtNTEsOCArNTAsNiBAQCBpbmxpbmUgUEFMOjpX
ZWJHUFU6OkZlYXR1cmVOYW1lIGNvbnZlcnRUb0JhY2tpbmcoR1BVRmVhdHVyZU5hbWUgZmVhdHVy
ZU5hbWUpCiAgICAgICAgIHJldHVybiBQQUw6OldlYkdQVTo6RmVhdHVyZU5hbWU6OkRlcHRoMjR1
bm9ybVN0ZW5jaWw4OwogICAgIGNhc2UgR1BVRmVhdHVyZU5hbWU6OkRlcHRoMzJmbG9hdFN0ZW5j
aWw4OgogICAgICAgICByZXR1cm4gUEFMOjpXZWJHUFU6OkZlYXR1cmVOYW1lOjpEZXB0aDMyZmxv
YXRTdGVuY2lsODsKLSAgICBjYXNlIEdQVUZlYXR1cmVOYW1lOjpQaXBlbGluZVN0YXRpc3RpY3NR
dWVyeToKLSAgICAgICAgcmV0dXJuIFBBTDo6V2ViR1BVOjpGZWF0dXJlTmFtZTo6UGlwZWxpbmVT
dGF0aXN0aWNzUXVlcnk7CiAgICAgY2FzZSBHUFVGZWF0dXJlTmFtZTo6VGV4dHVyZUNvbXByZXNz
aW9uQmM6CiAgICAgICAgIHJldHVybiBQQUw6OldlYkdQVTo6RmVhdHVyZU5hbWU6OlRleHR1cmVD
b21wcmVzc2lvbkJjOwogICAgIGNhc2UgR1BVRmVhdHVyZU5hbWU6OlRleHR1cmVDb21wcmVzc2lv
bkV0YzI6CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL1dlYkdQVS9HUFVGZWF0
dXJlTmFtZS5pZGwgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL1dlYkdQVS9HUFVGZWF0dXJlTmFt
ZS5pZGwKaW5kZXggMTg0ZTVhNTFlYzEyZDE1M2U3ZWI5MzQzODQ5Y2NmNzU3YTk1ZjNiYi4uMjVm
MGYzODNkNTFhYTE5ZDdjNGUwZjViMTQzMDU2ZWY1MjUwM2FlYSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9XZWJHUFUvR1BVRmVhdHVyZU5hbWUuaWRsCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvV2ViR1BVL0dQVUZlYXR1cmVOYW1lLmlkbApAQCAtMzIsNyArMzIsNiBA
QCBlbnVtIEdQVUZlYXR1cmVOYW1lIHsKICAgICAiZGVwdGgtY2xpcC1jb250cm9sIiwKICAgICAi
ZGVwdGgyNHVub3JtLXN0ZW5jaWw4IiwKICAgICAiZGVwdGgzMmZsb2F0LXN0ZW5jaWw4IiwKLSAg
ICAicGlwZWxpbmUtc3RhdGlzdGljcy1xdWVyeSIsCiAgICAgInRleHR1cmUtY29tcHJlc3Npb24t
YmMiLAogICAgICJ0ZXh0dXJlLWNvbXByZXNzaW9uLWV0YzIiLAogICAgICJ0ZXh0dXJlLWNvbXBy
ZXNzaW9uLWFzdGMiLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9XZWJHUFUv
R1BVRnJhZ21lbnRTdGF0ZS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9XZWJHUFUvR1BVRnJh
Z21lbnRTdGF0ZS5oCmluZGV4IGU5YjY5YWNiNWFjYjA2Y2E2OWI4NzE3MmU5OTNlNTE4ZWY5NWI1
ZmIuLmUxNzJlNDE1NGY2YjM1ODE3NThlNGNjOThiYTI3ZGY2ODM3ZjAwNjggMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvV2ViR1BVL0dQVUZyYWdtZW50U3RhdGUuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL1dlYkdQVS9HUFVGcmFnbWVudFN0YXRlLmgKQEAgLTI3LDYg
KzI3LDcgQEAKIAogI2luY2x1ZGUgIkdQVUNvbG9yVGFyZ2V0U3RhdGUuaCIKICNpbmNsdWRlICJH
UFVQcm9ncmFtbWFibGVTdGFnZS5oIgorI2luY2x1ZGUgPG9wdGlvbmFsPgogI2luY2x1ZGUgPHBh
bC9ncmFwaGljcy9XZWJHUFUvV2ViR1BVRnJhZ21lbnRTdGF0ZS5oPgogI2luY2x1ZGUgPHd0Zi9W
ZWN0b3IuaD4KIApAQCAtNDIsMTMgKzQzLDE1IEBAIHN0cnVjdCBHUFVGcmFnbWVudFN0YXRlIDog
cHVibGljIEdQVVByb2dyYW1tYWJsZVN0YWdlIHsKICAgICAgICAgICAgICAgICBlbnRyeVBvaW50
LAogICAgICAgICAgICAgICAgIGNvbnN0YW50cywKICAgICAgICAgICAgIH0sCi0gICAgICAgICAg
ICB0YXJnZXRzLm1hcChbXSAoYXV0byYgdGFyZ2V0KSB7Ci0gICAgICAgICAgICAgICAgcmV0dXJu
IHRhcmdldC5jb252ZXJ0VG9CYWNraW5nKCk7CisgICAgICAgICAgICB0YXJnZXRzLm1hcChbXSAo
YXV0byYgdGFyZ2V0KSAtPiBzdGQ6Om9wdGlvbmFsPFBBTDo6V2ViR1BVOjpDb2xvclRhcmdldFN0
YXRlPiB7CisgICAgICAgICAgICAgICAgaWYgKHRhcmdldCkKKyAgICAgICAgICAgICAgICAgICAg
cmV0dXJuIHRhcmdldC0+Y29udmVydFRvQmFja2luZygpOworICAgICAgICAgICAgICAgIHJldHVy
biBzdGQ6Om51bGxvcHQ7CiAgICAgICAgICAgICB9KSwKICAgICAgICAgfTsKICAgICB9CiAKLSAg
ICBWZWN0b3I8R1BVQ29sb3JUYXJnZXRTdGF0ZT4gdGFyZ2V0czsKKyAgICBWZWN0b3I8c3RkOjpv
cHRpb25hbDxHUFVDb2xvclRhcmdldFN0YXRlPj4gdGFyZ2V0czsKIH07CiAKIH0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvV2ViR1BVL0dQVUZyYWdtZW50U3RhdGUuaWRsIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9XZWJHUFUvR1BVRnJhZ21lbnRTdGF0ZS5pZGwKaW5kZXgg
MTg5ODRlNGVhNjk2MTMwODEwZGRlOTQ5MjY3ZWY5OTZlNDkzZDFkZC4uNDNhZmZlOWFkZTAwMTc4
N2Q4MzIyMjI1YTY5NGVlYjdkYjk3NDcyMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9XZWJHUFUvR1BVRnJhZ21lbnRTdGF0ZS5pZGwKKysrIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9XZWJHUFUvR1BVRnJhZ21lbnRTdGF0ZS5pZGwKQEAgLTI5LDUgKzI5LDUgQEAKICAgICBF
bmFibGVkQnlTZXR0aW5nPVdlYkdQVQogXQogZGljdGlvbmFyeSBHUFVGcmFnbWVudFN0YXRlIDog
R1BVUHJvZ3JhbW1hYmxlU3RhZ2UgewotICAgIHJlcXVpcmVkIHNlcXVlbmNlPEdQVUNvbG9yVGFy
Z2V0U3RhdGU+IHRhcmdldHM7CisgICAgcmVxdWlyZWQgc2VxdWVuY2U8R1BVQ29sb3JUYXJnZXRT
dGF0ZT8+IHRhcmdldHM7CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9X
ZWJHUFUvR1BVSW1hZ2VDb3B5RXh0ZXJuYWxJbWFnZS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9XZWJHUFUvR1BVSW1hZ2VDb3B5RXh0ZXJuYWxJbWFnZS5oCmluZGV4IDRjY2NhYjdmMDA1NjZh
MzEzNmEyNTc4OTBiODkxYjk3ZGMzNWE4OGUuLjk1N2NjOWUzODExYWUyN2Q2ZjNhODI4NjdhYjA2
ZTRjOWM4NjZlMGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvV2ViR1BVL0dQ
VUltYWdlQ29weUV4dGVybmFsSW1hZ2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL1dl
YkdQVS9HUFVJbWFnZUNvcHlFeHRlcm5hbEltYWdlLmgKQEAgLTQxLDExICs0MSwxMyBAQCBzdHJ1
Y3QgR1BVSW1hZ2VDb3B5RXh0ZXJuYWxJbWFnZSB7CiAgICAgICAgIHJldHVybiB7CiAgICAgICAg
ICAgICAvLyBGSVhNRTogSGFuZGxlIHRoZSBjYW52YXMgZWxlbWVudC4KICAgICAgICAgICAgIG9y
aWdpbiA/IHN0ZDo6b3B0aW9uYWwgeyBXZWJDb3JlOjpjb252ZXJ0VG9CYWNraW5nKCpvcmlnaW4p
IH0gOiBzdGQ6Om51bGxvcHQsCisgICAgICAgICAgICBmbGlwWSwKICAgICAgICAgfTsKICAgICB9
CiAKICAgICBzdGQ6OnZhcmlhbnQ8UmVmUHRyPEltYWdlQml0bWFwPiwgUmVmUHRyPEhUTUxDYW52
YXNFbGVtZW50Pj4gc291cmNlOwogICAgIHN0ZDo6b3B0aW9uYWw8R1BVT3JpZ2luMkQ+IG9yaWdp
bjsKKyAgICBib29sIGZsaXBZIHsgZmFsc2UgfTsKIH07CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvV2ViR1BVL0dQVUltYWdlQ29weUV4dGVybmFsSW1hZ2UuaWRsIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9XZWJHUFUvR1BVSW1hZ2VDb3B5RXh0ZXJuYWxJbWFnZS5p
ZGwKaW5kZXggOWU2MTJiYjUzNjg3N2FmZmYxMDk2NThmMzVhMTQxNGFkYWFkOWYyZS4uMWYyMjIy
YTU1YmFlZTljMjdkMmQyNTg2Yzk3ODE1MzRjOWM5Y2U5NSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9XZWJHUFUvR1BVSW1hZ2VDb3B5RXh0ZXJuYWxJbWFnZS5pZGwKKysrIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9XZWJHUFUvR1BVSW1hZ2VDb3B5RXh0ZXJuYWxJbWFnZS5p
ZGwKQEAgLTM1LDQgKzM1LDUgQEAgdHlwZWRlZiAoc2VxdWVuY2U8R1BVSW50ZWdlckNvb3JkaW5h
dGU+IG9yIEdQVU9yaWdpbjJERGljdCkgR1BVT3JpZ2luMkQ7CiBkaWN0aW9uYXJ5IEdQVUltYWdl
Q29weUV4dGVybmFsSW1hZ2UgewogICAgIHJlcXVpcmVkIChJbWFnZUJpdG1hcCBvciBIVE1MQ2Fu
dmFzRWxlbWVudCkgc291cmNlOyAvLyBGSVhNRTogT2Zmc2NyZWVuQ2FudmFzIGRvZXNuJ3Qgc2Vl
bSB0byB3b3JrIHdpdGggb3VyIGJpbmRpbmdzIGhlcmUuCiAgICAgR1BVT3JpZ2luMkQgb3JpZ2lu
OworICAgIGJvb2xlYW4gZmxpcFkgPSBmYWxzZTsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL1dlYkdQVS9HUFVMb2FkT3AuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
V2ViR1BVL0dQVUxvYWRPcC5oCmluZGV4IDM1ZTU3NDlmZTE3ZDViZDI5ZTE1NzBiMjE3ZTU5OTIx
MTU3MTkyMjkuLjEyY2FkYWZiMmE1NzAzNmMwNmI2OWQxODBkYzFhNWFkZWMyMzMwOGIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvV2ViR1BVL0dQVUxvYWRPcC5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvV2ViR1BVL0dQVUxvYWRPcC5oCkBAIC0zMiw2ICszMiw3IEBA
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogZW51bSBjbGFzcyBHUFVMb2FkT3AgOiB1aW50OF90IHsK
ICAgICBMb2FkLAorICAgIENsZWFyLAogfTsKIAogaW5saW5lIFBBTDo6V2ViR1BVOjpMb2FkT3Ag
Y29udmVydFRvQmFja2luZyhHUFVMb2FkT3AgbG9hZE9wKQpAQCAtMzksNiArNDAsOCBAQCBpbmxp
bmUgUEFMOjpXZWJHUFU6OkxvYWRPcCBjb252ZXJ0VG9CYWNraW5nKEdQVUxvYWRPcCBsb2FkT3Ap
CiAgICAgc3dpdGNoIChsb2FkT3ApIHsKICAgICBjYXNlIEdQVUxvYWRPcDo6TG9hZDoKICAgICAg
ICAgcmV0dXJuIFBBTDo6V2ViR1BVOjpMb2FkT3A6OkxvYWQ7CisgICAgY2FzZSBHUFVMb2FkT3A6
OkNsZWFyOgorICAgICAgICByZXR1cm4gUEFMOjpXZWJHUFU6OkxvYWRPcDo6Q2xlYXI7CiAgICAg
fQogICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CiB9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL1dlYkdQVS9HUFVMb2FkT3AuaWRsIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9XZWJHUFUvR1BVTG9hZE9wLmlkbAppbmRleCBjODQ5NTQxYjUyNDY3NjUxMGM1NjI4
ZmM5OTEwMWFjYjkyOTlhODUzLi5kNjAyYjYxYzUyYjQ4MTI2OTgzZjQ4YWYwZTdjMDVkNWY1MjFl
Yzc0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL1dlYkdQVS9HUFVMb2FkT3Au
aWRsCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvV2ViR1BVL0dQVUxvYWRPcC5pZGwKQEAg
LTI5LDUgKzI5LDYgQEAKICAgICBFbmFibGVkQnlTZXR0aW5nPVdlYkdQVQogXQogZW51bSBHUFVM
b2FkT3AgewotICAgICJsb2FkIgorICAgICJsb2FkIiwKKyAgICAiY2xlYXIiCiB9OwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9XZWJHUFUvR1BVT2JqZWN0QmFzZS5pZGwgYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL1dlYkdQVS9HUFVPYmplY3RCYXNlLmlkbAppbmRleCBlMTMz
MWIzZWMzY2Q3ZWY4M2IxNzU0MzJmMzc2MjdiN2FkNTg0MGQ0Li44Y2VmYzcxZDVlOTg2YjUwYTU2
ZmEyMWE0ODA0NWMzNjNiYzE1N2JiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L1dlYkdQVS9HUFVPYmplY3RCYXNlLmlkbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL1dl
YkdQVS9HUFVPYmplY3RCYXNlLmlkbApAQCAtMjksNSArMjksNSBAQAogICAgIEVuYWJsZWRCeVNl
dHRpbmc9V2ViR1BVCiBdCiBpbnRlcmZhY2UgbWl4aW4gR1BVT2JqZWN0QmFzZSB7Ci0gICAgYXR0
cmlidXRlIFVTVlN0cmluZz8gbGFiZWw7CisgICAgYXR0cmlidXRlIFVTVlN0cmluZz8gbGFiZWw7
IC8vIEZJWE1FOiBUaGlzIGlzIHN1cHBvc2VkIHRvIGJlIChVU1ZTdHJpbmcgb3IgdW5kZWZpbmVk
KSBidXQgb3VyIGJpbmRpbmdzIGdlbmVyYXRvciBjYW4ndCBoYW5kbGUgdGhhdC4KIH07CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL1dlYkdQVS9HUFVQaXBlbGluZVN0YXRpc3Rp
Y05hbWUuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvV2ViR1BVL0dQVVBpcGVsaW5lU3RhdGlz
dGljTmFtZS5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmOGRlOGJmZjhmNTczZWM0
ZjNhZjY3MzJjMjlmZGYyYTEwOGVkNjUxLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvV2ViR1BVL0dQVVBpcGVsaW5l
U3RhdGlzdGljTmFtZS5oCisrKyAvZGV2L251bGwKQEAgLTEsNTggKzAsMCBAQAotLyoKLSAqIENv
cHlyaWdodCAoQykgMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24u
Ci0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMg
Q09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS
Ci0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMu
IE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwg
REFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0g
KiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJP
RklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
IEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQot
ICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICov
Ci0KLSNwcmFnbWEgb25jZQotCi0jaW5jbHVkZSA8Y3N0ZGludD4KLSNpbmNsdWRlIDxwYWwvZ3Jh
cGhpY3MvV2ViR1BVL1dlYkdQVVBpcGVsaW5lU3RhdGlzdGljTmFtZS5oPgotCi1uYW1lc3BhY2Ug
V2ViQ29yZSB7Ci0KLWVudW0gY2xhc3MgR1BVUGlwZWxpbmVTdGF0aXN0aWNOYW1lIDogdWludDhf
dCB7Ci0gICAgVmVydGV4U2hhZGVySW52b2NhdGlvbnMsCi0gICAgQ2xpcHBlckludm9jYXRpb25z
LAotICAgIENsaXBwZXJQcmltaXRpdmVzT3V0LAotICAgIEZyYWdtZW50U2hhZGVySW52b2NhdGlv
bnMsCi0gICAgQ29tcHV0ZVNoYWRlckludm9jYXRpb25zLAotfTsKLQotaW5saW5lIFBBTDo6V2Vi
R1BVOjpQaXBlbGluZVN0YXRpc3RpY05hbWUgY29udmVydFRvQmFja2luZyhHUFVQaXBlbGluZVN0
YXRpc3RpY05hbWUgcGlwZWxpbmVTdGF0aXN0aWNOYW1lKQotewotICAgIHN3aXRjaCAocGlwZWxp
bmVTdGF0aXN0aWNOYW1lKSB7Ci0gICAgY2FzZSBHUFVQaXBlbGluZVN0YXRpc3RpY05hbWU6OlZl
cnRleFNoYWRlckludm9jYXRpb25zOgotICAgICAgICByZXR1cm4gUEFMOjpXZWJHUFU6OlBpcGVs
aW5lU3RhdGlzdGljTmFtZTo6VmVydGV4U2hhZGVySW52b2NhdGlvbnM7Ci0gICAgY2FzZSBHUFVQ
aXBlbGluZVN0YXRpc3RpY05hbWU6OkNsaXBwZXJJbnZvY2F0aW9uczoKLSAgICAgICAgcmV0dXJu
IFBBTDo6V2ViR1BVOjpQaXBlbGluZVN0YXRpc3RpY05hbWU6OkNsaXBwZXJJbnZvY2F0aW9uczsK
LSAgICBjYXNlIEdQVVBpcGVsaW5lU3RhdGlzdGljTmFtZTo6Q2xpcHBlclByaW1pdGl2ZXNPdXQ6
Ci0gICAgICAgIHJldHVybiBQQUw6OldlYkdQVTo6UGlwZWxpbmVTdGF0aXN0aWNOYW1lOjpDbGlw
cGVyUHJpbWl0aXZlc091dDsKLSAgICBjYXNlIEdQVVBpcGVsaW5lU3RhdGlzdGljTmFtZTo6RnJh
Z21lbnRTaGFkZXJJbnZvY2F0aW9uczoKLSAgICAgICAgcmV0dXJuIFBBTDo6V2ViR1BVOjpQaXBl
bGluZVN0YXRpc3RpY05hbWU6OkZyYWdtZW50U2hhZGVySW52b2NhdGlvbnM7Ci0gICAgY2FzZSBH
UFVQaXBlbGluZVN0YXRpc3RpY05hbWU6OkNvbXB1dGVTaGFkZXJJbnZvY2F0aW9uczoKLSAgICAg
ICAgcmV0dXJuIFBBTDo6V2ViR1BVOjpQaXBlbGluZVN0YXRpc3RpY05hbWU6OkNvbXB1dGVTaGFk
ZXJJbnZvY2F0aW9uczsKLSAgICB9Ci0gICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsK
LX0KLQotfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9XZWJHUFUvR1BVUGlw
ZWxpbmVTdGF0aXN0aWNOYW1lLmlkbCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvV2ViR1BVL0dQ
VVBpcGVsaW5lU3RhdGlzdGljTmFtZS5pZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDg3Njc3YzJjYWRjZTc1NzA2YTExMjAyYzM0NTliMzM0NWMwYzdmOTYuLjAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9X
ZWJHUFUvR1BVUGlwZWxpbmVTdGF0aXN0aWNOYW1lLmlkbAorKysgL2Rldi9udWxsCkBAIC0xLDM3
ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0Ogot
ICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhl
Ci0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
QVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZF
TlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9S
Ci0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgot
ICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KLSAqLwotCi0vLyBodHRwczovL2dwdXdlYi5naXRodWIuaW8vZ3B1d2Vi
LyNlbnVtZGVmLWdwdXBpcGVsaW5lc3RhdGlzdGljbmFtZQotCi1bCi0gICAgRW5hYmxlZEJ5U2V0
dGluZz1XZWJHUFUKLV0KLWVudW0gR1BVUGlwZWxpbmVTdGF0aXN0aWNOYW1lIHsKLSAgICAidmVy
dGV4LXNoYWRlci1pbnZvY2F0aW9ucyIsCi0gICAgImNsaXBwZXItaW52b2NhdGlvbnMiLAotICAg
ICJjbGlwcGVyLXByaW1pdGl2ZXMtb3V0IiwKLSAgICAiZnJhZ21lbnQtc2hhZGVyLWludm9jYXRp
b25zIiwKLSAgICAiY29tcHV0ZS1zaGFkZXItaW52b2NhdGlvbnMiCi19OwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9XZWJHUFUvR1BVUHJvZ3JhbW1hYmxlUGFzc0VuY29kZXIu
aWRsIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9XZWJHUFUvR1BVUHJvZ3JhbW1hYmxlUGFzc0Vu
Y29kZXIuaWRsCmluZGV4IDgxZjIyNTM4MDg5ZWY1ZWFjMzk1YjUwMWEzNDNhYjljZjNlZWMxYmIu
Ljg2NzM0OTJiZjZjYTAzOGQ5MGQwMjAyYzllZDUxMGQwMmE3OTIxZTggMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvV2ViR1BVL0dQVVByb2dyYW1tYWJsZVBhc3NFbmNvZGVyLmlk
bAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL1dlYkdQVS9HUFVQcm9ncmFtbWFibGVQYXNz
RW5jb2Rlci5pZGwKQEAgLTQyLDggKzQyLDQgQEAgaW50ZXJmYWNlIG1peGluIEdQVVByb2dyYW1t
YWJsZVBhc3NFbmNvZGVyIHsKICAgICAgICAgVWludDMyQXJyYXkgZHluYW1pY09mZnNldHNEYXRh
LAogICAgICAgICBHUFVTaXplNjQgZHluYW1pY09mZnNldHNEYXRhU3RhcnQsCiAgICAgICAgIEdQ
VVNpemUzMiBkeW5hbWljT2Zmc2V0c0RhdGFMZW5ndGgpOwotCi0gICAgdW5kZWZpbmVkIHB1c2hE
ZWJ1Z0dyb3VwKFVTVlN0cmluZyBncm91cExhYmVsKTsKLSAgICB1bmRlZmluZWQgcG9wRGVidWdH
cm91cCgpOwotICAgIHVuZGVmaW5lZCBpbnNlcnREZWJ1Z01hcmtlcihVU1ZTdHJpbmcgbWFya2Vy
TGFiZWwpOwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvV2ViR1BVL0dQ
VVF1ZXJ5U2V0RGVzY3JpcHRvci5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9XZWJHUFUvR1BV
UXVlcnlTZXREZXNjcmlwdG9yLmgKaW5kZXggZjAwNDNiZDU3MmYxM2Q4NDI2MWYwM2M5YTcxMGVh
NTUzZjk5M2Y0NC4uZmZkMWY3NTJlOGQxMGZlODVhYTRkMTlhYjk5MTE3ZjBhZWFkZWQ4NCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9XZWJHUFUvR1BVUXVlcnlTZXREZXNjcmlw
dG9yLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9XZWJHUFUvR1BVUXVlcnlTZXREZXNj
cmlwdG9yLmgKQEAgLTI3LDcgKzI3LDYgQEAKIAogI2luY2x1ZGUgIkdQVUludGVncmFsVHlwZXMu
aCIKICNpbmNsdWRlICJHUFVPYmplY3REZXNjcmlwdG9yQmFzZS5oIgotI2luY2x1ZGUgIkdQVVBp
cGVsaW5lU3RhdGlzdGljTmFtZS5oIgogI2luY2x1ZGUgIkdQVVF1ZXJ5VHlwZS5oIgogI2luY2x1
ZGUgPHBhbC9ncmFwaGljcy9XZWJHUFUvV2ViR1BVUXVlcnlTZXREZXNjcmlwdG9yLmg+CiAjaW5j
bHVkZSA8d3RmL1JlZlB0ci5oPgpAQCAtNDIsMTUgKzQxLDExIEBAIHN0cnVjdCBHUFVRdWVyeVNl
dERlc2NyaXB0b3IgOiBwdWJsaWMgR1BVT2JqZWN0RGVzY3JpcHRvckJhc2UgewogICAgICAgICAg
ICAgeyBsYWJlbCB9LAogICAgICAgICAgICAgV2ViQ29yZTo6Y29udmVydFRvQmFja2luZyh0eXBl
KSwKICAgICAgICAgICAgIGNvdW50LAotICAgICAgICAgICAgcGlwZWxpbmVTdGF0aXN0aWNzLm1h
cChbXSAoY29uc3QgYXV0byYgcGlwZWxpbmVTdGF0aXN0aWMpIHsKLSAgICAgICAgICAgICAgICBy
ZXR1cm4gV2ViQ29yZTo6Y29udmVydFRvQmFja2luZyhwaXBlbGluZVN0YXRpc3RpYyk7Ci0gICAg
ICAgICAgICB9KSwKICAgICAgICAgfTsKICAgICB9CiAKICAgICBHUFVRdWVyeVR5cGUgdHlwZSB7
IEdQVVF1ZXJ5VHlwZTo6T2NjbHVzaW9uIH07CiAgICAgR1BVU2l6ZTMyIGNvdW50IHsgMCB9Owot
ICAgIFZlY3RvcjxHUFVQaXBlbGluZVN0YXRpc3RpY05hbWU+IHBpcGVsaW5lU3RhdGlzdGljczsK
IH07CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvV2ViR1BVL0dQVVF1
ZXJ5U2V0RGVzY3JpcHRvci5pZGwgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL1dlYkdQVS9HUFVR
dWVyeVNldERlc2NyaXB0b3IuaWRsCmluZGV4IGZjZDUxYmQ5ZTE5NzY5ZWFlMzJiNWJhMWM3ZTdh
NjJkMDhjODYxZGMuLjVhN2U5NTAyYjZlNWVhZGIxYzkxNjY1MzgyMTEzMzRiMzZlOWNiY2UgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvV2ViR1BVL0dQVVF1ZXJ5U2V0RGVzY3Jp
cHRvci5pZGwKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9XZWJHUFUvR1BVUXVlcnlTZXRE
ZXNjcmlwdG9yLmlkbApAQCAtMzQsNSArMzQsNCBAQCB0eXBlZGVmIFtFbmZvcmNlUmFuZ2VdIHVu
c2lnbmVkIGxvbmcgR1BVU2l6ZTMyOwogZGljdGlvbmFyeSBHUFVRdWVyeVNldERlc2NyaXB0b3Ig
OiBHUFVPYmplY3REZXNjcmlwdG9yQmFzZSB7CiAgICAgcmVxdWlyZWQgR1BVUXVlcnlUeXBlIHR5
cGU7CiAgICAgcmVxdWlyZWQgR1BVU2l6ZTMyIGNvdW50OwotICAgIHNlcXVlbmNlPEdQVVBpcGVs
aW5lU3RhdGlzdGljTmFtZT4gcGlwZWxpbmVTdGF0aXN0aWNzID0gW107CiB9OwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9XZWJHUFUvR1BVUXVlcnlUeXBlLmggYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL1dlYkdQVS9HUFVRdWVyeVR5cGUuaAppbmRleCBlN2E1NzcyZTQ4NjNj
N2M2Yzc4NzhhNDY4NWJhNDQ1NjY4Njk3MGRlLi4yOWI4MzMyYjllOWFmMjRmNzc0Y2EwODc5MDFh
ZDFiZDMyNWFhNjRkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL1dlYkdQVS9H
UFVRdWVyeVR5cGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL1dlYkdQVS9HUFVRdWVy
eVR5cGUuaApAQCAtMzIsNyArMzIsNiBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGVudW0gY2xh
c3MgR1BVUXVlcnlUeXBlIDogdWludDhfdCB7CiAgICAgT2NjbHVzaW9uLAotICAgIFBpcGVsaW5l
U3RhdGlzdGljcywKICAgICBUaW1lc3RhbXAsCiB9OwogCkBAIC00MSw4ICs0MCw2IEBAIGlubGlu
ZSBQQUw6OldlYkdQVTo6UXVlcnlUeXBlIGNvbnZlcnRUb0JhY2tpbmcoR1BVUXVlcnlUeXBlIHF1
ZXJ5VHlwZSkKICAgICBzd2l0Y2ggKHF1ZXJ5VHlwZSkgewogICAgIGNhc2UgR1BVUXVlcnlUeXBl
OjpPY2NsdXNpb246CiAgICAgICAgIHJldHVybiBQQUw6OldlYkdQVTo6UXVlcnlUeXBlOjpPY2Ns
dXNpb247Ci0gICAgY2FzZSBHUFVRdWVyeVR5cGU6OlBpcGVsaW5lU3RhdGlzdGljczoKLSAgICAg
ICAgcmV0dXJuIFBBTDo6V2ViR1BVOjpRdWVyeVR5cGU6OlBpcGVsaW5lU3RhdGlzdGljczsKICAg
ICBjYXNlIEdQVVF1ZXJ5VHlwZTo6VGltZXN0YW1wOgogICAgICAgICByZXR1cm4gUEFMOjpXZWJH
UFU6OlF1ZXJ5VHlwZTo6VGltZXN0YW1wOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvV2ViR1BVL0dQVVF1ZXJ5VHlwZS5pZGwgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL1dlYkdQVS9HUFVRdWVyeVR5cGUuaWRsCmluZGV4IDU0ODFiOTIyYTIzMWRlN2FmOTU4ZGM5
NDIzZmUyMmNiMWEzZjk1NjYuLmQ1OTAyZDZiYzI0MzcwMGViMTg4N2I4NDVlZTUzZTc3NTlmMWU0
ZjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvV2ViR1BVL0dQVVF1ZXJ5VHlw
ZS5pZGwKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9XZWJHUFUvR1BVUXVlcnlUeXBlLmlk
bApAQCAtMzAsNiArMzAsNSBAQAogXQogZW51bSBHUFVRdWVyeVR5cGUgewogICAgICJvY2NsdXNp
b24iLAotICAgICJwaXBlbGluZS1zdGF0aXN0aWNzIiwKICAgICAidGltZXN0YW1wIgogfTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvV2ViR1BVL0dQVVF1ZXVlLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvV2ViR1BVL0dQVVF1ZXVlLmNwcAppbmRleCBmNTg2MTkwMmNm
ZmU2NmYyODhlNWE2Nzc5OWYyMzU1ZjVkMzc3NGIzLi5iNGJlYjQxODM0NTFhNDU4MDBiZjQyMjBk
Yjc2MmNiYjg0ZTMyNmIyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL1dlYkdQ
VS9HUFVRdWV1ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9XZWJHUFUvR1BVUXVl
dWUuY3BwCkBAIC02MywxMCArNjMsMTAgQEAgdm9pZCBHUFVRdWV1ZTo6d3JpdGVCdWZmZXIoCiAg
ICAgY29uc3QgR1BVQnVmZmVyJiBidWZmZXIsCiAgICAgR1BVU2l6ZTY0IGJ1ZmZlck9mZnNldCwK
ICAgICBCdWZmZXJTb3VyY2UmJiBkYXRhLAotICAgIHN0ZDo6b3B0aW9uYWw8R1BVU2l6ZTY0PiBk
YXRhT2Zmc2V0LAorICAgIEdQVVNpemU2NCBkYXRhT2Zmc2V0LAogICAgIHN0ZDo6b3B0aW9uYWw8
R1BVU2l6ZTY0PiBzaXplKQogewotICAgIG1fYmFja2luZy0+d3JpdGVCdWZmZXIoYnVmZmVyLmJh
Y2tpbmcoKSwgYnVmZmVyT2Zmc2V0LCBkYXRhLmRhdGEoKSwgZGF0YS5sZW5ndGgoKSwgZGF0YU9m
ZnNldC52YWx1ZV9vcigwKSwgc2l6ZSk7CisgICAgbV9iYWNraW5nLT53cml0ZUJ1ZmZlcihidWZm
ZXIuYmFja2luZygpLCBidWZmZXJPZmZzZXQsIGRhdGEuZGF0YSgpLCBkYXRhLmxlbmd0aCgpLCBk
YXRhT2Zmc2V0LCBzaXplKTsKIH0KIAogdm9pZCBHUFVRdWV1ZTo6d3JpdGVUZXh0dXJlKApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9XZWJHUFUvR1BVUXVldWUuaCBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvV2ViR1BVL0dQVVF1ZXVlLmgKaW5kZXggZmVjMmZiZDI3NGRmOTVk
MzQ1NjlkZGJhNWRiNWUwYzAyN2MyMzdkZi4uNzUxMTllMGIzNTZiZDE3MTc2ZDg4NWJiMDYwZTNl
ZGI4NTZjN2U5ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9XZWJHUFUvR1BV
UXVldWUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL1dlYkdQVS9HUFVRdWV1ZS5oCkBA
IC02NSw3ICs2NSw3IEBAIHB1YmxpYzoKICAgICAgICAgY29uc3QgR1BVQnVmZmVyJiwKICAgICAg
ICAgR1BVU2l6ZTY0IGJ1ZmZlck9mZnNldCwKICAgICAgICAgQnVmZmVyU291cmNlJiYgZGF0YSwK
LSAgICAgICAgc3RkOjpvcHRpb25hbDxHUFVTaXplNjQ+IGRhdGFPZmZzZXQsCisgICAgICAgIEdQ
VVNpemU2NCBkYXRhT2Zmc2V0LAogICAgICAgICBzdGQ6Om9wdGlvbmFsPEdQVVNpemU2ND4pOwog
CiAgICAgdm9pZCB3cml0ZVRleHR1cmUoCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL1dlYkdQVS9HUFVSZW5kZXJCdW5kbGVFbmNvZGVyLmlkbCBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvV2ViR1BVL0dQVVJlbmRlckJ1bmRsZUVuY29kZXIuaWRsCmluZGV4IGNmYzY4NmQzYzY1
YWQyNjQwY2U1MjJhMGI5YjRmMzBjMDQzNjYzODUuLmUxOWZlYzU1OTZkYWVkNjViZGQzOWIxMTkz
YjNjNDhlMzQ4Njc2YjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvV2ViR1BV
L0dQVVJlbmRlckJ1bmRsZUVuY29kZXIuaWRsCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
V2ViR1BVL0dQVVJlbmRlckJ1bmRsZUVuY29kZXIuaWRsCkBAIC0zNCw1ICszNCw3IEBAIGludGVy
ZmFjZSBHUFVSZW5kZXJCdW5kbGVFbmNvZGVyIHsKICAgICBHUFVSZW5kZXJCdW5kbGUgZmluaXNo
KG9wdGlvbmFsIEdQVVJlbmRlckJ1bmRsZURlc2NyaXB0b3IgZGVzY3JpcHRvcik7CiB9OwogR1BV
UmVuZGVyQnVuZGxlRW5jb2RlciBpbmNsdWRlcyBHUFVPYmplY3RCYXNlOworR1BVUmVuZGVyQnVu
ZGxlRW5jb2RlciBpbmNsdWRlcyBHUFVDb21tYW5kc01peGluOworR1BVUmVuZGVyQnVuZGxlRW5j
b2RlciBpbmNsdWRlcyBHUFVEZWJ1Z0NvbW1hbmRzTWl4aW47CiBHUFVSZW5kZXJCdW5kbGVFbmNv
ZGVyIGluY2x1ZGVzIEdQVVByb2dyYW1tYWJsZVBhc3NFbmNvZGVyOwogR1BVUmVuZGVyQnVuZGxl
RW5jb2RlciBpbmNsdWRlcyBHUFVSZW5kZXJFbmNvZGVyQmFzZTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvV2ViR1BVL0dQVVJlbmRlckJ1bmRsZUVuY29kZXJEZXNjcmlwdG9y
LmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL1dlYkdQVS9HUFVSZW5kZXJCdW5kbGVFbmNvZGVy
RGVzY3JpcHRvci5oCmluZGV4IDhkMTg0NTI2MDYwNTcyNGRmMjI0NzAxZTZkM2E1NTI2MDI5YzZl
NTQuLjg4NGJlN2M0NjA4MDAzMWE2NzQ2ZDNhMjc5MzdmZThkMTM0OTEwM2YgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvV2ViR1BVL0dQVVJlbmRlckJ1bmRsZUVuY29kZXJEZXNj
cmlwdG9yLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9XZWJHUFUvR1BVUmVuZGVyQnVu
ZGxlRW5jb2RlckRlc2NyaXB0b3IuaApAQCAtMzYsOCArMzYsMTAgQEAgc3RydWN0IEdQVVJlbmRl
ckJ1bmRsZUVuY29kZXJEZXNjcmlwdG9yIDogcHVibGljIEdQVVJlbmRlclBhc3NMYXlvdXQgewog
ICAgICAgICByZXR1cm4gewogICAgICAgICAgICAgewogICAgICAgICAgICAgICAgIHsgbGFiZWwg
fSwKLSAgICAgICAgICAgICAgICBjb2xvckZvcm1hdHMubWFwKFtdIChjb25zdCBhdXRvJiBjb2xv
ckZvcm1hdCkgewotICAgICAgICAgICAgICAgICAgICByZXR1cm4gV2ViQ29yZTo6Y29udmVydFRv
QmFja2luZyhjb2xvckZvcm1hdCk7CisgICAgICAgICAgICAgICAgY29sb3JGb3JtYXRzLm1hcChb
XSAoYXV0byYgY29sb3JGb3JtYXQpIC0+IHN0ZDo6b3B0aW9uYWw8UEFMOjpXZWJHUFU6OlRleHR1
cmVGb3JtYXQ+IHsKKyAgICAgICAgICAgICAgICAgICAgaWYgKGNvbG9yRm9ybWF0KQorICAgICAg
ICAgICAgICAgICAgICAgICAgcmV0dXJuIFdlYkNvcmU6OmNvbnZlcnRUb0JhY2tpbmcoKmNvbG9y
Rm9ybWF0KTsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICAg
ICAgICAgICAgICB9KSwKICAgICAgICAgICAgICAgICBkZXB0aFN0ZW5jaWxGb3JtYXQgPyBzdGQ6
Om9wdGlvbmFsIHsgV2ViQ29yZTo6Y29udmVydFRvQmFja2luZygqZGVwdGhTdGVuY2lsRm9ybWF0
KSB9IDogc3RkOjpudWxsb3B0LAogICAgICAgICAgICAgICAgIHNhbXBsZUNvdW50LApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9XZWJHUFUvR1BVUmVuZGVyUGFzc0NvbG9yQXR0
YWNobWVudC5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9XZWJHUFUvR1BVUmVuZGVyUGFzc0Nv
bG9yQXR0YWNobWVudC5oCmluZGV4IDg4NjU2MDYwY2YwMDA0M2NhODMzNzI0YTdlZjZhM2RjOGM4
MzVjYjguLjE2NGY1Mzk1NTlkNWM0NWUyNWY2OGYzY2RhZjRmNjI0ZWUyZDlhZTUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvV2ViR1BVL0dQVVJlbmRlclBhc3NDb2xvckF0dGFj
aG1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL1dlYkdQVS9HUFVSZW5kZXJQYXNz
Q29sb3JBdHRhY2htZW50LmgKQEAgLTQzLDEzICs0Myw4IEBAIHN0cnVjdCBHUFVSZW5kZXJQYXNz
Q29sb3JBdHRhY2htZW50IHsKICAgICAgICAgcmV0dXJuIHsKICAgICAgICAgICAgIHZpZXctPmJh
Y2tpbmcoKSwKICAgICAgICAgICAgIHJlc29sdmVUYXJnZXQgPyAmcmVzb2x2ZVRhcmdldC0+YmFj
a2luZygpIDogbnVsbHB0ciwKLSAgICAgICAgICAgIFdURjo6c3dpdGNoT24obG9hZFZhbHVlLCBb
Jl0gKEdQVUxvYWRPcCBsb2FkT3ApIC0+IHN0ZDo6dmFyaWFudDxQQUw6OldlYkdQVTo6TG9hZE9w
LCBWZWN0b3I8ZG91YmxlPiwgUEFMOjpXZWJHUFU6OkNvbG9yRGljdD4gewotICAgICAgICAgICAg
ICAgIHJldHVybiBXZWJDb3JlOjpjb252ZXJ0VG9CYWNraW5nKGxvYWRPcCk7Ci0gICAgICAgICAg
ICB9LCBbJl0gKGNvbnN0IFZlY3Rvcjxkb3VibGU+JiB2ZWN0b3IpIC0+IHN0ZDo6dmFyaWFudDxQ
QUw6OldlYkdQVTo6TG9hZE9wLCBWZWN0b3I8ZG91YmxlPiwgUEFMOjpXZWJHUFU6OkNvbG9yRGlj
dD4gewotICAgICAgICAgICAgICAgIHJldHVybiB2ZWN0b3I7Ci0gICAgICAgICAgICB9LCBbJl0g
KGNvbnN0IEdQVUNvbG9yRGljdCYgY29sb3IpIC0+IHN0ZDo6dmFyaWFudDxQQUw6OldlYkdQVTo6
TG9hZE9wLCBWZWN0b3I8ZG91YmxlPiwgUEFMOjpXZWJHUFU6OkNvbG9yRGljdD4gewotICAgICAg
ICAgICAgICAgIHJldHVybiBjb2xvci5jb252ZXJ0VG9CYWNraW5nKCk7Ci0gICAgICAgICAgICB9
KSwKKyAgICAgICAgICAgIGNsZWFyVmFsdWUgPyBzdGQ6Om9wdGlvbmFsIHsgV2ViQ29yZTo6Y29u
dmVydFRvQmFja2luZygqY2xlYXJWYWx1ZSkgfSA6IHN0ZDo6bnVsbG9wdCwKKyAgICAgICAgICAg
IFdlYkNvcmU6OmNvbnZlcnRUb0JhY2tpbmcobG9hZE9wKSwKICAgICAgICAgICAgIFdlYkNvcmU6
OmNvbnZlcnRUb0JhY2tpbmcoc3RvcmVPcCksCiAgICAgICAgIH07CiAgICAgfQpAQCAtNTcsNyAr
NTIsOCBAQCBzdHJ1Y3QgR1BVUmVuZGVyUGFzc0NvbG9yQXR0YWNobWVudCB7CiAgICAgR1BVVGV4
dHVyZVZpZXcqIHZpZXcgeyBudWxscHRyIH07CiAgICAgR1BVVGV4dHVyZVZpZXcqIHJlc29sdmVU
YXJnZXQgeyBudWxscHRyIH07CiAKLSAgICBzdGQ6OnZhcmlhbnQ8R1BVTG9hZE9wLCBWZWN0b3I8
ZG91YmxlPiwgR1BVQ29sb3JEaWN0PiBsb2FkVmFsdWU7CisgICAgc3RkOjpvcHRpb25hbDxHUFVD
b2xvcj4gY2xlYXJWYWx1ZTsKKyAgICBHUFVMb2FkT3AgbG9hZE9wIHsgR1BVTG9hZE9wOjpMb2Fk
IH07CiAgICAgR1BVU3RvcmVPcCBzdG9yZU9wIHsgR1BVU3RvcmVPcDo6U3RvcmUgfTsKIH07CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvV2ViR1BVL0dQVVJlbmRlclBhc3ND
b2xvckF0dGFjaG1lbnQuaWRsIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9XZWJHUFUvR1BVUmVu
ZGVyUGFzc0NvbG9yQXR0YWNobWVudC5pZGwKaW5kZXggMmJkYzZjNDM5YzM5MjJlOTUwNjdjYWMy
NjE2NDA3M2EwMzdlNTFkMC4uODUyYWNjNmZiMzYzOWFjMGE0YTc5NDZiYTc5NGY0MTY2ZmIzMjVk
ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9XZWJHUFUvR1BVUmVuZGVyUGFz
c0NvbG9yQXR0YWNobWVudC5pZGwKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9XZWJHUFUv
R1BVUmVuZGVyUGFzc0NvbG9yQXR0YWNobWVudC5pZGwKQEAgLTM1LDYgKzM1LDcgQEAgZGljdGlv
bmFyeSBHUFVSZW5kZXJQYXNzQ29sb3JBdHRhY2htZW50IHsKICAgICByZXF1aXJlZCBHUFVUZXh0
dXJlVmlldyB2aWV3OwogICAgIEdQVVRleHR1cmVWaWV3IHJlc29sdmVUYXJnZXQ7CiAKLSAgICBy
ZXF1aXJlZCAoR1BVTG9hZE9wIG9yIEdQVUNvbG9yKSBsb2FkVmFsdWU7CisgICAgR1BVQ29sb3Ig
Y2xlYXJWYWx1ZTsKKyAgICByZXF1aXJlZCBHUFVMb2FkT3AgbG9hZE9wOwogICAgIHJlcXVpcmVk
IEdQVVN0b3JlT3Agc3RvcmVPcDsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL1dlYkdQVS9HUFVSZW5kZXJQYXNzRGVwdGhTdGVuY2lsQXR0YWNobWVudC5oIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9XZWJHUFUvR1BVUmVuZGVyUGFzc0RlcHRoU3RlbmNpbEF0dGFjaG1l
bnQuaAppbmRleCBmYTNmYjc2MDAxODEwZmI2MGVhMzI4MWM3MmY3OTQzZTBhMzEzNzIyLi5jZmI0
YzdiZGU3YjMwY2U0MmRlNWNkMTBlOGVkOWI3Nzc4NTZjNmIzIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL1dlYkdQVS9HUFVSZW5kZXJQYXNzRGVwdGhTdGVuY2lsQXR0YWNobWVu
dC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvV2ViR1BVL0dQVVJlbmRlclBhc3NEZXB0
aFN0ZW5jaWxBdHRhY2htZW50LmgKQEAgLTQxLDMxICs0MSwyNyBAQCBzdHJ1Y3QgR1BVUmVuZGVy
UGFzc0RlcHRoU3RlbmNpbEF0dGFjaG1lbnQgewogICAgICAgICBBU1NFUlQodmlldyk7CiAgICAg
ICAgIHJldHVybiB7CiAgICAgICAgICAgICB2aWV3LT5iYWNraW5nKCksCi0gICAgICAgICAgICBX
VEY6OnN3aXRjaE9uKGRlcHRoTG9hZFZhbHVlLCBbJl0gKEdQVUxvYWRPcCBsb2FkT3ApIC0+IHN0
ZDo6dmFyaWFudDxQQUw6OldlYkdQVTo6TG9hZE9wLCBmbG9hdD4gewotICAgICAgICAgICAgICAg
IHJldHVybiBXZWJDb3JlOjpjb252ZXJ0VG9CYWNraW5nKGxvYWRPcCk7Ci0gICAgICAgICAgICB9
LCBbJl0gKGZsb2F0IGYpIC0+IHN0ZDo6dmFyaWFudDxQQUw6OldlYkdQVTo6TG9hZE9wLCBmbG9h
dD4gewotICAgICAgICAgICAgICAgIHJldHVybiBmOwotICAgICAgICAgICAgfSksCi0gICAgICAg
ICAgICBXZWJDb3JlOjpjb252ZXJ0VG9CYWNraW5nKGRlcHRoU3RvcmVPcCksCisgICAgICAgICAg
ICBkZXB0aENsZWFyVmFsdWUsCisgICAgICAgICAgICBkZXB0aExvYWRPcCA/IHN0ZDo6b3B0aW9u
YWwgeyBXZWJDb3JlOjpjb252ZXJ0VG9CYWNraW5nKCpkZXB0aExvYWRPcCkgfSA6IHN0ZDo6bnVs
bG9wdCwKKyAgICAgICAgICAgIGRlcHRoU3RvcmVPcCA/IHN0ZDo6b3B0aW9uYWwgeyBXZWJDb3Jl
Ojpjb252ZXJ0VG9CYWNraW5nKCpkZXB0aFN0b3JlT3ApIH0gOiBzdGQ6Om51bGxvcHQsCiAgICAg
ICAgICAgICBkZXB0aFJlYWRPbmx5LAotICAgICAgICAgICAgV1RGOjpzd2l0Y2hPbihzdGVuY2ls
TG9hZFZhbHVlLCBbJl0gKEdQVUxvYWRPcCBsb2FkT3ApIC0+IHN0ZDo6dmFyaWFudDxQQUw6Oldl
YkdQVTo6TG9hZE9wLCBQQUw6OldlYkdQVTo6U3RlbmNpbFZhbHVlPiB7Ci0gICAgICAgICAgICAg
ICAgcmV0dXJuIFdlYkNvcmU6OmNvbnZlcnRUb0JhY2tpbmcobG9hZE9wKTsKLSAgICAgICAgICAg
IH0sIFsmXSAoR1BVU3RlbmNpbFZhbHVlIHN0ZW5jaWxWYWx1ZSkgLT4gc3RkOjp2YXJpYW50PFBB
TDo6V2ViR1BVOjpMb2FkT3AsIFBBTDo6V2ViR1BVOjpTdGVuY2lsVmFsdWU+IHsKLSAgICAgICAg
ICAgICAgICByZXR1cm4gc3RlbmNpbFZhbHVlOwotICAgICAgICAgICAgfSksCi0gICAgICAgICAg
ICBXZWJDb3JlOjpjb252ZXJ0VG9CYWNraW5nKHN0ZW5jaWxTdG9yZU9wKSwKKyAgICAgICAgICAg
IHN0ZW5jaWxDbGVhclZhbHVlLAorICAgICAgICAgICAgc3RlbmNpbExvYWRPcCA/IHN0ZDo6b3B0
aW9uYWwgeyBXZWJDb3JlOjpjb252ZXJ0VG9CYWNraW5nKCpzdGVuY2lsTG9hZE9wKSB9IDogc3Rk
OjpudWxsb3B0LAorICAgICAgICAgICAgc3RlbmNpbFN0b3JlT3AgPyBzdGQ6Om9wdGlvbmFsIHsg
V2ViQ29yZTo6Y29udmVydFRvQmFja2luZygqc3RlbmNpbFN0b3JlT3ApIH0gOiBzdGQ6Om51bGxv
cHQsCiAgICAgICAgICAgICBzdGVuY2lsUmVhZE9ubHksCiAgICAgICAgIH07CiAgICAgfQogCiAg
ICAgR1BVVGV4dHVyZVZpZXcqIHZpZXcgeyBudWxscHRyIH07CiAKLSAgICBzdGQ6OnZhcmlhbnQ8
R1BVTG9hZE9wLCBmbG9hdD4gZGVwdGhMb2FkVmFsdWU7Ci0gICAgR1BVU3RvcmVPcCBkZXB0aFN0
b3JlT3AgeyBHUFVTdG9yZU9wOjpTdG9yZSB9OworICAgIGZsb2F0IGRlcHRoQ2xlYXJWYWx1ZSB7
IDAgfTsKKyAgICBzdGQ6Om9wdGlvbmFsPEdQVUxvYWRPcD4gZGVwdGhMb2FkT3A7CisgICAgc3Rk
OjpvcHRpb25hbDxHUFVTdG9yZU9wPiBkZXB0aFN0b3JlT3A7CiAgICAgYm9vbCBkZXB0aFJlYWRP
bmx5IHsgZmFsc2UgfTsKIAotICAgIHN0ZDo6dmFyaWFudDxHUFVMb2FkT3AsIEdQVVN0ZW5jaWxW
YWx1ZT4gc3RlbmNpbExvYWRWYWx1ZTsKLSAgICBHUFVTdG9yZU9wIHN0ZW5jaWxTdG9yZU9wIHsg
R1BVU3RvcmVPcDo6U3RvcmUgfTsKKyAgICBHUFVTdGVuY2lsVmFsdWUgc3RlbmNpbENsZWFyVmFs
dWUgeyAwIH07CisgICAgc3RkOjpvcHRpb25hbDxHUFVMb2FkT3A+IHN0ZW5jaWxMb2FkT3A7Cisg
ICAgc3RkOjpvcHRpb25hbDxHUFVTdG9yZU9wPiBzdGVuY2lsU3RvcmVPcDsKICAgICBib29sIHN0
ZW5jaWxSZWFkT25seSB7IGZhbHNlIH07CiB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL1dlYkdQVS9HUFVSZW5kZXJQYXNzRGVwdGhTdGVuY2lsQXR0YWNobWVudC5pZGwg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL1dlYkdQVS9HUFVSZW5kZXJQYXNzRGVwdGhTdGVuY2ls
QXR0YWNobWVudC5pZGwKaW5kZXggMzc1MDIxOWEyODViNzIxY2M4NTY1N2M5NWRmYTlkY2M0YTVk
MDExOC4uN2U2OTU3YjRmNTdiOGYxZDUyYWRkMDgwNDA5MWZmZmI4ODFmOWJiNyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9XZWJHUFUvR1BVUmVuZGVyUGFzc0RlcHRoU3RlbmNp
bEF0dGFjaG1lbnQuaWRsCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvV2ViR1BVL0dQVVJl
bmRlclBhc3NEZXB0aFN0ZW5jaWxBdHRhY2htZW50LmlkbApAQCAtMzQsMTEgKzM0LDEzIEBAIHR5
cGVkZWYgW0VuZm9yY2VSYW5nZV0gdW5zaWduZWQgbG9uZyBHUFVTdGVuY2lsVmFsdWU7CiBkaWN0
aW9uYXJ5IEdQVVJlbmRlclBhc3NEZXB0aFN0ZW5jaWxBdHRhY2htZW50IHsKICAgICByZXF1aXJl
ZCBHUFVUZXh0dXJlVmlldyB2aWV3OwogCi0gICAgcmVxdWlyZWQgKEdQVUxvYWRPcCBvciBmbG9h
dCkgZGVwdGhMb2FkVmFsdWU7Ci0gICAgcmVxdWlyZWQgR1BVU3RvcmVPcCBkZXB0aFN0b3JlT3A7
CisgICAgZmxvYXQgZGVwdGhDbGVhclZhbHVlID0gMDsKKyAgICBHUFVMb2FkT3AgZGVwdGhMb2Fk
T3A7CisgICAgR1BVU3RvcmVPcCBkZXB0aFN0b3JlT3A7CiAgICAgYm9vbGVhbiBkZXB0aFJlYWRP
bmx5ID0gZmFsc2U7CiAKLSAgICByZXF1aXJlZCAoR1BVTG9hZE9wIG9yIEdQVVN0ZW5jaWxWYWx1
ZSkgc3RlbmNpbExvYWRWYWx1ZTsKLSAgICByZXF1aXJlZCBHUFVTdG9yZU9wIHN0ZW5jaWxTdG9y
ZU9wOworICAgIEdQVVN0ZW5jaWxWYWx1ZSBzdGVuY2lsQ2xlYXJWYWx1ZSA9IDA7CisgICAgR1BV
TG9hZE9wIHN0ZW5jaWxMb2FkT3A7CisgICAgR1BVU3RvcmVPcCBzdGVuY2lsU3RvcmVPcDsKICAg
ICBib29sZWFuIHN0ZW5jaWxSZWFkT25seSA9IGZhbHNlOwogfTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvV2ViR1BVL0dQVVJlbmRlclBhc3NEZXNjcmlwdG9yLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL1dlYkdQVS9HUFVSZW5kZXJQYXNzRGVzY3JpcHRvci5oCmluZGV4
IDU4MmFmZTFlOTczODBmMjhhZTE1MTFmYWZjMWI1MzcxYTI4ZmU0NzEuLmZiNzhmNTJmODI3MzAz
YzBhMzAxNmY3NjI3Y2JlMDFlZmZmNTgyOGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvV2ViR1BVL0dQVVJlbmRlclBhc3NEZXNjcmlwdG9yLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9XZWJHUFUvR1BVUmVuZGVyUGFzc0Rlc2NyaXB0b3IuaApAQCAtNDIsOCArNDIs
MTAgQEAgc3RydWN0IEdQVVJlbmRlclBhc3NEZXNjcmlwdG9yIDogcHVibGljIEdQVU9iamVjdERl
c2NyaXB0b3JCYXNlIHsKICAgICB7CiAgICAgICAgIHJldHVybiB7CiAgICAgICAgICAgICB7IGxh
YmVsIH0sCi0gICAgICAgICAgICBjb2xvckF0dGFjaG1lbnRzLm1hcChbXSAoYXV0byYgY29sb3JB
dHRhY2htZW50KSB7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIGNvbG9yQXR0YWNobWVudC5jb252
ZXJ0VG9CYWNraW5nKCk7CisgICAgICAgICAgICBjb2xvckF0dGFjaG1lbnRzLm1hcChbXSAoYXV0
byYgY29sb3JBdHRhY2htZW50KSAtPiBzdGQ6Om9wdGlvbmFsPFBBTDo6V2ViR1BVOjpSZW5kZXJQ
YXNzQ29sb3JBdHRhY2htZW50PiB7CisgICAgICAgICAgICAgICAgaWYgKGNvbG9yQXR0YWNobWVu
dCkKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGNvbG9yQXR0YWNobWVudC0+Y29udmVydFRv
QmFja2luZygpOworICAgICAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgICAg
ICAgICB9KSwKICAgICAgICAgICAgIGRlcHRoU3RlbmNpbEF0dGFjaG1lbnQgPyBzdGQ6Om9wdGlv
bmFsIHsgZGVwdGhTdGVuY2lsQXR0YWNobWVudC0+Y29udmVydFRvQmFja2luZygpIH0gOiBzdGQ6
Om51bGxvcHQsCiAgICAgICAgICAgICBvY2NsdXNpb25RdWVyeVNldCA/ICZvY2NsdXNpb25RdWVy
eVNldC0+YmFja2luZygpIDogbnVsbHB0ciwKQEAgLTUxLDcgKzUzLDcgQEAgc3RydWN0IEdQVVJl
bmRlclBhc3NEZXNjcmlwdG9yIDogcHVibGljIEdQVU9iamVjdERlc2NyaXB0b3JCYXNlIHsKICAg
ICAgICAgfTsKICAgICB9CiAKLSAgICBWZWN0b3I8R1BVUmVuZGVyUGFzc0NvbG9yQXR0YWNobWVu
dD4gY29sb3JBdHRhY2htZW50czsKKyAgICBWZWN0b3I8c3RkOjpvcHRpb25hbDxHUFVSZW5kZXJQ
YXNzQ29sb3JBdHRhY2htZW50Pj4gY29sb3JBdHRhY2htZW50czsKICAgICBzdGQ6Om9wdGlvbmFs
PEdQVVJlbmRlclBhc3NEZXB0aFN0ZW5jaWxBdHRhY2htZW50PiBkZXB0aFN0ZW5jaWxBdHRhY2ht
ZW50OwogICAgIEdQVVF1ZXJ5U2V0KiBvY2NsdXNpb25RdWVyeVNldCB7IG51bGxwdHIgfTsKICAg
ICBHUFVSZW5kZXJQYXNzVGltZXN0YW1wV3JpdGVzIHRpbWVzdGFtcFdyaXRlczsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvV2ViR1BVL0dQVVJlbmRlclBhc3NEZXNjcmlwdG9y
LmlkbCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvV2ViR1BVL0dQVVJlbmRlclBhc3NEZXNjcmlw
dG9yLmlkbAppbmRleCAwYzFjZGUzODhmMmYwYzZhZTQzYTZjYjUwMzA2YWY1OTM4Yzc0MmM2Li4x
NjllMTVjYmJlNjVlYTVjZDQwODQyMTgxNzI0N2YxYWJmODdjMDdiIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL1dlYkdQVS9HUFVSZW5kZXJQYXNzRGVzY3JpcHRvci5pZGwKKysr
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9XZWJHUFUvR1BVUmVuZGVyUGFzc0Rlc2NyaXB0b3Iu
aWRsCkBAIC0zMiw3ICszMiw3IEBAIHR5cGVkZWYgc2VxdWVuY2U8R1BVUmVuZGVyUGFzc1RpbWVz
dGFtcFdyaXRlPiBHUFVSZW5kZXJQYXNzVGltZXN0YW1wV3JpdGVzOwogICAgIEVuYWJsZWRCeVNl
dHRpbmc9V2ViR1BVCiBdCiBkaWN0aW9uYXJ5IEdQVVJlbmRlclBhc3NEZXNjcmlwdG9yIDogR1BV
T2JqZWN0RGVzY3JpcHRvckJhc2UgewotICAgIHJlcXVpcmVkIHNlcXVlbmNlPEdQVVJlbmRlclBh
c3NDb2xvckF0dGFjaG1lbnQ+IGNvbG9yQXR0YWNobWVudHM7CisgICAgcmVxdWlyZWQgc2VxdWVu
Y2U8R1BVUmVuZGVyUGFzc0NvbG9yQXR0YWNobWVudD8+IGNvbG9yQXR0YWNobWVudHM7CiAgICAg
R1BVUmVuZGVyUGFzc0RlcHRoU3RlbmNpbEF0dGFjaG1lbnQgZGVwdGhTdGVuY2lsQXR0YWNobWVu
dDsKICAgICBHUFVRdWVyeVNldCBvY2NsdXNpb25RdWVyeVNldDsKICAgICBHUFVSZW5kZXJQYXNz
VGltZXN0YW1wV3JpdGVzIHRpbWVzdGFtcFdyaXRlcyA9IFtdOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9XZWJHUFUvR1BVUmVuZGVyUGFzc0VuY29kZXIuY3BwIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9XZWJHUFUvR1BVUmVuZGVyUGFzc0VuY29kZXIuY3BwCmluZGV4IGE5
NTEwMTY2ZjhiZTgyMTJlNzZjYWZlNGE3ZTJhNDYyOTVmMmJiODEuLmQ2NDQzNTI5Y2NiOWI1Y2E4
ZGMxZDRlNmNkZDA4ZjRjNDNiOWY2NjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvV2ViR1BVL0dQVVJlbmRlclBhc3NFbmNvZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL1dlYkdQVS9HUFVSZW5kZXJQYXNzRW5jb2Rlci5jcHAKQEAgLTE0NSwxNiArMTQ1LDYg
QEAgdm9pZCBHUFVSZW5kZXJQYXNzRW5jb2Rlcjo6ZW5kT2NjbHVzaW9uUXVlcnkoKQogICAgIG1f
YmFja2luZy0+ZW5kT2NjbHVzaW9uUXVlcnkoKTsKIH0KIAotdm9pZCBHUFVSZW5kZXJQYXNzRW5j
b2Rlcjo6YmVnaW5QaXBlbGluZVN0YXRpc3RpY3NRdWVyeShjb25zdCBHUFVRdWVyeVNldCYgcXVl
cnlTZXQsIEdQVVNpemUzMiBxdWVyeUluZGV4KQotewotICAgIG1fYmFja2luZy0+YmVnaW5QaXBl
bGluZVN0YXRpc3RpY3NRdWVyeShxdWVyeVNldC5iYWNraW5nKCksIHF1ZXJ5SW5kZXgpOwotfQot
Ci12b2lkIEdQVVJlbmRlclBhc3NFbmNvZGVyOjplbmRQaXBlbGluZVN0YXRpc3RpY3NRdWVyeSgp
Ci17Ci0gICAgbV9iYWNraW5nLT5lbmRQaXBlbGluZVN0YXRpc3RpY3NRdWVyeSgpOwotfQotCiB2
b2lkIEdQVVJlbmRlclBhc3NFbmNvZGVyOjpleGVjdXRlQnVuZGxlcyhWZWN0b3I8UmVmUHRyPEdQ
VVJlbmRlckJ1bmRsZT4+JiYgYnVuZGxlcykKIHsKICAgICBWZWN0b3I8c3RkOjpyZWZlcmVuY2Vf
d3JhcHBlcjxQQUw6OldlYkdQVTo6UmVuZGVyQnVuZGxlPj4gcmVzdWx0OwpAQCAtMTY3LDkgKzE1
Nyw5IEBAIHZvaWQgR1BVUmVuZGVyUGFzc0VuY29kZXI6OmV4ZWN1dGVCdW5kbGVzKFZlY3RvcjxS
ZWZQdHI8R1BVUmVuZGVyQnVuZGxlPj4mJiBidW5kCiAgICAgbV9iYWNraW5nLT5leGVjdXRlQnVu
ZGxlcyhXVEZNb3ZlKHJlc3VsdCkpOwogfQogCi12b2lkIEdQVVJlbmRlclBhc3NFbmNvZGVyOjpl
bmRQYXNzKCkKK3ZvaWQgR1BVUmVuZGVyUGFzc0VuY29kZXI6OmVuZCgpCiB7Ci0gICAgbV9iYWNr
aW5nLT5lbmRQYXNzKCk7CisgICAgbV9iYWNraW5nLT5lbmQoKTsKIH0KIAogfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9XZWJHUFUvR1BVUmVuZGVyUGFzc0VuY29kZXIuaCBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvV2ViR1BVL0dQVVJlbmRlclBhc3NFbmNvZGVyLmgKaW5k
ZXggZmM4MTcxYzRhZWE0ZWVlMzZkOGMyNzA3Nzg2NmU3NjBkYjZlZGRlNy4uYTVmMGE5NmFkZjkz
NmNlOTQxNDU4ZGJkMTdhYjg2NmUzMTQ2YjNjYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9XZWJHUFUvR1BVUmVuZGVyUGFzc0VuY29kZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL1dlYkdQVS9HUFVSZW5kZXJQYXNzRW5jb2Rlci5oCkBAIC05NSwxMSArOTUsOCBA
QCBwdWJsaWM6CiAgICAgdm9pZCBiZWdpbk9jY2x1c2lvblF1ZXJ5KEdQVVNpemUzMiBxdWVyeUlu
ZGV4KTsKICAgICB2b2lkIGVuZE9jY2x1c2lvblF1ZXJ5KCk7CiAKLSAgICB2b2lkIGJlZ2luUGlw
ZWxpbmVTdGF0aXN0aWNzUXVlcnkoY29uc3QgR1BVUXVlcnlTZXQmLCBHUFVTaXplMzIgcXVlcnlJ
bmRleCk7Ci0gICAgdm9pZCBlbmRQaXBlbGluZVN0YXRpc3RpY3NRdWVyeSgpOwotCiAgICAgdm9p
ZCBleGVjdXRlQnVuZGxlcyhWZWN0b3I8UmVmUHRyPEdQVVJlbmRlckJ1bmRsZT4+JiYpOwotICAg
IHZvaWQgZW5kUGFzcygpOworICAgIHZvaWQgZW5kKCk7CiAKICAgICBQQUw6OldlYkdQVTo6UmVu
ZGVyUGFzc0VuY29kZXImIGJhY2tpbmcoKSB7IHJldHVybiBtX2JhY2tpbmc7IH0KICAgICBjb25z
dCBQQUw6OldlYkdQVTo6UmVuZGVyUGFzc0VuY29kZXImIGJhY2tpbmcoKSBjb25zdCB7IHJldHVy
biBtX2JhY2tpbmc7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvV2ViR1BV
L0dQVVJlbmRlclBhc3NFbmNvZGVyLmlkbCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvV2ViR1BV
L0dQVVJlbmRlclBhc3NFbmNvZGVyLmlkbAppbmRleCA0ODg1ZWEzNjhjNDAzZjBhYTg1MWMwNjhm
YmNjMDcyZDAyNzFhNjlkLi40NzZlY2E1YzcwZjc2ZjA3MzBhMzJlYzY4NzY1NTNmMzkwNzg4ZDk5
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL1dlYkdQVS9HUFVSZW5kZXJQYXNz
RW5jb2Rlci5pZGwKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9XZWJHUFUvR1BVUmVuZGVy
UGFzc0VuY29kZXIuaWRsCkBAIC01MCwxMiArNTAsMTEgQEAgaW50ZXJmYWNlIEdQVVJlbmRlclBh
c3NFbmNvZGVyIHsKICAgICB1bmRlZmluZWQgYmVnaW5PY2NsdXNpb25RdWVyeShHUFVTaXplMzIg
cXVlcnlJbmRleCk7CiAgICAgdW5kZWZpbmVkIGVuZE9jY2x1c2lvblF1ZXJ5KCk7CiAKLSAgICB1
bmRlZmluZWQgYmVnaW5QaXBlbGluZVN0YXRpc3RpY3NRdWVyeShHUFVRdWVyeVNldCBxdWVyeVNl
dCwgR1BVU2l6ZTMyIHF1ZXJ5SW5kZXgpOwotICAgIHVuZGVmaW5lZCBlbmRQaXBlbGluZVN0YXRp
c3RpY3NRdWVyeSgpOwotCiAgICAgdW5kZWZpbmVkIGV4ZWN1dGVCdW5kbGVzKHNlcXVlbmNlPEdQ
VVJlbmRlckJ1bmRsZT4gYnVuZGxlcyk7Ci0gICAgdW5kZWZpbmVkIGVuZFBhc3MoKTsKKyAgICB1
bmRlZmluZWQgZW5kKCk7CiB9OwogR1BVUmVuZGVyUGFzc0VuY29kZXIgaW5jbHVkZXMgR1BVT2Jq
ZWN0QmFzZTsKK0dQVVJlbmRlclBhc3NFbmNvZGVyIGluY2x1ZGVzIEdQVUNvbW1hbmRzTWl4aW47
CitHUFVSZW5kZXJQYXNzRW5jb2RlciBpbmNsdWRlcyBHUFVEZWJ1Z0NvbW1hbmRzTWl4aW47CiBH
UFVSZW5kZXJQYXNzRW5jb2RlciBpbmNsdWRlcyBHUFVQcm9ncmFtbWFibGVQYXNzRW5jb2RlcjsK
IEdQVVJlbmRlclBhc3NFbmNvZGVyIGluY2x1ZGVzIEdQVVJlbmRlckVuY29kZXJCYXNlOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9XZWJHUFUvR1BVUmVuZGVyUGFzc0xheW91
dC5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9XZWJHUFUvR1BVUmVuZGVyUGFzc0xheW91dC5o
CmluZGV4IGI1YTU0MGFhYWFjNzhkODkwMmNiOTI3YjYyMWMxZWI4MTA0YjM5NTQuLmE0M2Q0MTkx
YTNlYTJiOTc2ZDkxNTZlNDFhN2NiMTA1OTY3YjU0MTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvV2ViR1BVL0dQVVJlbmRlclBhc3NMYXlvdXQuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL1dlYkdQVS9HUFVSZW5kZXJQYXNzTGF5b3V0LmgKQEAgLTM5LDE1ICszOSwx
NyBAQCBzdHJ1Y3QgR1BVUmVuZGVyUGFzc0xheW91dCA6IHB1YmxpYyBHUFVPYmplY3REZXNjcmlw
dG9yQmFzZSB7CiAgICAgewogICAgICAgICByZXR1cm4gewogICAgICAgICAgICAgeyBsYWJlbCB9
LAotICAgICAgICAgICAgY29sb3JGb3JtYXRzLm1hcChbXSAoY29uc3QgYXV0byYgY29sb3JGb3Jt
YXQpIHsKLSAgICAgICAgICAgICAgICByZXR1cm4gV2ViQ29yZTo6Y29udmVydFRvQmFja2luZyhj
b2xvckZvcm1hdCk7CisgICAgICAgICAgICBjb2xvckZvcm1hdHMubWFwKFtdIChhdXRvJiBjb2xv
ckZvcm1hdCkgLT4gc3RkOjpvcHRpb25hbDxQQUw6OldlYkdQVTo6VGV4dHVyZUZvcm1hdD4gewor
ICAgICAgICAgICAgICAgIGlmIChjb2xvckZvcm1hdCkKKyAgICAgICAgICAgICAgICAgICAgcmV0
dXJuIFdlYkNvcmU6OmNvbnZlcnRUb0JhY2tpbmcoKmNvbG9yRm9ybWF0KTsKKyAgICAgICAgICAg
ICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgICAgICAgICAgfSksCiAgICAgICAgICAgICBk
ZXB0aFN0ZW5jaWxGb3JtYXQgPyBzdGQ6Om9wdGlvbmFsIHsgV2ViQ29yZTo6Y29udmVydFRvQmFj
a2luZygqZGVwdGhTdGVuY2lsRm9ybWF0KSB9IDogc3RkOjpudWxsb3B0LAogICAgICAgICAgICAg
c2FtcGxlQ291bnQsCiAgICAgICAgIH07CiAgICAgfQogCi0gICAgVmVjdG9yPEdQVVRleHR1cmVG
b3JtYXQ+IGNvbG9yRm9ybWF0czsKKyAgICBWZWN0b3I8c3RkOjpvcHRpb25hbDxHUFVUZXh0dXJl
Rm9ybWF0Pj4gY29sb3JGb3JtYXRzOwogICAgIHN0ZDo6b3B0aW9uYWw8R1BVVGV4dHVyZUZvcm1h
dD4gZGVwdGhTdGVuY2lsRm9ybWF0OwogICAgIEdQVVNpemUzMiBzYW1wbGVDb3VudCB7IDEgfTsK
IH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL1dlYkdQVS9HUFVSZW5kZXJQ
YXNzTGF5b3V0LmlkbCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvV2ViR1BVL0dQVVJlbmRlclBh
c3NMYXlvdXQuaWRsCmluZGV4IDRhNzY5NjkyZTI2MDJiMDc1ZTAxM2E5MDBkY2NlOTIxOWYzODZi
NTIuLjZiY2JkYjEzMDY3NjM5MTg3YmJhOTIzYmRiZGU0NjIyNDk3NTlmY2EgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvV2ViR1BVL0dQVVJlbmRlclBhc3NMYXlvdXQuaWRsCisr
KyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvV2ViR1BVL0dQVVJlbmRlclBhc3NMYXlvdXQuaWRs
CkBAIC0zMiw3ICszMiw3IEBAIHR5cGVkZWYgW0VuZm9yY2VSYW5nZV0gdW5zaWduZWQgbG9uZyBH
UFVTaXplMzI7CiAgICAgRW5hYmxlZEJ5U2V0dGluZz1XZWJHUFUKIF0KIGRpY3Rpb25hcnkgR1BV
UmVuZGVyUGFzc0xheW91dCA6IEdQVU9iamVjdERlc2NyaXB0b3JCYXNlIHsKLSAgICByZXF1aXJl
ZCBzZXF1ZW5jZTxHUFVUZXh0dXJlRm9ybWF0PiBjb2xvckZvcm1hdHM7CisgICAgcmVxdWlyZWQg
c2VxdWVuY2U8R1BVVGV4dHVyZUZvcm1hdD8+IGNvbG9yRm9ybWF0czsKICAgICBHUFVUZXh0dXJl
Rm9ybWF0IGRlcHRoU3RlbmNpbEZvcm1hdDsKICAgICBHUFVTaXplMzIgc2FtcGxlQ291bnQgPSAx
OwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvV2ViR1BVL0dQVVNoYWRl
ck1vZHVsZUNvbXBpbGF0aW9uSGludC5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9XZWJHUFUv
R1BVU2hhZGVyTW9kdWxlQ29tcGlsYXRpb25IaW50LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMmM5NWQ0MDA0NmM3
ODhlYjRjNzEwYWQwOTdkZWYzOTBjYTE3ZDY2ZgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvV2ViR1BVL0dQVVNoYWRlck1vZHVsZUNvbXBpbGF0aW9uSGludC5oCkBA
IC0wLDAgKzEsNDUgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjEgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUg
bWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBB
TlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4g
Tk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExB
UlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgIkdQ
VVBpcGVsaW5lTGF5b3V0LmgiCisjaW5jbHVkZSA8cGFsL2dyYXBoaWNzL1dlYkdQVS9XZWJHUFVT
aGFkZXJNb2R1bGVDb21waWxhdGlvbkhpbnQuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitz
dHJ1Y3QgR1BVU2hhZGVyTW9kdWxlQ29tcGlsYXRpb25IaW50IHsKKyAgICBQQUw6OldlYkdQVTo6
U2hhZGVyTW9kdWxlQ29tcGlsYXRpb25IaW50IGNvbnZlcnRUb0JhY2tpbmcoKSBjb25zdAorICAg
IHsKKyAgICAgICAgQVNTRVJUKGxheW91dCk7CisgICAgICAgIHJldHVybiB7CisgICAgICAgICAg
ICBsYXlvdXQtPmJhY2tpbmcoKSwKKyAgICAgICAgfTsKKyAgICB9CisKKyAgICBHUFVQaXBlbGlu
ZUxheW91dCogbGF5b3V0IHsgbnVsbHB0ciB9OworfTsKKworfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9XZWJHUFUvR1BVU2hhZGVyTW9kdWxlQ29tcGlsYXRpb25IaW50Lmlk
bCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvV2ViR1BVL0dQVVNoYWRlck1vZHVsZUNvbXBpbGF0
aW9uSGludC5pZGwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZjg4NTZlODlmYmQyMGY4Y2MzYTc1OWE5MTcyZDVjY2M2
NTNjMDA2MwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvV2ViR1BV
L0dQVVNoYWRlck1vZHVsZUNvbXBpbGF0aW9uSGludC5pZGwKQEAgLTAsMCArMSwzMyBAQAorLyoK
KyAqIENvcHlyaWdodCAoQykgMjAyMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli
dXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFO
RCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBM
RSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5U
IE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwg
T1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgorICovCisKKy8vIGh0dHBzOi8vZ3B1d2ViLmdpdGh1Yi5pby9ncHV3ZWIvI2RpY3RkZWYtZ3B1
c2hhZGVybW9kdWxlY29tcGlsYXRpb25oaW50CisKK1sKKyAgICBFbmFibGVkQnlTZXR0aW5nPVdl
YkdQVQorXQorZGljdGlvbmFyeSBHUFVTaGFkZXJNb2R1bGVDb21waWxhdGlvbkhpbnQgeworICAg
IHJlcXVpcmVkIEdQVVBpcGVsaW5lTGF5b3V0IGxheW91dDsKK307CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL1dlYkdQVS9HUFVTaGFkZXJNb2R1bGVEZXNjcmlwdG9yLmggYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL1dlYkdQVS9HUFVTaGFkZXJNb2R1bGVEZXNjcmlwdG9yLmgK
aW5kZXggMTYxNzMyNWFmM2FjNzM0NGQyOTc1MWU1NjBlNGY5M2JmNDI1OTEyMi4uOGNkY2JiOTU5
NmQ4OTNmODdlMmFmOGFhZjU3Y2RjN2I2YTMzMTA0MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9XZWJHUFUvR1BVU2hhZGVyTW9kdWxlRGVzY3JpcHRvci5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvV2ViR1BVL0dQVVNoYWRlck1vZHVsZURlc2NyaXB0b3IuaApAQCAt
MjUsNyArMjUsNyBAQAogCiAjcHJhZ21hIG9uY2UKIAotI2luY2x1ZGUgIkdQVU9iamVjdERlc2Ny
aXB0b3JCYXNlLmgiCisjaW5jbHVkZSAiR1BVU2hhZGVyTW9kdWxlQ29tcGlsYXRpb25IaW50Lmgi
CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSlNPYmplY3QuaD4KICNpbmNsdWRlIDxKYXZhU2Ny
aXB0Q29yZS9TdHJvbmcuaD4KICNpbmNsdWRlIDxwYWwvZ3JhcGhpY3MvV2ViR1BVL1dlYkdQVVNo
YWRlck1vZHVsZURlc2NyaXB0b3IuaD4KQEAgLTQwLDExICs0MCwxNSBAQCBzdHJ1Y3QgR1BVU2hh
ZGVyTW9kdWxlRGVzY3JpcHRvciA6IHB1YmxpYyBHUFVPYmplY3REZXNjcmlwdG9yQmFzZSB7CiAg
ICAgICAgICAgICB7IGxhYmVsIH0sCiAgICAgICAgICAgICBjb2RlLAogICAgICAgICAgICAgLy8g
RklYTUU6IEhhbmRsZSB0aGUgc291cmNlTWFwLgorICAgICAgICAgICAgaGludHMubWFwKFtdIChh
dXRvJiBoaW50KSB7CisgICAgICAgICAgICAgICAgcmV0dXJuIEtleVZhbHVlUGFpcjxTdHJpbmcs
IFBBTDo6V2ViR1BVOjpTaGFkZXJNb2R1bGVDb21waWxhdGlvbkhpbnQ+KGhpbnQua2V5LCBoaW50
LnZhbHVlLmNvbnZlcnRUb0JhY2tpbmcoKSk7CisgICAgICAgICAgICB9KSwKICAgICAgICAgfTsK
ICAgICB9CiAKICAgICBTdHJpbmcgY29kZTsKICAgICBKU0M6OlN0cm9uZzxKU0M6OkpTT2JqZWN0
PiBzb3VyY2VNYXA7CisgICAgVmVjdG9yPEtleVZhbHVlUGFpcjxTdHJpbmcsIEdQVVNoYWRlck1v
ZHVsZUNvbXBpbGF0aW9uSGludD4+IGhpbnRzOwogfTsKIAogfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9XZWJHUFUvR1BVU2hhZGVyTW9kdWxlRGVzY3JpcHRvci5pZGwgYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL1dlYkdQVS9HUFVTaGFkZXJNb2R1bGVEZXNjcmlwdG9yLmlk
bAppbmRleCBiOGE3OTU5Y2ViM2MzNzYzZjk2YTZiNjFmM2Y0NWFjMDg2NjcxOGI0Li40MmUwNDRk
N2Q0ZDQxNDVlNTU3MDk4NzA1NjZlNzA5MDBlYWZjMDYwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL1dlYkdQVS9HUFVTaGFkZXJNb2R1bGVEZXNjcmlwdG9yLmlkbAorKysgYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL1dlYkdQVS9HUFVTaGFkZXJNb2R1bGVEZXNjcmlwdG9yLmlk
bApAQCAtMzEsNCArMzEsNSBAQAogZGljdGlvbmFyeSBHUFVTaGFkZXJNb2R1bGVEZXNjcmlwdG9y
IDogR1BVT2JqZWN0RGVzY3JpcHRvckJhc2UgewogICAgIHJlcXVpcmVkIFVTVlN0cmluZyBjb2Rl
OwogICAgIG9iamVjdCBzb3VyY2VNYXA7CisgICAgcmVjb3JkPFVTVlN0cmluZywgR1BVU2hhZGVy
TW9kdWxlQ29tcGlsYXRpb25IaW50PiBoaW50czsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL1dlYkdQVS9HUFVUZXh0dXJlRGVzY3JpcHRvci5oIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9XZWJHUFUvR1BVVGV4dHVyZURlc2NyaXB0b3IuaAppbmRleCBjN2Q4YjI3YWMx
M2U4YmVkZjk0Y2VmNjc2YzI4Yjg1NDE1NjVhM2Q4Li40ZDJmYTQ3MjdlNDkwM2Y1ZjBmODkxZDA4
Y2VlMjRiOTdlOGVkNzcyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL1dlYkdQ
VS9HUFVUZXh0dXJlRGVzY3JpcHRvci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvV2Vi
R1BVL0dQVVRleHR1cmVEZXNjcmlwdG9yLmgKQEAgLTQ2LDYgKzQ2LDkgQEAgc3RydWN0IEdQVVRl
eHR1cmVEZXNjcmlwdG9yIDogcHVibGljIEdQVU9iamVjdERlc2NyaXB0b3JCYXNlIHsKICAgICAg
ICAgICAgIFdlYkNvcmU6OmNvbnZlcnRUb0JhY2tpbmcoZGltZW5zaW9uKSwKICAgICAgICAgICAg
IFdlYkNvcmU6OmNvbnZlcnRUb0JhY2tpbmcoZm9ybWF0KSwKICAgICAgICAgICAgIGNvbnZlcnRU
ZXh0dXJlVXNhZ2VGbGFnc1RvQmFja2luZyh1c2FnZSksCisgICAgICAgICAgICB2aWV3Rm9ybWF0
cy5tYXAoW10gKGF1dG8gdmlld0Zvcm1hdCkgeworICAgICAgICAgICAgICAgIHJldHVybiBXZWJD
b3JlOjpjb252ZXJ0VG9CYWNraW5nKHZpZXdGb3JtYXQpOworICAgICAgICAgICAgfSksCiAgICAg
ICAgIH07CiAgICAgfQogCkBAIC01NSw2ICs1OCw3IEBAIHN0cnVjdCBHUFVUZXh0dXJlRGVzY3Jp
cHRvciA6IHB1YmxpYyBHUFVPYmplY3REZXNjcmlwdG9yQmFzZSB7CiAgICAgR1BVVGV4dHVyZURp
bWVuc2lvbiBkaW1lbnNpb24geyBHUFVUZXh0dXJlRGltZW5zaW9uOjpfMmQgfTsKICAgICBHUFVU
ZXh0dXJlRm9ybWF0IGZvcm1hdCB7IEdQVVRleHR1cmVGb3JtYXQ6OlI4dW5vcm0gfTsKICAgICBH
UFVUZXh0dXJlVXNhZ2VGbGFncyB1c2FnZSB7IDAgfTsKKyAgICBWZWN0b3I8R1BVVGV4dHVyZUZv
cm1hdD4gdmlld0Zvcm1hdHM7CiB9OwogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL1dlYkdQVS9HUFVUZXh0dXJlRGVzY3JpcHRvci5pZGwgYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL1dlYkdQVS9HUFVUZXh0dXJlRGVzY3JpcHRvci5pZGwKaW5kZXggYjI0ZmQzMmY2Nzc4
N2VhNzY5YTIwNzg5ZjVlNDgzMmZjYjQyYzVkNS4uNWRmNjc3NDlkM2U2NmFmYTAzMzNkODg1OTdi
YWJmZDc0NmZiZjM1MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9XZWJHUFUv
R1BVVGV4dHVyZURlc2NyaXB0b3IuaWRsCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvV2Vi
R1BVL0dQVVRleHR1cmVEZXNjcmlwdG9yLmlkbApAQCAtNDEsNCArNDEsNSBAQCBkaWN0aW9uYXJ5
IEdQVVRleHR1cmVEZXNjcmlwdG9yIDogR1BVT2JqZWN0RGVzY3JpcHRvckJhc2UgewogICAgIEdQ
VVRleHR1cmVEaW1lbnNpb24gZGltZW5zaW9uID0gIjJkIjsKICAgICByZXF1aXJlZCBHUFVUZXh0
dXJlRm9ybWF0IGZvcm1hdDsKICAgICByZXF1aXJlZCBHUFVUZXh0dXJlVXNhZ2VGbGFncyB1c2Fn
ZTsKKyAgICBzZXF1ZW5jZTxHUFVUZXh0dXJlRm9ybWF0PiB2aWV3Rm9ybWF0cyA9IFtdOwogfTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvV2ViR1BVL0dQVVRleHR1cmVGb3Jt
YXQuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvV2ViR1BVL0dQVVRleHR1cmVGb3JtYXQuaApp
bmRleCBjOWQ4NzIxMDE4OWUyZWQxY2M0ZTgzYWQ5ZWFhZGU5NDg4YWIyMTAwLi5kYTEzZDEzNjEx
ZTdmZjlkYmE1ODM5N2NiYTEzODY3OTdmYmZmMTYyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL1dlYkdQVS9HUFVUZXh0dXJlRm9ybWF0LmgKKysrIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9XZWJHUFUvR1BVVGV4dHVyZUZvcm1hdC5oCkBAIC03OCwxMyArNzgsMTkgQEAgZW51
bSBjbGFzcyBHUFVUZXh0dXJlRm9ybWF0IDogdWludDhfdCB7CiAgICAgUmdiYTMyc2ludCwKICAg
ICBSZ2JhMzJmbG9hdCwKIAotICAgIC8vIERlcHRoIGFuZCBzdGVuY2lsIGZvcm1hdHMKKyAgICAv
LyBEZXB0aC9zdGVuY2lsIGZvcm1hdHMKICAgICBTdGVuY2lsOCwKICAgICBEZXB0aDE2dW5vcm0s
CiAgICAgRGVwdGgyNHBsdXMsCiAgICAgRGVwdGgyNHBsdXNTdGVuY2lsOCwKICAgICBEZXB0aDMy
ZmxvYXQsCiAKKyAgICAvLyBkZXB0aDI0dW5vcm0tc3RlbmNpbDggZmVhdHVyZQorICAgIERlcHRo
MjR1bm9ybVN0ZW5jaWw4LAorCisgICAgLy8gZGVwdGgzMmZsb2F0LXN0ZW5jaWw4IGZlYXR1cmUK
KyAgICBEZXB0aDMyZmxvYXRTdGVuY2lsOCwKKwogICAgIC8vIEJDIGNvbXByZXNzZWQgZm9ybWF0
cyB1c2FibGUgaWYgdGV4dHVyZS1jb21wcmVzc2lvbi1iYyBpcyBib3RoCiAgICAgLy8gc3VwcG9y
dGVkIGJ5IHRoZSBkZXZpY2UvdXNlciBhZ2VudCBhbmQgZW5hYmxlZCBpbiByZXF1ZXN0RGV2aWNl
LgogICAgIEJjMVJnYmFVbm9ybSwKQEAgLTE0NSwxMiArMTUxLDYgQEAgZW51bSBjbGFzcyBHUFVU
ZXh0dXJlRm9ybWF0IDogdWludDhfdCB7CiAgICAgQXN0YzEyeDEwVW5vcm1TUkdCLAogICAgIEFz
dGMxMngxMlVub3JtLAogICAgIEFzdGMxMngxMlVub3JtU1JHQiwKLQotICAgIC8vIGRlcHRoMjR1
bm9ybS1zdGVuY2lsOCBmZWF0dXJlCi0gICAgRGVwdGgyNHVub3JtU3RlbmNpbDgsCi0KLSAgICAv
LyBkZXB0aDMyZmxvYXQtc3RlbmNpbDggZmVhdHVyZQotICAgIERlcHRoMzJmbG9hdFN0ZW5jaWw4
LAogfTsKIAogaW5saW5lIFBBTDo6V2ViR1BVOjpUZXh0dXJlRm9ybWF0IGNvbnZlcnRUb0JhY2tp
bmcoR1BVVGV4dHVyZUZvcm1hdCB0ZXh0dXJlRm9ybWF0KQpAQCAtMjM4LDYgKzIzOCwxMCBAQCBp
bmxpbmUgUEFMOjpXZWJHUFU6OlRleHR1cmVGb3JtYXQgY29udmVydFRvQmFja2luZyhHUFVUZXh0
dXJlRm9ybWF0IHRleHR1cmVGb3JtYQogICAgICAgICByZXR1cm4gUEFMOjpXZWJHUFU6OlRleHR1
cmVGb3JtYXQ6OkRlcHRoMjRwbHVzU3RlbmNpbDg7CiAgICAgY2FzZSBHUFVUZXh0dXJlRm9ybWF0
OjpEZXB0aDMyZmxvYXQ6CiAgICAgICAgIHJldHVybiBQQUw6OldlYkdQVTo6VGV4dHVyZUZvcm1h
dDo6RGVwdGgzMmZsb2F0OworICAgIGNhc2UgR1BVVGV4dHVyZUZvcm1hdDo6RGVwdGgyNHVub3Jt
U3RlbmNpbDg6CisgICAgICAgIHJldHVybiBQQUw6OldlYkdQVTo6VGV4dHVyZUZvcm1hdDo6RGVw
dGgyNHVub3JtU3RlbmNpbDg7CisgICAgY2FzZSBHUFVUZXh0dXJlRm9ybWF0OjpEZXB0aDMyZmxv
YXRTdGVuY2lsODoKKyAgICAgICAgcmV0dXJuIFBBTDo6V2ViR1BVOjpUZXh0dXJlRm9ybWF0OjpE
ZXB0aDMyZmxvYXRTdGVuY2lsODsKICAgICBjYXNlIEdQVVRleHR1cmVGb3JtYXQ6OkJjMVJnYmFV
bm9ybToKICAgICAgICAgcmV0dXJuIFBBTDo6V2ViR1BVOjpUZXh0dXJlRm9ybWF0OjpCYzFSZ2Jh
VW5vcm07CiAgICAgY2FzZSBHUFVUZXh0dXJlRm9ybWF0OjpCYzFSZ2JhVW5vcm1TUkdCOgpAQCAt
MzQyLDEwICszNDYsNiBAQCBpbmxpbmUgUEFMOjpXZWJHUFU6OlRleHR1cmVGb3JtYXQgY29udmVy
dFRvQmFja2luZyhHUFVUZXh0dXJlRm9ybWF0IHRleHR1cmVGb3JtYQogICAgICAgICByZXR1cm4g
UEFMOjpXZWJHUFU6OlRleHR1cmVGb3JtYXQ6OkFzdGMxMngxMlVub3JtOwogICAgIGNhc2UgR1BV
VGV4dHVyZUZvcm1hdDo6QXN0YzEyeDEyVW5vcm1TUkdCOgogICAgICAgICByZXR1cm4gUEFMOjpX
ZWJHUFU6OlRleHR1cmVGb3JtYXQ6OkFzdGMxMngxMlVub3JtU1JHQjsKLSAgICBjYXNlIEdQVVRl
eHR1cmVGb3JtYXQ6OkRlcHRoMjR1bm9ybVN0ZW5jaWw4OgotICAgICAgICByZXR1cm4gUEFMOjpX
ZWJHUFU6OlRleHR1cmVGb3JtYXQ6OkRlcHRoMjR1bm9ybVN0ZW5jaWw4OwotICAgIGNhc2UgR1BV
VGV4dHVyZUZvcm1hdDo6RGVwdGgzMmZsb2F0U3RlbmNpbDg6Ci0gICAgICAgIHJldHVybiBQQUw6
OldlYkdQVTo6VGV4dHVyZUZvcm1hdDo6RGVwdGgzMmZsb2F0U3RlbmNpbDg7CiAgICAgfQogICAg
IFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL1dlYkdQVS9HUFVUZXh0dXJlRm9ybWF0LmlkbCBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvV2ViR1BVL0dQVVRleHR1cmVGb3JtYXQuaWRsCmluZGV4IDI1MWNkZGJlMDA0M2Vj
OWQxN2I4NDIyYTczYWM5NDQ1YmU3M2M0ZTcuLjMwMzYxODhjNTIxMDg4Y2JjYTFmMmY0YzY5NTU3
OTdhN2UyN2VhOTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvV2ViR1BVL0dQ
VVRleHR1cmVGb3JtYXQuaWRsCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvV2ViR1BVL0dQ
VVRleHR1cmVGb3JtYXQuaWRsCkBAIC03NiwxMyArNzYsMTkgQEAgZW51bSBHUFVUZXh0dXJlRm9y
bWF0IHsKICAgICAicmdiYTMyc2ludCIsCiAgICAgInJnYmEzMmZsb2F0IiwKIAotICAgIC8vIERl
cHRoIGFuZCBzdGVuY2lsIGZvcm1hdHMKKyAgICAvLyBEZXB0aC9zdGVuY2lsIGZvcm1hdHMKICAg
ICAic3RlbmNpbDgiLAogICAgICJkZXB0aDE2dW5vcm0iLAogICAgICJkZXB0aDI0cGx1cyIsCiAg
ICAgImRlcHRoMjRwbHVzLXN0ZW5jaWw4IiwKICAgICAiZGVwdGgzMmZsb2F0IiwKIAorICAgIC8v
ICJkZXB0aDI0dW5vcm0tc3RlbmNpbDgiIGZlYXR1cmUKKyAgICAiZGVwdGgyNHVub3JtLXN0ZW5j
aWw4IiwKKworICAgIC8vICJkZXB0aDMyZmxvYXQtc3RlbmNpbDgiIGZlYXR1cmUKKyAgICAiZGVw
dGgzMmZsb2F0LXN0ZW5jaWw4IiwKKwogICAgIC8vIEJDIGNvbXByZXNzZWQgZm9ybWF0cyB1c2Fi
bGUgaWYgInRleHR1cmUtY29tcHJlc3Npb24tYmMiIGlzIGJvdGgKICAgICAvLyBzdXBwb3J0ZWQg
YnkgdGhlIGRldmljZS91c2VyIGFnZW50IGFuZCBlbmFibGVkIGluIHJlcXVlc3REZXZpY2UuCiAg
ICAgImJjMS1yZ2JhLXVub3JtIiwKQEAgLTE0MiwxMSArMTQ4LDUgQEAgZW51bSBHUFVUZXh0dXJl
Rm9ybWF0IHsKICAgICAiYXN0Yy0xMngxMC11bm9ybSIsCiAgICAgImFzdGMtMTJ4MTAtdW5vcm0t
c3JnYiIsCiAgICAgImFzdGMtMTJ4MTItdW5vcm0iLAotICAgICJhc3RjLTEyeDEyLXVub3JtLXNy
Z2IiLAotCi0gICAgLy8gImRlcHRoMjR1bm9ybS1zdGVuY2lsOCIgZmVhdHVyZQotICAgICJkZXB0
aDI0dW5vcm0tc3RlbmNpbDgiLAotCi0gICAgLy8gImRlcHRoMzJmbG9hdC1zdGVuY2lsOCIgZmVh
dHVyZQotICAgICJkZXB0aDMyZmxvYXQtc3RlbmNpbDgiCisgICAgImFzdGMtMTJ4MTItdW5vcm0t
c3JnYiIKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL1dlYkdQVS9HUFVV
bmNhcHR1cmVkRXJyb3JFdmVudC5pZGwgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL1dlYkdQVS9H
UFVVbmNhcHR1cmVkRXJyb3JFdmVudC5pZGwKaW5kZXggMzMyZWJlYWRiZGE5ODcyMDYwNmQ4ODU0
YzUxNjRjMWFkNDY5YjU3ZC4uMWI5MjdkNDJhZWM1ZGM4ZGVkMGFiMGIzYTM5MGU1MDRiZjc0OWMw
MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9XZWJHUFUvR1BVVW5jYXB0dXJl
ZEVycm9yRXZlbnQuaWRsCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvV2ViR1BVL0dQVVVu
Y2FwdHVyZWRFcnJvckV2ZW50LmlkbApAQCAtMzgsNSArMzgsNSBAQCBpbnRlcmZhY2UgR1BVVW5j
YXB0dXJlZEVycm9yRXZlbnQgOiBFdmVudCB7CiAgICAgICAgIERPTVN0cmluZyB0eXBlLAogICAg
ICAgICBHUFVVbmNhcHR1cmVkRXJyb3JFdmVudEluaXQgZ3B1VW5jYXB0dXJlZEVycm9yRXZlbnRJ
bml0RGljdAogICAgICk7Ci0gICAgW1NhbWVPYmplY3RdIHJlYWRvbmx5IGF0dHJpYnV0ZSBHUFVF
cnJvciBlcnJvcjsKKyAgICByZWFkb25seSBhdHRyaWJ1dGUgR1BVRXJyb3IgZXJyb3I7CiB9Owpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvUEFML1BBTC54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qIGIvU291cmNlL1dlYkNvcmUvUEFML1BBTC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmlu
ZGV4IGM1YTkxOGY3ZDQwZDA0MWEyOTMzOTQ2ZTcyMDZjNzFjNzUzZjVkMDQuLjJhNzNjOGU3MTVi
ODI0NDAxOTE4MzRlMGMzNmQ1ZTBkNWI1ZmVhMjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L1BBTC9QQUwueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViQ29yZS9Q
QUwvUEFMLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTI0Nyw3ICsyNDcsNiBAQAogCQkx
Q0VGQTIxNzI3MzdBNEM4MDBGMERBOTUgLyogV2ViR1BVQmluZEdyb3VwRW50cnkuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDFDQzVFNDY5MjczNzQ5NDgw
MDZGNkZGNCAvKiBXZWJHUFVCaW5kR3JvdXBFbnRyeS5oICovOyB9OwogCQkxQ0VGQTIxODI3MzdB
NEM4MDBGMERBOTUgLyogV2ViR1BVUHJpbWl0aXZlVG9wb2xvZ3kuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDFDQzVFNDUzMjczNzQ5NDcwMDZGNkZGNCAv
KiBXZWJHUFVQcmltaXRpdmVUb3BvbG9neS5oICovOyB9OwogCQkxQ0VGQTIxOTI3MzdBNEM4MDBG
MERBOTUgLyogV2ViR1BVVGV4dHVyZUJpbmRpbmdMYXlvdXQuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDFDQzVFNDE5MjczNzQ5MkMwMDZGNkZGNCAvKiBX
ZWJHUFVUZXh0dXJlQmluZGluZ0xheW91dC5oICovOyB9OwotCQkxQ0VGQTIxQTI3MzdBNEM4MDBG
MERBOTUgLyogV2ViR1BVUGlwZWxpbmVTdGF0aXN0aWNOYW1lLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxQ0M1RTQzOTI3Mzc0OTQ2MDA2RjZGRjQgLyog
V2ViR1BVUGlwZWxpbmVTdGF0aXN0aWNOYW1lLmggKi87IH07CiAJCTFDRUZBMjFCMjczN0E0Qzgw
MEYwREE5NSAvKiBXZWJHUFVCbGVuZENvbXBvbmVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMUNDNUU0NzgyNzM3NDk0OTAwNkY2RkY0IC8qIFdlYkdQ
VUJsZW5kQ29tcG9uZW50LmggKi87IH07CiAJCTFDRUZBMjFDMjczN0E0QzgwMEYwREE5NSAvKiBX
ZWJHUFVUZXh0dXJlVmlld0RpbWVuc2lvbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gMUNDNUU0MzIyNzM3NDkyRDAwNkY2RkY0IC8qIFdlYkdQVVRleHR1
cmVWaWV3RGltZW5zaW9uLmggKi87IH07CiAJCTFDRUZBMjFEMjczN0E0QzgwMEYwREE5NSAvKiBX
ZWJHUFVMb2FkT3AuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDFDQzVFNDUwMjczNzQ5NDcwMDZGNkZGNCAvKiBXZWJHUFVMb2FkT3AuaCAqLzsgfTsKQEAg
LTY1Miw3ICs2NTEsNiBAQAogCQkxQ0M1RTQzNjI3Mzc0OTQ2MDA2RjZGRjQgLyogV2ViR1BVQ29t
cGlsYXRpb25NZXNzYWdlVHlwZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJHUFVDb21waWxhdGlvbk1l
c3NhZ2VUeXBlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTFDQzVFNDM3MjczNzQ5
NDYwMDZGNkZGNCAvKiBXZWJHUFVFeHRlbnQzRC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJHUFVFeHRl
bnQzRC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkxQ0M1RTQzODI3Mzc0OTQ2MDA2
RjZGRjQgLyogV2ViR1BVUHJvZ3JhbW1hYmxlU3RhZ2UuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2ViR1BV
UHJvZ3JhbW1hYmxlU3RhZ2UuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJMUNDNUU0
MzkyNzM3NDk0NjAwNkY2RkY0IC8qIFdlYkdQVVBpcGVsaW5lU3RhdGlzdGljTmFtZS5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBXZWJHUFVQaXBlbGluZVN0YXRpc3RpY05hbWUuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJMUNDNUU0M0EyNzM3NDk0NjAwNkY2RkY0IC8qIFdlYkdQVUV4dGVybmFs
VGV4dHVyZUJpbmRpbmdMYXlvdXQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2ViR1BVRXh0ZXJuYWxUZXh0
dXJlQmluZGluZ0xheW91dC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkxQ0M1RTQz
QjI3Mzc0OTQ2MDA2RjZGRjQgLyogV2ViR1BVUmVuZGVyUGFzc0Rlc2NyaXB0b3IuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gV2ViR1BVUmVuZGVyUGFzc0Rlc2NyaXB0b3IuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJMUNDNUU0M0MyNzM3NDk0NjAwNkY2RkY0IC8qIFdlYkdQVVNhbXBsZXJCaW5k
aW5nVHlwZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJHUFVTYW1wbGVyQmluZGluZ1R5cGUuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTc0NCw2ICs3NDIsNyBAQAogCQkxQ0M1RTQ5MzI3
Mzc0OTRBMDA2RjZGRjQgLyogV2ViR1BVQ2FudmFzQ29tcG9zaXRpbmdBbHBoYU1vZGUuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gV2ViR1BVQ2FudmFzQ29tcG9zaXRpbmdBbHBoYU1vZGUuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMUNDRUU0RjQyMEQ4NzE5MzAwNDdCMDk3IC8qIENvcmVVSVNQ
SS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBDb3JlVUlTUEkuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMUNDRUU0RjYyMEQ4NzQzRjAwNDdCMDk3IC8qIE5TQXBw
ZWFyYW5jZVNQSS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBOU0FwcGVhcmFu
Y2VTUEkuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMUNFRjQ1QUEyN0JCMTAxRjAw
QzNBNkJDIC8qIFdlYkdQVVNoYWRlck1vZHVsZUNvbXBpbGF0aW9uSGludC5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBXZWJHUFVTaGFkZXJNb2R1bGVDb21waWxhdGlvbkhpbnQuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJMUQxMkNDNEEyNDExQkNBRTAwRkRBMEEzIC8qIEZlYXR1cmVGbGFnc1NQ
SS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBGZWF0dXJlRmxhZ3NTUEkuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJMUQyQjQxMzIyNUYwNUUzNDAwQTNGNzBBIC8qIENsb2NrR2VuZXJpYy5jcHAg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBDbG9ja0dlbmVyaWMuY3BwOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkxRDJCNDEzMzI1RjA1RTM1MDBBM0Y3MEEgLyog
Q2xvY2tHZW5lcmljLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IENsb2NrR2Vu
ZXJpYy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMTMzOSw3ICsxMzM4LDYgQEAK
IAkJCQkxQ0M1RTQ1RTI3Mzc0OTQ4MDA2RjZGRjQgLyogV2ViR1BVUGlwZWxpbmVEZXNjcmlwdG9y
QmFzZS5oICovLAogCQkJCTFDQzVFNDQ1MjczNzQ5NDcwMDZGNkZGNCAvKiBXZWJHUFVQaXBlbGlu
ZUxheW91dC5oICovLAogCQkJCTFDQzVFNDREMjczNzQ5NDcwMDZGNkZGNCAvKiBXZWJHUFVQaXBl
bGluZUxheW91dERlc2NyaXB0b3IuaCAqLywKLQkJCQkxQ0M1RTQzOTI3Mzc0OTQ2MDA2RjZGRjQg
LyogV2ViR1BVUGlwZWxpbmVTdGF0aXN0aWNOYW1lLmggKi8sCiAJCQkJMUNDNUU0N0EyNzM3NDk0
OTAwNkY2RkY0IC8qIFdlYkdQVVBvd2VyUHJlZmVyZW5jZS5oICovLAogCQkJCTFDQzVFNDdEMjcz
NzQ5NDkwMDZGNkZGNCAvKiBXZWJHUFVQcmVkZWZpbmVkQ29sb3JTcGFjZS5oICovLAogCQkJCTFD
QzVFNDZEMjczNzQ5NDgwMDZGNkZGNCAvKiBXZWJHUFVQcmltaXRpdmVTdGF0ZS5oICovLApAQCAt
MTM2OCw2ICsxMzY2LDcgQEAKIAkJCQkxQ0M1RTQzQzI3Mzc0OTQ2MDA2RjZGRjQgLyogV2ViR1BV
U2FtcGxlckJpbmRpbmdUeXBlLmggKi8sCiAJCQkJMUNDNUU0MjMyNzM3NDkyQzAwNkY2RkY0IC8q
IFdlYkdQVVNhbXBsZXJEZXNjcmlwdG9yLmggKi8sCiAJCQkJMUNDNUU0MUQyNzM3NDkyQzAwNkY2
RkY0IC8qIFdlYkdQVVNoYWRlck1vZHVsZS5oICovLAorCQkJCTFDRUY0NUFBMjdCQjEwMUYwMEMz
QTZCQyAvKiBXZWJHUFVTaGFkZXJNb2R1bGVDb21waWxhdGlvbkhpbnQuaCAqLywKIAkJCQkxQ0M1
RTQxQjI3Mzc0OTJDMDA2RjZGRjQgLyogV2ViR1BVU2hhZGVyTW9kdWxlRGVzY3JpcHRvci5oICov
LAogCQkJCTFDQzVFNDI2MjczNzQ5MkQwMDZGNkZGNCAvKiBXZWJHUFVTaGFkZXJTdGFnZS5oICov
LAogCQkJCTFDQzVFNDFDMjczNzQ5MkMwMDZGNkZGNCAvKiBXZWJHUFVTdGVuY2lsRmFjZVN0YXRl
LmggKi8sCkBAIC0xNzc0LDcgKzE3NzMsNiBAQAogCQkJCTFDRUZBMjI1MjczN0E0QzgwMEYwREE5
NSAvKiBXZWJHUFVQaXBlbGluZURlc2NyaXB0b3JCYXNlLmggaW4gSGVhZGVycyAqLywKIAkJCQkx
Q0VGQTFGRDI3MzdBNEM4MDBGMERBOTUgLyogV2ViR1BVUGlwZWxpbmVMYXlvdXQuaCBpbiBIZWFk
ZXJzICovLAogCQkJCTFDRUZBMUY0MjczN0E0QzgwMEYwREE5NSAvKiBXZWJHUFVQaXBlbGluZUxh
eW91dERlc2NyaXB0b3IuaCBpbiBIZWFkZXJzICovLAotCQkJCTFDRUZBMjFBMjczN0E0QzgwMEYw
REE5NSAvKiBXZWJHUFVQaXBlbGluZVN0YXRpc3RpY05hbWUuaCBpbiBIZWFkZXJzICovLAogCQkJ
CTFDRUZBMURFMjczN0E0QzgwMEYwREE5NSAvKiBXZWJHUFVQb3dlclByZWZlcmVuY2UuaCBpbiBI
ZWFkZXJzICovLAogCQkJCTFDRUZBMjE2MjczN0E0QzgwMEYwREE5NSAvKiBXZWJHUFVQcmVkZWZp
bmVkQ29sb3JTcGFjZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMUNFRkExRTUyNzM3QTRDODAwRjBE
QTk1IC8qIFdlYkdQVVByaW1pdGl2ZVN0YXRlLmggaW4gSGVhZGVycyAqLywKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvZ3JhcGhpY3MvV2ViR1BVL0ltcGwvV2ViR1BVQWRhcHRl
ckltcGwuY3BwIGIvU291cmNlL1dlYkNvcmUvUEFML3BhbC9ncmFwaGljcy9XZWJHUFUvSW1wbC9X
ZWJHUFVBZGFwdGVySW1wbC5jcHAKaW5kZXggN2Q1YjE2NTRlZWQwNzZjMTc2MDI2OGRmMDAyNmRi
NzIyMDY1N2I4Yy4uNTYxMzlhZjRhOTA3ODJmOGRkYWNiMzIyNWZiYTNkNzA4YjQwOTFmZSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvUEFML3BhbC9ncmFwaGljcy9XZWJHUFUvSW1wbC9XZWJH
UFVBZGFwdGVySW1wbC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvUEFML3BhbC9ncmFwaGljcy9X
ZWJHUFUvSW1wbC9XZWJHUFVBZGFwdGVySW1wbC5jcHAKQEAgLTQzLDEzICs0MywxNyBAQCBzdGF0
aWMgU3RyaW5nIGFkYXB0ZXJOYW1lKFdHUFVBZGFwdGVyIGFkYXB0ZXIpCiAKIHN0YXRpYyBSZWY8
U3VwcG9ydGVkRmVhdHVyZXM+IHN1cHBvcnRlZEZlYXR1cmVzKFdHUFVBZGFwdGVyIGFkYXB0ZXIp
CiB7CisgICAgYXV0byBmZWF0dXJlQ291bnQgPSB3Z3B1QWRhcHRlckVudW1lcmF0ZUZlYXR1cmVz
KGFkYXB0ZXIsIG51bGxwdHIpOworICAgIFZlY3RvcjxXR1BVRmVhdHVyZU5hbWU+IGZlYXR1cmVz
KGZlYXR1cmVDb3VudCk7CisgICAgd2dwdUFkYXB0ZXJFbnVtZXJhdGVGZWF0dXJlcyhhZGFwdGVy
LCBmZWF0dXJlcy5kYXRhKCkpOworCiAgICAgVmVjdG9yPFN0cmluZz4gcmVzdWx0OwotICAgIGZv
ciAoc2l6ZV90IGkgPSAwOyA7ICsraSkgewotICAgICAgICBhdXRvIGZlYXR1cmUgPSB3Z3B1QWRh
cHRlckdldEZlYXR1cmVBdEluZGV4KGFkYXB0ZXIsIGkpOwotICAgICAgICBpZiAoZmVhdHVyZSA9
PSBXR1BVRmVhdHVyZU5hbWVfVW5kZWZpbmVkKQotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAg
IHN3aXRjaCAoc3RhdGljX2Nhc3Q8dWludD4oZmVhdHVyZSkpIHsKLSAgICAgICAgY2FzZSBXR1BV
RmVhdHVyZU5hbWVfRGVwdGhDbGFtcGluZzoKKyAgICBmb3IgKGF1dG8gZmVhdHVyZSA6IGZlYXR1
cmVzKSB7CisgICAgICAgIHN3aXRjaCAoZmVhdHVyZSkgeworICAgICAgICBjYXNlIFdHUFVGZWF0
dXJlTmFtZV9VbmRlZmluZWQ6CisgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgY2FzZSBX
R1BVRmVhdHVyZU5hbWVfRGVwdGhDbGlwQ29udHJvbDoKKyAgICAgICAgICAgIHJlc3VsdC5hcHBl
bmQoImRlcHRoLWNsaXAtY29udHJvbCJfcyk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAg
Y2FzZSBXR1BVRmVhdHVyZU5hbWVfRGVwdGgyNFVub3JtU3RlbmNpbDg6CiAgICAgICAgICAgICBy
ZXN1bHQuYXBwZW5kKCJkZXB0aDI0dW5vcm0tc3RlbmNpbDgiX3MpOwpAQCAtNjYsMjAgKzcwLDE3
IEBAIHN0YXRpYyBSZWY8U3VwcG9ydGVkRmVhdHVyZXM+IHN1cHBvcnRlZEZlYXR1cmVzKFdHUFVB
ZGFwdGVyIGFkYXB0ZXIpCiAgICAgICAgIGNhc2UgV0dQVUZlYXR1cmVOYW1lX1RleHR1cmVDb21w
cmVzc2lvbkJDOgogICAgICAgICAgICAgcmVzdWx0LmFwcGVuZCgidGV4dHVyZS1jb21wcmVzc2lv
bi1iYyJfcyk7CiAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgY2FzZSBXR1BVRmVhdHVyZU5h
bWVfRGVwdGhDbGlwQ29udHJvbDoKLSAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQoImRlcHRoLWNs
aXAtY29udHJvbCJfcyk7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgY2FzZSBXR1BVRmVh
dHVyZU5hbWVfSW5kaXJlY3RGaXJzdEluc3RhbmNlOgotICAgICAgICAgICAgcmVzdWx0LmFwcGVu
ZCgiaW5kaXJlY3QtZmlyc3QtaW5zdGFuY2UiX3MpOwotICAgICAgICAgICAgYnJlYWs7CiAgICAg
ICAgIGNhc2UgV0dQVUZlYXR1cmVOYW1lX1RleHR1cmVDb21wcmVzc2lvbkVUQzI6CiAgICAgICAg
ICAgICByZXN1bHQuYXBwZW5kKCJ0ZXh0dXJlLWNvbXByZXNzaW9uLWV0YzIiX3MpOwogICAgICAg
ICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgV0dQVUZlYXR1cmVOYW1lX1RleHR1cmVDb21wcmVz
c2lvbkFTVEM6CiAgICAgICAgICAgICByZXN1bHQuYXBwZW5kKCJ0ZXh0dXJlLWNvbXByZXNzaW9u
LWFzdGMiX3MpOwogICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGRlZmF1bHQ6CisgICAgICAg
IGNhc2UgV0dQVUZlYXR1cmVOYW1lX0luZGlyZWN0Rmlyc3RJbnN0YW5jZToKKyAgICAgICAgICAg
IHJlc3VsdC5hcHBlbmQoImluZGlyZWN0LWZpcnN0LWluc3RhbmNlIl9zKTsKICAgICAgICAgICAg
IGJyZWFrOworICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgY29udGludWU7CiAgICAgICAg
IH0KICAgICB9CiAgICAgcmV0dXJuIFN1cHBvcnRlZEZlYXR1cmVzOjpjcmVhdGUoV1RGTW92ZShy
ZXN1bHQpKTsKQEAgLTE1MSwxNSArMTUyLDYgQEAgdm9pZCBBZGFwdGVySW1wbDo6cmVxdWVzdERl
dmljZShjb25zdCBEZXZpY2VEZXNjcmlwdG9yJiBkZXNjcmlwdG9yLCBXVEY6OkZ1bmN0aW8KIAog
ICAgIGF1dG8gbGFiZWwgPSBkZXNjcmlwdG9yLmxhYmVsLnV0ZjgoKTsKIAotICAgIFdHUFVEZXZp
Y2VEZXNjcmlwdG9yTGFiZWwgYmFja2luZ0Rlc2NyaXB0b3JMYWJlbCB7Ci0gICAgICAgIHsKLSAg
ICAgICAgICAgIG51bGxwdHIsCi0gICAgICAgICAgICBzdGF0aWNfY2FzdDxXR1BVU1R5cGU+KFdH
UFVTVHlwZV9EZXZpY2VEZXNjcmlwdG9yTGFiZWwpLAotICAgICAgICB9LAotICAgICAgICBudWxs
cHRyLAotICAgICAgICBsYWJlbC5kYXRhKCkKLSAgICB9OwotCiAgICAgYXV0byBmZWF0dXJlcyA9
IGRlc2NyaXB0b3IucmVxdWlyZWRGZWF0dXJlcy5tYXAoW3RoaXNdIChhdXRvIGZlYXR1cmVOYW1l
KSB7CiAgICAgICAgIHJldHVybiBtX2NvbnZlcnRUb0JhY2tpbmdDb250ZXh0LT5jb252ZXJ0VG9C
YWNraW5nKGZlYXR1cmVOYW1lKTsKICAgICB9KTsKQEAgLTE5Niw3ICsxODgsOCBAQCB2b2lkIEFk
YXB0ZXJJbXBsOjpyZXF1ZXN0RGV2aWNlKGNvbnN0IERldmljZURlc2NyaXB0b3ImIGRlc2NyaXB0
b3IsIFdURjo6RnVuY3RpbwogICAgIH07CiAKICAgICBXR1BVRGV2aWNlRGVzY3JpcHRvciBiYWNr
aW5nRGVzY3JpcHRvciB7Ci0gICAgICAgICZiYWNraW5nRGVzY3JpcHRvckxhYmVsLmhlYWRlciwK
KyAgICAgICAgbnVsbHB0ciwKKyAgICAgICAgbGFiZWwuZGF0YSgpLAogICAgICAgICBzdGF0aWNf
Y2FzdDx1aW50MzJfdD4oZmVhdHVyZXMuc2l6ZSgpKSwKICAgICAgICAgZmVhdHVyZXMuZGF0YSgp
LAogICAgICAgICAmbGltaXRzLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvUEFML3BhbC9n
cmFwaGljcy9XZWJHUFUvSW1wbC9XZWJHUFVCdWZmZXJJbXBsLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L1BBTC9wYWwvZ3JhcGhpY3MvV2ViR1BVL0ltcGwvV2ViR1BVQnVmZmVySW1wbC5jcHAKaW5kZXgg
ZDlhOWNlNWNhZDhkOWE1ZjkxNmZiNjBlY2U5MmMxMjdmM2JmODVkZS4uOGEwZWNjNThjZDZjZWMx
YzZlNWZiMzc0ZDRjYTg1NzI2M2EwNWFlZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvUEFM
L3BhbC9ncmFwaGljcy9XZWJHUFUvSW1wbC9XZWJHUFVCdWZmZXJJbXBsLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9QQUwvcGFsL2dyYXBoaWNzL1dlYkdQVS9JbXBsL1dlYkdQVUJ1ZmZlckltcGwu
Y3BwCkBAIC01MCwxOSArNTAsMTggQEAgdm9pZCBtYXBDYWxsYmFjayhXR1BVQnVmZmVyTWFwQXN5
bmNTdGF0dXMgc3RhdHVzLCB2b2lkKiB1c2VyZGF0YSkKICAgICBidWZmZXItPm1hcENhbGxiYWNr
KHN0YXR1cyk7CiB9CiAKLXZvaWQgQnVmZmVySW1wbDo6bWFwQXN5bmMoTWFwTW9kZUZsYWdzIG1h
cE1vZGVGbGFncywgc3RkOjpvcHRpb25hbDxTaXplNjQ+IG9mZnNldCwgc3RkOjpvcHRpb25hbDxT
aXplNjQ+IHNpemUsIFdURjo6RnVuY3Rpb248dm9pZCgpPiYmIGNhbGxiYWNrKQordm9pZCBCdWZm
ZXJJbXBsOjptYXBBc3luYyhNYXBNb2RlRmxhZ3MgbWFwTW9kZUZsYWdzLCBTaXplNjQgb2Zmc2V0
LCBzdGQ6Om9wdGlvbmFsPFNpemU2ND4gc2l6ZSwgV1RGOjpGdW5jdGlvbjx2b2lkKCk+JiYgY2Fs
bGJhY2spCiB7CiAgICAgUmVmIHByb3RlY3RlZFRoaXMoKnRoaXMpOwogCiAgICAgYXV0byBiYWNr
aW5nTWFwTW9kZUZsYWdzID0gbV9jb252ZXJ0VG9CYWNraW5nQ29udGV4dC0+Y29udmVydE1hcE1v
ZGVGbGFnc1RvQmFja2luZyhtYXBNb2RlRmxhZ3MpOwogCi0gICAgYXV0byB1c2VkT2Zmc2V0ID0g
b2Zmc2V0LnZhbHVlX29yKDApOwotICAgIGF1dG8gdXNlZFNpemUgPSBzaXplLnZhbHVlX29yKFdH
UFVfV0hPTEVfU0laRSk7CisgICAgYXV0byB1c2VkU2l6ZSA9IHNpemUudmFsdWVfb3IoV0dQVV9X
SE9MRV9NQVBfU0laRSk7CiAKICAgICBtX2NhbGxiYWNrcy5hcHBlbmQoV1RGTW92ZShjYWxsYmFj
aykpOwogCiAgICAgLy8gRklYTUU6IENoZWNrIHRoZSBjYXN0cy4KLSAgICB3Z3B1QnVmZmVyTWFw
QXN5bmMobV9iYWNraW5nLCBiYWNraW5nTWFwTW9kZUZsYWdzLCBzdGF0aWNfY2FzdDxzaXplX3Q+
KHVzZWRPZmZzZXQpLCBzdGF0aWNfY2FzdDxzaXplX3Q+KHVzZWRTaXplKSwgJldlYkdQVTo6bWFw
Q2FsbGJhY2ssICZwcm90ZWN0ZWRUaGlzLmxlYWtSZWYoKSk7IC8vIGxlYWtSZWYgaXMgYmFsYW5j
ZWQgYnkgYWRvcHRSZWYgaW4gbWFwQ2FsbGJhY2soKSBhYm92ZS4gV2UgaGF2ZSB0byBkbyB0aGlz
IGJlY2F1c2Ugd2UncmUgdXNpbmcgYSBDIEFQSSB3aXRoIG5vIGNvbmNlcHQgb2YgcmVmZXJlbmNl
IGNvdW50aW5nIG9yIGJsb2Nrcy4KKyAgICB3Z3B1QnVmZmVyTWFwQXN5bmMobV9iYWNraW5nLCBi
YWNraW5nTWFwTW9kZUZsYWdzLCBzdGF0aWNfY2FzdDxzaXplX3Q+KG9mZnNldCksIHN0YXRpY19j
YXN0PHNpemVfdD4odXNlZFNpemUpLCAmV2ViR1BVOjptYXBDYWxsYmFjaywgJnByb3RlY3RlZFRo
aXMubGVha1JlZigpKTsgLy8gbGVha1JlZiBpcyBiYWxhbmNlZCBieSBhZG9wdFJlZiBpbiBtYXBD
YWxsYmFjaygpIGFib3ZlLiBXZSBoYXZlIHRvIGRvIHRoaXMgYmVjYXVzZSB3ZSdyZSB1c2luZyBh
IEMgQVBJIHdpdGggbm8gY29uY2VwdCBvZiByZWZlcmVuY2UgY291bnRpbmcgb3IgYmxvY2tzLgog
fQogCiB2b2lkIEJ1ZmZlckltcGw6Om1hcENhbGxiYWNrKFdHUFVCdWZmZXJNYXBBc3luY1N0YXR1
cyBzdGF0dXMpCkBAIC03MiwxMiArNzEsMTEgQEAgdm9pZCBCdWZmZXJJbXBsOjptYXBDYWxsYmFj
ayhXR1BVQnVmZmVyTWFwQXN5bmNTdGF0dXMgc3RhdHVzKQogICAgIGNhbGxiYWNrKCk7CiB9CiAK
LWF1dG8gQnVmZmVySW1wbDo6Z2V0TWFwcGVkUmFuZ2Uoc3RkOjpvcHRpb25hbDxTaXplNjQ+IG9m
ZnNldCwgc3RkOjpvcHRpb25hbDxTaXplNjQ+IHNpemUpIC0+IE1hcHBlZFJhbmdlCithdXRvIEJ1
ZmZlckltcGw6OmdldE1hcHBlZFJhbmdlKFNpemU2NCBvZmZzZXQsIHN0ZDo6b3B0aW9uYWw8U2l6
ZTY0PiBzaXplKSAtPiBNYXBwZWRSYW5nZQogewotICAgIGF1dG8gdXNlZE9mZnNldCA9IG9mZnNl
dC52YWx1ZV9vcigwKTsKLSAgICBhdXRvIHVzZWRTaXplID0gc2l6ZS52YWx1ZV9vcihXR1BVX1dI
T0xFX1NJWkUpOworICAgIGF1dG8gdXNlZFNpemUgPSBzaXplLnZhbHVlX29yKFdHUFVfV0hPTEVf
TUFQX1NJWkUpOwogICAgIC8vIEZJWE1FOiBDaGVjayB0aGUgY2FzdHMuCi0gICAgYXV0byogcG9p
bnRlciA9IHdncHVCdWZmZXJHZXRNYXBwZWRSYW5nZShtX2JhY2tpbmcsIHN0YXRpY19jYXN0PHNp
emVfdD4odXNlZE9mZnNldCksIHN0YXRpY19jYXN0PHNpemVfdD4odXNlZFNpemUpKTsKKyAgICBh
dXRvKiBwb2ludGVyID0gd2dwdUJ1ZmZlckdldE1hcHBlZFJhbmdlKG1fYmFja2luZywgc3RhdGlj
X2Nhc3Q8c2l6ZV90PihvZmZzZXQpLCBzdGF0aWNfY2FzdDxzaXplX3Q+KHVzZWRTaXplKSk7CiAg
ICAgLy8gRklYTUU6IENoZWNrIHRoZSB0eXBlIG5hcnJvd2luZy4KICAgICByZXR1cm4geyBwb2lu
dGVyLCBzdGF0aWNfY2FzdDxzaXplX3Q+KHVzZWRTaXplKSB9OwogfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvUEFML3BhbC9ncmFwaGljcy9XZWJHUFUvSW1wbC9XZWJHUFVCdWZmZXJJbXBs
LmggYi9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL2dyYXBoaWNzL1dlYkdQVS9JbXBsL1dlYkdQVUJ1
ZmZlckltcGwuaAppbmRleCBjMTQ2NWVjNDc3ZGY1NTY1MjVmYTg4YzVhM2EwMTExMGNlOTBmMjg3
Li45MjE4NzIzYjcwNzI1NzljYWU5OWQyMDFmNjIyZTIzY2MyODk2YzAzIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9QQUwvcGFsL2dyYXBoaWNzL1dlYkdQVS9JbXBsL1dlYkdQVUJ1ZmZlcklt
cGwuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL2dyYXBoaWNzL1dlYkdQVS9JbXBsL1dl
YkdQVUJ1ZmZlckltcGwuaApAQCAtNTksOCArNTksOCBAQCBwcml2YXRlOgogICAgIFdHUFVCdWZm
ZXIgYmFja2luZygpIGNvbnN0IHsgcmV0dXJuIG1fYmFja2luZzsgfQogCiAgICAgdm9pZCBtYXBD
YWxsYmFjayhXR1BVQnVmZmVyTWFwQXN5bmNTdGF0dXMpOwotICAgIHZvaWQgbWFwQXN5bmMoTWFw
TW9kZUZsYWdzLCBzdGQ6Om9wdGlvbmFsPFNpemU2ND4gb2Zmc2V0LCBzdGQ6Om9wdGlvbmFsPFNp
emU2ND4gc2l6ZUZvck1hcCwgV1RGOjpGdW5jdGlvbjx2b2lkKCk+JiYpIGZpbmFsOwotICAgIE1h
cHBlZFJhbmdlIGdldE1hcHBlZFJhbmdlKHN0ZDo6b3B0aW9uYWw8U2l6ZTY0PiBvZmZzZXQsIHN0
ZDo6b3B0aW9uYWw8U2l6ZTY0PikgZmluYWw7CisgICAgdm9pZCBtYXBBc3luYyhNYXBNb2RlRmxh
Z3MsIFNpemU2NCBvZmZzZXQsIHN0ZDo6b3B0aW9uYWw8U2l6ZTY0PiBzaXplRm9yTWFwLCBXVEY6
OkZ1bmN0aW9uPHZvaWQoKT4mJikgZmluYWw7CisgICAgTWFwcGVkUmFuZ2UgZ2V0TWFwcGVkUmFu
Z2UoU2l6ZTY0IG9mZnNldCwgc3RkOjpvcHRpb25hbDxTaXplNjQ+KSBmaW5hbDsKICAgICB2b2lk
IHVubWFwKCkgZmluYWw7CiAKICAgICB2b2lkIGRlc3Ryb3koKSBmaW5hbDsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvZ3JhcGhpY3MvV2ViR1BVL0ltcGwvV2ViR1BVQ29tbWFu
ZEVuY29kZXJJbXBsLmNwcCBiL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvZ3JhcGhpY3MvV2ViR1BV
L0ltcGwvV2ViR1BVQ29tbWFuZEVuY29kZXJJbXBsLmNwcAppbmRleCBhODUzNmJjZWNkMjRkNTcy
MDdkMjE3NDU2MDlmODIwZWE5Y2JkOWI2Li5hMDA2ZGMyMzcwMWU4ODQ5YjFkODBjNWY2MDY3MDIz
NDU3ZDk2NjVmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL2dyYXBoaWNzL1dl
YkdQVS9JbXBsL1dlYkdQVUNvbW1hbmRFbmNvZGVySW1wbC5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvUEFML3BhbC9ncmFwaGljcy9XZWJHUFUvSW1wbC9XZWJHUFVDb21tYW5kRW5jb2RlckltcGwu
Y3BwCkBAIC01Myw1NyArNTMsNTEgQEAgQ29tbWFuZEVuY29kZXJJbXBsOjp+Q29tbWFuZEVuY29k
ZXJJbXBsKCkKIAogUmVmPFJlbmRlclBhc3NFbmNvZGVyPiBDb21tYW5kRW5jb2RlckltcGw6OmJl
Z2luUmVuZGVyUGFzcyhjb25zdCBSZW5kZXJQYXNzRGVzY3JpcHRvciYgZGVzY3JpcHRvcikKIHsK
KyAgICBhdXRvIGxhYmVsID0gZGVzY3JpcHRvci5sYWJlbC51dGY4KCk7CisKICAgICBWZWN0b3I8
V0dQVVJlbmRlclBhc3NDb2xvckF0dGFjaG1lbnQ+IGNvbG9yQXR0YWNobWVudHM7CiAgICAgZm9y
IChjb25zdCBhdXRvJiBjb2xvckF0dGFjaG1lbnQgOiBkZXNjcmlwdG9yLmNvbG9yQXR0YWNobWVu
dHMpIHsKLSAgICAgICAgY29sb3JBdHRhY2htZW50cy5hcHBlbmQoV0dQVVJlbmRlclBhc3NDb2xv
ckF0dGFjaG1lbnQgewotICAgICAgICAgICAgbV9jb252ZXJ0VG9CYWNraW5nQ29udGV4dC0+Y29u
dmVydFRvQmFja2luZyhjb2xvckF0dGFjaG1lbnQudmlldyksCi0gICAgICAgICAgICBjb2xvckF0
dGFjaG1lbnQucmVzb2x2ZVRhcmdldCA/IG1fY29udmVydFRvQmFja2luZ0NvbnRleHQtPmNvbnZl
cnRUb0JhY2tpbmcoKmNvbG9yQXR0YWNobWVudC5yZXNvbHZlVGFyZ2V0KSA6IG51bGxwdHIsCi0g
ICAgICAgICAgICBzdGQ6OmhvbGRzX2FsdGVybmF0aXZlPExvYWRPcD4oY29sb3JBdHRhY2htZW50
LmxvYWRWYWx1ZSkgPyBtX2NvbnZlcnRUb0JhY2tpbmdDb250ZXh0LT5jb252ZXJ0VG9CYWNraW5n
KHN0ZDo6Z2V0PExvYWRPcD4oY29sb3JBdHRhY2htZW50LmxvYWRWYWx1ZSkpIDogV0dQVUxvYWRP
cF9DbGVhciwKLSAgICAgICAgICAgIG1fY29udmVydFRvQmFja2luZ0NvbnRleHQtPmNvbnZlcnRU
b0JhY2tpbmcoY29sb3JBdHRhY2htZW50LnN0b3JlT3ApLAotICAgICAgICAgICAgV1RGOjpzd2l0
Y2hPbihjb2xvckF0dGFjaG1lbnQubG9hZFZhbHVlLCBbXSAoTG9hZE9wKSAtPiBXR1BVQ29sb3Ig
ewotICAgICAgICAgICAgICAgIHJldHVybiB7IDAsIDAsIDAsIDAgfTsKLSAgICAgICAgICAgIH0s
IFtdIChjb25zdCBWZWN0b3I8ZG91YmxlPiYgdmVjdG9yKSAtPiBXR1BVQ29sb3IgewotICAgICAg
ICAgICAgICAgIHJldHVybiBXR1BVQ29sb3IgewotICAgICAgICAgICAgICAgICAgICB2ZWN0b3Iu
c2l6ZSgpID4gMCA/IHZlY3RvclswXSA6IDAsCi0gICAgICAgICAgICAgICAgICAgIHZlY3Rvci5z
aXplKCkgPiAxID8gdmVjdG9yWzFdIDogMCwKLSAgICAgICAgICAgICAgICAgICAgdmVjdG9yLnNp
emUoKSA+IDIgPyB2ZWN0b3JbMl0gOiAwLAotICAgICAgICAgICAgICAgICAgICB2ZWN0b3Iuc2l6
ZSgpID4gMyA/IHZlY3RvclszXSA6IDAsCi0gICAgICAgICAgICAgICAgfTsKLSAgICAgICAgICAg
IH0sIFtdIChjb25zdCBDb2xvckRpY3QmIGNvbG9yKSAtPiBXR1BVQ29sb3IgewotICAgICAgICAg
ICAgICAgIHJldHVybiBXR1BVQ29sb3IgewotICAgICAgICAgICAgICAgICAgICBjb2xvci5yLAot
ICAgICAgICAgICAgICAgICAgICBjb2xvci5nLAotICAgICAgICAgICAgICAgICAgICBjb2xvci5i
LAotICAgICAgICAgICAgICAgICAgICBjb2xvci5hLAotICAgICAgICAgICAgICAgIH07Ci0gICAg
ICAgICAgICB9KSwKLSAgICAgICAgfSk7CisgICAgICAgIGlmIChjb2xvckF0dGFjaG1lbnQpIHsK
KyAgICAgICAgICAgIGNvbG9yQXR0YWNobWVudHMuYXBwZW5kKFdHUFVSZW5kZXJQYXNzQ29sb3JB
dHRhY2htZW50IHsKKyAgICAgICAgICAgICAgICBtX2NvbnZlcnRUb0JhY2tpbmdDb250ZXh0LT5j
b252ZXJ0VG9CYWNraW5nKGNvbG9yQXR0YWNobWVudC0+dmlldyksCisgICAgICAgICAgICAgICAg
Y29sb3JBdHRhY2htZW50LT5yZXNvbHZlVGFyZ2V0ID8gbV9jb252ZXJ0VG9CYWNraW5nQ29udGV4
dC0+Y29udmVydFRvQmFja2luZygqY29sb3JBdHRhY2htZW50LT5yZXNvbHZlVGFyZ2V0KSA6IG51
bGxwdHIsCisgICAgICAgICAgICAgICAgbV9jb252ZXJ0VG9CYWNraW5nQ29udGV4dC0+Y29udmVy
dFRvQmFja2luZyhjb2xvckF0dGFjaG1lbnQtPmxvYWRPcCksCisgICAgICAgICAgICAgICAgbV9j
b252ZXJ0VG9CYWNraW5nQ29udGV4dC0+Y29udmVydFRvQmFja2luZyhjb2xvckF0dGFjaG1lbnQt
PnN0b3JlT3ApLAorICAgICAgICAgICAgICAgIGNvbG9yQXR0YWNobWVudC0+Y2xlYXJWYWx1ZSA/
IG1fY29udmVydFRvQmFja2luZ0NvbnRleHQtPmNvbnZlcnRUb0JhY2tpbmcoKmNvbG9yQXR0YWNo
bWVudC0+Y2xlYXJWYWx1ZSkgOiBXR1BVQ29sb3IgeyAwLCAwLCAwLCAwIH0sCisgICAgICAgICAg
ICB9KTsKKyAgICAgICAgfSBlbHNlCisgICAgICAgICAgICBjb2xvckF0dGFjaG1lbnRzLmFwcGVu
ZCh7CisgICAgICAgICAgICAgICAgbnVsbHB0ciwKKyAgICAgICAgICAgICAgICBudWxscHRyLAor
ICAgICAgICAgICAgICAgIFdHUFVMb2FkT3BfQ2xlYXIsCisgICAgICAgICAgICAgICAgV0dQVVN0
b3JlT3BfRGlzY2FyZCwKKyAgICAgICAgICAgICAgICB7IDAsIDAsIDAsIDAgfSwKKyAgICAgICAg
ICAgIH0pOwogICAgIH0KIAogICAgIHN0ZDo6b3B0aW9uYWw8V0dQVVJlbmRlclBhc3NEZXB0aFN0
ZW5jaWxBdHRhY2htZW50PiBkZXB0aFN0ZW5jaWxBdHRhY2htZW50OwogICAgIGlmIChkZXNjcmlw
dG9yLmRlcHRoU3RlbmNpbEF0dGFjaG1lbnQpIHsKICAgICAgICAgZGVwdGhTdGVuY2lsQXR0YWNo
bWVudCA9IFdHUFVSZW5kZXJQYXNzRGVwdGhTdGVuY2lsQXR0YWNobWVudCB7CiAgICAgICAgICAg
ICBtX2NvbnZlcnRUb0JhY2tpbmdDb250ZXh0LT5jb252ZXJ0VG9CYWNraW5nKGRlc2NyaXB0b3Iu
ZGVwdGhTdGVuY2lsQXR0YWNobWVudC0+dmlldyksCi0gICAgICAgICAgICBzdGQ6OmhvbGRzX2Fs
dGVybmF0aXZlPExvYWRPcD4oZGVzY3JpcHRvci5kZXB0aFN0ZW5jaWxBdHRhY2htZW50LT5kZXB0
aExvYWRWYWx1ZSkgPyBtX2NvbnZlcnRUb0JhY2tpbmdDb250ZXh0LT5jb252ZXJ0VG9CYWNraW5n
KHN0ZDo6Z2V0PExvYWRPcD4oZGVzY3JpcHRvci5kZXB0aFN0ZW5jaWxBdHRhY2htZW50LT5kZXB0
aExvYWRWYWx1ZSkpIDogV0dQVUxvYWRPcF9DbGVhciwKLSAgICAgICAgICAgIG1fY29udmVydFRv
QmFja2luZ0NvbnRleHQtPmNvbnZlcnRUb0JhY2tpbmcoZGVzY3JpcHRvci5kZXB0aFN0ZW5jaWxB
dHRhY2htZW50LT5kZXB0aFN0b3JlT3ApLAotICAgICAgICAgICAgV1RGOjpzd2l0Y2hPbihkZXNj
cmlwdG9yLmRlcHRoU3RlbmNpbEF0dGFjaG1lbnQtPmRlcHRoTG9hZFZhbHVlLCBbXSAoTG9hZE9w
KSAtPiBmbG9hdCB7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIDA7Ci0gICAgICAgICAgICB9LCBb
XSAoZmxvYXQgY2xlYXJEZXB0aCkgLT4gZmxvYXQgewotICAgICAgICAgICAgICAgIHJldHVybiBj
bGVhckRlcHRoOwotICAgICAgICAgICAgfSksCisgICAgICAgICAgICBkZXNjcmlwdG9yLmRlcHRo
U3RlbmNpbEF0dGFjaG1lbnQtPmRlcHRoTG9hZE9wID8gbV9jb252ZXJ0VG9CYWNraW5nQ29udGV4
dC0+Y29udmVydFRvQmFja2luZygqZGVzY3JpcHRvci5kZXB0aFN0ZW5jaWxBdHRhY2htZW50LT5k
ZXB0aExvYWRPcCkgOiBXR1BVTG9hZE9wX0NsZWFyLAorICAgICAgICAgICAgZGVzY3JpcHRvci5k
ZXB0aFN0ZW5jaWxBdHRhY2htZW50LT5kZXB0aFN0b3JlT3AgPyBtX2NvbnZlcnRUb0JhY2tpbmdD
b250ZXh0LT5jb252ZXJ0VG9CYWNraW5nKCpkZXNjcmlwdG9yLmRlcHRoU3RlbmNpbEF0dGFjaG1l
bnQtPmRlcHRoU3RvcmVPcCkgOiBXR1BVU3RvcmVPcF9EaXNjYXJkLAorICAgICAgICAgICAgZGVz
Y3JpcHRvci5kZXB0aFN0ZW5jaWxBdHRhY2htZW50LT5kZXB0aENsZWFyVmFsdWUsCiAgICAgICAg
ICAgICBkZXNjcmlwdG9yLmRlcHRoU3RlbmNpbEF0dGFjaG1lbnQtPmRlcHRoUmVhZE9ubHksCi0g
ICAgICAgICAgICBzdGQ6OmhvbGRzX2FsdGVybmF0aXZlPExvYWRPcD4oZGVzY3JpcHRvci5kZXB0
aFN0ZW5jaWxBdHRhY2htZW50LT5zdGVuY2lsTG9hZFZhbHVlKSA/IG1fY29udmVydFRvQmFja2lu
Z0NvbnRleHQtPmNvbnZlcnRUb0JhY2tpbmcoc3RkOjpnZXQ8TG9hZE9wPihkZXNjcmlwdG9yLmRl
cHRoU3RlbmNpbEF0dGFjaG1lbnQtPnN0ZW5jaWxMb2FkVmFsdWUpKSA6IFdHUFVMb2FkT3BfQ2xl
YXIsCi0gICAgICAgICAgICBtX2NvbnZlcnRUb0JhY2tpbmdDb250ZXh0LT5jb252ZXJ0VG9CYWNr
aW5nKGRlc2NyaXB0b3IuZGVwdGhTdGVuY2lsQXR0YWNobWVudC0+c3RlbmNpbFN0b3JlT3ApLAot
ICAgICAgICAgICAgV1RGOjpzd2l0Y2hPbihkZXNjcmlwdG9yLmRlcHRoU3RlbmNpbEF0dGFjaG1l
bnQtPnN0ZW5jaWxMb2FkVmFsdWUsIFtdIChMb2FkT3ApIC0+IHVpbnQzMl90IHsKLSAgICAgICAg
ICAgICAgICByZXR1cm4gMDsKLSAgICAgICAgICAgIH0sIFtdIChTdGVuY2lsVmFsdWUgY2xlYXJT
dGVuY2lsKSAtPiB1aW50MzJfdCB7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIGNsZWFyU3RlbmNp
bDsKLSAgICAgICAgICAgIH0pLAorICAgICAgICAgICAgZGVzY3JpcHRvci5kZXB0aFN0ZW5jaWxB
dHRhY2htZW50LT5zdGVuY2lsTG9hZE9wID8gbV9jb252ZXJ0VG9CYWNraW5nQ29udGV4dC0+Y29u
dmVydFRvQmFja2luZygqZGVzY3JpcHRvci5kZXB0aFN0ZW5jaWxBdHRhY2htZW50LT5zdGVuY2ls
TG9hZE9wKSA6IFdHUFVMb2FkT3BfQ2xlYXIsCisgICAgICAgICAgICBkZXNjcmlwdG9yLmRlcHRo
U3RlbmNpbEF0dGFjaG1lbnQtPnN0ZW5jaWxTdG9yZU9wID8gbV9jb252ZXJ0VG9CYWNraW5nQ29u
dGV4dC0+Y29udmVydFRvQmFja2luZygqZGVzY3JpcHRvci5kZXB0aFN0ZW5jaWxBdHRhY2htZW50
LT5zdGVuY2lsU3RvcmVPcCkgOiBXR1BVU3RvcmVPcF9EaXNjYXJkLAorICAgICAgICAgICAgZGVz
Y3JpcHRvci5kZXB0aFN0ZW5jaWxBdHRhY2htZW50LT5zdGVuY2lsQ2xlYXJWYWx1ZSwKICAgICAg
ICAgICAgIGRlc2NyaXB0b3IuZGVwdGhTdGVuY2lsQXR0YWNobWVudC0+c3RlbmNpbFJlYWRPbmx5
LAogICAgICAgICB9OwogICAgIH0KIAotICAgIGF1dG8gbGFiZWwgPSBkZXNjcmlwdG9yLmxhYmVs
LnV0ZjgoKTsKKyAgICBWZWN0b3I8V0dQVVJlbmRlclBhc3NUaW1lc3RhbXBXcml0ZT4gdGltZXN0
YW1wV3JpdGVzOworICAgIGZvciAoY29uc3QgYXV0byYgdGltZXN0YW1wV3JpdGUgOiBkZXNjcmlw
dG9yLnRpbWVzdGFtcFdyaXRlcykgeworICAgICAgICB0aW1lc3RhbXBXcml0ZXMuYXBwZW5kKFdH
UFVSZW5kZXJQYXNzVGltZXN0YW1wV3JpdGUgeworICAgICAgICAgICAgbV9jb252ZXJ0VG9CYWNr
aW5nQ29udGV4dC0+Y29udmVydFRvQmFja2luZyh0aW1lc3RhbXBXcml0ZS5xdWVyeVNldCksCisg
ICAgICAgICAgICB0aW1lc3RhbXBXcml0ZS5xdWVyeUluZGV4LAorICAgICAgICAgICAgbV9jb252
ZXJ0VG9CYWNraW5nQ29udGV4dC0+Y29udmVydFRvQmFja2luZyh0aW1lc3RhbXBXcml0ZS5sb2Nh
dGlvbiksCisgICAgICAgIH0pOworICAgIH0KIAogICAgIFdHUFVSZW5kZXJQYXNzRGVzY3JpcHRv
ciBiYWNraW5nRGVzY3JpcHRvciB7CiAgICAgICAgIG51bGxwdHIsCkBAIC0xMTIsNiArMTA2LDgg
QEAgUmVmPFJlbmRlclBhc3NFbmNvZGVyPiBDb21tYW5kRW5jb2RlckltcGw6OmJlZ2luUmVuZGVy
UGFzcyhjb25zdCBSZW5kZXJQYXNzRGVzY3IKICAgICAgICAgY29sb3JBdHRhY2htZW50cy5kYXRh
KCksCiAgICAgICAgIGRlcHRoU3RlbmNpbEF0dGFjaG1lbnQgPyAmZGVwdGhTdGVuY2lsQXR0YWNo
bWVudC52YWx1ZSgpIDogbnVsbHB0ciwKICAgICAgICAgZGVzY3JpcHRvci5vY2NsdXNpb25RdWVy
eVNldCA/IG1fY29udmVydFRvQmFja2luZ0NvbnRleHQtPmNvbnZlcnRUb0JhY2tpbmcoKmRlc2Ny
aXB0b3Iub2NjbHVzaW9uUXVlcnlTZXQpIDogbnVsbHB0ciwKKyAgICAgICAgc3RhdGljX2Nhc3Q8
dWludDMyX3Q+KHRpbWVzdGFtcFdyaXRlcy5zaXplKCkpLAorICAgICAgICB0aW1lc3RhbXBXcml0
ZXMuZGF0YSgpLAogICAgIH07CiAKICAgICByZXR1cm4gUmVuZGVyUGFzc0VuY29kZXJJbXBsOjpj
cmVhdGUod2dwdUNvbW1hbmRFbmNvZGVyQmVnaW5SZW5kZXJQYXNzKG1fYmFja2luZywgJmJhY2tp
bmdEZXNjcmlwdG9yKSwgbV9jb252ZXJ0VG9CYWNraW5nQ29udGV4dCk7CkBAIC0xMjEsOSArMTE3
LDIyIEBAIFJlZjxDb21wdXRlUGFzc0VuY29kZXI+IENvbW1hbmRFbmNvZGVySW1wbDo6YmVnaW5D
b21wdXRlUGFzcyhjb25zdCBzdGQ6Om9wdGlvbmFsCiB7CiAgICAgQ1N0cmluZyBsYWJlbCA9IGRl
c2NyaXB0b3IgPyBkZXNjcmlwdG9yLT5sYWJlbC51dGY4KCkgOiBDU3RyaW5nKCIiKTsKIAorICAg
IFZlY3RvcjxXR1BVQ29tcHV0ZVBhc3NUaW1lc3RhbXBXcml0ZT4gdGltZXN0YW1wV3JpdGVzOwor
ICAgIGlmIChkZXNjcmlwdG9yKSB7CisgICAgICAgIGZvciAoY29uc3QgYXV0byYgdGltZXN0YW1w
V3JpdGUgOiBkZXNjcmlwdG9yLT50aW1lc3RhbXBXcml0ZXMpIHsKKyAgICAgICAgICAgIHRpbWVz
dGFtcFdyaXRlcy5hcHBlbmQoV0dQVUNvbXB1dGVQYXNzVGltZXN0YW1wV3JpdGUgeworICAgICAg
ICAgICAgICAgIG1fY29udmVydFRvQmFja2luZ0NvbnRleHQtPmNvbnZlcnRUb0JhY2tpbmcodGlt
ZXN0YW1wV3JpdGUucXVlcnlTZXQpLAorICAgICAgICAgICAgICAgIHRpbWVzdGFtcFdyaXRlLnF1
ZXJ5SW5kZXgsCisgICAgICAgICAgICAgICAgbV9jb252ZXJ0VG9CYWNraW5nQ29udGV4dC0+Y29u
dmVydFRvQmFja2luZyh0aW1lc3RhbXBXcml0ZS5sb2NhdGlvbiksCisgICAgICAgICAgICB9KTsK
KyAgICAgICAgfQorICAgIH0KKwogICAgIFdHUFVDb21wdXRlUGFzc0Rlc2NyaXB0b3IgYmFja2lu
Z0Rlc2NyaXB0b3IgewogICAgICAgICBudWxscHRyLAogICAgICAgICBsYWJlbC5kYXRhKCksCisg
ICAgICAgIHN0YXRpY19jYXN0PHVpbnQzMl90Pih0aW1lc3RhbXBXcml0ZXMuc2l6ZSgpKSwKKyAg
ICAgICAgdGltZXN0YW1wV3JpdGVzLmRhdGEoKSwKICAgICB9OwogCiAgICAgcmV0dXJuIENvbXB1
dGVQYXNzRW5jb2RlckltcGw6OmNyZWF0ZSh3Z3B1Q29tbWFuZEVuY29kZXJCZWdpbkNvbXB1dGVQ
YXNzKG1fYmFja2luZywgJmJhY2tpbmdEZXNjcmlwdG9yKSwgbV9jb252ZXJ0VG9CYWNraW5nQ29u
dGV4dCk7CkBAIC0yMjEsMTIgKzIzMCwxMiBAQCB2b2lkIENvbW1hbmRFbmNvZGVySW1wbDo6Y29w
eVRleHR1cmVUb1RleHR1cmUoCiAgICAgd2dwdUNvbW1hbmRFbmNvZGVyQ29weVRleHR1cmVUb1Rl
eHR1cmUobV9iYWNraW5nLCAmYmFja2luZ1NvdXJjZSwgJmJhY2tpbmdEZXN0aW5hdGlvbiwgJmJh
Y2tpbmdDb3B5U2l6ZSk7CiB9CiAKLXZvaWQgQ29tbWFuZEVuY29kZXJJbXBsOjpmaWxsQnVmZmVy
KAotICAgIGNvbnN0IEJ1ZmZlciYgZGVzdGluYXRpb24sCi0gICAgU2l6ZTY0IGRlc3RpbmF0aW9u
T2Zmc2V0LAotICAgIFNpemU2NCBzaXplKQordm9pZCBDb21tYW5kRW5jb2RlckltcGw6OmNsZWFy
QnVmZmVyKAorICAgIGNvbnN0IEJ1ZmZlciYgYnVmZmVyLAorICAgIFNpemU2NCBvZmZzZXQsCisg
ICAgc3RkOjpvcHRpb25hbDxTaXplNjQ+IHNpemUpCiB7Ci0gICAgd2dwdUNvbW1hbmRFbmNvZGVy
RmlsbEJ1ZmZlcihtX2JhY2tpbmcsIG1fY29udmVydFRvQmFja2luZ0NvbnRleHQtPmNvbnZlcnRU
b0JhY2tpbmcoZGVzdGluYXRpb24pLCBkZXN0aW5hdGlvbk9mZnNldCwgc2l6ZSk7CisgICAgd2dw
dUNvbW1hbmRFbmNvZGVyQ2xlYXJCdWZmZXIobV9iYWNraW5nLCBtX2NvbnZlcnRUb0JhY2tpbmdD
b250ZXh0LT5jb252ZXJ0VG9CYWNraW5nKGJ1ZmZlciksIG9mZnNldCwgc2l6ZS52YWx1ZV9vcihX
R1BVX1dIT0xFX1NJWkUpKTsKIH0KIAogdm9pZCBDb21tYW5kRW5jb2RlckltcGw6OnB1c2hEZWJ1
Z0dyb3VwKFN0cmluZyYmIGdyb3VwTGFiZWwpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Q
QUwvcGFsL2dyYXBoaWNzL1dlYkdQVS9JbXBsL1dlYkdQVUNvbW1hbmRFbmNvZGVySW1wbC5oIGIv
U291cmNlL1dlYkNvcmUvUEFML3BhbC9ncmFwaGljcy9XZWJHUFUvSW1wbC9XZWJHUFVDb21tYW5k
RW5jb2RlckltcGwuaAppbmRleCBhZDYwYWMwMmIxYWQ2ZTI0MDg5NGI5ZDVhMjkxMGJiYmQ0MzYx
MWE5Li4xNzE3YWRkM2JjOTgwYWM1NDg2YWQ3M2EzOTI5MTViNDhhZDk2MjBjIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL2dyYXBoaWNzL1dlYkdQVS9JbXBsL1dlYkdQVUNvbW1h
bmRFbmNvZGVySW1wbC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvZ3JhcGhpY3MvV2Vi
R1BVL0ltcGwvV2ViR1BVQ29tbWFuZEVuY29kZXJJbXBsLmgKQEAgLTgxLDEwICs4MSwxMCBAQCBw
cml2YXRlOgogICAgICAgICBjb25zdCBJbWFnZUNvcHlUZXh0dXJlJiBkZXN0aW5hdGlvbiwKICAg
ICAgICAgY29uc3QgRXh0ZW50M0QmIGNvcHlTaXplKSBmaW5hbDsKIAotICAgIHZvaWQgZmlsbEJ1
ZmZlcigKLSAgICAgICAgY29uc3QgQnVmZmVyJiBkZXN0aW5hdGlvbiwKLSAgICAgICAgU2l6ZTY0
IGRlc3RpbmF0aW9uT2Zmc2V0LAotICAgICAgICBTaXplNjQpIGZpbmFsOworICAgIHZvaWQgY2xl
YXJCdWZmZXIoCisgICAgICAgIGNvbnN0IEJ1ZmZlciYsCisgICAgICAgIFNpemU2NCBvZmZzZXQs
CisgICAgICAgIHN0ZDo6b3B0aW9uYWw8U2l6ZTY0PikgZmluYWw7CiAKICAgICB2b2lkIHB1c2hE
ZWJ1Z0dyb3VwKFN0cmluZyYmIGdyb3VwTGFiZWwpIGZpbmFsOwogICAgIHZvaWQgcG9wRGVidWdH
cm91cCgpIGZpbmFsOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvUEFML3BhbC9ncmFwaGlj
cy9XZWJHUFUvSW1wbC9XZWJHUFVDb21wdXRlUGFzc0VuY29kZXJJbXBsLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL1BBTC9wYWwvZ3JhcGhpY3MvV2ViR1BVL0ltcGwvV2ViR1BVQ29tcHV0ZVBhc3NFbmNv
ZGVySW1wbC5jcHAKaW5kZXggZWRkNTlkNjU5NzZmMDRhN2MxYjM3ZmQxYWJiMDhkNTRiZTRmNzYx
Ny4uMmRkZWViNDlkZWU0YTY4OGIyNjEyMjE4YjQ0NTA4OTczMjM4NDQ3NCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvUEFML3BhbC9ncmFwaGljcy9XZWJHUFUvSW1wbC9XZWJHUFVDb21wdXRl
UGFzc0VuY29kZXJJbXBsLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL2dyYXBoaWNz
L1dlYkdQVS9JbXBsL1dlYkdQVUNvbXB1dGVQYXNzRW5jb2RlckltcGwuY3BwCkBAIC01Myw5ICs1
Myw5IEBAIHZvaWQgQ29tcHV0ZVBhc3NFbmNvZGVySW1wbDo6c2V0UGlwZWxpbmUoY29uc3QgQ29t
cHV0ZVBpcGVsaW5lJiBjb21wdXRlUGlwZWxpbmUpCiAgICAgd2dwdUNvbXB1dGVQYXNzRW5jb2Rl
clNldFBpcGVsaW5lKG1fYmFja2luZywgbV9jb252ZXJ0VG9CYWNraW5nQ29udGV4dC0+Y29udmVy
dFRvQmFja2luZyhjb21wdXRlUGlwZWxpbmUpKTsKIH0KIAotdm9pZCBDb21wdXRlUGFzc0VuY29k
ZXJJbXBsOjpkaXNwYXRjaChTaXplMzIgeCwgc3RkOjpvcHRpb25hbDxTaXplMzI+IHksIHN0ZDo6
b3B0aW9uYWw8U2l6ZTMyPiB6KQordm9pZCBDb21wdXRlUGFzc0VuY29kZXJJbXBsOjpkaXNwYXRj
aChTaXplMzIgd29ya2dyb3VwQ291bnRYLCBTaXplMzIgd29ya2dyb3VwQ291bnRZLCBTaXplMzIg
d29ya2dyb3VwQ291bnRaKQogewotICAgIHdncHVDb21wdXRlUGFzc0VuY29kZXJEaXNwYXRjaCht
X2JhY2tpbmcsIHgsIHkudmFsdWVfb3IoMSksIHoudmFsdWVfb3IoMSkpOworICAgIHdncHVDb21w
dXRlUGFzc0VuY29kZXJEaXNwYXRjaChtX2JhY2tpbmcsIHdvcmtncm91cENvdW50WCwgd29ya2dy
b3VwQ291bnRZLCB3b3JrZ3JvdXBDb3VudFopOwogfQogCiB2b2lkIENvbXB1dGVQYXNzRW5jb2Rl
ckltcGw6OmRpc3BhdGNoSW5kaXJlY3QoY29uc3QgQnVmZmVyJiBpbmRpcmVjdEJ1ZmZlciwgU2l6
ZTY0IGluZGlyZWN0T2Zmc2V0KQpAQCAtNjMsMTcgKzYzLDcgQEAgdm9pZCBDb21wdXRlUGFzc0Vu
Y29kZXJJbXBsOjpkaXNwYXRjaEluZGlyZWN0KGNvbnN0IEJ1ZmZlciYgaW5kaXJlY3RCdWZmZXIs
IFNpemUKICAgICB3Z3B1Q29tcHV0ZVBhc3NFbmNvZGVyRGlzcGF0Y2hJbmRpcmVjdChtX2JhY2tp
bmcsIG1fY29udmVydFRvQmFja2luZ0NvbnRleHQtPmNvbnZlcnRUb0JhY2tpbmcoaW5kaXJlY3RC
dWZmZXIpLCBpbmRpcmVjdE9mZnNldCk7CiB9CiAKLXZvaWQgQ29tcHV0ZVBhc3NFbmNvZGVySW1w
bDo6YmVnaW5QaXBlbGluZVN0YXRpc3RpY3NRdWVyeShjb25zdCBRdWVyeVNldCYgcXVlcnlTZXQs
IFNpemUzMiBxdWVyeUluZGV4KQotewotICAgIHdncHVDb21wdXRlUGFzc0VuY29kZXJCZWdpblBp
cGVsaW5lU3RhdGlzdGljc1F1ZXJ5KG1fYmFja2luZywgbV9jb252ZXJ0VG9CYWNraW5nQ29udGV4
dC0+Y29udmVydFRvQmFja2luZyhxdWVyeVNldCksIHF1ZXJ5SW5kZXgpOwotfQotCi12b2lkIENv
bXB1dGVQYXNzRW5jb2RlckltcGw6OmVuZFBpcGVsaW5lU3RhdGlzdGljc1F1ZXJ5KCkKLXsKLSAg
ICB3Z3B1Q29tcHV0ZVBhc3NFbmNvZGVyRW5kUGlwZWxpbmVTdGF0aXN0aWNzUXVlcnkobV9iYWNr
aW5nKTsKLX0KLQotdm9pZCBDb21wdXRlUGFzc0VuY29kZXJJbXBsOjplbmRQYXNzKCkKK3ZvaWQg
Q29tcHV0ZVBhc3NFbmNvZGVySW1wbDo6ZW5kKCkKIHsKICAgICB3Z3B1Q29tcHV0ZVBhc3NFbmNv
ZGVyRW5kUGFzcyhtX2JhY2tpbmcpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvUEFM
L3BhbC9ncmFwaGljcy9XZWJHUFUvSW1wbC9XZWJHUFVDb21wdXRlUGFzc0VuY29kZXJJbXBsLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL2dyYXBoaWNzL1dlYkdQVS9JbXBsL1dlYkdQVUNvbXB1
dGVQYXNzRW5jb2RlckltcGwuaAppbmRleCA1Mjg4YjViOGMwZGJlN2E2MTBlYjExNjUzMTU1ZjMz
Y2ExNTNkNTEzLi4wZjM2NjFkOTliZWRiNGZjMjQ5MTgxZGFjNDdmNjNhNzU0MjJmM2QwIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL2dyYXBoaWNzL1dlYkdQVS9JbXBsL1dlYkdQ
VUNvbXB1dGVQYXNzRW5jb2RlckltcGwuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL2dy
YXBoaWNzL1dlYkdQVS9JbXBsL1dlYkdQVUNvbXB1dGVQYXNzRW5jb2RlckltcGwuaApAQCAtNTcs
MTMgKzU3LDEwIEBAIHByaXZhdGU6CiAgICAgV0dQVUNvbXB1dGVQYXNzRW5jb2RlciBiYWNraW5n
KCkgY29uc3QgeyByZXR1cm4gbV9iYWNraW5nOyB9CiAKICAgICB2b2lkIHNldFBpcGVsaW5lKGNv
bnN0IENvbXB1dGVQaXBlbGluZSYpIGZpbmFsOwotICAgIHZvaWQgZGlzcGF0Y2goU2l6ZTMyIHgs
IHN0ZDo6b3B0aW9uYWw8U2l6ZTMyPiB5LCBzdGQ6Om9wdGlvbmFsPFNpemUzMj4pIGZpbmFsOwor
ICAgIHZvaWQgZGlzcGF0Y2goU2l6ZTMyIHdvcmtncm91cENvdW50WCwgU2l6ZTMyIHdvcmtncm91
cENvdW50WSwgU2l6ZTMyIHdvcmtncm91cENvdW50WikgZmluYWw7CiAgICAgdm9pZCBkaXNwYXRj
aEluZGlyZWN0KGNvbnN0IEJ1ZmZlciYgaW5kaXJlY3RCdWZmZXIsIFNpemU2NCBpbmRpcmVjdE9m
ZnNldCkgZmluYWw7CiAKLSAgICB2b2lkIGJlZ2luUGlwZWxpbmVTdGF0aXN0aWNzUXVlcnkoY29u
c3QgUXVlcnlTZXQmLCBTaXplMzIgcXVlcnlJbmRleCkgZmluYWw7Ci0gICAgdm9pZCBlbmRQaXBl
bGluZVN0YXRpc3RpY3NRdWVyeSgpIGZpbmFsOwotCi0gICAgdm9pZCBlbmRQYXNzKCkgZmluYWw7
CisgICAgdm9pZCBlbmQoKSBmaW5hbDsKIAogICAgIHZvaWQgc2V0QmluZEdyb3VwKEluZGV4MzIs
IGNvbnN0IEJpbmRHcm91cCYsCiAgICAgICAgIHN0ZDo6b3B0aW9uYWw8VmVjdG9yPEJ1ZmZlckR5
bmFtaWNPZmZzZXQ+PiYmKSBmaW5hbDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1BBTC9w
YWwvZ3JhcGhpY3MvV2ViR1BVL0ltcGwvV2ViR1BVQ29udmVydFRvQmFja2luZ0NvbnRleHQuY3Bw
IGIvU291cmNlL1dlYkNvcmUvUEFML3BhbC9ncmFwaGljcy9XZWJHUFUvSW1wbC9XZWJHUFVDb252
ZXJ0VG9CYWNraW5nQ29udGV4dC5jcHAKaW5kZXggMGZiZmI0ZWNkNmI2NWM0NDFmNzE1NDMzZDJj
NjUwOWQ4ZGU0MjNhYS4uNzVmOTdjMjMzYTUxZTVlOTA4YjljNWRmOWIwYjdkNTA3NzdjODY3ZCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvUEFML3BhbC9ncmFwaGljcy9XZWJHUFUvSW1wbC9X
ZWJHUFVDb252ZXJ0VG9CYWNraW5nQ29udGV4dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvUEFM
L3BhbC9ncmFwaGljcy9XZWJHUFUvSW1wbC9XZWJHUFVDb252ZXJ0VG9CYWNraW5nQ29udGV4dC5j
cHAKQEAgLTM0LDYgKzM0LDcgQEAKICNpbmNsdWRlICJXZWJHUFVCdWZmZXJCaW5kaW5nVHlwZS5o
IgogI2luY2x1ZGUgIldlYkdQVUNvbXBhcmVGdW5jdGlvbi5oIgogI2luY2x1ZGUgIldlYkdQVUNv
bXBpbGF0aW9uTWVzc2FnZVR5cGUuaCIKKyNpbmNsdWRlICJXZWJHUFVDb21wdXRlUGFzc1RpbWVz
dGFtcExvY2F0aW9uLmgiCiAjaW5jbHVkZSAiV2ViR1BVQ3VsbE1vZGUuaCIKICNpbmNsdWRlICJX
ZWJHUFVFcnJvckZpbHRlci5oIgogI2luY2x1ZGUgIldlYkdQVUZlYXR1cmVOYW1lLmgiCkBAIC00
MSwxMCArNDIsMTAgQEAKICNpbmNsdWRlICJXZWJHUFVGcm9udEZhY2UuaCIKICNpbmNsdWRlICJX
ZWJHUFVJbmRleEZvcm1hdC5oIgogI2luY2x1ZGUgIldlYkdQVUxvYWRPcC5oIgotI2luY2x1ZGUg
IldlYkdQVVBpcGVsaW5lU3RhdGlzdGljTmFtZS5oIgogI2luY2x1ZGUgIldlYkdQVVBvd2VyUHJl
ZmVyZW5jZS5oIgogI2luY2x1ZGUgIldlYkdQVVByaW1pdGl2ZVRvcG9sb2d5LmgiCiAjaW5jbHVk
ZSAiV2ViR1BVUXVlcnlUeXBlLmgiCisjaW5jbHVkZSAiV2ViR1BVUmVuZGVyUGFzc1RpbWVzdGFt
cExvY2F0aW9uLmgiCiAjaW5jbHVkZSAiV2ViR1BVU2FtcGxlckJpbmRpbmdUeXBlLmgiCiAjaW5j
bHVkZSAiV2ViR1BVU3RlbmNpbE9wZXJhdGlvbi5oIgogI2luY2x1ZGUgIldlYkdQVVN0b3JhZ2VU
ZXh0dXJlQWNjZXNzLmgiCkBAIC0xNjYsNiArMTY3LDE2IEBAIFdHUFVDb21waWxhdGlvbk1lc3Nh
Z2VUeXBlIENvbnZlcnRUb0JhY2tpbmdDb250ZXh0Ojpjb252ZXJ0VG9CYWNraW5nKENvbXBpbGF0
aW9uCiAgICAgfQogfQogCitXR1BVQ29tcHV0ZVBhc3NUaW1lc3RhbXBMb2NhdGlvbiBDb252ZXJ0
VG9CYWNraW5nQ29udGV4dDo6Y29udmVydFRvQmFja2luZyhDb21wdXRlUGFzc1RpbWVzdGFtcExv
Y2F0aW9uIGNvbXB1dGVQYXNzVGltZXN0YW1wTG9jYXRpb24pCit7CisgICAgc3dpdGNoIChjb21w
dXRlUGFzc1RpbWVzdGFtcExvY2F0aW9uKSB7CisgICAgY2FzZSBDb21wdXRlUGFzc1RpbWVzdGFt
cExvY2F0aW9uOjpCZWdpbm5pbmc6CisgICAgICAgIHJldHVybiBXR1BVQ29tcHV0ZVBhc3NUaW1l
c3RhbXBMb2NhdGlvbl9CZWdpbm5pbmc7CisgICAgY2FzZSBDb21wdXRlUGFzc1RpbWVzdGFtcExv
Y2F0aW9uOjpFbmQ6CisgICAgICAgIHJldHVybiBXR1BVQ29tcHV0ZVBhc3NUaW1lc3RhbXBMb2Nh
dGlvbl9FbmQ7CisgICAgfQorfQorCiBXR1BVQ3VsbE1vZGUgQ29udmVydFRvQmFja2luZ0NvbnRl
eHQ6OmNvbnZlcnRUb0JhY2tpbmcoQ3VsbE1vZGUgY3VsbE1vZGUpCiB7CiAgICAgc3dpdGNoIChj
dWxsTW9kZSkgewpAQCAtMTk3LDggKzIwOCw2IEBAIFdHUFVGZWF0dXJlTmFtZSBDb252ZXJ0VG9C
YWNraW5nQ29udGV4dDo6Y29udmVydFRvQmFja2luZyhGZWF0dXJlTmFtZSBmZWF0dXJlTmFtCiAg
ICAgICAgIHJldHVybiBXR1BVRmVhdHVyZU5hbWVfRGVwdGgyNFVub3JtU3RlbmNpbDg7CiAgICAg
Y2FzZSBGZWF0dXJlTmFtZTo6RGVwdGgzMmZsb2F0U3RlbmNpbDg6CiAgICAgICAgIHJldHVybiBX
R1BVRmVhdHVyZU5hbWVfRGVwdGgzMkZsb2F0U3RlbmNpbDg7Ci0gICAgY2FzZSBGZWF0dXJlTmFt
ZTo6UGlwZWxpbmVTdGF0aXN0aWNzUXVlcnk6Ci0gICAgICAgIHJldHVybiBXR1BVRmVhdHVyZU5h
bWVfUGlwZWxpbmVTdGF0aXN0aWNzUXVlcnk7CiAgICAgY2FzZSBGZWF0dXJlTmFtZTo6VGV4dHVy
ZUNvbXByZXNzaW9uQmM6CiAgICAgICAgIHJldHVybiBXR1BVRmVhdHVyZU5hbWVfVGV4dHVyZUNv
bXByZXNzaW9uQkM7CiAgICAgY2FzZSBGZWF0dXJlTmFtZTo6VGV4dHVyZUNvbXByZXNzaW9uRXRj
MjoKQEAgLTI0NywyMiArMjU2LDggQEAgV0dQVUxvYWRPcCBDb252ZXJ0VG9CYWNraW5nQ29udGV4
dDo6Y29udmVydFRvQmFja2luZyhMb2FkT3AgbG9hZE9wKQogICAgIHN3aXRjaCAobG9hZE9wKSB7
CiAgICAgY2FzZSBMb2FkT3A6OkxvYWQ6CiAgICAgICAgIHJldHVybiBXR1BVTG9hZE9wX0xvYWQ7
Ci0gICAgfQotfQotCi1XR1BVUGlwZWxpbmVTdGF0aXN0aWNOYW1lIENvbnZlcnRUb0JhY2tpbmdD
b250ZXh0Ojpjb252ZXJ0VG9CYWNraW5nKFBpcGVsaW5lU3RhdGlzdGljTmFtZSBwaXBlbGluZVN0
YXRpc3RpY05hbWUpCi17Ci0gICAgc3dpdGNoIChwaXBlbGluZVN0YXRpc3RpY05hbWUpIHsKLSAg
ICBjYXNlIFBpcGVsaW5lU3RhdGlzdGljTmFtZTo6VmVydGV4U2hhZGVySW52b2NhdGlvbnM6Ci0g
ICAgICAgIHJldHVybiBXR1BVUGlwZWxpbmVTdGF0aXN0aWNOYW1lX1ZlcnRleFNoYWRlckludm9j
YXRpb25zOwotICAgIGNhc2UgUGlwZWxpbmVTdGF0aXN0aWNOYW1lOjpDbGlwcGVySW52b2NhdGlv
bnM6Ci0gICAgICAgIHJldHVybiBXR1BVUGlwZWxpbmVTdGF0aXN0aWNOYW1lX0NsaXBwZXJJbnZv
Y2F0aW9uczsKLSAgICBjYXNlIFBpcGVsaW5lU3RhdGlzdGljTmFtZTo6Q2xpcHBlclByaW1pdGl2
ZXNPdXQ6Ci0gICAgICAgIHJldHVybiBXR1BVUGlwZWxpbmVTdGF0aXN0aWNOYW1lX0NsaXBwZXJQ
cmltaXRpdmVzT3V0OwotICAgIGNhc2UgUGlwZWxpbmVTdGF0aXN0aWNOYW1lOjpGcmFnbWVudFNo
YWRlckludm9jYXRpb25zOgotICAgICAgICByZXR1cm4gV0dQVVBpcGVsaW5lU3RhdGlzdGljTmFt
ZV9GcmFnbWVudFNoYWRlckludm9jYXRpb25zOwotICAgIGNhc2UgUGlwZWxpbmVTdGF0aXN0aWNO
YW1lOjpDb21wdXRlU2hhZGVySW52b2NhdGlvbnM6Ci0gICAgICAgIHJldHVybiBXR1BVUGlwZWxp
bmVTdGF0aXN0aWNOYW1lX0NvbXB1dGVTaGFkZXJJbnZvY2F0aW9uczsKKyAgICBjYXNlIExvYWRP
cDo6Q2xlYXI6CisgICAgICAgIHJldHVybiBXR1BVTG9hZE9wX0NsZWFyOwogICAgIH0KIH0KIApA
QCAtMjk3LDEzICsyOTIsMjEgQEAgV0dQVVF1ZXJ5VHlwZSBDb252ZXJ0VG9CYWNraW5nQ29udGV4
dDo6Y29udmVydFRvQmFja2luZyhRdWVyeVR5cGUgcXVlcnlUeXBlKQogICAgIHN3aXRjaCAocXVl
cnlUeXBlKSB7CiAgICAgY2FzZSBRdWVyeVR5cGU6Ok9jY2x1c2lvbjoKICAgICAgICAgcmV0dXJu
IFdHUFVRdWVyeVR5cGVfT2NjbHVzaW9uOwotICAgIGNhc2UgUXVlcnlUeXBlOjpQaXBlbGluZVN0
YXRpc3RpY3M6Ci0gICAgICAgIHJldHVybiBXR1BVUXVlcnlUeXBlX1BpcGVsaW5lU3RhdGlzdGlj
czsKICAgICBjYXNlIFF1ZXJ5VHlwZTo6VGltZXN0YW1wOgogICAgICAgICByZXR1cm4gV0dQVVF1
ZXJ5VHlwZV9UaW1lc3RhbXA7CiAgICAgfQogfQogCitXR1BVUmVuZGVyUGFzc1RpbWVzdGFtcExv
Y2F0aW9uIENvbnZlcnRUb0JhY2tpbmdDb250ZXh0Ojpjb252ZXJ0VG9CYWNraW5nKFJlbmRlclBh
c3NUaW1lc3RhbXBMb2NhdGlvbiByZW5kZXJQYXNzVGltZXN0YW1wTG9jYXRpb24pCit7CisgICAg
c3dpdGNoIChyZW5kZXJQYXNzVGltZXN0YW1wTG9jYXRpb24pIHsKKyAgICBjYXNlIFJlbmRlclBh
c3NUaW1lc3RhbXBMb2NhdGlvbjo6QmVnaW5uaW5nOgorICAgICAgICByZXR1cm4gV0dQVVJlbmRl
clBhc3NUaW1lc3RhbXBMb2NhdGlvbl9CZWdpbm5pbmc7CisgICAgY2FzZSBSZW5kZXJQYXNzVGlt
ZXN0YW1wTG9jYXRpb246OkVuZDoKKyAgICAgICAgcmV0dXJuIFdHUFVSZW5kZXJQYXNzVGltZXN0
YW1wTG9jYXRpb25fRW5kOworICAgIH0KK30KKwogV0dQVVNhbXBsZXJCaW5kaW5nVHlwZSBDb252
ZXJ0VG9CYWNraW5nQ29udGV4dDo6Y29udmVydFRvQmFja2luZyhTYW1wbGVyQmluZGluZ1R5cGUg
c2FtcGxlckJpbmRpbmdUeXBlKQogewogICAgIHN3aXRjaCAoc2FtcGxlckJpbmRpbmdUeXBlKSB7
CkBAIC00OTYsMTEgKzQ5OSwxMSBAQCBXR1BVVGV4dHVyZUZvcm1hdCBDb252ZXJ0VG9CYWNraW5n
Q29udGV4dDo6Y29udmVydFRvQmFja2luZyhUZXh0dXJlRm9ybWF0IHRleHR1cgogICAgIGNhc2Ug
VGV4dHVyZUZvcm1hdDo6RXRjMlJnYjh1bm9ybToKICAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0
PFdHUFVUZXh0dXJlRm9ybWF0PihXR1BVVGV4dHVyZUZvcm1hdF9FVEMyUkdCOFVub3JtKTsKICAg
ICBjYXNlIFRleHR1cmVGb3JtYXQ6OkV0YzJSZ2I4dW5vcm1TUkdCOgotICAgICAgICByZXR1cm4g
c3RhdGljX2Nhc3Q8V0dQVVRleHR1cmVGb3JtYXQ+KFdHUFVUZXh0dXJlRm9ybWF0X0VUQzJSR0I4
dW5vcm1TcmdiKTsKKyAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PFdHUFVUZXh0dXJlRm9ybWF0
PihXR1BVVGV4dHVyZUZvcm1hdF9FVEMyUkdCOFVub3JtU3JnYik7CiAgICAgY2FzZSBUZXh0dXJl
Rm9ybWF0OjpFdGMyUmdiOGExdW5vcm06Ci0gICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxXR1BV
VGV4dHVyZUZvcm1hdD4oV0dQVVRleHR1cmVGb3JtYXRfRVRDMlJHQjhhMVVub3JtKTsKKyAgICAg
ICAgcmV0dXJuIHN0YXRpY19jYXN0PFdHUFVUZXh0dXJlRm9ybWF0PihXR1BVVGV4dHVyZUZvcm1h
dF9FVEMyUkdCOEExVW5vcm0pOwogICAgIGNhc2UgVGV4dHVyZUZvcm1hdDo6RXRjMlJnYjhhMXVu
b3JtU1JHQjoKLSAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PFdHUFVUZXh0dXJlRm9ybWF0PihX
R1BVVGV4dHVyZUZvcm1hdF9FVEMyUkdCOGExdW5vcm1TcmdiKTsKKyAgICAgICAgcmV0dXJuIHN0
YXRpY19jYXN0PFdHUFVUZXh0dXJlRm9ybWF0PihXR1BVVGV4dHVyZUZvcm1hdF9FVEMyUkdCOEEx
VW5vcm1TcmdiKTsKICAgICBjYXNlIFRleHR1cmVGb3JtYXQ6OkV0YzJSZ2JhOHVub3JtOgogICAg
ICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8V0dQVVRleHR1cmVGb3JtYXQ+KFdHUFVUZXh0dXJlRm9y
bWF0X0VUQzJSR0JBOFVub3JtKTsKICAgICBjYXNlIFRleHR1cmVGb3JtYXQ6OkV0YzJSZ2JhOHVu
b3JtU1JHQjoKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvZ3JhcGhpY3MvV2Vi
R1BVL0ltcGwvV2ViR1BVQ29udmVydFRvQmFja2luZ0NvbnRleHQuaCBiL1NvdXJjZS9XZWJDb3Jl
L1BBTC9wYWwvZ3JhcGhpY3MvV2ViR1BVL0ltcGwvV2ViR1BVQ29udmVydFRvQmFja2luZ0NvbnRl
eHQuaAppbmRleCAwOTNkODMzYzRlM2FmMDAzNGMyOGVmOTRmZjE5NmY4MzlhZGE0MDI3Li43NTg1
MDhiZDIzNWM4ZjI0Y2M4ZDc0M2Y3OGMyMmM1YzM1OGFkNDAwIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9QQUwvcGFsL2dyYXBoaWNzL1dlYkdQVS9JbXBsL1dlYkdQVUNvbnZlcnRUb0JhY2tp
bmdDb250ZXh0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvUEFML3BhbC9ncmFwaGljcy9XZWJHUFUv
SW1wbC9XZWJHUFVDb252ZXJ0VG9CYWNraW5nQ29udGV4dC5oCkBAIC01NCw2ICs1NCw3IEBAIGNs
YXNzIENvbW1hbmRCdWZmZXI7CiBjbGFzcyBDb21tYW5kRW5jb2RlcjsKIGVudW0gY2xhc3MgQ29t
cGFyZUZ1bmN0aW9uIDogdWludDhfdDsKIGVudW0gY2xhc3MgQ29tcGlsYXRpb25NZXNzYWdlVHlw
ZSA6IHVpbnQ4X3Q7CitlbnVtIGNsYXNzIENvbXB1dGVQYXNzVGltZXN0YW1wTG9jYXRpb24gOiB1
aW50OF90OwogY2xhc3MgQ29tcHV0ZVBhc3NFbmNvZGVyOwogY2xhc3MgQ29tcHV0ZVBpcGVsaW5l
OwogZW51bSBjbGFzcyBDdWxsTW9kZSA6IHVpbnQ4X3Q7CkBAIC02Niw3ICs2Nyw2IEBAIGNsYXNz
IEdQVTsKIGVudW0gY2xhc3MgSW5kZXhGb3JtYXQgOiB1aW50OF90OwogZW51bSBjbGFzcyBMb2Fk
T3AgOiB1aW50OF90OwogY2xhc3MgUGlwZWxpbmVMYXlvdXQ7Ci1lbnVtIGNsYXNzIFBpcGVsaW5l
U3RhdGlzdGljTmFtZSA6IHVpbnQ4X3Q7CiBlbnVtIGNsYXNzIFBvd2VyUHJlZmVyZW5jZSA6IHVp
bnQ4X3Q7CiBlbnVtIGNsYXNzIFByaW1pdGl2ZVRvcG9sb2d5IDogdWludDhfdDsKIGNsYXNzIFF1
ZXJ5U2V0OwpAQCAtNzUsNiArNzUsNyBAQCBjbGFzcyBRdWV1ZTsKIGNsYXNzIFJlbmRlckJ1bmRs
ZUVuY29kZXI7CiBjbGFzcyBSZW5kZXJCdW5kbGU7CiBjbGFzcyBSZW5kZXJQYXNzRW5jb2RlcjsK
K2VudW0gY2xhc3MgUmVuZGVyUGFzc1RpbWVzdGFtcExvY2F0aW9uIDogdWludDhfdDsKIGNsYXNz
IFJlbmRlclBpcGVsaW5lOwogY2xhc3MgU2FtcGxlcjsKIGVudW0gY2xhc3MgU2FtcGxlckJpbmRp
bmdUeXBlIDogdWludDhfdDsKQEAgLTEwMyw2ICsxMDQsNyBAQCBwdWJsaWM6CiAgICAgV0dQVUJ1
ZmZlckJpbmRpbmdUeXBlIGNvbnZlcnRUb0JhY2tpbmcoQnVmZmVyQmluZGluZ1R5cGUpOwogICAg
IFdHUFVDb21wYXJlRnVuY3Rpb24gY29udmVydFRvQmFja2luZyhDb21wYXJlRnVuY3Rpb24pOwog
ICAgIFdHUFVDb21waWxhdGlvbk1lc3NhZ2VUeXBlIGNvbnZlcnRUb0JhY2tpbmcoQ29tcGlsYXRp
b25NZXNzYWdlVHlwZSk7CisgICAgV0dQVUNvbXB1dGVQYXNzVGltZXN0YW1wTG9jYXRpb24gY29u
dmVydFRvQmFja2luZyhDb21wdXRlUGFzc1RpbWVzdGFtcExvY2F0aW9uKTsKICAgICBXR1BVQ3Vs
bE1vZGUgY29udmVydFRvQmFja2luZyhDdWxsTW9kZSk7CiAgICAgV0dQVUVycm9yRmlsdGVyIGNv
bnZlcnRUb0JhY2tpbmcoRXJyb3JGaWx0ZXIpOwogICAgIFdHUFVGZWF0dXJlTmFtZSBjb252ZXJ0
VG9CYWNraW5nKEZlYXR1cmVOYW1lKTsKQEAgLTExMCwxMCArMTEyLDEwIEBAIHB1YmxpYzoKICAg
ICBXR1BVRnJvbnRGYWNlIGNvbnZlcnRUb0JhY2tpbmcoRnJvbnRGYWNlKTsKICAgICBXR1BVSW5k
ZXhGb3JtYXQgY29udmVydFRvQmFja2luZyhJbmRleEZvcm1hdCk7CiAgICAgV0dQVUxvYWRPcCBj
b252ZXJ0VG9CYWNraW5nKExvYWRPcCk7Ci0gICAgV0dQVVBpcGVsaW5lU3RhdGlzdGljTmFtZSBj
b252ZXJ0VG9CYWNraW5nKFBpcGVsaW5lU3RhdGlzdGljTmFtZSk7CiAgICAgV0dQVVBvd2VyUHJl
ZmVyZW5jZSBjb252ZXJ0VG9CYWNraW5nKFBvd2VyUHJlZmVyZW5jZSk7CiAgICAgV0dQVVByaW1p
dGl2ZVRvcG9sb2d5IGNvbnZlcnRUb0JhY2tpbmcoUHJpbWl0aXZlVG9wb2xvZ3kpOwogICAgIFdH
UFVRdWVyeVR5cGUgY29udmVydFRvQmFja2luZyhRdWVyeVR5cGUpOworICAgIFdHUFVSZW5kZXJQ
YXNzVGltZXN0YW1wTG9jYXRpb24gY29udmVydFRvQmFja2luZyhSZW5kZXJQYXNzVGltZXN0YW1w
TG9jYXRpb24pOwogICAgIFdHUFVTYW1wbGVyQmluZGluZ1R5cGUgY29udmVydFRvQmFja2luZyhT
YW1wbGVyQmluZGluZ1R5cGUpOwogICAgIFdHUFVTdGVuY2lsT3BlcmF0aW9uIGNvbnZlcnRUb0Jh
Y2tpbmcoU3RlbmNpbE9wZXJhdGlvbik7CiAgICAgV0dQVVN0b3JhZ2VUZXh0dXJlQWNjZXNzIGNv
bnZlcnRUb0JhY2tpbmcoU3RvcmFnZVRleHR1cmVBY2Nlc3MpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvUEFML3BhbC9ncmFwaGljcy9XZWJHUFUvSW1wbC9XZWJHUFVEZXZpY2VJbXBsLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvZ3JhcGhpY3MvV2ViR1BVL0ltcGwvV2ViR1BVRGV2
aWNlSW1wbC5jcHAKaW5kZXggYjNmNTU1ZGIzMTc4NWUyZGI2ZDY0MTZjMmY5Mjk2ZWY0MjQwZDgz
Yi4uYjlkYTRlNmMwYzk3MWFmZWFmMmY2YzEwNTRiMmZmM2FjZmNkZjhlOSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvUEFML3BhbC9ncmFwaGljcy9XZWJHUFUvSW1wbC9XZWJHUFVEZXZpY2VJ
bXBsLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL2dyYXBoaWNzL1dlYkdQVS9JbXBs
L1dlYkdQVURldmljZUltcGwuY3BwCkBAIC05OSw4ICs5OSwyMSBAQCBSZWY8VGV4dHVyZT4gRGV2
aWNlSW1wbDo6Y3JlYXRlVGV4dHVyZShjb25zdCBUZXh0dXJlRGVzY3JpcHRvciYgZGVzY3JpcHRv
cikKIAogICAgIGF1dG8gbGFiZWwgPSBkZXNjcmlwdG9yLmxhYmVsLnV0ZjgoKTsKIAorICAgIGF1
dG8gYmFja2luZ1RleHR1cmVGb3JtYXRzID0gZGVzY3JpcHRvci52aWV3Rm9ybWF0cy5tYXAoWyZd
IChUZXh0dXJlRm9ybWF0IHRleHR1cmVGb3JtYXQpIHsKKyAgICAgICAgcmV0dXJuIG1fY29udmVy
dFRvQmFja2luZ0NvbnRleHQtPmNvbnZlcnRUb0JhY2tpbmcodGV4dHVyZUZvcm1hdCk7CisgICAg
fSk7CisKKyAgICBXR1BVVGV4dHVyZURlc2NyaXB0b3JWaWV3Rm9ybWF0cyBiYWNraW5nVmlld0Zv
cm1hdHMgeworICAgICAgICB7CisgICAgICAgICAgICBudWxscHRyLAorICAgICAgICAgICAgc3Rh
dGljX2Nhc3Q8V0dQVVNUeXBlPihXR1BVU1R5cGVFeHRlbmRlZF9UZXh0dXJlRGVzY3JpcHRvclZp
ZXdGb3JtYXRzKSwKKyAgICAgICAgfSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8dWludDMyX3Q+KGJh
Y2tpbmdUZXh0dXJlRm9ybWF0cy5zaXplKCkpLAorICAgICAgICBiYWNraW5nVGV4dHVyZUZvcm1h
dHMuZGF0YSgpLAorICAgIH07CisKICAgICBXR1BVVGV4dHVyZURlc2NyaXB0b3IgYmFja2luZ0Rl
c2NyaXB0b3IgewotICAgICAgICBudWxscHRyLAorICAgICAgICAmYmFja2luZ1ZpZXdGb3JtYXRz
LmNoYWluLAogICAgICAgICBsYWJlbC5kYXRhKCksCiAgICAgICAgIG1fY29udmVydFRvQmFja2lu
Z0NvbnRleHQtPmNvbnZlcnRUZXh0dXJlVXNhZ2VGbGFnc1RvQmFja2luZyhkZXNjcmlwdG9yLnVz
YWdlKSwKICAgICAgICAgbV9jb252ZXJ0VG9CYWNraW5nQ29udGV4dC0+Y29udmVydFRvQmFja2lu
ZyhkZXNjcmlwdG9yLmRpbWVuc2lvbiksCkBAIC0yMzEsOSArMjQ0LDM0IEBAIFJlZjxTaGFkZXJN
b2R1bGU+IERldmljZUltcGw6OmNyZWF0ZVNoYWRlck1vZHVsZShjb25zdCBTaGFkZXJNb2R1bGVE
ZXNjcmlwdG9yJiBkCiAKICAgICBhdXRvIHNvdXJjZSA9IGRlc2NyaXB0b3IuY29kZS51dGY4KCk7
CiAKLSAgICBXR1BVU2hhZGVyTW9kdWxlV0dTTERlc2NyaXB0b3IgYmFja2luZ1dHU0xEZXNjcmlw
dG9yIHsKKyAgICBhdXRvIGVudHJ5UG9pbnRzID0gZGVzY3JpcHRvci5oaW50cy5tYXAoW10gKGNv
bnN0IGF1dG8mIGhpbnQpIHsKKyAgICAgICAgcmV0dXJuIGhpbnQua2V5LnV0ZjgoKTsKKyAgICB9
KTsKKworICAgIFZlY3RvcjxXR1BVU2hhZGVyTW9kdWxlQ29tcGlsYXRpb25IaW50RW50cnk+IGhp
bnRzRW50cmllczsKKyAgICBoaW50c0VudHJpZXMucmVzZXJ2ZUluaXRpYWxDYXBhY2l0eShkZXNj
cmlwdG9yLmhpbnRzLnNpemUoKSk7CisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBkZXNjcmlw
dG9yLmhpbnRzLnNpemUoKTsgKytpKSB7CisgICAgICAgIGNvbnN0IGF1dG8mIGhpbnQgPSBkZXNj
cmlwdG9yLmhpbnRzW2ldLnZhbHVlOworICAgICAgICBoaW50c0VudHJpZXMuYXBwZW5kKFdHUFVT
aGFkZXJNb2R1bGVDb21waWxhdGlvbkhpbnRFbnRyeSB7CisgICAgICAgICAgICBudWxscHRyLAor
ICAgICAgICAgICAgZW50cnlQb2ludHNbaV0uZGF0YSgpLCB7CisgICAgICAgICAgICAgICAgbV9j
b252ZXJ0VG9CYWNraW5nQ29udGV4dC0+Y29udmVydFRvQmFja2luZyhoaW50LnBpcGVsaW5lTGF5
b3V0KSwKKyAgICAgICAgICAgIH0sCisgICAgICAgIH0pOworICAgIH0KKworICAgIFdHUFVTaGFk
ZXJNb2R1bGVEZXNjcmlwdG9ySGludHMgYmFja2luZ1NoYWRlck1vZHVsZUhpbnRzIHsKICAgICAg
ICAgewogICAgICAgICAgICAgbnVsbHB0ciwKKyAgICAgICAgICAgIHN0YXRpY19jYXN0PFdHUFVT
VHlwZT4oV0dQVVNUeXBlRXh0ZW5kZWRfU2hhZGVyTW9kdWxlRGVzY3JpcHRvckhpbnRzKSwKKyAg
ICAgICAgfSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8dWludDMyX3Q+KGhpbnRzRW50cmllcy5zaXpl
KCkpLAorICAgICAgICBoaW50c0VudHJpZXMuZGF0YSgpLAorICAgIH07CisKKyAgICBXR1BVU2hh
ZGVyTW9kdWxlV0dTTERlc2NyaXB0b3IgYmFja2luZ1dHU0xEZXNjcmlwdG9yIHsKKyAgICAgICAg
eworICAgICAgICAgICAgJmJhY2tpbmdTaGFkZXJNb2R1bGVIaW50cy5jaGFpbiwKICAgICAgICAg
ICAgIFdHUFVTVHlwZV9TaGFkZXJNb2R1bGVXR1NMRGVzY3JpcHRvciwKICAgICAgICAgfSwKICAg
ICAgICAgc291cmNlLmRhdGEoKSwKQEAgLTI0OCw3ICsyODYsNyBAQCBSZWY8U2hhZGVyTW9kdWxl
PiBEZXZpY2VJbXBsOjpjcmVhdGVTaGFkZXJNb2R1bGUoY29uc3QgU2hhZGVyTW9kdWxlRGVzY3Jp
cHRvciYgZAogfQogCiB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KLWF1dG8gY29udmVydFRvQmFja2lu
Zyhjb25zdCBDb21wdXRlUGlwZWxpbmVEZXNjcmlwdG9yJiBkZXNjcmlwdG9yLCBDb252ZXJ0VG9C
YWNraW5nQ29udGV4dCYgY29udmVydFRvQmFja2luZ0NvbnRleHQsIFQmJiBjYWxsYmFjaykKK3N0
YXRpYyBhdXRvIGNvbnZlcnRUb0JhY2tpbmcoY29uc3QgQ29tcHV0ZVBpcGVsaW5lRGVzY3JpcHRv
ciYgZGVzY3JpcHRvciwgQ29udmVydFRvQmFja2luZ0NvbnRleHQmIGNvbnZlcnRUb0JhY2tpbmdD
b250ZXh0LCBUJiYgY2FsbGJhY2spCiB7CiAgICAgYXV0byBsYWJlbCA9IGRlc2NyaXB0b3IubGFi
ZWwudXRmOCgpOwogCkBAIC0yOTIsNyArMzMwLDcgQEAgUmVmPENvbXB1dGVQaXBlbGluZT4gRGV2
aWNlSW1wbDo6Y3JlYXRlQ29tcHV0ZVBpcGVsaW5lKGNvbnN0IENvbXB1dGVQaXBlbGluZURlc2MK
IH0KIAogdGVtcGxhdGUgPHR5cGVuYW1lIFQ+Ci1hdXRvIGNvbnZlcnRUb0JhY2tpbmcoY29uc3Qg
UmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9yJiBkZXNjcmlwdG9yLCBDb252ZXJ0VG9CYWNraW5nQ29u
dGV4dCYgY29udmVydFRvQmFja2luZ0NvbnRleHQsIFQmJiBjYWxsYmFjaykKK3N0YXRpYyBhdXRv
IGNvbnZlcnRUb0JhY2tpbmcoY29uc3QgUmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9yJiBkZXNjcmlw
dG9yLCBDb252ZXJ0VG9CYWNraW5nQ29udGV4dCYgY29udmVydFRvQmFja2luZ0NvbnRleHQsIFQm
JiBjYWxsYmFjaykKIHsKICAgICBhdXRvIGxhYmVsID0gZGVzY3JpcHRvci5sYWJlbC51dGY4KCk7
CiAKQEAgLTM4NSwxNiArNDIzLDE2IEBAIGF1dG8gY29udmVydFRvQmFja2luZyhjb25zdCBSZW5k
ZXJQaXBlbGluZURlc2NyaXB0b3ImIGRlc2NyaXB0b3IsIENvbnZlcnRUb0JhY2tpCiAgICAgVmVj
dG9yPHN0ZDo6b3B0aW9uYWw8V0dQVUJsZW5kU3RhdGU+PiBibGVuZFN0YXRlczsKICAgICBpZiAo
ZGVzY3JpcHRvci5mcmFnbWVudCkgewogICAgICAgICBibGVuZFN0YXRlcyA9IGRlc2NyaXB0b3Iu
ZnJhZ21lbnQtPnRhcmdldHMubWFwKFsmY29udmVydFRvQmFja2luZ0NvbnRleHRdIChjb25zdCBh
dXRvJiB0YXJnZXQpIC0+IHN0ZDo6b3B0aW9uYWw8V0dQVUJsZW5kU3RhdGU+IHsKLSAgICAgICAg
ICAgIGlmICh0YXJnZXQuYmxlbmQpIHsKKyAgICAgICAgICAgIGlmICh0YXJnZXQgJiYgdGFyZ2V0
LT5ibGVuZCkgewogICAgICAgICAgICAgICAgIHJldHVybiBXR1BVQmxlbmRTdGF0ZSB7CiAgICAg
ICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIGNvbnZlcnRUb0JhY2tp
bmdDb250ZXh0LmNvbnZlcnRUb0JhY2tpbmcodGFyZ2V0LmJsZW5kLT5jb2xvci5vcGVyYXRpb24p
LAotICAgICAgICAgICAgICAgICAgICAgICAgY29udmVydFRvQmFja2luZ0NvbnRleHQuY29udmVy
dFRvQmFja2luZyh0YXJnZXQuYmxlbmQtPmNvbG9yLnNyY0ZhY3RvciksCi0gICAgICAgICAgICAg
ICAgICAgICAgICBjb252ZXJ0VG9CYWNraW5nQ29udGV4dC5jb252ZXJ0VG9CYWNraW5nKHRhcmdl
dC5ibGVuZC0+Y29sb3IuZHN0RmFjdG9yKSwKKyAgICAgICAgICAgICAgICAgICAgICAgIGNvbnZl
cnRUb0JhY2tpbmdDb250ZXh0LmNvbnZlcnRUb0JhY2tpbmcodGFyZ2V0LT5ibGVuZC0+Y29sb3Iu
b3BlcmF0aW9uKSwKKyAgICAgICAgICAgICAgICAgICAgICAgIGNvbnZlcnRUb0JhY2tpbmdDb250
ZXh0LmNvbnZlcnRUb0JhY2tpbmcodGFyZ2V0LT5ibGVuZC0+Y29sb3Iuc3JjRmFjdG9yKSwKKyAg
ICAgICAgICAgICAgICAgICAgICAgIGNvbnZlcnRUb0JhY2tpbmdDb250ZXh0LmNvbnZlcnRUb0Jh
Y2tpbmcodGFyZ2V0LT5ibGVuZC0+Y29sb3IuZHN0RmFjdG9yKSwKICAgICAgICAgICAgICAgICAg
ICAgfSwgewotICAgICAgICAgICAgICAgICAgICAgICAgY29udmVydFRvQmFja2luZ0NvbnRleHQu
Y29udmVydFRvQmFja2luZyh0YXJnZXQuYmxlbmQtPmFscGhhLm9wZXJhdGlvbiksCi0gICAgICAg
ICAgICAgICAgICAgICAgICBjb252ZXJ0VG9CYWNraW5nQ29udGV4dC5jb252ZXJ0VG9CYWNraW5n
KHRhcmdldC5ibGVuZC0+YWxwaGEuc3JjRmFjdG9yKSwKLSAgICAgICAgICAgICAgICAgICAgICAg
IGNvbnZlcnRUb0JhY2tpbmdDb250ZXh0LmNvbnZlcnRUb0JhY2tpbmcodGFyZ2V0LmJsZW5kLT5h
bHBoYS5kc3RGYWN0b3IpLAorICAgICAgICAgICAgICAgICAgICAgICAgY29udmVydFRvQmFja2lu
Z0NvbnRleHQuY29udmVydFRvQmFja2luZyh0YXJnZXQtPmJsZW5kLT5hbHBoYS5vcGVyYXRpb24p
LAorICAgICAgICAgICAgICAgICAgICAgICAgY29udmVydFRvQmFja2luZ0NvbnRleHQuY29udmVy
dFRvQmFja2luZyh0YXJnZXQtPmJsZW5kLT5hbHBoYS5zcmNGYWN0b3IpLAorICAgICAgICAgICAg
ICAgICAgICAgICAgY29udmVydFRvQmFja2luZ0NvbnRleHQuY29udmVydFRvQmFja2luZyh0YXJn
ZXQtPmJsZW5kLT5hbHBoYS5kc3RGYWN0b3IpLAogICAgICAgICAgICAgICAgICAgICB9CiAgICAg
ICAgICAgICAgICAgfTsKICAgICAgICAgICAgIH0gZWxzZQpAQCAtNDA2LDEzICs0NDQsMjEgQEAg
YXV0byBjb252ZXJ0VG9CYWNraW5nKGNvbnN0IFJlbmRlclBpcGVsaW5lRGVzY3JpcHRvciYgZGVz
Y3JpcHRvciwgQ29udmVydFRvQmFja2kKICAgICBpZiAoZGVzY3JpcHRvci5mcmFnbWVudCkgewog
ICAgICAgICBjb2xvclRhcmdldHMucmVzZXJ2ZUluaXRpYWxDYXBhY2l0eShkZXNjcmlwdG9yLmZy
YWdtZW50LT50YXJnZXRzLnNpemUoKSk7CiAgICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwg
ZGVzY3JpcHRvci5mcmFnbWVudC0+dGFyZ2V0cy5zaXplKCk7ICsraSkgewotICAgICAgICAgICAg
Y29uc3QgYXV0byYgdGFyZ2V0ID0gZGVzY3JpcHRvci5mcmFnbWVudC0+dGFyZ2V0c1tpXTsKLSAg
ICAgICAgICAgIGNvbG9yVGFyZ2V0cy51bmNoZWNrZWRBcHBlbmQoV0dQVUNvbG9yVGFyZ2V0U3Rh
dGUgewotICAgICAgICAgICAgICAgIG51bGxwdHIsCi0gICAgICAgICAgICAgICAgY29udmVydFRv
QmFja2luZ0NvbnRleHQuY29udmVydFRvQmFja2luZyh0YXJnZXQuZm9ybWF0KSwKLSAgICAgICAg
ICAgICAgICBibGVuZFN0YXRlc1tpXSA/ICYqYmxlbmRTdGF0ZXNbaV0gOiBudWxscHRyLAotICAg
ICAgICAgICAgICAgIGNvbnZlcnRUb0JhY2tpbmdDb250ZXh0LmNvbnZlcnRDb2xvcldyaXRlRmxh
Z3NUb0JhY2tpbmcodGFyZ2V0LndyaXRlTWFzayksCi0gICAgICAgICAgICB9KTsKKyAgICAgICAg
ICAgIGlmIChjb25zdCBhdXRvJiB0YXJnZXQgPSBkZXNjcmlwdG9yLmZyYWdtZW50LT50YXJnZXRz
W2ldKSB7CisgICAgICAgICAgICAgICAgY29sb3JUYXJnZXRzLnVuY2hlY2tlZEFwcGVuZChXR1BV
Q29sb3JUYXJnZXRTdGF0ZSB7CisgICAgICAgICAgICAgICAgICAgIG51bGxwdHIsCisgICAgICAg
ICAgICAgICAgICAgIGNvbnZlcnRUb0JhY2tpbmdDb250ZXh0LmNvbnZlcnRUb0JhY2tpbmcodGFy
Z2V0LT5mb3JtYXQpLAorICAgICAgICAgICAgICAgICAgICBibGVuZFN0YXRlc1tpXSA/ICYqYmxl
bmRTdGF0ZXNbaV0gOiBudWxscHRyLAorICAgICAgICAgICAgICAgICAgICBjb252ZXJ0VG9CYWNr
aW5nQ29udGV4dC5jb252ZXJ0Q29sb3JXcml0ZUZsYWdzVG9CYWNraW5nKHRhcmdldC0+d3JpdGVN
YXNrKSwKKyAgICAgICAgICAgICAgICB9KTsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAg
ICAgICAgICAgY29sb3JUYXJnZXRzLnVuY2hlY2tlZEFwcGVuZChXR1BVQ29sb3JUYXJnZXRTdGF0
ZSB7CisgICAgICAgICAgICAgICAgICAgIG51bGxwdHIsCisgICAgICAgICAgICAgICAgICAgIFdH
UFVUZXh0dXJlRm9ybWF0X1VuZGVmaW5lZCwKKyAgICAgICAgICAgICAgICAgICAgbnVsbHB0ciwK
KyAgICAgICAgICAgICAgICAgICAgV0dQVU1hcE1vZGVfTm9uZSwKKyAgICAgICAgICAgICAgICB9
KTsKKyAgICAgICAgICAgIH0KICAgICAgICAgfQogICAgIH0KIApAQCAtNTI4LDcgKzU3NCw3IEBA
IFJlZjxSZW5kZXJCdW5kbGVFbmNvZGVyPiBEZXZpY2VJbXBsOjpjcmVhdGVSZW5kZXJCdW5kbGVF
bmNvZGVyKGNvbnN0IFJlbmRlckJ1bmRsCiAgICAgYXV0byBsYWJlbCA9IGRlc2NyaXB0b3IubGFi
ZWwudXRmOCgpOwogCiAgICAgYXV0byBiYWNraW5nQ29sb3JGb3JtYXRzID0gZGVzY3JpcHRvci5j
b2xvckZvcm1hdHMubWFwKFt0aGlzXSAoYXV0byBjb2xvckZvcm1hdCkgewotICAgICAgICByZXR1
cm4gbV9jb252ZXJ0VG9CYWNraW5nQ29udGV4dC0+Y29udmVydFRvQmFja2luZyhjb2xvckZvcm1h
dCk7CisgICAgICAgIHJldHVybiBjb2xvckZvcm1hdCA/IG1fY29udmVydFRvQmFja2luZ0NvbnRl
eHQtPmNvbnZlcnRUb0JhY2tpbmcoKmNvbG9yRm9ybWF0KSA6IFdHUFVUZXh0dXJlRm9ybWF0X1Vu
ZGVmaW5lZDsKICAgICB9KTsKIAogICAgIFdHUFVSZW5kZXJCdW5kbGVFbmNvZGVyRGVzY3JpcHRv
ciBiYWNraW5nRGVzY3JpcHRvciB7CkBAIC01MzgsNiArNTg0LDggQEAgUmVmPFJlbmRlckJ1bmRs
ZUVuY29kZXI+IERldmljZUltcGw6OmNyZWF0ZVJlbmRlckJ1bmRsZUVuY29kZXIoY29uc3QgUmVu
ZGVyQnVuZGwKICAgICAgICAgYmFja2luZ0NvbG9yRm9ybWF0cy5kYXRhKCksCiAgICAgICAgIGRl
c2NyaXB0b3IuZGVwdGhTdGVuY2lsRm9ybWF0ID8gbV9jb252ZXJ0VG9CYWNraW5nQ29udGV4dC0+
Y29udmVydFRvQmFja2luZygqZGVzY3JpcHRvci5kZXB0aFN0ZW5jaWxGb3JtYXQpIDogV0dQVVRl
eHR1cmVGb3JtYXRfVW5kZWZpbmVkLAogICAgICAgICBkZXNjcmlwdG9yLnNhbXBsZUNvdW50LAor
ICAgICAgICBkZXNjcmlwdG9yLmRlcHRoUmVhZE9ubHksCisgICAgICAgIGRlc2NyaXB0b3Iuc3Rl
bmNpbFJlYWRPbmx5LAogICAgIH07CiAKICAgICByZXR1cm4gUmVuZGVyQnVuZGxlRW5jb2Rlcklt
cGw6OmNyZWF0ZSh3Z3B1RGV2aWNlQ3JlYXRlUmVuZGVyQnVuZGxlRW5jb2RlcihtX2JhY2tpbmcs
ICZiYWNraW5nRGVzY3JpcHRvciksIG1fY29udmVydFRvQmFja2luZ0NvbnRleHQpOwpAQCAtNTQ3
LDE3ICs1OTUsMTMgQEAgUmVmPFF1ZXJ5U2V0PiBEZXZpY2VJbXBsOjpjcmVhdGVRdWVyeVNldChj
b25zdCBRdWVyeVNldERlc2NyaXB0b3ImIGRlc2NyaXB0b3IpCiB7CiAgICAgYXV0byBsYWJlbCA9
IGRlc2NyaXB0b3IubGFiZWwudXRmOCgpOwogCi0gICAgYXV0byBiYWNraW5nUGlwZWxpbmVTdGF0
aXN0aWNzID0gZGVzY3JpcHRvci5waXBlbGluZVN0YXRpc3RpY3MubWFwKFt0aGlzXSAoYXV0byBw
aXBlbGluZVN0YXRpc3RpYykgewotICAgICAgICByZXR1cm4gbV9jb252ZXJ0VG9CYWNraW5nQ29u
dGV4dC0+Y29udmVydFRvQmFja2luZyhwaXBlbGluZVN0YXRpc3RpYyk7Ci0gICAgfSk7Ci0KICAg
ICBXR1BVUXVlcnlTZXREZXNjcmlwdG9yIGJhY2tpbmdEZXNjcmlwdG9yIHsKICAgICAgICAgbnVs
bHB0ciwKICAgICAgICAgbGFiZWwuZGF0YSgpLAogICAgICAgICBtX2NvbnZlcnRUb0JhY2tpbmdD
b250ZXh0LT5jb252ZXJ0VG9CYWNraW5nKGRlc2NyaXB0b3IudHlwZSksCiAgICAgICAgIGRlc2Ny
aXB0b3IuY291bnQsCi0gICAgICAgIGJhY2tpbmdQaXBlbGluZVN0YXRpc3RpY3MuZGF0YSgpLAot
ICAgICAgICBzdGF0aWNfY2FzdDx1aW50MzJfdD4oYmFja2luZ1BpcGVsaW5lU3RhdGlzdGljcy5z
aXplKCkpLAorICAgICAgICBudWxscHRyLAorICAgICAgICAwLAogICAgIH07CiAKICAgICByZXR1
cm4gUXVlcnlTZXRJbXBsOjpjcmVhdGUod2dwdURldmljZUNyZWF0ZVF1ZXJ5U2V0KG1fYmFja2lu
ZywgJmJhY2tpbmdEZXNjcmlwdG9yKSwgbV9jb252ZXJ0VG9CYWNraW5nQ29udGV4dCk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL2dyYXBoaWNzL1dlYkdQVS9JbXBsL1dlYkdQ
VUltcGwuY3BwIGIvU291cmNlL1dlYkNvcmUvUEFML3BhbC9ncmFwaGljcy9XZWJHUFUvSW1wbC9X
ZWJHUFVJbXBsLmNwcAppbmRleCA1ODFkOTI4MDE3MjhjNzI0MzJlNzBiNDNkYmIxY2I5NzUwZDlm
M2YyLi5lNmFmNjlkZTZjYjhlNmY3M2U5NzY1ODI0MjRiZWU5ZDI4ZTUwNmUyIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL2dyYXBoaWNzL1dlYkdQVS9JbXBsL1dlYkdQVUltcGwu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvZ3JhcGhpY3MvV2ViR1BVL0ltcGwvV2Vi
R1BVSW1wbC5jcHAKQEAgLTc2LDcgKzc2LDcgQEAgdm9pZCBHUFVJbXBsOjpyZXF1ZXN0QWRhcHRl
cihjb25zdCBSZXF1ZXN0QWRhcHRlck9wdGlvbnMmIG9wdGlvbnMsIFdURjo6RnVuY3Rpb24KICAg
ICBXR1BVUmVxdWVzdEFkYXB0ZXJPcHRpb25zIGJhY2tpbmdPcHRpb25zIHsKICAgICAgICAgbnVs
bHB0ciwKICAgICAgICAgbnVsbHB0ciwKLSAgICAgICAgb3B0aW9ucy5wb3dlclByZWZlcmVuY2Ug
PyBtX2NvbnZlcnRUb0JhY2tpbmdDb250ZXh0LT5jb252ZXJ0VG9CYWNraW5nKCpvcHRpb25zLnBv
d2VyUHJlZmVyZW5jZSkgOiBzdGF0aWNfY2FzdDxXR1BVUG93ZXJQcmVmZXJlbmNlPihXR1BVUG93
ZXJQcmVmZXJlbmNlX05vUHJlZmVyZW5jZSksCisgICAgICAgIG9wdGlvbnMucG93ZXJQcmVmZXJl
bmNlID8gbV9jb252ZXJ0VG9CYWNraW5nQ29udGV4dC0+Y29udmVydFRvQmFja2luZygqb3B0aW9u
cy5wb3dlclByZWZlcmVuY2UpIDogc3RhdGljX2Nhc3Q8V0dQVVBvd2VyUHJlZmVyZW5jZT4oV0dQ
VVBvd2VyUHJlZmVyZW5jZV9VbmRlZmluZWQpLAogICAgICAgICBvcHRpb25zLmZvcmNlRmFsbGJh
Y2tBZGFwdGVyLAogICAgIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwv
Z3JhcGhpY3MvV2ViR1BVL0ltcGwvV2ViR1BVUmVuZGVyUGFzc0VuY29kZXJJbXBsLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL1BBTC9wYWwvZ3JhcGhpY3MvV2ViR1BVL0ltcGwvV2ViR1BVUmVuZGVyUGFz
c0VuY29kZXJJbXBsLmNwcAppbmRleCBkMmZlNWRmNTI2Y2MzNjBmN2EzZWQyMzNlMzJmMzRjOTNk
MTg2NjE2Li5mNTc3NGQ3ZGI0ZmI4YzE0ZGMxM2Q1MTdhOWJiODc5NzI5OTE2Y2U1IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL2dyYXBoaWNzL1dlYkdQVS9JbXBsL1dlYkdQVVJl
bmRlclBhc3NFbmNvZGVySW1wbC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvUEFML3BhbC9ncmFw
aGljcy9XZWJHUFUvSW1wbC9XZWJHUFVSZW5kZXJQYXNzRW5jb2RlckltcGwuY3BwCkBAIC0xNTYs
MTYgKzE1Niw2IEBAIHZvaWQgUmVuZGVyUGFzc0VuY29kZXJJbXBsOjplbmRPY2NsdXNpb25RdWVy
eSgpCiAgICAgd2dwdVJlbmRlclBhc3NFbmNvZGVyRW5kT2NjbHVzaW9uUXVlcnkobV9iYWNraW5n
KTsKIH0KIAotdm9pZCBSZW5kZXJQYXNzRW5jb2RlckltcGw6OmJlZ2luUGlwZWxpbmVTdGF0aXN0
aWNzUXVlcnkoY29uc3QgUXVlcnlTZXQmIHF1ZXJ5U2V0LCBTaXplMzIgcXVlcnlJbmRleCkKLXsK
LSAgICB3Z3B1UmVuZGVyUGFzc0VuY29kZXJCZWdpblBpcGVsaW5lU3RhdGlzdGljc1F1ZXJ5KG1f
YmFja2luZywgbV9jb252ZXJ0VG9CYWNraW5nQ29udGV4dC0+Y29udmVydFRvQmFja2luZyhxdWVy
eVNldCksIHF1ZXJ5SW5kZXgpOwotfQotCi12b2lkIFJlbmRlclBhc3NFbmNvZGVySW1wbDo6ZW5k
UGlwZWxpbmVTdGF0aXN0aWNzUXVlcnkoKQotewotICAgIHdncHVSZW5kZXJQYXNzRW5jb2RlckVu
ZFBpcGVsaW5lU3RhdGlzdGljc1F1ZXJ5KG1fYmFja2luZyk7Ci19Ci0KIHZvaWQgUmVuZGVyUGFz
c0VuY29kZXJJbXBsOjpleGVjdXRlQnVuZGxlcyhWZWN0b3I8c3RkOjpyZWZlcmVuY2Vfd3JhcHBl
cjxSZW5kZXJCdW5kbGU+PiYmIHJlbmRlckJ1bmRsZXMpCiB7CiAgICAgYXV0byBiYWNraW5nQnVu
ZGxlcyA9IHJlbmRlckJ1bmRsZXMubWFwKFt0aGlzXSAoYXV0byByZW5kZXJCdW5kbGUpIHsKQEAg
LTE3NSw3ICsxNjUsNyBAQCB2b2lkIFJlbmRlclBhc3NFbmNvZGVySW1wbDo6ZXhlY3V0ZUJ1bmRs
ZXMoVmVjdG9yPHN0ZDo6cmVmZXJlbmNlX3dyYXBwZXI8UmVuZGVyQgogICAgIHdncHVSZW5kZXJQ
YXNzRW5jb2RlckV4ZWN1dGVCdW5kbGVzKG1fYmFja2luZywgYmFja2luZ0J1bmRsZXMuc2l6ZSgp
LCBiYWNraW5nQnVuZGxlcy5kYXRhKCkpOwogfQogCi12b2lkIFJlbmRlclBhc3NFbmNvZGVySW1w
bDo6ZW5kUGFzcygpCit2b2lkIFJlbmRlclBhc3NFbmNvZGVySW1wbDo6ZW5kKCkKIHsKICAgICB3
Z3B1UmVuZGVyUGFzc0VuY29kZXJFbmRQYXNzKG1fYmFja2luZyk7CiB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9QQUwvcGFsL2dyYXBoaWNzL1dlYkdQVS9JbXBsL1dlYkdQVVJlbmRlclBh
c3NFbmNvZGVySW1wbC5oIGIvU291cmNlL1dlYkNvcmUvUEFML3BhbC9ncmFwaGljcy9XZWJHUFUv
SW1wbC9XZWJHUFVSZW5kZXJQYXNzRW5jb2RlckltcGwuaAppbmRleCAzZWU5MDcxNDU4Mjk3ZWJh
OWU3MDk4MTdhNjIyOGJmMmUyZWVjZjAyLi4zNGM1MDgyYWM1ODE4NTY3MGI2NmQ2NThkOTBiMjc3
MzQ5ZDgzN2RiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL2dyYXBoaWNzL1dl
YkdQVS9JbXBsL1dlYkdQVVJlbmRlclBhc3NFbmNvZGVySW1wbC5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL1BBTC9wYWwvZ3JhcGhpY3MvV2ViR1BVL0ltcGwvV2ViR1BVUmVuZGVyUGFzc0VuY29kZXJJ
bXBsLmgKQEAgLTk3LDExICs5Nyw4IEBAIHByaXZhdGU6CiAgICAgdm9pZCBiZWdpbk9jY2x1c2lv
blF1ZXJ5KFNpemUzMiBxdWVyeUluZGV4KSBmaW5hbDsKICAgICB2b2lkIGVuZE9jY2x1c2lvblF1
ZXJ5KCkgZmluYWw7CiAKLSAgICB2b2lkIGJlZ2luUGlwZWxpbmVTdGF0aXN0aWNzUXVlcnkoY29u
c3QgUXVlcnlTZXQmLCBTaXplMzIgcXVlcnlJbmRleCkgZmluYWw7Ci0gICAgdm9pZCBlbmRQaXBl
bGluZVN0YXRpc3RpY3NRdWVyeSgpIGZpbmFsOwotCiAgICAgdm9pZCBleGVjdXRlQnVuZGxlcyhW
ZWN0b3I8c3RkOjpyZWZlcmVuY2Vfd3JhcHBlcjxSZW5kZXJCdW5kbGU+PiYmKSBmaW5hbDsKLSAg
ICB2b2lkIGVuZFBhc3MoKSBmaW5hbDsKKyAgICB2b2lkIGVuZCgpIGZpbmFsOwogCiAgICAgdm9p
ZCBzZXRMYWJlbEludGVybmFsKGNvbnN0IFN0cmluZyYpIGZpbmFsOwogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9QQUwvcGFsL2dyYXBoaWNzL1dlYkdQVS9XZWJHUFVCdWZmZXIuaCBiL1Nv
dXJjZS9XZWJDb3JlL1BBTC9wYWwvZ3JhcGhpY3MvV2ViR1BVL1dlYkdQVUJ1ZmZlci5oCmluZGV4
IDNmYWU5NGE0YWJhZmNlYTM5NjAzYzQ4NmQ2YTBhNjdiOGI4ZGU5YWUuLmY3OGMzNDc0MDgzNzUx
OTEyODc4NjNkZmNkYzUxYWMxODc3MzcxMWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1BB
TC9wYWwvZ3JhcGhpY3MvV2ViR1BVL1dlYkdQVUJ1ZmZlci5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L1BBTC9wYWwvZ3JhcGhpY3MvV2ViR1BVL1dlYkdQVUJ1ZmZlci5oCkBAIC00OCwxMiArNDgsMTIg
QEAgcHVibGljOgogICAgICAgICBzZXRMYWJlbEludGVybmFsKG1fbGFiZWwpOwogICAgIH0KIAot
ICAgIHZpcnR1YWwgdm9pZCBtYXBBc3luYyhNYXBNb2RlRmxhZ3MsIHN0ZDo6b3B0aW9uYWw8U2l6
ZTY0PiBvZmZzZXQsIHN0ZDo6b3B0aW9uYWw8U2l6ZTY0PiwgV1RGOjpGdW5jdGlvbjx2b2lkKCk+
JiYpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgbWFwQXN5bmMoTWFwTW9kZUZsYWdzLCBTaXplNjQg
b2Zmc2V0LCBzdGQ6Om9wdGlvbmFsPFNpemU2ND4sIFdURjo6RnVuY3Rpb248dm9pZCgpPiYmKSA9
IDA7CiAgICAgc3RydWN0IE1hcHBlZFJhbmdlIHsKICAgICAgICAgdm9pZCogc291cmNlIHsgbnVs
bHB0ciB9OwogICAgICAgICBzaXplX3QgYnl0ZUxlbmd0aCB7IDAgfTsKICAgICB9OwotICAgIHZp
cnR1YWwgTWFwcGVkUmFuZ2UgZ2V0TWFwcGVkUmFuZ2Uoc3RkOjpvcHRpb25hbDxTaXplNjQ+IG9m
ZnNldCwgc3RkOjpvcHRpb25hbDxTaXplNjQ+KSA9IDA7CisgICAgdmlydHVhbCBNYXBwZWRSYW5n
ZSBnZXRNYXBwZWRSYW5nZShTaXplNjQgb2Zmc2V0LCBzdGQ6Om9wdGlvbmFsPFNpemU2ND4pID0g
MDsKICAgICB2aXJ0dWFsIHZvaWQgdW5tYXAoKSA9IDA7CiAKICAgICB2aXJ0dWFsIHZvaWQgZGVz
dHJveSgpID0gMDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvZ3JhcGhpY3Mv
V2ViR1BVL1dlYkdQVUNhbnZhc0NvbmZpZ3VyYXRpb24uaCBiL1NvdXJjZS9XZWJDb3JlL1BBTC9w
YWwvZ3JhcGhpY3MvV2ViR1BVL1dlYkdQVUNhbnZhc0NvbmZpZ3VyYXRpb24uaAppbmRleCBhZjkz
N2YwOWM5YTAxZDRmNTg1MzEyOWRkYjEzZGQ5NDMwMGI5M2VjLi5mZWRiMjQxNmNjMmE4ZTEzNGUx
OWRjNDhmZWRiMDIxOTM0Yzc0OWZlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFs
L2dyYXBoaWNzL1dlYkdQVS9XZWJHUFVDYW52YXNDb25maWd1cmF0aW9uLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvUEFML3BhbC9ncmFwaGljcy9XZWJHUFUvV2ViR1BVQ2FudmFzQ29uZmlndXJhdGlv
bi5oCkBAIC00Miw2ICs0Miw3IEBAIHN0cnVjdCBDYW52YXNDb25maWd1cmF0aW9uIHsKICAgICBE
ZXZpY2UmIGRldmljZTsKICAgICBUZXh0dXJlRm9ybWF0IGZvcm1hdCB7IFRleHR1cmVGb3JtYXQ6
OlI4dW5vcm0gfTsKICAgICBUZXh0dXJlVXNhZ2VGbGFncyB1c2FnZSB7IFRleHR1cmVVc2FnZTo6
UmVuZGVyQXR0YWNobWVudCB9OworICAgIFZlY3RvcjxUZXh0dXJlRm9ybWF0PiB2aWV3Rm9ybWF0
czsKICAgICBQcmVkZWZpbmVkQ29sb3JTcGFjZSBjb2xvclNwYWNlIHsgUHJlZGVmaW5lZENvbG9y
U3BhY2U6OlNSR0IgfTsKICAgICBDYW52YXNDb21wb3NpdGluZ0FscGhhTW9kZSBjb21wb3NpdGlu
Z0FscGhhTW9kZSB7IENhbnZhc0NvbXBvc2l0aW5nQWxwaGFNb2RlOjpPcGFxdWUgfTsKICAgICBz
dGQ6Om9wdGlvbmFsPEV4dGVudDNEPiBzaXplOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
UEFML3BhbC9ncmFwaGljcy9XZWJHUFUvV2ViR1BVQ29tbWFuZEVuY29kZXIuaCBiL1NvdXJjZS9X
ZWJDb3JlL1BBTC9wYWwvZ3JhcGhpY3MvV2ViR1BVL1dlYkdQVUNvbW1hbmRFbmNvZGVyLmgKaW5k
ZXggODgyNzk0OTY4OTNjOGVhODRjZmQ5YzBhN2NkNmNhZWUxMTY0Y2I3Zi4uYjQ3MWEzMDM5OGNj
ODczZTRlNjZkMjkyYzY3Y2ZiZmZiNzNiNjg4OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
UEFML3BhbC9ncmFwaGljcy9XZWJHUFUvV2ViR1BVQ29tbWFuZEVuY29kZXIuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9QQUwvcGFsL2dyYXBoaWNzL1dlYkdQVS9XZWJHUFVDb21tYW5kRW5jb2Rlci5o
CkBAIC04MiwxMCArODIsMTAgQEAgcHVibGljOgogICAgICAgICBjb25zdCBJbWFnZUNvcHlUZXh0
dXJlJiBkZXN0aW5hdGlvbiwKICAgICAgICAgY29uc3QgRXh0ZW50M0QmIGNvcHlTaXplKSA9IDA7
CiAKLSAgICB2aXJ0dWFsIHZvaWQgZmlsbEJ1ZmZlcigKLSAgICAgICAgY29uc3QgQnVmZmVyJiBk
ZXN0aW5hdGlvbiwKLSAgICAgICAgU2l6ZTY0IGRlc3RpbmF0aW9uT2Zmc2V0LAotICAgICAgICBT
aXplNjQpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgY2xlYXJCdWZmZXIoCisgICAgICAgIGNvbnN0
IEJ1ZmZlciYsCisgICAgICAgIFNpemU2NCBvZmZzZXQgPSAwLAorICAgICAgICBzdGQ6Om9wdGlv
bmFsPFNpemU2ND4gPSBzdGQ6Om51bGxvcHQpID0gMDsKIAogICAgIHZpcnR1YWwgdm9pZCBwdXNo
RGVidWdHcm91cChTdHJpbmcmJiBncm91cExhYmVsKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIHBv
cERlYnVnR3JvdXAoKSA9IDA7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL2dy
YXBoaWNzL1dlYkdQVS9XZWJHUFVDb21wdXRlUGFzc0VuY29kZXIuaCBiL1NvdXJjZS9XZWJDb3Jl
L1BBTC9wYWwvZ3JhcGhpY3MvV2ViR1BVL1dlYkdQVUNvbXB1dGVQYXNzRW5jb2Rlci5oCmluZGV4
IGY0OWU3OGZiYWQ5MTYzY2NlZWQ4ZjgwODg0MTU3OGM5ZjRkYTViOTIuLmYyZjY0YmQwYjFlMmQ3
ZDZlMDk2ZTExMjc3MDJiMjdlM2RkYzA1ODcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1BB
TC9wYWwvZ3JhcGhpY3MvV2ViR1BVL1dlYkdQVUNvbXB1dGVQYXNzRW5jb2Rlci5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL1BBTC9wYWwvZ3JhcGhpY3MvV2ViR1BVL1dlYkdQVUNvbXB1dGVQYXNzRW5j
b2Rlci5oCkBAIC01MywxMyArNTMsMTAgQEAgcHVibGljOgogICAgIH0KIAogICAgIHZpcnR1YWwg
dm9pZCBzZXRQaXBlbGluZShjb25zdCBDb21wdXRlUGlwZWxpbmUmKSA9IDA7Ci0gICAgdmlydHVh
bCB2b2lkIGRpc3BhdGNoKFNpemUzMiB4LCBzdGQ6Om9wdGlvbmFsPFNpemUzMj4geSwgc3RkOjpv
cHRpb25hbDxTaXplMzI+KSA9IDA7CisgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoKFNpemUzMiB3
b3JrZ3JvdXBDb3VudFgsIFNpemUzMiB3b3JrZ3JvdXBDb3VudFkgPSAxLCBTaXplMzIgd29ya2dy
b3VwQ291bnRaID0gMSkgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaEluZGlyZWN0KGNv
bnN0IEJ1ZmZlciYgaW5kaXJlY3RCdWZmZXIsIFNpemU2NCBpbmRpcmVjdE9mZnNldCkgPSAwOwog
Ci0gICAgdmlydHVhbCB2b2lkIGJlZ2luUGlwZWxpbmVTdGF0aXN0aWNzUXVlcnkoY29uc3QgUXVl
cnlTZXQmLCBTaXplMzIgcXVlcnlJbmRleCkgPSAwOwotICAgIHZpcnR1YWwgdm9pZCBlbmRQaXBl
bGluZVN0YXRpc3RpY3NRdWVyeSgpID0gMDsKLQotICAgIHZpcnR1YWwgdm9pZCBlbmRQYXNzKCkg
PSAwOworICAgIHZpcnR1YWwgdm9pZCBlbmQoKSA9IDA7CiAKICAgICB2aXJ0dWFsIHZvaWQgc2V0
QmluZEdyb3VwKEluZGV4MzIsIGNvbnN0IEJpbmRHcm91cCYsCiAgICAgICAgIHN0ZDo6b3B0aW9u
YWw8VmVjdG9yPEJ1ZmZlckR5bmFtaWNPZmZzZXQ+PiYmKSA9IDA7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9QQUwvcGFsL2dyYXBoaWNzL1dlYkdQVS9XZWJHUFVGZWF0dXJlTmFtZS5oIGIv
U291cmNlL1dlYkNvcmUvUEFML3BhbC9ncmFwaGljcy9XZWJHUFUvV2ViR1BVRmVhdHVyZU5hbWUu
aAppbmRleCA2YTMzNTg5ZDg5NDlmYTg0NzZjMTRkYjdmZDM1ODQ5YWZmNzNmMzk1Li5mMWIzNTFi
OWE0YTQ3Njg3ZTA1ODVlN2ViNTg2ZTcxNDgxMTFmZGE1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9QQUwvcGFsL2dyYXBoaWNzL1dlYkdQVS9XZWJHUFVGZWF0dXJlTmFtZS5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL1BBTC9wYWwvZ3JhcGhpY3MvV2ViR1BVL1dlYkdQVUZlYXR1cmVOYW1lLmgK
QEAgLTM0LDcgKzM0LDYgQEAgZW51bSBjbGFzcyBGZWF0dXJlTmFtZSA6IHVpbnQ4X3QgewogICAg
IERlcHRoQ2xpcENvbnRyb2wsCiAgICAgRGVwdGgyNHVub3JtU3RlbmNpbDgsCiAgICAgRGVwdGgz
MmZsb2F0U3RlbmNpbDgsCi0gICAgUGlwZWxpbmVTdGF0aXN0aWNzUXVlcnksCiAgICAgVGV4dHVy
ZUNvbXByZXNzaW9uQmMsCiAgICAgVGV4dHVyZUNvbXByZXNzaW9uRXRjMiwKICAgICBUZXh0dXJl
Q29tcHJlc3Npb25Bc3RjLApAQCAtNTIsNyArNTEsNiBAQCB0ZW1wbGF0ZTw+IHN0cnVjdCBFbnVt
VHJhaXRzPFBBTDo6V2ViR1BVOjpGZWF0dXJlTmFtZT4gewogICAgICAgICBQQUw6OldlYkdQVTo6
RmVhdHVyZU5hbWU6OkRlcHRoQ2xpcENvbnRyb2wsCiAgICAgICAgIFBBTDo6V2ViR1BVOjpGZWF0
dXJlTmFtZTo6RGVwdGgyNHVub3JtU3RlbmNpbDgsCiAgICAgICAgIFBBTDo6V2ViR1BVOjpGZWF0
dXJlTmFtZTo6RGVwdGgzMmZsb2F0U3RlbmNpbDgsCi0gICAgICAgIFBBTDo6V2ViR1BVOjpGZWF0
dXJlTmFtZTo6UGlwZWxpbmVTdGF0aXN0aWNzUXVlcnksCiAgICAgICAgIFBBTDo6V2ViR1BVOjpG
ZWF0dXJlTmFtZTo6VGV4dHVyZUNvbXByZXNzaW9uQmMsCiAgICAgICAgIFBBTDo6V2ViR1BVOjpG
ZWF0dXJlTmFtZTo6VGV4dHVyZUNvbXByZXNzaW9uRXRjMiwKICAgICAgICAgUEFMOjpXZWJHUFU6
OkZlYXR1cmVOYW1lOjpUZXh0dXJlQ29tcHJlc3Npb25Bc3RjLApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvUEFML3BhbC9ncmFwaGljcy9XZWJHUFUvV2ViR1BVRnJhZ21lbnRTdGF0ZS5oIGIv
U291cmNlL1dlYkNvcmUvUEFML3BhbC9ncmFwaGljcy9XZWJHUFUvV2ViR1BVRnJhZ21lbnRTdGF0
ZS5oCmluZGV4IDhhNzBmMDkyOWEwN2NjMTRkNjNiMmE1MDU3ODY5N2U3YzA2YmRjNTUuLmMyMjk1
NGUwNzE0YzZkMjliYzBjZjZhOGMzYjU3ZTRlYmE0MDVlNzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL1BBTC9wYWwvZ3JhcGhpY3MvV2ViR1BVL1dlYkdQVUZyYWdtZW50U3RhdGUuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL2dyYXBoaWNzL1dlYkdQVS9XZWJHUFVGcmFnbWVudFN0
YXRlLmgKQEAgLTI3LDEyICsyNywxMyBAQAogCiAjaW5jbHVkZSAiV2ViR1BVQ29sb3JUYXJnZXRT
dGF0ZS5oIgogI2luY2x1ZGUgIldlYkdQVVByb2dyYW1tYWJsZVN0YWdlLmgiCisjaW5jbHVkZSA8
b3B0aW9uYWw+CiAjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgogCiBuYW1lc3BhY2UgUEFMOjpXZWJH
UFUgewogCiBzdHJ1Y3QgRnJhZ21lbnRTdGF0ZSA6IHB1YmxpYyBQcm9ncmFtbWFibGVTdGFnZSB7
Ci0gICAgVmVjdG9yPENvbG9yVGFyZ2V0U3RhdGU+IHRhcmdldHM7CisgICAgVmVjdG9yPHN0ZDo6
b3B0aW9uYWw8Q29sb3JUYXJnZXRTdGF0ZT4+IHRhcmdldHM7CiB9OwogCiB9IC8vIG5hbWVzcGFj
ZSBQQUw6OldlYkdQVQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvUEFML3BhbC9ncmFwaGlj
cy9XZWJHUFUvV2ViR1BVSW1hZ2VDb3B5RXh0ZXJuYWxJbWFnZS5oIGIvU291cmNlL1dlYkNvcmUv
UEFML3BhbC9ncmFwaGljcy9XZWJHUFUvV2ViR1BVSW1hZ2VDb3B5RXh0ZXJuYWxJbWFnZS5oCmlu
ZGV4IDk1NWYwOTdkY2YwMGQ0MDFkMDA5NjA3ODBmYTNiMjY2OGNlNWY0YTcuLjA1NzEyZDVjMjAw
MDFmZjYwMDBlOGY2MTlmYmVmMzE1YmU0N2EyNTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L1BBTC9wYWwvZ3JhcGhpY3MvV2ViR1BVL1dlYkdQVUltYWdlQ29weUV4dGVybmFsSW1hZ2UuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL2dyYXBoaWNzL1dlYkdQVS9XZWJHUFVJbWFnZUNv
cHlFeHRlcm5hbEltYWdlLmgKQEAgLTM0LDYgKzM0LDcgQEAgbmFtZXNwYWNlIFBBTDo6V2ViR1BV
IHsKIHN0cnVjdCBJbWFnZUNvcHlFeHRlcm5hbEltYWdlIHsKICAgICAvLyBGSVhNRTogSGFuZGxl
IHRoZSBzb3VyY2UuCiAgICAgc3RkOjpvcHRpb25hbDxPcmlnaW4yRD4gb3JpZ2luOworICAgIGJv
b2wgZmxpcFkgeyBmYWxzZSB9OwogfTsKIAogfSAvLyBuYW1lc3BhY2UgUEFMOjpXZWJHUFUKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvZ3JhcGhpY3MvV2ViR1BVL1dlYkdQVUxv
YWRPcC5oIGIvU291cmNlL1dlYkNvcmUvUEFML3BhbC9ncmFwaGljcy9XZWJHUFUvV2ViR1BVTG9h
ZE9wLmgKaW5kZXggZGM4MjYwZDczMzBkNjhkODQ4NWVhNzY5ZjJkMGVjMGVhNTkwMTQxYi4uYjBm
ODhhOTJhNjU1ZmZmZGQyMmVmNDYzMDU3NTdjNjE2ZmJiYWQ5ZSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvUEFML3BhbC9ncmFwaGljcy9XZWJHUFUvV2ViR1BVTG9hZE9wLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvUEFML3BhbC9ncmFwaGljcy9XZWJHUFUvV2ViR1BVTG9hZE9wLmgKQEAgLTMy
LDYgKzMyLDcgQEAgbmFtZXNwYWNlIFBBTDo6V2ViR1BVIHsKIAogZW51bSBjbGFzcyBMb2FkT3Ag
OiB1aW50OF90IHsKICAgICBMb2FkLAorICAgIENsZWFyLAogfTsKIAogfSAvLyBuYW1lc3BhY2Ug
UEFMOjpXZWJHUFUKQEAgLTQxLDcgKzQyLDggQEAgbmFtZXNwYWNlIFdURiB7CiB0ZW1wbGF0ZTw+
IHN0cnVjdCBFbnVtVHJhaXRzPFBBTDo6V2ViR1BVOjpMb2FkT3A+IHsKICAgICB1c2luZyB2YWx1
ZXMgPSBFbnVtVmFsdWVzPAogICAgICAgICBQQUw6OldlYkdQVTo6TG9hZE9wLAotICAgICAgICBQ
QUw6OldlYkdQVTo6TG9hZE9wOjpMb2FkCisgICAgICAgIFBBTDo6V2ViR1BVOjpMb2FkT3A6Okxv
YWQsCisgICAgICAgIFBBTDo6V2ViR1BVOjpMb2FkT3A6OkNsZWFyCiAgICAgPjsKIH07CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvZ3JhcGhpY3MvV2ViR1BVL1dlYkdQVVBp
cGVsaW5lU3RhdGlzdGljTmFtZS5oIGIvU291cmNlL1dlYkNvcmUvUEFML3BhbC9ncmFwaGljcy9X
ZWJHUFUvV2ViR1BVUGlwZWxpbmVTdGF0aXN0aWNOYW1lLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IGJmOTNmNjc5MDA0YWRjNjAzMDc1OWU1ZWMzOTM3OGFkZDVkOTRjNmIuLjAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUv
UEFML3BhbC9ncmFwaGljcy9XZWJHUFUvV2ViR1BVUGlwZWxpbmVTdGF0aXN0aWNOYW1lLmgKKysr
IC9kZXYvbnVsbApAQCAtMSw1NiArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDIxIEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJ
UycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9S
UwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BF
Q0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwot
ICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0g
KiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI3ByYWdtYSBvbmNlCi0K
LSNpbmNsdWRlIDxjc3RkaW50PgotI2luY2x1ZGUgPHd0Zi9FbnVtVHJhaXRzLmg+Ci0KLW5hbWVz
cGFjZSBQQUw6OldlYkdQVSB7Ci0KLWVudW0gY2xhc3MgUGlwZWxpbmVTdGF0aXN0aWNOYW1lIDog
dWludDhfdCB7Ci0gICAgVmVydGV4U2hhZGVySW52b2NhdGlvbnMsCi0gICAgQ2xpcHBlckludm9j
YXRpb25zLAotICAgIENsaXBwZXJQcmltaXRpdmVzT3V0LAotICAgIEZyYWdtZW50U2hhZGVySW52
b2NhdGlvbnMsCi0gICAgQ29tcHV0ZVNoYWRlckludm9jYXRpb25zLAotfTsKLQotfSAvLyBuYW1l
c3BhY2UgUEFMOjpXZWJHUFUKLQotbmFtZXNwYWNlIFdURiB7Ci0KLXRlbXBsYXRlPD4gc3RydWN0
IEVudW1UcmFpdHM8UEFMOjpXZWJHUFU6OlBpcGVsaW5lU3RhdGlzdGljTmFtZT4gewotICAgIHVz
aW5nIHZhbHVlcyA9IEVudW1WYWx1ZXM8Ci0gICAgICAgIFBBTDo6V2ViR1BVOjpQaXBlbGluZVN0
YXRpc3RpY05hbWUsCi0gICAgICAgIFBBTDo6V2ViR1BVOjpQaXBlbGluZVN0YXRpc3RpY05hbWU6
OlZlcnRleFNoYWRlckludm9jYXRpb25zLAotICAgICAgICBQQUw6OldlYkdQVTo6UGlwZWxpbmVT
dGF0aXN0aWNOYW1lOjpDbGlwcGVySW52b2NhdGlvbnMsCi0gICAgICAgIFBBTDo6V2ViR1BVOjpQ
aXBlbGluZVN0YXRpc3RpY05hbWU6OkNsaXBwZXJQcmltaXRpdmVzT3V0LAotICAgICAgICBQQUw6
OldlYkdQVTo6UGlwZWxpbmVTdGF0aXN0aWNOYW1lOjpGcmFnbWVudFNoYWRlckludm9jYXRpb25z
LAotICAgICAgICBQQUw6OldlYkdQVTo6UGlwZWxpbmVTdGF0aXN0aWNOYW1lOjpDb21wdXRlU2hh
ZGVySW52b2NhdGlvbnMKLSAgICA+OwotfTsKLQotfSAvLyBuYW1lc3BhY2UgV1RGCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL2dyYXBoaWNzL1dlYkdQVS9XZWJHUFVRdWVyeVNl
dERlc2NyaXB0b3IuaCBiL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvZ3JhcGhpY3MvV2ViR1BVL1dl
YkdQVVF1ZXJ5U2V0RGVzY3JpcHRvci5oCmluZGV4IDg3OTEwOTA3Mjc1NjQ2MmJhZWMxMWY0Nzhk
ZDQ0NDU2ZjA5NTVmZDcuLjFhNTVjYTc3YmJkZmMwZDFmYmU2Yjk3YjU5MzIyNWMyMTQ5NjEwOGIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvZ3JhcGhpY3MvV2ViR1BVL1dlYkdQ
VVF1ZXJ5U2V0RGVzY3JpcHRvci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvZ3JhcGhp
Y3MvV2ViR1BVL1dlYkdQVVF1ZXJ5U2V0RGVzY3JpcHRvci5oCkBAIC0yNyw3ICsyNyw2IEBACiAK
ICNpbmNsdWRlICJXZWJHUFVJbnRlZ3JhbFR5cGVzLmgiCiAjaW5jbHVkZSAiV2ViR1BVT2JqZWN0
RGVzY3JpcHRvckJhc2UuaCIKLSNpbmNsdWRlICJXZWJHUFVQaXBlbGluZVN0YXRpc3RpY05hbWUu
aCIKICNpbmNsdWRlICJXZWJHUFVRdWVyeVR5cGUuaCIKICNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+
CiAKQEAgLTM2LDcgKzM1LDYgQEAgbmFtZXNwYWNlIFBBTDo6V2ViR1BVIHsKIHN0cnVjdCBRdWVy
eVNldERlc2NyaXB0b3IgOiBwdWJsaWMgT2JqZWN0RGVzY3JpcHRvckJhc2UgewogICAgIFF1ZXJ5
VHlwZSB0eXBlIHsgUXVlcnlUeXBlOjpPY2NsdXNpb24gfTsKICAgICBTaXplMzIgY291bnQgeyAw
IH07Ci0gICAgVmVjdG9yPFBpcGVsaW5lU3RhdGlzdGljTmFtZT4gcGlwZWxpbmVTdGF0aXN0aWNz
OwogfTsKIAogfSAvLyBuYW1lc3BhY2UgUEFMOjpXZWJHUFUKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL1BBTC9wYWwvZ3JhcGhpY3MvV2ViR1BVL1dlYkdQVVF1ZXJ5VHlwZS5oIGIvU291cmNl
L1dlYkNvcmUvUEFML3BhbC9ncmFwaGljcy9XZWJHUFUvV2ViR1BVUXVlcnlUeXBlLmgKaW5kZXgg
Y2MzMGQ0ODgzZmYyZGUwNmVkOWQ4YmM4Yzk5MmM1ZGI4MWM2M2RlNC4uYjJhYTVhZjVhYzEyMjE5
MDY0NjUyMzNjMzAyYWY4ODhlMmYzY2JlZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvUEFM
L3BhbC9ncmFwaGljcy9XZWJHUFUvV2ViR1BVUXVlcnlUeXBlLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvUEFML3BhbC9ncmFwaGljcy9XZWJHUFUvV2ViR1BVUXVlcnlUeXBlLmgKQEAgLTMyLDcgKzMy
LDYgQEAgbmFtZXNwYWNlIFBBTDo6V2ViR1BVIHsKIAogZW51bSBjbGFzcyBRdWVyeVR5cGUgOiB1
aW50OF90IHsKICAgICBPY2NsdXNpb24sCi0gICAgUGlwZWxpbmVTdGF0aXN0aWNzLAogICAgIFRp
bWVzdGFtcCwKIH07CiAKQEAgLTQ0LDcgKzQzLDYgQEAgdGVtcGxhdGU8PiBzdHJ1Y3QgRW51bVRy
YWl0czxQQUw6OldlYkdQVTo6UXVlcnlUeXBlPiB7CiAgICAgdXNpbmcgdmFsdWVzID0gRW51bVZh
bHVlczwKICAgICAgICAgUEFMOjpXZWJHUFU6OlF1ZXJ5VHlwZSwKICAgICAgICAgUEFMOjpXZWJH
UFU6OlF1ZXJ5VHlwZTo6T2NjbHVzaW9uLAotICAgICAgICBQQUw6OldlYkdQVTo6UXVlcnlUeXBl
OjpQaXBlbGluZVN0YXRpc3RpY3MsCiAgICAgICAgIFBBTDo6V2ViR1BVOjpRdWVyeVR5cGU6OlRp
bWVzdGFtcAogICAgID47CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvUEFML3BhbC9n
cmFwaGljcy9XZWJHUFUvV2ViR1BVUXVldWUuaCBiL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvZ3Jh
cGhpY3MvV2ViR1BVL1dlYkdQVVF1ZXVlLmgKaW5kZXggNmY4ZjhmODEwYjhkMDFhMTI4YzZiZGVm
Y2RlMzJjZjVhNDA5MjM4YS4uNjQ4NjZlOGU2YTQ3OTZlOTEyYjk4NzVkM2Q2YmI1ZWY3MTE2NGEx
NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvUEFML3BhbC9ncmFwaGljcy9XZWJHUFUvV2Vi
R1BVUXVldWUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL2dyYXBoaWNzL1dlYkdQVS9X
ZWJHUFVRdWV1ZS5oCkBAIC02Niw4ICs2Niw4IEBAIHB1YmxpYzoKICAgICAgICAgU2l6ZTY0IGJ1
ZmZlck9mZnNldCwKICAgICAgICAgY29uc3Qgdm9pZCogc291cmNlLAogICAgICAgICBzaXplX3Qg
Ynl0ZUxlbmd0aCwKLSAgICAgICAgU2l6ZTY0IGRhdGFPZmZzZXQsCi0gICAgICAgIHN0ZDo6b3B0
aW9uYWw8U2l6ZTY0PikgPSAwOworICAgICAgICBTaXplNjQgZGF0YU9mZnNldCA9IDAsCisgICAg
ICAgIHN0ZDo6b3B0aW9uYWw8U2l6ZTY0PiA9IHN0ZDo6bnVsbG9wdCkgPSAwOwogCiAgICAgdmly
dHVhbCB2b2lkIHdyaXRlVGV4dHVyZSgKICAgICAgICAgY29uc3QgSW1hZ2VDb3B5VGV4dHVyZSYg
ZGVzdGluYXRpb24sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL2dyYXBoaWNz
L1dlYkdQVS9XZWJHUFVSZW5kZXJQYXNzQ29sb3JBdHRhY2htZW50LmggYi9Tb3VyY2UvV2ViQ29y
ZS9QQUwvcGFsL2dyYXBoaWNzL1dlYkdQVS9XZWJHUFVSZW5kZXJQYXNzQ29sb3JBdHRhY2htZW50
LmgKaW5kZXggMjgzODEzNTYwN2ZjYWJhNTJlMTkxYzBiMjU0ZDM2NDhiYjMzOTUzNi4uZDc5ODIx
M2FkNDFiMDgwYTM0NjI1Yzk4MGVhZjFkMGQ0MmVjZmY5OCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvUEFML3BhbC9ncmFwaGljcy9XZWJHUFUvV2ViR1BVUmVuZGVyUGFzc0NvbG9yQXR0YWNo
bWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvZ3JhcGhpY3MvV2ViR1BVL1dlYkdQ
VVJlbmRlclBhc3NDb2xvckF0dGFjaG1lbnQuaApAQCAtNDAsNyArNDAsOCBAQCBzdHJ1Y3QgUmVu
ZGVyUGFzc0NvbG9yQXR0YWNobWVudCB7CiAgICAgVGV4dHVyZVZpZXcmIHZpZXc7CiAgICAgVGV4
dHVyZVZpZXcqIHJlc29sdmVUYXJnZXQgeyBudWxscHRyIH07CiAKLSAgICBzdGQ6OnZhcmlhbnQ8
TG9hZE9wLCBWZWN0b3I8ZG91YmxlPiwgQ29sb3JEaWN0PiBsb2FkVmFsdWU7CisgICAgc3RkOjpv
cHRpb25hbDxDb2xvcj4gY2xlYXJWYWx1ZTsKKyAgICBMb2FkT3AgbG9hZE9wIHsgTG9hZE9wOjpM
b2FkIH07CiAgICAgU3RvcmVPcCBzdG9yZU9wIHsgU3RvcmVPcDo6U3RvcmUgfTsKIH07CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvZ3JhcGhpY3MvV2ViR1BVL1dlYkdQVVJl
bmRlclBhc3NEZXB0aFN0ZW5jaWxBdHRhY2htZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFs
L2dyYXBoaWNzL1dlYkdQVS9XZWJHUFVSZW5kZXJQYXNzRGVwdGhTdGVuY2lsQXR0YWNobWVudC5o
CmluZGV4IGI0MzBlNDUyNjEwZDZlMTk2ZDUwMjIyOTE0ODZhMTVjNWFjN2Q0Y2YuLjgzYjI3MDZk
NDFlMjdjMjg5YzQ0Y2JmZWIyNThkNzBhZDRiM2NkMWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL1BBTC9wYWwvZ3JhcGhpY3MvV2ViR1BVL1dlYkdQVVJlbmRlclBhc3NEZXB0aFN0ZW5jaWxB
dHRhY2htZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvUEFML3BhbC9ncmFwaGljcy9XZWJHUFUv
V2ViR1BVUmVuZGVyUGFzc0RlcHRoU3RlbmNpbEF0dGFjaG1lbnQuaApAQCAtMzgsMTIgKzM4LDE0
IEBAIGNsYXNzIFRleHR1cmVWaWV3Owogc3RydWN0IFJlbmRlclBhc3NEZXB0aFN0ZW5jaWxBdHRh
Y2htZW50IHsKICAgICBUZXh0dXJlVmlldyYgdmlldzsKIAotICAgIHN0ZDo6dmFyaWFudDxMb2Fk
T3AsIGZsb2F0PiBkZXB0aExvYWRWYWx1ZTsKLSAgICBTdG9yZU9wIGRlcHRoU3RvcmVPcCB7IFN0
b3JlT3A6OlN0b3JlIH07CisgICAgZmxvYXQgZGVwdGhDbGVhclZhbHVlIHsgMCB9OworICAgIHN0
ZDo6b3B0aW9uYWw8TG9hZE9wPiBkZXB0aExvYWRPcDsKKyAgICBzdGQ6Om9wdGlvbmFsPFN0b3Jl
T3A+IGRlcHRoU3RvcmVPcDsKICAgICBib29sIGRlcHRoUmVhZE9ubHkgeyBmYWxzZSB9OwogCi0g
ICAgc3RkOjp2YXJpYW50PExvYWRPcCwgU3RlbmNpbFZhbHVlPiBzdGVuY2lsTG9hZFZhbHVlOwot
ICAgIFN0b3JlT3Agc3RlbmNpbFN0b3JlT3AgeyBTdG9yZU9wOjpTdG9yZSB9OworICAgIFN0ZW5j
aWxWYWx1ZSBzdGVuY2lsQ2xlYXJWYWx1ZSB7IDAgfTsKKyAgICBzdGQ6Om9wdGlvbmFsPExvYWRP
cD4gc3RlbmNpbExvYWRPcDsKKyAgICBzdGQ6Om9wdGlvbmFsPFN0b3JlT3A+IHN0ZW5jaWxTdG9y
ZU9wOwogICAgIGJvb2wgc3RlbmNpbFJlYWRPbmx5IHsgZmFsc2UgfTsKIH07CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvZ3JhcGhpY3MvV2ViR1BVL1dlYkdQVVJlbmRlclBh
c3NEZXNjcmlwdG9yLmggYi9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL2dyYXBoaWNzL1dlYkdQVS9X
ZWJHUFVSZW5kZXJQYXNzRGVzY3JpcHRvci5oCmluZGV4IDBmYWZlYjQ0NjU1ODYzZjhlNzAzMzc0
YWVjZTAxZmJiZmRhMDYxY2UuLjY2MDkwY2RjM2NkZGQzZTg3NTA4ZDJlODNhMzg4MjEwODVhMjc3
OTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvZ3JhcGhpY3MvV2ViR1BVL1dl
YkdQVVJlbmRlclBhc3NEZXNjcmlwdG9yLmgKKysrIGIvU291cmNlL1dlYkNvcmUvUEFML3BhbC9n
cmFwaGljcy9XZWJHUFUvV2ViR1BVUmVuZGVyUGFzc0Rlc2NyaXB0b3IuaApAQCAtMzYsNyArMzYs
NyBAQAogbmFtZXNwYWNlIFBBTDo6V2ViR1BVIHsKIAogc3RydWN0IFJlbmRlclBhc3NEZXNjcmlw
dG9yIDogcHVibGljIE9iamVjdERlc2NyaXB0b3JCYXNlIHsKLSAgICBWZWN0b3I8UmVuZGVyUGFz
c0NvbG9yQXR0YWNobWVudD4gY29sb3JBdHRhY2htZW50czsKKyAgICBWZWN0b3I8c3RkOjpvcHRp
b25hbDxSZW5kZXJQYXNzQ29sb3JBdHRhY2htZW50Pj4gY29sb3JBdHRhY2htZW50czsKICAgICBz
dGQ6Om9wdGlvbmFsPFJlbmRlclBhc3NEZXB0aFN0ZW5jaWxBdHRhY2htZW50PiBkZXB0aFN0ZW5j
aWxBdHRhY2htZW50OwogICAgIFF1ZXJ5U2V0KiBvY2NsdXNpb25RdWVyeVNldCB7IG51bGxwdHIg
fTsKICAgICBSZW5kZXJQYXNzVGltZXN0YW1wV3JpdGVzIHRpbWVzdGFtcFdyaXRlczsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvZ3JhcGhpY3MvV2ViR1BVL1dlYkdQVVJlbmRl
clBhc3NFbmNvZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL2dyYXBoaWNzL1dlYkdQVS9X
ZWJHUFVSZW5kZXJQYXNzRW5jb2Rlci5oCmluZGV4IDczNTJlYTFkZDhiOTUzYjI1ZjU4MjQ2NmVh
YTc3OTZlZTVkZjIyZjcuLjU1ODVmNGFmMmE5NmMxZmNkNWFjODA0MjE0Mjk0NjUyYmExOWYyMDAg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvZ3JhcGhpY3MvV2ViR1BVL1dlYkdQ
VVJlbmRlclBhc3NFbmNvZGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvUEFML3BhbC9ncmFwaGlj
cy9XZWJHUFUvV2ViR1BVUmVuZGVyUGFzc0VuY29kZXIuaApAQCAtOTcsMTEgKzk3LDggQEAgcHVi
bGljOgogICAgIHZpcnR1YWwgdm9pZCBiZWdpbk9jY2x1c2lvblF1ZXJ5KFNpemUzMiBxdWVyeUlu
ZGV4KSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGVuZE9jY2x1c2lvblF1ZXJ5KCkgPSAwOwogCi0g
ICAgdmlydHVhbCB2b2lkIGJlZ2luUGlwZWxpbmVTdGF0aXN0aWNzUXVlcnkoY29uc3QgUXVlcnlT
ZXQmLCBTaXplMzIgcXVlcnlJbmRleCkgPSAwOwotICAgIHZpcnR1YWwgdm9pZCBlbmRQaXBlbGlu
ZVN0YXRpc3RpY3NRdWVyeSgpID0gMDsKLQogICAgIHZpcnR1YWwgdm9pZCBleGVjdXRlQnVuZGxl
cyhWZWN0b3I8c3RkOjpyZWZlcmVuY2Vfd3JhcHBlcjxSZW5kZXJCdW5kbGU+PiYmKSA9IDA7Ci0g
ICAgdmlydHVhbCB2b2lkIGVuZFBhc3MoKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIGVuZCgpID0g
MDsKIAogcHJvdGVjdGVkOgogICAgIFJlbmRlclBhc3NFbmNvZGVyKCkgPSBkZWZhdWx0OwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvUEFML3BhbC9ncmFwaGljcy9XZWJHUFUvV2ViR1BVUmVu
ZGVyUGFzc0xheW91dC5oIGIvU291cmNlL1dlYkNvcmUvUEFML3BhbC9ncmFwaGljcy9XZWJHUFUv
V2ViR1BVUmVuZGVyUGFzc0xheW91dC5oCmluZGV4IGFmOTNmMWYxYjJkNzAxMWQ1ZTNiODVjN2Q0
ZWMwOTAxNDRiMDIwNDUuLjgwZDgyZGEzNTdlNDkyNDQwMTMxZTRmMzZiMjNkYmM1NGU5NGY1NTcg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvZ3JhcGhpY3MvV2ViR1BVL1dlYkdQ
VVJlbmRlclBhc3NMYXlvdXQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL2dyYXBoaWNz
L1dlYkdQVS9XZWJHUFVSZW5kZXJQYXNzTGF5b3V0LmgKQEAgLTM0LDcgKzM0LDcgQEAKIG5hbWVz
cGFjZSBQQUw6OldlYkdQVSB7CiAKIHN0cnVjdCBSZW5kZXJQYXNzTGF5b3V0IDogcHVibGljIE9i
amVjdERlc2NyaXB0b3JCYXNlIHsKLSAgICBWZWN0b3I8VGV4dHVyZUZvcm1hdD4gY29sb3JGb3Jt
YXRzOworICAgIFZlY3RvcjxzdGQ6Om9wdGlvbmFsPFRleHR1cmVGb3JtYXQ+PiBjb2xvckZvcm1h
dHM7CiAgICAgc3RkOjpvcHRpb25hbDxUZXh0dXJlRm9ybWF0PiBkZXB0aFN0ZW5jaWxGb3JtYXQ7
CiAgICAgU2l6ZTMyIHNhbXBsZUNvdW50IHsgMSB9OwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL1BBTC9wYWwvZ3JhcGhpY3MvV2ViR1BVL1dlYkdQVVNoYWRlck1vZHVsZUNvbXBpbGF0
aW9uSGludC5oIGIvU291cmNlL1dlYkNvcmUvUEFML3BhbC9ncmFwaGljcy9XZWJHUFUvV2ViR1BV
U2hhZGVyTW9kdWxlQ29tcGlsYXRpb25IaW50LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZDcyMjBkZGYwOWVhYTA0
NDk1NDVhMGNkYjRlNmNiMDFiNTEzMzU3MwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJD
b3JlL1BBTC9wYWwvZ3JhcGhpY3MvV2ViR1BVL1dlYkdQVVNoYWRlck1vZHVsZUNvbXBpbGF0aW9u
SGludC5oCkBAIC0wLDAgKzEsMzYgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjEgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycK
KyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisg
KiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworbmFt
ZXNwYWNlIFBBTDo6V2ViR1BVIHsKKworY2xhc3MgV2ViR1BVUGlwZWxpbmVMYXlvdXQ7CisKK3N0
cnVjdCBTaGFkZXJNb2R1bGVDb21waWxhdGlvbkhpbnQgeworICAgIFBpcGVsaW5lTGF5b3V0JiBw
aXBlbGluZUxheW91dDsKK307CisKK30gLy8gbmFtZXNwYWNlIFBBTDo6V2ViR1BVCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL2dyYXBoaWNzL1dlYkdQVS9XZWJHUFVTaGFkZXJN
b2R1bGVEZXNjcmlwdG9yLmggYi9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL2dyYXBoaWNzL1dlYkdQ
VS9XZWJHUFVTaGFkZXJNb2R1bGVEZXNjcmlwdG9yLmgKaW5kZXggYzk5ZThlZTJmZjRmMWZhODVl
MzUxNjI2NTdkOWEzZDlmNmM3NTQ2Zi4uMzFlMjdhNjlkZGRmZDQzMWYyNzY0Y2JhZjQ1YWJkNGJl
NWY3ZmM1OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvUEFML3BhbC9ncmFwaGljcy9XZWJH
UFUvV2ViR1BVU2hhZGVyTW9kdWxlRGVzY3JpcHRvci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL1BB
TC9wYWwvZ3JhcGhpY3MvV2ViR1BVL1dlYkdQVVNoYWRlck1vZHVsZURlc2NyaXB0b3IuaApAQCAt
MjYsNiArMjYsNyBAQAogI3ByYWdtYSBvbmNlCiAKICNpbmNsdWRlICJXZWJHUFVPYmplY3REZXNj
cmlwdG9yQmFzZS5oIgorI2luY2x1ZGUgIldlYkdQVVNoYWRlck1vZHVsZUNvbXBpbGF0aW9uSGlu
dC5oIgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgogCiBuYW1lc3BhY2UgUEFMOjpX
ZWJHUFUgewpAQCAtMzMsNiArMzQsNyBAQCBuYW1lc3BhY2UgUEFMOjpXZWJHUFUgewogc3RydWN0
IFNoYWRlck1vZHVsZURlc2NyaXB0b3IgOiBwdWJsaWMgT2JqZWN0RGVzY3JpcHRvckJhc2Ugewog
ICAgIFN0cmluZyBjb2RlOwogICAgIC8vIEpTQzo6U3Ryb25nPEpTQzo6SlNPYmplY3Q+IHNvdXJj
ZU1hcDsKKyAgICBWZWN0b3I8S2V5VmFsdWVQYWlyPFN0cmluZywgU2hhZGVyTW9kdWxlQ29tcGls
YXRpb25IaW50Pj4gaGludHM7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBQQUw6OldlYkdQVQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvUEFML3BhbC9ncmFwaGljcy9XZWJHUFUvV2ViR1BVVGV4
dHVyZURlc2NyaXB0b3IuaCBiL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvZ3JhcGhpY3MvV2ViR1BV
L1dlYkdQVVRleHR1cmVEZXNjcmlwdG9yLmgKaW5kZXggNThhMGZjYTc4OGQyNDI1MzczZDk3ZWJl
OGIxMzFjOWZkZWQ2Y2Q1Yy4uNzcwM2IyMDQzZDkxYjc1ZjE3MThiMmZlNGQyZWZhMjI4NDA0NzQy
NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvUEFML3BhbC9ncmFwaGljcy9XZWJHUFUvV2Vi
R1BVVGV4dHVyZURlc2NyaXB0b3IuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL2dyYXBo
aWNzL1dlYkdQVS9XZWJHUFVUZXh0dXJlRGVzY3JpcHRvci5oCkBAIC00MSw2ICs0MSw3IEBAIHN0
cnVjdCBUZXh0dXJlRGVzY3JpcHRvciA6IHB1YmxpYyBPYmplY3REZXNjcmlwdG9yQmFzZSB7CiAg
ICAgVGV4dHVyZURpbWVuc2lvbiBkaW1lbnNpb24geyBUZXh0dXJlRGltZW5zaW9uOjpfMmQgfTsK
ICAgICBUZXh0dXJlRm9ybWF0IGZvcm1hdCB7IFRleHR1cmVGb3JtYXQ6OlI4dW5vcm0gfTsKICAg
ICBUZXh0dXJlVXNhZ2VGbGFncyB1c2FnZTsKKyAgICBWZWN0b3I8VGV4dHVyZUZvcm1hdD4gdmll
d0Zvcm1hdHM7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBQQUw6OldlYkdQVQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvUEFML3BhbC9ncmFwaGljcy9XZWJHUFUvV2ViR1BVVGV4dHVyZUZvcm1h
dC5oIGIvU291cmNlL1dlYkNvcmUvUEFML3BhbC9ncmFwaGljcy9XZWJHUFUvV2ViR1BVVGV4dHVy
ZUZvcm1hdC5oCmluZGV4IDYyNTk0NjAwNWYwZTg2M2FmOTAzMjgxNjViMzg4OTEyZGQ3NTAyNDQu
LjYzYjQyOThlYjM5M2ZmZDAxZTI5ZGY5ZWFiNjlmODlmNDA2ODMzZDcgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL1BBTC9wYWwvZ3JhcGhpY3MvV2ViR1BVL1dlYkdQVVRleHR1cmVGb3JtYXQu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL2dyYXBoaWNzL1dlYkdQVS9XZWJHUFVUZXh0
dXJlRm9ybWF0LmgKQEAgLTc4LDEzICs3OCwxOSBAQCBlbnVtIGNsYXNzIFRleHR1cmVGb3JtYXQg
OiB1aW50OF90IHsKICAgICBSZ2JhMzJzaW50LAogICAgIFJnYmEzMmZsb2F0LAogCi0gICAgLy8g
RGVwdGggYW5kIHN0ZW5jaWwgZm9ybWF0cworICAgIC8vIERlcHRoL3N0ZW5jaWwgZm9ybWF0cwog
ICAgIFN0ZW5jaWw4LAogICAgIERlcHRoMTZ1bm9ybSwKICAgICBEZXB0aDI0cGx1cywKICAgICBE
ZXB0aDI0cGx1c1N0ZW5jaWw4LAogICAgIERlcHRoMzJmbG9hdCwKIAorICAgIC8vIGRlcHRoMjR1
bm9ybS1zdGVuY2lsOCBmZWF0dXJlCisgICAgRGVwdGgyNHVub3JtU3RlbmNpbDgsCisKKyAgICAv
LyBkZXB0aDMyZmxvYXQtc3RlbmNpbDggZmVhdHVyZQorICAgIERlcHRoMzJmbG9hdFN0ZW5jaWw4
LAorCiAgICAgLy8gQkMgY29tcHJlc3NlZCBmb3JtYXRzIHVzYWJsZSBpZiB0ZXh0dXJlLWNvbXBy
ZXNzaW9uLWJjIGlzIGJvdGgKICAgICAvLyBzdXBwb3J0ZWQgYnkgdGhlIGRldmljZS91c2VyIGFn
ZW50IGFuZCBlbmFibGVkIGluIHJlcXVlc3REZXZpY2UuCiAgICAgQmMxUmdiYVVub3JtLApAQCAt
MTQ1LDEyICsxNTEsNiBAQCBlbnVtIGNsYXNzIFRleHR1cmVGb3JtYXQgOiB1aW50OF90IHsKICAg
ICBBc3RjMTJ4MTBVbm9ybVNSR0IsCiAgICAgQXN0YzEyeDEyVW5vcm0sCiAgICAgQXN0YzEyeDEy
VW5vcm1TUkdCLAotCi0gICAgLy8gZGVwdGgyNHVub3JtLXN0ZW5jaWw4IGZlYXR1cmUKLSAgICBE
ZXB0aDI0dW5vcm1TdGVuY2lsOCwKLQotICAgIC8vIGRlcHRoMzJmbG9hdC1zdGVuY2lsOCBmZWF0
dXJlCi0gICAgRGVwdGgzMmZsb2F0U3RlbmNpbDgsCiB9OwogCiB9IC8vIG5hbWVzcGFjZSBQQUw6
OldlYkdQVQpAQCAtMjAxLDYgKzIwMSw4IEBAIHRlbXBsYXRlPD4gc3RydWN0IEVudW1UcmFpdHM8
UEFMOjpXZWJHUFU6OlRleHR1cmVGb3JtYXQ+IHsKICAgICAgICAgUEFMOjpXZWJHUFU6OlRleHR1
cmVGb3JtYXQ6OkRlcHRoMjRwbHVzLAogICAgICAgICBQQUw6OldlYkdQVTo6VGV4dHVyZUZvcm1h
dDo6RGVwdGgyNHBsdXNTdGVuY2lsOCwKICAgICAgICAgUEFMOjpXZWJHUFU6OlRleHR1cmVGb3Jt
YXQ6OkRlcHRoMzJmbG9hdCwKKyAgICAgICAgUEFMOjpXZWJHUFU6OlRleHR1cmVGb3JtYXQ6OkRl
cHRoMjR1bm9ybVN0ZW5jaWw4LAorICAgICAgICBQQUw6OldlYkdQVTo6VGV4dHVyZUZvcm1hdDo6
RGVwdGgzMmZsb2F0U3RlbmNpbDgsCiAgICAgICAgIFBBTDo6V2ViR1BVOjpUZXh0dXJlRm9ybWF0
OjpCYzFSZ2JhVW5vcm0sCiAgICAgICAgIFBBTDo6V2ViR1BVOjpUZXh0dXJlRm9ybWF0OjpCYzFS
Z2JhVW5vcm1TUkdCLAogICAgICAgICBQQUw6OldlYkdQVTo6VGV4dHVyZUZvcm1hdDo6QmMyUmdi
YVVub3JtLApAQCAtMjUyLDkgKzI1NCw3IEBAIHRlbXBsYXRlPD4gc3RydWN0IEVudW1UcmFpdHM8
UEFMOjpXZWJHUFU6OlRleHR1cmVGb3JtYXQ+IHsKICAgICAgICAgUEFMOjpXZWJHUFU6OlRleHR1
cmVGb3JtYXQ6OkFzdGMxMngxMFVub3JtLAogICAgICAgICBQQUw6OldlYkdQVTo6VGV4dHVyZUZv
cm1hdDo6QXN0YzEyeDEwVW5vcm1TUkdCLAogICAgICAgICBQQUw6OldlYkdQVTo6VGV4dHVyZUZv
cm1hdDo6QXN0YzEyeDEyVW5vcm0sCi0gICAgICAgIFBBTDo6V2ViR1BVOjpUZXh0dXJlRm9ybWF0
OjpBc3RjMTJ4MTJVbm9ybVNSR0IsCi0gICAgICAgIFBBTDo6V2ViR1BVOjpUZXh0dXJlRm9ybWF0
OjpEZXB0aDI0dW5vcm1TdGVuY2lsOCwKLSAgICAgICAgUEFMOjpXZWJHUFU6OlRleHR1cmVGb3Jt
YXQ6OkRlcHRoMzJmbG9hdFN0ZW5jaWw4CisgICAgICAgIFBBTDo6V2ViR1BVOjpUZXh0dXJlRm9y
bWF0OjpBc3RjMTJ4MTJVbm9ybVNSR0IKICAgICA+OwogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvU291cmNlcy50eHQgYi9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzLnR4dAppbmRleCAw
NmM5YjIxODE2NWY0ZTM1M2U5NDg5ZjA1MmYwZGZiOTkxYjkyNmE0Li40YzI3MjMxYzc5YWMzZTQw
ODQxZjUwM2YzOTZmNzA3MDIwNWQ5ZjIzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Tb3Vy
Y2VzLnR4dAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzLnR4dApAQCAtMzE4NSw2ICszMTg1
LDcgQEAgSlNHUFVDb21tYW5kQnVmZmVyLmNwcAogSlNHUFVDb21tYW5kQnVmZmVyRGVzY3JpcHRv
ci5jcHAKIEpTR1BVQ29tbWFuZEVuY29kZXIuY3BwCiBKU0dQVUNvbW1hbmRFbmNvZGVyRGVzY3Jp
cHRvci5jcHAKK0pTR1BVQ29tbWFuZHNNaXhpbi5jcHAKIEpTR1BVQ29tcGFyZUZ1bmN0aW9uLmNw
cAogSlNHUFVDb21waWxhdGlvbkluZm8uY3BwCiBKU0dQVUNvbXBpbGF0aW9uTWVzc2FnZS5jcHAK
QEAgLTMxOTYsNiArMzE5Nyw3IEBAIEpTR1BVQ29tcHV0ZVBhc3NUaW1lc3RhbXBXcml0ZS5jcHAK
IEpTR1BVQ29tcHV0ZVBpcGVsaW5lLmNwcAogSlNHUFVDb21wdXRlUGlwZWxpbmVEZXNjcmlwdG9y
LmNwcAogSlNHUFVDdWxsTW9kZS5jcHAKK0pTR1BVRGVidWdDb21tYW5kc01peGluLmNwcAogSlNH
UFVEZXB0aFN0ZW5jaWxTdGF0ZS5jcHAKIEpTR1BVRGV2aWNlLmNwcAogSlNHUFVEZXZpY2VEZXNj
cmlwdG9yLmNwcApAQCAtMzIzMSw3ICszMjMzLDYgQEAgSlNHUFVQaXBlbGluZUJhc2UuY3BwCiBK
U0dQVVBpcGVsaW5lRGVzY3JpcHRvckJhc2UuY3BwCiBKU0dQVVBpcGVsaW5lTGF5b3V0LmNwcAog
SlNHUFVQaXBlbGluZUxheW91dERlc2NyaXB0b3IuY3BwCi1KU0dQVVBpcGVsaW5lU3RhdGlzdGlj
TmFtZS5jcHAKIEpTR1BVUG93ZXJQcmVmZXJlbmNlLmNwcAogSlNHUFVQcmVkZWZpbmVkQ29sb3JT
cGFjZS5jcHAKIEpTR1BVUHJpbWl0aXZlU3RhdGUuY3BwCkBAIC0zMjYyLDYgKzMyNjMsNyBAQCBK
U0dQVVNhbXBsZXJCaW5kaW5nTGF5b3V0LmNwcAogSlNHUFVTYW1wbGVyQmluZGluZ1R5cGUuY3Bw
CiBKU0dQVVNhbXBsZXJEZXNjcmlwdG9yLmNwcAogSlNHUFVTaGFkZXJNb2R1bGUuY3BwCitKU0dQ
VVNoYWRlck1vZHVsZUNvbXBpbGF0aW9uSGludC5jcHAKIEpTR1BVU2hhZGVyTW9kdWxlRGVzY3Jp
cHRvci5jcHAKIEpTR1BVU2hhZGVyU3RhZ2UuY3BwCiBKU0dQVVN0ZW5jaWxGYWNlU3RhdGUuY3Bw
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2ogYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oK
aW5kZXggZmI5ZmI3Y2MyMjE4OWYwMzQzMDIwY2Y2YzBmYTNkNjY1ZGI5ZWIzOC4uMGE1OWIxN2Mx
YTBhMzIwOWRiOTgzNDcxMDNmZDYzODUxMjc0ZjI5ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtNzMyNCw3ICs3MzI0LDYgQEAK
IAkJMUM5MDc4MDgyNzUxRkQ1MzAwNEVGMTY1IC8qIEpTR1BVRXh0ZW50M0REaWN0LmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IEpTR1BVRXh0ZW50M0REaWN0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCTFDOTA3ODA5Mjc1MUZENTMwMDRFRjE2NSAvKiBKU0dQVVF1ZXJ5U2V0LmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IEpTR1BVUXVlcnlTZXQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMUM5
MDc4MEEyNzUxRkQ1NDAwNEVGMTY1IC8qIEpTR1BVSW1hZ2VEYXRhTGF5b3V0LmNwcCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
LmNwcDsgcGF0aCA9IEpTR1BVSW1hZ2VEYXRhTGF5b3V0LmNwcDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKLQkJMUM5MDc4MEIyNzUxRkQ1NDAwNEVGMTY1IC8qIEpTR1BVUGlwZWxpbmVTdGF0
aXN0aWNOYW1lLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTR1BVUGlwZWxpbmVTdGF0aXN0aWNOYW1lLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTFDOTA3ODBDMjc1MUZENTQwMDRFRjE2NSAv
KiBKU0dQVUJ1ZmZlckJpbmRpbmdUeXBlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTR1BVQnVm
ZmVyQmluZGluZ1R5cGUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkxQzkwNzgw
RDI3NTFGRDU1MDA0RUYxNjUgLyogSlNHUFVEZXZpY2UuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNHUFVE
ZXZpY2UuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMUM5MDc4MEUyNzUxRkQ1NTAw
NEVGMTY1IC8qIEpTR1BVU2FtcGxlckJpbmRpbmdUeXBlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9
IEpTR1BVU2FtcGxlckJpbmRpbmdUeXBlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
QEAgLTc0NTQsNyArNzQ1Myw2IEBACiAJCTFDOTA3ODhBMjc1MUZEODYwMDRFRjE2NSAvKiBKU0dQ
VVNhbXBsZXJEZXNjcmlwdG9yLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTR1BVU2FtcGxlckRlc2NyaXB0
b3IuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMUM5MDc4OEIyNzUxRkQ4NzAwNEVG
MTY1IC8qIEpTR1BVQ29tcGFyZUZ1bmN0aW9uLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTR1BVQ29tcGFy
ZUZ1bmN0aW9uLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTFDOTA3ODhDMjc1MUZE
ODcwMDRFRjE2NSAvKiBKU0dQVVN1cHBvcnRlZEZlYXR1cmVzLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpT
R1BVU3VwcG9ydGVkRmVhdHVyZXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJMUM5
MDc4OEQyNzUxRkQ4NzAwNEVGMTY1IC8qIEpTR1BVUGlwZWxpbmVTdGF0aXN0aWNOYW1lLmNwcCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLmNwcDsgcGF0aCA9IEpTR1BVUGlwZWxpbmVTdGF0aXN0aWNOYW1lLmNwcDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMUM5MDc4OEUyNzUxRkQ4ODAwNEVGMTY1IC8qIEpTR1BV
RGV2aWNlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTR1BVRGV2aWNlLmNwcDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMUM5MDc4OEYyNzUxRkQ4ODAwNEVGMTY1IC8qIEpTR1BVQnVm
ZmVyRGVzY3JpcHRvci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKU0dQVUJ1ZmZlckRlc2NyaXB0b3IuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMUM5MDc4OTAyNzUxRkQ4OTAwNEVGMTY1IC8q
IEpTR1BVT3JpZ2luM0REaWN0LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTR1BVT3JpZ2luM0RE
aWN0LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTc2NzIsNyArNzY3MCw2IEBA
CiAJCTFDQTRGQ0VCMjczNTFGQjEwMDI3RkQ1QSAvKiBHUFVDb21tYW5kRW5jb2Rlci5jcHAgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5jcHA7IHBhdGggPSBHUFVDb21tYW5kRW5jb2Rlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCTFDQTRGQ0VDMjczNTFGQjIwMDI3RkQ1QSAvKiBHUFVRdWVyeVNldERlc2Ny
aXB0b3IuaWRsICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBl
ID0gdGV4dDsgcGF0aCA9IEdQVVF1ZXJ5U2V0RGVzY3JpcHRvci5pZGw7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCTFDQTRGQ0VEMjczNTFGQjIwMDI3RkQ1QSAvKiBHUFVDb21tYW5kRW5j
b2Rlci5pZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUg
PSB0ZXh0OyBwYXRoID0gR1BVQ29tbWFuZEVuY29kZXIuaWRsOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwotCQkxQ0E0RkNFRTI3MzUxRkIyMDAyN0ZENUEgLyogR1BVUGlwZWxpbmVTdGF0aXN0
aWNOYW1lLmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlw
ZSA9IHRleHQ7IHBhdGggPSBHUFVQaXBlbGluZVN0YXRpc3RpY05hbWUuaWRsOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQkxQ0E0RkNFRjI3MzUxRkIzMDAyN0ZENUEgLyogR1BVUmVuZGVy
QnVuZGxlRW5jb2RlckRlc2NyaXB0b3IuaWRsICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IEdQVVJlbmRlckJ1bmRsZUVuY29kZXJE
ZXNjcmlwdG9yLmlkbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMUNBNEZDRjAyNzM1
MUZCMzAwMjdGRDVBIC8qIEdQVUNvbG9yRGljdC5pZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gR1BVQ29sb3JEaWN0LmlkbDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMUNBNEZDRjEyNzM1MUZCMzAwMjdGRDVBIC8q
IEdQVVJlbmRlckVuY29kZXJCYXNlLmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBs
YXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBHUFVSZW5kZXJFbmNvZGVyQmFzZS5pZGw7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC03NzE0LDcgKzc3MTEsNiBAQAogCQkxQ0E0
RkQxNTI3MzUxRkMxMDAyN0ZENUEgLyogR1BVUmVuZGVyUGFzc1RpbWVzdGFtcExvY2F0aW9uLmlk
bCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7
IHBhdGggPSBHUFVSZW5kZXJQYXNzVGltZXN0YW1wTG9jYXRpb24uaWRsOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQkxQ0E0RkQxNjI3MzUxRkMyMDAyN0ZENUEgLyogR1BVSW1hZ2VDb3B5
RXh0ZXJuYWxJbWFnZS5pZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3du
RmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gR1BVSW1hZ2VDb3B5RXh0ZXJuYWxJbWFnZS5pZGw7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTFDQTRGRDE3MjczNTFGQzIwMDI3RkQ1QSAvKiBH
UFVSZW5kZXJQYXNzRGVzY3JpcHRvci5pZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
bGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gR1BVUmVuZGVyUGFzc0Rlc2NyaXB0b3Iu
aWRsOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQkxQ0E0RkQxODI3MzUxRkMzMDAyN0ZE
NUEgLyogR1BVUGlwZWxpbmVTdGF0aXN0aWNOYW1lLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEdQVVBpcGVs
aW5lU3RhdGlzdGljTmFtZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkxQ0E0RkQx
OTI3MzUxRkMzMDAyN0ZENUEgLyogR1BVQ29tbWFuZEVuY29kZXJEZXNjcmlwdG9yLmlkbCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGgg
PSBHUFVDb21tYW5kRW5jb2RlckRlc2NyaXB0b3IuaWRsOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQkxQ0E0RkQxQTI3MzUxRkMzMDAyN0ZENUEgLyogR1BVUmVuZGVyUGFzc1RpbWVzdGFt
cFdyaXRlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEdQVVJlbmRlclBhc3NUaW1lc3RhbXBXcml0ZS5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkxQ0E0RkQxQjI3MzUxRkM0MDAyN0ZENUEgLyog
R1BVT3JpZ2luMkREaWN0LmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25v
d25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBHUFVPcmlnaW4yRERpY3QuaWRsOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwpAQCAtNzc3MSw2ICs3NzY3LDE2IEBACiAJCTFDRUFBNTJGMjZGMzFB
RjgwMDg2ODUwNyAvKiBDU1NGb250UGFsZXR0ZVZhbHVlc1J1bGUuaWRsICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IENTU0ZvbnRQ
YWxldHRlVmFsdWVzUnVsZS5pZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTFDRUFB
NTMwMjZGMzMxQzEwMDg2ODUwNyAvKiBDU1NGb250UGFsZXR0ZVZhbHVlc092ZXJyaWRlQ29sb3Jz
VmFsdWUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQ1NTRm9udFBhbGV0dGVWYWx1ZXNPdmVycmlk
ZUNvbG9yc1ZhbHVlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMUNFQUE1MzEy
NkYzMzFDMTAwODY4NTA3IC8qIENTU0ZvbnRQYWxldHRlVmFsdWVzT3ZlcnJpZGVDb2xvcnNWYWx1
ZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBDU1NGb250UGFsZXR0ZVZhbHVlc092ZXJyaWRlQ29sb3JzVmFs
dWUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMUNFRjQ1QTUyN0JCMDk2QTAwQzNB
NkJDIC8qIEdQVVNoYWRlck1vZHVsZUNvbXBpbGF0aW9uSGludC5pZGwgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gR1BVU2hhZGVy
TW9kdWxlQ29tcGlsYXRpb25IaW50LmlkbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJ
MUNFRjQ1QTcyN0JCMEEzRDAwQzNBNkJDIC8qIEdQVVNoYWRlck1vZHVsZUNvbXBpbGF0aW9uSGlu
dC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBHUFVTaGFkZXJNb2R1bGVDb21waWxhdGlvbkhpbnQuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMUNFRjQ1QTgyN0JCMEJFMTAwQzNBNkJDIC8qIEdQ
VUNvbW1hbmRzTWl4aW4uaWRsICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93
bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IEdQVUNvbW1hbmRzTWl4aW4uaWRsOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OworCQkxQ0VGNDVBOTI3QkIwRDM5MDBDM0E2QkMgLyogR1BVRGVidWdD
b21tYW5kc01peGluLmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25G
aWxlVHlwZSA9IHRleHQ7IHBhdGggPSBHUFVEZWJ1Z0NvbW1hbmRzTWl4aW4uaWRsOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OworCQkxQ0VGNDVCMDI3QkI5MDdGMDBDM0E2QkMgLyogSlNHUFVD
b21tYW5kc01peGluLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTR1BVQ29tbWFuZHNNaXhpbi5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OworCQkxQ0VGNDVCMTI3QkI5MDdGMDBDM0E2QkMgLyogSlNH
UFVDb21tYW5kc01peGluLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTR1BVQ29tbWFuZHNNaXhp
bi5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTFDRUY0NUIyMjdCQjkwODAwMEMz
QTZCQyAvKiBKU0dQVURlYnVnQ29tbWFuZHNNaXhpbi5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBK
U0dQVURlYnVnQ29tbWFuZHNNaXhpbi5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJ
CTFDRUY0NUIzMjdCQjkwODEwMEMzQTZCQyAvKiBKU0dQVVNoYWRlck1vZHVsZUNvbXBpbGF0aW9u
SGludC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBKU0dQVVNoYWRlck1vZHVsZUNvbXBpbGF0aW9uSGludC5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkxQ0VGNDVCNDI3QkI5MDgxMDBDM0E2QkMg
LyogSlNHUFVEZWJ1Z0NvbW1hbmRzTWl4aW4uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNHUFVEZWJ1Z0Nv
bW1hbmRzTWl4aW4uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMUNFRjQ1QjUyN0JC
OTA4MjAwQzNBNkJDIC8qIEpTR1BVU2hhZGVyTW9kdWxlQ29tcGlsYXRpb25IaW50LmNwcCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLmNwcDsgcGF0aCA9IEpTR1BVU2hhZGVyTW9kdWxlQ29tcGlsYXRpb25IaW50LmNwcDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMUNGMEJGRDQyMjk4NzA2ODAwRUQyMDc0IC8qIFRl
eHRTaXplQWRqdXN0bWVudC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBUZXh0U2l6ZUFkanVzdG1l
bnQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkxQ0YxOEYzQzI2QkI1QUYyMDA0
QjE3MjIgLyogTG9nSW5pdGlhbGl6YXRpb24uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gTG9nSW5p
dGlhbGl6YXRpb24uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkxQ0ZBRTMyMjBB
NkQ2QTNGMDAzMjU5M0QgLyogbGlib2JqYy5keWxpYiAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBsYXN0S25vd25GaWxlVHlwZSA9ICJjb21waWxlZC5tYWNoLW8uZHlsaWIiOyBuYW1lID0g
bGlib2JqYy5keWxpYjsgcGF0aCA9IC91c3IvbGliL2xpYm9iamMuZHlsaWI7IHNvdXJjZVRyZWUg
PSAiPGFic29sdXRlPiI7IH07CkBAIC0yMDA5MSw2ICsyMDA5Nyw3IEBACiAJCQkJMUNBNEZDRUQy
NzM1MUZCMjAwMjdGRDVBIC8qIEdQVUNvbW1hbmRFbmNvZGVyLmlkbCAqLywKIAkJCQkxQ0E0RkNG
RTI3MzUxRkI5MDAyN0ZENUEgLyogR1BVQ29tbWFuZEVuY29kZXJEZXNjcmlwdG9yLmggKi8sCiAJ
CQkJMUNBNEZEMTkyNzM1MUZDMzAwMjdGRDVBIC8qIEdQVUNvbW1hbmRFbmNvZGVyRGVzY3JpcHRv
ci5pZGwgKi8sCisJCQkJMUNFRjQ1QTgyN0JCMEJFMTAwQzNBNkJDIC8qIEdQVUNvbW1hbmRzTWl4
aW4uaWRsICovLAogCQkJCTFDQTRGQzU5MjczNEVCQ0QwMDI3RkQ1QSAvKiBHUFVDb21wYXJlRnVu
Y3Rpb24uaCAqLywKIAkJCQkxQ0E0RkM1QjI3MzRFQkNFMDAyN0ZENUEgLyogR1BVQ29tcGFyZUZ1
bmN0aW9uLmlkbCAqLywKIAkJCQkxQ0E0RkNFMjI3MzUxMjNBMDAyN0ZENUEgLyogR1BVQ29tcGls
YXRpb25JbmZvLmNwcCAqLywKQEAgLTIwMTE3LDYgKzIwMTI0LDcgQEAKIAkJCQkxQ0E0RkNCNDI3
MzUwQ0VCMDAyN0ZENUEgLyogR1BVQ29tcHV0ZVBpcGVsaW5lRGVzY3JpcHRvci5pZGwgKi8sCiAJ
CQkJMUNBNEZDQTMyNzM1MENFNTAwMjdGRDVBIC8qIEdQVUN1bGxNb2RlLmggKi8sCiAJCQkJMUNB
NEZDQ0UyNzM1MENGNTAwMjdGRDVBIC8qIEdQVUN1bGxNb2RlLmlkbCAqLywKKwkJCQkxQ0VGNDVB
OTI3QkIwRDM5MDBDM0E2QkMgLyogR1BVRGVidWdDb21tYW5kc01peGluLmlkbCAqLywKIAkJCQkx
Q0E0RkNENDI3MzUwQ0Y4MDAyN0ZENUEgLyogR1BVRGVwdGhTdGVuY2lsU3RhdGUuaCAqLywKIAkJ
CQkxQ0E0RkNERDI3MzUwQ0ZCMDAyN0ZENUEgLyogR1BVRGVwdGhTdGVuY2lsU3RhdGUuaWRsICov
LAogCQkJCTFDMjg5NTdGMjcyRjQzRDgwMEIzRTJCNCAvKiBHUFVEZXZpY2UuY3BwICovLApAQCAt
MjAxODgsOCArMjAxOTYsNiBAQAogCQkJCTFDQTRGQzZFMjczNEY5RjYwMDI3RkQ1QSAvKiBHUFVQ
aXBlbGluZUxheW91dC5pZGwgKi8sCiAJCQkJMUNBNEZDNzMyNzM0RjlGODAwMjdGRDVBIC8qIEdQ
VVBpcGVsaW5lTGF5b3V0RGVzY3JpcHRvci5oICovLAogCQkJCTFDQTRGQzY3MjczNEY5RjQwMDI3
RkQ1QSAvKiBHUFVQaXBlbGluZUxheW91dERlc2NyaXB0b3IuaWRsICovLAotCQkJCTFDQTRGRDE4
MjczNTFGQzMwMDI3RkQ1QSAvKiBHUFVQaXBlbGluZVN0YXRpc3RpY05hbWUuaCAqLywKLQkJCQkx
Q0E0RkNFRTI3MzUxRkIyMDAyN0ZENUEgLyogR1BVUGlwZWxpbmVTdGF0aXN0aWNOYW1lLmlkbCAq
LywKIAkJCQkxQzI4OTU4MjI3MkY0OEYyMDBCM0UyQjQgLyogR1BVUG93ZXJQcmVmZXJlbmNlLmgg
Ki8sCiAJCQkJMUMyODk1NjkyNzJGMjc0NzAwQjNFMkI0IC8qIEdQVVBvd2VyUHJlZmVyZW5jZS5p
ZGwgKi8sCiAJCQkJMUMyODk1OEIyNzJGNUFGNTAwQjNFMkI0IC8qIEdQVVByZWRlZmluZWRDb2xv
clNwYWNlLmggKi8sCkBAIC0yMDI1Niw2ICsyMDI2Miw4IEBACiAJCQkJMUNBNEZDQTUyNzM1MENF
NjAwMjdGRDVBIC8qIEdQVVNoYWRlck1vZHVsZS5jcHAgKi8sCiAJCQkJMUNBNEZDRDUyNzM1MENG
ODAwMjdGRDVBIC8qIEdQVVNoYWRlck1vZHVsZS5oICovLAogCQkJCTFDQTRGQ0E3MjczNTBDRTYw
MDI3RkQ1QSAvKiBHUFVTaGFkZXJNb2R1bGUuaWRsICovLAorCQkJCTFDRUY0NUE3MjdCQjBBM0Qw
MEMzQTZCQyAvKiBHUFVTaGFkZXJNb2R1bGVDb21waWxhdGlvbkhpbnQuaCAqLywKKwkJCQkxQ0VG
NDVBNTI3QkIwOTZBMDBDM0E2QkMgLyogR1BVU2hhZGVyTW9kdWxlQ29tcGlsYXRpb25IaW50Lmlk
bCAqLywKIAkJCQkxQ0E0RkNCMTI3MzUwQ0VBMDAyN0ZENUEgLyogR1BVU2hhZGVyTW9kdWxlRGVz
Y3JpcHRvci5oICovLAogCQkJCTFDQTRGQ0FDMjczNTBDRTgwMDI3RkQ1QSAvKiBHUFVTaGFkZXJN
b2R1bGVEZXNjcmlwdG9yLmlkbCAqLywKIAkJCQkxQ0E0RkM2QTI3MzRGOUY1MDAyN0ZENUEgLyog
R1BVU2hhZGVyU3RhZ2UuaCAqLywKQEAgLTIzNTMyLDYgKzIzNTQwLDggQEAKIAkJCQkxQzkwNzg0
RTI3NTFGRDZGMDA0RUYxNjUgLyogSlNHUFVDb21tYW5kRW5jb2Rlci5oICovLAogCQkJCTFDOTA3
N0U0Mjc1MUZENDQwMDRFRjE2NSAvKiBKU0dQVUNvbW1hbmRFbmNvZGVyRGVzY3JpcHRvci5jcHAg
Ki8sCiAJCQkJMUM5MDc4NUUyNzUxRkQ3NTAwNEVGMTY1IC8qIEpTR1BVQ29tbWFuZEVuY29kZXJE
ZXNjcmlwdG9yLmggKi8sCisJCQkJMUNFRjQ1QjEyN0JCOTA3RjAwQzNBNkJDIC8qIEpTR1BVQ29t
bWFuZHNNaXhpbi5jcHAgKi8sCisJCQkJMUNFRjQ1QjAyN0JCOTA3RjAwQzNBNkJDIC8qIEpTR1BV
Q29tbWFuZHNNaXhpbi5oICovLAogCQkJCTFDOTA3ODdCMjc1MUZEODAwMDRFRjE2NSAvKiBKU0dQ
VUNvbXBhcmVGdW5jdGlvbi5jcHAgKi8sCiAJCQkJMUM5MDc4OEIyNzUxRkQ4NzAwNEVGMTY1IC8q
IEpTR1BVQ29tcGFyZUZ1bmN0aW9uLmggKi8sCiAJCQkJMUM5MDc4OTEyNzUxRkQ4OTAwNEVGMTY1
IC8qIEpTR1BVQ29tcGlsYXRpb25JbmZvLmNwcCAqLywKQEAgLTIzNTU0LDYgKzIzNTY0LDggQEAK
IAkJCQkxQzkwNzg3MDI3NTFGRDdDMDA0RUYxNjUgLyogSlNHUFVDb21wdXRlUGlwZWxpbmVEZXNj
cmlwdG9yLmggKi8sCiAJCQkJMUM5MDc4NTkyNzUxRkQ3MzAwNEVGMTY1IC8qIEpTR1BVQ3VsbE1v
ZGUuY3BwICovLAogCQkJCTFDOTA3N0U4Mjc1MUZENDYwMDRFRjE2NSAvKiBKU0dQVUN1bGxNb2Rl
LmggKi8sCisJCQkJMUNFRjQ1QjIyN0JCOTA4MDAwQzNBNkJDIC8qIEpTR1BVRGVidWdDb21tYW5k
c01peGluLmNwcCAqLywKKwkJCQkxQ0VGNDVCNDI3QkI5MDgxMDBDM0E2QkMgLyogSlNHUFVEZWJ1
Z0NvbW1hbmRzTWl4aW4uaCAqLywKIAkJCQkxQzkwNzg5NDI3NTFGRDhBMDA0RUYxNjUgLyogSlNH
UFVEZXB0aFN0ZW5jaWxTdGF0ZS5jcHAgKi8sCiAJCQkJMUM5MDc4OTkyNzUxRkQ4QzAwNEVGMTY1
IC8qIEpTR1BVRGVwdGhTdGVuY2lsU3RhdGUuaCAqLywKIAkJCQkxQzkwNzg4RTI3NTFGRDg4MDA0
RUYxNjUgLyogSlNHUFVEZXZpY2UuY3BwICovLApAQCAtMjM2MjQsOCArMjM2MzYsNiBAQAogCQkJ
CTFDOTA3OEMwMjc1MUZEOUIwMDRFRjE2NSAvKiBKU0dQVVBpcGVsaW5lTGF5b3V0LmggKi8sCiAJ
CQkJMUM5MDc4NTAyNzUxRkQ2RjAwNEVGMTY1IC8qIEpTR1BVUGlwZWxpbmVMYXlvdXREZXNjcmlw
dG9yLmNwcCAqLywKIAkJCQkxQzkwNzdGQTI3NTFGRDREMDA0RUYxNjUgLyogSlNHUFVQaXBlbGlu
ZUxheW91dERlc2NyaXB0b3IuaCAqLywKLQkJCQkxQzkwNzg4RDI3NTFGRDg3MDA0RUYxNjUgLyog
SlNHUFVQaXBlbGluZVN0YXRpc3RpY05hbWUuY3BwICovLAotCQkJCTFDOTA3ODBCMjc1MUZENTQw
MDRFRjE2NSAvKiBKU0dQVVBpcGVsaW5lU3RhdGlzdGljTmFtZS5oICovLAogCQkJCTFDOTA3ODdF
Mjc1MUZEODIwMDRFRjE2NSAvKiBKU0dQVVBvd2VyUHJlZmVyZW5jZS5jcHAgKi8sCiAJCQkJMUM5
MDc4OUUyNzUxRkQ4RTAwNEVGMTY1IC8qIEpTR1BVUG93ZXJQcmVmZXJlbmNlLmggKi8sCiAJCQkJ
MUM5MDc4NTUyNzUxRkQ3MTAwNEVGMTY1IC8qIEpTR1BVUHJlZGVmaW5lZENvbG9yU3BhY2UuY3Bw
ICovLApAQCAtMjM2ODYsNiArMjM2OTYsOCBAQAogCQkJCTFDOTA3ODhBMjc1MUZEODYwMDRFRjE2
NSAvKiBKU0dQVVNhbXBsZXJEZXNjcmlwdG9yLmggKi8sCiAJCQkJMUM5MDc4NTcyNzUxRkQ3MjAw
NEVGMTY1IC8qIEpTR1BVU2hhZGVyTW9kdWxlLmNwcCAqLywKIAkJCQkxQzkwNzhBNTI3NTFGRDkx
MDA0RUYxNjUgLyogSlNHUFVTaGFkZXJNb2R1bGUuaCAqLywKKwkJCQkxQ0VGNDVCNTI3QkI5MDgy
MDBDM0E2QkMgLyogSlNHUFVTaGFkZXJNb2R1bGVDb21waWxhdGlvbkhpbnQuY3BwICovLAorCQkJ
CTFDRUY0NUIzMjdCQjkwODEwMEMzQTZCQyAvKiBKU0dQVVNoYWRlck1vZHVsZUNvbXBpbGF0aW9u
SGludC5oICovLAogCQkJCTFDOTA3N0U5Mjc1MUZENDYwMDRFRjE2NSAvKiBKU0dQVVNoYWRlck1v
ZHVsZURlc2NyaXB0b3IuY3BwICovLAogCQkJCTFDOTA3ODM5Mjc1MUZENjYwMDRFRjE2NSAvKiBK
U0dQVVNoYWRlck1vZHVsZURlc2NyaXB0b3IuaCAqLywKIAkJCQkxQzkwNzg3MjI3NTFGRDdEMDA0
RUYxNjUgLyogSlNHUFVTaGFkZXJTdGFnZS5jcHAgKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
R1BVL1dlYkdQVS9BZGFwdGVyLmggYi9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9BZGFwdGVyLmgKaW5k
ZXggZTdkNDM0OTg4NmU2NzkxYzVjNWJkODM3MzM0YmM1NTJiMWJkZWQwNC4uOGNhNGUwZjBlNGI5
N2VlMGE0Nzg4YmI4YzQ3NmZiNTI3NGZiYjMyMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkdQVS9X
ZWJHUFUvQWRhcHRlci5oCisrKyBiL1NvdXJjZS9XZWJHUFUvV2ViR1BVL0FkYXB0ZXIuaApAQCAt
NDUsMTAgKzQ1LDEwIEBAIHB1YmxpYzoKIAogICAgIH5BZGFwdGVyKCk7CiAKKyAgICBzaXplX3Qg
ZW51bWVyYXRlRmVhdHVyZXMoV0dQVUZlYXR1cmVOYW1lKiBmZWF0dXJlcyk7CiAgICAgYm9vbCBn
ZXRMaW1pdHMoV0dQVVN1cHBvcnRlZExpbWl0cyopOwogICAgIHZvaWQgZ2V0UHJvcGVydGllcyhX
R1BVQWRhcHRlclByb3BlcnRpZXMqKTsKICAgICBib29sIGhhc0ZlYXR1cmUoV0dQVUZlYXR1cmVO
YW1lKTsKLSAgICBXR1BVRmVhdHVyZU5hbWUgZ2V0RmVhdHVyZUF0SW5kZXgoc2l6ZV90KTsKICAg
ICB2b2lkIHJlcXVlc3REZXZpY2UoY29uc3QgV0dQVURldmljZURlc2NyaXB0b3IqLCBXVEY6OkZ1
bmN0aW9uPHZvaWQoV0dQVVJlcXVlc3REZXZpY2VTdGF0dXMsIFJlZjxEZXZpY2U+JiYsIGNvbnN0
IGNoYXIqKT4mJiBjYWxsYmFjayk7CiAKIHByaXZhdGU6CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
R1BVL1dlYkdQVS9BZGFwdGVyLm1tIGIvU291cmNlL1dlYkdQVS9XZWJHUFUvQWRhcHRlci5tbQpp
bmRleCBlZTFiYjI4ZTI3ZTBkYzNiNzU4ZTZkOWU3NmM2NzNlZTVjMzE1YTQ0Li5lMjk0M2NjNGI1
NDdhOGUzYjYxNTY0ZGJlMDI4YzFlZDlmMWVmNjEzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViR1BV
L1dlYkdQVS9BZGFwdGVyLm1tCisrKyBiL1NvdXJjZS9XZWJHUFUvV2ViR1BVL0FkYXB0ZXIubW0K
QEAgLTM2LDYgKzM2LDEyIEBAIEFkYXB0ZXI6OkFkYXB0ZXIoKSA9IGRlZmF1bHQ7CiAKIEFkYXB0
ZXI6On5BZGFwdGVyKCkgPSBkZWZhdWx0OwogCitzaXplX3QgQWRhcHRlcjo6ZW51bWVyYXRlRmVh
dHVyZXMoV0dQVUZlYXR1cmVOYW1lKiBmZWF0dXJlcykKK3sKKyAgICBVTlVTRURfUEFSQU0oZmVh
dHVyZXMpOworICAgIHJldHVybiAwOworfQorCiBib29sIEFkYXB0ZXI6OmdldExpbWl0cyhXR1BV
U3VwcG9ydGVkTGltaXRzKiBsaW1pdHMpCiB7CiAgICAgVU5VU0VEX1BBUkFNKGxpbWl0cyk7CkBA
IC01MywxMiArNTksNiBAQCBib29sIEFkYXB0ZXI6Omhhc0ZlYXR1cmUoV0dQVUZlYXR1cmVOYW1l
IGZlYXR1cmUpCiAgICAgcmV0dXJuIGZhbHNlOwogfQogCi1XR1BVRmVhdHVyZU5hbWUgQWRhcHRl
cjo6Z2V0RmVhdHVyZUF0SW5kZXgoc2l6ZV90IGluZGV4KQotewotICAgIFVOVVNFRF9QQVJBTShp
bmRleCk7Ci0gICAgcmV0dXJuIFdHUFVGZWF0dXJlTmFtZV9VbmRlZmluZWQ7Ci19Ci0KIHZvaWQg
QWRhcHRlcjo6cmVxdWVzdERldmljZShjb25zdCBXR1BVRGV2aWNlRGVzY3JpcHRvciogZGVzY3Jp
cHRvciwgV1RGOjpGdW5jdGlvbjx2b2lkKFdHUFVSZXF1ZXN0RGV2aWNlU3RhdHVzLCBSZWY8RGV2
aWNlPiYmLCBjb25zdCBjaGFyKik+JiYgY2FsbGJhY2spCiB7CiAgICAgVU5VU0VEX1BBUkFNKGRl
c2NyaXB0b3IpOwpAQCAtNzIsNiArNzIsMTEgQEAgdm9pZCB3Z3B1QWRhcHRlclJlbGVhc2UoV0dQ
VUFkYXB0ZXIgYWRhcHRlcikKICAgICBkZWxldGUgYWRhcHRlcjsKIH0KIAorc2l6ZV90IHdncHVB
ZGFwdGVyRW51bWVyYXRlRmVhdHVyZXMoV0dQVUFkYXB0ZXIgYWRhcHRlciwgV0dQVUZlYXR1cmVO
YW1lKiBmZWF0dXJlcykKK3sKKyAgICByZXR1cm4gYWRhcHRlci0+YWRhcHRlci0+ZW51bWVyYXRl
RmVhdHVyZXMoZmVhdHVyZXMpOworfQorCiBib29sIHdncHVBZGFwdGVyR2V0TGltaXRzKFdHUFVB
ZGFwdGVyIGFkYXB0ZXIsIFdHUFVTdXBwb3J0ZWRMaW1pdHMqIGxpbWl0cykKIHsKICAgICByZXR1
cm4gYWRhcHRlci0+YWRhcHRlci0+Z2V0TGltaXRzKGxpbWl0cyk7CkBAIC04NywxMSArOTIsNiBA
QCBib29sIHdncHVBZGFwdGVySGFzRmVhdHVyZShXR1BVQWRhcHRlciBhZGFwdGVyLCBXR1BVRmVh
dHVyZU5hbWUgZmVhdHVyZSkKICAgICByZXR1cm4gYWRhcHRlci0+YWRhcHRlci0+aGFzRmVhdHVy
ZShmZWF0dXJlKTsKIH0KIAotV0dQVUZlYXR1cmVOYW1lIHdncHVBZGFwdGVyR2V0RmVhdHVyZUF0
SW5kZXgoV0dQVUFkYXB0ZXIgYWRhcHRlciwgc2l6ZV90IGluZGV4KQotewotICAgIHJldHVybiBh
ZGFwdGVyLT5hZGFwdGVyLT5nZXRGZWF0dXJlQXRJbmRleChpbmRleCk7Ci19Ci0KIHZvaWQgd2dw
dUFkYXB0ZXJSZXF1ZXN0RGV2aWNlKFdHUFVBZGFwdGVyIGFkYXB0ZXIsIGNvbnN0IFdHUFVEZXZp
Y2VEZXNjcmlwdG9yKiBkZXNjcmlwdG9yLCBXR1BVUmVxdWVzdERldmljZUNhbGxiYWNrIGNhbGxi
YWNrLCB2b2lkKiB1c2VyZGF0YSkKIHsKICAgICBhZGFwdGVyLT5hZGFwdGVyLT5yZXF1ZXN0RGV2
aWNlKGRlc2NyaXB0b3IsIFtjYWxsYmFjaywgdXNlcmRhdGFdIChXR1BVUmVxdWVzdERldmljZVN0
YXR1cyBzdGF0dXMsIFJlZjxXZWJHUFU6OkRldmljZT4mJiBkZXZpY2UsIGNvbnN0IGNoYXIqIG1l
c3NhZ2UpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJHUFUvV2ViR1BVL0NvbW1hbmRFbmNvZGVy
LmggYi9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9Db21tYW5kRW5jb2Rlci5oCmluZGV4IDU5Y2I0MzEy
ZDM1YmE5NDMzOGI4Y2U0YmY3ZDA0ZTUzOWYyOTlmNzcuLjJmNjBmMWM4YTc1MmNkZTdmMDgyNDRl
YmNkYzg5MTMzZDcxYTc0YzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJHUFUvV2ViR1BVL0NvbW1h
bmRFbmNvZGVyLmgKKysrIGIvU291cmNlL1dlYkdQVS9XZWJHUFUvQ29tbWFuZEVuY29kZXIuaApA
QCAtNTQsNyArNTQsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBjb3B5QnVmZmVyVG9UZXh0dXJlKGNv
bnN0IFdHUFVJbWFnZUNvcHlCdWZmZXIqIHNvdXJjZSwgY29uc3QgV0dQVUltYWdlQ29weVRleHR1
cmUqIGRlc3RpbmF0aW9uLCBjb25zdCBXR1BVRXh0ZW50M0QqIGNvcHlTaXplKTsKICAgICB2b2lk
IGNvcHlUZXh0dXJlVG9CdWZmZXIoY29uc3QgV0dQVUltYWdlQ29weVRleHR1cmUqIHNvdXJjZSwg
Y29uc3QgV0dQVUltYWdlQ29weUJ1ZmZlciogZGVzdGluYXRpb24sIGNvbnN0IFdHUFVFeHRlbnQz
RCogY29weVNpemUpOwogICAgIHZvaWQgY29weVRleHR1cmVUb1RleHR1cmUoY29uc3QgV0dQVUlt
YWdlQ29weVRleHR1cmUqIHNvdXJjZSwgY29uc3QgV0dQVUltYWdlQ29weVRleHR1cmUqIGRlc3Rp
bmF0aW9uLCBjb25zdCBXR1BVRXh0ZW50M0QqIGNvcHlTaXplKTsKLSAgICB2b2lkIGZpbGxCdWZm
ZXIoY29uc3QgQnVmZmVyJiBkZXN0aW5hdGlvbiwgdWludDY0X3QgZGVzdGluYXRpb25PZmZzZXQs
IHVpbnQ2NF90IHNpemUpOworICAgIHZvaWQgY2xlYXJCdWZmZXIoY29uc3QgQnVmZmVyJiwgdWlu
dDY0X3Qgb2Zmc2V0LCB1aW50NjRfdCBzaXplKTsKICAgICBSZWY8Q29tbWFuZEJ1ZmZlcj4gZmlu
aXNoKGNvbnN0IFdHUFVDb21tYW5kQnVmZmVyRGVzY3JpcHRvciopOwogICAgIHZvaWQgaW5zZXJ0
RGVidWdNYXJrZXIoY29uc3QgY2hhciogbWFya2VyTGFiZWwpOwogICAgIHZvaWQgcG9wRGVidWdH
cm91cCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkdQVS9XZWJHUFUvQ29tbWFuZEVuY29kZXIu
bW0gYi9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9Db21tYW5kRW5jb2Rlci5tbQppbmRleCA4ZDM4ZTE3
OWE0NDM5N2JmZjgzNjBlZjQxNGM4ZjcyZjAxNWJkYWZmLi5kZDVjYzNiMzMwYTAyNjIwOTZmNTQx
ODM0ZjZjYzZmN2UyYjRiNGI3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9Db21t
YW5kRW5jb2Rlci5tbQorKysgYi9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9Db21tYW5kRW5jb2Rlci5t
bQpAQCAtODEsMTAgKzgxLDEwIEBAIHZvaWQgQ29tbWFuZEVuY29kZXI6OmNvcHlUZXh0dXJlVG9U
ZXh0dXJlKGNvbnN0IFdHUFVJbWFnZUNvcHlUZXh0dXJlKiBzb3VyY2UsIGNvCiAgICAgVU5VU0VE
X1BBUkFNKGNvcHlTaXplKTsKIH0KIAotdm9pZCBDb21tYW5kRW5jb2Rlcjo6ZmlsbEJ1ZmZlcihj
b25zdCBCdWZmZXImIGRlc3RpbmF0aW9uLCB1aW50NjRfdCBkZXN0aW5hdGlvbk9mZnNldCwgdWlu
dDY0X3Qgc2l6ZSkKK3ZvaWQgQ29tbWFuZEVuY29kZXI6OmNsZWFyQnVmZmVyKGNvbnN0IEJ1ZmZl
ciYgYnVmZmVyLCB1aW50NjRfdCBvZmZzZXQsIHVpbnQ2NF90IHNpemUpCiB7Ci0gICAgVU5VU0VE
X1BBUkFNKGRlc3RpbmF0aW9uKTsKLSAgICBVTlVTRURfUEFSQU0oZGVzdGluYXRpb25PZmZzZXQp
OworICAgIFVOVVNFRF9QQVJBTShidWZmZXIpOworICAgIFVOVVNFRF9QQVJBTShvZmZzZXQpOwog
ICAgIFVOVVNFRF9QQVJBTShzaXplKTsKIH0KIApAQCAtMTY1LDkgKzE2NSw5IEBAIHZvaWQgd2dw
dUNvbW1hbmRFbmNvZGVyQ29weVRleHR1cmVUb1RleHR1cmUoV0dQVUNvbW1hbmRFbmNvZGVyIGNv
bW1hbmRFbmNvZGVyLCBjCiAgICAgY29tbWFuZEVuY29kZXItPmNvbW1hbmRFbmNvZGVyLT5jb3B5
VGV4dHVyZVRvVGV4dHVyZShzb3VyY2UsIGRlc3RpbmF0aW9uLCBjb3B5U2l6ZSk7CiB9CiAKLXZv
aWQgd2dwdUNvbW1hbmRFbmNvZGVyRmlsbEJ1ZmZlcihXR1BVQ29tbWFuZEVuY29kZXIgY29tbWFu
ZEVuY29kZXIsIFdHUFVCdWZmZXIgZGVzdGluYXRpb24sIHVpbnQ2NF90IGRlc3RpbmF0aW9uT2Zm
c2V0LCB1aW50NjRfdCBzaXplKQordm9pZCB3Z3B1Q29tbWFuZEVuY29kZXJDbGVhckJ1ZmZlcihX
R1BVQ29tbWFuZEVuY29kZXIgY29tbWFuZEVuY29kZXIsIFdHUFVCdWZmZXIgYnVmZmVyLCB1aW50
NjRfdCBvZmZzZXQsIHVpbnQ2NF90IHNpemUpCiB7Ci0gICAgY29tbWFuZEVuY29kZXItPmNvbW1h
bmRFbmNvZGVyLT5maWxsQnVmZmVyKGRlc3RpbmF0aW9uLT5idWZmZXIsIGRlc3RpbmF0aW9uT2Zm
c2V0LCBzaXplKTsKKyAgICBjb21tYW5kRW5jb2Rlci0+Y29tbWFuZEVuY29kZXItPmNsZWFyQnVm
ZmVyKGJ1ZmZlci0+YnVmZmVyLCBvZmZzZXQsIHNpemUpOwogfQogCiBXR1BVQ29tbWFuZEJ1ZmZl
ciB3Z3B1Q29tbWFuZEVuY29kZXJGaW5pc2goV0dQVUNvbW1hbmRFbmNvZGVyIGNvbW1hbmRFbmNv
ZGVyLCBjb25zdCBXR1BVQ29tbWFuZEJ1ZmZlckRlc2NyaXB0b3IqIGRlc2NyaXB0b3IpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9Db21wdXRlUGFzc0VuY29kZXIuaCBiL1NvdXJj
ZS9XZWJHUFUvV2ViR1BVL0NvbXB1dGVQYXNzRW5jb2Rlci5oCmluZGV4IDBjNjRhZDk2MWNiNzYz
YmIwYmVkMDY5OGNjMmZlZmQwYmQ5YmY4MWYuLmQwNjQzMmIyMGQyZGI4ZTJiOGUyZmI0MjhkYzA4
ZWUzYzAwODI5ODIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJHUFUvV2ViR1BVL0NvbXB1dGVQYXNz
RW5jb2Rlci5oCisrKyBiL1NvdXJjZS9XZWJHUFUvV2ViR1BVL0NvbXB1dGVQYXNzRW5jb2Rlci5o
CkBAIC01Nyw3ICs1Nyw2IEBAIHB1YmxpYzoKICAgICB2b2lkIHB1c2hEZWJ1Z0dyb3VwKGNvbnN0
IGNoYXIqIGdyb3VwTGFiZWwpOwogICAgIHZvaWQgc2V0QmluZEdyb3VwKHVpbnQzMl90IGdyb3Vw
SW5kZXgsIGNvbnN0IEJpbmRHcm91cCYsIHVpbnQzMl90IGR5bmFtaWNPZmZzZXRDb3VudCwgY29u
c3QgdWludDMyX3QqIGR5bmFtaWNPZmZzZXRzKTsKICAgICB2b2lkIHNldFBpcGVsaW5lKGNvbnN0
IENvbXB1dGVQaXBlbGluZSYpOwotICAgIHZvaWQgd3JpdGVUaW1lc3RhbXAoY29uc3QgUXVlcnlT
ZXQmLCB1aW50MzJfdCBxdWVyeUluZGV4KTsKICAgICB2b2lkIHNldExhYmVsKGNvbnN0IGNoYXIq
KTsKIAogcHJpdmF0ZToKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJHUFUvV2ViR1BVL0NvbXB1dGVQ
YXNzRW5jb2Rlci5tbSBiL1NvdXJjZS9XZWJHUFUvV2ViR1BVL0NvbXB1dGVQYXNzRW5jb2Rlci5t
bQppbmRleCBjMTFkNTRlZDM0NDE1NmUzZjU1Y2VlYTMxYTc3MzM4ODAyMzBlZTBjLi44OWJhMDRk
NTNlOWE0MDdlZWM4YTc2NjYyMmZlYTVlNTllN2E1OTE2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
R1BVL1dlYkdQVS9Db21wdXRlUGFzc0VuY29kZXIubW0KKysrIGIvU291cmNlL1dlYkdQVS9XZWJH
UFUvQ29tcHV0ZVBhc3NFbmNvZGVyLm1tCkBAIC05MiwxMiArOTIsNiBAQCB2b2lkIENvbXB1dGVQ
YXNzRW5jb2Rlcjo6c2V0UGlwZWxpbmUoY29uc3QgQ29tcHV0ZVBpcGVsaW5lJiBwaXBlbGluZSkK
ICAgICBVTlVTRURfUEFSQU0ocGlwZWxpbmUpOwogfQogCi12b2lkIENvbXB1dGVQYXNzRW5jb2Rl
cjo6d3JpdGVUaW1lc3RhbXAoY29uc3QgUXVlcnlTZXQmIHF1ZXJ5U2V0LCB1aW50MzJfdCBxdWVy
eUluZGV4KQotewotICAgIFVOVVNFRF9QQVJBTShxdWVyeVNldCk7Ci0gICAgVU5VU0VEX1BBUkFN
KHF1ZXJ5SW5kZXgpOwotfQotCiB2b2lkIENvbXB1dGVQYXNzRW5jb2Rlcjo6c2V0TGFiZWwoY29u
c3QgY2hhciogbGFiZWwpCiB7CiAgICAgVU5VU0VEX1BBUkFNKGxhYmVsKTsKQEAgLTE2MCwxMSAr
MTU0LDYgQEAgdm9pZCB3Z3B1Q29tcHV0ZVBhc3NFbmNvZGVyU2V0UGlwZWxpbmUoV0dQVUNvbXB1
dGVQYXNzRW5jb2RlciBjb21wdXRlUGFzc0VuY29kZXIKICAgICBjb21wdXRlUGFzc0VuY29kZXIt
PmNvbXB1dGVQYXNzRW5jb2Rlci0+c2V0UGlwZWxpbmUocGlwZWxpbmUtPmNvbXB1dGVQaXBlbGlu
ZSk7CiB9CiAKLXZvaWQgd2dwdUNvbXB1dGVQYXNzRW5jb2RlcldyaXRlVGltZXN0YW1wKFdHUFVD
b21wdXRlUGFzc0VuY29kZXIgY29tcHV0ZVBhc3NFbmNvZGVyLCBXR1BVUXVlcnlTZXQgcXVlcnlT
ZXQsIHVpbnQzMl90IHF1ZXJ5SW5kZXgpCi17Ci0gICAgY29tcHV0ZVBhc3NFbmNvZGVyLT5jb21w
dXRlUGFzc0VuY29kZXItPndyaXRlVGltZXN0YW1wKHF1ZXJ5U2V0LT5xdWVyeVNldCwgcXVlcnlJ
bmRleCk7Ci19Ci0KIHZvaWQgd2dwdUNvbXB1dGVQYXNzRW5jb2RlclNldExhYmVsKFdHUFVDb21w
dXRlUGFzc0VuY29kZXIgY29tcHV0ZVBhc3NFbmNvZGVyLCBjb25zdCBjaGFyKiBsYWJlbCkKIHsK
ICAgICBjb21wdXRlUGFzc0VuY29kZXItPmNvbXB1dGVQYXNzRW5jb2Rlci0+c2V0TGFiZWwobGFi
ZWwpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkdQVS9XZWJHUFUvRGV2aWNlLmggYi9Tb3VyY2Uv
V2ViR1BVL1dlYkdQVS9EZXZpY2UuaAppbmRleCAyODg3YWZlYWU1YmQ3NDIwNmRjMjY1MjA3NmQ5
NDk4MGYyNjIwYTk2Li41MjVjMTNiMTdkOTY0N2U2MmJjZDA5YWZjN2NiYTBmMzk0ZTY0OTZiIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9EZXZpY2UuaAorKysgYi9Tb3VyY2UvV2Vi
R1BVL1dlYkdQVS9EZXZpY2UuaApAQCAtNzUsOCArNzUsMTAgQEAgcHVibGljOgogICAgIFJlZjxT
d2FwQ2hhaW4+IGNyZWF0ZVN3YXBDaGFpbihjb25zdCBTdXJmYWNlJiwgY29uc3QgV0dQVVN3YXBD
aGFpbkRlc2NyaXB0b3IqKTsKICAgICBSZWY8VGV4dHVyZT4gY3JlYXRlVGV4dHVyZShjb25zdCBX
R1BVVGV4dHVyZURlc2NyaXB0b3IqKTsKICAgICB2b2lkIGRlc3Ryb3koKTsKKyAgICBzaXplX3Qg
ZW51bWVyYXRlRmVhdHVyZXMoV0dQVUZlYXR1cmVOYW1lKiBmZWF0dXJlcyk7CiAgICAgYm9vbCBn
ZXRMaW1pdHMoV0dQVVN1cHBvcnRlZExpbWl0cyopOwogICAgIFJlZjxRdWV1ZT4gZ2V0UXVldWUo
KTsKKyAgICBib29sIGhhc0ZlYXR1cmUoV0dQVUZlYXR1cmVOYW1lKTsKICAgICBib29sIHBvcEVy
cm9yU2NvcGUoV1RGOjpGdW5jdGlvbjx2b2lkKFdHUFVFcnJvclR5cGUsIGNvbnN0IGNoYXIqKT4m
JiBjYWxsYmFjayk7CiAgICAgdm9pZCBwdXNoRXJyb3JTY29wZShXR1BVRXJyb3JGaWx0ZXIpOwog
ICAgIHZvaWQgc2V0RGV2aWNlTG9zdENhbGxiYWNrKFdURjo6RnVuY3Rpb248dm9pZChXR1BVRGV2
aWNlTG9zdFJlYXNvbiwgY29uc3QgY2hhciopPiYmKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJH
UFUvV2ViR1BVL0RldmljZS5tbSBiL1NvdXJjZS9XZWJHUFUvV2ViR1BVL0RldmljZS5tbQppbmRl
eCBmMWE4NTRmZGIyYTk1NjQyNDlmNWIwZGQ1MzVlY2E0OGU1MWZhNTg0Li4xNGY1NWNkNDBiMWJj
N2FjM2U4ZTcyZWE1OTBkMDcxYTMyZmRlNzhiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViR1BVL1dl
YkdQVS9EZXZpY2UubW0KKysrIGIvU291cmNlL1dlYkdQVS9XZWJHUFUvRGV2aWNlLm1tCkBAIC0x
NDUsNiArMTQ1LDEyIEBAIHZvaWQgRGV2aWNlOjpkZXN0cm95KCkKIHsKIH0KIAorc2l6ZV90IERl
dmljZTo6ZW51bWVyYXRlRmVhdHVyZXMoV0dQVUZlYXR1cmVOYW1lKiBmZWF0dXJlcykKK3sKKyAg
ICBVTlVTRURfUEFSQU0oZmVhdHVyZXMpOworICAgIHJldHVybiAwOworfQorCiBib29sIERldmlj
ZTo6Z2V0TGltaXRzKFdHUFVTdXBwb3J0ZWRMaW1pdHMqIGxpbWl0cykKIHsKICAgICBVTlVTRURf
UEFSQU0obGltaXRzKTsKQEAgLTE1Niw2ICsxNjIsMTIgQEAgUmVmPFF1ZXVlPiBEZXZpY2U6Omdl
dFF1ZXVlKCkKICAgICByZXR1cm4gUXVldWU6OmNyZWF0ZSgpOwogfQogCitib29sIERldmljZTo6
aGFzRmVhdHVyZShXR1BVRmVhdHVyZU5hbWUgZmVhdHVyZSkKK3sKKyAgICBVTlVTRURfUEFSQU0o
ZmVhdHVyZSk7CisgICAgcmV0dXJuIGZhbHNlOworfQorCiBib29sIERldmljZTo6cG9wRXJyb3JT
Y29wZShXVEY6OkZ1bmN0aW9uPHZvaWQoV0dQVUVycm9yVHlwZSwgY29uc3QgY2hhciopPiYmIGNh
bGxiYWNrKQogewogICAgIFVOVVNFRF9QQVJBTShjYWxsYmFjayk7CkBAIC0yNzMsNiArMjg1LDEx
IEBAIHZvaWQgd2dwdURldmljZURlc3Ryb3koV0dQVURldmljZSBkZXZpY2UpCiAgICAgZGV2aWNl
LT5kZXZpY2UtPmRlc3Ryb3koKTsKIH0KIAorc2l6ZV90IHdncHVEZXZpY2VFbnVtZXJhdGVGZWF0
dXJlcyhXR1BVRGV2aWNlIGRldmljZSwgV0dQVUZlYXR1cmVOYW1lKiBmZWF0dXJlcykKK3sKKyAg
ICByZXR1cm4gZGV2aWNlLT5kZXZpY2UtPmVudW1lcmF0ZUZlYXR1cmVzKGZlYXR1cmVzKTsKK30K
KwogYm9vbCB3Z3B1RGV2aWNlR2V0TGltaXRzKFdHUFVEZXZpY2UgZGV2aWNlLCBXR1BVU3VwcG9y
dGVkTGltaXRzKiBsaW1pdHMpCiB7CiAgICAgcmV0dXJuIGRldmljZS0+ZGV2aWNlLT5nZXRMaW1p
dHMobGltaXRzKTsKQEAgLTI4Myw2ICszMDAsMTEgQEAgV0dQVVF1ZXVlIHdncHVEZXZpY2VHZXRR
dWV1ZShXR1BVRGV2aWNlIGRldmljZSkKICAgICByZXR1cm4gbmV3IFdHUFVRdWV1ZUltcGwgeyBk
ZXZpY2UtPmRldmljZS0+Z2V0UXVldWUoKSB9OwogfQogCitib29sIHdncHVEZXZpY2VIYXNGZWF0
dXJlKFdHUFVEZXZpY2UgZGV2aWNlLCBXR1BVRmVhdHVyZU5hbWUgZmVhdHVyZSkKK3sKKyAgICBy
ZXR1cm4gZGV2aWNlLT5kZXZpY2UtPmhhc0ZlYXR1cmUoZmVhdHVyZSk7Cit9CisKIGJvb2wgd2dw
dURldmljZVBvcEVycm9yU2NvcGUoV0dQVURldmljZSBkZXZpY2UsIFdHUFVFcnJvckNhbGxiYWNr
IGNhbGxiYWNrLCB2b2lkKiB1c2VyZGF0YSkKIHsKICAgICByZXR1cm4gZGV2aWNlLT5kZXZpY2Ut
PnBvcEVycm9yU2NvcGUoW2NhbGxiYWNrLCB1c2VyZGF0YV0gKFdHUFVFcnJvclR5cGUgdHlwZSwg
Y29uc3QgY2hhciogbWVzc2FnZSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkdQVS9XZWJHUFUv
SW5zdGFuY2UubW0gYi9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9JbnN0YW5jZS5tbQppbmRleCA1MDJi
ZTQ3OWIxYzk2ODAxYmIzMTNiNjAxODJkM2JlMmM5YjVlNTc1Li41MmNlMmE3YzBmNjI2NWY1NjBj
ZTViNjc4OTk4ZTU4YjMyNzRkYjQ1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9J
bnN0YW5jZS5tbQorKysgYi9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9JbnN0YW5jZS5tbQpAQCAtNzIs
MjYgKzcyLDE3IEBAIFdHUFVQcm9jIHdncHVHZXRQcm9jQWRkcmVzcyhXR1BVRGV2aWNlIGRldmlj
ZSwgY29uc3QgY2hhciogcHJvY05hbWUpCiB7CiAgICAgVU5VU0VEX1BBUkFNKGRldmljZSk7CiAg
ICAgLy8gRklYTUU6IFVzZSBncGVyZiB0byBtYWtlIHRoaXMgZmFzdGVyLgotICAgIGlmICghc3Ry
Y21wKHByb2NOYW1lLCAid2dwdUFkYXB0ZXJHZXRGZWF0dXJlQXRJbmRleCIpKQotICAgICAgICBy
ZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxXR1BVUHJvYz4oJndncHVBZGFwdGVyR2V0RmVhdHVyZUF0
SW5kZXgpOworICAgIC8vIEZJWE1FOiBHZW5lcmF0ZSB0aGlzIGF0IGJ1aWxkIHRpbWUKKyAgICBp
ZiAoIXN0cmNtcChwcm9jTmFtZSwgIndncHVBZGFwdGVyRW51bWVyYXRlRmVhdHVyZXMiKSkKKyAg
ICAgICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8V0dQVVByb2M+KCZ3Z3B1QWRhcHRlckVudW1l
cmF0ZUZlYXR1cmVzKTsKICAgICBpZiAoIXN0cmNtcChwcm9jTmFtZSwgIndncHVBZGFwdGVyR2V0
TGltaXRzIikpCiAgICAgICAgIHJldHVybiByZWludGVycHJldF9jYXN0PFdHUFVQcm9jPigmd2dw
dUFkYXB0ZXJHZXRMaW1pdHMpOwogICAgIGlmICghc3RyY21wKHByb2NOYW1lLCAid2dwdUFkYXB0
ZXJHZXRQcm9wZXJ0aWVzIikpCiAgICAgICAgIHJldHVybiByZWludGVycHJldF9jYXN0PFdHUFVQ
cm9jPigmd2dwdUFkYXB0ZXJHZXRQcm9wZXJ0aWVzKTsKICAgICBpZiAoIXN0cmNtcChwcm9jTmFt
ZSwgIndncHVBZGFwdGVySGFzRmVhdHVyZSIpKQogICAgICAgICByZXR1cm4gcmVpbnRlcnByZXRf
Y2FzdDxXR1BVUHJvYz4oJndncHVBZGFwdGVySGFzRmVhdHVyZSk7Ci0gICAgaWYgKCFzdHJjbXAo
cHJvY05hbWUsICJ3Z3B1QWRhcHRlclJlbGVhc2UiKSkKLSAgICAgICAgcmV0dXJuIHJlaW50ZXJw
cmV0X2Nhc3Q8V0dQVVByb2M+KCZ3Z3B1QWRhcHRlclJlbGVhc2UpOwogICAgIGlmICghc3RyY21w
KHByb2NOYW1lLCAid2dwdUFkYXB0ZXJSZXF1ZXN0RGV2aWNlIikpCiAgICAgICAgIHJldHVybiBy
ZWludGVycHJldF9jYXN0PFdHUFVQcm9jPigmd2dwdUFkYXB0ZXJSZXF1ZXN0RGV2aWNlKTsKLSAg
ICBpZiAoIXN0cmNtcChwcm9jTmFtZSwgIndncHVCaW5kR3JvdXBMYXlvdXRSZWxlYXNlIikpCi0g
ICAgICAgIHJldHVybiByZWludGVycHJldF9jYXN0PFdHUFVQcm9jPigmd2dwdUJpbmRHcm91cExh
eW91dFJlbGVhc2UpOwotICAgIGlmICghc3RyY21wKHByb2NOYW1lLCAid2dwdUJpbmRHcm91cExh
eW91dFNldExhYmVsIikpCi0gICAgICAgIHJldHVybiByZWludGVycHJldF9jYXN0PFdHUFVQcm9j
Pigmd2dwdUJpbmRHcm91cExheW91dFNldExhYmVsKTsKLSAgICBpZiAoIXN0cmNtcChwcm9jTmFt
ZSwgIndncHVCaW5kR3JvdXBSZWxlYXNlIikpCi0gICAgICAgIHJldHVybiByZWludGVycHJldF9j
YXN0PFdHUFVQcm9jPigmd2dwdUJpbmRHcm91cFJlbGVhc2UpOwotICAgIGlmICghc3RyY21wKHBy
b2NOYW1lLCAid2dwdUJpbmRHcm91cFNldExhYmVsIikpCi0gICAgICAgIHJldHVybiByZWludGVy
cHJldF9jYXN0PFdHUFVQcm9jPigmd2dwdUJpbmRHcm91cFNldExhYmVsKTsKICAgICBpZiAoIXN0
cmNtcChwcm9jTmFtZSwgIndncHVCdWZmZXJEZXN0cm95IikpCiAgICAgICAgIHJldHVybiByZWlu
dGVycHJldF9jYXN0PFdHUFVQcm9jPigmd2dwdUJ1ZmZlckRlc3Ryb3kpOwogICAgIGlmICghc3Ry
Y21wKHByb2NOYW1lLCAid2dwdUJ1ZmZlckdldENvbnN0TWFwcGVkUmFuZ2UiKSkKQEAgLTEwMCwy
MCArOTEsMTQgQEAgV0dQVVByb2Mgd2dwdUdldFByb2NBZGRyZXNzKFdHUFVEZXZpY2UgZGV2aWNl
LCBjb25zdCBjaGFyKiBwcm9jTmFtZSkKICAgICAgICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8
V0dQVVByb2M+KCZ3Z3B1QnVmZmVyR2V0TWFwcGVkUmFuZ2UpOwogICAgIGlmICghc3RyY21wKHBy
b2NOYW1lLCAid2dwdUJ1ZmZlck1hcEFzeW5jIikpCiAgICAgICAgIHJldHVybiByZWludGVycHJl
dF9jYXN0PFdHUFVQcm9jPigmd2dwdUJ1ZmZlck1hcEFzeW5jKTsKLSAgICBpZiAoIXN0cmNtcChw
cm9jTmFtZSwgIndncHVCdWZmZXJSZWxlYXNlIikpCi0gICAgICAgIHJldHVybiByZWludGVycHJl
dF9jYXN0PFdHUFVQcm9jPigmd2dwdUJ1ZmZlclJlbGVhc2UpOwotICAgIGlmICghc3RyY21wKHBy
b2NOYW1lLCAid2dwdUJ1ZmZlclNldExhYmVsIikpCi0gICAgICAgIHJldHVybiByZWludGVycHJl
dF9jYXN0PFdHUFVQcm9jPigmd2dwdUJ1ZmZlclNldExhYmVsKTsKICAgICBpZiAoIXN0cmNtcChw
cm9jTmFtZSwgIndncHVCdWZmZXJVbm1hcCIpKQogICAgICAgICByZXR1cm4gcmVpbnRlcnByZXRf
Y2FzdDxXR1BVUHJvYz4oJndncHVCdWZmZXJVbm1hcCk7Ci0gICAgaWYgKCFzdHJjbXAocHJvY05h
bWUsICJ3Z3B1Q29tbWFuZEJ1ZmZlclJlbGVhc2UiKSkKLSAgICAgICAgcmV0dXJuIHJlaW50ZXJw
cmV0X2Nhc3Q8V0dQVVByb2M+KCZ3Z3B1Q29tbWFuZEJ1ZmZlclJlbGVhc2UpOwotICAgIGlmICgh
c3RyY21wKHByb2NOYW1lLCAid2dwdUNvbW1hbmRCdWZmZXJTZXRMYWJlbCIpKQotICAgICAgICBy
ZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxXR1BVUHJvYz4oJndncHVDb21tYW5kQnVmZmVyU2V0TGFi
ZWwpOwogICAgIGlmICghc3RyY21wKHByb2NOYW1lLCAid2dwdUNvbW1hbmRFbmNvZGVyQmVnaW5D
b21wdXRlUGFzcyIpKQogICAgICAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxXR1BVUHJvYz4o
JndncHVDb21tYW5kRW5jb2RlckJlZ2luQ29tcHV0ZVBhc3MpOwogICAgIGlmICghc3RyY21wKHBy
b2NOYW1lLCAid2dwdUNvbW1hbmRFbmNvZGVyQmVnaW5SZW5kZXJQYXNzIikpCiAgICAgICAgIHJl
dHVybiByZWludGVycHJldF9jYXN0PFdHUFVQcm9jPigmd2dwdUNvbW1hbmRFbmNvZGVyQmVnaW5S
ZW5kZXJQYXNzKTsKKyAgICBpZiAoIXN0cmNtcChwcm9jTmFtZSwgIndncHVDb21tYW5kRW5jb2Rl
ckNsZWFyQnVmZmVyIikpCisgICAgICAgIHJldHVybiByZWludGVycHJldF9jYXN0PFdHUFVQcm9j
Pigmd2dwdUNvbW1hbmRFbmNvZGVyQ2xlYXJCdWZmZXIpOwogICAgIGlmICghc3RyY21wKHByb2NO
YW1lLCAid2dwdUNvbW1hbmRFbmNvZGVyQ29weUJ1ZmZlclRvQnVmZmVyIikpCiAgICAgICAgIHJl
dHVybiByZWludGVycHJldF9jYXN0PFdHUFVQcm9jPigmd2dwdUNvbW1hbmRFbmNvZGVyQ29weUJ1
ZmZlclRvQnVmZmVyKTsKICAgICBpZiAoIXN0cmNtcChwcm9jTmFtZSwgIndncHVDb21tYW5kRW5j
b2RlckNvcHlCdWZmZXJUb1RleHR1cmUiKSkKQEAgLTEyMiw4ICsxMDcsNiBAQCBXR1BVUHJvYyB3
Z3B1R2V0UHJvY0FkZHJlc3MoV0dQVURldmljZSBkZXZpY2UsIGNvbnN0IGNoYXIqIHByb2NOYW1l
KQogICAgICAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxXR1BVUHJvYz4oJndncHVDb21tYW5k
RW5jb2RlckNvcHlUZXh0dXJlVG9CdWZmZXIpOwogICAgIGlmICghc3RyY21wKHByb2NOYW1lLCAi
d2dwdUNvbW1hbmRFbmNvZGVyQ29weVRleHR1cmVUb1RleHR1cmUiKSkKICAgICAgICAgcmV0dXJu
IHJlaW50ZXJwcmV0X2Nhc3Q8V0dQVVByb2M+KCZ3Z3B1Q29tbWFuZEVuY29kZXJDb3B5VGV4dHVy
ZVRvVGV4dHVyZSk7Ci0gICAgaWYgKCFzdHJjbXAocHJvY05hbWUsICJ3Z3B1Q29tbWFuZEVuY29k
ZXJGaWxsQnVmZmVyIikpCi0gICAgICAgIHJldHVybiByZWludGVycHJldF9jYXN0PFdHUFVQcm9j
Pigmd2dwdUNvbW1hbmRFbmNvZGVyRmlsbEJ1ZmZlcik7CiAgICAgaWYgKCFzdHJjbXAocHJvY05h
bWUsICJ3Z3B1Q29tbWFuZEVuY29kZXJGaW5pc2giKSkKICAgICAgICAgcmV0dXJuIHJlaW50ZXJw
cmV0X2Nhc3Q8V0dQVVByb2M+KCZ3Z3B1Q29tbWFuZEVuY29kZXJGaW5pc2gpOwogICAgIGlmICgh
c3RyY21wKHByb2NOYW1lLCAid2dwdUNvbW1hbmRFbmNvZGVySW5zZXJ0RGVidWdNYXJrZXIiKSkK
QEAgLTEzMiwxMiArMTE1LDggQEAgV0dQVVByb2Mgd2dwdUdldFByb2NBZGRyZXNzKFdHUFVEZXZp
Y2UgZGV2aWNlLCBjb25zdCBjaGFyKiBwcm9jTmFtZSkKICAgICAgICAgcmV0dXJuIHJlaW50ZXJw
cmV0X2Nhc3Q8V0dQVVByb2M+KCZ3Z3B1Q29tbWFuZEVuY29kZXJQb3BEZWJ1Z0dyb3VwKTsKICAg
ICBpZiAoIXN0cmNtcChwcm9jTmFtZSwgIndncHVDb21tYW5kRW5jb2RlclB1c2hEZWJ1Z0dyb3Vw
IikpCiAgICAgICAgIHJldHVybiByZWludGVycHJldF9jYXN0PFdHUFVQcm9jPigmd2dwdUNvbW1h
bmRFbmNvZGVyUHVzaERlYnVnR3JvdXApOwotICAgIGlmICghc3RyY21wKHByb2NOYW1lLCAid2dw
dUNvbW1hbmRFbmNvZGVyUmVsZWFzZSIpKQotICAgICAgICByZXR1cm4gcmVpbnRlcnByZXRfY2Fz
dDxXR1BVUHJvYz4oJndncHVDb21tYW5kRW5jb2RlclJlbGVhc2UpOwogICAgIGlmICghc3RyY21w
KHByb2NOYW1lLCAid2dwdUNvbW1hbmRFbmNvZGVyUmVzb2x2ZVF1ZXJ5U2V0IikpCiAgICAgICAg
IHJldHVybiByZWludGVycHJldF9jYXN0PFdHUFVQcm9jPigmd2dwdUNvbW1hbmRFbmNvZGVyUmVz
b2x2ZVF1ZXJ5U2V0KTsKLSAgICBpZiAoIXN0cmNtcChwcm9jTmFtZSwgIndncHVDb21tYW5kRW5j
b2RlclNldExhYmVsIikpCi0gICAgICAgIHJldHVybiByZWludGVycHJldF9jYXN0PFdHUFVQcm9j
Pigmd2dwdUNvbW1hbmRFbmNvZGVyU2V0TGFiZWwpOwogICAgIGlmICghc3RyY21wKHByb2NOYW1l
LCAid2dwdUNvbW1hbmRFbmNvZGVyV3JpdGVUaW1lc3RhbXAiKSkKICAgICAgICAgcmV0dXJuIHJl
aW50ZXJwcmV0X2Nhc3Q8V0dQVVByb2M+KCZ3Z3B1Q29tbWFuZEVuY29kZXJXcml0ZVRpbWVzdGFt
cCk7CiAgICAgaWYgKCFzdHJjbXAocHJvY05hbWUsICJ3Z3B1Q29tcHV0ZVBhc3NFbmNvZGVyQmVn
aW5QaXBlbGluZVN0YXRpc3RpY3NRdWVyeSIpKQpAQCAtMTU2LDIwICsxMzUsMTIgQEAgV0dQVVBy
b2Mgd2dwdUdldFByb2NBZGRyZXNzKFdHUFVEZXZpY2UgZGV2aWNlLCBjb25zdCBjaGFyKiBwcm9j
TmFtZSkKICAgICAgICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8V0dQVVByb2M+KCZ3Z3B1Q29t
cHV0ZVBhc3NFbmNvZGVyUG9wRGVidWdHcm91cCk7CiAgICAgaWYgKCFzdHJjbXAocHJvY05hbWUs
ICJ3Z3B1Q29tcHV0ZVBhc3NFbmNvZGVyUHVzaERlYnVnR3JvdXAiKSkKICAgICAgICAgcmV0dXJu
IHJlaW50ZXJwcmV0X2Nhc3Q8V0dQVVByb2M+KCZ3Z3B1Q29tcHV0ZVBhc3NFbmNvZGVyUHVzaERl
YnVnR3JvdXApOwotICAgIGlmICghc3RyY21wKHByb2NOYW1lLCAid2dwdUNvbXB1dGVQYXNzRW5j
b2RlclJlbGVhc2UiKSkKLSAgICAgICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8V0dQVVByb2M+
KCZ3Z3B1Q29tcHV0ZVBhc3NFbmNvZGVyUmVsZWFzZSk7CiAgICAgaWYgKCFzdHJjbXAocHJvY05h
bWUsICJ3Z3B1Q29tcHV0ZVBhc3NFbmNvZGVyU2V0QmluZEdyb3VwIikpCiAgICAgICAgIHJldHVy
biByZWludGVycHJldF9jYXN0PFdHUFVQcm9jPigmd2dwdUNvbXB1dGVQYXNzRW5jb2RlclNldEJp
bmRHcm91cCk7Ci0gICAgaWYgKCFzdHJjbXAocHJvY05hbWUsICJ3Z3B1Q29tcHV0ZVBhc3NFbmNv
ZGVyU2V0TGFiZWwiKSkKLSAgICAgICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8V0dQVVByb2M+
KCZ3Z3B1Q29tcHV0ZVBhc3NFbmNvZGVyU2V0TGFiZWwpOwogICAgIGlmICghc3RyY21wKHByb2NO
YW1lLCAid2dwdUNvbXB1dGVQYXNzRW5jb2RlclNldFBpcGVsaW5lIikpCiAgICAgICAgIHJldHVy
biByZWludGVycHJldF9jYXN0PFdHUFVQcm9jPigmd2dwdUNvbXB1dGVQYXNzRW5jb2RlclNldFBp
cGVsaW5lKTsKLSAgICBpZiAoIXN0cmNtcChwcm9jTmFtZSwgIndncHVDb21wdXRlUGFzc0VuY29k
ZXJXcml0ZVRpbWVzdGFtcCIpKQotICAgICAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxXR1BV
UHJvYz4oJndncHVDb21wdXRlUGFzc0VuY29kZXJXcml0ZVRpbWVzdGFtcCk7CiAgICAgaWYgKCFz
dHJjbXAocHJvY05hbWUsICJ3Z3B1Q29tcHV0ZVBpcGVsaW5lR2V0QmluZEdyb3VwTGF5b3V0Iikp
CiAgICAgICAgIHJldHVybiByZWludGVycHJldF9jYXN0PFdHUFVQcm9jPigmd2dwdUNvbXB1dGVQ
aXBlbGluZUdldEJpbmRHcm91cExheW91dCk7Ci0gICAgaWYgKCFzdHJjbXAocHJvY05hbWUsICJ3
Z3B1Q29tcHV0ZVBpcGVsaW5lUmVsZWFzZSIpKQotICAgICAgICByZXR1cm4gcmVpbnRlcnByZXRf
Y2FzdDxXR1BVUHJvYz4oJndncHVDb21wdXRlUGlwZWxpbmVSZWxlYXNlKTsKICAgICBpZiAoIXN0
cmNtcChwcm9jTmFtZSwgIndncHVDb21wdXRlUGlwZWxpbmVTZXRMYWJlbCIpKQogICAgICAgICBy
ZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxXR1BVUHJvYz4oJndncHVDb21wdXRlUGlwZWxpbmVTZXRM
YWJlbCk7CiAgICAgaWYgKCFzdHJjbXAocHJvY05hbWUsICJ3Z3B1Q3JlYXRlSW5zdGFuY2UiKSkK
QEAgLTIwNiwyMCArMTc3LDIwIEBAIFdHUFVQcm9jIHdncHVHZXRQcm9jQWRkcmVzcyhXR1BVRGV2
aWNlIGRldmljZSwgY29uc3QgY2hhciogcHJvY05hbWUpCiAgICAgICAgIHJldHVybiByZWludGVy
cHJldF9jYXN0PFdHUFVQcm9jPigmd2dwdURldmljZUNyZWF0ZVRleHR1cmUpOwogICAgIGlmICgh
c3RyY21wKHByb2NOYW1lLCAid2dwdURldmljZURlc3Ryb3kiKSkKICAgICAgICAgcmV0dXJuIHJl
aW50ZXJwcmV0X2Nhc3Q8V0dQVVByb2M+KCZ3Z3B1RGV2aWNlRGVzdHJveSk7CisgICAgaWYgKCFz
dHJjbXAocHJvY05hbWUsICJ3Z3B1RGV2aWNlRW51bWVyYXRlRmVhdHVyZXMiKSkKKyAgICAgICAg
cmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8V0dQVVByb2M+KCZ3Z3B1RGV2aWNlRW51bWVyYXRlRmVh
dHVyZXMpOwogICAgIGlmICghc3RyY21wKHByb2NOYW1lLCAid2dwdURldmljZUdldExpbWl0cyIp
KQogICAgICAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxXR1BVUHJvYz4oJndncHVEZXZpY2VH
ZXRMaW1pdHMpOwogICAgIGlmICghc3RyY21wKHByb2NOYW1lLCAid2dwdURldmljZUdldFF1ZXVl
IikpCiAgICAgICAgIHJldHVybiByZWludGVycHJldF9jYXN0PFdHUFVQcm9jPigmd2dwdURldmlj
ZUdldFF1ZXVlKTsKKyAgICBpZiAoIXN0cmNtcChwcm9jTmFtZSwgIndncHVEZXZpY2VIYXNGZWF0
dXJlIikpCisgICAgICAgIHJldHVybiByZWludGVycHJldF9jYXN0PFdHUFVQcm9jPigmd2dwdURl
dmljZUhhc0ZlYXR1cmUpOwogICAgIGlmICghc3RyY21wKHByb2NOYW1lLCAid2dwdURldmljZVBv
cEVycm9yU2NvcGUiKSkKICAgICAgICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8V0dQVVByb2M+
KCZ3Z3B1RGV2aWNlUG9wRXJyb3JTY29wZSk7CiAgICAgaWYgKCFzdHJjbXAocHJvY05hbWUsICJ3
Z3B1RGV2aWNlUHVzaEVycm9yU2NvcGUiKSkKICAgICAgICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nh
c3Q8V0dQVVByb2M+KCZ3Z3B1RGV2aWNlUHVzaEVycm9yU2NvcGUpOwotICAgIGlmICghc3RyY21w
KHByb2NOYW1lLCAid2dwdURldmljZVJlbGVhc2UiKSkKLSAgICAgICAgcmV0dXJuIHJlaW50ZXJw
cmV0X2Nhc3Q8V0dQVVByb2M+KCZ3Z3B1RGV2aWNlUmVsZWFzZSk7CiAgICAgaWYgKCFzdHJjbXAo
cHJvY05hbWUsICJ3Z3B1RGV2aWNlU2V0RGV2aWNlTG9zdENhbGxiYWNrIikpCiAgICAgICAgIHJl
dHVybiByZWludGVycHJldF9jYXN0PFdHUFVQcm9jPigmd2dwdURldmljZVNldERldmljZUxvc3RD
YWxsYmFjayk7Ci0gICAgaWYgKCFzdHJjbXAocHJvY05hbWUsICJ3Z3B1RGV2aWNlU2V0TGFiZWwi
KSkKLSAgICAgICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8V0dQVVByb2M+KCZ3Z3B1RGV2aWNl
U2V0TGFiZWwpOwogICAgIGlmICghc3RyY21wKHByb2NOYW1lLCAid2dwdURldmljZVNldFVuY2Fw
dHVyZWRFcnJvckNhbGxiYWNrIikpCiAgICAgICAgIHJldHVybiByZWludGVycHJldF9jYXN0PFdH
UFVQcm9jPigmd2dwdURldmljZVNldFVuY2FwdHVyZWRFcnJvckNhbGxiYWNrKTsKICAgICBpZiAo
IXN0cmNtcChwcm9jTmFtZSwgIndncHVHZXRQcm9jQWRkcmVzcyIpKQpAQCAtMjI4LDI2ICsxOTks
MTIgQEAgV0dQVVByb2Mgd2dwdUdldFByb2NBZGRyZXNzKFdHUFVEZXZpY2UgZGV2aWNlLCBjb25z
dCBjaGFyKiBwcm9jTmFtZSkKICAgICAgICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8V0dQVVBy
b2M+KCZ3Z3B1SW5zdGFuY2VDcmVhdGVTdXJmYWNlKTsKICAgICBpZiAoIXN0cmNtcChwcm9jTmFt
ZSwgIndncHVJbnN0YW5jZVByb2Nlc3NFdmVudHMiKSkKICAgICAgICAgcmV0dXJuIHJlaW50ZXJw
cmV0X2Nhc3Q8V0dQVVByb2M+KCZ3Z3B1SW5zdGFuY2VQcm9jZXNzRXZlbnRzKTsKLSAgICBpZiAo
IXN0cmNtcChwcm9jTmFtZSwgIndncHVJbnN0YW5jZVJlbGVhc2UiKSkKLSAgICAgICAgcmV0dXJu
IHJlaW50ZXJwcmV0X2Nhc3Q8V0dQVVByb2M+KCZ3Z3B1SW5zdGFuY2VSZWxlYXNlKTsKICAgICBp
ZiAoIXN0cmNtcChwcm9jTmFtZSwgIndncHVJbnN0YW5jZVJlcXVlc3RBZGFwdGVyIikpCiAgICAg
ICAgIHJldHVybiByZWludGVycHJldF9jYXN0PFdHUFVQcm9jPigmd2dwdUluc3RhbmNlUmVxdWVz
dEFkYXB0ZXIpOwotICAgIGlmICghc3RyY21wKHByb2NOYW1lLCAid2dwdVBpcGVsaW5lTGF5b3V0
UmVsZWFzZSIpKQotICAgICAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxXR1BVUHJvYz4oJndn
cHVQaXBlbGluZUxheW91dFJlbGVhc2UpOwotICAgIGlmICghc3RyY21wKHByb2NOYW1lLCAid2dw
dVBpcGVsaW5lTGF5b3V0U2V0TGFiZWwiKSkKLSAgICAgICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nh
c3Q8V0dQVVByb2M+KCZ3Z3B1UGlwZWxpbmVMYXlvdXRTZXRMYWJlbCk7CiAgICAgaWYgKCFzdHJj
bXAocHJvY05hbWUsICJ3Z3B1UXVlcnlTZXREZXN0cm95IikpCiAgICAgICAgIHJldHVybiByZWlu
dGVycHJldF9jYXN0PFdHUFVQcm9jPigmd2dwdVF1ZXJ5U2V0RGVzdHJveSk7Ci0gICAgaWYgKCFz
dHJjbXAocHJvY05hbWUsICJ3Z3B1UXVlcnlTZXRSZWxlYXNlIikpCi0gICAgICAgIHJldHVybiBy
ZWludGVycHJldF9jYXN0PFdHUFVQcm9jPigmd2dwdVF1ZXJ5U2V0UmVsZWFzZSk7Ci0gICAgaWYg
KCFzdHJjbXAocHJvY05hbWUsICJ3Z3B1UXVlcnlTZXRTZXRMYWJlbCIpKQotICAgICAgICByZXR1
cm4gcmVpbnRlcnByZXRfY2FzdDxXR1BVUHJvYz4oJndncHVRdWVyeVNldFNldExhYmVsKTsKICAg
ICBpZiAoIXN0cmNtcChwcm9jTmFtZSwgIndncHVRdWV1ZU9uU3VibWl0dGVkV29ya0RvbmUiKSkK
ICAgICAgICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8V0dQVVByb2M+KCZ3Z3B1UXVldWVPblN1
Ym1pdHRlZFdvcmtEb25lKTsKLSAgICBpZiAoIXN0cmNtcChwcm9jTmFtZSwgIndncHVRdWV1ZVJl
bGVhc2UiKSkKLSAgICAgICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8V0dQVVByb2M+KCZ3Z3B1
UXVldWVSZWxlYXNlKTsKLSAgICBpZiAoIXN0cmNtcChwcm9jTmFtZSwgIndncHVRdWV1ZVNldExh
YmVsIikpCi0gICAgICAgIHJldHVybiByZWludGVycHJldF9jYXN0PFdHUFVQcm9jPigmd2dwdVF1
ZXVlU2V0TGFiZWwpOwogICAgIGlmICghc3RyY21wKHByb2NOYW1lLCAid2dwdVF1ZXVlU3VibWl0
IikpCiAgICAgICAgIHJldHVybiByZWludGVycHJldF9jYXN0PFdHUFVQcm9jPigmd2dwdVF1ZXVl
U3VibWl0KTsKICAgICBpZiAoIXN0cmNtcChwcm9jTmFtZSwgIndncHVRdWV1ZVdyaXRlQnVmZmVy
IikpCkBAIC0yNzAsMjIgKzIyNywxNCBAQCBXR1BVUHJvYyB3Z3B1R2V0UHJvY0FkZHJlc3MoV0dQ
VURldmljZSBkZXZpY2UsIGNvbnN0IGNoYXIqIHByb2NOYW1lKQogICAgICAgICByZXR1cm4gcmVp
bnRlcnByZXRfY2FzdDxXR1BVUHJvYz4oJndncHVSZW5kZXJCdW5kbGVFbmNvZGVyUG9wRGVidWdH
cm91cCk7CiAgICAgaWYgKCFzdHJjbXAocHJvY05hbWUsICJ3Z3B1UmVuZGVyQnVuZGxlRW5jb2Rl
clB1c2hEZWJ1Z0dyb3VwIikpCiAgICAgICAgIHJldHVybiByZWludGVycHJldF9jYXN0PFdHUFVQ
cm9jPigmd2dwdVJlbmRlckJ1bmRsZUVuY29kZXJQdXNoRGVidWdHcm91cCk7Ci0gICAgaWYgKCFz
dHJjbXAocHJvY05hbWUsICJ3Z3B1UmVuZGVyQnVuZGxlRW5jb2RlclJlbGVhc2UiKSkKLSAgICAg
ICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8V0dQVVByb2M+KCZ3Z3B1UmVuZGVyQnVuZGxlRW5j
b2RlclJlbGVhc2UpOwogICAgIGlmICghc3RyY21wKHByb2NOYW1lLCAid2dwdVJlbmRlckJ1bmRs
ZUVuY29kZXJTZXRCaW5kR3JvdXAiKSkKICAgICAgICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8
V0dQVVByb2M+KCZ3Z3B1UmVuZGVyQnVuZGxlRW5jb2RlclNldEJpbmRHcm91cCk7CiAgICAgaWYg
KCFzdHJjbXAocHJvY05hbWUsICJ3Z3B1UmVuZGVyQnVuZGxlRW5jb2RlclNldEluZGV4QnVmZmVy
IikpCiAgICAgICAgIHJldHVybiByZWludGVycHJldF9jYXN0PFdHUFVQcm9jPigmd2dwdVJlbmRl
ckJ1bmRsZUVuY29kZXJTZXRJbmRleEJ1ZmZlcik7Ci0gICAgaWYgKCFzdHJjbXAocHJvY05hbWUs
ICJ3Z3B1UmVuZGVyQnVuZGxlRW5jb2RlclNldExhYmVsIikpCi0gICAgICAgIHJldHVybiByZWlu
dGVycHJldF9jYXN0PFdHUFVQcm9jPigmd2dwdVJlbmRlckJ1bmRsZUVuY29kZXJTZXRMYWJlbCk7
CiAgICAgaWYgKCFzdHJjbXAocHJvY05hbWUsICJ3Z3B1UmVuZGVyQnVuZGxlRW5jb2RlclNldFBp
cGVsaW5lIikpCiAgICAgICAgIHJldHVybiByZWludGVycHJldF9jYXN0PFdHUFVQcm9jPigmd2dw
dVJlbmRlckJ1bmRsZUVuY29kZXJTZXRQaXBlbGluZSk7CiAgICAgaWYgKCFzdHJjbXAocHJvY05h
bWUsICJ3Z3B1UmVuZGVyQnVuZGxlRW5jb2RlclNldFZlcnRleEJ1ZmZlciIpKQogICAgICAgICBy
ZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxXR1BVUHJvYz4oJndncHVSZW5kZXJCdW5kbGVFbmNvZGVy
U2V0VmVydGV4QnVmZmVyKTsKLSAgICBpZiAoIXN0cmNtcChwcm9jTmFtZSwgIndncHVSZW5kZXJC
dW5kbGVSZWxlYXNlIikpCi0gICAgICAgIHJldHVybiByZWludGVycHJldF9jYXN0PFdHUFVQcm9j
Pigmd2dwdVJlbmRlckJ1bmRsZVJlbGVhc2UpOwotICAgIGlmICghc3RyY21wKHByb2NOYW1lLCAi
d2dwdVJlbmRlckJ1bmRsZVNldExhYmVsIikpCi0gICAgICAgIHJldHVybiByZWludGVycHJldF9j
YXN0PFdHUFVQcm9jPigmd2dwdVJlbmRlckJ1bmRsZVNldExhYmVsKTsKICAgICBpZiAoIXN0cmNt
cChwcm9jTmFtZSwgIndncHVSZW5kZXJQYXNzRW5jb2RlckJlZ2luT2NjbHVzaW9uUXVlcnkiKSkK
ICAgICAgICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8V0dQVVByb2M+KCZ3Z3B1UmVuZGVyUGFz
c0VuY29kZXJCZWdpbk9jY2x1c2lvblF1ZXJ5KTsKICAgICBpZiAoIXN0cmNtcChwcm9jTmFtZSwg
IndncHVSZW5kZXJQYXNzRW5jb2RlckJlZ2luUGlwZWxpbmVTdGF0aXN0aWNzUXVlcnkiKSkKQEAg
LTMxMiwxNiArMjYxLDEyIEBAIFdHUFVQcm9jIHdncHVHZXRQcm9jQWRkcmVzcyhXR1BVRGV2aWNl
IGRldmljZSwgY29uc3QgY2hhciogcHJvY05hbWUpCiAgICAgICAgIHJldHVybiByZWludGVycHJl
dF9jYXN0PFdHUFVQcm9jPigmd2dwdVJlbmRlclBhc3NFbmNvZGVyUG9wRGVidWdHcm91cCk7CiAg
ICAgaWYgKCFzdHJjbXAocHJvY05hbWUsICJ3Z3B1UmVuZGVyUGFzc0VuY29kZXJQdXNoRGVidWdH
cm91cCIpKQogICAgICAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxXR1BVUHJvYz4oJndncHVS
ZW5kZXJQYXNzRW5jb2RlclB1c2hEZWJ1Z0dyb3VwKTsKLSAgICBpZiAoIXN0cmNtcChwcm9jTmFt
ZSwgIndncHVSZW5kZXJQYXNzRW5jb2RlclJlbGVhc2UiKSkKLSAgICAgICAgcmV0dXJuIHJlaW50
ZXJwcmV0X2Nhc3Q8V0dQVVByb2M+KCZ3Z3B1UmVuZGVyUGFzc0VuY29kZXJSZWxlYXNlKTsKICAg
ICBpZiAoIXN0cmNtcChwcm9jTmFtZSwgIndncHVSZW5kZXJQYXNzRW5jb2RlclNldEJpbmRHcm91
cCIpKQogICAgICAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxXR1BVUHJvYz4oJndncHVSZW5k
ZXJQYXNzRW5jb2RlclNldEJpbmRHcm91cCk7CiAgICAgaWYgKCFzdHJjbXAocHJvY05hbWUsICJ3
Z3B1UmVuZGVyUGFzc0VuY29kZXJTZXRCbGVuZENvbnN0YW50IikpCiAgICAgICAgIHJldHVybiBy
ZWludGVycHJldF9jYXN0PFdHUFVQcm9jPigmd2dwdVJlbmRlclBhc3NFbmNvZGVyU2V0QmxlbmRD
b25zdGFudCk7CiAgICAgaWYgKCFzdHJjbXAocHJvY05hbWUsICJ3Z3B1UmVuZGVyUGFzc0VuY29k
ZXJTZXRJbmRleEJ1ZmZlciIpKQogICAgICAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxXR1BV
UHJvYz4oJndncHVSZW5kZXJQYXNzRW5jb2RlclNldEluZGV4QnVmZmVyKTsKLSAgICBpZiAoIXN0
cmNtcChwcm9jTmFtZSwgIndncHVSZW5kZXJQYXNzRW5jb2RlclNldExhYmVsIikpCi0gICAgICAg
IHJldHVybiByZWludGVycHJldF9jYXN0PFdHUFVQcm9jPigmd2dwdVJlbmRlclBhc3NFbmNvZGVy
U2V0TGFiZWwpOwogICAgIGlmICghc3RyY21wKHByb2NOYW1lLCAid2dwdVJlbmRlclBhc3NFbmNv
ZGVyU2V0UGlwZWxpbmUiKSkKICAgICAgICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8V0dQVVBy
b2M+KCZ3Z3B1UmVuZGVyUGFzc0VuY29kZXJTZXRQaXBlbGluZSk7CiAgICAgaWYgKCFzdHJjbXAo
cHJvY05hbWUsICJ3Z3B1UmVuZGVyUGFzc0VuY29kZXJTZXRTY2lzc29yUmVjdCIpKQpAQCAtMzMy
LDQ0ICsyNzcsMjQgQEAgV0dQVVByb2Mgd2dwdUdldFByb2NBZGRyZXNzKFdHUFVEZXZpY2UgZGV2
aWNlLCBjb25zdCBjaGFyKiBwcm9jTmFtZSkKICAgICAgICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nh
c3Q8V0dQVVByb2M+KCZ3Z3B1UmVuZGVyUGFzc0VuY29kZXJTZXRWZXJ0ZXhCdWZmZXIpOwogICAg
IGlmICghc3RyY21wKHByb2NOYW1lLCAid2dwdVJlbmRlclBhc3NFbmNvZGVyU2V0Vmlld3BvcnQi
KSkKICAgICAgICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8V0dQVVByb2M+KCZ3Z3B1UmVuZGVy
UGFzc0VuY29kZXJTZXRWaWV3cG9ydCk7Ci0gICAgaWYgKCFzdHJjbXAocHJvY05hbWUsICJ3Z3B1
UmVuZGVyUGFzc0VuY29kZXJXcml0ZVRpbWVzdGFtcCIpKQotICAgICAgICByZXR1cm4gcmVpbnRl
cnByZXRfY2FzdDxXR1BVUHJvYz4oJndncHVSZW5kZXJQYXNzRW5jb2RlcldyaXRlVGltZXN0YW1w
KTsKICAgICBpZiAoIXN0cmNtcChwcm9jTmFtZSwgIndncHVSZW5kZXJQaXBlbGluZUdldEJpbmRH
cm91cExheW91dCIpKQogICAgICAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxXR1BVUHJvYz4o
JndncHVSZW5kZXJQaXBlbGluZUdldEJpbmRHcm91cExheW91dCk7Ci0gICAgaWYgKCFzdHJjbXAo
cHJvY05hbWUsICJ3Z3B1UmVuZGVyUGlwZWxpbmVSZWxlYXNlIikpCi0gICAgICAgIHJldHVybiBy
ZWludGVycHJldF9jYXN0PFdHUFVQcm9jPigmd2dwdVJlbmRlclBpcGVsaW5lUmVsZWFzZSk7CiAg
ICAgaWYgKCFzdHJjbXAocHJvY05hbWUsICJ3Z3B1UmVuZGVyUGlwZWxpbmVTZXRMYWJlbCIpKQog
ICAgICAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxXR1BVUHJvYz4oJndncHVSZW5kZXJQaXBl
bGluZVNldExhYmVsKTsKLSAgICBpZiAoIXN0cmNtcChwcm9jTmFtZSwgIndncHVTYW1wbGVyUmVs
ZWFzZSIpKQotICAgICAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxXR1BVUHJvYz4oJndncHVT
YW1wbGVyUmVsZWFzZSk7Ci0gICAgaWYgKCFzdHJjbXAocHJvY05hbWUsICJ3Z3B1U2FtcGxlclNl
dExhYmVsIikpCi0gICAgICAgIHJldHVybiByZWludGVycHJldF9jYXN0PFdHUFVQcm9jPigmd2dw
dVNhbXBsZXJTZXRMYWJlbCk7Ci0gICAgaWYgKCFzdHJjbXAocHJvY05hbWUsICJ3Z3B1U2hhZGVy
TW9kdWxlUmVsZWFzZSIpKQotICAgICAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxXR1BVUHJv
Yz4oJndncHVTaGFkZXJNb2R1bGVSZWxlYXNlKTsKKyAgICBpZiAoIXN0cmNtcChwcm9jTmFtZSwg
IndncHVTaGFkZXJNb2R1bGVHZXRDb21waWxhdGlvbkluZm8iKSkKKyAgICAgICAgcmV0dXJuIHJl
aW50ZXJwcmV0X2Nhc3Q8V0dQVVByb2M+KCZ3Z3B1U2hhZGVyTW9kdWxlR2V0Q29tcGlsYXRpb25J
bmZvKTsKICAgICBpZiAoIXN0cmNtcChwcm9jTmFtZSwgIndncHVTaGFkZXJNb2R1bGVTZXRMYWJl
bCIpKQogICAgICAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxXR1BVUHJvYz4oJndncHVTaGFk
ZXJNb2R1bGVTZXRMYWJlbCk7CiAgICAgaWYgKCFzdHJjbXAocHJvY05hbWUsICJ3Z3B1U3VyZmFj
ZUdldFByZWZlcnJlZEZvcm1hdCIpKQogICAgICAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxX
R1BVUHJvYz4oJndncHVTdXJmYWNlR2V0UHJlZmVycmVkRm9ybWF0KTsKLSAgICBpZiAoIXN0cmNt
cChwcm9jTmFtZSwgIndncHVTdXJmYWNlUmVsZWFzZSIpKQotICAgICAgICByZXR1cm4gcmVpbnRl
cnByZXRfY2FzdDxXR1BVUHJvYz4oJndncHVTdXJmYWNlUmVsZWFzZSk7CiAgICAgaWYgKCFzdHJj
bXAocHJvY05hbWUsICJ3Z3B1U3dhcENoYWluR2V0Q3VycmVudFRleHR1cmVWaWV3IikpCiAgICAg
ICAgIHJldHVybiByZWludGVycHJldF9jYXN0PFdHUFVQcm9jPigmd2dwdVN3YXBDaGFpbkdldEN1
cnJlbnRUZXh0dXJlVmlldyk7CiAgICAgaWYgKCFzdHJjbXAocHJvY05hbWUsICJ3Z3B1U3dhcENo
YWluUHJlc2VudCIpKQogICAgICAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxXR1BVUHJvYz4o
JndncHVTd2FwQ2hhaW5QcmVzZW50KTsKLSAgICBpZiAoIXN0cmNtcChwcm9jTmFtZSwgIndncHVT
d2FwQ2hhaW5SZWxlYXNlIikpCi0gICAgICAgIHJldHVybiByZWludGVycHJldF9jYXN0PFdHUFVQ
cm9jPigmd2dwdVN3YXBDaGFpblJlbGVhc2UpOwogICAgIGlmICghc3RyY21wKHByb2NOYW1lLCAi
d2dwdVRleHR1cmVDcmVhdGVWaWV3IikpCiAgICAgICAgIHJldHVybiByZWludGVycHJldF9jYXN0
PFdHUFVQcm9jPigmd2dwdVRleHR1cmVDcmVhdGVWaWV3KTsKICAgICBpZiAoIXN0cmNtcChwcm9j
TmFtZSwgIndncHVUZXh0dXJlRGVzdHJveSIpKQogICAgICAgICByZXR1cm4gcmVpbnRlcnByZXRf
Y2FzdDxXR1BVUHJvYz4oJndncHVUZXh0dXJlRGVzdHJveSk7Ci0gICAgaWYgKCFzdHJjbXAocHJv
Y05hbWUsICJ3Z3B1VGV4dHVyZVJlbGVhc2UiKSkKLSAgICAgICAgcmV0dXJuIHJlaW50ZXJwcmV0
X2Nhc3Q8V0dQVVByb2M+KCZ3Z3B1VGV4dHVyZVJlbGVhc2UpOwotICAgIGlmICghc3RyY21wKHBy
b2NOYW1lLCAid2dwdVRleHR1cmVTZXRMYWJlbCIpKQotICAgICAgICByZXR1cm4gcmVpbnRlcnBy
ZXRfY2FzdDxXR1BVUHJvYz4oJndncHVUZXh0dXJlU2V0TGFiZWwpOwotICAgIGlmICghc3RyY21w
KHByb2NOYW1lLCAid2dwdVRleHR1cmVWaWV3UmVsZWFzZSIpKQotICAgICAgICByZXR1cm4gcmVp
bnRlcnByZXRfY2FzdDxXR1BVUHJvYz4oJndncHVUZXh0dXJlVmlld1JlbGVhc2UpOwotICAgIGlm
ICghc3RyY21wKHByb2NOYW1lLCAid2dwdVRleHR1cmVWaWV3U2V0TGFiZWwiKSkKLSAgICAgICAg
cmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8V0dQVVByb2M+KCZ3Z3B1VGV4dHVyZVZpZXdTZXRMYWJl
bCk7CiAgICAgcmV0dXJuIG51bGxwdHI7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJHUFUv
V2ViR1BVL1JlbmRlclBhc3NFbmNvZGVyLmggYi9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9SZW5kZXJQ
YXNzRW5jb2Rlci5oCmluZGV4IDZiNWJjYTM4ZjBhNWNkODFjY2FjZTJmMTFjY2I5NTk2NjliOWI0
ZmEuLjVjOTQ5NWEwNTkzODg1Y2U5NmE1YWU4NGRhMDMwMjlkZmU3YjM3NDUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJHUFUvV2ViR1BVL1JlbmRlclBhc3NFbmNvZGVyLmgKKysrIGIvU291cmNlL1dl
YkdQVS9XZWJHUFUvUmVuZGVyUGFzc0VuY29kZXIuaApAQCAtNzEsNyArNzEsNiBAQCBwdWJsaWM6
CiAgICAgdm9pZCBzZXRTdGVuY2lsUmVmZXJlbmNlKHVpbnQzMl90KTsKICAgICB2b2lkIHNldFZl
cnRleEJ1ZmZlcih1aW50MzJfdCBzbG90LCBjb25zdCBCdWZmZXImLCB1aW50NjRfdCBvZmZzZXQs
IHVpbnQ2NF90IHNpemUpOwogICAgIHZvaWQgc2V0Vmlld3BvcnQoZmxvYXQgeCwgZmxvYXQgeSwg
ZmxvYXQgd2lkdGgsIGZsb2F0IGhlaWdodCwgZmxvYXQgbWluRGVwdGgsIGZsb2F0IG1heERlcHRo
KTsKLSAgICB2b2lkIHdyaXRlVGltZXN0YW1wKGNvbnN0IFF1ZXJ5U2V0JiwgdWludDMyX3QgcXVl
cnlJbmRleCk7CiAgICAgdm9pZCBzZXRMYWJlbChjb25zdCBjaGFyKik7CiAKIHByaXZhdGU6CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9SZW5kZXJQYXNzRW5jb2Rlci5tbSBiL1Nv
dXJjZS9XZWJHUFUvV2ViR1BVL1JlbmRlclBhc3NFbmNvZGVyLm1tCmluZGV4IGIzYzM5M2U3MDEz
ZDkxZDJlZDFjOWRlOTIxMmM3NDI4YmVmY2VjYzUuLmNiOWRiYTFiZDM1ZWZhYzVjZmNjZjliNmU0
NjQxOTVhNmExZmYxODUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJHUFUvV2ViR1BVL1JlbmRlclBh
c3NFbmNvZGVyLm1tCisrKyBiL1NvdXJjZS9XZWJHUFUvV2ViR1BVL1JlbmRlclBhc3NFbmNvZGVy
Lm1tCkBAIC0xNzEsMTIgKzE3MSw2IEBAIHZvaWQgUmVuZGVyUGFzc0VuY29kZXI6OnNldFZpZXdw
b3J0KGZsb2F0IHgsIGZsb2F0IHksIGZsb2F0IHdpZHRoLCBmbG9hdCBoZWlnaHQsCiAgICAgVU5V
U0VEX1BBUkFNKG1heERlcHRoKTsKIH0KIAotdm9pZCBSZW5kZXJQYXNzRW5jb2Rlcjo6d3JpdGVU
aW1lc3RhbXAoY29uc3QgUXVlcnlTZXQmIHF1ZXJ5U2V0LCB1aW50MzJfdCBxdWVyeUluZGV4KQot
ewotICAgIFVOVVNFRF9QQVJBTShxdWVyeVNldCk7Ci0gICAgVU5VU0VEX1BBUkFNKHF1ZXJ5SW5k
ZXgpOwotfQotCiB2b2lkIFJlbmRlclBhc3NFbmNvZGVyOjpzZXRMYWJlbChjb25zdCBjaGFyKiBs
YWJlbCkKIHsKICAgICBVTlVTRURfUEFSQU0obGFiZWwpOwpAQCAtMjk3LDExICsyOTEsNiBAQCB2
b2lkIHdncHVSZW5kZXJQYXNzRW5jb2RlclNldFZpZXdwb3J0KFdHUFVSZW5kZXJQYXNzRW5jb2Rl
ciByZW5kZXJQYXNzRW5jb2RlciwgZgogICAgIHJlbmRlclBhc3NFbmNvZGVyLT5yZW5kZXJQYXNz
RW5jb2Rlci0+c2V0Vmlld3BvcnQoeCwgeSwgd2lkdGgsIGhlaWdodCwgbWluRGVwdGgsIG1heERl
cHRoKTsKIH0KIAotdm9pZCB3Z3B1UmVuZGVyUGFzc0VuY29kZXJXcml0ZVRpbWVzdGFtcChXR1BV
UmVuZGVyUGFzc0VuY29kZXIgcmVuZGVyUGFzc0VuY29kZXIsIFdHUFVRdWVyeVNldCBxdWVyeVNl
dCwgdWludDMyX3QgcXVlcnlJbmRleCkKLXsKLSAgICByZW5kZXJQYXNzRW5jb2Rlci0+cmVuZGVy
UGFzc0VuY29kZXItPndyaXRlVGltZXN0YW1wKHF1ZXJ5U2V0LT5xdWVyeVNldCwgcXVlcnlJbmRl
eCk7Ci19Ci0KIHZvaWQgd2dwdVJlbmRlclBhc3NFbmNvZGVyU2V0TGFiZWwoV0dQVVJlbmRlclBh
c3NFbmNvZGVyIHJlbmRlclBhc3NFbmNvZGVyLCBjb25zdCBjaGFyKiBsYWJlbCkKIHsKICAgICBy
ZW5kZXJQYXNzRW5jb2Rlci0+cmVuZGVyUGFzc0VuY29kZXItPnNldExhYmVsKGxhYmVsKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJHUFUvV2ViR1BVL1NoYWRlck1vZHVsZS5oIGIvU291cmNlL1dl
YkdQVS9XZWJHUFUvU2hhZGVyTW9kdWxlLmgKaW5kZXggY2NkOTVlMDUzMDMwNzUyYWFmN2I1Zjc2
YTllZmI0NDNlZGM1NTgzYy4uYzJhZDNlZWQxODcxNTQxYjI5NTVlZGNlMGJjZmRkMGM5NTY2ZmQ2
NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkdQVS9XZWJHUFUvU2hhZGVyTW9kdWxlLmgKKysrIGIv
U291cmNlL1dlYkdQVS9XZWJHUFUvU2hhZGVyTW9kdWxlLmgKQEAgLTQyLDYgKzQyLDcgQEAgcHVi
bGljOgogCiAgICAgflNoYWRlck1vZHVsZSgpOwogCisgICAgdm9pZCBnZXRDb21waWxhdGlvbklu
Zm8oV1RGOjpGdW5jdGlvbjx2b2lkKFdHUFVDb21waWxhdGlvbkluZm9SZXF1ZXN0U3RhdHVzLCBj
b25zdCBXR1BVQ29tcGlsYXRpb25JbmZvKik+JiYgY2FsbGJhY2spOwogICAgIHZvaWQgc2V0TGFi
ZWwoY29uc3QgY2hhciopOwogCiBwcml2YXRlOgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkdQVS9X
ZWJHUFUvU2hhZGVyTW9kdWxlLm1tIGIvU291cmNlL1dlYkdQVS9XZWJHUFUvU2hhZGVyTW9kdWxl
Lm1tCmluZGV4IDk1NGRjZjE0NmMyMzBmMTI2ZDBiYzg1NjJkMWE4NjUzY2E0ZDIyY2MuLjZjYjNj
OWU5ZjBkYWE0ZWUzYTNhNzIyODY4NDMxZGUxNzI1NjhjODMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJHUFUvV2ViR1BVL1NoYWRlck1vZHVsZS5tbQorKysgYi9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9T
aGFkZXJNb2R1bGUubW0KQEAgLTM0LDYgKzM0LDExIEBAIFNoYWRlck1vZHVsZTo6U2hhZGVyTW9k
dWxlKCkgPSBkZWZhdWx0OwogCiBTaGFkZXJNb2R1bGU6On5TaGFkZXJNb2R1bGUoKSA9IGRlZmF1
bHQ7CiAKK3ZvaWQgU2hhZGVyTW9kdWxlOjpnZXRDb21waWxhdGlvbkluZm8oV1RGOjpGdW5jdGlv
bjx2b2lkKFdHUFVDb21waWxhdGlvbkluZm9SZXF1ZXN0U3RhdHVzLCBjb25zdCBXR1BVQ29tcGls
YXRpb25JbmZvKik+JiYgY2FsbGJhY2spCit7CisgICAgVU5VU0VEX1BBUkFNKGNhbGxiYWNrKTsK
K30KKwogdm9pZCBTaGFkZXJNb2R1bGU6OnNldExhYmVsKGNvbnN0IGNoYXIqIGxhYmVsKQogewog
ICAgIFVOVVNFRF9QQVJBTShsYWJlbCk7CkBAIC00Niw2ICs1MSwxMyBAQCB2b2lkIHdncHVTaGFk
ZXJNb2R1bGVSZWxlYXNlKFdHUFVTaGFkZXJNb2R1bGUgc2hhZGVyTW9kdWxlKQogICAgIGRlbGV0
ZSBzaGFkZXJNb2R1bGU7CiB9CiAKK3ZvaWQgd2dwdVNoYWRlck1vZHVsZUdldENvbXBpbGF0aW9u
SW5mbyhXR1BVU2hhZGVyTW9kdWxlIHNoYWRlck1vZHVsZSwgV0dQVUNvbXBpbGF0aW9uSW5mb0Nh
bGxiYWNrIGNhbGxiYWNrLCB2b2lkICogdXNlcmRhdGEpCit7CisgICAgc2hhZGVyTW9kdWxlLT5z
aGFkZXJNb2R1bGUtPmdldENvbXBpbGF0aW9uSW5mbyhbY2FsbGJhY2ssIHVzZXJkYXRhXSAoV0dQ
VUNvbXBpbGF0aW9uSW5mb1JlcXVlc3RTdGF0dXMgc3RhdHVzLCBjb25zdCBXR1BVQ29tcGlsYXRp
b25JbmZvKiBjb21waWxhdGlvbkluZm8pIHsKKyAgICAgICAgY2FsbGJhY2soc3RhdHVzLCBjb21w
aWxhdGlvbkluZm8sIHVzZXJkYXRhKTsKKyAgICB9KTsKK30KKwogdm9pZCB3Z3B1U2hhZGVyTW9k
dWxlU2V0TGFiZWwoV0dQVVNoYWRlck1vZHVsZSBzaGFkZXJNb2R1bGUsIGNvbnN0IGNoYXIqIGxh
YmVsKQogewogICAgIHNoYWRlck1vZHVsZS0+c2hhZGVyTW9kdWxlLT5zZXRMYWJlbChsYWJlbCk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9XZWJHUFUuaCBiL1NvdXJjZS9XZWJH
UFUvV2ViR1BVL1dlYkdQVS5oCmluZGV4IDVhZmIzODMyNmJhYWJjOGQ2NGIwMDNhMjU1MjBjMWRl
MWIyN2ZiZjQuLjA5OTMxNmIxZDNiNzc4YmIwOGUzZDY1MjA0OGNmNjRiMzBiODhjMDEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJHUFUvV2ViR1BVL1dlYkdQVS5oCisrKyBiL1NvdXJjZS9XZWJHUFUv
V2ViR1BVL1dlYkdQVS5oCkBAIC01MiwxMiArNTIsMTMgQEAKICNpbmNsdWRlIDxzdGRkZWYuaD4K
ICNpbmNsdWRlIDxzdGRib29sLmg+CiAKLSNkZWZpbmUgV0dQVV9XSE9MRV9TSVpFICgweGZmZmZm
ZmZmZmZmZmZmZmZVTEwpCisjZGVmaW5lIFdHUFVfQVJSQVlfTEFZRVJfQ09VTlRfVU5ERUZJTkVE
ICgweGZmZmZmZmZmVUwpCiAjZGVmaW5lIFdHUFVfQ09QWV9TVFJJREVfVU5ERUZJTkVEICgweGZm
ZmZmZmZmVUwpCiAjZGVmaW5lIFdHUFVfTElNSVRfVTMyX1VOREVGSU5FRCAoMHhmZmZmZmZmZlVM
KQogI2RlZmluZSBXR1BVX0xJTUlUX1U2NF9VTkRFRklORUQgKDB4ZmZmZmZmZmZmZmZmZmZmZlVM
TCkKLSNkZWZpbmUgV0dQVV9BUlJBWV9MQVlFUl9DT1VOVF9VTkRFRklORUQgKDB4ZmZmZmZmZmZV
TCkKICNkZWZpbmUgV0dQVV9NSVBfTEVWRUxfQ09VTlRfVU5ERUZJTkVEICgweGZmZmZmZmZmVUwp
CisjZGVmaW5lIFdHUFVfV0hPTEVfTUFQX1NJWkUgU0laRV9NQVgKKyNkZWZpbmUgV0dQVV9XSE9M
RV9TSVpFICgweGZmZmZmZmZmZmZmZmZmZmZVTEwpCiAKIHR5cGVkZWYgdWludDMyX3QgV0dQVUZs
YWdzOwogCkBAIC0xNjksNiArMTcwLDE0IEBAIHR5cGVkZWYgZW51bSBXR1BVQ29tcGFyZUZ1bmN0
aW9uIHsKICAgICBXR1BVQ29tcGFyZUZ1bmN0aW9uX0ZvcmNlMzIgPSAweDdGRkZGRkZGCiB9IFdH
UFVDb21wYXJlRnVuY3Rpb247CiAKK3R5cGVkZWYgZW51bSBXR1BVQ29tcGlsYXRpb25JbmZvUmVx
dWVzdFN0YXR1cyB7CisgICAgV0dQVUNvbXBpbGF0aW9uSW5mb1JlcXVlc3RTdGF0dXNfU3VjY2Vz
cyA9IDB4MDAwMDAwMDAsCisgICAgV0dQVUNvbXBpbGF0aW9uSW5mb1JlcXVlc3RTdGF0dXNfRXJy
b3IgPSAweDAwMDAwMDAxLAorICAgIFdHUFVDb21waWxhdGlvbkluZm9SZXF1ZXN0U3RhdHVzX0Rl
dmljZUxvc3QgPSAweDAwMDAwMDAyLAorICAgIFdHUFVDb21waWxhdGlvbkluZm9SZXF1ZXN0U3Rh
dHVzX1Vua25vd24gPSAweDAwMDAwMDAzLAorICAgIFdHUFVDb21waWxhdGlvbkluZm9SZXF1ZXN0
U3RhdHVzX0ZvcmNlMzIgPSAweDdGRkZGRkZGCit9IFdHUFVDb21waWxhdGlvbkluZm9SZXF1ZXN0
U3RhdHVzOworCiB0eXBlZGVmIGVudW0gV0dQVUNvbXBpbGF0aW9uTWVzc2FnZVR5cGUgewogICAg
IFdHUFVDb21waWxhdGlvbk1lc3NhZ2VUeXBlX0Vycm9yID0gMHgwMDAwMDAwMCwKICAgICBXR1BV
Q29tcGlsYXRpb25NZXNzYWdlVHlwZV9XYXJuaW5nID0gMHgwMDAwMDAwMSwKQEAgLTE3Niw2ICsx
ODUsMTIgQEAgdHlwZWRlZiBlbnVtIFdHUFVDb21waWxhdGlvbk1lc3NhZ2VUeXBlIHsKICAgICBX
R1BVQ29tcGlsYXRpb25NZXNzYWdlVHlwZV9Gb3JjZTMyID0gMHg3RkZGRkZGRgogfSBXR1BVQ29t
cGlsYXRpb25NZXNzYWdlVHlwZTsKIAordHlwZWRlZiBlbnVtIFdHUFVDb21wdXRlUGFzc1RpbWVz
dGFtcExvY2F0aW9uIHsKKyAgICBXR1BVQ29tcHV0ZVBhc3NUaW1lc3RhbXBMb2NhdGlvbl9CZWdp
bm5pbmcgPSAweDAwMDAwMDAwLAorICAgIFdHUFVDb21wdXRlUGFzc1RpbWVzdGFtcExvY2F0aW9u
X0VuZCA9IDB4MDAwMDAwMDEsCisgICAgV0dQVUNvbXB1dGVQYXNzVGltZXN0YW1wTG9jYXRpb25f
Rm9yY2UzMiA9IDB4N0ZGRkZGRkYKK30gV0dQVUNvbXB1dGVQYXNzVGltZXN0YW1wTG9jYXRpb247
CisKIHR5cGVkZWYgZW51bSBXR1BVQ3JlYXRlUGlwZWxpbmVBc3luY1N0YXR1cyB7CiAgICAgV0dQ
VUNyZWF0ZVBpcGVsaW5lQXN5bmNTdGF0dXNfU3VjY2VzcyA9IDB4MDAwMDAwMDAsCiAgICAgV0dQ
VUNyZWF0ZVBpcGVsaW5lQXN5bmNTdGF0dXNfRXJyb3IgPSAweDAwMDAwMDAxLApAQCAtMTk5LDkg
KzIxNCw4IEBAIHR5cGVkZWYgZW51bSBXR1BVRGV2aWNlTG9zdFJlYXNvbiB7CiB9IFdHUFVEZXZp
Y2VMb3N0UmVhc29uOwogCiB0eXBlZGVmIGVudW0gV0dQVUVycm9yRmlsdGVyIHsKLSAgICBXR1BV
RXJyb3JGaWx0ZXJfTm9uZSA9IDB4MDAwMDAwMDAsCi0gICAgV0dQVUVycm9yRmlsdGVyX1ZhbGlk
YXRpb24gPSAweDAwMDAwMDAxLAotICAgIFdHUFVFcnJvckZpbHRlcl9PdXRPZk1lbW9yeSA9IDB4
MDAwMDAwMDIsCisgICAgV0dQVUVycm9yRmlsdGVyX1ZhbGlkYXRpb24gPSAweDAwMDAwMDAwLAor
ICAgIFdHUFVFcnJvckZpbHRlcl9PdXRPZk1lbW9yeSA9IDB4MDAwMDAwMDEsCiAgICAgV0dQVUVy
cm9yRmlsdGVyX0ZvcmNlMzIgPSAweDdGRkZGRkZGCiB9IFdHUFVFcnJvckZpbHRlcjsKIApAQCAt
MjE2LDEyICsyMzAsMTUgQEAgdHlwZWRlZiBlbnVtIFdHUFVFcnJvclR5cGUgewogCiB0eXBlZGVm
IGVudW0gV0dQVUZlYXR1cmVOYW1lIHsKICAgICBXR1BVRmVhdHVyZU5hbWVfVW5kZWZpbmVkID0g
MHgwMDAwMDAwMCwKLSAgICBXR1BVRmVhdHVyZU5hbWVfRGVwdGhDbGFtcGluZyA9IDB4MDAwMDAw
MDEsCisgICAgV0dQVUZlYXR1cmVOYW1lX0RlcHRoQ2xpcENvbnRyb2wgPSAweDAwMDAwMDAxLAog
ICAgIFdHUFVGZWF0dXJlTmFtZV9EZXB0aDI0VW5vcm1TdGVuY2lsOCA9IDB4MDAwMDAwMDIsCiAg
ICAgV0dQVUZlYXR1cmVOYW1lX0RlcHRoMzJGbG9hdFN0ZW5jaWw4ID0gMHgwMDAwMDAwMywKICAg
ICBXR1BVRmVhdHVyZU5hbWVfVGltZXN0YW1wUXVlcnkgPSAweDAwMDAwMDA0LAogICAgIFdHUFVG
ZWF0dXJlTmFtZV9QaXBlbGluZVN0YXRpc3RpY3NRdWVyeSA9IDB4MDAwMDAwMDUsCiAgICAgV0dQ
VUZlYXR1cmVOYW1lX1RleHR1cmVDb21wcmVzc2lvbkJDID0gMHgwMDAwMDAwNiwKKyAgICBXR1BV
RmVhdHVyZU5hbWVfVGV4dHVyZUNvbXByZXNzaW9uRVRDMiA9IDB4MDAwMDAwMDcsCisgICAgV0dQ
VUZlYXR1cmVOYW1lX1RleHR1cmVDb21wcmVzc2lvbkFTVEMgPSAweDAwMDAwMDA4LAorICAgIFdH
UFVGZWF0dXJlTmFtZV9JbmRpcmVjdEZpcnN0SW5zdGFuY2UgPSAweDAwMDAwMDA5LAogICAgIFdH
UFVGZWF0dXJlTmFtZV9Gb3JjZTMyID0gMHg3RkZGRkZGRgogfSBXR1BVRmVhdHVyZU5hbWU7CiAK
QEAgLTI2MCw4ICsyNzcsOSBAQCB0eXBlZGVmIGVudW0gV0dQVVBpcGVsaW5lU3RhdGlzdGljTmFt
ZSB7CiB9IFdHUFVQaXBlbGluZVN0YXRpc3RpY05hbWU7CiAKIHR5cGVkZWYgZW51bSBXR1BVUG93
ZXJQcmVmZXJlbmNlIHsKLSAgICBXR1BVUG93ZXJQcmVmZXJlbmNlX0xvd1Bvd2VyID0gMHgwMDAw
MDAwMCwKLSAgICBXR1BVUG93ZXJQcmVmZXJlbmNlX0hpZ2hQZXJmb3JtYW5jZSA9IDB4MDAwMDAw
MDEsCisgICAgV0dQVVBvd2VyUHJlZmVyZW5jZV9VbmRlZmluZWQgPSAweDAwMDAwMDAwLAorICAg
IFdHUFVQb3dlclByZWZlcmVuY2VfTG93UG93ZXIgPSAweDAwMDAwMDAxLAorICAgIFdHUFVQb3dl
clByZWZlcmVuY2VfSGlnaFBlcmZvcm1hbmNlID0gMHgwMDAwMDAwMiwKICAgICBXR1BVUG93ZXJQ
cmVmZXJlbmNlX0ZvcmNlMzIgPSAweDdGRkZGRkZGCiB9IFdHUFVQb3dlclByZWZlcmVuY2U7CiAK
QEAgLTI5Niw2ICszMTQsMTIgQEAgdHlwZWRlZiBlbnVtIFdHUFVRdWV1ZVdvcmtEb25lU3RhdHVz
IHsKICAgICBXR1BVUXVldWVXb3JrRG9uZVN0YXR1c19Gb3JjZTMyID0gMHg3RkZGRkZGRgogfSBX
R1BVUXVldWVXb3JrRG9uZVN0YXR1czsKIAordHlwZWRlZiBlbnVtIFdHUFVSZW5kZXJQYXNzVGlt
ZXN0YW1wTG9jYXRpb24geworICAgIFdHUFVSZW5kZXJQYXNzVGltZXN0YW1wTG9jYXRpb25fQmVn
aW5uaW5nID0gMHgwMDAwMDAwMCwKKyAgICBXR1BVUmVuZGVyUGFzc1RpbWVzdGFtcExvY2F0aW9u
X0VuZCA9IDB4MDAwMDAwMDEsCisgICAgV0dQVVJlbmRlclBhc3NUaW1lc3RhbXBMb2NhdGlvbl9G
b3JjZTMyID0gMHg3RkZGRkZGRgorfSBXR1BVUmVuZGVyUGFzc1RpbWVzdGFtcExvY2F0aW9uOwor
CiB0eXBlZGVmIGVudW0gV0dQVVJlcXVlc3RBZGFwdGVyU3RhdHVzIHsKICAgICBXR1BVUmVxdWVz
dEFkYXB0ZXJTdGF0dXNfU3VjY2VzcyA9IDB4MDAwMDAwMDAsCiAgICAgV0dQVVJlcXVlc3RBZGFw
dGVyU3RhdHVzX1VuYXZhaWxhYmxlID0gMHgwMDAwMDAwMSwKQEAgLTMxOSw3ICszNDMsOSBAQCB0
eXBlZGVmIGVudW0gV0dQVVNUeXBlIHsKICAgICBXR1BVU1R5cGVfU3VyZmFjZURlc2NyaXB0b3JG
cm9tQ2FudmFzSFRNTFNlbGVjdG9yID0gMHgwMDAwMDAwNCwKICAgICBXR1BVU1R5cGVfU2hhZGVy
TW9kdWxlU1BJUlZEZXNjcmlwdG9yID0gMHgwMDAwMDAwNSwKICAgICBXR1BVU1R5cGVfU2hhZGVy
TW9kdWxlV0dTTERlc2NyaXB0b3IgPSAweDAwMDAwMDA2LAotICAgIFdHUFVTVHlwZV9QcmltaXRp
dmVEZXB0aENsYW1waW5nU3RhdGUgPSAweDAwMDAwMDA3LAorICAgIFdHUFVTVHlwZV9QcmltaXRp
dmVEZXB0aENsaXBDb250cm9sID0gMHgwMDAwMDAwNywKKyAgICBXR1BVU1R5cGVfU3VyZmFjZURl
c2NyaXB0b3JGcm9tV2F5bGFuZFN1cmZhY2UgPSAweDAwMDAwMDA4LAorICAgIFdHUFVTVHlwZV9T
dXJmYWNlRGVzY3JpcHRvckZyb21BbmRyb2lkTmF0aXZlV2luZG93ID0gMHgwMDAwMDAwOSwKICAg
ICBXR1BVU1R5cGVfRm9yY2UzMiA9IDB4N0ZGRkZGRkYKIH0gV0dQVVNUeXBlOwogCkBAIC00MTks
MjEgKzQ0NSw2MSBAQCB0eXBlZGVmIGVudW0gV0dQVVRleHR1cmVGb3JtYXQgewogICAgIFdHUFVU
ZXh0dXJlRm9ybWF0X0RlcHRoMTZVbm9ybSA9IDB4MDAwMDAwMjYsCiAgICAgV0dQVVRleHR1cmVG
b3JtYXRfRGVwdGgyNFBsdXMgPSAweDAwMDAwMDI3LAogICAgIFdHUFVUZXh0dXJlRm9ybWF0X0Rl
cHRoMjRQbHVzU3RlbmNpbDggPSAweDAwMDAwMDI4LAotICAgIFdHUFVUZXh0dXJlRm9ybWF0X0Rl
cHRoMzJGbG9hdCA9IDB4MDAwMDAwMjksCi0gICAgV0dQVVRleHR1cmVGb3JtYXRfQkMxUkdCQVVu
b3JtID0gMHgwMDAwMDAyQSwKLSAgICBXR1BVVGV4dHVyZUZvcm1hdF9CQzFSR0JBVW5vcm1Tcmdi
ID0gMHgwMDAwMDAyQiwKLSAgICBXR1BVVGV4dHVyZUZvcm1hdF9CQzJSR0JBVW5vcm0gPSAweDAw
MDAwMDJDLAotICAgIFdHUFVUZXh0dXJlRm9ybWF0X0JDMlJHQkFVbm9ybVNyZ2IgPSAweDAwMDAw
MDJELAotICAgIFdHUFVUZXh0dXJlRm9ybWF0X0JDM1JHQkFVbm9ybSA9IDB4MDAwMDAwMkUsCi0g
ICAgV0dQVVRleHR1cmVGb3JtYXRfQkMzUkdCQVVub3JtU3JnYiA9IDB4MDAwMDAwMkYsCi0gICAg
V0dQVVRleHR1cmVGb3JtYXRfQkM0UlVub3JtID0gMHgwMDAwMDAzMCwKLSAgICBXR1BVVGV4dHVy
ZUZvcm1hdF9CQzRSU25vcm0gPSAweDAwMDAwMDMxLAotICAgIFdHUFVUZXh0dXJlRm9ybWF0X0JD
NVJHVW5vcm0gPSAweDAwMDAwMDMyLAotICAgIFdHUFVUZXh0dXJlRm9ybWF0X0JDNVJHU25vcm0g
PSAweDAwMDAwMDMzLAotICAgIFdHUFVUZXh0dXJlRm9ybWF0X0JDNkhSR0JVZmxvYXQgPSAweDAw
MDAwMDM0LAotICAgIFdHUFVUZXh0dXJlRm9ybWF0X0JDNkhSR0JGbG9hdCA9IDB4MDAwMDAwMzUs
Ci0gICAgV0dQVVRleHR1cmVGb3JtYXRfQkM3UkdCQVVub3JtID0gMHgwMDAwMDAzNiwKLSAgICBX
R1BVVGV4dHVyZUZvcm1hdF9CQzdSR0JBVW5vcm1TcmdiID0gMHgwMDAwMDAzNywKKyAgICBXR1BV
VGV4dHVyZUZvcm1hdF9EZXB0aDI0VW5vcm1TdGVuY2lsOCA9IDB4MDAwMDAwMjksCisgICAgV0dQ
VVRleHR1cmVGb3JtYXRfRGVwdGgzMkZsb2F0ID0gMHgwMDAwMDAyQSwKKyAgICBXR1BVVGV4dHVy
ZUZvcm1hdF9EZXB0aDMyRmxvYXRTdGVuY2lsOCA9IDB4MDAwMDAwMkIsCisgICAgV0dQVVRleHR1
cmVGb3JtYXRfQkMxUkdCQVVub3JtID0gMHgwMDAwMDAyQywKKyAgICBXR1BVVGV4dHVyZUZvcm1h
dF9CQzFSR0JBVW5vcm1TcmdiID0gMHgwMDAwMDAyRCwKKyAgICBXR1BVVGV4dHVyZUZvcm1hdF9C
QzJSR0JBVW5vcm0gPSAweDAwMDAwMDJFLAorICAgIFdHUFVUZXh0dXJlRm9ybWF0X0JDMlJHQkFV
bm9ybVNyZ2IgPSAweDAwMDAwMDJGLAorICAgIFdHUFVUZXh0dXJlRm9ybWF0X0JDM1JHQkFVbm9y
bSA9IDB4MDAwMDAwMzAsCisgICAgV0dQVVRleHR1cmVGb3JtYXRfQkMzUkdCQVVub3JtU3JnYiA9
IDB4MDAwMDAwMzEsCisgICAgV0dQVVRleHR1cmVGb3JtYXRfQkM0UlVub3JtID0gMHgwMDAwMDAz
MiwKKyAgICBXR1BVVGV4dHVyZUZvcm1hdF9CQzRSU25vcm0gPSAweDAwMDAwMDMzLAorICAgIFdH
UFVUZXh0dXJlRm9ybWF0X0JDNVJHVW5vcm0gPSAweDAwMDAwMDM0LAorICAgIFdHUFVUZXh0dXJl
Rm9ybWF0X0JDNVJHU25vcm0gPSAweDAwMDAwMDM1LAorICAgIFdHUFVUZXh0dXJlRm9ybWF0X0JD
NkhSR0JVZmxvYXQgPSAweDAwMDAwMDM2LAorICAgIFdHUFVUZXh0dXJlRm9ybWF0X0JDNkhSR0JG
bG9hdCA9IDB4MDAwMDAwMzcsCisgICAgV0dQVVRleHR1cmVGb3JtYXRfQkM3UkdCQVVub3JtID0g
MHgwMDAwMDAzOCwKKyAgICBXR1BVVGV4dHVyZUZvcm1hdF9CQzdSR0JBVW5vcm1TcmdiID0gMHgw
MDAwMDAzOSwKKyAgICBXR1BVVGV4dHVyZUZvcm1hdF9FVEMyUkdCOFVub3JtID0gMHgwMDAwMDAz
QSwKKyAgICBXR1BVVGV4dHVyZUZvcm1hdF9FVEMyUkdCOFVub3JtU3JnYiA9IDB4MDAwMDAwM0Is
CisgICAgV0dQVVRleHR1cmVGb3JtYXRfRVRDMlJHQjhBMVVub3JtID0gMHgwMDAwMDAzQywKKyAg
ICBXR1BVVGV4dHVyZUZvcm1hdF9FVEMyUkdCOEExVW5vcm1TcmdiID0gMHgwMDAwMDAzRCwKKyAg
ICBXR1BVVGV4dHVyZUZvcm1hdF9FVEMyUkdCQThVbm9ybSA9IDB4MDAwMDAwM0UsCisgICAgV0dQ
VVRleHR1cmVGb3JtYXRfRVRDMlJHQkE4VW5vcm1TcmdiID0gMHgwMDAwMDAzRiwKKyAgICBXR1BV
VGV4dHVyZUZvcm1hdF9FQUNSMTFVbm9ybSA9IDB4MDAwMDAwNDAsCisgICAgV0dQVVRleHR1cmVG
b3JtYXRfRUFDUjExU25vcm0gPSAweDAwMDAwMDQxLAorICAgIFdHUFVUZXh0dXJlRm9ybWF0X0VB
Q1JHMTFVbm9ybSA9IDB4MDAwMDAwNDIsCisgICAgV0dQVVRleHR1cmVGb3JtYXRfRUFDUkcxMVNu
b3JtID0gMHgwMDAwMDA0MywKKyAgICBXR1BVVGV4dHVyZUZvcm1hdF9BU1RDNHg0VW5vcm0gPSAw
eDAwMDAwMDQ0LAorICAgIFdHUFVUZXh0dXJlRm9ybWF0X0FTVEM0eDRVbm9ybVNyZ2IgPSAweDAw
MDAwMDQ1LAorICAgIFdHUFVUZXh0dXJlRm9ybWF0X0FTVEM1eDRVbm9ybSA9IDB4MDAwMDAwNDYs
CisgICAgV0dQVVRleHR1cmVGb3JtYXRfQVNUQzV4NFVub3JtU3JnYiA9IDB4MDAwMDAwNDcsCisg
ICAgV0dQVVRleHR1cmVGb3JtYXRfQVNUQzV4NVVub3JtID0gMHgwMDAwMDA0OCwKKyAgICBXR1BV
VGV4dHVyZUZvcm1hdF9BU1RDNXg1VW5vcm1TcmdiID0gMHgwMDAwMDA0OSwKKyAgICBXR1BVVGV4
dHVyZUZvcm1hdF9BU1RDNng1VW5vcm0gPSAweDAwMDAwMDRBLAorICAgIFdHUFVUZXh0dXJlRm9y
bWF0X0FTVEM2eDVVbm9ybVNyZ2IgPSAweDAwMDAwMDRCLAorICAgIFdHUFVUZXh0dXJlRm9ybWF0
X0FTVEM2eDZVbm9ybSA9IDB4MDAwMDAwNEMsCisgICAgV0dQVVRleHR1cmVGb3JtYXRfQVNUQzZ4
NlVub3JtU3JnYiA9IDB4MDAwMDAwNEQsCisgICAgV0dQVVRleHR1cmVGb3JtYXRfQVNUQzh4NVVu
b3JtID0gMHgwMDAwMDA0RSwKKyAgICBXR1BVVGV4dHVyZUZvcm1hdF9BU1RDOHg1VW5vcm1Tcmdi
ID0gMHgwMDAwMDA0RiwKKyAgICBXR1BVVGV4dHVyZUZvcm1hdF9BU1RDOHg2VW5vcm0gPSAweDAw
MDAwMDUwLAorICAgIFdHUFVUZXh0dXJlRm9ybWF0X0FTVEM4eDZVbm9ybVNyZ2IgPSAweDAwMDAw
MDUxLAorICAgIFdHUFVUZXh0dXJlRm9ybWF0X0FTVEM4eDhVbm9ybSA9IDB4MDAwMDAwNTIsCisg
ICAgV0dQVVRleHR1cmVGb3JtYXRfQVNUQzh4OFVub3JtU3JnYiA9IDB4MDAwMDAwNTMsCisgICAg
V0dQVVRleHR1cmVGb3JtYXRfQVNUQzEweDVVbm9ybSA9IDB4MDAwMDAwNTQsCisgICAgV0dQVVRl
eHR1cmVGb3JtYXRfQVNUQzEweDVVbm9ybVNyZ2IgPSAweDAwMDAwMDU1LAorICAgIFdHUFVUZXh0
dXJlRm9ybWF0X0FTVEMxMHg2VW5vcm0gPSAweDAwMDAwMDU2LAorICAgIFdHUFVUZXh0dXJlRm9y
bWF0X0FTVEMxMHg2VW5vcm1TcmdiID0gMHgwMDAwMDA1NywKKyAgICBXR1BVVGV4dHVyZUZvcm1h
dF9BU1RDMTB4OFVub3JtID0gMHgwMDAwMDA1OCwKKyAgICBXR1BVVGV4dHVyZUZvcm1hdF9BU1RD
MTB4OFVub3JtU3JnYiA9IDB4MDAwMDAwNTksCisgICAgV0dQVVRleHR1cmVGb3JtYXRfQVNUQzEw
eDEwVW5vcm0gPSAweDAwMDAwMDVBLAorICAgIFdHUFVUZXh0dXJlRm9ybWF0X0FTVEMxMHgxMFVu
b3JtU3JnYiA9IDB4MDAwMDAwNUIsCisgICAgV0dQVVRleHR1cmVGb3JtYXRfQVNUQzEyeDEwVW5v
cm0gPSAweDAwMDAwMDVDLAorICAgIFdHUFVUZXh0dXJlRm9ybWF0X0FTVEMxMngxMFVub3JtU3Jn
YiA9IDB4MDAwMDAwNUQsCisgICAgV0dQVVRleHR1cmVGb3JtYXRfQVNUQzEyeDEyVW5vcm0gPSAw
eDAwMDAwMDVFLAorICAgIFdHUFVUZXh0dXJlRm9ybWF0X0FTVEMxMngxMlVub3JtU3JnYiA9IDB4
MDAwMDAwNUYsCiAgICAgV0dQVVRleHR1cmVGb3JtYXRfRm9yY2UzMiA9IDB4N0ZGRkZGRkYKIH0g
V0dQVVRleHR1cmVGb3JtYXQ7CiAKQEAgLTYzMiwxMCArNjk4LDExIEBAIHR5cGVkZWYgc3RydWN0
IFdHUFVDb21waWxhdGlvbk1lc3NhZ2UgewogICAgIHVpbnQ2NF90IGxlbmd0aDsKIH0gV0dQVUNv
bXBpbGF0aW9uTWVzc2FnZTsKIAotdHlwZWRlZiBzdHJ1Y3QgV0dQVUNvbXB1dGVQYXNzRGVzY3Jp
cHRvciB7Ci0gICAgV0dQVUNoYWluZWRTdHJ1Y3QgY29uc3QgKiBuZXh0SW5DaGFpbjsKLSAgICBj
aGFyIGNvbnN0ICogbGFiZWw7Ci19IFdHUFVDb21wdXRlUGFzc0Rlc2NyaXB0b3I7Cit0eXBlZGVm
IHN0cnVjdCBXR1BVQ29tcHV0ZVBhc3NUaW1lc3RhbXBXcml0ZSB7CisgICAgV0dQVVF1ZXJ5U2V0
IHF1ZXJ5U2V0OworICAgIHVpbnQzMl90IHF1ZXJ5SW5kZXg7CisgICAgV0dQVUNvbXB1dGVQYXNz
VGltZXN0YW1wTG9jYXRpb24gbG9jYXRpb247Cit9IFdHUFVDb21wdXRlUGFzc1RpbWVzdGFtcFdy
aXRlOwogCiB0eXBlZGVmIHN0cnVjdCBXR1BVQ29uc3RhbnRFbnRyeSB7CiAgICAgV0dQVUNoYWlu
ZWRTdHJ1Y3QgY29uc3QgKiBuZXh0SW5DaGFpbjsKQEAgLTcwMiwxMCArNzY5LDEwIEBAIHR5cGVk
ZWYgc3RydWN0IFdHUFVQaXBlbGluZUxheW91dERlc2NyaXB0b3IgewogICAgIFdHUFVCaW5kR3Jv
dXBMYXlvdXQgY29uc3QgKiBiaW5kR3JvdXBMYXlvdXRzOwogfSBXR1BVUGlwZWxpbmVMYXlvdXRE
ZXNjcmlwdG9yOwogCi10eXBlZGVmIHN0cnVjdCBXR1BVUHJpbWl0aXZlRGVwdGhDbGFtcGluZ1N0
YXRlIHsKK3R5cGVkZWYgc3RydWN0IFdHUFVQcmltaXRpdmVEZXB0aENsaXBDb250cm9sIHsKICAg
ICBXR1BVQ2hhaW5lZFN0cnVjdCBjaGFpbjsKLSAgICBib29sIGNsYW1wRGVwdGg7Ci19IFdHUFVQ
cmltaXRpdmVEZXB0aENsYW1waW5nU3RhdGU7CisgICAgYm9vbCB1bmNsaXBwZWREZXB0aDsKK30g
V0dQVVByaW1pdGl2ZURlcHRoQ2xpcENvbnRyb2w7CiAKIHR5cGVkZWYgc3RydWN0IFdHUFVQcmlt
aXRpdmVTdGF0ZSB7CiAgICAgV0dQVUNoYWluZWRTdHJ1Y3QgY29uc3QgKiBuZXh0SW5DaGFpbjsK
QEAgLTczNiw2ICs4MDMsOCBAQCB0eXBlZGVmIHN0cnVjdCBXR1BVUmVuZGVyQnVuZGxlRW5jb2Rl
ckRlc2NyaXB0b3IgewogICAgIFdHUFVUZXh0dXJlRm9ybWF0IGNvbnN0ICogY29sb3JGb3JtYXRz
OwogICAgIFdHUFVUZXh0dXJlRm9ybWF0IGRlcHRoU3RlbmNpbEZvcm1hdDsKICAgICB1aW50MzJf
dCBzYW1wbGVDb3VudDsKKyAgICBib29sIGRlcHRoUmVhZE9ubHk7CisgICAgYm9vbCBzdGVuY2ls
UmVhZE9ubHk7CiB9IFdHUFVSZW5kZXJCdW5kbGVFbmNvZGVyRGVzY3JpcHRvcjsKIAogdHlwZWRl
ZiBzdHJ1Y3QgV0dQVVJlbmRlclBhc3NEZXB0aFN0ZW5jaWxBdHRhY2htZW50IHsKQEAgLTc1MCw2
ICs4MTksMTIgQEAgdHlwZWRlZiBzdHJ1Y3QgV0dQVVJlbmRlclBhc3NEZXB0aFN0ZW5jaWxBdHRh
Y2htZW50IHsKICAgICBib29sIHN0ZW5jaWxSZWFkT25seTsKIH0gV0dQVVJlbmRlclBhc3NEZXB0
aFN0ZW5jaWxBdHRhY2htZW50OwogCit0eXBlZGVmIHN0cnVjdCBXR1BVUmVuZGVyUGFzc1RpbWVz
dGFtcFdyaXRlIHsKKyAgICBXR1BVUXVlcnlTZXQgcXVlcnlTZXQ7CisgICAgdWludDMyX3QgcXVl
cnlJbmRleDsKKyAgICBXR1BVUmVuZGVyUGFzc1RpbWVzdGFtcExvY2F0aW9uIGxvY2F0aW9uOwor
fSBXR1BVUmVuZGVyUGFzc1RpbWVzdGFtcFdyaXRlOworCiB0eXBlZGVmIHN0cnVjdCBXR1BVUmVx
dWVzdEFkYXB0ZXJPcHRpb25zIHsKICAgICBXR1BVQ2hhaW5lZFN0cnVjdCBjb25zdCAqIG5leHRJ
bkNoYWluOwogICAgIFdHUFVTdXJmYWNlIGNvbXBhdGlibGVTdXJmYWNlOwpAQCAtNzkwLDcgKzg2
NSw3IEBAIHR5cGVkZWYgc3RydWN0IFdHUFVTaGFkZXJNb2R1bGVTUElSVkRlc2NyaXB0b3Igewog
CiB0eXBlZGVmIHN0cnVjdCBXR1BVU2hhZGVyTW9kdWxlV0dTTERlc2NyaXB0b3IgewogICAgIFdH
UFVDaGFpbmVkU3RydWN0IGNoYWluOwotICAgIGNoYXIgY29uc3QgKiBzb3VyY2U7CisgICAgY2hh
ciBjb25zdCAqIGNvZGU7CiB9IFdHUFVTaGFkZXJNb2R1bGVXR1NMRGVzY3JpcHRvcjsKIAogdHlw
ZWRlZiBzdHJ1Y3QgV0dQVVN0ZW5jaWxGYWNlU3RhdGUgewpAQCAtODM0LDYgKzkwOSwxNyBAQCB0
eXBlZGVmIHN0cnVjdCBXR1BVU3VyZmFjZURlc2NyaXB0b3JGcm9tWGxpYiB7CiAgICAgdWludDMy
X3Qgd2luZG93OwogfSBXR1BVU3VyZmFjZURlc2NyaXB0b3JGcm9tWGxpYjsKIAordHlwZWRlZiBz
dHJ1Y3QgV0dQVVN1cmZhY2VEZXNjcmlwdG9yRnJvbVdheWxhbmRTdXJmYWNlIHsKKyAgICBXR1BV
Q2hhaW5lZFN0cnVjdCBjaGFpbjsKKyAgICB2b2lkICogZGlzcGxheTsKKyAgICB2b2lkICogc3Vy
ZmFjZTsKK30gV0dQVVN1cmZhY2VEZXNjcmlwdG9yRnJvbVdheWxhbmRTdXJmYWNlOworCit0eXBl
ZGVmIHN0cnVjdCBXR1BVU3VyZmFjZURlc2NyaXB0b3JGcm9tQW5kcm9pZE5hdGl2ZVdpbmRvdyB7
CisgICAgV0dQVUNoYWluZWRTdHJ1Y3QgY2hhaW47CisgICAgdm9pZCAqIHdpbmRvdzsKK30gV0dQ
VVN1cmZhY2VEZXNjcmlwdG9yRnJvbUFuZHJvaWROYXRpdmVXaW5kb3c7CisKIHR5cGVkZWYgc3Ry
dWN0IFdHUFVTd2FwQ2hhaW5EZXNjcmlwdG9yIHsKICAgICBXR1BVQ2hhaW5lZFN0cnVjdCBjb25z
dCAqIG5leHRJbkNoYWluOwogICAgIGNoYXIgY29uc3QgKiBsYWJlbDsKQEAgLTkwNSw2ICs5OTEs
MTMgQEAgdHlwZWRlZiBzdHJ1Y3QgV0dQVUNvbXBpbGF0aW9uSW5mbyB7CiAgICAgV0dQVUNvbXBp
bGF0aW9uTWVzc2FnZSBjb25zdCAqIG1lc3NhZ2VzOwogfSBXR1BVQ29tcGlsYXRpb25JbmZvOwog
Cit0eXBlZGVmIHN0cnVjdCBXR1BVQ29tcHV0ZVBhc3NEZXNjcmlwdG9yIHsKKyAgICBXR1BVQ2hh
aW5lZFN0cnVjdCBjb25zdCAqIG5leHRJbkNoYWluOworICAgIGNoYXIgY29uc3QgKiBsYWJlbDsK
KyAgICB1aW50MzJfdCB0aW1lc3RhbXBXcml0ZUNvdW50OworICAgIFdHUFVDb21wdXRlUGFzc1Rp
bWVzdGFtcFdyaXRlIGNvbnN0ICogdGltZXN0YW1wV3JpdGVzOworfSBXR1BVQ29tcHV0ZVBhc3NE
ZXNjcmlwdG9yOworCiB0eXBlZGVmIHN0cnVjdCBXR1BVRGVwdGhTdGVuY2lsU3RhdGUgewogICAg
IFdHUFVDaGFpbmVkU3RydWN0IGNvbnN0ICogbmV4dEluQ2hhaW47CiAgICAgV0dQVVRleHR1cmVG
b3JtYXQgZm9ybWF0OwpAQCAtMTAwMCw2ICsxMDkzLDcgQEAgdHlwZWRlZiBzdHJ1Y3QgV0dQVUNv
bXB1dGVQaXBlbGluZURlc2NyaXB0b3IgewogCiB0eXBlZGVmIHN0cnVjdCBXR1BVRGV2aWNlRGVz
Y3JpcHRvciB7CiAgICAgV0dQVUNoYWluZWRTdHJ1Y3QgY29uc3QgKiBuZXh0SW5DaGFpbjsKKyAg
ICBjaGFyIGNvbnN0ICogbGFiZWw7CiAgICAgdWludDMyX3QgcmVxdWlyZWRGZWF0dXJlc0NvdW50
OwogICAgIFdHUFVGZWF0dXJlTmFtZSBjb25zdCAqIHJlcXVpcmVkRmVhdHVyZXM7CiAgICAgV0dQ
VVJlcXVpcmVkTGltaXRzIGNvbnN0ICogcmVxdWlyZWRMaW1pdHM7CkBAIC0xMDEyLDYgKzExMDYs
OCBAQCB0eXBlZGVmIHN0cnVjdCBXR1BVUmVuZGVyUGFzc0Rlc2NyaXB0b3IgewogICAgIFdHUFVS
ZW5kZXJQYXNzQ29sb3JBdHRhY2htZW50IGNvbnN0ICogY29sb3JBdHRhY2htZW50czsKICAgICBX
R1BVUmVuZGVyUGFzc0RlcHRoU3RlbmNpbEF0dGFjaG1lbnQgY29uc3QgKiBkZXB0aFN0ZW5jaWxB
dHRhY2htZW50OwogICAgIFdHUFVRdWVyeVNldCBvY2NsdXNpb25RdWVyeVNldDsKKyAgICB1aW50
MzJfdCB0aW1lc3RhbXBXcml0ZUNvdW50OworICAgIFdHUFVSZW5kZXJQYXNzVGltZXN0YW1wV3Jp
dGUgY29uc3QgKiB0aW1lc3RhbXBXcml0ZXM7CiB9IFdHUFVSZW5kZXJQYXNzRGVzY3JpcHRvcjsK
IAogdHlwZWRlZiBzdHJ1Y3QgV0dQVVZlcnRleFN0YXRlIHsKQEAgLTEwNTAsMjIgKzExNDYsMjMg
QEAgZXh0ZXJuICJDIiB7CiAjZW5kaWYKIAogdHlwZWRlZiB2b2lkICgqV0dQVUJ1ZmZlck1hcENh
bGxiYWNrKShXR1BVQnVmZmVyTWFwQXN5bmNTdGF0dXMgc3RhdHVzLCB2b2lkICogdXNlcmRhdGEp
OwordHlwZWRlZiB2b2lkICgqV0dQVUNvbXBpbGF0aW9uSW5mb0NhbGxiYWNrKShXR1BVQ29tcGls
YXRpb25JbmZvUmVxdWVzdFN0YXR1cyBzdGF0dXMsIFdHUFVDb21waWxhdGlvbkluZm8gY29uc3Qg
KiBjb21waWxhdGlvbkluZm8sIHZvaWQgKiB1c2VyZGF0YSk7CiB0eXBlZGVmIHZvaWQgKCpXR1BV
Q3JlYXRlQ29tcHV0ZVBpcGVsaW5lQXN5bmNDYWxsYmFjaykoV0dQVUNyZWF0ZVBpcGVsaW5lQXN5
bmNTdGF0dXMgc3RhdHVzLCBXR1BVQ29tcHV0ZVBpcGVsaW5lIHBpcGVsaW5lLCBjaGFyIGNvbnN0
ICogbWVzc2FnZSwgdm9pZCAqIHVzZXJkYXRhKTsKIHR5cGVkZWYgdm9pZCAoKldHUFVDcmVhdGVS
ZW5kZXJQaXBlbGluZUFzeW5jQ2FsbGJhY2spKFdHUFVDcmVhdGVQaXBlbGluZUFzeW5jU3RhdHVz
IHN0YXR1cywgV0dQVVJlbmRlclBpcGVsaW5lIHBpcGVsaW5lLCBjaGFyIGNvbnN0ICogbWVzc2Fn
ZSwgdm9pZCAqIHVzZXJkYXRhKTsKIHR5cGVkZWYgdm9pZCAoKldHUFVEZXZpY2VMb3N0Q2FsbGJh
Y2spKFdHUFVEZXZpY2VMb3N0UmVhc29uIHJlYXNvbiwgY2hhciBjb25zdCAqIG1lc3NhZ2UsIHZv
aWQgKiB1c2VyZGF0YSk7CiB0eXBlZGVmIHZvaWQgKCpXR1BVRXJyb3JDYWxsYmFjaykoV0dQVUVy
cm9yVHlwZSB0eXBlLCBjaGFyIGNvbnN0ICogbWVzc2FnZSwgdm9pZCAqIHVzZXJkYXRhKTsKK3R5
cGVkZWYgdm9pZCAoKldHUFVQcm9jKSgpOwogdHlwZWRlZiB2b2lkICgqV0dQVVF1ZXVlV29ya0Rv
bmVDYWxsYmFjaykoV0dQVVF1ZXVlV29ya0RvbmVTdGF0dXMgc3RhdHVzLCB2b2lkICogdXNlcmRh
dGEpOwogdHlwZWRlZiB2b2lkICgqV0dQVVJlcXVlc3RBZGFwdGVyQ2FsbGJhY2spKFdHUFVSZXF1
ZXN0QWRhcHRlclN0YXR1cyBzdGF0dXMsIFdHUFVBZGFwdGVyIGFkYXB0ZXIsIGNoYXIgY29uc3Qg
KiBtZXNzYWdlLCB2b2lkICogdXNlcmRhdGEpOwogdHlwZWRlZiB2b2lkICgqV0dQVVJlcXVlc3RE
ZXZpY2VDYWxsYmFjaykoV0dQVVJlcXVlc3REZXZpY2VTdGF0dXMgc3RhdHVzLCBXR1BVRGV2aWNl
IGRldmljZSwgY2hhciBjb25zdCAqIG1lc3NhZ2UsIHZvaWQgKiB1c2VyZGF0YSk7CiAKLXR5cGVk
ZWYgdm9pZCAoKldHUFVQcm9jKSh2b2lkKTsKLQogI2lmICFkZWZpbmVkKFdHUFVfU0tJUF9QUk9D
UykKIAogdHlwZWRlZiBXR1BVSW5zdGFuY2UgKCpXR1BVUHJvY0NyZWF0ZUluc3RhbmNlKShXR1BV
SW5zdGFuY2VEZXNjcmlwdG9yIGNvbnN0ICogZGVzY3JpcHRvcik7CiB0eXBlZGVmIFdHUFVQcm9j
ICgqV0dQVVByb2NHZXRQcm9jQWRkcmVzcykoV0dQVURldmljZSBkZXZpY2UsIGNoYXIgY29uc3Qg
KiBwcm9jTmFtZSk7CiAKIC8vIFByb2NzIG9mIEFkYXB0ZXIKK3R5cGVkZWYgc2l6ZV90ICgqV0dQ
VVByb2NBZGFwdGVyRW51bWVyYXRlRmVhdHVyZXMpKFdHUFVBZGFwdGVyIGFkYXB0ZXIsIFdHUFVG
ZWF0dXJlTmFtZSogZmVhdHVyZXMpOwogdHlwZWRlZiBib29sICgqV0dQVVByb2NBZGFwdGVyR2V0
TGltaXRzKShXR1BVQWRhcHRlciBhZGFwdGVyLCBXR1BVU3VwcG9ydGVkTGltaXRzICogbGltaXRz
KTsKIHR5cGVkZWYgdm9pZCAoKldHUFVQcm9jQWRhcHRlckdldFByb3BlcnRpZXMpKFdHUFVBZGFw
dGVyIGFkYXB0ZXIsIFdHUFVBZGFwdGVyUHJvcGVydGllcyAqIHByb3BlcnRpZXMpOwogdHlwZWRl
ZiBib29sICgqV0dQVVByb2NBZGFwdGVySGFzRmVhdHVyZSkoV0dQVUFkYXB0ZXIgYWRhcHRlciwg
V0dQVUZlYXR1cmVOYW1lIGZlYXR1cmUpOwpAQCAtMTA4MSw2ICsxMTc4LDcgQEAgdHlwZWRlZiB2
b2lkICgqV0dQVVByb2NCdWZmZXJVbm1hcCkoV0dQVUJ1ZmZlciBidWZmZXIpOwogLy8gUHJvY3Mg
b2YgQ29tbWFuZEVuY29kZXIKIHR5cGVkZWYgV0dQVUNvbXB1dGVQYXNzRW5jb2RlciAoKldHUFVQ
cm9jQ29tbWFuZEVuY29kZXJCZWdpbkNvbXB1dGVQYXNzKShXR1BVQ29tbWFuZEVuY29kZXIgY29t
bWFuZEVuY29kZXIsIFdHUFVDb21wdXRlUGFzc0Rlc2NyaXB0b3IgY29uc3QgKiBkZXNjcmlwdG9y
KTsKIHR5cGVkZWYgV0dQVVJlbmRlclBhc3NFbmNvZGVyICgqV0dQVVByb2NDb21tYW5kRW5jb2Rl
ckJlZ2luUmVuZGVyUGFzcykoV0dQVUNvbW1hbmRFbmNvZGVyIGNvbW1hbmRFbmNvZGVyLCBXR1BV
UmVuZGVyUGFzc0Rlc2NyaXB0b3IgY29uc3QgKiBkZXNjcmlwdG9yKTsKK3R5cGVkZWYgdm9pZCAo
KldHUFVQcm9jQ29tbWFuZEVuY29kZXJDbGVhckJ1ZmZlcikoV0dQVUNvbW1hbmRFbmNvZGVyIGNv
bW1hbmRFbmNvZGVyLCBXR1BVQnVmZmVyIGJ1ZmZlciwgdWludDY0X3Qgb2Zmc2V0LCB1aW50NjRf
dCBzaXplKTsKIHR5cGVkZWYgdm9pZCAoKldHUFVQcm9jQ29tbWFuZEVuY29kZXJDb3B5QnVmZmVy
VG9CdWZmZXIpKFdHUFVDb21tYW5kRW5jb2RlciBjb21tYW5kRW5jb2RlciwgV0dQVUJ1ZmZlciBz
b3VyY2UsIHVpbnQ2NF90IHNvdXJjZU9mZnNldCwgV0dQVUJ1ZmZlciBkZXN0aW5hdGlvbiwgdWlu
dDY0X3QgZGVzdGluYXRpb25PZmZzZXQsIHVpbnQ2NF90IHNpemUpOwogdHlwZWRlZiB2b2lkICgq
V0dQVVByb2NDb21tYW5kRW5jb2RlckNvcHlCdWZmZXJUb1RleHR1cmUpKFdHUFVDb21tYW5kRW5j
b2RlciBjb21tYW5kRW5jb2RlciwgV0dQVUltYWdlQ29weUJ1ZmZlciBjb25zdCAqIHNvdXJjZSwg
V0dQVUltYWdlQ29weVRleHR1cmUgY29uc3QgKiBkZXN0aW5hdGlvbiwgV0dQVUV4dGVudDNEIGNv
bnN0ICogY29weVNpemUpOwogdHlwZWRlZiB2b2lkICgqV0dQVVByb2NDb21tYW5kRW5jb2RlckNv
cHlUZXh0dXJlVG9CdWZmZXIpKFdHUFVDb21tYW5kRW5jb2RlciBjb21tYW5kRW5jb2RlciwgV0dQ
VUltYWdlQ29weVRleHR1cmUgY29uc3QgKiBzb3VyY2UsIFdHUFVJbWFnZUNvcHlCdWZmZXIgY29u
c3QgKiBkZXN0aW5hdGlvbiwgV0dQVUV4dGVudDNEIGNvbnN0ICogY29weVNpemUpOwpAQCAtMTEw
Myw3ICsxMjAxLDYgQEAgdHlwZWRlZiB2b2lkICgqV0dQVVByb2NDb21wdXRlUGFzc0VuY29kZXJQ
b3BEZWJ1Z0dyb3VwKShXR1BVQ29tcHV0ZVBhc3NFbmNvZGVyIGMKIHR5cGVkZWYgdm9pZCAoKldH
UFVQcm9jQ29tcHV0ZVBhc3NFbmNvZGVyUHVzaERlYnVnR3JvdXApKFdHUFVDb21wdXRlUGFzc0Vu
Y29kZXIgY29tcHV0ZVBhc3NFbmNvZGVyLCBjaGFyIGNvbnN0ICogZ3JvdXBMYWJlbCk7CiB0eXBl
ZGVmIHZvaWQgKCpXR1BVUHJvY0NvbXB1dGVQYXNzRW5jb2RlclNldEJpbmRHcm91cCkoV0dQVUNv
bXB1dGVQYXNzRW5jb2RlciBjb21wdXRlUGFzc0VuY29kZXIsIHVpbnQzMl90IGdyb3VwSW5kZXgs
IFdHUFVCaW5kR3JvdXAgZ3JvdXAsIHVpbnQzMl90IGR5bmFtaWNPZmZzZXRDb3VudCwgdWludDMy
X3QgY29uc3QgKiBkeW5hbWljT2Zmc2V0cyk7CiB0eXBlZGVmIHZvaWQgKCpXR1BVUHJvY0NvbXB1
dGVQYXNzRW5jb2RlclNldFBpcGVsaW5lKShXR1BVQ29tcHV0ZVBhc3NFbmNvZGVyIGNvbXB1dGVQ
YXNzRW5jb2RlciwgV0dQVUNvbXB1dGVQaXBlbGluZSBwaXBlbGluZSk7Ci10eXBlZGVmIHZvaWQg
KCpXR1BVUHJvY0NvbXB1dGVQYXNzRW5jb2RlcldyaXRlVGltZXN0YW1wKShXR1BVQ29tcHV0ZVBh
c3NFbmNvZGVyIGNvbXB1dGVQYXNzRW5jb2RlciwgV0dQVVF1ZXJ5U2V0IHF1ZXJ5U2V0LCB1aW50
MzJfdCBxdWVyeUluZGV4KTsKIAogLy8gUHJvY3Mgb2YgQ29tcHV0ZVBpcGVsaW5lCiB0eXBlZGVm
IFdHUFVCaW5kR3JvdXBMYXlvdXQgKCpXR1BVUHJvY0NvbXB1dGVQaXBlbGluZUdldEJpbmRHcm91
cExheW91dCkoV0dQVUNvbXB1dGVQaXBlbGluZSBjb21wdXRlUGlwZWxpbmUsIHVpbnQzMl90IGdy
b3VwSW5kZXgpOwpAQCAtMTEyNiw4ICsxMjIzLDEwIEBAIHR5cGVkZWYgV0dQVVNoYWRlck1vZHVs
ZSAoKldHUFVQcm9jRGV2aWNlQ3JlYXRlU2hhZGVyTW9kdWxlKShXR1BVRGV2aWNlIGRldmljZSwK
IHR5cGVkZWYgV0dQVVN3YXBDaGFpbiAoKldHUFVQcm9jRGV2aWNlQ3JlYXRlU3dhcENoYWluKShX
R1BVRGV2aWNlIGRldmljZSwgV0dQVVN1cmZhY2Ugc3VyZmFjZSwgV0dQVVN3YXBDaGFpbkRlc2Ny
aXB0b3IgY29uc3QgKiBkZXNjcmlwdG9yKTsKIHR5cGVkZWYgV0dQVVRleHR1cmUgKCpXR1BVUHJv
Y0RldmljZUNyZWF0ZVRleHR1cmUpKFdHUFVEZXZpY2UgZGV2aWNlLCBXR1BVVGV4dHVyZURlc2Ny
aXB0b3IgY29uc3QgKiBkZXNjcmlwdG9yKTsKIHR5cGVkZWYgdm9pZCAoKldHUFVQcm9jRGV2aWNl
RGVzdHJveSkoV0dQVURldmljZSBkZXZpY2UpOwordHlwZWRlZiBzaXplX3QgKCpXR1BVUHJvY0Rl
dmljZUVudW1lcmF0ZUZlYXR1cmVzKShXR1BVRGV2aWNlIGRldmljZSwgV0dQVUZlYXR1cmVOYW1l
KiBmZWF0dXJlcyk7CiB0eXBlZGVmIGJvb2wgKCpXR1BVUHJvY0RldmljZUdldExpbWl0cykoV0dQ
VURldmljZSBkZXZpY2UsIFdHUFVTdXBwb3J0ZWRMaW1pdHMgKiBsaW1pdHMpOwogdHlwZWRlZiBX
R1BVUXVldWUgKCpXR1BVUHJvY0RldmljZUdldFF1ZXVlKShXR1BVRGV2aWNlIGRldmljZSk7Cit0
eXBlZGVmIGJvb2wgKCpXR1BVUHJvY0RldmljZUhhc0ZlYXR1cmUpKFdHUFVEZXZpY2UgZGV2aWNl
LCBXR1BVRmVhdHVyZU5hbWUgZmVhdHVyZSk7CiB0eXBlZGVmIGJvb2wgKCpXR1BVUHJvY0Rldmlj
ZVBvcEVycm9yU2NvcGUpKFdHUFVEZXZpY2UgZGV2aWNlLCBXR1BVRXJyb3JDYWxsYmFjayBjYWxs
YmFjaywgdm9pZCAqIHVzZXJkYXRhKTsKIHR5cGVkZWYgdm9pZCAoKldHUFVQcm9jRGV2aWNlUHVz
aEVycm9yU2NvcGUpKFdHUFVEZXZpY2UgZGV2aWNlLCBXR1BVRXJyb3JGaWx0ZXIgZmlsdGVyKTsK
IHR5cGVkZWYgdm9pZCAoKldHUFVQcm9jRGV2aWNlU2V0RGV2aWNlTG9zdENhbGxiYWNrKShXR1BV
RGV2aWNlIGRldmljZSwgV0dQVURldmljZUxvc3RDYWxsYmFjayBjYWxsYmFjaywgdm9pZCAqIHVz
ZXJkYXRhKTsKQEAgLTExODMsMTMgKzEyODIsMTMgQEAgdHlwZWRlZiB2b2lkICgqV0dQVVByb2NS
ZW5kZXJQYXNzRW5jb2RlclNldFNjaXNzb3JSZWN0KShXR1BVUmVuZGVyUGFzc0VuY29kZXIgcmUK
IHR5cGVkZWYgdm9pZCAoKldHUFVQcm9jUmVuZGVyUGFzc0VuY29kZXJTZXRTdGVuY2lsUmVmZXJl
bmNlKShXR1BVUmVuZGVyUGFzc0VuY29kZXIgcmVuZGVyUGFzc0VuY29kZXIsIHVpbnQzMl90IHJl
ZmVyZW5jZSk7CiB0eXBlZGVmIHZvaWQgKCpXR1BVUHJvY1JlbmRlclBhc3NFbmNvZGVyU2V0VmVy
dGV4QnVmZmVyKShXR1BVUmVuZGVyUGFzc0VuY29kZXIgcmVuZGVyUGFzc0VuY29kZXIsIHVpbnQz
Ml90IHNsb3QsIFdHUFVCdWZmZXIgYnVmZmVyLCB1aW50NjRfdCBvZmZzZXQsIHVpbnQ2NF90IHNp
emUpOwogdHlwZWRlZiB2b2lkICgqV0dQVVByb2NSZW5kZXJQYXNzRW5jb2RlclNldFZpZXdwb3J0
KShXR1BVUmVuZGVyUGFzc0VuY29kZXIgcmVuZGVyUGFzc0VuY29kZXIsIGZsb2F0IHgsIGZsb2F0
IHksIGZsb2F0IHdpZHRoLCBmbG9hdCBoZWlnaHQsIGZsb2F0IG1pbkRlcHRoLCBmbG9hdCBtYXhE
ZXB0aCk7Ci10eXBlZGVmIHZvaWQgKCpXR1BVUHJvY1JlbmRlclBhc3NFbmNvZGVyV3JpdGVUaW1l
c3RhbXApKFdHUFVSZW5kZXJQYXNzRW5jb2RlciByZW5kZXJQYXNzRW5jb2RlciwgV0dQVVF1ZXJ5
U2V0IHF1ZXJ5U2V0LCB1aW50MzJfdCBxdWVyeUluZGV4KTsKIAogLy8gUHJvY3Mgb2YgUmVuZGVy
UGlwZWxpbmUKIHR5cGVkZWYgV0dQVUJpbmRHcm91cExheW91dCAoKldHUFVQcm9jUmVuZGVyUGlw
ZWxpbmVHZXRCaW5kR3JvdXBMYXlvdXQpKFdHUFVSZW5kZXJQaXBlbGluZSByZW5kZXJQaXBlbGlu
ZSwgdWludDMyX3QgZ3JvdXBJbmRleCk7CiB0eXBlZGVmIHZvaWQgKCpXR1BVUHJvY1JlbmRlclBp
cGVsaW5lU2V0TGFiZWwpKFdHUFVSZW5kZXJQaXBlbGluZSByZW5kZXJQaXBlbGluZSwgY2hhciBj
b25zdCAqIGxhYmVsKTsKIAogLy8gUHJvY3Mgb2YgU2hhZGVyTW9kdWxlCit0eXBlZGVmIHZvaWQg
KCpXR1BVUHJvY1NoYWRlck1vZHVsZUdldENvbXBpbGF0aW9uSW5mbykoV0dQVVNoYWRlck1vZHVs
ZSBzaGFkZXJNb2R1bGUsIFdHUFVDb21waWxhdGlvbkluZm9DYWxsYmFjayBjYWxsYmFjaywgdm9p
ZCAqIHVzZXJkYXRhKTsKIHR5cGVkZWYgdm9pZCAoKldHUFVQcm9jU2hhZGVyTW9kdWxlU2V0TGFi
ZWwpKFdHUFVTaGFkZXJNb2R1bGUgc2hhZGVyTW9kdWxlLCBjaGFyIGNvbnN0ICogbGFiZWwpOwog
CiAvLyBQcm9jcyBvZiBTdXJmYWNlCkBAIC0xMjExLDYgKzEzMTAsNyBAQCBXR1BVX0VYUE9SVCBX
R1BVSW5zdGFuY2Ugd2dwdUNyZWF0ZUluc3RhbmNlKFdHUFVJbnN0YW5jZURlc2NyaXB0b3IgY29u
c3QgKiBkZXNjcgogV0dQVV9FWFBPUlQgV0dQVVByb2Mgd2dwdUdldFByb2NBZGRyZXNzKFdHUFVE
ZXZpY2UgZGV2aWNlLCBjaGFyIGNvbnN0ICogcHJvY05hbWUpOwogCiAvLyBNZXRob2RzIG9mIEFk
YXB0ZXIKK1dHUFVfRVhQT1JUIHNpemVfdCB3Z3B1QWRhcHRlckVudW1lcmF0ZUZlYXR1cmVzKFdH
UFVBZGFwdGVyIGFkYXB0ZXIsIFdHUFVGZWF0dXJlTmFtZSogZmVhdHVyZXMpOwogV0dQVV9FWFBP
UlQgYm9vbCB3Z3B1QWRhcHRlckdldExpbWl0cyhXR1BVQWRhcHRlciBhZGFwdGVyLCBXR1BVU3Vw
cG9ydGVkTGltaXRzICogbGltaXRzKTsKIFdHUFVfRVhQT1JUIHZvaWQgd2dwdUFkYXB0ZXJHZXRQ
cm9wZXJ0aWVzKFdHUFVBZGFwdGVyIGFkYXB0ZXIsIFdHUFVBZGFwdGVyUHJvcGVydGllcyAqIHBy
b3BlcnRpZXMpOwogV0dQVV9FWFBPUlQgYm9vbCB3Z3B1QWRhcHRlckhhc0ZlYXR1cmUoV0dQVUFk
YXB0ZXIgYWRhcHRlciwgV0dQVUZlYXR1cmVOYW1lIGZlYXR1cmUpOwpAQCAtMTIyNiw2ICsxMzI2
LDcgQEAgV0dQVV9FWFBPUlQgdm9pZCB3Z3B1QnVmZmVyVW5tYXAoV0dQVUJ1ZmZlciBidWZmZXIp
OwogLy8gTWV0aG9kcyBvZiBDb21tYW5kRW5jb2RlcgogV0dQVV9FWFBPUlQgV0dQVUNvbXB1dGVQ
YXNzRW5jb2RlciB3Z3B1Q29tbWFuZEVuY29kZXJCZWdpbkNvbXB1dGVQYXNzKFdHUFVDb21tYW5k
RW5jb2RlciBjb21tYW5kRW5jb2RlciwgV0dQVUNvbXB1dGVQYXNzRGVzY3JpcHRvciBjb25zdCAq
IGRlc2NyaXB0b3IpOwogV0dQVV9FWFBPUlQgV0dQVVJlbmRlclBhc3NFbmNvZGVyIHdncHVDb21t
YW5kRW5jb2RlckJlZ2luUmVuZGVyUGFzcyhXR1BVQ29tbWFuZEVuY29kZXIgY29tbWFuZEVuY29k
ZXIsIFdHUFVSZW5kZXJQYXNzRGVzY3JpcHRvciBjb25zdCAqIGRlc2NyaXB0b3IpOworV0dQVV9F
WFBPUlQgdm9pZCB3Z3B1Q29tbWFuZEVuY29kZXJDbGVhckJ1ZmZlcihXR1BVQ29tbWFuZEVuY29k
ZXIgY29tbWFuZEVuY29kZXIsIFdHUFVCdWZmZXIgYnVmZmVyLCB1aW50NjRfdCBvZmZzZXQsIHVp
bnQ2NF90IHNpemUpOwogV0dQVV9FWFBPUlQgdm9pZCB3Z3B1Q29tbWFuZEVuY29kZXJDb3B5QnVm
ZmVyVG9CdWZmZXIoV0dQVUNvbW1hbmRFbmNvZGVyIGNvbW1hbmRFbmNvZGVyLCBXR1BVQnVmZmVy
IHNvdXJjZSwgdWludDY0X3Qgc291cmNlT2Zmc2V0LCBXR1BVQnVmZmVyIGRlc3RpbmF0aW9uLCB1
aW50NjRfdCBkZXN0aW5hdGlvbk9mZnNldCwgdWludDY0X3Qgc2l6ZSk7CiBXR1BVX0VYUE9SVCB2
b2lkIHdncHVDb21tYW5kRW5jb2RlckNvcHlCdWZmZXJUb1RleHR1cmUoV0dQVUNvbW1hbmRFbmNv
ZGVyIGNvbW1hbmRFbmNvZGVyLCBXR1BVSW1hZ2VDb3B5QnVmZmVyIGNvbnN0ICogc291cmNlLCBX
R1BVSW1hZ2VDb3B5VGV4dHVyZSBjb25zdCAqIGRlc3RpbmF0aW9uLCBXR1BVRXh0ZW50M0QgY29u
c3QgKiBjb3B5U2l6ZSk7CiBXR1BVX0VYUE9SVCB2b2lkIHdncHVDb21tYW5kRW5jb2RlckNvcHlU
ZXh0dXJlVG9CdWZmZXIoV0dQVUNvbW1hbmRFbmNvZGVyIGNvbW1hbmRFbmNvZGVyLCBXR1BVSW1h
Z2VDb3B5VGV4dHVyZSBjb25zdCAqIHNvdXJjZSwgV0dQVUltYWdlQ29weUJ1ZmZlciBjb25zdCAq
IGRlc3RpbmF0aW9uLCBXR1BVRXh0ZW50M0QgY29uc3QgKiBjb3B5U2l6ZSk7CkBAIC0xMjQ4LDcg
KzEzNDksNiBAQCBXR1BVX0VYUE9SVCB2b2lkIHdncHVDb21wdXRlUGFzc0VuY29kZXJQb3BEZWJ1
Z0dyb3VwKFdHUFVDb21wdXRlUGFzc0VuY29kZXIgY29tcAogV0dQVV9FWFBPUlQgdm9pZCB3Z3B1
Q29tcHV0ZVBhc3NFbmNvZGVyUHVzaERlYnVnR3JvdXAoV0dQVUNvbXB1dGVQYXNzRW5jb2RlciBj
b21wdXRlUGFzc0VuY29kZXIsIGNoYXIgY29uc3QgKiBncm91cExhYmVsKTsKIFdHUFVfRVhQT1JU
IHZvaWQgd2dwdUNvbXB1dGVQYXNzRW5jb2RlclNldEJpbmRHcm91cChXR1BVQ29tcHV0ZVBhc3NF
bmNvZGVyIGNvbXB1dGVQYXNzRW5jb2RlciwgdWludDMyX3QgZ3JvdXBJbmRleCwgV0dQVUJpbmRH
cm91cCBncm91cCwgdWludDMyX3QgZHluYW1pY09mZnNldENvdW50LCB1aW50MzJfdCBjb25zdCAq
IGR5bmFtaWNPZmZzZXRzKTsKIFdHUFVfRVhQT1JUIHZvaWQgd2dwdUNvbXB1dGVQYXNzRW5jb2Rl
clNldFBpcGVsaW5lKFdHUFVDb21wdXRlUGFzc0VuY29kZXIgY29tcHV0ZVBhc3NFbmNvZGVyLCBX
R1BVQ29tcHV0ZVBpcGVsaW5lIHBpcGVsaW5lKTsKLVdHUFVfRVhQT1JUIHZvaWQgd2dwdUNvbXB1
dGVQYXNzRW5jb2RlcldyaXRlVGltZXN0YW1wKFdHUFVDb21wdXRlUGFzc0VuY29kZXIgY29tcHV0
ZVBhc3NFbmNvZGVyLCBXR1BVUXVlcnlTZXQgcXVlcnlTZXQsIHVpbnQzMl90IHF1ZXJ5SW5kZXgp
OwogCiAvLyBNZXRob2RzIG9mIENvbXB1dGVQaXBlbGluZQogV0dQVV9FWFBPUlQgV0dQVUJpbmRH
cm91cExheW91dCB3Z3B1Q29tcHV0ZVBpcGVsaW5lR2V0QmluZEdyb3VwTGF5b3V0KFdHUFVDb21w
dXRlUGlwZWxpbmUgY29tcHV0ZVBpcGVsaW5lLCB1aW50MzJfdCBncm91cEluZGV4KTsKQEAgLTEy
NzEsOCArMTM3MSwxMCBAQCBXR1BVX0VYUE9SVCBXR1BVU2hhZGVyTW9kdWxlIHdncHVEZXZpY2VD
cmVhdGVTaGFkZXJNb2R1bGUoV0dQVURldmljZSBkZXZpY2UsIFdHUAogV0dQVV9FWFBPUlQgV0dQ
VVN3YXBDaGFpbiB3Z3B1RGV2aWNlQ3JlYXRlU3dhcENoYWluKFdHUFVEZXZpY2UgZGV2aWNlLCBX
R1BVU3VyZmFjZSBzdXJmYWNlLCBXR1BVU3dhcENoYWluRGVzY3JpcHRvciBjb25zdCAqIGRlc2Ny
aXB0b3IpOwogV0dQVV9FWFBPUlQgV0dQVVRleHR1cmUgd2dwdURldmljZUNyZWF0ZVRleHR1cmUo
V0dQVURldmljZSBkZXZpY2UsIFdHUFVUZXh0dXJlRGVzY3JpcHRvciBjb25zdCAqIGRlc2NyaXB0
b3IpOwogV0dQVV9FWFBPUlQgdm9pZCB3Z3B1RGV2aWNlRGVzdHJveShXR1BVRGV2aWNlIGRldmlj
ZSk7CitXR1BVX0VYUE9SVCBzaXplX3Qgd2dwdURldmljZUVudW1lcmF0ZUZlYXR1cmVzKFdHUFVE
ZXZpY2UgZGV2aWNlLCBXR1BVRmVhdHVyZU5hbWUqIGZlYXR1cmVzKTsKIFdHUFVfRVhQT1JUIGJv
b2wgd2dwdURldmljZUdldExpbWl0cyhXR1BVRGV2aWNlIGRldmljZSwgV0dQVVN1cHBvcnRlZExp
bWl0cyAqIGxpbWl0cyk7CiBXR1BVX0VYUE9SVCBXR1BVUXVldWUgd2dwdURldmljZUdldFF1ZXVl
KFdHUFVEZXZpY2UgZGV2aWNlKTsKK1dHUFVfRVhQT1JUIGJvb2wgd2dwdURldmljZUhhc0ZlYXR1
cmUoV0dQVURldmljZSBkZXZpY2UsIFdHUFVGZWF0dXJlTmFtZSBmZWF0dXJlKTsKIFdHUFVfRVhQ
T1JUIGJvb2wgd2dwdURldmljZVBvcEVycm9yU2NvcGUoV0dQVURldmljZSBkZXZpY2UsIFdHUFVF
cnJvckNhbGxiYWNrIGNhbGxiYWNrLCB2b2lkICogdXNlcmRhdGEpOwogV0dQVV9FWFBPUlQgdm9p
ZCB3Z3B1RGV2aWNlUHVzaEVycm9yU2NvcGUoV0dQVURldmljZSBkZXZpY2UsIFdHUFVFcnJvckZp
bHRlciBmaWx0ZXIpOwogV0dQVV9FWFBPUlQgdm9pZCB3Z3B1RGV2aWNlU2V0RGV2aWNlTG9zdENh
bGxiYWNrKFdHUFVEZXZpY2UgZGV2aWNlLCBXR1BVRGV2aWNlTG9zdENhbGxiYWNrIGNhbGxiYWNr
LCB2b2lkICogdXNlcmRhdGEpOwpAQCAtMTMyOCwxMyArMTQzMCwxMyBAQCBXR1BVX0VYUE9SVCB2
b2lkIHdncHVSZW5kZXJQYXNzRW5jb2RlclNldFNjaXNzb3JSZWN0KFdHUFVSZW5kZXJQYXNzRW5j
b2RlciByZW5kZQogV0dQVV9FWFBPUlQgdm9pZCB3Z3B1UmVuZGVyUGFzc0VuY29kZXJTZXRTdGVu
Y2lsUmVmZXJlbmNlKFdHUFVSZW5kZXJQYXNzRW5jb2RlciByZW5kZXJQYXNzRW5jb2RlciwgdWlu
dDMyX3QgcmVmZXJlbmNlKTsKIFdHUFVfRVhQT1JUIHZvaWQgd2dwdVJlbmRlclBhc3NFbmNvZGVy
U2V0VmVydGV4QnVmZmVyKFdHUFVSZW5kZXJQYXNzRW5jb2RlciByZW5kZXJQYXNzRW5jb2Rlciwg
dWludDMyX3Qgc2xvdCwgV0dQVUJ1ZmZlciBidWZmZXIsIHVpbnQ2NF90IG9mZnNldCwgdWludDY0
X3Qgc2l6ZSk7CiBXR1BVX0VYUE9SVCB2b2lkIHdncHVSZW5kZXJQYXNzRW5jb2RlclNldFZpZXdw
b3J0KFdHUFVSZW5kZXJQYXNzRW5jb2RlciByZW5kZXJQYXNzRW5jb2RlciwgZmxvYXQgeCwgZmxv
YXQgeSwgZmxvYXQgd2lkdGgsIGZsb2F0IGhlaWdodCwgZmxvYXQgbWluRGVwdGgsIGZsb2F0IG1h
eERlcHRoKTsKLVdHUFVfRVhQT1JUIHZvaWQgd2dwdVJlbmRlclBhc3NFbmNvZGVyV3JpdGVUaW1l
c3RhbXAoV0dQVVJlbmRlclBhc3NFbmNvZGVyIHJlbmRlclBhc3NFbmNvZGVyLCBXR1BVUXVlcnlT
ZXQgcXVlcnlTZXQsIHVpbnQzMl90IHF1ZXJ5SW5kZXgpOwogCiAvLyBNZXRob2RzIG9mIFJlbmRl
clBpcGVsaW5lCiBXR1BVX0VYUE9SVCBXR1BVQmluZEdyb3VwTGF5b3V0IHdncHVSZW5kZXJQaXBl
bGluZUdldEJpbmRHcm91cExheW91dChXR1BVUmVuZGVyUGlwZWxpbmUgcmVuZGVyUGlwZWxpbmUs
IHVpbnQzMl90IGdyb3VwSW5kZXgpOwogV0dQVV9FWFBPUlQgdm9pZCB3Z3B1UmVuZGVyUGlwZWxp
bmVTZXRMYWJlbChXR1BVUmVuZGVyUGlwZWxpbmUgcmVuZGVyUGlwZWxpbmUsIGNoYXIgY29uc3Qg
KiBsYWJlbCk7CiAKIC8vIE1ldGhvZHMgb2YgU2hhZGVyTW9kdWxlCitXR1BVX0VYUE9SVCB2b2lk
IHdncHVTaGFkZXJNb2R1bGVHZXRDb21waWxhdGlvbkluZm8oV0dQVVNoYWRlck1vZHVsZSBzaGFk
ZXJNb2R1bGUsIFdHUFVDb21waWxhdGlvbkluZm9DYWxsYmFjayBjYWxsYmFjaywgdm9pZCAqIHVz
ZXJkYXRhKTsKIFdHUFVfRVhQT1JUIHZvaWQgd2dwdVNoYWRlck1vZHVsZVNldExhYmVsKFdHUFVT
aGFkZXJNb2R1bGUgc2hhZGVyTW9kdWxlLCBjaGFyIGNvbnN0ICogbGFiZWwpOwogCiAvLyBNZXRo
b2RzIG9mIFN1cmZhY2UKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJHUFUvV2ViR1BVL1dlYkdQVUV4
dC5oIGIvU291cmNlL1dlYkdQVS9XZWJHUFUvV2ViR1BVRXh0LmgKaW5kZXggNWE3MjhjMWZkOWM1
YmExYjBhNmE2NGEwOTkyZjNhYTVmMGM2NDJlMS4uMmU0MjAxMjJhYWY1NWYwZGFiNGRlMDcyYTc5
ZjAwN2I3YmRlODk0ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkdQVS9XZWJHUFUvV2ViR1BVRXh0
LmgKKysrIGIvU291cmNlL1dlYkdQVS9XZWJHUFUvV2ViR1BVRXh0LmgKQEAgLTI2LDc0ICsyNiwz
NyBAQAogI2lmbmRlZiBXRUJHUFVFWFRfSF8KICNkZWZpbmUgV0VCR1BVRVhUX0hfCiAKKyNpZmRl
ZiBfX2NwbHVzcGx1cworZXh0ZXJuICJDIiB7CisjZW5kaWYKKwogdHlwZWRlZiBlbnVtIFdHUFVT
VHlwZUV4dGVuZGVkIHsKLSAgICBXR1BVU1R5cGVfRGV2aWNlRGVzY3JpcHRvckxhYmVsID0gMHgy
NDJBOTlFMCwgLy8gUmFuZG9tCisgICAgV0dQVVNUeXBlRXh0ZW5kZWRfU2hhZGVyTW9kdWxlRGVz
Y3JpcHRvckhpbnRzID0gMHgzNDg5NzBGMywgLy8gUmFuZG9tCisgICAgV0dQVVNUeXBlRXh0ZW5k
ZWRfVGV4dHVyZURlc2NyaXB0b3JWaWV3Rm9ybWF0cyA9IDB4MUQ1QkM1NywgLy8gUmFuZG9tCisg
ICAgV0dQVVNUeXBlRXh0ZW5kZWRfRm9yY2UzMiA9IDB4N0ZGRkZGRkYKIH0gV0dQVVNUeXBlRXh0
ZW5kZWQ7CiAKLXR5cGVkZWYgZW51bSBXR1BVVGV4dHVyZUZvcm1hdEV4dGVuZGVkIHsKLSAgICBX
R1BVVGV4dHVyZUZvcm1hdF9FVEMyUkdCOFVub3JtID0gMHgyOEMyNUM2NywgLy8gUmFuZG9tCi0g
ICAgV0dQVVRleHR1cmVGb3JtYXRfRVRDMlJHQjh1bm9ybVNyZ2IgPSAweDU2NkFBRkVFLCAvLyBS
YW5kb20KLSAgICBXR1BVVGV4dHVyZUZvcm1hdF9FVEMyUkdCOGExVW5vcm0gPSAweDJGNzk0MzQ4
LCAvLyBSYW5kb20KLSAgICBXR1BVVGV4dHVyZUZvcm1hdF9FVEMyUkdCOGExdW5vcm1TcmdiID0g
MHg1RUYzOEFCQSwgLy8gUmFuZG9tCi0gICAgV0dQVVRleHR1cmVGb3JtYXRfRVRDMlJHQkE4VW5v
cm0gPSAweDVBNEU2NDgwLCAvLyBSYW5kb20KLSAgICBXR1BVVGV4dHVyZUZvcm1hdF9FVEMyUkdC
QThVbm9ybVNyZ2IgPSAweDc4MDk2OEVCLCAvLyBSYW5kb20KLSAgICBXR1BVVGV4dHVyZUZvcm1h
dF9FQUNSMTFVbm9ybSA9IDB4Njk4NjMwOTAsIC8vIFJhbmRvbQotICAgIFdHUFVUZXh0dXJlRm9y
bWF0X0VBQ1IxMVNub3JtID0gMHgyNUU1NDI4QSwgLy8gUmFuZG9tCi0gICAgV0dQVVRleHR1cmVG
b3JtYXRfRUFDUkcxMVVub3JtID0gMHgxQjA5NjlCMywgLy8gUmFuZG9tCi0gICAgV0dQVVRleHR1
cmVGb3JtYXRfRUFDUkcxMVNub3JtID0gMHgxNkY0QkI2RCwgLy8gUmFuZG9tCi0KLSAgICBXR1BV
VGV4dHVyZUZvcm1hdF9BU1RDNHg0VW5vcm0gPSAweDM5RjYwRjZFLCAvLyBSYW5kb20KLSAgICBX
R1BVVGV4dHVyZUZvcm1hdF9BU1RDNHg0VW5vcm1TcmdiID0gMHgyNDQ3MjcwMCwgLy8gUmFuZG9t
Ci0gICAgV0dQVVRleHR1cmVGb3JtYXRfQVNUQzV4NFVub3JtID0gMHg2N0QzMkIwRSwgLy8gUmFu
ZG9tCi0gICAgV0dQVVRleHR1cmVGb3JtYXRfQVNUQzV4NFVub3JtU3JnYiA9IDB4MzEzREExQkUs
IC8vIFJhbmRvbQotICAgIFdHUFVUZXh0dXJlRm9ybWF0X0FTVEM1eDVVbm9ybSA9IDB4MTVBQjhE
RkQsIC8vIFJhbmRvbQotICAgIFdHUFVUZXh0dXJlRm9ybWF0X0FTVEM1eDVVbm9ybVNyZ2IgPSAw
eDdCMDBFQjU3LCAvLyBSYW5kb20KLSAgICBXR1BVVGV4dHVyZUZvcm1hdF9BU1RDNng1VW5vcm0g
PSAweDY1M0U4MEMzLCAvLyBSYW5kb20KLSAgICBXR1BVVGV4dHVyZUZvcm1hdF9BU1RDNng1VW5v
cm1TcmdiID0gMHg1MEFFODY5QSwgLy8gUmFuZG9tCi0gICAgV0dQVVRleHR1cmVGb3JtYXRfQVNU
QzZ4NlVub3JtID0gMHg1NzlBRjU5OCwgLy8gUmFuZG9tCi0gICAgV0dQVVRleHR1cmVGb3JtYXRf
QVNUQzZ4NlVub3JtU3JnYiA9IDB4NzNCNjk3MzIsIC8vIFJhbmRvbQotICAgIFdHUFVUZXh0dXJl
Rm9ybWF0X0FTVEM4eDVVbm9ybSA9IDB4MDZGNzAzMDgsIC8vIFJhbmRvbQotICAgIFdHUFVUZXh0
dXJlRm9ybWF0X0FTVEM4eDVVbm9ybVNyZ2IgPSAweDQyMEVBOTQ2LCAvLyBSYW5kb20KLSAgICBX
R1BVVGV4dHVyZUZvcm1hdF9BU1RDOHg2VW5vcm0gPSAweDYxMDg2QUM4LCAvLyBSYW5kb20KLSAg
ICBXR1BVVGV4dHVyZUZvcm1hdF9BU1RDOHg2VW5vcm1TcmdiID0gMHgwRTE3RDM5QSwgLy8gUmFu
ZG9tCi0gICAgV0dQVVRleHR1cmVGb3JtYXRfQVNUQzh4OFVub3JtID0gMHg1NjlCRjJFOCwgLy8g
UmFuZG9tCi0gICAgV0dQVVRleHR1cmVGb3JtYXRfQVNUQzh4OFVub3JtU3JnYiA9IDB4NTcyQTQ4
NDksIC8vIFJhbmRvbQotICAgIFdHUFVUZXh0dXJlRm9ybWF0X0FTVEMxMHg1VW5vcm0gPSAweDYz
QUJFNDMyLCAvLyBSYW5kb20KLSAgICBXR1BVVGV4dHVyZUZvcm1hdF9BU1RDMTB4NVVub3JtU3Jn
YiA9IDB4M0JDM0FBNEMsIC8vIFJhbmRvbQotICAgIFdHUFVUZXh0dXJlRm9ybWF0X0FTVEMxMHg2
VW5vcm0gPSAweDZGRTE5NDk5LCAvLyBSYW5kb20KLSAgICBXR1BVVGV4dHVyZUZvcm1hdF9BU1RD
MTB4NlVub3JtU3JnYiA9IDB4N0ZGMEI1QzAsIC8vIFJhbmRvbQotICAgIFdHUFVUZXh0dXJlRm9y
bWF0X0FTVEMxMHg4VW5vcm0gPSAweDIwMTVGNEMzLCAvLyBSYW5kb20KLSAgICBXR1BVVGV4dHVy
ZUZvcm1hdF9BU1RDMTB4OFVub3JtU3JnYiA9IDB4N0Q1MURDNkYsIC8vIFJhbmRvbQotICAgIFdH
UFVUZXh0dXJlRm9ybWF0X0FTVEMxMHgxMFVub3JtID0gMHg2N0YxMDE3MywgLy8gUmFuZG9tCi0g
ICAgV0dQVVRleHR1cmVGb3JtYXRfQVNUQzEweDEwVW5vcm1TcmdiID0gMHgzNUQ3NEQyMSwgLy8g
UmFuZG9tCi0gICAgV0dQVVRleHR1cmVGb3JtYXRfQVNUQzEyeDEwVW5vcm0gPSAweDA5REFEMEE3
LCAvLyBSYW5kb20KLSAgICBXR1BVVGV4dHVyZUZvcm1hdF9BU1RDMTJ4MTBVbm9ybVNyZ2IgPSAw
eDM1NjBDOTNBLCAvLyBSYW5kb20KLSAgICBXR1BVVGV4dHVyZUZvcm1hdF9BU1RDMTJ4MTJVbm9y
bSA9IDB4MjZDQzMwNTAsIC8vIFJhbmRvbQotICAgIFdHUFVUZXh0dXJlRm9ybWF0X0FTVEMxMngx
MlVub3JtU3JnYiA9IDB4M0VGNTc4QTAsIC8vIFJhbmRvbQotCi0gICAgV0dQVVRleHR1cmVGb3Jt
YXRfRGVwdGgzMkZsb2F0U3RlbmNpbDggPSAweDUzREMyMzA3LCAvLyBSYW5kb20KLX0gV0dQVVRl
eHR1cmVGb3JtYXRFeHRlbmRlZDsKLQotdHlwZWRlZiBlbnVtIFdHUFVGZWF0dXJlTmFtZUV4dGVu
ZGVkIHsKLSAgICBXR1BVRmVhdHVyZU5hbWVfRGVwdGhDbGlwQ29udHJvbCA9IDB4NTVBQkMxM0Qs
IC8vIFJhbmRvbQotICAgIFdHUFVGZWF0dXJlTmFtZV9JbmRpcmVjdEZpcnN0SW5zdGFuY2UgPSAw
eDJBNzA4NEY1LCAvLyBSYW5kb20KLSAgICBXR1BVRmVhdHVyZU5hbWVfVGV4dHVyZUNvbXByZXNz
aW9uRVRDMiA9IDB4N0JGNjZGNjksIC8vIFJhbmRvbQotICAgIFdHUFVGZWF0dXJlTmFtZV9UZXh0
dXJlQ29tcHJlc3Npb25BU1RDID0gMHgyNjE3MzM5OSwgLy8gUmFuZG9tCi19IFdHUFVGZWF0dXJl
TmFtZUV4dGVuZGVkOwotCi10eXBlZGVmIGVudW0gV0dQVVBvd2VyUHJlZmVyZW5jZUV4dGVuZGVk
IHsKLSAgICBXR1BVUG93ZXJQcmVmZXJlbmNlX05vUHJlZmVyZW5jZSA9IDB4NDc0ODMzNkYsCi19
IFdHUFVQb3dlclByZWZlcmVuY2VFeHRlbmRlZDsKLQotdHlwZWRlZiBzdHJ1Y3QgV0dQVURldmlj
ZURlc2NyaXB0b3JMYWJlbCB7Ci0gICAgV0dQVUNoYWluZWRTdHJ1Y3QgaGVhZGVyOwotICAgIFdH
UFVDaGFpbmVkU3RydWN0IGNvbnN0ICogbmV4dEluQ2hhaW47Ci0gICAgY2hhciBjb25zdCAqIGxh
YmVsOwotfSBXR1BVRGV2aWNlRGVzY3JpcHRvckxhYmVsOwordHlwZWRlZiBzdHJ1Y3QgV0dQVVNo
YWRlck1vZHVsZUNvbXBpbGF0aW9uSGludCB7CisgICAgV0dQVVBpcGVsaW5lTGF5b3V0IGxheW91
dDsKK30gV0dQVVNoYWRlck1vZHVsZUNvbXBpbGF0aW9uSGludDsKIAotI2lmZGVmIF9fY3BsdXNw
bHVzCi1leHRlcm4gIkMiIHsKLSNlbmRpZgordHlwZWRlZiBzdHJ1Y3QgV0dQVVNoYWRlck1vZHVs
ZUNvbXBpbGF0aW9uSGludEVudHJ5IHsKKyAgICBXR1BVQ2hhaW5lZFN0cnVjdCBjb25zdCAqIG5l
eHRJbkNoYWluOworICAgIGNoYXIgY29uc3QgKiBrZXk7CisgICAgV0dQVVNoYWRlck1vZHVsZUNv
bXBpbGF0aW9uSGludCBoaW50OworfSBXR1BVU2hhZGVyTW9kdWxlQ29tcGlsYXRpb25IaW50RW50
cnk7CisKK3R5cGVkZWYgc3RydWN0IFdHUFVTaGFkZXJNb2R1bGVEZXNjcmlwdG9ySGludHMgewor
ICAgIFdHUFVDaGFpbmVkU3RydWN0IGNoYWluOworICAgIHVpbnQzMl90IGhpbnRzQ291bnQ7Cisg
ICAgV0dQVVNoYWRlck1vZHVsZUNvbXBpbGF0aW9uSGludEVudHJ5IGNvbnN0ICogaGludHM7Cit9
IFdHUFVTaGFkZXJNb2R1bGVEZXNjcmlwdG9ySGludHM7CisKK3R5cGVkZWYgc3RydWN0IFdHUFVU
ZXh0dXJlRGVzY3JpcHRvclZpZXdGb3JtYXRzIHsKKyAgICBXR1BVQ2hhaW5lZFN0cnVjdCBjaGFp
bjsKKyAgICB1aW50MzJfdCB2aWV3Rm9ybWF0c0NvdW50OworICAgIFdHUFVUZXh0dXJlRm9ybWF0
IGNvbnN0ICogdmlld0Zvcm1hdHM7Cit9IFdHUFVUZXh0dXJlRGVzY3JpcHRvclZpZXdGb3JtYXRz
OwogCiAjaWYgIWRlZmluZWQoV0dQVV9TS0lQX1BST0NTKQogCkBAIC0xMzgsMTAgKzEwMSw2IEBA
IHR5cGVkZWYgdm9pZCAoKldHUFVQcm9jU2FtcGxlclNldExhYmVsKShXR1BVU2FtcGxlciBzYW1w
bGVyLCBjaGFyIGNvbnN0ICogbGFiZWwpCiB0eXBlZGVmIHZvaWQgKCpXR1BVUHJvY1RleHR1cmVT
ZXRMYWJlbCkoV0dQVVRleHR1cmUgc2FtcGxlciwgY2hhciBjb25zdCAqIGxhYmVsKTsKIHR5cGVk
ZWYgdm9pZCAoKldHUFVQcm9jVGV4dHVyZVZpZXdTZXRMYWJlbCkoV0dQVVRleHR1cmVWaWV3IHNh
bXBsZXIsIGNoYXIgY29uc3QgKiBsYWJlbCk7CiAKLXR5cGVkZWYgV0dQVUZlYXR1cmVOYW1lICgq
V0dQVVByb2NBZGFwdGVyR2V0RmVhdHVyZUF0SW5kZXgpKFdHUFVBZGFwdGVyIGFkYXB0ZXIsIHNp
emVfdCBpbmRleCk7Ci0KLXR5cGVkZWYgdm9pZCAoKldHUFVQcm9jQ29tbWFuZEVuY29kZXJGaWxs
QnVmZmVyKShXR1BVQ29tbWFuZEVuY29kZXIgY29tbWFuZEVuY29kZXIsIFdHUFVCdWZmZXIgZGVz
dGluYXRpb24sIHVpbnQ2NF90IGRlc3RpbmF0aW9uT2Zmc2V0LCB1aW50NjRfdCBzaXplKTsKLQog
I2VuZGlmICAvLyAhZGVmaW5lZChXR1BVX1NLSVBfUFJPQ1MpCiAKICNpZiAhZGVmaW5lZChXR1BV
X1NLSVBfREVDTEFSQVRJT05TKQpAQCAtMTg3LDEwICsxNDYsNiBAQCBXR1BVX0VYUE9SVCB2b2lk
IHdncHVTYW1wbGVyU2V0TGFiZWwoV0dQVVNhbXBsZXIgc2FtcGxlciwgY2hhciBjb25zdCAqIGxh
YmVsKTsKIFdHUFVfRVhQT1JUIHZvaWQgd2dwdVRleHR1cmVTZXRMYWJlbChXR1BVVGV4dHVyZSBz
YW1wbGVyLCBjaGFyIGNvbnN0ICogbGFiZWwpOwogV0dQVV9FWFBPUlQgdm9pZCB3Z3B1VGV4dHVy
ZVZpZXdTZXRMYWJlbChXR1BVVGV4dHVyZVZpZXcgc2FtcGxlciwgY2hhciBjb25zdCAqIGxhYmVs
KTsKIAotV0dQVV9FWFBPUlQgV0dQVUZlYXR1cmVOYW1lIHdncHVBZGFwdGVyR2V0RmVhdHVyZUF0
SW5kZXgoV0dQVUFkYXB0ZXIgYWRhcHRlciwgc2l6ZV90IGluZGV4KTsKLQotV0dQVV9FWFBPUlQg
dm9pZCB3Z3B1Q29tbWFuZEVuY29kZXJGaWxsQnVmZmVyKFdHUFVDb21tYW5kRW5jb2RlciBjb21t
YW5kRW5jb2RlciwgV0dQVUJ1ZmZlciBkZXN0aW5hdGlvbiwgdWludDY0X3QgZGVzdGluYXRpb25P
ZmZzZXQsIHVpbnQ2NF90IHNpemUpOwotCiAjZW5kaWYgIC8vICFkZWZpbmVkKFdHUFVfU0tJUF9E
RUNMQVJBVElPTlMpCiAKICNpZmRlZiBfX2NwbHVzcGx1cwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1dlYkdQVS9SZW1vdGVCdWZmZXIuY3BwIGIvU291cmNl
L1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1dlYkdQVS9SZW1vdGVCdWZmZXIuY3BwCmluZGV4
IDI2NTA5MzRjM2M5ZTUyZjA3ZjQ1YjBhOGFkYzJkNDdjNGM0ZDNkNGQuLjFmZTA5ZjQ1YWNhNGVl
NTM2NjJkZTMwZGM5Mzk2MGYyOTEyYzA2NTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BV
UHJvY2Vzcy9ncmFwaGljcy9XZWJHUFUvUmVtb3RlQnVmZmVyLmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvV2ViR1BVL1JlbW90ZUJ1ZmZlci5jcHAKQEAgLTUwLDcg
KzUwLDcgQEAgdm9pZCBSZW1vdGVCdWZmZXI6OnN0b3BMaXN0ZW5pbmdGb3JJUEMoKQogICAgIG1f
c3RyZWFtQ29ubmVjdGlvbi0+c3RvcFJlY2VpdmluZ01lc3NhZ2VzKE1lc3NhZ2VzOjpSZW1vdGVC
dWZmZXI6Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSwgbV9pZGVudGlmaWVyLnRvVUludDY0KCkpOwog
fQogCi12b2lkIFJlbW90ZUJ1ZmZlcjo6bWFwQXN5bmMoUEFMOjpXZWJHUFU6Ok1hcE1vZGVGbGFn
cyBtYXBNb2RlRmxhZ3MsIHN0ZDo6b3B0aW9uYWw8UEFMOjpXZWJHUFU6OlNpemU2ND4gb2Zmc2V0
LCBzdGQ6Om9wdGlvbmFsPFBBTDo6V2ViR1BVOjpTaXplNjQ+IHNpemUsIFdURjo6Q29tcGxldGlv
bkhhbmRsZXI8dm9pZChzdGQ6Om9wdGlvbmFsPFZlY3Rvcjx1aW50OF90Pj4mJik+JiYgY2FsbGJh
Y2spCit2b2lkIFJlbW90ZUJ1ZmZlcjo6bWFwQXN5bmMoUEFMOjpXZWJHUFU6Ok1hcE1vZGVGbGFn
cyBtYXBNb2RlRmxhZ3MsIFBBTDo6V2ViR1BVOjpTaXplNjQgb2Zmc2V0LCBzdGQ6Om9wdGlvbmFs
PFBBTDo6V2ViR1BVOjpTaXplNjQ+IHNpemUsIFdURjo6Q29tcGxldGlvbkhhbmRsZXI8dm9pZChz
dGQ6Om9wdGlvbmFsPFZlY3Rvcjx1aW50OF90Pj4mJik+JiYgY2FsbGJhY2spCiB7CiAgICAgaWYg
KG1faXNNYXBwZWQpIHsKICAgICAgICAgY2FsbGJhY2soc3RkOjpudWxsb3B0KTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9XZWJHUFUvUmVtb3RlQnVmZmVy
LmggYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvV2ViR1BVL1JlbW90ZUJ1ZmZl
ci5oCmluZGV4IGIzNzUwZmNkYjRmM2IwOTRjNWQ2OTI1NGQzYjE0MGQ1YTllYjg2NzguLjhlODc3
MjcxNDZjYjcxMWM1MzQ4OGJlYTYwNzlhNWY1ZDM2MDc0YjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9XZWJHUFUvUmVtb3RlQnVmZmVyLmgKKysrIGIvU291
cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1dlYkdQVS9SZW1vdGVCdWZmZXIuaApAQCAt
NzcsNyArNzcsNyBAQCBwcml2YXRlOgogCiAgICAgdm9pZCBkaWRSZWNlaXZlU3RyZWFtTWVzc2Fn
ZShJUEM6OlN0cmVhbVNlcnZlckNvbm5lY3Rpb25CYXNlJiwgSVBDOjpEZWNvZGVyJikgZmluYWw7
CiAKLSAgICB2b2lkIG1hcEFzeW5jKFBBTDo6V2ViR1BVOjpNYXBNb2RlRmxhZ3MsIHN0ZDo6b3B0
aW9uYWw8UEFMOjpXZWJHUFU6OlNpemU2ND4gb2Zmc2V0LCBzdGQ6Om9wdGlvbmFsPFBBTDo6V2Vi
R1BVOjpTaXplNjQ+IHNpemVGb3JNYXAsIFdURjo6Q29tcGxldGlvbkhhbmRsZXI8dm9pZChzdGQ6
Om9wdGlvbmFsPFZlY3Rvcjx1aW50OF90Pj4mJik+JiYpOworICAgIHZvaWQgbWFwQXN5bmMoUEFM
OjpXZWJHUFU6Ok1hcE1vZGVGbGFncywgUEFMOjpXZWJHUFU6OlNpemU2NCBvZmZzZXQsIHN0ZDo6
b3B0aW9uYWw8UEFMOjpXZWJHUFU6OlNpemU2ND4gc2l6ZUZvck1hcCwgV1RGOjpDb21wbGV0aW9u
SGFuZGxlcjx2b2lkKHN0ZDo6b3B0aW9uYWw8VmVjdG9yPHVpbnQ4X3Q+PiYmKT4mJik7CiAgICAg
dm9pZCB1bm1hcChWZWN0b3I8dWludDhfdD4mJik7CiAKICAgICB2b2lkIGRlc3Ryb3koKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9XZWJHUFUvUmVtb3Rl
QnVmZmVyLm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1dl
YkdQVS9SZW1vdGVCdWZmZXIubWVzc2FnZXMuaW4KaW5kZXggOTdhNTFmM2NhMmMzYjAxNzU5MGYy
YzNiYmU2MzQzODM3OGNhNDVjYi4uYjlmMTNkMzZjYjU1YmQ4YWQ5OTM2MTFkOTVjMDFiMTM3MjVk
YWI5YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1dlYkdQ
VS9SZW1vdGVCdWZmZXIubWVzc2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNz
L2dyYXBoaWNzL1dlYkdQVS9SZW1vdGVCdWZmZXIubWVzc2FnZXMuaW4KQEAgLTI0LDcgKzI0LDcg
QEAKICNpZiBFTkFCTEUoR1BVX1BST0NFU1MpCiAKIG1lc3NhZ2VzIC0+IFJlbW90ZUJ1ZmZlciBO
b3RSZWZDb3VudGVkIFN0cmVhbSB7Ci0gICAgdm9pZCBNYXBBc3luYyhQQUw6OldlYkdQVTo6TWFw
TW9kZUZsYWdzIG1hcE1vZGVGbGFncywgc3RkOjpvcHRpb25hbDxQQUw6OldlYkdQVTo6U2l6ZTY0
PiBvZmZzZXQsIHN0ZDo6b3B0aW9uYWw8UEFMOjpXZWJHUFU6OlNpemU2ND4gc2l6ZSkgLT4gKHN0
ZDo6b3B0aW9uYWw8VmVjdG9yPHVpbnQ4X3Q+PiBkYXRhKSBTeW5jaHJvbm91cworICAgIHZvaWQg
TWFwQXN5bmMoUEFMOjpXZWJHUFU6Ok1hcE1vZGVGbGFncyBtYXBNb2RlRmxhZ3MsIFBBTDo6V2Vi
R1BVOjpTaXplNjQgb2Zmc2V0LCBzdGQ6Om9wdGlvbmFsPFBBTDo6V2ViR1BVOjpTaXplNjQ+IHNp
emUpIC0+IChzdGQ6Om9wdGlvbmFsPFZlY3Rvcjx1aW50OF90Pj4gZGF0YSkgU3luY2hyb25vdXMK
ICAgICB2b2lkIFVubWFwKFZlY3Rvcjx1aW50OF90PiBkYXRhKQogICAgIHZvaWQgRGVzdHJveSgp
CiAgICAgdm9pZCBTZXRMYWJlbChTdHJpbmcgbGFiZWwpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvV2ViR1BVL1JlbW90ZUNvbW1hbmRFbmNvZGVyLmNwcCBi
L1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9XZWJHUFUvUmVtb3RlQ29tbWFuZEVu
Y29kZXIuY3BwCmluZGV4IGQ5ZWI3OTNkYWQ0NDU3NzcyYWIwM2RkMGZiNTQyNDIxYzI4Y2EwOTAu
LjE0NjkxNzA4OGIwZDYzOTE3MGUzYzdiM2FlNTZhODVjZjhiOTg5YmUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9XZWJHUFUvUmVtb3RlQ29tbWFuZEVuY29k
ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9XZWJHUFUvUmVt
b3RlQ29tbWFuZEVuY29kZXIuY3BwCkBAIC0xNTEsMTcgKzE1MSwxNyBAQCB2b2lkIFJlbW90ZUNv
bW1hbmRFbmNvZGVyOjpjb3B5VGV4dHVyZVRvVGV4dHVyZSgKICAgICBtX2JhY2tpbmctPmNvcHlU
ZXh0dXJlVG9UZXh0dXJlKCpjb252ZXJ0ZWRTb3VyY2UsICpjb252ZXJ0ZWREZXN0aW5hdGlvbiwg
KmNvbnZlcnRlZENvcHlTaXplKTsKIH0KIAotdm9pZCBSZW1vdGVDb21tYW5kRW5jb2Rlcjo6Zmls
bEJ1ZmZlcigKLSAgICBXZWJHUFVJZGVudGlmaWVyIGRlc3RpbmF0aW9uLAotICAgIFBBTDo6V2Vi
R1BVOjpTaXplNjQgZGVzdGluYXRpb25PZmZzZXQsCi0gICAgUEFMOjpXZWJHUFU6OlNpemU2NCBz
aXplKQotewotICAgIGF1dG8gY29udmVydGVkRGVzdGluYXRpb24gPSBtX29iamVjdEhlYXAuY29u
dmVydEJ1ZmZlckZyb21CYWNraW5nKGRlc3RpbmF0aW9uKTsKLSAgICBBU1NFUlQoY29udmVydGVk
RGVzdGluYXRpb24pOwotICAgIGlmICghY29udmVydGVkRGVzdGluYXRpb24pCit2b2lkIFJlbW90
ZUNvbW1hbmRFbmNvZGVyOjpjbGVhckJ1ZmZlcigKKyAgICBXZWJHUFVJZGVudGlmaWVyIGJ1ZmZl
ciwKKyAgICBQQUw6OldlYkdQVTo6U2l6ZTY0IG9mZnNldCwKKyAgICBzdGQ6Om9wdGlvbmFsPFBB
TDo6V2ViR1BVOjpTaXplNjQ+IHNpemUpCit7CisgICAgYXV0byBjb252ZXJ0ZWRCdWZmZXIgPSBt
X29iamVjdEhlYXAuY29udmVydEJ1ZmZlckZyb21CYWNraW5nKGJ1ZmZlcik7CisgICAgQVNTRVJU
KGNvbnZlcnRlZEJ1ZmZlcik7CisgICAgaWYgKCFjb252ZXJ0ZWRCdWZmZXIpCiAgICAgICAgIHJl
dHVybjsKIAotICAgIG1fYmFja2luZy0+ZmlsbEJ1ZmZlcigqY29udmVydGVkRGVzdGluYXRpb24s
IGRlc3RpbmF0aW9uT2Zmc2V0LCBzaXplKTsKKyAgICBtX2JhY2tpbmctPmNsZWFyQnVmZmVyKCpj
b252ZXJ0ZWRCdWZmZXIsIG9mZnNldCwgc2l6ZSk7CiB9CiAKIHZvaWQgUmVtb3RlQ29tbWFuZEVu
Y29kZXI6OnB1c2hEZWJ1Z0dyb3VwKFN0cmluZyYmIGdyb3VwTGFiZWwpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvV2ViR1BVL1JlbW90ZUNvbW1hbmRFbmNv
ZGVyLmggYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvV2ViR1BVL1JlbW90ZUNv
bW1hbmRFbmNvZGVyLmgKaW5kZXggYTViNDJjOTFlMDFkYTY4M2FhZjJkMjRlNjJkODBhNjk5N2Yx
Mzk3Mi4uMTcxMGViOWQ2NWZmNmI0ODY3Mjg1YWJkYzkwMGM4MzMxMzE1MzJiZCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1dlYkdQVS9SZW1vdGVDb21tYW5k
RW5jb2Rlci5oCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9XZWJHUFUv
UmVtb3RlQ29tbWFuZEVuY29kZXIuaApAQCAtMTA0LDEwICsxMDQsMTAgQEAgcHJpdmF0ZToKICAg
ICAgICAgY29uc3QgV2ViR1BVOjpJbWFnZUNvcHlUZXh0dXJlJiBkZXN0aW5hdGlvbiwKICAgICAg
ICAgY29uc3QgV2ViR1BVOjpFeHRlbnQzRCYgY29weVNpemUpOwogCi0gICAgdm9pZCBmaWxsQnVm
ZmVyKAotICAgICAgICBXZWJHUFVJZGVudGlmaWVyIGRlc3RpbmF0aW9uLAotICAgICAgICBQQUw6
OldlYkdQVTo6U2l6ZTY0IGRlc3RpbmF0aW9uT2Zmc2V0LAotICAgICAgICBQQUw6OldlYkdQVTo6
U2l6ZTY0KTsKKyAgICB2b2lkIGNsZWFyQnVmZmVyKAorICAgICAgICBXZWJHUFVJZGVudGlmaWVy
IGJ1ZmZlciwKKyAgICAgICAgUEFMOjpXZWJHUFU6OlNpemU2NCBvZmZzZXQgPSAwLAorICAgICAg
ICBzdGQ6Om9wdGlvbmFsPFBBTDo6V2ViR1BVOjpTaXplNjQ+ID0gc3RkOjpudWxsb3B0KTsKIAog
ICAgIHZvaWQgcHVzaERlYnVnR3JvdXAoU3RyaW5nJiYgZ3JvdXBMYWJlbCk7CiAgICAgdm9pZCBw
b3BEZWJ1Z0dyb3VwKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3Jh
cGhpY3MvV2ViR1BVL1JlbW90ZUNvbW1hbmRFbmNvZGVyLm1lc3NhZ2VzLmluIGIvU291cmNlL1dl
YktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1dlYkdQVS9SZW1vdGVDb21tYW5kRW5jb2Rlci5tZXNz
YWdlcy5pbgppbmRleCBiYzBiZjMzMTE0OGQyZTk1MzFjNTk3Y2I5Y2RkZDYxNzNiN2QyOWMwLi4z
ZGNhOWY5YjliMThiM2I3ZGM3ZDBiOGZjNmQ1MThmOTg1YTRkZTQ2IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvV2ViR1BVL1JlbW90ZUNvbW1hbmRFbmNvZGVy
Lm1lc3NhZ2VzLmluCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9XZWJH
UFUvUmVtb3RlQ29tbWFuZEVuY29kZXIubWVzc2FnZXMuaW4KQEAgLTMwLDcgKzMwLDcgQEAgbWVz
c2FnZXMgLT4gUmVtb3RlQ29tbWFuZEVuY29kZXIgTm90UmVmQ291bnRlZCBTdHJlYW0gewogICAg
IHZvaWQgQ29weUJ1ZmZlclRvVGV4dHVyZShXZWJLaXQ6OldlYkdQVTo6SW1hZ2VDb3B5QnVmZmVy
IHNvdXJjZSwgV2ViS2l0OjpXZWJHUFU6OkltYWdlQ29weVRleHR1cmUgZGVzdGluYXRpb24sIFdl
YktpdDo6V2ViR1BVOjpFeHRlbnQzRCBjb3B5U2l6ZSkKICAgICB2b2lkIENvcHlUZXh0dXJlVG9C
dWZmZXIoV2ViS2l0OjpXZWJHUFU6OkltYWdlQ29weVRleHR1cmUgc291cmNlLCBXZWJLaXQ6Oldl
YkdQVTo6SW1hZ2VDb3B5QnVmZmVyIGRlc3RpbmF0aW9uLCBXZWJLaXQ6OldlYkdQVTo6RXh0ZW50
M0QgY29weVNpemUpCiAgICAgdm9pZCBDb3B5VGV4dHVyZVRvVGV4dHVyZShXZWJLaXQ6OldlYkdQ
VTo6SW1hZ2VDb3B5VGV4dHVyZSBzb3VyY2UsIFdlYktpdDo6V2ViR1BVOjpJbWFnZUNvcHlUZXh0
dXJlIGRlc3RpbmF0aW9uLCBXZWJLaXQ6OldlYkdQVTo6RXh0ZW50M0QgY29weVNpemUpCi0gICAg
dm9pZCBGaWxsQnVmZmVyKFdlYktpdDo6V2ViR1BVSWRlbnRpZmllciBkZXN0aW5hdGlvbiwgUEFM
OjpXZWJHUFU6OlNpemU2NCBkZXN0aW5hdGlvbk9mZnNldCwgUEFMOjpXZWJHUFU6OlNpemU2NCBz
aXplKQorICAgIHZvaWQgQ2xlYXJCdWZmZXIoV2ViS2l0OjpXZWJHUFVJZGVudGlmaWVyIGJ1ZmZl
ciwgUEFMOjpXZWJHUFU6OlNpemU2NCBvZmZzZXQsIHN0ZDo6b3B0aW9uYWw8UEFMOjpXZWJHUFU6
OlNpemU2ND4gc2l6ZSkKICAgICB2b2lkIFB1c2hEZWJ1Z0dyb3VwKFN0cmluZyBncm91cExhYmVs
KQogICAgIHZvaWQgUG9wRGVidWdHcm91cCgpCiAgICAgdm9pZCBJbnNlcnREZWJ1Z01hcmtlcihT
dHJpbmcgbWFya2VyTGFiZWwpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mv
Z3JhcGhpY3MvV2ViR1BVL1JlbW90ZUNvbXB1dGVQYXNzRW5jb2Rlci5jcHAgYi9Tb3VyY2UvV2Vi
S2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvV2ViR1BVL1JlbW90ZUNvbXB1dGVQYXNzRW5jb2Rlci5j
cHAKaW5kZXggOGUwNzNlZDFkZmNiYTRhZDZkZDY0NzY5ZWM0ODA3MzVmZDg5ZWI5ZC4uZjg4MWJl
OWUyYmY1ZmExYWEwZTM0N2QxYjZiYmE4YWI4ZDA0MzM4NCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1dlYkdQVS9SZW1vdGVDb21wdXRlUGFzc0VuY29kZXIu
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9XZWJHUFUvUmVtb3Rl
Q29tcHV0ZVBhc3NFbmNvZGVyLmNwcApAQCAtNjEsOSArNjEsOSBAQCB2b2lkIFJlbW90ZUNvbXB1
dGVQYXNzRW5jb2Rlcjo6c2V0UGlwZWxpbmUoV2ViR1BVSWRlbnRpZmllciBjb21wdXRlUGlwZWxp
bmUpCiAgICAgbV9iYWNraW5nLT5zZXRQaXBlbGluZSgqY29udmVydGVkQ29tcHV0ZVBpcGVsaW5l
KTsKIH0KIAotdm9pZCBSZW1vdGVDb21wdXRlUGFzc0VuY29kZXI6OmRpc3BhdGNoKFBBTDo6V2Vi
R1BVOjpTaXplMzIgeCwgc3RkOjpvcHRpb25hbDxQQUw6OldlYkdQVTo6U2l6ZTMyPiB5LCBzdGQ6
Om9wdGlvbmFsPFBBTDo6V2ViR1BVOjpTaXplMzI+IHopCit2b2lkIFJlbW90ZUNvbXB1dGVQYXNz
RW5jb2Rlcjo6ZGlzcGF0Y2goUEFMOjpXZWJHUFU6OlNpemUzMiB3b3JrZ3JvdXBDb3VudFgsIFBB
TDo6V2ViR1BVOjpTaXplMzIgd29ya2dyb3VwQ291bnRZLCBQQUw6OldlYkdQVTo6U2l6ZTMyIHdv
cmtncm91cENvdW50WikKIHsKLSAgICBtX2JhY2tpbmctPmRpc3BhdGNoKHgsIHksIHopOworICAg
IG1fYmFja2luZy0+ZGlzcGF0Y2god29ya2dyb3VwQ291bnRYLCB3b3JrZ3JvdXBDb3VudFksIHdv
cmtncm91cENvdW50Wik7CiB9CiAKIHZvaWQgUmVtb3RlQ29tcHV0ZVBhc3NFbmNvZGVyOjpkaXNw
YXRjaEluZGlyZWN0KFdlYkdQVUlkZW50aWZpZXIgaW5kaXJlY3RCdWZmZXIsIFBBTDo6V2ViR1BV
OjpTaXplNjQgaW5kaXJlY3RPZmZzZXQpCkBAIC03NiwyNCArNzYsOSBAQCB2b2lkIFJlbW90ZUNv
bXB1dGVQYXNzRW5jb2Rlcjo6ZGlzcGF0Y2hJbmRpcmVjdChXZWJHUFVJZGVudGlmaWVyIGluZGly
ZWN0QnVmZmVyLAogICAgIG1fYmFja2luZy0+ZGlzcGF0Y2hJbmRpcmVjdCgqY29udmVydGVkSW5k
aXJlY3RCdWZmZXIsIGluZGlyZWN0T2Zmc2V0KTsKIH0KIAotdm9pZCBSZW1vdGVDb21wdXRlUGFz
c0VuY29kZXI6OmJlZ2luUGlwZWxpbmVTdGF0aXN0aWNzUXVlcnkoV2ViR1BVSWRlbnRpZmllciBx
dWVyeVNldCwgUEFMOjpXZWJHUFU6OlNpemUzMiBxdWVyeUluZGV4KQordm9pZCBSZW1vdGVDb21w
dXRlUGFzc0VuY29kZXI6OmVuZCgpCiB7Ci0gICAgYXV0byBjb252ZXJ0ZWRRdWVyeVNldCA9IG1f
b2JqZWN0SGVhcC5jb252ZXJ0UXVlcnlTZXRGcm9tQmFja2luZyhxdWVyeVNldCk7Ci0gICAgQVNT
RVJUKGNvbnZlcnRlZFF1ZXJ5U2V0KTsKLSAgICBpZiAoIWNvbnZlcnRlZFF1ZXJ5U2V0KQotICAg
ICAgICByZXR1cm47Ci0KLSAgICBtX2JhY2tpbmctPmJlZ2luUGlwZWxpbmVTdGF0aXN0aWNzUXVl
cnkoKmNvbnZlcnRlZFF1ZXJ5U2V0LCBxdWVyeUluZGV4KTsKLX0KLQotdm9pZCBSZW1vdGVDb21w
dXRlUGFzc0VuY29kZXI6OmVuZFBpcGVsaW5lU3RhdGlzdGljc1F1ZXJ5KCkKLXsKLSAgICBtX2Jh
Y2tpbmctPmVuZFBpcGVsaW5lU3RhdGlzdGljc1F1ZXJ5KCk7Ci19Ci0KLXZvaWQgUmVtb3RlQ29t
cHV0ZVBhc3NFbmNvZGVyOjplbmRQYXNzKCkKLXsKLSAgICBtX2JhY2tpbmctPmVuZFBhc3MoKTsK
KyAgICBtX2JhY2tpbmctPmVuZCgpOwogfQogCiB2b2lkIFJlbW90ZUNvbXB1dGVQYXNzRW5jb2Rl
cjo6c2V0QmluZEdyb3VwKFBBTDo6V2ViR1BVOjpJbmRleDMyIGluZGV4LCBXZWJHUFVJZGVudGlm
aWVyIGJpbmRHcm91cCwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFw
aGljcy9XZWJHUFUvUmVtb3RlQ29tcHV0ZVBhc3NFbmNvZGVyLmggYi9Tb3VyY2UvV2ViS2l0L0dQ
VVByb2Nlc3MvZ3JhcGhpY3MvV2ViR1BVL1JlbW90ZUNvbXB1dGVQYXNzRW5jb2Rlci5oCmluZGV4
IDM1OGUwNWQ5ZTE2ZDk4MjA1M2QyMTgzOGVmZjg5MWRmZTNiMmQ3ZTUuLjgzMzdhMjliZTk0NDdi
M2Q0N2EwNjkxZWJmYTllMTRhN2E0YTUyYjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BV
UHJvY2Vzcy9ncmFwaGljcy9XZWJHUFUvUmVtb3RlQ29tcHV0ZVBhc3NFbmNvZGVyLmgKKysrIGIv
U291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1dlYkdQVS9SZW1vdGVDb21wdXRlUGFz
c0VuY29kZXIuaApAQCAtNzQsMTMgKzc0LDEwIEBAIHByaXZhdGU6CiAgICAgdm9pZCBkaWRSZWNl
aXZlU3RyZWFtTWVzc2FnZShJUEM6OlN0cmVhbVNlcnZlckNvbm5lY3Rpb25CYXNlJiwgSVBDOjpE
ZWNvZGVyJikgZmluYWw7CiAKICAgICB2b2lkIHNldFBpcGVsaW5lKFdlYkdQVUlkZW50aWZpZXIp
OwotICAgIHZvaWQgZGlzcGF0Y2goUEFMOjpXZWJHUFU6OlNpemUzMiB4LCBzdGQ6Om9wdGlvbmFs
PFBBTDo6V2ViR1BVOjpTaXplMzI+IHksIHN0ZDo6b3B0aW9uYWw8UEFMOjpXZWJHUFU6OlNpemUz
Mj4pOworICAgIHZvaWQgZGlzcGF0Y2goUEFMOjpXZWJHUFU6OlNpemUzMiB3b3JrZ3JvdXBDb3Vu
dFgsIFBBTDo6V2ViR1BVOjpTaXplMzIgd29ya2dyb3VwQ291bnRZID0gMSwgUEFMOjpXZWJHUFU6
OlNpemUzMiB3b3JrZ3JvdXBDb3VudFogPSAxKTsKICAgICB2b2lkIGRpc3BhdGNoSW5kaXJlY3Qo
V2ViR1BVSWRlbnRpZmllciBpbmRpcmVjdEJ1ZmZlciwgUEFMOjpXZWJHUFU6OlNpemU2NCBpbmRp
cmVjdE9mZnNldCk7CiAKLSAgICB2b2lkIGJlZ2luUGlwZWxpbmVTdGF0aXN0aWNzUXVlcnkoV2Vi
R1BVSWRlbnRpZmllciwgUEFMOjpXZWJHUFU6OlNpemUzMiBxdWVyeUluZGV4KTsKLSAgICB2b2lk
IGVuZFBpcGVsaW5lU3RhdGlzdGljc1F1ZXJ5KCk7Ci0KLSAgICB2b2lkIGVuZFBhc3MoKTsKKyAg
ICB2b2lkIGVuZCgpOwogCiAgICAgdm9pZCBzZXRCaW5kR3JvdXAoUEFMOjpXZWJHUFU6OkluZGV4
MzIsIFdlYkdQVUlkZW50aWZpZXIsCiAgICAgICAgIHN0ZDo6b3B0aW9uYWw8VmVjdG9yPFBBTDo6
V2ViR1BVOjpCdWZmZXJEeW5hbWljT2Zmc2V0Pj4mJik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvV2ViR1BVL1JlbW90ZUNvbXB1dGVQYXNzRW5jb2Rlci5t
ZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9XZWJHUFUvUmVt
b3RlQ29tcHV0ZVBhc3NFbmNvZGVyLm1lc3NhZ2VzLmluCmluZGV4IDg2YmQyYjU3MmNiYTU0MTFh
MjNjMjljOTdkMDdjYzZjMGMwZWMyZjUuLjQyZTYwOGJkMzA5N2YzMjk1YWExYWFiMDZhZjNjM2Q3
ZmY1NjY0NTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9X
ZWJHUFUvUmVtb3RlQ29tcHV0ZVBhc3NFbmNvZGVyLm1lc3NhZ2VzLmluCisrKyBiL1NvdXJjZS9X
ZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9XZWJHUFUvUmVtb3RlQ29tcHV0ZVBhc3NFbmNvZGVy
Lm1lc3NhZ2VzLmluCkBAIC0yNSwxMSArMjUsOSBAQAogCiBtZXNzYWdlcyAtPiBSZW1vdGVDb21w
dXRlUGFzc0VuY29kZXIgTm90UmVmQ291bnRlZCBTdHJlYW0gewogICAgIHZvaWQgU2V0UGlwZWxp
bmUoV2ViS2l0OjpXZWJHUFVJZGVudGlmaWVyIGlkZW50aWZpZXIpCi0gICAgdm9pZCBEaXNwYXRj
aChQQUw6OldlYkdQVTo6U2l6ZTMyIHgsIHN0ZDo6b3B0aW9uYWw8UEFMOjpXZWJHUFU6OlNpemUz
Mj4geSwgc3RkOjpvcHRpb25hbDxQQUw6OldlYkdQVTo6U2l6ZTMyPiB6KQorICAgIHZvaWQgRGlz
cGF0Y2goUEFMOjpXZWJHUFU6OlNpemUzMiB3b3JrZ3JvdXBDb3VudFgsIFBBTDo6V2ViR1BVOjpT
aXplMzIgd29ya2dyb3VwQ291bnRZLCBQQUw6OldlYkdQVTo6U2l6ZTMyIHdvcmtncm91cENvdW50
WikKICAgICB2b2lkIERpc3BhdGNoSW5kaXJlY3QoV2ViS2l0OjpXZWJHUFVJZGVudGlmaWVyIGlu
ZGlyZWN0QnVmZmVyLCBQQUw6OldlYkdQVTo6U2l6ZTY0IGluZGlyZWN0T2Zmc2V0KQotICAgIHZv
aWQgQmVnaW5QaXBlbGluZVN0YXRpc3RpY3NRdWVyeShXZWJLaXQ6OldlYkdQVUlkZW50aWZpZXIg
aWRlbnRpZmllciwgUEFMOjpXZWJHUFU6OlNpemUzMiBxdWVyeUluZGV4KQotICAgIHZvaWQgRW5k
UGlwZWxpbmVTdGF0aXN0aWNzUXVlcnkoKQotICAgIHZvaWQgRW5kUGFzcygpCisgICAgdm9pZCBF
bmQoKQogICAgIHZvaWQgU2V0QmluZEdyb3VwKFBBTDo6V2ViR1BVOjpJbmRleDMyIGluZGV4LCBX
ZWJLaXQ6OldlYkdQVUlkZW50aWZpZXIgaWRlbnRpZmllciwgc3RkOjpvcHRpb25hbDxWZWN0b3I8
UEFMOjpXZWJHUFU6OkJ1ZmZlckR5bmFtaWNPZmZzZXQ+PiBkeW5hbWljT2Zmc2V0cykKICAgICB2
b2lkIFB1c2hEZWJ1Z0dyb3VwKFN0cmluZyBncm91cExhYmVsKQogICAgIHZvaWQgUG9wRGVidWdH
cm91cCgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvV2Vi
R1BVL1JlbW90ZVJlbmRlclBhc3NFbmNvZGVyLmNwcCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vz
cy9ncmFwaGljcy9XZWJHUFUvUmVtb3RlUmVuZGVyUGFzc0VuY29kZXIuY3BwCmluZGV4IDYyZDBj
YTc1ZWEyYjY4MDI3OWM1NjUyYTliZjNjODJjMjNiYTFmMjIuLmFkOWUxODRjN2NjNmMzMjA4MDE4
NjhmMGZhOTJmMWIxOGFiNGM0NzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vz
cy9ncmFwaGljcy9XZWJHUFUvUmVtb3RlUmVuZGVyUGFzc0VuY29kZXIuY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9XZWJHUFUvUmVtb3RlUmVuZGVyUGFzc0VuY29k
ZXIuY3BwCkBAIC0xNzksMjEgKzE3OSw2IEBAIHZvaWQgUmVtb3RlUmVuZGVyUGFzc0VuY29kZXI6
OmVuZE9jY2x1c2lvblF1ZXJ5KCkKICAgICBtX2JhY2tpbmctPmVuZE9jY2x1c2lvblF1ZXJ5KCk7
CiB9CiAKLXZvaWQgUmVtb3RlUmVuZGVyUGFzc0VuY29kZXI6OmJlZ2luUGlwZWxpbmVTdGF0aXN0
aWNzUXVlcnkoV2ViR1BVSWRlbnRpZmllciBxdWVyeVNldCwgUEFMOjpXZWJHUFU6OlNpemUzMiBx
dWVyeUluZGV4KQotewotICAgIGF1dG8gY29udmVydGVkUXVlcnlTZXQgPSBtX29iamVjdEhlYXAu
Y29udmVydFF1ZXJ5U2V0RnJvbUJhY2tpbmcocXVlcnlTZXQpOwotICAgIEFTU0VSVChjb252ZXJ0
ZWRRdWVyeVNldCk7Ci0gICAgaWYgKCFjb252ZXJ0ZWRRdWVyeVNldCkKLSAgICAgICAgcmV0dXJu
OwotCi0gICAgbV9iYWNraW5nLT5iZWdpblBpcGVsaW5lU3RhdGlzdGljc1F1ZXJ5KCpjb252ZXJ0
ZWRRdWVyeVNldCwgcXVlcnlJbmRleCk7Ci19Ci0KLXZvaWQgUmVtb3RlUmVuZGVyUGFzc0VuY29k
ZXI6OmVuZFBpcGVsaW5lU3RhdGlzdGljc1F1ZXJ5KCkKLXsKLSAgICBtX2JhY2tpbmctPmVuZFBp
cGVsaW5lU3RhdGlzdGljc1F1ZXJ5KCk7Ci19Ci0KIHZvaWQgUmVtb3RlUmVuZGVyUGFzc0VuY29k
ZXI6OmV4ZWN1dGVCdW5kbGVzKFZlY3RvcjxXZWJHUFVJZGVudGlmaWVyPiYmIHJlbmRlckJ1bmRs
ZXMpCiB7CiAgICAgVmVjdG9yPHN0ZDo6cmVmZXJlbmNlX3dyYXBwZXI8UEFMOjpXZWJHUFU6OlJl
bmRlckJ1bmRsZT4+IGNvbnZlcnRlZEJ1bmRsZXM7CkBAIC0yMDgsOSArMTkzLDkgQEAgdm9pZCBS
ZW1vdGVSZW5kZXJQYXNzRW5jb2Rlcjo6ZXhlY3V0ZUJ1bmRsZXMoVmVjdG9yPFdlYkdQVUlkZW50
aWZpZXI+JiYgcmVuZGVyQnUKICAgICBtX2JhY2tpbmctPmV4ZWN1dGVCdW5kbGVzKFdURk1vdmUo
Y29udmVydGVkQnVuZGxlcykpOwogfQogCi12b2lkIFJlbW90ZVJlbmRlclBhc3NFbmNvZGVyOjpl
bmRQYXNzKCkKK3ZvaWQgUmVtb3RlUmVuZGVyUGFzc0VuY29kZXI6OmVuZCgpCiB7Ci0gICAgbV9i
YWNraW5nLT5lbmRQYXNzKCk7CisgICAgbV9iYWNraW5nLT5lbmQoKTsKIH0KIAogdm9pZCBSZW1v
dGVSZW5kZXJQYXNzRW5jb2Rlcjo6c2V0TGFiZWwoU3RyaW5nJiYgbGFiZWwpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvV2ViR1BVL1JlbW90ZVJlbmRlclBh
c3NFbmNvZGVyLmggYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvV2ViR1BVL1Jl
bW90ZVJlbmRlclBhc3NFbmNvZGVyLmgKaW5kZXggZjJmNTQ1MWNlZmRkNWQzYWI4NzgwNmZjNjI1
NDYxMjA3OTJkY2Q3Yi4uYzdkZmViOWI1ZTRkMzJiMWM2YjIxM2ZiODE4NDhjYmQxMDlkN2QxZCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1dlYkdQVS9SZW1v
dGVSZW5kZXJQYXNzRW5jb2Rlci5oCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFw
aGljcy9XZWJHUFUvUmVtb3RlUmVuZGVyUGFzc0VuY29kZXIuaApAQCAtMTEwLDExICsxMTAsOCBA
QCBwcml2YXRlOgogICAgIHZvaWQgYmVnaW5PY2NsdXNpb25RdWVyeShQQUw6OldlYkdQVTo6U2l6
ZTMyIHF1ZXJ5SW5kZXgpOwogICAgIHZvaWQgZW5kT2NjbHVzaW9uUXVlcnkoKTsKIAotICAgIHZv
aWQgYmVnaW5QaXBlbGluZVN0YXRpc3RpY3NRdWVyeShXZWJHUFVJZGVudGlmaWVyLCBQQUw6Oldl
YkdQVTo6U2l6ZTMyIHF1ZXJ5SW5kZXgpOwotICAgIHZvaWQgZW5kUGlwZWxpbmVTdGF0aXN0aWNz
UXVlcnkoKTsKLQogICAgIHZvaWQgZXhlY3V0ZUJ1bmRsZXMoVmVjdG9yPFdlYkdQVUlkZW50aWZp
ZXI+JiYpOwotICAgIHZvaWQgZW5kUGFzcygpOworICAgIHZvaWQgZW5kKCk7CiAKICAgICB2b2lk
IHNldExhYmVsKFN0cmluZyYmKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9j
ZXNzL2dyYXBoaWNzL1dlYkdQVS9SZW1vdGVSZW5kZXJQYXNzRW5jb2Rlci5tZXNzYWdlcy5pbiBi
L1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9XZWJHUFUvUmVtb3RlUmVuZGVyUGFz
c0VuY29kZXIubWVzc2FnZXMuaW4KaW5kZXggZThiN2JhYWE4ZWFjMDliMzc1Y2ZiYTc4NGE5ZDMy
OGJkZDZiNmFlZC4uNTcyYjBhYWU5NzNlODYyZmMyOGQ2NDEzODlmOWExMzExMGQ3ZWY4MiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1dlYkdQVS9SZW1vdGVS
ZW5kZXJQYXNzRW5jb2Rlci5tZXNzYWdlcy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nl
c3MvZ3JhcGhpY3MvV2ViR1BVL1JlbW90ZVJlbmRlclBhc3NFbmNvZGVyLm1lc3NhZ2VzLmluCkBA
IC00MSwxMCArNDEsOCBAQCBtZXNzYWdlcyAtPiBSZW1vdGVSZW5kZXJQYXNzRW5jb2RlciBOb3RS
ZWZDb3VudGVkIFN0cmVhbSB7CiAgICAgdm9pZCBTZXRTdGVuY2lsUmVmZXJlbmNlKFBBTDo6V2Vi
R1BVOjpTdGVuY2lsVmFsdWUgc3RlbmNpbFZhbHVlKQogICAgIHZvaWQgQmVnaW5PY2NsdXNpb25R
dWVyeShQQUw6OldlYkdQVTo6U2l6ZTMyIHF1ZXJ5SW5kZXgpCiAgICAgdm9pZCBFbmRPY2NsdXNp
b25RdWVyeSgpCi0gICAgdm9pZCBCZWdpblBpcGVsaW5lU3RhdGlzdGljc1F1ZXJ5KFdlYktpdDo6
V2ViR1BVSWRlbnRpZmllciBpZGVudGlmaWVyLCBQQUw6OldlYkdQVTo6U2l6ZTMyIHF1ZXJ5SW5k
ZXgpCi0gICAgdm9pZCBFbmRQaXBlbGluZVN0YXRpc3RpY3NRdWVyeSgpCiAgICAgdm9pZCBFeGVj
dXRlQnVuZGxlcyhWZWN0b3I8V2ViS2l0OjpXZWJHUFVJZGVudGlmaWVyPiBidW5kbGVzKQotICAg
IHZvaWQgRW5kUGFzcygpCisgICAgdm9pZCBFbmQoKQogICAgIHZvaWQgU2V0TGFiZWwoU3RyaW5n
IGxhYmVsKQogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJHUFUvV2Vi
R1BVQ2FudmFzQ29uZmlndXJhdGlvbi5jcHAgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJHUFUv
V2ViR1BVQ2FudmFzQ29uZmlndXJhdGlvbi5jcHAKaW5kZXggNDgxMzI1MjI2ZGY2OGM5M2E5MTgy
N2MyMjNmZTA4ZmZjNGI4NTI4YS4uNDViNjg3ZTI2NTJhMjgzMWJiMzk3NDEzOTQyOWUwOTAyODgx
NzQ5ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViR1BVL1dlYkdQVUNhbnZh
c0NvbmZpZ3VyYXRpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkdQVS9XZWJH
UFVDYW52YXNDb25maWd1cmF0aW9uLmNwcApAQCAtNDcsNyArNDcsNyBAQCBzdGQ6Om9wdGlvbmFs
PENhbnZhc0NvbmZpZ3VyYXRpb24+IENvbnZlcnRUb0JhY2tpbmdDb250ZXh0Ojpjb252ZXJ0VG9C
YWNraW5nKGNvbgogICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICB9CiAKLSAg
ICByZXR1cm4geyB7IGRldmljZSwgY2FudmFzQ29uZmlndXJhdGlvbi5mb3JtYXQsIGNhbnZhc0Nv
bmZpZ3VyYXRpb24udXNhZ2UsIGNhbnZhc0NvbmZpZ3VyYXRpb24uY29sb3JTcGFjZSwgY2FudmFz
Q29uZmlndXJhdGlvbi5jb21wb3NpdGluZ0FscGhhTW9kZSwgV1RGTW92ZShzaXplKSB9IH07Cisg
ICAgcmV0dXJuIHsgeyBkZXZpY2UsIGNhbnZhc0NvbmZpZ3VyYXRpb24uZm9ybWF0LCBjYW52YXND
b25maWd1cmF0aW9uLnVzYWdlLCBjYW52YXNDb25maWd1cmF0aW9uLnZpZXdGb3JtYXRzLCBjYW52
YXNDb25maWd1cmF0aW9uLmNvbG9yU3BhY2UsIGNhbnZhc0NvbmZpZ3VyYXRpb24uY29tcG9zaXRp
bmdBbHBoYU1vZGUsIFdURk1vdmUoc2l6ZSkgfSB9OwogfQogCiBzdGQ6Om9wdGlvbmFsPFBBTDo6
V2ViR1BVOjpDYW52YXNDb25maWd1cmF0aW9uPiBDb252ZXJ0RnJvbUJhY2tpbmdDb250ZXh0Ojpj
b252ZXJ0RnJvbUJhY2tpbmcoY29uc3QgQ2FudmFzQ29uZmlndXJhdGlvbiYgY2FudmFzQ29uZmln
dXJhdGlvbikKQEAgLTYzLDcgKzYzLDcgQEAgc3RkOjpvcHRpb25hbDxQQUw6OldlYkdQVTo6Q2Fu
dmFzQ29uZmlndXJhdGlvbj4gQ29udmVydEZyb21CYWNraW5nQ29udGV4dDo6Y29udmUKICAgICAg
ICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgfQogCi0gICAgcmV0dXJuIHsgeyAqZGV2
aWNlLCBjYW52YXNDb25maWd1cmF0aW9uLmZvcm1hdCwgY2FudmFzQ29uZmlndXJhdGlvbi51c2Fn
ZSwgY2FudmFzQ29uZmlndXJhdGlvbi5jb2xvclNwYWNlLCBjYW52YXNDb25maWd1cmF0aW9uLmNv
bXBvc2l0aW5nQWxwaGFNb2RlLCBXVEZNb3ZlKHNpemUpIH0gfTsKKyAgICByZXR1cm4geyB7ICpk
ZXZpY2UsIGNhbnZhc0NvbmZpZ3VyYXRpb24uZm9ybWF0LCBjYW52YXNDb25maWd1cmF0aW9uLnVz
YWdlLCBjYW52YXNDb25maWd1cmF0aW9uLnZpZXdGb3JtYXRzLCBjYW52YXNDb25maWd1cmF0aW9u
LmNvbG9yU3BhY2UsIGNhbnZhc0NvbmZpZ3VyYXRpb24uY29tcG9zaXRpbmdBbHBoYU1vZGUsIFdU
Rk1vdmUoc2l6ZSkgfSB9OwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkdQVS9XZWJHUFVDYW52YXNDb25maWd1cmF0aW9uLmgg
Yi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJHUFUvV2ViR1BVQ2FudmFzQ29uZmlndXJhdGlvbi5o
CmluZGV4IDMwMTAxMTliM2VjYTdmYzdiYTYyYWMyNWI0MTczYjgxY2QwMmFmMjguLjA4Nzg0ZTM5
MDU2OWY3NTg0ZjU5NjRmYzkzNjU0MmVlOTM4Y2ViYzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvU2hhcmVkL1dlYkdQVS9XZWJHUFVDYW52YXNDb25maWd1cmF0aW9uLmgKKysrIGIvU291cmNl
L1dlYktpdC9TaGFyZWQvV2ViR1BVL1dlYkdQVUNhbnZhc0NvbmZpZ3VyYXRpb24uaApAQCAtNDUs
NiArNDUsNyBAQCBzdHJ1Y3QgQ2FudmFzQ29uZmlndXJhdGlvbiB7CiAgICAgV2ViR1BVSWRlbnRp
ZmllciBkZXZpY2U7CiAgICAgUEFMOjpXZWJHUFU6OlRleHR1cmVGb3JtYXQgZm9ybWF0IHsgUEFM
OjpXZWJHUFU6OlRleHR1cmVGb3JtYXQ6OlI4dW5vcm0gfTsKICAgICBQQUw6OldlYkdQVTo6VGV4
dHVyZVVzYWdlRmxhZ3MgdXNhZ2UgeyBQQUw6OldlYkdQVTo6VGV4dHVyZVVzYWdlOjpSZW5kZXJB
dHRhY2htZW50IH07CisgICAgVmVjdG9yPFBBTDo6V2ViR1BVOjpUZXh0dXJlRm9ybWF0PiB2aWV3
Rm9ybWF0czsKICAgICBQQUw6OldlYkdQVTo6UHJlZGVmaW5lZENvbG9yU3BhY2UgY29sb3JTcGFj
ZSB7IFBBTDo6V2ViR1BVOjpQcmVkZWZpbmVkQ29sb3JTcGFjZTo6U1JHQiB9OwogICAgIFBBTDo6
V2ViR1BVOjpDYW52YXNDb21wb3NpdGluZ0FscGhhTW9kZSBjb21wb3NpdGluZ0FscGhhTW9kZSB7
IFBBTDo6V2ViR1BVOjpDYW52YXNDb21wb3NpdGluZ0FscGhhTW9kZTo6T3BhcXVlIH07CiAgICAg
c3RkOjpvcHRpb25hbDxFeHRlbnQzRD4gc2l6ZTsKQEAgLTU0LDYgKzU1LDcgQEAgc3RydWN0IENh
bnZhc0NvbmZpZ3VyYXRpb24gewogICAgICAgICBlbmNvZGVyIDw8IGRldmljZTsKICAgICAgICAg
ZW5jb2RlciA8PCBmb3JtYXQ7CiAgICAgICAgIGVuY29kZXIgPDwgdXNhZ2U7CisgICAgICAgIGVu
Y29kZXIgPDwgdmlld0Zvcm1hdHM7CiAgICAgICAgIGVuY29kZXIgPDwgY29sb3JTcGFjZTsKICAg
ICAgICAgZW5jb2RlciA8PCBjb21wb3NpdGluZ0FscGhhTW9kZTsKICAgICAgICAgZW5jb2RlciA8
PCBzaXplOwpAQCAtNzYsNiArNzgsMTEgQEAgc3RydWN0IENhbnZhc0NvbmZpZ3VyYXRpb24gewog
ICAgICAgICBpZiAoIXVzYWdlKQogICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAor
ICAgICAgICBzdGQ6Om9wdGlvbmFsPFZlY3RvcjxQQUw6OldlYkdQVTo6VGV4dHVyZUZvcm1hdD4+
IHZpZXdGb3JtYXRzOworICAgICAgICBkZWNvZGVyID4+IHZpZXdGb3JtYXRzOworICAgICAgICBp
ZiAoIXZpZXdGb3JtYXRzKQorICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKKwogICAg
ICAgICBzdGQ6Om9wdGlvbmFsPFBBTDo6V2ViR1BVOjpQcmVkZWZpbmVkQ29sb3JTcGFjZT4gY29s
b3JTcGFjZTsKICAgICAgICAgZGVjb2RlciA+PiBjb2xvclNwYWNlOwogICAgICAgICBpZiAoIWNv
bG9yU3BhY2UpCkBAIC05MSw3ICs5OCw3IEBAIHN0cnVjdCBDYW52YXNDb25maWd1cmF0aW9uIHsK
ICAgICAgICAgaWYgKCFzaXplKQogICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAot
ICAgICAgICByZXR1cm4geyB7IFdURk1vdmUoKmRldmljZSksIFdURk1vdmUoKmZvcm1hdCksIFdU
Rk1vdmUoKnVzYWdlKSwgV1RGTW92ZSgqY29sb3JTcGFjZSksIFdURk1vdmUoKmNvbXBvc2l0aW5n
QWxwaGFNb2RlKSwgV1RGTW92ZSgqc2l6ZSkgfSB9OworICAgICAgICByZXR1cm4geyB7IFdURk1v
dmUoKmRldmljZSksIFdURk1vdmUoKmZvcm1hdCksIFdURk1vdmUoKnVzYWdlKSwgV1RGTW92ZSgq
dmlld0Zvcm1hdHMpLCBXVEZNb3ZlKCpjb2xvclNwYWNlKSwgV1RGTW92ZSgqY29tcG9zaXRpbmdB
bHBoYU1vZGUpLCBXVEZNb3ZlKCpzaXplKSB9IH07CiAgICAgfQogfTsKIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9TaGFyZWQvV2ViR1BVL1dlYkdQVUNvbnZlcnRGcm9tQmFja2luZ0NvbnRl
eHQuaCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkdQVS9XZWJHUFVDb252ZXJ0RnJvbUJhY2tp
bmdDb250ZXh0LmgKaW5kZXggOTkyZjI3ZGEwZTRiYTUxNWNmYmZkOTgwNjY5NDc3MGQzYzk4ODQx
Ny4uMzk3MmFkMzhmYTdmMWVmZDkyNzJjNjhjMzA0NzgxYWFmNjcyMzM5MCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9TaGFyZWQvV2ViR1BVL1dlYkdQVUNvbnZlcnRGcm9tQmFja2luZ0NvbnRl
eHQuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJHUFUvV2ViR1BVQ29udmVydEZyb21C
YWNraW5nQ29udGV4dC5oCkBAIC0xMTIsNiArMTEyLDcgQEAgY2xhc3MgU2FtcGxlcjsKIHN0cnVj
dCBTYW1wbGVyQmluZGluZ0xheW91dDsKIHN0cnVjdCBTYW1wbGVyRGVzY3JpcHRvcjsKIGNsYXNz
IFNoYWRlck1vZHVsZTsKK3N0cnVjdCBTaGFkZXJNb2R1bGVDb21waWxhdGlvbkhpbnQ7CiBzdHJ1
Y3QgU2hhZGVyTW9kdWxlRGVzY3JpcHRvcjsKIHN0cnVjdCBTdGVuY2lsRmFjZVN0YXRlOwogc3Ry
dWN0IFN0b3JhZ2VUZXh0dXJlQmluZGluZ0xheW91dDsKQEAgLTE3Niw2ICsxNzcsNyBAQCBzdHJ1
Y3QgUmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9yOwogc3RydWN0IFJlcXVlc3RBZGFwdGVyT3B0aW9u
czsKIHN0cnVjdCBTYW1wbGVyQmluZGluZ0xheW91dDsKIHN0cnVjdCBTYW1wbGVyRGVzY3JpcHRv
cjsKK3N0cnVjdCBTaGFkZXJNb2R1bGVDb21waWxhdGlvbkhpbnQ7CiBzdHJ1Y3QgU2hhZGVyTW9k
dWxlRGVzY3JpcHRvcjsKIHN0cnVjdCBTdGVuY2lsRmFjZVN0YXRlOwogc3RydWN0IFN0b3JhZ2VU
ZXh0dXJlQmluZGluZ0xheW91dDsKQEAgLTI1MSw2ICsyNTMsNyBAQCBwdWJsaWM6CiAgICAgc3Rk
OjpvcHRpb25hbDxQQUw6OldlYkdQVTo6UmVxdWVzdEFkYXB0ZXJPcHRpb25zPiBjb252ZXJ0RnJv
bUJhY2tpbmcoY29uc3QgUmVxdWVzdEFkYXB0ZXJPcHRpb25zJik7CiAgICAgc3RkOjpvcHRpb25h
bDxQQUw6OldlYkdQVTo6U2FtcGxlckJpbmRpbmdMYXlvdXQ+IGNvbnZlcnRGcm9tQmFja2luZyhj
b25zdCBTYW1wbGVyQmluZGluZ0xheW91dCYpOwogICAgIHN0ZDo6b3B0aW9uYWw8UEFMOjpXZWJH
UFU6OlNhbXBsZXJEZXNjcmlwdG9yPiBjb252ZXJ0RnJvbUJhY2tpbmcoY29uc3QgU2FtcGxlckRl
c2NyaXB0b3ImKTsKKyAgICBzdGQ6Om9wdGlvbmFsPFBBTDo6V2ViR1BVOjpTaGFkZXJNb2R1bGVD
b21waWxhdGlvbkhpbnQ+IGNvbnZlcnRGcm9tQmFja2luZyhjb25zdCBTaGFkZXJNb2R1bGVDb21w
aWxhdGlvbkhpbnQmKTsKICAgICBzdGQ6Om9wdGlvbmFsPFBBTDo6V2ViR1BVOjpTaGFkZXJNb2R1
bGVEZXNjcmlwdG9yPiBjb252ZXJ0RnJvbUJhY2tpbmcoY29uc3QgU2hhZGVyTW9kdWxlRGVzY3Jp
cHRvciYpOwogICAgIHN0ZDo6b3B0aW9uYWw8UEFMOjpXZWJHUFU6OlN0ZW5jaWxGYWNlU3RhdGU+
IGNvbnZlcnRGcm9tQmFja2luZyhjb25zdCBTdGVuY2lsRmFjZVN0YXRlJik7CiAgICAgc3RkOjpv
cHRpb25hbDxQQUw6OldlYkdQVTo6U3RvcmFnZVRleHR1cmVCaW5kaW5nTGF5b3V0PiBjb252ZXJ0
RnJvbUJhY2tpbmcoY29uc3QgU3RvcmFnZVRleHR1cmVCaW5kaW5nTGF5b3V0Jik7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJHUFUvV2ViR1BVQ29udmVydFRvQmFja2luZ0Nv
bnRleHQuaCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkdQVS9XZWJHUFVDb252ZXJ0VG9CYWNr
aW5nQ29udGV4dC5oCmluZGV4IGE1MzM4NzY3OGNiOWQ3NWEyNzZlNDYzNzU0MWQzMTYwNjliMDdk
OWMuLmRlODQwZTM3ODU5NGNiMmNjZGVlZjdkMjU1Y2M1ZjZlYzRkYzQ5NjEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkdQVS9XZWJHUFVDb252ZXJ0VG9CYWNraW5nQ29udGV4
dC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkdQVS9XZWJHUFVDb252ZXJ0VG9CYWNr
aW5nQ29udGV4dC5oCkBAIC0xMTEsNiArMTExLDcgQEAgY2xhc3MgU2FtcGxlcjsKIHN0cnVjdCBT
YW1wbGVyQmluZGluZ0xheW91dDsKIHN0cnVjdCBTYW1wbGVyRGVzY3JpcHRvcjsKIGNsYXNzIFNo
YWRlck1vZHVsZTsKK3N0cnVjdCBTaGFkZXJNb2R1bGVDb21waWxhdGlvbkhpbnQ7CiBzdHJ1Y3Qg
U2hhZGVyTW9kdWxlRGVzY3JpcHRvcjsKIHN0cnVjdCBTdGVuY2lsRmFjZVN0YXRlOwogc3RydWN0
IFN0b3JhZ2VUZXh0dXJlQmluZGluZ0xheW91dDsKQEAgLTE3NSw2ICsxNzYsNyBAQCBzdHJ1Y3Qg
UmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9yOwogc3RydWN0IFJlcXVlc3RBZGFwdGVyT3B0aW9uczsK
IHN0cnVjdCBTYW1wbGVyQmluZGluZ0xheW91dDsKIHN0cnVjdCBTYW1wbGVyRGVzY3JpcHRvcjsK
K3N0cnVjdCBTaGFkZXJNb2R1bGVDb21waWxhdGlvbkhpbnQ7CiBzdHJ1Y3QgU2hhZGVyTW9kdWxl
RGVzY3JpcHRvcjsKIHN0cnVjdCBTdGVuY2lsRmFjZVN0YXRlOwogc3RydWN0IFN0b3JhZ2VUZXh0
dXJlQmluZGluZ0xheW91dDsKQEAgLTI1MCw2ICsyNTIsNyBAQCBwdWJsaWM6CiAgICAgc3RkOjpv
cHRpb25hbDxSZXF1ZXN0QWRhcHRlck9wdGlvbnM+IGNvbnZlcnRUb0JhY2tpbmcoY29uc3QgUEFM
OjpXZWJHUFU6OlJlcXVlc3RBZGFwdGVyT3B0aW9ucyYpOwogICAgIHN0ZDo6b3B0aW9uYWw8U2Ft
cGxlckJpbmRpbmdMYXlvdXQ+IGNvbnZlcnRUb0JhY2tpbmcoY29uc3QgUEFMOjpXZWJHUFU6OlNh
bXBsZXJCaW5kaW5nTGF5b3V0Jik7CiAgICAgc3RkOjpvcHRpb25hbDxTYW1wbGVyRGVzY3JpcHRv
cj4gY29udmVydFRvQmFja2luZyhjb25zdCBQQUw6OldlYkdQVTo6U2FtcGxlckRlc2NyaXB0b3Im
KTsKKyAgICBzdGQ6Om9wdGlvbmFsPFNoYWRlck1vZHVsZUNvbXBpbGF0aW9uSGludD4gY29udmVy
dFRvQmFja2luZyhjb25zdCBQQUw6OldlYkdQVTo6U2hhZGVyTW9kdWxlQ29tcGlsYXRpb25IaW50
Jik7CiAgICAgc3RkOjpvcHRpb25hbDxTaGFkZXJNb2R1bGVEZXNjcmlwdG9yPiBjb252ZXJ0VG9C
YWNraW5nKGNvbnN0IFBBTDo6V2ViR1BVOjpTaGFkZXJNb2R1bGVEZXNjcmlwdG9yJik7CiAgICAg
c3RkOjpvcHRpb25hbDxTdGVuY2lsRmFjZVN0YXRlPiBjb252ZXJ0VG9CYWNraW5nKGNvbnN0IFBB
TDo6V2ViR1BVOjpTdGVuY2lsRmFjZVN0YXRlJik7CiAgICAgc3RkOjpvcHRpb25hbDxTdG9yYWdl
VGV4dHVyZUJpbmRpbmdMYXlvdXQ+IGNvbnZlcnRUb0JhY2tpbmcoY29uc3QgUEFMOjpXZWJHUFU6
OlN0b3JhZ2VUZXh0dXJlQmluZGluZ0xheW91dCYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9TaGFyZWQvV2ViR1BVL1dlYkdQVUZyYWdtZW50U3RhdGUuY3BwIGIvU291cmNlL1dlYktpdC9T
aGFyZWQvV2ViR1BVL1dlYkdQVUZyYWdtZW50U3RhdGUuY3BwCmluZGV4IDVmMDcwMTMzM2RjZGQy
YmQyNzhiZmRlYjg3M2UwNThjMGMwNTUyMjcuLmFjNThhMzY4ZDE2Y2ZjODFmNzM4ODhkZWFiMGEz
NzhlMGMzMDA5N2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkdQVS9XZWJH
UFVGcmFnbWVudFN0YXRlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJHUFUvV2Vi
R1BVRnJhZ21lbnRTdGF0ZS5jcHAKQEAgLTQwLDEzICs0MCwxNiBAQCBzdGQ6Om9wdGlvbmFsPEZy
YWdtZW50U3RhdGU+IENvbnZlcnRUb0JhY2tpbmdDb250ZXh0Ojpjb252ZXJ0VG9CYWNraW5nKGNv
bnN0IFBBTAogICAgIGlmICghYmFzZSkKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAot
ICAgIFZlY3RvcjxDb2xvclRhcmdldFN0YXRlPiB0YXJnZXRzOworICAgIFZlY3RvcjxzdGQ6Om9w
dGlvbmFsPENvbG9yVGFyZ2V0U3RhdGU+PiB0YXJnZXRzOwogICAgIHRhcmdldHMucmVzZXJ2ZUlu
aXRpYWxDYXBhY2l0eShmcmFnbWVudFN0YXRlLnRhcmdldHMuc2l6ZSgpKTsKICAgICBmb3IgKGNv
bnN0IGF1dG8mIHRhcmdldCA6IGZyYWdtZW50U3RhdGUudGFyZ2V0cykgewotICAgICAgICBhdXRv
IGNvbnZlcnRlZFRhcmdldCA9IGNvbnZlcnRUb0JhY2tpbmcodGFyZ2V0KTsKLSAgICAgICAgaWYg
KCFjb252ZXJ0ZWRUYXJnZXQpCi0gICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwotICAg
ICAgICB0YXJnZXRzLnVuY2hlY2tlZEFwcGVuZChXVEZNb3ZlKCpjb252ZXJ0ZWRUYXJnZXQpKTsK
KyAgICAgICAgaWYgKHRhcmdldCkgeworICAgICAgICAgICAgYXV0byBjb252ZXJ0ZWRUYXJnZXQg
PSBjb252ZXJ0VG9CYWNraW5nKCp0YXJnZXQpOworICAgICAgICAgICAgaWYgKCFjb252ZXJ0ZWRU
YXJnZXQpCisgICAgICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKKyAgICAgICAgICAg
IHRhcmdldHMudW5jaGVja2VkQXBwZW5kKFdURk1vdmUoKmNvbnZlcnRlZFRhcmdldCkpOworICAg
ICAgICB9IGVsc2UKKyAgICAgICAgICAgIHRhcmdldHMudW5jaGVja2VkQXBwZW5kKHN0ZDo6bnVs
bG9wdCk7CiAgICAgfQogCiAgICAgcmV0dXJuIHsgeyBXVEZNb3ZlKCpiYXNlKSwgV1RGTW92ZSh0
YXJnZXRzKSB9IH07CkBAIC01OCwxMyArNjEsMTYgQEAgc3RkOjpvcHRpb25hbDxQQUw6OldlYkdQ
VTo6RnJhZ21lbnRTdGF0ZT4gQ29udmVydEZyb21CYWNraW5nQ29udGV4dDo6Y29udmVydEZyb20K
ICAgICBpZiAoIWJhc2UpCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKLSAgICBWZWN0
b3I8UEFMOjpXZWJHUFU6OkNvbG9yVGFyZ2V0U3RhdGU+IHRhcmdldHM7CisgICAgVmVjdG9yPHN0
ZDo6b3B0aW9uYWw8UEFMOjpXZWJHUFU6OkNvbG9yVGFyZ2V0U3RhdGU+PiB0YXJnZXRzOwogICAg
IHRhcmdldHMucmVzZXJ2ZUluaXRpYWxDYXBhY2l0eShmcmFnbWVudFN0YXRlLnRhcmdldHMuc2l6
ZSgpKTsKICAgICBmb3IgKGNvbnN0IGF1dG8mIGJhY2tpbmdUYXJnZXQgOiBmcmFnbWVudFN0YXRl
LnRhcmdldHMpIHsKLSAgICAgICAgYXV0byB0YXJnZXQgPSBjb252ZXJ0RnJvbUJhY2tpbmcoYmFj
a2luZ1RhcmdldCk7Ci0gICAgICAgIGlmICghdGFyZ2V0KQotICAgICAgICAgICAgcmV0dXJuIHN0
ZDo6bnVsbG9wdDsKLSAgICAgICAgdGFyZ2V0cy51bmNoZWNrZWRBcHBlbmQoV1RGTW92ZSgqdGFy
Z2V0KSk7CisgICAgICAgIGlmIChiYWNraW5nVGFyZ2V0KSB7CisgICAgICAgICAgICBhdXRvIHRh
cmdldCA9IGNvbnZlcnRGcm9tQmFja2luZygqYmFja2luZ1RhcmdldCk7CisgICAgICAgICAgICBp
ZiAoIXRhcmdldCkKKyAgICAgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OworICAgICAg
ICAgICAgdGFyZ2V0cy51bmNoZWNrZWRBcHBlbmQoV1RGTW92ZSgqdGFyZ2V0KSk7CisgICAgICAg
IH0gZWxzZQorICAgICAgICAgICAgdGFyZ2V0cy51bmNoZWNrZWRBcHBlbmQoc3RkOjpudWxsb3B0
KTsKICAgICB9CiAKICAgICByZXR1cm4geyB7IFdURk1vdmUoKmJhc2UpLCBXVEZNb3ZlKHRhcmdl
dHMpIH0gfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkdQVS9XZWJHUFVG
cmFnbWVudFN0YXRlLmggYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJHUFUvV2ViR1BVRnJhZ21l
bnRTdGF0ZS5oCmluZGV4IDI4N2JjYzQ3ZDk0YjRkZWY1MWNjZjZiMTBiYWM2OTc5ZjhkMjUzOWMu
LmNiYjQ4YzlhNDZlNmQwOTY5ZDE0Mzg4MDgyYjNhNTQ1YTUxZDRhNzIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvU2hhcmVkL1dlYkdQVS9XZWJHUFVGcmFnbWVudFN0YXRlLmgKKysrIGIvU291
cmNlL1dlYktpdC9TaGFyZWQvV2ViR1BVL1dlYkdQVUZyYWdtZW50U3RhdGUuaApAQCAtMzUsNyAr
MzUsNyBAQAogbmFtZXNwYWNlIFdlYktpdDo6V2ViR1BVIHsKIAogc3RydWN0IEZyYWdtZW50U3Rh
dGUgOiBwdWJsaWMgUHJvZ3JhbW1hYmxlU3RhZ2UgewotICAgIFZlY3RvcjxDb2xvclRhcmdldFN0
YXRlPiB0YXJnZXRzOworICAgIFZlY3RvcjxzdGQ6Om9wdGlvbmFsPENvbG9yVGFyZ2V0U3RhdGU+
PiB0YXJnZXRzOwogCiAgICAgdGVtcGxhdGU8Y2xhc3MgRW5jb2Rlcj4gdm9pZCBlbmNvZGUoRW5j
b2RlciYgZW5jb2RlcikgY29uc3QKICAgICB7CkBAIC01MCw3ICs1MCw3IEBAIHN0cnVjdCBGcmFn
bWVudFN0YXRlIDogcHVibGljIFByb2dyYW1tYWJsZVN0YWdlIHsKICAgICAgICAgaWYgKCFwcm9n
cmFtbWFibGVTdGFnZSkKICAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKLSAgICAg
ICAgc3RkOjpvcHRpb25hbDxWZWN0b3I8Q29sb3JUYXJnZXRTdGF0ZT4+IHRhcmdldHM7CisgICAg
ICAgIHN0ZDo6b3B0aW9uYWw8VmVjdG9yPHN0ZDo6b3B0aW9uYWw8Q29sb3JUYXJnZXRTdGF0ZT4+
PiB0YXJnZXRzOwogICAgICAgICBkZWNvZGVyID4+IHRhcmdldHM7CiAgICAgICAgIGlmICghdGFy
Z2V0cykKICAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1NoYXJlZC9XZWJHUFUvV2ViR1BVSW1hZ2VDb3B5RXh0ZXJuYWxJbWFnZS5jcHAg
Yi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJHUFUvV2ViR1BVSW1hZ2VDb3B5RXh0ZXJuYWxJbWFn
ZS5jcHAKaW5kZXggODY4NjgzZDFkNDk4YjVmYzExNzI0OTM3MWM1M2I0MThkM2NhMzFjZS4uYWM4
MjY4Y2U5YTlmMWZmYjNmMzcwMjg1NTFhZjE4ZjdkYTIxZmQzMyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9TaGFyZWQvV2ViR1BVL1dlYkdQVUltYWdlQ29weUV4dGVybmFsSW1hZ2UuY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkdQVS9XZWJHUFVJbWFnZUNvcHlFeHRlcm5hbElt
YWdlLmNwcApAQCAtMzgsMjQgKzM4LDI0IEBAIHN0ZDo6b3B0aW9uYWw8SW1hZ2VDb3B5RXh0ZXJu
YWxJbWFnZT4gQ29udmVydFRvQmFja2luZ0NvbnRleHQ6OmNvbnZlcnRUb0JhY2tpbmcoCiB7CiAg
ICAgc3RkOjpvcHRpb25hbDxPcmlnaW4yRD4gb3JpZ2luOwogICAgIGlmIChpbWFnZUNvcHlFeHRl
cm5hbEltYWdlLm9yaWdpbikgewotICAgICAgICBhdXRvIGNvbnZlcnRlZE9yaWdpbiA9IGNvbnZl
cnRUb0JhY2tpbmcoKmltYWdlQ29weUV4dGVybmFsSW1hZ2Uub3JpZ2luKTsKLSAgICAgICAgaWYg
KCFjb252ZXJ0ZWRPcmlnaW4pCisgICAgICAgIG9yaWdpbiA9IGNvbnZlcnRUb0JhY2tpbmcoKmlt
YWdlQ29weUV4dGVybmFsSW1hZ2Uub3JpZ2luKTsKKyAgICAgICAgaWYgKCFvcmlnaW4pCiAgICAg
ICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIH0KIAotICAgIHJldHVybiB7IHsgV1RG
TW92ZShvcmlnaW4pIH0gfTsKKyAgICByZXR1cm4geyB7IFdURk1vdmUob3JpZ2luKSwgaW1hZ2VD
b3B5RXh0ZXJuYWxJbWFnZS5mbGlwWSB9IH07CiB9CiAKIHN0ZDo6b3B0aW9uYWw8UEFMOjpXZWJH
UFU6OkltYWdlQ29weUV4dGVybmFsSW1hZ2U+IENvbnZlcnRGcm9tQmFja2luZ0NvbnRleHQ6OmNv
bnZlcnRGcm9tQmFja2luZyhjb25zdCBJbWFnZUNvcHlFeHRlcm5hbEltYWdlJiBpbWFnZUNvcHlF
eHRlcm5hbEltYWdlKQogewogICAgIHN0ZDo6b3B0aW9uYWw8UEFMOjpXZWJHUFU6Ok9yaWdpbjJE
PiBvcmlnaW47CiAgICAgaWYgKGltYWdlQ29weUV4dGVybmFsSW1hZ2Uub3JpZ2luKSB7Ci0gICAg
ICAgIGF1dG8gb3JpZ2luID0gY29udmVydEZyb21CYWNraW5nKCppbWFnZUNvcHlFeHRlcm5hbElt
YWdlLm9yaWdpbik7CisgICAgICAgIG9yaWdpbiA9IGNvbnZlcnRGcm9tQmFja2luZygqaW1hZ2VD
b3B5RXh0ZXJuYWxJbWFnZS5vcmlnaW4pOwogICAgICAgICBpZiAoIW9yaWdpbikKICAgICAgICAg
ICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgfQogCi0gICAgcmV0dXJuIHsgeyBXVEZNb3Zl
KG9yaWdpbikgfSB9OworICAgIHJldHVybiB7IHsgV1RGTW92ZShvcmlnaW4pLCBpbWFnZUNvcHlF
eHRlcm5hbEltYWdlLmZsaXBZIH0gfTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJHUFUvV2ViR1BVSW1hZ2VDb3B5RXh0ZXJu
YWxJbWFnZS5oIGIvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViR1BVL1dlYkdQVUltYWdlQ29weUV4
dGVybmFsSW1hZ2UuaAppbmRleCA1ZjI5NjZjMjZlY2YyZWZiZTU4ZGJiMzk0MzFmYTNiYWI1YThm
MDZlLi5kZmZlNWUwOGMxOGE3ZjEzMjBlYjIyMTZiNjU0MGE2YmFiZjBjZjI3IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJHUFUvV2ViR1BVSW1hZ2VDb3B5RXh0ZXJuYWxJbWFn
ZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkdQVS9XZWJHUFVJbWFnZUNvcHlFeHRl
cm5hbEltYWdlLmgKQEAgLTM2LDEwICszNiwxMiBAQCBuYW1lc3BhY2UgV2ViS2l0OjpXZWJHUFUg
ewogc3RydWN0IEltYWdlQ29weUV4dGVybmFsSW1hZ2UgewogICAgIC8vIEZJWE1FOiBIYW5kbGUg
dGhlIHNvdXJjZS4KICAgICBzdGQ6Om9wdGlvbmFsPE9yaWdpbjJEPiBvcmlnaW47CisgICAgYm9v
bCBmbGlwWSB7IGZhbHNlIH07CiAKICAgICB0ZW1wbGF0ZTxjbGFzcyBFbmNvZGVyPiB2b2lkIGVu
Y29kZShFbmNvZGVyJiBlbmNvZGVyKSBjb25zdAogICAgIHsKICAgICAgICAgZW5jb2RlciA8PCBv
cmlnaW47CisgICAgICAgIGVuY29kZXIgPDwgZmxpcFk7CiAgICAgfQogCiAgICAgdGVtcGxhdGU8
Y2xhc3MgRGVjb2Rlcj4gc3RhdGljIHN0ZDo6b3B0aW9uYWw8SW1hZ2VDb3B5RXh0ZXJuYWxJbWFn
ZT4gZGVjb2RlKERlY29kZXImIGRlY29kZXIpCkBAIC00OSw3ICs1MSwxMiBAQCBzdHJ1Y3QgSW1h
Z2VDb3B5RXh0ZXJuYWxJbWFnZSB7CiAgICAgICAgIGlmICghb3JpZ2luKQogICAgICAgICAgICAg
cmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAotICAgICAgICByZXR1cm4geyB7IFdURk1vdmUoKm9yaWdp
bikgfSB9OworICAgICAgICBzdGQ6Om9wdGlvbmFsPGJvb2w+IGZsaXBZOworICAgICAgICBkZWNv
ZGVyID4+IGZsaXBZOworICAgICAgICBpZiAoIWZsaXBZKQorICAgICAgICAgICAgcmV0dXJuIHN0
ZDo6bnVsbG9wdDsKKworICAgICAgICByZXR1cm4geyB7IFdURk1vdmUoKm9yaWdpbiksIFdURk1v
dmUoKmZsaXBZKSB9IH07CiAgICAgfQogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9T
aGFyZWQvV2ViR1BVL1dlYkdQVUltYWdlQ29weVRleHR1cmUuY3BwIGIvU291cmNlL1dlYktpdC9T
aGFyZWQvV2ViR1BVL1dlYkdQVUltYWdlQ29weVRleHR1cmUuY3BwCmluZGV4IDYwOTA4MTk1NzUz
MmZkM2YyN2JhMjIxOTE2YWI3YTcwNjczM2RlNzMuLmQzYzc1ZTQ2NDk0YTNjYjRmZjcwYjUxNDI3
YzkyMmNiNWU4M2EzM2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkdQVS9X
ZWJHUFVJbWFnZUNvcHlUZXh0dXJlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJH
UFUvV2ViR1BVSW1hZ2VDb3B5VGV4dHVyZS5jcHAKQEAgLTQyLDcgKzQyLDcgQEAgc3RkOjpvcHRp
b25hbDxJbWFnZUNvcHlUZXh0dXJlPiBDb252ZXJ0VG9CYWNraW5nQ29udGV4dDo6Y29udmVydFRv
QmFja2luZyhjb25zdAogCiAgICAgc3RkOjpvcHRpb25hbDxPcmlnaW4zRD4gb3JpZ2luOwogICAg
IGlmIChpbWFnZUNvcHlUZXh0dXJlLm9yaWdpbikgewotICAgICAgICBhdXRvIG9yaWdpbiA9IGNv
bnZlcnRUb0JhY2tpbmcoKmltYWdlQ29weVRleHR1cmUub3JpZ2luKTsKKyAgICAgICAgb3JpZ2lu
ID0gY29udmVydFRvQmFja2luZygqaW1hZ2VDb3B5VGV4dHVyZS5vcmlnaW4pOwogICAgICAgICBp
ZiAoIW9yaWdpbikKICAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgfQpAQCAt
NTgsNyArNTgsNyBAQCBzdGQ6Om9wdGlvbmFsPFBBTDo6V2ViR1BVOjpJbWFnZUNvcHlUZXh0dXJl
PiBDb252ZXJ0RnJvbUJhY2tpbmdDb250ZXh0Ojpjb252ZXJ0RgogCiAgICAgc3RkOjpvcHRpb25h
bDxQQUw6OldlYkdQVTo6T3JpZ2luM0Q+IG9yaWdpbjsKICAgICBpZiAoaW1hZ2VDb3B5VGV4dHVy
ZS5vcmlnaW4pIHsKLSAgICAgICAgYXV0byBvcmlnaW4gPSBjb252ZXJ0RnJvbUJhY2tpbmcoKmlt
YWdlQ29weVRleHR1cmUub3JpZ2luKTsKKyAgICAgICAgb3JpZ2luID0gY29udmVydEZyb21CYWNr
aW5nKCppbWFnZUNvcHlUZXh0dXJlLm9yaWdpbik7CiAgICAgICAgIGlmICghb3JpZ2luKQogICAg
ICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1NoYXJlZC9XZWJHUFUvV2ViR1BVUXVlcnlTZXREZXNjcmlwdG9yLmNwcCBiL1NvdXJj
ZS9XZWJLaXQvU2hhcmVkL1dlYkdQVS9XZWJHUFVRdWVyeVNldERlc2NyaXB0b3IuY3BwCmluZGV4
IGEwNzYxODIzMTM5ZTI5MmYwNTA2ZDdkZmU2YmE2N2M1YjkwOTE0NjQuLjJjNDJlYmFlY2E1YWJk
Y2I0ODY2NDI4YWU5ZTZhZDhkZWUwYWYzMjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hh
cmVkL1dlYkdQVS9XZWJHUFVRdWVyeVNldERlc2NyaXB0b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXQvU2hhcmVkL1dlYkdQVS9XZWJHUFVRdWVyeVNldERlc2NyaXB0b3IuY3BwCkBAIC00MCw3ICs0
MCw3IEBAIHN0ZDo6b3B0aW9uYWw8UXVlcnlTZXREZXNjcmlwdG9yPiBDb252ZXJ0VG9CYWNraW5n
Q29udGV4dDo6Y29udmVydFRvQmFja2luZyhjb25zCiAgICAgaWYgKCFiYXNlKQogICAgICAgICBy
ZXR1cm4gc3RkOjpudWxsb3B0OwogCi0gICAgcmV0dXJuIHsgeyBXVEZNb3ZlKCpiYXNlKSwgcXVl
cnlTZXREZXNjcmlwdG9yLnR5cGUsIHF1ZXJ5U2V0RGVzY3JpcHRvci5jb3VudCwgcXVlcnlTZXRE
ZXNjcmlwdG9yLnBpcGVsaW5lU3RhdGlzdGljcyB9IH07CisgICAgcmV0dXJuIHsgeyBXVEZNb3Zl
KCpiYXNlKSwgcXVlcnlTZXREZXNjcmlwdG9yLnR5cGUsIHF1ZXJ5U2V0RGVzY3JpcHRvci5jb3Vu
dCB9IH07CiB9CiAKIHN0ZDo6b3B0aW9uYWw8UEFMOjpXZWJHUFU6OlF1ZXJ5U2V0RGVzY3JpcHRv
cj4gQ29udmVydEZyb21CYWNraW5nQ29udGV4dDo6Y29udmVydEZyb21CYWNraW5nKGNvbnN0IFF1
ZXJ5U2V0RGVzY3JpcHRvciYgcXVlcnlTZXREZXNjcmlwdG9yKQpAQCAtNDksNyArNDksNyBAQCBz
dGQ6Om9wdGlvbmFsPFBBTDo6V2ViR1BVOjpRdWVyeVNldERlc2NyaXB0b3I+IENvbnZlcnRGcm9t
QmFja2luZ0NvbnRleHQ6OmNvbnZlcgogICAgIGlmICghYmFzZSkKICAgICAgICAgcmV0dXJuIHN0
ZDo6bnVsbG9wdDsKIAotICAgIHJldHVybiB7IHsgV1RGTW92ZSgqYmFzZSksIHF1ZXJ5U2V0RGVz
Y3JpcHRvci50eXBlLCBxdWVyeVNldERlc2NyaXB0b3IuY291bnQsIHF1ZXJ5U2V0RGVzY3JpcHRv
ci5waXBlbGluZVN0YXRpc3RpY3MgfSB9OworICAgIHJldHVybiB7IHsgV1RGTW92ZSgqYmFzZSks
IHF1ZXJ5U2V0RGVzY3JpcHRvci50eXBlLCBxdWVyeVNldERlc2NyaXB0b3IuY291bnQgfSB9Owog
fQogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hh
cmVkL1dlYkdQVS9XZWJHUFVRdWVyeVNldERlc2NyaXB0b3IuaCBiL1NvdXJjZS9XZWJLaXQvU2hh
cmVkL1dlYkdQVS9XZWJHUFVRdWVyeVNldERlc2NyaXB0b3IuaAppbmRleCAxZmQyOGNjOGI1MmNm
YWZjZWZiNGIyMzQwMzAyMGE0MTgxOWY3MTFjLi43NTc2NzlkNjU2ZmE3MjNjNzU3YTUxZmE5MzE4
Y2Y2YTY1ZDAxNmI3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJHUFUvV2Vi
R1BVUXVlcnlTZXREZXNjcmlwdG9yLmgKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViR1BV
L1dlYkdQVVF1ZXJ5U2V0RGVzY3JpcHRvci5oCkBAIC0zMCw3ICszMCw2IEBACiAjaW5jbHVkZSAi
V2ViR1BVT2JqZWN0RGVzY3JpcHRvckJhc2UuaCIKICNpbmNsdWRlIDxvcHRpb25hbD4KICNpbmNs
dWRlIDxwYWwvZ3JhcGhpY3MvV2ViR1BVL1dlYkdQVUludGVncmFsVHlwZXMuaD4KLSNpbmNsdWRl
IDxwYWwvZ3JhcGhpY3MvV2ViR1BVL1dlYkdQVVBpcGVsaW5lU3RhdGlzdGljTmFtZS5oPgogI2lu
Y2x1ZGUgPHBhbC9ncmFwaGljcy9XZWJHUFUvV2ViR1BVUXVlcnlUeXBlLmg+CiAjaW5jbHVkZSA8
d3RmL1ZlY3Rvci5oPgogCkBAIC0zOSwxNCArMzgsMTIgQEAgbmFtZXNwYWNlIFdlYktpdDo6V2Vi
R1BVIHsKIHN0cnVjdCBRdWVyeVNldERlc2NyaXB0b3IgOiBwdWJsaWMgT2JqZWN0RGVzY3JpcHRv
ckJhc2UgewogICAgIFBBTDo6V2ViR1BVOjpRdWVyeVR5cGUgdHlwZSB7IFBBTDo6V2ViR1BVOjpR
dWVyeVR5cGU6Ok9jY2x1c2lvbiB9OwogICAgIFBBTDo6V2ViR1BVOjpTaXplMzIgY291bnQgeyAw
IH07Ci0gICAgVmVjdG9yPFBBTDo6V2ViR1BVOjpQaXBlbGluZVN0YXRpc3RpY05hbWU+IHBpcGVs
aW5lU3RhdGlzdGljczsKIAogICAgIHRlbXBsYXRlPGNsYXNzIEVuY29kZXI+IHZvaWQgZW5jb2Rl
KEVuY29kZXImIGVuY29kZXIpIGNvbnN0CiAgICAgewogICAgICAgICBlbmNvZGVyIDw8IHN0YXRp
Y19jYXN0PGNvbnN0IE9iamVjdERlc2NyaXB0b3JCYXNlJj4oKnRoaXMpOwogICAgICAgICBlbmNv
ZGVyIDw8IHR5cGU7CiAgICAgICAgIGVuY29kZXIgPDwgY291bnQ7Ci0gICAgICAgIGVuY29kZXIg
PDwgcGlwZWxpbmVTdGF0aXN0aWNzOwogICAgIH0KIAogICAgIHRlbXBsYXRlPGNsYXNzIERlY29k
ZXI+IHN0YXRpYyBzdGQ6Om9wdGlvbmFsPFF1ZXJ5U2V0RGVzY3JpcHRvcj4gZGVjb2RlKERlY29k
ZXImIGRlY29kZXIpCkBAIC02NiwxMiArNjMsNyBAQCBzdHJ1Y3QgUXVlcnlTZXREZXNjcmlwdG9y
IDogcHVibGljIE9iamVjdERlc2NyaXB0b3JCYXNlIHsKICAgICAgICAgaWYgKCFjb3VudCkKICAg
ICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKLSAgICAgICAgc3RkOjpvcHRpb25hbDxW
ZWN0b3I8UEFMOjpXZWJHUFU6OlBpcGVsaW5lU3RhdGlzdGljTmFtZT4+IHBpcGVsaW5lU3RhdGlz
dGljczsKLSAgICAgICAgZGVjb2RlciA+PiBwaXBlbGluZVN0YXRpc3RpY3M7Ci0gICAgICAgIGlm
ICghcGlwZWxpbmVTdGF0aXN0aWNzKQotICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsK
LQotICAgICAgICByZXR1cm4geyB7IFdURk1vdmUoKm9iamVjdERlc2NyaXB0b3JCYXNlKSwgV1RG
TW92ZSgqdHlwZSksIFdURk1vdmUoKmNvdW50KSwgV1RGTW92ZSgqcGlwZWxpbmVTdGF0aXN0aWNz
KSB9IH07CisgICAgICAgIHJldHVybiB7IHsgV1RGTW92ZSgqb2JqZWN0RGVzY3JpcHRvckJhc2Up
LCBXVEZNb3ZlKCp0eXBlKSwgV1RGTW92ZSgqY291bnQpIH0gfTsKICAgICB9CiB9OwogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJHUFUvV2ViR1BVUmVuZGVyUGFzc0NvbG9y
QXR0YWNobWVudC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJHUFUvV2ViR1BVUmVuZGVy
UGFzc0NvbG9yQXR0YWNobWVudC5jcHAKaW5kZXggYzQ3NTBiZjdmNWU2MGRmNjlmNjQ2NjI3NDll
ODQ3NTNlYTBhYzI3Mi4uNWJiODZlMTYzN2RkNGQyN2MzZmFjNzdiMDU1NjFjYzdlMjNhNjc5MSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViR1BVL1dlYkdQVVJlbmRlclBhc3ND
b2xvckF0dGFjaG1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkdQVS9XZWJH
UFVSZW5kZXJQYXNzQ29sb3JBdHRhY2htZW50LmNwcApAQCAtNDcsMjAgKzQ3LDE0IEBAIHN0ZDo6
b3B0aW9uYWw8UmVuZGVyUGFzc0NvbG9yQXR0YWNobWVudD4gQ29udmVydFRvQmFja2luZ0NvbnRl
eHQ6OmNvbnZlcnRUb0JhY2tpCiAgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAg
IH0KIAotICAgIGF1dG8gbG9hZFZhbHVlID0gV1RGOjpzd2l0Y2hPbihyZW5kZXJQYXNzQ29sb3JB
dHRhY2htZW50LmxvYWRWYWx1ZSwgW10gKFBBTDo6V2ViR1BVOjpMb2FkT3AgbG9hZE9wKSAtPiBz
dGQ6Om9wdGlvbmFsPHN0ZDo6dmFyaWFudDxQQUw6OldlYkdQVTo6TG9hZE9wLCBWZWN0b3I8ZG91
YmxlPiwgQ29sb3JEaWN0Pj4gewotICAgICAgICByZXR1cm4geyB7IGxvYWRPcCB9IH07Ci0gICAg
fSwgW10gKGNvbnN0IFZlY3Rvcjxkb3VibGU+JiB2ZWN0b3IpIC0+IHN0ZDo6b3B0aW9uYWw8c3Rk
Ojp2YXJpYW50PFBBTDo6V2ViR1BVOjpMb2FkT3AsIFZlY3Rvcjxkb3VibGU+LCBDb2xvckRpY3Q+
PiB7Ci0gICAgICAgIHJldHVybiB7IHsgdmVjdG9yIH0gfTsKLSAgICB9LCBbdGhpc10gKGNvbnN0
IFBBTDo6V2ViR1BVOjpDb2xvckRpY3QmIGNvbG9yRGljdCkgLT4gc3RkOjpvcHRpb25hbDxzdGQ6
OnZhcmlhbnQ8UEFMOjpXZWJHUFU6OkxvYWRPcCwgVmVjdG9yPGRvdWJsZT4sIENvbG9yRGljdD4+
IHsKLSAgICAgICAgYXV0byBiYWNraW5nQ29sb3JEaWN0ID0gY29udmVydFRvQmFja2luZyhjb2xv
ckRpY3QpOwotICAgICAgICBpZiAoIWJhY2tpbmdDb2xvckRpY3QpCisgICAgc3RkOjpvcHRpb25h
bDxDb2xvcj4gY2xlYXJWYWx1ZTsKKyAgICBpZiAocmVuZGVyUGFzc0NvbG9yQXR0YWNobWVudC5j
bGVhclZhbHVlKSB7CisgICAgICAgIGNsZWFyVmFsdWUgPSBjb252ZXJ0VG9CYWNraW5nKCpyZW5k
ZXJQYXNzQ29sb3JBdHRhY2htZW50LmNsZWFyVmFsdWUpOworICAgICAgICBpZiAoIWNsZWFyVmFs
dWUpCiAgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwotICAgICAgICByZXR1cm4geyB7
IFdURk1vdmUoKmJhY2tpbmdDb2xvckRpY3QpIH0gfTsKLSAgICB9KTsKLSAgICBpZiAoIWxvYWRW
YWx1ZSkKLSAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKKyAgICB9CiAKLSAgICByZXR1cm4g
eyB7IHZpZXcsIHJlc29sdmVUYXJnZXQsIFdURk1vdmUoKmxvYWRWYWx1ZSksIHJlbmRlclBhc3ND
b2xvckF0dGFjaG1lbnQuc3RvcmVPcCB9IH07CisgICAgcmV0dXJuIHsgeyB2aWV3LCByZXNvbHZl
VGFyZ2V0LCBXVEZNb3ZlKGNsZWFyVmFsdWUpLCByZW5kZXJQYXNzQ29sb3JBdHRhY2htZW50Lmxv
YWRPcCwgcmVuZGVyUGFzc0NvbG9yQXR0YWNobWVudC5zdG9yZU9wIH0gfTsKIH0KIAogc3RkOjpv
cHRpb25hbDxQQUw6OldlYkdQVTo6UmVuZGVyUGFzc0NvbG9yQXR0YWNobWVudD4gQ29udmVydEZy
b21CYWNraW5nQ29udGV4dDo6Y29udmVydEZyb21CYWNraW5nKGNvbnN0IFJlbmRlclBhc3NDb2xv
ckF0dGFjaG1lbnQmIHJlbmRlclBhc3NDb2xvckF0dGFjaG1lbnQpCkBAIC03NiwyMCArNzAsMTQg
QEAgc3RkOjpvcHRpb25hbDxQQUw6OldlYkdQVTo6UmVuZGVyUGFzc0NvbG9yQXR0YWNobWVudD4g
Q29udmVydEZyb21CYWNraW5nQ29udGV4dDoKICAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxv
cHQ7CiAgICAgfQogCi0gICAgYXV0byBsb2FkVmFsdWUgPSBXVEY6OnN3aXRjaE9uKHJlbmRlclBh
c3NDb2xvckF0dGFjaG1lbnQubG9hZFZhbHVlLCBbXSAoUEFMOjpXZWJHUFU6OkxvYWRPcCBsb2Fk
T3ApIC0+IHN0ZDo6b3B0aW9uYWw8c3RkOjp2YXJpYW50PFBBTDo6V2ViR1BVOjpMb2FkT3AsIFZl
Y3Rvcjxkb3VibGU+LCBQQUw6OldlYkdQVTo6Q29sb3JEaWN0Pj4gewotICAgICAgICByZXR1cm4g
eyB7IGxvYWRPcCB9IH07Ci0gICAgfSwgW10gKGNvbnN0IFZlY3Rvcjxkb3VibGU+JiB2ZWN0b3Ip
IC0+IHN0ZDo6b3B0aW9uYWw8c3RkOjp2YXJpYW50PFBBTDo6V2ViR1BVOjpMb2FkT3AsIFZlY3Rv
cjxkb3VibGU+LCBQQUw6OldlYkdQVTo6Q29sb3JEaWN0Pj4gewotICAgICAgICByZXR1cm4geyB7
IHZlY3RvciB9IH07Ci0gICAgfSwgW3RoaXNdIChjb25zdCBDb2xvckRpY3QmIGNvbG9yRGljdCkg
LT4gc3RkOjpvcHRpb25hbDxzdGQ6OnZhcmlhbnQ8UEFMOjpXZWJHUFU6OkxvYWRPcCwgVmVjdG9y
PGRvdWJsZT4sIFBBTDo6V2ViR1BVOjpDb2xvckRpY3Q+PiB7Ci0gICAgICAgIGF1dG8gYmFja2lu
Z0NvbG9yRGljdCA9IGNvbnZlcnRGcm9tQmFja2luZyhjb2xvckRpY3QpOwotICAgICAgICBpZiAo
IWJhY2tpbmdDb2xvckRpY3QpCisgICAgc3RkOjpvcHRpb25hbDxQQUw6OldlYkdQVTo6Q29sb3I+
IGNsZWFyVmFsdWU7CisgICAgaWYgKHJlbmRlclBhc3NDb2xvckF0dGFjaG1lbnQuY2xlYXJWYWx1
ZSkgeworICAgICAgICBjbGVhclZhbHVlID0gY29udmVydEZyb21CYWNraW5nKCpyZW5kZXJQYXNz
Q29sb3JBdHRhY2htZW50LmNsZWFyVmFsdWUpOworICAgICAgICBpZiAoIWNsZWFyVmFsdWUpCiAg
ICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwotICAgICAgICByZXR1cm4geyB7IFdURk1v
dmUoKmJhY2tpbmdDb2xvckRpY3QpIH0gfTsKLSAgICB9KTsKLSAgICBpZiAoIWxvYWRWYWx1ZSkK
LSAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKKyAgICB9CiAKLSAgICByZXR1cm4geyB7ICp2
aWV3LCByZXNvbHZlVGFyZ2V0LCBXVEZNb3ZlKCpsb2FkVmFsdWUpLCByZW5kZXJQYXNzQ29sb3JB
dHRhY2htZW50LnN0b3JlT3AgfSB9OworICAgIHJldHVybiB7IHsgKnZpZXcsIHJlc29sdmVUYXJn
ZXQsIFdURk1vdmUoY2xlYXJWYWx1ZSksIHJlbmRlclBhc3NDb2xvckF0dGFjaG1lbnQubG9hZE9w
LCByZW5kZXJQYXNzQ29sb3JBdHRhY2htZW50LnN0b3JlT3AgfSB9OwogfQogCiB9IC8vIG5hbWVz
cGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkdQVS9XZWJH
UFVSZW5kZXJQYXNzQ29sb3JBdHRhY2htZW50LmggYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJH
UFUvV2ViR1BVUmVuZGVyUGFzc0NvbG9yQXR0YWNobWVudC5oCmluZGV4IGMxNmExNGZmMGQ0Njhj
NjM2ZjU2YzY2YTAxMzZjNzQxODMzYTBjMjAuLjdiZWE0MjQ4NjAwNDZjMmQyMDcxYWFhMjk5NTMz
OTcwODJiNjdlYWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkdQVS9XZWJH
UFVSZW5kZXJQYXNzQ29sb3JBdHRhY2htZW50LmgKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQv
V2ViR1BVL1dlYkdQVVJlbmRlclBhc3NDb2xvckF0dGFjaG1lbnQuaApAQCAtNDIsMTQgKzQyLDE2
IEBAIHN0cnVjdCBSZW5kZXJQYXNzQ29sb3JBdHRhY2htZW50IHsKICAgICBXZWJHUFVJZGVudGlm
aWVyIHZpZXc7CiAgICAgV2ViR1BVSWRlbnRpZmllciByZXNvbHZlVGFyZ2V0OwogCi0gICAgc3Rk
Ojp2YXJpYW50PFBBTDo6V2ViR1BVOjpMb2FkT3AsIFZlY3Rvcjxkb3VibGU+LCBDb2xvckRpY3Q+
IGxvYWRWYWx1ZTsKKyAgICBzdGQ6Om9wdGlvbmFsPENvbG9yPiBjbGVhclZhbHVlOworICAgIFBB
TDo6V2ViR1BVOjpMb2FkT3AgbG9hZE9wIHsgUEFMOjpXZWJHUFU6OkxvYWRPcDo6TG9hZCB9Owog
ICAgIFBBTDo6V2ViR1BVOjpTdG9yZU9wIHN0b3JlT3AgeyBQQUw6OldlYkdQVTo6U3RvcmVPcDo6
U3RvcmUgfTsKIAogICAgIHRlbXBsYXRlPGNsYXNzIEVuY29kZXI+IHZvaWQgZW5jb2RlKEVuY29k
ZXImIGVuY29kZXIpIGNvbnN0CiAgICAgewogICAgICAgICBlbmNvZGVyIDw8IHZpZXc7CiAgICAg
ICAgIGVuY29kZXIgPDwgcmVzb2x2ZVRhcmdldDsKLSAgICAgICAgZW5jb2RlciA8PCBsb2FkVmFs
dWU7CisgICAgICAgIGVuY29kZXIgPDwgY2xlYXJWYWx1ZTsKKyAgICAgICAgZW5jb2RlciA8PCBs
b2FkT3A7CiAgICAgICAgIGVuY29kZXIgPDwgc3RvcmVPcDsKICAgICB9CiAKQEAgLTY1LDkgKzY3
LDE0IEBAIHN0cnVjdCBSZW5kZXJQYXNzQ29sb3JBdHRhY2htZW50IHsKICAgICAgICAgaWYgKCFy
ZXNvbHZlVGFyZ2V0KQogICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAotICAgICAg
ICBzdGQ6Om9wdGlvbmFsPHN0ZDo6dmFyaWFudDxQQUw6OldlYkdQVTo6TG9hZE9wLCBWZWN0b3I8
ZG91YmxlPiwgQ29sb3JEaWN0Pj4gbG9hZFZhbHVlOwotICAgICAgICBkZWNvZGVyID4+IGxvYWRW
YWx1ZTsKLSAgICAgICAgaWYgKCFsb2FkVmFsdWUpCisgICAgICAgIHN0ZDo6b3B0aW9uYWw8c3Rk
OjpvcHRpb25hbDxDb2xvcj4+IGNsZWFyVmFsdWU7CisgICAgICAgIGRlY29kZXIgPj4gY2xlYXJW
YWx1ZTsKKyAgICAgICAgaWYgKCFjbGVhclZhbHVlKQorICAgICAgICAgICAgcmV0dXJuIHN0ZDo6
bnVsbG9wdDsKKworICAgICAgICBzdGQ6Om9wdGlvbmFsPFBBTDo6V2ViR1BVOjpMb2FkT3A+IGxv
YWRPcDsKKyAgICAgICAgZGVjb2RlciA+PiBsb2FkT3A7CisgICAgICAgIGlmICghbG9hZE9wKQog
ICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgICAgICBzdGQ6Om9wdGlvbmFs
PFBBTDo6V2ViR1BVOjpTdG9yZU9wPiBzdG9yZU9wOwpAQCAtNzUsNyArODIsNyBAQCBzdHJ1Y3Qg
UmVuZGVyUGFzc0NvbG9yQXR0YWNobWVudCB7CiAgICAgICAgIGlmICghc3RvcmVPcCkKICAgICAg
ICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKLSAgICAgICAgcmV0dXJuIHsgeyBXVEZNb3Zl
KCp2aWV3KSwgV1RGTW92ZSgqcmVzb2x2ZVRhcmdldCksIFdURk1vdmUoKmxvYWRWYWx1ZSksIFdU
Rk1vdmUoKnN0b3JlT3ApIH0gfTsKKyAgICAgICAgcmV0dXJuIHsgeyBXVEZNb3ZlKCp2aWV3KSwg
V1RGTW92ZSgqcmVzb2x2ZVRhcmdldCksIFdURk1vdmUoKmNsZWFyVmFsdWUpLCBXVEZNb3ZlKCps
b2FkT3ApLCBXVEZNb3ZlKCpzdG9yZU9wKSB9IH07CiAgICAgfQogfTsKIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9TaGFyZWQvV2ViR1BVL1dlYkdQVVJlbmRlclBhc3NEZXB0aFN0ZW5jaWxB
dHRhY2htZW50LmNwcCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkdQVS9XZWJHUFVSZW5kZXJQ
YXNzRGVwdGhTdGVuY2lsQXR0YWNobWVudC5jcHAKaW5kZXggMzY2NDFjZDY3NzY4MGM4ZmVjZjMx
YmZlNjkzZjE5NTAzODEyYWFiMi4uMjg1MWNjMmY0YTU4YjRmMjQ2Yzk0M2U1NWYzZDVjN2U1M2Mx
ZThhZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViR1BVL1dlYkdQVVJlbmRl
clBhc3NEZXB0aFN0ZW5jaWxBdHRhY2htZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJl
ZC9XZWJHUFUvV2ViR1BVUmVuZGVyUGFzc0RlcHRoU3RlbmNpbEF0dGFjaG1lbnQuY3BwCkBAIC00
MCw3ICs0MCw3IEBAIHN0ZDo6b3B0aW9uYWw8UmVuZGVyUGFzc0RlcHRoU3RlbmNpbEF0dGFjaG1l
bnQ+IENvbnZlcnRUb0JhY2tpbmdDb250ZXh0Ojpjb252ZXJ0CiAgICAgaWYgKCF2aWV3KQogICAg
ICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCi0gICAgcmV0dXJuIHsgeyB2aWV3LCByZW5kZXJQ
YXNzRGVwdGhTdGVuY2lsQXR0YWNobWVudC5kZXB0aExvYWRWYWx1ZSwgcmVuZGVyUGFzc0RlcHRo
U3RlbmNpbEF0dGFjaG1lbnQuZGVwdGhTdG9yZU9wLCByZW5kZXJQYXNzRGVwdGhTdGVuY2lsQXR0
YWNobWVudC5kZXB0aFJlYWRPbmx5LCByZW5kZXJQYXNzRGVwdGhTdGVuY2lsQXR0YWNobWVudC5z
dGVuY2lsTG9hZFZhbHVlLCByZW5kZXJQYXNzRGVwdGhTdGVuY2lsQXR0YWNobWVudC5zdGVuY2ls
U3RvcmVPcCwgcmVuZGVyUGFzc0RlcHRoU3RlbmNpbEF0dGFjaG1lbnQuc3RlbmNpbFJlYWRPbmx5
IH0gfTsKKyAgICByZXR1cm4geyB7IHZpZXcsIHJlbmRlclBhc3NEZXB0aFN0ZW5jaWxBdHRhY2ht
ZW50LmRlcHRoQ2xlYXJWYWx1ZSwgcmVuZGVyUGFzc0RlcHRoU3RlbmNpbEF0dGFjaG1lbnQuZGVw
dGhMb2FkT3AsIHJlbmRlclBhc3NEZXB0aFN0ZW5jaWxBdHRhY2htZW50LmRlcHRoU3RvcmVPcCwg
cmVuZGVyUGFzc0RlcHRoU3RlbmNpbEF0dGFjaG1lbnQuZGVwdGhSZWFkT25seSwgcmVuZGVyUGFz
c0RlcHRoU3RlbmNpbEF0dGFjaG1lbnQuc3RlbmNpbENsZWFyVmFsdWUsIHJlbmRlclBhc3NEZXB0
aFN0ZW5jaWxBdHRhY2htZW50LnN0ZW5jaWxMb2FkT3AsIHJlbmRlclBhc3NEZXB0aFN0ZW5jaWxB
dHRhY2htZW50LnN0ZW5jaWxTdG9yZU9wLCByZW5kZXJQYXNzRGVwdGhTdGVuY2lsQXR0YWNobWVu
dC5zdGVuY2lsUmVhZE9ubHkgfSB9OwogfQogCiBzdGQ6Om9wdGlvbmFsPFBBTDo6V2ViR1BVOjpS
ZW5kZXJQYXNzRGVwdGhTdGVuY2lsQXR0YWNobWVudD4gQ29udmVydEZyb21CYWNraW5nQ29udGV4
dDo6Y29udmVydEZyb21CYWNraW5nKGNvbnN0IFJlbmRlclBhc3NEZXB0aFN0ZW5jaWxBdHRhY2ht
ZW50JiByZW5kZXJQYXNzRGVwdGhTdGVuY2lsQXR0YWNobWVudCkKQEAgLTQ5LDcgKzQ5LDcgQEAg
c3RkOjpvcHRpb25hbDxQQUw6OldlYkdQVTo6UmVuZGVyUGFzc0RlcHRoU3RlbmNpbEF0dGFjaG1l
bnQ+IENvbnZlcnRGcm9tQmFja2luZ0MKICAgICBpZiAoIXZpZXcpCiAgICAgICAgIHJldHVybiBz
dGQ6Om51bGxvcHQ7CiAKLSAgICByZXR1cm4geyB7ICp2aWV3LCByZW5kZXJQYXNzRGVwdGhTdGVu
Y2lsQXR0YWNobWVudC5kZXB0aExvYWRWYWx1ZSwgcmVuZGVyUGFzc0RlcHRoU3RlbmNpbEF0dGFj
aG1lbnQuZGVwdGhTdG9yZU9wLCByZW5kZXJQYXNzRGVwdGhTdGVuY2lsQXR0YWNobWVudC5kZXB0
aFJlYWRPbmx5LCByZW5kZXJQYXNzRGVwdGhTdGVuY2lsQXR0YWNobWVudC5zdGVuY2lsTG9hZFZh
bHVlLCByZW5kZXJQYXNzRGVwdGhTdGVuY2lsQXR0YWNobWVudC5zdGVuY2lsU3RvcmVPcCwgcmVu
ZGVyUGFzc0RlcHRoU3RlbmNpbEF0dGFjaG1lbnQuc3RlbmNpbFJlYWRPbmx5IH0gfTsKKyAgICBy
ZXR1cm4geyB7ICp2aWV3LCByZW5kZXJQYXNzRGVwdGhTdGVuY2lsQXR0YWNobWVudC5kZXB0aENs
ZWFyVmFsdWUsIHJlbmRlclBhc3NEZXB0aFN0ZW5jaWxBdHRhY2htZW50LmRlcHRoTG9hZE9wLCBy
ZW5kZXJQYXNzRGVwdGhTdGVuY2lsQXR0YWNobWVudC5kZXB0aFN0b3JlT3AsIHJlbmRlclBhc3NE
ZXB0aFN0ZW5jaWxBdHRhY2htZW50LmRlcHRoUmVhZE9ubHksIHJlbmRlclBhc3NEZXB0aFN0ZW5j
aWxBdHRhY2htZW50LnN0ZW5jaWxDbGVhclZhbHVlLCByZW5kZXJQYXNzRGVwdGhTdGVuY2lsQXR0
YWNobWVudC5zdGVuY2lsTG9hZE9wLCByZW5kZXJQYXNzRGVwdGhTdGVuY2lsQXR0YWNobWVudC5z
dGVuY2lsU3RvcmVPcCwgcmVuZGVyUGFzc0RlcHRoU3RlbmNpbEF0dGFjaG1lbnQuc3RlbmNpbFJl
YWRPbmx5IH0gfTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1NoYXJlZC9XZWJHUFUvV2ViR1BVUmVuZGVyUGFzc0RlcHRoU3RlbmNpbEF0dGFj
aG1lbnQuaCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkdQVS9XZWJHUFVSZW5kZXJQYXNzRGVw
dGhTdGVuY2lsQXR0YWNobWVudC5oCmluZGV4IGJlNzE4ZDI4YjIzY2YwMzc2NDVmMWJkYzkwZjBj
NDJlYzdiMzQyN2YuLjVkNDczNzAyOWUyN2EyZjYzOWMyOTNkYjdlNTE4MGFkYTU0MzhmMGQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkdQVS9XZWJHUFVSZW5kZXJQYXNzRGVw
dGhTdGVuY2lsQXR0YWNobWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkdQVS9X
ZWJHUFVSZW5kZXJQYXNzRGVwdGhTdGVuY2lsQXR0YWNobWVudC5oCkBAIC00MCwyMSArNDAsMjUg
QEAgbmFtZXNwYWNlIFdlYktpdDo6V2ViR1BVIHsKIHN0cnVjdCBSZW5kZXJQYXNzRGVwdGhTdGVu
Y2lsQXR0YWNobWVudCB7CiAgICAgV2ViR1BVSWRlbnRpZmllciB2aWV3OwogCi0gICAgc3RkOjp2
YXJpYW50PFBBTDo6V2ViR1BVOjpMb2FkT3AsIGZsb2F0PiBkZXB0aExvYWRWYWx1ZTsKLSAgICBQ
QUw6OldlYkdQVTo6U3RvcmVPcCBkZXB0aFN0b3JlT3AgeyBQQUw6OldlYkdQVTo6U3RvcmVPcDo6
U3RvcmUgfTsKKyAgICBmbG9hdCBkZXB0aENsZWFyVmFsdWUgeyAwIH07CisgICAgc3RkOjpvcHRp
b25hbDxQQUw6OldlYkdQVTo6TG9hZE9wPiBkZXB0aExvYWRPcDsKKyAgICBzdGQ6Om9wdGlvbmFs
PFBBTDo6V2ViR1BVOjpTdG9yZU9wPiBkZXB0aFN0b3JlT3A7CiAgICAgYm9vbCBkZXB0aFJlYWRP
bmx5IHsgZmFsc2UgfTsKIAotICAgIHN0ZDo6dmFyaWFudDxQQUw6OldlYkdQVTo6TG9hZE9wLCBQ
QUw6OldlYkdQVTo6U3RlbmNpbFZhbHVlPiBzdGVuY2lsTG9hZFZhbHVlOwotICAgIFBBTDo6V2Vi
R1BVOjpTdG9yZU9wIHN0ZW5jaWxTdG9yZU9wIHsgUEFMOjpXZWJHUFU6OlN0b3JlT3A6OlN0b3Jl
IH07CisgICAgUEFMOjpXZWJHUFU6OlN0ZW5jaWxWYWx1ZSBzdGVuY2lsQ2xlYXJWYWx1ZSB7IDAg
fTsKKyAgICBzdGQ6Om9wdGlvbmFsPFBBTDo6V2ViR1BVOjpMb2FkT3A+IHN0ZW5jaWxMb2FkT3A7
CisgICAgc3RkOjpvcHRpb25hbDxQQUw6OldlYkdQVTo6U3RvcmVPcD4gc3RlbmNpbFN0b3JlT3A7
CiAgICAgYm9vbCBzdGVuY2lsUmVhZE9ubHkgeyBmYWxzZSB9OwogCiAgICAgdGVtcGxhdGU8Y2xh
c3MgRW5jb2Rlcj4gdm9pZCBlbmNvZGUoRW5jb2RlciYgZW5jb2RlcikgY29uc3QKICAgICB7CiAg
ICAgICAgIGVuY29kZXIgPDwgdmlldzsKLSAgICAgICAgZW5jb2RlciA8PCBkZXB0aExvYWRWYWx1
ZTsKKyAgICAgICAgZW5jb2RlciA8PCBkZXB0aENsZWFyVmFsdWU7CisgICAgICAgIGVuY29kZXIg
PDwgZGVwdGhMb2FkT3A7CiAgICAgICAgIGVuY29kZXIgPDwgZGVwdGhTdG9yZU9wOwogICAgICAg
ICBlbmNvZGVyIDw8IGRlcHRoUmVhZE9ubHk7Ci0gICAgICAgIGVuY29kZXIgPDwgc3RlbmNpbExv
YWRWYWx1ZTsKKyAgICAgICAgZW5jb2RlciA8PCBzdGVuY2lsQ2xlYXJWYWx1ZTsKKyAgICAgICAg
ZW5jb2RlciA8PCBzdGVuY2lsTG9hZE9wOwogICAgICAgICBlbmNvZGVyIDw8IHN0ZW5jaWxTdG9y
ZU9wOwogICAgICAgICBlbmNvZGVyIDw8IHN0ZW5jaWxSZWFkT25seTsKICAgICB9CkBAIC02Niwx
MiArNzAsMTcgQEAgc3RydWN0IFJlbmRlclBhc3NEZXB0aFN0ZW5jaWxBdHRhY2htZW50IHsKICAg
ICAgICAgaWYgKCF2aWV3KQogICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAotICAg
ICAgICBzdGQ6Om9wdGlvbmFsPHN0ZDo6dmFyaWFudDxQQUw6OldlYkdQVTo6TG9hZE9wLCBmbG9h
dD4+IGRlcHRoTG9hZFZhbHVlOwotICAgICAgICBkZWNvZGVyID4+IGRlcHRoTG9hZFZhbHVlOwot
ICAgICAgICBpZiAoIWRlcHRoTG9hZFZhbHVlKQorICAgICAgICBzdGQ6Om9wdGlvbmFsPGZsb2F0
PiBkZXB0aENsZWFyVmFsdWU7CisgICAgICAgIGRlY29kZXIgPj4gZGVwdGhDbGVhclZhbHVlOwor
ICAgICAgICBpZiAoIWRlcHRoQ2xlYXJWYWx1ZSkKICAgICAgICAgICAgIHJldHVybiBzdGQ6Om51
bGxvcHQ7CiAKLSAgICAgICAgc3RkOjpvcHRpb25hbDxQQUw6OldlYkdQVTo6U3RvcmVPcD4gZGVw
dGhTdG9yZU9wOworICAgICAgICBzdGQ6Om9wdGlvbmFsPHN0ZDo6b3B0aW9uYWw8UEFMOjpXZWJH
UFU6OkxvYWRPcD4+IGRlcHRoTG9hZE9wOworICAgICAgICBkZWNvZGVyID4+IGRlcHRoTG9hZE9w
OworICAgICAgICBpZiAoIWRlcHRoTG9hZE9wKQorICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVs
bG9wdDsKKworICAgICAgICBzdGQ6Om9wdGlvbmFsPHN0ZDo6b3B0aW9uYWw8UEFMOjpXZWJHUFU6
OlN0b3JlT3A+PiBkZXB0aFN0b3JlT3A7CiAgICAgICAgIGRlY29kZXIgPj4gZGVwdGhTdG9yZU9w
OwogICAgICAgICBpZiAoIWRlcHRoU3RvcmVPcCkKICAgICAgICAgICAgIHJldHVybiBzdGQ6Om51
bGxvcHQ7CkBAIC04MSwxMiArOTAsMTcgQEAgc3RydWN0IFJlbmRlclBhc3NEZXB0aFN0ZW5jaWxB
dHRhY2htZW50IHsKICAgICAgICAgaWYgKCFkZXB0aFJlYWRPbmx5KQogICAgICAgICAgICAgcmV0
dXJuIHN0ZDo6bnVsbG9wdDsKIAotICAgICAgICBzdGQ6Om9wdGlvbmFsPHN0ZDo6dmFyaWFudDxQ
QUw6OldlYkdQVTo6TG9hZE9wLCBQQUw6OldlYkdQVTo6U3RlbmNpbFZhbHVlPj4gc3RlbmNpbExv
YWRWYWx1ZTsKLSAgICAgICAgZGVjb2RlciA+PiBzdGVuY2lsTG9hZFZhbHVlOwotICAgICAgICBp
ZiAoIXN0ZW5jaWxMb2FkVmFsdWUpCisgICAgICAgIHN0ZDo6b3B0aW9uYWw8UEFMOjpXZWJHUFU6
OlN0ZW5jaWxWYWx1ZT4gc3RlbmNpbENsZWFyVmFsdWU7CisgICAgICAgIGRlY29kZXIgPj4gc3Rl
bmNpbENsZWFyVmFsdWU7CisgICAgICAgIGlmICghc3RlbmNpbENsZWFyVmFsdWUpCisgICAgICAg
ICAgICByZXR1cm4gc3RkOjpudWxsb3B0OworCisgICAgICAgIHN0ZDo6b3B0aW9uYWw8c3RkOjpv
cHRpb25hbDxQQUw6OldlYkdQVTo6TG9hZE9wPj4gc3RlbmNpbExvYWRPcDsKKyAgICAgICAgZGVj
b2RlciA+PiBzdGVuY2lsTG9hZE9wOworICAgICAgICBpZiAoIXN0ZW5jaWxMb2FkT3ApCiAgICAg
ICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCi0gICAgICAgIHN0ZDo6b3B0aW9uYWw8UEFM
OjpXZWJHUFU6OlN0b3JlT3A+IHN0ZW5jaWxTdG9yZU9wOworICAgICAgICBzdGQ6Om9wdGlvbmFs
PHN0ZDo6b3B0aW9uYWw8UEFMOjpXZWJHUFU6OlN0b3JlT3A+PiBzdGVuY2lsU3RvcmVPcDsKICAg
ICAgICAgZGVjb2RlciA+PiBzdGVuY2lsU3RvcmVPcDsKICAgICAgICAgaWYgKCFzdGVuY2lsU3Rv
cmVPcCkKICAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CkBAIC05Niw3ICsxMTAsNyBA
QCBzdHJ1Y3QgUmVuZGVyUGFzc0RlcHRoU3RlbmNpbEF0dGFjaG1lbnQgewogICAgICAgICBpZiAo
IXN0ZW5jaWxSZWFkT25seSkKICAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKLSAg
ICAgICAgcmV0dXJuIHsgeyBXVEZNb3ZlKCp2aWV3KSwgV1RGTW92ZSgqZGVwdGhMb2FkVmFsdWUp
LCBXVEZNb3ZlKCpkZXB0aFN0b3JlT3ApLCBXVEZNb3ZlKCpkZXB0aFJlYWRPbmx5KSwgV1RGTW92
ZSgqc3RlbmNpbExvYWRWYWx1ZSksIFdURk1vdmUoKnN0ZW5jaWxTdG9yZU9wKSwgV1RGTW92ZSgq
c3RlbmNpbFJlYWRPbmx5KSB9IH07CisgICAgICAgIHJldHVybiB7IHsgV1RGTW92ZSgqdmlldyks
IFdURk1vdmUoKmRlcHRoQ2xlYXJWYWx1ZSksIFdURk1vdmUoKmRlcHRoTG9hZE9wKSwgV1RGTW92
ZSgqZGVwdGhTdG9yZU9wKSwgV1RGTW92ZSgqZGVwdGhSZWFkT25seSksIFdURk1vdmUoKnN0ZW5j
aWxDbGVhclZhbHVlKSwgV1RGTW92ZSgqc3RlbmNpbExvYWRPcCksIFdURk1vdmUoKnN0ZW5jaWxT
dG9yZU9wKSwgV1RGTW92ZSgqc3RlbmNpbFJlYWRPbmx5KSB9IH07CiAgICAgfQogfTsKIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViR1BVL1dlYkdQVVJlbmRlclBhc3NEZXNj
cmlwdG9yLmNwcCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkdQVS9XZWJHUFVSZW5kZXJQYXNz
RGVzY3JpcHRvci5jcHAKaW5kZXggMTMyY2ZhNWI4ZmRjYzFiZDc4OWY2YWJiZWUyNmUyODQ2NDIy
NjJhNS4uNDg1ZWNjNThjMzQ3NDI4OWUwYjBiMDYwZGE2NzA2YzEzOWMzNWRhYiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViR1BVL1dlYkdQVVJlbmRlclBhc3NEZXNjcmlwdG9y
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJHUFUvV2ViR1BVUmVuZGVyUGFzc0Rl
c2NyaXB0b3IuY3BwCkBAIC00MCwxMyArNDAsMTYgQEAgc3RkOjpvcHRpb25hbDxSZW5kZXJQYXNz
RGVzY3JpcHRvcj4gQ29udmVydFRvQmFja2luZ0NvbnRleHQ6OmNvbnZlcnRUb0JhY2tpbmcoY28K
ICAgICBpZiAoIWJhc2UpCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKLSAgICBWZWN0
b3I8UmVuZGVyUGFzc0NvbG9yQXR0YWNobWVudD4gY29sb3JBdHRhY2htZW50czsKKyAgICBWZWN0
b3I8c3RkOjpvcHRpb25hbDxSZW5kZXJQYXNzQ29sb3JBdHRhY2htZW50Pj4gY29sb3JBdHRhY2ht
ZW50czsKICAgICBjb2xvckF0dGFjaG1lbnRzLnJlc2VydmVJbml0aWFsQ2FwYWNpdHkocmVuZGVy
UGFzc0Rlc2NyaXB0b3IuY29sb3JBdHRhY2htZW50cy5zaXplKCkpOwogICAgIGZvciAoY29uc3Qg
YXV0byYgY29sb3JBdHRhY2htZW50IDogcmVuZGVyUGFzc0Rlc2NyaXB0b3IuY29sb3JBdHRhY2ht
ZW50cykgewotICAgICAgICBhdXRvIGJhY2tpbmdDb2xvckF0dGFjaG1lbnQgPSBjb252ZXJ0VG9C
YWNraW5nKGNvbG9yQXR0YWNobWVudCk7Ci0gICAgICAgIGlmICghYmFja2luZ0NvbG9yQXR0YWNo
bWVudCkKLSAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7Ci0gICAgICAgIGNvbG9yQXR0
YWNobWVudHMudW5jaGVja2VkQXBwZW5kKFdURk1vdmUoKmJhY2tpbmdDb2xvckF0dGFjaG1lbnQp
KTsKKyAgICAgICAgaWYgKGNvbG9yQXR0YWNobWVudCkgeworICAgICAgICAgICAgYXV0byBiYWNr
aW5nQ29sb3JBdHRhY2htZW50ID0gY29udmVydFRvQmFja2luZygqY29sb3JBdHRhY2htZW50KTsK
KyAgICAgICAgICAgIGlmICghYmFja2luZ0NvbG9yQXR0YWNobWVudCkKKyAgICAgICAgICAgICAg
ICByZXR1cm4gc3RkOjpudWxsb3B0OworICAgICAgICAgICAgY29sb3JBdHRhY2htZW50cy51bmNo
ZWNrZWRBcHBlbmQoV1RGTW92ZSgqYmFja2luZ0NvbG9yQXR0YWNobWVudCkpOworICAgICAgICB9
IGVsc2UKKyAgICAgICAgICAgIGNvbG9yQXR0YWNobWVudHMudW5jaGVja2VkQXBwZW5kKHN0ZDo6
bnVsbG9wdCk7CiAgICAgfQogCiAgICAgc3RkOjpvcHRpb25hbDxSZW5kZXJQYXNzRGVwdGhTdGVu
Y2lsQXR0YWNobWVudD4gZGVwdGhTdGVuY2lsQXR0YWNobWVudDsKQEAgLTc2LDEzICs3OSwxNiBA
QCBzdGQ6Om9wdGlvbmFsPFBBTDo6V2ViR1BVOjpSZW5kZXJQYXNzRGVzY3JpcHRvcj4gQ29udmVy
dEZyb21CYWNraW5nQ29udGV4dDo6Y29udgogICAgIGlmICghYmFzZSkKICAgICAgICAgcmV0dXJu
IHN0ZDo6bnVsbG9wdDsKIAotICAgIFZlY3RvcjxQQUw6OldlYkdQVTo6UmVuZGVyUGFzc0NvbG9y
QXR0YWNobWVudD4gY29sb3JBdHRhY2htZW50czsKKyAgICBWZWN0b3I8c3RkOjpvcHRpb25hbDxQ
QUw6OldlYkdQVTo6UmVuZGVyUGFzc0NvbG9yQXR0YWNobWVudD4+IGNvbG9yQXR0YWNobWVudHM7
CiAgICAgY29sb3JBdHRhY2htZW50cy5yZXNlcnZlSW5pdGlhbENhcGFjaXR5KHJlbmRlclBhc3NE
ZXNjcmlwdG9yLmNvbG9yQXR0YWNobWVudHMuc2l6ZSgpKTsKICAgICBmb3IgKGNvbnN0IGF1dG8m
IGJhY2tpbmdDb2xvckF0dGFjaG1lbnQgOiByZW5kZXJQYXNzRGVzY3JpcHRvci5jb2xvckF0dGFj
aG1lbnRzKSB7Ci0gICAgICAgIGF1dG8gY29sb3JBdHRhY2htZW50ID0gY29udmVydEZyb21CYWNr
aW5nKGJhY2tpbmdDb2xvckF0dGFjaG1lbnQpOwotICAgICAgICBpZiAoIWNvbG9yQXR0YWNobWVu
dCkKLSAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7Ci0gICAgICAgIGNvbG9yQXR0YWNo
bWVudHMudW5jaGVja2VkQXBwZW5kKFdURk1vdmUoKmNvbG9yQXR0YWNobWVudCkpOworICAgICAg
ICBpZiAoYmFja2luZ0NvbG9yQXR0YWNobWVudCkgeworICAgICAgICAgICAgYXV0byBjb2xvckF0
dGFjaG1lbnQgPSBjb252ZXJ0RnJvbUJhY2tpbmcoKmJhY2tpbmdDb2xvckF0dGFjaG1lbnQpOwor
ICAgICAgICAgICAgaWYgKCFjb2xvckF0dGFjaG1lbnQpCisgICAgICAgICAgICAgICAgcmV0dXJu
IHN0ZDo6bnVsbG9wdDsKKyAgICAgICAgICAgIGNvbG9yQXR0YWNobWVudHMudW5jaGVja2VkQXBw
ZW5kKFdURk1vdmUoKmNvbG9yQXR0YWNobWVudCkpOworICAgICAgICB9IGVsc2UKKyAgICAgICAg
ICAgIGNvbG9yQXR0YWNobWVudHMudW5jaGVja2VkQXBwZW5kKHN0ZDo6bnVsbG9wdCk7CiAgICAg
fQogCiAgICAgYXV0byBkZXB0aFN0ZW5jaWxBdHRhY2htZW50ID0gKFsmXSAoKSAtPiBzdGQ6Om9w
dGlvbmFsPFBBTDo6V2ViR1BVOjpSZW5kZXJQYXNzRGVwdGhTdGVuY2lsQXR0YWNobWVudD4gewpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViR1BVL1dlYkdQVVJlbmRlclBhc3NE
ZXNjcmlwdG9yLmggYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJHUFUvV2ViR1BVUmVuZGVyUGFz
c0Rlc2NyaXB0b3IuaAppbmRleCBiN2U4ZjVkODRhMTYwOWQyZGI5NTAyZjc2YTNlNDhlNmViMGY2
NTliLi5kNWJjMzExY2Q3ODljYzc2YTk0MDFlMzc3ZTNjYzRmNWJkZjk2MGIwIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJHUFUvV2ViR1BVUmVuZGVyUGFzc0Rlc2NyaXB0b3Iu
aAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJHUFUvV2ViR1BVUmVuZGVyUGFzc0Rlc2Ny
aXB0b3IuaApAQCAtMzgsNyArMzgsNyBAQAogbmFtZXNwYWNlIFdlYktpdDo6V2ViR1BVIHsKIAog
c3RydWN0IFJlbmRlclBhc3NEZXNjcmlwdG9yIDogcHVibGljIE9iamVjdERlc2NyaXB0b3JCYXNl
IHsKLSAgICBWZWN0b3I8UmVuZGVyUGFzc0NvbG9yQXR0YWNobWVudD4gY29sb3JBdHRhY2htZW50
czsKKyAgICBWZWN0b3I8c3RkOjpvcHRpb25hbDxSZW5kZXJQYXNzQ29sb3JBdHRhY2htZW50Pj4g
Y29sb3JBdHRhY2htZW50czsKICAgICBzdGQ6Om9wdGlvbmFsPFJlbmRlclBhc3NEZXB0aFN0ZW5j
aWxBdHRhY2htZW50PiBkZXB0aFN0ZW5jaWxBdHRhY2htZW50OwogICAgIFdlYkdQVUlkZW50aWZp
ZXIgb2NjbHVzaW9uUXVlcnlTZXQ7CiAgICAgUmVuZGVyUGFzc1RpbWVzdGFtcFdyaXRlcyB0aW1l
c3RhbXBXcml0ZXM7CkBAIC01OSw3ICs1OSw3IEBAIHN0cnVjdCBSZW5kZXJQYXNzRGVzY3JpcHRv
ciA6IHB1YmxpYyBPYmplY3REZXNjcmlwdG9yQmFzZSB7CiAgICAgICAgIGlmICghb2JqZWN0RGVz
Y3JpcHRvckJhc2UpCiAgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCi0gICAgICAg
IHN0ZDo6b3B0aW9uYWw8VmVjdG9yPFJlbmRlclBhc3NDb2xvckF0dGFjaG1lbnQ+PiBjb2xvckF0
dGFjaG1lbnRzOworICAgICAgICBzdGQ6Om9wdGlvbmFsPFZlY3RvcjxzdGQ6Om9wdGlvbmFsPFJl
bmRlclBhc3NDb2xvckF0dGFjaG1lbnQ+Pj4gY29sb3JBdHRhY2htZW50czsKICAgICAgICAgZGVj
b2RlciA+PiBjb2xvckF0dGFjaG1lbnRzOwogICAgICAgICBpZiAoIWNvbG9yQXR0YWNobWVudHMp
CiAgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9TaGFyZWQvV2ViR1BVL1dlYkdQVVJlbmRlclBhc3NMYXlvdXQuaCBiL1NvdXJjZS9XZWJL
aXQvU2hhcmVkL1dlYkdQVS9XZWJHUFVSZW5kZXJQYXNzTGF5b3V0LmgKaW5kZXggZTljZjIyYmJh
ZTdlMjViMTY3NDdmY2ZmMjRmYmNhY2YwNjg5MDQzOC4uNGRhZmQ5Y2UxMjdhMmJjZDkxNzNiMTA0
NTcwNTJlYTNkZWNkZjJhNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViR1BV
L1dlYkdQVVJlbmRlclBhc3NMYXlvdXQuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJH
UFUvV2ViR1BVUmVuZGVyUGFzc0xheW91dC5oCkBAIC0zNiw3ICszNiw3IEBACiBuYW1lc3BhY2Ug
V2ViS2l0OjpXZWJHUFUgewogCiBzdHJ1Y3QgUmVuZGVyUGFzc0xheW91dCA6IHB1YmxpYyBPYmpl
Y3REZXNjcmlwdG9yQmFzZSB7Ci0gICAgVmVjdG9yPFBBTDo6V2ViR1BVOjpUZXh0dXJlRm9ybWF0
PiBjb2xvckZvcm1hdHM7CisgICAgVmVjdG9yPHN0ZDo6b3B0aW9uYWw8UEFMOjpXZWJHUFU6OlRl
eHR1cmVGb3JtYXQ+PiBjb2xvckZvcm1hdHM7CiAgICAgc3RkOjpvcHRpb25hbDxQQUw6OldlYkdQ
VTo6VGV4dHVyZUZvcm1hdD4gZGVwdGhTdGVuY2lsRm9ybWF0OwogICAgIFBBTDo6V2ViR1BVOjpT
aXplMzIgc2FtcGxlQ291bnQgeyAxIH07CiAKQEAgLTU1LDcgKzU1LDcgQEAgc3RydWN0IFJlbmRl
clBhc3NMYXlvdXQgOiBwdWJsaWMgT2JqZWN0RGVzY3JpcHRvckJhc2UgewogICAgICAgICBpZiAo
IW9iamVjdERlc2NyaXB0b3JCYXNlKQogICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsK
IAotICAgICAgICBzdGQ6Om9wdGlvbmFsPFZlY3RvcjxQQUw6OldlYkdQVTo6VGV4dHVyZUZvcm1h
dD4+IGNvbG9yRm9ybWF0czsKKyAgICAgICAgc3RkOjpvcHRpb25hbDxWZWN0b3I8c3RkOjpvcHRp
b25hbDxQQUw6OldlYkdQVTo6VGV4dHVyZUZvcm1hdD4+PiBjb2xvckZvcm1hdHM7CiAgICAgICAg
IGRlY29kZXIgPj4gY29sb3JGb3JtYXRzOwogICAgICAgICBpZiAoIWNvbG9yRm9ybWF0cykKICAg
ICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1NoYXJlZC9XZWJHUFUvV2ViR1BVU2hhZGVyTW9kdWxlQ29tcGlsYXRpb25IaW50LmNwcCBiL1Nv
dXJjZS9XZWJLaXQvU2hhcmVkL1dlYkdQVS9XZWJHUFVTaGFkZXJNb2R1bGVDb21waWxhdGlvbkhp
bnQuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjYwNGM3YjA0NWFmZTc0OTk2NmMyMjk2MzY2ZGNhZDYzODM5ZmMw
ZGQKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJHUFUvV2ViR1BV
U2hhZGVyTW9kdWxlQ29tcGlsYXRpb25IaW50LmNwcApAQCAtMCwwICsxLDU3IEBACisvKgorICog
Q29weXJpZ2h0IChDKSAyMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlv
bi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElU
UyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElO
Qy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElB
TCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YK
KyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
CisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisg
Ki8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIldlYkdQVVNoYWRlck1vZHVsZUNv
bXBpbGF0aW9uSGludC5oIgorCisjaWYgRU5BQkxFKEdQVV9QUk9DRVNTKQorCisjaW5jbHVkZSAi
V2ViR1BVQ29udmVydEZyb21CYWNraW5nQ29udGV4dC5oIgorI2luY2x1ZGUgIldlYkdQVUNvbnZl
cnRUb0JhY2tpbmdDb250ZXh0LmgiCisjaW5jbHVkZSA8cGFsL2dyYXBoaWNzL1dlYkdQVS9XZWJH
UFVTaGFkZXJNb2R1bGVDb21waWxhdGlvbkhpbnQuaD4KKworbmFtZXNwYWNlIFdlYktpdDo6V2Vi
R1BVIHsKKworc3RkOjpvcHRpb25hbDxTaGFkZXJNb2R1bGVDb21waWxhdGlvbkhpbnQ+IENvbnZl
cnRUb0JhY2tpbmdDb250ZXh0Ojpjb252ZXJ0VG9CYWNraW5nKGNvbnN0IFBBTDo6V2ViR1BVOjpT
aGFkZXJNb2R1bGVDb21waWxhdGlvbkhpbnQmIHNoYWRlck1vZHVsZUNvbXBpbGF0aW9uSGludCkK
K3sKKyAgICBXZWJHUFVJZGVudGlmaWVyIHBpcGVsaW5lTGF5b3V0ID0gY29udmVydFRvQmFja2lu
ZyhzaGFkZXJNb2R1bGVDb21waWxhdGlvbkhpbnQucGlwZWxpbmVMYXlvdXQpOworICAgIGlmICgh
cGlwZWxpbmVMYXlvdXQpCisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CisKKyAgICByZXR1
cm4geyB7IHBpcGVsaW5lTGF5b3V0IH0gfTsKK30KKworc3RkOjpvcHRpb25hbDxQQUw6OldlYkdQ
VTo6U2hhZGVyTW9kdWxlQ29tcGlsYXRpb25IaW50PiBDb252ZXJ0RnJvbUJhY2tpbmdDb250ZXh0
Ojpjb252ZXJ0RnJvbUJhY2tpbmcoY29uc3QgU2hhZGVyTW9kdWxlQ29tcGlsYXRpb25IaW50JiBz
aGFkZXJNb2R1bGVDb21waWxhdGlvbkhpbnQpCit7CisgICAgYXV0byogcGlwZWxpbmVMYXlvdXQg
PSBjb252ZXJ0UGlwZWxpbmVMYXlvdXRGcm9tQmFja2luZyhzaGFkZXJNb2R1bGVDb21waWxhdGlv
bkhpbnQucGlwZWxpbmVMYXlvdXQpOworICAgIGlmICghcGlwZWxpbmVMYXlvdXQpCisgICAgICAg
IHJldHVybiBzdGQ6Om51bGxvcHQ7CisKKyAgICByZXR1cm4geyB7ICpwaXBlbGluZUxheW91dCB9
IH07Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdAorCisjZW5kaWYgLy8gRU5BQkxFKEdQVV9Q
Uk9DRVNTKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViR1BVL1dlYkdQVVNo
YWRlck1vZHVsZUNvbXBpbGF0aW9uSGludC5oIGIvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViR1BV
L1dlYkdQVVNoYWRlck1vZHVsZUNvbXBpbGF0aW9uSGludC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmU4OTM2OWRm
ZWE0ZDAyNmY1Mzc0YWExMjIyNzJhMDZiZTQxM2U4OWIKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1NoYXJlZC9XZWJHUFUvV2ViR1BVU2hhZGVyTW9kdWxlQ29tcGlsYXRpb25IaW50
LmgKQEAgLTAsMCArMSw1NiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMSBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAq
IGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICog
QU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVY
RU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaWYgRU5B
QkxFKEdQVV9QUk9DRVNTKQorCisjaW5jbHVkZSAiV2ViR1BVSWRlbnRpZmllci5oIgorI2luY2x1
ZGUgPG9wdGlvbmFsPgorCituYW1lc3BhY2UgV2ViS2l0OjpXZWJHUFUgeworCitzdHJ1Y3QgU2hh
ZGVyTW9kdWxlQ29tcGlsYXRpb25IaW50IHsKKyAgICBXZWJHUFVJZGVudGlmaWVyIHBpcGVsaW5l
TGF5b3V0OworCisgICAgdGVtcGxhdGU8Y2xhc3MgRW5jb2Rlcj4gdm9pZCBlbmNvZGUoRW5jb2Rl
ciYgZW5jb2RlcikgY29uc3QKKyAgICB7CisgICAgICAgIGVuY29kZXIgPDwgcGlwZWxpbmVMYXlv
dXQ7CisgICAgfQorCisgICAgdGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4gc3RhdGljIHN0ZDo6b3B0
aW9uYWw8U2hhZGVyTW9kdWxlQ29tcGlsYXRpb25IaW50PiBkZWNvZGUoRGVjb2RlciYgZGVjb2Rl
cikKKyAgICB7CisgICAgICAgIHN0ZDo6b3B0aW9uYWw8V2ViR1BVSWRlbnRpZmllcj4gcGlwZWxp
bmVMYXlvdXQ7CisgICAgICAgIGRlY29kZXIgPj4gcGlwZWxpbmVMYXlvdXQ7CisgICAgICAgIGlm
ICghcGlwZWxpbmVMYXlvdXQpCisgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OworCisg
ICAgICAgIHJldHVybiB7IHsgV1RGTW92ZSgqcGlwZWxpbmVMYXlvdXQpIH0gfTsKKyAgICB9Cit9
OworCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQ6OldlYkdQVQorCisjZW5kaWYgLy8gRU5BQkxFKEdQ
VV9QUk9DRVNTKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViR1BVL1dlYkdQ
VVNoYWRlck1vZHVsZURlc2NyaXB0b3IuY3BwIGIvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViR1BV
L1dlYkdQVVNoYWRlck1vZHVsZURlc2NyaXB0b3IuY3BwCmluZGV4IDI2ZGJkNjc4ZWVkNjllYzdh
NTAzNTRkNTg3Y2RkZWM2ZmFjZWRiN2YuLmZiZmUyMGI3YjRjNmFlYjEwMWVjMDY3MzliNTM4M2Ni
NmFiOTJmMWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkdQVS9XZWJHUFVT
aGFkZXJNb2R1bGVEZXNjcmlwdG9yLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJH
UFUvV2ViR1BVU2hhZGVyTW9kdWxlRGVzY3JpcHRvci5jcHAKQEAgLTQwLDcgKzQwLDE2IEBAIHN0
ZDo6b3B0aW9uYWw8U2hhZGVyTW9kdWxlRGVzY3JpcHRvcj4gQ29udmVydFRvQmFja2luZ0NvbnRl
eHQ6OmNvbnZlcnRUb0JhY2tpbmcoCiAgICAgaWYgKCFiYXNlKQogICAgICAgICByZXR1cm4gc3Rk
OjpudWxsb3B0OwogCi0gICAgcmV0dXJuIHsgeyBXVEZNb3ZlKCpiYXNlKSwgc2hhZGVyTW9kdWxl
RGVzY3JpcHRvci5jb2RlIH0gfTsKKyAgICBWZWN0b3I8S2V5VmFsdWVQYWlyPFN0cmluZywgU2hh
ZGVyTW9kdWxlQ29tcGlsYXRpb25IaW50Pj4gaGludHM7CisgICAgaGludHMucmVzZXJ2ZUluaXRp
YWxDYXBhY2l0eShzaGFkZXJNb2R1bGVEZXNjcmlwdG9yLmhpbnRzLnNpemUoKSk7CisgICAgZm9y
IChjb25zdCBhdXRvJiBoaW50IDogc2hhZGVyTW9kdWxlRGVzY3JpcHRvci5oaW50cykgeworICAg
ICAgICBhdXRvIHZhbHVlID0gY29udmVydFRvQmFja2luZyhoaW50LnZhbHVlKTsKKyAgICAgICAg
aWYgKCF2YWx1ZSkKKyAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CisgICAgICAgIGhp
bnRzLnVuY2hlY2tlZEFwcGVuZChtYWtlS2V5VmFsdWVQYWlyKGhpbnQua2V5LCBXVEZNb3ZlKCp2
YWx1ZSkpKTsKKyAgICB9CisKKyAgICByZXR1cm4geyB7IFdURk1vdmUoKmJhc2UpLCBzaGFkZXJN
b2R1bGVEZXNjcmlwdG9yLmNvZGUsIFdURk1vdmUoaGludHMpIH0gfTsKIH0KIAogc3RkOjpvcHRp
b25hbDxQQUw6OldlYkdQVTo6U2hhZGVyTW9kdWxlRGVzY3JpcHRvcj4gQ29udmVydEZyb21CYWNr
aW5nQ29udGV4dDo6Y29udmVydEZyb21CYWNraW5nKGNvbnN0IFNoYWRlck1vZHVsZURlc2NyaXB0
b3ImIHNoYWRlck1vZHVsZURlc2NyaXB0b3IpCkBAIC00OSw3ICs1OCwxNiBAQCBzdGQ6Om9wdGlv
bmFsPFBBTDo6V2ViR1BVOjpTaGFkZXJNb2R1bGVEZXNjcmlwdG9yPiBDb252ZXJ0RnJvbUJhY2tp
bmdDb250ZXh0OjpjbwogICAgIGlmICghYmFzZSkKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9w
dDsKIAotICAgIHJldHVybiB7IHsgV1RGTW92ZSgqYmFzZSksIHNoYWRlck1vZHVsZURlc2NyaXB0
b3IuY29kZSB9IH07CisgICAgVmVjdG9yPEtleVZhbHVlUGFpcjxTdHJpbmcsIFBBTDo6V2ViR1BV
OjpTaGFkZXJNb2R1bGVDb21waWxhdGlvbkhpbnQ+PiBoaW50czsKKyAgICBoaW50cy5yZXNlcnZl
SW5pdGlhbENhcGFjaXR5KHNoYWRlck1vZHVsZURlc2NyaXB0b3IuaGludHMuc2l6ZSgpKTsKKyAg
ICBmb3IgKGNvbnN0IGF1dG8mIGhpbnQgOiBzaGFkZXJNb2R1bGVEZXNjcmlwdG9yLmhpbnRzKSB7
CisgICAgICAgIGF1dG8gdmFsdWUgPSBjb252ZXJ0RnJvbUJhY2tpbmcoaGludC52YWx1ZSk7Cisg
ICAgICAgIGlmICghdmFsdWUpCisgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OworICAg
ICAgICBoaW50cy51bmNoZWNrZWRBcHBlbmQobWFrZUtleVZhbHVlUGFpcihoaW50LmtleSwgV1RG
TW92ZSgqdmFsdWUpKSk7CisgICAgfQorCisgICAgcmV0dXJuIHsgeyBXVEZNb3ZlKCpiYXNlKSwg
c2hhZGVyTW9kdWxlRGVzY3JpcHRvci5jb2RlLCBXVEZNb3ZlKGhpbnRzKSB9IH07CiB9CiAKIH0g
Ly8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvV2Vi
R1BVL1dlYkdQVVNoYWRlck1vZHVsZURlc2NyaXB0b3IuaCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVk
L1dlYkdQVS9XZWJHUFVTaGFkZXJNb2R1bGVEZXNjcmlwdG9yLmgKaW5kZXggNWM4MWI0ZGM0MmFk
Zjk0OWQ0NTJhZTU5Njg1NjYwMjczNzViOGE0Yi4uODYwZTBiYTk1M2QwYTExNzczNGFjNzE1MmI1
OWEzMzgzZjUwZDg4NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViR1BVL1dl
YkdQVVNoYWRlck1vZHVsZURlc2NyaXB0b3IuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9X
ZWJHUFUvV2ViR1BVU2hhZGVyTW9kdWxlRGVzY3JpcHRvci5oCkBAIC0yOCw2ICsyOCw3IEBACiAj
aWYgRU5BQkxFKEdQVV9QUk9DRVNTKQogCiAjaW5jbHVkZSAiV2ViR1BVT2JqZWN0RGVzY3JpcHRv
ckJhc2UuaCIKKyNpbmNsdWRlICJXZWJHUFVTaGFkZXJNb2R1bGVDb21waWxhdGlvbkhpbnQuaCIK
ICNpbmNsdWRlIDxvcHRpb25hbD4KICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KIApA
QCAtMzYsMTEgKzM3LDEzIEBAIG5hbWVzcGFjZSBXZWJLaXQ6OldlYkdQVSB7CiBzdHJ1Y3QgU2hh
ZGVyTW9kdWxlRGVzY3JpcHRvciA6IHB1YmxpYyBPYmplY3REZXNjcmlwdG9yQmFzZSB7CiAgICAg
U3RyaW5nIGNvZGU7CiAgICAgLy8gRklYTUU6IEhvb2sgdXAgdGhlIHNvdXJjZU1hcC4KKyAgICBW
ZWN0b3I8S2V5VmFsdWVQYWlyPFN0cmluZywgU2hhZGVyTW9kdWxlQ29tcGlsYXRpb25IaW50Pj4g
aGludHM7CiAKICAgICB0ZW1wbGF0ZTxjbGFzcyBFbmNvZGVyPiB2b2lkIGVuY29kZShFbmNvZGVy
JiBlbmNvZGVyKSBjb25zdAogICAgIHsKICAgICAgICAgZW5jb2RlciA8PCBzdGF0aWNfY2FzdDxj
b25zdCBPYmplY3REZXNjcmlwdG9yQmFzZSY+KCp0aGlzKTsKICAgICAgICAgZW5jb2RlciA8PCBj
b2RlOworICAgICAgICBlbmNvZGVyIDw8IGhpbnRzOwogICAgIH0KIAogICAgIHRlbXBsYXRlPGNs
YXNzIERlY29kZXI+IHN0YXRpYyBzdGQ6Om9wdGlvbmFsPFNoYWRlck1vZHVsZURlc2NyaXB0b3I+
IGRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQpAQCAtNTUsNyArNTgsMTIgQEAgc3RydWN0IFNoYWRl
ck1vZHVsZURlc2NyaXB0b3IgOiBwdWJsaWMgT2JqZWN0RGVzY3JpcHRvckJhc2UgewogICAgICAg
ICBpZiAoIWNvZGUpCiAgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCi0gICAgICAg
IHJldHVybiB7IHsgV1RGTW92ZSgqb2JqZWN0RGVzY3JpcHRvckJhc2UpLCBXVEZNb3ZlKCpjb2Rl
KSB9IH07CisgICAgICAgIHN0ZDo6b3B0aW9uYWw8VmVjdG9yPEtleVZhbHVlUGFpcjxTdHJpbmcs
IFNoYWRlck1vZHVsZUNvbXBpbGF0aW9uSGludD4+PiBoaW50czsKKyAgICAgICAgZGVjb2RlciA+
PiBoaW50czsKKyAgICAgICAgaWYgKCFoaW50cykKKyAgICAgICAgICAgIHJldHVybiBzdGQ6Om51
bGxvcHQ7CisKKyAgICAgICAgcmV0dXJuIHsgeyBXVEZNb3ZlKCpvYmplY3REZXNjcmlwdG9yQmFz
ZSksIFdURk1vdmUoKmNvZGUpLCBXVEZNb3ZlKCpoaW50cykgfSB9OwogICAgIH0KIH07CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkdQVS9XZWJHUFVUZXh0dXJlRGVzY3Jp
cHRvci5jcHAgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJHUFUvV2ViR1BVVGV4dHVyZURlc2Ny
aXB0b3IuY3BwCmluZGV4IGJmNmI0ZDM1NjJlNzA3OGExYTRlNTRhY2RlZGMwNWQ5MGQ1ZjFlYTIu
LmNjMDMyMzExYTFkNjQxOWViMGI1Mjg0N2Y2ZTk2NmJhNzY1MjY4MTQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvU2hhcmVkL1dlYkdQVS9XZWJHUFVUZXh0dXJlRGVzY3JpcHRvci5jcHAKKysr
IGIvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViR1BVL1dlYkdQVVRleHR1cmVEZXNjcmlwdG9yLmNw
cApAQCAtNDQsNyArNDQsNyBAQCBzdGQ6Om9wdGlvbmFsPFRleHR1cmVEZXNjcmlwdG9yPiBDb252
ZXJ0VG9CYWNraW5nQ29udGV4dDo6Y29udmVydFRvQmFja2luZyhjb25zdAogICAgIGlmICghc2l6
ZSkKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAotICAgIHJldHVybiB7IHsgV1RGTW92
ZSgqYmFzZSksIFdURk1vdmUoKnNpemUpLCB0ZXh0dXJlRGVzY3JpcHRvci5taXBMZXZlbENvdW50
LCB0ZXh0dXJlRGVzY3JpcHRvci5zYW1wbGVDb3VudCwgdGV4dHVyZURlc2NyaXB0b3IuZGltZW5z
aW9uLCB0ZXh0dXJlRGVzY3JpcHRvci5mb3JtYXQsIHRleHR1cmVEZXNjcmlwdG9yLnVzYWdlIH0g
fTsKKyAgICByZXR1cm4geyB7IFdURk1vdmUoKmJhc2UpLCBXVEZNb3ZlKCpzaXplKSwgdGV4dHVy
ZURlc2NyaXB0b3IubWlwTGV2ZWxDb3VudCwgdGV4dHVyZURlc2NyaXB0b3Iuc2FtcGxlQ291bnQs
IHRleHR1cmVEZXNjcmlwdG9yLmRpbWVuc2lvbiwgdGV4dHVyZURlc2NyaXB0b3IuZm9ybWF0LCB0
ZXh0dXJlRGVzY3JpcHRvci51c2FnZSwgdGV4dHVyZURlc2NyaXB0b3Iudmlld0Zvcm1hdHMgfSB9
OwogfQogCiBzdGQ6Om9wdGlvbmFsPFBBTDo6V2ViR1BVOjpUZXh0dXJlRGVzY3JpcHRvcj4gQ29u
dmVydEZyb21CYWNraW5nQ29udGV4dDo6Y29udmVydEZyb21CYWNraW5nKGNvbnN0IFRleHR1cmVE
ZXNjcmlwdG9yJiB0ZXh0dXJlRGVzY3JpcHRvcikKQEAgLTU3LDcgKzU3LDcgQEAgc3RkOjpvcHRp
b25hbDxQQUw6OldlYkdQVTo6VGV4dHVyZURlc2NyaXB0b3I+IENvbnZlcnRGcm9tQmFja2luZ0Nv
bnRleHQ6OmNvbnZlcnQKICAgICBpZiAoIXNpemUpCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxv
cHQ7CiAKLSAgICByZXR1cm4geyB7IFdURk1vdmUoKmJhc2UpLCBXVEZNb3ZlKCpzaXplKSwgdGV4
dHVyZURlc2NyaXB0b3IubWlwTGV2ZWxDb3VudCwgdGV4dHVyZURlc2NyaXB0b3Iuc2FtcGxlQ291
bnQsIHRleHR1cmVEZXNjcmlwdG9yLmRpbWVuc2lvbiwgdGV4dHVyZURlc2NyaXB0b3IuZm9ybWF0
LCB0ZXh0dXJlRGVzY3JpcHRvci51c2FnZSB9IH07CisgICAgcmV0dXJuIHsgeyBXVEZNb3ZlKCpi
YXNlKSwgV1RGTW92ZSgqc2l6ZSksIHRleHR1cmVEZXNjcmlwdG9yLm1pcExldmVsQ291bnQsIHRl
eHR1cmVEZXNjcmlwdG9yLnNhbXBsZUNvdW50LCB0ZXh0dXJlRGVzY3JpcHRvci5kaW1lbnNpb24s
IHRleHR1cmVEZXNjcmlwdG9yLmZvcm1hdCwgdGV4dHVyZURlc2NyaXB0b3IudXNhZ2UsIHRleHR1
cmVEZXNjcmlwdG9yLnZpZXdGb3JtYXRzIH0gfTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJHUFUvV2ViR1BVVGV4dHVyZURl
c2NyaXB0b3IuaCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkdQVS9XZWJHUFVUZXh0dXJlRGVz
Y3JpcHRvci5oCmluZGV4IGQ5ZWNlZmVkMGE4M2NiNWY5NDMwMjc1ODBhMWQxMzg3MDhjN2EwZTMu
LjdjNGRiNDNkYjRhMGU3YzE1M2VjZWU5NDQzOTcxNWNjMDI5ZjVhMjAgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvU2hhcmVkL1dlYkdQVS9XZWJHUFVUZXh0dXJlRGVzY3JpcHRvci5oCisrKyBi
L1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkdQVS9XZWJHUFVUZXh0dXJlRGVzY3JpcHRvci5oCkBA
IC00NCw2ICs0NCw3IEBAIHN0cnVjdCBUZXh0dXJlRGVzY3JpcHRvciA6IHB1YmxpYyBPYmplY3RE
ZXNjcmlwdG9yQmFzZSB7CiAgICAgUEFMOjpXZWJHUFU6OlRleHR1cmVEaW1lbnNpb24gZGltZW5z
aW9uIHsgUEFMOjpXZWJHUFU6OlRleHR1cmVEaW1lbnNpb246Ol8yZCB9OwogICAgIFBBTDo6V2Vi
R1BVOjpUZXh0dXJlRm9ybWF0IGZvcm1hdCB7IFBBTDo6V2ViR1BVOjpUZXh0dXJlRm9ybWF0OjpS
OHVub3JtIH07CiAgICAgUEFMOjpXZWJHUFU6OlRleHR1cmVVc2FnZUZsYWdzIHVzYWdlOworICAg
IFZlY3RvcjxQQUw6OldlYkdQVTo6VGV4dHVyZUZvcm1hdD4gdmlld0Zvcm1hdHM7CiAKICAgICB0
ZW1wbGF0ZTxjbGFzcyBFbmNvZGVyPiB2b2lkIGVuY29kZShFbmNvZGVyJiBlbmNvZGVyKSBjb25z
dAogICAgIHsKQEAgLTU0LDYgKzU1LDcgQEAgc3RydWN0IFRleHR1cmVEZXNjcmlwdG9yIDogcHVi
bGljIE9iamVjdERlc2NyaXB0b3JCYXNlIHsKICAgICAgICAgZW5jb2RlciA8PCBkaW1lbnNpb247
CiAgICAgICAgIGVuY29kZXIgPDwgZm9ybWF0OwogICAgICAgICBlbmNvZGVyIDw8IHVzYWdlOwor
ICAgICAgICBlbmNvZGVyIDw8IHZpZXdGb3JtYXRzOwogICAgIH0KIAogICAgIHRlbXBsYXRlPGNs
YXNzIERlY29kZXI+IHN0YXRpYyBzdGQ6Om9wdGlvbmFsPFRleHR1cmVEZXNjcmlwdG9yPiBkZWNv
ZGUoRGVjb2RlciYgZGVjb2RlcikKQEAgLTkzLDcgKzk1LDEyIEBAIHN0cnVjdCBUZXh0dXJlRGVz
Y3JpcHRvciA6IHB1YmxpYyBPYmplY3REZXNjcmlwdG9yQmFzZSB7CiAgICAgICAgIGlmICghdXNh
Z2UpCiAgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCi0gICAgICAgIHJldHVybiB7
IHsgV1RGTW92ZSgqb2JqZWN0RGVzY3JpcHRvckJhc2UpLCBXVEZNb3ZlKCpzaXplKSwgV1RGTW92
ZSgqbWlwTGV2ZWxDb3VudCksIFdURk1vdmUoKnNhbXBsZUNvdW50KSwgV1RGTW92ZSgqZGltZW5z
aW9uKSwgV1RGTW92ZSgqZm9ybWF0KSwgV1RGTW92ZSgqdXNhZ2UpIH0gfTsKKyAgICAgICAgc3Rk
OjpvcHRpb25hbDxWZWN0b3I8UEFMOjpXZWJHUFU6OlRleHR1cmVGb3JtYXQ+PiB2aWV3Rm9ybWF0
czsKKyAgICAgICAgZGVjb2RlciA+PiB2aWV3Rm9ybWF0czsKKyAgICAgICAgaWYgKCF2aWV3Rm9y
bWF0cykKKyAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CisKKyAgICAgICAgcmV0dXJu
IHsgeyBXVEZNb3ZlKCpvYmplY3REZXNjcmlwdG9yQmFzZSksIFdURk1vdmUoKnNpemUpLCBXVEZN
b3ZlKCptaXBMZXZlbENvdW50KSwgV1RGTW92ZSgqc2FtcGxlQ291bnQpLCBXVEZNb3ZlKCpkaW1l
bnNpb24pLCBXVEZNb3ZlKCpmb3JtYXQpLCBXVEZNb3ZlKCp1c2FnZSksIFdURk1vdmUoKnZpZXdG
b3JtYXRzKSB9IH07CiAgICAgfQogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9Tb3Vy
Y2VzLnR4dCBiL1NvdXJjZS9XZWJLaXQvU291cmNlcy50eHQKaW5kZXggZjM4YjNlZDcwMTUxZjY4
MjU5YjEzMzU1N2UyNTNmYTkzNTllYjEwZC4uYzczMjBiMTAyZTdkOGYyYjZmZWY4ZDJiNDZmY2M4
YjllZDdkMTA5YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9Tb3VyY2VzLnR4dAorKysgYi9T
b3VyY2UvV2ViS2l0L1NvdXJjZXMudHh0CkBAIC0zODMsNiArMzgzLDcgQEAgU2hhcmVkL1dlYkdQ
VS9XZWJHUFVSZW5kZXJQaXBlbGluZURlc2NyaXB0b3IuY3BwCiBTaGFyZWQvV2ViR1BVL1dlYkdQ
VVJlcXVlc3RBZGFwdGVyT3B0aW9ucy5jcHAKIFNoYXJlZC9XZWJHUFUvV2ViR1BVU2FtcGxlckJp
bmRpbmdMYXlvdXQuY3BwCiBTaGFyZWQvV2ViR1BVL1dlYkdQVVNhbXBsZXJEZXNjcmlwdG9yLmNw
cAorU2hhcmVkL1dlYkdQVS9XZWJHUFVTaGFkZXJNb2R1bGVDb21waWxhdGlvbkhpbnQuY3BwCiBT
aGFyZWQvV2ViR1BVL1dlYkdQVVNoYWRlck1vZHVsZURlc2NyaXB0b3IuY3BwCiBTaGFyZWQvV2Vi
R1BVL1dlYkdQVVN0ZW5jaWxGYWNlU3RhdGUuY3BwCiBTaGFyZWQvV2ViR1BVL1dlYkdQVVN0b3Jh
Z2VUZXh0dXJlQmluZGluZ0xheW91dC5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2Vi
S2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IGNjMjk2MDk3YTg3NjM4ZmE2ZWYzZTg2MGI3ODMy
ZWFmOGViOWVkYmEuLmQxNTIzY2Q1MjJjNzg2NmE3NzA1MTllNDZmNTUyYWU1YjkyYTI1MDggMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oK
KysrIGIvU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAt
MzM3MSw2ICszMzcxLDggQEAKIAkJMUNEREZDN0MyNzU1ODY2RDAwQzkzQzYyIC8qIFJlbW90ZUdQ
VVByb3h5TWVzc2FnZXNSZXBsaWVzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJlbW90ZUdQVVByb3h5TWVz
c2FnZXNSZXBsaWVzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTFDRERGQzdEMjc1
NTg2NkQwMEM5M0M2MiAvKiBSZW1vdGVHUFVQcm94eU1lc3NhZ2VSZWNlaXZlci5jcHAgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5jcHA7IHBhdGggPSBSZW1vdGVHUFVQcm94eU1lc3NhZ2VSZWNlaXZlci5jcHA7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTFDRERGQzdFMjc1NTg2NkQwMEM5M0M2MiAvKiBSZW1vdGVH
UFVQcm94eU1lc3NhZ2VzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJlbW90ZUdQVVByb3h5TWVzc2FnZXMu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMUNFRjQ1QkIyN0JDQTQ2QTAwQzNBNkJD
IC8qIFdlYkdQVVNoYWRlck1vZHVsZUNvbXBpbGF0aW9uSGludC5jcHAgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBh
dGggPSBXZWJHUFVTaGFkZXJNb2R1bGVDb21waWxhdGlvbkhpbnQuY3BwOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OworCQkxQ0VGNDVCQzI3QkNBNDZBMDBDM0E2QkMgLyogV2ViR1BVU2hhZGVy
TW9kdWxlQ29tcGlsYXRpb25IaW50LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYkdQVVNoYWRlck1vZHVs
ZUNvbXBpbGF0aW9uSGludC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkxQ0YxOEYz
RTI2QkI1RDkwMDA0QjE3MjIgLyogTG9nSW5pdGlhbGl6YXRpb24uY3BwICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBw
YXRoID0gTG9nSW5pdGlhbGl6YXRpb24uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQkxRDA1MzBDOTI1OEVBQjQ0MDBFNDM2RjcgLyogY29tYmluZS1mZWF0dXJlLWZsYWdzLXBsaXN0
LnB5ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4
dC5zY3JpcHQucHl0aG9uOyBwYXRoID0gImNvbWJpbmUtZmVhdHVyZS1mbGFncy1wbGlzdC5weSI7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTFEMDUzMEQxMjU5MTYyQzgwMEU0MzZGNyAv
KiBXZWJLaXQtaW9zLnBsaXN0ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93
bkZpbGVUeXBlID0gdGV4dC5wbGlzdC54bWw7IHBhdGggPSAiV2ViS2l0LWlvcy5wbGlzdCI7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC03OTc3LDYgKzc5NzksOCBAQAogCQkJCTFDQjc0
NjY3Mjc0MzlDQUUwMEYxOTg3NCAvKiBXZWJHUFVTYW1wbGVyQmluZGluZ0xheW91dC5oICovLAog
CQkJCTFDOThDMENDMjc0NjI2ODAwMDJDQ0I3OCAvKiBXZWJHUFVTYW1wbGVyRGVzY3JpcHRvci5j
cHAgKi8sCiAJCQkJMUNCNzQ2OEQyNzQzOUNCNzAwRjE5ODc0IC8qIFdlYkdQVVNhbXBsZXJEZXNj
cmlwdG9yLmggKi8sCisJCQkJMUNFRjQ1QkIyN0JDQTQ2QTAwQzNBNkJDIC8qIFdlYkdQVVNoYWRl
ck1vZHVsZUNvbXBpbGF0aW9uSGludC5jcHAgKi8sCisJCQkJMUNFRjQ1QkMyN0JDQTQ2QTAwQzNB
NkJDIC8qIFdlYkdQVVNoYWRlck1vZHVsZUNvbXBpbGF0aW9uSGludC5oICovLAogCQkJCTFDOThD
MDk5Mjc0NjI2NzgwMDJDQ0I3OCAvKiBXZWJHUFVTaGFkZXJNb2R1bGVEZXNjcmlwdG9yLmNwcCAq
LywKIAkJCQkxQ0I3NDY2QjI3NDM5Q0FGMDBGMTk4NzQgLyogV2ViR1BVU2hhZGVyTW9kdWxlRGVz
Y3JpcHRvci5oICovLAogCQkJCTFDOThDMENBMjc0NjI2ODAwMDJDQ0I3OCAvKiBXZWJHUFVTdGVu
Y2lsRmFjZVN0YXRlLmNwcCAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9HUFUvZ3JhcGhpY3MvV2ViR1BVL1JlbW90ZUJ1ZmZlclByb3h5LmNwcCBiL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvV2ViR1BVL1JlbW90ZUJ1ZmZlclByb3h5LmNwcApp
bmRleCBhOTk2Y2QzYzY3NTI1OTkzODk2N2I4MGRjZDg2YjE0MjZlNGE1ZGQ1Li4yNDA5NTdmMmNi
OTgwYWQ5OWM2Njk0MDAwYjMwZGIzZGQ1MjJhMDkyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1dlYkdQVS9SZW1vdGVCdWZmZXJQcm94eS5jcHAKKysr
IGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9XZWJHUFUvUmVtb3RlQnVm
ZmVyUHJveHkuY3BwCkBAIC00NCw3ICs0NCw3IEBAIFJlbW90ZUJ1ZmZlclByb3h5Ojp+UmVtb3Rl
QnVmZmVyUHJveHkoKQogewogfQogCi12b2lkIFJlbW90ZUJ1ZmZlclByb3h5OjptYXBBc3luYyhQ
QUw6OldlYkdQVTo6TWFwTW9kZUZsYWdzIG1hcE1vZGVGbGFncywgc3RkOjpvcHRpb25hbDxQQUw6
OldlYkdQVTo6U2l6ZTY0PiBvZmZzZXQsIHN0ZDo6b3B0aW9uYWw8UEFMOjpXZWJHUFU6OlNpemU2
ND4gc2l6ZSwgV1RGOjpGdW5jdGlvbjx2b2lkKCk+JiYgY2FsbGJhY2spCit2b2lkIFJlbW90ZUJ1
ZmZlclByb3h5OjptYXBBc3luYyhQQUw6OldlYkdQVTo6TWFwTW9kZUZsYWdzIG1hcE1vZGVGbGFn
cywgUEFMOjpXZWJHUFU6OlNpemU2NCBvZmZzZXQsIHN0ZDo6b3B0aW9uYWw8UEFMOjpXZWJHUFU6
OlNpemU2ND4gc2l6ZSwgV1RGOjpGdW5jdGlvbjx2b2lkKCk+JiYgY2FsbGJhY2spCiB7CiAgICAg
c3RkOjpvcHRpb25hbDxWZWN0b3I8dWludDhfdD4+IGRhdGE7CiAgICAgYXV0byBzZW5kUmVzdWx0
ID0gc2VuZFN5bmMoTWVzc2FnZXM6OlJlbW90ZUJ1ZmZlcjo6TWFwQXN5bmMobWFwTW9kZUZsYWdz
LCBvZmZzZXQsIHNpemUpLCB7IGRhdGEgfSk7CkBAIC01OSwxNCArNTksMTMgQEAgdm9pZCBSZW1v
dGVCdWZmZXJQcm94eTo6bWFwQXN5bmMoUEFMOjpXZWJHUFU6Ok1hcE1vZGVGbGFncyBtYXBNb2Rl
RmxhZ3MsIHN0ZDo6b3AKICAgICBjYWxsYmFjaygpOwogfQogCi1hdXRvIFJlbW90ZUJ1ZmZlclBy
b3h5OjpnZXRNYXBwZWRSYW5nZShzdGQ6Om9wdGlvbmFsPFBBTDo6V2ViR1BVOjpTaXplNjQ+IG9m
ZnNldCwgc3RkOjpvcHRpb25hbDxQQUw6OldlYkdQVTo6U2l6ZTY0PiBzaXplKSAtPiBNYXBwZWRS
YW5nZQorYXV0byBSZW1vdGVCdWZmZXJQcm94eTo6Z2V0TWFwcGVkUmFuZ2UoUEFMOjpXZWJHUFU6
OlNpemU2NCBvZmZzZXQsIHN0ZDo6b3B0aW9uYWw8UEFMOjpXZWJHUFU6OlNpemU2ND4gc2l6ZSkg
LT4gTWFwcGVkUmFuZ2UKIHsKICAgICAvLyBGSVhNRTogSW1wbGVtZW50IGVycm9yIGhhbmRsaW5n
LgogICAgIGlmICghbV9kYXRhKQogICAgICAgICByZXR1cm4geyB9OwogCi0gICAgYXV0byB1c2Vk
T2Zmc2V0ID0gb2Zmc2V0LnZhbHVlX29yKDApOwotICAgIHJldHVybiB7IG1fZGF0YS0+ZGF0YSgp
ICsgdXNlZE9mZnNldCwgc3RhdGljX2Nhc3Q8c2l6ZV90PihzaXplLnZhbHVlX29yKG1fZGF0YS0+
c2l6ZSgpIC0gdXNlZE9mZnNldCkpIH07CisgICAgcmV0dXJuIHsgbV9kYXRhLT5kYXRhKCkgKyBv
ZmZzZXQsIHN0YXRpY19jYXN0PHNpemVfdD4oc2l6ZS52YWx1ZV9vcihtX2RhdGEtPnNpemUoKSAt
IG9mZnNldCkpIH07CiB9CiAKIHZvaWQgUmVtb3RlQnVmZmVyUHJveHk6OnVubWFwKCkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvV2ViR1BVL1JlbW90
ZUJ1ZmZlclByb3h5LmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1dl
YkdQVS9SZW1vdGVCdWZmZXJQcm94eS5oCmluZGV4IDdiYTU2YTcwNmE4MDE4NjVjODQzMjZjMTBm
YjBmNGM5NGUyYjg0ZjAuLjQ5M2E4YmYwMTY5ZWEzNTUxNGU5ZGFhZTFmNzY3MzJjOGRkY2Q2N2Ug
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvV2ViR1BV
L1JlbW90ZUJ1ZmZlclByb3h5LmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9n
cmFwaGljcy9XZWJHUFUvUmVtb3RlQnVmZmVyUHJveHkuaApAQCAtNzMsOCArNzMsOCBAQCBwcml2
YXRlOgogICAgICAgICByZXR1cm4gcm9vdCgpLnN0cmVhbUNsaWVudENvbm5lY3Rpb24oKS5zZW5k
U3luYyhXVEZNb3ZlKG1lc3NhZ2UpLCBXVEZNb3ZlKHJlcGx5KSwgYmFja2luZygpLCBkZWZhdWx0
U2VuZFRpbWVvdXQpOwogICAgIH0KIAotICAgIHZvaWQgbWFwQXN5bmMoUEFMOjpXZWJHUFU6Ok1h
cE1vZGVGbGFncywgc3RkOjpvcHRpb25hbDxQQUw6OldlYkdQVTo6U2l6ZTY0PiBvZmZzZXQsIHN0
ZDo6b3B0aW9uYWw8UEFMOjpXZWJHUFU6OlNpemU2ND4gc2l6ZUZvck1hcCwgV1RGOjpGdW5jdGlv
bjx2b2lkKCk+JiYpIGZpbmFsOwotICAgIE1hcHBlZFJhbmdlIGdldE1hcHBlZFJhbmdlKHN0ZDo6
b3B0aW9uYWw8UEFMOjpXZWJHUFU6OlNpemU2ND4gb2Zmc2V0LCBzdGQ6Om9wdGlvbmFsPFBBTDo6
V2ViR1BVOjpTaXplNjQ+KSBmaW5hbDsKKyAgICB2b2lkIG1hcEFzeW5jKFBBTDo6V2ViR1BVOjpN
YXBNb2RlRmxhZ3MsIFBBTDo6V2ViR1BVOjpTaXplNjQgb2Zmc2V0LCBzdGQ6Om9wdGlvbmFsPFBB
TDo6V2ViR1BVOjpTaXplNjQ+IHNpemVGb3JNYXAsIFdURjo6RnVuY3Rpb248dm9pZCgpPiYmKSBm
aW5hbDsKKyAgICBNYXBwZWRSYW5nZSBnZXRNYXBwZWRSYW5nZShQQUw6OldlYkdQVTo6U2l6ZTY0
IG9mZnNldCwgc3RkOjpvcHRpb25hbDxQQUw6OldlYkdQVTo6U2l6ZTY0PikgZmluYWw7CiAgICAg
dm9pZCB1bm1hcCgpIGZpbmFsOwogCiAgICAgdm9pZCBkZXN0cm95KCkgZmluYWw7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1dlYkdQVS9SZW1vdGVD
b21tYW5kRW5jb2RlclByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3Jh
cGhpY3MvV2ViR1BVL1JlbW90ZUNvbW1hbmRFbmNvZGVyUHJveHkuY3BwCmluZGV4IGZlYTI5ZDk5
MjgxNjdlMmIyYTRkZjQ1NWQ5Zjg3YWYxZjhiZjZiZWMuLjYxM2VkNTAxNjRmYTI1NTZjOGIxNzI0
Y2UyNzYwZDYxMTkzMmE5MmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9H
UFUvZ3JhcGhpY3MvV2ViR1BVL1JlbW90ZUNvbW1hbmRFbmNvZGVyUHJveHkuY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvV2ViR1BVL1JlbW90ZUNvbW1hbmRF
bmNvZGVyUHJveHkuY3BwCkBAIC0xNTIsMTcgKzE1MiwxNyBAQCB2b2lkIFJlbW90ZUNvbW1hbmRF
bmNvZGVyUHJveHk6OmNvcHlUZXh0dXJlVG9UZXh0dXJlKAogICAgIFVOVVNFRF9WQVJJQUJMRShz
ZW5kUmVzdWx0KTsKIH0KIAotdm9pZCBSZW1vdGVDb21tYW5kRW5jb2RlclByb3h5OjpmaWxsQnVm
ZmVyKAotICAgIGNvbnN0IFBBTDo6V2ViR1BVOjpCdWZmZXImIGRlc3RpbmF0aW9uLAotICAgIFBB
TDo6V2ViR1BVOjpTaXplNjQgZGVzdGluYXRpb25PZmZzZXQsCi0gICAgUEFMOjpXZWJHUFU6OlNp
emU2NCBzaXplKQotewotICAgIGF1dG8gY29udmVydGVkRGVzdGluYXRpb24gPSBtX2NvbnZlcnRU
b0JhY2tpbmdDb250ZXh0LT5jb252ZXJ0VG9CYWNraW5nKGRlc3RpbmF0aW9uKTsKLSAgICBBU1NF
UlQoY29udmVydGVkRGVzdGluYXRpb24pOwotICAgIGlmICghY29udmVydGVkRGVzdGluYXRpb24p
Cit2b2lkIFJlbW90ZUNvbW1hbmRFbmNvZGVyUHJveHk6OmNsZWFyQnVmZmVyKAorICAgIGNvbnN0
IFBBTDo6V2ViR1BVOjpCdWZmZXImIGJ1ZmZlciwKKyAgICBQQUw6OldlYkdQVTo6U2l6ZTY0IG9m
ZnNldCwKKyAgICBzdGQ6Om9wdGlvbmFsPFBBTDo6V2ViR1BVOjpTaXplNjQ+IHNpemUpCit7Cisg
ICAgYXV0byBjb252ZXJ0ZWRCdWZmZXIgPSBtX2NvbnZlcnRUb0JhY2tpbmdDb250ZXh0LT5jb252
ZXJ0VG9CYWNraW5nKGJ1ZmZlcik7CisgICAgQVNTRVJUKGNvbnZlcnRlZEJ1ZmZlcik7CisgICAg
aWYgKCFjb252ZXJ0ZWRCdWZmZXIpCiAgICAgICAgIHJldHVybjsKIAotICAgIGF1dG8gc2VuZFJl
c3VsdCA9IHNlbmQoTWVzc2FnZXM6OlJlbW90ZUNvbW1hbmRFbmNvZGVyOjpGaWxsQnVmZmVyKGNv
bnZlcnRlZERlc3RpbmF0aW9uLCBkZXN0aW5hdGlvbk9mZnNldCwgc2l6ZSkpOworICAgIGF1dG8g
c2VuZFJlc3VsdCA9IHNlbmQoTWVzc2FnZXM6OlJlbW90ZUNvbW1hbmRFbmNvZGVyOjpDbGVhckJ1
ZmZlcihjb252ZXJ0ZWRCdWZmZXIsIG9mZnNldCwgc2l6ZSkpOwogICAgIFVOVVNFRF9WQVJJQUJM
RShzZW5kUmVzdWx0KTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L0dQVS9ncmFwaGljcy9XZWJHUFUvUmVtb3RlQ29tbWFuZEVuY29kZXJQcm94eS5oIGIvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9XZWJHUFUvUmVtb3RlQ29tbWFuZEVuY29k
ZXJQcm94eS5oCmluZGV4IDExZTY3ODE1OWE0YjQxMjM2NjdlNjdkM2JhMjA4NTY4ZmM4MzViMGMu
LmIxNzY4MThiZTAxZWE0MjBhZGFlNDgxNTA5OWRjYWQwYjAxMTdiNGUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvV2ViR1BVL1JlbW90ZUNvbW1hbmRF
bmNvZGVyUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNz
L1dlYkdQVS9SZW1vdGVDb21tYW5kRW5jb2RlclByb3h5LmgKQEAgLTk3LDEwICs5NywxMCBAQCBw
cml2YXRlOgogICAgICAgICBjb25zdCBQQUw6OldlYkdQVTo6SW1hZ2VDb3B5VGV4dHVyZSYgZGVz
dGluYXRpb24sCiAgICAgICAgIGNvbnN0IFBBTDo6V2ViR1BVOjpFeHRlbnQzRCYgY29weVNpemUp
IGZpbmFsOwogCi0gICAgdm9pZCBmaWxsQnVmZmVyKAotICAgICAgICBjb25zdCBQQUw6OldlYkdQ
VTo6QnVmZmVyJiBkZXN0aW5hdGlvbiwKLSAgICAgICAgUEFMOjpXZWJHUFU6OlNpemU2NCBkZXN0
aW5hdGlvbk9mZnNldCwKLSAgICAgICAgUEFMOjpXZWJHUFU6OlNpemU2NCkgZmluYWw7CisgICAg
dm9pZCBjbGVhckJ1ZmZlcigKKyAgICAgICAgY29uc3QgUEFMOjpXZWJHUFU6OkJ1ZmZlciYsCisg
ICAgICAgIFBBTDo6V2ViR1BVOjpTaXplNjQgb2Zmc2V0ID0gMCwKKyAgICAgICAgc3RkOjpvcHRp
b25hbDxQQUw6OldlYkdQVTo6U2l6ZTY0PiA9IHN0ZDo6bnVsbG9wdCkgZmluYWw7CiAKICAgICB2
b2lkIHB1c2hEZWJ1Z0dyb3VwKFN0cmluZyYmIGdyb3VwTGFiZWwpIGZpbmFsOwogICAgIHZvaWQg
cG9wRGVidWdHcm91cCgpIGZpbmFsOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL0dQVS9ncmFwaGljcy9XZWJHUFUvUmVtb3RlQ29tcHV0ZVBhc3NFbmNvZGVyUHJveHkuY3Bw
IGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9XZWJHUFUvUmVtb3RlQ29t
cHV0ZVBhc3NFbmNvZGVyUHJveHkuY3BwCmluZGV4IDcxZjY3OTU1YWI3ZDU2OTdhYTNjNmMxOGIw
NjYzM2QwMjkyYWI5ZjUuLjZkMGY4M2NkNmQ5MWM3YzhlNjk5M2QwMDdlYjgwMmI1MjI4ODY0NmIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvV2ViR1BV
L1JlbW90ZUNvbXB1dGVQYXNzRW5jb2RlclByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvR1BVL2dyYXBoaWNzL1dlYkdQVS9SZW1vdGVDb21wdXRlUGFzc0VuY29kZXJQcm94
eS5jcHAKQEAgLTU1LDkgKzU1LDkgQEAgdm9pZCBSZW1vdGVDb21wdXRlUGFzc0VuY29kZXJQcm94
eTo6c2V0UGlwZWxpbmUoY29uc3QgUEFMOjpXZWJHUFU6OkNvbXB1dGVQaXBlbGkKICAgICBVTlVT
RURfVkFSSUFCTEUoc2VuZFJlc3VsdCk7CiB9CiAKLXZvaWQgUmVtb3RlQ29tcHV0ZVBhc3NFbmNv
ZGVyUHJveHk6OmRpc3BhdGNoKFBBTDo6V2ViR1BVOjpTaXplMzIgeCwgc3RkOjpvcHRpb25hbDxQ
QUw6OldlYkdQVTo6U2l6ZTMyPiB5LCBzdGQ6Om9wdGlvbmFsPFBBTDo6V2ViR1BVOjpTaXplMzI+
IHopCit2b2lkIFJlbW90ZUNvbXB1dGVQYXNzRW5jb2RlclByb3h5OjpkaXNwYXRjaChQQUw6Oldl
YkdQVTo6U2l6ZTMyIHdvcmtncm91cENvdW50WCwgUEFMOjpXZWJHUFU6OlNpemUzMiB3b3JrZ3Jv
dXBDb3VudFksIFBBTDo6V2ViR1BVOjpTaXplMzIgd29ya2dyb3VwQ291bnRaKQogewotICAgIGF1
dG8gc2VuZFJlc3VsdCA9IHNlbmQoTWVzc2FnZXM6OlJlbW90ZUNvbXB1dGVQYXNzRW5jb2Rlcjo6
RGlzcGF0Y2goeCwgeSwgeikpOworICAgIGF1dG8gc2VuZFJlc3VsdCA9IHNlbmQoTWVzc2FnZXM6
OlJlbW90ZUNvbXB1dGVQYXNzRW5jb2Rlcjo6RGlzcGF0Y2god29ya2dyb3VwQ291bnRYLCB3b3Jr
Z3JvdXBDb3VudFksIHdvcmtncm91cENvdW50WikpOwogICAgIFVOVVNFRF9WQVJJQUJMRShzZW5k
UmVzdWx0KTsKIH0KIApAQCAtNzIsMjYgKzcyLDkgQEAgdm9pZCBSZW1vdGVDb21wdXRlUGFzc0Vu
Y29kZXJQcm94eTo6ZGlzcGF0Y2hJbmRpcmVjdChjb25zdCBQQUw6OldlYkdQVTo6QnVmZmVyJgog
ICAgIFVOVVNFRF9WQVJJQUJMRShzZW5kUmVzdWx0KTsKIH0KIAotdm9pZCBSZW1vdGVDb21wdXRl
UGFzc0VuY29kZXJQcm94eTo6YmVnaW5QaXBlbGluZVN0YXRpc3RpY3NRdWVyeShjb25zdCBQQUw6
OldlYkdQVTo6UXVlcnlTZXQmIHF1ZXJ5U2V0LCBQQUw6OldlYkdQVTo6U2l6ZTMyIHF1ZXJ5SW5k
ZXgpCit2b2lkIFJlbW90ZUNvbXB1dGVQYXNzRW5jb2RlclByb3h5OjplbmQoKQogewotICAgIGF1
dG8gY29udmVydGVkUXVlcnlTZXQgPSBtX2NvbnZlcnRUb0JhY2tpbmdDb250ZXh0LT5jb252ZXJ0
VG9CYWNraW5nKHF1ZXJ5U2V0KTsKLSAgICBBU1NFUlQoY29udmVydGVkUXVlcnlTZXQpOwotICAg
IGlmICghY29udmVydGVkUXVlcnlTZXQpCi0gICAgICAgIHJldHVybjsKLQotICAgIGF1dG8gc2Vu
ZFJlc3VsdCA9IHNlbmQoTWVzc2FnZXM6OlJlbW90ZUNvbXB1dGVQYXNzRW5jb2Rlcjo6QmVnaW5Q
aXBlbGluZVN0YXRpc3RpY3NRdWVyeShjb252ZXJ0ZWRRdWVyeVNldCwgcXVlcnlJbmRleCkpOwot
ICAgIFVOVVNFRF9WQVJJQUJMRShzZW5kUmVzdWx0KTsKLX0KLQotdm9pZCBSZW1vdGVDb21wdXRl
UGFzc0VuY29kZXJQcm94eTo6ZW5kUGlwZWxpbmVTdGF0aXN0aWNzUXVlcnkoKQotewotICAgIGF1
dG8gc2VuZFJlc3VsdCA9IHNlbmQoTWVzc2FnZXM6OlJlbW90ZUNvbXB1dGVQYXNzRW5jb2Rlcjo6
RW5kUGlwZWxpbmVTdGF0aXN0aWNzUXVlcnkoKSk7Ci0gICAgVU5VU0VEX1ZBUklBQkxFKHNlbmRS
ZXN1bHQpOwotfQotCi12b2lkIFJlbW90ZUNvbXB1dGVQYXNzRW5jb2RlclByb3h5OjplbmRQYXNz
KCkKLXsKLSAgICBhdXRvIHNlbmRSZXN1bHQgPSBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVDb21wdXRl
UGFzc0VuY29kZXI6OkVuZFBhc3MoKSk7CisgICAgYXV0byBzZW5kUmVzdWx0ID0gc2VuZChNZXNz
YWdlczo6UmVtb3RlQ29tcHV0ZVBhc3NFbmNvZGVyOjpFbmQoKSk7CiAgICAgVU5VU0VEX1ZBUklB
QkxFKHNlbmRSZXN1bHQpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvR1BVL2dyYXBoaWNzL1dlYkdQVS9SZW1vdGVDb21wdXRlUGFzc0VuY29kZXJQcm94eS5oIGIv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9XZWJHUFUvUmVtb3RlQ29tcHV0
ZVBhc3NFbmNvZGVyUHJveHkuaAppbmRleCAzZjJkYTc5N2E5Mjk2NWQ3NGJkOTBkNThhYzJmNTg3
NzZmNTQwYzFjLi44N2E5NThjMTc2YTc0MTdhYTAxOTRlNDk0ZjM2ZTgxMjY0OGI2ODVjIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1dlYkdQVS9SZW1v
dGVDb21wdXRlUGFzc0VuY29kZXJQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9HUFUvZ3JhcGhpY3MvV2ViR1BVL1JlbW90ZUNvbXB1dGVQYXNzRW5jb2RlclByb3h5LmgKQEAg
LTczLDEzICs3MywxMCBAQCBwcml2YXRlOgogICAgIH0KIAogICAgIHZvaWQgc2V0UGlwZWxpbmUo
Y29uc3QgUEFMOjpXZWJHUFU6OkNvbXB1dGVQaXBlbGluZSYpIGZpbmFsOwotICAgIHZvaWQgZGlz
cGF0Y2goUEFMOjpXZWJHUFU6OlNpemUzMiB4LCBzdGQ6Om9wdGlvbmFsPFBBTDo6V2ViR1BVOjpT
aXplMzI+IHksIHN0ZDo6b3B0aW9uYWw8UEFMOjpXZWJHUFU6OlNpemUzMj4pIGZpbmFsOworICAg
IHZvaWQgZGlzcGF0Y2goUEFMOjpXZWJHUFU6OlNpemUzMiB3b3JrZ3JvdXBDb3VudFgsIFBBTDo6
V2ViR1BVOjpTaXplMzIgd29ya2dyb3VwQ291bnRZID0gMSwgUEFMOjpXZWJHUFU6OlNpemUzMiB3
b3JrZ3JvdXBDb3VudFogPSAxKSBmaW5hbDsKICAgICB2b2lkIGRpc3BhdGNoSW5kaXJlY3QoY29u
c3QgUEFMOjpXZWJHUFU6OkJ1ZmZlciYgaW5kaXJlY3RCdWZmZXIsIFBBTDo6V2ViR1BVOjpTaXpl
NjQgaW5kaXJlY3RPZmZzZXQpIGZpbmFsOwogCi0gICAgdm9pZCBiZWdpblBpcGVsaW5lU3RhdGlz
dGljc1F1ZXJ5KGNvbnN0IFBBTDo6V2ViR1BVOjpRdWVyeVNldCYsIFBBTDo6V2ViR1BVOjpTaXpl
MzIgcXVlcnlJbmRleCkgZmluYWw7Ci0gICAgdm9pZCBlbmRQaXBlbGluZVN0YXRpc3RpY3NRdWVy
eSgpIGZpbmFsOwotCi0gICAgdm9pZCBlbmRQYXNzKCkgZmluYWw7CisgICAgdm9pZCBlbmQoKSBm
aW5hbDsKIAogICAgIHZvaWQgc2V0QmluZEdyb3VwKFBBTDo6V2ViR1BVOjpJbmRleDMyLCBjb25z
dCBQQUw6OldlYkdQVTo6QmluZEdyb3VwJiwKICAgICAgICAgc3RkOjpvcHRpb25hbDxWZWN0b3I8
UEFMOjpXZWJHUFU6OkJ1ZmZlckR5bmFtaWNPZmZzZXQ+PiYmKSBmaW5hbDsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvV2ViR1BVL1JlbW90ZVF1ZXVl
UHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvV2ViR1BVL1Jl
bW90ZVF1ZXVlUHJveHkuaAppbmRleCA1ZWEyMTAzYzFmZGI5YTJlNTI3MDM1ZGQxNmM0NmQ0NGUy
ZDdkZWMyLi5kYTc3NWQzZTBjYTdjMjZmMDdiNWJhMTkxMjE0NTFiNzVmMDc2NmY5IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1dlYkdQVS9SZW1vdGVR
dWV1ZVByb3h5LmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9X
ZWJHUFUvUmVtb3RlUXVldWVQcm94eS5oCkBAIC04Miw4ICs4Miw4IEBAIHByaXZhdGU6CiAgICAg
ICAgIFBBTDo6V2ViR1BVOjpTaXplNjQgYnVmZmVyT2Zmc2V0LAogICAgICAgICBjb25zdCB2b2lk
KiBzb3VyY2UsCiAgICAgICAgIHNpemVfdCBieXRlTGVuZ3RoLAotICAgICAgICBQQUw6OldlYkdQ
VTo6U2l6ZTY0IGRhdGFPZmZzZXQsCi0gICAgICAgIHN0ZDo6b3B0aW9uYWw8UEFMOjpXZWJHUFU6
OlNpemU2ND4pIGZpbmFsOworICAgICAgICBQQUw6OldlYkdQVTo6U2l6ZTY0IGRhdGFPZmZzZXQg
PSAwLAorICAgICAgICBzdGQ6Om9wdGlvbmFsPFBBTDo6V2ViR1BVOjpTaXplNjQ+ID0gc3RkOjpu
dWxsb3B0KSBmaW5hbDsKIAogICAgIHZvaWQgd3JpdGVUZXh0dXJlKAogICAgICAgICBjb25zdCBQ
QUw6OldlYkdQVTo6SW1hZ2VDb3B5VGV4dHVyZSYgZGVzdGluYXRpb24sCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1dlYkdQVS9SZW1vdGVSZW5kZXJQ
YXNzRW5jb2RlclByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhp
Y3MvV2ViR1BVL1JlbW90ZVJlbmRlclBhc3NFbmNvZGVyUHJveHkuY3BwCmluZGV4IDNlOGY1YTYz
ZjRhZjEyNDcyYjhmMjNmNThmZGYyZDg3YWJmZDM1MDAuLjc4M2ZlMGEwZjg3ODFiMGEwMjg3Njkx
NzVlNTY5MGU4M2Y0YTFmNzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9H
UFUvZ3JhcGhpY3MvV2ViR1BVL1JlbW90ZVJlbmRlclBhc3NFbmNvZGVyUHJveHkuY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvV2ViR1BVL1JlbW90ZVJlbmRl
clBhc3NFbmNvZGVyUHJveHkuY3BwCkBAIC0yMDQsMjMgKzIwNCw2IEBAIHZvaWQgUmVtb3RlUmVu
ZGVyUGFzc0VuY29kZXJQcm94eTo6ZW5kT2NjbHVzaW9uUXVlcnkoKQogICAgIFVOVVNFRF9WQVJJ
QUJMRShzZW5kUmVzdWx0KTsKIH0KIAotdm9pZCBSZW1vdGVSZW5kZXJQYXNzRW5jb2RlclByb3h5
OjpiZWdpblBpcGVsaW5lU3RhdGlzdGljc1F1ZXJ5KGNvbnN0IFBBTDo6V2ViR1BVOjpRdWVyeVNl
dCYgcXVlcnlTZXQsIFBBTDo6V2ViR1BVOjpTaXplMzIgcXVlcnlJbmRleCkKLXsKLSAgICBhdXRv
IGNvbnZlcnRlZFF1ZXJ5U2V0ID0gbV9jb252ZXJ0VG9CYWNraW5nQ29udGV4dC0+Y29udmVydFRv
QmFja2luZyhxdWVyeVNldCk7Ci0gICAgQVNTRVJUKGNvbnZlcnRlZFF1ZXJ5U2V0KTsKLSAgICBp
ZiAoIWNvbnZlcnRlZFF1ZXJ5U2V0KQotICAgICAgICByZXR1cm47Ci0KLSAgICBhdXRvIHNlbmRS
ZXN1bHQgPSBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVSZW5kZXJQYXNzRW5jb2Rlcjo6QmVnaW5QaXBl
bGluZVN0YXRpc3RpY3NRdWVyeShjb252ZXJ0ZWRRdWVyeVNldCwgcXVlcnlJbmRleCkpOwotICAg
IFVOVVNFRF9WQVJJQUJMRShzZW5kUmVzdWx0KTsKLX0KLQotdm9pZCBSZW1vdGVSZW5kZXJQYXNz
RW5jb2RlclByb3h5OjplbmRQaXBlbGluZVN0YXRpc3RpY3NRdWVyeSgpCi17Ci0gICAgYXV0byBz
ZW5kUmVzdWx0ID0gc2VuZChNZXNzYWdlczo6UmVtb3RlUmVuZGVyUGFzc0VuY29kZXI6OkVuZFBp
cGVsaW5lU3RhdGlzdGljc1F1ZXJ5KCkpOwotICAgIFVOVVNFRF9WQVJJQUJMRShzZW5kUmVzdWx0
KTsKLX0KLQogdm9pZCBSZW1vdGVSZW5kZXJQYXNzRW5jb2RlclByb3h5OjpleGVjdXRlQnVuZGxl
cyhWZWN0b3I8c3RkOjpyZWZlcmVuY2Vfd3JhcHBlcjxQQUw6OldlYkdQVTo6UmVuZGVyQnVuZGxl
Pj4mJiByZW5kZXJCdW5kbGVzKQogewogICAgIFZlY3RvcjxXZWJHUFVJZGVudGlmaWVyPiBjb252
ZXJ0ZWRSZW5kZXJCdW5kbGVzOwpAQCAtMjM3LDkgKzIyMCw5IEBAIHZvaWQgUmVtb3RlUmVuZGVy
UGFzc0VuY29kZXJQcm94eTo6ZXhlY3V0ZUJ1bmRsZXMoVmVjdG9yPHN0ZDo6cmVmZXJlbmNlX3dy
YXBwZXI8CiAgICAgVU5VU0VEX1ZBUklBQkxFKHNlbmRSZXN1bHQpOwogfQogCi12b2lkIFJlbW90
ZVJlbmRlclBhc3NFbmNvZGVyUHJveHk6OmVuZFBhc3MoKQordm9pZCBSZW1vdGVSZW5kZXJQYXNz
RW5jb2RlclByb3h5OjplbmQoKQogewotICAgIGF1dG8gc2VuZFJlc3VsdCA9IHNlbmQoTWVzc2Fn
ZXM6OlJlbW90ZVJlbmRlclBhc3NFbmNvZGVyOjpFbmRQYXNzKCkpOworICAgIGF1dG8gc2VuZFJl
c3VsdCA9IHNlbmQoTWVzc2FnZXM6OlJlbW90ZVJlbmRlclBhc3NFbmNvZGVyOjpFbmQoKSk7CiAg
ICAgVU5VU0VEX1ZBUklBQkxFKHNlbmRSZXN1bHQpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1dlYkdQVS9SZW1vdGVSZW5kZXJQYXNzRW5j
b2RlclByb3h5LmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1dlYkdQ
VS9SZW1vdGVSZW5kZXJQYXNzRW5jb2RlclByb3h5LmgKaW5kZXggZTVmNjkzZDhjOGViZjZlOTA1
ZDkxNDJlMGQzZWJlNzM0YzE4NGMzNy4uZmM1YjU5NmY1YmE4ZGNmN2M4YjU2NTJjYmQ3NThiMTA0
ZTk1ZDk0ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGlj
cy9XZWJHUFUvUmVtb3RlUmVuZGVyUGFzc0VuY29kZXJQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvV2ViR1BVL1JlbW90ZVJlbmRlclBhc3NFbmNvZGVy
UHJveHkuaApAQCAtMTEzLDExICsxMTMsOCBAQCBwcml2YXRlOgogICAgIHZvaWQgYmVnaW5PY2Ns
dXNpb25RdWVyeShQQUw6OldlYkdQVTo6U2l6ZTMyIHF1ZXJ5SW5kZXgpIGZpbmFsOwogICAgIHZv
aWQgZW5kT2NjbHVzaW9uUXVlcnkoKSBmaW5hbDsKIAotICAgIHZvaWQgYmVnaW5QaXBlbGluZVN0
YXRpc3RpY3NRdWVyeShjb25zdCBQQUw6OldlYkdQVTo6UXVlcnlTZXQmLCBQQUw6OldlYkdQVTo6
U2l6ZTMyIHF1ZXJ5SW5kZXgpIGZpbmFsOwotICAgIHZvaWQgZW5kUGlwZWxpbmVTdGF0aXN0aWNz
UXVlcnkoKSBmaW5hbDsKLQogICAgIHZvaWQgZXhlY3V0ZUJ1bmRsZXMoVmVjdG9yPHN0ZDo6cmVm
ZXJlbmNlX3dyYXBwZXI8UEFMOjpXZWJHUFU6OlJlbmRlckJ1bmRsZT4+JiYpIGZpbmFsOwotICAg
IHZvaWQgZW5kUGFzcygpIGZpbmFsOworICAgIHZvaWQgZW5kKCkgZmluYWw7CiAKICAgICB2b2lk
IHNldExhYmVsSW50ZXJuYWwoY29uc3QgU3RyaW5nJikgZmluYWw7CiAK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>452136</attachid>
            <date>2022-02-15 20:54:55 -0800</date>
            <delta_ts>2022-02-15 20:55:17 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-236566-20220215205454.patch</filename>
            <type>text/plain</type>
            <size>300831</size>
            <attacher name="Myles C. Maxfield">mmaxfield</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg5ODcyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMzM4NThhMzM1MTFjMTZj
MzBjMDdhMTJhMWJhMjNmYzdlNWJlMTdkZC4uYjRmMzZhMDgyYWQ5NjcwMjZiMzNjYTJiMzRlODdi
MjM2ZWY2ZGM5MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDExOSBAQAorMjAyMi0wMi0xNSAgTXls
ZXMgQy4gTWF4ZmllbGQgIDxtbWF4ZmllbGRAYXBwbGUuY29tPgorCisgICAgICAgIFtXZWJHUFVd
IFVwZGF0ZSBJRExzIGFuZCBzdHVicyB0byBsYXRlc3QgdmVyc2lvbiBvZiB0aGUgc3BlYworICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjM2NjM5CisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhpcyB1cGRhdGVz
IG91ciBXZWJHUFUgaW5mcmFzdHJ1Y3R1cmUgdG8gc3BlYyByZXZpc2lvbiA2MjZmOGMwNWM4ZTY3
YjU0MTU5ZTkzYWU3YzM2OTlhODg5ZjBiMTE1LiBUaGlzCisgICAgICAgIGlzIGp1c3QgdGhlIHBs
dW1iaW5nIHRoYXQgY29ubmVjdHMgSURMIC0+IFdlYkNvcmUgQysrIC0+IFBBTCB2aXJ0dWFsIG1l
dGhvZHMgLT4gV2ViS2l0IFdlYiBwcm9jZXNzIC0+CisgICAgICAgIFdlYktpdCBHUFUgcHJvY2Vz
cyAtPiBQQUwgdmlydHVhbCBtZXRob2RzIC0+IFBBTCBXZWJHUFUgaW1wbGVtZW50YXRpb24gLT4g
V2ViR1BVLmZyYW1ld29yay4gVGhpcyBhbHNvCisgICAgICAgIHVwZGF0ZXMgdGhlIFdlYkdQVS5o
IHNoYXJlZCBoZWFkZXIgdG8gcmV2aXNpb24gMDhlZjU3NzMzNTAzYjhmYjUwNGUwNjgxYThkYjY1
MGM4ODIyNTk0Ny4gVGhpcyBpcyBqdXN0CisgICAgICAgIHBsdW1iaW5nIC0gdGhlIGFjdHVhbCBp
bXBsZW1lbnRhdGlvbiBvZiB0aGlzIHN0dWZmIGlzIHN0aWxsIGp1c3Qgc3R1YnMgaW4gV2ViR1BV
LmZyYW1ld29yay4KKworICAgICAgICBUaGVyZSBoYXZlIGJlZW4gYSBmZXcgdmFyaW91cyBjaGFu
Z2VzOgorICAgICAgICAtIEEgdmlld0Zvcm1hdHMgYXJyYXkgaGFzIGJlZW4gYWRkZWQgdG8gR1BV
Q2FudmFzQ29uZmlndXJhdGlvbiBhbmQgR1BVVGV4dHVyZURlc2NyaXB0b3IKKyAgICAgICAgLSBm
aWxsQnVmZmVyKCkgaGFzIGJlZW4gcmVuYW1lZCB0byBjbGVhckJ1ZmZlcigpCisgICAgICAgIC0g
UGlwZWxpbmUgc3RhdGlzdGljcyBxdWVyaWVzIGhhdmUgYmVlbiBkZWxldGVkCisgICAgICAgIC0g
QSBmZXcgcmVmYWN0b3JpbmdzIHRvIHR1cm4gVmVjdG9yPEZvbz4gdGhpbmdzIGludG8gVmVjdG9y
PHN0ZDo6b3B0aW9uYWw8Rm9vPj4KKyAgICAgICAgLSBmbGlwWSBoYXMgYmVlbiBhZGRlZCB0byBH
UFVJbWFnZUNvcHlFeHRlcm5hbEltYWdlCisgICAgICAgIC0gTG9hZCBvcGVyYXRpb25zIGhhdmUg
YmVlbiByZWRlc2lnbmVkIG9uIGJvdGggR1BVUmVuZGVyUGFzc0NvbG9yQXR0YWNobWVudCBhbmQK
KyAgICAgICAgICAgICAgR1BVUmVuZGVyUGFzc0RlcHRoU3RlbmNpbEF0dGFjaG1lbnQKKyAgICAg
ICAgLSBlbmRQYXNzKCkgaGFzIGJlZW4gcmVuYW1lZCB0byBlbmQoKQorICAgICAgICAtIFNoYWRl
ciBjb21waWxhdGlvbiBub3cgdGFrZXMgYSByZWNvcmQ8ZW50cnkgcG9pbnQgbmFtZSwgR1BVU2hh
ZGVyTW9kdWxlQ29tcGlsYXRpb25IaW50PgorCisgICAgICAgIE5vIG5ldyB0ZXN0cyBiZWNhdXNl
IHRoZSBpbXBsZW1lbnRhdGlvbiBpcyBzdGlsbCBqdXN0IHN0dWJzLgorCisgICAgICAgICogQ01h
a2VMaXN0cy50eHQ6CisgICAgICAgICogRGVyaXZlZFNvdXJjZXMtaW5wdXQueGNmaWxlbGlzdDoK
KyAgICAgICAgKiBEZXJpdmVkU291cmNlcy1vdXRwdXQueGNmaWxlbGlzdDoKKyAgICAgICAgKiBE
ZXJpdmVkU291cmNlcy5tYWtlOgorICAgICAgICAqIEhlYWRlcnMuY21ha2U6CisgICAgICAgICog
TW9kdWxlcy9XZWJHUFUvR1BVQnVmZmVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkdQVUJ1ZmZl
cjo6bWFwQXN5bmMpOgorICAgICAgICAoV2ViQ29yZTo6R1BVQnVmZmVyOjpnZXRNYXBwZWRSYW5n
ZSk6CisgICAgICAgICogTW9kdWxlcy9XZWJHUFUvR1BVQnVmZmVyLmg6CisgICAgICAgICogTW9k
dWxlcy9XZWJHUFUvR1BVQ2FudmFzQ29uZmlndXJhdGlvbi5oOgorICAgICAgICAoV2ViQ29yZTo6
R1BVQ2FudmFzQ29uZmlndXJhdGlvbjo6Y29udmVydFRvQmFja2luZyBjb25zdCk6CisgICAgICAg
ICogTW9kdWxlcy9XZWJHUFUvR1BVQ2FudmFzQ29uZmlndXJhdGlvbi5pZGw6CisgICAgICAgICog
TW9kdWxlcy9XZWJHUFUvR1BVQ29tbWFuZEVuY29kZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
R1BVQ29tbWFuZEVuY29kZXI6OmNsZWFyQnVmZmVyKToKKyAgICAgICAgKFdlYkNvcmU6OkdQVUNv
bW1hbmRFbmNvZGVyOjpmaWxsQnVmZmVyKTogRGVsZXRlZC4KKyAgICAgICAgKiBNb2R1bGVzL1dl
YkdQVS9HUFVDb21tYW5kRW5jb2Rlci5oOgorICAgICAgICAqIE1vZHVsZXMvV2ViR1BVL0dQVUNv
bW1hbmRFbmNvZGVyLmlkbDoKKyAgICAgICAgKiBNb2R1bGVzL1dlYkdQVS9HUFVDb21tYW5kc01p
eGluLmlkbDogQ29waWVkIGZyb20gU291cmNlL1dlYkNvcmUvTW9kdWxlcy9XZWJHUFUvR1BVTG9h
ZE9wLmlkbC4KKyAgICAgICAgKiBNb2R1bGVzL1dlYkdQVS9HUFVDb21wdXRlUGFzc0VuY29kZXIu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6R1BVQ29tcHV0ZVBhc3NFbmNvZGVyOjpkaXNwYXRjaCk6
CisgICAgICAgIChXZWJDb3JlOjpHUFVDb21wdXRlUGFzc0VuY29kZXI6OmVuZCk6CisgICAgICAg
IChXZWJDb3JlOjpHUFVDb21wdXRlUGFzc0VuY29kZXI6OmJlZ2luUGlwZWxpbmVTdGF0aXN0aWNz
UXVlcnkpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6R1BVQ29tcHV0ZVBhc3NFbmNvZGVy
OjplbmRQaXBlbGluZVN0YXRpc3RpY3NRdWVyeSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3Jl
OjpHUFVDb21wdXRlUGFzc0VuY29kZXI6OmVuZFBhc3MpOiBEZWxldGVkLgorICAgICAgICAqIE1v
ZHVsZXMvV2ViR1BVL0dQVUNvbXB1dGVQYXNzRW5jb2Rlci5oOgorICAgICAgICAqIE1vZHVsZXMv
V2ViR1BVL0dQVUNvbXB1dGVQYXNzRW5jb2Rlci5pZGw6CisgICAgICAgICogTW9kdWxlcy9XZWJH
UFUvR1BVRGVidWdDb21tYW5kc01peGluLmlkbDogQ29waWVkIGZyb20gU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9XZWJHUFUvR1BVRnJhZ21lbnRTdGF0ZS5pZGwuCisgICAgICAgICogTW9kdWxlcy9X
ZWJHUFUvR1BVRmVhdHVyZU5hbWUuaDoKKyAgICAgICAgKFdlYkNvcmU6OmNvbnZlcnRUb0JhY2tp
bmcpOgorICAgICAgICAqIE1vZHVsZXMvV2ViR1BVL0dQVUZlYXR1cmVOYW1lLmlkbDoKKyAgICAg
ICAgKiBNb2R1bGVzL1dlYkdQVS9HUFVGcmFnbWVudFN0YXRlLmg6CisgICAgICAgIChXZWJDb3Jl
OjpHUFVGcmFnbWVudFN0YXRlOjpjb252ZXJ0VG9CYWNraW5nIGNvbnN0KToKKyAgICAgICAgKiBN
b2R1bGVzL1dlYkdQVS9HUFVGcmFnbWVudFN0YXRlLmlkbDoKKyAgICAgICAgKiBNb2R1bGVzL1dl
YkdQVS9HUFVJbWFnZUNvcHlFeHRlcm5hbEltYWdlLmg6CisgICAgICAgIChXZWJDb3JlOjpHUFVJ
bWFnZUNvcHlFeHRlcm5hbEltYWdlOjpjb252ZXJ0VG9CYWNraW5nIGNvbnN0KToKKyAgICAgICAg
KiBNb2R1bGVzL1dlYkdQVS9HUFVJbWFnZUNvcHlFeHRlcm5hbEltYWdlLmlkbDoKKyAgICAgICAg
KiBNb2R1bGVzL1dlYkdQVS9HUFVMb2FkT3AuaDoKKyAgICAgICAgKFdlYkNvcmU6OmNvbnZlcnRU
b0JhY2tpbmcpOgorICAgICAgICAqIE1vZHVsZXMvV2ViR1BVL0dQVUxvYWRPcC5pZGw6CisgICAg
ICAgICogTW9kdWxlcy9XZWJHUFUvR1BVT2JqZWN0QmFzZS5pZGw6CisgICAgICAgICogTW9kdWxl
cy9XZWJHUFUvR1BVUGlwZWxpbmVTdGF0aXN0aWNOYW1lLmg6IFJlbW92ZWQuCisgICAgICAgICog
TW9kdWxlcy9XZWJHUFUvR1BVUGlwZWxpbmVTdGF0aXN0aWNOYW1lLmlkbDogUmVtb3ZlZC4KKyAg
ICAgICAgKiBNb2R1bGVzL1dlYkdQVS9HUFVQcm9ncmFtbWFibGVQYXNzRW5jb2Rlci5pZGw6Cisg
ICAgICAgICogTW9kdWxlcy9XZWJHUFUvR1BVUXVlcnlTZXREZXNjcmlwdG9yLmg6CisgICAgICAg
IChXZWJDb3JlOjpHUFVRdWVyeVNldERlc2NyaXB0b3I6OmNvbnZlcnRUb0JhY2tpbmcgY29uc3Qp
OgorICAgICAgICAqIE1vZHVsZXMvV2ViR1BVL0dQVVF1ZXJ5U2V0RGVzY3JpcHRvci5pZGw6Cisg
ICAgICAgICogTW9kdWxlcy9XZWJHUFUvR1BVUXVlcnlUeXBlLmg6CisgICAgICAgIChXZWJDb3Jl
Ojpjb252ZXJ0VG9CYWNraW5nKToKKyAgICAgICAgKiBNb2R1bGVzL1dlYkdQVS9HUFVRdWVyeVR5
cGUuaWRsOgorICAgICAgICAqIE1vZHVsZXMvV2ViR1BVL0dQVVF1ZXVlLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkdQVVF1ZXVlOjp3cml0ZUJ1ZmZlcik6CisgICAgICAgICogTW9kdWxlcy9XZWJH
UFUvR1BVUXVldWUuaDoKKyAgICAgICAgKiBNb2R1bGVzL1dlYkdQVS9HUFVSZW5kZXJCdW5kbGVF
bmNvZGVyLmlkbDoKKyAgICAgICAgKiBNb2R1bGVzL1dlYkdQVS9HUFVSZW5kZXJCdW5kbGVFbmNv
ZGVyRGVzY3JpcHRvci5oOgorICAgICAgICAoV2ViQ29yZTo6R1BVUmVuZGVyQnVuZGxlRW5jb2Rl
ckRlc2NyaXB0b3I6OmNvbnZlcnRUb0JhY2tpbmcgY29uc3QpOgorICAgICAgICAqIE1vZHVsZXMv
V2ViR1BVL0dQVVJlbmRlclBhc3NDb2xvckF0dGFjaG1lbnQuaDoKKyAgICAgICAgKFdlYkNvcmU6
OkdQVVJlbmRlclBhc3NDb2xvckF0dGFjaG1lbnQ6OmNvbnZlcnRUb0JhY2tpbmcgY29uc3QpOgor
ICAgICAgICAqIE1vZHVsZXMvV2ViR1BVL0dQVVJlbmRlclBhc3NDb2xvckF0dGFjaG1lbnQuaWRs
OgorICAgICAgICAqIE1vZHVsZXMvV2ViR1BVL0dQVVJlbmRlclBhc3NEZXB0aFN0ZW5jaWxBdHRh
Y2htZW50Lmg6CisgICAgICAgIChXZWJDb3JlOjpHUFVSZW5kZXJQYXNzRGVwdGhTdGVuY2lsQXR0
YWNobWVudDo6Y29udmVydFRvQmFja2luZyBjb25zdCk6CisgICAgICAgICogTW9kdWxlcy9XZWJH
UFUvR1BVUmVuZGVyUGFzc0RlcHRoU3RlbmNpbEF0dGFjaG1lbnQuaWRsOgorICAgICAgICAqIE1v
ZHVsZXMvV2ViR1BVL0dQVVJlbmRlclBhc3NEZXNjcmlwdG9yLmg6CisgICAgICAgIChXZWJDb3Jl
OjpHUFVSZW5kZXJQYXNzRGVzY3JpcHRvcjo6Y29udmVydFRvQmFja2luZyBjb25zdCk6CisgICAg
ICAgICogTW9kdWxlcy9XZWJHUFUvR1BVUmVuZGVyUGFzc0Rlc2NyaXB0b3IuaWRsOgorICAgICAg
ICAqIE1vZHVsZXMvV2ViR1BVL0dQVVJlbmRlclBhc3NFbmNvZGVyLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkdQVVJlbmRlclBhc3NFbmNvZGVyOjplbmQpOgorICAgICAgICAoV2ViQ29yZTo6R1BV
UmVuZGVyUGFzc0VuY29kZXI6OmJlZ2luUGlwZWxpbmVTdGF0aXN0aWNzUXVlcnkpOiBEZWxldGVk
LgorICAgICAgICAoV2ViQ29yZTo6R1BVUmVuZGVyUGFzc0VuY29kZXI6OmVuZFBpcGVsaW5lU3Rh
dGlzdGljc1F1ZXJ5KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkdQVVJlbmRlclBhc3NF
bmNvZGVyOjplbmRQYXNzKTogRGVsZXRlZC4KKyAgICAgICAgKiBNb2R1bGVzL1dlYkdQVS9HUFVS
ZW5kZXJQYXNzRW5jb2Rlci5oOgorICAgICAgICAqIE1vZHVsZXMvV2ViR1BVL0dQVVJlbmRlclBh
c3NFbmNvZGVyLmlkbDoKKyAgICAgICAgKiBNb2R1bGVzL1dlYkdQVS9HUFVSZW5kZXJQYXNzTGF5
b3V0Lmg6CisgICAgICAgIChXZWJDb3JlOjpHUFVSZW5kZXJQYXNzTGF5b3V0Ojpjb252ZXJ0VG9C
YWNraW5nIGNvbnN0KToKKyAgICAgICAgKiBNb2R1bGVzL1dlYkdQVS9HUFVSZW5kZXJQYXNzTGF5
b3V0LmlkbDoKKyAgICAgICAgKiBNb2R1bGVzL1dlYkdQVS9HUFVTaGFkZXJNb2R1bGVDb21waWxh
dGlvbkhpbnQuaDogQ29waWVkIGZyb20gU291cmNlL1dlYkNvcmUvTW9kdWxlcy9XZWJHUFUvR1BV
TG9hZE9wLmguCisgICAgICAgIChXZWJDb3JlOjpHUFVTaGFkZXJNb2R1bGVDb21waWxhdGlvbkhp
bnQ6OmNvbnZlcnRUb0JhY2tpbmcgY29uc3QpOgorICAgICAgICAqIE1vZHVsZXMvV2ViR1BVL0dQ
VVNoYWRlck1vZHVsZUNvbXBpbGF0aW9uSGludC5pZGw6IENvcGllZCBmcm9tIFNvdXJjZS9XZWJD
b3JlL01vZHVsZXMvV2ViR1BVL0dQVVF1ZXJ5VHlwZS5pZGwuCisgICAgICAgICogTW9kdWxlcy9X
ZWJHUFUvR1BVU2hhZGVyTW9kdWxlRGVzY3JpcHRvci5oOgorICAgICAgICAoV2ViQ29yZTo6R1BV
U2hhZGVyTW9kdWxlRGVzY3JpcHRvcjo6Y29udmVydFRvQmFja2luZyBjb25zdCk6CisgICAgICAg
ICogTW9kdWxlcy9XZWJHUFUvR1BVU2hhZGVyTW9kdWxlRGVzY3JpcHRvci5pZGw6CisgICAgICAg
ICogTW9kdWxlcy9XZWJHUFUvR1BVVGV4dHVyZURlc2NyaXB0b3IuaDoKKyAgICAgICAgKFdlYkNv
cmU6OkdQVVRleHR1cmVEZXNjcmlwdG9yOjpjb252ZXJ0VG9CYWNraW5nIGNvbnN0KToKKyAgICAg
ICAgKiBNb2R1bGVzL1dlYkdQVS9HUFVUZXh0dXJlRGVzY3JpcHRvci5pZGw6CisgICAgICAgICog
TW9kdWxlcy9XZWJHUFUvR1BVVGV4dHVyZUZvcm1hdC5oOgorICAgICAgICAoV2ViQ29yZTo6Y29u
dmVydFRvQmFja2luZyk6CisgICAgICAgICogTW9kdWxlcy9XZWJHUFUvR1BVVGV4dHVyZUZvcm1h
dC5pZGw6CisgICAgICAgICogTW9kdWxlcy9XZWJHUFUvR1BVVW5jYXB0dXJlZEVycm9yRXZlbnQu
aWRsOgorICAgICAgICAqIFNvdXJjZXMudHh0OgorICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvajoKKwogMjAyMi0wMi0xNSAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBw
bGUuY29tPgogCiAgICAgICAgIERvIHByZWxpbWluYXJ5IHdvcmsgdG8gcGFzcyBkb21haW4gbmFt
ZXMgdG8gQ29yZUxvY2F0aW9uCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9QQUwvQ2hhbmdl
TG9nIGIvU291cmNlL1dlYkNvcmUvUEFML0NoYW5nZUxvZwppbmRleCAxN2YzOWIzZTg5ZWYyMTg0
MTc0NjVhZGJjY2E4MzYwZmM3NjBlYjU1Li41YzFlZTg2NzExYTY1NmYyYTA1MDU1NjgwNzllZjJi
ZDA0N2ZmYTEyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9QQUwvQ2hhbmdlTG9nCisrKyBi
L1NvdXJjZS9XZWJDb3JlL1BBTC9DaGFuZ2VMb2cKQEAgLTEsMyArMSw3MCBAQAorMjAyMi0wMi0x
NSAgTXlsZXMgQy4gTWF4ZmllbGQgIDxtbWF4ZmllbGRAYXBwbGUuY29tPgorCisgICAgICAgIFtX
ZWJHUFVdIFVwZGF0ZSBJRExzIGFuZCBzdHVicyB0byBsYXRlc3QgdmVyc2lvbiBvZiB0aGUgc3Bl
YworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjM2NjM5
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBQQUwu
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBwYWwvZ3JhcGhpY3MvV2ViR1BV
L0ltcGwvV2ViR1BVQWRhcHRlckltcGwuY3BwOgorICAgICAgICAoUEFMOjpXZWJHUFU6OnN1cHBv
cnRlZEZlYXR1cmVzKToKKyAgICAgICAgKFBBTDo6V2ViR1BVOjpBZGFwdGVySW1wbDo6cmVxdWVz
dERldmljZSk6CisgICAgICAgICogcGFsL2dyYXBoaWNzL1dlYkdQVS9JbXBsL1dlYkdQVUJ1ZmZl
ckltcGwuY3BwOgorICAgICAgICAoUEFMOjpXZWJHUFU6OkJ1ZmZlckltcGw6Om1hcEFzeW5jKToK
KyAgICAgICAgKFBBTDo6V2ViR1BVOjpCdWZmZXJJbXBsOjpnZXRNYXBwZWRSYW5nZSk6CisgICAg
ICAgICogcGFsL2dyYXBoaWNzL1dlYkdQVS9JbXBsL1dlYkdQVUJ1ZmZlckltcGwuaDoKKyAgICAg
ICAgKiBwYWwvZ3JhcGhpY3MvV2ViR1BVL0ltcGwvV2ViR1BVQ29tbWFuZEVuY29kZXJJbXBsLmNw
cDoKKyAgICAgICAgKFBBTDo6V2ViR1BVOjpDb21tYW5kRW5jb2RlckltcGw6OmJlZ2luUmVuZGVy
UGFzcyk6CisgICAgICAgIChQQUw6OldlYkdQVTo6Q29tbWFuZEVuY29kZXJJbXBsOjpiZWdpbkNv
bXB1dGVQYXNzKToKKyAgICAgICAgKFBBTDo6V2ViR1BVOjpDb21tYW5kRW5jb2RlckltcGw6OmNs
ZWFyQnVmZmVyKToKKyAgICAgICAgKFBBTDo6V2ViR1BVOjpDb21tYW5kRW5jb2RlckltcGw6OmZp
bGxCdWZmZXIpOiBEZWxldGVkLgorICAgICAgICAqIHBhbC9ncmFwaGljcy9XZWJHUFUvSW1wbC9X
ZWJHUFVDb21tYW5kRW5jb2RlckltcGwuaDoKKyAgICAgICAgKiBwYWwvZ3JhcGhpY3MvV2ViR1BV
L0ltcGwvV2ViR1BVQ29tcHV0ZVBhc3NFbmNvZGVySW1wbC5jcHA6CisgICAgICAgIChQQUw6Oldl
YkdQVTo6Q29tcHV0ZVBhc3NFbmNvZGVySW1wbDo6ZGlzcGF0Y2gpOgorICAgICAgICAoUEFMOjpX
ZWJHUFU6OkNvbXB1dGVQYXNzRW5jb2RlckltcGw6OmVuZCk6CisgICAgICAgIChQQUw6OldlYkdQ
VTo6Q29tcHV0ZVBhc3NFbmNvZGVySW1wbDo6YmVnaW5QaXBlbGluZVN0YXRpc3RpY3NRdWVyeSk6
IERlbGV0ZWQuCisgICAgICAgIChQQUw6OldlYkdQVTo6Q29tcHV0ZVBhc3NFbmNvZGVySW1wbDo6
ZW5kUGlwZWxpbmVTdGF0aXN0aWNzUXVlcnkpOiBEZWxldGVkLgorICAgICAgICAoUEFMOjpXZWJH
UFU6OkNvbXB1dGVQYXNzRW5jb2RlckltcGw6OmVuZFBhc3MpOiBEZWxldGVkLgorICAgICAgICAq
IHBhbC9ncmFwaGljcy9XZWJHUFUvSW1wbC9XZWJHUFVDb21wdXRlUGFzc0VuY29kZXJJbXBsLmg6
CisgICAgICAgICogcGFsL2dyYXBoaWNzL1dlYkdQVS9JbXBsL1dlYkdQVUNvbnZlcnRUb0JhY2tp
bmdDb250ZXh0LmNwcDoKKyAgICAgICAgKFBBTDo6V2ViR1BVOjpDb252ZXJ0VG9CYWNraW5nQ29u
dGV4dDo6Y29udmVydFRvQmFja2luZyk6CisgICAgICAgICogcGFsL2dyYXBoaWNzL1dlYkdQVS9J
bXBsL1dlYkdQVUNvbnZlcnRUb0JhY2tpbmdDb250ZXh0Lmg6CisgICAgICAgICogcGFsL2dyYXBo
aWNzL1dlYkdQVS9JbXBsL1dlYkdQVURldmljZUltcGwuY3BwOgorICAgICAgICAoUEFMOjpXZWJH
UFU6OkRldmljZUltcGw6OmNyZWF0ZVRleHR1cmUpOgorICAgICAgICAoUEFMOjpXZWJHUFU6OkRl
dmljZUltcGw6OmNyZWF0ZVNoYWRlck1vZHVsZSk6CisgICAgICAgIChQQUw6OldlYkdQVTo6Y29u
dmVydFRvQmFja2luZyk6CisgICAgICAgIChQQUw6OldlYkdQVTo6RGV2aWNlSW1wbDo6Y3JlYXRl
UmVuZGVyQnVuZGxlRW5jb2Rlcik6CisgICAgICAgIChQQUw6OldlYkdQVTo6RGV2aWNlSW1wbDo6
Y3JlYXRlUXVlcnlTZXQpOgorICAgICAgICAqIHBhbC9ncmFwaGljcy9XZWJHUFUvSW1wbC9XZWJH
UFVJbXBsLmNwcDoKKyAgICAgICAgKFBBTDo6V2ViR1BVOjpHUFVJbXBsOjpyZXF1ZXN0QWRhcHRl
cik6CisgICAgICAgICogcGFsL2dyYXBoaWNzL1dlYkdQVS9JbXBsL1dlYkdQVVJlbmRlclBhc3NF
bmNvZGVySW1wbC5jcHA6CisgICAgICAgIChQQUw6OldlYkdQVTo6UmVuZGVyUGFzc0VuY29kZXJJ
bXBsOjplbmQpOgorICAgICAgICAoUEFMOjpXZWJHUFU6OlJlbmRlclBhc3NFbmNvZGVySW1wbDo6
YmVnaW5QaXBlbGluZVN0YXRpc3RpY3NRdWVyeSk6IERlbGV0ZWQuCisgICAgICAgIChQQUw6Oldl
YkdQVTo6UmVuZGVyUGFzc0VuY29kZXJJbXBsOjplbmRQaXBlbGluZVN0YXRpc3RpY3NRdWVyeSk6
IERlbGV0ZWQuCisgICAgICAgIChQQUw6OldlYkdQVTo6UmVuZGVyUGFzc0VuY29kZXJJbXBsOjpl
bmRQYXNzKTogRGVsZXRlZC4KKyAgICAgICAgKiBwYWwvZ3JhcGhpY3MvV2ViR1BVL0ltcGwvV2Vi
R1BVUmVuZGVyUGFzc0VuY29kZXJJbXBsLmg6CisgICAgICAgICogcGFsL2dyYXBoaWNzL1dlYkdQ
VS9XZWJHUFVCdWZmZXIuaDoKKyAgICAgICAgKiBwYWwvZ3JhcGhpY3MvV2ViR1BVL1dlYkdQVUNh
bnZhc0NvbmZpZ3VyYXRpb24uaDoKKyAgICAgICAgKiBwYWwvZ3JhcGhpY3MvV2ViR1BVL1dlYkdQ
VUNvbW1hbmRFbmNvZGVyLmg6CisgICAgICAgICogcGFsL2dyYXBoaWNzL1dlYkdQVS9XZWJHUFVD
b21wdXRlUGFzc0VuY29kZXIuaDoKKyAgICAgICAgKiBwYWwvZ3JhcGhpY3MvV2ViR1BVL1dlYkdQ
VUZlYXR1cmVOYW1lLmg6CisgICAgICAgICogcGFsL2dyYXBoaWNzL1dlYkdQVS9XZWJHUFVGcmFn
bWVudFN0YXRlLmg6CisgICAgICAgICogcGFsL2dyYXBoaWNzL1dlYkdQVS9XZWJHUFVJbWFnZUNv
cHlFeHRlcm5hbEltYWdlLmg6CisgICAgICAgICogcGFsL2dyYXBoaWNzL1dlYkdQVS9XZWJHUFVM
b2FkT3AuaDoKKyAgICAgICAgKiBwYWwvZ3JhcGhpY3MvV2ViR1BVL1dlYkdQVVBpcGVsaW5lU3Rh
dGlzdGljTmFtZS5oOiBSZW1vdmVkLgorICAgICAgICAqIHBhbC9ncmFwaGljcy9XZWJHUFUvV2Vi
R1BVUXVlcnlTZXREZXNjcmlwdG9yLmg6CisgICAgICAgICogcGFsL2dyYXBoaWNzL1dlYkdQVS9X
ZWJHUFVRdWVyeVR5cGUuaDoKKyAgICAgICAgKiBwYWwvZ3JhcGhpY3MvV2ViR1BVL1dlYkdQVVF1
ZXVlLmg6CisgICAgICAgICogcGFsL2dyYXBoaWNzL1dlYkdQVS9XZWJHUFVSZW5kZXJQYXNzQ29s
b3JBdHRhY2htZW50Lmg6CisgICAgICAgICogcGFsL2dyYXBoaWNzL1dlYkdQVS9XZWJHUFVSZW5k
ZXJQYXNzRGVwdGhTdGVuY2lsQXR0YWNobWVudC5oOgorICAgICAgICAqIHBhbC9ncmFwaGljcy9X
ZWJHUFUvV2ViR1BVUmVuZGVyUGFzc0Rlc2NyaXB0b3IuaDoKKyAgICAgICAgKiBwYWwvZ3JhcGhp
Y3MvV2ViR1BVL1dlYkdQVVJlbmRlclBhc3NFbmNvZGVyLmg6CisgICAgICAgICogcGFsL2dyYXBo
aWNzL1dlYkdQVS9XZWJHUFVSZW5kZXJQYXNzTGF5b3V0Lmg6CisgICAgICAgICogcGFsL2dyYXBo
aWNzL1dlYkdQVS9XZWJHUFVTaGFkZXJNb2R1bGVDb21waWxhdGlvbkhpbnQuaDogQ29waWVkIGZy
b20gU291cmNlL1dlYkNvcmUvUEFML3BhbC9ncmFwaGljcy9XZWJHUFUvV2ViR1BVSW1hZ2VDb3B5
RXh0ZXJuYWxJbWFnZS5oLgorICAgICAgICAqIHBhbC9ncmFwaGljcy9XZWJHUFUvV2ViR1BVU2hh
ZGVyTW9kdWxlRGVzY3JpcHRvci5oOgorICAgICAgICAqIHBhbC9ncmFwaGljcy9XZWJHUFUvV2Vi
R1BVVGV4dHVyZURlc2NyaXB0b3IuaDoKKyAgICAgICAgKiBwYWwvZ3JhcGhpY3MvV2ViR1BVL1dl
YkdQVVRleHR1cmVGb3JtYXQuaDoKKwogMjAyMi0wMi0xNSAgQWxleCBDaHJpc3RlbnNlbiAgPGFj
aHJpc3RlbnNlbkB3ZWJraXQub3JnPgogCiAgICAgICAgIEZpeCBpbnRlcm5hbCBCaWcgU3VyIGJ1
aWxkCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViR1BVL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJHUFUv
Q2hhbmdlTG9nCmluZGV4IDgxZTMwMTUzMzEzNWEwZTM3NzUzN2EyMDRkNmVmMzBlODY2MjY0MmUu
LmFmNjM0MjA4YzY2NDg5NTVjMmNkODgyMTc2NzMyZWY1NWRlOTZiYjkgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJHUFUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJHUFUvQ2hhbmdlTG9nCkBAIC0x
LDMgKzEsNDUgQEAKKzIwMjItMDItMTUgIE15bGVzIEMuIE1heGZpZWxkICA8bW1heGZpZWxkQGFw
cGxlLmNvbT4KKworICAgICAgICBbV2ViR1BVXSBVcGRhdGUgSURMcyBhbmQgc3R1YnMgdG8gbGF0
ZXN0IHZlcnNpb24gb2YgdGhlIHNwZWMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTIzNjYzOQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgICogV2ViR1BVL0FkYXB0ZXIuaDoKKyAgICAgICAgKiBXZWJHUFUvQWRh
cHRlci5tbToKKyAgICAgICAgKFdlYkdQVTo6QWRhcHRlcjo6ZW51bWVyYXRlRmVhdHVyZXMpOgor
ICAgICAgICAod2dwdUFkYXB0ZXJFbnVtZXJhdGVGZWF0dXJlcyk6CisgICAgICAgIChXZWJHUFU6
OkFkYXB0ZXI6OmdldEZlYXR1cmVBdEluZGV4KTogRGVsZXRlZC4KKyAgICAgICAgKHdncHVBZGFw
dGVyR2V0RmVhdHVyZUF0SW5kZXgpOiBEZWxldGVkLgorICAgICAgICAqIFdlYkdQVS9Db21tYW5k
RW5jb2Rlci5oOgorICAgICAgICAqIFdlYkdQVS9Db21tYW5kRW5jb2Rlci5tbToKKyAgICAgICAg
KFdlYkdQVTo6Q29tbWFuZEVuY29kZXI6OmNsZWFyQnVmZmVyKToKKyAgICAgICAgKHdncHVDb21t
YW5kRW5jb2RlckNsZWFyQnVmZmVyKToKKyAgICAgICAgKFdlYkdQVTo6Q29tbWFuZEVuY29kZXI6
OmZpbGxCdWZmZXIpOiBEZWxldGVkLgorICAgICAgICAod2dwdUNvbW1hbmRFbmNvZGVyRmlsbEJ1
ZmZlcik6IERlbGV0ZWQuCisgICAgICAgICogV2ViR1BVL0NvbXB1dGVQYXNzRW5jb2Rlci5oOgor
ICAgICAgICAqIFdlYkdQVS9Db21wdXRlUGFzc0VuY29kZXIubW06CisgICAgICAgIChXZWJHUFU6
OkNvbXB1dGVQYXNzRW5jb2Rlcjo6d3JpdGVUaW1lc3RhbXApOiBEZWxldGVkLgorICAgICAgICAo
d2dwdUNvbXB1dGVQYXNzRW5jb2RlcldyaXRlVGltZXN0YW1wKTogRGVsZXRlZC4KKyAgICAgICAg
KiBXZWJHUFUvRGV2aWNlLmg6CisgICAgICAgICogV2ViR1BVL0RldmljZS5tbToKKyAgICAgICAg
KFdlYkdQVTo6RGV2aWNlOjplbnVtZXJhdGVGZWF0dXJlcyk6CisgICAgICAgIChXZWJHUFU6OkRl
dmljZTo6aGFzRmVhdHVyZSk6CisgICAgICAgICh3Z3B1RGV2aWNlRW51bWVyYXRlRmVhdHVyZXMp
OgorICAgICAgICAod2dwdURldmljZUhhc0ZlYXR1cmUpOgorICAgICAgICAqIFdlYkdQVS9JbnN0
YW5jZS5tbToKKyAgICAgICAgKHdncHVHZXRQcm9jQWRkcmVzcyk6CisgICAgICAgICogV2ViR1BV
L1JlbmRlclBhc3NFbmNvZGVyLmg6CisgICAgICAgICogV2ViR1BVL1JlbmRlclBhc3NFbmNvZGVy
Lm1tOgorICAgICAgICAoV2ViR1BVOjpSZW5kZXJQYXNzRW5jb2Rlcjo6d3JpdGVUaW1lc3RhbXAp
OiBEZWxldGVkLgorICAgICAgICAod2dwdVJlbmRlclBhc3NFbmNvZGVyV3JpdGVUaW1lc3RhbXAp
OiBEZWxldGVkLgorICAgICAgICAqIFdlYkdQVS9TaGFkZXJNb2R1bGUuaDoKKyAgICAgICAgKiBX
ZWJHUFUvU2hhZGVyTW9kdWxlLm1tOgorICAgICAgICAoV2ViR1BVOjpTaGFkZXJNb2R1bGU6Omdl
dENvbXBpbGF0aW9uSW5mbyk6CisgICAgICAgICh3Z3B1U2hhZGVyTW9kdWxlR2V0Q29tcGlsYXRp
b25JbmZvKToKKyAgICAgICAgKiBXZWJHUFUvV2ViR1BVLmg6CisgICAgICAgICogV2ViR1BVL1dl
YkdQVUV4dC5oOgorCiAyMDIyLTAyLTE1ICBSb2JpbiBNb3Jpc3NldCAgPHJtb3Jpc3NldEBhcHBs
ZS5jb20+CiAKICAgICAgICAgW1dHU0xdIEltcGxlbWVudCBlbm91Z2ggb2YgdGhlIGxleGVyIGZv
ciB0aGUgc2ltcGxlc3Qgc2hhZGVycwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9DaGFuZ2VM
b2cgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwppbmRleCBkOGJkYjE5MWE0NmRiM2UxNGEzMmU4
NGY4NGMyMTMxNWRlNDRkM2Q2Li5hMjQ4N2M2NjdmZmZmNTBhNTUwOWY0MzZiZjg3YTAyMGY0ZmVh
ODAwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2Vi
S2l0L0NoYW5nZUxvZwpAQCAtMSwzICsxLDEyNCBAQAorMjAyMi0wMi0xNSAgTXlsZXMgQy4gTWF4
ZmllbGQgIDxtbWF4ZmllbGRAYXBwbGUuY29tPgorCisgICAgICAgIFtXZWJHUFVdIFVwZGF0ZSBJ
RExzIGFuZCBzdHVicyB0byBsYXRlc3QgdmVyc2lvbiBvZiB0aGUgc3BlYworICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjM2NjM5CisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBHUFVQcm9jZXNzL2dyYXBoaWNz
L1dlYkdQVS9SZW1vdGVCdWZmZXIuY3BwOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVCdWZmZXI6
Om1hcEFzeW5jKToKKyAgICAgICAgKiBHUFVQcm9jZXNzL2dyYXBoaWNzL1dlYkdQVS9SZW1vdGVC
dWZmZXIuaDoKKyAgICAgICAgKiBHUFVQcm9jZXNzL2dyYXBoaWNzL1dlYkdQVS9SZW1vdGVCdWZm
ZXIubWVzc2FnZXMuaW46CisgICAgICAgICogR1BVUHJvY2Vzcy9ncmFwaGljcy9XZWJHUFUvUmVt
b3RlQ29tbWFuZEVuY29kZXIuY3BwOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVDb21tYW5kRW5j
b2Rlcjo6Y2xlYXJCdWZmZXIpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVDb21tYW5kRW5jb2Rl
cjo6ZmlsbEJ1ZmZlcik6IERlbGV0ZWQuCisgICAgICAgICogR1BVUHJvY2Vzcy9ncmFwaGljcy9X
ZWJHUFUvUmVtb3RlQ29tbWFuZEVuY29kZXIuaDoKKyAgICAgICAgKiBHUFVQcm9jZXNzL2dyYXBo
aWNzL1dlYkdQVS9SZW1vdGVDb21tYW5kRW5jb2Rlci5tZXNzYWdlcy5pbjoKKyAgICAgICAgKiBH
UFVQcm9jZXNzL2dyYXBoaWNzL1dlYkdQVS9SZW1vdGVDb21wdXRlUGFzc0VuY29kZXIuY3BwOgor
ICAgICAgICAoV2ViS2l0OjpSZW1vdGVDb21wdXRlUGFzc0VuY29kZXI6OmRpc3BhdGNoKToKKyAg
ICAgICAgKFdlYktpdDo6UmVtb3RlQ29tcHV0ZVBhc3NFbmNvZGVyOjplbmQpOgorICAgICAgICAo
V2ViS2l0OjpSZW1vdGVDb21wdXRlUGFzc0VuY29kZXI6OmJlZ2luUGlwZWxpbmVTdGF0aXN0aWNz
UXVlcnkpOiBEZWxldGVkLgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVDb21wdXRlUGFzc0VuY29k
ZXI6OmVuZFBpcGVsaW5lU3RhdGlzdGljc1F1ZXJ5KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYktp
dDo6UmVtb3RlQ29tcHV0ZVBhc3NFbmNvZGVyOjplbmRQYXNzKTogRGVsZXRlZC4KKyAgICAgICAg
KiBHUFVQcm9jZXNzL2dyYXBoaWNzL1dlYkdQVS9SZW1vdGVDb21wdXRlUGFzc0VuY29kZXIuaDoK
KyAgICAgICAgKiBHUFVQcm9jZXNzL2dyYXBoaWNzL1dlYkdQVS9SZW1vdGVDb21wdXRlUGFzc0Vu
Y29kZXIubWVzc2FnZXMuaW46CisgICAgICAgICogR1BVUHJvY2Vzcy9ncmFwaGljcy9XZWJHUFUv
UmVtb3RlUmVuZGVyUGFzc0VuY29kZXIuY3BwOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVSZW5k
ZXJQYXNzRW5jb2Rlcjo6ZW5kKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlUmVuZGVyUGFzc0Vu
Y29kZXI6OmJlZ2luUGlwZWxpbmVTdGF0aXN0aWNzUXVlcnkpOiBEZWxldGVkLgorICAgICAgICAo
V2ViS2l0OjpSZW1vdGVSZW5kZXJQYXNzRW5jb2Rlcjo6ZW5kUGlwZWxpbmVTdGF0aXN0aWNzUXVl
cnkpOiBEZWxldGVkLgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVSZW5kZXJQYXNzRW5jb2Rlcjo6
ZW5kUGFzcyk6IERlbGV0ZWQuCisgICAgICAgICogR1BVUHJvY2Vzcy9ncmFwaGljcy9XZWJHUFUv
UmVtb3RlUmVuZGVyUGFzc0VuY29kZXIuaDoKKyAgICAgICAgKiBHUFVQcm9jZXNzL2dyYXBoaWNz
L1dlYkdQVS9SZW1vdGVSZW5kZXJQYXNzRW5jb2Rlci5tZXNzYWdlcy5pbjoKKyAgICAgICAgKiBT
aGFyZWQvV2ViR1BVL1dlYkdQVUNhbnZhc0NvbmZpZ3VyYXRpb24uY3BwOgorICAgICAgICAoV2Vi
S2l0OjpXZWJHUFU6OkNvbnZlcnRUb0JhY2tpbmdDb250ZXh0Ojpjb252ZXJ0VG9CYWNraW5nKToK
KyAgICAgICAgKFdlYktpdDo6V2ViR1BVOjpDb252ZXJ0RnJvbUJhY2tpbmdDb250ZXh0Ojpjb252
ZXJ0RnJvbUJhY2tpbmcpOgorICAgICAgICAqIFNoYXJlZC9XZWJHUFUvV2ViR1BVQ2FudmFzQ29u
ZmlndXJhdGlvbi5oOgorICAgICAgICAoV2ViS2l0OjpXZWJHUFU6OkNhbnZhc0NvbmZpZ3VyYXRp
b246OmVuY29kZSBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6OldlYkdQVTo6Q2FudmFzQ29uZmln
dXJhdGlvbjo6ZGVjb2RlKToKKyAgICAgICAgKiBTaGFyZWQvV2ViR1BVL1dlYkdQVUNvbnZlcnRG
cm9tQmFja2luZ0NvbnRleHQuaDoKKyAgICAgICAgKiBTaGFyZWQvV2ViR1BVL1dlYkdQVUNvbnZl
cnRUb0JhY2tpbmdDb250ZXh0Lmg6CisgICAgICAgICogU2hhcmVkL1dlYkdQVS9XZWJHUFVGcmFn
bWVudFN0YXRlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViR1BVOjpDb252ZXJ0VG9CYWNraW5n
Q29udGV4dDo6Y29udmVydFRvQmFja2luZyk6CisgICAgICAgIChXZWJLaXQ6OldlYkdQVTo6Q29u
dmVydEZyb21CYWNraW5nQ29udGV4dDo6Y29udmVydEZyb21CYWNraW5nKToKKyAgICAgICAgKiBT
aGFyZWQvV2ViR1BVL1dlYkdQVUZyYWdtZW50U3RhdGUuaDoKKyAgICAgICAgKFdlYktpdDo6V2Vi
R1BVOjpGcmFnbWVudFN0YXRlOjpkZWNvZGUpOgorICAgICAgICAqIFNoYXJlZC9XZWJHUFUvV2Vi
R1BVSW1hZ2VDb3B5RXh0ZXJuYWxJbWFnZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYkdQVTo6
Q29udmVydFRvQmFja2luZ0NvbnRleHQ6OmNvbnZlcnRUb0JhY2tpbmcpOgorICAgICAgICAoV2Vi
S2l0OjpXZWJHUFU6OkNvbnZlcnRGcm9tQmFja2luZ0NvbnRleHQ6OmNvbnZlcnRGcm9tQmFja2lu
Zyk6CisgICAgICAgICogU2hhcmVkL1dlYkdQVS9XZWJHUFVJbWFnZUNvcHlFeHRlcm5hbEltYWdl
Lmg6CisgICAgICAgIChXZWJLaXQ6OldlYkdQVTo6SW1hZ2VDb3B5RXh0ZXJuYWxJbWFnZTo6ZW5j
b2RlIGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6V2ViR1BVOjpJbWFnZUNvcHlFeHRlcm5hbElt
YWdlOjpkZWNvZGUpOgorICAgICAgICAqIFNoYXJlZC9XZWJHUFUvV2ViR1BVSW1hZ2VDb3B5VGV4
dHVyZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYkdQVTo6Q29udmVydFRvQmFja2luZ0NvbnRl
eHQ6OmNvbnZlcnRUb0JhY2tpbmcpOgorICAgICAgICAoV2ViS2l0OjpXZWJHUFU6OkNvbnZlcnRG
cm9tQmFja2luZ0NvbnRleHQ6OmNvbnZlcnRGcm9tQmFja2luZyk6CisgICAgICAgICogU2hhcmVk
L1dlYkdQVS9XZWJHUFVRdWVyeVNldERlc2NyaXB0b3IuY3BwOgorICAgICAgICAoV2ViS2l0OjpX
ZWJHUFU6OkNvbnZlcnRUb0JhY2tpbmdDb250ZXh0Ojpjb252ZXJ0VG9CYWNraW5nKToKKyAgICAg
ICAgKFdlYktpdDo6V2ViR1BVOjpDb252ZXJ0RnJvbUJhY2tpbmdDb250ZXh0Ojpjb252ZXJ0RnJv
bUJhY2tpbmcpOgorICAgICAgICAqIFNoYXJlZC9XZWJHUFUvV2ViR1BVUXVlcnlTZXREZXNjcmlw
dG9yLmg6CisgICAgICAgIChXZWJLaXQ6OldlYkdQVTo6UXVlcnlTZXREZXNjcmlwdG9yOjplbmNv
ZGUgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpXZWJHUFU6OlF1ZXJ5U2V0RGVzY3JpcHRvcjo6
ZGVjb2RlKToKKyAgICAgICAgKiBTaGFyZWQvV2ViR1BVL1dlYkdQVVJlbmRlclBhc3NDb2xvckF0
dGFjaG1lbnQuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJHUFU6OkNvbnZlcnRUb0JhY2tpbmdD
b250ZXh0Ojpjb252ZXJ0VG9CYWNraW5nKToKKyAgICAgICAgKFdlYktpdDo6V2ViR1BVOjpDb252
ZXJ0RnJvbUJhY2tpbmdDb250ZXh0Ojpjb252ZXJ0RnJvbUJhY2tpbmcpOgorICAgICAgICAqIFNo
YXJlZC9XZWJHUFUvV2ViR1BVUmVuZGVyUGFzc0NvbG9yQXR0YWNobWVudC5oOgorICAgICAgICAo
V2ViS2l0OjpXZWJHUFU6OlJlbmRlclBhc3NDb2xvckF0dGFjaG1lbnQ6OmVuY29kZSBjb25zdCk6
CisgICAgICAgIChXZWJLaXQ6OldlYkdQVTo6UmVuZGVyUGFzc0NvbG9yQXR0YWNobWVudDo6ZGVj
b2RlKToKKyAgICAgICAgKiBTaGFyZWQvV2ViR1BVL1dlYkdQVVJlbmRlclBhc3NEZXB0aFN0ZW5j
aWxBdHRhY2htZW50LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViR1BVOjpDb252ZXJ0VG9CYWNr
aW5nQ29udGV4dDo6Y29udmVydFRvQmFja2luZyk6CisgICAgICAgIChXZWJLaXQ6OldlYkdQVTo6
Q29udmVydEZyb21CYWNraW5nQ29udGV4dDo6Y29udmVydEZyb21CYWNraW5nKToKKyAgICAgICAg
KiBTaGFyZWQvV2ViR1BVL1dlYkdQVVJlbmRlclBhc3NEZXB0aFN0ZW5jaWxBdHRhY2htZW50Lmg6
CisgICAgICAgIChXZWJLaXQ6OldlYkdQVTo6UmVuZGVyUGFzc0RlcHRoU3RlbmNpbEF0dGFjaG1l
bnQ6OmVuY29kZSBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6OldlYkdQVTo6UmVuZGVyUGFzc0Rl
cHRoU3RlbmNpbEF0dGFjaG1lbnQ6OmRlY29kZSk6CisgICAgICAgICogU2hhcmVkL1dlYkdQVS9X
ZWJHUFVSZW5kZXJQYXNzRGVzY3JpcHRvci5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYkdQVTo6
Q29udmVydFRvQmFja2luZ0NvbnRleHQ6OmNvbnZlcnRUb0JhY2tpbmcpOgorICAgICAgICAoV2Vi
S2l0OjpXZWJHUFU6OkNvbnZlcnRGcm9tQmFja2luZ0NvbnRleHQ6OmNvbnZlcnRGcm9tQmFja2lu
Zyk6CisgICAgICAgICogU2hhcmVkL1dlYkdQVS9XZWJHUFVSZW5kZXJQYXNzRGVzY3JpcHRvci5o
OgorICAgICAgICAoV2ViS2l0OjpXZWJHUFU6OlJlbmRlclBhc3NEZXNjcmlwdG9yOjpkZWNvZGUp
OgorICAgICAgICAqIFNoYXJlZC9XZWJHUFUvV2ViR1BVUmVuZGVyUGFzc0xheW91dC5oOgorICAg
ICAgICAoV2ViS2l0OjpXZWJHUFU6OlJlbmRlclBhc3NMYXlvdXQ6OmRlY29kZSk6CisgICAgICAg
ICogU2hhcmVkL1dlYkdQVS9XZWJHUFVTaGFkZXJNb2R1bGVDb21waWxhdGlvbkhpbnQuY3BwOiBD
b3BpZWQgZnJvbSBTb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJHUFUvV2ViR1BVU2hhZGVyTW9kdWxl
RGVzY3JpcHRvci5jcHAuCisgICAgICAgIChXZWJLaXQ6OldlYkdQVTo6Q29udmVydFRvQmFja2lu
Z0NvbnRleHQ6OmNvbnZlcnRUb0JhY2tpbmcpOgorICAgICAgICAoV2ViS2l0OjpXZWJHUFU6OkNv
bnZlcnRGcm9tQmFja2luZ0NvbnRleHQ6OmNvbnZlcnRGcm9tQmFja2luZyk6CisgICAgICAgICog
U2hhcmVkL1dlYkdQVS9XZWJHUFVTaGFkZXJNb2R1bGVDb21waWxhdGlvbkhpbnQuaDogQ29waWVk
IGZyb20gU291cmNlL1dlYktpdC9TaGFyZWQvV2ViR1BVL1dlYkdQVUltYWdlQ29weUV4dGVybmFs
SW1hZ2UuaC4KKyAgICAgICAgKFdlYktpdDo6V2ViR1BVOjpTaGFkZXJNb2R1bGVDb21waWxhdGlv
bkhpbnQ6OmVuY29kZSBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6OldlYkdQVTo6U2hhZGVyTW9k
dWxlQ29tcGlsYXRpb25IaW50OjpkZWNvZGUpOgorICAgICAgICAqIFNoYXJlZC9XZWJHUFUvV2Vi
R1BVU2hhZGVyTW9kdWxlRGVzY3JpcHRvci5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYkdQVTo6
Q29udmVydFRvQmFja2luZ0NvbnRleHQ6OmNvbnZlcnRUb0JhY2tpbmcpOgorICAgICAgICAoV2Vi
S2l0OjpXZWJHUFU6OkNvbnZlcnRGcm9tQmFja2luZ0NvbnRleHQ6OmNvbnZlcnRGcm9tQmFja2lu
Zyk6CisgICAgICAgICogU2hhcmVkL1dlYkdQVS9XZWJHUFVTaGFkZXJNb2R1bGVEZXNjcmlwdG9y
Lmg6CisgICAgICAgIChXZWJLaXQ6OldlYkdQVTo6U2hhZGVyTW9kdWxlRGVzY3JpcHRvcjo6ZW5j
b2RlIGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6V2ViR1BVOjpTaGFkZXJNb2R1bGVEZXNjcmlw
dG9yOjpkZWNvZGUpOgorICAgICAgICAqIFNoYXJlZC9XZWJHUFUvV2ViR1BVVGV4dHVyZURlc2Ny
aXB0b3IuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJHUFU6OkNvbnZlcnRUb0JhY2tpbmdDb250
ZXh0Ojpjb252ZXJ0VG9CYWNraW5nKToKKyAgICAgICAgKFdlYktpdDo6V2ViR1BVOjpDb252ZXJ0
RnJvbUJhY2tpbmdDb250ZXh0Ojpjb252ZXJ0RnJvbUJhY2tpbmcpOgorICAgICAgICAqIFNoYXJl
ZC9XZWJHUFUvV2ViR1BVVGV4dHVyZURlc2NyaXB0b3IuaDoKKyAgICAgICAgKFdlYktpdDo6V2Vi
R1BVOjpUZXh0dXJlRGVzY3JpcHRvcjo6ZW5jb2RlIGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6
V2ViR1BVOjpUZXh0dXJlRGVzY3JpcHRvcjo6ZGVjb2RlKToKKyAgICAgICAgKiBTb3VyY2VzLnR4
dDoKKyAgICAgICAgKiBXZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAg
KiBXZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9XZWJHUFUvUmVtb3RlQnVmZmVyUHJveHkuY3BwOgor
ICAgICAgICAoV2ViS2l0OjpXZWJHUFU6OlJlbW90ZUJ1ZmZlclByb3h5OjptYXBBc3luYyk6Cisg
ICAgICAgIChXZWJLaXQ6OldlYkdQVTo6UmVtb3RlQnVmZmVyUHJveHk6OmdldE1hcHBlZFJhbmdl
KToKKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9XZWJHUFUvUmVtb3RlQnVmZmVy
UHJveHkuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9XZWJHUFUvUmVtb3Rl
Q29tbWFuZEVuY29kZXJQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYkdQVTo6UmVtb3Rl
Q29tbWFuZEVuY29kZXJQcm94eTo6Y2xlYXJCdWZmZXIpOgorICAgICAgICAoV2ViS2l0OjpXZWJH
UFU6OlJlbW90ZUNvbW1hbmRFbmNvZGVyUHJveHk6OmZpbGxCdWZmZXIpOiBEZWxldGVkLgorICAg
ICAgICAqIFdlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1dlYkdQVS9SZW1vdGVDb21tYW5kRW5jb2Rl
clByb3h5Lmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvV2ViR1BVL1JlbW90
ZUNvbXB1dGVQYXNzRW5jb2RlclByb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViR1BVOjpS
ZW1vdGVDb21wdXRlUGFzc0VuY29kZXJQcm94eTo6ZGlzcGF0Y2gpOgorICAgICAgICAoV2ViS2l0
OjpXZWJHUFU6OlJlbW90ZUNvbXB1dGVQYXNzRW5jb2RlclByb3h5OjplbmQpOgorICAgICAgICAo
V2ViS2l0OjpXZWJHUFU6OlJlbW90ZUNvbXB1dGVQYXNzRW5jb2RlclByb3h5OjpiZWdpblBpcGVs
aW5lU3RhdGlzdGljc1F1ZXJ5KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYktpdDo6V2ViR1BVOjpS
ZW1vdGVDb21wdXRlUGFzc0VuY29kZXJQcm94eTo6ZW5kUGlwZWxpbmVTdGF0aXN0aWNzUXVlcnkp
OiBEZWxldGVkLgorICAgICAgICAoV2ViS2l0OjpXZWJHUFU6OlJlbW90ZUNvbXB1dGVQYXNzRW5j
b2RlclByb3h5OjplbmRQYXNzKTogRGVsZXRlZC4KKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQVS9n
cmFwaGljcy9XZWJHUFUvUmVtb3RlQ29tcHV0ZVBhc3NFbmNvZGVyUHJveHkuaDoKKyAgICAgICAg
KiBXZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9XZWJHUFUvUmVtb3RlUXVldWVQcm94eS5oOgorICAg
ICAgICAqIFdlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1dlYkdQVS9SZW1vdGVSZW5kZXJQYXNzRW5j
b2RlclByb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViR1BVOjpSZW1vdGVSZW5kZXJQYXNz
RW5jb2RlclByb3h5OjplbmQpOgorICAgICAgICAoV2ViS2l0OjpXZWJHUFU6OlJlbW90ZVJlbmRl
clBhc3NFbmNvZGVyUHJveHk6OmJlZ2luUGlwZWxpbmVTdGF0aXN0aWNzUXVlcnkpOiBEZWxldGVk
LgorICAgICAgICAoV2ViS2l0OjpXZWJHUFU6OlJlbW90ZVJlbmRlclBhc3NFbmNvZGVyUHJveHk6
OmVuZFBpcGVsaW5lU3RhdGlzdGljc1F1ZXJ5KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYktpdDo6
V2ViR1BVOjpSZW1vdGVSZW5kZXJQYXNzRW5jb2RlclByb3h5OjplbmRQYXNzKTogRGVsZXRlZC4K
KyAgICAgICAgKiBXZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9XZWJHUFUvUmVtb3RlUmVuZGVyUGFz
c0VuY29kZXJQcm94eS5oOgorCiAyMDIyLTAyLTE1ICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBs
ZS5jb20+CiAKICAgICAgICAgRG8gcHJlbGltaW5hcnkgd29yayB0byBwYXNzIGRvbWFpbiBuYW1l
cyB0byBDb3JlTG9jYXRpb24KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMu
dHh0IGIvU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQKaW5kZXggMWQ2ODAxNTBlYmY5YzEx
MTliYzk1ZTYxMTc3MGVlMzM1MzAyZDAyZi4uNzhjNmQyYmE5NmZmNzNkMTljYWUyNWU5NTYxMTY1
ZjNmMjc1ZjJjOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQKKysr
IGIvU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQKQEAgLTE1MjgsNiArMTUyOCw3IEBAIGxp
c3QoQVBQRU5EIFdlYkNvcmVfTk9OX1NWR19JRExfRklMRVMKICAgICBNb2R1bGVzL1dlYkdQVS9H
UFVDb21tYW5kQnVmZmVyRGVzY3JpcHRvci5pZGwKICAgICBNb2R1bGVzL1dlYkdQVS9HUFVDb21t
YW5kRW5jb2Rlci5pZGwKICAgICBNb2R1bGVzL1dlYkdQVS9HUFVDb21tYW5kRW5jb2RlckRlc2Ny
aXB0b3IuaWRsCisgICAgTW9kdWxlcy9XZWJHUFUvR1BVQ29tbWFuZHNNaXhpbi5pZGwKICAgICBN
b2R1bGVzL1dlYkdQVS9HUFVDb21wYXJlRnVuY3Rpb24uaWRsCiAgICAgTW9kdWxlcy9XZWJHUFUv
R1BVQ29tcGlsYXRpb25JbmZvLmlkbAogICAgIE1vZHVsZXMvV2ViR1BVL0dQVUNvbXBpbGF0aW9u
TWVzc2FnZS5pZGwKQEAgLTE1MzksNiArMTU0MCw3IEBAIGxpc3QoQVBQRU5EIFdlYkNvcmVfTk9O
X1NWR19JRExfRklMRVMKICAgICBNb2R1bGVzL1dlYkdQVS9HUFVDb21wdXRlUGlwZWxpbmUuaWRs
CiAgICAgTW9kdWxlcy9XZWJHUFUvR1BVQ29tcHV0ZVBpcGVsaW5lRGVzY3JpcHRvci5pZGwKICAg
ICBNb2R1bGVzL1dlYkdQVS9HUFVDdWxsTW9kZS5pZGwKKyAgICBNb2R1bGVzL1dlYkdQVS9HUFVE
ZWJ1Z0NvbW1hbmRzTWl4aW4uaWRsCiAgICAgTW9kdWxlcy9XZWJHUFUvR1BVRGVwdGhTdGVuY2ls
U3RhdGUuaWRsCiAgICAgTW9kdWxlcy9XZWJHUFUvR1BVRGV2aWNlLmlkbAogICAgIE1vZHVsZXMv
V2ViR1BVL0dQVURldmljZURlc2NyaXB0b3IuaWRsCkBAIC0xNTc0LDcgKzE1NzYsNiBAQCBsaXN0
KEFQUEVORCBXZWJDb3JlX05PTl9TVkdfSURMX0ZJTEVTCiAgICAgTW9kdWxlcy9XZWJHUFUvR1BV
UGlwZWxpbmVEZXNjcmlwdG9yQmFzZS5pZGwKICAgICBNb2R1bGVzL1dlYkdQVS9HUFVQaXBlbGlu
ZUxheW91dC5pZGwKICAgICBNb2R1bGVzL1dlYkdQVS9HUFVQaXBlbGluZUxheW91dERlc2NyaXB0
b3IuaWRsCi0gICAgTW9kdWxlcy9XZWJHUFUvR1BVUGlwZWxpbmVTdGF0aXN0aWNOYW1lLmlkbAog
ICAgIE1vZHVsZXMvV2ViR1BVL0dQVVBvd2VyUHJlZmVyZW5jZS5pZGwKICAgICBNb2R1bGVzL1dl
YkdQVS9HUFVQcmVkZWZpbmVkQ29sb3JTcGFjZS5pZGwKICAgICBNb2R1bGVzL1dlYkdQVS9HUFVQ
cmltaXRpdmVTdGF0ZS5pZGwKQEAgLTE2MDUsNiArMTYwNiw3IEBAIGxpc3QoQVBQRU5EIFdlYkNv
cmVfTk9OX1NWR19JRExfRklMRVMKICAgICBNb2R1bGVzL1dlYkdQVS9HUFVTYW1wbGVyQmluZGlu
Z1R5cGUuaWRsCiAgICAgTW9kdWxlcy9XZWJHUFUvR1BVU2FtcGxlckRlc2NyaXB0b3IuaWRsCiAg
ICAgTW9kdWxlcy9XZWJHUFUvR1BVU2hhZGVyTW9kdWxlLmlkbAorICAgIE1vZHVsZXMvV2ViR1BV
L0dQVVNoYWRlck1vZHVsZUNvbXBpbGF0aW9uSGludC5pZGwKICAgICBNb2R1bGVzL1dlYkdQVS9H
UFVTaGFkZXJNb2R1bGVEZXNjcmlwdG9yLmlkbAogICAgIE1vZHVsZXMvV2ViR1BVL0dQVVNoYWRl
clN0YWdlLmlkbAogICAgIE1vZHVsZXMvV2ViR1BVL0dQVVN0ZW5jaWxGYWNlU3RhdGUuaWRsCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9EZXJpdmVkU291cmNlcy1pbnB1dC54Y2ZpbGVsaXN0
IGIvU291cmNlL1dlYkNvcmUvRGVyaXZlZFNvdXJjZXMtaW5wdXQueGNmaWxlbGlzdAppbmRleCBh
ODBjZTEzMzIwZWU1YTIzOWQ2M2Q3MmZlMjRlZmMzZGQ2ODhmYjAwLi41OTg1MjNhNDc5NDcxNDdm
YjgwNzU1NTQ1YmUzZjY4MDA1MGMzODUxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9EZXJp
dmVkU291cmNlcy1pbnB1dC54Y2ZpbGVsaXN0CisrKyBiL1NvdXJjZS9XZWJDb3JlL0Rlcml2ZWRT
b3VyY2VzLWlucHV0LnhjZmlsZWxpc3QKQEAgLTYzLDYgKzYzLDcgQEAgJChQUk9KRUNUX0RJUikv
TW9kdWxlcy9XZWJHUFUvR1BVQ29tbWFuZEJ1ZmZlci5pZGwKICQoUFJPSkVDVF9ESVIpL01vZHVs
ZXMvV2ViR1BVL0dQVUNvbW1hbmRCdWZmZXJEZXNjcmlwdG9yLmlkbAogJChQUk9KRUNUX0RJUikv
TW9kdWxlcy9XZWJHUFUvR1BVQ29tbWFuZEVuY29kZXIuaWRsCiAkKFBST0pFQ1RfRElSKS9Nb2R1
bGVzL1dlYkdQVS9HUFVDb21tYW5kRW5jb2RlckRlc2NyaXB0b3IuaWRsCiskKFBST0pFQ1RfRElS
KS9Nb2R1bGVzL1dlYkdQVS9HUFVDb21tYW5kc01peGluLmlkbAogJChQUk9KRUNUX0RJUikvTW9k
dWxlcy9XZWJHUFUvR1BVQ29tcGFyZUZ1bmN0aW9uLmlkbAogJChQUk9KRUNUX0RJUikvTW9kdWxl
cy9XZWJHUFUvR1BVQ29tcGlsYXRpb25JbmZvLmlkbAogJChQUk9KRUNUX0RJUikvTW9kdWxlcy9X
ZWJHUFUvR1BVQ29tcGlsYXRpb25NZXNzYWdlLmlkbApAQCAtNzQsNiArNzUsNyBAQCAkKFBST0pF
Q1RfRElSKS9Nb2R1bGVzL1dlYkdQVS9HUFVDb21wdXRlUGFzc1RpbWVzdGFtcFdyaXRlLmlkbAog
JChQUk9KRUNUX0RJUikvTW9kdWxlcy9XZWJHUFUvR1BVQ29tcHV0ZVBpcGVsaW5lLmlkbAogJChQ
Uk9KRUNUX0RJUikvTW9kdWxlcy9XZWJHUFUvR1BVQ29tcHV0ZVBpcGVsaW5lRGVzY3JpcHRvci5p
ZGwKICQoUFJPSkVDVF9ESVIpL01vZHVsZXMvV2ViR1BVL0dQVUN1bGxNb2RlLmlkbAorJChQUk9K
RUNUX0RJUikvTW9kdWxlcy9XZWJHUFUvR1BVRGVidWdDb21tYW5kc01peGluLmlkbAogJChQUk9K
RUNUX0RJUikvTW9kdWxlcy9XZWJHUFUvR1BVRGVwdGhTdGVuY2lsU3RhdGUuaWRsCiAkKFBST0pF
Q1RfRElSKS9Nb2R1bGVzL1dlYkdQVS9HUFVEZXZpY2UuaWRsCiAkKFBST0pFQ1RfRElSKS9Nb2R1
bGVzL1dlYkdQVS9HUFVEZXZpY2VEZXNjcmlwdG9yLmlkbApAQCAtMTQwLDYgKzE0Miw3IEBAICQo
UFJPSkVDVF9ESVIpL01vZHVsZXMvV2ViR1BVL0dQVVNhbXBsZXJCaW5kaW5nTGF5b3V0LmlkbAog
JChQUk9KRUNUX0RJUikvTW9kdWxlcy9XZWJHUFUvR1BVU2FtcGxlckJpbmRpbmdUeXBlLmlkbAog
JChQUk9KRUNUX0RJUikvTW9kdWxlcy9XZWJHUFUvR1BVU2FtcGxlckRlc2NyaXB0b3IuaWRsCiAk
KFBST0pFQ1RfRElSKS9Nb2R1bGVzL1dlYkdQVS9HUFVTaGFkZXJNb2R1bGUuaWRsCiskKFBST0pF
Q1RfRElSKS9Nb2R1bGVzL1dlYkdQVS9HUFVTaGFkZXJNb2R1bGVDb21waWxhdGlvbkhpbnQuaWRs
CiAkKFBST0pFQ1RfRElSKS9Nb2R1bGVzL1dlYkdQVS9HUFVTaGFkZXJNb2R1bGVEZXNjcmlwdG9y
LmlkbAogJChQUk9KRUNUX0RJUikvTW9kdWxlcy9XZWJHUFUvR1BVU2hhZGVyU3RhZ2UuaWRsCiAk
KFBST0pFQ1RfRElSKS9Nb2R1bGVzL1dlYkdQVS9HUFVTaXplNjQuaWRsCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9EZXJpdmVkU291cmNlcy1vdXRwdXQueGNmaWxlbGlzdCBiL1NvdXJjZS9X
ZWJDb3JlL0Rlcml2ZWRTb3VyY2VzLW91dHB1dC54Y2ZpbGVsaXN0CmluZGV4IGZhZjFkOWY4ODg4
ODRjOTM0Y2I0YmVmMDBiMTExZTdmYjIzNzBhNzIuLjU5MWM0ZTEzOTI3NjZiM2RiMWNmMTllZjk2
YjZkZGE4YzJiOTg0NjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0Rlcml2ZWRTb3VyY2Vz
LW91dHB1dC54Y2ZpbGVsaXN0CisrKyBiL1NvdXJjZS9XZWJDb3JlL0Rlcml2ZWRTb3VyY2VzLW91
dHB1dC54Y2ZpbGVsaXN0CkBAIC05NDEsNiArOTQxLDggQEAgJChCVUlMVF9QUk9EVUNUU19ESVIp
L0Rlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNHUFVDb21tYW5kRW5jb2Rlci5jcHAKICQoQlVJTFRf
UFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTR1BVQ29tbWFuZEVuY29kZXIu
aAogJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNHUFVDb21t
YW5kRW5jb2RlckRlc2NyaXB0b3IuY3BwCiAkKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNv
dXJjZXMvV2ViQ29yZS9KU0dQVUNvbW1hbmRFbmNvZGVyRGVzY3JpcHRvci5oCiskKEJVSUxUX1BS
T0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU0dQVUNvbW1hbmRzTWl4aW4uY3Bw
CiskKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU0dQVUNvbW1h
bmRzTWl4aW4uaAogJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYkNvcmUv
SlNHUFVDb21wYXJlRnVuY3Rpb24uY3BwCiAkKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNv
dXJjZXMvV2ViQ29yZS9KU0dQVUNvbXBhcmVGdW5jdGlvbi5oCiAkKEJVSUxUX1BST0RVQ1RTX0RJ
UikvRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU0dQVUNvbXBpbGF0aW9uSW5mby5jcHAKQEAgLTk2
Myw2ICs5NjUsOCBAQCAkKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViQ29y
ZS9KU0dQVUNvbXB1dGVQaXBlbGluZURlc2NyaXB0b3IuY3BwCiAkKEJVSUxUX1BST0RVQ1RTX0RJ
UikvRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU0dQVUNvbXB1dGVQaXBlbGluZURlc2NyaXB0b3Iu
aAogJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNHUFVDdWxs
TW9kZS5jcHAKICQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJDb3JlL0pT
R1BVQ3VsbE1vZGUuaAorJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYkNv
cmUvSlNHUFVEZWJ1Z0NvbW1hbmRzTWl4aW4uY3BwCiskKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVy
aXZlZFNvdXJjZXMvV2ViQ29yZS9KU0dQVURlYnVnQ29tbWFuZHNNaXhpbi5oCiAkKEJVSUxUX1BS
T0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU0dQVURlcHRoU3RlbmNpbFN0YXRl
LmNwcAogJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNHUFVE
ZXB0aFN0ZW5jaWxTdGF0ZS5oCiAkKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMv
V2ViQ29yZS9KU0dQVURldmljZS5jcHAKQEAgLTEwOTUsNiArMTA5OSw4IEBAICQoQlVJTFRfUFJP
RFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTR1BVU2FtcGxlckRlc2NyaXB0b3Iu
Y3BwCiAkKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU0dQVVNh
bXBsZXJEZXNjcmlwdG9yLmgKICQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9X
ZWJDb3JlL0pTR1BVU2hhZGVyTW9kdWxlLmNwcAogJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2
ZWRTb3VyY2VzL1dlYkNvcmUvSlNHUFVTaGFkZXJNb2R1bGUuaAorJChCVUlMVF9QUk9EVUNUU19E
SVIpL0Rlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNHUFVTaGFkZXJNb2R1bGVDb21waWxhdGlvbkhp
bnQuY3BwCiskKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU0dQ
VVNoYWRlck1vZHVsZUNvbXBpbGF0aW9uSGludC5oCiAkKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVy
aXZlZFNvdXJjZXMvV2ViQ29yZS9KU0dQVVNoYWRlck1vZHVsZURlc2NyaXB0b3IuY3BwCiAkKEJV
SUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU0dQVVNoYWRlck1vZHVs
ZURlc2NyaXB0b3IuaAogJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYkNv
cmUvSlNHUFVTaGFkZXJTdGFnZS5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0Rlcml2
ZWRTb3VyY2VzLm1ha2UgYi9Tb3VyY2UvV2ViQ29yZS9EZXJpdmVkU291cmNlcy5tYWtlCmluZGV4
IDIxYTY1YjkzMTNhZTdjNTNiYjE1ODA0M2Y1NDczZDI5YmRmMDI3MGUuLmM0ODBkOWUyNTVlNGYw
Y2FmY2UxYjMwMTQ2OWUyZmU3NTBjODcyNzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0Rl
cml2ZWRTb3VyY2VzLm1ha2UKKysrIGIvU291cmNlL1dlYkNvcmUvRGVyaXZlZFNvdXJjZXMubWFr
ZQpAQCAtODYsNiArODYsNyBAQCBKU19CSU5ESU5HX0lETFMgOj0gXAogICAgICQoV2ViQ29yZSkv
TW9kdWxlcy9XZWJHUFUvR1BVQ29tbWFuZEJ1ZmZlckRlc2NyaXB0b3IuaWRsIFwKICAgICAkKFdl
YkNvcmUpL01vZHVsZXMvV2ViR1BVL0dQVUNvbW1hbmRFbmNvZGVyLmlkbCBcCiAgICAgJChXZWJD
b3JlKS9Nb2R1bGVzL1dlYkdQVS9HUFVDb21tYW5kRW5jb2RlckRlc2NyaXB0b3IuaWRsIFwKKyAg
ICAkKFdlYkNvcmUpL01vZHVsZXMvV2ViR1BVL0dQVUNvbW1hbmRzTWl4aW4uaWRsIFwKICAgICAk
KFdlYkNvcmUpL01vZHVsZXMvV2ViR1BVL0dQVUNvbXBhcmVGdW5jdGlvbi5pZGwgXAogICAgICQo
V2ViQ29yZSkvTW9kdWxlcy9XZWJHUFUvR1BVQ29tcGlsYXRpb25JbmZvLmlkbCBcCiAgICAgJChX
ZWJDb3JlKS9Nb2R1bGVzL1dlYkdQVS9HUFVDb21waWxhdGlvbk1lc3NhZ2UuaWRsIFwKQEAgLTk3
LDYgKzk4LDcgQEAgSlNfQklORElOR19JRExTIDo9IFwKICAgICAkKFdlYkNvcmUpL01vZHVsZXMv
V2ViR1BVL0dQVUNvbXB1dGVQaXBlbGluZS5pZGwgXAogICAgICQoV2ViQ29yZSkvTW9kdWxlcy9X
ZWJHUFUvR1BVQ29tcHV0ZVBpcGVsaW5lRGVzY3JpcHRvci5pZGwgXAogICAgICQoV2ViQ29yZSkv
TW9kdWxlcy9XZWJHUFUvR1BVQ3VsbE1vZGUuaWRsIFwKKyAgICAkKFdlYkNvcmUpL01vZHVsZXMv
V2ViR1BVL0dQVURlYnVnQ29tbWFuZHNNaXhpbi5pZGwgXAogICAgICQoV2ViQ29yZSkvTW9kdWxl
cy9XZWJHUFUvR1BVRGVwdGhTdGVuY2lsU3RhdGUuaWRsIFwKICAgICAkKFdlYkNvcmUpL01vZHVs
ZXMvV2ViR1BVL0dQVURldmljZS5pZGwgXAogICAgICQoV2ViQ29yZSkvTW9kdWxlcy9XZWJHUFUv
R1BVRGV2aWNlRGVzY3JpcHRvci5pZGwgXApAQCAtMTMyLDcgKzEzNCw2IEBAIEpTX0JJTkRJTkdf
SURMUyA6PSBcCiAgICAgJChXZWJDb3JlKS9Nb2R1bGVzL1dlYkdQVS9HUFVQaXBlbGluZURlc2Ny
aXB0b3JCYXNlLmlkbCBcCiAgICAgJChXZWJDb3JlKS9Nb2R1bGVzL1dlYkdQVS9HUFVQaXBlbGlu
ZUxheW91dC5pZGwgXAogICAgICQoV2ViQ29yZSkvTW9kdWxlcy9XZWJHUFUvR1BVUGlwZWxpbmVM
YXlvdXREZXNjcmlwdG9yLmlkbCBcCi0gICAgJChXZWJDb3JlKS9Nb2R1bGVzL1dlYkdQVS9HUFVQ
aXBlbGluZVN0YXRpc3RpY05hbWUuaWRsIFwKICAgICAkKFdlYkNvcmUpL01vZHVsZXMvV2ViR1BV
L0dQVVBvd2VyUHJlZmVyZW5jZS5pZGwgXAogICAgICQoV2ViQ29yZSkvTW9kdWxlcy9XZWJHUFUv
R1BVUHJlZGVmaW5lZENvbG9yU3BhY2UuaWRsIFwKICAgICAkKFdlYkNvcmUpL01vZHVsZXMvV2Vi
R1BVL0dQVVByaW1pdGl2ZVN0YXRlLmlkbCBcCkBAIC0xNjMsNiArMTY0LDcgQEAgSlNfQklORElO
R19JRExTIDo9IFwKICAgICAkKFdlYkNvcmUpL01vZHVsZXMvV2ViR1BVL0dQVVNhbXBsZXJCaW5k
aW5nVHlwZS5pZGwgXAogICAgICQoV2ViQ29yZSkvTW9kdWxlcy9XZWJHUFUvR1BVU2FtcGxlckRl
c2NyaXB0b3IuaWRsIFwKICAgICAkKFdlYkNvcmUpL01vZHVsZXMvV2ViR1BVL0dQVVNoYWRlck1v
ZHVsZS5pZGwgXAorICAgICQoV2ViQ29yZSkvTW9kdWxlcy9XZWJHUFUvR1BVU2hhZGVyTW9kdWxl
Q29tcGlsYXRpb25IaW50LmlkbCBcCiAgICAgJChXZWJDb3JlKS9Nb2R1bGVzL1dlYkdQVS9HUFVT
aGFkZXJNb2R1bGVEZXNjcmlwdG9yLmlkbCBcCiAgICAgJChXZWJDb3JlKS9Nb2R1bGVzL1dlYkdQ
VS9HUFVTaGFkZXJTdGFnZS5pZGwgXAogICAgICQoV2ViQ29yZSkvTW9kdWxlcy9XZWJHUFUvR1BV
U3RlbmNpbEZhY2VTdGF0ZS5pZGwgXApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvSGVhZGVy
cy5jbWFrZSBiL1NvdXJjZS9XZWJDb3JlL0hlYWRlcnMuY21ha2UKaW5kZXggYWM3NDZhOWU1ZWY1
YjRhNGQwZGZjZmE0ZGMxYTQ1YjkxZGM1NDJlYS4uZmVhMTQ5MGU5ZGEwMWQyYTJlODY2MmViZTIz
YmYyNzU5NjU5YjZhNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvSGVhZGVycy5jbWFrZQor
KysgYi9Tb3VyY2UvV2ViQ29yZS9IZWFkZXJzLmNtYWtlCkBAIC03MSw3ICs3MSw2IEBAIHNldChX
ZWJDb3JlX1BSSVZBVEVfRlJBTUVXT1JLX0hFQURFUlMKICAgICBNb2R1bGVzL1dlYkdQVS9HUFVQ
aXBlbGluZURlc2NyaXB0b3JCYXNlLmgKICAgICBNb2R1bGVzL1dlYkdQVS9HUFVQaXBlbGluZUxh
eW91dC5oCiAgICAgTW9kdWxlcy9XZWJHUFUvR1BVUGlwZWxpbmVMYXlvdXREZXNjcmlwdG9yLmgK
LSAgICBNb2R1bGVzL1dlYkdQVS9HUFVQaXBlbGluZVN0YXRpc3RpY05hbWUuaAogICAgIE1vZHVs
ZXMvV2ViR1BVL0dQVVBvd2VyUHJlZmVyZW5jZS5oCiAgICAgTW9kdWxlcy9XZWJHUFUvR1BVUHJl
ZGVmaW5lZENvbG9yU3BhY2UuaAogICAgIE1vZHVsZXMvV2ViR1BVL0dQVVByaW1pdGl2ZVN0YXRl
LmgKQEAgLTEwMCw2ICs5OSw3IEBAIHNldChXZWJDb3JlX1BSSVZBVEVfRlJBTUVXT1JLX0hFQURF
UlMKICAgICBNb2R1bGVzL1dlYkdQVS9HUFVTYW1wbGVyQmluZGluZ1R5cGUuaAogICAgIE1vZHVs
ZXMvV2ViR1BVL0dQVVNhbXBsZXJEZXNjcmlwdG9yLmgKICAgICBNb2R1bGVzL1dlYkdQVS9HUFVT
aGFkZXJNb2R1bGUuaAorICAgIE1vZHVsZXMvV2ViR1BVL0dQVVNoYWRlck1vZHVsZUNvbXBpbGF0
aW9uSGludC5oCiAgICAgTW9kdWxlcy9XZWJHUFUvR1BVU2hhZGVyTW9kdWxlRGVzY3JpcHRvci5o
CiAgICAgTW9kdWxlcy9XZWJHUFUvR1BVU2hhZGVyU3RhZ2UuaAogICAgIE1vZHVsZXMvV2ViR1BV
L0dQVVN0ZW5jaWxGYWNlU3RhdGUuaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9XZWJHUFUvR1BVQnVmZmVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvV2ViR1BVL0dQ
VUJ1ZmZlci5jcHAKaW5kZXggN2ZkNDg1NzJhOWU1NzNjOTliMDNmYjMzMjhiMjRkOTY0MWMyNzQ5
Ny4uNGM5NGE0ZmQ5MTc4NzBjYjQwYzRmZjk0ZTgwMWM0YTFlZTMyYjAzYyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9XZWJHUFUvR1BVQnVmZmVyLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL1dlYkdQVS9HUFVCdWZmZXIuY3BwCkBAIC0zOCwxNCArMzgsMTQgQEAg
dm9pZCBHUFVCdWZmZXI6OnNldExhYmVsKFN0cmluZyYmIGxhYmVsKQogICAgIG1fYmFja2luZy0+
c2V0TGFiZWwoV1RGTW92ZShsYWJlbCkpOwogfQogCi12b2lkIEdQVUJ1ZmZlcjo6bWFwQXN5bmMo
R1BVTWFwTW9kZUZsYWdzIG1vZGUsIHN0ZDo6b3B0aW9uYWw8R1BVU2l6ZTY0PiBvZmZzZXQsIHN0
ZDo6b3B0aW9uYWw8R1BVU2l6ZTY0PiBzaXplLCBNYXBBc3luY1Byb21pc2UmJiBwcm9taXNlKQor
dm9pZCBHUFVCdWZmZXI6Om1hcEFzeW5jKEdQVU1hcE1vZGVGbGFncyBtb2RlLCBHUFVTaXplNjQg
b2Zmc2V0LCBzdGQ6Om9wdGlvbmFsPEdQVVNpemU2ND4gc2l6ZSwgTWFwQXN5bmNQcm9taXNlJiYg
cHJvbWlzZSkKIHsKICAgICBtX2JhY2tpbmctPm1hcEFzeW5jKGNvbnZlcnRNYXBNb2RlRmxhZ3NU
b0JhY2tpbmcobW9kZSksIG9mZnNldCwgc2l6ZSwgW3Byb21pc2UgPSBXVEZNb3ZlKHByb21pc2Up
XSAoKSBtdXRhYmxlIHsKICAgICAgICAgcHJvbWlzZS5yZXNvbHZlKG51bGxwdHIpOwogICAgIH0p
OwogfQogCi1SZWY8SlNDOjpBcnJheUJ1ZmZlcj4gR1BVQnVmZmVyOjpnZXRNYXBwZWRSYW5nZShz
dGQ6Om9wdGlvbmFsPEdQVVNpemU2ND4gb2Zmc2V0LCBzdGQ6Om9wdGlvbmFsPEdQVVNpemU2ND4g
c2l6ZSkKK1JlZjxKU0M6OkFycmF5QnVmZmVyPiBHUFVCdWZmZXI6OmdldE1hcHBlZFJhbmdlKEdQ
VVNpemU2NCBvZmZzZXQsIHN0ZDo6b3B0aW9uYWw8R1BVU2l6ZTY0PiBzaXplKQogewogICAgIGF1
dG8gbWFwcGVkUmFuZ2UgPSBtX2JhY2tpbmctPmdldE1hcHBlZFJhbmdlKG9mZnNldCwgc2l6ZSk7
CiAgICAgcmV0dXJuIEFycmF5QnVmZmVyOjpjcmVhdGUobWFwcGVkUmFuZ2Uuc291cmNlLCBtYXBw
ZWRSYW5nZS5ieXRlTGVuZ3RoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
V2ViR1BVL0dQVUJ1ZmZlci5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9XZWJHUFUvR1BVQnVm
ZmVyLmgKaW5kZXggYzYyOGNjMDY3YzA0MzEwMzBjOTZmNWM5MTZkMWNiOTJhODAwNzdkZS4uNDdl
OWU0NWFkMzk1ODIzNThhNTRlYTAxOGY0MjYwOTgxODkxODU1OSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9XZWJHUFUvR1BVQnVmZmVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9XZWJHUFUvR1BVQnVmZmVyLmgKQEAgLTQ5LDggKzQ5LDggQEAgcHVibGljOgogICAg
IHZvaWQgc2V0TGFiZWwoU3RyaW5nJiYpOwogCiAgICAgdXNpbmcgTWFwQXN5bmNQcm9taXNlID0g
RE9NUHJvbWlzZURlZmVycmVkPElETE51bGw+OwotICAgIHZvaWQgbWFwQXN5bmMoR1BVTWFwTW9k
ZUZsYWdzLCBzdGQ6Om9wdGlvbmFsPEdQVVNpemU2ND4gb2Zmc2V0LCBzdGQ6Om9wdGlvbmFsPEdQ
VVNpemU2ND4gc2l6ZUZvck1hcCwgTWFwQXN5bmNQcm9taXNlJiYpOwotICAgIFJlZjxKU0M6OkFy
cmF5QnVmZmVyPiBnZXRNYXBwZWRSYW5nZShzdGQ6Om9wdGlvbmFsPEdQVVNpemU2ND4gb2Zmc2V0
LCBzdGQ6Om9wdGlvbmFsPEdQVVNpemU2ND4gcmFuZ2VTaXplKTsKKyAgICB2b2lkIG1hcEFzeW5j
KEdQVU1hcE1vZGVGbGFncywgR1BVU2l6ZTY0IG9mZnNldCwgc3RkOjpvcHRpb25hbDxHUFVTaXpl
NjQ+IHNpemVGb3JNYXAsIE1hcEFzeW5jUHJvbWlzZSYmKTsKKyAgICBSZWY8SlNDOjpBcnJheUJ1
ZmZlcj4gZ2V0TWFwcGVkUmFuZ2UoR1BVU2l6ZTY0IG9mZnNldCwgc3RkOjpvcHRpb25hbDxHUFVT
aXplNjQ+IHJhbmdlU2l6ZSk7CiAgICAgdm9pZCB1bm1hcCgpOwogCiAgICAgdm9pZCBkZXN0cm95
KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL1dlYkdQVS9HUFVDYW52YXND
b25maWd1cmF0aW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL1dlYkdQVS9HUFVDYW52YXND
b25maWd1cmF0aW9uLmgKaW5kZXggNjk2MGU3ZGI4MWIyMmM5MDJlMzFiNjczNjdlNjY0MmZkMzBi
MzU5Zi4uYWY3NWI1YzQ4YjFiOWE1ZDg2NDNlYjE1OTIwNWIxYmRiZGVhZTVhMiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9XZWJHUFUvR1BVQ2FudmFzQ29uZmlndXJhdGlvbi5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvV2ViR1BVL0dQVUNhbnZhc0NvbmZpZ3VyYXRp
b24uaApAQCAtMzUsNiArMzUsNyBAQAogI2luY2x1ZGUgPG9wdGlvbmFsPgogI2luY2x1ZGUgPHBh
bC9ncmFwaGljcy9XZWJHUFUvV2ViR1BVQ2FudmFzQ29uZmlndXJhdGlvbi5oPgogI2luY2x1ZGUg
PHd0Zi9SZWZQdHIuaD4KKyNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CiAKIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIApAQCAtNDYsNiArNDcsOSBAQCBzdHJ1Y3QgR1BVQ2FudmFzQ29uZmlndXJhdGlvbiB7
CiAgICAgICAgICAgICBkZXZpY2UtPmJhY2tpbmcoKSwKICAgICAgICAgICAgIFdlYkNvcmU6OmNv
bnZlcnRUb0JhY2tpbmcoZm9ybWF0KSwKICAgICAgICAgICAgIGNvbnZlcnRUZXh0dXJlVXNhZ2VG
bGFnc1RvQmFja2luZyh1c2FnZSksCisgICAgICAgICAgICB2aWV3Rm9ybWF0cy5tYXAoW10gKGF1
dG8mIHZpZXdGb3JtYXQpIHsKKyAgICAgICAgICAgICAgICByZXR1cm4gV2ViQ29yZTo6Y29udmVy
dFRvQmFja2luZyh2aWV3Rm9ybWF0KTsKKyAgICAgICAgICAgIH0pLAogICAgICAgICAgICAgV2Vi
Q29yZTo6Y29udmVydFRvQmFja2luZyhjb2xvclNwYWNlKSwKICAgICAgICAgICAgIFdlYkNvcmU6
OmNvbnZlcnRUb0JhY2tpbmcoY29tcG9zaXRpbmdBbHBoYU1vZGUpLAogICAgICAgICAgICAgc2l6
ZSA/IHN0ZDo6b3B0aW9uYWwgeyBXZWJDb3JlOjpjb252ZXJ0VG9CYWNraW5nKCpzaXplKSB9IDog
c3RkOjpudWxsb3B0LApAQCAtNTUsNiArNTksNyBAQCBzdHJ1Y3QgR1BVQ2FudmFzQ29uZmlndXJh
dGlvbiB7CiAgICAgR1BVRGV2aWNlKiBkZXZpY2UgeyBudWxscHRyIH07CiAgICAgR1BVVGV4dHVy
ZUZvcm1hdCBmb3JtYXQgeyBHUFVUZXh0dXJlRm9ybWF0OjpSOHVub3JtIH07CiAgICAgR1BVVGV4
dHVyZVVzYWdlRmxhZ3MgdXNhZ2UgeyBHUFVUZXh0dXJlVXNhZ2U6OlJFTkRFUl9BVFRBQ0hNRU5U
IH07CisgICAgVmVjdG9yPEdQVVRleHR1cmVGb3JtYXQ+IHZpZXdGb3JtYXRzOwogICAgIEdQVVBy
ZWRlZmluZWRDb2xvclNwYWNlIGNvbG9yU3BhY2UgeyBHUFVQcmVkZWZpbmVkQ29sb3JTcGFjZTo6
U1JHQiB9OwogICAgIEdQVUNhbnZhc0NvbXBvc2l0aW5nQWxwaGFNb2RlIGNvbXBvc2l0aW5nQWxw
aGFNb2RlIHsgR1BVQ2FudmFzQ29tcG9zaXRpbmdBbHBoYU1vZGU6Ok9wYXF1ZSB9OwogICAgIHN0
ZDo6b3B0aW9uYWw8R1BVRXh0ZW50M0Q+IHNpemU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL1dlYkdQVS9HUFVDYW52YXNDb25maWd1cmF0aW9uLmlkbCBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvV2ViR1BVL0dQVUNhbnZhc0NvbmZpZ3VyYXRpb24uaWRsCmluZGV4IGZjYWM4
Y2RhOWZlZDAyMTZhNjFhNDc0NDY1N2UwNDA4YmJhOGM2YTEuLmIxNGEyYzc2MTliYjNjMTJmZTY3
YWUxOTg1ZmU2ZjdkY2U2MTNhNDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
V2ViR1BVL0dQVUNhbnZhc0NvbmZpZ3VyYXRpb24uaWRsCisrKyBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvV2ViR1BVL0dQVUNhbnZhc0NvbmZpZ3VyYXRpb24uaWRsCkBAIC0zNyw2ICszNyw3IEBA
IGRpY3Rpb25hcnkgR1BVQ2FudmFzQ29uZmlndXJhdGlvbiB7CiAgICAgcmVxdWlyZWQgR1BVRGV2
aWNlIGRldmljZTsKICAgICByZXF1aXJlZCBHUFVUZXh0dXJlRm9ybWF0IGZvcm1hdDsKICAgICBH
UFVUZXh0dXJlVXNhZ2VGbGFncyB1c2FnZSA9IDB4MTA7ICAvLyBHUFVUZXh0dXJlVXNhZ2UuUkVO
REVSX0FUVEFDSE1FTlQKKyAgICBzZXF1ZW5jZTxHUFVUZXh0dXJlRm9ybWF0PiB2aWV3Rm9ybWF0
cyA9IFtdOwogICAgIEdQVVByZWRlZmluZWRDb2xvclNwYWNlIGNvbG9yU3BhY2UgPSAic3JnYiI7
CiAgICAgR1BVQ2FudmFzQ29tcG9zaXRpbmdBbHBoYU1vZGUgY29tcG9zaXRpbmdBbHBoYU1vZGUg
PSAib3BhcXVlIjsKICAgICBHUFVFeHRlbnQzRCBzaXplOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9XZWJHUFUvR1BVQ29tbWFuZEVuY29kZXIuY3BwIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9XZWJHUFUvR1BVQ29tbWFuZEVuY29kZXIuY3BwCmluZGV4IDgxN2MzNTJlYzAw
YTJkZDUxZWU3YjE3ZDcwYzVkZjI1OGZmOGQ0YzUuLmJkZmQyZDQ5YjI5YzU4YmZiZjAyYjdiMmU2
YzUxMWZmN2ZlNDU5NDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvV2ViR1BV
L0dQVUNvbW1hbmRFbmNvZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL1dlYkdQ
VS9HUFVDb21tYW5kRW5jb2Rlci5jcHAKQEAgLTg1LDEyICs4NSwxMyBAQCB2b2lkIEdQVUNvbW1h
bmRFbmNvZGVyOjpjb3B5VGV4dHVyZVRvVGV4dHVyZSgKICAgICBtX2JhY2tpbmctPmNvcHlUZXh0
dXJlVG9UZXh0dXJlKHNvdXJjZS5jb252ZXJ0VG9CYWNraW5nKCksIGRlc3RpbmF0aW9uLmNvbnZl
cnRUb0JhY2tpbmcoKSwgY29udmVydFRvQmFja2luZyhjb3B5U2l6ZSkpOwogfQogCi12b2lkIEdQ
VUNvbW1hbmRFbmNvZGVyOjpmaWxsQnVmZmVyKAotICAgIGNvbnN0IEdQVUJ1ZmZlciYgZGVzdGlu
YXRpb24sCi0gICAgR1BVU2l6ZTY0IGRlc3RpbmF0aW9uT2Zmc2V0LAotICAgIEdQVVNpemU2NCBz
aXplKQorCit2b2lkIEdQVUNvbW1hbmRFbmNvZGVyOjpjbGVhckJ1ZmZlcigKKyAgICBjb25zdCBH
UFVCdWZmZXImIGJ1ZmZlciwKKyAgICBHUFVTaXplNjQgb2Zmc2V0LAorICAgIHN0ZDo6b3B0aW9u
YWw8R1BVU2l6ZTY0PiBzaXplKQogewotICAgIG1fYmFja2luZy0+ZmlsbEJ1ZmZlcihkZXN0aW5h
dGlvbi5iYWNraW5nKCksIGRlc3RpbmF0aW9uT2Zmc2V0LCBzaXplKTsKKyAgICBtX2JhY2tpbmct
PmNsZWFyQnVmZmVyKGJ1ZmZlci5iYWNraW5nKCksIG9mZnNldCwgc2l6ZSk7CiB9CiAKIHZvaWQg
R1BVQ29tbWFuZEVuY29kZXI6OnB1c2hEZWJ1Z0dyb3VwKFN0cmluZyYmIGdyb3VwTGFiZWwpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL1dlYkdQVS9HUFVDb21tYW5kRW5jb2Rl
ci5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9XZWJHUFUvR1BVQ29tbWFuZEVuY29kZXIuaApp
bmRleCBhMDFlMzI2ODQ1NDg4M2Q5YTZlNGJlMmQ4NjI2N2EyNWQwMDRkZDkwLi4xNzFhODRhZmJj
ZWNkZTJiNzA1MjM5ODE2NTYzZmY3MmRiZTg0OTk1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL1dlYkdQVS9HUFVDb21tYW5kRW5jb2Rlci5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvV2ViR1BVL0dQVUNvbW1hbmRFbmNvZGVyLmgKQEAgLTgxLDEwICs4MSwxMCBAQCBw
dWJsaWM6CiAgICAgICAgIGNvbnN0IEdQVUltYWdlQ29weVRleHR1cmUmIGRlc3RpbmF0aW9uLAog
ICAgICAgICBjb25zdCBHUFVFeHRlbnQzRCYgY29weVNpemUpOwogCi0gICAgdm9pZCBmaWxsQnVm
ZmVyKAotICAgICAgICBjb25zdCBHUFVCdWZmZXImIGRlc3RpbmF0aW9uLAotICAgICAgICBHUFVT
aXplNjQgZGVzdGluYXRpb25PZmZzZXQsCi0gICAgICAgIEdQVVNpemU2NCk7CisgICAgdm9pZCBj
bGVhckJ1ZmZlcigKKyAgICAgICAgY29uc3QgR1BVQnVmZmVyJiwKKyAgICAgICAgR1BVU2l6ZTY0
IG9mZnNldCwKKyAgICAgICAgc3RkOjpvcHRpb25hbDxHUFVTaXplNjQ+KTsKIAogICAgIHZvaWQg
cHVzaERlYnVnR3JvdXAoU3RyaW5nJiYgZ3JvdXBMYWJlbCk7CiAgICAgdm9pZCBwb3BEZWJ1Z0dy
b3VwKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL1dlYkdQVS9HUFVDb21t
YW5kRW5jb2Rlci5pZGwgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL1dlYkdQVS9HUFVDb21tYW5k
RW5jb2Rlci5pZGwKaW5kZXggYWE5NGNhMDM0NDdiZjVkYjExNGE3MDMxMDQzM2ZhODYwYjAyYTE0
My4uMjY3OTZmNmQ1MzE4YjMwNzY0OGI4MmI3ZDkwMjQ4MjU3MzM3NzA0NyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9XZWJHUFUvR1BVQ29tbWFuZEVuY29kZXIuaWRsCisrKyBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvV2ViR1BVL0dQVUNvbW1hbmRFbmNvZGVyLmlkbApAQCAt
NjIsMTQgKzYyLDEwIEBAIGludGVyZmFjZSBHUFVDb21tYW5kRW5jb2RlciB7CiAgICAgICAgIEdQ
VUltYWdlQ29weVRleHR1cmUgZGVzdGluYXRpb24sCiAgICAgICAgIEdQVUV4dGVudDNEIGNvcHlT
aXplKTsKIAotICAgIHVuZGVmaW5lZCBmaWxsQnVmZmVyKAotICAgICAgICBHUFVCdWZmZXIgZGVz
dGluYXRpb24sCi0gICAgICAgIEdQVVNpemU2NCBkZXN0aW5hdGlvbk9mZnNldCwKLSAgICAgICAg
R1BVU2l6ZTY0IHNpemUpOwotCi0gICAgdW5kZWZpbmVkIHB1c2hEZWJ1Z0dyb3VwKFVTVlN0cmlu
ZyBncm91cExhYmVsKTsKLSAgICB1bmRlZmluZWQgcG9wRGVidWdHcm91cCgpOwotICAgIHVuZGVm
aW5lZCBpbnNlcnREZWJ1Z01hcmtlcihVU1ZTdHJpbmcgbWFya2VyTGFiZWwpOworICAgIHVuZGVm
aW5lZCBjbGVhckJ1ZmZlcigKKyAgICAgICAgR1BVQnVmZmVyIGJ1ZmZlciwKKyAgICAgICAgb3B0
aW9uYWwgR1BVU2l6ZTY0IG9mZnNldCA9IDAsCisgICAgICAgIG9wdGlvbmFsIEdQVVNpemU2NCBz
aXplKTsKIAogICAgIHVuZGVmaW5lZCB3cml0ZVRpbWVzdGFtcChHUFVRdWVyeVNldCBxdWVyeVNl
dCwgR1BVU2l6ZTMyIHF1ZXJ5SW5kZXgpOwogCkBAIC04MywzICs3OSw1IEBAIGludGVyZmFjZSBH
UFVDb21tYW5kRW5jb2RlciB7CiAgICAgR1BVQ29tbWFuZEJ1ZmZlciBmaW5pc2gob3B0aW9uYWwg
R1BVQ29tbWFuZEJ1ZmZlckRlc2NyaXB0b3IgZGVzY3JpcHRvcik7CiB9OwogR1BVQ29tbWFuZEVu
Y29kZXIgaW5jbHVkZXMgR1BVT2JqZWN0QmFzZTsKK0dQVUNvbW1hbmRFbmNvZGVyIGluY2x1ZGVz
IEdQVUNvbW1hbmRzTWl4aW47CitHUFVDb21tYW5kRW5jb2RlciBpbmNsdWRlcyBHUFVEZWJ1Z0Nv
bW1hbmRzTWl4aW47CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL1dlYkdQVS9H
UFVDb21tYW5kc01peGluLmlkbCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvV2ViR1BVL0dQVUNv
bW1hbmRzTWl4aW4uaWRsCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjJhY2MzZGVlNDFkMzhkNmZjYTc5NmViZWZmMjdh
NWRlY2U2ZWJjYmEKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL1dl
YkdQVS9HUFVDb21tYW5kc01peGluLmlkbApAQCAtMCwwICsxLDMyIEBACisvKgorICogQ29weXJp
Z2h0IChDKSAyMDIyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
CisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAq
CisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05U
UklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAq
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1Ig
SVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRT
OyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5Z
IFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKwor
Ly8gaHR0cHM6Ly9ncHV3ZWIuZ2l0aHViLmlvL2dwdXdlYi8jZ3B1Y29tbWFuZHNtaXhpbgorCitb
CisgICAgRW5hYmxlZEJ5U2V0dGluZz1XZWJHUFUKK10KK2ludGVyZmFjZSBtaXhpbiBHUFVDb21t
YW5kc01peGluIHsKK307CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL1dlYkdQ
VS9HUFVDb21wdXRlUGFzc0VuY29kZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9XZWJH
UFUvR1BVQ29tcHV0ZVBhc3NFbmNvZGVyLmNwcAppbmRleCBiMDExZjUwZTc2NjJlMWVhOWU5OWQ3
NzQ0MjhiOGNhMjI2OGQ0ZDE2Li45NGQ1ODRhNmVjNjhmN2JhODYzOTQzNjVmNThiNjJjMTcwZTVk
OWY4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL1dlYkdQVS9HUFVDb21wdXRl
UGFzc0VuY29kZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvV2ViR1BVL0dQVUNv
bXB1dGVQYXNzRW5jb2Rlci5jcHAKQEAgLTQ4LDkgKzQ4LDkgQEAgdm9pZCBHUFVDb21wdXRlUGFz
c0VuY29kZXI6OnNldFBpcGVsaW5lKGNvbnN0IEdQVUNvbXB1dGVQaXBlbGluZSYgY29tcHV0ZVBp
cGVsaW4KICAgICBtX2JhY2tpbmctPnNldFBpcGVsaW5lKGNvbXB1dGVQaXBlbGluZS5iYWNraW5n
KCkpOwogfQogCi12b2lkIEdQVUNvbXB1dGVQYXNzRW5jb2Rlcjo6ZGlzcGF0Y2goR1BVU2l6ZTMy
IHgsIHN0ZDo6b3B0aW9uYWw8R1BVU2l6ZTMyPiB5LCBzdGQ6Om9wdGlvbmFsPEdQVVNpemUzMj4g
eikKK3ZvaWQgR1BVQ29tcHV0ZVBhc3NFbmNvZGVyOjpkaXNwYXRjaChHUFVTaXplMzIgd29ya2dy
b3VwQ291bnRYLCBHUFVTaXplMzIgd29ya2dyb3VwQ291bnRZLCBHUFVTaXplMzIgd29ya2dyb3Vw
Q291bnRaKQogewotICAgIG1fYmFja2luZy0+ZGlzcGF0Y2goeCwgeSwgeik7CisgICAgbV9iYWNr
aW5nLT5kaXNwYXRjaCh3b3JrZ3JvdXBDb3VudFgsIHdvcmtncm91cENvdW50WSwgd29ya2dyb3Vw
Q291bnRaKTsKIH0KIAogdm9pZCBHUFVDb21wdXRlUGFzc0VuY29kZXI6OmRpc3BhdGNoSW5kaXJl
Y3QoY29uc3QgR1BVQnVmZmVyJiBpbmRpcmVjdEJ1ZmZlciwgR1BVU2l6ZTY0IGluZGlyZWN0T2Zm
c2V0KQpAQCAtNTgsMTkgKzU4LDkgQEAgdm9pZCBHUFVDb21wdXRlUGFzc0VuY29kZXI6OmRpc3Bh
dGNoSW5kaXJlY3QoY29uc3QgR1BVQnVmZmVyJiBpbmRpcmVjdEJ1ZmZlciwgR1AKICAgICBtX2Jh
Y2tpbmctPmRpc3BhdGNoSW5kaXJlY3QoaW5kaXJlY3RCdWZmZXIuYmFja2luZygpLCBpbmRpcmVj
dE9mZnNldCk7CiB9CiAKLXZvaWQgR1BVQ29tcHV0ZVBhc3NFbmNvZGVyOjpiZWdpblBpcGVsaW5l
U3RhdGlzdGljc1F1ZXJ5KGNvbnN0IEdQVVF1ZXJ5U2V0JiBxdWVyeVNldCwgR1BVU2l6ZTMyIHF1
ZXJ5SW5kZXgpCit2b2lkIEdQVUNvbXB1dGVQYXNzRW5jb2Rlcjo6ZW5kKCkKIHsKLSAgICBtX2Jh
Y2tpbmctPmJlZ2luUGlwZWxpbmVTdGF0aXN0aWNzUXVlcnkocXVlcnlTZXQuYmFja2luZygpLCBx
dWVyeUluZGV4KTsKLX0KLQotdm9pZCBHUFVDb21wdXRlUGFzc0VuY29kZXI6OmVuZFBpcGVsaW5l
U3RhdGlzdGljc1F1ZXJ5KCkKLXsKLSAgICBtX2JhY2tpbmctPmVuZFBpcGVsaW5lU3RhdGlzdGlj
c1F1ZXJ5KCk7Ci19Ci0KLXZvaWQgR1BVQ29tcHV0ZVBhc3NFbmNvZGVyOjplbmRQYXNzKCkKLXsK
LSAgICBtX2JhY2tpbmctPmVuZFBhc3MoKTsKKyAgICBtX2JhY2tpbmctPmVuZCgpOwogfQogCiB2
b2lkIEdQVUNvbXB1dGVQYXNzRW5jb2Rlcjo6c2V0QmluZEdyb3VwKEdQVUluZGV4MzIgaW5kZXgs
IGNvbnN0IEdQVUJpbmRHcm91cCYgYmluZEdyb3VwLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9XZWJHUFUvR1BVQ29tcHV0ZVBhc3NFbmNvZGVyLmggYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL1dlYkdQVS9HUFVDb21wdXRlUGFzc0VuY29kZXIuaAppbmRleCA3MDY2OGE3MWQ2
MDJiMjllZWIwMTg3MjUyMzFlZDgwN2FiM2ZiZjAwLi43YjdlY2IzODExMzU5NjkzZWU2ZGU4MGFl
MDBkZjZhNmE4NTFlN2IyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL1dlYkdQ
VS9HUFVDb21wdXRlUGFzc0VuY29kZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL1dl
YkdQVS9HUFVDb21wdXRlUGFzc0VuY29kZXIuaApAQCAtNTIsMTMgKzUyLDEwIEBAIHB1YmxpYzoK
ICAgICB2b2lkIHNldExhYmVsKFN0cmluZyYmKTsKIAogICAgIHZvaWQgc2V0UGlwZWxpbmUoY29u
c3QgR1BVQ29tcHV0ZVBpcGVsaW5lJik7Ci0gICAgdm9pZCBkaXNwYXRjaChHUFVTaXplMzIgeCwg
c3RkOjpvcHRpb25hbDxHUFVTaXplMzI+IHksIHN0ZDo6b3B0aW9uYWw8R1BVU2l6ZTMyPik7Cisg
ICAgdm9pZCBkaXNwYXRjaChHUFVTaXplMzIgd29ya2dyb3VwQ291bnRYLCBHUFVTaXplMzIgd29y
a2dyb3VwQ291bnRZLCBHUFVTaXplMzIgd29ya2dyb3VwQ291bnRaKTsKICAgICB2b2lkIGRpc3Bh
dGNoSW5kaXJlY3QoY29uc3QgR1BVQnVmZmVyJiBpbmRpcmVjdEJ1ZmZlciwgR1BVU2l6ZTY0IGlu
ZGlyZWN0T2Zmc2V0KTsKIAotICAgIHZvaWQgYmVnaW5QaXBlbGluZVN0YXRpc3RpY3NRdWVyeShj
b25zdCBHUFVRdWVyeVNldCYsIEdQVVNpemUzMiBxdWVyeUluZGV4KTsKLSAgICB2b2lkIGVuZFBp
cGVsaW5lU3RhdGlzdGljc1F1ZXJ5KCk7Ci0KLSAgICB2b2lkIGVuZFBhc3MoKTsKKyAgICB2b2lk
IGVuZCgpOwogCiAgICAgdm9pZCBzZXRCaW5kR3JvdXAoR1BVSW5kZXgzMiwgY29uc3QgR1BVQmlu
ZEdyb3VwJiwKICAgICAgICAgc3RkOjpvcHRpb25hbDxWZWN0b3I8R1BVQnVmZmVyRHluYW1pY09m
ZnNldD4+JiYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9XZWJHUFUvR1BV
Q29tcHV0ZVBhc3NFbmNvZGVyLmlkbCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvV2ViR1BVL0dQ
VUNvbXB1dGVQYXNzRW5jb2Rlci5pZGwKaW5kZXggOTU4ZGQ3N2U3Njc0MDYyNjI5OGZkNDJiZGQw
NGFlMWM3OGU1Yjg5OC4uOWZmYTZiMDYwMTcyODFkNmQ0ZjY1MmM0ZmRhZDYwNGRmYzE1NTFjZCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9XZWJHUFUvR1BVQ29tcHV0ZVBhc3NF
bmNvZGVyLmlkbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL1dlYkdQVS9HUFVDb21wdXRl
UGFzc0VuY29kZXIuaWRsCkBAIC0zNiwxMyArMzYsMTIgQEAgdHlwZWRlZiBbRW5mb3JjZVJhbmdl
XSB1bnNpZ25lZCBsb25nIGxvbmcgR1BVU2l6ZTY0OwogXQogaW50ZXJmYWNlIEdQVUNvbXB1dGVQ
YXNzRW5jb2RlciB7CiAgICAgdW5kZWZpbmVkIHNldFBpcGVsaW5lKEdQVUNvbXB1dGVQaXBlbGlu
ZSBwaXBlbGluZSk7Ci0gICAgdW5kZWZpbmVkIGRpc3BhdGNoKEdQVVNpemUzMiB4LCBvcHRpb25h
bCBHUFVTaXplMzIgeSA9IDEsIG9wdGlvbmFsIEdQVVNpemUzMiB6ID0gMSk7CisgICAgdW5kZWZp
bmVkIGRpc3BhdGNoKEdQVVNpemUzMiB3b3JrZ3JvdXBDb3VudFgsIG9wdGlvbmFsIEdQVVNpemUz
MiB3b3JrZ3JvdXBDb3VudFkgPSAxLCBvcHRpb25hbCBHUFVTaXplMzIgd29ya2dyb3VwQ291bnRa
ID0gMSk7CiAgICAgdW5kZWZpbmVkIGRpc3BhdGNoSW5kaXJlY3QoR1BVQnVmZmVyIGluZGlyZWN0
QnVmZmVyLCBHUFVTaXplNjQgaW5kaXJlY3RPZmZzZXQpOwogCi0gICAgdW5kZWZpbmVkIGJlZ2lu
UGlwZWxpbmVTdGF0aXN0aWNzUXVlcnkoR1BVUXVlcnlTZXQgcXVlcnlTZXQsIEdQVVNpemUzMiBx
dWVyeUluZGV4KTsKLSAgICB1bmRlZmluZWQgZW5kUGlwZWxpbmVTdGF0aXN0aWNzUXVlcnkoKTsK
LQotICAgIHVuZGVmaW5lZCBlbmRQYXNzKCk7CisgICAgdW5kZWZpbmVkIGVuZCgpOwogfTsKIEdQ
VUNvbXB1dGVQYXNzRW5jb2RlciBpbmNsdWRlcyBHUFVPYmplY3RCYXNlOworR1BVQ29tcHV0ZVBh
c3NFbmNvZGVyIGluY2x1ZGVzIEdQVUNvbW1hbmRzTWl4aW47CitHUFVDb21wdXRlUGFzc0VuY29k
ZXIgaW5jbHVkZXMgR1BVRGVidWdDb21tYW5kc01peGluOwogR1BVQ29tcHV0ZVBhc3NFbmNvZGVy
IGluY2x1ZGVzIEdQVVByb2dyYW1tYWJsZVBhc3NFbmNvZGVyOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9XZWJHUFUvR1BVRGVidWdDb21tYW5kc01peGluLmlkbCBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvV2ViR1BVL0dQVURlYnVnQ29tbWFuZHNNaXhpbi5pZGwKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uMWY4NDhhNDJkY2JjY2E2NmMzMTgxYmE4YmUxNDA4ZTYzYzA1NjQwNAotLS0gL2Rldi9u
dWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvV2ViR1BVL0dQVURlYnVnQ29tbWFuZHNN
aXhpbi5pZGwKQEAgLTAsMCArMSwzNSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMiBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMn
JworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMK
KyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJ
QUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAq
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICog
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKy8vIGh0dHBzOi8vZ3B1d2Vi
LmdpdGh1Yi5pby9ncHV3ZWIvI2dwdWRlYnVnY29tbWFuZHNtaXhpbgorCitbCisgICAgRW5hYmxl
ZEJ5U2V0dGluZz1XZWJHUFUKK10KK2ludGVyZmFjZSBtaXhpbiBHUFVEZWJ1Z0NvbW1hbmRzTWl4
aW4geworICAgIHVuZGVmaW5lZCBwdXNoRGVidWdHcm91cChVU1ZTdHJpbmcgZ3JvdXBMYWJlbCk7
CisgICAgdW5kZWZpbmVkIHBvcERlYnVnR3JvdXAoKTsKKyAgICB1bmRlZmluZWQgaW5zZXJ0RGVi
dWdNYXJrZXIoVVNWU3RyaW5nIG1hcmtlckxhYmVsKTsKK307CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL1dlYkdQVS9HUFVGZWF0dXJlTmFtZS5oIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9XZWJHUFUvR1BVRmVhdHVyZU5hbWUuaAppbmRleCA0ZmVhYjUwMWM1YWM0N2UyMzJj
YmNiN2JhZDUwYjAwZjczNDFjYzk4Li5hODAzYWMyZjU1OGQ4NWI2YmRmYTUxZjUxNzUwN2U5ZTg2
ZTZkZWNiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL1dlYkdQVS9HUFVGZWF0
dXJlTmFtZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvV2ViR1BVL0dQVUZlYXR1cmVO
YW1lLmgKQEAgLTM0LDcgKzM0LDYgQEAgZW51bSBjbGFzcyBHUFVGZWF0dXJlTmFtZSA6IHVpbnQ4
X3QgewogICAgIERlcHRoQ2xpcENvbnRyb2wsCiAgICAgRGVwdGgyNHVub3JtU3RlbmNpbDgsCiAg
ICAgRGVwdGgzMmZsb2F0U3RlbmNpbDgsCi0gICAgUGlwZWxpbmVTdGF0aXN0aWNzUXVlcnksCiAg
ICAgVGV4dHVyZUNvbXByZXNzaW9uQmMsCiAgICAgVGV4dHVyZUNvbXByZXNzaW9uRXRjMiwKICAg
ICBUZXh0dXJlQ29tcHJlc3Npb25Bc3RjLApAQCAtNTEsOCArNTAsNiBAQCBpbmxpbmUgUEFMOjpX
ZWJHUFU6OkZlYXR1cmVOYW1lIGNvbnZlcnRUb0JhY2tpbmcoR1BVRmVhdHVyZU5hbWUgZmVhdHVy
ZU5hbWUpCiAgICAgICAgIHJldHVybiBQQUw6OldlYkdQVTo6RmVhdHVyZU5hbWU6OkRlcHRoMjR1
bm9ybVN0ZW5jaWw4OwogICAgIGNhc2UgR1BVRmVhdHVyZU5hbWU6OkRlcHRoMzJmbG9hdFN0ZW5j
aWw4OgogICAgICAgICByZXR1cm4gUEFMOjpXZWJHUFU6OkZlYXR1cmVOYW1lOjpEZXB0aDMyZmxv
YXRTdGVuY2lsODsKLSAgICBjYXNlIEdQVUZlYXR1cmVOYW1lOjpQaXBlbGluZVN0YXRpc3RpY3NR
dWVyeToKLSAgICAgICAgcmV0dXJuIFBBTDo6V2ViR1BVOjpGZWF0dXJlTmFtZTo6UGlwZWxpbmVT
dGF0aXN0aWNzUXVlcnk7CiAgICAgY2FzZSBHUFVGZWF0dXJlTmFtZTo6VGV4dHVyZUNvbXByZXNz
aW9uQmM6CiAgICAgICAgIHJldHVybiBQQUw6OldlYkdQVTo6RmVhdHVyZU5hbWU6OlRleHR1cmVD
b21wcmVzc2lvbkJjOwogICAgIGNhc2UgR1BVRmVhdHVyZU5hbWU6OlRleHR1cmVDb21wcmVzc2lv
bkV0YzI6CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL1dlYkdQVS9HUFVGZWF0
dXJlTmFtZS5pZGwgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL1dlYkdQVS9HUFVGZWF0dXJlTmFt
ZS5pZGwKaW5kZXggMTg0ZTVhNTFlYzEyZDE1M2U3ZWI5MzQzODQ5Y2NmNzU3YTk1ZjNiYi4uMjVm
MGYzODNkNTFhYTE5ZDdjNGUwZjViMTQzMDU2ZWY1MjUwM2FlYSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9XZWJHUFUvR1BVRmVhdHVyZU5hbWUuaWRsCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvV2ViR1BVL0dQVUZlYXR1cmVOYW1lLmlkbApAQCAtMzIsNyArMzIsNiBA
QCBlbnVtIEdQVUZlYXR1cmVOYW1lIHsKICAgICAiZGVwdGgtY2xpcC1jb250cm9sIiwKICAgICAi
ZGVwdGgyNHVub3JtLXN0ZW5jaWw4IiwKICAgICAiZGVwdGgzMmZsb2F0LXN0ZW5jaWw4IiwKLSAg
ICAicGlwZWxpbmUtc3RhdGlzdGljcy1xdWVyeSIsCiAgICAgInRleHR1cmUtY29tcHJlc3Npb24t
YmMiLAogICAgICJ0ZXh0dXJlLWNvbXByZXNzaW9uLWV0YzIiLAogICAgICJ0ZXh0dXJlLWNvbXBy
ZXNzaW9uLWFzdGMiLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9XZWJHUFUv
R1BVRnJhZ21lbnRTdGF0ZS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9XZWJHUFUvR1BVRnJh
Z21lbnRTdGF0ZS5oCmluZGV4IGU5YjY5YWNiNWFjYjA2Y2E2OWI4NzE3MmU5OTNlNTE4ZWY5NWI1
ZmIuLmUxNzJlNDE1NGY2YjM1ODE3NThlNGNjOThiYTI3ZGY2ODM3ZjAwNjggMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvV2ViR1BVL0dQVUZyYWdtZW50U3RhdGUuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL1dlYkdQVS9HUFVGcmFnbWVudFN0YXRlLmgKQEAgLTI3LDYg
KzI3LDcgQEAKIAogI2luY2x1ZGUgIkdQVUNvbG9yVGFyZ2V0U3RhdGUuaCIKICNpbmNsdWRlICJH
UFVQcm9ncmFtbWFibGVTdGFnZS5oIgorI2luY2x1ZGUgPG9wdGlvbmFsPgogI2luY2x1ZGUgPHBh
bC9ncmFwaGljcy9XZWJHUFUvV2ViR1BVRnJhZ21lbnRTdGF0ZS5oPgogI2luY2x1ZGUgPHd0Zi9W
ZWN0b3IuaD4KIApAQCAtNDIsMTMgKzQzLDE1IEBAIHN0cnVjdCBHUFVGcmFnbWVudFN0YXRlIDog
cHVibGljIEdQVVByb2dyYW1tYWJsZVN0YWdlIHsKICAgICAgICAgICAgICAgICBlbnRyeVBvaW50
LAogICAgICAgICAgICAgICAgIGNvbnN0YW50cywKICAgICAgICAgICAgIH0sCi0gICAgICAgICAg
ICB0YXJnZXRzLm1hcChbXSAoYXV0byYgdGFyZ2V0KSB7Ci0gICAgICAgICAgICAgICAgcmV0dXJu
IHRhcmdldC5jb252ZXJ0VG9CYWNraW5nKCk7CisgICAgICAgICAgICB0YXJnZXRzLm1hcChbXSAo
YXV0byYgdGFyZ2V0KSAtPiBzdGQ6Om9wdGlvbmFsPFBBTDo6V2ViR1BVOjpDb2xvclRhcmdldFN0
YXRlPiB7CisgICAgICAgICAgICAgICAgaWYgKHRhcmdldCkKKyAgICAgICAgICAgICAgICAgICAg
cmV0dXJuIHRhcmdldC0+Y29udmVydFRvQmFja2luZygpOworICAgICAgICAgICAgICAgIHJldHVy
biBzdGQ6Om51bGxvcHQ7CiAgICAgICAgICAgICB9KSwKICAgICAgICAgfTsKICAgICB9CiAKLSAg
ICBWZWN0b3I8R1BVQ29sb3JUYXJnZXRTdGF0ZT4gdGFyZ2V0czsKKyAgICBWZWN0b3I8c3RkOjpv
cHRpb25hbDxHUFVDb2xvclRhcmdldFN0YXRlPj4gdGFyZ2V0czsKIH07CiAKIH0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvV2ViR1BVL0dQVUZyYWdtZW50U3RhdGUuaWRsIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9XZWJHUFUvR1BVRnJhZ21lbnRTdGF0ZS5pZGwKaW5kZXgg
MTg5ODRlNGVhNjk2MTMwODEwZGRlOTQ5MjY3ZWY5OTZlNDkzZDFkZC4uNDNhZmZlOWFkZTAwMTc4
N2Q4MzIyMjI1YTY5NGVlYjdkYjk3NDcyMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9XZWJHUFUvR1BVRnJhZ21lbnRTdGF0ZS5pZGwKKysrIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9XZWJHUFUvR1BVRnJhZ21lbnRTdGF0ZS5pZGwKQEAgLTI5LDUgKzI5LDUgQEAKICAgICBF
bmFibGVkQnlTZXR0aW5nPVdlYkdQVQogXQogZGljdGlvbmFyeSBHUFVGcmFnbWVudFN0YXRlIDog
R1BVUHJvZ3JhbW1hYmxlU3RhZ2UgewotICAgIHJlcXVpcmVkIHNlcXVlbmNlPEdQVUNvbG9yVGFy
Z2V0U3RhdGU+IHRhcmdldHM7CisgICAgcmVxdWlyZWQgc2VxdWVuY2U8R1BVQ29sb3JUYXJnZXRT
dGF0ZT8+IHRhcmdldHM7CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9X
ZWJHUFUvR1BVSW1hZ2VDb3B5RXh0ZXJuYWxJbWFnZS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9XZWJHUFUvR1BVSW1hZ2VDb3B5RXh0ZXJuYWxJbWFnZS5oCmluZGV4IDRjY2NhYjdmMDA1NjZh
MzEzNmEyNTc4OTBiODkxYjk3ZGMzNWE4OGUuLjk1N2NjOWUzODExYWUyN2Q2ZjNhODI4NjdhYjA2
ZTRjOWM4NjZlMGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvV2ViR1BVL0dQ
VUltYWdlQ29weUV4dGVybmFsSW1hZ2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL1dl
YkdQVS9HUFVJbWFnZUNvcHlFeHRlcm5hbEltYWdlLmgKQEAgLTQxLDExICs0MSwxMyBAQCBzdHJ1
Y3QgR1BVSW1hZ2VDb3B5RXh0ZXJuYWxJbWFnZSB7CiAgICAgICAgIHJldHVybiB7CiAgICAgICAg
ICAgICAvLyBGSVhNRTogSGFuZGxlIHRoZSBjYW52YXMgZWxlbWVudC4KICAgICAgICAgICAgIG9y
aWdpbiA/IHN0ZDo6b3B0aW9uYWwgeyBXZWJDb3JlOjpjb252ZXJ0VG9CYWNraW5nKCpvcmlnaW4p
IH0gOiBzdGQ6Om51bGxvcHQsCisgICAgICAgICAgICBmbGlwWSwKICAgICAgICAgfTsKICAgICB9
CiAKICAgICBzdGQ6OnZhcmlhbnQ8UmVmUHRyPEltYWdlQml0bWFwPiwgUmVmUHRyPEhUTUxDYW52
YXNFbGVtZW50Pj4gc291cmNlOwogICAgIHN0ZDo6b3B0aW9uYWw8R1BVT3JpZ2luMkQ+IG9yaWdp
bjsKKyAgICBib29sIGZsaXBZIHsgZmFsc2UgfTsKIH07CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvV2ViR1BVL0dQVUltYWdlQ29weUV4dGVybmFsSW1hZ2UuaWRsIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9XZWJHUFUvR1BVSW1hZ2VDb3B5RXh0ZXJuYWxJbWFnZS5p
ZGwKaW5kZXggOWU2MTJiYjUzNjg3N2FmZmYxMDk2NThmMzVhMTQxNGFkYWFkOWYyZS4uMWYyMjIy
YTU1YmFlZTljMjdkMmQyNTg2Yzk3ODE1MzRjOWM5Y2U5NSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9XZWJHUFUvR1BVSW1hZ2VDb3B5RXh0ZXJuYWxJbWFnZS5pZGwKKysrIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9XZWJHUFUvR1BVSW1hZ2VDb3B5RXh0ZXJuYWxJbWFnZS5p
ZGwKQEAgLTM1LDQgKzM1LDUgQEAgdHlwZWRlZiAoc2VxdWVuY2U8R1BVSW50ZWdlckNvb3JkaW5h
dGU+IG9yIEdQVU9yaWdpbjJERGljdCkgR1BVT3JpZ2luMkQ7CiBkaWN0aW9uYXJ5IEdQVUltYWdl
Q29weUV4dGVybmFsSW1hZ2UgewogICAgIHJlcXVpcmVkIChJbWFnZUJpdG1hcCBvciBIVE1MQ2Fu
dmFzRWxlbWVudCkgc291cmNlOyAvLyBGSVhNRTogT2Zmc2NyZWVuQ2FudmFzIGRvZXNuJ3Qgc2Vl
bSB0byB3b3JrIHdpdGggb3VyIGJpbmRpbmdzIGhlcmUuCiAgICAgR1BVT3JpZ2luMkQgb3JpZ2lu
OworICAgIGJvb2xlYW4gZmxpcFkgPSBmYWxzZTsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL1dlYkdQVS9HUFVMb2FkT3AuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
V2ViR1BVL0dQVUxvYWRPcC5oCmluZGV4IDM1ZTU3NDlmZTE3ZDViZDI5ZTE1NzBiMjE3ZTU5OTIx
MTU3MTkyMjkuLjEyY2FkYWZiMmE1NzAzNmMwNmI2OWQxODBkYzFhNWFkZWMyMzMwOGIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvV2ViR1BVL0dQVUxvYWRPcC5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvV2ViR1BVL0dQVUxvYWRPcC5oCkBAIC0zMiw2ICszMiw3IEBA
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogZW51bSBjbGFzcyBHUFVMb2FkT3AgOiB1aW50OF90IHsK
ICAgICBMb2FkLAorICAgIENsZWFyLAogfTsKIAogaW5saW5lIFBBTDo6V2ViR1BVOjpMb2FkT3Ag
Y29udmVydFRvQmFja2luZyhHUFVMb2FkT3AgbG9hZE9wKQpAQCAtMzksNiArNDAsOCBAQCBpbmxp
bmUgUEFMOjpXZWJHUFU6OkxvYWRPcCBjb252ZXJ0VG9CYWNraW5nKEdQVUxvYWRPcCBsb2FkT3Ap
CiAgICAgc3dpdGNoIChsb2FkT3ApIHsKICAgICBjYXNlIEdQVUxvYWRPcDo6TG9hZDoKICAgICAg
ICAgcmV0dXJuIFBBTDo6V2ViR1BVOjpMb2FkT3A6OkxvYWQ7CisgICAgY2FzZSBHUFVMb2FkT3A6
OkNsZWFyOgorICAgICAgICByZXR1cm4gUEFMOjpXZWJHUFU6OkxvYWRPcDo6Q2xlYXI7CiAgICAg
fQogICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CiB9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL1dlYkdQVS9HUFVMb2FkT3AuaWRsIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9XZWJHUFUvR1BVTG9hZE9wLmlkbAppbmRleCBjODQ5NTQxYjUyNDY3NjUxMGM1NjI4
ZmM5OTEwMWFjYjkyOTlhODUzLi5kNjAyYjYxYzUyYjQ4MTI2OTgzZjQ4YWYwZTdjMDVkNWY1MjFl
Yzc0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL1dlYkdQVS9HUFVMb2FkT3Au
aWRsCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvV2ViR1BVL0dQVUxvYWRPcC5pZGwKQEAg
LTI5LDUgKzI5LDYgQEAKICAgICBFbmFibGVkQnlTZXR0aW5nPVdlYkdQVQogXQogZW51bSBHUFVM
b2FkT3AgewotICAgICJsb2FkIgorICAgICJsb2FkIiwKKyAgICAiY2xlYXIiCiB9OwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9XZWJHUFUvR1BVT2JqZWN0QmFzZS5pZGwgYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL1dlYkdQVS9HUFVPYmplY3RCYXNlLmlkbAppbmRleCBlMTMz
MWIzZWMzY2Q3ZWY4M2IxNzU0MzJmMzc2MjdiN2FkNTg0MGQ0Li44Y2VmYzcxZDVlOTg2YjUwYTU2
ZmEyMWE0ODA0NWMzNjNiYzE1N2JiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L1dlYkdQVS9HUFVPYmplY3RCYXNlLmlkbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL1dl
YkdQVS9HUFVPYmplY3RCYXNlLmlkbApAQCAtMjksNSArMjksNSBAQAogICAgIEVuYWJsZWRCeVNl
dHRpbmc9V2ViR1BVCiBdCiBpbnRlcmZhY2UgbWl4aW4gR1BVT2JqZWN0QmFzZSB7Ci0gICAgYXR0
cmlidXRlIFVTVlN0cmluZz8gbGFiZWw7CisgICAgYXR0cmlidXRlIFVTVlN0cmluZz8gbGFiZWw7
IC8vIEZJWE1FOiBUaGlzIGlzIHN1cHBvc2VkIHRvIGJlIChVU1ZTdHJpbmcgb3IgdW5kZWZpbmVk
KSBidXQgb3VyIGJpbmRpbmdzIGdlbmVyYXRvciBjYW4ndCBoYW5kbGUgdGhhdC4KIH07CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL1dlYkdQVS9HUFVQaXBlbGluZVN0YXRpc3Rp
Y05hbWUuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvV2ViR1BVL0dQVVBpcGVsaW5lU3RhdGlz
dGljTmFtZS5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmOGRlOGJmZjhmNTczZWM0
ZjNhZjY3MzJjMjlmZGYyYTEwOGVkNjUxLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvV2ViR1BVL0dQVVBpcGVsaW5l
U3RhdGlzdGljTmFtZS5oCisrKyAvZGV2L251bGwKQEAgLTEsNTggKzAsMCBAQAotLyoKLSAqIENv
cHlyaWdodCAoQykgMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24u
Ci0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMg
Q09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS
Ci0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMu
IE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwg
REFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0g
KiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJP
RklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
IEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQot
ICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICov
Ci0KLSNwcmFnbWEgb25jZQotCi0jaW5jbHVkZSA8Y3N0ZGludD4KLSNpbmNsdWRlIDxwYWwvZ3Jh
cGhpY3MvV2ViR1BVL1dlYkdQVVBpcGVsaW5lU3RhdGlzdGljTmFtZS5oPgotCi1uYW1lc3BhY2Ug
V2ViQ29yZSB7Ci0KLWVudW0gY2xhc3MgR1BVUGlwZWxpbmVTdGF0aXN0aWNOYW1lIDogdWludDhf
dCB7Ci0gICAgVmVydGV4U2hhZGVySW52b2NhdGlvbnMsCi0gICAgQ2xpcHBlckludm9jYXRpb25z
LAotICAgIENsaXBwZXJQcmltaXRpdmVzT3V0LAotICAgIEZyYWdtZW50U2hhZGVySW52b2NhdGlv
bnMsCi0gICAgQ29tcHV0ZVNoYWRlckludm9jYXRpb25zLAotfTsKLQotaW5saW5lIFBBTDo6V2Vi
R1BVOjpQaXBlbGluZVN0YXRpc3RpY05hbWUgY29udmVydFRvQmFja2luZyhHUFVQaXBlbGluZVN0
YXRpc3RpY05hbWUgcGlwZWxpbmVTdGF0aXN0aWNOYW1lKQotewotICAgIHN3aXRjaCAocGlwZWxp
bmVTdGF0aXN0aWNOYW1lKSB7Ci0gICAgY2FzZSBHUFVQaXBlbGluZVN0YXRpc3RpY05hbWU6OlZl
cnRleFNoYWRlckludm9jYXRpb25zOgotICAgICAgICByZXR1cm4gUEFMOjpXZWJHUFU6OlBpcGVs
aW5lU3RhdGlzdGljTmFtZTo6VmVydGV4U2hhZGVySW52b2NhdGlvbnM7Ci0gICAgY2FzZSBHUFVQ
aXBlbGluZVN0YXRpc3RpY05hbWU6OkNsaXBwZXJJbnZvY2F0aW9uczoKLSAgICAgICAgcmV0dXJu
IFBBTDo6V2ViR1BVOjpQaXBlbGluZVN0YXRpc3RpY05hbWU6OkNsaXBwZXJJbnZvY2F0aW9uczsK
LSAgICBjYXNlIEdQVVBpcGVsaW5lU3RhdGlzdGljTmFtZTo6Q2xpcHBlclByaW1pdGl2ZXNPdXQ6
Ci0gICAgICAgIHJldHVybiBQQUw6OldlYkdQVTo6UGlwZWxpbmVTdGF0aXN0aWNOYW1lOjpDbGlw
cGVyUHJpbWl0aXZlc091dDsKLSAgICBjYXNlIEdQVVBpcGVsaW5lU3RhdGlzdGljTmFtZTo6RnJh
Z21lbnRTaGFkZXJJbnZvY2F0aW9uczoKLSAgICAgICAgcmV0dXJuIFBBTDo6V2ViR1BVOjpQaXBl
bGluZVN0YXRpc3RpY05hbWU6OkZyYWdtZW50U2hhZGVySW52b2NhdGlvbnM7Ci0gICAgY2FzZSBH
UFVQaXBlbGluZVN0YXRpc3RpY05hbWU6OkNvbXB1dGVTaGFkZXJJbnZvY2F0aW9uczoKLSAgICAg
ICAgcmV0dXJuIFBBTDo6V2ViR1BVOjpQaXBlbGluZVN0YXRpc3RpY05hbWU6OkNvbXB1dGVTaGFk
ZXJJbnZvY2F0aW9uczsKLSAgICB9Ci0gICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsK
LX0KLQotfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9XZWJHUFUvR1BVUGlw
ZWxpbmVTdGF0aXN0aWNOYW1lLmlkbCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvV2ViR1BVL0dQ
VVBpcGVsaW5lU3RhdGlzdGljTmFtZS5pZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDg3Njc3YzJjYWRjZTc1NzA2YTExMjAyYzM0NTliMzM0NWMwYzdmOTYuLjAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9X
ZWJHUFUvR1BVUGlwZWxpbmVTdGF0aXN0aWNOYW1lLmlkbAorKysgL2Rldi9udWxsCkBAIC0xLDM3
ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0Ogot
ICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhl
Ci0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
QVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZF
TlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9S
Ci0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgot
ICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KLSAqLwotCi0vLyBodHRwczovL2dwdXdlYi5naXRodWIuaW8vZ3B1d2Vi
LyNlbnVtZGVmLWdwdXBpcGVsaW5lc3RhdGlzdGljbmFtZQotCi1bCi0gICAgRW5hYmxlZEJ5U2V0
dGluZz1XZWJHUFUKLV0KLWVudW0gR1BVUGlwZWxpbmVTdGF0aXN0aWNOYW1lIHsKLSAgICAidmVy
dGV4LXNoYWRlci1pbnZvY2F0aW9ucyIsCi0gICAgImNsaXBwZXItaW52b2NhdGlvbnMiLAotICAg
ICJjbGlwcGVyLXByaW1pdGl2ZXMtb3V0IiwKLSAgICAiZnJhZ21lbnQtc2hhZGVyLWludm9jYXRp
b25zIiwKLSAgICAiY29tcHV0ZS1zaGFkZXItaW52b2NhdGlvbnMiCi19OwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9XZWJHUFUvR1BVUHJvZ3JhbW1hYmxlUGFzc0VuY29kZXIu
aWRsIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9XZWJHUFUvR1BVUHJvZ3JhbW1hYmxlUGFzc0Vu
Y29kZXIuaWRsCmluZGV4IDgxZjIyNTM4MDg5ZWY1ZWFjMzk1YjUwMWEzNDNhYjljZjNlZWMxYmIu
Ljg2NzM0OTJiZjZjYTAzOGQ5MGQwMjAyYzllZDUxMGQwMmE3OTIxZTggMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvV2ViR1BVL0dQVVByb2dyYW1tYWJsZVBhc3NFbmNvZGVyLmlk
bAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL1dlYkdQVS9HUFVQcm9ncmFtbWFibGVQYXNz
RW5jb2Rlci5pZGwKQEAgLTQyLDggKzQyLDQgQEAgaW50ZXJmYWNlIG1peGluIEdQVVByb2dyYW1t
YWJsZVBhc3NFbmNvZGVyIHsKICAgICAgICAgVWludDMyQXJyYXkgZHluYW1pY09mZnNldHNEYXRh
LAogICAgICAgICBHUFVTaXplNjQgZHluYW1pY09mZnNldHNEYXRhU3RhcnQsCiAgICAgICAgIEdQ
VVNpemUzMiBkeW5hbWljT2Zmc2V0c0RhdGFMZW5ndGgpOwotCi0gICAgdW5kZWZpbmVkIHB1c2hE
ZWJ1Z0dyb3VwKFVTVlN0cmluZyBncm91cExhYmVsKTsKLSAgICB1bmRlZmluZWQgcG9wRGVidWdH
cm91cCgpOwotICAgIHVuZGVmaW5lZCBpbnNlcnREZWJ1Z01hcmtlcihVU1ZTdHJpbmcgbWFya2Vy
TGFiZWwpOwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvV2ViR1BVL0dQ
VVF1ZXJ5U2V0RGVzY3JpcHRvci5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9XZWJHUFUvR1BV
UXVlcnlTZXREZXNjcmlwdG9yLmgKaW5kZXggZjAwNDNiZDU3MmYxM2Q4NDI2MWYwM2M5YTcxMGVh
NTUzZjk5M2Y0NC4uZmZkMWY3NTJlOGQxMGZlODVhYTRkMTlhYjk5MTE3ZjBhZWFkZWQ4NCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9XZWJHUFUvR1BVUXVlcnlTZXREZXNjcmlw
dG9yLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9XZWJHUFUvR1BVUXVlcnlTZXREZXNj
cmlwdG9yLmgKQEAgLTI3LDcgKzI3LDYgQEAKIAogI2luY2x1ZGUgIkdQVUludGVncmFsVHlwZXMu
aCIKICNpbmNsdWRlICJHUFVPYmplY3REZXNjcmlwdG9yQmFzZS5oIgotI2luY2x1ZGUgIkdQVVBp
cGVsaW5lU3RhdGlzdGljTmFtZS5oIgogI2luY2x1ZGUgIkdQVVF1ZXJ5VHlwZS5oIgogI2luY2x1
ZGUgPHBhbC9ncmFwaGljcy9XZWJHUFUvV2ViR1BVUXVlcnlTZXREZXNjcmlwdG9yLmg+CiAjaW5j
bHVkZSA8d3RmL1JlZlB0ci5oPgpAQCAtNDIsMTUgKzQxLDExIEBAIHN0cnVjdCBHUFVRdWVyeVNl
dERlc2NyaXB0b3IgOiBwdWJsaWMgR1BVT2JqZWN0RGVzY3JpcHRvckJhc2UgewogICAgICAgICAg
ICAgeyBsYWJlbCB9LAogICAgICAgICAgICAgV2ViQ29yZTo6Y29udmVydFRvQmFja2luZyh0eXBl
KSwKICAgICAgICAgICAgIGNvdW50LAotICAgICAgICAgICAgcGlwZWxpbmVTdGF0aXN0aWNzLm1h
cChbXSAoY29uc3QgYXV0byYgcGlwZWxpbmVTdGF0aXN0aWMpIHsKLSAgICAgICAgICAgICAgICBy
ZXR1cm4gV2ViQ29yZTo6Y29udmVydFRvQmFja2luZyhwaXBlbGluZVN0YXRpc3RpYyk7Ci0gICAg
ICAgICAgICB9KSwKICAgICAgICAgfTsKICAgICB9CiAKICAgICBHUFVRdWVyeVR5cGUgdHlwZSB7
IEdQVVF1ZXJ5VHlwZTo6T2NjbHVzaW9uIH07CiAgICAgR1BVU2l6ZTMyIGNvdW50IHsgMCB9Owot
ICAgIFZlY3RvcjxHUFVQaXBlbGluZVN0YXRpc3RpY05hbWU+IHBpcGVsaW5lU3RhdGlzdGljczsK
IH07CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvV2ViR1BVL0dQVVF1
ZXJ5U2V0RGVzY3JpcHRvci5pZGwgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL1dlYkdQVS9HUFVR
dWVyeVNldERlc2NyaXB0b3IuaWRsCmluZGV4IGZjZDUxYmQ5ZTE5NzY5ZWFlMzJiNWJhMWM3ZTdh
NjJkMDhjODYxZGMuLjVhN2U5NTAyYjZlNWVhZGIxYzkxNjY1MzgyMTEzMzRiMzZlOWNiY2UgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvV2ViR1BVL0dQVVF1ZXJ5U2V0RGVzY3Jp
cHRvci5pZGwKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9XZWJHUFUvR1BVUXVlcnlTZXRE
ZXNjcmlwdG9yLmlkbApAQCAtMzQsNSArMzQsNCBAQCB0eXBlZGVmIFtFbmZvcmNlUmFuZ2VdIHVu
c2lnbmVkIGxvbmcgR1BVU2l6ZTMyOwogZGljdGlvbmFyeSBHUFVRdWVyeVNldERlc2NyaXB0b3Ig
OiBHUFVPYmplY3REZXNjcmlwdG9yQmFzZSB7CiAgICAgcmVxdWlyZWQgR1BVUXVlcnlUeXBlIHR5
cGU7CiAgICAgcmVxdWlyZWQgR1BVU2l6ZTMyIGNvdW50OwotICAgIHNlcXVlbmNlPEdQVVBpcGVs
aW5lU3RhdGlzdGljTmFtZT4gcGlwZWxpbmVTdGF0aXN0aWNzID0gW107CiB9OwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9XZWJHUFUvR1BVUXVlcnlUeXBlLmggYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL1dlYkdQVS9HUFVRdWVyeVR5cGUuaAppbmRleCBlN2E1NzcyZTQ4NjNj
N2M2Yzc4NzhhNDY4NWJhNDQ1NjY4Njk3MGRlLi4yOWI4MzMyYjllOWFmMjRmNzc0Y2EwODc5MDFh
ZDFiZDMyNWFhNjRkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL1dlYkdQVS9H
UFVRdWVyeVR5cGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL1dlYkdQVS9HUFVRdWVy
eVR5cGUuaApAQCAtMzIsNyArMzIsNiBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGVudW0gY2xh
c3MgR1BVUXVlcnlUeXBlIDogdWludDhfdCB7CiAgICAgT2NjbHVzaW9uLAotICAgIFBpcGVsaW5l
U3RhdGlzdGljcywKICAgICBUaW1lc3RhbXAsCiB9OwogCkBAIC00MSw4ICs0MCw2IEBAIGlubGlu
ZSBQQUw6OldlYkdQVTo6UXVlcnlUeXBlIGNvbnZlcnRUb0JhY2tpbmcoR1BVUXVlcnlUeXBlIHF1
ZXJ5VHlwZSkKICAgICBzd2l0Y2ggKHF1ZXJ5VHlwZSkgewogICAgIGNhc2UgR1BVUXVlcnlUeXBl
OjpPY2NsdXNpb246CiAgICAgICAgIHJldHVybiBQQUw6OldlYkdQVTo6UXVlcnlUeXBlOjpPY2Ns
dXNpb247Ci0gICAgY2FzZSBHUFVRdWVyeVR5cGU6OlBpcGVsaW5lU3RhdGlzdGljczoKLSAgICAg
ICAgcmV0dXJuIFBBTDo6V2ViR1BVOjpRdWVyeVR5cGU6OlBpcGVsaW5lU3RhdGlzdGljczsKICAg
ICBjYXNlIEdQVVF1ZXJ5VHlwZTo6VGltZXN0YW1wOgogICAgICAgICByZXR1cm4gUEFMOjpXZWJH
UFU6OlF1ZXJ5VHlwZTo6VGltZXN0YW1wOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvV2ViR1BVL0dQVVF1ZXJ5VHlwZS5pZGwgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL1dlYkdQVS9HUFVRdWVyeVR5cGUuaWRsCmluZGV4IDU0ODFiOTIyYTIzMWRlN2FmOTU4ZGM5
NDIzZmUyMmNiMWEzZjk1NjYuLmQ1OTAyZDZiYzI0MzcwMGViMTg4N2I4NDVlZTUzZTc3NTlmMWU0
ZjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvV2ViR1BVL0dQVVF1ZXJ5VHlw
ZS5pZGwKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9XZWJHUFUvR1BVUXVlcnlUeXBlLmlk
bApAQCAtMzAsNiArMzAsNSBAQAogXQogZW51bSBHUFVRdWVyeVR5cGUgewogICAgICJvY2NsdXNp
b24iLAotICAgICJwaXBlbGluZS1zdGF0aXN0aWNzIiwKICAgICAidGltZXN0YW1wIgogfTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvV2ViR1BVL0dQVVF1ZXVlLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvV2ViR1BVL0dQVVF1ZXVlLmNwcAppbmRleCBmNTg2MTkwMmNm
ZmU2NmYyODhlNWE2Nzc5OWYyMzU1ZjVkMzc3NGIzLi5iNGJlYjQxODM0NTFhNDU4MDBiZjQyMjBk
Yjc2MmNiYjg0ZTMyNmIyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL1dlYkdQ
VS9HUFVRdWV1ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9XZWJHUFUvR1BVUXVl
dWUuY3BwCkBAIC02MywxMCArNjMsMTAgQEAgdm9pZCBHUFVRdWV1ZTo6d3JpdGVCdWZmZXIoCiAg
ICAgY29uc3QgR1BVQnVmZmVyJiBidWZmZXIsCiAgICAgR1BVU2l6ZTY0IGJ1ZmZlck9mZnNldCwK
ICAgICBCdWZmZXJTb3VyY2UmJiBkYXRhLAotICAgIHN0ZDo6b3B0aW9uYWw8R1BVU2l6ZTY0PiBk
YXRhT2Zmc2V0LAorICAgIEdQVVNpemU2NCBkYXRhT2Zmc2V0LAogICAgIHN0ZDo6b3B0aW9uYWw8
R1BVU2l6ZTY0PiBzaXplKQogewotICAgIG1fYmFja2luZy0+d3JpdGVCdWZmZXIoYnVmZmVyLmJh
Y2tpbmcoKSwgYnVmZmVyT2Zmc2V0LCBkYXRhLmRhdGEoKSwgZGF0YS5sZW5ndGgoKSwgZGF0YU9m
ZnNldC52YWx1ZV9vcigwKSwgc2l6ZSk7CisgICAgbV9iYWNraW5nLT53cml0ZUJ1ZmZlcihidWZm
ZXIuYmFja2luZygpLCBidWZmZXJPZmZzZXQsIGRhdGEuZGF0YSgpLCBkYXRhLmxlbmd0aCgpLCBk
YXRhT2Zmc2V0LCBzaXplKTsKIH0KIAogdm9pZCBHUFVRdWV1ZTo6d3JpdGVUZXh0dXJlKApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9XZWJHUFUvR1BVUXVldWUuaCBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvV2ViR1BVL0dQVVF1ZXVlLmgKaW5kZXggZmVjMmZiZDI3NGRmOTVk
MzQ1NjlkZGJhNWRiNWUwYzAyN2MyMzdkZi4uNzUxMTllMGIzNTZiZDE3MTc2ZDg4NWJiMDYwZTNl
ZGI4NTZjN2U5ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9XZWJHUFUvR1BV
UXVldWUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL1dlYkdQVS9HUFVRdWV1ZS5oCkBA
IC02NSw3ICs2NSw3IEBAIHB1YmxpYzoKICAgICAgICAgY29uc3QgR1BVQnVmZmVyJiwKICAgICAg
ICAgR1BVU2l6ZTY0IGJ1ZmZlck9mZnNldCwKICAgICAgICAgQnVmZmVyU291cmNlJiYgZGF0YSwK
LSAgICAgICAgc3RkOjpvcHRpb25hbDxHUFVTaXplNjQ+IGRhdGFPZmZzZXQsCisgICAgICAgIEdQ
VVNpemU2NCBkYXRhT2Zmc2V0LAogICAgICAgICBzdGQ6Om9wdGlvbmFsPEdQVVNpemU2ND4pOwog
CiAgICAgdm9pZCB3cml0ZVRleHR1cmUoCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL1dlYkdQVS9HUFVSZW5kZXJCdW5kbGVFbmNvZGVyLmlkbCBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvV2ViR1BVL0dQVVJlbmRlckJ1bmRsZUVuY29kZXIuaWRsCmluZGV4IGNmYzY4NmQzYzY1
YWQyNjQwY2U1MjJhMGI5YjRmMzBjMDQzNjYzODUuLmUxOWZlYzU1OTZkYWVkNjViZGQzOWIxMTkz
YjNjNDhlMzQ4Njc2YjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvV2ViR1BV
L0dQVVJlbmRlckJ1bmRsZUVuY29kZXIuaWRsCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
V2ViR1BVL0dQVVJlbmRlckJ1bmRsZUVuY29kZXIuaWRsCkBAIC0zNCw1ICszNCw3IEBAIGludGVy
ZmFjZSBHUFVSZW5kZXJCdW5kbGVFbmNvZGVyIHsKICAgICBHUFVSZW5kZXJCdW5kbGUgZmluaXNo
KG9wdGlvbmFsIEdQVVJlbmRlckJ1bmRsZURlc2NyaXB0b3IgZGVzY3JpcHRvcik7CiB9OwogR1BV
UmVuZGVyQnVuZGxlRW5jb2RlciBpbmNsdWRlcyBHUFVPYmplY3RCYXNlOworR1BVUmVuZGVyQnVu
ZGxlRW5jb2RlciBpbmNsdWRlcyBHUFVDb21tYW5kc01peGluOworR1BVUmVuZGVyQnVuZGxlRW5j
b2RlciBpbmNsdWRlcyBHUFVEZWJ1Z0NvbW1hbmRzTWl4aW47CiBHUFVSZW5kZXJCdW5kbGVFbmNv
ZGVyIGluY2x1ZGVzIEdQVVByb2dyYW1tYWJsZVBhc3NFbmNvZGVyOwogR1BVUmVuZGVyQnVuZGxl
RW5jb2RlciBpbmNsdWRlcyBHUFVSZW5kZXJFbmNvZGVyQmFzZTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvV2ViR1BVL0dQVVJlbmRlckJ1bmRsZUVuY29kZXJEZXNjcmlwdG9y
LmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL1dlYkdQVS9HUFVSZW5kZXJCdW5kbGVFbmNvZGVy
RGVzY3JpcHRvci5oCmluZGV4IDhkMTg0NTI2MDYwNTcyNGRmMjI0NzAxZTZkM2E1NTI2MDI5YzZl
NTQuLjg4NGJlN2M0NjA4MDAzMWE2NzQ2ZDNhMjc5MzdmZThkMTM0OTEwM2YgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvV2ViR1BVL0dQVVJlbmRlckJ1bmRsZUVuY29kZXJEZXNj
cmlwdG9yLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9XZWJHUFUvR1BVUmVuZGVyQnVu
ZGxlRW5jb2RlckRlc2NyaXB0b3IuaApAQCAtMzYsOCArMzYsMTAgQEAgc3RydWN0IEdQVVJlbmRl
ckJ1bmRsZUVuY29kZXJEZXNjcmlwdG9yIDogcHVibGljIEdQVVJlbmRlclBhc3NMYXlvdXQgewog
ICAgICAgICByZXR1cm4gewogICAgICAgICAgICAgewogICAgICAgICAgICAgICAgIHsgbGFiZWwg
fSwKLSAgICAgICAgICAgICAgICBjb2xvckZvcm1hdHMubWFwKFtdIChjb25zdCBhdXRvJiBjb2xv
ckZvcm1hdCkgewotICAgICAgICAgICAgICAgICAgICByZXR1cm4gV2ViQ29yZTo6Y29udmVydFRv
QmFja2luZyhjb2xvckZvcm1hdCk7CisgICAgICAgICAgICAgICAgY29sb3JGb3JtYXRzLm1hcChb
XSAoYXV0byYgY29sb3JGb3JtYXQpIC0+IHN0ZDo6b3B0aW9uYWw8UEFMOjpXZWJHUFU6OlRleHR1
cmVGb3JtYXQ+IHsKKyAgICAgICAgICAgICAgICAgICAgaWYgKGNvbG9yRm9ybWF0KQorICAgICAg
ICAgICAgICAgICAgICAgICAgcmV0dXJuIFdlYkNvcmU6OmNvbnZlcnRUb0JhY2tpbmcoKmNvbG9y
Rm9ybWF0KTsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICAg
ICAgICAgICAgICB9KSwKICAgICAgICAgICAgICAgICBkZXB0aFN0ZW5jaWxGb3JtYXQgPyBzdGQ6
Om9wdGlvbmFsIHsgV2ViQ29yZTo6Y29udmVydFRvQmFja2luZygqZGVwdGhTdGVuY2lsRm9ybWF0
KSB9IDogc3RkOjpudWxsb3B0LAogICAgICAgICAgICAgICAgIHNhbXBsZUNvdW50LApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9XZWJHUFUvR1BVUmVuZGVyUGFzc0NvbG9yQXR0
YWNobWVudC5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9XZWJHUFUvR1BVUmVuZGVyUGFzc0Nv
bG9yQXR0YWNobWVudC5oCmluZGV4IDg4NjU2MDYwY2YwMDA0M2NhODMzNzI0YTdlZjZhM2RjOGM4
MzVjYjguLjE2NGY1Mzk1NTlkNWM0NWUyNWY2OGYzY2RhZjRmNjI0ZWUyZDlhZTUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvV2ViR1BVL0dQVVJlbmRlclBhc3NDb2xvckF0dGFj
aG1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL1dlYkdQVS9HUFVSZW5kZXJQYXNz
Q29sb3JBdHRhY2htZW50LmgKQEAgLTQzLDEzICs0Myw4IEBAIHN0cnVjdCBHUFVSZW5kZXJQYXNz
Q29sb3JBdHRhY2htZW50IHsKICAgICAgICAgcmV0dXJuIHsKICAgICAgICAgICAgIHZpZXctPmJh
Y2tpbmcoKSwKICAgICAgICAgICAgIHJlc29sdmVUYXJnZXQgPyAmcmVzb2x2ZVRhcmdldC0+YmFj
a2luZygpIDogbnVsbHB0ciwKLSAgICAgICAgICAgIFdURjo6c3dpdGNoT24obG9hZFZhbHVlLCBb
Jl0gKEdQVUxvYWRPcCBsb2FkT3ApIC0+IHN0ZDo6dmFyaWFudDxQQUw6OldlYkdQVTo6TG9hZE9w
LCBWZWN0b3I8ZG91YmxlPiwgUEFMOjpXZWJHUFU6OkNvbG9yRGljdD4gewotICAgICAgICAgICAg
ICAgIHJldHVybiBXZWJDb3JlOjpjb252ZXJ0VG9CYWNraW5nKGxvYWRPcCk7Ci0gICAgICAgICAg
ICB9LCBbJl0gKGNvbnN0IFZlY3Rvcjxkb3VibGU+JiB2ZWN0b3IpIC0+IHN0ZDo6dmFyaWFudDxQ
QUw6OldlYkdQVTo6TG9hZE9wLCBWZWN0b3I8ZG91YmxlPiwgUEFMOjpXZWJHUFU6OkNvbG9yRGlj
dD4gewotICAgICAgICAgICAgICAgIHJldHVybiB2ZWN0b3I7Ci0gICAgICAgICAgICB9LCBbJl0g
KGNvbnN0IEdQVUNvbG9yRGljdCYgY29sb3IpIC0+IHN0ZDo6dmFyaWFudDxQQUw6OldlYkdQVTo6
TG9hZE9wLCBWZWN0b3I8ZG91YmxlPiwgUEFMOjpXZWJHUFU6OkNvbG9yRGljdD4gewotICAgICAg
ICAgICAgICAgIHJldHVybiBjb2xvci5jb252ZXJ0VG9CYWNraW5nKCk7Ci0gICAgICAgICAgICB9
KSwKKyAgICAgICAgICAgIGNsZWFyVmFsdWUgPyBzdGQ6Om9wdGlvbmFsIHsgV2ViQ29yZTo6Y29u
dmVydFRvQmFja2luZygqY2xlYXJWYWx1ZSkgfSA6IHN0ZDo6bnVsbG9wdCwKKyAgICAgICAgICAg
IFdlYkNvcmU6OmNvbnZlcnRUb0JhY2tpbmcobG9hZE9wKSwKICAgICAgICAgICAgIFdlYkNvcmU6
OmNvbnZlcnRUb0JhY2tpbmcoc3RvcmVPcCksCiAgICAgICAgIH07CiAgICAgfQpAQCAtNTcsNyAr
NTIsOCBAQCBzdHJ1Y3QgR1BVUmVuZGVyUGFzc0NvbG9yQXR0YWNobWVudCB7CiAgICAgR1BVVGV4
dHVyZVZpZXcqIHZpZXcgeyBudWxscHRyIH07CiAgICAgR1BVVGV4dHVyZVZpZXcqIHJlc29sdmVU
YXJnZXQgeyBudWxscHRyIH07CiAKLSAgICBzdGQ6OnZhcmlhbnQ8R1BVTG9hZE9wLCBWZWN0b3I8
ZG91YmxlPiwgR1BVQ29sb3JEaWN0PiBsb2FkVmFsdWU7CisgICAgc3RkOjpvcHRpb25hbDxHUFVD
b2xvcj4gY2xlYXJWYWx1ZTsKKyAgICBHUFVMb2FkT3AgbG9hZE9wIHsgR1BVTG9hZE9wOjpMb2Fk
IH07CiAgICAgR1BVU3RvcmVPcCBzdG9yZU9wIHsgR1BVU3RvcmVPcDo6U3RvcmUgfTsKIH07CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvV2ViR1BVL0dQVVJlbmRlclBhc3ND
b2xvckF0dGFjaG1lbnQuaWRsIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9XZWJHUFUvR1BVUmVu
ZGVyUGFzc0NvbG9yQXR0YWNobWVudC5pZGwKaW5kZXggMmJkYzZjNDM5YzM5MjJlOTUwNjdjYWMy
NjE2NDA3M2EwMzdlNTFkMC4uODUyYWNjNmZiMzYzOWFjMGE0YTc5NDZiYTc5NGY0MTY2ZmIzMjVk
ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9XZWJHUFUvR1BVUmVuZGVyUGFz
c0NvbG9yQXR0YWNobWVudC5pZGwKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9XZWJHUFUv
R1BVUmVuZGVyUGFzc0NvbG9yQXR0YWNobWVudC5pZGwKQEAgLTM1LDYgKzM1LDcgQEAgZGljdGlv
bmFyeSBHUFVSZW5kZXJQYXNzQ29sb3JBdHRhY2htZW50IHsKICAgICByZXF1aXJlZCBHUFVUZXh0
dXJlVmlldyB2aWV3OwogICAgIEdQVVRleHR1cmVWaWV3IHJlc29sdmVUYXJnZXQ7CiAKLSAgICBy
ZXF1aXJlZCAoR1BVTG9hZE9wIG9yIEdQVUNvbG9yKSBsb2FkVmFsdWU7CisgICAgR1BVQ29sb3Ig
Y2xlYXJWYWx1ZTsKKyAgICByZXF1aXJlZCBHUFVMb2FkT3AgbG9hZE9wOwogICAgIHJlcXVpcmVk
IEdQVVN0b3JlT3Agc3RvcmVPcDsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL1dlYkdQVS9HUFVSZW5kZXJQYXNzRGVwdGhTdGVuY2lsQXR0YWNobWVudC5oIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9XZWJHUFUvR1BVUmVuZGVyUGFzc0RlcHRoU3RlbmNpbEF0dGFjaG1l
bnQuaAppbmRleCBmYTNmYjc2MDAxODEwZmI2MGVhMzI4MWM3MmY3OTQzZTBhMzEzNzIyLi5jZmI0
YzdiZGU3YjMwY2U0MmRlNWNkMTBlOGVkOWI3Nzc4NTZjNmIzIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL1dlYkdQVS9HUFVSZW5kZXJQYXNzRGVwdGhTdGVuY2lsQXR0YWNobWVu
dC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvV2ViR1BVL0dQVVJlbmRlclBhc3NEZXB0
aFN0ZW5jaWxBdHRhY2htZW50LmgKQEAgLTQxLDMxICs0MSwyNyBAQCBzdHJ1Y3QgR1BVUmVuZGVy
UGFzc0RlcHRoU3RlbmNpbEF0dGFjaG1lbnQgewogICAgICAgICBBU1NFUlQodmlldyk7CiAgICAg
ICAgIHJldHVybiB7CiAgICAgICAgICAgICB2aWV3LT5iYWNraW5nKCksCi0gICAgICAgICAgICBX
VEY6OnN3aXRjaE9uKGRlcHRoTG9hZFZhbHVlLCBbJl0gKEdQVUxvYWRPcCBsb2FkT3ApIC0+IHN0
ZDo6dmFyaWFudDxQQUw6OldlYkdQVTo6TG9hZE9wLCBmbG9hdD4gewotICAgICAgICAgICAgICAg
IHJldHVybiBXZWJDb3JlOjpjb252ZXJ0VG9CYWNraW5nKGxvYWRPcCk7Ci0gICAgICAgICAgICB9
LCBbJl0gKGZsb2F0IGYpIC0+IHN0ZDo6dmFyaWFudDxQQUw6OldlYkdQVTo6TG9hZE9wLCBmbG9h
dD4gewotICAgICAgICAgICAgICAgIHJldHVybiBmOwotICAgICAgICAgICAgfSksCi0gICAgICAg
ICAgICBXZWJDb3JlOjpjb252ZXJ0VG9CYWNraW5nKGRlcHRoU3RvcmVPcCksCisgICAgICAgICAg
ICBkZXB0aENsZWFyVmFsdWUsCisgICAgICAgICAgICBkZXB0aExvYWRPcCA/IHN0ZDo6b3B0aW9u
YWwgeyBXZWJDb3JlOjpjb252ZXJ0VG9CYWNraW5nKCpkZXB0aExvYWRPcCkgfSA6IHN0ZDo6bnVs
bG9wdCwKKyAgICAgICAgICAgIGRlcHRoU3RvcmVPcCA/IHN0ZDo6b3B0aW9uYWwgeyBXZWJDb3Jl
Ojpjb252ZXJ0VG9CYWNraW5nKCpkZXB0aFN0b3JlT3ApIH0gOiBzdGQ6Om51bGxvcHQsCiAgICAg
ICAgICAgICBkZXB0aFJlYWRPbmx5LAotICAgICAgICAgICAgV1RGOjpzd2l0Y2hPbihzdGVuY2ls
TG9hZFZhbHVlLCBbJl0gKEdQVUxvYWRPcCBsb2FkT3ApIC0+IHN0ZDo6dmFyaWFudDxQQUw6Oldl
YkdQVTo6TG9hZE9wLCBQQUw6OldlYkdQVTo6U3RlbmNpbFZhbHVlPiB7Ci0gICAgICAgICAgICAg
ICAgcmV0dXJuIFdlYkNvcmU6OmNvbnZlcnRUb0JhY2tpbmcobG9hZE9wKTsKLSAgICAgICAgICAg
IH0sIFsmXSAoR1BVU3RlbmNpbFZhbHVlIHN0ZW5jaWxWYWx1ZSkgLT4gc3RkOjp2YXJpYW50PFBB
TDo6V2ViR1BVOjpMb2FkT3AsIFBBTDo6V2ViR1BVOjpTdGVuY2lsVmFsdWU+IHsKLSAgICAgICAg
ICAgICAgICByZXR1cm4gc3RlbmNpbFZhbHVlOwotICAgICAgICAgICAgfSksCi0gICAgICAgICAg
ICBXZWJDb3JlOjpjb252ZXJ0VG9CYWNraW5nKHN0ZW5jaWxTdG9yZU9wKSwKKyAgICAgICAgICAg
IHN0ZW5jaWxDbGVhclZhbHVlLAorICAgICAgICAgICAgc3RlbmNpbExvYWRPcCA/IHN0ZDo6b3B0
aW9uYWwgeyBXZWJDb3JlOjpjb252ZXJ0VG9CYWNraW5nKCpzdGVuY2lsTG9hZE9wKSB9IDogc3Rk
OjpudWxsb3B0LAorICAgICAgICAgICAgc3RlbmNpbFN0b3JlT3AgPyBzdGQ6Om9wdGlvbmFsIHsg
V2ViQ29yZTo6Y29udmVydFRvQmFja2luZygqc3RlbmNpbFN0b3JlT3ApIH0gOiBzdGQ6Om51bGxv
cHQsCiAgICAgICAgICAgICBzdGVuY2lsUmVhZE9ubHksCiAgICAgICAgIH07CiAgICAgfQogCiAg
ICAgR1BVVGV4dHVyZVZpZXcqIHZpZXcgeyBudWxscHRyIH07CiAKLSAgICBzdGQ6OnZhcmlhbnQ8
R1BVTG9hZE9wLCBmbG9hdD4gZGVwdGhMb2FkVmFsdWU7Ci0gICAgR1BVU3RvcmVPcCBkZXB0aFN0
b3JlT3AgeyBHUFVTdG9yZU9wOjpTdG9yZSB9OworICAgIGZsb2F0IGRlcHRoQ2xlYXJWYWx1ZSB7
IDAgfTsKKyAgICBzdGQ6Om9wdGlvbmFsPEdQVUxvYWRPcD4gZGVwdGhMb2FkT3A7CisgICAgc3Rk
OjpvcHRpb25hbDxHUFVTdG9yZU9wPiBkZXB0aFN0b3JlT3A7CiAgICAgYm9vbCBkZXB0aFJlYWRP
bmx5IHsgZmFsc2UgfTsKIAotICAgIHN0ZDo6dmFyaWFudDxHUFVMb2FkT3AsIEdQVVN0ZW5jaWxW
YWx1ZT4gc3RlbmNpbExvYWRWYWx1ZTsKLSAgICBHUFVTdG9yZU9wIHN0ZW5jaWxTdG9yZU9wIHsg
R1BVU3RvcmVPcDo6U3RvcmUgfTsKKyAgICBHUFVTdGVuY2lsVmFsdWUgc3RlbmNpbENsZWFyVmFs
dWUgeyAwIH07CisgICAgc3RkOjpvcHRpb25hbDxHUFVMb2FkT3A+IHN0ZW5jaWxMb2FkT3A7Cisg
ICAgc3RkOjpvcHRpb25hbDxHUFVTdG9yZU9wPiBzdGVuY2lsU3RvcmVPcDsKICAgICBib29sIHN0
ZW5jaWxSZWFkT25seSB7IGZhbHNlIH07CiB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL1dlYkdQVS9HUFVSZW5kZXJQYXNzRGVwdGhTdGVuY2lsQXR0YWNobWVudC5pZGwg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL1dlYkdQVS9HUFVSZW5kZXJQYXNzRGVwdGhTdGVuY2ls
QXR0YWNobWVudC5pZGwKaW5kZXggMzc1MDIxOWEyODViNzIxY2M4NTY1N2M5NWRmYTlkY2M0YTVk
MDExOC4uN2U2OTU3YjRmNTdiOGYxZDUyYWRkMDgwNDA5MWZmZmI4ODFmOWJiNyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9XZWJHUFUvR1BVUmVuZGVyUGFzc0RlcHRoU3RlbmNp
bEF0dGFjaG1lbnQuaWRsCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvV2ViR1BVL0dQVVJl
bmRlclBhc3NEZXB0aFN0ZW5jaWxBdHRhY2htZW50LmlkbApAQCAtMzQsMTEgKzM0LDEzIEBAIHR5
cGVkZWYgW0VuZm9yY2VSYW5nZV0gdW5zaWduZWQgbG9uZyBHUFVTdGVuY2lsVmFsdWU7CiBkaWN0
aW9uYXJ5IEdQVVJlbmRlclBhc3NEZXB0aFN0ZW5jaWxBdHRhY2htZW50IHsKICAgICByZXF1aXJl
ZCBHUFVUZXh0dXJlVmlldyB2aWV3OwogCi0gICAgcmVxdWlyZWQgKEdQVUxvYWRPcCBvciBmbG9h
dCkgZGVwdGhMb2FkVmFsdWU7Ci0gICAgcmVxdWlyZWQgR1BVU3RvcmVPcCBkZXB0aFN0b3JlT3A7
CisgICAgZmxvYXQgZGVwdGhDbGVhclZhbHVlID0gMDsKKyAgICBHUFVMb2FkT3AgZGVwdGhMb2Fk
T3A7CisgICAgR1BVU3RvcmVPcCBkZXB0aFN0b3JlT3A7CiAgICAgYm9vbGVhbiBkZXB0aFJlYWRP
bmx5ID0gZmFsc2U7CiAKLSAgICByZXF1aXJlZCAoR1BVTG9hZE9wIG9yIEdQVVN0ZW5jaWxWYWx1
ZSkgc3RlbmNpbExvYWRWYWx1ZTsKLSAgICByZXF1aXJlZCBHUFVTdG9yZU9wIHN0ZW5jaWxTdG9y
ZU9wOworICAgIEdQVVN0ZW5jaWxWYWx1ZSBzdGVuY2lsQ2xlYXJWYWx1ZSA9IDA7CisgICAgR1BV
TG9hZE9wIHN0ZW5jaWxMb2FkT3A7CisgICAgR1BVU3RvcmVPcCBzdGVuY2lsU3RvcmVPcDsKICAg
ICBib29sZWFuIHN0ZW5jaWxSZWFkT25seSA9IGZhbHNlOwogfTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvV2ViR1BVL0dQVVJlbmRlclBhc3NEZXNjcmlwdG9yLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL1dlYkdQVS9HUFVSZW5kZXJQYXNzRGVzY3JpcHRvci5oCmluZGV4
IDU4MmFmZTFlOTczODBmMjhhZTE1MTFmYWZjMWI1MzcxYTI4ZmU0NzEuLmZiNzhmNTJmODI3MzAz
YzBhMzAxNmY3NjI3Y2JlMDFlZmZmNTgyOGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvV2ViR1BVL0dQVVJlbmRlclBhc3NEZXNjcmlwdG9yLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9XZWJHUFUvR1BVUmVuZGVyUGFzc0Rlc2NyaXB0b3IuaApAQCAtNDIsOCArNDIs
MTAgQEAgc3RydWN0IEdQVVJlbmRlclBhc3NEZXNjcmlwdG9yIDogcHVibGljIEdQVU9iamVjdERl
c2NyaXB0b3JCYXNlIHsKICAgICB7CiAgICAgICAgIHJldHVybiB7CiAgICAgICAgICAgICB7IGxh
YmVsIH0sCi0gICAgICAgICAgICBjb2xvckF0dGFjaG1lbnRzLm1hcChbXSAoYXV0byYgY29sb3JB
dHRhY2htZW50KSB7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIGNvbG9yQXR0YWNobWVudC5jb252
ZXJ0VG9CYWNraW5nKCk7CisgICAgICAgICAgICBjb2xvckF0dGFjaG1lbnRzLm1hcChbXSAoYXV0
byYgY29sb3JBdHRhY2htZW50KSAtPiBzdGQ6Om9wdGlvbmFsPFBBTDo6V2ViR1BVOjpSZW5kZXJQ
YXNzQ29sb3JBdHRhY2htZW50PiB7CisgICAgICAgICAgICAgICAgaWYgKGNvbG9yQXR0YWNobWVu
dCkKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGNvbG9yQXR0YWNobWVudC0+Y29udmVydFRv
QmFja2luZygpOworICAgICAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgICAg
ICAgICB9KSwKICAgICAgICAgICAgIGRlcHRoU3RlbmNpbEF0dGFjaG1lbnQgPyBzdGQ6Om9wdGlv
bmFsIHsgZGVwdGhTdGVuY2lsQXR0YWNobWVudC0+Y29udmVydFRvQmFja2luZygpIH0gOiBzdGQ6
Om51bGxvcHQsCiAgICAgICAgICAgICBvY2NsdXNpb25RdWVyeVNldCA/ICZvY2NsdXNpb25RdWVy
eVNldC0+YmFja2luZygpIDogbnVsbHB0ciwKQEAgLTUxLDcgKzUzLDcgQEAgc3RydWN0IEdQVVJl
bmRlclBhc3NEZXNjcmlwdG9yIDogcHVibGljIEdQVU9iamVjdERlc2NyaXB0b3JCYXNlIHsKICAg
ICAgICAgfTsKICAgICB9CiAKLSAgICBWZWN0b3I8R1BVUmVuZGVyUGFzc0NvbG9yQXR0YWNobWVu
dD4gY29sb3JBdHRhY2htZW50czsKKyAgICBWZWN0b3I8c3RkOjpvcHRpb25hbDxHUFVSZW5kZXJQ
YXNzQ29sb3JBdHRhY2htZW50Pj4gY29sb3JBdHRhY2htZW50czsKICAgICBzdGQ6Om9wdGlvbmFs
PEdQVVJlbmRlclBhc3NEZXB0aFN0ZW5jaWxBdHRhY2htZW50PiBkZXB0aFN0ZW5jaWxBdHRhY2ht
ZW50OwogICAgIEdQVVF1ZXJ5U2V0KiBvY2NsdXNpb25RdWVyeVNldCB7IG51bGxwdHIgfTsKICAg
ICBHUFVSZW5kZXJQYXNzVGltZXN0YW1wV3JpdGVzIHRpbWVzdGFtcFdyaXRlczsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvV2ViR1BVL0dQVVJlbmRlclBhc3NEZXNjcmlwdG9y
LmlkbCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvV2ViR1BVL0dQVVJlbmRlclBhc3NEZXNjcmlw
dG9yLmlkbAppbmRleCAwYzFjZGUzODhmMmYwYzZhZTQzYTZjYjUwMzA2YWY1OTM4Yzc0MmM2Li4x
NjllMTVjYmJlNjVlYTVjZDQwODQyMTgxNzI0N2YxYWJmODdjMDdiIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL1dlYkdQVS9HUFVSZW5kZXJQYXNzRGVzY3JpcHRvci5pZGwKKysr
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9XZWJHUFUvR1BVUmVuZGVyUGFzc0Rlc2NyaXB0b3Iu
aWRsCkBAIC0zMiw3ICszMiw3IEBAIHR5cGVkZWYgc2VxdWVuY2U8R1BVUmVuZGVyUGFzc1RpbWVz
dGFtcFdyaXRlPiBHUFVSZW5kZXJQYXNzVGltZXN0YW1wV3JpdGVzOwogICAgIEVuYWJsZWRCeVNl
dHRpbmc9V2ViR1BVCiBdCiBkaWN0aW9uYXJ5IEdQVVJlbmRlclBhc3NEZXNjcmlwdG9yIDogR1BV
T2JqZWN0RGVzY3JpcHRvckJhc2UgewotICAgIHJlcXVpcmVkIHNlcXVlbmNlPEdQVVJlbmRlclBh
c3NDb2xvckF0dGFjaG1lbnQ+IGNvbG9yQXR0YWNobWVudHM7CisgICAgcmVxdWlyZWQgc2VxdWVu
Y2U8R1BVUmVuZGVyUGFzc0NvbG9yQXR0YWNobWVudD8+IGNvbG9yQXR0YWNobWVudHM7CiAgICAg
R1BVUmVuZGVyUGFzc0RlcHRoU3RlbmNpbEF0dGFjaG1lbnQgZGVwdGhTdGVuY2lsQXR0YWNobWVu
dDsKICAgICBHUFVRdWVyeVNldCBvY2NsdXNpb25RdWVyeVNldDsKICAgICBHUFVSZW5kZXJQYXNz
VGltZXN0YW1wV3JpdGVzIHRpbWVzdGFtcFdyaXRlcyA9IFtdOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9XZWJHUFUvR1BVUmVuZGVyUGFzc0VuY29kZXIuY3BwIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9XZWJHUFUvR1BVUmVuZGVyUGFzc0VuY29kZXIuY3BwCmluZGV4IGE5
NTEwMTY2ZjhiZTgyMTJlNzZjYWZlNGE3ZTJhNDYyOTVmMmJiODEuLmQ2NDQzNTI5Y2NiOWI1Y2E4
ZGMxZDRlNmNkZDA4ZjRjNDNiOWY2NjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvV2ViR1BVL0dQVVJlbmRlclBhc3NFbmNvZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL1dlYkdQVS9HUFVSZW5kZXJQYXNzRW5jb2Rlci5jcHAKQEAgLTE0NSwxNiArMTQ1LDYg
QEAgdm9pZCBHUFVSZW5kZXJQYXNzRW5jb2Rlcjo6ZW5kT2NjbHVzaW9uUXVlcnkoKQogICAgIG1f
YmFja2luZy0+ZW5kT2NjbHVzaW9uUXVlcnkoKTsKIH0KIAotdm9pZCBHUFVSZW5kZXJQYXNzRW5j
b2Rlcjo6YmVnaW5QaXBlbGluZVN0YXRpc3RpY3NRdWVyeShjb25zdCBHUFVRdWVyeVNldCYgcXVl
cnlTZXQsIEdQVVNpemUzMiBxdWVyeUluZGV4KQotewotICAgIG1fYmFja2luZy0+YmVnaW5QaXBl
bGluZVN0YXRpc3RpY3NRdWVyeShxdWVyeVNldC5iYWNraW5nKCksIHF1ZXJ5SW5kZXgpOwotfQot
Ci12b2lkIEdQVVJlbmRlclBhc3NFbmNvZGVyOjplbmRQaXBlbGluZVN0YXRpc3RpY3NRdWVyeSgp
Ci17Ci0gICAgbV9iYWNraW5nLT5lbmRQaXBlbGluZVN0YXRpc3RpY3NRdWVyeSgpOwotfQotCiB2
b2lkIEdQVVJlbmRlclBhc3NFbmNvZGVyOjpleGVjdXRlQnVuZGxlcyhWZWN0b3I8UmVmUHRyPEdQ
VVJlbmRlckJ1bmRsZT4+JiYgYnVuZGxlcykKIHsKICAgICBWZWN0b3I8c3RkOjpyZWZlcmVuY2Vf
d3JhcHBlcjxQQUw6OldlYkdQVTo6UmVuZGVyQnVuZGxlPj4gcmVzdWx0OwpAQCAtMTY3LDkgKzE1
Nyw5IEBAIHZvaWQgR1BVUmVuZGVyUGFzc0VuY29kZXI6OmV4ZWN1dGVCdW5kbGVzKFZlY3RvcjxS
ZWZQdHI8R1BVUmVuZGVyQnVuZGxlPj4mJiBidW5kCiAgICAgbV9iYWNraW5nLT5leGVjdXRlQnVu
ZGxlcyhXVEZNb3ZlKHJlc3VsdCkpOwogfQogCi12b2lkIEdQVVJlbmRlclBhc3NFbmNvZGVyOjpl
bmRQYXNzKCkKK3ZvaWQgR1BVUmVuZGVyUGFzc0VuY29kZXI6OmVuZCgpCiB7Ci0gICAgbV9iYWNr
aW5nLT5lbmRQYXNzKCk7CisgICAgbV9iYWNraW5nLT5lbmQoKTsKIH0KIAogfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9XZWJHUFUvR1BVUmVuZGVyUGFzc0VuY29kZXIuaCBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvV2ViR1BVL0dQVVJlbmRlclBhc3NFbmNvZGVyLmgKaW5k
ZXggZmM4MTcxYzRhZWE0ZWVlMzZkOGMyNzA3Nzg2NmU3NjBkYjZlZGRlNy4uYTVmMGE5NmFkZjkz
NmNlOTQxNDU4ZGJkMTdhYjg2NmUzMTQ2YjNjYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9XZWJHUFUvR1BVUmVuZGVyUGFzc0VuY29kZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL1dlYkdQVS9HUFVSZW5kZXJQYXNzRW5jb2Rlci5oCkBAIC05NSwxMSArOTUsOCBA
QCBwdWJsaWM6CiAgICAgdm9pZCBiZWdpbk9jY2x1c2lvblF1ZXJ5KEdQVVNpemUzMiBxdWVyeUlu
ZGV4KTsKICAgICB2b2lkIGVuZE9jY2x1c2lvblF1ZXJ5KCk7CiAKLSAgICB2b2lkIGJlZ2luUGlw
ZWxpbmVTdGF0aXN0aWNzUXVlcnkoY29uc3QgR1BVUXVlcnlTZXQmLCBHUFVTaXplMzIgcXVlcnlJ
bmRleCk7Ci0gICAgdm9pZCBlbmRQaXBlbGluZVN0YXRpc3RpY3NRdWVyeSgpOwotCiAgICAgdm9p
ZCBleGVjdXRlQnVuZGxlcyhWZWN0b3I8UmVmUHRyPEdQVVJlbmRlckJ1bmRsZT4+JiYpOwotICAg
IHZvaWQgZW5kUGFzcygpOworICAgIHZvaWQgZW5kKCk7CiAKICAgICBQQUw6OldlYkdQVTo6UmVu
ZGVyUGFzc0VuY29kZXImIGJhY2tpbmcoKSB7IHJldHVybiBtX2JhY2tpbmc7IH0KICAgICBjb25z
dCBQQUw6OldlYkdQVTo6UmVuZGVyUGFzc0VuY29kZXImIGJhY2tpbmcoKSBjb25zdCB7IHJldHVy
biBtX2JhY2tpbmc7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvV2ViR1BV
L0dQVVJlbmRlclBhc3NFbmNvZGVyLmlkbCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvV2ViR1BV
L0dQVVJlbmRlclBhc3NFbmNvZGVyLmlkbAppbmRleCA0ODg1ZWEzNjhjNDAzZjBhYTg1MWMwNjhm
YmNjMDcyZDAyNzFhNjlkLi40NzZlY2E1YzcwZjc2ZjA3MzBhMzJlYzY4NzY1NTNmMzkwNzg4ZDk5
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL1dlYkdQVS9HUFVSZW5kZXJQYXNz
RW5jb2Rlci5pZGwKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9XZWJHUFUvR1BVUmVuZGVy
UGFzc0VuY29kZXIuaWRsCkBAIC01MCwxMiArNTAsMTEgQEAgaW50ZXJmYWNlIEdQVVJlbmRlclBh
c3NFbmNvZGVyIHsKICAgICB1bmRlZmluZWQgYmVnaW5PY2NsdXNpb25RdWVyeShHUFVTaXplMzIg
cXVlcnlJbmRleCk7CiAgICAgdW5kZWZpbmVkIGVuZE9jY2x1c2lvblF1ZXJ5KCk7CiAKLSAgICB1
bmRlZmluZWQgYmVnaW5QaXBlbGluZVN0YXRpc3RpY3NRdWVyeShHUFVRdWVyeVNldCBxdWVyeVNl
dCwgR1BVU2l6ZTMyIHF1ZXJ5SW5kZXgpOwotICAgIHVuZGVmaW5lZCBlbmRQaXBlbGluZVN0YXRp
c3RpY3NRdWVyeSgpOwotCiAgICAgdW5kZWZpbmVkIGV4ZWN1dGVCdW5kbGVzKHNlcXVlbmNlPEdQ
VVJlbmRlckJ1bmRsZT4gYnVuZGxlcyk7Ci0gICAgdW5kZWZpbmVkIGVuZFBhc3MoKTsKKyAgICB1
bmRlZmluZWQgZW5kKCk7CiB9OwogR1BVUmVuZGVyUGFzc0VuY29kZXIgaW5jbHVkZXMgR1BVT2Jq
ZWN0QmFzZTsKK0dQVVJlbmRlclBhc3NFbmNvZGVyIGluY2x1ZGVzIEdQVUNvbW1hbmRzTWl4aW47
CitHUFVSZW5kZXJQYXNzRW5jb2RlciBpbmNsdWRlcyBHUFVEZWJ1Z0NvbW1hbmRzTWl4aW47CiBH
UFVSZW5kZXJQYXNzRW5jb2RlciBpbmNsdWRlcyBHUFVQcm9ncmFtbWFibGVQYXNzRW5jb2RlcjsK
IEdQVVJlbmRlclBhc3NFbmNvZGVyIGluY2x1ZGVzIEdQVVJlbmRlckVuY29kZXJCYXNlOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9XZWJHUFUvR1BVUmVuZGVyUGFzc0xheW91
dC5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9XZWJHUFUvR1BVUmVuZGVyUGFzc0xheW91dC5o
CmluZGV4IGI1YTU0MGFhYWFjNzhkODkwMmNiOTI3YjYyMWMxZWI4MTA0YjM5NTQuLmE0M2Q0MTkx
YTNlYTJiOTc2ZDkxNTZlNDFhN2NiMTA1OTY3YjU0MTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvV2ViR1BVL0dQVVJlbmRlclBhc3NMYXlvdXQuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL1dlYkdQVS9HUFVSZW5kZXJQYXNzTGF5b3V0LmgKQEAgLTM5LDE1ICszOSwx
NyBAQCBzdHJ1Y3QgR1BVUmVuZGVyUGFzc0xheW91dCA6IHB1YmxpYyBHUFVPYmplY3REZXNjcmlw
dG9yQmFzZSB7CiAgICAgewogICAgICAgICByZXR1cm4gewogICAgICAgICAgICAgeyBsYWJlbCB9
LAotICAgICAgICAgICAgY29sb3JGb3JtYXRzLm1hcChbXSAoY29uc3QgYXV0byYgY29sb3JGb3Jt
YXQpIHsKLSAgICAgICAgICAgICAgICByZXR1cm4gV2ViQ29yZTo6Y29udmVydFRvQmFja2luZyhj
b2xvckZvcm1hdCk7CisgICAgICAgICAgICBjb2xvckZvcm1hdHMubWFwKFtdIChhdXRvJiBjb2xv
ckZvcm1hdCkgLT4gc3RkOjpvcHRpb25hbDxQQUw6OldlYkdQVTo6VGV4dHVyZUZvcm1hdD4gewor
ICAgICAgICAgICAgICAgIGlmIChjb2xvckZvcm1hdCkKKyAgICAgICAgICAgICAgICAgICAgcmV0
dXJuIFdlYkNvcmU6OmNvbnZlcnRUb0JhY2tpbmcoKmNvbG9yRm9ybWF0KTsKKyAgICAgICAgICAg
ICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgICAgICAgICAgfSksCiAgICAgICAgICAgICBk
ZXB0aFN0ZW5jaWxGb3JtYXQgPyBzdGQ6Om9wdGlvbmFsIHsgV2ViQ29yZTo6Y29udmVydFRvQmFj
a2luZygqZGVwdGhTdGVuY2lsRm9ybWF0KSB9IDogc3RkOjpudWxsb3B0LAogICAgICAgICAgICAg
c2FtcGxlQ291bnQsCiAgICAgICAgIH07CiAgICAgfQogCi0gICAgVmVjdG9yPEdQVVRleHR1cmVG
b3JtYXQ+IGNvbG9yRm9ybWF0czsKKyAgICBWZWN0b3I8c3RkOjpvcHRpb25hbDxHUFVUZXh0dXJl
Rm9ybWF0Pj4gY29sb3JGb3JtYXRzOwogICAgIHN0ZDo6b3B0aW9uYWw8R1BVVGV4dHVyZUZvcm1h
dD4gZGVwdGhTdGVuY2lsRm9ybWF0OwogICAgIEdQVVNpemUzMiBzYW1wbGVDb3VudCB7IDEgfTsK
IH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL1dlYkdQVS9HUFVSZW5kZXJQ
YXNzTGF5b3V0LmlkbCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvV2ViR1BVL0dQVVJlbmRlclBh
c3NMYXlvdXQuaWRsCmluZGV4IDRhNzY5NjkyZTI2MDJiMDc1ZTAxM2E5MDBkY2NlOTIxOWYzODZi
NTIuLjZiY2JkYjEzMDY3NjM5MTg3YmJhOTIzYmRiZGU0NjIyNDk3NTlmY2EgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvV2ViR1BVL0dQVVJlbmRlclBhc3NMYXlvdXQuaWRsCisr
KyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvV2ViR1BVL0dQVVJlbmRlclBhc3NMYXlvdXQuaWRs
CkBAIC0zMiw3ICszMiw3IEBAIHR5cGVkZWYgW0VuZm9yY2VSYW5nZV0gdW5zaWduZWQgbG9uZyBH
UFVTaXplMzI7CiAgICAgRW5hYmxlZEJ5U2V0dGluZz1XZWJHUFUKIF0KIGRpY3Rpb25hcnkgR1BV
UmVuZGVyUGFzc0xheW91dCA6IEdQVU9iamVjdERlc2NyaXB0b3JCYXNlIHsKLSAgICByZXF1aXJl
ZCBzZXF1ZW5jZTxHUFVUZXh0dXJlRm9ybWF0PiBjb2xvckZvcm1hdHM7CisgICAgcmVxdWlyZWQg
c2VxdWVuY2U8R1BVVGV4dHVyZUZvcm1hdD8+IGNvbG9yRm9ybWF0czsKICAgICBHUFVUZXh0dXJl
Rm9ybWF0IGRlcHRoU3RlbmNpbEZvcm1hdDsKICAgICBHUFVTaXplMzIgc2FtcGxlQ291bnQgPSAx
OwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvV2ViR1BVL0dQVVNoYWRl
ck1vZHVsZUNvbXBpbGF0aW9uSGludC5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9XZWJHUFUv
R1BVU2hhZGVyTW9kdWxlQ29tcGlsYXRpb25IaW50LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMmM5NWQ0MDA0NmM3
ODhlYjRjNzEwYWQwOTdkZWYzOTBjYTE3ZDY2ZgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvV2ViR1BVL0dQVVNoYWRlck1vZHVsZUNvbXBpbGF0aW9uSGludC5oCkBA
IC0wLDAgKzEsNDUgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjEgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUg
bWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBB
TlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4g
Tk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExB
UlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgIkdQ
VVBpcGVsaW5lTGF5b3V0LmgiCisjaW5jbHVkZSA8cGFsL2dyYXBoaWNzL1dlYkdQVS9XZWJHUFVT
aGFkZXJNb2R1bGVDb21waWxhdGlvbkhpbnQuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitz
dHJ1Y3QgR1BVU2hhZGVyTW9kdWxlQ29tcGlsYXRpb25IaW50IHsKKyAgICBQQUw6OldlYkdQVTo6
U2hhZGVyTW9kdWxlQ29tcGlsYXRpb25IaW50IGNvbnZlcnRUb0JhY2tpbmcoKSBjb25zdAorICAg
IHsKKyAgICAgICAgQVNTRVJUKGxheW91dCk7CisgICAgICAgIHJldHVybiB7CisgICAgICAgICAg
ICBsYXlvdXQtPmJhY2tpbmcoKSwKKyAgICAgICAgfTsKKyAgICB9CisKKyAgICBHUFVQaXBlbGlu
ZUxheW91dCogbGF5b3V0IHsgbnVsbHB0ciB9OworfTsKKworfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9XZWJHUFUvR1BVU2hhZGVyTW9kdWxlQ29tcGlsYXRpb25IaW50Lmlk
bCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvV2ViR1BVL0dQVVNoYWRlck1vZHVsZUNvbXBpbGF0
aW9uSGludC5pZGwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZjg4NTZlODlmYmQyMGY4Y2MzYTc1OWE5MTcyZDVjY2M2
NTNjMDA2MwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvV2ViR1BV
L0dQVVNoYWRlck1vZHVsZUNvbXBpbGF0aW9uSGludC5pZGwKQEAgLTAsMCArMSwzMyBAQAorLyoK
KyAqIENvcHlyaWdodCAoQykgMjAyMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli
dXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFO
RCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBM
RSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5U
IE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwg
T1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgorICovCisKKy8vIGh0dHBzOi8vZ3B1d2ViLmdpdGh1Yi5pby9ncHV3ZWIvI2RpY3RkZWYtZ3B1
c2hhZGVybW9kdWxlY29tcGlsYXRpb25oaW50CisKK1sKKyAgICBFbmFibGVkQnlTZXR0aW5nPVdl
YkdQVQorXQorZGljdGlvbmFyeSBHUFVTaGFkZXJNb2R1bGVDb21waWxhdGlvbkhpbnQgeworICAg
IHJlcXVpcmVkIEdQVVBpcGVsaW5lTGF5b3V0IGxheW91dDsKK307CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL1dlYkdQVS9HUFVTaGFkZXJNb2R1bGVEZXNjcmlwdG9yLmggYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL1dlYkdQVS9HUFVTaGFkZXJNb2R1bGVEZXNjcmlwdG9yLmgK
aW5kZXggMTYxNzMyNWFmM2FjNzM0NGQyOTc1MWU1NjBlNGY5M2JmNDI1OTEyMi4uOGNkY2JiOTU5
NmQ4OTNmODdlMmFmOGFhZjU3Y2RjN2I2YTMzMTA0MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9XZWJHUFUvR1BVU2hhZGVyTW9kdWxlRGVzY3JpcHRvci5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvV2ViR1BVL0dQVVNoYWRlck1vZHVsZURlc2NyaXB0b3IuaApAQCAt
MjUsNyArMjUsNyBAQAogCiAjcHJhZ21hIG9uY2UKIAotI2luY2x1ZGUgIkdQVU9iamVjdERlc2Ny
aXB0b3JCYXNlLmgiCisjaW5jbHVkZSAiR1BVU2hhZGVyTW9kdWxlQ29tcGlsYXRpb25IaW50Lmgi
CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSlNPYmplY3QuaD4KICNpbmNsdWRlIDxKYXZhU2Ny
aXB0Q29yZS9TdHJvbmcuaD4KICNpbmNsdWRlIDxwYWwvZ3JhcGhpY3MvV2ViR1BVL1dlYkdQVVNo
YWRlck1vZHVsZURlc2NyaXB0b3IuaD4KQEAgLTQwLDExICs0MCwxNSBAQCBzdHJ1Y3QgR1BVU2hh
ZGVyTW9kdWxlRGVzY3JpcHRvciA6IHB1YmxpYyBHUFVPYmplY3REZXNjcmlwdG9yQmFzZSB7CiAg
ICAgICAgICAgICB7IGxhYmVsIH0sCiAgICAgICAgICAgICBjb2RlLAogICAgICAgICAgICAgLy8g
RklYTUU6IEhhbmRsZSB0aGUgc291cmNlTWFwLgorICAgICAgICAgICAgaGludHMubWFwKFtdIChh
dXRvJiBoaW50KSB7CisgICAgICAgICAgICAgICAgcmV0dXJuIEtleVZhbHVlUGFpcjxTdHJpbmcs
IFBBTDo6V2ViR1BVOjpTaGFkZXJNb2R1bGVDb21waWxhdGlvbkhpbnQ+KGhpbnQua2V5LCBoaW50
LnZhbHVlLmNvbnZlcnRUb0JhY2tpbmcoKSk7CisgICAgICAgICAgICB9KSwKICAgICAgICAgfTsK
ICAgICB9CiAKICAgICBTdHJpbmcgY29kZTsKICAgICBKU0M6OlN0cm9uZzxKU0M6OkpTT2JqZWN0
PiBzb3VyY2VNYXA7CisgICAgVmVjdG9yPEtleVZhbHVlUGFpcjxTdHJpbmcsIEdQVVNoYWRlck1v
ZHVsZUNvbXBpbGF0aW9uSGludD4+IGhpbnRzOwogfTsKIAogfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9XZWJHUFUvR1BVU2hhZGVyTW9kdWxlRGVzY3JpcHRvci5pZGwgYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL1dlYkdQVS9HUFVTaGFkZXJNb2R1bGVEZXNjcmlwdG9yLmlk
bAppbmRleCBiOGE3OTU5Y2ViM2MzNzYzZjk2YTZiNjFmM2Y0NWFjMDg2NjcxOGI0Li40MmUwNDRk
N2Q0ZDQxNDVlNTU3MDk4NzA1NjZlNzA5MDBlYWZjMDYwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL1dlYkdQVS9HUFVTaGFkZXJNb2R1bGVEZXNjcmlwdG9yLmlkbAorKysgYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL1dlYkdQVS9HUFVTaGFkZXJNb2R1bGVEZXNjcmlwdG9yLmlk
bApAQCAtMzEsNCArMzEsNSBAQAogZGljdGlvbmFyeSBHUFVTaGFkZXJNb2R1bGVEZXNjcmlwdG9y
IDogR1BVT2JqZWN0RGVzY3JpcHRvckJhc2UgewogICAgIHJlcXVpcmVkIFVTVlN0cmluZyBjb2Rl
OwogICAgIG9iamVjdCBzb3VyY2VNYXA7CisgICAgcmVjb3JkPFVTVlN0cmluZywgR1BVU2hhZGVy
TW9kdWxlQ29tcGlsYXRpb25IaW50PiBoaW50czsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL1dlYkdQVS9HUFVUZXh0dXJlRGVzY3JpcHRvci5oIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9XZWJHUFUvR1BVVGV4dHVyZURlc2NyaXB0b3IuaAppbmRleCBjN2Q4YjI3YWMx
M2U4YmVkZjk0Y2VmNjc2YzI4Yjg1NDE1NjVhM2Q4Li40ZDJmYTQ3MjdlNDkwM2Y1ZjBmODkxZDA4
Y2VlMjRiOTdlOGVkNzcyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL1dlYkdQ
VS9HUFVUZXh0dXJlRGVzY3JpcHRvci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvV2Vi
R1BVL0dQVVRleHR1cmVEZXNjcmlwdG9yLmgKQEAgLTQ2LDYgKzQ2LDkgQEAgc3RydWN0IEdQVVRl
eHR1cmVEZXNjcmlwdG9yIDogcHVibGljIEdQVU9iamVjdERlc2NyaXB0b3JCYXNlIHsKICAgICAg
ICAgICAgIFdlYkNvcmU6OmNvbnZlcnRUb0JhY2tpbmcoZGltZW5zaW9uKSwKICAgICAgICAgICAg
IFdlYkNvcmU6OmNvbnZlcnRUb0JhY2tpbmcoZm9ybWF0KSwKICAgICAgICAgICAgIGNvbnZlcnRU
ZXh0dXJlVXNhZ2VGbGFnc1RvQmFja2luZyh1c2FnZSksCisgICAgICAgICAgICB2aWV3Rm9ybWF0
cy5tYXAoW10gKGF1dG8gdmlld0Zvcm1hdCkgeworICAgICAgICAgICAgICAgIHJldHVybiBXZWJD
b3JlOjpjb252ZXJ0VG9CYWNraW5nKHZpZXdGb3JtYXQpOworICAgICAgICAgICAgfSksCiAgICAg
ICAgIH07CiAgICAgfQogCkBAIC01NSw2ICs1OCw3IEBAIHN0cnVjdCBHUFVUZXh0dXJlRGVzY3Jp
cHRvciA6IHB1YmxpYyBHUFVPYmplY3REZXNjcmlwdG9yQmFzZSB7CiAgICAgR1BVVGV4dHVyZURp
bWVuc2lvbiBkaW1lbnNpb24geyBHUFVUZXh0dXJlRGltZW5zaW9uOjpfMmQgfTsKICAgICBHUFVU
ZXh0dXJlRm9ybWF0IGZvcm1hdCB7IEdQVVRleHR1cmVGb3JtYXQ6OlI4dW5vcm0gfTsKICAgICBH
UFVUZXh0dXJlVXNhZ2VGbGFncyB1c2FnZSB7IDAgfTsKKyAgICBWZWN0b3I8R1BVVGV4dHVyZUZv
cm1hdD4gdmlld0Zvcm1hdHM7CiB9OwogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL1dlYkdQVS9HUFVUZXh0dXJlRGVzY3JpcHRvci5pZGwgYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL1dlYkdQVS9HUFVUZXh0dXJlRGVzY3JpcHRvci5pZGwKaW5kZXggYjI0ZmQzMmY2Nzc4
N2VhNzY5YTIwNzg5ZjVlNDgzMmZjYjQyYzVkNS4uNWRmNjc3NDlkM2U2NmFmYTAzMzNkODg1OTdi
YWJmZDc0NmZiZjM1MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9XZWJHUFUv
R1BVVGV4dHVyZURlc2NyaXB0b3IuaWRsCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvV2Vi
R1BVL0dQVVRleHR1cmVEZXNjcmlwdG9yLmlkbApAQCAtNDEsNCArNDEsNSBAQCBkaWN0aW9uYXJ5
IEdQVVRleHR1cmVEZXNjcmlwdG9yIDogR1BVT2JqZWN0RGVzY3JpcHRvckJhc2UgewogICAgIEdQ
VVRleHR1cmVEaW1lbnNpb24gZGltZW5zaW9uID0gIjJkIjsKICAgICByZXF1aXJlZCBHUFVUZXh0
dXJlRm9ybWF0IGZvcm1hdDsKICAgICByZXF1aXJlZCBHUFVUZXh0dXJlVXNhZ2VGbGFncyB1c2Fn
ZTsKKyAgICBzZXF1ZW5jZTxHUFVUZXh0dXJlRm9ybWF0PiB2aWV3Rm9ybWF0cyA9IFtdOwogfTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvV2ViR1BVL0dQVVRleHR1cmVGb3Jt
YXQuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvV2ViR1BVL0dQVVRleHR1cmVGb3JtYXQuaApp
bmRleCBjOWQ4NzIxMDE4OWUyZWQxY2M0ZTgzYWQ5ZWFhZGU5NDg4YWIyMTAwLi5kYTEzZDEzNjEx
ZTdmZjlkYmE1ODM5N2NiYTEzODY3OTdmYmZmMTYyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL1dlYkdQVS9HUFVUZXh0dXJlRm9ybWF0LmgKKysrIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9XZWJHUFUvR1BVVGV4dHVyZUZvcm1hdC5oCkBAIC03OCwxMyArNzgsMTkgQEAgZW51
bSBjbGFzcyBHUFVUZXh0dXJlRm9ybWF0IDogdWludDhfdCB7CiAgICAgUmdiYTMyc2ludCwKICAg
ICBSZ2JhMzJmbG9hdCwKIAotICAgIC8vIERlcHRoIGFuZCBzdGVuY2lsIGZvcm1hdHMKKyAgICAv
LyBEZXB0aC9zdGVuY2lsIGZvcm1hdHMKICAgICBTdGVuY2lsOCwKICAgICBEZXB0aDE2dW5vcm0s
CiAgICAgRGVwdGgyNHBsdXMsCiAgICAgRGVwdGgyNHBsdXNTdGVuY2lsOCwKICAgICBEZXB0aDMy
ZmxvYXQsCiAKKyAgICAvLyBkZXB0aDI0dW5vcm0tc3RlbmNpbDggZmVhdHVyZQorICAgIERlcHRo
MjR1bm9ybVN0ZW5jaWw4LAorCisgICAgLy8gZGVwdGgzMmZsb2F0LXN0ZW5jaWw4IGZlYXR1cmUK
KyAgICBEZXB0aDMyZmxvYXRTdGVuY2lsOCwKKwogICAgIC8vIEJDIGNvbXByZXNzZWQgZm9ybWF0
cyB1c2FibGUgaWYgdGV4dHVyZS1jb21wcmVzc2lvbi1iYyBpcyBib3RoCiAgICAgLy8gc3VwcG9y
dGVkIGJ5IHRoZSBkZXZpY2UvdXNlciBhZ2VudCBhbmQgZW5hYmxlZCBpbiByZXF1ZXN0RGV2aWNl
LgogICAgIEJjMVJnYmFVbm9ybSwKQEAgLTE0NSwxMiArMTUxLDYgQEAgZW51bSBjbGFzcyBHUFVU
ZXh0dXJlRm9ybWF0IDogdWludDhfdCB7CiAgICAgQXN0YzEyeDEwVW5vcm1TUkdCLAogICAgIEFz
dGMxMngxMlVub3JtLAogICAgIEFzdGMxMngxMlVub3JtU1JHQiwKLQotICAgIC8vIGRlcHRoMjR1
bm9ybS1zdGVuY2lsOCBmZWF0dXJlCi0gICAgRGVwdGgyNHVub3JtU3RlbmNpbDgsCi0KLSAgICAv
LyBkZXB0aDMyZmxvYXQtc3RlbmNpbDggZmVhdHVyZQotICAgIERlcHRoMzJmbG9hdFN0ZW5jaWw4
LAogfTsKIAogaW5saW5lIFBBTDo6V2ViR1BVOjpUZXh0dXJlRm9ybWF0IGNvbnZlcnRUb0JhY2tp
bmcoR1BVVGV4dHVyZUZvcm1hdCB0ZXh0dXJlRm9ybWF0KQpAQCAtMjM4LDYgKzIzOCwxMCBAQCBp
bmxpbmUgUEFMOjpXZWJHUFU6OlRleHR1cmVGb3JtYXQgY29udmVydFRvQmFja2luZyhHUFVUZXh0
dXJlRm9ybWF0IHRleHR1cmVGb3JtYQogICAgICAgICByZXR1cm4gUEFMOjpXZWJHUFU6OlRleHR1
cmVGb3JtYXQ6OkRlcHRoMjRwbHVzU3RlbmNpbDg7CiAgICAgY2FzZSBHUFVUZXh0dXJlRm9ybWF0
OjpEZXB0aDMyZmxvYXQ6CiAgICAgICAgIHJldHVybiBQQUw6OldlYkdQVTo6VGV4dHVyZUZvcm1h
dDo6RGVwdGgzMmZsb2F0OworICAgIGNhc2UgR1BVVGV4dHVyZUZvcm1hdDo6RGVwdGgyNHVub3Jt
U3RlbmNpbDg6CisgICAgICAgIHJldHVybiBQQUw6OldlYkdQVTo6VGV4dHVyZUZvcm1hdDo6RGVw
dGgyNHVub3JtU3RlbmNpbDg7CisgICAgY2FzZSBHUFVUZXh0dXJlRm9ybWF0OjpEZXB0aDMyZmxv
YXRTdGVuY2lsODoKKyAgICAgICAgcmV0dXJuIFBBTDo6V2ViR1BVOjpUZXh0dXJlRm9ybWF0OjpE
ZXB0aDMyZmxvYXRTdGVuY2lsODsKICAgICBjYXNlIEdQVVRleHR1cmVGb3JtYXQ6OkJjMVJnYmFV
bm9ybToKICAgICAgICAgcmV0dXJuIFBBTDo6V2ViR1BVOjpUZXh0dXJlRm9ybWF0OjpCYzFSZ2Jh
VW5vcm07CiAgICAgY2FzZSBHUFVUZXh0dXJlRm9ybWF0OjpCYzFSZ2JhVW5vcm1TUkdCOgpAQCAt
MzQyLDEwICszNDYsNiBAQCBpbmxpbmUgUEFMOjpXZWJHUFU6OlRleHR1cmVGb3JtYXQgY29udmVy
dFRvQmFja2luZyhHUFVUZXh0dXJlRm9ybWF0IHRleHR1cmVGb3JtYQogICAgICAgICByZXR1cm4g
UEFMOjpXZWJHUFU6OlRleHR1cmVGb3JtYXQ6OkFzdGMxMngxMlVub3JtOwogICAgIGNhc2UgR1BV
VGV4dHVyZUZvcm1hdDo6QXN0YzEyeDEyVW5vcm1TUkdCOgogICAgICAgICByZXR1cm4gUEFMOjpX
ZWJHUFU6OlRleHR1cmVGb3JtYXQ6OkFzdGMxMngxMlVub3JtU1JHQjsKLSAgICBjYXNlIEdQVVRl
eHR1cmVGb3JtYXQ6OkRlcHRoMjR1bm9ybVN0ZW5jaWw4OgotICAgICAgICByZXR1cm4gUEFMOjpX
ZWJHUFU6OlRleHR1cmVGb3JtYXQ6OkRlcHRoMjR1bm9ybVN0ZW5jaWw4OwotICAgIGNhc2UgR1BV
VGV4dHVyZUZvcm1hdDo6RGVwdGgzMmZsb2F0U3RlbmNpbDg6Ci0gICAgICAgIHJldHVybiBQQUw6
OldlYkdQVTo6VGV4dHVyZUZvcm1hdDo6RGVwdGgzMmZsb2F0U3RlbmNpbDg7CiAgICAgfQogICAg
IFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL1dlYkdQVS9HUFVUZXh0dXJlRm9ybWF0LmlkbCBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvV2ViR1BVL0dQVVRleHR1cmVGb3JtYXQuaWRsCmluZGV4IDI1MWNkZGJlMDA0M2Vj
OWQxN2I4NDIyYTczYWM5NDQ1YmU3M2M0ZTcuLjMwMzYxODhjNTIxMDg4Y2JjYTFmMmY0YzY5NTU3
OTdhN2UyN2VhOTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvV2ViR1BVL0dQ
VVRleHR1cmVGb3JtYXQuaWRsCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvV2ViR1BVL0dQ
VVRleHR1cmVGb3JtYXQuaWRsCkBAIC03NiwxMyArNzYsMTkgQEAgZW51bSBHUFVUZXh0dXJlRm9y
bWF0IHsKICAgICAicmdiYTMyc2ludCIsCiAgICAgInJnYmEzMmZsb2F0IiwKIAotICAgIC8vIERl
cHRoIGFuZCBzdGVuY2lsIGZvcm1hdHMKKyAgICAvLyBEZXB0aC9zdGVuY2lsIGZvcm1hdHMKICAg
ICAic3RlbmNpbDgiLAogICAgICJkZXB0aDE2dW5vcm0iLAogICAgICJkZXB0aDI0cGx1cyIsCiAg
ICAgImRlcHRoMjRwbHVzLXN0ZW5jaWw4IiwKICAgICAiZGVwdGgzMmZsb2F0IiwKIAorICAgIC8v
ICJkZXB0aDI0dW5vcm0tc3RlbmNpbDgiIGZlYXR1cmUKKyAgICAiZGVwdGgyNHVub3JtLXN0ZW5j
aWw4IiwKKworICAgIC8vICJkZXB0aDMyZmxvYXQtc3RlbmNpbDgiIGZlYXR1cmUKKyAgICAiZGVw
dGgzMmZsb2F0LXN0ZW5jaWw4IiwKKwogICAgIC8vIEJDIGNvbXByZXNzZWQgZm9ybWF0cyB1c2Fi
bGUgaWYgInRleHR1cmUtY29tcHJlc3Npb24tYmMiIGlzIGJvdGgKICAgICAvLyBzdXBwb3J0ZWQg
YnkgdGhlIGRldmljZS91c2VyIGFnZW50IGFuZCBlbmFibGVkIGluIHJlcXVlc3REZXZpY2UuCiAg
ICAgImJjMS1yZ2JhLXVub3JtIiwKQEAgLTE0MiwxMSArMTQ4LDUgQEAgZW51bSBHUFVUZXh0dXJl
Rm9ybWF0IHsKICAgICAiYXN0Yy0xMngxMC11bm9ybSIsCiAgICAgImFzdGMtMTJ4MTAtdW5vcm0t
c3JnYiIsCiAgICAgImFzdGMtMTJ4MTItdW5vcm0iLAotICAgICJhc3RjLTEyeDEyLXVub3JtLXNy
Z2IiLAotCi0gICAgLy8gImRlcHRoMjR1bm9ybS1zdGVuY2lsOCIgZmVhdHVyZQotICAgICJkZXB0
aDI0dW5vcm0tc3RlbmNpbDgiLAotCi0gICAgLy8gImRlcHRoMzJmbG9hdC1zdGVuY2lsOCIgZmVh
dHVyZQotICAgICJkZXB0aDMyZmxvYXQtc3RlbmNpbDgiCisgICAgImFzdGMtMTJ4MTItdW5vcm0t
c3JnYiIKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL1dlYkdQVS9HUFVV
bmNhcHR1cmVkRXJyb3JFdmVudC5pZGwgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL1dlYkdQVS9H
UFVVbmNhcHR1cmVkRXJyb3JFdmVudC5pZGwKaW5kZXggMzMyZWJlYWRiZGE5ODcyMDYwNmQ4ODU0
YzUxNjRjMWFkNDY5YjU3ZC4uMWI5MjdkNDJhZWM1ZGM4ZGVkMGFiMGIzYTM5MGU1MDRiZjc0OWMw
MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9XZWJHUFUvR1BVVW5jYXB0dXJl
ZEVycm9yRXZlbnQuaWRsCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvV2ViR1BVL0dQVVVu
Y2FwdHVyZWRFcnJvckV2ZW50LmlkbApAQCAtMzgsNSArMzgsNSBAQCBpbnRlcmZhY2UgR1BVVW5j
YXB0dXJlZEVycm9yRXZlbnQgOiBFdmVudCB7CiAgICAgICAgIERPTVN0cmluZyB0eXBlLAogICAg
ICAgICBHUFVVbmNhcHR1cmVkRXJyb3JFdmVudEluaXQgZ3B1VW5jYXB0dXJlZEVycm9yRXZlbnRJ
bml0RGljdAogICAgICk7Ci0gICAgW1NhbWVPYmplY3RdIHJlYWRvbmx5IGF0dHJpYnV0ZSBHUFVF
cnJvciBlcnJvcjsKKyAgICByZWFkb25seSBhdHRyaWJ1dGUgR1BVRXJyb3IgZXJyb3I7CiB9Owpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvUEFML1BBTC54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qIGIvU291cmNlL1dlYkNvcmUvUEFML1BBTC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmlu
ZGV4IGM1YTkxOGY3ZDQwZDA0MWEyOTMzOTQ2ZTcyMDZjNzFjNzUzZjVkMDQuLjJhNzNjOGU3MTVi
ODI0NDAxOTE4MzRlMGMzNmQ1ZTBkNWI1ZmVhMjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L1BBTC9QQUwueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViQ29yZS9Q
QUwvUEFMLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTI0Nyw3ICsyNDcsNiBAQAogCQkx
Q0VGQTIxNzI3MzdBNEM4MDBGMERBOTUgLyogV2ViR1BVQmluZEdyb3VwRW50cnkuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDFDQzVFNDY5MjczNzQ5NDgw
MDZGNkZGNCAvKiBXZWJHUFVCaW5kR3JvdXBFbnRyeS5oICovOyB9OwogCQkxQ0VGQTIxODI3MzdB
NEM4MDBGMERBOTUgLyogV2ViR1BVUHJpbWl0aXZlVG9wb2xvZ3kuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDFDQzVFNDUzMjczNzQ5NDcwMDZGNkZGNCAv
KiBXZWJHUFVQcmltaXRpdmVUb3BvbG9neS5oICovOyB9OwogCQkxQ0VGQTIxOTI3MzdBNEM4MDBG
MERBOTUgLyogV2ViR1BVVGV4dHVyZUJpbmRpbmdMYXlvdXQuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDFDQzVFNDE5MjczNzQ5MkMwMDZGNkZGNCAvKiBX
ZWJHUFVUZXh0dXJlQmluZGluZ0xheW91dC5oICovOyB9OwotCQkxQ0VGQTIxQTI3MzdBNEM4MDBG
MERBOTUgLyogV2ViR1BVUGlwZWxpbmVTdGF0aXN0aWNOYW1lLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxQ0M1RTQzOTI3Mzc0OTQ2MDA2RjZGRjQgLyog
V2ViR1BVUGlwZWxpbmVTdGF0aXN0aWNOYW1lLmggKi87IH07CiAJCTFDRUZBMjFCMjczN0E0Qzgw
MEYwREE5NSAvKiBXZWJHUFVCbGVuZENvbXBvbmVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMUNDNUU0NzgyNzM3NDk0OTAwNkY2RkY0IC8qIFdlYkdQ
VUJsZW5kQ29tcG9uZW50LmggKi87IH07CiAJCTFDRUZBMjFDMjczN0E0QzgwMEYwREE5NSAvKiBX
ZWJHUFVUZXh0dXJlVmlld0RpbWVuc2lvbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gMUNDNUU0MzIyNzM3NDkyRDAwNkY2RkY0IC8qIFdlYkdQVVRleHR1
cmVWaWV3RGltZW5zaW9uLmggKi87IH07CiAJCTFDRUZBMjFEMjczN0E0QzgwMEYwREE5NSAvKiBX
ZWJHUFVMb2FkT3AuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDFDQzVFNDUwMjczNzQ5NDcwMDZGNkZGNCAvKiBXZWJHUFVMb2FkT3AuaCAqLzsgfTsKQEAg
LTY1Miw3ICs2NTEsNiBAQAogCQkxQ0M1RTQzNjI3Mzc0OTQ2MDA2RjZGRjQgLyogV2ViR1BVQ29t
cGlsYXRpb25NZXNzYWdlVHlwZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJHUFVDb21waWxhdGlvbk1l
c3NhZ2VUeXBlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTFDQzVFNDM3MjczNzQ5
NDYwMDZGNkZGNCAvKiBXZWJHUFVFeHRlbnQzRC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJHUFVFeHRl
bnQzRC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkxQ0M1RTQzODI3Mzc0OTQ2MDA2
RjZGRjQgLyogV2ViR1BVUHJvZ3JhbW1hYmxlU3RhZ2UuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2ViR1BV
UHJvZ3JhbW1hYmxlU3RhZ2UuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJMUNDNUU0
MzkyNzM3NDk0NjAwNkY2RkY0IC8qIFdlYkdQVVBpcGVsaW5lU3RhdGlzdGljTmFtZS5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBXZWJHUFVQaXBlbGluZVN0YXRpc3RpY05hbWUuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJMUNDNUU0M0EyNzM3NDk0NjAwNkY2RkY0IC8qIFdlYkdQVUV4dGVybmFs
VGV4dHVyZUJpbmRpbmdMYXlvdXQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2ViR1BVRXh0ZXJuYWxUZXh0
dXJlQmluZGluZ0xheW91dC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkxQ0M1RTQz
QjI3Mzc0OTQ2MDA2RjZGRjQgLyogV2ViR1BVUmVuZGVyUGFzc0Rlc2NyaXB0b3IuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gV2ViR1BVUmVuZGVyUGFzc0Rlc2NyaXB0b3IuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJMUNDNUU0M0MyNzM3NDk0NjAwNkY2RkY0IC8qIFdlYkdQVVNhbXBsZXJCaW5k
aW5nVHlwZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJHUFVTYW1wbGVyQmluZGluZ1R5cGUuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTc0NCw2ICs3NDIsNyBAQAogCQkxQ0M1RTQ5MzI3
Mzc0OTRBMDA2RjZGRjQgLyogV2ViR1BVQ2FudmFzQ29tcG9zaXRpbmdBbHBoYU1vZGUuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gV2ViR1BVQ2FudmFzQ29tcG9zaXRpbmdBbHBoYU1vZGUuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMUNDRUU0RjQyMEQ4NzE5MzAwNDdCMDk3IC8qIENvcmVVSVNQ
SS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBDb3JlVUlTUEkuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMUNDRUU0RjYyMEQ4NzQzRjAwNDdCMDk3IC8qIE5TQXBw
ZWFyYW5jZVNQSS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBOU0FwcGVhcmFu
Y2VTUEkuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMUNFRjQ1QUEyN0JCMTAxRjAw
QzNBNkJDIC8qIFdlYkdQVVNoYWRlck1vZHVsZUNvbXBpbGF0aW9uSGludC5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBXZWJHUFVTaGFkZXJNb2R1bGVDb21waWxhdGlvbkhpbnQuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJMUQxMkNDNEEyNDExQkNBRTAwRkRBMEEzIC8qIEZlYXR1cmVGbGFnc1NQ
SS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBGZWF0dXJlRmxhZ3NTUEkuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJMUQyQjQxMzIyNUYwNUUzNDAwQTNGNzBBIC8qIENsb2NrR2VuZXJpYy5jcHAg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBDbG9ja0dlbmVyaWMuY3BwOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkxRDJCNDEzMzI1RjA1RTM1MDBBM0Y3MEEgLyog
Q2xvY2tHZW5lcmljLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IENsb2NrR2Vu
ZXJpYy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMTMzOSw3ICsxMzM4LDYgQEAK
IAkJCQkxQ0M1RTQ1RTI3Mzc0OTQ4MDA2RjZGRjQgLyogV2ViR1BVUGlwZWxpbmVEZXNjcmlwdG9y
QmFzZS5oICovLAogCQkJCTFDQzVFNDQ1MjczNzQ5NDcwMDZGNkZGNCAvKiBXZWJHUFVQaXBlbGlu
ZUxheW91dC5oICovLAogCQkJCTFDQzVFNDREMjczNzQ5NDcwMDZGNkZGNCAvKiBXZWJHUFVQaXBl
bGluZUxheW91dERlc2NyaXB0b3IuaCAqLywKLQkJCQkxQ0M1RTQzOTI3Mzc0OTQ2MDA2RjZGRjQg
LyogV2ViR1BVUGlwZWxpbmVTdGF0aXN0aWNOYW1lLmggKi8sCiAJCQkJMUNDNUU0N0EyNzM3NDk0
OTAwNkY2RkY0IC8qIFdlYkdQVVBvd2VyUHJlZmVyZW5jZS5oICovLAogCQkJCTFDQzVFNDdEMjcz
NzQ5NDkwMDZGNkZGNCAvKiBXZWJHUFVQcmVkZWZpbmVkQ29sb3JTcGFjZS5oICovLAogCQkJCTFD
QzVFNDZEMjczNzQ5NDgwMDZGNkZGNCAvKiBXZWJHUFVQcmltaXRpdmVTdGF0ZS5oICovLApAQCAt
MTM2OCw2ICsxMzY2LDcgQEAKIAkJCQkxQ0M1RTQzQzI3Mzc0OTQ2MDA2RjZGRjQgLyogV2ViR1BV
U2FtcGxlckJpbmRpbmdUeXBlLmggKi8sCiAJCQkJMUNDNUU0MjMyNzM3NDkyQzAwNkY2RkY0IC8q
IFdlYkdQVVNhbXBsZXJEZXNjcmlwdG9yLmggKi8sCiAJCQkJMUNDNUU0MUQyNzM3NDkyQzAwNkY2
RkY0IC8qIFdlYkdQVVNoYWRlck1vZHVsZS5oICovLAorCQkJCTFDRUY0NUFBMjdCQjEwMUYwMEMz
QTZCQyAvKiBXZWJHUFVTaGFkZXJNb2R1bGVDb21waWxhdGlvbkhpbnQuaCAqLywKIAkJCQkxQ0M1
RTQxQjI3Mzc0OTJDMDA2RjZGRjQgLyogV2ViR1BVU2hhZGVyTW9kdWxlRGVzY3JpcHRvci5oICov
LAogCQkJCTFDQzVFNDI2MjczNzQ5MkQwMDZGNkZGNCAvKiBXZWJHUFVTaGFkZXJTdGFnZS5oICov
LAogCQkJCTFDQzVFNDFDMjczNzQ5MkMwMDZGNkZGNCAvKiBXZWJHUFVTdGVuY2lsRmFjZVN0YXRl
LmggKi8sCkBAIC0xNzc0LDcgKzE3NzMsNiBAQAogCQkJCTFDRUZBMjI1MjczN0E0QzgwMEYwREE5
NSAvKiBXZWJHUFVQaXBlbGluZURlc2NyaXB0b3JCYXNlLmggaW4gSGVhZGVycyAqLywKIAkJCQkx
Q0VGQTFGRDI3MzdBNEM4MDBGMERBOTUgLyogV2ViR1BVUGlwZWxpbmVMYXlvdXQuaCBpbiBIZWFk
ZXJzICovLAogCQkJCTFDRUZBMUY0MjczN0E0QzgwMEYwREE5NSAvKiBXZWJHUFVQaXBlbGluZUxh
eW91dERlc2NyaXB0b3IuaCBpbiBIZWFkZXJzICovLAotCQkJCTFDRUZBMjFBMjczN0E0QzgwMEYw
REE5NSAvKiBXZWJHUFVQaXBlbGluZVN0YXRpc3RpY05hbWUuaCBpbiBIZWFkZXJzICovLAogCQkJ
CTFDRUZBMURFMjczN0E0QzgwMEYwREE5NSAvKiBXZWJHUFVQb3dlclByZWZlcmVuY2UuaCBpbiBI
ZWFkZXJzICovLAogCQkJCTFDRUZBMjE2MjczN0E0QzgwMEYwREE5NSAvKiBXZWJHUFVQcmVkZWZp
bmVkQ29sb3JTcGFjZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMUNFRkExRTUyNzM3QTRDODAwRjBE
QTk1IC8qIFdlYkdQVVByaW1pdGl2ZVN0YXRlLmggaW4gSGVhZGVycyAqLywKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvZ3JhcGhpY3MvV2ViR1BVL0ltcGwvV2ViR1BVQWRhcHRl
ckltcGwuY3BwIGIvU291cmNlL1dlYkNvcmUvUEFML3BhbC9ncmFwaGljcy9XZWJHUFUvSW1wbC9X
ZWJHUFVBZGFwdGVySW1wbC5jcHAKaW5kZXggN2Q1YjE2NTRlZWQwNzZjMTc2MDI2OGRmMDAyNmRi
NzIyMDY1N2I4Yy4uNTYxMzlhZjRhOTA3ODJmOGRkYWNiMzIyNWZiYTNkNzA4YjQwOTFmZSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvUEFML3BhbC9ncmFwaGljcy9XZWJHUFUvSW1wbC9XZWJH
UFVBZGFwdGVySW1wbC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvUEFML3BhbC9ncmFwaGljcy9X
ZWJHUFUvSW1wbC9XZWJHUFVBZGFwdGVySW1wbC5jcHAKQEAgLTQzLDEzICs0MywxNyBAQCBzdGF0
aWMgU3RyaW5nIGFkYXB0ZXJOYW1lKFdHUFVBZGFwdGVyIGFkYXB0ZXIpCiAKIHN0YXRpYyBSZWY8
U3VwcG9ydGVkRmVhdHVyZXM+IHN1cHBvcnRlZEZlYXR1cmVzKFdHUFVBZGFwdGVyIGFkYXB0ZXIp
CiB7CisgICAgYXV0byBmZWF0dXJlQ291bnQgPSB3Z3B1QWRhcHRlckVudW1lcmF0ZUZlYXR1cmVz
KGFkYXB0ZXIsIG51bGxwdHIpOworICAgIFZlY3RvcjxXR1BVRmVhdHVyZU5hbWU+IGZlYXR1cmVz
KGZlYXR1cmVDb3VudCk7CisgICAgd2dwdUFkYXB0ZXJFbnVtZXJhdGVGZWF0dXJlcyhhZGFwdGVy
LCBmZWF0dXJlcy5kYXRhKCkpOworCiAgICAgVmVjdG9yPFN0cmluZz4gcmVzdWx0OwotICAgIGZv
ciAoc2l6ZV90IGkgPSAwOyA7ICsraSkgewotICAgICAgICBhdXRvIGZlYXR1cmUgPSB3Z3B1QWRh
cHRlckdldEZlYXR1cmVBdEluZGV4KGFkYXB0ZXIsIGkpOwotICAgICAgICBpZiAoZmVhdHVyZSA9
PSBXR1BVRmVhdHVyZU5hbWVfVW5kZWZpbmVkKQotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAg
IHN3aXRjaCAoc3RhdGljX2Nhc3Q8dWludD4oZmVhdHVyZSkpIHsKLSAgICAgICAgY2FzZSBXR1BV
RmVhdHVyZU5hbWVfRGVwdGhDbGFtcGluZzoKKyAgICBmb3IgKGF1dG8gZmVhdHVyZSA6IGZlYXR1
cmVzKSB7CisgICAgICAgIHN3aXRjaCAoZmVhdHVyZSkgeworICAgICAgICBjYXNlIFdHUFVGZWF0
dXJlTmFtZV9VbmRlZmluZWQ6CisgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgY2FzZSBX
R1BVRmVhdHVyZU5hbWVfRGVwdGhDbGlwQ29udHJvbDoKKyAgICAgICAgICAgIHJlc3VsdC5hcHBl
bmQoImRlcHRoLWNsaXAtY29udHJvbCJfcyk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAg
Y2FzZSBXR1BVRmVhdHVyZU5hbWVfRGVwdGgyNFVub3JtU3RlbmNpbDg6CiAgICAgICAgICAgICBy
ZXN1bHQuYXBwZW5kKCJkZXB0aDI0dW5vcm0tc3RlbmNpbDgiX3MpOwpAQCAtNjYsMjAgKzcwLDE3
IEBAIHN0YXRpYyBSZWY8U3VwcG9ydGVkRmVhdHVyZXM+IHN1cHBvcnRlZEZlYXR1cmVzKFdHUFVB
ZGFwdGVyIGFkYXB0ZXIpCiAgICAgICAgIGNhc2UgV0dQVUZlYXR1cmVOYW1lX1RleHR1cmVDb21w
cmVzc2lvbkJDOgogICAgICAgICAgICAgcmVzdWx0LmFwcGVuZCgidGV4dHVyZS1jb21wcmVzc2lv
bi1iYyJfcyk7CiAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgY2FzZSBXR1BVRmVhdHVyZU5h
bWVfRGVwdGhDbGlwQ29udHJvbDoKLSAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQoImRlcHRoLWNs
aXAtY29udHJvbCJfcyk7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgY2FzZSBXR1BVRmVh
dHVyZU5hbWVfSW5kaXJlY3RGaXJzdEluc3RhbmNlOgotICAgICAgICAgICAgcmVzdWx0LmFwcGVu
ZCgiaW5kaXJlY3QtZmlyc3QtaW5zdGFuY2UiX3MpOwotICAgICAgICAgICAgYnJlYWs7CiAgICAg
ICAgIGNhc2UgV0dQVUZlYXR1cmVOYW1lX1RleHR1cmVDb21wcmVzc2lvbkVUQzI6CiAgICAgICAg
ICAgICByZXN1bHQuYXBwZW5kKCJ0ZXh0dXJlLWNvbXByZXNzaW9uLWV0YzIiX3MpOwogICAgICAg
ICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgV0dQVUZlYXR1cmVOYW1lX1RleHR1cmVDb21wcmVz
c2lvbkFTVEM6CiAgICAgICAgICAgICByZXN1bHQuYXBwZW5kKCJ0ZXh0dXJlLWNvbXByZXNzaW9u
LWFzdGMiX3MpOwogICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGRlZmF1bHQ6CisgICAgICAg
IGNhc2UgV0dQVUZlYXR1cmVOYW1lX0luZGlyZWN0Rmlyc3RJbnN0YW5jZToKKyAgICAgICAgICAg
IHJlc3VsdC5hcHBlbmQoImluZGlyZWN0LWZpcnN0LWluc3RhbmNlIl9zKTsKICAgICAgICAgICAg
IGJyZWFrOworICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgY29udGludWU7CiAgICAgICAg
IH0KICAgICB9CiAgICAgcmV0dXJuIFN1cHBvcnRlZEZlYXR1cmVzOjpjcmVhdGUoV1RGTW92ZShy
ZXN1bHQpKTsKQEAgLTE1MSwxNSArMTUyLDYgQEAgdm9pZCBBZGFwdGVySW1wbDo6cmVxdWVzdERl
dmljZShjb25zdCBEZXZpY2VEZXNjcmlwdG9yJiBkZXNjcmlwdG9yLCBXVEY6OkZ1bmN0aW8KIAog
ICAgIGF1dG8gbGFiZWwgPSBkZXNjcmlwdG9yLmxhYmVsLnV0ZjgoKTsKIAotICAgIFdHUFVEZXZp
Y2VEZXNjcmlwdG9yTGFiZWwgYmFja2luZ0Rlc2NyaXB0b3JMYWJlbCB7Ci0gICAgICAgIHsKLSAg
ICAgICAgICAgIG51bGxwdHIsCi0gICAgICAgICAgICBzdGF0aWNfY2FzdDxXR1BVU1R5cGU+KFdH
UFVTVHlwZV9EZXZpY2VEZXNjcmlwdG9yTGFiZWwpLAotICAgICAgICB9LAotICAgICAgICBudWxs
cHRyLAotICAgICAgICBsYWJlbC5kYXRhKCkKLSAgICB9OwotCiAgICAgYXV0byBmZWF0dXJlcyA9
IGRlc2NyaXB0b3IucmVxdWlyZWRGZWF0dXJlcy5tYXAoW3RoaXNdIChhdXRvIGZlYXR1cmVOYW1l
KSB7CiAgICAgICAgIHJldHVybiBtX2NvbnZlcnRUb0JhY2tpbmdDb250ZXh0LT5jb252ZXJ0VG9C
YWNraW5nKGZlYXR1cmVOYW1lKTsKICAgICB9KTsKQEAgLTE5Niw3ICsxODgsOCBAQCB2b2lkIEFk
YXB0ZXJJbXBsOjpyZXF1ZXN0RGV2aWNlKGNvbnN0IERldmljZURlc2NyaXB0b3ImIGRlc2NyaXB0
b3IsIFdURjo6RnVuY3RpbwogICAgIH07CiAKICAgICBXR1BVRGV2aWNlRGVzY3JpcHRvciBiYWNr
aW5nRGVzY3JpcHRvciB7Ci0gICAgICAgICZiYWNraW5nRGVzY3JpcHRvckxhYmVsLmhlYWRlciwK
KyAgICAgICAgbnVsbHB0ciwKKyAgICAgICAgbGFiZWwuZGF0YSgpLAogICAgICAgICBzdGF0aWNf
Y2FzdDx1aW50MzJfdD4oZmVhdHVyZXMuc2l6ZSgpKSwKICAgICAgICAgZmVhdHVyZXMuZGF0YSgp
LAogICAgICAgICAmbGltaXRzLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvUEFML3BhbC9n
cmFwaGljcy9XZWJHUFUvSW1wbC9XZWJHUFVCdWZmZXJJbXBsLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L1BBTC9wYWwvZ3JhcGhpY3MvV2ViR1BVL0ltcGwvV2ViR1BVQnVmZmVySW1wbC5jcHAKaW5kZXgg
ZDlhOWNlNWNhZDhkOWE1ZjkxNmZiNjBlY2U5MmMxMjdmM2JmODVkZS4uOGEwZWNjNThjZDZjZWMx
YzZlNWZiMzc0ZDRjYTg1NzI2M2EwNWFlZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvUEFM
L3BhbC9ncmFwaGljcy9XZWJHUFUvSW1wbC9XZWJHUFVCdWZmZXJJbXBsLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9QQUwvcGFsL2dyYXBoaWNzL1dlYkdQVS9JbXBsL1dlYkdQVUJ1ZmZlckltcGwu
Y3BwCkBAIC01MCwxOSArNTAsMTggQEAgdm9pZCBtYXBDYWxsYmFjayhXR1BVQnVmZmVyTWFwQXN5
bmNTdGF0dXMgc3RhdHVzLCB2b2lkKiB1c2VyZGF0YSkKICAgICBidWZmZXItPm1hcENhbGxiYWNr
KHN0YXR1cyk7CiB9CiAKLXZvaWQgQnVmZmVySW1wbDo6bWFwQXN5bmMoTWFwTW9kZUZsYWdzIG1h
cE1vZGVGbGFncywgc3RkOjpvcHRpb25hbDxTaXplNjQ+IG9mZnNldCwgc3RkOjpvcHRpb25hbDxT
aXplNjQ+IHNpemUsIFdURjo6RnVuY3Rpb248dm9pZCgpPiYmIGNhbGxiYWNrKQordm9pZCBCdWZm
ZXJJbXBsOjptYXBBc3luYyhNYXBNb2RlRmxhZ3MgbWFwTW9kZUZsYWdzLCBTaXplNjQgb2Zmc2V0
LCBzdGQ6Om9wdGlvbmFsPFNpemU2ND4gc2l6ZSwgV1RGOjpGdW5jdGlvbjx2b2lkKCk+JiYgY2Fs
bGJhY2spCiB7CiAgICAgUmVmIHByb3RlY3RlZFRoaXMoKnRoaXMpOwogCiAgICAgYXV0byBiYWNr
aW5nTWFwTW9kZUZsYWdzID0gbV9jb252ZXJ0VG9CYWNraW5nQ29udGV4dC0+Y29udmVydE1hcE1v
ZGVGbGFnc1RvQmFja2luZyhtYXBNb2RlRmxhZ3MpOwogCi0gICAgYXV0byB1c2VkT2Zmc2V0ID0g
b2Zmc2V0LnZhbHVlX29yKDApOwotICAgIGF1dG8gdXNlZFNpemUgPSBzaXplLnZhbHVlX29yKFdH
UFVfV0hPTEVfU0laRSk7CisgICAgYXV0byB1c2VkU2l6ZSA9IHNpemUudmFsdWVfb3IoV0dQVV9X
SE9MRV9NQVBfU0laRSk7CiAKICAgICBtX2NhbGxiYWNrcy5hcHBlbmQoV1RGTW92ZShjYWxsYmFj
aykpOwogCiAgICAgLy8gRklYTUU6IENoZWNrIHRoZSBjYXN0cy4KLSAgICB3Z3B1QnVmZmVyTWFw
QXN5bmMobV9iYWNraW5nLCBiYWNraW5nTWFwTW9kZUZsYWdzLCBzdGF0aWNfY2FzdDxzaXplX3Q+
KHVzZWRPZmZzZXQpLCBzdGF0aWNfY2FzdDxzaXplX3Q+KHVzZWRTaXplKSwgJldlYkdQVTo6bWFw
Q2FsbGJhY2ssICZwcm90ZWN0ZWRUaGlzLmxlYWtSZWYoKSk7IC8vIGxlYWtSZWYgaXMgYmFsYW5j
ZWQgYnkgYWRvcHRSZWYgaW4gbWFwQ2FsbGJhY2soKSBhYm92ZS4gV2UgaGF2ZSB0byBkbyB0aGlz
IGJlY2F1c2Ugd2UncmUgdXNpbmcgYSBDIEFQSSB3aXRoIG5vIGNvbmNlcHQgb2YgcmVmZXJlbmNl
IGNvdW50aW5nIG9yIGJsb2Nrcy4KKyAgICB3Z3B1QnVmZmVyTWFwQXN5bmMobV9iYWNraW5nLCBi
YWNraW5nTWFwTW9kZUZsYWdzLCBzdGF0aWNfY2FzdDxzaXplX3Q+KG9mZnNldCksIHN0YXRpY19j
YXN0PHNpemVfdD4odXNlZFNpemUpLCAmV2ViR1BVOjptYXBDYWxsYmFjaywgJnByb3RlY3RlZFRo
aXMubGVha1JlZigpKTsgLy8gbGVha1JlZiBpcyBiYWxhbmNlZCBieSBhZG9wdFJlZiBpbiBtYXBD
YWxsYmFjaygpIGFib3ZlLiBXZSBoYXZlIHRvIGRvIHRoaXMgYmVjYXVzZSB3ZSdyZSB1c2luZyBh
IEMgQVBJIHdpdGggbm8gY29uY2VwdCBvZiByZWZlcmVuY2UgY291bnRpbmcgb3IgYmxvY2tzLgog
fQogCiB2b2lkIEJ1ZmZlckltcGw6Om1hcENhbGxiYWNrKFdHUFVCdWZmZXJNYXBBc3luY1N0YXR1
cyBzdGF0dXMpCkBAIC03MiwxMiArNzEsMTEgQEAgdm9pZCBCdWZmZXJJbXBsOjptYXBDYWxsYmFj
ayhXR1BVQnVmZmVyTWFwQXN5bmNTdGF0dXMgc3RhdHVzKQogICAgIGNhbGxiYWNrKCk7CiB9CiAK
LWF1dG8gQnVmZmVySW1wbDo6Z2V0TWFwcGVkUmFuZ2Uoc3RkOjpvcHRpb25hbDxTaXplNjQ+IG9m
ZnNldCwgc3RkOjpvcHRpb25hbDxTaXplNjQ+IHNpemUpIC0+IE1hcHBlZFJhbmdlCithdXRvIEJ1
ZmZlckltcGw6OmdldE1hcHBlZFJhbmdlKFNpemU2NCBvZmZzZXQsIHN0ZDo6b3B0aW9uYWw8U2l6
ZTY0PiBzaXplKSAtPiBNYXBwZWRSYW5nZQogewotICAgIGF1dG8gdXNlZE9mZnNldCA9IG9mZnNl
dC52YWx1ZV9vcigwKTsKLSAgICBhdXRvIHVzZWRTaXplID0gc2l6ZS52YWx1ZV9vcihXR1BVX1dI
T0xFX1NJWkUpOworICAgIGF1dG8gdXNlZFNpemUgPSBzaXplLnZhbHVlX29yKFdHUFVfV0hPTEVf
TUFQX1NJWkUpOwogICAgIC8vIEZJWE1FOiBDaGVjayB0aGUgY2FzdHMuCi0gICAgYXV0byogcG9p
bnRlciA9IHdncHVCdWZmZXJHZXRNYXBwZWRSYW5nZShtX2JhY2tpbmcsIHN0YXRpY19jYXN0PHNp
emVfdD4odXNlZE9mZnNldCksIHN0YXRpY19jYXN0PHNpemVfdD4odXNlZFNpemUpKTsKKyAgICBh
dXRvKiBwb2ludGVyID0gd2dwdUJ1ZmZlckdldE1hcHBlZFJhbmdlKG1fYmFja2luZywgc3RhdGlj
X2Nhc3Q8c2l6ZV90PihvZmZzZXQpLCBzdGF0aWNfY2FzdDxzaXplX3Q+KHVzZWRTaXplKSk7CiAg
ICAgLy8gRklYTUU6IENoZWNrIHRoZSB0eXBlIG5hcnJvd2luZy4KICAgICByZXR1cm4geyBwb2lu
dGVyLCBzdGF0aWNfY2FzdDxzaXplX3Q+KHVzZWRTaXplKSB9OwogfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvUEFML3BhbC9ncmFwaGljcy9XZWJHUFUvSW1wbC9XZWJHUFVCdWZmZXJJbXBs
LmggYi9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL2dyYXBoaWNzL1dlYkdQVS9JbXBsL1dlYkdQVUJ1
ZmZlckltcGwuaAppbmRleCBjMTQ2NWVjNDc3ZGY1NTY1MjVmYTg4YzVhM2EwMTExMGNlOTBmMjg3
Li45MjE4NzIzYjcwNzI1NzljYWU5OWQyMDFmNjIyZTIzY2MyODk2YzAzIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9QQUwvcGFsL2dyYXBoaWNzL1dlYkdQVS9JbXBsL1dlYkdQVUJ1ZmZlcklt
cGwuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL2dyYXBoaWNzL1dlYkdQVS9JbXBsL1dl
YkdQVUJ1ZmZlckltcGwuaApAQCAtNTksOCArNTksOCBAQCBwcml2YXRlOgogICAgIFdHUFVCdWZm
ZXIgYmFja2luZygpIGNvbnN0IHsgcmV0dXJuIG1fYmFja2luZzsgfQogCiAgICAgdm9pZCBtYXBD
YWxsYmFjayhXR1BVQnVmZmVyTWFwQXN5bmNTdGF0dXMpOwotICAgIHZvaWQgbWFwQXN5bmMoTWFw
TW9kZUZsYWdzLCBzdGQ6Om9wdGlvbmFsPFNpemU2ND4gb2Zmc2V0LCBzdGQ6Om9wdGlvbmFsPFNp
emU2ND4gc2l6ZUZvck1hcCwgV1RGOjpGdW5jdGlvbjx2b2lkKCk+JiYpIGZpbmFsOwotICAgIE1h
cHBlZFJhbmdlIGdldE1hcHBlZFJhbmdlKHN0ZDo6b3B0aW9uYWw8U2l6ZTY0PiBvZmZzZXQsIHN0
ZDo6b3B0aW9uYWw8U2l6ZTY0PikgZmluYWw7CisgICAgdm9pZCBtYXBBc3luYyhNYXBNb2RlRmxh
Z3MsIFNpemU2NCBvZmZzZXQsIHN0ZDo6b3B0aW9uYWw8U2l6ZTY0PiBzaXplRm9yTWFwLCBXVEY6
OkZ1bmN0aW9uPHZvaWQoKT4mJikgZmluYWw7CisgICAgTWFwcGVkUmFuZ2UgZ2V0TWFwcGVkUmFu
Z2UoU2l6ZTY0IG9mZnNldCwgc3RkOjpvcHRpb25hbDxTaXplNjQ+KSBmaW5hbDsKICAgICB2b2lk
IHVubWFwKCkgZmluYWw7CiAKICAgICB2b2lkIGRlc3Ryb3koKSBmaW5hbDsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvZ3JhcGhpY3MvV2ViR1BVL0ltcGwvV2ViR1BVQ29tbWFu
ZEVuY29kZXJJbXBsLmNwcCBiL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvZ3JhcGhpY3MvV2ViR1BV
L0ltcGwvV2ViR1BVQ29tbWFuZEVuY29kZXJJbXBsLmNwcAppbmRleCBhODUzNmJjZWNkMjRkNTcy
MDdkMjE3NDU2MDlmODIwZWE5Y2JkOWI2Li5hMDA2ZGMyMzcwMWU4ODQ5YjFkODBjNWY2MDY3MDIz
NDU3ZDk2NjVmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL2dyYXBoaWNzL1dl
YkdQVS9JbXBsL1dlYkdQVUNvbW1hbmRFbmNvZGVySW1wbC5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvUEFML3BhbC9ncmFwaGljcy9XZWJHUFUvSW1wbC9XZWJHUFVDb21tYW5kRW5jb2RlckltcGwu
Y3BwCkBAIC01Myw1NyArNTMsNTEgQEAgQ29tbWFuZEVuY29kZXJJbXBsOjp+Q29tbWFuZEVuY29k
ZXJJbXBsKCkKIAogUmVmPFJlbmRlclBhc3NFbmNvZGVyPiBDb21tYW5kRW5jb2RlckltcGw6OmJl
Z2luUmVuZGVyUGFzcyhjb25zdCBSZW5kZXJQYXNzRGVzY3JpcHRvciYgZGVzY3JpcHRvcikKIHsK
KyAgICBhdXRvIGxhYmVsID0gZGVzY3JpcHRvci5sYWJlbC51dGY4KCk7CisKICAgICBWZWN0b3I8
V0dQVVJlbmRlclBhc3NDb2xvckF0dGFjaG1lbnQ+IGNvbG9yQXR0YWNobWVudHM7CiAgICAgZm9y
IChjb25zdCBhdXRvJiBjb2xvckF0dGFjaG1lbnQgOiBkZXNjcmlwdG9yLmNvbG9yQXR0YWNobWVu
dHMpIHsKLSAgICAgICAgY29sb3JBdHRhY2htZW50cy5hcHBlbmQoV0dQVVJlbmRlclBhc3NDb2xv
ckF0dGFjaG1lbnQgewotICAgICAgICAgICAgbV9jb252ZXJ0VG9CYWNraW5nQ29udGV4dC0+Y29u
dmVydFRvQmFja2luZyhjb2xvckF0dGFjaG1lbnQudmlldyksCi0gICAgICAgICAgICBjb2xvckF0
dGFjaG1lbnQucmVzb2x2ZVRhcmdldCA/IG1fY29udmVydFRvQmFja2luZ0NvbnRleHQtPmNvbnZl
cnRUb0JhY2tpbmcoKmNvbG9yQXR0YWNobWVudC5yZXNvbHZlVGFyZ2V0KSA6IG51bGxwdHIsCi0g
ICAgICAgICAgICBzdGQ6OmhvbGRzX2FsdGVybmF0aXZlPExvYWRPcD4oY29sb3JBdHRhY2htZW50
LmxvYWRWYWx1ZSkgPyBtX2NvbnZlcnRUb0JhY2tpbmdDb250ZXh0LT5jb252ZXJ0VG9CYWNraW5n
KHN0ZDo6Z2V0PExvYWRPcD4oY29sb3JBdHRhY2htZW50LmxvYWRWYWx1ZSkpIDogV0dQVUxvYWRP
cF9DbGVhciwKLSAgICAgICAgICAgIG1fY29udmVydFRvQmFja2luZ0NvbnRleHQtPmNvbnZlcnRU
b0JhY2tpbmcoY29sb3JBdHRhY2htZW50LnN0b3JlT3ApLAotICAgICAgICAgICAgV1RGOjpzd2l0
Y2hPbihjb2xvckF0dGFjaG1lbnQubG9hZFZhbHVlLCBbXSAoTG9hZE9wKSAtPiBXR1BVQ29sb3Ig
ewotICAgICAgICAgICAgICAgIHJldHVybiB7IDAsIDAsIDAsIDAgfTsKLSAgICAgICAgICAgIH0s
IFtdIChjb25zdCBWZWN0b3I8ZG91YmxlPiYgdmVjdG9yKSAtPiBXR1BVQ29sb3IgewotICAgICAg
ICAgICAgICAgIHJldHVybiBXR1BVQ29sb3IgewotICAgICAgICAgICAgICAgICAgICB2ZWN0b3Iu
c2l6ZSgpID4gMCA/IHZlY3RvclswXSA6IDAsCi0gICAgICAgICAgICAgICAgICAgIHZlY3Rvci5z
aXplKCkgPiAxID8gdmVjdG9yWzFdIDogMCwKLSAgICAgICAgICAgICAgICAgICAgdmVjdG9yLnNp
emUoKSA+IDIgPyB2ZWN0b3JbMl0gOiAwLAotICAgICAgICAgICAgICAgICAgICB2ZWN0b3Iuc2l6
ZSgpID4gMyA/IHZlY3RvclszXSA6IDAsCi0gICAgICAgICAgICAgICAgfTsKLSAgICAgICAgICAg
IH0sIFtdIChjb25zdCBDb2xvckRpY3QmIGNvbG9yKSAtPiBXR1BVQ29sb3IgewotICAgICAgICAg
ICAgICAgIHJldHVybiBXR1BVQ29sb3IgewotICAgICAgICAgICAgICAgICAgICBjb2xvci5yLAot
ICAgICAgICAgICAgICAgICAgICBjb2xvci5nLAotICAgICAgICAgICAgICAgICAgICBjb2xvci5i
LAotICAgICAgICAgICAgICAgICAgICBjb2xvci5hLAotICAgICAgICAgICAgICAgIH07Ci0gICAg
ICAgICAgICB9KSwKLSAgICAgICAgfSk7CisgICAgICAgIGlmIChjb2xvckF0dGFjaG1lbnQpIHsK
KyAgICAgICAgICAgIGNvbG9yQXR0YWNobWVudHMuYXBwZW5kKFdHUFVSZW5kZXJQYXNzQ29sb3JB
dHRhY2htZW50IHsKKyAgICAgICAgICAgICAgICBtX2NvbnZlcnRUb0JhY2tpbmdDb250ZXh0LT5j
b252ZXJ0VG9CYWNraW5nKGNvbG9yQXR0YWNobWVudC0+dmlldyksCisgICAgICAgICAgICAgICAg
Y29sb3JBdHRhY2htZW50LT5yZXNvbHZlVGFyZ2V0ID8gbV9jb252ZXJ0VG9CYWNraW5nQ29udGV4
dC0+Y29udmVydFRvQmFja2luZygqY29sb3JBdHRhY2htZW50LT5yZXNvbHZlVGFyZ2V0KSA6IG51
bGxwdHIsCisgICAgICAgICAgICAgICAgbV9jb252ZXJ0VG9CYWNraW5nQ29udGV4dC0+Y29udmVy
dFRvQmFja2luZyhjb2xvckF0dGFjaG1lbnQtPmxvYWRPcCksCisgICAgICAgICAgICAgICAgbV9j
b252ZXJ0VG9CYWNraW5nQ29udGV4dC0+Y29udmVydFRvQmFja2luZyhjb2xvckF0dGFjaG1lbnQt
PnN0b3JlT3ApLAorICAgICAgICAgICAgICAgIGNvbG9yQXR0YWNobWVudC0+Y2xlYXJWYWx1ZSA/
IG1fY29udmVydFRvQmFja2luZ0NvbnRleHQtPmNvbnZlcnRUb0JhY2tpbmcoKmNvbG9yQXR0YWNo
bWVudC0+Y2xlYXJWYWx1ZSkgOiBXR1BVQ29sb3IgeyAwLCAwLCAwLCAwIH0sCisgICAgICAgICAg
ICB9KTsKKyAgICAgICAgfSBlbHNlCisgICAgICAgICAgICBjb2xvckF0dGFjaG1lbnRzLmFwcGVu
ZCh7CisgICAgICAgICAgICAgICAgbnVsbHB0ciwKKyAgICAgICAgICAgICAgICBudWxscHRyLAor
ICAgICAgICAgICAgICAgIFdHUFVMb2FkT3BfQ2xlYXIsCisgICAgICAgICAgICAgICAgV0dQVVN0
b3JlT3BfRGlzY2FyZCwKKyAgICAgICAgICAgICAgICB7IDAsIDAsIDAsIDAgfSwKKyAgICAgICAg
ICAgIH0pOwogICAgIH0KIAogICAgIHN0ZDo6b3B0aW9uYWw8V0dQVVJlbmRlclBhc3NEZXB0aFN0
ZW5jaWxBdHRhY2htZW50PiBkZXB0aFN0ZW5jaWxBdHRhY2htZW50OwogICAgIGlmIChkZXNjcmlw
dG9yLmRlcHRoU3RlbmNpbEF0dGFjaG1lbnQpIHsKICAgICAgICAgZGVwdGhTdGVuY2lsQXR0YWNo
bWVudCA9IFdHUFVSZW5kZXJQYXNzRGVwdGhTdGVuY2lsQXR0YWNobWVudCB7CiAgICAgICAgICAg
ICBtX2NvbnZlcnRUb0JhY2tpbmdDb250ZXh0LT5jb252ZXJ0VG9CYWNraW5nKGRlc2NyaXB0b3Iu
ZGVwdGhTdGVuY2lsQXR0YWNobWVudC0+dmlldyksCi0gICAgICAgICAgICBzdGQ6OmhvbGRzX2Fs
dGVybmF0aXZlPExvYWRPcD4oZGVzY3JpcHRvci5kZXB0aFN0ZW5jaWxBdHRhY2htZW50LT5kZXB0
aExvYWRWYWx1ZSkgPyBtX2NvbnZlcnRUb0JhY2tpbmdDb250ZXh0LT5jb252ZXJ0VG9CYWNraW5n
KHN0ZDo6Z2V0PExvYWRPcD4oZGVzY3JpcHRvci5kZXB0aFN0ZW5jaWxBdHRhY2htZW50LT5kZXB0
aExvYWRWYWx1ZSkpIDogV0dQVUxvYWRPcF9DbGVhciwKLSAgICAgICAgICAgIG1fY29udmVydFRv
QmFja2luZ0NvbnRleHQtPmNvbnZlcnRUb0JhY2tpbmcoZGVzY3JpcHRvci5kZXB0aFN0ZW5jaWxB
dHRhY2htZW50LT5kZXB0aFN0b3JlT3ApLAotICAgICAgICAgICAgV1RGOjpzd2l0Y2hPbihkZXNj
cmlwdG9yLmRlcHRoU3RlbmNpbEF0dGFjaG1lbnQtPmRlcHRoTG9hZFZhbHVlLCBbXSAoTG9hZE9w
KSAtPiBmbG9hdCB7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIDA7Ci0gICAgICAgICAgICB9LCBb
XSAoZmxvYXQgY2xlYXJEZXB0aCkgLT4gZmxvYXQgewotICAgICAgICAgICAgICAgIHJldHVybiBj
bGVhckRlcHRoOwotICAgICAgICAgICAgfSksCisgICAgICAgICAgICBkZXNjcmlwdG9yLmRlcHRo
U3RlbmNpbEF0dGFjaG1lbnQtPmRlcHRoTG9hZE9wID8gbV9jb252ZXJ0VG9CYWNraW5nQ29udGV4
dC0+Y29udmVydFRvQmFja2luZygqZGVzY3JpcHRvci5kZXB0aFN0ZW5jaWxBdHRhY2htZW50LT5k
ZXB0aExvYWRPcCkgOiBXR1BVTG9hZE9wX0NsZWFyLAorICAgICAgICAgICAgZGVzY3JpcHRvci5k
ZXB0aFN0ZW5jaWxBdHRhY2htZW50LT5kZXB0aFN0b3JlT3AgPyBtX2NvbnZlcnRUb0JhY2tpbmdD
b250ZXh0LT5jb252ZXJ0VG9CYWNraW5nKCpkZXNjcmlwdG9yLmRlcHRoU3RlbmNpbEF0dGFjaG1l
bnQtPmRlcHRoU3RvcmVPcCkgOiBXR1BVU3RvcmVPcF9EaXNjYXJkLAorICAgICAgICAgICAgZGVz
Y3JpcHRvci5kZXB0aFN0ZW5jaWxBdHRhY2htZW50LT5kZXB0aENsZWFyVmFsdWUsCiAgICAgICAg
ICAgICBkZXNjcmlwdG9yLmRlcHRoU3RlbmNpbEF0dGFjaG1lbnQtPmRlcHRoUmVhZE9ubHksCi0g
ICAgICAgICAgICBzdGQ6OmhvbGRzX2FsdGVybmF0aXZlPExvYWRPcD4oZGVzY3JpcHRvci5kZXB0
aFN0ZW5jaWxBdHRhY2htZW50LT5zdGVuY2lsTG9hZFZhbHVlKSA/IG1fY29udmVydFRvQmFja2lu
Z0NvbnRleHQtPmNvbnZlcnRUb0JhY2tpbmcoc3RkOjpnZXQ8TG9hZE9wPihkZXNjcmlwdG9yLmRl
cHRoU3RlbmNpbEF0dGFjaG1lbnQtPnN0ZW5jaWxMb2FkVmFsdWUpKSA6IFdHUFVMb2FkT3BfQ2xl
YXIsCi0gICAgICAgICAgICBtX2NvbnZlcnRUb0JhY2tpbmdDb250ZXh0LT5jb252ZXJ0VG9CYWNr
aW5nKGRlc2NyaXB0b3IuZGVwdGhTdGVuY2lsQXR0YWNobWVudC0+c3RlbmNpbFN0b3JlT3ApLAot
ICAgICAgICAgICAgV1RGOjpzd2l0Y2hPbihkZXNjcmlwdG9yLmRlcHRoU3RlbmNpbEF0dGFjaG1l
bnQtPnN0ZW5jaWxMb2FkVmFsdWUsIFtdIChMb2FkT3ApIC0+IHVpbnQzMl90IHsKLSAgICAgICAg
ICAgICAgICByZXR1cm4gMDsKLSAgICAgICAgICAgIH0sIFtdIChTdGVuY2lsVmFsdWUgY2xlYXJT
dGVuY2lsKSAtPiB1aW50MzJfdCB7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIGNsZWFyU3RlbmNp
bDsKLSAgICAgICAgICAgIH0pLAorICAgICAgICAgICAgZGVzY3JpcHRvci5kZXB0aFN0ZW5jaWxB
dHRhY2htZW50LT5zdGVuY2lsTG9hZE9wID8gbV9jb252ZXJ0VG9CYWNraW5nQ29udGV4dC0+Y29u
dmVydFRvQmFja2luZygqZGVzY3JpcHRvci5kZXB0aFN0ZW5jaWxBdHRhY2htZW50LT5zdGVuY2ls
TG9hZE9wKSA6IFdHUFVMb2FkT3BfQ2xlYXIsCisgICAgICAgICAgICBkZXNjcmlwdG9yLmRlcHRo
U3RlbmNpbEF0dGFjaG1lbnQtPnN0ZW5jaWxTdG9yZU9wID8gbV9jb252ZXJ0VG9CYWNraW5nQ29u
dGV4dC0+Y29udmVydFRvQmFja2luZygqZGVzY3JpcHRvci5kZXB0aFN0ZW5jaWxBdHRhY2htZW50
LT5zdGVuY2lsU3RvcmVPcCkgOiBXR1BVU3RvcmVPcF9EaXNjYXJkLAorICAgICAgICAgICAgZGVz
Y3JpcHRvci5kZXB0aFN0ZW5jaWxBdHRhY2htZW50LT5zdGVuY2lsQ2xlYXJWYWx1ZSwKICAgICAg
ICAgICAgIGRlc2NyaXB0b3IuZGVwdGhTdGVuY2lsQXR0YWNobWVudC0+c3RlbmNpbFJlYWRPbmx5
LAogICAgICAgICB9OwogICAgIH0KIAotICAgIGF1dG8gbGFiZWwgPSBkZXNjcmlwdG9yLmxhYmVs
LnV0ZjgoKTsKKyAgICBWZWN0b3I8V0dQVVJlbmRlclBhc3NUaW1lc3RhbXBXcml0ZT4gdGltZXN0
YW1wV3JpdGVzOworICAgIGZvciAoY29uc3QgYXV0byYgdGltZXN0YW1wV3JpdGUgOiBkZXNjcmlw
dG9yLnRpbWVzdGFtcFdyaXRlcykgeworICAgICAgICB0aW1lc3RhbXBXcml0ZXMuYXBwZW5kKFdH
UFVSZW5kZXJQYXNzVGltZXN0YW1wV3JpdGUgeworICAgICAgICAgICAgbV9jb252ZXJ0VG9CYWNr
aW5nQ29udGV4dC0+Y29udmVydFRvQmFja2luZyh0aW1lc3RhbXBXcml0ZS5xdWVyeVNldCksCisg
ICAgICAgICAgICB0aW1lc3RhbXBXcml0ZS5xdWVyeUluZGV4LAorICAgICAgICAgICAgbV9jb252
ZXJ0VG9CYWNraW5nQ29udGV4dC0+Y29udmVydFRvQmFja2luZyh0aW1lc3RhbXBXcml0ZS5sb2Nh
dGlvbiksCisgICAgICAgIH0pOworICAgIH0KIAogICAgIFdHUFVSZW5kZXJQYXNzRGVzY3JpcHRv
ciBiYWNraW5nRGVzY3JpcHRvciB7CiAgICAgICAgIG51bGxwdHIsCkBAIC0xMTIsNiArMTA2LDgg
QEAgUmVmPFJlbmRlclBhc3NFbmNvZGVyPiBDb21tYW5kRW5jb2RlckltcGw6OmJlZ2luUmVuZGVy
UGFzcyhjb25zdCBSZW5kZXJQYXNzRGVzY3IKICAgICAgICAgY29sb3JBdHRhY2htZW50cy5kYXRh
KCksCiAgICAgICAgIGRlcHRoU3RlbmNpbEF0dGFjaG1lbnQgPyAmZGVwdGhTdGVuY2lsQXR0YWNo
bWVudC52YWx1ZSgpIDogbnVsbHB0ciwKICAgICAgICAgZGVzY3JpcHRvci5vY2NsdXNpb25RdWVy
eVNldCA/IG1fY29udmVydFRvQmFja2luZ0NvbnRleHQtPmNvbnZlcnRUb0JhY2tpbmcoKmRlc2Ny
aXB0b3Iub2NjbHVzaW9uUXVlcnlTZXQpIDogbnVsbHB0ciwKKyAgICAgICAgc3RhdGljX2Nhc3Q8
dWludDMyX3Q+KHRpbWVzdGFtcFdyaXRlcy5zaXplKCkpLAorICAgICAgICB0aW1lc3RhbXBXcml0
ZXMuZGF0YSgpLAogICAgIH07CiAKICAgICByZXR1cm4gUmVuZGVyUGFzc0VuY29kZXJJbXBsOjpj
cmVhdGUod2dwdUNvbW1hbmRFbmNvZGVyQmVnaW5SZW5kZXJQYXNzKG1fYmFja2luZywgJmJhY2tp
bmdEZXNjcmlwdG9yKSwgbV9jb252ZXJ0VG9CYWNraW5nQ29udGV4dCk7CkBAIC0xMjEsOSArMTE3
LDIyIEBAIFJlZjxDb21wdXRlUGFzc0VuY29kZXI+IENvbW1hbmRFbmNvZGVySW1wbDo6YmVnaW5D
b21wdXRlUGFzcyhjb25zdCBzdGQ6Om9wdGlvbmFsCiB7CiAgICAgQ1N0cmluZyBsYWJlbCA9IGRl
c2NyaXB0b3IgPyBkZXNjcmlwdG9yLT5sYWJlbC51dGY4KCkgOiBDU3RyaW5nKCIiKTsKIAorICAg
IFZlY3RvcjxXR1BVQ29tcHV0ZVBhc3NUaW1lc3RhbXBXcml0ZT4gdGltZXN0YW1wV3JpdGVzOwor
ICAgIGlmIChkZXNjcmlwdG9yKSB7CisgICAgICAgIGZvciAoY29uc3QgYXV0byYgdGltZXN0YW1w
V3JpdGUgOiBkZXNjcmlwdG9yLT50aW1lc3RhbXBXcml0ZXMpIHsKKyAgICAgICAgICAgIHRpbWVz
dGFtcFdyaXRlcy5hcHBlbmQoV0dQVUNvbXB1dGVQYXNzVGltZXN0YW1wV3JpdGUgeworICAgICAg
ICAgICAgICAgIG1fY29udmVydFRvQmFja2luZ0NvbnRleHQtPmNvbnZlcnRUb0JhY2tpbmcodGlt
ZXN0YW1wV3JpdGUucXVlcnlTZXQpLAorICAgICAgICAgICAgICAgIHRpbWVzdGFtcFdyaXRlLnF1
ZXJ5SW5kZXgsCisgICAgICAgICAgICAgICAgbV9jb252ZXJ0VG9CYWNraW5nQ29udGV4dC0+Y29u
dmVydFRvQmFja2luZyh0aW1lc3RhbXBXcml0ZS5sb2NhdGlvbiksCisgICAgICAgICAgICB9KTsK
KyAgICAgICAgfQorICAgIH0KKwogICAgIFdHUFVDb21wdXRlUGFzc0Rlc2NyaXB0b3IgYmFja2lu
Z0Rlc2NyaXB0b3IgewogICAgICAgICBudWxscHRyLAogICAgICAgICBsYWJlbC5kYXRhKCksCisg
ICAgICAgIHN0YXRpY19jYXN0PHVpbnQzMl90Pih0aW1lc3RhbXBXcml0ZXMuc2l6ZSgpKSwKKyAg
ICAgICAgdGltZXN0YW1wV3JpdGVzLmRhdGEoKSwKICAgICB9OwogCiAgICAgcmV0dXJuIENvbXB1
dGVQYXNzRW5jb2RlckltcGw6OmNyZWF0ZSh3Z3B1Q29tbWFuZEVuY29kZXJCZWdpbkNvbXB1dGVQ
YXNzKG1fYmFja2luZywgJmJhY2tpbmdEZXNjcmlwdG9yKSwgbV9jb252ZXJ0VG9CYWNraW5nQ29u
dGV4dCk7CkBAIC0yMjEsMTIgKzIzMCwxMiBAQCB2b2lkIENvbW1hbmRFbmNvZGVySW1wbDo6Y29w
eVRleHR1cmVUb1RleHR1cmUoCiAgICAgd2dwdUNvbW1hbmRFbmNvZGVyQ29weVRleHR1cmVUb1Rl
eHR1cmUobV9iYWNraW5nLCAmYmFja2luZ1NvdXJjZSwgJmJhY2tpbmdEZXN0aW5hdGlvbiwgJmJh
Y2tpbmdDb3B5U2l6ZSk7CiB9CiAKLXZvaWQgQ29tbWFuZEVuY29kZXJJbXBsOjpmaWxsQnVmZmVy
KAotICAgIGNvbnN0IEJ1ZmZlciYgZGVzdGluYXRpb24sCi0gICAgU2l6ZTY0IGRlc3RpbmF0aW9u
T2Zmc2V0LAotICAgIFNpemU2NCBzaXplKQordm9pZCBDb21tYW5kRW5jb2RlckltcGw6OmNsZWFy
QnVmZmVyKAorICAgIGNvbnN0IEJ1ZmZlciYgYnVmZmVyLAorICAgIFNpemU2NCBvZmZzZXQsCisg
ICAgc3RkOjpvcHRpb25hbDxTaXplNjQ+IHNpemUpCiB7Ci0gICAgd2dwdUNvbW1hbmRFbmNvZGVy
RmlsbEJ1ZmZlcihtX2JhY2tpbmcsIG1fY29udmVydFRvQmFja2luZ0NvbnRleHQtPmNvbnZlcnRU
b0JhY2tpbmcoZGVzdGluYXRpb24pLCBkZXN0aW5hdGlvbk9mZnNldCwgc2l6ZSk7CisgICAgd2dw
dUNvbW1hbmRFbmNvZGVyQ2xlYXJCdWZmZXIobV9iYWNraW5nLCBtX2NvbnZlcnRUb0JhY2tpbmdD
b250ZXh0LT5jb252ZXJ0VG9CYWNraW5nKGJ1ZmZlciksIG9mZnNldCwgc2l6ZS52YWx1ZV9vcihX
R1BVX1dIT0xFX1NJWkUpKTsKIH0KIAogdm9pZCBDb21tYW5kRW5jb2RlckltcGw6OnB1c2hEZWJ1
Z0dyb3VwKFN0cmluZyYmIGdyb3VwTGFiZWwpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Q
QUwvcGFsL2dyYXBoaWNzL1dlYkdQVS9JbXBsL1dlYkdQVUNvbW1hbmRFbmNvZGVySW1wbC5oIGIv
U291cmNlL1dlYkNvcmUvUEFML3BhbC9ncmFwaGljcy9XZWJHUFUvSW1wbC9XZWJHUFVDb21tYW5k
RW5jb2RlckltcGwuaAppbmRleCBhZDYwYWMwMmIxYWQ2ZTI0MDg5NGI5ZDVhMjkxMGJiYmQ0MzYx
MWE5Li4xNzE3YWRkM2JjOTgwYWM1NDg2YWQ3M2EzOTI5MTViNDhhZDk2MjBjIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL2dyYXBoaWNzL1dlYkdQVS9JbXBsL1dlYkdQVUNvbW1h
bmRFbmNvZGVySW1wbC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvZ3JhcGhpY3MvV2Vi
R1BVL0ltcGwvV2ViR1BVQ29tbWFuZEVuY29kZXJJbXBsLmgKQEAgLTgxLDEwICs4MSwxMCBAQCBw
cml2YXRlOgogICAgICAgICBjb25zdCBJbWFnZUNvcHlUZXh0dXJlJiBkZXN0aW5hdGlvbiwKICAg
ICAgICAgY29uc3QgRXh0ZW50M0QmIGNvcHlTaXplKSBmaW5hbDsKIAotICAgIHZvaWQgZmlsbEJ1
ZmZlcigKLSAgICAgICAgY29uc3QgQnVmZmVyJiBkZXN0aW5hdGlvbiwKLSAgICAgICAgU2l6ZTY0
IGRlc3RpbmF0aW9uT2Zmc2V0LAotICAgICAgICBTaXplNjQpIGZpbmFsOworICAgIHZvaWQgY2xl
YXJCdWZmZXIoCisgICAgICAgIGNvbnN0IEJ1ZmZlciYsCisgICAgICAgIFNpemU2NCBvZmZzZXQs
CisgICAgICAgIHN0ZDo6b3B0aW9uYWw8U2l6ZTY0PikgZmluYWw7CiAKICAgICB2b2lkIHB1c2hE
ZWJ1Z0dyb3VwKFN0cmluZyYmIGdyb3VwTGFiZWwpIGZpbmFsOwogICAgIHZvaWQgcG9wRGVidWdH
cm91cCgpIGZpbmFsOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvUEFML3BhbC9ncmFwaGlj
cy9XZWJHUFUvSW1wbC9XZWJHUFVDb21wdXRlUGFzc0VuY29kZXJJbXBsLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL1BBTC9wYWwvZ3JhcGhpY3MvV2ViR1BVL0ltcGwvV2ViR1BVQ29tcHV0ZVBhc3NFbmNv
ZGVySW1wbC5jcHAKaW5kZXggZWRkNTlkNjU5NzZmMDRhN2MxYjM3ZmQxYWJiMDhkNTRiZTRmNzYx
Ny4uMmRkZWViNDlkZWU0YTY4OGIyNjEyMjE4YjQ0NTA4OTczMjM4NDQ3NCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvUEFML3BhbC9ncmFwaGljcy9XZWJHUFUvSW1wbC9XZWJHUFVDb21wdXRl
UGFzc0VuY29kZXJJbXBsLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL2dyYXBoaWNz
L1dlYkdQVS9JbXBsL1dlYkdQVUNvbXB1dGVQYXNzRW5jb2RlckltcGwuY3BwCkBAIC01Myw5ICs1
Myw5IEBAIHZvaWQgQ29tcHV0ZVBhc3NFbmNvZGVySW1wbDo6c2V0UGlwZWxpbmUoY29uc3QgQ29t
cHV0ZVBpcGVsaW5lJiBjb21wdXRlUGlwZWxpbmUpCiAgICAgd2dwdUNvbXB1dGVQYXNzRW5jb2Rl
clNldFBpcGVsaW5lKG1fYmFja2luZywgbV9jb252ZXJ0VG9CYWNraW5nQ29udGV4dC0+Y29udmVy
dFRvQmFja2luZyhjb21wdXRlUGlwZWxpbmUpKTsKIH0KIAotdm9pZCBDb21wdXRlUGFzc0VuY29k
ZXJJbXBsOjpkaXNwYXRjaChTaXplMzIgeCwgc3RkOjpvcHRpb25hbDxTaXplMzI+IHksIHN0ZDo6
b3B0aW9uYWw8U2l6ZTMyPiB6KQordm9pZCBDb21wdXRlUGFzc0VuY29kZXJJbXBsOjpkaXNwYXRj
aChTaXplMzIgd29ya2dyb3VwQ291bnRYLCBTaXplMzIgd29ya2dyb3VwQ291bnRZLCBTaXplMzIg
d29ya2dyb3VwQ291bnRaKQogewotICAgIHdncHVDb21wdXRlUGFzc0VuY29kZXJEaXNwYXRjaCht
X2JhY2tpbmcsIHgsIHkudmFsdWVfb3IoMSksIHoudmFsdWVfb3IoMSkpOworICAgIHdncHVDb21w
dXRlUGFzc0VuY29kZXJEaXNwYXRjaChtX2JhY2tpbmcsIHdvcmtncm91cENvdW50WCwgd29ya2dy
b3VwQ291bnRZLCB3b3JrZ3JvdXBDb3VudFopOwogfQogCiB2b2lkIENvbXB1dGVQYXNzRW5jb2Rl
ckltcGw6OmRpc3BhdGNoSW5kaXJlY3QoY29uc3QgQnVmZmVyJiBpbmRpcmVjdEJ1ZmZlciwgU2l6
ZTY0IGluZGlyZWN0T2Zmc2V0KQpAQCAtNjMsMTcgKzYzLDcgQEAgdm9pZCBDb21wdXRlUGFzc0Vu
Y29kZXJJbXBsOjpkaXNwYXRjaEluZGlyZWN0KGNvbnN0IEJ1ZmZlciYgaW5kaXJlY3RCdWZmZXIs
IFNpemUKICAgICB3Z3B1Q29tcHV0ZVBhc3NFbmNvZGVyRGlzcGF0Y2hJbmRpcmVjdChtX2JhY2tp
bmcsIG1fY29udmVydFRvQmFja2luZ0NvbnRleHQtPmNvbnZlcnRUb0JhY2tpbmcoaW5kaXJlY3RC
dWZmZXIpLCBpbmRpcmVjdE9mZnNldCk7CiB9CiAKLXZvaWQgQ29tcHV0ZVBhc3NFbmNvZGVySW1w
bDo6YmVnaW5QaXBlbGluZVN0YXRpc3RpY3NRdWVyeShjb25zdCBRdWVyeVNldCYgcXVlcnlTZXQs
IFNpemUzMiBxdWVyeUluZGV4KQotewotICAgIHdncHVDb21wdXRlUGFzc0VuY29kZXJCZWdpblBp
cGVsaW5lU3RhdGlzdGljc1F1ZXJ5KG1fYmFja2luZywgbV9jb252ZXJ0VG9CYWNraW5nQ29udGV4
dC0+Y29udmVydFRvQmFja2luZyhxdWVyeVNldCksIHF1ZXJ5SW5kZXgpOwotfQotCi12b2lkIENv
bXB1dGVQYXNzRW5jb2RlckltcGw6OmVuZFBpcGVsaW5lU3RhdGlzdGljc1F1ZXJ5KCkKLXsKLSAg
ICB3Z3B1Q29tcHV0ZVBhc3NFbmNvZGVyRW5kUGlwZWxpbmVTdGF0aXN0aWNzUXVlcnkobV9iYWNr
aW5nKTsKLX0KLQotdm9pZCBDb21wdXRlUGFzc0VuY29kZXJJbXBsOjplbmRQYXNzKCkKK3ZvaWQg
Q29tcHV0ZVBhc3NFbmNvZGVySW1wbDo6ZW5kKCkKIHsKICAgICB3Z3B1Q29tcHV0ZVBhc3NFbmNv
ZGVyRW5kUGFzcyhtX2JhY2tpbmcpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvUEFM
L3BhbC9ncmFwaGljcy9XZWJHUFUvSW1wbC9XZWJHUFVDb21wdXRlUGFzc0VuY29kZXJJbXBsLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL2dyYXBoaWNzL1dlYkdQVS9JbXBsL1dlYkdQVUNvbXB1
dGVQYXNzRW5jb2RlckltcGwuaAppbmRleCA1Mjg4YjViOGMwZGJlN2E2MTBlYjExNjUzMTU1ZjMz
Y2ExNTNkNTEzLi4wZjM2NjFkOTliZWRiNGZjMjQ5MTgxZGFjNDdmNjNhNzU0MjJmM2QwIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL2dyYXBoaWNzL1dlYkdQVS9JbXBsL1dlYkdQ
VUNvbXB1dGVQYXNzRW5jb2RlckltcGwuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL2dy
YXBoaWNzL1dlYkdQVS9JbXBsL1dlYkdQVUNvbXB1dGVQYXNzRW5jb2RlckltcGwuaApAQCAtNTcs
MTMgKzU3LDEwIEBAIHByaXZhdGU6CiAgICAgV0dQVUNvbXB1dGVQYXNzRW5jb2RlciBiYWNraW5n
KCkgY29uc3QgeyByZXR1cm4gbV9iYWNraW5nOyB9CiAKICAgICB2b2lkIHNldFBpcGVsaW5lKGNv
bnN0IENvbXB1dGVQaXBlbGluZSYpIGZpbmFsOwotICAgIHZvaWQgZGlzcGF0Y2goU2l6ZTMyIHgs
IHN0ZDo6b3B0aW9uYWw8U2l6ZTMyPiB5LCBzdGQ6Om9wdGlvbmFsPFNpemUzMj4pIGZpbmFsOwor
ICAgIHZvaWQgZGlzcGF0Y2goU2l6ZTMyIHdvcmtncm91cENvdW50WCwgU2l6ZTMyIHdvcmtncm91
cENvdW50WSwgU2l6ZTMyIHdvcmtncm91cENvdW50WikgZmluYWw7CiAgICAgdm9pZCBkaXNwYXRj
aEluZGlyZWN0KGNvbnN0IEJ1ZmZlciYgaW5kaXJlY3RCdWZmZXIsIFNpemU2NCBpbmRpcmVjdE9m
ZnNldCkgZmluYWw7CiAKLSAgICB2b2lkIGJlZ2luUGlwZWxpbmVTdGF0aXN0aWNzUXVlcnkoY29u
c3QgUXVlcnlTZXQmLCBTaXplMzIgcXVlcnlJbmRleCkgZmluYWw7Ci0gICAgdm9pZCBlbmRQaXBl
bGluZVN0YXRpc3RpY3NRdWVyeSgpIGZpbmFsOwotCi0gICAgdm9pZCBlbmRQYXNzKCkgZmluYWw7
CisgICAgdm9pZCBlbmQoKSBmaW5hbDsKIAogICAgIHZvaWQgc2V0QmluZEdyb3VwKEluZGV4MzIs
IGNvbnN0IEJpbmRHcm91cCYsCiAgICAgICAgIHN0ZDo6b3B0aW9uYWw8VmVjdG9yPEJ1ZmZlckR5
bmFtaWNPZmZzZXQ+PiYmKSBmaW5hbDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1BBTC9w
YWwvZ3JhcGhpY3MvV2ViR1BVL0ltcGwvV2ViR1BVQ29udmVydFRvQmFja2luZ0NvbnRleHQuY3Bw
IGIvU291cmNlL1dlYkNvcmUvUEFML3BhbC9ncmFwaGljcy9XZWJHUFUvSW1wbC9XZWJHUFVDb252
ZXJ0VG9CYWNraW5nQ29udGV4dC5jcHAKaW5kZXggMGZiZmI0ZWNkNmI2NWM0NDFmNzE1NDMzZDJj
NjUwOWQ4ZGU0MjNhYS4uNzVmOTdjMjMzYTUxZTVlOTA4YjljNWRmOWIwYjdkNTA3NzdjODY3ZCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvUEFML3BhbC9ncmFwaGljcy9XZWJHUFUvSW1wbC9X
ZWJHUFVDb252ZXJ0VG9CYWNraW5nQ29udGV4dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvUEFM
L3BhbC9ncmFwaGljcy9XZWJHUFUvSW1wbC9XZWJHUFVDb252ZXJ0VG9CYWNraW5nQ29udGV4dC5j
cHAKQEAgLTM0LDYgKzM0LDcgQEAKICNpbmNsdWRlICJXZWJHUFVCdWZmZXJCaW5kaW5nVHlwZS5o
IgogI2luY2x1ZGUgIldlYkdQVUNvbXBhcmVGdW5jdGlvbi5oIgogI2luY2x1ZGUgIldlYkdQVUNv
bXBpbGF0aW9uTWVzc2FnZVR5cGUuaCIKKyNpbmNsdWRlICJXZWJHUFVDb21wdXRlUGFzc1RpbWVz
dGFtcExvY2F0aW9uLmgiCiAjaW5jbHVkZSAiV2ViR1BVQ3VsbE1vZGUuaCIKICNpbmNsdWRlICJX
ZWJHUFVFcnJvckZpbHRlci5oIgogI2luY2x1ZGUgIldlYkdQVUZlYXR1cmVOYW1lLmgiCkBAIC00
MSwxMCArNDIsMTAgQEAKICNpbmNsdWRlICJXZWJHUFVGcm9udEZhY2UuaCIKICNpbmNsdWRlICJX
ZWJHUFVJbmRleEZvcm1hdC5oIgogI2luY2x1ZGUgIldlYkdQVUxvYWRPcC5oIgotI2luY2x1ZGUg
IldlYkdQVVBpcGVsaW5lU3RhdGlzdGljTmFtZS5oIgogI2luY2x1ZGUgIldlYkdQVVBvd2VyUHJl
ZmVyZW5jZS5oIgogI2luY2x1ZGUgIldlYkdQVVByaW1pdGl2ZVRvcG9sb2d5LmgiCiAjaW5jbHVk
ZSAiV2ViR1BVUXVlcnlUeXBlLmgiCisjaW5jbHVkZSAiV2ViR1BVUmVuZGVyUGFzc1RpbWVzdGFt
cExvY2F0aW9uLmgiCiAjaW5jbHVkZSAiV2ViR1BVU2FtcGxlckJpbmRpbmdUeXBlLmgiCiAjaW5j
bHVkZSAiV2ViR1BVU3RlbmNpbE9wZXJhdGlvbi5oIgogI2luY2x1ZGUgIldlYkdQVVN0b3JhZ2VU
ZXh0dXJlQWNjZXNzLmgiCkBAIC0xNjYsNiArMTY3LDE2IEBAIFdHUFVDb21waWxhdGlvbk1lc3Nh
Z2VUeXBlIENvbnZlcnRUb0JhY2tpbmdDb250ZXh0Ojpjb252ZXJ0VG9CYWNraW5nKENvbXBpbGF0
aW9uCiAgICAgfQogfQogCitXR1BVQ29tcHV0ZVBhc3NUaW1lc3RhbXBMb2NhdGlvbiBDb252ZXJ0
VG9CYWNraW5nQ29udGV4dDo6Y29udmVydFRvQmFja2luZyhDb21wdXRlUGFzc1RpbWVzdGFtcExv
Y2F0aW9uIGNvbXB1dGVQYXNzVGltZXN0YW1wTG9jYXRpb24pCit7CisgICAgc3dpdGNoIChjb21w
dXRlUGFzc1RpbWVzdGFtcExvY2F0aW9uKSB7CisgICAgY2FzZSBDb21wdXRlUGFzc1RpbWVzdGFt
cExvY2F0aW9uOjpCZWdpbm5pbmc6CisgICAgICAgIHJldHVybiBXR1BVQ29tcHV0ZVBhc3NUaW1l
c3RhbXBMb2NhdGlvbl9CZWdpbm5pbmc7CisgICAgY2FzZSBDb21wdXRlUGFzc1RpbWVzdGFtcExv
Y2F0aW9uOjpFbmQ6CisgICAgICAgIHJldHVybiBXR1BVQ29tcHV0ZVBhc3NUaW1lc3RhbXBMb2Nh
dGlvbl9FbmQ7CisgICAgfQorfQorCiBXR1BVQ3VsbE1vZGUgQ29udmVydFRvQmFja2luZ0NvbnRl
eHQ6OmNvbnZlcnRUb0JhY2tpbmcoQ3VsbE1vZGUgY3VsbE1vZGUpCiB7CiAgICAgc3dpdGNoIChj
dWxsTW9kZSkgewpAQCAtMTk3LDggKzIwOCw2IEBAIFdHUFVGZWF0dXJlTmFtZSBDb252ZXJ0VG9C
YWNraW5nQ29udGV4dDo6Y29udmVydFRvQmFja2luZyhGZWF0dXJlTmFtZSBmZWF0dXJlTmFtCiAg
ICAgICAgIHJldHVybiBXR1BVRmVhdHVyZU5hbWVfRGVwdGgyNFVub3JtU3RlbmNpbDg7CiAgICAg
Y2FzZSBGZWF0dXJlTmFtZTo6RGVwdGgzMmZsb2F0U3RlbmNpbDg6CiAgICAgICAgIHJldHVybiBX
R1BVRmVhdHVyZU5hbWVfRGVwdGgzMkZsb2F0U3RlbmNpbDg7Ci0gICAgY2FzZSBGZWF0dXJlTmFt
ZTo6UGlwZWxpbmVTdGF0aXN0aWNzUXVlcnk6Ci0gICAgICAgIHJldHVybiBXR1BVRmVhdHVyZU5h
bWVfUGlwZWxpbmVTdGF0aXN0aWNzUXVlcnk7CiAgICAgY2FzZSBGZWF0dXJlTmFtZTo6VGV4dHVy
ZUNvbXByZXNzaW9uQmM6CiAgICAgICAgIHJldHVybiBXR1BVRmVhdHVyZU5hbWVfVGV4dHVyZUNv
bXByZXNzaW9uQkM7CiAgICAgY2FzZSBGZWF0dXJlTmFtZTo6VGV4dHVyZUNvbXByZXNzaW9uRXRj
MjoKQEAgLTI0NywyMiArMjU2LDggQEAgV0dQVUxvYWRPcCBDb252ZXJ0VG9CYWNraW5nQ29udGV4
dDo6Y29udmVydFRvQmFja2luZyhMb2FkT3AgbG9hZE9wKQogICAgIHN3aXRjaCAobG9hZE9wKSB7
CiAgICAgY2FzZSBMb2FkT3A6OkxvYWQ6CiAgICAgICAgIHJldHVybiBXR1BVTG9hZE9wX0xvYWQ7
Ci0gICAgfQotfQotCi1XR1BVUGlwZWxpbmVTdGF0aXN0aWNOYW1lIENvbnZlcnRUb0JhY2tpbmdD
b250ZXh0Ojpjb252ZXJ0VG9CYWNraW5nKFBpcGVsaW5lU3RhdGlzdGljTmFtZSBwaXBlbGluZVN0
YXRpc3RpY05hbWUpCi17Ci0gICAgc3dpdGNoIChwaXBlbGluZVN0YXRpc3RpY05hbWUpIHsKLSAg
ICBjYXNlIFBpcGVsaW5lU3RhdGlzdGljTmFtZTo6VmVydGV4U2hhZGVySW52b2NhdGlvbnM6Ci0g
ICAgICAgIHJldHVybiBXR1BVUGlwZWxpbmVTdGF0aXN0aWNOYW1lX1ZlcnRleFNoYWRlckludm9j
YXRpb25zOwotICAgIGNhc2UgUGlwZWxpbmVTdGF0aXN0aWNOYW1lOjpDbGlwcGVySW52b2NhdGlv
bnM6Ci0gICAgICAgIHJldHVybiBXR1BVUGlwZWxpbmVTdGF0aXN0aWNOYW1lX0NsaXBwZXJJbnZv
Y2F0aW9uczsKLSAgICBjYXNlIFBpcGVsaW5lU3RhdGlzdGljTmFtZTo6Q2xpcHBlclByaW1pdGl2
ZXNPdXQ6Ci0gICAgICAgIHJldHVybiBXR1BVUGlwZWxpbmVTdGF0aXN0aWNOYW1lX0NsaXBwZXJQ
cmltaXRpdmVzT3V0OwotICAgIGNhc2UgUGlwZWxpbmVTdGF0aXN0aWNOYW1lOjpGcmFnbWVudFNo
YWRlckludm9jYXRpb25zOgotICAgICAgICByZXR1cm4gV0dQVVBpcGVsaW5lU3RhdGlzdGljTmFt
ZV9GcmFnbWVudFNoYWRlckludm9jYXRpb25zOwotICAgIGNhc2UgUGlwZWxpbmVTdGF0aXN0aWNO
YW1lOjpDb21wdXRlU2hhZGVySW52b2NhdGlvbnM6Ci0gICAgICAgIHJldHVybiBXR1BVUGlwZWxp
bmVTdGF0aXN0aWNOYW1lX0NvbXB1dGVTaGFkZXJJbnZvY2F0aW9uczsKKyAgICBjYXNlIExvYWRP
cDo6Q2xlYXI6CisgICAgICAgIHJldHVybiBXR1BVTG9hZE9wX0NsZWFyOwogICAgIH0KIH0KIApA
QCAtMjk3LDEzICsyOTIsMjEgQEAgV0dQVVF1ZXJ5VHlwZSBDb252ZXJ0VG9CYWNraW5nQ29udGV4
dDo6Y29udmVydFRvQmFja2luZyhRdWVyeVR5cGUgcXVlcnlUeXBlKQogICAgIHN3aXRjaCAocXVl
cnlUeXBlKSB7CiAgICAgY2FzZSBRdWVyeVR5cGU6Ok9jY2x1c2lvbjoKICAgICAgICAgcmV0dXJu
IFdHUFVRdWVyeVR5cGVfT2NjbHVzaW9uOwotICAgIGNhc2UgUXVlcnlUeXBlOjpQaXBlbGluZVN0
YXRpc3RpY3M6Ci0gICAgICAgIHJldHVybiBXR1BVUXVlcnlUeXBlX1BpcGVsaW5lU3RhdGlzdGlj
czsKICAgICBjYXNlIFF1ZXJ5VHlwZTo6VGltZXN0YW1wOgogICAgICAgICByZXR1cm4gV0dQVVF1
ZXJ5VHlwZV9UaW1lc3RhbXA7CiAgICAgfQogfQogCitXR1BVUmVuZGVyUGFzc1RpbWVzdGFtcExv
Y2F0aW9uIENvbnZlcnRUb0JhY2tpbmdDb250ZXh0Ojpjb252ZXJ0VG9CYWNraW5nKFJlbmRlclBh
c3NUaW1lc3RhbXBMb2NhdGlvbiByZW5kZXJQYXNzVGltZXN0YW1wTG9jYXRpb24pCit7CisgICAg
c3dpdGNoIChyZW5kZXJQYXNzVGltZXN0YW1wTG9jYXRpb24pIHsKKyAgICBjYXNlIFJlbmRlclBh
c3NUaW1lc3RhbXBMb2NhdGlvbjo6QmVnaW5uaW5nOgorICAgICAgICByZXR1cm4gV0dQVVJlbmRl
clBhc3NUaW1lc3RhbXBMb2NhdGlvbl9CZWdpbm5pbmc7CisgICAgY2FzZSBSZW5kZXJQYXNzVGlt
ZXN0YW1wTG9jYXRpb246OkVuZDoKKyAgICAgICAgcmV0dXJuIFdHUFVSZW5kZXJQYXNzVGltZXN0
YW1wTG9jYXRpb25fRW5kOworICAgIH0KK30KKwogV0dQVVNhbXBsZXJCaW5kaW5nVHlwZSBDb252
ZXJ0VG9CYWNraW5nQ29udGV4dDo6Y29udmVydFRvQmFja2luZyhTYW1wbGVyQmluZGluZ1R5cGUg
c2FtcGxlckJpbmRpbmdUeXBlKQogewogICAgIHN3aXRjaCAoc2FtcGxlckJpbmRpbmdUeXBlKSB7
CkBAIC00OTYsMTEgKzQ5OSwxMSBAQCBXR1BVVGV4dHVyZUZvcm1hdCBDb252ZXJ0VG9CYWNraW5n
Q29udGV4dDo6Y29udmVydFRvQmFja2luZyhUZXh0dXJlRm9ybWF0IHRleHR1cgogICAgIGNhc2Ug
VGV4dHVyZUZvcm1hdDo6RXRjMlJnYjh1bm9ybToKICAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0
PFdHUFVUZXh0dXJlRm9ybWF0PihXR1BVVGV4dHVyZUZvcm1hdF9FVEMyUkdCOFVub3JtKTsKICAg
ICBjYXNlIFRleHR1cmVGb3JtYXQ6OkV0YzJSZ2I4dW5vcm1TUkdCOgotICAgICAgICByZXR1cm4g
c3RhdGljX2Nhc3Q8V0dQVVRleHR1cmVGb3JtYXQ+KFdHUFVUZXh0dXJlRm9ybWF0X0VUQzJSR0I4
dW5vcm1TcmdiKTsKKyAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PFdHUFVUZXh0dXJlRm9ybWF0
PihXR1BVVGV4dHVyZUZvcm1hdF9FVEMyUkdCOFVub3JtU3JnYik7CiAgICAgY2FzZSBUZXh0dXJl
Rm9ybWF0OjpFdGMyUmdiOGExdW5vcm06Ci0gICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxXR1BV
VGV4dHVyZUZvcm1hdD4oV0dQVVRleHR1cmVGb3JtYXRfRVRDMlJHQjhhMVVub3JtKTsKKyAgICAg
ICAgcmV0dXJuIHN0YXRpY19jYXN0PFdHUFVUZXh0dXJlRm9ybWF0PihXR1BVVGV4dHVyZUZvcm1h
dF9FVEMyUkdCOEExVW5vcm0pOwogICAgIGNhc2UgVGV4dHVyZUZvcm1hdDo6RXRjMlJnYjhhMXVu
b3JtU1JHQjoKLSAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PFdHUFVUZXh0dXJlRm9ybWF0PihX
R1BVVGV4dHVyZUZvcm1hdF9FVEMyUkdCOGExdW5vcm1TcmdiKTsKKyAgICAgICAgcmV0dXJuIHN0
YXRpY19jYXN0PFdHUFVUZXh0dXJlRm9ybWF0PihXR1BVVGV4dHVyZUZvcm1hdF9FVEMyUkdCOEEx
VW5vcm1TcmdiKTsKICAgICBjYXNlIFRleHR1cmVGb3JtYXQ6OkV0YzJSZ2JhOHVub3JtOgogICAg
ICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8V0dQVVRleHR1cmVGb3JtYXQ+KFdHUFVUZXh0dXJlRm9y
bWF0X0VUQzJSR0JBOFVub3JtKTsKICAgICBjYXNlIFRleHR1cmVGb3JtYXQ6OkV0YzJSZ2JhOHVu
b3JtU1JHQjoKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvZ3JhcGhpY3MvV2Vi
R1BVL0ltcGwvV2ViR1BVQ29udmVydFRvQmFja2luZ0NvbnRleHQuaCBiL1NvdXJjZS9XZWJDb3Jl
L1BBTC9wYWwvZ3JhcGhpY3MvV2ViR1BVL0ltcGwvV2ViR1BVQ29udmVydFRvQmFja2luZ0NvbnRl
eHQuaAppbmRleCAwOTNkODMzYzRlM2FmMDAzNGMyOGVmOTRmZjE5NmY4MzlhZGE0MDI3Li43NTg1
MDhiZDIzNWM4ZjI0Y2M4ZDc0M2Y3OGMyMmM1YzM1OGFkNDAwIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9QQUwvcGFsL2dyYXBoaWNzL1dlYkdQVS9JbXBsL1dlYkdQVUNvbnZlcnRUb0JhY2tp
bmdDb250ZXh0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvUEFML3BhbC9ncmFwaGljcy9XZWJHUFUv
SW1wbC9XZWJHUFVDb252ZXJ0VG9CYWNraW5nQ29udGV4dC5oCkBAIC01NCw2ICs1NCw3IEBAIGNs
YXNzIENvbW1hbmRCdWZmZXI7CiBjbGFzcyBDb21tYW5kRW5jb2RlcjsKIGVudW0gY2xhc3MgQ29t
cGFyZUZ1bmN0aW9uIDogdWludDhfdDsKIGVudW0gY2xhc3MgQ29tcGlsYXRpb25NZXNzYWdlVHlw
ZSA6IHVpbnQ4X3Q7CitlbnVtIGNsYXNzIENvbXB1dGVQYXNzVGltZXN0YW1wTG9jYXRpb24gOiB1
aW50OF90OwogY2xhc3MgQ29tcHV0ZVBhc3NFbmNvZGVyOwogY2xhc3MgQ29tcHV0ZVBpcGVsaW5l
OwogZW51bSBjbGFzcyBDdWxsTW9kZSA6IHVpbnQ4X3Q7CkBAIC02Niw3ICs2Nyw2IEBAIGNsYXNz
IEdQVTsKIGVudW0gY2xhc3MgSW5kZXhGb3JtYXQgOiB1aW50OF90OwogZW51bSBjbGFzcyBMb2Fk
T3AgOiB1aW50OF90OwogY2xhc3MgUGlwZWxpbmVMYXlvdXQ7Ci1lbnVtIGNsYXNzIFBpcGVsaW5l
U3RhdGlzdGljTmFtZSA6IHVpbnQ4X3Q7CiBlbnVtIGNsYXNzIFBvd2VyUHJlZmVyZW5jZSA6IHVp
bnQ4X3Q7CiBlbnVtIGNsYXNzIFByaW1pdGl2ZVRvcG9sb2d5IDogdWludDhfdDsKIGNsYXNzIFF1
ZXJ5U2V0OwpAQCAtNzUsNiArNzUsNyBAQCBjbGFzcyBRdWV1ZTsKIGNsYXNzIFJlbmRlckJ1bmRs
ZUVuY29kZXI7CiBjbGFzcyBSZW5kZXJCdW5kbGU7CiBjbGFzcyBSZW5kZXJQYXNzRW5jb2RlcjsK
K2VudW0gY2xhc3MgUmVuZGVyUGFzc1RpbWVzdGFtcExvY2F0aW9uIDogdWludDhfdDsKIGNsYXNz
IFJlbmRlclBpcGVsaW5lOwogY2xhc3MgU2FtcGxlcjsKIGVudW0gY2xhc3MgU2FtcGxlckJpbmRp
bmdUeXBlIDogdWludDhfdDsKQEAgLTEwMyw2ICsxMDQsNyBAQCBwdWJsaWM6CiAgICAgV0dQVUJ1
ZmZlckJpbmRpbmdUeXBlIGNvbnZlcnRUb0JhY2tpbmcoQnVmZmVyQmluZGluZ1R5cGUpOwogICAg
IFdHUFVDb21wYXJlRnVuY3Rpb24gY29udmVydFRvQmFja2luZyhDb21wYXJlRnVuY3Rpb24pOwog
ICAgIFdHUFVDb21waWxhdGlvbk1lc3NhZ2VUeXBlIGNvbnZlcnRUb0JhY2tpbmcoQ29tcGlsYXRp
b25NZXNzYWdlVHlwZSk7CisgICAgV0dQVUNvbXB1dGVQYXNzVGltZXN0YW1wTG9jYXRpb24gY29u
dmVydFRvQmFja2luZyhDb21wdXRlUGFzc1RpbWVzdGFtcExvY2F0aW9uKTsKICAgICBXR1BVQ3Vs
bE1vZGUgY29udmVydFRvQmFja2luZyhDdWxsTW9kZSk7CiAgICAgV0dQVUVycm9yRmlsdGVyIGNv
bnZlcnRUb0JhY2tpbmcoRXJyb3JGaWx0ZXIpOwogICAgIFdHUFVGZWF0dXJlTmFtZSBjb252ZXJ0
VG9CYWNraW5nKEZlYXR1cmVOYW1lKTsKQEAgLTExMCwxMCArMTEyLDEwIEBAIHB1YmxpYzoKICAg
ICBXR1BVRnJvbnRGYWNlIGNvbnZlcnRUb0JhY2tpbmcoRnJvbnRGYWNlKTsKICAgICBXR1BVSW5k
ZXhGb3JtYXQgY29udmVydFRvQmFja2luZyhJbmRleEZvcm1hdCk7CiAgICAgV0dQVUxvYWRPcCBj
b252ZXJ0VG9CYWNraW5nKExvYWRPcCk7Ci0gICAgV0dQVVBpcGVsaW5lU3RhdGlzdGljTmFtZSBj
b252ZXJ0VG9CYWNraW5nKFBpcGVsaW5lU3RhdGlzdGljTmFtZSk7CiAgICAgV0dQVVBvd2VyUHJl
ZmVyZW5jZSBjb252ZXJ0VG9CYWNraW5nKFBvd2VyUHJlZmVyZW5jZSk7CiAgICAgV0dQVVByaW1p
dGl2ZVRvcG9sb2d5IGNvbnZlcnRUb0JhY2tpbmcoUHJpbWl0aXZlVG9wb2xvZ3kpOwogICAgIFdH
UFVRdWVyeVR5cGUgY29udmVydFRvQmFja2luZyhRdWVyeVR5cGUpOworICAgIFdHUFVSZW5kZXJQ
YXNzVGltZXN0YW1wTG9jYXRpb24gY29udmVydFRvQmFja2luZyhSZW5kZXJQYXNzVGltZXN0YW1w
TG9jYXRpb24pOwogICAgIFdHUFVTYW1wbGVyQmluZGluZ1R5cGUgY29udmVydFRvQmFja2luZyhT
YW1wbGVyQmluZGluZ1R5cGUpOwogICAgIFdHUFVTdGVuY2lsT3BlcmF0aW9uIGNvbnZlcnRUb0Jh
Y2tpbmcoU3RlbmNpbE9wZXJhdGlvbik7CiAgICAgV0dQVVN0b3JhZ2VUZXh0dXJlQWNjZXNzIGNv
bnZlcnRUb0JhY2tpbmcoU3RvcmFnZVRleHR1cmVBY2Nlc3MpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvUEFML3BhbC9ncmFwaGljcy9XZWJHUFUvSW1wbC9XZWJHUFVEZXZpY2VJbXBsLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvZ3JhcGhpY3MvV2ViR1BVL0ltcGwvV2ViR1BVRGV2
aWNlSW1wbC5jcHAKaW5kZXggYjNmNTU1ZGIzMTc4NWUyZGI2ZDY0MTZjMmY5Mjk2ZWY0MjQwZDgz
Yi4uYjlkYTRlNmMwYzk3MWFmZWFmMmY2YzEwNTRiMmZmM2FjZmNkZjhlOSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvUEFML3BhbC9ncmFwaGljcy9XZWJHUFUvSW1wbC9XZWJHUFVEZXZpY2VJ
bXBsLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL2dyYXBoaWNzL1dlYkdQVS9JbXBs
L1dlYkdQVURldmljZUltcGwuY3BwCkBAIC05OSw4ICs5OSwyMSBAQCBSZWY8VGV4dHVyZT4gRGV2
aWNlSW1wbDo6Y3JlYXRlVGV4dHVyZShjb25zdCBUZXh0dXJlRGVzY3JpcHRvciYgZGVzY3JpcHRv
cikKIAogICAgIGF1dG8gbGFiZWwgPSBkZXNjcmlwdG9yLmxhYmVsLnV0ZjgoKTsKIAorICAgIGF1
dG8gYmFja2luZ1RleHR1cmVGb3JtYXRzID0gZGVzY3JpcHRvci52aWV3Rm9ybWF0cy5tYXAoWyZd
IChUZXh0dXJlRm9ybWF0IHRleHR1cmVGb3JtYXQpIHsKKyAgICAgICAgcmV0dXJuIG1fY29udmVy
dFRvQmFja2luZ0NvbnRleHQtPmNvbnZlcnRUb0JhY2tpbmcodGV4dHVyZUZvcm1hdCk7CisgICAg
fSk7CisKKyAgICBXR1BVVGV4dHVyZURlc2NyaXB0b3JWaWV3Rm9ybWF0cyBiYWNraW5nVmlld0Zv
cm1hdHMgeworICAgICAgICB7CisgICAgICAgICAgICBudWxscHRyLAorICAgICAgICAgICAgc3Rh
dGljX2Nhc3Q8V0dQVVNUeXBlPihXR1BVU1R5cGVFeHRlbmRlZF9UZXh0dXJlRGVzY3JpcHRvclZp
ZXdGb3JtYXRzKSwKKyAgICAgICAgfSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8dWludDMyX3Q+KGJh
Y2tpbmdUZXh0dXJlRm9ybWF0cy5zaXplKCkpLAorICAgICAgICBiYWNraW5nVGV4dHVyZUZvcm1h
dHMuZGF0YSgpLAorICAgIH07CisKICAgICBXR1BVVGV4dHVyZURlc2NyaXB0b3IgYmFja2luZ0Rl
c2NyaXB0b3IgewotICAgICAgICBudWxscHRyLAorICAgICAgICAmYmFja2luZ1ZpZXdGb3JtYXRz
LmNoYWluLAogICAgICAgICBsYWJlbC5kYXRhKCksCiAgICAgICAgIG1fY29udmVydFRvQmFja2lu
Z0NvbnRleHQtPmNvbnZlcnRUZXh0dXJlVXNhZ2VGbGFnc1RvQmFja2luZyhkZXNjcmlwdG9yLnVz
YWdlKSwKICAgICAgICAgbV9jb252ZXJ0VG9CYWNraW5nQ29udGV4dC0+Y29udmVydFRvQmFja2lu
ZyhkZXNjcmlwdG9yLmRpbWVuc2lvbiksCkBAIC0yMzEsOSArMjQ0LDM0IEBAIFJlZjxTaGFkZXJN
b2R1bGU+IERldmljZUltcGw6OmNyZWF0ZVNoYWRlck1vZHVsZShjb25zdCBTaGFkZXJNb2R1bGVE
ZXNjcmlwdG9yJiBkCiAKICAgICBhdXRvIHNvdXJjZSA9IGRlc2NyaXB0b3IuY29kZS51dGY4KCk7
CiAKLSAgICBXR1BVU2hhZGVyTW9kdWxlV0dTTERlc2NyaXB0b3IgYmFja2luZ1dHU0xEZXNjcmlw
dG9yIHsKKyAgICBhdXRvIGVudHJ5UG9pbnRzID0gZGVzY3JpcHRvci5oaW50cy5tYXAoW10gKGNv
bnN0IGF1dG8mIGhpbnQpIHsKKyAgICAgICAgcmV0dXJuIGhpbnQua2V5LnV0ZjgoKTsKKyAgICB9
KTsKKworICAgIFZlY3RvcjxXR1BVU2hhZGVyTW9kdWxlQ29tcGlsYXRpb25IaW50RW50cnk+IGhp
bnRzRW50cmllczsKKyAgICBoaW50c0VudHJpZXMucmVzZXJ2ZUluaXRpYWxDYXBhY2l0eShkZXNj
cmlwdG9yLmhpbnRzLnNpemUoKSk7CisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBkZXNjcmlw
dG9yLmhpbnRzLnNpemUoKTsgKytpKSB7CisgICAgICAgIGNvbnN0IGF1dG8mIGhpbnQgPSBkZXNj
cmlwdG9yLmhpbnRzW2ldLnZhbHVlOworICAgICAgICBoaW50c0VudHJpZXMuYXBwZW5kKFdHUFVT
aGFkZXJNb2R1bGVDb21waWxhdGlvbkhpbnRFbnRyeSB7CisgICAgICAgICAgICBudWxscHRyLAor
ICAgICAgICAgICAgZW50cnlQb2ludHNbaV0uZGF0YSgpLCB7CisgICAgICAgICAgICAgICAgbV9j
b252ZXJ0VG9CYWNraW5nQ29udGV4dC0+Y29udmVydFRvQmFja2luZyhoaW50LnBpcGVsaW5lTGF5
b3V0KSwKKyAgICAgICAgICAgIH0sCisgICAgICAgIH0pOworICAgIH0KKworICAgIFdHUFVTaGFk
ZXJNb2R1bGVEZXNjcmlwdG9ySGludHMgYmFja2luZ1NoYWRlck1vZHVsZUhpbnRzIHsKICAgICAg
ICAgewogICAgICAgICAgICAgbnVsbHB0ciwKKyAgICAgICAgICAgIHN0YXRpY19jYXN0PFdHUFVT
VHlwZT4oV0dQVVNUeXBlRXh0ZW5kZWRfU2hhZGVyTW9kdWxlRGVzY3JpcHRvckhpbnRzKSwKKyAg
ICAgICAgfSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8dWludDMyX3Q+KGhpbnRzRW50cmllcy5zaXpl
KCkpLAorICAgICAgICBoaW50c0VudHJpZXMuZGF0YSgpLAorICAgIH07CisKKyAgICBXR1BVU2hh
ZGVyTW9kdWxlV0dTTERlc2NyaXB0b3IgYmFja2luZ1dHU0xEZXNjcmlwdG9yIHsKKyAgICAgICAg
eworICAgICAgICAgICAgJmJhY2tpbmdTaGFkZXJNb2R1bGVIaW50cy5jaGFpbiwKICAgICAgICAg
ICAgIFdHUFVTVHlwZV9TaGFkZXJNb2R1bGVXR1NMRGVzY3JpcHRvciwKICAgICAgICAgfSwKICAg
ICAgICAgc291cmNlLmRhdGEoKSwKQEAgLTI0OCw3ICsyODYsNyBAQCBSZWY8U2hhZGVyTW9kdWxl
PiBEZXZpY2VJbXBsOjpjcmVhdGVTaGFkZXJNb2R1bGUoY29uc3QgU2hhZGVyTW9kdWxlRGVzY3Jp
cHRvciYgZAogfQogCiB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KLWF1dG8gY29udmVydFRvQmFja2lu
Zyhjb25zdCBDb21wdXRlUGlwZWxpbmVEZXNjcmlwdG9yJiBkZXNjcmlwdG9yLCBDb252ZXJ0VG9C
YWNraW5nQ29udGV4dCYgY29udmVydFRvQmFja2luZ0NvbnRleHQsIFQmJiBjYWxsYmFjaykKK3N0
YXRpYyBhdXRvIGNvbnZlcnRUb0JhY2tpbmcoY29uc3QgQ29tcHV0ZVBpcGVsaW5lRGVzY3JpcHRv
ciYgZGVzY3JpcHRvciwgQ29udmVydFRvQmFja2luZ0NvbnRleHQmIGNvbnZlcnRUb0JhY2tpbmdD
b250ZXh0LCBUJiYgY2FsbGJhY2spCiB7CiAgICAgYXV0byBsYWJlbCA9IGRlc2NyaXB0b3IubGFi
ZWwudXRmOCgpOwogCkBAIC0yOTIsNyArMzMwLDcgQEAgUmVmPENvbXB1dGVQaXBlbGluZT4gRGV2
aWNlSW1wbDo6Y3JlYXRlQ29tcHV0ZVBpcGVsaW5lKGNvbnN0IENvbXB1dGVQaXBlbGluZURlc2MK
IH0KIAogdGVtcGxhdGUgPHR5cGVuYW1lIFQ+Ci1hdXRvIGNvbnZlcnRUb0JhY2tpbmcoY29uc3Qg
UmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9yJiBkZXNjcmlwdG9yLCBDb252ZXJ0VG9CYWNraW5nQ29u
dGV4dCYgY29udmVydFRvQmFja2luZ0NvbnRleHQsIFQmJiBjYWxsYmFjaykKK3N0YXRpYyBhdXRv
IGNvbnZlcnRUb0JhY2tpbmcoY29uc3QgUmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9yJiBkZXNjcmlw
dG9yLCBDb252ZXJ0VG9CYWNraW5nQ29udGV4dCYgY29udmVydFRvQmFja2luZ0NvbnRleHQsIFQm
JiBjYWxsYmFjaykKIHsKICAgICBhdXRvIGxhYmVsID0gZGVzY3JpcHRvci5sYWJlbC51dGY4KCk7
CiAKQEAgLTM4NSwxNiArNDIzLDE2IEBAIGF1dG8gY29udmVydFRvQmFja2luZyhjb25zdCBSZW5k
ZXJQaXBlbGluZURlc2NyaXB0b3ImIGRlc2NyaXB0b3IsIENvbnZlcnRUb0JhY2tpCiAgICAgVmVj
dG9yPHN0ZDo6b3B0aW9uYWw8V0dQVUJsZW5kU3RhdGU+PiBibGVuZFN0YXRlczsKICAgICBpZiAo
ZGVzY3JpcHRvci5mcmFnbWVudCkgewogICAgICAgICBibGVuZFN0YXRlcyA9IGRlc2NyaXB0b3Iu
ZnJhZ21lbnQtPnRhcmdldHMubWFwKFsmY29udmVydFRvQmFja2luZ0NvbnRleHRdIChjb25zdCBh
dXRvJiB0YXJnZXQpIC0+IHN0ZDo6b3B0aW9uYWw8V0dQVUJsZW5kU3RhdGU+IHsKLSAgICAgICAg
ICAgIGlmICh0YXJnZXQuYmxlbmQpIHsKKyAgICAgICAgICAgIGlmICh0YXJnZXQgJiYgdGFyZ2V0
LT5ibGVuZCkgewogICAgICAgICAgICAgICAgIHJldHVybiBXR1BVQmxlbmRTdGF0ZSB7CiAgICAg
ICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIGNvbnZlcnRUb0JhY2tp
bmdDb250ZXh0LmNvbnZlcnRUb0JhY2tpbmcodGFyZ2V0LmJsZW5kLT5jb2xvci5vcGVyYXRpb24p
LAotICAgICAgICAgICAgICAgICAgICAgICAgY29udmVydFRvQmFja2luZ0NvbnRleHQuY29udmVy
dFRvQmFja2luZyh0YXJnZXQuYmxlbmQtPmNvbG9yLnNyY0ZhY3RvciksCi0gICAgICAgICAgICAg
ICAgICAgICAgICBjb252ZXJ0VG9CYWNraW5nQ29udGV4dC5jb252ZXJ0VG9CYWNraW5nKHRhcmdl
dC5ibGVuZC0+Y29sb3IuZHN0RmFjdG9yKSwKKyAgICAgICAgICAgICAgICAgICAgICAgIGNvbnZl
cnRUb0JhY2tpbmdDb250ZXh0LmNvbnZlcnRUb0JhY2tpbmcodGFyZ2V0LT5ibGVuZC0+Y29sb3Iu
b3BlcmF0aW9uKSwKKyAgICAgICAgICAgICAgICAgICAgICAgIGNvbnZlcnRUb0JhY2tpbmdDb250
ZXh0LmNvbnZlcnRUb0JhY2tpbmcodGFyZ2V0LT5ibGVuZC0+Y29sb3Iuc3JjRmFjdG9yKSwKKyAg
ICAgICAgICAgICAgICAgICAgICAgIGNvbnZlcnRUb0JhY2tpbmdDb250ZXh0LmNvbnZlcnRUb0Jh
Y2tpbmcodGFyZ2V0LT5ibGVuZC0+Y29sb3IuZHN0RmFjdG9yKSwKICAgICAgICAgICAgICAgICAg
ICAgfSwgewotICAgICAgICAgICAgICAgICAgICAgICAgY29udmVydFRvQmFja2luZ0NvbnRleHQu
Y29udmVydFRvQmFja2luZyh0YXJnZXQuYmxlbmQtPmFscGhhLm9wZXJhdGlvbiksCi0gICAgICAg
ICAgICAgICAgICAgICAgICBjb252ZXJ0VG9CYWNraW5nQ29udGV4dC5jb252ZXJ0VG9CYWNraW5n
KHRhcmdldC5ibGVuZC0+YWxwaGEuc3JjRmFjdG9yKSwKLSAgICAgICAgICAgICAgICAgICAgICAg
IGNvbnZlcnRUb0JhY2tpbmdDb250ZXh0LmNvbnZlcnRUb0JhY2tpbmcodGFyZ2V0LmJsZW5kLT5h
bHBoYS5kc3RGYWN0b3IpLAorICAgICAgICAgICAgICAgICAgICAgICAgY29udmVydFRvQmFja2lu
Z0NvbnRleHQuY29udmVydFRvQmFja2luZyh0YXJnZXQtPmJsZW5kLT5hbHBoYS5vcGVyYXRpb24p
LAorICAgICAgICAgICAgICAgICAgICAgICAgY29udmVydFRvQmFja2luZ0NvbnRleHQuY29udmVy
dFRvQmFja2luZyh0YXJnZXQtPmJsZW5kLT5hbHBoYS5zcmNGYWN0b3IpLAorICAgICAgICAgICAg
ICAgICAgICAgICAgY29udmVydFRvQmFja2luZ0NvbnRleHQuY29udmVydFRvQmFja2luZyh0YXJn
ZXQtPmJsZW5kLT5hbHBoYS5kc3RGYWN0b3IpLAogICAgICAgICAgICAgICAgICAgICB9CiAgICAg
ICAgICAgICAgICAgfTsKICAgICAgICAgICAgIH0gZWxzZQpAQCAtNDA2LDEzICs0NDQsMjEgQEAg
YXV0byBjb252ZXJ0VG9CYWNraW5nKGNvbnN0IFJlbmRlclBpcGVsaW5lRGVzY3JpcHRvciYgZGVz
Y3JpcHRvciwgQ29udmVydFRvQmFja2kKICAgICBpZiAoZGVzY3JpcHRvci5mcmFnbWVudCkgewog
ICAgICAgICBjb2xvclRhcmdldHMucmVzZXJ2ZUluaXRpYWxDYXBhY2l0eShkZXNjcmlwdG9yLmZy
YWdtZW50LT50YXJnZXRzLnNpemUoKSk7CiAgICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwg
ZGVzY3JpcHRvci5mcmFnbWVudC0+dGFyZ2V0cy5zaXplKCk7ICsraSkgewotICAgICAgICAgICAg
Y29uc3QgYXV0byYgdGFyZ2V0ID0gZGVzY3JpcHRvci5mcmFnbWVudC0+dGFyZ2V0c1tpXTsKLSAg
ICAgICAgICAgIGNvbG9yVGFyZ2V0cy51bmNoZWNrZWRBcHBlbmQoV0dQVUNvbG9yVGFyZ2V0U3Rh
dGUgewotICAgICAgICAgICAgICAgIG51bGxwdHIsCi0gICAgICAgICAgICAgICAgY29udmVydFRv
QmFja2luZ0NvbnRleHQuY29udmVydFRvQmFja2luZyh0YXJnZXQuZm9ybWF0KSwKLSAgICAgICAg
ICAgICAgICBibGVuZFN0YXRlc1tpXSA/ICYqYmxlbmRTdGF0ZXNbaV0gOiBudWxscHRyLAotICAg
ICAgICAgICAgICAgIGNvbnZlcnRUb0JhY2tpbmdDb250ZXh0LmNvbnZlcnRDb2xvcldyaXRlRmxh
Z3NUb0JhY2tpbmcodGFyZ2V0LndyaXRlTWFzayksCi0gICAgICAgICAgICB9KTsKKyAgICAgICAg
ICAgIGlmIChjb25zdCBhdXRvJiB0YXJnZXQgPSBkZXNjcmlwdG9yLmZyYWdtZW50LT50YXJnZXRz
W2ldKSB7CisgICAgICAgICAgICAgICAgY29sb3JUYXJnZXRzLnVuY2hlY2tlZEFwcGVuZChXR1BV
Q29sb3JUYXJnZXRTdGF0ZSB7CisgICAgICAgICAgICAgICAgICAgIG51bGxwdHIsCisgICAgICAg
ICAgICAgICAgICAgIGNvbnZlcnRUb0JhY2tpbmdDb250ZXh0LmNvbnZlcnRUb0JhY2tpbmcodGFy
Z2V0LT5mb3JtYXQpLAorICAgICAgICAgICAgICAgICAgICBibGVuZFN0YXRlc1tpXSA/ICYqYmxl
bmRTdGF0ZXNbaV0gOiBudWxscHRyLAorICAgICAgICAgICAgICAgICAgICBjb252ZXJ0VG9CYWNr
aW5nQ29udGV4dC5jb252ZXJ0Q29sb3JXcml0ZUZsYWdzVG9CYWNraW5nKHRhcmdldC0+d3JpdGVN
YXNrKSwKKyAgICAgICAgICAgICAgICB9KTsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAg
ICAgICAgICAgY29sb3JUYXJnZXRzLnVuY2hlY2tlZEFwcGVuZChXR1BVQ29sb3JUYXJnZXRTdGF0
ZSB7CisgICAgICAgICAgICAgICAgICAgIG51bGxwdHIsCisgICAgICAgICAgICAgICAgICAgIFdH
UFVUZXh0dXJlRm9ybWF0X1VuZGVmaW5lZCwKKyAgICAgICAgICAgICAgICAgICAgbnVsbHB0ciwK
KyAgICAgICAgICAgICAgICAgICAgV0dQVU1hcE1vZGVfTm9uZSwKKyAgICAgICAgICAgICAgICB9
KTsKKyAgICAgICAgICAgIH0KICAgICAgICAgfQogICAgIH0KIApAQCAtNTI4LDcgKzU3NCw3IEBA
IFJlZjxSZW5kZXJCdW5kbGVFbmNvZGVyPiBEZXZpY2VJbXBsOjpjcmVhdGVSZW5kZXJCdW5kbGVF
bmNvZGVyKGNvbnN0IFJlbmRlckJ1bmRsCiAgICAgYXV0byBsYWJlbCA9IGRlc2NyaXB0b3IubGFi
ZWwudXRmOCgpOwogCiAgICAgYXV0byBiYWNraW5nQ29sb3JGb3JtYXRzID0gZGVzY3JpcHRvci5j
b2xvckZvcm1hdHMubWFwKFt0aGlzXSAoYXV0byBjb2xvckZvcm1hdCkgewotICAgICAgICByZXR1
cm4gbV9jb252ZXJ0VG9CYWNraW5nQ29udGV4dC0+Y29udmVydFRvQmFja2luZyhjb2xvckZvcm1h
dCk7CisgICAgICAgIHJldHVybiBjb2xvckZvcm1hdCA/IG1fY29udmVydFRvQmFja2luZ0NvbnRl
eHQtPmNvbnZlcnRUb0JhY2tpbmcoKmNvbG9yRm9ybWF0KSA6IFdHUFVUZXh0dXJlRm9ybWF0X1Vu
ZGVmaW5lZDsKICAgICB9KTsKIAogICAgIFdHUFVSZW5kZXJCdW5kbGVFbmNvZGVyRGVzY3JpcHRv
ciBiYWNraW5nRGVzY3JpcHRvciB7CkBAIC01MzgsNiArNTg0LDggQEAgUmVmPFJlbmRlckJ1bmRs
ZUVuY29kZXI+IERldmljZUltcGw6OmNyZWF0ZVJlbmRlckJ1bmRsZUVuY29kZXIoY29uc3QgUmVu
ZGVyQnVuZGwKICAgICAgICAgYmFja2luZ0NvbG9yRm9ybWF0cy5kYXRhKCksCiAgICAgICAgIGRl
c2NyaXB0b3IuZGVwdGhTdGVuY2lsRm9ybWF0ID8gbV9jb252ZXJ0VG9CYWNraW5nQ29udGV4dC0+
Y29udmVydFRvQmFja2luZygqZGVzY3JpcHRvci5kZXB0aFN0ZW5jaWxGb3JtYXQpIDogV0dQVVRl
eHR1cmVGb3JtYXRfVW5kZWZpbmVkLAogICAgICAgICBkZXNjcmlwdG9yLnNhbXBsZUNvdW50LAor
ICAgICAgICBkZXNjcmlwdG9yLmRlcHRoUmVhZE9ubHksCisgICAgICAgIGRlc2NyaXB0b3Iuc3Rl
bmNpbFJlYWRPbmx5LAogICAgIH07CiAKICAgICByZXR1cm4gUmVuZGVyQnVuZGxlRW5jb2Rlcklt
cGw6OmNyZWF0ZSh3Z3B1RGV2aWNlQ3JlYXRlUmVuZGVyQnVuZGxlRW5jb2RlcihtX2JhY2tpbmcs
ICZiYWNraW5nRGVzY3JpcHRvciksIG1fY29udmVydFRvQmFja2luZ0NvbnRleHQpOwpAQCAtNTQ3
LDE3ICs1OTUsMTMgQEAgUmVmPFF1ZXJ5U2V0PiBEZXZpY2VJbXBsOjpjcmVhdGVRdWVyeVNldChj
b25zdCBRdWVyeVNldERlc2NyaXB0b3ImIGRlc2NyaXB0b3IpCiB7CiAgICAgYXV0byBsYWJlbCA9
IGRlc2NyaXB0b3IubGFiZWwudXRmOCgpOwogCi0gICAgYXV0byBiYWNraW5nUGlwZWxpbmVTdGF0
aXN0aWNzID0gZGVzY3JpcHRvci5waXBlbGluZVN0YXRpc3RpY3MubWFwKFt0aGlzXSAoYXV0byBw
aXBlbGluZVN0YXRpc3RpYykgewotICAgICAgICByZXR1cm4gbV9jb252ZXJ0VG9CYWNraW5nQ29u
dGV4dC0+Y29udmVydFRvQmFja2luZyhwaXBlbGluZVN0YXRpc3RpYyk7Ci0gICAgfSk7Ci0KICAg
ICBXR1BVUXVlcnlTZXREZXNjcmlwdG9yIGJhY2tpbmdEZXNjcmlwdG9yIHsKICAgICAgICAgbnVs
bHB0ciwKICAgICAgICAgbGFiZWwuZGF0YSgpLAogICAgICAgICBtX2NvbnZlcnRUb0JhY2tpbmdD
b250ZXh0LT5jb252ZXJ0VG9CYWNraW5nKGRlc2NyaXB0b3IudHlwZSksCiAgICAgICAgIGRlc2Ny
aXB0b3IuY291bnQsCi0gICAgICAgIGJhY2tpbmdQaXBlbGluZVN0YXRpc3RpY3MuZGF0YSgpLAot
ICAgICAgICBzdGF0aWNfY2FzdDx1aW50MzJfdD4oYmFja2luZ1BpcGVsaW5lU3RhdGlzdGljcy5z
aXplKCkpLAorICAgICAgICBudWxscHRyLAorICAgICAgICAwLAogICAgIH07CiAKICAgICByZXR1
cm4gUXVlcnlTZXRJbXBsOjpjcmVhdGUod2dwdURldmljZUNyZWF0ZVF1ZXJ5U2V0KG1fYmFja2lu
ZywgJmJhY2tpbmdEZXNjcmlwdG9yKSwgbV9jb252ZXJ0VG9CYWNraW5nQ29udGV4dCk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL2dyYXBoaWNzL1dlYkdQVS9JbXBsL1dlYkdQ
VUltcGwuY3BwIGIvU291cmNlL1dlYkNvcmUvUEFML3BhbC9ncmFwaGljcy9XZWJHUFUvSW1wbC9X
ZWJHUFVJbXBsLmNwcAppbmRleCA1ODFkOTI4MDE3MjhjNzI0MzJlNzBiNDNkYmIxY2I5NzUwZDlm
M2YyLi5lNmFmNjlkZTZjYjhlNmY3M2U5NzY1ODI0MjRiZWU5ZDI4ZTUwNmUyIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL2dyYXBoaWNzL1dlYkdQVS9JbXBsL1dlYkdQVUltcGwu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvZ3JhcGhpY3MvV2ViR1BVL0ltcGwvV2Vi
R1BVSW1wbC5jcHAKQEAgLTc2LDcgKzc2LDcgQEAgdm9pZCBHUFVJbXBsOjpyZXF1ZXN0QWRhcHRl
cihjb25zdCBSZXF1ZXN0QWRhcHRlck9wdGlvbnMmIG9wdGlvbnMsIFdURjo6RnVuY3Rpb24KICAg
ICBXR1BVUmVxdWVzdEFkYXB0ZXJPcHRpb25zIGJhY2tpbmdPcHRpb25zIHsKICAgICAgICAgbnVs
bHB0ciwKICAgICAgICAgbnVsbHB0ciwKLSAgICAgICAgb3B0aW9ucy5wb3dlclByZWZlcmVuY2Ug
PyBtX2NvbnZlcnRUb0JhY2tpbmdDb250ZXh0LT5jb252ZXJ0VG9CYWNraW5nKCpvcHRpb25zLnBv
d2VyUHJlZmVyZW5jZSkgOiBzdGF0aWNfY2FzdDxXR1BVUG93ZXJQcmVmZXJlbmNlPihXR1BVUG93
ZXJQcmVmZXJlbmNlX05vUHJlZmVyZW5jZSksCisgICAgICAgIG9wdGlvbnMucG93ZXJQcmVmZXJl
bmNlID8gbV9jb252ZXJ0VG9CYWNraW5nQ29udGV4dC0+Y29udmVydFRvQmFja2luZygqb3B0aW9u
cy5wb3dlclByZWZlcmVuY2UpIDogc3RhdGljX2Nhc3Q8V0dQVVBvd2VyUHJlZmVyZW5jZT4oV0dQ
VVBvd2VyUHJlZmVyZW5jZV9VbmRlZmluZWQpLAogICAgICAgICBvcHRpb25zLmZvcmNlRmFsbGJh
Y2tBZGFwdGVyLAogICAgIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwv
Z3JhcGhpY3MvV2ViR1BVL0ltcGwvV2ViR1BVUmVuZGVyUGFzc0VuY29kZXJJbXBsLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL1BBTC9wYWwvZ3JhcGhpY3MvV2ViR1BVL0ltcGwvV2ViR1BVUmVuZGVyUGFz
c0VuY29kZXJJbXBsLmNwcAppbmRleCBkMmZlNWRmNTI2Y2MzNjBmN2EzZWQyMzNlMzJmMzRjOTNk
MTg2NjE2Li5mNTc3NGQ3ZGI0ZmI4YzE0ZGMxM2Q1MTdhOWJiODc5NzI5OTE2Y2U1IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL2dyYXBoaWNzL1dlYkdQVS9JbXBsL1dlYkdQVVJl
bmRlclBhc3NFbmNvZGVySW1wbC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvUEFML3BhbC9ncmFw
aGljcy9XZWJHUFUvSW1wbC9XZWJHUFVSZW5kZXJQYXNzRW5jb2RlckltcGwuY3BwCkBAIC0xNTYs
MTYgKzE1Niw2IEBAIHZvaWQgUmVuZGVyUGFzc0VuY29kZXJJbXBsOjplbmRPY2NsdXNpb25RdWVy
eSgpCiAgICAgd2dwdVJlbmRlclBhc3NFbmNvZGVyRW5kT2NjbHVzaW9uUXVlcnkobV9iYWNraW5n
KTsKIH0KIAotdm9pZCBSZW5kZXJQYXNzRW5jb2RlckltcGw6OmJlZ2luUGlwZWxpbmVTdGF0aXN0
aWNzUXVlcnkoY29uc3QgUXVlcnlTZXQmIHF1ZXJ5U2V0LCBTaXplMzIgcXVlcnlJbmRleCkKLXsK
LSAgICB3Z3B1UmVuZGVyUGFzc0VuY29kZXJCZWdpblBpcGVsaW5lU3RhdGlzdGljc1F1ZXJ5KG1f
YmFja2luZywgbV9jb252ZXJ0VG9CYWNraW5nQ29udGV4dC0+Y29udmVydFRvQmFja2luZyhxdWVy
eVNldCksIHF1ZXJ5SW5kZXgpOwotfQotCi12b2lkIFJlbmRlclBhc3NFbmNvZGVySW1wbDo6ZW5k
UGlwZWxpbmVTdGF0aXN0aWNzUXVlcnkoKQotewotICAgIHdncHVSZW5kZXJQYXNzRW5jb2RlckVu
ZFBpcGVsaW5lU3RhdGlzdGljc1F1ZXJ5KG1fYmFja2luZyk7Ci19Ci0KIHZvaWQgUmVuZGVyUGFz
c0VuY29kZXJJbXBsOjpleGVjdXRlQnVuZGxlcyhWZWN0b3I8c3RkOjpyZWZlcmVuY2Vfd3JhcHBl
cjxSZW5kZXJCdW5kbGU+PiYmIHJlbmRlckJ1bmRsZXMpCiB7CiAgICAgYXV0byBiYWNraW5nQnVu
ZGxlcyA9IHJlbmRlckJ1bmRsZXMubWFwKFt0aGlzXSAoYXV0byByZW5kZXJCdW5kbGUpIHsKQEAg
LTE3NSw3ICsxNjUsNyBAQCB2b2lkIFJlbmRlclBhc3NFbmNvZGVySW1wbDo6ZXhlY3V0ZUJ1bmRs
ZXMoVmVjdG9yPHN0ZDo6cmVmZXJlbmNlX3dyYXBwZXI8UmVuZGVyQgogICAgIHdncHVSZW5kZXJQ
YXNzRW5jb2RlckV4ZWN1dGVCdW5kbGVzKG1fYmFja2luZywgYmFja2luZ0J1bmRsZXMuc2l6ZSgp
LCBiYWNraW5nQnVuZGxlcy5kYXRhKCkpOwogfQogCi12b2lkIFJlbmRlclBhc3NFbmNvZGVySW1w
bDo6ZW5kUGFzcygpCit2b2lkIFJlbmRlclBhc3NFbmNvZGVySW1wbDo6ZW5kKCkKIHsKICAgICB3
Z3B1UmVuZGVyUGFzc0VuY29kZXJFbmRQYXNzKG1fYmFja2luZyk7CiB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9QQUwvcGFsL2dyYXBoaWNzL1dlYkdQVS9JbXBsL1dlYkdQVVJlbmRlclBh
c3NFbmNvZGVySW1wbC5oIGIvU291cmNlL1dlYkNvcmUvUEFML3BhbC9ncmFwaGljcy9XZWJHUFUv
SW1wbC9XZWJHUFVSZW5kZXJQYXNzRW5jb2RlckltcGwuaAppbmRleCAzZWU5MDcxNDU4Mjk3ZWJh
OWU3MDk4MTdhNjIyOGJmMmUyZWVjZjAyLi4zNGM1MDgyYWM1ODE4NTY3MGI2NmQ2NThkOTBiMjc3
MzQ5ZDgzN2RiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL2dyYXBoaWNzL1dl
YkdQVS9JbXBsL1dlYkdQVVJlbmRlclBhc3NFbmNvZGVySW1wbC5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL1BBTC9wYWwvZ3JhcGhpY3MvV2ViR1BVL0ltcGwvV2ViR1BVUmVuZGVyUGFzc0VuY29kZXJJ
bXBsLmgKQEAgLTk3LDExICs5Nyw4IEBAIHByaXZhdGU6CiAgICAgdm9pZCBiZWdpbk9jY2x1c2lv
blF1ZXJ5KFNpemUzMiBxdWVyeUluZGV4KSBmaW5hbDsKICAgICB2b2lkIGVuZE9jY2x1c2lvblF1
ZXJ5KCkgZmluYWw7CiAKLSAgICB2b2lkIGJlZ2luUGlwZWxpbmVTdGF0aXN0aWNzUXVlcnkoY29u
c3QgUXVlcnlTZXQmLCBTaXplMzIgcXVlcnlJbmRleCkgZmluYWw7Ci0gICAgdm9pZCBlbmRQaXBl
bGluZVN0YXRpc3RpY3NRdWVyeSgpIGZpbmFsOwotCiAgICAgdm9pZCBleGVjdXRlQnVuZGxlcyhW
ZWN0b3I8c3RkOjpyZWZlcmVuY2Vfd3JhcHBlcjxSZW5kZXJCdW5kbGU+PiYmKSBmaW5hbDsKLSAg
ICB2b2lkIGVuZFBhc3MoKSBmaW5hbDsKKyAgICB2b2lkIGVuZCgpIGZpbmFsOwogCiAgICAgdm9p
ZCBzZXRMYWJlbEludGVybmFsKGNvbnN0IFN0cmluZyYpIGZpbmFsOwogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9QQUwvcGFsL2dyYXBoaWNzL1dlYkdQVS9XZWJHUFVCdWZmZXIuaCBiL1Nv
dXJjZS9XZWJDb3JlL1BBTC9wYWwvZ3JhcGhpY3MvV2ViR1BVL1dlYkdQVUJ1ZmZlci5oCmluZGV4
IDNmYWU5NGE0YWJhZmNlYTM5NjAzYzQ4NmQ2YTBhNjdiOGI4ZGU5YWUuLmY3OGMzNDc0MDgzNzUx
OTEyODc4NjNkZmNkYzUxYWMxODc3MzcxMWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1BB
TC9wYWwvZ3JhcGhpY3MvV2ViR1BVL1dlYkdQVUJ1ZmZlci5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L1BBTC9wYWwvZ3JhcGhpY3MvV2ViR1BVL1dlYkdQVUJ1ZmZlci5oCkBAIC00OCwxMiArNDgsMTIg
QEAgcHVibGljOgogICAgICAgICBzZXRMYWJlbEludGVybmFsKG1fbGFiZWwpOwogICAgIH0KIAot
ICAgIHZpcnR1YWwgdm9pZCBtYXBBc3luYyhNYXBNb2RlRmxhZ3MsIHN0ZDo6b3B0aW9uYWw8U2l6
ZTY0PiBvZmZzZXQsIHN0ZDo6b3B0aW9uYWw8U2l6ZTY0PiwgV1RGOjpGdW5jdGlvbjx2b2lkKCk+
JiYpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgbWFwQXN5bmMoTWFwTW9kZUZsYWdzLCBTaXplNjQg
b2Zmc2V0LCBzdGQ6Om9wdGlvbmFsPFNpemU2ND4sIFdURjo6RnVuY3Rpb248dm9pZCgpPiYmKSA9
IDA7CiAgICAgc3RydWN0IE1hcHBlZFJhbmdlIHsKICAgICAgICAgdm9pZCogc291cmNlIHsgbnVs
bHB0ciB9OwogICAgICAgICBzaXplX3QgYnl0ZUxlbmd0aCB7IDAgfTsKICAgICB9OwotICAgIHZp
cnR1YWwgTWFwcGVkUmFuZ2UgZ2V0TWFwcGVkUmFuZ2Uoc3RkOjpvcHRpb25hbDxTaXplNjQ+IG9m
ZnNldCwgc3RkOjpvcHRpb25hbDxTaXplNjQ+KSA9IDA7CisgICAgdmlydHVhbCBNYXBwZWRSYW5n
ZSBnZXRNYXBwZWRSYW5nZShTaXplNjQgb2Zmc2V0LCBzdGQ6Om9wdGlvbmFsPFNpemU2ND4pID0g
MDsKICAgICB2aXJ0dWFsIHZvaWQgdW5tYXAoKSA9IDA7CiAKICAgICB2aXJ0dWFsIHZvaWQgZGVz
dHJveSgpID0gMDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvZ3JhcGhpY3Mv
V2ViR1BVL1dlYkdQVUNhbnZhc0NvbmZpZ3VyYXRpb24uaCBiL1NvdXJjZS9XZWJDb3JlL1BBTC9w
YWwvZ3JhcGhpY3MvV2ViR1BVL1dlYkdQVUNhbnZhc0NvbmZpZ3VyYXRpb24uaAppbmRleCBhZjkz
N2YwOWM5YTAxZDRmNTg1MzEyOWRkYjEzZGQ5NDMwMGI5M2VjLi5mZWRiMjQxNmNjMmE4ZTEzNGUx
OWRjNDhmZWRiMDIxOTM0Yzc0OWZlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFs
L2dyYXBoaWNzL1dlYkdQVS9XZWJHUFVDYW52YXNDb25maWd1cmF0aW9uLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvUEFML3BhbC9ncmFwaGljcy9XZWJHUFUvV2ViR1BVQ2FudmFzQ29uZmlndXJhdGlv
bi5oCkBAIC00Miw2ICs0Miw3IEBAIHN0cnVjdCBDYW52YXNDb25maWd1cmF0aW9uIHsKICAgICBE
ZXZpY2UmIGRldmljZTsKICAgICBUZXh0dXJlRm9ybWF0IGZvcm1hdCB7IFRleHR1cmVGb3JtYXQ6
OlI4dW5vcm0gfTsKICAgICBUZXh0dXJlVXNhZ2VGbGFncyB1c2FnZSB7IFRleHR1cmVVc2FnZTo6
UmVuZGVyQXR0YWNobWVudCB9OworICAgIFZlY3RvcjxUZXh0dXJlRm9ybWF0PiB2aWV3Rm9ybWF0
czsKICAgICBQcmVkZWZpbmVkQ29sb3JTcGFjZSBjb2xvclNwYWNlIHsgUHJlZGVmaW5lZENvbG9y
U3BhY2U6OlNSR0IgfTsKICAgICBDYW52YXNDb21wb3NpdGluZ0FscGhhTW9kZSBjb21wb3NpdGlu
Z0FscGhhTW9kZSB7IENhbnZhc0NvbXBvc2l0aW5nQWxwaGFNb2RlOjpPcGFxdWUgfTsKICAgICBz
dGQ6Om9wdGlvbmFsPEV4dGVudDNEPiBzaXplOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
UEFML3BhbC9ncmFwaGljcy9XZWJHUFUvV2ViR1BVQ29tbWFuZEVuY29kZXIuaCBiL1NvdXJjZS9X
ZWJDb3JlL1BBTC9wYWwvZ3JhcGhpY3MvV2ViR1BVL1dlYkdQVUNvbW1hbmRFbmNvZGVyLmgKaW5k
ZXggODgyNzk0OTY4OTNjOGVhODRjZmQ5YzBhN2NkNmNhZWUxMTY0Y2I3Zi4uYjQ3MWEzMDM5OGNj
ODczZTRlNjZkMjkyYzY3Y2ZiZmZiNzNiNjg4OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
UEFML3BhbC9ncmFwaGljcy9XZWJHUFUvV2ViR1BVQ29tbWFuZEVuY29kZXIuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9QQUwvcGFsL2dyYXBoaWNzL1dlYkdQVS9XZWJHUFVDb21tYW5kRW5jb2Rlci5o
CkBAIC04MiwxMCArODIsMTAgQEAgcHVibGljOgogICAgICAgICBjb25zdCBJbWFnZUNvcHlUZXh0
dXJlJiBkZXN0aW5hdGlvbiwKICAgICAgICAgY29uc3QgRXh0ZW50M0QmIGNvcHlTaXplKSA9IDA7
CiAKLSAgICB2aXJ0dWFsIHZvaWQgZmlsbEJ1ZmZlcigKLSAgICAgICAgY29uc3QgQnVmZmVyJiBk
ZXN0aW5hdGlvbiwKLSAgICAgICAgU2l6ZTY0IGRlc3RpbmF0aW9uT2Zmc2V0LAotICAgICAgICBT
aXplNjQpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgY2xlYXJCdWZmZXIoCisgICAgICAgIGNvbnN0
IEJ1ZmZlciYsCisgICAgICAgIFNpemU2NCBvZmZzZXQgPSAwLAorICAgICAgICBzdGQ6Om9wdGlv
bmFsPFNpemU2ND4gPSBzdGQ6Om51bGxvcHQpID0gMDsKIAogICAgIHZpcnR1YWwgdm9pZCBwdXNo
RGVidWdHcm91cChTdHJpbmcmJiBncm91cExhYmVsKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIHBv
cERlYnVnR3JvdXAoKSA9IDA7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL2dy
YXBoaWNzL1dlYkdQVS9XZWJHUFVDb21wdXRlUGFzc0VuY29kZXIuaCBiL1NvdXJjZS9XZWJDb3Jl
L1BBTC9wYWwvZ3JhcGhpY3MvV2ViR1BVL1dlYkdQVUNvbXB1dGVQYXNzRW5jb2Rlci5oCmluZGV4
IGY0OWU3OGZiYWQ5MTYzY2NlZWQ4ZjgwODg0MTU3OGM5ZjRkYTViOTIuLmYyZjY0YmQwYjFlMmQ3
ZDZlMDk2ZTExMjc3MDJiMjdlM2RkYzA1ODcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1BB
TC9wYWwvZ3JhcGhpY3MvV2ViR1BVL1dlYkdQVUNvbXB1dGVQYXNzRW5jb2Rlci5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL1BBTC9wYWwvZ3JhcGhpY3MvV2ViR1BVL1dlYkdQVUNvbXB1dGVQYXNzRW5j
b2Rlci5oCkBAIC01MywxMyArNTMsMTAgQEAgcHVibGljOgogICAgIH0KIAogICAgIHZpcnR1YWwg
dm9pZCBzZXRQaXBlbGluZShjb25zdCBDb21wdXRlUGlwZWxpbmUmKSA9IDA7Ci0gICAgdmlydHVh
bCB2b2lkIGRpc3BhdGNoKFNpemUzMiB4LCBzdGQ6Om9wdGlvbmFsPFNpemUzMj4geSwgc3RkOjpv
cHRpb25hbDxTaXplMzI+KSA9IDA7CisgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoKFNpemUzMiB3
b3JrZ3JvdXBDb3VudFgsIFNpemUzMiB3b3JrZ3JvdXBDb3VudFkgPSAxLCBTaXplMzIgd29ya2dy
b3VwQ291bnRaID0gMSkgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaEluZGlyZWN0KGNv
bnN0IEJ1ZmZlciYgaW5kaXJlY3RCdWZmZXIsIFNpemU2NCBpbmRpcmVjdE9mZnNldCkgPSAwOwog
Ci0gICAgdmlydHVhbCB2b2lkIGJlZ2luUGlwZWxpbmVTdGF0aXN0aWNzUXVlcnkoY29uc3QgUXVl
cnlTZXQmLCBTaXplMzIgcXVlcnlJbmRleCkgPSAwOwotICAgIHZpcnR1YWwgdm9pZCBlbmRQaXBl
bGluZVN0YXRpc3RpY3NRdWVyeSgpID0gMDsKLQotICAgIHZpcnR1YWwgdm9pZCBlbmRQYXNzKCkg
PSAwOworICAgIHZpcnR1YWwgdm9pZCBlbmQoKSA9IDA7CiAKICAgICB2aXJ0dWFsIHZvaWQgc2V0
QmluZEdyb3VwKEluZGV4MzIsIGNvbnN0IEJpbmRHcm91cCYsCiAgICAgICAgIHN0ZDo6b3B0aW9u
YWw8VmVjdG9yPEJ1ZmZlckR5bmFtaWNPZmZzZXQ+PiYmKSA9IDA7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9QQUwvcGFsL2dyYXBoaWNzL1dlYkdQVS9XZWJHUFVGZWF0dXJlTmFtZS5oIGIv
U291cmNlL1dlYkNvcmUvUEFML3BhbC9ncmFwaGljcy9XZWJHUFUvV2ViR1BVRmVhdHVyZU5hbWUu
aAppbmRleCA2YTMzNTg5ZDg5NDlmYTg0NzZjMTRkYjdmZDM1ODQ5YWZmNzNmMzk1Li5mMWIzNTFi
OWE0YTQ3Njg3ZTA1ODVlN2ViNTg2ZTcxNDgxMTFmZGE1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9QQUwvcGFsL2dyYXBoaWNzL1dlYkdQVS9XZWJHUFVGZWF0dXJlTmFtZS5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL1BBTC9wYWwvZ3JhcGhpY3MvV2ViR1BVL1dlYkdQVUZlYXR1cmVOYW1lLmgK
QEAgLTM0LDcgKzM0LDYgQEAgZW51bSBjbGFzcyBGZWF0dXJlTmFtZSA6IHVpbnQ4X3QgewogICAg
IERlcHRoQ2xpcENvbnRyb2wsCiAgICAgRGVwdGgyNHVub3JtU3RlbmNpbDgsCiAgICAgRGVwdGgz
MmZsb2F0U3RlbmNpbDgsCi0gICAgUGlwZWxpbmVTdGF0aXN0aWNzUXVlcnksCiAgICAgVGV4dHVy
ZUNvbXByZXNzaW9uQmMsCiAgICAgVGV4dHVyZUNvbXByZXNzaW9uRXRjMiwKICAgICBUZXh0dXJl
Q29tcHJlc3Npb25Bc3RjLApAQCAtNTIsNyArNTEsNiBAQCB0ZW1wbGF0ZTw+IHN0cnVjdCBFbnVt
VHJhaXRzPFBBTDo6V2ViR1BVOjpGZWF0dXJlTmFtZT4gewogICAgICAgICBQQUw6OldlYkdQVTo6
RmVhdHVyZU5hbWU6OkRlcHRoQ2xpcENvbnRyb2wsCiAgICAgICAgIFBBTDo6V2ViR1BVOjpGZWF0
dXJlTmFtZTo6RGVwdGgyNHVub3JtU3RlbmNpbDgsCiAgICAgICAgIFBBTDo6V2ViR1BVOjpGZWF0
dXJlTmFtZTo6RGVwdGgzMmZsb2F0U3RlbmNpbDgsCi0gICAgICAgIFBBTDo6V2ViR1BVOjpGZWF0
dXJlTmFtZTo6UGlwZWxpbmVTdGF0aXN0aWNzUXVlcnksCiAgICAgICAgIFBBTDo6V2ViR1BVOjpG
ZWF0dXJlTmFtZTo6VGV4dHVyZUNvbXByZXNzaW9uQmMsCiAgICAgICAgIFBBTDo6V2ViR1BVOjpG
ZWF0dXJlTmFtZTo6VGV4dHVyZUNvbXByZXNzaW9uRXRjMiwKICAgICAgICAgUEFMOjpXZWJHUFU6
OkZlYXR1cmVOYW1lOjpUZXh0dXJlQ29tcHJlc3Npb25Bc3RjLApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvUEFML3BhbC9ncmFwaGljcy9XZWJHUFUvV2ViR1BVRnJhZ21lbnRTdGF0ZS5oIGIv
U291cmNlL1dlYkNvcmUvUEFML3BhbC9ncmFwaGljcy9XZWJHUFUvV2ViR1BVRnJhZ21lbnRTdGF0
ZS5oCmluZGV4IDhhNzBmMDkyOWEwN2NjMTRkNjNiMmE1MDU3ODY5N2U3YzA2YmRjNTUuLmMyMjk1
NGUwNzE0YzZkMjliYzBjZjZhOGMzYjU3ZTRlYmE0MDVlNzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL1BBTC9wYWwvZ3JhcGhpY3MvV2ViR1BVL1dlYkdQVUZyYWdtZW50U3RhdGUuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL2dyYXBoaWNzL1dlYkdQVS9XZWJHUFVGcmFnbWVudFN0
YXRlLmgKQEAgLTI3LDEyICsyNywxMyBAQAogCiAjaW5jbHVkZSAiV2ViR1BVQ29sb3JUYXJnZXRT
dGF0ZS5oIgogI2luY2x1ZGUgIldlYkdQVVByb2dyYW1tYWJsZVN0YWdlLmgiCisjaW5jbHVkZSA8
b3B0aW9uYWw+CiAjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgogCiBuYW1lc3BhY2UgUEFMOjpXZWJH
UFUgewogCiBzdHJ1Y3QgRnJhZ21lbnRTdGF0ZSA6IHB1YmxpYyBQcm9ncmFtbWFibGVTdGFnZSB7
Ci0gICAgVmVjdG9yPENvbG9yVGFyZ2V0U3RhdGU+IHRhcmdldHM7CisgICAgVmVjdG9yPHN0ZDo6
b3B0aW9uYWw8Q29sb3JUYXJnZXRTdGF0ZT4+IHRhcmdldHM7CiB9OwogCiB9IC8vIG5hbWVzcGFj
ZSBQQUw6OldlYkdQVQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvUEFML3BhbC9ncmFwaGlj
cy9XZWJHUFUvV2ViR1BVSW1hZ2VDb3B5RXh0ZXJuYWxJbWFnZS5oIGIvU291cmNlL1dlYkNvcmUv
UEFML3BhbC9ncmFwaGljcy9XZWJHUFUvV2ViR1BVSW1hZ2VDb3B5RXh0ZXJuYWxJbWFnZS5oCmlu
ZGV4IDk1NWYwOTdkY2YwMGQ0MDFkMDA5NjA3ODBmYTNiMjY2OGNlNWY0YTcuLjA1NzEyZDVjMjAw
MDFmZjYwMDBlOGY2MTlmYmVmMzE1YmU0N2EyNTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L1BBTC9wYWwvZ3JhcGhpY3MvV2ViR1BVL1dlYkdQVUltYWdlQ29weUV4dGVybmFsSW1hZ2UuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL2dyYXBoaWNzL1dlYkdQVS9XZWJHUFVJbWFnZUNv
cHlFeHRlcm5hbEltYWdlLmgKQEAgLTM0LDYgKzM0LDcgQEAgbmFtZXNwYWNlIFBBTDo6V2ViR1BV
IHsKIHN0cnVjdCBJbWFnZUNvcHlFeHRlcm5hbEltYWdlIHsKICAgICAvLyBGSVhNRTogSGFuZGxl
IHRoZSBzb3VyY2UuCiAgICAgc3RkOjpvcHRpb25hbDxPcmlnaW4yRD4gb3JpZ2luOworICAgIGJv
b2wgZmxpcFkgeyBmYWxzZSB9OwogfTsKIAogfSAvLyBuYW1lc3BhY2UgUEFMOjpXZWJHUFUKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvZ3JhcGhpY3MvV2ViR1BVL1dlYkdQVUxv
YWRPcC5oIGIvU291cmNlL1dlYkNvcmUvUEFML3BhbC9ncmFwaGljcy9XZWJHUFUvV2ViR1BVTG9h
ZE9wLmgKaW5kZXggZGM4MjYwZDczMzBkNjhkODQ4NWVhNzY5ZjJkMGVjMGVhNTkwMTQxYi4uYjBm
ODhhOTJhNjU1ZmZmZGQyMmVmNDYzMDU3NTdjNjE2ZmJiYWQ5ZSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvUEFML3BhbC9ncmFwaGljcy9XZWJHUFUvV2ViR1BVTG9hZE9wLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvUEFML3BhbC9ncmFwaGljcy9XZWJHUFUvV2ViR1BVTG9hZE9wLmgKQEAgLTMy
LDYgKzMyLDcgQEAgbmFtZXNwYWNlIFBBTDo6V2ViR1BVIHsKIAogZW51bSBjbGFzcyBMb2FkT3Ag
OiB1aW50OF90IHsKICAgICBMb2FkLAorICAgIENsZWFyLAogfTsKIAogfSAvLyBuYW1lc3BhY2Ug
UEFMOjpXZWJHUFUKQEAgLTQxLDcgKzQyLDggQEAgbmFtZXNwYWNlIFdURiB7CiB0ZW1wbGF0ZTw+
IHN0cnVjdCBFbnVtVHJhaXRzPFBBTDo6V2ViR1BVOjpMb2FkT3A+IHsKICAgICB1c2luZyB2YWx1
ZXMgPSBFbnVtVmFsdWVzPAogICAgICAgICBQQUw6OldlYkdQVTo6TG9hZE9wLAotICAgICAgICBQ
QUw6OldlYkdQVTo6TG9hZE9wOjpMb2FkCisgICAgICAgIFBBTDo6V2ViR1BVOjpMb2FkT3A6Okxv
YWQsCisgICAgICAgIFBBTDo6V2ViR1BVOjpMb2FkT3A6OkNsZWFyCiAgICAgPjsKIH07CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvZ3JhcGhpY3MvV2ViR1BVL1dlYkdQVVBp
cGVsaW5lU3RhdGlzdGljTmFtZS5oIGIvU291cmNlL1dlYkNvcmUvUEFML3BhbC9ncmFwaGljcy9X
ZWJHUFUvV2ViR1BVUGlwZWxpbmVTdGF0aXN0aWNOYW1lLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IGJmOTNmNjc5MDA0YWRjNjAzMDc1OWU1ZWMzOTM3OGFkZDVkOTRjNmIuLjAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUv
UEFML3BhbC9ncmFwaGljcy9XZWJHUFUvV2ViR1BVUGlwZWxpbmVTdGF0aXN0aWNOYW1lLmgKKysr
IC9kZXYvbnVsbApAQCAtMSw1NiArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDIxIEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJ
UycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9S
UwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BF
Q0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwot
ICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0g
KiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI3ByYWdtYSBvbmNlCi0K
LSNpbmNsdWRlIDxjc3RkaW50PgotI2luY2x1ZGUgPHd0Zi9FbnVtVHJhaXRzLmg+Ci0KLW5hbWVz
cGFjZSBQQUw6OldlYkdQVSB7Ci0KLWVudW0gY2xhc3MgUGlwZWxpbmVTdGF0aXN0aWNOYW1lIDog
dWludDhfdCB7Ci0gICAgVmVydGV4U2hhZGVySW52b2NhdGlvbnMsCi0gICAgQ2xpcHBlckludm9j
YXRpb25zLAotICAgIENsaXBwZXJQcmltaXRpdmVzT3V0LAotICAgIEZyYWdtZW50U2hhZGVySW52
b2NhdGlvbnMsCi0gICAgQ29tcHV0ZVNoYWRlckludm9jYXRpb25zLAotfTsKLQotfSAvLyBuYW1l
c3BhY2UgUEFMOjpXZWJHUFUKLQotbmFtZXNwYWNlIFdURiB7Ci0KLXRlbXBsYXRlPD4gc3RydWN0
IEVudW1UcmFpdHM8UEFMOjpXZWJHUFU6OlBpcGVsaW5lU3RhdGlzdGljTmFtZT4gewotICAgIHVz
aW5nIHZhbHVlcyA9IEVudW1WYWx1ZXM8Ci0gICAgICAgIFBBTDo6V2ViR1BVOjpQaXBlbGluZVN0
YXRpc3RpY05hbWUsCi0gICAgICAgIFBBTDo6V2ViR1BVOjpQaXBlbGluZVN0YXRpc3RpY05hbWU6
OlZlcnRleFNoYWRlckludm9jYXRpb25zLAotICAgICAgICBQQUw6OldlYkdQVTo6UGlwZWxpbmVT
dGF0aXN0aWNOYW1lOjpDbGlwcGVySW52b2NhdGlvbnMsCi0gICAgICAgIFBBTDo6V2ViR1BVOjpQ
aXBlbGluZVN0YXRpc3RpY05hbWU6OkNsaXBwZXJQcmltaXRpdmVzT3V0LAotICAgICAgICBQQUw6
OldlYkdQVTo6UGlwZWxpbmVTdGF0aXN0aWNOYW1lOjpGcmFnbWVudFNoYWRlckludm9jYXRpb25z
LAotICAgICAgICBQQUw6OldlYkdQVTo6UGlwZWxpbmVTdGF0aXN0aWNOYW1lOjpDb21wdXRlU2hh
ZGVySW52b2NhdGlvbnMKLSAgICA+OwotfTsKLQotfSAvLyBuYW1lc3BhY2UgV1RGCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL2dyYXBoaWNzL1dlYkdQVS9XZWJHUFVRdWVyeVNl
dERlc2NyaXB0b3IuaCBiL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvZ3JhcGhpY3MvV2ViR1BVL1dl
YkdQVVF1ZXJ5U2V0RGVzY3JpcHRvci5oCmluZGV4IDg3OTEwOTA3Mjc1NjQ2MmJhZWMxMWY0Nzhk
ZDQ0NDU2ZjA5NTVmZDcuLjFhNTVjYTc3YmJkZmMwZDFmYmU2Yjk3YjU5MzIyNWMyMTQ5NjEwOGIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvZ3JhcGhpY3MvV2ViR1BVL1dlYkdQ
VVF1ZXJ5U2V0RGVzY3JpcHRvci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvZ3JhcGhp
Y3MvV2ViR1BVL1dlYkdQVVF1ZXJ5U2V0RGVzY3JpcHRvci5oCkBAIC0yNyw3ICsyNyw2IEBACiAK
ICNpbmNsdWRlICJXZWJHUFVJbnRlZ3JhbFR5cGVzLmgiCiAjaW5jbHVkZSAiV2ViR1BVT2JqZWN0
RGVzY3JpcHRvckJhc2UuaCIKLSNpbmNsdWRlICJXZWJHUFVQaXBlbGluZVN0YXRpc3RpY05hbWUu
aCIKICNpbmNsdWRlICJXZWJHUFVRdWVyeVR5cGUuaCIKICNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+
CiAKQEAgLTM2LDcgKzM1LDYgQEAgbmFtZXNwYWNlIFBBTDo6V2ViR1BVIHsKIHN0cnVjdCBRdWVy
eVNldERlc2NyaXB0b3IgOiBwdWJsaWMgT2JqZWN0RGVzY3JpcHRvckJhc2UgewogICAgIFF1ZXJ5
VHlwZSB0eXBlIHsgUXVlcnlUeXBlOjpPY2NsdXNpb24gfTsKICAgICBTaXplMzIgY291bnQgeyAw
IH07Ci0gICAgVmVjdG9yPFBpcGVsaW5lU3RhdGlzdGljTmFtZT4gcGlwZWxpbmVTdGF0aXN0aWNz
OwogfTsKIAogfSAvLyBuYW1lc3BhY2UgUEFMOjpXZWJHUFUKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL1BBTC9wYWwvZ3JhcGhpY3MvV2ViR1BVL1dlYkdQVVF1ZXJ5VHlwZS5oIGIvU291cmNl
L1dlYkNvcmUvUEFML3BhbC9ncmFwaGljcy9XZWJHUFUvV2ViR1BVUXVlcnlUeXBlLmgKaW5kZXgg
Y2MzMGQ0ODgzZmYyZGUwNmVkOWQ4YmM4Yzk5MmM1ZGI4MWM2M2RlNC4uYjJhYTVhZjVhYzEyMjE5
MDY0NjUyMzNjMzAyYWY4ODhlMmYzY2JlZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvUEFM
L3BhbC9ncmFwaGljcy9XZWJHUFUvV2ViR1BVUXVlcnlUeXBlLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvUEFML3BhbC9ncmFwaGljcy9XZWJHUFUvV2ViR1BVUXVlcnlUeXBlLmgKQEAgLTMyLDcgKzMy
LDYgQEAgbmFtZXNwYWNlIFBBTDo6V2ViR1BVIHsKIAogZW51bSBjbGFzcyBRdWVyeVR5cGUgOiB1
aW50OF90IHsKICAgICBPY2NsdXNpb24sCi0gICAgUGlwZWxpbmVTdGF0aXN0aWNzLAogICAgIFRp
bWVzdGFtcCwKIH07CiAKQEAgLTQ0LDcgKzQzLDYgQEAgdGVtcGxhdGU8PiBzdHJ1Y3QgRW51bVRy
YWl0czxQQUw6OldlYkdQVTo6UXVlcnlUeXBlPiB7CiAgICAgdXNpbmcgdmFsdWVzID0gRW51bVZh
bHVlczwKICAgICAgICAgUEFMOjpXZWJHUFU6OlF1ZXJ5VHlwZSwKICAgICAgICAgUEFMOjpXZWJH
UFU6OlF1ZXJ5VHlwZTo6T2NjbHVzaW9uLAotICAgICAgICBQQUw6OldlYkdQVTo6UXVlcnlUeXBl
OjpQaXBlbGluZVN0YXRpc3RpY3MsCiAgICAgICAgIFBBTDo6V2ViR1BVOjpRdWVyeVR5cGU6OlRp
bWVzdGFtcAogICAgID47CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvUEFML3BhbC9n
cmFwaGljcy9XZWJHUFUvV2ViR1BVUXVldWUuaCBiL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvZ3Jh
cGhpY3MvV2ViR1BVL1dlYkdQVVF1ZXVlLmgKaW5kZXggNmY4ZjhmODEwYjhkMDFhMTI4YzZiZGVm
Y2RlMzJjZjVhNDA5MjM4YS4uNjQ4NjZlOGU2YTQ3OTZlOTEyYjk4NzVkM2Q2YmI1ZWY3MTE2NGEx
NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvUEFML3BhbC9ncmFwaGljcy9XZWJHUFUvV2Vi
R1BVUXVldWUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL2dyYXBoaWNzL1dlYkdQVS9X
ZWJHUFVRdWV1ZS5oCkBAIC02Niw4ICs2Niw4IEBAIHB1YmxpYzoKICAgICAgICAgU2l6ZTY0IGJ1
ZmZlck9mZnNldCwKICAgICAgICAgY29uc3Qgdm9pZCogc291cmNlLAogICAgICAgICBzaXplX3Qg
Ynl0ZUxlbmd0aCwKLSAgICAgICAgU2l6ZTY0IGRhdGFPZmZzZXQsCi0gICAgICAgIHN0ZDo6b3B0
aW9uYWw8U2l6ZTY0PikgPSAwOworICAgICAgICBTaXplNjQgZGF0YU9mZnNldCA9IDAsCisgICAg
ICAgIHN0ZDo6b3B0aW9uYWw8U2l6ZTY0PiA9IHN0ZDo6bnVsbG9wdCkgPSAwOwogCiAgICAgdmly
dHVhbCB2b2lkIHdyaXRlVGV4dHVyZSgKICAgICAgICAgY29uc3QgSW1hZ2VDb3B5VGV4dHVyZSYg
ZGVzdGluYXRpb24sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL2dyYXBoaWNz
L1dlYkdQVS9XZWJHUFVSZW5kZXJQYXNzQ29sb3JBdHRhY2htZW50LmggYi9Tb3VyY2UvV2ViQ29y
ZS9QQUwvcGFsL2dyYXBoaWNzL1dlYkdQVS9XZWJHUFVSZW5kZXJQYXNzQ29sb3JBdHRhY2htZW50
LmgKaW5kZXggMjgzODEzNTYwN2ZjYWJhNTJlMTkxYzBiMjU0ZDM2NDhiYjMzOTUzNi4uZDc5ODIx
M2FkNDFiMDgwYTM0NjI1Yzk4MGVhZjFkMGQ0MmVjZmY5OCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvUEFML3BhbC9ncmFwaGljcy9XZWJHUFUvV2ViR1BVUmVuZGVyUGFzc0NvbG9yQXR0YWNo
bWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvZ3JhcGhpY3MvV2ViR1BVL1dlYkdQ
VVJlbmRlclBhc3NDb2xvckF0dGFjaG1lbnQuaApAQCAtNDAsNyArNDAsOCBAQCBzdHJ1Y3QgUmVu
ZGVyUGFzc0NvbG9yQXR0YWNobWVudCB7CiAgICAgVGV4dHVyZVZpZXcmIHZpZXc7CiAgICAgVGV4
dHVyZVZpZXcqIHJlc29sdmVUYXJnZXQgeyBudWxscHRyIH07CiAKLSAgICBzdGQ6OnZhcmlhbnQ8
TG9hZE9wLCBWZWN0b3I8ZG91YmxlPiwgQ29sb3JEaWN0PiBsb2FkVmFsdWU7CisgICAgc3RkOjpv
cHRpb25hbDxDb2xvcj4gY2xlYXJWYWx1ZTsKKyAgICBMb2FkT3AgbG9hZE9wIHsgTG9hZE9wOjpM
b2FkIH07CiAgICAgU3RvcmVPcCBzdG9yZU9wIHsgU3RvcmVPcDo6U3RvcmUgfTsKIH07CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvZ3JhcGhpY3MvV2ViR1BVL1dlYkdQVVJl
bmRlclBhc3NEZXB0aFN0ZW5jaWxBdHRhY2htZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFs
L2dyYXBoaWNzL1dlYkdQVS9XZWJHUFVSZW5kZXJQYXNzRGVwdGhTdGVuY2lsQXR0YWNobWVudC5o
CmluZGV4IGI0MzBlNDUyNjEwZDZlMTk2ZDUwMjIyOTE0ODZhMTVjNWFjN2Q0Y2YuLjgzYjI3MDZk
NDFlMjdjMjg5YzQ0Y2JmZWIyNThkNzBhZDRiM2NkMWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL1BBTC9wYWwvZ3JhcGhpY3MvV2ViR1BVL1dlYkdQVVJlbmRlclBhc3NEZXB0aFN0ZW5jaWxB
dHRhY2htZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvUEFML3BhbC9ncmFwaGljcy9XZWJHUFUv
V2ViR1BVUmVuZGVyUGFzc0RlcHRoU3RlbmNpbEF0dGFjaG1lbnQuaApAQCAtMzgsMTIgKzM4LDE0
IEBAIGNsYXNzIFRleHR1cmVWaWV3Owogc3RydWN0IFJlbmRlclBhc3NEZXB0aFN0ZW5jaWxBdHRh
Y2htZW50IHsKICAgICBUZXh0dXJlVmlldyYgdmlldzsKIAotICAgIHN0ZDo6dmFyaWFudDxMb2Fk
T3AsIGZsb2F0PiBkZXB0aExvYWRWYWx1ZTsKLSAgICBTdG9yZU9wIGRlcHRoU3RvcmVPcCB7IFN0
b3JlT3A6OlN0b3JlIH07CisgICAgZmxvYXQgZGVwdGhDbGVhclZhbHVlIHsgMCB9OworICAgIHN0
ZDo6b3B0aW9uYWw8TG9hZE9wPiBkZXB0aExvYWRPcDsKKyAgICBzdGQ6Om9wdGlvbmFsPFN0b3Jl
T3A+IGRlcHRoU3RvcmVPcDsKICAgICBib29sIGRlcHRoUmVhZE9ubHkgeyBmYWxzZSB9OwogCi0g
ICAgc3RkOjp2YXJpYW50PExvYWRPcCwgU3RlbmNpbFZhbHVlPiBzdGVuY2lsTG9hZFZhbHVlOwot
ICAgIFN0b3JlT3Agc3RlbmNpbFN0b3JlT3AgeyBTdG9yZU9wOjpTdG9yZSB9OworICAgIFN0ZW5j
aWxWYWx1ZSBzdGVuY2lsQ2xlYXJWYWx1ZSB7IDAgfTsKKyAgICBzdGQ6Om9wdGlvbmFsPExvYWRP
cD4gc3RlbmNpbExvYWRPcDsKKyAgICBzdGQ6Om9wdGlvbmFsPFN0b3JlT3A+IHN0ZW5jaWxTdG9y
ZU9wOwogICAgIGJvb2wgc3RlbmNpbFJlYWRPbmx5IHsgZmFsc2UgfTsKIH07CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvZ3JhcGhpY3MvV2ViR1BVL1dlYkdQVVJlbmRlclBh
c3NEZXNjcmlwdG9yLmggYi9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL2dyYXBoaWNzL1dlYkdQVS9X
ZWJHUFVSZW5kZXJQYXNzRGVzY3JpcHRvci5oCmluZGV4IDBmYWZlYjQ0NjU1ODYzZjhlNzAzMzc0
YWVjZTAxZmJiZmRhMDYxY2UuLjY2MDkwY2RjM2NkZGQzZTg3NTA4ZDJlODNhMzg4MjEwODVhMjc3
OTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvZ3JhcGhpY3MvV2ViR1BVL1dl
YkdQVVJlbmRlclBhc3NEZXNjcmlwdG9yLmgKKysrIGIvU291cmNlL1dlYkNvcmUvUEFML3BhbC9n
cmFwaGljcy9XZWJHUFUvV2ViR1BVUmVuZGVyUGFzc0Rlc2NyaXB0b3IuaApAQCAtMzYsNyArMzYs
NyBAQAogbmFtZXNwYWNlIFBBTDo6V2ViR1BVIHsKIAogc3RydWN0IFJlbmRlclBhc3NEZXNjcmlw
dG9yIDogcHVibGljIE9iamVjdERlc2NyaXB0b3JCYXNlIHsKLSAgICBWZWN0b3I8UmVuZGVyUGFz
c0NvbG9yQXR0YWNobWVudD4gY29sb3JBdHRhY2htZW50czsKKyAgICBWZWN0b3I8c3RkOjpvcHRp
b25hbDxSZW5kZXJQYXNzQ29sb3JBdHRhY2htZW50Pj4gY29sb3JBdHRhY2htZW50czsKICAgICBz
dGQ6Om9wdGlvbmFsPFJlbmRlclBhc3NEZXB0aFN0ZW5jaWxBdHRhY2htZW50PiBkZXB0aFN0ZW5j
aWxBdHRhY2htZW50OwogICAgIFF1ZXJ5U2V0KiBvY2NsdXNpb25RdWVyeVNldCB7IG51bGxwdHIg
fTsKICAgICBSZW5kZXJQYXNzVGltZXN0YW1wV3JpdGVzIHRpbWVzdGFtcFdyaXRlczsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvZ3JhcGhpY3MvV2ViR1BVL1dlYkdQVVJlbmRl
clBhc3NFbmNvZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL2dyYXBoaWNzL1dlYkdQVS9X
ZWJHUFVSZW5kZXJQYXNzRW5jb2Rlci5oCmluZGV4IDczNTJlYTFkZDhiOTUzYjI1ZjU4MjQ2NmVh
YTc3OTZlZTVkZjIyZjcuLjU1ODVmNGFmMmE5NmMxZmNkNWFjODA0MjE0Mjk0NjUyYmExOWYyMDAg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvZ3JhcGhpY3MvV2ViR1BVL1dlYkdQ
VVJlbmRlclBhc3NFbmNvZGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvUEFML3BhbC9ncmFwaGlj
cy9XZWJHUFUvV2ViR1BVUmVuZGVyUGFzc0VuY29kZXIuaApAQCAtOTcsMTEgKzk3LDggQEAgcHVi
bGljOgogICAgIHZpcnR1YWwgdm9pZCBiZWdpbk9jY2x1c2lvblF1ZXJ5KFNpemUzMiBxdWVyeUlu
ZGV4KSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGVuZE9jY2x1c2lvblF1ZXJ5KCkgPSAwOwogCi0g
ICAgdmlydHVhbCB2b2lkIGJlZ2luUGlwZWxpbmVTdGF0aXN0aWNzUXVlcnkoY29uc3QgUXVlcnlT
ZXQmLCBTaXplMzIgcXVlcnlJbmRleCkgPSAwOwotICAgIHZpcnR1YWwgdm9pZCBlbmRQaXBlbGlu
ZVN0YXRpc3RpY3NRdWVyeSgpID0gMDsKLQogICAgIHZpcnR1YWwgdm9pZCBleGVjdXRlQnVuZGxl
cyhWZWN0b3I8c3RkOjpyZWZlcmVuY2Vfd3JhcHBlcjxSZW5kZXJCdW5kbGU+PiYmKSA9IDA7Ci0g
ICAgdmlydHVhbCB2b2lkIGVuZFBhc3MoKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIGVuZCgpID0g
MDsKIAogcHJvdGVjdGVkOgogICAgIFJlbmRlclBhc3NFbmNvZGVyKCkgPSBkZWZhdWx0OwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvUEFML3BhbC9ncmFwaGljcy9XZWJHUFUvV2ViR1BVUmVu
ZGVyUGFzc0xheW91dC5oIGIvU291cmNlL1dlYkNvcmUvUEFML3BhbC9ncmFwaGljcy9XZWJHUFUv
V2ViR1BVUmVuZGVyUGFzc0xheW91dC5oCmluZGV4IGFmOTNmMWYxYjJkNzAxMWQ1ZTNiODVjN2Q0
ZWMwOTAxNDRiMDIwNDUuLjgwZDgyZGEzNTdlNDkyNDQwMTMxZTRmMzZiMjNkYmM1NGU5NGY1NTcg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvZ3JhcGhpY3MvV2ViR1BVL1dlYkdQ
VVJlbmRlclBhc3NMYXlvdXQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL2dyYXBoaWNz
L1dlYkdQVS9XZWJHUFVSZW5kZXJQYXNzTGF5b3V0LmgKQEAgLTM0LDcgKzM0LDcgQEAKIG5hbWVz
cGFjZSBQQUw6OldlYkdQVSB7CiAKIHN0cnVjdCBSZW5kZXJQYXNzTGF5b3V0IDogcHVibGljIE9i
amVjdERlc2NyaXB0b3JCYXNlIHsKLSAgICBWZWN0b3I8VGV4dHVyZUZvcm1hdD4gY29sb3JGb3Jt
YXRzOworICAgIFZlY3RvcjxzdGQ6Om9wdGlvbmFsPFRleHR1cmVGb3JtYXQ+PiBjb2xvckZvcm1h
dHM7CiAgICAgc3RkOjpvcHRpb25hbDxUZXh0dXJlRm9ybWF0PiBkZXB0aFN0ZW5jaWxGb3JtYXQ7
CiAgICAgU2l6ZTMyIHNhbXBsZUNvdW50IHsgMSB9OwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL1BBTC9wYWwvZ3JhcGhpY3MvV2ViR1BVL1dlYkdQVVNoYWRlck1vZHVsZUNvbXBpbGF0
aW9uSGludC5oIGIvU291cmNlL1dlYkNvcmUvUEFML3BhbC9ncmFwaGljcy9XZWJHUFUvV2ViR1BV
U2hhZGVyTW9kdWxlQ29tcGlsYXRpb25IaW50LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZDcyMjBkZGYwOWVhYTA0
NDk1NDVhMGNkYjRlNmNiMDFiNTEzMzU3MwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJD
b3JlL1BBTC9wYWwvZ3JhcGhpY3MvV2ViR1BVL1dlYkdQVVNoYWRlck1vZHVsZUNvbXBpbGF0aW9u
SGludC5oCkBAIC0wLDAgKzEsMzYgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjEgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycK
KyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisg
KiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworbmFt
ZXNwYWNlIFBBTDo6V2ViR1BVIHsKKworY2xhc3MgV2ViR1BVUGlwZWxpbmVMYXlvdXQ7CisKK3N0
cnVjdCBTaGFkZXJNb2R1bGVDb21waWxhdGlvbkhpbnQgeworICAgIFBpcGVsaW5lTGF5b3V0JiBw
aXBlbGluZUxheW91dDsKK307CisKK30gLy8gbmFtZXNwYWNlIFBBTDo6V2ViR1BVCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL2dyYXBoaWNzL1dlYkdQVS9XZWJHUFVTaGFkZXJN
b2R1bGVEZXNjcmlwdG9yLmggYi9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL2dyYXBoaWNzL1dlYkdQ
VS9XZWJHUFVTaGFkZXJNb2R1bGVEZXNjcmlwdG9yLmgKaW5kZXggYzk5ZThlZTJmZjRmMWZhODVl
MzUxNjI2NTdkOWEzZDlmNmM3NTQ2Zi4uMzFlMjdhNjlkZGRmZDQzMWYyNzY0Y2JhZjQ1YWJkNGJl
NWY3ZmM1OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvUEFML3BhbC9ncmFwaGljcy9XZWJH
UFUvV2ViR1BVU2hhZGVyTW9kdWxlRGVzY3JpcHRvci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL1BB
TC9wYWwvZ3JhcGhpY3MvV2ViR1BVL1dlYkdQVVNoYWRlck1vZHVsZURlc2NyaXB0b3IuaApAQCAt
MjYsNiArMjYsNyBAQAogI3ByYWdtYSBvbmNlCiAKICNpbmNsdWRlICJXZWJHUFVPYmplY3REZXNj
cmlwdG9yQmFzZS5oIgorI2luY2x1ZGUgIldlYkdQVVNoYWRlck1vZHVsZUNvbXBpbGF0aW9uSGlu
dC5oIgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgogCiBuYW1lc3BhY2UgUEFMOjpX
ZWJHUFUgewpAQCAtMzMsNiArMzQsNyBAQCBuYW1lc3BhY2UgUEFMOjpXZWJHUFUgewogc3RydWN0
IFNoYWRlck1vZHVsZURlc2NyaXB0b3IgOiBwdWJsaWMgT2JqZWN0RGVzY3JpcHRvckJhc2Ugewog
ICAgIFN0cmluZyBjb2RlOwogICAgIC8vIEpTQzo6U3Ryb25nPEpTQzo6SlNPYmplY3Q+IHNvdXJj
ZU1hcDsKKyAgICBWZWN0b3I8S2V5VmFsdWVQYWlyPFN0cmluZywgU2hhZGVyTW9kdWxlQ29tcGls
YXRpb25IaW50Pj4gaGludHM7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBQQUw6OldlYkdQVQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvUEFML3BhbC9ncmFwaGljcy9XZWJHUFUvV2ViR1BVVGV4
dHVyZURlc2NyaXB0b3IuaCBiL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvZ3JhcGhpY3MvV2ViR1BV
L1dlYkdQVVRleHR1cmVEZXNjcmlwdG9yLmgKaW5kZXggNThhMGZjYTc4OGQyNDI1MzczZDk3ZWJl
OGIxMzFjOWZkZWQ2Y2Q1Yy4uNzcwM2IyMDQzZDkxYjc1ZjE3MThiMmZlNGQyZWZhMjI4NDA0NzQy
NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvUEFML3BhbC9ncmFwaGljcy9XZWJHUFUvV2Vi
R1BVVGV4dHVyZURlc2NyaXB0b3IuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL2dyYXBo
aWNzL1dlYkdQVS9XZWJHUFVUZXh0dXJlRGVzY3JpcHRvci5oCkBAIC00MSw2ICs0MSw3IEBAIHN0
cnVjdCBUZXh0dXJlRGVzY3JpcHRvciA6IHB1YmxpYyBPYmplY3REZXNjcmlwdG9yQmFzZSB7CiAg
ICAgVGV4dHVyZURpbWVuc2lvbiBkaW1lbnNpb24geyBUZXh0dXJlRGltZW5zaW9uOjpfMmQgfTsK
ICAgICBUZXh0dXJlRm9ybWF0IGZvcm1hdCB7IFRleHR1cmVGb3JtYXQ6OlI4dW5vcm0gfTsKICAg
ICBUZXh0dXJlVXNhZ2VGbGFncyB1c2FnZTsKKyAgICBWZWN0b3I8VGV4dHVyZUZvcm1hdD4gdmll
d0Zvcm1hdHM7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBQQUw6OldlYkdQVQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvUEFML3BhbC9ncmFwaGljcy9XZWJHUFUvV2ViR1BVVGV4dHVyZUZvcm1h
dC5oIGIvU291cmNlL1dlYkNvcmUvUEFML3BhbC9ncmFwaGljcy9XZWJHUFUvV2ViR1BVVGV4dHVy
ZUZvcm1hdC5oCmluZGV4IDYyNTk0NjAwNWYwZTg2M2FmOTAzMjgxNjViMzg4OTEyZGQ3NTAyNDQu
LjYzYjQyOThlYjM5M2ZmZDAxZTI5ZGY5ZWFiNjlmODlmNDA2ODMzZDcgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL1BBTC9wYWwvZ3JhcGhpY3MvV2ViR1BVL1dlYkdQVVRleHR1cmVGb3JtYXQu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL2dyYXBoaWNzL1dlYkdQVS9XZWJHUFVUZXh0
dXJlRm9ybWF0LmgKQEAgLTc4LDEzICs3OCwxOSBAQCBlbnVtIGNsYXNzIFRleHR1cmVGb3JtYXQg
OiB1aW50OF90IHsKICAgICBSZ2JhMzJzaW50LAogICAgIFJnYmEzMmZsb2F0LAogCi0gICAgLy8g
RGVwdGggYW5kIHN0ZW5jaWwgZm9ybWF0cworICAgIC8vIERlcHRoL3N0ZW5jaWwgZm9ybWF0cwog
ICAgIFN0ZW5jaWw4LAogICAgIERlcHRoMTZ1bm9ybSwKICAgICBEZXB0aDI0cGx1cywKICAgICBE
ZXB0aDI0cGx1c1N0ZW5jaWw4LAogICAgIERlcHRoMzJmbG9hdCwKIAorICAgIC8vIGRlcHRoMjR1
bm9ybS1zdGVuY2lsOCBmZWF0dXJlCisgICAgRGVwdGgyNHVub3JtU3RlbmNpbDgsCisKKyAgICAv
LyBkZXB0aDMyZmxvYXQtc3RlbmNpbDggZmVhdHVyZQorICAgIERlcHRoMzJmbG9hdFN0ZW5jaWw4
LAorCiAgICAgLy8gQkMgY29tcHJlc3NlZCBmb3JtYXRzIHVzYWJsZSBpZiB0ZXh0dXJlLWNvbXBy
ZXNzaW9uLWJjIGlzIGJvdGgKICAgICAvLyBzdXBwb3J0ZWQgYnkgdGhlIGRldmljZS91c2VyIGFn
ZW50IGFuZCBlbmFibGVkIGluIHJlcXVlc3REZXZpY2UuCiAgICAgQmMxUmdiYVVub3JtLApAQCAt
MTQ1LDEyICsxNTEsNiBAQCBlbnVtIGNsYXNzIFRleHR1cmVGb3JtYXQgOiB1aW50OF90IHsKICAg
ICBBc3RjMTJ4MTBVbm9ybVNSR0IsCiAgICAgQXN0YzEyeDEyVW5vcm0sCiAgICAgQXN0YzEyeDEy
VW5vcm1TUkdCLAotCi0gICAgLy8gZGVwdGgyNHVub3JtLXN0ZW5jaWw4IGZlYXR1cmUKLSAgICBE
ZXB0aDI0dW5vcm1TdGVuY2lsOCwKLQotICAgIC8vIGRlcHRoMzJmbG9hdC1zdGVuY2lsOCBmZWF0
dXJlCi0gICAgRGVwdGgzMmZsb2F0U3RlbmNpbDgsCiB9OwogCiB9IC8vIG5hbWVzcGFjZSBQQUw6
OldlYkdQVQpAQCAtMjAxLDYgKzIwMSw4IEBAIHRlbXBsYXRlPD4gc3RydWN0IEVudW1UcmFpdHM8
UEFMOjpXZWJHUFU6OlRleHR1cmVGb3JtYXQ+IHsKICAgICAgICAgUEFMOjpXZWJHUFU6OlRleHR1
cmVGb3JtYXQ6OkRlcHRoMjRwbHVzLAogICAgICAgICBQQUw6OldlYkdQVTo6VGV4dHVyZUZvcm1h
dDo6RGVwdGgyNHBsdXNTdGVuY2lsOCwKICAgICAgICAgUEFMOjpXZWJHUFU6OlRleHR1cmVGb3Jt
YXQ6OkRlcHRoMzJmbG9hdCwKKyAgICAgICAgUEFMOjpXZWJHUFU6OlRleHR1cmVGb3JtYXQ6OkRl
cHRoMjR1bm9ybVN0ZW5jaWw4LAorICAgICAgICBQQUw6OldlYkdQVTo6VGV4dHVyZUZvcm1hdDo6
RGVwdGgzMmZsb2F0U3RlbmNpbDgsCiAgICAgICAgIFBBTDo6V2ViR1BVOjpUZXh0dXJlRm9ybWF0
OjpCYzFSZ2JhVW5vcm0sCiAgICAgICAgIFBBTDo6V2ViR1BVOjpUZXh0dXJlRm9ybWF0OjpCYzFS
Z2JhVW5vcm1TUkdCLAogICAgICAgICBQQUw6OldlYkdQVTo6VGV4dHVyZUZvcm1hdDo6QmMyUmdi
YVVub3JtLApAQCAtMjUyLDkgKzI1NCw3IEBAIHRlbXBsYXRlPD4gc3RydWN0IEVudW1UcmFpdHM8
UEFMOjpXZWJHUFU6OlRleHR1cmVGb3JtYXQ+IHsKICAgICAgICAgUEFMOjpXZWJHUFU6OlRleHR1
cmVGb3JtYXQ6OkFzdGMxMngxMFVub3JtLAogICAgICAgICBQQUw6OldlYkdQVTo6VGV4dHVyZUZv
cm1hdDo6QXN0YzEyeDEwVW5vcm1TUkdCLAogICAgICAgICBQQUw6OldlYkdQVTo6VGV4dHVyZUZv
cm1hdDo6QXN0YzEyeDEyVW5vcm0sCi0gICAgICAgIFBBTDo6V2ViR1BVOjpUZXh0dXJlRm9ybWF0
OjpBc3RjMTJ4MTJVbm9ybVNSR0IsCi0gICAgICAgIFBBTDo6V2ViR1BVOjpUZXh0dXJlRm9ybWF0
OjpEZXB0aDI0dW5vcm1TdGVuY2lsOCwKLSAgICAgICAgUEFMOjpXZWJHUFU6OlRleHR1cmVGb3Jt
YXQ6OkRlcHRoMzJmbG9hdFN0ZW5jaWw4CisgICAgICAgIFBBTDo6V2ViR1BVOjpUZXh0dXJlRm9y
bWF0OjpBc3RjMTJ4MTJVbm9ybVNSR0IKICAgICA+OwogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvU291cmNlcy50eHQgYi9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzLnR4dAppbmRleCAw
NmM5YjIxODE2NWY0ZTM1M2U5NDg5ZjA1MmYwZGZiOTkxYjkyNmE0Li40YzI3MjMxYzc5YWMzZTQw
ODQxZjUwM2YzOTZmNzA3MDIwNWQ5ZjIzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Tb3Vy
Y2VzLnR4dAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzLnR4dApAQCAtMzE4NSw2ICszMTg1
LDcgQEAgSlNHUFVDb21tYW5kQnVmZmVyLmNwcAogSlNHUFVDb21tYW5kQnVmZmVyRGVzY3JpcHRv
ci5jcHAKIEpTR1BVQ29tbWFuZEVuY29kZXIuY3BwCiBKU0dQVUNvbW1hbmRFbmNvZGVyRGVzY3Jp
cHRvci5jcHAKK0pTR1BVQ29tbWFuZHNNaXhpbi5jcHAKIEpTR1BVQ29tcGFyZUZ1bmN0aW9uLmNw
cAogSlNHUFVDb21waWxhdGlvbkluZm8uY3BwCiBKU0dQVUNvbXBpbGF0aW9uTWVzc2FnZS5jcHAK
QEAgLTMxOTYsNiArMzE5Nyw3IEBAIEpTR1BVQ29tcHV0ZVBhc3NUaW1lc3RhbXBXcml0ZS5jcHAK
IEpTR1BVQ29tcHV0ZVBpcGVsaW5lLmNwcAogSlNHUFVDb21wdXRlUGlwZWxpbmVEZXNjcmlwdG9y
LmNwcAogSlNHUFVDdWxsTW9kZS5jcHAKK0pTR1BVRGVidWdDb21tYW5kc01peGluLmNwcAogSlNH
UFVEZXB0aFN0ZW5jaWxTdGF0ZS5jcHAKIEpTR1BVRGV2aWNlLmNwcAogSlNHUFVEZXZpY2VEZXNj
cmlwdG9yLmNwcApAQCAtMzIzMSw3ICszMjMzLDYgQEAgSlNHUFVQaXBlbGluZUJhc2UuY3BwCiBK
U0dQVVBpcGVsaW5lRGVzY3JpcHRvckJhc2UuY3BwCiBKU0dQVVBpcGVsaW5lTGF5b3V0LmNwcAog
SlNHUFVQaXBlbGluZUxheW91dERlc2NyaXB0b3IuY3BwCi1KU0dQVVBpcGVsaW5lU3RhdGlzdGlj
TmFtZS5jcHAKIEpTR1BVUG93ZXJQcmVmZXJlbmNlLmNwcAogSlNHUFVQcmVkZWZpbmVkQ29sb3JT
cGFjZS5jcHAKIEpTR1BVUHJpbWl0aXZlU3RhdGUuY3BwCkBAIC0zMjYyLDYgKzMyNjMsNyBAQCBK
U0dQVVNhbXBsZXJCaW5kaW5nTGF5b3V0LmNwcAogSlNHUFVTYW1wbGVyQmluZGluZ1R5cGUuY3Bw
CiBKU0dQVVNhbXBsZXJEZXNjcmlwdG9yLmNwcAogSlNHUFVTaGFkZXJNb2R1bGUuY3BwCitKU0dQ
VVNoYWRlck1vZHVsZUNvbXBpbGF0aW9uSGludC5jcHAKIEpTR1BVU2hhZGVyTW9kdWxlRGVzY3Jp
cHRvci5jcHAKIEpTR1BVU2hhZGVyU3RhZ2UuY3BwCiBKU0dQVVN0ZW5jaWxGYWNlU3RhdGUuY3Bw
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2ogYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oK
aW5kZXggZmI5ZmI3Y2MyMjE4OWYwMzQzMDIwY2Y2YzBmYTNkNjY1ZGI5ZWIzOC4uMGE1OWIxN2Mx
YTBhMzIwOWRiOTgzNDcxMDNmZDYzODUxMjc0ZjI5ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtNzMyNCw3ICs3MzI0LDYgQEAK
IAkJMUM5MDc4MDgyNzUxRkQ1MzAwNEVGMTY1IC8qIEpTR1BVRXh0ZW50M0REaWN0LmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IEpTR1BVRXh0ZW50M0REaWN0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCTFDOTA3ODA5Mjc1MUZENTMwMDRFRjE2NSAvKiBKU0dQVVF1ZXJ5U2V0LmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IEpTR1BVUXVlcnlTZXQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMUM5
MDc4MEEyNzUxRkQ1NDAwNEVGMTY1IC8qIEpTR1BVSW1hZ2VEYXRhTGF5b3V0LmNwcCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
LmNwcDsgcGF0aCA9IEpTR1BVSW1hZ2VEYXRhTGF5b3V0LmNwcDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKLQkJMUM5MDc4MEIyNzUxRkQ1NDAwNEVGMTY1IC8qIEpTR1BVUGlwZWxpbmVTdGF0
aXN0aWNOYW1lLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTR1BVUGlwZWxpbmVTdGF0aXN0aWNOYW1lLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTFDOTA3ODBDMjc1MUZENTQwMDRFRjE2NSAv
KiBKU0dQVUJ1ZmZlckJpbmRpbmdUeXBlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTR1BVQnVm
ZmVyQmluZGluZ1R5cGUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkxQzkwNzgw
RDI3NTFGRDU1MDA0RUYxNjUgLyogSlNHUFVEZXZpY2UuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNHUFVE
ZXZpY2UuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMUM5MDc4MEUyNzUxRkQ1NTAw
NEVGMTY1IC8qIEpTR1BVU2FtcGxlckJpbmRpbmdUeXBlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9
IEpTR1BVU2FtcGxlckJpbmRpbmdUeXBlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
QEAgLTc0NTQsNyArNzQ1Myw2IEBACiAJCTFDOTA3ODhBMjc1MUZEODYwMDRFRjE2NSAvKiBKU0dQ
VVNhbXBsZXJEZXNjcmlwdG9yLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTR1BVU2FtcGxlckRlc2NyaXB0
b3IuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMUM5MDc4OEIyNzUxRkQ4NzAwNEVG
MTY1IC8qIEpTR1BVQ29tcGFyZUZ1bmN0aW9uLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTR1BVQ29tcGFy
ZUZ1bmN0aW9uLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTFDOTA3ODhDMjc1MUZE
ODcwMDRFRjE2NSAvKiBKU0dQVVN1cHBvcnRlZEZlYXR1cmVzLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpT
R1BVU3VwcG9ydGVkRmVhdHVyZXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJMUM5
MDc4OEQyNzUxRkQ4NzAwNEVGMTY1IC8qIEpTR1BVUGlwZWxpbmVTdGF0aXN0aWNOYW1lLmNwcCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLmNwcDsgcGF0aCA9IEpTR1BVUGlwZWxpbmVTdGF0aXN0aWNOYW1lLmNwcDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMUM5MDc4OEUyNzUxRkQ4ODAwNEVGMTY1IC8qIEpTR1BV
RGV2aWNlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTR1BVRGV2aWNlLmNwcDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMUM5MDc4OEYyNzUxRkQ4ODAwNEVGMTY1IC8qIEpTR1BVQnVm
ZmVyRGVzY3JpcHRvci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKU0dQVUJ1ZmZlckRlc2NyaXB0b3IuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMUM5MDc4OTAyNzUxRkQ4OTAwNEVGMTY1IC8q
IEpTR1BVT3JpZ2luM0REaWN0LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTR1BVT3JpZ2luM0RE
aWN0LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTc2NzIsNyArNzY3MCw2IEBA
CiAJCTFDQTRGQ0VCMjczNTFGQjEwMDI3RkQ1QSAvKiBHUFVDb21tYW5kRW5jb2Rlci5jcHAgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5jcHA7IHBhdGggPSBHUFVDb21tYW5kRW5jb2Rlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCTFDQTRGQ0VDMjczNTFGQjIwMDI3RkQ1QSAvKiBHUFVRdWVyeVNldERlc2Ny
aXB0b3IuaWRsICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBl
ID0gdGV4dDsgcGF0aCA9IEdQVVF1ZXJ5U2V0RGVzY3JpcHRvci5pZGw7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCTFDQTRGQ0VEMjczNTFGQjIwMDI3RkQ1QSAvKiBHUFVDb21tYW5kRW5j
b2Rlci5pZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUg
PSB0ZXh0OyBwYXRoID0gR1BVQ29tbWFuZEVuY29kZXIuaWRsOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwotCQkxQ0E0RkNFRTI3MzUxRkIyMDAyN0ZENUEgLyogR1BVUGlwZWxpbmVTdGF0aXN0
aWNOYW1lLmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlw
ZSA9IHRleHQ7IHBhdGggPSBHUFVQaXBlbGluZVN0YXRpc3RpY05hbWUuaWRsOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQkxQ0E0RkNFRjI3MzUxRkIzMDAyN0ZENUEgLyogR1BVUmVuZGVy
QnVuZGxlRW5jb2RlckRlc2NyaXB0b3IuaWRsICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IEdQVVJlbmRlckJ1bmRsZUVuY29kZXJE
ZXNjcmlwdG9yLmlkbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMUNBNEZDRjAyNzM1
MUZCMzAwMjdGRDVBIC8qIEdQVUNvbG9yRGljdC5pZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gR1BVQ29sb3JEaWN0LmlkbDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMUNBNEZDRjEyNzM1MUZCMzAwMjdGRDVBIC8q
IEdQVVJlbmRlckVuY29kZXJCYXNlLmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBs
YXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBHUFVSZW5kZXJFbmNvZGVyQmFzZS5pZGw7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC03NzE0LDcgKzc3MTEsNiBAQAogCQkxQ0E0
RkQxNTI3MzUxRkMxMDAyN0ZENUEgLyogR1BVUmVuZGVyUGFzc1RpbWVzdGFtcExvY2F0aW9uLmlk
bCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7
IHBhdGggPSBHUFVSZW5kZXJQYXNzVGltZXN0YW1wTG9jYXRpb24uaWRsOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQkxQ0E0RkQxNjI3MzUxRkMyMDAyN0ZENUEgLyogR1BVSW1hZ2VDb3B5
RXh0ZXJuYWxJbWFnZS5pZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3du
RmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gR1BVSW1hZ2VDb3B5RXh0ZXJuYWxJbWFnZS5pZGw7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTFDQTRGRDE3MjczNTFGQzIwMDI3RkQ1QSAvKiBH
UFVSZW5kZXJQYXNzRGVzY3JpcHRvci5pZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
bGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gR1BVUmVuZGVyUGFzc0Rlc2NyaXB0b3Iu
aWRsOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQkxQ0E0RkQxODI3MzUxRkMzMDAyN0ZE
NUEgLyogR1BVUGlwZWxpbmVTdGF0aXN0aWNOYW1lLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEdQVVBpcGVs
aW5lU3RhdGlzdGljTmFtZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkxQ0E0RkQx
OTI3MzUxRkMzMDAyN0ZENUEgLyogR1BVQ29tbWFuZEVuY29kZXJEZXNjcmlwdG9yLmlkbCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGgg
PSBHUFVDb21tYW5kRW5jb2RlckRlc2NyaXB0b3IuaWRsOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQkxQ0E0RkQxQTI3MzUxRkMzMDAyN0ZENUEgLyogR1BVUmVuZGVyUGFzc1RpbWVzdGFt
cFdyaXRlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEdQVVJlbmRlclBhc3NUaW1lc3RhbXBXcml0ZS5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkxQ0E0RkQxQjI3MzUxRkM0MDAyN0ZENUEgLyog
R1BVT3JpZ2luMkREaWN0LmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25v
d25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBHUFVPcmlnaW4yRERpY3QuaWRsOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwpAQCAtNzc3MSw2ICs3NzY3LDE2IEBACiAJCTFDRUFBNTJGMjZGMzFB
RjgwMDg2ODUwNyAvKiBDU1NGb250UGFsZXR0ZVZhbHVlc1J1bGUuaWRsICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IENTU0ZvbnRQ
YWxldHRlVmFsdWVzUnVsZS5pZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTFDRUFB
NTMwMjZGMzMxQzEwMDg2ODUwNyAvKiBDU1NGb250UGFsZXR0ZVZhbHVlc092ZXJyaWRlQ29sb3Jz
VmFsdWUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQ1NTRm9udFBhbGV0dGVWYWx1ZXNPdmVycmlk
ZUNvbG9yc1ZhbHVlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMUNFQUE1MzEy
NkYzMzFDMTAwODY4NTA3IC8qIENTU0ZvbnRQYWxldHRlVmFsdWVzT3ZlcnJpZGVDb2xvcnNWYWx1
ZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBDU1NGb250UGFsZXR0ZVZhbHVlc092ZXJyaWRlQ29sb3JzVmFs
dWUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMUNFRjQ1QTUyN0JCMDk2QTAwQzNB
NkJDIC8qIEdQVVNoYWRlck1vZHVsZUNvbXBpbGF0aW9uSGludC5pZGwgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gR1BVU2hhZGVy
TW9kdWxlQ29tcGlsYXRpb25IaW50LmlkbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJ
MUNFRjQ1QTcyN0JCMEEzRDAwQzNBNkJDIC8qIEdQVVNoYWRlck1vZHVsZUNvbXBpbGF0aW9uSGlu
dC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBHUFVTaGFkZXJNb2R1bGVDb21waWxhdGlvbkhpbnQuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMUNFRjQ1QTgyN0JCMEJFMTAwQzNBNkJDIC8qIEdQ
VUNvbW1hbmRzTWl4aW4uaWRsICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93
bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IEdQVUNvbW1hbmRzTWl4aW4uaWRsOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OworCQkxQ0VGNDVBOTI3QkIwRDM5MDBDM0E2QkMgLyogR1BVRGVidWdD
b21tYW5kc01peGluLmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25G
aWxlVHlwZSA9IHRleHQ7IHBhdGggPSBHUFVEZWJ1Z0NvbW1hbmRzTWl4aW4uaWRsOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OworCQkxQ0VGNDVCMDI3QkI5MDdGMDBDM0E2QkMgLyogSlNHUFVD
b21tYW5kc01peGluLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTR1BVQ29tbWFuZHNNaXhpbi5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OworCQkxQ0VGNDVCMTI3QkI5MDdGMDBDM0E2QkMgLyogSlNH
UFVDb21tYW5kc01peGluLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTR1BVQ29tbWFuZHNNaXhp
bi5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTFDRUY0NUIyMjdCQjkwODAwMEMz
QTZCQyAvKiBKU0dQVURlYnVnQ29tbWFuZHNNaXhpbi5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBK
U0dQVURlYnVnQ29tbWFuZHNNaXhpbi5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJ
CTFDRUY0NUIzMjdCQjkwODEwMEMzQTZCQyAvKiBKU0dQVVNoYWRlck1vZHVsZUNvbXBpbGF0aW9u
SGludC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBKU0dQVVNoYWRlck1vZHVsZUNvbXBpbGF0aW9uSGludC5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkxQ0VGNDVCNDI3QkI5MDgxMDBDM0E2QkMg
LyogSlNHUFVEZWJ1Z0NvbW1hbmRzTWl4aW4uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNHUFVEZWJ1Z0Nv
bW1hbmRzTWl4aW4uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMUNFRjQ1QjUyN0JC
OTA4MjAwQzNBNkJDIC8qIEpTR1BVU2hhZGVyTW9kdWxlQ29tcGlsYXRpb25IaW50LmNwcCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLmNwcDsgcGF0aCA9IEpTR1BVU2hhZGVyTW9kdWxlQ29tcGlsYXRpb25IaW50LmNwcDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMUNGMEJGRDQyMjk4NzA2ODAwRUQyMDc0IC8qIFRl
eHRTaXplQWRqdXN0bWVudC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBUZXh0U2l6ZUFkanVzdG1l
bnQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkxQ0YxOEYzQzI2QkI1QUYyMDA0
QjE3MjIgLyogTG9nSW5pdGlhbGl6YXRpb24uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gTG9nSW5p
dGlhbGl6YXRpb24uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkxQ0ZBRTMyMjBB
NkQ2QTNGMDAzMjU5M0QgLyogbGlib2JqYy5keWxpYiAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBsYXN0S25vd25GaWxlVHlwZSA9ICJjb21waWxlZC5tYWNoLW8uZHlsaWIiOyBuYW1lID0g
bGlib2JqYy5keWxpYjsgcGF0aCA9IC91c3IvbGliL2xpYm9iamMuZHlsaWI7IHNvdXJjZVRyZWUg
PSAiPGFic29sdXRlPiI7IH07CkBAIC0yMDA5MSw2ICsyMDA5Nyw3IEBACiAJCQkJMUNBNEZDRUQy
NzM1MUZCMjAwMjdGRDVBIC8qIEdQVUNvbW1hbmRFbmNvZGVyLmlkbCAqLywKIAkJCQkxQ0E0RkNG
RTI3MzUxRkI5MDAyN0ZENUEgLyogR1BVQ29tbWFuZEVuY29kZXJEZXNjcmlwdG9yLmggKi8sCiAJ
CQkJMUNBNEZEMTkyNzM1MUZDMzAwMjdGRDVBIC8qIEdQVUNvbW1hbmRFbmNvZGVyRGVzY3JpcHRv
ci5pZGwgKi8sCisJCQkJMUNFRjQ1QTgyN0JCMEJFMTAwQzNBNkJDIC8qIEdQVUNvbW1hbmRzTWl4
aW4uaWRsICovLAogCQkJCTFDQTRGQzU5MjczNEVCQ0QwMDI3RkQ1QSAvKiBHUFVDb21wYXJlRnVu
Y3Rpb24uaCAqLywKIAkJCQkxQ0E0RkM1QjI3MzRFQkNFMDAyN0ZENUEgLyogR1BVQ29tcGFyZUZ1
bmN0aW9uLmlkbCAqLywKIAkJCQkxQ0E0RkNFMjI3MzUxMjNBMDAyN0ZENUEgLyogR1BVQ29tcGls
YXRpb25JbmZvLmNwcCAqLywKQEAgLTIwMTE3LDYgKzIwMTI0LDcgQEAKIAkJCQkxQ0E0RkNCNDI3
MzUwQ0VCMDAyN0ZENUEgLyogR1BVQ29tcHV0ZVBpcGVsaW5lRGVzY3JpcHRvci5pZGwgKi8sCiAJ
CQkJMUNBNEZDQTMyNzM1MENFNTAwMjdGRDVBIC8qIEdQVUN1bGxNb2RlLmggKi8sCiAJCQkJMUNB
NEZDQ0UyNzM1MENGNTAwMjdGRDVBIC8qIEdQVUN1bGxNb2RlLmlkbCAqLywKKwkJCQkxQ0VGNDVB
OTI3QkIwRDM5MDBDM0E2QkMgLyogR1BVRGVidWdDb21tYW5kc01peGluLmlkbCAqLywKIAkJCQkx
Q0E0RkNENDI3MzUwQ0Y4MDAyN0ZENUEgLyogR1BVRGVwdGhTdGVuY2lsU3RhdGUuaCAqLywKIAkJ
CQkxQ0E0RkNERDI3MzUwQ0ZCMDAyN0ZENUEgLyogR1BVRGVwdGhTdGVuY2lsU3RhdGUuaWRsICov
LAogCQkJCTFDMjg5NTdGMjcyRjQzRDgwMEIzRTJCNCAvKiBHUFVEZXZpY2UuY3BwICovLApAQCAt
MjAxODgsOCArMjAxOTYsNiBAQAogCQkJCTFDQTRGQzZFMjczNEY5RjYwMDI3RkQ1QSAvKiBHUFVQ
aXBlbGluZUxheW91dC5pZGwgKi8sCiAJCQkJMUNBNEZDNzMyNzM0RjlGODAwMjdGRDVBIC8qIEdQ
VVBpcGVsaW5lTGF5b3V0RGVzY3JpcHRvci5oICovLAogCQkJCTFDQTRGQzY3MjczNEY5RjQwMDI3
RkQ1QSAvKiBHUFVQaXBlbGluZUxheW91dERlc2NyaXB0b3IuaWRsICovLAotCQkJCTFDQTRGRDE4
MjczNTFGQzMwMDI3RkQ1QSAvKiBHUFVQaXBlbGluZVN0YXRpc3RpY05hbWUuaCAqLywKLQkJCQkx
Q0E0RkNFRTI3MzUxRkIyMDAyN0ZENUEgLyogR1BVUGlwZWxpbmVTdGF0aXN0aWNOYW1lLmlkbCAq
LywKIAkJCQkxQzI4OTU4MjI3MkY0OEYyMDBCM0UyQjQgLyogR1BVUG93ZXJQcmVmZXJlbmNlLmgg
Ki8sCiAJCQkJMUMyODk1NjkyNzJGMjc0NzAwQjNFMkI0IC8qIEdQVVBvd2VyUHJlZmVyZW5jZS5p
ZGwgKi8sCiAJCQkJMUMyODk1OEIyNzJGNUFGNTAwQjNFMkI0IC8qIEdQVVByZWRlZmluZWRDb2xv
clNwYWNlLmggKi8sCkBAIC0yMDI1Niw2ICsyMDI2Miw4IEBACiAJCQkJMUNBNEZDQTUyNzM1MENF
NjAwMjdGRDVBIC8qIEdQVVNoYWRlck1vZHVsZS5jcHAgKi8sCiAJCQkJMUNBNEZDRDUyNzM1MENG
ODAwMjdGRDVBIC8qIEdQVVNoYWRlck1vZHVsZS5oICovLAogCQkJCTFDQTRGQ0E3MjczNTBDRTYw
MDI3RkQ1QSAvKiBHUFVTaGFkZXJNb2R1bGUuaWRsICovLAorCQkJCTFDRUY0NUE3MjdCQjBBM0Qw
MEMzQTZCQyAvKiBHUFVTaGFkZXJNb2R1bGVDb21waWxhdGlvbkhpbnQuaCAqLywKKwkJCQkxQ0VG
NDVBNTI3QkIwOTZBMDBDM0E2QkMgLyogR1BVU2hhZGVyTW9kdWxlQ29tcGlsYXRpb25IaW50Lmlk
bCAqLywKIAkJCQkxQ0E0RkNCMTI3MzUwQ0VBMDAyN0ZENUEgLyogR1BVU2hhZGVyTW9kdWxlRGVz
Y3JpcHRvci5oICovLAogCQkJCTFDQTRGQ0FDMjczNTBDRTgwMDI3RkQ1QSAvKiBHUFVTaGFkZXJN
b2R1bGVEZXNjcmlwdG9yLmlkbCAqLywKIAkJCQkxQ0E0RkM2QTI3MzRGOUY1MDAyN0ZENUEgLyog
R1BVU2hhZGVyU3RhZ2UuaCAqLywKQEAgLTIzNTMyLDYgKzIzNTQwLDggQEAKIAkJCQkxQzkwNzg0
RTI3NTFGRDZGMDA0RUYxNjUgLyogSlNHUFVDb21tYW5kRW5jb2Rlci5oICovLAogCQkJCTFDOTA3
N0U0Mjc1MUZENDQwMDRFRjE2NSAvKiBKU0dQVUNvbW1hbmRFbmNvZGVyRGVzY3JpcHRvci5jcHAg
Ki8sCiAJCQkJMUM5MDc4NUUyNzUxRkQ3NTAwNEVGMTY1IC8qIEpTR1BVQ29tbWFuZEVuY29kZXJE
ZXNjcmlwdG9yLmggKi8sCisJCQkJMUNFRjQ1QjEyN0JCOTA3RjAwQzNBNkJDIC8qIEpTR1BVQ29t
bWFuZHNNaXhpbi5jcHAgKi8sCisJCQkJMUNFRjQ1QjAyN0JCOTA3RjAwQzNBNkJDIC8qIEpTR1BV
Q29tbWFuZHNNaXhpbi5oICovLAogCQkJCTFDOTA3ODdCMjc1MUZEODAwMDRFRjE2NSAvKiBKU0dQ
VUNvbXBhcmVGdW5jdGlvbi5jcHAgKi8sCiAJCQkJMUM5MDc4OEIyNzUxRkQ4NzAwNEVGMTY1IC8q
IEpTR1BVQ29tcGFyZUZ1bmN0aW9uLmggKi8sCiAJCQkJMUM5MDc4OTEyNzUxRkQ4OTAwNEVGMTY1
IC8qIEpTR1BVQ29tcGlsYXRpb25JbmZvLmNwcCAqLywKQEAgLTIzNTU0LDYgKzIzNTY0LDggQEAK
IAkJCQkxQzkwNzg3MDI3NTFGRDdDMDA0RUYxNjUgLyogSlNHUFVDb21wdXRlUGlwZWxpbmVEZXNj
cmlwdG9yLmggKi8sCiAJCQkJMUM5MDc4NTkyNzUxRkQ3MzAwNEVGMTY1IC8qIEpTR1BVQ3VsbE1v
ZGUuY3BwICovLAogCQkJCTFDOTA3N0U4Mjc1MUZENDYwMDRFRjE2NSAvKiBKU0dQVUN1bGxNb2Rl
LmggKi8sCisJCQkJMUNFRjQ1QjIyN0JCOTA4MDAwQzNBNkJDIC8qIEpTR1BVRGVidWdDb21tYW5k
c01peGluLmNwcCAqLywKKwkJCQkxQ0VGNDVCNDI3QkI5MDgxMDBDM0E2QkMgLyogSlNHUFVEZWJ1
Z0NvbW1hbmRzTWl4aW4uaCAqLywKIAkJCQkxQzkwNzg5NDI3NTFGRDhBMDA0RUYxNjUgLyogSlNH
UFVEZXB0aFN0ZW5jaWxTdGF0ZS5jcHAgKi8sCiAJCQkJMUM5MDc4OTkyNzUxRkQ4QzAwNEVGMTY1
IC8qIEpTR1BVRGVwdGhTdGVuY2lsU3RhdGUuaCAqLywKIAkJCQkxQzkwNzg4RTI3NTFGRDg4MDA0
RUYxNjUgLyogSlNHUFVEZXZpY2UuY3BwICovLApAQCAtMjM2MjQsOCArMjM2MzYsNiBAQAogCQkJ
CTFDOTA3OEMwMjc1MUZEOUIwMDRFRjE2NSAvKiBKU0dQVVBpcGVsaW5lTGF5b3V0LmggKi8sCiAJ
CQkJMUM5MDc4NTAyNzUxRkQ2RjAwNEVGMTY1IC8qIEpTR1BVUGlwZWxpbmVMYXlvdXREZXNjcmlw
dG9yLmNwcCAqLywKIAkJCQkxQzkwNzdGQTI3NTFGRDREMDA0RUYxNjUgLyogSlNHUFVQaXBlbGlu
ZUxheW91dERlc2NyaXB0b3IuaCAqLywKLQkJCQkxQzkwNzg4RDI3NTFGRDg3MDA0RUYxNjUgLyog
SlNHUFVQaXBlbGluZVN0YXRpc3RpY05hbWUuY3BwICovLAotCQkJCTFDOTA3ODBCMjc1MUZENTQw
MDRFRjE2NSAvKiBKU0dQVVBpcGVsaW5lU3RhdGlzdGljTmFtZS5oICovLAogCQkJCTFDOTA3ODdF
Mjc1MUZEODIwMDRFRjE2NSAvKiBKU0dQVVBvd2VyUHJlZmVyZW5jZS5jcHAgKi8sCiAJCQkJMUM5
MDc4OUUyNzUxRkQ4RTAwNEVGMTY1IC8qIEpTR1BVUG93ZXJQcmVmZXJlbmNlLmggKi8sCiAJCQkJ
MUM5MDc4NTUyNzUxRkQ3MTAwNEVGMTY1IC8qIEpTR1BVUHJlZGVmaW5lZENvbG9yU3BhY2UuY3Bw
ICovLApAQCAtMjM2ODYsNiArMjM2OTYsOCBAQAogCQkJCTFDOTA3ODhBMjc1MUZEODYwMDRFRjE2
NSAvKiBKU0dQVVNhbXBsZXJEZXNjcmlwdG9yLmggKi8sCiAJCQkJMUM5MDc4NTcyNzUxRkQ3MjAw
NEVGMTY1IC8qIEpTR1BVU2hhZGVyTW9kdWxlLmNwcCAqLywKIAkJCQkxQzkwNzhBNTI3NTFGRDkx
MDA0RUYxNjUgLyogSlNHUFVTaGFkZXJNb2R1bGUuaCAqLywKKwkJCQkxQ0VGNDVCNTI3QkI5MDgy
MDBDM0E2QkMgLyogSlNHUFVTaGFkZXJNb2R1bGVDb21waWxhdGlvbkhpbnQuY3BwICovLAorCQkJ
CTFDRUY0NUIzMjdCQjkwODEwMEMzQTZCQyAvKiBKU0dQVVNoYWRlck1vZHVsZUNvbXBpbGF0aW9u
SGludC5oICovLAogCQkJCTFDOTA3N0U5Mjc1MUZENDYwMDRFRjE2NSAvKiBKU0dQVVNoYWRlck1v
ZHVsZURlc2NyaXB0b3IuY3BwICovLAogCQkJCTFDOTA3ODM5Mjc1MUZENjYwMDRFRjE2NSAvKiBK
U0dQVVNoYWRlck1vZHVsZURlc2NyaXB0b3IuaCAqLywKIAkJCQkxQzkwNzg3MjI3NTFGRDdEMDA0
RUYxNjUgLyogSlNHUFVTaGFkZXJTdGFnZS5jcHAgKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
R1BVL1dlYkdQVS9BZGFwdGVyLmggYi9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9BZGFwdGVyLmgKaW5k
ZXggZTdkNDM0OTg4NmU2NzkxYzVjNWJkODM3MzM0YmM1NTJiMWJkZWQwNC4uOGNhNGUwZjBlNGI5
N2VlMGE0Nzg4YmI4YzQ3NmZiNTI3NGZiYjMyMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkdQVS9X
ZWJHUFUvQWRhcHRlci5oCisrKyBiL1NvdXJjZS9XZWJHUFUvV2ViR1BVL0FkYXB0ZXIuaApAQCAt
NDUsMTAgKzQ1LDEwIEBAIHB1YmxpYzoKIAogICAgIH5BZGFwdGVyKCk7CiAKKyAgICBzaXplX3Qg
ZW51bWVyYXRlRmVhdHVyZXMoV0dQVUZlYXR1cmVOYW1lKiBmZWF0dXJlcyk7CiAgICAgYm9vbCBn
ZXRMaW1pdHMoV0dQVVN1cHBvcnRlZExpbWl0cyopOwogICAgIHZvaWQgZ2V0UHJvcGVydGllcyhX
R1BVQWRhcHRlclByb3BlcnRpZXMqKTsKICAgICBib29sIGhhc0ZlYXR1cmUoV0dQVUZlYXR1cmVO
YW1lKTsKLSAgICBXR1BVRmVhdHVyZU5hbWUgZ2V0RmVhdHVyZUF0SW5kZXgoc2l6ZV90KTsKICAg
ICB2b2lkIHJlcXVlc3REZXZpY2UoY29uc3QgV0dQVURldmljZURlc2NyaXB0b3IqLCBXVEY6OkZ1
bmN0aW9uPHZvaWQoV0dQVVJlcXVlc3REZXZpY2VTdGF0dXMsIFJlZjxEZXZpY2U+JiYsIGNvbnN0
IGNoYXIqKT4mJiBjYWxsYmFjayk7CiAKIHByaXZhdGU6CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
R1BVL1dlYkdQVS9BZGFwdGVyLm1tIGIvU291cmNlL1dlYkdQVS9XZWJHUFUvQWRhcHRlci5tbQpp
bmRleCBlZTFiYjI4ZTI3ZTBkYzNiNzU4ZTZkOWU3NmM2NzNlZTVjMzE1YTQ0Li5lMjk0M2NjNGI1
NDdhOGUzYjYxNTY0ZGJlMDI4YzFlZDlmMWVmNjEzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViR1BV
L1dlYkdQVS9BZGFwdGVyLm1tCisrKyBiL1NvdXJjZS9XZWJHUFUvV2ViR1BVL0FkYXB0ZXIubW0K
QEAgLTM2LDYgKzM2LDEyIEBAIEFkYXB0ZXI6OkFkYXB0ZXIoKSA9IGRlZmF1bHQ7CiAKIEFkYXB0
ZXI6On5BZGFwdGVyKCkgPSBkZWZhdWx0OwogCitzaXplX3QgQWRhcHRlcjo6ZW51bWVyYXRlRmVh
dHVyZXMoV0dQVUZlYXR1cmVOYW1lKiBmZWF0dXJlcykKK3sKKyAgICBVTlVTRURfUEFSQU0oZmVh
dHVyZXMpOworICAgIHJldHVybiAwOworfQorCiBib29sIEFkYXB0ZXI6OmdldExpbWl0cyhXR1BV
U3VwcG9ydGVkTGltaXRzKiBsaW1pdHMpCiB7CiAgICAgVU5VU0VEX1BBUkFNKGxpbWl0cyk7CkBA
IC01MywxMiArNTksNiBAQCBib29sIEFkYXB0ZXI6Omhhc0ZlYXR1cmUoV0dQVUZlYXR1cmVOYW1l
IGZlYXR1cmUpCiAgICAgcmV0dXJuIGZhbHNlOwogfQogCi1XR1BVRmVhdHVyZU5hbWUgQWRhcHRl
cjo6Z2V0RmVhdHVyZUF0SW5kZXgoc2l6ZV90IGluZGV4KQotewotICAgIFVOVVNFRF9QQVJBTShp
bmRleCk7Ci0gICAgcmV0dXJuIFdHUFVGZWF0dXJlTmFtZV9VbmRlZmluZWQ7Ci19Ci0KIHZvaWQg
QWRhcHRlcjo6cmVxdWVzdERldmljZShjb25zdCBXR1BVRGV2aWNlRGVzY3JpcHRvciogZGVzY3Jp
cHRvciwgV1RGOjpGdW5jdGlvbjx2b2lkKFdHUFVSZXF1ZXN0RGV2aWNlU3RhdHVzLCBSZWY8RGV2
aWNlPiYmLCBjb25zdCBjaGFyKik+JiYgY2FsbGJhY2spCiB7CiAgICAgVU5VU0VEX1BBUkFNKGRl
c2NyaXB0b3IpOwpAQCAtNzIsNiArNzIsMTEgQEAgdm9pZCB3Z3B1QWRhcHRlclJlbGVhc2UoV0dQ
VUFkYXB0ZXIgYWRhcHRlcikKICAgICBkZWxldGUgYWRhcHRlcjsKIH0KIAorc2l6ZV90IHdncHVB
ZGFwdGVyRW51bWVyYXRlRmVhdHVyZXMoV0dQVUFkYXB0ZXIgYWRhcHRlciwgV0dQVUZlYXR1cmVO
YW1lKiBmZWF0dXJlcykKK3sKKyAgICByZXR1cm4gYWRhcHRlci0+YWRhcHRlci0+ZW51bWVyYXRl
RmVhdHVyZXMoZmVhdHVyZXMpOworfQorCiBib29sIHdncHVBZGFwdGVyR2V0TGltaXRzKFdHUFVB
ZGFwdGVyIGFkYXB0ZXIsIFdHUFVTdXBwb3J0ZWRMaW1pdHMqIGxpbWl0cykKIHsKICAgICByZXR1
cm4gYWRhcHRlci0+YWRhcHRlci0+Z2V0TGltaXRzKGxpbWl0cyk7CkBAIC04NywxMSArOTIsNiBA
QCBib29sIHdncHVBZGFwdGVySGFzRmVhdHVyZShXR1BVQWRhcHRlciBhZGFwdGVyLCBXR1BVRmVh
dHVyZU5hbWUgZmVhdHVyZSkKICAgICByZXR1cm4gYWRhcHRlci0+YWRhcHRlci0+aGFzRmVhdHVy
ZShmZWF0dXJlKTsKIH0KIAotV0dQVUZlYXR1cmVOYW1lIHdncHVBZGFwdGVyR2V0RmVhdHVyZUF0
SW5kZXgoV0dQVUFkYXB0ZXIgYWRhcHRlciwgc2l6ZV90IGluZGV4KQotewotICAgIHJldHVybiBh
ZGFwdGVyLT5hZGFwdGVyLT5nZXRGZWF0dXJlQXRJbmRleChpbmRleCk7Ci19Ci0KIHZvaWQgd2dw
dUFkYXB0ZXJSZXF1ZXN0RGV2aWNlKFdHUFVBZGFwdGVyIGFkYXB0ZXIsIGNvbnN0IFdHUFVEZXZp
Y2VEZXNjcmlwdG9yKiBkZXNjcmlwdG9yLCBXR1BVUmVxdWVzdERldmljZUNhbGxiYWNrIGNhbGxi
YWNrLCB2b2lkKiB1c2VyZGF0YSkKIHsKICAgICBhZGFwdGVyLT5hZGFwdGVyLT5yZXF1ZXN0RGV2
aWNlKGRlc2NyaXB0b3IsIFtjYWxsYmFjaywgdXNlcmRhdGFdIChXR1BVUmVxdWVzdERldmljZVN0
YXR1cyBzdGF0dXMsIFJlZjxXZWJHUFU6OkRldmljZT4mJiBkZXZpY2UsIGNvbnN0IGNoYXIqIG1l
c3NhZ2UpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJHUFUvV2ViR1BVL0NvbW1hbmRFbmNvZGVy
LmggYi9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9Db21tYW5kRW5jb2Rlci5oCmluZGV4IDU5Y2I0MzEy
ZDM1YmE5NDMzOGI4Y2U0YmY3ZDA0ZTUzOWYyOTlmNzcuLjJmNjBmMWM4YTc1MmNkZTdmMDgyNDRl
YmNkYzg5MTMzZDcxYTc0YzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJHUFUvV2ViR1BVL0NvbW1h
bmRFbmNvZGVyLmgKKysrIGIvU291cmNlL1dlYkdQVS9XZWJHUFUvQ29tbWFuZEVuY29kZXIuaApA
QCAtNTQsNyArNTQsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBjb3B5QnVmZmVyVG9UZXh0dXJlKGNv
bnN0IFdHUFVJbWFnZUNvcHlCdWZmZXIqIHNvdXJjZSwgY29uc3QgV0dQVUltYWdlQ29weVRleHR1
cmUqIGRlc3RpbmF0aW9uLCBjb25zdCBXR1BVRXh0ZW50M0QqIGNvcHlTaXplKTsKICAgICB2b2lk
IGNvcHlUZXh0dXJlVG9CdWZmZXIoY29uc3QgV0dQVUltYWdlQ29weVRleHR1cmUqIHNvdXJjZSwg
Y29uc3QgV0dQVUltYWdlQ29weUJ1ZmZlciogZGVzdGluYXRpb24sIGNvbnN0IFdHUFVFeHRlbnQz
RCogY29weVNpemUpOwogICAgIHZvaWQgY29weVRleHR1cmVUb1RleHR1cmUoY29uc3QgV0dQVUlt
YWdlQ29weVRleHR1cmUqIHNvdXJjZSwgY29uc3QgV0dQVUltYWdlQ29weVRleHR1cmUqIGRlc3Rp
bmF0aW9uLCBjb25zdCBXR1BVRXh0ZW50M0QqIGNvcHlTaXplKTsKLSAgICB2b2lkIGZpbGxCdWZm
ZXIoY29uc3QgQnVmZmVyJiBkZXN0aW5hdGlvbiwgdWludDY0X3QgZGVzdGluYXRpb25PZmZzZXQs
IHVpbnQ2NF90IHNpemUpOworICAgIHZvaWQgY2xlYXJCdWZmZXIoY29uc3QgQnVmZmVyJiwgdWlu
dDY0X3Qgb2Zmc2V0LCB1aW50NjRfdCBzaXplKTsKICAgICBSZWY8Q29tbWFuZEJ1ZmZlcj4gZmlu
aXNoKGNvbnN0IFdHUFVDb21tYW5kQnVmZmVyRGVzY3JpcHRvciopOwogICAgIHZvaWQgaW5zZXJ0
RGVidWdNYXJrZXIoY29uc3QgY2hhciogbWFya2VyTGFiZWwpOwogICAgIHZvaWQgcG9wRGVidWdH
cm91cCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkdQVS9XZWJHUFUvQ29tbWFuZEVuY29kZXIu
bW0gYi9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9Db21tYW5kRW5jb2Rlci5tbQppbmRleCA4ZDM4ZTE3
OWE0NDM5N2JmZjgzNjBlZjQxNGM4ZjcyZjAxNWJkYWZmLi5kZDVjYzNiMzMwYTAyNjIwOTZmNTQx
ODM0ZjZjYzZmN2UyYjRiNGI3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9Db21t
YW5kRW5jb2Rlci5tbQorKysgYi9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9Db21tYW5kRW5jb2Rlci5t
bQpAQCAtODEsMTAgKzgxLDEwIEBAIHZvaWQgQ29tbWFuZEVuY29kZXI6OmNvcHlUZXh0dXJlVG9U
ZXh0dXJlKGNvbnN0IFdHUFVJbWFnZUNvcHlUZXh0dXJlKiBzb3VyY2UsIGNvCiAgICAgVU5VU0VE
X1BBUkFNKGNvcHlTaXplKTsKIH0KIAotdm9pZCBDb21tYW5kRW5jb2Rlcjo6ZmlsbEJ1ZmZlcihj
b25zdCBCdWZmZXImIGRlc3RpbmF0aW9uLCB1aW50NjRfdCBkZXN0aW5hdGlvbk9mZnNldCwgdWlu
dDY0X3Qgc2l6ZSkKK3ZvaWQgQ29tbWFuZEVuY29kZXI6OmNsZWFyQnVmZmVyKGNvbnN0IEJ1ZmZl
ciYgYnVmZmVyLCB1aW50NjRfdCBvZmZzZXQsIHVpbnQ2NF90IHNpemUpCiB7Ci0gICAgVU5VU0VE
X1BBUkFNKGRlc3RpbmF0aW9uKTsKLSAgICBVTlVTRURfUEFSQU0oZGVzdGluYXRpb25PZmZzZXQp
OworICAgIFVOVVNFRF9QQVJBTShidWZmZXIpOworICAgIFVOVVNFRF9QQVJBTShvZmZzZXQpOwog
ICAgIFVOVVNFRF9QQVJBTShzaXplKTsKIH0KIApAQCAtMTY1LDkgKzE2NSw5IEBAIHZvaWQgd2dw
dUNvbW1hbmRFbmNvZGVyQ29weVRleHR1cmVUb1RleHR1cmUoV0dQVUNvbW1hbmRFbmNvZGVyIGNv
bW1hbmRFbmNvZGVyLCBjCiAgICAgY29tbWFuZEVuY29kZXItPmNvbW1hbmRFbmNvZGVyLT5jb3B5
VGV4dHVyZVRvVGV4dHVyZShzb3VyY2UsIGRlc3RpbmF0aW9uLCBjb3B5U2l6ZSk7CiB9CiAKLXZv
aWQgd2dwdUNvbW1hbmRFbmNvZGVyRmlsbEJ1ZmZlcihXR1BVQ29tbWFuZEVuY29kZXIgY29tbWFu
ZEVuY29kZXIsIFdHUFVCdWZmZXIgZGVzdGluYXRpb24sIHVpbnQ2NF90IGRlc3RpbmF0aW9uT2Zm
c2V0LCB1aW50NjRfdCBzaXplKQordm9pZCB3Z3B1Q29tbWFuZEVuY29kZXJDbGVhckJ1ZmZlcihX
R1BVQ29tbWFuZEVuY29kZXIgY29tbWFuZEVuY29kZXIsIFdHUFVCdWZmZXIgYnVmZmVyLCB1aW50
NjRfdCBvZmZzZXQsIHVpbnQ2NF90IHNpemUpCiB7Ci0gICAgY29tbWFuZEVuY29kZXItPmNvbW1h
bmRFbmNvZGVyLT5maWxsQnVmZmVyKGRlc3RpbmF0aW9uLT5idWZmZXIsIGRlc3RpbmF0aW9uT2Zm
c2V0LCBzaXplKTsKKyAgICBjb21tYW5kRW5jb2Rlci0+Y29tbWFuZEVuY29kZXItPmNsZWFyQnVm
ZmVyKGJ1ZmZlci0+YnVmZmVyLCBvZmZzZXQsIHNpemUpOwogfQogCiBXR1BVQ29tbWFuZEJ1ZmZl
ciB3Z3B1Q29tbWFuZEVuY29kZXJGaW5pc2goV0dQVUNvbW1hbmRFbmNvZGVyIGNvbW1hbmRFbmNv
ZGVyLCBjb25zdCBXR1BVQ29tbWFuZEJ1ZmZlckRlc2NyaXB0b3IqIGRlc2NyaXB0b3IpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9Db21wdXRlUGFzc0VuY29kZXIuaCBiL1NvdXJj
ZS9XZWJHUFUvV2ViR1BVL0NvbXB1dGVQYXNzRW5jb2Rlci5oCmluZGV4IDBjNjRhZDk2MWNiNzYz
YmIwYmVkMDY5OGNjMmZlZmQwYmQ5YmY4MWYuLmQwNjQzMmIyMGQyZGI4ZTJiOGUyZmI0MjhkYzA4
ZWUzYzAwODI5ODIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJHUFUvV2ViR1BVL0NvbXB1dGVQYXNz
RW5jb2Rlci5oCisrKyBiL1NvdXJjZS9XZWJHUFUvV2ViR1BVL0NvbXB1dGVQYXNzRW5jb2Rlci5o
CkBAIC01Nyw3ICs1Nyw2IEBAIHB1YmxpYzoKICAgICB2b2lkIHB1c2hEZWJ1Z0dyb3VwKGNvbnN0
IGNoYXIqIGdyb3VwTGFiZWwpOwogICAgIHZvaWQgc2V0QmluZEdyb3VwKHVpbnQzMl90IGdyb3Vw
SW5kZXgsIGNvbnN0IEJpbmRHcm91cCYsIHVpbnQzMl90IGR5bmFtaWNPZmZzZXRDb3VudCwgY29u
c3QgdWludDMyX3QqIGR5bmFtaWNPZmZzZXRzKTsKICAgICB2b2lkIHNldFBpcGVsaW5lKGNvbnN0
IENvbXB1dGVQaXBlbGluZSYpOwotICAgIHZvaWQgd3JpdGVUaW1lc3RhbXAoY29uc3QgUXVlcnlT
ZXQmLCB1aW50MzJfdCBxdWVyeUluZGV4KTsKICAgICB2b2lkIHNldExhYmVsKGNvbnN0IGNoYXIq
KTsKIAogcHJpdmF0ZToKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJHUFUvV2ViR1BVL0NvbXB1dGVQ
YXNzRW5jb2Rlci5tbSBiL1NvdXJjZS9XZWJHUFUvV2ViR1BVL0NvbXB1dGVQYXNzRW5jb2Rlci5t
bQppbmRleCBjMTFkNTRlZDM0NDE1NmUzZjU1Y2VlYTMxYTc3MzM4ODAyMzBlZTBjLi44OWJhMDRk
NTNlOWE0MDdlZWM4YTc2NjYyMmZlYTVlNTllN2E1OTE2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
R1BVL1dlYkdQVS9Db21wdXRlUGFzc0VuY29kZXIubW0KKysrIGIvU291cmNlL1dlYkdQVS9XZWJH
UFUvQ29tcHV0ZVBhc3NFbmNvZGVyLm1tCkBAIC05MiwxMiArOTIsNiBAQCB2b2lkIENvbXB1dGVQ
YXNzRW5jb2Rlcjo6c2V0UGlwZWxpbmUoY29uc3QgQ29tcHV0ZVBpcGVsaW5lJiBwaXBlbGluZSkK
ICAgICBVTlVTRURfUEFSQU0ocGlwZWxpbmUpOwogfQogCi12b2lkIENvbXB1dGVQYXNzRW5jb2Rl
cjo6d3JpdGVUaW1lc3RhbXAoY29uc3QgUXVlcnlTZXQmIHF1ZXJ5U2V0LCB1aW50MzJfdCBxdWVy
eUluZGV4KQotewotICAgIFVOVVNFRF9QQVJBTShxdWVyeVNldCk7Ci0gICAgVU5VU0VEX1BBUkFN
KHF1ZXJ5SW5kZXgpOwotfQotCiB2b2lkIENvbXB1dGVQYXNzRW5jb2Rlcjo6c2V0TGFiZWwoY29u
c3QgY2hhciogbGFiZWwpCiB7CiAgICAgVU5VU0VEX1BBUkFNKGxhYmVsKTsKQEAgLTE2MCwxMSAr
MTU0LDYgQEAgdm9pZCB3Z3B1Q29tcHV0ZVBhc3NFbmNvZGVyU2V0UGlwZWxpbmUoV0dQVUNvbXB1
dGVQYXNzRW5jb2RlciBjb21wdXRlUGFzc0VuY29kZXIKICAgICBjb21wdXRlUGFzc0VuY29kZXIt
PmNvbXB1dGVQYXNzRW5jb2Rlci0+c2V0UGlwZWxpbmUocGlwZWxpbmUtPmNvbXB1dGVQaXBlbGlu
ZSk7CiB9CiAKLXZvaWQgd2dwdUNvbXB1dGVQYXNzRW5jb2RlcldyaXRlVGltZXN0YW1wKFdHUFVD
b21wdXRlUGFzc0VuY29kZXIgY29tcHV0ZVBhc3NFbmNvZGVyLCBXR1BVUXVlcnlTZXQgcXVlcnlT
ZXQsIHVpbnQzMl90IHF1ZXJ5SW5kZXgpCi17Ci0gICAgY29tcHV0ZVBhc3NFbmNvZGVyLT5jb21w
dXRlUGFzc0VuY29kZXItPndyaXRlVGltZXN0YW1wKHF1ZXJ5U2V0LT5xdWVyeVNldCwgcXVlcnlJ
bmRleCk7Ci19Ci0KIHZvaWQgd2dwdUNvbXB1dGVQYXNzRW5jb2RlclNldExhYmVsKFdHUFVDb21w
dXRlUGFzc0VuY29kZXIgY29tcHV0ZVBhc3NFbmNvZGVyLCBjb25zdCBjaGFyKiBsYWJlbCkKIHsK
ICAgICBjb21wdXRlUGFzc0VuY29kZXItPmNvbXB1dGVQYXNzRW5jb2Rlci0+c2V0TGFiZWwobGFi
ZWwpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkdQVS9XZWJHUFUvRGV2aWNlLmggYi9Tb3VyY2Uv
V2ViR1BVL1dlYkdQVS9EZXZpY2UuaAppbmRleCAyODg3YWZlYWU1YmQ3NDIwNmRjMjY1MjA3NmQ5
NDk4MGYyNjIwYTk2Li41MjVjMTNiMTdkOTY0N2U2MmJjZDA5YWZjN2NiYTBmMzk0ZTY0OTZiIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9EZXZpY2UuaAorKysgYi9Tb3VyY2UvV2Vi
R1BVL1dlYkdQVS9EZXZpY2UuaApAQCAtNzUsOCArNzUsMTAgQEAgcHVibGljOgogICAgIFJlZjxT
d2FwQ2hhaW4+IGNyZWF0ZVN3YXBDaGFpbihjb25zdCBTdXJmYWNlJiwgY29uc3QgV0dQVVN3YXBD
aGFpbkRlc2NyaXB0b3IqKTsKICAgICBSZWY8VGV4dHVyZT4gY3JlYXRlVGV4dHVyZShjb25zdCBX
R1BVVGV4dHVyZURlc2NyaXB0b3IqKTsKICAgICB2b2lkIGRlc3Ryb3koKTsKKyAgICBzaXplX3Qg
ZW51bWVyYXRlRmVhdHVyZXMoV0dQVUZlYXR1cmVOYW1lKiBmZWF0dXJlcyk7CiAgICAgYm9vbCBn
ZXRMaW1pdHMoV0dQVVN1cHBvcnRlZExpbWl0cyopOwogICAgIFJlZjxRdWV1ZT4gZ2V0UXVldWUo
KTsKKyAgICBib29sIGhhc0ZlYXR1cmUoV0dQVUZlYXR1cmVOYW1lKTsKICAgICBib29sIHBvcEVy
cm9yU2NvcGUoV1RGOjpGdW5jdGlvbjx2b2lkKFdHUFVFcnJvclR5cGUsIGNvbnN0IGNoYXIqKT4m
JiBjYWxsYmFjayk7CiAgICAgdm9pZCBwdXNoRXJyb3JTY29wZShXR1BVRXJyb3JGaWx0ZXIpOwog
ICAgIHZvaWQgc2V0RGV2aWNlTG9zdENhbGxiYWNrKFdURjo6RnVuY3Rpb248dm9pZChXR1BVRGV2
aWNlTG9zdFJlYXNvbiwgY29uc3QgY2hhciopPiYmKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJH
UFUvV2ViR1BVL0RldmljZS5tbSBiL1NvdXJjZS9XZWJHUFUvV2ViR1BVL0RldmljZS5tbQppbmRl
eCBmMWE4NTRmZGIyYTk1NjQyNDlmNWIwZGQ1MzVlY2E0OGU1MWZhNTg0Li4xNGY1NWNkNDBiMWJj
N2FjM2U4ZTcyZWE1OTBkMDcxYTMyZmRlNzhiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViR1BVL1dl
YkdQVS9EZXZpY2UubW0KKysrIGIvU291cmNlL1dlYkdQVS9XZWJHUFUvRGV2aWNlLm1tCkBAIC0x
NDUsNiArMTQ1LDEyIEBAIHZvaWQgRGV2aWNlOjpkZXN0cm95KCkKIHsKIH0KIAorc2l6ZV90IERl
dmljZTo6ZW51bWVyYXRlRmVhdHVyZXMoV0dQVUZlYXR1cmVOYW1lKiBmZWF0dXJlcykKK3sKKyAg
ICBVTlVTRURfUEFSQU0oZmVhdHVyZXMpOworICAgIHJldHVybiAwOworfQorCiBib29sIERldmlj
ZTo6Z2V0TGltaXRzKFdHUFVTdXBwb3J0ZWRMaW1pdHMqIGxpbWl0cykKIHsKICAgICBVTlVTRURf
UEFSQU0obGltaXRzKTsKQEAgLTE1Niw2ICsxNjIsMTIgQEAgUmVmPFF1ZXVlPiBEZXZpY2U6Omdl
dFF1ZXVlKCkKICAgICByZXR1cm4gUXVldWU6OmNyZWF0ZSgpOwogfQogCitib29sIERldmljZTo6
aGFzRmVhdHVyZShXR1BVRmVhdHVyZU5hbWUgZmVhdHVyZSkKK3sKKyAgICBVTlVTRURfUEFSQU0o
ZmVhdHVyZSk7CisgICAgcmV0dXJuIGZhbHNlOworfQorCiBib29sIERldmljZTo6cG9wRXJyb3JT
Y29wZShXVEY6OkZ1bmN0aW9uPHZvaWQoV0dQVUVycm9yVHlwZSwgY29uc3QgY2hhciopPiYmIGNh
bGxiYWNrKQogewogICAgIFVOVVNFRF9QQVJBTShjYWxsYmFjayk7CkBAIC0yNzMsNiArMjg1LDEx
IEBAIHZvaWQgd2dwdURldmljZURlc3Ryb3koV0dQVURldmljZSBkZXZpY2UpCiAgICAgZGV2aWNl
LT5kZXZpY2UtPmRlc3Ryb3koKTsKIH0KIAorc2l6ZV90IHdncHVEZXZpY2VFbnVtZXJhdGVGZWF0
dXJlcyhXR1BVRGV2aWNlIGRldmljZSwgV0dQVUZlYXR1cmVOYW1lKiBmZWF0dXJlcykKK3sKKyAg
ICByZXR1cm4gZGV2aWNlLT5kZXZpY2UtPmVudW1lcmF0ZUZlYXR1cmVzKGZlYXR1cmVzKTsKK30K
KwogYm9vbCB3Z3B1RGV2aWNlR2V0TGltaXRzKFdHUFVEZXZpY2UgZGV2aWNlLCBXR1BVU3VwcG9y
dGVkTGltaXRzKiBsaW1pdHMpCiB7CiAgICAgcmV0dXJuIGRldmljZS0+ZGV2aWNlLT5nZXRMaW1p
dHMobGltaXRzKTsKQEAgLTI4Myw2ICszMDAsMTEgQEAgV0dQVVF1ZXVlIHdncHVEZXZpY2VHZXRR
dWV1ZShXR1BVRGV2aWNlIGRldmljZSkKICAgICByZXR1cm4gbmV3IFdHUFVRdWV1ZUltcGwgeyBk
ZXZpY2UtPmRldmljZS0+Z2V0UXVldWUoKSB9OwogfQogCitib29sIHdncHVEZXZpY2VIYXNGZWF0
dXJlKFdHUFVEZXZpY2UgZGV2aWNlLCBXR1BVRmVhdHVyZU5hbWUgZmVhdHVyZSkKK3sKKyAgICBy
ZXR1cm4gZGV2aWNlLT5kZXZpY2UtPmhhc0ZlYXR1cmUoZmVhdHVyZSk7Cit9CisKIGJvb2wgd2dw
dURldmljZVBvcEVycm9yU2NvcGUoV0dQVURldmljZSBkZXZpY2UsIFdHUFVFcnJvckNhbGxiYWNr
IGNhbGxiYWNrLCB2b2lkKiB1c2VyZGF0YSkKIHsKICAgICByZXR1cm4gZGV2aWNlLT5kZXZpY2Ut
PnBvcEVycm9yU2NvcGUoW2NhbGxiYWNrLCB1c2VyZGF0YV0gKFdHUFVFcnJvclR5cGUgdHlwZSwg
Y29uc3QgY2hhciogbWVzc2FnZSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkdQVS9XZWJHUFUv
SW5zdGFuY2UubW0gYi9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9JbnN0YW5jZS5tbQppbmRleCA1MDJi
ZTQ3OWIxYzk2ODAxYmIzMTNiNjAxODJkM2JlMmM5YjVlNTc1Li41MmNlMmE3YzBmNjI2NWY1NjBj
ZTViNjc4OTk4ZTU4YjMyNzRkYjQ1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9J
bnN0YW5jZS5tbQorKysgYi9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9JbnN0YW5jZS5tbQpAQCAtNzIs
MjYgKzcyLDE3IEBAIFdHUFVQcm9jIHdncHVHZXRQcm9jQWRkcmVzcyhXR1BVRGV2aWNlIGRldmlj
ZSwgY29uc3QgY2hhciogcHJvY05hbWUpCiB7CiAgICAgVU5VU0VEX1BBUkFNKGRldmljZSk7CiAg
ICAgLy8gRklYTUU6IFVzZSBncGVyZiB0byBtYWtlIHRoaXMgZmFzdGVyLgotICAgIGlmICghc3Ry
Y21wKHByb2NOYW1lLCAid2dwdUFkYXB0ZXJHZXRGZWF0dXJlQXRJbmRleCIpKQotICAgICAgICBy
ZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxXR1BVUHJvYz4oJndncHVBZGFwdGVyR2V0RmVhdHVyZUF0
SW5kZXgpOworICAgIC8vIEZJWE1FOiBHZW5lcmF0ZSB0aGlzIGF0IGJ1aWxkIHRpbWUKKyAgICBp
ZiAoIXN0cmNtcChwcm9jTmFtZSwgIndncHVBZGFwdGVyRW51bWVyYXRlRmVhdHVyZXMiKSkKKyAg
ICAgICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8V0dQVVByb2M+KCZ3Z3B1QWRhcHRlckVudW1l
cmF0ZUZlYXR1cmVzKTsKICAgICBpZiAoIXN0cmNtcChwcm9jTmFtZSwgIndncHVBZGFwdGVyR2V0
TGltaXRzIikpCiAgICAgICAgIHJldHVybiByZWludGVycHJldF9jYXN0PFdHUFVQcm9jPigmd2dw
dUFkYXB0ZXJHZXRMaW1pdHMpOwogICAgIGlmICghc3RyY21wKHByb2NOYW1lLCAid2dwdUFkYXB0
ZXJHZXRQcm9wZXJ0aWVzIikpCiAgICAgICAgIHJldHVybiByZWludGVycHJldF9jYXN0PFdHUFVQ
cm9jPigmd2dwdUFkYXB0ZXJHZXRQcm9wZXJ0aWVzKTsKICAgICBpZiAoIXN0cmNtcChwcm9jTmFt
ZSwgIndncHVBZGFwdGVySGFzRmVhdHVyZSIpKQogICAgICAgICByZXR1cm4gcmVpbnRlcnByZXRf
Y2FzdDxXR1BVUHJvYz4oJndncHVBZGFwdGVySGFzRmVhdHVyZSk7Ci0gICAgaWYgKCFzdHJjbXAo
cHJvY05hbWUsICJ3Z3B1QWRhcHRlclJlbGVhc2UiKSkKLSAgICAgICAgcmV0dXJuIHJlaW50ZXJw
cmV0X2Nhc3Q8V0dQVVByb2M+KCZ3Z3B1QWRhcHRlclJlbGVhc2UpOwogICAgIGlmICghc3RyY21w
KHByb2NOYW1lLCAid2dwdUFkYXB0ZXJSZXF1ZXN0RGV2aWNlIikpCiAgICAgICAgIHJldHVybiBy
ZWludGVycHJldF9jYXN0PFdHUFVQcm9jPigmd2dwdUFkYXB0ZXJSZXF1ZXN0RGV2aWNlKTsKLSAg
ICBpZiAoIXN0cmNtcChwcm9jTmFtZSwgIndncHVCaW5kR3JvdXBMYXlvdXRSZWxlYXNlIikpCi0g
ICAgICAgIHJldHVybiByZWludGVycHJldF9jYXN0PFdHUFVQcm9jPigmd2dwdUJpbmRHcm91cExh
eW91dFJlbGVhc2UpOwotICAgIGlmICghc3RyY21wKHByb2NOYW1lLCAid2dwdUJpbmRHcm91cExh
eW91dFNldExhYmVsIikpCi0gICAgICAgIHJldHVybiByZWludGVycHJldF9jYXN0PFdHUFVQcm9j
Pigmd2dwdUJpbmRHcm91cExheW91dFNldExhYmVsKTsKLSAgICBpZiAoIXN0cmNtcChwcm9jTmFt
ZSwgIndncHVCaW5kR3JvdXBSZWxlYXNlIikpCi0gICAgICAgIHJldHVybiByZWludGVycHJldF9j
YXN0PFdHUFVQcm9jPigmd2dwdUJpbmRHcm91cFJlbGVhc2UpOwotICAgIGlmICghc3RyY21wKHBy
b2NOYW1lLCAid2dwdUJpbmRHcm91cFNldExhYmVsIikpCi0gICAgICAgIHJldHVybiByZWludGVy
cHJldF9jYXN0PFdHUFVQcm9jPigmd2dwdUJpbmRHcm91cFNldExhYmVsKTsKICAgICBpZiAoIXN0
cmNtcChwcm9jTmFtZSwgIndncHVCdWZmZXJEZXN0cm95IikpCiAgICAgICAgIHJldHVybiByZWlu
dGVycHJldF9jYXN0PFdHUFVQcm9jPigmd2dwdUJ1ZmZlckRlc3Ryb3kpOwogICAgIGlmICghc3Ry
Y21wKHByb2NOYW1lLCAid2dwdUJ1ZmZlckdldENvbnN0TWFwcGVkUmFuZ2UiKSkKQEAgLTEwMCwy
MCArOTEsMTQgQEAgV0dQVVByb2Mgd2dwdUdldFByb2NBZGRyZXNzKFdHUFVEZXZpY2UgZGV2aWNl
LCBjb25zdCBjaGFyKiBwcm9jTmFtZSkKICAgICAgICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8
V0dQVVByb2M+KCZ3Z3B1QnVmZmVyR2V0TWFwcGVkUmFuZ2UpOwogICAgIGlmICghc3RyY21wKHBy
b2NOYW1lLCAid2dwdUJ1ZmZlck1hcEFzeW5jIikpCiAgICAgICAgIHJldHVybiByZWludGVycHJl
dF9jYXN0PFdHUFVQcm9jPigmd2dwdUJ1ZmZlck1hcEFzeW5jKTsKLSAgICBpZiAoIXN0cmNtcChw
cm9jTmFtZSwgIndncHVCdWZmZXJSZWxlYXNlIikpCi0gICAgICAgIHJldHVybiByZWludGVycHJl
dF9jYXN0PFdHUFVQcm9jPigmd2dwdUJ1ZmZlclJlbGVhc2UpOwotICAgIGlmICghc3RyY21wKHBy
b2NOYW1lLCAid2dwdUJ1ZmZlclNldExhYmVsIikpCi0gICAgICAgIHJldHVybiByZWludGVycHJl
dF9jYXN0PFdHUFVQcm9jPigmd2dwdUJ1ZmZlclNldExhYmVsKTsKICAgICBpZiAoIXN0cmNtcChw
cm9jTmFtZSwgIndncHVCdWZmZXJVbm1hcCIpKQogICAgICAgICByZXR1cm4gcmVpbnRlcnByZXRf
Y2FzdDxXR1BVUHJvYz4oJndncHVCdWZmZXJVbm1hcCk7Ci0gICAgaWYgKCFzdHJjbXAocHJvY05h
bWUsICJ3Z3B1Q29tbWFuZEJ1ZmZlclJlbGVhc2UiKSkKLSAgICAgICAgcmV0dXJuIHJlaW50ZXJw
cmV0X2Nhc3Q8V0dQVVByb2M+KCZ3Z3B1Q29tbWFuZEJ1ZmZlclJlbGVhc2UpOwotICAgIGlmICgh
c3RyY21wKHByb2NOYW1lLCAid2dwdUNvbW1hbmRCdWZmZXJTZXRMYWJlbCIpKQotICAgICAgICBy
ZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxXR1BVUHJvYz4oJndncHVDb21tYW5kQnVmZmVyU2V0TGFi
ZWwpOwogICAgIGlmICghc3RyY21wKHByb2NOYW1lLCAid2dwdUNvbW1hbmRFbmNvZGVyQmVnaW5D
b21wdXRlUGFzcyIpKQogICAgICAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxXR1BVUHJvYz4o
JndncHVDb21tYW5kRW5jb2RlckJlZ2luQ29tcHV0ZVBhc3MpOwogICAgIGlmICghc3RyY21wKHBy
b2NOYW1lLCAid2dwdUNvbW1hbmRFbmNvZGVyQmVnaW5SZW5kZXJQYXNzIikpCiAgICAgICAgIHJl
dHVybiByZWludGVycHJldF9jYXN0PFdHUFVQcm9jPigmd2dwdUNvbW1hbmRFbmNvZGVyQmVnaW5S
ZW5kZXJQYXNzKTsKKyAgICBpZiAoIXN0cmNtcChwcm9jTmFtZSwgIndncHVDb21tYW5kRW5jb2Rl
ckNsZWFyQnVmZmVyIikpCisgICAgICAgIHJldHVybiByZWludGVycHJldF9jYXN0PFdHUFVQcm9j
Pigmd2dwdUNvbW1hbmRFbmNvZGVyQ2xlYXJCdWZmZXIpOwogICAgIGlmICghc3RyY21wKHByb2NO
YW1lLCAid2dwdUNvbW1hbmRFbmNvZGVyQ29weUJ1ZmZlclRvQnVmZmVyIikpCiAgICAgICAgIHJl
dHVybiByZWludGVycHJldF9jYXN0PFdHUFVQcm9jPigmd2dwdUNvbW1hbmRFbmNvZGVyQ29weUJ1
ZmZlclRvQnVmZmVyKTsKICAgICBpZiAoIXN0cmNtcChwcm9jTmFtZSwgIndncHVDb21tYW5kRW5j
b2RlckNvcHlCdWZmZXJUb1RleHR1cmUiKSkKQEAgLTEyMiw4ICsxMDcsNiBAQCBXR1BVUHJvYyB3
Z3B1R2V0UHJvY0FkZHJlc3MoV0dQVURldmljZSBkZXZpY2UsIGNvbnN0IGNoYXIqIHByb2NOYW1l
KQogICAgICAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxXR1BVUHJvYz4oJndncHVDb21tYW5k
RW5jb2RlckNvcHlUZXh0dXJlVG9CdWZmZXIpOwogICAgIGlmICghc3RyY21wKHByb2NOYW1lLCAi
d2dwdUNvbW1hbmRFbmNvZGVyQ29weVRleHR1cmVUb1RleHR1cmUiKSkKICAgICAgICAgcmV0dXJu
IHJlaW50ZXJwcmV0X2Nhc3Q8V0dQVVByb2M+KCZ3Z3B1Q29tbWFuZEVuY29kZXJDb3B5VGV4dHVy
ZVRvVGV4dHVyZSk7Ci0gICAgaWYgKCFzdHJjbXAocHJvY05hbWUsICJ3Z3B1Q29tbWFuZEVuY29k
ZXJGaWxsQnVmZmVyIikpCi0gICAgICAgIHJldHVybiByZWludGVycHJldF9jYXN0PFdHUFVQcm9j
Pigmd2dwdUNvbW1hbmRFbmNvZGVyRmlsbEJ1ZmZlcik7CiAgICAgaWYgKCFzdHJjbXAocHJvY05h
bWUsICJ3Z3B1Q29tbWFuZEVuY29kZXJGaW5pc2giKSkKICAgICAgICAgcmV0dXJuIHJlaW50ZXJw
cmV0X2Nhc3Q8V0dQVVByb2M+KCZ3Z3B1Q29tbWFuZEVuY29kZXJGaW5pc2gpOwogICAgIGlmICgh
c3RyY21wKHByb2NOYW1lLCAid2dwdUNvbW1hbmRFbmNvZGVySW5zZXJ0RGVidWdNYXJrZXIiKSkK
QEAgLTEzMiwxMiArMTE1LDggQEAgV0dQVVByb2Mgd2dwdUdldFByb2NBZGRyZXNzKFdHUFVEZXZp
Y2UgZGV2aWNlLCBjb25zdCBjaGFyKiBwcm9jTmFtZSkKICAgICAgICAgcmV0dXJuIHJlaW50ZXJw
cmV0X2Nhc3Q8V0dQVVByb2M+KCZ3Z3B1Q29tbWFuZEVuY29kZXJQb3BEZWJ1Z0dyb3VwKTsKICAg
ICBpZiAoIXN0cmNtcChwcm9jTmFtZSwgIndncHVDb21tYW5kRW5jb2RlclB1c2hEZWJ1Z0dyb3Vw
IikpCiAgICAgICAgIHJldHVybiByZWludGVycHJldF9jYXN0PFdHUFVQcm9jPigmd2dwdUNvbW1h
bmRFbmNvZGVyUHVzaERlYnVnR3JvdXApOwotICAgIGlmICghc3RyY21wKHByb2NOYW1lLCAid2dw
dUNvbW1hbmRFbmNvZGVyUmVsZWFzZSIpKQotICAgICAgICByZXR1cm4gcmVpbnRlcnByZXRfY2Fz
dDxXR1BVUHJvYz4oJndncHVDb21tYW5kRW5jb2RlclJlbGVhc2UpOwogICAgIGlmICghc3RyY21w
KHByb2NOYW1lLCAid2dwdUNvbW1hbmRFbmNvZGVyUmVzb2x2ZVF1ZXJ5U2V0IikpCiAgICAgICAg
IHJldHVybiByZWludGVycHJldF9jYXN0PFdHUFVQcm9jPigmd2dwdUNvbW1hbmRFbmNvZGVyUmVz
b2x2ZVF1ZXJ5U2V0KTsKLSAgICBpZiAoIXN0cmNtcChwcm9jTmFtZSwgIndncHVDb21tYW5kRW5j
b2RlclNldExhYmVsIikpCi0gICAgICAgIHJldHVybiByZWludGVycHJldF9jYXN0PFdHUFVQcm9j
Pigmd2dwdUNvbW1hbmRFbmNvZGVyU2V0TGFiZWwpOwogICAgIGlmICghc3RyY21wKHByb2NOYW1l
LCAid2dwdUNvbW1hbmRFbmNvZGVyV3JpdGVUaW1lc3RhbXAiKSkKICAgICAgICAgcmV0dXJuIHJl
aW50ZXJwcmV0X2Nhc3Q8V0dQVVByb2M+KCZ3Z3B1Q29tbWFuZEVuY29kZXJXcml0ZVRpbWVzdGFt
cCk7CiAgICAgaWYgKCFzdHJjbXAocHJvY05hbWUsICJ3Z3B1Q29tcHV0ZVBhc3NFbmNvZGVyQmVn
aW5QaXBlbGluZVN0YXRpc3RpY3NRdWVyeSIpKQpAQCAtMTU2LDIwICsxMzUsMTIgQEAgV0dQVVBy
b2Mgd2dwdUdldFByb2NBZGRyZXNzKFdHUFVEZXZpY2UgZGV2aWNlLCBjb25zdCBjaGFyKiBwcm9j
TmFtZSkKICAgICAgICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8V0dQVVByb2M+KCZ3Z3B1Q29t
cHV0ZVBhc3NFbmNvZGVyUG9wRGVidWdHcm91cCk7CiAgICAgaWYgKCFzdHJjbXAocHJvY05hbWUs
ICJ3Z3B1Q29tcHV0ZVBhc3NFbmNvZGVyUHVzaERlYnVnR3JvdXAiKSkKICAgICAgICAgcmV0dXJu
IHJlaW50ZXJwcmV0X2Nhc3Q8V0dQVVByb2M+KCZ3Z3B1Q29tcHV0ZVBhc3NFbmNvZGVyUHVzaERl
YnVnR3JvdXApOwotICAgIGlmICghc3RyY21wKHByb2NOYW1lLCAid2dwdUNvbXB1dGVQYXNzRW5j
b2RlclJlbGVhc2UiKSkKLSAgICAgICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8V0dQVVByb2M+
KCZ3Z3B1Q29tcHV0ZVBhc3NFbmNvZGVyUmVsZWFzZSk7CiAgICAgaWYgKCFzdHJjbXAocHJvY05h
bWUsICJ3Z3B1Q29tcHV0ZVBhc3NFbmNvZGVyU2V0QmluZEdyb3VwIikpCiAgICAgICAgIHJldHVy
biByZWludGVycHJldF9jYXN0PFdHUFVQcm9jPigmd2dwdUNvbXB1dGVQYXNzRW5jb2RlclNldEJp
bmRHcm91cCk7Ci0gICAgaWYgKCFzdHJjbXAocHJvY05hbWUsICJ3Z3B1Q29tcHV0ZVBhc3NFbmNv
ZGVyU2V0TGFiZWwiKSkKLSAgICAgICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8V0dQVVByb2M+
KCZ3Z3B1Q29tcHV0ZVBhc3NFbmNvZGVyU2V0TGFiZWwpOwogICAgIGlmICghc3RyY21wKHByb2NO
YW1lLCAid2dwdUNvbXB1dGVQYXNzRW5jb2RlclNldFBpcGVsaW5lIikpCiAgICAgICAgIHJldHVy
biByZWludGVycHJldF9jYXN0PFdHUFVQcm9jPigmd2dwdUNvbXB1dGVQYXNzRW5jb2RlclNldFBp
cGVsaW5lKTsKLSAgICBpZiAoIXN0cmNtcChwcm9jTmFtZSwgIndncHVDb21wdXRlUGFzc0VuY29k
ZXJXcml0ZVRpbWVzdGFtcCIpKQotICAgICAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxXR1BV
UHJvYz4oJndncHVDb21wdXRlUGFzc0VuY29kZXJXcml0ZVRpbWVzdGFtcCk7CiAgICAgaWYgKCFz
dHJjbXAocHJvY05hbWUsICJ3Z3B1Q29tcHV0ZVBpcGVsaW5lR2V0QmluZEdyb3VwTGF5b3V0Iikp
CiAgICAgICAgIHJldHVybiByZWludGVycHJldF9jYXN0PFdHUFVQcm9jPigmd2dwdUNvbXB1dGVQ
aXBlbGluZUdldEJpbmRHcm91cExheW91dCk7Ci0gICAgaWYgKCFzdHJjbXAocHJvY05hbWUsICJ3
Z3B1Q29tcHV0ZVBpcGVsaW5lUmVsZWFzZSIpKQotICAgICAgICByZXR1cm4gcmVpbnRlcnByZXRf
Y2FzdDxXR1BVUHJvYz4oJndncHVDb21wdXRlUGlwZWxpbmVSZWxlYXNlKTsKICAgICBpZiAoIXN0
cmNtcChwcm9jTmFtZSwgIndncHVDb21wdXRlUGlwZWxpbmVTZXRMYWJlbCIpKQogICAgICAgICBy
ZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxXR1BVUHJvYz4oJndncHVDb21wdXRlUGlwZWxpbmVTZXRM
YWJlbCk7CiAgICAgaWYgKCFzdHJjbXAocHJvY05hbWUsICJ3Z3B1Q3JlYXRlSW5zdGFuY2UiKSkK
QEAgLTIwNiwyMCArMTc3LDIwIEBAIFdHUFVQcm9jIHdncHVHZXRQcm9jQWRkcmVzcyhXR1BVRGV2
aWNlIGRldmljZSwgY29uc3QgY2hhciogcHJvY05hbWUpCiAgICAgICAgIHJldHVybiByZWludGVy
cHJldF9jYXN0PFdHUFVQcm9jPigmd2dwdURldmljZUNyZWF0ZVRleHR1cmUpOwogICAgIGlmICgh
c3RyY21wKHByb2NOYW1lLCAid2dwdURldmljZURlc3Ryb3kiKSkKICAgICAgICAgcmV0dXJuIHJl
aW50ZXJwcmV0X2Nhc3Q8V0dQVVByb2M+KCZ3Z3B1RGV2aWNlRGVzdHJveSk7CisgICAgaWYgKCFz
dHJjbXAocHJvY05hbWUsICJ3Z3B1RGV2aWNlRW51bWVyYXRlRmVhdHVyZXMiKSkKKyAgICAgICAg
cmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8V0dQVVByb2M+KCZ3Z3B1RGV2aWNlRW51bWVyYXRlRmVh
dHVyZXMpOwogICAgIGlmICghc3RyY21wKHByb2NOYW1lLCAid2dwdURldmljZUdldExpbWl0cyIp
KQogICAgICAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxXR1BVUHJvYz4oJndncHVEZXZpY2VH
ZXRMaW1pdHMpOwogICAgIGlmICghc3RyY21wKHByb2NOYW1lLCAid2dwdURldmljZUdldFF1ZXVl
IikpCiAgICAgICAgIHJldHVybiByZWludGVycHJldF9jYXN0PFdHUFVQcm9jPigmd2dwdURldmlj
ZUdldFF1ZXVlKTsKKyAgICBpZiAoIXN0cmNtcChwcm9jTmFtZSwgIndncHVEZXZpY2VIYXNGZWF0
dXJlIikpCisgICAgICAgIHJldHVybiByZWludGVycHJldF9jYXN0PFdHUFVQcm9jPigmd2dwdURl
dmljZUhhc0ZlYXR1cmUpOwogICAgIGlmICghc3RyY21wKHByb2NOYW1lLCAid2dwdURldmljZVBv
cEVycm9yU2NvcGUiKSkKICAgICAgICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8V0dQVVByb2M+
KCZ3Z3B1RGV2aWNlUG9wRXJyb3JTY29wZSk7CiAgICAgaWYgKCFzdHJjbXAocHJvY05hbWUsICJ3
Z3B1RGV2aWNlUHVzaEVycm9yU2NvcGUiKSkKICAgICAgICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nh
c3Q8V0dQVVByb2M+KCZ3Z3B1RGV2aWNlUHVzaEVycm9yU2NvcGUpOwotICAgIGlmICghc3RyY21w
KHByb2NOYW1lLCAid2dwdURldmljZVJlbGVhc2UiKSkKLSAgICAgICAgcmV0dXJuIHJlaW50ZXJw
cmV0X2Nhc3Q8V0dQVVByb2M+KCZ3Z3B1RGV2aWNlUmVsZWFzZSk7CiAgICAgaWYgKCFzdHJjbXAo
cHJvY05hbWUsICJ3Z3B1RGV2aWNlU2V0RGV2aWNlTG9zdENhbGxiYWNrIikpCiAgICAgICAgIHJl
dHVybiByZWludGVycHJldF9jYXN0PFdHUFVQcm9jPigmd2dwdURldmljZVNldERldmljZUxvc3RD
YWxsYmFjayk7Ci0gICAgaWYgKCFzdHJjbXAocHJvY05hbWUsICJ3Z3B1RGV2aWNlU2V0TGFiZWwi
KSkKLSAgICAgICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8V0dQVVByb2M+KCZ3Z3B1RGV2aWNl
U2V0TGFiZWwpOwogICAgIGlmICghc3RyY21wKHByb2NOYW1lLCAid2dwdURldmljZVNldFVuY2Fw
dHVyZWRFcnJvckNhbGxiYWNrIikpCiAgICAgICAgIHJldHVybiByZWludGVycHJldF9jYXN0PFdH
UFVQcm9jPigmd2dwdURldmljZVNldFVuY2FwdHVyZWRFcnJvckNhbGxiYWNrKTsKICAgICBpZiAo
IXN0cmNtcChwcm9jTmFtZSwgIndncHVHZXRQcm9jQWRkcmVzcyIpKQpAQCAtMjI4LDI2ICsxOTks
MTIgQEAgV0dQVVByb2Mgd2dwdUdldFByb2NBZGRyZXNzKFdHUFVEZXZpY2UgZGV2aWNlLCBjb25z
dCBjaGFyKiBwcm9jTmFtZSkKICAgICAgICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8V0dQVVBy
b2M+KCZ3Z3B1SW5zdGFuY2VDcmVhdGVTdXJmYWNlKTsKICAgICBpZiAoIXN0cmNtcChwcm9jTmFt
ZSwgIndncHVJbnN0YW5jZVByb2Nlc3NFdmVudHMiKSkKICAgICAgICAgcmV0dXJuIHJlaW50ZXJw
cmV0X2Nhc3Q8V0dQVVByb2M+KCZ3Z3B1SW5zdGFuY2VQcm9jZXNzRXZlbnRzKTsKLSAgICBpZiAo
IXN0cmNtcChwcm9jTmFtZSwgIndncHVJbnN0YW5jZVJlbGVhc2UiKSkKLSAgICAgICAgcmV0dXJu
IHJlaW50ZXJwcmV0X2Nhc3Q8V0dQVVByb2M+KCZ3Z3B1SW5zdGFuY2VSZWxlYXNlKTsKICAgICBp
ZiAoIXN0cmNtcChwcm9jTmFtZSwgIndncHVJbnN0YW5jZVJlcXVlc3RBZGFwdGVyIikpCiAgICAg
ICAgIHJldHVybiByZWludGVycHJldF9jYXN0PFdHUFVQcm9jPigmd2dwdUluc3RhbmNlUmVxdWVz
dEFkYXB0ZXIpOwotICAgIGlmICghc3RyY21wKHByb2NOYW1lLCAid2dwdVBpcGVsaW5lTGF5b3V0
UmVsZWFzZSIpKQotICAgICAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxXR1BVUHJvYz4oJndn
cHVQaXBlbGluZUxheW91dFJlbGVhc2UpOwotICAgIGlmICghc3RyY21wKHByb2NOYW1lLCAid2dw
dVBpcGVsaW5lTGF5b3V0U2V0TGFiZWwiKSkKLSAgICAgICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nh
c3Q8V0dQVVByb2M+KCZ3Z3B1UGlwZWxpbmVMYXlvdXRTZXRMYWJlbCk7CiAgICAgaWYgKCFzdHJj
bXAocHJvY05hbWUsICJ3Z3B1UXVlcnlTZXREZXN0cm95IikpCiAgICAgICAgIHJldHVybiByZWlu
dGVycHJldF9jYXN0PFdHUFVQcm9jPigmd2dwdVF1ZXJ5U2V0RGVzdHJveSk7Ci0gICAgaWYgKCFz
dHJjbXAocHJvY05hbWUsICJ3Z3B1UXVlcnlTZXRSZWxlYXNlIikpCi0gICAgICAgIHJldHVybiBy
ZWludGVycHJldF9jYXN0PFdHUFVQcm9jPigmd2dwdVF1ZXJ5U2V0UmVsZWFzZSk7Ci0gICAgaWYg
KCFzdHJjbXAocHJvY05hbWUsICJ3Z3B1UXVlcnlTZXRTZXRMYWJlbCIpKQotICAgICAgICByZXR1
cm4gcmVpbnRlcnByZXRfY2FzdDxXR1BVUHJvYz4oJndncHVRdWVyeVNldFNldExhYmVsKTsKICAg
ICBpZiAoIXN0cmNtcChwcm9jTmFtZSwgIndncHVRdWV1ZU9uU3VibWl0dGVkV29ya0RvbmUiKSkK
ICAgICAgICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8V0dQVVByb2M+KCZ3Z3B1UXVldWVPblN1
Ym1pdHRlZFdvcmtEb25lKTsKLSAgICBpZiAoIXN0cmNtcChwcm9jTmFtZSwgIndncHVRdWV1ZVJl
bGVhc2UiKSkKLSAgICAgICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8V0dQVVByb2M+KCZ3Z3B1
UXVldWVSZWxlYXNlKTsKLSAgICBpZiAoIXN0cmNtcChwcm9jTmFtZSwgIndncHVRdWV1ZVNldExh
YmVsIikpCi0gICAgICAgIHJldHVybiByZWludGVycHJldF9jYXN0PFdHUFVQcm9jPigmd2dwdVF1
ZXVlU2V0TGFiZWwpOwogICAgIGlmICghc3RyY21wKHByb2NOYW1lLCAid2dwdVF1ZXVlU3VibWl0
IikpCiAgICAgICAgIHJldHVybiByZWludGVycHJldF9jYXN0PFdHUFVQcm9jPigmd2dwdVF1ZXVl
U3VibWl0KTsKICAgICBpZiAoIXN0cmNtcChwcm9jTmFtZSwgIndncHVRdWV1ZVdyaXRlQnVmZmVy
IikpCkBAIC0yNzAsMjIgKzIyNywxNCBAQCBXR1BVUHJvYyB3Z3B1R2V0UHJvY0FkZHJlc3MoV0dQ
VURldmljZSBkZXZpY2UsIGNvbnN0IGNoYXIqIHByb2NOYW1lKQogICAgICAgICByZXR1cm4gcmVp
bnRlcnByZXRfY2FzdDxXR1BVUHJvYz4oJndncHVSZW5kZXJCdW5kbGVFbmNvZGVyUG9wRGVidWdH
cm91cCk7CiAgICAgaWYgKCFzdHJjbXAocHJvY05hbWUsICJ3Z3B1UmVuZGVyQnVuZGxlRW5jb2Rl
clB1c2hEZWJ1Z0dyb3VwIikpCiAgICAgICAgIHJldHVybiByZWludGVycHJldF9jYXN0PFdHUFVQ
cm9jPigmd2dwdVJlbmRlckJ1bmRsZUVuY29kZXJQdXNoRGVidWdHcm91cCk7Ci0gICAgaWYgKCFz
dHJjbXAocHJvY05hbWUsICJ3Z3B1UmVuZGVyQnVuZGxlRW5jb2RlclJlbGVhc2UiKSkKLSAgICAg
ICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8V0dQVVByb2M+KCZ3Z3B1UmVuZGVyQnVuZGxlRW5j
b2RlclJlbGVhc2UpOwogICAgIGlmICghc3RyY21wKHByb2NOYW1lLCAid2dwdVJlbmRlckJ1bmRs
ZUVuY29kZXJTZXRCaW5kR3JvdXAiKSkKICAgICAgICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8
V0dQVVByb2M+KCZ3Z3B1UmVuZGVyQnVuZGxlRW5jb2RlclNldEJpbmRHcm91cCk7CiAgICAgaWYg
KCFzdHJjbXAocHJvY05hbWUsICJ3Z3B1UmVuZGVyQnVuZGxlRW5jb2RlclNldEluZGV4QnVmZmVy
IikpCiAgICAgICAgIHJldHVybiByZWludGVycHJldF9jYXN0PFdHUFVQcm9jPigmd2dwdVJlbmRl
ckJ1bmRsZUVuY29kZXJTZXRJbmRleEJ1ZmZlcik7Ci0gICAgaWYgKCFzdHJjbXAocHJvY05hbWUs
ICJ3Z3B1UmVuZGVyQnVuZGxlRW5jb2RlclNldExhYmVsIikpCi0gICAgICAgIHJldHVybiByZWlu
dGVycHJldF9jYXN0PFdHUFVQcm9jPigmd2dwdVJlbmRlckJ1bmRsZUVuY29kZXJTZXRMYWJlbCk7
CiAgICAgaWYgKCFzdHJjbXAocHJvY05hbWUsICJ3Z3B1UmVuZGVyQnVuZGxlRW5jb2RlclNldFBp
cGVsaW5lIikpCiAgICAgICAgIHJldHVybiByZWludGVycHJldF9jYXN0PFdHUFVQcm9jPigmd2dw
dVJlbmRlckJ1bmRsZUVuY29kZXJTZXRQaXBlbGluZSk7CiAgICAgaWYgKCFzdHJjbXAocHJvY05h
bWUsICJ3Z3B1UmVuZGVyQnVuZGxlRW5jb2RlclNldFZlcnRleEJ1ZmZlciIpKQogICAgICAgICBy
ZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxXR1BVUHJvYz4oJndncHVSZW5kZXJCdW5kbGVFbmNvZGVy
U2V0VmVydGV4QnVmZmVyKTsKLSAgICBpZiAoIXN0cmNtcChwcm9jTmFtZSwgIndncHVSZW5kZXJC
dW5kbGVSZWxlYXNlIikpCi0gICAgICAgIHJldHVybiByZWludGVycHJldF9jYXN0PFdHUFVQcm9j
Pigmd2dwdVJlbmRlckJ1bmRsZVJlbGVhc2UpOwotICAgIGlmICghc3RyY21wKHByb2NOYW1lLCAi
d2dwdVJlbmRlckJ1bmRsZVNldExhYmVsIikpCi0gICAgICAgIHJldHVybiByZWludGVycHJldF9j
YXN0PFdHUFVQcm9jPigmd2dwdVJlbmRlckJ1bmRsZVNldExhYmVsKTsKICAgICBpZiAoIXN0cmNt
cChwcm9jTmFtZSwgIndncHVSZW5kZXJQYXNzRW5jb2RlckJlZ2luT2NjbHVzaW9uUXVlcnkiKSkK
ICAgICAgICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8V0dQVVByb2M+KCZ3Z3B1UmVuZGVyUGFz
c0VuY29kZXJCZWdpbk9jY2x1c2lvblF1ZXJ5KTsKICAgICBpZiAoIXN0cmNtcChwcm9jTmFtZSwg
IndncHVSZW5kZXJQYXNzRW5jb2RlckJlZ2luUGlwZWxpbmVTdGF0aXN0aWNzUXVlcnkiKSkKQEAg
LTMxMiwxNiArMjYxLDEyIEBAIFdHUFVQcm9jIHdncHVHZXRQcm9jQWRkcmVzcyhXR1BVRGV2aWNl
IGRldmljZSwgY29uc3QgY2hhciogcHJvY05hbWUpCiAgICAgICAgIHJldHVybiByZWludGVycHJl
dF9jYXN0PFdHUFVQcm9jPigmd2dwdVJlbmRlclBhc3NFbmNvZGVyUG9wRGVidWdHcm91cCk7CiAg
ICAgaWYgKCFzdHJjbXAocHJvY05hbWUsICJ3Z3B1UmVuZGVyUGFzc0VuY29kZXJQdXNoRGVidWdH
cm91cCIpKQogICAgICAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxXR1BVUHJvYz4oJndncHVS
ZW5kZXJQYXNzRW5jb2RlclB1c2hEZWJ1Z0dyb3VwKTsKLSAgICBpZiAoIXN0cmNtcChwcm9jTmFt
ZSwgIndncHVSZW5kZXJQYXNzRW5jb2RlclJlbGVhc2UiKSkKLSAgICAgICAgcmV0dXJuIHJlaW50
ZXJwcmV0X2Nhc3Q8V0dQVVByb2M+KCZ3Z3B1UmVuZGVyUGFzc0VuY29kZXJSZWxlYXNlKTsKICAg
ICBpZiAoIXN0cmNtcChwcm9jTmFtZSwgIndncHVSZW5kZXJQYXNzRW5jb2RlclNldEJpbmRHcm91
cCIpKQogICAgICAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxXR1BVUHJvYz4oJndncHVSZW5k
ZXJQYXNzRW5jb2RlclNldEJpbmRHcm91cCk7CiAgICAgaWYgKCFzdHJjbXAocHJvY05hbWUsICJ3
Z3B1UmVuZGVyUGFzc0VuY29kZXJTZXRCbGVuZENvbnN0YW50IikpCiAgICAgICAgIHJldHVybiBy
ZWludGVycHJldF9jYXN0PFdHUFVQcm9jPigmd2dwdVJlbmRlclBhc3NFbmNvZGVyU2V0QmxlbmRD
b25zdGFudCk7CiAgICAgaWYgKCFzdHJjbXAocHJvY05hbWUsICJ3Z3B1UmVuZGVyUGFzc0VuY29k
ZXJTZXRJbmRleEJ1ZmZlciIpKQogICAgICAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxXR1BV
UHJvYz4oJndncHVSZW5kZXJQYXNzRW5jb2RlclNldEluZGV4QnVmZmVyKTsKLSAgICBpZiAoIXN0
cmNtcChwcm9jTmFtZSwgIndncHVSZW5kZXJQYXNzRW5jb2RlclNldExhYmVsIikpCi0gICAgICAg
IHJldHVybiByZWludGVycHJldF9jYXN0PFdHUFVQcm9jPigmd2dwdVJlbmRlclBhc3NFbmNvZGVy
U2V0TGFiZWwpOwogICAgIGlmICghc3RyY21wKHByb2NOYW1lLCAid2dwdVJlbmRlclBhc3NFbmNv
ZGVyU2V0UGlwZWxpbmUiKSkKICAgICAgICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8V0dQVVBy
b2M+KCZ3Z3B1UmVuZGVyUGFzc0VuY29kZXJTZXRQaXBlbGluZSk7CiAgICAgaWYgKCFzdHJjbXAo
cHJvY05hbWUsICJ3Z3B1UmVuZGVyUGFzc0VuY29kZXJTZXRTY2lzc29yUmVjdCIpKQpAQCAtMzMy
LDQ0ICsyNzcsMjQgQEAgV0dQVVByb2Mgd2dwdUdldFByb2NBZGRyZXNzKFdHUFVEZXZpY2UgZGV2
aWNlLCBjb25zdCBjaGFyKiBwcm9jTmFtZSkKICAgICAgICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nh
c3Q8V0dQVVByb2M+KCZ3Z3B1UmVuZGVyUGFzc0VuY29kZXJTZXRWZXJ0ZXhCdWZmZXIpOwogICAg
IGlmICghc3RyY21wKHByb2NOYW1lLCAid2dwdVJlbmRlclBhc3NFbmNvZGVyU2V0Vmlld3BvcnQi
KSkKICAgICAgICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8V0dQVVByb2M+KCZ3Z3B1UmVuZGVy
UGFzc0VuY29kZXJTZXRWaWV3cG9ydCk7Ci0gICAgaWYgKCFzdHJjbXAocHJvY05hbWUsICJ3Z3B1
UmVuZGVyUGFzc0VuY29kZXJXcml0ZVRpbWVzdGFtcCIpKQotICAgICAgICByZXR1cm4gcmVpbnRl
cnByZXRfY2FzdDxXR1BVUHJvYz4oJndncHVSZW5kZXJQYXNzRW5jb2RlcldyaXRlVGltZXN0YW1w
KTsKICAgICBpZiAoIXN0cmNtcChwcm9jTmFtZSwgIndncHVSZW5kZXJQaXBlbGluZUdldEJpbmRH
cm91cExheW91dCIpKQogICAgICAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxXR1BVUHJvYz4o
JndncHVSZW5kZXJQaXBlbGluZUdldEJpbmRHcm91cExheW91dCk7Ci0gICAgaWYgKCFzdHJjbXAo
cHJvY05hbWUsICJ3Z3B1UmVuZGVyUGlwZWxpbmVSZWxlYXNlIikpCi0gICAgICAgIHJldHVybiBy
ZWludGVycHJldF9jYXN0PFdHUFVQcm9jPigmd2dwdVJlbmRlclBpcGVsaW5lUmVsZWFzZSk7CiAg
ICAgaWYgKCFzdHJjbXAocHJvY05hbWUsICJ3Z3B1UmVuZGVyUGlwZWxpbmVTZXRMYWJlbCIpKQog
ICAgICAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxXR1BVUHJvYz4oJndncHVSZW5kZXJQaXBl
bGluZVNldExhYmVsKTsKLSAgICBpZiAoIXN0cmNtcChwcm9jTmFtZSwgIndncHVTYW1wbGVyUmVs
ZWFzZSIpKQotICAgICAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxXR1BVUHJvYz4oJndncHVT
YW1wbGVyUmVsZWFzZSk7Ci0gICAgaWYgKCFzdHJjbXAocHJvY05hbWUsICJ3Z3B1U2FtcGxlclNl
dExhYmVsIikpCi0gICAgICAgIHJldHVybiByZWludGVycHJldF9jYXN0PFdHUFVQcm9jPigmd2dw
dVNhbXBsZXJTZXRMYWJlbCk7Ci0gICAgaWYgKCFzdHJjbXAocHJvY05hbWUsICJ3Z3B1U2hhZGVy
TW9kdWxlUmVsZWFzZSIpKQotICAgICAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxXR1BVUHJv
Yz4oJndncHVTaGFkZXJNb2R1bGVSZWxlYXNlKTsKKyAgICBpZiAoIXN0cmNtcChwcm9jTmFtZSwg
IndncHVTaGFkZXJNb2R1bGVHZXRDb21waWxhdGlvbkluZm8iKSkKKyAgICAgICAgcmV0dXJuIHJl
aW50ZXJwcmV0X2Nhc3Q8V0dQVVByb2M+KCZ3Z3B1U2hhZGVyTW9kdWxlR2V0Q29tcGlsYXRpb25J
bmZvKTsKICAgICBpZiAoIXN0cmNtcChwcm9jTmFtZSwgIndncHVTaGFkZXJNb2R1bGVTZXRMYWJl
bCIpKQogICAgICAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxXR1BVUHJvYz4oJndncHVTaGFk
ZXJNb2R1bGVTZXRMYWJlbCk7CiAgICAgaWYgKCFzdHJjbXAocHJvY05hbWUsICJ3Z3B1U3VyZmFj
ZUdldFByZWZlcnJlZEZvcm1hdCIpKQogICAgICAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxX
R1BVUHJvYz4oJndncHVTdXJmYWNlR2V0UHJlZmVycmVkRm9ybWF0KTsKLSAgICBpZiAoIXN0cmNt
cChwcm9jTmFtZSwgIndncHVTdXJmYWNlUmVsZWFzZSIpKQotICAgICAgICByZXR1cm4gcmVpbnRl
cnByZXRfY2FzdDxXR1BVUHJvYz4oJndncHVTdXJmYWNlUmVsZWFzZSk7CiAgICAgaWYgKCFzdHJj
bXAocHJvY05hbWUsICJ3Z3B1U3dhcENoYWluR2V0Q3VycmVudFRleHR1cmVWaWV3IikpCiAgICAg
ICAgIHJldHVybiByZWludGVycHJldF9jYXN0PFdHUFVQcm9jPigmd2dwdVN3YXBDaGFpbkdldEN1
cnJlbnRUZXh0dXJlVmlldyk7CiAgICAgaWYgKCFzdHJjbXAocHJvY05hbWUsICJ3Z3B1U3dhcENo
YWluUHJlc2VudCIpKQogICAgICAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxXR1BVUHJvYz4o
JndncHVTd2FwQ2hhaW5QcmVzZW50KTsKLSAgICBpZiAoIXN0cmNtcChwcm9jTmFtZSwgIndncHVT
d2FwQ2hhaW5SZWxlYXNlIikpCi0gICAgICAgIHJldHVybiByZWludGVycHJldF9jYXN0PFdHUFVQ
cm9jPigmd2dwdVN3YXBDaGFpblJlbGVhc2UpOwogICAgIGlmICghc3RyY21wKHByb2NOYW1lLCAi
d2dwdVRleHR1cmVDcmVhdGVWaWV3IikpCiAgICAgICAgIHJldHVybiByZWludGVycHJldF9jYXN0
PFdHUFVQcm9jPigmd2dwdVRleHR1cmVDcmVhdGVWaWV3KTsKICAgICBpZiAoIXN0cmNtcChwcm9j
TmFtZSwgIndncHVUZXh0dXJlRGVzdHJveSIpKQogICAgICAgICByZXR1cm4gcmVpbnRlcnByZXRf
Y2FzdDxXR1BVUHJvYz4oJndncHVUZXh0dXJlRGVzdHJveSk7Ci0gICAgaWYgKCFzdHJjbXAocHJv
Y05hbWUsICJ3Z3B1VGV4dHVyZVJlbGVhc2UiKSkKLSAgICAgICAgcmV0dXJuIHJlaW50ZXJwcmV0
X2Nhc3Q8V0dQVVByb2M+KCZ3Z3B1VGV4dHVyZVJlbGVhc2UpOwotICAgIGlmICghc3RyY21wKHBy
b2NOYW1lLCAid2dwdVRleHR1cmVTZXRMYWJlbCIpKQotICAgICAgICByZXR1cm4gcmVpbnRlcnBy
ZXRfY2FzdDxXR1BVUHJvYz4oJndncHVUZXh0dXJlU2V0TGFiZWwpOwotICAgIGlmICghc3RyY21w
KHByb2NOYW1lLCAid2dwdVRleHR1cmVWaWV3UmVsZWFzZSIpKQotICAgICAgICByZXR1cm4gcmVp
bnRlcnByZXRfY2FzdDxXR1BVUHJvYz4oJndncHVUZXh0dXJlVmlld1JlbGVhc2UpOwotICAgIGlm
ICghc3RyY21wKHByb2NOYW1lLCAid2dwdVRleHR1cmVWaWV3U2V0TGFiZWwiKSkKLSAgICAgICAg
cmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8V0dQVVByb2M+KCZ3Z3B1VGV4dHVyZVZpZXdTZXRMYWJl
bCk7CiAgICAgcmV0dXJuIG51bGxwdHI7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJHUFUv
V2ViR1BVL1JlbmRlclBhc3NFbmNvZGVyLmggYi9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9SZW5kZXJQ
YXNzRW5jb2Rlci5oCmluZGV4IDZiNWJjYTM4ZjBhNWNkODFjY2FjZTJmMTFjY2I5NTk2NjliOWI0
ZmEuLjVjOTQ5NWEwNTkzODg1Y2U5NmE1YWU4NGRhMDMwMjlkZmU3YjM3NDUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJHUFUvV2ViR1BVL1JlbmRlclBhc3NFbmNvZGVyLmgKKysrIGIvU291cmNlL1dl
YkdQVS9XZWJHUFUvUmVuZGVyUGFzc0VuY29kZXIuaApAQCAtNzEsNyArNzEsNiBAQCBwdWJsaWM6
CiAgICAgdm9pZCBzZXRTdGVuY2lsUmVmZXJlbmNlKHVpbnQzMl90KTsKICAgICB2b2lkIHNldFZl
cnRleEJ1ZmZlcih1aW50MzJfdCBzbG90LCBjb25zdCBCdWZmZXImLCB1aW50NjRfdCBvZmZzZXQs
IHVpbnQ2NF90IHNpemUpOwogICAgIHZvaWQgc2V0Vmlld3BvcnQoZmxvYXQgeCwgZmxvYXQgeSwg
ZmxvYXQgd2lkdGgsIGZsb2F0IGhlaWdodCwgZmxvYXQgbWluRGVwdGgsIGZsb2F0IG1heERlcHRo
KTsKLSAgICB2b2lkIHdyaXRlVGltZXN0YW1wKGNvbnN0IFF1ZXJ5U2V0JiwgdWludDMyX3QgcXVl
cnlJbmRleCk7CiAgICAgdm9pZCBzZXRMYWJlbChjb25zdCBjaGFyKik7CiAKIHByaXZhdGU6CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9SZW5kZXJQYXNzRW5jb2Rlci5tbSBiL1Nv
dXJjZS9XZWJHUFUvV2ViR1BVL1JlbmRlclBhc3NFbmNvZGVyLm1tCmluZGV4IGIzYzM5M2U3MDEz
ZDkxZDJlZDFjOWRlOTIxMmM3NDI4YmVmY2VjYzUuLmNiOWRiYTFiZDM1ZWZhYzVjZmNjZjliNmU0
NjQxOTVhNmExZmYxODUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJHUFUvV2ViR1BVL1JlbmRlclBh
c3NFbmNvZGVyLm1tCisrKyBiL1NvdXJjZS9XZWJHUFUvV2ViR1BVL1JlbmRlclBhc3NFbmNvZGVy
Lm1tCkBAIC0xNzEsMTIgKzE3MSw2IEBAIHZvaWQgUmVuZGVyUGFzc0VuY29kZXI6OnNldFZpZXdw
b3J0KGZsb2F0IHgsIGZsb2F0IHksIGZsb2F0IHdpZHRoLCBmbG9hdCBoZWlnaHQsCiAgICAgVU5V
U0VEX1BBUkFNKG1heERlcHRoKTsKIH0KIAotdm9pZCBSZW5kZXJQYXNzRW5jb2Rlcjo6d3JpdGVU
aW1lc3RhbXAoY29uc3QgUXVlcnlTZXQmIHF1ZXJ5U2V0LCB1aW50MzJfdCBxdWVyeUluZGV4KQot
ewotICAgIFVOVVNFRF9QQVJBTShxdWVyeVNldCk7Ci0gICAgVU5VU0VEX1BBUkFNKHF1ZXJ5SW5k
ZXgpOwotfQotCiB2b2lkIFJlbmRlclBhc3NFbmNvZGVyOjpzZXRMYWJlbChjb25zdCBjaGFyKiBs
YWJlbCkKIHsKICAgICBVTlVTRURfUEFSQU0obGFiZWwpOwpAQCAtMjk3LDExICsyOTEsNiBAQCB2
b2lkIHdncHVSZW5kZXJQYXNzRW5jb2RlclNldFZpZXdwb3J0KFdHUFVSZW5kZXJQYXNzRW5jb2Rl
ciByZW5kZXJQYXNzRW5jb2RlciwgZgogICAgIHJlbmRlclBhc3NFbmNvZGVyLT5yZW5kZXJQYXNz
RW5jb2Rlci0+c2V0Vmlld3BvcnQoeCwgeSwgd2lkdGgsIGhlaWdodCwgbWluRGVwdGgsIG1heERl
cHRoKTsKIH0KIAotdm9pZCB3Z3B1UmVuZGVyUGFzc0VuY29kZXJXcml0ZVRpbWVzdGFtcChXR1BV
UmVuZGVyUGFzc0VuY29kZXIgcmVuZGVyUGFzc0VuY29kZXIsIFdHUFVRdWVyeVNldCBxdWVyeVNl
dCwgdWludDMyX3QgcXVlcnlJbmRleCkKLXsKLSAgICByZW5kZXJQYXNzRW5jb2Rlci0+cmVuZGVy
UGFzc0VuY29kZXItPndyaXRlVGltZXN0YW1wKHF1ZXJ5U2V0LT5xdWVyeVNldCwgcXVlcnlJbmRl
eCk7Ci19Ci0KIHZvaWQgd2dwdVJlbmRlclBhc3NFbmNvZGVyU2V0TGFiZWwoV0dQVVJlbmRlclBh
c3NFbmNvZGVyIHJlbmRlclBhc3NFbmNvZGVyLCBjb25zdCBjaGFyKiBsYWJlbCkKIHsKICAgICBy
ZW5kZXJQYXNzRW5jb2Rlci0+cmVuZGVyUGFzc0VuY29kZXItPnNldExhYmVsKGxhYmVsKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJHUFUvV2ViR1BVL1NoYWRlck1vZHVsZS5oIGIvU291cmNlL1dl
YkdQVS9XZWJHUFUvU2hhZGVyTW9kdWxlLmgKaW5kZXggY2NkOTVlMDUzMDMwNzUyYWFmN2I1Zjc2
YTllZmI0NDNlZGM1NTgzYy4uYzJhZDNlZWQxODcxNTQxYjI5NTVlZGNlMGJjZmRkMGM5NTY2ZmQ2
NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkdQVS9XZWJHUFUvU2hhZGVyTW9kdWxlLmgKKysrIGIv
U291cmNlL1dlYkdQVS9XZWJHUFUvU2hhZGVyTW9kdWxlLmgKQEAgLTQyLDYgKzQyLDcgQEAgcHVi
bGljOgogCiAgICAgflNoYWRlck1vZHVsZSgpOwogCisgICAgdm9pZCBnZXRDb21waWxhdGlvbklu
Zm8oV1RGOjpGdW5jdGlvbjx2b2lkKFdHUFVDb21waWxhdGlvbkluZm9SZXF1ZXN0U3RhdHVzLCBj
b25zdCBXR1BVQ29tcGlsYXRpb25JbmZvKik+JiYgY2FsbGJhY2spOwogICAgIHZvaWQgc2V0TGFi
ZWwoY29uc3QgY2hhciopOwogCiBwcml2YXRlOgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkdQVS9X
ZWJHUFUvU2hhZGVyTW9kdWxlLm1tIGIvU291cmNlL1dlYkdQVS9XZWJHUFUvU2hhZGVyTW9kdWxl
Lm1tCmluZGV4IDk1NGRjZjE0NmMyMzBmMTI2ZDBiYzg1NjJkMWE4NjUzY2E0ZDIyY2MuLjZjYjNj
OWU5ZjBkYWE0ZWUzYTNhNzIyODY4NDMxZGUxNzI1NjhjODMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJHUFUvV2ViR1BVL1NoYWRlck1vZHVsZS5tbQorKysgYi9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9T
aGFkZXJNb2R1bGUubW0KQEAgLTM0LDYgKzM0LDExIEBAIFNoYWRlck1vZHVsZTo6U2hhZGVyTW9k
dWxlKCkgPSBkZWZhdWx0OwogCiBTaGFkZXJNb2R1bGU6On5TaGFkZXJNb2R1bGUoKSA9IGRlZmF1
bHQ7CiAKK3ZvaWQgU2hhZGVyTW9kdWxlOjpnZXRDb21waWxhdGlvbkluZm8oV1RGOjpGdW5jdGlv
bjx2b2lkKFdHUFVDb21waWxhdGlvbkluZm9SZXF1ZXN0U3RhdHVzLCBjb25zdCBXR1BVQ29tcGls
YXRpb25JbmZvKik+JiYgY2FsbGJhY2spCit7CisgICAgVU5VU0VEX1BBUkFNKGNhbGxiYWNrKTsK
K30KKwogdm9pZCBTaGFkZXJNb2R1bGU6OnNldExhYmVsKGNvbnN0IGNoYXIqIGxhYmVsKQogewog
ICAgIFVOVVNFRF9QQVJBTShsYWJlbCk7CkBAIC00Niw2ICs1MSwxMyBAQCB2b2lkIHdncHVTaGFk
ZXJNb2R1bGVSZWxlYXNlKFdHUFVTaGFkZXJNb2R1bGUgc2hhZGVyTW9kdWxlKQogICAgIGRlbGV0
ZSBzaGFkZXJNb2R1bGU7CiB9CiAKK3ZvaWQgd2dwdVNoYWRlck1vZHVsZUdldENvbXBpbGF0aW9u
SW5mbyhXR1BVU2hhZGVyTW9kdWxlIHNoYWRlck1vZHVsZSwgV0dQVUNvbXBpbGF0aW9uSW5mb0Nh
bGxiYWNrIGNhbGxiYWNrLCB2b2lkICogdXNlcmRhdGEpCit7CisgICAgc2hhZGVyTW9kdWxlLT5z
aGFkZXJNb2R1bGUtPmdldENvbXBpbGF0aW9uSW5mbyhbY2FsbGJhY2ssIHVzZXJkYXRhXSAoV0dQ
VUNvbXBpbGF0aW9uSW5mb1JlcXVlc3RTdGF0dXMgc3RhdHVzLCBjb25zdCBXR1BVQ29tcGlsYXRp
b25JbmZvKiBjb21waWxhdGlvbkluZm8pIHsKKyAgICAgICAgY2FsbGJhY2soc3RhdHVzLCBjb21w
aWxhdGlvbkluZm8sIHVzZXJkYXRhKTsKKyAgICB9KTsKK30KKwogdm9pZCB3Z3B1U2hhZGVyTW9k
dWxlU2V0TGFiZWwoV0dQVVNoYWRlck1vZHVsZSBzaGFkZXJNb2R1bGUsIGNvbnN0IGNoYXIqIGxh
YmVsKQogewogICAgIHNoYWRlck1vZHVsZS0+c2hhZGVyTW9kdWxlLT5zZXRMYWJlbChsYWJlbCk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9XZWJHUFUuaCBiL1NvdXJjZS9XZWJH
UFUvV2ViR1BVL1dlYkdQVS5oCmluZGV4IDVhZmIzODMyNmJhYWJjOGQ2NGIwMDNhMjU1MjBjMWRl
MWIyN2ZiZjQuLjA5OTMxNmIxZDNiNzc4YmIwOGUzZDY1MjA0OGNmNjRiMzBiODhjMDEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJHUFUvV2ViR1BVL1dlYkdQVS5oCisrKyBiL1NvdXJjZS9XZWJHUFUv
V2ViR1BVL1dlYkdQVS5oCkBAIC01MiwxMiArNTIsMTMgQEAKICNpbmNsdWRlIDxzdGRkZWYuaD4K
ICNpbmNsdWRlIDxzdGRib29sLmg+CiAKLSNkZWZpbmUgV0dQVV9XSE9MRV9TSVpFICgweGZmZmZm
ZmZmZmZmZmZmZmZVTEwpCisjZGVmaW5lIFdHUFVfQVJSQVlfTEFZRVJfQ09VTlRfVU5ERUZJTkVE
ICgweGZmZmZmZmZmVUwpCiAjZGVmaW5lIFdHUFVfQ09QWV9TVFJJREVfVU5ERUZJTkVEICgweGZm
ZmZmZmZmVUwpCiAjZGVmaW5lIFdHUFVfTElNSVRfVTMyX1VOREVGSU5FRCAoMHhmZmZmZmZmZlVM
KQogI2RlZmluZSBXR1BVX0xJTUlUX1U2NF9VTkRFRklORUQgKDB4ZmZmZmZmZmZmZmZmZmZmZlVM
TCkKLSNkZWZpbmUgV0dQVV9BUlJBWV9MQVlFUl9DT1VOVF9VTkRFRklORUQgKDB4ZmZmZmZmZmZV
TCkKICNkZWZpbmUgV0dQVV9NSVBfTEVWRUxfQ09VTlRfVU5ERUZJTkVEICgweGZmZmZmZmZmVUwp
CisjZGVmaW5lIFdHUFVfV0hPTEVfTUFQX1NJWkUgU0laRV9NQVgKKyNkZWZpbmUgV0dQVV9XSE9M
RV9TSVpFICgweGZmZmZmZmZmZmZmZmZmZmZVTEwpCiAKIHR5cGVkZWYgdWludDMyX3QgV0dQVUZs
YWdzOwogCkBAIC0xNjksNiArMTcwLDE0IEBAIHR5cGVkZWYgZW51bSBXR1BVQ29tcGFyZUZ1bmN0
aW9uIHsKICAgICBXR1BVQ29tcGFyZUZ1bmN0aW9uX0ZvcmNlMzIgPSAweDdGRkZGRkZGCiB9IFdH
UFVDb21wYXJlRnVuY3Rpb247CiAKK3R5cGVkZWYgZW51bSBXR1BVQ29tcGlsYXRpb25JbmZvUmVx
dWVzdFN0YXR1cyB7CisgICAgV0dQVUNvbXBpbGF0aW9uSW5mb1JlcXVlc3RTdGF0dXNfU3VjY2Vz
cyA9IDB4MDAwMDAwMDAsCisgICAgV0dQVUNvbXBpbGF0aW9uSW5mb1JlcXVlc3RTdGF0dXNfRXJy
b3IgPSAweDAwMDAwMDAxLAorICAgIFdHUFVDb21waWxhdGlvbkluZm9SZXF1ZXN0U3RhdHVzX0Rl
dmljZUxvc3QgPSAweDAwMDAwMDAyLAorICAgIFdHUFVDb21waWxhdGlvbkluZm9SZXF1ZXN0U3Rh
dHVzX1Vua25vd24gPSAweDAwMDAwMDAzLAorICAgIFdHUFVDb21waWxhdGlvbkluZm9SZXF1ZXN0
U3RhdHVzX0ZvcmNlMzIgPSAweDdGRkZGRkZGCit9IFdHUFVDb21waWxhdGlvbkluZm9SZXF1ZXN0
U3RhdHVzOworCiB0eXBlZGVmIGVudW0gV0dQVUNvbXBpbGF0aW9uTWVzc2FnZVR5cGUgewogICAg
IFdHUFVDb21waWxhdGlvbk1lc3NhZ2VUeXBlX0Vycm9yID0gMHgwMDAwMDAwMCwKICAgICBXR1BV
Q29tcGlsYXRpb25NZXNzYWdlVHlwZV9XYXJuaW5nID0gMHgwMDAwMDAwMSwKQEAgLTE3Niw2ICsx
ODUsMTIgQEAgdHlwZWRlZiBlbnVtIFdHUFVDb21waWxhdGlvbk1lc3NhZ2VUeXBlIHsKICAgICBX
R1BVQ29tcGlsYXRpb25NZXNzYWdlVHlwZV9Gb3JjZTMyID0gMHg3RkZGRkZGRgogfSBXR1BVQ29t
cGlsYXRpb25NZXNzYWdlVHlwZTsKIAordHlwZWRlZiBlbnVtIFdHUFVDb21wdXRlUGFzc1RpbWVz
dGFtcExvY2F0aW9uIHsKKyAgICBXR1BVQ29tcHV0ZVBhc3NUaW1lc3RhbXBMb2NhdGlvbl9CZWdp
bm5pbmcgPSAweDAwMDAwMDAwLAorICAgIFdHUFVDb21wdXRlUGFzc1RpbWVzdGFtcExvY2F0aW9u
X0VuZCA9IDB4MDAwMDAwMDEsCisgICAgV0dQVUNvbXB1dGVQYXNzVGltZXN0YW1wTG9jYXRpb25f
Rm9yY2UzMiA9IDB4N0ZGRkZGRkYKK30gV0dQVUNvbXB1dGVQYXNzVGltZXN0YW1wTG9jYXRpb247
CisKIHR5cGVkZWYgZW51bSBXR1BVQ3JlYXRlUGlwZWxpbmVBc3luY1N0YXR1cyB7CiAgICAgV0dQ
VUNyZWF0ZVBpcGVsaW5lQXN5bmNTdGF0dXNfU3VjY2VzcyA9IDB4MDAwMDAwMDAsCiAgICAgV0dQ
VUNyZWF0ZVBpcGVsaW5lQXN5bmNTdGF0dXNfRXJyb3IgPSAweDAwMDAwMDAxLApAQCAtMTk5LDkg
KzIxNCw4IEBAIHR5cGVkZWYgZW51bSBXR1BVRGV2aWNlTG9zdFJlYXNvbiB7CiB9IFdHUFVEZXZp
Y2VMb3N0UmVhc29uOwogCiB0eXBlZGVmIGVudW0gV0dQVUVycm9yRmlsdGVyIHsKLSAgICBXR1BV
RXJyb3JGaWx0ZXJfTm9uZSA9IDB4MDAwMDAwMDAsCi0gICAgV0dQVUVycm9yRmlsdGVyX1ZhbGlk
YXRpb24gPSAweDAwMDAwMDAxLAotICAgIFdHUFVFcnJvckZpbHRlcl9PdXRPZk1lbW9yeSA9IDB4
MDAwMDAwMDIsCisgICAgV0dQVUVycm9yRmlsdGVyX1ZhbGlkYXRpb24gPSAweDAwMDAwMDAwLAor
ICAgIFdHUFVFcnJvckZpbHRlcl9PdXRPZk1lbW9yeSA9IDB4MDAwMDAwMDEsCiAgICAgV0dQVUVy
cm9yRmlsdGVyX0ZvcmNlMzIgPSAweDdGRkZGRkZGCiB9IFdHUFVFcnJvckZpbHRlcjsKIApAQCAt
MjE2LDEyICsyMzAsMTUgQEAgdHlwZWRlZiBlbnVtIFdHUFVFcnJvclR5cGUgewogCiB0eXBlZGVm
IGVudW0gV0dQVUZlYXR1cmVOYW1lIHsKICAgICBXR1BVRmVhdHVyZU5hbWVfVW5kZWZpbmVkID0g
MHgwMDAwMDAwMCwKLSAgICBXR1BVRmVhdHVyZU5hbWVfRGVwdGhDbGFtcGluZyA9IDB4MDAwMDAw
MDEsCisgICAgV0dQVUZlYXR1cmVOYW1lX0RlcHRoQ2xpcENvbnRyb2wgPSAweDAwMDAwMDAxLAog
ICAgIFdHUFVGZWF0dXJlTmFtZV9EZXB0aDI0VW5vcm1TdGVuY2lsOCA9IDB4MDAwMDAwMDIsCiAg
ICAgV0dQVUZlYXR1cmVOYW1lX0RlcHRoMzJGbG9hdFN0ZW5jaWw4ID0gMHgwMDAwMDAwMywKICAg
ICBXR1BVRmVhdHVyZU5hbWVfVGltZXN0YW1wUXVlcnkgPSAweDAwMDAwMDA0LAogICAgIFdHUFVG
ZWF0dXJlTmFtZV9QaXBlbGluZVN0YXRpc3RpY3NRdWVyeSA9IDB4MDAwMDAwMDUsCiAgICAgV0dQ
VUZlYXR1cmVOYW1lX1RleHR1cmVDb21wcmVzc2lvbkJDID0gMHgwMDAwMDAwNiwKKyAgICBXR1BV
RmVhdHVyZU5hbWVfVGV4dHVyZUNvbXByZXNzaW9uRVRDMiA9IDB4MDAwMDAwMDcsCisgICAgV0dQ
VUZlYXR1cmVOYW1lX1RleHR1cmVDb21wcmVzc2lvbkFTVEMgPSAweDAwMDAwMDA4LAorICAgIFdH
UFVGZWF0dXJlTmFtZV9JbmRpcmVjdEZpcnN0SW5zdGFuY2UgPSAweDAwMDAwMDA5LAogICAgIFdH
UFVGZWF0dXJlTmFtZV9Gb3JjZTMyID0gMHg3RkZGRkZGRgogfSBXR1BVRmVhdHVyZU5hbWU7CiAK
QEAgLTI2MCw4ICsyNzcsOSBAQCB0eXBlZGVmIGVudW0gV0dQVVBpcGVsaW5lU3RhdGlzdGljTmFt
ZSB7CiB9IFdHUFVQaXBlbGluZVN0YXRpc3RpY05hbWU7CiAKIHR5cGVkZWYgZW51bSBXR1BVUG93
ZXJQcmVmZXJlbmNlIHsKLSAgICBXR1BVUG93ZXJQcmVmZXJlbmNlX0xvd1Bvd2VyID0gMHgwMDAw
MDAwMCwKLSAgICBXR1BVUG93ZXJQcmVmZXJlbmNlX0hpZ2hQZXJmb3JtYW5jZSA9IDB4MDAwMDAw
MDEsCisgICAgV0dQVVBvd2VyUHJlZmVyZW5jZV9VbmRlZmluZWQgPSAweDAwMDAwMDAwLAorICAg
IFdHUFVQb3dlclByZWZlcmVuY2VfTG93UG93ZXIgPSAweDAwMDAwMDAxLAorICAgIFdHUFVQb3dl
clByZWZlcmVuY2VfSGlnaFBlcmZvcm1hbmNlID0gMHgwMDAwMDAwMiwKICAgICBXR1BVUG93ZXJQ
cmVmZXJlbmNlX0ZvcmNlMzIgPSAweDdGRkZGRkZGCiB9IFdHUFVQb3dlclByZWZlcmVuY2U7CiAK
QEAgLTI5Niw2ICszMTQsMTIgQEAgdHlwZWRlZiBlbnVtIFdHUFVRdWV1ZVdvcmtEb25lU3RhdHVz
IHsKICAgICBXR1BVUXVldWVXb3JrRG9uZVN0YXR1c19Gb3JjZTMyID0gMHg3RkZGRkZGRgogfSBX
R1BVUXVldWVXb3JrRG9uZVN0YXR1czsKIAordHlwZWRlZiBlbnVtIFdHUFVSZW5kZXJQYXNzVGlt
ZXN0YW1wTG9jYXRpb24geworICAgIFdHUFVSZW5kZXJQYXNzVGltZXN0YW1wTG9jYXRpb25fQmVn
aW5uaW5nID0gMHgwMDAwMDAwMCwKKyAgICBXR1BVUmVuZGVyUGFzc1RpbWVzdGFtcExvY2F0aW9u
X0VuZCA9IDB4MDAwMDAwMDEsCisgICAgV0dQVVJlbmRlclBhc3NUaW1lc3RhbXBMb2NhdGlvbl9G
b3JjZTMyID0gMHg3RkZGRkZGRgorfSBXR1BVUmVuZGVyUGFzc1RpbWVzdGFtcExvY2F0aW9uOwor
CiB0eXBlZGVmIGVudW0gV0dQVVJlcXVlc3RBZGFwdGVyU3RhdHVzIHsKICAgICBXR1BVUmVxdWVz
dEFkYXB0ZXJTdGF0dXNfU3VjY2VzcyA9IDB4MDAwMDAwMDAsCiAgICAgV0dQVVJlcXVlc3RBZGFw
dGVyU3RhdHVzX1VuYXZhaWxhYmxlID0gMHgwMDAwMDAwMSwKQEAgLTMxOSw3ICszNDMsOSBAQCB0
eXBlZGVmIGVudW0gV0dQVVNUeXBlIHsKICAgICBXR1BVU1R5cGVfU3VyZmFjZURlc2NyaXB0b3JG
cm9tQ2FudmFzSFRNTFNlbGVjdG9yID0gMHgwMDAwMDAwNCwKICAgICBXR1BVU1R5cGVfU2hhZGVy
TW9kdWxlU1BJUlZEZXNjcmlwdG9yID0gMHgwMDAwMDAwNSwKICAgICBXR1BVU1R5cGVfU2hhZGVy
TW9kdWxlV0dTTERlc2NyaXB0b3IgPSAweDAwMDAwMDA2LAotICAgIFdHUFVTVHlwZV9QcmltaXRp
dmVEZXB0aENsYW1waW5nU3RhdGUgPSAweDAwMDAwMDA3LAorICAgIFdHUFVTVHlwZV9QcmltaXRp
dmVEZXB0aENsaXBDb250cm9sID0gMHgwMDAwMDAwNywKKyAgICBXR1BVU1R5cGVfU3VyZmFjZURl
c2NyaXB0b3JGcm9tV2F5bGFuZFN1cmZhY2UgPSAweDAwMDAwMDA4LAorICAgIFdHUFVTVHlwZV9T
dXJmYWNlRGVzY3JpcHRvckZyb21BbmRyb2lkTmF0aXZlV2luZG93ID0gMHgwMDAwMDAwOSwKICAg
ICBXR1BVU1R5cGVfRm9yY2UzMiA9IDB4N0ZGRkZGRkYKIH0gV0dQVVNUeXBlOwogCkBAIC00MTks
MjEgKzQ0NSw2MSBAQCB0eXBlZGVmIGVudW0gV0dQVVRleHR1cmVGb3JtYXQgewogICAgIFdHUFVU
ZXh0dXJlRm9ybWF0X0RlcHRoMTZVbm9ybSA9IDB4MDAwMDAwMjYsCiAgICAgV0dQVVRleHR1cmVG
b3JtYXRfRGVwdGgyNFBsdXMgPSAweDAwMDAwMDI3LAogICAgIFdHUFVUZXh0dXJlRm9ybWF0X0Rl
cHRoMjRQbHVzU3RlbmNpbDggPSAweDAwMDAwMDI4LAotICAgIFdHUFVUZXh0dXJlRm9ybWF0X0Rl
cHRoMzJGbG9hdCA9IDB4MDAwMDAwMjksCi0gICAgV0dQVVRleHR1cmVGb3JtYXRfQkMxUkdCQVVu
b3JtID0gMHgwMDAwMDAyQSwKLSAgICBXR1BVVGV4dHVyZUZvcm1hdF9CQzFSR0JBVW5vcm1Tcmdi
ID0gMHgwMDAwMDAyQiwKLSAgICBXR1BVVGV4dHVyZUZvcm1hdF9CQzJSR0JBVW5vcm0gPSAweDAw
MDAwMDJDLAotICAgIFdHUFVUZXh0dXJlRm9ybWF0X0JDMlJHQkFVbm9ybVNyZ2IgPSAweDAwMDAw
MDJELAotICAgIFdHUFVUZXh0dXJlRm9ybWF0X0JDM1JHQkFVbm9ybSA9IDB4MDAwMDAwMkUsCi0g
ICAgV0dQVVRleHR1cmVGb3JtYXRfQkMzUkdCQVVub3JtU3JnYiA9IDB4MDAwMDAwMkYsCi0gICAg
V0dQVVRleHR1cmVGb3JtYXRfQkM0UlVub3JtID0gMHgwMDAwMDAzMCwKLSAgICBXR1BVVGV4dHVy
ZUZvcm1hdF9CQzRSU25vcm0gPSAweDAwMDAwMDMxLAotICAgIFdHUFVUZXh0dXJlRm9ybWF0X0JD
NVJHVW5vcm0gPSAweDAwMDAwMDMyLAotICAgIFdHUFVUZXh0dXJlRm9ybWF0X0JDNVJHU25vcm0g
PSAweDAwMDAwMDMzLAotICAgIFdHUFVUZXh0dXJlRm9ybWF0X0JDNkhSR0JVZmxvYXQgPSAweDAw
MDAwMDM0LAotICAgIFdHUFVUZXh0dXJlRm9ybWF0X0JDNkhSR0JGbG9hdCA9IDB4MDAwMDAwMzUs
Ci0gICAgV0dQVVRleHR1cmVGb3JtYXRfQkM3UkdCQVVub3JtID0gMHgwMDAwMDAzNiwKLSAgICBX
R1BVVGV4dHVyZUZvcm1hdF9CQzdSR0JBVW5vcm1TcmdiID0gMHgwMDAwMDAzNywKKyAgICBXR1BV
VGV4dHVyZUZvcm1hdF9EZXB0aDI0VW5vcm1TdGVuY2lsOCA9IDB4MDAwMDAwMjksCisgICAgV0dQ
VVRleHR1cmVGb3JtYXRfRGVwdGgzMkZsb2F0ID0gMHgwMDAwMDAyQSwKKyAgICBXR1BVVGV4dHVy
ZUZvcm1hdF9EZXB0aDMyRmxvYXRTdGVuY2lsOCA9IDB4MDAwMDAwMkIsCisgICAgV0dQVVRleHR1
cmVGb3JtYXRfQkMxUkdCQVVub3JtID0gMHgwMDAwMDAyQywKKyAgICBXR1BVVGV4dHVyZUZvcm1h
dF9CQzFSR0JBVW5vcm1TcmdiID0gMHgwMDAwMDAyRCwKKyAgICBXR1BVVGV4dHVyZUZvcm1hdF9C
QzJSR0JBVW5vcm0gPSAweDAwMDAwMDJFLAorICAgIFdHUFVUZXh0dXJlRm9ybWF0X0JDMlJHQkFV
bm9ybVNyZ2IgPSAweDAwMDAwMDJGLAorICAgIFdHUFVUZXh0dXJlRm9ybWF0X0JDM1JHQkFVbm9y
bSA9IDB4MDAwMDAwMzAsCisgICAgV0dQVVRleHR1cmVGb3JtYXRfQkMzUkdCQVVub3JtU3JnYiA9
IDB4MDAwMDAwMzEsCisgICAgV0dQVVRleHR1cmVGb3JtYXRfQkM0UlVub3JtID0gMHgwMDAwMDAz
MiwKKyAgICBXR1BVVGV4dHVyZUZvcm1hdF9CQzRSU25vcm0gPSAweDAwMDAwMDMzLAorICAgIFdH
UFVUZXh0dXJlRm9ybWF0X0JDNVJHVW5vcm0gPSAweDAwMDAwMDM0LAorICAgIFdHUFVUZXh0dXJl
Rm9ybWF0X0JDNVJHU25vcm0gPSAweDAwMDAwMDM1LAorICAgIFdHUFVUZXh0dXJlRm9ybWF0X0JD
NkhSR0JVZmxvYXQgPSAweDAwMDAwMDM2LAorICAgIFdHUFVUZXh0dXJlRm9ybWF0X0JDNkhSR0JG
bG9hdCA9IDB4MDAwMDAwMzcsCisgICAgV0dQVVRleHR1cmVGb3JtYXRfQkM3UkdCQVVub3JtID0g
MHgwMDAwMDAzOCwKKyAgICBXR1BVVGV4dHVyZUZvcm1hdF9CQzdSR0JBVW5vcm1TcmdiID0gMHgw
MDAwMDAzOSwKKyAgICBXR1BVVGV4dHVyZUZvcm1hdF9FVEMyUkdCOFVub3JtID0gMHgwMDAwMDAz
QSwKKyAgICBXR1BVVGV4dHVyZUZvcm1hdF9FVEMyUkdCOFVub3JtU3JnYiA9IDB4MDAwMDAwM0Is
CisgICAgV0dQVVRleHR1cmVGb3JtYXRfRVRDMlJHQjhBMVVub3JtID0gMHgwMDAwMDAzQywKKyAg
ICBXR1BVVGV4dHVyZUZvcm1hdF9FVEMyUkdCOEExVW5vcm1TcmdiID0gMHgwMDAwMDAzRCwKKyAg
ICBXR1BVVGV4dHVyZUZvcm1hdF9FVEMyUkdCQThVbm9ybSA9IDB4MDAwMDAwM0UsCisgICAgV0dQ
VVRleHR1cmVGb3JtYXRfRVRDMlJHQkE4VW5vcm1TcmdiID0gMHgwMDAwMDAzRiwKKyAgICBXR1BV
VGV4dHVyZUZvcm1hdF9FQUNSMTFVbm9ybSA9IDB4MDAwMDAwNDAsCisgICAgV0dQVVRleHR1cmVG
b3JtYXRfRUFDUjExU25vcm0gPSAweDAwMDAwMDQxLAorICAgIFdHUFVUZXh0dXJlRm9ybWF0X0VB
Q1JHMTFVbm9ybSA9IDB4MDAwMDAwNDIsCisgICAgV0dQVVRleHR1cmVGb3JtYXRfRUFDUkcxMVNu
b3JtID0gMHgwMDAwMDA0MywKKyAgICBXR1BVVGV4dHVyZUZvcm1hdF9BU1RDNHg0VW5vcm0gPSAw
eDAwMDAwMDQ0LAorICAgIFdHUFVUZXh0dXJlRm9ybWF0X0FTVEM0eDRVbm9ybVNyZ2IgPSAweDAw
MDAwMDQ1LAorICAgIFdHUFVUZXh0dXJlRm9ybWF0X0FTVEM1eDRVbm9ybSA9IDB4MDAwMDAwNDYs
CisgICAgV0dQVVRleHR1cmVGb3JtYXRfQVNUQzV4NFVub3JtU3JnYiA9IDB4MDAwMDAwNDcsCisg
ICAgV0dQVVRleHR1cmVGb3JtYXRfQVNUQzV4NVVub3JtID0gMHgwMDAwMDA0OCwKKyAgICBXR1BV
VGV4dHVyZUZvcm1hdF9BU1RDNXg1VW5vcm1TcmdiID0gMHgwMDAwMDA0OSwKKyAgICBXR1BVVGV4
dHVyZUZvcm1hdF9BU1RDNng1VW5vcm0gPSAweDAwMDAwMDRBLAorICAgIFdHUFVUZXh0dXJlRm9y
bWF0X0FTVEM2eDVVbm9ybVNyZ2IgPSAweDAwMDAwMDRCLAorICAgIFdHUFVUZXh0dXJlRm9ybWF0
X0FTVEM2eDZVbm9ybSA9IDB4MDAwMDAwNEMsCisgICAgV0dQVVRleHR1cmVGb3JtYXRfQVNUQzZ4
NlVub3JtU3JnYiA9IDB4MDAwMDAwNEQsCisgICAgV0dQVVRleHR1cmVGb3JtYXRfQVNUQzh4NVVu
b3JtID0gMHgwMDAwMDA0RSwKKyAgICBXR1BVVGV4dHVyZUZvcm1hdF9BU1RDOHg1VW5vcm1Tcmdi
ID0gMHgwMDAwMDA0RiwKKyAgICBXR1BVVGV4dHVyZUZvcm1hdF9BU1RDOHg2VW5vcm0gPSAweDAw
MDAwMDUwLAorICAgIFdHUFVUZXh0dXJlRm9ybWF0X0FTVEM4eDZVbm9ybVNyZ2IgPSAweDAwMDAw
MDUxLAorICAgIFdHUFVUZXh0dXJlRm9ybWF0X0FTVEM4eDhVbm9ybSA9IDB4MDAwMDAwNTIsCisg
ICAgV0dQVVRleHR1cmVGb3JtYXRfQVNUQzh4OFVub3JtU3JnYiA9IDB4MDAwMDAwNTMsCisgICAg
V0dQVVRleHR1cmVGb3JtYXRfQVNUQzEweDVVbm9ybSA9IDB4MDAwMDAwNTQsCisgICAgV0dQVVRl
eHR1cmVGb3JtYXRfQVNUQzEweDVVbm9ybVNyZ2IgPSAweDAwMDAwMDU1LAorICAgIFdHUFVUZXh0
dXJlRm9ybWF0X0FTVEMxMHg2VW5vcm0gPSAweDAwMDAwMDU2LAorICAgIFdHUFVUZXh0dXJlRm9y
bWF0X0FTVEMxMHg2VW5vcm1TcmdiID0gMHgwMDAwMDA1NywKKyAgICBXR1BVVGV4dHVyZUZvcm1h
dF9BU1RDMTB4OFVub3JtID0gMHgwMDAwMDA1OCwKKyAgICBXR1BVVGV4dHVyZUZvcm1hdF9BU1RD
MTB4OFVub3JtU3JnYiA9IDB4MDAwMDAwNTksCisgICAgV0dQVVRleHR1cmVGb3JtYXRfQVNUQzEw
eDEwVW5vcm0gPSAweDAwMDAwMDVBLAorICAgIFdHUFVUZXh0dXJlRm9ybWF0X0FTVEMxMHgxMFVu
b3JtU3JnYiA9IDB4MDAwMDAwNUIsCisgICAgV0dQVVRleHR1cmVGb3JtYXRfQVNUQzEyeDEwVW5v
cm0gPSAweDAwMDAwMDVDLAorICAgIFdHUFVUZXh0dXJlRm9ybWF0X0FTVEMxMngxMFVub3JtU3Jn
YiA9IDB4MDAwMDAwNUQsCisgICAgV0dQVVRleHR1cmVGb3JtYXRfQVNUQzEyeDEyVW5vcm0gPSAw
eDAwMDAwMDVFLAorICAgIFdHUFVUZXh0dXJlRm9ybWF0X0FTVEMxMngxMlVub3JtU3JnYiA9IDB4
MDAwMDAwNUYsCiAgICAgV0dQVVRleHR1cmVGb3JtYXRfRm9yY2UzMiA9IDB4N0ZGRkZGRkYKIH0g
V0dQVVRleHR1cmVGb3JtYXQ7CiAKQEAgLTYzMiwxMCArNjk4LDExIEBAIHR5cGVkZWYgc3RydWN0
IFdHUFVDb21waWxhdGlvbk1lc3NhZ2UgewogICAgIHVpbnQ2NF90IGxlbmd0aDsKIH0gV0dQVUNv
bXBpbGF0aW9uTWVzc2FnZTsKIAotdHlwZWRlZiBzdHJ1Y3QgV0dQVUNvbXB1dGVQYXNzRGVzY3Jp
cHRvciB7Ci0gICAgV0dQVUNoYWluZWRTdHJ1Y3QgY29uc3QgKiBuZXh0SW5DaGFpbjsKLSAgICBj
aGFyIGNvbnN0ICogbGFiZWw7Ci19IFdHUFVDb21wdXRlUGFzc0Rlc2NyaXB0b3I7Cit0eXBlZGVm
IHN0cnVjdCBXR1BVQ29tcHV0ZVBhc3NUaW1lc3RhbXBXcml0ZSB7CisgICAgV0dQVVF1ZXJ5U2V0
IHF1ZXJ5U2V0OworICAgIHVpbnQzMl90IHF1ZXJ5SW5kZXg7CisgICAgV0dQVUNvbXB1dGVQYXNz
VGltZXN0YW1wTG9jYXRpb24gbG9jYXRpb247Cit9IFdHUFVDb21wdXRlUGFzc1RpbWVzdGFtcFdy
aXRlOwogCiB0eXBlZGVmIHN0cnVjdCBXR1BVQ29uc3RhbnRFbnRyeSB7CiAgICAgV0dQVUNoYWlu
ZWRTdHJ1Y3QgY29uc3QgKiBuZXh0SW5DaGFpbjsKQEAgLTcwMiwxMCArNzY5LDEwIEBAIHR5cGVk
ZWYgc3RydWN0IFdHUFVQaXBlbGluZUxheW91dERlc2NyaXB0b3IgewogICAgIFdHUFVCaW5kR3Jv
dXBMYXlvdXQgY29uc3QgKiBiaW5kR3JvdXBMYXlvdXRzOwogfSBXR1BVUGlwZWxpbmVMYXlvdXRE
ZXNjcmlwdG9yOwogCi10eXBlZGVmIHN0cnVjdCBXR1BVUHJpbWl0aXZlRGVwdGhDbGFtcGluZ1N0
YXRlIHsKK3R5cGVkZWYgc3RydWN0IFdHUFVQcmltaXRpdmVEZXB0aENsaXBDb250cm9sIHsKICAg
ICBXR1BVQ2hhaW5lZFN0cnVjdCBjaGFpbjsKLSAgICBib29sIGNsYW1wRGVwdGg7Ci19IFdHUFVQ
cmltaXRpdmVEZXB0aENsYW1waW5nU3RhdGU7CisgICAgYm9vbCB1bmNsaXBwZWREZXB0aDsKK30g
V0dQVVByaW1pdGl2ZURlcHRoQ2xpcENvbnRyb2w7CiAKIHR5cGVkZWYgc3RydWN0IFdHUFVQcmlt
aXRpdmVTdGF0ZSB7CiAgICAgV0dQVUNoYWluZWRTdHJ1Y3QgY29uc3QgKiBuZXh0SW5DaGFpbjsK
QEAgLTczNiw2ICs4MDMsOCBAQCB0eXBlZGVmIHN0cnVjdCBXR1BVUmVuZGVyQnVuZGxlRW5jb2Rl
ckRlc2NyaXB0b3IgewogICAgIFdHUFVUZXh0dXJlRm9ybWF0IGNvbnN0ICogY29sb3JGb3JtYXRz
OwogICAgIFdHUFVUZXh0dXJlRm9ybWF0IGRlcHRoU3RlbmNpbEZvcm1hdDsKICAgICB1aW50MzJf
dCBzYW1wbGVDb3VudDsKKyAgICBib29sIGRlcHRoUmVhZE9ubHk7CisgICAgYm9vbCBzdGVuY2ls
UmVhZE9ubHk7CiB9IFdHUFVSZW5kZXJCdW5kbGVFbmNvZGVyRGVzY3JpcHRvcjsKIAogdHlwZWRl
ZiBzdHJ1Y3QgV0dQVVJlbmRlclBhc3NEZXB0aFN0ZW5jaWxBdHRhY2htZW50IHsKQEAgLTc1MCw2
ICs4MTksMTIgQEAgdHlwZWRlZiBzdHJ1Y3QgV0dQVVJlbmRlclBhc3NEZXB0aFN0ZW5jaWxBdHRh
Y2htZW50IHsKICAgICBib29sIHN0ZW5jaWxSZWFkT25seTsKIH0gV0dQVVJlbmRlclBhc3NEZXB0
aFN0ZW5jaWxBdHRhY2htZW50OwogCit0eXBlZGVmIHN0cnVjdCBXR1BVUmVuZGVyUGFzc1RpbWVz
dGFtcFdyaXRlIHsKKyAgICBXR1BVUXVlcnlTZXQgcXVlcnlTZXQ7CisgICAgdWludDMyX3QgcXVl
cnlJbmRleDsKKyAgICBXR1BVUmVuZGVyUGFzc1RpbWVzdGFtcExvY2F0aW9uIGxvY2F0aW9uOwor
fSBXR1BVUmVuZGVyUGFzc1RpbWVzdGFtcFdyaXRlOworCiB0eXBlZGVmIHN0cnVjdCBXR1BVUmVx
dWVzdEFkYXB0ZXJPcHRpb25zIHsKICAgICBXR1BVQ2hhaW5lZFN0cnVjdCBjb25zdCAqIG5leHRJ
bkNoYWluOwogICAgIFdHUFVTdXJmYWNlIGNvbXBhdGlibGVTdXJmYWNlOwpAQCAtNzkwLDcgKzg2
NSw3IEBAIHR5cGVkZWYgc3RydWN0IFdHUFVTaGFkZXJNb2R1bGVTUElSVkRlc2NyaXB0b3Igewog
CiB0eXBlZGVmIHN0cnVjdCBXR1BVU2hhZGVyTW9kdWxlV0dTTERlc2NyaXB0b3IgewogICAgIFdH
UFVDaGFpbmVkU3RydWN0IGNoYWluOwotICAgIGNoYXIgY29uc3QgKiBzb3VyY2U7CisgICAgY2hh
ciBjb25zdCAqIGNvZGU7CiB9IFdHUFVTaGFkZXJNb2R1bGVXR1NMRGVzY3JpcHRvcjsKIAogdHlw
ZWRlZiBzdHJ1Y3QgV0dQVVN0ZW5jaWxGYWNlU3RhdGUgewpAQCAtODM0LDYgKzkwOSwxNyBAQCB0
eXBlZGVmIHN0cnVjdCBXR1BVU3VyZmFjZURlc2NyaXB0b3JGcm9tWGxpYiB7CiAgICAgdWludDMy
X3Qgd2luZG93OwogfSBXR1BVU3VyZmFjZURlc2NyaXB0b3JGcm9tWGxpYjsKIAordHlwZWRlZiBz
dHJ1Y3QgV0dQVVN1cmZhY2VEZXNjcmlwdG9yRnJvbVdheWxhbmRTdXJmYWNlIHsKKyAgICBXR1BV
Q2hhaW5lZFN0cnVjdCBjaGFpbjsKKyAgICB2b2lkICogZGlzcGxheTsKKyAgICB2b2lkICogc3Vy
ZmFjZTsKK30gV0dQVVN1cmZhY2VEZXNjcmlwdG9yRnJvbVdheWxhbmRTdXJmYWNlOworCit0eXBl
ZGVmIHN0cnVjdCBXR1BVU3VyZmFjZURlc2NyaXB0b3JGcm9tQW5kcm9pZE5hdGl2ZVdpbmRvdyB7
CisgICAgV0dQVUNoYWluZWRTdHJ1Y3QgY2hhaW47CisgICAgdm9pZCAqIHdpbmRvdzsKK30gV0dQ
VVN1cmZhY2VEZXNjcmlwdG9yRnJvbUFuZHJvaWROYXRpdmVXaW5kb3c7CisKIHR5cGVkZWYgc3Ry
dWN0IFdHUFVTd2FwQ2hhaW5EZXNjcmlwdG9yIHsKICAgICBXR1BVQ2hhaW5lZFN0cnVjdCBjb25z
dCAqIG5leHRJbkNoYWluOwogICAgIGNoYXIgY29uc3QgKiBsYWJlbDsKQEAgLTkwNSw2ICs5OTEs
MTMgQEAgdHlwZWRlZiBzdHJ1Y3QgV0dQVUNvbXBpbGF0aW9uSW5mbyB7CiAgICAgV0dQVUNvbXBp
bGF0aW9uTWVzc2FnZSBjb25zdCAqIG1lc3NhZ2VzOwogfSBXR1BVQ29tcGlsYXRpb25JbmZvOwog
Cit0eXBlZGVmIHN0cnVjdCBXR1BVQ29tcHV0ZVBhc3NEZXNjcmlwdG9yIHsKKyAgICBXR1BVQ2hh
aW5lZFN0cnVjdCBjb25zdCAqIG5leHRJbkNoYWluOworICAgIGNoYXIgY29uc3QgKiBsYWJlbDsK
KyAgICB1aW50MzJfdCB0aW1lc3RhbXBXcml0ZUNvdW50OworICAgIFdHUFVDb21wdXRlUGFzc1Rp
bWVzdGFtcFdyaXRlIGNvbnN0ICogdGltZXN0YW1wV3JpdGVzOworfSBXR1BVQ29tcHV0ZVBhc3NE
ZXNjcmlwdG9yOworCiB0eXBlZGVmIHN0cnVjdCBXR1BVRGVwdGhTdGVuY2lsU3RhdGUgewogICAg
IFdHUFVDaGFpbmVkU3RydWN0IGNvbnN0ICogbmV4dEluQ2hhaW47CiAgICAgV0dQVVRleHR1cmVG
b3JtYXQgZm9ybWF0OwpAQCAtMTAwMCw2ICsxMDkzLDcgQEAgdHlwZWRlZiBzdHJ1Y3QgV0dQVUNv
bXB1dGVQaXBlbGluZURlc2NyaXB0b3IgewogCiB0eXBlZGVmIHN0cnVjdCBXR1BVRGV2aWNlRGVz
Y3JpcHRvciB7CiAgICAgV0dQVUNoYWluZWRTdHJ1Y3QgY29uc3QgKiBuZXh0SW5DaGFpbjsKKyAg
ICBjaGFyIGNvbnN0ICogbGFiZWw7CiAgICAgdWludDMyX3QgcmVxdWlyZWRGZWF0dXJlc0NvdW50
OwogICAgIFdHUFVGZWF0dXJlTmFtZSBjb25zdCAqIHJlcXVpcmVkRmVhdHVyZXM7CiAgICAgV0dQ
VVJlcXVpcmVkTGltaXRzIGNvbnN0ICogcmVxdWlyZWRMaW1pdHM7CkBAIC0xMDEyLDYgKzExMDYs
OCBAQCB0eXBlZGVmIHN0cnVjdCBXR1BVUmVuZGVyUGFzc0Rlc2NyaXB0b3IgewogICAgIFdHUFVS
ZW5kZXJQYXNzQ29sb3JBdHRhY2htZW50IGNvbnN0ICogY29sb3JBdHRhY2htZW50czsKICAgICBX
R1BVUmVuZGVyUGFzc0RlcHRoU3RlbmNpbEF0dGFjaG1lbnQgY29uc3QgKiBkZXB0aFN0ZW5jaWxB
dHRhY2htZW50OwogICAgIFdHUFVRdWVyeVNldCBvY2NsdXNpb25RdWVyeVNldDsKKyAgICB1aW50
MzJfdCB0aW1lc3RhbXBXcml0ZUNvdW50OworICAgIFdHUFVSZW5kZXJQYXNzVGltZXN0YW1wV3Jp
dGUgY29uc3QgKiB0aW1lc3RhbXBXcml0ZXM7CiB9IFdHUFVSZW5kZXJQYXNzRGVzY3JpcHRvcjsK
IAogdHlwZWRlZiBzdHJ1Y3QgV0dQVVZlcnRleFN0YXRlIHsKQEAgLTEwNTAsMjIgKzExNDYsMjMg
QEAgZXh0ZXJuICJDIiB7CiAjZW5kaWYKIAogdHlwZWRlZiB2b2lkICgqV0dQVUJ1ZmZlck1hcENh
bGxiYWNrKShXR1BVQnVmZmVyTWFwQXN5bmNTdGF0dXMgc3RhdHVzLCB2b2lkICogdXNlcmRhdGEp
OwordHlwZWRlZiB2b2lkICgqV0dQVUNvbXBpbGF0aW9uSW5mb0NhbGxiYWNrKShXR1BVQ29tcGls
YXRpb25JbmZvUmVxdWVzdFN0YXR1cyBzdGF0dXMsIFdHUFVDb21waWxhdGlvbkluZm8gY29uc3Qg
KiBjb21waWxhdGlvbkluZm8sIHZvaWQgKiB1c2VyZGF0YSk7CiB0eXBlZGVmIHZvaWQgKCpXR1BV
Q3JlYXRlQ29tcHV0ZVBpcGVsaW5lQXN5bmNDYWxsYmFjaykoV0dQVUNyZWF0ZVBpcGVsaW5lQXN5
bmNTdGF0dXMgc3RhdHVzLCBXR1BVQ29tcHV0ZVBpcGVsaW5lIHBpcGVsaW5lLCBjaGFyIGNvbnN0
ICogbWVzc2FnZSwgdm9pZCAqIHVzZXJkYXRhKTsKIHR5cGVkZWYgdm9pZCAoKldHUFVDcmVhdGVS
ZW5kZXJQaXBlbGluZUFzeW5jQ2FsbGJhY2spKFdHUFVDcmVhdGVQaXBlbGluZUFzeW5jU3RhdHVz
IHN0YXR1cywgV0dQVVJlbmRlclBpcGVsaW5lIHBpcGVsaW5lLCBjaGFyIGNvbnN0ICogbWVzc2Fn
ZSwgdm9pZCAqIHVzZXJkYXRhKTsKIHR5cGVkZWYgdm9pZCAoKldHUFVEZXZpY2VMb3N0Q2FsbGJh
Y2spKFdHUFVEZXZpY2VMb3N0UmVhc29uIHJlYXNvbiwgY2hhciBjb25zdCAqIG1lc3NhZ2UsIHZv
aWQgKiB1c2VyZGF0YSk7CiB0eXBlZGVmIHZvaWQgKCpXR1BVRXJyb3JDYWxsYmFjaykoV0dQVUVy
cm9yVHlwZSB0eXBlLCBjaGFyIGNvbnN0ICogbWVzc2FnZSwgdm9pZCAqIHVzZXJkYXRhKTsKK3R5
cGVkZWYgdm9pZCAoKldHUFVQcm9jKSgpOwogdHlwZWRlZiB2b2lkICgqV0dQVVF1ZXVlV29ya0Rv
bmVDYWxsYmFjaykoV0dQVVF1ZXVlV29ya0RvbmVTdGF0dXMgc3RhdHVzLCB2b2lkICogdXNlcmRh
dGEpOwogdHlwZWRlZiB2b2lkICgqV0dQVVJlcXVlc3RBZGFwdGVyQ2FsbGJhY2spKFdHUFVSZXF1
ZXN0QWRhcHRlclN0YXR1cyBzdGF0dXMsIFdHUFVBZGFwdGVyIGFkYXB0ZXIsIGNoYXIgY29uc3Qg
KiBtZXNzYWdlLCB2b2lkICogdXNlcmRhdGEpOwogdHlwZWRlZiB2b2lkICgqV0dQVVJlcXVlc3RE
ZXZpY2VDYWxsYmFjaykoV0dQVVJlcXVlc3REZXZpY2VTdGF0dXMgc3RhdHVzLCBXR1BVRGV2aWNl
IGRldmljZSwgY2hhciBjb25zdCAqIG1lc3NhZ2UsIHZvaWQgKiB1c2VyZGF0YSk7CiAKLXR5cGVk
ZWYgdm9pZCAoKldHUFVQcm9jKSh2b2lkKTsKLQogI2lmICFkZWZpbmVkKFdHUFVfU0tJUF9QUk9D
UykKIAogdHlwZWRlZiBXR1BVSW5zdGFuY2UgKCpXR1BVUHJvY0NyZWF0ZUluc3RhbmNlKShXR1BV
SW5zdGFuY2VEZXNjcmlwdG9yIGNvbnN0ICogZGVzY3JpcHRvcik7CiB0eXBlZGVmIFdHUFVQcm9j
ICgqV0dQVVByb2NHZXRQcm9jQWRkcmVzcykoV0dQVURldmljZSBkZXZpY2UsIGNoYXIgY29uc3Qg
KiBwcm9jTmFtZSk7CiAKIC8vIFByb2NzIG9mIEFkYXB0ZXIKK3R5cGVkZWYgc2l6ZV90ICgqV0dQ
VVByb2NBZGFwdGVyRW51bWVyYXRlRmVhdHVyZXMpKFdHUFVBZGFwdGVyIGFkYXB0ZXIsIFdHUFVG
ZWF0dXJlTmFtZSogZmVhdHVyZXMpOwogdHlwZWRlZiBib29sICgqV0dQVVByb2NBZGFwdGVyR2V0
TGltaXRzKShXR1BVQWRhcHRlciBhZGFwdGVyLCBXR1BVU3VwcG9ydGVkTGltaXRzICogbGltaXRz
KTsKIHR5cGVkZWYgdm9pZCAoKldHUFVQcm9jQWRhcHRlckdldFByb3BlcnRpZXMpKFdHUFVBZGFw
dGVyIGFkYXB0ZXIsIFdHUFVBZGFwdGVyUHJvcGVydGllcyAqIHByb3BlcnRpZXMpOwogdHlwZWRl
ZiBib29sICgqV0dQVVByb2NBZGFwdGVySGFzRmVhdHVyZSkoV0dQVUFkYXB0ZXIgYWRhcHRlciwg
V0dQVUZlYXR1cmVOYW1lIGZlYXR1cmUpOwpAQCAtMTA4MSw2ICsxMTc4LDcgQEAgdHlwZWRlZiB2
b2lkICgqV0dQVVByb2NCdWZmZXJVbm1hcCkoV0dQVUJ1ZmZlciBidWZmZXIpOwogLy8gUHJvY3Mg
b2YgQ29tbWFuZEVuY29kZXIKIHR5cGVkZWYgV0dQVUNvbXB1dGVQYXNzRW5jb2RlciAoKldHUFVQ
cm9jQ29tbWFuZEVuY29kZXJCZWdpbkNvbXB1dGVQYXNzKShXR1BVQ29tbWFuZEVuY29kZXIgY29t
bWFuZEVuY29kZXIsIFdHUFVDb21wdXRlUGFzc0Rlc2NyaXB0b3IgY29uc3QgKiBkZXNjcmlwdG9y
KTsKIHR5cGVkZWYgV0dQVVJlbmRlclBhc3NFbmNvZGVyICgqV0dQVVByb2NDb21tYW5kRW5jb2Rl
ckJlZ2luUmVuZGVyUGFzcykoV0dQVUNvbW1hbmRFbmNvZGVyIGNvbW1hbmRFbmNvZGVyLCBXR1BV
UmVuZGVyUGFzc0Rlc2NyaXB0b3IgY29uc3QgKiBkZXNjcmlwdG9yKTsKK3R5cGVkZWYgdm9pZCAo
KldHUFVQcm9jQ29tbWFuZEVuY29kZXJDbGVhckJ1ZmZlcikoV0dQVUNvbW1hbmRFbmNvZGVyIGNv
bW1hbmRFbmNvZGVyLCBXR1BVQnVmZmVyIGJ1ZmZlciwgdWludDY0X3Qgb2Zmc2V0LCB1aW50NjRf
dCBzaXplKTsKIHR5cGVkZWYgdm9pZCAoKldHUFVQcm9jQ29tbWFuZEVuY29kZXJDb3B5QnVmZmVy
VG9CdWZmZXIpKFdHUFVDb21tYW5kRW5jb2RlciBjb21tYW5kRW5jb2RlciwgV0dQVUJ1ZmZlciBz
b3VyY2UsIHVpbnQ2NF90IHNvdXJjZU9mZnNldCwgV0dQVUJ1ZmZlciBkZXN0aW5hdGlvbiwgdWlu
dDY0X3QgZGVzdGluYXRpb25PZmZzZXQsIHVpbnQ2NF90IHNpemUpOwogdHlwZWRlZiB2b2lkICgq
V0dQVVByb2NDb21tYW5kRW5jb2RlckNvcHlCdWZmZXJUb1RleHR1cmUpKFdHUFVDb21tYW5kRW5j
b2RlciBjb21tYW5kRW5jb2RlciwgV0dQVUltYWdlQ29weUJ1ZmZlciBjb25zdCAqIHNvdXJjZSwg
V0dQVUltYWdlQ29weVRleHR1cmUgY29uc3QgKiBkZXN0aW5hdGlvbiwgV0dQVUV4dGVudDNEIGNv
bnN0ICogY29weVNpemUpOwogdHlwZWRlZiB2b2lkICgqV0dQVVByb2NDb21tYW5kRW5jb2RlckNv
cHlUZXh0dXJlVG9CdWZmZXIpKFdHUFVDb21tYW5kRW5jb2RlciBjb21tYW5kRW5jb2RlciwgV0dQ
VUltYWdlQ29weVRleHR1cmUgY29uc3QgKiBzb3VyY2UsIFdHUFVJbWFnZUNvcHlCdWZmZXIgY29u
c3QgKiBkZXN0aW5hdGlvbiwgV0dQVUV4dGVudDNEIGNvbnN0ICogY29weVNpemUpOwpAQCAtMTEw
Myw3ICsxMjAxLDYgQEAgdHlwZWRlZiB2b2lkICgqV0dQVVByb2NDb21wdXRlUGFzc0VuY29kZXJQ
b3BEZWJ1Z0dyb3VwKShXR1BVQ29tcHV0ZVBhc3NFbmNvZGVyIGMKIHR5cGVkZWYgdm9pZCAoKldH
UFVQcm9jQ29tcHV0ZVBhc3NFbmNvZGVyUHVzaERlYnVnR3JvdXApKFdHUFVDb21wdXRlUGFzc0Vu
Y29kZXIgY29tcHV0ZVBhc3NFbmNvZGVyLCBjaGFyIGNvbnN0ICogZ3JvdXBMYWJlbCk7CiB0eXBl
ZGVmIHZvaWQgKCpXR1BVUHJvY0NvbXB1dGVQYXNzRW5jb2RlclNldEJpbmRHcm91cCkoV0dQVUNv
bXB1dGVQYXNzRW5jb2RlciBjb21wdXRlUGFzc0VuY29kZXIsIHVpbnQzMl90IGdyb3VwSW5kZXgs
IFdHUFVCaW5kR3JvdXAgZ3JvdXAsIHVpbnQzMl90IGR5bmFtaWNPZmZzZXRDb3VudCwgdWludDMy
X3QgY29uc3QgKiBkeW5hbWljT2Zmc2V0cyk7CiB0eXBlZGVmIHZvaWQgKCpXR1BVUHJvY0NvbXB1
dGVQYXNzRW5jb2RlclNldFBpcGVsaW5lKShXR1BVQ29tcHV0ZVBhc3NFbmNvZGVyIGNvbXB1dGVQ
YXNzRW5jb2RlciwgV0dQVUNvbXB1dGVQaXBlbGluZSBwaXBlbGluZSk7Ci10eXBlZGVmIHZvaWQg
KCpXR1BVUHJvY0NvbXB1dGVQYXNzRW5jb2RlcldyaXRlVGltZXN0YW1wKShXR1BVQ29tcHV0ZVBh
c3NFbmNvZGVyIGNvbXB1dGVQYXNzRW5jb2RlciwgV0dQVVF1ZXJ5U2V0IHF1ZXJ5U2V0LCB1aW50
MzJfdCBxdWVyeUluZGV4KTsKIAogLy8gUHJvY3Mgb2YgQ29tcHV0ZVBpcGVsaW5lCiB0eXBlZGVm
IFdHUFVCaW5kR3JvdXBMYXlvdXQgKCpXR1BVUHJvY0NvbXB1dGVQaXBlbGluZUdldEJpbmRHcm91
cExheW91dCkoV0dQVUNvbXB1dGVQaXBlbGluZSBjb21wdXRlUGlwZWxpbmUsIHVpbnQzMl90IGdy
b3VwSW5kZXgpOwpAQCAtMTEyNiw4ICsxMjIzLDEwIEBAIHR5cGVkZWYgV0dQVVNoYWRlck1vZHVs
ZSAoKldHUFVQcm9jRGV2aWNlQ3JlYXRlU2hhZGVyTW9kdWxlKShXR1BVRGV2aWNlIGRldmljZSwK
IHR5cGVkZWYgV0dQVVN3YXBDaGFpbiAoKldHUFVQcm9jRGV2aWNlQ3JlYXRlU3dhcENoYWluKShX
R1BVRGV2aWNlIGRldmljZSwgV0dQVVN1cmZhY2Ugc3VyZmFjZSwgV0dQVVN3YXBDaGFpbkRlc2Ny
aXB0b3IgY29uc3QgKiBkZXNjcmlwdG9yKTsKIHR5cGVkZWYgV0dQVVRleHR1cmUgKCpXR1BVUHJv
Y0RldmljZUNyZWF0ZVRleHR1cmUpKFdHUFVEZXZpY2UgZGV2aWNlLCBXR1BVVGV4dHVyZURlc2Ny
aXB0b3IgY29uc3QgKiBkZXNjcmlwdG9yKTsKIHR5cGVkZWYgdm9pZCAoKldHUFVQcm9jRGV2aWNl
RGVzdHJveSkoV0dQVURldmljZSBkZXZpY2UpOwordHlwZWRlZiBzaXplX3QgKCpXR1BVUHJvY0Rl
dmljZUVudW1lcmF0ZUZlYXR1cmVzKShXR1BVRGV2aWNlIGRldmljZSwgV0dQVUZlYXR1cmVOYW1l
KiBmZWF0dXJlcyk7CiB0eXBlZGVmIGJvb2wgKCpXR1BVUHJvY0RldmljZUdldExpbWl0cykoV0dQ
VURldmljZSBkZXZpY2UsIFdHUFVTdXBwb3J0ZWRMaW1pdHMgKiBsaW1pdHMpOwogdHlwZWRlZiBX
R1BVUXVldWUgKCpXR1BVUHJvY0RldmljZUdldFF1ZXVlKShXR1BVRGV2aWNlIGRldmljZSk7Cit0
eXBlZGVmIGJvb2wgKCpXR1BVUHJvY0RldmljZUhhc0ZlYXR1cmUpKFdHUFVEZXZpY2UgZGV2aWNl
LCBXR1BVRmVhdHVyZU5hbWUgZmVhdHVyZSk7CiB0eXBlZGVmIGJvb2wgKCpXR1BVUHJvY0Rldmlj
ZVBvcEVycm9yU2NvcGUpKFdHUFVEZXZpY2UgZGV2aWNlLCBXR1BVRXJyb3JDYWxsYmFjayBjYWxs
YmFjaywgdm9pZCAqIHVzZXJkYXRhKTsKIHR5cGVkZWYgdm9pZCAoKldHUFVQcm9jRGV2aWNlUHVz
aEVycm9yU2NvcGUpKFdHUFVEZXZpY2UgZGV2aWNlLCBXR1BVRXJyb3JGaWx0ZXIgZmlsdGVyKTsK
IHR5cGVkZWYgdm9pZCAoKldHUFVQcm9jRGV2aWNlU2V0RGV2aWNlTG9zdENhbGxiYWNrKShXR1BV
RGV2aWNlIGRldmljZSwgV0dQVURldmljZUxvc3RDYWxsYmFjayBjYWxsYmFjaywgdm9pZCAqIHVz
ZXJkYXRhKTsKQEAgLTExODMsMTMgKzEyODIsMTMgQEAgdHlwZWRlZiB2b2lkICgqV0dQVVByb2NS
ZW5kZXJQYXNzRW5jb2RlclNldFNjaXNzb3JSZWN0KShXR1BVUmVuZGVyUGFzc0VuY29kZXIgcmUK
IHR5cGVkZWYgdm9pZCAoKldHUFVQcm9jUmVuZGVyUGFzc0VuY29kZXJTZXRTdGVuY2lsUmVmZXJl
bmNlKShXR1BVUmVuZGVyUGFzc0VuY29kZXIgcmVuZGVyUGFzc0VuY29kZXIsIHVpbnQzMl90IHJl
ZmVyZW5jZSk7CiB0eXBlZGVmIHZvaWQgKCpXR1BVUHJvY1JlbmRlclBhc3NFbmNvZGVyU2V0VmVy
dGV4QnVmZmVyKShXR1BVUmVuZGVyUGFzc0VuY29kZXIgcmVuZGVyUGFzc0VuY29kZXIsIHVpbnQz
Ml90IHNsb3QsIFdHUFVCdWZmZXIgYnVmZmVyLCB1aW50NjRfdCBvZmZzZXQsIHVpbnQ2NF90IHNp
emUpOwogdHlwZWRlZiB2b2lkICgqV0dQVVByb2NSZW5kZXJQYXNzRW5jb2RlclNldFZpZXdwb3J0
KShXR1BVUmVuZGVyUGFzc0VuY29kZXIgcmVuZGVyUGFzc0VuY29kZXIsIGZsb2F0IHgsIGZsb2F0
IHksIGZsb2F0IHdpZHRoLCBmbG9hdCBoZWlnaHQsIGZsb2F0IG1pbkRlcHRoLCBmbG9hdCBtYXhE
ZXB0aCk7Ci10eXBlZGVmIHZvaWQgKCpXR1BVUHJvY1JlbmRlclBhc3NFbmNvZGVyV3JpdGVUaW1l
c3RhbXApKFdHUFVSZW5kZXJQYXNzRW5jb2RlciByZW5kZXJQYXNzRW5jb2RlciwgV0dQVVF1ZXJ5
U2V0IHF1ZXJ5U2V0LCB1aW50MzJfdCBxdWVyeUluZGV4KTsKIAogLy8gUHJvY3Mgb2YgUmVuZGVy
UGlwZWxpbmUKIHR5cGVkZWYgV0dQVUJpbmRHcm91cExheW91dCAoKldHUFVQcm9jUmVuZGVyUGlw
ZWxpbmVHZXRCaW5kR3JvdXBMYXlvdXQpKFdHUFVSZW5kZXJQaXBlbGluZSByZW5kZXJQaXBlbGlu
ZSwgdWludDMyX3QgZ3JvdXBJbmRleCk7CiB0eXBlZGVmIHZvaWQgKCpXR1BVUHJvY1JlbmRlclBp
cGVsaW5lU2V0TGFiZWwpKFdHUFVSZW5kZXJQaXBlbGluZSByZW5kZXJQaXBlbGluZSwgY2hhciBj
b25zdCAqIGxhYmVsKTsKIAogLy8gUHJvY3Mgb2YgU2hhZGVyTW9kdWxlCit0eXBlZGVmIHZvaWQg
KCpXR1BVUHJvY1NoYWRlck1vZHVsZUdldENvbXBpbGF0aW9uSW5mbykoV0dQVVNoYWRlck1vZHVs
ZSBzaGFkZXJNb2R1bGUsIFdHUFVDb21waWxhdGlvbkluZm9DYWxsYmFjayBjYWxsYmFjaywgdm9p
ZCAqIHVzZXJkYXRhKTsKIHR5cGVkZWYgdm9pZCAoKldHUFVQcm9jU2hhZGVyTW9kdWxlU2V0TGFi
ZWwpKFdHUFVTaGFkZXJNb2R1bGUgc2hhZGVyTW9kdWxlLCBjaGFyIGNvbnN0ICogbGFiZWwpOwog
CiAvLyBQcm9jcyBvZiBTdXJmYWNlCkBAIC0xMjExLDYgKzEzMTAsNyBAQCBXR1BVX0VYUE9SVCBX
R1BVSW5zdGFuY2Ugd2dwdUNyZWF0ZUluc3RhbmNlKFdHUFVJbnN0YW5jZURlc2NyaXB0b3IgY29u
c3QgKiBkZXNjcgogV0dQVV9FWFBPUlQgV0dQVVByb2Mgd2dwdUdldFByb2NBZGRyZXNzKFdHUFVE
ZXZpY2UgZGV2aWNlLCBjaGFyIGNvbnN0ICogcHJvY05hbWUpOwogCiAvLyBNZXRob2RzIG9mIEFk
YXB0ZXIKK1dHUFVfRVhQT1JUIHNpemVfdCB3Z3B1QWRhcHRlckVudW1lcmF0ZUZlYXR1cmVzKFdH
UFVBZGFwdGVyIGFkYXB0ZXIsIFdHUFVGZWF0dXJlTmFtZSogZmVhdHVyZXMpOwogV0dQVV9FWFBP
UlQgYm9vbCB3Z3B1QWRhcHRlckdldExpbWl0cyhXR1BVQWRhcHRlciBhZGFwdGVyLCBXR1BVU3Vw
cG9ydGVkTGltaXRzICogbGltaXRzKTsKIFdHUFVfRVhQT1JUIHZvaWQgd2dwdUFkYXB0ZXJHZXRQ
cm9wZXJ0aWVzKFdHUFVBZGFwdGVyIGFkYXB0ZXIsIFdHUFVBZGFwdGVyUHJvcGVydGllcyAqIHBy
b3BlcnRpZXMpOwogV0dQVV9FWFBPUlQgYm9vbCB3Z3B1QWRhcHRlckhhc0ZlYXR1cmUoV0dQVUFk
YXB0ZXIgYWRhcHRlciwgV0dQVUZlYXR1cmVOYW1lIGZlYXR1cmUpOwpAQCAtMTIyNiw2ICsxMzI2
LDcgQEAgV0dQVV9FWFBPUlQgdm9pZCB3Z3B1QnVmZmVyVW5tYXAoV0dQVUJ1ZmZlciBidWZmZXIp
OwogLy8gTWV0aG9kcyBvZiBDb21tYW5kRW5jb2RlcgogV0dQVV9FWFBPUlQgV0dQVUNvbXB1dGVQ
YXNzRW5jb2RlciB3Z3B1Q29tbWFuZEVuY29kZXJCZWdpbkNvbXB1dGVQYXNzKFdHUFVDb21tYW5k
RW5jb2RlciBjb21tYW5kRW5jb2RlciwgV0dQVUNvbXB1dGVQYXNzRGVzY3JpcHRvciBjb25zdCAq
IGRlc2NyaXB0b3IpOwogV0dQVV9FWFBPUlQgV0dQVVJlbmRlclBhc3NFbmNvZGVyIHdncHVDb21t
YW5kRW5jb2RlckJlZ2luUmVuZGVyUGFzcyhXR1BVQ29tbWFuZEVuY29kZXIgY29tbWFuZEVuY29k
ZXIsIFdHUFVSZW5kZXJQYXNzRGVzY3JpcHRvciBjb25zdCAqIGRlc2NyaXB0b3IpOworV0dQVV9F
WFBPUlQgdm9pZCB3Z3B1Q29tbWFuZEVuY29kZXJDbGVhckJ1ZmZlcihXR1BVQ29tbWFuZEVuY29k
ZXIgY29tbWFuZEVuY29kZXIsIFdHUFVCdWZmZXIgYnVmZmVyLCB1aW50NjRfdCBvZmZzZXQsIHVp
bnQ2NF90IHNpemUpOwogV0dQVV9FWFBPUlQgdm9pZCB3Z3B1Q29tbWFuZEVuY29kZXJDb3B5QnVm
ZmVyVG9CdWZmZXIoV0dQVUNvbW1hbmRFbmNvZGVyIGNvbW1hbmRFbmNvZGVyLCBXR1BVQnVmZmVy
IHNvdXJjZSwgdWludDY0X3Qgc291cmNlT2Zmc2V0LCBXR1BVQnVmZmVyIGRlc3RpbmF0aW9uLCB1
aW50NjRfdCBkZXN0aW5hdGlvbk9mZnNldCwgdWludDY0X3Qgc2l6ZSk7CiBXR1BVX0VYUE9SVCB2
b2lkIHdncHVDb21tYW5kRW5jb2RlckNvcHlCdWZmZXJUb1RleHR1cmUoV0dQVUNvbW1hbmRFbmNv
ZGVyIGNvbW1hbmRFbmNvZGVyLCBXR1BVSW1hZ2VDb3B5QnVmZmVyIGNvbnN0ICogc291cmNlLCBX
R1BVSW1hZ2VDb3B5VGV4dHVyZSBjb25zdCAqIGRlc3RpbmF0aW9uLCBXR1BVRXh0ZW50M0QgY29u
c3QgKiBjb3B5U2l6ZSk7CiBXR1BVX0VYUE9SVCB2b2lkIHdncHVDb21tYW5kRW5jb2RlckNvcHlU
ZXh0dXJlVG9CdWZmZXIoV0dQVUNvbW1hbmRFbmNvZGVyIGNvbW1hbmRFbmNvZGVyLCBXR1BVSW1h
Z2VDb3B5VGV4dHVyZSBjb25zdCAqIHNvdXJjZSwgV0dQVUltYWdlQ29weUJ1ZmZlciBjb25zdCAq
IGRlc3RpbmF0aW9uLCBXR1BVRXh0ZW50M0QgY29uc3QgKiBjb3B5U2l6ZSk7CkBAIC0xMjQ4LDcg
KzEzNDksNiBAQCBXR1BVX0VYUE9SVCB2b2lkIHdncHVDb21wdXRlUGFzc0VuY29kZXJQb3BEZWJ1
Z0dyb3VwKFdHUFVDb21wdXRlUGFzc0VuY29kZXIgY29tcAogV0dQVV9FWFBPUlQgdm9pZCB3Z3B1
Q29tcHV0ZVBhc3NFbmNvZGVyUHVzaERlYnVnR3JvdXAoV0dQVUNvbXB1dGVQYXNzRW5jb2RlciBj
b21wdXRlUGFzc0VuY29kZXIsIGNoYXIgY29uc3QgKiBncm91cExhYmVsKTsKIFdHUFVfRVhQT1JU
IHZvaWQgd2dwdUNvbXB1dGVQYXNzRW5jb2RlclNldEJpbmRHcm91cChXR1BVQ29tcHV0ZVBhc3NF
bmNvZGVyIGNvbXB1dGVQYXNzRW5jb2RlciwgdWludDMyX3QgZ3JvdXBJbmRleCwgV0dQVUJpbmRH
cm91cCBncm91cCwgdWludDMyX3QgZHluYW1pY09mZnNldENvdW50LCB1aW50MzJfdCBjb25zdCAq
IGR5bmFtaWNPZmZzZXRzKTsKIFdHUFVfRVhQT1JUIHZvaWQgd2dwdUNvbXB1dGVQYXNzRW5jb2Rl
clNldFBpcGVsaW5lKFdHUFVDb21wdXRlUGFzc0VuY29kZXIgY29tcHV0ZVBhc3NFbmNvZGVyLCBX
R1BVQ29tcHV0ZVBpcGVsaW5lIHBpcGVsaW5lKTsKLVdHUFVfRVhQT1JUIHZvaWQgd2dwdUNvbXB1
dGVQYXNzRW5jb2RlcldyaXRlVGltZXN0YW1wKFdHUFVDb21wdXRlUGFzc0VuY29kZXIgY29tcHV0
ZVBhc3NFbmNvZGVyLCBXR1BVUXVlcnlTZXQgcXVlcnlTZXQsIHVpbnQzMl90IHF1ZXJ5SW5kZXgp
OwogCiAvLyBNZXRob2RzIG9mIENvbXB1dGVQaXBlbGluZQogV0dQVV9FWFBPUlQgV0dQVUJpbmRH
cm91cExheW91dCB3Z3B1Q29tcHV0ZVBpcGVsaW5lR2V0QmluZEdyb3VwTGF5b3V0KFdHUFVDb21w
dXRlUGlwZWxpbmUgY29tcHV0ZVBpcGVsaW5lLCB1aW50MzJfdCBncm91cEluZGV4KTsKQEAgLTEy
NzEsOCArMTM3MSwxMCBAQCBXR1BVX0VYUE9SVCBXR1BVU2hhZGVyTW9kdWxlIHdncHVEZXZpY2VD
cmVhdGVTaGFkZXJNb2R1bGUoV0dQVURldmljZSBkZXZpY2UsIFdHUAogV0dQVV9FWFBPUlQgV0dQ
VVN3YXBDaGFpbiB3Z3B1RGV2aWNlQ3JlYXRlU3dhcENoYWluKFdHUFVEZXZpY2UgZGV2aWNlLCBX
R1BVU3VyZmFjZSBzdXJmYWNlLCBXR1BVU3dhcENoYWluRGVzY3JpcHRvciBjb25zdCAqIGRlc2Ny
aXB0b3IpOwogV0dQVV9FWFBPUlQgV0dQVVRleHR1cmUgd2dwdURldmljZUNyZWF0ZVRleHR1cmUo
V0dQVURldmljZSBkZXZpY2UsIFdHUFVUZXh0dXJlRGVzY3JpcHRvciBjb25zdCAqIGRlc2NyaXB0
b3IpOwogV0dQVV9FWFBPUlQgdm9pZCB3Z3B1RGV2aWNlRGVzdHJveShXR1BVRGV2aWNlIGRldmlj
ZSk7CitXR1BVX0VYUE9SVCBzaXplX3Qgd2dwdURldmljZUVudW1lcmF0ZUZlYXR1cmVzKFdHUFVE
ZXZpY2UgZGV2aWNlLCBXR1BVRmVhdHVyZU5hbWUqIGZlYXR1cmVzKTsKIFdHUFVfRVhQT1JUIGJv
b2wgd2dwdURldmljZUdldExpbWl0cyhXR1BVRGV2aWNlIGRldmljZSwgV0dQVVN1cHBvcnRlZExp
bWl0cyAqIGxpbWl0cyk7CiBXR1BVX0VYUE9SVCBXR1BVUXVldWUgd2dwdURldmljZUdldFF1ZXVl
KFdHUFVEZXZpY2UgZGV2aWNlKTsKK1dHUFVfRVhQT1JUIGJvb2wgd2dwdURldmljZUhhc0ZlYXR1
cmUoV0dQVURldmljZSBkZXZpY2UsIFdHUFVGZWF0dXJlTmFtZSBmZWF0dXJlKTsKIFdHUFVfRVhQ
T1JUIGJvb2wgd2dwdURldmljZVBvcEVycm9yU2NvcGUoV0dQVURldmljZSBkZXZpY2UsIFdHUFVF
cnJvckNhbGxiYWNrIGNhbGxiYWNrLCB2b2lkICogdXNlcmRhdGEpOwogV0dQVV9FWFBPUlQgdm9p
ZCB3Z3B1RGV2aWNlUHVzaEVycm9yU2NvcGUoV0dQVURldmljZSBkZXZpY2UsIFdHUFVFcnJvckZp
bHRlciBmaWx0ZXIpOwogV0dQVV9FWFBPUlQgdm9pZCB3Z3B1RGV2aWNlU2V0RGV2aWNlTG9zdENh
bGxiYWNrKFdHUFVEZXZpY2UgZGV2aWNlLCBXR1BVRGV2aWNlTG9zdENhbGxiYWNrIGNhbGxiYWNr
LCB2b2lkICogdXNlcmRhdGEpOwpAQCAtMTMyOCwxMyArMTQzMCwxMyBAQCBXR1BVX0VYUE9SVCB2
b2lkIHdncHVSZW5kZXJQYXNzRW5jb2RlclNldFNjaXNzb3JSZWN0KFdHUFVSZW5kZXJQYXNzRW5j
b2RlciByZW5kZQogV0dQVV9FWFBPUlQgdm9pZCB3Z3B1UmVuZGVyUGFzc0VuY29kZXJTZXRTdGVu
Y2lsUmVmZXJlbmNlKFdHUFVSZW5kZXJQYXNzRW5jb2RlciByZW5kZXJQYXNzRW5jb2RlciwgdWlu
dDMyX3QgcmVmZXJlbmNlKTsKIFdHUFVfRVhQT1JUIHZvaWQgd2dwdVJlbmRlclBhc3NFbmNvZGVy
U2V0VmVydGV4QnVmZmVyKFdHUFVSZW5kZXJQYXNzRW5jb2RlciByZW5kZXJQYXNzRW5jb2Rlciwg
dWludDMyX3Qgc2xvdCwgV0dQVUJ1ZmZlciBidWZmZXIsIHVpbnQ2NF90IG9mZnNldCwgdWludDY0
X3Qgc2l6ZSk7CiBXR1BVX0VYUE9SVCB2b2lkIHdncHVSZW5kZXJQYXNzRW5jb2RlclNldFZpZXdw
b3J0KFdHUFVSZW5kZXJQYXNzRW5jb2RlciByZW5kZXJQYXNzRW5jb2RlciwgZmxvYXQgeCwgZmxv
YXQgeSwgZmxvYXQgd2lkdGgsIGZsb2F0IGhlaWdodCwgZmxvYXQgbWluRGVwdGgsIGZsb2F0IG1h
eERlcHRoKTsKLVdHUFVfRVhQT1JUIHZvaWQgd2dwdVJlbmRlclBhc3NFbmNvZGVyV3JpdGVUaW1l
c3RhbXAoV0dQVVJlbmRlclBhc3NFbmNvZGVyIHJlbmRlclBhc3NFbmNvZGVyLCBXR1BVUXVlcnlT
ZXQgcXVlcnlTZXQsIHVpbnQzMl90IHF1ZXJ5SW5kZXgpOwogCiAvLyBNZXRob2RzIG9mIFJlbmRl
clBpcGVsaW5lCiBXR1BVX0VYUE9SVCBXR1BVQmluZEdyb3VwTGF5b3V0IHdncHVSZW5kZXJQaXBl
bGluZUdldEJpbmRHcm91cExheW91dChXR1BVUmVuZGVyUGlwZWxpbmUgcmVuZGVyUGlwZWxpbmUs
IHVpbnQzMl90IGdyb3VwSW5kZXgpOwogV0dQVV9FWFBPUlQgdm9pZCB3Z3B1UmVuZGVyUGlwZWxp
bmVTZXRMYWJlbChXR1BVUmVuZGVyUGlwZWxpbmUgcmVuZGVyUGlwZWxpbmUsIGNoYXIgY29uc3Qg
KiBsYWJlbCk7CiAKIC8vIE1ldGhvZHMgb2YgU2hhZGVyTW9kdWxlCitXR1BVX0VYUE9SVCB2b2lk
IHdncHVTaGFkZXJNb2R1bGVHZXRDb21waWxhdGlvbkluZm8oV0dQVVNoYWRlck1vZHVsZSBzaGFk
ZXJNb2R1bGUsIFdHUFVDb21waWxhdGlvbkluZm9DYWxsYmFjayBjYWxsYmFjaywgdm9pZCAqIHVz
ZXJkYXRhKTsKIFdHUFVfRVhQT1JUIHZvaWQgd2dwdVNoYWRlck1vZHVsZVNldExhYmVsKFdHUFVT
aGFkZXJNb2R1bGUgc2hhZGVyTW9kdWxlLCBjaGFyIGNvbnN0ICogbGFiZWwpOwogCiAvLyBNZXRo
b2RzIG9mIFN1cmZhY2UKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJHUFUvV2ViR1BVL1dlYkdQVUV4
dC5oIGIvU291cmNlL1dlYkdQVS9XZWJHUFUvV2ViR1BVRXh0LmgKaW5kZXggNWE3MjhjMWZkOWM1
YmExYjBhNmE2NGEwOTkyZjNhYTVmMGM2NDJlMS4uMmU0MjAxMjJhYWY1NWYwZGFiNGRlMDcyYTc5
ZjAwN2I3YmRlODk0ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkdQVS9XZWJHUFUvV2ViR1BVRXh0
LmgKKysrIGIvU291cmNlL1dlYkdQVS9XZWJHUFUvV2ViR1BVRXh0LmgKQEAgLTI2LDc0ICsyNiwz
NyBAQAogI2lmbmRlZiBXRUJHUFVFWFRfSF8KICNkZWZpbmUgV0VCR1BVRVhUX0hfCiAKKyNpZmRl
ZiBfX2NwbHVzcGx1cworZXh0ZXJuICJDIiB7CisjZW5kaWYKKwogdHlwZWRlZiBlbnVtIFdHUFVT
VHlwZUV4dGVuZGVkIHsKLSAgICBXR1BVU1R5cGVfRGV2aWNlRGVzY3JpcHRvckxhYmVsID0gMHgy
NDJBOTlFMCwgLy8gUmFuZG9tCisgICAgV0dQVVNUeXBlRXh0ZW5kZWRfU2hhZGVyTW9kdWxlRGVz
Y3JpcHRvckhpbnRzID0gMHgzNDg5NzBGMywgLy8gUmFuZG9tCisgICAgV0dQVVNUeXBlRXh0ZW5k
ZWRfVGV4dHVyZURlc2NyaXB0b3JWaWV3Rm9ybWF0cyA9IDB4MUQ1QkM1NywgLy8gUmFuZG9tCisg
ICAgV0dQVVNUeXBlRXh0ZW5kZWRfRm9yY2UzMiA9IDB4N0ZGRkZGRkYKIH0gV0dQVVNUeXBlRXh0
ZW5kZWQ7CiAKLXR5cGVkZWYgZW51bSBXR1BVVGV4dHVyZUZvcm1hdEV4dGVuZGVkIHsKLSAgICBX
R1BVVGV4dHVyZUZvcm1hdF9FVEMyUkdCOFVub3JtID0gMHgyOEMyNUM2NywgLy8gUmFuZG9tCi0g
ICAgV0dQVVRleHR1cmVGb3JtYXRfRVRDMlJHQjh1bm9ybVNyZ2IgPSAweDU2NkFBRkVFLCAvLyBS
YW5kb20KLSAgICBXR1BVVGV4dHVyZUZvcm1hdF9FVEMyUkdCOGExVW5vcm0gPSAweDJGNzk0MzQ4
LCAvLyBSYW5kb20KLSAgICBXR1BVVGV4dHVyZUZvcm1hdF9FVEMyUkdCOGExdW5vcm1TcmdiID0g
MHg1RUYzOEFCQSwgLy8gUmFuZG9tCi0gICAgV0dQVVRleHR1cmVGb3JtYXRfRVRDMlJHQkE4VW5v
cm0gPSAweDVBNEU2NDgwLCAvLyBSYW5kb20KLSAgICBXR1BVVGV4dHVyZUZvcm1hdF9FVEMyUkdC
QThVbm9ybVNyZ2IgPSAweDc4MDk2OEVCLCAvLyBSYW5kb20KLSAgICBXR1BVVGV4dHVyZUZvcm1h
dF9FQUNSMTFVbm9ybSA9IDB4Njk4NjMwOTAsIC8vIFJhbmRvbQotICAgIFdHUFVUZXh0dXJlRm9y
bWF0X0VBQ1IxMVNub3JtID0gMHgyNUU1NDI4QSwgLy8gUmFuZG9tCi0gICAgV0dQVVRleHR1cmVG
b3JtYXRfRUFDUkcxMVVub3JtID0gMHgxQjA5NjlCMywgLy8gUmFuZG9tCi0gICAgV0dQVVRleHR1
cmVGb3JtYXRfRUFDUkcxMVNub3JtID0gMHgxNkY0QkI2RCwgLy8gUmFuZG9tCi0KLSAgICBXR1BV
VGV4dHVyZUZvcm1hdF9BU1RDNHg0VW5vcm0gPSAweDM5RjYwRjZFLCAvLyBSYW5kb20KLSAgICBX
R1BVVGV4dHVyZUZvcm1hdF9BU1RDNHg0VW5vcm1TcmdiID0gMHgyNDQ3MjcwMCwgLy8gUmFuZG9t
Ci0gICAgV0dQVVRleHR1cmVGb3JtYXRfQVNUQzV4NFVub3JtID0gMHg2N0QzMkIwRSwgLy8gUmFu
ZG9tCi0gICAgV0dQVVRleHR1cmVGb3JtYXRfQVNUQzV4NFVub3JtU3JnYiA9IDB4MzEzREExQkUs
IC8vIFJhbmRvbQotICAgIFdHUFVUZXh0dXJlRm9ybWF0X0FTVEM1eDVVbm9ybSA9IDB4MTVBQjhE
RkQsIC8vIFJhbmRvbQotICAgIFdHUFVUZXh0dXJlRm9ybWF0X0FTVEM1eDVVbm9ybVNyZ2IgPSAw
eDdCMDBFQjU3LCAvLyBSYW5kb20KLSAgICBXR1BVVGV4dHVyZUZvcm1hdF9BU1RDNng1VW5vcm0g
PSAweDY1M0U4MEMzLCAvLyBSYW5kb20KLSAgICBXR1BVVGV4dHVyZUZvcm1hdF9BU1RDNng1VW5v
cm1TcmdiID0gMHg1MEFFODY5QSwgLy8gUmFuZG9tCi0gICAgV0dQVVRleHR1cmVGb3JtYXRfQVNU
QzZ4NlVub3JtID0gMHg1NzlBRjU5OCwgLy8gUmFuZG9tCi0gICAgV0dQVVRleHR1cmVGb3JtYXRf
QVNUQzZ4NlVub3JtU3JnYiA9IDB4NzNCNjk3MzIsIC8vIFJhbmRvbQotICAgIFdHUFVUZXh0dXJl
Rm9ybWF0X0FTVEM4eDVVbm9ybSA9IDB4MDZGNzAzMDgsIC8vIFJhbmRvbQotICAgIFdHUFVUZXh0
dXJlRm9ybWF0X0FTVEM4eDVVbm9ybVNyZ2IgPSAweDQyMEVBOTQ2LCAvLyBSYW5kb20KLSAgICBX
R1BVVGV4dHVyZUZvcm1hdF9BU1RDOHg2VW5vcm0gPSAweDYxMDg2QUM4LCAvLyBSYW5kb20KLSAg
ICBXR1BVVGV4dHVyZUZvcm1hdF9BU1RDOHg2VW5vcm1TcmdiID0gMHgwRTE3RDM5QSwgLy8gUmFu
ZG9tCi0gICAgV0dQVVRleHR1cmVGb3JtYXRfQVNUQzh4OFVub3JtID0gMHg1NjlCRjJFOCwgLy8g
UmFuZG9tCi0gICAgV0dQVVRleHR1cmVGb3JtYXRfQVNUQzh4OFVub3JtU3JnYiA9IDB4NTcyQTQ4
NDksIC8vIFJhbmRvbQotICAgIFdHUFVUZXh0dXJlRm9ybWF0X0FTVEMxMHg1VW5vcm0gPSAweDYz
QUJFNDMyLCAvLyBSYW5kb20KLSAgICBXR1BVVGV4dHVyZUZvcm1hdF9BU1RDMTB4NVVub3JtU3Jn
YiA9IDB4M0JDM0FBNEMsIC8vIFJhbmRvbQotICAgIFdHUFVUZXh0dXJlRm9ybWF0X0FTVEMxMHg2
VW5vcm0gPSAweDZGRTE5NDk5LCAvLyBSYW5kb20KLSAgICBXR1BVVGV4dHVyZUZvcm1hdF9BU1RD
MTB4NlVub3JtU3JnYiA9IDB4N0ZGMEI1QzAsIC8vIFJhbmRvbQotICAgIFdHUFVUZXh0dXJlRm9y
bWF0X0FTVEMxMHg4VW5vcm0gPSAweDIwMTVGNEMzLCAvLyBSYW5kb20KLSAgICBXR1BVVGV4dHVy
ZUZvcm1hdF9BU1RDMTB4OFVub3JtU3JnYiA9IDB4N0Q1MURDNkYsIC8vIFJhbmRvbQotICAgIFdH
UFVUZXh0dXJlRm9ybWF0X0FTVEMxMHgxMFVub3JtID0gMHg2N0YxMDE3MywgLy8gUmFuZG9tCi0g
ICAgV0dQVVRleHR1cmVGb3JtYXRfQVNUQzEweDEwVW5vcm1TcmdiID0gMHgzNUQ3NEQyMSwgLy8g
UmFuZG9tCi0gICAgV0dQVVRleHR1cmVGb3JtYXRfQVNUQzEyeDEwVW5vcm0gPSAweDA5REFEMEE3
LCAvLyBSYW5kb20KLSAgICBXR1BVVGV4dHVyZUZvcm1hdF9BU1RDMTJ4MTBVbm9ybVNyZ2IgPSAw
eDM1NjBDOTNBLCAvLyBSYW5kb20KLSAgICBXR1BVVGV4dHVyZUZvcm1hdF9BU1RDMTJ4MTJVbm9y
bSA9IDB4MjZDQzMwNTAsIC8vIFJhbmRvbQotICAgIFdHUFVUZXh0dXJlRm9ybWF0X0FTVEMxMngx
MlVub3JtU3JnYiA9IDB4M0VGNTc4QTAsIC8vIFJhbmRvbQotCi0gICAgV0dQVVRleHR1cmVGb3Jt
YXRfRGVwdGgzMkZsb2F0U3RlbmNpbDggPSAweDUzREMyMzA3LCAvLyBSYW5kb20KLX0gV0dQVVRl
eHR1cmVGb3JtYXRFeHRlbmRlZDsKLQotdHlwZWRlZiBlbnVtIFdHUFVGZWF0dXJlTmFtZUV4dGVu
ZGVkIHsKLSAgICBXR1BVRmVhdHVyZU5hbWVfRGVwdGhDbGlwQ29udHJvbCA9IDB4NTVBQkMxM0Qs
IC8vIFJhbmRvbQotICAgIFdHUFVGZWF0dXJlTmFtZV9JbmRpcmVjdEZpcnN0SW5zdGFuY2UgPSAw
eDJBNzA4NEY1LCAvLyBSYW5kb20KLSAgICBXR1BVRmVhdHVyZU5hbWVfVGV4dHVyZUNvbXByZXNz
aW9uRVRDMiA9IDB4N0JGNjZGNjksIC8vIFJhbmRvbQotICAgIFdHUFVGZWF0dXJlTmFtZV9UZXh0
dXJlQ29tcHJlc3Npb25BU1RDID0gMHgyNjE3MzM5OSwgLy8gUmFuZG9tCi19IFdHUFVGZWF0dXJl
TmFtZUV4dGVuZGVkOwotCi10eXBlZGVmIGVudW0gV0dQVVBvd2VyUHJlZmVyZW5jZUV4dGVuZGVk
IHsKLSAgICBXR1BVUG93ZXJQcmVmZXJlbmNlX05vUHJlZmVyZW5jZSA9IDB4NDc0ODMzNkYsCi19
IFdHUFVQb3dlclByZWZlcmVuY2VFeHRlbmRlZDsKLQotdHlwZWRlZiBzdHJ1Y3QgV0dQVURldmlj
ZURlc2NyaXB0b3JMYWJlbCB7Ci0gICAgV0dQVUNoYWluZWRTdHJ1Y3QgaGVhZGVyOwotICAgIFdH
UFVDaGFpbmVkU3RydWN0IGNvbnN0ICogbmV4dEluQ2hhaW47Ci0gICAgY2hhciBjb25zdCAqIGxh
YmVsOwotfSBXR1BVRGV2aWNlRGVzY3JpcHRvckxhYmVsOwordHlwZWRlZiBzdHJ1Y3QgV0dQVVNo
YWRlck1vZHVsZUNvbXBpbGF0aW9uSGludCB7CisgICAgV0dQVVBpcGVsaW5lTGF5b3V0IGxheW91
dDsKK30gV0dQVVNoYWRlck1vZHVsZUNvbXBpbGF0aW9uSGludDsKIAotI2lmZGVmIF9fY3BsdXNw
bHVzCi1leHRlcm4gIkMiIHsKLSNlbmRpZgordHlwZWRlZiBzdHJ1Y3QgV0dQVVNoYWRlck1vZHVs
ZUNvbXBpbGF0aW9uSGludEVudHJ5IHsKKyAgICBXR1BVQ2hhaW5lZFN0cnVjdCBjb25zdCAqIG5l
eHRJbkNoYWluOworICAgIGNoYXIgY29uc3QgKiBrZXk7CisgICAgV0dQVVNoYWRlck1vZHVsZUNv
bXBpbGF0aW9uSGludCBoaW50OworfSBXR1BVU2hhZGVyTW9kdWxlQ29tcGlsYXRpb25IaW50RW50
cnk7CisKK3R5cGVkZWYgc3RydWN0IFdHUFVTaGFkZXJNb2R1bGVEZXNjcmlwdG9ySGludHMgewor
ICAgIFdHUFVDaGFpbmVkU3RydWN0IGNoYWluOworICAgIHVpbnQzMl90IGhpbnRzQ291bnQ7Cisg
ICAgV0dQVVNoYWRlck1vZHVsZUNvbXBpbGF0aW9uSGludEVudHJ5IGNvbnN0ICogaGludHM7Cit9
IFdHUFVTaGFkZXJNb2R1bGVEZXNjcmlwdG9ySGludHM7CisKK3R5cGVkZWYgc3RydWN0IFdHUFVU
ZXh0dXJlRGVzY3JpcHRvclZpZXdGb3JtYXRzIHsKKyAgICBXR1BVQ2hhaW5lZFN0cnVjdCBjaGFp
bjsKKyAgICB1aW50MzJfdCB2aWV3Rm9ybWF0c0NvdW50OworICAgIFdHUFVUZXh0dXJlRm9ybWF0
IGNvbnN0ICogdmlld0Zvcm1hdHM7Cit9IFdHUFVUZXh0dXJlRGVzY3JpcHRvclZpZXdGb3JtYXRz
OwogCiAjaWYgIWRlZmluZWQoV0dQVV9TS0lQX1BST0NTKQogCkBAIC0xMzgsMTAgKzEwMSw2IEBA
IHR5cGVkZWYgdm9pZCAoKldHUFVQcm9jU2FtcGxlclNldExhYmVsKShXR1BVU2FtcGxlciBzYW1w
bGVyLCBjaGFyIGNvbnN0ICogbGFiZWwpCiB0eXBlZGVmIHZvaWQgKCpXR1BVUHJvY1RleHR1cmVT
ZXRMYWJlbCkoV0dQVVRleHR1cmUgc2FtcGxlciwgY2hhciBjb25zdCAqIGxhYmVsKTsKIHR5cGVk
ZWYgdm9pZCAoKldHUFVQcm9jVGV4dHVyZVZpZXdTZXRMYWJlbCkoV0dQVVRleHR1cmVWaWV3IHNh
bXBsZXIsIGNoYXIgY29uc3QgKiBsYWJlbCk7CiAKLXR5cGVkZWYgV0dQVUZlYXR1cmVOYW1lICgq
V0dQVVByb2NBZGFwdGVyR2V0RmVhdHVyZUF0SW5kZXgpKFdHUFVBZGFwdGVyIGFkYXB0ZXIsIHNp
emVfdCBpbmRleCk7Ci0KLXR5cGVkZWYgdm9pZCAoKldHUFVQcm9jQ29tbWFuZEVuY29kZXJGaWxs
QnVmZmVyKShXR1BVQ29tbWFuZEVuY29kZXIgY29tbWFuZEVuY29kZXIsIFdHUFVCdWZmZXIgZGVz
dGluYXRpb24sIHVpbnQ2NF90IGRlc3RpbmF0aW9uT2Zmc2V0LCB1aW50NjRfdCBzaXplKTsKLQog
I2VuZGlmICAvLyAhZGVmaW5lZChXR1BVX1NLSVBfUFJPQ1MpCiAKICNpZiAhZGVmaW5lZChXR1BV
X1NLSVBfREVDTEFSQVRJT05TKQpAQCAtMTg3LDEwICsxNDYsNiBAQCBXR1BVX0VYUE9SVCB2b2lk
IHdncHVTYW1wbGVyU2V0TGFiZWwoV0dQVVNhbXBsZXIgc2FtcGxlciwgY2hhciBjb25zdCAqIGxh
YmVsKTsKIFdHUFVfRVhQT1JUIHZvaWQgd2dwdVRleHR1cmVTZXRMYWJlbChXR1BVVGV4dHVyZSBz
YW1wbGVyLCBjaGFyIGNvbnN0ICogbGFiZWwpOwogV0dQVV9FWFBPUlQgdm9pZCB3Z3B1VGV4dHVy
ZVZpZXdTZXRMYWJlbChXR1BVVGV4dHVyZVZpZXcgc2FtcGxlciwgY2hhciBjb25zdCAqIGxhYmVs
KTsKIAotV0dQVV9FWFBPUlQgV0dQVUZlYXR1cmVOYW1lIHdncHVBZGFwdGVyR2V0RmVhdHVyZUF0
SW5kZXgoV0dQVUFkYXB0ZXIgYWRhcHRlciwgc2l6ZV90IGluZGV4KTsKLQotV0dQVV9FWFBPUlQg
dm9pZCB3Z3B1Q29tbWFuZEVuY29kZXJGaWxsQnVmZmVyKFdHUFVDb21tYW5kRW5jb2RlciBjb21t
YW5kRW5jb2RlciwgV0dQVUJ1ZmZlciBkZXN0aW5hdGlvbiwgdWludDY0X3QgZGVzdGluYXRpb25P
ZmZzZXQsIHVpbnQ2NF90IHNpemUpOwotCiAjZW5kaWYgIC8vICFkZWZpbmVkKFdHUFVfU0tJUF9E
RUNMQVJBVElPTlMpCiAKICNpZmRlZiBfX2NwbHVzcGx1cwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1dlYkdQVS9SZW1vdGVCdWZmZXIuY3BwIGIvU291cmNl
L1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1dlYkdQVS9SZW1vdGVCdWZmZXIuY3BwCmluZGV4
IDI2NTA5MzRjM2M5ZTUyZjA3ZjQ1YjBhOGFkYzJkNDdjNGM0ZDNkNGQuLjFmZTA5ZjQ1YWNhNGVl
NTM2NjJkZTMwZGM5Mzk2MGYyOTEyYzA2NTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BV
UHJvY2Vzcy9ncmFwaGljcy9XZWJHUFUvUmVtb3RlQnVmZmVyLmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvV2ViR1BVL1JlbW90ZUJ1ZmZlci5jcHAKQEAgLTUwLDcg
KzUwLDcgQEAgdm9pZCBSZW1vdGVCdWZmZXI6OnN0b3BMaXN0ZW5pbmdGb3JJUEMoKQogICAgIG1f
c3RyZWFtQ29ubmVjdGlvbi0+c3RvcFJlY2VpdmluZ01lc3NhZ2VzKE1lc3NhZ2VzOjpSZW1vdGVC
dWZmZXI6Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSwgbV9pZGVudGlmaWVyLnRvVUludDY0KCkpOwog
fQogCi12b2lkIFJlbW90ZUJ1ZmZlcjo6bWFwQXN5bmMoUEFMOjpXZWJHUFU6Ok1hcE1vZGVGbGFn
cyBtYXBNb2RlRmxhZ3MsIHN0ZDo6b3B0aW9uYWw8UEFMOjpXZWJHUFU6OlNpemU2ND4gb2Zmc2V0
LCBzdGQ6Om9wdGlvbmFsPFBBTDo6V2ViR1BVOjpTaXplNjQ+IHNpemUsIFdURjo6Q29tcGxldGlv
bkhhbmRsZXI8dm9pZChzdGQ6Om9wdGlvbmFsPFZlY3Rvcjx1aW50OF90Pj4mJik+JiYgY2FsbGJh
Y2spCit2b2lkIFJlbW90ZUJ1ZmZlcjo6bWFwQXN5bmMoUEFMOjpXZWJHUFU6Ok1hcE1vZGVGbGFn
cyBtYXBNb2RlRmxhZ3MsIFBBTDo6V2ViR1BVOjpTaXplNjQgb2Zmc2V0LCBzdGQ6Om9wdGlvbmFs
PFBBTDo6V2ViR1BVOjpTaXplNjQ+IHNpemUsIFdURjo6Q29tcGxldGlvbkhhbmRsZXI8dm9pZChz
dGQ6Om9wdGlvbmFsPFZlY3Rvcjx1aW50OF90Pj4mJik+JiYgY2FsbGJhY2spCiB7CiAgICAgaWYg
KG1faXNNYXBwZWQpIHsKICAgICAgICAgY2FsbGJhY2soc3RkOjpudWxsb3B0KTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9XZWJHUFUvUmVtb3RlQnVmZmVy
LmggYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvV2ViR1BVL1JlbW90ZUJ1ZmZl
ci5oCmluZGV4IGIzNzUwZmNkYjRmM2IwOTRjNWQ2OTI1NGQzYjE0MGQ1YTllYjg2NzguLjhlODc3
MjcxNDZjYjcxMWM1MzQ4OGJlYTYwNzlhNWY1ZDM2MDc0YjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9XZWJHUFUvUmVtb3RlQnVmZmVyLmgKKysrIGIvU291
cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1dlYkdQVS9SZW1vdGVCdWZmZXIuaApAQCAt
NzcsNyArNzcsNyBAQCBwcml2YXRlOgogCiAgICAgdm9pZCBkaWRSZWNlaXZlU3RyZWFtTWVzc2Fn
ZShJUEM6OlN0cmVhbVNlcnZlckNvbm5lY3Rpb25CYXNlJiwgSVBDOjpEZWNvZGVyJikgZmluYWw7
CiAKLSAgICB2b2lkIG1hcEFzeW5jKFBBTDo6V2ViR1BVOjpNYXBNb2RlRmxhZ3MsIHN0ZDo6b3B0
aW9uYWw8UEFMOjpXZWJHUFU6OlNpemU2ND4gb2Zmc2V0LCBzdGQ6Om9wdGlvbmFsPFBBTDo6V2Vi
R1BVOjpTaXplNjQ+IHNpemVGb3JNYXAsIFdURjo6Q29tcGxldGlvbkhhbmRsZXI8dm9pZChzdGQ6
Om9wdGlvbmFsPFZlY3Rvcjx1aW50OF90Pj4mJik+JiYpOworICAgIHZvaWQgbWFwQXN5bmMoUEFM
OjpXZWJHUFU6Ok1hcE1vZGVGbGFncywgUEFMOjpXZWJHUFU6OlNpemU2NCBvZmZzZXQsIHN0ZDo6
b3B0aW9uYWw8UEFMOjpXZWJHUFU6OlNpemU2ND4gc2l6ZUZvck1hcCwgV1RGOjpDb21wbGV0aW9u
SGFuZGxlcjx2b2lkKHN0ZDo6b3B0aW9uYWw8VmVjdG9yPHVpbnQ4X3Q+PiYmKT4mJik7CiAgICAg
dm9pZCB1bm1hcChWZWN0b3I8dWludDhfdD4mJik7CiAKICAgICB2b2lkIGRlc3Ryb3koKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9XZWJHUFUvUmVtb3Rl
QnVmZmVyLm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1dl
YkdQVS9SZW1vdGVCdWZmZXIubWVzc2FnZXMuaW4KaW5kZXggOTdhNTFmM2NhMmMzYjAxNzU5MGYy
YzNiYmU2MzQzODM3OGNhNDVjYi4uYjlmMTNkMzZjYjU1YmQ4YWQ5OTM2MTFkOTVjMDFiMTM3MjVk
YWI5YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1dlYkdQ
VS9SZW1vdGVCdWZmZXIubWVzc2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNz
L2dyYXBoaWNzL1dlYkdQVS9SZW1vdGVCdWZmZXIubWVzc2FnZXMuaW4KQEAgLTI0LDcgKzI0LDcg
QEAKICNpZiBFTkFCTEUoR1BVX1BST0NFU1MpCiAKIG1lc3NhZ2VzIC0+IFJlbW90ZUJ1ZmZlciBO
b3RSZWZDb3VudGVkIFN0cmVhbSB7Ci0gICAgdm9pZCBNYXBBc3luYyhQQUw6OldlYkdQVTo6TWFw
TW9kZUZsYWdzIG1hcE1vZGVGbGFncywgc3RkOjpvcHRpb25hbDxQQUw6OldlYkdQVTo6U2l6ZTY0
PiBvZmZzZXQsIHN0ZDo6b3B0aW9uYWw8UEFMOjpXZWJHUFU6OlNpemU2ND4gc2l6ZSkgLT4gKHN0
ZDo6b3B0aW9uYWw8VmVjdG9yPHVpbnQ4X3Q+PiBkYXRhKSBTeW5jaHJvbm91cworICAgIHZvaWQg
TWFwQXN5bmMoUEFMOjpXZWJHUFU6Ok1hcE1vZGVGbGFncyBtYXBNb2RlRmxhZ3MsIFBBTDo6V2Vi
R1BVOjpTaXplNjQgb2Zmc2V0LCBzdGQ6Om9wdGlvbmFsPFBBTDo6V2ViR1BVOjpTaXplNjQ+IHNp
emUpIC0+IChzdGQ6Om9wdGlvbmFsPFZlY3Rvcjx1aW50OF90Pj4gZGF0YSkgU3luY2hyb25vdXMK
ICAgICB2b2lkIFVubWFwKFZlY3Rvcjx1aW50OF90PiBkYXRhKQogICAgIHZvaWQgRGVzdHJveSgp
CiAgICAgdm9pZCBTZXRMYWJlbChTdHJpbmcgbGFiZWwpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvV2ViR1BVL1JlbW90ZUNvbW1hbmRFbmNvZGVyLmNwcCBi
L1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9XZWJHUFUvUmVtb3RlQ29tbWFuZEVu
Y29kZXIuY3BwCmluZGV4IGQ5ZWI3OTNkYWQ0NDU3NzcyYWIwM2RkMGZiNTQyNDIxYzI4Y2EwOTAu
LjE0NjkxNzA4OGIwZDYzOTE3MGUzYzdiM2FlNTZhODVjZjhiOTg5YmUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9XZWJHUFUvUmVtb3RlQ29tbWFuZEVuY29k
ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9XZWJHUFUvUmVt
b3RlQ29tbWFuZEVuY29kZXIuY3BwCkBAIC0xNTEsMTcgKzE1MSwxNyBAQCB2b2lkIFJlbW90ZUNv
bW1hbmRFbmNvZGVyOjpjb3B5VGV4dHVyZVRvVGV4dHVyZSgKICAgICBtX2JhY2tpbmctPmNvcHlU
ZXh0dXJlVG9UZXh0dXJlKCpjb252ZXJ0ZWRTb3VyY2UsICpjb252ZXJ0ZWREZXN0aW5hdGlvbiwg
KmNvbnZlcnRlZENvcHlTaXplKTsKIH0KIAotdm9pZCBSZW1vdGVDb21tYW5kRW5jb2Rlcjo6Zmls
bEJ1ZmZlcigKLSAgICBXZWJHUFVJZGVudGlmaWVyIGRlc3RpbmF0aW9uLAotICAgIFBBTDo6V2Vi
R1BVOjpTaXplNjQgZGVzdGluYXRpb25PZmZzZXQsCi0gICAgUEFMOjpXZWJHUFU6OlNpemU2NCBz
aXplKQotewotICAgIGF1dG8gY29udmVydGVkRGVzdGluYXRpb24gPSBtX29iamVjdEhlYXAuY29u
dmVydEJ1ZmZlckZyb21CYWNraW5nKGRlc3RpbmF0aW9uKTsKLSAgICBBU1NFUlQoY29udmVydGVk
RGVzdGluYXRpb24pOwotICAgIGlmICghY29udmVydGVkRGVzdGluYXRpb24pCit2b2lkIFJlbW90
ZUNvbW1hbmRFbmNvZGVyOjpjbGVhckJ1ZmZlcigKKyAgICBXZWJHUFVJZGVudGlmaWVyIGJ1ZmZl
ciwKKyAgICBQQUw6OldlYkdQVTo6U2l6ZTY0IG9mZnNldCwKKyAgICBzdGQ6Om9wdGlvbmFsPFBB
TDo6V2ViR1BVOjpTaXplNjQ+IHNpemUpCit7CisgICAgYXV0byBjb252ZXJ0ZWRCdWZmZXIgPSBt
X29iamVjdEhlYXAuY29udmVydEJ1ZmZlckZyb21CYWNraW5nKGJ1ZmZlcik7CisgICAgQVNTRVJU
KGNvbnZlcnRlZEJ1ZmZlcik7CisgICAgaWYgKCFjb252ZXJ0ZWRCdWZmZXIpCiAgICAgICAgIHJl
dHVybjsKIAotICAgIG1fYmFja2luZy0+ZmlsbEJ1ZmZlcigqY29udmVydGVkRGVzdGluYXRpb24s
IGRlc3RpbmF0aW9uT2Zmc2V0LCBzaXplKTsKKyAgICBtX2JhY2tpbmctPmNsZWFyQnVmZmVyKCpj
b252ZXJ0ZWRCdWZmZXIsIG9mZnNldCwgc2l6ZSk7CiB9CiAKIHZvaWQgUmVtb3RlQ29tbWFuZEVu
Y29kZXI6OnB1c2hEZWJ1Z0dyb3VwKFN0cmluZyYmIGdyb3VwTGFiZWwpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvV2ViR1BVL1JlbW90ZUNvbW1hbmRFbmNv
ZGVyLmggYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvV2ViR1BVL1JlbW90ZUNv
bW1hbmRFbmNvZGVyLmgKaW5kZXggYTViNDJjOTFlMDFkYTY4M2FhZjJkMjRlNjJkODBhNjk5N2Yx
Mzk3Mi4uMTcxMGViOWQ2NWZmNmI0ODY3Mjg1YWJkYzkwMGM4MzMxMzE1MzJiZCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1dlYkdQVS9SZW1vdGVDb21tYW5k
RW5jb2Rlci5oCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9XZWJHUFUv
UmVtb3RlQ29tbWFuZEVuY29kZXIuaApAQCAtMTA0LDEwICsxMDQsMTAgQEAgcHJpdmF0ZToKICAg
ICAgICAgY29uc3QgV2ViR1BVOjpJbWFnZUNvcHlUZXh0dXJlJiBkZXN0aW5hdGlvbiwKICAgICAg
ICAgY29uc3QgV2ViR1BVOjpFeHRlbnQzRCYgY29weVNpemUpOwogCi0gICAgdm9pZCBmaWxsQnVm
ZmVyKAotICAgICAgICBXZWJHUFVJZGVudGlmaWVyIGRlc3RpbmF0aW9uLAotICAgICAgICBQQUw6
OldlYkdQVTo6U2l6ZTY0IGRlc3RpbmF0aW9uT2Zmc2V0LAotICAgICAgICBQQUw6OldlYkdQVTo6
U2l6ZTY0KTsKKyAgICB2b2lkIGNsZWFyQnVmZmVyKAorICAgICAgICBXZWJHUFVJZGVudGlmaWVy
IGJ1ZmZlciwKKyAgICAgICAgUEFMOjpXZWJHUFU6OlNpemU2NCBvZmZzZXQgPSAwLAorICAgICAg
ICBzdGQ6Om9wdGlvbmFsPFBBTDo6V2ViR1BVOjpTaXplNjQ+ID0gc3RkOjpudWxsb3B0KTsKIAog
ICAgIHZvaWQgcHVzaERlYnVnR3JvdXAoU3RyaW5nJiYgZ3JvdXBMYWJlbCk7CiAgICAgdm9pZCBw
b3BEZWJ1Z0dyb3VwKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3Jh
cGhpY3MvV2ViR1BVL1JlbW90ZUNvbW1hbmRFbmNvZGVyLm1lc3NhZ2VzLmluIGIvU291cmNlL1dl
YktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1dlYkdQVS9SZW1vdGVDb21tYW5kRW5jb2Rlci5tZXNz
YWdlcy5pbgppbmRleCBiYzBiZjMzMTE0OGQyZTk1MzFjNTk3Y2I5Y2RkZDYxNzNiN2QyOWMwLi4z
ZGNhOWY5YjliMThiM2I3ZGM3ZDBiOGZjNmQ1MThmOTg1YTRkZTQ2IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvV2ViR1BVL1JlbW90ZUNvbW1hbmRFbmNvZGVy
Lm1lc3NhZ2VzLmluCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9XZWJH
UFUvUmVtb3RlQ29tbWFuZEVuY29kZXIubWVzc2FnZXMuaW4KQEAgLTMwLDcgKzMwLDcgQEAgbWVz
c2FnZXMgLT4gUmVtb3RlQ29tbWFuZEVuY29kZXIgTm90UmVmQ291bnRlZCBTdHJlYW0gewogICAg
IHZvaWQgQ29weUJ1ZmZlclRvVGV4dHVyZShXZWJLaXQ6OldlYkdQVTo6SW1hZ2VDb3B5QnVmZmVy
IHNvdXJjZSwgV2ViS2l0OjpXZWJHUFU6OkltYWdlQ29weVRleHR1cmUgZGVzdGluYXRpb24sIFdl
YktpdDo6V2ViR1BVOjpFeHRlbnQzRCBjb3B5U2l6ZSkKICAgICB2b2lkIENvcHlUZXh0dXJlVG9C
dWZmZXIoV2ViS2l0OjpXZWJHUFU6OkltYWdlQ29weVRleHR1cmUgc291cmNlLCBXZWJLaXQ6Oldl
YkdQVTo6SW1hZ2VDb3B5QnVmZmVyIGRlc3RpbmF0aW9uLCBXZWJLaXQ6OldlYkdQVTo6RXh0ZW50
M0QgY29weVNpemUpCiAgICAgdm9pZCBDb3B5VGV4dHVyZVRvVGV4dHVyZShXZWJLaXQ6OldlYkdQ
VTo6SW1hZ2VDb3B5VGV4dHVyZSBzb3VyY2UsIFdlYktpdDo6V2ViR1BVOjpJbWFnZUNvcHlUZXh0
dXJlIGRlc3RpbmF0aW9uLCBXZWJLaXQ6OldlYkdQVTo6RXh0ZW50M0QgY29weVNpemUpCi0gICAg
dm9pZCBGaWxsQnVmZmVyKFdlYktpdDo6V2ViR1BVSWRlbnRpZmllciBkZXN0aW5hdGlvbiwgUEFM
OjpXZWJHUFU6OlNpemU2NCBkZXN0aW5hdGlvbk9mZnNldCwgUEFMOjpXZWJHUFU6OlNpemU2NCBz
aXplKQorICAgIHZvaWQgQ2xlYXJCdWZmZXIoV2ViS2l0OjpXZWJHUFVJZGVudGlmaWVyIGJ1ZmZl
ciwgUEFMOjpXZWJHUFU6OlNpemU2NCBvZmZzZXQsIHN0ZDo6b3B0aW9uYWw8UEFMOjpXZWJHUFU6
OlNpemU2ND4gc2l6ZSkKICAgICB2b2lkIFB1c2hEZWJ1Z0dyb3VwKFN0cmluZyBncm91cExhYmVs
KQogICAgIHZvaWQgUG9wRGVidWdHcm91cCgpCiAgICAgdm9pZCBJbnNlcnREZWJ1Z01hcmtlcihT
dHJpbmcgbWFya2VyTGFiZWwpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mv
Z3JhcGhpY3MvV2ViR1BVL1JlbW90ZUNvbXB1dGVQYXNzRW5jb2Rlci5jcHAgYi9Tb3VyY2UvV2Vi
S2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvV2ViR1BVL1JlbW90ZUNvbXB1dGVQYXNzRW5jb2Rlci5j
cHAKaW5kZXggOGUwNzNlZDFkZmNiYTRhZDZkZDY0NzY5ZWM0ODA3MzVmZDg5ZWI5ZC4uZjg4MWJl
OWUyYmY1ZmExYWEwZTM0N2QxYjZiYmE4YWI4ZDA0MzM4NCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1dlYkdQVS9SZW1vdGVDb21wdXRlUGFzc0VuY29kZXIu
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9XZWJHUFUvUmVtb3Rl
Q29tcHV0ZVBhc3NFbmNvZGVyLmNwcApAQCAtNjEsOSArNjEsOSBAQCB2b2lkIFJlbW90ZUNvbXB1
dGVQYXNzRW5jb2Rlcjo6c2V0UGlwZWxpbmUoV2ViR1BVSWRlbnRpZmllciBjb21wdXRlUGlwZWxp
bmUpCiAgICAgbV9iYWNraW5nLT5zZXRQaXBlbGluZSgqY29udmVydGVkQ29tcHV0ZVBpcGVsaW5l
KTsKIH0KIAotdm9pZCBSZW1vdGVDb21wdXRlUGFzc0VuY29kZXI6OmRpc3BhdGNoKFBBTDo6V2Vi
R1BVOjpTaXplMzIgeCwgc3RkOjpvcHRpb25hbDxQQUw6OldlYkdQVTo6U2l6ZTMyPiB5LCBzdGQ6
Om9wdGlvbmFsPFBBTDo6V2ViR1BVOjpTaXplMzI+IHopCit2b2lkIFJlbW90ZUNvbXB1dGVQYXNz
RW5jb2Rlcjo6ZGlzcGF0Y2goUEFMOjpXZWJHUFU6OlNpemUzMiB3b3JrZ3JvdXBDb3VudFgsIFBB
TDo6V2ViR1BVOjpTaXplMzIgd29ya2dyb3VwQ291bnRZLCBQQUw6OldlYkdQVTo6U2l6ZTMyIHdv
cmtncm91cENvdW50WikKIHsKLSAgICBtX2JhY2tpbmctPmRpc3BhdGNoKHgsIHksIHopOworICAg
IG1fYmFja2luZy0+ZGlzcGF0Y2god29ya2dyb3VwQ291bnRYLCB3b3JrZ3JvdXBDb3VudFksIHdv
cmtncm91cENvdW50Wik7CiB9CiAKIHZvaWQgUmVtb3RlQ29tcHV0ZVBhc3NFbmNvZGVyOjpkaXNw
YXRjaEluZGlyZWN0KFdlYkdQVUlkZW50aWZpZXIgaW5kaXJlY3RCdWZmZXIsIFBBTDo6V2ViR1BV
OjpTaXplNjQgaW5kaXJlY3RPZmZzZXQpCkBAIC03NiwyNCArNzYsOSBAQCB2b2lkIFJlbW90ZUNv
bXB1dGVQYXNzRW5jb2Rlcjo6ZGlzcGF0Y2hJbmRpcmVjdChXZWJHUFVJZGVudGlmaWVyIGluZGly
ZWN0QnVmZmVyLAogICAgIG1fYmFja2luZy0+ZGlzcGF0Y2hJbmRpcmVjdCgqY29udmVydGVkSW5k
aXJlY3RCdWZmZXIsIGluZGlyZWN0T2Zmc2V0KTsKIH0KIAotdm9pZCBSZW1vdGVDb21wdXRlUGFz
c0VuY29kZXI6OmJlZ2luUGlwZWxpbmVTdGF0aXN0aWNzUXVlcnkoV2ViR1BVSWRlbnRpZmllciBx
dWVyeVNldCwgUEFMOjpXZWJHUFU6OlNpemUzMiBxdWVyeUluZGV4KQordm9pZCBSZW1vdGVDb21w
dXRlUGFzc0VuY29kZXI6OmVuZCgpCiB7Ci0gICAgYXV0byBjb252ZXJ0ZWRRdWVyeVNldCA9IG1f
b2JqZWN0SGVhcC5jb252ZXJ0UXVlcnlTZXRGcm9tQmFja2luZyhxdWVyeVNldCk7Ci0gICAgQVNT
RVJUKGNvbnZlcnRlZFF1ZXJ5U2V0KTsKLSAgICBpZiAoIWNvbnZlcnRlZFF1ZXJ5U2V0KQotICAg
ICAgICByZXR1cm47Ci0KLSAgICBtX2JhY2tpbmctPmJlZ2luUGlwZWxpbmVTdGF0aXN0aWNzUXVl
cnkoKmNvbnZlcnRlZFF1ZXJ5U2V0LCBxdWVyeUluZGV4KTsKLX0KLQotdm9pZCBSZW1vdGVDb21w
dXRlUGFzc0VuY29kZXI6OmVuZFBpcGVsaW5lU3RhdGlzdGljc1F1ZXJ5KCkKLXsKLSAgICBtX2Jh
Y2tpbmctPmVuZFBpcGVsaW5lU3RhdGlzdGljc1F1ZXJ5KCk7Ci19Ci0KLXZvaWQgUmVtb3RlQ29t
cHV0ZVBhc3NFbmNvZGVyOjplbmRQYXNzKCkKLXsKLSAgICBtX2JhY2tpbmctPmVuZFBhc3MoKTsK
KyAgICBtX2JhY2tpbmctPmVuZCgpOwogfQogCiB2b2lkIFJlbW90ZUNvbXB1dGVQYXNzRW5jb2Rl
cjo6c2V0QmluZEdyb3VwKFBBTDo6V2ViR1BVOjpJbmRleDMyIGluZGV4LCBXZWJHUFVJZGVudGlm
aWVyIGJpbmRHcm91cCwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFw
aGljcy9XZWJHUFUvUmVtb3RlQ29tcHV0ZVBhc3NFbmNvZGVyLmggYi9Tb3VyY2UvV2ViS2l0L0dQ
VVByb2Nlc3MvZ3JhcGhpY3MvV2ViR1BVL1JlbW90ZUNvbXB1dGVQYXNzRW5jb2Rlci5oCmluZGV4
IDM1OGUwNWQ5ZTE2ZDk4MjA1M2QyMTgzOGVmZjg5MWRmZTNiMmQ3ZTUuLjgzMzdhMjliZTk0NDdi
M2Q0N2EwNjkxZWJmYTllMTRhN2E0YTUyYjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BV
UHJvY2Vzcy9ncmFwaGljcy9XZWJHUFUvUmVtb3RlQ29tcHV0ZVBhc3NFbmNvZGVyLmgKKysrIGIv
U291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1dlYkdQVS9SZW1vdGVDb21wdXRlUGFz
c0VuY29kZXIuaApAQCAtNzQsMTMgKzc0LDEwIEBAIHByaXZhdGU6CiAgICAgdm9pZCBkaWRSZWNl
aXZlU3RyZWFtTWVzc2FnZShJUEM6OlN0cmVhbVNlcnZlckNvbm5lY3Rpb25CYXNlJiwgSVBDOjpE
ZWNvZGVyJikgZmluYWw7CiAKICAgICB2b2lkIHNldFBpcGVsaW5lKFdlYkdQVUlkZW50aWZpZXIp
OwotICAgIHZvaWQgZGlzcGF0Y2goUEFMOjpXZWJHUFU6OlNpemUzMiB4LCBzdGQ6Om9wdGlvbmFs
PFBBTDo6V2ViR1BVOjpTaXplMzI+IHksIHN0ZDo6b3B0aW9uYWw8UEFMOjpXZWJHUFU6OlNpemUz
Mj4pOworICAgIHZvaWQgZGlzcGF0Y2goUEFMOjpXZWJHUFU6OlNpemUzMiB3b3JrZ3JvdXBDb3Vu
dFgsIFBBTDo6V2ViR1BVOjpTaXplMzIgd29ya2dyb3VwQ291bnRZID0gMSwgUEFMOjpXZWJHUFU6
OlNpemUzMiB3b3JrZ3JvdXBDb3VudFogPSAxKTsKICAgICB2b2lkIGRpc3BhdGNoSW5kaXJlY3Qo
V2ViR1BVSWRlbnRpZmllciBpbmRpcmVjdEJ1ZmZlciwgUEFMOjpXZWJHUFU6OlNpemU2NCBpbmRp
cmVjdE9mZnNldCk7CiAKLSAgICB2b2lkIGJlZ2luUGlwZWxpbmVTdGF0aXN0aWNzUXVlcnkoV2Vi
R1BVSWRlbnRpZmllciwgUEFMOjpXZWJHUFU6OlNpemUzMiBxdWVyeUluZGV4KTsKLSAgICB2b2lk
IGVuZFBpcGVsaW5lU3RhdGlzdGljc1F1ZXJ5KCk7Ci0KLSAgICB2b2lkIGVuZFBhc3MoKTsKKyAg
ICB2b2lkIGVuZCgpOwogCiAgICAgdm9pZCBzZXRCaW5kR3JvdXAoUEFMOjpXZWJHUFU6OkluZGV4
MzIsIFdlYkdQVUlkZW50aWZpZXIsCiAgICAgICAgIHN0ZDo6b3B0aW9uYWw8VmVjdG9yPFBBTDo6
V2ViR1BVOjpCdWZmZXJEeW5hbWljT2Zmc2V0Pj4mJik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvV2ViR1BVL1JlbW90ZUNvbXB1dGVQYXNzRW5jb2Rlci5t
ZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9XZWJHUFUvUmVt
b3RlQ29tcHV0ZVBhc3NFbmNvZGVyLm1lc3NhZ2VzLmluCmluZGV4IDg2YmQyYjU3MmNiYTU0MTFh
MjNjMjljOTdkMDdjYzZjMGMwZWMyZjUuLjQyZTYwOGJkMzA5N2YzMjk1YWExYWFiMDZhZjNjM2Q3
ZmY1NjY0NTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9X
ZWJHUFUvUmVtb3RlQ29tcHV0ZVBhc3NFbmNvZGVyLm1lc3NhZ2VzLmluCisrKyBiL1NvdXJjZS9X
ZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9XZWJHUFUvUmVtb3RlQ29tcHV0ZVBhc3NFbmNvZGVy
Lm1lc3NhZ2VzLmluCkBAIC0yNSwxMSArMjUsOSBAQAogCiBtZXNzYWdlcyAtPiBSZW1vdGVDb21w
dXRlUGFzc0VuY29kZXIgTm90UmVmQ291bnRlZCBTdHJlYW0gewogICAgIHZvaWQgU2V0UGlwZWxp
bmUoV2ViS2l0OjpXZWJHUFVJZGVudGlmaWVyIGlkZW50aWZpZXIpCi0gICAgdm9pZCBEaXNwYXRj
aChQQUw6OldlYkdQVTo6U2l6ZTMyIHgsIHN0ZDo6b3B0aW9uYWw8UEFMOjpXZWJHUFU6OlNpemUz
Mj4geSwgc3RkOjpvcHRpb25hbDxQQUw6OldlYkdQVTo6U2l6ZTMyPiB6KQorICAgIHZvaWQgRGlz
cGF0Y2goUEFMOjpXZWJHUFU6OlNpemUzMiB3b3JrZ3JvdXBDb3VudFgsIFBBTDo6V2ViR1BVOjpT
aXplMzIgd29ya2dyb3VwQ291bnRZLCBQQUw6OldlYkdQVTo6U2l6ZTMyIHdvcmtncm91cENvdW50
WikKICAgICB2b2lkIERpc3BhdGNoSW5kaXJlY3QoV2ViS2l0OjpXZWJHUFVJZGVudGlmaWVyIGlu
ZGlyZWN0QnVmZmVyLCBQQUw6OldlYkdQVTo6U2l6ZTY0IGluZGlyZWN0T2Zmc2V0KQotICAgIHZv
aWQgQmVnaW5QaXBlbGluZVN0YXRpc3RpY3NRdWVyeShXZWJLaXQ6OldlYkdQVUlkZW50aWZpZXIg
aWRlbnRpZmllciwgUEFMOjpXZWJHUFU6OlNpemUzMiBxdWVyeUluZGV4KQotICAgIHZvaWQgRW5k
UGlwZWxpbmVTdGF0aXN0aWNzUXVlcnkoKQotICAgIHZvaWQgRW5kUGFzcygpCisgICAgdm9pZCBF
bmQoKQogICAgIHZvaWQgU2V0QmluZEdyb3VwKFBBTDo6V2ViR1BVOjpJbmRleDMyIGluZGV4LCBX
ZWJLaXQ6OldlYkdQVUlkZW50aWZpZXIgaWRlbnRpZmllciwgc3RkOjpvcHRpb25hbDxWZWN0b3I8
UEFMOjpXZWJHUFU6OkJ1ZmZlckR5bmFtaWNPZmZzZXQ+PiBkeW5hbWljT2Zmc2V0cykKICAgICB2
b2lkIFB1c2hEZWJ1Z0dyb3VwKFN0cmluZyBncm91cExhYmVsKQogICAgIHZvaWQgUG9wRGVidWdH
cm91cCgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvV2Vi
R1BVL1JlbW90ZVJlbmRlclBhc3NFbmNvZGVyLmNwcCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vz
cy9ncmFwaGljcy9XZWJHUFUvUmVtb3RlUmVuZGVyUGFzc0VuY29kZXIuY3BwCmluZGV4IDYyZDBj
YTc1ZWEyYjY4MDI3OWM1NjUyYTliZjNjODJjMjNiYTFmMjIuLmFkOWUxODRjN2NjNmMzMjA4MDE4
NjhmMGZhOTJmMWIxOGFiNGM0NzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vz
cy9ncmFwaGljcy9XZWJHUFUvUmVtb3RlUmVuZGVyUGFzc0VuY29kZXIuY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9XZWJHUFUvUmVtb3RlUmVuZGVyUGFzc0VuY29k
ZXIuY3BwCkBAIC0xNzksMjEgKzE3OSw2IEBAIHZvaWQgUmVtb3RlUmVuZGVyUGFzc0VuY29kZXI6
OmVuZE9jY2x1c2lvblF1ZXJ5KCkKICAgICBtX2JhY2tpbmctPmVuZE9jY2x1c2lvblF1ZXJ5KCk7
CiB9CiAKLXZvaWQgUmVtb3RlUmVuZGVyUGFzc0VuY29kZXI6OmJlZ2luUGlwZWxpbmVTdGF0aXN0
aWNzUXVlcnkoV2ViR1BVSWRlbnRpZmllciBxdWVyeVNldCwgUEFMOjpXZWJHUFU6OlNpemUzMiBx
dWVyeUluZGV4KQotewotICAgIGF1dG8gY29udmVydGVkUXVlcnlTZXQgPSBtX29iamVjdEhlYXAu
Y29udmVydFF1ZXJ5U2V0RnJvbUJhY2tpbmcocXVlcnlTZXQpOwotICAgIEFTU0VSVChjb252ZXJ0
ZWRRdWVyeVNldCk7Ci0gICAgaWYgKCFjb252ZXJ0ZWRRdWVyeVNldCkKLSAgICAgICAgcmV0dXJu
OwotCi0gICAgbV9iYWNraW5nLT5iZWdpblBpcGVsaW5lU3RhdGlzdGljc1F1ZXJ5KCpjb252ZXJ0
ZWRRdWVyeVNldCwgcXVlcnlJbmRleCk7Ci19Ci0KLXZvaWQgUmVtb3RlUmVuZGVyUGFzc0VuY29k
ZXI6OmVuZFBpcGVsaW5lU3RhdGlzdGljc1F1ZXJ5KCkKLXsKLSAgICBtX2JhY2tpbmctPmVuZFBp
cGVsaW5lU3RhdGlzdGljc1F1ZXJ5KCk7Ci19Ci0KIHZvaWQgUmVtb3RlUmVuZGVyUGFzc0VuY29k
ZXI6OmV4ZWN1dGVCdW5kbGVzKFZlY3RvcjxXZWJHUFVJZGVudGlmaWVyPiYmIHJlbmRlckJ1bmRs
ZXMpCiB7CiAgICAgVmVjdG9yPHN0ZDo6cmVmZXJlbmNlX3dyYXBwZXI8UEFMOjpXZWJHUFU6OlJl
bmRlckJ1bmRsZT4+IGNvbnZlcnRlZEJ1bmRsZXM7CkBAIC0yMDgsOSArMTkzLDkgQEAgdm9pZCBS
ZW1vdGVSZW5kZXJQYXNzRW5jb2Rlcjo6ZXhlY3V0ZUJ1bmRsZXMoVmVjdG9yPFdlYkdQVUlkZW50
aWZpZXI+JiYgcmVuZGVyQnUKICAgICBtX2JhY2tpbmctPmV4ZWN1dGVCdW5kbGVzKFdURk1vdmUo
Y29udmVydGVkQnVuZGxlcykpOwogfQogCi12b2lkIFJlbW90ZVJlbmRlclBhc3NFbmNvZGVyOjpl
bmRQYXNzKCkKK3ZvaWQgUmVtb3RlUmVuZGVyUGFzc0VuY29kZXI6OmVuZCgpCiB7Ci0gICAgbV9i
YWNraW5nLT5lbmRQYXNzKCk7CisgICAgbV9iYWNraW5nLT5lbmQoKTsKIH0KIAogdm9pZCBSZW1v
dGVSZW5kZXJQYXNzRW5jb2Rlcjo6c2V0TGFiZWwoU3RyaW5nJiYgbGFiZWwpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvV2ViR1BVL1JlbW90ZVJlbmRlclBh
c3NFbmNvZGVyLmggYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvV2ViR1BVL1Jl
bW90ZVJlbmRlclBhc3NFbmNvZGVyLmgKaW5kZXggZjJmNTQ1MWNlZmRkNWQzYWI4NzgwNmZjNjI1
NDYxMjA3OTJkY2Q3Yi4uYzdkZmViOWI1ZTRkMzJiMWM2YjIxM2ZiODE4NDhjYmQxMDlkN2QxZCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1dlYkdQVS9SZW1v
dGVSZW5kZXJQYXNzRW5jb2Rlci5oCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFw
aGljcy9XZWJHUFUvUmVtb3RlUmVuZGVyUGFzc0VuY29kZXIuaApAQCAtMTEwLDExICsxMTAsOCBA
QCBwcml2YXRlOgogICAgIHZvaWQgYmVnaW5PY2NsdXNpb25RdWVyeShQQUw6OldlYkdQVTo6U2l6
ZTMyIHF1ZXJ5SW5kZXgpOwogICAgIHZvaWQgZW5kT2NjbHVzaW9uUXVlcnkoKTsKIAotICAgIHZv
aWQgYmVnaW5QaXBlbGluZVN0YXRpc3RpY3NRdWVyeShXZWJHUFVJZGVudGlmaWVyLCBQQUw6Oldl
YkdQVTo6U2l6ZTMyIHF1ZXJ5SW5kZXgpOwotICAgIHZvaWQgZW5kUGlwZWxpbmVTdGF0aXN0aWNz
UXVlcnkoKTsKLQogICAgIHZvaWQgZXhlY3V0ZUJ1bmRsZXMoVmVjdG9yPFdlYkdQVUlkZW50aWZp
ZXI+JiYpOwotICAgIHZvaWQgZW5kUGFzcygpOworICAgIHZvaWQgZW5kKCk7CiAKICAgICB2b2lk
IHNldExhYmVsKFN0cmluZyYmKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9j
ZXNzL2dyYXBoaWNzL1dlYkdQVS9SZW1vdGVSZW5kZXJQYXNzRW5jb2Rlci5tZXNzYWdlcy5pbiBi
L1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9XZWJHUFUvUmVtb3RlUmVuZGVyUGFz
c0VuY29kZXIubWVzc2FnZXMuaW4KaW5kZXggZThiN2JhYWE4ZWFjMDliMzc1Y2ZiYTc4NGE5ZDMy
OGJkZDZiNmFlZC4uNTcyYjBhYWU5NzNlODYyZmMyOGQ2NDEzODlmOWExMzExMGQ3ZWY4MiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1dlYkdQVS9SZW1vdGVS
ZW5kZXJQYXNzRW5jb2Rlci5tZXNzYWdlcy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nl
c3MvZ3JhcGhpY3MvV2ViR1BVL1JlbW90ZVJlbmRlclBhc3NFbmNvZGVyLm1lc3NhZ2VzLmluCkBA
IC00MSwxMCArNDEsOCBAQCBtZXNzYWdlcyAtPiBSZW1vdGVSZW5kZXJQYXNzRW5jb2RlciBOb3RS
ZWZDb3VudGVkIFN0cmVhbSB7CiAgICAgdm9pZCBTZXRTdGVuY2lsUmVmZXJlbmNlKFBBTDo6V2Vi
R1BVOjpTdGVuY2lsVmFsdWUgc3RlbmNpbFZhbHVlKQogICAgIHZvaWQgQmVnaW5PY2NsdXNpb25R
dWVyeShQQUw6OldlYkdQVTo6U2l6ZTMyIHF1ZXJ5SW5kZXgpCiAgICAgdm9pZCBFbmRPY2NsdXNp
b25RdWVyeSgpCi0gICAgdm9pZCBCZWdpblBpcGVsaW5lU3RhdGlzdGljc1F1ZXJ5KFdlYktpdDo6
V2ViR1BVSWRlbnRpZmllciBpZGVudGlmaWVyLCBQQUw6OldlYkdQVTo6U2l6ZTMyIHF1ZXJ5SW5k
ZXgpCi0gICAgdm9pZCBFbmRQaXBlbGluZVN0YXRpc3RpY3NRdWVyeSgpCiAgICAgdm9pZCBFeGVj
dXRlQnVuZGxlcyhWZWN0b3I8V2ViS2l0OjpXZWJHUFVJZGVudGlmaWVyPiBidW5kbGVzKQotICAg
IHZvaWQgRW5kUGFzcygpCisgICAgdm9pZCBFbmQoKQogICAgIHZvaWQgU2V0TGFiZWwoU3RyaW5n
IGxhYmVsKQogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJHUFUvV2Vi
R1BVQ2FudmFzQ29uZmlndXJhdGlvbi5jcHAgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJHUFUv
V2ViR1BVQ2FudmFzQ29uZmlndXJhdGlvbi5jcHAKaW5kZXggNDgxMzI1MjI2ZGY2OGM5M2E5MTgy
N2MyMjNmZTA4ZmZjNGI4NTI4YS4uNDViNjg3ZTI2NTJhMjgzMWJiMzk3NDEzOTQyOWUwOTAyODgx
NzQ5ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViR1BVL1dlYkdQVUNhbnZh
c0NvbmZpZ3VyYXRpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkdQVS9XZWJH
UFVDYW52YXNDb25maWd1cmF0aW9uLmNwcApAQCAtNDcsNyArNDcsNyBAQCBzdGQ6Om9wdGlvbmFs
PENhbnZhc0NvbmZpZ3VyYXRpb24+IENvbnZlcnRUb0JhY2tpbmdDb250ZXh0Ojpjb252ZXJ0VG9C
YWNraW5nKGNvbgogICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICB9CiAKLSAg
ICByZXR1cm4geyB7IGRldmljZSwgY2FudmFzQ29uZmlndXJhdGlvbi5mb3JtYXQsIGNhbnZhc0Nv
bmZpZ3VyYXRpb24udXNhZ2UsIGNhbnZhc0NvbmZpZ3VyYXRpb24uY29sb3JTcGFjZSwgY2FudmFz
Q29uZmlndXJhdGlvbi5jb21wb3NpdGluZ0FscGhhTW9kZSwgV1RGTW92ZShzaXplKSB9IH07Cisg
ICAgcmV0dXJuIHsgeyBkZXZpY2UsIGNhbnZhc0NvbmZpZ3VyYXRpb24uZm9ybWF0LCBjYW52YXND
b25maWd1cmF0aW9uLnVzYWdlLCBjYW52YXNDb25maWd1cmF0aW9uLnZpZXdGb3JtYXRzLCBjYW52
YXNDb25maWd1cmF0aW9uLmNvbG9yU3BhY2UsIGNhbnZhc0NvbmZpZ3VyYXRpb24uY29tcG9zaXRp
bmdBbHBoYU1vZGUsIFdURk1vdmUoc2l6ZSkgfSB9OwogfQogCiBzdGQ6Om9wdGlvbmFsPFBBTDo6
V2ViR1BVOjpDYW52YXNDb25maWd1cmF0aW9uPiBDb252ZXJ0RnJvbUJhY2tpbmdDb250ZXh0Ojpj
b252ZXJ0RnJvbUJhY2tpbmcoY29uc3QgQ2FudmFzQ29uZmlndXJhdGlvbiYgY2FudmFzQ29uZmln
dXJhdGlvbikKQEAgLTYzLDcgKzYzLDcgQEAgc3RkOjpvcHRpb25hbDxQQUw6OldlYkdQVTo6Q2Fu
dmFzQ29uZmlndXJhdGlvbj4gQ29udmVydEZyb21CYWNraW5nQ29udGV4dDo6Y29udmUKICAgICAg
ICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgfQogCi0gICAgcmV0dXJuIHsgeyAqZGV2
aWNlLCBjYW52YXNDb25maWd1cmF0aW9uLmZvcm1hdCwgY2FudmFzQ29uZmlndXJhdGlvbi51c2Fn
ZSwgY2FudmFzQ29uZmlndXJhdGlvbi5jb2xvclNwYWNlLCBjYW52YXNDb25maWd1cmF0aW9uLmNv
bXBvc2l0aW5nQWxwaGFNb2RlLCBXVEZNb3ZlKHNpemUpIH0gfTsKKyAgICByZXR1cm4geyB7ICpk
ZXZpY2UsIGNhbnZhc0NvbmZpZ3VyYXRpb24uZm9ybWF0LCBjYW52YXNDb25maWd1cmF0aW9uLnVz
YWdlLCBjYW52YXNDb25maWd1cmF0aW9uLnZpZXdGb3JtYXRzLCBjYW52YXNDb25maWd1cmF0aW9u
LmNvbG9yU3BhY2UsIGNhbnZhc0NvbmZpZ3VyYXRpb24uY29tcG9zaXRpbmdBbHBoYU1vZGUsIFdU
Rk1vdmUoc2l6ZSkgfSB9OwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkdQVS9XZWJHUFVDYW52YXNDb25maWd1cmF0aW9uLmgg
Yi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJHUFUvV2ViR1BVQ2FudmFzQ29uZmlndXJhdGlvbi5o
CmluZGV4IDMwMTAxMTliM2VjYTdmYzdiYTYyYWMyNWI0MTczYjgxY2QwMmFmMjguLjA4Nzg0ZTM5
MDU2OWY3NTg0ZjU5NjRmYzkzNjU0MmVlOTM4Y2ViYzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvU2hhcmVkL1dlYkdQVS9XZWJHUFVDYW52YXNDb25maWd1cmF0aW9uLmgKKysrIGIvU291cmNl
L1dlYktpdC9TaGFyZWQvV2ViR1BVL1dlYkdQVUNhbnZhc0NvbmZpZ3VyYXRpb24uaApAQCAtNDUs
NiArNDUsNyBAQCBzdHJ1Y3QgQ2FudmFzQ29uZmlndXJhdGlvbiB7CiAgICAgV2ViR1BVSWRlbnRp
ZmllciBkZXZpY2U7CiAgICAgUEFMOjpXZWJHUFU6OlRleHR1cmVGb3JtYXQgZm9ybWF0IHsgUEFM
OjpXZWJHUFU6OlRleHR1cmVGb3JtYXQ6OlI4dW5vcm0gfTsKICAgICBQQUw6OldlYkdQVTo6VGV4
dHVyZVVzYWdlRmxhZ3MgdXNhZ2UgeyBQQUw6OldlYkdQVTo6VGV4dHVyZVVzYWdlOjpSZW5kZXJB
dHRhY2htZW50IH07CisgICAgVmVjdG9yPFBBTDo6V2ViR1BVOjpUZXh0dXJlRm9ybWF0PiB2aWV3
Rm9ybWF0czsKICAgICBQQUw6OldlYkdQVTo6UHJlZGVmaW5lZENvbG9yU3BhY2UgY29sb3JTcGFj
ZSB7IFBBTDo6V2ViR1BVOjpQcmVkZWZpbmVkQ29sb3JTcGFjZTo6U1JHQiB9OwogICAgIFBBTDo6
V2ViR1BVOjpDYW52YXNDb21wb3NpdGluZ0FscGhhTW9kZSBjb21wb3NpdGluZ0FscGhhTW9kZSB7
IFBBTDo6V2ViR1BVOjpDYW52YXNDb21wb3NpdGluZ0FscGhhTW9kZTo6T3BhcXVlIH07CiAgICAg
c3RkOjpvcHRpb25hbDxFeHRlbnQzRD4gc2l6ZTsKQEAgLTU0LDYgKzU1LDcgQEAgc3RydWN0IENh
bnZhc0NvbmZpZ3VyYXRpb24gewogICAgICAgICBlbmNvZGVyIDw8IGRldmljZTsKICAgICAgICAg
ZW5jb2RlciA8PCBmb3JtYXQ7CiAgICAgICAgIGVuY29kZXIgPDwgdXNhZ2U7CisgICAgICAgIGVu
Y29kZXIgPDwgdmlld0Zvcm1hdHM7CiAgICAgICAgIGVuY29kZXIgPDwgY29sb3JTcGFjZTsKICAg
ICAgICAgZW5jb2RlciA8PCBjb21wb3NpdGluZ0FscGhhTW9kZTsKICAgICAgICAgZW5jb2RlciA8
PCBzaXplOwpAQCAtNzYsNiArNzgsMTEgQEAgc3RydWN0IENhbnZhc0NvbmZpZ3VyYXRpb24gewog
ICAgICAgICBpZiAoIXVzYWdlKQogICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAor
ICAgICAgICBzdGQ6Om9wdGlvbmFsPFZlY3RvcjxQQUw6OldlYkdQVTo6VGV4dHVyZUZvcm1hdD4+
IHZpZXdGb3JtYXRzOworICAgICAgICBkZWNvZGVyID4+IHZpZXdGb3JtYXRzOworICAgICAgICBp
ZiAoIXZpZXdGb3JtYXRzKQorICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKKwogICAg
ICAgICBzdGQ6Om9wdGlvbmFsPFBBTDo6V2ViR1BVOjpQcmVkZWZpbmVkQ29sb3JTcGFjZT4gY29s
b3JTcGFjZTsKICAgICAgICAgZGVjb2RlciA+PiBjb2xvclNwYWNlOwogICAgICAgICBpZiAoIWNv
bG9yU3BhY2UpCkBAIC05MSw3ICs5OCw3IEBAIHN0cnVjdCBDYW52YXNDb25maWd1cmF0aW9uIHsK
ICAgICAgICAgaWYgKCFzaXplKQogICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAot
ICAgICAgICByZXR1cm4geyB7IFdURk1vdmUoKmRldmljZSksIFdURk1vdmUoKmZvcm1hdCksIFdU
Rk1vdmUoKnVzYWdlKSwgV1RGTW92ZSgqY29sb3JTcGFjZSksIFdURk1vdmUoKmNvbXBvc2l0aW5n
QWxwaGFNb2RlKSwgV1RGTW92ZSgqc2l6ZSkgfSB9OworICAgICAgICByZXR1cm4geyB7IFdURk1v
dmUoKmRldmljZSksIFdURk1vdmUoKmZvcm1hdCksIFdURk1vdmUoKnVzYWdlKSwgV1RGTW92ZSgq
dmlld0Zvcm1hdHMpLCBXVEZNb3ZlKCpjb2xvclNwYWNlKSwgV1RGTW92ZSgqY29tcG9zaXRpbmdB
bHBoYU1vZGUpLCBXVEZNb3ZlKCpzaXplKSB9IH07CiAgICAgfQogfTsKIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9TaGFyZWQvV2ViR1BVL1dlYkdQVUNvbnZlcnRGcm9tQmFja2luZ0NvbnRl
eHQuaCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkdQVS9XZWJHUFVDb252ZXJ0RnJvbUJhY2tp
bmdDb250ZXh0LmgKaW5kZXggOTkyZjI3ZGEwZTRiYTUxNWNmYmZkOTgwNjY5NDc3MGQzYzk4ODQx
Ny4uMzk3MmFkMzhmYTdmMWVmZDkyNzJjNjhjMzA0NzgxYWFmNjcyMzM5MCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9TaGFyZWQvV2ViR1BVL1dlYkdQVUNvbnZlcnRGcm9tQmFja2luZ0NvbnRl
eHQuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJHUFUvV2ViR1BVQ29udmVydEZyb21C
YWNraW5nQ29udGV4dC5oCkBAIC0xMTIsNiArMTEyLDcgQEAgY2xhc3MgU2FtcGxlcjsKIHN0cnVj
dCBTYW1wbGVyQmluZGluZ0xheW91dDsKIHN0cnVjdCBTYW1wbGVyRGVzY3JpcHRvcjsKIGNsYXNz
IFNoYWRlck1vZHVsZTsKK3N0cnVjdCBTaGFkZXJNb2R1bGVDb21waWxhdGlvbkhpbnQ7CiBzdHJ1
Y3QgU2hhZGVyTW9kdWxlRGVzY3JpcHRvcjsKIHN0cnVjdCBTdGVuY2lsRmFjZVN0YXRlOwogc3Ry
dWN0IFN0b3JhZ2VUZXh0dXJlQmluZGluZ0xheW91dDsKQEAgLTE3Niw2ICsxNzcsNyBAQCBzdHJ1
Y3QgUmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9yOwogc3RydWN0IFJlcXVlc3RBZGFwdGVyT3B0aW9u
czsKIHN0cnVjdCBTYW1wbGVyQmluZGluZ0xheW91dDsKIHN0cnVjdCBTYW1wbGVyRGVzY3JpcHRv
cjsKK3N0cnVjdCBTaGFkZXJNb2R1bGVDb21waWxhdGlvbkhpbnQ7CiBzdHJ1Y3QgU2hhZGVyTW9k
dWxlRGVzY3JpcHRvcjsKIHN0cnVjdCBTdGVuY2lsRmFjZVN0YXRlOwogc3RydWN0IFN0b3JhZ2VU
ZXh0dXJlQmluZGluZ0xheW91dDsKQEAgLTI1MSw2ICsyNTMsNyBAQCBwdWJsaWM6CiAgICAgc3Rk
OjpvcHRpb25hbDxQQUw6OldlYkdQVTo6UmVxdWVzdEFkYXB0ZXJPcHRpb25zPiBjb252ZXJ0RnJv
bUJhY2tpbmcoY29uc3QgUmVxdWVzdEFkYXB0ZXJPcHRpb25zJik7CiAgICAgc3RkOjpvcHRpb25h
bDxQQUw6OldlYkdQVTo6U2FtcGxlckJpbmRpbmdMYXlvdXQ+IGNvbnZlcnRGcm9tQmFja2luZyhj
b25zdCBTYW1wbGVyQmluZGluZ0xheW91dCYpOwogICAgIHN0ZDo6b3B0aW9uYWw8UEFMOjpXZWJH
UFU6OlNhbXBsZXJEZXNjcmlwdG9yPiBjb252ZXJ0RnJvbUJhY2tpbmcoY29uc3QgU2FtcGxlckRl
c2NyaXB0b3ImKTsKKyAgICBzdGQ6Om9wdGlvbmFsPFBBTDo6V2ViR1BVOjpTaGFkZXJNb2R1bGVD
b21waWxhdGlvbkhpbnQ+IGNvbnZlcnRGcm9tQmFja2luZyhjb25zdCBTaGFkZXJNb2R1bGVDb21w
aWxhdGlvbkhpbnQmKTsKICAgICBzdGQ6Om9wdGlvbmFsPFBBTDo6V2ViR1BVOjpTaGFkZXJNb2R1
bGVEZXNjcmlwdG9yPiBjb252ZXJ0RnJvbUJhY2tpbmcoY29uc3QgU2hhZGVyTW9kdWxlRGVzY3Jp
cHRvciYpOwogICAgIHN0ZDo6b3B0aW9uYWw8UEFMOjpXZWJHUFU6OlN0ZW5jaWxGYWNlU3RhdGU+
IGNvbnZlcnRGcm9tQmFja2luZyhjb25zdCBTdGVuY2lsRmFjZVN0YXRlJik7CiAgICAgc3RkOjpv
cHRpb25hbDxQQUw6OldlYkdQVTo6U3RvcmFnZVRleHR1cmVCaW5kaW5nTGF5b3V0PiBjb252ZXJ0
RnJvbUJhY2tpbmcoY29uc3QgU3RvcmFnZVRleHR1cmVCaW5kaW5nTGF5b3V0Jik7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJHUFUvV2ViR1BVQ29udmVydFRvQmFja2luZ0Nv
bnRleHQuaCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkdQVS9XZWJHUFVDb252ZXJ0VG9CYWNr
aW5nQ29udGV4dC5oCmluZGV4IGE1MzM4NzY3OGNiOWQ3NWEyNzZlNDYzNzU0MWQzMTYwNjliMDdk
OWMuLmRlODQwZTM3ODU5NGNiMmNjZGVlZjdkMjU1Y2M1ZjZlYzRkYzQ5NjEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkdQVS9XZWJHUFVDb252ZXJ0VG9CYWNraW5nQ29udGV4
dC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkdQVS9XZWJHUFVDb252ZXJ0VG9CYWNr
aW5nQ29udGV4dC5oCkBAIC0xMTEsNiArMTExLDcgQEAgY2xhc3MgU2FtcGxlcjsKIHN0cnVjdCBT
YW1wbGVyQmluZGluZ0xheW91dDsKIHN0cnVjdCBTYW1wbGVyRGVzY3JpcHRvcjsKIGNsYXNzIFNo
YWRlck1vZHVsZTsKK3N0cnVjdCBTaGFkZXJNb2R1bGVDb21waWxhdGlvbkhpbnQ7CiBzdHJ1Y3Qg
U2hhZGVyTW9kdWxlRGVzY3JpcHRvcjsKIHN0cnVjdCBTdGVuY2lsRmFjZVN0YXRlOwogc3RydWN0
IFN0b3JhZ2VUZXh0dXJlQmluZGluZ0xheW91dDsKQEAgLTE3NSw2ICsxNzYsNyBAQCBzdHJ1Y3Qg
UmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9yOwogc3RydWN0IFJlcXVlc3RBZGFwdGVyT3B0aW9uczsK
IHN0cnVjdCBTYW1wbGVyQmluZGluZ0xheW91dDsKIHN0cnVjdCBTYW1wbGVyRGVzY3JpcHRvcjsK
K3N0cnVjdCBTaGFkZXJNb2R1bGVDb21waWxhdGlvbkhpbnQ7CiBzdHJ1Y3QgU2hhZGVyTW9kdWxl
RGVzY3JpcHRvcjsKIHN0cnVjdCBTdGVuY2lsRmFjZVN0YXRlOwogc3RydWN0IFN0b3JhZ2VUZXh0
dXJlQmluZGluZ0xheW91dDsKQEAgLTI1MCw2ICsyNTIsNyBAQCBwdWJsaWM6CiAgICAgc3RkOjpv
cHRpb25hbDxSZXF1ZXN0QWRhcHRlck9wdGlvbnM+IGNvbnZlcnRUb0JhY2tpbmcoY29uc3QgUEFM
OjpXZWJHUFU6OlJlcXVlc3RBZGFwdGVyT3B0aW9ucyYpOwogICAgIHN0ZDo6b3B0aW9uYWw8U2Ft
cGxlckJpbmRpbmdMYXlvdXQ+IGNvbnZlcnRUb0JhY2tpbmcoY29uc3QgUEFMOjpXZWJHUFU6OlNh
bXBsZXJCaW5kaW5nTGF5b3V0Jik7CiAgICAgc3RkOjpvcHRpb25hbDxTYW1wbGVyRGVzY3JpcHRv
cj4gY29udmVydFRvQmFja2luZyhjb25zdCBQQUw6OldlYkdQVTo6U2FtcGxlckRlc2NyaXB0b3Im
KTsKKyAgICBzdGQ6Om9wdGlvbmFsPFNoYWRlck1vZHVsZUNvbXBpbGF0aW9uSGludD4gY29udmVy
dFRvQmFja2luZyhjb25zdCBQQUw6OldlYkdQVTo6U2hhZGVyTW9kdWxlQ29tcGlsYXRpb25IaW50
Jik7CiAgICAgc3RkOjpvcHRpb25hbDxTaGFkZXJNb2R1bGVEZXNjcmlwdG9yPiBjb252ZXJ0VG9C
YWNraW5nKGNvbnN0IFBBTDo6V2ViR1BVOjpTaGFkZXJNb2R1bGVEZXNjcmlwdG9yJik7CiAgICAg
c3RkOjpvcHRpb25hbDxTdGVuY2lsRmFjZVN0YXRlPiBjb252ZXJ0VG9CYWNraW5nKGNvbnN0IFBB
TDo6V2ViR1BVOjpTdGVuY2lsRmFjZVN0YXRlJik7CiAgICAgc3RkOjpvcHRpb25hbDxTdG9yYWdl
VGV4dHVyZUJpbmRpbmdMYXlvdXQ+IGNvbnZlcnRUb0JhY2tpbmcoY29uc3QgUEFMOjpXZWJHUFU6
OlN0b3JhZ2VUZXh0dXJlQmluZGluZ0xheW91dCYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9TaGFyZWQvV2ViR1BVL1dlYkdQVUZyYWdtZW50U3RhdGUuY3BwIGIvU291cmNlL1dlYktpdC9T
aGFyZWQvV2ViR1BVL1dlYkdQVUZyYWdtZW50U3RhdGUuY3BwCmluZGV4IDVmMDcwMTMzM2RjZGQy
YmQyNzhiZmRlYjg3M2UwNThjMGMwNTUyMjcuLmFjNThhMzY4ZDE2Y2ZjODFmNzM4ODhkZWFiMGEz
NzhlMGMzMDA5N2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkdQVS9XZWJH
UFVGcmFnbWVudFN0YXRlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJHUFUvV2Vi
R1BVRnJhZ21lbnRTdGF0ZS5jcHAKQEAgLTQwLDEzICs0MCwxNiBAQCBzdGQ6Om9wdGlvbmFsPEZy
YWdtZW50U3RhdGU+IENvbnZlcnRUb0JhY2tpbmdDb250ZXh0Ojpjb252ZXJ0VG9CYWNraW5nKGNv
bnN0IFBBTAogICAgIGlmICghYmFzZSkKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAot
ICAgIFZlY3RvcjxDb2xvclRhcmdldFN0YXRlPiB0YXJnZXRzOworICAgIFZlY3RvcjxzdGQ6Om9w
dGlvbmFsPENvbG9yVGFyZ2V0U3RhdGU+PiB0YXJnZXRzOwogICAgIHRhcmdldHMucmVzZXJ2ZUlu
aXRpYWxDYXBhY2l0eShmcmFnbWVudFN0YXRlLnRhcmdldHMuc2l6ZSgpKTsKICAgICBmb3IgKGNv
bnN0IGF1dG8mIHRhcmdldCA6IGZyYWdtZW50U3RhdGUudGFyZ2V0cykgewotICAgICAgICBhdXRv
IGNvbnZlcnRlZFRhcmdldCA9IGNvbnZlcnRUb0JhY2tpbmcodGFyZ2V0KTsKLSAgICAgICAgaWYg
KCFjb252ZXJ0ZWRUYXJnZXQpCi0gICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwotICAg
ICAgICB0YXJnZXRzLnVuY2hlY2tlZEFwcGVuZChXVEZNb3ZlKCpjb252ZXJ0ZWRUYXJnZXQpKTsK
KyAgICAgICAgaWYgKHRhcmdldCkgeworICAgICAgICAgICAgYXV0byBjb252ZXJ0ZWRUYXJnZXQg
PSBjb252ZXJ0VG9CYWNraW5nKCp0YXJnZXQpOworICAgICAgICAgICAgaWYgKCFjb252ZXJ0ZWRU
YXJnZXQpCisgICAgICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKKyAgICAgICAgICAg
IHRhcmdldHMudW5jaGVja2VkQXBwZW5kKFdURk1vdmUoKmNvbnZlcnRlZFRhcmdldCkpOworICAg
ICAgICB9IGVsc2UKKyAgICAgICAgICAgIHRhcmdldHMudW5jaGVja2VkQXBwZW5kKHN0ZDo6bnVs
bG9wdCk7CiAgICAgfQogCiAgICAgcmV0dXJuIHsgeyBXVEZNb3ZlKCpiYXNlKSwgV1RGTW92ZSh0
YXJnZXRzKSB9IH07CkBAIC01OCwxMyArNjEsMTYgQEAgc3RkOjpvcHRpb25hbDxQQUw6OldlYkdQ
VTo6RnJhZ21lbnRTdGF0ZT4gQ29udmVydEZyb21CYWNraW5nQ29udGV4dDo6Y29udmVydEZyb20K
ICAgICBpZiAoIWJhc2UpCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKLSAgICBWZWN0
b3I8UEFMOjpXZWJHUFU6OkNvbG9yVGFyZ2V0U3RhdGU+IHRhcmdldHM7CisgICAgVmVjdG9yPHN0
ZDo6b3B0aW9uYWw8UEFMOjpXZWJHUFU6OkNvbG9yVGFyZ2V0U3RhdGU+PiB0YXJnZXRzOwogICAg
IHRhcmdldHMucmVzZXJ2ZUluaXRpYWxDYXBhY2l0eShmcmFnbWVudFN0YXRlLnRhcmdldHMuc2l6
ZSgpKTsKICAgICBmb3IgKGNvbnN0IGF1dG8mIGJhY2tpbmdUYXJnZXQgOiBmcmFnbWVudFN0YXRl
LnRhcmdldHMpIHsKLSAgICAgICAgYXV0byB0YXJnZXQgPSBjb252ZXJ0RnJvbUJhY2tpbmcoYmFj
a2luZ1RhcmdldCk7Ci0gICAgICAgIGlmICghdGFyZ2V0KQotICAgICAgICAgICAgcmV0dXJuIHN0
ZDo6bnVsbG9wdDsKLSAgICAgICAgdGFyZ2V0cy51bmNoZWNrZWRBcHBlbmQoV1RGTW92ZSgqdGFy
Z2V0KSk7CisgICAgICAgIGlmIChiYWNraW5nVGFyZ2V0KSB7CisgICAgICAgICAgICBhdXRvIHRh
cmdldCA9IGNvbnZlcnRGcm9tQmFja2luZygqYmFja2luZ1RhcmdldCk7CisgICAgICAgICAgICBp
ZiAoIXRhcmdldCkKKyAgICAgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OworICAgICAg
ICAgICAgdGFyZ2V0cy51bmNoZWNrZWRBcHBlbmQoV1RGTW92ZSgqdGFyZ2V0KSk7CisgICAgICAg
IH0gZWxzZQorICAgICAgICAgICAgdGFyZ2V0cy51bmNoZWNrZWRBcHBlbmQoc3RkOjpudWxsb3B0
KTsKICAgICB9CiAKICAgICByZXR1cm4geyB7IFdURk1vdmUoKmJhc2UpLCBXVEZNb3ZlKHRhcmdl
dHMpIH0gfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkdQVS9XZWJHUFVG
cmFnbWVudFN0YXRlLmggYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJHUFUvV2ViR1BVRnJhZ21l
bnRTdGF0ZS5oCmluZGV4IDI4N2JjYzQ3ZDk0YjRkZWY1MWNjZjZiMTBiYWM2OTc5ZjhkMjUzOWMu
LmNiYjQ4YzlhNDZlNmQwOTY5ZDE0Mzg4MDgyYjNhNTQ1YTUxZDRhNzIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvU2hhcmVkL1dlYkdQVS9XZWJHUFVGcmFnbWVudFN0YXRlLmgKKysrIGIvU291
cmNlL1dlYktpdC9TaGFyZWQvV2ViR1BVL1dlYkdQVUZyYWdtZW50U3RhdGUuaApAQCAtMzUsNyAr
MzUsNyBAQAogbmFtZXNwYWNlIFdlYktpdDo6V2ViR1BVIHsKIAogc3RydWN0IEZyYWdtZW50U3Rh
dGUgOiBwdWJsaWMgUHJvZ3JhbW1hYmxlU3RhZ2UgewotICAgIFZlY3RvcjxDb2xvclRhcmdldFN0
YXRlPiB0YXJnZXRzOworICAgIFZlY3RvcjxzdGQ6Om9wdGlvbmFsPENvbG9yVGFyZ2V0U3RhdGU+
PiB0YXJnZXRzOwogCiAgICAgdGVtcGxhdGU8Y2xhc3MgRW5jb2Rlcj4gdm9pZCBlbmNvZGUoRW5j
b2RlciYgZW5jb2RlcikgY29uc3QKICAgICB7CkBAIC01MCw3ICs1MCw3IEBAIHN0cnVjdCBGcmFn
bWVudFN0YXRlIDogcHVibGljIFByb2dyYW1tYWJsZVN0YWdlIHsKICAgICAgICAgaWYgKCFwcm9n
cmFtbWFibGVTdGFnZSkKICAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKLSAgICAg
ICAgc3RkOjpvcHRpb25hbDxWZWN0b3I8Q29sb3JUYXJnZXRTdGF0ZT4+IHRhcmdldHM7CisgICAg
ICAgIHN0ZDo6b3B0aW9uYWw8VmVjdG9yPHN0ZDo6b3B0aW9uYWw8Q29sb3JUYXJnZXRTdGF0ZT4+
PiB0YXJnZXRzOwogICAgICAgICBkZWNvZGVyID4+IHRhcmdldHM7CiAgICAgICAgIGlmICghdGFy
Z2V0cykKICAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1NoYXJlZC9XZWJHUFUvV2ViR1BVSW1hZ2VDb3B5RXh0ZXJuYWxJbWFnZS5jcHAg
Yi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJHUFUvV2ViR1BVSW1hZ2VDb3B5RXh0ZXJuYWxJbWFn
ZS5jcHAKaW5kZXggODY4NjgzZDFkNDk4YjVmYzExNzI0OTM3MWM1M2I0MThkM2NhMzFjZS4uYWM4
MjY4Y2U5YTlmMWZmYjNmMzcwMjg1NTFhZjE4ZjdkYTIxZmQzMyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9TaGFyZWQvV2ViR1BVL1dlYkdQVUltYWdlQ29weUV4dGVybmFsSW1hZ2UuY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkdQVS9XZWJHUFVJbWFnZUNvcHlFeHRlcm5hbElt
YWdlLmNwcApAQCAtMzgsMjQgKzM4LDI0IEBAIHN0ZDo6b3B0aW9uYWw8SW1hZ2VDb3B5RXh0ZXJu
YWxJbWFnZT4gQ29udmVydFRvQmFja2luZ0NvbnRleHQ6OmNvbnZlcnRUb0JhY2tpbmcoCiB7CiAg
ICAgc3RkOjpvcHRpb25hbDxPcmlnaW4yRD4gb3JpZ2luOwogICAgIGlmIChpbWFnZUNvcHlFeHRl
cm5hbEltYWdlLm9yaWdpbikgewotICAgICAgICBhdXRvIGNvbnZlcnRlZE9yaWdpbiA9IGNvbnZl
cnRUb0JhY2tpbmcoKmltYWdlQ29weUV4dGVybmFsSW1hZ2Uub3JpZ2luKTsKLSAgICAgICAgaWYg
KCFjb252ZXJ0ZWRPcmlnaW4pCisgICAgICAgIG9yaWdpbiA9IGNvbnZlcnRUb0JhY2tpbmcoKmlt
YWdlQ29weUV4dGVybmFsSW1hZ2Uub3JpZ2luKTsKKyAgICAgICAgaWYgKCFvcmlnaW4pCiAgICAg
ICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIH0KIAotICAgIHJldHVybiB7IHsgV1RG
TW92ZShvcmlnaW4pIH0gfTsKKyAgICByZXR1cm4geyB7IFdURk1vdmUob3JpZ2luKSwgaW1hZ2VD
b3B5RXh0ZXJuYWxJbWFnZS5mbGlwWSB9IH07CiB9CiAKIHN0ZDo6b3B0aW9uYWw8UEFMOjpXZWJH
UFU6OkltYWdlQ29weUV4dGVybmFsSW1hZ2U+IENvbnZlcnRGcm9tQmFja2luZ0NvbnRleHQ6OmNv
bnZlcnRGcm9tQmFja2luZyhjb25zdCBJbWFnZUNvcHlFeHRlcm5hbEltYWdlJiBpbWFnZUNvcHlF
eHRlcm5hbEltYWdlKQogewogICAgIHN0ZDo6b3B0aW9uYWw8UEFMOjpXZWJHUFU6Ok9yaWdpbjJE
PiBvcmlnaW47CiAgICAgaWYgKGltYWdlQ29weUV4dGVybmFsSW1hZ2Uub3JpZ2luKSB7Ci0gICAg
ICAgIGF1dG8gb3JpZ2luID0gY29udmVydEZyb21CYWNraW5nKCppbWFnZUNvcHlFeHRlcm5hbElt
YWdlLm9yaWdpbik7CisgICAgICAgIG9yaWdpbiA9IGNvbnZlcnRGcm9tQmFja2luZygqaW1hZ2VD
b3B5RXh0ZXJuYWxJbWFnZS5vcmlnaW4pOwogICAgICAgICBpZiAoIW9yaWdpbikKICAgICAgICAg
ICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgfQogCi0gICAgcmV0dXJuIHsgeyBXVEZNb3Zl
KG9yaWdpbikgfSB9OworICAgIHJldHVybiB7IHsgV1RGTW92ZShvcmlnaW4pLCBpbWFnZUNvcHlF
eHRlcm5hbEltYWdlLmZsaXBZIH0gfTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJHUFUvV2ViR1BVSW1hZ2VDb3B5RXh0ZXJu
YWxJbWFnZS5oIGIvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViR1BVL1dlYkdQVUltYWdlQ29weUV4
dGVybmFsSW1hZ2UuaAppbmRleCA1ZjI5NjZjMjZlY2YyZWZiZTU4ZGJiMzk0MzFmYTNiYWI1YThm
MDZlLi5kZmZlNWUwOGMxOGE3ZjEzMjBlYjIyMTZiNjU0MGE2YmFiZjBjZjI3IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJHUFUvV2ViR1BVSW1hZ2VDb3B5RXh0ZXJuYWxJbWFn
ZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkdQVS9XZWJHUFVJbWFnZUNvcHlFeHRl
cm5hbEltYWdlLmgKQEAgLTM2LDEwICszNiwxMiBAQCBuYW1lc3BhY2UgV2ViS2l0OjpXZWJHUFUg
ewogc3RydWN0IEltYWdlQ29weUV4dGVybmFsSW1hZ2UgewogICAgIC8vIEZJWE1FOiBIYW5kbGUg
dGhlIHNvdXJjZS4KICAgICBzdGQ6Om9wdGlvbmFsPE9yaWdpbjJEPiBvcmlnaW47CisgICAgYm9v
bCBmbGlwWSB7IGZhbHNlIH07CiAKICAgICB0ZW1wbGF0ZTxjbGFzcyBFbmNvZGVyPiB2b2lkIGVu
Y29kZShFbmNvZGVyJiBlbmNvZGVyKSBjb25zdAogICAgIHsKICAgICAgICAgZW5jb2RlciA8PCBv
cmlnaW47CisgICAgICAgIGVuY29kZXIgPDwgZmxpcFk7CiAgICAgfQogCiAgICAgdGVtcGxhdGU8
Y2xhc3MgRGVjb2Rlcj4gc3RhdGljIHN0ZDo6b3B0aW9uYWw8SW1hZ2VDb3B5RXh0ZXJuYWxJbWFn
ZT4gZGVjb2RlKERlY29kZXImIGRlY29kZXIpCkBAIC00OSw3ICs1MSwxMiBAQCBzdHJ1Y3QgSW1h
Z2VDb3B5RXh0ZXJuYWxJbWFnZSB7CiAgICAgICAgIGlmICghb3JpZ2luKQogICAgICAgICAgICAg
cmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAotICAgICAgICByZXR1cm4geyB7IFdURk1vdmUoKm9yaWdp
bikgfSB9OworICAgICAgICBzdGQ6Om9wdGlvbmFsPGJvb2w+IGZsaXBZOworICAgICAgICBkZWNv
ZGVyID4+IGZsaXBZOworICAgICAgICBpZiAoIWZsaXBZKQorICAgICAgICAgICAgcmV0dXJuIHN0
ZDo6bnVsbG9wdDsKKworICAgICAgICByZXR1cm4geyB7IFdURk1vdmUoKm9yaWdpbiksIFdURk1v
dmUoKmZsaXBZKSB9IH07CiAgICAgfQogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9T
aGFyZWQvV2ViR1BVL1dlYkdQVUltYWdlQ29weVRleHR1cmUuY3BwIGIvU291cmNlL1dlYktpdC9T
aGFyZWQvV2ViR1BVL1dlYkdQVUltYWdlQ29weVRleHR1cmUuY3BwCmluZGV4IDYwOTA4MTk1NzUz
MmZkM2YyN2JhMjIxOTE2YWI3YTcwNjczM2RlNzMuLmQzYzc1ZTQ2NDk0YTNjYjRmZjcwYjUxNDI3
YzkyMmNiNWU4M2EzM2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkdQVS9X
ZWJHUFVJbWFnZUNvcHlUZXh0dXJlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJH
UFUvV2ViR1BVSW1hZ2VDb3B5VGV4dHVyZS5jcHAKQEAgLTQyLDcgKzQyLDcgQEAgc3RkOjpvcHRp
b25hbDxJbWFnZUNvcHlUZXh0dXJlPiBDb252ZXJ0VG9CYWNraW5nQ29udGV4dDo6Y29udmVydFRv
QmFja2luZyhjb25zdAogCiAgICAgc3RkOjpvcHRpb25hbDxPcmlnaW4zRD4gb3JpZ2luOwogICAg
IGlmIChpbWFnZUNvcHlUZXh0dXJlLm9yaWdpbikgewotICAgICAgICBhdXRvIG9yaWdpbiA9IGNv
bnZlcnRUb0JhY2tpbmcoKmltYWdlQ29weVRleHR1cmUub3JpZ2luKTsKKyAgICAgICAgb3JpZ2lu
ID0gY29udmVydFRvQmFja2luZygqaW1hZ2VDb3B5VGV4dHVyZS5vcmlnaW4pOwogICAgICAgICBp
ZiAoIW9yaWdpbikKICAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgfQpAQCAt
NTgsNyArNTgsNyBAQCBzdGQ6Om9wdGlvbmFsPFBBTDo6V2ViR1BVOjpJbWFnZUNvcHlUZXh0dXJl
PiBDb252ZXJ0RnJvbUJhY2tpbmdDb250ZXh0Ojpjb252ZXJ0RgogCiAgICAgc3RkOjpvcHRpb25h
bDxQQUw6OldlYkdQVTo6T3JpZ2luM0Q+IG9yaWdpbjsKICAgICBpZiAoaW1hZ2VDb3B5VGV4dHVy
ZS5vcmlnaW4pIHsKLSAgICAgICAgYXV0byBvcmlnaW4gPSBjb252ZXJ0RnJvbUJhY2tpbmcoKmlt
YWdlQ29weVRleHR1cmUub3JpZ2luKTsKKyAgICAgICAgb3JpZ2luID0gY29udmVydEZyb21CYWNr
aW5nKCppbWFnZUNvcHlUZXh0dXJlLm9yaWdpbik7CiAgICAgICAgIGlmICghb3JpZ2luKQogICAg
ICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1NoYXJlZC9XZWJHUFUvV2ViR1BVUXVlcnlTZXREZXNjcmlwdG9yLmNwcCBiL1NvdXJj
ZS9XZWJLaXQvU2hhcmVkL1dlYkdQVS9XZWJHUFVRdWVyeVNldERlc2NyaXB0b3IuY3BwCmluZGV4
IGEwNzYxODIzMTM5ZTI5MmYwNTA2ZDdkZmU2YmE2N2M1YjkwOTE0NjQuLjJjNDJlYmFlY2E1YWJk
Y2I0ODY2NDI4YWU5ZTZhZDhkZWUwYWYzMjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hh
cmVkL1dlYkdQVS9XZWJHUFVRdWVyeVNldERlc2NyaXB0b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXQvU2hhcmVkL1dlYkdQVS9XZWJHUFVRdWVyeVNldERlc2NyaXB0b3IuY3BwCkBAIC00MCw3ICs0
MCw3IEBAIHN0ZDo6b3B0aW9uYWw8UXVlcnlTZXREZXNjcmlwdG9yPiBDb252ZXJ0VG9CYWNraW5n
Q29udGV4dDo6Y29udmVydFRvQmFja2luZyhjb25zCiAgICAgaWYgKCFiYXNlKQogICAgICAgICBy
ZXR1cm4gc3RkOjpudWxsb3B0OwogCi0gICAgcmV0dXJuIHsgeyBXVEZNb3ZlKCpiYXNlKSwgcXVl
cnlTZXREZXNjcmlwdG9yLnR5cGUsIHF1ZXJ5U2V0RGVzY3JpcHRvci5jb3VudCwgcXVlcnlTZXRE
ZXNjcmlwdG9yLnBpcGVsaW5lU3RhdGlzdGljcyB9IH07CisgICAgcmV0dXJuIHsgeyBXVEZNb3Zl
KCpiYXNlKSwgcXVlcnlTZXREZXNjcmlwdG9yLnR5cGUsIHF1ZXJ5U2V0RGVzY3JpcHRvci5jb3Vu
dCB9IH07CiB9CiAKIHN0ZDo6b3B0aW9uYWw8UEFMOjpXZWJHUFU6OlF1ZXJ5U2V0RGVzY3JpcHRv
cj4gQ29udmVydEZyb21CYWNraW5nQ29udGV4dDo6Y29udmVydEZyb21CYWNraW5nKGNvbnN0IFF1
ZXJ5U2V0RGVzY3JpcHRvciYgcXVlcnlTZXREZXNjcmlwdG9yKQpAQCAtNDksNyArNDksNyBAQCBz
dGQ6Om9wdGlvbmFsPFBBTDo6V2ViR1BVOjpRdWVyeVNldERlc2NyaXB0b3I+IENvbnZlcnRGcm9t
QmFja2luZ0NvbnRleHQ6OmNvbnZlcgogICAgIGlmICghYmFzZSkKICAgICAgICAgcmV0dXJuIHN0
ZDo6bnVsbG9wdDsKIAotICAgIHJldHVybiB7IHsgV1RGTW92ZSgqYmFzZSksIHF1ZXJ5U2V0RGVz
Y3JpcHRvci50eXBlLCBxdWVyeVNldERlc2NyaXB0b3IuY291bnQsIHF1ZXJ5U2V0RGVzY3JpcHRv
ci5waXBlbGluZVN0YXRpc3RpY3MgfSB9OworICAgIHJldHVybiB7IHsgV1RGTW92ZSgqYmFzZSks
IHF1ZXJ5U2V0RGVzY3JpcHRvci50eXBlLCBxdWVyeVNldERlc2NyaXB0b3IuY291bnQgfSB9Owog
fQogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hh
cmVkL1dlYkdQVS9XZWJHUFVRdWVyeVNldERlc2NyaXB0b3IuaCBiL1NvdXJjZS9XZWJLaXQvU2hh
cmVkL1dlYkdQVS9XZWJHUFVRdWVyeVNldERlc2NyaXB0b3IuaAppbmRleCAxZmQyOGNjOGI1MmNm
YWZjZWZiNGIyMzQwMzAyMGE0MTgxOWY3MTFjLi43NTc2NzlkNjU2ZmE3MjNjNzU3YTUxZmE5MzE4
Y2Y2YTY1ZDAxNmI3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJHUFUvV2Vi
R1BVUXVlcnlTZXREZXNjcmlwdG9yLmgKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViR1BV
L1dlYkdQVVF1ZXJ5U2V0RGVzY3JpcHRvci5oCkBAIC0zMCw3ICszMCw2IEBACiAjaW5jbHVkZSAi
V2ViR1BVT2JqZWN0RGVzY3JpcHRvckJhc2UuaCIKICNpbmNsdWRlIDxvcHRpb25hbD4KICNpbmNs
dWRlIDxwYWwvZ3JhcGhpY3MvV2ViR1BVL1dlYkdQVUludGVncmFsVHlwZXMuaD4KLSNpbmNsdWRl
IDxwYWwvZ3JhcGhpY3MvV2ViR1BVL1dlYkdQVVBpcGVsaW5lU3RhdGlzdGljTmFtZS5oPgogI2lu
Y2x1ZGUgPHBhbC9ncmFwaGljcy9XZWJHUFUvV2ViR1BVUXVlcnlUeXBlLmg+CiAjaW5jbHVkZSA8
d3RmL1ZlY3Rvci5oPgogCkBAIC0zOSwxNCArMzgsMTIgQEAgbmFtZXNwYWNlIFdlYktpdDo6V2Vi
R1BVIHsKIHN0cnVjdCBRdWVyeVNldERlc2NyaXB0b3IgOiBwdWJsaWMgT2JqZWN0RGVzY3JpcHRv
ckJhc2UgewogICAgIFBBTDo6V2ViR1BVOjpRdWVyeVR5cGUgdHlwZSB7IFBBTDo6V2ViR1BVOjpR
dWVyeVR5cGU6Ok9jY2x1c2lvbiB9OwogICAgIFBBTDo6V2ViR1BVOjpTaXplMzIgY291bnQgeyAw
IH07Ci0gICAgVmVjdG9yPFBBTDo6V2ViR1BVOjpQaXBlbGluZVN0YXRpc3RpY05hbWU+IHBpcGVs
aW5lU3RhdGlzdGljczsKIAogICAgIHRlbXBsYXRlPGNsYXNzIEVuY29kZXI+IHZvaWQgZW5jb2Rl
KEVuY29kZXImIGVuY29kZXIpIGNvbnN0CiAgICAgewogICAgICAgICBlbmNvZGVyIDw8IHN0YXRp
Y19jYXN0PGNvbnN0IE9iamVjdERlc2NyaXB0b3JCYXNlJj4oKnRoaXMpOwogICAgICAgICBlbmNv
ZGVyIDw8IHR5cGU7CiAgICAgICAgIGVuY29kZXIgPDwgY291bnQ7Ci0gICAgICAgIGVuY29kZXIg
PDwgcGlwZWxpbmVTdGF0aXN0aWNzOwogICAgIH0KIAogICAgIHRlbXBsYXRlPGNsYXNzIERlY29k
ZXI+IHN0YXRpYyBzdGQ6Om9wdGlvbmFsPFF1ZXJ5U2V0RGVzY3JpcHRvcj4gZGVjb2RlKERlY29k
ZXImIGRlY29kZXIpCkBAIC02NiwxMiArNjMsNyBAQCBzdHJ1Y3QgUXVlcnlTZXREZXNjcmlwdG9y
IDogcHVibGljIE9iamVjdERlc2NyaXB0b3JCYXNlIHsKICAgICAgICAgaWYgKCFjb3VudCkKICAg
ICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKLSAgICAgICAgc3RkOjpvcHRpb25hbDxW
ZWN0b3I8UEFMOjpXZWJHUFU6OlBpcGVsaW5lU3RhdGlzdGljTmFtZT4+IHBpcGVsaW5lU3RhdGlz
dGljczsKLSAgICAgICAgZGVjb2RlciA+PiBwaXBlbGluZVN0YXRpc3RpY3M7Ci0gICAgICAgIGlm
ICghcGlwZWxpbmVTdGF0aXN0aWNzKQotICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsK
LQotICAgICAgICByZXR1cm4geyB7IFdURk1vdmUoKm9iamVjdERlc2NyaXB0b3JCYXNlKSwgV1RG
TW92ZSgqdHlwZSksIFdURk1vdmUoKmNvdW50KSwgV1RGTW92ZSgqcGlwZWxpbmVTdGF0aXN0aWNz
KSB9IH07CisgICAgICAgIHJldHVybiB7IHsgV1RGTW92ZSgqb2JqZWN0RGVzY3JpcHRvckJhc2Up
LCBXVEZNb3ZlKCp0eXBlKSwgV1RGTW92ZSgqY291bnQpIH0gfTsKICAgICB9CiB9OwogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJHUFUvV2ViR1BVUmVuZGVyUGFzc0NvbG9y
QXR0YWNobWVudC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJHUFUvV2ViR1BVUmVuZGVy
UGFzc0NvbG9yQXR0YWNobWVudC5jcHAKaW5kZXggYzQ3NTBiZjdmNWU2MGRmNjlmNjQ2NjI3NDll
ODQ3NTNlYTBhYzI3Mi4uNWJiODZlMTYzN2RkNGQyN2MzZmFjNzdiMDU1NjFjYzdlMjNhNjc5MSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViR1BVL1dlYkdQVVJlbmRlclBhc3ND
b2xvckF0dGFjaG1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkdQVS9XZWJH
UFVSZW5kZXJQYXNzQ29sb3JBdHRhY2htZW50LmNwcApAQCAtNDcsMjAgKzQ3LDE0IEBAIHN0ZDo6
b3B0aW9uYWw8UmVuZGVyUGFzc0NvbG9yQXR0YWNobWVudD4gQ29udmVydFRvQmFja2luZ0NvbnRl
eHQ6OmNvbnZlcnRUb0JhY2tpCiAgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAg
IH0KIAotICAgIGF1dG8gbG9hZFZhbHVlID0gV1RGOjpzd2l0Y2hPbihyZW5kZXJQYXNzQ29sb3JB
dHRhY2htZW50LmxvYWRWYWx1ZSwgW10gKFBBTDo6V2ViR1BVOjpMb2FkT3AgbG9hZE9wKSAtPiBz
dGQ6Om9wdGlvbmFsPHN0ZDo6dmFyaWFudDxQQUw6OldlYkdQVTo6TG9hZE9wLCBWZWN0b3I8ZG91
YmxlPiwgQ29sb3JEaWN0Pj4gewotICAgICAgICByZXR1cm4geyB7IGxvYWRPcCB9IH07Ci0gICAg
fSwgW10gKGNvbnN0IFZlY3Rvcjxkb3VibGU+JiB2ZWN0b3IpIC0+IHN0ZDo6b3B0aW9uYWw8c3Rk
Ojp2YXJpYW50PFBBTDo6V2ViR1BVOjpMb2FkT3AsIFZlY3Rvcjxkb3VibGU+LCBDb2xvckRpY3Q+
PiB7Ci0gICAgICAgIHJldHVybiB7IHsgdmVjdG9yIH0gfTsKLSAgICB9LCBbdGhpc10gKGNvbnN0
IFBBTDo6V2ViR1BVOjpDb2xvckRpY3QmIGNvbG9yRGljdCkgLT4gc3RkOjpvcHRpb25hbDxzdGQ6
OnZhcmlhbnQ8UEFMOjpXZWJHUFU6OkxvYWRPcCwgVmVjdG9yPGRvdWJsZT4sIENvbG9yRGljdD4+
IHsKLSAgICAgICAgYXV0byBiYWNraW5nQ29sb3JEaWN0ID0gY29udmVydFRvQmFja2luZyhjb2xv
ckRpY3QpOwotICAgICAgICBpZiAoIWJhY2tpbmdDb2xvckRpY3QpCisgICAgc3RkOjpvcHRpb25h
bDxDb2xvcj4gY2xlYXJWYWx1ZTsKKyAgICBpZiAocmVuZGVyUGFzc0NvbG9yQXR0YWNobWVudC5j
bGVhclZhbHVlKSB7CisgICAgICAgIGNsZWFyVmFsdWUgPSBjb252ZXJ0VG9CYWNraW5nKCpyZW5k
ZXJQYXNzQ29sb3JBdHRhY2htZW50LmNsZWFyVmFsdWUpOworICAgICAgICBpZiAoIWNsZWFyVmFs
dWUpCiAgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwotICAgICAgICByZXR1cm4geyB7
IFdURk1vdmUoKmJhY2tpbmdDb2xvckRpY3QpIH0gfTsKLSAgICB9KTsKLSAgICBpZiAoIWxvYWRW
YWx1ZSkKLSAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKKyAgICB9CiAKLSAgICByZXR1cm4g
eyB7IHZpZXcsIHJlc29sdmVUYXJnZXQsIFdURk1vdmUoKmxvYWRWYWx1ZSksIHJlbmRlclBhc3ND
b2xvckF0dGFjaG1lbnQuc3RvcmVPcCB9IH07CisgICAgcmV0dXJuIHsgeyB2aWV3LCByZXNvbHZl
VGFyZ2V0LCBXVEZNb3ZlKGNsZWFyVmFsdWUpLCByZW5kZXJQYXNzQ29sb3JBdHRhY2htZW50Lmxv
YWRPcCwgcmVuZGVyUGFzc0NvbG9yQXR0YWNobWVudC5zdG9yZU9wIH0gfTsKIH0KIAogc3RkOjpv
cHRpb25hbDxQQUw6OldlYkdQVTo6UmVuZGVyUGFzc0NvbG9yQXR0YWNobWVudD4gQ29udmVydEZy
b21CYWNraW5nQ29udGV4dDo6Y29udmVydEZyb21CYWNraW5nKGNvbnN0IFJlbmRlclBhc3NDb2xv
ckF0dGFjaG1lbnQmIHJlbmRlclBhc3NDb2xvckF0dGFjaG1lbnQpCkBAIC03NiwyMCArNzAsMTQg
QEAgc3RkOjpvcHRpb25hbDxQQUw6OldlYkdQVTo6UmVuZGVyUGFzc0NvbG9yQXR0YWNobWVudD4g
Q29udmVydEZyb21CYWNraW5nQ29udGV4dDoKICAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxv
cHQ7CiAgICAgfQogCi0gICAgYXV0byBsb2FkVmFsdWUgPSBXVEY6OnN3aXRjaE9uKHJlbmRlclBh
c3NDb2xvckF0dGFjaG1lbnQubG9hZFZhbHVlLCBbXSAoUEFMOjpXZWJHUFU6OkxvYWRPcCBsb2Fk
T3ApIC0+IHN0ZDo6b3B0aW9uYWw8c3RkOjp2YXJpYW50PFBBTDo6V2ViR1BVOjpMb2FkT3AsIFZl
Y3Rvcjxkb3VibGU+LCBQQUw6OldlYkdQVTo6Q29sb3JEaWN0Pj4gewotICAgICAgICByZXR1cm4g
eyB7IGxvYWRPcCB9IH07Ci0gICAgfSwgW10gKGNvbnN0IFZlY3Rvcjxkb3VibGU+JiB2ZWN0b3Ip
IC0+IHN0ZDo6b3B0aW9uYWw8c3RkOjp2YXJpYW50PFBBTDo6V2ViR1BVOjpMb2FkT3AsIFZlY3Rv
cjxkb3VibGU+LCBQQUw6OldlYkdQVTo6Q29sb3JEaWN0Pj4gewotICAgICAgICByZXR1cm4geyB7
IHZlY3RvciB9IH07Ci0gICAgfSwgW3RoaXNdIChjb25zdCBDb2xvckRpY3QmIGNvbG9yRGljdCkg
LT4gc3RkOjpvcHRpb25hbDxzdGQ6OnZhcmlhbnQ8UEFMOjpXZWJHUFU6OkxvYWRPcCwgVmVjdG9y
PGRvdWJsZT4sIFBBTDo6V2ViR1BVOjpDb2xvckRpY3Q+PiB7Ci0gICAgICAgIGF1dG8gYmFja2lu
Z0NvbG9yRGljdCA9IGNvbnZlcnRGcm9tQmFja2luZyhjb2xvckRpY3QpOwotICAgICAgICBpZiAo
IWJhY2tpbmdDb2xvckRpY3QpCisgICAgc3RkOjpvcHRpb25hbDxQQUw6OldlYkdQVTo6Q29sb3I+
IGNsZWFyVmFsdWU7CisgICAgaWYgKHJlbmRlclBhc3NDb2xvckF0dGFjaG1lbnQuY2xlYXJWYWx1
ZSkgeworICAgICAgICBjbGVhclZhbHVlID0gY29udmVydEZyb21CYWNraW5nKCpyZW5kZXJQYXNz
Q29sb3JBdHRhY2htZW50LmNsZWFyVmFsdWUpOworICAgICAgICBpZiAoIWNsZWFyVmFsdWUpCiAg
ICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwotICAgICAgICByZXR1cm4geyB7IFdURk1v
dmUoKmJhY2tpbmdDb2xvckRpY3QpIH0gfTsKLSAgICB9KTsKLSAgICBpZiAoIWxvYWRWYWx1ZSkK
LSAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKKyAgICB9CiAKLSAgICByZXR1cm4geyB7ICp2
aWV3LCByZXNvbHZlVGFyZ2V0LCBXVEZNb3ZlKCpsb2FkVmFsdWUpLCByZW5kZXJQYXNzQ29sb3JB
dHRhY2htZW50LnN0b3JlT3AgfSB9OworICAgIHJldHVybiB7IHsgKnZpZXcsIHJlc29sdmVUYXJn
ZXQsIFdURk1vdmUoY2xlYXJWYWx1ZSksIHJlbmRlclBhc3NDb2xvckF0dGFjaG1lbnQubG9hZE9w
LCByZW5kZXJQYXNzQ29sb3JBdHRhY2htZW50LnN0b3JlT3AgfSB9OwogfQogCiB9IC8vIG5hbWVz
cGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkdQVS9XZWJH
UFVSZW5kZXJQYXNzQ29sb3JBdHRhY2htZW50LmggYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJH
UFUvV2ViR1BVUmVuZGVyUGFzc0NvbG9yQXR0YWNobWVudC5oCmluZGV4IGMxNmExNGZmMGQ0Njhj
NjM2ZjU2YzY2YTAxMzZjNzQxODMzYTBjMjAuLjdiZWE0MjQ4NjAwNDZjMmQyMDcxYWFhMjk5NTMz
OTcwODJiNjdlYWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkdQVS9XZWJH
UFVSZW5kZXJQYXNzQ29sb3JBdHRhY2htZW50LmgKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQv
V2ViR1BVL1dlYkdQVVJlbmRlclBhc3NDb2xvckF0dGFjaG1lbnQuaApAQCAtNDIsMTQgKzQyLDE2
IEBAIHN0cnVjdCBSZW5kZXJQYXNzQ29sb3JBdHRhY2htZW50IHsKICAgICBXZWJHUFVJZGVudGlm
aWVyIHZpZXc7CiAgICAgV2ViR1BVSWRlbnRpZmllciByZXNvbHZlVGFyZ2V0OwogCi0gICAgc3Rk
Ojp2YXJpYW50PFBBTDo6V2ViR1BVOjpMb2FkT3AsIFZlY3Rvcjxkb3VibGU+LCBDb2xvckRpY3Q+
IGxvYWRWYWx1ZTsKKyAgICBzdGQ6Om9wdGlvbmFsPENvbG9yPiBjbGVhclZhbHVlOworICAgIFBB
TDo6V2ViR1BVOjpMb2FkT3AgbG9hZE9wIHsgUEFMOjpXZWJHUFU6OkxvYWRPcDo6TG9hZCB9Owog
ICAgIFBBTDo6V2ViR1BVOjpTdG9yZU9wIHN0b3JlT3AgeyBQQUw6OldlYkdQVTo6U3RvcmVPcDo6
U3RvcmUgfTsKIAogICAgIHRlbXBsYXRlPGNsYXNzIEVuY29kZXI+IHZvaWQgZW5jb2RlKEVuY29k
ZXImIGVuY29kZXIpIGNvbnN0CiAgICAgewogICAgICAgICBlbmNvZGVyIDw8IHZpZXc7CiAgICAg
ICAgIGVuY29kZXIgPDwgcmVzb2x2ZVRhcmdldDsKLSAgICAgICAgZW5jb2RlciA8PCBsb2FkVmFs
dWU7CisgICAgICAgIGVuY29kZXIgPDwgY2xlYXJWYWx1ZTsKKyAgICAgICAgZW5jb2RlciA8PCBs
b2FkT3A7CiAgICAgICAgIGVuY29kZXIgPDwgc3RvcmVPcDsKICAgICB9CiAKQEAgLTY1LDkgKzY3
LDE0IEBAIHN0cnVjdCBSZW5kZXJQYXNzQ29sb3JBdHRhY2htZW50IHsKICAgICAgICAgaWYgKCFy
ZXNvbHZlVGFyZ2V0KQogICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAotICAgICAg
ICBzdGQ6Om9wdGlvbmFsPHN0ZDo6dmFyaWFudDxQQUw6OldlYkdQVTo6TG9hZE9wLCBWZWN0b3I8
ZG91YmxlPiwgQ29sb3JEaWN0Pj4gbG9hZFZhbHVlOwotICAgICAgICBkZWNvZGVyID4+IGxvYWRW
YWx1ZTsKLSAgICAgICAgaWYgKCFsb2FkVmFsdWUpCisgICAgICAgIHN0ZDo6b3B0aW9uYWw8c3Rk
OjpvcHRpb25hbDxDb2xvcj4+IGNsZWFyVmFsdWU7CisgICAgICAgIGRlY29kZXIgPj4gY2xlYXJW
YWx1ZTsKKyAgICAgICAgaWYgKCFjbGVhclZhbHVlKQorICAgICAgICAgICAgcmV0dXJuIHN0ZDo6
bnVsbG9wdDsKKworICAgICAgICBzdGQ6Om9wdGlvbmFsPFBBTDo6V2ViR1BVOjpMb2FkT3A+IGxv
YWRPcDsKKyAgICAgICAgZGVjb2RlciA+PiBsb2FkT3A7CisgICAgICAgIGlmICghbG9hZE9wKQog
ICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgICAgICBzdGQ6Om9wdGlvbmFs
PFBBTDo6V2ViR1BVOjpTdG9yZU9wPiBzdG9yZU9wOwpAQCAtNzUsNyArODIsNyBAQCBzdHJ1Y3Qg
UmVuZGVyUGFzc0NvbG9yQXR0YWNobWVudCB7CiAgICAgICAgIGlmICghc3RvcmVPcCkKICAgICAg
ICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKLSAgICAgICAgcmV0dXJuIHsgeyBXVEZNb3Zl
KCp2aWV3KSwgV1RGTW92ZSgqcmVzb2x2ZVRhcmdldCksIFdURk1vdmUoKmxvYWRWYWx1ZSksIFdU
Rk1vdmUoKnN0b3JlT3ApIH0gfTsKKyAgICAgICAgcmV0dXJuIHsgeyBXVEZNb3ZlKCp2aWV3KSwg
V1RGTW92ZSgqcmVzb2x2ZVRhcmdldCksIFdURk1vdmUoKmNsZWFyVmFsdWUpLCBXVEZNb3ZlKCps
b2FkT3ApLCBXVEZNb3ZlKCpzdG9yZU9wKSB9IH07CiAgICAgfQogfTsKIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9TaGFyZWQvV2ViR1BVL1dlYkdQVVJlbmRlclBhc3NEZXB0aFN0ZW5jaWxB
dHRhY2htZW50LmNwcCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkdQVS9XZWJHUFVSZW5kZXJQ
YXNzRGVwdGhTdGVuY2lsQXR0YWNobWVudC5jcHAKaW5kZXggMzY2NDFjZDY3NzY4MGM4ZmVjZjMx
YmZlNjkzZjE5NTAzODEyYWFiMi4uMjg1MWNjMmY0YTU4YjRmMjQ2Yzk0M2U1NWYzZDVjN2U1M2Mx
ZThhZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViR1BVL1dlYkdQVVJlbmRl
clBhc3NEZXB0aFN0ZW5jaWxBdHRhY2htZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJl
ZC9XZWJHUFUvV2ViR1BVUmVuZGVyUGFzc0RlcHRoU3RlbmNpbEF0dGFjaG1lbnQuY3BwCkBAIC00
MCw3ICs0MCw3IEBAIHN0ZDo6b3B0aW9uYWw8UmVuZGVyUGFzc0RlcHRoU3RlbmNpbEF0dGFjaG1l
bnQ+IENvbnZlcnRUb0JhY2tpbmdDb250ZXh0Ojpjb252ZXJ0CiAgICAgaWYgKCF2aWV3KQogICAg
ICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCi0gICAgcmV0dXJuIHsgeyB2aWV3LCByZW5kZXJQ
YXNzRGVwdGhTdGVuY2lsQXR0YWNobWVudC5kZXB0aExvYWRWYWx1ZSwgcmVuZGVyUGFzc0RlcHRo
U3RlbmNpbEF0dGFjaG1lbnQuZGVwdGhTdG9yZU9wLCByZW5kZXJQYXNzRGVwdGhTdGVuY2lsQXR0
YWNobWVudC5kZXB0aFJlYWRPbmx5LCByZW5kZXJQYXNzRGVwdGhTdGVuY2lsQXR0YWNobWVudC5z
dGVuY2lsTG9hZFZhbHVlLCByZW5kZXJQYXNzRGVwdGhTdGVuY2lsQXR0YWNobWVudC5zdGVuY2ls
U3RvcmVPcCwgcmVuZGVyUGFzc0RlcHRoU3RlbmNpbEF0dGFjaG1lbnQuc3RlbmNpbFJlYWRPbmx5
IH0gfTsKKyAgICByZXR1cm4geyB7IHZpZXcsIHJlbmRlclBhc3NEZXB0aFN0ZW5jaWxBdHRhY2ht
ZW50LmRlcHRoQ2xlYXJWYWx1ZSwgcmVuZGVyUGFzc0RlcHRoU3RlbmNpbEF0dGFjaG1lbnQuZGVw
dGhMb2FkT3AsIHJlbmRlclBhc3NEZXB0aFN0ZW5jaWxBdHRhY2htZW50LmRlcHRoU3RvcmVPcCwg
cmVuZGVyUGFzc0RlcHRoU3RlbmNpbEF0dGFjaG1lbnQuZGVwdGhSZWFkT25seSwgcmVuZGVyUGFz
c0RlcHRoU3RlbmNpbEF0dGFjaG1lbnQuc3RlbmNpbENsZWFyVmFsdWUsIHJlbmRlclBhc3NEZXB0
aFN0ZW5jaWxBdHRhY2htZW50LnN0ZW5jaWxMb2FkT3AsIHJlbmRlclBhc3NEZXB0aFN0ZW5jaWxB
dHRhY2htZW50LnN0ZW5jaWxTdG9yZU9wLCByZW5kZXJQYXNzRGVwdGhTdGVuY2lsQXR0YWNobWVu
dC5zdGVuY2lsUmVhZE9ubHkgfSB9OwogfQogCiBzdGQ6Om9wdGlvbmFsPFBBTDo6V2ViR1BVOjpS
ZW5kZXJQYXNzRGVwdGhTdGVuY2lsQXR0YWNobWVudD4gQ29udmVydEZyb21CYWNraW5nQ29udGV4
dDo6Y29udmVydEZyb21CYWNraW5nKGNvbnN0IFJlbmRlclBhc3NEZXB0aFN0ZW5jaWxBdHRhY2ht
ZW50JiByZW5kZXJQYXNzRGVwdGhTdGVuY2lsQXR0YWNobWVudCkKQEAgLTQ5LDcgKzQ5LDcgQEAg
c3RkOjpvcHRpb25hbDxQQUw6OldlYkdQVTo6UmVuZGVyUGFzc0RlcHRoU3RlbmNpbEF0dGFjaG1l
bnQ+IENvbnZlcnRGcm9tQmFja2luZ0MKICAgICBpZiAoIXZpZXcpCiAgICAgICAgIHJldHVybiBz
dGQ6Om51bGxvcHQ7CiAKLSAgICByZXR1cm4geyB7ICp2aWV3LCByZW5kZXJQYXNzRGVwdGhTdGVu
Y2lsQXR0YWNobWVudC5kZXB0aExvYWRWYWx1ZSwgcmVuZGVyUGFzc0RlcHRoU3RlbmNpbEF0dGFj
aG1lbnQuZGVwdGhTdG9yZU9wLCByZW5kZXJQYXNzRGVwdGhTdGVuY2lsQXR0YWNobWVudC5kZXB0
aFJlYWRPbmx5LCByZW5kZXJQYXNzRGVwdGhTdGVuY2lsQXR0YWNobWVudC5zdGVuY2lsTG9hZFZh
bHVlLCByZW5kZXJQYXNzRGVwdGhTdGVuY2lsQXR0YWNobWVudC5zdGVuY2lsU3RvcmVPcCwgcmVu
ZGVyUGFzc0RlcHRoU3RlbmNpbEF0dGFjaG1lbnQuc3RlbmNpbFJlYWRPbmx5IH0gfTsKKyAgICBy
ZXR1cm4geyB7ICp2aWV3LCByZW5kZXJQYXNzRGVwdGhTdGVuY2lsQXR0YWNobWVudC5kZXB0aENs
ZWFyVmFsdWUsIHJlbmRlclBhc3NEZXB0aFN0ZW5jaWxBdHRhY2htZW50LmRlcHRoTG9hZE9wLCBy
ZW5kZXJQYXNzRGVwdGhTdGVuY2lsQXR0YWNobWVudC5kZXB0aFN0b3JlT3AsIHJlbmRlclBhc3NE
ZXB0aFN0ZW5jaWxBdHRhY2htZW50LmRlcHRoUmVhZE9ubHksIHJlbmRlclBhc3NEZXB0aFN0ZW5j
aWxBdHRhY2htZW50LnN0ZW5jaWxDbGVhclZhbHVlLCByZW5kZXJQYXNzRGVwdGhTdGVuY2lsQXR0
YWNobWVudC5zdGVuY2lsTG9hZE9wLCByZW5kZXJQYXNzRGVwdGhTdGVuY2lsQXR0YWNobWVudC5z
dGVuY2lsU3RvcmVPcCwgcmVuZGVyUGFzc0RlcHRoU3RlbmNpbEF0dGFjaG1lbnQuc3RlbmNpbFJl
YWRPbmx5IH0gfTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1NoYXJlZC9XZWJHUFUvV2ViR1BVUmVuZGVyUGFzc0RlcHRoU3RlbmNpbEF0dGFj
aG1lbnQuaCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkdQVS9XZWJHUFVSZW5kZXJQYXNzRGVw
dGhTdGVuY2lsQXR0YWNobWVudC5oCmluZGV4IGJlNzE4ZDI4YjIzY2YwMzc2NDVmMWJkYzkwZjBj
NDJlYzdiMzQyN2YuLjVkNDczNzAyOWUyN2EyZjYzOWMyOTNkYjdlNTE4MGFkYTU0MzhmMGQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkdQVS9XZWJHUFVSZW5kZXJQYXNzRGVw
dGhTdGVuY2lsQXR0YWNobWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkdQVS9X
ZWJHUFVSZW5kZXJQYXNzRGVwdGhTdGVuY2lsQXR0YWNobWVudC5oCkBAIC00MCwyMSArNDAsMjUg
QEAgbmFtZXNwYWNlIFdlYktpdDo6V2ViR1BVIHsKIHN0cnVjdCBSZW5kZXJQYXNzRGVwdGhTdGVu
Y2lsQXR0YWNobWVudCB7CiAgICAgV2ViR1BVSWRlbnRpZmllciB2aWV3OwogCi0gICAgc3RkOjp2
YXJpYW50PFBBTDo6V2ViR1BVOjpMb2FkT3AsIGZsb2F0PiBkZXB0aExvYWRWYWx1ZTsKLSAgICBQ
QUw6OldlYkdQVTo6U3RvcmVPcCBkZXB0aFN0b3JlT3AgeyBQQUw6OldlYkdQVTo6U3RvcmVPcDo6
U3RvcmUgfTsKKyAgICBmbG9hdCBkZXB0aENsZWFyVmFsdWUgeyAwIH07CisgICAgc3RkOjpvcHRp
b25hbDxQQUw6OldlYkdQVTo6TG9hZE9wPiBkZXB0aExvYWRPcDsKKyAgICBzdGQ6Om9wdGlvbmFs
PFBBTDo6V2ViR1BVOjpTdG9yZU9wPiBkZXB0aFN0b3JlT3A7CiAgICAgYm9vbCBkZXB0aFJlYWRP
bmx5IHsgZmFsc2UgfTsKIAotICAgIHN0ZDo6dmFyaWFudDxQQUw6OldlYkdQVTo6TG9hZE9wLCBQ
QUw6OldlYkdQVTo6U3RlbmNpbFZhbHVlPiBzdGVuY2lsTG9hZFZhbHVlOwotICAgIFBBTDo6V2Vi
R1BVOjpTdG9yZU9wIHN0ZW5jaWxTdG9yZU9wIHsgUEFMOjpXZWJHUFU6OlN0b3JlT3A6OlN0b3Jl
IH07CisgICAgUEFMOjpXZWJHUFU6OlN0ZW5jaWxWYWx1ZSBzdGVuY2lsQ2xlYXJWYWx1ZSB7IDAg
fTsKKyAgICBzdGQ6Om9wdGlvbmFsPFBBTDo6V2ViR1BVOjpMb2FkT3A+IHN0ZW5jaWxMb2FkT3A7
CisgICAgc3RkOjpvcHRpb25hbDxQQUw6OldlYkdQVTo6U3RvcmVPcD4gc3RlbmNpbFN0b3JlT3A7
CiAgICAgYm9vbCBzdGVuY2lsUmVhZE9ubHkgeyBmYWxzZSB9OwogCiAgICAgdGVtcGxhdGU8Y2xh
c3MgRW5jb2Rlcj4gdm9pZCBlbmNvZGUoRW5jb2RlciYgZW5jb2RlcikgY29uc3QKICAgICB7CiAg
ICAgICAgIGVuY29kZXIgPDwgdmlldzsKLSAgICAgICAgZW5jb2RlciA8PCBkZXB0aExvYWRWYWx1
ZTsKKyAgICAgICAgZW5jb2RlciA8PCBkZXB0aENsZWFyVmFsdWU7CisgICAgICAgIGVuY29kZXIg
PDwgZGVwdGhMb2FkT3A7CiAgICAgICAgIGVuY29kZXIgPDwgZGVwdGhTdG9yZU9wOwogICAgICAg
ICBlbmNvZGVyIDw8IGRlcHRoUmVhZE9ubHk7Ci0gICAgICAgIGVuY29kZXIgPDwgc3RlbmNpbExv
YWRWYWx1ZTsKKyAgICAgICAgZW5jb2RlciA8PCBzdGVuY2lsQ2xlYXJWYWx1ZTsKKyAgICAgICAg
ZW5jb2RlciA8PCBzdGVuY2lsTG9hZE9wOwogICAgICAgICBlbmNvZGVyIDw8IHN0ZW5jaWxTdG9y
ZU9wOwogICAgICAgICBlbmNvZGVyIDw8IHN0ZW5jaWxSZWFkT25seTsKICAgICB9CkBAIC02Niwx
MiArNzAsMTcgQEAgc3RydWN0IFJlbmRlclBhc3NEZXB0aFN0ZW5jaWxBdHRhY2htZW50IHsKICAg
ICAgICAgaWYgKCF2aWV3KQogICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAotICAg
ICAgICBzdGQ6Om9wdGlvbmFsPHN0ZDo6dmFyaWFudDxQQUw6OldlYkdQVTo6TG9hZE9wLCBmbG9h
dD4+IGRlcHRoTG9hZFZhbHVlOwotICAgICAgICBkZWNvZGVyID4+IGRlcHRoTG9hZFZhbHVlOwot
ICAgICAgICBpZiAoIWRlcHRoTG9hZFZhbHVlKQorICAgICAgICBzdGQ6Om9wdGlvbmFsPGZsb2F0
PiBkZXB0aENsZWFyVmFsdWU7CisgICAgICAgIGRlY29kZXIgPj4gZGVwdGhDbGVhclZhbHVlOwor
ICAgICAgICBpZiAoIWRlcHRoQ2xlYXJWYWx1ZSkKICAgICAgICAgICAgIHJldHVybiBzdGQ6Om51
bGxvcHQ7CiAKLSAgICAgICAgc3RkOjpvcHRpb25hbDxQQUw6OldlYkdQVTo6U3RvcmVPcD4gZGVw
dGhTdG9yZU9wOworICAgICAgICBzdGQ6Om9wdGlvbmFsPHN0ZDo6b3B0aW9uYWw8UEFMOjpXZWJH
UFU6OkxvYWRPcD4+IGRlcHRoTG9hZE9wOworICAgICAgICBkZWNvZGVyID4+IGRlcHRoTG9hZE9w
OworICAgICAgICBpZiAoIWRlcHRoTG9hZE9wKQorICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVs
bG9wdDsKKworICAgICAgICBzdGQ6Om9wdGlvbmFsPHN0ZDo6b3B0aW9uYWw8UEFMOjpXZWJHUFU6
OlN0b3JlT3A+PiBkZXB0aFN0b3JlT3A7CiAgICAgICAgIGRlY29kZXIgPj4gZGVwdGhTdG9yZU9w
OwogICAgICAgICBpZiAoIWRlcHRoU3RvcmVPcCkKICAgICAgICAgICAgIHJldHVybiBzdGQ6Om51
bGxvcHQ7CkBAIC04MSwxMiArOTAsMTcgQEAgc3RydWN0IFJlbmRlclBhc3NEZXB0aFN0ZW5jaWxB
dHRhY2htZW50IHsKICAgICAgICAgaWYgKCFkZXB0aFJlYWRPbmx5KQogICAgICAgICAgICAgcmV0
dXJuIHN0ZDo6bnVsbG9wdDsKIAotICAgICAgICBzdGQ6Om9wdGlvbmFsPHN0ZDo6dmFyaWFudDxQ
QUw6OldlYkdQVTo6TG9hZE9wLCBQQUw6OldlYkdQVTo6U3RlbmNpbFZhbHVlPj4gc3RlbmNpbExv
YWRWYWx1ZTsKLSAgICAgICAgZGVjb2RlciA+PiBzdGVuY2lsTG9hZFZhbHVlOwotICAgICAgICBp
ZiAoIXN0ZW5jaWxMb2FkVmFsdWUpCisgICAgICAgIHN0ZDo6b3B0aW9uYWw8UEFMOjpXZWJHUFU6
OlN0ZW5jaWxWYWx1ZT4gc3RlbmNpbENsZWFyVmFsdWU7CisgICAgICAgIGRlY29kZXIgPj4gc3Rl
bmNpbENsZWFyVmFsdWU7CisgICAgICAgIGlmICghc3RlbmNpbENsZWFyVmFsdWUpCisgICAgICAg
ICAgICByZXR1cm4gc3RkOjpudWxsb3B0OworCisgICAgICAgIHN0ZDo6b3B0aW9uYWw8c3RkOjpv
cHRpb25hbDxQQUw6OldlYkdQVTo6TG9hZE9wPj4gc3RlbmNpbExvYWRPcDsKKyAgICAgICAgZGVj
b2RlciA+PiBzdGVuY2lsTG9hZE9wOworICAgICAgICBpZiAoIXN0ZW5jaWxMb2FkT3ApCiAgICAg
ICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCi0gICAgICAgIHN0ZDo6b3B0aW9uYWw8UEFM
OjpXZWJHUFU6OlN0b3JlT3A+IHN0ZW5jaWxTdG9yZU9wOworICAgICAgICBzdGQ6Om9wdGlvbmFs
PHN0ZDo6b3B0aW9uYWw8UEFMOjpXZWJHUFU6OlN0b3JlT3A+PiBzdGVuY2lsU3RvcmVPcDsKICAg
ICAgICAgZGVjb2RlciA+PiBzdGVuY2lsU3RvcmVPcDsKICAgICAgICAgaWYgKCFzdGVuY2lsU3Rv
cmVPcCkKICAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CkBAIC05Niw3ICsxMTAsNyBA
QCBzdHJ1Y3QgUmVuZGVyUGFzc0RlcHRoU3RlbmNpbEF0dGFjaG1lbnQgewogICAgICAgICBpZiAo
IXN0ZW5jaWxSZWFkT25seSkKICAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKLSAg
ICAgICAgcmV0dXJuIHsgeyBXVEZNb3ZlKCp2aWV3KSwgV1RGTW92ZSgqZGVwdGhMb2FkVmFsdWUp
LCBXVEZNb3ZlKCpkZXB0aFN0b3JlT3ApLCBXVEZNb3ZlKCpkZXB0aFJlYWRPbmx5KSwgV1RGTW92
ZSgqc3RlbmNpbExvYWRWYWx1ZSksIFdURk1vdmUoKnN0ZW5jaWxTdG9yZU9wKSwgV1RGTW92ZSgq
c3RlbmNpbFJlYWRPbmx5KSB9IH07CisgICAgICAgIHJldHVybiB7IHsgV1RGTW92ZSgqdmlldyks
IFdURk1vdmUoKmRlcHRoQ2xlYXJWYWx1ZSksIFdURk1vdmUoKmRlcHRoTG9hZE9wKSwgV1RGTW92
ZSgqZGVwdGhTdG9yZU9wKSwgV1RGTW92ZSgqZGVwdGhSZWFkT25seSksIFdURk1vdmUoKnN0ZW5j
aWxDbGVhclZhbHVlKSwgV1RGTW92ZSgqc3RlbmNpbExvYWRPcCksIFdURk1vdmUoKnN0ZW5jaWxT
dG9yZU9wKSwgV1RGTW92ZSgqc3RlbmNpbFJlYWRPbmx5KSB9IH07CiAgICAgfQogfTsKIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViR1BVL1dlYkdQVVJlbmRlclBhc3NEZXNj
cmlwdG9yLmNwcCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkdQVS9XZWJHUFVSZW5kZXJQYXNz
RGVzY3JpcHRvci5jcHAKaW5kZXggMTMyY2ZhNWI4ZmRjYzFiZDc4OWY2YWJiZWUyNmUyODQ2NDIy
NjJhNS4uNDg1ZWNjNThjMzQ3NDI4OWUwYjBiMDYwZGE2NzA2YzEzOWMzNWRhYiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViR1BVL1dlYkdQVVJlbmRlclBhc3NEZXNjcmlwdG9y
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJHUFUvV2ViR1BVUmVuZGVyUGFzc0Rl
c2NyaXB0b3IuY3BwCkBAIC00MCwxMyArNDAsMTYgQEAgc3RkOjpvcHRpb25hbDxSZW5kZXJQYXNz
RGVzY3JpcHRvcj4gQ29udmVydFRvQmFja2luZ0NvbnRleHQ6OmNvbnZlcnRUb0JhY2tpbmcoY28K
ICAgICBpZiAoIWJhc2UpCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKLSAgICBWZWN0
b3I8UmVuZGVyUGFzc0NvbG9yQXR0YWNobWVudD4gY29sb3JBdHRhY2htZW50czsKKyAgICBWZWN0
b3I8c3RkOjpvcHRpb25hbDxSZW5kZXJQYXNzQ29sb3JBdHRhY2htZW50Pj4gY29sb3JBdHRhY2ht
ZW50czsKICAgICBjb2xvckF0dGFjaG1lbnRzLnJlc2VydmVJbml0aWFsQ2FwYWNpdHkocmVuZGVy
UGFzc0Rlc2NyaXB0b3IuY29sb3JBdHRhY2htZW50cy5zaXplKCkpOwogICAgIGZvciAoY29uc3Qg
YXV0byYgY29sb3JBdHRhY2htZW50IDogcmVuZGVyUGFzc0Rlc2NyaXB0b3IuY29sb3JBdHRhY2ht
ZW50cykgewotICAgICAgICBhdXRvIGJhY2tpbmdDb2xvckF0dGFjaG1lbnQgPSBjb252ZXJ0VG9C
YWNraW5nKGNvbG9yQXR0YWNobWVudCk7Ci0gICAgICAgIGlmICghYmFja2luZ0NvbG9yQXR0YWNo
bWVudCkKLSAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7Ci0gICAgICAgIGNvbG9yQXR0
YWNobWVudHMudW5jaGVja2VkQXBwZW5kKFdURk1vdmUoKmJhY2tpbmdDb2xvckF0dGFjaG1lbnQp
KTsKKyAgICAgICAgaWYgKGNvbG9yQXR0YWNobWVudCkgeworICAgICAgICAgICAgYXV0byBiYWNr
aW5nQ29sb3JBdHRhY2htZW50ID0gY29udmVydFRvQmFja2luZygqY29sb3JBdHRhY2htZW50KTsK
KyAgICAgICAgICAgIGlmICghYmFja2luZ0NvbG9yQXR0YWNobWVudCkKKyAgICAgICAgICAgICAg
ICByZXR1cm4gc3RkOjpudWxsb3B0OworICAgICAgICAgICAgY29sb3JBdHRhY2htZW50cy51bmNo
ZWNrZWRBcHBlbmQoV1RGTW92ZSgqYmFja2luZ0NvbG9yQXR0YWNobWVudCkpOworICAgICAgICB9
IGVsc2UKKyAgICAgICAgICAgIGNvbG9yQXR0YWNobWVudHMudW5jaGVja2VkQXBwZW5kKHN0ZDo6
bnVsbG9wdCk7CiAgICAgfQogCiAgICAgc3RkOjpvcHRpb25hbDxSZW5kZXJQYXNzRGVwdGhTdGVu
Y2lsQXR0YWNobWVudD4gZGVwdGhTdGVuY2lsQXR0YWNobWVudDsKQEAgLTc2LDEzICs3OSwxNiBA
QCBzdGQ6Om9wdGlvbmFsPFBBTDo6V2ViR1BVOjpSZW5kZXJQYXNzRGVzY3JpcHRvcj4gQ29udmVy
dEZyb21CYWNraW5nQ29udGV4dDo6Y29udgogICAgIGlmICghYmFzZSkKICAgICAgICAgcmV0dXJu
IHN0ZDo6bnVsbG9wdDsKIAotICAgIFZlY3RvcjxQQUw6OldlYkdQVTo6UmVuZGVyUGFzc0NvbG9y
QXR0YWNobWVudD4gY29sb3JBdHRhY2htZW50czsKKyAgICBWZWN0b3I8c3RkOjpvcHRpb25hbDxQ
QUw6OldlYkdQVTo6UmVuZGVyUGFzc0NvbG9yQXR0YWNobWVudD4+IGNvbG9yQXR0YWNobWVudHM7
CiAgICAgY29sb3JBdHRhY2htZW50cy5yZXNlcnZlSW5pdGlhbENhcGFjaXR5KHJlbmRlclBhc3NE
ZXNjcmlwdG9yLmNvbG9yQXR0YWNobWVudHMuc2l6ZSgpKTsKICAgICBmb3IgKGNvbnN0IGF1dG8m
IGJhY2tpbmdDb2xvckF0dGFjaG1lbnQgOiByZW5kZXJQYXNzRGVzY3JpcHRvci5jb2xvckF0dGFj
aG1lbnRzKSB7Ci0gICAgICAgIGF1dG8gY29sb3JBdHRhY2htZW50ID0gY29udmVydEZyb21CYWNr
aW5nKGJhY2tpbmdDb2xvckF0dGFjaG1lbnQpOwotICAgICAgICBpZiAoIWNvbG9yQXR0YWNobWVu
dCkKLSAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7Ci0gICAgICAgIGNvbG9yQXR0YWNo
bWVudHMudW5jaGVja2VkQXBwZW5kKFdURk1vdmUoKmNvbG9yQXR0YWNobWVudCkpOworICAgICAg
ICBpZiAoYmFja2luZ0NvbG9yQXR0YWNobWVudCkgeworICAgICAgICAgICAgYXV0byBjb2xvckF0
dGFjaG1lbnQgPSBjb252ZXJ0RnJvbUJhY2tpbmcoKmJhY2tpbmdDb2xvckF0dGFjaG1lbnQpOwor
ICAgICAgICAgICAgaWYgKCFjb2xvckF0dGFjaG1lbnQpCisgICAgICAgICAgICAgICAgcmV0dXJu
IHN0ZDo6bnVsbG9wdDsKKyAgICAgICAgICAgIGNvbG9yQXR0YWNobWVudHMudW5jaGVja2VkQXBw
ZW5kKFdURk1vdmUoKmNvbG9yQXR0YWNobWVudCkpOworICAgICAgICB9IGVsc2UKKyAgICAgICAg
ICAgIGNvbG9yQXR0YWNobWVudHMudW5jaGVja2VkQXBwZW5kKHN0ZDo6bnVsbG9wdCk7CiAgICAg
fQogCiAgICAgYXV0byBkZXB0aFN0ZW5jaWxBdHRhY2htZW50ID0gKFsmXSAoKSAtPiBzdGQ6Om9w
dGlvbmFsPFBBTDo6V2ViR1BVOjpSZW5kZXJQYXNzRGVwdGhTdGVuY2lsQXR0YWNobWVudD4gewpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViR1BVL1dlYkdQVVJlbmRlclBhc3NE
ZXNjcmlwdG9yLmggYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJHUFUvV2ViR1BVUmVuZGVyUGFz
c0Rlc2NyaXB0b3IuaAppbmRleCBiN2U4ZjVkODRhMTYwOWQyZGI5NTAyZjc2YTNlNDhlNmViMGY2
NTliLi5kNWJjMzExY2Q3ODljYzc2YTk0MDFlMzc3ZTNjYzRmNWJkZjk2MGIwIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJHUFUvV2ViR1BVUmVuZGVyUGFzc0Rlc2NyaXB0b3Iu
aAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJHUFUvV2ViR1BVUmVuZGVyUGFzc0Rlc2Ny
aXB0b3IuaApAQCAtMzgsNyArMzgsNyBAQAogbmFtZXNwYWNlIFdlYktpdDo6V2ViR1BVIHsKIAog
c3RydWN0IFJlbmRlclBhc3NEZXNjcmlwdG9yIDogcHVibGljIE9iamVjdERlc2NyaXB0b3JCYXNl
IHsKLSAgICBWZWN0b3I8UmVuZGVyUGFzc0NvbG9yQXR0YWNobWVudD4gY29sb3JBdHRhY2htZW50
czsKKyAgICBWZWN0b3I8c3RkOjpvcHRpb25hbDxSZW5kZXJQYXNzQ29sb3JBdHRhY2htZW50Pj4g
Y29sb3JBdHRhY2htZW50czsKICAgICBzdGQ6Om9wdGlvbmFsPFJlbmRlclBhc3NEZXB0aFN0ZW5j
aWxBdHRhY2htZW50PiBkZXB0aFN0ZW5jaWxBdHRhY2htZW50OwogICAgIFdlYkdQVUlkZW50aWZp
ZXIgb2NjbHVzaW9uUXVlcnlTZXQ7CiAgICAgUmVuZGVyUGFzc1RpbWVzdGFtcFdyaXRlcyB0aW1l
c3RhbXBXcml0ZXM7CkBAIC01OSw3ICs1OSw3IEBAIHN0cnVjdCBSZW5kZXJQYXNzRGVzY3JpcHRv
ciA6IHB1YmxpYyBPYmplY3REZXNjcmlwdG9yQmFzZSB7CiAgICAgICAgIGlmICghb2JqZWN0RGVz
Y3JpcHRvckJhc2UpCiAgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCi0gICAgICAg
IHN0ZDo6b3B0aW9uYWw8VmVjdG9yPFJlbmRlclBhc3NDb2xvckF0dGFjaG1lbnQ+PiBjb2xvckF0
dGFjaG1lbnRzOworICAgICAgICBzdGQ6Om9wdGlvbmFsPFZlY3RvcjxzdGQ6Om9wdGlvbmFsPFJl
bmRlclBhc3NDb2xvckF0dGFjaG1lbnQ+Pj4gY29sb3JBdHRhY2htZW50czsKICAgICAgICAgZGVj
b2RlciA+PiBjb2xvckF0dGFjaG1lbnRzOwogICAgICAgICBpZiAoIWNvbG9yQXR0YWNobWVudHMp
CiAgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9TaGFyZWQvV2ViR1BVL1dlYkdQVVJlbmRlclBhc3NMYXlvdXQuaCBiL1NvdXJjZS9XZWJL
aXQvU2hhcmVkL1dlYkdQVS9XZWJHUFVSZW5kZXJQYXNzTGF5b3V0LmgKaW5kZXggZTljZjIyYmJh
ZTdlMjViMTY3NDdmY2ZmMjRmYmNhY2YwNjg5MDQzOC4uNGRhZmQ5Y2UxMjdhMmJjZDkxNzNiMTA0
NTcwNTJlYTNkZWNkZjJhNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViR1BV
L1dlYkdQVVJlbmRlclBhc3NMYXlvdXQuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJH
UFUvV2ViR1BVUmVuZGVyUGFzc0xheW91dC5oCkBAIC0zNiw3ICszNiw3IEBACiBuYW1lc3BhY2Ug
V2ViS2l0OjpXZWJHUFUgewogCiBzdHJ1Y3QgUmVuZGVyUGFzc0xheW91dCA6IHB1YmxpYyBPYmpl
Y3REZXNjcmlwdG9yQmFzZSB7Ci0gICAgVmVjdG9yPFBBTDo6V2ViR1BVOjpUZXh0dXJlRm9ybWF0
PiBjb2xvckZvcm1hdHM7CisgICAgVmVjdG9yPHN0ZDo6b3B0aW9uYWw8UEFMOjpXZWJHUFU6OlRl
eHR1cmVGb3JtYXQ+PiBjb2xvckZvcm1hdHM7CiAgICAgc3RkOjpvcHRpb25hbDxQQUw6OldlYkdQ
VTo6VGV4dHVyZUZvcm1hdD4gZGVwdGhTdGVuY2lsRm9ybWF0OwogICAgIFBBTDo6V2ViR1BVOjpT
aXplMzIgc2FtcGxlQ291bnQgeyAxIH07CiAKQEAgLTU1LDcgKzU1LDcgQEAgc3RydWN0IFJlbmRl
clBhc3NMYXlvdXQgOiBwdWJsaWMgT2JqZWN0RGVzY3JpcHRvckJhc2UgewogICAgICAgICBpZiAo
IW9iamVjdERlc2NyaXB0b3JCYXNlKQogICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsK
IAotICAgICAgICBzdGQ6Om9wdGlvbmFsPFZlY3RvcjxQQUw6OldlYkdQVTo6VGV4dHVyZUZvcm1h
dD4+IGNvbG9yRm9ybWF0czsKKyAgICAgICAgc3RkOjpvcHRpb25hbDxWZWN0b3I8c3RkOjpvcHRp
b25hbDxQQUw6OldlYkdQVTo6VGV4dHVyZUZvcm1hdD4+PiBjb2xvckZvcm1hdHM7CiAgICAgICAg
IGRlY29kZXIgPj4gY29sb3JGb3JtYXRzOwogICAgICAgICBpZiAoIWNvbG9yRm9ybWF0cykKICAg
ICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1NoYXJlZC9XZWJHUFUvV2ViR1BVU2hhZGVyTW9kdWxlQ29tcGlsYXRpb25IaW50LmNwcCBiL1Nv
dXJjZS9XZWJLaXQvU2hhcmVkL1dlYkdQVS9XZWJHUFVTaGFkZXJNb2R1bGVDb21waWxhdGlvbkhp
bnQuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjYwNGM3YjA0NWFmZTc0OTk2NmMyMjk2MzY2ZGNhZDYzODM5ZmMw
ZGQKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJHUFUvV2ViR1BV
U2hhZGVyTW9kdWxlQ29tcGlsYXRpb25IaW50LmNwcApAQCAtMCwwICsxLDU3IEBACisvKgorICog
Q29weXJpZ2h0IChDKSAyMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlv
bi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElU
UyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElO
Qy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElB
TCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YK
KyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
CisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisg
Ki8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIldlYkdQVVNoYWRlck1vZHVsZUNv
bXBpbGF0aW9uSGludC5oIgorCisjaWYgRU5BQkxFKEdQVV9QUk9DRVNTKQorCisjaW5jbHVkZSAi
V2ViR1BVQ29udmVydEZyb21CYWNraW5nQ29udGV4dC5oIgorI2luY2x1ZGUgIldlYkdQVUNvbnZl
cnRUb0JhY2tpbmdDb250ZXh0LmgiCisjaW5jbHVkZSA8cGFsL2dyYXBoaWNzL1dlYkdQVS9XZWJH
UFVTaGFkZXJNb2R1bGVDb21waWxhdGlvbkhpbnQuaD4KKworbmFtZXNwYWNlIFdlYktpdDo6V2Vi
R1BVIHsKKworc3RkOjpvcHRpb25hbDxTaGFkZXJNb2R1bGVDb21waWxhdGlvbkhpbnQ+IENvbnZl
cnRUb0JhY2tpbmdDb250ZXh0Ojpjb252ZXJ0VG9CYWNraW5nKGNvbnN0IFBBTDo6V2ViR1BVOjpT
aGFkZXJNb2R1bGVDb21waWxhdGlvbkhpbnQmIHNoYWRlck1vZHVsZUNvbXBpbGF0aW9uSGludCkK
K3sKKyAgICBXZWJHUFVJZGVudGlmaWVyIHBpcGVsaW5lTGF5b3V0ID0gY29udmVydFRvQmFja2lu
ZyhzaGFkZXJNb2R1bGVDb21waWxhdGlvbkhpbnQucGlwZWxpbmVMYXlvdXQpOworICAgIGlmICgh
cGlwZWxpbmVMYXlvdXQpCisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CisKKyAgICByZXR1
cm4geyB7IHBpcGVsaW5lTGF5b3V0IH0gfTsKK30KKworc3RkOjpvcHRpb25hbDxQQUw6OldlYkdQ
VTo6U2hhZGVyTW9kdWxlQ29tcGlsYXRpb25IaW50PiBDb252ZXJ0RnJvbUJhY2tpbmdDb250ZXh0
Ojpjb252ZXJ0RnJvbUJhY2tpbmcoY29uc3QgU2hhZGVyTW9kdWxlQ29tcGlsYXRpb25IaW50JiBz
aGFkZXJNb2R1bGVDb21waWxhdGlvbkhpbnQpCit7CisgICAgYXV0byogcGlwZWxpbmVMYXlvdXQg
PSBjb252ZXJ0UGlwZWxpbmVMYXlvdXRGcm9tQmFja2luZyhzaGFkZXJNb2R1bGVDb21waWxhdGlv
bkhpbnQucGlwZWxpbmVMYXlvdXQpOworICAgIGlmICghcGlwZWxpbmVMYXlvdXQpCisgICAgICAg
IHJldHVybiBzdGQ6Om51bGxvcHQ7CisKKyAgICByZXR1cm4geyB7ICpwaXBlbGluZUxheW91dCB9
IH07Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdAorCisjZW5kaWYgLy8gRU5BQkxFKEdQVV9Q
Uk9DRVNTKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViR1BVL1dlYkdQVVNo
YWRlck1vZHVsZUNvbXBpbGF0aW9uSGludC5oIGIvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViR1BV
L1dlYkdQVVNoYWRlck1vZHVsZUNvbXBpbGF0aW9uSGludC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmU4OTM2OWRm
ZWE0ZDAyNmY1Mzc0YWExMjIyNzJhMDZiZTQxM2U4OWIKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1NoYXJlZC9XZWJHUFUvV2ViR1BVU2hhZGVyTW9kdWxlQ29tcGlsYXRpb25IaW50
LmgKQEAgLTAsMCArMSw1NiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMSBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAq
IGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICog
QU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVY
RU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaWYgRU5B
QkxFKEdQVV9QUk9DRVNTKQorCisjaW5jbHVkZSAiV2ViR1BVSWRlbnRpZmllci5oIgorI2luY2x1
ZGUgPG9wdGlvbmFsPgorCituYW1lc3BhY2UgV2ViS2l0OjpXZWJHUFUgeworCitzdHJ1Y3QgU2hh
ZGVyTW9kdWxlQ29tcGlsYXRpb25IaW50IHsKKyAgICBXZWJHUFVJZGVudGlmaWVyIHBpcGVsaW5l
TGF5b3V0OworCisgICAgdGVtcGxhdGU8Y2xhc3MgRW5jb2Rlcj4gdm9pZCBlbmNvZGUoRW5jb2Rl
ciYgZW5jb2RlcikgY29uc3QKKyAgICB7CisgICAgICAgIGVuY29kZXIgPDwgcGlwZWxpbmVMYXlv
dXQ7CisgICAgfQorCisgICAgdGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4gc3RhdGljIHN0ZDo6b3B0
aW9uYWw8U2hhZGVyTW9kdWxlQ29tcGlsYXRpb25IaW50PiBkZWNvZGUoRGVjb2RlciYgZGVjb2Rl
cikKKyAgICB7CisgICAgICAgIHN0ZDo6b3B0aW9uYWw8V2ViR1BVSWRlbnRpZmllcj4gcGlwZWxp
bmVMYXlvdXQ7CisgICAgICAgIGRlY29kZXIgPj4gcGlwZWxpbmVMYXlvdXQ7CisgICAgICAgIGlm
ICghcGlwZWxpbmVMYXlvdXQpCisgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OworCisg
ICAgICAgIHJldHVybiB7IHsgV1RGTW92ZSgqcGlwZWxpbmVMYXlvdXQpIH0gfTsKKyAgICB9Cit9
OworCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQ6OldlYkdQVQorCisjZW5kaWYgLy8gRU5BQkxFKEdQ
VV9QUk9DRVNTKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViR1BVL1dlYkdQ
VVNoYWRlck1vZHVsZURlc2NyaXB0b3IuY3BwIGIvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViR1BV
L1dlYkdQVVNoYWRlck1vZHVsZURlc2NyaXB0b3IuY3BwCmluZGV4IDI2ZGJkNjc4ZWVkNjllYzdh
NTAzNTRkNTg3Y2RkZWM2ZmFjZWRiN2YuLmZiZmUyMGI3YjRjNmFlYjEwMWVjMDY3MzliNTM4M2Ni
NmFiOTJmMWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkdQVS9XZWJHUFVT
aGFkZXJNb2R1bGVEZXNjcmlwdG9yLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJH
UFUvV2ViR1BVU2hhZGVyTW9kdWxlRGVzY3JpcHRvci5jcHAKQEAgLTQwLDcgKzQwLDE2IEBAIHN0
ZDo6b3B0aW9uYWw8U2hhZGVyTW9kdWxlRGVzY3JpcHRvcj4gQ29udmVydFRvQmFja2luZ0NvbnRl
eHQ6OmNvbnZlcnRUb0JhY2tpbmcoCiAgICAgaWYgKCFiYXNlKQogICAgICAgICByZXR1cm4gc3Rk
OjpudWxsb3B0OwogCi0gICAgcmV0dXJuIHsgeyBXVEZNb3ZlKCpiYXNlKSwgc2hhZGVyTW9kdWxl
RGVzY3JpcHRvci5jb2RlIH0gfTsKKyAgICBWZWN0b3I8S2V5VmFsdWVQYWlyPFN0cmluZywgU2hh
ZGVyTW9kdWxlQ29tcGlsYXRpb25IaW50Pj4gaGludHM7CisgICAgaGludHMucmVzZXJ2ZUluaXRp
YWxDYXBhY2l0eShzaGFkZXJNb2R1bGVEZXNjcmlwdG9yLmhpbnRzLnNpemUoKSk7CisgICAgZm9y
IChjb25zdCBhdXRvJiBoaW50IDogc2hhZGVyTW9kdWxlRGVzY3JpcHRvci5oaW50cykgeworICAg
ICAgICBhdXRvIHZhbHVlID0gY29udmVydFRvQmFja2luZyhoaW50LnZhbHVlKTsKKyAgICAgICAg
aWYgKCF2YWx1ZSkKKyAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CisgICAgICAgIGhp
bnRzLnVuY2hlY2tlZEFwcGVuZChtYWtlS2V5VmFsdWVQYWlyKGhpbnQua2V5LCBXVEZNb3ZlKCp2
YWx1ZSkpKTsKKyAgICB9CisKKyAgICByZXR1cm4geyB7IFdURk1vdmUoKmJhc2UpLCBzaGFkZXJN
b2R1bGVEZXNjcmlwdG9yLmNvZGUsIFdURk1vdmUoaGludHMpIH0gfTsKIH0KIAogc3RkOjpvcHRp
b25hbDxQQUw6OldlYkdQVTo6U2hhZGVyTW9kdWxlRGVzY3JpcHRvcj4gQ29udmVydEZyb21CYWNr
aW5nQ29udGV4dDo6Y29udmVydEZyb21CYWNraW5nKGNvbnN0IFNoYWRlck1vZHVsZURlc2NyaXB0
b3ImIHNoYWRlck1vZHVsZURlc2NyaXB0b3IpCkBAIC00OSw3ICs1OCwxNiBAQCBzdGQ6Om9wdGlv
bmFsPFBBTDo6V2ViR1BVOjpTaGFkZXJNb2R1bGVEZXNjcmlwdG9yPiBDb252ZXJ0RnJvbUJhY2tp
bmdDb250ZXh0OjpjbwogICAgIGlmICghYmFzZSkKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9w
dDsKIAotICAgIHJldHVybiB7IHsgV1RGTW92ZSgqYmFzZSksIHNoYWRlck1vZHVsZURlc2NyaXB0
b3IuY29kZSB9IH07CisgICAgVmVjdG9yPEtleVZhbHVlUGFpcjxTdHJpbmcsIFBBTDo6V2ViR1BV
OjpTaGFkZXJNb2R1bGVDb21waWxhdGlvbkhpbnQ+PiBoaW50czsKKyAgICBoaW50cy5yZXNlcnZl
SW5pdGlhbENhcGFjaXR5KHNoYWRlck1vZHVsZURlc2NyaXB0b3IuaGludHMuc2l6ZSgpKTsKKyAg
ICBmb3IgKGNvbnN0IGF1dG8mIGhpbnQgOiBzaGFkZXJNb2R1bGVEZXNjcmlwdG9yLmhpbnRzKSB7
CisgICAgICAgIGF1dG8gdmFsdWUgPSBjb252ZXJ0RnJvbUJhY2tpbmcoaGludC52YWx1ZSk7Cisg
ICAgICAgIGlmICghdmFsdWUpCisgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OworICAg
ICAgICBoaW50cy51bmNoZWNrZWRBcHBlbmQobWFrZUtleVZhbHVlUGFpcihoaW50LmtleSwgV1RG
TW92ZSgqdmFsdWUpKSk7CisgICAgfQorCisgICAgcmV0dXJuIHsgeyBXVEZNb3ZlKCpiYXNlKSwg
c2hhZGVyTW9kdWxlRGVzY3JpcHRvci5jb2RlLCBXVEZNb3ZlKGhpbnRzKSB9IH07CiB9CiAKIH0g
Ly8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvV2Vi
R1BVL1dlYkdQVVNoYWRlck1vZHVsZURlc2NyaXB0b3IuaCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVk
L1dlYkdQVS9XZWJHUFVTaGFkZXJNb2R1bGVEZXNjcmlwdG9yLmgKaW5kZXggNWM4MWI0ZGM0MmFk
Zjk0OWQ0NTJhZTU5Njg1NjYwMjczNzViOGE0Yi4uODYwZTBiYTk1M2QwYTExNzczNGFjNzE1MmI1
OWEzMzgzZjUwZDg4NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViR1BVL1dl
YkdQVVNoYWRlck1vZHVsZURlc2NyaXB0b3IuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9X
ZWJHUFUvV2ViR1BVU2hhZGVyTW9kdWxlRGVzY3JpcHRvci5oCkBAIC0yOCw2ICsyOCw3IEBACiAj
aWYgRU5BQkxFKEdQVV9QUk9DRVNTKQogCiAjaW5jbHVkZSAiV2ViR1BVT2JqZWN0RGVzY3JpcHRv
ckJhc2UuaCIKKyNpbmNsdWRlICJXZWJHUFVTaGFkZXJNb2R1bGVDb21waWxhdGlvbkhpbnQuaCIK
ICNpbmNsdWRlIDxvcHRpb25hbD4KICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KIApA
QCAtMzYsMTEgKzM3LDEzIEBAIG5hbWVzcGFjZSBXZWJLaXQ6OldlYkdQVSB7CiBzdHJ1Y3QgU2hh
ZGVyTW9kdWxlRGVzY3JpcHRvciA6IHB1YmxpYyBPYmplY3REZXNjcmlwdG9yQmFzZSB7CiAgICAg
U3RyaW5nIGNvZGU7CiAgICAgLy8gRklYTUU6IEhvb2sgdXAgdGhlIHNvdXJjZU1hcC4KKyAgICBW
ZWN0b3I8S2V5VmFsdWVQYWlyPFN0cmluZywgU2hhZGVyTW9kdWxlQ29tcGlsYXRpb25IaW50Pj4g
aGludHM7CiAKICAgICB0ZW1wbGF0ZTxjbGFzcyBFbmNvZGVyPiB2b2lkIGVuY29kZShFbmNvZGVy
JiBlbmNvZGVyKSBjb25zdAogICAgIHsKICAgICAgICAgZW5jb2RlciA8PCBzdGF0aWNfY2FzdDxj
b25zdCBPYmplY3REZXNjcmlwdG9yQmFzZSY+KCp0aGlzKTsKICAgICAgICAgZW5jb2RlciA8PCBj
b2RlOworICAgICAgICBlbmNvZGVyIDw8IGhpbnRzOwogICAgIH0KIAogICAgIHRlbXBsYXRlPGNs
YXNzIERlY29kZXI+IHN0YXRpYyBzdGQ6Om9wdGlvbmFsPFNoYWRlck1vZHVsZURlc2NyaXB0b3I+
IGRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQpAQCAtNTUsNyArNTgsMTIgQEAgc3RydWN0IFNoYWRl
ck1vZHVsZURlc2NyaXB0b3IgOiBwdWJsaWMgT2JqZWN0RGVzY3JpcHRvckJhc2UgewogICAgICAg
ICBpZiAoIWNvZGUpCiAgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCi0gICAgICAg
IHJldHVybiB7IHsgV1RGTW92ZSgqb2JqZWN0RGVzY3JpcHRvckJhc2UpLCBXVEZNb3ZlKCpjb2Rl
KSB9IH07CisgICAgICAgIHN0ZDo6b3B0aW9uYWw8VmVjdG9yPEtleVZhbHVlUGFpcjxTdHJpbmcs
IFNoYWRlck1vZHVsZUNvbXBpbGF0aW9uSGludD4+PiBoaW50czsKKyAgICAgICAgZGVjb2RlciA+
PiBoaW50czsKKyAgICAgICAgaWYgKCFoaW50cykKKyAgICAgICAgICAgIHJldHVybiBzdGQ6Om51
bGxvcHQ7CisKKyAgICAgICAgcmV0dXJuIHsgeyBXVEZNb3ZlKCpvYmplY3REZXNjcmlwdG9yQmFz
ZSksIFdURk1vdmUoKmNvZGUpLCBXVEZNb3ZlKCpoaW50cykgfSB9OwogICAgIH0KIH07CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkdQVS9XZWJHUFVUZXh0dXJlRGVzY3Jp
cHRvci5jcHAgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJHUFUvV2ViR1BVVGV4dHVyZURlc2Ny
aXB0b3IuY3BwCmluZGV4IGJmNmI0ZDM1NjJlNzA3OGExYTRlNTRhY2RlZGMwNWQ5MGQ1ZjFlYTIu
LmNjMDMyMzExYTFkNjQxOWViMGI1Mjg0N2Y2ZTk2NmJhNzY1MjY4MTQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvU2hhcmVkL1dlYkdQVS9XZWJHUFVUZXh0dXJlRGVzY3JpcHRvci5jcHAKKysr
IGIvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViR1BVL1dlYkdQVVRleHR1cmVEZXNjcmlwdG9yLmNw
cApAQCAtNDQsNyArNDQsNyBAQCBzdGQ6Om9wdGlvbmFsPFRleHR1cmVEZXNjcmlwdG9yPiBDb252
ZXJ0VG9CYWNraW5nQ29udGV4dDo6Y29udmVydFRvQmFja2luZyhjb25zdAogICAgIGlmICghc2l6
ZSkKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAotICAgIHJldHVybiB7IHsgV1RGTW92
ZSgqYmFzZSksIFdURk1vdmUoKnNpemUpLCB0ZXh0dXJlRGVzY3JpcHRvci5taXBMZXZlbENvdW50
LCB0ZXh0dXJlRGVzY3JpcHRvci5zYW1wbGVDb3VudCwgdGV4dHVyZURlc2NyaXB0b3IuZGltZW5z
aW9uLCB0ZXh0dXJlRGVzY3JpcHRvci5mb3JtYXQsIHRleHR1cmVEZXNjcmlwdG9yLnVzYWdlIH0g
fTsKKyAgICByZXR1cm4geyB7IFdURk1vdmUoKmJhc2UpLCBXVEZNb3ZlKCpzaXplKSwgdGV4dHVy
ZURlc2NyaXB0b3IubWlwTGV2ZWxDb3VudCwgdGV4dHVyZURlc2NyaXB0b3Iuc2FtcGxlQ291bnQs
IHRleHR1cmVEZXNjcmlwdG9yLmRpbWVuc2lvbiwgdGV4dHVyZURlc2NyaXB0b3IuZm9ybWF0LCB0
ZXh0dXJlRGVzY3JpcHRvci51c2FnZSwgdGV4dHVyZURlc2NyaXB0b3Iudmlld0Zvcm1hdHMgfSB9
OwogfQogCiBzdGQ6Om9wdGlvbmFsPFBBTDo6V2ViR1BVOjpUZXh0dXJlRGVzY3JpcHRvcj4gQ29u
dmVydEZyb21CYWNraW5nQ29udGV4dDo6Y29udmVydEZyb21CYWNraW5nKGNvbnN0IFRleHR1cmVE
ZXNjcmlwdG9yJiB0ZXh0dXJlRGVzY3JpcHRvcikKQEAgLTU3LDcgKzU3LDcgQEAgc3RkOjpvcHRp
b25hbDxQQUw6OldlYkdQVTo6VGV4dHVyZURlc2NyaXB0b3I+IENvbnZlcnRGcm9tQmFja2luZ0Nv
bnRleHQ6OmNvbnZlcnQKICAgICBpZiAoIXNpemUpCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxv
cHQ7CiAKLSAgICByZXR1cm4geyB7IFdURk1vdmUoKmJhc2UpLCBXVEZNb3ZlKCpzaXplKSwgdGV4
dHVyZURlc2NyaXB0b3IubWlwTGV2ZWxDb3VudCwgdGV4dHVyZURlc2NyaXB0b3Iuc2FtcGxlQ291
bnQsIHRleHR1cmVEZXNjcmlwdG9yLmRpbWVuc2lvbiwgdGV4dHVyZURlc2NyaXB0b3IuZm9ybWF0
LCB0ZXh0dXJlRGVzY3JpcHRvci51c2FnZSB9IH07CisgICAgcmV0dXJuIHsgeyBXVEZNb3ZlKCpi
YXNlKSwgV1RGTW92ZSgqc2l6ZSksIHRleHR1cmVEZXNjcmlwdG9yLm1pcExldmVsQ291bnQsIHRl
eHR1cmVEZXNjcmlwdG9yLnNhbXBsZUNvdW50LCB0ZXh0dXJlRGVzY3JpcHRvci5kaW1lbnNpb24s
IHRleHR1cmVEZXNjcmlwdG9yLmZvcm1hdCwgdGV4dHVyZURlc2NyaXB0b3IudXNhZ2UsIHRleHR1
cmVEZXNjcmlwdG9yLnZpZXdGb3JtYXRzIH0gfTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJHUFUvV2ViR1BVVGV4dHVyZURl
c2NyaXB0b3IuaCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkdQVS9XZWJHUFVUZXh0dXJlRGVz
Y3JpcHRvci5oCmluZGV4IGQ5ZWNlZmVkMGE4M2NiNWY5NDMwMjc1ODBhMWQxMzg3MDhjN2EwZTMu
LjdjNGRiNDNkYjRhMGU3YzE1M2VjZWU5NDQzOTcxNWNjMDI5ZjVhMjAgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvU2hhcmVkL1dlYkdQVS9XZWJHUFVUZXh0dXJlRGVzY3JpcHRvci5oCisrKyBi
L1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkdQVS9XZWJHUFVUZXh0dXJlRGVzY3JpcHRvci5oCkBA
IC00NCw2ICs0NCw3IEBAIHN0cnVjdCBUZXh0dXJlRGVzY3JpcHRvciA6IHB1YmxpYyBPYmplY3RE
ZXNjcmlwdG9yQmFzZSB7CiAgICAgUEFMOjpXZWJHUFU6OlRleHR1cmVEaW1lbnNpb24gZGltZW5z
aW9uIHsgUEFMOjpXZWJHUFU6OlRleHR1cmVEaW1lbnNpb246Ol8yZCB9OwogICAgIFBBTDo6V2Vi
R1BVOjpUZXh0dXJlRm9ybWF0IGZvcm1hdCB7IFBBTDo6V2ViR1BVOjpUZXh0dXJlRm9ybWF0OjpS
OHVub3JtIH07CiAgICAgUEFMOjpXZWJHUFU6OlRleHR1cmVVc2FnZUZsYWdzIHVzYWdlOworICAg
IFZlY3RvcjxQQUw6OldlYkdQVTo6VGV4dHVyZUZvcm1hdD4gdmlld0Zvcm1hdHM7CiAKICAgICB0
ZW1wbGF0ZTxjbGFzcyBFbmNvZGVyPiB2b2lkIGVuY29kZShFbmNvZGVyJiBlbmNvZGVyKSBjb25z
dAogICAgIHsKQEAgLTU0LDYgKzU1LDcgQEAgc3RydWN0IFRleHR1cmVEZXNjcmlwdG9yIDogcHVi
bGljIE9iamVjdERlc2NyaXB0b3JCYXNlIHsKICAgICAgICAgZW5jb2RlciA8PCBkaW1lbnNpb247
CiAgICAgICAgIGVuY29kZXIgPDwgZm9ybWF0OwogICAgICAgICBlbmNvZGVyIDw8IHVzYWdlOwor
ICAgICAgICBlbmNvZGVyIDw8IHZpZXdGb3JtYXRzOwogICAgIH0KIAogICAgIHRlbXBsYXRlPGNs
YXNzIERlY29kZXI+IHN0YXRpYyBzdGQ6Om9wdGlvbmFsPFRleHR1cmVEZXNjcmlwdG9yPiBkZWNv
ZGUoRGVjb2RlciYgZGVjb2RlcikKQEAgLTkzLDcgKzk1LDEyIEBAIHN0cnVjdCBUZXh0dXJlRGVz
Y3JpcHRvciA6IHB1YmxpYyBPYmplY3REZXNjcmlwdG9yQmFzZSB7CiAgICAgICAgIGlmICghdXNh
Z2UpCiAgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCi0gICAgICAgIHJldHVybiB7
IHsgV1RGTW92ZSgqb2JqZWN0RGVzY3JpcHRvckJhc2UpLCBXVEZNb3ZlKCpzaXplKSwgV1RGTW92
ZSgqbWlwTGV2ZWxDb3VudCksIFdURk1vdmUoKnNhbXBsZUNvdW50KSwgV1RGTW92ZSgqZGltZW5z
aW9uKSwgV1RGTW92ZSgqZm9ybWF0KSwgV1RGTW92ZSgqdXNhZ2UpIH0gfTsKKyAgICAgICAgc3Rk
OjpvcHRpb25hbDxWZWN0b3I8UEFMOjpXZWJHUFU6OlRleHR1cmVGb3JtYXQ+PiB2aWV3Rm9ybWF0
czsKKyAgICAgICAgZGVjb2RlciA+PiB2aWV3Rm9ybWF0czsKKyAgICAgICAgaWYgKCF2aWV3Rm9y
bWF0cykKKyAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CisKKyAgICAgICAgcmV0dXJu
IHsgeyBXVEZNb3ZlKCpvYmplY3REZXNjcmlwdG9yQmFzZSksIFdURk1vdmUoKnNpemUpLCBXVEZN
b3ZlKCptaXBMZXZlbENvdW50KSwgV1RGTW92ZSgqc2FtcGxlQ291bnQpLCBXVEZNb3ZlKCpkaW1l
bnNpb24pLCBXVEZNb3ZlKCpmb3JtYXQpLCBXVEZNb3ZlKCp1c2FnZSksIFdURk1vdmUoKnZpZXdG
b3JtYXRzKSB9IH07CiAgICAgfQogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9Tb3Vy
Y2VzLnR4dCBiL1NvdXJjZS9XZWJLaXQvU291cmNlcy50eHQKaW5kZXggZjM4YjNlZDcwMTUxZjY4
MjU5YjEzMzU1N2UyNTNmYTkzNTllYjEwZC4uYzczMjBiMTAyZTdkOGYyYjZmZWY4ZDJiNDZmY2M4
YjllZDdkMTA5YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9Tb3VyY2VzLnR4dAorKysgYi9T
b3VyY2UvV2ViS2l0L1NvdXJjZXMudHh0CkBAIC0zODMsNiArMzgzLDcgQEAgU2hhcmVkL1dlYkdQ
VS9XZWJHUFVSZW5kZXJQaXBlbGluZURlc2NyaXB0b3IuY3BwCiBTaGFyZWQvV2ViR1BVL1dlYkdQ
VVJlcXVlc3RBZGFwdGVyT3B0aW9ucy5jcHAKIFNoYXJlZC9XZWJHUFUvV2ViR1BVU2FtcGxlckJp
bmRpbmdMYXlvdXQuY3BwCiBTaGFyZWQvV2ViR1BVL1dlYkdQVVNhbXBsZXJEZXNjcmlwdG9yLmNw
cAorU2hhcmVkL1dlYkdQVS9XZWJHUFVTaGFkZXJNb2R1bGVDb21waWxhdGlvbkhpbnQuY3BwCiBT
aGFyZWQvV2ViR1BVL1dlYkdQVVNoYWRlck1vZHVsZURlc2NyaXB0b3IuY3BwCiBTaGFyZWQvV2Vi
R1BVL1dlYkdQVVN0ZW5jaWxGYWNlU3RhdGUuY3BwCiBTaGFyZWQvV2ViR1BVL1dlYkdQVVN0b3Jh
Z2VUZXh0dXJlQmluZGluZ0xheW91dC5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2Vi
S2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IGNjMjk2MDk3YTg3NjM4ZmE2ZWYzZTg2MGI3ODMy
ZWFmOGViOWVkYmEuLmQxNTIzY2Q1MjJjNzg2NmE3NzA1MTllNDZmNTUyYWU1YjkyYTI1MDggMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oK
KysrIGIvU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAt
MzM3MSw2ICszMzcxLDggQEAKIAkJMUNEREZDN0MyNzU1ODY2RDAwQzkzQzYyIC8qIFJlbW90ZUdQ
VVByb3h5TWVzc2FnZXNSZXBsaWVzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJlbW90ZUdQVVByb3h5TWVz
c2FnZXNSZXBsaWVzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTFDRERGQzdEMjc1
NTg2NkQwMEM5M0M2MiAvKiBSZW1vdGVHUFVQcm94eU1lc3NhZ2VSZWNlaXZlci5jcHAgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5jcHA7IHBhdGggPSBSZW1vdGVHUFVQcm94eU1lc3NhZ2VSZWNlaXZlci5jcHA7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTFDRERGQzdFMjc1NTg2NkQwMEM5M0M2MiAvKiBSZW1vdGVH
UFVQcm94eU1lc3NhZ2VzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJlbW90ZUdQVVByb3h5TWVzc2FnZXMu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMUNFRjQ1QkIyN0JDQTQ2QTAwQzNBNkJD
IC8qIFdlYkdQVVNoYWRlck1vZHVsZUNvbXBpbGF0aW9uSGludC5jcHAgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBh
dGggPSBXZWJHUFVTaGFkZXJNb2R1bGVDb21waWxhdGlvbkhpbnQuY3BwOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OworCQkxQ0VGNDVCQzI3QkNBNDZBMDBDM0E2QkMgLyogV2ViR1BVU2hhZGVy
TW9kdWxlQ29tcGlsYXRpb25IaW50LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYkdQVVNoYWRlck1vZHVs
ZUNvbXBpbGF0aW9uSGludC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkxQ0YxOEYz
RTI2QkI1RDkwMDA0QjE3MjIgLyogTG9nSW5pdGlhbGl6YXRpb24uY3BwICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBw
YXRoID0gTG9nSW5pdGlhbGl6YXRpb24uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQkxRDA1MzBDOTI1OEVBQjQ0MDBFNDM2RjcgLyogY29tYmluZS1mZWF0dXJlLWZsYWdzLXBsaXN0
LnB5ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4
dC5zY3JpcHQucHl0aG9uOyBwYXRoID0gImNvbWJpbmUtZmVhdHVyZS1mbGFncy1wbGlzdC5weSI7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTFEMDUzMEQxMjU5MTYyQzgwMEU0MzZGNyAv
KiBXZWJLaXQtaW9zLnBsaXN0ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93
bkZpbGVUeXBlID0gdGV4dC5wbGlzdC54bWw7IHBhdGggPSAiV2ViS2l0LWlvcy5wbGlzdCI7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC03OTc3LDYgKzc5NzksOCBAQAogCQkJCTFDQjc0
NjY3Mjc0MzlDQUUwMEYxOTg3NCAvKiBXZWJHUFVTYW1wbGVyQmluZGluZ0xheW91dC5oICovLAog
CQkJCTFDOThDMENDMjc0NjI2ODAwMDJDQ0I3OCAvKiBXZWJHUFVTYW1wbGVyRGVzY3JpcHRvci5j
cHAgKi8sCiAJCQkJMUNCNzQ2OEQyNzQzOUNCNzAwRjE5ODc0IC8qIFdlYkdQVVNhbXBsZXJEZXNj
cmlwdG9yLmggKi8sCisJCQkJMUNFRjQ1QkIyN0JDQTQ2QTAwQzNBNkJDIC8qIFdlYkdQVVNoYWRl
ck1vZHVsZUNvbXBpbGF0aW9uSGludC5jcHAgKi8sCisJCQkJMUNFRjQ1QkMyN0JDQTQ2QTAwQzNB
NkJDIC8qIFdlYkdQVVNoYWRlck1vZHVsZUNvbXBpbGF0aW9uSGludC5oICovLAogCQkJCTFDOThD
MDk5Mjc0NjI2NzgwMDJDQ0I3OCAvKiBXZWJHUFVTaGFkZXJNb2R1bGVEZXNjcmlwdG9yLmNwcCAq
LywKIAkJCQkxQ0I3NDY2QjI3NDM5Q0FGMDBGMTk4NzQgLyogV2ViR1BVU2hhZGVyTW9kdWxlRGVz
Y3JpcHRvci5oICovLAogCQkJCTFDOThDMENBMjc0NjI2ODAwMDJDQ0I3OCAvKiBXZWJHUFVTdGVu
Y2lsRmFjZVN0YXRlLmNwcCAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9HUFUvZ3JhcGhpY3MvV2ViR1BVL1JlbW90ZUJ1ZmZlclByb3h5LmNwcCBiL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvV2ViR1BVL1JlbW90ZUJ1ZmZlclByb3h5LmNwcApp
bmRleCBhOTk2Y2QzYzY3NTI1OTkzODk2N2I4MGRjZDg2YjE0MjZlNGE1ZGQ1Li4yNDA5NTdmMmNi
OTgwYWQ5OWM2Njk0MDAwYjMwZGIzZGQ1MjJhMDkyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1dlYkdQVS9SZW1vdGVCdWZmZXJQcm94eS5jcHAKKysr
IGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9XZWJHUFUvUmVtb3RlQnVm
ZmVyUHJveHkuY3BwCkBAIC00NCw3ICs0NCw3IEBAIFJlbW90ZUJ1ZmZlclByb3h5Ojp+UmVtb3Rl
QnVmZmVyUHJveHkoKQogewogfQogCi12b2lkIFJlbW90ZUJ1ZmZlclByb3h5OjptYXBBc3luYyhQ
QUw6OldlYkdQVTo6TWFwTW9kZUZsYWdzIG1hcE1vZGVGbGFncywgc3RkOjpvcHRpb25hbDxQQUw6
OldlYkdQVTo6U2l6ZTY0PiBvZmZzZXQsIHN0ZDo6b3B0aW9uYWw8UEFMOjpXZWJHUFU6OlNpemU2
ND4gc2l6ZSwgV1RGOjpGdW5jdGlvbjx2b2lkKCk+JiYgY2FsbGJhY2spCit2b2lkIFJlbW90ZUJ1
ZmZlclByb3h5OjptYXBBc3luYyhQQUw6OldlYkdQVTo6TWFwTW9kZUZsYWdzIG1hcE1vZGVGbGFn
cywgUEFMOjpXZWJHUFU6OlNpemU2NCBvZmZzZXQsIHN0ZDo6b3B0aW9uYWw8UEFMOjpXZWJHUFU6
OlNpemU2ND4gc2l6ZSwgV1RGOjpGdW5jdGlvbjx2b2lkKCk+JiYgY2FsbGJhY2spCiB7CiAgICAg
c3RkOjpvcHRpb25hbDxWZWN0b3I8dWludDhfdD4+IGRhdGE7CiAgICAgYXV0byBzZW5kUmVzdWx0
ID0gc2VuZFN5bmMoTWVzc2FnZXM6OlJlbW90ZUJ1ZmZlcjo6TWFwQXN5bmMobWFwTW9kZUZsYWdz
LCBvZmZzZXQsIHNpemUpLCB7IGRhdGEgfSk7CkBAIC01OSwxNCArNTksMTMgQEAgdm9pZCBSZW1v
dGVCdWZmZXJQcm94eTo6bWFwQXN5bmMoUEFMOjpXZWJHUFU6Ok1hcE1vZGVGbGFncyBtYXBNb2Rl
RmxhZ3MsIHN0ZDo6b3AKICAgICBjYWxsYmFjaygpOwogfQogCi1hdXRvIFJlbW90ZUJ1ZmZlclBy
b3h5OjpnZXRNYXBwZWRSYW5nZShzdGQ6Om9wdGlvbmFsPFBBTDo6V2ViR1BVOjpTaXplNjQ+IG9m
ZnNldCwgc3RkOjpvcHRpb25hbDxQQUw6OldlYkdQVTo6U2l6ZTY0PiBzaXplKSAtPiBNYXBwZWRS
YW5nZQorYXV0byBSZW1vdGVCdWZmZXJQcm94eTo6Z2V0TWFwcGVkUmFuZ2UoUEFMOjpXZWJHUFU6
OlNpemU2NCBvZmZzZXQsIHN0ZDo6b3B0aW9uYWw8UEFMOjpXZWJHUFU6OlNpemU2ND4gc2l6ZSkg
LT4gTWFwcGVkUmFuZ2UKIHsKICAgICAvLyBGSVhNRTogSW1wbGVtZW50IGVycm9yIGhhbmRsaW5n
LgogICAgIGlmICghbV9kYXRhKQogICAgICAgICByZXR1cm4geyB9OwogCi0gICAgYXV0byB1c2Vk
T2Zmc2V0ID0gb2Zmc2V0LnZhbHVlX29yKDApOwotICAgIHJldHVybiB7IG1fZGF0YS0+ZGF0YSgp
ICsgdXNlZE9mZnNldCwgc3RhdGljX2Nhc3Q8c2l6ZV90PihzaXplLnZhbHVlX29yKG1fZGF0YS0+
c2l6ZSgpIC0gdXNlZE9mZnNldCkpIH07CisgICAgcmV0dXJuIHsgbV9kYXRhLT5kYXRhKCkgKyBv
ZmZzZXQsIHN0YXRpY19jYXN0PHNpemVfdD4oc2l6ZS52YWx1ZV9vcihtX2RhdGEtPnNpemUoKSAt
IG9mZnNldCkpIH07CiB9CiAKIHZvaWQgUmVtb3RlQnVmZmVyUHJveHk6OnVubWFwKCkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvV2ViR1BVL1JlbW90
ZUJ1ZmZlclByb3h5LmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1dl
YkdQVS9SZW1vdGVCdWZmZXJQcm94eS5oCmluZGV4IDdiYTU2YTcwNmE4MDE4NjVjODQzMjZjMTBm
YjBmNGM5NGUyYjg0ZjAuLjQ5M2E4YmYwMTY5ZWEzNTUxNGU5ZGFhZTFmNzY3MzJjOGRkY2Q2N2Ug
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvV2ViR1BV
L1JlbW90ZUJ1ZmZlclByb3h5LmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9n
cmFwaGljcy9XZWJHUFUvUmVtb3RlQnVmZmVyUHJveHkuaApAQCAtNzMsOCArNzMsOCBAQCBwcml2
YXRlOgogICAgICAgICByZXR1cm4gcm9vdCgpLnN0cmVhbUNsaWVudENvbm5lY3Rpb24oKS5zZW5k
U3luYyhXVEZNb3ZlKG1lc3NhZ2UpLCBXVEZNb3ZlKHJlcGx5KSwgYmFja2luZygpLCBkZWZhdWx0
U2VuZFRpbWVvdXQpOwogICAgIH0KIAotICAgIHZvaWQgbWFwQXN5bmMoUEFMOjpXZWJHUFU6Ok1h
cE1vZGVGbGFncywgc3RkOjpvcHRpb25hbDxQQUw6OldlYkdQVTo6U2l6ZTY0PiBvZmZzZXQsIHN0
ZDo6b3B0aW9uYWw8UEFMOjpXZWJHUFU6OlNpemU2ND4gc2l6ZUZvck1hcCwgV1RGOjpGdW5jdGlv
bjx2b2lkKCk+JiYpIGZpbmFsOwotICAgIE1hcHBlZFJhbmdlIGdldE1hcHBlZFJhbmdlKHN0ZDo6
b3B0aW9uYWw8UEFMOjpXZWJHUFU6OlNpemU2ND4gb2Zmc2V0LCBzdGQ6Om9wdGlvbmFsPFBBTDo6
V2ViR1BVOjpTaXplNjQ+KSBmaW5hbDsKKyAgICB2b2lkIG1hcEFzeW5jKFBBTDo6V2ViR1BVOjpN
YXBNb2RlRmxhZ3MsIFBBTDo6V2ViR1BVOjpTaXplNjQgb2Zmc2V0LCBzdGQ6Om9wdGlvbmFsPFBB
TDo6V2ViR1BVOjpTaXplNjQ+IHNpemVGb3JNYXAsIFdURjo6RnVuY3Rpb248dm9pZCgpPiYmKSBm
aW5hbDsKKyAgICBNYXBwZWRSYW5nZSBnZXRNYXBwZWRSYW5nZShQQUw6OldlYkdQVTo6U2l6ZTY0
IG9mZnNldCwgc3RkOjpvcHRpb25hbDxQQUw6OldlYkdQVTo6U2l6ZTY0PikgZmluYWw7CiAgICAg
dm9pZCB1bm1hcCgpIGZpbmFsOwogCiAgICAgdm9pZCBkZXN0cm95KCkgZmluYWw7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1dlYkdQVS9SZW1vdGVD
b21tYW5kRW5jb2RlclByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3Jh
cGhpY3MvV2ViR1BVL1JlbW90ZUNvbW1hbmRFbmNvZGVyUHJveHkuY3BwCmluZGV4IGZlYTI5ZDk5
MjgxNjdlMmIyYTRkZjQ1NWQ5Zjg3YWYxZjhiZjZiZWMuLjYxM2VkNTAxNjRmYTI1NTZjOGIxNzI0
Y2UyNzYwZDYxMTkzMmE5MmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9H
UFUvZ3JhcGhpY3MvV2ViR1BVL1JlbW90ZUNvbW1hbmRFbmNvZGVyUHJveHkuY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvV2ViR1BVL1JlbW90ZUNvbW1hbmRF
bmNvZGVyUHJveHkuY3BwCkBAIC0xNTIsMTcgKzE1MiwxNyBAQCB2b2lkIFJlbW90ZUNvbW1hbmRF
bmNvZGVyUHJveHk6OmNvcHlUZXh0dXJlVG9UZXh0dXJlKAogICAgIFVOVVNFRF9WQVJJQUJMRShz
ZW5kUmVzdWx0KTsKIH0KIAotdm9pZCBSZW1vdGVDb21tYW5kRW5jb2RlclByb3h5OjpmaWxsQnVm
ZmVyKAotICAgIGNvbnN0IFBBTDo6V2ViR1BVOjpCdWZmZXImIGRlc3RpbmF0aW9uLAotICAgIFBB
TDo6V2ViR1BVOjpTaXplNjQgZGVzdGluYXRpb25PZmZzZXQsCi0gICAgUEFMOjpXZWJHUFU6OlNp
emU2NCBzaXplKQotewotICAgIGF1dG8gY29udmVydGVkRGVzdGluYXRpb24gPSBtX2NvbnZlcnRU
b0JhY2tpbmdDb250ZXh0LT5jb252ZXJ0VG9CYWNraW5nKGRlc3RpbmF0aW9uKTsKLSAgICBBU1NF
UlQoY29udmVydGVkRGVzdGluYXRpb24pOwotICAgIGlmICghY29udmVydGVkRGVzdGluYXRpb24p
Cit2b2lkIFJlbW90ZUNvbW1hbmRFbmNvZGVyUHJveHk6OmNsZWFyQnVmZmVyKAorICAgIGNvbnN0
IFBBTDo6V2ViR1BVOjpCdWZmZXImIGJ1ZmZlciwKKyAgICBQQUw6OldlYkdQVTo6U2l6ZTY0IG9m
ZnNldCwKKyAgICBzdGQ6Om9wdGlvbmFsPFBBTDo6V2ViR1BVOjpTaXplNjQ+IHNpemUpCit7Cisg
ICAgYXV0byBjb252ZXJ0ZWRCdWZmZXIgPSBtX2NvbnZlcnRUb0JhY2tpbmdDb250ZXh0LT5jb252
ZXJ0VG9CYWNraW5nKGJ1ZmZlcik7CisgICAgQVNTRVJUKGNvbnZlcnRlZEJ1ZmZlcik7CisgICAg
aWYgKCFjb252ZXJ0ZWRCdWZmZXIpCiAgICAgICAgIHJldHVybjsKIAotICAgIGF1dG8gc2VuZFJl
c3VsdCA9IHNlbmQoTWVzc2FnZXM6OlJlbW90ZUNvbW1hbmRFbmNvZGVyOjpGaWxsQnVmZmVyKGNv
bnZlcnRlZERlc3RpbmF0aW9uLCBkZXN0aW5hdGlvbk9mZnNldCwgc2l6ZSkpOworICAgIGF1dG8g
c2VuZFJlc3VsdCA9IHNlbmQoTWVzc2FnZXM6OlJlbW90ZUNvbW1hbmRFbmNvZGVyOjpDbGVhckJ1
ZmZlcihjb252ZXJ0ZWRCdWZmZXIsIG9mZnNldCwgc2l6ZSkpOwogICAgIFVOVVNFRF9WQVJJQUJM
RShzZW5kUmVzdWx0KTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L0dQVS9ncmFwaGljcy9XZWJHUFUvUmVtb3RlQ29tbWFuZEVuY29kZXJQcm94eS5oIGIvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9XZWJHUFUvUmVtb3RlQ29tbWFuZEVuY29k
ZXJQcm94eS5oCmluZGV4IDExZTY3ODE1OWE0YjQxMjM2NjdlNjdkM2JhMjA4NTY4ZmM4MzViMGMu
LmIxNzY4MThiZTAxZWE0MjBhZGFlNDgxNTA5OWRjYWQwYjAxMTdiNGUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvV2ViR1BVL1JlbW90ZUNvbW1hbmRF
bmNvZGVyUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNz
L1dlYkdQVS9SZW1vdGVDb21tYW5kRW5jb2RlclByb3h5LmgKQEAgLTk3LDEwICs5NywxMCBAQCBw
cml2YXRlOgogICAgICAgICBjb25zdCBQQUw6OldlYkdQVTo6SW1hZ2VDb3B5VGV4dHVyZSYgZGVz
dGluYXRpb24sCiAgICAgICAgIGNvbnN0IFBBTDo6V2ViR1BVOjpFeHRlbnQzRCYgY29weVNpemUp
IGZpbmFsOwogCi0gICAgdm9pZCBmaWxsQnVmZmVyKAotICAgICAgICBjb25zdCBQQUw6OldlYkdQ
VTo6QnVmZmVyJiBkZXN0aW5hdGlvbiwKLSAgICAgICAgUEFMOjpXZWJHUFU6OlNpemU2NCBkZXN0
aW5hdGlvbk9mZnNldCwKLSAgICAgICAgUEFMOjpXZWJHUFU6OlNpemU2NCkgZmluYWw7CisgICAg
dm9pZCBjbGVhckJ1ZmZlcigKKyAgICAgICAgY29uc3QgUEFMOjpXZWJHUFU6OkJ1ZmZlciYsCisg
ICAgICAgIFBBTDo6V2ViR1BVOjpTaXplNjQgb2Zmc2V0ID0gMCwKKyAgICAgICAgc3RkOjpvcHRp
b25hbDxQQUw6OldlYkdQVTo6U2l6ZTY0PiA9IHN0ZDo6bnVsbG9wdCkgZmluYWw7CiAKICAgICB2
b2lkIHB1c2hEZWJ1Z0dyb3VwKFN0cmluZyYmIGdyb3VwTGFiZWwpIGZpbmFsOwogICAgIHZvaWQg
cG9wRGVidWdHcm91cCgpIGZpbmFsOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL0dQVS9ncmFwaGljcy9XZWJHUFUvUmVtb3RlQ29tcHV0ZVBhc3NFbmNvZGVyUHJveHkuY3Bw
IGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9XZWJHUFUvUmVtb3RlQ29t
cHV0ZVBhc3NFbmNvZGVyUHJveHkuY3BwCmluZGV4IDcxZjY3OTU1YWI3ZDU2OTdhYTNjNmMxOGIw
NjYzM2QwMjkyYWI5ZjUuLjZkMGY4M2NkNmQ5MWM3YzhlNjk5M2QwMDdlYjgwMmI1MjI4ODY0NmIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvV2ViR1BV
L1JlbW90ZUNvbXB1dGVQYXNzRW5jb2RlclByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvR1BVL2dyYXBoaWNzL1dlYkdQVS9SZW1vdGVDb21wdXRlUGFzc0VuY29kZXJQcm94
eS5jcHAKQEAgLTU1LDkgKzU1LDkgQEAgdm9pZCBSZW1vdGVDb21wdXRlUGFzc0VuY29kZXJQcm94
eTo6c2V0UGlwZWxpbmUoY29uc3QgUEFMOjpXZWJHUFU6OkNvbXB1dGVQaXBlbGkKICAgICBVTlVT
RURfVkFSSUFCTEUoc2VuZFJlc3VsdCk7CiB9CiAKLXZvaWQgUmVtb3RlQ29tcHV0ZVBhc3NFbmNv
ZGVyUHJveHk6OmRpc3BhdGNoKFBBTDo6V2ViR1BVOjpTaXplMzIgeCwgc3RkOjpvcHRpb25hbDxQ
QUw6OldlYkdQVTo6U2l6ZTMyPiB5LCBzdGQ6Om9wdGlvbmFsPFBBTDo6V2ViR1BVOjpTaXplMzI+
IHopCit2b2lkIFJlbW90ZUNvbXB1dGVQYXNzRW5jb2RlclByb3h5OjpkaXNwYXRjaChQQUw6Oldl
YkdQVTo6U2l6ZTMyIHdvcmtncm91cENvdW50WCwgUEFMOjpXZWJHUFU6OlNpemUzMiB3b3JrZ3Jv
dXBDb3VudFksIFBBTDo6V2ViR1BVOjpTaXplMzIgd29ya2dyb3VwQ291bnRaKQogewotICAgIGF1
dG8gc2VuZFJlc3VsdCA9IHNlbmQoTWVzc2FnZXM6OlJlbW90ZUNvbXB1dGVQYXNzRW5jb2Rlcjo6
RGlzcGF0Y2goeCwgeSwgeikpOworICAgIGF1dG8gc2VuZFJlc3VsdCA9IHNlbmQoTWVzc2FnZXM6
OlJlbW90ZUNvbXB1dGVQYXNzRW5jb2Rlcjo6RGlzcGF0Y2god29ya2dyb3VwQ291bnRYLCB3b3Jr
Z3JvdXBDb3VudFksIHdvcmtncm91cENvdW50WikpOwogICAgIFVOVVNFRF9WQVJJQUJMRShzZW5k
UmVzdWx0KTsKIH0KIApAQCAtNzIsMjYgKzcyLDkgQEAgdm9pZCBSZW1vdGVDb21wdXRlUGFzc0Vu
Y29kZXJQcm94eTo6ZGlzcGF0Y2hJbmRpcmVjdChjb25zdCBQQUw6OldlYkdQVTo6QnVmZmVyJgog
ICAgIFVOVVNFRF9WQVJJQUJMRShzZW5kUmVzdWx0KTsKIH0KIAotdm9pZCBSZW1vdGVDb21wdXRl
UGFzc0VuY29kZXJQcm94eTo6YmVnaW5QaXBlbGluZVN0YXRpc3RpY3NRdWVyeShjb25zdCBQQUw6
OldlYkdQVTo6UXVlcnlTZXQmIHF1ZXJ5U2V0LCBQQUw6OldlYkdQVTo6U2l6ZTMyIHF1ZXJ5SW5k
ZXgpCit2b2lkIFJlbW90ZUNvbXB1dGVQYXNzRW5jb2RlclByb3h5OjplbmQoKQogewotICAgIGF1
dG8gY29udmVydGVkUXVlcnlTZXQgPSBtX2NvbnZlcnRUb0JhY2tpbmdDb250ZXh0LT5jb252ZXJ0
VG9CYWNraW5nKHF1ZXJ5U2V0KTsKLSAgICBBU1NFUlQoY29udmVydGVkUXVlcnlTZXQpOwotICAg
IGlmICghY29udmVydGVkUXVlcnlTZXQpCi0gICAgICAgIHJldHVybjsKLQotICAgIGF1dG8gc2Vu
ZFJlc3VsdCA9IHNlbmQoTWVzc2FnZXM6OlJlbW90ZUNvbXB1dGVQYXNzRW5jb2Rlcjo6QmVnaW5Q
aXBlbGluZVN0YXRpc3RpY3NRdWVyeShjb252ZXJ0ZWRRdWVyeVNldCwgcXVlcnlJbmRleCkpOwot
ICAgIFVOVVNFRF9WQVJJQUJMRShzZW5kUmVzdWx0KTsKLX0KLQotdm9pZCBSZW1vdGVDb21wdXRl
UGFzc0VuY29kZXJQcm94eTo6ZW5kUGlwZWxpbmVTdGF0aXN0aWNzUXVlcnkoKQotewotICAgIGF1
dG8gc2VuZFJlc3VsdCA9IHNlbmQoTWVzc2FnZXM6OlJlbW90ZUNvbXB1dGVQYXNzRW5jb2Rlcjo6
RW5kUGlwZWxpbmVTdGF0aXN0aWNzUXVlcnkoKSk7Ci0gICAgVU5VU0VEX1ZBUklBQkxFKHNlbmRS
ZXN1bHQpOwotfQotCi12b2lkIFJlbW90ZUNvbXB1dGVQYXNzRW5jb2RlclByb3h5OjplbmRQYXNz
KCkKLXsKLSAgICBhdXRvIHNlbmRSZXN1bHQgPSBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVDb21wdXRl
UGFzc0VuY29kZXI6OkVuZFBhc3MoKSk7CisgICAgYXV0byBzZW5kUmVzdWx0ID0gc2VuZChNZXNz
YWdlczo6UmVtb3RlQ29tcHV0ZVBhc3NFbmNvZGVyOjpFbmQoKSk7CiAgICAgVU5VU0VEX1ZBUklB
QkxFKHNlbmRSZXN1bHQpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvR1BVL2dyYXBoaWNzL1dlYkdQVS9SZW1vdGVDb21wdXRlUGFzc0VuY29kZXJQcm94eS5oIGIv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9XZWJHUFUvUmVtb3RlQ29tcHV0
ZVBhc3NFbmNvZGVyUHJveHkuaAppbmRleCAzZjJkYTc5N2E5Mjk2NWQ3NGJkOTBkNThhYzJmNTg3
NzZmNTQwYzFjLi44N2E5NThjMTc2YTc0MTdhYTAxOTRlNDk0ZjM2ZTgxMjY0OGI2ODVjIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1dlYkdQVS9SZW1v
dGVDb21wdXRlUGFzc0VuY29kZXJQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9HUFUvZ3JhcGhpY3MvV2ViR1BVL1JlbW90ZUNvbXB1dGVQYXNzRW5jb2RlclByb3h5LmgKQEAg
LTczLDEzICs3MywxMCBAQCBwcml2YXRlOgogICAgIH0KIAogICAgIHZvaWQgc2V0UGlwZWxpbmUo
Y29uc3QgUEFMOjpXZWJHUFU6OkNvbXB1dGVQaXBlbGluZSYpIGZpbmFsOwotICAgIHZvaWQgZGlz
cGF0Y2goUEFMOjpXZWJHUFU6OlNpemUzMiB4LCBzdGQ6Om9wdGlvbmFsPFBBTDo6V2ViR1BVOjpT
aXplMzI+IHksIHN0ZDo6b3B0aW9uYWw8UEFMOjpXZWJHUFU6OlNpemUzMj4pIGZpbmFsOworICAg
IHZvaWQgZGlzcGF0Y2goUEFMOjpXZWJHUFU6OlNpemUzMiB3b3JrZ3JvdXBDb3VudFgsIFBBTDo6
V2ViR1BVOjpTaXplMzIgd29ya2dyb3VwQ291bnRZID0gMSwgUEFMOjpXZWJHUFU6OlNpemUzMiB3
b3JrZ3JvdXBDb3VudFogPSAxKSBmaW5hbDsKICAgICB2b2lkIGRpc3BhdGNoSW5kaXJlY3QoY29u
c3QgUEFMOjpXZWJHUFU6OkJ1ZmZlciYgaW5kaXJlY3RCdWZmZXIsIFBBTDo6V2ViR1BVOjpTaXpl
NjQgaW5kaXJlY3RPZmZzZXQpIGZpbmFsOwogCi0gICAgdm9pZCBiZWdpblBpcGVsaW5lU3RhdGlz
dGljc1F1ZXJ5KGNvbnN0IFBBTDo6V2ViR1BVOjpRdWVyeVNldCYsIFBBTDo6V2ViR1BVOjpTaXpl
MzIgcXVlcnlJbmRleCkgZmluYWw7Ci0gICAgdm9pZCBlbmRQaXBlbGluZVN0YXRpc3RpY3NRdWVy
eSgpIGZpbmFsOwotCi0gICAgdm9pZCBlbmRQYXNzKCkgZmluYWw7CisgICAgdm9pZCBlbmQoKSBm
aW5hbDsKIAogICAgIHZvaWQgc2V0QmluZEdyb3VwKFBBTDo6V2ViR1BVOjpJbmRleDMyLCBjb25z
dCBQQUw6OldlYkdQVTo6QmluZEdyb3VwJiwKICAgICAgICAgc3RkOjpvcHRpb25hbDxWZWN0b3I8
UEFMOjpXZWJHUFU6OkJ1ZmZlckR5bmFtaWNPZmZzZXQ+PiYmKSBmaW5hbDsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvV2ViR1BVL1JlbW90ZVF1ZXVl
UHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvV2ViR1BVL1Jl
bW90ZVF1ZXVlUHJveHkuaAppbmRleCA1ZWEyMTAzYzFmZGI5YTJlNTI3MDM1ZGQxNmM0NmQ0NGUy
ZDdkZWMyLi5kYTc3NWQzZTBjYTdjMjZmMDdiNWJhMTkxMjE0NTFiNzVmMDc2NmY5IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1dlYkdQVS9SZW1vdGVR
dWV1ZVByb3h5LmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9X
ZWJHUFUvUmVtb3RlUXVldWVQcm94eS5oCkBAIC04Miw4ICs4Miw4IEBAIHByaXZhdGU6CiAgICAg
ICAgIFBBTDo6V2ViR1BVOjpTaXplNjQgYnVmZmVyT2Zmc2V0LAogICAgICAgICBjb25zdCB2b2lk
KiBzb3VyY2UsCiAgICAgICAgIHNpemVfdCBieXRlTGVuZ3RoLAotICAgICAgICBQQUw6OldlYkdQ
VTo6U2l6ZTY0IGRhdGFPZmZzZXQsCi0gICAgICAgIHN0ZDo6b3B0aW9uYWw8UEFMOjpXZWJHUFU6
OlNpemU2ND4pIGZpbmFsOworICAgICAgICBQQUw6OldlYkdQVTo6U2l6ZTY0IGRhdGFPZmZzZXQg
PSAwLAorICAgICAgICBzdGQ6Om9wdGlvbmFsPFBBTDo6V2ViR1BVOjpTaXplNjQ+ID0gc3RkOjpu
dWxsb3B0KSBmaW5hbDsKIAogICAgIHZvaWQgd3JpdGVUZXh0dXJlKAogICAgICAgICBjb25zdCBQ
QUw6OldlYkdQVTo6SW1hZ2VDb3B5VGV4dHVyZSYgZGVzdGluYXRpb24sCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1dlYkdQVS9SZW1vdGVSZW5kZXJQ
YXNzRW5jb2RlclByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhp
Y3MvV2ViR1BVL1JlbW90ZVJlbmRlclBhc3NFbmNvZGVyUHJveHkuY3BwCmluZGV4IDNlOGY1YTYz
ZjRhZjEyNDcyYjhmMjNmNThmZGYyZDg3YWJmZDM1MDAuLjc4M2ZlMGEwZjg3ODFiMGEwMjg3Njkx
NzVlNTY5MGU4M2Y0YTFmNzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9H
UFUvZ3JhcGhpY3MvV2ViR1BVL1JlbW90ZVJlbmRlclBhc3NFbmNvZGVyUHJveHkuY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvV2ViR1BVL1JlbW90ZVJlbmRl
clBhc3NFbmNvZGVyUHJveHkuY3BwCkBAIC0yMDQsMjMgKzIwNCw2IEBAIHZvaWQgUmVtb3RlUmVu
ZGVyUGFzc0VuY29kZXJQcm94eTo6ZW5kT2NjbHVzaW9uUXVlcnkoKQogICAgIFVOVVNFRF9WQVJJ
QUJMRShzZW5kUmVzdWx0KTsKIH0KIAotdm9pZCBSZW1vdGVSZW5kZXJQYXNzRW5jb2RlclByb3h5
OjpiZWdpblBpcGVsaW5lU3RhdGlzdGljc1F1ZXJ5KGNvbnN0IFBBTDo6V2ViR1BVOjpRdWVyeVNl
dCYgcXVlcnlTZXQsIFBBTDo6V2ViR1BVOjpTaXplMzIgcXVlcnlJbmRleCkKLXsKLSAgICBhdXRv
IGNvbnZlcnRlZFF1ZXJ5U2V0ID0gbV9jb252ZXJ0VG9CYWNraW5nQ29udGV4dC0+Y29udmVydFRv
QmFja2luZyhxdWVyeVNldCk7Ci0gICAgQVNTRVJUKGNvbnZlcnRlZFF1ZXJ5U2V0KTsKLSAgICBp
ZiAoIWNvbnZlcnRlZFF1ZXJ5U2V0KQotICAgICAgICByZXR1cm47Ci0KLSAgICBhdXRvIHNlbmRS
ZXN1bHQgPSBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVSZW5kZXJQYXNzRW5jb2Rlcjo6QmVnaW5QaXBl
bGluZVN0YXRpc3RpY3NRdWVyeShjb252ZXJ0ZWRRdWVyeVNldCwgcXVlcnlJbmRleCkpOwotICAg
IFVOVVNFRF9WQVJJQUJMRShzZW5kUmVzdWx0KTsKLX0KLQotdm9pZCBSZW1vdGVSZW5kZXJQYXNz
RW5jb2RlclByb3h5OjplbmRQaXBlbGluZVN0YXRpc3RpY3NRdWVyeSgpCi17Ci0gICAgYXV0byBz
ZW5kUmVzdWx0ID0gc2VuZChNZXNzYWdlczo6UmVtb3RlUmVuZGVyUGFzc0VuY29kZXI6OkVuZFBp
cGVsaW5lU3RhdGlzdGljc1F1ZXJ5KCkpOwotICAgIFVOVVNFRF9WQVJJQUJMRShzZW5kUmVzdWx0
KTsKLX0KLQogdm9pZCBSZW1vdGVSZW5kZXJQYXNzRW5jb2RlclByb3h5OjpleGVjdXRlQnVuZGxl
cyhWZWN0b3I8c3RkOjpyZWZlcmVuY2Vfd3JhcHBlcjxQQUw6OldlYkdQVTo6UmVuZGVyQnVuZGxl
Pj4mJiByZW5kZXJCdW5kbGVzKQogewogICAgIFZlY3RvcjxXZWJHUFVJZGVudGlmaWVyPiBjb252
ZXJ0ZWRSZW5kZXJCdW5kbGVzOwpAQCAtMjM3LDkgKzIyMCw5IEBAIHZvaWQgUmVtb3RlUmVuZGVy
UGFzc0VuY29kZXJQcm94eTo6ZXhlY3V0ZUJ1bmRsZXMoVmVjdG9yPHN0ZDo6cmVmZXJlbmNlX3dy
YXBwZXI8CiAgICAgVU5VU0VEX1ZBUklBQkxFKHNlbmRSZXN1bHQpOwogfQogCi12b2lkIFJlbW90
ZVJlbmRlclBhc3NFbmNvZGVyUHJveHk6OmVuZFBhc3MoKQordm9pZCBSZW1vdGVSZW5kZXJQYXNz
RW5jb2RlclByb3h5OjplbmQoKQogewotICAgIGF1dG8gc2VuZFJlc3VsdCA9IHNlbmQoTWVzc2Fn
ZXM6OlJlbW90ZVJlbmRlclBhc3NFbmNvZGVyOjpFbmRQYXNzKCkpOworICAgIGF1dG8gc2VuZFJl
c3VsdCA9IHNlbmQoTWVzc2FnZXM6OlJlbW90ZVJlbmRlclBhc3NFbmNvZGVyOjpFbmQoKSk7CiAg
ICAgVU5VU0VEX1ZBUklBQkxFKHNlbmRSZXN1bHQpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1dlYkdQVS9SZW1vdGVSZW5kZXJQYXNzRW5j
b2RlclByb3h5LmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1dlYkdQ
VS9SZW1vdGVSZW5kZXJQYXNzRW5jb2RlclByb3h5LmgKaW5kZXggZTVmNjkzZDhjOGViZjZlOTA1
ZDkxNDJlMGQzZWJlNzM0YzE4NGMzNy4uZmM1YjU5NmY1YmE4ZGNmN2M4YjU2NTJjYmQ3NThiMTA0
ZTk1ZDk0ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGlj
cy9XZWJHUFUvUmVtb3RlUmVuZGVyUGFzc0VuY29kZXJQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvV2ViR1BVL1JlbW90ZVJlbmRlclBhc3NFbmNvZGVy
UHJveHkuaApAQCAtMTEzLDExICsxMTMsOCBAQCBwcml2YXRlOgogICAgIHZvaWQgYmVnaW5PY2Ns
dXNpb25RdWVyeShQQUw6OldlYkdQVTo6U2l6ZTMyIHF1ZXJ5SW5kZXgpIGZpbmFsOwogICAgIHZv
aWQgZW5kT2NjbHVzaW9uUXVlcnkoKSBmaW5hbDsKIAotICAgIHZvaWQgYmVnaW5QaXBlbGluZVN0
YXRpc3RpY3NRdWVyeShjb25zdCBQQUw6OldlYkdQVTo6UXVlcnlTZXQmLCBQQUw6OldlYkdQVTo6
U2l6ZTMyIHF1ZXJ5SW5kZXgpIGZpbmFsOwotICAgIHZvaWQgZW5kUGlwZWxpbmVTdGF0aXN0aWNz
UXVlcnkoKSBmaW5hbDsKLQogICAgIHZvaWQgZXhlY3V0ZUJ1bmRsZXMoVmVjdG9yPHN0ZDo6cmVm
ZXJlbmNlX3dyYXBwZXI8UEFMOjpXZWJHUFU6OlJlbmRlckJ1bmRsZT4+JiYpIGZpbmFsOwotICAg
IHZvaWQgZW5kUGFzcygpIGZpbmFsOworICAgIHZvaWQgZW5kKCkgZmluYWw7CiAKICAgICB2b2lk
IHNldExhYmVsSW50ZXJuYWwoY29uc3QgU3RyaW5nJikgZmluYWw7CiAK
</data>

          </attachment>
      

    </bug>

</bugzilla>