<?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>232551</bug_id>
          
          <creation_ts>2021-10-31 19:47:57 -0700</creation_ts>
          <short_desc>[GPU Process] [Filters 5/23] Remove the reference to Filter from FilterEffect</short_desc>
          <delta_ts>2021-11-29 21:38:12 -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>Layout and Rendering</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>231253</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Said Abou-Hallawa">sabouhallawa</reporter>
          <assigned_to name="Said Abou-Hallawa">sabouhallawa</assigned_to>
          <cc>bfulgham</cc>
    
    <cc>changseok</cc>
    
    <cc>dino</cc>
    
    <cc>eric.carlson</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>fmalita</cc>
    
    <cc>fred.wang</cc>
    
    <cc>glenn</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>heycam</cc>
    
    <cc>hta</cc>
    
    <cc>jer.noble</cc>
    
    <cc>kondapallykalyan</cc>
    
    <cc>macpherson</cc>
    
    <cc>menard</cc>
    
    <cc>pdr</cc>
    
    <cc>philipj</cc>
    
    <cc>schenney</cc>
    
    <cc>sergio</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>tommyw</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>zalan</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1810538</commentid>
    <comment_count>0</comment_count>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2021-10-31 19:47:57 -0700</bug_when>
    <thetext>Instead of having a reference to the Filter in the FilterEffect, we are going to pass a reference to the Filter to the FilterEffect functions only when needed. These are the FilterEffect functions that need have access to the Filter:

determineFilterPrimitiveSubregion()
determineAbsolutePaintRect()
platformApplySoftware()</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1810539</commentid>
    <comment_count>1</comment_count>
      <attachid>442947</attachid>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2021-10-31 20:03:26 -0700</bug_when>
    <thetext>Created attachment 442947
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1810552</commentid>
    <comment_count>2</comment_count>
      <attachid>442955</attachid>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2021-10-31 22:12:24 -0700</bug_when>
    <thetext>Created attachment 442955
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1810554</commentid>
    <comment_count>3</comment_count>
      <attachid>442957</attachid>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2021-10-31 22:19:22 -0700</bug_when>
    <thetext>Created attachment 442957
Patch for review</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1812523</commentid>
    <comment_count>4</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2021-11-07 18:48:19 -0800</bug_when>
    <thetext>&lt;rdar://problem/85136447&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1813925</commentid>
    <comment_count>5</comment_count>
      <attachid>443914</attachid>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2021-11-10 23:07:29 -0800</bug_when>
    <thetext>Created attachment 443914
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1813934</commentid>
    <comment_count>6</comment_count>
      <attachid>443917</attachid>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2021-11-10 23:53:53 -0800</bug_when>
    <thetext>Created attachment 443917
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1814828</commentid>
    <comment_count>7</comment_count>
      <attachid>443917</attachid>
    <who name="Cameron McCormack (:heycam)">heycam</who>
    <bug_when>2021-11-13 20:27:55 -0800</bug_when>
    <thetext>Comment on attachment 443917
Patch

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

Refactoring looks OK. A couple of questions below.

&gt; Source/WebCore/ChangeLog:17
&gt; +        Instead of having a reference to the Filter in the FilterEffect, we are
&gt; +        going to pass a reference to the Filter to the FilterEffect functions
&gt; +        only when needed. FilterEffect may need access to the Filter only in two
&gt; +        methods: determineAbsolutePaintRect() and platformApplySoftware().
&gt; +
&gt; +        We need to change all the FilterEffect create methods to not take a Filter
&gt; +        as input. This requires the SVG filter effect elements to change their
&gt; +        build() method. And it requires also CSSFilter to not pass itself to the
&gt; +        FilterEffects its create.

Please mention why we want to do this refactoring. (Mention something about how it&apos;s removing an unnecessary dependency of individual FilterEffects on the Filter object, which makes it easier to send the filter description over IPC.)

&gt; Source/WebCore/platform/graphics/filters/FETurbulence.h:96
&gt; +        const Filter* filter;
&gt; +        FETurbulence* effect;

I guess these can&apos;t be references because the object is created uninitialized by ParallelJobs?

&gt; Source/WebCore/platform/graphics/filters/FilterEffect.cpp:424
&gt; +    auto buffer = ImageBuffer::create(clampedSize, RenderingMode::Unaccelerated, 1, operatingColorSpace(), PixelFormat::BGRA8);

I suppose this is an intermediate stage, and by the end of the patch queue the page &quot;use accelerated buffers for filters&quot; setting will be honored again?

What will be the behavior for ports that don&apos;t use the GPU process? Will it be a regression that they will use an unaccelerated buffer for filters?

&gt; Source/WebCore/rendering/CSSFilter.cpp:240
&gt; +    RefPtr&lt;FilterEffect&gt; previousEffect = SourceGraphic::create();

auto

&gt; Source/WebCore/rendering/CSSFilter.cpp:415
&gt; -    effect-&gt;apply();
&gt; +
&gt; +    for (auto&amp; function : m_functions) {

Is this a behavior change, or does it not matter which order you call apply() on the filter functions?

&gt; Source/WebCore/rendering/CSSFilter.cpp:417
&gt; +            downcast&lt;SVGFilter&gt;(function.ptr())-&gt;setSourceImage({ sourceImage() });

Maybe downcasting on the reference is better:

```
downcast&lt;SVGFilter&gt;(function.get()).setSourceImage(...);
```

(and the following two downcasts)

&gt; Source/WebCore/rendering/svg/RenderSVGResourceFilter.cpp:239
&gt; -            lastEffect-&gt;apply();
&gt; +            filterData.filter-&gt;apply();

Same question here: what&apos;s the effect of this change?

&gt; Source/WebCore/svg/SVGFEImageElement.cpp:214
&gt; +        return FEImage::create(Ref&lt;Image&gt; { *m_cachedImage-&gt;imageForRenderer(renderer()) }, preserveAspectRatio());

These days you can leave the `&lt;Image&gt;` off and just write `Ref { *m_cachedImage ... }`.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1814845</commentid>
    <comment_count>8</comment_count>
      <attachid>443917</attachid>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2021-11-14 01:46:11 -0800</bug_when>
    <thetext>Comment on attachment 443917
Patch

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

&gt;&gt; Source/WebCore/ChangeLog:17
&gt;&gt; +        FilterEffects its create.
&gt; 
&gt; Please mention why we want to do this refactoring. (Mention something about how it&apos;s removing an unnecessary dependency of individual FilterEffects on the Filter object, which makes it easier to send the filter description over IPC.)

Done.

&gt;&gt; Source/WebCore/platform/graphics/filters/FETurbulence.h:96
&gt;&gt; +        FETurbulence* effect;
&gt; 
&gt; I guess these can&apos;t be references because the object is created uninitialized by ParallelJobs?

Yes this is correct. This code should be cleaned up when the software filter code is moved to separate files.

&gt;&gt; Source/WebCore/platform/graphics/filters/FilterEffect.cpp:424
&gt;&gt; +    auto buffer = ImageBuffer::create(clampedSize, RenderingMode::Unaccelerated, 1, operatingColorSpace(), PixelFormat::BGRA8);
&gt; 
&gt; I suppose this is an intermediate stage, and by the end of the patch queue the page &quot;use accelerated buffers for filters&quot; setting will be honored again?
&gt; 
&gt; What will be the behavior for ports that don&apos;t use the GPU process? Will it be a regression that they will use an unaccelerated buffer for filters?

Yes this is correct. I mentioned in the ChangeLog above that this is going to change in the next patch. But I will add a FIXME comment also saying this is intermediate stage and should be fixed soon. But this should not affect the software filter since we always create the result ImageBuffer with RenderingMode::Unaccelerated. The CoreImage filters have to create the intermediate ImageBuffers with RenderingMode::Accelerated. But currently CoreImage filters have different code paths from this one.

&gt;&gt; Source/WebCore/rendering/CSSFilter.cpp:240
&gt;&gt; +    RefPtr&lt;FilterEffect&gt; previousEffect = SourceGraphic::create();
&gt; 
&gt; auto

SourceGraphic::create() returns a Ref&lt;SourceGraphic&gt;. Using auto will set the type of previousEffect to Ref&lt;SourceGraphic&gt;. This will make it difficult to assign it to any other FilterEffect. And more importantly to need to nullify it with the reference filter case.

&gt;&gt; Source/WebCore/rendering/CSSFilter.cpp:415
&gt;&gt; +    for (auto&amp; function : m_functions) {
&gt; 
&gt; Is this a behavior change, or does it not matter which order you call apply() on the filter functions?

No this is not behavior change. Applying the lastEffect will keep applying its inputs recursively before applying itself till we reach to the SourceGraphic which is the first entry in m_functions.

&gt;&gt; Source/WebCore/rendering/CSSFilter.cpp:417
&gt;&gt; +            downcast&lt;SVGFilter&gt;(function.ptr())-&gt;setSourceImage({ sourceImage() });
&gt; 
&gt; Maybe downcasting on the reference is better:
&gt; 
&gt; ```
&gt; downcast&lt;SVGFilter&gt;(function.get()).setSourceImage(...);
&gt; ```
&gt; 
&gt; (and the following two downcasts)

Done.

&gt;&gt; Source/WebCore/rendering/svg/RenderSVGResourceFilter.cpp:239
&gt;&gt; +            filterData.filter-&gt;apply();
&gt; 
&gt; Same question here: what&apos;s the effect of this change?

No it is not a behavior change. This is what SVGFilter::apply will do:

void SVGFilter::apply()
{
    m_lastEffect-&gt;apply(*this);
}

The plan is to change this function by applying the first FilterEffect till we reach the lastEffect. The goal is we do not need to store FilterEffect geometry. We always apply the FilterEffect forward. We will do the calculation of the input FilterEffects first and send these calculation to FilterEffect::apply().

&gt;&gt; Source/WebCore/svg/SVGFEImageElement.cpp:214
&gt;&gt; +        return FEImage::create(Ref&lt;Image&gt; { *m_cachedImage-&gt;imageForRenderer(renderer()) }, preserveAspectRatio());
&gt; 
&gt; These days you can leave the `&lt;Image&gt;` off and just write `Ref { *m_cachedImage ... }`.

Done.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1814846</commentid>
    <comment_count>9</comment_count>
      <attachid>444172</attachid>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2021-11-14 01:47:13 -0800</bug_when>
    <thetext>Created attachment 444172
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1814937</commentid>
    <comment_count>10</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2021-11-14 18:45:37 -0800</bug_when>
    <thetext>Committed r285796 (244240@main): &lt;https://commits.webkit.org/244240@main&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 444172.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>442947</attachid>
            <date>2021-10-31 20:03:26 -0700</date>
            <delta_ts>2021-10-31 22:12:20 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-232551-20211031200325.patch</filename>
            <type>text/plain</type>
            <size>255830</size>
            <attacher name="Said Abou-Hallawa">sabouhallawa</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg1MDkwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNThhYWY0ZTJkZGNjNTQy
YmJmNmYyYTdhZDhjZGU4YjZhODAyYWE3Mi4uMDZiYjE2NTY1ZTY0NDRiNmIxYzMxZWViMmIwZDM5
NDZlNjA3NDdiZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDU4OCBAQAorMjAyMS0xMC0zMSAgU2Fp
ZCBBYm91LUhhbGxhd2EgIDxzYWlkQGFwcGxlLmNvbT4KKworICAgICAgICBbR1BVIFByb2Nlc3Nd
IFJlbW92ZSB0aGUgcmVmZXJlbmNlIHRvIEZpbHRlciBmcm9tIEZpbHRlckVmZmVjdAorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjMyNTUxCisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgSW5zdGVhZCBvZiBoYXZp
bmcgYSByZWZlcmVuY2UgdG8gdGhlIEZpbHRlciBpbiB0aGUgRmlsdGVyRWZmZWN0LCB3ZSBhcmUK
KyAgICAgICAgZ29pbmcgdG8gcGFzcyBhIHJlZmVyZW5jZSB0byB0aGUgRmlsdGVyIHRvIHRoZSBG
aWx0ZXJFZmZlY3QgZnVuY3Rpb25zCisgICAgICAgIG9ubHkgd2hlbiBuZWVkZWQuCisKKyAgICAg
ICAgKiBjc3MvQ1NTRmlsdGVySW1hZ2VWYWx1ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDU1NG
aWx0ZXJJbWFnZVZhbHVlOjppbWFnZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY29y
ZWltYWdlL0ZpbHRlckVmZmVjdFJlbmRlcmVyQ29yZUltYWdlLmg6CisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvY29yZWltYWdlL0ZpbHRlckVmZmVjdFJlbmRlcmVyQ29yZUltYWdlLm1tOgor
ICAgICAgICAoV2ViQ29yZTo6RmlsdGVyRWZmZWN0UmVuZGVyZXJDb3JlSW1hZ2U6OnN1cHBvcnRz
Q29yZUltYWdlUmVuZGVyaW5nKToKKyAgICAgICAgKFdlYkNvcmU6OkZpbHRlckVmZmVjdFJlbmRl
cmVyQ29yZUltYWdlOjphcHBseUVmZmVjdHMpOgorICAgICAgICAoV2ViQ29yZTo6RmlsdGVyRWZm
ZWN0UmVuZGVyZXJDb3JlSW1hZ2U6OmNvbm5lY3RDSUZpbHRlcnMpOgorICAgICAgICAqIHBsYXRm
b3JtL2dyYXBoaWNzL2NwdS9hcm0vZmlsdGVycy9GRUJsZW5kTkVPTi5oOgorICAgICAgICAoV2Vi
Q29yZTo6RkVCbGVuZDo6cGxhdGZvcm1BcHBseVNvZnR3YXJlKToKKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy9maWx0ZXJzL0ZFQmxlbmQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RkVCbGVu
ZDo6RkVCbGVuZCk6CisgICAgICAgIChXZWJDb3JlOjpGRUJsZW5kOjpjcmVhdGUpOgorICAgICAg
ICAoV2ViQ29yZTo6RkVCbGVuZDo6cGxhdGZvcm1BcHBseVNvZnR3YXJlKToKKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFQmxlbmQuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy9maWx0ZXJzL0ZFQ29sb3JNYXRyaXguY3BwOgorICAgICAgICAoV2ViQ29yZTo6RkVD
b2xvck1hdHJpeDo6RkVDb2xvck1hdHJpeCk6CisgICAgICAgIChXZWJDb3JlOjpGRUNvbG9yTWF0
cml4OjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6RkVDb2xvck1hdHJpeDo6cGxhdGZvcm1B
cHBseVNvZnR3YXJlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFQ29s
b3JNYXRyaXguaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFQ29tcG9u
ZW50VHJhbnNmZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RkVDb21wb25lbnRUcmFuc2Zlcjo6
RkVDb21wb25lbnRUcmFuc2Zlcik6CisgICAgICAgIChXZWJDb3JlOjpGRUNvbXBvbmVudFRyYW5z
ZmVyOjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6RkVDb21wb25lbnRUcmFuc2Zlcjo6cGxh
dGZvcm1BcHBseVNvZnR3YXJlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJz
L0ZFQ29tcG9uZW50VHJhbnNmZXIuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9maWx0
ZXJzL0ZFQ29tcG9zaXRlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZFQ29tcG9zaXRlOjpGRUNv
bXBvc2l0ZSk6CisgICAgICAgIChXZWJDb3JlOjpGRUNvbXBvc2l0ZTo6Y3JlYXRlKToKKyAgICAg
ICAgKFdlYkNvcmU6OkZFQ29tcG9zaXRlOjpkZXRlcm1pbmVBYnNvbHV0ZVBhaW50UmVjdCk6Cisg
ICAgICAgIChXZWJDb3JlOjpGRUNvbXBvc2l0ZTo6cGxhdGZvcm1BcHBseVNvZnR3YXJlKToKKyAg
ICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFQ29tcG9zaXRlLmg6CisgICAgICAg
ICogcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRUNvbnZvbHZlTWF0cml4LmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkZFQ29udm9sdmVNYXRyaXg6OkZFQ29udm9sdmVNYXRyaXgpOgorICAgICAg
ICAoV2ViQ29yZTo6RkVDb252b2x2ZU1hdHJpeDo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6
OkZFQ29udm9sdmVNYXRyaXg6OnBsYXRmb3JtQXBwbHlTb2Z0d2FyZSk6CisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRUNvbnZvbHZlTWF0cml4Lmg6CisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRURpZmZ1c2VMaWdodGluZy5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpGRURpZmZ1c2VMaWdodGluZzo6RkVEaWZmdXNlTGlnaHRpbmcpOgorICAgICAgICAo
V2ViQ29yZTo6RkVEaWZmdXNlTGlnaHRpbmc6OmNyZWF0ZSk6CisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3MvZmlsdGVycy9GRURpZmZ1c2VMaWdodGluZy5oOgorICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL2ZpbHRlcnMvRkVEaXNwbGFjZW1lbnRNYXAuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6RkVEaXNwbGFjZW1lbnRNYXA6OkZFRGlzcGxhY2VtZW50TWFwKToKKyAgICAgICAgKFdlYkNv
cmU6OkZFRGlzcGxhY2VtZW50TWFwOjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6RkVEaXNw
bGFjZW1lbnRNYXA6OnBsYXRmb3JtQXBwbHlTb2Z0d2FyZSk6CisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3MvZmlsdGVycy9GRURpc3BsYWNlbWVudE1hcC5oOgorICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL2ZpbHRlcnMvRkVEcm9wU2hhZG93LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZF
RHJvcFNoYWRvdzo6RkVEcm9wU2hhZG93KToKKyAgICAgICAgKFdlYkNvcmU6OkZFRHJvcFNoYWRv
dzo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkZFRHJvcFNoYWRvdzo6ZGV0ZXJtaW5lQWJz
b2x1dGVQYWludFJlY3QpOgorICAgICAgICAoV2ViQ29yZTo6RkVEcm9wU2hhZG93OjpwbGF0Zm9y
bUFwcGx5U29mdHdhcmUpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVE
cm9wU2hhZG93Lmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRUZsb29k
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZFRmxvb2Q6OkZFRmxvb2QpOgorICAgICAgICAoV2Vi
Q29yZTo6RkVGbG9vZDo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkZFRmxvb2Q6OnBsYXRm
b3JtQXBwbHlTb2Z0d2FyZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9G
RUZsb29kLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRUdhdXNzaWFu
Qmx1ci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGRUdhdXNzaWFuQmx1cjo6RkVHYXVzc2lhbkJs
dXIpOgorICAgICAgICAoV2ViQ29yZTo6RkVHYXVzc2lhbkJsdXI6OmNyZWF0ZSk6CisgICAgICAg
IChXZWJDb3JlOjpGRUdhdXNzaWFuQmx1cjo6Y2FsY3VsYXRlS2VybmVsU2l6ZSk6CisgICAgICAg
IChXZWJDb3JlOjpGRUdhdXNzaWFuQmx1cjo6ZGV0ZXJtaW5lQWJzb2x1dGVQYWludFJlY3QpOgor
ICAgICAgICAoV2ViQ29yZTo6RkVHYXVzc2lhbkJsdXI6OnBsYXRmb3JtQXBwbHlTb2Z0d2FyZSk6
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRUdhdXNzaWFuQmx1ci5oOgor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVMaWdodGluZy5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpGRUxpZ2h0aW5nOjpGRUxpZ2h0aW5nKToKKyAgICAgICAgKFdlYkNvcmU6
OkZFTGlnaHRpbmc6OnBsYXRmb3JtQXBwbHlTb2Z0d2FyZSk6CisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3MvZmlsdGVycy9GRUxpZ2h0aW5nLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3MvZmlsdGVycy9GRU1lcmdlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZFTWVyZ2U6OkZFTWVy
Z2UpOgorICAgICAgICAoV2ViQ29yZTo6RkVNZXJnZTo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNv
cmU6OkZFTWVyZ2U6OnBsYXRmb3JtQXBwbHlTb2Z0d2FyZSk6CisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3MvZmlsdGVycy9GRU1lcmdlLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
ZmlsdGVycy9GRU1vcnBob2xvZ3kuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RkVNb3JwaG9sb2d5
OjpGRU1vcnBob2xvZ3kpOgorICAgICAgICAoV2ViQ29yZTo6RkVNb3JwaG9sb2d5OjpjcmVhdGUp
OgorICAgICAgICAoV2ViQ29yZTo6RkVNb3JwaG9sb2d5OjpkZXRlcm1pbmVBYnNvbHV0ZVBhaW50
UmVjdCk6CisgICAgICAgIChXZWJDb3JlOjpGRU1vcnBob2xvZ3k6OnBsYXRmb3JtQXBwbHlTb2Z0
d2FyZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRU1vcnBob2xvZ3ku
aDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFT2Zmc2V0LmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkZFT2Zmc2V0OjpGRU9mZnNldCk6CisgICAgICAgIChXZWJDb3JlOjpG
RU9mZnNldDo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkZFT2Zmc2V0OjpkZXRlcm1pbmVB
YnNvbHV0ZVBhaW50UmVjdCk6CisgICAgICAgIChXZWJDb3JlOjpGRU9mZnNldDo6cGxhdGZvcm1B
cHBseVNvZnR3YXJlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFT2Zm
c2V0Lmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRVNwZWN1bGFyTGln
aHRpbmcuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RkVTcGVjdWxhckxpZ2h0aW5nOjpGRVNwZWN1
bGFyTGlnaHRpbmcpOgorICAgICAgICAoV2ViQ29yZTo6RkVTcGVjdWxhckxpZ2h0aW5nOjpjcmVh
dGUpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVTcGVjdWxhckxpZ2h0
aW5nLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRVRpbGUuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6RkVUaWxlOjpGRVRpbGUpOgorICAgICAgICAoV2ViQ29yZTo6RkVU
aWxlOjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6RkVUaWxlOjpwbGF0Zm9ybUFwcGx5U29m
dHdhcmUpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVUaWxlLmg6Cisg
ICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRVR1cmJ1bGVuY2UuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6RkVUdXJidWxlbmNlOjpGRVR1cmJ1bGVuY2UpOgorICAgICAgICAoV2Vi
Q29yZTo6RkVUdXJidWxlbmNlOjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6RkVUdXJidWxl
bmNlOjpmaWxsUmVnaW9uIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkZFVHVyYnVsZW5jZTo6
ZmlsbFJlZ2lvbldvcmtlcik6CisgICAgICAgIChXZWJDb3JlOjpGRVR1cmJ1bGVuY2U6OnBsYXRm
b3JtQXBwbHlTb2Z0d2FyZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9G
RVR1cmJ1bGVuY2UuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZpbHRl
ci5oOgorICAgICAgICAoV2ViQ29yZTo6RmlsdGVyOjphcHBseUZpbHRlcik6CisgICAgICAgIChX
ZWJDb3JlOjpGaWx0ZXI6OnNvdXJjZUltYWdlIGNvbnN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy9maWx0ZXJzL0ZpbHRlckVmZmVjdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGaWx0
ZXJFZmZlY3Q6OkZpbHRlckVmZmVjdCk6CisgICAgICAgIChXZWJDb3JlOjpGaWx0ZXJFZmZlY3Q6
OmRldGVybWluZUFic29sdXRlUGFpbnRSZWN0KToKKyAgICAgICAgKFdlYkNvcmU6OkZpbHRlckVm
ZmVjdDo6ZGV0ZXJtaW5lRmlsdGVyUHJpbWl0aXZlU3VicmVnaW9uKToKKyAgICAgICAgKFdlYkNv
cmU6OkZpbHRlckVmZmVjdDo6YXBwbHkpOgorICAgICAgICAoV2ViQ29yZTo6RmlsdGVyRWZmZWN0
OjppbWFnZUJ1ZmZlclJlc3VsdCk6CisgICAgICAgIChXZWJDb3JlOjpGaWx0ZXJFZmZlY3Q6OnVu
bXVsdGlwbGllZFJlc3VsdCk6CisgICAgICAgIChXZWJDb3JlOjpGaWx0ZXJFZmZlY3Q6OnByZW11
bHRpcGxpZWRSZXN1bHQpOgorICAgICAgICAoV2ViQ29yZTo6RmlsdGVyRWZmZWN0Ojpjb3B5SW1h
Z2VCeXRlcyBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpGaWx0ZXJFZmZlY3Q6OmNvbnZlcnRQ
aXhlbEJ1ZmZlclRvQ29sb3JTcGFjZSk6CisgICAgICAgIChXZWJDb3JlOjpGaWx0ZXJFZmZlY3Q6
OmNvbnZlcnRJbWFnZUJ1ZmZlclRvQ29sb3JTcGFjZSk6CisgICAgICAgIChXZWJDb3JlOjpGaWx0
ZXJFZmZlY3Q6OmNvcHlVbm11bHRpcGxpZWRSZXN1bHQpOgorICAgICAgICAoV2ViQ29yZTo6Rmls
dGVyRWZmZWN0Ojpjb3B5UHJlbXVsdGlwbGllZFJlc3VsdCk6CisgICAgICAgIChXZWJDb3JlOjpG
aWx0ZXJFZmZlY3Q6OmNyZWF0ZUltYWdlQnVmZmVyUmVzdWx0KToKKyAgICAgICAgKFdlYkNvcmU6
OkZpbHRlckVmZmVjdDo6Y3JlYXRlVW5tdWx0aXBsaWVkSW1hZ2VSZXN1bHQpOgorICAgICAgICAo
V2ViQ29yZTo6RmlsdGVyRWZmZWN0OjpjcmVhdGVQcmVtdWx0aXBsaWVkSW1hZ2VSZXN1bHQpOgor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRmlsdGVyRWZmZWN0Lmg6CisgICAg
ICAgIChXZWJDb3JlOjpGaWx0ZXJFZmZlY3Q6OmZpbHRlcik6IERlbGV0ZWQuCisgICAgICAgIChX
ZWJDb3JlOjpGaWx0ZXJFZmZlY3Q6OmZpbHRlciBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GaWx0ZXJFZmZlY3RSZW5kZXJlci5oOgorICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRmlsdGVyRnVuY3Rpb24uY3BwOiBBZGRlZC4K
KyAgICAgICAgKFdlYkNvcmU6OkZpbHRlckZ1bmN0aW9uOjpGaWx0ZXJGdW5jdGlvbik6CisgICAg
ICAgIChXZWJDb3JlOjpmaWx0ZXJOYW1lcyk6CisgICAgICAgIChXZWJDb3JlOjpGaWx0ZXJGdW5j
dGlvbjo6ZmlsdGVyTmFtZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9G
aWx0ZXJGdW5jdGlvbi5oOgorICAgICAgICAoV2ViQ29yZTo6RmlsdGVyRnVuY3Rpb246OmFwcGx5
KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL1NvdXJjZUFscGhhLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OlNvdXJjZUFscGhhOjpTb3VyY2VBbHBoYSk6CisgICAgICAgIChX
ZWJDb3JlOjpTb3VyY2VBbHBoYTo6ZGV0ZXJtaW5lQWJzb2x1dGVQYWludFJlY3QpOgorICAgICAg
ICAoV2ViQ29yZTo6U291cmNlQWxwaGE6OnBsYXRmb3JtQXBwbHlTb2Z0d2FyZSk6CisgICAgICAg
IChXZWJDb3JlOjpTb3VyY2VBbHBoYTo6ZWZmZWN0TmFtZSk6IERlbGV0ZWQuCisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9Tb3VyY2VBbHBoYS5oOgorICAgICAgICAoV2ViQ29y
ZTo6U291cmNlQWxwaGE6OmVmZmVjdE5hbWUpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L2ZpbHRlcnMvU291cmNlR3JhcGhpYy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTb3VyY2VHcmFw
aGljOjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6U291cmNlR3JhcGhpYzo6U291cmNlR3Jh
cGhpYyk6CisgICAgICAgIChXZWJDb3JlOjpTb3VyY2VHcmFwaGljOjpkZXRlcm1pbmVBYnNvbHV0
ZVBhaW50UmVjdCk6CisgICAgICAgIChXZWJDb3JlOjpTb3VyY2VHcmFwaGljOjpwbGF0Zm9ybUFw
cGx5U29mdHdhcmUpOgorICAgICAgICAoV2ViQ29yZTo6U291cmNlR3JhcGhpYzo6ZWZmZWN0TmFt
ZSk6IERlbGV0ZWQuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9Tb3VyY2VH
cmFwaGljLmg6CisgICAgICAgIChXZWJDb3JlOjpTb3VyY2VHcmFwaGljOjplZmZlY3ROYW1lKToK
KyAgICAgICAgKFdlYkNvcmU6OlNvdXJjZUdyYXBoaWM6OlNvdXJjZUdyYXBoaWMpOiBEZWxldGVk
LgorICAgICAgICAoKTogRGVsZXRlZC4KKyAgICAgICAgKGlzVHlwZSk6IERlbGV0ZWQuCisgICAg
ICAgICogcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL1JlYWx0aW1lSW5jb21pbmdBdWRpb1NvdXJj
ZUNvY29hLmNwcDoKKyAgICAgICAgKiByZW5kZXJpbmcvQ1NTRmlsdGVyLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkNTU0ZpbHRlcjo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU0ZpbHRl
cjo6Q1NTRmlsdGVyKToKKyAgICAgICAgKFdlYkNvcmU6Om1fc291cmNlR3JhcGhpYyk6CisgICAg
ICAgIChXZWJDb3JlOjpjcmVhdGVCbHVyRWZmZWN0KToKKyAgICAgICAgKFdlYkNvcmU6OmNyZWF0
ZUJyaWdodG5lc3NFZmZlY3QpOgorICAgICAgICAoV2ViQ29yZTo6Y3JlYXRlQ29udHJhc3RFZmZl
Y3QpOgorICAgICAgICAoV2ViQ29yZTo6Y3JlYXRlRHJvcFNoYWRvd0VmZmVjdCk6CisgICAgICAg
IChXZWJDb3JlOjpjcmVhdGVHcmF5U2NhbGVFZmZlY3QpOgorICAgICAgICAoV2ViQ29yZTo6Y3Jl
YXRlSHVlUm90YXRlRWZmZWN0KToKKyAgICAgICAgKFdlYkNvcmU6OmNyZWF0ZUludmVydEVmZmVj
dCk6CisgICAgICAgIChXZWJDb3JlOjpjcmVhdGVPcGFjaXR5RWZmZWN0KToKKyAgICAgICAgKFdl
YkNvcmU6OmNyZWF0ZVNhdHVyYXRlRWZmZWN0KToKKyAgICAgICAgKFdlYkNvcmU6OmNyZWF0ZVNl
cGlhRWZmZWN0KToKKyAgICAgICAgKFdlYkNvcmU6OmNyZWF0ZVNWR0ZpbHRlcik6CisgICAgICAg
IChXZWJDb3JlOjpzZXR1cExhc3RFZmZlY3RQcm9wZXJ0aWVzKToKKyAgICAgICAgKFdlYkNvcmU6
OkNTU0ZpbHRlcjo6YnVpbGQpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTRmlsdGVyOjppbnB1dENv
bnRleHQpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTRmlsdGVyOjphbGxvY2F0ZUJhY2tpbmdTdG9y
ZUlmTmVlZGVkKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU0ZpbHRlcjo6bGFzdEVmZmVjdCk6Cisg
ICAgICAgIChXZWJDb3JlOjpDU1NGaWx0ZXI6OmRldGVybWluZUZpbHRlclByaW1pdGl2ZVN1YnJl
Z2lvbik6CisgICAgICAgIChXZWJDb3JlOjpDU1NGaWx0ZXI6OmNsZWFySW50ZXJtZWRpYXRlUmVz
dWx0cyk6CisgICAgICAgIChXZWJDb3JlOjpDU1NGaWx0ZXI6OmFwcGx5RmlsdGVyKToKKyAgICAg
ICAgKFdlYkNvcmU6OkNTU0ZpbHRlcjo6b3V0cHV0KToKKyAgICAgICAgKFdlYkNvcmU6OkNTU0Zp
bHRlcjo6c2V0U291cmNlSW1hZ2VSZWN0KToKKyAgICAgICAgKFdlYkNvcmU6OkNTU0ZpbHRlcjo6
b3V0cHV0UmVjdCk6CisgICAgICAgIChXZWJDb3JlOjpDU1NGaWx0ZXI6Om91dHNldHMgY29uc3Qp
OgorICAgICAgICAoV2ViQ29yZTo6Q1NTRmlsdGVyOjpidWlsZFJlZmVyZW5jZUZpbHRlcik6IERl
bGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpDU1NGaWx0ZXI6OmFwcGx5KTogRGVsZXRlZC4KKyAg
ICAgICAgKFdlYkNvcmU6OkNTU0ZpbHRlcjo6b3V0cHV0IGNvbnN0KTogRGVsZXRlZC4KKyAgICAg
ICAgKFdlYkNvcmU6OkNTU0ZpbHRlcjo6c2V0TWF4RWZmZWN0UmVjdHMpOiBEZWxldGVkLgorICAg
ICAgICAoV2ViQ29yZTo6Q1NTRmlsdGVyOjpvdXRwdXRSZWN0IGNvbnN0KTogRGVsZXRlZC4KKyAg
ICAgICAgKiByZW5kZXJpbmcvQ1NTRmlsdGVyLmg6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRl
ckxheWVyRmlsdGVycy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJMYXllckZpbHRlcnM6
OmJlZ2luRmlsdGVyRWZmZWN0KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxheWVyRmlsdGVy
czo6YXBwbHlGaWx0ZXJFZmZlY3QpOgorICAgICAgICAqIHJlbmRlcmluZy9zdmcvUmVuZGVyU1ZH
UmVzb3VyY2VGaWx0ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU1ZHUmVzb3VyY2VG
aWx0ZXI6OmFwcGx5UmVzb3VyY2UpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU1ZHUmVzb3Vy
Y2VGaWx0ZXI6OnBvc3RBcHBseVJlc291cmNlKToKKyAgICAgICAgKiBzdmcvU1ZHRkVCbGVuZEVs
ZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHRkVCbGVuZEVsZW1lbnQ6OmJ1aWxkIGNv
bnN0KToKKyAgICAgICAgKiBzdmcvU1ZHRkVCbGVuZEVsZW1lbnQuaDoKKyAgICAgICAgKiBzdmcv
U1ZHRkVDb2xvck1hdHJpeEVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHRkVDb2xv
ck1hdHJpeEVsZW1lbnQ6OmJ1aWxkIGNvbnN0KToKKyAgICAgICAgKiBzdmcvU1ZHRkVDb2xvck1h
dHJpeEVsZW1lbnQuaDoKKyAgICAgICAgKiBzdmcvU1ZHRkVDb21wb25lbnRUcmFuc2ZlckVsZW1l
bnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHRkVDb21wb25lbnRUcmFuc2ZlckVsZW1lbnQ6
OmJ1aWxkIGNvbnN0KToKKyAgICAgICAgKiBzdmcvU1ZHRkVDb21wb25lbnRUcmFuc2ZlckVsZW1l
bnQuaDoKKyAgICAgICAgKiBzdmcvU1ZHRkVDb21wb3NpdGVFbGVtZW50LmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OlNWR0ZFQ29tcG9zaXRlRWxlbWVudDo6YnVpbGQgY29uc3QpOgorICAgICAgICAq
IHN2Zy9TVkdGRUNvbXBvc2l0ZUVsZW1lbnQuaDoKKyAgICAgICAgKiBzdmcvU1ZHRkVDb252b2x2
ZU1hdHJpeEVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHRkVDb252b2x2ZU1hdHJp
eEVsZW1lbnQ6OmJ1aWxkIGNvbnN0KToKKyAgICAgICAgKiBzdmcvU1ZHRkVDb252b2x2ZU1hdHJp
eEVsZW1lbnQuaDoKKyAgICAgICAgKiBzdmcvU1ZHRkVEaWZmdXNlTGlnaHRpbmdFbGVtZW50LmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR0ZFRGlmZnVzZUxpZ2h0aW5nRWxlbWVudDo6YnVpbGQg
Y29uc3QpOgorICAgICAgICAqIHN2Zy9TVkdGRURpZmZ1c2VMaWdodGluZ0VsZW1lbnQuaDoKKyAg
ICAgICAgKiBzdmcvU1ZHRkVEaXNwbGFjZW1lbnRNYXBFbGVtZW50LmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OlNWR0ZFRGlzcGxhY2VtZW50TWFwRWxlbWVudDo6YnVpbGQgY29uc3QpOgorICAgICAg
ICAqIHN2Zy9TVkdGRURpc3BsYWNlbWVudE1hcEVsZW1lbnQuaDoKKyAgICAgICAgKiBzdmcvU1ZH
RkVEcm9wU2hhZG93RWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdGRURyb3BTaGFk
b3dFbGVtZW50OjpidWlsZCBjb25zdCk6CisgICAgICAgICogc3ZnL1NWR0ZFRHJvcFNoYWRvd0Vs
ZW1lbnQuaDoKKyAgICAgICAgKiBzdmcvU1ZHRkVGbG9vZEVsZW1lbnQuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6U1ZHRkVGbG9vZEVsZW1lbnQ6OmJ1aWxkIGNvbnN0KToKKyAgICAgICAgKiBzdmcv
U1ZHRkVGbG9vZEVsZW1lbnQuaDoKKyAgICAgICAgKiBzdmcvU1ZHRkVHYXVzc2lhbkJsdXJFbGVt
ZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR0ZFR2F1c3NpYW5CbHVyRWxlbWVudDo6YnVp
bGQgY29uc3QpOgorICAgICAgICAqIHN2Zy9TVkdGRUdhdXNzaWFuQmx1ckVsZW1lbnQuaDoKKyAg
ICAgICAgKiBzdmcvU1ZHRkVJbWFnZUVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZH
RkVJbWFnZUVsZW1lbnQ6OmJ1aWxkIGNvbnN0KToKKyAgICAgICAgKiBzdmcvU1ZHRkVJbWFnZUVs
ZW1lbnQuaDoKKyAgICAgICAgKiBzdmcvU1ZHRkVNZXJnZUVsZW1lbnQuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6U1ZHRkVNZXJnZUVsZW1lbnQ6OmJ1aWxkIGNvbnN0KToKKyAgICAgICAgKiBzdmcv
U1ZHRkVNZXJnZUVsZW1lbnQuaDoKKyAgICAgICAgKiBzdmcvU1ZHRkVNb3JwaG9sb2d5RWxlbWVu
dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdGRU1vcnBob2xvZ3lFbGVtZW50OjpidWlsZCBj
b25zdCk6CisgICAgICAgICogc3ZnL1NWR0ZFTW9ycGhvbG9neUVsZW1lbnQuaDoKKyAgICAgICAg
KiBzdmcvU1ZHRkVPZmZzZXRFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR0ZFT2Zm
c2V0RWxlbWVudDo6YnVpbGQgY29uc3QpOgorICAgICAgICAqIHN2Zy9TVkdGRU9mZnNldEVsZW1l
bnQuaDoKKyAgICAgICAgKiBzdmcvU1ZHRkVTcGVjdWxhckxpZ2h0aW5nRWxlbWVudC5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpTVkdGRVNwZWN1bGFyTGlnaHRpbmdFbGVtZW50OjpidWlsZCBjb25z
dCk6CisgICAgICAgICogc3ZnL1NWR0ZFU3BlY3VsYXJMaWdodGluZ0VsZW1lbnQuaDoKKyAgICAg
ICAgKiBzdmcvU1ZHRkVUaWxlRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdGRVRp
bGVFbGVtZW50OjpidWlsZCBjb25zdCk6CisgICAgICAgICogc3ZnL1NWR0ZFVGlsZUVsZW1lbnQu
aDoKKyAgICAgICAgKiBzdmcvU1ZHRkVUdXJidWxlbmNlRWxlbWVudC5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpTVkdGRVR1cmJ1bGVuY2VFbGVtZW50OjpidWlsZCBjb25zdCk6CisgICAgICAgICog
c3ZnL1NWR0ZFVHVyYnVsZW5jZUVsZW1lbnQuaDoKKyAgICAgICAgKiBzdmcvU1ZHRmlsdGVyUHJp
bWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVzLmg6CisgICAgICAgICogc3ZnL2dyYXBoaWNzL2ZpbHRl
cnMvU1ZHRkVJbWFnZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGRUltYWdlOjpGRUltYWdlKToK
KyAgICAgICAgKFdlYkNvcmU6OkZFSW1hZ2U6OmNyZWF0ZVdpdGhJbWFnZSk6CisgICAgICAgIChX
ZWJDb3JlOjpGRUltYWdlOjpjcmVhdGVXaXRoSVJJUmVmZXJlbmNlKToKKyAgICAgICAgKFdlYkNv
cmU6OkZFSW1hZ2U6OmRldGVybWluZUFic29sdXRlUGFpbnRSZWN0KToKKyAgICAgICAgKFdlYkNv
cmU6OkZFSW1hZ2U6OnBsYXRmb3JtQXBwbHlTb2Z0d2FyZSk6CisgICAgICAgICogc3ZnL2dyYXBo
aWNzL2ZpbHRlcnMvU1ZHRkVJbWFnZS5oOgorICAgICAgICAqIHN2Zy9ncmFwaGljcy9maWx0ZXJz
L1NWR0ZpbHRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdGaWx0ZXI6OmNyZWF0ZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpTVkdGaWx0ZXI6OmFwcGx5KToKKyAgICAgICAgKFdlYkNvcmU6OlNW
R0ZpbHRlcjo6YXBwbHlGaWx0ZXIpOgorICAgICAgICAqIHN2Zy9ncmFwaGljcy9maWx0ZXJzL1NW
R0ZpbHRlci5oOgorICAgICAgICAqIHN2Zy9ncmFwaGljcy9maWx0ZXJzL1NWR0ZpbHRlckJ1aWxk
ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHRmlsdGVyQnVpbGRlcjo6YnVpbGRGaWx0ZXJF
ZmZlY3RzKToKKyAgICAgICAgKiBzdmcvZ3JhcGhpY3MvZmlsdGVycy9TVkdGaWx0ZXJCdWlsZGVy
Lmg6CisKKzIwMjEtMTAtMzAgIFNhaWQgQWJvdS1IYWxsYXdhICA8c2FpZEBhcHBsZS5jb20+CisK
KyAgICAgICAgW0dQVSBQcm9jZXNzXSBNYWtlIENTU0ZpbHRlciBob2xkcyBhIGxpc3Qgb2YgRmls
dGVyRnVuY3Rpb25zCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0yMzI0NjkKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICBJbiB0aGlzIHBhdGNoLCB0aGUgQ1NTIHJlZmVyZW5jZSBmaWx0ZXIgaXMgYnVpbHQgYXMg
YW4gU1ZHRmlsdGVyIGFuZCBpdAorICAgICAgICBpcyBrZXB0IGFzIGEgRmlsdGVyRnVuY3Rpb24g
aW4gdGhlIENTU0ZpbHRlciBmdW5jdGlvbnMnIGxpc3QuIFRoZSBGaWx0ZXIgCisgICAgICAgIGFz
c29jaWF0ZWQgd2l0aCB0aGUgRmlsdGVyRWZmZWN0cyBvZiB0aGUgcmVmZXJlbmNlZCBmaWx0ZXIg
d2lsbCBiZSBhbgorICAgICAgICBTVkdGaWx0ZXIgaW5zdGVhZCBvZiBoYXZpbmcgYSBDU1NGaWx0
ZXIuIFRoaXMgd2lsbCBhbGxvdyBoYXZpbmcgY29sb3IKKyAgICAgICAgc3BhY2luZyBmb3IgdGhl
IHJlZmVyZW5jZWQgZmlsdGVycyBkaWZmZXJlbnQgZnJvbSB0aGUgY29sb3Igc3BhY2luZyBvZgor
ICAgICAgICBDU1NGaWx0ZXIuIAorCisgICAgICAgIEFsc28gdGhpcyBwYXRjaCBtYWtlcyBhIHNp
bmdsZSBmdW5jdGlvbiBmb3IgYnVpbGRpbmcgdGhlIHByaW1pdGl2ZXMgb2YKKyAgICAgICAgdGhl
IFNWR0ZpbHRlciBpbnN0ZWFkIG9mIGhhdmluZyB0d28gZnVuY3Rpb25zLgorCisgICAgICAgIFRv
IGFsbG93IG9wZXJhdGluZyB0aHJvdWdoIHRoZSBTVkdGaWx0ZXIgYXMgYSBGaWx0ZXJGdW5jdGlv
biBvd25lZCBieQorICAgICAgICBDU1NGaWx0ZXIsIHRoZSBTVkdGaWx0ZXIgd2lsbCBoYXZlIGEg
cG9pbnRlciB0byBpdHMgbGFzdEVmZmVjdC4KKworICAgICAgICAqIGNzcy9DU1NGaWx0ZXJJbWFn
ZVZhbHVlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNTU0ZpbHRlckltYWdlVmFsdWU6OmltYWdl
KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZpbHRlckVmZmVjdC5oOgor
ICAgICAgICAoV2ViQ29yZTo6RmlsdGVyRWZmZWN0OjpzZXRNYXhFZmZlY3RSZWN0KToKKyAgICAg
ICAgKFdlYkNvcmU6OkZpbHRlckVmZmVjdDo6b3V0c2V0cyBjb25zdCk6IERlbGV0ZWQuCisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GaWx0ZXJGdW5jdGlvbi5oOgorICAgICAg
ICAoV2ViQ29yZTo6RmlsdGVyRnVuY3Rpb246Om91dHNldHMgY29uc3QpOgorICAgICAgICAoV2Vi
Q29yZTo6RmlsdGVyRnVuY3Rpb246OmNsZWFyUmVzdWx0KToKKyAgICAgICAgKiByZW5kZXJpbmcv
Q1NTRmlsdGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNTU0ZpbHRlcjo6Y3JlYXRlKToKKyAg
ICAgICAgKFdlYkNvcmU6OkNTU0ZpbHRlcjo6Q1NTRmlsdGVyKToKKyAgICAgICAgKFdlYkNvcmU6
OmNyZWF0ZUJsdXJFZmZlY3QpOgorICAgICAgICAoV2ViQ29yZTo6Y3JlYXRlQnJpZ2h0bmVzc0Vm
ZmVjdCk6CisgICAgICAgIChXZWJDb3JlOjpjcmVhdGVDb250cmFzdEVmZmVjdCk6CisgICAgICAg
IChXZWJDb3JlOjpjcmVhdGVEcm9wU2hhZG93RWZmZWN0KToKKyAgICAgICAgKFdlYkNvcmU6OmNy
ZWF0ZUdyYXlTY2FsZUVmZmVjdCk6CisgICAgICAgIChXZWJDb3JlOjpjcmVhdGVIdWVSb3RhdGVF
ZmZlY3QpOgorICAgICAgICAoV2ViQ29yZTo6Y3JlYXRlSW52ZXJ0RWZmZWN0KToKKyAgICAgICAg
KFdlYkNvcmU6OmNyZWF0ZU9wYWNpdHlFZmZlY3QpOgorICAgICAgICAoV2ViQ29yZTo6Y3JlYXRl
U2F0dXJhdGVFZmZlY3QpOgorICAgICAgICAoV2ViQ29yZTo6Y3JlYXRlU2VwaWFFZmZlY3QpOgor
ICAgICAgICAoV2ViQ29yZTo6Y3JlYXRlU1ZHRmlsdGVyKToKKyAgICAgICAgKFdlYkNvcmU6OnNl
dHVwTGFzdEVmZmVjdFByb3BlcnRpZXMpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTRmlsdGVyOjpi
dWlsZCk6CisgICAgICAgIChXZWJDb3JlOjpDU1NGaWx0ZXI6OmlucHV0Q29udGV4dCk6CisgICAg
ICAgIChXZWJDb3JlOjpDU1NGaWx0ZXI6OmFsbG9jYXRlQmFja2luZ1N0b3JlSWZOZWVkZWQpOgor
ICAgICAgICAoV2ViQ29yZTo6Q1NTRmlsdGVyOjpsYXN0RWZmZWN0KToKKyAgICAgICAgKFdlYkNv
cmU6OkNTU0ZpbHRlcjo6ZGV0ZXJtaW5lRmlsdGVyUHJpbWl0aXZlU3VicmVnaW9uKToKKyAgICAg
ICAgKFdlYkNvcmU6OkNTU0ZpbHRlcjo6Y2xlYXJJbnRlcm1lZGlhdGVSZXN1bHRzKToKKyAgICAg
ICAgKFdlYkNvcmU6OkNTU0ZpbHRlcjo6YXBwbHkpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTRmls
dGVyOjpvdXRwdXQpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTRmlsdGVyOjpzZXRTb3VyY2VJbWFn
ZVJlY3QpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTRmlsdGVyOjpvdXRwdXRSZWN0KToKKyAgICAg
ICAgKFdlYkNvcmU6OkNTU0ZpbHRlcjo6b3V0c2V0cyBjb25zdCk6CisgICAgICAgIChXZWJDb3Jl
OjpDU1NGaWx0ZXI6OmJ1aWxkUmVmZXJlbmNlRmlsdGVyKTogRGVsZXRlZC4KKyAgICAgICAgKFdl
YkNvcmU6OkNTU0ZpbHRlcjo6b3V0cHV0IGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNv
cmU6OkNTU0ZpbHRlcjo6c2V0TWF4RWZmZWN0UmVjdHMpOiBEZWxldGVkLgorICAgICAgICAoV2Vi
Q29yZTo6Q1NTRmlsdGVyOjpvdXRwdXRSZWN0IGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKiBy
ZW5kZXJpbmcvQ1NTRmlsdGVyLmg6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckxheWVyLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxheWVyOjpzZXR1cEZpbHRlcnMpOgorICAgICAg
ICAqIHJlbmRlcmluZy9SZW5kZXJMYXllckZpbHRlcnMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
UmVuZGVyTGF5ZXJGaWx0ZXJzOjpidWlsZEZpbHRlcik6CisgICAgICAgIChXZWJDb3JlOjpSZW5k
ZXJMYXllckZpbHRlcnM6OmJlZ2luRmlsdGVyRWZmZWN0KToKKyAgICAgICAgKFdlYkNvcmU6OlJl
bmRlckxheWVyRmlsdGVyczo6YXBwbHlGaWx0ZXJFZmZlY3QpOgorICAgICAgICAqIHJlbmRlcmlu
Zy9SZW5kZXJMYXllckZpbHRlcnMuaDoKKyAgICAgICAgKiByZW5kZXJpbmcvc3ZnL1JlbmRlclNW
R1Jlc291cmNlRmlsdGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclNWR1Jlc291cmNl
RmlsdGVyOjphcHBseVJlc291cmNlKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclNWR1Jlc291
cmNlRmlsdGVyOjpwb3N0QXBwbHlSZXNvdXJjZSk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJT
VkdSZXNvdXJjZUZpbHRlcjo6YnVpbGRQcmltaXRpdmVzIGNvbnN0KTogRGVsZXRlZC4KKyAgICAg
ICAgKiByZW5kZXJpbmcvc3ZnL1NWR1JlbmRlclRyZWVBc1RleHQuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6d3JpdGVTVkdSZXNvdXJjZUNvbnRhaW5lcik6CisgICAgICAgICogc3ZnL2dyYXBoaWNz
L2ZpbHRlcnMvU1ZHRmlsdGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR0ZpbHRlcjo6Y3Jl
YXRlKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR0ZpbHRlcjo6U1ZHRmlsdGVyKToKKyAgICAgICAg
KFdlYkNvcmU6OlNWR0ZpbHRlcjo6b3V0c2V0cyBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpT
VkdGaWx0ZXI6OmNsZWFyUmVzdWx0KToKKyAgICAgICAgKiBzdmcvZ3JhcGhpY3MvZmlsdGVycy9T
VkdGaWx0ZXJCdWlsZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR0ZpbHRlckJ1aWxkZXI6
OnNldHVwQnVpbHRpbkVmZmVjdHMpOgorICAgICAgICAoV2ViQ29yZTo6Y29sb3JJbnRlcnBvbGF0
aW9uRm9yRWxlbWVudCk6CisgICAgICAgIChXZWJDb3JlOjpTVkdGaWx0ZXJCdWlsZGVyOjpidWls
ZEZpbHRlckVmZmVjdHMpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHRmlsdGVyQnVpbGRlcjo6U1ZH
RmlsdGVyQnVpbGRlcik6IERlbGV0ZWQuCisgICAgICAgICogc3ZnL2dyYXBoaWNzL2ZpbHRlcnMv
U1ZHRmlsdGVyQnVpbGRlci5oOgorCisyMDIxLTEwLTI4ICBTYWlkIEFib3UtSGFsbGF3YSAgPHNh
aWRAYXBwbGUuY29tPgorCisgICAgICAgIFtHUFUgUHJvY2Vzc10gTWFrZSBTVkdGaWx0ZXIgYW5k
IENTU0ZpbHRlciB3b3JrIGluIHRoZSBzYW1lIGNvb3JkaW5hdGVzIHN5c3RlbQorICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjMyNDU3CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQ3VycmVudGx5IFNWR0ZpbHRl
ciBzZXRzIHRoZSBmb2xsb3dpbmcgbWVtYmVycyBvZiBGaWx0ZXIKKworICAgICAgICAxLiBBZmZp
bmVUcmFuc2Zvcm0gbV9hYnNvbHV0ZVRyYW5zZm9ybTogdGhpcyBpcyB0aGUgc2NhbGluZyBwYXJ0
IGZyb20gdGhlCisgICAgICAgICAgIHRyYW5zZm9ybWF0aW9uIGZyb20gdGhlIHRhcmdldCBlbGVt
ZW50IHRvIHRoZSBvdXRlcm1vc3QgY29vcmRpbmF0ZSBzeXN0ZW0KKyAgICAgICAgMi4gRmxvYXRT
aXplIG1fZmlsdGVyUmVzb2x1dGlvbjogdGhpcyBpcyB0aGUgY2xhbXBpbmcgc2NhbGUgaWYgdGhl
IHNpemUKKyAgICAgICAgICAgb2YgdGhlIHJlc3VsdCBJbWFnZUJ1ZmZlcnMgZXhjZWVkcyBNYXhD
bGFtcGVkQXJlYQorCisgICAgICAgIEFuZCB0aGUgQ1NTRmlsdGVyIHNldHMgdGhlIGZvbGxvd2lu
ZyBtZW1iZXIgb2YgRmlsdGVyOgorCisgICAgICAgIDEuIGZsb2F0IG1fZmlsdGVyU2NhbGU6IHRo
aXMgaXMgdGhlIGRvY3VtZW50KCkuZGV2aWNlU2NhbGVGYWN0b3IoKQorCisgICAgICAgIFRoZSBk
aXNjcmVwYW5jeSBoYXBwZW5zIGFsc28gd2hlbiBjcmVhdGluZyB0aGUgcmVzdWx0IEltYWdlQnVm
ZmVycy4gRm9yIAorICAgICAgICBTVkdGaWx0ZXIsIHdlIGNyZWF0ZSB0aGVtIHdpdGggc2NhbGVG
YWN0b3I9MS4gVGhpcyBtZWFucyB0aGUgbG9naWNhbFNpemUKKyAgICAgICAgPT0gYmFja2VuZFNp
emUuIEJ1dCBmb3IgQ1NTRmlsdGVyIHdlIGNyZWF0ZSB0aGVtIHdpdGggc2NhbGVGYWN0b3IKKyAg
ICAgICAgPSBtX2ZpbHRlclNjYWxlLiBUaGlzIG1lYW5zIHRoZSBsb2dpY2FsU2l6ZSAhPSBiYWNr
ZW5kU2l6ZSBpbiB0aGlzIGNhc2UuCisKKyAgICAgICAgV2UgbmVlZCB0byB1bmlmeSB0aGUgY29v
cmRpbmF0ZXMgc3lzdGVtIGZvciBib3RoIGZpbHRlcnMuIFdlIG5lZWQgYWxzbyB0bworICAgICAg
ICByZXBsYWNlIHRoZSB0aHJlZSBtZW1iZXJzIGJ5IGEgc2luZ2xlIEZsb2F0U2l6ZSBjYWxsZWQg
Im1fZmlsdGVyU2NhbGUiLgorCisgICAgICAgICogY3NzL0NTU0ZpbHRlckltYWdlVmFsdWUuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6Q1NTRmlsdGVySW1hZ2VWYWx1ZTo6aW1hZ2UpOgorICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NvcmVpbWFnZS9GaWx0ZXJFZmZlY3RSZW5kZXJlckNvcmVJ
bWFnZS5tbToKKyAgICAgICAgKFdlYkNvcmU6OkZpbHRlckVmZmVjdFJlbmRlcmVyQ29yZUltYWdl
OjpyZW5kZXJUb0ltYWdlQnVmZmVyKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9maWx0
ZXJzL0ZFQ29udm9sdmVNYXRyaXguY3BwOgorICAgICAgICAoV2ViQ29yZTo6RkVDb252b2x2ZU1h
dHJpeDo6cGxhdGZvcm1BcHBseVNvZnR3YXJlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy9maWx0ZXJzL0ZFRGlzcGxhY2VtZW50TWFwLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZFRGlz
cGxhY2VtZW50TWFwOjpwbGF0Zm9ybUFwcGx5U29mdHdhcmUpOgorICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL2ZpbHRlcnMvRkVEcm9wU2hhZG93LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZF
RHJvcFNoYWRvdzo6ZGV0ZXJtaW5lQWJzb2x1dGVQYWludFJlY3QpOgorICAgICAgICAoV2ViQ29y
ZTo6RkVEcm9wU2hhZG93OjpwbGF0Zm9ybUFwcGx5U29mdHdhcmUpOgorICAgICAgICAqIHBsYXRm
b3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVHYXVzc2lhbkJsdXIuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6RkVHYXVzc2lhbkJsdXI6OmNhbGN1bGF0ZUtlcm5lbFNpemUpOgorICAgICAgICAoV2ViQ29y
ZTo6RkVHYXVzc2lhbkJsdXI6OnBsYXRmb3JtQXBwbHlTb2Z0d2FyZSk6CisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRU1vcnBob2xvZ3kuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6RkVNb3JwaG9sb2d5OjpkZXRlcm1pbmVBYnNvbHV0ZVBhaW50UmVjdCk6CisgICAgICAgIChX
ZWJDb3JlOjpGRU1vcnBob2xvZ3k6OnBsYXRmb3JtQXBwbHlTb2Z0d2FyZSk6CisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRU9mZnNldC5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpGRU9mZnNldDo6ZGV0ZXJtaW5lQWJzb2x1dGVQYWludFJlY3QpOgorICAgICAgICAoV2ViQ29y
ZTo6RkVPZmZzZXQ6OnBsYXRmb3JtQXBwbHlTb2Z0d2FyZSk6CisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3MvZmlsdGVycy9GRVRpbGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RkVUaWxlOjpw
bGF0Zm9ybUFwcGx5U29mdHdhcmUpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2ZpbHRl
cnMvRmlsdGVyLmg6CisgICAgICAgIChXZWJDb3JlOjpGaWx0ZXI6OmZpbHRlclNjYWxlIGNvbnN0
KToKKyAgICAgICAgKFdlYkNvcmU6OkZpbHRlcjo6c2V0RmlsdGVyU2NhbGUpOgorICAgICAgICAo
V2ViQ29yZTo6RmlsdGVyOjpzb3VyY2VJbWFnZVJlY3QgY29uc3QpOgorICAgICAgICAoV2ViQ29y
ZTo6RmlsdGVyOjpzZXRGaWx0ZXJSZWdpb24pOgorICAgICAgICAoV2ViQ29yZTo6RmlsdGVyOjpm
aWx0ZXJSZWdpb24gY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6RmlsdGVyOjpzZXRTb3VyY2VJ
bWFnZVJlY3QpOgorICAgICAgICAoV2ViQ29yZTo6RmlsdGVyOjpzY2FsZWRCeUZpbHRlclNjYWxl
IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkZpbHRlcjo6RmlsdGVyKToKKyAgICAgICAgKFdl
YkNvcmU6OkZpbHRlcjo6ZmlsdGVyUmVzb2x1dGlvbiBjb25zdCk6IERlbGV0ZWQuCisgICAgICAg
IChXZWJDb3JlOjpGaWx0ZXI6OnNldEZpbHRlclJlc29sdXRpb24pOiBEZWxldGVkLgorICAgICAg
ICAoV2ViQ29yZTo6RmlsdGVyOjphYnNvbHV0ZVRyYW5zZm9ybSBjb25zdCk6IERlbGV0ZWQuCisg
ICAgICAgIChXZWJDb3JlOjpGaWx0ZXI6OmlzU1ZHRmlsdGVyIGNvbnN0KTogRGVsZXRlZC4KKyAg
ICAgICAgKFdlYkNvcmU6OkZpbHRlcjo6aXNDU1NGaWx0ZXIgY29uc3QpOiBEZWxldGVkLgorICAg
ICAgICAoV2ViQ29yZTo6RmlsdGVyOjpzY2FsZWRCeUZpbHRlclJlc29sdXRpb24gY29uc3QpOiBE
ZWxldGVkLgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRmlsdGVyRWZmZWN0
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZpbHRlckVmZmVjdDo6ZGV0ZXJtaW5lRmlsdGVyUHJp
bWl0aXZlU3VicmVnaW9uKToKKyAgICAgICAgKFdlYkNvcmU6OkZpbHRlckVmZmVjdDo6YXBwbHkp
OgorICAgICAgICAoV2ViQ29yZTo6RmlsdGVyRWZmZWN0OjppbWFnZUJ1ZmZlclJlc3VsdCk6Cisg
ICAgICAgIChXZWJDb3JlOjpGaWx0ZXJFZmZlY3Q6OnVubXVsdGlwbGllZFJlc3VsdCk6CisgICAg
ICAgIChXZWJDb3JlOjpGaWx0ZXJFZmZlY3Q6OnByZW11bHRpcGxpZWRSZXN1bHQpOgorICAgICAg
ICAoV2ViQ29yZTo6RmlsdGVyRWZmZWN0Ojpjb3B5SW1hZ2VCeXRlcyBjb25zdCk6CisgICAgICAg
IChXZWJDb3JlOjpGaWx0ZXJFZmZlY3Q6OmNvbnZlcnRQaXhlbEJ1ZmZlclRvQ29sb3JTcGFjZSk6
CisgICAgICAgIChXZWJDb3JlOjpGaWx0ZXJFZmZlY3Q6OmNvbnZlcnRJbWFnZUJ1ZmZlclRvQ29s
b3JTcGFjZSk6CisgICAgICAgIChXZWJDb3JlOjpGaWx0ZXJFZmZlY3Q6OmNvcHlVbm11bHRpcGxp
ZWRSZXN1bHQpOgorICAgICAgICAoV2ViQ29yZTo6RmlsdGVyRWZmZWN0Ojpjb3B5UHJlbXVsdGlw
bGllZFJlc3VsdCk6CisgICAgICAgIChXZWJDb3JlOjpGaWx0ZXJFZmZlY3Q6OmNyZWF0ZUltYWdl
QnVmZmVyUmVzdWx0KToKKyAgICAgICAgKFdlYkNvcmU6OkZpbHRlckVmZmVjdDo6Y3JlYXRlVW5t
dWx0aXBsaWVkSW1hZ2VSZXN1bHQpOgorICAgICAgICAoV2ViQ29yZTo6RmlsdGVyRWZmZWN0Ojpj
cmVhdGVQcmVtdWx0aXBsaWVkSW1hZ2VSZXN1bHQpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL2ZpbHRlcnMvU291cmNlR3JhcGhpYy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTb3VyY2VH
cmFwaGljOjpkZXRlcm1pbmVBYnNvbHV0ZVBhaW50UmVjdCk6CisgICAgICAgICogcmVuZGVyaW5n
L0NTU0ZpbHRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDU1NGaWx0ZXI6OmNyZWF0ZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpDU1NGaWx0ZXI6OkNTU0ZpbHRlcik6CisgICAgICAgIChXZWJDb3Jl
OjpDU1NGaWx0ZXI6OmJ1aWxkUmVmZXJlbmNlRmlsdGVyKToKKyAgICAgICAgKFdlYkNvcmU6OkNT
U0ZpbHRlcjo6YnVpbGQpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTRmlsdGVyOjphbGxvY2F0ZUJh
Y2tpbmdTdG9yZUlmTmVlZGVkKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU0ZpbHRlcjo6ZGV0ZXJt
aW5lRmlsdGVyUHJpbWl0aXZlU3VicmVnaW9uKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU0ZpbHRl
cjo6Y2xlYXJJbnRlcm1lZGlhdGVSZXN1bHRzKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU0ZpbHRl
cjo6c2V0U291cmNlSW1hZ2VSZWN0KToKKyAgICAgICAgKFdlYkNvcmU6OkNTU0ZpbHRlcjo6b3V0
cHV0UmVjdCBjb25zdCk6CisgICAgICAgICogcmVuZGVyaW5nL0NTU0ZpbHRlci5oOgorICAgICAg
ICAqIHJlbmRlcmluZy9SZW5kZXJMYXllckZpbHRlcnMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
UmVuZGVyTGF5ZXJGaWx0ZXJzOjpidWlsZEZpbHRlcik6CisgICAgICAgICogcmVuZGVyaW5nL3N2
Zy9SZW5kZXJTVkdSZXNvdXJjZUZpbHRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJT
VkdSZXNvdXJjZUZpbHRlcjo6YXBwbHlSZXNvdXJjZSk6CisgICAgICAgIChXZWJDb3JlOjpSZW5k
ZXJTVkdSZXNvdXJjZUZpbHRlcjo6cG9zdEFwcGx5UmVzb3VyY2UpOgorICAgICAgICAqIHJlbmRl
cmluZy9zdmcvU1ZHUmVuZGVyVHJlZUFzVGV4dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjp3cml0
ZVNWR1Jlc291cmNlQ29udGFpbmVyKToKKyAgICAgICAgKiBzdmcvZ3JhcGhpY3MvZmlsdGVycy9T
VkdGRUltYWdlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZFSW1hZ2U6OkZFSW1hZ2UpOgorICAg
ICAgICAoV2ViQ29yZTo6RkVJbWFnZTo6ZGV0ZXJtaW5lQWJzb2x1dGVQYWludFJlY3QpOgorICAg
ICAgICAoV2ViQ29yZTo6RkVJbWFnZTo6cGxhdGZvcm1BcHBseVNvZnR3YXJlKToKKyAgICAgICAg
KiBzdmcvZ3JhcGhpY3MvZmlsdGVycy9TVkdGRUltYWdlLmg6CisgICAgICAgICogc3ZnL2dyYXBo
aWNzL2ZpbHRlcnMvU1ZHRmlsdGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR0ZpbHRlcjo6
U1ZHRmlsdGVyKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR0ZpbHRlcjo6c2NhbGVkQnlGaWx0ZXJT
Y2FsZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpTVkdGaWx0ZXI6OmNyZWF0ZSk6CisgICAg
ICAgIChXZWJDb3JlOjpTVkdGaWx0ZXI6OnNjYWxlZEJ5RmlsdGVyUmVzb2x1dGlvbiBjb25zdCk6
IERlbGV0ZWQuCisgICAgICAgICogc3ZnL2dyYXBoaWNzL2ZpbHRlcnMvU1ZHRmlsdGVyLmg6CisK
KzIwMjEtMTAtMjcgIFNhaWQgQWJvdS1IYWxsYXdhICA8c2FpZEBhcHBsZS5jb20+CisKKyAgICAg
ICAgW0dQVSBQcm9jZXNzXSBJbnRyb2R1Y2UgRmlsdGVyRnVuY3Rpb24gYW5kIG1ha2UgaXQgdGhl
IGJhc2UgY2xhc3Mgb2YgRmlsdGVyIGFuZCBGaWx0ZXJFZmZlY3QKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzMjQxMworCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoaXMgYWxsb3dzIENTU0ZpbHRlciB0byBo
b2xkIGEgbGlzdCBvZiBGaWx0ZXJGdW5jdGlvbnMuIFRoZSBGaWx0ZXIgaW4KKyAgICAgICAgdGhp
cyBjYXNlIHdpbGwgYWN0IGxpa2UgYSBjb21wb3NpdGUgcGF0dGVybiBvZiB0aGUgRmlsdGVyRWZm
ZWN0LgorCisgICAgICAgIFRoaXMgcGF0Y2ggYWxzbworICAgICAgICAxLiBSZW1vdmVzIHRoZSB2
aXJ0dWFsIGZ1bmN0aW9uIGZpbHRlck5hbWUoKSBmcm9tIGFsbCB0aGUgRmlsdGVyRWZmZWN0Cisg
ICAgICAgICAgIGNsYXNzZXMuIEl0IHJlcGxhY2VzIGl0IHdpdGggYSBzdGF0aWMgZnVuY3Rpb24g
aW4gRmlsdGVyRnVuY3Rpb24uCisgICAgICAgIDIuIFJlbW92ZXMgdGhlIHZpcnR1YWwgZnVuY3Rp
b24gZmlsdGVyRWZmZWN0VHlwZSgpIGFuZCB0aGUgZnVuY3Rpb24KKyAgICAgICAgICAgRmlsdGVy
RWZmZWN0OjpmaWx0ZXJFZmZlY3RDbGFzc1R5cGUoKSBzaW5jZSB0aGV5IGNhbiBib3RoIGJlIHJl
cGxhY2VkCisgICAgICAgICAgIGJ5IEZpbHRlckZ1bmN0aW9uOjpmaWx0ZXJUeXBlKCkuCisgICAg
ICAgIDMuIEFkZHMgdHJhaXQgbWFjcm9zIGZvciBhbGwgRmlsdGVyRWZmZWN0cyBhbmQgdGhlIFNW
R0ZpbHRlcnMgY2xhc3MuCisKKyAgICAgICAgKiBTb3VyY2VzLnR4dDoKKyAgICAgICAgKiBXZWJD
b3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3MvY29yZWltYWdlL0ZpbHRlckVmZmVjdFJlbmRlcmVyQ29yZUltYWdlLm1tOgorICAgICAgICAo
V2ViQ29yZTo6RmlsdGVyRWZmZWN0UmVuZGVyZXJDb3JlSW1hZ2U6OnN1cHBvcnRzQ29yZUltYWdl
UmVuZGVyaW5nKToKKyAgICAgICAgKFdlYkNvcmU6OkZpbHRlckVmZmVjdFJlbmRlcmVyQ29yZUlt
YWdlOjpjb25uZWN0Q0lGaWx0ZXJzKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9maWx0
ZXJzL0ZFQmxlbmQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RkVCbGVuZDo6RkVCbGVuZCk6Cisg
ICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRUJsZW5kLmg6CisgICAgICAgICgp
OiBEZWxldGVkLgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVDb2xvck1h
dHJpeC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGRUNvbG9yTWF0cml4OjpGRUNvbG9yTWF0cml4
KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFQ29sb3JNYXRyaXguaDoK
KyAgICAgICAgKGlzVHlwZSk6IERlbGV0ZWQuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
ZmlsdGVycy9GRUNvbXBvbmVudFRyYW5zZmVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZFQ29t
cG9uZW50VHJhbnNmZXI6OkZFQ29tcG9uZW50VHJhbnNmZXIpOgorICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL2ZpbHRlcnMvRkVDb21wb25lbnRUcmFuc2Zlci5oOgorICAgICAgICAoaXNUeXBl
KTogRGVsZXRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFQ29tcG9z
aXRlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZFQ29tcG9zaXRlOjpGRUNvbXBvc2l0ZSk6Cisg
ICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRUNvbXBvc2l0ZS5oOgorICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVDb252b2x2ZU1hdHJpeC5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpGRUNvbnZvbHZlTWF0cml4OjpGRUNvbnZvbHZlTWF0cml4KToKKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFQ29udm9sdmVNYXRyaXguaDoKKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFRGlmZnVzZUxpZ2h0aW5nLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkZFRGlmZnVzZUxpZ2h0aW5nOjpGRURpZmZ1c2VMaWdodGluZyk6Cisg
ICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRURpZmZ1c2VMaWdodGluZy5oOgor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVEaXNwbGFjZW1lbnRNYXAuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6RkVEaXNwbGFjZW1lbnRNYXA6OkZFRGlzcGxhY2VtZW50TWFw
KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFRGlzcGxhY2VtZW50TWFw
Lmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRURyb3BTaGFkb3cuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6RkVEcm9wU2hhZG93OjpGRURyb3BTaGFkb3cpOgorICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVEcm9wU2hhZG93Lmg6CisgICAgICAgICgp
OiBEZWxldGVkLgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVGbG9vZC5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpGRUZsb29kOjpGRUZsb29kKToKKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFRmxvb2QuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9maWx0ZXJzL0ZFR2F1c3NpYW5CbHVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZFR2F1
c3NpYW5CbHVyOjpGRUdhdXNzaWFuQmx1cik6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
ZmlsdGVycy9GRUdhdXNzaWFuQmx1ci5oOgorICAgICAgICAoKTogRGVsZXRlZC4KKyAgICAgICAg
KiBwbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFTGlnaHRpbmcuaDoKKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFTWVyZ2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RkVN
ZXJnZTo6RkVNZXJnZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRU1l
cmdlLmg6CisgICAgICAgICgpOiBEZWxldGVkLgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L2ZpbHRlcnMvRkVNb3JwaG9sb2d5LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZFTW9ycGhvbG9n
eTo6RkVNb3JwaG9sb2d5KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZF
TW9ycGhvbG9neS5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVPZmZz
ZXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RkVPZmZzZXQ6OkZFT2Zmc2V0KToKKyAgICAgICAg
KiBwbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFT2Zmc2V0Lmg6CisgICAgICAgICgpOiBEZWxl
dGVkLgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVTcGVjdWxhckxpZ2h0
aW5nLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZFU3BlY3VsYXJMaWdodGluZzo6RkVTcGVjdWxh
ckxpZ2h0aW5nKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFU3BlY3Vs
YXJMaWdodGluZy5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVUaWxl
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZFVGlsZTo6RkVUaWxlKToKKyAgICAgICAgKFdlYkNv
cmU6OkZFVGlsZTo6cGxhdGZvcm1BcHBseVNvZnR3YXJlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy9maWx0ZXJzL0ZFVGlsZS5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Zp
bHRlcnMvRkVUdXJidWxlbmNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZFVHVyYnVsZW5jZTo6
RkVUdXJidWxlbmNlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFVHVy
YnVsZW5jZS5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRmlsdGVyLmg6
CisgICAgICAgIChXZWJDb3JlOjpGaWx0ZXI6OkZpbHRlcik6CisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3MvZmlsdGVycy9GaWx0ZXJFZmZlY3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Rmls
dGVyRWZmZWN0OjpGaWx0ZXJFZmZlY3QpOgorICAgICAgICAoV2ViQ29yZTo6RmlsdGVyRWZmZWN0
OjpkZXRlcm1pbmVGaWx0ZXJQcmltaXRpdmVTdWJyZWdpb24pOgorICAgICAgICAoV2ViQ29yZTo6
RmlsdGVyRWZmZWN0OjpjcmVhdGVJbWFnZUJ1ZmZlclJlc3VsdCk6CisgICAgICAgIChXZWJDb3Jl
OjpGaWx0ZXJFZmZlY3Q6OmNyZWF0ZVVubXVsdGlwbGllZEltYWdlUmVzdWx0KToKKyAgICAgICAg
KFdlYkNvcmU6OkZpbHRlckVmZmVjdDo6Y3JlYXRlUHJlbXVsdGlwbGllZEltYWdlUmVzdWx0KToK
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZpbHRlckVmZmVjdC5oOgorICAg
ICAgICAoaXNUeXBlKToKKyAgICAgICAgKFdlYkNvcmU6OkZpbHRlckVmZmVjdDo6ZmlsdGVyRWZm
ZWN0VHlwZSBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpGaWx0ZXJFZmZlY3Q6
OmZpbHRlckVmZmVjdENsYXNzVHlwZSBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvZmlsdGVycy9GaWx0ZXJGdW5jdGlvbi5jcHA6IEFkZGVkLgorICAgICAgICAo
V2ViQ29yZTo6RmlsdGVyRnVuY3Rpb246OkZpbHRlckZ1bmN0aW9uKToKKyAgICAgICAgKFdlYkNv
cmU6OmZpbHRlck5hbWVzKToKKyAgICAgICAgKFdlYkNvcmU6OkZpbHRlckZ1bmN0aW9uOjpmaWx0
ZXJOYW1lKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZpbHRlckZ1bmN0
aW9uLmg6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6RmlsdGVyRnVuY3Rpb246OmZpbHRlclR5
cGUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6RmlsdGVyRnVuY3Rpb246OmlzQ1NTRmlsdGVy
IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkZpbHRlckZ1bmN0aW9uOjppc1NWR0ZpbHRlciBj
b25zdCk6CisgICAgICAgIChXZWJDb3JlOjpGaWx0ZXJGdW5jdGlvbjo6aXNGaWx0ZXIgY29uc3Qp
OgorICAgICAgICAoV2ViQ29yZTo6RmlsdGVyRnVuY3Rpb246OmlzRmlsdGVyRWZmZWN0IGNvbnN0
KToKKyAgICAgICAgKFdlYkNvcmU6OkZpbHRlckZ1bmN0aW9uOjpzb3VyY2VBbHBoYU5hbWUpOgor
ICAgICAgICAoV2ViQ29yZTo6RmlsdGVyRnVuY3Rpb246OnNvdXJjZUdyYXBoaWNOYW1lKToKKyAg
ICAgICAgKFdlYkNvcmU6OkZpbHRlckZ1bmN0aW9uOjpmaWx0ZXJOYW1lIGNvbnN0KToKKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL1NvdXJjZUFscGhhLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OlNvdXJjZUFscGhhOjpTb3VyY2VBbHBoYSk6CisgICAgICAgIChXZWJDb3JlOjpT
b3VyY2VBbHBoYTo6ZWZmZWN0TmFtZSk6IERlbGV0ZWQuCisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3MvZmlsdGVycy9Tb3VyY2VBbHBoYS5oOgorICAgICAgICAoV2ViQ29yZTo6U291cmNlQWxw
aGE6OmVmZmVjdE5hbWUpOgorICAgICAgICAoKTogRGVsZXRlZC4KKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy9maWx0ZXJzL1NvdXJjZUdyYXBoaWMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
U291cmNlR3JhcGhpYzo6ZWZmZWN0TmFtZSk6IERlbGV0ZWQuCisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3MvZmlsdGVycy9Tb3VyY2VHcmFwaGljLmg6CisgICAgICAgIChXZWJDb3JlOjpTb3Vy
Y2VHcmFwaGljOjplZmZlY3ROYW1lKToKKyAgICAgICAgKFdlYkNvcmU6OlNvdXJjZUdyYXBoaWM6
OlNvdXJjZUdyYXBoaWMpOgorICAgICAgICAoKTogRGVsZXRlZC4KKyAgICAgICAgKGlzVHlwZSk6
IERlbGV0ZWQuCisgICAgICAgICogcmVuZGVyaW5nL0NTU0ZpbHRlci5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpDU1NGaWx0ZXI6OkNTU0ZpbHRlcik6CisgICAgICAgICogc3ZnL2dyYXBoaWNzL2Zp
bHRlcnMvU1ZHRkVJbWFnZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGRUltYWdlOjpGRUltYWdl
KToKKyAgICAgICAgKiBzdmcvZ3JhcGhpY3MvZmlsdGVycy9TVkdGRUltYWdlLmg6CisgICAgICAg
ICogc3ZnL2dyYXBoaWNzL2ZpbHRlcnMvU1ZHRmlsdGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OlNWR0ZpbHRlcjo6U1ZHRmlsdGVyKToKKyAgICAgICAgKiBzdmcvZ3JhcGhpY3MvZmlsdGVycy9T
VkdGaWx0ZXJCdWlsZGVyLmNwcDoKKwogMjAyMS0xMC0zMCAgTXlsZXMgQy4gTWF4ZmllbGQgIDxt
bWF4ZmllbGRAYXBwbGUuY29tPgogCiAgICAgICAgIE1pZ3JhdGUgdGhlIGZpcnN0IGZldyBjYWxs
ZXJzIGZyb20gSW1hZ2VCdWZmZXI6OnRydW5jYXRlZExvZ2ljYWxTaXplKCkgdG8gSW1hZ2VCdWZm
ZXI6OmxvZ2ljYWxTaXplKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0
IGIvU291cmNlL1dlYkNvcmUvU291cmNlcy50eHQKaW5kZXggOGRhMjRiNzhkYTU3ZGMzYmQyY2Vk
MTE4NGMyZWRkZmYwYjhkZTI0Ni4uZTA3NTQ0MGNmMmRmNTE2MDI2ODYyMDAzOWQ1ZDc0MjkwNDNm
YjUwMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvU291cmNlcy50eHQKKysrIGIvU291cmNl
L1dlYkNvcmUvU291cmNlcy50eHQKQEAgLTIwNjIsNiArMjA2Miw3IEBAIHBsYXRmb3JtL2dyYXBo
aWNzL2ZpbHRlcnMvRkVUaWxlLmNwcAogcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRVR1cmJ1
bGVuY2UuY3BwCiBwbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZpbHRlckVmZmVjdC5jcHAKIHBs
YXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRmlsdGVyRWZmZWN0UmVuZGVyZXIuY3BwCitwbGF0Zm9y
bS9ncmFwaGljcy9maWx0ZXJzL0ZpbHRlckZ1bmN0aW9uLmNwcAogcGxhdGZvcm0vZ3JhcGhpY3Mv
ZmlsdGVycy9GaWx0ZXJPcGVyYXRpb24uY3BwCiBwbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0Zp
bHRlck9wZXJhdGlvbnMuY3BwCiBwbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL1BvaW50TGlnaHRT
b3VyY2UuY3BwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9w
cm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0
LnBieHByb2oKaW5kZXggODQwYTRlM2IzN2YxMzE3YzgwN2QwNDM1YTE2ODZhZTcxMmUzMjM1My4u
Njg1YzRlY2QzY2RlOTBiMjY4N2FiYjkyZmRmNTllZWFkMTY2NzBhOCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMTA1NjEsNiAr
MTA1NjEsOCBAQAogCQk3MjRFRTU0RTFEQzdGMjVCMDBBOTFGRkIgLyogQWN0aXZpdHlTdGF0ZS5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBBY3Rpdml0eVN0YXRlLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTcyNEVFNTRGMURDN0YyNUIwMEE5MUZGQiAvKiBBY3Rp
dml0eVN0YXRlQ2hhbmdlT2JzZXJ2ZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gQWN0aXZpdHlTdGF0ZUNoYW5nZU9ic2VydmVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTcyNTIzOTZCMjU0Q0FEQzIwMEY1RkIxNSAvKiBOYXRpdmVJbWFnZS5jcHAgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5jcHA7IHBhdGggPSBOYXRpdmVJbWFnZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CisJCTcyNjJENzU2MjcyQTE3NDEwMEM1NkEwOSAvKiBGaWx0ZXJGdW5jdGlvbi5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBGaWx0ZXJGdW5jdGlvbi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk3
MjYyRDc1NzI3MkExNzQxMDBDNTZBMDkgLyogRmlsdGVyRnVuY3Rpb24uY3BwICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3Bw
OyBwYXRoID0gRmlsdGVyRnVuY3Rpb24uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQk3MjY2RjAxMzIyNDFCQ0UyMDA4MzM5NzUgLyogU1ZHUHJvcGVydHlBbmltYXRvckZhY3Rvcnku
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gU1ZHUHJvcGVydHlBbmltYXRvckZhY3RvcnkuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNzI2NkYwMTQyMjQxQkZCMjAwODMzOTc1IC8qIFNWR1ByaW1p
dGl2ZVByb3BlcnR5QW5pbWF0b3JJbXBsLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNWR1ByaW1pdGl2ZVBy
b3BlcnR5QW5pbWF0b3JJbXBsLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTcyNjZG
MDE1MjI0MUMwOTgwMDgzMzk3NSAvKiBTVkdQcmltaXRpdmVQcm9wZXJ0eUFuaW1hdG9yLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IFNWR1ByaW1pdGl2ZVByb3BlcnR5QW5pbWF0b3IuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKQEAgLTE4NjQ0LDExICsxODY0NiwxMSBAQAogCQkxQTU2OUNDNDBEN0Uy
QjYwMDA3QzM5ODMgLyogYnJpZGdlICovID0gewogCQkJaXNhID0gUEJYR3JvdXA7CiAJCQljaGls
ZHJlbiA9ICgKKwkJCQk1OUI1OTc3MTExMDg2NTU2MDA3MTU5RTggLyoganNjICovLAorCQkJCTFB
NTY5Q0UyMEQ3RTJCODIwMDdDMzk4MyAvKiBvYmpjICovLAogCQkJCTU5OUU3NThGMTEwNTVBMUYw
MEQ5MDRGQSAvKiBCcmlkZ2UuaCAqLywKIAkJCQkxQTcxRDU3OTBGMzM4MTkwMDBGOUNFNEUgLyog
SWRlbnRpZmllclJlcC5jcHAgKi8sCiAJCQkJMUE3MUQ1N0EwRjMzODE5MDAwRjlDRTRFIC8qIElk
ZW50aWZpZXJSZXAuaCAqLywKLQkJCQk1OUI1OTc3MTExMDg2NTU2MDA3MTU5RTggLyoganNjICov
LAotCQkJCTFBNTY5Q0UyMEQ3RTJCODIwMDdDMzk4MyAvKiBvYmpjICovLAogCQkJCTFBNTY5Q0VG
MEQ3RTJCODIwMDdDMzk4MyAvKiBydW50aW1lX2FycmF5LmNwcCAqLywKIAkJCQkxQTU2OUNGMDBE
N0UyQjgyMDA3QzM5ODMgLyogcnVudGltZV9hcnJheS5oICovLAogCQkJCTFBNTY5Q0YxMEQ3RTJC
ODIwMDdDMzk4MyAvKiBydW50aW1lX21ldGhvZC5jcHAgKi8sCkBAIC0yNTI5MSw2ICsyNTI5Myw4
IEBACiAJCQkJMDhDOTI1MTgwRkNDN0M0QTAwNDgwREVDIC8qIEZpbHRlckVmZmVjdC5oICovLAog
CQkJCTJDODU2NTM4MjRDMTBCMEIwMEEzNzY3MyAvKiBGaWx0ZXJFZmZlY3RSZW5kZXJlci5jcHAg
Ki8sCiAJCQkJMkM4NTY1MzMyNEMwRjczQzAwQTM3NjczIC8qIEZpbHRlckVmZmVjdFJlbmRlcmVy
LmggKi8sCisJCQkJNzI2MkQ3NTcyNzJBMTc0MTAwQzU2QTA5IC8qIEZpbHRlckZ1bmN0aW9uLmNw
cCAqLywKKwkJCQk3MjYyRDc1NjI3MkExNzQxMDBDNTZBMDkgLyogRmlsdGVyRnVuY3Rpb24uaCAq
LywKIAkJCQk0OUVDRUI2MzE0OTk3OTBEMDBDREQzQTQgLyogRmlsdGVyT3BlcmF0aW9uLmNwcCAq
LywKIAkJCQk0OUVDRUI2NDE0OTk3OTBEMDBDREQzQTQgLyogRmlsdGVyT3BlcmF0aW9uLmggKi8s
CiAJCQkJNDlFQ0VCNjUxNDk5NzkwRDAwQ0REM0E0IC8qIEZpbHRlck9wZXJhdGlvbnMuY3BwICov
LApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0ZpbHRlckltYWdlVmFsdWUuY3Bw
IGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU0ZpbHRlckltYWdlVmFsdWUuY3BwCmluZGV4IGM2N2Ez
NWIwNzE1YjcyMWVkODk5MmRlY2Q0OWZhOGQwYjgwNjQ3NzAuLmUwN2Y1NGEzNmQzMmEyMzNiMzA3
NjZjNGQ3NjYyMmU2OGVjZjA0OWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NG
aWx0ZXJJbWFnZVZhbHVlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTRmlsdGVySW1h
Z2VWYWx1ZS5jcHAKQEAgLTExNiwyMCArMTE2LDIyIEBAIFJlZlB0cjxJbWFnZT4gQ1NTRmlsdGVy
SW1hZ2VWYWx1ZTo6aW1hZ2UoUmVuZGVyRWxlbWVudCYgcmVuZGVyZXIsIGNvbnN0IEZsb2F0U2l6
CiAKICAgICAvLyBUcmFuc2Zvcm0gSW1hZ2UgaW50byBJbWFnZUJ1ZmZlci4KICAgICAvLyBGSVhN
RSAoMTQ5NDI0KTogVGhpcyBidWZmZXIgc2hvdWxkIG5vdCBiZSB1bmNvbmRpdGlvbmFsbHkgdW5h
Y2NlbGVyYXRlZC4KLSAgICBhdXRvIHRleHR1cmUgPSBJbWFnZUJ1ZmZlcjo6Y3JlYXRlKHNpemUs
IFJlbmRlcmluZ01vZGU6OlVuYWNjZWxlcmF0ZWQsIDEsIERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6
U1JHQigpLCBQaXhlbEZvcm1hdDo6QkdSQTgpOwotICAgIGlmICghdGV4dHVyZSkKKyAgICBhdXRv
IHJlbmRlcmluZ01vZGUgPSBSZW5kZXJpbmdNb2RlOjpVbmFjY2VsZXJhdGVkOworICAgIGF1dG8g
c291cmNlSW1hZ2UgPSBJbWFnZUJ1ZmZlcjo6Y3JlYXRlKHNpemUsIHJlbmRlcmluZ01vZGUsIDEs
IERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQigpLCBQaXhlbEZvcm1hdDo6QkdSQTgpOworICAg
IGlmICghc291cmNlSW1hZ2UpCiAgICAgICAgIHJldHVybiAmSW1hZ2U6Om51bGxJbWFnZSgpOwog
Ci0gICAgYXV0byBpbWFnZVJlY3QgPSBGbG9hdFJlY3QgeyB7IH0sIHNpemUgfTsKLSAgICB0ZXh0
dXJlLT5jb250ZXh0KCkuZHJhd0ltYWdlKCppbWFnZSwgaW1hZ2VSZWN0KTsKKyAgICBhdXRvIHNv
dXJjZUltYWdlUmVjdCA9IEZsb2F0UmVjdCB7IHsgfSwgc2l6ZSB9OworICAgIHNvdXJjZUltYWdl
LT5jb250ZXh0KCkuZHJhd0ltYWdlKCppbWFnZSwgc291cmNlSW1hZ2VSZWN0KTsKIAotICAgIGF1
dG8gY3NzRmlsdGVyID0gQ1NTRmlsdGVyOjpjcmVhdGUoKTsKLSAgICBjc3NGaWx0ZXItPnNldFNv
dXJjZUltYWdlKFdURk1vdmUodGV4dHVyZSkpOwotICAgIGNzc0ZpbHRlci0+c2V0U291cmNlSW1h
Z2VSZWN0KGltYWdlUmVjdCk7Ci0gICAgY3NzRmlsdGVyLT5zZXRGaWx0ZXJSZWdpb24oaW1hZ2VS
ZWN0KTsKKyAgICBhdXRvIGNzc0ZpbHRlciA9IENTU0ZpbHRlcjo6Y3JlYXRlKG1fZmlsdGVyT3Bl
cmF0aW9ucywgcmVuZGVyaW5nTW9kZSk7CisgICAgCisgICAgY3NzRmlsdGVyLT5zZXRTb3VyY2VJ
bWFnZVJlY3Qoc291cmNlSW1hZ2VSZWN0KTsKICAgICBpZiAoIWNzc0ZpbHRlci0+YnVpbGQocmVu
ZGVyZXIsIG1fZmlsdGVyT3BlcmF0aW9ucywgRmlsdGVyQ29uc3VtZXI6OkZpbHRlckZ1bmN0aW9u
KSkKICAgICAgICAgcmV0dXJuICZJbWFnZTo6bnVsbEltYWdlKCk7Ci0gICAgY3NzRmlsdGVyLT5h
cHBseSgpOworCisgICAgY3NzRmlsdGVyLT5zZXRTb3VyY2VJbWFnZShXVEZNb3ZlKHNvdXJjZUlt
YWdlKSk7CisgICAgY3NzRmlsdGVyLT5hcHBseUZpbHRlcigpOwogCiAgICAgYXV0byogb3V0cHV0
ID0gY3NzRmlsdGVyLT5vdXRwdXQoKTsKICAgICBpZiAoIW91dHB1dCkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvcmVpbWFnZS9GaWx0ZXJFZmZlY3RSZW5k
ZXJlckNvcmVJbWFnZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29yZWlt
YWdlL0ZpbHRlckVmZmVjdFJlbmRlcmVyQ29yZUltYWdlLmgKaW5kZXggZTZjOGRmNGQ1NWI0NTYx
MzU0OWUzYWY0OTE5MmEyNmUyYzA0NGFmNy4uZTdiYzg1MzI3MmFiNGRhZjdjOWI4NTAxODZjYzk5
YTk3NDRmOTM1ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y29yZWltYWdlL0ZpbHRlckVmZmVjdFJlbmRlcmVyQ29yZUltYWdlLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29yZWltYWdlL0ZpbHRlckVmZmVjdFJlbmRlcmVyQ29y
ZUltYWdlLmgKQEAgLTQ3LDcgKzQ3LDcgQEAgY2xhc3MgRmlsdGVyRWZmZWN0UmVuZGVyZXJDb3Jl
SW1hZ2UgOiBwdWJsaWMgRmlsdGVyRWZmZWN0UmVuZGVyZXIgewogcHVibGljOgogICAgIHN0YXRp
YyBzdGQ6OnVuaXF1ZV9wdHI8RmlsdGVyRWZmZWN0UmVuZGVyZXJDb3JlSW1hZ2U+IHRyeUNyZWF0
ZShGaWx0ZXJFZmZlY3QmKTsKICAgICBSZXRhaW5QdHI8Q0lDb250ZXh0PiBzaGFyZWRDSUNvbnRl
eHQoKTsKLSAgICB2b2lkIGFwcGx5RWZmZWN0cyhGaWx0ZXJFZmZlY3QmKSBmaW5hbDsKKyAgICB2
b2lkIGFwcGx5RWZmZWN0cyhjb25zdCBGaWx0ZXImLCBGaWx0ZXJFZmZlY3QmKSBmaW5hbDsKICAg
ICBib29sIGhhc1Jlc3VsdCgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1fb3V0cHV0SW1hZ2U7IH0K
ICAgICBJbWFnZUJ1ZmZlciogb3V0cHV0KCkgY29uc3QgZmluYWw7CiAgICAgRmxvYXRSZWN0IGRl
c3RSZWN0KGNvbnN0IEZpbHRlckVmZmVjdCYpIGNvbnN0IGZpbmFsOwpAQCAtNTUsMTIgKzU1LDEy
IEBAIHB1YmxpYzoKICAgICBGaWx0ZXJFZmZlY3RSZW5kZXJlckNvcmVJbWFnZSgpOwogICAgIAog
cHJpdmF0ZToKLSAgICBSZXRhaW5QdHI8Q0lJbWFnZT4gY29ubmVjdENJRmlsdGVycyhGaWx0ZXJF
ZmZlY3QmKTsKKyAgICBSZXRhaW5QdHI8Q0lJbWFnZT4gY29ubmVjdENJRmlsdGVycyhjb25zdCBG
aWx0ZXImLCBGaWx0ZXJFZmZlY3QmKTsKICAgICB2b2lkIHJlbmRlclRvSW1hZ2VCdWZmZXIoRmls
dGVyRWZmZWN0JikgZmluYWw7CiAgICAgc3RhdGljIGJvb2wgc3VwcG9ydHNDb3JlSW1hZ2VSZW5k
ZXJpbmcoRmlsdGVyRWZmZWN0Jik7CiAgICAgc3RhdGljIGJvb2wgY2FuUmVuZGVyVXNpbmdDSUZp
bHRlcnMoRmlsdGVyRWZmZWN0Jik7CiAgICAgCi0gICAgUmV0YWluUHRyPENJSW1hZ2U+IGltYWdl
Rm9yU291cmNlR3JhcGhpYyhTb3VyY2VHcmFwaGljJik7CisgICAgUmV0YWluUHRyPENJSW1hZ2U+
IGltYWdlRm9yU291cmNlR3JhcGhpYyhjb25zdCBGaWx0ZXImKTsKICAgICBSZXRhaW5QdHI8Q0lJ
bWFnZT4gaW1hZ2VGb3JGRUNvbG9yTWF0cml4KGNvbnN0IEZFQ29sb3JNYXRyaXgmLCBjb25zdCBW
ZWN0b3I8UmV0YWluUHRyPENJSW1hZ2U+PiYpOwogICAgIFJldGFpblB0cjxDSUltYWdlPiBpbWFn
ZUZvckZFQ29tcG9uZW50VHJhbnNmZXIoY29uc3QgRkVDb21wb25lbnRUcmFuc2ZlciYsIFZlY3Rv
cjxSZXRhaW5QdHI8Q0lJbWFnZT4+Jik7CiAgICAgCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jb3JlaW1hZ2UvRmlsdGVyRWZmZWN0UmVuZGVyZXJDb3JlSW1h
Z2UubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb3JlaW1hZ2UvRmlsdGVy
RWZmZWN0UmVuZGVyZXJDb3JlSW1hZ2UubW0KaW5kZXggOTdlMTEzN2IyOWQ3MWMyYjU0NDE1NzMw
NjcyNDAwYjgyNDI4YjM2MS4uOGI0MDAxNzcwMGUxMGM2ODdiYTcwNmU1NTk2YjhjMGIyMzBiYTI0
ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29yZWltYWdl
L0ZpbHRlckVmZmVjdFJlbmRlcmVyQ29yZUltYWdlLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2NvcmVpbWFnZS9GaWx0ZXJFZmZlY3RSZW5kZXJlckNvcmVJbWFnZS5t
bQpAQCAtNzIsMTEgKzcyLDExIEBAIHN0YXRpYyBib29sIGlzTnVsbE9yTGluZWFyQ29tcG9uZW50
VHJhbnNmZXJGdW5jdGlvbihjb25zdCBGRUNvbXBvbmVudFRyYW5zZmVyJiBlCiBib29sIEZpbHRl
ckVmZmVjdFJlbmRlcmVyQ29yZUltYWdlOjpzdXBwb3J0c0NvcmVJbWFnZVJlbmRlcmluZyhGaWx0
ZXJFZmZlY3QmIGVmZmVjdCkKIHsKICAgICAvLyBGSVhNRTogY2hhbmdlIHJldHVybiB2YWx1ZSB0
byB0cnVlIG9uY2UgdGhleSBhcmUgaW1wbGVtZW50ZWQKLSAgICBzd2l0Y2ggKGVmZmVjdC5maWx0
ZXJFZmZlY3RDbGFzc1R5cGUoKSkgeworICAgIHN3aXRjaCAoZWZmZWN0LmZpbHRlclR5cGUoKSkg
ewogICAgIGNhc2UgRmlsdGVyRWZmZWN0OjpUeXBlOjpTb3VyY2VHcmFwaGljOgogICAgICAgICBy
ZXR1cm4gdHJ1ZTsKICAgICAgICAgICAgIAotICAgIGNhc2UgRmlsdGVyRWZmZWN0OjpUeXBlOjpD
b2xvck1hdHJpeDogeworICAgIGNhc2UgRmlsdGVyRWZmZWN0OjpUeXBlOjpGRUNvbG9yTWF0cml4
OiB7CiAgICAgICAgIHN3aXRjaCAoZG93bmNhc3Q8RkVDb2xvck1hdHJpeD4oZWZmZWN0KS50eXBl
KCkpIHsKICAgICAgICAgY2FzZSBGRUNPTE9STUFUUklYX1RZUEVfVU5LTk9XTjoKICAgICAgICAg
Y2FzZSBGRUNPTE9STUFUUklYX1RZUEVfTFVNSU5BTkNFVE9BTFBIQToKQEAgLTg4LDkwICs4OCw1
NiBAQCBib29sIEZpbHRlckVmZmVjdFJlbmRlcmVyQ29yZUltYWdlOjpzdXBwb3J0c0NvcmVJbWFn
ZVJlbmRlcmluZyhGaWx0ZXJFZmZlY3QmIGVmZgogICAgICAgICB9CiAgICAgfQogCi0gICAgY2Fz
ZSBGaWx0ZXJFZmZlY3Q6OlR5cGU6OkNvbXBvbmVudFRyYW5zZmVyOgorICAgIGNhc2UgRmlsdGVy
RWZmZWN0OjpUeXBlOjpGRUNvbXBvbmVudFRyYW5zZmVyOgogICAgICAgICByZXR1cm4gaXNOdWxs
T3JMaW5lYXJDb21wb25lbnRUcmFuc2ZlckZ1bmN0aW9uKGRvd25jYXN0PEZFQ29tcG9uZW50VHJh
bnNmZXI+KGVmZmVjdCkpOwogCi0gICAgY2FzZSBGaWx0ZXJFZmZlY3Q6OlR5cGU6OkJsZW5kOgot
ICAgIGNhc2UgRmlsdGVyRWZmZWN0OjpUeXBlOjpDb21wb3NpdGU6Ci0gICAgY2FzZSBGaWx0ZXJF
ZmZlY3Q6OlR5cGU6OkNvbnZvbHZlTWF0cml4OgotICAgIGNhc2UgRmlsdGVyRWZmZWN0OjpUeXBl
OjpEaWZmdXNlTGlnaHRpbmc6Ci0gICAgY2FzZSBGaWx0ZXJFZmZlY3Q6OlR5cGU6OkRpc3BsYWNl
bWVudE1hcDoKLSAgICBjYXNlIEZpbHRlckVmZmVjdDo6VHlwZTo6RHJvcFNoYWRvdzoKLSAgICBj
YXNlIEZpbHRlckVmZmVjdDo6VHlwZTo6Rmxvb2Q6Ci0gICAgY2FzZSBGaWx0ZXJFZmZlY3Q6OlR5
cGU6OkdhdXNzaWFuQmx1cjoKLSAgICBjYXNlIEZpbHRlckVmZmVjdDo6VHlwZTo6SW1hZ2U6Ci0g
ICAgY2FzZSBGaWx0ZXJFZmZlY3Q6OlR5cGU6OkxpZ2h0aW5nOgotICAgIGNhc2UgRmlsdGVyRWZm
ZWN0OjpUeXBlOjpNZXJnZToKLSAgICBjYXNlIEZpbHRlckVmZmVjdDo6VHlwZTo6TW9ycGhvbG9n
eToKLSAgICBjYXNlIEZpbHRlckVmZmVjdDo6VHlwZTo6T2Zmc2V0OgotICAgIGNhc2UgRmlsdGVy
RWZmZWN0OjpUeXBlOjpTcGVjdWxhckxpZ2h0aW5nOgotICAgIGNhc2UgRmlsdGVyRWZmZWN0OjpU
eXBlOjpUaWxlOgotICAgIGNhc2UgRmlsdGVyRWZmZWN0OjpUeXBlOjpUdXJidWxlbmNlOgotICAg
IGNhc2UgRmlsdGVyRWZmZWN0OjpUeXBlOjpTb3VyY2VBbHBoYToKKyAgICBkZWZhdWx0OgogICAg
ICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogICAgIHJldHVybiBmYWxzZTsKIH0KIAotdm9pZCBG
aWx0ZXJFZmZlY3RSZW5kZXJlckNvcmVJbWFnZTo6YXBwbHlFZmZlY3RzKEZpbHRlckVmZmVjdCYg
bGFzdEVmZmVjdCkKK3ZvaWQgRmlsdGVyRWZmZWN0UmVuZGVyZXJDb3JlSW1hZ2U6OmFwcGx5RWZm
ZWN0cyhjb25zdCBGaWx0ZXImIGZpbHRlciwgRmlsdGVyRWZmZWN0JiBsYXN0RWZmZWN0KQogewot
ICAgIG1fb3V0cHV0SW1hZ2UgPSBjb25uZWN0Q0lGaWx0ZXJzKGxhc3RFZmZlY3QpOworICAgIG1f
b3V0cHV0SW1hZ2UgPSBjb25uZWN0Q0lGaWx0ZXJzKGZpbHRlciwgbGFzdEVmZmVjdCk7CiAgICAg
aWYgKCFtX291dHB1dEltYWdlKQogICAgICAgICByZXR1cm47CiAgICAgcmVuZGVyVG9JbWFnZUJ1
ZmZlcihsYXN0RWZmZWN0KTsKIH0KIAotUmV0YWluUHRyPENJSW1hZ2U+IEZpbHRlckVmZmVjdFJl
bmRlcmVyQ29yZUltYWdlOjpjb25uZWN0Q0lGaWx0ZXJzKEZpbHRlckVmZmVjdCYgZWZmZWN0KQor
UmV0YWluUHRyPENJSW1hZ2U+IEZpbHRlckVmZmVjdFJlbmRlcmVyQ29yZUltYWdlOjpjb25uZWN0
Q0lGaWx0ZXJzKGNvbnN0IEZpbHRlciYgZmlsdGVyLCBGaWx0ZXJFZmZlY3QmIGVmZmVjdCkKIHsK
ICAgICBWZWN0b3I8UmV0YWluUHRyPENJSW1hZ2U+PiBpbnB1dEltYWdlczsKICAgICAKICAgICBm
b3IgKGF1dG8gaW4gOiBlZmZlY3QuaW5wdXRFZmZlY3RzKCkpIHsKLSAgICAgICAgYXV0byBpbnB1
dEltYWdlID0gY29ubmVjdENJRmlsdGVycygqaW4pOworICAgICAgICBhdXRvIGlucHV0SW1hZ2Ug
PSBjb25uZWN0Q0lGaWx0ZXJzKGZpbHRlciwgKmluKTsKICAgICAgICAgaWYgKCFpbnB1dEltYWdl
KQogICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgICAgIGlucHV0SW1hZ2VzLmFwcGVu
ZChpbnB1dEltYWdlKTsKICAgICB9Ci0gICAgZWZmZWN0LmRldGVybWluZUFic29sdXRlUGFpbnRS
ZWN0KCk7CisgICAgZWZmZWN0LmRldGVybWluZUFic29sdXRlUGFpbnRSZWN0KGZpbHRlcik7CiAg
ICAgZWZmZWN0LnNldFJlc3VsdENvbG9yU3BhY2UoZWZmZWN0Lm9wZXJhdGluZ0NvbG9yU3BhY2Uo
KSk7CiAgICAgCiAgICAgaWYgKGVmZmVjdC5hYnNvbHV0ZVBhaW50UmVjdCgpLmlzRW1wdHkoKSB8
fCBJbWFnZUJ1ZmZlcjo6c2l6ZU5lZWRzQ2xhbXBpbmcoZWZmZWN0LmFic29sdXRlUGFpbnRSZWN0
KCkuc2l6ZSgpKSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgCi0gICAgc3dpdGNoIChl
ZmZlY3QuZmlsdGVyRWZmZWN0Q2xhc3NUeXBlKCkpIHsKKyAgICBzd2l0Y2ggKGVmZmVjdC5maWx0
ZXJUeXBlKCkpIHsKICAgICBjYXNlIEZpbHRlckVmZmVjdDo6VHlwZTo6U291cmNlR3JhcGhpYzoK
LSAgICAgICAgcmV0dXJuIGltYWdlRm9yU291cmNlR3JhcGhpYyhkb3duY2FzdDxTb3VyY2VHcmFw
aGljPihlZmZlY3QpKTsKLSAgICBjYXNlIEZpbHRlckVmZmVjdDo6VHlwZTo6Q29sb3JNYXRyaXg6
CisgICAgICAgIHJldHVybiBpbWFnZUZvclNvdXJjZUdyYXBoaWMoZmlsdGVyKTsKKyAgICBjYXNl
IEZpbHRlckVmZmVjdDo6VHlwZTo6RkVDb2xvck1hdHJpeDoKICAgICAgICAgcmV0dXJuIGltYWdl
Rm9yRkVDb2xvck1hdHJpeChkb3duY2FzdDxGRUNvbG9yTWF0cml4PihlZmZlY3QpLCBpbnB1dElt
YWdlcyk7Ci0gICAgY2FzZSBGaWx0ZXJFZmZlY3Q6OlR5cGU6OkNvbXBvbmVudFRyYW5zZmVyOgor
ICAgIGNhc2UgRmlsdGVyRWZmZWN0OjpUeXBlOjpGRUNvbXBvbmVudFRyYW5zZmVyOgogICAgICAg
ICByZXR1cm4gaW1hZ2VGb3JGRUNvbXBvbmVudFRyYW5zZmVyKGRvd25jYXN0PEZFQ29tcG9uZW50
VHJhbnNmZXI+KGVmZmVjdCksIGlucHV0SW1hZ2VzKTsKIAotICAgIC8vIEZJWE1FOiBJbXBsZW1l
bnQgdGhvc2UgZmlsdGVycyB1c2luZyBDSUZpbHRlciBzbyB0aGF0IHRoZSBmdW5jdGlvbiByZXR1
cm5zIGEgdmFsaWQgQ0lJbWFnZQotICAgIGNhc2UgRmlsdGVyRWZmZWN0OjpUeXBlOjpCbGVuZDoK
LSAgICBjYXNlIEZpbHRlckVmZmVjdDo6VHlwZTo6Q29tcG9zaXRlOgotICAgIGNhc2UgRmlsdGVy
RWZmZWN0OjpUeXBlOjpDb252b2x2ZU1hdHJpeDoKLSAgICBjYXNlIEZpbHRlckVmZmVjdDo6VHlw
ZTo6RGlmZnVzZUxpZ2h0aW5nOgotICAgIGNhc2UgRmlsdGVyRWZmZWN0OjpUeXBlOjpEaXNwbGFj
ZW1lbnRNYXA6Ci0gICAgY2FzZSBGaWx0ZXJFZmZlY3Q6OlR5cGU6OkRyb3BTaGFkb3c6Ci0gICAg
Y2FzZSBGaWx0ZXJFZmZlY3Q6OlR5cGU6OkZsb29kOgotICAgIGNhc2UgRmlsdGVyRWZmZWN0OjpU
eXBlOjpHYXVzc2lhbkJsdXI6Ci0gICAgY2FzZSBGaWx0ZXJFZmZlY3Q6OlR5cGU6OkltYWdlOgot
ICAgIGNhc2UgRmlsdGVyRWZmZWN0OjpUeXBlOjpMaWdodGluZzoKLSAgICBjYXNlIEZpbHRlckVm
ZmVjdDo6VHlwZTo6TWVyZ2U6Ci0gICAgY2FzZSBGaWx0ZXJFZmZlY3Q6OlR5cGU6Ok1vcnBob2xv
Z3k6Ci0gICAgY2FzZSBGaWx0ZXJFZmZlY3Q6OlR5cGU6Ok9mZnNldDoKLSAgICBjYXNlIEZpbHRl
ckVmZmVjdDo6VHlwZTo6U3BlY3VsYXJMaWdodGluZzoKLSAgICBjYXNlIEZpbHRlckVmZmVjdDo6
VHlwZTo6VGlsZToKLSAgICBjYXNlIEZpbHRlckVmZmVjdDo6VHlwZTo6VHVyYnVsZW5jZToKLSAg
ICBjYXNlIEZpbHRlckVmZmVjdDo6VHlwZTo6U291cmNlQWxwaGE6CiAgICAgZGVmYXVsdDoKICAg
ICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgfQogICAgIHJldHVybiBudWxscHRyOwogfQogCi1S
ZXRhaW5QdHI8Q0lJbWFnZT4gRmlsdGVyRWZmZWN0UmVuZGVyZXJDb3JlSW1hZ2U6OmltYWdlRm9y
U291cmNlR3JhcGhpYyhTb3VyY2VHcmFwaGljJiBlZmZlY3QpCitSZXRhaW5QdHI8Q0lJbWFnZT4g
RmlsdGVyRWZmZWN0UmVuZGVyZXJDb3JlSW1hZ2U6OmltYWdlRm9yU291cmNlR3JhcGhpYyhjb25z
dCBGaWx0ZXImIGZpbHRlcikKIHsKLSAgICBJbWFnZUJ1ZmZlciogc291cmNlSW1hZ2UgPSBlZmZl
Y3QuZmlsdGVyKCkuc291cmNlSW1hZ2UoKTsKKyAgICBJbWFnZUJ1ZmZlciogc291cmNlSW1hZ2Ug
PSBmaWx0ZXIuc291cmNlSW1hZ2UoKTsKICAgICBpZiAoIXNvdXJjZUltYWdlKQogICAgICAgICBy
ZXR1cm4gbnVsbHB0cjsKICAgICAKQEAgLTI3Niw3ICsyNDIsNyBAQCBJbWFnZUJ1ZmZlciogRmls
dGVyRWZmZWN0UmVuZGVyZXJDb3JlSW1hZ2U6Om91dHB1dCgpIGNvbnN0CiB2b2lkIEZpbHRlckVm
ZmVjdFJlbmRlcmVyQ29yZUltYWdlOjpyZW5kZXJUb0ltYWdlQnVmZmVyKEZpbHRlckVmZmVjdCYg
bGFzdEVmZmVjdCkKIHsKICAgICBGbG9hdFNpemUgY2xhbXBlZFNpemUgPSBJbWFnZUJ1ZmZlcjo6
Y2xhbXBlZFNpemUobGFzdEVmZmVjdC5hYnNvbHV0ZVBhaW50UmVjdCgpLnNpemUoKSk7Ci0gICAg
bV9vdXRwdXRJbWFnZUJ1ZmZlciA9IElPU3VyZmFjZUltYWdlQnVmZmVyOjpjcmVhdGUoY2xhbXBl
ZFNpemUsIGxhc3RFZmZlY3QuZmlsdGVyKCkuZmlsdGVyU2NhbGUoKSwgbGFzdEVmZmVjdC5yZXN1
bHRDb2xvclNwYWNlKCksIFBpeGVsRm9ybWF0OjpCR1JBOCk7CisgICAgbV9vdXRwdXRJbWFnZUJ1
ZmZlciA9IElPU3VyZmFjZUltYWdlQnVmZmVyOjpjcmVhdGUoY2xhbXBlZFNpemUsIDEsIGxhc3RF
ZmZlY3QucmVzdWx0Q29sb3JTcGFjZSgpLCBQaXhlbEZvcm1hdDo6QkdSQTgpOwogICAgIGlmICgh
bV9vdXRwdXRJbWFnZUJ1ZmZlcikgewogICAgICAgICBjbGVhclJlc3VsdCgpOwogICAgICAgICBy
ZXR1cm47CkBAIC0yODgsNyArMjU0LDYgQEAgdm9pZCBGaWx0ZXJFZmZlY3RSZW5kZXJlckNvcmVJ
bWFnZTo6cmVuZGVyVG9JbWFnZUJ1ZmZlcihGaWx0ZXJFZmZlY3QmIGxhc3RFZmZlY3QKIEZsb2F0
UmVjdCBGaWx0ZXJFZmZlY3RSZW5kZXJlckNvcmVJbWFnZTo6ZGVzdFJlY3QoY29uc3QgRmlsdGVy
RWZmZWN0JiBsYXN0RWZmZWN0KSBjb25zdAogewogICAgIEludFNpemUgZGVzdFNpemUgPSBsYXN0
RWZmZWN0LmFic29sdXRlUGFpbnRSZWN0KCkuc2l6ZSgpOwotICAgIGRlc3RTaXplLnNjYWxlKGxh
c3RFZmZlY3QuZmlsdGVyKCkuZmlsdGVyU2NhbGUoKSk7CiAgICAgRmxvYXRSZWN0IGRlc3RSZWN0
ID0gRmxvYXRSZWN0KEZsb2F0UG9pbnQoKSwgZGVzdFNpemUpOwogICAgIHJldHVybiBkZXN0UmVj
dDsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NwdS9h
cm0vZmlsdGVycy9GRUJsZW5kTkVPTi5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY3B1L2FybS9maWx0ZXJzL0ZFQmxlbmRORU9OLmgKaW5kZXggMjYxMTBjZGZiMGJiNmNmNDkw
NDU4Mzg3Nzg3YWMxMGZhMTcxY2YxOC4uOTg3MWEwNWRlNGMzYWI2Zjc5NjE0NTE2ODUxODNkZTc3
ZDBkNjM5ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY3B1
L2FybS9maWx0ZXJzL0ZFQmxlbmRORU9OLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY3B1L2FybS9maWx0ZXJzL0ZFQmxlbmRORU9OLmgKQEAgLTEwNyw3ICsxMDcsNyBA
QCBwdWJsaWM6CiAgICAgfQogfTsKIAotdm9pZCBGRUJsZW5kOjpwbGF0Zm9ybUFwcGx5U29mdHdh
cmUoKQordm9pZCBGRUJsZW5kOjpwbGF0Zm9ybUFwcGx5U29mdHdhcmUoY29uc3QgRmlsdGVyJikK
IHsKICAgICBGaWx0ZXJFZmZlY3QqIGluID0gaW5wdXRFZmZlY3QoMCk7CiAgICAgRmlsdGVyRWZm
ZWN0KiBpbjIgPSBpbnB1dEVmZmVjdCgxKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVCbGVuZC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFQmxlbmQuY3BwCmluZGV4IDVhYzdmNDkwZDRjZGE1MzNh
NDFmNWMzZDg1NDUzMmMxOGFkY2RiNjYuLmZiZDU5NTViYWY5MDY4NmMwNzA1MzEzZGI2NGZiN2E5
MTgzMzQ1ODQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Zp
bHRlcnMvRkVCbGVuZC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
ZmlsdGVycy9GRUJsZW5kLmNwcApAQCAtMzQsMTUgKzM0LDE1IEBACiAKIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIAotRkVCbGVuZDo6RkVCbGVuZChGaWx0ZXImIGZpbHRlciwgQmxlbmRNb2RlIG1vZGUp
Ci0gICAgOiBGaWx0ZXJFZmZlY3QoZmlsdGVyLCBUeXBlOjpCbGVuZCkKK0ZFQmxlbmQ6OkZFQmxl
bmQoQmxlbmRNb2RlIG1vZGUpCisgICAgOiBGaWx0ZXJFZmZlY3QoRmlsdGVyRWZmZWN0OjpUeXBl
OjpGRUJsZW5kKQogICAgICwgbV9tb2RlKG1vZGUpCiB7CiB9CiAKLVJlZjxGRUJsZW5kPiBGRUJs
ZW5kOjpjcmVhdGUoRmlsdGVyJiBmaWx0ZXIsIEJsZW5kTW9kZSBtb2RlKQorUmVmPEZFQmxlbmQ+
IEZFQmxlbmQ6OmNyZWF0ZShCbGVuZE1vZGUgbW9kZSkKIHsKLSAgICByZXR1cm4gYWRvcHRSZWYo
Km5ldyBGRUJsZW5kKGZpbHRlciwgbW9kZSkpOworICAgIHJldHVybiBhZG9wdFJlZigqbmV3IEZF
QmxlbmQobW9kZSkpOwogfQogCiBib29sIEZFQmxlbmQ6OnNldEJsZW5kTW9kZShCbGVuZE1vZGUg
bW9kZSkKQEAgLTU0LDcgKzU0LDcgQEAgYm9vbCBGRUJsZW5kOjpzZXRCbGVuZE1vZGUoQmxlbmRN
b2RlIG1vZGUpCiB9CiAKICNpZiAhSEFWRShBUk1fTkVPTl9JTlRSSU5TSUNTKQotdm9pZCBGRUJs
ZW5kOjpwbGF0Zm9ybUFwcGx5U29mdHdhcmUoKQordm9pZCBGRUJsZW5kOjpwbGF0Zm9ybUFwcGx5
U29mdHdhcmUoY29uc3QgRmlsdGVyJikKIHsKICAgICBGaWx0ZXJFZmZlY3QqIGluID0gaW5wdXRF
ZmZlY3QoMCk7CiAgICAgRmlsdGVyRWZmZWN0KiBpbjIgPSBpbnB1dEVmZmVjdCgxKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVCbGVuZC5o
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRUJsZW5kLmgKaW5k
ZXggNzBlODQwN2JmNWMyMDBkNDUyMTZiOGY5YzA4NTE3YjUwNzllNzk2Ni4uNDA2ZjYzNjJmZTZi
YWVkZmUzYzM3YWM5YzlkNGJhNjE3OTBkZDg2YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRUJsZW5kLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRUJsZW5kLmgKQEAgLTI0LDIxICsyNCwxOSBAQAog
CiAjaW5jbHVkZSAiRmlsdGVyRWZmZWN0LmgiCiAKLSNpbmNsdWRlICJGaWx0ZXIuaCIKLQogbmFt
ZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBGRUJsZW5kIDogcHVibGljIEZpbHRlckVmZmVjdCB7
CiBwdWJsaWM6Ci0gICAgc3RhdGljIFJlZjxGRUJsZW5kPiBjcmVhdGUoRmlsdGVyJiwgQmxlbmRN
b2RlKTsKKyAgICBzdGF0aWMgUmVmPEZFQmxlbmQ+IGNyZWF0ZShCbGVuZE1vZGUpOwogCiAgICAg
QmxlbmRNb2RlIGJsZW5kTW9kZSgpIGNvbnN0IHsgcmV0dXJuIG1fbW9kZTsgfQogICAgIGJvb2wg
c2V0QmxlbmRNb2RlKEJsZW5kTW9kZSk7CiAKIHByaXZhdGU6Ci0gICAgY29uc3QgY2hhciogZmls
dGVyTmFtZSgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuICJGRUJsZW5kIjsgfQorICAgIEZFQmxlbmQo
QmxlbmRNb2RlKTsKIAotICAgIHZvaWQgcGxhdGZvcm1BcHBseVNvZnR3YXJlKCkgb3ZlcnJpZGU7
CisgICAgdm9pZCBwbGF0Zm9ybUFwcGx5U29mdHdhcmUoY29uc3QgRmlsdGVyJikgb3ZlcnJpZGU7
CiAgICAgdm9pZCBwbGF0Zm9ybUFwcGx5R2VuZXJpYyh1bnNpZ25lZCBjaGFyKiBzcmNQaXhlbEFy
cmF5QSwgdW5zaWduZWQgY2hhciogc3JjUGl4ZWxBcnJheUIsIHVuc2lnbmVkIGNoYXIqIGRzdFBp
eGVsQXJyYXksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBjb2xvckFycmF5
TGVuZ3RoKTsKICAgICB2b2lkIHBsYXRmb3JtQXBwbHlORU9OKHVuc2lnbmVkIGNoYXIqIHNyY1Bp
eGVsQXJyYXlBLCB1bnNpZ25lZCBjaGFyKiBzcmNQaXhlbEFycmF5QiwgdW5zaWduZWQgY2hhciog
ZHN0UGl4ZWxBcnJheSwKQEAgLTQ2LDEwICs0NCw5IEBAIHByaXZhdGU6CiAKICAgICBXVEY6OlRl
eHRTdHJlYW0mIGV4dGVybmFsUmVwcmVzZW50YXRpb24oV1RGOjpUZXh0U3RyZWFtJiwgUmVwcmVz
ZW50YXRpb25UeXBlKSBjb25zdCBvdmVycmlkZTsKIAotICAgIEZFQmxlbmQoRmlsdGVyJiwgQmxl
bmRNb2RlKTsKLQogICAgIEJsZW5kTW9kZSBtX21vZGU7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBX
ZWJDb3JlCiAKK1NQRUNJQUxJWkVfVFlQRV9UUkFJVFNfRklMVEVSX0VGRkVDVChGRUJsZW5kKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRUNv
bG9yTWF0cml4LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMv
RkVDb2xvck1hdHJpeC5jcHAKaW5kZXggMTY0MjJkNmRjNWI1N2VjNmY3NDdhNDIxMGMyODU0MzMy
YmExZDNlNS4uNTVjZDZhMTQxMDgwMGEzOGE0ZGRlZDA5YmFlNzU2MDNjYzVlNjc5YiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRUNvbG9yTWF0
cml4LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZF
Q29sb3JNYXRyaXguY3BwCkBAIC0zNSwxNiArMzUsMTYgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUg
ewogCi1GRUNvbG9yTWF0cml4OjpGRUNvbG9yTWF0cml4KEZpbHRlciYgZmlsdGVyLCBDb2xvck1h
dHJpeFR5cGUgdHlwZSwgVmVjdG9yPGZsb2F0PiYmIHZhbHVlcykKLSAgICA6IEZpbHRlckVmZmVj
dChmaWx0ZXIsIFR5cGU6OkNvbG9yTWF0cml4KQorRkVDb2xvck1hdHJpeDo6RkVDb2xvck1hdHJp
eChDb2xvck1hdHJpeFR5cGUgdHlwZSwgVmVjdG9yPGZsb2F0PiYmIHZhbHVlcykKKyAgICA6IEZp
bHRlckVmZmVjdChGaWx0ZXJFZmZlY3Q6OlR5cGU6OkZFQ29sb3JNYXRyaXgpCiAgICAgLCBtX3R5
cGUodHlwZSkKICAgICAsIG1fdmFsdWVzKFdURk1vdmUodmFsdWVzKSkKIHsKIH0KIAotUmVmPEZF
Q29sb3JNYXRyaXg+IEZFQ29sb3JNYXRyaXg6OmNyZWF0ZShGaWx0ZXImIGZpbHRlciwgQ29sb3JN
YXRyaXhUeXBlIHR5cGUsIFZlY3RvcjxmbG9hdD4mJiB2YWx1ZXMpCitSZWY8RkVDb2xvck1hdHJp
eD4gRkVDb2xvck1hdHJpeDo6Y3JlYXRlKENvbG9yTWF0cml4VHlwZSB0eXBlLCBWZWN0b3I8Zmxv
YXQ+JiYgdmFsdWVzKQogewotICAgIHJldHVybiBhZG9wdFJlZigqbmV3IEZFQ29sb3JNYXRyaXgo
ZmlsdGVyLCB0eXBlLCBXVEZNb3ZlKHZhbHVlcykpKTsKKyAgICByZXR1cm4gYWRvcHRSZWYoKm5l
dyBGRUNvbG9yTWF0cml4KHR5cGUsIFdURk1vdmUodmFsdWVzKSkpOwogfQogCiBib29sIEZFQ29s
b3JNYXRyaXg6OnNldFR5cGUoQ29sb3JNYXRyaXhUeXBlIHR5cGUpCkBAIC0yNzMsNyArMjczLDcg
QEAgdm9pZCBlZmZlY3RUeXBlKFVpbnQ4Q2xhbXBlZEFycmF5JiBwaXhlbEFycmF5LCBjb25zdCBW
ZWN0b3I8ZmxvYXQ+JiB2YWx1ZXMsIEludFMKICAgICB9CiB9CiAKLXZvaWQgRkVDb2xvck1hdHJp
eDo6cGxhdGZvcm1BcHBseVNvZnR3YXJlKCkKK3ZvaWQgRkVDb2xvck1hdHJpeDo6cGxhdGZvcm1B
cHBseVNvZnR3YXJlKGNvbnN0IEZpbHRlciYpCiB7CiAgICAgRmlsdGVyRWZmZWN0KiBpbiA9IGlu
cHV0RWZmZWN0KDApOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9maWx0ZXJzL0ZFQ29sb3JNYXRyaXguaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2ZpbHRlcnMvRkVDb2xvck1hdHJpeC5oCmluZGV4IDI5ZTQxYThhZWQxZTRmMGI1Mzk3
MDNhYzRkYjU1MjRlZmE0YzEyM2YuLjIyOWZmMGI4YzQ0ZjUxYzBlZjA1NGU1ZWEyYTQyNDZlMjI3
ZDg3ZDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRl
cnMvRkVDb2xvck1hdHJpeC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2ZpbHRlcnMvRkVDb2xvck1hdHJpeC5oCkBAIC0yMiw4ICsyMiw2IEBACiAjcHJhZ21hIG9uY2UK
IAogI2luY2x1ZGUgIkZpbHRlckVmZmVjdC5oIgotCi0jaW5jbHVkZSAiRmlsdGVyLmgiCiAjaW5j
bHVkZSA8d3RmL1ZlY3Rvci5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC0zOCw3ICszNiw3
IEBAIGVudW0gQ29sb3JNYXRyaXhUeXBlIHsKIAogY2xhc3MgRkVDb2xvck1hdHJpeCA6IHB1Ymxp
YyBGaWx0ZXJFZmZlY3QgewogcHVibGljOgotICAgIHN0YXRpYyBSZWY8RkVDb2xvck1hdHJpeD4g
Y3JlYXRlKEZpbHRlciYsIENvbG9yTWF0cml4VHlwZSwgVmVjdG9yPGZsb2F0PiYmKTsKKyAgICBz
dGF0aWMgUmVmPEZFQ29sb3JNYXRyaXg+IGNyZWF0ZShDb2xvck1hdHJpeFR5cGUsIFZlY3Rvcjxm
bG9hdD4mJik7CiAKICAgICBDb2xvck1hdHJpeFR5cGUgdHlwZSgpIGNvbnN0IHsgcmV0dXJuIG1f
dHlwZTsgfQogICAgIGJvb2wgc2V0VHlwZShDb2xvck1hdHJpeFR5cGUpOwpAQCAtNTAsMTEgKzQ4
LDkgQEAgcHVibGljOgogICAgIHN0YXRpYyBpbmxpbmUgdm9pZCBjYWxjdWxhdGVIdWVSb3RhdGVD
b21wb25lbnRzKGZsb2F0KiBjb21wb25lbnRzLCBmbG9hdCB2YWx1ZSk7CiAKIHByaXZhdGU6Ci0g
ICAgRkVDb2xvck1hdHJpeChGaWx0ZXImLCBDb2xvck1hdHJpeFR5cGUsIFZlY3RvcjxmbG9hdD4m
Jik7Ci0KLSAgICBjb25zdCBjaGFyKiBmaWx0ZXJOYW1lKCkgY29uc3QgZmluYWwgeyByZXR1cm4g
IkZFQ29sb3JNYXRyaXgiOyB9CisgICAgRkVDb2xvck1hdHJpeChDb2xvck1hdHJpeFR5cGUsIFZl
Y3RvcjxmbG9hdD4mJik7CiAKLSAgICB2b2lkIHBsYXRmb3JtQXBwbHlTb2Z0d2FyZSgpIG92ZXJy
aWRlOworICAgIHZvaWQgcGxhdGZvcm1BcHBseVNvZnR3YXJlKGNvbnN0IEZpbHRlciYpIG92ZXJy
aWRlOwogCiAgICAgV1RGOjpUZXh0U3RyZWFtJiBleHRlcm5hbFJlcHJlc2VudGF0aW9uKFdURjo6
VGV4dFN0cmVhbSYsIFJlcHJlc2VudGF0aW9uVHlwZSkgY29uc3Qgb3ZlcnJpZGU7CiAKQEAgLTkz
LDcgKzg5LDQgQEAgaW5saW5lIHZvaWQgRkVDb2xvck1hdHJpeDo6Y2FsY3VsYXRlSHVlUm90YXRl
Q29tcG9uZW50cyhmbG9hdCogY29tcG9uZW50cywgZmxvYXQKIAogfSAvLyBuYW1lc3BhY2UgV2Vi
Q29yZQogCi1TUEVDSUFMSVpFX1RZUEVfVFJBSVRTX0JFR0lOKFdlYkNvcmU6OkZFQ29sb3JNYXRy
aXgpCi0gICAgc3RhdGljIGJvb2wgaXNUeXBlKGNvbnN0IFdlYkNvcmU6OkZpbHRlckVmZmVjdCYg
ZWZmZWN0KSB7IHJldHVybiBlZmZlY3QuZmlsdGVyRWZmZWN0Q2xhc3NUeXBlKCkgPT0gV2ViQ29y
ZTo6RmlsdGVyRWZmZWN0OjpUeXBlOjpDb2xvck1hdHJpeDsgfQotU1BFQ0lBTElaRV9UWVBFX1RS
QUlUU19FTkQoKQotCitTUEVDSUFMSVpFX1RZUEVfVFJBSVRTX0ZJTFRFUl9FRkZFQ1QoRkVDb2xv
ck1hdHJpeCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Zp
bHRlcnMvRkVDb21wb25lbnRUcmFuc2Zlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9maWx0ZXJzL0ZFQ29tcG9uZW50VHJhbnNmZXIuY3BwCmluZGV4IDg0N2VhNThmNWY5
YjAzODY2ZDllYWM1N2YxMGNjZjU3NDAyZjllNjMuLjk4ZjZjMTI2ODQ1YmRlMjc3NWQ1YTM0M2Fh
ZTcwNDM4NDAzNWMzYWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2ZpbHRlcnMvRkVDb21wb25lbnRUcmFuc2Zlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRUNvbXBvbmVudFRyYW5zZmVyLmNwcApAQCAtMzMs
OSArMzMsOCBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLUZFQ29tcG9uZW50VHJhbnNmZXI6
OkZFQ29tcG9uZW50VHJhbnNmZXIoRmlsdGVyJiBmaWx0ZXIsIGNvbnN0IENvbXBvbmVudFRyYW5z
ZmVyRnVuY3Rpb24mIHJlZEZ1bmN0aW9uLAotICAgIGNvbnN0IENvbXBvbmVudFRyYW5zZmVyRnVu
Y3Rpb24mIGdyZWVuRnVuY3Rpb24sIGNvbnN0IENvbXBvbmVudFRyYW5zZmVyRnVuY3Rpb24mIGJs
dWVGdW5jdGlvbiwgY29uc3QgQ29tcG9uZW50VHJhbnNmZXJGdW5jdGlvbiYgYWxwaGFGdW5jdGlv
bikKLSAgICA6IEZpbHRlckVmZmVjdChmaWx0ZXIsIFR5cGU6OkNvbXBvbmVudFRyYW5zZmVyKQor
RkVDb21wb25lbnRUcmFuc2Zlcjo6RkVDb21wb25lbnRUcmFuc2Zlcihjb25zdCBDb21wb25lbnRU
cmFuc2ZlckZ1bmN0aW9uJiByZWRGdW5jdGlvbiwgY29uc3QgQ29tcG9uZW50VHJhbnNmZXJGdW5j
dGlvbiYgZ3JlZW5GdW5jdGlvbiwgY29uc3QgQ29tcG9uZW50VHJhbnNmZXJGdW5jdGlvbiYgYmx1
ZUZ1bmN0aW9uLCBjb25zdCBDb21wb25lbnRUcmFuc2ZlckZ1bmN0aW9uJiBhbHBoYUZ1bmN0aW9u
KQorICAgIDogRmlsdGVyRWZmZWN0KEZpbHRlckVmZmVjdDo6VHlwZTo6RkVDb21wb25lbnRUcmFu
c2ZlcikKICAgICAsIG1fcmVkRnVuY3Rpb24ocmVkRnVuY3Rpb24pCiAgICAgLCBtX2dyZWVuRnVu
Y3Rpb24oZ3JlZW5GdW5jdGlvbikKICAgICAsIG1fYmx1ZUZ1bmN0aW9uKGJsdWVGdW5jdGlvbikK
QEAgLTQzLDEwICs0MiwxMCBAQCBGRUNvbXBvbmVudFRyYW5zZmVyOjpGRUNvbXBvbmVudFRyYW5z
ZmVyKEZpbHRlciYgZmlsdGVyLCBjb25zdCBDb21wb25lbnRUcmFuc2ZlcgogewogfQogCi1SZWY8
RkVDb21wb25lbnRUcmFuc2Zlcj4gRkVDb21wb25lbnRUcmFuc2Zlcjo6Y3JlYXRlKEZpbHRlciYg
ZmlsdGVyLCBjb25zdCBDb21wb25lbnRUcmFuc2ZlckZ1bmN0aW9uJiByZWRGdW5jdGlvbiwKK1Jl
ZjxGRUNvbXBvbmVudFRyYW5zZmVyPiBGRUNvbXBvbmVudFRyYW5zZmVyOjpjcmVhdGUoY29uc3Qg
Q29tcG9uZW50VHJhbnNmZXJGdW5jdGlvbiYgcmVkRnVuY3Rpb24sCiAgICAgY29uc3QgQ29tcG9u
ZW50VHJhbnNmZXJGdW5jdGlvbiYgZ3JlZW5GdW5jdGlvbiwgY29uc3QgQ29tcG9uZW50VHJhbnNm
ZXJGdW5jdGlvbiYgYmx1ZUZ1bmN0aW9uLCBjb25zdCBDb21wb25lbnRUcmFuc2ZlckZ1bmN0aW9u
JiBhbHBoYUZ1bmN0aW9uKQogewotICAgIHJldHVybiBhZG9wdFJlZigqbmV3IEZFQ29tcG9uZW50
VHJhbnNmZXIoZmlsdGVyLCByZWRGdW5jdGlvbiwgZ3JlZW5GdW5jdGlvbiwgYmx1ZUZ1bmN0aW9u
LCBhbHBoYUZ1bmN0aW9uKSk7CisgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgRkVDb21wb25lbnRU
cmFuc2ZlcihyZWRGdW5jdGlvbiwgZ3JlZW5GdW5jdGlvbiwgYmx1ZUZ1bmN0aW9uLCBhbHBoYUZ1
bmN0aW9uKSk7CiB9CiAKIHZvaWQgRkVDb21wb25lbnRUcmFuc2Zlcjo6Y29tcHV0ZUlkZW50aXR5
VGFibGUoTG9va3VwVGFibGUmLCBjb25zdCBDb21wb25lbnRUcmFuc2ZlckZ1bmN0aW9uJikKQEAg
LTEwNCw3ICsxMDMsNyBAQCB2b2lkIEZFQ29tcG9uZW50VHJhbnNmZXI6OmNvbXB1dGVHYW1tYVRh
YmxlKExvb2t1cFRhYmxlJiB2YWx1ZXMsIGNvbnN0IENvbXBvbmVudAogICAgIH0KIH0KIAotdm9p
ZCBGRUNvbXBvbmVudFRyYW5zZmVyOjpwbGF0Zm9ybUFwcGx5U29mdHdhcmUoKQordm9pZCBGRUNv
bXBvbmVudFRyYW5zZmVyOjpwbGF0Zm9ybUFwcGx5U29mdHdhcmUoY29uc3QgRmlsdGVyJikKIHsK
ICAgICBGaWx0ZXJFZmZlY3QqIGluID0gaW5wdXRFZmZlY3QoMCk7CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVDb21wb25lbnRUcmFuc2Zl
ci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRUNvbXBvbmVu
dFRyYW5zZmVyLmgKaW5kZXggMmI1ODZkZWY3ZmI0MmEzN2IyZTEyM2VkYTg3MTE5YzRlYjM0OGE1
MS4uNmFmZWU1ZTk2ODYxNzEzNzQxZTM5OWE2OGI1MWYzOTQwODNmMDQzYiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRUNvbXBvbmVudFRyYW5z
ZmVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRUNv
bXBvbmVudFRyYW5zZmVyLmgKQEAgLTIyLDggKzIyLDYgQEAKICNwcmFnbWEgb25jZQogCiAjaW5j
bHVkZSAiRmlsdGVyRWZmZWN0LmgiCi0KLSNpbmNsdWRlICJGaWx0ZXIuaCIKICNpbmNsdWRlIDx3
dGYvVmVjdG9yLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAgLTUzLDggKzUxLDcgQEAgc3Ry
dWN0IENvbXBvbmVudFRyYW5zZmVyRnVuY3Rpb24gewogCiBjbGFzcyBGRUNvbXBvbmVudFRyYW5z
ZmVyIDogcHVibGljIEZpbHRlckVmZmVjdCB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFJlZjxGRUNv
bXBvbmVudFRyYW5zZmVyPiBjcmVhdGUoRmlsdGVyJiwgY29uc3QgQ29tcG9uZW50VHJhbnNmZXJG
dW5jdGlvbiYgcmVkRnVuYywgY29uc3QgQ29tcG9uZW50VHJhbnNmZXJGdW5jdGlvbiYgZ3JlZW5G
dW5jLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IENv
bXBvbmVudFRyYW5zZmVyRnVuY3Rpb24mIGJsdWVGdW5jLCBjb25zdCBDb21wb25lbnRUcmFuc2Zl
ckZ1bmN0aW9uJiBhbHBoYUZ1bmMpOworICAgIHN0YXRpYyBSZWY8RkVDb21wb25lbnRUcmFuc2Zl
cj4gY3JlYXRlKGNvbnN0IENvbXBvbmVudFRyYW5zZmVyRnVuY3Rpb24mIHJlZEZ1bmMsIGNvbnN0
IENvbXBvbmVudFRyYW5zZmVyRnVuY3Rpb24mIGdyZWVuRnVuYywgY29uc3QgQ29tcG9uZW50VHJh
bnNmZXJGdW5jdGlvbiYgYmx1ZUZ1bmMsIGNvbnN0IENvbXBvbmVudFRyYW5zZmVyRnVuY3Rpb24m
IGFscGhhRnVuYyk7CiAKICAgICBDb21wb25lbnRUcmFuc2ZlckZ1bmN0aW9uIHJlZEZ1bmN0aW9u
KCkgY29uc3QgeyByZXR1cm4gbV9yZWRGdW5jdGlvbjsgfQogICAgIENvbXBvbmVudFRyYW5zZmVy
RnVuY3Rpb24gZ3JlZW5GdW5jdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fZ3JlZW5GdW5jdGlvbjsg
fQpAQCAtNjIsMTAgKzU5LDcgQEAgcHVibGljOgogICAgIENvbXBvbmVudFRyYW5zZmVyRnVuY3Rp
b24gYWxwaGFGdW5jdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fYWxwaGFGdW5jdGlvbjsgfQogCiBw
cml2YXRlOgotICAgIEZFQ29tcG9uZW50VHJhbnNmZXIoRmlsdGVyJiwgY29uc3QgQ29tcG9uZW50
VHJhbnNmZXJGdW5jdGlvbiYgcmVkRnVuYywgY29uc3QgQ29tcG9uZW50VHJhbnNmZXJGdW5jdGlv
biYgZ3JlZW5GdW5jLAotICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgQ29tcG9uZW50VHJh
bnNmZXJGdW5jdGlvbiYgYmx1ZUZ1bmMsIGNvbnN0IENvbXBvbmVudFRyYW5zZmVyRnVuY3Rpb24m
IGFscGhhRnVuYyk7Ci0KLSAgICAgY29uc3QgY2hhciogZmlsdGVyTmFtZSgpIGNvbnN0IGZpbmFs
IHsgcmV0dXJuICJGRUNvbXBvbmVudFRyYW5zZmVyIjsgfQorICAgIEZFQ29tcG9uZW50VHJhbnNm
ZXIoY29uc3QgQ29tcG9uZW50VHJhbnNmZXJGdW5jdGlvbiYgcmVkRnVuYywgY29uc3QgQ29tcG9u
ZW50VHJhbnNmZXJGdW5jdGlvbiYgZ3JlZW5GdW5jLCBjb25zdCBDb21wb25lbnRUcmFuc2ZlckZ1
bmN0aW9uJiBibHVlRnVuYywgY29uc3QgQ29tcG9uZW50VHJhbnNmZXJGdW5jdGlvbiYgYWxwaGFG
dW5jKTsKIAogICAgIHVzaW5nIExvb2t1cFRhYmxlID0gc3RkOjphcnJheTx1aW50OF90LCAyNTY+
OwogCkBAIC03Nyw3ICs3MSw3IEBAIHByaXZhdGU6CiAKICAgICB2b2lkIGNvbXB1dGVMb29rdXBU
YWJsZXMoTG9va3VwVGFibGUmIHJlZFRhYmxlLCBMb29rdXBUYWJsZSYgZ3JlZW5UYWJsZSwgTG9v
a3VwVGFibGUmIGJsdWVUYWJsZSwgTG9va3VwVGFibGUmIGFscGhhVGFibGUpOwogCi0gICAgdm9p
ZCBwbGF0Zm9ybUFwcGx5U29mdHdhcmUoKSBvdmVycmlkZTsKKyAgICB2b2lkIHBsYXRmb3JtQXBw
bHlTb2Z0d2FyZShjb25zdCBGaWx0ZXImKSBvdmVycmlkZTsKIAogICAgIFdURjo6VGV4dFN0cmVh
bSYgZXh0ZXJuYWxSZXByZXNlbnRhdGlvbihXVEY6OlRleHRTdHJlYW0mLCBSZXByZXNlbnRhdGlv
blR5cGUpIGNvbnN0IG92ZXJyaWRlOwogCkBAIC04OSw2ICs4Myw0IEBAIHByaXZhdGU6CiAKIH0g
Ly8gbmFtZXNwYWNlIFdlYkNvcmUKIAotU1BFQ0lBTElaRV9UWVBFX1RSQUlUU19CRUdJTihXZWJD
b3JlOjpGRUNvbXBvbmVudFRyYW5zZmVyKQotICAgIHN0YXRpYyBib29sIGlzVHlwZShjb25zdCBX
ZWJDb3JlOjpGaWx0ZXJFZmZlY3QmIGVmZmVjdCkgeyByZXR1cm4gZWZmZWN0LmZpbHRlckVmZmVj
dENsYXNzVHlwZSgpID09IFdlYkNvcmU6OkZpbHRlckVmZmVjdDo6VHlwZTo6Q29tcG9uZW50VHJh
bnNmZXI7IH0KLVNQRUNJQUxJWkVfVFlQRV9UUkFJVFNfRU5EKCkKK1NQRUNJQUxJWkVfVFlQRV9U
UkFJVFNfRklMVEVSX0VGRkVDVChGRUNvbXBvbmVudFRyYW5zZmVyKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRUNvbXBvc2l0ZS5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFQ29tcG9zaXRlLmNwcApp
bmRleCA4MzM1MzA5MDgxYTI2YmEyYzMxYzNiZGFjODg4NjY5ZTI4ZTM0NTZkLi40NmYyNmE5MjFi
YjM5NTFlOWU5ZjA4ODcyNmI2NDYxNWUyNTkzNTlkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFQ29tcG9zaXRlLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFQ29tcG9zaXRlLmNwcApAQCAtMzIs
OCArMzIsOCBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLUZFQ29tcG9zaXRlOjpGRUNvbXBv
c2l0ZShGaWx0ZXImIGZpbHRlciwgY29uc3QgQ29tcG9zaXRlT3BlcmF0aW9uVHlwZSYgdHlwZSwg
ZmxvYXQgazEsIGZsb2F0IGsyLCBmbG9hdCBrMywgZmxvYXQgazQpCi0gICAgOiBGaWx0ZXJFZmZl
Y3QoZmlsdGVyLCBUeXBlOjpDb21wb3NpdGUpCitGRUNvbXBvc2l0ZTo6RkVDb21wb3NpdGUoY29u
c3QgQ29tcG9zaXRlT3BlcmF0aW9uVHlwZSYgdHlwZSwgZmxvYXQgazEsIGZsb2F0IGsyLCBmbG9h
dCBrMywgZmxvYXQgazQpCisgICAgOiBGaWx0ZXJFZmZlY3QoRmlsdGVyRWZmZWN0OjpUeXBlOjpG
RUNvbXBvc2l0ZSkKICAgICAsIG1fdHlwZSh0eXBlKQogICAgICwgbV9rMShrMSkKICAgICAsIG1f
azIoazIpCkBAIC00Miw5ICs0Miw5IEBAIEZFQ29tcG9zaXRlOjpGRUNvbXBvc2l0ZShGaWx0ZXIm
IGZpbHRlciwgY29uc3QgQ29tcG9zaXRlT3BlcmF0aW9uVHlwZSYgdHlwZSwgZmxvCiB7CiB9CiAK
LVJlZjxGRUNvbXBvc2l0ZT4gRkVDb21wb3NpdGU6OmNyZWF0ZShGaWx0ZXImIGZpbHRlciwgY29u
c3QgQ29tcG9zaXRlT3BlcmF0aW9uVHlwZSYgdHlwZSwgZmxvYXQgazEsIGZsb2F0IGsyLCBmbG9h
dCBrMywgZmxvYXQgazQpCitSZWY8RkVDb21wb3NpdGU+IEZFQ29tcG9zaXRlOjpjcmVhdGUoY29u
c3QgQ29tcG9zaXRlT3BlcmF0aW9uVHlwZSYgdHlwZSwgZmxvYXQgazEsIGZsb2F0IGsyLCBmbG9h
dCBrMywgZmxvYXQgazQpCiB7Ci0gICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgRkVDb21wb3NpdGUo
ZmlsdGVyLCB0eXBlLCBrMSwgazIsIGszLCBrNCkpOworICAgIHJldHVybiBhZG9wdFJlZigqbmV3
IEZFQ29tcG9zaXRlKHR5cGUsIGsxLCBrMiwgazMsIGs0KSk7CiB9CiAKIGJvb2wgRkVDb21wb3Np
dGU6OnNldE9wZXJhdGlvbihDb21wb3NpdGVPcGVyYXRpb25UeXBlIHR5cGUpCkBAIC0yMDEsNyAr
MjAxLDcgQEAgaW5saW5lIHZvaWQgRkVDb21wb3NpdGU6OnBsYXRmb3JtQXJpdGhtZXRpY1NvZnR3
YXJlKGNvbnN0IFVpbnQ4Q2xhbXBlZEFycmF5JiBzb3UKICNlbmRpZgogfQogCi12b2lkIEZFQ29t
cG9zaXRlOjpkZXRlcm1pbmVBYnNvbHV0ZVBhaW50UmVjdCgpCit2b2lkIEZFQ29tcG9zaXRlOjpk
ZXRlcm1pbmVBYnNvbHV0ZVBhaW50UmVjdChjb25zdCBGaWx0ZXImIGZpbHRlcikKIHsKICAgICBz
d2l0Y2ggKG1fdHlwZSkgewogICAgIGNhc2UgRkVDT01QT1NJVEVfT1BFUkFUT1JfSU46CkBAIC0y
MTgsMTIgKzIxOCwxMiBAQCB2b2lkIEZFQ29tcG9zaXRlOjpkZXRlcm1pbmVBYnNvbHV0ZVBhaW50
UmVjdCgpCiAgICAgICAgIHJldHVybjsKICAgICBkZWZhdWx0OgogICAgICAgICAvLyBUYWtlIHRo
ZSB1bmlvbiBvZiBib3RoIGlucHV0IGVmZmVjdHMuCi0gICAgICAgIEZpbHRlckVmZmVjdDo6ZGV0
ZXJtaW5lQWJzb2x1dGVQYWludFJlY3QoKTsKKyAgICAgICAgRmlsdGVyRWZmZWN0OjpkZXRlcm1p
bmVBYnNvbHV0ZVBhaW50UmVjdChmaWx0ZXIpOwogICAgICAgICByZXR1cm47CiAgICAgfQogfQog
Ci12b2lkIEZFQ29tcG9zaXRlOjpwbGF0Zm9ybUFwcGx5U29mdHdhcmUoKQordm9pZCBGRUNvbXBv
c2l0ZTo6cGxhdGZvcm1BcHBseVNvZnR3YXJlKGNvbnN0IEZpbHRlciYpCiB7CiAgICAgRmlsdGVy
RWZmZWN0KiBpbiA9IGlucHV0RWZmZWN0KDApOwogICAgIEZpbHRlckVmZmVjdCogaW4yID0gaW5w
dXRFZmZlY3QoMSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9maWx0ZXJzL0ZFQ29tcG9zaXRlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9maWx0ZXJzL0ZFQ29tcG9zaXRlLmgKaW5kZXggN2QwOGUxZjcxMDdiNGI5NjhjNThlM2EzN2Mz
MmFlMmY3NmFlYTBjMy4uMWMzYTczZWU3OTkxOTdhNWY3ZmZmMjBmMzg4OGZjZmM2MTc3MWU4NSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRUNv
bXBvc2l0ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMv
RkVDb21wb3NpdGUuaApAQCAtMjIsOCArMjIsNiBAQAogI3ByYWdtYSBvbmNlCiAKICNpbmNsdWRl
ICJGaWx0ZXJFZmZlY3QuaCIKLQotI2luY2x1ZGUgIkZpbHRlci5oIgogI2luY2x1ZGUgPHd0Zi90
ZXh0L1dURlN0cmluZy5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC00MSw3ICszOSw3IEBA
IGVudW0gQ29tcG9zaXRlT3BlcmF0aW9uVHlwZSB7CiAKIGNsYXNzIEZFQ29tcG9zaXRlIDogcHVi
bGljIEZpbHRlckVmZmVjdCB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFJlZjxGRUNvbXBvc2l0ZT4g
Y3JlYXRlKEZpbHRlciYsIGNvbnN0IENvbXBvc2l0ZU9wZXJhdGlvblR5cGUmLCBmbG9hdCwgZmxv
YXQsIGZsb2F0LCBmbG9hdCk7CisgICAgc3RhdGljIFJlZjxGRUNvbXBvc2l0ZT4gY3JlYXRlKGNv
bnN0IENvbXBvc2l0ZU9wZXJhdGlvblR5cGUmLCBmbG9hdCwgZmxvYXQsIGZsb2F0LCBmbG9hdCk7
CiAKICAgICBDb21wb3NpdGVPcGVyYXRpb25UeXBlIG9wZXJhdGlvbigpIGNvbnN0IHsgcmV0dXJu
IG1fdHlwZTsgfQogICAgIGJvb2wgc2V0T3BlcmF0aW9uKENvbXBvc2l0ZU9wZXJhdGlvblR5cGUp
OwpAQCAtNjIsMTQgKzYwLDEyIEBAIHByb3RlY3RlZDoKICAgICBib29sIHJlcXVpcmVzVmFsaWRQ
cmVNdWx0aXBsaWVkUGl4ZWxzKCkgb3ZlcnJpZGUgeyByZXR1cm4gbV90eXBlICE9IEZFQ09NUE9T
SVRFX09QRVJBVE9SX0FSSVRITUVUSUM7IH0KIAogcHJpdmF0ZToKLSAgICBGRUNvbXBvc2l0ZShG
aWx0ZXImLCBjb25zdCBDb21wb3NpdGVPcGVyYXRpb25UeXBlJiwgZmxvYXQsIGZsb2F0LCBmbG9h
dCwgZmxvYXQpOwotCi0gICAgY29uc3QgY2hhciogZmlsdGVyTmFtZSgpIGNvbnN0IGZpbmFsIHsg
cmV0dXJuICJGRUNvbXBvc2l0ZSI7IH0KKyAgICBGRUNvbXBvc2l0ZShjb25zdCBDb21wb3NpdGVP
cGVyYXRpb25UeXBlJiwgZmxvYXQsIGZsb2F0LCBmbG9hdCwgZmxvYXQpOwogCiAgICAgdm9pZCBj
b3JyZWN0RmlsdGVyUmVzdWx0SWZOZWVkZWQoKSBvdmVycmlkZTsKLSAgICB2b2lkIGRldGVybWlu
ZUFic29sdXRlUGFpbnRSZWN0KCkgb3ZlcnJpZGU7CisgICAgdm9pZCBkZXRlcm1pbmVBYnNvbHV0
ZVBhaW50UmVjdChjb25zdCBGaWx0ZXImKSBvdmVycmlkZTsKIAotICAgIHZvaWQgcGxhdGZvcm1B
cHBseVNvZnR3YXJlKCkgb3ZlcnJpZGU7CisgICAgdm9pZCBwbGF0Zm9ybUFwcGx5U29mdHdhcmUo
Y29uc3QgRmlsdGVyJikgb3ZlcnJpZGU7CiAgICAgV1RGOjpUZXh0U3RyZWFtJiBleHRlcm5hbFJl
cHJlc2VudGF0aW9uKFdURjo6VGV4dFN0cmVhbSYsIFJlcHJlc2VudGF0aW9uVHlwZSkgY29uc3Qg
b3ZlcnJpZGU7CiAKICAgICBpbmxpbmUgdm9pZCBwbGF0Zm9ybUFyaXRobWV0aWNTb2Z0d2FyZShj
b25zdCBVaW50OENsYW1wZWRBcnJheSYgc291cmNlLCBVaW50OENsYW1wZWRBcnJheSYgZGVzdGlu
YXRpb24sIGZsb2F0IGsxLCBmbG9hdCBrMiwgZmxvYXQgazMsIGZsb2F0IGs0KTsKQEAgLTkwLDMg
Kzg2LDQgQEAgcHJpdmF0ZToKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCitTUEVDSUFMSVpF
X1RZUEVfVFJBSVRTX0ZJTFRFUl9FRkZFQ1QoRkVDb21wb3NpdGUpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFQ29udm9sdmVNYXRyaXguY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRUNvbnZvbHZlTWF0
cml4LmNwcAppbmRleCAzYmJlNzgzNTk4ZDcwOTM1YTk1YzZmMTU2ZWMyOTMzYzBlOTlmMDUwLi5j
N2Y2MTA4ZmY4OTI3NzkyYjg1NzMxZWI3OGI4ZTdlZjEyZDU2NDI3IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFQ29udm9sdmVNYXRyaXguY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVDb252b2x2
ZU1hdHJpeC5jcHAKQEAgLTMyLDEwICszMiw4IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAot
RkVDb252b2x2ZU1hdHJpeDo6RkVDb252b2x2ZU1hdHJpeChGaWx0ZXImIGZpbHRlciwgY29uc3Qg
SW50U2l6ZSYga2VybmVsU2l6ZSwKLSAgICBmbG9hdCBkaXZpc29yLCBmbG9hdCBiaWFzLCBjb25z
dCBJbnRQb2ludCYgdGFyZ2V0T2Zmc2V0LCBFZGdlTW9kZVR5cGUgZWRnZU1vZGUsCi0gICAgY29u
c3QgRmxvYXRQb2ludCYga2VybmVsVW5pdExlbmd0aCwgYm9vbCBwcmVzZXJ2ZUFscGhhLCBjb25z
dCBWZWN0b3I8ZmxvYXQ+JiBrZXJuZWxNYXRyaXgpCi0gICAgOiBGaWx0ZXJFZmZlY3QoZmlsdGVy
LCBUeXBlOjpDb252b2x2ZU1hdHJpeCkKK0ZFQ29udm9sdmVNYXRyaXg6OkZFQ29udm9sdmVNYXRy
aXgoY29uc3QgSW50U2l6ZSYga2VybmVsU2l6ZSwgZmxvYXQgZGl2aXNvciwgZmxvYXQgYmlhcywg
Y29uc3QgSW50UG9pbnQmIHRhcmdldE9mZnNldCwgRWRnZU1vZGVUeXBlIGVkZ2VNb2RlLCBjb25z
dCBGbG9hdFBvaW50JiBrZXJuZWxVbml0TGVuZ3RoLCBib29sIHByZXNlcnZlQWxwaGEsIGNvbnN0
IFZlY3RvcjxmbG9hdD4mIGtlcm5lbE1hdHJpeCkKKyAgICA6IEZpbHRlckVmZmVjdChGaWx0ZXJF
ZmZlY3Q6OlR5cGU6OkZFQ29udm9sdmVNYXRyaXgpCiAgICAgLCBtX2tlcm5lbFNpemUoa2VybmVs
U2l6ZSkKICAgICAsIG1fZGl2aXNvcihkaXZpc29yKQogICAgICwgbV9iaWFzKGJpYXMpCkBAIC00
OSwxMSArNDcsOSBAQCBGRUNvbnZvbHZlTWF0cml4OjpGRUNvbnZvbHZlTWF0cml4KEZpbHRlciYg
ZmlsdGVyLCBjb25zdCBJbnRTaXplJiBrZXJuZWxTaXplLAogICAgIEFTU0VSVChtX2tlcm5lbFNp
emUuaGVpZ2h0KCkgPiAwKTsKIH0KIAotUmVmPEZFQ29udm9sdmVNYXRyaXg+IEZFQ29udm9sdmVN
YXRyaXg6OmNyZWF0ZShGaWx0ZXImIGZpbHRlciwgY29uc3QgSW50U2l6ZSYga2VybmVsU2l6ZSwK
LSAgICBmbG9hdCBkaXZpc29yLCBmbG9hdCBiaWFzLCBjb25zdCBJbnRQb2ludCYgdGFyZ2V0T2Zm
c2V0LCBFZGdlTW9kZVR5cGUgZWRnZU1vZGUsCi0gICAgY29uc3QgRmxvYXRQb2ludCYga2VybmVs
VW5pdExlbmd0aCwgYm9vbCBwcmVzZXJ2ZUFscGhhLCBjb25zdCBWZWN0b3I8ZmxvYXQ+JiBrZXJu
ZWxNYXRyaXgpCitSZWY8RkVDb252b2x2ZU1hdHJpeD4gRkVDb252b2x2ZU1hdHJpeDo6Y3JlYXRl
KGNvbnN0IEludFNpemUmIGtlcm5lbFNpemUsIGZsb2F0IGRpdmlzb3IsIGZsb2F0IGJpYXMsIGNv
bnN0IEludFBvaW50JiB0YXJnZXRPZmZzZXQsIEVkZ2VNb2RlVHlwZSBlZGdlTW9kZSwgY29uc3Qg
RmxvYXRQb2ludCYga2VybmVsVW5pdExlbmd0aCwgYm9vbCBwcmVzZXJ2ZUFscGhhLCBjb25zdCBW
ZWN0b3I8ZmxvYXQ+JiBrZXJuZWxNYXRyaXgpCiB7Ci0gICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcg
RkVDb252b2x2ZU1hdHJpeChmaWx0ZXIsIGtlcm5lbFNpemUsIGRpdmlzb3IsIGJpYXMsIHRhcmdl
dE9mZnNldCwgZWRnZU1vZGUsIGtlcm5lbFVuaXRMZW5ndGgsCisgICAgcmV0dXJuIGFkb3B0UmVm
KCpuZXcgRkVDb252b2x2ZU1hdHJpeChrZXJuZWxTaXplLCBkaXZpc29yLCBiaWFzLCB0YXJnZXRP
ZmZzZXQsIGVkZ2VNb2RlLCBrZXJuZWxVbml0TGVuZ3RoLAogICAgICAgICBwcmVzZXJ2ZUFscGhh
LCBrZXJuZWxNYXRyaXgpKTsKIH0KIApAQCAtMzY3LDcgKzM2Myw3IEBAIEFMV0FZU19JTkxJTkUg
dm9pZCBGRUNvbnZvbHZlTWF0cml4OjpzZXRPdXRlclBpeGVscyhQYWludGluZ0RhdGEmIHBhaW50
aW5nRGF0YSwKICAgICAgICAgZmFzdFNldE91dGVyUGl4ZWxzPGZhbHNlPihwYWludGluZ0RhdGEs
IHgxLCB5MSwgeDIsIHkyKTsKIH0KIAotdm9pZCBGRUNvbnZvbHZlTWF0cml4OjpwbGF0Zm9ybUFw
cGx5U29mdHdhcmUoKQordm9pZCBGRUNvbnZvbHZlTWF0cml4OjpwbGF0Zm9ybUFwcGx5U29mdHdh
cmUoY29uc3QgRmlsdGVyJikKIHsKICAgICBGaWx0ZXJFZmZlY3QqIGluID0gaW5wdXRFZmZlY3Qo
MCk7CiAKQEAgLTM4OCw4ICszODQsNyBAQCB2b2lkIEZFQ29udm9sdmVNYXRyaXg6OnBsYXRmb3Jt
QXBwbHlTb2Z0d2FyZSgpCiAgICAgICAgIHJldHVybjsKIAogICAgIEludFNpemUgcGFpbnRTaXpl
ID0gYWJzb2x1dGVQYWludFJlY3QoKS5zaXplKCk7Ci0gICAgcGFpbnRTaXplLnNjYWxlKGZpbHRl
cigpLmZpbHRlclNjYWxlKCkpOwotCisgICAgCiAgICAgUGFpbnRpbmdEYXRhIHBhaW50aW5nRGF0
YSA9IHsKICAgICAgICAgKnNvdXJjZVBpeGVsQXJyYXksCiAgICAgICAgIGRlc3RpbmF0aW9uUGl4
ZWxBcnJheSwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Zp
bHRlcnMvRkVDb252b2x2ZU1hdHJpeC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvZmlsdGVycy9GRUNvbnZvbHZlTWF0cml4LmgKaW5kZXggNjdkNGM2NTY3ZmNlNmIyN2VlNWFi
ODk1YTZlMWU1MDA1NGUxM2RiYS4uOTU3NmRmZWU3ZTg0MmNhZjQ2NTA4NWFkNzFiYzcwZTJmNWFh
ZjU5NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVy
cy9GRUNvbnZvbHZlTWF0cml4LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvZmlsdGVycy9GRUNvbnZvbHZlTWF0cml4LmgKQEAgLTI0LDcgKzI0LDYgQEAKIAogI2luY2x1
ZGUgIkZpbHRlckVmZmVjdC5oIgogI2luY2x1ZGUgIkZsb2F0UG9pbnQuaCIKLSNpbmNsdWRlICJG
aWx0ZXIuaCIKICNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsK
QEAgLTM4LDkgKzM3LDcgQEAgZW51bSBFZGdlTW9kZVR5cGUgewogCiBjbGFzcyBGRUNvbnZvbHZl
TWF0cml4IDogcHVibGljIEZpbHRlckVmZmVjdCB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFJlZjxG
RUNvbnZvbHZlTWF0cml4PiBjcmVhdGUoRmlsdGVyJiwgY29uc3QgSW50U2l6ZSYsCi0gICAgICAg
ICAgICBmbG9hdCwgZmxvYXQsIGNvbnN0IEludFBvaW50JiwgRWRnZU1vZGVUeXBlLCBjb25zdCBG
bG9hdFBvaW50JiwKLSAgICAgICAgICAgIGJvb2wsIGNvbnN0IFZlY3RvcjxmbG9hdD4mKTsKKyAg
ICBzdGF0aWMgUmVmPEZFQ29udm9sdmVNYXRyaXg+IGNyZWF0ZShjb25zdCBJbnRTaXplJiBrZXJu
ZWxTaXplLCBmbG9hdCBkaXZpc29yLCBmbG9hdCBiaWFzLCBjb25zdCBJbnRQb2ludCYgdGFyZ2V0
T2Zmc2V0LCBFZGdlTW9kZVR5cGUsIGNvbnN0IEZsb2F0UG9pbnQmIGtlcm5lbFVuaXRMZW5ndGgs
IGJvb2wgcHJlc2VydmVBbHBoYSwgY29uc3QgVmVjdG9yPGZsb2F0PiYga2VybmVsTWF0cml4KTsK
IAogICAgIEludFNpemUga2VybmVsU2l6ZSgpIGNvbnN0IHsgcmV0dXJuIG1fa2VybmVsU2l6ZTsg
fQogICAgIHZvaWQgc2V0S2VybmVsU2l6ZShjb25zdCBJbnRTaXplJik7CkBAIC03NywxNCArNzQs
MTEgQEAgcHJpdmF0ZToKICAgICAgICAgVmVjdG9yPGZsb2F0PiBrZXJuZWxNYXRyaXg7CiAgICAg
fTsKIAotICAgIEZFQ29udm9sdmVNYXRyaXgoRmlsdGVyJiwgY29uc3QgSW50U2l6ZSYsIGZsb2F0
LCBmbG9hdCwKLSAgICAgICAgICAgIGNvbnN0IEludFBvaW50JiwgRWRnZU1vZGVUeXBlLCBjb25z
dCBGbG9hdFBvaW50JiwgYm9vbCwgY29uc3QgVmVjdG9yPGZsb2F0PiYpOworICAgIEZFQ29udm9s
dmVNYXRyaXgoY29uc3QgSW50U2l6ZSYga2VybmVsU2l6ZSwgZmxvYXQgZGl2aXNvciwgZmxvYXQg
YmlhcywgY29uc3QgSW50UG9pbnQmIHRhcmdldE9mZnNldCwgRWRnZU1vZGVUeXBlLCBjb25zdCBG
bG9hdFBvaW50JiBrZXJuZWxVbml0TGVuZ3RoLCBib29sIHByZXNlcnZlQWxwaGEsIGNvbnN0IFZl
Y3RvcjxmbG9hdD4mIGtlcm5lbE1hdHJpeCk7CiAKLSAgICBjb25zdCBjaGFyKiBmaWx0ZXJOYW1l
KCkgY29uc3QgZmluYWwgeyByZXR1cm4gIkZFQ29udm9sdmVNYXRyaXgiOyB9CisgICAgdm9pZCBk
ZXRlcm1pbmVBYnNvbHV0ZVBhaW50UmVjdChjb25zdCBGaWx0ZXImKSBvdmVycmlkZSB7IHNldEFi
c29sdXRlUGFpbnRSZWN0KGVuY2xvc2luZ0ludFJlY3QobWF4RWZmZWN0UmVjdCgpKSk7IH0KIAot
ICAgIHZvaWQgZGV0ZXJtaW5lQWJzb2x1dGVQYWludFJlY3QoKSBvdmVycmlkZSB7IHNldEFic29s
dXRlUGFpbnRSZWN0KGVuY2xvc2luZ0ludFJlY3QobWF4RWZmZWN0UmVjdCgpKSk7IH0KLQotICAg
IHZvaWQgcGxhdGZvcm1BcHBseVNvZnR3YXJlKCkgb3ZlcnJpZGU7CisgICAgdm9pZCBwbGF0Zm9y
bUFwcGx5U29mdHdhcmUoY29uc3QgRmlsdGVyJikgb3ZlcnJpZGU7CiAKICAgICBXVEY6OlRleHRT
dHJlYW0mIGV4dGVybmFsUmVwcmVzZW50YXRpb24oV1RGOjpUZXh0U3RyZWFtJiwgUmVwcmVzZW50
YXRpb25UeXBlKSBjb25zdCBvdmVycmlkZTsKIApAQCAtMTE1LDMgKzEwOSw0IEBAIHByaXZhdGU6
CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAorU1BFQ0lBTElaRV9UWVBFX1RSQUlUU19GSUxU
RVJfRUZGRUNUKEZFQ29udm9sdmVNYXRyaXgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFRGlmZnVzZUxpZ2h0aW5nLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVEaWZmdXNlTGlnaHRpbmcuY3BwCmlu
ZGV4IGVlYjE3MjhkYjM1ZThhYzMwMmIyN2U0YzNmZjM0Y2I4ODU1YjlkMDkuLmY3NmNlMmNlOTY0
M2VmZGY2Y2UyNTZlOTU0NzM3OGE0MDdkMTM0MWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVEaWZmdXNlTGlnaHRpbmcuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVEaWZmdXNlTGlnaHRpbmcu
Y3BwCkBAIC0yNywxOCArMjcsMTYgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1GRURpZmZ1
c2VMaWdodGluZzo6RkVEaWZmdXNlTGlnaHRpbmcoRmlsdGVyJiBmaWx0ZXIsIGNvbnN0IENvbG9y
JiBsaWdodGluZ0NvbG9yLCBmbG9hdCBzdXJmYWNlU2NhbGUsIGZsb2F0IGRpZmZ1c2VDb25zdGFu
dCwgZmxvYXQga2VybmVsVW5pdExlbmd0aFgsIGZsb2F0IGtlcm5lbFVuaXRMZW5ndGhZLCBSZWY8
TGlnaHRTb3VyY2U+JiYgbGlnaHRTb3VyY2UpCi0gICAgOiBGRUxpZ2h0aW5nKGZpbHRlciwgRGlm
ZnVzZUxpZ2h0aW5nLCBsaWdodGluZ0NvbG9yLCBzdXJmYWNlU2NhbGUsIGRpZmZ1c2VDb25zdGFu
dCwgMCwgMCwga2VybmVsVW5pdExlbmd0aFgsIGtlcm5lbFVuaXRMZW5ndGhZLCBXVEZNb3ZlKGxp
Z2h0U291cmNlKSwgVHlwZTo6RGlmZnVzZUxpZ2h0aW5nKQorRkVEaWZmdXNlTGlnaHRpbmc6OkZF
RGlmZnVzZUxpZ2h0aW5nKGNvbnN0IENvbG9yJiBsaWdodGluZ0NvbG9yLCBmbG9hdCBzdXJmYWNl
U2NhbGUsIGZsb2F0IGRpZmZ1c2VDb25zdGFudCwgZmxvYXQga2VybmVsVW5pdExlbmd0aFgsIGZs
b2F0IGtlcm5lbFVuaXRMZW5ndGhZLCBSZWY8TGlnaHRTb3VyY2U+JiYgbGlnaHRTb3VyY2UpCisg
ICAgOiBGRUxpZ2h0aW5nKERpZmZ1c2VMaWdodGluZywgbGlnaHRpbmdDb2xvciwgc3VyZmFjZVNj
YWxlLCBkaWZmdXNlQ29uc3RhbnQsIDAsIDAsIGtlcm5lbFVuaXRMZW5ndGhYLCBrZXJuZWxVbml0
TGVuZ3RoWSwgV1RGTW92ZShsaWdodFNvdXJjZSksIEZpbHRlckVmZmVjdDo6VHlwZTo6RkVEaWZm
dXNlTGlnaHRpbmcpCiB7CiB9CiAKLVJlZjxGRURpZmZ1c2VMaWdodGluZz4gRkVEaWZmdXNlTGln
aHRpbmc6OmNyZWF0ZShGaWx0ZXImIGZpbHRlciwgY29uc3QgQ29sb3ImIGxpZ2h0aW5nQ29sb3Is
IGZsb2F0IHN1cmZhY2VTY2FsZSwgZmxvYXQgZGlmZnVzZUNvbnN0YW50LCBmbG9hdCBrZXJuZWxV
bml0TGVuZ3RoWCwgZmxvYXQga2VybmVsVW5pdExlbmd0aFksIFJlZjxMaWdodFNvdXJjZT4mJiBs
aWdodFNvdXJjZSkKK1JlZjxGRURpZmZ1c2VMaWdodGluZz4gRkVEaWZmdXNlTGlnaHRpbmc6OmNy
ZWF0ZShjb25zdCBDb2xvciYgbGlnaHRpbmdDb2xvciwgZmxvYXQgc3VyZmFjZVNjYWxlLCBmbG9h
dCBkaWZmdXNlQ29uc3RhbnQsIGZsb2F0IGtlcm5lbFVuaXRMZW5ndGhYLCBmbG9hdCBrZXJuZWxV
bml0TGVuZ3RoWSwgUmVmPExpZ2h0U291cmNlPiYmIGxpZ2h0U291cmNlKQogewotICAgIHJldHVy
biBhZG9wdFJlZigqbmV3IEZFRGlmZnVzZUxpZ2h0aW5nKGZpbHRlciwgbGlnaHRpbmdDb2xvciwg
c3VyZmFjZVNjYWxlLCBkaWZmdXNlQ29uc3RhbnQsIGtlcm5lbFVuaXRMZW5ndGhYLCBrZXJuZWxV
bml0TGVuZ3RoWSwgV1RGTW92ZShsaWdodFNvdXJjZSkpKTsKKyAgICByZXR1cm4gYWRvcHRSZWYo
Km5ldyBGRURpZmZ1c2VMaWdodGluZyhsaWdodGluZ0NvbG9yLCBzdXJmYWNlU2NhbGUsIGRpZmZ1
c2VDb25zdGFudCwga2VybmVsVW5pdExlbmd0aFgsIGtlcm5lbFVuaXRMZW5ndGhZLCBXVEZNb3Zl
KGxpZ2h0U291cmNlKSkpOwogfQogCi1GRURpZmZ1c2VMaWdodGluZzo6fkZFRGlmZnVzZUxpZ2h0
aW5nKCkgPSBkZWZhdWx0OwotCiBib29sIEZFRGlmZnVzZUxpZ2h0aW5nOjpzZXREaWZmdXNlQ29u
c3RhbnQoZmxvYXQgZGlmZnVzZUNvbnN0YW50KQogewogICAgIGlmIChtX2RpZmZ1c2VDb25zdGFu
dCA9PSBkaWZmdXNlQ29uc3RhbnQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9maWx0ZXJzL0ZFRGlmZnVzZUxpZ2h0aW5nLmggYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFRGlmZnVzZUxpZ2h0aW5nLmgKaW5kZXggZGY2MTE0
ZDBmYjhlMmYzZTExMjhiODQyNjE1ZTQ3NTEzYTBkZGRjMy4uOGExMGFlYzg3YzhmMTg5ZjlmMDU3
Y2I5NDQzZWFhZWRkNTM4ZjY5MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvZmlsdGVycy9GRURpZmZ1c2VMaWdodGluZy5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVEaWZmdXNlTGlnaHRpbmcuaApAQCAtMjksOCAr
MjksNyBAQCBjbGFzcyBMaWdodFNvdXJjZTsKIAogY2xhc3MgRkVEaWZmdXNlTGlnaHRpbmcgOiBw
dWJsaWMgRkVMaWdodGluZyB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFJlZjxGRURpZmZ1c2VMaWdo
dGluZz4gY3JlYXRlKEZpbHRlciYsIGNvbnN0IENvbG9yJiwgZmxvYXQsIGZsb2F0LCBmbG9hdCwg
ZmxvYXQsIFJlZjxMaWdodFNvdXJjZT4mJik7Ci0gICAgdmlydHVhbCB+RkVEaWZmdXNlTGlnaHRp
bmcoKTsKKyAgICBzdGF0aWMgUmVmPEZFRGlmZnVzZUxpZ2h0aW5nPiBjcmVhdGUoY29uc3QgQ29s
b3ImIGxpZ2h0aW5nQ29sb3IsIGZsb2F0IHN1cmZhY2VTY2FsZSwgZmxvYXQgZGlmZnVzZUNvbnN0
YW50LCBmbG9hdCBrZXJuZWxVbml0TGVuZ3RoWCwgZmxvYXQga2VybmVsVW5pdExlbmd0aFksIFJl
ZjxMaWdodFNvdXJjZT4mJik7CiAKICAgICBmbG9hdCBkaWZmdXNlQ29uc3RhbnQoKSBjb25zdCB7
IHJldHVybiBtX2RpZmZ1c2VDb25zdGFudDsgfQogICAgIGJvb2wgc2V0RGlmZnVzZUNvbnN0YW50
KGZsb2F0KTsKQEAgLTM4LDggKzM3LDkgQEAgcHVibGljOgogICAgIFdURjo6VGV4dFN0cmVhbSYg
ZXh0ZXJuYWxSZXByZXNlbnRhdGlvbihXVEY6OlRleHRTdHJlYW0mLCBSZXByZXNlbnRhdGlvblR5
cGUpIGNvbnN0IG92ZXJyaWRlOwogCiBwcml2YXRlOgotICAgIEZFRGlmZnVzZUxpZ2h0aW5nKEZp
bHRlciYsIGNvbnN0IENvbG9yJiwgZmxvYXQsIGZsb2F0LCBmbG9hdCwgZmxvYXQsIFJlZjxMaWdo
dFNvdXJjZT4mJik7CisgICAgRkVEaWZmdXNlTGlnaHRpbmcoY29uc3QgQ29sb3ImIGxpZ2h0aW5n
Q29sb3IsIGZsb2F0IHN1cmZhY2VTY2FsZSwgZmxvYXQgZGlmZnVzZUNvbnN0YW50LCBmbG9hdCBr
ZXJuZWxVbml0TGVuZ3RoWCwgZmxvYXQga2VybmVsVW5pdExlbmd0aFksIFJlZjxMaWdodFNvdXJj
ZT4mJik7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKK1NQRUNJQUxJWkVfVFlQRV9U
UkFJVFNfRklMVEVSX0VGRkVDVChGRURpZmZ1c2VMaWdodGluZykKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVEaXNwbGFjZW1lbnRNYXAuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRURpc3BsYWNlbWVu
dE1hcC5jcHAKaW5kZXggMDQ3NDkzMzkyYmIyODE0NmQ4YjE2OWJhMGE3YzMyYjE2YzU2M2ZhMS4u
ZDZhMzVmZWEwOTdiODZiMWZjMTY1MjM3MTU2MjZmOTM1OGUxZDk1ZSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRURpc3BsYWNlbWVudE1hcC5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRURpc3Bs
YWNlbWVudE1hcC5jcHAKQEAgLTMxLDE4ICszMSwxNyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAKLUZFRGlzcGxhY2VtZW50TWFwOjpGRURpc3BsYWNlbWVudE1hcChGaWx0ZXImIGZpbHRlciwg
Q2hhbm5lbFNlbGVjdG9yVHlwZSB4Q2hhbm5lbFNlbGVjdG9yLCBDaGFubmVsU2VsZWN0b3JUeXBl
IHlDaGFubmVsU2VsZWN0b3IsIGZsb2F0IHNjYWxlKQotICAgIDogRmlsdGVyRWZmZWN0KGZpbHRl
ciwgVHlwZTo6RGlzcGxhY2VtZW50TWFwKQorRkVEaXNwbGFjZW1lbnRNYXA6OkZFRGlzcGxhY2Vt
ZW50TWFwKENoYW5uZWxTZWxlY3RvclR5cGUgeENoYW5uZWxTZWxlY3RvciwgQ2hhbm5lbFNlbGVj
dG9yVHlwZSB5Q2hhbm5lbFNlbGVjdG9yLCBmbG9hdCBzY2FsZSkKKyAgICA6IEZpbHRlckVmZmVj
dChGaWx0ZXJFZmZlY3Q6OlR5cGU6OkZFRGlzcGxhY2VtZW50TWFwKQogICAgICwgbV94Q2hhbm5l
bFNlbGVjdG9yKHhDaGFubmVsU2VsZWN0b3IpCiAgICAgLCBtX3lDaGFubmVsU2VsZWN0b3IoeUNo
YW5uZWxTZWxlY3RvcikKICAgICAsIG1fc2NhbGUoc2NhbGUpCiB7CiB9CiAKLVJlZjxGRURpc3Bs
YWNlbWVudE1hcD4gRkVEaXNwbGFjZW1lbnRNYXA6OmNyZWF0ZShGaWx0ZXImIGZpbHRlciwgQ2hh
bm5lbFNlbGVjdG9yVHlwZSB4Q2hhbm5lbFNlbGVjdG9yLAotICAgIENoYW5uZWxTZWxlY3RvclR5
cGUgeUNoYW5uZWxTZWxlY3RvciwgZmxvYXQgc2NhbGUpCitSZWY8RkVEaXNwbGFjZW1lbnRNYXA+
IEZFRGlzcGxhY2VtZW50TWFwOjpjcmVhdGUoQ2hhbm5lbFNlbGVjdG9yVHlwZSB4Q2hhbm5lbFNl
bGVjdG9yLCBDaGFubmVsU2VsZWN0b3JUeXBlIHlDaGFubmVsU2VsZWN0b3IsIGZsb2F0IHNjYWxl
KQogewotICAgIHJldHVybiBhZG9wdFJlZigqbmV3IEZFRGlzcGxhY2VtZW50TWFwKGZpbHRlciwg
eENoYW5uZWxTZWxlY3RvciwgeUNoYW5uZWxTZWxlY3Rvciwgc2NhbGUpKTsKKyAgICByZXR1cm4g
YWRvcHRSZWYoKm5ldyBGRURpc3BsYWNlbWVudE1hcCh4Q2hhbm5lbFNlbGVjdG9yLCB5Q2hhbm5l
bFNlbGVjdG9yLCBzY2FsZSkpOwogfQogCiBib29sIEZFRGlzcGxhY2VtZW50TWFwOjpzZXRYQ2hh
bm5lbFNlbGVjdG9yKGNvbnN0IENoYW5uZWxTZWxlY3RvclR5cGUgeENoYW5uZWxTZWxlY3RvcikK
QEAgLTkxLDcgKzkwLDcgQEAgc3RhdGljIGlubGluZSB1bnNpZ25lZCBieXRlT2Zmc2V0T2ZQaXhl
bCh1bnNpZ25lZCB4LCB1bnNpZ25lZCB5LCB1bnNpZ25lZCByb3dCeXQKICAgICByZXR1cm4geCAq
IGJ5dGVzUGVyUGl4ZWwgKyB5ICogcm93Qnl0ZXM7CiB9CiAKLXZvaWQgRkVEaXNwbGFjZW1lbnRN
YXA6OnBsYXRmb3JtQXBwbHlTb2Z0d2FyZSgpCit2b2lkIEZFRGlzcGxhY2VtZW50TWFwOjpwbGF0
Zm9ybUFwcGx5U29mdHdhcmUoY29uc3QgRmlsdGVyJiBmaWx0ZXIpCiB7CiAgICAgRmlsdGVyRWZm
ZWN0KiBpbiA9IGlucHV0RWZmZWN0KDApOwogICAgIEZpbHRlckVmZmVjdCogaW4yID0gaW5wdXRF
ZmZlY3QoMSk7CkBAIC0xMTcsMTEgKzExNiw5IEBAIHZvaWQgRkVEaXNwbGFjZW1lbnRNYXA6OnBs
YXRmb3JtQXBwbHlTb2Z0d2FyZSgpCiAKICAgICBBU1NFUlQoaW5wdXRJbWFnZS0+bGVuZ3RoKCkg
PT0gZGlzcGxhY2VtZW50SW1hZ2UtPmxlbmd0aCgpKTsKIAotICAgIEZpbHRlciYgZmlsdGVyID0g
dGhpcy0+ZmlsdGVyKCk7CiAgICAgSW50U2l6ZSBwYWludFNpemUgPSBhYnNvbHV0ZVBhaW50UmVj
dCgpLnNpemUoKTsKLSAgICBwYWludFNpemUuc2NhbGUoZmlsdGVyLmZpbHRlclNjYWxlKCkpOwog
Ci0gICAgRmxvYXRTaXplIHNjYWxlID0gZmlsdGVyLnNjYWxlZEJ5RmlsdGVyUmVzb2x1dGlvbih7
IG1fc2NhbGUsIG1fc2NhbGUgfSk7CisgICAgRmxvYXRTaXplIHNjYWxlID0gZmlsdGVyLnNjYWxl
ZEJ5RmlsdGVyU2NhbGUoeyBtX3NjYWxlLCBtX3NjYWxlIH0pOwogICAgIGZsb2F0IHNjYWxlRm9y
Q29sb3JYID0gc2NhbGUud2lkdGgoKSAvIDI1NS4wOwogICAgIGZsb2F0IHNjYWxlRm9yQ29sb3JZ
ID0gc2NhbGUuaGVpZ2h0KCkgLyAyNTUuMDsKICAgICBmbG9hdCBzY2FsZWRPZmZzZXRYID0gMC41
IC0gc2NhbGUud2lkdGgoKSAqIDAuNTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVEaXNwbGFjZW1lbnRNYXAuaCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVEaXNwbGFjZW1lbnRNYXAuaAppbmRleCBkZDcz
MmE4ODEwNzNlMjY2YmM4NDZhZmU2ODE5ZTY3NTE2MjNhM2EyLi42ZWU2OGIxMDhkYjczYjA3MDRm
ZmVkOWM1MTBiNDIzYTFjNzVhZGU3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9maWx0ZXJzL0ZFRGlzcGxhY2VtZW50TWFwLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRURpc3BsYWNlbWVudE1hcC5oCkBAIC0yMiw3
ICsyMiw2IEBACiAjcHJhZ21hIG9uY2UKIAogI2luY2x1ZGUgIkZpbHRlckVmZmVjdC5oIgotI2lu
Y2x1ZGUgIkZpbHRlci5oIgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgogCiBuYW1l
c3BhY2UgV2ViQ29yZSB7CkBAIC0zNyw3ICszNiw3IEBAIGVudW0gQ2hhbm5lbFNlbGVjdG9yVHlw
ZSB7CiAKIGNsYXNzIEZFRGlzcGxhY2VtZW50TWFwIDogcHVibGljIEZpbHRlckVmZmVjdCB7CiBw
dWJsaWM6Ci0gICAgc3RhdGljIFJlZjxGRURpc3BsYWNlbWVudE1hcD4gY3JlYXRlKEZpbHRlciYs
IENoYW5uZWxTZWxlY3RvclR5cGUgeENoYW5uZWxTZWxlY3RvciwgQ2hhbm5lbFNlbGVjdG9yVHlw
ZSB5Q2hhbm5lbFNlbGVjdG9yLCBmbG9hdCBzY2FsZSk7CisgICAgc3RhdGljIFJlZjxGRURpc3Bs
YWNlbWVudE1hcD4gY3JlYXRlKENoYW5uZWxTZWxlY3RvclR5cGUgeENoYW5uZWxTZWxlY3Rvciwg
Q2hhbm5lbFNlbGVjdG9yVHlwZSB5Q2hhbm5lbFNlbGVjdG9yLCBmbG9hdCBzY2FsZSk7CiAKICAg
ICBDaGFubmVsU2VsZWN0b3JUeXBlIHhDaGFubmVsU2VsZWN0b3IoKSBjb25zdCB7IHJldHVybiBt
X3hDaGFubmVsU2VsZWN0b3I7IH0KICAgICBib29sIHNldFhDaGFubmVsU2VsZWN0b3IoY29uc3Qg
Q2hhbm5lbFNlbGVjdG9yVHlwZSk7CkBAIC01MiwxMyArNTEsMTEgQEAgcHVibGljOgogICAgIHZv
aWQgdHJhbnNmb3JtUmVzdWx0Q29sb3JTcGFjZShGaWx0ZXJFZmZlY3QqLCBjb25zdCBpbnQpIG92
ZXJyaWRlOwogCiBwcml2YXRlOgotICAgIEZFRGlzcGxhY2VtZW50TWFwKEZpbHRlciYsIENoYW5u
ZWxTZWxlY3RvclR5cGUgeENoYW5uZWxTZWxlY3RvciwgQ2hhbm5lbFNlbGVjdG9yVHlwZSB5Q2hh
bm5lbFNlbGVjdG9yLCBmbG9hdCk7CisgICAgRkVEaXNwbGFjZW1lbnRNYXAoQ2hhbm5lbFNlbGVj
dG9yVHlwZSB4Q2hhbm5lbFNlbGVjdG9yLCBDaGFubmVsU2VsZWN0b3JUeXBlIHlDaGFubmVsU2Vs
ZWN0b3IsIGZsb2F0IHNjYWxlKTsKIAotICAgIGNvbnN0IGNoYXIqIGZpbHRlck5hbWUoKSBjb25z
dCBmaW5hbCB7IHJldHVybiAiRkVEaXNwbGFjZW1lbnRNYXAiOyB9CisgICAgdm9pZCBwbGF0Zm9y
bUFwcGx5U29mdHdhcmUoY29uc3QgRmlsdGVyJikgb3ZlcnJpZGU7CiAKLSAgICB2b2lkIHBsYXRm
b3JtQXBwbHlTb2Z0d2FyZSgpIG92ZXJyaWRlOwotCi0gICAgdm9pZCBkZXRlcm1pbmVBYnNvbHV0
ZVBhaW50UmVjdCgpIG92ZXJyaWRlIHsgc2V0QWJzb2x1dGVQYWludFJlY3QoZW5jbG9zaW5nSW50
UmVjdChtYXhFZmZlY3RSZWN0KCkpKTsgfQorICAgIHZvaWQgZGV0ZXJtaW5lQWJzb2x1dGVQYWlu
dFJlY3QoY29uc3QgRmlsdGVyJikgb3ZlcnJpZGUgeyBzZXRBYnNvbHV0ZVBhaW50UmVjdChlbmNs
b3NpbmdJbnRSZWN0KG1heEVmZmVjdFJlY3QoKSkpOyB9CiAKICAgICBpbnQgeENoYW5uZWxJbmRl
eCgpIGNvbnN0IHsgcmV0dXJuIG1feENoYW5uZWxTZWxlY3RvciAtIDE7IH0KICAgICBpbnQgeUNo
YW5uZWxJbmRleCgpIGNvbnN0IHsgcmV0dXJuIG1feUNoYW5uZWxTZWxlY3RvciAtIDE7IH0KQEAg
LTcyLDMgKzY5LDQgQEAgcHJpdmF0ZToKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCitTUEVD
SUFMSVpFX1RZUEVfVFJBSVRTX0ZJTFRFUl9FRkZFQ1QoRkVEaXNwbGFjZW1lbnRNYXApCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFRHJvcFNo
YWRvdy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFRHJv
cFNoYWRvdy5jcHAKaW5kZXggMzVmYmFiNDFlODA5MjE2ZTRiMjI0MzUxMTg2MjNlMjhmZmQ2MWVm
YS4uYzNjZTRlMzZlMjQ3NTg4NDEyZTQ1NzNmYTYzYTMxMTM1NjY0NzdhYyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRURyb3BTaGFkb3cuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVEcm9wU2hh
ZG93LmNwcApAQCAtMzEsOCArMzEsOCBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgCi1G
RURyb3BTaGFkb3c6OkZFRHJvcFNoYWRvdyhGaWx0ZXImIGZpbHRlciwgZmxvYXQgc3RkWCwgZmxv
YXQgc3RkWSwgZmxvYXQgZHgsIGZsb2F0IGR5LCBjb25zdCBDb2xvciYgc2hhZG93Q29sb3IsIGZs
b2F0IHNoYWRvd09wYWNpdHkpCi0gICAgOiBGaWx0ZXJFZmZlY3QoZmlsdGVyLCBUeXBlOjpEcm9w
U2hhZG93KQorRkVEcm9wU2hhZG93OjpGRURyb3BTaGFkb3coZmxvYXQgc3RkWCwgZmxvYXQgc3Rk
WSwgZmxvYXQgZHgsIGZsb2F0IGR5LCBjb25zdCBDb2xvciYgc2hhZG93Q29sb3IsIGZsb2F0IHNo
YWRvd09wYWNpdHkpCisgICAgOiBGaWx0ZXJFZmZlY3QoRmlsdGVyRWZmZWN0OjpUeXBlOjpGRURy
b3BTaGFkb3cpCiAgICAgLCBtX3N0ZFgoc3RkWCkKICAgICAsIG1fc3RkWShzdGRZKQogICAgICwg
bV9keChkeCkKQEAgLTQyLDE4ICs0MiwxNiBAQCBGRURyb3BTaGFkb3c6OkZFRHJvcFNoYWRvdyhG
aWx0ZXImIGZpbHRlciwgZmxvYXQgc3RkWCwgZmxvYXQgc3RkWSwgZmxvYXQgZHgsIGZsbwogewog
fQogCi1SZWY8RkVEcm9wU2hhZG93PiBGRURyb3BTaGFkb3c6OmNyZWF0ZShGaWx0ZXImIGZpbHRl
ciwgZmxvYXQgc3RkWCwgZmxvYXQgc3RkWSwgZmxvYXQgZHgsIGZsb2F0IGR5LCBjb25zdCBDb2xv
ciYgc2hhZG93Q29sb3IsIGZsb2F0IHNoYWRvd09wYWNpdHkpCitSZWY8RkVEcm9wU2hhZG93PiBG
RURyb3BTaGFkb3c6OmNyZWF0ZShmbG9hdCBzdGRYLCBmbG9hdCBzdGRZLCBmbG9hdCBkeCwgZmxv
YXQgZHksIGNvbnN0IENvbG9yJiBzaGFkb3dDb2xvciwgZmxvYXQgc2hhZG93T3BhY2l0eSkKIHsK
LSAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBGRURyb3BTaGFkb3coZmlsdGVyLCBzdGRYLCBzdGRZ
LCBkeCwgZHksIHNoYWRvd0NvbG9yLCBzaGFkb3dPcGFjaXR5KSk7CisgICAgcmV0dXJuIGFkb3B0
UmVmKCpuZXcgRkVEcm9wU2hhZG93KHN0ZFgsIHN0ZFksIGR4LCBkeSwgc2hhZG93Q29sb3IsIHNo
YWRvd09wYWNpdHkpKTsKIH0KIAotdm9pZCBGRURyb3BTaGFkb3c6OmRldGVybWluZUFic29sdXRl
UGFpbnRSZWN0KCkKK3ZvaWQgRkVEcm9wU2hhZG93OjpkZXRlcm1pbmVBYnNvbHV0ZVBhaW50UmVj
dChjb25zdCBGaWx0ZXImIGZpbHRlcikKIHsKLSAgICBGaWx0ZXImIGZpbHRlciA9IHRoaXMtPmZp
bHRlcigpOwotCiAgICAgRmxvYXRSZWN0IGFic29sdXRlUGFpbnRSZWN0ID0gaW5wdXRFZmZlY3Qo
MCktPmFic29sdXRlUGFpbnRSZWN0KCk7CiAgICAgRmxvYXRSZWN0IGFic29sdXRlT2Zmc2V0UGFp
bnRSZWN0KGFic29sdXRlUGFpbnRSZWN0KTsKLSAgICBhYnNvbHV0ZU9mZnNldFBhaW50UmVjdC5t
b3ZlKGZpbHRlci5zY2FsZWRCeUZpbHRlclJlc29sdXRpb24oeyBtX2R4LCBtX2R5IH0pKTsKKyAg
ICBhYnNvbHV0ZU9mZnNldFBhaW50UmVjdC5tb3ZlKGZpbHRlci5zY2FsZWRCeUZpbHRlclNjYWxl
KHsgbV9keCwgbV9keSB9KSk7CiAgICAgYWJzb2x1dGVQYWludFJlY3QudW5pdGUoYWJzb2x1dGVP
ZmZzZXRQYWludFJlY3QpOwogCiAgICAgSW50U2l6ZSBrZXJuZWxTaXplID0gRkVHYXVzc2lhbkJs
dXI6OmNhbGN1bGF0ZUtlcm5lbFNpemUoZmlsdGVyLCB7IG1fc3RkWCwgbV9zdGRZIH0pOwpAQCAt
NzAsNyArNjgsNyBAQCB2b2lkIEZFRHJvcFNoYWRvdzo6ZGV0ZXJtaW5lQWJzb2x1dGVQYWludFJl
Y3QoKQogICAgIHNldEFic29sdXRlUGFpbnRSZWN0KGVuY2xvc2luZ0ludFJlY3QoYWJzb2x1dGVQ
YWludFJlY3QpKTsKIH0KIAotdm9pZCBGRURyb3BTaGFkb3c6OnBsYXRmb3JtQXBwbHlTb2Z0d2Fy
ZSgpCit2b2lkIEZFRHJvcFNoYWRvdzo6cGxhdGZvcm1BcHBseVNvZnR3YXJlKGNvbnN0IEZpbHRl
ciYgZmlsdGVyKQogewogICAgIEZpbHRlckVmZmVjdCogaW4gPSBpbnB1dEVmZmVjdCgwKTsKIApA
QCAtNzgsMTEgKzc2LDggQEAgdm9pZCBGRURyb3BTaGFkb3c6OnBsYXRmb3JtQXBwbHlTb2Z0d2Fy
ZSgpCiAgICAgaWYgKCFyZXN1bHRJbWFnZSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgRmlsdGVy
JiBmaWx0ZXIgPSB0aGlzLT5maWx0ZXIoKTsKLSAgICAKLSAgICBGbG9hdFNpemUgYmx1clJhZGl1
cyA9IDIgKiBmaWx0ZXIuc2NhbGVkQnlGaWx0ZXJSZXNvbHV0aW9uKHsgbV9zdGRYLCBtX3N0ZFkg
fSk7Ci0gICAgYmx1clJhZGl1cy5zY2FsZShmaWx0ZXIuZmlsdGVyU2NhbGUoKSk7Ci0gICAgRmxv
YXRTaXplIG9mZnNldCA9IGZpbHRlci5zY2FsZWRCeUZpbHRlclJlc29sdXRpb24oeyBtX2R4LCBt
X2R5IH0pOworICAgIEZsb2F0U2l6ZSBibHVyUmFkaXVzID0gMiAqIGZpbHRlci5zY2FsZWRCeUZp
bHRlclNjYWxlKHsgbV9zdGRYLCBtX3N0ZFkgfSk7CisgICAgRmxvYXRTaXplIG9mZnNldCA9IGZp
bHRlci5zY2FsZWRCeUZpbHRlclNjYWxlKHsgbV9keCwgbV9keSB9KTsKIAogICAgIEZsb2F0UmVj
dCBkcmF3aW5nUmVnaW9uID0gZHJhd2luZ1JlZ2lvbk9mSW5wdXRJbWFnZShpbi0+YWJzb2x1dGVQ
YWludFJlY3QoKSk7CiAgICAgRmxvYXRSZWN0IGRyYXdpbmdSZWdpb25XaXRoT2Zmc2V0KGRyYXdp
bmdSZWdpb24pOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
ZmlsdGVycy9GRURyb3BTaGFkb3cuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2ZpbHRlcnMvRkVEcm9wU2hhZG93LmgKaW5kZXggYjRlMGEyMDEyZmVkYjdiNzdiZjNlMDU3MzRl
ZTg4YTI5ZWZmMzg0Yy4uMTc3MDU2YmJjZjg4M2U2NGJkMTRlMWM0Zjg1Yjc0ZGY2NzNmYzQzZiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRURy
b3BTaGFkb3cuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJz
L0ZFRHJvcFNoYWRvdy5oCkBAIC0yMCwxNCArMjAsMTMgQEAKICNwcmFnbWEgb25jZQogCiAjaW5j
bHVkZSAiQ29sb3IuaCIKLSNpbmNsdWRlICJGaWx0ZXIuaCIKICNpbmNsdWRlICJGaWx0ZXJFZmZl
Y3QuaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogICAgIAogY2xhc3MgRkVEcm9wU2hhZG93IDog
cHVibGljIEZpbHRlckVmZmVjdCB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFJlZjxGRURyb3BTaGFk
b3c+IGNyZWF0ZShGaWx0ZXImLCBmbG9hdCwgZmxvYXQsIGZsb2F0LCBmbG9hdCwgY29uc3QgQ29s
b3ImLCBmbG9hdCk7CisgICAgc3RhdGljIFJlZjxGRURyb3BTaGFkb3c+IGNyZWF0ZShmbG9hdCBz
dGRYLCBmbG9hdCBzdGRZLCBmbG9hdCBkeCwgZmxvYXQgZHksIGNvbnN0IENvbG9yJiBzaGFkb3dD
b2xvciwgZmxvYXQgc2hhZG93T3BhY2l0eSk7CiAKICAgICBmbG9hdCBzdGREZXZpYXRpb25YKCkg
Y29uc3QgeyByZXR1cm4gbV9zdGRYOyB9CiAgICAgdm9pZCBzZXRTdGREZXZpYXRpb25YKGZsb2F0
IHN0ZFgpIHsgbV9zdGRYID0gc3RkWDsgfQpAQCAtNDgsMTMgKzQ3LDExIEBAIHB1YmxpYzoKICAg
ICB2b2lkIHNldFNoYWRvd09wYWNpdHkoZmxvYXQgc2hhZG93T3BhY2l0eSkgeyBtX3NoYWRvd09w
YWNpdHkgPSBzaGFkb3dPcGFjaXR5OyB9CiAKIHByaXZhdGU6Ci0gICAgRkVEcm9wU2hhZG93KEZp
bHRlciYsIGZsb2F0LCBmbG9hdCwgZmxvYXQsIGZsb2F0LCBjb25zdCBDb2xvciYsIGZsb2F0KTsK
KyAgICBGRURyb3BTaGFkb3coZmxvYXQgc3RkWCwgZmxvYXQgc3RkWSwgZmxvYXQgZHgsIGZsb2F0
IGR5LCBjb25zdCBDb2xvciYgc2hhZG93Q29sb3IsIGZsb2F0IHNoYWRvd09wYWNpdHkpOwogCi0g
ICAgY29uc3QgY2hhciogZmlsdGVyTmFtZSgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuICJGRURyb3BT
aGFkb3ciOyB9CisgICAgdm9pZCBwbGF0Zm9ybUFwcGx5U29mdHdhcmUoY29uc3QgRmlsdGVyJikg
b3ZlcnJpZGU7CiAKLSAgICB2b2lkIHBsYXRmb3JtQXBwbHlTb2Z0d2FyZSgpIG92ZXJyaWRlOwot
Ci0gICAgdm9pZCBkZXRlcm1pbmVBYnNvbHV0ZVBhaW50UmVjdCgpIG92ZXJyaWRlOworICAgIHZv
aWQgZGV0ZXJtaW5lQWJzb2x1dGVQYWludFJlY3QoY29uc3QgRmlsdGVyJikgb3ZlcnJpZGU7CiAK
ICAgICBJbnRPdXRzZXRzIG91dHNldHMoKSBjb25zdCBvdmVycmlkZTsKIApAQCAtNzAsMyArNjcs
NCBAQCBwcml2YXRlOgogICAgIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCitTUEVDSUFMSVpF
X1RZUEVfVFJBSVRTX0ZJTFRFUl9FRkZFQ1QoRkVEcm9wU2hhZG93KQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRUZsb29kLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVGbG9vZC5jcHAKaW5kZXggYjQy
MzU1MzRjMzhiMWViYTIxMWVlODQ4NjE3OTkyMzgwZjNiNmIwMS4uOGJkOWUzNWM5MWFhZTJmM2Y1
YTMwZGE2MDU3NGQ1ZmViNDVmMGNlYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvZmlsdGVycy9GRUZsb29kLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFRmxvb2QuY3BwCkBAIC0zMCwxNiArMzAsMTYgQEAKIAog
bmFtZXNwYWNlIFdlYkNvcmUgewogCi1GRUZsb29kOjpGRUZsb29kKEZpbHRlciYgZmlsdGVyLCBj
b25zdCBDb2xvciYgZmxvb2RDb2xvciwgZmxvYXQgZmxvb2RPcGFjaXR5KQotICAgIDogRmlsdGVy
RWZmZWN0KGZpbHRlciwgVHlwZTo6Rmxvb2QpCitGRUZsb29kOjpGRUZsb29kKGNvbnN0IENvbG9y
JiBmbG9vZENvbG9yLCBmbG9hdCBmbG9vZE9wYWNpdHkpCisgICAgOiBGaWx0ZXJFZmZlY3QoRmls
dGVyRWZmZWN0OjpUeXBlOjpGRUZsb29kKQogICAgICwgbV9mbG9vZENvbG9yKGZsb29kQ29sb3Ip
CiAgICAgLCBtX2Zsb29kT3BhY2l0eShmbG9vZE9wYWNpdHkpCiB7CiB9CiAKLVJlZjxGRUZsb29k
PiBGRUZsb29kOjpjcmVhdGUoRmlsdGVyJiBmaWx0ZXIsIGNvbnN0IENvbG9yJiBmbG9vZENvbG9y
LCBmbG9hdCBmbG9vZE9wYWNpdHkpCitSZWY8RkVGbG9vZD4gRkVGbG9vZDo6Y3JlYXRlKGNvbnN0
IENvbG9yJiBmbG9vZENvbG9yLCBmbG9hdCBmbG9vZE9wYWNpdHkpCiB7Ci0gICAgcmV0dXJuIGFk
b3B0UmVmKCpuZXcgRkVGbG9vZChmaWx0ZXIsIGZsb29kQ29sb3IsIGZsb29kT3BhY2l0eSkpOwor
ICAgIHJldHVybiBhZG9wdFJlZigqbmV3IEZFRmxvb2QoZmxvb2RDb2xvciwgZmxvb2RPcGFjaXR5
KSk7CiB9CiAKIGJvb2wgRkVGbG9vZDo6c2V0Rmxvb2RDb2xvcihjb25zdCBDb2xvciYgY29sb3Ip
CkBAIC01OCw3ICs1OCw3IEBAIGJvb2wgRkVGbG9vZDo6c2V0Rmxvb2RPcGFjaXR5KGZsb2F0IGZs
b29kT3BhY2l0eSkKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotdm9pZCBGRUZsb29kOjpwbGF0Zm9y
bUFwcGx5U29mdHdhcmUoKQordm9pZCBGRUZsb29kOjpwbGF0Zm9ybUFwcGx5U29mdHdhcmUoY29u
c3QgRmlsdGVyJikKIHsKICAgICBJbWFnZUJ1ZmZlciogcmVzdWx0SW1hZ2UgPSBjcmVhdGVJbWFn
ZUJ1ZmZlclJlc3VsdCgpOwogICAgIGlmICghcmVzdWx0SW1hZ2UpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFRmxvb2QuaCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVGbG9vZC5oCmluZGV4IGI3MDRkYzk2
OWM2ZDc1ODhiY2ViMGFkOGIyNDY4MmZhMDYxNzM0OGUuLmEyMDc4MTkyZTY2ODY1ZDcyOGQ0YWU0
NzMzNGFiMTQ4Y2IxNGQ4OGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2ZpbHRlcnMvRkVGbG9vZC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2ZpbHRlcnMvRkVGbG9vZC5oCkBAIC0yMiwxNCArMjIsMTMgQEAKICNwcmFnbWEgb25j
ZQogCiAjaW5jbHVkZSAiQ29sb3IuaCIKLSNpbmNsdWRlICJGaWx0ZXIuaCIKICNpbmNsdWRlICJG
aWx0ZXJFZmZlY3QuaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBGRUZsb29kIDog
cHVibGljIEZpbHRlckVmZmVjdCB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFJlZjxGRUZsb29kPiBj
cmVhdGUoRmlsdGVyJiwgY29uc3QgQ29sb3ImLCBmbG9hdCk7CisgICAgc3RhdGljIFJlZjxGRUZs
b29kPiBjcmVhdGUoY29uc3QgQ29sb3ImIGZsb29kQ29sb3IsIGZsb2F0IGZsb29kT3BhY2l0eSk7
CiAKICAgICBjb25zdCBDb2xvciYgZmxvb2RDb2xvcigpIGNvbnN0IHsgcmV0dXJuIG1fZmxvb2RD
b2xvcjsgfQogICAgIGJvb2wgc2V0Rmxvb2RDb2xvcihjb25zdCBDb2xvciYpOwpAQCAtNDUsMTMg
KzQ0LDExIEBAIHB1YmxpYzoKICNlbmRpZgogCiBwcml2YXRlOgotICAgIEZFRmxvb2QoRmlsdGVy
JiwgY29uc3QgQ29sb3ImLCBmbG9hdCk7CisgICAgRkVGbG9vZChjb25zdCBDb2xvciYgZmxvb2RD
b2xvciwgZmxvYXQgZmxvb2RPcGFjaXR5KTsKIAotICAgIGNvbnN0IGNoYXIqIGZpbHRlck5hbWUo
KSBjb25zdCBmaW5hbCB7IHJldHVybiAiRkVGbG9vZCI7IH0KKyAgICB2b2lkIHBsYXRmb3JtQXBw
bHlTb2Z0d2FyZShjb25zdCBGaWx0ZXImKSBvdmVycmlkZTsKIAotICAgIHZvaWQgcGxhdGZvcm1B
cHBseVNvZnR3YXJlKCkgb3ZlcnJpZGU7Ci0KLSAgICB2b2lkIGRldGVybWluZUFic29sdXRlUGFp
bnRSZWN0KCkgb3ZlcnJpZGUgeyBzZXRBYnNvbHV0ZVBhaW50UmVjdChlbmNsb3NpbmdJbnRSZWN0
KG1heEVmZmVjdFJlY3QoKSkpOyB9CisgICAgdm9pZCBkZXRlcm1pbmVBYnNvbHV0ZVBhaW50UmVj
dChjb25zdCBGaWx0ZXImKSBvdmVycmlkZSB7IHNldEFic29sdXRlUGFpbnRSZWN0KGVuY2xvc2lu
Z0ludFJlY3QobWF4RWZmZWN0UmVjdCgpKSk7IH0KIAogICAgIFdURjo6VGV4dFN0cmVhbSYgZXh0
ZXJuYWxSZXByZXNlbnRhdGlvbihXVEY6OlRleHRTdHJlYW0mLCBSZXByZXNlbnRhdGlvblR5cGUp
IGNvbnN0IG92ZXJyaWRlOwogCkBAIC02MSwzICs1OCw0IEBAIHByaXZhdGU6CiAKIH0gLy8gbmFt
ZXNwYWNlIFdlYkNvcmUKIAorU1BFQ0lBTElaRV9UWVBFX1RSQUlUU19GSUxURVJfRUZGRUNUKEZF
Rmxvb2QpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0
ZXJzL0ZFR2F1c3NpYW5CbHVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2ZpbHRlcnMvRkVHYXVzc2lhbkJsdXIuY3BwCmluZGV4IDBmNmVlODdmOTVlNzU3NTE4NjNmZDJl
NWY1NDllNzRkOTcyOWRiMWYuLmQyODA4ZmVkYTFmYTZkNzhkOGMzMDgyMmViNjQ3MjZmZTFlYzZh
NmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMv
RkVHYXVzc2lhbkJsdXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2ZpbHRlcnMvRkVHYXVzc2lhbkJsdXIuY3BwCkBAIC03OSwxNyArNzksMTcgQEAgaW5saW5lIHZv
aWQga2VybmVsUG9zaXRpb24oaW50IGJsdXJJdGVyYXRpb24sIHVuc2lnbmVkJiByYWRpdXMsIGlu
dCYgZGVsdGFMZWZ0LAogICAgIH0KIH0KIAotRkVHYXVzc2lhbkJsdXI6OkZFR2F1c3NpYW5CbHVy
KEZpbHRlciYgZmlsdGVyLCBmbG9hdCB4LCBmbG9hdCB5LCBFZGdlTW9kZVR5cGUgZWRnZU1vZGUp
Ci0gICAgOiBGaWx0ZXJFZmZlY3QoZmlsdGVyLCBUeXBlOjpHYXVzc2lhbkJsdXIpCitGRUdhdXNz
aWFuQmx1cjo6RkVHYXVzc2lhbkJsdXIoZmxvYXQgeCwgZmxvYXQgeSwgRWRnZU1vZGVUeXBlIGVk
Z2VNb2RlKQorICAgIDogRmlsdGVyRWZmZWN0KEZpbHRlckVmZmVjdDo6VHlwZTo6RkVHYXVzc2lh
bkJsdXIpCiAgICAgLCBtX3N0ZFgoeCkKICAgICAsIG1fc3RkWSh5KQogICAgICwgbV9lZGdlTW9k
ZShlZGdlTW9kZSkKIHsKIH0KIAotUmVmPEZFR2F1c3NpYW5CbHVyPiBGRUdhdXNzaWFuQmx1cjo6
Y3JlYXRlKEZpbHRlciYgZmlsdGVyLCBmbG9hdCB4LCBmbG9hdCB5LCBFZGdlTW9kZVR5cGUgZWRn
ZU1vZGUpCitSZWY8RkVHYXVzc2lhbkJsdXI+IEZFR2F1c3NpYW5CbHVyOjpjcmVhdGUoZmxvYXQg
eCwgZmxvYXQgeSwgRWRnZU1vZGVUeXBlIGVkZ2VNb2RlKQogewotICAgIHJldHVybiBhZG9wdFJl
ZigqbmV3IEZFR2F1c3NpYW5CbHVyKGZpbHRlciwgeCwgeSwgZWRnZU1vZGUpKTsKKyAgICByZXR1
cm4gYWRvcHRSZWYoKm5ldyBGRUdhdXNzaWFuQmx1cih4LCB5LCBlZGdlTW9kZSkpOwogfQogCiB2
b2lkIEZFR2F1c3NpYW5CbHVyOjpzZXRTdGREZXZpYXRpb25YKGZsb2F0IHgpCkBAIC00ODUsNyAr
NDg1LDcgQEAgSW50U2l6ZSBGRUdhdXNzaWFuQmx1cjo6Y2FsY3VsYXRlVW5zY2FsZWRLZXJuZWxT
aXplKEZsb2F0U2l6ZSBzdGREZXZpYXRpb24pCiAKIEludFNpemUgRkVHYXVzc2lhbkJsdXI6OmNh
bGN1bGF0ZUtlcm5lbFNpemUoY29uc3QgRmlsdGVyJiBmaWx0ZXIsIEZsb2F0U2l6ZSBzdGREZXZp
YXRpb24pCiB7Ci0gICAgcmV0dXJuIGNhbGN1bGF0ZVVuc2NhbGVkS2VybmVsU2l6ZShmaWx0ZXIu
c2NhbGVkQnlGaWx0ZXJSZXNvbHV0aW9uKHN0ZERldmlhdGlvbikpOworICAgIHJldHVybiBjYWxj
dWxhdGVVbnNjYWxlZEtlcm5lbFNpemUoZmlsdGVyLnNjYWxlZEJ5RmlsdGVyU2NhbGUoc3RkRGV2
aWF0aW9uKSk7CiB9CiAKIEludFNpemUgRkVHYXVzc2lhbkJsdXI6OmNhbGN1bGF0ZU91dHNldFNp
emUoRmxvYXRTaXplIHN0ZERldmlhdGlvbikKQEAgLTQ5Niw5ICs0OTYsOSBAQCBJbnRTaXplIEZF
R2F1c3NpYW5CbHVyOjpjYWxjdWxhdGVPdXRzZXRTaXplKEZsb2F0U2l6ZSBzdGREZXZpYXRpb24p
CiAgICAgcmV0dXJuIHsgMyAqIGtlcm5lbFNpemUud2lkdGgoKSAvIDIsIDMgKiBrZXJuZWxTaXpl
LmhlaWdodCgpIC8gMiB9OwogfQogCi12b2lkIEZFR2F1c3NpYW5CbHVyOjpkZXRlcm1pbmVBYnNv
bHV0ZVBhaW50UmVjdCgpCit2b2lkIEZFR2F1c3NpYW5CbHVyOjpkZXRlcm1pbmVBYnNvbHV0ZVBh
aW50UmVjdChjb25zdCBGaWx0ZXImIGZpbHRlcikKIHsKLSAgICBJbnRTaXplIGtlcm5lbFNpemUg
PSBjYWxjdWxhdGVLZXJuZWxTaXplKGZpbHRlcigpLCB7IG1fc3RkWCwgbV9zdGRZIH0pOworICAg
IEludFNpemUga2VybmVsU2l6ZSA9IGNhbGN1bGF0ZUtlcm5lbFNpemUoZmlsdGVyLCB7IG1fc3Rk
WCwgbV9zdGRZIH0pOwogCiAgICAgRmxvYXRSZWN0IGFic29sdXRlUGFpbnRSZWN0ID0gaW5wdXRF
ZmZlY3QoMCktPmFic29sdXRlUGFpbnRSZWN0KCk7CiAgICAgLy8gRWRnZSBtb2RlcyBvdGhlciB0
aGFuICdub25lJyBkbyBub3QgaW5mbGF0ZSB0aGUgYWZmZWN0ZWQgcGFpbnQgcmVjdC4KQEAgLTUx
OSw3ICs1MTksNyBAQCB2b2lkIEZFR2F1c3NpYW5CbHVyOjpkZXRlcm1pbmVBYnNvbHV0ZVBhaW50
UmVjdCgpCiAgICAgc2V0QWJzb2x1dGVQYWludFJlY3QoZW5jbG9zaW5nSW50UmVjdChhYnNvbHV0
ZVBhaW50UmVjdCkpOwogfQogCi12b2lkIEZFR2F1c3NpYW5CbHVyOjpwbGF0Zm9ybUFwcGx5U29m
dHdhcmUoKQordm9pZCBGRUdhdXNzaWFuQmx1cjo6cGxhdGZvcm1BcHBseVNvZnR3YXJlKGNvbnN0
IEZpbHRlciYgZmlsdGVyKQogewogICAgIEZpbHRlckVmZmVjdCogaW4gPSBpbnB1dEVmZmVjdCgw
KTsKIApAQCAtNTM2LDExICs1MzYsOSBAQCB2b2lkIEZFR2F1c3NpYW5CbHVyOjpwbGF0Zm9ybUFw
cGx5U29mdHdhcmUoKQogICAgIGlmICghbV9zdGRYICYmICFtX3N0ZFkpCiAgICAgICAgIHJldHVy
bjsKIAotICAgIEludFNpemUga2VybmVsU2l6ZSA9IGNhbGN1bGF0ZUtlcm5lbFNpemUoZmlsdGVy
KCksIHsgbV9zdGRYLCBtX3N0ZFkgfSk7Ci0gICAga2VybmVsU2l6ZS5zY2FsZShmaWx0ZXIoKS5m
aWx0ZXJTY2FsZSgpKTsKKyAgICBJbnRTaXplIGtlcm5lbFNpemUgPSBjYWxjdWxhdGVLZXJuZWxT
aXplKGZpbHRlciwgeyBtX3N0ZFgsIG1fc3RkWSB9KTsKIAogICAgIEludFNpemUgcGFpbnRTaXpl
ID0gYWJzb2x1dGVQYWludFJlY3QoKS5zaXplKCk7Ci0gICAgcGFpbnRTaXplLnNjYWxlKGZpbHRl
cigpLmZpbHRlclNjYWxlKCkpOwogICAgIGF1dG8gdG1wSW1hZ2VEYXRhID0gVWludDhDbGFtcGVk
QXJyYXk6OnRyeUNyZWF0ZVVuaW5pdGlhbGl6ZWQocGFpbnRTaXplLmFyZWEoKSAqIDQpOwogICAg
IGlmICghdG1wSW1hZ2VEYXRhKQogICAgICAgICByZXR1cm47CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFR2F1c3NpYW5CbHVyLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFR2F1c3NpYW5CbHVyLmgKaW5k
ZXggNWZiOTdmZmIwNzBjMmRhZWI2ZWIyODNiZWFhYTE3NjQ3Y2JiMmQzZS4uNzY5NjIzYWZhNTQy
YzBkODYyNWFkZGEwNTkyNTBmNTg1ZTA1M2FmMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRUdhdXNzaWFuQmx1ci5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVHYXVzc2lhbkJsdXIuaApAQCAtMjIs
MTQgKzIyLDEzIEBACiAjcHJhZ21hIG9uY2UKIAogI2luY2x1ZGUgIkZFQ29udm9sdmVNYXRyaXgu
aCIKLSNpbmNsdWRlICJGaWx0ZXIuaCIKICNpbmNsdWRlICJGaWx0ZXJFZmZlY3QuaCIKIAogbmFt
ZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBGRUdhdXNzaWFuQmx1ciA6IHB1YmxpYyBGaWx0ZXJF
ZmZlY3QgewogcHVibGljOgotICAgIHN0YXRpYyBSZWY8RkVHYXVzc2lhbkJsdXI+IGNyZWF0ZShG
aWx0ZXImLCBmbG9hdCwgZmxvYXQsIEVkZ2VNb2RlVHlwZSk7CisgICAgc3RhdGljIFJlZjxGRUdh
dXNzaWFuQmx1cj4gY3JlYXRlKGZsb2F0IHgsIGZsb2F0IHksIEVkZ2VNb2RlVHlwZSk7CiAKICAg
ICBmbG9hdCBzdGREZXZpYXRpb25YKCkgY29uc3QgeyByZXR1cm4gbV9zdGRYOyB9CiAgICAgdm9p
ZCBzZXRTdGREZXZpYXRpb25YKGZsb2F0KTsKQEAgLTQ1LDkgKzQ0LDcgQEAgcHVibGljOgogICAg
IHN0YXRpYyBJbnRTaXplIGNhbGN1bGF0ZU91dHNldFNpemUoRmxvYXRTaXplIHN0ZERldmlhdGlv
bik7CiAKIHByaXZhdGU6Ci0gICAgRkVHYXVzc2lhbkJsdXIoRmlsdGVyJiwgZmxvYXQsIGZsb2F0
LCBFZGdlTW9kZVR5cGUpOwotCi0gICAgY29uc3QgY2hhciogZmlsdGVyTmFtZSgpIGNvbnN0IGZp
bmFsIHsgcmV0dXJuICJGRUdhdXNzaWFuQmx1ciI7IH0KKyAgICBGRUdhdXNzaWFuQmx1cihmbG9h
dCB4LCBmbG9hdCB5LCBFZGdlTW9kZVR5cGUpOwogCiAgICAgc3RhdGljIGNvbnN0IGludCBzX21p
bmltYWxSZWN0RGltZW5zaW9uID0gMTAwICogMTAwOyAvLyBFbXBpcmljYWwgZGF0YSBsaW1pdCBm
b3IgcGFyYWxsZWwgam9icwogCkBAIC02NCw5ICs2MSw5IEBAIHByaXZhdGU6CiAgICAgICAgIHVu
c2lnbmVkIGtlcm5lbFNpemVZOwogICAgIH07CiAKLSAgICB2b2lkIHBsYXRmb3JtQXBwbHlTb2Z0
d2FyZSgpIG92ZXJyaWRlOworICAgIHZvaWQgcGxhdGZvcm1BcHBseVNvZnR3YXJlKGNvbnN0IEZp
bHRlciYpIG92ZXJyaWRlOwogCi0gICAgdm9pZCBkZXRlcm1pbmVBYnNvbHV0ZVBhaW50UmVjdCgp
IG92ZXJyaWRlOworICAgIHZvaWQgZGV0ZXJtaW5lQWJzb2x1dGVQYWludFJlY3QoY29uc3QgRmls
dGVyJikgb3ZlcnJpZGU7CiAKICAgICBJbnRPdXRzZXRzIG91dHNldHMoKSBjb25zdCBvdmVycmlk
ZTsKIApAQCAtODMsMyArODAsNCBAQCBwcml2YXRlOgogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3Jl
CiAKK1NQRUNJQUxJWkVfVFlQRV9UUkFJVFNfRklMVEVSX0VGRkVDVChGRUdhdXNzaWFuQmx1cikK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVM
aWdodGluZy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZF
TGlnaHRpbmcuY3BwCmluZGV4IDY1OWIxMDU1ZjYxZWFhYmM1ZjI5OTkxZGEwZGExYTU4NTA3MWFl
OTIuLjkxMThhOWJmMjUyZWM4MjA2NDcwM2Q1ZGFmMWY2ZmE4NDA1MmEwYzQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVMaWdodGluZy5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRUxpZ2h0aW5n
LmNwcApAQCAtMzUsOCArMzUsOCBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLUZFTGlnaHRp
bmc6OkZFTGlnaHRpbmcoRmlsdGVyJiBmaWx0ZXIsIExpZ2h0aW5nVHlwZSBsaWdodGluZ1R5cGUs
IGNvbnN0IENvbG9yJiBsaWdodGluZ0NvbG9yLCBmbG9hdCBzdXJmYWNlU2NhbGUsIGZsb2F0IGRp
ZmZ1c2VDb25zdGFudCwgZmxvYXQgc3BlY3VsYXJDb25zdGFudCwgZmxvYXQgc3BlY3VsYXJFeHBv
bmVudCwgZmxvYXQga2VybmVsVW5pdExlbmd0aFgsIGZsb2F0IGtlcm5lbFVuaXRMZW5ndGhZLCBS
ZWY8TGlnaHRTb3VyY2U+JiYgbGlnaHRTb3VyY2UsIFR5cGUgdHlwZSkKLSAgICA6IEZpbHRlckVm
ZmVjdChmaWx0ZXIsIHR5cGUpCitGRUxpZ2h0aW5nOjpGRUxpZ2h0aW5nKExpZ2h0aW5nVHlwZSBs
aWdodGluZ1R5cGUsIGNvbnN0IENvbG9yJiBsaWdodGluZ0NvbG9yLCBmbG9hdCBzdXJmYWNlU2Nh
bGUsIGZsb2F0IGRpZmZ1c2VDb25zdGFudCwgZmxvYXQgc3BlY3VsYXJDb25zdGFudCwgZmxvYXQg
c3BlY3VsYXJFeHBvbmVudCwgZmxvYXQga2VybmVsVW5pdExlbmd0aFgsIGZsb2F0IGtlcm5lbFVu
aXRMZW5ndGhZLCBSZWY8TGlnaHRTb3VyY2U+JiYgbGlnaHRTb3VyY2UsIFR5cGUgdHlwZSkKKyAg
ICA6IEZpbHRlckVmZmVjdCh0eXBlKQogICAgICwgbV9saWdodGluZ1R5cGUobGlnaHRpbmdUeXBl
KQogICAgICwgbV9saWdodFNvdXJjZShXVEZNb3ZlKGxpZ2h0U291cmNlKSkKICAgICAsIG1fbGln
aHRpbmdDb2xvcihsaWdodGluZ0NvbG9yKQpAQCAtNDcxLDcgKzQ3MSw3IEBAIGJvb2wgRkVMaWdo
dGluZzo6ZHJhd0xpZ2h0aW5nKFVpbnQ4Q2xhbXBlZEFycmF5JiBwaXhlbHMsIGludCB3aWR0aCwg
aW50IGhlaWdodCkKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotdm9pZCBGRUxpZ2h0aW5nOjpwbGF0
Zm9ybUFwcGx5U29mdHdhcmUoKQordm9pZCBGRUxpZ2h0aW5nOjpwbGF0Zm9ybUFwcGx5U29mdHdh
cmUoY29uc3QgRmlsdGVyJikKIHsKICAgICBGaWx0ZXJFZmZlY3QqIGluID0gaW5wdXRFZmZlY3Qo
MCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRl
cnMvRkVMaWdodGluZy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVy
cy9GRUxpZ2h0aW5nLmgKaW5kZXggYjBiYjcwYTE0ZDE3NDk1MDY3MzdlODhlMDUxNGVlNzk2ODIw
YTQ0OS4uZDg1MmY4YjEzZGQ3OTdmOGU4OTkzNTFmOGI1OGQzNTg1YTAzZjM4YiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRUxpZ2h0aW5nLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRUxpZ2h0aW5n
LmgKQEAgLTI3LDcgKzI3LDYgQEAKICNwcmFnbWEgb25jZQogCiAjaW5jbHVkZSAiQ29sb3IuaCIK
LSNpbmNsdWRlICJGaWx0ZXIuaCIKICNpbmNsdWRlICJGaWx0ZXJFZmZlY3QuaCIKICNpbmNsdWRl
ICJMaWdodFNvdXJjZS5oIgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0ZvcndhcmQuaD4KQEAg
LTQwLDcgKzM5LDcgQEAgc3RydWN0IEZFTGlnaHRpbmdQYWludGluZ0RhdGFGb3JOZW9uOwogCiBj
bGFzcyBGRUxpZ2h0aW5nIDogcHVibGljIEZpbHRlckVmZmVjdCB7CiBwdWJsaWM6Ci0gICAgdm9p
ZCBkZXRlcm1pbmVBYnNvbHV0ZVBhaW50UmVjdCgpIG92ZXJyaWRlIHsgc2V0QWJzb2x1dGVQYWlu
dFJlY3QoZW5jbG9zaW5nSW50UmVjdChtYXhFZmZlY3RSZWN0KCkpKTsgfQorICAgIHZvaWQgZGV0
ZXJtaW5lQWJzb2x1dGVQYWludFJlY3QoY29uc3QgRmlsdGVyJikgb3ZlcnJpZGUgeyBzZXRBYnNv
bHV0ZVBhaW50UmVjdChlbmNsb3NpbmdJbnRSZWN0KG1heEVmZmVjdFJlY3QoKSkpOyB9CiAKICAg
ICBmbG9hdCBzdXJmYWNlU2NhbGUoKSBjb25zdCB7IHJldHVybiBtX3N1cmZhY2VTY2FsZTsgfQog
ICAgIGJvb2wgc2V0U3VyZmFjZVNjYWxlKGZsb2F0KTsKQEAgLTEyOCwxNiArMTI3LDE0IEBAIHBy
b3RlY3RlZDoKICAgICBzdGF0aWMgdm9pZCBwbGF0Zm9ybUFwcGx5R2VuZXJpY1dvcmtlcihQbGF0
Zm9ybUFwcGx5R2VuZXJpY1BhcmFtZXRlcnMqKTsKICAgICBzdGF0aWMgdm9pZCBwbGF0Zm9ybUFw
cGx5TmVvbldvcmtlcihGRUxpZ2h0aW5nUGFpbnRpbmdEYXRhRm9yTmVvbiopOwogCi0gICAgRkVM
aWdodGluZyhGaWx0ZXImLCBMaWdodGluZ1R5cGUsIGNvbnN0IENvbG9yJiwgZmxvYXQsIGZsb2F0
LCBmbG9hdCwgZmxvYXQsIGZsb2F0LCBmbG9hdCwgUmVmPExpZ2h0U291cmNlPiYmLCBUeXBlKTsK
LQotICAgIGNvbnN0IGNoYXIqIGZpbHRlck5hbWUoKSBjb25zdCBmaW5hbCB7IHJldHVybiAiRkVM
aWdodGluZyI7IH0KKyAgICBGRUxpZ2h0aW5nKExpZ2h0aW5nVHlwZSwgY29uc3QgQ29sb3ImIGxp
Z2h0aW5nQ29sb3IsIGZsb2F0IHN1cmZhY2VTY2FsZSwgZmxvYXQgZGlmZnVzZUNvbnN0YW50LCBm
bG9hdCBzcGVjdWxhckNvbnN0YW50LCBmbG9hdCBzcGVjdWxhckV4cG9uZW50LCBmbG9hdCBrZXJu
ZWxVbml0TGVuZ3RoWCwgZmxvYXQga2VybmVsVW5pdExlbmd0aFksIFJlZjxMaWdodFNvdXJjZT4m
JiwgVHlwZSk7CiAKICAgICBib29sIGRyYXdMaWdodGluZyhVaW50OENsYW1wZWRBcnJheSYsIGlu
dCwgaW50KTsKIAogICAgIHZvaWQgc2V0UGl4ZWwoaW50IG9mZnNldCwgY29uc3QgTGlnaHRpbmdE
YXRhJiwgY29uc3QgTGlnaHRTb3VyY2U6OlBhaW50aW5nRGF0YSYsIGludCB4LCBpbnQgeSwgZmxv
YXQgZmFjdG9yWCwgZmxvYXQgZmFjdG9yWSwgSW50U2l6ZSBub3JtYWxWZWN0b3IpOwogICAgIHZv
aWQgc2V0UGl4ZWxJbnRlcm5hbChpbnQgb2Zmc2V0LCBjb25zdCBMaWdodGluZ0RhdGEmLCBjb25z
dCBMaWdodFNvdXJjZTo6UGFpbnRpbmdEYXRhJiwgaW50IHgsIGludCB5LCBmbG9hdCBmYWN0b3JY
LCBmbG9hdCBmYWN0b3JZLCBJbnRTaXplIG5vcm1hbFZlY3RvciwgZmxvYXQgYWxwaGEpOwogCi0g
ICAgdm9pZCBwbGF0Zm9ybUFwcGx5U29mdHdhcmUoKSBvdmVycmlkZTsKKyAgICB2b2lkIHBsYXRm
b3JtQXBwbHlTb2Z0d2FyZShjb25zdCBGaWx0ZXImKSBvdmVycmlkZTsKIAogICAgIHZvaWQgcGxh
dGZvcm1BcHBseShjb25zdCBMaWdodGluZ0RhdGEmLCBjb25zdCBMaWdodFNvdXJjZTo6UGFpbnRp
bmdEYXRhJik7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2ZpbHRlcnMvRkVNZXJnZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9m
aWx0ZXJzL0ZFTWVyZ2UuY3BwCmluZGV4IDBhMjAwMDFiMTczYmQ4ZmRmNmJiYTYzNmNkMjNjZTQ3
MDI2ZTdiM2YuLjQ4OWMyZmZiYTFjZjVlNDg3ZGY4MjYzNzYxYzQ2NmM3NWFmYzhmZTcgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVNZXJnZS5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRU1lcmdl
LmNwcApAQCAtMjgsMTcgKzI4LDE3IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotRkVNZXJn
ZTo6RkVNZXJnZShGaWx0ZXImIGZpbHRlcikKLSAgICA6IEZpbHRlckVmZmVjdChmaWx0ZXIsIFR5
cGU6Ok1lcmdlKQorRkVNZXJnZTo6RkVNZXJnZSgpCisgICAgOiBGaWx0ZXJFZmZlY3QoRmlsdGVy
RWZmZWN0OjpUeXBlOjpGRU1lcmdlKQogewogfQogCi1SZWY8RkVNZXJnZT4gRkVNZXJnZTo6Y3Jl
YXRlKEZpbHRlciYgZmlsdGVyKQorUmVmPEZFTWVyZ2U+IEZFTWVyZ2U6OmNyZWF0ZSgpCiB7Ci0g
ICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgRkVNZXJnZShmaWx0ZXIpKTsKKyAgICByZXR1cm4gYWRv
cHRSZWYoKm5ldyBGRU1lcmdlKCkpOwogfQogCi12b2lkIEZFTWVyZ2U6OnBsYXRmb3JtQXBwbHlT
b2Z0d2FyZSgpCit2b2lkIEZFTWVyZ2U6OnBsYXRmb3JtQXBwbHlTb2Z0d2FyZShjb25zdCBGaWx0
ZXImKQogewogICAgIHVuc2lnbmVkIHNpemUgPSBudW1iZXJPZkVmZmVjdElucHV0cygpOwogICAg
IEFTU0VSVChzaXplID4gMCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9maWx0ZXJzL0ZFTWVyZ2UuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2ZpbHRlcnMvRkVNZXJnZS5oCmluZGV4IDVjZmM1Y2I3OTgxOWNlY2VkNTA3M2U1N2IwMTk0
ZWJjZjE4ZjI2MDcuLjA1MTlhNTY4OGE4MzYzZmMxYmEwNjMyMDRkYjIyZjc0MzFhZTM0ZjEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVNZXJn
ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVNZXJn
ZS5oCkBAIC0yMiwyMyArMjIsMjEgQEAKICNwcmFnbWEgb25jZQogCiAjaW5jbHVkZSAiRmlsdGVy
RWZmZWN0LmgiCi0jaW5jbHVkZSAiRmlsdGVyLmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAog
Y2xhc3MgRkVNZXJnZSA6IHB1YmxpYyBGaWx0ZXJFZmZlY3QgewogcHVibGljOgotICAgIHN0YXRp
YyBSZWY8RkVNZXJnZT4gY3JlYXRlKEZpbHRlciYpOworICAgIHN0YXRpYyBSZWY8RkVNZXJnZT4g
Y3JlYXRlKCk7CiAKIHByaXZhdGU6Ci0gICAgRkVNZXJnZShGaWx0ZXImKTsKKyAgICBGRU1lcmdl
KCk7CiAKLSAgICBjb25zdCBjaGFyKiBmaWx0ZXJOYW1lKCkgY29uc3QgZmluYWwgeyByZXR1cm4g
IkZFTWVyZ2UiOyB9Ci0KLSAgICB2b2lkIHBsYXRmb3JtQXBwbHlTb2Z0d2FyZSgpIG92ZXJyaWRl
OworICAgIHZvaWQgcGxhdGZvcm1BcHBseVNvZnR3YXJlKGNvbnN0IEZpbHRlciYpIG92ZXJyaWRl
OwogCiAgICAgV1RGOjpUZXh0U3RyZWFtJiBleHRlcm5hbFJlcHJlc2VudGF0aW9uKFdURjo6VGV4
dFN0cmVhbSYsIFJlcHJlc2VudGF0aW9uVHlwZSkgY29uc3Qgb3ZlcnJpZGU7CiB9OwogCiB9IC8v
IG5hbWVzcGFjZSBXZWJDb3JlCiAKK1NQRUNJQUxJWkVfVFlQRV9UUkFJVFNfRklMVEVSX0VGRkVD
VChGRU1lcmdlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
ZmlsdGVycy9GRU1vcnBob2xvZ3kuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvZmlsdGVycy9GRU1vcnBob2xvZ3kuY3BwCmluZGV4IDZhZTNkOTg5ODY2MjZlMDdjMDk0YzU4
NmYzMTk4YzljNThkYWVkNmIuLjg5YWYyZGVkNjYyM2M3YzAzYTVmNjZlMGZiNmQ5ZDg4NTBkZTU5
MzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMv
RkVNb3JwaG9sb2d5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9m
aWx0ZXJzL0ZFTW9ycGhvbG9neS5jcHAKQEAgLTM1LDE3ICszNSwxNyBAQAogCiBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAKLUZFTW9ycGhvbG9neTo6RkVNb3JwaG9sb2d5KEZpbHRlciYgZmlsdGVyLCBN
b3JwaG9sb2d5T3BlcmF0b3JUeXBlIHR5cGUsIGZsb2F0IHJhZGl1c1gsIGZsb2F0IHJhZGl1c1kp
Ci0gICAgOiBGaWx0ZXJFZmZlY3QoZmlsdGVyLCBUeXBlOjpNb3JwaG9sb2d5KQorRkVNb3JwaG9s
b2d5OjpGRU1vcnBob2xvZ3koTW9ycGhvbG9neU9wZXJhdG9yVHlwZSB0eXBlLCBmbG9hdCByYWRp
dXNYLCBmbG9hdCByYWRpdXNZKQorICAgIDogRmlsdGVyRWZmZWN0KEZpbHRlckVmZmVjdDo6VHlw
ZTo6RkVNb3JwaG9sb2d5KQogICAgICwgbV90eXBlKHR5cGUpCiAgICAgLCBtX3JhZGl1c1gocmFk
aXVzWCkKICAgICAsIG1fcmFkaXVzWShyYWRpdXNZKQogewogfQogCi1SZWY8RkVNb3JwaG9sb2d5
PiBGRU1vcnBob2xvZ3k6OmNyZWF0ZShGaWx0ZXImIGZpbHRlciwgTW9ycGhvbG9neU9wZXJhdG9y
VHlwZSB0eXBlLCBmbG9hdCByYWRpdXNYLCBmbG9hdCByYWRpdXNZKQorUmVmPEZFTW9ycGhvbG9n
eT4gRkVNb3JwaG9sb2d5OjpjcmVhdGUoTW9ycGhvbG9neU9wZXJhdG9yVHlwZSB0eXBlLCBmbG9h
dCByYWRpdXNYLCBmbG9hdCByYWRpdXNZKQogewotICAgIHJldHVybiBhZG9wdFJlZigqbmV3IEZF
TW9ycGhvbG9neShmaWx0ZXIsIHR5cGUsIHJhZGl1c1gsIHJhZGl1c1kpKTsKKyAgICByZXR1cm4g
YWRvcHRSZWYoKm5ldyBGRU1vcnBob2xvZ3kodHlwZSwgcmFkaXVzWCwgcmFkaXVzWSkpOwogfQog
CiBib29sIEZFTW9ycGhvbG9neTo6c2V0TW9ycGhvbG9neU9wZXJhdG9yKE1vcnBob2xvZ3lPcGVy
YXRvclR5cGUgdHlwZSkKQEAgLTcyLDExICs3MiwxMCBAQCBib29sIEZFTW9ycGhvbG9neTo6c2V0
UmFkaXVzWShmbG9hdCByYWRpdXNZKQogICAgIHJldHVybiB0cnVlOwogfQogCi12b2lkIEZFTW9y
cGhvbG9neTo6ZGV0ZXJtaW5lQWJzb2x1dGVQYWludFJlY3QoKQordm9pZCBGRU1vcnBob2xvZ3k6
OmRldGVybWluZUFic29sdXRlUGFpbnRSZWN0KGNvbnN0IEZpbHRlciYgZmlsdGVyKQogewogICAg
IEZsb2F0UmVjdCBwYWludFJlY3QgPSBpbnB1dEVmZmVjdCgwKS0+YWJzb2x1dGVQYWludFJlY3Qo
KTsKLSAgICBGaWx0ZXImIGZpbHRlciA9IHRoaXMtPmZpbHRlcigpOwotICAgIHBhaW50UmVjdC5p
bmZsYXRlKGZpbHRlci5zY2FsZWRCeUZpbHRlclJlc29sdXRpb24oeyBtX3JhZGl1c1gsIG1fcmFk
aXVzWSB9KSk7CisgICAgcGFpbnRSZWN0LmluZmxhdGUoZmlsdGVyLnNjYWxlZEJ5RmlsdGVyU2Nh
bGUoeyBtX3JhZGl1c1gsIG1fcmFkaXVzWSB9KSk7CiAgICAgaWYgKGNsaXBzVG9Cb3VuZHMoKSkK
ICAgICAgICAgcGFpbnRSZWN0LmludGVyc2VjdChtYXhFZmZlY3RSZWN0KCkpOwogICAgIGVsc2UK
QEAgLTI0MCw3ICsyMzksNyBAQCBib29sIEZFTW9ycGhvbG9neTo6cGxhdGZvcm1BcHBseURlZ2Vu
ZXJhdGUoVWludDhDbGFtcGVkQXJyYXkmIGRzdFBpeGVsQXJyYXksIGNvbgogICAgIHJldHVybiBm
YWxzZTsKIH0KIAotdm9pZCBGRU1vcnBob2xvZ3k6OnBsYXRmb3JtQXBwbHlTb2Z0d2FyZSgpCit2
b2lkIEZFTW9ycGhvbG9neTo6cGxhdGZvcm1BcHBseVNvZnR3YXJlKGNvbnN0IEZpbHRlciYgZmls
dGVyKQogewogICAgIEZpbHRlckVmZmVjdCogaW4gPSBpbnB1dEVmZmVjdCgwKTsKIApAQCAtMjU4
LDEyICsyNTcsMTEgQEAgdm9pZCBGRU1vcnBob2xvZ3k6OnBsYXRmb3JtQXBwbHlTb2Z0d2FyZSgp
CiAgICAgaWYgKHBsYXRmb3JtQXBwbHlEZWdlbmVyYXRlKGRlc3RpbmF0aW9uUGl4ZWxBcnJheSwg
ZWZmZWN0RHJhd2luZ1JlY3QsIHJhZGl1cy53aWR0aCgpLCByYWRpdXMuaGVpZ2h0KCkpKQogICAg
ICAgICByZXR1cm47CiAKLSAgICBGaWx0ZXImIGZpbHRlciA9IHRoaXMtPmZpbHRlcigpOwogICAg
IGF1dG8gc291cmNlUGl4ZWxBcnJheSA9IGluLT5wcmVtdWx0aXBsaWVkUmVzdWx0KGVmZmVjdERy
YXdpbmdSZWN0LCBvcGVyYXRpbmdDb2xvclNwYWNlKCkpOwogICAgIGlmICghc291cmNlUGl4ZWxB
cnJheSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgcmFkaXVzID0gZmxvb3JlZEludFNpemUoZmls
dGVyLnNjYWxlZEJ5RmlsdGVyUmVzb2x1dGlvbih7IG1fcmFkaXVzWCwgbV9yYWRpdXNZIH0pKTsK
KyAgICByYWRpdXMgPSBmbG9vcmVkSW50U2l6ZShmaWx0ZXIuc2NhbGVkQnlGaWx0ZXJTY2FsZSh7
IG1fcmFkaXVzWCwgbV9yYWRpdXNZIH0pKTsKICAgICBpbnQgcmFkaXVzWCA9IHN0ZDo6bWluKGVm
ZmVjdERyYXdpbmdSZWN0LndpZHRoKCkgLSAxLCByYWRpdXMud2lkdGgoKSk7CiAgICAgaW50IHJh
ZGl1c1kgPSBzdGQ6Om1pbihlZmZlY3REcmF3aW5nUmVjdC5oZWlnaHQoKSAtIDEsIHJhZGl1cy5o
ZWlnaHQoKSk7CiAKQEAgLTI3MywxMCArMjcxLDEwIEBAIHZvaWQgRkVNb3JwaG9sb2d5OjpwbGF0
Zm9ybUFwcGx5U29mdHdhcmUoKQogICAgIFBhaW50aW5nRGF0YSBwYWludGluZ0RhdGE7CiAgICAg
cGFpbnRpbmdEYXRhLnNyY1BpeGVsQXJyYXkgPSBzb3VyY2VQaXhlbEFycmF5LmdldCgpOwogICAg
IHBhaW50aW5nRGF0YS5kc3RQaXhlbEFycmF5ID0gJmRlc3RpbmF0aW9uUGl4ZWxBcnJheTsKLSAg
ICBwYWludGluZ0RhdGEud2lkdGggPSBjZWlsZihlZmZlY3REcmF3aW5nUmVjdC53aWR0aCgpICog
ZmlsdGVyLmZpbHRlclNjYWxlKCkpOwotICAgIHBhaW50aW5nRGF0YS5oZWlnaHQgPSBjZWlsZihl
ZmZlY3REcmF3aW5nUmVjdC5oZWlnaHQoKSAqIGZpbHRlci5maWx0ZXJTY2FsZSgpKTsKLSAgICBw
YWludGluZ0RhdGEucmFkaXVzWCA9IGNlaWxmKHJhZGl1c1ggKiBmaWx0ZXIuZmlsdGVyU2NhbGUo
KSk7Ci0gICAgcGFpbnRpbmdEYXRhLnJhZGl1c1kgPSBjZWlsZihyYWRpdXNZICogZmlsdGVyLmZp
bHRlclNjYWxlKCkpOworICAgIHBhaW50aW5nRGF0YS53aWR0aCA9IGNlaWxmKGVmZmVjdERyYXdp
bmdSZWN0LndpZHRoKCkpOworICAgIHBhaW50aW5nRGF0YS5oZWlnaHQgPSBjZWlsZihlZmZlY3RE
cmF3aW5nUmVjdC5oZWlnaHQoKSk7CisgICAgcGFpbnRpbmdEYXRhLnJhZGl1c1ggPSBjZWlsZihy
YWRpdXNYKTsKKyAgICBwYWludGluZ0RhdGEucmFkaXVzWSA9IGNlaWxmKHJhZGl1c1kpOwogCiAg
ICAgcGxhdGZvcm1BcHBseShwYWludGluZ0RhdGEpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRU1vcnBob2xvZ3kuaCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVNb3JwaG9sb2d5LmgKaW5kZXggNDhm
YzM1NDExN2ZjMjdjY2ZjOGU5M2YxNGVkZjA3NWRlMzljNWExMS4uYWU4MTUxNTRjZWFkYWVlZDMy
NmE0NDkzODcxY2YzZTg5NzBkZmJiZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvZmlsdGVycy9GRU1vcnBob2xvZ3kuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFTW9ycGhvbG9neS5oCkBAIC0yMiw3ICsyMiw2IEBA
CiAjcHJhZ21hIG9uY2UKIAogI2luY2x1ZGUgIkZpbHRlckVmZmVjdC5oIgotI2luY2x1ZGUgIkZp
bHRlci5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKQEAgLTM0LDcgKzMzLDcgQEAgZW51bSBN
b3JwaG9sb2d5T3BlcmF0b3JUeXBlIHsKIAogY2xhc3MgRkVNb3JwaG9sb2d5IDogcHVibGljIEZp
bHRlckVmZmVjdCB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFJlZjxGRU1vcnBob2xvZ3k+IGNyZWF0
ZShGaWx0ZXImLCBNb3JwaG9sb2d5T3BlcmF0b3JUeXBlLCBmbG9hdCByYWRpdXNYLCBmbG9hdCBy
YWRpdXNZKTsKKyAgICBzdGF0aWMgUmVmPEZFTW9ycGhvbG9neT4gY3JlYXRlKE1vcnBob2xvZ3lP
cGVyYXRvclR5cGUsIGZsb2F0IHJhZGl1c1gsIGZsb2F0IHJhZGl1c1kpOwogCiAgICAgTW9ycGhv
bG9neU9wZXJhdG9yVHlwZSBtb3JwaG9sb2d5T3BlcmF0b3IoKSBjb25zdCB7IHJldHVybiBtX3R5
cGU7IH0KICAgICBib29sIHNldE1vcnBob2xvZ3lPcGVyYXRvcihNb3JwaG9sb2d5T3BlcmF0b3JU
eXBlKTsKQEAgLTQ2LDEzICs0NSwxMSBAQCBwdWJsaWM6CiAgICAgYm9vbCBzZXRSYWRpdXNZKGZs
b2F0KTsKIAogcHJpdmF0ZToKLSAgICBGRU1vcnBob2xvZ3koRmlsdGVyJiwgTW9ycGhvbG9neU9w
ZXJhdG9yVHlwZSwgZmxvYXQgcmFkaXVzWCwgZmxvYXQgcmFkaXVzWSk7CisgICAgRkVNb3JwaG9s
b2d5KE1vcnBob2xvZ3lPcGVyYXRvclR5cGUsIGZsb2F0IHJhZGl1c1gsIGZsb2F0IHJhZGl1c1kp
OwogCi0gICAgY29uc3QgY2hhciogZmlsdGVyTmFtZSgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuICJG
RU1vcnBob2xvZ3kiOyB9CisgICAgdm9pZCBwbGF0Zm9ybUFwcGx5U29mdHdhcmUoY29uc3QgRmls
dGVyJikgb3ZlcnJpZGU7CiAKLSAgICB2b2lkIHBsYXRmb3JtQXBwbHlTb2Z0d2FyZSgpIG92ZXJy
aWRlOwotCi0gICAgdm9pZCBkZXRlcm1pbmVBYnNvbHV0ZVBhaW50UmVjdCgpIG92ZXJyaWRlOwor
ICAgIHZvaWQgZGV0ZXJtaW5lQWJzb2x1dGVQYWludFJlY3QoY29uc3QgRmlsdGVyJikgb3ZlcnJp
ZGU7CiAKICAgICBXVEY6OlRleHRTdHJlYW0mIGV4dGVybmFsUmVwcmVzZW50YXRpb24oV1RGOjpU
ZXh0U3RyZWFtJiwgUmVwcmVzZW50YXRpb25UeXBlKSBjb25zdCBvdmVycmlkZTsKIApAQCAtODYs
MyArODMsNCBAQCBwcml2YXRlOgogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKK1NQRUNJQUxJ
WkVfVFlQRV9UUkFJVFNfRklMVEVSX0VGRkVDVChGRU1vcnBob2xvZ3kpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFT2Zmc2V0LmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVPZmZzZXQuY3BwCmluZGV4
IDAyNzBkYjkyNDgxYTMzOTJkM2Q1YTFlOTE3YzJkNjVhYTQxNDBmNjkuLjg5MDljYmI4MTkyZjZk
M2RkOTE1MWY1NTI3M2VmOGU5NjAzN2JmOWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVPZmZzZXQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVPZmZzZXQuY3BwCkBAIC0zMCwxNiArMzAsMTYg
QEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1GRU9mZnNldDo6RkVPZmZzZXQoRmlsdGVyJiBm
aWx0ZXIsIGZsb2F0IGR4LCBmbG9hdCBkeSkKLSAgICA6IEZpbHRlckVmZmVjdChmaWx0ZXIsIFR5
cGU6Ok9mZnNldCkKK0ZFT2Zmc2V0OjpGRU9mZnNldChmbG9hdCBkeCwgZmxvYXQgZHkpCisgICAg
OiBGaWx0ZXJFZmZlY3QoRmlsdGVyRWZmZWN0OjpUeXBlOjpGRU9mZnNldCkKICAgICAsIG1fZHgo
ZHgpCiAgICAgLCBtX2R5KGR5KQogewogfQogCi1SZWY8RkVPZmZzZXQ+IEZFT2Zmc2V0OjpjcmVh
dGUoRmlsdGVyJiBmaWx0ZXIsIGZsb2F0IGR4LCBmbG9hdCBkeSkKK1JlZjxGRU9mZnNldD4gRkVP
ZmZzZXQ6OmNyZWF0ZShmbG9hdCBkeCwgZmxvYXQgZHkpCiB7Ci0gICAgcmV0dXJuIGFkb3B0UmVm
KCpuZXcgRkVPZmZzZXQoZmlsdGVyLCBkeCwgZHkpKTsKKyAgICByZXR1cm4gYWRvcHRSZWYoKm5l
dyBGRU9mZnNldChkeCwgZHkpKTsKIH0KIAogdm9pZCBGRU9mZnNldDo6c2V0RHgoZmxvYXQgZHgp
CkBAIC01MiwxMSArNTIsMTAgQEAgdm9pZCBGRU9mZnNldDo6c2V0RHkoZmxvYXQgZHkpCiAgICAg
bV9keSA9IGR5OwogfQogCi12b2lkIEZFT2Zmc2V0OjpkZXRlcm1pbmVBYnNvbHV0ZVBhaW50UmVj
dCgpCit2b2lkIEZFT2Zmc2V0OjpkZXRlcm1pbmVBYnNvbHV0ZVBhaW50UmVjdChjb25zdCBGaWx0
ZXImIGZpbHRlcikKIHsKICAgICBGbG9hdFJlY3QgcGFpbnRSZWN0ID0gaW5wdXRFZmZlY3QoMCkt
PmFic29sdXRlUGFpbnRSZWN0KCk7Ci0gICAgRmlsdGVyJiBmaWx0ZXIgPSB0aGlzLT5maWx0ZXIo
KTsKLSAgICBwYWludFJlY3QubW92ZShmaWx0ZXIuc2NhbGVkQnlGaWx0ZXJSZXNvbHV0aW9uKHsg
bV9keCwgbV9keSB9KSk7CisgICAgcGFpbnRSZWN0Lm1vdmUoZmlsdGVyLnNjYWxlZEJ5RmlsdGVy
U2NhbGUoeyBtX2R4LCBtX2R5IH0pKTsKICAgICBpZiAoY2xpcHNUb0JvdW5kcygpKQogICAgICAg
ICBwYWludFJlY3QuaW50ZXJzZWN0KG1heEVmZmVjdFJlY3QoKSk7CiAgICAgZWxzZQpAQCAtNjQs
NyArNjMsNyBAQCB2b2lkIEZFT2Zmc2V0OjpkZXRlcm1pbmVBYnNvbHV0ZVBhaW50UmVjdCgpCiAg
ICAgc2V0QWJzb2x1dGVQYWludFJlY3QoZW5jbG9zaW5nSW50UmVjdChwYWludFJlY3QpKTsKIH0K
IAotdm9pZCBGRU9mZnNldDo6cGxhdGZvcm1BcHBseVNvZnR3YXJlKCkKK3ZvaWQgRkVPZmZzZXQ6
OnBsYXRmb3JtQXBwbHlTb2Z0d2FyZShjb25zdCBGaWx0ZXImIGZpbHRlcikKIHsKICAgICBGaWx0
ZXJFZmZlY3QqIGluID0gaW5wdXRFZmZlY3QoMCk7CiAKQEAgLTc2LDggKzc1LDcgQEAgdm9pZCBG
RU9mZnNldDo6cGxhdGZvcm1BcHBseVNvZnR3YXJlKCkKICAgICBzZXRJc0FscGhhSW1hZ2UoaW4t
PmlzQWxwaGFJbWFnZSgpKTsKIAogICAgIEZsb2F0UmVjdCBkcmF3aW5nUmVnaW9uID0gZHJhd2lu
Z1JlZ2lvbk9mSW5wdXRJbWFnZShpbi0+YWJzb2x1dGVQYWludFJlY3QoKSk7Ci0gICAgRmlsdGVy
JiBmaWx0ZXIgPSB0aGlzLT5maWx0ZXIoKTsKLSAgICBkcmF3aW5nUmVnaW9uLm1vdmUoZmlsdGVy
LnNjYWxlZEJ5RmlsdGVyUmVzb2x1dGlvbih7IG1fZHgsIG1fZHkgfSkpOworICAgIGRyYXdpbmdS
ZWdpb24ubW92ZShmaWx0ZXIuc2NhbGVkQnlGaWx0ZXJTY2FsZSh7IG1fZHgsIG1fZHkgfSkpOwog
ICAgIHJlc3VsdEltYWdlLT5jb250ZXh0KCkuZHJhd0ltYWdlQnVmZmVyKCppbkJ1ZmZlciwgZHJh
d2luZ1JlZ2lvbik7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2ZpbHRlcnMvRkVPZmZzZXQuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2ZpbHRlcnMvRkVPZmZzZXQuaAppbmRleCA2NWFiZGE5MGE0N2IxYmZlNzZhZTVjNzRhYWI1
YWExNjdmYjFlNjllLi5kM2VjOTVhZGRmMTM0N2I1M2VlMDQ4N2M0MGFkYjE5MDFhZTQ0N2JjIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFT2Zm
c2V0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRU9m
ZnNldC5oCkBAIC0yMiwxMyArMjIsMTIgQEAKICNwcmFnbWEgb25jZQogCiAjaW5jbHVkZSAiRmls
dGVyRWZmZWN0LmgiCi0jaW5jbHVkZSAiRmlsdGVyLmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IAogY2xhc3MgRkVPZmZzZXQgOiBwdWJsaWMgRmlsdGVyRWZmZWN0IHsKIHB1YmxpYzoKLSAgICBz
dGF0aWMgUmVmPEZFT2Zmc2V0PiBjcmVhdGUoRmlsdGVyJiwgZmxvYXQgZHgsIGZsb2F0IGR5KTsK
KyAgICBzdGF0aWMgUmVmPEZFT2Zmc2V0PiBjcmVhdGUoZmxvYXQgZHgsIGZsb2F0IGR5KTsKIAog
ICAgIGZsb2F0IGR4KCkgY29uc3QgeyByZXR1cm4gbV9keDsgfQogICAgIHZvaWQgc2V0RHgoZmxv
YXQpOwpAQCAtMzcsMTMgKzM2LDExIEBAIHB1YmxpYzoKICAgICB2b2lkIHNldER5KGZsb2F0KTsK
IAogcHJpdmF0ZToKLSAgICBGRU9mZnNldChGaWx0ZXImLCBmbG9hdCBkeCwgZmxvYXQgZHkpOwor
ICAgIEZFT2Zmc2V0KGZsb2F0IGR4LCBmbG9hdCBkeSk7CiAKLSAgICBjb25zdCBjaGFyKiBmaWx0
ZXJOYW1lKCkgY29uc3QgZmluYWwgeyByZXR1cm4gIkZFT2Zmc2V0IjsgfQotCi0gICAgdm9pZCBw
bGF0Zm9ybUFwcGx5U29mdHdhcmUoKSBvdmVycmlkZTsKKyAgICB2b2lkIHBsYXRmb3JtQXBwbHlT
b2Z0d2FyZShjb25zdCBGaWx0ZXImKSBvdmVycmlkZTsKICAgICAKLSAgICB2b2lkIGRldGVybWlu
ZUFic29sdXRlUGFpbnRSZWN0KCkgb3ZlcnJpZGU7CisgICAgdm9pZCBkZXRlcm1pbmVBYnNvbHV0
ZVBhaW50UmVjdChjb25zdCBGaWx0ZXImKSBvdmVycmlkZTsKIAogICAgIFdURjo6VGV4dFN0cmVh
bSYgZXh0ZXJuYWxSZXByZXNlbnRhdGlvbihXVEY6OlRleHRTdHJlYW0mLCBSZXByZXNlbnRhdGlv
blR5cGUpIGNvbnN0IG92ZXJyaWRlOwogCkBAIC01MywzICs1MCw0IEBAIHByaXZhdGU6CiAKIH0g
Ly8gbmFtZXNwYWNlIFdlYkNvcmUKIAorU1BFQ0lBTElaRV9UWVBFX1RSQUlUU19GSUxURVJfRUZG
RUNUKEZFT2Zmc2V0KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvZmlsdGVycy9GRVNwZWN1bGFyTGlnaHRpbmcuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvZmlsdGVycy9GRVNwZWN1bGFyTGlnaHRpbmcuY3BwCmluZGV4IDU5OTcyMzA2
ODg2YTYzZmE0MTJiNWI3MTQxZjc0ZjljNDg3YTE0NGMuLjM4NzA3YjMwMWZkMTEwYmVjYmIwNGUy
NWNmYzk4MmEyMDVmZTY0NjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2ZpbHRlcnMvRkVTcGVjdWxhckxpZ2h0aW5nLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFU3BlY3VsYXJMaWdodGluZy5jcHAKQEAgLTI3
LDE4ICsyNywxNiBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLUZFU3BlY3VsYXJMaWdodGlu
Zzo6RkVTcGVjdWxhckxpZ2h0aW5nKEZpbHRlciYgZmlsdGVyLCBjb25zdCBDb2xvciYgbGlnaHRp
bmdDb2xvciwgZmxvYXQgc3VyZmFjZVNjYWxlLCBmbG9hdCBzcGVjdWxhckNvbnN0YW50LCBmbG9h
dCBzcGVjdWxhckV4cG9uZW50LCBmbG9hdCBrZXJuZWxVbml0TGVuZ3RoWCwgZmxvYXQga2VybmVs
VW5pdExlbmd0aFksIFJlZjxMaWdodFNvdXJjZT4mJiBsaWdodFNvdXJjZSkKLSAgICA6IEZFTGln
aHRpbmcoZmlsdGVyLCBTcGVjdWxhckxpZ2h0aW5nLCBsaWdodGluZ0NvbG9yLCBzdXJmYWNlU2Nh
bGUsIDAsIHNwZWN1bGFyQ29uc3RhbnQsIHNwZWN1bGFyRXhwb25lbnQsIGtlcm5lbFVuaXRMZW5n
dGhYLCBrZXJuZWxVbml0TGVuZ3RoWSwgV1RGTW92ZShsaWdodFNvdXJjZSksIFR5cGU6OlNwZWN1
bGFyTGlnaHRpbmcpCitGRVNwZWN1bGFyTGlnaHRpbmc6OkZFU3BlY3VsYXJMaWdodGluZyhjb25z
dCBDb2xvciYgbGlnaHRpbmdDb2xvciwgZmxvYXQgc3VyZmFjZVNjYWxlLCBmbG9hdCBzcGVjdWxh
ckNvbnN0YW50LCBmbG9hdCBzcGVjdWxhckV4cG9uZW50LCBmbG9hdCBrZXJuZWxVbml0TGVuZ3Ro
WCwgZmxvYXQga2VybmVsVW5pdExlbmd0aFksIFJlZjxMaWdodFNvdXJjZT4mJiBsaWdodFNvdXJj
ZSkKKyAgICA6IEZFTGlnaHRpbmcoU3BlY3VsYXJMaWdodGluZywgbGlnaHRpbmdDb2xvciwgc3Vy
ZmFjZVNjYWxlLCAwLCBzcGVjdWxhckNvbnN0YW50LCBzcGVjdWxhckV4cG9uZW50LCBrZXJuZWxV
bml0TGVuZ3RoWCwga2VybmVsVW5pdExlbmd0aFksIFdURk1vdmUobGlnaHRTb3VyY2UpLCBGaWx0
ZXJFZmZlY3Q6OlR5cGU6OkZFU3BlY3VsYXJMaWdodGluZykKIHsKIH0KIAotUmVmPEZFU3BlY3Vs
YXJMaWdodGluZz4gRkVTcGVjdWxhckxpZ2h0aW5nOjpjcmVhdGUoRmlsdGVyJiBmaWx0ZXIsIGNv
bnN0IENvbG9yJiBsaWdodGluZ0NvbG9yLCBmbG9hdCBzdXJmYWNlU2NhbGUsIGZsb2F0IHNwZWN1
bGFyQ29uc3RhbnQsIGZsb2F0IHNwZWN1bGFyRXhwb25lbnQsIGZsb2F0IGtlcm5lbFVuaXRMZW5n
dGhYLCBmbG9hdCBrZXJuZWxVbml0TGVuZ3RoWSwgUmVmPExpZ2h0U291cmNlPiYmIGxpZ2h0U291
cmNlKQorUmVmPEZFU3BlY3VsYXJMaWdodGluZz4gRkVTcGVjdWxhckxpZ2h0aW5nOjpjcmVhdGUo
Y29uc3QgQ29sb3ImIGxpZ2h0aW5nQ29sb3IsIGZsb2F0IHN1cmZhY2VTY2FsZSwgZmxvYXQgc3Bl
Y3VsYXJDb25zdGFudCwgZmxvYXQgc3BlY3VsYXJFeHBvbmVudCwgZmxvYXQga2VybmVsVW5pdExl
bmd0aFgsIGZsb2F0IGtlcm5lbFVuaXRMZW5ndGhZLCBSZWY8TGlnaHRTb3VyY2U+JiYgbGlnaHRT
b3VyY2UpCiB7Ci0gICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgRkVTcGVjdWxhckxpZ2h0aW5nKGZp
bHRlciwgbGlnaHRpbmdDb2xvciwgc3VyZmFjZVNjYWxlLCBzcGVjdWxhckNvbnN0YW50LCBzcGVj
dWxhckV4cG9uZW50LCBrZXJuZWxVbml0TGVuZ3RoWCwga2VybmVsVW5pdExlbmd0aFksIFdURk1v
dmUobGlnaHRTb3VyY2UpKSk7CisgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgRkVTcGVjdWxhckxp
Z2h0aW5nKGxpZ2h0aW5nQ29sb3IsIHN1cmZhY2VTY2FsZSwgc3BlY3VsYXJDb25zdGFudCwgc3Bl
Y3VsYXJFeHBvbmVudCwga2VybmVsVW5pdExlbmd0aFgsIGtlcm5lbFVuaXRMZW5ndGhZLCBXVEZN
b3ZlKGxpZ2h0U291cmNlKSkpOwogfQogCi1GRVNwZWN1bGFyTGlnaHRpbmc6On5GRVNwZWN1bGFy
TGlnaHRpbmcoKSA9IGRlZmF1bHQ7Ci0KIGJvb2wgRkVTcGVjdWxhckxpZ2h0aW5nOjpzZXRTcGVj
dWxhckNvbnN0YW50KGZsb2F0IHNwZWN1bGFyQ29uc3RhbnQpCiB7CiAgICAgaWYgKG1fc3BlY3Vs
YXJDb25zdGFudCA9PSBzcGVjdWxhckNvbnN0YW50KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRVNwZWN1bGFyTGlnaHRpbmcuaCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVTcGVjdWxhckxpZ2h0aW5nLmgK
aW5kZXggZTk5OGE3NjA1ZDFlNDczNWQ5ZjQ5Nzk4ZDM5ODE4YmYzYjI0OTU4YS4uYWM0NTBkYmRi
NjBjZDY5N2NkOGRmYzNjNzkzMThkYmY2NGFkNTMzNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRVNwZWN1bGFyTGlnaHRpbmcuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFU3BlY3VsYXJMaWdodGlu
Zy5oCkBAIC0yNyw4ICsyNyw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgRkVTcGVj
dWxhckxpZ2h0aW5nIDogcHVibGljIEZFTGlnaHRpbmcgewogcHVibGljOgotICAgIHN0YXRpYyBS
ZWY8RkVTcGVjdWxhckxpZ2h0aW5nPiBjcmVhdGUoRmlsdGVyJiwgY29uc3QgQ29sb3ImLCBmbG9h
dCwgZmxvYXQsIGZsb2F0LCBmbG9hdCwgZmxvYXQsIFJlZjxMaWdodFNvdXJjZT4mJik7Ci0gICAg
dmlydHVhbCB+RkVTcGVjdWxhckxpZ2h0aW5nKCk7CisgICAgc3RhdGljIFJlZjxGRVNwZWN1bGFy
TGlnaHRpbmc+IGNyZWF0ZShjb25zdCBDb2xvciYgbGlnaHRpbmdDb2xvciwgZmxvYXQgc3VyZmFj
ZVNjYWxlLCBmbG9hdCBzcGVjdWxhckNvbnN0YW50LCBmbG9hdCBzcGVjdWxhckV4cG9uZW50LCBm
bG9hdCBrZXJuZWxVbml0TGVuZ3RoWCwgZmxvYXQga2VybmVsVW5pdExlbmd0aFksIFJlZjxMaWdo
dFNvdXJjZT4mJik7CiAKICAgICBmbG9hdCBzcGVjdWxhckNvbnN0YW50KCkgY29uc3QgeyByZXR1
cm4gbV9zcGVjdWxhckNvbnN0YW50OyB9CiAgICAgYm9vbCBzZXRTcGVjdWxhckNvbnN0YW50KGZs
b2F0KTsKQEAgLTM5LDggKzM4LDkgQEAgcHVibGljOgogICAgIFdURjo6VGV4dFN0cmVhbSYgZXh0
ZXJuYWxSZXByZXNlbnRhdGlvbihXVEY6OlRleHRTdHJlYW0mLCBSZXByZXNlbnRhdGlvblR5cGUp
IGNvbnN0IG92ZXJyaWRlOwogCiBwcml2YXRlOgotICAgIEZFU3BlY3VsYXJMaWdodGluZyhGaWx0
ZXImLCBjb25zdCBDb2xvciYsIGZsb2F0LCBmbG9hdCwgZmxvYXQsIGZsb2F0LCBmbG9hdCwgUmVm
PExpZ2h0U291cmNlPiYmKTsKKyAgICBGRVNwZWN1bGFyTGlnaHRpbmcoY29uc3QgQ29sb3ImIGxp
Z2h0aW5nQ29sb3IsIGZsb2F0IHN1cmZhY2VTY2FsZSwgZmxvYXQgc3BlY3VsYXJDb25zdGFudCwg
ZmxvYXQgc3BlY3VsYXJFeHBvbmVudCwgZmxvYXQga2VybmVsVW5pdExlbmd0aFgsIGZsb2F0IGtl
cm5lbFVuaXRMZW5ndGhZLCBSZWY8TGlnaHRTb3VyY2U+JiYpOwogfTsKIAogfSAvLyBuYW1lc3Bh
Y2UgV2ViQ29yZQogCitTUEVDSUFMSVpFX1RZUEVfVFJBSVRTX0ZJTFRFUl9FRkZFQ1QoRkVTcGVj
dWxhckxpZ2h0aW5nKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvZmlsdGVycy9GRVRpbGUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
ZmlsdGVycy9GRVRpbGUuY3BwCmluZGV4IDM1YzUxY2JiMjI5ZGVlOTY0MmRjMWU3ZGNhMGM1ZGIy
ZmNhYzIwYWQuLmI3NWUyZjY1N2U3YjNlN2U0NmY4MDZkYWIwYTRhODUxNzcyODYxYTQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVUaWxlLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFVGlsZS5j
cHAKQEAgLTMxLDE3ICszMSwxNyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLUZFVGlsZTo6
RkVUaWxlKEZpbHRlciYgZmlsdGVyKQotICAgIDogRmlsdGVyRWZmZWN0KGZpbHRlciwgVHlwZTo6
VGlsZSkKK0ZFVGlsZTo6RkVUaWxlKCkKKyAgICA6IEZpbHRlckVmZmVjdChGaWx0ZXJFZmZlY3Q6
OlR5cGU6OkZFVGlsZSkKIHsKIH0KIAotUmVmPEZFVGlsZT4gRkVUaWxlOjpjcmVhdGUoRmlsdGVy
JiBmaWx0ZXIpCitSZWY8RkVUaWxlPiBGRVRpbGU6OmNyZWF0ZSgpCiB7Ci0gICAgcmV0dXJuIGFk
b3B0UmVmKCpuZXcgRkVUaWxlKGZpbHRlcikpOworICAgIHJldHVybiBhZG9wdFJlZigqbmV3IEZF
VGlsZSgpKTsKIH0KIAotdm9pZCBGRVRpbGU6OnBsYXRmb3JtQXBwbHlTb2Z0d2FyZSgpCit2b2lk
IEZFVGlsZTo6cGxhdGZvcm1BcHBseVNvZnR3YXJlKGNvbnN0IEZpbHRlciYgZmlsdGVyKQogewog
Ly8gRklYTUU6IFNlZSBidWcgNDczMTUuIFRoaXMgaXMgYSBoYWNrIHRvIHdvcmsgYXJvdW5kIGEg
Y29tcGlsZSBmYWlsdXJlLCBidXQgaXMgaW5jb3JyZWN0IGJlaGF2aW9yIG90aGVyd2lzZS4KICAg
ICBGaWx0ZXJFZmZlY3QqIGluID0gaW5wdXRFZmZlY3QoMCk7CkBAIC01OCwxMyArNTgsMTIgQEAg
dm9pZCBGRVRpbGU6OnBsYXRmb3JtQXBwbHlTb2Z0d2FyZSgpCiAgICAgRmxvYXRSZWN0IHRpbGVS
ZWN0ID0gaW4tPm1heEVmZmVjdFJlY3QoKTsKICAgICBGbG9hdFBvaW50IGluTWF4RWZmZWN0TG9j
YXRpb24gPSB0aWxlUmVjdC5sb2NhdGlvbigpOwogICAgIEZsb2F0UG9pbnQgbWF4RWZmZWN0TG9j
YXRpb24gPSBtYXhFZmZlY3RSZWN0KCkubG9jYXRpb24oKTsKLSAgICBpZiAoaW4tPmZpbHRlckVm
ZmVjdFR5cGUoKSA9PSBGaWx0ZXJFZmZlY3RUeXBlU291cmNlSW5wdXQpIHsKLSAgICAgICAgRmls
dGVyJiBmaWx0ZXIgPSB0aGlzLT5maWx0ZXIoKTsKKyAgICBpZiAoaW4tPmZpbHRlclR5cGUoKSA9
PSBGaWx0ZXJFZmZlY3Q6OlR5cGU6OlNvdXJjZUdyYXBoaWMgfHwgaW4tPmZpbHRlclR5cGUoKSA9
PSBGaWx0ZXJFZmZlY3Q6OlR5cGU6OlNvdXJjZUFscGhhKSB7CiAgICAgICAgIHRpbGVSZWN0ID0g
ZmlsdGVyLmZpbHRlclJlZ2lvbigpOwotICAgICAgICB0aWxlUmVjdC5zY2FsZShmaWx0ZXIuZmls
dGVyUmVzb2x1dGlvbigpLndpZHRoKCksIGZpbHRlci5maWx0ZXJSZXNvbHV0aW9uKCkuaGVpZ2h0
KCkpOworICAgICAgICB0aWxlUmVjdC5zY2FsZShmaWx0ZXIuZmlsdGVyU2NhbGUoKSk7CiAgICAg
fQogCi0gICAgYXV0byB0aWxlSW1hZ2UgPSBTVkdSZW5kZXJpbmdDb250ZXh0OjpjcmVhdGVJbWFn
ZUJ1ZmZlcih0aWxlUmVjdCwgdGlsZVJlY3QsIERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQigp
LCBmaWx0ZXIoKS5yZW5kZXJpbmdNb2RlKCkpOworICAgIGF1dG8gdGlsZUltYWdlID0gU1ZHUmVu
ZGVyaW5nQ29udGV4dDo6Y3JlYXRlSW1hZ2VCdWZmZXIodGlsZVJlY3QsIHRpbGVSZWN0LCBEZXN0
aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0IoKSwgZmlsdGVyLnJlbmRlcmluZ01vZGUoKSk7CiAgICAg
aWYgKCF0aWxlSW1hZ2UpCiAgICAgICAgIHJldHVybjsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRVRpbGUuaCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVUaWxlLmgKaW5kZXggNDliZDk5ZjA5NDQ3ZGFl
MWNmMDlhZjEyMzU4YzZkZTg0MDY4NzcxNC4uZWQ3Njk1MWZiNWI0MzFkNTM3MmM0ZDNlZWE1ODU3
NTA1M2ZjZDEyOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
ZmlsdGVycy9GRVRpbGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9m
aWx0ZXJzL0ZFVGlsZS5oCkBAIC0yMiwyNyArMjIsMjMgQEAKICNwcmFnbWEgb25jZQogCiAjaW5j
bHVkZSAiRmlsdGVyRWZmZWN0LmgiCi0jaW5jbHVkZSAiRmlsdGVyLmgiCiAKIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKICAgICAKIGNsYXNzIEZFVGlsZSA6IHB1YmxpYyBGaWx0ZXJFZmZlY3QgewogcHVi
bGljOgotICAgIHN0YXRpYyBSZWY8RkVUaWxlPiBjcmVhdGUoRmlsdGVyJik7CisgICAgc3RhdGlj
IFJlZjxGRVRpbGU+IGNyZWF0ZSgpOwogCiBwcml2YXRlOgotICAgIEZFVGlsZShGaWx0ZXImKTsK
KyAgICBGRVRpbGUoKTsKIAotICAgIGNvbnN0IGNoYXIqIGZpbHRlck5hbWUoKSBjb25zdCBmaW5h
bCB7IHJldHVybiAiRkVUaWxlIjsgfQorICAgIHZvaWQgcGxhdGZvcm1BcHBseVNvZnR3YXJlKGNv
bnN0IEZpbHRlciYpIG92ZXJyaWRlOwogCi0gICAgRmlsdGVyRWZmZWN0VHlwZSBmaWx0ZXJFZmZl
Y3RUeXBlKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gRmlsdGVyRWZmZWN0VHlwZVRpbGU7IH0K
LQotICAgIHZvaWQgcGxhdGZvcm1BcHBseVNvZnR3YXJlKCkgb3ZlcnJpZGU7Ci0KLSAgICB2b2lk
IGRldGVybWluZUFic29sdXRlUGFpbnRSZWN0KCkgb3ZlcnJpZGUgeyBzZXRBYnNvbHV0ZVBhaW50
UmVjdChlbmNsb3NpbmdJbnRSZWN0KG1heEVmZmVjdFJlY3QoKSkpOyB9CisgICAgdm9pZCBkZXRl
cm1pbmVBYnNvbHV0ZVBhaW50UmVjdChjb25zdCBGaWx0ZXImKSBvdmVycmlkZSB7IHNldEFic29s
dXRlUGFpbnRSZWN0KGVuY2xvc2luZ0ludFJlY3QobWF4RWZmZWN0UmVjdCgpKSk7IH0KIAogICAg
IFdURjo6VGV4dFN0cmVhbSYgZXh0ZXJuYWxSZXByZXNlbnRhdGlvbihXVEY6OlRleHRTdHJlYW0m
LCBSZXByZXNlbnRhdGlvblR5cGUpIGNvbnN0IG92ZXJyaWRlOwogfTsKIAogfSAvLyBuYW1lc3Bh
Y2UgV2ViQ29yZQogCitTUEVDSUFMSVpFX1RZUEVfVFJBSVRTX0ZJTFRFUl9FRkZFQ1QoRkVUaWxl
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9G
RVR1cmJ1bGVuY2UuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVy
cy9GRVR1cmJ1bGVuY2UuY3BwCmluZGV4IDc3NGU2ODJlM2I0ODU5YmI2ZTIwNmExZDJiZmFlYjBj
ZWE5MTlmMGIuLjNjZjRmZDFmY2QwN2YzODVlYTlmNTI4ODMzY2YwNjMyY2M3MDIyZDcgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVUdXJidWxl
bmNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZF
VHVyYnVsZW5jZS5jcHAKQEAgLTQ4LDggKzQ4LDggQEAgc3RhdGljIGNvbnN0IGludCBzX3JhbmRB
bXBsaXR1ZGUgPSAxNjgwNzsgLy8gNyoqNTsgcHJpbWl0aXZlIHJvb3Qgb2YgbQogc3RhdGljIGNv
bnN0IGludCBzX3JhbmRRID0gMTI3NzczOyAvLyBtIC8gYQogc3RhdGljIGNvbnN0IGludCBzX3Jh
bmRSID0gMjgzNjsgLy8gbSAlIGEKIAotRkVUdXJidWxlbmNlOjpGRVR1cmJ1bGVuY2UoRmlsdGVy
JiBmaWx0ZXIsIFR1cmJ1bGVuY2VUeXBlIHR5cGUsIGZsb2F0IGJhc2VGcmVxdWVuY3lYLCBmbG9h
dCBiYXNlRnJlcXVlbmN5WSwgaW50IG51bU9jdGF2ZXMsIGZsb2F0IHNlZWQsIGJvb2wgc3RpdGNo
VGlsZXMpCi0gICAgOiBGaWx0ZXJFZmZlY3QoZmlsdGVyLCBUeXBlOjpUdXJidWxlbmNlKQorRkVU
dXJidWxlbmNlOjpGRVR1cmJ1bGVuY2UoVHVyYnVsZW5jZVR5cGUgdHlwZSwgZmxvYXQgYmFzZUZy
ZXF1ZW5jeVgsIGZsb2F0IGJhc2VGcmVxdWVuY3lZLCBpbnQgbnVtT2N0YXZlcywgZmxvYXQgc2Vl
ZCwgYm9vbCBzdGl0Y2hUaWxlcykKKyAgICA6IEZpbHRlckVmZmVjdChGaWx0ZXJFZmZlY3Q6OlR5
cGU6OkZFVHVyYnVsZW5jZSkKICAgICAsIG1fdHlwZSh0eXBlKQogICAgICwgbV9iYXNlRnJlcXVl
bmN5WChiYXNlRnJlcXVlbmN5WCkKICAgICAsIG1fYmFzZUZyZXF1ZW5jeVkoYmFzZUZyZXF1ZW5j
eVkpCkBAIC01OSw5ICs1OSw5IEBAIEZFVHVyYnVsZW5jZTo6RkVUdXJidWxlbmNlKEZpbHRlciYg
ZmlsdGVyLCBUdXJidWxlbmNlVHlwZSB0eXBlLCBmbG9hdCBiYXNlRnJlcXVlCiB7CiB9CiAKLVJl
ZjxGRVR1cmJ1bGVuY2U+IEZFVHVyYnVsZW5jZTo6Y3JlYXRlKEZpbHRlciYgZmlsdGVyLCBUdXJi
dWxlbmNlVHlwZSB0eXBlLCBmbG9hdCBiYXNlRnJlcXVlbmN5WCwgZmxvYXQgYmFzZUZyZXF1ZW5j
eVksIGludCBudW1PY3RhdmVzLCBmbG9hdCBzZWVkLCBib29sIHN0aXRjaFRpbGVzKQorUmVmPEZF
VHVyYnVsZW5jZT4gRkVUdXJidWxlbmNlOjpjcmVhdGUoVHVyYnVsZW5jZVR5cGUgdHlwZSwgZmxv
YXQgYmFzZUZyZXF1ZW5jeVgsIGZsb2F0IGJhc2VGcmVxdWVuY3lZLCBpbnQgbnVtT2N0YXZlcywg
ZmxvYXQgc2VlZCwgYm9vbCBzdGl0Y2hUaWxlcykKIHsKLSAgICByZXR1cm4gYWRvcHRSZWYoKm5l
dyBGRVR1cmJ1bGVuY2UoZmlsdGVyLCB0eXBlLCBiYXNlRnJlcXVlbmN5WCwgYmFzZUZyZXF1ZW5j
eVksIG51bU9jdGF2ZXMsIHNlZWQsIHN0aXRjaFRpbGVzKSk7CisgICAgcmV0dXJuIGFkb3B0UmVm
KCpuZXcgRkVUdXJidWxlbmNlKHR5cGUsIGJhc2VGcmVxdWVuY3lYLCBiYXNlRnJlcXVlbmN5WSwg
bnVtT2N0YXZlcywgc2VlZCwgc3RpdGNoVGlsZXMpKTsKIH0KIAogYm9vbCBGRVR1cmJ1bGVuY2U6
OnNldFR5cGUoVHVyYnVsZW5jZVR5cGUgdHlwZSkKQEAgLTM2NiwyMiArMzY2LDIxIEBAIENvbG9y
Q29tcG9uZW50czx1aW50OF90LCA0PiBGRVR1cmJ1bGVuY2U6OmNhbGN1bGF0ZVR1cmJ1bGVuY2VW
YWx1ZUZvclBvaW50KGNvbnN0CiAgICAgcmV0dXJuIHRvSW50QmFzZWRDb2xvckNvbXBvbmVudHMo
dHVyYnVsZW5jZUZ1bmN0aW9uUmVzdWx0KTsKIH0KIAotdm9pZCBGRVR1cmJ1bGVuY2U6OmZpbGxS
ZWdpb24oVWludDhDbGFtcGVkQXJyYXkmIHBpeGVsQXJyYXksIGNvbnN0IFBhaW50aW5nRGF0YSYg
cGFpbnRpbmdEYXRhLCBTdGl0Y2hEYXRhIHN0aXRjaERhdGEsIGludCBzdGFydFksIGludCBlbmRZ
KSBjb25zdAordm9pZCBGRVR1cmJ1bGVuY2U6OmZpbGxSZWdpb24oY29uc3QgRmlsdGVyJiBmaWx0
ZXIsIFVpbnQ4Q2xhbXBlZEFycmF5JiBwaXhlbEFycmF5LCBjb25zdCBQYWludGluZ0RhdGEmIHBh
aW50aW5nRGF0YSwgU3RpdGNoRGF0YSBzdGl0Y2hEYXRhLCBpbnQgc3RhcnRZLCBpbnQgZW5kWSkg
Y29uc3QKIHsKICAgICBBU1NFUlQoZW5kWSA+IHN0YXJ0WSk7CiAKICAgICBJbnRSZWN0IGZpbHRl
clJlZ2lvbiA9IGFic29sdXRlUGFpbnRSZWN0KCk7Ci0gICAgZmlsdGVyUmVnaW9uLnNjYWxlKGZp
bHRlcigpLmZpbHRlclNjYWxlKCkpOwogICAgIEZsb2F0UG9pbnQgcG9pbnQoMCwgZmlsdGVyUmVn
aW9uLnkoKSArIHN0YXJ0WSk7CiAgICAgaW50IGluZGV4T2ZQaXhlbENoYW5uZWwgPSBzdGFydFkg
KiAoZmlsdGVyUmVnaW9uLndpZHRoKCkgPDwgMik7Ci0gICAgQWZmaW5lVHJhbnNmb3JtIGludmVy
c2VUcmFuc2Zyb20gPSBmaWx0ZXIoKS5hYnNvbHV0ZVRyYW5zZm9ybSgpLmludmVyc2UoKS52YWx1
ZV9vcihBZmZpbmVUcmFuc2Zvcm0oKSk7CisgICAgRmxvYXRTaXplIGludmVyc2VTY2FsZSA9IHsg
MSAvIGZpbHRlci5maWx0ZXJTY2FsZSgpLndpZHRoKCksIDEgLyBmaWx0ZXIuZmlsdGVyU2NhbGUo
KS5oZWlnaHQoKSB9OwogCiAgICAgZm9yIChpbnQgeSA9IHN0YXJ0WTsgeSA8IGVuZFk7ICsreSkg
ewogICAgICAgICBwb2ludC5zZXRZKHBvaW50LnkoKSArIDEpOwogICAgICAgICBwb2ludC5zZXRY
KGZpbHRlclJlZ2lvbi54KCkpOwogICAgICAgICBmb3IgKGludCB4ID0gMDsgeCA8IGZpbHRlclJl
Z2lvbi53aWR0aCgpOyArK3gpIHsKICAgICAgICAgICAgIHBvaW50LnNldFgocG9pbnQueCgpICsg
MSk7Ci0gICAgICAgICAgICBGbG9hdFBvaW50IGxvY2FsUG9pbnQgPSBpbnZlcnNlVHJhbnNmcm9t
Lm1hcFBvaW50KHBvaW50KTsKKyAgICAgICAgICAgIEZsb2F0UG9pbnQgbG9jYWxQb2ludCA9IHBv
aW50LnNjYWxlZChpbnZlcnNlU2NhbGUud2lkdGgoKSwgaW52ZXJzZVNjYWxlLmhlaWdodCgpKTsK
ICAgICAgICAgICAgIGF1dG8gdmFsdWVzID0gY2FsY3VsYXRlVHVyYnVsZW5jZVZhbHVlRm9yUG9p
bnQocGFpbnRpbmdEYXRhLCBzdGl0Y2hEYXRhLCBsb2NhbFBvaW50KTsKICAgICAgICAgICAgIHBp
eGVsQXJyYXkuc2V0UmFuZ2UodmFsdWVzLmNvbXBvbmVudHMuZGF0YSgpLCA0LCBpbmRleE9mUGl4
ZWxDaGFubmVsKTsKICAgICAgICAgICAgIGluZGV4T2ZQaXhlbENoYW5uZWwgKz0gNDsKQEAgLTM5
MSwxMCArMzkwLDEwIEBAIHZvaWQgRkVUdXJidWxlbmNlOjpmaWxsUmVnaW9uKFVpbnQ4Q2xhbXBl
ZEFycmF5JiBwaXhlbEFycmF5LCBjb25zdCBQYWludGluZ0RhdGEmCiAKIHZvaWQgRkVUdXJidWxl
bmNlOjpmaWxsUmVnaW9uV29ya2VyKEZpbGxSZWdpb25QYXJhbWV0ZXJzKiBwYXJhbWV0ZXJzKQog
ewotICAgIHBhcmFtZXRlcnMtPmZpbHRlci0+ZmlsbFJlZ2lvbigqcGFyYW1ldGVycy0+cGl4ZWxB
cnJheSwgKnBhcmFtZXRlcnMtPnBhaW50aW5nRGF0YSwgcGFyYW1ldGVycy0+c3RpdGNoRGF0YSwg
cGFyYW1ldGVycy0+c3RhcnRZLCBwYXJhbWV0ZXJzLT5lbmRZKTsKKyAgICBwYXJhbWV0ZXJzLT5l
ZmZlY3QtPmZpbGxSZWdpb24oKnBhcmFtZXRlcnMtPmZpbHRlciwgKnBhcmFtZXRlcnMtPnBpeGVs
QXJyYXksICpwYXJhbWV0ZXJzLT5wYWludGluZ0RhdGEsIHBhcmFtZXRlcnMtPnN0aXRjaERhdGEs
IHBhcmFtZXRlcnMtPnN0YXJ0WSwgcGFyYW1ldGVycy0+ZW5kWSk7CiB9CiAKLXZvaWQgRkVUdXJi
dWxlbmNlOjpwbGF0Zm9ybUFwcGx5U29mdHdhcmUoKQordm9pZCBGRVR1cmJ1bGVuY2U6OnBsYXRm
b3JtQXBwbHlTb2Z0d2FyZShjb25zdCBGaWx0ZXImIGZpbHRlcikKIHsKICAgICBhdXRvJiBkZXN0
aW5hdGlvblBpeGVsQnVmZmVyID0gY3JlYXRlVW5tdWx0aXBsaWVkSW1hZ2VSZXN1bHQoKTsKICAg
ICBpZiAoIWRlc3RpbmF0aW9uUGl4ZWxCdWZmZXIpCkBAIC00MDMsNyArNDAyLDYgQEAgdm9pZCBG
RVR1cmJ1bGVuY2U6OnBsYXRmb3JtQXBwbHlTb2Z0d2FyZSgpCiAgICAgYXV0byYgZGVzdGluYXRp
b25QaXhlbEFycmF5ID0gZGVzdGluYXRpb25QaXhlbEJ1ZmZlci0+ZGF0YSgpOwogCiAgICAgSW50
U2l6ZSByZXN1bHRTaXplKGFic29sdXRlUGFpbnRSZWN0KCkuc2l6ZSgpKTsKLSAgICByZXN1bHRT
aXplLnNjYWxlKGZpbHRlcigpLmZpbHRlclNjYWxlKCkpOwogCiAgICAgaWYgKHJlc3VsdFNpemUu
aXNFbXB0eSgpKSB7CiAgICAgICAgIGRlc3RpbmF0aW9uUGl4ZWxBcnJheS56ZXJvRmlsbCgpOwpA
QCAtNDQwLDcgKzQzOCw4IEBAIHZvaWQgRkVUdXJidWxlbmNlOjpwbGF0Zm9ybUFwcGx5U29mdHdh
cmUoKQogCiAgICAgICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbnVtSm9iczsgKytp
KSB7CiAgICAgICAgICAgICAgICAgRmlsbFJlZ2lvblBhcmFtZXRlcnMmIHBhcmFtcyA9IHBhcmFs
bGVsSm9icy5wYXJhbWV0ZXIoaSk7Ci0gICAgICAgICAgICAgICAgcGFyYW1zLmZpbHRlciA9IHRo
aXM7CisgICAgICAgICAgICAgICAgcGFyYW1zLmZpbHRlciA9ICZmaWx0ZXI7CisgICAgICAgICAg
ICAgICAgcGFyYW1zLmVmZmVjdCA9IHRoaXM7CiAgICAgICAgICAgICAgICAgcGFyYW1zLnBpeGVs
QXJyYXkgPSAmZGVzdGluYXRpb25QaXhlbEFycmF5OwogICAgICAgICAgICAgICAgIHBhcmFtcy5w
YWludGluZ0RhdGEgPSAmcGFpbnRpbmdEYXRhOwogICAgICAgICAgICAgICAgIHBhcmFtcy5zdGl0
Y2hEYXRhID0gc3RpdGNoRGF0YTsKQEAgLTQ1Nyw3ICs0NTYsNyBAQCB2b2lkIEZFVHVyYnVsZW5j
ZTo6cGxhdGZvcm1BcHBseVNvZnR3YXJlKCkKICAgICB9CiAKICAgICAvLyBGYWxsYmFjayB0byBz
aW5nbGUgdGhyZWFkZWQgbW9kZSBpZiB0aGVyZSBpcyBubyByb29tIGZvciBhIG5ldyB0aHJlYWQg
b3IgdGhlIHBhaW50IGFyZWEgaXMgdG9vIHNtYWxsLgotICAgIGZpbGxSZWdpb24oZGVzdGluYXRp
b25QaXhlbEFycmF5LCBwYWludGluZ0RhdGEsIHN0aXRjaERhdGEsIDAsIGhlaWdodCk7CisgICAg
ZmlsbFJlZ2lvbihmaWx0ZXIsIGRlc3RpbmF0aW9uUGl4ZWxBcnJheSwgcGFpbnRpbmdEYXRhLCBz
dGl0Y2hEYXRhLCAwLCBoZWlnaHQpOwogfQogCiBzdGF0aWMgVGV4dFN0cmVhbSYgb3BlcmF0b3I8
PChUZXh0U3RyZWFtJiB0cywgVHVyYnVsZW5jZVR5cGUgdHlwZSkKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVUdXJidWxlbmNlLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFVHVyYnVsZW5jZS5oCmluZGV4
IDRkNTM2YjM3YTgwYWFkZjkxMWViZmNlODk3NzRjZDNjY2VjYjVjZmIuLjVlNTUwZDlkNmI0MDRi
NjA1ZmE5MTU0MTkxYzMwMDQyZGQxYmQ5YTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVUdXJidWxlbmNlLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRVR1cmJ1bGVuY2UuaApAQCAtMjYsNyArMjYs
NiBAQAogCiAjaW5jbHVkZSAiQ29sb3JDb21wb25lbnRzLmgiCiAjaW5jbHVkZSAiRmlsdGVyRWZm
ZWN0LmgiCi0jaW5jbHVkZSAiRmlsdGVyLmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApAQCAt
MzgsNyArMzcsNyBAQCBlbnVtIGNsYXNzIFR1cmJ1bGVuY2VUeXBlIHsKIAogY2xhc3MgRkVUdXJi
dWxlbmNlIDogcHVibGljIEZpbHRlckVmZmVjdCB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFJlZjxG
RVR1cmJ1bGVuY2U+IGNyZWF0ZShGaWx0ZXImLCBUdXJidWxlbmNlVHlwZSwgZmxvYXQsIGZsb2F0
LCBpbnQsIGZsb2F0LCBib29sKTsKKyAgICBzdGF0aWMgUmVmPEZFVHVyYnVsZW5jZT4gY3JlYXRl
KFR1cmJ1bGVuY2VUeXBlLCBmbG9hdCBiYXNlRnJlcXVlbmN5WCwgZmxvYXQgYmFzZUZyZXF1ZW5j
eVksIGludCBudW1PY3RhdmVzLCBmbG9hdCBzZWVkLCBib29sIHN0aXRjaFRpbGVzKTsKIAogICAg
IFR1cmJ1bGVuY2VUeXBlIHR5cGUoKSBjb25zdCB7IHJldHVybiBtX3R5cGU7IH0KICAgICBib29s
IHNldFR5cGUoVHVyYnVsZW5jZVR5cGUpOwpAQCAtOTYsNyArOTUsOCBAQCBwcml2YXRlOgogICAg
IGZyaWVuZCBjbGFzcyBQYXJhbGxlbEpvYnM7CiAKICAgICBzdHJ1Y3QgRmlsbFJlZ2lvblBhcmFt
ZXRlcnMgewotICAgICAgICBGRVR1cmJ1bGVuY2UqIGZpbHRlcjsKKyAgICAgICAgY29uc3QgRmls
dGVyKiBmaWx0ZXI7CisgICAgICAgIEZFVHVyYnVsZW5jZSogZWZmZWN0OwogICAgICAgICBVaW50
OENsYW1wZWRBcnJheSogcGl4ZWxBcnJheTsKICAgICAgICAgUGFpbnRpbmdEYXRhKiBwYWludGlu
Z0RhdGE7CiAgICAgICAgIFN0aXRjaERhdGEgc3RpdGNoRGF0YTsKQEAgLTEwNiwxOSArMTA2LDE3
IEBAIHByaXZhdGU6CiAKICAgICBzdGF0aWMgdm9pZCBmaWxsUmVnaW9uV29ya2VyKEZpbGxSZWdp
b25QYXJhbWV0ZXJzKik7CiAKLSAgICBGRVR1cmJ1bGVuY2UoRmlsdGVyJiwgVHVyYnVsZW5jZVR5
cGUsIGZsb2F0LCBmbG9hdCwgaW50LCBmbG9hdCwgYm9vbCk7CisgICAgRkVUdXJidWxlbmNlKFR1
cmJ1bGVuY2VUeXBlLCBmbG9hdCBiYXNlRnJlcXVlbmN5WCwgZmxvYXQgYmFzZUZyZXF1ZW5jeVks
IGludCBudW1PY3RhdmVzLCBmbG9hdCBzZWVkLCBib29sIHN0aXRjaFRpbGVzKTsKIAotICAgIGNv
bnN0IGNoYXIqIGZpbHRlck5hbWUoKSBjb25zdCBmaW5hbCB7IHJldHVybiAiRkVUdXJidWxlbmNl
IjsgfQotCi0gICAgdm9pZCBwbGF0Zm9ybUFwcGx5U29mdHdhcmUoKSBvdmVycmlkZTsKLSAgICB2
b2lkIGRldGVybWluZUFic29sdXRlUGFpbnRSZWN0KCkgb3ZlcnJpZGUgeyBzZXRBYnNvbHV0ZVBh
aW50UmVjdChlbmNsb3NpbmdJbnRSZWN0KG1heEVmZmVjdFJlY3QoKSkpOyB9CisgICAgdm9pZCBw
bGF0Zm9ybUFwcGx5U29mdHdhcmUoY29uc3QgRmlsdGVyJikgb3ZlcnJpZGU7CisgICAgdm9pZCBk
ZXRlcm1pbmVBYnNvbHV0ZVBhaW50UmVjdChjb25zdCBGaWx0ZXImKSBvdmVycmlkZSB7IHNldEFi
c29sdXRlUGFpbnRSZWN0KGVuY2xvc2luZ0ludFJlY3QobWF4RWZmZWN0UmVjdCgpKSk7IH0KICAg
ICBXVEY6OlRleHRTdHJlYW0mIGV4dGVybmFsUmVwcmVzZW50YXRpb24oV1RGOjpUZXh0U3RyZWFt
JiwgUmVwcmVzZW50YXRpb25UeXBlKSBjb25zdCBvdmVycmlkZTsKIAogICAgIHZvaWQgaW5pdFBh
aW50KFBhaW50aW5nRGF0YSYpOwogICAgIFN0aXRjaERhdGEgY29tcHV0ZVN0aXRjaGluZyhJbnRT
aXplIHRpbGVTaXplLCBmbG9hdCYgYmFzZUZyZXF1ZW5jeVgsIGZsb2F0JiBiYXNlRnJlcXVlbmN5
WSkgY29uc3Q7CiAgICAgQ29sb3JDb21wb25lbnRzPGZsb2F0LCA0PiBub2lzZTJEKGNvbnN0IFBh
aW50aW5nRGF0YSYsIGNvbnN0IFN0aXRjaERhdGEmLCBjb25zdCBGbG9hdFBvaW50JikgY29uc3Q7
CiAgICAgQ29sb3JDb21wb25lbnRzPHVpbnQ4X3QsIDQ+IGNhbGN1bGF0ZVR1cmJ1bGVuY2VWYWx1
ZUZvclBvaW50KGNvbnN0IFBhaW50aW5nRGF0YSYsIFN0aXRjaERhdGEsIGNvbnN0IEZsb2F0UG9p
bnQmKSBjb25zdDsKLSAgICB2b2lkIGZpbGxSZWdpb24oVWludDhDbGFtcGVkQXJyYXkmLCBjb25z
dCBQYWludGluZ0RhdGEmLCBTdGl0Y2hEYXRhLCBpbnQgc3RhcnRZLCBpbnQgZW5kWSkgY29uc3Q7
CisgICAgdm9pZCBmaWxsUmVnaW9uKGNvbnN0IEZpbHRlciYsIFVpbnQ4Q2xhbXBlZEFycmF5Jiwg
Y29uc3QgUGFpbnRpbmdEYXRhJiwgU3RpdGNoRGF0YSwgaW50IHN0YXJ0WSwgaW50IGVuZFkpIGNv
bnN0OwogCiAgICAgc3RhdGljIHZvaWQgZmlsbFJlZ2lvbldvcmtlcih2b2lkKik7CiAKQEAgLTEz
MiwzICsxMzAsNCBAQCBwcml2YXRlOgogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKK1NQRUNJ
QUxJWkVfVFlQRV9UUkFJVFNfRklMVEVSX0VGRkVDVChGRVR1cmJ1bGVuY2UpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZpbHRlci5oIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GaWx0ZXIuaAppbmRleCBhMmQ5
OTc5M2IwZGIyMjU4YmM0NzZkZGNjMjljMGNlMjYxMTBiYzFmLi5mMzVkOWJhNDJmZmIwY2EyZTBj
NWI4Y2VjZjNkNjFkMmM3YTAxNzZhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9maWx0ZXJzL0ZpbHRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2ZpbHRlcnMvRmlsdGVyLmgKQEAgLTEsNiArMSw3IEBACiAvKgogICogQ29weXJp
Z2h0IChDKSAyMDA5IERpcmsgU2NodWx6ZSA8a3JpdEB3ZWJraXQub3JnPgogICogQ29weXJpZ2h0
IChDKSAyMDEzIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQg
KEMpIDIwMjEgQXBwbGUgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBUaGlzIGxp
YnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCiAg
KiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1
YmxpYwpAQCAtMjEsNTggKzIyLDU3IEBACiAjcHJhZ21hIG9uY2UKIAogI2luY2x1ZGUgIkFmZmlu
ZVRyYW5zZm9ybS5oIgorI2luY2x1ZGUgIkZpbHRlckZ1bmN0aW9uLmgiCiAjaW5jbHVkZSAiRmxv
YXRSZWN0LmgiCiAjaW5jbHVkZSAiR3JhcGhpY3NUeXBlcy5oIgogI2luY2x1ZGUgIkltYWdlQnVm
ZmVyLmgiCi0jaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUg
ewogCiBjbGFzcyBGaWx0ZXJFZmZlY3Q7CiAKLWNsYXNzIEZpbHRlciA6IHB1YmxpYyBSZWZDb3Vu
dGVkPEZpbHRlcj4geworY2xhc3MgRmlsdGVyIDogcHVibGljIEZpbHRlckZ1bmN0aW9uIHsKIHB1
YmxpYzoKLSAgICBGaWx0ZXIoY29uc3QgQWZmaW5lVHJhbnNmb3JtJiBhYnNvbHV0ZVRyYW5zZm9y
bSwgZmxvYXQgZmlsdGVyU2NhbGUgPSAxKQotICAgICAgICA6IG1fYWJzb2x1dGVUcmFuc2Zvcm0o
YWJzb2x1dGVUcmFuc2Zvcm0pCi0gICAgICAgICwgbV9maWx0ZXJTY2FsZShmaWx0ZXJTY2FsZSkK
LSAgICB7IH0KLSAgICB2aXJ0dWFsIH5GaWx0ZXIoKSA9IGRlZmF1bHQ7Ci0KLSAgICB2b2lkIHNl
dFNvdXJjZUltYWdlKFJlZlB0cjxJbWFnZUJ1ZmZlcj4mJiBzb3VyY2VJbWFnZSkgeyBtX3NvdXJj
ZUltYWdlID0gV1RGTW92ZShzb3VyY2VJbWFnZSk7IH0KLSAgICBJbWFnZUJ1ZmZlciogc291cmNl
SW1hZ2UoKSB7IHJldHVybiBtX3NvdXJjZUltYWdlLmdldCgpOyB9CisgICAgRmxvYXRTaXplIGZp
bHRlclNjYWxlKCkgY29uc3QgeyByZXR1cm4gbV9maWx0ZXJTY2FsZTsgfQorICAgIHZvaWQgc2V0
RmlsdGVyU2NhbGUoY29uc3QgRmxvYXRTaXplJiBmaWx0ZXJTY2FsZSkgeyBtX2ZpbHRlclNjYWxl
ID0gZmlsdGVyU2NhbGU7IH0KIAotICAgIEZsb2F0U2l6ZSBmaWx0ZXJSZXNvbHV0aW9uKCkgY29u
c3QgeyByZXR1cm4gbV9maWx0ZXJSZXNvbHV0aW9uOyB9Ci0gICAgdm9pZCBzZXRGaWx0ZXJSZXNv
bHV0aW9uKGNvbnN0IEZsb2F0U2l6ZSYgZmlsdGVyUmVzb2x1dGlvbikgeyBtX2ZpbHRlclJlc29s
dXRpb24gPSBmaWx0ZXJSZXNvbHV0aW9uOyB9CisgICAgRmxvYXRSZWN0IHNvdXJjZUltYWdlUmVj
dCgpIGNvbnN0IHsgcmV0dXJuIG1fc291cmNlSW1hZ2VSZWN0OyB9CisgICAgdm9pZCBzZXRGaWx0
ZXJSZWdpb24oY29uc3QgRmxvYXRSZWN0JiBmaWx0ZXJSZWdpb24pIHsgbV9maWx0ZXJSZWdpb24g
PSBmaWx0ZXJSZWdpb247IH0KKyAgICAKKyAgICBGbG9hdFJlY3QgZmlsdGVyUmVnaW9uKCkgY29u
c3QgeyByZXR1cm4gbV9maWx0ZXJSZWdpb247IH0KKyAgICB2b2lkIHNldFNvdXJjZUltYWdlUmVj
dChjb25zdCBGbG9hdFJlY3QmIHNvdXJjZUltYWdlUmVjdCkgeyBtX3NvdXJjZUltYWdlUmVjdCA9
IHNvdXJjZUltYWdlUmVjdDsgfQogCi0gICAgZmxvYXQgZmlsdGVyU2NhbGUoKSBjb25zdCB7IHJl
dHVybiBtX2ZpbHRlclNjYWxlOyB9Ci0gICAgdm9pZCBzZXRGaWx0ZXJTY2FsZShmbG9hdCBzY2Fs
ZSkgeyBtX2ZpbHRlclNjYWxlID0gc2NhbGU7IH0KKyAgICB2aXJ0dWFsIEZsb2F0U2l6ZSBzY2Fs
ZWRCeUZpbHRlclNjYWxlKEZsb2F0U2l6ZSBzaXplKSBjb25zdCB7IHJldHVybiBzaXplICogbV9m
aWx0ZXJTY2FsZTsgfQorICAgIHZpcnR1YWwgdm9pZCBhcHBseUZpbHRlcigpIHsgfQogCi0gICAg
Y29uc3QgQWZmaW5lVHJhbnNmb3JtJiBhYnNvbHV0ZVRyYW5zZm9ybSgpIGNvbnN0IHsgcmV0dXJu
IG1fYWJzb2x1dGVUcmFuc2Zvcm07IH0KKyAgICB2b2lkIHNldFNvdXJjZUltYWdlKFJlZlB0cjxJ
bWFnZUJ1ZmZlcj4mJiBzb3VyY2VJbWFnZSkgeyBtX3NvdXJjZUltYWdlID0gV1RGTW92ZShzb3Vy
Y2VJbWFnZSk7IH0KKyAgICBJbWFnZUJ1ZmZlciogc291cmNlSW1hZ2UoKSBjb25zdCB7IHJldHVy
biBtX3NvdXJjZUltYWdlLmdldCgpOyB9CiAKICAgICBSZW5kZXJpbmdNb2RlIHJlbmRlcmluZ01v
ZGUoKSBjb25zdCB7IHJldHVybiBtX3JlbmRlcmluZ01vZGU7IH0KICAgICB2b2lkIHNldFJlbmRl
cmluZ01vZGUoUmVuZGVyaW5nTW9kZSByZW5kZXJpbmdNb2RlKSB7IG1fcmVuZGVyaW5nTW9kZSA9
IHJlbmRlcmluZ01vZGU7IH0KIAotICAgIHZpcnR1YWwgYm9vbCBpc1NWR0ZpbHRlcigpIGNvbnN0
IHsgcmV0dXJuIGZhbHNlOyB9Ci0gICAgdmlydHVhbCBib29sIGlzQ1NTRmlsdGVyKCkgY29uc3Qg
eyByZXR1cm4gZmFsc2U7IH0KLQotICAgIHZpcnR1YWwgRmxvYXRTaXplIHNjYWxlZEJ5RmlsdGVy
UmVzb2x1dGlvbihGbG9hdFNpemUgc2l6ZSkgY29uc3QgeyByZXR1cm4gc2l6ZSAqIG1fZmlsdGVy
UmVzb2x1dGlvbjsgfQotICAgIAotICAgIHZpcnR1YWwgRmxvYXRSZWN0IHNvdXJjZUltYWdlUmVj
dCgpIGNvbnN0ID0gMDsKLSAgICB2aXJ0dWFsIEZsb2F0UmVjdCBmaWx0ZXJSZWdpb24oKSBjb25z
dCA9IDA7Ci0gICAgdmlydHVhbCBGbG9hdFJlY3QgZmlsdGVyUmVnaW9uSW5Vc2VyU3BhY2UoKSBj
b25zdCA9IDA7Ci0KIHByb3RlY3RlZDoKLSAgICBleHBsaWNpdCBGaWx0ZXIoY29uc3QgRmxvYXRT
aXplJiBmaWx0ZXJSZXNvbHV0aW9uKQotICAgICAgICA6IG1fZmlsdGVyUmVzb2x1dGlvbihmaWx0
ZXJSZXNvbHV0aW9uKQorICAgIEZpbHRlcihGaWx0ZXI6OlR5cGUgZmlsdGVyVHlwZSwgY29uc3Qg
RmxvYXRTaXplJiBmaWx0ZXJTY2FsZSkKKyAgICAgICAgOiBGaWx0ZXJGdW5jdGlvbihmaWx0ZXJU
eXBlKQorICAgICAgICAsIG1fZmlsdGVyU2NhbGUoZmlsdGVyU2NhbGUpCisgICAgeworICAgIH0K
KworICAgIEZpbHRlcihGaWx0ZXI6OlR5cGUgZmlsdGVyVHlwZSwgY29uc3QgRmxvYXRTaXplJiBm
aWx0ZXJTY2FsZSwgY29uc3QgRmxvYXRSZWN0JiBzb3VyY2VJbWFnZVJlY3QsIGNvbnN0IEZsb2F0
UmVjdCYgZmlsdGVyUmVnaW9uKQorICAgICAgICA6IEZpbHRlckZ1bmN0aW9uKGZpbHRlclR5cGUp
CisgICAgICAgICwgbV9maWx0ZXJTY2FsZShmaWx0ZXJTY2FsZSkKKyAgICAgICAgLCBtX3NvdXJj
ZUltYWdlUmVjdChzb3VyY2VJbWFnZVJlY3QpCisgICAgICAgICwgbV9maWx0ZXJSZWdpb24oZmls
dGVyUmVnaW9uKQogICAgIHsKICAgICB9CiAKIHByaXZhdGU6CisgICAgRmxvYXRTaXplIG1fZmls
dGVyU2NhbGU7CisgICAgRmxvYXRSZWN0IG1fc291cmNlSW1hZ2VSZWN0OworICAgIEZsb2F0UmVj
dCBtX2ZpbHRlclJlZ2lvbjsKKwogICAgIFJlZlB0cjxJbWFnZUJ1ZmZlcj4gbV9zb3VyY2VJbWFn
ZTsKLSAgICBGbG9hdFNpemUgbV9maWx0ZXJSZXNvbHV0aW9uOwotICAgIEFmZmluZVRyYW5zZm9y
bSBtX2Fic29sdXRlVHJhbnNmb3JtOwogICAgIFJlbmRlcmluZ01vZGUgbV9yZW5kZXJpbmdNb2Rl
IHsgUmVuZGVyaW5nTW9kZTo6VW5hY2NlbGVyYXRlZCB9OwotICAgIGZsb2F0IG1fZmlsdGVyU2Nh
bGUgeyAxIH07CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZpbHRlckVmZmVjdC5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZpbHRlckVmZmVjdC5jcHAK
aW5kZXggZmI2Nzc1NGU0ZmM1YmJjYTUxYzM0OGVjN2Y2M2U0Y2M5MjdkYjEwOC4uZmM5NmQxMzUx
OTU0MjgwMTg4NzM3MDY2ZWI0ZTJmY2QzNGZiNWRjYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GaWx0ZXJFZmZlY3QuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRmlsdGVyRWZmZWN0LmNwcApAQCAt
NDUsMTUgKzQ1LDEyIEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotRmlsdGVyRWZmZWN0OjpG
aWx0ZXJFZmZlY3QoRmlsdGVyJiBmaWx0ZXIsIFR5cGUgdHlwZSkKLSAgICA6IG1fZmlsdGVyKGZp
bHRlcikKLSAgICAsIG1fZmlsdGVyRWZmZWN0Q2xhc3NUeXBlKHR5cGUpCitGaWx0ZXJFZmZlY3Q6
OkZpbHRlckVmZmVjdChGaWx0ZXJFZmZlY3Q6OlR5cGUgdHlwZSkKKyAgICA6IEZpbHRlckZ1bmN0
aW9uKHR5cGUpCiB7CiB9CiAKLUZpbHRlckVmZmVjdDo6fkZpbHRlckVmZmVjdCgpID0gZGVmYXVs
dDsKLQotdm9pZCBGaWx0ZXJFZmZlY3Q6OmRldGVybWluZUFic29sdXRlUGFpbnRSZWN0KCkKK3Zv
aWQgRmlsdGVyRWZmZWN0OjpkZXRlcm1pbmVBYnNvbHV0ZVBhaW50UmVjdChjb25zdCBGaWx0ZXIm
KQogewogICAgIG1fYWJzb2x1dGVQYWludFJlY3QgPSBJbnRSZWN0KCk7CiAgICAgZm9yIChhdXRv
JiBlZmZlY3QgOiBtX2lucHV0RWZmZWN0cykKQEAgLTk2LDIyICs5MywyMiBAQCBGbG9hdFJlY3Qg
RmlsdGVyRWZmZWN0OjpkcmF3aW5nUmVnaW9uT2ZJbnB1dEltYWdlKGNvbnN0IEludFJlY3QmIHNy
Y1JlY3QpIGNvbnN0CiAgICAgcmV0dXJuIHRyYW5zZm9ybS5tYXBSZWN0KHNyY1JlY3QpOwogfQog
Ci1GbG9hdFJlY3QgRmlsdGVyRWZmZWN0OjpkZXRlcm1pbmVGaWx0ZXJQcmltaXRpdmVTdWJyZWdp
b24oKQorRmxvYXRSZWN0IEZpbHRlckVmZmVjdDo6ZGV0ZXJtaW5lRmlsdGVyUHJpbWl0aXZlU3Vi
cmVnaW9uKGNvbnN0IEZpbHRlciYgZmlsdGVyKQogewogICAgIC8vIEZFVGlsZSwgRkVUdXJidWxl
bmNlLCBGRUZsb29kIGRvbid0IGhhdmUgaW5wdXQgZWZmZWN0cywgdGFrZSB0aGUgZmlsdGVyIHJl
Z2lvbiBhcyB1bml0ZSByZWN0LgogICAgIEZsb2F0UmVjdCBzdWJyZWdpb247CiAgICAgaWYgKHVu
c2lnbmVkIG51bWJlck9mSW5wdXRFZmZlY3RzID0gaW5wdXRFZmZlY3RzKCkuc2l6ZSgpKSB7Ci0g
ICAgICAgIHN1YnJlZ2lvbiA9IGlucHV0RWZmZWN0KDApLT5kZXRlcm1pbmVGaWx0ZXJQcmltaXRp
dmVTdWJyZWdpb24oKTsKKyAgICAgICAgc3VicmVnaW9uID0gaW5wdXRFZmZlY3QoMCktPmRldGVy
bWluZUZpbHRlclByaW1pdGl2ZVN1YnJlZ2lvbihmaWx0ZXIpOwogICAgICAgICBmb3IgKHVuc2ln
bmVkIGkgPSAxOyBpIDwgbnVtYmVyT2ZJbnB1dEVmZmVjdHM7ICsraSkgewotICAgICAgICAgICAg
YXV0byBpbnB1dFByaW1pdGl2ZVN1YnJlZ2lvbiA9IGlucHV0RWZmZWN0KGkpLT5kZXRlcm1pbmVG
aWx0ZXJQcmltaXRpdmVTdWJyZWdpb24oKTsKKyAgICAgICAgICAgIGF1dG8gaW5wdXRQcmltaXRp
dmVTdWJyZWdpb24gPSBpbnB1dEVmZmVjdChpKS0+ZGV0ZXJtaW5lRmlsdGVyUHJpbWl0aXZlU3Vi
cmVnaW9uKGZpbHRlcik7CiAgICAgICAgICAgICBzdWJyZWdpb24udW5pdGUoaW5wdXRQcmltaXRp
dmVTdWJyZWdpb24pOwogICAgICAgICB9CiAgICAgfSBlbHNlCi0gICAgICAgIHN1YnJlZ2lvbiA9
IG1fZmlsdGVyLmZpbHRlclJlZ2lvbkluVXNlclNwYWNlKCk7CisgICAgICAgIHN1YnJlZ2lvbiA9
IGZpbHRlci5maWx0ZXJSZWdpb24oKTsKIAogICAgIC8vIEFmdGVyIGNhbGxpbmcgZGV0ZXJtaW5l
RmlsdGVyUHJpbWl0aXZlU3VicmVnaW9uIG9uIHRoZSB0YXJnZXQgZWZmZWN0LCByZXNldCB0aGUg
c3VicmVnaW9uIGFnYWluIGZvciA8ZmVUaWxlPi4KLSAgICBpZiAoZmlsdGVyRWZmZWN0VHlwZSgp
ID09IEZpbHRlckVmZmVjdFR5cGVUaWxlKQotICAgICAgICBzdWJyZWdpb24gPSBtX2ZpbHRlci5m
aWx0ZXJSZWdpb25JblVzZXJTcGFjZSgpOworICAgIGlmIChmaWx0ZXJUeXBlKCkgPT0gRmlsdGVy
RWZmZWN0OjpUeXBlOjpGRVRpbGUpCisgICAgICAgIHN1YnJlZ2lvbiA9IGZpbHRlci5maWx0ZXJS
ZWdpb24oKTsKIAogICAgIGF1dG8gYm91bmRhcmllcyA9IGVmZmVjdEJvdW5kYXJpZXMoKTsKICAg
ICBpZiAoaGFzWCgpKQpAQCAtMTI1LDE1ICsxMjIsMTQgQEAgRmxvYXRSZWN0IEZpbHRlckVmZmVj
dDo6ZGV0ZXJtaW5lRmlsdGVyUHJpbWl0aXZlU3VicmVnaW9uKCkKIAogICAgIHNldEZpbHRlclBy
aW1pdGl2ZVN1YnJlZ2lvbihzdWJyZWdpb24pOwogCi0gICAgYXV0byBhYnNvbHV0ZVN1YnJlZ2lv
biA9IG1fZmlsdGVyLmFic29sdXRlVHJhbnNmb3JtKCkubWFwUmVjdChzdWJyZWdpb24pOwotICAg
IGF1dG8gZmlsdGVyUmVzb2x1dGlvbiA9IG1fZmlsdGVyLmZpbHRlclJlc29sdXRpb24oKTsKLSAg
ICBhYnNvbHV0ZVN1YnJlZ2lvbi5zY2FsZShmaWx0ZXJSZXNvbHV0aW9uKTsKKyAgICBhdXRvIGFi
c29sdXRlU3VicmVnaW9uID0gc3VicmVnaW9uOworICAgIGFic29sdXRlU3VicmVnaW9uLnNjYWxl
KGZpbHRlci5maWx0ZXJTY2FsZSgpKTsKICAgICAvLyBTYXZlIHRoaXMgYmVmb3JlIGNsaXBwaW5n
IHNvIHdlIGNhbiB1c2UgaXQgdG8gbWFwIGxpZ2h0aW5nIHBvaW50cyBmcm9tIHVzZXIgc3BhY2Ug
dG8gYnVmZmVyIGNvb3JkaW5hdGVzLgogICAgIHNldFVuY2xpcHBlZEFic29sdXRlU3VicmVnaW9u
KGFic29sdXRlU3VicmVnaW9uKTsKIAogICAgIC8vIENsaXAgZXZlcnkgZmlsdGVyIGVmZmVjdCB0
byB0aGUgZmlsdGVyIHJlZ2lvbi4KLSAgICBhdXRvIGFic29sdXRlU2NhbGVkRmlsdGVyUmVnaW9u
ID0gbV9maWx0ZXIuZmlsdGVyUmVnaW9uKCk7Ci0gICAgYWJzb2x1dGVTY2FsZWRGaWx0ZXJSZWdp
b24uc2NhbGUoZmlsdGVyUmVzb2x1dGlvbik7CisgICAgYXV0byBhYnNvbHV0ZVNjYWxlZEZpbHRl
clJlZ2lvbiA9IGZpbHRlci5maWx0ZXJSZWdpb24oKTsKKyAgICBhYnNvbHV0ZVNjYWxlZEZpbHRl
clJlZ2lvbi5zY2FsZShmaWx0ZXIuZmlsdGVyU2NhbGUoKSk7CiAgICAgYWJzb2x1dGVTdWJyZWdp
b24uaW50ZXJzZWN0KGFic29sdXRlU2NhbGVkRmlsdGVyUmVnaW9uKTsKIAogICAgIHNldE1heEVm
ZmVjdFJlY3QoYWJzb2x1dGVTdWJyZWdpb24pOwpAQCAtMTYzLDE0ICsxNTksMTQgQEAgdW5zaWdu
ZWQgRmlsdGVyRWZmZWN0Ojp0b3RhbE51bWJlck9mRWZmZWN0SW5wdXRzKCkgY29uc3QKICAgICBy
ZXR1cm4gY29sbGVjdEVmZmVjdHModGhpcywgYWxsRWZmZWN0cyk7CiB9CiAKLXZvaWQgRmlsdGVy
RWZmZWN0OjphcHBseSgpCit2b2lkIEZpbHRlckVmZmVjdDo6YXBwbHkoY29uc3QgRmlsdGVyJiBm
aWx0ZXIpCiB7CiAgICAgaWYgKGhhc1Jlc3VsdCgpKQogICAgICAgICByZXR1cm47CiAgICAgdW5z
aWduZWQgc2l6ZSA9IG1faW5wdXRFZmZlY3RzLnNpemUoKTsKICAgICBmb3IgKHVuc2lnbmVkIGkg
PSAwOyBpIDwgc2l6ZTsgKytpKSB7CiAgICAgICAgIEZpbHRlckVmZmVjdCogaW4gPSBtX2lucHV0
RWZmZWN0cy5hdChpKS5nZXQoKTsKLSAgICAgICAgaW4tPmFwcGx5KCk7CisgICAgICAgIGluLT5h
cHBseShmaWx0ZXIpOwogICAgICAgICBpZiAoIWluLT5oYXNSZXN1bHQoKSkKICAgICAgICAgICAg
IHJldHVybjsKIApAQCAtMTc4LDEwICsxNzQsMTAgQEAgdm9pZCBGaWx0ZXJFZmZlY3Q6OmFwcGx5
KCkKICAgICAgICAgdHJhbnNmb3JtUmVzdWx0Q29sb3JTcGFjZShpbiwgaSk7CiAgICAgfQogCi0g
ICAgZGV0ZXJtaW5lQWJzb2x1dGVQYWludFJlY3QoKTsKKyAgICBkZXRlcm1pbmVBYnNvbHV0ZVBh
aW50UmVjdChmaWx0ZXIpOwogICAgIHNldFJlc3VsdENvbG9yU3BhY2UobV9vcGVyYXRpbmdDb2xv
clNwYWNlKTsKIAotICAgIExPR19XSVRIX1NUUkVBTShGaWx0ZXJzLCBzdHJlYW0gPDwgIkZpbHRl
ckVmZmVjdCAiIDw8IGZpbHRlck5hbWUoKSA8PCAiICIgPDwgdGhpcyA8PCAiIGFwcGx5KCk6XG4g
IGZpbHRlclByaW1pdGl2ZVN1YnJlZ2lvbiAiIDw8IG1fZmlsdGVyUHJpbWl0aXZlU3VicmVnaW9u
IDw8ICJcbiAgZWZmZWN0Qm91bmRhcmllcyAiIDw8IG1fZWZmZWN0Qm91bmRhcmllcyA8PCAiXG4g
IGFic29sdXRlVW5jbGlwcGVkU3VicmVnaW9uICIgPDwgbV9hYnNvbHV0ZVVuY2xpcHBlZFN1YnJl
Z2lvbiA8PCAiXG4gIGFic29sdXRlUGFpbnRSZWN0ICIgPDwgbV9hYnNvbHV0ZVBhaW50UmVjdCA8
PCAiXG4gIG1heEVmZmVjdFJlY3QgIiA8PCBtX21heEVmZmVjdFJlY3QgPDwgIlxuICBmaWx0ZXIg
c2NhbGUgIiA8PCBtX2ZpbHRlci5maWx0ZXJTY2FsZSgpIDw8ICJcbiAgZmlsdGVyIHJlc29sdXRp
b24gIiA8PCBtX2ZpbHRlci5maWx0ZXJSZXNvbHV0aW9uKCkpOworICAgIExPR19XSVRIX1NUUkVB
TShGaWx0ZXJzLCBzdHJlYW0gPDwgIkZpbHRlckVmZmVjdCAiIDw8IGZpbHRlck5hbWUoKSA8PCAi
ICIgPDwgdGhpcyA8PCAiIGFwcGx5KCk6XG4gIGZpbHRlclByaW1pdGl2ZVN1YnJlZ2lvbiAiIDw8
IG1fZmlsdGVyUHJpbWl0aXZlU3VicmVnaW9uIDw8ICJcbiAgZWZmZWN0Qm91bmRhcmllcyAiIDw8
IG1fZWZmZWN0Qm91bmRhcmllcyA8PCAiXG4gIGFic29sdXRlVW5jbGlwcGVkU3VicmVnaW9uICIg
PDwgbV9hYnNvbHV0ZVVuY2xpcHBlZFN1YnJlZ2lvbiA8PCAiXG4gIGFic29sdXRlUGFpbnRSZWN0
ICIgPDwgbV9hYnNvbHV0ZVBhaW50UmVjdCA8PCAiXG4gIG1heEVmZmVjdFJlY3QgIiA8PCBtX21h
eEVmZmVjdFJlY3QgPDwgIlxuICBmaWx0ZXIgc2NhbGUgIiA8PCBmaWx0ZXIuZmlsdGVyU2NhbGUo
KSk7CiAKICAgICBpZiAobV9hYnNvbHV0ZVBhaW50UmVjdC5pc0VtcHR5KCkgfHwgSW1hZ2VCdWZm
ZXI6OnNpemVOZWVkc0NsYW1waW5nKG1fYWJzb2x1dGVQYWludFJlY3Quc2l6ZSgpKSkKICAgICAg
ICAgcmV0dXJuOwpAQCAtMTkyLDcgKzE4OCw3IEBAIHZvaWQgRmlsdGVyRWZmZWN0OjphcHBseSgp
CiAgICAgfQogICAgIAogICAgIC8vIEFkZCBwbGF0Zm9ybSBzcGVjaWZpYyBhcHBseSBmdW5jdGlv
bnMgaGVyZSBhbmQgcmV0dXJuIGVhcmxpZXIuCi0gICAgcGxhdGZvcm1BcHBseVNvZnR3YXJlKCk7
CisgICAgcGxhdGZvcm1BcHBseVNvZnR3YXJlKGZpbHRlcik7CiB9CiAKIHZvaWQgRmlsdGVyRWZm
ZWN0Ojpmb3JjZVZhbGlkUHJlTXVsdGlwbGllZFBpeGVscygpCkBAIC0yNzMsNyArMjY5LDcgQEAg
SW1hZ2VCdWZmZXIqIEZpbHRlckVmZmVjdDo6aW1hZ2VCdWZmZXJSZXN1bHQoKQogICAgIGlmICht
X2ltYWdlQnVmZmVyUmVzdWx0KQogICAgICAgICByZXR1cm4gbV9pbWFnZUJ1ZmZlclJlc3VsdC5n
ZXQoKTsKIAotICAgIG1faW1hZ2VCdWZmZXJSZXN1bHQgPSBJbWFnZUJ1ZmZlcjo6Y3JlYXRlKG1f
YWJzb2x1dGVQYWludFJlY3Quc2l6ZSgpLCBtX2ZpbHRlci5yZW5kZXJpbmdNb2RlKCksIG1fZmls
dGVyLmZpbHRlclNjYWxlKCksIG1fcmVzdWx0Q29sb3JTcGFjZSwgUGl4ZWxGb3JtYXQ6OkJHUkE4
KTsKKyAgICBtX2ltYWdlQnVmZmVyUmVzdWx0ID0gSW1hZ2VCdWZmZXI6OmNyZWF0ZShtX2Fic29s
dXRlUGFpbnRSZWN0LnNpemUoKSwgUmVuZGVyaW5nTW9kZTo6VW5hY2NlbGVyYXRlZCwgMSwgbV9y
ZXN1bHRDb2xvclNwYWNlLCBQaXhlbEZvcm1hdDo6QkdSQTgpOwogICAgIGlmICghbV9pbWFnZUJ1
ZmZlclJlc3VsdCkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKQEAgLTI4OSw3ICsyODUsNiBA
QCBSZWZQdHI8VWludDhDbGFtcGVkQXJyYXk+IEZpbHRlckVmZmVjdDo6dW5tdWx0aXBsaWVkUmVz
dWx0KGNvbnN0IEludFJlY3QmIHJlY3QsCiB7CiAgICAgSW50U2l6ZSBzY2FsZWRTaXplKHJlY3Qu
c2l6ZSgpKTsKICAgICBBU1NFUlQoIUltYWdlQnVmZmVyOjpzaXplTmVlZHNDbGFtcGluZyhzY2Fs
ZWRTaXplKSk7Ci0gICAgc2NhbGVkU2l6ZS5zY2FsZShtX2ZpbHRlci5maWx0ZXJTY2FsZSgpKTsK
ICAgICBhdXRvIGNoZWNrZWRBcmVhID0gc2NhbGVkU2l6ZS5hcmVhPFJlY29yZE92ZXJmbG93Pigp
ICogNDsKICAgICBpZiAoY2hlY2tlZEFyZWEuaGFzT3ZlcmZsb3dlZCgpKQogICAgICAgICByZXR1
cm4gbnVsbHB0cjsKQEAgLTMwNCw3ICsyOTksNiBAQCBSZWZQdHI8VWludDhDbGFtcGVkQXJyYXk+
IEZpbHRlckVmZmVjdDo6cHJlbXVsdGlwbGllZFJlc3VsdChjb25zdCBJbnRSZWN0JiByZWN0LAog
ewogICAgIEludFNpemUgc2NhbGVkU2l6ZShyZWN0LnNpemUoKSk7CiAgICAgQVNTRVJUKCFJbWFn
ZUJ1ZmZlcjo6c2l6ZU5lZWRzQ2xhbXBpbmcoc2NhbGVkU2l6ZSkpOwotICAgIHNjYWxlZFNpemUu
c2NhbGUobV9maWx0ZXIuZmlsdGVyU2NhbGUoKSk7CiAgICAgYXV0byBjaGVja2VkQXJlYSA9IHNj
YWxlZFNpemUuYXJlYTxSZWNvcmRPdmVyZmxvdz4oKSAqIDQ7CiAgICAgaWYgKGNoZWNrZWRBcmVh
Lmhhc092ZXJmbG93ZWQoKSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CkBAIC0zMTgsOSArMzEy
LDcgQEAgUmVmUHRyPFVpbnQ4Q2xhbXBlZEFycmF5PiBGaWx0ZXJFZmZlY3Q6OnByZW11bHRpcGxp
ZWRSZXN1bHQoY29uc3QgSW50UmVjdCYgcmVjdCwKIHZvaWQgRmlsdGVyRWZmZWN0Ojpjb3B5SW1h
Z2VCeXRlcyhjb25zdCBVaW50OENsYW1wZWRBcnJheSYgc291cmNlLCBVaW50OENsYW1wZWRBcnJh
eSYgZGVzdGluYXRpb24sIGNvbnN0IEludFJlY3QmIHJlY3QpIGNvbnN0CiB7CiAgICAgSW50UmVj
dCBzY2FsZWRSZWN0KHJlY3QpOwotICAgIHNjYWxlZFJlY3Quc2NhbGUobV9maWx0ZXIuZmlsdGVy
U2NhbGUoKSk7CiAgICAgSW50U2l6ZSBzY2FsZWRQYWludFNpemUobV9hYnNvbHV0ZVBhaW50UmVj
dC5zaXplKCkpOwotICAgIHNjYWxlZFBhaW50U2l6ZS5zY2FsZShtX2ZpbHRlci5maWx0ZXJTY2Fs
ZSgpKTsKIAogICAgIC8vIEluaXRpYWxpemUgdGhlIGRlc3RpbmF0aW9uIHRvIHRyYW5zcGFyZW50
IGJsYWNrLCBpZiBub3QgZW50aXJlbHkgY292ZXJlZCBieSB0aGUgc291cmNlLgogICAgIGlmIChz
Y2FsZWRSZWN0LngoKSA8IDAgfHwgc2NhbGVkUmVjdC55KCkgPCAwIHx8IHNjYWxlZFJlY3QubWF4
WCgpID4gc2NhbGVkUGFpbnRTaXplLndpZHRoKCkgfHwgc2NhbGVkUmVjdC5tYXhZKCkgPiBzY2Fs
ZWRQYWludFNpemUuaGVpZ2h0KCkpCkBAIC00NDQsMTAgKzQzNiw5IEBAIHN0ZDo6b3B0aW9uYWw8
UGl4ZWxCdWZmZXI+IEZpbHRlckVmZmVjdDo6Y29udmVydFBpeGVsQnVmZmVyVG9Db2xvclNwYWNl
KGNvbnN0IERlCiAgICAgLy8gRklYTUU6IFVzaW5nIGFuIEltYWdlQnVmZmVyIHRvIHBlcmZvcm0g
dGhlIGNvbG9yIHNwYWNlIGNvbnZlcnNpb24gaXMgdW5uZWNlc3NhcnkuIFdlIGNhbiBkbyBpdCBk
aXJlY3RseS4KIAogICAgIEludFJlY3QgZGVzdGluYXRpb25SZWN0KEludFBvaW50KCksIHBpeGVs
QnVmZmVyLnNpemUoKSk7Ci0gICAgZGVzdGluYXRpb25SZWN0LnNjYWxlKDEgLyBtX2ZpbHRlci5m
aWx0ZXJTY2FsZSgpKTsKICAgICBGbG9hdFNpemUgY2xhbXBlZFNpemUgPSBJbWFnZUJ1ZmZlcjo6
Y2xhbXBlZFNpemUoZGVzdGluYXRpb25SZWN0LnNpemUoKSk7CiAgICAgLy8gQ3JlYXRlIGFuIElt
YWdlQnVmZmVyIHRvIHN0b3JlIGluY29taW5nIFBpeGVsQnVmZmVyCi0gICAgYXV0byBidWZmZXIg
PSBJbWFnZUJ1ZmZlcjo6Y3JlYXRlKGNsYW1wZWRTaXplLCBtX2ZpbHRlci5yZW5kZXJpbmdNb2Rl
KCksIG1fZmlsdGVyLmZpbHRlclNjYWxlKCksIG9wZXJhdGluZ0NvbG9yU3BhY2UoKSwgUGl4ZWxG
b3JtYXQ6OkJHUkE4KTsKKyAgICBhdXRvIGJ1ZmZlciA9IEltYWdlQnVmZmVyOjpjcmVhdGUoY2xh
bXBlZFNpemUsIFJlbmRlcmluZ01vZGU6OlVuYWNjZWxlcmF0ZWQsIDEsIG9wZXJhdGluZ0NvbG9y
U3BhY2UoKSwgUGl4ZWxGb3JtYXQ6OkJHUkE4KTsKICAgICBpZiAoIWJ1ZmZlcikKICAgICAgICAg
cmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICBidWZmZXItPnB1dFBpeGVsQnVmZmVyKHBpeGVsQnVm
ZmVyLCBkZXN0aW5hdGlvblJlY3QpOwpAQCAtNDYxLDcgKzQ1Miw3IEBAIHN0ZDo6b3B0aW9uYWw8
UGl4ZWxCdWZmZXI+IEZpbHRlckVmZmVjdDo6Y29udmVydEltYWdlQnVmZmVyVG9Db2xvclNwYWNl
KGNvbnN0IERlCiAgICAgRmxvYXRTaXplIGNsYW1wZWRTaXplID0gSW1hZ2VCdWZmZXI6OmNsYW1w
ZWRTaXplKHJlY3Quc2l6ZSgpKTsKIAogICAgIC8vIENyZWF0ZSBhbiBJbWFnZUJ1ZmZlciB3aXRo
IHRoZSBjb3JyZWN0IGNvbG9yIHNwYWNlIGFuZCB1dGlsaXplIENHIHRvIGhhbmRsZSBjb2xvciBz
cGFjZSBjb252ZXJzaW9uCi0gICAgYXV0byBjb252ZXJ0ZWRCdWZmZXIgPSBJbWFnZUJ1ZmZlcjo6
Y3JlYXRlKGNsYW1wZWRTaXplLCBtX2ZpbHRlci5yZW5kZXJpbmdNb2RlKCksIG1fZmlsdGVyLmZp
bHRlclNjYWxlKCksIHRhcmdldENvbG9yU3BhY2UsIFBpeGVsRm9ybWF0OjpCR1JBOCk7CisgICAg
YXV0byBjb252ZXJ0ZWRCdWZmZXIgPSBJbWFnZUJ1ZmZlcjo6Y3JlYXRlKGNsYW1wZWRTaXplLCBS
ZW5kZXJpbmdNb2RlOjpVbmFjY2VsZXJhdGVkLCAxLCB0YXJnZXRDb2xvclNwYWNlLCBQaXhlbEZv
cm1hdDo6QkdSQTgpOwogICAgIGlmICghY29udmVydGVkQnVmZmVyKQogICAgICAgICByZXR1cm4g
c3RkOjpudWxsb3B0OwogCkBAIC01MTMsNyArNTA0LDYgQEAgdm9pZCBGaWx0ZXJFZmZlY3Q6OmNv
cHlVbm11bHRpcGxpZWRSZXN1bHQoVWludDhDbGFtcGVkQXJyYXkmIGRlc3RpbmF0aW9uLCBjb25z
dAogICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgSW50U2l6ZSBpbnB1dFNpemUobV9hYnNv
bHV0ZVBhaW50UmVjdC5zaXplKCkpOwogICAgICAgICAgICAgQVNTRVJUKCFJbWFnZUJ1ZmZlcjo6
c2l6ZU5lZWRzQ2xhbXBpbmcoaW5wdXRTaXplKSk7Ci0gICAgICAgICAgICBpbnB1dFNpemUuc2Nh
bGUobV9maWx0ZXIuZmlsdGVyU2NhbGUoKSk7CiAgICAgICAgICAgICAKICAgICAgICAgICAgIEFT
U0VSVChtX3ByZW11bHRpcGxpZWRJbWFnZVJlc3VsdC0+Zm9ybWF0KCkuY29sb3JTcGFjZSA9PSBt
X3Jlc3VsdENvbG9yU3BhY2UpOwogICAgICAgICAgICAgUGl4ZWxCdWZmZXJGb3JtYXQgZm9ybWF0
IHsgQWxwaGFQcmVtdWx0aXBsaWNhdGlvbjo6VW5wcmVtdWx0aXBsaWVkLCBQaXhlbEZvcm1hdDo6
UkdCQTgsIG1fcmVzdWx0Q29sb3JTcGFjZSB9OwpAQCAtNTUyLDcgKzU0Miw2IEBAIHZvaWQgRmls
dGVyRWZmZWN0Ojpjb3B5UHJlbXVsdGlwbGllZFJlc3VsdChVaW50OENsYW1wZWRBcnJheSYgZGVz
dGluYXRpb24sIGNvbnN0CiAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICBJbnRTaXplIGlu
cHV0U2l6ZShtX2Fic29sdXRlUGFpbnRSZWN0LnNpemUoKSk7CiAgICAgICAgICAgICBBU1NFUlQo
IUltYWdlQnVmZmVyOjpzaXplTmVlZHNDbGFtcGluZyhpbnB1dFNpemUpKTsKLSAgICAgICAgICAg
IGlucHV0U2l6ZS5zY2FsZShtX2ZpbHRlci5maWx0ZXJTY2FsZSgpKTsKIAogICAgICAgICAgICAg
QVNTRVJUKG1fdW5tdWx0aXBsaWVkSW1hZ2VSZXN1bHQtPmZvcm1hdCgpLmNvbG9yU3BhY2UgPT0g
bV9yZXN1bHRDb2xvclNwYWNlKTsKICAgICAgICAgICAgIFBpeGVsQnVmZmVyRm9ybWF0IGZvcm1h
dCB7IEFscGhhUHJlbXVsdGlwbGljYXRpb246OlByZW11bHRpcGxpZWQsIFBpeGVsRm9ybWF0OjpS
R0JBOCwgbV9yZXN1bHRDb2xvclNwYWNlIH07CkBAIC01NzIsNyArNTYxLDcgQEAgdm9pZCBGaWx0
ZXJFZmZlY3Q6OmNvcHlQcmVtdWx0aXBsaWVkUmVzdWx0KFVpbnQ4Q2xhbXBlZEFycmF5JiBkZXN0
aW5hdGlvbiwgY29uc3QKIAogSW1hZ2VCdWZmZXIqIEZpbHRlckVmZmVjdDo6Y3JlYXRlSW1hZ2VC
dWZmZXJSZXN1bHQoKQogewotICAgIExPRyhGaWx0ZXJzLCAiRmlsdGVyRWZmZWN0ICVzICVwIGNy
ZWF0ZUltYWdlQnVmZmVyUmVzdWx0ICVkeCVkIiwgZmlsdGVyTmFtZSgpLCB0aGlzLCBtX2Fic29s
dXRlUGFpbnRSZWN0LnNpemUoKS53aWR0aCgpLCBtX2Fic29sdXRlUGFpbnRSZWN0LnNpemUoKS5o
ZWlnaHQoKSk7CisgICAgTE9HKEZpbHRlcnMsICJGaWx0ZXJFZmZlY3QgJXMgJXAgY3JlYXRlSW1h
Z2VCdWZmZXJSZXN1bHQgJWR4JWQiLCBmaWx0ZXJOYW1lKCkuY2hhcmFjdGVyczgoKSwgdGhpcywg
bV9hYnNvbHV0ZVBhaW50UmVjdC5zaXplKCkud2lkdGgoKSwgbV9hYnNvbHV0ZVBhaW50UmVjdC5z
aXplKCkuaGVpZ2h0KCkpOwogCiAgICAgLy8gT25seSBvbmUgcmVzdWx0IHR5cGUgaXMgYWxsb3dl
ZC4KICAgICBBU1NFUlQoIWhhc1Jlc3VsdCgpKTsKQEAgLTU4MCwxMyArNTY5LDEzIEBAIEltYWdl
QnVmZmVyKiBGaWx0ZXJFZmZlY3Q6OmNyZWF0ZUltYWdlQnVmZmVyUmVzdWx0KCkKICAgICAgICAg
cmV0dXJuIG51bGxwdHI7CiAKICAgICBGbG9hdFNpemUgY2xhbXBlZFNpemUgPSBJbWFnZUJ1ZmZl
cjo6Y2xhbXBlZFNpemUobV9hYnNvbHV0ZVBhaW50UmVjdC5zaXplKCkpOwotICAgIG1faW1hZ2VC
dWZmZXJSZXN1bHQgPSBJbWFnZUJ1ZmZlcjo6Y3JlYXRlKGNsYW1wZWRTaXplLCBtX2ZpbHRlci5y
ZW5kZXJpbmdNb2RlKCksIG1fZmlsdGVyLmZpbHRlclNjYWxlKCksIG1fcmVzdWx0Q29sb3JTcGFj
ZSwgUGl4ZWxGb3JtYXQ6OkJHUkE4KTsKKyAgICBtX2ltYWdlQnVmZmVyUmVzdWx0ID0gSW1hZ2VC
dWZmZXI6OmNyZWF0ZShjbGFtcGVkU2l6ZSwgUmVuZGVyaW5nTW9kZTo6VW5hY2NlbGVyYXRlZCwg
MSwgbV9yZXN1bHRDb2xvclNwYWNlLCBQaXhlbEZvcm1hdDo6QkdSQTgpOwogICAgIHJldHVybiBt
X2ltYWdlQnVmZmVyUmVzdWx0LmdldCgpOwogfQogCiBzdGQ6Om9wdGlvbmFsPFBpeGVsQnVmZmVy
PiYgRmlsdGVyRWZmZWN0OjpjcmVhdGVVbm11bHRpcGxpZWRJbWFnZVJlc3VsdCgpCiB7Ci0gICAg
TE9HKEZpbHRlcnMsICJGaWx0ZXJFZmZlY3QgJXMgJXAgY3JlYXRlVW5tdWx0aXBsaWVkSW1hZ2VS
ZXN1bHQiLCBmaWx0ZXJOYW1lKCksIHRoaXMpOworICAgIExPRyhGaWx0ZXJzLCAiRmlsdGVyRWZm
ZWN0ICVzICVwIGNyZWF0ZVVubXVsdGlwbGllZEltYWdlUmVzdWx0IiwgZmlsdGVyTmFtZSgpLmNo
YXJhY3RlcnM4KCksIHRoaXMpOwogCiAgICAgLy8gT25seSBvbmUgcmVzdWx0IHR5cGUgaXMgYWxs
b3dlZC4KICAgICBBU1NFUlQoIWhhc1Jlc3VsdCgpKTsKQEAgLTU5Nyw3ICs1ODYsNiBAQCBzdGQ6
Om9wdGlvbmFsPFBpeGVsQnVmZmVyPiYgRmlsdGVyRWZmZWN0OjpjcmVhdGVVbm11bHRpcGxpZWRJ
bWFnZVJlc3VsdCgpCiAKICAgICBJbnRTaXplIHJlc3VsdFNpemUobV9hYnNvbHV0ZVBhaW50UmVj
dC5zaXplKCkpOwogICAgIEFTU0VSVCghSW1hZ2VCdWZmZXI6OnNpemVOZWVkc0NsYW1waW5nKHJl
c3VsdFNpemUpKTsKLSAgICByZXN1bHRTaXplLnNjYWxlKG1fZmlsdGVyLmZpbHRlclNjYWxlKCkp
OwogICAgIFBpeGVsQnVmZmVyRm9ybWF0IGZvcm1hdCB7IEFscGhhUHJlbXVsdGlwbGljYXRpb246
OlVucHJlbXVsdGlwbGllZCwgUGl4ZWxGb3JtYXQ6OlJHQkE4LCBtX3Jlc3VsdENvbG9yU3BhY2Ug
fTsKICAgICBtX3VubXVsdGlwbGllZEltYWdlUmVzdWx0ID0gUGl4ZWxCdWZmZXI6OnRyeUNyZWF0
ZShmb3JtYXQsIHJlc3VsdFNpemUpOwogICAgIHJldHVybiBtX3VubXVsdGlwbGllZEltYWdlUmVz
dWx0OwpAQCAtNjA1LDcgKzU5Myw3IEBAIHN0ZDo6b3B0aW9uYWw8UGl4ZWxCdWZmZXI+JiBGaWx0
ZXJFZmZlY3Q6OmNyZWF0ZVVubXVsdGlwbGllZEltYWdlUmVzdWx0KCkKIAogc3RkOjpvcHRpb25h
bDxQaXhlbEJ1ZmZlcj4mIEZpbHRlckVmZmVjdDo6Y3JlYXRlUHJlbXVsdGlwbGllZEltYWdlUmVz
dWx0KCkKIHsKLSAgICBMT0coRmlsdGVycywgIkZpbHRlckVmZmVjdCAlcyAlcCBjcmVhdGVQcmVt
dWx0aXBsaWVkSW1hZ2VSZXN1bHQiLCBmaWx0ZXJOYW1lKCksIHRoaXMpOworICAgIExPRyhGaWx0
ZXJzLCAiRmlsdGVyRWZmZWN0ICVzICVwIGNyZWF0ZVByZW11bHRpcGxpZWRJbWFnZVJlc3VsdCIs
IGZpbHRlck5hbWUoKS5jaGFyYWN0ZXJzOCgpLCB0aGlzKTsKIAogICAgIC8vIE9ubHkgb25lIHJl
c3VsdCB0eXBlIGlzIGFsbG93ZWQuCiAgICAgQVNTRVJUKCFoYXNSZXN1bHQoKSk7CkBAIC02MTYs
NyArNjA0LDYgQEAgc3RkOjpvcHRpb25hbDxQaXhlbEJ1ZmZlcj4mIEZpbHRlckVmZmVjdDo6Y3Jl
YXRlUHJlbXVsdGlwbGllZEltYWdlUmVzdWx0KCkKIAogICAgIEludFNpemUgcmVzdWx0U2l6ZSht
X2Fic29sdXRlUGFpbnRSZWN0LnNpemUoKSk7CiAgICAgQVNTRVJUKCFJbWFnZUJ1ZmZlcjo6c2l6
ZU5lZWRzQ2xhbXBpbmcocmVzdWx0U2l6ZSkpOwotICAgIHJlc3VsdFNpemUuc2NhbGUobV9maWx0
ZXIuZmlsdGVyU2NhbGUoKSk7CiAgICAgUGl4ZWxCdWZmZXJGb3JtYXQgZm9ybWF0IHsgQWxwaGFQ
cmVtdWx0aXBsaWNhdGlvbjo6UHJlbXVsdGlwbGllZCwgUGl4ZWxGb3JtYXQ6OlJHQkE4LCBtX3Jl
c3VsdENvbG9yU3BhY2UgfTsKICAgICBtX3ByZW11bHRpcGxpZWRJbWFnZVJlc3VsdCA9IFBpeGVs
QnVmZmVyOjp0cnlDcmVhdGUoZm9ybWF0LCByZXN1bHRTaXplKTsKICAgICByZXR1cm4gbV9wcmVt
dWx0aXBsaWVkSW1hZ2VSZXN1bHQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9maWx0ZXJzL0ZpbHRlckVmZmVjdC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvZmlsdGVycy9GaWx0ZXJFZmZlY3QuaAppbmRleCAxMmRlZDI2NWE2NTVjMzdl
NzdlMmNmMDViNTI3NzNmMmI5NmI0NzFjLi5lNTBlYmY0NGE5MjcyY2FhMDQyNTgwOTljODJlMDVj
YTZmZmZlNDVkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9m
aWx0ZXJzL0ZpbHRlckVmZmVjdC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2ZpbHRlcnMvRmlsdGVyRWZmZWN0LmgKQEAgLTI0LDEzICsyNCwxMyBAQAogCiAjaW5jbHVk
ZSAiQWxwaGFQcmVtdWx0aXBsaWNhdGlvbi5oIgogI2luY2x1ZGUgIkRlc3RpbmF0aW9uQ29sb3JT
cGFjZS5oIgorI2luY2x1ZGUgIkZpbHRlckZ1bmN0aW9uLmgiCiAjaW5jbHVkZSAiRmxvYXRSZWN0
LmgiCiAjaW5jbHVkZSAiSW50UmVjdC5oIgogI2luY2x1ZGUgIkludFJlY3RFeHRlbnQuaCIKICNp
bmNsdWRlICJQaXhlbEJ1ZmZlci5oIgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0ZvcndhcmQu
aD4KICNpbmNsdWRlIDx3dGYvTWF0aEV4dHJhcy5oPgotI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVk
Lmg+CiAjaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgogI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KIApA
QCAtNDYsNDAgKzQ2LDkgQEAgY2xhc3MgSW1hZ2VCdWZmZXI7CiAKIHR5cGVkZWYgVmVjdG9yPFJl
ZlB0cjxGaWx0ZXJFZmZlY3Q+PiBGaWx0ZXJFZmZlY3RWZWN0b3I7CiAKLWVudW0gRmlsdGVyRWZm
ZWN0VHlwZSB7Ci0gICAgRmlsdGVyRWZmZWN0VHlwZVVua25vd24sCi0gICAgRmlsdGVyRWZmZWN0
VHlwZUltYWdlLAotICAgIEZpbHRlckVmZmVjdFR5cGVUaWxlLAotICAgIEZpbHRlckVmZmVjdFR5
cGVTb3VyY2VJbnB1dAotfTsKLQotY2xhc3MgRmlsdGVyRWZmZWN0IDogcHVibGljIFJlZkNvdW50
ZWQ8RmlsdGVyRWZmZWN0PiB7CitjbGFzcyBGaWx0ZXJFZmZlY3QgOiBwdWJsaWMgRmlsdGVyRnVu
Y3Rpb24gewogcHVibGljOgotICAgIGVudW0gY2xhc3MgVHlwZSA6IHVpbnQ4X3QgewotICAgICAg
ICBCbGVuZCwKLSAgICAgICAgQ29sb3JNYXRyaXgsCi0gICAgICAgIENvbXBvbmVudFRyYW5zZmVy
LAotICAgICAgICBDb21wb3NpdGUsCi0gICAgICAgIENvbnZvbHZlTWF0cml4LAotICAgICAgICBE
aWZmdXNlTGlnaHRpbmcsCi0gICAgICAgIERpc3BsYWNlbWVudE1hcCwKLSAgICAgICAgRHJvcFNo
YWRvdywKLSAgICAgICAgRmxvb2QsCi0gICAgICAgIEdhdXNzaWFuQmx1ciwKLSAgICAgICAgSW1h
Z2UsCi0gICAgICAgIExpZ2h0aW5nLAotICAgICAgICBNZXJnZSwKLSAgICAgICAgTW9ycGhvbG9n
eSwKLSAgICAgICAgT2Zmc2V0LAotICAgICAgICBTcGVjdWxhckxpZ2h0aW5nLAotICAgICAgICBU
aWxlLAotICAgICAgICBUdXJidWxlbmNlLAotICAgICAgICBTb3VyY2VBbHBoYSwKLSAgICAgICAg
U291cmNlR3JhcGhpYwotICAgIH07Ci0gICAgdmlydHVhbCB+RmlsdGVyRWZmZWN0KCk7Ci0KLSAg
ICB2b2lkIGNsZWFyUmVzdWx0KCk7CisgICAgdm9pZCBjbGVhclJlc3VsdCgpIG92ZXJyaWRlOwog
ICAgIHZvaWQgY2xlYXJSZXN1bHRzUmVjdXJzaXZlKCk7CiAKICAgICBJbWFnZUJ1ZmZlciogaW1h
Z2VCdWZmZXJSZXN1bHQoKTsKQEAgLTEwNCw3ICs3Myw3IEBAIHB1YmxpYzoKICAgICBJbnRSZWN0
IHJlcXVlc3RlZFJlZ2lvbk9mSW5wdXRQaXhlbEJ1ZmZlcihjb25zdCBJbnRSZWN0JikgY29uc3Q7
CiAgICAgCiAgICAgLy8gUmVjdXJzZXMgb24gaW5wdXRzLgotICAgIEZsb2F0UmVjdCBkZXRlcm1p
bmVGaWx0ZXJQcmltaXRpdmVTdWJyZWdpb24oKTsKKyAgICBGbG9hdFJlY3QgZGV0ZXJtaW5lRmls
dGVyUHJpbWl0aXZlU3VicmVnaW9uKGNvbnN0IEZpbHRlciYpOwogCiAgICAgLy8gU29saWQgYmxh
Y2sgaW1hZ2Ugd2l0aCBkaWZmZXJlbnQgYWxwaGEgdmFsdWVzLgogICAgIGJvb2wgaXNBbHBoYUlt
YWdlKCkgY29uc3QgeyByZXR1cm4gbV9hbHBoYUltYWdlOyB9CkBAIC0xMTQsMjAgKzgzLDE2IEBA
IHB1YmxpYzoKICAgICB2b2lkIHNldEFic29sdXRlUGFpbnRSZWN0KGNvbnN0IEludFJlY3QmIGFi
c29sdXRlUGFpbnRSZWN0KSB7IG1fYWJzb2x1dGVQYWludFJlY3QgPSBhYnNvbHV0ZVBhaW50UmVj
dDsgfQogCiAgICAgRmxvYXRSZWN0IG1heEVmZmVjdFJlY3QoKSBjb25zdCB7IHJldHVybiBtX21h
eEVmZmVjdFJlY3Q7IH0KLSAgICB2b2lkIHNldE1heEVmZmVjdFJlY3QoY29uc3QgRmxvYXRSZWN0
JiBtYXhFZmZlY3RSZWN0KSB7IG1fbWF4RWZmZWN0UmVjdCA9IG1heEVmZmVjdFJlY3Q7IH0gCisg
ICAgdm9pZCBzZXRNYXhFZmZlY3RSZWN0KGNvbnN0IEZsb2F0UmVjdCYgbWF4RWZmZWN0UmVjdCkg
eyBtX21heEVmZmVjdFJlY3QgPSBtYXhFZmZlY3RSZWN0OyB9CiAKLSAgICB2b2lkIGFwcGx5KCk7
CisgICAgdm9pZCBhcHBseShjb25zdCBGaWx0ZXImKSBvdmVycmlkZTsKIAogICAgIC8vIENvcnJl
Y3QgYW55IGludmFsaWQgcGl4ZWxzLCBpZiBuZWNlc3NhcnksIGluIHRoZSByZXN1bHQgb2YgYSBm
aWx0ZXIgb3BlcmF0aW9uLgogICAgIC8vIFRoaXMgbWV0aG9kIGlzIHVzZWQgdG8gZW5zdXJlIHZh
bGlkIHBpeGVsIHZhbHVlcyBvbiBmaWx0ZXIgaW5wdXRzIGFuZCB0aGUgZmluYWwgcmVzdWx0Lgog
ICAgIC8vIE9ubHkgdGhlIGFyaXRobWV0aWMgY29tcG9zaXRlIGZpbHRlciBldmVyIG5lZWRzIHRv
IHBlcmZvcm0gY29ycmVjdGlvbi4KICAgICB2aXJ0dWFsIHZvaWQgY29ycmVjdEZpbHRlclJlc3Vs
dElmTmVlZGVkKCkgeyB9CiAKLSAgICB2aXJ0dWFsIHZvaWQgZGV0ZXJtaW5lQWJzb2x1dGVQYWlu
dFJlY3QoKTsKLQotICAgIHZpcnR1YWwgRmlsdGVyRWZmZWN0VHlwZSBmaWx0ZXJFZmZlY3RUeXBl
KCkgY29uc3QgeyByZXR1cm4gRmlsdGVyRWZmZWN0VHlwZVVua25vd247IH0KLQotICAgIHZpcnR1
YWwgSW50T3V0c2V0cyBvdXRzZXRzKCkgY29uc3QgeyByZXR1cm4gSW50T3V0c2V0cygpOyB9Cisg
ICAgdmlydHVhbCB2b2lkIGRldGVybWluZUFic29sdXRlUGFpbnRSZWN0KGNvbnN0IEZpbHRlciYp
OwogCiAgICAgZW51bSBjbGFzcyBSZXByZXNlbnRhdGlvblR5cGUgeyBUZXN0T3V0cHV0LCBEZWJ1
Z2dpbmcgfTsKICAgICB2aXJ0dWFsIFdURjo6VGV4dFN0cmVhbSYgZXh0ZXJuYWxSZXByZXNlbnRh
dGlvbihXVEY6OlRleHRTdHJlYW0mLCBSZXByZXNlbnRhdGlvblR5cGUgPSBSZXByZXNlbnRhdGlv
blR5cGU6OlRlc3RPdXRwdXQpIGNvbnN0OwpAQCAtMTU2LDExICsxMjEsNiBAQCBwdWJsaWM6CiAg
ICAgCiAgICAgRmxvYXRQb2ludCBtYXBQb2ludEZyb21Vc2VyU3BhY2VUb0J1ZmZlcihGbG9hdFBv
aW50KSBjb25zdDsKICAgICAKLSAgICBUeXBlIGZpbHRlckVmZmVjdENsYXNzVHlwZSgpIGNvbnN0
IHsgcmV0dXJuIG1fZmlsdGVyRWZmZWN0Q2xhc3NUeXBlOyB9Ci0KLSAgICBGaWx0ZXImIGZpbHRl
cigpIHsgcmV0dXJuIG1fZmlsdGVyOyB9Ci0gICAgY29uc3QgRmlsdGVyJiBmaWx0ZXIoKSBjb25z
dCB7IHJldHVybiBtX2ZpbHRlcjsgfQotCiAgICAgYm9vbCBjbGlwc1RvQm91bmRzKCkgY29uc3Qg
eyByZXR1cm4gbV9jbGlwc1RvQm91bmRzOyB9CiAgICAgdm9pZCBzZXRDbGlwc1RvQm91bmRzKGJv
b2wgdmFsdWUpIHsgbV9jbGlwc1RvQm91bmRzID0gdmFsdWU7IH0KIApAQCAtMTgxLDEwICsxNDEs
OCBAQCBwdWJsaWM6CiAgICAgfQogCiBwcm90ZWN0ZWQ6Ci0gICAgRmlsdGVyRWZmZWN0KEZpbHRl
ciYsIFR5cGUpOworICAgIEZpbHRlckVmZmVjdChUeXBlKTsKICAgICAKLSAgICB2aXJ0dWFsIGNv
bnN0IGNoYXIqIGZpbHRlck5hbWUoKSBjb25zdCA9IDA7Ci0KICAgICBJbWFnZUJ1ZmZlciogY3Jl
YXRlSW1hZ2VCdWZmZXJSZXN1bHQoKTsKICAgICBzdGQ6Om9wdGlvbmFsPFBpeGVsQnVmZmVyPiYg
Y3JlYXRlVW5tdWx0aXBsaWVkSW1hZ2VSZXN1bHQoKTsKICAgICBzdGQ6Om9wdGlvbmFsPFBpeGVs
QnVmZmVyPiYgY3JlYXRlUHJlbXVsdGlwbGllZEltYWdlUmVzdWx0KCk7CkBAIC0xOTksNyArMTU3
LDcgQEAgcHJvdGVjdGVkOgogICAgIHZvaWQgY2xpcEFic29sdXRlUGFpbnRSZWN0KCk7CiAKIHBy
aXZhdGU6Ci0gICAgdmlydHVhbCB2b2lkIHBsYXRmb3JtQXBwbHlTb2Z0d2FyZSgpID0gMDsKKyAg
ICB2aXJ0dWFsIHZvaWQgcGxhdGZvcm1BcHBseVNvZnR3YXJlKGNvbnN0IEZpbHRlciYpID0gMDsK
IAogICAgIHZvaWQgY29weUltYWdlQnl0ZXMoY29uc3QgVWludDhDbGFtcGVkQXJyYXkmIHNvdXJj
ZSwgVWludDhDbGFtcGVkQXJyYXkmIGRlc3RpbmF0aW9uLCBjb25zdCBJbnRSZWN0JikgY29uc3Q7
CiAgICAgdm9pZCBjb3B5Q29udmVydGVkSW1hZ2VCdWZmZXJUb0Rlc3RpbmF0aW9uKFVpbnQ4Q2xh
bXBlZEFycmF5JiwgY29uc3QgRGVzdGluYXRpb25Db2xvclNwYWNlJiwgQWxwaGFQcmVtdWx0aXBs
aWNhdGlvbiwgY29uc3QgSW50UmVjdCYpOwpAQCAtMjA5LDcgKzE2Nyw2IEBAIHByaXZhdGU6CiAg
ICAgc3RkOjpvcHRpb25hbDxQaXhlbEJ1ZmZlcj4gY29udmVydFBpeGVsQnVmZmVyVG9Db2xvclNw
YWNlKGNvbnN0IERlc3RpbmF0aW9uQ29sb3JTcGFjZSYsIFBpeGVsQnVmZmVyJik7CiAgICAgCiAK
LSAgICBGaWx0ZXImIG1fZmlsdGVyOwogICAgIEZpbHRlckVmZmVjdFZlY3RvciBtX2lucHV0RWZm
ZWN0czsKIAogICAgIFJlZlB0cjxJbWFnZUJ1ZmZlcj4gbV9pbWFnZUJ1ZmZlclJlc3VsdDsKQEAg
LTI0OCwxMSArMjA1LDE3IEBAIHByaXZhdGU6CiAgICAgRGVzdGluYXRpb25Db2xvclNwYWNlIG1f
b3BlcmF0aW5nQ29sb3JTcGFjZSB7IERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQigpIH07CiAj
ZW5kaWYKICAgICBEZXN0aW5hdGlvbkNvbG9yU3BhY2UgbV9yZXN1bHRDb2xvclNwYWNlIHsgRGVz
dGluYXRpb25Db2xvclNwYWNlOjpTUkdCKCkgfTsKLSAgICAKLSAgICBjb25zdCBUeXBlIG1fZmls
dGVyRWZmZWN0Q2xhc3NUeXBlOwogfTsKIAogV0VCQ09SRV9FWFBPUlQgV1RGOjpUZXh0U3RyZWFt
JiBvcGVyYXRvcjw8KFdURjo6VGV4dFN0cmVhbSYsIGNvbnN0IEZpbHRlckVmZmVjdCYpOwogCiB9
IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKK1NQRUNJQUxJWkVfVFlQRV9UUkFJVFNfQkVHSU4oV2Vi
Q29yZTo6RmlsdGVyRWZmZWN0KQorICAgIHN0YXRpYyBib29sIGlzVHlwZShjb25zdCBXZWJDb3Jl
OjpGaWx0ZXJGdW5jdGlvbiYgZnVuY3Rpb24pIHsgcmV0dXJuIGZ1bmN0aW9uLmlzRmlsdGVyRWZm
ZWN0KCk7IH0KK1NQRUNJQUxJWkVfVFlQRV9UUkFJVFNfRU5EKCkKKworI2RlZmluZSBTUEVDSUFM
SVpFX1RZUEVfVFJBSVRTX0ZJTFRFUl9FRkZFQ1QoQ2xhc3NOYW1lKSBcCitTUEVDSUFMSVpFX1RZ
UEVfVFJBSVRTX0JFR0lOKFdlYkNvcmU6OkNsYXNzTmFtZSkgXAorICAgIHN0YXRpYyBib29sIGlz
VHlwZShjb25zdCBXZWJDb3JlOjpGaWx0ZXJFZmZlY3QmIGVmZmVjdCkgeyByZXR1cm4gZWZmZWN0
LmZpbHRlclR5cGUoKSA9PSBXZWJDb3JlOjpGaWx0ZXJFZmZlY3Q6OlR5cGU6OkNsYXNzTmFtZTsg
fSBcCitTUEVDSUFMSVpFX1RZUEVfVFJBSVRTX0VORCgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZpbHRlckVmZmVjdFJlbmRlcmVyLmggYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZpbHRlckVmZmVjdFJlbmRl
cmVyLmgKaW5kZXggNTZiZTI0NzM2MWY1M2IzYzA5ZWNiNTcxMzIyYjc1YTc1NzNlOWNjNC4uNTlj
ZjdkZmUzNDM2MTFmYjFhNmYyNjUyZjY2MGI2YzBiODE5MDU3YiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GaWx0ZXJFZmZlY3RSZW5kZXJlci5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRmlsdGVyRWZm
ZWN0UmVuZGVyZXIuaApAQCAtMzYsNyArMzYsNyBAQCBjbGFzcyBGaWx0ZXJFZmZlY3RSZW5kZXJl
ciB7CiAgICAgCiBwdWJsaWM6CiAgICAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxGaWx0ZXJFZmZl
Y3RSZW5kZXJlcj4gdHJ5Q3JlYXRlKGJvb2wsIEZpbHRlckVmZmVjdCYpOwotICAgIHZpcnR1YWwg
dm9pZCBhcHBseUVmZmVjdHMoRmlsdGVyRWZmZWN0JikgPSAwOworICAgIHZpcnR1YWwgdm9pZCBh
cHBseUVmZmVjdHMoY29uc3QgRmlsdGVyJiwgRmlsdGVyRWZmZWN0JikgPSAwOwogICAgIHZpcnR1
YWwgYm9vbCBoYXNSZXN1bHQoKSBjb25zdCA9IDA7CiAgICAgdmlydHVhbCBJbWFnZUJ1ZmZlciog
b3V0cHV0KCkgY29uc3QgPSAwOwogICAgIHZpcnR1YWwgRmxvYXRSZWN0IGRlc3RSZWN0KGNvbnN0
IEZpbHRlckVmZmVjdCYpIGNvbnN0ID0gMDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRmlsdGVyRnVuY3Rpb24uY3BwIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GaWx0ZXJGdW5jdGlvbi5jcHAKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uMmY1YmIxNTYzODFkZWMxZTBiYWMyMmQ5MTE5YzJlMGVkODBlNGFmMQotLS0gL2Rldi9udWxs
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRmlsdGVyRnVu
Y3Rpb24uY3BwCkBAIC0wLDAgKzEsODQgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjEgQXBw
bGUgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
VEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVO
VCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1Ig
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAq
IFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkZpbHRlckZ1
bmN0aW9uLmgiCisKKyNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgorI2luY2x1ZGUgPHd0Zi9OZXZl
ckRlc3Ryb3llZC5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L0F0b21TdHJpbmdIYXNoLmg+CisKK25h
bWVzcGFjZSBXZWJDb3JlIHsKKworRmlsdGVyRnVuY3Rpb246OkZpbHRlckZ1bmN0aW9uKFR5cGUg
ZmlsdGVyVHlwZSkKKyAgICA6IG1fZmlsdGVyVHlwZShmaWx0ZXJUeXBlKQoreworfQorCitzdGF0
aWMgaW5saW5lIGNvbnN0IGF1dG8mIGZpbHRlck5hbWVzKCkKK3sKKyAgICB1c2luZyBGaWx0ZXJO
YW1lTWFwID0gSGFzaE1hcDxGaWx0ZXJGdW5jdGlvbjo6VHlwZSwgQXRvbVN0cmluZywgV1RGOjpJ
bnRIYXNoPEZpbHRlckZ1bmN0aW9uOjpUeXBlPiwgV1RGOjpTdHJvbmdFbnVtSGFzaFRyYWl0czxG
aWx0ZXJGdW5jdGlvbjo6VHlwZT4+OworCisgICAgc3RhdGljIGF1dG8gZmlsdGVyTmFtZXMgPSBt
YWtlTmV2ZXJEZXN0cm95ZWQoW10geworICAgICAgICBGaWx0ZXJOYW1lTWFwIGZpbHRlck5hbWVz
ID0geworICAgICAgICAgICAgeyBGaWx0ZXJGdW5jdGlvbjo6VHlwZTo6Q1NTRmlsdGVyLCAgICAg
ICAgICAgIkNTU0ZpbHRlciJfcyAgICAgICAgICAgfSwKKyAgICAgICAgICAgIHsgRmlsdGVyRnVu
Y3Rpb246OlR5cGU6OlNWR0ZpbHRlciwgICAgICAgICAgICJTVkdGaWx0ZXIiX3MgICAgICAgICAg
IH0sCisgICAgICAgICAgICAKKyAgICAgICAgICAgIHsgRmlsdGVyRnVuY3Rpb246OlR5cGU6OkZF
QmxlbmQsICAgICAgICAgICAgICJGRUJsZW5kIl9zICAgICAgICAgICAgIH0sCisgICAgICAgICAg
ICB7IEZpbHRlckZ1bmN0aW9uOjpUeXBlOjpGRUNvbG9yTWF0cml4LCAgICAgICAiRkVDb2xvck1h
dHJpeCJfcyAgICAgICB9LAorICAgICAgICAgICAgeyBGaWx0ZXJGdW5jdGlvbjo6VHlwZTo6RkVD
b21wb25lbnRUcmFuc2ZlciwgIkZFQ29tcG9uZW50VHJhbnNmZXIiX3MgfSwKKyAgICAgICAgICAg
IHsgRmlsdGVyRnVuY3Rpb246OlR5cGU6OkZFQ29tcG9zaXRlLCAgICAgICAgICJGRUNvbXBvc2l0
ZSJfcyAgICAgICAgIH0sCisgICAgICAgICAgICB7IEZpbHRlckZ1bmN0aW9uOjpUeXBlOjpGRUNv
bnZvbHZlTWF0cml4LCAgICAiRkVDb252b2x2ZU1hdHJpeCJfcyAgICB9LAorICAgICAgICAgICAg
eyBGaWx0ZXJGdW5jdGlvbjo6VHlwZTo6RkVEaWZmdXNlTGlnaHRpbmcsICAgIkZFRGlmZnVzZUxp
Z2h0aW5nIl9zICAgfSwKKyAgICAgICAgICAgIHsgRmlsdGVyRnVuY3Rpb246OlR5cGU6OkZFRGlz
cGxhY2VtZW50TWFwLCAgICJGRURpc3BsYWNlbWVudE1hcCJfcyAgIH0sCisgICAgICAgICAgICB7
IEZpbHRlckZ1bmN0aW9uOjpUeXBlOjpGRURyb3BTaGFkb3csICAgICAgICAiRkVEcm9wU2hhZG93
Il9zICAgICAgICB9LAorICAgICAgICAgICAgeyBGaWx0ZXJGdW5jdGlvbjo6VHlwZTo6RkVGbG9v
ZCwgICAgICAgICAgICAgIkZFRmxvb2QiX3MgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgIHsg
RmlsdGVyRnVuY3Rpb246OlR5cGU6OkZFR2F1c3NpYW5CbHVyLCAgICAgICJGRUdhdXNzaWFuQmx1
ciJfcyAgICAgIH0sCisgICAgICAgICAgICB7IEZpbHRlckZ1bmN0aW9uOjpUeXBlOjpGRUltYWdl
LCAgICAgICAgICAgICAiRkVJbWFnZSJfcyAgICAgICAgICAgICB9LAorICAgICAgICAgICAgeyBG
aWx0ZXJGdW5jdGlvbjo6VHlwZTo6RkVNZXJnZSwgICAgICAgICAgICAgIkZFTWVyZ2UiX3MgICAg
ICAgICAgICAgfSwKKyAgICAgICAgICAgIHsgRmlsdGVyRnVuY3Rpb246OlR5cGU6OkZFTW9ycGhv
bG9neSwgICAgICAgICJGRU1vcnBob2xvZ3kiX3MgICAgICAgIH0sCisgICAgICAgICAgICB7IEZp
bHRlckZ1bmN0aW9uOjpUeXBlOjpGRU9mZnNldCwgICAgICAgICAgICAiRkVPZmZzZXQiX3MgICAg
ICAgICAgICB9LAorICAgICAgICAgICAgeyBGaWx0ZXJGdW5jdGlvbjo6VHlwZTo6RkVTcGVjdWxh
ckxpZ2h0aW5nLCAgIkZFU3BlY3VsYXJMaWdodGluZyJfcyAgfSwKKyAgICAgICAgICAgIHsgRmls
dGVyRnVuY3Rpb246OlR5cGU6OkZFVGlsZSwgICAgICAgICAgICAgICJGRVRpbGUiX3MgICAgICAg
ICAgICAgIH0sCisgICAgICAgICAgICB7IEZpbHRlckZ1bmN0aW9uOjpUeXBlOjpGRVR1cmJ1bGVu
Y2UsICAgICAgICAiRkVUdXJidWxlbmNlIl9zICAgICAgICB9LAorCisgICAgICAgICAgICB7IEZp
bHRlckZ1bmN0aW9uOjpUeXBlOjpTb3VyY2VBbHBoYSwgICAgICAgICAiU291cmNlQWxwaGEiX3Mg
ICAgICAgICB9LAorICAgICAgICAgICAgeyBGaWx0ZXJGdW5jdGlvbjo6VHlwZTo6U291cmNlR3Jh
cGhpYywgICAgICAgIlNvdXJjZUdyYXBoaWMiX3MgICAgICAgfQorCisgICAgICAgIH07CisgICAg
ICAgIHJldHVybiBmaWx0ZXJOYW1lczsKKyAgICB9KCkpOworICAgIAorICAgIHJldHVybiBmaWx0
ZXJOYW1lcy5nZXQoKTsKK30KKworY29uc3QgQXRvbVN0cmluZyYgRmlsdGVyRnVuY3Rpb246OmZp
bHRlck5hbWUoVHlwZSBmaWx0ZXJUeXBlKQoreworICAgIGF1dG8gaXQgPSBmaWx0ZXJOYW1lcygp
LmZpbmQoZmlsdGVyVHlwZSk7CisgICAgQVNTRVJUKGl0ICE9IGZpbHRlck5hbWVzKCkuZW5kKCkp
OworICAgIHJldHVybiBpdC0+dmFsdWU7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRmlsdGVy
RnVuY3Rpb24uaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRmls
dGVyRnVuY3Rpb24uaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4yN2JlOTg0YzRkMTc3NThmNjcxYWMyZjdkYzU2MTJm
OWUxZDIyOGRhCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvZmlsdGVycy9GaWx0ZXJGdW5jdGlvbi5oCkBAIC0wLDAgKzEsMTI4IEBACisvKgorICog
Q29weXJpZ2h0IChDKSAyMDIxIEFwcGxlIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgor
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRp
b24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMg
SVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBE
SVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVU
T1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJ
QUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNT
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAor
ICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0Yg
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisj
aW5jbHVkZSAiRmxvYXRSZWN0LmgiCisjaW5jbHVkZSAiSW50UmVjdEV4dGVudC5oIgorI2luY2x1
ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CisjaW5jbHVkZSA8d3RmL3RleHQvQXRvbVN0cmluZy5oPgor
CituYW1lc3BhY2UgV1RGIHsKK2NsYXNzIFRleHRTdHJlYW07Cit9CisKK25hbWVzcGFjZSBXZWJD
b3JlIHsKKworY2xhc3MgRmlsdGVyOworCitjbGFzcyBGaWx0ZXJGdW5jdGlvbiA6IHB1YmxpYyBS
ZWZDb3VudGVkPEZpbHRlckZ1bmN0aW9uPiB7CitwdWJsaWM6CisgICAgZW51bSBjbGFzcyBUeXBl
IDogdWludDhfdCB7CisgICAgICAgIENTU0ZpbHRlciwKKyAgICAgICAgU1ZHRmlsdGVyLAorCisg
ICAgICAgIEZFTWluaW11bSwKKworICAgICAgICBGRUJsZW5kID0gRkVNaW5pbXVtLAorICAgICAg
ICBGRUNvbG9yTWF0cml4LAorICAgICAgICBGRUNvbXBvbmVudFRyYW5zZmVyLAorICAgICAgICBG
RUNvbXBvc2l0ZSwKKyAgICAgICAgRkVDb252b2x2ZU1hdHJpeCwKKyAgICAgICAgRkVEaWZmdXNl
TGlnaHRpbmcsCisgICAgICAgIEZFRGlzcGxhY2VtZW50TWFwLAorICAgICAgICBGRURyb3BTaGFk
b3csCisgICAgICAgIEZFRmxvb2QsCisgICAgICAgIEZFR2F1c3NpYW5CbHVyLAorICAgICAgICBG
RUltYWdlLAorICAgICAgICBGRU1lcmdlLAorICAgICAgICBGRU1vcnBob2xvZ3ksCisgICAgICAg
IEZFT2Zmc2V0LAorICAgICAgICBGRVNwZWN1bGFyTGlnaHRpbmcsCisgICAgICAgIEZFVGlsZSwK
KyAgICAgICAgRkVUdXJidWxlbmNlLAorICAgICAgICBTb3VyY2VBbHBoYSwKKyAgICAgICAgU291
cmNlR3JhcGhpYywKKworICAgICAgICBGRU1heGltdW0gPSBTb3VyY2VHcmFwaGljCisgICAgfTsK
KworICAgIEZpbHRlckZ1bmN0aW9uKFR5cGUpOworICAgIHZpcnR1YWwgfkZpbHRlckZ1bmN0aW9u
KCkgPSBkZWZhdWx0OworCisgICAgVHlwZSBmaWx0ZXJUeXBlKCkgY29uc3QgeyByZXR1cm4gbV9m
aWx0ZXJUeXBlOyB9CisKKyAgICBib29sIGlzQ1NTRmlsdGVyKCkgY29uc3QgeyByZXR1cm4gbV9m
aWx0ZXJUeXBlID09IFR5cGU6OkNTU0ZpbHRlcjsgfQorICAgIGJvb2wgaXNTVkdGaWx0ZXIoKSBj
b25zdCB7IHJldHVybiBtX2ZpbHRlclR5cGUgPT0gVHlwZTo6U1ZHRmlsdGVyOyB9CisgICAgYm9v
bCBpc0ZpbHRlcigpIGNvbnN0IHsgcmV0dXJuIG1fZmlsdGVyVHlwZSA9PSBUeXBlOjpDU1NGaWx0
ZXIgfHwgbV9maWx0ZXJUeXBlID09IFR5cGU6OlNWR0ZpbHRlcjsgfQorICAgIGJvb2wgaXNGaWx0
ZXJFZmZlY3QoKSBjb25zdCB7IHJldHVybiBtX2ZpbHRlclR5cGUgPj0gVHlwZTo6RkVNaW5pbXVt
ICYmIG1fZmlsdGVyVHlwZSA8PSBUeXBlOjpGRU1heGltdW07IH0KKworICAgIHN0YXRpYyBjb25z
dCBBdG9tU3RyaW5nJiBmaWx0ZXJOYW1lKFR5cGUpOworICAgIHN0YXRpYyBjb25zdCBBdG9tU3Ry
aW5nJiBzb3VyY2VBbHBoYU5hbWUoKSB7IHJldHVybiBmaWx0ZXJOYW1lKFR5cGU6OlNvdXJjZUFs
cGhhKTsgfQorICAgIHN0YXRpYyBjb25zdCBBdG9tU3RyaW5nJiBzb3VyY2VHcmFwaGljTmFtZSgp
IHsgcmV0dXJuIGZpbHRlck5hbWUoVHlwZTo6U291cmNlR3JhcGhpYyk7IH0KKyAgICBjb25zdCBB
dG9tU3RyaW5nJiBmaWx0ZXJOYW1lKCkgY29uc3QgeyByZXR1cm4gZmlsdGVyTmFtZShtX2ZpbHRl
clR5cGUpOyB9CisKKyAgICB2aXJ0dWFsIEludE91dHNldHMgb3V0c2V0cygpIGNvbnN0IHsgcmV0
dXJuIHsgfTsgfQorICAgIHZpcnR1YWwgdm9pZCBhcHBseShjb25zdCBGaWx0ZXImKSB7IH0KKyAg
ICB2aXJ0dWFsIHZvaWQgY2xlYXJSZXN1bHQoKSB7IH0KKworcHJpdmF0ZToKKyAgICBUeXBlIG1f
ZmlsdGVyVHlwZTsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworbmFtZXNwYWNlIFdU
RiB7CisKK3RlbXBsYXRlPD4gc3RydWN0IEVudW1UcmFpdHM8V2ViQ29yZTo6RmlsdGVyRnVuY3Rp
b246OlR5cGU+IHsKKyAgICB1c2luZyB2YWx1ZXMgPSBFbnVtVmFsdWVzPAorICAgICAgICBXZWJD
b3JlOjpGaWx0ZXJGdW5jdGlvbjo6VHlwZSwKKworICAgICAgICBXZWJDb3JlOjpGaWx0ZXJGdW5j
dGlvbjo6VHlwZTo6Q1NTRmlsdGVyLAorICAgICAgICBXZWJDb3JlOjpGaWx0ZXJGdW5jdGlvbjo6
VHlwZTo6U1ZHRmlsdGVyLAorCisgICAgICAgIFdlYkNvcmU6OkZpbHRlckZ1bmN0aW9uOjpUeXBl
OjpGRUJsZW5kLAorICAgICAgICBXZWJDb3JlOjpGaWx0ZXJGdW5jdGlvbjo6VHlwZTo6RkVDb2xv
ck1hdHJpeCwKKyAgICAgICAgV2ViQ29yZTo6RmlsdGVyRnVuY3Rpb246OlR5cGU6OkZFQ29tcG9u
ZW50VHJhbnNmZXIsCisgICAgICAgIFdlYkNvcmU6OkZpbHRlckZ1bmN0aW9uOjpUeXBlOjpGRUNv
bXBvc2l0ZSwKKyAgICAgICAgV2ViQ29yZTo6RmlsdGVyRnVuY3Rpb246OlR5cGU6OkZFQ29udm9s
dmVNYXRyaXgsCisgICAgICAgIFdlYkNvcmU6OkZpbHRlckZ1bmN0aW9uOjpUeXBlOjpGRURpZmZ1
c2VMaWdodGluZywKKyAgICAgICAgV2ViQ29yZTo6RmlsdGVyRnVuY3Rpb246OlR5cGU6OkZFRGlz
cGxhY2VtZW50TWFwLAorICAgICAgICBXZWJDb3JlOjpGaWx0ZXJGdW5jdGlvbjo6VHlwZTo6RkVE
cm9wU2hhZG93LAorICAgICAgICBXZWJDb3JlOjpGaWx0ZXJGdW5jdGlvbjo6VHlwZTo6RkVGbG9v
ZCwKKyAgICAgICAgV2ViQ29yZTo6RmlsdGVyRnVuY3Rpb246OlR5cGU6OkZFR2F1c3NpYW5CbHVy
LAorICAgICAgICBXZWJDb3JlOjpGaWx0ZXJGdW5jdGlvbjo6VHlwZTo6RkVJbWFnZSwKKyAgICAg
ICAgV2ViQ29yZTo6RmlsdGVyRnVuY3Rpb246OlR5cGU6OkZFTWVyZ2UsCisgICAgICAgIFdlYkNv
cmU6OkZpbHRlckZ1bmN0aW9uOjpUeXBlOjpGRU1vcnBob2xvZ3ksCisgICAgICAgIFdlYkNvcmU6
OkZpbHRlckZ1bmN0aW9uOjpUeXBlOjpGRU9mZnNldCwKKyAgICAgICAgV2ViQ29yZTo6RmlsdGVy
RnVuY3Rpb246OlR5cGU6OkZFU3BlY3VsYXJMaWdodGluZywKKyAgICAgICAgV2ViQ29yZTo6Rmls
dGVyRnVuY3Rpb246OlR5cGU6OkZFVGlsZSwKKyAgICAgICAgV2ViQ29yZTo6RmlsdGVyRnVuY3Rp
b246OlR5cGU6OkZFVHVyYnVsZW5jZSwKKyAgICAgICAgV2ViQ29yZTo6RmlsdGVyRnVuY3Rpb246
OlR5cGU6OlNvdXJjZUFscGhhLAorICAgICAgICBXZWJDb3JlOjpGaWx0ZXJGdW5jdGlvbjo6VHlw
ZTo6U291cmNlR3JhcGhpYworICAgID47Cit9OworCit9IC8vIG5hbWVzcGFjZSBXVEYKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvU291cmNlQWxw
aGEuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9Tb3VyY2VB
bHBoYS5jcHAKaW5kZXggNzY0OWYwNThhYzg2OWI1NTRhZjBkYzUwN2ZmZjkwOTBhZDZjZjNhMy4u
ZTEwNGE4ZDIwODYwZWY4MDI5YWY3M2FlOTEzYTk0N2VlMWNlNjg3YSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9Tb3VyY2VBbHBoYS5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9Tb3VyY2VBbHBoYS5j
cHAKQEAgLTIzLDEwICsyMyw3IEBACiAjaW5jbHVkZSAiQ29sb3IuaCIKICNpbmNsdWRlICJGaWx0
ZXIuaCIKICNpbmNsdWRlICJHcmFwaGljc0NvbnRleHQuaCIKLSNpbmNsdWRlIDx3dGYvTmV2ZXJE
ZXN0cm95ZWQuaD4KLSNpbmNsdWRlIDx3dGYvU3RkTGliRXh0cmFzLmg+CiAjaW5jbHVkZSA8d3Rm
L3RleHQvVGV4dFN0cmVhbS5oPgotI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgogCiBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAKQEAgLTM1LDE5ICszMiwyMCBAQCBSZWY8U291cmNlQWxwaGE+
IFNvdXJjZUFscGhhOjpjcmVhdGUoRmlsdGVyRWZmZWN0JiBzb3VyY2VFZmZlY3QpCiAgICAgcmV0
dXJuIGFkb3B0UmVmKCpuZXcgU291cmNlQWxwaGEoc291cmNlRWZmZWN0KSk7CiB9CiAKLWNvbnN0
IEF0b21TdHJpbmcmIFNvdXJjZUFscGhhOjplZmZlY3ROYW1lKCkKK1NvdXJjZUFscGhhOjpTb3Vy
Y2VBbHBoYShGaWx0ZXJFZmZlY3QmIHNvdXJjZUVmZmVjdCkKKyAgICA6IEZpbHRlckVmZmVjdChG
aWx0ZXJFZmZlY3Q6OlR5cGU6OlNvdXJjZUFscGhhKQogewotICAgIHN0YXRpYyBNYWluVGhyZWFk
TmV2ZXJEZXN0cm95ZWQ8Y29uc3QgQXRvbVN0cmluZz4gc19lZmZlY3ROYW1lKCJTb3VyY2VBbHBo
YSIsIEF0b21TdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKTsKLSAgICByZXR1cm4gc19lZmZl
Y3ROYW1lOworICAgIHNldE9wZXJhdGluZ0NvbG9yU3BhY2Uoc291cmNlRWZmZWN0Lm9wZXJhdGlu
Z0NvbG9yU3BhY2UoKSk7CisgICAgaW5wdXRFZmZlY3RzKCkuYXBwZW5kKCZzb3VyY2VFZmZlY3Qp
OwogfQogCi12b2lkIFNvdXJjZUFscGhhOjpkZXRlcm1pbmVBYnNvbHV0ZVBhaW50UmVjdCgpCit2
b2lkIFNvdXJjZUFscGhhOjpkZXRlcm1pbmVBYnNvbHV0ZVBhaW50UmVjdChjb25zdCBGaWx0ZXIm
IGZpbHRlcikKIHsKLSAgICBpbnB1dEVmZmVjdCgwKS0+ZGV0ZXJtaW5lQWJzb2x1dGVQYWludFJl
Y3QoKTsKKyAgICBpbnB1dEVmZmVjdCgwKS0+ZGV0ZXJtaW5lQWJzb2x1dGVQYWludFJlY3QoZmls
dGVyKTsKICAgICBzZXRBYnNvbHV0ZVBhaW50UmVjdChpbnB1dEVmZmVjdCgwKS0+YWJzb2x1dGVQ
YWludFJlY3QoKSk7CiB9CiAKLXZvaWQgU291cmNlQWxwaGE6OnBsYXRmb3JtQXBwbHlTb2Z0d2Fy
ZSgpCit2b2lkIFNvdXJjZUFscGhhOjpwbGF0Zm9ybUFwcGx5U29mdHdhcmUoY29uc3QgRmlsdGVy
JikKIHsKICAgICBJbWFnZUJ1ZmZlciogcmVzdWx0SW1hZ2UgPSBjcmVhdGVJbWFnZUJ1ZmZlclJl
c3VsdCgpOwogICAgIGlmICghcmVzdWx0SW1hZ2UpCkBAIC02OSwxMSArNjcsNCBAQCBUZXh0U3Ry
ZWFtJiBTb3VyY2VBbHBoYTo6ZXh0ZXJuYWxSZXByZXNlbnRhdGlvbihUZXh0U3RyZWFtJiB0cywg
UmVwcmVzZW50YXRpb25UeQogICAgIHJldHVybiB0czsKIH0KIAotU291cmNlQWxwaGE6OlNvdXJj
ZUFscGhhKEZpbHRlckVmZmVjdCYgc291cmNlRWZmZWN0KQotICAgIDogRmlsdGVyRWZmZWN0KHNv
dXJjZUVmZmVjdC5maWx0ZXIoKSwgVHlwZTo6U291cmNlQWxwaGEpCi17Ci0gICAgc2V0T3BlcmF0
aW5nQ29sb3JTcGFjZShzb3VyY2VFZmZlY3Qub3BlcmF0aW5nQ29sb3JTcGFjZSgpKTsKLSAgICBp
bnB1dEVmZmVjdHMoKS5hcHBlbmQoJnNvdXJjZUVmZmVjdCk7Ci19Ci0KIH0gLy8gbmFtZXNwYWNl
IFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Zp
bHRlcnMvU291cmNlQWxwaGEuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Zp
bHRlcnMvU291cmNlQWxwaGEuaAppbmRleCA2NjI5YTM2N2ZkNDMyNDJkMWM0YWFkZTY0YzU2MWU4
NjRhMzk0OTBmLi41MmEzOWE0OTI0MTYxMWUwMTE0NDE3YTZhMDRmNjZmMDljNjEwMzA0IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL1NvdXJjZUFs
cGhhLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9Tb3Vy
Y2VBbHBoYS5oCkBAIC0xNyw4ICsxNyw3IEBACiAgKiBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVT
QS4KICAqLwogCi0jaWZuZGVmIFNvdXJjZUFscGhhX2gKLSNkZWZpbmUgU291cmNlQWxwaGFfaAor
I3ByYWdtYSBvbmNlCiAKICNpbmNsdWRlICJGaWx0ZXJFZmZlY3QuaCIKIApAQCAtMjgsMTkgKzI3
LDE2IEBAIGNsYXNzIFNvdXJjZUFscGhhIDogcHVibGljIEZpbHRlckVmZmVjdCB7CiBwdWJsaWM6
ICAgICAgICAKICAgICBzdGF0aWMgUmVmPFNvdXJjZUFscGhhPiBjcmVhdGUoRmlsdGVyRWZmZWN0
Jik7CiAKLSAgICBzdGF0aWMgY29uc3QgQXRvbVN0cmluZyYgZWZmZWN0TmFtZSgpOworICAgIHN0
YXRpYyBjb25zdCBBdG9tU3RyaW5nJiBlZmZlY3ROYW1lKCkgeyByZXR1cm4gRmlsdGVyRWZmZWN0
Ojpzb3VyY2VBbHBoYU5hbWUoKTsgfQogCiBwcml2YXRlOgogICAgIGV4cGxpY2l0IFNvdXJjZUFs
cGhhKEZpbHRlckVmZmVjdCYpOwotICAgIEZpbHRlckVmZmVjdFR5cGUgZmlsdGVyRWZmZWN0VHlw
ZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIEZpbHRlckVmZmVjdFR5cGVTb3VyY2VJbnB1dDsg
fQogCi0gICAgY29uc3QgY2hhciogZmlsdGVyTmFtZSgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuICJT
b3VyY2VBbHBoYSI7IH0KLQotICAgIHZvaWQgcGxhdGZvcm1BcHBseVNvZnR3YXJlKCkgb3ZlcnJp
ZGU7Ci0gICAgdm9pZCBkZXRlcm1pbmVBYnNvbHV0ZVBhaW50UmVjdCgpIG92ZXJyaWRlOworICAg
IHZvaWQgcGxhdGZvcm1BcHBseVNvZnR3YXJlKGNvbnN0IEZpbHRlciYpIG92ZXJyaWRlOworICAg
IHZvaWQgZGV0ZXJtaW5lQWJzb2x1dGVQYWludFJlY3QoY29uc3QgRmlsdGVyJikgb3ZlcnJpZGU7
CiAgICAgV1RGOjpUZXh0U3RyZWFtJiBleHRlcm5hbFJlcHJlc2VudGF0aW9uKFdURjo6VGV4dFN0
cmVhbSYsIFJlcHJlc2VudGF0aW9uVHlwZSkgY29uc3Qgb3ZlcnJpZGU7CiB9OwogCiB9IC8vbmFt
ZXNwYWNlIFdlYkNvcmUKIAotI2VuZGlmIC8vIFNvdXJjZUFscGhhX2gKK1NQRUNJQUxJWkVfVFlQ
RV9UUkFJVFNfRklMVEVSX0VGRkVDVChTb3VyY2VBbHBoYSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvU291cmNlR3JhcGhpYy5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL1NvdXJjZUdyYXBoaWMuY3BwCmlu
ZGV4IDg4YTM2YTQxMDI2YmQzYTU4NTQ0NzgyMDI3NGMxMTA3ZDc4MzkyZTkuLmU3MmYwZjBiNzhi
OTZlN2NlZDk4ZTFlZDFkMDEzNWQzNTIyN2E1YzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvU291cmNlR3JhcGhpYy5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9Tb3VyY2VHcmFwaGljLmNwcApAQCAt
MjIsMzYgKzIyLDI4IEBACiAKICNpbmNsdWRlICJGaWx0ZXIuaCIKICNpbmNsdWRlICJHcmFwaGlj
c0NvbnRleHQuaCIKLSNpbmNsdWRlIDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4KLSNpbmNsdWRlIDx3
dGYvU3RkTGliRXh0cmFzLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvVGV4dFN0cmVhbS5oPgotI2lu
Y2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLVJl
ZjxTb3VyY2VHcmFwaGljPiBTb3VyY2VHcmFwaGljOjpjcmVhdGUoRmlsdGVyJiBmaWx0ZXIpCitS
ZWY8U291cmNlR3JhcGhpYz4gU291cmNlR3JhcGhpYzo6Y3JlYXRlKCkKIHsKLSAgICByZXR1cm4g
YWRvcHRSZWYoKm5ldyBTb3VyY2VHcmFwaGljKGZpbHRlcikpOworICAgIHJldHVybiBhZG9wdFJl
ZigqbmV3IFNvdXJjZUdyYXBoaWMoKSk7CiB9CiAKLWNvbnN0IEF0b21TdHJpbmcmIFNvdXJjZUdy
YXBoaWM6OmVmZmVjdE5hbWUoKQorU291cmNlR3JhcGhpYzo6U291cmNlR3JhcGhpYygpCisgICAg
OiBGaWx0ZXJFZmZlY3QoVHlwZTo6U291cmNlR3JhcGhpYykKIHsKLSAgICBzdGF0aWMgTWFpblRo
cmVhZE5ldmVyRGVzdHJveWVkPGNvbnN0IEF0b21TdHJpbmc+IHNfZWZmZWN0TmFtZSgiU291cmNl
R3JhcGhpYyIsIEF0b21TdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKTsKLSAgICByZXR1cm4g
c19lZmZlY3ROYW1lOwogfQogCi12b2lkIFNvdXJjZUdyYXBoaWM6OmRldGVybWluZUFic29sdXRl
UGFpbnRSZWN0KCkKK3ZvaWQgU291cmNlR3JhcGhpYzo6ZGV0ZXJtaW5lQWJzb2x1dGVQYWludFJl
Y3QoY29uc3QgRmlsdGVyJiBmaWx0ZXIpCiB7Ci0gICAgRmlsdGVyJiBmaWx0ZXIgPSB0aGlzLT5m
aWx0ZXIoKTsKICAgICBGbG9hdFJlY3QgcGFpbnRSZWN0ID0gZmlsdGVyLnNvdXJjZUltYWdlUmVj
dCgpOwotICAgIHBhaW50UmVjdC5zY2FsZShmaWx0ZXIuZmlsdGVyUmVzb2x1dGlvbigpLndpZHRo
KCksIGZpbHRlci5maWx0ZXJSZXNvbHV0aW9uKCkuaGVpZ2h0KCkpOwogICAgIHNldEFic29sdXRl
UGFpbnRSZWN0KGVuY2xvc2luZ0ludFJlY3QocGFpbnRSZWN0KSk7CiB9CiAKLXZvaWQgU291cmNl
R3JhcGhpYzo6cGxhdGZvcm1BcHBseVNvZnR3YXJlKCkKK3ZvaWQgU291cmNlR3JhcGhpYzo6cGxh
dGZvcm1BcHBseVNvZnR3YXJlKGNvbnN0IEZpbHRlciYgZmlsdGVyKQogewotICAgIEZpbHRlciYg
ZmlsdGVyID0gdGhpcy0+ZmlsdGVyKCk7Ci0KICAgICBJbWFnZUJ1ZmZlciogcmVzdWx0SW1hZ2Ug
PSBjcmVhdGVJbWFnZUJ1ZmZlclJlc3VsdCgpOwogICAgIEltYWdlQnVmZmVyKiBzb3VyY2VJbWFn
ZSA9IGZpbHRlci5zb3VyY2VJbWFnZSgpOwogICAgIGlmICghcmVzdWx0SW1hZ2UgfHwgIXNvdXJj
ZUltYWdlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmls
dGVycy9Tb3VyY2VHcmFwaGljLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9m
aWx0ZXJzL1NvdXJjZUdyYXBoaWMuaAppbmRleCAzMGNkNTRmMjQ1M2JiYThhMzc3NjMyMTMyOGVm
MjEwNmI3ZmNhNWJmLi42YmM0N2ExZjAxYjU1NjM2NWI5NTc5NWU2YTA1YzVhZWIxNjMxMmU0IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL1NvdXJj
ZUdyYXBoaWMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJz
L1NvdXJjZUdyYXBoaWMuaApAQCAtMTgsNDEgKzE4LDI2IEBACiAgKiBCb3N0b24sIE1BIDAyMTEw
LTEzMDEsIFVTQS4KICAqLwogCi0jaWZuZGVmIFNvdXJjZUdyYXBoaWNfaAotI2RlZmluZSBTb3Vy
Y2VHcmFwaGljX2gKKyNwcmFnbWEgb25jZQogCiAjaW5jbHVkZSAiRmlsdGVyRWZmZWN0LmgiCi0j
aW5jbHVkZSAiRmlsdGVyLmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgU291cmNl
R3JhcGhpYyA6IHB1YmxpYyBGaWx0ZXJFZmZlY3QgewogcHVibGljOiAgICAgICAgCi0gICAgc3Rh
dGljIFJlZjxTb3VyY2VHcmFwaGljPiBjcmVhdGUoRmlsdGVyJik7CisgICAgc3RhdGljIFJlZjxT
b3VyY2VHcmFwaGljPiBjcmVhdGUoKTsKIAotICAgIHN0YXRpYyBjb25zdCBBdG9tU3RyaW5nJiBl
ZmZlY3ROYW1lKCk7CisgICAgc3RhdGljIGNvbnN0IEF0b21TdHJpbmcmIGVmZmVjdE5hbWUoKSB7
IHJldHVybiBGaWx0ZXJFZmZlY3Q6OnNvdXJjZUdyYXBoaWNOYW1lKCk7IH0KIAogcHJpdmF0ZToK
LSAgICBTb3VyY2VHcmFwaGljKEZpbHRlciYgZmlsdGVyKQotICAgICAgICA6IEZpbHRlckVmZmVj
dChmaWx0ZXIsIFR5cGU6OlNvdXJjZUdyYXBoaWMpCi0gICAgewotICAgICAgICBzZXRPcGVyYXRp
bmdDb2xvclNwYWNlKERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQigpKTsKLSAgICB9CisgICAg
U291cmNlR3JhcGhpYygpOwogCi0gICAgY29uc3QgY2hhciogZmlsdGVyTmFtZSgpIGNvbnN0IGZp
bmFsIHsgcmV0dXJuICJTb3VyY2VHcmFwaGljIjsgfQotCi0gICAgdm9pZCBkZXRlcm1pbmVBYnNv
bHV0ZVBhaW50UmVjdCgpIG92ZXJyaWRlOwotICAgIHZvaWQgcGxhdGZvcm1BcHBseVNvZnR3YXJl
KCkgb3ZlcnJpZGU7CisgICAgdm9pZCBkZXRlcm1pbmVBYnNvbHV0ZVBhaW50UmVjdChjb25zdCBG
aWx0ZXImKSBvdmVycmlkZTsKKyAgICB2b2lkIHBsYXRmb3JtQXBwbHlTb2Z0d2FyZShjb25zdCBG
aWx0ZXImKSBvdmVycmlkZTsKICAgICBXVEY6OlRleHRTdHJlYW0mIGV4dGVybmFsUmVwcmVzZW50
YXRpb24oV1RGOjpUZXh0U3RyZWFtJiwgUmVwcmVzZW50YXRpb25UeXBlKSBjb25zdCBvdmVycmlk
ZTsKLQotICAgIEZpbHRlckVmZmVjdFR5cGUgZmlsdGVyRWZmZWN0VHlwZSgpIGNvbnN0IG92ZXJy
aWRlIHsgcmV0dXJuIEZpbHRlckVmZmVjdFR5cGVTb3VyY2VJbnB1dDsgfQogfTsKIAogfSAvL25h
bWVzcGFjZSBXZWJDb3JlCiAKLVNQRUNJQUxJWkVfVFlQRV9UUkFJVFNfQkVHSU4oV2ViQ29yZTo6
U291cmNlR3JhcGhpYykKLSAgICBzdGF0aWMgYm9vbCBpc1R5cGUoY29uc3QgV2ViQ29yZTo6Rmls
dGVyRWZmZWN0JiBlZmZlY3QpIHsgcmV0dXJuIGVmZmVjdC5maWx0ZXJFZmZlY3RDbGFzc1R5cGUo
KSA9PSBXZWJDb3JlOjpGaWx0ZXJFZmZlY3Q6OlR5cGU6OlNvdXJjZUdyYXBoaWM7IH0KLVNQRUNJ
QUxJWkVfVFlQRV9UUkFJVFNfRU5EKCkKLQotCi0jZW5kaWYgLy8gU291cmNlR3JhcGhpY19oCitT
UEVDSUFMSVpFX1RZUEVfVFJBSVRTX0ZJTFRFUl9FRkZFQ1QoU291cmNlR3JhcGhpYykKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9SZWFsdGltZUlu
Y29taW5nQXVkaW9Tb3VyY2VDb2NvYS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRp
YXN0cmVhbS9tYWMvUmVhbHRpbWVJbmNvbWluZ0F1ZGlvU291cmNlQ29jb2EuY3BwCmluZGV4IDlh
ZWE1ZjFjMDcyYzA5YmYwNjNmNDk5OWUwM2IyMTllODVkN2UyZDkuLmQ2N2IyOWI1MWM3OTFlNTIx
NWViOTg5NzVmZDljZWI2YWM0ZmMwNzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL21lZGlhc3RyZWFtL21hYy9SZWFsdGltZUluY29taW5nQXVkaW9Tb3VyY2VDb2NvYS5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL1JlYWx0aW1lSW5j
b21pbmdBdWRpb1NvdXJjZUNvY29hLmNwcApAQCAtMzMsNiArMzMsNyBAQAogI2luY2x1ZGUgIkF1
ZGlvU3RyZWFtRGVzY3JpcHRpb24uaCIKICNpbmNsdWRlICJDQUF1ZGlvU3RyZWFtRGVzY3JpcHRp
b24uaCIKICNpbmNsdWRlICJMaWJXZWJSVENBdWRpb0Zvcm1hdC5oIgorI2luY2x1ZGUgIkxpYldl
YlJUQ0F1ZGlvTW9kdWxlLmgiCiAjaW5jbHVkZSAiTG9nZ2luZy5oIgogI2luY2x1ZGUgPHBhbC9h
dmZvdW5kYXRpb24vTWVkaWFUaW1lQVZGb3VuZGF0aW9uLmg+CiAjaW5jbHVkZSA8d3RmL0Zhc3RN
YWxsb2MuaD4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9DU1NGaWx0ZXIu
Y3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0NTU0ZpbHRlci5jcHAKaW5kZXggOWQ2YzJj
ZGQwNWY5NDliNjM0Y2FmYTE3YWMxN2RiNWMwMmI1YjYxMS4uZGZiZmY5YmY5ZjI1MGNmNDE0NzRk
NTc5ZGVhY2RlMTIwMzhmYjg5NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L0NTU0ZpbHRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0NTU0ZpbHRlci5j
cHAKQEAgLTI3LDkgKzI3LDYgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJDU1NG
aWx0ZXIuaCIKIAotI2luY2x1ZGUgIkNhY2hlZFNWR0RvY3VtZW50LmgiCi0jaW5jbHVkZSAiQ2Fj
aGVkU1ZHRG9jdW1lbnRSZWZlcmVuY2UuaCIKLSNpbmNsdWRlICJFbGVtZW50SXRlcmF0b3IuaCIK
ICNpbmNsdWRlICJGRUNvbG9yTWF0cml4LmgiCiAjaW5jbHVkZSAiRkVDb21wb25lbnRUcmFuc2Zl
ci5oIgogI2luY2x1ZGUgIkZFRHJvcFNoYWRvdy5oIgpAQCAtMzgsNDUgKzM1LDE4MyBAQAogI2lu
Y2x1ZGUgIkZpbHRlckVmZmVjdFJlbmRlcmVyLmgiCiAjaW5jbHVkZSAiTG9nZ2luZy5oIgogI2lu
Y2x1ZGUgIlJlZmVyZW5jZWRTVkdSZXNvdXJjZXMuaCIKLSNpbmNsdWRlICJSZW5kZXJMYXllci5o
IgotI2luY2x1ZGUgIlNWR0VsZW1lbnQuaCIKKyNpbmNsdWRlICJTVkdEb2N1bWVudEV4dGVuc2lv
bnMuaCIKKyNpbmNsdWRlICJTVkdGaWx0ZXIuaCIKICNpbmNsdWRlICJTVkdGaWx0ZXJCdWlsZGVy
LmgiCiAjaW5jbHVkZSAiU1ZHRmlsdGVyRWxlbWVudC5oIgotI2luY2x1ZGUgIlNWR0ZpbHRlclBy
aW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlcy5oIgotI2luY2x1ZGUgIlNvdXJjZUFscGhhLmgiCiAj
aW5jbHVkZSAiU291cmNlR3JhcGhpYy5oIgotI2luY2x1ZGUgPGFsZ29yaXRobT4KLSNpbmNsdWRl
IDx3dGYvTWF0aEV4dHJhcy5oPgotCi0jaWYgVVNFKERJUkVDVDJEKQotI2luY2x1ZGUgPGQyZDEu
aD4KLSNlbmRpZgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLVJlZjxDU1NGaWx0ZXI+IENTU0Zp
bHRlcjo6Y3JlYXRlKCkKK1JlZjxDU1NGaWx0ZXI+IENTU0ZpbHRlcjo6Y3JlYXRlKGNvbnN0IEZp
bHRlck9wZXJhdGlvbnMmIG9wZXJhdGlvbnMsIFJlbmRlcmluZ01vZGUgcmVuZGVyaW5nTW9kZSwg
ZmxvYXQgc2NhbGVGYWN0b3IpCiB7Ci0gICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgQ1NTRmlsdGVy
KTsKKyAgICBib29sIGhhc0ZpbHRlclRoYXRNb3Zlc1BpeGVscyA9IG9wZXJhdGlvbnMuaGFzRmls
dGVyVGhhdE1vdmVzUGl4ZWxzKCk7CisgICAgYm9vbCBoYXNGaWx0ZXJUaGF0U2hvdWxkQmVSZXN0
cmljdGVkQnlTZWN1cml0eU9yaWdpbiA9IG9wZXJhdGlvbnMuaGFzRmlsdGVyVGhhdFNob3VsZEJl
UmVzdHJpY3RlZEJ5U2VjdXJpdHlPcmlnaW4oKTsKKworICAgIGF1dG8gZmlsdGVyID0gYWRvcHRS
ZWYoKm5ldyBDU1NGaWx0ZXIoaGFzRmlsdGVyVGhhdE1vdmVzUGl4ZWxzLCBoYXNGaWx0ZXJUaGF0
U2hvdWxkQmVSZXN0cmljdGVkQnlTZWN1cml0eU9yaWdpbiwgc2NhbGVGYWN0b3IpKTsKKworICAg
IGZpbHRlci0+c2V0UmVuZGVyaW5nTW9kZShyZW5kZXJpbmdNb2RlKTsKKyAgICByZXR1cm4gZmls
dGVyOwogfQogCi1DU1NGaWx0ZXI6OkNTU0ZpbHRlcigpCi0gICAgOiBGaWx0ZXIoRmxvYXRTaXpl
IHsgMSwgMSB9KQotICAgICwgbV9zb3VyY2VHcmFwaGljKFNvdXJjZUdyYXBoaWM6OmNyZWF0ZSgq
dGhpcykpCitDU1NGaWx0ZXI6OkNTU0ZpbHRlcihib29sIGhhc0ZpbHRlclRoYXRNb3Zlc1BpeGVs
cywgYm9vbCBoYXNGaWx0ZXJUaGF0U2hvdWxkQmVSZXN0cmljdGVkQnlTZWN1cml0eU9yaWdpbiwg
ZmxvYXQgc2NhbGVGYWN0b3IpCisgICAgOiBGaWx0ZXIoRmlsdGVyOjpUeXBlOjpDU1NGaWx0ZXIs
IEZsb2F0U2l6ZSB7IHNjYWxlRmFjdG9yLCBzY2FsZUZhY3RvciB9KQorICAgICwgbV9oYXNGaWx0
ZXJUaGF0TW92ZXNQaXhlbHMoaGFzRmlsdGVyVGhhdE1vdmVzUGl4ZWxzKQorICAgICwgbV9oYXNG
aWx0ZXJUaGF0U2hvdWxkQmVSZXN0cmljdGVkQnlTZWN1cml0eU9yaWdpbihoYXNGaWx0ZXJUaGF0
U2hvdWxkQmVSZXN0cmljdGVkQnlTZWN1cml0eU9yaWdpbikKKyAgICAsIG1fc291cmNlR3JhcGhp
YyhTb3VyY2VHcmFwaGljOjpjcmVhdGUoKSkKIHsKIH0KIAotQ1NTRmlsdGVyOjp+Q1NTRmlsdGVy
KCkgPSBkZWZhdWx0Oworc3RhdGljIFJlZlB0cjxGaWx0ZXJFZmZlY3Q+IGNyZWF0ZUJsdXJFZmZl
Y3QoY29uc3QgQmx1ckZpbHRlck9wZXJhdGlvbiYgYmx1ck9wZXJhdGlvbiwgRmlsdGVyQ29uc3Vt
ZXIgY29uc3VtZXIpCit7CisgICAgZmxvYXQgc3RkRGV2aWF0aW9uID0gZmxvYXRWYWx1ZUZvckxl
bmd0aChibHVyT3BlcmF0aW9uLnN0ZERldmlhdGlvbigpLCAwKTsKKyAgICByZXR1cm4gRkVHYXVz
c2lhbkJsdXI6OmNyZWF0ZShzdGREZXZpYXRpb24sIHN0ZERldmlhdGlvbiwgY29uc3VtZXIgPT0g
RmlsdGVyQ29uc3VtZXI6OkZpbHRlclByb3BlcnR5ID8gRURHRU1PREVfTk9ORSA6IEVER0VNT0RF
X0RVUExJQ0FURSk7Cit9CiAKLUdyYXBoaWNzQ29udGV4dCogQ1NTRmlsdGVyOjppbnB1dENvbnRl
eHQoKQorc3RhdGljIFJlZlB0cjxGaWx0ZXJFZmZlY3Q+IGNyZWF0ZUJyaWdodG5lc3NFZmZlY3Qo
Y29uc3QgQmFzaWNDb21wb25lbnRUcmFuc2ZlckZpbHRlck9wZXJhdGlvbiYgY29tcG9uZW50VHJh
bnNmZXJPcGVyYXRpb24pCiB7Ci0gICAgcmV0dXJuIHNvdXJjZUltYWdlKCkgPyAmc291cmNlSW1h
Z2UoKS0+Y29udGV4dCgpIDogbnVsbHB0cjsKKyAgICBDb21wb25lbnRUcmFuc2ZlckZ1bmN0aW9u
IHRyYW5zZmVyRnVuY3Rpb247CisgICAgdHJhbnNmZXJGdW5jdGlvbi50eXBlID0gRkVDT01QT05F
TlRUUkFOU0ZFUl9UWVBFX0xJTkVBUjsKKyAgICB0cmFuc2ZlckZ1bmN0aW9uLnNsb3BlID0gbmFy
cm93UHJlY2lzaW9uVG9GbG9hdChjb21wb25lbnRUcmFuc2Zlck9wZXJhdGlvbi5hbW91bnQoKSk7
CisgICAgdHJhbnNmZXJGdW5jdGlvbi5pbnRlcmNlcHQgPSAwOworCisgICAgQ29tcG9uZW50VHJh
bnNmZXJGdW5jdGlvbiBudWxsRnVuY3Rpb247CisgICAgcmV0dXJuIEZFQ29tcG9uZW50VHJhbnNm
ZXI6OmNyZWF0ZSh0cmFuc2ZlckZ1bmN0aW9uLCB0cmFuc2ZlckZ1bmN0aW9uLCB0cmFuc2ZlckZ1
bmN0aW9uLCBudWxsRnVuY3Rpb24pOworfQorCitzdGF0aWMgUmVmUHRyPEZpbHRlckVmZmVjdD4g
Y3JlYXRlQ29udHJhc3RFZmZlY3QoY29uc3QgQmFzaWNDb21wb25lbnRUcmFuc2ZlckZpbHRlck9w
ZXJhdGlvbiYgY29tcG9uZW50VHJhbnNmZXJPcGVyYXRpb24pCit7CisgICAgQ29tcG9uZW50VHJh
bnNmZXJGdW5jdGlvbiB0cmFuc2ZlckZ1bmN0aW9uOworICAgIHRyYW5zZmVyRnVuY3Rpb24udHlw
ZSA9IEZFQ09NUE9ORU5UVFJBTlNGRVJfVFlQRV9MSU5FQVI7CisgICAgZmxvYXQgYW1vdW50ID0g
bmFycm93UHJlY2lzaW9uVG9GbG9hdChjb21wb25lbnRUcmFuc2Zlck9wZXJhdGlvbi5hbW91bnQo
KSk7CisgICAgdHJhbnNmZXJGdW5jdGlvbi5zbG9wZSA9IGFtb3VudDsKKyAgICB0cmFuc2ZlckZ1
bmN0aW9uLmludGVyY2VwdCA9IC0wLjUgKiBhbW91bnQgKyAwLjU7CisKKyAgICBDb21wb25lbnRU
cmFuc2ZlckZ1bmN0aW9uIG51bGxGdW5jdGlvbjsKKyAgICByZXR1cm4gRkVDb21wb25lbnRUcmFu
c2Zlcjo6Y3JlYXRlKHRyYW5zZmVyRnVuY3Rpb24sIHRyYW5zZmVyRnVuY3Rpb24sIHRyYW5zZmVy
RnVuY3Rpb24sIG51bGxGdW5jdGlvbik7Cit9CisKK3N0YXRpYyBSZWZQdHI8RmlsdGVyRWZmZWN0
PiBjcmVhdGVEcm9wU2hhZG93RWZmZWN0KGNvbnN0IERyb3BTaGFkb3dGaWx0ZXJPcGVyYXRpb24m
IGRyb3BTaGFkb3dPcGVyYXRpb24pCit7CisgICAgZmxvYXQgc3RkID0gZHJvcFNoYWRvd09wZXJh
dGlvbi5zdGREZXZpYXRpb24oKTsKKyAgICByZXR1cm4gRkVEcm9wU2hhZG93OjpjcmVhdGUoc3Rk
LCBzdGQsIGRyb3BTaGFkb3dPcGVyYXRpb24ueCgpLCBkcm9wU2hhZG93T3BlcmF0aW9uLnkoKSwg
ZHJvcFNoYWRvd09wZXJhdGlvbi5jb2xvcigpLCAxKTsKK30KKworc3RhdGljIFJlZlB0cjxGaWx0
ZXJFZmZlY3Q+IGNyZWF0ZUdyYXlTY2FsZUVmZmVjdChjb25zdCBCYXNpY0NvbG9yTWF0cml4Rmls
dGVyT3BlcmF0aW9uJiBjb2xvck1hdHJpeE9wZXJhdGlvbikKK3sKKyAgICBkb3VibGUgb25lTWlu
dXNBbW91bnQgPSBjbGFtcFRvKDEgLSBjb2xvck1hdHJpeE9wZXJhdGlvbi5hbW91bnQoKSwgMC4w
LCAxLjApOworCisgICAgLy8gU2VlIGh0dHBzOi8vZHZjcy53My5vcmcvaGcvRlhURi9yYXctZmls
ZS90aXAvZmlsdGVycy9pbmRleC5odG1sI2dyYXlzY2FsZUVxdWl2YWxlbnQKKyAgICAvLyBmb3Ig
aW5mb3JtYXRpb24gb24gcGFyYW1ldGVycy4KKworICAgIFZlY3RvcjxmbG9hdD4gaW5wdXRQYXJh
bWV0ZXJzIHsKKyAgICAgICAgbmFycm93UHJlY2lzaW9uVG9GbG9hdCgwLjIxMjYgKyAwLjc4NzQg
KiBvbmVNaW51c0Ftb3VudCksCisgICAgICAgIG5hcnJvd1ByZWNpc2lvblRvRmxvYXQoMC43MTUy
IC0gMC43MTUyICogb25lTWludXNBbW91bnQpLAorICAgICAgICBuYXJyb3dQcmVjaXNpb25Ub0Zs
b2F0KDAuMDcyMiAtIDAuMDcyMiAqIG9uZU1pbnVzQW1vdW50KSwKKyAgICAgICAgMCwKKyAgICAg
ICAgMCwKKworICAgICAgICBuYXJyb3dQcmVjaXNpb25Ub0Zsb2F0KDAuMjEyNiAtIDAuMjEyNiAq
IG9uZU1pbnVzQW1vdW50KSwKKyAgICAgICAgbmFycm93UHJlY2lzaW9uVG9GbG9hdCgwLjcxNTIg
KyAwLjI4NDggKiBvbmVNaW51c0Ftb3VudCksCisgICAgICAgIG5hcnJvd1ByZWNpc2lvblRvRmxv
YXQoMC4wNzIyIC0gMC4wNzIyICogb25lTWludXNBbW91bnQpLAorICAgICAgICAwLAorICAgICAg
ICAwLAorCisgICAgICAgIG5hcnJvd1ByZWNpc2lvblRvRmxvYXQoMC4yMTI2IC0gMC4yMTI2ICog
b25lTWludXNBbW91bnQpLAorICAgICAgICBuYXJyb3dQcmVjaXNpb25Ub0Zsb2F0KDAuNzE1MiAt
IDAuNzE1MiAqIG9uZU1pbnVzQW1vdW50KSwKKyAgICAgICAgbmFycm93UHJlY2lzaW9uVG9GbG9h
dCgwLjA3MjIgKyAwLjkyNzggKiBvbmVNaW51c0Ftb3VudCksCisgICAgICAgIDAsCisgICAgICAg
IDAsCisKKyAgICAgICAgMCwKKyAgICAgICAgMCwKKyAgICAgICAgMCwKKyAgICAgICAgMSwKKyAg
ICAgICAgMCwKKyAgICB9OworCisgICAgcmV0dXJuIEZFQ29sb3JNYXRyaXg6OmNyZWF0ZShGRUNP
TE9STUFUUklYX1RZUEVfTUFUUklYLCBXVEZNb3ZlKGlucHV0UGFyYW1ldGVycykpOworfQorCitz
dGF0aWMgUmVmUHRyPEZpbHRlckVmZmVjdD4gY3JlYXRlSHVlUm90YXRlRWZmZWN0KGNvbnN0IEJh
c2ljQ29sb3JNYXRyaXhGaWx0ZXJPcGVyYXRpb24mIGNvbG9yTWF0cml4T3BlcmF0aW9uKQorewor
ICAgIFZlY3RvcjxmbG9hdD4gaW5wdXRQYXJhbWV0ZXJzIHsgbmFycm93UHJlY2lzaW9uVG9GbG9h
dChjb2xvck1hdHJpeE9wZXJhdGlvbi5hbW91bnQoKSkgfTsKKyAgICByZXR1cm4gRkVDb2xvck1h
dHJpeDo6Y3JlYXRlKEZFQ09MT1JNQVRSSVhfVFlQRV9IVUVST1RBVEUsIFdURk1vdmUoaW5wdXRQ
YXJhbWV0ZXJzKSk7CiB9CiAKLVJlZlB0cjxGaWx0ZXJFZmZlY3Q+IENTU0ZpbHRlcjo6YnVpbGRS
ZWZlcmVuY2VGaWx0ZXIoUmVuZGVyRWxlbWVudCYgcmVuZGVyZXIsIEZpbHRlckVmZmVjdCYgcHJl
dmlvdXNFZmZlY3QsIFJlZmVyZW5jZUZpbHRlck9wZXJhdGlvbiYgZmlsdGVyT3BlcmF0aW9uKQor
c3RhdGljIFJlZlB0cjxGaWx0ZXJFZmZlY3Q+IGNyZWF0ZUludmVydEVmZmVjdChjb25zdCBCYXNp
Y0NvbXBvbmVudFRyYW5zZmVyRmlsdGVyT3BlcmF0aW9uJiBjb21wb25lbnRUcmFuc2Zlck9wZXJh
dGlvbikKIHsKLSAgICBhdXRvKiBmaWx0ZXJFbGVtZW50ID0gcmVuZGVyZXIuZW5zdXJlUmVmZXJl
bmNlZFNWR1Jlc291cmNlcygpLnJlZmVyZW5jZWRGaWx0ZXJFbGVtZW50KHJlbmRlcmVyLmRvY3Vt
ZW50KCksIGZpbHRlck9wZXJhdGlvbik7CisgICAgQ29tcG9uZW50VHJhbnNmZXJGdW5jdGlvbiB0
cmFuc2ZlckZ1bmN0aW9uOworICAgIHRyYW5zZmVyRnVuY3Rpb24udHlwZSA9IEZFQ09NUE9ORU5U
VFJBTlNGRVJfVFlQRV9MSU5FQVI7CisgICAgZmxvYXQgYW1vdW50ID0gbmFycm93UHJlY2lzaW9u
VG9GbG9hdChjb21wb25lbnRUcmFuc2Zlck9wZXJhdGlvbi5hbW91bnQoKSk7CisgICAgdHJhbnNm
ZXJGdW5jdGlvbi5zbG9wZSA9IDEgLSAyICogYW1vdW50OworICAgIHRyYW5zZmVyRnVuY3Rpb24u
aW50ZXJjZXB0ID0gYW1vdW50OworCisgICAgQ29tcG9uZW50VHJhbnNmZXJGdW5jdGlvbiBudWxs
RnVuY3Rpb247CisgICAgcmV0dXJuIEZFQ29tcG9uZW50VHJhbnNmZXI6OmNyZWF0ZSh0cmFuc2Zl
ckZ1bmN0aW9uLCB0cmFuc2ZlckZ1bmN0aW9uLCB0cmFuc2ZlckZ1bmN0aW9uLCBudWxsRnVuY3Rp
b24pOworfQorCitzdGF0aWMgUmVmUHRyPEZpbHRlckVmZmVjdD4gY3JlYXRlT3BhY2l0eUVmZmVj
dChjb25zdCBCYXNpY0NvbXBvbmVudFRyYW5zZmVyRmlsdGVyT3BlcmF0aW9uJiBjb21wb25lbnRU
cmFuc2Zlck9wZXJhdGlvbikKK3sKKyAgICBDb21wb25lbnRUcmFuc2ZlckZ1bmN0aW9uIHRyYW5z
ZmVyRnVuY3Rpb247CisgICAgdHJhbnNmZXJGdW5jdGlvbi50eXBlID0gRkVDT01QT05FTlRUUkFO
U0ZFUl9UWVBFX0xJTkVBUjsKKyAgICBmbG9hdCBhbW91bnQgPSBuYXJyb3dQcmVjaXNpb25Ub0Zs
b2F0KGNvbXBvbmVudFRyYW5zZmVyT3BlcmF0aW9uLmFtb3VudCgpKTsKKyAgICB0cmFuc2ZlckZ1
bmN0aW9uLnNsb3BlID0gYW1vdW50OworICAgIHRyYW5zZmVyRnVuY3Rpb24uaW50ZXJjZXB0ID0g
MDsKKworICAgIENvbXBvbmVudFRyYW5zZmVyRnVuY3Rpb24gbnVsbEZ1bmN0aW9uOworICAgIHJl
dHVybiBGRUNvbXBvbmVudFRyYW5zZmVyOjpjcmVhdGUobnVsbEZ1bmN0aW9uLCBudWxsRnVuY3Rp
b24sIG51bGxGdW5jdGlvbiwgdHJhbnNmZXJGdW5jdGlvbik7Cit9CisKK3N0YXRpYyBSZWZQdHI8
RmlsdGVyRWZmZWN0PiBjcmVhdGVTYXR1cmF0ZUVmZmVjdChjb25zdCBCYXNpY0NvbG9yTWF0cml4
RmlsdGVyT3BlcmF0aW9uJiBjb2xvck1hdHJpeE9wZXJhdGlvbikKK3sKKyAgICBWZWN0b3I8Zmxv
YXQ+IGlucHV0UGFyYW1ldGVycyB7IG5hcnJvd1ByZWNpc2lvblRvRmxvYXQoY29sb3JNYXRyaXhP
cGVyYXRpb24uYW1vdW50KCkpIH07CisgICAgcmV0dXJuIEZFQ29sb3JNYXRyaXg6OmNyZWF0ZShG
RUNPTE9STUFUUklYX1RZUEVfU0FUVVJBVEUsIFdURk1vdmUoaW5wdXRQYXJhbWV0ZXJzKSk7Cit9
CisKK3N0YXRpYyBSZWZQdHI8RmlsdGVyRWZmZWN0PiBjcmVhdGVTZXBpYUVmZmVjdChjb25zdCBC
YXNpY0NvbG9yTWF0cml4RmlsdGVyT3BlcmF0aW9uJiBjb2xvck1hdHJpeE9wZXJhdGlvbikKK3sK
KyAgICBkb3VibGUgb25lTWludXNBbW91bnQgPSBjbGFtcFRvKDEgLSBjb2xvck1hdHJpeE9wZXJh
dGlvbi5hbW91bnQoKSwgMC4wLCAxLjApOworCisgICAgLy8gU2VlIGh0dHBzOi8vZHZjcy53My5v
cmcvaGcvRlhURi9yYXctZmlsZS90aXAvZmlsdGVycy9pbmRleC5odG1sI3NlcGlhRXF1aXZhbGVu
dAorICAgIC8vIGZvciBpbmZvcm1hdGlvbiBvbiBwYXJhbWV0ZXJzLgorCisgICAgVmVjdG9yPGZs
b2F0PiBpbnB1dFBhcmFtZXRlcnMgeworICAgICAgICBuYXJyb3dQcmVjaXNpb25Ub0Zsb2F0KDAu
MzkzICsgMC42MDcgKiBvbmVNaW51c0Ftb3VudCksCisgICAgICAgIG5hcnJvd1ByZWNpc2lvblRv
RmxvYXQoMC43NjkgLSAwLjc2OSAqIG9uZU1pbnVzQW1vdW50KSwKKyAgICAgICAgbmFycm93UHJl
Y2lzaW9uVG9GbG9hdCgwLjE4OSAtIDAuMTg5ICogb25lTWludXNBbW91bnQpLAorICAgICAgICAw
LAorICAgICAgICAwLAorCisgICAgICAgIG5hcnJvd1ByZWNpc2lvblRvRmxvYXQoMC4zNDkgLSAw
LjM0OSAqIG9uZU1pbnVzQW1vdW50KSwKKyAgICAgICAgbmFycm93UHJlY2lzaW9uVG9GbG9hdCgw
LjY4NiArIDAuMzE0ICogb25lTWludXNBbW91bnQpLAorICAgICAgICBuYXJyb3dQcmVjaXNpb25U
b0Zsb2F0KDAuMTY4IC0gMC4xNjggKiBvbmVNaW51c0Ftb3VudCksCisgICAgICAgIDAsCisgICAg
ICAgIDAsCisKKyAgICAgICAgbmFycm93UHJlY2lzaW9uVG9GbG9hdCgwLjI3MiAtIDAuMjcyICog
b25lTWludXNBbW91bnQpLAorICAgICAgICBuYXJyb3dQcmVjaXNpb25Ub0Zsb2F0KDAuNTM0IC0g
MC41MzQgKiBvbmVNaW51c0Ftb3VudCksCisgICAgICAgIG5hcnJvd1ByZWNpc2lvblRvRmxvYXQo
MC4xMzEgKyAwLjg2OSAqIG9uZU1pbnVzQW1vdW50KSwKKyAgICAgICAgMCwKKyAgICAgICAgMCwK
KworICAgICAgICAwLAorICAgICAgICAwLAorICAgICAgICAwLAorICAgICAgICAxLAorICAgICAg
ICAwLAorICAgIH07CisKKyAgICByZXR1cm4gRkVDb2xvck1hdHJpeDo6Y3JlYXRlKEZFQ09MT1JN
QVRSSVhfVFlQRV9NQVRSSVgsIFdURk1vdmUoaW5wdXRQYXJhbWV0ZXJzKSk7Cit9CisKK3N0YXRp
YyBSZWZQdHI8U1ZHRmlsdGVyPiBjcmVhdGVTVkdGaWx0ZXIoQ1NTRmlsdGVyJiBmaWx0ZXIsIGNv
bnN0IFJlZmVyZW5jZUZpbHRlck9wZXJhdGlvbiYgZmlsdGVyT3BlcmF0aW9uLCBSZW5kZXJFbGVt
ZW50JiByZW5kZXJlciwgRmlsdGVyRWZmZWN0JiBwcmV2aW91c0VmZmVjdCkKK3sKKyAgICBhdXRv
JiByZWZlcmVuY2VkU1ZHUmVzb3VyY2VzID0gcmVuZGVyZXIuZW5zdXJlUmVmZXJlbmNlZFNWR1Jl
c291cmNlcygpOworICAgIGF1dG8qIGZpbHRlckVsZW1lbnQgPSByZWZlcmVuY2VkU1ZHUmVzb3Vy
Y2VzLnJlZmVyZW5jZWRGaWx0ZXJFbGVtZW50KHJlbmRlcmVyLmRvY3VtZW50KCksIGZpbHRlck9w
ZXJhdGlvbik7CisKICAgICBpZiAoIWZpbHRlckVsZW1lbnQpIHsKLSAgICAgICAgTE9HX1dJVEhf
U1RSRUFNKEZpbHRlcnMsIHN0cmVhbSA8PCAiQ1NTRmlsdGVyICIgPDwgdGhpcyA8PCAiIGJ1aWxk
UmVmZXJlbmNlRmlsdGVyOiBmYWlsZWQgdG8gZmluZCBmaWx0ZXIgcmVuZGVyZXIsIGFkZGluZyBw
ZW5kaW5nIHJlc291cmNlICIgPDwgZmlsdGVyT3BlcmF0aW9uLmZyYWdtZW50KCkpOworICAgICAg
ICBMT0dfV0lUSF9TVFJFQU0oRmlsdGVycywgc3RyZWFtIDw8ICIgYnVpbGRSZWZlcmVuY2VGaWx0
ZXI6IGZhaWxlZCB0byBmaW5kIGZpbHRlciByZW5kZXJlciwgYWRkaW5nIHBlbmRpbmcgcmVzb3Vy
Y2UgIiA8PCBmaWx0ZXJPcGVyYXRpb24uZnJhZ21lbnQoKSk7CiAgICAgICAgIC8vIEFsdGhvdWdo
IHdlIGRpZCBub3QgZmluZCB0aGUgcmVmZXJlbmNlZCBmaWx0ZXIsIGl0IG1pZ2h0IGV4aXN0IGxh
dGVyIGluIHRoZSBkb2N1bWVudC4KICAgICAgICAgLy8gRklYTUU6IFRoaXMgc2tpcHMgYW5vbnlt
b3VzIFJlbmRlck9iamVjdHMuIDxodHRwczovL3dlYmtpdC5vcmcvYi8xMzEwODU+CiAgICAgICAg
IC8vIEZJWE1FOiBVbmNsZWFyIGlmIHRoaXMgZG9lcyBhbnl0aGluZy4KQEAgLTg1LDIzMSArMjIw
LDEyMyBAQCBSZWZQdHI8RmlsdGVyRWZmZWN0PiBDU1NGaWx0ZXI6OmJ1aWxkUmVmZXJlbmNlRmls
dGVyKFJlbmRlckVsZW1lbnQmIHJlbmRlcmVyLCBGaQogICAgICAgICByZXR1cm4gbnVsbHB0cjsK
ICAgICB9CiAKLSAgICBhdXRvIGJ1aWxkZXIgPSBtYWtlVW5pcXVlPFNWR0ZpbHRlckJ1aWxkZXI+
KCZwcmV2aW91c0VmZmVjdCk7Ci0gICAgbV9zb3VyY2VBbHBoYSA9IGJ1aWxkZXItPmdldEVmZmVj
dEJ5SWQoU291cmNlQWxwaGE6OmVmZmVjdE5hbWUoKSk7Ci0KLSAgICBSZWZQdHI8RmlsdGVyRWZm
ZWN0PiBlZmZlY3Q7Ci0gICAgVmVjdG9yPFJlZjxGaWx0ZXJFZmZlY3Q+PiByZWZlcmVuY2VFZmZl
Y3RzOwotCi0gICAgZm9yIChhdXRvJiBlZmZlY3RFbGVtZW50IDogY2hpbGRyZW5PZlR5cGU8U1ZH
RmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVzPigqZmlsdGVyRWxlbWVudCkpIHsKLSAg
ICAgICAgZWZmZWN0ID0gZWZmZWN0RWxlbWVudC5idWlsZChidWlsZGVyLmdldCgpLCAqdGhpcyk7
Ci0gICAgICAgIGlmICghZWZmZWN0KSB7Ci0gICAgICAgICAgICBMT0dfV0lUSF9TVFJFQU0oRmls
dGVycywgc3RyZWFtIDw8ICJDU1NGaWx0ZXIgIiA8PCB0aGlzIDw8ICIgYnVpbGRSZWZlcmVuY2VG
aWx0ZXI6IGZhaWxlZCB0byBidWlsZCBlZmZlY3QgZnJvbSAiIDw8IGVmZmVjdEVsZW1lbnQpOwot
ICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgICAgIH0KKyAgICBTVkdGaWx0ZXJCdWls
ZGVyIGJ1aWxkZXI7CisgICAgcmV0dXJuIFNWR0ZpbHRlcjo6Y3JlYXRlKCpmaWx0ZXJFbGVtZW50
LCBidWlsZGVyLCBmaWx0ZXIuZmlsdGVyU2NhbGUoKSwgZmlsdGVyLnNvdXJjZUltYWdlUmVjdCgp
LCBmaWx0ZXIuZmlsdGVyUmVnaW9uKCksIHByZXZpb3VzRWZmZWN0KTsKK30KIAotICAgICAgICBl
ZmZlY3RFbGVtZW50LnNldFN0YW5kYXJkQXR0cmlidXRlcyhlZmZlY3QuZ2V0KCkpOwotICAgICAg
ICBpZiAoZWZmZWN0RWxlbWVudC5yZW5kZXJlcigpKSB7Ci0jaWYgRU5BQkxFKERFU1RJTkFUSU9O
X0NPTE9SX1NQQUNFX0xJTkVBUl9TUkdCKQotICAgICAgICAgICAgZWZmZWN0LT5zZXRPcGVyYXRp
bmdDb2xvclNwYWNlKGVmZmVjdEVsZW1lbnQucmVuZGVyZXIoKS0+c3R5bGUoKS5zdmdTdHlsZSgp
LmNvbG9ySW50ZXJwb2xhdGlvbkZpbHRlcnMoKSA9PSBDb2xvckludGVycG9sYXRpb246OkxpbmVh
clJHQiA/IERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6TGluZWFyU1JHQigpIDogRGVzdGluYXRpb25D
b2xvclNwYWNlOjpTUkdCKCkpOwotI2Vsc2UKLSAgICAgICAgICAgIGVmZmVjdC0+c2V0T3BlcmF0
aW5nQ29sb3JTcGFjZShEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0IoKSk7Ci0jZW5kaWYKLSAg
ICAgICAgfQotICAgICAgICBidWlsZGVyLT5hZGQoZWZmZWN0RWxlbWVudC5yZXN1bHQoKSwgZWZm
ZWN0KTsKLSAgICAgICAgcmVmZXJlbmNlRWZmZWN0cy5hcHBlbmQoKmVmZmVjdCk7Ci0gICAgfQot
ICAgIAotICAgIG1fZWZmZWN0cy5hcHBlbmRWZWN0b3IoV1RGTW92ZShyZWZlcmVuY2VFZmZlY3Rz
KSk7Ci0gICAgcmV0dXJuIGVmZmVjdDsKK3N0YXRpYyB2b2lkIHNldHVwTGFzdEVmZmVjdFByb3Bl
cnRpZXMoRmlsdGVyRWZmZWN0JiBlZmZlY3QsIEZpbHRlckNvbnN1bWVyIGNvbnN1bWVyKQorewor
ICAgIC8vIFVubGlrZSBTVkcgRmlsdGVycyBhbmQgQ1NTRmlsdGVySW1hZ2VzLCBmaWx0ZXIgZnVu
Y3Rpb25zIG9uIHRoZSBmaWx0ZXIKKyAgICAvLyBwcm9wZXJ0eSBhcHBsaWVkIGhlcmUgc2hvdWxk
IG5vdCBjbGlwIHRvIHRoZWlyIHByaW1pdGl2ZSBzdWJyZWdpb25zLgorICAgIGVmZmVjdC5zZXRD
bGlwc1RvQm91bmRzKGNvbnN1bWVyID09IEZpbHRlckNvbnN1bWVyOjpGaWx0ZXJGdW5jdGlvbik7
CisgICAgZWZmZWN0LnNldE9wZXJhdGluZ0NvbG9yU3BhY2UoRGVzdGluYXRpb25Db2xvclNwYWNl
OjpTUkdCKCkpOwogfQogCiBib29sIENTU0ZpbHRlcjo6YnVpbGQoUmVuZGVyRWxlbWVudCYgcmVu
ZGVyZXIsIGNvbnN0IEZpbHRlck9wZXJhdGlvbnMmIG9wZXJhdGlvbnMsIEZpbHRlckNvbnN1bWVy
IGNvbnN1bWVyKQogewotICAgIG1faGFzRmlsdGVyVGhhdE1vdmVzUGl4ZWxzID0gb3BlcmF0aW9u
cy5oYXNGaWx0ZXJUaGF0TW92ZXNQaXhlbHMoKTsKLSAgICBtX2hhc0ZpbHRlclRoYXRTaG91bGRC
ZVJlc3RyaWN0ZWRCeVNlY3VyaXR5T3JpZ2luID0gb3BlcmF0aW9ucy5oYXNGaWx0ZXJUaGF0U2hv
dWxkQmVSZXN0cmljdGVkQnlTZWN1cml0eU9yaWdpbigpOwotCi0gICAgbV9lZmZlY3RzLmNsZWFy
KCk7CisgICAgbV9mdW5jdGlvbnMuY2xlYXIoKTsKICAgICBtX291dHNldHMgPSB7IH07CiAKICAg
ICBSZWZQdHI8RmlsdGVyRWZmZWN0PiBwcmV2aW91c0VmZmVjdCA9IG1fc291cmNlR3JhcGhpYy5w
dHIoKTsKKyAgICBSZWZQdHI8U1ZHRmlsdGVyPiBmaWx0ZXI7CisKICAgICBmb3IgKGF1dG8mIG9w
ZXJhdGlvbiA6IG9wZXJhdGlvbnMub3BlcmF0aW9ucygpKSB7CiAgICAgICAgIFJlZlB0cjxGaWx0
ZXJFZmZlY3Q+IGVmZmVjdDsKLSAgICAgICAgYXV0byYgZmlsdGVyT3BlcmF0aW9uID0gKm9wZXJh
dGlvbjsKLSAgICAgICAgc3dpdGNoIChmaWx0ZXJPcGVyYXRpb24udHlwZSgpKSB7Ci0gICAgICAg
IGNhc2UgRmlsdGVyT3BlcmF0aW9uOjpSRUZFUkVOQ0U6IHsKLSAgICAgICAgICAgIGF1dG8mIHJl
ZmVyZW5jZU9wZXJhdGlvbiA9IGRvd25jYXN0PFJlZmVyZW5jZUZpbHRlck9wZXJhdGlvbj4oZmls
dGVyT3BlcmF0aW9uKTsKLSAgICAgICAgICAgIGVmZmVjdCA9IGJ1aWxkUmVmZXJlbmNlRmlsdGVy
KHJlbmRlcmVyLCAqcHJldmlvdXNFZmZlY3QsIHJlZmVyZW5jZU9wZXJhdGlvbik7CisgICAgICAg
IAorICAgICAgICBzd2l0Y2ggKG9wZXJhdGlvbi0+dHlwZSgpKSB7CisgICAgICAgIGNhc2UgRmls
dGVyT3BlcmF0aW9uOjpBUFBMRV9JTlZFUlRfTElHSFRORVNTOgorICAgICAgICAgICAgQVNTRVJU
X05PVF9SRUFDSEVEKCk7IC8vIEFQUExFX0lOVkVSVF9MSUdIVE5FU1MgaXMgb25seSB1c2VkIGlu
IC1hcHBsZS1jb2xvci1maWx0ZXIuCiAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgfQotICAg
ICAgICBjYXNlIEZpbHRlck9wZXJhdGlvbjo6R1JBWVNDQUxFOiB7Ci0gICAgICAgICAgICBhdXRv
JiBjb2xvck1hdHJpeE9wZXJhdGlvbiA9IGRvd25jYXN0PEJhc2ljQ29sb3JNYXRyaXhGaWx0ZXJP
cGVyYXRpb24+KGZpbHRlck9wZXJhdGlvbik7Ci0gICAgICAgICAgICBkb3VibGUgb25lTWludXNB
bW91bnQgPSBjbGFtcFRvKDEgLSBjb2xvck1hdHJpeE9wZXJhdGlvbi5hbW91bnQoKSwgMC4wLCAx
LjApOwotCi0gICAgICAgICAgICAvLyBTZWUgaHR0cHM6Ly9kdmNzLnczLm9yZy9oZy9GWFRGL3Jh
dy1maWxlL3RpcC9maWx0ZXJzL2luZGV4Lmh0bWwjZ3JheXNjYWxlRXF1aXZhbGVudAotICAgICAg
ICAgICAgLy8gZm9yIGluZm9ybWF0aW9uIG9uIHBhcmFtZXRlcnMuCi0KLSAgICAgICAgICAgIFZl
Y3RvcjxmbG9hdD4gaW5wdXRQYXJhbWV0ZXJzIHsKLSAgICAgICAgICAgICAgICBuYXJyb3dQcmVj
aXNpb25Ub0Zsb2F0KDAuMjEyNiArIDAuNzg3NCAqIG9uZU1pbnVzQW1vdW50KSwKLSAgICAgICAg
ICAgICAgICBuYXJyb3dQcmVjaXNpb25Ub0Zsb2F0KDAuNzE1MiAtIDAuNzE1MiAqIG9uZU1pbnVz
QW1vdW50KSwKLSAgICAgICAgICAgICAgICBuYXJyb3dQcmVjaXNpb25Ub0Zsb2F0KDAuMDcyMiAt
IDAuMDcyMiAqIG9uZU1pbnVzQW1vdW50KSwKLSAgICAgICAgICAgICAgICAwLAotICAgICAgICAg
ICAgICAgIDAsCi0KLSAgICAgICAgICAgICAgICBuYXJyb3dQcmVjaXNpb25Ub0Zsb2F0KDAuMjEy
NiAtIDAuMjEyNiAqIG9uZU1pbnVzQW1vdW50KSwKLSAgICAgICAgICAgICAgICBuYXJyb3dQcmVj
aXNpb25Ub0Zsb2F0KDAuNzE1MiArIDAuMjg0OCAqIG9uZU1pbnVzQW1vdW50KSwKLSAgICAgICAg
ICAgICAgICBuYXJyb3dQcmVjaXNpb25Ub0Zsb2F0KDAuMDcyMiAtIDAuMDcyMiAqIG9uZU1pbnVz
QW1vdW50KSwKLSAgICAgICAgICAgICAgICAwLAotICAgICAgICAgICAgICAgIDAsCi0KLSAgICAg
ICAgICAgICAgICBuYXJyb3dQcmVjaXNpb25Ub0Zsb2F0KDAuMjEyNiAtIDAuMjEyNiAqIG9uZU1p
bnVzQW1vdW50KSwKLSAgICAgICAgICAgICAgICBuYXJyb3dQcmVjaXNpb25Ub0Zsb2F0KDAuNzE1
MiAtIDAuNzE1MiAqIG9uZU1pbnVzQW1vdW50KSwKLSAgICAgICAgICAgICAgICBuYXJyb3dQcmVj
aXNpb25Ub0Zsb2F0KDAuMDcyMiArIDAuOTI3OCAqIG9uZU1pbnVzQW1vdW50KSwKLSAgICAgICAg
ICAgICAgICAwLAotICAgICAgICAgICAgICAgIDAsCi0KLSAgICAgICAgICAgICAgICAwLAotICAg
ICAgICAgICAgICAgIDAsCi0gICAgICAgICAgICAgICAgMCwKLSAgICAgICAgICAgICAgICAxLAot
ICAgICAgICAgICAgICAgIDAsCi0gICAgICAgICAgICB9OwotCi0gICAgICAgICAgICBlZmZlY3Qg
PSBGRUNvbG9yTWF0cml4OjpjcmVhdGUoKnRoaXMsIEZFQ09MT1JNQVRSSVhfVFlQRV9NQVRSSVgs
IFdURk1vdmUoaW5wdXRQYXJhbWV0ZXJzKSk7CisgICAgICAgICAgICAgICAgCisgICAgICAgIGNh
c2UgRmlsdGVyT3BlcmF0aW9uOjpCTFVSOgorICAgICAgICAgICAgZWZmZWN0ID0gY3JlYXRlQmx1
ckVmZmVjdChkb3duY2FzdDxCbHVyRmlsdGVyT3BlcmF0aW9uPigqb3BlcmF0aW9uKSwgY29uc3Vt
ZXIpOwogICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIH0KLSAgICAgICAgY2FzZSBGaWx0ZXJP
cGVyYXRpb246OlNFUElBOiB7Ci0gICAgICAgICAgICBhdXRvJiBjb2xvck1hdHJpeE9wZXJhdGlv
biA9IGRvd25jYXN0PEJhc2ljQ29sb3JNYXRyaXhGaWx0ZXJPcGVyYXRpb24+KGZpbHRlck9wZXJh
dGlvbik7Ci0gICAgICAgICAgICBkb3VibGUgb25lTWludXNBbW91bnQgPSBjbGFtcFRvKDEgLSBj
b2xvck1hdHJpeE9wZXJhdGlvbi5hbW91bnQoKSwgMC4wLCAxLjApOwotCi0gICAgICAgICAgICAv
LyBTZWUgaHR0cHM6Ly9kdmNzLnczLm9yZy9oZy9GWFRGL3Jhdy1maWxlL3RpcC9maWx0ZXJzL2lu
ZGV4Lmh0bWwjc2VwaWFFcXVpdmFsZW50Ci0gICAgICAgICAgICAvLyBmb3IgaW5mb3JtYXRpb24g
b24gcGFyYW1ldGVycy4KLQotICAgICAgICAgICAgVmVjdG9yPGZsb2F0PiBpbnB1dFBhcmFtZXRl
cnMgewotICAgICAgICAgICAgICAgIG5hcnJvd1ByZWNpc2lvblRvRmxvYXQoMC4zOTMgKyAwLjYw
NyAqIG9uZU1pbnVzQW1vdW50KSwKLSAgICAgICAgICAgICAgICBuYXJyb3dQcmVjaXNpb25Ub0Zs
b2F0KDAuNzY5IC0gMC43NjkgKiBvbmVNaW51c0Ftb3VudCksCi0gICAgICAgICAgICAgICAgbmFy
cm93UHJlY2lzaW9uVG9GbG9hdCgwLjE4OSAtIDAuMTg5ICogb25lTWludXNBbW91bnQpLAotICAg
ICAgICAgICAgICAgIDAsCi0gICAgICAgICAgICAgICAgMCwKLQotICAgICAgICAgICAgICAgIG5h
cnJvd1ByZWNpc2lvblRvRmxvYXQoMC4zNDkgLSAwLjM0OSAqIG9uZU1pbnVzQW1vdW50KSwKLSAg
ICAgICAgICAgICAgICBuYXJyb3dQcmVjaXNpb25Ub0Zsb2F0KDAuNjg2ICsgMC4zMTQgKiBvbmVN
aW51c0Ftb3VudCksCi0gICAgICAgICAgICAgICAgbmFycm93UHJlY2lzaW9uVG9GbG9hdCgwLjE2
OCAtIDAuMTY4ICogb25lTWludXNBbW91bnQpLAotICAgICAgICAgICAgICAgIDAsCi0gICAgICAg
ICAgICAgICAgMCwKLQotICAgICAgICAgICAgICAgIG5hcnJvd1ByZWNpc2lvblRvRmxvYXQoMC4y
NzIgLSAwLjI3MiAqIG9uZU1pbnVzQW1vdW50KSwKLSAgICAgICAgICAgICAgICBuYXJyb3dQcmVj
aXNpb25Ub0Zsb2F0KDAuNTM0IC0gMC41MzQgKiBvbmVNaW51c0Ftb3VudCksCi0gICAgICAgICAg
ICAgICAgbmFycm93UHJlY2lzaW9uVG9GbG9hdCgwLjEzMSArIDAuODY5ICogb25lTWludXNBbW91
bnQpLAotICAgICAgICAgICAgICAgIDAsCi0gICAgICAgICAgICAgICAgMCwKLQotICAgICAgICAg
ICAgICAgIDAsCi0gICAgICAgICAgICAgICAgMCwKLSAgICAgICAgICAgICAgICAwLAotICAgICAg
ICAgICAgICAgIDEsCi0gICAgICAgICAgICAgICAgMCwKLSAgICAgICAgICAgIH07Ci0KLSAgICAg
ICAgICAgIGVmZmVjdCA9IEZFQ29sb3JNYXRyaXg6OmNyZWF0ZSgqdGhpcywgRkVDT0xPUk1BVFJJ
WF9UWVBFX01BVFJJWCwgV1RGTW92ZShpbnB1dFBhcmFtZXRlcnMpKTsKKyAgICAgICAgICAgIAor
ICAgICAgICBjYXNlIEZpbHRlck9wZXJhdGlvbjo6QlJJR0hUTkVTUzoKKyAgICAgICAgICAgIGVm
ZmVjdCA9IGNyZWF0ZUJyaWdodG5lc3NFZmZlY3QoZG93bmNhc3Q8QmFzaWNDb21wb25lbnRUcmFu
c2ZlckZpbHRlck9wZXJhdGlvbj4oKm9wZXJhdGlvbikpOwogICAgICAgICAgICAgYnJlYWs7Ci0g
ICAgICAgIH0KLSAgICAgICAgY2FzZSBGaWx0ZXJPcGVyYXRpb246OlNBVFVSQVRFOiB7Ci0gICAg
ICAgICAgICBhdXRvJiBjb2xvck1hdHJpeE9wZXJhdGlvbiA9IGRvd25jYXN0PEJhc2ljQ29sb3JN
YXRyaXhGaWx0ZXJPcGVyYXRpb24+KGZpbHRlck9wZXJhdGlvbik7Ci0gICAgICAgICAgICBWZWN0
b3I8ZmxvYXQ+IGlucHV0UGFyYW1ldGVycyB7IG5hcnJvd1ByZWNpc2lvblRvRmxvYXQoY29sb3JN
YXRyaXhPcGVyYXRpb24uYW1vdW50KCkpIH07Ci0gICAgICAgICAgICBlZmZlY3QgPSBGRUNvbG9y
TWF0cml4OjpjcmVhdGUoKnRoaXMsIEZFQ09MT1JNQVRSSVhfVFlQRV9TQVRVUkFURSwgV1RGTW92
ZShpbnB1dFBhcmFtZXRlcnMpKTsKKworICAgICAgICBjYXNlIEZpbHRlck9wZXJhdGlvbjo6Q09O
VFJBU1Q6CisgICAgICAgICAgICBlZmZlY3QgPSBjcmVhdGVDb250cmFzdEVmZmVjdChkb3duY2Fz
dDxCYXNpY0NvbXBvbmVudFRyYW5zZmVyRmlsdGVyT3BlcmF0aW9uPigqb3BlcmF0aW9uKSk7CiAg
ICAgICAgICAgICBicmVhazsKLSAgICAgICAgfQotICAgICAgICBjYXNlIEZpbHRlck9wZXJhdGlv
bjo6SFVFX1JPVEFURTogewotICAgICAgICAgICAgYXV0byYgY29sb3JNYXRyaXhPcGVyYXRpb24g
PSBkb3duY2FzdDxCYXNpY0NvbG9yTWF0cml4RmlsdGVyT3BlcmF0aW9uPihmaWx0ZXJPcGVyYXRp
b24pOwotICAgICAgICAgICAgVmVjdG9yPGZsb2F0PiBpbnB1dFBhcmFtZXRlcnMgeyBuYXJyb3dQ
cmVjaXNpb25Ub0Zsb2F0KGNvbG9yTWF0cml4T3BlcmF0aW9uLmFtb3VudCgpKSB9OwotICAgICAg
ICAgICAgZWZmZWN0ID0gRkVDb2xvck1hdHJpeDo6Y3JlYXRlKCp0aGlzLCBGRUNPTE9STUFUUklY
X1RZUEVfSFVFUk9UQVRFLCBXVEZNb3ZlKGlucHV0UGFyYW1ldGVycykpOworICAgICAgICAgICAg
CisgICAgICAgIGNhc2UgRmlsdGVyT3BlcmF0aW9uOjpEUk9QX1NIQURPVzoKKyAgICAgICAgICAg
IGVmZmVjdCA9IGNyZWF0ZURyb3BTaGFkb3dFZmZlY3QoZG93bmNhc3Q8RHJvcFNoYWRvd0ZpbHRl
ck9wZXJhdGlvbj4oKm9wZXJhdGlvbikpOwogICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIH0K
LSAgICAgICAgY2FzZSBGaWx0ZXJPcGVyYXRpb246OklOVkVSVDogewotICAgICAgICAgICAgYXV0
byYgY29tcG9uZW50VHJhbnNmZXJPcGVyYXRpb24gPSBkb3duY2FzdDxCYXNpY0NvbXBvbmVudFRy
YW5zZmVyRmlsdGVyT3BlcmF0aW9uPihmaWx0ZXJPcGVyYXRpb24pOwotICAgICAgICAgICAgQ29t
cG9uZW50VHJhbnNmZXJGdW5jdGlvbiB0cmFuc2ZlckZ1bmN0aW9uOwotICAgICAgICAgICAgdHJh
bnNmZXJGdW5jdGlvbi50eXBlID0gRkVDT01QT05FTlRUUkFOU0ZFUl9UWVBFX0xJTkVBUjsKLSAg
ICAgICAgICAgIGZsb2F0IGFtb3VudCA9IG5hcnJvd1ByZWNpc2lvblRvRmxvYXQoY29tcG9uZW50
VHJhbnNmZXJPcGVyYXRpb24uYW1vdW50KCkpOwotICAgICAgICAgICAgdHJhbnNmZXJGdW5jdGlv
bi5zbG9wZSA9IDEgLSAyICogYW1vdW50OwotICAgICAgICAgICAgdHJhbnNmZXJGdW5jdGlvbi5p
bnRlcmNlcHQgPSBhbW91bnQ7Ci0KLSAgICAgICAgICAgIENvbXBvbmVudFRyYW5zZmVyRnVuY3Rp
b24gbnVsbEZ1bmN0aW9uOwotICAgICAgICAgICAgZWZmZWN0ID0gRkVDb21wb25lbnRUcmFuc2Zl
cjo6Y3JlYXRlKCp0aGlzLCB0cmFuc2ZlckZ1bmN0aW9uLCB0cmFuc2ZlckZ1bmN0aW9uLCB0cmFu
c2ZlckZ1bmN0aW9uLCBudWxsRnVuY3Rpb24pOworICAgICAgICAgICAgCisgICAgICAgIGNhc2Ug
RmlsdGVyT3BlcmF0aW9uOjpHUkFZU0NBTEU6CisgICAgICAgICAgICBlZmZlY3QgPSBjcmVhdGVH
cmF5U2NhbGVFZmZlY3QoZG93bmNhc3Q8QmFzaWNDb2xvck1hdHJpeEZpbHRlck9wZXJhdGlvbj4o
Km9wZXJhdGlvbikpOwogICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIH0KLSAgICAgICAgY2Fz
ZSBGaWx0ZXJPcGVyYXRpb246OkFQUExFX0lOVkVSVF9MSUdIVE5FU1M6Ci0gICAgICAgICAgICBB
U1NFUlRfTk9UX1JFQUNIRUQoKTsgLy8gQVBQTEVfSU5WRVJUX0xJR0hUTkVTUyBpcyBvbmx5IHVz
ZWQgaW4gLWFwcGxlLWNvbG9yLWZpbHRlci4KKyAgICAgICAgICAgIAorICAgICAgICBjYXNlIEZp
bHRlck9wZXJhdGlvbjo6SFVFX1JPVEFURToKKyAgICAgICAgICAgIGVmZmVjdCA9IGNyZWF0ZUh1
ZVJvdGF0ZUVmZmVjdChkb3duY2FzdDxCYXNpY0NvbG9yTWF0cml4RmlsdGVyT3BlcmF0aW9uPigq
b3BlcmF0aW9uKSk7CiAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgY2FzZSBGaWx0ZXJPcGVy
YXRpb246Ok9QQUNJVFk6IHsKLSAgICAgICAgICAgIGF1dG8mIGNvbXBvbmVudFRyYW5zZmVyT3Bl
cmF0aW9uID0gZG93bmNhc3Q8QmFzaWNDb21wb25lbnRUcmFuc2ZlckZpbHRlck9wZXJhdGlvbj4o
ZmlsdGVyT3BlcmF0aW9uKTsKLSAgICAgICAgICAgIENvbXBvbmVudFRyYW5zZmVyRnVuY3Rpb24g
dHJhbnNmZXJGdW5jdGlvbjsKLSAgICAgICAgICAgIHRyYW5zZmVyRnVuY3Rpb24udHlwZSA9IEZF
Q09NUE9ORU5UVFJBTlNGRVJfVFlQRV9MSU5FQVI7Ci0gICAgICAgICAgICBmbG9hdCBhbW91bnQg
PSBuYXJyb3dQcmVjaXNpb25Ub0Zsb2F0KGNvbXBvbmVudFRyYW5zZmVyT3BlcmF0aW9uLmFtb3Vu
dCgpKTsKLSAgICAgICAgICAgIHRyYW5zZmVyRnVuY3Rpb24uc2xvcGUgPSBhbW91bnQ7Ci0gICAg
ICAgICAgICB0cmFuc2ZlckZ1bmN0aW9uLmludGVyY2VwdCA9IDA7Ci0KLSAgICAgICAgICAgIENv
bXBvbmVudFRyYW5zZmVyRnVuY3Rpb24gbnVsbEZ1bmN0aW9uOwotICAgICAgICAgICAgZWZmZWN0
ID0gRkVDb21wb25lbnRUcmFuc2Zlcjo6Y3JlYXRlKCp0aGlzLCBudWxsRnVuY3Rpb24sIG51bGxG
dW5jdGlvbiwgbnVsbEZ1bmN0aW9uLCB0cmFuc2ZlckZ1bmN0aW9uKTsKKworICAgICAgICBjYXNl
IEZpbHRlck9wZXJhdGlvbjo6SU5WRVJUOgorICAgICAgICAgICAgZWZmZWN0ID0gY3JlYXRlSW52
ZXJ0RWZmZWN0KGRvd25jYXN0PEJhc2ljQ29tcG9uZW50VHJhbnNmZXJGaWx0ZXJPcGVyYXRpb24+
KCpvcGVyYXRpb24pKTsKICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICB9Ci0gICAgICAgIGNh
c2UgRmlsdGVyT3BlcmF0aW9uOjpCUklHSFRORVNTOiB7Ci0gICAgICAgICAgICBhdXRvJiBjb21w
b25lbnRUcmFuc2Zlck9wZXJhdGlvbiA9IGRvd25jYXN0PEJhc2ljQ29tcG9uZW50VHJhbnNmZXJG
aWx0ZXJPcGVyYXRpb24+KGZpbHRlck9wZXJhdGlvbik7Ci0gICAgICAgICAgICBDb21wb25lbnRU
cmFuc2ZlckZ1bmN0aW9uIHRyYW5zZmVyRnVuY3Rpb247Ci0gICAgICAgICAgICB0cmFuc2ZlckZ1
bmN0aW9uLnR5cGUgPSBGRUNPTVBPTkVOVFRSQU5TRkVSX1RZUEVfTElORUFSOwotICAgICAgICAg
ICAgdHJhbnNmZXJGdW5jdGlvbi5zbG9wZSA9IG5hcnJvd1ByZWNpc2lvblRvRmxvYXQoY29tcG9u
ZW50VHJhbnNmZXJPcGVyYXRpb24uYW1vdW50KCkpOwotICAgICAgICAgICAgdHJhbnNmZXJGdW5j
dGlvbi5pbnRlcmNlcHQgPSAwOwotCi0gICAgICAgICAgICBDb21wb25lbnRUcmFuc2ZlckZ1bmN0
aW9uIG51bGxGdW5jdGlvbjsKLSAgICAgICAgICAgIGVmZmVjdCA9IEZFQ29tcG9uZW50VHJhbnNm
ZXI6OmNyZWF0ZSgqdGhpcywgdHJhbnNmZXJGdW5jdGlvbiwgdHJhbnNmZXJGdW5jdGlvbiwgdHJh
bnNmZXJGdW5jdGlvbiwgbnVsbEZ1bmN0aW9uKTsKKyAgICAgICAgICAgIAorICAgICAgICBjYXNl
IEZpbHRlck9wZXJhdGlvbjo6T1BBQ0lUWToKKyAgICAgICAgICAgIGVmZmVjdCA9IGNyZWF0ZU9w
YWNpdHlFZmZlY3QoZG93bmNhc3Q8QmFzaWNDb21wb25lbnRUcmFuc2ZlckZpbHRlck9wZXJhdGlv
bj4oKm9wZXJhdGlvbikpOwogICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIH0KLSAgICAgICAg
Y2FzZSBGaWx0ZXJPcGVyYXRpb246OkNPTlRSQVNUOiB7Ci0gICAgICAgICAgICBhdXRvJiBjb21w
b25lbnRUcmFuc2Zlck9wZXJhdGlvbiA9IGRvd25jYXN0PEJhc2ljQ29tcG9uZW50VHJhbnNmZXJG
aWx0ZXJPcGVyYXRpb24+KGZpbHRlck9wZXJhdGlvbik7Ci0gICAgICAgICAgICBDb21wb25lbnRU
cmFuc2ZlckZ1bmN0aW9uIHRyYW5zZmVyRnVuY3Rpb247Ci0gICAgICAgICAgICB0cmFuc2ZlckZ1
bmN0aW9uLnR5cGUgPSBGRUNPTVBPTkVOVFRSQU5TRkVSX1RZUEVfTElORUFSOwotICAgICAgICAg
ICAgZmxvYXQgYW1vdW50ID0gbmFycm93UHJlY2lzaW9uVG9GbG9hdChjb21wb25lbnRUcmFuc2Zl
ck9wZXJhdGlvbi5hbW91bnQoKSk7Ci0gICAgICAgICAgICB0cmFuc2ZlckZ1bmN0aW9uLnNsb3Bl
ID0gYW1vdW50OwotICAgICAgICAgICAgdHJhbnNmZXJGdW5jdGlvbi5pbnRlcmNlcHQgPSAtMC41
ICogYW1vdW50ICsgMC41OwogICAgICAgICAgICAgCi0gICAgICAgICAgICBDb21wb25lbnRUcmFu
c2ZlckZ1bmN0aW9uIG51bGxGdW5jdGlvbjsKLSAgICAgICAgICAgIGVmZmVjdCA9IEZFQ29tcG9u
ZW50VHJhbnNmZXI6OmNyZWF0ZSgqdGhpcywgdHJhbnNmZXJGdW5jdGlvbiwgdHJhbnNmZXJGdW5j
dGlvbiwgdHJhbnNmZXJGdW5jdGlvbiwgbnVsbEZ1bmN0aW9uKTsKKyAgICAgICAgY2FzZSBGaWx0
ZXJPcGVyYXRpb246OlNBVFVSQVRFOgorICAgICAgICAgICAgZWZmZWN0ID0gY3JlYXRlU2F0dXJh
dGVFZmZlY3QoZG93bmNhc3Q8QmFzaWNDb2xvck1hdHJpeEZpbHRlck9wZXJhdGlvbj4oKm9wZXJh
dGlvbikpOwogICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIH0KLSAgICAgICAgY2FzZSBGaWx0
ZXJPcGVyYXRpb246OkJMVVI6IHsKLSAgICAgICAgICAgIGF1dG8mIGJsdXJPcGVyYXRpb24gPSBk
b3duY2FzdDxCbHVyRmlsdGVyT3BlcmF0aW9uPihmaWx0ZXJPcGVyYXRpb24pOwotICAgICAgICAg
ICAgZmxvYXQgc3RkRGV2aWF0aW9uID0gZmxvYXRWYWx1ZUZvckxlbmd0aChibHVyT3BlcmF0aW9u
LnN0ZERldmlhdGlvbigpLCAwKTsKLSAgICAgICAgICAgIGVmZmVjdCA9IEZFR2F1c3NpYW5CbHVy
OjpjcmVhdGUoKnRoaXMsIHN0ZERldmlhdGlvbiwgc3RkRGV2aWF0aW9uLCBjb25zdW1lciA9PSBG
aWx0ZXJDb25zdW1lcjo6RmlsdGVyUHJvcGVydHkgPyBFREdFTU9ERV9OT05FIDogRURHRU1PREVf
RFVQTElDQVRFKTsKKyAgICAgICAgICAgIAorICAgICAgICBjYXNlIEZpbHRlck9wZXJhdGlvbjo6
U0VQSUE6CisgICAgICAgICAgICBlZmZlY3QgPSBjcmVhdGVTZXBpYUVmZmVjdChkb3duY2FzdDxC
YXNpY0NvbG9yTWF0cml4RmlsdGVyT3BlcmF0aW9uPigqb3BlcmF0aW9uKSk7CiAgICAgICAgICAg
ICBicmVhazsKLSAgICAgICAgfQotICAgICAgICBjYXNlIEZpbHRlck9wZXJhdGlvbjo6RFJPUF9T
SEFET1c6IHsKLSAgICAgICAgICAgIGF1dG8mIGRyb3BTaGFkb3dPcGVyYXRpb24gPSBkb3duY2Fz
dDxEcm9wU2hhZG93RmlsdGVyT3BlcmF0aW9uPihmaWx0ZXJPcGVyYXRpb24pOwotICAgICAgICAg
ICAgZWZmZWN0ID0gRkVEcm9wU2hhZG93OjpjcmVhdGUoKnRoaXMsIGRyb3BTaGFkb3dPcGVyYXRp
b24uc3RkRGV2aWF0aW9uKCksIGRyb3BTaGFkb3dPcGVyYXRpb24uc3RkRGV2aWF0aW9uKCksCi0g
ICAgICAgICAgICAgICAgZHJvcFNoYWRvd09wZXJhdGlvbi54KCksIGRyb3BTaGFkb3dPcGVyYXRp
b24ueSgpLCBkcm9wU2hhZG93T3BlcmF0aW9uLmNvbG9yKCksIDEpOworICAgICAgICAgICAgICAg
IAorICAgICAgICBjYXNlIEZpbHRlck9wZXJhdGlvbjo6UkVGRVJFTkNFOgorICAgICAgICAgICAg
ZmlsdGVyID0gY3JlYXRlU1ZHRmlsdGVyKCp0aGlzLCBkb3duY2FzdDxSZWZlcmVuY2VGaWx0ZXJP
cGVyYXRpb24+KCpvcGVyYXRpb24pLCByZW5kZXJlciwgKnByZXZpb3VzRWZmZWN0KTsKKyAgICAg
ICAgICAgIGVmZmVjdCA9IG51bGxwdHI7CiAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgfQor
CiAgICAgICAgIGRlZmF1bHQ6CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogCisgICAg
ICAgIGlmIChmaWx0ZXIpIHsKKyAgICAgICAgICAgIGVmZmVjdCA9IGZpbHRlci0+bGFzdEVmZmVj
dCgpOworICAgICAgICAgICAgc2V0dXBMYXN0RWZmZWN0UHJvcGVydGllcygqZWZmZWN0LCBjb25z
dW1lcik7CisgICAgICAgICAgICBtX2Z1bmN0aW9ucy5hcHBlbmQoZmlsdGVyLnJlbGVhc2VOb25O
dWxsKCkpOworICAgICAgICAgICAgcHJldmlvdXNFZmZlY3QgPSBXVEZNb3ZlKGVmZmVjdCk7Cisg
ICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgfQorICAgICAgICAKICAgICAgICAgaWYgKGVm
ZmVjdCkgewotICAgICAgICAgICAgLy8gVW5saWtlIFNWRyBGaWx0ZXJzIGFuZCBDU1NGaWx0ZXJJ
bWFnZXMsIGZpbHRlciBmdW5jdGlvbnMgb24gdGhlIGZpbHRlcgotICAgICAgICAgICAgLy8gcHJv
cGVydHkgYXBwbGllZCBoZXJlIHNob3VsZCBub3QgY2xpcCB0byB0aGVpciBwcmltaXRpdmUgc3Vi
cmVnaW9ucy4KLSAgICAgICAgICAgIGVmZmVjdC0+c2V0Q2xpcHNUb0JvdW5kcyhjb25zdW1lciA9
PSBGaWx0ZXJDb25zdW1lcjo6RmlsdGVyRnVuY3Rpb24pOwotICAgICAgICAgICAgZWZmZWN0LT5z
ZXRPcGVyYXRpbmdDb2xvclNwYWNlKERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQigpKTsKLSAg
ICAgICAgICAgIAotICAgICAgICAgICAgaWYgKGZpbHRlck9wZXJhdGlvbi50eXBlKCkgIT0gRmls
dGVyT3BlcmF0aW9uOjpSRUZFUkVOQ0UpIHsKLSAgICAgICAgICAgICAgICBlZmZlY3QtPmlucHV0
RWZmZWN0cygpID0geyBXVEZNb3ZlKHByZXZpb3VzRWZmZWN0KSB9OwotICAgICAgICAgICAgICAg
IG1fZWZmZWN0cy5hcHBlbmQoKmVmZmVjdCk7Ci0gICAgICAgICAgICB9CisgICAgICAgICAgICBz
ZXR1cExhc3RFZmZlY3RQcm9wZXJ0aWVzKCplZmZlY3QsIGNvbnN1bWVyKTsKKyAgICAgICAgICAg
IGVmZmVjdC0+aW5wdXRFZmZlY3RzKCkgPSB7IFdURk1vdmUocHJldmlvdXNFZmZlY3QpIH07Cisg
ICAgICAgICAgICBtX2Z1bmN0aW9ucy5hcHBlbmQoeyAqZWZmZWN0IH0pOwogICAgICAgICAgICAg
cHJldmlvdXNFZmZlY3QgPSBXVEZNb3ZlKGVmZmVjdCk7CiAgICAgICAgIH0KICAgICB9CiAKICAg
ICAvLyBJZiB3ZSBkaWRuJ3QgbWFrZSBhbnkgZWZmZWN0cywgdGVsbCBvdXIgY2FsbGVyIHdlIGFy
ZSBub3QgdmFsaWQuCi0gICAgaWYgKG1fZWZmZWN0cy5pc0VtcHR5KCkpCisgICAgaWYgKG1fZnVu
Y3Rpb25zLmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgbV9lZmZlY3Rz
LnNocmlua1RvRml0KCk7CisgICAgbV9mdW5jdGlvbnMuc2hyaW5rVG9GaXQoKTsKKworICAgIC8v
IFRoaXMgd2lsbCBzZXQgdGhlIGZpbHRlclByaW1pdGl2ZVN1YnJlZ2lvbiBhbmQgbWF4RWZmZWN0
UmVjdCBmb3IgdGhlIEZpbHRlckVmZmVjdCBjaGFpbi4KKyAgICBkZXRlcm1pbmVGaWx0ZXJQcmlt
aXRpdmVTdWJyZWdpb24oKTsKKworICAgIC8vIFRoaXMgd2lsbCBzZXQgdGhlIGZpbHRlclByaW1p
dGl2ZVN1YnJlZ2lvbiBhbmQgbWF4RWZmZWN0UmVjdCBmb3IgdGhlIEZpbHRlckVmZmVjdCBjaGFp
bi4KKyAgICBkZXRlcm1pbmVGaWx0ZXJQcmltaXRpdmVTdWJyZWdpb24oKTsKIAotICAgIHNldE1h
eEVmZmVjdFJlY3RzKG1fc291cmNlRHJhd2luZ1JlZ2lvbik7CiAjaWYgVVNFKENPUkVfSU1BR0Up
CiAgICAgaWYgKCFtX2ZpbHRlclJlbmRlcmVyKQotICAgICAgICBtX2ZpbHRlclJlbmRlcmVyID0g
RmlsdGVyRWZmZWN0UmVuZGVyZXI6OnRyeUNyZWF0ZShyZW5kZXJlci5zZXR0aW5ncygpLmNvcmVJ
bWFnZUFjY2VsZXJhdGVkRmlsdGVyUmVuZGVyRW5hYmxlZCgpLCBtX2VmZmVjdHMubGFzdCgpLmdl
dCgpKTsKKyAgICAgICAgbV9maWx0ZXJSZW5kZXJlciA9IEZpbHRlckVmZmVjdFJlbmRlcmVyOjp0
cnlDcmVhdGUocmVuZGVyZXIuc2V0dGluZ3MoKS5jb3JlSW1hZ2VBY2NlbGVyYXRlZEZpbHRlclJl
bmRlckVuYWJsZWQoKSwgKmxhc3RFZmZlY3QoKSk7CiAjZW5kaWYKICAgICByZXR1cm4gdHJ1ZTsK
IH0KIAorR3JhcGhpY3NDb250ZXh0KiBDU1NGaWx0ZXI6OmlucHV0Q29udGV4dCgpCit7CisgICAg
cmV0dXJuIHNvdXJjZUltYWdlKCkgPyAmc291cmNlSW1hZ2UoKS0+Y29udGV4dCgpIDogbnVsbHB0
cjsKK30KKwogYm9vbCBDU1NGaWx0ZXI6OnVwZGF0ZUJhY2tpbmdTdG9yZVJlY3QoY29uc3QgRmxv
YXRSZWN0JiBmaWx0ZXJSZWN0KQogewogICAgIGlmIChmaWx0ZXJSZWN0LmlzRW1wdHkoKSB8fCBJ
bWFnZUJ1ZmZlcjo6c2l6ZU5lZWRzQ2xhbXBpbmcoZmlsdGVyUmVjdC5zaXplKCkpKQpAQCAtMzMx
LDUzICszNTgsNjggQEAgdm9pZCBDU1NGaWx0ZXI6OmFsbG9jYXRlQmFja2luZ1N0b3JlSWZOZWVk
ZWQoY29uc3QgR3JhcGhpY3NDb250ZXh0JiB0YXJnZXRDb250ZXgKICAgICBpZiAobV9ncmFwaGlj
c0J1ZmZlckF0dGFjaGVkKQogICAgICAgICByZXR1cm47CiAKLSAgICBhdXRvIGxvZ2ljYWxTaXpl
ID0gbV9zb3VyY2VEcmF3aW5nUmVnaW9uLnNpemUoKTsKKyAgICBhdXRvIGxvZ2ljYWxTaXplID0g
c291cmNlSW1hZ2VSZWN0KCkuc2l6ZSgpOwogICAgIGlmICghc291cmNlSW1hZ2UoKSB8fCBzb3Vy
Y2VJbWFnZSgpLT5sb2dpY2FsU2l6ZSgpICE9IGxvZ2ljYWxTaXplKSB7CiAjaWYgVVNFKERJUkVD
VDJEKQotICAgICAgICBzZXRTb3VyY2VJbWFnZShJbWFnZUJ1ZmZlcjo6Y3JlYXRlKGxvZ2ljYWxT
aXplLCByZW5kZXJpbmdNb2RlKCksICZ0YXJnZXRDb250ZXh0LCBmaWx0ZXJTY2FsZSgpLCBEZXN0
aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0IoKSwgUGl4ZWxGb3JtYXQ6OkJHUkE4KSk7CisgICAgICAg
IHNldFNvdXJjZUltYWdlKEltYWdlQnVmZmVyOjpjcmVhdGUobG9naWNhbFNpemUsIHJlbmRlcmlu
Z01vZGUoKSwgJnRhcmdldENvbnRleHQsIDEsIERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQigp
LCBQaXhlbEZvcm1hdDo6QkdSQTgpKTsKICNlbHNlCiAgICAgICAgIFVOVVNFRF9QQVJBTSh0YXJn
ZXRDb250ZXh0KTsKICAgICAgICAgUmVuZGVyaW5nTW9kZSBtb2RlID0gbV9maWx0ZXJSZW5kZXJl
ciA/IFJlbmRlcmluZ01vZGU6OkFjY2VsZXJhdGVkIDogcmVuZGVyaW5nTW9kZSgpOwotICAgICAg
ICBzZXRTb3VyY2VJbWFnZShJbWFnZUJ1ZmZlcjo6Y3JlYXRlKGxvZ2ljYWxTaXplLCBtb2RlLCBm
aWx0ZXJTY2FsZSgpLCBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0IoKSwgUGl4ZWxGb3JtYXQ6
OkJHUkE4KSk7CisgICAgICAgIHNldFNvdXJjZUltYWdlKEltYWdlQnVmZmVyOjpjcmVhdGUobG9n
aWNhbFNpemUsIG1vZGUsIDEsIERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQigpLCBQaXhlbEZv
cm1hdDo6QkdSQTgpKTsKICNlbmRpZgorICAgICAgICBpZiAoYXV0byBjb250ZXh0ID0gaW5wdXRD
b250ZXh0KCkpCisgICAgICAgICAgICBjb250ZXh0LT5zY2FsZShmaWx0ZXJTY2FsZSgpKTsKICAg
ICB9CiAgICAgbV9ncmFwaGljc0J1ZmZlckF0dGFjaGVkID0gdHJ1ZTsKIH0KIAorUmVmUHRyPEZp
bHRlckVmZmVjdD4gQ1NTRmlsdGVyOjpsYXN0RWZmZWN0KCkKK3sKKyAgICBpZiAobV9mdW5jdGlv
bnMuaXNFbXB0eSgpKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKworICAgIGF1dG8mIGZ1bmN0
aW9uID0gbV9mdW5jdGlvbnMubGFzdCgpOworICAgIGlmIChmdW5jdGlvbi0+aXNTVkdGaWx0ZXIo
KSkKKyAgICAgICAgcmV0dXJuIGRvd25jYXN0PFNWR0ZpbHRlcj4oZnVuY3Rpb24ucHRyKCkpLT5s
YXN0RWZmZWN0KCk7CisKKyAgICByZXR1cm4gZG93bmNhc3Q8RmlsdGVyRWZmZWN0PihmdW5jdGlv
bi5wdHIoKSk7Cit9CisKIHZvaWQgQ1NTRmlsdGVyOjpkZXRlcm1pbmVGaWx0ZXJQcmltaXRpdmVT
dWJyZWdpb24oKQogewotICAgIGF1dG8mIGxhc3RFZmZlY3QgPSBtX2VmZmVjdHMubGFzdCgpLmdl
dCgpOwotICAgIGxhc3RFZmZlY3QuZGV0ZXJtaW5lRmlsdGVyUHJpbWl0aXZlU3VicmVnaW9uKCk7
Ci0gICAgRmxvYXRSZWN0IHN1YlJlZ2lvbiA9IGxhc3RFZmZlY3QubWF4RWZmZWN0UmVjdCgpOwor
ICAgIGF1dG8gZWZmZWN0ID0gbGFzdEVmZmVjdCgpOworICAgIGVmZmVjdC0+ZGV0ZXJtaW5lRmls
dGVyUHJpbWl0aXZlU3VicmVnaW9uKCp0aGlzKTsKKyAgICBGbG9hdFJlY3Qgc3ViUmVnaW9uID0g
ZWZmZWN0LT5tYXhFZmZlY3RSZWN0KCk7CiAgICAgLy8gQXQgbGVhc3Qgb25lIEZpbHRlckVmZmVj
dCBoYXMgYSB0b28gYmlnIGltYWdlIHNpemUsIHJlY2FsY3VsYXRlIHRoZSBlZmZlY3Qgc2l6ZXMg
d2l0aCBuZXcgc2NhbGUgZmFjdG9ycy4KLSAgICBGbG9hdFNpemUgc2NhbGU7Ci0gICAgaWYgKElt
YWdlQnVmZmVyOjpzaXplTmVlZHNDbGFtcGluZyhzdWJSZWdpb24uc2l6ZSgpLCBzY2FsZSkpIHsK
LSAgICAgICAgc2V0RmlsdGVyUmVzb2x1dGlvbihzY2FsZSk7Ci0gICAgICAgIGxhc3RFZmZlY3Qu
ZGV0ZXJtaW5lRmlsdGVyUHJpbWl0aXZlU3VicmVnaW9uKCk7CisgICAgRmxvYXRTaXplIGZpbHRl
clNjYWxlIHsgMSwgMSB9OworICAgIGlmIChJbWFnZUJ1ZmZlcjo6c2l6ZU5lZWRzQ2xhbXBpbmco
c3ViUmVnaW9uLnNpemUoKSwgZmlsdGVyU2NhbGUpKSB7CisgICAgICAgIHNldEZpbHRlclNjYWxl
KGZpbHRlclNjYWxlKTsKKyAgICAgICAgZWZmZWN0LT5kZXRlcm1pbmVGaWx0ZXJQcmltaXRpdmVT
dWJyZWdpb24oKnRoaXMpOwogICAgIH0KIH0KIAogdm9pZCBDU1NGaWx0ZXI6OmNsZWFySW50ZXJt
ZWRpYXRlUmVzdWx0cygpCiB7CiAgICAgbV9zb3VyY2VHcmFwaGljLT5jbGVhclJlc3VsdCgpOwot
ICAgIGlmIChtX3NvdXJjZUFscGhhKQotICAgICAgICBtX3NvdXJjZUFscGhhLT5jbGVhclJlc3Vs
dCgpOwotICAgIGZvciAoYXV0byYgZWZmZWN0IDogbV9lZmZlY3RzKQotICAgICAgICBlZmZlY3Qt
PmNsZWFyUmVzdWx0KCk7CisgICAgZm9yIChhdXRvJiBmdW5jdGlvbiA6IG1fZnVuY3Rpb25zKQor
ICAgICAgICBmdW5jdGlvbi0+Y2xlYXJSZXN1bHQoKTsKIH0KIAotdm9pZCBDU1NGaWx0ZXI6OmFw
cGx5KCkKK3ZvaWQgQ1NTRmlsdGVyOjphcHBseUZpbHRlcigpCiB7Ci0gICAgYXV0byYgZWZmZWN0
ID0gbV9lZmZlY3RzLmxhc3QoKS5nZXQoKTsKKyAgICBhdXRvIGVmZmVjdCA9IGxhc3RFZmZlY3Qo
KTsKICAgICBpZiAobV9maWx0ZXJSZW5kZXJlcikgewotICAgICAgICBtX2ZpbHRlclJlbmRlcmVy
LT5hcHBseUVmZmVjdHMoZWZmZWN0KTsKKyAgICAgICAgbV9maWx0ZXJSZW5kZXJlci0+YXBwbHlF
ZmZlY3RzKCp0aGlzLCAqZWZmZWN0KTsKICAgICAgICAgaWYgKG1fZmlsdGVyUmVuZGVyZXItPmhh
c1Jlc3VsdCgpKSB7Ci0gICAgICAgICAgICBlZmZlY3QudHJhbnNmb3JtUmVzdWx0Q29sb3JTcGFj
ZShEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0IoKSk7CisgICAgICAgICAgICBlZmZlY3QtPnRy
YW5zZm9ybVJlc3VsdENvbG9yU3BhY2UoRGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdCKCkpOwog
ICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAgICAgfQotICAgIGVmZmVjdC5hcHBseSgp
OwotICAgIGVmZmVjdC50cmFuc2Zvcm1SZXN1bHRDb2xvclNwYWNlKERlc3RpbmF0aW9uQ29sb3JT
cGFjZTo6U1JHQigpKTsKKworICAgIGZvciAoYXV0byYgZnVuY3Rpb24gOiBtX2Z1bmN0aW9ucykK
KyAgICAgICAgZnVuY3Rpb24tPmFwcGx5KCp0aGlzKTsKKworICAgIGVmZmVjdC0+dHJhbnNmb3Jt
UmVzdWx0Q29sb3JTcGFjZShEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0IoKSk7CiB9CiAKIExh
eW91dFJlY3QgQ1NTRmlsdGVyOjpjb21wdXRlU291cmNlSW1hZ2VSZWN0Rm9yRGlydHlSZWN0KGNv
bnN0IExheW91dFJlY3QmIGZpbHRlckJveFJlY3QsIGNvbnN0IExheW91dFJlY3QmIGRpcnR5UmVj
dCkKQEAgLTM5MCwzNCArNDMyLDMwIEBAIExheW91dFJlY3QgQ1NTRmlsdGVyOjpjb21wdXRlU291
cmNlSW1hZ2VSZWN0Rm9yRGlydHlSZWN0KGNvbnN0IExheW91dFJlY3QmIGZpbHRlCiAgICAgcmV0
dXJuIHJlY3RGb3JSZXBhaW50OwogfQogCi1JbWFnZUJ1ZmZlciogQ1NTRmlsdGVyOjpvdXRwdXQo
KSBjb25zdAorSW1hZ2VCdWZmZXIqIENTU0ZpbHRlcjo6b3V0cHV0KCkKIHsKICAgICBpZiAobV9m
aWx0ZXJSZW5kZXJlciAmJiBtX2ZpbHRlclJlbmRlcmVyLT5oYXNSZXN1bHQoKSkKICAgICAgICAg
cmV0dXJuIG1fZmlsdGVyUmVuZGVyZXItPm91dHB1dCgpOwogICAgIAotICAgIHJldHVybiBtX2Vm
ZmVjdHMubGFzdCgpLT5pbWFnZUJ1ZmZlclJlc3VsdCgpOworICAgIHJldHVybiBsYXN0RWZmZWN0
KCktPmltYWdlQnVmZmVyUmVzdWx0KCk7CiB9CiAKIHZvaWQgQ1NTRmlsdGVyOjpzZXRTb3VyY2VJ
bWFnZVJlY3QoY29uc3QgRmxvYXRSZWN0JiBzb3VyY2VJbWFnZVJlY3QpCiB7Ci0gICAgbV9zb3Vy
Y2VEcmF3aW5nUmVnaW9uID0gc291cmNlSW1hZ2VSZWN0OwotICAgIHNldE1heEVmZmVjdFJlY3Rz
KHNvdXJjZUltYWdlUmVjdCk7Ci0gICAgc2V0RmlsdGVyUmVnaW9uKHNvdXJjZUltYWdlUmVjdCk7
Ci0gICAgbV9ncmFwaGljc0J1ZmZlckF0dGFjaGVkID0gZmFsc2U7Ci19CisgICAgYXV0byBzY2Fs
ZWRTb3VyY2VJbWFnZVJlY3QgPSBzb3VyY2VJbWFnZVJlY3Q7CisgICAgc2NhbGVkU291cmNlSW1h
Z2VSZWN0LnNjYWxlKGZpbHRlclNjYWxlKCkpOwogCi12b2lkIENTU0ZpbHRlcjo6c2V0TWF4RWZm
ZWN0UmVjdHMoY29uc3QgRmxvYXRSZWN0JiBlZmZlY3RSZWN0KQotewotICAgIGZvciAoYXV0byYg
ZWZmZWN0IDogbV9lZmZlY3RzKQotICAgICAgICBlZmZlY3QtPnNldE1heEVmZmVjdFJlY3QoZWZm
ZWN0UmVjdCk7CisgICAgRmlsdGVyOjpzZXRGaWx0ZXJSZWdpb24oc291cmNlSW1hZ2VSZWN0KTsK
KyAgICBGaWx0ZXI6OnNldFNvdXJjZUltYWdlUmVjdChzY2FsZWRTb3VyY2VJbWFnZVJlY3QpOwor
ICAgIG1fZ3JhcGhpY3NCdWZmZXJBdHRhY2hlZCA9IGZhbHNlOwogfQogCi1JbnRSZWN0IENTU0Zp
bHRlcjo6b3V0cHV0UmVjdCgpIGNvbnN0CitJbnRSZWN0IENTU0ZpbHRlcjo6b3V0cHV0UmVjdCgp
CiB7Ci0gICAgYXV0byYgbGFzdEVmZmVjdCA9IG1fZWZmZWN0cy5sYXN0KCkuZ2V0KCk7CisgICAg
YXV0byBlZmZlY3QgPSBsYXN0RWZmZWN0KCk7CiAgICAgCi0gICAgaWYgKGxhc3RFZmZlY3QuaGFz
UmVzdWx0KCkgfHwgKG1fZmlsdGVyUmVuZGVyZXIgJiYgbV9maWx0ZXJSZW5kZXJlci0+aGFzUmVz
dWx0KCkpKQotICAgICAgICByZXR1cm4gbGFzdEVmZmVjdC5yZXF1ZXN0ZWRSZWdpb25PZklucHV0
UGl4ZWxCdWZmZXIoSW50UmVjdCB7IG1fZmlsdGVyUmVnaW9uIH0pOworICAgIGlmIChlZmZlY3Qt
Pmhhc1Jlc3VsdCgpIHx8IChtX2ZpbHRlclJlbmRlcmVyICYmIG1fZmlsdGVyUmVuZGVyZXItPmhh
c1Jlc3VsdCgpKSkKKyAgICAgICAgcmV0dXJuIGVmZmVjdC0+cmVxdWVzdGVkUmVnaW9uT2ZJbnB1
dFBpeGVsQnVmZmVyKEludFJlY3QgeyBmaWx0ZXJSZWdpb24oKSB9KTsKICAgICAKICAgICByZXR1
cm4geyB9OwogfQpAQCAtNDMwLDggKzQ2OCw5IEBAIEludE91dHNldHMgQ1NTRmlsdGVyOjpvdXRz
ZXRzKCkgY29uc3QKICAgICBpZiAoIW1fb3V0c2V0cy5pc1plcm8oKSkKICAgICAgICAgcmV0dXJu
IG1fb3V0c2V0czsKIAotICAgIGZvciAoYXV0byYgZWZmZWN0IDogbV9lZmZlY3RzKQotICAgICAg
ICBtX291dHNldHMgKz0gZWZmZWN0LT5vdXRzZXRzKCk7CisgICAgZm9yIChhdXRvJiBmdW5jdGlv
biA6IG1fZnVuY3Rpb25zKQorICAgICAgICBtX291dHNldHMgKz0gZnVuY3Rpb24tPm91dHNldHMo
KTsKKwogICAgIHJldHVybiBtX291dHNldHM7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9DU1NGaWx0ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9DU1NG
aWx0ZXIuaAppbmRleCAwMGI5MTkxN2I4MDRjOTJkOTQwOGI3NThlMzc1YzI1MmYyOWRiMGM1Li5l
ZTNkZDlmZGY2NTFkNjM1OTNmZjRkOTJjOTFhMTYzMzVhYzdkOGQxIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvQ1NTRmlsdGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL0NTU0ZpbHRlci5oCkBAIC0zOCw2OSArMzgsNTAgQEAgY2xhc3MgRmlsdGVyT3BlcmF0
aW9uczsKIGNsYXNzIEdyYXBoaWNzQ29udGV4dDsKIGNsYXNzIFJlZmVyZW5jZUZpbHRlck9wZXJh
dGlvbjsKIGNsYXNzIFJlbmRlckVsZW1lbnQ7Ci1jbGFzcyBTb3VyY2VBbHBoYTsKIGNsYXNzIFNv
dXJjZUdyYXBoaWM7CiAKIGVudW0gY2xhc3MgRmlsdGVyQ29uc3VtZXIgeyBGaWx0ZXJQcm9wZXJ0
eSwgRmlsdGVyRnVuY3Rpb24gfTsKIAogY2xhc3MgQ1NTRmlsdGVyIGZpbmFsIDogcHVibGljIEZp
bHRlciB7CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7Ci0gICAgZnJpZW5kIGNsYXNzIFJl
bmRlckxheWVyRmlsdGVyczsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUmVmPENTU0ZpbHRlcj4gY3Jl
YXRlKCk7CisgICAgc3RhdGljIFJlZjxDU1NGaWx0ZXI+IGNyZWF0ZShjb25zdCBGaWx0ZXJPcGVy
YXRpb25zJiwgUmVuZGVyaW5nTW9kZSwgZmxvYXQgc2NhbGVGYWN0b3IgPSAxKTsKIAogICAgIHZv
aWQgc2V0U291cmNlSW1hZ2VSZWN0KGNvbnN0IEZsb2F0UmVjdCYpOwotICAgIHZvaWQgc2V0Rmls
dGVyUmVnaW9uKGNvbnN0IEZsb2F0UmVjdCYgZmlsdGVyUmVnaW9uKSB7IG1fZmlsdGVyUmVnaW9u
ID0gZmlsdGVyUmVnaW9uOyB9Ci0KLSAgICBJbWFnZUJ1ZmZlciogb3V0cHV0KCkgY29uc3Q7Ci0K
LSAgICBib29sIGJ1aWxkKFJlbmRlckVsZW1lbnQmLCBjb25zdCBGaWx0ZXJPcGVyYXRpb25zJiwg
RmlsdGVyQ29uc3VtZXIpOwotICAgIHZvaWQgY2xlYXJJbnRlcm1lZGlhdGVSZXN1bHRzKCk7Ci0g
ICAgdm9pZCBhcHBseSgpOwogCiAgICAgYm9vbCBoYXNGaWx0ZXJUaGF0TW92ZXNQaXhlbHMoKSBj
b25zdCB7IHJldHVybiBtX2hhc0ZpbHRlclRoYXRNb3Zlc1BpeGVsczsgfQogICAgIGJvb2wgaGFz
RmlsdGVyVGhhdFNob3VsZEJlUmVzdHJpY3RlZEJ5U2VjdXJpdHlPcmlnaW4oKSBjb25zdCB7IHJl
dHVybiBtX2hhc0ZpbHRlclRoYXRTaG91bGRCZVJlc3RyaWN0ZWRCeVNlY3VyaXR5T3JpZ2luOyB9
CiAKKyAgICBib29sIGJ1aWxkKFJlbmRlckVsZW1lbnQmLCBjb25zdCBGaWx0ZXJPcGVyYXRpb25z
JiwgRmlsdGVyQ29uc3VtZXIpOwogICAgIHZvaWQgZGV0ZXJtaW5lRmlsdGVyUHJpbWl0aXZlU3Vi
cmVnaW9uKCk7Ci0gICAgSW50T3V0c2V0cyBvdXRzZXRzKCkgY29uc3Q7CiAKLXByaXZhdGU6Ci0g
ICAgQ1NTRmlsdGVyKCk7Ci0gICAgdmlydHVhbCB+Q1NTRmlsdGVyKCk7Ci0KLSAgICBib29sIGlz
Q1NTRmlsdGVyKCkgY29uc3QgZmluYWwgeyByZXR1cm4gdHJ1ZTsgfQotCi0gICAgRmxvYXRSZWN0
IHNvdXJjZUltYWdlUmVjdCgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1fc291cmNlRHJhd2luZ1Jl
Z2lvbjsgfQotCi0gICAgRmxvYXRSZWN0IGZpbHRlclJlZ2lvbigpIGNvbnN0IGZpbmFsIHsgcmV0
dXJuIG1fZmlsdGVyUmVnaW9uOyB9Ci0gICAgRmxvYXRSZWN0IGZpbHRlclJlZ2lvbkluVXNlclNw
YWNlKCkgY29uc3QgZmluYWwgeyByZXR1cm4gbV9maWx0ZXJSZWdpb247IH0KLQotICAgIFJlZlB0
cjxGaWx0ZXJFZmZlY3Q+IGJ1aWxkUmVmZXJlbmNlRmlsdGVyKFJlbmRlckVsZW1lbnQmLCBGaWx0
ZXJFZmZlY3QmIHByZXZpb3VzRWZmZWN0LCBSZWZlcmVuY2VGaWx0ZXJPcGVyYXRpb24mKTsKKyAg
ICBSZWZQdHI8RmlsdGVyRWZmZWN0PiBsYXN0RWZmZWN0KCk7CisgICAgR3JhcGhpY3NDb250ZXh0
KiBpbnB1dENvbnRleHQoKTsKKyAgICBJbnRPdXRzZXRzIG91dHNldHMoKSBjb25zdCBvdmVycmlk
ZTsKIAotICAgIHZvaWQgc2V0TWF4RWZmZWN0UmVjdHMoY29uc3QgRmxvYXRSZWN0Jik7CisgICAg
dm9pZCBjbGVhckludGVybWVkaWF0ZVJlc3VsdHMoKTsKKyAgICB2b2lkIGFwcGx5RmlsdGVyKCkg
b3ZlcnJpZGU7CiAKLSAgICBHcmFwaGljc0NvbnRleHQqIGlucHV0Q29udGV4dCgpOworICAgIElt
YWdlQnVmZmVyKiBvdXRwdXQoKTsKKyAgICBJbnRSZWN0IG91dHB1dFJlY3QoKTsKIAogICAgIGJv
b2wgdXBkYXRlQmFja2luZ1N0b3JlUmVjdChjb25zdCBGbG9hdFJlY3QmIGZpbHRlclJlY3QpOwog
ICAgIHZvaWQgYWxsb2NhdGVCYWNraW5nU3RvcmVJZk5lZWRlZChjb25zdCBHcmFwaGljc0NvbnRl
eHQmKTsKIAotICAgIEludFJlY3Qgb3V0cHV0UmVjdCgpIGNvbnN0OwotCiAgICAgTGF5b3V0UmVj
dCBjb21wdXRlU291cmNlSW1hZ2VSZWN0Rm9yRGlydHlSZWN0KGNvbnN0IExheW91dFJlY3QmIGZp
bHRlckJveFJlY3QsIGNvbnN0IExheW91dFJlY3QmIGRpcnR5UmVjdCk7CiAKLSAgICBGbG9hdFJl
Y3QgbV9zb3VyY2VEcmF3aW5nUmVnaW9uOwotICAgIEZsb2F0UmVjdCBtX2ZpbHRlclJlZ2lvbjsK
K3ByaXZhdGU6CisgICAgQ1NTRmlsdGVyKGJvb2wgaGFzRmlsdGVyVGhhdE1vdmVzUGl4ZWxzLCBi
b29sIGhhc0ZpbHRlclRoYXRTaG91bGRCZVJlc3RyaWN0ZWRCeVNlY3VyaXR5T3JpZ2luLCBmbG9h
dCBzY2FsZUZhY3Rvcik7CisKKyAgICBib29sIG1fZ3JhcGhpY3NCdWZmZXJBdHRhY2hlZCB7IGZh
bHNlIH07CisgICAgYm9vbCBtX2hhc0ZpbHRlclRoYXRNb3Zlc1BpeGVscyB7IGZhbHNlIH07Cisg
ICAgYm9vbCBtX2hhc0ZpbHRlclRoYXRTaG91bGRCZVJlc3RyaWN0ZWRCeVNlY3VyaXR5T3JpZ2lu
IHsgZmFsc2UgfTsKIAotICAgIFZlY3RvcjxSZWY8RmlsdGVyRWZmZWN0Pj4gbV9lZmZlY3RzOwog
ICAgIFJlZjxTb3VyY2VHcmFwaGljPiBtX3NvdXJjZUdyYXBoaWM7Ci0gICAgUmVmUHRyPEZpbHRl
ckVmZmVjdD4gbV9zb3VyY2VBbHBoYTsKKyAgICBWZWN0b3I8UmVmPEZpbHRlckZ1bmN0aW9uPj4g
bV9mdW5jdGlvbnM7CiAKICAgICBtdXRhYmxlIEludE91dHNldHMgbV9vdXRzZXRzOwogCi0gICAg
Ym9vbCBtX2dyYXBoaWNzQnVmZmVyQXR0YWNoZWQgeyBmYWxzZSB9OwotICAgIGJvb2wgbV9oYXNG
aWx0ZXJUaGF0TW92ZXNQaXhlbHMgeyBmYWxzZSB9OwotICAgIGJvb2wgbV9oYXNGaWx0ZXJUaGF0
U2hvdWxkQmVSZXN0cmljdGVkQnlTZWN1cml0eU9yaWdpbiB7IGZhbHNlIH07Ci0gICAgCiAgICAg
c3RkOjp1bmlxdWVfcHRyPEZpbHRlckVmZmVjdFJlbmRlcmVyPiBtX2ZpbHRlclJlbmRlcmVyOwog
fTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllci5jcHAKaW5kZXggMGMyNjY5
NjI5OTE3NGJkNmZkODljNjJiMWEwMjI5NmZhODllNGJkOS4uZjdlNzNiMmY1MDE0OGNkNjZjMmI2
OWRlZjFiMTRhNTM5OTJmMDQ4NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlckxheWVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5
ZXIuY3BwCkBAIC0zMjI2LDcgKzMyMjYsNyBAQCBHcmFwaGljc0NvbnRleHQqIFJlbmRlckxheWVy
OjpzZXR1cEZpbHRlcnMoR3JhcGhpY3NDb250ZXh0JiBkZXN0aW5hdGlvbkNvbnRleHQsCiAKICAg
ICBhdXRvIHJvb3RSZWxhdGl2ZUJvdW5kcyA9IGNhbGN1bGF0ZUxheWVyQm91bmRzKHBhaW50aW5n
SW5mby5yb290TGF5ZXIsIG9mZnNldEZyb21Sb290LCB7IH0pOwogCi0gICAgR3JhcGhpY3NDb250
ZXh0KiBmaWx0ZXJDb250ZXh0ID0gcGFpbnRpbmdGaWx0ZXJzLT5iZWdpbkZpbHRlckVmZmVjdChk
ZXN0aW5hdGlvbkNvbnRleHQsIGVuY2xvc2luZ0ludFJlY3Qocm9vdFJlbGF0aXZlQm91bmRzKSwg
ZW5jbG9zaW5nSW50UmVjdChwYWludGluZ0luZm8ucGFpbnREaXJ0eVJlY3QpLCBlbmNsb3NpbmdJ
bnRSZWN0KGZpbHRlclJlcGFpbnRSZWN0KSk7CisgICAgR3JhcGhpY3NDb250ZXh0KiBmaWx0ZXJD
b250ZXh0ID0gcGFpbnRpbmdGaWx0ZXJzLT5iZWdpbkZpbHRlckVmZmVjdChkZXN0aW5hdGlvbkNv
bnRleHQsIHJlbmRlcmVyKCksIGVuY2xvc2luZ0ludFJlY3Qocm9vdFJlbGF0aXZlQm91bmRzKSwg
ZW5jbG9zaW5nSW50UmVjdChwYWludGluZ0luZm8ucGFpbnREaXJ0eVJlY3QpLCBlbmNsb3NpbmdJ
bnRSZWN0KGZpbHRlclJlcGFpbnRSZWN0KSk7CiAgICAgaWYgKCFmaWx0ZXJDb250ZXh0KQogICAg
ICAgICByZXR1cm4gbnVsbHB0cjsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlckxheWVyRmlsdGVycy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyTGF5ZXJGaWx0ZXJzLmNwcAppbmRleCAyNTBhN2Q1YzBiYWEwYWM3NDFhOTBjODE4YjYxYTA1
Zjk1Yjk2NGE0Li5mZDQ3ZDcyOTdjZTdhYzBkOTEwMDFiOWRlYTM1ZmI0YmVmOTdiMDdiIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJGaWx0ZXJzLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJGaWx0ZXJzLmNwcApAQCAt
MTE4LDIzICsxMTgsMTEgQEAgdm9pZCBSZW5kZXJMYXllckZpbHRlcnM6OnJlbW92ZVJlZmVyZW5j
ZUZpbHRlckNsaWVudHMoKQogCiB2b2lkIFJlbmRlckxheWVyRmlsdGVyczo6YnVpbGRGaWx0ZXIo
UmVuZGVyRWxlbWVudCYgcmVuZGVyZXIsIGZsb2F0IHNjYWxlRmFjdG9yLCBSZW5kZXJpbmdNb2Rl
IHJlbmRlcmluZ01vZGUpCiB7Ci0gICAgaWYgKCFtX2ZpbHRlcikgewotICAgICAgICBtX2ZpbHRl
ciA9IENTU0ZpbHRlcjo6Y3JlYXRlKCk7Ci0gICAgICAgIG1fZmlsdGVyLT5zZXRGaWx0ZXJTY2Fs
ZShzY2FsZUZhY3Rvcik7Ci0gICAgICAgIG1fZmlsdGVyLT5zZXRSZW5kZXJpbmdNb2RlKHJlbmRl
cmluZ01vZGUpOwotICAgIH0gZWxzZSBpZiAobV9maWx0ZXItPmZpbHRlclNjYWxlKCkgIT0gc2Nh
bGVGYWN0b3IpIHsKLSAgICAgICAgbV9maWx0ZXItPnNldEZpbHRlclNjYWxlKHNjYWxlRmFjdG9y
KTsKLSAgICAgICAgbV9maWx0ZXItPmNsZWFySW50ZXJtZWRpYXRlUmVzdWx0cygpOwotICAgIH0K
LQotICAgIC8vIElmIHRoZSBmaWx0ZXIgZmFpbHMgdG8gYnVpbGQsIHJlbW92ZSBpdCBmcm9tIHRo
ZSBsYXllci4gSXQgd2lsbCBzdGlsbCBhdHRlbXB0IHRvCi0gICAgLy8gZ28gdGhyb3VnaCByZWd1
bGFyIHByb2Nlc3NpbmcgKGUuZy4gY29tcG9zaXRpbmcpLCBidXQgbmV2ZXIgYXBwbHkgYW55dGhp
bmcuCiAgICAgLy8gRklYTUU6IHRoaXMgcmVidWlsZHMgdGhlIGVudGlyZSBlZmZlY3RzIGNoYWlu
IGV2ZW4gaWYgdGhlIGZpbHRlciBzdHlsZSBkaWRuJ3QgY2hhbmdlLgotICAgIGlmICghbV9maWx0
ZXItPmJ1aWxkKHJlbmRlcmVyLCByZW5kZXJlci5zdHlsZSgpLmZpbHRlcigpLCBGaWx0ZXJDb25z
dW1lcjo6RmlsdGVyUHJvcGVydHkpKQotICAgICAgICBtX2ZpbHRlciA9IG51bGxwdHI7CisgICAg
bV9maWx0ZXIgPSBDU1NGaWx0ZXI6OmNyZWF0ZShyZW5kZXJlci5zdHlsZSgpLmZpbHRlcigpLCBy
ZW5kZXJpbmdNb2RlLCBzY2FsZUZhY3Rvcik7CiB9CiAKLUdyYXBoaWNzQ29udGV4dCogUmVuZGVy
TGF5ZXJGaWx0ZXJzOjpiZWdpbkZpbHRlckVmZmVjdChHcmFwaGljc0NvbnRleHQmIGRlc3RpbmF0
aW9uQ29udGV4dCwgY29uc3QgTGF5b3V0UmVjdCYgZmlsdGVyQm94UmVjdCwgY29uc3QgTGF5b3V0
UmVjdCYgZGlydHlSZWN0LCBjb25zdCBMYXlvdXRSZWN0JiBsYXllclJlcGFpbnRSZWN0KQorR3Jh
cGhpY3NDb250ZXh0KiBSZW5kZXJMYXllckZpbHRlcnM6OmJlZ2luRmlsdGVyRWZmZWN0KEdyYXBo
aWNzQ29udGV4dCYgZGVzdGluYXRpb25Db250ZXh0LCBSZW5kZXJFbGVtZW50JiByZW5kZXJlciwg
Y29uc3QgTGF5b3V0UmVjdCYgZmlsdGVyQm94UmVjdCwgY29uc3QgTGF5b3V0UmVjdCYgZGlydHlS
ZWN0LCBjb25zdCBMYXlvdXRSZWN0JiBsYXllclJlcGFpbnRSZWN0KQogewogICAgIGlmICghbV9m
aWx0ZXIpCiAgICAgICAgIHJldHVybiBudWxscHRyOwpAQCAtMTQ1LDYgKzEzMywxMyBAQCBHcmFw
aGljc0NvbnRleHQqIFJlbmRlckxheWVyRmlsdGVyczo6YmVnaW5GaWx0ZXJFZmZlY3QoR3JhcGhp
Y3NDb250ZXh0JiBkZXN0aW5hdAogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAogICAgIGJvb2wg
aGFzVXBkYXRlZEJhY2tpbmdTdG9yZSA9IGZpbHRlci51cGRhdGVCYWNraW5nU3RvcmVSZWN0KGZp
bHRlclNvdXJjZVJlY3QpOworICAgIGlmIChoYXNVcGRhdGVkQmFja2luZ1N0b3JlIHx8ICFtX2Zp
bHRlci0+bGFzdEVmZmVjdCgpKSB7CisgICAgICAgIC8vIElmIHRoZSBmaWx0ZXIgZmFpbHMgdG8g
YnVpbGQsIHJlbW92ZSBpdCBmcm9tIHRoZSBsYXllci4gSXQgd2lsbCBzdGlsbCBhdHRlbXB0IHRv
CisgICAgICAgIC8vIGdvIHRocm91Z2ggcmVndWxhciBwcm9jZXNzaW5nIChlLmcuIGNvbXBvc2l0
aW5nKSwgYnV0IG5ldmVyIGFwcGx5IGFueXRoaW5nLgorICAgICAgICBpZiAoIW1fZmlsdGVyLT5i
dWlsZChyZW5kZXJlciwgcmVuZGVyZXIuc3R5bGUoKS5maWx0ZXIoKSwgRmlsdGVyQ29uc3VtZXI6
OkZpbHRlclByb3BlcnR5KSkKKyAgICAgICAgICAgIHJldHVybiBudWxscHRyOworICAgIH0KKyAg
ICAKICAgICBpZiAoIWZpbHRlci5oYXNGaWx0ZXJUaGF0TW92ZXNQaXhlbHMoKSkKICAgICAgICAg
bV9yZXBhaW50UmVjdCA9IGRpcnR5UmVjdDsKICAgICBlbHNlIHsKQEAgLTE1OSw4ICsxNTQsNiBA
QCBHcmFwaGljc0NvbnRleHQqIFJlbmRlckxheWVyRmlsdGVyczo6YmVnaW5GaWx0ZXJFZmZlY3Qo
R3JhcGhpY3NDb250ZXh0JiBkZXN0aW5hdAogICAgIG1fcGFpbnRPZmZzZXQgPSBmaWx0ZXJTb3Vy
Y2VSZWN0LmxvY2F0aW9uKCk7CiAgICAgcmVzZXREaXJ0eVNvdXJjZVJlY3QoKTsKIAotICAgIGZp
bHRlci5kZXRlcm1pbmVGaWx0ZXJQcmltaXRpdmVTdWJyZWdpb24oKTsKLQogICAgIGZpbHRlci5h
bGxvY2F0ZUJhY2tpbmdTdG9yZUlmTmVlZGVkKGRlc3RpbmF0aW9uQ29udGV4dCk7CiAgICAgYXV0
byogc291cmNlR3JhcGhpY3NDb250ZXh0ID0gZmlsdGVyLmlucHV0Q29udGV4dCgpOwogICAgIGlm
ICghc291cmNlR3JhcGhpY3NDb250ZXh0IHx8IGZpbHRlci5maWx0ZXJSZWdpb24oKS5pc0VtcHR5
KCkgfHwgSW1hZ2VCdWZmZXI6OnNpemVOZWVkc0NsYW1waW5nKGZpbHRlci5maWx0ZXJSZWdpb24o
KS5zaXplKCkpKQpAQCAtMTg0LDE0ICsxNzcsMTcgQEAgdm9pZCBSZW5kZXJMYXllckZpbHRlcnM6
OmFwcGx5RmlsdGVyRWZmZWN0KEdyYXBoaWNzQ29udGV4dCYgZGVzdGluYXRpb25Db250ZXh0KQog
ICAgIGF1dG8mIGZpbHRlciA9ICptX2ZpbHRlcjsKICAgICBmaWx0ZXIuaW5wdXRDb250ZXh0KCkt
PnJlc3RvcmUoKTsKIAotICAgIGZpbHRlci5hcHBseSgpOworICAgIGZpbHRlci5hcHBseUZpbHRl
cigpOwogCiAgICAgLy8gR2V0IHRoZSBmaWx0ZXJlZCBvdXRwdXQgYW5kIGRyYXcgaXQgaW4gcGxh
Y2UuCiAgICAgTGF5b3V0UmVjdCBkZXN0UmVjdCA9IGZpbHRlci5vdXRwdXRSZWN0KCk7CiAgICAg
ZGVzdFJlY3QubW92ZShtX3BhaW50T2Zmc2V0LngoKSwgbV9wYWludE9mZnNldC55KCkpOwogCi0g
ICAgaWYgKGF1dG8qIG91dHB1dEJ1ZmZlciA9IGZpbHRlci5vdXRwdXQoKSkKKyAgICBpZiAoYXV0
byogb3V0cHV0QnVmZmVyID0gZmlsdGVyLm91dHB1dCgpKSB7CisgICAgICAgIGRlc3RpbmF0aW9u
Q29udGV4dC5zY2FsZSh7IDEgLyBmaWx0ZXIuZmlsdGVyU2NhbGUoKS53aWR0aCgpLCAxIC8gZmls
dGVyLmZpbHRlclNjYWxlKCkuaGVpZ2h0KCkgfSk7CiAgICAgICAgIGRlc3RpbmF0aW9uQ29udGV4
dC5kcmF3SW1hZ2VCdWZmZXIoKm91dHB1dEJ1ZmZlciwgc25hcFJlY3RUb0RldmljZVBpeGVscyhk
ZXN0UmVjdCwgbV9sYXllci5yZW5kZXJlcigpLmRvY3VtZW50KCkuZGV2aWNlU2NhbGVGYWN0b3Io
KSkpOworICAgICAgICBkZXN0aW5hdGlvbkNvbnRleHQuc2NhbGUoZmlsdGVyLmZpbHRlclNjYWxl
KCkpOworICAgIH0KIAogICAgIGZpbHRlci5jbGVhckludGVybWVkaWF0ZVJlc3VsdHMoKTsKIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyRmlsdGVycy5o
IGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyRmlsdGVycy5oCmluZGV4IDNk
YTE0MGE1Yzg4ZjE1NTMxOTBiNzAwM2Q3ZTc4NDRjOTE5NDViZjcuLjNhNzQ5OTVmMWY4NGJkOTcz
ZWQyYjg4ZDMwNDM5N2I0YzQ0ZGEwMzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJMYXllckZpbHRlcnMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyTGF5ZXJGaWx0ZXJzLmgKQEAgLTYzLDcgKzYzLDcgQEAgcHVibGljOgogICAgIC8vIFBl
ciByZW5kZXIKICAgICBMYXlvdXRSZWN0IHJlcGFpbnRSZWN0KCkgY29uc3QgeyByZXR1cm4gbV9y
ZXBhaW50UmVjdDsgfQogCi0gICAgR3JhcGhpY3NDb250ZXh0KiBiZWdpbkZpbHRlckVmZmVjdChH
cmFwaGljc0NvbnRleHQmIGRlc3RpbmF0aW9uQ29udGV4dCwgY29uc3QgTGF5b3V0UmVjdCYgZmls
dGVyQm94UmVjdCwgY29uc3QgTGF5b3V0UmVjdCYgZGlydHlSZWN0LCBjb25zdCBMYXlvdXRSZWN0
JiBsYXllclJlcGFpbnRSZWN0KTsKKyAgICBHcmFwaGljc0NvbnRleHQqIGJlZ2luRmlsdGVyRWZm
ZWN0KEdyYXBoaWNzQ29udGV4dCYgZGVzdGluYXRpb25Db250ZXh0LCBSZW5kZXJFbGVtZW50Jiwg
Y29uc3QgTGF5b3V0UmVjdCYgZmlsdGVyQm94UmVjdCwgY29uc3QgTGF5b3V0UmVjdCYgZGlydHlS
ZWN0LCBjb25zdCBMYXlvdXRSZWN0JiBsYXllclJlcGFpbnRSZWN0KTsKICAgICB2b2lkIGFwcGx5
RmlsdGVyRWZmZWN0KEdyYXBoaWNzQ29udGV4dCYgZGVzdGluYXRpb25Db250ZXh0KTsKIAogcHJp
dmF0ZToKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZH
UmVzb3VyY2VGaWx0ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJT
VkdSZXNvdXJjZUZpbHRlci5jcHAKaW5kZXggMTk1MDlkOTcxOGFmZjExMGY4NDFlYzQ5NzZmOTdm
YjFhOTM0ZDhhNS4uYmU2YWY3MzM1MmExYTYzZGEzODc1YmM4NzA3OTA2YmRmYzVmMzQyYiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZUZp
bHRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNv
dXJjZUZpbHRlci5jcHAKQEAgLTgyLDQwICs4Miw2IEBAIHZvaWQgUmVuZGVyU1ZHUmVzb3VyY2VG
aWx0ZXI6OnJlbW92ZUNsaWVudEZyb21DYWNoZShSZW5kZXJFbGVtZW50JiBjbGllbnQsIGJvb2wK
ICAgICBtYXJrQ2xpZW50Rm9ySW52YWxpZGF0aW9uKGNsaWVudCwgbWFya0ZvckludmFsaWRhdGlv
biA/IEJvdW5kYXJpZXNJbnZhbGlkYXRpb24gOiBQYXJlbnRPbmx5SW52YWxpZGF0aW9uKTsKIH0K
IAotc3RkOjp1bmlxdWVfcHRyPFNWR0ZpbHRlckJ1aWxkZXI+IFJlbmRlclNWR1Jlc291cmNlRmls
dGVyOjpidWlsZFByaW1pdGl2ZXMoU1ZHRmlsdGVyJiBmaWx0ZXIpIGNvbnN0Ci17Ci0gICAgc3Rh
dGljIGNvbnN0IHVuc2lnbmVkIG1heENvdW50Q2hpbGROb2RlcyA9IDIwMDsKLSAgICBpZiAoZmls
dGVyRWxlbWVudCgpLmNvdW50Q2hpbGROb2RlcygpID4gbWF4Q291bnRDaGlsZE5vZGVzKQotICAg
ICAgICByZXR1cm4gbnVsbHB0cjsKLQotICAgIEZsb2F0UmVjdCB0YXJnZXRCb3VuZGluZ0JveCA9
IGZpbHRlci50YXJnZXRCb3VuZGluZ0JveCgpOwotCi0gICAgLy8gQWRkIGVmZmVjdHMgdG8gdGhl
IGJ1aWxkZXIKLSAgICBhdXRvIGJ1aWxkZXIgPSBtYWtlVW5pcXVlPFNWR0ZpbHRlckJ1aWxkZXI+
KFNvdXJjZUdyYXBoaWM6OmNyZWF0ZShmaWx0ZXIpKTsKLSAgICBidWlsZGVyLT5zZXRQcmltaXRp
dmVVbml0cyhmaWx0ZXJFbGVtZW50KCkucHJpbWl0aXZlVW5pdHMoKSk7Ci0gICAgYnVpbGRlci0+
c2V0VGFyZ2V0Qm91bmRpbmdCb3godGFyZ2V0Qm91bmRpbmdCb3gpOwotICAgIAotICAgIGZvciAo
YXV0byYgZWxlbWVudCA6IGNoaWxkcmVuT2ZUeXBlPFNWR0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJk
QXR0cmlidXRlcz4oZmlsdGVyRWxlbWVudCgpKSkgewotICAgICAgICBhdXRvIGVmZmVjdCA9IGVs
ZW1lbnQuYnVpbGQoYnVpbGRlci5nZXQoKSwgZmlsdGVyKTsKLSAgICAgICAgaWYgKCFlZmZlY3Qp
IHsKLSAgICAgICAgICAgIGJ1aWxkZXItPmNsZWFyRWZmZWN0cygpOwotICAgICAgICAgICAgcmV0
dXJuIG51bGxwdHI7Ci0gICAgICAgIH0KLSAgICAgICAgYnVpbGRlci0+YXBwZW5kRWZmZWN0VG9F
ZmZlY3RSZWZlcmVuY2VzKGVmZmVjdC5jb3B5UmVmKCksIGVsZW1lbnQucmVuZGVyZXIoKSk7Ci0g
ICAgICAgIGVsZW1lbnQuc2V0U3RhbmRhcmRBdHRyaWJ1dGVzKGVmZmVjdC5nZXQoKSk7Ci0gICAg
ICAgIGVmZmVjdC0+c2V0RWZmZWN0Qm91bmRhcmllcyhTVkdMZW5ndGhDb250ZXh0OjpyZXNvbHZl
UmVjdGFuZ2xlPFNWR0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlcz4oJmVsZW1lbnQs
IGZpbHRlckVsZW1lbnQoKS5wcmltaXRpdmVVbml0cygpLCB0YXJnZXRCb3VuZGluZ0JveCkpOwot
ICAgICAgICBpZiAoZWxlbWVudC5yZW5kZXJlcigpKSB7Ci0jaWYgRU5BQkxFKERFU1RJTkFUSU9O
X0NPTE9SX1NQQUNFX0xJTkVBUl9TUkdCKQotICAgICAgICAgICAgZWZmZWN0LT5zZXRPcGVyYXRp
bmdDb2xvclNwYWNlKGVsZW1lbnQucmVuZGVyZXIoKS0+c3R5bGUoKS5zdmdTdHlsZSgpLmNvbG9y
SW50ZXJwb2xhdGlvbkZpbHRlcnMoKSA9PSBDb2xvckludGVycG9sYXRpb246OkxpbmVhclJHQiA/
IERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6TGluZWFyU1JHQigpIDogRGVzdGluYXRpb25Db2xvclNw
YWNlOjpTUkdCKCkpOwotI2Vsc2UKLSAgICAgICAgICAgIGVmZmVjdC0+c2V0T3BlcmF0aW5nQ29s
b3JTcGFjZShEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0IoKSk7Ci0jZW5kaWYKLSAgICAgICAg
fQotICAgICAgICBidWlsZGVyLT5hZGQoZWxlbWVudC5yZXN1bHQoKSwgV1RGTW92ZShlZmZlY3Qp
KTsKLSAgICB9Ci0gICAgcmV0dXJuIGJ1aWxkZXI7Ci19Ci0KIGJvb2wgUmVuZGVyU1ZHUmVzb3Vy
Y2VGaWx0ZXI6OmFwcGx5UmVzb3VyY2UoUmVuZGVyRWxlbWVudCYgcmVuZGVyZXIsIGNvbnN0IFJl
bmRlclN0eWxlJiwgR3JhcGhpY3NDb250ZXh0KiYgY29udGV4dCwgT3B0aW9uU2V0PFJlbmRlclNW
R1Jlc291cmNlTW9kZT4gcmVzb3VyY2VNb2RlKQogewogICAgIEFTU0VSVChjb250ZXh0KTsKQEAg
LTE0Myw0NSArMTA5LDM2IEBAIGJvb2wgUmVuZGVyU1ZHUmVzb3VyY2VGaWx0ZXI6OmFwcGx5UmVz
b3VyY2UoUmVuZGVyRWxlbWVudCYgcmVuZGVyZXIsIGNvbnN0IFJlbmRlCiAgICAgICAgIHJldHVy
biBmYWxzZTsKIAogICAgIC8vIEVsaW1pbmF0ZSBzaGVhciBvZiB0aGUgYWJzb2x1dGUgdHJhbnNm
b3JtYXRpb24gbWF0cml4LCB0byBiZSBhYmxlIHRvIHByb2R1Y2UgdW5zaGVhcmVkIHRpbGUgaW1h
Z2VzIGZvciBmZVRpbGUuCi0gICAgZmlsdGVyRGF0YS0+c2hlYXJGcmVlQWJzb2x1dGVUcmFuc2Zv
cm0gPSBBZmZpbmVUcmFuc2Zvcm0oYWJzb2x1dGVUcmFuc2Zvcm0ueFNjYWxlKCksIDAsIDAsIGFi
c29sdXRlVHJhbnNmb3JtLnlTY2FsZSgpLCAwLCAwKTsKKyAgICBGbG9hdFNpemUgZmlsdGVyU2Nh
bGUoYWJzb2x1dGVUcmFuc2Zvcm0ueFNjYWxlKCksIGFic29sdXRlVHJhbnNmb3JtLnlTY2FsZSgp
KTsKIAogICAgIC8vIERldGVybWluZSBhYnNvbHV0ZSBib3VuZGFyaWVzIG9mIHRoZSBmaWx0ZXIg
YW5kIHRoZSBkcmF3aW5nIHJlZ2lvbi4KICAgICBmaWx0ZXJEYXRhLT5kcmF3aW5nUmVnaW9uID0g
cmVuZGVyZXIuc3Ryb2tlQm91bmRpbmdCb3goKTsKICAgICBmaWx0ZXJEYXRhLT5kcmF3aW5nUmVn
aW9uLmludGVyc2VjdChmaWx0ZXJEYXRhLT5ib3VuZGFyaWVzKTsKLSAgICBGbG9hdFJlY3QgYWJz
b2x1dGVEcmF3aW5nUmVnaW9uID0gZmlsdGVyRGF0YS0+c2hlYXJGcmVlQWJzb2x1dGVUcmFuc2Zv
cm0ubWFwUmVjdChmaWx0ZXJEYXRhLT5kcmF3aW5nUmVnaW9uKTsKLQotICAgIC8vIENyZWF0ZSB0
aGUgU1ZHRmlsdGVyIG9iamVjdC4KLSAgICBib29sIHByaW1pdGl2ZUJvdW5kaW5nQm94TW9kZSA9
IGZpbHRlckVsZW1lbnQoKS5wcmltaXRpdmVVbml0cygpID09IFNWR1VuaXRUeXBlczo6U1ZHX1VO
SVRfVFlQRV9PQkpFQ1RCT1VORElOR0JPWDsKLSAgICBmaWx0ZXJEYXRhLT5maWx0ZXIgPSBTVkdG
aWx0ZXI6OmNyZWF0ZShmaWx0ZXJEYXRhLT5zaGVhckZyZWVBYnNvbHV0ZVRyYW5zZm9ybSwgYWJz
b2x1dGVEcmF3aW5nUmVnaW9uLCB0YXJnZXRCb3VuZGluZ0JveCwgZmlsdGVyRGF0YS0+Ym91bmRh
cmllcywgcHJpbWl0aXZlQm91bmRpbmdCb3hNb2RlKTsKLQotICAgIC8vIENyZWF0ZSBhbGwgcmVs
ZXZhbnQgZmlsdGVyIHByaW1pdGl2ZXMuCi0gICAgZmlsdGVyRGF0YS0+YnVpbGRlciA9IGJ1aWxk
UHJpbWl0aXZlcygqZmlsdGVyRGF0YS0+ZmlsdGVyKTsKLSAgICBpZiAoIWZpbHRlckRhdGEtPmJ1
aWxkZXIpCi0gICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgIC8vIERldGVybWluZSBzY2FsZSBm
YWN0b3IgZm9yIGZpbHRlci4gVGhlIHNpemUgb2YgaW50ZXJtZWRpYXRlIEltYWdlQnVmZmVycyBz
aG91bGRuJ3QgYmUgYmlnZ2VyIHRoYW4ga01heEZpbHRlclNpemUuCi0gICAgRmxvYXRSZWN0IHRl
bXBTb3VyY2VSZWN0ID0gYWJzb2x1dGVEcmF3aW5nUmVnaW9uOwotICAgIEZsb2F0U2l6ZSBzY2Fs
ZSgxLCAxKTsKLSAgICBJbWFnZUJ1ZmZlcjo6c2l6ZU5lZWRzQ2xhbXBpbmcodGVtcFNvdXJjZVJl
Y3Quc2l6ZSgpLCBzY2FsZSk7Ci0gICAgdGVtcFNvdXJjZVJlY3Quc2NhbGUoc2NhbGUud2lkdGgo
KSwgc2NhbGUuaGVpZ2h0KCkpOwotCi0gICAgLy8gU2V0IHRoZSBzY2FsZSBsZXZlbCBpbiBTVkdG
aWx0ZXIuCi0gICAgZmlsdGVyRGF0YS0+ZmlsdGVyLT5zZXRGaWx0ZXJSZXNvbHV0aW9uKHNjYWxl
KTsKKyAgICBGbG9hdFJlY3QgYWJzb2x1dGVEcmF3aW5nUmVnaW9uID0gZmlsdGVyRGF0YS0+ZHJh
d2luZ1JlZ2lvbjsKKyAgICBhYnNvbHV0ZURyYXdpbmdSZWdpb24uc2NhbGUoZmlsdGVyU2NhbGUp
OworICAgIEltYWdlQnVmZmVyOjpzaXplTmVlZHNDbGFtcGluZyhhYnNvbHV0ZURyYXdpbmdSZWdp
b24uc2l6ZSgpLCBmaWx0ZXJTY2FsZSk7CiAKLSAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgbWF4
VG90YWxPZkVmZmVjdElucHV0cyA9IDEwMDsKLSAgICBGaWx0ZXJFZmZlY3QqIGxhc3RFZmZlY3Qg
PSBmaWx0ZXJEYXRhLT5idWlsZGVyLT5sYXN0RWZmZWN0KCk7Ci0gICAgaWYgKCFsYXN0RWZmZWN0
IHx8IGxhc3RFZmZlY3QtPnRvdGFsTnVtYmVyT2ZFZmZlY3RJbnB1dHMoKSA+IG1heFRvdGFsT2ZF
ZmZlY3RJbnB1dHMpCisgICAgLy8gQ3JlYXRlIHRoZSBTVkdGaWx0ZXIgb2JqZWN0LgorICAgIGZp
bHRlckRhdGEtPmJ1aWxkZXIgPSBtYWtlVW5pcXVlPFNWR0ZpbHRlckJ1aWxkZXI+KCk7CisgICAg
ZmlsdGVyRGF0YS0+ZmlsdGVyID0gU1ZHRmlsdGVyOjpjcmVhdGUoZmlsdGVyRWxlbWVudCgpLCAq
ZmlsdGVyRGF0YS0+YnVpbGRlciwgZmlsdGVyU2NhbGUsIGFic29sdXRlRHJhd2luZ1JlZ2lvbiwg
ZmlsdGVyRGF0YS0+Ym91bmRhcmllcywgdGFyZ2V0Qm91bmRpbmdCb3gpOworICAgIGlmICghZmls
dGVyRGF0YS0+ZmlsdGVyKQogICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgCisgICAgYXV0byBs
YXN0RWZmZWN0ID0gZmlsdGVyRGF0YS0+YnVpbGRlci0+bGFzdEVmZmVjdCgpOworICAgIEFTU0VS
VChsYXN0RWZmZWN0KTsKIAogICAgIExPR19XSVRIX1NUUkVBTShGaWx0ZXJzLCBzdHJlYW0gPDwg
IlJlbmRlclNWR1Jlc291cmNlRmlsdGVyOjphcHBseVJlc291cmNlXG4iIDw8ICpmaWx0ZXJEYXRh
LT5idWlsZGVyLT5sYXN0RWZmZWN0KCkpOwogCi0gICAgbGFzdEVmZmVjdC0+ZGV0ZXJtaW5lRmls
dGVyUHJpbWl0aXZlU3VicmVnaW9uKCk7CisgICAgbGFzdEVmZmVjdC0+ZGV0ZXJtaW5lRmlsdGVy
UHJpbWl0aXZlU3VicmVnaW9uKCpmaWx0ZXJEYXRhLT5maWx0ZXIpOwogICAgIEZsb2F0UmVjdCBz
dWJSZWdpb24gPSBsYXN0RWZmZWN0LT5tYXhFZmZlY3RSZWN0KCk7CisKICAgICAvLyBBdCBsZWFz
dCBvbmUgRmlsdGVyRWZmZWN0IGhhcyBhIHRvbyBiaWcgaW1hZ2Ugc2l6ZSwKICAgICAvLyByZWNh
bGN1bGF0ZSB0aGUgZWZmZWN0IHNpemVzIHdpdGggbmV3IHNjYWxlIGZhY3RvcnMuCi0gICAgaWYg
KEltYWdlQnVmZmVyOjpzaXplTmVlZHNDbGFtcGluZyhzdWJSZWdpb24uc2l6ZSgpLCBzY2FsZSkp
IHsKLSAgICAgICAgZmlsdGVyRGF0YS0+ZmlsdGVyLT5zZXRGaWx0ZXJSZXNvbHV0aW9uKHNjYWxl
KTsKLSAgICAgICAgbGFzdEVmZmVjdC0+ZGV0ZXJtaW5lRmlsdGVyUHJpbWl0aXZlU3VicmVnaW9u
KCk7CisgICAgaWYgKEltYWdlQnVmZmVyOjpzaXplTmVlZHNDbGFtcGluZyhzdWJSZWdpb24uc2l6
ZSgpLCBmaWx0ZXJTY2FsZSkpIHsKKyAgICAgICAgZmlsdGVyRGF0YS0+ZmlsdGVyLT5zZXRGaWx0
ZXJTY2FsZShmaWx0ZXJTY2FsZSk7CisgICAgICAgIGxhc3RFZmZlY3QtPmRldGVybWluZUZpbHRl
clByaW1pdGl2ZVN1YnJlZ2lvbigqZmlsdGVyRGF0YS0+ZmlsdGVyKTsKICAgICB9CiAKICAgICAv
LyBJZiB0aGUgZHJhd2luZ1JlZ2lvbiBpcyBlbXB0eSwgd2UgaGF2ZSBzb21ldGhpbmcgbGlrZSA8
ZyBmaWx0ZXI9Ii4uIi8+LgpAQCAtMTk0LDkgKzE1MSw3IEBAIGJvb2wgUmVuZGVyU1ZHUmVzb3Vy
Y2VGaWx0ZXI6OmFwcGx5UmVzb3VyY2UoUmVuZGVyRWxlbWVudCYgcmVuZGVyZXIsIGNvbnN0IFJl
bmRlCiAgICAgfQogCiAgICAgLy8gQ2hhbmdlIHRoZSBjb29yZGluYXRlIHRyYW5zZm9ybWF0aW9u
IGFwcGxpZWQgdG8gdGhlIGZpbHRlcmVkIGVsZW1lbnQgdG8gcmVmbGVjdCB0aGUgcmVzb2x1dGlv
biBvZiB0aGUgZmlsdGVyLgotICAgIEFmZmluZVRyYW5zZm9ybSBlZmZlY3RpdmVUcmFuc2Zvcm07
Ci0gICAgZWZmZWN0aXZlVHJhbnNmb3JtLnNjYWxlKHNjYWxlLndpZHRoKCksIHNjYWxlLmhlaWdo
dCgpKTsKLSAgICBlZmZlY3RpdmVUcmFuc2Zvcm0ubXVsdGlwbHkoZmlsdGVyRGF0YS0+c2hlYXJG
cmVlQWJzb2x1dGVUcmFuc2Zvcm0pOworICAgIEFmZmluZVRyYW5zZm9ybSBlZmZlY3RpdmVUcmFu
c2Zvcm0gPSBBZmZpbmVUcmFuc2Zvcm0oZmlsdGVyU2NhbGUud2lkdGgoKSwgMCwgMCwgZmlsdGVy
U2NhbGUuaGVpZ2h0KCksIDAsIDApOwogCiAgICAgYXV0byByZW5kZXJpbmdNb2RlID0gcmVuZGVy
ZXIuc2V0dGluZ3MoKS5hY2NlbGVyYXRlZEZpbHRlcnNFbmFibGVkKCkgPyBSZW5kZXJpbmdNb2Rl
OjpBY2NlbGVyYXRlZCA6IFJlbmRlcmluZ01vZGU6OlVuYWNjZWxlcmF0ZWQ7CiAjaWYgRU5BQkxF
KERFU1RJTkFUSU9OX0NPTE9SX1NQQUNFX0xJTkVBUl9TUkdCKQpAQCAtMjY5LDcgKzIyNCw3IEBA
IHZvaWQgUmVuZGVyU1ZHUmVzb3VyY2VGaWx0ZXI6OnBvc3RBcHBseVJlc291cmNlKFJlbmRlckVs
ZW1lbnQmIHJlbmRlcmVyLCBHcmFwaGljCiAgICAgICAgIGJyZWFrOwogICAgIH0KIAotICAgIEZp
bHRlckVmZmVjdCogbGFzdEVmZmVjdCA9IGZpbHRlckRhdGEuYnVpbGRlci0+bGFzdEVmZmVjdCgp
OworICAgIGF1dG8gbGFzdEVmZmVjdCA9IGZpbHRlckRhdGEuZmlsdGVyLT5sYXN0RWZmZWN0KCk7
CiAKICAgICBpZiAobGFzdEVmZmVjdCAmJiAhZmlsdGVyRGF0YS5ib3VuZGFyaWVzLmlzRW1wdHko
KSAmJiAhbGFzdEVmZmVjdC0+ZmlsdGVyUHJpbWl0aXZlU3VicmVnaW9uKCkuaXNFbXB0eSgpKSB7
CiAgICAgICAgIC8vIFRoaXMgaXMgdGhlIHJlYWwgZmlsdGVyaW5nIG9mIHRoZSBvYmplY3QuIEl0
IGp1c3QgbmVlZHMgdG8gYmUgY2FsbGVkIG9uIHRoZQpAQCAtMjgxLDcgKzIzNiw3IEBAIHZvaWQg
UmVuZGVyU1ZHUmVzb3VyY2VGaWx0ZXI6OnBvc3RBcHBseVJlc291cmNlKFJlbmRlckVsZW1lbnQm
IHJlbmRlcmVyLCBHcmFwaGljCiAgICAgICAgIC8vIEFsd2F5cyB0cnVlIGlmIGZpbHRlckRhdGEg
aXMganVzdCBidWlsdCAoZmlsdGVyRGF0YS0+c3RhdGUgPT0gRmlsdGVyRGF0YTo6QnVpbHQpLgog
ICAgICAgICBpZiAoIWxhc3RFZmZlY3QtPmhhc1Jlc3VsdCgpKSB7CiAgICAgICAgICAgICBmaWx0
ZXJEYXRhLnN0YXRlID0gRmlsdGVyRGF0YTo6QXBwbHlpbmc7Ci0gICAgICAgICAgICBsYXN0RWZm
ZWN0LT5hcHBseSgpOworICAgICAgICAgICAgbGFzdEVmZmVjdC0+YXBwbHkoKmZpbHRlckRhdGEu
ZmlsdGVyKTsKICAgICAgICAgICAgIGxhc3RFZmZlY3QtPmNvcnJlY3RGaWx0ZXJSZXN1bHRJZk5l
ZWRlZCgpOwogICAgICAgICAgICAgbGFzdEVmZmVjdC0+dHJhbnNmb3JtUmVzdWx0Q29sb3JTcGFj
ZShEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0IoKSk7CiAgICAgICAgIH0KQEAgLTI4OSwxMyAr
MjQ0LDkgQEAgdm9pZCBSZW5kZXJTVkdSZXNvdXJjZUZpbHRlcjo6cG9zdEFwcGx5UmVzb3VyY2Uo
UmVuZGVyRWxlbWVudCYgcmVuZGVyZXIsIEdyYXBoaWMKIAogICAgICAgICBJbWFnZUJ1ZmZlciog
cmVzdWx0SW1hZ2UgPSBsYXN0RWZmZWN0LT5pbWFnZUJ1ZmZlclJlc3VsdCgpOwogICAgICAgICBp
ZiAocmVzdWx0SW1hZ2UpIHsKLSAgICAgICAgICAgIGNvbnRleHQtPmNvbmNhdENUTShmaWx0ZXJE
YXRhLnNoZWFyRnJlZUFic29sdXRlVHJhbnNmb3JtLmludmVyc2UoKS52YWx1ZV9vcihBZmZpbmVU
cmFuc2Zvcm0oKSkpOwotCi0gICAgICAgICAgICBjb250ZXh0LT5zY2FsZShGbG9hdFNpemUoMSAv
IGZpbHRlckRhdGEuZmlsdGVyLT5maWx0ZXJSZXNvbHV0aW9uKCkud2lkdGgoKSwgMSAvIGZpbHRl
ckRhdGEuZmlsdGVyLT5maWx0ZXJSZXNvbHV0aW9uKCkuaGVpZ2h0KCkpKTsKKyAgICAgICAgICAg
IGNvbnRleHQtPnNjYWxlKEZsb2F0U2l6ZSgxIC8gZmlsdGVyRGF0YS5maWx0ZXItPmZpbHRlclNj
YWxlKCkud2lkdGgoKSwgMSAvIGZpbHRlckRhdGEuZmlsdGVyLT5maWx0ZXJTY2FsZSgpLmhlaWdo
dCgpKSk7CiAgICAgICAgICAgICBjb250ZXh0LT5kcmF3SW1hZ2VCdWZmZXIoKnJlc3VsdEltYWdl
LCBsYXN0RWZmZWN0LT5hYnNvbHV0ZVBhaW50UmVjdCgpKTsKLSAgICAgICAgICAgIGNvbnRleHQt
PnNjYWxlKGZpbHRlckRhdGEuZmlsdGVyLT5maWx0ZXJSZXNvbHV0aW9uKCkpOwotCi0gICAgICAg
ICAgICBjb250ZXh0LT5jb25jYXRDVE0oZmlsdGVyRGF0YS5zaGVhckZyZWVBYnNvbHV0ZVRyYW5z
Zm9ybSk7CisgICAgICAgICAgICBjb250ZXh0LT5zY2FsZShmaWx0ZXJEYXRhLmZpbHRlci0+Zmls
dGVyU2NhbGUoKSk7CiAgICAgICAgIH0KICAgICB9CiAgICAgZmlsdGVyRGF0YS5zb3VyY2VHcmFw
aGljQnVmZmVyID0gbnVsbHB0cjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9zdmcvU1ZHUmVuZGVyVHJlZUFzVGV4dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
c3ZnL1NWR1JlbmRlclRyZWVBc1RleHQuY3BwCmluZGV4IGM2NTAyMWJlZTAzNTU2NWFhYjMxYzY3
ZmI5MzE5Zjg4ZTYxODA3YzcuLjY0ZTNhYzVhZWFjODBhZGY5ZTI2YWI0ZWY2Yjg1YTI3YzI1NDJk
MTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvU1ZHUmVuZGVyVHJl
ZUFzVGV4dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9TVkdSZW5kZXJU
cmVlQXNUZXh0LmNwcApAQCAtNDMyLDExICs0MzIsMTMgQEAgdm9pZCB3cml0ZVNWR1Jlc291cmNl
Q29udGFpbmVyKFRleHRTdHJlYW0mIHRzLCBjb25zdCBSZW5kZXJTVkdSZXNvdXJjZUNvbnRhaW5l
ciYKICAgICAgICAgdHMgPDwgIlxuIjsKICAgICAgICAgLy8gQ3JlYXRpbmcgYSBwbGFjZWhvbGRl
ciBmaWx0ZXIgd2hpY2ggaXMgcGFzc2VkIHRvIHRoZSBidWlsZGVyLgogICAgICAgICBGbG9hdFJl
Y3QgZHVtbXlSZWN0OwotICAgICAgICBhdXRvIGR1bW15RmlsdGVyID0gU1ZHRmlsdGVyOjpjcmVh
dGUoQWZmaW5lVHJhbnNmb3JtKCksIGR1bW15UmVjdCwgZHVtbXlSZWN0LCBkdW1teVJlY3QsIHRy
dWUpOwotICAgICAgICBpZiAoYXV0byBidWlsZGVyID0gZmlsdGVyLmJ1aWxkUHJpbWl0aXZlcyhk
dW1teUZpbHRlci5nZXQoKSkpIHsKKyAgICAgICAgRmxvYXRTaXplIGR1bW15U2NhbGUoMSwgMSk7
CisgICAgICAgIFNWR0ZpbHRlckJ1aWxkZXIgYnVpbGRlcjsKKyAgICAgICAgYXV0byBkdW1teUZp
bHRlciA9IFNWR0ZpbHRlcjo6Y3JlYXRlKGZpbHRlci5maWx0ZXJFbGVtZW50KCksIGJ1aWxkZXIs
IGR1bW15U2NhbGUsIGR1bW15UmVjdCwgZHVtbXlSZWN0LCBkdW1teVJlY3QpOworICAgICAgICBp
ZiAoZHVtbXlGaWx0ZXIpIHsKICAgICAgICAgICAgIFRleHRTdHJlYW06OkluZGVudFNjb3BlIGlu
ZGVudFNjb3BlKHRzKTsKIAotICAgICAgICAgICAgaWYgKEZpbHRlckVmZmVjdCogbGFzdEVmZmVj
dCA9IGJ1aWxkZXItPmxhc3RFZmZlY3QoKSkKKyAgICAgICAgICAgIGlmIChhdXRvIGxhc3RFZmZl
Y3QgPSBkdW1teUZpbHRlci0+bGFzdEVmZmVjdCgpKQogICAgICAgICAgICAgICAgIGxhc3RFZmZl
Y3QtPmV4dGVybmFsUmVwcmVzZW50YXRpb24odHMpOwogICAgICAgICB9CiAgICAgfSBlbHNlIGlm
IChyZXNvdXJjZS5yZXNvdXJjZVR5cGUoKSA9PSBDbGlwcGVyUmVzb3VyY2VUeXBlKSB7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVCbGVuZEVsZW1lbnQuY3BwIGIvU291cmNl
L1dlYkNvcmUvc3ZnL1NWR0ZFQmxlbmRFbGVtZW50LmNwcAppbmRleCA3YmNmMDQxODAwZjc5OWYx
MTc0Y2ZlMDRiODIyZDZkMDY0MzFmNjg2Li4wNTQwYzhlNDQwODJkNWM2MWYwMGY4ZmI3MzVjMzYx
ODJkMTBmYTdmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVCbGVuZEVsZW1l
bnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRUJsZW5kRWxlbWVudC5jcHAKQEAg
LTEwMCwxOSArMTAwLDE2IEBAIHZvaWQgU1ZHRkVCbGVuZEVsZW1lbnQ6OnN2Z0F0dHJpYnV0ZUNo
YW5nZWQoY29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0ck5hbWUpCiAgICAgU1ZHRmlsdGVyUHJpbWl0
aXZlU3RhbmRhcmRBdHRyaWJ1dGVzOjpzdmdBdHRyaWJ1dGVDaGFuZ2VkKGF0dHJOYW1lKTsKIH0K
IAotUmVmUHRyPEZpbHRlckVmZmVjdD4gU1ZHRkVCbGVuZEVsZW1lbnQ6OmJ1aWxkKFNWR0ZpbHRl
ckJ1aWxkZXIqIGZpbHRlckJ1aWxkZXIsIEZpbHRlciYgZmlsdGVyKSBjb25zdAorUmVmUHRyPEZp
bHRlckVmZmVjdD4gU1ZHRkVCbGVuZEVsZW1lbnQ6OmJ1aWxkKFNWR0ZpbHRlckJ1aWxkZXImIGZp
bHRlckJ1aWxkZXIpIGNvbnN0CiB7Ci0gICAgYXV0byBpbnB1dDEgPSBmaWx0ZXJCdWlsZGVyLT5n
ZXRFZmZlY3RCeUlkKGluMSgpKTsKLSAgICBhdXRvIGlucHV0MiA9IGZpbHRlckJ1aWxkZXItPmdl
dEVmZmVjdEJ5SWQoaW4yKCkpOworICAgIGF1dG8gaW5wdXQxID0gZmlsdGVyQnVpbGRlci5nZXRF
ZmZlY3RCeUlkKGluMSgpKTsKKyAgICBhdXRvIGlucHV0MiA9IGZpbHRlckJ1aWxkZXIuZ2V0RWZm
ZWN0QnlJZChpbjIoKSk7CiAKICAgICBpZiAoIWlucHV0MSB8fCAhaW5wdXQyKQogICAgICAgICBy
ZXR1cm4gbnVsbHB0cjsKIAotICAgIGF1dG8gZWZmZWN0ID0gRkVCbGVuZDo6Y3JlYXRlKGZpbHRl
ciwgbW9kZSgpKTsKLSAgICBGaWx0ZXJFZmZlY3RWZWN0b3ImIGlucHV0RWZmZWN0cyA9IGVmZmVj
dC0+aW5wdXRFZmZlY3RzKCk7Ci0gICAgaW5wdXRFZmZlY3RzLnJlc2VydmVDYXBhY2l0eSgyKTsK
LSAgICBpbnB1dEVmZmVjdHMuYXBwZW5kKGlucHV0MSk7Ci0gICAgaW5wdXRFZmZlY3RzLmFwcGVu
ZChpbnB1dDIpOyAgICAKKyAgICBhdXRvIGVmZmVjdCA9IEZFQmxlbmQ6OmNyZWF0ZShtb2RlKCkp
OworICAgIGVmZmVjdC0+aW5wdXRFZmZlY3RzKCkgPSB7IFdURk1vdmUoaW5wdXQxKSwgV1RGTW92
ZShpbnB1dDIpIH07CiAgICAgcmV0dXJuIGVmZmVjdDsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvc3ZnL1NWR0ZFQmxlbmRFbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZH
RkVCbGVuZEVsZW1lbnQuaAppbmRleCA5MDM3Y2IxMjFmOTM2N2I3ODhkOTIxNmUwYjk0MWZjOGIw
NmRlYzY2Li5lYmE5YWJiNTgzMjhmNGRhYmYzNDI4YjZiMTdkYmY1ODIzNzY4NDA4IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVCbGVuZEVsZW1lbnQuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9zdmcvU1ZHRkVCbGVuZEVsZW1lbnQuaApAQCAtNjksNyArNjksNyBAQCBwcml2YXRl
OgogICAgIHZvaWQgcGFyc2VBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYsIGNvbnN0IEF0
b21TdHJpbmcmKSBvdmVycmlkZTsKICAgICB2b2lkIHN2Z0F0dHJpYnV0ZUNoYW5nZWQoY29uc3Qg
UXVhbGlmaWVkTmFtZSYpIG92ZXJyaWRlOwogCi0gICAgUmVmUHRyPEZpbHRlckVmZmVjdD4gYnVp
bGQoU1ZHRmlsdGVyQnVpbGRlciosIEZpbHRlciYpIGNvbnN0IG92ZXJyaWRlOworICAgIFJlZlB0
cjxGaWx0ZXJFZmZlY3Q+IGJ1aWxkKFNWR0ZpbHRlckJ1aWxkZXImKSBjb25zdCBvdmVycmlkZTsK
ICAgICBib29sIHNldEZpbHRlckVmZmVjdEF0dHJpYnV0ZShGaWx0ZXJFZmZlY3QqLCBjb25zdCBR
dWFsaWZpZWROYW1lJiBhdHRyTmFtZSkgb3ZlcnJpZGU7CiAKICAgICBQcm9wZXJ0eVJlZ2lzdHJ5
IG1fcHJvcGVydHlSZWdpc3RyeSB7ICp0aGlzIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9zdmcvU1ZHRkVDb2xvck1hdHJpeEVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NW
R0ZFQ29sb3JNYXRyaXhFbGVtZW50LmNwcAppbmRleCAwNTI0ODU3OGMyNzRjOGZhMmIzZTFmMjQ0
ZTQzNjc4NjhmNDJiYTljLi5jZGViZWYxOGExZmRjYmI4ZjNmYjM1ZmI4MzhhYzYwNGM5YTIzZDY1
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVDb2xvck1hdHJpeEVsZW1lbnQu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRUNvbG9yTWF0cml4RWxlbWVudC5jcHAK
QEAgLTEwMCw5ICsxMDAsOSBAQCB2b2lkIFNWR0ZFQ29sb3JNYXRyaXhFbGVtZW50OjpzdmdBdHRy
aWJ1dGVDaGFuZ2VkKGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0dHJOYW1lKQogICAgIFNWR0ZpbHRl
clByaW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlczo6c3ZnQXR0cmlidXRlQ2hhbmdlZChhdHRyTmFt
ZSk7CiB9CiAKLVJlZlB0cjxGaWx0ZXJFZmZlY3Q+IFNWR0ZFQ29sb3JNYXRyaXhFbGVtZW50Ojpi
dWlsZChTVkdGaWx0ZXJCdWlsZGVyKiBmaWx0ZXJCdWlsZGVyLCBGaWx0ZXImIGZpbHRlcikgY29u
c3QKK1JlZlB0cjxGaWx0ZXJFZmZlY3Q+IFNWR0ZFQ29sb3JNYXRyaXhFbGVtZW50OjpidWlsZChT
VkdGaWx0ZXJCdWlsZGVyJiBmaWx0ZXJCdWlsZGVyKSBjb25zdAogewotICAgIGF1dG8gaW5wdXQx
ID0gZmlsdGVyQnVpbGRlci0+Z2V0RWZmZWN0QnlJZChpbjEoKSk7CisgICAgYXV0byBpbnB1dDEg
PSBmaWx0ZXJCdWlsZGVyLmdldEVmZmVjdEJ5SWQoaW4xKCkpOwogCiAgICAgaWYgKCFpbnB1dDEp
CiAgICAgICAgIHJldHVybiBudWxscHRyOwpAQCAtMTQxLDggKzE0MSw4IEBAIFJlZlB0cjxGaWx0
ZXJFZmZlY3Q+IFNWR0ZFQ29sb3JNYXRyaXhFbGVtZW50OjpidWlsZChTVkdGaWx0ZXJCdWlsZGVy
KiBmaWx0ZXJCdWlsCiAgICAgICAgIGZpbHRlclZhbHVlcy5zaHJpbmtUb0ZpdCgpOwogICAgIH0K
IAotICAgIGF1dG8gZWZmZWN0ID0gRkVDb2xvck1hdHJpeDo6Y3JlYXRlKGZpbHRlciwgZmlsdGVy
VHlwZSwgV1RGTW92ZShmaWx0ZXJWYWx1ZXMpKTsKLSAgICBlZmZlY3QtPmlucHV0RWZmZWN0cygp
ID0geyBpbnB1dDEgfTsKKyAgICBhdXRvIGVmZmVjdCA9IEZFQ29sb3JNYXRyaXg6OmNyZWF0ZShm
aWx0ZXJUeXBlLCBXVEZNb3ZlKGZpbHRlclZhbHVlcykpOworICAgIGVmZmVjdC0+aW5wdXRFZmZl
Y3RzKCkgPSB7IFdURk1vdmUoaW5wdXQxKSB9OwogICAgIHJldHVybiBlZmZlY3Q7CiB9CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRUNvbG9yTWF0cml4RWxlbWVudC5oIGIv
U291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFQ29sb3JNYXRyaXhFbGVtZW50LmgKaW5kZXggN2FiNGFh
NDE4MWU3YWIxOThiMTJlNzdiZTIwNmI5YzVjNDEwMjNmZC4uOTcwMTFhMDQxZTQ5YTE3ZmI0OThh
MWY4NDZmODgwZGJkZDY5NTI0MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZF
Q29sb3JNYXRyaXhFbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFQ29sb3JN
YXRyaXhFbGVtZW50LmgKQEAgLTg2LDcgKzg2LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIHN2Z0F0
dHJpYnV0ZUNoYW5nZWQoY29uc3QgUXVhbGlmaWVkTmFtZSYpIG92ZXJyaWRlOwogCiAgICAgYm9v
bCBzZXRGaWx0ZXJFZmZlY3RBdHRyaWJ1dGUoRmlsdGVyRWZmZWN0KiwgY29uc3QgUXVhbGlmaWVk
TmFtZSYpIG92ZXJyaWRlOwotICAgIFJlZlB0cjxGaWx0ZXJFZmZlY3Q+IGJ1aWxkKFNWR0ZpbHRl
ckJ1aWxkZXIqLCBGaWx0ZXImKSBjb25zdCBvdmVycmlkZTsKKyAgICBSZWZQdHI8RmlsdGVyRWZm
ZWN0PiBidWlsZChTVkdGaWx0ZXJCdWlsZGVyJikgY29uc3Qgb3ZlcnJpZGU7CiAKICAgICBQcm9w
ZXJ0eVJlZ2lzdHJ5IG1fcHJvcGVydHlSZWdpc3RyeSB7ICp0aGlzIH07CiAgICAgUmVmPFNWR0Fu
aW1hdGVkU3RyaW5nPiBtX2luMSB7IFNWR0FuaW1hdGVkU3RyaW5nOjpjcmVhdGUodGhpcykgfTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRUNvbXBvbmVudFRyYW5zZmVyRWxl
bWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVDb21wb25lbnRUcmFuc2ZlckVsZW1l
bnQuY3BwCmluZGV4IDkwYTU1YjdlZmZmN2EzZmU2MDZhOWUwNTc5YTc2ZWRlOWY5NjgwMTEuLjI3
ZDEyYjVkMDg4M2ViZjFlYWMwYWRhYjExMTJmZWVlYmIxMWY0NTMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3N2Zy9TVkdGRUNvbXBvbmVudFRyYW5zZmVyRWxlbWVudC5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFQ29tcG9uZW50VHJhbnNmZXJFbGVtZW50LmNwcApAQCAtNjMs
OSArNjMsOSBAQCB2b2lkIFNWR0ZFQ29tcG9uZW50VHJhbnNmZXJFbGVtZW50OjpwYXJzZUF0dHJp
YnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiBuYW1lLCBjbwogICAgIFNWR0ZpbHRlclByaW1pdGl2
ZVN0YW5kYXJkQXR0cmlidXRlczo6cGFyc2VBdHRyaWJ1dGUobmFtZSwgdmFsdWUpOwogfQogCi1S
ZWZQdHI8RmlsdGVyRWZmZWN0PiBTVkdGRUNvbXBvbmVudFRyYW5zZmVyRWxlbWVudDo6YnVpbGQo
U1ZHRmlsdGVyQnVpbGRlciogZmlsdGVyQnVpbGRlciwgRmlsdGVyJiBmaWx0ZXIpIGNvbnN0CitS
ZWZQdHI8RmlsdGVyRWZmZWN0PiBTVkdGRUNvbXBvbmVudFRyYW5zZmVyRWxlbWVudDo6YnVpbGQo
U1ZHRmlsdGVyQnVpbGRlciYgZmlsdGVyQnVpbGRlcikgY29uc3QKIHsKLSAgICBhdXRvIGlucHV0
MSA9IGZpbHRlckJ1aWxkZXItPmdldEVmZmVjdEJ5SWQoaW4xKCkpOworICAgIGF1dG8gaW5wdXQx
ID0gZmlsdGVyQnVpbGRlci5nZXRFZmZlY3RCeUlkKGluMSgpKTsKICAgICAKICAgICBpZiAoIWlu
cHV0MSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CkBAIC04Niw4ICs4Niw4IEBAIFJlZlB0cjxG
aWx0ZXJFZmZlY3Q+IFNWR0ZFQ29tcG9uZW50VHJhbnNmZXJFbGVtZW50OjpidWlsZChTVkdGaWx0
ZXJCdWlsZGVyKiBmaWx0CiAgICAgICAgICAgICBhbHBoYSA9IGRvd25jYXN0PFNWR0ZFRnVuY0FF
bGVtZW50PihjaGlsZCkudHJhbnNmZXJGdW5jdGlvbigpOwogICAgIH0KICAgICAKLSAgICBhdXRv
IGVmZmVjdCA9IEZFQ29tcG9uZW50VHJhbnNmZXI6OmNyZWF0ZShmaWx0ZXIsIHJlZCwgZ3JlZW4s
IGJsdWUsIGFscGhhKTsKLSAgICBlZmZlY3QtPmlucHV0RWZmZWN0cygpID0geyBpbnB1dDEgfTsK
KyAgICBhdXRvIGVmZmVjdCA9IEZFQ29tcG9uZW50VHJhbnNmZXI6OmNyZWF0ZShyZWQsIGdyZWVu
LCBibHVlLCBhbHBoYSk7CisgICAgZWZmZWN0LT5pbnB1dEVmZmVjdHMoKSA9IHsgV1RGTW92ZShp
bnB1dDEpIH07CiAgICAgcmV0dXJuIGVmZmVjdDsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvc3ZnL1NWR0ZFQ29tcG9uZW50VHJhbnNmZXJFbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29y
ZS9zdmcvU1ZHRkVDb21wb25lbnRUcmFuc2ZlckVsZW1lbnQuaAppbmRleCBiYjU4OTM0N2Q4ODI2
ZGZiMzYwOWVkYWM2ZThiOTkzYTRkZDU0ODYzLi42MDE3MTBmN2QzNTM1YTE0MWExNTc4ODU0YWYy
YjAzNTExMjllOTgyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVDb21wb25l
bnRUcmFuc2ZlckVsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVDb21wb25l
bnRUcmFuc2ZlckVsZW1lbnQuaApAQCAtNDMsNyArNDMsNyBAQCBwcml2YXRlOgogICAgIC8vIEZJ
WE1FOiBzdmdBdHRyaWJ1dGVDaGFuZ2VkIG1pc3NpbmcuCiAgICAgdm9pZCBwYXJzZUF0dHJpYnV0
ZShjb25zdCBRdWFsaWZpZWROYW1lJiwgY29uc3QgQXRvbVN0cmluZyYpIG92ZXJyaWRlOwogCi0g
ICAgUmVmUHRyPEZpbHRlckVmZmVjdD4gYnVpbGQoU1ZHRmlsdGVyQnVpbGRlciosIEZpbHRlciYp
IGNvbnN0IG92ZXJyaWRlOworICAgIFJlZlB0cjxGaWx0ZXJFZmZlY3Q+IGJ1aWxkKFNWR0ZpbHRl
ckJ1aWxkZXImKSBjb25zdCBvdmVycmlkZTsKIAogICAgIFByb3BlcnR5UmVnaXN0cnkgbV9wcm9w
ZXJ0eVJlZ2lzdHJ5IHsgKnRoaXMgfTsKICAgICBSZWY8U1ZHQW5pbWF0ZWRTdHJpbmc+IG1faW4x
IHsgU1ZHQW5pbWF0ZWRTdHJpbmc6OmNyZWF0ZSh0aGlzKSB9OwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvc3ZnL1NWR0ZFQ29tcG9zaXRlRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9z
dmcvU1ZHRkVDb21wb3NpdGVFbGVtZW50LmNwcAppbmRleCAzY2E5OWI4NzU3MDhiYmQ4YTZiYWY2
NTNkYzA2ZmUyMDVhYzk4MjM1Li43ZmNlZDJlNjQ1NTQwZTNiOWRkMDk2Y2JlNDk5MWY1ODQxNTUw
NTE0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVDb21wb3NpdGVFbGVtZW50
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVDb21wb3NpdGVFbGVtZW50LmNwcApA
QCAtMTMxLDE5ICsxMzEsMTYgQEAgdm9pZCBTVkdGRUNvbXBvc2l0ZUVsZW1lbnQ6OnN2Z0F0dHJp
YnV0ZUNoYW5nZWQoY29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0ck5hbWUpCiAgICAgU1ZHRmlsdGVy
UHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVzOjpzdmdBdHRyaWJ1dGVDaGFuZ2VkKGF0dHJOYW1l
KTsKIH0KIAotUmVmUHRyPEZpbHRlckVmZmVjdD4gU1ZHRkVDb21wb3NpdGVFbGVtZW50OjpidWls
ZChTVkdGaWx0ZXJCdWlsZGVyKiBmaWx0ZXJCdWlsZGVyLCBGaWx0ZXImIGZpbHRlcikgY29uc3QK
K1JlZlB0cjxGaWx0ZXJFZmZlY3Q+IFNWR0ZFQ29tcG9zaXRlRWxlbWVudDo6YnVpbGQoU1ZHRmls
dGVyQnVpbGRlciYgZmlsdGVyQnVpbGRlcikgY29uc3QKIHsKLSAgICBhdXRvIGlucHV0MSA9IGZp
bHRlckJ1aWxkZXItPmdldEVmZmVjdEJ5SWQoaW4xKCkpOwotICAgIGF1dG8gaW5wdXQyID0gZmls
dGVyQnVpbGRlci0+Z2V0RWZmZWN0QnlJZChpbjIoKSk7CisgICAgYXV0byBpbnB1dDEgPSBmaWx0
ZXJCdWlsZGVyLmdldEVmZmVjdEJ5SWQoaW4xKCkpOworICAgIGF1dG8gaW5wdXQyID0gZmlsdGVy
QnVpbGRlci5nZXRFZmZlY3RCeUlkKGluMigpKTsKICAgICAKICAgICBpZiAoIWlucHV0MSB8fCAh
aW5wdXQyKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAotICAgIGF1dG8gZWZmZWN0ID0gRkVD
b21wb3NpdGU6OmNyZWF0ZShmaWx0ZXIsIHN2Z09wZXJhdG9yKCksIGsxKCksIGsyKCksIGszKCks
IGs0KCkpOwotICAgIEZpbHRlckVmZmVjdFZlY3RvciYgaW5wdXRFZmZlY3RzID0gZWZmZWN0LT5p
bnB1dEVmZmVjdHMoKTsKLSAgICBpbnB1dEVmZmVjdHMucmVzZXJ2ZUNhcGFjaXR5KDIpOwotICAg
IGlucHV0RWZmZWN0cy5hcHBlbmQoaW5wdXQxKTsKLSAgICBpbnB1dEVmZmVjdHMuYXBwZW5kKGlu
cHV0Mik7ICAgIAorICAgIGF1dG8gZWZmZWN0ID0gRkVDb21wb3NpdGU6OmNyZWF0ZShzdmdPcGVy
YXRvcigpLCBrMSgpLCBrMigpLCBrMygpLCBrNCgpKTsKKyAgICBlZmZlY3QtPmlucHV0RWZmZWN0
cygpID0geyBXVEZNb3ZlKGlucHV0MSksIFdURk1vdmUoaW5wdXQyKSB9OwogICAgIHJldHVybiBl
ZmZlY3Q7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRUNvbXBvc2l0
ZUVsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRUNvbXBvc2l0ZUVsZW1lbnQuaApp
bmRleCA4MWE3OGM4NjU3YTBmYTMwNDRkZjViN2M1YTA4MGQ2ZTc3OTcyMmY2Li43NGQ4MTRjM2My
MGUwZmQzN2ViNmE4YjUzYWZmNTY5ZDhkMTFkY2EzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9zdmcvU1ZHRkVDb21wb3NpdGVFbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NW
R0ZFQ29tcG9zaXRlRWxlbWVudC5oCkBAIC0xMDksNyArMTA5LDcgQEAgcHJpdmF0ZToKICAgICB2
b2lkIHN2Z0F0dHJpYnV0ZUNoYW5nZWQoY29uc3QgUXVhbGlmaWVkTmFtZSYpIG92ZXJyaWRlOwog
CiAgICAgYm9vbCBzZXRGaWx0ZXJFZmZlY3RBdHRyaWJ1dGUoRmlsdGVyRWZmZWN0KiwgY29uc3Qg
UXVhbGlmaWVkTmFtZSYpIG92ZXJyaWRlOwotICAgIFJlZlB0cjxGaWx0ZXJFZmZlY3Q+IGJ1aWxk
KFNWR0ZpbHRlckJ1aWxkZXIqLCBGaWx0ZXImKSBjb25zdCBvdmVycmlkZTsKKyAgICBSZWZQdHI8
RmlsdGVyRWZmZWN0PiBidWlsZChTVkdGaWx0ZXJCdWlsZGVyJikgY29uc3Qgb3ZlcnJpZGU7CiAK
ICAgICBQcm9wZXJ0eVJlZ2lzdHJ5IG1fcHJvcGVydHlSZWdpc3RyeSB7ICp0aGlzIH07CiAgICAg
UmVmPFNWR0FuaW1hdGVkU3RyaW5nPiBtX2luMSB7IFNWR0FuaW1hdGVkU3RyaW5nOjpjcmVhdGUo
dGhpcykgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRUNvbnZvbHZlTWF0
cml4RWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVDb252b2x2ZU1hdHJpeEVs
ZW1lbnQuY3BwCmluZGV4IGY3NTA1ODE1ZGVjYWJiNGVhMzRiNDM1YjQ3ZWE1YTgwYzZhMjZkZjEu
LjFhODEzNGE5YzhiN2ZjMGE1MDc1ZWRlODFhMGQzNjk3MGU5OGM0N2YgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3N2Zy9TVkdGRUNvbnZvbHZlTWF0cml4RWxlbWVudC5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFQ29udm9sdmVNYXRyaXhFbGVtZW50LmNwcApAQCAtMTkxLDkg
KzE5MSw5IEBAIHZvaWQgU1ZHRkVDb252b2x2ZU1hdHJpeEVsZW1lbnQ6OnN2Z0F0dHJpYnV0ZUNo
YW5nZWQoY29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0ck5hCiAgICAgU1ZHRmlsdGVyUHJpbWl0aXZl
U3RhbmRhcmRBdHRyaWJ1dGVzOjpzdmdBdHRyaWJ1dGVDaGFuZ2VkKGF0dHJOYW1lKTsKIH0KIAot
UmVmUHRyPEZpbHRlckVmZmVjdD4gU1ZHRkVDb252b2x2ZU1hdHJpeEVsZW1lbnQ6OmJ1aWxkKFNW
R0ZpbHRlckJ1aWxkZXIqIGZpbHRlckJ1aWxkZXIsIEZpbHRlciYgZmlsdGVyKSBjb25zdAorUmVm
UHRyPEZpbHRlckVmZmVjdD4gU1ZHRkVDb252b2x2ZU1hdHJpeEVsZW1lbnQ6OmJ1aWxkKFNWR0Zp
bHRlckJ1aWxkZXImIGZpbHRlckJ1aWxkZXIpIGNvbnN0CiB7Ci0gICAgYXV0byBpbnB1dDEgPSBm
aWx0ZXJCdWlsZGVyLT5nZXRFZmZlY3RCeUlkKGluMSgpKTsKKyAgICBhdXRvIGlucHV0MSA9IGZp
bHRlckJ1aWxkZXIuZ2V0RWZmZWN0QnlJZChpbjEoKSk7CiAKICAgICBpZiAoIWlucHV0MSkKICAg
ICAgICAgcmV0dXJuIG51bGxwdHI7CkBAIC0yNDYsOCArMjQ2LDggQEAgUmVmUHRyPEZpbHRlckVm
ZmVjdD4gU1ZHRkVDb252b2x2ZU1hdHJpeEVsZW1lbnQ6OmJ1aWxkKFNWR0ZpbHRlckJ1aWxkZXIq
IGZpbHRlckIKICAgICAgICAgICAgIGRpdmlzb3JWYWx1ZSA9IDE7CiAgICAgfQogCi0gICAgYXV0
byBlZmZlY3QgPSBGRUNvbnZvbHZlTWF0cml4OjpjcmVhdGUoZmlsdGVyLCBJbnRTaXplKG9yZGVy
WFZhbHVlLCBvcmRlcllWYWx1ZSksIGRpdmlzb3JWYWx1ZSwgYmlhcygpLCBJbnRQb2ludCh0YXJn
ZXRYVmFsdWUsIHRhcmdldFlWYWx1ZSksIGVkZ2VNb2RlKCksIEZsb2F0UG9pbnQoa2VybmVsVW5p
dExlbmd0aFhWYWx1ZSwga2VybmVsVW5pdExlbmd0aFlWYWx1ZSksIHByZXNlcnZlQWxwaGEoKSwg
a2VybmVsTWF0cml4KTsKLSAgICBlZmZlY3QtPmlucHV0RWZmZWN0cygpID0geyBpbnB1dDEgfTsK
KyAgICBhdXRvIGVmZmVjdCA9IEZFQ29udm9sdmVNYXRyaXg6OmNyZWF0ZShJbnRTaXplKG9yZGVy
WFZhbHVlLCBvcmRlcllWYWx1ZSksIGRpdmlzb3JWYWx1ZSwgYmlhcygpLCBJbnRQb2ludCh0YXJn
ZXRYVmFsdWUsIHRhcmdldFlWYWx1ZSksIGVkZ2VNb2RlKCksIEZsb2F0UG9pbnQoa2VybmVsVW5p
dExlbmd0aFhWYWx1ZSwga2VybmVsVW5pdExlbmd0aFlWYWx1ZSksIHByZXNlcnZlQWxwaGEoKSwg
a2VybmVsTWF0cml4KTsKKyAgICBlZmZlY3QtPmlucHV0RWZmZWN0cygpID0geyBXVEZNb3ZlKGlu
cHV0MSkgfTsKICAgICByZXR1cm4gZWZmZWN0OwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9zdmcvU1ZHRkVDb252b2x2ZU1hdHJpeEVsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL3N2
Zy9TVkdGRUNvbnZvbHZlTWF0cml4RWxlbWVudC5oCmluZGV4IDg1YzAwMjY5OGM2Mjc3ZTA0Mzcw
ZDM1OTgyYTk1YjhkOTA0OWIzMzkuLjFiNmJiZTQ4NzEyNzVjNDIxYzhkZDQ0MDljMWI0ODk3Mjk1
YWExMGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRUNvbnZvbHZlTWF0cml4
RWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRUNvbnZvbHZlTWF0cml4RWxl
bWVudC5oCkBAIC0xMDMsNyArMTAzLDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIHN2Z0F0dHJpYnV0
ZUNoYW5nZWQoY29uc3QgUXVhbGlmaWVkTmFtZSYpIG92ZXJyaWRlOwogCiAgICAgYm9vbCBzZXRG
aWx0ZXJFZmZlY3RBdHRyaWJ1dGUoRmlsdGVyRWZmZWN0KiwgY29uc3QgUXVhbGlmaWVkTmFtZSYp
IG92ZXJyaWRlOwotICAgIFJlZlB0cjxGaWx0ZXJFZmZlY3Q+IGJ1aWxkKFNWR0ZpbHRlckJ1aWxk
ZXIqLCBGaWx0ZXImKSBjb25zdCBvdmVycmlkZTsKKyAgICBSZWZQdHI8RmlsdGVyRWZmZWN0PiBi
dWlsZChTVkdGaWx0ZXJCdWlsZGVyJikgY29uc3Qgb3ZlcnJpZGU7CiAKICAgICBQcm9wZXJ0eVJl
Z2lzdHJ5IG1fcHJvcGVydHlSZWdpc3RyeSB7ICp0aGlzIH07CiAgICAgUmVmPFNWR0FuaW1hdGVk
U3RyaW5nPiBtX2luMSB7IFNWR0FuaW1hdGVkU3RyaW5nOjpjcmVhdGUodGhpcykgfTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRURpZmZ1c2VMaWdodGluZ0VsZW1lbnQuY3Bw
IGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFRGlmZnVzZUxpZ2h0aW5nRWxlbWVudC5jcHAKaW5k
ZXggMTUyYzk4NWZkOGU5NWFlOTk1N2U2ZTIxZDZiZjJhMTBjNDU0YmRkNS4uZGQzOTQ1OTVjZjcy
NjQ4YTY3ZDUyOGExMzQxNTFkYTM2N2Y0YzY5OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
c3ZnL1NWR0ZFRGlmZnVzZUxpZ2h0aW5nRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
c3ZnL1NWR0ZFRGlmZnVzZUxpZ2h0aW5nRWxlbWVudC5jcHAKQEAgLTE1MSw5ICsxNTEsOSBAQCB2
b2lkIFNWR0ZFRGlmZnVzZUxpZ2h0aW5nRWxlbWVudDo6bGlnaHRFbGVtZW50QXR0cmlidXRlQ2hh
bmdlZChjb25zdCBTVkdGRUxpZ2h0RQogICAgIHByaW1pdGl2ZUF0dHJpYnV0ZUNoYW5nZWQoYXR0
ck5hbWUpOwogfQogCi1SZWZQdHI8RmlsdGVyRWZmZWN0PiBTVkdGRURpZmZ1c2VMaWdodGluZ0Vs
ZW1lbnQ6OmJ1aWxkKFNWR0ZpbHRlckJ1aWxkZXIqIGZpbHRlckJ1aWxkZXIsIEZpbHRlciYgZmls
dGVyKSBjb25zdAorUmVmUHRyPEZpbHRlckVmZmVjdD4gU1ZHRkVEaWZmdXNlTGlnaHRpbmdFbGVt
ZW50OjpidWlsZChTVkdGaWx0ZXJCdWlsZGVyJiBmaWx0ZXJCdWlsZGVyKSBjb25zdAogewotICAg
IGF1dG8gaW5wdXQxID0gZmlsdGVyQnVpbGRlci0+Z2V0RWZmZWN0QnlJZChpbjEoKSk7CisgICAg
YXV0byBpbnB1dDEgPSBmaWx0ZXJCdWlsZGVyLmdldEVmZmVjdEJ5SWQoaW4xKCkpOwogCiAgICAg
aWYgKCFpbnB1dDEpCiAgICAgICAgIHJldHVybiBudWxscHRyOwpAQCAtMTYyLDcgKzE2Miw3IEBA
IFJlZlB0cjxGaWx0ZXJFZmZlY3Q+IFNWR0ZFRGlmZnVzZUxpZ2h0aW5nRWxlbWVudDo6YnVpbGQo
U1ZHRmlsdGVyQnVpbGRlciogZmlsdGVyCiAgICAgaWYgKCFsaWdodEVsZW1lbnQpCiAgICAgICAg
IHJldHVybiBudWxscHRyOwogICAgIAotICAgIGF1dG8gbGlnaHRTb3VyY2UgPSBsaWdodEVsZW1l
bnQtPmxpZ2h0U291cmNlKCpmaWx0ZXJCdWlsZGVyKTsKKyAgICBhdXRvIGxpZ2h0U291cmNlID0g
bGlnaHRFbGVtZW50LT5saWdodFNvdXJjZShmaWx0ZXJCdWlsZGVyKTsKIAogICAgIFJlbmRlck9i
amVjdCogcmVuZGVyZXIgPSB0aGlzLT5yZW5kZXJlcigpOwogICAgIGlmICghcmVuZGVyZXIpCkBA
IC0xNzAsOCArMTcwLDggQEAgUmVmUHRyPEZpbHRlckVmZmVjdD4gU1ZHRkVEaWZmdXNlTGlnaHRp
bmdFbGVtZW50OjpidWlsZChTVkdGaWx0ZXJCdWlsZGVyKiBmaWx0ZXIKIAogICAgIENvbG9yIGNv
bG9yID0gcmVuZGVyZXItPnN0eWxlKCkuY29sb3JCeUFwcGx5aW5nQ29sb3JGaWx0ZXIocmVuZGVy
ZXItPnN0eWxlKCkuc3ZnU3R5bGUoKS5saWdodGluZ0NvbG9yKCkpOwogCi0gICAgYXV0byBlZmZl
Y3QgPSBGRURpZmZ1c2VMaWdodGluZzo6Y3JlYXRlKGZpbHRlciwgY29sb3IsIHN1cmZhY2VTY2Fs
ZSgpLCBkaWZmdXNlQ29uc3RhbnQoKSwga2VybmVsVW5pdExlbmd0aFgoKSwga2VybmVsVW5pdExl
bmd0aFkoKSwgV1RGTW92ZShsaWdodFNvdXJjZSkpOwotICAgIGVmZmVjdC0+aW5wdXRFZmZlY3Rz
KCkgPSB7IGlucHV0MSB9OworICAgIGF1dG8gZWZmZWN0ID0gRkVEaWZmdXNlTGlnaHRpbmc6OmNy
ZWF0ZShjb2xvciwgc3VyZmFjZVNjYWxlKCksIGRpZmZ1c2VDb25zdGFudCgpLCBrZXJuZWxVbml0
TGVuZ3RoWCgpLCBrZXJuZWxVbml0TGVuZ3RoWSgpLCBXVEZNb3ZlKGxpZ2h0U291cmNlKSk7Cisg
ICAgZWZmZWN0LT5pbnB1dEVmZmVjdHMoKSA9IHsgV1RGTW92ZShpbnB1dDEpIH07CiAgICAgcmV0
dXJuIGVmZmVjdDsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFRGlm
ZnVzZUxpZ2h0aW5nRWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFRGlmZnVzZUxp
Z2h0aW5nRWxlbWVudC5oCmluZGV4IDY4OTk5NjA5ZjRiNmI1NmE3NmM4OGVhNTY5NWYxZTBlOWUy
MDU1ODAuLmIyYWFjOGIwM2VkMjRkMjFkOThiNTE5ZmJhOGU1Zjk0NWNhMzA4MGQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRURpZmZ1c2VMaWdodGluZ0VsZW1lbnQuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVEaWZmdXNlTGlnaHRpbmdFbGVtZW50LmgKQEAgLTU4
LDcgKzU4LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIHN2Z0F0dHJpYnV0ZUNoYW5nZWQoY29uc3Qg
UXVhbGlmaWVkTmFtZSYpIG92ZXJyaWRlOwogCiAgICAgYm9vbCBzZXRGaWx0ZXJFZmZlY3RBdHRy
aWJ1dGUoRmlsdGVyRWZmZWN0KiwgY29uc3QgUXVhbGlmaWVkTmFtZSYpIG92ZXJyaWRlOwotICAg
IFJlZlB0cjxGaWx0ZXJFZmZlY3Q+IGJ1aWxkKFNWR0ZpbHRlckJ1aWxkZXIqLCBGaWx0ZXImKSBj
b25zdCBvdmVycmlkZTsKKyAgICBSZWZQdHI8RmlsdGVyRWZmZWN0PiBidWlsZChTVkdGaWx0ZXJC
dWlsZGVyJikgY29uc3Qgb3ZlcnJpZGU7CiAKICAgICBQcm9wZXJ0eVJlZ2lzdHJ5IG1fcHJvcGVy
dHlSZWdpc3RyeSB7ICp0aGlzIH07CiAgICAgUmVmPFNWR0FuaW1hdGVkU3RyaW5nPiBtX2luMSB7
IFNWR0FuaW1hdGVkU3RyaW5nOjpjcmVhdGUodGhpcykgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3N2Zy9TVkdGRURpc3BsYWNlbWVudE1hcEVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNv
cmUvc3ZnL1NWR0ZFRGlzcGxhY2VtZW50TWFwRWxlbWVudC5jcHAKaW5kZXggMGM1ZTgyNWJjODI1
NjBmMzZhMjY5ZWE2ZDcyMmRmZDA1MTczZDhjMi4uNjkwNzUxMzc1MDdkNmM2NDc0OWExYzhiYzQx
MmEwYWVlNTFhMWEyZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFRGlzcGxh
Y2VtZW50TWFwRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFRGlzcGxh
Y2VtZW50TWFwRWxlbWVudC5jcHAKQEAgLTExNSwxOSArMTE1LDE2IEBAIHZvaWQgU1ZHRkVEaXNw
bGFjZW1lbnRNYXBFbGVtZW50OjpzdmdBdHRyaWJ1dGVDaGFuZ2VkKGNvbnN0IFF1YWxpZmllZE5h
bWUmIGF0dHJOCiAgICAgU1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVzOjpzdmdB
dHRyaWJ1dGVDaGFuZ2VkKGF0dHJOYW1lKTsKIH0KIAotUmVmUHRyPEZpbHRlckVmZmVjdD4gU1ZH
RkVEaXNwbGFjZW1lbnRNYXBFbGVtZW50OjpidWlsZChTVkdGaWx0ZXJCdWlsZGVyKiBmaWx0ZXJC
dWlsZGVyLCBGaWx0ZXImIGZpbHRlcikgY29uc3QKK1JlZlB0cjxGaWx0ZXJFZmZlY3Q+IFNWR0ZF
RGlzcGxhY2VtZW50TWFwRWxlbWVudDo6YnVpbGQoU1ZHRmlsdGVyQnVpbGRlciYgZmlsdGVyQnVp
bGRlcikgY29uc3QKIHsKLSAgICBhdXRvIGlucHV0MSA9IGZpbHRlckJ1aWxkZXItPmdldEVmZmVj
dEJ5SWQoaW4xKCkpOwotICAgIGF1dG8gaW5wdXQyID0gZmlsdGVyQnVpbGRlci0+Z2V0RWZmZWN0
QnlJZChpbjIoKSk7CisgICAgYXV0byBpbnB1dDEgPSBmaWx0ZXJCdWlsZGVyLmdldEVmZmVjdEJ5
SWQoaW4xKCkpOworICAgIGF1dG8gaW5wdXQyID0gZmlsdGVyQnVpbGRlci5nZXRFZmZlY3RCeUlk
KGluMigpKTsKICAgICAKICAgICBpZiAoIWlucHV0MSB8fCAhaW5wdXQyKQogICAgICAgICByZXR1
cm4gbnVsbHB0cjsKIAotICAgIGF1dG8gZWZmZWN0ID0gRkVEaXNwbGFjZW1lbnRNYXA6OmNyZWF0
ZShmaWx0ZXIsIHhDaGFubmVsU2VsZWN0b3IoKSwgeUNoYW5uZWxTZWxlY3RvcigpLCBzY2FsZSgp
KTsKLSAgICBGaWx0ZXJFZmZlY3RWZWN0b3ImIGlucHV0RWZmZWN0cyA9IGVmZmVjdC0+aW5wdXRF
ZmZlY3RzKCk7Ci0gICAgaW5wdXRFZmZlY3RzLnJlc2VydmVDYXBhY2l0eSgyKTsKLSAgICBpbnB1
dEVmZmVjdHMuYXBwZW5kKGlucHV0MSk7Ci0gICAgaW5wdXRFZmZlY3RzLmFwcGVuZChpbnB1dDIp
OyAgICAKKyAgICBhdXRvIGVmZmVjdCA9IEZFRGlzcGxhY2VtZW50TWFwOjpjcmVhdGUoeENoYW5u
ZWxTZWxlY3RvcigpLCB5Q2hhbm5lbFNlbGVjdG9yKCksIHNjYWxlKCkpOworICAgIGVmZmVjdC0+
aW5wdXRFZmZlY3RzKCkgPSB7IFdURk1vdmUoaW5wdXQxKSwgV1RGTW92ZShpbnB1dDIpIH07CiAg
ICAgcmV0dXJuIGVmZmVjdDsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NW
R0ZFRGlzcGxhY2VtZW50TWFwRWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFRGlz
cGxhY2VtZW50TWFwRWxlbWVudC5oCmluZGV4IGFhOTFkZjM4YjM2Mjk4ZjEyMWExNDExYzRkMGFl
NWVjZDU4NjY1ZDMuLmYyYzZkMGIxOGY4NWM5NGYzODRmNWJkMWJlZmMzNTllZGU4MjNlNmEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRURpc3BsYWNlbWVudE1hcEVsZW1lbnQu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVEaXNwbGFjZW1lbnRNYXBFbGVtZW50LmgK
QEAgLTkxLDcgKzkxLDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIHN2Z0F0dHJpYnV0ZUNoYW5nZWQo
Y29uc3QgUXVhbGlmaWVkTmFtZSYpIG92ZXJyaWRlOwogCiAgICAgYm9vbCBzZXRGaWx0ZXJFZmZl
Y3RBdHRyaWJ1dGUoRmlsdGVyRWZmZWN0KiwgY29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0ck5hbWUp
IG92ZXJyaWRlOwotICAgIFJlZlB0cjxGaWx0ZXJFZmZlY3Q+IGJ1aWxkKFNWR0ZpbHRlckJ1aWxk
ZXIqLCBGaWx0ZXImKSBjb25zdCBvdmVycmlkZTsKKyAgICBSZWZQdHI8RmlsdGVyRWZmZWN0PiBi
dWlsZChTVkdGaWx0ZXJCdWlsZGVyJikgY29uc3Qgb3ZlcnJpZGU7CiAKICAgICBQcm9wZXJ0eVJl
Z2lzdHJ5IG1fcHJvcGVydHlSZWdpc3RyeSB7ICp0aGlzIH07CiAgICAgUmVmPFNWR0FuaW1hdGVk
U3RyaW5nPiBtX2luMSB7IFNWR0FuaW1hdGVkU3RyaW5nOjpjcmVhdGUodGhpcykgfTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRURyb3BTaGFkb3dFbGVtZW50LmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3N2Zy9TVkdGRURyb3BTaGFkb3dFbGVtZW50LmNwcAppbmRleCAyMmJjZTFk
MzMzMTdjOTU3MWZlNWQ3OWY0YjMyNmE4OWJmYzViNjgxLi5iZDYxYzI3NGUxNTM0ZmQ5MWFjMzk4
MGM2NDU2Mjk4OTljZjYyMTVlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVE
cm9wU2hhZG93RWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFRHJvcFNo
YWRvd0VsZW1lbnQuY3BwCkBAIC05Nyw3ICs5Nyw3IEBAIHZvaWQgU1ZHRkVEcm9wU2hhZG93RWxl
bWVudDo6c3ZnQXR0cmlidXRlQ2hhbmdlZChjb25zdCBRdWFsaWZpZWROYW1lJiBhdHRyTmFtZSkK
ICAgICBTVkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXM6OnN2Z0F0dHJpYnV0ZUNo
YW5nZWQoYXR0ck5hbWUpOwogfQogCi1SZWZQdHI8RmlsdGVyRWZmZWN0PiBTVkdGRURyb3BTaGFk
b3dFbGVtZW50OjpidWlsZChTVkdGaWx0ZXJCdWlsZGVyKiBmaWx0ZXJCdWlsZGVyLCBGaWx0ZXIm
IGZpbHRlcikgY29uc3QKK1JlZlB0cjxGaWx0ZXJFZmZlY3Q+IFNWR0ZFRHJvcFNoYWRvd0VsZW1l
bnQ6OmJ1aWxkKFNWR0ZpbHRlckJ1aWxkZXImIGZpbHRlckJ1aWxkZXIpIGNvbnN0CiB7CiAgICAg
UmVuZGVyT2JqZWN0KiByZW5kZXJlciA9IHRoaXMtPnJlbmRlcmVyKCk7CiAgICAgaWYgKCFyZW5k
ZXJlcikKQEAgLTExMSwxMiArMTExLDEyIEBAIFJlZlB0cjxGaWx0ZXJFZmZlY3Q+IFNWR0ZFRHJv
cFNoYWRvd0VsZW1lbnQ6OmJ1aWxkKFNWR0ZpbHRlckJ1aWxkZXIqIGZpbHRlckJ1aWxkCiAgICAg
Q29sb3IgY29sb3IgPSByZW5kZXJlci0+c3R5bGUoKS5jb2xvckJ5QXBwbHlpbmdDb2xvckZpbHRl
cihzdmdTdHlsZS5mbG9vZENvbG9yKCkpOwogICAgIGZsb2F0IG9wYWNpdHkgPSBzdmdTdHlsZS5m
bG9vZE9wYWNpdHkoKTsKIAotICAgIGF1dG8gaW5wdXQxID0gZmlsdGVyQnVpbGRlci0+Z2V0RWZm
ZWN0QnlJZChpbjEoKSk7CisgICAgYXV0byBpbnB1dDEgPSBmaWx0ZXJCdWlsZGVyLmdldEVmZmVj
dEJ5SWQoaW4xKCkpOwogICAgIGlmICghaW5wdXQxKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsK
IAotICAgIGF1dG8gZWZmZWN0ID0gRkVEcm9wU2hhZG93OjpjcmVhdGUoZmlsdGVyLCBzdGREZXZp
YXRpb25YKCksIHN0ZERldmlhdGlvblkoKSwgZHgoKSwgZHkoKSwgY29sb3IsIG9wYWNpdHkpOwot
ICAgIGVmZmVjdC0+aW5wdXRFZmZlY3RzKCkgPSB7IGlucHV0MSB9OworICAgIGF1dG8gZWZmZWN0
ID0gRkVEcm9wU2hhZG93OjpjcmVhdGUoc3RkRGV2aWF0aW9uWCgpLCBzdGREZXZpYXRpb25ZKCks
IGR4KCksIGR5KCksIGNvbG9yLCBvcGFjaXR5KTsKKyAgICBlZmZlY3QtPmlucHV0RWZmZWN0cygp
ID0geyBXVEZNb3ZlKGlucHV0MSkgfTsKICAgICByZXR1cm4gZWZmZWN0OwogfQogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVEcm9wU2hhZG93RWxlbWVudC5oIGIvU291cmNl
L1dlYkNvcmUvc3ZnL1NWR0ZFRHJvcFNoYWRvd0VsZW1lbnQuaAppbmRleCA5YjYyZDI0YjQ1NGJi
N2QyNzU4ZTcxMmI2MjFiOGNiZTQyZjc0NTFkLi4zZTQwNWRlNDg5YzY4MWE3NmM0NGY5YTgyOTcz
M2EyMDI2YjRkOGZhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVEcm9wU2hh
ZG93RWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRURyb3BTaGFkb3dFbGVt
ZW50LmgKQEAgLTUzLDcgKzUzLDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIHBhcnNlQXR0cmlidXRl
KGNvbnN0IFF1YWxpZmllZE5hbWUmLCBjb25zdCBBdG9tU3RyaW5nJikgb3ZlcnJpZGU7CiAgICAg
dm9pZCBzdmdBdHRyaWJ1dGVDaGFuZ2VkKGNvbnN0IFF1YWxpZmllZE5hbWUmKSBvdmVycmlkZTsK
IAotICAgIFJlZlB0cjxGaWx0ZXJFZmZlY3Q+IGJ1aWxkKFNWR0ZpbHRlckJ1aWxkZXIqLCBGaWx0
ZXImKSBjb25zdCBvdmVycmlkZTsKKyAgICBSZWZQdHI8RmlsdGVyRWZmZWN0PiBidWlsZChTVkdG
aWx0ZXJCdWlsZGVyJikgY29uc3Qgb3ZlcnJpZGU7CiAKICAgICBQcm9wZXJ0eVJlZ2lzdHJ5IG1f
cHJvcGVydHlSZWdpc3RyeSB7ICp0aGlzIH07CiAgICAgUmVmPFNWR0FuaW1hdGVkU3RyaW5nPiBt
X2luMSB7IFNWR0FuaW1hdGVkU3RyaW5nOjpjcmVhdGUodGhpcykgfTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3N2Zy9TVkdGRUZsb29kRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9z
dmcvU1ZHRkVGbG9vZEVsZW1lbnQuY3BwCmluZGV4IGMyMjhlMjJkNTY1ZDBlMTYzZmY4N2QwYjRi
Y2FiZDIyNDQ3NThmYzIuLmYzMjhjYzdjMTVlZTc5MWI0YWFiYTNhOGU3MWE4MDRjODA5M2RjZmUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRUZsb29kRWxlbWVudC5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFRmxvb2RFbGVtZW50LmNwcApAQCAtNTgsNyArNTgs
NyBAQCBib29sIFNWR0ZFRmxvb2RFbGVtZW50OjpzZXRGaWx0ZXJFZmZlY3RBdHRyaWJ1dGUoRmls
dGVyRWZmZWN0KiBlZmZlY3QsIGNvbnN0IFF1YQogICAgIHJldHVybiBmYWxzZTsKIH0KIAotUmVm
UHRyPEZpbHRlckVmZmVjdD4gU1ZHRkVGbG9vZEVsZW1lbnQ6OmJ1aWxkKFNWR0ZpbHRlckJ1aWxk
ZXIqLCBGaWx0ZXImIGZpbHRlcikgY29uc3QKK1JlZlB0cjxGaWx0ZXJFZmZlY3Q+IFNWR0ZFRmxv
b2RFbGVtZW50OjpidWlsZChTVkdGaWx0ZXJCdWlsZGVyJikgY29uc3QKIHsKICAgICBSZW5kZXJP
YmplY3QqIHJlbmRlcmVyID0gdGhpcy0+cmVuZGVyZXIoKTsKICAgICBpZiAoIXJlbmRlcmVyKQpA
QCAtNjksNyArNjksNyBAQCBSZWZQdHI8RmlsdGVyRWZmZWN0PiBTVkdGRUZsb29kRWxlbWVudDo6
YnVpbGQoU1ZHRmlsdGVyQnVpbGRlciosIEZpbHRlciYgZmlsdGVyKQogICAgIENvbG9yIGNvbG9y
ID0gcmVuZGVyZXItPnN0eWxlKCkuY29sb3JCeUFwcGx5aW5nQ29sb3JGaWx0ZXIoc3ZnU3R5bGUu
Zmxvb2RDb2xvcigpKTsKICAgICBmbG9hdCBvcGFjaXR5ID0gc3ZnU3R5bGUuZmxvb2RPcGFjaXR5
KCk7CiAKLSAgICByZXR1cm4gRkVGbG9vZDo6Y3JlYXRlKGZpbHRlciwgY29sb3IsIG9wYWNpdHkp
OworICAgIHJldHVybiBGRUZsb29kOjpjcmVhdGUoY29sb3IsIG9wYWNpdHkpOwogfQogCiB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVGbG9vZEVsZW1lbnQuaCBiL1NvdXJj
ZS9XZWJDb3JlL3N2Zy9TVkdGRUZsb29kRWxlbWVudC5oCmluZGV4IGI5NmE0M2FhMzEzZTc1ZTRh
MzE2NzI0OGExYjZmNWNmNTFmZWU5MTEuLmFlZDY2OTE5MzNiZDAyZjMzMDFhOTIzOTdiNzQwNTlm
ZjZiZWM0YmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRUZsb29kRWxlbWVu
dC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRUZsb29kRWxlbWVudC5oCkBAIC0zNiw3
ICszNiw3IEBAIHByaXZhdGU6CiAgICAgY29uc3QgU1ZHUHJvcGVydHlSZWdpc3RyeSYgcHJvcGVy
dHlSZWdpc3RyeSgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1fcHJvcGVydHlSZWdpc3RyeTsgfQog
CiAgICAgYm9vbCBzZXRGaWx0ZXJFZmZlY3RBdHRyaWJ1dGUoRmlsdGVyRWZmZWN0KiwgY29uc3Qg
UXVhbGlmaWVkTmFtZSYgYXR0ck5hbWUpIG92ZXJyaWRlOwotICAgIFJlZlB0cjxGaWx0ZXJFZmZl
Y3Q+IGJ1aWxkKFNWR0ZpbHRlckJ1aWxkZXIqLCBGaWx0ZXImKSBjb25zdCBvdmVycmlkZTsKKyAg
ICBSZWZQdHI8RmlsdGVyRWZmZWN0PiBidWlsZChTVkdGaWx0ZXJCdWlsZGVyJikgY29uc3Qgb3Zl
cnJpZGU7CiAKICAgICBQcm9wZXJ0eVJlZ2lzdHJ5IG1fcHJvcGVydHlSZWdpc3RyeSB7ICp0aGlz
IH07CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFR2F1c3NpYW5CbHVy
RWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVHYXVzc2lhbkJsdXJFbGVtZW50
LmNwcAppbmRleCA3YTk5ODIyNGM5MjE5NTU1MjQ0YTg2OWNhNzhhODMwZDU2M2M1OTlkLi5mMWU2
YmY0OWE0ZGIzZGNhNzc1YzliN2VmYTVkYjlkYzg2OTg4NzJhIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9zdmcvU1ZHRkVHYXVzc2lhbkJsdXJFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9zdmcvU1ZHRkVHYXVzc2lhbkJsdXJFbGVtZW50LmNwcApAQCAtOTUsMTcgKzk1LDE3IEBA
IHZvaWQgU1ZHRkVHYXVzc2lhbkJsdXJFbGVtZW50OjpzdmdBdHRyaWJ1dGVDaGFuZ2VkKGNvbnN0
IFF1YWxpZmllZE5hbWUmIGF0dHJOYW1lCiAgICAgU1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRB
dHRyaWJ1dGVzOjpzdmdBdHRyaWJ1dGVDaGFuZ2VkKGF0dHJOYW1lKTsKIH0KIAotUmVmUHRyPEZp
bHRlckVmZmVjdD4gU1ZHRkVHYXVzc2lhbkJsdXJFbGVtZW50OjpidWlsZChTVkdGaWx0ZXJCdWls
ZGVyKiBmaWx0ZXJCdWlsZGVyLCBGaWx0ZXImIGZpbHRlcikgY29uc3QKK1JlZlB0cjxGaWx0ZXJF
ZmZlY3Q+IFNWR0ZFR2F1c3NpYW5CbHVyRWxlbWVudDo6YnVpbGQoU1ZHRmlsdGVyQnVpbGRlciYg
ZmlsdGVyQnVpbGRlcikgY29uc3QKIHsKLSAgICBhdXRvIGlucHV0MSA9IGZpbHRlckJ1aWxkZXIt
PmdldEVmZmVjdEJ5SWQoaW4xKCkpOworICAgIGF1dG8gaW5wdXQxID0gZmlsdGVyQnVpbGRlci5n
ZXRFZmZlY3RCeUlkKGluMSgpKTsKICAgICBpZiAoIWlucHV0MSkKICAgICAgICAgcmV0dXJuIG51
bGxwdHI7CiAKICAgICBpZiAoc3RkRGV2aWF0aW9uWCgpIDwgMCB8fCBzdGREZXZpYXRpb25ZKCkg
PCAwKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAotICAgIGF1dG8gZWZmZWN0ID0gRkVHYXVz
c2lhbkJsdXI6OmNyZWF0ZShmaWx0ZXIsIHN0ZERldmlhdGlvblgoKSwgc3RkRGV2aWF0aW9uWSgp
LCBlZGdlTW9kZSgpKTsKLSAgICBlZmZlY3QtPmlucHV0RWZmZWN0cygpID0geyBpbnB1dDEgfTsK
KyAgICBhdXRvIGVmZmVjdCA9IEZFR2F1c3NpYW5CbHVyOjpjcmVhdGUoc3RkRGV2aWF0aW9uWCgp
LCBzdGREZXZpYXRpb25ZKCksIGVkZ2VNb2RlKCkpOworICAgIGVmZmVjdC0+aW5wdXRFZmZlY3Rz
KCkgPSB7IFdURk1vdmUoaW5wdXQxKSB9OwogICAgIHJldHVybiBlZmZlY3Q7CiB9CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRUdhdXNzaWFuQmx1ckVsZW1lbnQuaCBiL1Nv
dXJjZS9XZWJDb3JlL3N2Zy9TVkdGRUdhdXNzaWFuQmx1ckVsZW1lbnQuaAppbmRleCBkODllMWE3
NDhmYjJjNTA5ZTIxNGZlOTRhZTQxMDAxY2U0OGVlMGIyLi5mNDBlYjMzNzc4YzQzZGY2MWVlNTg5
NjNlZWNmOWVjZGJhNTQ5Y2MxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVH
YXVzc2lhbkJsdXJFbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFR2F1c3Np
YW5CbHVyRWxlbWVudC5oCkBAIC01Myw3ICs1Myw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBwYXJz
ZUF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiwgY29uc3QgQXRvbVN0cmluZyYpIG92ZXJy
aWRlOwogICAgIHZvaWQgc3ZnQXR0cmlidXRlQ2hhbmdlZChjb25zdCBRdWFsaWZpZWROYW1lJikg
b3ZlcnJpZGU7CiAKLSAgICBSZWZQdHI8RmlsdGVyRWZmZWN0PiBidWlsZChTVkdGaWx0ZXJCdWls
ZGVyKiwgRmlsdGVyJikgY29uc3Qgb3ZlcnJpZGU7CisgICAgUmVmUHRyPEZpbHRlckVmZmVjdD4g
YnVpbGQoU1ZHRmlsdGVyQnVpbGRlciYpIGNvbnN0IG92ZXJyaWRlOwogCiAgICAgUHJvcGVydHlS
ZWdpc3RyeSBtX3Byb3BlcnR5UmVnaXN0cnkgeyAqdGhpcyB9OwogICAgIFJlZjxTVkdBbmltYXRl
ZFN0cmluZz4gbV9pbjEgeyBTVkdBbmltYXRlZFN0cmluZzo6Y3JlYXRlKHRoaXMpIH07CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVJbWFnZUVsZW1lbnQuY3BwIGIvU291cmNl
L1dlYkNvcmUvc3ZnL1NWR0ZFSW1hZ2VFbGVtZW50LmNwcAppbmRleCBlMTQ2ODhhNWViMTc2ZjAy
YTE2YzA1NTBmMDgxMTk1ZDNjMjdlYzRmLi40MmExY2UwZWE2YWUxZDQ5Y2I2YmI3ZWE5Njc0M2Iz
YmUwNWFmNDRiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVJbWFnZUVsZW1l
bnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRUltYWdlRWxlbWVudC5jcHAKQEAg
LTE3NCwxNiArMTc0LDE2IEBAIHZvaWQgU1ZHRkVJbWFnZUVsZW1lbnQ6Om5vdGlmeUZpbmlzaGVk
KENhY2hlZFJlc291cmNlJiwgY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzCiAgICAgUmVuZGVyU1ZH
UmVzb3VyY2U6Om1hcmtGb3JMYXlvdXRBbmRQYXJlbnRSZXNvdXJjZUludmFsaWRhdGlvbigqcGFy
ZW50UmVuZGVyZXIpOwogfQogCi1SZWZQdHI8RmlsdGVyRWZmZWN0PiBTVkdGRUltYWdlRWxlbWVu
dDo6YnVpbGQoU1ZHRmlsdGVyQnVpbGRlciosIEZpbHRlciYgZmlsdGVyKSBjb25zdAorUmVmUHRy
PEZpbHRlckVmZmVjdD4gU1ZHRkVJbWFnZUVsZW1lbnQ6OmJ1aWxkKFNWR0ZpbHRlckJ1aWxkZXIm
KSBjb25zdAogewogICAgIGlmIChtX2NhY2hlZEltYWdlKQotICAgICAgICByZXR1cm4gRkVJbWFn
ZTo6Y3JlYXRlV2l0aEltYWdlKGZpbHRlciwgbV9jYWNoZWRJbWFnZS0+aW1hZ2VGb3JSZW5kZXJl
cihyZW5kZXJlcigpKSwgcHJlc2VydmVBc3BlY3RSYXRpbygpKTsKKyAgICAgICAgcmV0dXJuIEZF
SW1hZ2U6OmNyZWF0ZVdpdGhJbWFnZShtX2NhY2hlZEltYWdlLT5pbWFnZUZvclJlbmRlcmVyKHJl
bmRlcmVyKCkpLCBwcmVzZXJ2ZUFzcGVjdFJhdGlvKCkpOwogCiAgICAgYXV0byB0YXJnZXQgPSBT
VkdVUklSZWZlcmVuY2U6OnRhcmdldEVsZW1lbnRGcm9tSVJJU3RyaW5nKGhyZWYoKSwgdHJlZVNj
b3BlKCkpOwogICAgIGlmIChpc0Rlc2NlbmRhbnRPclNoYWRvd0Rlc2NlbmRhbnRPZih0YXJnZXQu
ZWxlbWVudC5nZXQoKSkpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCi0gICAgcmV0dXJuIEZF
SW1hZ2U6OmNyZWF0ZVdpdGhJUklSZWZlcmVuY2UoZmlsdGVyLCB0cmVlU2NvcGUoKSwgaHJlZigp
LCBwcmVzZXJ2ZUFzcGVjdFJhdGlvKCkpOworICAgIHJldHVybiBGRUltYWdlOjpjcmVhdGVXaXRo
SVJJUmVmZXJlbmNlKHRyZWVTY29wZSgpLCBocmVmKCksIHByZXNlcnZlQXNwZWN0UmF0aW8oKSk7
CiB9CiAKIHZvaWQgU1ZHRkVJbWFnZUVsZW1lbnQ6OmFkZFN1YnJlc291cmNlQXR0cmlidXRlVVJM
cyhMaXN0SGFzaFNldDxVUkw+JiB1cmxzKSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvc3ZnL1NWR0ZFSW1hZ2VFbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVJbWFn
ZUVsZW1lbnQuaAppbmRleCBkOTNlMGQwZGI4Yjg4NjY1NDgwZjIxMDE1YTI1NmJhZGExNTRjNWM3
Li4yYTNlOWY2MGViZmMyN2QwMTM5YjJjMzc2ODVmMzM4YjFjOGI2NzlmIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVJbWFnZUVsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9zdmcvU1ZHRkVJbWFnZUVsZW1lbnQuaApAQCAtNTUsNyArNTUsNyBAQCBwcml2YXRlOgogCiAg
ICAgdm9pZCBkaWRGaW5pc2hJbnNlcnRpbmdOb2RlKCkgb3ZlcnJpZGU7CiAKLSAgICBSZWZQdHI8
RmlsdGVyRWZmZWN0PiBidWlsZChTVkdGaWx0ZXJCdWlsZGVyKiwgRmlsdGVyJikgY29uc3Qgb3Zl
cnJpZGU7CisgICAgUmVmUHRyPEZpbHRlckVmZmVjdD4gYnVpbGQoU1ZHRmlsdGVyQnVpbGRlciYp
IGNvbnN0IG92ZXJyaWRlOwogCiAgICAgdm9pZCBjbGVhclJlc291cmNlUmVmZXJlbmNlcygpOwog
ICAgIHZvaWQgcmVxdWVzdEltYWdlUmVzb3VyY2UoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3N2Zy9TVkdGRU1lcmdlRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVN
ZXJnZUVsZW1lbnQuY3BwCmluZGV4IGJlMmY2ZTAzMDdkYzU1MTYwMDc5MGZkNWJmMTgyZjFkOTQ2
MjNkZDYuLjFjMGQ1ODJkMDEzYjg3Y2YwZTNjMTEwOGI5NjJmMmQzNjlkYzMwNDIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRU1lcmdlRWxlbWVudC5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvc3ZnL1NWR0ZFTWVyZ2VFbGVtZW50LmNwcApAQCAtNDUsMTMgKzQ1LDEyIEBAIFJl
ZjxTVkdGRU1lcmdlRWxlbWVudD4gU1ZHRkVNZXJnZUVsZW1lbnQ6OmNyZWF0ZShjb25zdCBRdWFs
aWZpZWROYW1lJiB0YWdOYW1lLCBECiAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgU1ZHRkVNZXJn
ZUVsZW1lbnQodGFnTmFtZSwgZG9jdW1lbnQpKTsKIH0KIAotUmVmUHRyPEZpbHRlckVmZmVjdD4g
U1ZHRkVNZXJnZUVsZW1lbnQ6OmJ1aWxkKFNWR0ZpbHRlckJ1aWxkZXIqIGZpbHRlckJ1aWxkZXIs
IEZpbHRlciYgZmlsdGVyKSBjb25zdAorUmVmUHRyPEZpbHRlckVmZmVjdD4gU1ZHRkVNZXJnZUVs
ZW1lbnQ6OmJ1aWxkKFNWR0ZpbHRlckJ1aWxkZXImIGZpbHRlckJ1aWxkZXIpIGNvbnN0CiB7Ci0g
ICAgYXV0byBlZmZlY3QgPSBGRU1lcmdlOjpjcmVhdGUoZmlsdGVyKTsKLSAgICBhdXRvJiBtZXJn
ZUlucHV0cyA9IGVmZmVjdC0+aW5wdXRFZmZlY3RzKCk7Ci0KKyAgICBGaWx0ZXJFZmZlY3RWZWN0
b3IgbWVyZ2VJbnB1dHM7CisgICAgCiAgICAgZm9yIChhdXRvJiBtZXJnZU5vZGUgOiBjaGlsZHJl
bk9mVHlwZTxTVkdGRU1lcmdlTm9kZUVsZW1lbnQ+KCp0aGlzKSkgewotICAgICAgICBhdXRvIG1l
cmdlRWZmZWN0ID0gZmlsdGVyQnVpbGRlci0+Z2V0RWZmZWN0QnlJZChtZXJnZU5vZGUuaW4xKCkp
OworICAgICAgICBhdXRvIG1lcmdlRWZmZWN0ID0gZmlsdGVyQnVpbGRlci5nZXRFZmZlY3RCeUlk
KG1lcmdlTm9kZS5pbjEoKSk7CiAgICAgICAgIGlmICghbWVyZ2VFZmZlY3QpCiAgICAgICAgICAg
ICByZXR1cm4gbnVsbHB0cjsKICAgICAgICAgbWVyZ2VJbnB1dHMuYXBwZW5kKFdURk1vdmUobWVy
Z2VFZmZlY3QpKTsKQEAgLTYyLDYgKzYxLDggQEAgUmVmUHRyPEZpbHRlckVmZmVjdD4gU1ZHRkVN
ZXJnZUVsZW1lbnQ6OmJ1aWxkKFNWR0ZpbHRlckJ1aWxkZXIqIGZpbHRlckJ1aWxkZXIsIEYKICAg
ICBpZiAobWVyZ2VJbnB1dHMuaXNFbXB0eSgpKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAor
ICAgIGF1dG8gZWZmZWN0ID0gRkVNZXJnZTo6Y3JlYXRlKCk7CisgICAgZWZmZWN0LT5pbnB1dEVm
ZmVjdHMoKSA9IFdURk1vdmUobWVyZ2VJbnB1dHMpOwogICAgIHJldHVybiBlZmZlY3Q7CiB9CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRU1lcmdlRWxlbWVudC5oIGIvU291
cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFTWVyZ2VFbGVtZW50LmgKaW5kZXggNzQ1MDg2ODE2ZjY5NzZj
NjY5N2RjNTEwNzU4MDJkMjgzY2Y0ZTNjMi4uNDM3Y2Q3MjU2MzJjNWY0YzUyNDg5NGNjMzI2Y2Ew
OWI0MTk4NTE3ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFTWVyZ2VFbGVt
ZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFTWVyZ2VFbGVtZW50LmgKQEAgLTM1
LDcgKzM1LDcgQEAgcHJpdmF0ZToKICAgICB1c2luZyBQcm9wZXJ0eVJlZ2lzdHJ5ID0gU1ZHUHJv
cGVydHlPd25lclJlZ2lzdHJ5PFNWR0ZFTWVyZ2VFbGVtZW50LCBTVkdGaWx0ZXJQcmltaXRpdmVT
dGFuZGFyZEF0dHJpYnV0ZXM+OwogICAgIGNvbnN0IFNWR1Byb3BlcnR5UmVnaXN0cnkmIHByb3Bl
cnR5UmVnaXN0cnkoKSBjb25zdCBmaW5hbCB7IHJldHVybiBtX3Byb3BlcnR5UmVnaXN0cnk7IH0K
IAotICAgIFJlZlB0cjxGaWx0ZXJFZmZlY3Q+IGJ1aWxkKFNWR0ZpbHRlckJ1aWxkZXIqLCBGaWx0
ZXImKSBjb25zdCBvdmVycmlkZTsKKyAgICBSZWZQdHI8RmlsdGVyRWZmZWN0PiBidWlsZChTVkdG
aWx0ZXJCdWlsZGVyJikgY29uc3Qgb3ZlcnJpZGU7CiAKICAgICBQcm9wZXJ0eVJlZ2lzdHJ5IG1f
cHJvcGVydHlSZWdpc3RyeSB7ICp0aGlzIH07CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvc3ZnL1NWR0ZFTW9ycGhvbG9neUVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NW
R0ZFTW9ycGhvbG9neUVsZW1lbnQuY3BwCmluZGV4IGQ2ZmI5NWM4ZTM3NzZlNmQyMDkzYmVhY2Uz
NWUyZWQxNzk1ZDMyMWIuLjhiMDU2MGM0ZGE4MDAzOTcwMTQ4ZTFlMTVlMmYzMDk3YjkxNTMxNTYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRU1vcnBob2xvZ3lFbGVtZW50LmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVNb3JwaG9sb2d5RWxlbWVudC5jcHAKQEAg
LTExNCwyMCArMTE0LDE5IEBAIHZvaWQgU1ZHRkVNb3JwaG9sb2d5RWxlbWVudDo6c3ZnQXR0cmli
dXRlQ2hhbmdlZChjb25zdCBRdWFsaWZpZWROYW1lJiBhdHRyTmFtZSkKICAgICBTVkdGaWx0ZXJQ
cmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXM6OnN2Z0F0dHJpYnV0ZUNoYW5nZWQoYXR0ck5hbWUp
OwogfQogCi1SZWZQdHI8RmlsdGVyRWZmZWN0PiBTVkdGRU1vcnBob2xvZ3lFbGVtZW50OjpidWls
ZChTVkdGaWx0ZXJCdWlsZGVyKiBmaWx0ZXJCdWlsZGVyLCBGaWx0ZXImIGZpbHRlcikgY29uc3QK
K1JlZlB0cjxGaWx0ZXJFZmZlY3Q+IFNWR0ZFTW9ycGhvbG9neUVsZW1lbnQ6OmJ1aWxkKFNWR0Zp
bHRlckJ1aWxkZXImIGZpbHRlckJ1aWxkZXIpIGNvbnN0CiB7Ci0gICAgYXV0byBpbnB1dDEgPSBm
aWx0ZXJCdWlsZGVyLT5nZXRFZmZlY3RCeUlkKGluMSgpKTsKLSAgICBmbG9hdCB4UmFkaXVzID0g
cmFkaXVzWCgpOwotICAgIGZsb2F0IHlSYWRpdXMgPSByYWRpdXNZKCk7Ci0KKyAgICBhdXRvIGlu
cHV0MSA9IGZpbHRlckJ1aWxkZXIuZ2V0RWZmZWN0QnlJZChpbjEoKSk7CiAgICAgaWYgKCFpbnB1
dDEpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCisgICAgZmxvYXQgeFJhZGl1cyA9IHJhZGl1
c1goKTsKKyAgICBmbG9hdCB5UmFkaXVzID0gcmFkaXVzWSgpOwogICAgIGlmICh4UmFkaXVzIDwg
MCB8fCB5UmFkaXVzIDwgMCkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKLSAgICBhdXRvIGVm
ZmVjdCA9IEZFTW9ycGhvbG9neTo6Y3JlYXRlKGZpbHRlciwgc3ZnT3BlcmF0b3IoKSwgeFJhZGl1
cywgeVJhZGl1cyk7Ci0gICAgZWZmZWN0LT5pbnB1dEVmZmVjdHMoKSA9IHsgaW5wdXQxIH07Cisg
ICAgYXV0byBlZmZlY3QgPSBGRU1vcnBob2xvZ3k6OmNyZWF0ZShzdmdPcGVyYXRvcigpLCB4UmFk
aXVzLCB5UmFkaXVzKTsKKyAgICBlZmZlY3QtPmlucHV0RWZmZWN0cygpID0geyBXVEZNb3ZlKGlu
cHV0MSkgfTsKICAgICByZXR1cm4gZWZmZWN0OwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9zdmcvU1ZHRkVNb3JwaG9sb2d5RWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NW
R0ZFTW9ycGhvbG9neUVsZW1lbnQuaAppbmRleCAxYTkwODhiNzVjZjhkODVhZTM4ZjI5M2UxMTE5
OGE2NmY2NmFhNjY5Li5iMjFiNmY1YzQ3Yjc4NWRmMjhmMDEzZWRlNTQwMWM4NjZkNDBlOWRkIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVNb3JwaG9sb2d5RWxlbWVudC5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRU1vcnBob2xvZ3lFbGVtZW50LmgKQEAgLTgxLDcg
KzgxLDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIHN2Z0F0dHJpYnV0ZUNoYW5nZWQoY29uc3QgUXVh
bGlmaWVkTmFtZSYpIG92ZXJyaWRlOwogCiAgICAgYm9vbCBzZXRGaWx0ZXJFZmZlY3RBdHRyaWJ1
dGUoRmlsdGVyRWZmZWN0KiwgY29uc3QgUXVhbGlmaWVkTmFtZSYpIG92ZXJyaWRlOwotICAgIFJl
ZlB0cjxGaWx0ZXJFZmZlY3Q+IGJ1aWxkKFNWR0ZpbHRlckJ1aWxkZXIqLCBGaWx0ZXImKSBjb25z
dCBvdmVycmlkZTsKKyAgICBSZWZQdHI8RmlsdGVyRWZmZWN0PiBidWlsZChTVkdGaWx0ZXJCdWls
ZGVyJikgY29uc3Qgb3ZlcnJpZGU7CiAKICAgICBQcm9wZXJ0eVJlZ2lzdHJ5IG1fcHJvcGVydHlS
ZWdpc3RyeSB7ICp0aGlzIH07CiAgICAgUmVmPFNWR0FuaW1hdGVkU3RyaW5nPiBtX2luMSB7IFNW
R0FuaW1hdGVkU3RyaW5nOjpjcmVhdGUodGhpcykgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3N2Zy9TVkdGRU9mZnNldEVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZF
T2Zmc2V0RWxlbWVudC5jcHAKaW5kZXggMDM4MjY4Yjg5YjJmMTlmOWJlNTY4NzM5ZDEyMzAzNTQx
MDBhNWVlNy4uOWIwZDcwMmExZDI1ODU0MjA4Yjk3ZmY5ZDZhZGQxZjgyN2UyOWFmNSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFT2Zmc2V0RWxlbWVudC5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFT2Zmc2V0RWxlbWVudC5jcHAKQEAgLTgxLDE0ICs4MSwxNCBA
QCB2b2lkIFNWR0ZFT2Zmc2V0RWxlbWVudDo6c3ZnQXR0cmlidXRlQ2hhbmdlZChjb25zdCBRdWFs
aWZpZWROYW1lJiBhdHRyTmFtZSkKICAgICBTVkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJp
YnV0ZXM6OnN2Z0F0dHJpYnV0ZUNoYW5nZWQoYXR0ck5hbWUpOwogfQogCi1SZWZQdHI8RmlsdGVy
RWZmZWN0PiBTVkdGRU9mZnNldEVsZW1lbnQ6OmJ1aWxkKFNWR0ZpbHRlckJ1aWxkZXIqIGZpbHRl
ckJ1aWxkZXIsIEZpbHRlciYgZmlsdGVyKSBjb25zdAorUmVmUHRyPEZpbHRlckVmZmVjdD4gU1ZH
RkVPZmZzZXRFbGVtZW50OjpidWlsZChTVkdGaWx0ZXJCdWlsZGVyJiBmaWx0ZXJCdWlsZGVyKSBj
b25zdAogewotICAgIGF1dG8gaW5wdXQxID0gZmlsdGVyQnVpbGRlci0+Z2V0RWZmZWN0QnlJZChp
bjEoKSk7CisgICAgYXV0byBpbnB1dDEgPSBmaWx0ZXJCdWlsZGVyLmdldEVmZmVjdEJ5SWQoaW4x
KCkpOwogCiAgICAgaWYgKCFpbnB1dDEpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCi0gICAg
YXV0byBlZmZlY3QgPSBGRU9mZnNldDo6Y3JlYXRlKGZpbHRlciwgZHgoKSwgZHkoKSk7CisgICAg
YXV0byBlZmZlY3QgPSBGRU9mZnNldDo6Y3JlYXRlKGR4KCksIGR5KCkpOwogICAgIGVmZmVjdC0+
aW5wdXRFZmZlY3RzKCkgPSB7IGlucHV0MSB9OwogICAgIHJldHVybiBlZmZlY3Q7CiB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVPZmZzZXRFbGVtZW50LmggYi9Tb3VyY2Uv
V2ViQ29yZS9zdmcvU1ZHRkVPZmZzZXRFbGVtZW50LmgKaW5kZXggNTc0NzNkY2M3MmRiNjdiMTI1
ZWEyZWQ0NjVlMzViNTczNzA0OWJlZS4uODk5NmYyODJiMDFlOGQ5Y2Q2NjdiZjIwYjVjZDk4OGE1
OTlhZjg4OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFT2Zmc2V0RWxlbWVu
dC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRU9mZnNldEVsZW1lbnQuaApAQCAtNDcs
NyArNDcsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgcGFyc2VBdHRyaWJ1dGUoY29uc3QgUXVhbGlm
aWVkTmFtZSYsIGNvbnN0IEF0b21TdHJpbmcmKSBvdmVycmlkZTsKICAgICB2b2lkIHN2Z0F0dHJp
YnV0ZUNoYW5nZWQoY29uc3QgUXVhbGlmaWVkTmFtZSYpIG92ZXJyaWRlOwogCi0gICAgUmVmUHRy
PEZpbHRlckVmZmVjdD4gYnVpbGQoU1ZHRmlsdGVyQnVpbGRlciosIEZpbHRlciYpIGNvbnN0IG92
ZXJyaWRlOworICAgIFJlZlB0cjxGaWx0ZXJFZmZlY3Q+IGJ1aWxkKFNWR0ZpbHRlckJ1aWxkZXIm
KSBjb25zdCBvdmVycmlkZTsKIAogICAgIFByb3BlcnR5UmVnaXN0cnkgbV9wcm9wZXJ0eVJlZ2lz
dHJ5IHsgKnRoaXMgfTsKICAgICBSZWY8U1ZHQW5pbWF0ZWRTdHJpbmc+IG1faW4xIHsgU1ZHQW5p
bWF0ZWRTdHJpbmc6OmNyZWF0ZSh0aGlzKSB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
c3ZnL1NWR0ZFU3BlY3VsYXJMaWdodGluZ0VsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvc3Zn
L1NWR0ZFU3BlY3VsYXJMaWdodGluZ0VsZW1lbnQuY3BwCmluZGV4IDliN2NlNDBhYjk3MTZhZTRm
MzM1ZjU0YjI0Y2RhNDU5YTg0MjlhNTkuLjU2M2I5ZjE3YjRhOTE2YjdkMjY1MTI0MmQzN2QzZmMw
YmQ3NTAyZTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRVNwZWN1bGFyTGln
aHRpbmdFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVTcGVjdWxhckxp
Z2h0aW5nRWxlbWVudC5jcHAKQEAgLTE2MCw5ICsxNjAsOSBAQCB2b2lkIFNWR0ZFU3BlY3VsYXJM
aWdodGluZ0VsZW1lbnQ6OmxpZ2h0RWxlbWVudEF0dHJpYnV0ZUNoYW5nZWQoY29uc3QgU1ZHRkVM
aWdodAogICAgIHByaW1pdGl2ZUF0dHJpYnV0ZUNoYW5nZWQoYXR0ck5hbWUpOwogfQogCi1SZWZQ
dHI8RmlsdGVyRWZmZWN0PiBTVkdGRVNwZWN1bGFyTGlnaHRpbmdFbGVtZW50OjpidWlsZChTVkdG
aWx0ZXJCdWlsZGVyKiBmaWx0ZXJCdWlsZGVyLCBGaWx0ZXImIGZpbHRlcikgY29uc3QKK1JlZlB0
cjxGaWx0ZXJFZmZlY3Q+IFNWR0ZFU3BlY3VsYXJMaWdodGluZ0VsZW1lbnQ6OmJ1aWxkKFNWR0Zp
bHRlckJ1aWxkZXImIGZpbHRlckJ1aWxkZXIpIGNvbnN0CiB7Ci0gICAgYXV0byBpbnB1dDEgPSBm
aWx0ZXJCdWlsZGVyLT5nZXRFZmZlY3RCeUlkKGluMSgpKTsKKyAgICBhdXRvIGlucHV0MSA9IGZp
bHRlckJ1aWxkZXIuZ2V0RWZmZWN0QnlJZChpbjEoKSk7CiAKICAgICBpZiAoIWlucHV0MSkKICAg
ICAgICAgcmV0dXJuIG51bGxwdHI7CkBAIC0xNzEsNyArMTcxLDcgQEAgUmVmUHRyPEZpbHRlckVm
ZmVjdD4gU1ZHRkVTcGVjdWxhckxpZ2h0aW5nRWxlbWVudDo6YnVpbGQoU1ZHRmlsdGVyQnVpbGRl
ciogZmlsdGUKICAgICBpZiAoIWxpZ2h0RWxlbWVudCkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7
CiAgICAgCi0gICAgYXV0byBsaWdodFNvdXJjZSA9IGxpZ2h0RWxlbWVudC0+bGlnaHRTb3VyY2Uo
KmZpbHRlckJ1aWxkZXIpOworICAgIGF1dG8gbGlnaHRTb3VyY2UgPSBsaWdodEVsZW1lbnQtPmxp
Z2h0U291cmNlKGZpbHRlckJ1aWxkZXIpOwogCiAgICAgUmVuZGVyT2JqZWN0KiByZW5kZXJlciA9
IHRoaXMtPnJlbmRlcmVyKCk7CiAgICAgaWYgKCFyZW5kZXJlcikKQEAgLTE3OSw3ICsxNzksNyBA
QCBSZWZQdHI8RmlsdGVyRWZmZWN0PiBTVkdGRVNwZWN1bGFyTGlnaHRpbmdFbGVtZW50OjpidWls
ZChTVkdGaWx0ZXJCdWlsZGVyKiBmaWx0ZQogICAgIAogICAgIENvbG9yIGNvbG9yID0gcmVuZGVy
ZXItPnN0eWxlKCkuY29sb3JCeUFwcGx5aW5nQ29sb3JGaWx0ZXIocmVuZGVyZXItPnN0eWxlKCku
c3ZnU3R5bGUoKS5saWdodGluZ0NvbG9yKCkpOwogCi0gICAgYXV0byBlZmZlY3QgPSBGRVNwZWN1
bGFyTGlnaHRpbmc6OmNyZWF0ZShmaWx0ZXIsIGNvbG9yLCBzdXJmYWNlU2NhbGUoKSwgc3BlY3Vs
YXJDb25zdGFudCgpLCBzcGVjdWxhckV4cG9uZW50KCksIGtlcm5lbFVuaXRMZW5ndGhYKCksIGtl
cm5lbFVuaXRMZW5ndGhZKCksIFdURk1vdmUobGlnaHRTb3VyY2UpKTsKKyAgICBhdXRvIGVmZmVj
dCA9IEZFU3BlY3VsYXJMaWdodGluZzo6Y3JlYXRlKGNvbG9yLCBzdXJmYWNlU2NhbGUoKSwgc3Bl
Y3VsYXJDb25zdGFudCgpLCBzcGVjdWxhckV4cG9uZW50KCksIGtlcm5lbFVuaXRMZW5ndGhYKCks
IGtlcm5lbFVuaXRMZW5ndGhZKCksIFdURk1vdmUobGlnaHRTb3VyY2UpKTsKICAgICBlZmZlY3Qt
PmlucHV0RWZmZWN0cygpID0geyBpbnB1dDEgfTsKICAgICByZXR1cm4gZWZmZWN0OwogfQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFU3BlY3VsYXJMaWdodGluZ0VsZW1lbnQu
aCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRVNwZWN1bGFyTGlnaHRpbmdFbGVtZW50LmgKaW5k
ZXggODk3YjhkZTE1NmQxYzc5YTFkM2ZkOGIzMTE4ZTJhYjYzYjQ3YjE0Ni4uNGQxYjUzMWM0MmJl
YjhjZGZhMjAxNTIxNjIxMTY1MTBkMDA5YmM2ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
c3ZnL1NWR0ZFU3BlY3VsYXJMaWdodGluZ0VsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9z
dmcvU1ZHRkVTcGVjdWxhckxpZ2h0aW5nRWxlbWVudC5oCkBAIC01OCw3ICs1OCw3IEBAIHByaXZh
dGU6CiAgICAgdm9pZCBzdmdBdHRyaWJ1dGVDaGFuZ2VkKGNvbnN0IFF1YWxpZmllZE5hbWUmKSBv
dmVycmlkZTsKIAogICAgIGJvb2wgc2V0RmlsdGVyRWZmZWN0QXR0cmlidXRlKEZpbHRlckVmZmVj
dCosIGNvbnN0IFF1YWxpZmllZE5hbWUmKSBvdmVycmlkZTsKLSAgICBSZWZQdHI8RmlsdGVyRWZm
ZWN0PiBidWlsZChTVkdGaWx0ZXJCdWlsZGVyKiwgRmlsdGVyJikgY29uc3Qgb3ZlcnJpZGU7Cisg
ICAgUmVmUHRyPEZpbHRlckVmZmVjdD4gYnVpbGQoU1ZHRmlsdGVyQnVpbGRlciYpIGNvbnN0IG92
ZXJyaWRlOwogCiAgICAgUHJvcGVydHlSZWdpc3RyeSBtX3Byb3BlcnR5UmVnaXN0cnkgeyAqdGhp
cyB9OwogICAgIFJlZjxTVkdBbmltYXRlZFN0cmluZz4gbV9pbjEgeyBTVkdBbmltYXRlZFN0cmlu
Zzo6Y3JlYXRlKHRoaXMpIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVU
aWxlRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVUaWxlRWxlbWVudC5jcHAK
aW5kZXggMzliZGNjNzczNTk2NjUwMzZlMWFlNzQ3NjEyZWFkNmY5YWMzNzM3MC4uMDAxZGQ1MDg5
MjE0OTg5MTU2ZDcyNDY3YWMyMGY0ZmZmN2Q0ZGM1OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvc3ZnL1NWR0ZFVGlsZUVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdG
RVRpbGVFbGVtZW50LmNwcApAQCAtNzAsMTUgKzcwLDE1IEBAIHZvaWQgU1ZHRkVUaWxlRWxlbWVu
dDo6c3ZnQXR0cmlidXRlQ2hhbmdlZChjb25zdCBRdWFsaWZpZWROYW1lJiBhdHRyTmFtZSkKICAg
ICBTVkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXM6OnN2Z0F0dHJpYnV0ZUNoYW5n
ZWQoYXR0ck5hbWUpOwogfQogCi1SZWZQdHI8RmlsdGVyRWZmZWN0PiBTVkdGRVRpbGVFbGVtZW50
OjpidWlsZChTVkdGaWx0ZXJCdWlsZGVyKiBmaWx0ZXJCdWlsZGVyLCBGaWx0ZXImIGZpbHRlcikg
Y29uc3QKK1JlZlB0cjxGaWx0ZXJFZmZlY3Q+IFNWR0ZFVGlsZUVsZW1lbnQ6OmJ1aWxkKFNWR0Zp
bHRlckJ1aWxkZXImIGZpbHRlckJ1aWxkZXIpIGNvbnN0CiB7Ci0gICAgYXV0byBpbnB1dDEgPSBm
aWx0ZXJCdWlsZGVyLT5nZXRFZmZlY3RCeUlkKGluMSgpKTsKKyAgICBhdXRvIGlucHV0MSA9IGZp
bHRlckJ1aWxkZXIuZ2V0RWZmZWN0QnlJZChpbjEoKSk7CiAKICAgICBpZiAoIWlucHV0MSkKICAg
ICAgICAgcmV0dXJuIG51bGxwdHI7CiAKLSAgICBhdXRvIGVmZmVjdCA9IEZFVGlsZTo6Y3JlYXRl
KGZpbHRlcik7Ci0gICAgZWZmZWN0LT5pbnB1dEVmZmVjdHMoKSA9IHsgaW5wdXQxIH07CisgICAg
YXV0byBlZmZlY3QgPSBGRVRpbGU6OmNyZWF0ZSgpOworICAgIGVmZmVjdC0+aW5wdXRFZmZlY3Rz
KCkgPSB7IFdURk1vdmUoaW5wdXQxKSB9OwogICAgIHJldHVybiBlZmZlY3Q7CiB9CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRVRpbGVFbGVtZW50LmggYi9Tb3VyY2UvV2Vi
Q29yZS9zdmcvU1ZHRkVUaWxlRWxlbWVudC5oCmluZGV4IDQ1YjMyNzE4NTFkN2ZjMGRjMmQzYmNj
ODc5YTIyZGM0MmEzM2E5MWYuLmNhYmFjZTZiZDAxYzJiMWQzNTY0YTVjZWU1YzI3NWI2Njk2Zjlk
NDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRVRpbGVFbGVtZW50LmgKKysr
IGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFVGlsZUVsZW1lbnQuaApAQCAtNDIsNyArNDIsNyBA
QCBwcml2YXRlOgogICAgIHZvaWQgcGFyc2VBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYs
IGNvbnN0IEF0b21TdHJpbmcmKSBvdmVycmlkZTsKICAgICB2b2lkIHN2Z0F0dHJpYnV0ZUNoYW5n
ZWQoY29uc3QgUXVhbGlmaWVkTmFtZSYpIG92ZXJyaWRlOwogCi0gICAgUmVmUHRyPEZpbHRlckVm
ZmVjdD4gYnVpbGQoU1ZHRmlsdGVyQnVpbGRlciosIEZpbHRlciYpIGNvbnN0IG92ZXJyaWRlOwor
ICAgIFJlZlB0cjxGaWx0ZXJFZmZlY3Q+IGJ1aWxkKFNWR0ZpbHRlckJ1aWxkZXImKSBjb25zdCBv
dmVycmlkZTsKIAogICAgIFByb3BlcnR5UmVnaXN0cnkgbV9wcm9wZXJ0eVJlZ2lzdHJ5IHsgKnRo
aXMgfTsKICAgICBSZWY8U1ZHQW5pbWF0ZWRTdHJpbmc+IG1faW4xIHsgU1ZHQW5pbWF0ZWRTdHJp
bmc6OmNyZWF0ZSh0aGlzKSB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZF
VHVyYnVsZW5jZUVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFVHVyYnVsZW5j
ZUVsZW1lbnQuY3BwCmluZGV4IDExNTYxMTE5ZDgzZTNmYzc4OGE0MmIxNDg2N2M2NTY0MTIzMzRh
NGQuLjE1MWI3YjllOGUwOGE0M2U3Y2NjYjY4MDlhYTcyOTE0NmRiYmYwZDggMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRVR1cmJ1bGVuY2VFbGVtZW50LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9zdmcvU1ZHRkVUdXJidWxlbmNlRWxlbWVudC5jcHAKQEAgLTExNywxMSArMTE3
LDExIEBAIHZvaWQgU1ZHRkVUdXJidWxlbmNlRWxlbWVudDo6c3ZnQXR0cmlidXRlQ2hhbmdlZChj
b25zdCBRdWFsaWZpZWROYW1lJiBhdHRyTmFtZSkKICAgICBTVkdGaWx0ZXJQcmltaXRpdmVTdGFu
ZGFyZEF0dHJpYnV0ZXM6OnN2Z0F0dHJpYnV0ZUNoYW5nZWQoYXR0ck5hbWUpOwogfQogCi1SZWZQ
dHI8RmlsdGVyRWZmZWN0PiBTVkdGRVR1cmJ1bGVuY2VFbGVtZW50OjpidWlsZChTVkdGaWx0ZXJC
dWlsZGVyKiwgRmlsdGVyJiBmaWx0ZXIpIGNvbnN0CitSZWZQdHI8RmlsdGVyRWZmZWN0PiBTVkdG
RVR1cmJ1bGVuY2VFbGVtZW50OjpidWlsZChTVkdGaWx0ZXJCdWlsZGVyJikgY29uc3QKIHsKICAg
ICBpZiAoYmFzZUZyZXF1ZW5jeVgoKSA8IDAgfHwgYmFzZUZyZXF1ZW5jeVkoKSA8IDApCiAgICAg
ICAgIHJldHVybiBudWxscHRyOwotICAgIHJldHVybiBGRVR1cmJ1bGVuY2U6OmNyZWF0ZShmaWx0
ZXIsIHR5cGUoKSwgYmFzZUZyZXF1ZW5jeVgoKSwgYmFzZUZyZXF1ZW5jeVkoKSwgbnVtT2N0YXZl
cygpLCBzZWVkKCksIHN0aXRjaFRpbGVzKCkgPT0gU1ZHX1NUSVRDSFRZUEVfU1RJVENIKTsKKyAg
ICByZXR1cm4gRkVUdXJidWxlbmNlOjpjcmVhdGUodHlwZSgpLCBiYXNlRnJlcXVlbmN5WCgpLCBi
YXNlRnJlcXVlbmN5WSgpLCBudW1PY3RhdmVzKCksIHNlZWQoKSwgc3RpdGNoVGlsZXMoKSA9PSBT
VkdfU1RJVENIVFlQRV9TVElUQ0gpOwogfQogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9zdmcvU1ZHRkVUdXJidWxlbmNlRWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZF
VHVyYnVsZW5jZUVsZW1lbnQuaAppbmRleCBiZjlkYTIyYWQ0MmU0MTBhMTA0MzVlMGE0MGUzNDI2
Nzc2OWUxOThhLi41MGFmOTEwZWI1OGUyYzkyMjQxYTkwZGE4Y2JkZmRjNjgxNGY5MzE2IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVUdXJidWxlbmNlRWxlbWVudC5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRVR1cmJ1bGVuY2VFbGVtZW50LmgKQEAgLTExOSw3ICsx
MTksNyBAQCBwcml2YXRlOgogICAgIHZvaWQgc3ZnQXR0cmlidXRlQ2hhbmdlZChjb25zdCBRdWFs
aWZpZWROYW1lJikgb3ZlcnJpZGU7CiAKICAgICBib29sIHNldEZpbHRlckVmZmVjdEF0dHJpYnV0
ZShGaWx0ZXJFZmZlY3QqLCBjb25zdCBRdWFsaWZpZWROYW1lJiBhdHRyTmFtZSkgb3ZlcnJpZGU7
Ci0gICAgUmVmUHRyPEZpbHRlckVmZmVjdD4gYnVpbGQoU1ZHRmlsdGVyQnVpbGRlciosIEZpbHRl
ciYpIGNvbnN0IG92ZXJyaWRlOworICAgIFJlZlB0cjxGaWx0ZXJFZmZlY3Q+IGJ1aWxkKFNWR0Zp
bHRlckJ1aWxkZXImKSBjb25zdCBvdmVycmlkZTsKIAogICAgIFByb3BlcnR5UmVnaXN0cnkgbV9w
cm9wZXJ0eVJlZ2lzdHJ5IHsgKnRoaXMgfTsKICAgICBSZWY8U1ZHQW5pbWF0ZWROdW1iZXI+IG1f
YmFzZUZyZXF1ZW5jeVggeyBTVkdBbmltYXRlZE51bWJlcjo6Y3JlYXRlKHRoaXMpIH07CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRy
aWJ1dGVzLmggYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRB
dHRyaWJ1dGVzLmgKaW5kZXggYzk4YjEzZWQ5NjI3NmFmOWUxNGY2NDI4MTFhNmZkNzQ2NzcyYWNh
Ny4uMzhkNDk4NjA5MzM4MjE4N2JhZDIyNGQyOTdkNDI1YzkxZGU1MzlkNyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlcy5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJp
YnV0ZXMuaApAQCAtMzgsNyArMzgsNyBAQCBjbGFzcyBTVkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFy
ZEF0dHJpYnV0ZXMgOiBwdWJsaWMgU1ZHRWxlbWVudCB7CiBwdWJsaWM6CiAgICAgdm9pZCBzZXRT
dGFuZGFyZEF0dHJpYnV0ZXMoRmlsdGVyRWZmZWN0KikgY29uc3Q7CiAKLSAgICB2aXJ0dWFsIFJl
ZlB0cjxGaWx0ZXJFZmZlY3Q+IGJ1aWxkKFNWR0ZpbHRlckJ1aWxkZXIqLCBGaWx0ZXImKSBjb25z
dCA9IDA7CisgICAgdmlydHVhbCBSZWZQdHI8RmlsdGVyRWZmZWN0PiBidWlsZChTVkdGaWx0ZXJC
dWlsZGVyJikgY29uc3QgPSAwOwogICAgIC8vIFJldHVybnMgdHJ1ZSwgaWYgdGhlIG5ldyB2YWx1
ZSBpcyBkaWZmZXJlbnQgZnJvbSB0aGUgb2xkIG9uZS4KICAgICB2aXJ0dWFsIGJvb2wgc2V0Rmls
dGVyRWZmZWN0QXR0cmlidXRlKEZpbHRlckVmZmVjdCosIGNvbnN0IFF1YWxpZmllZE5hbWUmKTsK
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL2dyYXBoaWNzL2ZpbHRlcnMvU1ZHRkVJ
bWFnZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvZ3JhcGhpY3MvZmlsdGVycy9TVkdGRUltYWdl
LmNwcAppbmRleCAzODVhZjI5MDg0OGEzZDBiODNmMTJhYzk2MTllNmJmOTZjOWYyMzk2Li40ZDY5
YTgwZDZiMjVmY2Y3Y2E2M2ZkMjBkMzFlM2IxMDY5OGIxNTI1IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9zdmcvZ3JhcGhpY3MvZmlsdGVycy9TVkdGRUltYWdlLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9zdmcvZ3JhcGhpY3MvZmlsdGVycy9TVkdGRUltYWdlLmNwcApAQCAtMzUsNDAgKzM1
LDQzIEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotRkVJbWFnZTo6RkVJbWFnZShGaWx0ZXIm
IGZpbHRlciwgUmVmUHRyPEltYWdlPiBpbWFnZSwgY29uc3QgU1ZHUHJlc2VydmVBc3BlY3RSYXRp
b1ZhbHVlJiBwcmVzZXJ2ZUFzcGVjdFJhdGlvKQotICAgIDogRmlsdGVyRWZmZWN0KGZpbHRlciwg
VHlwZTo6SW1hZ2UpCitGRUltYWdlOjpGRUltYWdlKFJlZlB0cjxJbWFnZT4gaW1hZ2UsIGNvbnN0
IFNWR1ByZXNlcnZlQXNwZWN0UmF0aW9WYWx1ZSYgcHJlc2VydmVBc3BlY3RSYXRpbykKKyAgICA6
IEZpbHRlckVmZmVjdChGaWx0ZXJFZmZlY3Q6OlR5cGU6OkZFSW1hZ2UpCiAgICAgLCBtX2ltYWdl
KGltYWdlKQogICAgICwgbV9wcmVzZXJ2ZUFzcGVjdFJhdGlvKHByZXNlcnZlQXNwZWN0UmF0aW8p
CiB7CiB9CiAKLUZFSW1hZ2U6OkZFSW1hZ2UoRmlsdGVyJiBmaWx0ZXIsIFRyZWVTY29wZSYgdHJl
ZVNjb3BlLCBjb25zdCBTdHJpbmcmIGhyZWYsIGNvbnN0IFNWR1ByZXNlcnZlQXNwZWN0UmF0aW9W
YWx1ZSYgcHJlc2VydmVBc3BlY3RSYXRpbykKLSAgICA6IEZpbHRlckVmZmVjdChmaWx0ZXIsIFR5
cGU6OkltYWdlKQorRkVJbWFnZTo6RkVJbWFnZShUcmVlU2NvcGUmIHRyZWVTY29wZSwgY29uc3Qg
U3RyaW5nJiBocmVmLCBjb25zdCBTVkdQcmVzZXJ2ZUFzcGVjdFJhdGlvVmFsdWUmIHByZXNlcnZl
QXNwZWN0UmF0aW8pCisgICAgOiBGaWx0ZXJFZmZlY3QoRmlsdGVyRWZmZWN0OjpUeXBlOjpGRUlt
YWdlKQogICAgICwgbV90cmVlU2NvcGUoJnRyZWVTY29wZSkKICAgICAsIG1faHJlZihocmVmKQog
ICAgICwgbV9wcmVzZXJ2ZUFzcGVjdFJhdGlvKHByZXNlcnZlQXNwZWN0UmF0aW8pCiB7CiB9CiAK
LVJlZjxGRUltYWdlPiBGRUltYWdlOjpjcmVhdGVXaXRoSW1hZ2UoRmlsdGVyJiBmaWx0ZXIsIFJl
ZlB0cjxJbWFnZT4gaW1hZ2UsIGNvbnN0IFNWR1ByZXNlcnZlQXNwZWN0UmF0aW9WYWx1ZSYgcHJl
c2VydmVBc3BlY3RSYXRpbykKK1JlZjxGRUltYWdlPiBGRUltYWdlOjpjcmVhdGVXaXRoSW1hZ2Uo
UmVmUHRyPEltYWdlPiBpbWFnZSwgY29uc3QgU1ZHUHJlc2VydmVBc3BlY3RSYXRpb1ZhbHVlJiBw
cmVzZXJ2ZUFzcGVjdFJhdGlvKQogewotICAgIHJldHVybiBhZG9wdFJlZigqbmV3IEZFSW1hZ2Uo
ZmlsdGVyLCBpbWFnZSwgcHJlc2VydmVBc3BlY3RSYXRpbykpOworICAgIHJldHVybiBhZG9wdFJl
ZigqbmV3IEZFSW1hZ2UoaW1hZ2UsIHByZXNlcnZlQXNwZWN0UmF0aW8pKTsKIH0KIAotUmVmPEZF
SW1hZ2U+IEZFSW1hZ2U6OmNyZWF0ZVdpdGhJUklSZWZlcmVuY2UoRmlsdGVyJiBmaWx0ZXIsIFRy
ZWVTY29wZSYgdHJlZVNjb3BlLCBjb25zdCBTdHJpbmcmIGhyZWYsIGNvbnN0IFNWR1ByZXNlcnZl
QXNwZWN0UmF0aW9WYWx1ZSYgcHJlc2VydmVBc3BlY3RSYXRpbykKK1JlZjxGRUltYWdlPiBGRUlt
YWdlOjpjcmVhdGVXaXRoSVJJUmVmZXJlbmNlKFRyZWVTY29wZSYgdHJlZVNjb3BlLCBjb25zdCBT
dHJpbmcmIGhyZWYsIGNvbnN0IFNWR1ByZXNlcnZlQXNwZWN0UmF0aW9WYWx1ZSYgcHJlc2VydmVB
c3BlY3RSYXRpbykKIHsKLSAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBGRUltYWdlKGZpbHRlciwg
dHJlZVNjb3BlLCBocmVmLCBwcmVzZXJ2ZUFzcGVjdFJhdGlvKSk7CisgICAgcmV0dXJuIGFkb3B0
UmVmKCpuZXcgRkVJbWFnZSh0cmVlU2NvcGUsIGhyZWYsIHByZXNlcnZlQXNwZWN0UmF0aW8pKTsK
IH0KIAotdm9pZCBGRUltYWdlOjpkZXRlcm1pbmVBYnNvbHV0ZVBhaW50UmVjdCgpCit2b2lkIEZF
SW1hZ2U6OmRldGVybWluZUFic29sdXRlUGFpbnRSZWN0KGNvbnN0IEZpbHRlciYgZmlsdGVyKQog
ewotICAgIEZsb2F0UmVjdCBwYWludFJlY3QgPSBmaWx0ZXIoKS5hYnNvbHV0ZVRyYW5zZm9ybSgp
Lm1hcFJlY3QoZmlsdGVyUHJpbWl0aXZlU3VicmVnaW9uKCkpOworICAgIEZsb2F0UmVjdCBwYWlu
dFJlY3QgPSBmaWx0ZXJQcmltaXRpdmVTdWJyZWdpb24oKTsKKyAgICBwYWludFJlY3Quc2NhbGUo
ZmlsdGVyLmZpbHRlclNjYWxlKCkpOwogICAgIEZsb2F0UmVjdCBzcmNSZWN0OwogICAgIGlmICht
X2ltYWdlKSB7CiAgICAgICAgIHNyY1JlY3Quc2V0U2l6ZShtX2ltYWdlLT5zaXplKCkpOwogICAg
ICAgICBtX3ByZXNlcnZlQXNwZWN0UmF0aW8udHJhbnNmb3JtUmVjdChwYWludFJlY3QsIHNyY1Jl
Y3QpOwotICAgIH0gZWxzZSBpZiAoUmVuZGVyRWxlbWVudCogcmVuZGVyZXIgPSByZWZlcmVuY2Vk
UmVuZGVyZXIoKSkKLSAgICAgICAgc3JjUmVjdCA9IGZpbHRlcigpLmFic29sdXRlVHJhbnNmb3Jt
KCkubWFwUmVjdChyZW5kZXJlci0+cmVwYWludFJlY3RJbkxvY2FsQ29vcmRpbmF0ZXMoKSk7Cisg
ICAgfSBlbHNlIGlmIChSZW5kZXJFbGVtZW50KiByZW5kZXJlciA9IHJlZmVyZW5jZWRSZW5kZXJl
cigpKSB7CisgICAgICAgIHNyY1JlY3QgPSByZW5kZXJlci0+cmVwYWludFJlY3RJbkxvY2FsQ29v
cmRpbmF0ZXMoKTsKKyAgICAgICAgc3JjUmVjdC5zY2FsZShmaWx0ZXIuZmlsdGVyU2NhbGUoKSk7
CisgICAgfQogCiAgICAgaWYgKGNsaXBzVG9Cb3VuZHMoKSkKICAgICAgICAgcGFpbnRSZWN0Lmlu
dGVyc2VjdChtYXhFZmZlY3RSZWN0KCkpOwpAQCAtODcsNyArOTAsNyBAQCBSZW5kZXJFbGVtZW50
KiBGRUltYWdlOjpyZWZlcmVuY2VkUmVuZGVyZXIoKSBjb25zdAogICAgIHJldHVybiB0YXJnZXQu
ZWxlbWVudC0+cmVuZGVyZXIoKTsKIH0KIAotdm9pZCBGRUltYWdlOjpwbGF0Zm9ybUFwcGx5U29m
dHdhcmUoKQordm9pZCBGRUltYWdlOjpwbGF0Zm9ybUFwcGx5U29mdHdhcmUoY29uc3QgRmlsdGVy
JiBmaWx0ZXIpCiB7CiAgICAgUmVuZGVyRWxlbWVudCogcmVuZGVyZXIgPSByZWZlcmVuY2VkUmVu
ZGVyZXIoKTsKICAgICBpZiAoIW1faW1hZ2UgJiYgIXJlbmRlcmVyKQpAQCAtMTAwLDEyICsxMDMs
MTQgQEAgdm9pZCBGRUltYWdlOjpwbGF0Zm9ybUFwcGx5U29mdHdhcmUoKQogICAgIGlmICghcmVz
dWx0SW1hZ2UpCiAgICAgICAgIHJldHVybjsKIAotICAgIEZsb2F0UmVjdCBkZXN0UmVjdCA9IGZp
bHRlcigpLmFic29sdXRlVHJhbnNmb3JtKCkubWFwUmVjdChmaWx0ZXJQcmltaXRpdmVTdWJyZWdp
b24oKSk7CisgICAgRmxvYXRSZWN0IGRlc3RSZWN0ID0gZmlsdGVyUHJpbWl0aXZlU3VicmVnaW9u
KCk7CisgICAgZGVzdFJlY3Quc2NhbGUoZmlsdGVyLmZpbHRlclNjYWxlKCkpOwogCiAgICAgRmxv
YXRSZWN0IHNyY1JlY3Q7Ci0gICAgaWYgKHJlbmRlcmVyKQotICAgICAgICBzcmNSZWN0ID0gZmls
dGVyKCkuYWJzb2x1dGVUcmFuc2Zvcm0oKS5tYXBSZWN0KHJlbmRlcmVyLT5yZXBhaW50UmVjdElu
TG9jYWxDb29yZGluYXRlcygpKTsKLSAgICBlbHNlIHsKKyAgICBpZiAocmVuZGVyZXIpIHsKKyAg
ICAgICAgc3JjUmVjdCA9IHJlbmRlcmVyLT5yZXBhaW50UmVjdEluTG9jYWxDb29yZGluYXRlcygp
OworICAgICAgICBzcmNSZWN0LnNjYWxlKGZpbHRlci5maWx0ZXJTY2FsZSgpKTsKKyAgICB9IGVs
c2UgewogICAgICAgICBzcmNSZWN0ID0gRmxvYXRSZWN0KEZsb2F0UG9pbnQoKSwgbV9pbWFnZS0+
c2l6ZSgpKTsKICAgICAgICAgbV9wcmVzZXJ2ZUFzcGVjdFJhdGlvLnRyYW5zZm9ybVJlY3QoZGVz
dFJlY3QsIHNyY1JlY3QpOwogICAgIH0KQEAgLTExNiw4ICsxMjEsNyBAQCB2b2lkIEZFSW1hZ2U6
OnBsYXRmb3JtQXBwbHlTb2Z0d2FyZSgpCiAgICAgYXV0byYgY29udGV4dCA9IHJlc3VsdEltYWdl
LT5jb250ZXh0KCk7CiAKICAgICBpZiAocmVuZGVyZXIpIHsKLSAgICAgICAgY29uc3QgQWZmaW5l
VHJhbnNmb3JtJiBhYnNvbHV0ZVRyYW5zZm9ybSA9IGZpbHRlcigpLmFic29sdXRlVHJhbnNmb3Jt
KCk7Ci0gICAgICAgIGNvbnRleHQuY29uY2F0Q1RNKGFic29sdXRlVHJhbnNmb3JtKTsKKyAgICAg
ICAgY29udGV4dC5zY2FsZShmaWx0ZXIuZmlsdGVyU2NhbGUoKSk7CiAKICAgICAgICAgUmVmUHRy
IGNvbnRleHROb2RlID0gZG93bmNhc3Q8U1ZHRWxlbWVudD4ocmVuZGVyZXItPmVsZW1lbnQoKSk7
CiAgICAgICAgIGlmIChjb250ZXh0Tm9kZS0+aGFzUmVsYXRpdmVMZW5ndGhzKCkpIHsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9ncmFwaGljcy9maWx0ZXJzL1NWR0ZFSW1hZ2UuaCBi
L1NvdXJjZS9XZWJDb3JlL3N2Zy9ncmFwaGljcy9maWx0ZXJzL1NWR0ZFSW1hZ2UuaAppbmRleCBh
YzE2MGVkY2U3YzBlMGEwNjdiZGVmYmQ3MDdmMmFiZTU1OTA4MWI2Li5jNDIxM2NhZjcyY2Y2NDlh
MWVjMWYyZDdhMjFlNGZhYmVkMjQzN2NhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcv
Z3JhcGhpY3MvZmlsdGVycy9TVkdGRUltYWdlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL2dy
YXBoaWNzL2ZpbHRlcnMvU1ZHRkVJbWFnZS5oCkBAIC0zNCwyMiArMzQsMTggQEAgY2xhc3MgVHJl
ZVNjb3BlOwogCiBjbGFzcyBGRUltYWdlIGZpbmFsIDogcHVibGljIEZpbHRlckVmZmVjdCB7CiBw
dWJsaWM6Ci0gICAgc3RhdGljIFJlZjxGRUltYWdlPiBjcmVhdGVXaXRoSW1hZ2UoRmlsdGVyJiwg
UmVmUHRyPEltYWdlPiwgY29uc3QgU1ZHUHJlc2VydmVBc3BlY3RSYXRpb1ZhbHVlJik7Ci0gICAg
c3RhdGljIFJlZjxGRUltYWdlPiBjcmVhdGVXaXRoSVJJUmVmZXJlbmNlKEZpbHRlciYsIFRyZWVT
Y29wZSYsIGNvbnN0IFN0cmluZyYsIGNvbnN0IFNWR1ByZXNlcnZlQXNwZWN0UmF0aW9WYWx1ZSYp
OworICAgIHN0YXRpYyBSZWY8RkVJbWFnZT4gY3JlYXRlV2l0aEltYWdlKFJlZlB0cjxJbWFnZT4s
IGNvbnN0IFNWR1ByZXNlcnZlQXNwZWN0UmF0aW9WYWx1ZSYpOworICAgIHN0YXRpYyBSZWY8RkVJ
bWFnZT4gY3JlYXRlV2l0aElSSVJlZmVyZW5jZShUcmVlU2NvcGUmLCBjb25zdCBTdHJpbmcmLCBj
b25zdCBTVkdQcmVzZXJ2ZUFzcGVjdFJhdGlvVmFsdWUmKTsKIAogcHJpdmF0ZToKICAgICB2aXJ0
dWFsIH5GRUltYWdlKCkgPSBkZWZhdWx0OwotICAgIEZFSW1hZ2UoRmlsdGVyJiwgUmVmUHRyPElt
YWdlPiwgY29uc3QgU1ZHUHJlc2VydmVBc3BlY3RSYXRpb1ZhbHVlJik7Ci0gICAgRkVJbWFnZShG
aWx0ZXImLCBUcmVlU2NvcGUmLCBjb25zdCBTdHJpbmcmLCBjb25zdCBTVkdQcmVzZXJ2ZUFzcGVj
dFJhdGlvVmFsdWUmKTsKLQotICAgIGNvbnN0IGNoYXIqIGZpbHRlck5hbWUoKSBjb25zdCBmaW5h
bCB7IHJldHVybiAiRkVJbWFnZSI7IH0KLQotICAgIEZpbHRlckVmZmVjdFR5cGUgZmlsdGVyRWZm
ZWN0VHlwZSgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIEZpbHRlckVmZmVjdFR5cGVJbWFnZTsgfQor
ICAgIEZFSW1hZ2UoUmVmUHRyPEltYWdlPiwgY29uc3QgU1ZHUHJlc2VydmVBc3BlY3RSYXRpb1Zh
bHVlJik7CisgICAgRkVJbWFnZShUcmVlU2NvcGUmLCBjb25zdCBTdHJpbmcmLCBjb25zdCBTVkdQ
cmVzZXJ2ZUFzcGVjdFJhdGlvVmFsdWUmKTsKIAogICAgIFJlbmRlckVsZW1lbnQqIHJlZmVyZW5j
ZWRSZW5kZXJlcigpIGNvbnN0OwogCi0gICAgdm9pZCBwbGF0Zm9ybUFwcGx5U29mdHdhcmUoKSBm
aW5hbDsKLSAgICB2b2lkIGRldGVybWluZUFic29sdXRlUGFpbnRSZWN0KCkgZmluYWw7CisgICAg
dm9pZCBwbGF0Zm9ybUFwcGx5U29mdHdhcmUoY29uc3QgRmlsdGVyJikgZmluYWw7CisgICAgdm9p
ZCBkZXRlcm1pbmVBYnNvbHV0ZVBhaW50UmVjdChjb25zdCBGaWx0ZXImKSBmaW5hbDsKICAgICBX
VEY6OlRleHRTdHJlYW0mIGV4dGVybmFsUmVwcmVzZW50YXRpb24oV1RGOjpUZXh0U3RyZWFtJiwg
UmVwcmVzZW50YXRpb25UeXBlKSBjb25zdCBmaW5hbDsKIAogICAgIFJlZlB0cjxJbWFnZT4gbV9p
bWFnZTsKQEAgLTYxLDMgKzU3LDUgQEAgcHJpdmF0ZToKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdl
YkNvcmUKKworU1BFQ0lBTElaRV9UWVBFX1RSQUlUU19GSUxURVJfRUZGRUNUKEZFSW1hZ2UpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvZ3JhcGhpY3MvZmlsdGVycy9TVkdGaWx0ZXIu
Y3BwIGIvU291cmNlL1dlYkNvcmUvc3ZnL2dyYXBoaWNzL2ZpbHRlcnMvU1ZHRmlsdGVyLmNwcApp
bmRleCA5YTk0YTQ2MDM1ODc5MDhhMzg0ZDE3NDI3YjM3MTkzNTkyYjdiY2U3Li44M2YzNDFhZDM0
NTdjZDRhMTFhMzBkNTJjYmM5MjcxZGYwMmE5MzU5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9zdmcvZ3JhcGhpY3MvZmlsdGVycy9TVkdGaWx0ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3N2Zy9ncmFwaGljcy9maWx0ZXJzL1NWR0ZpbHRlci5jcHAKQEAgLTIyLDI5ICsyMiw4MSBAQAog
I2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIlNWR0ZpbHRlci5oIgogCisjaW5jbHVkZSAi
U1ZHRmlsdGVyRWxlbWVudC5oIgorI2luY2x1ZGUgIlNvdXJjZUdyYXBoaWMuaCIKKwogbmFtZXNw
YWNlIFdlYkNvcmUgewogCi1TVkdGaWx0ZXI6OlNWR0ZpbHRlcihjb25zdCBBZmZpbmVUcmFuc2Zv
cm0mIGFic29sdXRlVHJhbnNmb3JtLCBjb25zdCBGbG9hdFJlY3QmIGFic29sdXRlU291cmNlRHJh
d2luZ1JlZ2lvbiwgY29uc3QgRmxvYXRSZWN0JiB0YXJnZXRCb3VuZGluZ0JveCwgY29uc3QgRmxv
YXRSZWN0JiBmaWx0ZXJSZWdpb24sIGJvb2wgZWZmZWN0QkJveE1vZGUpCi0gICAgOiBGaWx0ZXIo
YWJzb2x1dGVUcmFuc2Zvcm0pCi0gICAgLCBtX2Fic29sdXRlU291cmNlRHJhd2luZ1JlZ2lvbihh
YnNvbHV0ZVNvdXJjZURyYXdpbmdSZWdpb24pCitSZWZQdHI8U1ZHRmlsdGVyPiBTVkdGaWx0ZXI6
OmNyZWF0ZShTVkdGaWx0ZXJFbGVtZW50JiBmaWx0ZXJFbGVtZW50LCBTVkdGaWx0ZXJCdWlsZGVy
JiBidWlsZGVyLCBjb25zdCBGbG9hdFNpemUmIGZpbHRlclNjYWxlLCBjb25zdCBGbG9hdFJlY3Qm
IHNvdXJjZUltYWdlUmVjdCwgY29uc3QgRmxvYXRSZWN0JiBmaWx0ZXJSZWdpb24sIEZpbHRlckVm
ZmVjdCYgcHJldmlvdXNFZmZlY3QpCit7CisgICAgcmV0dXJuIGNyZWF0ZShmaWx0ZXJFbGVtZW50
LCBidWlsZGVyLCBmaWx0ZXJTY2FsZSwgc291cmNlSW1hZ2VSZWN0LCBmaWx0ZXJSZWdpb24sIGZp
bHRlclJlZ2lvbiwgJnByZXZpb3VzRWZmZWN0KTsKK30KKworUmVmUHRyPFNWR0ZpbHRlcj4gU1ZH
RmlsdGVyOjpjcmVhdGUoU1ZHRmlsdGVyRWxlbWVudCYgZmlsdGVyRWxlbWVudCwgU1ZHRmlsdGVy
QnVpbGRlciYgYnVpbGRlciwgY29uc3QgRmxvYXRTaXplJiBmaWx0ZXJTY2FsZSwgY29uc3QgRmxv
YXRSZWN0JiBzb3VyY2VJbWFnZVJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgZmlsdGVyUmVnaW9uLCBj
b25zdCBGbG9hdFJlY3QmIHRhcmdldEJvdW5kaW5nQm94KQoreworICAgIHJldHVybiBjcmVhdGUo
ZmlsdGVyRWxlbWVudCwgYnVpbGRlciwgZmlsdGVyU2NhbGUsIHNvdXJjZUltYWdlUmVjdCwgZmls
dGVyUmVnaW9uLCB0YXJnZXRCb3VuZGluZ0JveCwgbnVsbHB0cik7Cit9CisKK1JlZlB0cjxTVkdG
aWx0ZXI+IFNWR0ZpbHRlcjo6Y3JlYXRlKFNWR0ZpbHRlckVsZW1lbnQmIGZpbHRlckVsZW1lbnQs
IFNWR0ZpbHRlckJ1aWxkZXImIGJ1aWxkZXIsIGNvbnN0IEZsb2F0U2l6ZSYgZmlsdGVyU2NhbGUs
IGNvbnN0IEZsb2F0UmVjdCYgc291cmNlSW1hZ2VSZWN0LCBjb25zdCBGbG9hdFJlY3QmIGZpbHRl
clJlZ2lvbiwgY29uc3QgRmxvYXRSZWN0JiB0YXJnZXRCb3VuZGluZ0JveCwgRmlsdGVyRWZmZWN0
KiBwcmV2aW91c0VmZmVjdCkKK3sKKyAgICBib29sIHByaW1pdGl2ZUJvdW5kaW5nQm94TW9kZSA9
IGZpbHRlckVsZW1lbnQucHJpbWl0aXZlVW5pdHMoKSA9PSBTVkdVbml0VHlwZXM6OlNWR19VTklU
X1RZUEVfT0JKRUNUQk9VTkRJTkdCT1g7CisKKyAgICBhdXRvIGZpbHRlciA9IGFkb3B0UmVmKCpu
ZXcgU1ZHRmlsdGVyKGZpbHRlclNjYWxlLCBzb3VyY2VJbWFnZVJlY3QsIGZpbHRlclJlZ2lvbiwg
dGFyZ2V0Qm91bmRpbmdCb3gsIHByaW1pdGl2ZUJvdW5kaW5nQm94TW9kZSkpOworCisgICAgaWYg
KCFwcmV2aW91c0VmZmVjdCkKKyAgICAgICAgYnVpbGRlci5zZXR1cEJ1aWx0aW5FZmZlY3RzKFNv
dXJjZUdyYXBoaWM6OmNyZWF0ZSgpKTsKKyAgICBlbHNlCisgICAgICAgIGJ1aWxkZXIuc2V0dXBC
dWlsdGluRWZmZWN0cyh7ICpwcmV2aW91c0VmZmVjdCB9KTsKKworICAgIGJ1aWxkZXIuc2V0VGFy
Z2V0Qm91bmRpbmdCb3godGFyZ2V0Qm91bmRpbmdCb3gpOworICAgIGJ1aWxkZXIuc2V0UHJpbWl0
aXZlVW5pdHMoZmlsdGVyRWxlbWVudC5wcmltaXRpdmVVbml0cygpKTsKKworICAgIGF1dG8gbGFz
dEVmZmVjdCA9IGJ1aWxkZXIuYnVpbGRGaWx0ZXJFZmZlY3RzKGZpbHRlckVsZW1lbnQpOworICAg
IGlmICghbGFzdEVmZmVjdCkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgCisgICAgc3Rh
dGljIGNvbnN0IHVuc2lnbmVkIG1heFRvdGFsT2ZFZmZlY3RJbnB1dHMgPSAxMDA7CisgICAgaWYg
KGxhc3RFZmZlY3QtPnRvdGFsTnVtYmVyT2ZFZmZlY3RJbnB1dHMoKSA+IG1heFRvdGFsT2ZFZmZl
Y3RJbnB1dHMpCisgICAgICAgIHJldHVybiBudWxscHRyOworCisgICAgZmlsdGVyLT5zZXRMYXN0
RWZmZWN0KFdURk1vdmUobGFzdEVmZmVjdCkpOworICAgIHJldHVybiBmaWx0ZXI7Cit9CisKK1NW
R0ZpbHRlcjo6U1ZHRmlsdGVyKGNvbnN0IEZsb2F0U2l6ZSYgZmlsdGVyU2NhbGUsIGNvbnN0IEZs
b2F0UmVjdCYgc291cmNlSW1hZ2VSZWN0LCBjb25zdCBGbG9hdFJlY3QmIGZpbHRlclJlZ2lvbiwg
Y29uc3QgRmxvYXRSZWN0JiB0YXJnZXRCb3VuZGluZ0JveCwgYm9vbCBlZmZlY3RCQm94TW9kZSkK
KyAgICA6IEZpbHRlcihGaWx0ZXI6OlR5cGU6OlNWR0ZpbHRlciwgZmlsdGVyU2NhbGUsIHNvdXJj
ZUltYWdlUmVjdCwgZmlsdGVyUmVnaW9uKQogICAgICwgbV90YXJnZXRCb3VuZGluZ0JveCh0YXJn
ZXRCb3VuZGluZ0JveCkKLSAgICAsIG1fZmlsdGVyUmVnaW9uKGZpbHRlclJlZ2lvbikKICAgICAs
IG1fZWZmZWN0QkJveE1vZGUoZWZmZWN0QkJveE1vZGUpCiB7Ci0gICAgbV9hYnNvbHV0ZUZpbHRl
clJlZ2lvbiA9IGFic29sdXRlVHJhbnNmb3JtLm1hcFJlY3QoZmlsdGVyUmVnaW9uKTsKIH0KIAot
RmxvYXRTaXplIFNWR0ZpbHRlcjo6c2NhbGVkQnlGaWx0ZXJSZXNvbHV0aW9uKEZsb2F0U2l6ZSBz
aXplKSBjb25zdAorRmxvYXRTaXplIFNWR0ZpbHRlcjo6c2NhbGVkQnlGaWx0ZXJTY2FsZShGbG9h
dFNpemUgc2l6ZSkgY29uc3QKIHsKICAgICBpZiAobV9lZmZlY3RCQm94TW9kZSkKICAgICAgICAg
c2l6ZSA9IHNpemUgKiBtX3RhcmdldEJvdW5kaW5nQm94LnNpemUoKTsKIAotICAgIHJldHVybiBG
aWx0ZXI6OnNjYWxlZEJ5RmlsdGVyUmVzb2x1dGlvbihzaXplKSAqIG1fYWJzb2x1dGVGaWx0ZXJS
ZWdpb24uc2l6ZSgpIC8gbV9maWx0ZXJSZWdpb24uc2l6ZSgpOworICAgIHJldHVybiBGaWx0ZXI6
OnNjYWxlZEJ5RmlsdGVyU2NhbGUoc2l6ZSk7Cit9CisKK3ZvaWQgU1ZHRmlsdGVyOjphcHBseShj
b25zdCBGaWx0ZXImIGZpbHRlcikKK3sKKyAgICBzZXRTb3VyY2VJbWFnZSh7IGZpbHRlci5zb3Vy
Y2VJbWFnZSgpIH0pOworICAgIGFwcGx5RmlsdGVyKCk7Cit9CisKK3ZvaWQgU1ZHRmlsdGVyOjph
cHBseUZpbHRlcigpCit7CisgICAgbV9sYXN0RWZmZWN0LT5hcHBseSgqdGhpcyk7Cit9CisKK0lu
dE91dHNldHMgU1ZHRmlsdGVyOjpvdXRzZXRzKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9sYXN0
RWZmZWN0LT5vdXRzZXRzKCk7CiB9CiAKLVJlZjxTVkdGaWx0ZXI+IFNWR0ZpbHRlcjo6Y3JlYXRl
KGNvbnN0IEFmZmluZVRyYW5zZm9ybSYgYWJzb2x1dGVUcmFuc2Zvcm0sIGNvbnN0IEZsb2F0UmVj
dCYgYWJzb2x1dGVTb3VyY2VEcmF3aW5nUmVnaW9uLCBjb25zdCBGbG9hdFJlY3QmIHRhcmdldEJv
dW5kaW5nQm94LCBjb25zdCBGbG9hdFJlY3QmIGZpbHRlclJlZ2lvbiwgYm9vbCBlZmZlY3RCQm94
TW9kZSkKK3ZvaWQgU1ZHRmlsdGVyOjpjbGVhclJlc3VsdCgpCiB7Ci0gICAgcmV0dXJuIGFkb3B0
UmVmKCpuZXcgU1ZHRmlsdGVyKGFic29sdXRlVHJhbnNmb3JtLCBhYnNvbHV0ZVNvdXJjZURyYXdp
bmdSZWdpb24sIHRhcmdldEJvdW5kaW5nQm94LCBmaWx0ZXJSZWdpb24sIGVmZmVjdEJCb3hNb2Rl
KSk7CisgICAgbV9sYXN0RWZmZWN0LT5jbGVhclJlc3VsdHNSZWN1cnNpdmUoKTsKIH0KIAogfSAv
LyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL2dyYXBo
aWNzL2ZpbHRlcnMvU1ZHRmlsdGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9zdmcvZ3JhcGhpY3MvZmls
dGVycy9TVkdGaWx0ZXIuaAppbmRleCA4MDkzMTQ2ZDY0YWY4ODg1YmMzZGE0OTMwMmY1YWVhMGZi
MTcwMGNmLi5mZTgyMmQ4MWY5Y2NhNDYxMTBhODdlMmIwNDg4ZjM2ZTBhZTBiZTg4IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvZ3JhcGhpY3MvZmlsdGVycy9TVkdGaWx0ZXIuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9zdmcvZ3JhcGhpY3MvZmlsdGVycy9TVkdGaWx0ZXIuaApAQCAtMjAs
NDEgKzIwLDQ2IEBACiAKICNwcmFnbWEgb25jZQogCi0jaW5jbHVkZSAiQWZmaW5lVHJhbnNmb3Jt
LmgiCiAjaW5jbHVkZSAiRmlsdGVyLmgiCi0jaW5jbHVkZSAiRmlsdGVyRWZmZWN0LmgiCiAjaW5j
bHVkZSAiRmxvYXRSZWN0LmgiCiAjaW5jbHVkZSA8d3RmL1JlZi5oPgogI2luY2x1ZGUgPHd0Zi9U
eXBlQ2FzdHMuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCitjbGFzcyBTVkdGaWx0ZXJCdWls
ZGVyOworY2xhc3MgU1ZHRmlsdGVyRWxlbWVudDsKKwogY2xhc3MgU1ZHRmlsdGVyIGZpbmFsIDog
cHVibGljIEZpbHRlciB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFJlZjxTVkdGaWx0ZXI+IGNyZWF0
ZShjb25zdCBBZmZpbmVUcmFuc2Zvcm0mLCBjb25zdCBGbG9hdFJlY3QmLCBjb25zdCBGbG9hdFJl
Y3QmLCBjb25zdCBGbG9hdFJlY3QmLCBib29sKTsKLQotICAgIEZsb2F0UmVjdCBmaWx0ZXJSZWdp
b25JblVzZXJTcGFjZSgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1fZmlsdGVyUmVnaW9uOyB9Ci0g
ICAgRmxvYXRSZWN0IGZpbHRlclJlZ2lvbigpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1fYWJzb2x1
dGVGaWx0ZXJSZWdpb247IH0KKyAgICBzdGF0aWMgUmVmUHRyPFNWR0ZpbHRlcj4gY3JlYXRlKFNW
R0ZpbHRlckVsZW1lbnQmLCBTVkdGaWx0ZXJCdWlsZGVyJiwgY29uc3QgRmxvYXRTaXplJiBmaWx0
ZXJTY2FsZSwgY29uc3QgRmxvYXRSZWN0JiBzb3VyY2VJbWFnZVJlY3QsIGNvbnN0IEZsb2F0UmVj
dCYgZmlsdGVyUmVnaW9uLCBGaWx0ZXJFZmZlY3QmIHByZXZpb3VzRWZmZWN0KTsKKyAgICBzdGF0
aWMgUmVmUHRyPFNWR0ZpbHRlcj4gY3JlYXRlKFNWR0ZpbHRlckVsZW1lbnQmLCBTVkdGaWx0ZXJC
dWlsZGVyJiwgY29uc3QgRmxvYXRTaXplJiBmaWx0ZXJTY2FsZSwgY29uc3QgRmxvYXRSZWN0JiBz
b3VyY2VJbWFnZVJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgZmlsdGVyUmVnaW9uLCBjb25zdCBGbG9h
dFJlY3QmIHRhcmdldEJvdW5kaW5nQm94KTsKKyAgICBzdGF0aWMgUmVmUHRyPFNWR0ZpbHRlcj4g
Y3JlYXRlKFNWR0ZpbHRlckVsZW1lbnQmLCBTVkdGaWx0ZXJCdWlsZGVyJiwgY29uc3QgRmxvYXRT
aXplJiBmaWx0ZXJTY2FsZSwgY29uc3QgRmxvYXRSZWN0JiBzb3VyY2VJbWFnZVJlY3QsIGNvbnN0
IEZsb2F0UmVjdCYgZmlsdGVyUmVnaW9uLCBjb25zdCBGbG9hdFJlY3QmIHRhcmdldEJvdW5kaW5n
Qm94LCBGaWx0ZXJFZmZlY3QqIHByZXZpb3VzRWZmZWN0KTsKIAotICAgIEZsb2F0U2l6ZSBzY2Fs
ZWRCeUZpbHRlclJlc29sdXRpb24oRmxvYXRTaXplKSBjb25zdCBmaW5hbDsKKyAgICBGbG9hdFNp
emUgc2NhbGVkQnlGaWx0ZXJTY2FsZShGbG9hdFNpemUpIGNvbnN0IGZpbmFsOworICAgIHZvaWQg
YXBwbHkoY29uc3QgRmlsdGVyJikgb3ZlcnJpZGU7CisgICAgdm9pZCBhcHBseUZpbHRlcigpIG92
ZXJyaWRlOwogCi0gICAgRmxvYXRSZWN0IHNvdXJjZUltYWdlUmVjdCgpIGNvbnN0IGZpbmFsIHsg
cmV0dXJuIG1fYWJzb2x1dGVTb3VyY2VEcmF3aW5nUmVnaW9uOyB9CiAgICAgRmxvYXRSZWN0IHRh
cmdldEJvdW5kaW5nQm94KCkgY29uc3QgeyByZXR1cm4gbV90YXJnZXRCb3VuZGluZ0JveDsgfQog
Ci0gICAgYm9vbCBpc1NWR0ZpbHRlcigpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIHRydWU7IH0KKyAg
ICBSZWZQdHI8RmlsdGVyRWZmZWN0PiBsYXN0RWZmZWN0KCkgeyByZXR1cm4gbV9sYXN0RWZmZWN0
OyB9CisgICAgdm9pZCBzZXRMYXN0RWZmZWN0KFJlZlB0cjxGaWx0ZXJFZmZlY3Q+JiYgbGFzdEVm
ZmVjdCkgeyBtX2xhc3RFZmZlY3QgPSBXVEZNb3ZlKGxhc3RFZmZlY3QpOyB9CiAKIHByaXZhdGU6
Ci0gICAgU1ZHRmlsdGVyKGNvbnN0IEFmZmluZVRyYW5zZm9ybSYgYWJzb2x1dGVUcmFuc2Zvcm0s
IGNvbnN0IEZsb2F0UmVjdCYgYWJzb2x1dGVTb3VyY2VEcmF3aW5nUmVnaW9uLCBjb25zdCBGbG9h
dFJlY3QmIHRhcmdldEJvdW5kaW5nQm94LCBjb25zdCBGbG9hdFJlY3QmIGZpbHRlclJlZ2lvbiwg
Ym9vbCBlZmZlY3RCQm94TW9kZSk7CisgICAgU1ZHRmlsdGVyKGNvbnN0IEZsb2F0U2l6ZSYgZmls
dGVyU2NhbGUsIGNvbnN0IEZsb2F0UmVjdCYgc291cmNlSW1hZ2VSZWN0LCBjb25zdCBGbG9hdFJl
Y3QmIHRhcmdldEJvdW5kaW5nQm94LCBjb25zdCBGbG9hdFJlY3QmIGZpbHRlclJlZ2lvbiwgYm9v
bCBlZmZlY3RCQm94TW9kZSk7CisKKyAgICBJbnRPdXRzZXRzIG91dHNldHMoKSBjb25zdCBvdmVy
cmlkZTsKKyAgICB2b2lkIGNsZWFyUmVzdWx0KCkgb3ZlcnJpZGU7CiAKLSAgICBGbG9hdFJlY3Qg
bV9hYnNvbHV0ZVNvdXJjZURyYXdpbmdSZWdpb247CiAgICAgRmxvYXRSZWN0IG1fdGFyZ2V0Qm91
bmRpbmdCb3g7Ci0gICAgRmxvYXRSZWN0IG1fYWJzb2x1dGVGaWx0ZXJSZWdpb247Ci0gICAgRmxv
YXRSZWN0IG1fZmlsdGVyUmVnaW9uOwogICAgIGJvb2wgbV9lZmZlY3RCQm94TW9kZTsKKworICAg
IFJlZlB0cjxGaWx0ZXJFZmZlY3Q+IG1fbGFzdEVmZmVjdDsKIH07CiAKIH0gLy8gbmFtZXNwYWNl
IFdlYkNvcmUKIAogU1BFQ0lBTElaRV9UWVBFX1RSQUlUU19CRUdJTihXZWJDb3JlOjpTVkdGaWx0
ZXIpCiAgICAgc3RhdGljIGJvb2wgaXNUeXBlKGNvbnN0IFdlYkNvcmU6OkZpbHRlciYgZmlsdGVy
KSB7IHJldHVybiBmaWx0ZXIuaXNTVkdGaWx0ZXIoKTsgfQorICAgIHN0YXRpYyBib29sIGlzVHlw
ZShjb25zdCBXZWJDb3JlOjpGaWx0ZXJGdW5jdGlvbiYgZnVuY3Rpb24pIHsgcmV0dXJuIGZ1bmN0
aW9uLmlzU1ZHRmlsdGVyKCk7IH0KIFNQRUNJQUxJWkVfVFlQRV9UUkFJVFNfRU5EKCkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9ncmFwaGljcy9maWx0ZXJzL1NWR0ZpbHRlckJ1aWxk
ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvc3ZnL2dyYXBoaWNzL2ZpbHRlcnMvU1ZHRmlsdGVyQnVp
bGRlci5jcHAKaW5kZXggOTZmM2E4MDUwNDI5NTU1ODEwMzRkOThhNGZkYWM0ZWFmMzA4N2I5NC4u
YTg2YzBhOWNjOTljY2NjMzU4NTNkM2NkMjQ5MDI3ODQ2ZmJhYTQ0OSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvc3ZnL2dyYXBoaWNzL2ZpbHRlcnMvU1ZHRmlsdGVyQnVpbGRlci5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvc3ZnL2dyYXBoaWNzL2ZpbHRlcnMvU1ZHRmlsdGVyQnVpbGRlci5j
cHAKQEAgLTIwLDIwICsyMCw3NSBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIlNW
R0ZpbHRlckJ1aWxkZXIuaCIKIAotI2luY2x1ZGUgIkZpbHRlckVmZmVjdC5oIgorI2luY2x1ZGUg
IkVsZW1lbnRJdGVyYXRvci5oIgorI2luY2x1ZGUgIkltYWdlQnVmZmVyLmgiCisjaW5jbHVkZSAi
U1ZHRmlsdGVyRWxlbWVudC5oIgorI2luY2x1ZGUgIlNWR0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJk
QXR0cmlidXRlcy5oIgogI2luY2x1ZGUgIlNvdXJjZUFscGhhLmgiCiAjaW5jbHVkZSAiU291cmNl
R3JhcGhpYy5oIgogI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0NvbmNhdGVuYXRlTnVtYmVycy5o
PgogCisjaWYgRU5BQkxFKERFU1RJTkFUSU9OX0NPTE9SX1NQQUNFX0xJTkVBUl9TUkdCKQorI2lu
Y2x1ZGUgIkNTU0NvbXB1dGVkU3R5bGVEZWNsYXJhdGlvbi5oIgorI2luY2x1ZGUgIkNTU1ByaW1p
dGl2ZVZhbHVlTWFwcGluZ3MuaCIKKyNlbmRpZgorCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLVNW
R0ZpbHRlckJ1aWxkZXI6OlNWR0ZpbHRlckJ1aWxkZXIoUmVmUHRyPEZpbHRlckVmZmVjdD4gc291
cmNlR3JhcGhpYykKK3ZvaWQgU1ZHRmlsdGVyQnVpbGRlcjo6c2V0dXBCdWlsdGluRWZmZWN0cyhS
ZWY8RmlsdGVyRWZmZWN0PiBzb3VyY2VHcmFwaGljKQogewotICAgIG1fYnVpbHRpbkVmZmVjdHMu
YWRkKFNvdXJjZUdyYXBoaWM6OmVmZmVjdE5hbWUoKSwgc291cmNlR3JhcGhpYyk7Ci0gICAgbV9i
dWlsdGluRWZmZWN0cy5hZGQoU291cmNlQWxwaGE6OmVmZmVjdE5hbWUoKSwgU291cmNlQWxwaGE6
OmNyZWF0ZSgqc291cmNlR3JhcGhpYykpOworICAgIG1fYnVpbHRpbkVmZmVjdHMuYWRkKFNvdXJj
ZUdyYXBoaWM6OmVmZmVjdE5hbWUoKSwgc291cmNlR3JhcGhpYy5wdHIoKSk7CisgICAgbV9idWls
dGluRWZmZWN0cy5hZGQoU291cmNlQWxwaGE6OmVmZmVjdE5hbWUoKSwgU291cmNlQWxwaGE6OmNy
ZWF0ZShzb3VyY2VHcmFwaGljKSk7CiAgICAgYWRkQnVpbHRpbkVmZmVjdHMoKTsKIH0KIAorI2lm
IEVOQUJMRShERVNUSU5BVElPTl9DT0xPUl9TUEFDRV9MSU5FQVJfU1JHQikKK3N0YXRpYyBDb2xv
ckludGVycG9sYXRpb24gY29sb3JJbnRlcnBvbGF0aW9uRm9yRWxlbWVudChTVkdFbGVtZW50JiBl
bGVtZW50KQoreworICAgIGlmIChhdXRvIHJlbmRlcmVyID0gZWxlbWVudC5yZW5kZXJlcigpKQor
ICAgICAgICByZXR1cm4gcmVuZGVyZXItPnN0eWxlKCkuc3ZnU3R5bGUoKS5jb2xvckludGVycG9s
YXRpb25GaWx0ZXJzKCk7CisKKyAgICAvLyBUcnkgdG8gZGV0ZXJtaW5lIHRoZSBwcm9wZXJ0eSB2
YWx1ZSBmcm9tIHRoZSBjb21wdXRlZCBzdHlsZS4KKyAgICBpZiAoYXV0byB2YWx1ZSA9IENvbXB1
dGVkU3R5bGVFeHRyYWN0b3IoJmVsZW1lbnQpLnByb3BlcnR5VmFsdWUoQ1NTUHJvcGVydHlDb2xv
ckludGVycG9sYXRpb25GaWx0ZXJzKSkgeworICAgICAgICBpZiAoaXM8Q1NTUHJpbWl0aXZlVmFs
dWU+KHZhbHVlKSkKKyAgICAgICAgICAgIHJldHVybiBkb3duY2FzdDxDU1NQcmltaXRpdmVWYWx1
ZT4oKnZhbHVlKTsKKyAgICB9CisKKyAgICByZXR1cm4gQ29sb3JJbnRlcnBvbGF0aW9uOjpBdXRv
OworfQorI2VuZGlmCisKK1JlZlB0cjxGaWx0ZXJFZmZlY3Q+IFNWR0ZpbHRlckJ1aWxkZXI6OmJ1
aWxkRmlsdGVyRWZmZWN0cyhTVkdGaWx0ZXJFbGVtZW50JiBmaWx0ZXJFbGVtZW50KQoreworICAg
IHN0YXRpYyBjb25zdCB1bnNpZ25lZCBtYXhDb3VudENoaWxkTm9kZXMgPSAyMDA7CisgICAgaWYg
KGZpbHRlckVsZW1lbnQuY291bnRDaGlsZE5vZGVzKCkgPiBtYXhDb3VudENoaWxkTm9kZXMpCisg
ICAgICAgIHJldHVybiBudWxscHRyOworCisgICAgUmVmUHRyPEZpbHRlckVmZmVjdD4gZWZmZWN0
OworCisgICAgZm9yIChhdXRvJiBlZmZlY3RFbGVtZW50IDogY2hpbGRyZW5PZlR5cGU8U1ZHRmls
dGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVzPihmaWx0ZXJFbGVtZW50KSkgeworICAgICAg
ICBlZmZlY3QgPSBlZmZlY3RFbGVtZW50LmJ1aWxkKCp0aGlzKTsKKyAgICAgICAgaWYgKCFlZmZl
Y3QpIHsKKyAgICAgICAgICAgIGNsZWFyRWZmZWN0cygpOworICAgICAgICAgICAgcmV0dXJuIG51
bGxwdHI7CisgICAgICAgIH0KKworICAgICAgICBlZmZlY3RFbGVtZW50LnNldFN0YW5kYXJkQXR0
cmlidXRlcyhlZmZlY3QuZ2V0KCkpOworICAgICAgICBlZmZlY3QtPnNldEVmZmVjdEJvdW5kYXJp
ZXMoU1ZHTGVuZ3RoQ29udGV4dDo6cmVzb2x2ZVJlY3RhbmdsZTxTVkdGaWx0ZXJQcmltaXRpdmVT
dGFuZGFyZEF0dHJpYnV0ZXM+KCZlZmZlY3RFbGVtZW50LCBtX3ByaW1pdGl2ZVVuaXRzLCBtX3Rh
cmdldEJvdW5kaW5nQm94KSk7CisKKyNpZiBFTkFCTEUoREVTVElOQVRJT05fQ09MT1JfU1BBQ0Vf
TElORUFSX1NSR0IpCisgICAgICAgIGlmIChjb2xvckludGVycG9sYXRpb25Gb3JFbGVtZW50KGVm
ZmVjdEVsZW1lbnQpID09IENvbG9ySW50ZXJwb2xhdGlvbjo6TGluZWFyUkdCKQorICAgICAgICAg
ICAgZWZmZWN0LT5zZXRPcGVyYXRpbmdDb2xvclNwYWNlKERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6
TGluZWFyU1JHQigpKTsKKyNlbmRpZgorICAgICAgICBpZiAoYXV0byByZW5kZXJlciA9IGVmZmVj
dEVsZW1lbnQucmVuZGVyZXIoKSkKKyAgICAgICAgICAgIGFwcGVuZEVmZmVjdFRvRWZmZWN0UmVm
ZXJlbmNlcyhlZmZlY3QuY29weVJlZigpLCByZW5kZXJlcik7CisKKyAgICAgICAgYWRkKGVmZmVj
dEVsZW1lbnQucmVzdWx0KCksIGVmZmVjdCk7CisgICAgfQorCisgICAgcmV0dXJuIGVmZmVjdDsK
K30KKwogdm9pZCBTVkdGaWx0ZXJCdWlsZGVyOjphZGQoY29uc3QgQXRvbVN0cmluZyYgaWQsIFJl
ZlB0cjxGaWx0ZXJFZmZlY3Q+IGVmZmVjdCkKIHsKICAgICBpZiAoaWQuaXNFbXB0eSgpKSB7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvZ3JhcGhpY3MvZmlsdGVycy9TVkdGaWx0ZXJC
dWlsZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9zdmcvZ3JhcGhpY3MvZmlsdGVycy9TVkdGaWx0ZXJC
dWlsZGVyLmgKaW5kZXggYzc3YWUwOGJhYzY1YzNjMmNmYzg5NzRmYTMzZTc2NDYwY2U5N2ZhNy4u
YjdiODI0YjQ4NDMyMzI1NzdkMjEzMGQ4NDZhYWM4YjdmMDlkZTk5NyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvc3ZnL2dyYXBoaWNzL2ZpbHRlcnMvU1ZHRmlsdGVyQnVpbGRlci5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3N2Zy9ncmFwaGljcy9maWx0ZXJzL1NWR0ZpbHRlckJ1aWxkZXIuaApA
QCAtMzcsNyArMzcsNyBAQCBjbGFzcyBTVkdGaWx0ZXJCdWlsZGVyIHsKIHB1YmxpYzoKICAgICB0
eXBlZGVmIEhhc2hTZXQ8RmlsdGVyRWZmZWN0Kj4gRmlsdGVyRWZmZWN0U2V0OwogCi0gICAgU1ZH
RmlsdGVyQnVpbGRlcihSZWZQdHI8RmlsdGVyRWZmZWN0PiBzb3VyY2VHcmFwaGljKTsKKyAgICBT
VkdGaWx0ZXJCdWlsZGVyKCkgPSBkZWZhdWx0OwogCiAgICAgdm9pZCBzZXRUYXJnZXRCb3VuZGlu
Z0JveChjb25zdCBGbG9hdFJlY3QmIHIpIHsgbV90YXJnZXRCb3VuZGluZ0JveCA9IHI7IH0KICAg
ICBGbG9hdFJlY3QgdGFyZ2V0Qm91bmRpbmdCb3goKSBjb25zdCB7IHJldHVybiBtX3RhcmdldEJv
dW5kaW5nQm94OyB9CkBAIC02NSw2ICs2NSw5IEBAIHB1YmxpYzoKICAgICB2b2lkIGNsZWFyRWZm
ZWN0cygpOwogICAgIHZvaWQgY2xlYXJSZXN1bHRzUmVjdXJzaXZlKEZpbHRlckVmZmVjdCopOwog
CisgICAgdm9pZCBzZXR1cEJ1aWx0aW5FZmZlY3RzKFJlZjxGaWx0ZXJFZmZlY3Q+IHNvdXJjZUdy
YXBoaWMpOworICAgIFJlZlB0cjxGaWx0ZXJFZmZlY3Q+IGJ1aWxkRmlsdGVyRWZmZWN0cyhTVkdG
aWx0ZXJFbGVtZW50Jik7CisKIHByaXZhdGU6CiAgICAgaW5saW5lIHZvaWQgYWRkQnVpbHRpbkVm
ZmVjdHMoKQogICAgIHsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91
dFRlc3RzL0NoYW5nZUxvZwppbmRleCA2NmMzYWEyMTQzNjg2OGE1NDBmYzYyOWNlMjFjZTI2Mjhh
NzkyY2ZlLi5hNDYwZjUwMWQ1NzI5MGZlMTQwYTM1MjUzZWEyZDEyM2FiNmIyYjRkIDEwMDY0NAot
LS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBA
IC0xLDMgKzEsMjMgQEAKKzIwMjEtMTAtMzEgIFNhaWQgQWJvdS1IYWxsYXdhICA8c2FpZEBhcHBs
ZS5jb20+CisKKyAgICAgICAgW0dQVSBQcm9jZXNzXSBSZW1vdmUgdGhlIHJlZmVyZW5jZSB0byBG
aWx0ZXIgZnJvbSBGaWx0ZXJFZmZlY3QKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTIzMjU1MQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgIEFkZCB0d28gZmFpbHVyZXMgcmVsYXRlZCB0byB0aGUgY29sb3Igc3Bh
Y2UgdG8gVGVzdEV4cGVjdGF0aW9ucy4KKworICAgICAgICAqIFRlc3RFeHBlY3RhdGlvbnM6CisK
KzIwMjEtMTAtMzEgIFNhaWQgQWJvdS1IYWxsYXdhICA8c2FpZEBhcHBsZS5jb20+CisKKyAgICAg
ICAgW0dQVSBQcm9jZXNzXSBNYWtlIENTU0ZpbHRlciBob2xkcyBhIGxpc3Qgb2YgRmlsdGVyRnVu
Y3Rpb25zCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0y
MzI0NjkKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAq
IFRlc3RFeHBlY3RhdGlvbnM6CisKIDIwMjEtMTAtMzAgIFdlbnNvbiBIc2llaCAgPHdlbnNvbl9o
c2llaEBhcHBsZS5jb20+CiAKICAgICAgICAgTGF5ZXIgdHJlZSBzaG91bGQgbm90IGJlIHN0dWNr
IGluIGZyb3plbiBzdGF0ZSBhZnRlciBleHBsaWNpdGx5IHN0b3BwaW5nIGEgcGFnZSBsb2FkCmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9UZXN0RXhwZWN0YXRpb25zIGIvTGF5b3V0VGVzdHMvVGVz
dEV4cGVjdGF0aW9ucwppbmRleCBlOTFmNDFlODgyZDU2ZWMxOWM2ZTVmMjIyZTlmN2Y1M2U0NmJi
ODFlLi5kMjNmODc5MmMzNjExYWVkNTAzOGI0ZjZmYjRhNjBkMWRiZTcxNWZkIDEwMDY0NAotLS0g
YS9MYXlvdXRUZXN0cy9UZXN0RXhwZWN0YXRpb25zCisrKyBiL0xheW91dFRlc3RzL1Rlc3RFeHBl
Y3RhdGlvbnMKQEAgLTUxODYsMyArNTE4NiwxNSBAQCBzZWN1cml0eS9jb250ZW50U2VjdXJpdHlQ
b2xpY3kvcGx1Z2lucy10eXBlcy1ibG9ja3MtcXVpY2t0aW1lLXBsdWdpbi1yZXBsYWNlbWVudAog
c2VjdXJpdHkvY29udGVudFNlY3VyaXR5UG9saWN5L3BsdWdpbnMtdHlwZXMtYmxvY2tzLXlvdXR1
YmUtcGx1Z2luLXJlcGxhY2VtZW50LXdpdGhvdXQtbWltZS10eXBlLmh0bWwgWyBTa2lwIF0KIHNl
Y3VyaXR5L2NvbnRlbnRTZWN1cml0eVBvbGljeS9wbHVnaW5zLXR5cGVzLWJsb2Nrcy15b3V0dWJl
LXBsdWdpbi1yZXBsYWNlbWVudC5odG1sIFsgU2tpcCBdCiB1c2Vyc2NyaXB0cy91c2VyLXNjcmlw
dC1wbHVnaW4tZG9jdW1lbnQuaHRtbCBbIFNraXAgXQorCisjIFRoZXNlIGZhaWx1cmVzIHNob3Vs
ZCBiZSBmaXhlZCBvbmNlIHdlYmtpdC5vcmcvYi8yMzEyNTMgaXMgcmVzb2x2ZWQKK3dlYmtpdC5v
cmcvYi8yMzEyNTMgY29tcG9zaXRpbmcvZmlsdGVycy9zdy1uZXN0ZWQtc2hhZG93LW92ZXJsYXBz
LWh3LW5lc3RlZC1zaGFkb3cuaHRtbCBbIEZhaWx1cmUgXQord2Via2l0Lm9yZy9iLzIzMTI1MyBj
b21wb3NpdGluZy9maWx0ZXJzL3N3LXNoYWRvdy1vdmVybGFwcy1ody1sYXllci5odG1sIFsgRmFp
bHVyZSBdCit3ZWJraXQub3JnL2IvMjMxMjUzIGNvbXBvc2l0aW5nL2ZpbHRlcnMvc3ctc2hhZG93
LW92ZXJsYXBzLWh3LXNoYWRvdy5odG1sIFsgRmFpbHVyZSBdCit3ZWJraXQub3JnL2IvMjMxMjUz
IGNzczMvZmlsdGVycy9maWx0ZXJzLW9uLXN2Zy1yb290Lmh0bWwgWyBJbWFnZU9ubHlGYWlsdXJl
IF0KK3dlYmtpdC5vcmcvYi8yMzEyNTMgY3NzMy9maWx0ZXJzL3N2Zy1ibHVyLWZpbHRlci1jbGlw
cGVkLmh0bWwgWyBJbWFnZU9ubHlGYWlsdXJlIF0KK3dlYmtpdC5vcmcvYi8yMzEyNTMgZmFzdC9m
aWx0ZXItaW1hZ2UvZmlsdGVyLWltYWdlLWJsdXIuaHRtbCBbIEltYWdlT25seUZhaWx1cmUgXQor
d2Via2l0Lm9yZy9iLzIzMTI1MyBpbXBvcnRlZC9tb3ppbGxhL3N2Zy9keW5hbWljLWZpbHRlci1j
b250ZW50cy0wMWEuc3ZnIFsgSW1hZ2VPbmx5RmFpbHVyZSBdCit3ZWJraXQub3JnL2IvMjMxMjUz
IGltcG9ydGVkL21vemlsbGEvc3ZnL2ZpbHRlcnMvZmVDb21wb3NpdGUtMi5zdmcgWyBJbWFnZU9u
bHlGYWlsdXJlIF0KK3dlYmtpdC5vcmcvYi8yMzEyNTMgaW1wb3J0ZWQvbW96aWxsYS9zdmcvZmls
dGVycy9mZVNwZWN1bGFyTGlnaHRpbmctMS5zdmcgWyBJbWFnZU9ubHlGYWlsdXJlIF0KK3dlYmtp
dC5vcmcvYi8yMzEyNTMgc3ZnL2ZpbHRlcnMvZmVMaWdodGluZy1jbGlwcGVkLnN2ZyBbIEltYWdl
T25seUZhaWx1cmUgXQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>442955</attachid>
            <date>2021-10-31 22:12:24 -0700</date>
            <delta_ts>2021-11-10 23:07:22 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-232551-20211031221223.patch</filename>
            <type>text/plain</type>
            <size>255923</size>
            <attacher name="Said Abou-Hallawa">sabouhallawa</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg1MDkwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNThhYWY0ZTJkZGNjNTQy
YmJmNmYyYTdhZDhjZGU4YjZhODAyYWE3Mi4uMDZiYjE2NTY1ZTY0NDRiNmIxYzMxZWViMmIwZDM5
NDZlNjA3NDdiZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDU4OCBAQAorMjAyMS0xMC0zMSAgU2Fp
ZCBBYm91LUhhbGxhd2EgIDxzYWlkQGFwcGxlLmNvbT4KKworICAgICAgICBbR1BVIFByb2Nlc3Nd
IFJlbW92ZSB0aGUgcmVmZXJlbmNlIHRvIEZpbHRlciBmcm9tIEZpbHRlckVmZmVjdAorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjMyNTUxCisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgSW5zdGVhZCBvZiBoYXZp
bmcgYSByZWZlcmVuY2UgdG8gdGhlIEZpbHRlciBpbiB0aGUgRmlsdGVyRWZmZWN0LCB3ZSBhcmUK
KyAgICAgICAgZ29pbmcgdG8gcGFzcyBhIHJlZmVyZW5jZSB0byB0aGUgRmlsdGVyIHRvIHRoZSBG
aWx0ZXJFZmZlY3QgZnVuY3Rpb25zCisgICAgICAgIG9ubHkgd2hlbiBuZWVkZWQuCisKKyAgICAg
ICAgKiBjc3MvQ1NTRmlsdGVySW1hZ2VWYWx1ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDU1NG
aWx0ZXJJbWFnZVZhbHVlOjppbWFnZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY29y
ZWltYWdlL0ZpbHRlckVmZmVjdFJlbmRlcmVyQ29yZUltYWdlLmg6CisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvY29yZWltYWdlL0ZpbHRlckVmZmVjdFJlbmRlcmVyQ29yZUltYWdlLm1tOgor
ICAgICAgICAoV2ViQ29yZTo6RmlsdGVyRWZmZWN0UmVuZGVyZXJDb3JlSW1hZ2U6OnN1cHBvcnRz
Q29yZUltYWdlUmVuZGVyaW5nKToKKyAgICAgICAgKFdlYkNvcmU6OkZpbHRlckVmZmVjdFJlbmRl
cmVyQ29yZUltYWdlOjphcHBseUVmZmVjdHMpOgorICAgICAgICAoV2ViQ29yZTo6RmlsdGVyRWZm
ZWN0UmVuZGVyZXJDb3JlSW1hZ2U6OmNvbm5lY3RDSUZpbHRlcnMpOgorICAgICAgICAqIHBsYXRm
b3JtL2dyYXBoaWNzL2NwdS9hcm0vZmlsdGVycy9GRUJsZW5kTkVPTi5oOgorICAgICAgICAoV2Vi
Q29yZTo6RkVCbGVuZDo6cGxhdGZvcm1BcHBseVNvZnR3YXJlKToKKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy9maWx0ZXJzL0ZFQmxlbmQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RkVCbGVu
ZDo6RkVCbGVuZCk6CisgICAgICAgIChXZWJDb3JlOjpGRUJsZW5kOjpjcmVhdGUpOgorICAgICAg
ICAoV2ViQ29yZTo6RkVCbGVuZDo6cGxhdGZvcm1BcHBseVNvZnR3YXJlKToKKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFQmxlbmQuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy9maWx0ZXJzL0ZFQ29sb3JNYXRyaXguY3BwOgorICAgICAgICAoV2ViQ29yZTo6RkVD
b2xvck1hdHJpeDo6RkVDb2xvck1hdHJpeCk6CisgICAgICAgIChXZWJDb3JlOjpGRUNvbG9yTWF0
cml4OjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6RkVDb2xvck1hdHJpeDo6cGxhdGZvcm1B
cHBseVNvZnR3YXJlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFQ29s
b3JNYXRyaXguaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFQ29tcG9u
ZW50VHJhbnNmZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RkVDb21wb25lbnRUcmFuc2Zlcjo6
RkVDb21wb25lbnRUcmFuc2Zlcik6CisgICAgICAgIChXZWJDb3JlOjpGRUNvbXBvbmVudFRyYW5z
ZmVyOjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6RkVDb21wb25lbnRUcmFuc2Zlcjo6cGxh
dGZvcm1BcHBseVNvZnR3YXJlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJz
L0ZFQ29tcG9uZW50VHJhbnNmZXIuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9maWx0
ZXJzL0ZFQ29tcG9zaXRlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZFQ29tcG9zaXRlOjpGRUNv
bXBvc2l0ZSk6CisgICAgICAgIChXZWJDb3JlOjpGRUNvbXBvc2l0ZTo6Y3JlYXRlKToKKyAgICAg
ICAgKFdlYkNvcmU6OkZFQ29tcG9zaXRlOjpkZXRlcm1pbmVBYnNvbHV0ZVBhaW50UmVjdCk6Cisg
ICAgICAgIChXZWJDb3JlOjpGRUNvbXBvc2l0ZTo6cGxhdGZvcm1BcHBseVNvZnR3YXJlKToKKyAg
ICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFQ29tcG9zaXRlLmg6CisgICAgICAg
ICogcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRUNvbnZvbHZlTWF0cml4LmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkZFQ29udm9sdmVNYXRyaXg6OkZFQ29udm9sdmVNYXRyaXgpOgorICAgICAg
ICAoV2ViQ29yZTo6RkVDb252b2x2ZU1hdHJpeDo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6
OkZFQ29udm9sdmVNYXRyaXg6OnBsYXRmb3JtQXBwbHlTb2Z0d2FyZSk6CisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRUNvbnZvbHZlTWF0cml4Lmg6CisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRURpZmZ1c2VMaWdodGluZy5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpGRURpZmZ1c2VMaWdodGluZzo6RkVEaWZmdXNlTGlnaHRpbmcpOgorICAgICAgICAo
V2ViQ29yZTo6RkVEaWZmdXNlTGlnaHRpbmc6OmNyZWF0ZSk6CisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3MvZmlsdGVycy9GRURpZmZ1c2VMaWdodGluZy5oOgorICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL2ZpbHRlcnMvRkVEaXNwbGFjZW1lbnRNYXAuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6RkVEaXNwbGFjZW1lbnRNYXA6OkZFRGlzcGxhY2VtZW50TWFwKToKKyAgICAgICAgKFdlYkNv
cmU6OkZFRGlzcGxhY2VtZW50TWFwOjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6RkVEaXNw
bGFjZW1lbnRNYXA6OnBsYXRmb3JtQXBwbHlTb2Z0d2FyZSk6CisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3MvZmlsdGVycy9GRURpc3BsYWNlbWVudE1hcC5oOgorICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL2ZpbHRlcnMvRkVEcm9wU2hhZG93LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZF
RHJvcFNoYWRvdzo6RkVEcm9wU2hhZG93KToKKyAgICAgICAgKFdlYkNvcmU6OkZFRHJvcFNoYWRv
dzo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkZFRHJvcFNoYWRvdzo6ZGV0ZXJtaW5lQWJz
b2x1dGVQYWludFJlY3QpOgorICAgICAgICAoV2ViQ29yZTo6RkVEcm9wU2hhZG93OjpwbGF0Zm9y
bUFwcGx5U29mdHdhcmUpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVE
cm9wU2hhZG93Lmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRUZsb29k
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZFRmxvb2Q6OkZFRmxvb2QpOgorICAgICAgICAoV2Vi
Q29yZTo6RkVGbG9vZDo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkZFRmxvb2Q6OnBsYXRm
b3JtQXBwbHlTb2Z0d2FyZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9G
RUZsb29kLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRUdhdXNzaWFu
Qmx1ci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGRUdhdXNzaWFuQmx1cjo6RkVHYXVzc2lhbkJs
dXIpOgorICAgICAgICAoV2ViQ29yZTo6RkVHYXVzc2lhbkJsdXI6OmNyZWF0ZSk6CisgICAgICAg
IChXZWJDb3JlOjpGRUdhdXNzaWFuQmx1cjo6Y2FsY3VsYXRlS2VybmVsU2l6ZSk6CisgICAgICAg
IChXZWJDb3JlOjpGRUdhdXNzaWFuQmx1cjo6ZGV0ZXJtaW5lQWJzb2x1dGVQYWludFJlY3QpOgor
ICAgICAgICAoV2ViQ29yZTo6RkVHYXVzc2lhbkJsdXI6OnBsYXRmb3JtQXBwbHlTb2Z0d2FyZSk6
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRUdhdXNzaWFuQmx1ci5oOgor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVMaWdodGluZy5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpGRUxpZ2h0aW5nOjpGRUxpZ2h0aW5nKToKKyAgICAgICAgKFdlYkNvcmU6
OkZFTGlnaHRpbmc6OnBsYXRmb3JtQXBwbHlTb2Z0d2FyZSk6CisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3MvZmlsdGVycy9GRUxpZ2h0aW5nLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3MvZmlsdGVycy9GRU1lcmdlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZFTWVyZ2U6OkZFTWVy
Z2UpOgorICAgICAgICAoV2ViQ29yZTo6RkVNZXJnZTo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNv
cmU6OkZFTWVyZ2U6OnBsYXRmb3JtQXBwbHlTb2Z0d2FyZSk6CisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3MvZmlsdGVycy9GRU1lcmdlLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
ZmlsdGVycy9GRU1vcnBob2xvZ3kuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RkVNb3JwaG9sb2d5
OjpGRU1vcnBob2xvZ3kpOgorICAgICAgICAoV2ViQ29yZTo6RkVNb3JwaG9sb2d5OjpjcmVhdGUp
OgorICAgICAgICAoV2ViQ29yZTo6RkVNb3JwaG9sb2d5OjpkZXRlcm1pbmVBYnNvbHV0ZVBhaW50
UmVjdCk6CisgICAgICAgIChXZWJDb3JlOjpGRU1vcnBob2xvZ3k6OnBsYXRmb3JtQXBwbHlTb2Z0
d2FyZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRU1vcnBob2xvZ3ku
aDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFT2Zmc2V0LmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkZFT2Zmc2V0OjpGRU9mZnNldCk6CisgICAgICAgIChXZWJDb3JlOjpG
RU9mZnNldDo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkZFT2Zmc2V0OjpkZXRlcm1pbmVB
YnNvbHV0ZVBhaW50UmVjdCk6CisgICAgICAgIChXZWJDb3JlOjpGRU9mZnNldDo6cGxhdGZvcm1B
cHBseVNvZnR3YXJlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFT2Zm
c2V0Lmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRVNwZWN1bGFyTGln
aHRpbmcuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RkVTcGVjdWxhckxpZ2h0aW5nOjpGRVNwZWN1
bGFyTGlnaHRpbmcpOgorICAgICAgICAoV2ViQ29yZTo6RkVTcGVjdWxhckxpZ2h0aW5nOjpjcmVh
dGUpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVTcGVjdWxhckxpZ2h0
aW5nLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRVRpbGUuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6RkVUaWxlOjpGRVRpbGUpOgorICAgICAgICAoV2ViQ29yZTo6RkVU
aWxlOjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6RkVUaWxlOjpwbGF0Zm9ybUFwcGx5U29m
dHdhcmUpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVUaWxlLmg6Cisg
ICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRVR1cmJ1bGVuY2UuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6RkVUdXJidWxlbmNlOjpGRVR1cmJ1bGVuY2UpOgorICAgICAgICAoV2Vi
Q29yZTo6RkVUdXJidWxlbmNlOjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6RkVUdXJidWxl
bmNlOjpmaWxsUmVnaW9uIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkZFVHVyYnVsZW5jZTo6
ZmlsbFJlZ2lvbldvcmtlcik6CisgICAgICAgIChXZWJDb3JlOjpGRVR1cmJ1bGVuY2U6OnBsYXRm
b3JtQXBwbHlTb2Z0d2FyZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9G
RVR1cmJ1bGVuY2UuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZpbHRl
ci5oOgorICAgICAgICAoV2ViQ29yZTo6RmlsdGVyOjphcHBseUZpbHRlcik6CisgICAgICAgIChX
ZWJDb3JlOjpGaWx0ZXI6OnNvdXJjZUltYWdlIGNvbnN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy9maWx0ZXJzL0ZpbHRlckVmZmVjdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGaWx0
ZXJFZmZlY3Q6OkZpbHRlckVmZmVjdCk6CisgICAgICAgIChXZWJDb3JlOjpGaWx0ZXJFZmZlY3Q6
OmRldGVybWluZUFic29sdXRlUGFpbnRSZWN0KToKKyAgICAgICAgKFdlYkNvcmU6OkZpbHRlckVm
ZmVjdDo6ZGV0ZXJtaW5lRmlsdGVyUHJpbWl0aXZlU3VicmVnaW9uKToKKyAgICAgICAgKFdlYkNv
cmU6OkZpbHRlckVmZmVjdDo6YXBwbHkpOgorICAgICAgICAoV2ViQ29yZTo6RmlsdGVyRWZmZWN0
OjppbWFnZUJ1ZmZlclJlc3VsdCk6CisgICAgICAgIChXZWJDb3JlOjpGaWx0ZXJFZmZlY3Q6OnVu
bXVsdGlwbGllZFJlc3VsdCk6CisgICAgICAgIChXZWJDb3JlOjpGaWx0ZXJFZmZlY3Q6OnByZW11
bHRpcGxpZWRSZXN1bHQpOgorICAgICAgICAoV2ViQ29yZTo6RmlsdGVyRWZmZWN0Ojpjb3B5SW1h
Z2VCeXRlcyBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpGaWx0ZXJFZmZlY3Q6OmNvbnZlcnRQ
aXhlbEJ1ZmZlclRvQ29sb3JTcGFjZSk6CisgICAgICAgIChXZWJDb3JlOjpGaWx0ZXJFZmZlY3Q6
OmNvbnZlcnRJbWFnZUJ1ZmZlclRvQ29sb3JTcGFjZSk6CisgICAgICAgIChXZWJDb3JlOjpGaWx0
ZXJFZmZlY3Q6OmNvcHlVbm11bHRpcGxpZWRSZXN1bHQpOgorICAgICAgICAoV2ViQ29yZTo6Rmls
dGVyRWZmZWN0Ojpjb3B5UHJlbXVsdGlwbGllZFJlc3VsdCk6CisgICAgICAgIChXZWJDb3JlOjpG
aWx0ZXJFZmZlY3Q6OmNyZWF0ZUltYWdlQnVmZmVyUmVzdWx0KToKKyAgICAgICAgKFdlYkNvcmU6
OkZpbHRlckVmZmVjdDo6Y3JlYXRlVW5tdWx0aXBsaWVkSW1hZ2VSZXN1bHQpOgorICAgICAgICAo
V2ViQ29yZTo6RmlsdGVyRWZmZWN0OjpjcmVhdGVQcmVtdWx0aXBsaWVkSW1hZ2VSZXN1bHQpOgor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRmlsdGVyRWZmZWN0Lmg6CisgICAg
ICAgIChXZWJDb3JlOjpGaWx0ZXJFZmZlY3Q6OmZpbHRlcik6IERlbGV0ZWQuCisgICAgICAgIChX
ZWJDb3JlOjpGaWx0ZXJFZmZlY3Q6OmZpbHRlciBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GaWx0ZXJFZmZlY3RSZW5kZXJlci5oOgorICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRmlsdGVyRnVuY3Rpb24uY3BwOiBBZGRlZC4K
KyAgICAgICAgKFdlYkNvcmU6OkZpbHRlckZ1bmN0aW9uOjpGaWx0ZXJGdW5jdGlvbik6CisgICAg
ICAgIChXZWJDb3JlOjpmaWx0ZXJOYW1lcyk6CisgICAgICAgIChXZWJDb3JlOjpGaWx0ZXJGdW5j
dGlvbjo6ZmlsdGVyTmFtZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9G
aWx0ZXJGdW5jdGlvbi5oOgorICAgICAgICAoV2ViQ29yZTo6RmlsdGVyRnVuY3Rpb246OmFwcGx5
KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL1NvdXJjZUFscGhhLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OlNvdXJjZUFscGhhOjpTb3VyY2VBbHBoYSk6CisgICAgICAgIChX
ZWJDb3JlOjpTb3VyY2VBbHBoYTo6ZGV0ZXJtaW5lQWJzb2x1dGVQYWludFJlY3QpOgorICAgICAg
ICAoV2ViQ29yZTo6U291cmNlQWxwaGE6OnBsYXRmb3JtQXBwbHlTb2Z0d2FyZSk6CisgICAgICAg
IChXZWJDb3JlOjpTb3VyY2VBbHBoYTo6ZWZmZWN0TmFtZSk6IERlbGV0ZWQuCisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9Tb3VyY2VBbHBoYS5oOgorICAgICAgICAoV2ViQ29y
ZTo6U291cmNlQWxwaGE6OmVmZmVjdE5hbWUpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L2ZpbHRlcnMvU291cmNlR3JhcGhpYy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTb3VyY2VHcmFw
aGljOjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6U291cmNlR3JhcGhpYzo6U291cmNlR3Jh
cGhpYyk6CisgICAgICAgIChXZWJDb3JlOjpTb3VyY2VHcmFwaGljOjpkZXRlcm1pbmVBYnNvbHV0
ZVBhaW50UmVjdCk6CisgICAgICAgIChXZWJDb3JlOjpTb3VyY2VHcmFwaGljOjpwbGF0Zm9ybUFw
cGx5U29mdHdhcmUpOgorICAgICAgICAoV2ViQ29yZTo6U291cmNlR3JhcGhpYzo6ZWZmZWN0TmFt
ZSk6IERlbGV0ZWQuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9Tb3VyY2VH
cmFwaGljLmg6CisgICAgICAgIChXZWJDb3JlOjpTb3VyY2VHcmFwaGljOjplZmZlY3ROYW1lKToK
KyAgICAgICAgKFdlYkNvcmU6OlNvdXJjZUdyYXBoaWM6OlNvdXJjZUdyYXBoaWMpOiBEZWxldGVk
LgorICAgICAgICAoKTogRGVsZXRlZC4KKyAgICAgICAgKGlzVHlwZSk6IERlbGV0ZWQuCisgICAg
ICAgICogcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL1JlYWx0aW1lSW5jb21pbmdBdWRpb1NvdXJj
ZUNvY29hLmNwcDoKKyAgICAgICAgKiByZW5kZXJpbmcvQ1NTRmlsdGVyLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkNTU0ZpbHRlcjo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU0ZpbHRl
cjo6Q1NTRmlsdGVyKToKKyAgICAgICAgKFdlYkNvcmU6Om1fc291cmNlR3JhcGhpYyk6CisgICAg
ICAgIChXZWJDb3JlOjpjcmVhdGVCbHVyRWZmZWN0KToKKyAgICAgICAgKFdlYkNvcmU6OmNyZWF0
ZUJyaWdodG5lc3NFZmZlY3QpOgorICAgICAgICAoV2ViQ29yZTo6Y3JlYXRlQ29udHJhc3RFZmZl
Y3QpOgorICAgICAgICAoV2ViQ29yZTo6Y3JlYXRlRHJvcFNoYWRvd0VmZmVjdCk6CisgICAgICAg
IChXZWJDb3JlOjpjcmVhdGVHcmF5U2NhbGVFZmZlY3QpOgorICAgICAgICAoV2ViQ29yZTo6Y3Jl
YXRlSHVlUm90YXRlRWZmZWN0KToKKyAgICAgICAgKFdlYkNvcmU6OmNyZWF0ZUludmVydEVmZmVj
dCk6CisgICAgICAgIChXZWJDb3JlOjpjcmVhdGVPcGFjaXR5RWZmZWN0KToKKyAgICAgICAgKFdl
YkNvcmU6OmNyZWF0ZVNhdHVyYXRlRWZmZWN0KToKKyAgICAgICAgKFdlYkNvcmU6OmNyZWF0ZVNl
cGlhRWZmZWN0KToKKyAgICAgICAgKFdlYkNvcmU6OmNyZWF0ZVNWR0ZpbHRlcik6CisgICAgICAg
IChXZWJDb3JlOjpzZXR1cExhc3RFZmZlY3RQcm9wZXJ0aWVzKToKKyAgICAgICAgKFdlYkNvcmU6
OkNTU0ZpbHRlcjo6YnVpbGQpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTRmlsdGVyOjppbnB1dENv
bnRleHQpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTRmlsdGVyOjphbGxvY2F0ZUJhY2tpbmdTdG9y
ZUlmTmVlZGVkKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU0ZpbHRlcjo6bGFzdEVmZmVjdCk6Cisg
ICAgICAgIChXZWJDb3JlOjpDU1NGaWx0ZXI6OmRldGVybWluZUZpbHRlclByaW1pdGl2ZVN1YnJl
Z2lvbik6CisgICAgICAgIChXZWJDb3JlOjpDU1NGaWx0ZXI6OmNsZWFySW50ZXJtZWRpYXRlUmVz
dWx0cyk6CisgICAgICAgIChXZWJDb3JlOjpDU1NGaWx0ZXI6OmFwcGx5RmlsdGVyKToKKyAgICAg
ICAgKFdlYkNvcmU6OkNTU0ZpbHRlcjo6b3V0cHV0KToKKyAgICAgICAgKFdlYkNvcmU6OkNTU0Zp
bHRlcjo6c2V0U291cmNlSW1hZ2VSZWN0KToKKyAgICAgICAgKFdlYkNvcmU6OkNTU0ZpbHRlcjo6
b3V0cHV0UmVjdCk6CisgICAgICAgIChXZWJDb3JlOjpDU1NGaWx0ZXI6Om91dHNldHMgY29uc3Qp
OgorICAgICAgICAoV2ViQ29yZTo6Q1NTRmlsdGVyOjpidWlsZFJlZmVyZW5jZUZpbHRlcik6IERl
bGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpDU1NGaWx0ZXI6OmFwcGx5KTogRGVsZXRlZC4KKyAg
ICAgICAgKFdlYkNvcmU6OkNTU0ZpbHRlcjo6b3V0cHV0IGNvbnN0KTogRGVsZXRlZC4KKyAgICAg
ICAgKFdlYkNvcmU6OkNTU0ZpbHRlcjo6c2V0TWF4RWZmZWN0UmVjdHMpOiBEZWxldGVkLgorICAg
ICAgICAoV2ViQ29yZTo6Q1NTRmlsdGVyOjpvdXRwdXRSZWN0IGNvbnN0KTogRGVsZXRlZC4KKyAg
ICAgICAgKiByZW5kZXJpbmcvQ1NTRmlsdGVyLmg6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRl
ckxheWVyRmlsdGVycy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJMYXllckZpbHRlcnM6
OmJlZ2luRmlsdGVyRWZmZWN0KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxheWVyRmlsdGVy
czo6YXBwbHlGaWx0ZXJFZmZlY3QpOgorICAgICAgICAqIHJlbmRlcmluZy9zdmcvUmVuZGVyU1ZH
UmVzb3VyY2VGaWx0ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU1ZHUmVzb3VyY2VG
aWx0ZXI6OmFwcGx5UmVzb3VyY2UpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU1ZHUmVzb3Vy
Y2VGaWx0ZXI6OnBvc3RBcHBseVJlc291cmNlKToKKyAgICAgICAgKiBzdmcvU1ZHRkVCbGVuZEVs
ZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHRkVCbGVuZEVsZW1lbnQ6OmJ1aWxkIGNv
bnN0KToKKyAgICAgICAgKiBzdmcvU1ZHRkVCbGVuZEVsZW1lbnQuaDoKKyAgICAgICAgKiBzdmcv
U1ZHRkVDb2xvck1hdHJpeEVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHRkVDb2xv
ck1hdHJpeEVsZW1lbnQ6OmJ1aWxkIGNvbnN0KToKKyAgICAgICAgKiBzdmcvU1ZHRkVDb2xvck1h
dHJpeEVsZW1lbnQuaDoKKyAgICAgICAgKiBzdmcvU1ZHRkVDb21wb25lbnRUcmFuc2ZlckVsZW1l
bnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHRkVDb21wb25lbnRUcmFuc2ZlckVsZW1lbnQ6
OmJ1aWxkIGNvbnN0KToKKyAgICAgICAgKiBzdmcvU1ZHRkVDb21wb25lbnRUcmFuc2ZlckVsZW1l
bnQuaDoKKyAgICAgICAgKiBzdmcvU1ZHRkVDb21wb3NpdGVFbGVtZW50LmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OlNWR0ZFQ29tcG9zaXRlRWxlbWVudDo6YnVpbGQgY29uc3QpOgorICAgICAgICAq
IHN2Zy9TVkdGRUNvbXBvc2l0ZUVsZW1lbnQuaDoKKyAgICAgICAgKiBzdmcvU1ZHRkVDb252b2x2
ZU1hdHJpeEVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHRkVDb252b2x2ZU1hdHJp
eEVsZW1lbnQ6OmJ1aWxkIGNvbnN0KToKKyAgICAgICAgKiBzdmcvU1ZHRkVDb252b2x2ZU1hdHJp
eEVsZW1lbnQuaDoKKyAgICAgICAgKiBzdmcvU1ZHRkVEaWZmdXNlTGlnaHRpbmdFbGVtZW50LmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR0ZFRGlmZnVzZUxpZ2h0aW5nRWxlbWVudDo6YnVpbGQg
Y29uc3QpOgorICAgICAgICAqIHN2Zy9TVkdGRURpZmZ1c2VMaWdodGluZ0VsZW1lbnQuaDoKKyAg
ICAgICAgKiBzdmcvU1ZHRkVEaXNwbGFjZW1lbnRNYXBFbGVtZW50LmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OlNWR0ZFRGlzcGxhY2VtZW50TWFwRWxlbWVudDo6YnVpbGQgY29uc3QpOgorICAgICAg
ICAqIHN2Zy9TVkdGRURpc3BsYWNlbWVudE1hcEVsZW1lbnQuaDoKKyAgICAgICAgKiBzdmcvU1ZH
RkVEcm9wU2hhZG93RWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdGRURyb3BTaGFk
b3dFbGVtZW50OjpidWlsZCBjb25zdCk6CisgICAgICAgICogc3ZnL1NWR0ZFRHJvcFNoYWRvd0Vs
ZW1lbnQuaDoKKyAgICAgICAgKiBzdmcvU1ZHRkVGbG9vZEVsZW1lbnQuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6U1ZHRkVGbG9vZEVsZW1lbnQ6OmJ1aWxkIGNvbnN0KToKKyAgICAgICAgKiBzdmcv
U1ZHRkVGbG9vZEVsZW1lbnQuaDoKKyAgICAgICAgKiBzdmcvU1ZHRkVHYXVzc2lhbkJsdXJFbGVt
ZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR0ZFR2F1c3NpYW5CbHVyRWxlbWVudDo6YnVp
bGQgY29uc3QpOgorICAgICAgICAqIHN2Zy9TVkdGRUdhdXNzaWFuQmx1ckVsZW1lbnQuaDoKKyAg
ICAgICAgKiBzdmcvU1ZHRkVJbWFnZUVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZH
RkVJbWFnZUVsZW1lbnQ6OmJ1aWxkIGNvbnN0KToKKyAgICAgICAgKiBzdmcvU1ZHRkVJbWFnZUVs
ZW1lbnQuaDoKKyAgICAgICAgKiBzdmcvU1ZHRkVNZXJnZUVsZW1lbnQuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6U1ZHRkVNZXJnZUVsZW1lbnQ6OmJ1aWxkIGNvbnN0KToKKyAgICAgICAgKiBzdmcv
U1ZHRkVNZXJnZUVsZW1lbnQuaDoKKyAgICAgICAgKiBzdmcvU1ZHRkVNb3JwaG9sb2d5RWxlbWVu
dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdGRU1vcnBob2xvZ3lFbGVtZW50OjpidWlsZCBj
b25zdCk6CisgICAgICAgICogc3ZnL1NWR0ZFTW9ycGhvbG9neUVsZW1lbnQuaDoKKyAgICAgICAg
KiBzdmcvU1ZHRkVPZmZzZXRFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR0ZFT2Zm
c2V0RWxlbWVudDo6YnVpbGQgY29uc3QpOgorICAgICAgICAqIHN2Zy9TVkdGRU9mZnNldEVsZW1l
bnQuaDoKKyAgICAgICAgKiBzdmcvU1ZHRkVTcGVjdWxhckxpZ2h0aW5nRWxlbWVudC5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpTVkdGRVNwZWN1bGFyTGlnaHRpbmdFbGVtZW50OjpidWlsZCBjb25z
dCk6CisgICAgICAgICogc3ZnL1NWR0ZFU3BlY3VsYXJMaWdodGluZ0VsZW1lbnQuaDoKKyAgICAg
ICAgKiBzdmcvU1ZHRkVUaWxlRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdGRVRp
bGVFbGVtZW50OjpidWlsZCBjb25zdCk6CisgICAgICAgICogc3ZnL1NWR0ZFVGlsZUVsZW1lbnQu
aDoKKyAgICAgICAgKiBzdmcvU1ZHRkVUdXJidWxlbmNlRWxlbWVudC5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpTVkdGRVR1cmJ1bGVuY2VFbGVtZW50OjpidWlsZCBjb25zdCk6CisgICAgICAgICog
c3ZnL1NWR0ZFVHVyYnVsZW5jZUVsZW1lbnQuaDoKKyAgICAgICAgKiBzdmcvU1ZHRmlsdGVyUHJp
bWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVzLmg6CisgICAgICAgICogc3ZnL2dyYXBoaWNzL2ZpbHRl
cnMvU1ZHRkVJbWFnZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGRUltYWdlOjpGRUltYWdlKToK
KyAgICAgICAgKFdlYkNvcmU6OkZFSW1hZ2U6OmNyZWF0ZVdpdGhJbWFnZSk6CisgICAgICAgIChX
ZWJDb3JlOjpGRUltYWdlOjpjcmVhdGVXaXRoSVJJUmVmZXJlbmNlKToKKyAgICAgICAgKFdlYkNv
cmU6OkZFSW1hZ2U6OmRldGVybWluZUFic29sdXRlUGFpbnRSZWN0KToKKyAgICAgICAgKFdlYkNv
cmU6OkZFSW1hZ2U6OnBsYXRmb3JtQXBwbHlTb2Z0d2FyZSk6CisgICAgICAgICogc3ZnL2dyYXBo
aWNzL2ZpbHRlcnMvU1ZHRkVJbWFnZS5oOgorICAgICAgICAqIHN2Zy9ncmFwaGljcy9maWx0ZXJz
L1NWR0ZpbHRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdGaWx0ZXI6OmNyZWF0ZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpTVkdGaWx0ZXI6OmFwcGx5KToKKyAgICAgICAgKFdlYkNvcmU6OlNW
R0ZpbHRlcjo6YXBwbHlGaWx0ZXIpOgorICAgICAgICAqIHN2Zy9ncmFwaGljcy9maWx0ZXJzL1NW
R0ZpbHRlci5oOgorICAgICAgICAqIHN2Zy9ncmFwaGljcy9maWx0ZXJzL1NWR0ZpbHRlckJ1aWxk
ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHRmlsdGVyQnVpbGRlcjo6YnVpbGRGaWx0ZXJF
ZmZlY3RzKToKKyAgICAgICAgKiBzdmcvZ3JhcGhpY3MvZmlsdGVycy9TVkdGaWx0ZXJCdWlsZGVy
Lmg6CisKKzIwMjEtMTAtMzAgIFNhaWQgQWJvdS1IYWxsYXdhICA8c2FpZEBhcHBsZS5jb20+CisK
KyAgICAgICAgW0dQVSBQcm9jZXNzXSBNYWtlIENTU0ZpbHRlciBob2xkcyBhIGxpc3Qgb2YgRmls
dGVyRnVuY3Rpb25zCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0yMzI0NjkKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICBJbiB0aGlzIHBhdGNoLCB0aGUgQ1NTIHJlZmVyZW5jZSBmaWx0ZXIgaXMgYnVpbHQgYXMg
YW4gU1ZHRmlsdGVyIGFuZCBpdAorICAgICAgICBpcyBrZXB0IGFzIGEgRmlsdGVyRnVuY3Rpb24g
aW4gdGhlIENTU0ZpbHRlciBmdW5jdGlvbnMnIGxpc3QuIFRoZSBGaWx0ZXIgCisgICAgICAgIGFz
c29jaWF0ZWQgd2l0aCB0aGUgRmlsdGVyRWZmZWN0cyBvZiB0aGUgcmVmZXJlbmNlZCBmaWx0ZXIg
d2lsbCBiZSBhbgorICAgICAgICBTVkdGaWx0ZXIgaW5zdGVhZCBvZiBoYXZpbmcgYSBDU1NGaWx0
ZXIuIFRoaXMgd2lsbCBhbGxvdyBoYXZpbmcgY29sb3IKKyAgICAgICAgc3BhY2luZyBmb3IgdGhl
IHJlZmVyZW5jZWQgZmlsdGVycyBkaWZmZXJlbnQgZnJvbSB0aGUgY29sb3Igc3BhY2luZyBvZgor
ICAgICAgICBDU1NGaWx0ZXIuIAorCisgICAgICAgIEFsc28gdGhpcyBwYXRjaCBtYWtlcyBhIHNp
bmdsZSBmdW5jdGlvbiBmb3IgYnVpbGRpbmcgdGhlIHByaW1pdGl2ZXMgb2YKKyAgICAgICAgdGhl
IFNWR0ZpbHRlciBpbnN0ZWFkIG9mIGhhdmluZyB0d28gZnVuY3Rpb25zLgorCisgICAgICAgIFRv
IGFsbG93IG9wZXJhdGluZyB0aHJvdWdoIHRoZSBTVkdGaWx0ZXIgYXMgYSBGaWx0ZXJGdW5jdGlv
biBvd25lZCBieQorICAgICAgICBDU1NGaWx0ZXIsIHRoZSBTVkdGaWx0ZXIgd2lsbCBoYXZlIGEg
cG9pbnRlciB0byBpdHMgbGFzdEVmZmVjdC4KKworICAgICAgICAqIGNzcy9DU1NGaWx0ZXJJbWFn
ZVZhbHVlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNTU0ZpbHRlckltYWdlVmFsdWU6OmltYWdl
KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZpbHRlckVmZmVjdC5oOgor
ICAgICAgICAoV2ViQ29yZTo6RmlsdGVyRWZmZWN0OjpzZXRNYXhFZmZlY3RSZWN0KToKKyAgICAg
ICAgKFdlYkNvcmU6OkZpbHRlckVmZmVjdDo6b3V0c2V0cyBjb25zdCk6IERlbGV0ZWQuCisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GaWx0ZXJGdW5jdGlvbi5oOgorICAgICAg
ICAoV2ViQ29yZTo6RmlsdGVyRnVuY3Rpb246Om91dHNldHMgY29uc3QpOgorICAgICAgICAoV2Vi
Q29yZTo6RmlsdGVyRnVuY3Rpb246OmNsZWFyUmVzdWx0KToKKyAgICAgICAgKiByZW5kZXJpbmcv
Q1NTRmlsdGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNTU0ZpbHRlcjo6Y3JlYXRlKToKKyAg
ICAgICAgKFdlYkNvcmU6OkNTU0ZpbHRlcjo6Q1NTRmlsdGVyKToKKyAgICAgICAgKFdlYkNvcmU6
OmNyZWF0ZUJsdXJFZmZlY3QpOgorICAgICAgICAoV2ViQ29yZTo6Y3JlYXRlQnJpZ2h0bmVzc0Vm
ZmVjdCk6CisgICAgICAgIChXZWJDb3JlOjpjcmVhdGVDb250cmFzdEVmZmVjdCk6CisgICAgICAg
IChXZWJDb3JlOjpjcmVhdGVEcm9wU2hhZG93RWZmZWN0KToKKyAgICAgICAgKFdlYkNvcmU6OmNy
ZWF0ZUdyYXlTY2FsZUVmZmVjdCk6CisgICAgICAgIChXZWJDb3JlOjpjcmVhdGVIdWVSb3RhdGVF
ZmZlY3QpOgorICAgICAgICAoV2ViQ29yZTo6Y3JlYXRlSW52ZXJ0RWZmZWN0KToKKyAgICAgICAg
KFdlYkNvcmU6OmNyZWF0ZU9wYWNpdHlFZmZlY3QpOgorICAgICAgICAoV2ViQ29yZTo6Y3JlYXRl
U2F0dXJhdGVFZmZlY3QpOgorICAgICAgICAoV2ViQ29yZTo6Y3JlYXRlU2VwaWFFZmZlY3QpOgor
ICAgICAgICAoV2ViQ29yZTo6Y3JlYXRlU1ZHRmlsdGVyKToKKyAgICAgICAgKFdlYkNvcmU6OnNl
dHVwTGFzdEVmZmVjdFByb3BlcnRpZXMpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTRmlsdGVyOjpi
dWlsZCk6CisgICAgICAgIChXZWJDb3JlOjpDU1NGaWx0ZXI6OmlucHV0Q29udGV4dCk6CisgICAg
ICAgIChXZWJDb3JlOjpDU1NGaWx0ZXI6OmFsbG9jYXRlQmFja2luZ1N0b3JlSWZOZWVkZWQpOgor
ICAgICAgICAoV2ViQ29yZTo6Q1NTRmlsdGVyOjpsYXN0RWZmZWN0KToKKyAgICAgICAgKFdlYkNv
cmU6OkNTU0ZpbHRlcjo6ZGV0ZXJtaW5lRmlsdGVyUHJpbWl0aXZlU3VicmVnaW9uKToKKyAgICAg
ICAgKFdlYkNvcmU6OkNTU0ZpbHRlcjo6Y2xlYXJJbnRlcm1lZGlhdGVSZXN1bHRzKToKKyAgICAg
ICAgKFdlYkNvcmU6OkNTU0ZpbHRlcjo6YXBwbHkpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTRmls
dGVyOjpvdXRwdXQpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTRmlsdGVyOjpzZXRTb3VyY2VJbWFn
ZVJlY3QpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTRmlsdGVyOjpvdXRwdXRSZWN0KToKKyAgICAg
ICAgKFdlYkNvcmU6OkNTU0ZpbHRlcjo6b3V0c2V0cyBjb25zdCk6CisgICAgICAgIChXZWJDb3Jl
OjpDU1NGaWx0ZXI6OmJ1aWxkUmVmZXJlbmNlRmlsdGVyKTogRGVsZXRlZC4KKyAgICAgICAgKFdl
YkNvcmU6OkNTU0ZpbHRlcjo6b3V0cHV0IGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNv
cmU6OkNTU0ZpbHRlcjo6c2V0TWF4RWZmZWN0UmVjdHMpOiBEZWxldGVkLgorICAgICAgICAoV2Vi
Q29yZTo6Q1NTRmlsdGVyOjpvdXRwdXRSZWN0IGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKiBy
ZW5kZXJpbmcvQ1NTRmlsdGVyLmg6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckxheWVyLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxheWVyOjpzZXR1cEZpbHRlcnMpOgorICAgICAg
ICAqIHJlbmRlcmluZy9SZW5kZXJMYXllckZpbHRlcnMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
UmVuZGVyTGF5ZXJGaWx0ZXJzOjpidWlsZEZpbHRlcik6CisgICAgICAgIChXZWJDb3JlOjpSZW5k
ZXJMYXllckZpbHRlcnM6OmJlZ2luRmlsdGVyRWZmZWN0KToKKyAgICAgICAgKFdlYkNvcmU6OlJl
bmRlckxheWVyRmlsdGVyczo6YXBwbHlGaWx0ZXJFZmZlY3QpOgorICAgICAgICAqIHJlbmRlcmlu
Zy9SZW5kZXJMYXllckZpbHRlcnMuaDoKKyAgICAgICAgKiByZW5kZXJpbmcvc3ZnL1JlbmRlclNW
R1Jlc291cmNlRmlsdGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclNWR1Jlc291cmNl
RmlsdGVyOjphcHBseVJlc291cmNlKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclNWR1Jlc291
cmNlRmlsdGVyOjpwb3N0QXBwbHlSZXNvdXJjZSk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJT
VkdSZXNvdXJjZUZpbHRlcjo6YnVpbGRQcmltaXRpdmVzIGNvbnN0KTogRGVsZXRlZC4KKyAgICAg
ICAgKiByZW5kZXJpbmcvc3ZnL1NWR1JlbmRlclRyZWVBc1RleHQuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6d3JpdGVTVkdSZXNvdXJjZUNvbnRhaW5lcik6CisgICAgICAgICogc3ZnL2dyYXBoaWNz
L2ZpbHRlcnMvU1ZHRmlsdGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR0ZpbHRlcjo6Y3Jl
YXRlKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR0ZpbHRlcjo6U1ZHRmlsdGVyKToKKyAgICAgICAg
KFdlYkNvcmU6OlNWR0ZpbHRlcjo6b3V0c2V0cyBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpT
VkdGaWx0ZXI6OmNsZWFyUmVzdWx0KToKKyAgICAgICAgKiBzdmcvZ3JhcGhpY3MvZmlsdGVycy9T
VkdGaWx0ZXJCdWlsZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR0ZpbHRlckJ1aWxkZXI6
OnNldHVwQnVpbHRpbkVmZmVjdHMpOgorICAgICAgICAoV2ViQ29yZTo6Y29sb3JJbnRlcnBvbGF0
aW9uRm9yRWxlbWVudCk6CisgICAgICAgIChXZWJDb3JlOjpTVkdGaWx0ZXJCdWlsZGVyOjpidWls
ZEZpbHRlckVmZmVjdHMpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHRmlsdGVyQnVpbGRlcjo6U1ZH
RmlsdGVyQnVpbGRlcik6IERlbGV0ZWQuCisgICAgICAgICogc3ZnL2dyYXBoaWNzL2ZpbHRlcnMv
U1ZHRmlsdGVyQnVpbGRlci5oOgorCisyMDIxLTEwLTI4ICBTYWlkIEFib3UtSGFsbGF3YSAgPHNh
aWRAYXBwbGUuY29tPgorCisgICAgICAgIFtHUFUgUHJvY2Vzc10gTWFrZSBTVkdGaWx0ZXIgYW5k
IENTU0ZpbHRlciB3b3JrIGluIHRoZSBzYW1lIGNvb3JkaW5hdGVzIHN5c3RlbQorICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjMyNDU3CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQ3VycmVudGx5IFNWR0ZpbHRl
ciBzZXRzIHRoZSBmb2xsb3dpbmcgbWVtYmVycyBvZiBGaWx0ZXIKKworICAgICAgICAxLiBBZmZp
bmVUcmFuc2Zvcm0gbV9hYnNvbHV0ZVRyYW5zZm9ybTogdGhpcyBpcyB0aGUgc2NhbGluZyBwYXJ0
IGZyb20gdGhlCisgICAgICAgICAgIHRyYW5zZm9ybWF0aW9uIGZyb20gdGhlIHRhcmdldCBlbGVt
ZW50IHRvIHRoZSBvdXRlcm1vc3QgY29vcmRpbmF0ZSBzeXN0ZW0KKyAgICAgICAgMi4gRmxvYXRT
aXplIG1fZmlsdGVyUmVzb2x1dGlvbjogdGhpcyBpcyB0aGUgY2xhbXBpbmcgc2NhbGUgaWYgdGhl
IHNpemUKKyAgICAgICAgICAgb2YgdGhlIHJlc3VsdCBJbWFnZUJ1ZmZlcnMgZXhjZWVkcyBNYXhD
bGFtcGVkQXJlYQorCisgICAgICAgIEFuZCB0aGUgQ1NTRmlsdGVyIHNldHMgdGhlIGZvbGxvd2lu
ZyBtZW1iZXIgb2YgRmlsdGVyOgorCisgICAgICAgIDEuIGZsb2F0IG1fZmlsdGVyU2NhbGU6IHRo
aXMgaXMgdGhlIGRvY3VtZW50KCkuZGV2aWNlU2NhbGVGYWN0b3IoKQorCisgICAgICAgIFRoZSBk
aXNjcmVwYW5jeSBoYXBwZW5zIGFsc28gd2hlbiBjcmVhdGluZyB0aGUgcmVzdWx0IEltYWdlQnVm
ZmVycy4gRm9yIAorICAgICAgICBTVkdGaWx0ZXIsIHdlIGNyZWF0ZSB0aGVtIHdpdGggc2NhbGVG
YWN0b3I9MS4gVGhpcyBtZWFucyB0aGUgbG9naWNhbFNpemUKKyAgICAgICAgPT0gYmFja2VuZFNp
emUuIEJ1dCBmb3IgQ1NTRmlsdGVyIHdlIGNyZWF0ZSB0aGVtIHdpdGggc2NhbGVGYWN0b3IKKyAg
ICAgICAgPSBtX2ZpbHRlclNjYWxlLiBUaGlzIG1lYW5zIHRoZSBsb2dpY2FsU2l6ZSAhPSBiYWNr
ZW5kU2l6ZSBpbiB0aGlzIGNhc2UuCisKKyAgICAgICAgV2UgbmVlZCB0byB1bmlmeSB0aGUgY29v
cmRpbmF0ZXMgc3lzdGVtIGZvciBib3RoIGZpbHRlcnMuIFdlIG5lZWQgYWxzbyB0bworICAgICAg
ICByZXBsYWNlIHRoZSB0aHJlZSBtZW1iZXJzIGJ5IGEgc2luZ2xlIEZsb2F0U2l6ZSBjYWxsZWQg
Im1fZmlsdGVyU2NhbGUiLgorCisgICAgICAgICogY3NzL0NTU0ZpbHRlckltYWdlVmFsdWUuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6Q1NTRmlsdGVySW1hZ2VWYWx1ZTo6aW1hZ2UpOgorICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NvcmVpbWFnZS9GaWx0ZXJFZmZlY3RSZW5kZXJlckNvcmVJ
bWFnZS5tbToKKyAgICAgICAgKFdlYkNvcmU6OkZpbHRlckVmZmVjdFJlbmRlcmVyQ29yZUltYWdl
OjpyZW5kZXJUb0ltYWdlQnVmZmVyKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9maWx0
ZXJzL0ZFQ29udm9sdmVNYXRyaXguY3BwOgorICAgICAgICAoV2ViQ29yZTo6RkVDb252b2x2ZU1h
dHJpeDo6cGxhdGZvcm1BcHBseVNvZnR3YXJlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy9maWx0ZXJzL0ZFRGlzcGxhY2VtZW50TWFwLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZFRGlz
cGxhY2VtZW50TWFwOjpwbGF0Zm9ybUFwcGx5U29mdHdhcmUpOgorICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL2ZpbHRlcnMvRkVEcm9wU2hhZG93LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZF
RHJvcFNoYWRvdzo6ZGV0ZXJtaW5lQWJzb2x1dGVQYWludFJlY3QpOgorICAgICAgICAoV2ViQ29y
ZTo6RkVEcm9wU2hhZG93OjpwbGF0Zm9ybUFwcGx5U29mdHdhcmUpOgorICAgICAgICAqIHBsYXRm
b3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVHYXVzc2lhbkJsdXIuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6RkVHYXVzc2lhbkJsdXI6OmNhbGN1bGF0ZUtlcm5lbFNpemUpOgorICAgICAgICAoV2ViQ29y
ZTo6RkVHYXVzc2lhbkJsdXI6OnBsYXRmb3JtQXBwbHlTb2Z0d2FyZSk6CisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRU1vcnBob2xvZ3kuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6RkVNb3JwaG9sb2d5OjpkZXRlcm1pbmVBYnNvbHV0ZVBhaW50UmVjdCk6CisgICAgICAgIChX
ZWJDb3JlOjpGRU1vcnBob2xvZ3k6OnBsYXRmb3JtQXBwbHlTb2Z0d2FyZSk6CisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRU9mZnNldC5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpGRU9mZnNldDo6ZGV0ZXJtaW5lQWJzb2x1dGVQYWludFJlY3QpOgorICAgICAgICAoV2ViQ29y
ZTo6RkVPZmZzZXQ6OnBsYXRmb3JtQXBwbHlTb2Z0d2FyZSk6CisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3MvZmlsdGVycy9GRVRpbGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RkVUaWxlOjpw
bGF0Zm9ybUFwcGx5U29mdHdhcmUpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2ZpbHRl
cnMvRmlsdGVyLmg6CisgICAgICAgIChXZWJDb3JlOjpGaWx0ZXI6OmZpbHRlclNjYWxlIGNvbnN0
KToKKyAgICAgICAgKFdlYkNvcmU6OkZpbHRlcjo6c2V0RmlsdGVyU2NhbGUpOgorICAgICAgICAo
V2ViQ29yZTo6RmlsdGVyOjpzb3VyY2VJbWFnZVJlY3QgY29uc3QpOgorICAgICAgICAoV2ViQ29y
ZTo6RmlsdGVyOjpzZXRGaWx0ZXJSZWdpb24pOgorICAgICAgICAoV2ViQ29yZTo6RmlsdGVyOjpm
aWx0ZXJSZWdpb24gY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6RmlsdGVyOjpzZXRTb3VyY2VJ
bWFnZVJlY3QpOgorICAgICAgICAoV2ViQ29yZTo6RmlsdGVyOjpzY2FsZWRCeUZpbHRlclNjYWxl
IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkZpbHRlcjo6RmlsdGVyKToKKyAgICAgICAgKFdl
YkNvcmU6OkZpbHRlcjo6ZmlsdGVyUmVzb2x1dGlvbiBjb25zdCk6IERlbGV0ZWQuCisgICAgICAg
IChXZWJDb3JlOjpGaWx0ZXI6OnNldEZpbHRlclJlc29sdXRpb24pOiBEZWxldGVkLgorICAgICAg
ICAoV2ViQ29yZTo6RmlsdGVyOjphYnNvbHV0ZVRyYW5zZm9ybSBjb25zdCk6IERlbGV0ZWQuCisg
ICAgICAgIChXZWJDb3JlOjpGaWx0ZXI6OmlzU1ZHRmlsdGVyIGNvbnN0KTogRGVsZXRlZC4KKyAg
ICAgICAgKFdlYkNvcmU6OkZpbHRlcjo6aXNDU1NGaWx0ZXIgY29uc3QpOiBEZWxldGVkLgorICAg
ICAgICAoV2ViQ29yZTo6RmlsdGVyOjpzY2FsZWRCeUZpbHRlclJlc29sdXRpb24gY29uc3QpOiBE
ZWxldGVkLgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRmlsdGVyRWZmZWN0
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZpbHRlckVmZmVjdDo6ZGV0ZXJtaW5lRmlsdGVyUHJp
bWl0aXZlU3VicmVnaW9uKToKKyAgICAgICAgKFdlYkNvcmU6OkZpbHRlckVmZmVjdDo6YXBwbHkp
OgorICAgICAgICAoV2ViQ29yZTo6RmlsdGVyRWZmZWN0OjppbWFnZUJ1ZmZlclJlc3VsdCk6Cisg
ICAgICAgIChXZWJDb3JlOjpGaWx0ZXJFZmZlY3Q6OnVubXVsdGlwbGllZFJlc3VsdCk6CisgICAg
ICAgIChXZWJDb3JlOjpGaWx0ZXJFZmZlY3Q6OnByZW11bHRpcGxpZWRSZXN1bHQpOgorICAgICAg
ICAoV2ViQ29yZTo6RmlsdGVyRWZmZWN0Ojpjb3B5SW1hZ2VCeXRlcyBjb25zdCk6CisgICAgICAg
IChXZWJDb3JlOjpGaWx0ZXJFZmZlY3Q6OmNvbnZlcnRQaXhlbEJ1ZmZlclRvQ29sb3JTcGFjZSk6
CisgICAgICAgIChXZWJDb3JlOjpGaWx0ZXJFZmZlY3Q6OmNvbnZlcnRJbWFnZUJ1ZmZlclRvQ29s
b3JTcGFjZSk6CisgICAgICAgIChXZWJDb3JlOjpGaWx0ZXJFZmZlY3Q6OmNvcHlVbm11bHRpcGxp
ZWRSZXN1bHQpOgorICAgICAgICAoV2ViQ29yZTo6RmlsdGVyRWZmZWN0Ojpjb3B5UHJlbXVsdGlw
bGllZFJlc3VsdCk6CisgICAgICAgIChXZWJDb3JlOjpGaWx0ZXJFZmZlY3Q6OmNyZWF0ZUltYWdl
QnVmZmVyUmVzdWx0KToKKyAgICAgICAgKFdlYkNvcmU6OkZpbHRlckVmZmVjdDo6Y3JlYXRlVW5t
dWx0aXBsaWVkSW1hZ2VSZXN1bHQpOgorICAgICAgICAoV2ViQ29yZTo6RmlsdGVyRWZmZWN0Ojpj
cmVhdGVQcmVtdWx0aXBsaWVkSW1hZ2VSZXN1bHQpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL2ZpbHRlcnMvU291cmNlR3JhcGhpYy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTb3VyY2VH
cmFwaGljOjpkZXRlcm1pbmVBYnNvbHV0ZVBhaW50UmVjdCk6CisgICAgICAgICogcmVuZGVyaW5n
L0NTU0ZpbHRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDU1NGaWx0ZXI6OmNyZWF0ZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpDU1NGaWx0ZXI6OkNTU0ZpbHRlcik6CisgICAgICAgIChXZWJDb3Jl
OjpDU1NGaWx0ZXI6OmJ1aWxkUmVmZXJlbmNlRmlsdGVyKToKKyAgICAgICAgKFdlYkNvcmU6OkNT
U0ZpbHRlcjo6YnVpbGQpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTRmlsdGVyOjphbGxvY2F0ZUJh
Y2tpbmdTdG9yZUlmTmVlZGVkKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU0ZpbHRlcjo6ZGV0ZXJt
aW5lRmlsdGVyUHJpbWl0aXZlU3VicmVnaW9uKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU0ZpbHRl
cjo6Y2xlYXJJbnRlcm1lZGlhdGVSZXN1bHRzKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU0ZpbHRl
cjo6c2V0U291cmNlSW1hZ2VSZWN0KToKKyAgICAgICAgKFdlYkNvcmU6OkNTU0ZpbHRlcjo6b3V0
cHV0UmVjdCBjb25zdCk6CisgICAgICAgICogcmVuZGVyaW5nL0NTU0ZpbHRlci5oOgorICAgICAg
ICAqIHJlbmRlcmluZy9SZW5kZXJMYXllckZpbHRlcnMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
UmVuZGVyTGF5ZXJGaWx0ZXJzOjpidWlsZEZpbHRlcik6CisgICAgICAgICogcmVuZGVyaW5nL3N2
Zy9SZW5kZXJTVkdSZXNvdXJjZUZpbHRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJT
VkdSZXNvdXJjZUZpbHRlcjo6YXBwbHlSZXNvdXJjZSk6CisgICAgICAgIChXZWJDb3JlOjpSZW5k
ZXJTVkdSZXNvdXJjZUZpbHRlcjo6cG9zdEFwcGx5UmVzb3VyY2UpOgorICAgICAgICAqIHJlbmRl
cmluZy9zdmcvU1ZHUmVuZGVyVHJlZUFzVGV4dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjp3cml0
ZVNWR1Jlc291cmNlQ29udGFpbmVyKToKKyAgICAgICAgKiBzdmcvZ3JhcGhpY3MvZmlsdGVycy9T
VkdGRUltYWdlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZFSW1hZ2U6OkZFSW1hZ2UpOgorICAg
ICAgICAoV2ViQ29yZTo6RkVJbWFnZTo6ZGV0ZXJtaW5lQWJzb2x1dGVQYWludFJlY3QpOgorICAg
ICAgICAoV2ViQ29yZTo6RkVJbWFnZTo6cGxhdGZvcm1BcHBseVNvZnR3YXJlKToKKyAgICAgICAg
KiBzdmcvZ3JhcGhpY3MvZmlsdGVycy9TVkdGRUltYWdlLmg6CisgICAgICAgICogc3ZnL2dyYXBo
aWNzL2ZpbHRlcnMvU1ZHRmlsdGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR0ZpbHRlcjo6
U1ZHRmlsdGVyKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR0ZpbHRlcjo6c2NhbGVkQnlGaWx0ZXJT
Y2FsZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpTVkdGaWx0ZXI6OmNyZWF0ZSk6CisgICAg
ICAgIChXZWJDb3JlOjpTVkdGaWx0ZXI6OnNjYWxlZEJ5RmlsdGVyUmVzb2x1dGlvbiBjb25zdCk6
IERlbGV0ZWQuCisgICAgICAgICogc3ZnL2dyYXBoaWNzL2ZpbHRlcnMvU1ZHRmlsdGVyLmg6CisK
KzIwMjEtMTAtMjcgIFNhaWQgQWJvdS1IYWxsYXdhICA8c2FpZEBhcHBsZS5jb20+CisKKyAgICAg
ICAgW0dQVSBQcm9jZXNzXSBJbnRyb2R1Y2UgRmlsdGVyRnVuY3Rpb24gYW5kIG1ha2UgaXQgdGhl
IGJhc2UgY2xhc3Mgb2YgRmlsdGVyIGFuZCBGaWx0ZXJFZmZlY3QKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzMjQxMworCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoaXMgYWxsb3dzIENTU0ZpbHRlciB0byBo
b2xkIGEgbGlzdCBvZiBGaWx0ZXJGdW5jdGlvbnMuIFRoZSBGaWx0ZXIgaW4KKyAgICAgICAgdGhp
cyBjYXNlIHdpbGwgYWN0IGxpa2UgYSBjb21wb3NpdGUgcGF0dGVybiBvZiB0aGUgRmlsdGVyRWZm
ZWN0LgorCisgICAgICAgIFRoaXMgcGF0Y2ggYWxzbworICAgICAgICAxLiBSZW1vdmVzIHRoZSB2
aXJ0dWFsIGZ1bmN0aW9uIGZpbHRlck5hbWUoKSBmcm9tIGFsbCB0aGUgRmlsdGVyRWZmZWN0Cisg
ICAgICAgICAgIGNsYXNzZXMuIEl0IHJlcGxhY2VzIGl0IHdpdGggYSBzdGF0aWMgZnVuY3Rpb24g
aW4gRmlsdGVyRnVuY3Rpb24uCisgICAgICAgIDIuIFJlbW92ZXMgdGhlIHZpcnR1YWwgZnVuY3Rp
b24gZmlsdGVyRWZmZWN0VHlwZSgpIGFuZCB0aGUgZnVuY3Rpb24KKyAgICAgICAgICAgRmlsdGVy
RWZmZWN0OjpmaWx0ZXJFZmZlY3RDbGFzc1R5cGUoKSBzaW5jZSB0aGV5IGNhbiBib3RoIGJlIHJl
cGxhY2VkCisgICAgICAgICAgIGJ5IEZpbHRlckZ1bmN0aW9uOjpmaWx0ZXJUeXBlKCkuCisgICAg
ICAgIDMuIEFkZHMgdHJhaXQgbWFjcm9zIGZvciBhbGwgRmlsdGVyRWZmZWN0cyBhbmQgdGhlIFNW
R0ZpbHRlcnMgY2xhc3MuCisKKyAgICAgICAgKiBTb3VyY2VzLnR4dDoKKyAgICAgICAgKiBXZWJD
b3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3MvY29yZWltYWdlL0ZpbHRlckVmZmVjdFJlbmRlcmVyQ29yZUltYWdlLm1tOgorICAgICAgICAo
V2ViQ29yZTo6RmlsdGVyRWZmZWN0UmVuZGVyZXJDb3JlSW1hZ2U6OnN1cHBvcnRzQ29yZUltYWdl
UmVuZGVyaW5nKToKKyAgICAgICAgKFdlYkNvcmU6OkZpbHRlckVmZmVjdFJlbmRlcmVyQ29yZUlt
YWdlOjpjb25uZWN0Q0lGaWx0ZXJzKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9maWx0
ZXJzL0ZFQmxlbmQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RkVCbGVuZDo6RkVCbGVuZCk6Cisg
ICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRUJsZW5kLmg6CisgICAgICAgICgp
OiBEZWxldGVkLgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVDb2xvck1h
dHJpeC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGRUNvbG9yTWF0cml4OjpGRUNvbG9yTWF0cml4
KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFQ29sb3JNYXRyaXguaDoK
KyAgICAgICAgKGlzVHlwZSk6IERlbGV0ZWQuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
ZmlsdGVycy9GRUNvbXBvbmVudFRyYW5zZmVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZFQ29t
cG9uZW50VHJhbnNmZXI6OkZFQ29tcG9uZW50VHJhbnNmZXIpOgorICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL2ZpbHRlcnMvRkVDb21wb25lbnRUcmFuc2Zlci5oOgorICAgICAgICAoaXNUeXBl
KTogRGVsZXRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFQ29tcG9z
aXRlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZFQ29tcG9zaXRlOjpGRUNvbXBvc2l0ZSk6Cisg
ICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRUNvbXBvc2l0ZS5oOgorICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVDb252b2x2ZU1hdHJpeC5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpGRUNvbnZvbHZlTWF0cml4OjpGRUNvbnZvbHZlTWF0cml4KToKKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFQ29udm9sdmVNYXRyaXguaDoKKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFRGlmZnVzZUxpZ2h0aW5nLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkZFRGlmZnVzZUxpZ2h0aW5nOjpGRURpZmZ1c2VMaWdodGluZyk6Cisg
ICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRURpZmZ1c2VMaWdodGluZy5oOgor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVEaXNwbGFjZW1lbnRNYXAuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6RkVEaXNwbGFjZW1lbnRNYXA6OkZFRGlzcGxhY2VtZW50TWFw
KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFRGlzcGxhY2VtZW50TWFw
Lmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRURyb3BTaGFkb3cuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6RkVEcm9wU2hhZG93OjpGRURyb3BTaGFkb3cpOgorICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVEcm9wU2hhZG93Lmg6CisgICAgICAgICgp
OiBEZWxldGVkLgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVGbG9vZC5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpGRUZsb29kOjpGRUZsb29kKToKKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFRmxvb2QuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9maWx0ZXJzL0ZFR2F1c3NpYW5CbHVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZFR2F1
c3NpYW5CbHVyOjpGRUdhdXNzaWFuQmx1cik6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
ZmlsdGVycy9GRUdhdXNzaWFuQmx1ci5oOgorICAgICAgICAoKTogRGVsZXRlZC4KKyAgICAgICAg
KiBwbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFTGlnaHRpbmcuaDoKKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFTWVyZ2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RkVN
ZXJnZTo6RkVNZXJnZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRU1l
cmdlLmg6CisgICAgICAgICgpOiBEZWxldGVkLgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L2ZpbHRlcnMvRkVNb3JwaG9sb2d5LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZFTW9ycGhvbG9n
eTo6RkVNb3JwaG9sb2d5KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZF
TW9ycGhvbG9neS5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVPZmZz
ZXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RkVPZmZzZXQ6OkZFT2Zmc2V0KToKKyAgICAgICAg
KiBwbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFT2Zmc2V0Lmg6CisgICAgICAgICgpOiBEZWxl
dGVkLgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVTcGVjdWxhckxpZ2h0
aW5nLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZFU3BlY3VsYXJMaWdodGluZzo6RkVTcGVjdWxh
ckxpZ2h0aW5nKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFU3BlY3Vs
YXJMaWdodGluZy5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVUaWxl
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZFVGlsZTo6RkVUaWxlKToKKyAgICAgICAgKFdlYkNv
cmU6OkZFVGlsZTo6cGxhdGZvcm1BcHBseVNvZnR3YXJlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy9maWx0ZXJzL0ZFVGlsZS5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Zp
bHRlcnMvRkVUdXJidWxlbmNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZFVHVyYnVsZW5jZTo6
RkVUdXJidWxlbmNlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFVHVy
YnVsZW5jZS5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRmlsdGVyLmg6
CisgICAgICAgIChXZWJDb3JlOjpGaWx0ZXI6OkZpbHRlcik6CisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3MvZmlsdGVycy9GaWx0ZXJFZmZlY3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Rmls
dGVyRWZmZWN0OjpGaWx0ZXJFZmZlY3QpOgorICAgICAgICAoV2ViQ29yZTo6RmlsdGVyRWZmZWN0
OjpkZXRlcm1pbmVGaWx0ZXJQcmltaXRpdmVTdWJyZWdpb24pOgorICAgICAgICAoV2ViQ29yZTo6
RmlsdGVyRWZmZWN0OjpjcmVhdGVJbWFnZUJ1ZmZlclJlc3VsdCk6CisgICAgICAgIChXZWJDb3Jl
OjpGaWx0ZXJFZmZlY3Q6OmNyZWF0ZVVubXVsdGlwbGllZEltYWdlUmVzdWx0KToKKyAgICAgICAg
KFdlYkNvcmU6OkZpbHRlckVmZmVjdDo6Y3JlYXRlUHJlbXVsdGlwbGllZEltYWdlUmVzdWx0KToK
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZpbHRlckVmZmVjdC5oOgorICAg
ICAgICAoaXNUeXBlKToKKyAgICAgICAgKFdlYkNvcmU6OkZpbHRlckVmZmVjdDo6ZmlsdGVyRWZm
ZWN0VHlwZSBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpGaWx0ZXJFZmZlY3Q6
OmZpbHRlckVmZmVjdENsYXNzVHlwZSBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvZmlsdGVycy9GaWx0ZXJGdW5jdGlvbi5jcHA6IEFkZGVkLgorICAgICAgICAo
V2ViQ29yZTo6RmlsdGVyRnVuY3Rpb246OkZpbHRlckZ1bmN0aW9uKToKKyAgICAgICAgKFdlYkNv
cmU6OmZpbHRlck5hbWVzKToKKyAgICAgICAgKFdlYkNvcmU6OkZpbHRlckZ1bmN0aW9uOjpmaWx0
ZXJOYW1lKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZpbHRlckZ1bmN0
aW9uLmg6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6RmlsdGVyRnVuY3Rpb246OmZpbHRlclR5
cGUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6RmlsdGVyRnVuY3Rpb246OmlzQ1NTRmlsdGVy
IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkZpbHRlckZ1bmN0aW9uOjppc1NWR0ZpbHRlciBj
b25zdCk6CisgICAgICAgIChXZWJDb3JlOjpGaWx0ZXJGdW5jdGlvbjo6aXNGaWx0ZXIgY29uc3Qp
OgorICAgICAgICAoV2ViQ29yZTo6RmlsdGVyRnVuY3Rpb246OmlzRmlsdGVyRWZmZWN0IGNvbnN0
KToKKyAgICAgICAgKFdlYkNvcmU6OkZpbHRlckZ1bmN0aW9uOjpzb3VyY2VBbHBoYU5hbWUpOgor
ICAgICAgICAoV2ViQ29yZTo6RmlsdGVyRnVuY3Rpb246OnNvdXJjZUdyYXBoaWNOYW1lKToKKyAg
ICAgICAgKFdlYkNvcmU6OkZpbHRlckZ1bmN0aW9uOjpmaWx0ZXJOYW1lIGNvbnN0KToKKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL1NvdXJjZUFscGhhLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OlNvdXJjZUFscGhhOjpTb3VyY2VBbHBoYSk6CisgICAgICAgIChXZWJDb3JlOjpT
b3VyY2VBbHBoYTo6ZWZmZWN0TmFtZSk6IERlbGV0ZWQuCisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3MvZmlsdGVycy9Tb3VyY2VBbHBoYS5oOgorICAgICAgICAoV2ViQ29yZTo6U291cmNlQWxw
aGE6OmVmZmVjdE5hbWUpOgorICAgICAgICAoKTogRGVsZXRlZC4KKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy9maWx0ZXJzL1NvdXJjZUdyYXBoaWMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
U291cmNlR3JhcGhpYzo6ZWZmZWN0TmFtZSk6IERlbGV0ZWQuCisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3MvZmlsdGVycy9Tb3VyY2VHcmFwaGljLmg6CisgICAgICAgIChXZWJDb3JlOjpTb3Vy
Y2VHcmFwaGljOjplZmZlY3ROYW1lKToKKyAgICAgICAgKFdlYkNvcmU6OlNvdXJjZUdyYXBoaWM6
OlNvdXJjZUdyYXBoaWMpOgorICAgICAgICAoKTogRGVsZXRlZC4KKyAgICAgICAgKGlzVHlwZSk6
IERlbGV0ZWQuCisgICAgICAgICogcmVuZGVyaW5nL0NTU0ZpbHRlci5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpDU1NGaWx0ZXI6OkNTU0ZpbHRlcik6CisgICAgICAgICogc3ZnL2dyYXBoaWNzL2Zp
bHRlcnMvU1ZHRkVJbWFnZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGRUltYWdlOjpGRUltYWdl
KToKKyAgICAgICAgKiBzdmcvZ3JhcGhpY3MvZmlsdGVycy9TVkdGRUltYWdlLmg6CisgICAgICAg
ICogc3ZnL2dyYXBoaWNzL2ZpbHRlcnMvU1ZHRmlsdGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OlNWR0ZpbHRlcjo6U1ZHRmlsdGVyKToKKyAgICAgICAgKiBzdmcvZ3JhcGhpY3MvZmlsdGVycy9T
VkdGaWx0ZXJCdWlsZGVyLmNwcDoKKwogMjAyMS0xMC0zMCAgTXlsZXMgQy4gTWF4ZmllbGQgIDxt
bWF4ZmllbGRAYXBwbGUuY29tPgogCiAgICAgICAgIE1pZ3JhdGUgdGhlIGZpcnN0IGZldyBjYWxs
ZXJzIGZyb20gSW1hZ2VCdWZmZXI6OnRydW5jYXRlZExvZ2ljYWxTaXplKCkgdG8gSW1hZ2VCdWZm
ZXI6OmxvZ2ljYWxTaXplKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0
IGIvU291cmNlL1dlYkNvcmUvU291cmNlcy50eHQKaW5kZXggOGRhMjRiNzhkYTU3ZGMzYmQyY2Vk
MTE4NGMyZWRkZmYwYjhkZTI0Ni4uZTA3NTQ0MGNmMmRmNTE2MDI2ODYyMDAzOWQ1ZDc0MjkwNDNm
YjUwMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvU291cmNlcy50eHQKKysrIGIvU291cmNl
L1dlYkNvcmUvU291cmNlcy50eHQKQEAgLTIwNjIsNiArMjA2Miw3IEBAIHBsYXRmb3JtL2dyYXBo
aWNzL2ZpbHRlcnMvRkVUaWxlLmNwcAogcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRVR1cmJ1
bGVuY2UuY3BwCiBwbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZpbHRlckVmZmVjdC5jcHAKIHBs
YXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRmlsdGVyRWZmZWN0UmVuZGVyZXIuY3BwCitwbGF0Zm9y
bS9ncmFwaGljcy9maWx0ZXJzL0ZpbHRlckZ1bmN0aW9uLmNwcAogcGxhdGZvcm0vZ3JhcGhpY3Mv
ZmlsdGVycy9GaWx0ZXJPcGVyYXRpb24uY3BwCiBwbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0Zp
bHRlck9wZXJhdGlvbnMuY3BwCiBwbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL1BvaW50TGlnaHRT
b3VyY2UuY3BwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9w
cm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0
LnBieHByb2oKaW5kZXggODQwYTRlM2IzN2YxMzE3YzgwN2QwNDM1YTE2ODZhZTcxMmUzMjM1My4u
NGQxMjhmZDNlYjcxYzE5MGU1YjBlZDA1NDc0YzA2MGZhMWExMDFhYyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMTA1NjEsNiAr
MTA1NjEsOCBAQAogCQk3MjRFRTU0RTFEQzdGMjVCMDBBOTFGRkIgLyogQWN0aXZpdHlTdGF0ZS5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBBY3Rpdml0eVN0YXRlLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTcyNEVFNTRGMURDN0YyNUIwMEE5MUZGQiAvKiBBY3Rp
dml0eVN0YXRlQ2hhbmdlT2JzZXJ2ZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gQWN0aXZpdHlTdGF0ZUNoYW5nZU9ic2VydmVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTcyNTIzOTZCMjU0Q0FEQzIwMEY1RkIxNSAvKiBOYXRpdmVJbWFnZS5jcHAgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5jcHA7IHBhdGggPSBOYXRpdmVJbWFnZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CisJCTcyNjJENzU2MjcyQTE3NDEwMEM1NkEwOSAvKiBGaWx0ZXJGdW5jdGlvbi5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBGaWx0ZXJGdW5jdGlvbi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk3
MjYyRDc1NzI3MkExNzQxMDBDNTZBMDkgLyogRmlsdGVyRnVuY3Rpb24uY3BwICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3Bw
OyBwYXRoID0gRmlsdGVyRnVuY3Rpb24uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQk3MjY2RjAxMzIyNDFCQ0UyMDA4MzM5NzUgLyogU1ZHUHJvcGVydHlBbmltYXRvckZhY3Rvcnku
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gU1ZHUHJvcGVydHlBbmltYXRvckZhY3RvcnkuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNzI2NkYwMTQyMjQxQkZCMjAwODMzOTc1IC8qIFNWR1ByaW1p
dGl2ZVByb3BlcnR5QW5pbWF0b3JJbXBsLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNWR1ByaW1pdGl2ZVBy
b3BlcnR5QW5pbWF0b3JJbXBsLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTcyNjZG
MDE1MjI0MUMwOTgwMDgzMzk3NSAvKiBTVkdQcmltaXRpdmVQcm9wZXJ0eUFuaW1hdG9yLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IFNWR1ByaW1pdGl2ZVByb3BlcnR5QW5pbWF0b3IuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKQEAgLTE4NjQ0LDExICsxODY0NiwxMSBAQAogCQkxQTU2OUNDNDBEN0Uy
QjYwMDA3QzM5ODMgLyogYnJpZGdlICovID0gewogCQkJaXNhID0gUEJYR3JvdXA7CiAJCQljaGls
ZHJlbiA9ICgKKwkJCQkxQTU2OUNFMjBEN0UyQjgyMDA3QzM5ODMgLyogb2JqYyAqLywKIAkJCQk1
OTlFNzU4RjExMDU1QTFGMDBEOTA0RkEgLyogQnJpZGdlLmggKi8sCiAJCQkJMUE3MUQ1NzkwRjMz
ODE5MDAwRjlDRTRFIC8qIElkZW50aWZpZXJSZXAuY3BwICovLAogCQkJCTFBNzFENTdBMEYzMzgx
OTAwMEY5Q0U0RSAvKiBJZGVudGlmaWVyUmVwLmggKi8sCiAJCQkJNTlCNTk3NzExMTA4NjU1NjAw
NzE1OUU4IC8qIGpzYyAqLywKLQkJCQkxQTU2OUNFMjBEN0UyQjgyMDA3QzM5ODMgLyogb2JqYyAq
LywKIAkJCQkxQTU2OUNFRjBEN0UyQjgyMDA3QzM5ODMgLyogcnVudGltZV9hcnJheS5jcHAgKi8s
CiAJCQkJMUE1NjlDRjAwRDdFMkI4MjAwN0MzOTgzIC8qIHJ1bnRpbWVfYXJyYXkuaCAqLywKIAkJ
CQkxQTU2OUNGMTBEN0UyQjgyMDA3QzM5ODMgLyogcnVudGltZV9tZXRob2QuY3BwICovLApAQCAt
MjUyOTEsNiArMjUyOTMsOCBAQAogCQkJCTA4QzkyNTE4MEZDQzdDNEEwMDQ4MERFQyAvKiBGaWx0
ZXJFZmZlY3QuaCAqLywKIAkJCQkyQzg1NjUzODI0QzEwQjBCMDBBMzc2NzMgLyogRmlsdGVyRWZm
ZWN0UmVuZGVyZXIuY3BwICovLAogCQkJCTJDODU2NTMzMjRDMEY3M0MwMEEzNzY3MyAvKiBGaWx0
ZXJFZmZlY3RSZW5kZXJlci5oICovLAorCQkJCTcyNjJENzU3MjcyQTE3NDEwMEM1NkEwOSAvKiBG
aWx0ZXJGdW5jdGlvbi5jcHAgKi8sCisJCQkJNzI2MkQ3NTYyNzJBMTc0MTAwQzU2QTA5IC8qIEZp
bHRlckZ1bmN0aW9uLmggKi8sCiAJCQkJNDlFQ0VCNjMxNDk5NzkwRDAwQ0REM0E0IC8qIEZpbHRl
ck9wZXJhdGlvbi5jcHAgKi8sCiAJCQkJNDlFQ0VCNjQxNDk5NzkwRDAwQ0REM0E0IC8qIEZpbHRl
ck9wZXJhdGlvbi5oICovLAogCQkJCTQ5RUNFQjY1MTQ5OTc5MEQwMENERDNBNCAvKiBGaWx0ZXJP
cGVyYXRpb25zLmNwcCAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NGaWx0
ZXJJbWFnZVZhbHVlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NGaWx0ZXJJbWFnZVZhbHVl
LmNwcAppbmRleCBjNjdhMzViMDcxNWI3MjFlZDg5OTJkZWNkNDlmYThkMGI4MDY0NzcwLi5lMDdm
NTRhMzZkMzJhMjMzYjMwNzY2YzRkNzY2MjJlNjhlY2YwNDlmIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9jc3MvQ1NTRmlsdGVySW1hZ2VWYWx1ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
Y3NzL0NTU0ZpbHRlckltYWdlVmFsdWUuY3BwCkBAIC0xMTYsMjAgKzExNiwyMiBAQCBSZWZQdHI8
SW1hZ2U+IENTU0ZpbHRlckltYWdlVmFsdWU6OmltYWdlKFJlbmRlckVsZW1lbnQmIHJlbmRlcmVy
LCBjb25zdCBGbG9hdFNpegogCiAgICAgLy8gVHJhbnNmb3JtIEltYWdlIGludG8gSW1hZ2VCdWZm
ZXIuCiAgICAgLy8gRklYTUUgKDE0OTQyNCk6IFRoaXMgYnVmZmVyIHNob3VsZCBub3QgYmUgdW5j
b25kaXRpb25hbGx5IHVuYWNjZWxlcmF0ZWQuCi0gICAgYXV0byB0ZXh0dXJlID0gSW1hZ2VCdWZm
ZXI6OmNyZWF0ZShzaXplLCBSZW5kZXJpbmdNb2RlOjpVbmFjY2VsZXJhdGVkLCAxLCBEZXN0aW5h
dGlvbkNvbG9yU3BhY2U6OlNSR0IoKSwgUGl4ZWxGb3JtYXQ6OkJHUkE4KTsKLSAgICBpZiAoIXRl
eHR1cmUpCisgICAgYXV0byByZW5kZXJpbmdNb2RlID0gUmVuZGVyaW5nTW9kZTo6VW5hY2NlbGVy
YXRlZDsKKyAgICBhdXRvIHNvdXJjZUltYWdlID0gSW1hZ2VCdWZmZXI6OmNyZWF0ZShzaXplLCBy
ZW5kZXJpbmdNb2RlLCAxLCBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0IoKSwgUGl4ZWxGb3Jt
YXQ6OkJHUkE4KTsKKyAgICBpZiAoIXNvdXJjZUltYWdlKQogICAgICAgICByZXR1cm4gJkltYWdl
OjpudWxsSW1hZ2UoKTsKIAotICAgIGF1dG8gaW1hZ2VSZWN0ID0gRmxvYXRSZWN0IHsgeyB9LCBz
aXplIH07Ci0gICAgdGV4dHVyZS0+Y29udGV4dCgpLmRyYXdJbWFnZSgqaW1hZ2UsIGltYWdlUmVj
dCk7CisgICAgYXV0byBzb3VyY2VJbWFnZVJlY3QgPSBGbG9hdFJlY3QgeyB7IH0sIHNpemUgfTsK
KyAgICBzb3VyY2VJbWFnZS0+Y29udGV4dCgpLmRyYXdJbWFnZSgqaW1hZ2UsIHNvdXJjZUltYWdl
UmVjdCk7CiAKLSAgICBhdXRvIGNzc0ZpbHRlciA9IENTU0ZpbHRlcjo6Y3JlYXRlKCk7Ci0gICAg
Y3NzRmlsdGVyLT5zZXRTb3VyY2VJbWFnZShXVEZNb3ZlKHRleHR1cmUpKTsKLSAgICBjc3NGaWx0
ZXItPnNldFNvdXJjZUltYWdlUmVjdChpbWFnZVJlY3QpOwotICAgIGNzc0ZpbHRlci0+c2V0Rmls
dGVyUmVnaW9uKGltYWdlUmVjdCk7CisgICAgYXV0byBjc3NGaWx0ZXIgPSBDU1NGaWx0ZXI6OmNy
ZWF0ZShtX2ZpbHRlck9wZXJhdGlvbnMsIHJlbmRlcmluZ01vZGUpOworICAgIAorICAgIGNzc0Zp
bHRlci0+c2V0U291cmNlSW1hZ2VSZWN0KHNvdXJjZUltYWdlUmVjdCk7CiAgICAgaWYgKCFjc3NG
aWx0ZXItPmJ1aWxkKHJlbmRlcmVyLCBtX2ZpbHRlck9wZXJhdGlvbnMsIEZpbHRlckNvbnN1bWVy
OjpGaWx0ZXJGdW5jdGlvbikpCiAgICAgICAgIHJldHVybiAmSW1hZ2U6Om51bGxJbWFnZSgpOwot
ICAgIGNzc0ZpbHRlci0+YXBwbHkoKTsKKworICAgIGNzc0ZpbHRlci0+c2V0U291cmNlSW1hZ2Uo
V1RGTW92ZShzb3VyY2VJbWFnZSkpOworICAgIGNzc0ZpbHRlci0+YXBwbHlGaWx0ZXIoKTsKIAog
ICAgIGF1dG8qIG91dHB1dCA9IGNzc0ZpbHRlci0+b3V0cHV0KCk7CiAgICAgaWYgKCFvdXRwdXQp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb3JlaW1hZ2Uv
RmlsdGVyRWZmZWN0UmVuZGVyZXJDb3JlSW1hZ2UuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2NvcmVpbWFnZS9GaWx0ZXJFZmZlY3RSZW5kZXJlckNvcmVJbWFnZS5oCmluZGV4
IGU2YzhkZjRkNTViNDU2MTM1NDllM2FmNDkxOTJhMjZlMmMwNDRhZjcuLmU3YmM4NTMyNzJhYjRk
YWY3YzliODUwMTg2Y2M5OWE5NzQ0ZjkzNWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2NvcmVpbWFnZS9GaWx0ZXJFZmZlY3RSZW5kZXJlckNvcmVJbWFnZS5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvcmVpbWFnZS9GaWx0ZXJF
ZmZlY3RSZW5kZXJlckNvcmVJbWFnZS5oCkBAIC00Nyw3ICs0Nyw3IEBAIGNsYXNzIEZpbHRlckVm
ZmVjdFJlbmRlcmVyQ29yZUltYWdlIDogcHVibGljIEZpbHRlckVmZmVjdFJlbmRlcmVyIHsKIHB1
YmxpYzoKICAgICBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPEZpbHRlckVmZmVjdFJlbmRlcmVyQ29y
ZUltYWdlPiB0cnlDcmVhdGUoRmlsdGVyRWZmZWN0Jik7CiAgICAgUmV0YWluUHRyPENJQ29udGV4
dD4gc2hhcmVkQ0lDb250ZXh0KCk7Ci0gICAgdm9pZCBhcHBseUVmZmVjdHMoRmlsdGVyRWZmZWN0
JikgZmluYWw7CisgICAgdm9pZCBhcHBseUVmZmVjdHMoY29uc3QgRmlsdGVyJiwgRmlsdGVyRWZm
ZWN0JikgZmluYWw7CiAgICAgYm9vbCBoYXNSZXN1bHQoKSBjb25zdCBmaW5hbCB7IHJldHVybiBt
X291dHB1dEltYWdlOyB9CiAgICAgSW1hZ2VCdWZmZXIqIG91dHB1dCgpIGNvbnN0IGZpbmFsOwog
ICAgIEZsb2F0UmVjdCBkZXN0UmVjdChjb25zdCBGaWx0ZXJFZmZlY3QmKSBjb25zdCBmaW5hbDsK
QEAgLTU1LDEyICs1NSwxMiBAQCBwdWJsaWM6CiAgICAgRmlsdGVyRWZmZWN0UmVuZGVyZXJDb3Jl
SW1hZ2UoKTsKICAgICAKIHByaXZhdGU6Ci0gICAgUmV0YWluUHRyPENJSW1hZ2U+IGNvbm5lY3RD
SUZpbHRlcnMoRmlsdGVyRWZmZWN0Jik7CisgICAgUmV0YWluUHRyPENJSW1hZ2U+IGNvbm5lY3RD
SUZpbHRlcnMoY29uc3QgRmlsdGVyJiwgRmlsdGVyRWZmZWN0Jik7CiAgICAgdm9pZCByZW5kZXJU
b0ltYWdlQnVmZmVyKEZpbHRlckVmZmVjdCYpIGZpbmFsOwogICAgIHN0YXRpYyBib29sIHN1cHBv
cnRzQ29yZUltYWdlUmVuZGVyaW5nKEZpbHRlckVmZmVjdCYpOwogICAgIHN0YXRpYyBib29sIGNh
blJlbmRlclVzaW5nQ0lGaWx0ZXJzKEZpbHRlckVmZmVjdCYpOwogICAgIAotICAgIFJldGFpblB0
cjxDSUltYWdlPiBpbWFnZUZvclNvdXJjZUdyYXBoaWMoU291cmNlR3JhcGhpYyYpOworICAgIFJl
dGFpblB0cjxDSUltYWdlPiBpbWFnZUZvclNvdXJjZUdyYXBoaWMoY29uc3QgRmlsdGVyJik7CiAg
ICAgUmV0YWluUHRyPENJSW1hZ2U+IGltYWdlRm9yRkVDb2xvck1hdHJpeChjb25zdCBGRUNvbG9y
TWF0cml4JiwgY29uc3QgVmVjdG9yPFJldGFpblB0cjxDSUltYWdlPj4mKTsKICAgICBSZXRhaW5Q
dHI8Q0lJbWFnZT4gaW1hZ2VGb3JGRUNvbXBvbmVudFRyYW5zZmVyKGNvbnN0IEZFQ29tcG9uZW50
VHJhbnNmZXImLCBWZWN0b3I8UmV0YWluUHRyPENJSW1hZ2U+PiYpOwogICAgIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29yZWltYWdlL0ZpbHRlckVmZmVj
dFJlbmRlcmVyQ29yZUltYWdlLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y29yZWltYWdlL0ZpbHRlckVmZmVjdFJlbmRlcmVyQ29yZUltYWdlLm1tCmluZGV4IDk3ZTExMzdi
MjlkNzFjMmI1NDQxNTczMDY3MjQwMGI4MjQyOGIzNjEuLjhiNDAwMTc3MDBlMTBjNjg3YmE3MDZl
NTU5NmI4YzBiMjMwYmEyNGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2NvcmVpbWFnZS9GaWx0ZXJFZmZlY3RSZW5kZXJlckNvcmVJbWFnZS5tbQorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb3JlaW1hZ2UvRmlsdGVyRWZmZWN0UmVu
ZGVyZXJDb3JlSW1hZ2UubW0KQEAgLTcyLDExICs3MiwxMSBAQCBzdGF0aWMgYm9vbCBpc051bGxP
ckxpbmVhckNvbXBvbmVudFRyYW5zZmVyRnVuY3Rpb24oY29uc3QgRkVDb21wb25lbnRUcmFuc2Zl
ciYgZQogYm9vbCBGaWx0ZXJFZmZlY3RSZW5kZXJlckNvcmVJbWFnZTo6c3VwcG9ydHNDb3JlSW1h
Z2VSZW5kZXJpbmcoRmlsdGVyRWZmZWN0JiBlZmZlY3QpCiB7CiAgICAgLy8gRklYTUU6IGNoYW5n
ZSByZXR1cm4gdmFsdWUgdG8gdHJ1ZSBvbmNlIHRoZXkgYXJlIGltcGxlbWVudGVkCi0gICAgc3dp
dGNoIChlZmZlY3QuZmlsdGVyRWZmZWN0Q2xhc3NUeXBlKCkpIHsKKyAgICBzd2l0Y2ggKGVmZmVj
dC5maWx0ZXJUeXBlKCkpIHsKICAgICBjYXNlIEZpbHRlckVmZmVjdDo6VHlwZTo6U291cmNlR3Jh
cGhpYzoKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgICAgICAKLSAgICBjYXNlIEZpbHRl
ckVmZmVjdDo6VHlwZTo6Q29sb3JNYXRyaXg6IHsKKyAgICBjYXNlIEZpbHRlckVmZmVjdDo6VHlw
ZTo6RkVDb2xvck1hdHJpeDogewogICAgICAgICBzd2l0Y2ggKGRvd25jYXN0PEZFQ29sb3JNYXRy
aXg+KGVmZmVjdCkudHlwZSgpKSB7CiAgICAgICAgIGNhc2UgRkVDT0xPUk1BVFJJWF9UWVBFX1VO
S05PV046CiAgICAgICAgIGNhc2UgRkVDT0xPUk1BVFJJWF9UWVBFX0xVTUlOQU5DRVRPQUxQSEE6
CkBAIC04OCw5MCArODgsNTYgQEAgYm9vbCBGaWx0ZXJFZmZlY3RSZW5kZXJlckNvcmVJbWFnZTo6
c3VwcG9ydHNDb3JlSW1hZ2VSZW5kZXJpbmcoRmlsdGVyRWZmZWN0JiBlZmYKICAgICAgICAgfQog
ICAgIH0KIAotICAgIGNhc2UgRmlsdGVyRWZmZWN0OjpUeXBlOjpDb21wb25lbnRUcmFuc2ZlcjoK
KyAgICBjYXNlIEZpbHRlckVmZmVjdDo6VHlwZTo6RkVDb21wb25lbnRUcmFuc2ZlcjoKICAgICAg
ICAgcmV0dXJuIGlzTnVsbE9yTGluZWFyQ29tcG9uZW50VHJhbnNmZXJGdW5jdGlvbihkb3duY2Fz
dDxGRUNvbXBvbmVudFRyYW5zZmVyPihlZmZlY3QpKTsKIAotICAgIGNhc2UgRmlsdGVyRWZmZWN0
OjpUeXBlOjpCbGVuZDoKLSAgICBjYXNlIEZpbHRlckVmZmVjdDo6VHlwZTo6Q29tcG9zaXRlOgot
ICAgIGNhc2UgRmlsdGVyRWZmZWN0OjpUeXBlOjpDb252b2x2ZU1hdHJpeDoKLSAgICBjYXNlIEZp
bHRlckVmZmVjdDo6VHlwZTo6RGlmZnVzZUxpZ2h0aW5nOgotICAgIGNhc2UgRmlsdGVyRWZmZWN0
OjpUeXBlOjpEaXNwbGFjZW1lbnRNYXA6Ci0gICAgY2FzZSBGaWx0ZXJFZmZlY3Q6OlR5cGU6OkRy
b3BTaGFkb3c6Ci0gICAgY2FzZSBGaWx0ZXJFZmZlY3Q6OlR5cGU6OkZsb29kOgotICAgIGNhc2Ug
RmlsdGVyRWZmZWN0OjpUeXBlOjpHYXVzc2lhbkJsdXI6Ci0gICAgY2FzZSBGaWx0ZXJFZmZlY3Q6
OlR5cGU6OkltYWdlOgotICAgIGNhc2UgRmlsdGVyRWZmZWN0OjpUeXBlOjpMaWdodGluZzoKLSAg
ICBjYXNlIEZpbHRlckVmZmVjdDo6VHlwZTo6TWVyZ2U6Ci0gICAgY2FzZSBGaWx0ZXJFZmZlY3Q6
OlR5cGU6Ok1vcnBob2xvZ3k6Ci0gICAgY2FzZSBGaWx0ZXJFZmZlY3Q6OlR5cGU6Ok9mZnNldDoK
LSAgICBjYXNlIEZpbHRlckVmZmVjdDo6VHlwZTo6U3BlY3VsYXJMaWdodGluZzoKLSAgICBjYXNl
IEZpbHRlckVmZmVjdDo6VHlwZTo6VGlsZToKLSAgICBjYXNlIEZpbHRlckVmZmVjdDo6VHlwZTo6
VHVyYnVsZW5jZToKLSAgICBjYXNlIEZpbHRlckVmZmVjdDo6VHlwZTo6U291cmNlQWxwaGE6Cisg
ICAgZGVmYXVsdDoKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KICAgICByZXR1cm4gZmFs
c2U7CiB9CiAKLXZvaWQgRmlsdGVyRWZmZWN0UmVuZGVyZXJDb3JlSW1hZ2U6OmFwcGx5RWZmZWN0
cyhGaWx0ZXJFZmZlY3QmIGxhc3RFZmZlY3QpCit2b2lkIEZpbHRlckVmZmVjdFJlbmRlcmVyQ29y
ZUltYWdlOjphcHBseUVmZmVjdHMoY29uc3QgRmlsdGVyJiBmaWx0ZXIsIEZpbHRlckVmZmVjdCYg
bGFzdEVmZmVjdCkKIHsKLSAgICBtX291dHB1dEltYWdlID0gY29ubmVjdENJRmlsdGVycyhsYXN0
RWZmZWN0KTsKKyAgICBtX291dHB1dEltYWdlID0gY29ubmVjdENJRmlsdGVycyhmaWx0ZXIsIGxh
c3RFZmZlY3QpOwogICAgIGlmICghbV9vdXRwdXRJbWFnZSkKICAgICAgICAgcmV0dXJuOwogICAg
IHJlbmRlclRvSW1hZ2VCdWZmZXIobGFzdEVmZmVjdCk7CiB9CiAKLVJldGFpblB0cjxDSUltYWdl
PiBGaWx0ZXJFZmZlY3RSZW5kZXJlckNvcmVJbWFnZTo6Y29ubmVjdENJRmlsdGVycyhGaWx0ZXJF
ZmZlY3QmIGVmZmVjdCkKK1JldGFpblB0cjxDSUltYWdlPiBGaWx0ZXJFZmZlY3RSZW5kZXJlckNv
cmVJbWFnZTo6Y29ubmVjdENJRmlsdGVycyhjb25zdCBGaWx0ZXImIGZpbHRlciwgRmlsdGVyRWZm
ZWN0JiBlZmZlY3QpCiB7CiAgICAgVmVjdG9yPFJldGFpblB0cjxDSUltYWdlPj4gaW5wdXRJbWFn
ZXM7CiAgICAgCiAgICAgZm9yIChhdXRvIGluIDogZWZmZWN0LmlucHV0RWZmZWN0cygpKSB7Ci0g
ICAgICAgIGF1dG8gaW5wdXRJbWFnZSA9IGNvbm5lY3RDSUZpbHRlcnMoKmluKTsKKyAgICAgICAg
YXV0byBpbnB1dEltYWdlID0gY29ubmVjdENJRmlsdGVycyhmaWx0ZXIsICppbik7CiAgICAgICAg
IGlmICghaW5wdXRJbWFnZSkKICAgICAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgICAgICBp
bnB1dEltYWdlcy5hcHBlbmQoaW5wdXRJbWFnZSk7CiAgICAgfQotICAgIGVmZmVjdC5kZXRlcm1p
bmVBYnNvbHV0ZVBhaW50UmVjdCgpOworICAgIGVmZmVjdC5kZXRlcm1pbmVBYnNvbHV0ZVBhaW50
UmVjdChmaWx0ZXIpOwogICAgIGVmZmVjdC5zZXRSZXN1bHRDb2xvclNwYWNlKGVmZmVjdC5vcGVy
YXRpbmdDb2xvclNwYWNlKCkpOwogICAgIAogICAgIGlmIChlZmZlY3QuYWJzb2x1dGVQYWludFJl
Y3QoKS5pc0VtcHR5KCkgfHwgSW1hZ2VCdWZmZXI6OnNpemVOZWVkc0NsYW1waW5nKGVmZmVjdC5h
YnNvbHV0ZVBhaW50UmVjdCgpLnNpemUoKSkpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogICAg
IAotICAgIHN3aXRjaCAoZWZmZWN0LmZpbHRlckVmZmVjdENsYXNzVHlwZSgpKSB7CisgICAgc3dp
dGNoIChlZmZlY3QuZmlsdGVyVHlwZSgpKSB7CiAgICAgY2FzZSBGaWx0ZXJFZmZlY3Q6OlR5cGU6
OlNvdXJjZUdyYXBoaWM6Ci0gICAgICAgIHJldHVybiBpbWFnZUZvclNvdXJjZUdyYXBoaWMoZG93
bmNhc3Q8U291cmNlR3JhcGhpYz4oZWZmZWN0KSk7Ci0gICAgY2FzZSBGaWx0ZXJFZmZlY3Q6OlR5
cGU6OkNvbG9yTWF0cml4OgorICAgICAgICByZXR1cm4gaW1hZ2VGb3JTb3VyY2VHcmFwaGljKGZp
bHRlcik7CisgICAgY2FzZSBGaWx0ZXJFZmZlY3Q6OlR5cGU6OkZFQ29sb3JNYXRyaXg6CiAgICAg
ICAgIHJldHVybiBpbWFnZUZvckZFQ29sb3JNYXRyaXgoZG93bmNhc3Q8RkVDb2xvck1hdHJpeD4o
ZWZmZWN0KSwgaW5wdXRJbWFnZXMpOwotICAgIGNhc2UgRmlsdGVyRWZmZWN0OjpUeXBlOjpDb21w
b25lbnRUcmFuc2ZlcjoKKyAgICBjYXNlIEZpbHRlckVmZmVjdDo6VHlwZTo6RkVDb21wb25lbnRU
cmFuc2ZlcjoKICAgICAgICAgcmV0dXJuIGltYWdlRm9yRkVDb21wb25lbnRUcmFuc2Zlcihkb3du
Y2FzdDxGRUNvbXBvbmVudFRyYW5zZmVyPihlZmZlY3QpLCBpbnB1dEltYWdlcyk7CiAKLSAgICAv
LyBGSVhNRTogSW1wbGVtZW50IHRob3NlIGZpbHRlcnMgdXNpbmcgQ0lGaWx0ZXIgc28gdGhhdCB0
aGUgZnVuY3Rpb24gcmV0dXJucyBhIHZhbGlkIENJSW1hZ2UKLSAgICBjYXNlIEZpbHRlckVmZmVj
dDo6VHlwZTo6QmxlbmQ6Ci0gICAgY2FzZSBGaWx0ZXJFZmZlY3Q6OlR5cGU6OkNvbXBvc2l0ZToK
LSAgICBjYXNlIEZpbHRlckVmZmVjdDo6VHlwZTo6Q29udm9sdmVNYXRyaXg6Ci0gICAgY2FzZSBG
aWx0ZXJFZmZlY3Q6OlR5cGU6OkRpZmZ1c2VMaWdodGluZzoKLSAgICBjYXNlIEZpbHRlckVmZmVj
dDo6VHlwZTo6RGlzcGxhY2VtZW50TWFwOgotICAgIGNhc2UgRmlsdGVyRWZmZWN0OjpUeXBlOjpE
cm9wU2hhZG93OgotICAgIGNhc2UgRmlsdGVyRWZmZWN0OjpUeXBlOjpGbG9vZDoKLSAgICBjYXNl
IEZpbHRlckVmZmVjdDo6VHlwZTo6R2F1c3NpYW5CbHVyOgotICAgIGNhc2UgRmlsdGVyRWZmZWN0
OjpUeXBlOjpJbWFnZToKLSAgICBjYXNlIEZpbHRlckVmZmVjdDo6VHlwZTo6TGlnaHRpbmc6Ci0g
ICAgY2FzZSBGaWx0ZXJFZmZlY3Q6OlR5cGU6Ok1lcmdlOgotICAgIGNhc2UgRmlsdGVyRWZmZWN0
OjpUeXBlOjpNb3JwaG9sb2d5OgotICAgIGNhc2UgRmlsdGVyRWZmZWN0OjpUeXBlOjpPZmZzZXQ6
Ci0gICAgY2FzZSBGaWx0ZXJFZmZlY3Q6OlR5cGU6OlNwZWN1bGFyTGlnaHRpbmc6Ci0gICAgY2Fz
ZSBGaWx0ZXJFZmZlY3Q6OlR5cGU6OlRpbGU6Ci0gICAgY2FzZSBGaWx0ZXJFZmZlY3Q6OlR5cGU6
OlR1cmJ1bGVuY2U6Ci0gICAgY2FzZSBGaWx0ZXJFZmZlY3Q6OlR5cGU6OlNvdXJjZUFscGhhOgog
ICAgIGRlZmF1bHQ6CiAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIH0KICAgICByZXR1cm4g
bnVsbHB0cjsKIH0KIAotUmV0YWluUHRyPENJSW1hZ2U+IEZpbHRlckVmZmVjdFJlbmRlcmVyQ29y
ZUltYWdlOjppbWFnZUZvclNvdXJjZUdyYXBoaWMoU291cmNlR3JhcGhpYyYgZWZmZWN0KQorUmV0
YWluUHRyPENJSW1hZ2U+IEZpbHRlckVmZmVjdFJlbmRlcmVyQ29yZUltYWdlOjppbWFnZUZvclNv
dXJjZUdyYXBoaWMoY29uc3QgRmlsdGVyJiBmaWx0ZXIpCiB7Ci0gICAgSW1hZ2VCdWZmZXIqIHNv
dXJjZUltYWdlID0gZWZmZWN0LmZpbHRlcigpLnNvdXJjZUltYWdlKCk7CisgICAgSW1hZ2VCdWZm
ZXIqIHNvdXJjZUltYWdlID0gZmlsdGVyLnNvdXJjZUltYWdlKCk7CiAgICAgaWYgKCFzb3VyY2VJ
bWFnZSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgCkBAIC0yNzYsNyArMjQyLDcgQEAg
SW1hZ2VCdWZmZXIqIEZpbHRlckVmZmVjdFJlbmRlcmVyQ29yZUltYWdlOjpvdXRwdXQoKSBjb25z
dAogdm9pZCBGaWx0ZXJFZmZlY3RSZW5kZXJlckNvcmVJbWFnZTo6cmVuZGVyVG9JbWFnZUJ1ZmZl
cihGaWx0ZXJFZmZlY3QmIGxhc3RFZmZlY3QpCiB7CiAgICAgRmxvYXRTaXplIGNsYW1wZWRTaXpl
ID0gSW1hZ2VCdWZmZXI6OmNsYW1wZWRTaXplKGxhc3RFZmZlY3QuYWJzb2x1dGVQYWludFJlY3Qo
KS5zaXplKCkpOwotICAgIG1fb3V0cHV0SW1hZ2VCdWZmZXIgPSBJT1N1cmZhY2VJbWFnZUJ1ZmZl
cjo6Y3JlYXRlKGNsYW1wZWRTaXplLCBsYXN0RWZmZWN0LmZpbHRlcigpLmZpbHRlclNjYWxlKCks
IGxhc3RFZmZlY3QucmVzdWx0Q29sb3JTcGFjZSgpLCBQaXhlbEZvcm1hdDo6QkdSQTgpOworICAg
IG1fb3V0cHV0SW1hZ2VCdWZmZXIgPSBJT1N1cmZhY2VJbWFnZUJ1ZmZlcjo6Y3JlYXRlKGNsYW1w
ZWRTaXplLCAxLCBsYXN0RWZmZWN0LnJlc3VsdENvbG9yU3BhY2UoKSwgUGl4ZWxGb3JtYXQ6OkJH
UkE4KTsKICAgICBpZiAoIW1fb3V0cHV0SW1hZ2VCdWZmZXIpIHsKICAgICAgICAgY2xlYXJSZXN1
bHQoKTsKICAgICAgICAgcmV0dXJuOwpAQCAtMjg4LDcgKzI1NCw2IEBAIHZvaWQgRmlsdGVyRWZm
ZWN0UmVuZGVyZXJDb3JlSW1hZ2U6OnJlbmRlclRvSW1hZ2VCdWZmZXIoRmlsdGVyRWZmZWN0JiBs
YXN0RWZmZWN0CiBGbG9hdFJlY3QgRmlsdGVyRWZmZWN0UmVuZGVyZXJDb3JlSW1hZ2U6OmRlc3RS
ZWN0KGNvbnN0IEZpbHRlckVmZmVjdCYgbGFzdEVmZmVjdCkgY29uc3QKIHsKICAgICBJbnRTaXpl
IGRlc3RTaXplID0gbGFzdEVmZmVjdC5hYnNvbHV0ZVBhaW50UmVjdCgpLnNpemUoKTsKLSAgICBk
ZXN0U2l6ZS5zY2FsZShsYXN0RWZmZWN0LmZpbHRlcigpLmZpbHRlclNjYWxlKCkpOwogICAgIEZs
b2F0UmVjdCBkZXN0UmVjdCA9IEZsb2F0UmVjdChGbG9hdFBvaW50KCksIGRlc3RTaXplKTsKICAg
ICByZXR1cm4gZGVzdFJlY3Q7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jcHUvYXJtL2ZpbHRlcnMvRkVCbGVuZE5FT04uaCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2NwdS9hcm0vZmlsdGVycy9GRUJsZW5kTkVPTi5oCmluZGV4IDI2
MTEwY2RmYjBiYjZjZjQ5MDQ1ODM4Nzc4N2FjMTBmYTE3MWNmMTguLjk4NzFhMDVkZTRjM2FiNmY3
OTYxNDUxNjg1MTgzZGU3N2QwZDYzOWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2NwdS9hcm0vZmlsdGVycy9GRUJsZW5kTkVPTi5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NwdS9hcm0vZmlsdGVycy9GRUJsZW5kTkVPTi5oCkBA
IC0xMDcsNyArMTA3LDcgQEAgcHVibGljOgogICAgIH0KIH07CiAKLXZvaWQgRkVCbGVuZDo6cGxh
dGZvcm1BcHBseVNvZnR3YXJlKCkKK3ZvaWQgRkVCbGVuZDo6cGxhdGZvcm1BcHBseVNvZnR3YXJl
KGNvbnN0IEZpbHRlciYpCiB7CiAgICAgRmlsdGVyRWZmZWN0KiBpbiA9IGlucHV0RWZmZWN0KDAp
OwogICAgIEZpbHRlckVmZmVjdCogaW4yID0gaW5wdXRFZmZlY3QoMSk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFQmxlbmQuY3BwIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRUJsZW5kLmNwcAppbmRleCA1
YWM3ZjQ5MGQ0Y2RhNTMzYTQxZjVjM2Q4NTQ1MzJjMThhZGNkYjY2Li5mYmQ1OTU1YmFmOTA2ODZj
MDcwNTMxM2RiNjRmYjdhOTE4MzM0NTg0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFQmxlbmQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVCbGVuZC5jcHAKQEAgLTM0LDE1ICszNCwxNSBAQAog
CiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLUZFQmxlbmQ6OkZFQmxlbmQoRmlsdGVyJiBmaWx0ZXIs
IEJsZW5kTW9kZSBtb2RlKQotICAgIDogRmlsdGVyRWZmZWN0KGZpbHRlciwgVHlwZTo6QmxlbmQp
CitGRUJsZW5kOjpGRUJsZW5kKEJsZW5kTW9kZSBtb2RlKQorICAgIDogRmlsdGVyRWZmZWN0KEZp
bHRlckVmZmVjdDo6VHlwZTo6RkVCbGVuZCkKICAgICAsIG1fbW9kZShtb2RlKQogewogfQogCi1S
ZWY8RkVCbGVuZD4gRkVCbGVuZDo6Y3JlYXRlKEZpbHRlciYgZmlsdGVyLCBCbGVuZE1vZGUgbW9k
ZSkKK1JlZjxGRUJsZW5kPiBGRUJsZW5kOjpjcmVhdGUoQmxlbmRNb2RlIG1vZGUpCiB7Ci0gICAg
cmV0dXJuIGFkb3B0UmVmKCpuZXcgRkVCbGVuZChmaWx0ZXIsIG1vZGUpKTsKKyAgICByZXR1cm4g
YWRvcHRSZWYoKm5ldyBGRUJsZW5kKG1vZGUpKTsKIH0KIAogYm9vbCBGRUJsZW5kOjpzZXRCbGVu
ZE1vZGUoQmxlbmRNb2RlIG1vZGUpCkBAIC01NCw3ICs1NCw3IEBAIGJvb2wgRkVCbGVuZDo6c2V0
QmxlbmRNb2RlKEJsZW5kTW9kZSBtb2RlKQogfQogCiAjaWYgIUhBVkUoQVJNX05FT05fSU5UUklO
U0lDUykKLXZvaWQgRkVCbGVuZDo6cGxhdGZvcm1BcHBseVNvZnR3YXJlKCkKK3ZvaWQgRkVCbGVu
ZDo6cGxhdGZvcm1BcHBseVNvZnR3YXJlKGNvbnN0IEZpbHRlciYpCiB7CiAgICAgRmlsdGVyRWZm
ZWN0KiBpbiA9IGlucHV0RWZmZWN0KDApOwogICAgIEZpbHRlckVmZmVjdCogaW4yID0gaW5wdXRF
ZmZlY3QoMSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9m
aWx0ZXJzL0ZFQmxlbmQuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRl
cnMvRkVCbGVuZC5oCmluZGV4IDcwZTg0MDdiZjVjMjAwZDQ1MjE2YjhmOWMwODUxN2I1MDc5ZTc5
NjYuLmVlZDMxOGU4YzM1YjBjN2U2ZTE2MmY2M2JlYmMwZDJmNGJiMGRiYmEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVCbGVuZC5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVCbGVuZC5oCkBAIC0y
MywyMiArMjMsMjEgQEAKICNwcmFnbWEgb25jZQogCiAjaW5jbHVkZSAiRmlsdGVyRWZmZWN0Lmgi
Ci0KLSNpbmNsdWRlICJGaWx0ZXIuaCIKKyNpbmNsdWRlICJHcmFwaGljc1R5cGVzLmgiCiAKIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgRkVCbGVuZCA6IHB1YmxpYyBGaWx0ZXJFZmZlY3Qg
ewogcHVibGljOgotICAgIHN0YXRpYyBSZWY8RkVCbGVuZD4gY3JlYXRlKEZpbHRlciYsIEJsZW5k
TW9kZSk7CisgICAgc3RhdGljIFJlZjxGRUJsZW5kPiBjcmVhdGUoQmxlbmRNb2RlKTsKIAogICAg
IEJsZW5kTW9kZSBibGVuZE1vZGUoKSBjb25zdCB7IHJldHVybiBtX21vZGU7IH0KICAgICBib29s
IHNldEJsZW5kTW9kZShCbGVuZE1vZGUpOwogCiBwcml2YXRlOgotICAgIGNvbnN0IGNoYXIqIGZp
bHRlck5hbWUoKSBjb25zdCBmaW5hbCB7IHJldHVybiAiRkVCbGVuZCI7IH0KKyAgICBGRUJsZW5k
KEJsZW5kTW9kZSk7CiAKLSAgICB2b2lkIHBsYXRmb3JtQXBwbHlTb2Z0d2FyZSgpIG92ZXJyaWRl
OworICAgIHZvaWQgcGxhdGZvcm1BcHBseVNvZnR3YXJlKGNvbnN0IEZpbHRlciYpIG92ZXJyaWRl
OwogICAgIHZvaWQgcGxhdGZvcm1BcHBseUdlbmVyaWModW5zaWduZWQgY2hhciogc3JjUGl4ZWxB
cnJheUEsIHVuc2lnbmVkIGNoYXIqIHNyY1BpeGVsQXJyYXlCLCB1bnNpZ25lZCBjaGFyKiBkc3RQ
aXhlbEFycmF5LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgY29sb3JBcnJh
eUxlbmd0aCk7CiAgICAgdm9pZCBwbGF0Zm9ybUFwcGx5TkVPTih1bnNpZ25lZCBjaGFyKiBzcmNQ
aXhlbEFycmF5QSwgdW5zaWduZWQgY2hhciogc3JjUGl4ZWxBcnJheUIsIHVuc2lnbmVkIGNoYXIq
IGRzdFBpeGVsQXJyYXksCkBAIC00NiwxMCArNDUsOSBAQCBwcml2YXRlOgogCiAgICAgV1RGOjpU
ZXh0U3RyZWFtJiBleHRlcm5hbFJlcHJlc2VudGF0aW9uKFdURjo6VGV4dFN0cmVhbSYsIFJlcHJl
c2VudGF0aW9uVHlwZSkgY29uc3Qgb3ZlcnJpZGU7CiAKLSAgICBGRUJsZW5kKEZpbHRlciYsIEJs
ZW5kTW9kZSk7Ci0KICAgICBCbGVuZE1vZGUgbV9tb2RlOwogfTsKIAogfSAvLyBuYW1lc3BhY2Ug
V2ViQ29yZQogCitTUEVDSUFMSVpFX1RZUEVfVFJBSVRTX0ZJTFRFUl9FRkZFQ1QoRkVCbGVuZCkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVD
b2xvck1hdHJpeC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJz
L0ZFQ29sb3JNYXRyaXguY3BwCmluZGV4IDE2NDIyZDZkYzViNTdlYzZmNzQ3YTQyMTBjMjg1NDMz
MmJhMWQzZTUuLjU1Y2Q2YTE0MTA4MDBhMzhhNGRkZWQwOWJhZTc1NjAzY2M1ZTY3OWIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVDb2xvck1h
dHJpeC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9G
RUNvbG9yTWF0cml4LmNwcApAQCAtMzUsMTYgKzM1LDE2IEBACiAKIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIAotRkVDb2xvck1hdHJpeDo6RkVDb2xvck1hdHJpeChGaWx0ZXImIGZpbHRlciwgQ29sb3JN
YXRyaXhUeXBlIHR5cGUsIFZlY3RvcjxmbG9hdD4mJiB2YWx1ZXMpCi0gICAgOiBGaWx0ZXJFZmZl
Y3QoZmlsdGVyLCBUeXBlOjpDb2xvck1hdHJpeCkKK0ZFQ29sb3JNYXRyaXg6OkZFQ29sb3JNYXRy
aXgoQ29sb3JNYXRyaXhUeXBlIHR5cGUsIFZlY3RvcjxmbG9hdD4mJiB2YWx1ZXMpCisgICAgOiBG
aWx0ZXJFZmZlY3QoRmlsdGVyRWZmZWN0OjpUeXBlOjpGRUNvbG9yTWF0cml4KQogICAgICwgbV90
eXBlKHR5cGUpCiAgICAgLCBtX3ZhbHVlcyhXVEZNb3ZlKHZhbHVlcykpCiB7CiB9CiAKLVJlZjxG
RUNvbG9yTWF0cml4PiBGRUNvbG9yTWF0cml4OjpjcmVhdGUoRmlsdGVyJiBmaWx0ZXIsIENvbG9y
TWF0cml4VHlwZSB0eXBlLCBWZWN0b3I8ZmxvYXQ+JiYgdmFsdWVzKQorUmVmPEZFQ29sb3JNYXRy
aXg+IEZFQ29sb3JNYXRyaXg6OmNyZWF0ZShDb2xvck1hdHJpeFR5cGUgdHlwZSwgVmVjdG9yPGZs
b2F0PiYmIHZhbHVlcykKIHsKLSAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBGRUNvbG9yTWF0cml4
KGZpbHRlciwgdHlwZSwgV1RGTW92ZSh2YWx1ZXMpKSk7CisgICAgcmV0dXJuIGFkb3B0UmVmKCpu
ZXcgRkVDb2xvck1hdHJpeCh0eXBlLCBXVEZNb3ZlKHZhbHVlcykpKTsKIH0KIAogYm9vbCBGRUNv
bG9yTWF0cml4OjpzZXRUeXBlKENvbG9yTWF0cml4VHlwZSB0eXBlKQpAQCAtMjczLDcgKzI3Myw3
IEBAIHZvaWQgZWZmZWN0VHlwZShVaW50OENsYW1wZWRBcnJheSYgcGl4ZWxBcnJheSwgY29uc3Qg
VmVjdG9yPGZsb2F0PiYgdmFsdWVzLCBJbnRTCiAgICAgfQogfQogCi12b2lkIEZFQ29sb3JNYXRy
aXg6OnBsYXRmb3JtQXBwbHlTb2Z0d2FyZSgpCit2b2lkIEZFQ29sb3JNYXRyaXg6OnBsYXRmb3Jt
QXBwbHlTb2Z0d2FyZShjb25zdCBGaWx0ZXImKQogewogICAgIEZpbHRlckVmZmVjdCogaW4gPSBp
bnB1dEVmZmVjdCgwKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvZmlsdGVycy9GRUNvbG9yTWF0cml4LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9maWx0ZXJzL0ZFQ29sb3JNYXRyaXguaAppbmRleCAyOWU0MWE4YWVkMWU0ZjBiNTM5
NzAzYWM0ZGI1NTI0ZWZhNGMxMjNmLi4yMjlmZjBiOGM0NGY1MWMwZWYwNTRlNWVhMmE0MjQ2ZTIy
N2Q4N2QzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0
ZXJzL0ZFQ29sb3JNYXRyaXguaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9maWx0ZXJzL0ZFQ29sb3JNYXRyaXguaApAQCAtMjIsOCArMjIsNiBAQAogI3ByYWdtYSBvbmNl
CiAKICNpbmNsdWRlICJGaWx0ZXJFZmZlY3QuaCIKLQotI2luY2x1ZGUgIkZpbHRlci5oIgogI2lu
Y2x1ZGUgPHd0Zi9WZWN0b3IuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtMzgsNyArMzYs
NyBAQCBlbnVtIENvbG9yTWF0cml4VHlwZSB7CiAKIGNsYXNzIEZFQ29sb3JNYXRyaXggOiBwdWJs
aWMgRmlsdGVyRWZmZWN0IHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUmVmPEZFQ29sb3JNYXRyaXg+
IGNyZWF0ZShGaWx0ZXImLCBDb2xvck1hdHJpeFR5cGUsIFZlY3RvcjxmbG9hdD4mJik7CisgICAg
c3RhdGljIFJlZjxGRUNvbG9yTWF0cml4PiBjcmVhdGUoQ29sb3JNYXRyaXhUeXBlLCBWZWN0b3I8
ZmxvYXQ+JiYpOwogCiAgICAgQ29sb3JNYXRyaXhUeXBlIHR5cGUoKSBjb25zdCB7IHJldHVybiBt
X3R5cGU7IH0KICAgICBib29sIHNldFR5cGUoQ29sb3JNYXRyaXhUeXBlKTsKQEAgLTUwLDExICs0
OCw5IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgaW5saW5lIHZvaWQgY2FsY3VsYXRlSHVlUm90YXRl
Q29tcG9uZW50cyhmbG9hdCogY29tcG9uZW50cywgZmxvYXQgdmFsdWUpOwogCiBwcml2YXRlOgot
ICAgIEZFQ29sb3JNYXRyaXgoRmlsdGVyJiwgQ29sb3JNYXRyaXhUeXBlLCBWZWN0b3I8ZmxvYXQ+
JiYpOwotCi0gICAgY29uc3QgY2hhciogZmlsdGVyTmFtZSgpIGNvbnN0IGZpbmFsIHsgcmV0dXJu
ICJGRUNvbG9yTWF0cml4IjsgfQorICAgIEZFQ29sb3JNYXRyaXgoQ29sb3JNYXRyaXhUeXBlLCBW
ZWN0b3I8ZmxvYXQ+JiYpOwogCi0gICAgdm9pZCBwbGF0Zm9ybUFwcGx5U29mdHdhcmUoKSBvdmVy
cmlkZTsKKyAgICB2b2lkIHBsYXRmb3JtQXBwbHlTb2Z0d2FyZShjb25zdCBGaWx0ZXImKSBvdmVy
cmlkZTsKIAogICAgIFdURjo6VGV4dFN0cmVhbSYgZXh0ZXJuYWxSZXByZXNlbnRhdGlvbihXVEY6
OlRleHRTdHJlYW0mLCBSZXByZXNlbnRhdGlvblR5cGUpIGNvbnN0IG92ZXJyaWRlOwogCkBAIC05
Myw3ICs4OSw0IEBAIGlubGluZSB2b2lkIEZFQ29sb3JNYXRyaXg6OmNhbGN1bGF0ZUh1ZVJvdGF0
ZUNvbXBvbmVudHMoZmxvYXQqIGNvbXBvbmVudHMsIGZsb2F0CiAKIH0gLy8gbmFtZXNwYWNlIFdl
YkNvcmUKIAotU1BFQ0lBTElaRV9UWVBFX1RSQUlUU19CRUdJTihXZWJDb3JlOjpGRUNvbG9yTWF0
cml4KQotICAgIHN0YXRpYyBib29sIGlzVHlwZShjb25zdCBXZWJDb3JlOjpGaWx0ZXJFZmZlY3Qm
IGVmZmVjdCkgeyByZXR1cm4gZWZmZWN0LmZpbHRlckVmZmVjdENsYXNzVHlwZSgpID09IFdlYkNv
cmU6OkZpbHRlckVmZmVjdDo6VHlwZTo6Q29sb3JNYXRyaXg7IH0KLVNQRUNJQUxJWkVfVFlQRV9U
UkFJVFNfRU5EKCkKLQorU1BFQ0lBTElaRV9UWVBFX1RSQUlUU19GSUxURVJfRUZGRUNUKEZFQ29s
b3JNYXRyaXgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9m
aWx0ZXJzL0ZFQ29tcG9uZW50VHJhbnNmZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvZmlsdGVycy9GRUNvbXBvbmVudFRyYW5zZmVyLmNwcAppbmRleCA4NDdlYTU4ZjVm
OWIwMzg2NmQ5ZWFjNTdmMTBjY2Y1NzQwMmY5ZTYzLi45OGY2YzEyNjg0NWJkZTI3NzVkNWEzNDNh
YWU3MDQzODQwMzVjM2FjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9maWx0ZXJzL0ZFQ29tcG9uZW50VHJhbnNmZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVDb21wb25lbnRUcmFuc2Zlci5jcHAKQEAgLTMz
LDkgKzMzLDggQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1GRUNvbXBvbmVudFRyYW5zZmVy
OjpGRUNvbXBvbmVudFRyYW5zZmVyKEZpbHRlciYgZmlsdGVyLCBjb25zdCBDb21wb25lbnRUcmFu
c2ZlckZ1bmN0aW9uJiByZWRGdW5jdGlvbiwKLSAgICBjb25zdCBDb21wb25lbnRUcmFuc2ZlckZ1
bmN0aW9uJiBncmVlbkZ1bmN0aW9uLCBjb25zdCBDb21wb25lbnRUcmFuc2ZlckZ1bmN0aW9uJiBi
bHVlRnVuY3Rpb24sIGNvbnN0IENvbXBvbmVudFRyYW5zZmVyRnVuY3Rpb24mIGFscGhhRnVuY3Rp
b24pCi0gICAgOiBGaWx0ZXJFZmZlY3QoZmlsdGVyLCBUeXBlOjpDb21wb25lbnRUcmFuc2ZlcikK
K0ZFQ29tcG9uZW50VHJhbnNmZXI6OkZFQ29tcG9uZW50VHJhbnNmZXIoY29uc3QgQ29tcG9uZW50
VHJhbnNmZXJGdW5jdGlvbiYgcmVkRnVuY3Rpb24sIGNvbnN0IENvbXBvbmVudFRyYW5zZmVyRnVu
Y3Rpb24mIGdyZWVuRnVuY3Rpb24sIGNvbnN0IENvbXBvbmVudFRyYW5zZmVyRnVuY3Rpb24mIGJs
dWVGdW5jdGlvbiwgY29uc3QgQ29tcG9uZW50VHJhbnNmZXJGdW5jdGlvbiYgYWxwaGFGdW5jdGlv
bikKKyAgICA6IEZpbHRlckVmZmVjdChGaWx0ZXJFZmZlY3Q6OlR5cGU6OkZFQ29tcG9uZW50VHJh
bnNmZXIpCiAgICAgLCBtX3JlZEZ1bmN0aW9uKHJlZEZ1bmN0aW9uKQogICAgICwgbV9ncmVlbkZ1
bmN0aW9uKGdyZWVuRnVuY3Rpb24pCiAgICAgLCBtX2JsdWVGdW5jdGlvbihibHVlRnVuY3Rpb24p
CkBAIC00MywxMCArNDIsMTAgQEAgRkVDb21wb25lbnRUcmFuc2Zlcjo6RkVDb21wb25lbnRUcmFu
c2ZlcihGaWx0ZXImIGZpbHRlciwgY29uc3QgQ29tcG9uZW50VHJhbnNmZXIKIHsKIH0KIAotUmVm
PEZFQ29tcG9uZW50VHJhbnNmZXI+IEZFQ29tcG9uZW50VHJhbnNmZXI6OmNyZWF0ZShGaWx0ZXIm
IGZpbHRlciwgY29uc3QgQ29tcG9uZW50VHJhbnNmZXJGdW5jdGlvbiYgcmVkRnVuY3Rpb24sCitS
ZWY8RkVDb21wb25lbnRUcmFuc2Zlcj4gRkVDb21wb25lbnRUcmFuc2Zlcjo6Y3JlYXRlKGNvbnN0
IENvbXBvbmVudFRyYW5zZmVyRnVuY3Rpb24mIHJlZEZ1bmN0aW9uLAogICAgIGNvbnN0IENvbXBv
bmVudFRyYW5zZmVyRnVuY3Rpb24mIGdyZWVuRnVuY3Rpb24sIGNvbnN0IENvbXBvbmVudFRyYW5z
ZmVyRnVuY3Rpb24mIGJsdWVGdW5jdGlvbiwgY29uc3QgQ29tcG9uZW50VHJhbnNmZXJGdW5jdGlv
biYgYWxwaGFGdW5jdGlvbikKIHsKLSAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBGRUNvbXBvbmVu
dFRyYW5zZmVyKGZpbHRlciwgcmVkRnVuY3Rpb24sIGdyZWVuRnVuY3Rpb24sIGJsdWVGdW5jdGlv
biwgYWxwaGFGdW5jdGlvbikpOworICAgIHJldHVybiBhZG9wdFJlZigqbmV3IEZFQ29tcG9uZW50
VHJhbnNmZXIocmVkRnVuY3Rpb24sIGdyZWVuRnVuY3Rpb24sIGJsdWVGdW5jdGlvbiwgYWxwaGFG
dW5jdGlvbikpOwogfQogCiB2b2lkIEZFQ29tcG9uZW50VHJhbnNmZXI6OmNvbXB1dGVJZGVudGl0
eVRhYmxlKExvb2t1cFRhYmxlJiwgY29uc3QgQ29tcG9uZW50VHJhbnNmZXJGdW5jdGlvbiYpCkBA
IC0xMDQsNyArMTAzLDcgQEAgdm9pZCBGRUNvbXBvbmVudFRyYW5zZmVyOjpjb21wdXRlR2FtbWFU
YWJsZShMb29rdXBUYWJsZSYgdmFsdWVzLCBjb25zdCBDb21wb25lbnQKICAgICB9CiB9CiAKLXZv
aWQgRkVDb21wb25lbnRUcmFuc2Zlcjo6cGxhdGZvcm1BcHBseVNvZnR3YXJlKCkKK3ZvaWQgRkVD
b21wb25lbnRUcmFuc2Zlcjo6cGxhdGZvcm1BcHBseVNvZnR3YXJlKGNvbnN0IEZpbHRlciYpCiB7
CiAgICAgRmlsdGVyRWZmZWN0KiBpbiA9IGlucHV0RWZmZWN0KDApOwogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFQ29tcG9uZW50VHJhbnNm
ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVDb21wb25l
bnRUcmFuc2Zlci5oCmluZGV4IDJiNTg2ZGVmN2ZiNDJhMzdiMmUxMjNlZGE4NzExOWM0ZWIzNDhh
NTEuLjZhZmVlNWU5Njg2MTcxMzc0MWUzOTlhNjhiNTFmMzk0MDgzZjA0M2IgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVDb21wb25lbnRUcmFu
c2Zlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVD
b21wb25lbnRUcmFuc2Zlci5oCkBAIC0yMiw4ICsyMiw2IEBACiAjcHJhZ21hIG9uY2UKIAogI2lu
Y2x1ZGUgIkZpbHRlckVmZmVjdC5oIgotCi0jaW5jbHVkZSAiRmlsdGVyLmgiCiAjaW5jbHVkZSA8
d3RmL1ZlY3Rvci5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC01Myw4ICs1MSw3IEBAIHN0
cnVjdCBDb21wb25lbnRUcmFuc2ZlckZ1bmN0aW9uIHsKIAogY2xhc3MgRkVDb21wb25lbnRUcmFu
c2ZlciA6IHB1YmxpYyBGaWx0ZXJFZmZlY3QgewogcHVibGljOgotICAgIHN0YXRpYyBSZWY8RkVD
b21wb25lbnRUcmFuc2Zlcj4gY3JlYXRlKEZpbHRlciYsIGNvbnN0IENvbXBvbmVudFRyYW5zZmVy
RnVuY3Rpb24mIHJlZEZ1bmMsIGNvbnN0IENvbXBvbmVudFRyYW5zZmVyRnVuY3Rpb24mIGdyZWVu
RnVuYywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBD
b21wb25lbnRUcmFuc2ZlckZ1bmN0aW9uJiBibHVlRnVuYywgY29uc3QgQ29tcG9uZW50VHJhbnNm
ZXJGdW5jdGlvbiYgYWxwaGFGdW5jKTsKKyAgICBzdGF0aWMgUmVmPEZFQ29tcG9uZW50VHJhbnNm
ZXI+IGNyZWF0ZShjb25zdCBDb21wb25lbnRUcmFuc2ZlckZ1bmN0aW9uJiByZWRGdW5jLCBjb25z
dCBDb21wb25lbnRUcmFuc2ZlckZ1bmN0aW9uJiBncmVlbkZ1bmMsIGNvbnN0IENvbXBvbmVudFRy
YW5zZmVyRnVuY3Rpb24mIGJsdWVGdW5jLCBjb25zdCBDb21wb25lbnRUcmFuc2ZlckZ1bmN0aW9u
JiBhbHBoYUZ1bmMpOwogCiAgICAgQ29tcG9uZW50VHJhbnNmZXJGdW5jdGlvbiByZWRGdW5jdGlv
bigpIGNvbnN0IHsgcmV0dXJuIG1fcmVkRnVuY3Rpb247IH0KICAgICBDb21wb25lbnRUcmFuc2Zl
ckZ1bmN0aW9uIGdyZWVuRnVuY3Rpb24oKSBjb25zdCB7IHJldHVybiBtX2dyZWVuRnVuY3Rpb247
IH0KQEAgLTYyLDEwICs1OSw3IEBAIHB1YmxpYzoKICAgICBDb21wb25lbnRUcmFuc2ZlckZ1bmN0
aW9uIGFscGhhRnVuY3Rpb24oKSBjb25zdCB7IHJldHVybiBtX2FscGhhRnVuY3Rpb247IH0KIAog
cHJpdmF0ZToKLSAgICBGRUNvbXBvbmVudFRyYW5zZmVyKEZpbHRlciYsIGNvbnN0IENvbXBvbmVu
dFRyYW5zZmVyRnVuY3Rpb24mIHJlZEZ1bmMsIGNvbnN0IENvbXBvbmVudFRyYW5zZmVyRnVuY3Rp
b24mIGdyZWVuRnVuYywKLSAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IENvbXBvbmVudFRy
YW5zZmVyRnVuY3Rpb24mIGJsdWVGdW5jLCBjb25zdCBDb21wb25lbnRUcmFuc2ZlckZ1bmN0aW9u
JiBhbHBoYUZ1bmMpOwotCi0gICAgIGNvbnN0IGNoYXIqIGZpbHRlck5hbWUoKSBjb25zdCBmaW5h
bCB7IHJldHVybiAiRkVDb21wb25lbnRUcmFuc2ZlciI7IH0KKyAgICBGRUNvbXBvbmVudFRyYW5z
ZmVyKGNvbnN0IENvbXBvbmVudFRyYW5zZmVyRnVuY3Rpb24mIHJlZEZ1bmMsIGNvbnN0IENvbXBv
bmVudFRyYW5zZmVyRnVuY3Rpb24mIGdyZWVuRnVuYywgY29uc3QgQ29tcG9uZW50VHJhbnNmZXJG
dW5jdGlvbiYgYmx1ZUZ1bmMsIGNvbnN0IENvbXBvbmVudFRyYW5zZmVyRnVuY3Rpb24mIGFscGhh
RnVuYyk7CiAKICAgICB1c2luZyBMb29rdXBUYWJsZSA9IHN0ZDo6YXJyYXk8dWludDhfdCwgMjU2
PjsKIApAQCAtNzcsNyArNzEsNyBAQCBwcml2YXRlOgogCiAgICAgdm9pZCBjb21wdXRlTG9va3Vw
VGFibGVzKExvb2t1cFRhYmxlJiByZWRUYWJsZSwgTG9va3VwVGFibGUmIGdyZWVuVGFibGUsIExv
b2t1cFRhYmxlJiBibHVlVGFibGUsIExvb2t1cFRhYmxlJiBhbHBoYVRhYmxlKTsKIAotICAgIHZv
aWQgcGxhdGZvcm1BcHBseVNvZnR3YXJlKCkgb3ZlcnJpZGU7CisgICAgdm9pZCBwbGF0Zm9ybUFw
cGx5U29mdHdhcmUoY29uc3QgRmlsdGVyJikgb3ZlcnJpZGU7CiAKICAgICBXVEY6OlRleHRTdHJl
YW0mIGV4dGVybmFsUmVwcmVzZW50YXRpb24oV1RGOjpUZXh0U3RyZWFtJiwgUmVwcmVzZW50YXRp
b25UeXBlKSBjb25zdCBvdmVycmlkZTsKIApAQCAtODksNiArODMsNCBAQCBwcml2YXRlOgogCiB9
IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKLVNQRUNJQUxJWkVfVFlQRV9UUkFJVFNfQkVHSU4oV2Vi
Q29yZTo6RkVDb21wb25lbnRUcmFuc2ZlcikKLSAgICBzdGF0aWMgYm9vbCBpc1R5cGUoY29uc3Qg
V2ViQ29yZTo6RmlsdGVyRWZmZWN0JiBlZmZlY3QpIHsgcmV0dXJuIGVmZmVjdC5maWx0ZXJFZmZl
Y3RDbGFzc1R5cGUoKSA9PSBXZWJDb3JlOjpGaWx0ZXJFZmZlY3Q6OlR5cGU6OkNvbXBvbmVudFRy
YW5zZmVyOyB9Ci1TUEVDSUFMSVpFX1RZUEVfVFJBSVRTX0VORCgpCitTUEVDSUFMSVpFX1RZUEVf
VFJBSVRTX0ZJTFRFUl9FRkZFQ1QoRkVDb21wb25lbnRUcmFuc2ZlcikKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVDb21wb3NpdGUuY3BwIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRUNvbXBvc2l0ZS5jcHAK
aW5kZXggODMzNTMwOTA4MWEyNmJhMmMzMWMzYmRhYzg4ODY2OWUyOGUzNDU2ZC4uNDZmMjZhOTIx
YmIzOTUxZTllOWYwODg3MjZiNjQ2MTVlMjU5MzU5ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRUNvbXBvc2l0ZS5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRUNvbXBvc2l0ZS5jcHAKQEAgLTMy
LDggKzMyLDggQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1GRUNvbXBvc2l0ZTo6RkVDb21w
b3NpdGUoRmlsdGVyJiBmaWx0ZXIsIGNvbnN0IENvbXBvc2l0ZU9wZXJhdGlvblR5cGUmIHR5cGUs
IGZsb2F0IGsxLCBmbG9hdCBrMiwgZmxvYXQgazMsIGZsb2F0IGs0KQotICAgIDogRmlsdGVyRWZm
ZWN0KGZpbHRlciwgVHlwZTo6Q29tcG9zaXRlKQorRkVDb21wb3NpdGU6OkZFQ29tcG9zaXRlKGNv
bnN0IENvbXBvc2l0ZU9wZXJhdGlvblR5cGUmIHR5cGUsIGZsb2F0IGsxLCBmbG9hdCBrMiwgZmxv
YXQgazMsIGZsb2F0IGs0KQorICAgIDogRmlsdGVyRWZmZWN0KEZpbHRlckVmZmVjdDo6VHlwZTo6
RkVDb21wb3NpdGUpCiAgICAgLCBtX3R5cGUodHlwZSkKICAgICAsIG1fazEoazEpCiAgICAgLCBt
X2syKGsyKQpAQCAtNDIsOSArNDIsOSBAQCBGRUNvbXBvc2l0ZTo6RkVDb21wb3NpdGUoRmlsdGVy
JiBmaWx0ZXIsIGNvbnN0IENvbXBvc2l0ZU9wZXJhdGlvblR5cGUmIHR5cGUsIGZsbwogewogfQog
Ci1SZWY8RkVDb21wb3NpdGU+IEZFQ29tcG9zaXRlOjpjcmVhdGUoRmlsdGVyJiBmaWx0ZXIsIGNv
bnN0IENvbXBvc2l0ZU9wZXJhdGlvblR5cGUmIHR5cGUsIGZsb2F0IGsxLCBmbG9hdCBrMiwgZmxv
YXQgazMsIGZsb2F0IGs0KQorUmVmPEZFQ29tcG9zaXRlPiBGRUNvbXBvc2l0ZTo6Y3JlYXRlKGNv
bnN0IENvbXBvc2l0ZU9wZXJhdGlvblR5cGUmIHR5cGUsIGZsb2F0IGsxLCBmbG9hdCBrMiwgZmxv
YXQgazMsIGZsb2F0IGs0KQogewotICAgIHJldHVybiBhZG9wdFJlZigqbmV3IEZFQ29tcG9zaXRl
KGZpbHRlciwgdHlwZSwgazEsIGsyLCBrMywgazQpKTsKKyAgICByZXR1cm4gYWRvcHRSZWYoKm5l
dyBGRUNvbXBvc2l0ZSh0eXBlLCBrMSwgazIsIGszLCBrNCkpOwogfQogCiBib29sIEZFQ29tcG9z
aXRlOjpzZXRPcGVyYXRpb24oQ29tcG9zaXRlT3BlcmF0aW9uVHlwZSB0eXBlKQpAQCAtMjAxLDcg
KzIwMSw3IEBAIGlubGluZSB2b2lkIEZFQ29tcG9zaXRlOjpwbGF0Zm9ybUFyaXRobWV0aWNTb2Z0
d2FyZShjb25zdCBVaW50OENsYW1wZWRBcnJheSYgc291CiAjZW5kaWYKIH0KIAotdm9pZCBGRUNv
bXBvc2l0ZTo6ZGV0ZXJtaW5lQWJzb2x1dGVQYWludFJlY3QoKQordm9pZCBGRUNvbXBvc2l0ZTo6
ZGV0ZXJtaW5lQWJzb2x1dGVQYWludFJlY3QoY29uc3QgRmlsdGVyJiBmaWx0ZXIpCiB7CiAgICAg
c3dpdGNoIChtX3R5cGUpIHsKICAgICBjYXNlIEZFQ09NUE9TSVRFX09QRVJBVE9SX0lOOgpAQCAt
MjE4LDEyICsyMTgsMTIgQEAgdm9pZCBGRUNvbXBvc2l0ZTo6ZGV0ZXJtaW5lQWJzb2x1dGVQYWlu
dFJlY3QoKQogICAgICAgICByZXR1cm47CiAgICAgZGVmYXVsdDoKICAgICAgICAgLy8gVGFrZSB0
aGUgdW5pb24gb2YgYm90aCBpbnB1dCBlZmZlY3RzLgotICAgICAgICBGaWx0ZXJFZmZlY3Q6OmRl
dGVybWluZUFic29sdXRlUGFpbnRSZWN0KCk7CisgICAgICAgIEZpbHRlckVmZmVjdDo6ZGV0ZXJt
aW5lQWJzb2x1dGVQYWludFJlY3QoZmlsdGVyKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIH0K
IAotdm9pZCBGRUNvbXBvc2l0ZTo6cGxhdGZvcm1BcHBseVNvZnR3YXJlKCkKK3ZvaWQgRkVDb21w
b3NpdGU6OnBsYXRmb3JtQXBwbHlTb2Z0d2FyZShjb25zdCBGaWx0ZXImKQogewogICAgIEZpbHRl
ckVmZmVjdCogaW4gPSBpbnB1dEVmZmVjdCgwKTsKICAgICBGaWx0ZXJFZmZlY3QqIGluMiA9IGlu
cHV0RWZmZWN0KDEpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvZmlsdGVycy9GRUNvbXBvc2l0ZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvZmlsdGVycy9GRUNvbXBvc2l0ZS5oCmluZGV4IDdkMDhlMWY3MTA3YjRiOTY4YzU4ZTNhMzdj
MzJhZTJmNzZhZWEwYzMuLjFjM2E3M2VlNzk5MTk3YTVmN2ZmZjIwZjM4ODhmY2ZjNjE3NzFlODUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVD
b21wb3NpdGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJz
L0ZFQ29tcG9zaXRlLmgKQEAgLTIyLDggKzIyLDYgQEAKICNwcmFnbWEgb25jZQogCiAjaW5jbHVk
ZSAiRmlsdGVyRWZmZWN0LmgiCi0KLSNpbmNsdWRlICJGaWx0ZXIuaCIKICNpbmNsdWRlIDx3dGYv
dGV4dC9XVEZTdHJpbmcuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtNDEsNyArMzksNyBA
QCBlbnVtIENvbXBvc2l0ZU9wZXJhdGlvblR5cGUgewogCiBjbGFzcyBGRUNvbXBvc2l0ZSA6IHB1
YmxpYyBGaWx0ZXJFZmZlY3QgewogcHVibGljOgotICAgIHN0YXRpYyBSZWY8RkVDb21wb3NpdGU+
IGNyZWF0ZShGaWx0ZXImLCBjb25zdCBDb21wb3NpdGVPcGVyYXRpb25UeXBlJiwgZmxvYXQsIGZs
b2F0LCBmbG9hdCwgZmxvYXQpOworICAgIHN0YXRpYyBSZWY8RkVDb21wb3NpdGU+IGNyZWF0ZShj
b25zdCBDb21wb3NpdGVPcGVyYXRpb25UeXBlJiwgZmxvYXQsIGZsb2F0LCBmbG9hdCwgZmxvYXQp
OwogCiAgICAgQ29tcG9zaXRlT3BlcmF0aW9uVHlwZSBvcGVyYXRpb24oKSBjb25zdCB7IHJldHVy
biBtX3R5cGU7IH0KICAgICBib29sIHNldE9wZXJhdGlvbihDb21wb3NpdGVPcGVyYXRpb25UeXBl
KTsKQEAgLTYyLDE0ICs2MCwxMiBAQCBwcm90ZWN0ZWQ6CiAgICAgYm9vbCByZXF1aXJlc1ZhbGlk
UHJlTXVsdGlwbGllZFBpeGVscygpIG92ZXJyaWRlIHsgcmV0dXJuIG1fdHlwZSAhPSBGRUNPTVBP
U0lURV9PUEVSQVRPUl9BUklUSE1FVElDOyB9CiAKIHByaXZhdGU6Ci0gICAgRkVDb21wb3NpdGUo
RmlsdGVyJiwgY29uc3QgQ29tcG9zaXRlT3BlcmF0aW9uVHlwZSYsIGZsb2F0LCBmbG9hdCwgZmxv
YXQsIGZsb2F0KTsKLQotICAgIGNvbnN0IGNoYXIqIGZpbHRlck5hbWUoKSBjb25zdCBmaW5hbCB7
IHJldHVybiAiRkVDb21wb3NpdGUiOyB9CisgICAgRkVDb21wb3NpdGUoY29uc3QgQ29tcG9zaXRl
T3BlcmF0aW9uVHlwZSYsIGZsb2F0LCBmbG9hdCwgZmxvYXQsIGZsb2F0KTsKIAogICAgIHZvaWQg
Y29ycmVjdEZpbHRlclJlc3VsdElmTmVlZGVkKCkgb3ZlcnJpZGU7Ci0gICAgdm9pZCBkZXRlcm1p
bmVBYnNvbHV0ZVBhaW50UmVjdCgpIG92ZXJyaWRlOworICAgIHZvaWQgZGV0ZXJtaW5lQWJzb2x1
dGVQYWludFJlY3QoY29uc3QgRmlsdGVyJikgb3ZlcnJpZGU7CiAKLSAgICB2b2lkIHBsYXRmb3Jt
QXBwbHlTb2Z0d2FyZSgpIG92ZXJyaWRlOworICAgIHZvaWQgcGxhdGZvcm1BcHBseVNvZnR3YXJl
KGNvbnN0IEZpbHRlciYpIG92ZXJyaWRlOwogICAgIFdURjo6VGV4dFN0cmVhbSYgZXh0ZXJuYWxS
ZXByZXNlbnRhdGlvbihXVEY6OlRleHRTdHJlYW0mLCBSZXByZXNlbnRhdGlvblR5cGUpIGNvbnN0
IG92ZXJyaWRlOwogCiAgICAgaW5saW5lIHZvaWQgcGxhdGZvcm1Bcml0aG1ldGljU29mdHdhcmUo
Y29uc3QgVWludDhDbGFtcGVkQXJyYXkmIHNvdXJjZSwgVWludDhDbGFtcGVkQXJyYXkmIGRlc3Rp
bmF0aW9uLCBmbG9hdCBrMSwgZmxvYXQgazIsIGZsb2F0IGszLCBmbG9hdCBrNCk7CkBAIC05MCwz
ICs4Niw0IEBAIHByaXZhdGU6CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAorU1BFQ0lBTEla
RV9UWVBFX1RSQUlUU19GSUxURVJfRUZGRUNUKEZFQ29tcG9zaXRlKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRUNvbnZvbHZlTWF0cml4LmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVDb252b2x2ZU1h
dHJpeC5jcHAKaW5kZXggM2JiZTc4MzU5OGQ3MDkzNWE5NWM2ZjE1NmVjMjkzM2MwZTk5ZjA1MC4u
YzdmNjEwOGZmODkyNzc5MmI4NTczMWViNzhiOGU3ZWYxMmQ1NjQyNyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRUNvbnZvbHZlTWF0cml4LmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFQ29udm9s
dmVNYXRyaXguY3BwCkBAIC0zMiwxMCArMzIsOCBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAK
LUZFQ29udm9sdmVNYXRyaXg6OkZFQ29udm9sdmVNYXRyaXgoRmlsdGVyJiBmaWx0ZXIsIGNvbnN0
IEludFNpemUmIGtlcm5lbFNpemUsCi0gICAgZmxvYXQgZGl2aXNvciwgZmxvYXQgYmlhcywgY29u
c3QgSW50UG9pbnQmIHRhcmdldE9mZnNldCwgRWRnZU1vZGVUeXBlIGVkZ2VNb2RlLAotICAgIGNv
bnN0IEZsb2F0UG9pbnQmIGtlcm5lbFVuaXRMZW5ndGgsIGJvb2wgcHJlc2VydmVBbHBoYSwgY29u
c3QgVmVjdG9yPGZsb2F0PiYga2VybmVsTWF0cml4KQotICAgIDogRmlsdGVyRWZmZWN0KGZpbHRl
ciwgVHlwZTo6Q29udm9sdmVNYXRyaXgpCitGRUNvbnZvbHZlTWF0cml4OjpGRUNvbnZvbHZlTWF0
cml4KGNvbnN0IEludFNpemUmIGtlcm5lbFNpemUsIGZsb2F0IGRpdmlzb3IsIGZsb2F0IGJpYXMs
IGNvbnN0IEludFBvaW50JiB0YXJnZXRPZmZzZXQsIEVkZ2VNb2RlVHlwZSBlZGdlTW9kZSwgY29u
c3QgRmxvYXRQb2ludCYga2VybmVsVW5pdExlbmd0aCwgYm9vbCBwcmVzZXJ2ZUFscGhhLCBjb25z
dCBWZWN0b3I8ZmxvYXQ+JiBrZXJuZWxNYXRyaXgpCisgICAgOiBGaWx0ZXJFZmZlY3QoRmlsdGVy
RWZmZWN0OjpUeXBlOjpGRUNvbnZvbHZlTWF0cml4KQogICAgICwgbV9rZXJuZWxTaXplKGtlcm5l
bFNpemUpCiAgICAgLCBtX2Rpdmlzb3IoZGl2aXNvcikKICAgICAsIG1fYmlhcyhiaWFzKQpAQCAt
NDksMTEgKzQ3LDkgQEAgRkVDb252b2x2ZU1hdHJpeDo6RkVDb252b2x2ZU1hdHJpeChGaWx0ZXIm
IGZpbHRlciwgY29uc3QgSW50U2l6ZSYga2VybmVsU2l6ZSwKICAgICBBU1NFUlQobV9rZXJuZWxT
aXplLmhlaWdodCgpID4gMCk7CiB9CiAKLVJlZjxGRUNvbnZvbHZlTWF0cml4PiBGRUNvbnZvbHZl
TWF0cml4OjpjcmVhdGUoRmlsdGVyJiBmaWx0ZXIsIGNvbnN0IEludFNpemUmIGtlcm5lbFNpemUs
Ci0gICAgZmxvYXQgZGl2aXNvciwgZmxvYXQgYmlhcywgY29uc3QgSW50UG9pbnQmIHRhcmdldE9m
ZnNldCwgRWRnZU1vZGVUeXBlIGVkZ2VNb2RlLAotICAgIGNvbnN0IEZsb2F0UG9pbnQmIGtlcm5l
bFVuaXRMZW5ndGgsIGJvb2wgcHJlc2VydmVBbHBoYSwgY29uc3QgVmVjdG9yPGZsb2F0PiYga2Vy
bmVsTWF0cml4KQorUmVmPEZFQ29udm9sdmVNYXRyaXg+IEZFQ29udm9sdmVNYXRyaXg6OmNyZWF0
ZShjb25zdCBJbnRTaXplJiBrZXJuZWxTaXplLCBmbG9hdCBkaXZpc29yLCBmbG9hdCBiaWFzLCBj
b25zdCBJbnRQb2ludCYgdGFyZ2V0T2Zmc2V0LCBFZGdlTW9kZVR5cGUgZWRnZU1vZGUsIGNvbnN0
IEZsb2F0UG9pbnQmIGtlcm5lbFVuaXRMZW5ndGgsIGJvb2wgcHJlc2VydmVBbHBoYSwgY29uc3Qg
VmVjdG9yPGZsb2F0PiYga2VybmVsTWF0cml4KQogewotICAgIHJldHVybiBhZG9wdFJlZigqbmV3
IEZFQ29udm9sdmVNYXRyaXgoZmlsdGVyLCBrZXJuZWxTaXplLCBkaXZpc29yLCBiaWFzLCB0YXJn
ZXRPZmZzZXQsIGVkZ2VNb2RlLCBrZXJuZWxVbml0TGVuZ3RoLAorICAgIHJldHVybiBhZG9wdFJl
ZigqbmV3IEZFQ29udm9sdmVNYXRyaXgoa2VybmVsU2l6ZSwgZGl2aXNvciwgYmlhcywgdGFyZ2V0
T2Zmc2V0LCBlZGdlTW9kZSwga2VybmVsVW5pdExlbmd0aCwKICAgICAgICAgcHJlc2VydmVBbHBo
YSwga2VybmVsTWF0cml4KSk7CiB9CiAKQEAgLTM2Nyw3ICszNjMsNyBAQCBBTFdBWVNfSU5MSU5F
IHZvaWQgRkVDb252b2x2ZU1hdHJpeDo6c2V0T3V0ZXJQaXhlbHMoUGFpbnRpbmdEYXRhJiBwYWlu
dGluZ0RhdGEsCiAgICAgICAgIGZhc3RTZXRPdXRlclBpeGVsczxmYWxzZT4ocGFpbnRpbmdEYXRh
LCB4MSwgeTEsIHgyLCB5Mik7CiB9CiAKLXZvaWQgRkVDb252b2x2ZU1hdHJpeDo6cGxhdGZvcm1B
cHBseVNvZnR3YXJlKCkKK3ZvaWQgRkVDb252b2x2ZU1hdHJpeDo6cGxhdGZvcm1BcHBseVNvZnR3
YXJlKGNvbnN0IEZpbHRlciYpCiB7CiAgICAgRmlsdGVyRWZmZWN0KiBpbiA9IGlucHV0RWZmZWN0
KDApOwogCkBAIC0zODgsOCArMzg0LDcgQEAgdm9pZCBGRUNvbnZvbHZlTWF0cml4OjpwbGF0Zm9y
bUFwcGx5U29mdHdhcmUoKQogICAgICAgICByZXR1cm47CiAKICAgICBJbnRTaXplIHBhaW50U2l6
ZSA9IGFic29sdXRlUGFpbnRSZWN0KCkuc2l6ZSgpOwotICAgIHBhaW50U2l6ZS5zY2FsZShmaWx0
ZXIoKS5maWx0ZXJTY2FsZSgpKTsKLQorICAgIAogICAgIFBhaW50aW5nRGF0YSBwYWludGluZ0Rh
dGEgPSB7CiAgICAgICAgICpzb3VyY2VQaXhlbEFycmF5LAogICAgICAgICBkZXN0aW5hdGlvblBp
eGVsQXJyYXksCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9m
aWx0ZXJzL0ZFQ29udm9sdmVNYXRyaXguaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2ZpbHRlcnMvRkVDb252b2x2ZU1hdHJpeC5oCmluZGV4IDY3ZDRjNjU2N2ZjZTZiMjdlZTVh
Yjg5NWE2ZTFlNTAwNTRlMTNkYmEuLjk1NzZkZmVlN2U4NDJjYWY0NjUwODVhZDcxYmM3MGUyZjVh
YWY1OTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRl
cnMvRkVDb252b2x2ZU1hdHJpeC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2ZpbHRlcnMvRkVDb252b2x2ZU1hdHJpeC5oCkBAIC0yNCw3ICsyNCw2IEBACiAKICNpbmNs
dWRlICJGaWx0ZXJFZmZlY3QuaCIKICNpbmNsdWRlICJGbG9hdFBvaW50LmgiCi0jaW5jbHVkZSAi
RmlsdGVyLmgiCiAjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7
CkBAIC0zOCw5ICszNyw3IEBAIGVudW0gRWRnZU1vZGVUeXBlIHsKIAogY2xhc3MgRkVDb252b2x2
ZU1hdHJpeCA6IHB1YmxpYyBGaWx0ZXJFZmZlY3QgewogcHVibGljOgotICAgIHN0YXRpYyBSZWY8
RkVDb252b2x2ZU1hdHJpeD4gY3JlYXRlKEZpbHRlciYsIGNvbnN0IEludFNpemUmLAotICAgICAg
ICAgICAgZmxvYXQsIGZsb2F0LCBjb25zdCBJbnRQb2ludCYsIEVkZ2VNb2RlVHlwZSwgY29uc3Qg
RmxvYXRQb2ludCYsCi0gICAgICAgICAgICBib29sLCBjb25zdCBWZWN0b3I8ZmxvYXQ+Jik7Cisg
ICAgc3RhdGljIFJlZjxGRUNvbnZvbHZlTWF0cml4PiBjcmVhdGUoY29uc3QgSW50U2l6ZSYga2Vy
bmVsU2l6ZSwgZmxvYXQgZGl2aXNvciwgZmxvYXQgYmlhcywgY29uc3QgSW50UG9pbnQmIHRhcmdl
dE9mZnNldCwgRWRnZU1vZGVUeXBlLCBjb25zdCBGbG9hdFBvaW50JiBrZXJuZWxVbml0TGVuZ3Ro
LCBib29sIHByZXNlcnZlQWxwaGEsIGNvbnN0IFZlY3RvcjxmbG9hdD4mIGtlcm5lbE1hdHJpeCk7
CiAKICAgICBJbnRTaXplIGtlcm5lbFNpemUoKSBjb25zdCB7IHJldHVybiBtX2tlcm5lbFNpemU7
IH0KICAgICB2b2lkIHNldEtlcm5lbFNpemUoY29uc3QgSW50U2l6ZSYpOwpAQCAtNzcsMTQgKzc0
LDExIEBAIHByaXZhdGU6CiAgICAgICAgIFZlY3RvcjxmbG9hdD4ga2VybmVsTWF0cml4OwogICAg
IH07CiAKLSAgICBGRUNvbnZvbHZlTWF0cml4KEZpbHRlciYsIGNvbnN0IEludFNpemUmLCBmbG9h
dCwgZmxvYXQsCi0gICAgICAgICAgICBjb25zdCBJbnRQb2ludCYsIEVkZ2VNb2RlVHlwZSwgY29u
c3QgRmxvYXRQb2ludCYsIGJvb2wsIGNvbnN0IFZlY3RvcjxmbG9hdD4mKTsKKyAgICBGRUNvbnZv
bHZlTWF0cml4KGNvbnN0IEludFNpemUmIGtlcm5lbFNpemUsIGZsb2F0IGRpdmlzb3IsIGZsb2F0
IGJpYXMsIGNvbnN0IEludFBvaW50JiB0YXJnZXRPZmZzZXQsIEVkZ2VNb2RlVHlwZSwgY29uc3Qg
RmxvYXRQb2ludCYga2VybmVsVW5pdExlbmd0aCwgYm9vbCBwcmVzZXJ2ZUFscGhhLCBjb25zdCBW
ZWN0b3I8ZmxvYXQ+JiBrZXJuZWxNYXRyaXgpOwogCi0gICAgY29uc3QgY2hhciogZmlsdGVyTmFt
ZSgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuICJGRUNvbnZvbHZlTWF0cml4IjsgfQorICAgIHZvaWQg
ZGV0ZXJtaW5lQWJzb2x1dGVQYWludFJlY3QoY29uc3QgRmlsdGVyJikgb3ZlcnJpZGUgeyBzZXRB
YnNvbHV0ZVBhaW50UmVjdChlbmNsb3NpbmdJbnRSZWN0KG1heEVmZmVjdFJlY3QoKSkpOyB9CiAK
LSAgICB2b2lkIGRldGVybWluZUFic29sdXRlUGFpbnRSZWN0KCkgb3ZlcnJpZGUgeyBzZXRBYnNv
bHV0ZVBhaW50UmVjdChlbmNsb3NpbmdJbnRSZWN0KG1heEVmZmVjdFJlY3QoKSkpOyB9Ci0KLSAg
ICB2b2lkIHBsYXRmb3JtQXBwbHlTb2Z0d2FyZSgpIG92ZXJyaWRlOworICAgIHZvaWQgcGxhdGZv
cm1BcHBseVNvZnR3YXJlKGNvbnN0IEZpbHRlciYpIG92ZXJyaWRlOwogCiAgICAgV1RGOjpUZXh0
U3RyZWFtJiBleHRlcm5hbFJlcHJlc2VudGF0aW9uKFdURjo6VGV4dFN0cmVhbSYsIFJlcHJlc2Vu
dGF0aW9uVHlwZSkgY29uc3Qgb3ZlcnJpZGU7CiAKQEAgLTExNSwzICsxMDksNCBAQCBwcml2YXRl
OgogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKK1NQRUNJQUxJWkVfVFlQRV9UUkFJVFNfRklM
VEVSX0VGRkVDVChGRUNvbnZvbHZlTWF0cml4KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRURpZmZ1c2VMaWdodGluZy5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFRGlmZnVzZUxpZ2h0aW5nLmNwcApp
bmRleCBlZWIxNzI4ZGIzNWU4YWMzMDJiMjdlNGMzZmYzNGNiODg1NWI5ZDA5Li5mNzZjZTJjZTk2
NDNlZmRmNmNlMjU2ZTk1NDczNzhhNDA3ZDEzNDFjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFRGlmZnVzZUxpZ2h0aW5nLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFRGlmZnVzZUxpZ2h0aW5n
LmNwcApAQCAtMjcsMTggKzI3LDE2IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotRkVEaWZm
dXNlTGlnaHRpbmc6OkZFRGlmZnVzZUxpZ2h0aW5nKEZpbHRlciYgZmlsdGVyLCBjb25zdCBDb2xv
ciYgbGlnaHRpbmdDb2xvciwgZmxvYXQgc3VyZmFjZVNjYWxlLCBmbG9hdCBkaWZmdXNlQ29uc3Rh
bnQsIGZsb2F0IGtlcm5lbFVuaXRMZW5ndGhYLCBmbG9hdCBrZXJuZWxVbml0TGVuZ3RoWSwgUmVm
PExpZ2h0U291cmNlPiYmIGxpZ2h0U291cmNlKQotICAgIDogRkVMaWdodGluZyhmaWx0ZXIsIERp
ZmZ1c2VMaWdodGluZywgbGlnaHRpbmdDb2xvciwgc3VyZmFjZVNjYWxlLCBkaWZmdXNlQ29uc3Rh
bnQsIDAsIDAsIGtlcm5lbFVuaXRMZW5ndGhYLCBrZXJuZWxVbml0TGVuZ3RoWSwgV1RGTW92ZShs
aWdodFNvdXJjZSksIFR5cGU6OkRpZmZ1c2VMaWdodGluZykKK0ZFRGlmZnVzZUxpZ2h0aW5nOjpG
RURpZmZ1c2VMaWdodGluZyhjb25zdCBDb2xvciYgbGlnaHRpbmdDb2xvciwgZmxvYXQgc3VyZmFj
ZVNjYWxlLCBmbG9hdCBkaWZmdXNlQ29uc3RhbnQsIGZsb2F0IGtlcm5lbFVuaXRMZW5ndGhYLCBm
bG9hdCBrZXJuZWxVbml0TGVuZ3RoWSwgUmVmPExpZ2h0U291cmNlPiYmIGxpZ2h0U291cmNlKQor
ICAgIDogRkVMaWdodGluZyhEaWZmdXNlTGlnaHRpbmcsIGxpZ2h0aW5nQ29sb3IsIHN1cmZhY2VT
Y2FsZSwgZGlmZnVzZUNvbnN0YW50LCAwLCAwLCBrZXJuZWxVbml0TGVuZ3RoWCwga2VybmVsVW5p
dExlbmd0aFksIFdURk1vdmUobGlnaHRTb3VyY2UpLCBGaWx0ZXJFZmZlY3Q6OlR5cGU6OkZFRGlm
ZnVzZUxpZ2h0aW5nKQogewogfQogCi1SZWY8RkVEaWZmdXNlTGlnaHRpbmc+IEZFRGlmZnVzZUxp
Z2h0aW5nOjpjcmVhdGUoRmlsdGVyJiBmaWx0ZXIsIGNvbnN0IENvbG9yJiBsaWdodGluZ0NvbG9y
LCBmbG9hdCBzdXJmYWNlU2NhbGUsIGZsb2F0IGRpZmZ1c2VDb25zdGFudCwgZmxvYXQga2VybmVs
VW5pdExlbmd0aFgsIGZsb2F0IGtlcm5lbFVuaXRMZW5ndGhZLCBSZWY8TGlnaHRTb3VyY2U+JiYg
bGlnaHRTb3VyY2UpCitSZWY8RkVEaWZmdXNlTGlnaHRpbmc+IEZFRGlmZnVzZUxpZ2h0aW5nOjpj
cmVhdGUoY29uc3QgQ29sb3ImIGxpZ2h0aW5nQ29sb3IsIGZsb2F0IHN1cmZhY2VTY2FsZSwgZmxv
YXQgZGlmZnVzZUNvbnN0YW50LCBmbG9hdCBrZXJuZWxVbml0TGVuZ3RoWCwgZmxvYXQga2VybmVs
VW5pdExlbmd0aFksIFJlZjxMaWdodFNvdXJjZT4mJiBsaWdodFNvdXJjZSkKIHsKLSAgICByZXR1
cm4gYWRvcHRSZWYoKm5ldyBGRURpZmZ1c2VMaWdodGluZyhmaWx0ZXIsIGxpZ2h0aW5nQ29sb3Is
IHN1cmZhY2VTY2FsZSwgZGlmZnVzZUNvbnN0YW50LCBrZXJuZWxVbml0TGVuZ3RoWCwga2VybmVs
VW5pdExlbmd0aFksIFdURk1vdmUobGlnaHRTb3VyY2UpKSk7CisgICAgcmV0dXJuIGFkb3B0UmVm
KCpuZXcgRkVEaWZmdXNlTGlnaHRpbmcobGlnaHRpbmdDb2xvciwgc3VyZmFjZVNjYWxlLCBkaWZm
dXNlQ29uc3RhbnQsIGtlcm5lbFVuaXRMZW5ndGhYLCBrZXJuZWxVbml0TGVuZ3RoWSwgV1RGTW92
ZShsaWdodFNvdXJjZSkpKTsKIH0KIAotRkVEaWZmdXNlTGlnaHRpbmc6On5GRURpZmZ1c2VMaWdo
dGluZygpID0gZGVmYXVsdDsKLQogYm9vbCBGRURpZmZ1c2VMaWdodGluZzo6c2V0RGlmZnVzZUNv
bnN0YW50KGZsb2F0IGRpZmZ1c2VDb25zdGFudCkKIHsKICAgICBpZiAobV9kaWZmdXNlQ29uc3Rh
bnQgPT0gZGlmZnVzZUNvbnN0YW50KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvZmlsdGVycy9GRURpZmZ1c2VMaWdodGluZy5oIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRURpZmZ1c2VMaWdodGluZy5oCmluZGV4IGRmNjEx
NGQwZmI4ZTJmM2UxMTI4Yjg0MjYxNWU0NzUxM2EwZGRkYzMuLjhhMTBhZWM4N2M4ZjE4OWY5ZjA1
N2NiOTQ0M2VhYWVkZDUzOGY2OTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2ZpbHRlcnMvRkVEaWZmdXNlTGlnaHRpbmcuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFRGlmZnVzZUxpZ2h0aW5nLmgKQEAgLTI5LDgg
KzI5LDcgQEAgY2xhc3MgTGlnaHRTb3VyY2U7CiAKIGNsYXNzIEZFRGlmZnVzZUxpZ2h0aW5nIDog
cHVibGljIEZFTGlnaHRpbmcgewogcHVibGljOgotICAgIHN0YXRpYyBSZWY8RkVEaWZmdXNlTGln
aHRpbmc+IGNyZWF0ZShGaWx0ZXImLCBjb25zdCBDb2xvciYsIGZsb2F0LCBmbG9hdCwgZmxvYXQs
IGZsb2F0LCBSZWY8TGlnaHRTb3VyY2U+JiYpOwotICAgIHZpcnR1YWwgfkZFRGlmZnVzZUxpZ2h0
aW5nKCk7CisgICAgc3RhdGljIFJlZjxGRURpZmZ1c2VMaWdodGluZz4gY3JlYXRlKGNvbnN0IENv
bG9yJiBsaWdodGluZ0NvbG9yLCBmbG9hdCBzdXJmYWNlU2NhbGUsIGZsb2F0IGRpZmZ1c2VDb25z
dGFudCwgZmxvYXQga2VybmVsVW5pdExlbmd0aFgsIGZsb2F0IGtlcm5lbFVuaXRMZW5ndGhZLCBS
ZWY8TGlnaHRTb3VyY2U+JiYpOwogCiAgICAgZmxvYXQgZGlmZnVzZUNvbnN0YW50KCkgY29uc3Qg
eyByZXR1cm4gbV9kaWZmdXNlQ29uc3RhbnQ7IH0KICAgICBib29sIHNldERpZmZ1c2VDb25zdGFu
dChmbG9hdCk7CkBAIC0zOCw4ICszNyw5IEBAIHB1YmxpYzoKICAgICBXVEY6OlRleHRTdHJlYW0m
IGV4dGVybmFsUmVwcmVzZW50YXRpb24oV1RGOjpUZXh0U3RyZWFtJiwgUmVwcmVzZW50YXRpb25U
eXBlKSBjb25zdCBvdmVycmlkZTsKIAogcHJpdmF0ZToKLSAgICBGRURpZmZ1c2VMaWdodGluZyhG
aWx0ZXImLCBjb25zdCBDb2xvciYsIGZsb2F0LCBmbG9hdCwgZmxvYXQsIGZsb2F0LCBSZWY8TGln
aHRTb3VyY2U+JiYpOworICAgIEZFRGlmZnVzZUxpZ2h0aW5nKGNvbnN0IENvbG9yJiBsaWdodGlu
Z0NvbG9yLCBmbG9hdCBzdXJmYWNlU2NhbGUsIGZsb2F0IGRpZmZ1c2VDb25zdGFudCwgZmxvYXQg
a2VybmVsVW5pdExlbmd0aFgsIGZsb2F0IGtlcm5lbFVuaXRMZW5ndGhZLCBSZWY8TGlnaHRTb3Vy
Y2U+JiYpOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCitTUEVDSUFMSVpFX1RZUEVf
VFJBSVRTX0ZJTFRFUl9FRkZFQ1QoRkVEaWZmdXNlTGlnaHRpbmcpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFRGlzcGxhY2VtZW50TWFwLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVEaXNwbGFjZW1l
bnRNYXAuY3BwCmluZGV4IDA0NzQ5MzM5MmJiMjgxNDZkOGIxNjliYTBhN2MzMmIxNmM1NjNmYTEu
LmQ2YTM1ZmVhMDk3Yjg2YjFmYzE2NTIzNzE1NjI2ZjkzNThlMWQ5NWUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVEaXNwbGFjZW1lbnRNYXAu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVEaXNw
bGFjZW1lbnRNYXAuY3BwCkBAIC0zMSwxOCArMzEsMTcgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUg
ewogCi1GRURpc3BsYWNlbWVudE1hcDo6RkVEaXNwbGFjZW1lbnRNYXAoRmlsdGVyJiBmaWx0ZXIs
IENoYW5uZWxTZWxlY3RvclR5cGUgeENoYW5uZWxTZWxlY3RvciwgQ2hhbm5lbFNlbGVjdG9yVHlw
ZSB5Q2hhbm5lbFNlbGVjdG9yLCBmbG9hdCBzY2FsZSkKLSAgICA6IEZpbHRlckVmZmVjdChmaWx0
ZXIsIFR5cGU6OkRpc3BsYWNlbWVudE1hcCkKK0ZFRGlzcGxhY2VtZW50TWFwOjpGRURpc3BsYWNl
bWVudE1hcChDaGFubmVsU2VsZWN0b3JUeXBlIHhDaGFubmVsU2VsZWN0b3IsIENoYW5uZWxTZWxl
Y3RvclR5cGUgeUNoYW5uZWxTZWxlY3RvciwgZmxvYXQgc2NhbGUpCisgICAgOiBGaWx0ZXJFZmZl
Y3QoRmlsdGVyRWZmZWN0OjpUeXBlOjpGRURpc3BsYWNlbWVudE1hcCkKICAgICAsIG1feENoYW5u
ZWxTZWxlY3Rvcih4Q2hhbm5lbFNlbGVjdG9yKQogICAgICwgbV95Q2hhbm5lbFNlbGVjdG9yKHlD
aGFubmVsU2VsZWN0b3IpCiAgICAgLCBtX3NjYWxlKHNjYWxlKQogewogfQogCi1SZWY8RkVEaXNw
bGFjZW1lbnRNYXA+IEZFRGlzcGxhY2VtZW50TWFwOjpjcmVhdGUoRmlsdGVyJiBmaWx0ZXIsIENo
YW5uZWxTZWxlY3RvclR5cGUgeENoYW5uZWxTZWxlY3RvciwKLSAgICBDaGFubmVsU2VsZWN0b3JU
eXBlIHlDaGFubmVsU2VsZWN0b3IsIGZsb2F0IHNjYWxlKQorUmVmPEZFRGlzcGxhY2VtZW50TWFw
PiBGRURpc3BsYWNlbWVudE1hcDo6Y3JlYXRlKENoYW5uZWxTZWxlY3RvclR5cGUgeENoYW5uZWxT
ZWxlY3RvciwgQ2hhbm5lbFNlbGVjdG9yVHlwZSB5Q2hhbm5lbFNlbGVjdG9yLCBmbG9hdCBzY2Fs
ZSkKIHsKLSAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBGRURpc3BsYWNlbWVudE1hcChmaWx0ZXIs
IHhDaGFubmVsU2VsZWN0b3IsIHlDaGFubmVsU2VsZWN0b3IsIHNjYWxlKSk7CisgICAgcmV0dXJu
IGFkb3B0UmVmKCpuZXcgRkVEaXNwbGFjZW1lbnRNYXAoeENoYW5uZWxTZWxlY3RvciwgeUNoYW5u
ZWxTZWxlY3Rvciwgc2NhbGUpKTsKIH0KIAogYm9vbCBGRURpc3BsYWNlbWVudE1hcDo6c2V0WENo
YW5uZWxTZWxlY3Rvcihjb25zdCBDaGFubmVsU2VsZWN0b3JUeXBlIHhDaGFubmVsU2VsZWN0b3Ip
CkBAIC05MSw3ICs5MCw3IEBAIHN0YXRpYyBpbmxpbmUgdW5zaWduZWQgYnl0ZU9mZnNldE9mUGl4
ZWwodW5zaWduZWQgeCwgdW5zaWduZWQgeSwgdW5zaWduZWQgcm93Qnl0CiAgICAgcmV0dXJuIHgg
KiBieXRlc1BlclBpeGVsICsgeSAqIHJvd0J5dGVzOwogfQogCi12b2lkIEZFRGlzcGxhY2VtZW50
TWFwOjpwbGF0Zm9ybUFwcGx5U29mdHdhcmUoKQordm9pZCBGRURpc3BsYWNlbWVudE1hcDo6cGxh
dGZvcm1BcHBseVNvZnR3YXJlKGNvbnN0IEZpbHRlciYgZmlsdGVyKQogewogICAgIEZpbHRlckVm
ZmVjdCogaW4gPSBpbnB1dEVmZmVjdCgwKTsKICAgICBGaWx0ZXJFZmZlY3QqIGluMiA9IGlucHV0
RWZmZWN0KDEpOwpAQCAtMTE3LDExICsxMTYsOSBAQCB2b2lkIEZFRGlzcGxhY2VtZW50TWFwOjpw
bGF0Zm9ybUFwcGx5U29mdHdhcmUoKQogCiAgICAgQVNTRVJUKGlucHV0SW1hZ2UtPmxlbmd0aCgp
ID09IGRpc3BsYWNlbWVudEltYWdlLT5sZW5ndGgoKSk7CiAKLSAgICBGaWx0ZXImIGZpbHRlciA9
IHRoaXMtPmZpbHRlcigpOwogICAgIEludFNpemUgcGFpbnRTaXplID0gYWJzb2x1dGVQYWludFJl
Y3QoKS5zaXplKCk7Ci0gICAgcGFpbnRTaXplLnNjYWxlKGZpbHRlci5maWx0ZXJTY2FsZSgpKTsK
IAotICAgIEZsb2F0U2l6ZSBzY2FsZSA9IGZpbHRlci5zY2FsZWRCeUZpbHRlclJlc29sdXRpb24o
eyBtX3NjYWxlLCBtX3NjYWxlIH0pOworICAgIEZsb2F0U2l6ZSBzY2FsZSA9IGZpbHRlci5zY2Fs
ZWRCeUZpbHRlclNjYWxlKHsgbV9zY2FsZSwgbV9zY2FsZSB9KTsKICAgICBmbG9hdCBzY2FsZUZv
ckNvbG9yWCA9IHNjYWxlLndpZHRoKCkgLyAyNTUuMDsKICAgICBmbG9hdCBzY2FsZUZvckNvbG9y
WSA9IHNjYWxlLmhlaWdodCgpIC8gMjU1LjA7CiAgICAgZmxvYXQgc2NhbGVkT2Zmc2V0WCA9IDAu
NSAtIHNjYWxlLndpZHRoKCkgKiAwLjU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFRGlzcGxhY2VtZW50TWFwLmggYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFRGlzcGxhY2VtZW50TWFwLmgKaW5kZXggZGQ3
MzJhODgxMDczZTI2NmJjODQ2YWZlNjgxOWU2NzUxNjIzYTNhMi4uNmVlNjhiMTA4ZGI3M2IwNzA0
ZmZlZDljNTEwYjQyM2ExYzc1YWRlNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvZmlsdGVycy9GRURpc3BsYWNlbWVudE1hcC5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVEaXNwbGFjZW1lbnRNYXAuaApAQCAtMjIs
NyArMjIsNiBAQAogI3ByYWdtYSBvbmNlCiAKICNpbmNsdWRlICJGaWx0ZXJFZmZlY3QuaCIKLSNp
bmNsdWRlICJGaWx0ZXIuaCIKICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KIAogbmFt
ZXNwYWNlIFdlYkNvcmUgewpAQCAtMzcsNyArMzYsNyBAQCBlbnVtIENoYW5uZWxTZWxlY3RvclR5
cGUgewogCiBjbGFzcyBGRURpc3BsYWNlbWVudE1hcCA6IHB1YmxpYyBGaWx0ZXJFZmZlY3Qgewog
cHVibGljOgotICAgIHN0YXRpYyBSZWY8RkVEaXNwbGFjZW1lbnRNYXA+IGNyZWF0ZShGaWx0ZXIm
LCBDaGFubmVsU2VsZWN0b3JUeXBlIHhDaGFubmVsU2VsZWN0b3IsIENoYW5uZWxTZWxlY3RvclR5
cGUgeUNoYW5uZWxTZWxlY3RvciwgZmxvYXQgc2NhbGUpOworICAgIHN0YXRpYyBSZWY8RkVEaXNw
bGFjZW1lbnRNYXA+IGNyZWF0ZShDaGFubmVsU2VsZWN0b3JUeXBlIHhDaGFubmVsU2VsZWN0b3Is
IENoYW5uZWxTZWxlY3RvclR5cGUgeUNoYW5uZWxTZWxlY3RvciwgZmxvYXQgc2NhbGUpOwogCiAg
ICAgQ2hhbm5lbFNlbGVjdG9yVHlwZSB4Q2hhbm5lbFNlbGVjdG9yKCkgY29uc3QgeyByZXR1cm4g
bV94Q2hhbm5lbFNlbGVjdG9yOyB9CiAgICAgYm9vbCBzZXRYQ2hhbm5lbFNlbGVjdG9yKGNvbnN0
IENoYW5uZWxTZWxlY3RvclR5cGUpOwpAQCAtNTIsMTMgKzUxLDExIEBAIHB1YmxpYzoKICAgICB2
b2lkIHRyYW5zZm9ybVJlc3VsdENvbG9yU3BhY2UoRmlsdGVyRWZmZWN0KiwgY29uc3QgaW50KSBv
dmVycmlkZTsKIAogcHJpdmF0ZToKLSAgICBGRURpc3BsYWNlbWVudE1hcChGaWx0ZXImLCBDaGFu
bmVsU2VsZWN0b3JUeXBlIHhDaGFubmVsU2VsZWN0b3IsIENoYW5uZWxTZWxlY3RvclR5cGUgeUNo
YW5uZWxTZWxlY3RvciwgZmxvYXQpOworICAgIEZFRGlzcGxhY2VtZW50TWFwKENoYW5uZWxTZWxl
Y3RvclR5cGUgeENoYW5uZWxTZWxlY3RvciwgQ2hhbm5lbFNlbGVjdG9yVHlwZSB5Q2hhbm5lbFNl
bGVjdG9yLCBmbG9hdCBzY2FsZSk7CiAKLSAgICBjb25zdCBjaGFyKiBmaWx0ZXJOYW1lKCkgY29u
c3QgZmluYWwgeyByZXR1cm4gIkZFRGlzcGxhY2VtZW50TWFwIjsgfQorICAgIHZvaWQgcGxhdGZv
cm1BcHBseVNvZnR3YXJlKGNvbnN0IEZpbHRlciYpIG92ZXJyaWRlOwogCi0gICAgdm9pZCBwbGF0
Zm9ybUFwcGx5U29mdHdhcmUoKSBvdmVycmlkZTsKLQotICAgIHZvaWQgZGV0ZXJtaW5lQWJzb2x1
dGVQYWludFJlY3QoKSBvdmVycmlkZSB7IHNldEFic29sdXRlUGFpbnRSZWN0KGVuY2xvc2luZ0lu
dFJlY3QobWF4RWZmZWN0UmVjdCgpKSk7IH0KKyAgICB2b2lkIGRldGVybWluZUFic29sdXRlUGFp
bnRSZWN0KGNvbnN0IEZpbHRlciYpIG92ZXJyaWRlIHsgc2V0QWJzb2x1dGVQYWludFJlY3QoZW5j
bG9zaW5nSW50UmVjdChtYXhFZmZlY3RSZWN0KCkpKTsgfQogCiAgICAgaW50IHhDaGFubmVsSW5k
ZXgoKSBjb25zdCB7IHJldHVybiBtX3hDaGFubmVsU2VsZWN0b3IgLSAxOyB9CiAgICAgaW50IHlD
aGFubmVsSW5kZXgoKSBjb25zdCB7IHJldHVybiBtX3lDaGFubmVsU2VsZWN0b3IgLSAxOyB9CkBA
IC03MiwzICs2OSw0IEBAIHByaXZhdGU6CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAorU1BF
Q0lBTElaRV9UWVBFX1RSQUlUU19GSUxURVJfRUZGRUNUKEZFRGlzcGxhY2VtZW50TWFwKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRURyb3BT
aGFkb3cuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRURy
b3BTaGFkb3cuY3BwCmluZGV4IDM1ZmJhYjQxZTgwOTIxNmU0YjIyNDM1MTE4NjIzZTI4ZmZkNjFl
ZmEuLmMzY2U0ZTM2ZTI0NzU4ODQxMmU0NTczZmE2M2EzMTEzNTY2NDc3YWMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVEcm9wU2hhZG93LmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFRHJvcFNo
YWRvdy5jcHAKQEAgLTMxLDggKzMxLDggQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogICAgIAot
RkVEcm9wU2hhZG93OjpGRURyb3BTaGFkb3coRmlsdGVyJiBmaWx0ZXIsIGZsb2F0IHN0ZFgsIGZs
b2F0IHN0ZFksIGZsb2F0IGR4LCBmbG9hdCBkeSwgY29uc3QgQ29sb3ImIHNoYWRvd0NvbG9yLCBm
bG9hdCBzaGFkb3dPcGFjaXR5KQotICAgIDogRmlsdGVyRWZmZWN0KGZpbHRlciwgVHlwZTo6RHJv
cFNoYWRvdykKK0ZFRHJvcFNoYWRvdzo6RkVEcm9wU2hhZG93KGZsb2F0IHN0ZFgsIGZsb2F0IHN0
ZFksIGZsb2F0IGR4LCBmbG9hdCBkeSwgY29uc3QgQ29sb3ImIHNoYWRvd0NvbG9yLCBmbG9hdCBz
aGFkb3dPcGFjaXR5KQorICAgIDogRmlsdGVyRWZmZWN0KEZpbHRlckVmZmVjdDo6VHlwZTo6RkVE
cm9wU2hhZG93KQogICAgICwgbV9zdGRYKHN0ZFgpCiAgICAgLCBtX3N0ZFkoc3RkWSkKICAgICAs
IG1fZHgoZHgpCkBAIC00MiwxOCArNDIsMTYgQEAgRkVEcm9wU2hhZG93OjpGRURyb3BTaGFkb3co
RmlsdGVyJiBmaWx0ZXIsIGZsb2F0IHN0ZFgsIGZsb2F0IHN0ZFksIGZsb2F0IGR4LCBmbG8KIHsK
IH0KIAotUmVmPEZFRHJvcFNoYWRvdz4gRkVEcm9wU2hhZG93OjpjcmVhdGUoRmlsdGVyJiBmaWx0
ZXIsIGZsb2F0IHN0ZFgsIGZsb2F0IHN0ZFksIGZsb2F0IGR4LCBmbG9hdCBkeSwgY29uc3QgQ29s
b3ImIHNoYWRvd0NvbG9yLCBmbG9hdCBzaGFkb3dPcGFjaXR5KQorUmVmPEZFRHJvcFNoYWRvdz4g
RkVEcm9wU2hhZG93OjpjcmVhdGUoZmxvYXQgc3RkWCwgZmxvYXQgc3RkWSwgZmxvYXQgZHgsIGZs
b2F0IGR5LCBjb25zdCBDb2xvciYgc2hhZG93Q29sb3IsIGZsb2F0IHNoYWRvd09wYWNpdHkpCiB7
Ci0gICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgRkVEcm9wU2hhZG93KGZpbHRlciwgc3RkWCwgc3Rk
WSwgZHgsIGR5LCBzaGFkb3dDb2xvciwgc2hhZG93T3BhY2l0eSkpOworICAgIHJldHVybiBhZG9w
dFJlZigqbmV3IEZFRHJvcFNoYWRvdyhzdGRYLCBzdGRZLCBkeCwgZHksIHNoYWRvd0NvbG9yLCBz
aGFkb3dPcGFjaXR5KSk7CiB9CiAKLXZvaWQgRkVEcm9wU2hhZG93OjpkZXRlcm1pbmVBYnNvbHV0
ZVBhaW50UmVjdCgpCit2b2lkIEZFRHJvcFNoYWRvdzo6ZGV0ZXJtaW5lQWJzb2x1dGVQYWludFJl
Y3QoY29uc3QgRmlsdGVyJiBmaWx0ZXIpCiB7Ci0gICAgRmlsdGVyJiBmaWx0ZXIgPSB0aGlzLT5m
aWx0ZXIoKTsKLQogICAgIEZsb2F0UmVjdCBhYnNvbHV0ZVBhaW50UmVjdCA9IGlucHV0RWZmZWN0
KDApLT5hYnNvbHV0ZVBhaW50UmVjdCgpOwogICAgIEZsb2F0UmVjdCBhYnNvbHV0ZU9mZnNldFBh
aW50UmVjdChhYnNvbHV0ZVBhaW50UmVjdCk7Ci0gICAgYWJzb2x1dGVPZmZzZXRQYWludFJlY3Qu
bW92ZShmaWx0ZXIuc2NhbGVkQnlGaWx0ZXJSZXNvbHV0aW9uKHsgbV9keCwgbV9keSB9KSk7Cisg
ICAgYWJzb2x1dGVPZmZzZXRQYWludFJlY3QubW92ZShmaWx0ZXIuc2NhbGVkQnlGaWx0ZXJTY2Fs
ZSh7IG1fZHgsIG1fZHkgfSkpOwogICAgIGFic29sdXRlUGFpbnRSZWN0LnVuaXRlKGFic29sdXRl
T2Zmc2V0UGFpbnRSZWN0KTsKIAogICAgIEludFNpemUga2VybmVsU2l6ZSA9IEZFR2F1c3NpYW5C
bHVyOjpjYWxjdWxhdGVLZXJuZWxTaXplKGZpbHRlciwgeyBtX3N0ZFgsIG1fc3RkWSB9KTsKQEAg
LTcwLDcgKzY4LDcgQEAgdm9pZCBGRURyb3BTaGFkb3c6OmRldGVybWluZUFic29sdXRlUGFpbnRS
ZWN0KCkKICAgICBzZXRBYnNvbHV0ZVBhaW50UmVjdChlbmNsb3NpbmdJbnRSZWN0KGFic29sdXRl
UGFpbnRSZWN0KSk7CiB9CiAKLXZvaWQgRkVEcm9wU2hhZG93OjpwbGF0Zm9ybUFwcGx5U29mdHdh
cmUoKQordm9pZCBGRURyb3BTaGFkb3c6OnBsYXRmb3JtQXBwbHlTb2Z0d2FyZShjb25zdCBGaWx0
ZXImIGZpbHRlcikKIHsKICAgICBGaWx0ZXJFZmZlY3QqIGluID0gaW5wdXRFZmZlY3QoMCk7CiAK
QEAgLTc4LDExICs3Niw4IEBAIHZvaWQgRkVEcm9wU2hhZG93OjpwbGF0Zm9ybUFwcGx5U29mdHdh
cmUoKQogICAgIGlmICghcmVzdWx0SW1hZ2UpCiAgICAgICAgIHJldHVybjsKIAotICAgIEZpbHRl
ciYgZmlsdGVyID0gdGhpcy0+ZmlsdGVyKCk7Ci0gICAgCi0gICAgRmxvYXRTaXplIGJsdXJSYWRp
dXMgPSAyICogZmlsdGVyLnNjYWxlZEJ5RmlsdGVyUmVzb2x1dGlvbih7IG1fc3RkWCwgbV9zdGRZ
IH0pOwotICAgIGJsdXJSYWRpdXMuc2NhbGUoZmlsdGVyLmZpbHRlclNjYWxlKCkpOwotICAgIEZs
b2F0U2l6ZSBvZmZzZXQgPSBmaWx0ZXIuc2NhbGVkQnlGaWx0ZXJSZXNvbHV0aW9uKHsgbV9keCwg
bV9keSB9KTsKKyAgICBGbG9hdFNpemUgYmx1clJhZGl1cyA9IDIgKiBmaWx0ZXIuc2NhbGVkQnlG
aWx0ZXJTY2FsZSh7IG1fc3RkWCwgbV9zdGRZIH0pOworICAgIEZsb2F0U2l6ZSBvZmZzZXQgPSBm
aWx0ZXIuc2NhbGVkQnlGaWx0ZXJTY2FsZSh7IG1fZHgsIG1fZHkgfSk7CiAKICAgICBGbG9hdFJl
Y3QgZHJhd2luZ1JlZ2lvbiA9IGRyYXdpbmdSZWdpb25PZklucHV0SW1hZ2UoaW4tPmFic29sdXRl
UGFpbnRSZWN0KCkpOwogICAgIEZsb2F0UmVjdCBkcmF3aW5nUmVnaW9uV2l0aE9mZnNldChkcmF3
aW5nUmVnaW9uKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2ZpbHRlcnMvRkVEcm9wU2hhZG93LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9maWx0ZXJzL0ZFRHJvcFNoYWRvdy5oCmluZGV4IGI0ZTBhMjAxMmZlZGI3Yjc3YmYzZTA1NzM0
ZWU4OGEyOWVmZjM4NGMuLjE3NzA1NmJiY2Y4ODNlNjRiZDE0ZTFjNGY4NWI3NGRmNjczZmM0M2Yg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVE
cm9wU2hhZG93LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVy
cy9GRURyb3BTaGFkb3cuaApAQCAtMjAsMTQgKzIwLDEzIEBACiAjcHJhZ21hIG9uY2UKIAogI2lu
Y2x1ZGUgIkNvbG9yLmgiCi0jaW5jbHVkZSAiRmlsdGVyLmgiCiAjaW5jbHVkZSAiRmlsdGVyRWZm
ZWN0LmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAKIGNsYXNzIEZFRHJvcFNoYWRvdyA6
IHB1YmxpYyBGaWx0ZXJFZmZlY3QgewogcHVibGljOgotICAgIHN0YXRpYyBSZWY8RkVEcm9wU2hh
ZG93PiBjcmVhdGUoRmlsdGVyJiwgZmxvYXQsIGZsb2F0LCBmbG9hdCwgZmxvYXQsIGNvbnN0IENv
bG9yJiwgZmxvYXQpOworICAgIHN0YXRpYyBSZWY8RkVEcm9wU2hhZG93PiBjcmVhdGUoZmxvYXQg
c3RkWCwgZmxvYXQgc3RkWSwgZmxvYXQgZHgsIGZsb2F0IGR5LCBjb25zdCBDb2xvciYgc2hhZG93
Q29sb3IsIGZsb2F0IHNoYWRvd09wYWNpdHkpOwogCiAgICAgZmxvYXQgc3RkRGV2aWF0aW9uWCgp
IGNvbnN0IHsgcmV0dXJuIG1fc3RkWDsgfQogICAgIHZvaWQgc2V0U3RkRGV2aWF0aW9uWChmbG9h
dCBzdGRYKSB7IG1fc3RkWCA9IHN0ZFg7IH0KQEAgLTQ4LDEzICs0NywxMSBAQCBwdWJsaWM6CiAg
ICAgdm9pZCBzZXRTaGFkb3dPcGFjaXR5KGZsb2F0IHNoYWRvd09wYWNpdHkpIHsgbV9zaGFkb3dP
cGFjaXR5ID0gc2hhZG93T3BhY2l0eTsgfQogCiBwcml2YXRlOgotICAgIEZFRHJvcFNoYWRvdyhG
aWx0ZXImLCBmbG9hdCwgZmxvYXQsIGZsb2F0LCBmbG9hdCwgY29uc3QgQ29sb3ImLCBmbG9hdCk7
CisgICAgRkVEcm9wU2hhZG93KGZsb2F0IHN0ZFgsIGZsb2F0IHN0ZFksIGZsb2F0IGR4LCBmbG9h
dCBkeSwgY29uc3QgQ29sb3ImIHNoYWRvd0NvbG9yLCBmbG9hdCBzaGFkb3dPcGFjaXR5KTsKIAot
ICAgIGNvbnN0IGNoYXIqIGZpbHRlck5hbWUoKSBjb25zdCBmaW5hbCB7IHJldHVybiAiRkVEcm9w
U2hhZG93IjsgfQorICAgIHZvaWQgcGxhdGZvcm1BcHBseVNvZnR3YXJlKGNvbnN0IEZpbHRlciYp
IG92ZXJyaWRlOwogCi0gICAgdm9pZCBwbGF0Zm9ybUFwcGx5U29mdHdhcmUoKSBvdmVycmlkZTsK
LQotICAgIHZvaWQgZGV0ZXJtaW5lQWJzb2x1dGVQYWludFJlY3QoKSBvdmVycmlkZTsKKyAgICB2
b2lkIGRldGVybWluZUFic29sdXRlUGFpbnRSZWN0KGNvbnN0IEZpbHRlciYpIG92ZXJyaWRlOwog
CiAgICAgSW50T3V0c2V0cyBvdXRzZXRzKCkgY29uc3Qgb3ZlcnJpZGU7CiAKQEAgLTcwLDMgKzY3
LDQgQEAgcHJpdmF0ZToKICAgICAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAorU1BFQ0lBTEla
RV9UWVBFX1RSQUlUU19GSUxURVJfRUZGRUNUKEZFRHJvcFNoYWRvdykKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVGbG9vZC5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFRmxvb2QuY3BwCmluZGV4IGI0
MjM1NTM0YzM4YjFlYmEyMTFlZTg0ODYxNzk5MjM4MGYzYjZiMDEuLjhiZDllMzVjOTFhYWUyZjNm
NWEzMGRhNjA1NzRkNWZlYjQ1ZjBjZWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVGbG9vZC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRUZsb29kLmNwcApAQCAtMzAsMTYgKzMwLDE2IEBACiAK
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotRkVGbG9vZDo6RkVGbG9vZChGaWx0ZXImIGZpbHRlciwg
Y29uc3QgQ29sb3ImIGZsb29kQ29sb3IsIGZsb2F0IGZsb29kT3BhY2l0eSkKLSAgICA6IEZpbHRl
ckVmZmVjdChmaWx0ZXIsIFR5cGU6OkZsb29kKQorRkVGbG9vZDo6RkVGbG9vZChjb25zdCBDb2xv
ciYgZmxvb2RDb2xvciwgZmxvYXQgZmxvb2RPcGFjaXR5KQorICAgIDogRmlsdGVyRWZmZWN0KEZp
bHRlckVmZmVjdDo6VHlwZTo6RkVGbG9vZCkKICAgICAsIG1fZmxvb2RDb2xvcihmbG9vZENvbG9y
KQogICAgICwgbV9mbG9vZE9wYWNpdHkoZmxvb2RPcGFjaXR5KQogewogfQogCi1SZWY8RkVGbG9v
ZD4gRkVGbG9vZDo6Y3JlYXRlKEZpbHRlciYgZmlsdGVyLCBjb25zdCBDb2xvciYgZmxvb2RDb2xv
ciwgZmxvYXQgZmxvb2RPcGFjaXR5KQorUmVmPEZFRmxvb2Q+IEZFRmxvb2Q6OmNyZWF0ZShjb25z
dCBDb2xvciYgZmxvb2RDb2xvciwgZmxvYXQgZmxvb2RPcGFjaXR5KQogewotICAgIHJldHVybiBh
ZG9wdFJlZigqbmV3IEZFRmxvb2QoZmlsdGVyLCBmbG9vZENvbG9yLCBmbG9vZE9wYWNpdHkpKTsK
KyAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBGRUZsb29kKGZsb29kQ29sb3IsIGZsb29kT3BhY2l0
eSkpOwogfQogCiBib29sIEZFRmxvb2Q6OnNldEZsb29kQ29sb3IoY29uc3QgQ29sb3ImIGNvbG9y
KQpAQCAtNTgsNyArNTgsNyBAQCBib29sIEZFRmxvb2Q6OnNldEZsb29kT3BhY2l0eShmbG9hdCBm
bG9vZE9wYWNpdHkpCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLXZvaWQgRkVGbG9vZDo6cGxhdGZv
cm1BcHBseVNvZnR3YXJlKCkKK3ZvaWQgRkVGbG9vZDo6cGxhdGZvcm1BcHBseVNvZnR3YXJlKGNv
bnN0IEZpbHRlciYpCiB7CiAgICAgSW1hZ2VCdWZmZXIqIHJlc3VsdEltYWdlID0gY3JlYXRlSW1h
Z2VCdWZmZXJSZXN1bHQoKTsKICAgICBpZiAoIXJlc3VsdEltYWdlKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRUZsb29kLmggYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFRmxvb2QuaAppbmRleCBiNzA0ZGM5
NjljNmQ3NTg4YmNlYjBhZDhiMjQ2ODJmYTA2MTczNDhlLi5hMjA3ODE5MmU2Njg2NWQ3MjhkNGFl
NDczMzRhYjE0OGNiMTRkODhkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9maWx0ZXJzL0ZFRmxvb2QuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9maWx0ZXJzL0ZFRmxvb2QuaApAQCAtMjIsMTQgKzIyLDEzIEBACiAjcHJhZ21hIG9u
Y2UKIAogI2luY2x1ZGUgIkNvbG9yLmgiCi0jaW5jbHVkZSAiRmlsdGVyLmgiCiAjaW5jbHVkZSAi
RmlsdGVyRWZmZWN0LmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgRkVGbG9vZCA6
IHB1YmxpYyBGaWx0ZXJFZmZlY3QgewogcHVibGljOgotICAgIHN0YXRpYyBSZWY8RkVGbG9vZD4g
Y3JlYXRlKEZpbHRlciYsIGNvbnN0IENvbG9yJiwgZmxvYXQpOworICAgIHN0YXRpYyBSZWY8RkVG
bG9vZD4gY3JlYXRlKGNvbnN0IENvbG9yJiBmbG9vZENvbG9yLCBmbG9hdCBmbG9vZE9wYWNpdHkp
OwogCiAgICAgY29uc3QgQ29sb3ImIGZsb29kQ29sb3IoKSBjb25zdCB7IHJldHVybiBtX2Zsb29k
Q29sb3I7IH0KICAgICBib29sIHNldEZsb29kQ29sb3IoY29uc3QgQ29sb3ImKTsKQEAgLTQ1LDEz
ICs0NCwxMSBAQCBwdWJsaWM6CiAjZW5kaWYKIAogcHJpdmF0ZToKLSAgICBGRUZsb29kKEZpbHRl
ciYsIGNvbnN0IENvbG9yJiwgZmxvYXQpOworICAgIEZFRmxvb2QoY29uc3QgQ29sb3ImIGZsb29k
Q29sb3IsIGZsb2F0IGZsb29kT3BhY2l0eSk7CiAKLSAgICBjb25zdCBjaGFyKiBmaWx0ZXJOYW1l
KCkgY29uc3QgZmluYWwgeyByZXR1cm4gIkZFRmxvb2QiOyB9CisgICAgdm9pZCBwbGF0Zm9ybUFw
cGx5U29mdHdhcmUoY29uc3QgRmlsdGVyJikgb3ZlcnJpZGU7CiAKLSAgICB2b2lkIHBsYXRmb3Jt
QXBwbHlTb2Z0d2FyZSgpIG92ZXJyaWRlOwotCi0gICAgdm9pZCBkZXRlcm1pbmVBYnNvbHV0ZVBh
aW50UmVjdCgpIG92ZXJyaWRlIHsgc2V0QWJzb2x1dGVQYWludFJlY3QoZW5jbG9zaW5nSW50UmVj
dChtYXhFZmZlY3RSZWN0KCkpKTsgfQorICAgIHZvaWQgZGV0ZXJtaW5lQWJzb2x1dGVQYWludFJl
Y3QoY29uc3QgRmlsdGVyJikgb3ZlcnJpZGUgeyBzZXRBYnNvbHV0ZVBhaW50UmVjdChlbmNsb3Np
bmdJbnRSZWN0KG1heEVmZmVjdFJlY3QoKSkpOyB9CiAKICAgICBXVEY6OlRleHRTdHJlYW0mIGV4
dGVybmFsUmVwcmVzZW50YXRpb24oV1RGOjpUZXh0U3RyZWFtJiwgUmVwcmVzZW50YXRpb25UeXBl
KSBjb25zdCBvdmVycmlkZTsKIApAQCAtNjEsMyArNTgsNCBAQCBwcml2YXRlOgogCiB9IC8vIG5h
bWVzcGFjZSBXZWJDb3JlCiAKK1NQRUNJQUxJWkVfVFlQRV9UUkFJVFNfRklMVEVSX0VGRkVDVChG
RUZsb29kKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmls
dGVycy9GRUdhdXNzaWFuQmx1ci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9maWx0ZXJzL0ZFR2F1c3NpYW5CbHVyLmNwcAppbmRleCAwZjZlZTg3Zjk1ZTc1NzUxODYzZmQy
ZTVmNTQ5ZTc0ZDk3MjlkYjFmLi5kMjgwOGZlZGExZmE2ZDc4ZDhjMzA4MjJlYjY0NzI2ZmUxZWM2
YTZmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJz
L0ZFR2F1c3NpYW5CbHVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9maWx0ZXJzL0ZFR2F1c3NpYW5CbHVyLmNwcApAQCAtNzksMTcgKzc5LDE3IEBAIGlubGluZSB2
b2lkIGtlcm5lbFBvc2l0aW9uKGludCBibHVySXRlcmF0aW9uLCB1bnNpZ25lZCYgcmFkaXVzLCBp
bnQmIGRlbHRhTGVmdCwKICAgICB9CiB9CiAKLUZFR2F1c3NpYW5CbHVyOjpGRUdhdXNzaWFuQmx1
cihGaWx0ZXImIGZpbHRlciwgZmxvYXQgeCwgZmxvYXQgeSwgRWRnZU1vZGVUeXBlIGVkZ2VNb2Rl
KQotICAgIDogRmlsdGVyRWZmZWN0KGZpbHRlciwgVHlwZTo6R2F1c3NpYW5CbHVyKQorRkVHYXVz
c2lhbkJsdXI6OkZFR2F1c3NpYW5CbHVyKGZsb2F0IHgsIGZsb2F0IHksIEVkZ2VNb2RlVHlwZSBl
ZGdlTW9kZSkKKyAgICA6IEZpbHRlckVmZmVjdChGaWx0ZXJFZmZlY3Q6OlR5cGU6OkZFR2F1c3Np
YW5CbHVyKQogICAgICwgbV9zdGRYKHgpCiAgICAgLCBtX3N0ZFkoeSkKICAgICAsIG1fZWRnZU1v
ZGUoZWRnZU1vZGUpCiB7CiB9CiAKLVJlZjxGRUdhdXNzaWFuQmx1cj4gRkVHYXVzc2lhbkJsdXI6
OmNyZWF0ZShGaWx0ZXImIGZpbHRlciwgZmxvYXQgeCwgZmxvYXQgeSwgRWRnZU1vZGVUeXBlIGVk
Z2VNb2RlKQorUmVmPEZFR2F1c3NpYW5CbHVyPiBGRUdhdXNzaWFuQmx1cjo6Y3JlYXRlKGZsb2F0
IHgsIGZsb2F0IHksIEVkZ2VNb2RlVHlwZSBlZGdlTW9kZSkKIHsKLSAgICByZXR1cm4gYWRvcHRS
ZWYoKm5ldyBGRUdhdXNzaWFuQmx1cihmaWx0ZXIsIHgsIHksIGVkZ2VNb2RlKSk7CisgICAgcmV0
dXJuIGFkb3B0UmVmKCpuZXcgRkVHYXVzc2lhbkJsdXIoeCwgeSwgZWRnZU1vZGUpKTsKIH0KIAog
dm9pZCBGRUdhdXNzaWFuQmx1cjo6c2V0U3RkRGV2aWF0aW9uWChmbG9hdCB4KQpAQCAtNDg1LDcg
KzQ4NSw3IEBAIEludFNpemUgRkVHYXVzc2lhbkJsdXI6OmNhbGN1bGF0ZVVuc2NhbGVkS2VybmVs
U2l6ZShGbG9hdFNpemUgc3RkRGV2aWF0aW9uKQogCiBJbnRTaXplIEZFR2F1c3NpYW5CbHVyOjpj
YWxjdWxhdGVLZXJuZWxTaXplKGNvbnN0IEZpbHRlciYgZmlsdGVyLCBGbG9hdFNpemUgc3RkRGV2
aWF0aW9uKQogewotICAgIHJldHVybiBjYWxjdWxhdGVVbnNjYWxlZEtlcm5lbFNpemUoZmlsdGVy
LnNjYWxlZEJ5RmlsdGVyUmVzb2x1dGlvbihzdGREZXZpYXRpb24pKTsKKyAgICByZXR1cm4gY2Fs
Y3VsYXRlVW5zY2FsZWRLZXJuZWxTaXplKGZpbHRlci5zY2FsZWRCeUZpbHRlclNjYWxlKHN0ZERl
dmlhdGlvbikpOwogfQogCiBJbnRTaXplIEZFR2F1c3NpYW5CbHVyOjpjYWxjdWxhdGVPdXRzZXRT
aXplKEZsb2F0U2l6ZSBzdGREZXZpYXRpb24pCkBAIC00OTYsOSArNDk2LDkgQEAgSW50U2l6ZSBG
RUdhdXNzaWFuQmx1cjo6Y2FsY3VsYXRlT3V0c2V0U2l6ZShGbG9hdFNpemUgc3RkRGV2aWF0aW9u
KQogICAgIHJldHVybiB7IDMgKiBrZXJuZWxTaXplLndpZHRoKCkgLyAyLCAzICoga2VybmVsU2l6
ZS5oZWlnaHQoKSAvIDIgfTsKIH0KIAotdm9pZCBGRUdhdXNzaWFuQmx1cjo6ZGV0ZXJtaW5lQWJz
b2x1dGVQYWludFJlY3QoKQordm9pZCBGRUdhdXNzaWFuQmx1cjo6ZGV0ZXJtaW5lQWJzb2x1dGVQ
YWludFJlY3QoY29uc3QgRmlsdGVyJiBmaWx0ZXIpCiB7Ci0gICAgSW50U2l6ZSBrZXJuZWxTaXpl
ID0gY2FsY3VsYXRlS2VybmVsU2l6ZShmaWx0ZXIoKSwgeyBtX3N0ZFgsIG1fc3RkWSB9KTsKKyAg
ICBJbnRTaXplIGtlcm5lbFNpemUgPSBjYWxjdWxhdGVLZXJuZWxTaXplKGZpbHRlciwgeyBtX3N0
ZFgsIG1fc3RkWSB9KTsKIAogICAgIEZsb2F0UmVjdCBhYnNvbHV0ZVBhaW50UmVjdCA9IGlucHV0
RWZmZWN0KDApLT5hYnNvbHV0ZVBhaW50UmVjdCgpOwogICAgIC8vIEVkZ2UgbW9kZXMgb3RoZXIg
dGhhbiAnbm9uZScgZG8gbm90IGluZmxhdGUgdGhlIGFmZmVjdGVkIHBhaW50IHJlY3QuCkBAIC01
MTksNyArNTE5LDcgQEAgdm9pZCBGRUdhdXNzaWFuQmx1cjo6ZGV0ZXJtaW5lQWJzb2x1dGVQYWlu
dFJlY3QoKQogICAgIHNldEFic29sdXRlUGFpbnRSZWN0KGVuY2xvc2luZ0ludFJlY3QoYWJzb2x1
dGVQYWludFJlY3QpKTsKIH0KIAotdm9pZCBGRUdhdXNzaWFuQmx1cjo6cGxhdGZvcm1BcHBseVNv
ZnR3YXJlKCkKK3ZvaWQgRkVHYXVzc2lhbkJsdXI6OnBsYXRmb3JtQXBwbHlTb2Z0d2FyZShjb25z
dCBGaWx0ZXImIGZpbHRlcikKIHsKICAgICBGaWx0ZXJFZmZlY3QqIGluID0gaW5wdXRFZmZlY3Qo
MCk7CiAKQEAgLTUzNiwxMSArNTM2LDkgQEAgdm9pZCBGRUdhdXNzaWFuQmx1cjo6cGxhdGZvcm1B
cHBseVNvZnR3YXJlKCkKICAgICBpZiAoIW1fc3RkWCAmJiAhbV9zdGRZKQogICAgICAgICByZXR1
cm47CiAKLSAgICBJbnRTaXplIGtlcm5lbFNpemUgPSBjYWxjdWxhdGVLZXJuZWxTaXplKGZpbHRl
cigpLCB7IG1fc3RkWCwgbV9zdGRZIH0pOwotICAgIGtlcm5lbFNpemUuc2NhbGUoZmlsdGVyKCku
ZmlsdGVyU2NhbGUoKSk7CisgICAgSW50U2l6ZSBrZXJuZWxTaXplID0gY2FsY3VsYXRlS2VybmVs
U2l6ZShmaWx0ZXIsIHsgbV9zdGRYLCBtX3N0ZFkgfSk7CiAKICAgICBJbnRTaXplIHBhaW50U2l6
ZSA9IGFic29sdXRlUGFpbnRSZWN0KCkuc2l6ZSgpOwotICAgIHBhaW50U2l6ZS5zY2FsZShmaWx0
ZXIoKS5maWx0ZXJTY2FsZSgpKTsKICAgICBhdXRvIHRtcEltYWdlRGF0YSA9IFVpbnQ4Q2xhbXBl
ZEFycmF5Ojp0cnlDcmVhdGVVbmluaXRpYWxpemVkKHBhaW50U2l6ZS5hcmVhKCkgKiA0KTsKICAg
ICBpZiAoIXRtcEltYWdlRGF0YSkKICAgICAgICAgcmV0dXJuOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRUdhdXNzaWFuQmx1ci5oIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRUdhdXNzaWFuQmx1ci5oCmlu
ZGV4IDVmYjk3ZmZiMDcwYzJkYWViNmViMjgzYmVhYWExNzY0N2NiYjJkM2UuLjc2OTYyM2FmYTU0
MmMwZDg2MjVhZGRhMDU5MjUwZjU4NWUwNTNhZjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVHYXVzc2lhbkJsdXIuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFR2F1c3NpYW5CbHVyLmgKQEAgLTIy
LDE0ICsyMiwxMyBAQAogI3ByYWdtYSBvbmNlCiAKICNpbmNsdWRlICJGRUNvbnZvbHZlTWF0cml4
LmgiCi0jaW5jbHVkZSAiRmlsdGVyLmgiCiAjaW5jbHVkZSAiRmlsdGVyRWZmZWN0LmgiCiAKIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgRkVHYXVzc2lhbkJsdXIgOiBwdWJsaWMgRmlsdGVy
RWZmZWN0IHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUmVmPEZFR2F1c3NpYW5CbHVyPiBjcmVhdGUo
RmlsdGVyJiwgZmxvYXQsIGZsb2F0LCBFZGdlTW9kZVR5cGUpOworICAgIHN0YXRpYyBSZWY8RkVH
YXVzc2lhbkJsdXI+IGNyZWF0ZShmbG9hdCB4LCBmbG9hdCB5LCBFZGdlTW9kZVR5cGUpOwogCiAg
ICAgZmxvYXQgc3RkRGV2aWF0aW9uWCgpIGNvbnN0IHsgcmV0dXJuIG1fc3RkWDsgfQogICAgIHZv
aWQgc2V0U3RkRGV2aWF0aW9uWChmbG9hdCk7CkBAIC00NSw5ICs0NCw3IEBAIHB1YmxpYzoKICAg
ICBzdGF0aWMgSW50U2l6ZSBjYWxjdWxhdGVPdXRzZXRTaXplKEZsb2F0U2l6ZSBzdGREZXZpYXRp
b24pOwogCiBwcml2YXRlOgotICAgIEZFR2F1c3NpYW5CbHVyKEZpbHRlciYsIGZsb2F0LCBmbG9h
dCwgRWRnZU1vZGVUeXBlKTsKLQotICAgIGNvbnN0IGNoYXIqIGZpbHRlck5hbWUoKSBjb25zdCBm
aW5hbCB7IHJldHVybiAiRkVHYXVzc2lhbkJsdXIiOyB9CisgICAgRkVHYXVzc2lhbkJsdXIoZmxv
YXQgeCwgZmxvYXQgeSwgRWRnZU1vZGVUeXBlKTsKIAogICAgIHN0YXRpYyBjb25zdCBpbnQgc19t
aW5pbWFsUmVjdERpbWVuc2lvbiA9IDEwMCAqIDEwMDsgLy8gRW1waXJpY2FsIGRhdGEgbGltaXQg
Zm9yIHBhcmFsbGVsIGpvYnMKIApAQCAtNjQsOSArNjEsOSBAQCBwcml2YXRlOgogICAgICAgICB1
bnNpZ25lZCBrZXJuZWxTaXplWTsKICAgICB9OwogCi0gICAgdm9pZCBwbGF0Zm9ybUFwcGx5U29m
dHdhcmUoKSBvdmVycmlkZTsKKyAgICB2b2lkIHBsYXRmb3JtQXBwbHlTb2Z0d2FyZShjb25zdCBG
aWx0ZXImKSBvdmVycmlkZTsKIAotICAgIHZvaWQgZGV0ZXJtaW5lQWJzb2x1dGVQYWludFJlY3Qo
KSBvdmVycmlkZTsKKyAgICB2b2lkIGRldGVybWluZUFic29sdXRlUGFpbnRSZWN0KGNvbnN0IEZp
bHRlciYpIG92ZXJyaWRlOwogCiAgICAgSW50T3V0c2V0cyBvdXRzZXRzKCkgY29uc3Qgb3ZlcnJp
ZGU7CiAKQEAgLTgzLDMgKzgwLDQgQEAgcHJpdmF0ZToKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29y
ZQogCitTUEVDSUFMSVpFX1RZUEVfVFJBSVRTX0ZJTFRFUl9FRkZFQ1QoRkVHYXVzc2lhbkJsdXIp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZF
TGlnaHRpbmcuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9G
RUxpZ2h0aW5nLmNwcAppbmRleCA2NTliMTA1NWY2MWVhYWJjNWYyOTk5MWRhMGRhMWE1ODUwNzFh
ZTkyLi45MTE4YTliZjI1MmVjODIwNjQ3MDNkNWRhZjFmNmZhODQwNTJhMGM0IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFTGlnaHRpbmcuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVMaWdodGlu
Zy5jcHAKQEAgLTM1LDggKzM1LDggQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1GRUxpZ2h0
aW5nOjpGRUxpZ2h0aW5nKEZpbHRlciYgZmlsdGVyLCBMaWdodGluZ1R5cGUgbGlnaHRpbmdUeXBl
LCBjb25zdCBDb2xvciYgbGlnaHRpbmdDb2xvciwgZmxvYXQgc3VyZmFjZVNjYWxlLCBmbG9hdCBk
aWZmdXNlQ29uc3RhbnQsIGZsb2F0IHNwZWN1bGFyQ29uc3RhbnQsIGZsb2F0IHNwZWN1bGFyRXhw
b25lbnQsIGZsb2F0IGtlcm5lbFVuaXRMZW5ndGhYLCBmbG9hdCBrZXJuZWxVbml0TGVuZ3RoWSwg
UmVmPExpZ2h0U291cmNlPiYmIGxpZ2h0U291cmNlLCBUeXBlIHR5cGUpCi0gICAgOiBGaWx0ZXJF
ZmZlY3QoZmlsdGVyLCB0eXBlKQorRkVMaWdodGluZzo6RkVMaWdodGluZyhMaWdodGluZ1R5cGUg
bGlnaHRpbmdUeXBlLCBjb25zdCBDb2xvciYgbGlnaHRpbmdDb2xvciwgZmxvYXQgc3VyZmFjZVNj
YWxlLCBmbG9hdCBkaWZmdXNlQ29uc3RhbnQsIGZsb2F0IHNwZWN1bGFyQ29uc3RhbnQsIGZsb2F0
IHNwZWN1bGFyRXhwb25lbnQsIGZsb2F0IGtlcm5lbFVuaXRMZW5ndGhYLCBmbG9hdCBrZXJuZWxV
bml0TGVuZ3RoWSwgUmVmPExpZ2h0U291cmNlPiYmIGxpZ2h0U291cmNlLCBUeXBlIHR5cGUpCisg
ICAgOiBGaWx0ZXJFZmZlY3QodHlwZSkKICAgICAsIG1fbGlnaHRpbmdUeXBlKGxpZ2h0aW5nVHlw
ZSkKICAgICAsIG1fbGlnaHRTb3VyY2UoV1RGTW92ZShsaWdodFNvdXJjZSkpCiAgICAgLCBtX2xp
Z2h0aW5nQ29sb3IobGlnaHRpbmdDb2xvcikKQEAgLTQ3MSw3ICs0NzEsNyBAQCBib29sIEZFTGln
aHRpbmc6OmRyYXdMaWdodGluZyhVaW50OENsYW1wZWRBcnJheSYgcGl4ZWxzLCBpbnQgd2lkdGgs
IGludCBoZWlnaHQpCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLXZvaWQgRkVMaWdodGluZzo6cGxh
dGZvcm1BcHBseVNvZnR3YXJlKCkKK3ZvaWQgRkVMaWdodGluZzo6cGxhdGZvcm1BcHBseVNvZnR3
YXJlKGNvbnN0IEZpbHRlciYpCiB7CiAgICAgRmlsdGVyRWZmZWN0KiBpbiA9IGlucHV0RWZmZWN0
KDApOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0
ZXJzL0ZFTGlnaHRpbmcuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRl
cnMvRkVMaWdodGluZy5oCmluZGV4IGIwYmI3MGExNGQxNzQ5NTA2NzM3ZTg4ZTA1MTRlZTc5Njgy
MGE0NDkuLmQ4NTJmOGIxM2RkNzk3ZjhlODk5MzUxZjhiNThkMzU4NWEwM2YzOGIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVMaWdodGluZy5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVMaWdodGlu
Zy5oCkBAIC0yNyw3ICsyNyw2IEBACiAjcHJhZ21hIG9uY2UKIAogI2luY2x1ZGUgIkNvbG9yLmgi
Ci0jaW5jbHVkZSAiRmlsdGVyLmgiCiAjaW5jbHVkZSAiRmlsdGVyRWZmZWN0LmgiCiAjaW5jbHVk
ZSAiTGlnaHRTb3VyY2UuaCIKICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9Gb3J3YXJkLmg+CkBA
IC00MCw3ICszOSw3IEBAIHN0cnVjdCBGRUxpZ2h0aW5nUGFpbnRpbmdEYXRhRm9yTmVvbjsKIAog
Y2xhc3MgRkVMaWdodGluZyA6IHB1YmxpYyBGaWx0ZXJFZmZlY3QgewogcHVibGljOgotICAgIHZv
aWQgZGV0ZXJtaW5lQWJzb2x1dGVQYWludFJlY3QoKSBvdmVycmlkZSB7IHNldEFic29sdXRlUGFp
bnRSZWN0KGVuY2xvc2luZ0ludFJlY3QobWF4RWZmZWN0UmVjdCgpKSk7IH0KKyAgICB2b2lkIGRl
dGVybWluZUFic29sdXRlUGFpbnRSZWN0KGNvbnN0IEZpbHRlciYpIG92ZXJyaWRlIHsgc2V0QWJz
b2x1dGVQYWludFJlY3QoZW5jbG9zaW5nSW50UmVjdChtYXhFZmZlY3RSZWN0KCkpKTsgfQogCiAg
ICAgZmxvYXQgc3VyZmFjZVNjYWxlKCkgY29uc3QgeyByZXR1cm4gbV9zdXJmYWNlU2NhbGU7IH0K
ICAgICBib29sIHNldFN1cmZhY2VTY2FsZShmbG9hdCk7CkBAIC0xMjgsMTYgKzEyNywxNCBAQCBw
cm90ZWN0ZWQ6CiAgICAgc3RhdGljIHZvaWQgcGxhdGZvcm1BcHBseUdlbmVyaWNXb3JrZXIoUGxh
dGZvcm1BcHBseUdlbmVyaWNQYXJhbWV0ZXJzKik7CiAgICAgc3RhdGljIHZvaWQgcGxhdGZvcm1B
cHBseU5lb25Xb3JrZXIoRkVMaWdodGluZ1BhaW50aW5nRGF0YUZvck5lb24qKTsKIAotICAgIEZF
TGlnaHRpbmcoRmlsdGVyJiwgTGlnaHRpbmdUeXBlLCBjb25zdCBDb2xvciYsIGZsb2F0LCBmbG9h
dCwgZmxvYXQsIGZsb2F0LCBmbG9hdCwgZmxvYXQsIFJlZjxMaWdodFNvdXJjZT4mJiwgVHlwZSk7
Ci0KLSAgICBjb25zdCBjaGFyKiBmaWx0ZXJOYW1lKCkgY29uc3QgZmluYWwgeyByZXR1cm4gIkZF
TGlnaHRpbmciOyB9CisgICAgRkVMaWdodGluZyhMaWdodGluZ1R5cGUsIGNvbnN0IENvbG9yJiBs
aWdodGluZ0NvbG9yLCBmbG9hdCBzdXJmYWNlU2NhbGUsIGZsb2F0IGRpZmZ1c2VDb25zdGFudCwg
ZmxvYXQgc3BlY3VsYXJDb25zdGFudCwgZmxvYXQgc3BlY3VsYXJFeHBvbmVudCwgZmxvYXQga2Vy
bmVsVW5pdExlbmd0aFgsIGZsb2F0IGtlcm5lbFVuaXRMZW5ndGhZLCBSZWY8TGlnaHRTb3VyY2U+
JiYsIFR5cGUpOwogCiAgICAgYm9vbCBkcmF3TGlnaHRpbmcoVWludDhDbGFtcGVkQXJyYXkmLCBp
bnQsIGludCk7CiAKICAgICB2b2lkIHNldFBpeGVsKGludCBvZmZzZXQsIGNvbnN0IExpZ2h0aW5n
RGF0YSYsIGNvbnN0IExpZ2h0U291cmNlOjpQYWludGluZ0RhdGEmLCBpbnQgeCwgaW50IHksIGZs
b2F0IGZhY3RvclgsIGZsb2F0IGZhY3RvclksIEludFNpemUgbm9ybWFsVmVjdG9yKTsKICAgICB2
b2lkIHNldFBpeGVsSW50ZXJuYWwoaW50IG9mZnNldCwgY29uc3QgTGlnaHRpbmdEYXRhJiwgY29u
c3QgTGlnaHRTb3VyY2U6OlBhaW50aW5nRGF0YSYsIGludCB4LCBpbnQgeSwgZmxvYXQgZmFjdG9y
WCwgZmxvYXQgZmFjdG9yWSwgSW50U2l6ZSBub3JtYWxWZWN0b3IsIGZsb2F0IGFscGhhKTsKIAot
ICAgIHZvaWQgcGxhdGZvcm1BcHBseVNvZnR3YXJlKCkgb3ZlcnJpZGU7CisgICAgdm9pZCBwbGF0
Zm9ybUFwcGx5U29mdHdhcmUoY29uc3QgRmlsdGVyJikgb3ZlcnJpZGU7CiAKICAgICB2b2lkIHBs
YXRmb3JtQXBwbHkoY29uc3QgTGlnaHRpbmdEYXRhJiwgY29uc3QgTGlnaHRTb3VyY2U6OlBhaW50
aW5nRGF0YSYpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9maWx0ZXJzL0ZFTWVyZ2UuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
ZmlsdGVycy9GRU1lcmdlLmNwcAppbmRleCAwYTIwMDAxYjE3M2JkOGZkZjZiYmE2MzZjZDIzY2U0
NzAyNmU3YjNmLi40ODljMmZmYmExY2Y1ZTQ4N2RmODI2Mzc2MWM0NjZjNzVhZmM4ZmU3IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFTWVyZ2Uu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVNZXJn
ZS5jcHAKQEAgLTI4LDE3ICsyOCwxNyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLUZFTWVy
Z2U6OkZFTWVyZ2UoRmlsdGVyJiBmaWx0ZXIpCi0gICAgOiBGaWx0ZXJFZmZlY3QoZmlsdGVyLCBU
eXBlOjpNZXJnZSkKK0ZFTWVyZ2U6OkZFTWVyZ2UoKQorICAgIDogRmlsdGVyRWZmZWN0KEZpbHRl
ckVmZmVjdDo6VHlwZTo6RkVNZXJnZSkKIHsKIH0KIAotUmVmPEZFTWVyZ2U+IEZFTWVyZ2U6OmNy
ZWF0ZShGaWx0ZXImIGZpbHRlcikKK1JlZjxGRU1lcmdlPiBGRU1lcmdlOjpjcmVhdGUoKQogewot
ICAgIHJldHVybiBhZG9wdFJlZigqbmV3IEZFTWVyZ2UoZmlsdGVyKSk7CisgICAgcmV0dXJuIGFk
b3B0UmVmKCpuZXcgRkVNZXJnZSgpKTsKIH0KIAotdm9pZCBGRU1lcmdlOjpwbGF0Zm9ybUFwcGx5
U29mdHdhcmUoKQordm9pZCBGRU1lcmdlOjpwbGF0Zm9ybUFwcGx5U29mdHdhcmUoY29uc3QgRmls
dGVyJikKIHsKICAgICB1bnNpZ25lZCBzaXplID0gbnVtYmVyT2ZFZmZlY3RJbnB1dHMoKTsKICAg
ICBBU1NFUlQoc2l6ZSA+IDApOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvZmlsdGVycy9GRU1lcmdlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9maWx0ZXJzL0ZFTWVyZ2UuaAppbmRleCA1Y2ZjNWNiNzk4MTljZWNlZDUwNzNlNTdiMDE5
NGViY2YxOGYyNjA3Li4wNTE5YTU2ODhhODM2M2ZjMWJhMDYzMjA0ZGIyMmY3NDMxYWUzNGYxIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFTWVy
Z2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFTWVy
Z2UuaApAQCAtMjIsMjMgKzIyLDIxIEBACiAjcHJhZ21hIG9uY2UKIAogI2luY2x1ZGUgIkZpbHRl
ckVmZmVjdC5oIgotI2luY2x1ZGUgIkZpbHRlci5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAK
IGNsYXNzIEZFTWVyZ2UgOiBwdWJsaWMgRmlsdGVyRWZmZWN0IHsKIHB1YmxpYzoKLSAgICBzdGF0
aWMgUmVmPEZFTWVyZ2U+IGNyZWF0ZShGaWx0ZXImKTsKKyAgICBzdGF0aWMgUmVmPEZFTWVyZ2U+
IGNyZWF0ZSgpOwogCiBwcml2YXRlOgotICAgIEZFTWVyZ2UoRmlsdGVyJik7CisgICAgRkVNZXJn
ZSgpOwogCi0gICAgY29uc3QgY2hhciogZmlsdGVyTmFtZSgpIGNvbnN0IGZpbmFsIHsgcmV0dXJu
ICJGRU1lcmdlIjsgfQotCi0gICAgdm9pZCBwbGF0Zm9ybUFwcGx5U29mdHdhcmUoKSBvdmVycmlk
ZTsKKyAgICB2b2lkIHBsYXRmb3JtQXBwbHlTb2Z0d2FyZShjb25zdCBGaWx0ZXImKSBvdmVycmlk
ZTsKIAogICAgIFdURjo6VGV4dFN0cmVhbSYgZXh0ZXJuYWxSZXByZXNlbnRhdGlvbihXVEY6OlRl
eHRTdHJlYW0mLCBSZXByZXNlbnRhdGlvblR5cGUpIGNvbnN0IG92ZXJyaWRlOwogfTsKIAogfSAv
LyBuYW1lc3BhY2UgV2ViQ29yZQogCitTUEVDSUFMSVpFX1RZUEVfVFJBSVRTX0ZJTFRFUl9FRkZF
Q1QoRkVNZXJnZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2ZpbHRlcnMvRkVNb3JwaG9sb2d5LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2ZpbHRlcnMvRkVNb3JwaG9sb2d5LmNwcAppbmRleCA2YWUzZDk4OTg2NjI2ZTA3YzA5NGM1
ODZmMzE5OGM5YzU4ZGFlZDZiLi44OWFmMmRlZDY2MjNjN2MwM2E1ZjY2ZTBmYjZkOWQ4ODUwZGU1
OTM4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJz
L0ZFTW9ycGhvbG9neS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
ZmlsdGVycy9GRU1vcnBob2xvZ3kuY3BwCkBAIC0zNSwxNyArMzUsMTcgQEAKIAogbmFtZXNwYWNl
IFdlYkNvcmUgewogCi1GRU1vcnBob2xvZ3k6OkZFTW9ycGhvbG9neShGaWx0ZXImIGZpbHRlciwg
TW9ycGhvbG9neU9wZXJhdG9yVHlwZSB0eXBlLCBmbG9hdCByYWRpdXNYLCBmbG9hdCByYWRpdXNZ
KQotICAgIDogRmlsdGVyRWZmZWN0KGZpbHRlciwgVHlwZTo6TW9ycGhvbG9neSkKK0ZFTW9ycGhv
bG9neTo6RkVNb3JwaG9sb2d5KE1vcnBob2xvZ3lPcGVyYXRvclR5cGUgdHlwZSwgZmxvYXQgcmFk
aXVzWCwgZmxvYXQgcmFkaXVzWSkKKyAgICA6IEZpbHRlckVmZmVjdChGaWx0ZXJFZmZlY3Q6OlR5
cGU6OkZFTW9ycGhvbG9neSkKICAgICAsIG1fdHlwZSh0eXBlKQogICAgICwgbV9yYWRpdXNYKHJh
ZGl1c1gpCiAgICAgLCBtX3JhZGl1c1kocmFkaXVzWSkKIHsKIH0KIAotUmVmPEZFTW9ycGhvbG9n
eT4gRkVNb3JwaG9sb2d5OjpjcmVhdGUoRmlsdGVyJiBmaWx0ZXIsIE1vcnBob2xvZ3lPcGVyYXRv
clR5cGUgdHlwZSwgZmxvYXQgcmFkaXVzWCwgZmxvYXQgcmFkaXVzWSkKK1JlZjxGRU1vcnBob2xv
Z3k+IEZFTW9ycGhvbG9neTo6Y3JlYXRlKE1vcnBob2xvZ3lPcGVyYXRvclR5cGUgdHlwZSwgZmxv
YXQgcmFkaXVzWCwgZmxvYXQgcmFkaXVzWSkKIHsKLSAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBG
RU1vcnBob2xvZ3koZmlsdGVyLCB0eXBlLCByYWRpdXNYLCByYWRpdXNZKSk7CisgICAgcmV0dXJu
IGFkb3B0UmVmKCpuZXcgRkVNb3JwaG9sb2d5KHR5cGUsIHJhZGl1c1gsIHJhZGl1c1kpKTsKIH0K
IAogYm9vbCBGRU1vcnBob2xvZ3k6OnNldE1vcnBob2xvZ3lPcGVyYXRvcihNb3JwaG9sb2d5T3Bl
cmF0b3JUeXBlIHR5cGUpCkBAIC03MiwxMSArNzIsMTAgQEAgYm9vbCBGRU1vcnBob2xvZ3k6OnNl
dFJhZGl1c1koZmxvYXQgcmFkaXVzWSkKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotdm9pZCBGRU1v
cnBob2xvZ3k6OmRldGVybWluZUFic29sdXRlUGFpbnRSZWN0KCkKK3ZvaWQgRkVNb3JwaG9sb2d5
OjpkZXRlcm1pbmVBYnNvbHV0ZVBhaW50UmVjdChjb25zdCBGaWx0ZXImIGZpbHRlcikKIHsKICAg
ICBGbG9hdFJlY3QgcGFpbnRSZWN0ID0gaW5wdXRFZmZlY3QoMCktPmFic29sdXRlUGFpbnRSZWN0
KCk7Ci0gICAgRmlsdGVyJiBmaWx0ZXIgPSB0aGlzLT5maWx0ZXIoKTsKLSAgICBwYWludFJlY3Qu
aW5mbGF0ZShmaWx0ZXIuc2NhbGVkQnlGaWx0ZXJSZXNvbHV0aW9uKHsgbV9yYWRpdXNYLCBtX3Jh
ZGl1c1kgfSkpOworICAgIHBhaW50UmVjdC5pbmZsYXRlKGZpbHRlci5zY2FsZWRCeUZpbHRlclNj
YWxlKHsgbV9yYWRpdXNYLCBtX3JhZGl1c1kgfSkpOwogICAgIGlmIChjbGlwc1RvQm91bmRzKCkp
CiAgICAgICAgIHBhaW50UmVjdC5pbnRlcnNlY3QobWF4RWZmZWN0UmVjdCgpKTsKICAgICBlbHNl
CkBAIC0yNDAsNyArMjM5LDcgQEAgYm9vbCBGRU1vcnBob2xvZ3k6OnBsYXRmb3JtQXBwbHlEZWdl
bmVyYXRlKFVpbnQ4Q2xhbXBlZEFycmF5JiBkc3RQaXhlbEFycmF5LCBjb24KICAgICByZXR1cm4g
ZmFsc2U7CiB9CiAKLXZvaWQgRkVNb3JwaG9sb2d5OjpwbGF0Zm9ybUFwcGx5U29mdHdhcmUoKQor
dm9pZCBGRU1vcnBob2xvZ3k6OnBsYXRmb3JtQXBwbHlTb2Z0d2FyZShjb25zdCBGaWx0ZXImIGZp
bHRlcikKIHsKICAgICBGaWx0ZXJFZmZlY3QqIGluID0gaW5wdXRFZmZlY3QoMCk7CiAKQEAgLTI1
OCwxMiArMjU3LDExIEBAIHZvaWQgRkVNb3JwaG9sb2d5OjpwbGF0Zm9ybUFwcGx5U29mdHdhcmUo
KQogICAgIGlmIChwbGF0Zm9ybUFwcGx5RGVnZW5lcmF0ZShkZXN0aW5hdGlvblBpeGVsQXJyYXks
IGVmZmVjdERyYXdpbmdSZWN0LCByYWRpdXMud2lkdGgoKSwgcmFkaXVzLmhlaWdodCgpKSkKICAg
ICAgICAgcmV0dXJuOwogCi0gICAgRmlsdGVyJiBmaWx0ZXIgPSB0aGlzLT5maWx0ZXIoKTsKICAg
ICBhdXRvIHNvdXJjZVBpeGVsQXJyYXkgPSBpbi0+cHJlbXVsdGlwbGllZFJlc3VsdChlZmZlY3RE
cmF3aW5nUmVjdCwgb3BlcmF0aW5nQ29sb3JTcGFjZSgpKTsKICAgICBpZiAoIXNvdXJjZVBpeGVs
QXJyYXkpCiAgICAgICAgIHJldHVybjsKIAotICAgIHJhZGl1cyA9IGZsb29yZWRJbnRTaXplKGZp
bHRlci5zY2FsZWRCeUZpbHRlclJlc29sdXRpb24oeyBtX3JhZGl1c1gsIG1fcmFkaXVzWSB9KSk7
CisgICAgcmFkaXVzID0gZmxvb3JlZEludFNpemUoZmlsdGVyLnNjYWxlZEJ5RmlsdGVyU2NhbGUo
eyBtX3JhZGl1c1gsIG1fcmFkaXVzWSB9KSk7CiAgICAgaW50IHJhZGl1c1ggPSBzdGQ6Om1pbihl
ZmZlY3REcmF3aW5nUmVjdC53aWR0aCgpIC0gMSwgcmFkaXVzLndpZHRoKCkpOwogICAgIGludCBy
YWRpdXNZID0gc3RkOjptaW4oZWZmZWN0RHJhd2luZ1JlY3QuaGVpZ2h0KCkgLSAxLCByYWRpdXMu
aGVpZ2h0KCkpOwogCkBAIC0yNzMsMTAgKzI3MSwxMCBAQCB2b2lkIEZFTW9ycGhvbG9neTo6cGxh
dGZvcm1BcHBseVNvZnR3YXJlKCkKICAgICBQYWludGluZ0RhdGEgcGFpbnRpbmdEYXRhOwogICAg
IHBhaW50aW5nRGF0YS5zcmNQaXhlbEFycmF5ID0gc291cmNlUGl4ZWxBcnJheS5nZXQoKTsKICAg
ICBwYWludGluZ0RhdGEuZHN0UGl4ZWxBcnJheSA9ICZkZXN0aW5hdGlvblBpeGVsQXJyYXk7Ci0g
ICAgcGFpbnRpbmdEYXRhLndpZHRoID0gY2VpbGYoZWZmZWN0RHJhd2luZ1JlY3Qud2lkdGgoKSAq
IGZpbHRlci5maWx0ZXJTY2FsZSgpKTsKLSAgICBwYWludGluZ0RhdGEuaGVpZ2h0ID0gY2VpbGYo
ZWZmZWN0RHJhd2luZ1JlY3QuaGVpZ2h0KCkgKiBmaWx0ZXIuZmlsdGVyU2NhbGUoKSk7Ci0gICAg
cGFpbnRpbmdEYXRhLnJhZGl1c1ggPSBjZWlsZihyYWRpdXNYICogZmlsdGVyLmZpbHRlclNjYWxl
KCkpOwotICAgIHBhaW50aW5nRGF0YS5yYWRpdXNZID0gY2VpbGYocmFkaXVzWSAqIGZpbHRlci5m
aWx0ZXJTY2FsZSgpKTsKKyAgICBwYWludGluZ0RhdGEud2lkdGggPSBjZWlsZihlZmZlY3REcmF3
aW5nUmVjdC53aWR0aCgpKTsKKyAgICBwYWludGluZ0RhdGEuaGVpZ2h0ID0gY2VpbGYoZWZmZWN0
RHJhd2luZ1JlY3QuaGVpZ2h0KCkpOworICAgIHBhaW50aW5nRGF0YS5yYWRpdXNYID0gY2VpbGYo
cmFkaXVzWCk7CisgICAgcGFpbnRpbmdEYXRhLnJhZGl1c1kgPSBjZWlsZihyYWRpdXNZKTsKIAog
ICAgIHBsYXRmb3JtQXBwbHkocGFpbnRpbmdEYXRhKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVNb3JwaG9sb2d5LmggYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFTW9ycGhvbG9neS5oCmluZGV4IDQ4
ZmMzNTQxMTdmYzI3Y2NmYzhlOTNmMTRlZGYwNzVkZTM5YzVhMTEuLmFlODE1MTU0Y2VhZGFlZWQz
MjZhNDQ5Mzg3MWNmM2U4OTcwZGZiYmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVNb3JwaG9sb2d5LmgKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRU1vcnBob2xvZ3kuaApAQCAtMjIsNyArMjIsNiBA
QAogI3ByYWdtYSBvbmNlCiAKICNpbmNsdWRlICJGaWx0ZXJFZmZlY3QuaCIKLSNpbmNsdWRlICJG
aWx0ZXIuaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCkBAIC0zNCw3ICszMyw3IEBAIGVudW0g
TW9ycGhvbG9neU9wZXJhdG9yVHlwZSB7CiAKIGNsYXNzIEZFTW9ycGhvbG9neSA6IHB1YmxpYyBG
aWx0ZXJFZmZlY3QgewogcHVibGljOgotICAgIHN0YXRpYyBSZWY8RkVNb3JwaG9sb2d5PiBjcmVh
dGUoRmlsdGVyJiwgTW9ycGhvbG9neU9wZXJhdG9yVHlwZSwgZmxvYXQgcmFkaXVzWCwgZmxvYXQg
cmFkaXVzWSk7CisgICAgc3RhdGljIFJlZjxGRU1vcnBob2xvZ3k+IGNyZWF0ZShNb3JwaG9sb2d5
T3BlcmF0b3JUeXBlLCBmbG9hdCByYWRpdXNYLCBmbG9hdCByYWRpdXNZKTsKIAogICAgIE1vcnBo
b2xvZ3lPcGVyYXRvclR5cGUgbW9ycGhvbG9neU9wZXJhdG9yKCkgY29uc3QgeyByZXR1cm4gbV90
eXBlOyB9CiAgICAgYm9vbCBzZXRNb3JwaG9sb2d5T3BlcmF0b3IoTW9ycGhvbG9neU9wZXJhdG9y
VHlwZSk7CkBAIC00NiwxMyArNDUsMTEgQEAgcHVibGljOgogICAgIGJvb2wgc2V0UmFkaXVzWShm
bG9hdCk7CiAKIHByaXZhdGU6Ci0gICAgRkVNb3JwaG9sb2d5KEZpbHRlciYsIE1vcnBob2xvZ3lP
cGVyYXRvclR5cGUsIGZsb2F0IHJhZGl1c1gsIGZsb2F0IHJhZGl1c1kpOworICAgIEZFTW9ycGhv
bG9neShNb3JwaG9sb2d5T3BlcmF0b3JUeXBlLCBmbG9hdCByYWRpdXNYLCBmbG9hdCByYWRpdXNZ
KTsKIAotICAgIGNvbnN0IGNoYXIqIGZpbHRlck5hbWUoKSBjb25zdCBmaW5hbCB7IHJldHVybiAi
RkVNb3JwaG9sb2d5IjsgfQorICAgIHZvaWQgcGxhdGZvcm1BcHBseVNvZnR3YXJlKGNvbnN0IEZp
bHRlciYpIG92ZXJyaWRlOwogCi0gICAgdm9pZCBwbGF0Zm9ybUFwcGx5U29mdHdhcmUoKSBvdmVy
cmlkZTsKLQotICAgIHZvaWQgZGV0ZXJtaW5lQWJzb2x1dGVQYWludFJlY3QoKSBvdmVycmlkZTsK
KyAgICB2b2lkIGRldGVybWluZUFic29sdXRlUGFpbnRSZWN0KGNvbnN0IEZpbHRlciYpIG92ZXJy
aWRlOwogCiAgICAgV1RGOjpUZXh0U3RyZWFtJiBleHRlcm5hbFJlcHJlc2VudGF0aW9uKFdURjo6
VGV4dFN0cmVhbSYsIFJlcHJlc2VudGF0aW9uVHlwZSkgY29uc3Qgb3ZlcnJpZGU7CiAKQEAgLTg2
LDMgKzgzLDQgQEAgcHJpdmF0ZToKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCitTUEVDSUFM
SVpFX1RZUEVfVFJBSVRTX0ZJTFRFUl9FRkZFQ1QoRkVNb3JwaG9sb2d5KQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRU9mZnNldC5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFT2Zmc2V0LmNwcAppbmRl
eCAwMjcwZGI5MjQ4MWEzMzkyZDNkNWExZTkxN2MyZDY1YWE0MTQwZjY5Li44OTA5Y2JiODE5MmY2
ZDNkZDkxNTFmNTUyNzNlZjhlOTYwMzdiZjlkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFT2Zmc2V0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFT2Zmc2V0LmNwcApAQCAtMzAsMTYgKzMwLDE2
IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotRkVPZmZzZXQ6OkZFT2Zmc2V0KEZpbHRlciYg
ZmlsdGVyLCBmbG9hdCBkeCwgZmxvYXQgZHkpCi0gICAgOiBGaWx0ZXJFZmZlY3QoZmlsdGVyLCBU
eXBlOjpPZmZzZXQpCitGRU9mZnNldDo6RkVPZmZzZXQoZmxvYXQgZHgsIGZsb2F0IGR5KQorICAg
IDogRmlsdGVyRWZmZWN0KEZpbHRlckVmZmVjdDo6VHlwZTo6RkVPZmZzZXQpCiAgICAgLCBtX2R4
KGR4KQogICAgICwgbV9keShkeSkKIHsKIH0KIAotUmVmPEZFT2Zmc2V0PiBGRU9mZnNldDo6Y3Jl
YXRlKEZpbHRlciYgZmlsdGVyLCBmbG9hdCBkeCwgZmxvYXQgZHkpCitSZWY8RkVPZmZzZXQ+IEZF
T2Zmc2V0OjpjcmVhdGUoZmxvYXQgZHgsIGZsb2F0IGR5KQogewotICAgIHJldHVybiBhZG9wdFJl
ZigqbmV3IEZFT2Zmc2V0KGZpbHRlciwgZHgsIGR5KSk7CisgICAgcmV0dXJuIGFkb3B0UmVmKCpu
ZXcgRkVPZmZzZXQoZHgsIGR5KSk7CiB9CiAKIHZvaWQgRkVPZmZzZXQ6OnNldER4KGZsb2F0IGR4
KQpAQCAtNTIsMTEgKzUyLDEwIEBAIHZvaWQgRkVPZmZzZXQ6OnNldER5KGZsb2F0IGR5KQogICAg
IG1fZHkgPSBkeTsKIH0KIAotdm9pZCBGRU9mZnNldDo6ZGV0ZXJtaW5lQWJzb2x1dGVQYWludFJl
Y3QoKQordm9pZCBGRU9mZnNldDo6ZGV0ZXJtaW5lQWJzb2x1dGVQYWludFJlY3QoY29uc3QgRmls
dGVyJiBmaWx0ZXIpCiB7CiAgICAgRmxvYXRSZWN0IHBhaW50UmVjdCA9IGlucHV0RWZmZWN0KDAp
LT5hYnNvbHV0ZVBhaW50UmVjdCgpOwotICAgIEZpbHRlciYgZmlsdGVyID0gdGhpcy0+ZmlsdGVy
KCk7Ci0gICAgcGFpbnRSZWN0Lm1vdmUoZmlsdGVyLnNjYWxlZEJ5RmlsdGVyUmVzb2x1dGlvbih7
IG1fZHgsIG1fZHkgfSkpOworICAgIHBhaW50UmVjdC5tb3ZlKGZpbHRlci5zY2FsZWRCeUZpbHRl
clNjYWxlKHsgbV9keCwgbV9keSB9KSk7CiAgICAgaWYgKGNsaXBzVG9Cb3VuZHMoKSkKICAgICAg
ICAgcGFpbnRSZWN0LmludGVyc2VjdChtYXhFZmZlY3RSZWN0KCkpOwogICAgIGVsc2UKQEAgLTY0
LDcgKzYzLDcgQEAgdm9pZCBGRU9mZnNldDo6ZGV0ZXJtaW5lQWJzb2x1dGVQYWludFJlY3QoKQog
ICAgIHNldEFic29sdXRlUGFpbnRSZWN0KGVuY2xvc2luZ0ludFJlY3QocGFpbnRSZWN0KSk7CiB9
CiAKLXZvaWQgRkVPZmZzZXQ6OnBsYXRmb3JtQXBwbHlTb2Z0d2FyZSgpCit2b2lkIEZFT2Zmc2V0
OjpwbGF0Zm9ybUFwcGx5U29mdHdhcmUoY29uc3QgRmlsdGVyJiBmaWx0ZXIpCiB7CiAgICAgRmls
dGVyRWZmZWN0KiBpbiA9IGlucHV0RWZmZWN0KDApOwogCkBAIC03Niw4ICs3NSw3IEBAIHZvaWQg
RkVPZmZzZXQ6OnBsYXRmb3JtQXBwbHlTb2Z0d2FyZSgpCiAgICAgc2V0SXNBbHBoYUltYWdlKGlu
LT5pc0FscGhhSW1hZ2UoKSk7CiAKICAgICBGbG9hdFJlY3QgZHJhd2luZ1JlZ2lvbiA9IGRyYXdp
bmdSZWdpb25PZklucHV0SW1hZ2UoaW4tPmFic29sdXRlUGFpbnRSZWN0KCkpOwotICAgIEZpbHRl
ciYgZmlsdGVyID0gdGhpcy0+ZmlsdGVyKCk7Ci0gICAgZHJhd2luZ1JlZ2lvbi5tb3ZlKGZpbHRl
ci5zY2FsZWRCeUZpbHRlclJlc29sdXRpb24oeyBtX2R4LCBtX2R5IH0pKTsKKyAgICBkcmF3aW5n
UmVnaW9uLm1vdmUoZmlsdGVyLnNjYWxlZEJ5RmlsdGVyU2NhbGUoeyBtX2R4LCBtX2R5IH0pKTsK
ICAgICByZXN1bHRJbWFnZS0+Y29udGV4dCgpLmRyYXdJbWFnZUJ1ZmZlcigqaW5CdWZmZXIsIGRy
YXdpbmdSZWdpb24pOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9maWx0ZXJzL0ZFT2Zmc2V0LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9maWx0ZXJzL0ZFT2Zmc2V0LmgKaW5kZXggNjVhYmRhOTBhNDdiMWJmZTc2YWU1Yzc0YWFi
NWFhMTY3ZmIxZTY5ZS4uZDNlYzk1YWRkZjEzNDdiNTNlZTA0ODdjNDBhZGIxOTAxYWU0NDdiYyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRU9m
ZnNldC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVP
ZmZzZXQuaApAQCAtMjIsMTMgKzIyLDEyIEBACiAjcHJhZ21hIG9uY2UKIAogI2luY2x1ZGUgIkZp
bHRlckVmZmVjdC5oIgotI2luY2x1ZGUgIkZpbHRlci5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAKIGNsYXNzIEZFT2Zmc2V0IDogcHVibGljIEZpbHRlckVmZmVjdCB7CiBwdWJsaWM6Ci0gICAg
c3RhdGljIFJlZjxGRU9mZnNldD4gY3JlYXRlKEZpbHRlciYsIGZsb2F0IGR4LCBmbG9hdCBkeSk7
CisgICAgc3RhdGljIFJlZjxGRU9mZnNldD4gY3JlYXRlKGZsb2F0IGR4LCBmbG9hdCBkeSk7CiAK
ICAgICBmbG9hdCBkeCgpIGNvbnN0IHsgcmV0dXJuIG1fZHg7IH0KICAgICB2b2lkIHNldER4KGZs
b2F0KTsKQEAgLTM3LDEzICszNiwxMSBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXREeShmbG9hdCk7
CiAKIHByaXZhdGU6Ci0gICAgRkVPZmZzZXQoRmlsdGVyJiwgZmxvYXQgZHgsIGZsb2F0IGR5KTsK
KyAgICBGRU9mZnNldChmbG9hdCBkeCwgZmxvYXQgZHkpOwogCi0gICAgY29uc3QgY2hhciogZmls
dGVyTmFtZSgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuICJGRU9mZnNldCI7IH0KLQotICAgIHZvaWQg
cGxhdGZvcm1BcHBseVNvZnR3YXJlKCkgb3ZlcnJpZGU7CisgICAgdm9pZCBwbGF0Zm9ybUFwcGx5
U29mdHdhcmUoY29uc3QgRmlsdGVyJikgb3ZlcnJpZGU7CiAgICAgCi0gICAgdm9pZCBkZXRlcm1p
bmVBYnNvbHV0ZVBhaW50UmVjdCgpIG92ZXJyaWRlOworICAgIHZvaWQgZGV0ZXJtaW5lQWJzb2x1
dGVQYWludFJlY3QoY29uc3QgRmlsdGVyJikgb3ZlcnJpZGU7CiAKICAgICBXVEY6OlRleHRTdHJl
YW0mIGV4dGVybmFsUmVwcmVzZW50YXRpb24oV1RGOjpUZXh0U3RyZWFtJiwgUmVwcmVzZW50YXRp
b25UeXBlKSBjb25zdCBvdmVycmlkZTsKIApAQCAtNTMsMyArNTAsNCBAQCBwcml2YXRlOgogCiB9
IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKK1NQRUNJQUxJWkVfVFlQRV9UUkFJVFNfRklMVEVSX0VG
RkVDVChGRU9mZnNldCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2ZpbHRlcnMvRkVTcGVjdWxhckxpZ2h0aW5nLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVTcGVjdWxhckxpZ2h0aW5nLmNwcAppbmRleCA1OTk3MjMw
Njg4NmE2M2ZhNDEyYjViNzE0MWY3NGY5YzQ4N2ExNDRjLi4zODcwN2IzMDFmZDExMGJlY2JiMDRl
MjVjZmM5ODJhMjA1ZmU2NDY5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9maWx0ZXJzL0ZFU3BlY3VsYXJMaWdodGluZy5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRVNwZWN1bGFyTGlnaHRpbmcuY3BwCkBAIC0y
NywxOCArMjcsMTYgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1GRVNwZWN1bGFyTGlnaHRp
bmc6OkZFU3BlY3VsYXJMaWdodGluZyhGaWx0ZXImIGZpbHRlciwgY29uc3QgQ29sb3ImIGxpZ2h0
aW5nQ29sb3IsIGZsb2F0IHN1cmZhY2VTY2FsZSwgZmxvYXQgc3BlY3VsYXJDb25zdGFudCwgZmxv
YXQgc3BlY3VsYXJFeHBvbmVudCwgZmxvYXQga2VybmVsVW5pdExlbmd0aFgsIGZsb2F0IGtlcm5l
bFVuaXRMZW5ndGhZLCBSZWY8TGlnaHRTb3VyY2U+JiYgbGlnaHRTb3VyY2UpCi0gICAgOiBGRUxp
Z2h0aW5nKGZpbHRlciwgU3BlY3VsYXJMaWdodGluZywgbGlnaHRpbmdDb2xvciwgc3VyZmFjZVNj
YWxlLCAwLCBzcGVjdWxhckNvbnN0YW50LCBzcGVjdWxhckV4cG9uZW50LCBrZXJuZWxVbml0TGVu
Z3RoWCwga2VybmVsVW5pdExlbmd0aFksIFdURk1vdmUobGlnaHRTb3VyY2UpLCBUeXBlOjpTcGVj
dWxhckxpZ2h0aW5nKQorRkVTcGVjdWxhckxpZ2h0aW5nOjpGRVNwZWN1bGFyTGlnaHRpbmcoY29u
c3QgQ29sb3ImIGxpZ2h0aW5nQ29sb3IsIGZsb2F0IHN1cmZhY2VTY2FsZSwgZmxvYXQgc3BlY3Vs
YXJDb25zdGFudCwgZmxvYXQgc3BlY3VsYXJFeHBvbmVudCwgZmxvYXQga2VybmVsVW5pdExlbmd0
aFgsIGZsb2F0IGtlcm5lbFVuaXRMZW5ndGhZLCBSZWY8TGlnaHRTb3VyY2U+JiYgbGlnaHRTb3Vy
Y2UpCisgICAgOiBGRUxpZ2h0aW5nKFNwZWN1bGFyTGlnaHRpbmcsIGxpZ2h0aW5nQ29sb3IsIHN1
cmZhY2VTY2FsZSwgMCwgc3BlY3VsYXJDb25zdGFudCwgc3BlY3VsYXJFeHBvbmVudCwga2VybmVs
VW5pdExlbmd0aFgsIGtlcm5lbFVuaXRMZW5ndGhZLCBXVEZNb3ZlKGxpZ2h0U291cmNlKSwgRmls
dGVyRWZmZWN0OjpUeXBlOjpGRVNwZWN1bGFyTGlnaHRpbmcpCiB7CiB9CiAKLVJlZjxGRVNwZWN1
bGFyTGlnaHRpbmc+IEZFU3BlY3VsYXJMaWdodGluZzo6Y3JlYXRlKEZpbHRlciYgZmlsdGVyLCBj
b25zdCBDb2xvciYgbGlnaHRpbmdDb2xvciwgZmxvYXQgc3VyZmFjZVNjYWxlLCBmbG9hdCBzcGVj
dWxhckNvbnN0YW50LCBmbG9hdCBzcGVjdWxhckV4cG9uZW50LCBmbG9hdCBrZXJuZWxVbml0TGVu
Z3RoWCwgZmxvYXQga2VybmVsVW5pdExlbmd0aFksIFJlZjxMaWdodFNvdXJjZT4mJiBsaWdodFNv
dXJjZSkKK1JlZjxGRVNwZWN1bGFyTGlnaHRpbmc+IEZFU3BlY3VsYXJMaWdodGluZzo6Y3JlYXRl
KGNvbnN0IENvbG9yJiBsaWdodGluZ0NvbG9yLCBmbG9hdCBzdXJmYWNlU2NhbGUsIGZsb2F0IHNw
ZWN1bGFyQ29uc3RhbnQsIGZsb2F0IHNwZWN1bGFyRXhwb25lbnQsIGZsb2F0IGtlcm5lbFVuaXRM
ZW5ndGhYLCBmbG9hdCBrZXJuZWxVbml0TGVuZ3RoWSwgUmVmPExpZ2h0U291cmNlPiYmIGxpZ2h0
U291cmNlKQogewotICAgIHJldHVybiBhZG9wdFJlZigqbmV3IEZFU3BlY3VsYXJMaWdodGluZyhm
aWx0ZXIsIGxpZ2h0aW5nQ29sb3IsIHN1cmZhY2VTY2FsZSwgc3BlY3VsYXJDb25zdGFudCwgc3Bl
Y3VsYXJFeHBvbmVudCwga2VybmVsVW5pdExlbmd0aFgsIGtlcm5lbFVuaXRMZW5ndGhZLCBXVEZN
b3ZlKGxpZ2h0U291cmNlKSkpOworICAgIHJldHVybiBhZG9wdFJlZigqbmV3IEZFU3BlY3VsYXJM
aWdodGluZyhsaWdodGluZ0NvbG9yLCBzdXJmYWNlU2NhbGUsIHNwZWN1bGFyQ29uc3RhbnQsIHNw
ZWN1bGFyRXhwb25lbnQsIGtlcm5lbFVuaXRMZW5ndGhYLCBrZXJuZWxVbml0TGVuZ3RoWSwgV1RG
TW92ZShsaWdodFNvdXJjZSkpKTsKIH0KIAotRkVTcGVjdWxhckxpZ2h0aW5nOjp+RkVTcGVjdWxh
ckxpZ2h0aW5nKCkgPSBkZWZhdWx0OwotCiBib29sIEZFU3BlY3VsYXJMaWdodGluZzo6c2V0U3Bl
Y3VsYXJDb25zdGFudChmbG9hdCBzcGVjdWxhckNvbnN0YW50KQogewogICAgIGlmIChtX3NwZWN1
bGFyQ29uc3RhbnQgPT0gc3BlY3VsYXJDb25zdGFudCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVTcGVjdWxhckxpZ2h0aW5nLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFU3BlY3VsYXJMaWdodGluZy5o
CmluZGV4IGU5OThhNzYwNWQxZTQ3MzVkOWY0OTc5OGQzOTgxOGJmM2IyNDk1OGEuLmFjNDUwZGJk
YjYwY2Q2OTdjZDhkZmMzYzc5MzE4ZGJmNjRhZDUzMzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVTcGVjdWxhckxpZ2h0aW5nLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRVNwZWN1bGFyTGlnaHRp
bmcuaApAQCAtMjcsOCArMjcsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIEZFU3Bl
Y3VsYXJMaWdodGluZyA6IHB1YmxpYyBGRUxpZ2h0aW5nIHsKIHB1YmxpYzoKLSAgICBzdGF0aWMg
UmVmPEZFU3BlY3VsYXJMaWdodGluZz4gY3JlYXRlKEZpbHRlciYsIGNvbnN0IENvbG9yJiwgZmxv
YXQsIGZsb2F0LCBmbG9hdCwgZmxvYXQsIGZsb2F0LCBSZWY8TGlnaHRTb3VyY2U+JiYpOwotICAg
IHZpcnR1YWwgfkZFU3BlY3VsYXJMaWdodGluZygpOworICAgIHN0YXRpYyBSZWY8RkVTcGVjdWxh
ckxpZ2h0aW5nPiBjcmVhdGUoY29uc3QgQ29sb3ImIGxpZ2h0aW5nQ29sb3IsIGZsb2F0IHN1cmZh
Y2VTY2FsZSwgZmxvYXQgc3BlY3VsYXJDb25zdGFudCwgZmxvYXQgc3BlY3VsYXJFeHBvbmVudCwg
ZmxvYXQga2VybmVsVW5pdExlbmd0aFgsIGZsb2F0IGtlcm5lbFVuaXRMZW5ndGhZLCBSZWY8TGln
aHRTb3VyY2U+JiYpOwogCiAgICAgZmxvYXQgc3BlY3VsYXJDb25zdGFudCgpIGNvbnN0IHsgcmV0
dXJuIG1fc3BlY3VsYXJDb25zdGFudDsgfQogICAgIGJvb2wgc2V0U3BlY3VsYXJDb25zdGFudChm
bG9hdCk7CkBAIC0zOSw4ICszOCw5IEBAIHB1YmxpYzoKICAgICBXVEY6OlRleHRTdHJlYW0mIGV4
dGVybmFsUmVwcmVzZW50YXRpb24oV1RGOjpUZXh0U3RyZWFtJiwgUmVwcmVzZW50YXRpb25UeXBl
KSBjb25zdCBvdmVycmlkZTsKIAogcHJpdmF0ZToKLSAgICBGRVNwZWN1bGFyTGlnaHRpbmcoRmls
dGVyJiwgY29uc3QgQ29sb3ImLCBmbG9hdCwgZmxvYXQsIGZsb2F0LCBmbG9hdCwgZmxvYXQsIFJl
ZjxMaWdodFNvdXJjZT4mJik7CisgICAgRkVTcGVjdWxhckxpZ2h0aW5nKGNvbnN0IENvbG9yJiBs
aWdodGluZ0NvbG9yLCBmbG9hdCBzdXJmYWNlU2NhbGUsIGZsb2F0IHNwZWN1bGFyQ29uc3RhbnQs
IGZsb2F0IHNwZWN1bGFyRXhwb25lbnQsIGZsb2F0IGtlcm5lbFVuaXRMZW5ndGhYLCBmbG9hdCBr
ZXJuZWxVbml0TGVuZ3RoWSwgUmVmPExpZ2h0U291cmNlPiYmKTsKIH07CiAKIH0gLy8gbmFtZXNw
YWNlIFdlYkNvcmUKIAorU1BFQ0lBTElaRV9UWVBFX1RSQUlUU19GSUxURVJfRUZGRUNUKEZFU3Bl
Y3VsYXJMaWdodGluZykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2ZpbHRlcnMvRkVUaWxlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2ZpbHRlcnMvRkVUaWxlLmNwcAppbmRleCAzNWM1MWNiYjIyOWRlZTk2NDJkYzFlN2RjYTBjNWRi
MmZjYWMyMGFkLi5iNzVlMmY2NTdlN2IzZTdlNDZmODA2ZGFiMGE0YTg1MTc3Mjg2MWE0IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFVGlsZS5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRVRpbGUu
Y3BwCkBAIC0zMSwxNyArMzEsMTcgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1GRVRpbGU6
OkZFVGlsZShGaWx0ZXImIGZpbHRlcikKLSAgICA6IEZpbHRlckVmZmVjdChmaWx0ZXIsIFR5cGU6
OlRpbGUpCitGRVRpbGU6OkZFVGlsZSgpCisgICAgOiBGaWx0ZXJFZmZlY3QoRmlsdGVyRWZmZWN0
OjpUeXBlOjpGRVRpbGUpCiB7CiB9CiAKLVJlZjxGRVRpbGU+IEZFVGlsZTo6Y3JlYXRlKEZpbHRl
ciYgZmlsdGVyKQorUmVmPEZFVGlsZT4gRkVUaWxlOjpjcmVhdGUoKQogewotICAgIHJldHVybiBh
ZG9wdFJlZigqbmV3IEZFVGlsZShmaWx0ZXIpKTsKKyAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBG
RVRpbGUoKSk7CiB9CiAKLXZvaWQgRkVUaWxlOjpwbGF0Zm9ybUFwcGx5U29mdHdhcmUoKQordm9p
ZCBGRVRpbGU6OnBsYXRmb3JtQXBwbHlTb2Z0d2FyZShjb25zdCBGaWx0ZXImIGZpbHRlcikKIHsK
IC8vIEZJWE1FOiBTZWUgYnVnIDQ3MzE1LiBUaGlzIGlzIGEgaGFjayB0byB3b3JrIGFyb3VuZCBh
IGNvbXBpbGUgZmFpbHVyZSwgYnV0IGlzIGluY29ycmVjdCBiZWhhdmlvciBvdGhlcndpc2UuCiAg
ICAgRmlsdGVyRWZmZWN0KiBpbiA9IGlucHV0RWZmZWN0KDApOwpAQCAtNTgsMTMgKzU4LDEyIEBA
IHZvaWQgRkVUaWxlOjpwbGF0Zm9ybUFwcGx5U29mdHdhcmUoKQogICAgIEZsb2F0UmVjdCB0aWxl
UmVjdCA9IGluLT5tYXhFZmZlY3RSZWN0KCk7CiAgICAgRmxvYXRQb2ludCBpbk1heEVmZmVjdExv
Y2F0aW9uID0gdGlsZVJlY3QubG9jYXRpb24oKTsKICAgICBGbG9hdFBvaW50IG1heEVmZmVjdExv
Y2F0aW9uID0gbWF4RWZmZWN0UmVjdCgpLmxvY2F0aW9uKCk7Ci0gICAgaWYgKGluLT5maWx0ZXJF
ZmZlY3RUeXBlKCkgPT0gRmlsdGVyRWZmZWN0VHlwZVNvdXJjZUlucHV0KSB7Ci0gICAgICAgIEZp
bHRlciYgZmlsdGVyID0gdGhpcy0+ZmlsdGVyKCk7CisgICAgaWYgKGluLT5maWx0ZXJUeXBlKCkg
PT0gRmlsdGVyRWZmZWN0OjpUeXBlOjpTb3VyY2VHcmFwaGljIHx8IGluLT5maWx0ZXJUeXBlKCkg
PT0gRmlsdGVyRWZmZWN0OjpUeXBlOjpTb3VyY2VBbHBoYSkgewogICAgICAgICB0aWxlUmVjdCA9
IGZpbHRlci5maWx0ZXJSZWdpb24oKTsKLSAgICAgICAgdGlsZVJlY3Quc2NhbGUoZmlsdGVyLmZp
bHRlclJlc29sdXRpb24oKS53aWR0aCgpLCBmaWx0ZXIuZmlsdGVyUmVzb2x1dGlvbigpLmhlaWdo
dCgpKTsKKyAgICAgICAgdGlsZVJlY3Quc2NhbGUoZmlsdGVyLmZpbHRlclNjYWxlKCkpOwogICAg
IH0KIAotICAgIGF1dG8gdGlsZUltYWdlID0gU1ZHUmVuZGVyaW5nQ29udGV4dDo6Y3JlYXRlSW1h
Z2VCdWZmZXIodGlsZVJlY3QsIHRpbGVSZWN0LCBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0Io
KSwgZmlsdGVyKCkucmVuZGVyaW5nTW9kZSgpKTsKKyAgICBhdXRvIHRpbGVJbWFnZSA9IFNWR1Jl
bmRlcmluZ0NvbnRleHQ6OmNyZWF0ZUltYWdlQnVmZmVyKHRpbGVSZWN0LCB0aWxlUmVjdCwgRGVz
dGluYXRpb25Db2xvclNwYWNlOjpTUkdCKCksIGZpbHRlci5yZW5kZXJpbmdNb2RlKCkpOwogICAg
IGlmICghdGlsZUltYWdlKQogICAgICAgICByZXR1cm47CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVUaWxlLmggYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFVGlsZS5oCmluZGV4IDQ5YmQ5OWYwOTQ0N2Rh
ZTFjZjA5YWYxMjM1OGM2ZGU4NDA2ODc3MTQuLmVkNzY5NTFmYjViNDMxZDUzNzJjNGQzZWVhNTg1
NzUwNTNmY2QxMjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2ZpbHRlcnMvRkVUaWxlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
ZmlsdGVycy9GRVRpbGUuaApAQCAtMjIsMjcgKzIyLDIzIEBACiAjcHJhZ21hIG9uY2UKIAogI2lu
Y2x1ZGUgIkZpbHRlckVmZmVjdC5oIgotI2luY2x1ZGUgIkZpbHRlci5oIgogCiBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAgICAgCiBjbGFzcyBGRVRpbGUgOiBwdWJsaWMgRmlsdGVyRWZmZWN0IHsKIHB1
YmxpYzoKLSAgICBzdGF0aWMgUmVmPEZFVGlsZT4gY3JlYXRlKEZpbHRlciYpOworICAgIHN0YXRp
YyBSZWY8RkVUaWxlPiBjcmVhdGUoKTsKIAogcHJpdmF0ZToKLSAgICBGRVRpbGUoRmlsdGVyJik7
CisgICAgRkVUaWxlKCk7CiAKLSAgICBjb25zdCBjaGFyKiBmaWx0ZXJOYW1lKCkgY29uc3QgZmlu
YWwgeyByZXR1cm4gIkZFVGlsZSI7IH0KKyAgICB2b2lkIHBsYXRmb3JtQXBwbHlTb2Z0d2FyZShj
b25zdCBGaWx0ZXImKSBvdmVycmlkZTsKIAotICAgIEZpbHRlckVmZmVjdFR5cGUgZmlsdGVyRWZm
ZWN0VHlwZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIEZpbHRlckVmZmVjdFR5cGVUaWxlOyB9
Ci0KLSAgICB2b2lkIHBsYXRmb3JtQXBwbHlTb2Z0d2FyZSgpIG92ZXJyaWRlOwotCi0gICAgdm9p
ZCBkZXRlcm1pbmVBYnNvbHV0ZVBhaW50UmVjdCgpIG92ZXJyaWRlIHsgc2V0QWJzb2x1dGVQYWlu
dFJlY3QoZW5jbG9zaW5nSW50UmVjdChtYXhFZmZlY3RSZWN0KCkpKTsgfQorICAgIHZvaWQgZGV0
ZXJtaW5lQWJzb2x1dGVQYWludFJlY3QoY29uc3QgRmlsdGVyJikgb3ZlcnJpZGUgeyBzZXRBYnNv
bHV0ZVBhaW50UmVjdChlbmNsb3NpbmdJbnRSZWN0KG1heEVmZmVjdFJlY3QoKSkpOyB9CiAKICAg
ICBXVEY6OlRleHRTdHJlYW0mIGV4dGVybmFsUmVwcmVzZW50YXRpb24oV1RGOjpUZXh0U3RyZWFt
JiwgUmVwcmVzZW50YXRpb25UeXBlKSBjb25zdCBvdmVycmlkZTsKIH07CiAKIH0gLy8gbmFtZXNw
YWNlIFdlYkNvcmUKIAorU1BFQ0lBTElaRV9UWVBFX1RSQUlUU19GSUxURVJfRUZGRUNUKEZFVGls
ZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMv
RkVUdXJidWxlbmNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRl
cnMvRkVUdXJidWxlbmNlLmNwcAppbmRleCA3NzRlNjgyZTNiNDg1OWJiNmUyMDZhMWQyYmZhZWIw
Y2VhOTE5ZjBiLi4zY2Y0ZmQxZmNkMDdmMzg1ZWE5ZjUyODgzM2NmMDYzMmNjNzAyMmQ3IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFVHVyYnVs
ZW5jZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9G
RVR1cmJ1bGVuY2UuY3BwCkBAIC00OCw4ICs0OCw4IEBAIHN0YXRpYyBjb25zdCBpbnQgc19yYW5k
QW1wbGl0dWRlID0gMTY4MDc7IC8vIDcqKjU7IHByaW1pdGl2ZSByb290IG9mIG0KIHN0YXRpYyBj
b25zdCBpbnQgc19yYW5kUSA9IDEyNzc3MzsgLy8gbSAvIGEKIHN0YXRpYyBjb25zdCBpbnQgc19y
YW5kUiA9IDI4MzY7IC8vIG0gJSBhCiAKLUZFVHVyYnVsZW5jZTo6RkVUdXJidWxlbmNlKEZpbHRl
ciYgZmlsdGVyLCBUdXJidWxlbmNlVHlwZSB0eXBlLCBmbG9hdCBiYXNlRnJlcXVlbmN5WCwgZmxv
YXQgYmFzZUZyZXF1ZW5jeVksIGludCBudW1PY3RhdmVzLCBmbG9hdCBzZWVkLCBib29sIHN0aXRj
aFRpbGVzKQotICAgIDogRmlsdGVyRWZmZWN0KGZpbHRlciwgVHlwZTo6VHVyYnVsZW5jZSkKK0ZF
VHVyYnVsZW5jZTo6RkVUdXJidWxlbmNlKFR1cmJ1bGVuY2VUeXBlIHR5cGUsIGZsb2F0IGJhc2VG
cmVxdWVuY3lYLCBmbG9hdCBiYXNlRnJlcXVlbmN5WSwgaW50IG51bU9jdGF2ZXMsIGZsb2F0IHNl
ZWQsIGJvb2wgc3RpdGNoVGlsZXMpCisgICAgOiBGaWx0ZXJFZmZlY3QoRmlsdGVyRWZmZWN0OjpU
eXBlOjpGRVR1cmJ1bGVuY2UpCiAgICAgLCBtX3R5cGUodHlwZSkKICAgICAsIG1fYmFzZUZyZXF1
ZW5jeVgoYmFzZUZyZXF1ZW5jeVgpCiAgICAgLCBtX2Jhc2VGcmVxdWVuY3lZKGJhc2VGcmVxdWVu
Y3lZKQpAQCAtNTksOSArNTksOSBAQCBGRVR1cmJ1bGVuY2U6OkZFVHVyYnVsZW5jZShGaWx0ZXIm
IGZpbHRlciwgVHVyYnVsZW5jZVR5cGUgdHlwZSwgZmxvYXQgYmFzZUZyZXF1ZQogewogfQogCi1S
ZWY8RkVUdXJidWxlbmNlPiBGRVR1cmJ1bGVuY2U6OmNyZWF0ZShGaWx0ZXImIGZpbHRlciwgVHVy
YnVsZW5jZVR5cGUgdHlwZSwgZmxvYXQgYmFzZUZyZXF1ZW5jeVgsIGZsb2F0IGJhc2VGcmVxdWVu
Y3lZLCBpbnQgbnVtT2N0YXZlcywgZmxvYXQgc2VlZCwgYm9vbCBzdGl0Y2hUaWxlcykKK1JlZjxG
RVR1cmJ1bGVuY2U+IEZFVHVyYnVsZW5jZTo6Y3JlYXRlKFR1cmJ1bGVuY2VUeXBlIHR5cGUsIGZs
b2F0IGJhc2VGcmVxdWVuY3lYLCBmbG9hdCBiYXNlRnJlcXVlbmN5WSwgaW50IG51bU9jdGF2ZXMs
IGZsb2F0IHNlZWQsIGJvb2wgc3RpdGNoVGlsZXMpCiB7Ci0gICAgcmV0dXJuIGFkb3B0UmVmKCpu
ZXcgRkVUdXJidWxlbmNlKGZpbHRlciwgdHlwZSwgYmFzZUZyZXF1ZW5jeVgsIGJhc2VGcmVxdWVu
Y3lZLCBudW1PY3RhdmVzLCBzZWVkLCBzdGl0Y2hUaWxlcykpOworICAgIHJldHVybiBhZG9wdFJl
ZigqbmV3IEZFVHVyYnVsZW5jZSh0eXBlLCBiYXNlRnJlcXVlbmN5WCwgYmFzZUZyZXF1ZW5jeVks
IG51bU9jdGF2ZXMsIHNlZWQsIHN0aXRjaFRpbGVzKSk7CiB9CiAKIGJvb2wgRkVUdXJidWxlbmNl
OjpzZXRUeXBlKFR1cmJ1bGVuY2VUeXBlIHR5cGUpCkBAIC0zNjYsMjIgKzM2NiwyMSBAQCBDb2xv
ckNvbXBvbmVudHM8dWludDhfdCwgND4gRkVUdXJidWxlbmNlOjpjYWxjdWxhdGVUdXJidWxlbmNl
VmFsdWVGb3JQb2ludChjb25zdAogICAgIHJldHVybiB0b0ludEJhc2VkQ29sb3JDb21wb25lbnRz
KHR1cmJ1bGVuY2VGdW5jdGlvblJlc3VsdCk7CiB9CiAKLXZvaWQgRkVUdXJidWxlbmNlOjpmaWxs
UmVnaW9uKFVpbnQ4Q2xhbXBlZEFycmF5JiBwaXhlbEFycmF5LCBjb25zdCBQYWludGluZ0RhdGEm
IHBhaW50aW5nRGF0YSwgU3RpdGNoRGF0YSBzdGl0Y2hEYXRhLCBpbnQgc3RhcnRZLCBpbnQgZW5k
WSkgY29uc3QKK3ZvaWQgRkVUdXJidWxlbmNlOjpmaWxsUmVnaW9uKGNvbnN0IEZpbHRlciYgZmls
dGVyLCBVaW50OENsYW1wZWRBcnJheSYgcGl4ZWxBcnJheSwgY29uc3QgUGFpbnRpbmdEYXRhJiBw
YWludGluZ0RhdGEsIFN0aXRjaERhdGEgc3RpdGNoRGF0YSwgaW50IHN0YXJ0WSwgaW50IGVuZFkp
IGNvbnN0CiB7CiAgICAgQVNTRVJUKGVuZFkgPiBzdGFydFkpOwogCiAgICAgSW50UmVjdCBmaWx0
ZXJSZWdpb24gPSBhYnNvbHV0ZVBhaW50UmVjdCgpOwotICAgIGZpbHRlclJlZ2lvbi5zY2FsZShm
aWx0ZXIoKS5maWx0ZXJTY2FsZSgpKTsKICAgICBGbG9hdFBvaW50IHBvaW50KDAsIGZpbHRlclJl
Z2lvbi55KCkgKyBzdGFydFkpOwogICAgIGludCBpbmRleE9mUGl4ZWxDaGFubmVsID0gc3RhcnRZ
ICogKGZpbHRlclJlZ2lvbi53aWR0aCgpIDw8IDIpOwotICAgIEFmZmluZVRyYW5zZm9ybSBpbnZl
cnNlVHJhbnNmcm9tID0gZmlsdGVyKCkuYWJzb2x1dGVUcmFuc2Zvcm0oKS5pbnZlcnNlKCkudmFs
dWVfb3IoQWZmaW5lVHJhbnNmb3JtKCkpOworICAgIEZsb2F0U2l6ZSBpbnZlcnNlU2NhbGUgPSB7
IDEgLyBmaWx0ZXIuZmlsdGVyU2NhbGUoKS53aWR0aCgpLCAxIC8gZmlsdGVyLmZpbHRlclNjYWxl
KCkuaGVpZ2h0KCkgfTsKIAogICAgIGZvciAoaW50IHkgPSBzdGFydFk7IHkgPCBlbmRZOyArK3kp
IHsKICAgICAgICAgcG9pbnQuc2V0WShwb2ludC55KCkgKyAxKTsKICAgICAgICAgcG9pbnQuc2V0
WChmaWx0ZXJSZWdpb24ueCgpKTsKICAgICAgICAgZm9yIChpbnQgeCA9IDA7IHggPCBmaWx0ZXJS
ZWdpb24ud2lkdGgoKTsgKyt4KSB7CiAgICAgICAgICAgICBwb2ludC5zZXRYKHBvaW50LngoKSAr
IDEpOwotICAgICAgICAgICAgRmxvYXRQb2ludCBsb2NhbFBvaW50ID0gaW52ZXJzZVRyYW5zZnJv
bS5tYXBQb2ludChwb2ludCk7CisgICAgICAgICAgICBGbG9hdFBvaW50IGxvY2FsUG9pbnQgPSBw
b2ludC5zY2FsZWQoaW52ZXJzZVNjYWxlLndpZHRoKCksIGludmVyc2VTY2FsZS5oZWlnaHQoKSk7
CiAgICAgICAgICAgICBhdXRvIHZhbHVlcyA9IGNhbGN1bGF0ZVR1cmJ1bGVuY2VWYWx1ZUZvclBv
aW50KHBhaW50aW5nRGF0YSwgc3RpdGNoRGF0YSwgbG9jYWxQb2ludCk7CiAgICAgICAgICAgICBw
aXhlbEFycmF5LnNldFJhbmdlKHZhbHVlcy5jb21wb25lbnRzLmRhdGEoKSwgNCwgaW5kZXhPZlBp
eGVsQ2hhbm5lbCk7CiAgICAgICAgICAgICBpbmRleE9mUGl4ZWxDaGFubmVsICs9IDQ7CkBAIC0z
OTEsMTAgKzM5MCwxMCBAQCB2b2lkIEZFVHVyYnVsZW5jZTo6ZmlsbFJlZ2lvbihVaW50OENsYW1w
ZWRBcnJheSYgcGl4ZWxBcnJheSwgY29uc3QgUGFpbnRpbmdEYXRhJgogCiB2b2lkIEZFVHVyYnVs
ZW5jZTo6ZmlsbFJlZ2lvbldvcmtlcihGaWxsUmVnaW9uUGFyYW1ldGVycyogcGFyYW1ldGVycykK
IHsKLSAgICBwYXJhbWV0ZXJzLT5maWx0ZXItPmZpbGxSZWdpb24oKnBhcmFtZXRlcnMtPnBpeGVs
QXJyYXksICpwYXJhbWV0ZXJzLT5wYWludGluZ0RhdGEsIHBhcmFtZXRlcnMtPnN0aXRjaERhdGEs
IHBhcmFtZXRlcnMtPnN0YXJ0WSwgcGFyYW1ldGVycy0+ZW5kWSk7CisgICAgcGFyYW1ldGVycy0+
ZWZmZWN0LT5maWxsUmVnaW9uKCpwYXJhbWV0ZXJzLT5maWx0ZXIsICpwYXJhbWV0ZXJzLT5waXhl
bEFycmF5LCAqcGFyYW1ldGVycy0+cGFpbnRpbmdEYXRhLCBwYXJhbWV0ZXJzLT5zdGl0Y2hEYXRh
LCBwYXJhbWV0ZXJzLT5zdGFydFksIHBhcmFtZXRlcnMtPmVuZFkpOwogfQogCi12b2lkIEZFVHVy
YnVsZW5jZTo6cGxhdGZvcm1BcHBseVNvZnR3YXJlKCkKK3ZvaWQgRkVUdXJidWxlbmNlOjpwbGF0
Zm9ybUFwcGx5U29mdHdhcmUoY29uc3QgRmlsdGVyJiBmaWx0ZXIpCiB7CiAgICAgYXV0byYgZGVz
dGluYXRpb25QaXhlbEJ1ZmZlciA9IGNyZWF0ZVVubXVsdGlwbGllZEltYWdlUmVzdWx0KCk7CiAg
ICAgaWYgKCFkZXN0aW5hdGlvblBpeGVsQnVmZmVyKQpAQCAtNDAzLDcgKzQwMiw2IEBAIHZvaWQg
RkVUdXJidWxlbmNlOjpwbGF0Zm9ybUFwcGx5U29mdHdhcmUoKQogICAgIGF1dG8mIGRlc3RpbmF0
aW9uUGl4ZWxBcnJheSA9IGRlc3RpbmF0aW9uUGl4ZWxCdWZmZXItPmRhdGEoKTsKIAogICAgIElu
dFNpemUgcmVzdWx0U2l6ZShhYnNvbHV0ZVBhaW50UmVjdCgpLnNpemUoKSk7Ci0gICAgcmVzdWx0
U2l6ZS5zY2FsZShmaWx0ZXIoKS5maWx0ZXJTY2FsZSgpKTsKIAogICAgIGlmIChyZXN1bHRTaXpl
LmlzRW1wdHkoKSkgewogICAgICAgICBkZXN0aW5hdGlvblBpeGVsQXJyYXkuemVyb0ZpbGwoKTsK
QEAgLTQ0MCw3ICs0MzgsOCBAQCB2b2lkIEZFVHVyYnVsZW5jZTo6cGxhdGZvcm1BcHBseVNvZnR3
YXJlKCkKIAogICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IG51bUpvYnM7ICsr
aSkgewogICAgICAgICAgICAgICAgIEZpbGxSZWdpb25QYXJhbWV0ZXJzJiBwYXJhbXMgPSBwYXJh
bGxlbEpvYnMucGFyYW1ldGVyKGkpOwotICAgICAgICAgICAgICAgIHBhcmFtcy5maWx0ZXIgPSB0
aGlzOworICAgICAgICAgICAgICAgIHBhcmFtcy5maWx0ZXIgPSAmZmlsdGVyOworICAgICAgICAg
ICAgICAgIHBhcmFtcy5lZmZlY3QgPSB0aGlzOwogICAgICAgICAgICAgICAgIHBhcmFtcy5waXhl
bEFycmF5ID0gJmRlc3RpbmF0aW9uUGl4ZWxBcnJheTsKICAgICAgICAgICAgICAgICBwYXJhbXMu
cGFpbnRpbmdEYXRhID0gJnBhaW50aW5nRGF0YTsKICAgICAgICAgICAgICAgICBwYXJhbXMuc3Rp
dGNoRGF0YSA9IHN0aXRjaERhdGE7CkBAIC00NTcsNyArNDU2LDcgQEAgdm9pZCBGRVR1cmJ1bGVu
Y2U6OnBsYXRmb3JtQXBwbHlTb2Z0d2FyZSgpCiAgICAgfQogCiAgICAgLy8gRmFsbGJhY2sgdG8g
c2luZ2xlIHRocmVhZGVkIG1vZGUgaWYgdGhlcmUgaXMgbm8gcm9vbSBmb3IgYSBuZXcgdGhyZWFk
IG9yIHRoZSBwYWludCBhcmVhIGlzIHRvbyBzbWFsbC4KLSAgICBmaWxsUmVnaW9uKGRlc3RpbmF0
aW9uUGl4ZWxBcnJheSwgcGFpbnRpbmdEYXRhLCBzdGl0Y2hEYXRhLCAwLCBoZWlnaHQpOworICAg
IGZpbGxSZWdpb24oZmlsdGVyLCBkZXN0aW5hdGlvblBpeGVsQXJyYXksIHBhaW50aW5nRGF0YSwg
c3RpdGNoRGF0YSwgMCwgaGVpZ2h0KTsKIH0KIAogc3RhdGljIFRleHRTdHJlYW0mIG9wZXJhdG9y
PDwoVGV4dFN0cmVhbSYgdHMsIFR1cmJ1bGVuY2VUeXBlIHR5cGUpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFVHVyYnVsZW5jZS5oIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRVR1cmJ1bGVuY2UuaAppbmRl
eCA0ZDUzNmIzN2E4MGFhZGY5MTFlYmZjZTg5Nzc0Y2QzY2NlY2I1Y2ZiLi41ZTU1MGQ5ZDZiNDA0
YjYwNWZhOTE1NDE5MWMzMDA0MmRkMWJkOWEyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFVHVyYnVsZW5jZS5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVUdXJidWxlbmNlLmgKQEAgLTI2LDcgKzI2
LDYgQEAKIAogI2luY2x1ZGUgIkNvbG9yQ29tcG9uZW50cy5oIgogI2luY2x1ZGUgIkZpbHRlckVm
ZmVjdC5oIgotI2luY2x1ZGUgIkZpbHRlci5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKQEAg
LTM4LDcgKzM3LDcgQEAgZW51bSBjbGFzcyBUdXJidWxlbmNlVHlwZSB7CiAKIGNsYXNzIEZFVHVy
YnVsZW5jZSA6IHB1YmxpYyBGaWx0ZXJFZmZlY3QgewogcHVibGljOgotICAgIHN0YXRpYyBSZWY8
RkVUdXJidWxlbmNlPiBjcmVhdGUoRmlsdGVyJiwgVHVyYnVsZW5jZVR5cGUsIGZsb2F0LCBmbG9h
dCwgaW50LCBmbG9hdCwgYm9vbCk7CisgICAgc3RhdGljIFJlZjxGRVR1cmJ1bGVuY2U+IGNyZWF0
ZShUdXJidWxlbmNlVHlwZSwgZmxvYXQgYmFzZUZyZXF1ZW5jeVgsIGZsb2F0IGJhc2VGcmVxdWVu
Y3lZLCBpbnQgbnVtT2N0YXZlcywgZmxvYXQgc2VlZCwgYm9vbCBzdGl0Y2hUaWxlcyk7CiAKICAg
ICBUdXJidWxlbmNlVHlwZSB0eXBlKCkgY29uc3QgeyByZXR1cm4gbV90eXBlOyB9CiAgICAgYm9v
bCBzZXRUeXBlKFR1cmJ1bGVuY2VUeXBlKTsKQEAgLTk2LDcgKzk1LDggQEAgcHJpdmF0ZToKICAg
ICBmcmllbmQgY2xhc3MgUGFyYWxsZWxKb2JzOwogCiAgICAgc3RydWN0IEZpbGxSZWdpb25QYXJh
bWV0ZXJzIHsKLSAgICAgICAgRkVUdXJidWxlbmNlKiBmaWx0ZXI7CisgICAgICAgIGNvbnN0IEZp
bHRlciogZmlsdGVyOworICAgICAgICBGRVR1cmJ1bGVuY2UqIGVmZmVjdDsKICAgICAgICAgVWlu
dDhDbGFtcGVkQXJyYXkqIHBpeGVsQXJyYXk7CiAgICAgICAgIFBhaW50aW5nRGF0YSogcGFpbnRp
bmdEYXRhOwogICAgICAgICBTdGl0Y2hEYXRhIHN0aXRjaERhdGE7CkBAIC0xMDYsMTkgKzEwNiwx
NyBAQCBwcml2YXRlOgogCiAgICAgc3RhdGljIHZvaWQgZmlsbFJlZ2lvbldvcmtlcihGaWxsUmVn
aW9uUGFyYW1ldGVycyopOwogCi0gICAgRkVUdXJidWxlbmNlKEZpbHRlciYsIFR1cmJ1bGVuY2VU
eXBlLCBmbG9hdCwgZmxvYXQsIGludCwgZmxvYXQsIGJvb2wpOworICAgIEZFVHVyYnVsZW5jZShU
dXJidWxlbmNlVHlwZSwgZmxvYXQgYmFzZUZyZXF1ZW5jeVgsIGZsb2F0IGJhc2VGcmVxdWVuY3lZ
LCBpbnQgbnVtT2N0YXZlcywgZmxvYXQgc2VlZCwgYm9vbCBzdGl0Y2hUaWxlcyk7CiAKLSAgICBj
b25zdCBjaGFyKiBmaWx0ZXJOYW1lKCkgY29uc3QgZmluYWwgeyByZXR1cm4gIkZFVHVyYnVsZW5j
ZSI7IH0KLQotICAgIHZvaWQgcGxhdGZvcm1BcHBseVNvZnR3YXJlKCkgb3ZlcnJpZGU7Ci0gICAg
dm9pZCBkZXRlcm1pbmVBYnNvbHV0ZVBhaW50UmVjdCgpIG92ZXJyaWRlIHsgc2V0QWJzb2x1dGVQ
YWludFJlY3QoZW5jbG9zaW5nSW50UmVjdChtYXhFZmZlY3RSZWN0KCkpKTsgfQorICAgIHZvaWQg
cGxhdGZvcm1BcHBseVNvZnR3YXJlKGNvbnN0IEZpbHRlciYpIG92ZXJyaWRlOworICAgIHZvaWQg
ZGV0ZXJtaW5lQWJzb2x1dGVQYWludFJlY3QoY29uc3QgRmlsdGVyJikgb3ZlcnJpZGUgeyBzZXRB
YnNvbHV0ZVBhaW50UmVjdChlbmNsb3NpbmdJbnRSZWN0KG1heEVmZmVjdFJlY3QoKSkpOyB9CiAg
ICAgV1RGOjpUZXh0U3RyZWFtJiBleHRlcm5hbFJlcHJlc2VudGF0aW9uKFdURjo6VGV4dFN0cmVh
bSYsIFJlcHJlc2VudGF0aW9uVHlwZSkgY29uc3Qgb3ZlcnJpZGU7CiAKICAgICB2b2lkIGluaXRQ
YWludChQYWludGluZ0RhdGEmKTsKICAgICBTdGl0Y2hEYXRhIGNvbXB1dGVTdGl0Y2hpbmcoSW50
U2l6ZSB0aWxlU2l6ZSwgZmxvYXQmIGJhc2VGcmVxdWVuY3lYLCBmbG9hdCYgYmFzZUZyZXF1ZW5j
eVkpIGNvbnN0OwogICAgIENvbG9yQ29tcG9uZW50czxmbG9hdCwgND4gbm9pc2UyRChjb25zdCBQ
YWludGluZ0RhdGEmLCBjb25zdCBTdGl0Y2hEYXRhJiwgY29uc3QgRmxvYXRQb2ludCYpIGNvbnN0
OwogICAgIENvbG9yQ29tcG9uZW50czx1aW50OF90LCA0PiBjYWxjdWxhdGVUdXJidWxlbmNlVmFs
dWVGb3JQb2ludChjb25zdCBQYWludGluZ0RhdGEmLCBTdGl0Y2hEYXRhLCBjb25zdCBGbG9hdFBv
aW50JikgY29uc3Q7Ci0gICAgdm9pZCBmaWxsUmVnaW9uKFVpbnQ4Q2xhbXBlZEFycmF5JiwgY29u
c3QgUGFpbnRpbmdEYXRhJiwgU3RpdGNoRGF0YSwgaW50IHN0YXJ0WSwgaW50IGVuZFkpIGNvbnN0
OworICAgIHZvaWQgZmlsbFJlZ2lvbihjb25zdCBGaWx0ZXImLCBVaW50OENsYW1wZWRBcnJheSYs
IGNvbnN0IFBhaW50aW5nRGF0YSYsIFN0aXRjaERhdGEsIGludCBzdGFydFksIGludCBlbmRZKSBj
b25zdDsKIAogICAgIHN0YXRpYyB2b2lkIGZpbGxSZWdpb25Xb3JrZXIodm9pZCopOwogCkBAIC0x
MzIsMyArMTMwLDQgQEAgcHJpdmF0ZToKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCitTUEVD
SUFMSVpFX1RZUEVfVFJBSVRTX0ZJTFRFUl9FRkZFQ1QoRkVUdXJidWxlbmNlKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GaWx0ZXIuaCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRmlsdGVyLmgKaW5kZXggYTJk
OTk3OTNiMGRiMjI1OGJjNDc2ZGRjYzI5YzBjZTI2MTEwYmMxZi4uZjM1ZDliYTQyZmZiMGNhMmUw
YzViOGNlY2YzZDYxZDJjN2EwMTc2YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvZmlsdGVycy9GaWx0ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9maWx0ZXJzL0ZpbHRlci5oCkBAIC0xLDYgKzEsNyBAQAogLyoKICAqIENvcHly
aWdodCAoQykgMjAwOSBEaXJrIFNjaHVsemUgPGtyaXRAd2Via2l0Lm9yZz4KICAqIENvcHlyaWdo
dCAoQykgMjAxMyBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0
IChDKSAyMDIxIEFwcGxlIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogVGhpcyBs
aWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgog
ICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQ
dWJsaWMKQEAgLTIxLDU4ICsyMiw1NyBAQAogI3ByYWdtYSBvbmNlCiAKICNpbmNsdWRlICJBZmZp
bmVUcmFuc2Zvcm0uaCIKKyNpbmNsdWRlICJGaWx0ZXJGdW5jdGlvbi5oIgogI2luY2x1ZGUgIkZs
b2F0UmVjdC5oIgogI2luY2x1ZGUgIkdyYXBoaWNzVHlwZXMuaCIKICNpbmNsdWRlICJJbWFnZUJ1
ZmZlci5oIgotI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIAogY2xhc3MgRmlsdGVyRWZmZWN0OwogCi1jbGFzcyBGaWx0ZXIgOiBwdWJsaWMgUmVmQ291
bnRlZDxGaWx0ZXI+IHsKK2NsYXNzIEZpbHRlciA6IHB1YmxpYyBGaWx0ZXJGdW5jdGlvbiB7CiBw
dWJsaWM6Ci0gICAgRmlsdGVyKGNvbnN0IEFmZmluZVRyYW5zZm9ybSYgYWJzb2x1dGVUcmFuc2Zv
cm0sIGZsb2F0IGZpbHRlclNjYWxlID0gMSkKLSAgICAgICAgOiBtX2Fic29sdXRlVHJhbnNmb3Jt
KGFic29sdXRlVHJhbnNmb3JtKQotICAgICAgICAsIG1fZmlsdGVyU2NhbGUoZmlsdGVyU2NhbGUp
Ci0gICAgeyB9Ci0gICAgdmlydHVhbCB+RmlsdGVyKCkgPSBkZWZhdWx0OwotCi0gICAgdm9pZCBz
ZXRTb3VyY2VJbWFnZShSZWZQdHI8SW1hZ2VCdWZmZXI+JiYgc291cmNlSW1hZ2UpIHsgbV9zb3Vy
Y2VJbWFnZSA9IFdURk1vdmUoc291cmNlSW1hZ2UpOyB9Ci0gICAgSW1hZ2VCdWZmZXIqIHNvdXJj
ZUltYWdlKCkgeyByZXR1cm4gbV9zb3VyY2VJbWFnZS5nZXQoKTsgfQorICAgIEZsb2F0U2l6ZSBm
aWx0ZXJTY2FsZSgpIGNvbnN0IHsgcmV0dXJuIG1fZmlsdGVyU2NhbGU7IH0KKyAgICB2b2lkIHNl
dEZpbHRlclNjYWxlKGNvbnN0IEZsb2F0U2l6ZSYgZmlsdGVyU2NhbGUpIHsgbV9maWx0ZXJTY2Fs
ZSA9IGZpbHRlclNjYWxlOyB9CiAKLSAgICBGbG9hdFNpemUgZmlsdGVyUmVzb2x1dGlvbigpIGNv
bnN0IHsgcmV0dXJuIG1fZmlsdGVyUmVzb2x1dGlvbjsgfQotICAgIHZvaWQgc2V0RmlsdGVyUmVz
b2x1dGlvbihjb25zdCBGbG9hdFNpemUmIGZpbHRlclJlc29sdXRpb24pIHsgbV9maWx0ZXJSZXNv
bHV0aW9uID0gZmlsdGVyUmVzb2x1dGlvbjsgfQorICAgIEZsb2F0UmVjdCBzb3VyY2VJbWFnZVJl
Y3QoKSBjb25zdCB7IHJldHVybiBtX3NvdXJjZUltYWdlUmVjdDsgfQorICAgIHZvaWQgc2V0Rmls
dGVyUmVnaW9uKGNvbnN0IEZsb2F0UmVjdCYgZmlsdGVyUmVnaW9uKSB7IG1fZmlsdGVyUmVnaW9u
ID0gZmlsdGVyUmVnaW9uOyB9CisgICAgCisgICAgRmxvYXRSZWN0IGZpbHRlclJlZ2lvbigpIGNv
bnN0IHsgcmV0dXJuIG1fZmlsdGVyUmVnaW9uOyB9CisgICAgdm9pZCBzZXRTb3VyY2VJbWFnZVJl
Y3QoY29uc3QgRmxvYXRSZWN0JiBzb3VyY2VJbWFnZVJlY3QpIHsgbV9zb3VyY2VJbWFnZVJlY3Qg
PSBzb3VyY2VJbWFnZVJlY3Q7IH0KIAotICAgIGZsb2F0IGZpbHRlclNjYWxlKCkgY29uc3QgeyBy
ZXR1cm4gbV9maWx0ZXJTY2FsZTsgfQotICAgIHZvaWQgc2V0RmlsdGVyU2NhbGUoZmxvYXQgc2Nh
bGUpIHsgbV9maWx0ZXJTY2FsZSA9IHNjYWxlOyB9CisgICAgdmlydHVhbCBGbG9hdFNpemUgc2Nh
bGVkQnlGaWx0ZXJTY2FsZShGbG9hdFNpemUgc2l6ZSkgY29uc3QgeyByZXR1cm4gc2l6ZSAqIG1f
ZmlsdGVyU2NhbGU7IH0KKyAgICB2aXJ0dWFsIHZvaWQgYXBwbHlGaWx0ZXIoKSB7IH0KIAotICAg
IGNvbnN0IEFmZmluZVRyYW5zZm9ybSYgYWJzb2x1dGVUcmFuc2Zvcm0oKSBjb25zdCB7IHJldHVy
biBtX2Fic29sdXRlVHJhbnNmb3JtOyB9CisgICAgdm9pZCBzZXRTb3VyY2VJbWFnZShSZWZQdHI8
SW1hZ2VCdWZmZXI+JiYgc291cmNlSW1hZ2UpIHsgbV9zb3VyY2VJbWFnZSA9IFdURk1vdmUoc291
cmNlSW1hZ2UpOyB9CisgICAgSW1hZ2VCdWZmZXIqIHNvdXJjZUltYWdlKCkgY29uc3QgeyByZXR1
cm4gbV9zb3VyY2VJbWFnZS5nZXQoKTsgfQogCiAgICAgUmVuZGVyaW5nTW9kZSByZW5kZXJpbmdN
b2RlKCkgY29uc3QgeyByZXR1cm4gbV9yZW5kZXJpbmdNb2RlOyB9CiAgICAgdm9pZCBzZXRSZW5k
ZXJpbmdNb2RlKFJlbmRlcmluZ01vZGUgcmVuZGVyaW5nTW9kZSkgeyBtX3JlbmRlcmluZ01vZGUg
PSByZW5kZXJpbmdNb2RlOyB9CiAKLSAgICB2aXJ0dWFsIGJvb2wgaXNTVkdGaWx0ZXIoKSBjb25z
dCB7IHJldHVybiBmYWxzZTsgfQotICAgIHZpcnR1YWwgYm9vbCBpc0NTU0ZpbHRlcigpIGNvbnN0
IHsgcmV0dXJuIGZhbHNlOyB9Ci0KLSAgICB2aXJ0dWFsIEZsb2F0U2l6ZSBzY2FsZWRCeUZpbHRl
clJlc29sdXRpb24oRmxvYXRTaXplIHNpemUpIGNvbnN0IHsgcmV0dXJuIHNpemUgKiBtX2ZpbHRl
clJlc29sdXRpb247IH0KLSAgICAKLSAgICB2aXJ0dWFsIEZsb2F0UmVjdCBzb3VyY2VJbWFnZVJl
Y3QoKSBjb25zdCA9IDA7Ci0gICAgdmlydHVhbCBGbG9hdFJlY3QgZmlsdGVyUmVnaW9uKCkgY29u
c3QgPSAwOwotICAgIHZpcnR1YWwgRmxvYXRSZWN0IGZpbHRlclJlZ2lvbkluVXNlclNwYWNlKCkg
Y29uc3QgPSAwOwotCiBwcm90ZWN0ZWQ6Ci0gICAgZXhwbGljaXQgRmlsdGVyKGNvbnN0IEZsb2F0
U2l6ZSYgZmlsdGVyUmVzb2x1dGlvbikKLSAgICAgICAgOiBtX2ZpbHRlclJlc29sdXRpb24oZmls
dGVyUmVzb2x1dGlvbikKKyAgICBGaWx0ZXIoRmlsdGVyOjpUeXBlIGZpbHRlclR5cGUsIGNvbnN0
IEZsb2F0U2l6ZSYgZmlsdGVyU2NhbGUpCisgICAgICAgIDogRmlsdGVyRnVuY3Rpb24oZmlsdGVy
VHlwZSkKKyAgICAgICAgLCBtX2ZpbHRlclNjYWxlKGZpbHRlclNjYWxlKQorICAgIHsKKyAgICB9
CisKKyAgICBGaWx0ZXIoRmlsdGVyOjpUeXBlIGZpbHRlclR5cGUsIGNvbnN0IEZsb2F0U2l6ZSYg
ZmlsdGVyU2NhbGUsIGNvbnN0IEZsb2F0UmVjdCYgc291cmNlSW1hZ2VSZWN0LCBjb25zdCBGbG9h
dFJlY3QmIGZpbHRlclJlZ2lvbikKKyAgICAgICAgOiBGaWx0ZXJGdW5jdGlvbihmaWx0ZXJUeXBl
KQorICAgICAgICAsIG1fZmlsdGVyU2NhbGUoZmlsdGVyU2NhbGUpCisgICAgICAgICwgbV9zb3Vy
Y2VJbWFnZVJlY3Qoc291cmNlSW1hZ2VSZWN0KQorICAgICAgICAsIG1fZmlsdGVyUmVnaW9uKGZp
bHRlclJlZ2lvbikKICAgICB7CiAgICAgfQogCiBwcml2YXRlOgorICAgIEZsb2F0U2l6ZSBtX2Zp
bHRlclNjYWxlOworICAgIEZsb2F0UmVjdCBtX3NvdXJjZUltYWdlUmVjdDsKKyAgICBGbG9hdFJl
Y3QgbV9maWx0ZXJSZWdpb247CisKICAgICBSZWZQdHI8SW1hZ2VCdWZmZXI+IG1fc291cmNlSW1h
Z2U7Ci0gICAgRmxvYXRTaXplIG1fZmlsdGVyUmVzb2x1dGlvbjsKLSAgICBBZmZpbmVUcmFuc2Zv
cm0gbV9hYnNvbHV0ZVRyYW5zZm9ybTsKICAgICBSZW5kZXJpbmdNb2RlIG1fcmVuZGVyaW5nTW9k
ZSB7IFJlbmRlcmluZ01vZGU6OlVuYWNjZWxlcmF0ZWQgfTsKLSAgICBmbG9hdCBtX2ZpbHRlclNj
YWxlIHsgMSB9OwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GaWx0ZXJFZmZlY3QuY3BwIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GaWx0ZXJFZmZlY3QuY3Bw
CmluZGV4IGZiNjc3NTRlNGZjNWJiY2E1MWMzNDhlYzdmNjNlNGNjOTI3ZGIxMDguLmZjOTZkMTM1
MTk1NDI4MDE4ODczNzA2NmViNGUyZmNkMzRmYjVkY2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRmlsdGVyRWZmZWN0LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZpbHRlckVmZmVjdC5jcHAKQEAg
LTQ1LDE1ICs0NSwxMiBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLUZpbHRlckVmZmVjdDo6
RmlsdGVyRWZmZWN0KEZpbHRlciYgZmlsdGVyLCBUeXBlIHR5cGUpCi0gICAgOiBtX2ZpbHRlcihm
aWx0ZXIpCi0gICAgLCBtX2ZpbHRlckVmZmVjdENsYXNzVHlwZSh0eXBlKQorRmlsdGVyRWZmZWN0
OjpGaWx0ZXJFZmZlY3QoRmlsdGVyRWZmZWN0OjpUeXBlIHR5cGUpCisgICAgOiBGaWx0ZXJGdW5j
dGlvbih0eXBlKQogewogfQogCi1GaWx0ZXJFZmZlY3Q6On5GaWx0ZXJFZmZlY3QoKSA9IGRlZmF1
bHQ7Ci0KLXZvaWQgRmlsdGVyRWZmZWN0OjpkZXRlcm1pbmVBYnNvbHV0ZVBhaW50UmVjdCgpCit2
b2lkIEZpbHRlckVmZmVjdDo6ZGV0ZXJtaW5lQWJzb2x1dGVQYWludFJlY3QoY29uc3QgRmlsdGVy
JikKIHsKICAgICBtX2Fic29sdXRlUGFpbnRSZWN0ID0gSW50UmVjdCgpOwogICAgIGZvciAoYXV0
byYgZWZmZWN0IDogbV9pbnB1dEVmZmVjdHMpCkBAIC05NiwyMiArOTMsMjIgQEAgRmxvYXRSZWN0
IEZpbHRlckVmZmVjdDo6ZHJhd2luZ1JlZ2lvbk9mSW5wdXRJbWFnZShjb25zdCBJbnRSZWN0JiBz
cmNSZWN0KSBjb25zdAogICAgIHJldHVybiB0cmFuc2Zvcm0ubWFwUmVjdChzcmNSZWN0KTsKIH0K
IAotRmxvYXRSZWN0IEZpbHRlckVmZmVjdDo6ZGV0ZXJtaW5lRmlsdGVyUHJpbWl0aXZlU3VicmVn
aW9uKCkKK0Zsb2F0UmVjdCBGaWx0ZXJFZmZlY3Q6OmRldGVybWluZUZpbHRlclByaW1pdGl2ZVN1
YnJlZ2lvbihjb25zdCBGaWx0ZXImIGZpbHRlcikKIHsKICAgICAvLyBGRVRpbGUsIEZFVHVyYnVs
ZW5jZSwgRkVGbG9vZCBkb24ndCBoYXZlIGlucHV0IGVmZmVjdHMsIHRha2UgdGhlIGZpbHRlciBy
ZWdpb24gYXMgdW5pdGUgcmVjdC4KICAgICBGbG9hdFJlY3Qgc3VicmVnaW9uOwogICAgIGlmICh1
bnNpZ25lZCBudW1iZXJPZklucHV0RWZmZWN0cyA9IGlucHV0RWZmZWN0cygpLnNpemUoKSkgewot
ICAgICAgICBzdWJyZWdpb24gPSBpbnB1dEVmZmVjdCgwKS0+ZGV0ZXJtaW5lRmlsdGVyUHJpbWl0
aXZlU3VicmVnaW9uKCk7CisgICAgICAgIHN1YnJlZ2lvbiA9IGlucHV0RWZmZWN0KDApLT5kZXRl
cm1pbmVGaWx0ZXJQcmltaXRpdmVTdWJyZWdpb24oZmlsdGVyKTsKICAgICAgICAgZm9yICh1bnNp
Z25lZCBpID0gMTsgaSA8IG51bWJlck9mSW5wdXRFZmZlY3RzOyArK2kpIHsKLSAgICAgICAgICAg
IGF1dG8gaW5wdXRQcmltaXRpdmVTdWJyZWdpb24gPSBpbnB1dEVmZmVjdChpKS0+ZGV0ZXJtaW5l
RmlsdGVyUHJpbWl0aXZlU3VicmVnaW9uKCk7CisgICAgICAgICAgICBhdXRvIGlucHV0UHJpbWl0
aXZlU3VicmVnaW9uID0gaW5wdXRFZmZlY3QoaSktPmRldGVybWluZUZpbHRlclByaW1pdGl2ZVN1
YnJlZ2lvbihmaWx0ZXIpOwogICAgICAgICAgICAgc3VicmVnaW9uLnVuaXRlKGlucHV0UHJpbWl0
aXZlU3VicmVnaW9uKTsKICAgICAgICAgfQogICAgIH0gZWxzZQotICAgICAgICBzdWJyZWdpb24g
PSBtX2ZpbHRlci5maWx0ZXJSZWdpb25JblVzZXJTcGFjZSgpOworICAgICAgICBzdWJyZWdpb24g
PSBmaWx0ZXIuZmlsdGVyUmVnaW9uKCk7CiAKICAgICAvLyBBZnRlciBjYWxsaW5nIGRldGVybWlu
ZUZpbHRlclByaW1pdGl2ZVN1YnJlZ2lvbiBvbiB0aGUgdGFyZ2V0IGVmZmVjdCwgcmVzZXQgdGhl
IHN1YnJlZ2lvbiBhZ2FpbiBmb3IgPGZlVGlsZT4uCi0gICAgaWYgKGZpbHRlckVmZmVjdFR5cGUo
KSA9PSBGaWx0ZXJFZmZlY3RUeXBlVGlsZSkKLSAgICAgICAgc3VicmVnaW9uID0gbV9maWx0ZXIu
ZmlsdGVyUmVnaW9uSW5Vc2VyU3BhY2UoKTsKKyAgICBpZiAoZmlsdGVyVHlwZSgpID09IEZpbHRl
ckVmZmVjdDo6VHlwZTo6RkVUaWxlKQorICAgICAgICBzdWJyZWdpb24gPSBmaWx0ZXIuZmlsdGVy
UmVnaW9uKCk7CiAKICAgICBhdXRvIGJvdW5kYXJpZXMgPSBlZmZlY3RCb3VuZGFyaWVzKCk7CiAg
ICAgaWYgKGhhc1goKSkKQEAgLTEyNSwxNSArMTIyLDE0IEBAIEZsb2F0UmVjdCBGaWx0ZXJFZmZl
Y3Q6OmRldGVybWluZUZpbHRlclByaW1pdGl2ZVN1YnJlZ2lvbigpCiAKICAgICBzZXRGaWx0ZXJQ
cmltaXRpdmVTdWJyZWdpb24oc3VicmVnaW9uKTsKIAotICAgIGF1dG8gYWJzb2x1dGVTdWJyZWdp
b24gPSBtX2ZpbHRlci5hYnNvbHV0ZVRyYW5zZm9ybSgpLm1hcFJlY3Qoc3VicmVnaW9uKTsKLSAg
ICBhdXRvIGZpbHRlclJlc29sdXRpb24gPSBtX2ZpbHRlci5maWx0ZXJSZXNvbHV0aW9uKCk7Ci0g
ICAgYWJzb2x1dGVTdWJyZWdpb24uc2NhbGUoZmlsdGVyUmVzb2x1dGlvbik7CisgICAgYXV0byBh
YnNvbHV0ZVN1YnJlZ2lvbiA9IHN1YnJlZ2lvbjsKKyAgICBhYnNvbHV0ZVN1YnJlZ2lvbi5zY2Fs
ZShmaWx0ZXIuZmlsdGVyU2NhbGUoKSk7CiAgICAgLy8gU2F2ZSB0aGlzIGJlZm9yZSBjbGlwcGlu
ZyBzbyB3ZSBjYW4gdXNlIGl0IHRvIG1hcCBsaWdodGluZyBwb2ludHMgZnJvbSB1c2VyIHNwYWNl
IHRvIGJ1ZmZlciBjb29yZGluYXRlcy4KICAgICBzZXRVbmNsaXBwZWRBYnNvbHV0ZVN1YnJlZ2lv
bihhYnNvbHV0ZVN1YnJlZ2lvbik7CiAKICAgICAvLyBDbGlwIGV2ZXJ5IGZpbHRlciBlZmZlY3Qg
dG8gdGhlIGZpbHRlciByZWdpb24uCi0gICAgYXV0byBhYnNvbHV0ZVNjYWxlZEZpbHRlclJlZ2lv
biA9IG1fZmlsdGVyLmZpbHRlclJlZ2lvbigpOwotICAgIGFic29sdXRlU2NhbGVkRmlsdGVyUmVn
aW9uLnNjYWxlKGZpbHRlclJlc29sdXRpb24pOworICAgIGF1dG8gYWJzb2x1dGVTY2FsZWRGaWx0
ZXJSZWdpb24gPSBmaWx0ZXIuZmlsdGVyUmVnaW9uKCk7CisgICAgYWJzb2x1dGVTY2FsZWRGaWx0
ZXJSZWdpb24uc2NhbGUoZmlsdGVyLmZpbHRlclNjYWxlKCkpOwogICAgIGFic29sdXRlU3VicmVn
aW9uLmludGVyc2VjdChhYnNvbHV0ZVNjYWxlZEZpbHRlclJlZ2lvbik7CiAKICAgICBzZXRNYXhF
ZmZlY3RSZWN0KGFic29sdXRlU3VicmVnaW9uKTsKQEAgLTE2MywxNCArMTU5LDE0IEBAIHVuc2ln
bmVkIEZpbHRlckVmZmVjdDo6dG90YWxOdW1iZXJPZkVmZmVjdElucHV0cygpIGNvbnN0CiAgICAg
cmV0dXJuIGNvbGxlY3RFZmZlY3RzKHRoaXMsIGFsbEVmZmVjdHMpOwogfQogCi12b2lkIEZpbHRl
ckVmZmVjdDo6YXBwbHkoKQordm9pZCBGaWx0ZXJFZmZlY3Q6OmFwcGx5KGNvbnN0IEZpbHRlciYg
ZmlsdGVyKQogewogICAgIGlmIChoYXNSZXN1bHQoKSkKICAgICAgICAgcmV0dXJuOwogICAgIHVu
c2lnbmVkIHNpemUgPSBtX2lucHV0RWZmZWN0cy5zaXplKCk7CiAgICAgZm9yICh1bnNpZ25lZCBp
ID0gMDsgaSA8IHNpemU7ICsraSkgewogICAgICAgICBGaWx0ZXJFZmZlY3QqIGluID0gbV9pbnB1
dEVmZmVjdHMuYXQoaSkuZ2V0KCk7Ci0gICAgICAgIGluLT5hcHBseSgpOworICAgICAgICBpbi0+
YXBwbHkoZmlsdGVyKTsKICAgICAgICAgaWYgKCFpbi0+aGFzUmVzdWx0KCkpCiAgICAgICAgICAg
ICByZXR1cm47CiAKQEAgLTE3OCwxMCArMTc0LDEwIEBAIHZvaWQgRmlsdGVyRWZmZWN0OjphcHBs
eSgpCiAgICAgICAgIHRyYW5zZm9ybVJlc3VsdENvbG9yU3BhY2UoaW4sIGkpOwogICAgIH0KIAot
ICAgIGRldGVybWluZUFic29sdXRlUGFpbnRSZWN0KCk7CisgICAgZGV0ZXJtaW5lQWJzb2x1dGVQ
YWludFJlY3QoZmlsdGVyKTsKICAgICBzZXRSZXN1bHRDb2xvclNwYWNlKG1fb3BlcmF0aW5nQ29s
b3JTcGFjZSk7CiAKLSAgICBMT0dfV0lUSF9TVFJFQU0oRmlsdGVycywgc3RyZWFtIDw8ICJGaWx0
ZXJFZmZlY3QgIiA8PCBmaWx0ZXJOYW1lKCkgPDwgIiAiIDw8IHRoaXMgPDwgIiBhcHBseSgpOlxu
ICBmaWx0ZXJQcmltaXRpdmVTdWJyZWdpb24gIiA8PCBtX2ZpbHRlclByaW1pdGl2ZVN1YnJlZ2lv
biA8PCAiXG4gIGVmZmVjdEJvdW5kYXJpZXMgIiA8PCBtX2VmZmVjdEJvdW5kYXJpZXMgPDwgIlxu
ICBhYnNvbHV0ZVVuY2xpcHBlZFN1YnJlZ2lvbiAiIDw8IG1fYWJzb2x1dGVVbmNsaXBwZWRTdWJy
ZWdpb24gPDwgIlxuICBhYnNvbHV0ZVBhaW50UmVjdCAiIDw8IG1fYWJzb2x1dGVQYWludFJlY3Qg
PDwgIlxuICBtYXhFZmZlY3RSZWN0ICIgPDwgbV9tYXhFZmZlY3RSZWN0IDw8ICJcbiAgZmlsdGVy
IHNjYWxlICIgPDwgbV9maWx0ZXIuZmlsdGVyU2NhbGUoKSA8PCAiXG4gIGZpbHRlciByZXNvbHV0
aW9uICIgPDwgbV9maWx0ZXIuZmlsdGVyUmVzb2x1dGlvbigpKTsKKyAgICBMT0dfV0lUSF9TVFJF
QU0oRmlsdGVycywgc3RyZWFtIDw8ICJGaWx0ZXJFZmZlY3QgIiA8PCBmaWx0ZXJOYW1lKCkgPDwg
IiAiIDw8IHRoaXMgPDwgIiBhcHBseSgpOlxuICBmaWx0ZXJQcmltaXRpdmVTdWJyZWdpb24gIiA8
PCBtX2ZpbHRlclByaW1pdGl2ZVN1YnJlZ2lvbiA8PCAiXG4gIGVmZmVjdEJvdW5kYXJpZXMgIiA8
PCBtX2VmZmVjdEJvdW5kYXJpZXMgPDwgIlxuICBhYnNvbHV0ZVVuY2xpcHBlZFN1YnJlZ2lvbiAi
IDw8IG1fYWJzb2x1dGVVbmNsaXBwZWRTdWJyZWdpb24gPDwgIlxuICBhYnNvbHV0ZVBhaW50UmVj
dCAiIDw8IG1fYWJzb2x1dGVQYWludFJlY3QgPDwgIlxuICBtYXhFZmZlY3RSZWN0ICIgPDwgbV9t
YXhFZmZlY3RSZWN0IDw8ICJcbiAgZmlsdGVyIHNjYWxlICIgPDwgZmlsdGVyLmZpbHRlclNjYWxl
KCkpOwogCiAgICAgaWYgKG1fYWJzb2x1dGVQYWludFJlY3QuaXNFbXB0eSgpIHx8IEltYWdlQnVm
ZmVyOjpzaXplTmVlZHNDbGFtcGluZyhtX2Fic29sdXRlUGFpbnRSZWN0LnNpemUoKSkpCiAgICAg
ICAgIHJldHVybjsKQEAgLTE5Miw3ICsxODgsNyBAQCB2b2lkIEZpbHRlckVmZmVjdDo6YXBwbHko
KQogICAgIH0KICAgICAKICAgICAvLyBBZGQgcGxhdGZvcm0gc3BlY2lmaWMgYXBwbHkgZnVuY3Rp
b25zIGhlcmUgYW5kIHJldHVybiBlYXJsaWVyLgotICAgIHBsYXRmb3JtQXBwbHlTb2Z0d2FyZSgp
OworICAgIHBsYXRmb3JtQXBwbHlTb2Z0d2FyZShmaWx0ZXIpOwogfQogCiB2b2lkIEZpbHRlckVm
ZmVjdDo6Zm9yY2VWYWxpZFByZU11bHRpcGxpZWRQaXhlbHMoKQpAQCAtMjczLDcgKzI2OSw3IEBA
IEltYWdlQnVmZmVyKiBGaWx0ZXJFZmZlY3Q6OmltYWdlQnVmZmVyUmVzdWx0KCkKICAgICBpZiAo
bV9pbWFnZUJ1ZmZlclJlc3VsdCkKICAgICAgICAgcmV0dXJuIG1faW1hZ2VCdWZmZXJSZXN1bHQu
Z2V0KCk7CiAKLSAgICBtX2ltYWdlQnVmZmVyUmVzdWx0ID0gSW1hZ2VCdWZmZXI6OmNyZWF0ZSht
X2Fic29sdXRlUGFpbnRSZWN0LnNpemUoKSwgbV9maWx0ZXIucmVuZGVyaW5nTW9kZSgpLCBtX2Zp
bHRlci5maWx0ZXJTY2FsZSgpLCBtX3Jlc3VsdENvbG9yU3BhY2UsIFBpeGVsRm9ybWF0OjpCR1JB
OCk7CisgICAgbV9pbWFnZUJ1ZmZlclJlc3VsdCA9IEltYWdlQnVmZmVyOjpjcmVhdGUobV9hYnNv
bHV0ZVBhaW50UmVjdC5zaXplKCksIFJlbmRlcmluZ01vZGU6OlVuYWNjZWxlcmF0ZWQsIDEsIG1f
cmVzdWx0Q29sb3JTcGFjZSwgUGl4ZWxGb3JtYXQ6OkJHUkE4KTsKICAgICBpZiAoIW1faW1hZ2VC
dWZmZXJSZXN1bHQpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCkBAIC0yODksNyArMjg1LDYg
QEAgUmVmUHRyPFVpbnQ4Q2xhbXBlZEFycmF5PiBGaWx0ZXJFZmZlY3Q6OnVubXVsdGlwbGllZFJl
c3VsdChjb25zdCBJbnRSZWN0JiByZWN0LAogewogICAgIEludFNpemUgc2NhbGVkU2l6ZShyZWN0
LnNpemUoKSk7CiAgICAgQVNTRVJUKCFJbWFnZUJ1ZmZlcjo6c2l6ZU5lZWRzQ2xhbXBpbmcoc2Nh
bGVkU2l6ZSkpOwotICAgIHNjYWxlZFNpemUuc2NhbGUobV9maWx0ZXIuZmlsdGVyU2NhbGUoKSk7
CiAgICAgYXV0byBjaGVja2VkQXJlYSA9IHNjYWxlZFNpemUuYXJlYTxSZWNvcmRPdmVyZmxvdz4o
KSAqIDQ7CiAgICAgaWYgKGNoZWNrZWRBcmVhLmhhc092ZXJmbG93ZWQoKSkKICAgICAgICAgcmV0
dXJuIG51bGxwdHI7CkBAIC0zMDQsNyArMjk5LDYgQEAgUmVmUHRyPFVpbnQ4Q2xhbXBlZEFycmF5
PiBGaWx0ZXJFZmZlY3Q6OnByZW11bHRpcGxpZWRSZXN1bHQoY29uc3QgSW50UmVjdCYgcmVjdCwK
IHsKICAgICBJbnRTaXplIHNjYWxlZFNpemUocmVjdC5zaXplKCkpOwogICAgIEFTU0VSVCghSW1h
Z2VCdWZmZXI6OnNpemVOZWVkc0NsYW1waW5nKHNjYWxlZFNpemUpKTsKLSAgICBzY2FsZWRTaXpl
LnNjYWxlKG1fZmlsdGVyLmZpbHRlclNjYWxlKCkpOwogICAgIGF1dG8gY2hlY2tlZEFyZWEgPSBz
Y2FsZWRTaXplLmFyZWE8UmVjb3JkT3ZlcmZsb3c+KCkgKiA0OwogICAgIGlmIChjaGVja2VkQXJl
YS5oYXNPdmVyZmxvd2VkKCkpCiAgICAgICAgIHJldHVybiBudWxscHRyOwpAQCAtMzE4LDkgKzMx
Miw3IEBAIFJlZlB0cjxVaW50OENsYW1wZWRBcnJheT4gRmlsdGVyRWZmZWN0OjpwcmVtdWx0aXBs
aWVkUmVzdWx0KGNvbnN0IEludFJlY3QmIHJlY3QsCiB2b2lkIEZpbHRlckVmZmVjdDo6Y29weUlt
YWdlQnl0ZXMoY29uc3QgVWludDhDbGFtcGVkQXJyYXkmIHNvdXJjZSwgVWludDhDbGFtcGVkQXJy
YXkmIGRlc3RpbmF0aW9uLCBjb25zdCBJbnRSZWN0JiByZWN0KSBjb25zdAogewogICAgIEludFJl
Y3Qgc2NhbGVkUmVjdChyZWN0KTsKLSAgICBzY2FsZWRSZWN0LnNjYWxlKG1fZmlsdGVyLmZpbHRl
clNjYWxlKCkpOwogICAgIEludFNpemUgc2NhbGVkUGFpbnRTaXplKG1fYWJzb2x1dGVQYWludFJl
Y3Quc2l6ZSgpKTsKLSAgICBzY2FsZWRQYWludFNpemUuc2NhbGUobV9maWx0ZXIuZmlsdGVyU2Nh
bGUoKSk7CiAKICAgICAvLyBJbml0aWFsaXplIHRoZSBkZXN0aW5hdGlvbiB0byB0cmFuc3BhcmVu
dCBibGFjaywgaWYgbm90IGVudGlyZWx5IGNvdmVyZWQgYnkgdGhlIHNvdXJjZS4KICAgICBpZiAo
c2NhbGVkUmVjdC54KCkgPCAwIHx8IHNjYWxlZFJlY3QueSgpIDwgMCB8fCBzY2FsZWRSZWN0Lm1h
eFgoKSA+IHNjYWxlZFBhaW50U2l6ZS53aWR0aCgpIHx8IHNjYWxlZFJlY3QubWF4WSgpID4gc2Nh
bGVkUGFpbnRTaXplLmhlaWdodCgpKQpAQCAtNDQ0LDEwICs0MzYsOSBAQCBzdGQ6Om9wdGlvbmFs
PFBpeGVsQnVmZmVyPiBGaWx0ZXJFZmZlY3Q6OmNvbnZlcnRQaXhlbEJ1ZmZlclRvQ29sb3JTcGFj
ZShjb25zdCBEZQogICAgIC8vIEZJWE1FOiBVc2luZyBhbiBJbWFnZUJ1ZmZlciB0byBwZXJmb3Jt
IHRoZSBjb2xvciBzcGFjZSBjb252ZXJzaW9uIGlzIHVubmVjZXNzYXJ5LiBXZSBjYW4gZG8gaXQg
ZGlyZWN0bHkuCiAKICAgICBJbnRSZWN0IGRlc3RpbmF0aW9uUmVjdChJbnRQb2ludCgpLCBwaXhl
bEJ1ZmZlci5zaXplKCkpOwotICAgIGRlc3RpbmF0aW9uUmVjdC5zY2FsZSgxIC8gbV9maWx0ZXIu
ZmlsdGVyU2NhbGUoKSk7CiAgICAgRmxvYXRTaXplIGNsYW1wZWRTaXplID0gSW1hZ2VCdWZmZXI6
OmNsYW1wZWRTaXplKGRlc3RpbmF0aW9uUmVjdC5zaXplKCkpOwogICAgIC8vIENyZWF0ZSBhbiBJ
bWFnZUJ1ZmZlciB0byBzdG9yZSBpbmNvbWluZyBQaXhlbEJ1ZmZlcgotICAgIGF1dG8gYnVmZmVy
ID0gSW1hZ2VCdWZmZXI6OmNyZWF0ZShjbGFtcGVkU2l6ZSwgbV9maWx0ZXIucmVuZGVyaW5nTW9k
ZSgpLCBtX2ZpbHRlci5maWx0ZXJTY2FsZSgpLCBvcGVyYXRpbmdDb2xvclNwYWNlKCksIFBpeGVs
Rm9ybWF0OjpCR1JBOCk7CisgICAgYXV0byBidWZmZXIgPSBJbWFnZUJ1ZmZlcjo6Y3JlYXRlKGNs
YW1wZWRTaXplLCBSZW5kZXJpbmdNb2RlOjpVbmFjY2VsZXJhdGVkLCAxLCBvcGVyYXRpbmdDb2xv
clNwYWNlKCksIFBpeGVsRm9ybWF0OjpCR1JBOCk7CiAgICAgaWYgKCFidWZmZXIpCiAgICAgICAg
IHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgYnVmZmVyLT5wdXRQaXhlbEJ1ZmZlcihwaXhlbEJ1
ZmZlciwgZGVzdGluYXRpb25SZWN0KTsKQEAgLTQ2MSw3ICs0NTIsNyBAQCBzdGQ6Om9wdGlvbmFs
PFBpeGVsQnVmZmVyPiBGaWx0ZXJFZmZlY3Q6OmNvbnZlcnRJbWFnZUJ1ZmZlclRvQ29sb3JTcGFj
ZShjb25zdCBEZQogICAgIEZsb2F0U2l6ZSBjbGFtcGVkU2l6ZSA9IEltYWdlQnVmZmVyOjpjbGFt
cGVkU2l6ZShyZWN0LnNpemUoKSk7CiAKICAgICAvLyBDcmVhdGUgYW4gSW1hZ2VCdWZmZXIgd2l0
aCB0aGUgY29ycmVjdCBjb2xvciBzcGFjZSBhbmQgdXRpbGl6ZSBDRyB0byBoYW5kbGUgY29sb3Ig
c3BhY2UgY29udmVyc2lvbgotICAgIGF1dG8gY29udmVydGVkQnVmZmVyID0gSW1hZ2VCdWZmZXI6
OmNyZWF0ZShjbGFtcGVkU2l6ZSwgbV9maWx0ZXIucmVuZGVyaW5nTW9kZSgpLCBtX2ZpbHRlci5m
aWx0ZXJTY2FsZSgpLCB0YXJnZXRDb2xvclNwYWNlLCBQaXhlbEZvcm1hdDo6QkdSQTgpOworICAg
IGF1dG8gY29udmVydGVkQnVmZmVyID0gSW1hZ2VCdWZmZXI6OmNyZWF0ZShjbGFtcGVkU2l6ZSwg
UmVuZGVyaW5nTW9kZTo6VW5hY2NlbGVyYXRlZCwgMSwgdGFyZ2V0Q29sb3JTcGFjZSwgUGl4ZWxG
b3JtYXQ6OkJHUkE4KTsKICAgICBpZiAoIWNvbnZlcnRlZEJ1ZmZlcikKICAgICAgICAgcmV0dXJu
IHN0ZDo6bnVsbG9wdDsKIApAQCAtNTEzLDcgKzUwNCw2IEBAIHZvaWQgRmlsdGVyRWZmZWN0Ojpj
b3B5VW5tdWx0aXBsaWVkUmVzdWx0KFVpbnQ4Q2xhbXBlZEFycmF5JiBkZXN0aW5hdGlvbiwgY29u
c3QKICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgIEludFNpemUgaW5wdXRTaXplKG1fYWJz
b2x1dGVQYWludFJlY3Quc2l6ZSgpKTsKICAgICAgICAgICAgIEFTU0VSVCghSW1hZ2VCdWZmZXI6
OnNpemVOZWVkc0NsYW1waW5nKGlucHV0U2l6ZSkpOwotICAgICAgICAgICAgaW5wdXRTaXplLnNj
YWxlKG1fZmlsdGVyLmZpbHRlclNjYWxlKCkpOwogICAgICAgICAgICAgCiAgICAgICAgICAgICBB
U1NFUlQobV9wcmVtdWx0aXBsaWVkSW1hZ2VSZXN1bHQtPmZvcm1hdCgpLmNvbG9yU3BhY2UgPT0g
bV9yZXN1bHRDb2xvclNwYWNlKTsKICAgICAgICAgICAgIFBpeGVsQnVmZmVyRm9ybWF0IGZvcm1h
dCB7IEFscGhhUHJlbXVsdGlwbGljYXRpb246OlVucHJlbXVsdGlwbGllZCwgUGl4ZWxGb3JtYXQ6
OlJHQkE4LCBtX3Jlc3VsdENvbG9yU3BhY2UgfTsKQEAgLTU1Miw3ICs1NDIsNiBAQCB2b2lkIEZp
bHRlckVmZmVjdDo6Y29weVByZW11bHRpcGxpZWRSZXN1bHQoVWludDhDbGFtcGVkQXJyYXkmIGRl
c3RpbmF0aW9uLCBjb25zdAogICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgSW50U2l6ZSBp
bnB1dFNpemUobV9hYnNvbHV0ZVBhaW50UmVjdC5zaXplKCkpOwogICAgICAgICAgICAgQVNTRVJU
KCFJbWFnZUJ1ZmZlcjo6c2l6ZU5lZWRzQ2xhbXBpbmcoaW5wdXRTaXplKSk7Ci0gICAgICAgICAg
ICBpbnB1dFNpemUuc2NhbGUobV9maWx0ZXIuZmlsdGVyU2NhbGUoKSk7CiAKICAgICAgICAgICAg
IEFTU0VSVChtX3VubXVsdGlwbGllZEltYWdlUmVzdWx0LT5mb3JtYXQoKS5jb2xvclNwYWNlID09
IG1fcmVzdWx0Q29sb3JTcGFjZSk7CiAgICAgICAgICAgICBQaXhlbEJ1ZmZlckZvcm1hdCBmb3Jt
YXQgeyBBbHBoYVByZW11bHRpcGxpY2F0aW9uOjpQcmVtdWx0aXBsaWVkLCBQaXhlbEZvcm1hdDo6
UkdCQTgsIG1fcmVzdWx0Q29sb3JTcGFjZSB9OwpAQCAtNTcyLDcgKzU2MSw3IEBAIHZvaWQgRmls
dGVyRWZmZWN0Ojpjb3B5UHJlbXVsdGlwbGllZFJlc3VsdChVaW50OENsYW1wZWRBcnJheSYgZGVz
dGluYXRpb24sIGNvbnN0CiAKIEltYWdlQnVmZmVyKiBGaWx0ZXJFZmZlY3Q6OmNyZWF0ZUltYWdl
QnVmZmVyUmVzdWx0KCkKIHsKLSAgICBMT0coRmlsdGVycywgIkZpbHRlckVmZmVjdCAlcyAlcCBj
cmVhdGVJbWFnZUJ1ZmZlclJlc3VsdCAlZHglZCIsIGZpbHRlck5hbWUoKSwgdGhpcywgbV9hYnNv
bHV0ZVBhaW50UmVjdC5zaXplKCkud2lkdGgoKSwgbV9hYnNvbHV0ZVBhaW50UmVjdC5zaXplKCku
aGVpZ2h0KCkpOworICAgIExPRyhGaWx0ZXJzLCAiRmlsdGVyRWZmZWN0ICVzICVwIGNyZWF0ZUlt
YWdlQnVmZmVyUmVzdWx0ICVkeCVkIiwgZmlsdGVyTmFtZSgpLmNoYXJhY3RlcnM4KCksIHRoaXMs
IG1fYWJzb2x1dGVQYWludFJlY3Quc2l6ZSgpLndpZHRoKCksIG1fYWJzb2x1dGVQYWludFJlY3Qu
c2l6ZSgpLmhlaWdodCgpKTsKIAogICAgIC8vIE9ubHkgb25lIHJlc3VsdCB0eXBlIGlzIGFsbG93
ZWQuCiAgICAgQVNTRVJUKCFoYXNSZXN1bHQoKSk7CkBAIC01ODAsMTMgKzU2OSwxMyBAQCBJbWFn
ZUJ1ZmZlciogRmlsdGVyRWZmZWN0OjpjcmVhdGVJbWFnZUJ1ZmZlclJlc3VsdCgpCiAgICAgICAg
IHJldHVybiBudWxscHRyOwogCiAgICAgRmxvYXRTaXplIGNsYW1wZWRTaXplID0gSW1hZ2VCdWZm
ZXI6OmNsYW1wZWRTaXplKG1fYWJzb2x1dGVQYWludFJlY3Quc2l6ZSgpKTsKLSAgICBtX2ltYWdl
QnVmZmVyUmVzdWx0ID0gSW1hZ2VCdWZmZXI6OmNyZWF0ZShjbGFtcGVkU2l6ZSwgbV9maWx0ZXIu
cmVuZGVyaW5nTW9kZSgpLCBtX2ZpbHRlci5maWx0ZXJTY2FsZSgpLCBtX3Jlc3VsdENvbG9yU3Bh
Y2UsIFBpeGVsRm9ybWF0OjpCR1JBOCk7CisgICAgbV9pbWFnZUJ1ZmZlclJlc3VsdCA9IEltYWdl
QnVmZmVyOjpjcmVhdGUoY2xhbXBlZFNpemUsIFJlbmRlcmluZ01vZGU6OlVuYWNjZWxlcmF0ZWQs
IDEsIG1fcmVzdWx0Q29sb3JTcGFjZSwgUGl4ZWxGb3JtYXQ6OkJHUkE4KTsKICAgICByZXR1cm4g
bV9pbWFnZUJ1ZmZlclJlc3VsdC5nZXQoKTsKIH0KIAogc3RkOjpvcHRpb25hbDxQaXhlbEJ1ZmZl
cj4mIEZpbHRlckVmZmVjdDo6Y3JlYXRlVW5tdWx0aXBsaWVkSW1hZ2VSZXN1bHQoKQogewotICAg
IExPRyhGaWx0ZXJzLCAiRmlsdGVyRWZmZWN0ICVzICVwIGNyZWF0ZVVubXVsdGlwbGllZEltYWdl
UmVzdWx0IiwgZmlsdGVyTmFtZSgpLCB0aGlzKTsKKyAgICBMT0coRmlsdGVycywgIkZpbHRlckVm
ZmVjdCAlcyAlcCBjcmVhdGVVbm11bHRpcGxpZWRJbWFnZVJlc3VsdCIsIGZpbHRlck5hbWUoKS5j
aGFyYWN0ZXJzOCgpLCB0aGlzKTsKIAogICAgIC8vIE9ubHkgb25lIHJlc3VsdCB0eXBlIGlzIGFs
bG93ZWQuCiAgICAgQVNTRVJUKCFoYXNSZXN1bHQoKSk7CkBAIC01OTcsNyArNTg2LDYgQEAgc3Rk
OjpvcHRpb25hbDxQaXhlbEJ1ZmZlcj4mIEZpbHRlckVmZmVjdDo6Y3JlYXRlVW5tdWx0aXBsaWVk
SW1hZ2VSZXN1bHQoKQogCiAgICAgSW50U2l6ZSByZXN1bHRTaXplKG1fYWJzb2x1dGVQYWludFJl
Y3Quc2l6ZSgpKTsKICAgICBBU1NFUlQoIUltYWdlQnVmZmVyOjpzaXplTmVlZHNDbGFtcGluZyhy
ZXN1bHRTaXplKSk7Ci0gICAgcmVzdWx0U2l6ZS5zY2FsZShtX2ZpbHRlci5maWx0ZXJTY2FsZSgp
KTsKICAgICBQaXhlbEJ1ZmZlckZvcm1hdCBmb3JtYXQgeyBBbHBoYVByZW11bHRpcGxpY2F0aW9u
OjpVbnByZW11bHRpcGxpZWQsIFBpeGVsRm9ybWF0OjpSR0JBOCwgbV9yZXN1bHRDb2xvclNwYWNl
IH07CiAgICAgbV91bm11bHRpcGxpZWRJbWFnZVJlc3VsdCA9IFBpeGVsQnVmZmVyOjp0cnlDcmVh
dGUoZm9ybWF0LCByZXN1bHRTaXplKTsKICAgICByZXR1cm4gbV91bm11bHRpcGxpZWRJbWFnZVJl
c3VsdDsKQEAgLTYwNSw3ICs1OTMsNyBAQCBzdGQ6Om9wdGlvbmFsPFBpeGVsQnVmZmVyPiYgRmls
dGVyRWZmZWN0OjpjcmVhdGVVbm11bHRpcGxpZWRJbWFnZVJlc3VsdCgpCiAKIHN0ZDo6b3B0aW9u
YWw8UGl4ZWxCdWZmZXI+JiBGaWx0ZXJFZmZlY3Q6OmNyZWF0ZVByZW11bHRpcGxpZWRJbWFnZVJl
c3VsdCgpCiB7Ci0gICAgTE9HKEZpbHRlcnMsICJGaWx0ZXJFZmZlY3QgJXMgJXAgY3JlYXRlUHJl
bXVsdGlwbGllZEltYWdlUmVzdWx0IiwgZmlsdGVyTmFtZSgpLCB0aGlzKTsKKyAgICBMT0coRmls
dGVycywgIkZpbHRlckVmZmVjdCAlcyAlcCBjcmVhdGVQcmVtdWx0aXBsaWVkSW1hZ2VSZXN1bHQi
LCBmaWx0ZXJOYW1lKCkuY2hhcmFjdGVyczgoKSwgdGhpcyk7CiAKICAgICAvLyBPbmx5IG9uZSBy
ZXN1bHQgdHlwZSBpcyBhbGxvd2VkLgogICAgIEFTU0VSVCghaGFzUmVzdWx0KCkpOwpAQCAtNjE2
LDcgKzYwNCw2IEBAIHN0ZDo6b3B0aW9uYWw8UGl4ZWxCdWZmZXI+JiBGaWx0ZXJFZmZlY3Q6OmNy
ZWF0ZVByZW11bHRpcGxpZWRJbWFnZVJlc3VsdCgpCiAKICAgICBJbnRTaXplIHJlc3VsdFNpemUo
bV9hYnNvbHV0ZVBhaW50UmVjdC5zaXplKCkpOwogICAgIEFTU0VSVCghSW1hZ2VCdWZmZXI6OnNp
emVOZWVkc0NsYW1waW5nKHJlc3VsdFNpemUpKTsKLSAgICByZXN1bHRTaXplLnNjYWxlKG1fZmls
dGVyLmZpbHRlclNjYWxlKCkpOwogICAgIFBpeGVsQnVmZmVyRm9ybWF0IGZvcm1hdCB7IEFscGhh
UHJlbXVsdGlwbGljYXRpb246OlByZW11bHRpcGxpZWQsIFBpeGVsRm9ybWF0OjpSR0JBOCwgbV9y
ZXN1bHRDb2xvclNwYWNlIH07CiAgICAgbV9wcmVtdWx0aXBsaWVkSW1hZ2VSZXN1bHQgPSBQaXhl
bEJ1ZmZlcjo6dHJ5Q3JlYXRlKGZvcm1hdCwgcmVzdWx0U2l6ZSk7CiAgICAgcmV0dXJuIG1fcHJl
bXVsdGlwbGllZEltYWdlUmVzdWx0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvZmlsdGVycy9GaWx0ZXJFZmZlY3QuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2ZpbHRlcnMvRmlsdGVyRWZmZWN0LmgKaW5kZXggMTJkZWQyNjVhNjU1YzM3
ZTc3ZTJjZjA1YjUyNzczZjJiOTZiNDcxYy4uZTUwZWJmNDRhOTI3MmNhYTA0MjU4MDk5YzgyZTA1
Y2E2ZmZmZTQ1ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
ZmlsdGVycy9GaWx0ZXJFZmZlY3QuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9maWx0ZXJzL0ZpbHRlckVmZmVjdC5oCkBAIC0yNCwxMyArMjQsMTMgQEAKIAogI2luY2x1
ZGUgIkFscGhhUHJlbXVsdGlwbGljYXRpb24uaCIKICNpbmNsdWRlICJEZXN0aW5hdGlvbkNvbG9y
U3BhY2UuaCIKKyNpbmNsdWRlICJGaWx0ZXJGdW5jdGlvbi5oIgogI2luY2x1ZGUgIkZsb2F0UmVj
dC5oIgogI2luY2x1ZGUgIkludFJlY3QuaCIKICNpbmNsdWRlICJJbnRSZWN0RXh0ZW50LmgiCiAj
aW5jbHVkZSAiUGl4ZWxCdWZmZXIuaCIKICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9Gb3J3YXJk
Lmg+CiAjaW5jbHVkZSA8d3RmL01hdGhFeHRyYXMuaD4KLSNpbmNsdWRlIDx3dGYvUmVmQ291bnRl
ZC5oPgogI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KICNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CiAK
QEAgLTQ2LDQwICs0Niw5IEBAIGNsYXNzIEltYWdlQnVmZmVyOwogCiB0eXBlZGVmIFZlY3RvcjxS
ZWZQdHI8RmlsdGVyRWZmZWN0Pj4gRmlsdGVyRWZmZWN0VmVjdG9yOwogCi1lbnVtIEZpbHRlckVm
ZmVjdFR5cGUgewotICAgIEZpbHRlckVmZmVjdFR5cGVVbmtub3duLAotICAgIEZpbHRlckVmZmVj
dFR5cGVJbWFnZSwKLSAgICBGaWx0ZXJFZmZlY3RUeXBlVGlsZSwKLSAgICBGaWx0ZXJFZmZlY3RU
eXBlU291cmNlSW5wdXQKLX07Ci0KLWNsYXNzIEZpbHRlckVmZmVjdCA6IHB1YmxpYyBSZWZDb3Vu
dGVkPEZpbHRlckVmZmVjdD4geworY2xhc3MgRmlsdGVyRWZmZWN0IDogcHVibGljIEZpbHRlckZ1
bmN0aW9uIHsKIHB1YmxpYzoKLSAgICBlbnVtIGNsYXNzIFR5cGUgOiB1aW50OF90IHsKLSAgICAg
ICAgQmxlbmQsCi0gICAgICAgIENvbG9yTWF0cml4LAotICAgICAgICBDb21wb25lbnRUcmFuc2Zl
ciwKLSAgICAgICAgQ29tcG9zaXRlLAotICAgICAgICBDb252b2x2ZU1hdHJpeCwKLSAgICAgICAg
RGlmZnVzZUxpZ2h0aW5nLAotICAgICAgICBEaXNwbGFjZW1lbnRNYXAsCi0gICAgICAgIERyb3BT
aGFkb3csCi0gICAgICAgIEZsb29kLAotICAgICAgICBHYXVzc2lhbkJsdXIsCi0gICAgICAgIElt
YWdlLAotICAgICAgICBMaWdodGluZywKLSAgICAgICAgTWVyZ2UsCi0gICAgICAgIE1vcnBob2xv
Z3ksCi0gICAgICAgIE9mZnNldCwKLSAgICAgICAgU3BlY3VsYXJMaWdodGluZywKLSAgICAgICAg
VGlsZSwKLSAgICAgICAgVHVyYnVsZW5jZSwKLSAgICAgICAgU291cmNlQWxwaGEsCi0gICAgICAg
IFNvdXJjZUdyYXBoaWMKLSAgICB9OwotICAgIHZpcnR1YWwgfkZpbHRlckVmZmVjdCgpOwotCi0g
ICAgdm9pZCBjbGVhclJlc3VsdCgpOworICAgIHZvaWQgY2xlYXJSZXN1bHQoKSBvdmVycmlkZTsK
ICAgICB2b2lkIGNsZWFyUmVzdWx0c1JlY3Vyc2l2ZSgpOwogCiAgICAgSW1hZ2VCdWZmZXIqIGlt
YWdlQnVmZmVyUmVzdWx0KCk7CkBAIC0xMDQsNyArNzMsNyBAQCBwdWJsaWM6CiAgICAgSW50UmVj
dCByZXF1ZXN0ZWRSZWdpb25PZklucHV0UGl4ZWxCdWZmZXIoY29uc3QgSW50UmVjdCYpIGNvbnN0
OwogICAgIAogICAgIC8vIFJlY3Vyc2VzIG9uIGlucHV0cy4KLSAgICBGbG9hdFJlY3QgZGV0ZXJt
aW5lRmlsdGVyUHJpbWl0aXZlU3VicmVnaW9uKCk7CisgICAgRmxvYXRSZWN0IGRldGVybWluZUZp
bHRlclByaW1pdGl2ZVN1YnJlZ2lvbihjb25zdCBGaWx0ZXImKTsKIAogICAgIC8vIFNvbGlkIGJs
YWNrIGltYWdlIHdpdGggZGlmZmVyZW50IGFscGhhIHZhbHVlcy4KICAgICBib29sIGlzQWxwaGFJ
bWFnZSgpIGNvbnN0IHsgcmV0dXJuIG1fYWxwaGFJbWFnZTsgfQpAQCAtMTE0LDIwICs4MywxNiBA
QCBwdWJsaWM6CiAgICAgdm9pZCBzZXRBYnNvbHV0ZVBhaW50UmVjdChjb25zdCBJbnRSZWN0JiBh
YnNvbHV0ZVBhaW50UmVjdCkgeyBtX2Fic29sdXRlUGFpbnRSZWN0ID0gYWJzb2x1dGVQYWludFJl
Y3Q7IH0KIAogICAgIEZsb2F0UmVjdCBtYXhFZmZlY3RSZWN0KCkgY29uc3QgeyByZXR1cm4gbV9t
YXhFZmZlY3RSZWN0OyB9Ci0gICAgdm9pZCBzZXRNYXhFZmZlY3RSZWN0KGNvbnN0IEZsb2F0UmVj
dCYgbWF4RWZmZWN0UmVjdCkgeyBtX21heEVmZmVjdFJlY3QgPSBtYXhFZmZlY3RSZWN0OyB9IAor
ICAgIHZvaWQgc2V0TWF4RWZmZWN0UmVjdChjb25zdCBGbG9hdFJlY3QmIG1heEVmZmVjdFJlY3Qp
IHsgbV9tYXhFZmZlY3RSZWN0ID0gbWF4RWZmZWN0UmVjdDsgfQogCi0gICAgdm9pZCBhcHBseSgp
OworICAgIHZvaWQgYXBwbHkoY29uc3QgRmlsdGVyJikgb3ZlcnJpZGU7CiAKICAgICAvLyBDb3Jy
ZWN0IGFueSBpbnZhbGlkIHBpeGVscywgaWYgbmVjZXNzYXJ5LCBpbiB0aGUgcmVzdWx0IG9mIGEg
ZmlsdGVyIG9wZXJhdGlvbi4KICAgICAvLyBUaGlzIG1ldGhvZCBpcyB1c2VkIHRvIGVuc3VyZSB2
YWxpZCBwaXhlbCB2YWx1ZXMgb24gZmlsdGVyIGlucHV0cyBhbmQgdGhlIGZpbmFsIHJlc3VsdC4K
ICAgICAvLyBPbmx5IHRoZSBhcml0aG1ldGljIGNvbXBvc2l0ZSBmaWx0ZXIgZXZlciBuZWVkcyB0
byBwZXJmb3JtIGNvcnJlY3Rpb24uCiAgICAgdmlydHVhbCB2b2lkIGNvcnJlY3RGaWx0ZXJSZXN1
bHRJZk5lZWRlZCgpIHsgfQogCi0gICAgdmlydHVhbCB2b2lkIGRldGVybWluZUFic29sdXRlUGFp
bnRSZWN0KCk7Ci0KLSAgICB2aXJ0dWFsIEZpbHRlckVmZmVjdFR5cGUgZmlsdGVyRWZmZWN0VHlw
ZSgpIGNvbnN0IHsgcmV0dXJuIEZpbHRlckVmZmVjdFR5cGVVbmtub3duOyB9Ci0KLSAgICB2aXJ0
dWFsIEludE91dHNldHMgb3V0c2V0cygpIGNvbnN0IHsgcmV0dXJuIEludE91dHNldHMoKTsgfQor
ICAgIHZpcnR1YWwgdm9pZCBkZXRlcm1pbmVBYnNvbHV0ZVBhaW50UmVjdChjb25zdCBGaWx0ZXIm
KTsKIAogICAgIGVudW0gY2xhc3MgUmVwcmVzZW50YXRpb25UeXBlIHsgVGVzdE91dHB1dCwgRGVi
dWdnaW5nIH07CiAgICAgdmlydHVhbCBXVEY6OlRleHRTdHJlYW0mIGV4dGVybmFsUmVwcmVzZW50
YXRpb24oV1RGOjpUZXh0U3RyZWFtJiwgUmVwcmVzZW50YXRpb25UeXBlID0gUmVwcmVzZW50YXRp
b25UeXBlOjpUZXN0T3V0cHV0KSBjb25zdDsKQEAgLTE1NiwxMSArMTIxLDYgQEAgcHVibGljOgog
ICAgIAogICAgIEZsb2F0UG9pbnQgbWFwUG9pbnRGcm9tVXNlclNwYWNlVG9CdWZmZXIoRmxvYXRQ
b2ludCkgY29uc3Q7CiAgICAgCi0gICAgVHlwZSBmaWx0ZXJFZmZlY3RDbGFzc1R5cGUoKSBjb25z
dCB7IHJldHVybiBtX2ZpbHRlckVmZmVjdENsYXNzVHlwZTsgfQotCi0gICAgRmlsdGVyJiBmaWx0
ZXIoKSB7IHJldHVybiBtX2ZpbHRlcjsgfQotICAgIGNvbnN0IEZpbHRlciYgZmlsdGVyKCkgY29u
c3QgeyByZXR1cm4gbV9maWx0ZXI7IH0KLQogICAgIGJvb2wgY2xpcHNUb0JvdW5kcygpIGNvbnN0
IHsgcmV0dXJuIG1fY2xpcHNUb0JvdW5kczsgfQogICAgIHZvaWQgc2V0Q2xpcHNUb0JvdW5kcyhi
b29sIHZhbHVlKSB7IG1fY2xpcHNUb0JvdW5kcyA9IHZhbHVlOyB9CiAKQEAgLTE4MSwxMCArMTQx
LDggQEAgcHVibGljOgogICAgIH0KIAogcHJvdGVjdGVkOgotICAgIEZpbHRlckVmZmVjdChGaWx0
ZXImLCBUeXBlKTsKKyAgICBGaWx0ZXJFZmZlY3QoVHlwZSk7CiAgICAgCi0gICAgdmlydHVhbCBj
b25zdCBjaGFyKiBmaWx0ZXJOYW1lKCkgY29uc3QgPSAwOwotCiAgICAgSW1hZ2VCdWZmZXIqIGNy
ZWF0ZUltYWdlQnVmZmVyUmVzdWx0KCk7CiAgICAgc3RkOjpvcHRpb25hbDxQaXhlbEJ1ZmZlcj4m
IGNyZWF0ZVVubXVsdGlwbGllZEltYWdlUmVzdWx0KCk7CiAgICAgc3RkOjpvcHRpb25hbDxQaXhl
bEJ1ZmZlcj4mIGNyZWF0ZVByZW11bHRpcGxpZWRJbWFnZVJlc3VsdCgpOwpAQCAtMTk5LDcgKzE1
Nyw3IEBAIHByb3RlY3RlZDoKICAgICB2b2lkIGNsaXBBYnNvbHV0ZVBhaW50UmVjdCgpOwogCiBw
cml2YXRlOgotICAgIHZpcnR1YWwgdm9pZCBwbGF0Zm9ybUFwcGx5U29mdHdhcmUoKSA9IDA7Cisg
ICAgdmlydHVhbCB2b2lkIHBsYXRmb3JtQXBwbHlTb2Z0d2FyZShjb25zdCBGaWx0ZXImKSA9IDA7
CiAKICAgICB2b2lkIGNvcHlJbWFnZUJ5dGVzKGNvbnN0IFVpbnQ4Q2xhbXBlZEFycmF5JiBzb3Vy
Y2UsIFVpbnQ4Q2xhbXBlZEFycmF5JiBkZXN0aW5hdGlvbiwgY29uc3QgSW50UmVjdCYpIGNvbnN0
OwogICAgIHZvaWQgY29weUNvbnZlcnRlZEltYWdlQnVmZmVyVG9EZXN0aW5hdGlvbihVaW50OENs
YW1wZWRBcnJheSYsIGNvbnN0IERlc3RpbmF0aW9uQ29sb3JTcGFjZSYsIEFscGhhUHJlbXVsdGlw
bGljYXRpb24sIGNvbnN0IEludFJlY3QmKTsKQEAgLTIwOSw3ICsxNjcsNiBAQCBwcml2YXRlOgog
ICAgIHN0ZDo6b3B0aW9uYWw8UGl4ZWxCdWZmZXI+IGNvbnZlcnRQaXhlbEJ1ZmZlclRvQ29sb3JT
cGFjZShjb25zdCBEZXN0aW5hdGlvbkNvbG9yU3BhY2UmLCBQaXhlbEJ1ZmZlciYpOwogICAgIAog
Ci0gICAgRmlsdGVyJiBtX2ZpbHRlcjsKICAgICBGaWx0ZXJFZmZlY3RWZWN0b3IgbV9pbnB1dEVm
ZmVjdHM7CiAKICAgICBSZWZQdHI8SW1hZ2VCdWZmZXI+IG1faW1hZ2VCdWZmZXJSZXN1bHQ7CkBA
IC0yNDgsMTEgKzIwNSwxNyBAQCBwcml2YXRlOgogICAgIERlc3RpbmF0aW9uQ29sb3JTcGFjZSBt
X29wZXJhdGluZ0NvbG9yU3BhY2UgeyBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0IoKSB9Owog
I2VuZGlmCiAgICAgRGVzdGluYXRpb25Db2xvclNwYWNlIG1fcmVzdWx0Q29sb3JTcGFjZSB7IERl
c3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQigpIH07Ci0gICAgCi0gICAgY29uc3QgVHlwZSBtX2Zp
bHRlckVmZmVjdENsYXNzVHlwZTsKIH07CiAKIFdFQkNPUkVfRVhQT1JUIFdURjo6VGV4dFN0cmVh
bSYgb3BlcmF0b3I8PChXVEY6OlRleHRTdHJlYW0mLCBjb25zdCBGaWx0ZXJFZmZlY3QmKTsKIAog
fSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCitTUEVDSUFMSVpFX1RZUEVfVFJBSVRTX0JFR0lOKFdl
YkNvcmU6OkZpbHRlckVmZmVjdCkKKyAgICBzdGF0aWMgYm9vbCBpc1R5cGUoY29uc3QgV2ViQ29y
ZTo6RmlsdGVyRnVuY3Rpb24mIGZ1bmN0aW9uKSB7IHJldHVybiBmdW5jdGlvbi5pc0ZpbHRlckVm
ZmVjdCgpOyB9CitTUEVDSUFMSVpFX1RZUEVfVFJBSVRTX0VORCgpCisKKyNkZWZpbmUgU1BFQ0lB
TElaRV9UWVBFX1RSQUlUU19GSUxURVJfRUZGRUNUKENsYXNzTmFtZSkgXAorU1BFQ0lBTElaRV9U
WVBFX1RSQUlUU19CRUdJTihXZWJDb3JlOjpDbGFzc05hbWUpIFwKKyAgICBzdGF0aWMgYm9vbCBp
c1R5cGUoY29uc3QgV2ViQ29yZTo6RmlsdGVyRWZmZWN0JiBlZmZlY3QpIHsgcmV0dXJuIGVmZmVj
dC5maWx0ZXJUeXBlKCkgPT0gV2ViQ29yZTo6RmlsdGVyRWZmZWN0OjpUeXBlOjpDbGFzc05hbWU7
IH0gXAorU1BFQ0lBTElaRV9UWVBFX1RSQUlUU19FTkQoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GaWx0ZXJFZmZlY3RSZW5kZXJlci5oIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GaWx0ZXJFZmZlY3RSZW5k
ZXJlci5oCmluZGV4IDU2YmUyNDczNjFmNTNiM2MwOWVjYjU3MTMyMmI3NWE3NTczZTljYzQuLjU5
Y2Y3ZGZlMzQzNjExZmIxYTZmMjY1MmY2NjBiNmMwYjgxOTA1N2IgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRmlsdGVyRWZmZWN0UmVuZGVyZXIu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZpbHRlckVm
ZmVjdFJlbmRlcmVyLmgKQEAgLTM2LDcgKzM2LDcgQEAgY2xhc3MgRmlsdGVyRWZmZWN0UmVuZGVy
ZXIgewogICAgIAogcHVibGljOgogICAgIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8RmlsdGVyRWZm
ZWN0UmVuZGVyZXI+IHRyeUNyZWF0ZShib29sLCBGaWx0ZXJFZmZlY3QmKTsKLSAgICB2aXJ0dWFs
IHZvaWQgYXBwbHlFZmZlY3RzKEZpbHRlckVmZmVjdCYpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQg
YXBwbHlFZmZlY3RzKGNvbnN0IEZpbHRlciYsIEZpbHRlckVmZmVjdCYpID0gMDsKICAgICB2aXJ0
dWFsIGJvb2wgaGFzUmVzdWx0KCkgY29uc3QgPSAwOwogICAgIHZpcnR1YWwgSW1hZ2VCdWZmZXIq
IG91dHB1dCgpIGNvbnN0ID0gMDsKICAgICB2aXJ0dWFsIEZsb2F0UmVjdCBkZXN0UmVjdChjb25z
dCBGaWx0ZXJFZmZlY3QmKSBjb25zdCA9IDA7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZpbHRlckZ1bmN0aW9uLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRmlsdGVyRnVuY3Rpb24uY3BwCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjJmNWJiMTU2MzgxZGVjMWUwYmFjMjJkOTExOWMyZTBlZDgwZTRhZjEKLS0tIC9kZXYvbnVs
bAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZpbHRlckZ1
bmN0aW9uLmNwcApAQCAtMCwwICsxLDg0IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIxIEFw
cGxlIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZF
TlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9S
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisg
KiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJGaWx0ZXJG
dW5jdGlvbi5oIgorCisjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KKyNpbmNsdWRlIDx3dGYvTmV2
ZXJEZXN0cm95ZWQuaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9BdG9tU3RyaW5nSGFzaC5oPgorCitu
YW1lc3BhY2UgV2ViQ29yZSB7CisKK0ZpbHRlckZ1bmN0aW9uOjpGaWx0ZXJGdW5jdGlvbihUeXBl
IGZpbHRlclR5cGUpCisgICAgOiBtX2ZpbHRlclR5cGUoZmlsdGVyVHlwZSkKK3sKK30KKworc3Rh
dGljIGlubGluZSBjb25zdCBhdXRvJiBmaWx0ZXJOYW1lcygpCit7CisgICAgdXNpbmcgRmlsdGVy
TmFtZU1hcCA9IEhhc2hNYXA8RmlsdGVyRnVuY3Rpb246OlR5cGUsIEF0b21TdHJpbmcsIFdURjo6
SW50SGFzaDxGaWx0ZXJGdW5jdGlvbjo6VHlwZT4sIFdURjo6U3Ryb25nRW51bUhhc2hUcmFpdHM8
RmlsdGVyRnVuY3Rpb246OlR5cGU+PjsKKworICAgIHN0YXRpYyBhdXRvIGZpbHRlck5hbWVzID0g
bWFrZU5ldmVyRGVzdHJveWVkKFtdIHsKKyAgICAgICAgRmlsdGVyTmFtZU1hcCBmaWx0ZXJOYW1l
cyA9IHsKKyAgICAgICAgICAgIHsgRmlsdGVyRnVuY3Rpb246OlR5cGU6OkNTU0ZpbHRlciwgICAg
ICAgICAgICJDU1NGaWx0ZXIiX3MgICAgICAgICAgIH0sCisgICAgICAgICAgICB7IEZpbHRlckZ1
bmN0aW9uOjpUeXBlOjpTVkdGaWx0ZXIsICAgICAgICAgICAiU1ZHRmlsdGVyIl9zICAgICAgICAg
ICB9LAorICAgICAgICAgICAgCisgICAgICAgICAgICB7IEZpbHRlckZ1bmN0aW9uOjpUeXBlOjpG
RUJsZW5kLCAgICAgICAgICAgICAiRkVCbGVuZCJfcyAgICAgICAgICAgICB9LAorICAgICAgICAg
ICAgeyBGaWx0ZXJGdW5jdGlvbjo6VHlwZTo6RkVDb2xvck1hdHJpeCwgICAgICAgIkZFQ29sb3JN
YXRyaXgiX3MgICAgICAgfSwKKyAgICAgICAgICAgIHsgRmlsdGVyRnVuY3Rpb246OlR5cGU6OkZF
Q29tcG9uZW50VHJhbnNmZXIsICJGRUNvbXBvbmVudFRyYW5zZmVyIl9zIH0sCisgICAgICAgICAg
ICB7IEZpbHRlckZ1bmN0aW9uOjpUeXBlOjpGRUNvbXBvc2l0ZSwgICAgICAgICAiRkVDb21wb3Np
dGUiX3MgICAgICAgICB9LAorICAgICAgICAgICAgeyBGaWx0ZXJGdW5jdGlvbjo6VHlwZTo6RkVD
b252b2x2ZU1hdHJpeCwgICAgIkZFQ29udm9sdmVNYXRyaXgiX3MgICAgfSwKKyAgICAgICAgICAg
IHsgRmlsdGVyRnVuY3Rpb246OlR5cGU6OkZFRGlmZnVzZUxpZ2h0aW5nLCAgICJGRURpZmZ1c2VM
aWdodGluZyJfcyAgIH0sCisgICAgICAgICAgICB7IEZpbHRlckZ1bmN0aW9uOjpUeXBlOjpGRURp
c3BsYWNlbWVudE1hcCwgICAiRkVEaXNwbGFjZW1lbnRNYXAiX3MgICB9LAorICAgICAgICAgICAg
eyBGaWx0ZXJGdW5jdGlvbjo6VHlwZTo6RkVEcm9wU2hhZG93LCAgICAgICAgIkZFRHJvcFNoYWRv
dyJfcyAgICAgICAgfSwKKyAgICAgICAgICAgIHsgRmlsdGVyRnVuY3Rpb246OlR5cGU6OkZFRmxv
b2QsICAgICAgICAgICAgICJGRUZsb29kIl9zICAgICAgICAgICAgIH0sCisgICAgICAgICAgICB7
IEZpbHRlckZ1bmN0aW9uOjpUeXBlOjpGRUdhdXNzaWFuQmx1ciwgICAgICAiRkVHYXVzc2lhbkJs
dXIiX3MgICAgICB9LAorICAgICAgICAgICAgeyBGaWx0ZXJGdW5jdGlvbjo6VHlwZTo6RkVJbWFn
ZSwgICAgICAgICAgICAgIkZFSW1hZ2UiX3MgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgIHsg
RmlsdGVyRnVuY3Rpb246OlR5cGU6OkZFTWVyZ2UsICAgICAgICAgICAgICJGRU1lcmdlIl9zICAg
ICAgICAgICAgIH0sCisgICAgICAgICAgICB7IEZpbHRlckZ1bmN0aW9uOjpUeXBlOjpGRU1vcnBo
b2xvZ3ksICAgICAgICAiRkVNb3JwaG9sb2d5Il9zICAgICAgICB9LAorICAgICAgICAgICAgeyBG
aWx0ZXJGdW5jdGlvbjo6VHlwZTo6RkVPZmZzZXQsICAgICAgICAgICAgIkZFT2Zmc2V0Il9zICAg
ICAgICAgICAgfSwKKyAgICAgICAgICAgIHsgRmlsdGVyRnVuY3Rpb246OlR5cGU6OkZFU3BlY3Vs
YXJMaWdodGluZywgICJGRVNwZWN1bGFyTGlnaHRpbmciX3MgIH0sCisgICAgICAgICAgICB7IEZp
bHRlckZ1bmN0aW9uOjpUeXBlOjpGRVRpbGUsICAgICAgICAgICAgICAiRkVUaWxlIl9zICAgICAg
ICAgICAgICB9LAorICAgICAgICAgICAgeyBGaWx0ZXJGdW5jdGlvbjo6VHlwZTo6RkVUdXJidWxl
bmNlLCAgICAgICAgIkZFVHVyYnVsZW5jZSJfcyAgICAgICAgfSwKKworICAgICAgICAgICAgeyBG
aWx0ZXJGdW5jdGlvbjo6VHlwZTo6U291cmNlQWxwaGEsICAgICAgICAgIlNvdXJjZUFscGhhIl9z
ICAgICAgICAgfSwKKyAgICAgICAgICAgIHsgRmlsdGVyRnVuY3Rpb246OlR5cGU6OlNvdXJjZUdy
YXBoaWMsICAgICAgICJTb3VyY2VHcmFwaGljIl9zICAgICAgIH0KKworICAgICAgICB9OworICAg
ICAgICByZXR1cm4gZmlsdGVyTmFtZXM7CisgICAgfSgpKTsKKyAgICAKKyAgICByZXR1cm4gZmls
dGVyTmFtZXMuZ2V0KCk7Cit9CisKK2NvbnN0IEF0b21TdHJpbmcmIEZpbHRlckZ1bmN0aW9uOjpm
aWx0ZXJOYW1lKFR5cGUgZmlsdGVyVHlwZSkKK3sKKyAgICBhdXRvIGl0ID0gZmlsdGVyTmFtZXMo
KS5maW5kKGZpbHRlclR5cGUpOworICAgIEFTU0VSVChpdCAhPSBmaWx0ZXJOYW1lcygpLmVuZCgp
KTsKKyAgICByZXR1cm4gaXQtPnZhbHVlOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZpbHRl
ckZ1bmN0aW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0Zp
bHRlckZ1bmN0aW9uLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMjdiZTk4NGM0ZDE3NzU4ZjY3MWFjMmY3ZGM1NjEy
ZjllMWQyMjhkYQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2ZpbHRlcnMvRmlsdGVyRnVuY3Rpb24uaApAQCAtMCwwICsxLDEyOCBAQAorLyoKKyAq
IENvcHlyaWdodCAoQykgMjAyMSBBcHBsZSBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoK
KyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFT
IElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUg
RElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJV
VE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVD
SUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVT
UyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQK
KyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKwor
I2luY2x1ZGUgIkZsb2F0UmVjdC5oIgorI2luY2x1ZGUgIkludFJlY3RFeHRlbnQuaCIKKyNpbmNs
dWRlIDx3dGYvUmVmQ291bnRlZC5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L0F0b21TdHJpbmcuaD4K
KworbmFtZXNwYWNlIFdURiB7CitjbGFzcyBUZXh0U3RyZWFtOworfQorCituYW1lc3BhY2UgV2Vi
Q29yZSB7CisKK2NsYXNzIEZpbHRlcjsKKworY2xhc3MgRmlsdGVyRnVuY3Rpb24gOiBwdWJsaWMg
UmVmQ291bnRlZDxGaWx0ZXJGdW5jdGlvbj4geworcHVibGljOgorICAgIGVudW0gY2xhc3MgVHlw
ZSA6IHVpbnQ4X3QgeworICAgICAgICBDU1NGaWx0ZXIsCisgICAgICAgIFNWR0ZpbHRlciwKKwor
ICAgICAgICBGRU1pbmltdW0sCisKKyAgICAgICAgRkVCbGVuZCA9IEZFTWluaW11bSwKKyAgICAg
ICAgRkVDb2xvck1hdHJpeCwKKyAgICAgICAgRkVDb21wb25lbnRUcmFuc2ZlciwKKyAgICAgICAg
RkVDb21wb3NpdGUsCisgICAgICAgIEZFQ29udm9sdmVNYXRyaXgsCisgICAgICAgIEZFRGlmZnVz
ZUxpZ2h0aW5nLAorICAgICAgICBGRURpc3BsYWNlbWVudE1hcCwKKyAgICAgICAgRkVEcm9wU2hh
ZG93LAorICAgICAgICBGRUZsb29kLAorICAgICAgICBGRUdhdXNzaWFuQmx1ciwKKyAgICAgICAg
RkVJbWFnZSwKKyAgICAgICAgRkVNZXJnZSwKKyAgICAgICAgRkVNb3JwaG9sb2d5LAorICAgICAg
ICBGRU9mZnNldCwKKyAgICAgICAgRkVTcGVjdWxhckxpZ2h0aW5nLAorICAgICAgICBGRVRpbGUs
CisgICAgICAgIEZFVHVyYnVsZW5jZSwKKyAgICAgICAgU291cmNlQWxwaGEsCisgICAgICAgIFNv
dXJjZUdyYXBoaWMsCisKKyAgICAgICAgRkVNYXhpbXVtID0gU291cmNlR3JhcGhpYworICAgIH07
CisKKyAgICBGaWx0ZXJGdW5jdGlvbihUeXBlKTsKKyAgICB2aXJ0dWFsIH5GaWx0ZXJGdW5jdGlv
bigpID0gZGVmYXVsdDsKKworICAgIFR5cGUgZmlsdGVyVHlwZSgpIGNvbnN0IHsgcmV0dXJuIG1f
ZmlsdGVyVHlwZTsgfQorCisgICAgYm9vbCBpc0NTU0ZpbHRlcigpIGNvbnN0IHsgcmV0dXJuIG1f
ZmlsdGVyVHlwZSA9PSBUeXBlOjpDU1NGaWx0ZXI7IH0KKyAgICBib29sIGlzU1ZHRmlsdGVyKCkg
Y29uc3QgeyByZXR1cm4gbV9maWx0ZXJUeXBlID09IFR5cGU6OlNWR0ZpbHRlcjsgfQorICAgIGJv
b2wgaXNGaWx0ZXIoKSBjb25zdCB7IHJldHVybiBtX2ZpbHRlclR5cGUgPT0gVHlwZTo6Q1NTRmls
dGVyIHx8IG1fZmlsdGVyVHlwZSA9PSBUeXBlOjpTVkdGaWx0ZXI7IH0KKyAgICBib29sIGlzRmls
dGVyRWZmZWN0KCkgY29uc3QgeyByZXR1cm4gbV9maWx0ZXJUeXBlID49IFR5cGU6OkZFTWluaW11
bSAmJiBtX2ZpbHRlclR5cGUgPD0gVHlwZTo6RkVNYXhpbXVtOyB9CisKKyAgICBzdGF0aWMgY29u
c3QgQXRvbVN0cmluZyYgZmlsdGVyTmFtZShUeXBlKTsKKyAgICBzdGF0aWMgY29uc3QgQXRvbVN0
cmluZyYgc291cmNlQWxwaGFOYW1lKCkgeyByZXR1cm4gZmlsdGVyTmFtZShUeXBlOjpTb3VyY2VB
bHBoYSk7IH0KKyAgICBzdGF0aWMgY29uc3QgQXRvbVN0cmluZyYgc291cmNlR3JhcGhpY05hbWUo
KSB7IHJldHVybiBmaWx0ZXJOYW1lKFR5cGU6OlNvdXJjZUdyYXBoaWMpOyB9CisgICAgY29uc3Qg
QXRvbVN0cmluZyYgZmlsdGVyTmFtZSgpIGNvbnN0IHsgcmV0dXJuIGZpbHRlck5hbWUobV9maWx0
ZXJUeXBlKTsgfQorCisgICAgdmlydHVhbCBJbnRPdXRzZXRzIG91dHNldHMoKSBjb25zdCB7IHJl
dHVybiB7IH07IH0KKyAgICB2aXJ0dWFsIHZvaWQgYXBwbHkoY29uc3QgRmlsdGVyJikgeyB9Cisg
ICAgdmlydHVhbCB2b2lkIGNsZWFyUmVzdWx0KCkgeyB9CisKK3ByaXZhdGU6CisgICAgVHlwZSBt
X2ZpbHRlclR5cGU7Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKK25hbWVzcGFjZSBX
VEYgeworCit0ZW1wbGF0ZTw+IHN0cnVjdCBFbnVtVHJhaXRzPFdlYkNvcmU6OkZpbHRlckZ1bmN0
aW9uOjpUeXBlPiB7CisgICAgdXNpbmcgdmFsdWVzID0gRW51bVZhbHVlczwKKyAgICAgICAgV2Vi
Q29yZTo6RmlsdGVyRnVuY3Rpb246OlR5cGUsCisKKyAgICAgICAgV2ViQ29yZTo6RmlsdGVyRnVu
Y3Rpb246OlR5cGU6OkNTU0ZpbHRlciwKKyAgICAgICAgV2ViQ29yZTo6RmlsdGVyRnVuY3Rpb246
OlR5cGU6OlNWR0ZpbHRlciwKKworICAgICAgICBXZWJDb3JlOjpGaWx0ZXJGdW5jdGlvbjo6VHlw
ZTo6RkVCbGVuZCwKKyAgICAgICAgV2ViQ29yZTo6RmlsdGVyRnVuY3Rpb246OlR5cGU6OkZFQ29s
b3JNYXRyaXgsCisgICAgICAgIFdlYkNvcmU6OkZpbHRlckZ1bmN0aW9uOjpUeXBlOjpGRUNvbXBv
bmVudFRyYW5zZmVyLAorICAgICAgICBXZWJDb3JlOjpGaWx0ZXJGdW5jdGlvbjo6VHlwZTo6RkVD
b21wb3NpdGUsCisgICAgICAgIFdlYkNvcmU6OkZpbHRlckZ1bmN0aW9uOjpUeXBlOjpGRUNvbnZv
bHZlTWF0cml4LAorICAgICAgICBXZWJDb3JlOjpGaWx0ZXJGdW5jdGlvbjo6VHlwZTo6RkVEaWZm
dXNlTGlnaHRpbmcsCisgICAgICAgIFdlYkNvcmU6OkZpbHRlckZ1bmN0aW9uOjpUeXBlOjpGRURp
c3BsYWNlbWVudE1hcCwKKyAgICAgICAgV2ViQ29yZTo6RmlsdGVyRnVuY3Rpb246OlR5cGU6OkZF
RHJvcFNoYWRvdywKKyAgICAgICAgV2ViQ29yZTo6RmlsdGVyRnVuY3Rpb246OlR5cGU6OkZFRmxv
b2QsCisgICAgICAgIFdlYkNvcmU6OkZpbHRlckZ1bmN0aW9uOjpUeXBlOjpGRUdhdXNzaWFuQmx1
ciwKKyAgICAgICAgV2ViQ29yZTo6RmlsdGVyRnVuY3Rpb246OlR5cGU6OkZFSW1hZ2UsCisgICAg
ICAgIFdlYkNvcmU6OkZpbHRlckZ1bmN0aW9uOjpUeXBlOjpGRU1lcmdlLAorICAgICAgICBXZWJD
b3JlOjpGaWx0ZXJGdW5jdGlvbjo6VHlwZTo6RkVNb3JwaG9sb2d5LAorICAgICAgICBXZWJDb3Jl
OjpGaWx0ZXJGdW5jdGlvbjo6VHlwZTo6RkVPZmZzZXQsCisgICAgICAgIFdlYkNvcmU6OkZpbHRl
ckZ1bmN0aW9uOjpUeXBlOjpGRVNwZWN1bGFyTGlnaHRpbmcsCisgICAgICAgIFdlYkNvcmU6OkZp
bHRlckZ1bmN0aW9uOjpUeXBlOjpGRVRpbGUsCisgICAgICAgIFdlYkNvcmU6OkZpbHRlckZ1bmN0
aW9uOjpUeXBlOjpGRVR1cmJ1bGVuY2UsCisgICAgICAgIFdlYkNvcmU6OkZpbHRlckZ1bmN0aW9u
OjpUeXBlOjpTb3VyY2VBbHBoYSwKKyAgICAgICAgV2ViQ29yZTo6RmlsdGVyRnVuY3Rpb246OlR5
cGU6OlNvdXJjZUdyYXBoaWMKKyAgICA+OworfTsKKworfSAvLyBuYW1lc3BhY2UgV1RGCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL1NvdXJjZUFs
cGhhLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvU291cmNl
QWxwaGEuY3BwCmluZGV4IDc2NDlmMDU4YWM4NjliNTU0YWYwZGM1MDdmZmY5MDkwYWQ2Y2YzYTMu
LmUxMDRhOGQyMDg2MGVmODAyOWFmNzNhZTkxM2E5NDdlZTFjZTY4N2EgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvU291cmNlQWxwaGEuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvU291cmNlQWxwaGEu
Y3BwCkBAIC0yMywxMCArMjMsNyBAQAogI2luY2x1ZGUgIkNvbG9yLmgiCiAjaW5jbHVkZSAiRmls
dGVyLmgiCiAjaW5jbHVkZSAiR3JhcGhpY3NDb250ZXh0LmgiCi0jaW5jbHVkZSA8d3RmL05ldmVy
RGVzdHJveWVkLmg+Ci0jaW5jbHVkZSA8d3RmL1N0ZExpYkV4dHJhcy5oPgogI2luY2x1ZGUgPHd0
Zi90ZXh0L1RleHRTdHJlYW0uaD4KLSNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KIAog
bmFtZXNwYWNlIFdlYkNvcmUgewogCkBAIC0zNSwxOSArMzIsMjAgQEAgUmVmPFNvdXJjZUFscGhh
PiBTb3VyY2VBbHBoYTo6Y3JlYXRlKEZpbHRlckVmZmVjdCYgc291cmNlRWZmZWN0KQogICAgIHJl
dHVybiBhZG9wdFJlZigqbmV3IFNvdXJjZUFscGhhKHNvdXJjZUVmZmVjdCkpOwogfQogCi1jb25z
dCBBdG9tU3RyaW5nJiBTb3VyY2VBbHBoYTo6ZWZmZWN0TmFtZSgpCitTb3VyY2VBbHBoYTo6U291
cmNlQWxwaGEoRmlsdGVyRWZmZWN0JiBzb3VyY2VFZmZlY3QpCisgICAgOiBGaWx0ZXJFZmZlY3Qo
RmlsdGVyRWZmZWN0OjpUeXBlOjpTb3VyY2VBbHBoYSkKIHsKLSAgICBzdGF0aWMgTWFpblRocmVh
ZE5ldmVyRGVzdHJveWVkPGNvbnN0IEF0b21TdHJpbmc+IHNfZWZmZWN0TmFtZSgiU291cmNlQWxw
aGEiLCBBdG9tU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCk7Ci0gICAgcmV0dXJuIHNfZWZm
ZWN0TmFtZTsKKyAgICBzZXRPcGVyYXRpbmdDb2xvclNwYWNlKHNvdXJjZUVmZmVjdC5vcGVyYXRp
bmdDb2xvclNwYWNlKCkpOworICAgIGlucHV0RWZmZWN0cygpLmFwcGVuZCgmc291cmNlRWZmZWN0
KTsKIH0KIAotdm9pZCBTb3VyY2VBbHBoYTo6ZGV0ZXJtaW5lQWJzb2x1dGVQYWludFJlY3QoKQor
dm9pZCBTb3VyY2VBbHBoYTo6ZGV0ZXJtaW5lQWJzb2x1dGVQYWludFJlY3QoY29uc3QgRmlsdGVy
JiBmaWx0ZXIpCiB7Ci0gICAgaW5wdXRFZmZlY3QoMCktPmRldGVybWluZUFic29sdXRlUGFpbnRS
ZWN0KCk7CisgICAgaW5wdXRFZmZlY3QoMCktPmRldGVybWluZUFic29sdXRlUGFpbnRSZWN0KGZp
bHRlcik7CiAgICAgc2V0QWJzb2x1dGVQYWludFJlY3QoaW5wdXRFZmZlY3QoMCktPmFic29sdXRl
UGFpbnRSZWN0KCkpOwogfQogCi12b2lkIFNvdXJjZUFscGhhOjpwbGF0Zm9ybUFwcGx5U29mdHdh
cmUoKQordm9pZCBTb3VyY2VBbHBoYTo6cGxhdGZvcm1BcHBseVNvZnR3YXJlKGNvbnN0IEZpbHRl
ciYpCiB7CiAgICAgSW1hZ2VCdWZmZXIqIHJlc3VsdEltYWdlID0gY3JlYXRlSW1hZ2VCdWZmZXJS
ZXN1bHQoKTsKICAgICBpZiAoIXJlc3VsdEltYWdlKQpAQCAtNjksMTEgKzY3LDQgQEAgVGV4dFN0
cmVhbSYgU291cmNlQWxwaGE6OmV4dGVybmFsUmVwcmVzZW50YXRpb24oVGV4dFN0cmVhbSYgdHMs
IFJlcHJlc2VudGF0aW9uVHkKICAgICByZXR1cm4gdHM7CiB9CiAKLVNvdXJjZUFscGhhOjpTb3Vy
Y2VBbHBoYShGaWx0ZXJFZmZlY3QmIHNvdXJjZUVmZmVjdCkKLSAgICA6IEZpbHRlckVmZmVjdChz
b3VyY2VFZmZlY3QuZmlsdGVyKCksIFR5cGU6OlNvdXJjZUFscGhhKQotewotICAgIHNldE9wZXJh
dGluZ0NvbG9yU3BhY2Uoc291cmNlRWZmZWN0Lm9wZXJhdGluZ0NvbG9yU3BhY2UoKSk7Ci0gICAg
aW5wdXRFZmZlY3RzKCkuYXBwZW5kKCZzb3VyY2VFZmZlY3QpOwotfQotCiB9IC8vIG5hbWVzcGFj
ZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9m
aWx0ZXJzL1NvdXJjZUFscGhhLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9m
aWx0ZXJzL1NvdXJjZUFscGhhLmgKaW5kZXggNjYyOWEzNjdmZDQzMjQyZDFjNGFhZGU2NGM1NjFl
ODY0YTM5NDkwZi4uNTJhMzlhNDkyNDE2MTFlMDExNDQxN2E2YTA0ZjY2ZjA5YzYxMDMwNCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9Tb3VyY2VB
bHBoYS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvU291
cmNlQWxwaGEuaApAQCAtMTcsOCArMTcsNyBAQAogICogQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBV
U0EuCiAgKi8KIAotI2lmbmRlZiBTb3VyY2VBbHBoYV9oCi0jZGVmaW5lIFNvdXJjZUFscGhhX2gK
KyNwcmFnbWEgb25jZQogCiAjaW5jbHVkZSAiRmlsdGVyRWZmZWN0LmgiCiAKQEAgLTI4LDE5ICsy
NywxNiBAQCBjbGFzcyBTb3VyY2VBbHBoYSA6IHB1YmxpYyBGaWx0ZXJFZmZlY3QgewogcHVibGlj
OiAgICAgICAgCiAgICAgc3RhdGljIFJlZjxTb3VyY2VBbHBoYT4gY3JlYXRlKEZpbHRlckVmZmVj
dCYpOwogCi0gICAgc3RhdGljIGNvbnN0IEF0b21TdHJpbmcmIGVmZmVjdE5hbWUoKTsKKyAgICBz
dGF0aWMgY29uc3QgQXRvbVN0cmluZyYgZWZmZWN0TmFtZSgpIHsgcmV0dXJuIEZpbHRlckVmZmVj
dDo6c291cmNlQWxwaGFOYW1lKCk7IH0KIAogcHJpdmF0ZToKICAgICBleHBsaWNpdCBTb3VyY2VB
bHBoYShGaWx0ZXJFZmZlY3QmKTsKLSAgICBGaWx0ZXJFZmZlY3RUeXBlIGZpbHRlckVmZmVjdFR5
cGUoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBGaWx0ZXJFZmZlY3RUeXBlU291cmNlSW5wdXQ7
IH0KIAotICAgIGNvbnN0IGNoYXIqIGZpbHRlck5hbWUoKSBjb25zdCBmaW5hbCB7IHJldHVybiAi
U291cmNlQWxwaGEiOyB9Ci0KLSAgICB2b2lkIHBsYXRmb3JtQXBwbHlTb2Z0d2FyZSgpIG92ZXJy
aWRlOwotICAgIHZvaWQgZGV0ZXJtaW5lQWJzb2x1dGVQYWludFJlY3QoKSBvdmVycmlkZTsKKyAg
ICB2b2lkIHBsYXRmb3JtQXBwbHlTb2Z0d2FyZShjb25zdCBGaWx0ZXImKSBvdmVycmlkZTsKKyAg
ICB2b2lkIGRldGVybWluZUFic29sdXRlUGFpbnRSZWN0KGNvbnN0IEZpbHRlciYpIG92ZXJyaWRl
OwogICAgIFdURjo6VGV4dFN0cmVhbSYgZXh0ZXJuYWxSZXByZXNlbnRhdGlvbihXVEY6OlRleHRT
dHJlYW0mLCBSZXByZXNlbnRhdGlvblR5cGUpIGNvbnN0IG92ZXJyaWRlOwogfTsKIAogfSAvL25h
bWVzcGFjZSBXZWJDb3JlCiAKLSNlbmRpZiAvLyBTb3VyY2VBbHBoYV9oCitTUEVDSUFMSVpFX1RZ
UEVfVFJBSVRTX0ZJTFRFUl9FRkZFQ1QoU291cmNlQWxwaGEpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL1NvdXJjZUdyYXBoaWMuY3BwIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9Tb3VyY2VHcmFwaGljLmNwcApp
bmRleCA4OGEzNmE0MTAyNmJkM2E1ODU0NDc4MjAyNzRjMTEwN2Q3ODM5MmU5Li5lNzJmMGYwYjc4
Yjk2ZTdjZWQ5OGUxZWQxZDAxMzVkMzUyMjdhNWM5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL1NvdXJjZUdyYXBoaWMuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvU291cmNlR3JhcGhpYy5jcHAKQEAg
LTIyLDM2ICsyMiwyOCBAQAogCiAjaW5jbHVkZSAiRmlsdGVyLmgiCiAjaW5jbHVkZSAiR3JhcGhp
Y3NDb250ZXh0LmgiCi0jaW5jbHVkZSA8d3RmL05ldmVyRGVzdHJveWVkLmg+Ci0jaW5jbHVkZSA8
d3RmL1N0ZExpYkV4dHJhcy5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1RleHRTdHJlYW0uaD4KLSNp
bmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1S
ZWY8U291cmNlR3JhcGhpYz4gU291cmNlR3JhcGhpYzo6Y3JlYXRlKEZpbHRlciYgZmlsdGVyKQor
UmVmPFNvdXJjZUdyYXBoaWM+IFNvdXJjZUdyYXBoaWM6OmNyZWF0ZSgpCiB7Ci0gICAgcmV0dXJu
IGFkb3B0UmVmKCpuZXcgU291cmNlR3JhcGhpYyhmaWx0ZXIpKTsKKyAgICByZXR1cm4gYWRvcHRS
ZWYoKm5ldyBTb3VyY2VHcmFwaGljKCkpOwogfQogCi1jb25zdCBBdG9tU3RyaW5nJiBTb3VyY2VH
cmFwaGljOjplZmZlY3ROYW1lKCkKK1NvdXJjZUdyYXBoaWM6OlNvdXJjZUdyYXBoaWMoKQorICAg
IDogRmlsdGVyRWZmZWN0KFR5cGU6OlNvdXJjZUdyYXBoaWMpCiB7Ci0gICAgc3RhdGljIE1haW5U
aHJlYWROZXZlckRlc3Ryb3llZDxjb25zdCBBdG9tU3RyaW5nPiBzX2VmZmVjdE5hbWUoIlNvdXJj
ZUdyYXBoaWMiLCBBdG9tU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCk7Ci0gICAgcmV0dXJu
IHNfZWZmZWN0TmFtZTsKIH0KIAotdm9pZCBTb3VyY2VHcmFwaGljOjpkZXRlcm1pbmVBYnNvbHV0
ZVBhaW50UmVjdCgpCit2b2lkIFNvdXJjZUdyYXBoaWM6OmRldGVybWluZUFic29sdXRlUGFpbnRS
ZWN0KGNvbnN0IEZpbHRlciYgZmlsdGVyKQogewotICAgIEZpbHRlciYgZmlsdGVyID0gdGhpcy0+
ZmlsdGVyKCk7CiAgICAgRmxvYXRSZWN0IHBhaW50UmVjdCA9IGZpbHRlci5zb3VyY2VJbWFnZVJl
Y3QoKTsKLSAgICBwYWludFJlY3Quc2NhbGUoZmlsdGVyLmZpbHRlclJlc29sdXRpb24oKS53aWR0
aCgpLCBmaWx0ZXIuZmlsdGVyUmVzb2x1dGlvbigpLmhlaWdodCgpKTsKICAgICBzZXRBYnNvbHV0
ZVBhaW50UmVjdChlbmNsb3NpbmdJbnRSZWN0KHBhaW50UmVjdCkpOwogfQogCi12b2lkIFNvdXJj
ZUdyYXBoaWM6OnBsYXRmb3JtQXBwbHlTb2Z0d2FyZSgpCit2b2lkIFNvdXJjZUdyYXBoaWM6OnBs
YXRmb3JtQXBwbHlTb2Z0d2FyZShjb25zdCBGaWx0ZXImIGZpbHRlcikKIHsKLSAgICBGaWx0ZXIm
IGZpbHRlciA9IHRoaXMtPmZpbHRlcigpOwotCiAgICAgSW1hZ2VCdWZmZXIqIHJlc3VsdEltYWdl
ID0gY3JlYXRlSW1hZ2VCdWZmZXJSZXN1bHQoKTsKICAgICBJbWFnZUJ1ZmZlciogc291cmNlSW1h
Z2UgPSBmaWx0ZXIuc291cmNlSW1hZ2UoKTsKICAgICBpZiAoIXJlc3VsdEltYWdlIHx8ICFzb3Vy
Y2VJbWFnZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Zp
bHRlcnMvU291cmNlR3JhcGhpYy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
ZmlsdGVycy9Tb3VyY2VHcmFwaGljLmgKaW5kZXggMzBjZDU0ZjI0NTNiYmE4YTM3NzYzMjEzMjhl
ZjIxMDZiN2ZjYTViZi4uNmJjNDdhMWYwMWI1NTYzNjViOTU3OTVlNmEwNWM1YWViMTYzMTJlNCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9Tb3Vy
Y2VHcmFwaGljLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVy
cy9Tb3VyY2VHcmFwaGljLmgKQEAgLTE4LDQxICsxOCwyNiBAQAogICogQm9zdG9uLCBNQSAwMjEx
MC0xMzAxLCBVU0EuCiAgKi8KIAotI2lmbmRlZiBTb3VyY2VHcmFwaGljX2gKLSNkZWZpbmUgU291
cmNlR3JhcGhpY19oCisjcHJhZ21hIG9uY2UKIAogI2luY2x1ZGUgIkZpbHRlckVmZmVjdC5oIgot
I2luY2x1ZGUgIkZpbHRlci5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIFNvdXJj
ZUdyYXBoaWMgOiBwdWJsaWMgRmlsdGVyRWZmZWN0IHsKIHB1YmxpYzogICAgICAgIAotICAgIHN0
YXRpYyBSZWY8U291cmNlR3JhcGhpYz4gY3JlYXRlKEZpbHRlciYpOworICAgIHN0YXRpYyBSZWY8
U291cmNlR3JhcGhpYz4gY3JlYXRlKCk7CiAKLSAgICBzdGF0aWMgY29uc3QgQXRvbVN0cmluZyYg
ZWZmZWN0TmFtZSgpOworICAgIHN0YXRpYyBjb25zdCBBdG9tU3RyaW5nJiBlZmZlY3ROYW1lKCkg
eyByZXR1cm4gRmlsdGVyRWZmZWN0Ojpzb3VyY2VHcmFwaGljTmFtZSgpOyB9CiAKIHByaXZhdGU6
Ci0gICAgU291cmNlR3JhcGhpYyhGaWx0ZXImIGZpbHRlcikKLSAgICAgICAgOiBGaWx0ZXJFZmZl
Y3QoZmlsdGVyLCBUeXBlOjpTb3VyY2VHcmFwaGljKQotICAgIHsKLSAgICAgICAgc2V0T3BlcmF0
aW5nQ29sb3JTcGFjZShEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0IoKSk7Ci0gICAgfQorICAg
IFNvdXJjZUdyYXBoaWMoKTsKIAotICAgIGNvbnN0IGNoYXIqIGZpbHRlck5hbWUoKSBjb25zdCBm
aW5hbCB7IHJldHVybiAiU291cmNlR3JhcGhpYyI7IH0KLQotICAgIHZvaWQgZGV0ZXJtaW5lQWJz
b2x1dGVQYWludFJlY3QoKSBvdmVycmlkZTsKLSAgICB2b2lkIHBsYXRmb3JtQXBwbHlTb2Z0d2Fy
ZSgpIG92ZXJyaWRlOworICAgIHZvaWQgZGV0ZXJtaW5lQWJzb2x1dGVQYWludFJlY3QoY29uc3Qg
RmlsdGVyJikgb3ZlcnJpZGU7CisgICAgdm9pZCBwbGF0Zm9ybUFwcGx5U29mdHdhcmUoY29uc3Qg
RmlsdGVyJikgb3ZlcnJpZGU7CiAgICAgV1RGOjpUZXh0U3RyZWFtJiBleHRlcm5hbFJlcHJlc2Vu
dGF0aW9uKFdURjo6VGV4dFN0cmVhbSYsIFJlcHJlc2VudGF0aW9uVHlwZSkgY29uc3Qgb3ZlcnJp
ZGU7Ci0KLSAgICBGaWx0ZXJFZmZlY3RUeXBlIGZpbHRlckVmZmVjdFR5cGUoKSBjb25zdCBvdmVy
cmlkZSB7IHJldHVybiBGaWx0ZXJFZmZlY3RUeXBlU291cmNlSW5wdXQ7IH0KIH07CiAKIH0gLy9u
YW1lc3BhY2UgV2ViQ29yZQogCi1TUEVDSUFMSVpFX1RZUEVfVFJBSVRTX0JFR0lOKFdlYkNvcmU6
OlNvdXJjZUdyYXBoaWMpCi0gICAgc3RhdGljIGJvb2wgaXNUeXBlKGNvbnN0IFdlYkNvcmU6OkZp
bHRlckVmZmVjdCYgZWZmZWN0KSB7IHJldHVybiBlZmZlY3QuZmlsdGVyRWZmZWN0Q2xhc3NUeXBl
KCkgPT0gV2ViQ29yZTo6RmlsdGVyRWZmZWN0OjpUeXBlOjpTb3VyY2VHcmFwaGljOyB9Ci1TUEVD
SUFMSVpFX1RZUEVfVFJBSVRTX0VORCgpCi0KLQotI2VuZGlmIC8vIFNvdXJjZUdyYXBoaWNfaAor
U1BFQ0lBTElaRV9UWVBFX1RSQUlUU19GSUxURVJfRUZGRUNUKFNvdXJjZUdyYXBoaWMpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvUmVhbHRpbWVJ
bmNvbWluZ0F1ZGlvU291cmNlQ29jb2EuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVk
aWFzdHJlYW0vbWFjL1JlYWx0aW1lSW5jb21pbmdBdWRpb1NvdXJjZUNvY29hLmNwcAppbmRleCA5
YWVhNWYxYzA3MmMwOWJmMDYzZjQ5OTllMDNiMjE5ZTg1ZDdlMmQ5Li5kNjdiMjliNTFjNzkxZTUy
MTVlYjk4OTc1ZmQ5Y2ViNmFjNGZjMDcyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9tZWRpYXN0cmVhbS9tYWMvUmVhbHRpbWVJbmNvbWluZ0F1ZGlvU291cmNlQ29jb2EuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9SZWFsdGltZUlu
Y29taW5nQXVkaW9Tb3VyY2VDb2NvYS5jcHAKQEAgLTMzLDYgKzMzLDcgQEAKICNpbmNsdWRlICJB
dWRpb1N0cmVhbURlc2NyaXB0aW9uLmgiCiAjaW5jbHVkZSAiQ0FBdWRpb1N0cmVhbURlc2NyaXB0
aW9uLmgiCiAjaW5jbHVkZSAiTGliV2ViUlRDQXVkaW9Gb3JtYXQuaCIKKyNpbmNsdWRlICJMaWJX
ZWJSVENBdWRpb01vZHVsZS5oIgogI2luY2x1ZGUgIkxvZ2dpbmcuaCIKICNpbmNsdWRlIDxwYWwv
YXZmb3VuZGF0aW9uL01lZGlhVGltZUFWRm91bmRhdGlvbi5oPgogI2luY2x1ZGUgPHd0Zi9GYXN0
TWFsbG9jLmg+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvQ1NTRmlsdGVy
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9DU1NGaWx0ZXIuY3BwCmluZGV4IDlkNmMy
Y2RkMDVmOTQ5YjYzNGNhZmExN2FjMTdkYjVjMDJiNWI2MTEuLmRmYmZmOWJmOWYyNTBjZjQxNDc0
ZDU3OWRlYWNkZTEyMDM4ZmI4OTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9DU1NGaWx0ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9DU1NGaWx0ZXIu
Y3BwCkBAIC0yNyw5ICsyNyw2IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiQ1NT
RmlsdGVyLmgiCiAKLSNpbmNsdWRlICJDYWNoZWRTVkdEb2N1bWVudC5oIgotI2luY2x1ZGUgIkNh
Y2hlZFNWR0RvY3VtZW50UmVmZXJlbmNlLmgiCi0jaW5jbHVkZSAiRWxlbWVudEl0ZXJhdG9yLmgi
CiAjaW5jbHVkZSAiRkVDb2xvck1hdHJpeC5oIgogI2luY2x1ZGUgIkZFQ29tcG9uZW50VHJhbnNm
ZXIuaCIKICNpbmNsdWRlICJGRURyb3BTaGFkb3cuaCIKQEAgLTM4LDQ1ICszNSwxODMgQEAKICNp
bmNsdWRlICJGaWx0ZXJFZmZlY3RSZW5kZXJlci5oIgogI2luY2x1ZGUgIkxvZ2dpbmcuaCIKICNp
bmNsdWRlICJSZWZlcmVuY2VkU1ZHUmVzb3VyY2VzLmgiCi0jaW5jbHVkZSAiUmVuZGVyTGF5ZXIu
aCIKLSNpbmNsdWRlICJTVkdFbGVtZW50LmgiCisjaW5jbHVkZSAiU1ZHRG9jdW1lbnRFeHRlbnNp
b25zLmgiCisjaW5jbHVkZSAiU1ZHRmlsdGVyLmgiCiAjaW5jbHVkZSAiU1ZHRmlsdGVyQnVpbGRl
ci5oIgogI2luY2x1ZGUgIlNWR0ZpbHRlckVsZW1lbnQuaCIKLSNpbmNsdWRlICJTVkdGaWx0ZXJQ
cmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXMuaCIKLSNpbmNsdWRlICJTb3VyY2VBbHBoYS5oIgog
I2luY2x1ZGUgIlNvdXJjZUdyYXBoaWMuaCIKLSNpbmNsdWRlIDxhbGdvcml0aG0+Ci0jaW5jbHVk
ZSA8d3RmL01hdGhFeHRyYXMuaD4KLQotI2lmIFVTRShESVJFQ1QyRCkKLSNpbmNsdWRlIDxkMmQx
Lmg+Ci0jZW5kaWYKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1SZWY8Q1NTRmlsdGVyPiBDU1NG
aWx0ZXI6OmNyZWF0ZSgpCitSZWY8Q1NTRmlsdGVyPiBDU1NGaWx0ZXI6OmNyZWF0ZShjb25zdCBG
aWx0ZXJPcGVyYXRpb25zJiBvcGVyYXRpb25zLCBSZW5kZXJpbmdNb2RlIHJlbmRlcmluZ01vZGUs
IGZsb2F0IHNjYWxlRmFjdG9yKQogewotICAgIHJldHVybiBhZG9wdFJlZigqbmV3IENTU0ZpbHRl
cik7CisgICAgYm9vbCBoYXNGaWx0ZXJUaGF0TW92ZXNQaXhlbHMgPSBvcGVyYXRpb25zLmhhc0Zp
bHRlclRoYXRNb3Zlc1BpeGVscygpOworICAgIGJvb2wgaGFzRmlsdGVyVGhhdFNob3VsZEJlUmVz
dHJpY3RlZEJ5U2VjdXJpdHlPcmlnaW4gPSBvcGVyYXRpb25zLmhhc0ZpbHRlclRoYXRTaG91bGRC
ZVJlc3RyaWN0ZWRCeVNlY3VyaXR5T3JpZ2luKCk7CisKKyAgICBhdXRvIGZpbHRlciA9IGFkb3B0
UmVmKCpuZXcgQ1NTRmlsdGVyKGhhc0ZpbHRlclRoYXRNb3Zlc1BpeGVscywgaGFzRmlsdGVyVGhh
dFNob3VsZEJlUmVzdHJpY3RlZEJ5U2VjdXJpdHlPcmlnaW4sIHNjYWxlRmFjdG9yKSk7CisKKyAg
ICBmaWx0ZXItPnNldFJlbmRlcmluZ01vZGUocmVuZGVyaW5nTW9kZSk7CisgICAgcmV0dXJuIGZp
bHRlcjsKIH0KIAotQ1NTRmlsdGVyOjpDU1NGaWx0ZXIoKQotICAgIDogRmlsdGVyKEZsb2F0U2l6
ZSB7IDEsIDEgfSkKLSAgICAsIG1fc291cmNlR3JhcGhpYyhTb3VyY2VHcmFwaGljOjpjcmVhdGUo
KnRoaXMpKQorQ1NTRmlsdGVyOjpDU1NGaWx0ZXIoYm9vbCBoYXNGaWx0ZXJUaGF0TW92ZXNQaXhl
bHMsIGJvb2wgaGFzRmlsdGVyVGhhdFNob3VsZEJlUmVzdHJpY3RlZEJ5U2VjdXJpdHlPcmlnaW4s
IGZsb2F0IHNjYWxlRmFjdG9yKQorICAgIDogRmlsdGVyKEZpbHRlcjo6VHlwZTo6Q1NTRmlsdGVy
LCBGbG9hdFNpemUgeyBzY2FsZUZhY3Rvciwgc2NhbGVGYWN0b3IgfSkKKyAgICAsIG1faGFzRmls
dGVyVGhhdE1vdmVzUGl4ZWxzKGhhc0ZpbHRlclRoYXRNb3Zlc1BpeGVscykKKyAgICAsIG1faGFz
RmlsdGVyVGhhdFNob3VsZEJlUmVzdHJpY3RlZEJ5U2VjdXJpdHlPcmlnaW4oaGFzRmlsdGVyVGhh
dFNob3VsZEJlUmVzdHJpY3RlZEJ5U2VjdXJpdHlPcmlnaW4pCisgICAgLCBtX3NvdXJjZUdyYXBo
aWMoU291cmNlR3JhcGhpYzo6Y3JlYXRlKCkpCiB7CiB9CiAKLUNTU0ZpbHRlcjo6fkNTU0ZpbHRl
cigpID0gZGVmYXVsdDsKK3N0YXRpYyBSZWZQdHI8RmlsdGVyRWZmZWN0PiBjcmVhdGVCbHVyRWZm
ZWN0KGNvbnN0IEJsdXJGaWx0ZXJPcGVyYXRpb24mIGJsdXJPcGVyYXRpb24sIEZpbHRlckNvbnN1
bWVyIGNvbnN1bWVyKQoreworICAgIGZsb2F0IHN0ZERldmlhdGlvbiA9IGZsb2F0VmFsdWVGb3JM
ZW5ndGgoYmx1ck9wZXJhdGlvbi5zdGREZXZpYXRpb24oKSwgMCk7CisgICAgcmV0dXJuIEZFR2F1
c3NpYW5CbHVyOjpjcmVhdGUoc3RkRGV2aWF0aW9uLCBzdGREZXZpYXRpb24sIGNvbnN1bWVyID09
IEZpbHRlckNvbnN1bWVyOjpGaWx0ZXJQcm9wZXJ0eSA/IEVER0VNT0RFX05PTkUgOiBFREdFTU9E
RV9EVVBMSUNBVEUpOworfQogCi1HcmFwaGljc0NvbnRleHQqIENTU0ZpbHRlcjo6aW5wdXRDb250
ZXh0KCkKK3N0YXRpYyBSZWZQdHI8RmlsdGVyRWZmZWN0PiBjcmVhdGVCcmlnaHRuZXNzRWZmZWN0
KGNvbnN0IEJhc2ljQ29tcG9uZW50VHJhbnNmZXJGaWx0ZXJPcGVyYXRpb24mIGNvbXBvbmVudFRy
YW5zZmVyT3BlcmF0aW9uKQogewotICAgIHJldHVybiBzb3VyY2VJbWFnZSgpID8gJnNvdXJjZUlt
YWdlKCktPmNvbnRleHQoKSA6IG51bGxwdHI7CisgICAgQ29tcG9uZW50VHJhbnNmZXJGdW5jdGlv
biB0cmFuc2ZlckZ1bmN0aW9uOworICAgIHRyYW5zZmVyRnVuY3Rpb24udHlwZSA9IEZFQ09NUE9O
RU5UVFJBTlNGRVJfVFlQRV9MSU5FQVI7CisgICAgdHJhbnNmZXJGdW5jdGlvbi5zbG9wZSA9IG5h
cnJvd1ByZWNpc2lvblRvRmxvYXQoY29tcG9uZW50VHJhbnNmZXJPcGVyYXRpb24uYW1vdW50KCkp
OworICAgIHRyYW5zZmVyRnVuY3Rpb24uaW50ZXJjZXB0ID0gMDsKKworICAgIENvbXBvbmVudFRy
YW5zZmVyRnVuY3Rpb24gbnVsbEZ1bmN0aW9uOworICAgIHJldHVybiBGRUNvbXBvbmVudFRyYW5z
ZmVyOjpjcmVhdGUodHJhbnNmZXJGdW5jdGlvbiwgdHJhbnNmZXJGdW5jdGlvbiwgdHJhbnNmZXJG
dW5jdGlvbiwgbnVsbEZ1bmN0aW9uKTsKK30KKworc3RhdGljIFJlZlB0cjxGaWx0ZXJFZmZlY3Q+
IGNyZWF0ZUNvbnRyYXN0RWZmZWN0KGNvbnN0IEJhc2ljQ29tcG9uZW50VHJhbnNmZXJGaWx0ZXJP
cGVyYXRpb24mIGNvbXBvbmVudFRyYW5zZmVyT3BlcmF0aW9uKQoreworICAgIENvbXBvbmVudFRy
YW5zZmVyRnVuY3Rpb24gdHJhbnNmZXJGdW5jdGlvbjsKKyAgICB0cmFuc2ZlckZ1bmN0aW9uLnR5
cGUgPSBGRUNPTVBPTkVOVFRSQU5TRkVSX1RZUEVfTElORUFSOworICAgIGZsb2F0IGFtb3VudCA9
IG5hcnJvd1ByZWNpc2lvblRvRmxvYXQoY29tcG9uZW50VHJhbnNmZXJPcGVyYXRpb24uYW1vdW50
KCkpOworICAgIHRyYW5zZmVyRnVuY3Rpb24uc2xvcGUgPSBhbW91bnQ7CisgICAgdHJhbnNmZXJG
dW5jdGlvbi5pbnRlcmNlcHQgPSAtMC41ICogYW1vdW50ICsgMC41OworCisgICAgQ29tcG9uZW50
VHJhbnNmZXJGdW5jdGlvbiBudWxsRnVuY3Rpb247CisgICAgcmV0dXJuIEZFQ29tcG9uZW50VHJh
bnNmZXI6OmNyZWF0ZSh0cmFuc2ZlckZ1bmN0aW9uLCB0cmFuc2ZlckZ1bmN0aW9uLCB0cmFuc2Zl
ckZ1bmN0aW9uLCBudWxsRnVuY3Rpb24pOworfQorCitzdGF0aWMgUmVmUHRyPEZpbHRlckVmZmVj
dD4gY3JlYXRlRHJvcFNoYWRvd0VmZmVjdChjb25zdCBEcm9wU2hhZG93RmlsdGVyT3BlcmF0aW9u
JiBkcm9wU2hhZG93T3BlcmF0aW9uKQoreworICAgIGZsb2F0IHN0ZCA9IGRyb3BTaGFkb3dPcGVy
YXRpb24uc3RkRGV2aWF0aW9uKCk7CisgICAgcmV0dXJuIEZFRHJvcFNoYWRvdzo6Y3JlYXRlKHN0
ZCwgc3RkLCBkcm9wU2hhZG93T3BlcmF0aW9uLngoKSwgZHJvcFNoYWRvd09wZXJhdGlvbi55KCks
IGRyb3BTaGFkb3dPcGVyYXRpb24uY29sb3IoKSwgMSk7Cit9CisKK3N0YXRpYyBSZWZQdHI8Rmls
dGVyRWZmZWN0PiBjcmVhdGVHcmF5U2NhbGVFZmZlY3QoY29uc3QgQmFzaWNDb2xvck1hdHJpeEZp
bHRlck9wZXJhdGlvbiYgY29sb3JNYXRyaXhPcGVyYXRpb24pCit7CisgICAgZG91YmxlIG9uZU1p
bnVzQW1vdW50ID0gY2xhbXBUbygxIC0gY29sb3JNYXRyaXhPcGVyYXRpb24uYW1vdW50KCksIDAu
MCwgMS4wKTsKKworICAgIC8vIFNlZSBodHRwczovL2R2Y3MudzMub3JnL2hnL0ZYVEYvcmF3LWZp
bGUvdGlwL2ZpbHRlcnMvaW5kZXguaHRtbCNncmF5c2NhbGVFcXVpdmFsZW50CisgICAgLy8gZm9y
IGluZm9ybWF0aW9uIG9uIHBhcmFtZXRlcnMuCisKKyAgICBWZWN0b3I8ZmxvYXQ+IGlucHV0UGFy
YW1ldGVycyB7CisgICAgICAgIG5hcnJvd1ByZWNpc2lvblRvRmxvYXQoMC4yMTI2ICsgMC43ODc0
ICogb25lTWludXNBbW91bnQpLAorICAgICAgICBuYXJyb3dQcmVjaXNpb25Ub0Zsb2F0KDAuNzE1
MiAtIDAuNzE1MiAqIG9uZU1pbnVzQW1vdW50KSwKKyAgICAgICAgbmFycm93UHJlY2lzaW9uVG9G
bG9hdCgwLjA3MjIgLSAwLjA3MjIgKiBvbmVNaW51c0Ftb3VudCksCisgICAgICAgIDAsCisgICAg
ICAgIDAsCisKKyAgICAgICAgbmFycm93UHJlY2lzaW9uVG9GbG9hdCgwLjIxMjYgLSAwLjIxMjYg
KiBvbmVNaW51c0Ftb3VudCksCisgICAgICAgIG5hcnJvd1ByZWNpc2lvblRvRmxvYXQoMC43MTUy
ICsgMC4yODQ4ICogb25lTWludXNBbW91bnQpLAorICAgICAgICBuYXJyb3dQcmVjaXNpb25Ub0Zs
b2F0KDAuMDcyMiAtIDAuMDcyMiAqIG9uZU1pbnVzQW1vdW50KSwKKyAgICAgICAgMCwKKyAgICAg
ICAgMCwKKworICAgICAgICBuYXJyb3dQcmVjaXNpb25Ub0Zsb2F0KDAuMjEyNiAtIDAuMjEyNiAq
IG9uZU1pbnVzQW1vdW50KSwKKyAgICAgICAgbmFycm93UHJlY2lzaW9uVG9GbG9hdCgwLjcxNTIg
LSAwLjcxNTIgKiBvbmVNaW51c0Ftb3VudCksCisgICAgICAgIG5hcnJvd1ByZWNpc2lvblRvRmxv
YXQoMC4wNzIyICsgMC45Mjc4ICogb25lTWludXNBbW91bnQpLAorICAgICAgICAwLAorICAgICAg
ICAwLAorCisgICAgICAgIDAsCisgICAgICAgIDAsCisgICAgICAgIDAsCisgICAgICAgIDEsCisg
ICAgICAgIDAsCisgICAgfTsKKworICAgIHJldHVybiBGRUNvbG9yTWF0cml4OjpjcmVhdGUoRkVD
T0xPUk1BVFJJWF9UWVBFX01BVFJJWCwgV1RGTW92ZShpbnB1dFBhcmFtZXRlcnMpKTsKK30KKwor
c3RhdGljIFJlZlB0cjxGaWx0ZXJFZmZlY3Q+IGNyZWF0ZUh1ZVJvdGF0ZUVmZmVjdChjb25zdCBC
YXNpY0NvbG9yTWF0cml4RmlsdGVyT3BlcmF0aW9uJiBjb2xvck1hdHJpeE9wZXJhdGlvbikKK3sK
KyAgICBWZWN0b3I8ZmxvYXQ+IGlucHV0UGFyYW1ldGVycyB7IG5hcnJvd1ByZWNpc2lvblRvRmxv
YXQoY29sb3JNYXRyaXhPcGVyYXRpb24uYW1vdW50KCkpIH07CisgICAgcmV0dXJuIEZFQ29sb3JN
YXRyaXg6OmNyZWF0ZShGRUNPTE9STUFUUklYX1RZUEVfSFVFUk9UQVRFLCBXVEZNb3ZlKGlucHV0
UGFyYW1ldGVycykpOwogfQogCi1SZWZQdHI8RmlsdGVyRWZmZWN0PiBDU1NGaWx0ZXI6OmJ1aWxk
UmVmZXJlbmNlRmlsdGVyKFJlbmRlckVsZW1lbnQmIHJlbmRlcmVyLCBGaWx0ZXJFZmZlY3QmIHBy
ZXZpb3VzRWZmZWN0LCBSZWZlcmVuY2VGaWx0ZXJPcGVyYXRpb24mIGZpbHRlck9wZXJhdGlvbikK
K3N0YXRpYyBSZWZQdHI8RmlsdGVyRWZmZWN0PiBjcmVhdGVJbnZlcnRFZmZlY3QoY29uc3QgQmFz
aWNDb21wb25lbnRUcmFuc2ZlckZpbHRlck9wZXJhdGlvbiYgY29tcG9uZW50VHJhbnNmZXJPcGVy
YXRpb24pCiB7Ci0gICAgYXV0byogZmlsdGVyRWxlbWVudCA9IHJlbmRlcmVyLmVuc3VyZVJlZmVy
ZW5jZWRTVkdSZXNvdXJjZXMoKS5yZWZlcmVuY2VkRmlsdGVyRWxlbWVudChyZW5kZXJlci5kb2N1
bWVudCgpLCBmaWx0ZXJPcGVyYXRpb24pOworICAgIENvbXBvbmVudFRyYW5zZmVyRnVuY3Rpb24g
dHJhbnNmZXJGdW5jdGlvbjsKKyAgICB0cmFuc2ZlckZ1bmN0aW9uLnR5cGUgPSBGRUNPTVBPTkVO
VFRSQU5TRkVSX1RZUEVfTElORUFSOworICAgIGZsb2F0IGFtb3VudCA9IG5hcnJvd1ByZWNpc2lv
blRvRmxvYXQoY29tcG9uZW50VHJhbnNmZXJPcGVyYXRpb24uYW1vdW50KCkpOworICAgIHRyYW5z
ZmVyRnVuY3Rpb24uc2xvcGUgPSAxIC0gMiAqIGFtb3VudDsKKyAgICB0cmFuc2ZlckZ1bmN0aW9u
LmludGVyY2VwdCA9IGFtb3VudDsKKworICAgIENvbXBvbmVudFRyYW5zZmVyRnVuY3Rpb24gbnVs
bEZ1bmN0aW9uOworICAgIHJldHVybiBGRUNvbXBvbmVudFRyYW5zZmVyOjpjcmVhdGUodHJhbnNm
ZXJGdW5jdGlvbiwgdHJhbnNmZXJGdW5jdGlvbiwgdHJhbnNmZXJGdW5jdGlvbiwgbnVsbEZ1bmN0
aW9uKTsKK30KKworc3RhdGljIFJlZlB0cjxGaWx0ZXJFZmZlY3Q+IGNyZWF0ZU9wYWNpdHlFZmZl
Y3QoY29uc3QgQmFzaWNDb21wb25lbnRUcmFuc2ZlckZpbHRlck9wZXJhdGlvbiYgY29tcG9uZW50
VHJhbnNmZXJPcGVyYXRpb24pCit7CisgICAgQ29tcG9uZW50VHJhbnNmZXJGdW5jdGlvbiB0cmFu
c2ZlckZ1bmN0aW9uOworICAgIHRyYW5zZmVyRnVuY3Rpb24udHlwZSA9IEZFQ09NUE9ORU5UVFJB
TlNGRVJfVFlQRV9MSU5FQVI7CisgICAgZmxvYXQgYW1vdW50ID0gbmFycm93UHJlY2lzaW9uVG9G
bG9hdChjb21wb25lbnRUcmFuc2Zlck9wZXJhdGlvbi5hbW91bnQoKSk7CisgICAgdHJhbnNmZXJG
dW5jdGlvbi5zbG9wZSA9IGFtb3VudDsKKyAgICB0cmFuc2ZlckZ1bmN0aW9uLmludGVyY2VwdCA9
IDA7CisKKyAgICBDb21wb25lbnRUcmFuc2ZlckZ1bmN0aW9uIG51bGxGdW5jdGlvbjsKKyAgICBy
ZXR1cm4gRkVDb21wb25lbnRUcmFuc2Zlcjo6Y3JlYXRlKG51bGxGdW5jdGlvbiwgbnVsbEZ1bmN0
aW9uLCBudWxsRnVuY3Rpb24sIHRyYW5zZmVyRnVuY3Rpb24pOworfQorCitzdGF0aWMgUmVmUHRy
PEZpbHRlckVmZmVjdD4gY3JlYXRlU2F0dXJhdGVFZmZlY3QoY29uc3QgQmFzaWNDb2xvck1hdHJp
eEZpbHRlck9wZXJhdGlvbiYgY29sb3JNYXRyaXhPcGVyYXRpb24pCit7CisgICAgVmVjdG9yPGZs
b2F0PiBpbnB1dFBhcmFtZXRlcnMgeyBuYXJyb3dQcmVjaXNpb25Ub0Zsb2F0KGNvbG9yTWF0cml4
T3BlcmF0aW9uLmFtb3VudCgpKSB9OworICAgIHJldHVybiBGRUNvbG9yTWF0cml4OjpjcmVhdGUo
RkVDT0xPUk1BVFJJWF9UWVBFX1NBVFVSQVRFLCBXVEZNb3ZlKGlucHV0UGFyYW1ldGVycykpOwor
fQorCitzdGF0aWMgUmVmUHRyPEZpbHRlckVmZmVjdD4gY3JlYXRlU2VwaWFFZmZlY3QoY29uc3Qg
QmFzaWNDb2xvck1hdHJpeEZpbHRlck9wZXJhdGlvbiYgY29sb3JNYXRyaXhPcGVyYXRpb24pCit7
CisgICAgZG91YmxlIG9uZU1pbnVzQW1vdW50ID0gY2xhbXBUbygxIC0gY29sb3JNYXRyaXhPcGVy
YXRpb24uYW1vdW50KCksIDAuMCwgMS4wKTsKKworICAgIC8vIFNlZSBodHRwczovL2R2Y3MudzMu
b3JnL2hnL0ZYVEYvcmF3LWZpbGUvdGlwL2ZpbHRlcnMvaW5kZXguaHRtbCNzZXBpYUVxdWl2YWxl
bnQKKyAgICAvLyBmb3IgaW5mb3JtYXRpb24gb24gcGFyYW1ldGVycy4KKworICAgIFZlY3Rvcjxm
bG9hdD4gaW5wdXRQYXJhbWV0ZXJzIHsKKyAgICAgICAgbmFycm93UHJlY2lzaW9uVG9GbG9hdCgw
LjM5MyArIDAuNjA3ICogb25lTWludXNBbW91bnQpLAorICAgICAgICBuYXJyb3dQcmVjaXNpb25U
b0Zsb2F0KDAuNzY5IC0gMC43NjkgKiBvbmVNaW51c0Ftb3VudCksCisgICAgICAgIG5hcnJvd1By
ZWNpc2lvblRvRmxvYXQoMC4xODkgLSAwLjE4OSAqIG9uZU1pbnVzQW1vdW50KSwKKyAgICAgICAg
MCwKKyAgICAgICAgMCwKKworICAgICAgICBuYXJyb3dQcmVjaXNpb25Ub0Zsb2F0KDAuMzQ5IC0g
MC4zNDkgKiBvbmVNaW51c0Ftb3VudCksCisgICAgICAgIG5hcnJvd1ByZWNpc2lvblRvRmxvYXQo
MC42ODYgKyAwLjMxNCAqIG9uZU1pbnVzQW1vdW50KSwKKyAgICAgICAgbmFycm93UHJlY2lzaW9u
VG9GbG9hdCgwLjE2OCAtIDAuMTY4ICogb25lTWludXNBbW91bnQpLAorICAgICAgICAwLAorICAg
ICAgICAwLAorCisgICAgICAgIG5hcnJvd1ByZWNpc2lvblRvRmxvYXQoMC4yNzIgLSAwLjI3MiAq
IG9uZU1pbnVzQW1vdW50KSwKKyAgICAgICAgbmFycm93UHJlY2lzaW9uVG9GbG9hdCgwLjUzNCAt
IDAuNTM0ICogb25lTWludXNBbW91bnQpLAorICAgICAgICBuYXJyb3dQcmVjaXNpb25Ub0Zsb2F0
KDAuMTMxICsgMC44NjkgKiBvbmVNaW51c0Ftb3VudCksCisgICAgICAgIDAsCisgICAgICAgIDAs
CisKKyAgICAgICAgMCwKKyAgICAgICAgMCwKKyAgICAgICAgMCwKKyAgICAgICAgMSwKKyAgICAg
ICAgMCwKKyAgICB9OworCisgICAgcmV0dXJuIEZFQ29sb3JNYXRyaXg6OmNyZWF0ZShGRUNPTE9S
TUFUUklYX1RZUEVfTUFUUklYLCBXVEZNb3ZlKGlucHV0UGFyYW1ldGVycykpOworfQorCitzdGF0
aWMgUmVmUHRyPFNWR0ZpbHRlcj4gY3JlYXRlU1ZHRmlsdGVyKENTU0ZpbHRlciYgZmlsdGVyLCBj
b25zdCBSZWZlcmVuY2VGaWx0ZXJPcGVyYXRpb24mIGZpbHRlck9wZXJhdGlvbiwgUmVuZGVyRWxl
bWVudCYgcmVuZGVyZXIsIEZpbHRlckVmZmVjdCYgcHJldmlvdXNFZmZlY3QpCit7CisgICAgYXV0
byYgcmVmZXJlbmNlZFNWR1Jlc291cmNlcyA9IHJlbmRlcmVyLmVuc3VyZVJlZmVyZW5jZWRTVkdS
ZXNvdXJjZXMoKTsKKyAgICBhdXRvKiBmaWx0ZXJFbGVtZW50ID0gcmVmZXJlbmNlZFNWR1Jlc291
cmNlcy5yZWZlcmVuY2VkRmlsdGVyRWxlbWVudChyZW5kZXJlci5kb2N1bWVudCgpLCBmaWx0ZXJP
cGVyYXRpb24pOworCiAgICAgaWYgKCFmaWx0ZXJFbGVtZW50KSB7Ci0gICAgICAgIExPR19XSVRI
X1NUUkVBTShGaWx0ZXJzLCBzdHJlYW0gPDwgIkNTU0ZpbHRlciAiIDw8IHRoaXMgPDwgIiBidWls
ZFJlZmVyZW5jZUZpbHRlcjogZmFpbGVkIHRvIGZpbmQgZmlsdGVyIHJlbmRlcmVyLCBhZGRpbmcg
cGVuZGluZyByZXNvdXJjZSAiIDw8IGZpbHRlck9wZXJhdGlvbi5mcmFnbWVudCgpKTsKKyAgICAg
ICAgTE9HX1dJVEhfU1RSRUFNKEZpbHRlcnMsIHN0cmVhbSA8PCAiIGJ1aWxkUmVmZXJlbmNlRmls
dGVyOiBmYWlsZWQgdG8gZmluZCBmaWx0ZXIgcmVuZGVyZXIsIGFkZGluZyBwZW5kaW5nIHJlc291
cmNlICIgPDwgZmlsdGVyT3BlcmF0aW9uLmZyYWdtZW50KCkpOwogICAgICAgICAvLyBBbHRob3Vn
aCB3ZSBkaWQgbm90IGZpbmQgdGhlIHJlZmVyZW5jZWQgZmlsdGVyLCBpdCBtaWdodCBleGlzdCBs
YXRlciBpbiB0aGUgZG9jdW1lbnQuCiAgICAgICAgIC8vIEZJWE1FOiBUaGlzIHNraXBzIGFub255
bW91cyBSZW5kZXJPYmplY3RzLiA8aHR0cHM6Ly93ZWJraXQub3JnL2IvMTMxMDg1PgogICAgICAg
ICAvLyBGSVhNRTogVW5jbGVhciBpZiB0aGlzIGRvZXMgYW55dGhpbmcuCkBAIC04NSwyMzEgKzIy
MCwxMjMgQEAgUmVmUHRyPEZpbHRlckVmZmVjdD4gQ1NTRmlsdGVyOjpidWlsZFJlZmVyZW5jZUZp
bHRlcihSZW5kZXJFbGVtZW50JiByZW5kZXJlciwgRmkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7
CiAgICAgfQogCi0gICAgYXV0byBidWlsZGVyID0gbWFrZVVuaXF1ZTxTVkdGaWx0ZXJCdWlsZGVy
PigmcHJldmlvdXNFZmZlY3QpOwotICAgIG1fc291cmNlQWxwaGEgPSBidWlsZGVyLT5nZXRFZmZl
Y3RCeUlkKFNvdXJjZUFscGhhOjplZmZlY3ROYW1lKCkpOwotCi0gICAgUmVmUHRyPEZpbHRlckVm
ZmVjdD4gZWZmZWN0OwotICAgIFZlY3RvcjxSZWY8RmlsdGVyRWZmZWN0Pj4gcmVmZXJlbmNlRWZm
ZWN0czsKLQotICAgIGZvciAoYXV0byYgZWZmZWN0RWxlbWVudCA6IGNoaWxkcmVuT2ZUeXBlPFNW
R0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlcz4oKmZpbHRlckVsZW1lbnQpKSB7Ci0g
ICAgICAgIGVmZmVjdCA9IGVmZmVjdEVsZW1lbnQuYnVpbGQoYnVpbGRlci5nZXQoKSwgKnRoaXMp
OwotICAgICAgICBpZiAoIWVmZmVjdCkgewotICAgICAgICAgICAgTE9HX1dJVEhfU1RSRUFNKEZp
bHRlcnMsIHN0cmVhbSA8PCAiQ1NTRmlsdGVyICIgPDwgdGhpcyA8PCAiIGJ1aWxkUmVmZXJlbmNl
RmlsdGVyOiBmYWlsZWQgdG8gYnVpbGQgZWZmZWN0IGZyb20gIiA8PCBlZmZlY3RFbGVtZW50KTsK
LSAgICAgICAgICAgIHJldHVybiBudWxscHRyOwotICAgICAgICB9CisgICAgU1ZHRmlsdGVyQnVp
bGRlciBidWlsZGVyOworICAgIHJldHVybiBTVkdGaWx0ZXI6OmNyZWF0ZSgqZmlsdGVyRWxlbWVu
dCwgYnVpbGRlciwgZmlsdGVyLmZpbHRlclNjYWxlKCksIGZpbHRlci5zb3VyY2VJbWFnZVJlY3Qo
KSwgZmlsdGVyLmZpbHRlclJlZ2lvbigpLCBwcmV2aW91c0VmZmVjdCk7Cit9CiAKLSAgICAgICAg
ZWZmZWN0RWxlbWVudC5zZXRTdGFuZGFyZEF0dHJpYnV0ZXMoZWZmZWN0LmdldCgpKTsKLSAgICAg
ICAgaWYgKGVmZmVjdEVsZW1lbnQucmVuZGVyZXIoKSkgewotI2lmIEVOQUJMRShERVNUSU5BVElP
Tl9DT0xPUl9TUEFDRV9MSU5FQVJfU1JHQikKLSAgICAgICAgICAgIGVmZmVjdC0+c2V0T3BlcmF0
aW5nQ29sb3JTcGFjZShlZmZlY3RFbGVtZW50LnJlbmRlcmVyKCktPnN0eWxlKCkuc3ZnU3R5bGUo
KS5jb2xvckludGVycG9sYXRpb25GaWx0ZXJzKCkgPT0gQ29sb3JJbnRlcnBvbGF0aW9uOjpMaW5l
YXJSR0IgPyBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OkxpbmVhclNSR0IoKSA6IERlc3RpbmF0aW9u
Q29sb3JTcGFjZTo6U1JHQigpKTsKLSNlbHNlCi0gICAgICAgICAgICBlZmZlY3QtPnNldE9wZXJh
dGluZ0NvbG9yU3BhY2UoRGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdCKCkpOwotI2VuZGlmCi0g
ICAgICAgIH0KLSAgICAgICAgYnVpbGRlci0+YWRkKGVmZmVjdEVsZW1lbnQucmVzdWx0KCksIGVm
ZmVjdCk7Ci0gICAgICAgIHJlZmVyZW5jZUVmZmVjdHMuYXBwZW5kKCplZmZlY3QpOwotICAgIH0K
LSAgICAKLSAgICBtX2VmZmVjdHMuYXBwZW5kVmVjdG9yKFdURk1vdmUocmVmZXJlbmNlRWZmZWN0
cykpOwotICAgIHJldHVybiBlZmZlY3Q7CitzdGF0aWMgdm9pZCBzZXR1cExhc3RFZmZlY3RQcm9w
ZXJ0aWVzKEZpbHRlckVmZmVjdCYgZWZmZWN0LCBGaWx0ZXJDb25zdW1lciBjb25zdW1lcikKK3sK
KyAgICAvLyBVbmxpa2UgU1ZHIEZpbHRlcnMgYW5kIENTU0ZpbHRlckltYWdlcywgZmlsdGVyIGZ1
bmN0aW9ucyBvbiB0aGUgZmlsdGVyCisgICAgLy8gcHJvcGVydHkgYXBwbGllZCBoZXJlIHNob3Vs
ZCBub3QgY2xpcCB0byB0aGVpciBwcmltaXRpdmUgc3VicmVnaW9ucy4KKyAgICBlZmZlY3Quc2V0
Q2xpcHNUb0JvdW5kcyhjb25zdW1lciA9PSBGaWx0ZXJDb25zdW1lcjo6RmlsdGVyRnVuY3Rpb24p
OworICAgIGVmZmVjdC5zZXRPcGVyYXRpbmdDb2xvclNwYWNlKERlc3RpbmF0aW9uQ29sb3JTcGFj
ZTo6U1JHQigpKTsKIH0KIAogYm9vbCBDU1NGaWx0ZXI6OmJ1aWxkKFJlbmRlckVsZW1lbnQmIHJl
bmRlcmVyLCBjb25zdCBGaWx0ZXJPcGVyYXRpb25zJiBvcGVyYXRpb25zLCBGaWx0ZXJDb25zdW1l
ciBjb25zdW1lcikKIHsKLSAgICBtX2hhc0ZpbHRlclRoYXRNb3Zlc1BpeGVscyA9IG9wZXJhdGlv
bnMuaGFzRmlsdGVyVGhhdE1vdmVzUGl4ZWxzKCk7Ci0gICAgbV9oYXNGaWx0ZXJUaGF0U2hvdWxk
QmVSZXN0cmljdGVkQnlTZWN1cml0eU9yaWdpbiA9IG9wZXJhdGlvbnMuaGFzRmlsdGVyVGhhdFNo
b3VsZEJlUmVzdHJpY3RlZEJ5U2VjdXJpdHlPcmlnaW4oKTsKLQotICAgIG1fZWZmZWN0cy5jbGVh
cigpOworICAgIG1fZnVuY3Rpb25zLmNsZWFyKCk7CiAgICAgbV9vdXRzZXRzID0geyB9OwogCiAg
ICAgUmVmUHRyPEZpbHRlckVmZmVjdD4gcHJldmlvdXNFZmZlY3QgPSBtX3NvdXJjZUdyYXBoaWMu
cHRyKCk7CisgICAgUmVmUHRyPFNWR0ZpbHRlcj4gZmlsdGVyOworCiAgICAgZm9yIChhdXRvJiBv
cGVyYXRpb24gOiBvcGVyYXRpb25zLm9wZXJhdGlvbnMoKSkgewogICAgICAgICBSZWZQdHI8Rmls
dGVyRWZmZWN0PiBlZmZlY3Q7Ci0gICAgICAgIGF1dG8mIGZpbHRlck9wZXJhdGlvbiA9ICpvcGVy
YXRpb247Ci0gICAgICAgIHN3aXRjaCAoZmlsdGVyT3BlcmF0aW9uLnR5cGUoKSkgewotICAgICAg
ICBjYXNlIEZpbHRlck9wZXJhdGlvbjo6UkVGRVJFTkNFOiB7Ci0gICAgICAgICAgICBhdXRvJiBy
ZWZlcmVuY2VPcGVyYXRpb24gPSBkb3duY2FzdDxSZWZlcmVuY2VGaWx0ZXJPcGVyYXRpb24+KGZp
bHRlck9wZXJhdGlvbik7Ci0gICAgICAgICAgICBlZmZlY3QgPSBidWlsZFJlZmVyZW5jZUZpbHRl
cihyZW5kZXJlciwgKnByZXZpb3VzRWZmZWN0LCByZWZlcmVuY2VPcGVyYXRpb24pOworICAgICAg
ICAKKyAgICAgICAgc3dpdGNoIChvcGVyYXRpb24tPnR5cGUoKSkgeworICAgICAgICBjYXNlIEZp
bHRlck9wZXJhdGlvbjo6QVBQTEVfSU5WRVJUX0xJR0hUTkVTUzoKKyAgICAgICAgICAgIEFTU0VS
VF9OT1RfUkVBQ0hFRCgpOyAvLyBBUFBMRV9JTlZFUlRfTElHSFRORVNTIGlzIG9ubHkgdXNlZCBp
biAtYXBwbGUtY29sb3ItZmlsdGVyLgogICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIH0KLSAg
ICAgICAgY2FzZSBGaWx0ZXJPcGVyYXRpb246OkdSQVlTQ0FMRTogewotICAgICAgICAgICAgYXV0
byYgY29sb3JNYXRyaXhPcGVyYXRpb24gPSBkb3duY2FzdDxCYXNpY0NvbG9yTWF0cml4RmlsdGVy
T3BlcmF0aW9uPihmaWx0ZXJPcGVyYXRpb24pOwotICAgICAgICAgICAgZG91YmxlIG9uZU1pbnVz
QW1vdW50ID0gY2xhbXBUbygxIC0gY29sb3JNYXRyaXhPcGVyYXRpb24uYW1vdW50KCksIDAuMCwg
MS4wKTsKLQotICAgICAgICAgICAgLy8gU2VlIGh0dHBzOi8vZHZjcy53My5vcmcvaGcvRlhURi9y
YXctZmlsZS90aXAvZmlsdGVycy9pbmRleC5odG1sI2dyYXlzY2FsZUVxdWl2YWxlbnQKLSAgICAg
ICAgICAgIC8vIGZvciBpbmZvcm1hdGlvbiBvbiBwYXJhbWV0ZXJzLgotCi0gICAgICAgICAgICBW
ZWN0b3I8ZmxvYXQ+IGlucHV0UGFyYW1ldGVycyB7Ci0gICAgICAgICAgICAgICAgbmFycm93UHJl
Y2lzaW9uVG9GbG9hdCgwLjIxMjYgKyAwLjc4NzQgKiBvbmVNaW51c0Ftb3VudCksCi0gICAgICAg
ICAgICAgICAgbmFycm93UHJlY2lzaW9uVG9GbG9hdCgwLjcxNTIgLSAwLjcxNTIgKiBvbmVNaW51
c0Ftb3VudCksCi0gICAgICAgICAgICAgICAgbmFycm93UHJlY2lzaW9uVG9GbG9hdCgwLjA3MjIg
LSAwLjA3MjIgKiBvbmVNaW51c0Ftb3VudCksCi0gICAgICAgICAgICAgICAgMCwKLSAgICAgICAg
ICAgICAgICAwLAotCi0gICAgICAgICAgICAgICAgbmFycm93UHJlY2lzaW9uVG9GbG9hdCgwLjIx
MjYgLSAwLjIxMjYgKiBvbmVNaW51c0Ftb3VudCksCi0gICAgICAgICAgICAgICAgbmFycm93UHJl
Y2lzaW9uVG9GbG9hdCgwLjcxNTIgKyAwLjI4NDggKiBvbmVNaW51c0Ftb3VudCksCi0gICAgICAg
ICAgICAgICAgbmFycm93UHJlY2lzaW9uVG9GbG9hdCgwLjA3MjIgLSAwLjA3MjIgKiBvbmVNaW51
c0Ftb3VudCksCi0gICAgICAgICAgICAgICAgMCwKLSAgICAgICAgICAgICAgICAwLAotCi0gICAg
ICAgICAgICAgICAgbmFycm93UHJlY2lzaW9uVG9GbG9hdCgwLjIxMjYgLSAwLjIxMjYgKiBvbmVN
aW51c0Ftb3VudCksCi0gICAgICAgICAgICAgICAgbmFycm93UHJlY2lzaW9uVG9GbG9hdCgwLjcx
NTIgLSAwLjcxNTIgKiBvbmVNaW51c0Ftb3VudCksCi0gICAgICAgICAgICAgICAgbmFycm93UHJl
Y2lzaW9uVG9GbG9hdCgwLjA3MjIgKyAwLjkyNzggKiBvbmVNaW51c0Ftb3VudCksCi0gICAgICAg
ICAgICAgICAgMCwKLSAgICAgICAgICAgICAgICAwLAotCi0gICAgICAgICAgICAgICAgMCwKLSAg
ICAgICAgICAgICAgICAwLAotICAgICAgICAgICAgICAgIDAsCi0gICAgICAgICAgICAgICAgMSwK
LSAgICAgICAgICAgICAgICAwLAotICAgICAgICAgICAgfTsKLQotICAgICAgICAgICAgZWZmZWN0
ID0gRkVDb2xvck1hdHJpeDo6Y3JlYXRlKCp0aGlzLCBGRUNPTE9STUFUUklYX1RZUEVfTUFUUklY
LCBXVEZNb3ZlKGlucHV0UGFyYW1ldGVycykpOworICAgICAgICAgICAgICAgIAorICAgICAgICBj
YXNlIEZpbHRlck9wZXJhdGlvbjo6QkxVUjoKKyAgICAgICAgICAgIGVmZmVjdCA9IGNyZWF0ZUJs
dXJFZmZlY3QoZG93bmNhc3Q8Qmx1ckZpbHRlck9wZXJhdGlvbj4oKm9wZXJhdGlvbiksIGNvbnN1
bWVyKTsKICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICB9Ci0gICAgICAgIGNhc2UgRmlsdGVy
T3BlcmF0aW9uOjpTRVBJQTogewotICAgICAgICAgICAgYXV0byYgY29sb3JNYXRyaXhPcGVyYXRp
b24gPSBkb3duY2FzdDxCYXNpY0NvbG9yTWF0cml4RmlsdGVyT3BlcmF0aW9uPihmaWx0ZXJPcGVy
YXRpb24pOwotICAgICAgICAgICAgZG91YmxlIG9uZU1pbnVzQW1vdW50ID0gY2xhbXBUbygxIC0g
Y29sb3JNYXRyaXhPcGVyYXRpb24uYW1vdW50KCksIDAuMCwgMS4wKTsKLQotICAgICAgICAgICAg
Ly8gU2VlIGh0dHBzOi8vZHZjcy53My5vcmcvaGcvRlhURi9yYXctZmlsZS90aXAvZmlsdGVycy9p
bmRleC5odG1sI3NlcGlhRXF1aXZhbGVudAotICAgICAgICAgICAgLy8gZm9yIGluZm9ybWF0aW9u
IG9uIHBhcmFtZXRlcnMuCi0KLSAgICAgICAgICAgIFZlY3RvcjxmbG9hdD4gaW5wdXRQYXJhbWV0
ZXJzIHsKLSAgICAgICAgICAgICAgICBuYXJyb3dQcmVjaXNpb25Ub0Zsb2F0KDAuMzkzICsgMC42
MDcgKiBvbmVNaW51c0Ftb3VudCksCi0gICAgICAgICAgICAgICAgbmFycm93UHJlY2lzaW9uVG9G
bG9hdCgwLjc2OSAtIDAuNzY5ICogb25lTWludXNBbW91bnQpLAotICAgICAgICAgICAgICAgIG5h
cnJvd1ByZWNpc2lvblRvRmxvYXQoMC4xODkgLSAwLjE4OSAqIG9uZU1pbnVzQW1vdW50KSwKLSAg
ICAgICAgICAgICAgICAwLAotICAgICAgICAgICAgICAgIDAsCi0KLSAgICAgICAgICAgICAgICBu
YXJyb3dQcmVjaXNpb25Ub0Zsb2F0KDAuMzQ5IC0gMC4zNDkgKiBvbmVNaW51c0Ftb3VudCksCi0g
ICAgICAgICAgICAgICAgbmFycm93UHJlY2lzaW9uVG9GbG9hdCgwLjY4NiArIDAuMzE0ICogb25l
TWludXNBbW91bnQpLAotICAgICAgICAgICAgICAgIG5hcnJvd1ByZWNpc2lvblRvRmxvYXQoMC4x
NjggLSAwLjE2OCAqIG9uZU1pbnVzQW1vdW50KSwKLSAgICAgICAgICAgICAgICAwLAotICAgICAg
ICAgICAgICAgIDAsCi0KLSAgICAgICAgICAgICAgICBuYXJyb3dQcmVjaXNpb25Ub0Zsb2F0KDAu
MjcyIC0gMC4yNzIgKiBvbmVNaW51c0Ftb3VudCksCi0gICAgICAgICAgICAgICAgbmFycm93UHJl
Y2lzaW9uVG9GbG9hdCgwLjUzNCAtIDAuNTM0ICogb25lTWludXNBbW91bnQpLAotICAgICAgICAg
ICAgICAgIG5hcnJvd1ByZWNpc2lvblRvRmxvYXQoMC4xMzEgKyAwLjg2OSAqIG9uZU1pbnVzQW1v
dW50KSwKLSAgICAgICAgICAgICAgICAwLAotICAgICAgICAgICAgICAgIDAsCi0KLSAgICAgICAg
ICAgICAgICAwLAotICAgICAgICAgICAgICAgIDAsCi0gICAgICAgICAgICAgICAgMCwKLSAgICAg
ICAgICAgICAgICAxLAotICAgICAgICAgICAgICAgIDAsCi0gICAgICAgICAgICB9OwotCi0gICAg
ICAgICAgICBlZmZlY3QgPSBGRUNvbG9yTWF0cml4OjpjcmVhdGUoKnRoaXMsIEZFQ09MT1JNQVRS
SVhfVFlQRV9NQVRSSVgsIFdURk1vdmUoaW5wdXRQYXJhbWV0ZXJzKSk7CisgICAgICAgICAgICAK
KyAgICAgICAgY2FzZSBGaWx0ZXJPcGVyYXRpb246OkJSSUdIVE5FU1M6CisgICAgICAgICAgICBl
ZmZlY3QgPSBjcmVhdGVCcmlnaHRuZXNzRWZmZWN0KGRvd25jYXN0PEJhc2ljQ29tcG9uZW50VHJh
bnNmZXJGaWx0ZXJPcGVyYXRpb24+KCpvcGVyYXRpb24pKTsKICAgICAgICAgICAgIGJyZWFrOwot
ICAgICAgICB9Ci0gICAgICAgIGNhc2UgRmlsdGVyT3BlcmF0aW9uOjpTQVRVUkFURTogewotICAg
ICAgICAgICAgYXV0byYgY29sb3JNYXRyaXhPcGVyYXRpb24gPSBkb3duY2FzdDxCYXNpY0NvbG9y
TWF0cml4RmlsdGVyT3BlcmF0aW9uPihmaWx0ZXJPcGVyYXRpb24pOwotICAgICAgICAgICAgVmVj
dG9yPGZsb2F0PiBpbnB1dFBhcmFtZXRlcnMgeyBuYXJyb3dQcmVjaXNpb25Ub0Zsb2F0KGNvbG9y
TWF0cml4T3BlcmF0aW9uLmFtb3VudCgpKSB9OwotICAgICAgICAgICAgZWZmZWN0ID0gRkVDb2xv
ck1hdHJpeDo6Y3JlYXRlKCp0aGlzLCBGRUNPTE9STUFUUklYX1RZUEVfU0FUVVJBVEUsIFdURk1v
dmUoaW5wdXRQYXJhbWV0ZXJzKSk7CisKKyAgICAgICAgY2FzZSBGaWx0ZXJPcGVyYXRpb246OkNP
TlRSQVNUOgorICAgICAgICAgICAgZWZmZWN0ID0gY3JlYXRlQ29udHJhc3RFZmZlY3QoZG93bmNh
c3Q8QmFzaWNDb21wb25lbnRUcmFuc2ZlckZpbHRlck9wZXJhdGlvbj4oKm9wZXJhdGlvbikpOwog
ICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIH0KLSAgICAgICAgY2FzZSBGaWx0ZXJPcGVyYXRp
b246OkhVRV9ST1RBVEU6IHsKLSAgICAgICAgICAgIGF1dG8mIGNvbG9yTWF0cml4T3BlcmF0aW9u
ID0gZG93bmNhc3Q8QmFzaWNDb2xvck1hdHJpeEZpbHRlck9wZXJhdGlvbj4oZmlsdGVyT3BlcmF0
aW9uKTsKLSAgICAgICAgICAgIFZlY3RvcjxmbG9hdD4gaW5wdXRQYXJhbWV0ZXJzIHsgbmFycm93
UHJlY2lzaW9uVG9GbG9hdChjb2xvck1hdHJpeE9wZXJhdGlvbi5hbW91bnQoKSkgfTsKLSAgICAg
ICAgICAgIGVmZmVjdCA9IEZFQ29sb3JNYXRyaXg6OmNyZWF0ZSgqdGhpcywgRkVDT0xPUk1BVFJJ
WF9UWVBFX0hVRVJPVEFURSwgV1RGTW92ZShpbnB1dFBhcmFtZXRlcnMpKTsKKyAgICAgICAgICAg
IAorICAgICAgICBjYXNlIEZpbHRlck9wZXJhdGlvbjo6RFJPUF9TSEFET1c6CisgICAgICAgICAg
ICBlZmZlY3QgPSBjcmVhdGVEcm9wU2hhZG93RWZmZWN0KGRvd25jYXN0PERyb3BTaGFkb3dGaWx0
ZXJPcGVyYXRpb24+KCpvcGVyYXRpb24pKTsKICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICB9
Ci0gICAgICAgIGNhc2UgRmlsdGVyT3BlcmF0aW9uOjpJTlZFUlQ6IHsKLSAgICAgICAgICAgIGF1
dG8mIGNvbXBvbmVudFRyYW5zZmVyT3BlcmF0aW9uID0gZG93bmNhc3Q8QmFzaWNDb21wb25lbnRU
cmFuc2ZlckZpbHRlck9wZXJhdGlvbj4oZmlsdGVyT3BlcmF0aW9uKTsKLSAgICAgICAgICAgIENv
bXBvbmVudFRyYW5zZmVyRnVuY3Rpb24gdHJhbnNmZXJGdW5jdGlvbjsKLSAgICAgICAgICAgIHRy
YW5zZmVyRnVuY3Rpb24udHlwZSA9IEZFQ09NUE9ORU5UVFJBTlNGRVJfVFlQRV9MSU5FQVI7Ci0g
ICAgICAgICAgICBmbG9hdCBhbW91bnQgPSBuYXJyb3dQcmVjaXNpb25Ub0Zsb2F0KGNvbXBvbmVu
dFRyYW5zZmVyT3BlcmF0aW9uLmFtb3VudCgpKTsKLSAgICAgICAgICAgIHRyYW5zZmVyRnVuY3Rp
b24uc2xvcGUgPSAxIC0gMiAqIGFtb3VudDsKLSAgICAgICAgICAgIHRyYW5zZmVyRnVuY3Rpb24u
aW50ZXJjZXB0ID0gYW1vdW50OwotCi0gICAgICAgICAgICBDb21wb25lbnRUcmFuc2ZlckZ1bmN0
aW9uIG51bGxGdW5jdGlvbjsKLSAgICAgICAgICAgIGVmZmVjdCA9IEZFQ29tcG9uZW50VHJhbnNm
ZXI6OmNyZWF0ZSgqdGhpcywgdHJhbnNmZXJGdW5jdGlvbiwgdHJhbnNmZXJGdW5jdGlvbiwgdHJh
bnNmZXJGdW5jdGlvbiwgbnVsbEZ1bmN0aW9uKTsKKyAgICAgICAgICAgIAorICAgICAgICBjYXNl
IEZpbHRlck9wZXJhdGlvbjo6R1JBWVNDQUxFOgorICAgICAgICAgICAgZWZmZWN0ID0gY3JlYXRl
R3JheVNjYWxlRWZmZWN0KGRvd25jYXN0PEJhc2ljQ29sb3JNYXRyaXhGaWx0ZXJPcGVyYXRpb24+
KCpvcGVyYXRpb24pKTsKICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICB9Ci0gICAgICAgIGNh
c2UgRmlsdGVyT3BlcmF0aW9uOjpBUFBMRV9JTlZFUlRfTElHSFRORVNTOgotICAgICAgICAgICAg
QVNTRVJUX05PVF9SRUFDSEVEKCk7IC8vIEFQUExFX0lOVkVSVF9MSUdIVE5FU1MgaXMgb25seSB1
c2VkIGluIC1hcHBsZS1jb2xvci1maWx0ZXIuCisgICAgICAgICAgICAKKyAgICAgICAgY2FzZSBG
aWx0ZXJPcGVyYXRpb246OkhVRV9ST1RBVEU6CisgICAgICAgICAgICBlZmZlY3QgPSBjcmVhdGVI
dWVSb3RhdGVFZmZlY3QoZG93bmNhc3Q8QmFzaWNDb2xvck1hdHJpeEZpbHRlck9wZXJhdGlvbj4o
Km9wZXJhdGlvbikpOwogICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgRmlsdGVyT3Bl
cmF0aW9uOjpPUEFDSVRZOiB7Ci0gICAgICAgICAgICBhdXRvJiBjb21wb25lbnRUcmFuc2Zlck9w
ZXJhdGlvbiA9IGRvd25jYXN0PEJhc2ljQ29tcG9uZW50VHJhbnNmZXJGaWx0ZXJPcGVyYXRpb24+
KGZpbHRlck9wZXJhdGlvbik7Ci0gICAgICAgICAgICBDb21wb25lbnRUcmFuc2ZlckZ1bmN0aW9u
IHRyYW5zZmVyRnVuY3Rpb247Ci0gICAgICAgICAgICB0cmFuc2ZlckZ1bmN0aW9uLnR5cGUgPSBG
RUNPTVBPTkVOVFRSQU5TRkVSX1RZUEVfTElORUFSOwotICAgICAgICAgICAgZmxvYXQgYW1vdW50
ID0gbmFycm93UHJlY2lzaW9uVG9GbG9hdChjb21wb25lbnRUcmFuc2Zlck9wZXJhdGlvbi5hbW91
bnQoKSk7Ci0gICAgICAgICAgICB0cmFuc2ZlckZ1bmN0aW9uLnNsb3BlID0gYW1vdW50OwotICAg
ICAgICAgICAgdHJhbnNmZXJGdW5jdGlvbi5pbnRlcmNlcHQgPSAwOwotCi0gICAgICAgICAgICBD
b21wb25lbnRUcmFuc2ZlckZ1bmN0aW9uIG51bGxGdW5jdGlvbjsKLSAgICAgICAgICAgIGVmZmVj
dCA9IEZFQ29tcG9uZW50VHJhbnNmZXI6OmNyZWF0ZSgqdGhpcywgbnVsbEZ1bmN0aW9uLCBudWxs
RnVuY3Rpb24sIG51bGxGdW5jdGlvbiwgdHJhbnNmZXJGdW5jdGlvbik7CisKKyAgICAgICAgY2Fz
ZSBGaWx0ZXJPcGVyYXRpb246OklOVkVSVDoKKyAgICAgICAgICAgIGVmZmVjdCA9IGNyZWF0ZUlu
dmVydEVmZmVjdChkb3duY2FzdDxCYXNpY0NvbXBvbmVudFRyYW5zZmVyRmlsdGVyT3BlcmF0aW9u
Pigqb3BlcmF0aW9uKSk7CiAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgfQotICAgICAgICBj
YXNlIEZpbHRlck9wZXJhdGlvbjo6QlJJR0hUTkVTUzogewotICAgICAgICAgICAgYXV0byYgY29t
cG9uZW50VHJhbnNmZXJPcGVyYXRpb24gPSBkb3duY2FzdDxCYXNpY0NvbXBvbmVudFRyYW5zZmVy
RmlsdGVyT3BlcmF0aW9uPihmaWx0ZXJPcGVyYXRpb24pOwotICAgICAgICAgICAgQ29tcG9uZW50
VHJhbnNmZXJGdW5jdGlvbiB0cmFuc2ZlckZ1bmN0aW9uOwotICAgICAgICAgICAgdHJhbnNmZXJG
dW5jdGlvbi50eXBlID0gRkVDT01QT05FTlRUUkFOU0ZFUl9UWVBFX0xJTkVBUjsKLSAgICAgICAg
ICAgIHRyYW5zZmVyRnVuY3Rpb24uc2xvcGUgPSBuYXJyb3dQcmVjaXNpb25Ub0Zsb2F0KGNvbXBv
bmVudFRyYW5zZmVyT3BlcmF0aW9uLmFtb3VudCgpKTsKLSAgICAgICAgICAgIHRyYW5zZmVyRnVu
Y3Rpb24uaW50ZXJjZXB0ID0gMDsKLQotICAgICAgICAgICAgQ29tcG9uZW50VHJhbnNmZXJGdW5j
dGlvbiBudWxsRnVuY3Rpb247Ci0gICAgICAgICAgICBlZmZlY3QgPSBGRUNvbXBvbmVudFRyYW5z
ZmVyOjpjcmVhdGUoKnRoaXMsIHRyYW5zZmVyRnVuY3Rpb24sIHRyYW5zZmVyRnVuY3Rpb24sIHRy
YW5zZmVyRnVuY3Rpb24sIG51bGxGdW5jdGlvbik7CisgICAgICAgICAgICAKKyAgICAgICAgY2Fz
ZSBGaWx0ZXJPcGVyYXRpb246Ok9QQUNJVFk6CisgICAgICAgICAgICBlZmZlY3QgPSBjcmVhdGVP
cGFjaXR5RWZmZWN0KGRvd25jYXN0PEJhc2ljQ29tcG9uZW50VHJhbnNmZXJGaWx0ZXJPcGVyYXRp
b24+KCpvcGVyYXRpb24pKTsKICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICB9Ci0gICAgICAg
IGNhc2UgRmlsdGVyT3BlcmF0aW9uOjpDT05UUkFTVDogewotICAgICAgICAgICAgYXV0byYgY29t
cG9uZW50VHJhbnNmZXJPcGVyYXRpb24gPSBkb3duY2FzdDxCYXNpY0NvbXBvbmVudFRyYW5zZmVy
RmlsdGVyT3BlcmF0aW9uPihmaWx0ZXJPcGVyYXRpb24pOwotICAgICAgICAgICAgQ29tcG9uZW50
VHJhbnNmZXJGdW5jdGlvbiB0cmFuc2ZlckZ1bmN0aW9uOwotICAgICAgICAgICAgdHJhbnNmZXJG
dW5jdGlvbi50eXBlID0gRkVDT01QT05FTlRUUkFOU0ZFUl9UWVBFX0xJTkVBUjsKLSAgICAgICAg
ICAgIGZsb2F0IGFtb3VudCA9IG5hcnJvd1ByZWNpc2lvblRvRmxvYXQoY29tcG9uZW50VHJhbnNm
ZXJPcGVyYXRpb24uYW1vdW50KCkpOwotICAgICAgICAgICAgdHJhbnNmZXJGdW5jdGlvbi5zbG9w
ZSA9IGFtb3VudDsKLSAgICAgICAgICAgIHRyYW5zZmVyRnVuY3Rpb24uaW50ZXJjZXB0ID0gLTAu
NSAqIGFtb3VudCArIDAuNTsKICAgICAgICAgICAgIAotICAgICAgICAgICAgQ29tcG9uZW50VHJh
bnNmZXJGdW5jdGlvbiBudWxsRnVuY3Rpb247Ci0gICAgICAgICAgICBlZmZlY3QgPSBGRUNvbXBv
bmVudFRyYW5zZmVyOjpjcmVhdGUoKnRoaXMsIHRyYW5zZmVyRnVuY3Rpb24sIHRyYW5zZmVyRnVu
Y3Rpb24sIHRyYW5zZmVyRnVuY3Rpb24sIG51bGxGdW5jdGlvbik7CisgICAgICAgIGNhc2UgRmls
dGVyT3BlcmF0aW9uOjpTQVRVUkFURToKKyAgICAgICAgICAgIGVmZmVjdCA9IGNyZWF0ZVNhdHVy
YXRlRWZmZWN0KGRvd25jYXN0PEJhc2ljQ29sb3JNYXRyaXhGaWx0ZXJPcGVyYXRpb24+KCpvcGVy
YXRpb24pKTsKICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICB9Ci0gICAgICAgIGNhc2UgRmls
dGVyT3BlcmF0aW9uOjpCTFVSOiB7Ci0gICAgICAgICAgICBhdXRvJiBibHVyT3BlcmF0aW9uID0g
ZG93bmNhc3Q8Qmx1ckZpbHRlck9wZXJhdGlvbj4oZmlsdGVyT3BlcmF0aW9uKTsKLSAgICAgICAg
ICAgIGZsb2F0IHN0ZERldmlhdGlvbiA9IGZsb2F0VmFsdWVGb3JMZW5ndGgoYmx1ck9wZXJhdGlv
bi5zdGREZXZpYXRpb24oKSwgMCk7Ci0gICAgICAgICAgICBlZmZlY3QgPSBGRUdhdXNzaWFuQmx1
cjo6Y3JlYXRlKCp0aGlzLCBzdGREZXZpYXRpb24sIHN0ZERldmlhdGlvbiwgY29uc3VtZXIgPT0g
RmlsdGVyQ29uc3VtZXI6OkZpbHRlclByb3BlcnR5ID8gRURHRU1PREVfTk9ORSA6IEVER0VNT0RF
X0RVUExJQ0FURSk7CisgICAgICAgICAgICAKKyAgICAgICAgY2FzZSBGaWx0ZXJPcGVyYXRpb246
OlNFUElBOgorICAgICAgICAgICAgZWZmZWN0ID0gY3JlYXRlU2VwaWFFZmZlY3QoZG93bmNhc3Q8
QmFzaWNDb2xvck1hdHJpeEZpbHRlck9wZXJhdGlvbj4oKm9wZXJhdGlvbikpOwogICAgICAgICAg
ICAgYnJlYWs7Ci0gICAgICAgIH0KLSAgICAgICAgY2FzZSBGaWx0ZXJPcGVyYXRpb246OkRST1Bf
U0hBRE9XOiB7Ci0gICAgICAgICAgICBhdXRvJiBkcm9wU2hhZG93T3BlcmF0aW9uID0gZG93bmNh
c3Q8RHJvcFNoYWRvd0ZpbHRlck9wZXJhdGlvbj4oZmlsdGVyT3BlcmF0aW9uKTsKLSAgICAgICAg
ICAgIGVmZmVjdCA9IEZFRHJvcFNoYWRvdzo6Y3JlYXRlKCp0aGlzLCBkcm9wU2hhZG93T3BlcmF0
aW9uLnN0ZERldmlhdGlvbigpLCBkcm9wU2hhZG93T3BlcmF0aW9uLnN0ZERldmlhdGlvbigpLAot
ICAgICAgICAgICAgICAgIGRyb3BTaGFkb3dPcGVyYXRpb24ueCgpLCBkcm9wU2hhZG93T3BlcmF0
aW9uLnkoKSwgZHJvcFNoYWRvd09wZXJhdGlvbi5jb2xvcigpLCAxKTsKKyAgICAgICAgICAgICAg
ICAKKyAgICAgICAgY2FzZSBGaWx0ZXJPcGVyYXRpb246OlJFRkVSRU5DRToKKyAgICAgICAgICAg
IGZpbHRlciA9IGNyZWF0ZVNWR0ZpbHRlcigqdGhpcywgZG93bmNhc3Q8UmVmZXJlbmNlRmlsdGVy
T3BlcmF0aW9uPigqb3BlcmF0aW9uKSwgcmVuZGVyZXIsICpwcmV2aW91c0VmZmVjdCk7CisgICAg
ICAgICAgICBlZmZlY3QgPSBudWxscHRyOwogICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIH0K
KwogICAgICAgICBkZWZhdWx0OgogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KIAorICAg
ICAgICBpZiAoZmlsdGVyKSB7CisgICAgICAgICAgICBlZmZlY3QgPSBmaWx0ZXItPmxhc3RFZmZl
Y3QoKTsKKyAgICAgICAgICAgIHNldHVwTGFzdEVmZmVjdFByb3BlcnRpZXMoKmVmZmVjdCwgY29u
c3VtZXIpOworICAgICAgICAgICAgbV9mdW5jdGlvbnMuYXBwZW5kKGZpbHRlci5yZWxlYXNlTm9u
TnVsbCgpKTsKKyAgICAgICAgICAgIHByZXZpb3VzRWZmZWN0ID0gV1RGTW92ZShlZmZlY3QpOwor
ICAgICAgICAgICAgY29udGludWU7CisgICAgICAgIH0KKyAgICAgICAgCiAgICAgICAgIGlmIChl
ZmZlY3QpIHsKLSAgICAgICAgICAgIC8vIFVubGlrZSBTVkcgRmlsdGVycyBhbmQgQ1NTRmlsdGVy
SW1hZ2VzLCBmaWx0ZXIgZnVuY3Rpb25zIG9uIHRoZSBmaWx0ZXIKLSAgICAgICAgICAgIC8vIHBy
b3BlcnR5IGFwcGxpZWQgaGVyZSBzaG91bGQgbm90IGNsaXAgdG8gdGhlaXIgcHJpbWl0aXZlIHN1
YnJlZ2lvbnMuCi0gICAgICAgICAgICBlZmZlY3QtPnNldENsaXBzVG9Cb3VuZHMoY29uc3VtZXIg
PT0gRmlsdGVyQ29uc3VtZXI6OkZpbHRlckZ1bmN0aW9uKTsKLSAgICAgICAgICAgIGVmZmVjdC0+
c2V0T3BlcmF0aW5nQ29sb3JTcGFjZShEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0IoKSk7Ci0g
ICAgICAgICAgICAKLSAgICAgICAgICAgIGlmIChmaWx0ZXJPcGVyYXRpb24udHlwZSgpICE9IEZp
bHRlck9wZXJhdGlvbjo6UkVGRVJFTkNFKSB7Ci0gICAgICAgICAgICAgICAgZWZmZWN0LT5pbnB1
dEVmZmVjdHMoKSA9IHsgV1RGTW92ZShwcmV2aW91c0VmZmVjdCkgfTsKLSAgICAgICAgICAgICAg
ICBtX2VmZmVjdHMuYXBwZW5kKCplZmZlY3QpOwotICAgICAgICAgICAgfQorICAgICAgICAgICAg
c2V0dXBMYXN0RWZmZWN0UHJvcGVydGllcygqZWZmZWN0LCBjb25zdW1lcik7CisgICAgICAgICAg
ICBlZmZlY3QtPmlucHV0RWZmZWN0cygpID0geyBXVEZNb3ZlKHByZXZpb3VzRWZmZWN0KSB9Owor
ICAgICAgICAgICAgbV9mdW5jdGlvbnMuYXBwZW5kKHsgKmVmZmVjdCB9KTsKICAgICAgICAgICAg
IHByZXZpb3VzRWZmZWN0ID0gV1RGTW92ZShlZmZlY3QpOwogICAgICAgICB9CiAgICAgfQogCiAg
ICAgLy8gSWYgd2UgZGlkbid0IG1ha2UgYW55IGVmZmVjdHMsIHRlbGwgb3VyIGNhbGxlciB3ZSBh
cmUgbm90IHZhbGlkLgotICAgIGlmIChtX2VmZmVjdHMuaXNFbXB0eSgpKQorICAgIGlmIChtX2Z1
bmN0aW9ucy5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgIG1fZWZmZWN0
cy5zaHJpbmtUb0ZpdCgpOworICAgIG1fZnVuY3Rpb25zLnNocmlua1RvRml0KCk7CisKKyAgICAv
LyBUaGlzIHdpbGwgc2V0IHRoZSBmaWx0ZXJQcmltaXRpdmVTdWJyZWdpb24gYW5kIG1heEVmZmVj
dFJlY3QgZm9yIHRoZSBGaWx0ZXJFZmZlY3QgY2hhaW4uCisgICAgZGV0ZXJtaW5lRmlsdGVyUHJp
bWl0aXZlU3VicmVnaW9uKCk7CisKKyAgICAvLyBUaGlzIHdpbGwgc2V0IHRoZSBmaWx0ZXJQcmlt
aXRpdmVTdWJyZWdpb24gYW5kIG1heEVmZmVjdFJlY3QgZm9yIHRoZSBGaWx0ZXJFZmZlY3QgY2hh
aW4uCisgICAgZGV0ZXJtaW5lRmlsdGVyUHJpbWl0aXZlU3VicmVnaW9uKCk7CiAKLSAgICBzZXRN
YXhFZmZlY3RSZWN0cyhtX3NvdXJjZURyYXdpbmdSZWdpb24pOwogI2lmIFVTRShDT1JFX0lNQUdF
KQogICAgIGlmICghbV9maWx0ZXJSZW5kZXJlcikKLSAgICAgICAgbV9maWx0ZXJSZW5kZXJlciA9
IEZpbHRlckVmZmVjdFJlbmRlcmVyOjp0cnlDcmVhdGUocmVuZGVyZXIuc2V0dGluZ3MoKS5jb3Jl
SW1hZ2VBY2NlbGVyYXRlZEZpbHRlclJlbmRlckVuYWJsZWQoKSwgbV9lZmZlY3RzLmxhc3QoKS5n
ZXQoKSk7CisgICAgICAgIG1fZmlsdGVyUmVuZGVyZXIgPSBGaWx0ZXJFZmZlY3RSZW5kZXJlcjo6
dHJ5Q3JlYXRlKHJlbmRlcmVyLnNldHRpbmdzKCkuY29yZUltYWdlQWNjZWxlcmF0ZWRGaWx0ZXJS
ZW5kZXJFbmFibGVkKCksICpsYXN0RWZmZWN0KCkpOwogI2VuZGlmCiAgICAgcmV0dXJuIHRydWU7
CiB9CiAKK0dyYXBoaWNzQ29udGV4dCogQ1NTRmlsdGVyOjppbnB1dENvbnRleHQoKQoreworICAg
IHJldHVybiBzb3VyY2VJbWFnZSgpID8gJnNvdXJjZUltYWdlKCktPmNvbnRleHQoKSA6IG51bGxw
dHI7Cit9CisKIGJvb2wgQ1NTRmlsdGVyOjp1cGRhdGVCYWNraW5nU3RvcmVSZWN0KGNvbnN0IEZs
b2F0UmVjdCYgZmlsdGVyUmVjdCkKIHsKICAgICBpZiAoZmlsdGVyUmVjdC5pc0VtcHR5KCkgfHwg
SW1hZ2VCdWZmZXI6OnNpemVOZWVkc0NsYW1waW5nKGZpbHRlclJlY3Quc2l6ZSgpKSkKQEAgLTMz
MSw1MyArMzU4LDY4IEBAIHZvaWQgQ1NTRmlsdGVyOjphbGxvY2F0ZUJhY2tpbmdTdG9yZUlmTmVl
ZGVkKGNvbnN0IEdyYXBoaWNzQ29udGV4dCYgdGFyZ2V0Q29udGV4CiAgICAgaWYgKG1fZ3JhcGhp
Y3NCdWZmZXJBdHRhY2hlZCkKICAgICAgICAgcmV0dXJuOwogCi0gICAgYXV0byBsb2dpY2FsU2l6
ZSA9IG1fc291cmNlRHJhd2luZ1JlZ2lvbi5zaXplKCk7CisgICAgYXV0byBsb2dpY2FsU2l6ZSA9
IHNvdXJjZUltYWdlUmVjdCgpLnNpemUoKTsKICAgICBpZiAoIXNvdXJjZUltYWdlKCkgfHwgc291
cmNlSW1hZ2UoKS0+bG9naWNhbFNpemUoKSAhPSBsb2dpY2FsU2l6ZSkgewogI2lmIFVTRShESVJF
Q1QyRCkKLSAgICAgICAgc2V0U291cmNlSW1hZ2UoSW1hZ2VCdWZmZXI6OmNyZWF0ZShsb2dpY2Fs
U2l6ZSwgcmVuZGVyaW5nTW9kZSgpLCAmdGFyZ2V0Q29udGV4dCwgZmlsdGVyU2NhbGUoKSwgRGVz
dGluYXRpb25Db2xvclNwYWNlOjpTUkdCKCksIFBpeGVsRm9ybWF0OjpCR1JBOCkpOworICAgICAg
ICBzZXRTb3VyY2VJbWFnZShJbWFnZUJ1ZmZlcjo6Y3JlYXRlKGxvZ2ljYWxTaXplLCByZW5kZXJp
bmdNb2RlKCksICZ0YXJnZXRDb250ZXh0LCAxLCBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0Io
KSwgUGl4ZWxGb3JtYXQ6OkJHUkE4KSk7CiAjZWxzZQogICAgICAgICBVTlVTRURfUEFSQU0odGFy
Z2V0Q29udGV4dCk7CiAgICAgICAgIFJlbmRlcmluZ01vZGUgbW9kZSA9IG1fZmlsdGVyUmVuZGVy
ZXIgPyBSZW5kZXJpbmdNb2RlOjpBY2NlbGVyYXRlZCA6IHJlbmRlcmluZ01vZGUoKTsKLSAgICAg
ICAgc2V0U291cmNlSW1hZ2UoSW1hZ2VCdWZmZXI6OmNyZWF0ZShsb2dpY2FsU2l6ZSwgbW9kZSwg
ZmlsdGVyU2NhbGUoKSwgRGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdCKCksIFBpeGVsRm9ybWF0
OjpCR1JBOCkpOworICAgICAgICBzZXRTb3VyY2VJbWFnZShJbWFnZUJ1ZmZlcjo6Y3JlYXRlKGxv
Z2ljYWxTaXplLCBtb2RlLCAxLCBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0IoKSwgUGl4ZWxG
b3JtYXQ6OkJHUkE4KSk7CiAjZW5kaWYKKyAgICAgICAgaWYgKGF1dG8gY29udGV4dCA9IGlucHV0
Q29udGV4dCgpKQorICAgICAgICAgICAgY29udGV4dC0+c2NhbGUoZmlsdGVyU2NhbGUoKSk7CiAg
ICAgfQogICAgIG1fZ3JhcGhpY3NCdWZmZXJBdHRhY2hlZCA9IHRydWU7CiB9CiAKK1JlZlB0cjxG
aWx0ZXJFZmZlY3Q+IENTU0ZpbHRlcjo6bGFzdEVmZmVjdCgpCit7CisgICAgaWYgKG1fZnVuY3Rp
b25zLmlzRW1wdHkoKSkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisKKyAgICBhdXRvJiBmdW5j
dGlvbiA9IG1fZnVuY3Rpb25zLmxhc3QoKTsKKyAgICBpZiAoZnVuY3Rpb24tPmlzU1ZHRmlsdGVy
KCkpCisgICAgICAgIHJldHVybiBkb3duY2FzdDxTVkdGaWx0ZXI+KGZ1bmN0aW9uLnB0cigpKS0+
bGFzdEVmZmVjdCgpOworCisgICAgcmV0dXJuIGRvd25jYXN0PEZpbHRlckVmZmVjdD4oZnVuY3Rp
b24ucHRyKCkpOworfQorCiB2b2lkIENTU0ZpbHRlcjo6ZGV0ZXJtaW5lRmlsdGVyUHJpbWl0aXZl
U3VicmVnaW9uKCkKIHsKLSAgICBhdXRvJiBsYXN0RWZmZWN0ID0gbV9lZmZlY3RzLmxhc3QoKS5n
ZXQoKTsKLSAgICBsYXN0RWZmZWN0LmRldGVybWluZUZpbHRlclByaW1pdGl2ZVN1YnJlZ2lvbigp
OwotICAgIEZsb2F0UmVjdCBzdWJSZWdpb24gPSBsYXN0RWZmZWN0Lm1heEVmZmVjdFJlY3QoKTsK
KyAgICBhdXRvIGVmZmVjdCA9IGxhc3RFZmZlY3QoKTsKKyAgICBlZmZlY3QtPmRldGVybWluZUZp
bHRlclByaW1pdGl2ZVN1YnJlZ2lvbigqdGhpcyk7CisgICAgRmxvYXRSZWN0IHN1YlJlZ2lvbiA9
IGVmZmVjdC0+bWF4RWZmZWN0UmVjdCgpOwogICAgIC8vIEF0IGxlYXN0IG9uZSBGaWx0ZXJFZmZl
Y3QgaGFzIGEgdG9vIGJpZyBpbWFnZSBzaXplLCByZWNhbGN1bGF0ZSB0aGUgZWZmZWN0IHNpemVz
IHdpdGggbmV3IHNjYWxlIGZhY3RvcnMuCi0gICAgRmxvYXRTaXplIHNjYWxlOwotICAgIGlmIChJ
bWFnZUJ1ZmZlcjo6c2l6ZU5lZWRzQ2xhbXBpbmcoc3ViUmVnaW9uLnNpemUoKSwgc2NhbGUpKSB7
Ci0gICAgICAgIHNldEZpbHRlclJlc29sdXRpb24oc2NhbGUpOwotICAgICAgICBsYXN0RWZmZWN0
LmRldGVybWluZUZpbHRlclByaW1pdGl2ZVN1YnJlZ2lvbigpOworICAgIEZsb2F0U2l6ZSBmaWx0
ZXJTY2FsZSB7IDEsIDEgfTsKKyAgICBpZiAoSW1hZ2VCdWZmZXI6OnNpemVOZWVkc0NsYW1waW5n
KHN1YlJlZ2lvbi5zaXplKCksIGZpbHRlclNjYWxlKSkgeworICAgICAgICBzZXRGaWx0ZXJTY2Fs
ZShmaWx0ZXJTY2FsZSk7CisgICAgICAgIGVmZmVjdC0+ZGV0ZXJtaW5lRmlsdGVyUHJpbWl0aXZl
U3VicmVnaW9uKCp0aGlzKTsKICAgICB9CiB9CiAKIHZvaWQgQ1NTRmlsdGVyOjpjbGVhckludGVy
bWVkaWF0ZVJlc3VsdHMoKQogewogICAgIG1fc291cmNlR3JhcGhpYy0+Y2xlYXJSZXN1bHQoKTsK
LSAgICBpZiAobV9zb3VyY2VBbHBoYSkKLSAgICAgICAgbV9zb3VyY2VBbHBoYS0+Y2xlYXJSZXN1
bHQoKTsKLSAgICBmb3IgKGF1dG8mIGVmZmVjdCA6IG1fZWZmZWN0cykKLSAgICAgICAgZWZmZWN0
LT5jbGVhclJlc3VsdCgpOworICAgIGZvciAoYXV0byYgZnVuY3Rpb24gOiBtX2Z1bmN0aW9ucykK
KyAgICAgICAgZnVuY3Rpb24tPmNsZWFyUmVzdWx0KCk7CiB9CiAKLXZvaWQgQ1NTRmlsdGVyOjph
cHBseSgpCit2b2lkIENTU0ZpbHRlcjo6YXBwbHlGaWx0ZXIoKQogewotICAgIGF1dG8mIGVmZmVj
dCA9IG1fZWZmZWN0cy5sYXN0KCkuZ2V0KCk7CisgICAgYXV0byBlZmZlY3QgPSBsYXN0RWZmZWN0
KCk7CiAgICAgaWYgKG1fZmlsdGVyUmVuZGVyZXIpIHsKLSAgICAgICAgbV9maWx0ZXJSZW5kZXJl
ci0+YXBwbHlFZmZlY3RzKGVmZmVjdCk7CisgICAgICAgIG1fZmlsdGVyUmVuZGVyZXItPmFwcGx5
RWZmZWN0cygqdGhpcywgKmVmZmVjdCk7CiAgICAgICAgIGlmIChtX2ZpbHRlclJlbmRlcmVyLT5o
YXNSZXN1bHQoKSkgewotICAgICAgICAgICAgZWZmZWN0LnRyYW5zZm9ybVJlc3VsdENvbG9yU3Bh
Y2UoRGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdCKCkpOworICAgICAgICAgICAgZWZmZWN0LT50
cmFuc2Zvcm1SZXN1bHRDb2xvclNwYWNlKERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQigpKTsK
ICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogICAgIH0KLSAgICBlZmZlY3QuYXBwbHko
KTsKLSAgICBlZmZlY3QudHJhbnNmb3JtUmVzdWx0Q29sb3JTcGFjZShEZXN0aW5hdGlvbkNvbG9y
U3BhY2U6OlNSR0IoKSk7CisKKyAgICBmb3IgKGF1dG8mIGZ1bmN0aW9uIDogbV9mdW5jdGlvbnMp
CisgICAgICAgIGZ1bmN0aW9uLT5hcHBseSgqdGhpcyk7CisKKyAgICBlZmZlY3QtPnRyYW5zZm9y
bVJlc3VsdENvbG9yU3BhY2UoRGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdCKCkpOwogfQogCiBM
YXlvdXRSZWN0IENTU0ZpbHRlcjo6Y29tcHV0ZVNvdXJjZUltYWdlUmVjdEZvckRpcnR5UmVjdChj
b25zdCBMYXlvdXRSZWN0JiBmaWx0ZXJCb3hSZWN0LCBjb25zdCBMYXlvdXRSZWN0JiBkaXJ0eVJl
Y3QpCkBAIC0zOTAsMzQgKzQzMiwzMCBAQCBMYXlvdXRSZWN0IENTU0ZpbHRlcjo6Y29tcHV0ZVNv
dXJjZUltYWdlUmVjdEZvckRpcnR5UmVjdChjb25zdCBMYXlvdXRSZWN0JiBmaWx0ZQogICAgIHJl
dHVybiByZWN0Rm9yUmVwYWludDsKIH0KIAotSW1hZ2VCdWZmZXIqIENTU0ZpbHRlcjo6b3V0cHV0
KCkgY29uc3QKK0ltYWdlQnVmZmVyKiBDU1NGaWx0ZXI6Om91dHB1dCgpCiB7CiAgICAgaWYgKG1f
ZmlsdGVyUmVuZGVyZXIgJiYgbV9maWx0ZXJSZW5kZXJlci0+aGFzUmVzdWx0KCkpCiAgICAgICAg
IHJldHVybiBtX2ZpbHRlclJlbmRlcmVyLT5vdXRwdXQoKTsKICAgICAKLSAgICByZXR1cm4gbV9l
ZmZlY3RzLmxhc3QoKS0+aW1hZ2VCdWZmZXJSZXN1bHQoKTsKKyAgICByZXR1cm4gbGFzdEVmZmVj
dCgpLT5pbWFnZUJ1ZmZlclJlc3VsdCgpOwogfQogCiB2b2lkIENTU0ZpbHRlcjo6c2V0U291cmNl
SW1hZ2VSZWN0KGNvbnN0IEZsb2F0UmVjdCYgc291cmNlSW1hZ2VSZWN0KQogewotICAgIG1fc291
cmNlRHJhd2luZ1JlZ2lvbiA9IHNvdXJjZUltYWdlUmVjdDsKLSAgICBzZXRNYXhFZmZlY3RSZWN0
cyhzb3VyY2VJbWFnZVJlY3QpOwotICAgIHNldEZpbHRlclJlZ2lvbihzb3VyY2VJbWFnZVJlY3Qp
OwotICAgIG1fZ3JhcGhpY3NCdWZmZXJBdHRhY2hlZCA9IGZhbHNlOwotfQorICAgIGF1dG8gc2Nh
bGVkU291cmNlSW1hZ2VSZWN0ID0gc291cmNlSW1hZ2VSZWN0OworICAgIHNjYWxlZFNvdXJjZUlt
YWdlUmVjdC5zY2FsZShmaWx0ZXJTY2FsZSgpKTsKIAotdm9pZCBDU1NGaWx0ZXI6OnNldE1heEVm
ZmVjdFJlY3RzKGNvbnN0IEZsb2F0UmVjdCYgZWZmZWN0UmVjdCkKLXsKLSAgICBmb3IgKGF1dG8m
IGVmZmVjdCA6IG1fZWZmZWN0cykKLSAgICAgICAgZWZmZWN0LT5zZXRNYXhFZmZlY3RSZWN0KGVm
ZmVjdFJlY3QpOworICAgIEZpbHRlcjo6c2V0RmlsdGVyUmVnaW9uKHNvdXJjZUltYWdlUmVjdCk7
CisgICAgRmlsdGVyOjpzZXRTb3VyY2VJbWFnZVJlY3Qoc2NhbGVkU291cmNlSW1hZ2VSZWN0KTsK
KyAgICBtX2dyYXBoaWNzQnVmZmVyQXR0YWNoZWQgPSBmYWxzZTsKIH0KIAotSW50UmVjdCBDU1NG
aWx0ZXI6Om91dHB1dFJlY3QoKSBjb25zdAorSW50UmVjdCBDU1NGaWx0ZXI6Om91dHB1dFJlY3Qo
KQogewotICAgIGF1dG8mIGxhc3RFZmZlY3QgPSBtX2VmZmVjdHMubGFzdCgpLmdldCgpOworICAg
IGF1dG8gZWZmZWN0ID0gbGFzdEVmZmVjdCgpOwogICAgIAotICAgIGlmIChsYXN0RWZmZWN0Lmhh
c1Jlc3VsdCgpIHx8IChtX2ZpbHRlclJlbmRlcmVyICYmIG1fZmlsdGVyUmVuZGVyZXItPmhhc1Jl
c3VsdCgpKSkKLSAgICAgICAgcmV0dXJuIGxhc3RFZmZlY3QucmVxdWVzdGVkUmVnaW9uT2ZJbnB1
dFBpeGVsQnVmZmVyKEludFJlY3QgeyBtX2ZpbHRlclJlZ2lvbiB9KTsKKyAgICBpZiAoZWZmZWN0
LT5oYXNSZXN1bHQoKSB8fCAobV9maWx0ZXJSZW5kZXJlciAmJiBtX2ZpbHRlclJlbmRlcmVyLT5o
YXNSZXN1bHQoKSkpCisgICAgICAgIHJldHVybiBlZmZlY3QtPnJlcXVlc3RlZFJlZ2lvbk9mSW5w
dXRQaXhlbEJ1ZmZlcihJbnRSZWN0IHsgZmlsdGVyUmVnaW9uKCkgfSk7CiAgICAgCiAgICAgcmV0
dXJuIHsgfTsKIH0KQEAgLTQzMCw4ICs0NjgsOSBAQCBJbnRPdXRzZXRzIENTU0ZpbHRlcjo6b3V0
c2V0cygpIGNvbnN0CiAgICAgaWYgKCFtX291dHNldHMuaXNaZXJvKCkpCiAgICAgICAgIHJldHVy
biBtX291dHNldHM7CiAKLSAgICBmb3IgKGF1dG8mIGVmZmVjdCA6IG1fZWZmZWN0cykKLSAgICAg
ICAgbV9vdXRzZXRzICs9IGVmZmVjdC0+b3V0c2V0cygpOworICAgIGZvciAoYXV0byYgZnVuY3Rp
b24gOiBtX2Z1bmN0aW9ucykKKyAgICAgICAgbV9vdXRzZXRzICs9IGZ1bmN0aW9uLT5vdXRzZXRz
KCk7CisKICAgICByZXR1cm4gbV9vdXRzZXRzOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvQ1NTRmlsdGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvQ1NT
RmlsdGVyLmgKaW5kZXggMDBiOTE5MTdiODA0YzkyZDk0MDhiNzU4ZTM3NWMyNTJmMjlkYjBjNS4u
ZWUzZGQ5ZmRmNjUxZDYzNTkzZmY0ZDkyYzkxYTE2MzM1YWM3ZDhkMSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0NTU0ZpbHRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9DU1NGaWx0ZXIuaApAQCAtMzgsNjkgKzM4LDUwIEBAIGNsYXNzIEZpbHRlck9wZXJh
dGlvbnM7CiBjbGFzcyBHcmFwaGljc0NvbnRleHQ7CiBjbGFzcyBSZWZlcmVuY2VGaWx0ZXJPcGVy
YXRpb247CiBjbGFzcyBSZW5kZXJFbGVtZW50OwotY2xhc3MgU291cmNlQWxwaGE7CiBjbGFzcyBT
b3VyY2VHcmFwaGljOwogCiBlbnVtIGNsYXNzIEZpbHRlckNvbnN1bWVyIHsgRmlsdGVyUHJvcGVy
dHksIEZpbHRlckZ1bmN0aW9uIH07CiAKIGNsYXNzIENTU0ZpbHRlciBmaW5hbCA6IHB1YmxpYyBG
aWx0ZXIgewogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwotICAgIGZyaWVuZCBjbGFzcyBS
ZW5kZXJMYXllckZpbHRlcnM7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFJlZjxDU1NGaWx0ZXI+IGNy
ZWF0ZSgpOworICAgIHN0YXRpYyBSZWY8Q1NTRmlsdGVyPiBjcmVhdGUoY29uc3QgRmlsdGVyT3Bl
cmF0aW9ucyYsIFJlbmRlcmluZ01vZGUsIGZsb2F0IHNjYWxlRmFjdG9yID0gMSk7CiAKICAgICB2
b2lkIHNldFNvdXJjZUltYWdlUmVjdChjb25zdCBGbG9hdFJlY3QmKTsKLSAgICB2b2lkIHNldEZp
bHRlclJlZ2lvbihjb25zdCBGbG9hdFJlY3QmIGZpbHRlclJlZ2lvbikgeyBtX2ZpbHRlclJlZ2lv
biA9IGZpbHRlclJlZ2lvbjsgfQotCi0gICAgSW1hZ2VCdWZmZXIqIG91dHB1dCgpIGNvbnN0Owot
Ci0gICAgYm9vbCBidWlsZChSZW5kZXJFbGVtZW50JiwgY29uc3QgRmlsdGVyT3BlcmF0aW9ucyYs
IEZpbHRlckNvbnN1bWVyKTsKLSAgICB2b2lkIGNsZWFySW50ZXJtZWRpYXRlUmVzdWx0cygpOwot
ICAgIHZvaWQgYXBwbHkoKTsKIAogICAgIGJvb2wgaGFzRmlsdGVyVGhhdE1vdmVzUGl4ZWxzKCkg
Y29uc3QgeyByZXR1cm4gbV9oYXNGaWx0ZXJUaGF0TW92ZXNQaXhlbHM7IH0KICAgICBib29sIGhh
c0ZpbHRlclRoYXRTaG91bGRCZVJlc3RyaWN0ZWRCeVNlY3VyaXR5T3JpZ2luKCkgY29uc3QgeyBy
ZXR1cm4gbV9oYXNGaWx0ZXJUaGF0U2hvdWxkQmVSZXN0cmljdGVkQnlTZWN1cml0eU9yaWdpbjsg
fQogCisgICAgYm9vbCBidWlsZChSZW5kZXJFbGVtZW50JiwgY29uc3QgRmlsdGVyT3BlcmF0aW9u
cyYsIEZpbHRlckNvbnN1bWVyKTsKICAgICB2b2lkIGRldGVybWluZUZpbHRlclByaW1pdGl2ZVN1
YnJlZ2lvbigpOwotICAgIEludE91dHNldHMgb3V0c2V0cygpIGNvbnN0OwogCi1wcml2YXRlOgot
ICAgIENTU0ZpbHRlcigpOwotICAgIHZpcnR1YWwgfkNTU0ZpbHRlcigpOwotCi0gICAgYm9vbCBp
c0NTU0ZpbHRlcigpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIHRydWU7IH0KLQotICAgIEZsb2F0UmVj
dCBzb3VyY2VJbWFnZVJlY3QoKSBjb25zdCBmaW5hbCB7IHJldHVybiBtX3NvdXJjZURyYXdpbmdS
ZWdpb247IH0KLQotICAgIEZsb2F0UmVjdCBmaWx0ZXJSZWdpb24oKSBjb25zdCBmaW5hbCB7IHJl
dHVybiBtX2ZpbHRlclJlZ2lvbjsgfQotICAgIEZsb2F0UmVjdCBmaWx0ZXJSZWdpb25JblVzZXJT
cGFjZSgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1fZmlsdGVyUmVnaW9uOyB9Ci0KLSAgICBSZWZQ
dHI8RmlsdGVyRWZmZWN0PiBidWlsZFJlZmVyZW5jZUZpbHRlcihSZW5kZXJFbGVtZW50JiwgRmls
dGVyRWZmZWN0JiBwcmV2aW91c0VmZmVjdCwgUmVmZXJlbmNlRmlsdGVyT3BlcmF0aW9uJik7Cisg
ICAgUmVmUHRyPEZpbHRlckVmZmVjdD4gbGFzdEVmZmVjdCgpOworICAgIEdyYXBoaWNzQ29udGV4
dCogaW5wdXRDb250ZXh0KCk7CisgICAgSW50T3V0c2V0cyBvdXRzZXRzKCkgY29uc3Qgb3ZlcnJp
ZGU7CiAKLSAgICB2b2lkIHNldE1heEVmZmVjdFJlY3RzKGNvbnN0IEZsb2F0UmVjdCYpOworICAg
IHZvaWQgY2xlYXJJbnRlcm1lZGlhdGVSZXN1bHRzKCk7CisgICAgdm9pZCBhcHBseUZpbHRlcigp
IG92ZXJyaWRlOwogCi0gICAgR3JhcGhpY3NDb250ZXh0KiBpbnB1dENvbnRleHQoKTsKKyAgICBJ
bWFnZUJ1ZmZlciogb3V0cHV0KCk7CisgICAgSW50UmVjdCBvdXRwdXRSZWN0KCk7CiAKICAgICBi
b29sIHVwZGF0ZUJhY2tpbmdTdG9yZVJlY3QoY29uc3QgRmxvYXRSZWN0JiBmaWx0ZXJSZWN0KTsK
ICAgICB2b2lkIGFsbG9jYXRlQmFja2luZ1N0b3JlSWZOZWVkZWQoY29uc3QgR3JhcGhpY3NDb250
ZXh0Jik7CiAKLSAgICBJbnRSZWN0IG91dHB1dFJlY3QoKSBjb25zdDsKLQogICAgIExheW91dFJl
Y3QgY29tcHV0ZVNvdXJjZUltYWdlUmVjdEZvckRpcnR5UmVjdChjb25zdCBMYXlvdXRSZWN0JiBm
aWx0ZXJCb3hSZWN0LCBjb25zdCBMYXlvdXRSZWN0JiBkaXJ0eVJlY3QpOwogCi0gICAgRmxvYXRS
ZWN0IG1fc291cmNlRHJhd2luZ1JlZ2lvbjsKLSAgICBGbG9hdFJlY3QgbV9maWx0ZXJSZWdpb247
Citwcml2YXRlOgorICAgIENTU0ZpbHRlcihib29sIGhhc0ZpbHRlclRoYXRNb3Zlc1BpeGVscywg
Ym9vbCBoYXNGaWx0ZXJUaGF0U2hvdWxkQmVSZXN0cmljdGVkQnlTZWN1cml0eU9yaWdpbiwgZmxv
YXQgc2NhbGVGYWN0b3IpOworCisgICAgYm9vbCBtX2dyYXBoaWNzQnVmZmVyQXR0YWNoZWQgeyBm
YWxzZSB9OworICAgIGJvb2wgbV9oYXNGaWx0ZXJUaGF0TW92ZXNQaXhlbHMgeyBmYWxzZSB9Owor
ICAgIGJvb2wgbV9oYXNGaWx0ZXJUaGF0U2hvdWxkQmVSZXN0cmljdGVkQnlTZWN1cml0eU9yaWdp
biB7IGZhbHNlIH07CiAKLSAgICBWZWN0b3I8UmVmPEZpbHRlckVmZmVjdD4+IG1fZWZmZWN0czsK
ICAgICBSZWY8U291cmNlR3JhcGhpYz4gbV9zb3VyY2VHcmFwaGljOwotICAgIFJlZlB0cjxGaWx0
ZXJFZmZlY3Q+IG1fc291cmNlQWxwaGE7CisgICAgVmVjdG9yPFJlZjxGaWx0ZXJGdW5jdGlvbj4+
IG1fZnVuY3Rpb25zOwogCiAgICAgbXV0YWJsZSBJbnRPdXRzZXRzIG1fb3V0c2V0czsKIAotICAg
IGJvb2wgbV9ncmFwaGljc0J1ZmZlckF0dGFjaGVkIHsgZmFsc2UgfTsKLSAgICBib29sIG1faGFz
RmlsdGVyVGhhdE1vdmVzUGl4ZWxzIHsgZmFsc2UgfTsKLSAgICBib29sIG1faGFzRmlsdGVyVGhh
dFNob3VsZEJlUmVzdHJpY3RlZEJ5U2VjdXJpdHlPcmlnaW4geyBmYWxzZSB9OwotICAgIAogICAg
IHN0ZDo6dW5pcXVlX3B0cjxGaWx0ZXJFZmZlY3RSZW5kZXJlcj4gbV9maWx0ZXJSZW5kZXJlcjsK
IH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllci5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXIuY3BwCmluZGV4IDBjMjY2
OTYyOTkxNzRiZDZmZDg5YzYyYjFhMDIyOTZmYTg5ZTRiZDkuLmY3ZTczYjJmNTAxNDhjZDY2YzJi
NjlkZWYxYjE0YTUzOTkyZjA0ODYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJMYXllci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxh
eWVyLmNwcApAQCAtMzIyNiw3ICszMjI2LDcgQEAgR3JhcGhpY3NDb250ZXh0KiBSZW5kZXJMYXll
cjo6c2V0dXBGaWx0ZXJzKEdyYXBoaWNzQ29udGV4dCYgZGVzdGluYXRpb25Db250ZXh0LAogCiAg
ICAgYXV0byByb290UmVsYXRpdmVCb3VuZHMgPSBjYWxjdWxhdGVMYXllckJvdW5kcyhwYWludGlu
Z0luZm8ucm9vdExheWVyLCBvZmZzZXRGcm9tUm9vdCwgeyB9KTsKIAotICAgIEdyYXBoaWNzQ29u
dGV4dCogZmlsdGVyQ29udGV4dCA9IHBhaW50aW5nRmlsdGVycy0+YmVnaW5GaWx0ZXJFZmZlY3Qo
ZGVzdGluYXRpb25Db250ZXh0LCBlbmNsb3NpbmdJbnRSZWN0KHJvb3RSZWxhdGl2ZUJvdW5kcyks
IGVuY2xvc2luZ0ludFJlY3QocGFpbnRpbmdJbmZvLnBhaW50RGlydHlSZWN0KSwgZW5jbG9zaW5n
SW50UmVjdChmaWx0ZXJSZXBhaW50UmVjdCkpOworICAgIEdyYXBoaWNzQ29udGV4dCogZmlsdGVy
Q29udGV4dCA9IHBhaW50aW5nRmlsdGVycy0+YmVnaW5GaWx0ZXJFZmZlY3QoZGVzdGluYXRpb25D
b250ZXh0LCByZW5kZXJlcigpLCBlbmNsb3NpbmdJbnRSZWN0KHJvb3RSZWxhdGl2ZUJvdW5kcyks
IGVuY2xvc2luZ0ludFJlY3QocGFpbnRpbmdJbmZvLnBhaW50RGlydHlSZWN0KSwgZW5jbG9zaW5n
SW50UmVjdChmaWx0ZXJSZXBhaW50UmVjdCkpOwogICAgIGlmICghZmlsdGVyQ29udGV4dCkKICAg
ICAgICAgcmV0dXJuIG51bGxwdHI7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJMYXllckZpbHRlcnMuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlckxheWVyRmlsdGVycy5jcHAKaW5kZXggMjUwYTdkNWMwYmFhMGFjNzQxYTkwYzgxOGI2MWEw
NWY5NWI5NjRhNC4uZmQ0N2Q3Mjk3Y2U3YWMwZDkxMDAxYjlkZWEzNWZiNGJlZjk3YjA3YiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyRmlsdGVycy5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyRmlsdGVycy5jcHAKQEAg
LTExOCwyMyArMTE4LDExIEBAIHZvaWQgUmVuZGVyTGF5ZXJGaWx0ZXJzOjpyZW1vdmVSZWZlcmVu
Y2VGaWx0ZXJDbGllbnRzKCkKIAogdm9pZCBSZW5kZXJMYXllckZpbHRlcnM6OmJ1aWxkRmlsdGVy
KFJlbmRlckVsZW1lbnQmIHJlbmRlcmVyLCBmbG9hdCBzY2FsZUZhY3RvciwgUmVuZGVyaW5nTW9k
ZSByZW5kZXJpbmdNb2RlKQogewotICAgIGlmICghbV9maWx0ZXIpIHsKLSAgICAgICAgbV9maWx0
ZXIgPSBDU1NGaWx0ZXI6OmNyZWF0ZSgpOwotICAgICAgICBtX2ZpbHRlci0+c2V0RmlsdGVyU2Nh
bGUoc2NhbGVGYWN0b3IpOwotICAgICAgICBtX2ZpbHRlci0+c2V0UmVuZGVyaW5nTW9kZShyZW5k
ZXJpbmdNb2RlKTsKLSAgICB9IGVsc2UgaWYgKG1fZmlsdGVyLT5maWx0ZXJTY2FsZSgpICE9IHNj
YWxlRmFjdG9yKSB7Ci0gICAgICAgIG1fZmlsdGVyLT5zZXRGaWx0ZXJTY2FsZShzY2FsZUZhY3Rv
cik7Ci0gICAgICAgIG1fZmlsdGVyLT5jbGVhckludGVybWVkaWF0ZVJlc3VsdHMoKTsKLSAgICB9
Ci0KLSAgICAvLyBJZiB0aGUgZmlsdGVyIGZhaWxzIHRvIGJ1aWxkLCByZW1vdmUgaXQgZnJvbSB0
aGUgbGF5ZXIuIEl0IHdpbGwgc3RpbGwgYXR0ZW1wdCB0bwotICAgIC8vIGdvIHRocm91Z2ggcmVn
dWxhciBwcm9jZXNzaW5nIChlLmcuIGNvbXBvc2l0aW5nKSwgYnV0IG5ldmVyIGFwcGx5IGFueXRo
aW5nLgogICAgIC8vIEZJWE1FOiB0aGlzIHJlYnVpbGRzIHRoZSBlbnRpcmUgZWZmZWN0cyBjaGFp
biBldmVuIGlmIHRoZSBmaWx0ZXIgc3R5bGUgZGlkbid0IGNoYW5nZS4KLSAgICBpZiAoIW1fZmls
dGVyLT5idWlsZChyZW5kZXJlciwgcmVuZGVyZXIuc3R5bGUoKS5maWx0ZXIoKSwgRmlsdGVyQ29u
c3VtZXI6OkZpbHRlclByb3BlcnR5KSkKLSAgICAgICAgbV9maWx0ZXIgPSBudWxscHRyOworICAg
IG1fZmlsdGVyID0gQ1NTRmlsdGVyOjpjcmVhdGUocmVuZGVyZXIuc3R5bGUoKS5maWx0ZXIoKSwg
cmVuZGVyaW5nTW9kZSwgc2NhbGVGYWN0b3IpOwogfQogCi1HcmFwaGljc0NvbnRleHQqIFJlbmRl
ckxheWVyRmlsdGVyczo6YmVnaW5GaWx0ZXJFZmZlY3QoR3JhcGhpY3NDb250ZXh0JiBkZXN0aW5h
dGlvbkNvbnRleHQsIGNvbnN0IExheW91dFJlY3QmIGZpbHRlckJveFJlY3QsIGNvbnN0IExheW91
dFJlY3QmIGRpcnR5UmVjdCwgY29uc3QgTGF5b3V0UmVjdCYgbGF5ZXJSZXBhaW50UmVjdCkKK0dy
YXBoaWNzQ29udGV4dCogUmVuZGVyTGF5ZXJGaWx0ZXJzOjpiZWdpbkZpbHRlckVmZmVjdChHcmFw
aGljc0NvbnRleHQmIGRlc3RpbmF0aW9uQ29udGV4dCwgUmVuZGVyRWxlbWVudCYgcmVuZGVyZXIs
IGNvbnN0IExheW91dFJlY3QmIGZpbHRlckJveFJlY3QsIGNvbnN0IExheW91dFJlY3QmIGRpcnR5
UmVjdCwgY29uc3QgTGF5b3V0UmVjdCYgbGF5ZXJSZXBhaW50UmVjdCkKIHsKICAgICBpZiAoIW1f
ZmlsdGVyKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKQEAgLTE0NSw2ICsxMzMsMTMgQEAgR3Jh
cGhpY3NDb250ZXh0KiBSZW5kZXJMYXllckZpbHRlcnM6OmJlZ2luRmlsdGVyRWZmZWN0KEdyYXBo
aWNzQ29udGV4dCYgZGVzdGluYXQKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKICAgICBib29s
IGhhc1VwZGF0ZWRCYWNraW5nU3RvcmUgPSBmaWx0ZXIudXBkYXRlQmFja2luZ1N0b3JlUmVjdChm
aWx0ZXJTb3VyY2VSZWN0KTsKKyAgICBpZiAoaGFzVXBkYXRlZEJhY2tpbmdTdG9yZSB8fCAhbV9m
aWx0ZXItPmxhc3RFZmZlY3QoKSkgeworICAgICAgICAvLyBJZiB0aGUgZmlsdGVyIGZhaWxzIHRv
IGJ1aWxkLCByZW1vdmUgaXQgZnJvbSB0aGUgbGF5ZXIuIEl0IHdpbGwgc3RpbGwgYXR0ZW1wdCB0
bworICAgICAgICAvLyBnbyB0aHJvdWdoIHJlZ3VsYXIgcHJvY2Vzc2luZyAoZS5nLiBjb21wb3Np
dGluZyksIGJ1dCBuZXZlciBhcHBseSBhbnl0aGluZy4KKyAgICAgICAgaWYgKCFtX2ZpbHRlci0+
YnVpbGQocmVuZGVyZXIsIHJlbmRlcmVyLnN0eWxlKCkuZmlsdGVyKCksIEZpbHRlckNvbnN1bWVy
OjpGaWx0ZXJQcm9wZXJ0eSkpCisgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICB9Cisg
ICAgCiAgICAgaWYgKCFmaWx0ZXIuaGFzRmlsdGVyVGhhdE1vdmVzUGl4ZWxzKCkpCiAgICAgICAg
IG1fcmVwYWludFJlY3QgPSBkaXJ0eVJlY3Q7CiAgICAgZWxzZSB7CkBAIC0xNTksOCArMTU0LDYg
QEAgR3JhcGhpY3NDb250ZXh0KiBSZW5kZXJMYXllckZpbHRlcnM6OmJlZ2luRmlsdGVyRWZmZWN0
KEdyYXBoaWNzQ29udGV4dCYgZGVzdGluYXQKICAgICBtX3BhaW50T2Zmc2V0ID0gZmlsdGVyU291
cmNlUmVjdC5sb2NhdGlvbigpOwogICAgIHJlc2V0RGlydHlTb3VyY2VSZWN0KCk7CiAKLSAgICBm
aWx0ZXIuZGV0ZXJtaW5lRmlsdGVyUHJpbWl0aXZlU3VicmVnaW9uKCk7Ci0KICAgICBmaWx0ZXIu
YWxsb2NhdGVCYWNraW5nU3RvcmVJZk5lZWRlZChkZXN0aW5hdGlvbkNvbnRleHQpOwogICAgIGF1
dG8qIHNvdXJjZUdyYXBoaWNzQ29udGV4dCA9IGZpbHRlci5pbnB1dENvbnRleHQoKTsKICAgICBp
ZiAoIXNvdXJjZUdyYXBoaWNzQ29udGV4dCB8fCBmaWx0ZXIuZmlsdGVyUmVnaW9uKCkuaXNFbXB0
eSgpIHx8IEltYWdlQnVmZmVyOjpzaXplTmVlZHNDbGFtcGluZyhmaWx0ZXIuZmlsdGVyUmVnaW9u
KCkuc2l6ZSgpKSkKQEAgLTE4NCwxNCArMTc3LDE3IEBAIHZvaWQgUmVuZGVyTGF5ZXJGaWx0ZXJz
OjphcHBseUZpbHRlckVmZmVjdChHcmFwaGljc0NvbnRleHQmIGRlc3RpbmF0aW9uQ29udGV4dCkK
ICAgICBhdXRvJiBmaWx0ZXIgPSAqbV9maWx0ZXI7CiAgICAgZmlsdGVyLmlucHV0Q29udGV4dCgp
LT5yZXN0b3JlKCk7CiAKLSAgICBmaWx0ZXIuYXBwbHkoKTsKKyAgICBmaWx0ZXIuYXBwbHlGaWx0
ZXIoKTsKIAogICAgIC8vIEdldCB0aGUgZmlsdGVyZWQgb3V0cHV0IGFuZCBkcmF3IGl0IGluIHBs
YWNlLgogICAgIExheW91dFJlY3QgZGVzdFJlY3QgPSBmaWx0ZXIub3V0cHV0UmVjdCgpOwogICAg
IGRlc3RSZWN0Lm1vdmUobV9wYWludE9mZnNldC54KCksIG1fcGFpbnRPZmZzZXQueSgpKTsKIAot
ICAgIGlmIChhdXRvKiBvdXRwdXRCdWZmZXIgPSBmaWx0ZXIub3V0cHV0KCkpCisgICAgaWYgKGF1
dG8qIG91dHB1dEJ1ZmZlciA9IGZpbHRlci5vdXRwdXQoKSkgeworICAgICAgICBkZXN0aW5hdGlv
bkNvbnRleHQuc2NhbGUoeyAxIC8gZmlsdGVyLmZpbHRlclNjYWxlKCkud2lkdGgoKSwgMSAvIGZp
bHRlci5maWx0ZXJTY2FsZSgpLmhlaWdodCgpIH0pOwogICAgICAgICBkZXN0aW5hdGlvbkNvbnRl
eHQuZHJhd0ltYWdlQnVmZmVyKCpvdXRwdXRCdWZmZXIsIHNuYXBSZWN0VG9EZXZpY2VQaXhlbHMo
ZGVzdFJlY3QsIG1fbGF5ZXIucmVuZGVyZXIoKS5kb2N1bWVudCgpLmRldmljZVNjYWxlRmFjdG9y
KCkpKTsKKyAgICAgICAgZGVzdGluYXRpb25Db250ZXh0LnNjYWxlKGZpbHRlci5maWx0ZXJTY2Fs
ZSgpKTsKKyAgICB9CiAKICAgICBmaWx0ZXIuY2xlYXJJbnRlcm1lZGlhdGVSZXN1bHRzKCk7CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllckZpbHRlcnMu
aCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllckZpbHRlcnMuaAppbmRleCAz
ZGExNDBhNWM4OGYxNTUzMTkwYjcwMDNkN2U3ODQ0YzkxOTQ1YmY3Li4zYTc0OTk1ZjFmODRiZDk3
M2VkMmI4OGQzMDQzOTdiNGM0NGRhMDM3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyTGF5ZXJGaWx0ZXJzLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlckxheWVyRmlsdGVycy5oCkBAIC02Myw3ICs2Myw3IEBAIHB1YmxpYzoKICAgICAvLyBQ
ZXIgcmVuZGVyCiAgICAgTGF5b3V0UmVjdCByZXBhaW50UmVjdCgpIGNvbnN0IHsgcmV0dXJuIG1f
cmVwYWludFJlY3Q7IH0KIAotICAgIEdyYXBoaWNzQ29udGV4dCogYmVnaW5GaWx0ZXJFZmZlY3Qo
R3JhcGhpY3NDb250ZXh0JiBkZXN0aW5hdGlvbkNvbnRleHQsIGNvbnN0IExheW91dFJlY3QmIGZp
bHRlckJveFJlY3QsIGNvbnN0IExheW91dFJlY3QmIGRpcnR5UmVjdCwgY29uc3QgTGF5b3V0UmVj
dCYgbGF5ZXJSZXBhaW50UmVjdCk7CisgICAgR3JhcGhpY3NDb250ZXh0KiBiZWdpbkZpbHRlckVm
ZmVjdChHcmFwaGljc0NvbnRleHQmIGRlc3RpbmF0aW9uQ29udGV4dCwgUmVuZGVyRWxlbWVudCYs
IGNvbnN0IExheW91dFJlY3QmIGZpbHRlckJveFJlY3QsIGNvbnN0IExheW91dFJlY3QmIGRpcnR5
UmVjdCwgY29uc3QgTGF5b3V0UmVjdCYgbGF5ZXJSZXBhaW50UmVjdCk7CiAgICAgdm9pZCBhcHBs
eUZpbHRlckVmZmVjdChHcmFwaGljc0NvbnRleHQmIGRlc3RpbmF0aW9uQ29udGV4dCk7CiAKIHBy
aXZhdGU6CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNW
R1Jlc291cmNlRmlsdGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVy
U1ZHUmVzb3VyY2VGaWx0ZXIuY3BwCmluZGV4IDE5NTA5ZDk3MThhZmYxMTBmODQxZWM0OTc2Zjk3
ZmIxYTkzNGQ4YTUuLmJlNmFmNzMzNTJhMWE2M2RhMzg3NWJjODcwNzkwNmJkZmM1ZjM0MmIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VG
aWx0ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVz
b3VyY2VGaWx0ZXIuY3BwCkBAIC04Miw0MCArODIsNiBAQCB2b2lkIFJlbmRlclNWR1Jlc291cmNl
RmlsdGVyOjpyZW1vdmVDbGllbnRGcm9tQ2FjaGUoUmVuZGVyRWxlbWVudCYgY2xpZW50LCBib29s
CiAgICAgbWFya0NsaWVudEZvckludmFsaWRhdGlvbihjbGllbnQsIG1hcmtGb3JJbnZhbGlkYXRp
b24gPyBCb3VuZGFyaWVzSW52YWxpZGF0aW9uIDogUGFyZW50T25seUludmFsaWRhdGlvbik7CiB9
CiAKLXN0ZDo6dW5pcXVlX3B0cjxTVkdGaWx0ZXJCdWlsZGVyPiBSZW5kZXJTVkdSZXNvdXJjZUZp
bHRlcjo6YnVpbGRQcmltaXRpdmVzKFNWR0ZpbHRlciYgZmlsdGVyKSBjb25zdAotewotICAgIHN0
YXRpYyBjb25zdCB1bnNpZ25lZCBtYXhDb3VudENoaWxkTm9kZXMgPSAyMDA7Ci0gICAgaWYgKGZp
bHRlckVsZW1lbnQoKS5jb3VudENoaWxkTm9kZXMoKSA+IG1heENvdW50Q2hpbGROb2RlcykKLSAg
ICAgICAgcmV0dXJuIG51bGxwdHI7Ci0KLSAgICBGbG9hdFJlY3QgdGFyZ2V0Qm91bmRpbmdCb3gg
PSBmaWx0ZXIudGFyZ2V0Qm91bmRpbmdCb3goKTsKLQotICAgIC8vIEFkZCBlZmZlY3RzIHRvIHRo
ZSBidWlsZGVyCi0gICAgYXV0byBidWlsZGVyID0gbWFrZVVuaXF1ZTxTVkdGaWx0ZXJCdWlsZGVy
PihTb3VyY2VHcmFwaGljOjpjcmVhdGUoZmlsdGVyKSk7Ci0gICAgYnVpbGRlci0+c2V0UHJpbWl0
aXZlVW5pdHMoZmlsdGVyRWxlbWVudCgpLnByaW1pdGl2ZVVuaXRzKCkpOwotICAgIGJ1aWxkZXIt
PnNldFRhcmdldEJvdW5kaW5nQm94KHRhcmdldEJvdW5kaW5nQm94KTsKLSAgICAKLSAgICBmb3Ig
KGF1dG8mIGVsZW1lbnQgOiBjaGlsZHJlbk9mVHlwZTxTVkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFy
ZEF0dHJpYnV0ZXM+KGZpbHRlckVsZW1lbnQoKSkpIHsKLSAgICAgICAgYXV0byBlZmZlY3QgPSBl
bGVtZW50LmJ1aWxkKGJ1aWxkZXIuZ2V0KCksIGZpbHRlcik7Ci0gICAgICAgIGlmICghZWZmZWN0
KSB7Ci0gICAgICAgICAgICBidWlsZGVyLT5jbGVhckVmZmVjdHMoKTsKLSAgICAgICAgICAgIHJl
dHVybiBudWxscHRyOwotICAgICAgICB9Ci0gICAgICAgIGJ1aWxkZXItPmFwcGVuZEVmZmVjdFRv
RWZmZWN0UmVmZXJlbmNlcyhlZmZlY3QuY29weVJlZigpLCBlbGVtZW50LnJlbmRlcmVyKCkpOwot
ICAgICAgICBlbGVtZW50LnNldFN0YW5kYXJkQXR0cmlidXRlcyhlZmZlY3QuZ2V0KCkpOwotICAg
ICAgICBlZmZlY3QtPnNldEVmZmVjdEJvdW5kYXJpZXMoU1ZHTGVuZ3RoQ29udGV4dDo6cmVzb2x2
ZVJlY3RhbmdsZTxTVkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXM+KCZlbGVtZW50
LCBmaWx0ZXJFbGVtZW50KCkucHJpbWl0aXZlVW5pdHMoKSwgdGFyZ2V0Qm91bmRpbmdCb3gpKTsK
LSAgICAgICAgaWYgKGVsZW1lbnQucmVuZGVyZXIoKSkgewotI2lmIEVOQUJMRShERVNUSU5BVElP
Tl9DT0xPUl9TUEFDRV9MSU5FQVJfU1JHQikKLSAgICAgICAgICAgIGVmZmVjdC0+c2V0T3BlcmF0
aW5nQ29sb3JTcGFjZShlbGVtZW50LnJlbmRlcmVyKCktPnN0eWxlKCkuc3ZnU3R5bGUoKS5jb2xv
ckludGVycG9sYXRpb25GaWx0ZXJzKCkgPT0gQ29sb3JJbnRlcnBvbGF0aW9uOjpMaW5lYXJSR0Ig
PyBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OkxpbmVhclNSR0IoKSA6IERlc3RpbmF0aW9uQ29sb3JT
cGFjZTo6U1JHQigpKTsKLSNlbHNlCi0gICAgICAgICAgICBlZmZlY3QtPnNldE9wZXJhdGluZ0Nv
bG9yU3BhY2UoRGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdCKCkpOwotI2VuZGlmCi0gICAgICAg
IH0KLSAgICAgICAgYnVpbGRlci0+YWRkKGVsZW1lbnQucmVzdWx0KCksIFdURk1vdmUoZWZmZWN0
KSk7Ci0gICAgfQotICAgIHJldHVybiBidWlsZGVyOwotfQotCiBib29sIFJlbmRlclNWR1Jlc291
cmNlRmlsdGVyOjphcHBseVJlc291cmNlKFJlbmRlckVsZW1lbnQmIHJlbmRlcmVyLCBjb25zdCBS
ZW5kZXJTdHlsZSYsIEdyYXBoaWNzQ29udGV4dComIGNvbnRleHQsIE9wdGlvblNldDxSZW5kZXJT
VkdSZXNvdXJjZU1vZGU+IHJlc291cmNlTW9kZSkKIHsKICAgICBBU1NFUlQoY29udGV4dCk7CkBA
IC0xNDMsNDUgKzEwOSwzNiBAQCBib29sIFJlbmRlclNWR1Jlc291cmNlRmlsdGVyOjphcHBseVJl
c291cmNlKFJlbmRlckVsZW1lbnQmIHJlbmRlcmVyLCBjb25zdCBSZW5kZQogICAgICAgICByZXR1
cm4gZmFsc2U7CiAKICAgICAvLyBFbGltaW5hdGUgc2hlYXIgb2YgdGhlIGFic29sdXRlIHRyYW5z
Zm9ybWF0aW9uIG1hdHJpeCwgdG8gYmUgYWJsZSB0byBwcm9kdWNlIHVuc2hlYXJlZCB0aWxlIGlt
YWdlcyBmb3IgZmVUaWxlLgotICAgIGZpbHRlckRhdGEtPnNoZWFyRnJlZUFic29sdXRlVHJhbnNm
b3JtID0gQWZmaW5lVHJhbnNmb3JtKGFic29sdXRlVHJhbnNmb3JtLnhTY2FsZSgpLCAwLCAwLCBh
YnNvbHV0ZVRyYW5zZm9ybS55U2NhbGUoKSwgMCwgMCk7CisgICAgRmxvYXRTaXplIGZpbHRlclNj
YWxlKGFic29sdXRlVHJhbnNmb3JtLnhTY2FsZSgpLCBhYnNvbHV0ZVRyYW5zZm9ybS55U2NhbGUo
KSk7CiAKICAgICAvLyBEZXRlcm1pbmUgYWJzb2x1dGUgYm91bmRhcmllcyBvZiB0aGUgZmlsdGVy
IGFuZCB0aGUgZHJhd2luZyByZWdpb24uCiAgICAgZmlsdGVyRGF0YS0+ZHJhd2luZ1JlZ2lvbiA9
IHJlbmRlcmVyLnN0cm9rZUJvdW5kaW5nQm94KCk7CiAgICAgZmlsdGVyRGF0YS0+ZHJhd2luZ1Jl
Z2lvbi5pbnRlcnNlY3QoZmlsdGVyRGF0YS0+Ym91bmRhcmllcyk7Ci0gICAgRmxvYXRSZWN0IGFi
c29sdXRlRHJhd2luZ1JlZ2lvbiA9IGZpbHRlckRhdGEtPnNoZWFyRnJlZUFic29sdXRlVHJhbnNm
b3JtLm1hcFJlY3QoZmlsdGVyRGF0YS0+ZHJhd2luZ1JlZ2lvbik7Ci0KLSAgICAvLyBDcmVhdGUg
dGhlIFNWR0ZpbHRlciBvYmplY3QuCi0gICAgYm9vbCBwcmltaXRpdmVCb3VuZGluZ0JveE1vZGUg
PSBmaWx0ZXJFbGVtZW50KCkucHJpbWl0aXZlVW5pdHMoKSA9PSBTVkdVbml0VHlwZXM6OlNWR19V
TklUX1RZUEVfT0JKRUNUQk9VTkRJTkdCT1g7Ci0gICAgZmlsdGVyRGF0YS0+ZmlsdGVyID0gU1ZH
RmlsdGVyOjpjcmVhdGUoZmlsdGVyRGF0YS0+c2hlYXJGcmVlQWJzb2x1dGVUcmFuc2Zvcm0sIGFi
c29sdXRlRHJhd2luZ1JlZ2lvbiwgdGFyZ2V0Qm91bmRpbmdCb3gsIGZpbHRlckRhdGEtPmJvdW5k
YXJpZXMsIHByaW1pdGl2ZUJvdW5kaW5nQm94TW9kZSk7Ci0KLSAgICAvLyBDcmVhdGUgYWxsIHJl
bGV2YW50IGZpbHRlciBwcmltaXRpdmVzLgotICAgIGZpbHRlckRhdGEtPmJ1aWxkZXIgPSBidWls
ZFByaW1pdGl2ZXMoKmZpbHRlckRhdGEtPmZpbHRlcik7Ci0gICAgaWYgKCFmaWx0ZXJEYXRhLT5i
dWlsZGVyKQotICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAgICAvLyBEZXRlcm1pbmUgc2NhbGUg
ZmFjdG9yIGZvciBmaWx0ZXIuIFRoZSBzaXplIG9mIGludGVybWVkaWF0ZSBJbWFnZUJ1ZmZlcnMg
c2hvdWxkbid0IGJlIGJpZ2dlciB0aGFuIGtNYXhGaWx0ZXJTaXplLgotICAgIEZsb2F0UmVjdCB0
ZW1wU291cmNlUmVjdCA9IGFic29sdXRlRHJhd2luZ1JlZ2lvbjsKLSAgICBGbG9hdFNpemUgc2Nh
bGUoMSwgMSk7Ci0gICAgSW1hZ2VCdWZmZXI6OnNpemVOZWVkc0NsYW1waW5nKHRlbXBTb3VyY2VS
ZWN0LnNpemUoKSwgc2NhbGUpOwotICAgIHRlbXBTb3VyY2VSZWN0LnNjYWxlKHNjYWxlLndpZHRo
KCksIHNjYWxlLmhlaWdodCgpKTsKLQotICAgIC8vIFNldCB0aGUgc2NhbGUgbGV2ZWwgaW4gU1ZH
RmlsdGVyLgotICAgIGZpbHRlckRhdGEtPmZpbHRlci0+c2V0RmlsdGVyUmVzb2x1dGlvbihzY2Fs
ZSk7CisgICAgRmxvYXRSZWN0IGFic29sdXRlRHJhd2luZ1JlZ2lvbiA9IGZpbHRlckRhdGEtPmRy
YXdpbmdSZWdpb247CisgICAgYWJzb2x1dGVEcmF3aW5nUmVnaW9uLnNjYWxlKGZpbHRlclNjYWxl
KTsKKyAgICBJbWFnZUJ1ZmZlcjo6c2l6ZU5lZWRzQ2xhbXBpbmcoYWJzb2x1dGVEcmF3aW5nUmVn
aW9uLnNpemUoKSwgZmlsdGVyU2NhbGUpOwogCi0gICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIG1h
eFRvdGFsT2ZFZmZlY3RJbnB1dHMgPSAxMDA7Ci0gICAgRmlsdGVyRWZmZWN0KiBsYXN0RWZmZWN0
ID0gZmlsdGVyRGF0YS0+YnVpbGRlci0+bGFzdEVmZmVjdCgpOwotICAgIGlmICghbGFzdEVmZmVj
dCB8fCBsYXN0RWZmZWN0LT50b3RhbE51bWJlck9mRWZmZWN0SW5wdXRzKCkgPiBtYXhUb3RhbE9m
RWZmZWN0SW5wdXRzKQorICAgIC8vIENyZWF0ZSB0aGUgU1ZHRmlsdGVyIG9iamVjdC4KKyAgICBm
aWx0ZXJEYXRhLT5idWlsZGVyID0gbWFrZVVuaXF1ZTxTVkdGaWx0ZXJCdWlsZGVyPigpOworICAg
IGZpbHRlckRhdGEtPmZpbHRlciA9IFNWR0ZpbHRlcjo6Y3JlYXRlKGZpbHRlckVsZW1lbnQoKSwg
KmZpbHRlckRhdGEtPmJ1aWxkZXIsIGZpbHRlclNjYWxlLCBhYnNvbHV0ZURyYXdpbmdSZWdpb24s
IGZpbHRlckRhdGEtPmJvdW5kYXJpZXMsIHRhcmdldEJvdW5kaW5nQm94KTsKKyAgICBpZiAoIWZp
bHRlckRhdGEtPmZpbHRlcikKICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIAorICAgIGF1dG8g
bGFzdEVmZmVjdCA9IGZpbHRlckRhdGEtPmJ1aWxkZXItPmxhc3RFZmZlY3QoKTsKKyAgICBBU1NF
UlQobGFzdEVmZmVjdCk7CiAKICAgICBMT0dfV0lUSF9TVFJFQU0oRmlsdGVycywgc3RyZWFtIDw8
ICJSZW5kZXJTVkdSZXNvdXJjZUZpbHRlcjo6YXBwbHlSZXNvdXJjZVxuIiA8PCAqZmlsdGVyRGF0
YS0+YnVpbGRlci0+bGFzdEVmZmVjdCgpKTsKIAotICAgIGxhc3RFZmZlY3QtPmRldGVybWluZUZp
bHRlclByaW1pdGl2ZVN1YnJlZ2lvbigpOworICAgIGxhc3RFZmZlY3QtPmRldGVybWluZUZpbHRl
clByaW1pdGl2ZVN1YnJlZ2lvbigqZmlsdGVyRGF0YS0+ZmlsdGVyKTsKICAgICBGbG9hdFJlY3Qg
c3ViUmVnaW9uID0gbGFzdEVmZmVjdC0+bWF4RWZmZWN0UmVjdCgpOworCiAgICAgLy8gQXQgbGVh
c3Qgb25lIEZpbHRlckVmZmVjdCBoYXMgYSB0b28gYmlnIGltYWdlIHNpemUsCiAgICAgLy8gcmVj
YWxjdWxhdGUgdGhlIGVmZmVjdCBzaXplcyB3aXRoIG5ldyBzY2FsZSBmYWN0b3JzLgotICAgIGlm
IChJbWFnZUJ1ZmZlcjo6c2l6ZU5lZWRzQ2xhbXBpbmcoc3ViUmVnaW9uLnNpemUoKSwgc2NhbGUp
KSB7Ci0gICAgICAgIGZpbHRlckRhdGEtPmZpbHRlci0+c2V0RmlsdGVyUmVzb2x1dGlvbihzY2Fs
ZSk7Ci0gICAgICAgIGxhc3RFZmZlY3QtPmRldGVybWluZUZpbHRlclByaW1pdGl2ZVN1YnJlZ2lv
bigpOworICAgIGlmIChJbWFnZUJ1ZmZlcjo6c2l6ZU5lZWRzQ2xhbXBpbmcoc3ViUmVnaW9uLnNp
emUoKSwgZmlsdGVyU2NhbGUpKSB7CisgICAgICAgIGZpbHRlckRhdGEtPmZpbHRlci0+c2V0Rmls
dGVyU2NhbGUoZmlsdGVyU2NhbGUpOworICAgICAgICBsYXN0RWZmZWN0LT5kZXRlcm1pbmVGaWx0
ZXJQcmltaXRpdmVTdWJyZWdpb24oKmZpbHRlckRhdGEtPmZpbHRlcik7CiAgICAgfQogCiAgICAg
Ly8gSWYgdGhlIGRyYXdpbmdSZWdpb24gaXMgZW1wdHksIHdlIGhhdmUgc29tZXRoaW5nIGxpa2Ug
PGcgZmlsdGVyPSIuLiIvPi4KQEAgLTE5NCw5ICsxNTEsNyBAQCBib29sIFJlbmRlclNWR1Jlc291
cmNlRmlsdGVyOjphcHBseVJlc291cmNlKFJlbmRlckVsZW1lbnQmIHJlbmRlcmVyLCBjb25zdCBS
ZW5kZQogICAgIH0KIAogICAgIC8vIENoYW5nZSB0aGUgY29vcmRpbmF0ZSB0cmFuc2Zvcm1hdGlv
biBhcHBsaWVkIHRvIHRoZSBmaWx0ZXJlZCBlbGVtZW50IHRvIHJlZmxlY3QgdGhlIHJlc29sdXRp
b24gb2YgdGhlIGZpbHRlci4KLSAgICBBZmZpbmVUcmFuc2Zvcm0gZWZmZWN0aXZlVHJhbnNmb3Jt
OwotICAgIGVmZmVjdGl2ZVRyYW5zZm9ybS5zY2FsZShzY2FsZS53aWR0aCgpLCBzY2FsZS5oZWln
aHQoKSk7Ci0gICAgZWZmZWN0aXZlVHJhbnNmb3JtLm11bHRpcGx5KGZpbHRlckRhdGEtPnNoZWFy
RnJlZUFic29sdXRlVHJhbnNmb3JtKTsKKyAgICBBZmZpbmVUcmFuc2Zvcm0gZWZmZWN0aXZlVHJh
bnNmb3JtID0gQWZmaW5lVHJhbnNmb3JtKGZpbHRlclNjYWxlLndpZHRoKCksIDAsIDAsIGZpbHRl
clNjYWxlLmhlaWdodCgpLCAwLCAwKTsKIAogICAgIGF1dG8gcmVuZGVyaW5nTW9kZSA9IHJlbmRl
cmVyLnNldHRpbmdzKCkuYWNjZWxlcmF0ZWRGaWx0ZXJzRW5hYmxlZCgpID8gUmVuZGVyaW5nTW9k
ZTo6QWNjZWxlcmF0ZWQgOiBSZW5kZXJpbmdNb2RlOjpVbmFjY2VsZXJhdGVkOwogI2lmIEVOQUJM
RShERVNUSU5BVElPTl9DT0xPUl9TUEFDRV9MSU5FQVJfU1JHQikKQEAgLTI2OSw3ICsyMjQsNyBA
QCB2b2lkIFJlbmRlclNWR1Jlc291cmNlRmlsdGVyOjpwb3N0QXBwbHlSZXNvdXJjZShSZW5kZXJF
bGVtZW50JiByZW5kZXJlciwgR3JhcGhpYwogICAgICAgICBicmVhazsKICAgICB9CiAKLSAgICBG
aWx0ZXJFZmZlY3QqIGxhc3RFZmZlY3QgPSBmaWx0ZXJEYXRhLmJ1aWxkZXItPmxhc3RFZmZlY3Qo
KTsKKyAgICBhdXRvIGxhc3RFZmZlY3QgPSBmaWx0ZXJEYXRhLmZpbHRlci0+bGFzdEVmZmVjdCgp
OwogCiAgICAgaWYgKGxhc3RFZmZlY3QgJiYgIWZpbHRlckRhdGEuYm91bmRhcmllcy5pc0VtcHR5
KCkgJiYgIWxhc3RFZmZlY3QtPmZpbHRlclByaW1pdGl2ZVN1YnJlZ2lvbigpLmlzRW1wdHkoKSkg
ewogICAgICAgICAvLyBUaGlzIGlzIHRoZSByZWFsIGZpbHRlcmluZyBvZiB0aGUgb2JqZWN0LiBJ
dCBqdXN0IG5lZWRzIHRvIGJlIGNhbGxlZCBvbiB0aGUKQEAgLTI4MSw3ICsyMzYsNyBAQCB2b2lk
IFJlbmRlclNWR1Jlc291cmNlRmlsdGVyOjpwb3N0QXBwbHlSZXNvdXJjZShSZW5kZXJFbGVtZW50
JiByZW5kZXJlciwgR3JhcGhpYwogICAgICAgICAvLyBBbHdheXMgdHJ1ZSBpZiBmaWx0ZXJEYXRh
IGlzIGp1c3QgYnVpbHQgKGZpbHRlckRhdGEtPnN0YXRlID09IEZpbHRlckRhdGE6OkJ1aWx0KS4K
ICAgICAgICAgaWYgKCFsYXN0RWZmZWN0LT5oYXNSZXN1bHQoKSkgewogICAgICAgICAgICAgZmls
dGVyRGF0YS5zdGF0ZSA9IEZpbHRlckRhdGE6OkFwcGx5aW5nOwotICAgICAgICAgICAgbGFzdEVm
ZmVjdC0+YXBwbHkoKTsKKyAgICAgICAgICAgIGxhc3RFZmZlY3QtPmFwcGx5KCpmaWx0ZXJEYXRh
LmZpbHRlcik7CiAgICAgICAgICAgICBsYXN0RWZmZWN0LT5jb3JyZWN0RmlsdGVyUmVzdWx0SWZO
ZWVkZWQoKTsKICAgICAgICAgICAgIGxhc3RFZmZlY3QtPnRyYW5zZm9ybVJlc3VsdENvbG9yU3Bh
Y2UoRGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdCKCkpOwogICAgICAgICB9CkBAIC0yODksMTMg
KzI0NCw5IEBAIHZvaWQgUmVuZGVyU1ZHUmVzb3VyY2VGaWx0ZXI6OnBvc3RBcHBseVJlc291cmNl
KFJlbmRlckVsZW1lbnQmIHJlbmRlcmVyLCBHcmFwaGljCiAKICAgICAgICAgSW1hZ2VCdWZmZXIq
IHJlc3VsdEltYWdlID0gbGFzdEVmZmVjdC0+aW1hZ2VCdWZmZXJSZXN1bHQoKTsKICAgICAgICAg
aWYgKHJlc3VsdEltYWdlKSB7Ci0gICAgICAgICAgICBjb250ZXh0LT5jb25jYXRDVE0oZmlsdGVy
RGF0YS5zaGVhckZyZWVBYnNvbHV0ZVRyYW5zZm9ybS5pbnZlcnNlKCkudmFsdWVfb3IoQWZmaW5l
VHJhbnNmb3JtKCkpKTsKLQotICAgICAgICAgICAgY29udGV4dC0+c2NhbGUoRmxvYXRTaXplKDEg
LyBmaWx0ZXJEYXRhLmZpbHRlci0+ZmlsdGVyUmVzb2x1dGlvbigpLndpZHRoKCksIDEgLyBmaWx0
ZXJEYXRhLmZpbHRlci0+ZmlsdGVyUmVzb2x1dGlvbigpLmhlaWdodCgpKSk7CisgICAgICAgICAg
ICBjb250ZXh0LT5zY2FsZShGbG9hdFNpemUoMSAvIGZpbHRlckRhdGEuZmlsdGVyLT5maWx0ZXJT
Y2FsZSgpLndpZHRoKCksIDEgLyBmaWx0ZXJEYXRhLmZpbHRlci0+ZmlsdGVyU2NhbGUoKS5oZWln
aHQoKSkpOwogICAgICAgICAgICAgY29udGV4dC0+ZHJhd0ltYWdlQnVmZmVyKCpyZXN1bHRJbWFn
ZSwgbGFzdEVmZmVjdC0+YWJzb2x1dGVQYWludFJlY3QoKSk7Ci0gICAgICAgICAgICBjb250ZXh0
LT5zY2FsZShmaWx0ZXJEYXRhLmZpbHRlci0+ZmlsdGVyUmVzb2x1dGlvbigpKTsKLQotICAgICAg
ICAgICAgY29udGV4dC0+Y29uY2F0Q1RNKGZpbHRlckRhdGEuc2hlYXJGcmVlQWJzb2x1dGVUcmFu
c2Zvcm0pOworICAgICAgICAgICAgY29udGV4dC0+c2NhbGUoZmlsdGVyRGF0YS5maWx0ZXItPmZp
bHRlclNjYWxlKCkpOwogICAgICAgICB9CiAgICAgfQogICAgIGZpbHRlckRhdGEuc291cmNlR3Jh
cGhpY0J1ZmZlciA9IG51bGxwdHI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvc3ZnL1NWR1JlbmRlclRyZWVBc1RleHQuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L3N2Zy9TVkdSZW5kZXJUcmVlQXNUZXh0LmNwcAppbmRleCBjNjUwMjFiZWUwMzU1NjVhYWIzMWM2
N2ZiOTMxOWY4OGU2MTgwN2M3Li42NGUzYWM1YWVhYzgwYWRmOWUyNmFiNGVmNmI4NWEyN2MyNTQy
ZDE3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1NWR1JlbmRlclRy
ZWVBc1RleHQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvU1ZHUmVuZGVy
VHJlZUFzVGV4dC5jcHAKQEAgLTQzMiwxMSArNDMyLDEzIEBAIHZvaWQgd3JpdGVTVkdSZXNvdXJj
ZUNvbnRhaW5lcihUZXh0U3RyZWFtJiB0cywgY29uc3QgUmVuZGVyU1ZHUmVzb3VyY2VDb250YWlu
ZXImCiAgICAgICAgIHRzIDw8ICJcbiI7CiAgICAgICAgIC8vIENyZWF0aW5nIGEgcGxhY2Vob2xk
ZXIgZmlsdGVyIHdoaWNoIGlzIHBhc3NlZCB0byB0aGUgYnVpbGRlci4KICAgICAgICAgRmxvYXRS
ZWN0IGR1bW15UmVjdDsKLSAgICAgICAgYXV0byBkdW1teUZpbHRlciA9IFNWR0ZpbHRlcjo6Y3Jl
YXRlKEFmZmluZVRyYW5zZm9ybSgpLCBkdW1teVJlY3QsIGR1bW15UmVjdCwgZHVtbXlSZWN0LCB0
cnVlKTsKLSAgICAgICAgaWYgKGF1dG8gYnVpbGRlciA9IGZpbHRlci5idWlsZFByaW1pdGl2ZXMo
ZHVtbXlGaWx0ZXIuZ2V0KCkpKSB7CisgICAgICAgIEZsb2F0U2l6ZSBkdW1teVNjYWxlKDEsIDEp
OworICAgICAgICBTVkdGaWx0ZXJCdWlsZGVyIGJ1aWxkZXI7CisgICAgICAgIGF1dG8gZHVtbXlG
aWx0ZXIgPSBTVkdGaWx0ZXI6OmNyZWF0ZShmaWx0ZXIuZmlsdGVyRWxlbWVudCgpLCBidWlsZGVy
LCBkdW1teVNjYWxlLCBkdW1teVJlY3QsIGR1bW15UmVjdCwgZHVtbXlSZWN0KTsKKyAgICAgICAg
aWYgKGR1bW15RmlsdGVyKSB7CiAgICAgICAgICAgICBUZXh0U3RyZWFtOjpJbmRlbnRTY29wZSBp
bmRlbnRTY29wZSh0cyk7CiAKLSAgICAgICAgICAgIGlmIChGaWx0ZXJFZmZlY3QqIGxhc3RFZmZl
Y3QgPSBidWlsZGVyLT5sYXN0RWZmZWN0KCkpCisgICAgICAgICAgICBpZiAoYXV0byBsYXN0RWZm
ZWN0ID0gZHVtbXlGaWx0ZXItPmxhc3RFZmZlY3QoKSkKICAgICAgICAgICAgICAgICBsYXN0RWZm
ZWN0LT5leHRlcm5hbFJlcHJlc2VudGF0aW9uKHRzKTsKICAgICAgICAgfQogICAgIH0gZWxzZSBp
ZiAocmVzb3VyY2UucmVzb3VyY2VUeXBlKCkgPT0gQ2xpcHBlclJlc291cmNlVHlwZSkgewpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFQmxlbmRFbGVtZW50LmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3N2Zy9TVkdGRUJsZW5kRWxlbWVudC5jcHAKaW5kZXggN2JjZjA0MTgwMGY3OTlm
MTE3NGNmZTA0YjgyMmQ2ZDA2NDMxZjY4Ni4uMDU0MGM4ZTQ0MDgyZDVjNjFmMDBmOGZiNzM1YzM2
MTgyZDEwZmE3ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFQmxlbmRFbGVt
ZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVCbGVuZEVsZW1lbnQuY3BwCkBA
IC0xMDAsMTkgKzEwMCwxNiBAQCB2b2lkIFNWR0ZFQmxlbmRFbGVtZW50OjpzdmdBdHRyaWJ1dGVD
aGFuZ2VkKGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0dHJOYW1lKQogICAgIFNWR0ZpbHRlclByaW1p
dGl2ZVN0YW5kYXJkQXR0cmlidXRlczo6c3ZnQXR0cmlidXRlQ2hhbmdlZChhdHRyTmFtZSk7CiB9
CiAKLVJlZlB0cjxGaWx0ZXJFZmZlY3Q+IFNWR0ZFQmxlbmRFbGVtZW50OjpidWlsZChTVkdGaWx0
ZXJCdWlsZGVyKiBmaWx0ZXJCdWlsZGVyLCBGaWx0ZXImIGZpbHRlcikgY29uc3QKK1JlZlB0cjxG
aWx0ZXJFZmZlY3Q+IFNWR0ZFQmxlbmRFbGVtZW50OjpidWlsZChTVkdGaWx0ZXJCdWlsZGVyJiBm
aWx0ZXJCdWlsZGVyKSBjb25zdAogewotICAgIGF1dG8gaW5wdXQxID0gZmlsdGVyQnVpbGRlci0+
Z2V0RWZmZWN0QnlJZChpbjEoKSk7Ci0gICAgYXV0byBpbnB1dDIgPSBmaWx0ZXJCdWlsZGVyLT5n
ZXRFZmZlY3RCeUlkKGluMigpKTsKKyAgICBhdXRvIGlucHV0MSA9IGZpbHRlckJ1aWxkZXIuZ2V0
RWZmZWN0QnlJZChpbjEoKSk7CisgICAgYXV0byBpbnB1dDIgPSBmaWx0ZXJCdWlsZGVyLmdldEVm
ZmVjdEJ5SWQoaW4yKCkpOwogCiAgICAgaWYgKCFpbnB1dDEgfHwgIWlucHV0MikKICAgICAgICAg
cmV0dXJuIG51bGxwdHI7CiAKLSAgICBhdXRvIGVmZmVjdCA9IEZFQmxlbmQ6OmNyZWF0ZShmaWx0
ZXIsIG1vZGUoKSk7Ci0gICAgRmlsdGVyRWZmZWN0VmVjdG9yJiBpbnB1dEVmZmVjdHMgPSBlZmZl
Y3QtPmlucHV0RWZmZWN0cygpOwotICAgIGlucHV0RWZmZWN0cy5yZXNlcnZlQ2FwYWNpdHkoMik7
Ci0gICAgaW5wdXRFZmZlY3RzLmFwcGVuZChpbnB1dDEpOwotICAgIGlucHV0RWZmZWN0cy5hcHBl
bmQoaW5wdXQyKTsgICAgCisgICAgYXV0byBlZmZlY3QgPSBGRUJsZW5kOjpjcmVhdGUobW9kZSgp
KTsKKyAgICBlZmZlY3QtPmlucHV0RWZmZWN0cygpID0geyBXVEZNb3ZlKGlucHV0MSksIFdURk1v
dmUoaW5wdXQyKSB9OwogICAgIHJldHVybiBlZmZlY3Q7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3N2Zy9TVkdGRUJsZW5kRWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NW
R0ZFQmxlbmRFbGVtZW50LmgKaW5kZXggOTAzN2NiMTIxZjkzNjdiNzg4ZDkyMTZlMGI5NDFmYzhi
MDZkZWM2Ni4uZWJhOWFiYjU4MzI4ZjRkYWJmMzQyOGI2YjE3ZGJmNTgyMzc2ODQwOCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFQmxlbmRFbGVtZW50LmgKKysrIGIvU291cmNl
L1dlYkNvcmUvc3ZnL1NWR0ZFQmxlbmRFbGVtZW50LmgKQEAgLTY5LDcgKzY5LDcgQEAgcHJpdmF0
ZToKICAgICB2b2lkIHBhcnNlQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmLCBjb25zdCBB
dG9tU3RyaW5nJikgb3ZlcnJpZGU7CiAgICAgdm9pZCBzdmdBdHRyaWJ1dGVDaGFuZ2VkKGNvbnN0
IFF1YWxpZmllZE5hbWUmKSBvdmVycmlkZTsKIAotICAgIFJlZlB0cjxGaWx0ZXJFZmZlY3Q+IGJ1
aWxkKFNWR0ZpbHRlckJ1aWxkZXIqLCBGaWx0ZXImKSBjb25zdCBvdmVycmlkZTsKKyAgICBSZWZQ
dHI8RmlsdGVyRWZmZWN0PiBidWlsZChTVkdGaWx0ZXJCdWlsZGVyJikgY29uc3Qgb3ZlcnJpZGU7
CiAgICAgYm9vbCBzZXRGaWx0ZXJFZmZlY3RBdHRyaWJ1dGUoRmlsdGVyRWZmZWN0KiwgY29uc3Qg
UXVhbGlmaWVkTmFtZSYgYXR0ck5hbWUpIG92ZXJyaWRlOwogCiAgICAgUHJvcGVydHlSZWdpc3Ry
eSBtX3Byb3BlcnR5UmVnaXN0cnkgeyAqdGhpcyB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvc3ZnL1NWR0ZFQ29sb3JNYXRyaXhFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9T
VkdGRUNvbG9yTWF0cml4RWxlbWVudC5jcHAKaW5kZXggMDUyNDg1NzhjMjc0YzhmYTJiM2UxZjI0
NGU0MzY3ODY4ZjQyYmE5Yy4uY2RlYmVmMThhMWZkY2JiOGYzZmIzNWZiODM4YWM2MDRjOWEyM2Q2
NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFQ29sb3JNYXRyaXhFbGVtZW50
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVDb2xvck1hdHJpeEVsZW1lbnQuY3Bw
CkBAIC0xMDAsOSArMTAwLDkgQEAgdm9pZCBTVkdGRUNvbG9yTWF0cml4RWxlbWVudDo6c3ZnQXR0
cmlidXRlQ2hhbmdlZChjb25zdCBRdWFsaWZpZWROYW1lJiBhdHRyTmFtZSkKICAgICBTVkdGaWx0
ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXM6OnN2Z0F0dHJpYnV0ZUNoYW5nZWQoYXR0ck5h
bWUpOwogfQogCi1SZWZQdHI8RmlsdGVyRWZmZWN0PiBTVkdGRUNvbG9yTWF0cml4RWxlbWVudDo6
YnVpbGQoU1ZHRmlsdGVyQnVpbGRlciogZmlsdGVyQnVpbGRlciwgRmlsdGVyJiBmaWx0ZXIpIGNv
bnN0CitSZWZQdHI8RmlsdGVyRWZmZWN0PiBTVkdGRUNvbG9yTWF0cml4RWxlbWVudDo6YnVpbGQo
U1ZHRmlsdGVyQnVpbGRlciYgZmlsdGVyQnVpbGRlcikgY29uc3QKIHsKLSAgICBhdXRvIGlucHV0
MSA9IGZpbHRlckJ1aWxkZXItPmdldEVmZmVjdEJ5SWQoaW4xKCkpOworICAgIGF1dG8gaW5wdXQx
ID0gZmlsdGVyQnVpbGRlci5nZXRFZmZlY3RCeUlkKGluMSgpKTsKIAogICAgIGlmICghaW5wdXQx
KQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKQEAgLTE0MSw4ICsxNDEsOCBAQCBSZWZQdHI8Rmls
dGVyRWZmZWN0PiBTVkdGRUNvbG9yTWF0cml4RWxlbWVudDo6YnVpbGQoU1ZHRmlsdGVyQnVpbGRl
ciogZmlsdGVyQnVpbAogICAgICAgICBmaWx0ZXJWYWx1ZXMuc2hyaW5rVG9GaXQoKTsKICAgICB9
CiAKLSAgICBhdXRvIGVmZmVjdCA9IEZFQ29sb3JNYXRyaXg6OmNyZWF0ZShmaWx0ZXIsIGZpbHRl
clR5cGUsIFdURk1vdmUoZmlsdGVyVmFsdWVzKSk7Ci0gICAgZWZmZWN0LT5pbnB1dEVmZmVjdHMo
KSA9IHsgaW5wdXQxIH07CisgICAgYXV0byBlZmZlY3QgPSBGRUNvbG9yTWF0cml4OjpjcmVhdGUo
ZmlsdGVyVHlwZSwgV1RGTW92ZShmaWx0ZXJWYWx1ZXMpKTsKKyAgICBlZmZlY3QtPmlucHV0RWZm
ZWN0cygpID0geyBXVEZNb3ZlKGlucHV0MSkgfTsKICAgICByZXR1cm4gZWZmZWN0OwogfQogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVDb2xvck1hdHJpeEVsZW1lbnQuaCBi
L1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRUNvbG9yTWF0cml4RWxlbWVudC5oCmluZGV4IDdhYjRh
YTQxODFlN2FiMTk4YjEyZTc3YmUyMDZiOWM1YzQxMDIzZmQuLjk3MDExYTA0MWU0OWExN2ZiNDk4
YTFmODQ2Zjg4MGRiZGQ2OTUyNDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdG
RUNvbG9yTWF0cml4RWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRUNvbG9y
TWF0cml4RWxlbWVudC5oCkBAIC04Niw3ICs4Niw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBzdmdB
dHRyaWJ1dGVDaGFuZ2VkKGNvbnN0IFF1YWxpZmllZE5hbWUmKSBvdmVycmlkZTsKIAogICAgIGJv
b2wgc2V0RmlsdGVyRWZmZWN0QXR0cmlidXRlKEZpbHRlckVmZmVjdCosIGNvbnN0IFF1YWxpZmll
ZE5hbWUmKSBvdmVycmlkZTsKLSAgICBSZWZQdHI8RmlsdGVyRWZmZWN0PiBidWlsZChTVkdGaWx0
ZXJCdWlsZGVyKiwgRmlsdGVyJikgY29uc3Qgb3ZlcnJpZGU7CisgICAgUmVmUHRyPEZpbHRlckVm
ZmVjdD4gYnVpbGQoU1ZHRmlsdGVyQnVpbGRlciYpIGNvbnN0IG92ZXJyaWRlOwogCiAgICAgUHJv
cGVydHlSZWdpc3RyeSBtX3Byb3BlcnR5UmVnaXN0cnkgeyAqdGhpcyB9OwogICAgIFJlZjxTVkdB
bmltYXRlZFN0cmluZz4gbV9pbjEgeyBTVkdBbmltYXRlZFN0cmluZzo6Y3JlYXRlKHRoaXMpIH07
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVDb21wb25lbnRUcmFuc2ZlckVs
ZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFQ29tcG9uZW50VHJhbnNmZXJFbGVt
ZW50LmNwcAppbmRleCA5MGE1NWI3ZWZmZjdhM2ZlNjA2YTllMDU3OWE3NmVkZTlmOTY4MDExLi4y
N2QxMmI1ZDA4ODNlYmYxZWFjMGFkYWIxMTEyZmVlZWJiMTFmNDUzIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9zdmcvU1ZHRkVDb21wb25lbnRUcmFuc2ZlckVsZW1lbnQuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3N2Zy9TVkdGRUNvbXBvbmVudFRyYW5zZmVyRWxlbWVudC5jcHAKQEAgLTYz
LDkgKzYzLDkgQEAgdm9pZCBTVkdGRUNvbXBvbmVudFRyYW5zZmVyRWxlbWVudDo6cGFyc2VBdHRy
aWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgbmFtZSwgY28KICAgICBTVkdGaWx0ZXJQcmltaXRp
dmVTdGFuZGFyZEF0dHJpYnV0ZXM6OnBhcnNlQXR0cmlidXRlKG5hbWUsIHZhbHVlKTsKIH0KIAot
UmVmUHRyPEZpbHRlckVmZmVjdD4gU1ZHRkVDb21wb25lbnRUcmFuc2ZlckVsZW1lbnQ6OmJ1aWxk
KFNWR0ZpbHRlckJ1aWxkZXIqIGZpbHRlckJ1aWxkZXIsIEZpbHRlciYgZmlsdGVyKSBjb25zdAor
UmVmUHRyPEZpbHRlckVmZmVjdD4gU1ZHRkVDb21wb25lbnRUcmFuc2ZlckVsZW1lbnQ6OmJ1aWxk
KFNWR0ZpbHRlckJ1aWxkZXImIGZpbHRlckJ1aWxkZXIpIGNvbnN0CiB7Ci0gICAgYXV0byBpbnB1
dDEgPSBmaWx0ZXJCdWlsZGVyLT5nZXRFZmZlY3RCeUlkKGluMSgpKTsKKyAgICBhdXRvIGlucHV0
MSA9IGZpbHRlckJ1aWxkZXIuZ2V0RWZmZWN0QnlJZChpbjEoKSk7CiAgICAgCiAgICAgaWYgKCFp
bnB1dDEpCiAgICAgICAgIHJldHVybiBudWxscHRyOwpAQCAtODYsOCArODYsOCBAQCBSZWZQdHI8
RmlsdGVyRWZmZWN0PiBTVkdGRUNvbXBvbmVudFRyYW5zZmVyRWxlbWVudDo6YnVpbGQoU1ZHRmls
dGVyQnVpbGRlciogZmlsdAogICAgICAgICAgICAgYWxwaGEgPSBkb3duY2FzdDxTVkdGRUZ1bmNB
RWxlbWVudD4oY2hpbGQpLnRyYW5zZmVyRnVuY3Rpb24oKTsKICAgICB9CiAgICAgCi0gICAgYXV0
byBlZmZlY3QgPSBGRUNvbXBvbmVudFRyYW5zZmVyOjpjcmVhdGUoZmlsdGVyLCByZWQsIGdyZWVu
LCBibHVlLCBhbHBoYSk7Ci0gICAgZWZmZWN0LT5pbnB1dEVmZmVjdHMoKSA9IHsgaW5wdXQxIH07
CisgICAgYXV0byBlZmZlY3QgPSBGRUNvbXBvbmVudFRyYW5zZmVyOjpjcmVhdGUocmVkLCBncmVl
biwgYmx1ZSwgYWxwaGEpOworICAgIGVmZmVjdC0+aW5wdXRFZmZlY3RzKCkgPSB7IFdURk1vdmUo
aW5wdXQxKSB9OwogICAgIHJldHVybiBlZmZlY3Q7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3N2Zy9TVkdGRUNvbXBvbmVudFRyYW5zZmVyRWxlbWVudC5oIGIvU291cmNlL1dlYkNv
cmUvc3ZnL1NWR0ZFQ29tcG9uZW50VHJhbnNmZXJFbGVtZW50LmgKaW5kZXggYmI1ODkzNDdkODgy
NmRmYjM2MDllZGFjNmU4Yjk5M2E0ZGQ1NDg2My4uNjAxNzEwZjdkMzUzNWExNDFhMTU3ODg1NGFm
MmIwMzUxMTI5ZTk4MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFQ29tcG9u
ZW50VHJhbnNmZXJFbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFQ29tcG9u
ZW50VHJhbnNmZXJFbGVtZW50LmgKQEAgLTQzLDcgKzQzLDcgQEAgcHJpdmF0ZToKICAgICAvLyBG
SVhNRTogc3ZnQXR0cmlidXRlQ2hhbmdlZCBtaXNzaW5nLgogICAgIHZvaWQgcGFyc2VBdHRyaWJ1
dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYsIGNvbnN0IEF0b21TdHJpbmcmKSBvdmVycmlkZTsKIAot
ICAgIFJlZlB0cjxGaWx0ZXJFZmZlY3Q+IGJ1aWxkKFNWR0ZpbHRlckJ1aWxkZXIqLCBGaWx0ZXIm
KSBjb25zdCBvdmVycmlkZTsKKyAgICBSZWZQdHI8RmlsdGVyRWZmZWN0PiBidWlsZChTVkdGaWx0
ZXJCdWlsZGVyJikgY29uc3Qgb3ZlcnJpZGU7CiAKICAgICBQcm9wZXJ0eVJlZ2lzdHJ5IG1fcHJv
cGVydHlSZWdpc3RyeSB7ICp0aGlzIH07CiAgICAgUmVmPFNWR0FuaW1hdGVkU3RyaW5nPiBtX2lu
MSB7IFNWR0FuaW1hdGVkU3RyaW5nOjpjcmVhdGUodGhpcykgfTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3N2Zy9TVkdGRUNvbXBvc2l0ZUVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUv
c3ZnL1NWR0ZFQ29tcG9zaXRlRWxlbWVudC5jcHAKaW5kZXggM2NhOTliODc1NzA4YmJkOGE2YmFm
NjUzZGMwNmZlMjA1YWM5ODIzNS4uN2ZjZWQyZTY0NTU0MGUzYjlkZDA5NmNiZTQ5OTFmNTg0MTU1
MDUxNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFQ29tcG9zaXRlRWxlbWVu
dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFQ29tcG9zaXRlRWxlbWVudC5jcHAK
QEAgLTEzMSwxOSArMTMxLDE2IEBAIHZvaWQgU1ZHRkVDb21wb3NpdGVFbGVtZW50OjpzdmdBdHRy
aWJ1dGVDaGFuZ2VkKGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0dHJOYW1lKQogICAgIFNWR0ZpbHRl
clByaW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlczo6c3ZnQXR0cmlidXRlQ2hhbmdlZChhdHRyTmFt
ZSk7CiB9CiAKLVJlZlB0cjxGaWx0ZXJFZmZlY3Q+IFNWR0ZFQ29tcG9zaXRlRWxlbWVudDo6YnVp
bGQoU1ZHRmlsdGVyQnVpbGRlciogZmlsdGVyQnVpbGRlciwgRmlsdGVyJiBmaWx0ZXIpIGNvbnN0
CitSZWZQdHI8RmlsdGVyRWZmZWN0PiBTVkdGRUNvbXBvc2l0ZUVsZW1lbnQ6OmJ1aWxkKFNWR0Zp
bHRlckJ1aWxkZXImIGZpbHRlckJ1aWxkZXIpIGNvbnN0CiB7Ci0gICAgYXV0byBpbnB1dDEgPSBm
aWx0ZXJCdWlsZGVyLT5nZXRFZmZlY3RCeUlkKGluMSgpKTsKLSAgICBhdXRvIGlucHV0MiA9IGZp
bHRlckJ1aWxkZXItPmdldEVmZmVjdEJ5SWQoaW4yKCkpOworICAgIGF1dG8gaW5wdXQxID0gZmls
dGVyQnVpbGRlci5nZXRFZmZlY3RCeUlkKGluMSgpKTsKKyAgICBhdXRvIGlucHV0MiA9IGZpbHRl
ckJ1aWxkZXIuZ2V0RWZmZWN0QnlJZChpbjIoKSk7CiAgICAgCiAgICAgaWYgKCFpbnB1dDEgfHwg
IWlucHV0MikKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKLSAgICBhdXRvIGVmZmVjdCA9IEZF
Q29tcG9zaXRlOjpjcmVhdGUoZmlsdGVyLCBzdmdPcGVyYXRvcigpLCBrMSgpLCBrMigpLCBrMygp
LCBrNCgpKTsKLSAgICBGaWx0ZXJFZmZlY3RWZWN0b3ImIGlucHV0RWZmZWN0cyA9IGVmZmVjdC0+
aW5wdXRFZmZlY3RzKCk7Ci0gICAgaW5wdXRFZmZlY3RzLnJlc2VydmVDYXBhY2l0eSgyKTsKLSAg
ICBpbnB1dEVmZmVjdHMuYXBwZW5kKGlucHV0MSk7Ci0gICAgaW5wdXRFZmZlY3RzLmFwcGVuZChp
bnB1dDIpOyAgICAKKyAgICBhdXRvIGVmZmVjdCA9IEZFQ29tcG9zaXRlOjpjcmVhdGUoc3ZnT3Bl
cmF0b3IoKSwgazEoKSwgazIoKSwgazMoKSwgazQoKSk7CisgICAgZWZmZWN0LT5pbnB1dEVmZmVj
dHMoKSA9IHsgV1RGTW92ZShpbnB1dDEpLCBXVEZNb3ZlKGlucHV0MikgfTsKICAgICByZXR1cm4g
ZWZmZWN0OwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVDb21wb3Np
dGVFbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVDb21wb3NpdGVFbGVtZW50LmgK
aW5kZXggODFhNzhjODY1N2EwZmEzMDQ0ZGY1YjdjNWEwODBkNmU3Nzk3MjJmNi4uNzRkODE0YzNj
MjBlMGZkMzdlYjZhOGI1M2FmZjU2OWQ4ZDExZGNhMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvc3ZnL1NWR0ZFQ29tcG9zaXRlRWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9T
VkdGRUNvbXBvc2l0ZUVsZW1lbnQuaApAQCAtMTA5LDcgKzEwOSw3IEBAIHByaXZhdGU6CiAgICAg
dm9pZCBzdmdBdHRyaWJ1dGVDaGFuZ2VkKGNvbnN0IFF1YWxpZmllZE5hbWUmKSBvdmVycmlkZTsK
IAogICAgIGJvb2wgc2V0RmlsdGVyRWZmZWN0QXR0cmlidXRlKEZpbHRlckVmZmVjdCosIGNvbnN0
IFF1YWxpZmllZE5hbWUmKSBvdmVycmlkZTsKLSAgICBSZWZQdHI8RmlsdGVyRWZmZWN0PiBidWls
ZChTVkdGaWx0ZXJCdWlsZGVyKiwgRmlsdGVyJikgY29uc3Qgb3ZlcnJpZGU7CisgICAgUmVmUHRy
PEZpbHRlckVmZmVjdD4gYnVpbGQoU1ZHRmlsdGVyQnVpbGRlciYpIGNvbnN0IG92ZXJyaWRlOwog
CiAgICAgUHJvcGVydHlSZWdpc3RyeSBtX3Byb3BlcnR5UmVnaXN0cnkgeyAqdGhpcyB9OwogICAg
IFJlZjxTVkdBbmltYXRlZFN0cmluZz4gbV9pbjEgeyBTVkdBbmltYXRlZFN0cmluZzo6Y3JlYXRl
KHRoaXMpIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVDb252b2x2ZU1h
dHJpeEVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFQ29udm9sdmVNYXRyaXhF
bGVtZW50LmNwcAppbmRleCBmNzUwNTgxNWRlY2FiYjRlYTM0YjQzNWI0N2VhNWE4MGM2YTI2ZGYx
Li4xYTgxMzRhOWM4YjdmYzBhNTA3NWVkZTgxYTBkMzY5NzBlOThjNDdmIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVDb252b2x2ZU1hdHJpeEVsZW1lbnQuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3N2Zy9TVkdGRUNvbnZvbHZlTWF0cml4RWxlbWVudC5jcHAKQEAgLTE5MSw5
ICsxOTEsOSBAQCB2b2lkIFNWR0ZFQ29udm9sdmVNYXRyaXhFbGVtZW50OjpzdmdBdHRyaWJ1dGVD
aGFuZ2VkKGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0dHJOYQogICAgIFNWR0ZpbHRlclByaW1pdGl2
ZVN0YW5kYXJkQXR0cmlidXRlczo6c3ZnQXR0cmlidXRlQ2hhbmdlZChhdHRyTmFtZSk7CiB9CiAK
LVJlZlB0cjxGaWx0ZXJFZmZlY3Q+IFNWR0ZFQ29udm9sdmVNYXRyaXhFbGVtZW50OjpidWlsZChT
VkdGaWx0ZXJCdWlsZGVyKiBmaWx0ZXJCdWlsZGVyLCBGaWx0ZXImIGZpbHRlcikgY29uc3QKK1Jl
ZlB0cjxGaWx0ZXJFZmZlY3Q+IFNWR0ZFQ29udm9sdmVNYXRyaXhFbGVtZW50OjpidWlsZChTVkdG
aWx0ZXJCdWlsZGVyJiBmaWx0ZXJCdWlsZGVyKSBjb25zdAogewotICAgIGF1dG8gaW5wdXQxID0g
ZmlsdGVyQnVpbGRlci0+Z2V0RWZmZWN0QnlJZChpbjEoKSk7CisgICAgYXV0byBpbnB1dDEgPSBm
aWx0ZXJCdWlsZGVyLmdldEVmZmVjdEJ5SWQoaW4xKCkpOwogCiAgICAgaWYgKCFpbnB1dDEpCiAg
ICAgICAgIHJldHVybiBudWxscHRyOwpAQCAtMjQ2LDggKzI0Niw4IEBAIFJlZlB0cjxGaWx0ZXJF
ZmZlY3Q+IFNWR0ZFQ29udm9sdmVNYXRyaXhFbGVtZW50OjpidWlsZChTVkdGaWx0ZXJCdWlsZGVy
KiBmaWx0ZXJCCiAgICAgICAgICAgICBkaXZpc29yVmFsdWUgPSAxOwogICAgIH0KIAotICAgIGF1
dG8gZWZmZWN0ID0gRkVDb252b2x2ZU1hdHJpeDo6Y3JlYXRlKGZpbHRlciwgSW50U2l6ZShvcmRl
clhWYWx1ZSwgb3JkZXJZVmFsdWUpLCBkaXZpc29yVmFsdWUsIGJpYXMoKSwgSW50UG9pbnQodGFy
Z2V0WFZhbHVlLCB0YXJnZXRZVmFsdWUpLCBlZGdlTW9kZSgpLCBGbG9hdFBvaW50KGtlcm5lbFVu
aXRMZW5ndGhYVmFsdWUsIGtlcm5lbFVuaXRMZW5ndGhZVmFsdWUpLCBwcmVzZXJ2ZUFscGhhKCks
IGtlcm5lbE1hdHJpeCk7Ci0gICAgZWZmZWN0LT5pbnB1dEVmZmVjdHMoKSA9IHsgaW5wdXQxIH07
CisgICAgYXV0byBlZmZlY3QgPSBGRUNvbnZvbHZlTWF0cml4OjpjcmVhdGUoSW50U2l6ZShvcmRl
clhWYWx1ZSwgb3JkZXJZVmFsdWUpLCBkaXZpc29yVmFsdWUsIGJpYXMoKSwgSW50UG9pbnQodGFy
Z2V0WFZhbHVlLCB0YXJnZXRZVmFsdWUpLCBlZGdlTW9kZSgpLCBGbG9hdFBvaW50KGtlcm5lbFVu
aXRMZW5ndGhYVmFsdWUsIGtlcm5lbFVuaXRMZW5ndGhZVmFsdWUpLCBwcmVzZXJ2ZUFscGhhKCks
IGtlcm5lbE1hdHJpeCk7CisgICAgZWZmZWN0LT5pbnB1dEVmZmVjdHMoKSA9IHsgV1RGTW92ZShp
bnB1dDEpIH07CiAgICAgcmV0dXJuIGVmZmVjdDsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvc3ZnL1NWR0ZFQ29udm9sdmVNYXRyaXhFbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9z
dmcvU1ZHRkVDb252b2x2ZU1hdHJpeEVsZW1lbnQuaAppbmRleCA4NWMwMDI2OThjNjI3N2UwNDM3
MGQzNTk4MmE5NWI4ZDkwNDliMzM5Li4xYjZiYmU0ODcxMjc1YzQyMWM4ZGQ0NDA5YzFiNDg5NzI5
NWFhMTBhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVDb252b2x2ZU1hdHJp
eEVsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVDb252b2x2ZU1hdHJpeEVs
ZW1lbnQuaApAQCAtMTAzLDcgKzEwMyw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBzdmdBdHRyaWJ1
dGVDaGFuZ2VkKGNvbnN0IFF1YWxpZmllZE5hbWUmKSBvdmVycmlkZTsKIAogICAgIGJvb2wgc2V0
RmlsdGVyRWZmZWN0QXR0cmlidXRlKEZpbHRlckVmZmVjdCosIGNvbnN0IFF1YWxpZmllZE5hbWUm
KSBvdmVycmlkZTsKLSAgICBSZWZQdHI8RmlsdGVyRWZmZWN0PiBidWlsZChTVkdGaWx0ZXJCdWls
ZGVyKiwgRmlsdGVyJikgY29uc3Qgb3ZlcnJpZGU7CisgICAgUmVmUHRyPEZpbHRlckVmZmVjdD4g
YnVpbGQoU1ZHRmlsdGVyQnVpbGRlciYpIGNvbnN0IG92ZXJyaWRlOwogCiAgICAgUHJvcGVydHlS
ZWdpc3RyeSBtX3Byb3BlcnR5UmVnaXN0cnkgeyAqdGhpcyB9OwogICAgIFJlZjxTVkdBbmltYXRl
ZFN0cmluZz4gbV9pbjEgeyBTVkdBbmltYXRlZFN0cmluZzo6Y3JlYXRlKHRoaXMpIH07CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVEaWZmdXNlTGlnaHRpbmdFbGVtZW50LmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRURpZmZ1c2VMaWdodGluZ0VsZW1lbnQuY3BwCmlu
ZGV4IDE1MmM5ODVmZDhlOTVhZTk5NTdlNmUyMWQ2YmYyYTEwYzQ1NGJkZDUuLmRkMzk0NTk1Y2Y3
MjY0OGE2N2Q1MjhhMTM0MTUxZGEzNjdmNGM2OTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3N2Zy9TVkdGRURpZmZ1c2VMaWdodGluZ0VsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3N2Zy9TVkdGRURpZmZ1c2VMaWdodGluZ0VsZW1lbnQuY3BwCkBAIC0xNTEsOSArMTUxLDkgQEAg
dm9pZCBTVkdGRURpZmZ1c2VMaWdodGluZ0VsZW1lbnQ6OmxpZ2h0RWxlbWVudEF0dHJpYnV0ZUNo
YW5nZWQoY29uc3QgU1ZHRkVMaWdodEUKICAgICBwcmltaXRpdmVBdHRyaWJ1dGVDaGFuZ2VkKGF0
dHJOYW1lKTsKIH0KIAotUmVmUHRyPEZpbHRlckVmZmVjdD4gU1ZHRkVEaWZmdXNlTGlnaHRpbmdF
bGVtZW50OjpidWlsZChTVkdGaWx0ZXJCdWlsZGVyKiBmaWx0ZXJCdWlsZGVyLCBGaWx0ZXImIGZp
bHRlcikgY29uc3QKK1JlZlB0cjxGaWx0ZXJFZmZlY3Q+IFNWR0ZFRGlmZnVzZUxpZ2h0aW5nRWxl
bWVudDo6YnVpbGQoU1ZHRmlsdGVyQnVpbGRlciYgZmlsdGVyQnVpbGRlcikgY29uc3QKIHsKLSAg
ICBhdXRvIGlucHV0MSA9IGZpbHRlckJ1aWxkZXItPmdldEVmZmVjdEJ5SWQoaW4xKCkpOworICAg
IGF1dG8gaW5wdXQxID0gZmlsdGVyQnVpbGRlci5nZXRFZmZlY3RCeUlkKGluMSgpKTsKIAogICAg
IGlmICghaW5wdXQxKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKQEAgLTE2Miw3ICsxNjIsNyBA
QCBSZWZQdHI8RmlsdGVyRWZmZWN0PiBTVkdGRURpZmZ1c2VMaWdodGluZ0VsZW1lbnQ6OmJ1aWxk
KFNWR0ZpbHRlckJ1aWxkZXIqIGZpbHRlcgogICAgIGlmICghbGlnaHRFbGVtZW50KQogICAgICAg
ICByZXR1cm4gbnVsbHB0cjsKICAgICAKLSAgICBhdXRvIGxpZ2h0U291cmNlID0gbGlnaHRFbGVt
ZW50LT5saWdodFNvdXJjZSgqZmlsdGVyQnVpbGRlcik7CisgICAgYXV0byBsaWdodFNvdXJjZSA9
IGxpZ2h0RWxlbWVudC0+bGlnaHRTb3VyY2UoZmlsdGVyQnVpbGRlcik7CiAKICAgICBSZW5kZXJP
YmplY3QqIHJlbmRlcmVyID0gdGhpcy0+cmVuZGVyZXIoKTsKICAgICBpZiAoIXJlbmRlcmVyKQpA
QCAtMTcwLDggKzE3MCw4IEBAIFJlZlB0cjxGaWx0ZXJFZmZlY3Q+IFNWR0ZFRGlmZnVzZUxpZ2h0
aW5nRWxlbWVudDo6YnVpbGQoU1ZHRmlsdGVyQnVpbGRlciogZmlsdGVyCiAKICAgICBDb2xvciBj
b2xvciA9IHJlbmRlcmVyLT5zdHlsZSgpLmNvbG9yQnlBcHBseWluZ0NvbG9yRmlsdGVyKHJlbmRl
cmVyLT5zdHlsZSgpLnN2Z1N0eWxlKCkubGlnaHRpbmdDb2xvcigpKTsKIAotICAgIGF1dG8gZWZm
ZWN0ID0gRkVEaWZmdXNlTGlnaHRpbmc6OmNyZWF0ZShmaWx0ZXIsIGNvbG9yLCBzdXJmYWNlU2Nh
bGUoKSwgZGlmZnVzZUNvbnN0YW50KCksIGtlcm5lbFVuaXRMZW5ndGhYKCksIGtlcm5lbFVuaXRM
ZW5ndGhZKCksIFdURk1vdmUobGlnaHRTb3VyY2UpKTsKLSAgICBlZmZlY3QtPmlucHV0RWZmZWN0
cygpID0geyBpbnB1dDEgfTsKKyAgICBhdXRvIGVmZmVjdCA9IEZFRGlmZnVzZUxpZ2h0aW5nOjpj
cmVhdGUoY29sb3IsIHN1cmZhY2VTY2FsZSgpLCBkaWZmdXNlQ29uc3RhbnQoKSwga2VybmVsVW5p
dExlbmd0aFgoKSwga2VybmVsVW5pdExlbmd0aFkoKSwgV1RGTW92ZShsaWdodFNvdXJjZSkpOwor
ICAgIGVmZmVjdC0+aW5wdXRFZmZlY3RzKCkgPSB7IFdURk1vdmUoaW5wdXQxKSB9OwogICAgIHJl
dHVybiBlZmZlY3Q7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRURp
ZmZ1c2VMaWdodGluZ0VsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRURpZmZ1c2VM
aWdodGluZ0VsZW1lbnQuaAppbmRleCA2ODk5OTYwOWY0YjZiNTZhNzZjODhlYTU2OTVmMWUwZTll
MjA1NTgwLi5iMmFhYzhiMDNlZDI0ZDIxZDk4YjUxOWZiYThlNWY5NDVjYTMwODBkIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVEaWZmdXNlTGlnaHRpbmdFbGVtZW50LmgKKysr
IGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFRGlmZnVzZUxpZ2h0aW5nRWxlbWVudC5oCkBAIC01
OCw3ICs1OCw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBzdmdBdHRyaWJ1dGVDaGFuZ2VkKGNvbnN0
IFF1YWxpZmllZE5hbWUmKSBvdmVycmlkZTsKIAogICAgIGJvb2wgc2V0RmlsdGVyRWZmZWN0QXR0
cmlidXRlKEZpbHRlckVmZmVjdCosIGNvbnN0IFF1YWxpZmllZE5hbWUmKSBvdmVycmlkZTsKLSAg
ICBSZWZQdHI8RmlsdGVyRWZmZWN0PiBidWlsZChTVkdGaWx0ZXJCdWlsZGVyKiwgRmlsdGVyJikg
Y29uc3Qgb3ZlcnJpZGU7CisgICAgUmVmUHRyPEZpbHRlckVmZmVjdD4gYnVpbGQoU1ZHRmlsdGVy
QnVpbGRlciYpIGNvbnN0IG92ZXJyaWRlOwogCiAgICAgUHJvcGVydHlSZWdpc3RyeSBtX3Byb3Bl
cnR5UmVnaXN0cnkgeyAqdGhpcyB9OwogICAgIFJlZjxTVkdBbmltYXRlZFN0cmluZz4gbV9pbjEg
eyBTVkdBbmltYXRlZFN0cmluZzo6Y3JlYXRlKHRoaXMpIH07CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9zdmcvU1ZHRkVEaXNwbGFjZW1lbnRNYXBFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3N2Zy9TVkdGRURpc3BsYWNlbWVudE1hcEVsZW1lbnQuY3BwCmluZGV4IDBjNWU4MjViYzgy
NTYwZjM2YTI2OWVhNmQ3MjJkZmQwNTE3M2Q4YzIuLjY5MDc1MTM3NTA3ZDZjNjQ3NDlhMWM4YmM0
MTJhMGFlZTUxYTFhMmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRURpc3Bs
YWNlbWVudE1hcEVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRURpc3Bs
YWNlbWVudE1hcEVsZW1lbnQuY3BwCkBAIC0xMTUsMTkgKzExNSwxNiBAQCB2b2lkIFNWR0ZFRGlz
cGxhY2VtZW50TWFwRWxlbWVudDo6c3ZnQXR0cmlidXRlQ2hhbmdlZChjb25zdCBRdWFsaWZpZWRO
YW1lJiBhdHRyTgogICAgIFNWR0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlczo6c3Zn
QXR0cmlidXRlQ2hhbmdlZChhdHRyTmFtZSk7CiB9CiAKLVJlZlB0cjxGaWx0ZXJFZmZlY3Q+IFNW
R0ZFRGlzcGxhY2VtZW50TWFwRWxlbWVudDo6YnVpbGQoU1ZHRmlsdGVyQnVpbGRlciogZmlsdGVy
QnVpbGRlciwgRmlsdGVyJiBmaWx0ZXIpIGNvbnN0CitSZWZQdHI8RmlsdGVyRWZmZWN0PiBTVkdG
RURpc3BsYWNlbWVudE1hcEVsZW1lbnQ6OmJ1aWxkKFNWR0ZpbHRlckJ1aWxkZXImIGZpbHRlckJ1
aWxkZXIpIGNvbnN0CiB7Ci0gICAgYXV0byBpbnB1dDEgPSBmaWx0ZXJCdWlsZGVyLT5nZXRFZmZl
Y3RCeUlkKGluMSgpKTsKLSAgICBhdXRvIGlucHV0MiA9IGZpbHRlckJ1aWxkZXItPmdldEVmZmVj
dEJ5SWQoaW4yKCkpOworICAgIGF1dG8gaW5wdXQxID0gZmlsdGVyQnVpbGRlci5nZXRFZmZlY3RC
eUlkKGluMSgpKTsKKyAgICBhdXRvIGlucHV0MiA9IGZpbHRlckJ1aWxkZXIuZ2V0RWZmZWN0QnlJ
ZChpbjIoKSk7CiAgICAgCiAgICAgaWYgKCFpbnB1dDEgfHwgIWlucHV0MikKICAgICAgICAgcmV0
dXJuIG51bGxwdHI7CiAKLSAgICBhdXRvIGVmZmVjdCA9IEZFRGlzcGxhY2VtZW50TWFwOjpjcmVh
dGUoZmlsdGVyLCB4Q2hhbm5lbFNlbGVjdG9yKCksIHlDaGFubmVsU2VsZWN0b3IoKSwgc2NhbGUo
KSk7Ci0gICAgRmlsdGVyRWZmZWN0VmVjdG9yJiBpbnB1dEVmZmVjdHMgPSBlZmZlY3QtPmlucHV0
RWZmZWN0cygpOwotICAgIGlucHV0RWZmZWN0cy5yZXNlcnZlQ2FwYWNpdHkoMik7Ci0gICAgaW5w
dXRFZmZlY3RzLmFwcGVuZChpbnB1dDEpOwotICAgIGlucHV0RWZmZWN0cy5hcHBlbmQoaW5wdXQy
KTsgICAgCisgICAgYXV0byBlZmZlY3QgPSBGRURpc3BsYWNlbWVudE1hcDo6Y3JlYXRlKHhDaGFu
bmVsU2VsZWN0b3IoKSwgeUNoYW5uZWxTZWxlY3RvcigpLCBzY2FsZSgpKTsKKyAgICBlZmZlY3Qt
PmlucHV0RWZmZWN0cygpID0geyBXVEZNb3ZlKGlucHV0MSksIFdURk1vdmUoaW5wdXQyKSB9Owog
ICAgIHJldHVybiBlZmZlY3Q7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9T
VkdGRURpc3BsYWNlbWVudE1hcEVsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRURp
c3BsYWNlbWVudE1hcEVsZW1lbnQuaAppbmRleCBhYTkxZGYzOGIzNjI5OGYxMjFhMTQxMWM0ZDBh
ZTVlY2Q1ODY2NWQzLi5mMmM2ZDBiMThmODVjOTRmMzg0ZjViZDFiZWZjMzU5ZWRlODIzZTZhIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVEaXNwbGFjZW1lbnRNYXBFbGVtZW50
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFRGlzcGxhY2VtZW50TWFwRWxlbWVudC5o
CkBAIC05MSw3ICs5MSw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBzdmdBdHRyaWJ1dGVDaGFuZ2Vk
KGNvbnN0IFF1YWxpZmllZE5hbWUmKSBvdmVycmlkZTsKIAogICAgIGJvb2wgc2V0RmlsdGVyRWZm
ZWN0QXR0cmlidXRlKEZpbHRlckVmZmVjdCosIGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0dHJOYW1l
KSBvdmVycmlkZTsKLSAgICBSZWZQdHI8RmlsdGVyRWZmZWN0PiBidWlsZChTVkdGaWx0ZXJCdWls
ZGVyKiwgRmlsdGVyJikgY29uc3Qgb3ZlcnJpZGU7CisgICAgUmVmUHRyPEZpbHRlckVmZmVjdD4g
YnVpbGQoU1ZHRmlsdGVyQnVpbGRlciYpIGNvbnN0IG92ZXJyaWRlOwogCiAgICAgUHJvcGVydHlS
ZWdpc3RyeSBtX3Byb3BlcnR5UmVnaXN0cnkgeyAqdGhpcyB9OwogICAgIFJlZjxTVkdBbmltYXRl
ZFN0cmluZz4gbV9pbjEgeyBTVkdBbmltYXRlZFN0cmluZzo6Y3JlYXRlKHRoaXMpIH07CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVEcm9wU2hhZG93RWxlbWVudC5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVEcm9wU2hhZG93RWxlbWVudC5jcHAKaW5kZXggMjJiY2Ux
ZDMzMzE3Yzk1NzFmZTVkNzlmNGIzMjZhODliZmM1YjY4MS4uYmQ2MWMyNzRlMTUzNGZkOTFhYzM5
ODBjNjQ1NjI5ODk5Y2Y2MjE1ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZF
RHJvcFNoYWRvd0VsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRURyb3BT
aGFkb3dFbGVtZW50LmNwcApAQCAtOTcsNyArOTcsNyBAQCB2b2lkIFNWR0ZFRHJvcFNoYWRvd0Vs
ZW1lbnQ6OnN2Z0F0dHJpYnV0ZUNoYW5nZWQoY29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0ck5hbWUp
CiAgICAgU1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVzOjpzdmdBdHRyaWJ1dGVD
aGFuZ2VkKGF0dHJOYW1lKTsKIH0KIAotUmVmUHRyPEZpbHRlckVmZmVjdD4gU1ZHRkVEcm9wU2hh
ZG93RWxlbWVudDo6YnVpbGQoU1ZHRmlsdGVyQnVpbGRlciogZmlsdGVyQnVpbGRlciwgRmlsdGVy
JiBmaWx0ZXIpIGNvbnN0CitSZWZQdHI8RmlsdGVyRWZmZWN0PiBTVkdGRURyb3BTaGFkb3dFbGVt
ZW50OjpidWlsZChTVkdGaWx0ZXJCdWlsZGVyJiBmaWx0ZXJCdWlsZGVyKSBjb25zdAogewogICAg
IFJlbmRlck9iamVjdCogcmVuZGVyZXIgPSB0aGlzLT5yZW5kZXJlcigpOwogICAgIGlmICghcmVu
ZGVyZXIpCkBAIC0xMTEsMTIgKzExMSwxMiBAQCBSZWZQdHI8RmlsdGVyRWZmZWN0PiBTVkdGRURy
b3BTaGFkb3dFbGVtZW50OjpidWlsZChTVkdGaWx0ZXJCdWlsZGVyKiBmaWx0ZXJCdWlsZAogICAg
IENvbG9yIGNvbG9yID0gcmVuZGVyZXItPnN0eWxlKCkuY29sb3JCeUFwcGx5aW5nQ29sb3JGaWx0
ZXIoc3ZnU3R5bGUuZmxvb2RDb2xvcigpKTsKICAgICBmbG9hdCBvcGFjaXR5ID0gc3ZnU3R5bGUu
Zmxvb2RPcGFjaXR5KCk7CiAKLSAgICBhdXRvIGlucHV0MSA9IGZpbHRlckJ1aWxkZXItPmdldEVm
ZmVjdEJ5SWQoaW4xKCkpOworICAgIGF1dG8gaW5wdXQxID0gZmlsdGVyQnVpbGRlci5nZXRFZmZl
Y3RCeUlkKGluMSgpKTsKICAgICBpZiAoIWlucHV0MSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7
CiAKLSAgICBhdXRvIGVmZmVjdCA9IEZFRHJvcFNoYWRvdzo6Y3JlYXRlKGZpbHRlciwgc3RkRGV2
aWF0aW9uWCgpLCBzdGREZXZpYXRpb25ZKCksIGR4KCksIGR5KCksIGNvbG9yLCBvcGFjaXR5KTsK
LSAgICBlZmZlY3QtPmlucHV0RWZmZWN0cygpID0geyBpbnB1dDEgfTsKKyAgICBhdXRvIGVmZmVj
dCA9IEZFRHJvcFNoYWRvdzo6Y3JlYXRlKHN0ZERldmlhdGlvblgoKSwgc3RkRGV2aWF0aW9uWSgp
LCBkeCgpLCBkeSgpLCBjb2xvciwgb3BhY2l0eSk7CisgICAgZWZmZWN0LT5pbnB1dEVmZmVjdHMo
KSA9IHsgV1RGTW92ZShpbnB1dDEpIH07CiAgICAgcmV0dXJuIGVmZmVjdDsKIH0KIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFRHJvcFNoYWRvd0VsZW1lbnQuaCBiL1NvdXJj
ZS9XZWJDb3JlL3N2Zy9TVkdGRURyb3BTaGFkb3dFbGVtZW50LmgKaW5kZXggOWI2MmQyNGI0NTRi
YjdkMjc1OGU3MTJiNjIxYjhjYmU0MmY3NDUxZC4uM2U0MDVkZTQ4OWM2ODFhNzZjNDRmOWE4Mjk3
MzNhMjAyNmI0ZDhmYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFRHJvcFNo
YWRvd0VsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVEcm9wU2hhZG93RWxl
bWVudC5oCkBAIC01Myw3ICs1Myw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBwYXJzZUF0dHJpYnV0
ZShjb25zdCBRdWFsaWZpZWROYW1lJiwgY29uc3QgQXRvbVN0cmluZyYpIG92ZXJyaWRlOwogICAg
IHZvaWQgc3ZnQXR0cmlidXRlQ2hhbmdlZChjb25zdCBRdWFsaWZpZWROYW1lJikgb3ZlcnJpZGU7
CiAKLSAgICBSZWZQdHI8RmlsdGVyRWZmZWN0PiBidWlsZChTVkdGaWx0ZXJCdWlsZGVyKiwgRmls
dGVyJikgY29uc3Qgb3ZlcnJpZGU7CisgICAgUmVmUHRyPEZpbHRlckVmZmVjdD4gYnVpbGQoU1ZH
RmlsdGVyQnVpbGRlciYpIGNvbnN0IG92ZXJyaWRlOwogCiAgICAgUHJvcGVydHlSZWdpc3RyeSBt
X3Byb3BlcnR5UmVnaXN0cnkgeyAqdGhpcyB9OwogICAgIFJlZjxTVkdBbmltYXRlZFN0cmluZz4g
bV9pbjEgeyBTVkdBbmltYXRlZFN0cmluZzo6Y3JlYXRlKHRoaXMpIH07CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVGbG9vZEVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUv
c3ZnL1NWR0ZFRmxvb2RFbGVtZW50LmNwcAppbmRleCBjMjI4ZTIyZDU2NWQwZTE2M2ZmODdkMGI0
YmNhYmQyMjQ0NzU4ZmMyLi5mMzI4Y2M3YzE1ZWU3OTFiNGFhYmEzYThlNzFhODA0YzgwOTNkY2Zl
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVGbG9vZEVsZW1lbnQuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRUZsb29kRWxlbWVudC5jcHAKQEAgLTU4LDcgKzU4
LDcgQEAgYm9vbCBTVkdGRUZsb29kRWxlbWVudDo6c2V0RmlsdGVyRWZmZWN0QXR0cmlidXRlKEZp
bHRlckVmZmVjdCogZWZmZWN0LCBjb25zdCBRdWEKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKLVJl
ZlB0cjxGaWx0ZXJFZmZlY3Q+IFNWR0ZFRmxvb2RFbGVtZW50OjpidWlsZChTVkdGaWx0ZXJCdWls
ZGVyKiwgRmlsdGVyJiBmaWx0ZXIpIGNvbnN0CitSZWZQdHI8RmlsdGVyRWZmZWN0PiBTVkdGRUZs
b29kRWxlbWVudDo6YnVpbGQoU1ZHRmlsdGVyQnVpbGRlciYpIGNvbnN0CiB7CiAgICAgUmVuZGVy
T2JqZWN0KiByZW5kZXJlciA9IHRoaXMtPnJlbmRlcmVyKCk7CiAgICAgaWYgKCFyZW5kZXJlcikK
QEAgLTY5LDcgKzY5LDcgQEAgUmVmUHRyPEZpbHRlckVmZmVjdD4gU1ZHRkVGbG9vZEVsZW1lbnQ6
OmJ1aWxkKFNWR0ZpbHRlckJ1aWxkZXIqLCBGaWx0ZXImIGZpbHRlcikKICAgICBDb2xvciBjb2xv
ciA9IHJlbmRlcmVyLT5zdHlsZSgpLmNvbG9yQnlBcHBseWluZ0NvbG9yRmlsdGVyKHN2Z1N0eWxl
LmZsb29kQ29sb3IoKSk7CiAgICAgZmxvYXQgb3BhY2l0eSA9IHN2Z1N0eWxlLmZsb29kT3BhY2l0
eSgpOwogCi0gICAgcmV0dXJuIEZFRmxvb2Q6OmNyZWF0ZShmaWx0ZXIsIGNvbG9yLCBvcGFjaXR5
KTsKKyAgICByZXR1cm4gRkVGbG9vZDo6Y3JlYXRlKGNvbG9yLCBvcGFjaXR5KTsKIH0KIAogfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFRmxvb2RFbGVtZW50LmggYi9Tb3Vy
Y2UvV2ViQ29yZS9zdmcvU1ZHRkVGbG9vZEVsZW1lbnQuaAppbmRleCBiOTZhNDNhYTMxM2U3NWU0
YTMxNjcyNDhhMWI2ZjVjZjUxZmVlOTExLi5hZWQ2NjkxOTMzYmQwMmYzMzAxYTkyMzk3Yjc0MDU5
ZmY2YmVjNGJlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVGbG9vZEVsZW1l
bnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVGbG9vZEVsZW1lbnQuaApAQCAtMzYs
NyArMzYsNyBAQCBwcml2YXRlOgogICAgIGNvbnN0IFNWR1Byb3BlcnR5UmVnaXN0cnkmIHByb3Bl
cnR5UmVnaXN0cnkoKSBjb25zdCBmaW5hbCB7IHJldHVybiBtX3Byb3BlcnR5UmVnaXN0cnk7IH0K
IAogICAgIGJvb2wgc2V0RmlsdGVyRWZmZWN0QXR0cmlidXRlKEZpbHRlckVmZmVjdCosIGNvbnN0
IFF1YWxpZmllZE5hbWUmIGF0dHJOYW1lKSBvdmVycmlkZTsKLSAgICBSZWZQdHI8RmlsdGVyRWZm
ZWN0PiBidWlsZChTVkdGaWx0ZXJCdWlsZGVyKiwgRmlsdGVyJikgY29uc3Qgb3ZlcnJpZGU7Cisg
ICAgUmVmUHRyPEZpbHRlckVmZmVjdD4gYnVpbGQoU1ZHRmlsdGVyQnVpbGRlciYpIGNvbnN0IG92
ZXJyaWRlOwogCiAgICAgUHJvcGVydHlSZWdpc3RyeSBtX3Byb3BlcnR5UmVnaXN0cnkgeyAqdGhp
cyB9OwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRUdhdXNzaWFuQmx1
ckVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFR2F1c3NpYW5CbHVyRWxlbWVu
dC5jcHAKaW5kZXggN2E5OTgyMjRjOTIxOTU1NTI0NGE4NjljYTc4YTgzMGQ1NjNjNTk5ZC4uZjFl
NmJmNDlhNGRiM2RjYTc3NWM5YjdlZmE1ZGI5ZGM4Njk4ODcyYSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvc3ZnL1NWR0ZFR2F1c3NpYW5CbHVyRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvc3ZnL1NWR0ZFR2F1c3NpYW5CbHVyRWxlbWVudC5jcHAKQEAgLTk1LDE3ICs5NSwxNyBA
QCB2b2lkIFNWR0ZFR2F1c3NpYW5CbHVyRWxlbWVudDo6c3ZnQXR0cmlidXRlQ2hhbmdlZChjb25z
dCBRdWFsaWZpZWROYW1lJiBhdHRyTmFtZQogICAgIFNWR0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJk
QXR0cmlidXRlczo6c3ZnQXR0cmlidXRlQ2hhbmdlZChhdHRyTmFtZSk7CiB9CiAKLVJlZlB0cjxG
aWx0ZXJFZmZlY3Q+IFNWR0ZFR2F1c3NpYW5CbHVyRWxlbWVudDo6YnVpbGQoU1ZHRmlsdGVyQnVp
bGRlciogZmlsdGVyQnVpbGRlciwgRmlsdGVyJiBmaWx0ZXIpIGNvbnN0CitSZWZQdHI8RmlsdGVy
RWZmZWN0PiBTVkdGRUdhdXNzaWFuQmx1ckVsZW1lbnQ6OmJ1aWxkKFNWR0ZpbHRlckJ1aWxkZXIm
IGZpbHRlckJ1aWxkZXIpIGNvbnN0CiB7Ci0gICAgYXV0byBpbnB1dDEgPSBmaWx0ZXJCdWlsZGVy
LT5nZXRFZmZlY3RCeUlkKGluMSgpKTsKKyAgICBhdXRvIGlucHV0MSA9IGZpbHRlckJ1aWxkZXIu
Z2V0RWZmZWN0QnlJZChpbjEoKSk7CiAgICAgaWYgKCFpbnB1dDEpCiAgICAgICAgIHJldHVybiBu
dWxscHRyOwogCiAgICAgaWYgKHN0ZERldmlhdGlvblgoKSA8IDAgfHwgc3RkRGV2aWF0aW9uWSgp
IDwgMCkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKLSAgICBhdXRvIGVmZmVjdCA9IEZFR2F1
c3NpYW5CbHVyOjpjcmVhdGUoZmlsdGVyLCBzdGREZXZpYXRpb25YKCksIHN0ZERldmlhdGlvblko
KSwgZWRnZU1vZGUoKSk7Ci0gICAgZWZmZWN0LT5pbnB1dEVmZmVjdHMoKSA9IHsgaW5wdXQxIH07
CisgICAgYXV0byBlZmZlY3QgPSBGRUdhdXNzaWFuQmx1cjo6Y3JlYXRlKHN0ZERldmlhdGlvblgo
KSwgc3RkRGV2aWF0aW9uWSgpLCBlZGdlTW9kZSgpKTsKKyAgICBlZmZlY3QtPmlucHV0RWZmZWN0
cygpID0geyBXVEZNb3ZlKGlucHV0MSkgfTsKICAgICByZXR1cm4gZWZmZWN0OwogfQogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVHYXVzc2lhbkJsdXJFbGVtZW50LmggYi9T
b3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVHYXVzc2lhbkJsdXJFbGVtZW50LmgKaW5kZXggZDg5ZTFh
NzQ4ZmIyYzUwOWUyMTRmZTk0YWU0MTAwMWNlNDhlZTBiMi4uZjQwZWIzMzc3OGM0M2RmNjFlZTU4
OTYzZWVjZjllY2RiYTU0OWNjMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZF
R2F1c3NpYW5CbHVyRWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRUdhdXNz
aWFuQmx1ckVsZW1lbnQuaApAQCAtNTMsNyArNTMsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgcGFy
c2VBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYsIGNvbnN0IEF0b21TdHJpbmcmKSBvdmVy
cmlkZTsKICAgICB2b2lkIHN2Z0F0dHJpYnV0ZUNoYW5nZWQoY29uc3QgUXVhbGlmaWVkTmFtZSYp
IG92ZXJyaWRlOwogCi0gICAgUmVmUHRyPEZpbHRlckVmZmVjdD4gYnVpbGQoU1ZHRmlsdGVyQnVp
bGRlciosIEZpbHRlciYpIGNvbnN0IG92ZXJyaWRlOworICAgIFJlZlB0cjxGaWx0ZXJFZmZlY3Q+
IGJ1aWxkKFNWR0ZpbHRlckJ1aWxkZXImKSBjb25zdCBvdmVycmlkZTsKIAogICAgIFByb3BlcnR5
UmVnaXN0cnkgbV9wcm9wZXJ0eVJlZ2lzdHJ5IHsgKnRoaXMgfTsKICAgICBSZWY8U1ZHQW5pbWF0
ZWRTdHJpbmc+IG1faW4xIHsgU1ZHQW5pbWF0ZWRTdHJpbmc6OmNyZWF0ZSh0aGlzKSB9OwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFSW1hZ2VFbGVtZW50LmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3N2Zy9TVkdGRUltYWdlRWxlbWVudC5jcHAKaW5kZXggZTE0Njg4YTVlYjE3NmYw
MmExNmMwNTUwZjA4MTE5NWQzYzI3ZWM0Zi4uNDJhMWNlMGVhNmFlMWQ0OWNiNmJiN2VhOTY3NDNi
M2JlMDVhZjQ0YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFSW1hZ2VFbGVt
ZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVJbWFnZUVsZW1lbnQuY3BwCkBA
IC0xNzQsMTYgKzE3NCwxNiBAQCB2b2lkIFNWR0ZFSW1hZ2VFbGVtZW50Ojpub3RpZnlGaW5pc2hl
ZChDYWNoZWRSZXNvdXJjZSYsIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcwogICAgIFJlbmRlclNW
R1Jlc291cmNlOjptYXJrRm9yTGF5b3V0QW5kUGFyZW50UmVzb3VyY2VJbnZhbGlkYXRpb24oKnBh
cmVudFJlbmRlcmVyKTsKIH0KIAotUmVmUHRyPEZpbHRlckVmZmVjdD4gU1ZHRkVJbWFnZUVsZW1l
bnQ6OmJ1aWxkKFNWR0ZpbHRlckJ1aWxkZXIqLCBGaWx0ZXImIGZpbHRlcikgY29uc3QKK1JlZlB0
cjxGaWx0ZXJFZmZlY3Q+IFNWR0ZFSW1hZ2VFbGVtZW50OjpidWlsZChTVkdGaWx0ZXJCdWlsZGVy
JikgY29uc3QKIHsKICAgICBpZiAobV9jYWNoZWRJbWFnZSkKLSAgICAgICAgcmV0dXJuIEZFSW1h
Z2U6OmNyZWF0ZVdpdGhJbWFnZShmaWx0ZXIsIG1fY2FjaGVkSW1hZ2UtPmltYWdlRm9yUmVuZGVy
ZXIocmVuZGVyZXIoKSksIHByZXNlcnZlQXNwZWN0UmF0aW8oKSk7CisgICAgICAgIHJldHVybiBG
RUltYWdlOjpjcmVhdGVXaXRoSW1hZ2UobV9jYWNoZWRJbWFnZS0+aW1hZ2VGb3JSZW5kZXJlcihy
ZW5kZXJlcigpKSwgcHJlc2VydmVBc3BlY3RSYXRpbygpKTsKIAogICAgIGF1dG8gdGFyZ2V0ID0g
U1ZHVVJJUmVmZXJlbmNlOjp0YXJnZXRFbGVtZW50RnJvbUlSSVN0cmluZyhocmVmKCksIHRyZWVT
Y29wZSgpKTsKICAgICBpZiAoaXNEZXNjZW5kYW50T3JTaGFkb3dEZXNjZW5kYW50T2YodGFyZ2V0
LmVsZW1lbnQuZ2V0KCkpKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAotICAgIHJldHVybiBG
RUltYWdlOjpjcmVhdGVXaXRoSVJJUmVmZXJlbmNlKGZpbHRlciwgdHJlZVNjb3BlKCksIGhyZWYo
KSwgcHJlc2VydmVBc3BlY3RSYXRpbygpKTsKKyAgICByZXR1cm4gRkVJbWFnZTo6Y3JlYXRlV2l0
aElSSVJlZmVyZW5jZSh0cmVlU2NvcGUoKSwgaHJlZigpLCBwcmVzZXJ2ZUFzcGVjdFJhdGlvKCkp
OwogfQogCiB2b2lkIFNWR0ZFSW1hZ2VFbGVtZW50OjphZGRTdWJyZXNvdXJjZUF0dHJpYnV0ZVVS
THMoTGlzdEhhc2hTZXQ8VVJMPiYgdXJscykgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3N2Zy9TVkdGRUltYWdlRWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFSW1h
Z2VFbGVtZW50LmgKaW5kZXggZDkzZTBkMGRiOGI4ODY2NTQ4MGYyMTAxNWEyNTZiYWRhMTU0YzVj
Ny4uMmEzZTlmNjBlYmZjMjdkMDEzOWIyYzM3Njg1ZjMzOGIxYzhiNjc5ZiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFSW1hZ2VFbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNv
cmUvc3ZnL1NWR0ZFSW1hZ2VFbGVtZW50LmgKQEAgLTU1LDcgKzU1LDcgQEAgcHJpdmF0ZToKIAog
ICAgIHZvaWQgZGlkRmluaXNoSW5zZXJ0aW5nTm9kZSgpIG92ZXJyaWRlOwogCi0gICAgUmVmUHRy
PEZpbHRlckVmZmVjdD4gYnVpbGQoU1ZHRmlsdGVyQnVpbGRlciosIEZpbHRlciYpIGNvbnN0IG92
ZXJyaWRlOworICAgIFJlZlB0cjxGaWx0ZXJFZmZlY3Q+IGJ1aWxkKFNWR0ZpbHRlckJ1aWxkZXIm
KSBjb25zdCBvdmVycmlkZTsKIAogICAgIHZvaWQgY2xlYXJSZXNvdXJjZVJlZmVyZW5jZXMoKTsK
ICAgICB2b2lkIHJlcXVlc3RJbWFnZVJlc291cmNlKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9zdmcvU1ZHRkVNZXJnZUVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZF
TWVyZ2VFbGVtZW50LmNwcAppbmRleCBiZTJmNmUwMzA3ZGM1NTE2MDA3OTBmZDViZjE4MmYxZDk0
NjIzZGQ2Li4xYzBkNTgyZDAxM2I4N2NmMGUzYzExMDhiOTYyZjJkMzY5ZGMzMDQyIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVNZXJnZUVsZW1lbnQuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3N2Zy9TVkdGRU1lcmdlRWxlbWVudC5jcHAKQEAgLTQ1LDEzICs0NSwxMiBAQCBS
ZWY8U1ZHRkVNZXJnZUVsZW1lbnQ+IFNWR0ZFTWVyZ2VFbGVtZW50OjpjcmVhdGUoY29uc3QgUXVh
bGlmaWVkTmFtZSYgdGFnTmFtZSwgRAogICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFNWR0ZFTWVy
Z2VFbGVtZW50KHRhZ05hbWUsIGRvY3VtZW50KSk7CiB9CiAKLVJlZlB0cjxGaWx0ZXJFZmZlY3Q+
IFNWR0ZFTWVyZ2VFbGVtZW50OjpidWlsZChTVkdGaWx0ZXJCdWlsZGVyKiBmaWx0ZXJCdWlsZGVy
LCBGaWx0ZXImIGZpbHRlcikgY29uc3QKK1JlZlB0cjxGaWx0ZXJFZmZlY3Q+IFNWR0ZFTWVyZ2VF
bGVtZW50OjpidWlsZChTVkdGaWx0ZXJCdWlsZGVyJiBmaWx0ZXJCdWlsZGVyKSBjb25zdAogewot
ICAgIGF1dG8gZWZmZWN0ID0gRkVNZXJnZTo6Y3JlYXRlKGZpbHRlcik7Ci0gICAgYXV0byYgbWVy
Z2VJbnB1dHMgPSBlZmZlY3QtPmlucHV0RWZmZWN0cygpOwotCisgICAgRmlsdGVyRWZmZWN0VmVj
dG9yIG1lcmdlSW5wdXRzOworICAgIAogICAgIGZvciAoYXV0byYgbWVyZ2VOb2RlIDogY2hpbGRy
ZW5PZlR5cGU8U1ZHRkVNZXJnZU5vZGVFbGVtZW50PigqdGhpcykpIHsKLSAgICAgICAgYXV0byBt
ZXJnZUVmZmVjdCA9IGZpbHRlckJ1aWxkZXItPmdldEVmZmVjdEJ5SWQobWVyZ2VOb2RlLmluMSgp
KTsKKyAgICAgICAgYXV0byBtZXJnZUVmZmVjdCA9IGZpbHRlckJ1aWxkZXIuZ2V0RWZmZWN0QnlJ
ZChtZXJnZU5vZGUuaW4xKCkpOwogICAgICAgICBpZiAoIW1lcmdlRWZmZWN0KQogICAgICAgICAg
ICAgcmV0dXJuIG51bGxwdHI7CiAgICAgICAgIG1lcmdlSW5wdXRzLmFwcGVuZChXVEZNb3ZlKG1l
cmdlRWZmZWN0KSk7CkBAIC02Miw2ICs2MSw4IEBAIFJlZlB0cjxGaWx0ZXJFZmZlY3Q+IFNWR0ZF
TWVyZ2VFbGVtZW50OjpidWlsZChTVkdGaWx0ZXJCdWlsZGVyKiBmaWx0ZXJCdWlsZGVyLCBGCiAg
ICAgaWYgKG1lcmdlSW5wdXRzLmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAK
KyAgICBhdXRvIGVmZmVjdCA9IEZFTWVyZ2U6OmNyZWF0ZSgpOworICAgIGVmZmVjdC0+aW5wdXRF
ZmZlY3RzKCkgPSBXVEZNb3ZlKG1lcmdlSW5wdXRzKTsKICAgICByZXR1cm4gZWZmZWN0OwogfQog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVNZXJnZUVsZW1lbnQuaCBiL1Nv
dXJjZS9XZWJDb3JlL3N2Zy9TVkdGRU1lcmdlRWxlbWVudC5oCmluZGV4IDc0NTA4NjgxNmY2OTc2
YzY2OTdkYzUxMDc1ODAyZDI4M2NmNGUzYzIuLjQzN2NkNzI1NjMyYzVmNGM1MjQ4OTRjYzMyNmNh
MDliNDE5ODUxN2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRU1lcmdlRWxl
bWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRU1lcmdlRWxlbWVudC5oCkBAIC0z
NSw3ICszNSw3IEBAIHByaXZhdGU6CiAgICAgdXNpbmcgUHJvcGVydHlSZWdpc3RyeSA9IFNWR1By
b3BlcnR5T3duZXJSZWdpc3RyeTxTVkdGRU1lcmdlRWxlbWVudCwgU1ZHRmlsdGVyUHJpbWl0aXZl
U3RhbmRhcmRBdHRyaWJ1dGVzPjsKICAgICBjb25zdCBTVkdQcm9wZXJ0eVJlZ2lzdHJ5JiBwcm9w
ZXJ0eVJlZ2lzdHJ5KCkgY29uc3QgZmluYWwgeyByZXR1cm4gbV9wcm9wZXJ0eVJlZ2lzdHJ5OyB9
CiAKLSAgICBSZWZQdHI8RmlsdGVyRWZmZWN0PiBidWlsZChTVkdGaWx0ZXJCdWlsZGVyKiwgRmls
dGVyJikgY29uc3Qgb3ZlcnJpZGU7CisgICAgUmVmUHRyPEZpbHRlckVmZmVjdD4gYnVpbGQoU1ZH
RmlsdGVyQnVpbGRlciYpIGNvbnN0IG92ZXJyaWRlOwogCiAgICAgUHJvcGVydHlSZWdpc3RyeSBt
X3Byb3BlcnR5UmVnaXN0cnkgeyAqdGhpcyB9OwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3N2Zy9TVkdGRU1vcnBob2xvZ3lFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9T
VkdGRU1vcnBob2xvZ3lFbGVtZW50LmNwcAppbmRleCBkNmZiOTVjOGUzNzc2ZTZkMjA5M2JlYWNl
MzVlMmVkMTc5NWQzMjFiLi44YjA1NjBjNGRhODAwMzk3MDE0OGUxZTE1ZTJmMzA5N2I5MTUzMTU2
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVNb3JwaG9sb2d5RWxlbWVudC5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFTW9ycGhvbG9neUVsZW1lbnQuY3BwCkBA
IC0xMTQsMjAgKzExNCwxOSBAQCB2b2lkIFNWR0ZFTW9ycGhvbG9neUVsZW1lbnQ6OnN2Z0F0dHJp
YnV0ZUNoYW5nZWQoY29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0ck5hbWUpCiAgICAgU1ZHRmlsdGVy
UHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVzOjpzdmdBdHRyaWJ1dGVDaGFuZ2VkKGF0dHJOYW1l
KTsKIH0KIAotUmVmUHRyPEZpbHRlckVmZmVjdD4gU1ZHRkVNb3JwaG9sb2d5RWxlbWVudDo6YnVp
bGQoU1ZHRmlsdGVyQnVpbGRlciogZmlsdGVyQnVpbGRlciwgRmlsdGVyJiBmaWx0ZXIpIGNvbnN0
CitSZWZQdHI8RmlsdGVyRWZmZWN0PiBTVkdGRU1vcnBob2xvZ3lFbGVtZW50OjpidWlsZChTVkdG
aWx0ZXJCdWlsZGVyJiBmaWx0ZXJCdWlsZGVyKSBjb25zdAogewotICAgIGF1dG8gaW5wdXQxID0g
ZmlsdGVyQnVpbGRlci0+Z2V0RWZmZWN0QnlJZChpbjEoKSk7Ci0gICAgZmxvYXQgeFJhZGl1cyA9
IHJhZGl1c1goKTsKLSAgICBmbG9hdCB5UmFkaXVzID0gcmFkaXVzWSgpOwotCisgICAgYXV0byBp
bnB1dDEgPSBmaWx0ZXJCdWlsZGVyLmdldEVmZmVjdEJ5SWQoaW4xKCkpOwogICAgIGlmICghaW5w
dXQxKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAorICAgIGZsb2F0IHhSYWRpdXMgPSByYWRp
dXNYKCk7CisgICAgZmxvYXQgeVJhZGl1cyA9IHJhZGl1c1koKTsKICAgICBpZiAoeFJhZGl1cyA8
IDAgfHwgeVJhZGl1cyA8IDApCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCi0gICAgYXV0byBl
ZmZlY3QgPSBGRU1vcnBob2xvZ3k6OmNyZWF0ZShmaWx0ZXIsIHN2Z09wZXJhdG9yKCksIHhSYWRp
dXMsIHlSYWRpdXMpOwotICAgIGVmZmVjdC0+aW5wdXRFZmZlY3RzKCkgPSB7IGlucHV0MSB9Owor
ICAgIGF1dG8gZWZmZWN0ID0gRkVNb3JwaG9sb2d5OjpjcmVhdGUoc3ZnT3BlcmF0b3IoKSwgeFJh
ZGl1cywgeVJhZGl1cyk7CisgICAgZWZmZWN0LT5pbnB1dEVmZmVjdHMoKSA9IHsgV1RGTW92ZShp
bnB1dDEpIH07CiAgICAgcmV0dXJuIGVmZmVjdDsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvc3ZnL1NWR0ZFTW9ycGhvbG9neUVsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9T
VkdGRU1vcnBob2xvZ3lFbGVtZW50LmgKaW5kZXggMWE5MDg4Yjc1Y2Y4ZDg1YWUzOGYyOTNlMTEx
OThhNjZmNjZhYTY2OS4uYjIxYjZmNWM0N2I3ODVkZjI4ZjAxM2VkZTU0MDFjODY2ZDQwZTlkZCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFTW9ycGhvbG9neUVsZW1lbnQuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVNb3JwaG9sb2d5RWxlbWVudC5oCkBAIC04MSw3
ICs4MSw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBzdmdBdHRyaWJ1dGVDaGFuZ2VkKGNvbnN0IFF1
YWxpZmllZE5hbWUmKSBvdmVycmlkZTsKIAogICAgIGJvb2wgc2V0RmlsdGVyRWZmZWN0QXR0cmli
dXRlKEZpbHRlckVmZmVjdCosIGNvbnN0IFF1YWxpZmllZE5hbWUmKSBvdmVycmlkZTsKLSAgICBS
ZWZQdHI8RmlsdGVyRWZmZWN0PiBidWlsZChTVkdGaWx0ZXJCdWlsZGVyKiwgRmlsdGVyJikgY29u
c3Qgb3ZlcnJpZGU7CisgICAgUmVmUHRyPEZpbHRlckVmZmVjdD4gYnVpbGQoU1ZHRmlsdGVyQnVp
bGRlciYpIGNvbnN0IG92ZXJyaWRlOwogCiAgICAgUHJvcGVydHlSZWdpc3RyeSBtX3Byb3BlcnR5
UmVnaXN0cnkgeyAqdGhpcyB9OwogICAgIFJlZjxTVkdBbmltYXRlZFN0cmluZz4gbV9pbjEgeyBT
VkdBbmltYXRlZFN0cmluZzo6Y3JlYXRlKHRoaXMpIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9zdmcvU1ZHRkVPZmZzZXRFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdG
RU9mZnNldEVsZW1lbnQuY3BwCmluZGV4IDAzODI2OGI4OWIyZjE5ZjliZTU2ODczOWQxMjMwMzU0
MTAwYTVlZTcuLjliMGQ3MDJhMWQyNTg1NDIwOGI5N2ZmOWQ2YWRkMWY4MjdlMjlhZjUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRU9mZnNldEVsZW1lbnQuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3N2Zy9TVkdGRU9mZnNldEVsZW1lbnQuY3BwCkBAIC04MSwxNCArODEsMTQg
QEAgdm9pZCBTVkdGRU9mZnNldEVsZW1lbnQ6OnN2Z0F0dHJpYnV0ZUNoYW5nZWQoY29uc3QgUXVh
bGlmaWVkTmFtZSYgYXR0ck5hbWUpCiAgICAgU1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRy
aWJ1dGVzOjpzdmdBdHRyaWJ1dGVDaGFuZ2VkKGF0dHJOYW1lKTsKIH0KIAotUmVmUHRyPEZpbHRl
ckVmZmVjdD4gU1ZHRkVPZmZzZXRFbGVtZW50OjpidWlsZChTVkdGaWx0ZXJCdWlsZGVyKiBmaWx0
ZXJCdWlsZGVyLCBGaWx0ZXImIGZpbHRlcikgY29uc3QKK1JlZlB0cjxGaWx0ZXJFZmZlY3Q+IFNW
R0ZFT2Zmc2V0RWxlbWVudDo6YnVpbGQoU1ZHRmlsdGVyQnVpbGRlciYgZmlsdGVyQnVpbGRlcikg
Y29uc3QKIHsKLSAgICBhdXRvIGlucHV0MSA9IGZpbHRlckJ1aWxkZXItPmdldEVmZmVjdEJ5SWQo
aW4xKCkpOworICAgIGF1dG8gaW5wdXQxID0gZmlsdGVyQnVpbGRlci5nZXRFZmZlY3RCeUlkKGlu
MSgpKTsKIAogICAgIGlmICghaW5wdXQxKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAotICAg
IGF1dG8gZWZmZWN0ID0gRkVPZmZzZXQ6OmNyZWF0ZShmaWx0ZXIsIGR4KCksIGR5KCkpOworICAg
IGF1dG8gZWZmZWN0ID0gRkVPZmZzZXQ6OmNyZWF0ZShkeCgpLCBkeSgpKTsKICAgICBlZmZlY3Qt
PmlucHV0RWZmZWN0cygpID0geyBpbnB1dDEgfTsKICAgICByZXR1cm4gZWZmZWN0OwogfQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFT2Zmc2V0RWxlbWVudC5oIGIvU291cmNl
L1dlYkNvcmUvc3ZnL1NWR0ZFT2Zmc2V0RWxlbWVudC5oCmluZGV4IDU3NDczZGNjNzJkYjY3YjEy
NWVhMmVkNDY1ZTM1YjU3MzcwNDliZWUuLjg5OTZmMjgyYjAxZThkOWNkNjY3YmYyMGI1Y2Q5ODhh
NTk5YWY4ODggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRU9mZnNldEVsZW1l
bnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVPZmZzZXRFbGVtZW50LmgKQEAgLTQ3
LDcgKzQ3LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIHBhcnNlQXR0cmlidXRlKGNvbnN0IFF1YWxp
ZmllZE5hbWUmLCBjb25zdCBBdG9tU3RyaW5nJikgb3ZlcnJpZGU7CiAgICAgdm9pZCBzdmdBdHRy
aWJ1dGVDaGFuZ2VkKGNvbnN0IFF1YWxpZmllZE5hbWUmKSBvdmVycmlkZTsKIAotICAgIFJlZlB0
cjxGaWx0ZXJFZmZlY3Q+IGJ1aWxkKFNWR0ZpbHRlckJ1aWxkZXIqLCBGaWx0ZXImKSBjb25zdCBv
dmVycmlkZTsKKyAgICBSZWZQdHI8RmlsdGVyRWZmZWN0PiBidWlsZChTVkdGaWx0ZXJCdWlsZGVy
JikgY29uc3Qgb3ZlcnJpZGU7CiAKICAgICBQcm9wZXJ0eVJlZ2lzdHJ5IG1fcHJvcGVydHlSZWdp
c3RyeSB7ICp0aGlzIH07CiAgICAgUmVmPFNWR0FuaW1hdGVkU3RyaW5nPiBtX2luMSB7IFNWR0Fu
aW1hdGVkU3RyaW5nOjpjcmVhdGUodGhpcykgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3N2Zy9TVkdGRVNwZWN1bGFyTGlnaHRpbmdFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N2
Zy9TVkdGRVNwZWN1bGFyTGlnaHRpbmdFbGVtZW50LmNwcAppbmRleCA5YjdjZTQwYWI5NzE2YWU0
ZjMzNWY1NGIyNGNkYTQ1OWE4NDI5YTU5Li41NjNiOWYxN2I0YTkxNmI3ZDI2NTEyNDJkMzdkM2Zj
MGJkNzUwMmUyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVTcGVjdWxhckxp
Z2h0aW5nRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFU3BlY3VsYXJM
aWdodGluZ0VsZW1lbnQuY3BwCkBAIC0xNjAsOSArMTYwLDkgQEAgdm9pZCBTVkdGRVNwZWN1bGFy
TGlnaHRpbmdFbGVtZW50OjpsaWdodEVsZW1lbnRBdHRyaWJ1dGVDaGFuZ2VkKGNvbnN0IFNWR0ZF
TGlnaHQKICAgICBwcmltaXRpdmVBdHRyaWJ1dGVDaGFuZ2VkKGF0dHJOYW1lKTsKIH0KIAotUmVm
UHRyPEZpbHRlckVmZmVjdD4gU1ZHRkVTcGVjdWxhckxpZ2h0aW5nRWxlbWVudDo6YnVpbGQoU1ZH
RmlsdGVyQnVpbGRlciogZmlsdGVyQnVpbGRlciwgRmlsdGVyJiBmaWx0ZXIpIGNvbnN0CitSZWZQ
dHI8RmlsdGVyRWZmZWN0PiBTVkdGRVNwZWN1bGFyTGlnaHRpbmdFbGVtZW50OjpidWlsZChTVkdG
aWx0ZXJCdWlsZGVyJiBmaWx0ZXJCdWlsZGVyKSBjb25zdAogewotICAgIGF1dG8gaW5wdXQxID0g
ZmlsdGVyQnVpbGRlci0+Z2V0RWZmZWN0QnlJZChpbjEoKSk7CisgICAgYXV0byBpbnB1dDEgPSBm
aWx0ZXJCdWlsZGVyLmdldEVmZmVjdEJ5SWQoaW4xKCkpOwogCiAgICAgaWYgKCFpbnB1dDEpCiAg
ICAgICAgIHJldHVybiBudWxscHRyOwpAQCAtMTcxLDcgKzE3MSw3IEBAIFJlZlB0cjxGaWx0ZXJF
ZmZlY3Q+IFNWR0ZFU3BlY3VsYXJMaWdodGluZ0VsZW1lbnQ6OmJ1aWxkKFNWR0ZpbHRlckJ1aWxk
ZXIqIGZpbHRlCiAgICAgaWYgKCFsaWdodEVsZW1lbnQpCiAgICAgICAgIHJldHVybiBudWxscHRy
OwogICAgIAotICAgIGF1dG8gbGlnaHRTb3VyY2UgPSBsaWdodEVsZW1lbnQtPmxpZ2h0U291cmNl
KCpmaWx0ZXJCdWlsZGVyKTsKKyAgICBhdXRvIGxpZ2h0U291cmNlID0gbGlnaHRFbGVtZW50LT5s
aWdodFNvdXJjZShmaWx0ZXJCdWlsZGVyKTsKIAogICAgIFJlbmRlck9iamVjdCogcmVuZGVyZXIg
PSB0aGlzLT5yZW5kZXJlcigpOwogICAgIGlmICghcmVuZGVyZXIpCkBAIC0xNzksNyArMTc5LDcg
QEAgUmVmUHRyPEZpbHRlckVmZmVjdD4gU1ZHRkVTcGVjdWxhckxpZ2h0aW5nRWxlbWVudDo6YnVp
bGQoU1ZHRmlsdGVyQnVpbGRlciogZmlsdGUKICAgICAKICAgICBDb2xvciBjb2xvciA9IHJlbmRl
cmVyLT5zdHlsZSgpLmNvbG9yQnlBcHBseWluZ0NvbG9yRmlsdGVyKHJlbmRlcmVyLT5zdHlsZSgp
LnN2Z1N0eWxlKCkubGlnaHRpbmdDb2xvcigpKTsKIAotICAgIGF1dG8gZWZmZWN0ID0gRkVTcGVj
dWxhckxpZ2h0aW5nOjpjcmVhdGUoZmlsdGVyLCBjb2xvciwgc3VyZmFjZVNjYWxlKCksIHNwZWN1
bGFyQ29uc3RhbnQoKSwgc3BlY3VsYXJFeHBvbmVudCgpLCBrZXJuZWxVbml0TGVuZ3RoWCgpLCBr
ZXJuZWxVbml0TGVuZ3RoWSgpLCBXVEZNb3ZlKGxpZ2h0U291cmNlKSk7CisgICAgYXV0byBlZmZl
Y3QgPSBGRVNwZWN1bGFyTGlnaHRpbmc6OmNyZWF0ZShjb2xvciwgc3VyZmFjZVNjYWxlKCksIHNw
ZWN1bGFyQ29uc3RhbnQoKSwgc3BlY3VsYXJFeHBvbmVudCgpLCBrZXJuZWxVbml0TGVuZ3RoWCgp
LCBrZXJuZWxVbml0TGVuZ3RoWSgpLCBXVEZNb3ZlKGxpZ2h0U291cmNlKSk7CiAgICAgZWZmZWN0
LT5pbnB1dEVmZmVjdHMoKSA9IHsgaW5wdXQxIH07CiAgICAgcmV0dXJuIGVmZmVjdDsKIH0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRVNwZWN1bGFyTGlnaHRpbmdFbGVtZW50
LmggYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVTcGVjdWxhckxpZ2h0aW5nRWxlbWVudC5oCmlu
ZGV4IDg5N2I4ZGUxNTZkMWM3OWExZDNmZDhiMzExOGUyYWI2M2I0N2IxNDYuLjRkMWI1MzFjNDJi
ZWI4Y2RmYTIwMTUyMTYyMTE2NTEwZDAwOWJjNmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3N2Zy9TVkdGRVNwZWN1bGFyTGlnaHRpbmdFbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUv
c3ZnL1NWR0ZFU3BlY3VsYXJMaWdodGluZ0VsZW1lbnQuaApAQCAtNTgsNyArNTgsNyBAQCBwcml2
YXRlOgogICAgIHZvaWQgc3ZnQXR0cmlidXRlQ2hhbmdlZChjb25zdCBRdWFsaWZpZWROYW1lJikg
b3ZlcnJpZGU7CiAKICAgICBib29sIHNldEZpbHRlckVmZmVjdEF0dHJpYnV0ZShGaWx0ZXJFZmZl
Y3QqLCBjb25zdCBRdWFsaWZpZWROYW1lJikgb3ZlcnJpZGU7Ci0gICAgUmVmUHRyPEZpbHRlckVm
ZmVjdD4gYnVpbGQoU1ZHRmlsdGVyQnVpbGRlciosIEZpbHRlciYpIGNvbnN0IG92ZXJyaWRlOwor
ICAgIFJlZlB0cjxGaWx0ZXJFZmZlY3Q+IGJ1aWxkKFNWR0ZpbHRlckJ1aWxkZXImKSBjb25zdCBv
dmVycmlkZTsKIAogICAgIFByb3BlcnR5UmVnaXN0cnkgbV9wcm9wZXJ0eVJlZ2lzdHJ5IHsgKnRo
aXMgfTsKICAgICBSZWY8U1ZHQW5pbWF0ZWRTdHJpbmc+IG1faW4xIHsgU1ZHQW5pbWF0ZWRTdHJp
bmc6OmNyZWF0ZSh0aGlzKSB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZF
VGlsZUVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFVGlsZUVsZW1lbnQuY3Bw
CmluZGV4IDM5YmRjYzc3MzU5NjY1MDM2ZTFhZTc0NzYxMmVhZDZmOWFjMzczNzAuLjAwMWRkNTA4
OTIxNDk4OTE1NmQ3MjQ2N2FjMjBmNGZmZjdkNGRjNTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3N2Zy9TVkdGRVRpbGVFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZH
RkVUaWxlRWxlbWVudC5jcHAKQEAgLTcwLDE1ICs3MCwxNSBAQCB2b2lkIFNWR0ZFVGlsZUVsZW1l
bnQ6OnN2Z0F0dHJpYnV0ZUNoYW5nZWQoY29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0ck5hbWUpCiAg
ICAgU1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVzOjpzdmdBdHRyaWJ1dGVDaGFu
Z2VkKGF0dHJOYW1lKTsKIH0KIAotUmVmUHRyPEZpbHRlckVmZmVjdD4gU1ZHRkVUaWxlRWxlbWVu
dDo6YnVpbGQoU1ZHRmlsdGVyQnVpbGRlciogZmlsdGVyQnVpbGRlciwgRmlsdGVyJiBmaWx0ZXIp
IGNvbnN0CitSZWZQdHI8RmlsdGVyRWZmZWN0PiBTVkdGRVRpbGVFbGVtZW50OjpidWlsZChTVkdG
aWx0ZXJCdWlsZGVyJiBmaWx0ZXJCdWlsZGVyKSBjb25zdAogewotICAgIGF1dG8gaW5wdXQxID0g
ZmlsdGVyQnVpbGRlci0+Z2V0RWZmZWN0QnlJZChpbjEoKSk7CisgICAgYXV0byBpbnB1dDEgPSBm
aWx0ZXJCdWlsZGVyLmdldEVmZmVjdEJ5SWQoaW4xKCkpOwogCiAgICAgaWYgKCFpbnB1dDEpCiAg
ICAgICAgIHJldHVybiBudWxscHRyOwogCi0gICAgYXV0byBlZmZlY3QgPSBGRVRpbGU6OmNyZWF0
ZShmaWx0ZXIpOwotICAgIGVmZmVjdC0+aW5wdXRFZmZlY3RzKCkgPSB7IGlucHV0MSB9OworICAg
IGF1dG8gZWZmZWN0ID0gRkVUaWxlOjpjcmVhdGUoKTsKKyAgICBlZmZlY3QtPmlucHV0RWZmZWN0
cygpID0geyBXVEZNb3ZlKGlucHV0MSkgfTsKICAgICByZXR1cm4gZWZmZWN0OwogfQogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVUaWxlRWxlbWVudC5oIGIvU291cmNlL1dl
YkNvcmUvc3ZnL1NWR0ZFVGlsZUVsZW1lbnQuaAppbmRleCA0NWIzMjcxODUxZDdmYzBkYzJkM2Jj
Yzg3OWEyMmRjNDJhMzNhOTFmLi5jYWJhY2U2YmQwMWMyYjFkMzU2NGE1Y2VlNWMyNzViNjY5NmY5
ZDQxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVUaWxlRWxlbWVudC5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRVRpbGVFbGVtZW50LmgKQEAgLTQyLDcgKzQyLDcg
QEAgcHJpdmF0ZToKICAgICB2b2lkIHBhcnNlQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUm
LCBjb25zdCBBdG9tU3RyaW5nJikgb3ZlcnJpZGU7CiAgICAgdm9pZCBzdmdBdHRyaWJ1dGVDaGFu
Z2VkKGNvbnN0IFF1YWxpZmllZE5hbWUmKSBvdmVycmlkZTsKIAotICAgIFJlZlB0cjxGaWx0ZXJF
ZmZlY3Q+IGJ1aWxkKFNWR0ZpbHRlckJ1aWxkZXIqLCBGaWx0ZXImKSBjb25zdCBvdmVycmlkZTsK
KyAgICBSZWZQdHI8RmlsdGVyRWZmZWN0PiBidWlsZChTVkdGaWx0ZXJCdWlsZGVyJikgY29uc3Qg
b3ZlcnJpZGU7CiAKICAgICBQcm9wZXJ0eVJlZ2lzdHJ5IG1fcHJvcGVydHlSZWdpc3RyeSB7ICp0
aGlzIH07CiAgICAgUmVmPFNWR0FuaW1hdGVkU3RyaW5nPiBtX2luMSB7IFNWR0FuaW1hdGVkU3Ry
aW5nOjpjcmVhdGUodGhpcykgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdG
RVR1cmJ1bGVuY2VFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRVR1cmJ1bGVu
Y2VFbGVtZW50LmNwcAppbmRleCAxMTU2MTExOWQ4M2UzZmM3ODhhNDJiMTQ4NjdjNjU2NDEyMzM0
YTRkLi4xNTFiN2I5ZThlMDhhNDNlN2NjY2I2ODA5YWE3MjkxNDZkYmJmMGQ4IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVUdXJidWxlbmNlRWxlbWVudC5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFVHVyYnVsZW5jZUVsZW1lbnQuY3BwCkBAIC0xMTcsMTEgKzEx
NywxMSBAQCB2b2lkIFNWR0ZFVHVyYnVsZW5jZUVsZW1lbnQ6OnN2Z0F0dHJpYnV0ZUNoYW5nZWQo
Y29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0ck5hbWUpCiAgICAgU1ZHRmlsdGVyUHJpbWl0aXZlU3Rh
bmRhcmRBdHRyaWJ1dGVzOjpzdmdBdHRyaWJ1dGVDaGFuZ2VkKGF0dHJOYW1lKTsKIH0KIAotUmVm
UHRyPEZpbHRlckVmZmVjdD4gU1ZHRkVUdXJidWxlbmNlRWxlbWVudDo6YnVpbGQoU1ZHRmlsdGVy
QnVpbGRlciosIEZpbHRlciYgZmlsdGVyKSBjb25zdAorUmVmUHRyPEZpbHRlckVmZmVjdD4gU1ZH
RkVUdXJidWxlbmNlRWxlbWVudDo6YnVpbGQoU1ZHRmlsdGVyQnVpbGRlciYpIGNvbnN0CiB7CiAg
ICAgaWYgKGJhc2VGcmVxdWVuY3lYKCkgPCAwIHx8IGJhc2VGcmVxdWVuY3lZKCkgPCAwKQogICAg
ICAgICByZXR1cm4gbnVsbHB0cjsKLSAgICByZXR1cm4gRkVUdXJidWxlbmNlOjpjcmVhdGUoZmls
dGVyLCB0eXBlKCksIGJhc2VGcmVxdWVuY3lYKCksIGJhc2VGcmVxdWVuY3lZKCksIG51bU9jdGF2
ZXMoKSwgc2VlZCgpLCBzdGl0Y2hUaWxlcygpID09IFNWR19TVElUQ0hUWVBFX1NUSVRDSCk7Cisg
ICAgcmV0dXJuIEZFVHVyYnVsZW5jZTo6Y3JlYXRlKHR5cGUoKSwgYmFzZUZyZXF1ZW5jeVgoKSwg
YmFzZUZyZXF1ZW5jeVkoKSwgbnVtT2N0YXZlcygpLCBzZWVkKCksIHN0aXRjaFRpbGVzKCkgPT0g
U1ZHX1NUSVRDSFRZUEVfU1RJVENIKTsKIH0KIAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvc3ZnL1NWR0ZFVHVyYnVsZW5jZUVsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdG
RVR1cmJ1bGVuY2VFbGVtZW50LmgKaW5kZXggYmY5ZGEyMmFkNDJlNDEwYTEwNDM1ZTBhNDBlMzQy
Njc3NjllMTk4YS4uNTBhZjkxMGViNThlMmM5MjI0MWE5MGRhOGNiZGZkYzY4MTRmOTMxNiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFVHVyYnVsZW5jZUVsZW1lbnQuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVUdXJidWxlbmNlRWxlbWVudC5oCkBAIC0xMTksNyAr
MTE5LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIHN2Z0F0dHJpYnV0ZUNoYW5nZWQoY29uc3QgUXVh
bGlmaWVkTmFtZSYpIG92ZXJyaWRlOwogCiAgICAgYm9vbCBzZXRGaWx0ZXJFZmZlY3RBdHRyaWJ1
dGUoRmlsdGVyRWZmZWN0KiwgY29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0ck5hbWUpIG92ZXJyaWRl
OwotICAgIFJlZlB0cjxGaWx0ZXJFZmZlY3Q+IGJ1aWxkKFNWR0ZpbHRlckJ1aWxkZXIqLCBGaWx0
ZXImKSBjb25zdCBvdmVycmlkZTsKKyAgICBSZWZQdHI8RmlsdGVyRWZmZWN0PiBidWlsZChTVkdG
aWx0ZXJCdWlsZGVyJikgY29uc3Qgb3ZlcnJpZGU7CiAKICAgICBQcm9wZXJ0eVJlZ2lzdHJ5IG1f
cHJvcGVydHlSZWdpc3RyeSB7ICp0aGlzIH07CiAgICAgUmVmPFNWR0FuaW1hdGVkTnVtYmVyPiBt
X2Jhc2VGcmVxdWVuY3lYIHsgU1ZHQW5pbWF0ZWROdW1iZXI6OmNyZWF0ZSh0aGlzKSB9OwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0
cmlidXRlcy5oIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJk
QXR0cmlidXRlcy5oCmluZGV4IGM5OGIxM2VkOTYyNzZhZjllMTRmNjQyODExYTZmZDc0Njc3MmFj
YTcuLjM4ZDQ5ODYwOTMzODIxODdiYWQyMjRkMjk3ZDQyNWM5MWRlNTM5ZDcgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXMu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRy
aWJ1dGVzLmgKQEAgLTM4LDcgKzM4LDcgQEAgY2xhc3MgU1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRh
cmRBdHRyaWJ1dGVzIDogcHVibGljIFNWR0VsZW1lbnQgewogcHVibGljOgogICAgIHZvaWQgc2V0
U3RhbmRhcmRBdHRyaWJ1dGVzKEZpbHRlckVmZmVjdCopIGNvbnN0OwogCi0gICAgdmlydHVhbCBS
ZWZQdHI8RmlsdGVyRWZmZWN0PiBidWlsZChTVkdGaWx0ZXJCdWlsZGVyKiwgRmlsdGVyJikgY29u
c3QgPSAwOworICAgIHZpcnR1YWwgUmVmUHRyPEZpbHRlckVmZmVjdD4gYnVpbGQoU1ZHRmlsdGVy
QnVpbGRlciYpIGNvbnN0ID0gMDsKICAgICAvLyBSZXR1cm5zIHRydWUsIGlmIHRoZSBuZXcgdmFs
dWUgaXMgZGlmZmVyZW50IGZyb20gdGhlIG9sZCBvbmUuCiAgICAgdmlydHVhbCBib29sIHNldEZp
bHRlckVmZmVjdEF0dHJpYnV0ZShGaWx0ZXJFZmZlY3QqLCBjb25zdCBRdWFsaWZpZWROYW1lJik7
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9ncmFwaGljcy9maWx0ZXJzL1NWR0ZF
SW1hZ2UuY3BwIGIvU291cmNlL1dlYkNvcmUvc3ZnL2dyYXBoaWNzL2ZpbHRlcnMvU1ZHRkVJbWFn
ZS5jcHAKaW5kZXggMzg1YWYyOTA4NDhhM2QwYjgzZjEyYWM5NjE5ZTZiZjk2YzlmMjM5Ni4uNGQ2
OWE4MGQ2YjI1ZmNmN2NhNjNmZDIwZDMxZTNiMTA2OThiMTUyNSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvc3ZnL2dyYXBoaWNzL2ZpbHRlcnMvU1ZHRkVJbWFnZS5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvc3ZnL2dyYXBoaWNzL2ZpbHRlcnMvU1ZHRkVJbWFnZS5jcHAKQEAgLTM1LDQwICsz
NSw0MyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLUZFSW1hZ2U6OkZFSW1hZ2UoRmlsdGVy
JiBmaWx0ZXIsIFJlZlB0cjxJbWFnZT4gaW1hZ2UsIGNvbnN0IFNWR1ByZXNlcnZlQXNwZWN0UmF0
aW9WYWx1ZSYgcHJlc2VydmVBc3BlY3RSYXRpbykKLSAgICA6IEZpbHRlckVmZmVjdChmaWx0ZXIs
IFR5cGU6OkltYWdlKQorRkVJbWFnZTo6RkVJbWFnZShSZWZQdHI8SW1hZ2U+IGltYWdlLCBjb25z
dCBTVkdQcmVzZXJ2ZUFzcGVjdFJhdGlvVmFsdWUmIHByZXNlcnZlQXNwZWN0UmF0aW8pCisgICAg
OiBGaWx0ZXJFZmZlY3QoRmlsdGVyRWZmZWN0OjpUeXBlOjpGRUltYWdlKQogICAgICwgbV9pbWFn
ZShpbWFnZSkKICAgICAsIG1fcHJlc2VydmVBc3BlY3RSYXRpbyhwcmVzZXJ2ZUFzcGVjdFJhdGlv
KQogewogfQogCi1GRUltYWdlOjpGRUltYWdlKEZpbHRlciYgZmlsdGVyLCBUcmVlU2NvcGUmIHRy
ZWVTY29wZSwgY29uc3QgU3RyaW5nJiBocmVmLCBjb25zdCBTVkdQcmVzZXJ2ZUFzcGVjdFJhdGlv
VmFsdWUmIHByZXNlcnZlQXNwZWN0UmF0aW8pCi0gICAgOiBGaWx0ZXJFZmZlY3QoZmlsdGVyLCBU
eXBlOjpJbWFnZSkKK0ZFSW1hZ2U6OkZFSW1hZ2UoVHJlZVNjb3BlJiB0cmVlU2NvcGUsIGNvbnN0
IFN0cmluZyYgaHJlZiwgY29uc3QgU1ZHUHJlc2VydmVBc3BlY3RSYXRpb1ZhbHVlJiBwcmVzZXJ2
ZUFzcGVjdFJhdGlvKQorICAgIDogRmlsdGVyRWZmZWN0KEZpbHRlckVmZmVjdDo6VHlwZTo6RkVJ
bWFnZSkKICAgICAsIG1fdHJlZVNjb3BlKCZ0cmVlU2NvcGUpCiAgICAgLCBtX2hyZWYoaHJlZikK
ICAgICAsIG1fcHJlc2VydmVBc3BlY3RSYXRpbyhwcmVzZXJ2ZUFzcGVjdFJhdGlvKQogewogfQog
Ci1SZWY8RkVJbWFnZT4gRkVJbWFnZTo6Y3JlYXRlV2l0aEltYWdlKEZpbHRlciYgZmlsdGVyLCBS
ZWZQdHI8SW1hZ2U+IGltYWdlLCBjb25zdCBTVkdQcmVzZXJ2ZUFzcGVjdFJhdGlvVmFsdWUmIHBy
ZXNlcnZlQXNwZWN0UmF0aW8pCitSZWY8RkVJbWFnZT4gRkVJbWFnZTo6Y3JlYXRlV2l0aEltYWdl
KFJlZlB0cjxJbWFnZT4gaW1hZ2UsIGNvbnN0IFNWR1ByZXNlcnZlQXNwZWN0UmF0aW9WYWx1ZSYg
cHJlc2VydmVBc3BlY3RSYXRpbykKIHsKLSAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBGRUltYWdl
KGZpbHRlciwgaW1hZ2UsIHByZXNlcnZlQXNwZWN0UmF0aW8pKTsKKyAgICByZXR1cm4gYWRvcHRS
ZWYoKm5ldyBGRUltYWdlKGltYWdlLCBwcmVzZXJ2ZUFzcGVjdFJhdGlvKSk7CiB9CiAKLVJlZjxG
RUltYWdlPiBGRUltYWdlOjpjcmVhdGVXaXRoSVJJUmVmZXJlbmNlKEZpbHRlciYgZmlsdGVyLCBU
cmVlU2NvcGUmIHRyZWVTY29wZSwgY29uc3QgU3RyaW5nJiBocmVmLCBjb25zdCBTVkdQcmVzZXJ2
ZUFzcGVjdFJhdGlvVmFsdWUmIHByZXNlcnZlQXNwZWN0UmF0aW8pCitSZWY8RkVJbWFnZT4gRkVJ
bWFnZTo6Y3JlYXRlV2l0aElSSVJlZmVyZW5jZShUcmVlU2NvcGUmIHRyZWVTY29wZSwgY29uc3Qg
U3RyaW5nJiBocmVmLCBjb25zdCBTVkdQcmVzZXJ2ZUFzcGVjdFJhdGlvVmFsdWUmIHByZXNlcnZl
QXNwZWN0UmF0aW8pCiB7Ci0gICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgRkVJbWFnZShmaWx0ZXIs
IHRyZWVTY29wZSwgaHJlZiwgcHJlc2VydmVBc3BlY3RSYXRpbykpOworICAgIHJldHVybiBhZG9w
dFJlZigqbmV3IEZFSW1hZ2UodHJlZVNjb3BlLCBocmVmLCBwcmVzZXJ2ZUFzcGVjdFJhdGlvKSk7
CiB9CiAKLXZvaWQgRkVJbWFnZTo6ZGV0ZXJtaW5lQWJzb2x1dGVQYWludFJlY3QoKQordm9pZCBG
RUltYWdlOjpkZXRlcm1pbmVBYnNvbHV0ZVBhaW50UmVjdChjb25zdCBGaWx0ZXImIGZpbHRlcikK
IHsKLSAgICBGbG9hdFJlY3QgcGFpbnRSZWN0ID0gZmlsdGVyKCkuYWJzb2x1dGVUcmFuc2Zvcm0o
KS5tYXBSZWN0KGZpbHRlclByaW1pdGl2ZVN1YnJlZ2lvbigpKTsKKyAgICBGbG9hdFJlY3QgcGFp
bnRSZWN0ID0gZmlsdGVyUHJpbWl0aXZlU3VicmVnaW9uKCk7CisgICAgcGFpbnRSZWN0LnNjYWxl
KGZpbHRlci5maWx0ZXJTY2FsZSgpKTsKICAgICBGbG9hdFJlY3Qgc3JjUmVjdDsKICAgICBpZiAo
bV9pbWFnZSkgewogICAgICAgICBzcmNSZWN0LnNldFNpemUobV9pbWFnZS0+c2l6ZSgpKTsKICAg
ICAgICAgbV9wcmVzZXJ2ZUFzcGVjdFJhdGlvLnRyYW5zZm9ybVJlY3QocGFpbnRSZWN0LCBzcmNS
ZWN0KTsKLSAgICB9IGVsc2UgaWYgKFJlbmRlckVsZW1lbnQqIHJlbmRlcmVyID0gcmVmZXJlbmNl
ZFJlbmRlcmVyKCkpCi0gICAgICAgIHNyY1JlY3QgPSBmaWx0ZXIoKS5hYnNvbHV0ZVRyYW5zZm9y
bSgpLm1hcFJlY3QocmVuZGVyZXItPnJlcGFpbnRSZWN0SW5Mb2NhbENvb3JkaW5hdGVzKCkpOwor
ICAgIH0gZWxzZSBpZiAoUmVuZGVyRWxlbWVudCogcmVuZGVyZXIgPSByZWZlcmVuY2VkUmVuZGVy
ZXIoKSkgeworICAgICAgICBzcmNSZWN0ID0gcmVuZGVyZXItPnJlcGFpbnRSZWN0SW5Mb2NhbENv
b3JkaW5hdGVzKCk7CisgICAgICAgIHNyY1JlY3Quc2NhbGUoZmlsdGVyLmZpbHRlclNjYWxlKCkp
OworICAgIH0KIAogICAgIGlmIChjbGlwc1RvQm91bmRzKCkpCiAgICAgICAgIHBhaW50UmVjdC5p
bnRlcnNlY3QobWF4RWZmZWN0UmVjdCgpKTsKQEAgLTg3LDcgKzkwLDcgQEAgUmVuZGVyRWxlbWVu
dCogRkVJbWFnZTo6cmVmZXJlbmNlZFJlbmRlcmVyKCkgY29uc3QKICAgICByZXR1cm4gdGFyZ2V0
LmVsZW1lbnQtPnJlbmRlcmVyKCk7CiB9CiAKLXZvaWQgRkVJbWFnZTo6cGxhdGZvcm1BcHBseVNv
ZnR3YXJlKCkKK3ZvaWQgRkVJbWFnZTo6cGxhdGZvcm1BcHBseVNvZnR3YXJlKGNvbnN0IEZpbHRl
ciYgZmlsdGVyKQogewogICAgIFJlbmRlckVsZW1lbnQqIHJlbmRlcmVyID0gcmVmZXJlbmNlZFJl
bmRlcmVyKCk7CiAgICAgaWYgKCFtX2ltYWdlICYmICFyZW5kZXJlcikKQEAgLTEwMCwxMiArMTAz
LDE0IEBAIHZvaWQgRkVJbWFnZTo6cGxhdGZvcm1BcHBseVNvZnR3YXJlKCkKICAgICBpZiAoIXJl
c3VsdEltYWdlKQogICAgICAgICByZXR1cm47CiAKLSAgICBGbG9hdFJlY3QgZGVzdFJlY3QgPSBm
aWx0ZXIoKS5hYnNvbHV0ZVRyYW5zZm9ybSgpLm1hcFJlY3QoZmlsdGVyUHJpbWl0aXZlU3VicmVn
aW9uKCkpOworICAgIEZsb2F0UmVjdCBkZXN0UmVjdCA9IGZpbHRlclByaW1pdGl2ZVN1YnJlZ2lv
bigpOworICAgIGRlc3RSZWN0LnNjYWxlKGZpbHRlci5maWx0ZXJTY2FsZSgpKTsKIAogICAgIEZs
b2F0UmVjdCBzcmNSZWN0OwotICAgIGlmIChyZW5kZXJlcikKLSAgICAgICAgc3JjUmVjdCA9IGZp
bHRlcigpLmFic29sdXRlVHJhbnNmb3JtKCkubWFwUmVjdChyZW5kZXJlci0+cmVwYWludFJlY3RJ
bkxvY2FsQ29vcmRpbmF0ZXMoKSk7Ci0gICAgZWxzZSB7CisgICAgaWYgKHJlbmRlcmVyKSB7Cisg
ICAgICAgIHNyY1JlY3QgPSByZW5kZXJlci0+cmVwYWludFJlY3RJbkxvY2FsQ29vcmRpbmF0ZXMo
KTsKKyAgICAgICAgc3JjUmVjdC5zY2FsZShmaWx0ZXIuZmlsdGVyU2NhbGUoKSk7CisgICAgfSBl
bHNlIHsKICAgICAgICAgc3JjUmVjdCA9IEZsb2F0UmVjdChGbG9hdFBvaW50KCksIG1faW1hZ2Ut
PnNpemUoKSk7CiAgICAgICAgIG1fcHJlc2VydmVBc3BlY3RSYXRpby50cmFuc2Zvcm1SZWN0KGRl
c3RSZWN0LCBzcmNSZWN0KTsKICAgICB9CkBAIC0xMTYsOCArMTIxLDcgQEAgdm9pZCBGRUltYWdl
OjpwbGF0Zm9ybUFwcGx5U29mdHdhcmUoKQogICAgIGF1dG8mIGNvbnRleHQgPSByZXN1bHRJbWFn
ZS0+Y29udGV4dCgpOwogCiAgICAgaWYgKHJlbmRlcmVyKSB7Ci0gICAgICAgIGNvbnN0IEFmZmlu
ZVRyYW5zZm9ybSYgYWJzb2x1dGVUcmFuc2Zvcm0gPSBmaWx0ZXIoKS5hYnNvbHV0ZVRyYW5zZm9y
bSgpOwotICAgICAgICBjb250ZXh0LmNvbmNhdENUTShhYnNvbHV0ZVRyYW5zZm9ybSk7CisgICAg
ICAgIGNvbnRleHQuc2NhbGUoZmlsdGVyLmZpbHRlclNjYWxlKCkpOwogCiAgICAgICAgIFJlZlB0
ciBjb250ZXh0Tm9kZSA9IGRvd25jYXN0PFNWR0VsZW1lbnQ+KHJlbmRlcmVyLT5lbGVtZW50KCkp
OwogICAgICAgICBpZiAoY29udGV4dE5vZGUtPmhhc1JlbGF0aXZlTGVuZ3RocygpKSB7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvZ3JhcGhpY3MvZmlsdGVycy9TVkdGRUltYWdlLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9zdmcvZ3JhcGhpY3MvZmlsdGVycy9TVkdGRUltYWdlLmgKaW5kZXgg
YWMxNjBlZGNlN2MwZTBhMDY3YmRlZmJkNzA3ZjJhYmU1NTkwODFiNi4uYzQyMTNjYWY3MmNmNjQ5
YTFlYzFmMmQ3YTIxZTRmYWJlZDI0MzdjYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3Zn
L2dyYXBoaWNzL2ZpbHRlcnMvU1ZHRkVJbWFnZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9n
cmFwaGljcy9maWx0ZXJzL1NWR0ZFSW1hZ2UuaApAQCAtMzQsMjIgKzM0LDE4IEBAIGNsYXNzIFRy
ZWVTY29wZTsKIAogY2xhc3MgRkVJbWFnZSBmaW5hbCA6IHB1YmxpYyBGaWx0ZXJFZmZlY3Qgewog
cHVibGljOgotICAgIHN0YXRpYyBSZWY8RkVJbWFnZT4gY3JlYXRlV2l0aEltYWdlKEZpbHRlciYs
IFJlZlB0cjxJbWFnZT4sIGNvbnN0IFNWR1ByZXNlcnZlQXNwZWN0UmF0aW9WYWx1ZSYpOwotICAg
IHN0YXRpYyBSZWY8RkVJbWFnZT4gY3JlYXRlV2l0aElSSVJlZmVyZW5jZShGaWx0ZXImLCBUcmVl
U2NvcGUmLCBjb25zdCBTdHJpbmcmLCBjb25zdCBTVkdQcmVzZXJ2ZUFzcGVjdFJhdGlvVmFsdWUm
KTsKKyAgICBzdGF0aWMgUmVmPEZFSW1hZ2U+IGNyZWF0ZVdpdGhJbWFnZShSZWZQdHI8SW1hZ2U+
LCBjb25zdCBTVkdQcmVzZXJ2ZUFzcGVjdFJhdGlvVmFsdWUmKTsKKyAgICBzdGF0aWMgUmVmPEZF
SW1hZ2U+IGNyZWF0ZVdpdGhJUklSZWZlcmVuY2UoVHJlZVNjb3BlJiwgY29uc3QgU3RyaW5nJiwg
Y29uc3QgU1ZHUHJlc2VydmVBc3BlY3RSYXRpb1ZhbHVlJik7CiAKIHByaXZhdGU6CiAgICAgdmly
dHVhbCB+RkVJbWFnZSgpID0gZGVmYXVsdDsKLSAgICBGRUltYWdlKEZpbHRlciYsIFJlZlB0cjxJ
bWFnZT4sIGNvbnN0IFNWR1ByZXNlcnZlQXNwZWN0UmF0aW9WYWx1ZSYpOwotICAgIEZFSW1hZ2Uo
RmlsdGVyJiwgVHJlZVNjb3BlJiwgY29uc3QgU3RyaW5nJiwgY29uc3QgU1ZHUHJlc2VydmVBc3Bl
Y3RSYXRpb1ZhbHVlJik7Ci0KLSAgICBjb25zdCBjaGFyKiBmaWx0ZXJOYW1lKCkgY29uc3QgZmlu
YWwgeyByZXR1cm4gIkZFSW1hZ2UiOyB9Ci0KLSAgICBGaWx0ZXJFZmZlY3RUeXBlIGZpbHRlckVm
ZmVjdFR5cGUoKSBjb25zdCBmaW5hbCB7IHJldHVybiBGaWx0ZXJFZmZlY3RUeXBlSW1hZ2U7IH0K
KyAgICBGRUltYWdlKFJlZlB0cjxJbWFnZT4sIGNvbnN0IFNWR1ByZXNlcnZlQXNwZWN0UmF0aW9W
YWx1ZSYpOworICAgIEZFSW1hZ2UoVHJlZVNjb3BlJiwgY29uc3QgU3RyaW5nJiwgY29uc3QgU1ZH
UHJlc2VydmVBc3BlY3RSYXRpb1ZhbHVlJik7CiAKICAgICBSZW5kZXJFbGVtZW50KiByZWZlcmVu
Y2VkUmVuZGVyZXIoKSBjb25zdDsKIAotICAgIHZvaWQgcGxhdGZvcm1BcHBseVNvZnR3YXJlKCkg
ZmluYWw7Ci0gICAgdm9pZCBkZXRlcm1pbmVBYnNvbHV0ZVBhaW50UmVjdCgpIGZpbmFsOworICAg
IHZvaWQgcGxhdGZvcm1BcHBseVNvZnR3YXJlKGNvbnN0IEZpbHRlciYpIGZpbmFsOworICAgIHZv
aWQgZGV0ZXJtaW5lQWJzb2x1dGVQYWludFJlY3QoY29uc3QgRmlsdGVyJikgZmluYWw7CiAgICAg
V1RGOjpUZXh0U3RyZWFtJiBleHRlcm5hbFJlcHJlc2VudGF0aW9uKFdURjo6VGV4dFN0cmVhbSYs
IFJlcHJlc2VudGF0aW9uVHlwZSkgY29uc3QgZmluYWw7CiAKICAgICBSZWZQdHI8SW1hZ2U+IG1f
aW1hZ2U7CkBAIC02MSwzICs1Nyw1IEBAIHByaXZhdGU6CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBX
ZWJDb3JlCisKK1NQRUNJQUxJWkVfVFlQRV9UUkFJVFNfRklMVEVSX0VGRkVDVChGRUltYWdlKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL2dyYXBoaWNzL2ZpbHRlcnMvU1ZHRmlsdGVy
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9ncmFwaGljcy9maWx0ZXJzL1NWR0ZpbHRlci5jcHAK
aW5kZXggOWE5NGE0NjAzNTg3OTA4YTM4NGQxNzQyN2IzNzE5MzU5MmI3YmNlNy4uODNmMzQxYWQz
NDU3Y2Q0YTExYTMwZDUyY2JjOTI3MWRmMDJhOTM1OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvc3ZnL2dyYXBoaWNzL2ZpbHRlcnMvU1ZHRmlsdGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9zdmcvZ3JhcGhpY3MvZmlsdGVycy9TVkdGaWx0ZXIuY3BwCkBAIC0yMiwyOSArMjIsODEgQEAK
ICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJTVkdGaWx0ZXIuaCIKIAorI2luY2x1ZGUg
IlNWR0ZpbHRlckVsZW1lbnQuaCIKKyNpbmNsdWRlICJTb3VyY2VHcmFwaGljLmgiCisKIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIAotU1ZHRmlsdGVyOjpTVkdGaWx0ZXIoY29uc3QgQWZmaW5lVHJhbnNm
b3JtJiBhYnNvbHV0ZVRyYW5zZm9ybSwgY29uc3QgRmxvYXRSZWN0JiBhYnNvbHV0ZVNvdXJjZURy
YXdpbmdSZWdpb24sIGNvbnN0IEZsb2F0UmVjdCYgdGFyZ2V0Qm91bmRpbmdCb3gsIGNvbnN0IEZs
b2F0UmVjdCYgZmlsdGVyUmVnaW9uLCBib29sIGVmZmVjdEJCb3hNb2RlKQotICAgIDogRmlsdGVy
KGFic29sdXRlVHJhbnNmb3JtKQotICAgICwgbV9hYnNvbHV0ZVNvdXJjZURyYXdpbmdSZWdpb24o
YWJzb2x1dGVTb3VyY2VEcmF3aW5nUmVnaW9uKQorUmVmUHRyPFNWR0ZpbHRlcj4gU1ZHRmlsdGVy
OjpjcmVhdGUoU1ZHRmlsdGVyRWxlbWVudCYgZmlsdGVyRWxlbWVudCwgU1ZHRmlsdGVyQnVpbGRl
ciYgYnVpbGRlciwgY29uc3QgRmxvYXRTaXplJiBmaWx0ZXJTY2FsZSwgY29uc3QgRmxvYXRSZWN0
JiBzb3VyY2VJbWFnZVJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgZmlsdGVyUmVnaW9uLCBGaWx0ZXJF
ZmZlY3QmIHByZXZpb3VzRWZmZWN0KQoreworICAgIHJldHVybiBjcmVhdGUoZmlsdGVyRWxlbWVu
dCwgYnVpbGRlciwgZmlsdGVyU2NhbGUsIHNvdXJjZUltYWdlUmVjdCwgZmlsdGVyUmVnaW9uLCBm
aWx0ZXJSZWdpb24sICZwcmV2aW91c0VmZmVjdCk7Cit9CisKK1JlZlB0cjxTVkdGaWx0ZXI+IFNW
R0ZpbHRlcjo6Y3JlYXRlKFNWR0ZpbHRlckVsZW1lbnQmIGZpbHRlckVsZW1lbnQsIFNWR0ZpbHRl
ckJ1aWxkZXImIGJ1aWxkZXIsIGNvbnN0IEZsb2F0U2l6ZSYgZmlsdGVyU2NhbGUsIGNvbnN0IEZs
b2F0UmVjdCYgc291cmNlSW1hZ2VSZWN0LCBjb25zdCBGbG9hdFJlY3QmIGZpbHRlclJlZ2lvbiwg
Y29uc3QgRmxvYXRSZWN0JiB0YXJnZXRCb3VuZGluZ0JveCkKK3sKKyAgICByZXR1cm4gY3JlYXRl
KGZpbHRlckVsZW1lbnQsIGJ1aWxkZXIsIGZpbHRlclNjYWxlLCBzb3VyY2VJbWFnZVJlY3QsIGZp
bHRlclJlZ2lvbiwgdGFyZ2V0Qm91bmRpbmdCb3gsIG51bGxwdHIpOworfQorCitSZWZQdHI8U1ZH
RmlsdGVyPiBTVkdGaWx0ZXI6OmNyZWF0ZShTVkdGaWx0ZXJFbGVtZW50JiBmaWx0ZXJFbGVtZW50
LCBTVkdGaWx0ZXJCdWlsZGVyJiBidWlsZGVyLCBjb25zdCBGbG9hdFNpemUmIGZpbHRlclNjYWxl
LCBjb25zdCBGbG9hdFJlY3QmIHNvdXJjZUltYWdlUmVjdCwgY29uc3QgRmxvYXRSZWN0JiBmaWx0
ZXJSZWdpb24sIGNvbnN0IEZsb2F0UmVjdCYgdGFyZ2V0Qm91bmRpbmdCb3gsIEZpbHRlckVmZmVj
dCogcHJldmlvdXNFZmZlY3QpCit7CisgICAgYm9vbCBwcmltaXRpdmVCb3VuZGluZ0JveE1vZGUg
PSBmaWx0ZXJFbGVtZW50LnByaW1pdGl2ZVVuaXRzKCkgPT0gU1ZHVW5pdFR5cGVzOjpTVkdfVU5J
VF9UWVBFX09CSkVDVEJPVU5ESU5HQk9YOworCisgICAgYXV0byBmaWx0ZXIgPSBhZG9wdFJlZigq
bmV3IFNWR0ZpbHRlcihmaWx0ZXJTY2FsZSwgc291cmNlSW1hZ2VSZWN0LCBmaWx0ZXJSZWdpb24s
IHRhcmdldEJvdW5kaW5nQm94LCBwcmltaXRpdmVCb3VuZGluZ0JveE1vZGUpKTsKKworICAgIGlm
ICghcHJldmlvdXNFZmZlY3QpCisgICAgICAgIGJ1aWxkZXIuc2V0dXBCdWlsdGluRWZmZWN0cyhT
b3VyY2VHcmFwaGljOjpjcmVhdGUoKSk7CisgICAgZWxzZQorICAgICAgICBidWlsZGVyLnNldHVw
QnVpbHRpbkVmZmVjdHMoeyAqcHJldmlvdXNFZmZlY3QgfSk7CisKKyAgICBidWlsZGVyLnNldFRh
cmdldEJvdW5kaW5nQm94KHRhcmdldEJvdW5kaW5nQm94KTsKKyAgICBidWlsZGVyLnNldFByaW1p
dGl2ZVVuaXRzKGZpbHRlckVsZW1lbnQucHJpbWl0aXZlVW5pdHMoKSk7CisKKyAgICBhdXRvIGxh
c3RFZmZlY3QgPSBidWlsZGVyLmJ1aWxkRmlsdGVyRWZmZWN0cyhmaWx0ZXJFbGVtZW50KTsKKyAg
ICBpZiAoIWxhc3RFZmZlY3QpCisgICAgICAgIHJldHVybiBudWxscHRyOworICAgIAorICAgIHN0
YXRpYyBjb25zdCB1bnNpZ25lZCBtYXhUb3RhbE9mRWZmZWN0SW5wdXRzID0gMTAwOworICAgIGlm
IChsYXN0RWZmZWN0LT50b3RhbE51bWJlck9mRWZmZWN0SW5wdXRzKCkgPiBtYXhUb3RhbE9mRWZm
ZWN0SW5wdXRzKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKworICAgIGZpbHRlci0+c2V0TGFz
dEVmZmVjdChXVEZNb3ZlKGxhc3RFZmZlY3QpKTsKKyAgICByZXR1cm4gZmlsdGVyOworfQorCitT
VkdGaWx0ZXI6OlNWR0ZpbHRlcihjb25zdCBGbG9hdFNpemUmIGZpbHRlclNjYWxlLCBjb25zdCBG
bG9hdFJlY3QmIHNvdXJjZUltYWdlUmVjdCwgY29uc3QgRmxvYXRSZWN0JiBmaWx0ZXJSZWdpb24s
IGNvbnN0IEZsb2F0UmVjdCYgdGFyZ2V0Qm91bmRpbmdCb3gsIGJvb2wgZWZmZWN0QkJveE1vZGUp
CisgICAgOiBGaWx0ZXIoRmlsdGVyOjpUeXBlOjpTVkdGaWx0ZXIsIGZpbHRlclNjYWxlLCBzb3Vy
Y2VJbWFnZVJlY3QsIGZpbHRlclJlZ2lvbikKICAgICAsIG1fdGFyZ2V0Qm91bmRpbmdCb3godGFy
Z2V0Qm91bmRpbmdCb3gpCi0gICAgLCBtX2ZpbHRlclJlZ2lvbihmaWx0ZXJSZWdpb24pCiAgICAg
LCBtX2VmZmVjdEJCb3hNb2RlKGVmZmVjdEJCb3hNb2RlKQogewotICAgIG1fYWJzb2x1dGVGaWx0
ZXJSZWdpb24gPSBhYnNvbHV0ZVRyYW5zZm9ybS5tYXBSZWN0KGZpbHRlclJlZ2lvbik7CiB9CiAK
LUZsb2F0U2l6ZSBTVkdGaWx0ZXI6OnNjYWxlZEJ5RmlsdGVyUmVzb2x1dGlvbihGbG9hdFNpemUg
c2l6ZSkgY29uc3QKK0Zsb2F0U2l6ZSBTVkdGaWx0ZXI6OnNjYWxlZEJ5RmlsdGVyU2NhbGUoRmxv
YXRTaXplIHNpemUpIGNvbnN0CiB7CiAgICAgaWYgKG1fZWZmZWN0QkJveE1vZGUpCiAgICAgICAg
IHNpemUgPSBzaXplICogbV90YXJnZXRCb3VuZGluZ0JveC5zaXplKCk7CiAKLSAgICByZXR1cm4g
RmlsdGVyOjpzY2FsZWRCeUZpbHRlclJlc29sdXRpb24oc2l6ZSkgKiBtX2Fic29sdXRlRmlsdGVy
UmVnaW9uLnNpemUoKSAvIG1fZmlsdGVyUmVnaW9uLnNpemUoKTsKKyAgICByZXR1cm4gRmlsdGVy
OjpzY2FsZWRCeUZpbHRlclNjYWxlKHNpemUpOworfQorCit2b2lkIFNWR0ZpbHRlcjo6YXBwbHko
Y29uc3QgRmlsdGVyJiBmaWx0ZXIpCit7CisgICAgc2V0U291cmNlSW1hZ2UoeyBmaWx0ZXIuc291
cmNlSW1hZ2UoKSB9KTsKKyAgICBhcHBseUZpbHRlcigpOworfQorCit2b2lkIFNWR0ZpbHRlcjo6
YXBwbHlGaWx0ZXIoKQoreworICAgIG1fbGFzdEVmZmVjdC0+YXBwbHkoKnRoaXMpOworfQorCitJ
bnRPdXRzZXRzIFNWR0ZpbHRlcjo6b3V0c2V0cygpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fbGFz
dEVmZmVjdC0+b3V0c2V0cygpOwogfQogCi1SZWY8U1ZHRmlsdGVyPiBTVkdGaWx0ZXI6OmNyZWF0
ZShjb25zdCBBZmZpbmVUcmFuc2Zvcm0mIGFic29sdXRlVHJhbnNmb3JtLCBjb25zdCBGbG9hdFJl
Y3QmIGFic29sdXRlU291cmNlRHJhd2luZ1JlZ2lvbiwgY29uc3QgRmxvYXRSZWN0JiB0YXJnZXRC
b3VuZGluZ0JveCwgY29uc3QgRmxvYXRSZWN0JiBmaWx0ZXJSZWdpb24sIGJvb2wgZWZmZWN0QkJv
eE1vZGUpCit2b2lkIFNWR0ZpbHRlcjo6Y2xlYXJSZXN1bHQoKQogewotICAgIHJldHVybiBhZG9w
dFJlZigqbmV3IFNWR0ZpbHRlcihhYnNvbHV0ZVRyYW5zZm9ybSwgYWJzb2x1dGVTb3VyY2VEcmF3
aW5nUmVnaW9uLCB0YXJnZXRCb3VuZGluZ0JveCwgZmlsdGVyUmVnaW9uLCBlZmZlY3RCQm94TW9k
ZSkpOworICAgIG1fbGFzdEVmZmVjdC0+Y2xlYXJSZXN1bHRzUmVjdXJzaXZlKCk7CiB9CiAKIH0g
Ly8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9ncmFw
aGljcy9maWx0ZXJzL1NWR0ZpbHRlci5oIGIvU291cmNlL1dlYkNvcmUvc3ZnL2dyYXBoaWNzL2Zp
bHRlcnMvU1ZHRmlsdGVyLmgKaW5kZXggODA5MzE0NmQ2NGFmODg4NWJjM2RhNDkzMDJmNWFlYTBm
YjE3MDBjZi4uZmU4MjJkODFmOWNjYTQ2MTEwYTg3ZTJiMDQ4OGYzNmUwYWUwYmU4OCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL2dyYXBoaWNzL2ZpbHRlcnMvU1ZHRmlsdGVyLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvc3ZnL2dyYXBoaWNzL2ZpbHRlcnMvU1ZHRmlsdGVyLmgKQEAgLTIw
LDQxICsyMCw0NiBAQAogCiAjcHJhZ21hIG9uY2UKIAotI2luY2x1ZGUgIkFmZmluZVRyYW5zZm9y
bS5oIgogI2luY2x1ZGUgIkZpbHRlci5oIgotI2luY2x1ZGUgIkZpbHRlckVmZmVjdC5oIgogI2lu
Y2x1ZGUgIkZsb2F0UmVjdC5oIgogI2luY2x1ZGUgPHd0Zi9SZWYuaD4KICNpbmNsdWRlIDx3dGYv
VHlwZUNhc3RzLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAorY2xhc3MgU1ZHRmlsdGVyQnVp
bGRlcjsKK2NsYXNzIFNWR0ZpbHRlckVsZW1lbnQ7CisKIGNsYXNzIFNWR0ZpbHRlciBmaW5hbCA6
IHB1YmxpYyBGaWx0ZXIgewogcHVibGljOgotICAgIHN0YXRpYyBSZWY8U1ZHRmlsdGVyPiBjcmVh
dGUoY29uc3QgQWZmaW5lVHJhbnNmb3JtJiwgY29uc3QgRmxvYXRSZWN0JiwgY29uc3QgRmxvYXRS
ZWN0JiwgY29uc3QgRmxvYXRSZWN0JiwgYm9vbCk7Ci0KLSAgICBGbG9hdFJlY3QgZmlsdGVyUmVn
aW9uSW5Vc2VyU3BhY2UoKSBjb25zdCBmaW5hbCB7IHJldHVybiBtX2ZpbHRlclJlZ2lvbjsgfQot
ICAgIEZsb2F0UmVjdCBmaWx0ZXJSZWdpb24oKSBjb25zdCBmaW5hbCB7IHJldHVybiBtX2Fic29s
dXRlRmlsdGVyUmVnaW9uOyB9CisgICAgc3RhdGljIFJlZlB0cjxTVkdGaWx0ZXI+IGNyZWF0ZShT
VkdGaWx0ZXJFbGVtZW50JiwgU1ZHRmlsdGVyQnVpbGRlciYsIGNvbnN0IEZsb2F0U2l6ZSYgZmls
dGVyU2NhbGUsIGNvbnN0IEZsb2F0UmVjdCYgc291cmNlSW1hZ2VSZWN0LCBjb25zdCBGbG9hdFJl
Y3QmIGZpbHRlclJlZ2lvbiwgRmlsdGVyRWZmZWN0JiBwcmV2aW91c0VmZmVjdCk7CisgICAgc3Rh
dGljIFJlZlB0cjxTVkdGaWx0ZXI+IGNyZWF0ZShTVkdGaWx0ZXJFbGVtZW50JiwgU1ZHRmlsdGVy
QnVpbGRlciYsIGNvbnN0IEZsb2F0U2l6ZSYgZmlsdGVyU2NhbGUsIGNvbnN0IEZsb2F0UmVjdCYg
c291cmNlSW1hZ2VSZWN0LCBjb25zdCBGbG9hdFJlY3QmIGZpbHRlclJlZ2lvbiwgY29uc3QgRmxv
YXRSZWN0JiB0YXJnZXRCb3VuZGluZ0JveCk7CisgICAgc3RhdGljIFJlZlB0cjxTVkdGaWx0ZXI+
IGNyZWF0ZShTVkdGaWx0ZXJFbGVtZW50JiwgU1ZHRmlsdGVyQnVpbGRlciYsIGNvbnN0IEZsb2F0
U2l6ZSYgZmlsdGVyU2NhbGUsIGNvbnN0IEZsb2F0UmVjdCYgc291cmNlSW1hZ2VSZWN0LCBjb25z
dCBGbG9hdFJlY3QmIGZpbHRlclJlZ2lvbiwgY29uc3QgRmxvYXRSZWN0JiB0YXJnZXRCb3VuZGlu
Z0JveCwgRmlsdGVyRWZmZWN0KiBwcmV2aW91c0VmZmVjdCk7CiAKLSAgICBGbG9hdFNpemUgc2Nh
bGVkQnlGaWx0ZXJSZXNvbHV0aW9uKEZsb2F0U2l6ZSkgY29uc3QgZmluYWw7CisgICAgRmxvYXRT
aXplIHNjYWxlZEJ5RmlsdGVyU2NhbGUoRmxvYXRTaXplKSBjb25zdCBmaW5hbDsKKyAgICB2b2lk
IGFwcGx5KGNvbnN0IEZpbHRlciYpIG92ZXJyaWRlOworICAgIHZvaWQgYXBwbHlGaWx0ZXIoKSBv
dmVycmlkZTsKIAotICAgIEZsb2F0UmVjdCBzb3VyY2VJbWFnZVJlY3QoKSBjb25zdCBmaW5hbCB7
IHJldHVybiBtX2Fic29sdXRlU291cmNlRHJhd2luZ1JlZ2lvbjsgfQogICAgIEZsb2F0UmVjdCB0
YXJnZXRCb3VuZGluZ0JveCgpIGNvbnN0IHsgcmV0dXJuIG1fdGFyZ2V0Qm91bmRpbmdCb3g7IH0K
IAotICAgIGJvb2wgaXNTVkdGaWx0ZXIoKSBjb25zdCBmaW5hbCB7IHJldHVybiB0cnVlOyB9Cisg
ICAgUmVmUHRyPEZpbHRlckVmZmVjdD4gbGFzdEVmZmVjdCgpIHsgcmV0dXJuIG1fbGFzdEVmZmVj
dDsgfQorICAgIHZvaWQgc2V0TGFzdEVmZmVjdChSZWZQdHI8RmlsdGVyRWZmZWN0PiYmIGxhc3RF
ZmZlY3QpIHsgbV9sYXN0RWZmZWN0ID0gV1RGTW92ZShsYXN0RWZmZWN0KTsgfQogCiBwcml2YXRl
OgotICAgIFNWR0ZpbHRlcihjb25zdCBBZmZpbmVUcmFuc2Zvcm0mIGFic29sdXRlVHJhbnNmb3Jt
LCBjb25zdCBGbG9hdFJlY3QmIGFic29sdXRlU291cmNlRHJhd2luZ1JlZ2lvbiwgY29uc3QgRmxv
YXRSZWN0JiB0YXJnZXRCb3VuZGluZ0JveCwgY29uc3QgRmxvYXRSZWN0JiBmaWx0ZXJSZWdpb24s
IGJvb2wgZWZmZWN0QkJveE1vZGUpOworICAgIFNWR0ZpbHRlcihjb25zdCBGbG9hdFNpemUmIGZp
bHRlclNjYWxlLCBjb25zdCBGbG9hdFJlY3QmIHNvdXJjZUltYWdlUmVjdCwgY29uc3QgRmxvYXRS
ZWN0JiB0YXJnZXRCb3VuZGluZ0JveCwgY29uc3QgRmxvYXRSZWN0JiBmaWx0ZXJSZWdpb24sIGJv
b2wgZWZmZWN0QkJveE1vZGUpOworCisgICAgSW50T3V0c2V0cyBvdXRzZXRzKCkgY29uc3Qgb3Zl
cnJpZGU7CisgICAgdm9pZCBjbGVhclJlc3VsdCgpIG92ZXJyaWRlOwogCi0gICAgRmxvYXRSZWN0
IG1fYWJzb2x1dGVTb3VyY2VEcmF3aW5nUmVnaW9uOwogICAgIEZsb2F0UmVjdCBtX3RhcmdldEJv
dW5kaW5nQm94OwotICAgIEZsb2F0UmVjdCBtX2Fic29sdXRlRmlsdGVyUmVnaW9uOwotICAgIEZs
b2F0UmVjdCBtX2ZpbHRlclJlZ2lvbjsKICAgICBib29sIG1fZWZmZWN0QkJveE1vZGU7CisKKyAg
ICBSZWZQdHI8RmlsdGVyRWZmZWN0PiBtX2xhc3RFZmZlY3Q7CiB9OwogCiB9IC8vIG5hbWVzcGFj
ZSBXZWJDb3JlCiAKIFNQRUNJQUxJWkVfVFlQRV9UUkFJVFNfQkVHSU4oV2ViQ29yZTo6U1ZHRmls
dGVyKQogICAgIHN0YXRpYyBib29sIGlzVHlwZShjb25zdCBXZWJDb3JlOjpGaWx0ZXImIGZpbHRl
cikgeyByZXR1cm4gZmlsdGVyLmlzU1ZHRmlsdGVyKCk7IH0KKyAgICBzdGF0aWMgYm9vbCBpc1R5
cGUoY29uc3QgV2ViQ29yZTo6RmlsdGVyRnVuY3Rpb24mIGZ1bmN0aW9uKSB7IHJldHVybiBmdW5j
dGlvbi5pc1NWR0ZpbHRlcigpOyB9CiBTUEVDSUFMSVpFX1RZUEVfVFJBSVRTX0VORCgpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvZ3JhcGhpY3MvZmlsdGVycy9TVkdGaWx0ZXJCdWls
ZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9ncmFwaGljcy9maWx0ZXJzL1NWR0ZpbHRlckJ1
aWxkZXIuY3BwCmluZGV4IDk2ZjNhODA1MDQyOTU1NTgxMDM0ZDk4YTRmZGFjNGVhZjMwODdiOTQu
LmE4NmMwYTljYzk5Y2NjYzM1ODUzZDNjZDI0OTAyNzg0NmZiYWE0NDkgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3N2Zy9ncmFwaGljcy9maWx0ZXJzL1NWR0ZpbHRlckJ1aWxkZXIuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9ncmFwaGljcy9maWx0ZXJzL1NWR0ZpbHRlckJ1aWxkZXIu
Y3BwCkBAIC0yMCwyMCArMjAsNzUgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJT
VkdGaWx0ZXJCdWlsZGVyLmgiCiAKLSNpbmNsdWRlICJGaWx0ZXJFZmZlY3QuaCIKKyNpbmNsdWRl
ICJFbGVtZW50SXRlcmF0b3IuaCIKKyNpbmNsdWRlICJJbWFnZUJ1ZmZlci5oIgorI2luY2x1ZGUg
IlNWR0ZpbHRlckVsZW1lbnQuaCIKKyNpbmNsdWRlICJTVkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFy
ZEF0dHJpYnV0ZXMuaCIKICNpbmNsdWRlICJTb3VyY2VBbHBoYS5oIgogI2luY2x1ZGUgIlNvdXJj
ZUdyYXBoaWMuaCIKICNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdDb25jYXRlbmF0ZU51bWJlcnMu
aD4KIAorI2lmIEVOQUJMRShERVNUSU5BVElPTl9DT0xPUl9TUEFDRV9MSU5FQVJfU1JHQikKKyNp
bmNsdWRlICJDU1NDb21wdXRlZFN0eWxlRGVjbGFyYXRpb24uaCIKKyNpbmNsdWRlICJDU1NQcmlt
aXRpdmVWYWx1ZU1hcHBpbmdzLmgiCisjZW5kaWYKKwogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1T
VkdGaWx0ZXJCdWlsZGVyOjpTVkdGaWx0ZXJCdWlsZGVyKFJlZlB0cjxGaWx0ZXJFZmZlY3Q+IHNv
dXJjZUdyYXBoaWMpCit2b2lkIFNWR0ZpbHRlckJ1aWxkZXI6OnNldHVwQnVpbHRpbkVmZmVjdHMo
UmVmPEZpbHRlckVmZmVjdD4gc291cmNlR3JhcGhpYykKIHsKLSAgICBtX2J1aWx0aW5FZmZlY3Rz
LmFkZChTb3VyY2VHcmFwaGljOjplZmZlY3ROYW1lKCksIHNvdXJjZUdyYXBoaWMpOwotICAgIG1f
YnVpbHRpbkVmZmVjdHMuYWRkKFNvdXJjZUFscGhhOjplZmZlY3ROYW1lKCksIFNvdXJjZUFscGhh
OjpjcmVhdGUoKnNvdXJjZUdyYXBoaWMpKTsKKyAgICBtX2J1aWx0aW5FZmZlY3RzLmFkZChTb3Vy
Y2VHcmFwaGljOjplZmZlY3ROYW1lKCksIHNvdXJjZUdyYXBoaWMucHRyKCkpOworICAgIG1fYnVp
bHRpbkVmZmVjdHMuYWRkKFNvdXJjZUFscGhhOjplZmZlY3ROYW1lKCksIFNvdXJjZUFscGhhOjpj
cmVhdGUoc291cmNlR3JhcGhpYykpOwogICAgIGFkZEJ1aWx0aW5FZmZlY3RzKCk7CiB9CiAKKyNp
ZiBFTkFCTEUoREVTVElOQVRJT05fQ09MT1JfU1BBQ0VfTElORUFSX1NSR0IpCitzdGF0aWMgQ29s
b3JJbnRlcnBvbGF0aW9uIGNvbG9ySW50ZXJwb2xhdGlvbkZvckVsZW1lbnQoU1ZHRWxlbWVudCYg
ZWxlbWVudCkKK3sKKyAgICBpZiAoYXV0byByZW5kZXJlciA9IGVsZW1lbnQucmVuZGVyZXIoKSkK
KyAgICAgICAgcmV0dXJuIHJlbmRlcmVyLT5zdHlsZSgpLnN2Z1N0eWxlKCkuY29sb3JJbnRlcnBv
bGF0aW9uRmlsdGVycygpOworCisgICAgLy8gVHJ5IHRvIGRldGVybWluZSB0aGUgcHJvcGVydHkg
dmFsdWUgZnJvbSB0aGUgY29tcHV0ZWQgc3R5bGUuCisgICAgaWYgKGF1dG8gdmFsdWUgPSBDb21w
dXRlZFN0eWxlRXh0cmFjdG9yKCZlbGVtZW50KS5wcm9wZXJ0eVZhbHVlKENTU1Byb3BlcnR5Q29s
b3JJbnRlcnBvbGF0aW9uRmlsdGVycykpIHsKKyAgICAgICAgaWYgKGlzPENTU1ByaW1pdGl2ZVZh
bHVlPih2YWx1ZSkpCisgICAgICAgICAgICByZXR1cm4gZG93bmNhc3Q8Q1NTUHJpbWl0aXZlVmFs
dWU+KCp2YWx1ZSk7CisgICAgfQorCisgICAgcmV0dXJuIENvbG9ySW50ZXJwb2xhdGlvbjo6QXV0
bzsKK30KKyNlbmRpZgorCitSZWZQdHI8RmlsdGVyRWZmZWN0PiBTVkdGaWx0ZXJCdWlsZGVyOjpi
dWlsZEZpbHRlckVmZmVjdHMoU1ZHRmlsdGVyRWxlbWVudCYgZmlsdGVyRWxlbWVudCkKK3sKKyAg
ICBzdGF0aWMgY29uc3QgdW5zaWduZWQgbWF4Q291bnRDaGlsZE5vZGVzID0gMjAwOworICAgIGlm
IChmaWx0ZXJFbGVtZW50LmNvdW50Q2hpbGROb2RlcygpID4gbWF4Q291bnRDaGlsZE5vZGVzKQor
ICAgICAgICByZXR1cm4gbnVsbHB0cjsKKworICAgIFJlZlB0cjxGaWx0ZXJFZmZlY3Q+IGVmZmVj
dDsKKworICAgIGZvciAoYXV0byYgZWZmZWN0RWxlbWVudCA6IGNoaWxkcmVuT2ZUeXBlPFNWR0Zp
bHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlcz4oZmlsdGVyRWxlbWVudCkpIHsKKyAgICAg
ICAgZWZmZWN0ID0gZWZmZWN0RWxlbWVudC5idWlsZCgqdGhpcyk7CisgICAgICAgIGlmICghZWZm
ZWN0KSB7CisgICAgICAgICAgICBjbGVhckVmZmVjdHMoKTsKKyAgICAgICAgICAgIHJldHVybiBu
dWxscHRyOworICAgICAgICB9CisKKyAgICAgICAgZWZmZWN0RWxlbWVudC5zZXRTdGFuZGFyZEF0
dHJpYnV0ZXMoZWZmZWN0LmdldCgpKTsKKyAgICAgICAgZWZmZWN0LT5zZXRFZmZlY3RCb3VuZGFy
aWVzKFNWR0xlbmd0aENvbnRleHQ6OnJlc29sdmVSZWN0YW5nbGU8U1ZHRmlsdGVyUHJpbWl0aXZl
U3RhbmRhcmRBdHRyaWJ1dGVzPigmZWZmZWN0RWxlbWVudCwgbV9wcmltaXRpdmVVbml0cywgbV90
YXJnZXRCb3VuZGluZ0JveCkpOworCisjaWYgRU5BQkxFKERFU1RJTkFUSU9OX0NPTE9SX1NQQUNF
X0xJTkVBUl9TUkdCKQorICAgICAgICBpZiAoY29sb3JJbnRlcnBvbGF0aW9uRm9yRWxlbWVudChl
ZmZlY3RFbGVtZW50KSA9PSBDb2xvckludGVycG9sYXRpb246OkxpbmVhclJHQikKKyAgICAgICAg
ICAgIGVmZmVjdC0+c2V0T3BlcmF0aW5nQ29sb3JTcGFjZShEZXN0aW5hdGlvbkNvbG9yU3BhY2U6
OkxpbmVhclNSR0IoKSk7CisjZW5kaWYKKyAgICAgICAgaWYgKGF1dG8gcmVuZGVyZXIgPSBlZmZl
Y3RFbGVtZW50LnJlbmRlcmVyKCkpCisgICAgICAgICAgICBhcHBlbmRFZmZlY3RUb0VmZmVjdFJl
ZmVyZW5jZXMoZWZmZWN0LmNvcHlSZWYoKSwgcmVuZGVyZXIpOworCisgICAgICAgIGFkZChlZmZl
Y3RFbGVtZW50LnJlc3VsdCgpLCBlZmZlY3QpOworICAgIH0KKworICAgIHJldHVybiBlZmZlY3Q7
Cit9CisKIHZvaWQgU1ZHRmlsdGVyQnVpbGRlcjo6YWRkKGNvbnN0IEF0b21TdHJpbmcmIGlkLCBS
ZWZQdHI8RmlsdGVyRWZmZWN0PiBlZmZlY3QpCiB7CiAgICAgaWYgKGlkLmlzRW1wdHkoKSkgewpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL2dyYXBoaWNzL2ZpbHRlcnMvU1ZHRmlsdGVy
QnVpbGRlci5oIGIvU291cmNlL1dlYkNvcmUvc3ZnL2dyYXBoaWNzL2ZpbHRlcnMvU1ZHRmlsdGVy
QnVpbGRlci5oCmluZGV4IGM3N2FlMDhiYWM2NWMzYzJjZmM4OTc0ZmEzM2U3NjQ2MGNlOTdmYTcu
LmI3YjgyNGI0ODQzMjMyNTc3ZDIxMzBkODQ2YWFjOGI3ZjA5ZGU5OTcgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3N2Zy9ncmFwaGljcy9maWx0ZXJzL1NWR0ZpbHRlckJ1aWxkZXIuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9zdmcvZ3JhcGhpY3MvZmlsdGVycy9TVkdGaWx0ZXJCdWlsZGVyLmgK
QEAgLTM3LDcgKzM3LDcgQEAgY2xhc3MgU1ZHRmlsdGVyQnVpbGRlciB7CiBwdWJsaWM6CiAgICAg
dHlwZWRlZiBIYXNoU2V0PEZpbHRlckVmZmVjdCo+IEZpbHRlckVmZmVjdFNldDsKIAotICAgIFNW
R0ZpbHRlckJ1aWxkZXIoUmVmUHRyPEZpbHRlckVmZmVjdD4gc291cmNlR3JhcGhpYyk7CisgICAg
U1ZHRmlsdGVyQnVpbGRlcigpID0gZGVmYXVsdDsKIAogICAgIHZvaWQgc2V0VGFyZ2V0Qm91bmRp
bmdCb3goY29uc3QgRmxvYXRSZWN0JiByKSB7IG1fdGFyZ2V0Qm91bmRpbmdCb3ggPSByOyB9CiAg
ICAgRmxvYXRSZWN0IHRhcmdldEJvdW5kaW5nQm94KCkgY29uc3QgeyByZXR1cm4gbV90YXJnZXRC
b3VuZGluZ0JveDsgfQpAQCAtNjUsNiArNjUsOSBAQCBwdWJsaWM6CiAgICAgdm9pZCBjbGVhckVm
ZmVjdHMoKTsKICAgICB2b2lkIGNsZWFyUmVzdWx0c1JlY3Vyc2l2ZShGaWx0ZXJFZmZlY3QqKTsK
IAorICAgIHZvaWQgc2V0dXBCdWlsdGluRWZmZWN0cyhSZWY8RmlsdGVyRWZmZWN0PiBzb3VyY2VH
cmFwaGljKTsKKyAgICBSZWZQdHI8RmlsdGVyRWZmZWN0PiBidWlsZEZpbHRlckVmZmVjdHMoU1ZH
RmlsdGVyRWxlbWVudCYpOworCiBwcml2YXRlOgogICAgIGlubGluZSB2b2lkIGFkZEJ1aWx0aW5F
ZmZlY3RzKCkKICAgICB7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cgYi9MYXlv
dXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXggNjZjM2FhMjE0MzY4NjhhNTQwZmM2MjljZTIxY2UyNjI4
YTc5MmNmZS4uYTQ2MGY1MDFkNTcyOTBmZTE0MGEzNTI1M2VhMmQxMjNhYjZiMmI0ZCAxMDA2NDQK
LS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwpA
QCAtMSwzICsxLDIzIEBACisyMDIxLTEwLTMxICBTYWlkIEFib3UtSGFsbGF3YSAgPHNhaWRAYXBw
bGUuY29tPgorCisgICAgICAgIFtHUFUgUHJvY2Vzc10gUmVtb3ZlIHRoZSByZWZlcmVuY2UgdG8g
RmlsdGVyIGZyb20gRmlsdGVyRWZmZWN0CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0yMzI1NTEKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICBBZGQgdHdvIGZhaWx1cmVzIHJlbGF0ZWQgdG8gdGhlIGNvbG9yIHNw
YWNlIHRvIFRlc3RFeHBlY3RhdGlvbnMuCisKKyAgICAgICAgKiBUZXN0RXhwZWN0YXRpb25zOgor
CisyMDIxLTEwLTMxICBTYWlkIEFib3UtSGFsbGF3YSAgPHNhaWRAYXBwbGUuY29tPgorCisgICAg
ICAgIFtHUFUgUHJvY2Vzc10gTWFrZSBDU1NGaWx0ZXIgaG9sZHMgYSBsaXN0IG9mIEZpbHRlckZ1
bmN0aW9ucworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MjMyNDY5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
KiBUZXN0RXhwZWN0YXRpb25zOgorCiAyMDIxLTEwLTMwICBXZW5zb24gSHNpZWggIDx3ZW5zb25f
aHNpZWhAYXBwbGUuY29tPgogCiAgICAgICAgIExheWVyIHRyZWUgc2hvdWxkIG5vdCBiZSBzdHVj
ayBpbiBmcm96ZW4gc3RhdGUgYWZ0ZXIgZXhwbGljaXRseSBzdG9wcGluZyBhIHBhZ2UgbG9hZApk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvVGVzdEV4cGVjdGF0aW9ucyBiL0xheW91dFRlc3RzL1Rl
c3RFeHBlY3RhdGlvbnMKaW5kZXggZTkxZjQxZTg4MmQ1NmVjMTljNmU1ZjIyMmU5ZjdmNTNlNDZi
YjgxZS4uZWZkYTEzMWVlYmNlN2VlMTEwMmY1Y2I5OTg0Zjc4MDFiMjlkNjQ4ZSAxMDA2NDQKLS0t
IGEvTGF5b3V0VGVzdHMvVGVzdEV4cGVjdGF0aW9ucworKysgYi9MYXlvdXRUZXN0cy9UZXN0RXhw
ZWN0YXRpb25zCkBAIC01MTg2LDMgKzUxODYsMTYgQEAgc2VjdXJpdHkvY29udGVudFNlY3VyaXR5
UG9saWN5L3BsdWdpbnMtdHlwZXMtYmxvY2tzLXF1aWNrdGltZS1wbHVnaW4tcmVwbGFjZW1lbnQK
IHNlY3VyaXR5L2NvbnRlbnRTZWN1cml0eVBvbGljeS9wbHVnaW5zLXR5cGVzLWJsb2Nrcy15b3V0
dWJlLXBsdWdpbi1yZXBsYWNlbWVudC13aXRob3V0LW1pbWUtdHlwZS5odG1sIFsgU2tpcCBdCiBz
ZWN1cml0eS9jb250ZW50U2VjdXJpdHlQb2xpY3kvcGx1Z2lucy10eXBlcy1ibG9ja3MteW91dHVi
ZS1wbHVnaW4tcmVwbGFjZW1lbnQuaHRtbCBbIFNraXAgXQogdXNlcnNjcmlwdHMvdXNlci1zY3Jp
cHQtcGx1Z2luLWRvY3VtZW50Lmh0bWwgWyBTa2lwIF0KKworIyBUaGVzZSBmYWlsdXJlcyBzaG91
bGQgYmUgZml4ZWQgb25jZSB3ZWJraXQub3JnL2IvMjMxMjUzIGlzIHJlc29sdmVkCit3ZWJraXQu
b3JnL2IvMjMxMjUzIGNvbXBvc2l0aW5nL2ZpbHRlcnMvc3ctbmVzdGVkLXNoYWRvdy1vdmVybGFw
cy1ody1uZXN0ZWQtc2hhZG93Lmh0bWwgWyBGYWlsdXJlIF0KK3dlYmtpdC5vcmcvYi8yMzEyNTMg
Y29tcG9zaXRpbmcvZmlsdGVycy9zdy1zaGFkb3ctb3ZlcmxhcHMtaHctbGF5ZXIuaHRtbCBbIEZh
aWx1cmUgXQord2Via2l0Lm9yZy9iLzIzMTI1MyBjb21wb3NpdGluZy9maWx0ZXJzL3N3LXNoYWRv
dy1vdmVybGFwcy1ody1zaGFkb3cuaHRtbCBbIEZhaWx1cmUgXQord2Via2l0Lm9yZy9iLzIzMTI1
MyBjc3MzL2ZpbHRlcnMvZmlsdGVycy1vbi1zdmctcm9vdC5odG1sIFsgSW1hZ2VPbmx5RmFpbHVy
ZSBdCit3ZWJraXQub3JnL2IvMjMxMjUzIGNzczMvZmlsdGVycy9zdmctYmx1ci1maWx0ZXItY2xp
cHBlZC5odG1sIFsgSW1hZ2VPbmx5RmFpbHVyZSBdCit3ZWJraXQub3JnL2IvMjMxMjUzIGZhc3Qv
ZmlsdGVyLWltYWdlL2ZpbHRlci1pbWFnZS1ibHVyLmh0bWwgWyBJbWFnZU9ubHlGYWlsdXJlIF0K
K3dlYmtpdC5vcmcvYi8yMzEyNTMgZmFzdC9ncmFkaWVudHMvY29uaWMtZ3JhZGllbnQtZXh0ZW5k
ZWQtc3RvcHMuaHRtbCBbIEltYWdlT25seUZhaWx1cmUgXQord2Via2l0Lm9yZy9iLzIzMTI1MyBp
bXBvcnRlZC9tb3ppbGxhL3N2Zy9keW5hbWljLWZpbHRlci1jb250ZW50cy0wMWEuc3ZnIFsgSW1h
Z2VPbmx5RmFpbHVyZSBdCit3ZWJraXQub3JnL2IvMjMxMjUzIGltcG9ydGVkL21vemlsbGEvc3Zn
L2ZpbHRlcnMvZmVDb21wb3NpdGUtMi5zdmcgWyBJbWFnZU9ubHlGYWlsdXJlIF0KK3dlYmtpdC5v
cmcvYi8yMzEyNTMgaW1wb3J0ZWQvbW96aWxsYS9zdmcvZmlsdGVycy9mZVNwZWN1bGFyTGlnaHRp
bmctMS5zdmcgWyBJbWFnZU9ubHlGYWlsdXJlIF0KK3dlYmtpdC5vcmcvYi8yMzEyNTMgc3ZnL2Zp
bHRlcnMvZmVMaWdodGluZy1jbGlwcGVkLnN2ZyBbIEltYWdlT25seUZhaWx1cmUgXQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>442957</attachid>
            <date>2021-10-31 22:19:22 -0700</date>
            <delta_ts>2021-11-10 23:07:25 -0800</delta_ts>
            <desc>Patch for review</desc>
            <filename>Filters-split-remove-filter-reference-3.patch</filename>
            <type>text/plain</type>
            <size>155515</size>
            <attacher name="Said Abou-Hallawa">sabouhallawa</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCA2MDhhNmViZjYwZmMuLmE0NjBmNTAxZDU3MiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVz
dHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE0IEBA
CisyMDIxLTEwLTMxICBTYWlkIEFib3UtSGFsbGF3YSAgPHNhaWRAYXBwbGUuY29tPgorCisgICAg
ICAgIFtHUFUgUHJvY2Vzc10gUmVtb3ZlIHRoZSByZWZlcmVuY2UgdG8gRmlsdGVyIGZyb20gRmls
dGVyRWZmZWN0CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0yMzI1NTEKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICBBZGQgdHdvIGZhaWx1cmVzIHJlbGF0ZWQgdG8gdGhlIGNvbG9yIHNwYWNlIHRvIFRlc3RFeHBl
Y3RhdGlvbnMuCisKKyAgICAgICAgKiBUZXN0RXhwZWN0YXRpb25zOgorCiAyMDIxLTEwLTMxICBT
YWlkIEFib3UtSGFsbGF3YSAgPHNhaWRAYXBwbGUuY29tPgogCiAgICAgICAgIFtHUFUgUHJvY2Vz
c10gTWFrZSBDU1NGaWx0ZXIgaG9sZHMgYSBsaXN0IG9mIEZpbHRlckZ1bmN0aW9ucwpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvVGVzdEV4cGVjdGF0aW9ucyBiL0xheW91dFRlc3RzL1Rlc3RFeHBl
Y3RhdGlvbnMKaW5kZXggZjQ4ZDVkMWQ0YzcyLi5lZmRhMTMxZWViY2UgMTAwNjQ0Ci0tLSBhL0xh
eW91dFRlc3RzL1Rlc3RFeHBlY3RhdGlvbnMKKysrIGIvTGF5b3V0VGVzdHMvVGVzdEV4cGVjdGF0
aW9ucwpAQCAtNTE5MSw3ICs1MTkxLDEwIEBAIHVzZXJzY3JpcHRzL3VzZXItc2NyaXB0LXBsdWdp
bi1kb2N1bWVudC5odG1sIFsgU2tpcCBdCiB3ZWJraXQub3JnL2IvMjMxMjUzIGNvbXBvc2l0aW5n
L2ZpbHRlcnMvc3ctbmVzdGVkLXNoYWRvdy1vdmVybGFwcy1ody1uZXN0ZWQtc2hhZG93Lmh0bWwg
WyBGYWlsdXJlIF0KIHdlYmtpdC5vcmcvYi8yMzEyNTMgY29tcG9zaXRpbmcvZmlsdGVycy9zdy1z
aGFkb3ctb3ZlcmxhcHMtaHctbGF5ZXIuaHRtbCBbIEZhaWx1cmUgXQogd2Via2l0Lm9yZy9iLzIz
MTI1MyBjb21wb3NpdGluZy9maWx0ZXJzL3N3LXNoYWRvdy1vdmVybGFwcy1ody1zaGFkb3cuaHRt
bCBbIEZhaWx1cmUgXQord2Via2l0Lm9yZy9iLzIzMTI1MyBjc3MzL2ZpbHRlcnMvZmlsdGVycy1v
bi1zdmctcm9vdC5odG1sIFsgSW1hZ2VPbmx5RmFpbHVyZSBdCit3ZWJraXQub3JnL2IvMjMxMjUz
IGNzczMvZmlsdGVycy9zdmctYmx1ci1maWx0ZXItY2xpcHBlZC5odG1sIFsgSW1hZ2VPbmx5RmFp
bHVyZSBdCiB3ZWJraXQub3JnL2IvMjMxMjUzIGZhc3QvZmlsdGVyLWltYWdlL2ZpbHRlci1pbWFn
ZS1ibHVyLmh0bWwgWyBJbWFnZU9ubHlGYWlsdXJlIF0KK3dlYmtpdC5vcmcvYi8yMzEyNTMgZmFz
dC9ncmFkaWVudHMvY29uaWMtZ3JhZGllbnQtZXh0ZW5kZWQtc3RvcHMuaHRtbCBbIEltYWdlT25s
eUZhaWx1cmUgXQogd2Via2l0Lm9yZy9iLzIzMTI1MyBpbXBvcnRlZC9tb3ppbGxhL3N2Zy9keW5h
bWljLWZpbHRlci1jb250ZW50cy0wMWEuc3ZnIFsgSW1hZ2VPbmx5RmFpbHVyZSBdCiB3ZWJraXQu
b3JnL2IvMjMxMjUzIGltcG9ydGVkL21vemlsbGEvc3ZnL2ZpbHRlcnMvZmVDb21wb3NpdGUtMi5z
dmcgWyBJbWFnZU9ubHlGYWlsdXJlIF0KIHdlYmtpdC5vcmcvYi8yMzEyNTMgaW1wb3J0ZWQvbW96
aWxsYS9zdmcvZmlsdGVycy9mZVNwZWN1bGFyTGlnaHRpbmctMS5zdmcgWyBJbWFnZU9ubHlGYWls
dXJlIF0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJD
b3JlL0NoYW5nZUxvZwppbmRleCBiNmI3NTU5NDNhYmEuLjA2YmIxNjU2NWU2NCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxv
ZwpAQCAtMSwzICsxLDI2OCBAQAorMjAyMS0xMC0zMSAgU2FpZCBBYm91LUhhbGxhd2EgIDxzYWlk
QGFwcGxlLmNvbT4KKworICAgICAgICBbR1BVIFByb2Nlc3NdIFJlbW92ZSB0aGUgcmVmZXJlbmNl
IHRvIEZpbHRlciBmcm9tIEZpbHRlckVmZmVjdAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjMyNTUxCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgSW5zdGVhZCBvZiBoYXZpbmcgYSByZWZlcmVuY2UgdG8gdGhl
IEZpbHRlciBpbiB0aGUgRmlsdGVyRWZmZWN0LCB3ZSBhcmUKKyAgICAgICAgZ29pbmcgdG8gcGFz
cyBhIHJlZmVyZW5jZSB0byB0aGUgRmlsdGVyIHRvIHRoZSBGaWx0ZXJFZmZlY3QgZnVuY3Rpb25z
CisgICAgICAgIG9ubHkgd2hlbiBuZWVkZWQuCisKKyAgICAgICAgKiBjc3MvQ1NTRmlsdGVySW1h
Z2VWYWx1ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDU1NGaWx0ZXJJbWFnZVZhbHVlOjppbWFn
ZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY29yZWltYWdlL0ZpbHRlckVmZmVjdFJl
bmRlcmVyQ29yZUltYWdlLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY29yZWltYWdl
L0ZpbHRlckVmZmVjdFJlbmRlcmVyQ29yZUltYWdlLm1tOgorICAgICAgICAoV2ViQ29yZTo6Rmls
dGVyRWZmZWN0UmVuZGVyZXJDb3JlSW1hZ2U6OnN1cHBvcnRzQ29yZUltYWdlUmVuZGVyaW5nKToK
KyAgICAgICAgKFdlYkNvcmU6OkZpbHRlckVmZmVjdFJlbmRlcmVyQ29yZUltYWdlOjphcHBseUVm
ZmVjdHMpOgorICAgICAgICAoV2ViQ29yZTo6RmlsdGVyRWZmZWN0UmVuZGVyZXJDb3JlSW1hZ2U6
OmNvbm5lY3RDSUZpbHRlcnMpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NwdS9hcm0v
ZmlsdGVycy9GRUJsZW5kTkVPTi5oOgorICAgICAgICAoV2ViQ29yZTo6RkVCbGVuZDo6cGxhdGZv
cm1BcHBseVNvZnR3YXJlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZF
QmxlbmQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RkVCbGVuZDo6RkVCbGVuZCk6CisgICAgICAg
IChXZWJDb3JlOjpGRUJsZW5kOjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6RkVCbGVuZDo6
cGxhdGZvcm1BcHBseVNvZnR3YXJlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9maWx0
ZXJzL0ZFQmxlbmQuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFQ29s
b3JNYXRyaXguY3BwOgorICAgICAgICAoV2ViQ29yZTo6RkVDb2xvck1hdHJpeDo6RkVDb2xvck1h
dHJpeCk6CisgICAgICAgIChXZWJDb3JlOjpGRUNvbG9yTWF0cml4OjpjcmVhdGUpOgorICAgICAg
ICAoV2ViQ29yZTo6RkVDb2xvck1hdHJpeDo6cGxhdGZvcm1BcHBseVNvZnR3YXJlKToKKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFQ29sb3JNYXRyaXguaDoKKyAgICAgICAg
KiBwbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFQ29tcG9uZW50VHJhbnNmZXIuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6RkVDb21wb25lbnRUcmFuc2Zlcjo6RkVDb21wb25lbnRUcmFuc2Zlcik6
CisgICAgICAgIChXZWJDb3JlOjpGRUNvbXBvbmVudFRyYW5zZmVyOjpjcmVhdGUpOgorICAgICAg
ICAoV2ViQ29yZTo6RkVDb21wb25lbnRUcmFuc2Zlcjo6cGxhdGZvcm1BcHBseVNvZnR3YXJlKToK
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFQ29tcG9uZW50VHJhbnNmZXIu
aDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFQ29tcG9zaXRlLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkZFQ29tcG9zaXRlOjpGRUNvbXBvc2l0ZSk6CisgICAgICAgIChX
ZWJDb3JlOjpGRUNvbXBvc2l0ZTo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkZFQ29tcG9z
aXRlOjpkZXRlcm1pbmVBYnNvbHV0ZVBhaW50UmVjdCk6CisgICAgICAgIChXZWJDb3JlOjpGRUNv
bXBvc2l0ZTo6cGxhdGZvcm1BcHBseVNvZnR3YXJlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9maWx0ZXJzL0ZFQ29tcG9zaXRlLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
ZmlsdGVycy9GRUNvbnZvbHZlTWF0cml4LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZFQ29udm9s
dmVNYXRyaXg6OkZFQ29udm9sdmVNYXRyaXgpOgorICAgICAgICAoV2ViQ29yZTo6RkVDb252b2x2
ZU1hdHJpeDo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkZFQ29udm9sdmVNYXRyaXg6OnBs
YXRmb3JtQXBwbHlTb2Z0d2FyZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVy
cy9GRUNvbnZvbHZlTWF0cml4Lmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVy
cy9GRURpZmZ1c2VMaWdodGluZy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGRURpZmZ1c2VMaWdo
dGluZzo6RkVEaWZmdXNlTGlnaHRpbmcpOgorICAgICAgICAoV2ViQ29yZTo6RkVEaWZmdXNlTGln
aHRpbmc6OmNyZWF0ZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRURp
ZmZ1c2VMaWdodGluZy5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVE
aXNwbGFjZW1lbnRNYXAuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RkVEaXNwbGFjZW1lbnRNYXA6
OkZFRGlzcGxhY2VtZW50TWFwKToKKyAgICAgICAgKFdlYkNvcmU6OkZFRGlzcGxhY2VtZW50TWFw
OjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6RkVEaXNwbGFjZW1lbnRNYXA6OnBsYXRmb3Jt
QXBwbHlTb2Z0d2FyZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRURp
c3BsYWNlbWVudE1hcC5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVE
cm9wU2hhZG93LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZFRHJvcFNoYWRvdzo6RkVEcm9wU2hh
ZG93KToKKyAgICAgICAgKFdlYkNvcmU6OkZFRHJvcFNoYWRvdzo6Y3JlYXRlKToKKyAgICAgICAg
KFdlYkNvcmU6OkZFRHJvcFNoYWRvdzo6ZGV0ZXJtaW5lQWJzb2x1dGVQYWludFJlY3QpOgorICAg
ICAgICAoV2ViQ29yZTo6RkVEcm9wU2hhZG93OjpwbGF0Zm9ybUFwcGx5U29mdHdhcmUpOgorICAg
ICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVEcm9wU2hhZG93Lmg6CisgICAgICAg
ICogcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRUZsb29kLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkZFRmxvb2Q6OkZFRmxvb2QpOgorICAgICAgICAoV2ViQ29yZTo6RkVGbG9vZDo6Y3JlYXRl
KToKKyAgICAgICAgKFdlYkNvcmU6OkZFRmxvb2Q6OnBsYXRmb3JtQXBwbHlTb2Z0d2FyZSk6Cisg
ICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRUZsb29kLmg6CisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRUdhdXNzaWFuQmx1ci5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpGRUdhdXNzaWFuQmx1cjo6RkVHYXVzc2lhbkJsdXIpOgorICAgICAgICAoV2ViQ29y
ZTo6RkVHYXVzc2lhbkJsdXI6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpGRUdhdXNzaWFu
Qmx1cjo6Y2FsY3VsYXRlS2VybmVsU2l6ZSk6CisgICAgICAgIChXZWJDb3JlOjpGRUdhdXNzaWFu
Qmx1cjo6ZGV0ZXJtaW5lQWJzb2x1dGVQYWludFJlY3QpOgorICAgICAgICAoV2ViQ29yZTo6RkVH
YXVzc2lhbkJsdXI6OnBsYXRmb3JtQXBwbHlTb2Z0d2FyZSk6CisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3MvZmlsdGVycy9GRUdhdXNzaWFuQmx1ci5oOgorICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL2ZpbHRlcnMvRkVMaWdodGluZy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGRUxpZ2h0
aW5nOjpGRUxpZ2h0aW5nKToKKyAgICAgICAgKFdlYkNvcmU6OkZFTGlnaHRpbmc6OnBsYXRmb3Jt
QXBwbHlTb2Z0d2FyZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRUxp
Z2h0aW5nLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRU1lcmdlLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkZFTWVyZ2U6OkZFTWVyZ2UpOgorICAgICAgICAoV2ViQ29y
ZTo6RkVNZXJnZTo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkZFTWVyZ2U6OnBsYXRmb3Jt
QXBwbHlTb2Z0d2FyZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRU1l
cmdlLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRU1vcnBob2xvZ3ku
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6RkVNb3JwaG9sb2d5OjpGRU1vcnBob2xvZ3kpOgorICAg
ICAgICAoV2ViQ29yZTo6RkVNb3JwaG9sb2d5OjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6
RkVNb3JwaG9sb2d5OjpkZXRlcm1pbmVBYnNvbHV0ZVBhaW50UmVjdCk6CisgICAgICAgIChXZWJD
b3JlOjpGRU1vcnBob2xvZ3k6OnBsYXRmb3JtQXBwbHlTb2Z0d2FyZSk6CisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRU1vcnBob2xvZ3kuaDoKKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy9maWx0ZXJzL0ZFT2Zmc2V0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZFT2Zm
c2V0OjpGRU9mZnNldCk6CisgICAgICAgIChXZWJDb3JlOjpGRU9mZnNldDo6Y3JlYXRlKToKKyAg
ICAgICAgKFdlYkNvcmU6OkZFT2Zmc2V0OjpkZXRlcm1pbmVBYnNvbHV0ZVBhaW50UmVjdCk6Cisg
ICAgICAgIChXZWJDb3JlOjpGRU9mZnNldDo6cGxhdGZvcm1BcHBseVNvZnR3YXJlKToKKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFT2Zmc2V0Lmg6CisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRVNwZWN1bGFyTGlnaHRpbmcuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6RkVTcGVjdWxhckxpZ2h0aW5nOjpGRVNwZWN1bGFyTGlnaHRpbmcpOgorICAgICAg
ICAoV2ViQ29yZTo6RkVTcGVjdWxhckxpZ2h0aW5nOjpjcmVhdGUpOgorICAgICAgICAqIHBsYXRm
b3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVTcGVjdWxhckxpZ2h0aW5nLmg6CisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRVRpbGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RkVU
aWxlOjpGRVRpbGUpOgorICAgICAgICAoV2ViQ29yZTo6RkVUaWxlOjpjcmVhdGUpOgorICAgICAg
ICAoV2ViQ29yZTo6RkVUaWxlOjpwbGF0Zm9ybUFwcGx5U29mdHdhcmUpOgorICAgICAgICAqIHBs
YXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVUaWxlLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3MvZmlsdGVycy9GRVR1cmJ1bGVuY2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RkVUdXJi
dWxlbmNlOjpGRVR1cmJ1bGVuY2UpOgorICAgICAgICAoV2ViQ29yZTo6RkVUdXJidWxlbmNlOjpj
cmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6RkVUdXJidWxlbmNlOjpmaWxsUmVnaW9uIGNvbnN0
KToKKyAgICAgICAgKFdlYkNvcmU6OkZFVHVyYnVsZW5jZTo6ZmlsbFJlZ2lvbldvcmtlcik6Cisg
ICAgICAgIChXZWJDb3JlOjpGRVR1cmJ1bGVuY2U6OnBsYXRmb3JtQXBwbHlTb2Z0d2FyZSk6Cisg
ICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRVR1cmJ1bGVuY2UuaDoKKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZpbHRlci5oOgorICAgICAgICAoV2ViQ29y
ZTo6RmlsdGVyOjphcHBseUZpbHRlcik6CisgICAgICAgIChXZWJDb3JlOjpGaWx0ZXI6OnNvdXJj
ZUltYWdlIGNvbnN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZpbHRl
ckVmZmVjdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGaWx0ZXJFZmZlY3Q6OkZpbHRlckVmZmVj
dCk6CisgICAgICAgIChXZWJDb3JlOjpGaWx0ZXJFZmZlY3Q6OmRldGVybWluZUFic29sdXRlUGFp
bnRSZWN0KToKKyAgICAgICAgKFdlYkNvcmU6OkZpbHRlckVmZmVjdDo6ZGV0ZXJtaW5lRmlsdGVy
UHJpbWl0aXZlU3VicmVnaW9uKToKKyAgICAgICAgKFdlYkNvcmU6OkZpbHRlckVmZmVjdDo6YXBw
bHkpOgorICAgICAgICAoV2ViQ29yZTo6RmlsdGVyRWZmZWN0OjppbWFnZUJ1ZmZlclJlc3VsdCk6
CisgICAgICAgIChXZWJDb3JlOjpGaWx0ZXJFZmZlY3Q6OnVubXVsdGlwbGllZFJlc3VsdCk6Cisg
ICAgICAgIChXZWJDb3JlOjpGaWx0ZXJFZmZlY3Q6OnByZW11bHRpcGxpZWRSZXN1bHQpOgorICAg
ICAgICAoV2ViQ29yZTo6RmlsdGVyRWZmZWN0Ojpjb3B5SW1hZ2VCeXRlcyBjb25zdCk6CisgICAg
ICAgIChXZWJDb3JlOjpGaWx0ZXJFZmZlY3Q6OmNvbnZlcnRQaXhlbEJ1ZmZlclRvQ29sb3JTcGFj
ZSk6CisgICAgICAgIChXZWJDb3JlOjpGaWx0ZXJFZmZlY3Q6OmNvbnZlcnRJbWFnZUJ1ZmZlclRv
Q29sb3JTcGFjZSk6CisgICAgICAgIChXZWJDb3JlOjpGaWx0ZXJFZmZlY3Q6OmNvcHlVbm11bHRp
cGxpZWRSZXN1bHQpOgorICAgICAgICAoV2ViQ29yZTo6RmlsdGVyRWZmZWN0Ojpjb3B5UHJlbXVs
dGlwbGllZFJlc3VsdCk6CisgICAgICAgIChXZWJDb3JlOjpGaWx0ZXJFZmZlY3Q6OmNyZWF0ZUlt
YWdlQnVmZmVyUmVzdWx0KToKKyAgICAgICAgKFdlYkNvcmU6OkZpbHRlckVmZmVjdDo6Y3JlYXRl
VW5tdWx0aXBsaWVkSW1hZ2VSZXN1bHQpOgorICAgICAgICAoV2ViQ29yZTo6RmlsdGVyRWZmZWN0
OjpjcmVhdGVQcmVtdWx0aXBsaWVkSW1hZ2VSZXN1bHQpOgorICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL2ZpbHRlcnMvRmlsdGVyRWZmZWN0Lmg6CisgICAgICAgIChXZWJDb3JlOjpGaWx0ZXJF
ZmZlY3Q6OmZpbHRlcik6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpGaWx0ZXJFZmZlY3Q6
OmZpbHRlciBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZmls
dGVycy9GaWx0ZXJFZmZlY3RSZW5kZXJlci5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L2ZpbHRlcnMvRmlsdGVyRnVuY3Rpb24uY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkZp
bHRlckZ1bmN0aW9uOjpGaWx0ZXJGdW5jdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpmaWx0ZXJO
YW1lcyk6CisgICAgICAgIChXZWJDb3JlOjpGaWx0ZXJGdW5jdGlvbjo6ZmlsdGVyTmFtZSk6Cisg
ICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GaWx0ZXJGdW5jdGlvbi5oOgorICAg
ICAgICAoV2ViQ29yZTo6RmlsdGVyRnVuY3Rpb246OmFwcGx5KToKKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy9maWx0ZXJzL1NvdXJjZUFscGhhLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNv
dXJjZUFscGhhOjpTb3VyY2VBbHBoYSk6CisgICAgICAgIChXZWJDb3JlOjpTb3VyY2VBbHBoYTo6
ZGV0ZXJtaW5lQWJzb2x1dGVQYWludFJlY3QpOgorICAgICAgICAoV2ViQ29yZTo6U291cmNlQWxw
aGE6OnBsYXRmb3JtQXBwbHlTb2Z0d2FyZSk6CisgICAgICAgIChXZWJDb3JlOjpTb3VyY2VBbHBo
YTo6ZWZmZWN0TmFtZSk6IERlbGV0ZWQuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZmls
dGVycy9Tb3VyY2VBbHBoYS5oOgorICAgICAgICAoV2ViQ29yZTo6U291cmNlQWxwaGE6OmVmZmVj
dE5hbWUpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvU291cmNlR3JhcGhp
Yy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTb3VyY2VHcmFwaGljOjpjcmVhdGUpOgorICAgICAg
ICAoV2ViQ29yZTo6U291cmNlR3JhcGhpYzo6U291cmNlR3JhcGhpYyk6CisgICAgICAgIChXZWJD
b3JlOjpTb3VyY2VHcmFwaGljOjpkZXRlcm1pbmVBYnNvbHV0ZVBhaW50UmVjdCk6CisgICAgICAg
IChXZWJDb3JlOjpTb3VyY2VHcmFwaGljOjpwbGF0Zm9ybUFwcGx5U29mdHdhcmUpOgorICAgICAg
ICAoV2ViQ29yZTo6U291cmNlR3JhcGhpYzo6ZWZmZWN0TmFtZSk6IERlbGV0ZWQuCisgICAgICAg
ICogcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9Tb3VyY2VHcmFwaGljLmg6CisgICAgICAgIChX
ZWJDb3JlOjpTb3VyY2VHcmFwaGljOjplZmZlY3ROYW1lKToKKyAgICAgICAgKFdlYkNvcmU6OlNv
dXJjZUdyYXBoaWM6OlNvdXJjZUdyYXBoaWMpOiBEZWxldGVkLgorICAgICAgICAoKTogRGVsZXRl
ZC4KKyAgICAgICAgKGlzVHlwZSk6IERlbGV0ZWQuCisgICAgICAgICogcGxhdGZvcm0vbWVkaWFz
dHJlYW0vbWFjL1JlYWx0aW1lSW5jb21pbmdBdWRpb1NvdXJjZUNvY29hLmNwcDoKKyAgICAgICAg
KiByZW5kZXJpbmcvQ1NTRmlsdGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNTU0ZpbHRlcjo6
Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU0ZpbHRlcjo6Q1NTRmlsdGVyKToKKyAgICAg
ICAgKFdlYkNvcmU6Om1fc291cmNlR3JhcGhpYyk6CisgICAgICAgIChXZWJDb3JlOjpjcmVhdGVC
bHVyRWZmZWN0KToKKyAgICAgICAgKFdlYkNvcmU6OmNyZWF0ZUJyaWdodG5lc3NFZmZlY3QpOgor
ICAgICAgICAoV2ViQ29yZTo6Y3JlYXRlQ29udHJhc3RFZmZlY3QpOgorICAgICAgICAoV2ViQ29y
ZTo6Y3JlYXRlRHJvcFNoYWRvd0VmZmVjdCk6CisgICAgICAgIChXZWJDb3JlOjpjcmVhdGVHcmF5
U2NhbGVFZmZlY3QpOgorICAgICAgICAoV2ViQ29yZTo6Y3JlYXRlSHVlUm90YXRlRWZmZWN0KToK
KyAgICAgICAgKFdlYkNvcmU6OmNyZWF0ZUludmVydEVmZmVjdCk6CisgICAgICAgIChXZWJDb3Jl
OjpjcmVhdGVPcGFjaXR5RWZmZWN0KToKKyAgICAgICAgKFdlYkNvcmU6OmNyZWF0ZVNhdHVyYXRl
RWZmZWN0KToKKyAgICAgICAgKFdlYkNvcmU6OmNyZWF0ZVNlcGlhRWZmZWN0KToKKyAgICAgICAg
KFdlYkNvcmU6OmNyZWF0ZVNWR0ZpbHRlcik6CisgICAgICAgIChXZWJDb3JlOjpzZXR1cExhc3RF
ZmZlY3RQcm9wZXJ0aWVzKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU0ZpbHRlcjo6YnVpbGQpOgor
ICAgICAgICAoV2ViQ29yZTo6Q1NTRmlsdGVyOjppbnB1dENvbnRleHQpOgorICAgICAgICAoV2Vi
Q29yZTo6Q1NTRmlsdGVyOjphbGxvY2F0ZUJhY2tpbmdTdG9yZUlmTmVlZGVkKToKKyAgICAgICAg
KFdlYkNvcmU6OkNTU0ZpbHRlcjo6bGFzdEVmZmVjdCk6CisgICAgICAgIChXZWJDb3JlOjpDU1NG
aWx0ZXI6OmRldGVybWluZUZpbHRlclByaW1pdGl2ZVN1YnJlZ2lvbik6CisgICAgICAgIChXZWJD
b3JlOjpDU1NGaWx0ZXI6OmNsZWFySW50ZXJtZWRpYXRlUmVzdWx0cyk6CisgICAgICAgIChXZWJD
b3JlOjpDU1NGaWx0ZXI6OmFwcGx5RmlsdGVyKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU0ZpbHRl
cjo6b3V0cHV0KToKKyAgICAgICAgKFdlYkNvcmU6OkNTU0ZpbHRlcjo6c2V0U291cmNlSW1hZ2VS
ZWN0KToKKyAgICAgICAgKFdlYkNvcmU6OkNTU0ZpbHRlcjo6b3V0cHV0UmVjdCk6CisgICAgICAg
IChXZWJDb3JlOjpDU1NGaWx0ZXI6Om91dHNldHMgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6
Q1NTRmlsdGVyOjpidWlsZFJlZmVyZW5jZUZpbHRlcik6IERlbGV0ZWQuCisgICAgICAgIChXZWJD
b3JlOjpDU1NGaWx0ZXI6OmFwcGx5KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkNTU0Zp
bHRlcjo6b3V0cHV0IGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkNTU0ZpbHRl
cjo6c2V0TWF4RWZmZWN0UmVjdHMpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6Q1NTRmls
dGVyOjpvdXRwdXRSZWN0IGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKiByZW5kZXJpbmcvQ1NT
RmlsdGVyLmg6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckxheWVyRmlsdGVycy5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpSZW5kZXJMYXllckZpbHRlcnM6OmJlZ2luRmlsdGVyRWZmZWN0KToK
KyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxheWVyRmlsdGVyczo6YXBwbHlGaWx0ZXJFZmZlY3Qp
OgorICAgICAgICAqIHJlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VGaWx0ZXIuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU1ZHUmVzb3VyY2VGaWx0ZXI6OmFwcGx5UmVzb3VyY2Up
OgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU1ZHUmVzb3VyY2VGaWx0ZXI6OnBvc3RBcHBseVJl
c291cmNlKToKKyAgICAgICAgKiBzdmcvU1ZHRkVCbGVuZEVsZW1lbnQuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6U1ZHRkVCbGVuZEVsZW1lbnQ6OmJ1aWxkIGNvbnN0KToKKyAgICAgICAgKiBzdmcv
U1ZHRkVCbGVuZEVsZW1lbnQuaDoKKyAgICAgICAgKiBzdmcvU1ZHRkVDb2xvck1hdHJpeEVsZW1l
bnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHRkVDb2xvck1hdHJpeEVsZW1lbnQ6OmJ1aWxk
IGNvbnN0KToKKyAgICAgICAgKiBzdmcvU1ZHRkVDb2xvck1hdHJpeEVsZW1lbnQuaDoKKyAgICAg
ICAgKiBzdmcvU1ZHRkVDb21wb25lbnRUcmFuc2ZlckVsZW1lbnQuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6U1ZHRkVDb21wb25lbnRUcmFuc2ZlckVsZW1lbnQ6OmJ1aWxkIGNvbnN0KToKKyAgICAg
ICAgKiBzdmcvU1ZHRkVDb21wb25lbnRUcmFuc2ZlckVsZW1lbnQuaDoKKyAgICAgICAgKiBzdmcv
U1ZHRkVDb21wb3NpdGVFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR0ZFQ29tcG9z
aXRlRWxlbWVudDo6YnVpbGQgY29uc3QpOgorICAgICAgICAqIHN2Zy9TVkdGRUNvbXBvc2l0ZUVs
ZW1lbnQuaDoKKyAgICAgICAgKiBzdmcvU1ZHRkVDb252b2x2ZU1hdHJpeEVsZW1lbnQuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6U1ZHRkVDb252b2x2ZU1hdHJpeEVsZW1lbnQ6OmJ1aWxkIGNvbnN0
KToKKyAgICAgICAgKiBzdmcvU1ZHRkVDb252b2x2ZU1hdHJpeEVsZW1lbnQuaDoKKyAgICAgICAg
KiBzdmcvU1ZHRkVEaWZmdXNlTGlnaHRpbmdFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OlNWR0ZFRGlmZnVzZUxpZ2h0aW5nRWxlbWVudDo6YnVpbGQgY29uc3QpOgorICAgICAgICAqIHN2
Zy9TVkdGRURpZmZ1c2VMaWdodGluZ0VsZW1lbnQuaDoKKyAgICAgICAgKiBzdmcvU1ZHRkVEaXNw
bGFjZW1lbnRNYXBFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR0ZFRGlzcGxhY2Vt
ZW50TWFwRWxlbWVudDo6YnVpbGQgY29uc3QpOgorICAgICAgICAqIHN2Zy9TVkdGRURpc3BsYWNl
bWVudE1hcEVsZW1lbnQuaDoKKyAgICAgICAgKiBzdmcvU1ZHRkVEcm9wU2hhZG93RWxlbWVudC5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdGRURyb3BTaGFkb3dFbGVtZW50OjpidWlsZCBjb25z
dCk6CisgICAgICAgICogc3ZnL1NWR0ZFRHJvcFNoYWRvd0VsZW1lbnQuaDoKKyAgICAgICAgKiBz
dmcvU1ZHRkVGbG9vZEVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHRkVGbG9vZEVs
ZW1lbnQ6OmJ1aWxkIGNvbnN0KToKKyAgICAgICAgKiBzdmcvU1ZHRkVGbG9vZEVsZW1lbnQuaDoK
KyAgICAgICAgKiBzdmcvU1ZHRkVHYXVzc2lhbkJsdXJFbGVtZW50LmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OlNWR0ZFR2F1c3NpYW5CbHVyRWxlbWVudDo6YnVpbGQgY29uc3QpOgorICAgICAgICAq
IHN2Zy9TVkdGRUdhdXNzaWFuQmx1ckVsZW1lbnQuaDoKKyAgICAgICAgKiBzdmcvU1ZHRkVJbWFn
ZUVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHRkVJbWFnZUVsZW1lbnQ6OmJ1aWxk
IGNvbnN0KToKKyAgICAgICAgKiBzdmcvU1ZHRkVJbWFnZUVsZW1lbnQuaDoKKyAgICAgICAgKiBz
dmcvU1ZHRkVNZXJnZUVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHRkVNZXJnZUVs
ZW1lbnQ6OmJ1aWxkIGNvbnN0KToKKyAgICAgICAgKiBzdmcvU1ZHRkVNZXJnZUVsZW1lbnQuaDoK
KyAgICAgICAgKiBzdmcvU1ZHRkVNb3JwaG9sb2d5RWxlbWVudC5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpTVkdGRU1vcnBob2xvZ3lFbGVtZW50OjpidWlsZCBjb25zdCk6CisgICAgICAgICogc3Zn
L1NWR0ZFTW9ycGhvbG9neUVsZW1lbnQuaDoKKyAgICAgICAgKiBzdmcvU1ZHRkVPZmZzZXRFbGVt
ZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR0ZFT2Zmc2V0RWxlbWVudDo6YnVpbGQgY29u
c3QpOgorICAgICAgICAqIHN2Zy9TVkdGRU9mZnNldEVsZW1lbnQuaDoKKyAgICAgICAgKiBzdmcv
U1ZHRkVTcGVjdWxhckxpZ2h0aW5nRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdG
RVNwZWN1bGFyTGlnaHRpbmdFbGVtZW50OjpidWlsZCBjb25zdCk6CisgICAgICAgICogc3ZnL1NW
R0ZFU3BlY3VsYXJMaWdodGluZ0VsZW1lbnQuaDoKKyAgICAgICAgKiBzdmcvU1ZHRkVUaWxlRWxl
bWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdGRVRpbGVFbGVtZW50OjpidWlsZCBjb25z
dCk6CisgICAgICAgICogc3ZnL1NWR0ZFVGlsZUVsZW1lbnQuaDoKKyAgICAgICAgKiBzdmcvU1ZH
RkVUdXJidWxlbmNlRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdGRVR1cmJ1bGVu
Y2VFbGVtZW50OjpidWlsZCBjb25zdCk6CisgICAgICAgICogc3ZnL1NWR0ZFVHVyYnVsZW5jZUVs
ZW1lbnQuaDoKKyAgICAgICAgKiBzdmcvU1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1
dGVzLmg6CisgICAgICAgICogc3ZnL2dyYXBoaWNzL2ZpbHRlcnMvU1ZHRkVJbWFnZS5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpGRUltYWdlOjpGRUltYWdlKToKKyAgICAgICAgKFdlYkNvcmU6OkZF
SW1hZ2U6OmNyZWF0ZVdpdGhJbWFnZSk6CisgICAgICAgIChXZWJDb3JlOjpGRUltYWdlOjpjcmVh
dGVXaXRoSVJJUmVmZXJlbmNlKToKKyAgICAgICAgKFdlYkNvcmU6OkZFSW1hZ2U6OmRldGVybWlu
ZUFic29sdXRlUGFpbnRSZWN0KToKKyAgICAgICAgKFdlYkNvcmU6OkZFSW1hZ2U6OnBsYXRmb3Jt
QXBwbHlTb2Z0d2FyZSk6CisgICAgICAgICogc3ZnL2dyYXBoaWNzL2ZpbHRlcnMvU1ZHRkVJbWFn
ZS5oOgorICAgICAgICAqIHN2Zy9ncmFwaGljcy9maWx0ZXJzL1NWR0ZpbHRlci5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpTVkdGaWx0ZXI6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpTVkdG
aWx0ZXI6OmFwcGx5KToKKyAgICAgICAgKFdlYkNvcmU6OlNWR0ZpbHRlcjo6YXBwbHlGaWx0ZXIp
OgorICAgICAgICAqIHN2Zy9ncmFwaGljcy9maWx0ZXJzL1NWR0ZpbHRlci5oOgorICAgICAgICAq
IHN2Zy9ncmFwaGljcy9maWx0ZXJzL1NWR0ZpbHRlckJ1aWxkZXIuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6U1ZHRmlsdGVyQnVpbGRlcjo6YnVpbGRGaWx0ZXJFZmZlY3RzKToKKyAgICAgICAgKiBz
dmcvZ3JhcGhpY3MvZmlsdGVycy9TVkdGaWx0ZXJCdWlsZGVyLmg6CisKIDIwMjEtMTAtMzAgIFNh
aWQgQWJvdS1IYWxsYXdhICA8c2FpZEBhcHBsZS5jb20+CiAKICAgICAgICAgW0dQVSBQcm9jZXNz
XSBNYWtlIENTU0ZpbHRlciBob2xkcyBhIGxpc3Qgb2YgRmlsdGVyRnVuY3Rpb25zCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTRmlsdGVySW1hZ2VWYWx1ZS5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9jc3MvQ1NTRmlsdGVySW1hZ2VWYWx1ZS5jcHAKaW5kZXggNDhiYzJkMTkwMWQ1Li5l
MDdmNTRhMzZkMzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NGaWx0ZXJJbWFn
ZVZhbHVlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTRmlsdGVySW1hZ2VWYWx1ZS5j
cHAKQEAgLTEzMSw3ICsxMzEsNyBAQCBSZWZQdHI8SW1hZ2U+IENTU0ZpbHRlckltYWdlVmFsdWU6
OmltYWdlKFJlbmRlckVsZW1lbnQmIHJlbmRlcmVyLCBjb25zdCBGbG9hdFNpegogICAgICAgICBy
ZXR1cm4gJkltYWdlOjpudWxsSW1hZ2UoKTsKIAogICAgIGNzc0ZpbHRlci0+c2V0U291cmNlSW1h
Z2UoV1RGTW92ZShzb3VyY2VJbWFnZSkpOwotICAgIGNzc0ZpbHRlci0+YXBwbHkoKTsKKyAgICBj
c3NGaWx0ZXItPmFwcGx5RmlsdGVyKCk7CiAKICAgICBhdXRvKiBvdXRwdXQgPSBjc3NGaWx0ZXIt
Pm91dHB1dCgpOwogICAgIGlmICghb3V0cHV0KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY29yZWltYWdlL0ZpbHRlckVmZmVjdFJlbmRlcmVyQ29yZUltYWdl
LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb3JlaW1hZ2UvRmlsdGVyRWZm
ZWN0UmVuZGVyZXJDb3JlSW1hZ2UuaAppbmRleCBlNmM4ZGY0ZDU1YjQuLmU3YmM4NTMyNzJhYiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29yZWltYWdlL0Zp
bHRlckVmZmVjdFJlbmRlcmVyQ29yZUltYWdlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY29yZWltYWdlL0ZpbHRlckVmZmVjdFJlbmRlcmVyQ29yZUltYWdlLmgKQEAg
LTQ3LDcgKzQ3LDcgQEAgY2xhc3MgRmlsdGVyRWZmZWN0UmVuZGVyZXJDb3JlSW1hZ2UgOiBwdWJs
aWMgRmlsdGVyRWZmZWN0UmVuZGVyZXIgewogcHVibGljOgogICAgIHN0YXRpYyBzdGQ6OnVuaXF1
ZV9wdHI8RmlsdGVyRWZmZWN0UmVuZGVyZXJDb3JlSW1hZ2U+IHRyeUNyZWF0ZShGaWx0ZXJFZmZl
Y3QmKTsKICAgICBSZXRhaW5QdHI8Q0lDb250ZXh0PiBzaGFyZWRDSUNvbnRleHQoKTsKLSAgICB2
b2lkIGFwcGx5RWZmZWN0cyhGaWx0ZXJFZmZlY3QmKSBmaW5hbDsKKyAgICB2b2lkIGFwcGx5RWZm
ZWN0cyhjb25zdCBGaWx0ZXImLCBGaWx0ZXJFZmZlY3QmKSBmaW5hbDsKICAgICBib29sIGhhc1Jl
c3VsdCgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1fb3V0cHV0SW1hZ2U7IH0KICAgICBJbWFnZUJ1
ZmZlciogb3V0cHV0KCkgY29uc3QgZmluYWw7CiAgICAgRmxvYXRSZWN0IGRlc3RSZWN0KGNvbnN0
IEZpbHRlckVmZmVjdCYpIGNvbnN0IGZpbmFsOwpAQCAtNTUsMTIgKzU1LDEyIEBAIHB1YmxpYzoK
ICAgICBGaWx0ZXJFZmZlY3RSZW5kZXJlckNvcmVJbWFnZSgpOwogICAgIAogcHJpdmF0ZToKLSAg
ICBSZXRhaW5QdHI8Q0lJbWFnZT4gY29ubmVjdENJRmlsdGVycyhGaWx0ZXJFZmZlY3QmKTsKKyAg
ICBSZXRhaW5QdHI8Q0lJbWFnZT4gY29ubmVjdENJRmlsdGVycyhjb25zdCBGaWx0ZXImLCBGaWx0
ZXJFZmZlY3QmKTsKICAgICB2b2lkIHJlbmRlclRvSW1hZ2VCdWZmZXIoRmlsdGVyRWZmZWN0Jikg
ZmluYWw7CiAgICAgc3RhdGljIGJvb2wgc3VwcG9ydHNDb3JlSW1hZ2VSZW5kZXJpbmcoRmlsdGVy
RWZmZWN0Jik7CiAgICAgc3RhdGljIGJvb2wgY2FuUmVuZGVyVXNpbmdDSUZpbHRlcnMoRmlsdGVy
RWZmZWN0Jik7CiAgICAgCi0gICAgUmV0YWluUHRyPENJSW1hZ2U+IGltYWdlRm9yU291cmNlR3Jh
cGhpYyhTb3VyY2VHcmFwaGljJik7CisgICAgUmV0YWluUHRyPENJSW1hZ2U+IGltYWdlRm9yU291
cmNlR3JhcGhpYyhjb25zdCBGaWx0ZXImKTsKICAgICBSZXRhaW5QdHI8Q0lJbWFnZT4gaW1hZ2VG
b3JGRUNvbG9yTWF0cml4KGNvbnN0IEZFQ29sb3JNYXRyaXgmLCBjb25zdCBWZWN0b3I8UmV0YWlu
UHRyPENJSW1hZ2U+PiYpOwogICAgIFJldGFpblB0cjxDSUltYWdlPiBpbWFnZUZvckZFQ29tcG9u
ZW50VHJhbnNmZXIoY29uc3QgRkVDb21wb25lbnRUcmFuc2ZlciYsIFZlY3RvcjxSZXRhaW5QdHI8
Q0lJbWFnZT4+Jik7CiAgICAgCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jb3JlaW1hZ2UvRmlsdGVyRWZmZWN0UmVuZGVyZXJDb3JlSW1hZ2UubW0gYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb3JlaW1hZ2UvRmlsdGVyRWZmZWN0UmVuZGVy
ZXJDb3JlSW1hZ2UubW0KaW5kZXggOTliMTY5YTM4MWUxLi44YjQwMDE3NzAwZTEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvcmVpbWFnZS9GaWx0ZXJFZmZl
Y3RSZW5kZXJlckNvcmVJbWFnZS5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jb3JlaW1hZ2UvRmlsdGVyRWZmZWN0UmVuZGVyZXJDb3JlSW1hZ2UubW0KQEAgLTk3LDI1
ICs5NywyNSBAQCBib29sIEZpbHRlckVmZmVjdFJlbmRlcmVyQ29yZUltYWdlOjpzdXBwb3J0c0Nv
cmVJbWFnZVJlbmRlcmluZyhGaWx0ZXJFZmZlY3QmIGVmZgogICAgIHJldHVybiBmYWxzZTsKIH0K
IAotdm9pZCBGaWx0ZXJFZmZlY3RSZW5kZXJlckNvcmVJbWFnZTo6YXBwbHlFZmZlY3RzKEZpbHRl
ckVmZmVjdCYgbGFzdEVmZmVjdCkKK3ZvaWQgRmlsdGVyRWZmZWN0UmVuZGVyZXJDb3JlSW1hZ2U6
OmFwcGx5RWZmZWN0cyhjb25zdCBGaWx0ZXImIGZpbHRlciwgRmlsdGVyRWZmZWN0JiBsYXN0RWZm
ZWN0KQogewotICAgIG1fb3V0cHV0SW1hZ2UgPSBjb25uZWN0Q0lGaWx0ZXJzKGxhc3RFZmZlY3Qp
OworICAgIG1fb3V0cHV0SW1hZ2UgPSBjb25uZWN0Q0lGaWx0ZXJzKGZpbHRlciwgbGFzdEVmZmVj
dCk7CiAgICAgaWYgKCFtX291dHB1dEltYWdlKQogICAgICAgICByZXR1cm47CiAgICAgcmVuZGVy
VG9JbWFnZUJ1ZmZlcihsYXN0RWZmZWN0KTsKIH0KIAotUmV0YWluUHRyPENJSW1hZ2U+IEZpbHRl
ckVmZmVjdFJlbmRlcmVyQ29yZUltYWdlOjpjb25uZWN0Q0lGaWx0ZXJzKEZpbHRlckVmZmVjdCYg
ZWZmZWN0KQorUmV0YWluUHRyPENJSW1hZ2U+IEZpbHRlckVmZmVjdFJlbmRlcmVyQ29yZUltYWdl
Ojpjb25uZWN0Q0lGaWx0ZXJzKGNvbnN0IEZpbHRlciYgZmlsdGVyLCBGaWx0ZXJFZmZlY3QmIGVm
ZmVjdCkKIHsKICAgICBWZWN0b3I8UmV0YWluUHRyPENJSW1hZ2U+PiBpbnB1dEltYWdlczsKICAg
ICAKICAgICBmb3IgKGF1dG8gaW4gOiBlZmZlY3QuaW5wdXRFZmZlY3RzKCkpIHsKLSAgICAgICAg
YXV0byBpbnB1dEltYWdlID0gY29ubmVjdENJRmlsdGVycygqaW4pOworICAgICAgICBhdXRvIGlu
cHV0SW1hZ2UgPSBjb25uZWN0Q0lGaWx0ZXJzKGZpbHRlciwgKmluKTsKICAgICAgICAgaWYgKCFp
bnB1dEltYWdlKQogICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgICAgIGlucHV0SW1h
Z2VzLmFwcGVuZChpbnB1dEltYWdlKTsKICAgICB9Ci0gICAgZWZmZWN0LmRldGVybWluZUFic29s
dXRlUGFpbnRSZWN0KCk7CisgICAgZWZmZWN0LmRldGVybWluZUFic29sdXRlUGFpbnRSZWN0KGZp
bHRlcik7CiAgICAgZWZmZWN0LnNldFJlc3VsdENvbG9yU3BhY2UoZWZmZWN0Lm9wZXJhdGluZ0Nv
bG9yU3BhY2UoKSk7CiAgICAgCiAgICAgaWYgKGVmZmVjdC5hYnNvbHV0ZVBhaW50UmVjdCgpLmlz
RW1wdHkoKSB8fCBJbWFnZUJ1ZmZlcjo6c2l6ZU5lZWRzQ2xhbXBpbmcoZWZmZWN0LmFic29sdXRl
UGFpbnRSZWN0KCkuc2l6ZSgpKSkKQEAgLTEyMyw3ICsxMjMsNyBAQCBSZXRhaW5QdHI8Q0lJbWFn
ZT4gRmlsdGVyRWZmZWN0UmVuZGVyZXJDb3JlSW1hZ2U6OmNvbm5lY3RDSUZpbHRlcnMoRmlsdGVy
RWZmZWN0JgogICAgIAogICAgIHN3aXRjaCAoZWZmZWN0LmZpbHRlclR5cGUoKSkgewogICAgIGNh
c2UgRmlsdGVyRWZmZWN0OjpUeXBlOjpTb3VyY2VHcmFwaGljOgotICAgICAgICByZXR1cm4gaW1h
Z2VGb3JTb3VyY2VHcmFwaGljKGRvd25jYXN0PFNvdXJjZUdyYXBoaWM+KGVmZmVjdCkpOworICAg
ICAgICByZXR1cm4gaW1hZ2VGb3JTb3VyY2VHcmFwaGljKGZpbHRlcik7CiAgICAgY2FzZSBGaWx0
ZXJFZmZlY3Q6OlR5cGU6OkZFQ29sb3JNYXRyaXg6CiAgICAgICAgIHJldHVybiBpbWFnZUZvckZF
Q29sb3JNYXRyaXgoZG93bmNhc3Q8RkVDb2xvck1hdHJpeD4oZWZmZWN0KSwgaW5wdXRJbWFnZXMp
OwogICAgIGNhc2UgRmlsdGVyRWZmZWN0OjpUeXBlOjpGRUNvbXBvbmVudFRyYW5zZmVyOgpAQCAt
MTM1LDkgKzEzNSw5IEBAIFJldGFpblB0cjxDSUltYWdlPiBGaWx0ZXJFZmZlY3RSZW5kZXJlckNv
cmVJbWFnZTo6Y29ubmVjdENJRmlsdGVycyhGaWx0ZXJFZmZlY3QmCiAgICAgcmV0dXJuIG51bGxw
dHI7CiB9CiAKLVJldGFpblB0cjxDSUltYWdlPiBGaWx0ZXJFZmZlY3RSZW5kZXJlckNvcmVJbWFn
ZTo6aW1hZ2VGb3JTb3VyY2VHcmFwaGljKFNvdXJjZUdyYXBoaWMmIGVmZmVjdCkKK1JldGFpblB0
cjxDSUltYWdlPiBGaWx0ZXJFZmZlY3RSZW5kZXJlckNvcmVJbWFnZTo6aW1hZ2VGb3JTb3VyY2VH
cmFwaGljKGNvbnN0IEZpbHRlciYgZmlsdGVyKQogewotICAgIEltYWdlQnVmZmVyKiBzb3VyY2VJ
bWFnZSA9IGVmZmVjdC5maWx0ZXIoKS5zb3VyY2VJbWFnZSgpOworICAgIEltYWdlQnVmZmVyKiBz
b3VyY2VJbWFnZSA9IGZpbHRlci5zb3VyY2VJbWFnZSgpOwogICAgIGlmICghc291cmNlSW1hZ2Up
CiAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY3B1L2FybS9maWx0ZXJzL0ZFQmxlbmRORU9OLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jcHUvYXJtL2ZpbHRlcnMvRkVCbGVuZE5FT04u
aAppbmRleCAyNjExMGNkZmIwYmIuLjk4NzFhMDVkZTRjMyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY3B1L2FybS9maWx0ZXJzL0ZFQmxlbmRORU9OLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY3B1L2FybS9maWx0ZXJzL0ZFQmxl
bmRORU9OLmgKQEAgLTEwNyw3ICsxMDcsNyBAQCBwdWJsaWM6CiAgICAgfQogfTsKIAotdm9pZCBG
RUJsZW5kOjpwbGF0Zm9ybUFwcGx5U29mdHdhcmUoKQordm9pZCBGRUJsZW5kOjpwbGF0Zm9ybUFw
cGx5U29mdHdhcmUoY29uc3QgRmlsdGVyJikKIHsKICAgICBGaWx0ZXJFZmZlY3QqIGluID0gaW5w
dXRFZmZlY3QoMCk7CiAgICAgRmlsdGVyRWZmZWN0KiBpbjIgPSBpbnB1dEVmZmVjdCgxKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVCbGVu
ZC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFQmxlbmQu
Y3BwCmluZGV4IGI0Y2FlZDQ1NTU3Mi4uZmJkNTk1NWJhZjkwIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFQmxlbmQuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVCbGVuZC5jcHAKQEAgLTM0LDE1
ICszNCwxNSBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLUZFQmxlbmQ6OkZFQmxlbmQoRmls
dGVyJiBmaWx0ZXIsIEJsZW5kTW9kZSBtb2RlKQotICAgIDogRmlsdGVyRWZmZWN0KGZpbHRlciwg
RmlsdGVyRWZmZWN0OjpUeXBlOjpGRUJsZW5kKQorRkVCbGVuZDo6RkVCbGVuZChCbGVuZE1vZGUg
bW9kZSkKKyAgICA6IEZpbHRlckVmZmVjdChGaWx0ZXJFZmZlY3Q6OlR5cGU6OkZFQmxlbmQpCiAg
ICAgLCBtX21vZGUobW9kZSkKIHsKIH0KIAotUmVmPEZFQmxlbmQ+IEZFQmxlbmQ6OmNyZWF0ZShG
aWx0ZXImIGZpbHRlciwgQmxlbmRNb2RlIG1vZGUpCitSZWY8RkVCbGVuZD4gRkVCbGVuZDo6Y3Jl
YXRlKEJsZW5kTW9kZSBtb2RlKQogewotICAgIHJldHVybiBhZG9wdFJlZigqbmV3IEZFQmxlbmQo
ZmlsdGVyLCBtb2RlKSk7CisgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgRkVCbGVuZChtb2RlKSk7
CiB9CiAKIGJvb2wgRkVCbGVuZDo6c2V0QmxlbmRNb2RlKEJsZW5kTW9kZSBtb2RlKQpAQCAtNTQs
NyArNTQsNyBAQCBib29sIEZFQmxlbmQ6OnNldEJsZW5kTW9kZShCbGVuZE1vZGUgbW9kZSkKIH0K
IAogI2lmICFIQVZFKEFSTV9ORU9OX0lOVFJJTlNJQ1MpCi12b2lkIEZFQmxlbmQ6OnBsYXRmb3Jt
QXBwbHlTb2Z0d2FyZSgpCit2b2lkIEZFQmxlbmQ6OnBsYXRmb3JtQXBwbHlTb2Z0d2FyZShjb25z
dCBGaWx0ZXImKQogewogICAgIEZpbHRlckVmZmVjdCogaW4gPSBpbnB1dEVmZmVjdCgwKTsKICAg
ICBGaWx0ZXJFZmZlY3QqIGluMiA9IGlucHV0RWZmZWN0KDEpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRUJsZW5kLmggYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFQmxlbmQuaAppbmRleCBiODRjOGRkMjgw
NTguLmVlZDMxOGU4YzM1YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvZmlsdGVycy9GRUJsZW5kLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvZmlsdGVycy9GRUJsZW5kLmgKQEAgLTIzLDIwICsyMywyMSBAQAogI3ByYWdtYSBvbmNl
CiAKICNpbmNsdWRlICJGaWx0ZXJFZmZlY3QuaCIKLQotI2luY2x1ZGUgIkZpbHRlci5oIgorI2lu
Y2x1ZGUgIkdyYXBoaWNzVHlwZXMuaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBG
RUJsZW5kIDogcHVibGljIEZpbHRlckVmZmVjdCB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFJlZjxG
RUJsZW5kPiBjcmVhdGUoRmlsdGVyJiwgQmxlbmRNb2RlKTsKKyAgICBzdGF0aWMgUmVmPEZFQmxl
bmQ+IGNyZWF0ZShCbGVuZE1vZGUpOwogCiAgICAgQmxlbmRNb2RlIGJsZW5kTW9kZSgpIGNvbnN0
IHsgcmV0dXJuIG1fbW9kZTsgfQogICAgIGJvb2wgc2V0QmxlbmRNb2RlKEJsZW5kTW9kZSk7CiAK
IHByaXZhdGU6Ci0gICAgdm9pZCBwbGF0Zm9ybUFwcGx5U29mdHdhcmUoKSBvdmVycmlkZTsKKyAg
ICBGRUJsZW5kKEJsZW5kTW9kZSk7CisKKyAgICB2b2lkIHBsYXRmb3JtQXBwbHlTb2Z0d2FyZShj
b25zdCBGaWx0ZXImKSBvdmVycmlkZTsKICAgICB2b2lkIHBsYXRmb3JtQXBwbHlHZW5lcmljKHVu
c2lnbmVkIGNoYXIqIHNyY1BpeGVsQXJyYXlBLCB1bnNpZ25lZCBjaGFyKiBzcmNQaXhlbEFycmF5
QiwgdW5zaWduZWQgY2hhciogZHN0UGl4ZWxBcnJheSwKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHVuc2lnbmVkIGNvbG9yQXJyYXlMZW5ndGgpOwogICAgIHZvaWQgcGxhdGZvcm1BcHBseU5F
T04odW5zaWduZWQgY2hhciogc3JjUGl4ZWxBcnJheUEsIHVuc2lnbmVkIGNoYXIqIHNyY1BpeGVs
QXJyYXlCLCB1bnNpZ25lZCBjaGFyKiBkc3RQaXhlbEFycmF5LApAQCAtNDQsOCArNDUsNiBAQCBw
cml2YXRlOgogCiAgICAgV1RGOjpUZXh0U3RyZWFtJiBleHRlcm5hbFJlcHJlc2VudGF0aW9uKFdU
Rjo6VGV4dFN0cmVhbSYsIFJlcHJlc2VudGF0aW9uVHlwZSkgY29uc3Qgb3ZlcnJpZGU7CiAKLSAg
ICBGRUJsZW5kKEZpbHRlciYsIEJsZW5kTW9kZSk7Ci0KICAgICBCbGVuZE1vZGUgbV9tb2RlOwog
fTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVy
cy9GRUNvbG9yTWF0cml4LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Zp
bHRlcnMvRkVDb2xvck1hdHJpeC5jcHAKaW5kZXggYTc5MWJkNmQzMWZkLi41NWNkNmExNDEwODAg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVD
b2xvck1hdHJpeC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmls
dGVycy9GRUNvbG9yTWF0cml4LmNwcApAQCAtMzUsMTYgKzM1LDE2IEBACiAKIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIAotRkVDb2xvck1hdHJpeDo6RkVDb2xvck1hdHJpeChGaWx0ZXImIGZpbHRlciwg
Q29sb3JNYXRyaXhUeXBlIHR5cGUsIFZlY3RvcjxmbG9hdD4mJiB2YWx1ZXMpCi0gICAgOiBGaWx0
ZXJFZmZlY3QoZmlsdGVyLCBGaWx0ZXJFZmZlY3Q6OlR5cGU6OkZFQ29sb3JNYXRyaXgpCitGRUNv
bG9yTWF0cml4OjpGRUNvbG9yTWF0cml4KENvbG9yTWF0cml4VHlwZSB0eXBlLCBWZWN0b3I8Zmxv
YXQ+JiYgdmFsdWVzKQorICAgIDogRmlsdGVyRWZmZWN0KEZpbHRlckVmZmVjdDo6VHlwZTo6RkVD
b2xvck1hdHJpeCkKICAgICAsIG1fdHlwZSh0eXBlKQogICAgICwgbV92YWx1ZXMoV1RGTW92ZSh2
YWx1ZXMpKQogewogfQogCi1SZWY8RkVDb2xvck1hdHJpeD4gRkVDb2xvck1hdHJpeDo6Y3JlYXRl
KEZpbHRlciYgZmlsdGVyLCBDb2xvck1hdHJpeFR5cGUgdHlwZSwgVmVjdG9yPGZsb2F0PiYmIHZh
bHVlcykKK1JlZjxGRUNvbG9yTWF0cml4PiBGRUNvbG9yTWF0cml4OjpjcmVhdGUoQ29sb3JNYXRy
aXhUeXBlIHR5cGUsIFZlY3RvcjxmbG9hdD4mJiB2YWx1ZXMpCiB7Ci0gICAgcmV0dXJuIGFkb3B0
UmVmKCpuZXcgRkVDb2xvck1hdHJpeChmaWx0ZXIsIHR5cGUsIFdURk1vdmUodmFsdWVzKSkpOwor
ICAgIHJldHVybiBhZG9wdFJlZigqbmV3IEZFQ29sb3JNYXRyaXgodHlwZSwgV1RGTW92ZSh2YWx1
ZXMpKSk7CiB9CiAKIGJvb2wgRkVDb2xvck1hdHJpeDo6c2V0VHlwZShDb2xvck1hdHJpeFR5cGUg
dHlwZSkKQEAgLTI3Myw3ICsyNzMsNyBAQCB2b2lkIGVmZmVjdFR5cGUoVWludDhDbGFtcGVkQXJy
YXkmIHBpeGVsQXJyYXksIGNvbnN0IFZlY3RvcjxmbG9hdD4mIHZhbHVlcywgSW50UwogICAgIH0K
IH0KIAotdm9pZCBGRUNvbG9yTWF0cml4OjpwbGF0Zm9ybUFwcGx5U29mdHdhcmUoKQordm9pZCBG
RUNvbG9yTWF0cml4OjpwbGF0Zm9ybUFwcGx5U29mdHdhcmUoY29uc3QgRmlsdGVyJikKIHsKICAg
ICBGaWx0ZXJFZmZlY3QqIGluID0gaW5wdXRFZmZlY3QoMCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVDb2xvck1hdHJpeC5oIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRUNvbG9yTWF0cml4LmgKaW5k
ZXggOTkyZTc1ZjllODE1Li4yMjlmZjBiOGM0NGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVDb2xvck1hdHJpeC5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVDb2xvck1hdHJpeC5oCkBAIC0yMiw4
ICsyMiw2IEBACiAjcHJhZ21hIG9uY2UKIAogI2luY2x1ZGUgIkZpbHRlckVmZmVjdC5oIgotCi0j
aW5jbHVkZSAiRmlsdGVyLmgiCiAjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgogCiBuYW1lc3BhY2Ug
V2ViQ29yZSB7CkBAIC0zOCw3ICszNiw3IEBAIGVudW0gQ29sb3JNYXRyaXhUeXBlIHsKIAogY2xh
c3MgRkVDb2xvck1hdHJpeCA6IHB1YmxpYyBGaWx0ZXJFZmZlY3QgewogcHVibGljOgotICAgIHN0
YXRpYyBSZWY8RkVDb2xvck1hdHJpeD4gY3JlYXRlKEZpbHRlciYsIENvbG9yTWF0cml4VHlwZSwg
VmVjdG9yPGZsb2F0PiYmKTsKKyAgICBzdGF0aWMgUmVmPEZFQ29sb3JNYXRyaXg+IGNyZWF0ZShD
b2xvck1hdHJpeFR5cGUsIFZlY3RvcjxmbG9hdD4mJik7CiAKICAgICBDb2xvck1hdHJpeFR5cGUg
dHlwZSgpIGNvbnN0IHsgcmV0dXJuIG1fdHlwZTsgfQogICAgIGJvb2wgc2V0VHlwZShDb2xvck1h
dHJpeFR5cGUpOwpAQCAtNTAsOSArNDgsOSBAQCBwdWJsaWM6CiAgICAgc3RhdGljIGlubGluZSB2
b2lkIGNhbGN1bGF0ZUh1ZVJvdGF0ZUNvbXBvbmVudHMoZmxvYXQqIGNvbXBvbmVudHMsIGZsb2F0
IHZhbHVlKTsKIAogcHJpdmF0ZToKLSAgICBGRUNvbG9yTWF0cml4KEZpbHRlciYsIENvbG9yTWF0
cml4VHlwZSwgVmVjdG9yPGZsb2F0PiYmKTsKKyAgICBGRUNvbG9yTWF0cml4KENvbG9yTWF0cml4
VHlwZSwgVmVjdG9yPGZsb2F0PiYmKTsKIAotICAgIHZvaWQgcGxhdGZvcm1BcHBseVNvZnR3YXJl
KCkgb3ZlcnJpZGU7CisgICAgdm9pZCBwbGF0Zm9ybUFwcGx5U29mdHdhcmUoY29uc3QgRmlsdGVy
Jikgb3ZlcnJpZGU7CiAKICAgICBXVEY6OlRleHRTdHJlYW0mIGV4dGVybmFsUmVwcmVzZW50YXRp
b24oV1RGOjpUZXh0U3RyZWFtJiwgUmVwcmVzZW50YXRpb25UeXBlKSBjb25zdCBvdmVycmlkZTsK
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9G
RUNvbXBvbmVudFRyYW5zZmVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2ZpbHRlcnMvRkVDb21wb25lbnRUcmFuc2Zlci5jcHAKaW5kZXggY2UwMGNjMTk4Mjk3Li45OGY2
YzEyNjg0NWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Zp
bHRlcnMvRkVDb21wb25lbnRUcmFuc2Zlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvZmlsdGVycy9GRUNvbXBvbmVudFRyYW5zZmVyLmNwcApAQCAtMzMsOCArMzMs
OCBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLUZFQ29tcG9uZW50VHJhbnNmZXI6OkZFQ29t
cG9uZW50VHJhbnNmZXIoRmlsdGVyJiBmaWx0ZXIsIGNvbnN0IENvbXBvbmVudFRyYW5zZmVyRnVu
Y3Rpb24mIHJlZEZ1bmN0aW9uLCBjb25zdCBDb21wb25lbnRUcmFuc2ZlckZ1bmN0aW9uJiBncmVl
bkZ1bmN0aW9uLCBjb25zdCBDb21wb25lbnRUcmFuc2ZlckZ1bmN0aW9uJiBibHVlRnVuY3Rpb24s
IGNvbnN0IENvbXBvbmVudFRyYW5zZmVyRnVuY3Rpb24mIGFscGhhRnVuY3Rpb24pCi0gICAgOiBG
aWx0ZXJFZmZlY3QoZmlsdGVyLCBGaWx0ZXJFZmZlY3Q6OlR5cGU6OkZFQ29tcG9uZW50VHJhbnNm
ZXIpCitGRUNvbXBvbmVudFRyYW5zZmVyOjpGRUNvbXBvbmVudFRyYW5zZmVyKGNvbnN0IENvbXBv
bmVudFRyYW5zZmVyRnVuY3Rpb24mIHJlZEZ1bmN0aW9uLCBjb25zdCBDb21wb25lbnRUcmFuc2Zl
ckZ1bmN0aW9uJiBncmVlbkZ1bmN0aW9uLCBjb25zdCBDb21wb25lbnRUcmFuc2ZlckZ1bmN0aW9u
JiBibHVlRnVuY3Rpb24sIGNvbnN0IENvbXBvbmVudFRyYW5zZmVyRnVuY3Rpb24mIGFscGhhRnVu
Y3Rpb24pCisgICAgOiBGaWx0ZXJFZmZlY3QoRmlsdGVyRWZmZWN0OjpUeXBlOjpGRUNvbXBvbmVu
dFRyYW5zZmVyKQogICAgICwgbV9yZWRGdW5jdGlvbihyZWRGdW5jdGlvbikKICAgICAsIG1fZ3Jl
ZW5GdW5jdGlvbihncmVlbkZ1bmN0aW9uKQogICAgICwgbV9ibHVlRnVuY3Rpb24oYmx1ZUZ1bmN0
aW9uKQpAQCAtNDIsMTAgKzQyLDEwIEBAIEZFQ29tcG9uZW50VHJhbnNmZXI6OkZFQ29tcG9uZW50
VHJhbnNmZXIoRmlsdGVyJiBmaWx0ZXIsIGNvbnN0IENvbXBvbmVudFRyYW5zZmVyCiB7CiB9CiAK
LVJlZjxGRUNvbXBvbmVudFRyYW5zZmVyPiBGRUNvbXBvbmVudFRyYW5zZmVyOjpjcmVhdGUoRmls
dGVyJiBmaWx0ZXIsIGNvbnN0IENvbXBvbmVudFRyYW5zZmVyRnVuY3Rpb24mIHJlZEZ1bmN0aW9u
LAorUmVmPEZFQ29tcG9uZW50VHJhbnNmZXI+IEZFQ29tcG9uZW50VHJhbnNmZXI6OmNyZWF0ZShj
b25zdCBDb21wb25lbnRUcmFuc2ZlckZ1bmN0aW9uJiByZWRGdW5jdGlvbiwKICAgICBjb25zdCBD
b21wb25lbnRUcmFuc2ZlckZ1bmN0aW9uJiBncmVlbkZ1bmN0aW9uLCBjb25zdCBDb21wb25lbnRU
cmFuc2ZlckZ1bmN0aW9uJiBibHVlRnVuY3Rpb24sIGNvbnN0IENvbXBvbmVudFRyYW5zZmVyRnVu
Y3Rpb24mIGFscGhhRnVuY3Rpb24pCiB7Ci0gICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgRkVDb21w
b25lbnRUcmFuc2ZlcihmaWx0ZXIsIHJlZEZ1bmN0aW9uLCBncmVlbkZ1bmN0aW9uLCBibHVlRnVu
Y3Rpb24sIGFscGhhRnVuY3Rpb24pKTsKKyAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBGRUNvbXBv
bmVudFRyYW5zZmVyKHJlZEZ1bmN0aW9uLCBncmVlbkZ1bmN0aW9uLCBibHVlRnVuY3Rpb24sIGFs
cGhhRnVuY3Rpb24pKTsKIH0KIAogdm9pZCBGRUNvbXBvbmVudFRyYW5zZmVyOjpjb21wdXRlSWRl
bnRpdHlUYWJsZShMb29rdXBUYWJsZSYsIGNvbnN0IENvbXBvbmVudFRyYW5zZmVyRnVuY3Rpb24m
KQpAQCAtMTAzLDcgKzEwMyw3IEBAIHZvaWQgRkVDb21wb25lbnRUcmFuc2Zlcjo6Y29tcHV0ZUdh
bW1hVGFibGUoTG9va3VwVGFibGUmIHZhbHVlcywgY29uc3QgQ29tcG9uZW50CiAgICAgfQogfQog
Ci12b2lkIEZFQ29tcG9uZW50VHJhbnNmZXI6OnBsYXRmb3JtQXBwbHlTb2Z0d2FyZSgpCit2b2lk
IEZFQ29tcG9uZW50VHJhbnNmZXI6OnBsYXRmb3JtQXBwbHlTb2Z0d2FyZShjb25zdCBGaWx0ZXIm
KQogewogICAgIEZpbHRlckVmZmVjdCogaW4gPSBpbnB1dEVmZmVjdCgwKTsKIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRUNvbXBvbmVudFRy
YW5zZmVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFQ29t
cG9uZW50VHJhbnNmZXIuaAppbmRleCAzYjlkMjYwOGIwOTcuLjZhZmVlNWU5Njg2MSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRUNvbXBvbmVu
dFRyYW5zZmVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVy
cy9GRUNvbXBvbmVudFRyYW5zZmVyLmgKQEAgLTIyLDggKzIyLDYgQEAKICNwcmFnbWEgb25jZQog
CiAjaW5jbHVkZSAiRmlsdGVyRWZmZWN0LmgiCi0KLSNpbmNsdWRlICJGaWx0ZXIuaCIKICNpbmNs
dWRlIDx3dGYvVmVjdG9yLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAgLTUzLDggKzUxLDcg
QEAgc3RydWN0IENvbXBvbmVudFRyYW5zZmVyRnVuY3Rpb24gewogCiBjbGFzcyBGRUNvbXBvbmVu
dFRyYW5zZmVyIDogcHVibGljIEZpbHRlckVmZmVjdCB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFJl
ZjxGRUNvbXBvbmVudFRyYW5zZmVyPiBjcmVhdGUoRmlsdGVyJiwgY29uc3QgQ29tcG9uZW50VHJh
bnNmZXJGdW5jdGlvbiYgcmVkRnVuYywgY29uc3QgQ29tcG9uZW50VHJhbnNmZXJGdW5jdGlvbiYg
Z3JlZW5GdW5jLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNv
bnN0IENvbXBvbmVudFRyYW5zZmVyRnVuY3Rpb24mIGJsdWVGdW5jLCBjb25zdCBDb21wb25lbnRU
cmFuc2ZlckZ1bmN0aW9uJiBhbHBoYUZ1bmMpOworICAgIHN0YXRpYyBSZWY8RkVDb21wb25lbnRU
cmFuc2Zlcj4gY3JlYXRlKGNvbnN0IENvbXBvbmVudFRyYW5zZmVyRnVuY3Rpb24mIHJlZEZ1bmMs
IGNvbnN0IENvbXBvbmVudFRyYW5zZmVyRnVuY3Rpb24mIGdyZWVuRnVuYywgY29uc3QgQ29tcG9u
ZW50VHJhbnNmZXJGdW5jdGlvbiYgYmx1ZUZ1bmMsIGNvbnN0IENvbXBvbmVudFRyYW5zZmVyRnVu
Y3Rpb24mIGFscGhhRnVuYyk7CiAKICAgICBDb21wb25lbnRUcmFuc2ZlckZ1bmN0aW9uIHJlZEZ1
bmN0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9yZWRGdW5jdGlvbjsgfQogICAgIENvbXBvbmVudFRy
YW5zZmVyRnVuY3Rpb24gZ3JlZW5GdW5jdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fZ3JlZW5GdW5j
dGlvbjsgfQpAQCAtNjIsOCArNTksNyBAQCBwdWJsaWM6CiAgICAgQ29tcG9uZW50VHJhbnNmZXJG
dW5jdGlvbiBhbHBoYUZ1bmN0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9hbHBoYUZ1bmN0aW9uOyB9
CiAKIHByaXZhdGU6Ci0gICAgRkVDb21wb25lbnRUcmFuc2ZlcihGaWx0ZXImLCBjb25zdCBDb21w
b25lbnRUcmFuc2ZlckZ1bmN0aW9uJiByZWRGdW5jLCBjb25zdCBDb21wb25lbnRUcmFuc2ZlckZ1
bmN0aW9uJiBncmVlbkZ1bmMsCi0gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBDb21wb25l
bnRUcmFuc2ZlckZ1bmN0aW9uJiBibHVlRnVuYywgY29uc3QgQ29tcG9uZW50VHJhbnNmZXJGdW5j
dGlvbiYgYWxwaGFGdW5jKTsKKyAgICBGRUNvbXBvbmVudFRyYW5zZmVyKGNvbnN0IENvbXBvbmVu
dFRyYW5zZmVyRnVuY3Rpb24mIHJlZEZ1bmMsIGNvbnN0IENvbXBvbmVudFRyYW5zZmVyRnVuY3Rp
b24mIGdyZWVuRnVuYywgY29uc3QgQ29tcG9uZW50VHJhbnNmZXJGdW5jdGlvbiYgYmx1ZUZ1bmMs
IGNvbnN0IENvbXBvbmVudFRyYW5zZmVyRnVuY3Rpb24mIGFscGhhRnVuYyk7CiAKICAgICB1c2lu
ZyBMb29rdXBUYWJsZSA9IHN0ZDo6YXJyYXk8dWludDhfdCwgMjU2PjsKIApAQCAtNzUsNyArNzEs
NyBAQCBwcml2YXRlOgogCiAgICAgdm9pZCBjb21wdXRlTG9va3VwVGFibGVzKExvb2t1cFRhYmxl
JiByZWRUYWJsZSwgTG9va3VwVGFibGUmIGdyZWVuVGFibGUsIExvb2t1cFRhYmxlJiBibHVlVGFi
bGUsIExvb2t1cFRhYmxlJiBhbHBoYVRhYmxlKTsKIAotICAgIHZvaWQgcGxhdGZvcm1BcHBseVNv
ZnR3YXJlKCkgb3ZlcnJpZGU7CisgICAgdm9pZCBwbGF0Zm9ybUFwcGx5U29mdHdhcmUoY29uc3Qg
RmlsdGVyJikgb3ZlcnJpZGU7CiAKICAgICBXVEY6OlRleHRTdHJlYW0mIGV4dGVybmFsUmVwcmVz
ZW50YXRpb24oV1RGOjpUZXh0U3RyZWFtJiwgUmVwcmVzZW50YXRpb25UeXBlKSBjb25zdCBvdmVy
cmlkZTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmls
dGVycy9GRUNvbXBvc2l0ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9m
aWx0ZXJzL0ZFQ29tcG9zaXRlLmNwcAppbmRleCBlMGJlZjMwNzQwNWYuLjQ2ZjI2YTkyMWJiMyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRUNv
bXBvc2l0ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVy
cy9GRUNvbXBvc2l0ZS5jcHAKQEAgLTMyLDggKzMyLDggQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUg
ewogCi1GRUNvbXBvc2l0ZTo6RkVDb21wb3NpdGUoRmlsdGVyJiBmaWx0ZXIsIGNvbnN0IENvbXBv
c2l0ZU9wZXJhdGlvblR5cGUmIHR5cGUsIGZsb2F0IGsxLCBmbG9hdCBrMiwgZmxvYXQgazMsIGZs
b2F0IGs0KQotICAgIDogRmlsdGVyRWZmZWN0KGZpbHRlciwgRmlsdGVyRWZmZWN0OjpUeXBlOjpG
RUNvbXBvc2l0ZSkKK0ZFQ29tcG9zaXRlOjpGRUNvbXBvc2l0ZShjb25zdCBDb21wb3NpdGVPcGVy
YXRpb25UeXBlJiB0eXBlLCBmbG9hdCBrMSwgZmxvYXQgazIsIGZsb2F0IGszLCBmbG9hdCBrNCkK
KyAgICA6IEZpbHRlckVmZmVjdChGaWx0ZXJFZmZlY3Q6OlR5cGU6OkZFQ29tcG9zaXRlKQogICAg
ICwgbV90eXBlKHR5cGUpCiAgICAgLCBtX2sxKGsxKQogICAgICwgbV9rMihrMikKQEAgLTQyLDkg
KzQyLDkgQEAgRkVDb21wb3NpdGU6OkZFQ29tcG9zaXRlKEZpbHRlciYgZmlsdGVyLCBjb25zdCBD
b21wb3NpdGVPcGVyYXRpb25UeXBlJiB0eXBlLCBmbG8KIHsKIH0KIAotUmVmPEZFQ29tcG9zaXRl
PiBGRUNvbXBvc2l0ZTo6Y3JlYXRlKEZpbHRlciYgZmlsdGVyLCBjb25zdCBDb21wb3NpdGVPcGVy
YXRpb25UeXBlJiB0eXBlLCBmbG9hdCBrMSwgZmxvYXQgazIsIGZsb2F0IGszLCBmbG9hdCBrNCkK
K1JlZjxGRUNvbXBvc2l0ZT4gRkVDb21wb3NpdGU6OmNyZWF0ZShjb25zdCBDb21wb3NpdGVPcGVy
YXRpb25UeXBlJiB0eXBlLCBmbG9hdCBrMSwgZmxvYXQgazIsIGZsb2F0IGszLCBmbG9hdCBrNCkK
IHsKLSAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBGRUNvbXBvc2l0ZShmaWx0ZXIsIHR5cGUsIGsx
LCBrMiwgazMsIGs0KSk7CisgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgRkVDb21wb3NpdGUodHlw
ZSwgazEsIGsyLCBrMywgazQpKTsKIH0KIAogYm9vbCBGRUNvbXBvc2l0ZTo6c2V0T3BlcmF0aW9u
KENvbXBvc2l0ZU9wZXJhdGlvblR5cGUgdHlwZSkKQEAgLTIwMSw3ICsyMDEsNyBAQCBpbmxpbmUg
dm9pZCBGRUNvbXBvc2l0ZTo6cGxhdGZvcm1Bcml0aG1ldGljU29mdHdhcmUoY29uc3QgVWludDhD
bGFtcGVkQXJyYXkmIHNvdQogI2VuZGlmCiB9CiAKLXZvaWQgRkVDb21wb3NpdGU6OmRldGVybWlu
ZUFic29sdXRlUGFpbnRSZWN0KCkKK3ZvaWQgRkVDb21wb3NpdGU6OmRldGVybWluZUFic29sdXRl
UGFpbnRSZWN0KGNvbnN0IEZpbHRlciYgZmlsdGVyKQogewogICAgIHN3aXRjaCAobV90eXBlKSB7
CiAgICAgY2FzZSBGRUNPTVBPU0lURV9PUEVSQVRPUl9JTjoKQEAgLTIxOCwxMiArMjE4LDEyIEBA
IHZvaWQgRkVDb21wb3NpdGU6OmRldGVybWluZUFic29sdXRlUGFpbnRSZWN0KCkKICAgICAgICAg
cmV0dXJuOwogICAgIGRlZmF1bHQ6CiAgICAgICAgIC8vIFRha2UgdGhlIHVuaW9uIG9mIGJvdGgg
aW5wdXQgZWZmZWN0cy4KLSAgICAgICAgRmlsdGVyRWZmZWN0OjpkZXRlcm1pbmVBYnNvbHV0ZVBh
aW50UmVjdCgpOworICAgICAgICBGaWx0ZXJFZmZlY3Q6OmRldGVybWluZUFic29sdXRlUGFpbnRS
ZWN0KGZpbHRlcik7CiAgICAgICAgIHJldHVybjsKICAgICB9CiB9CiAKLXZvaWQgRkVDb21wb3Np
dGU6OnBsYXRmb3JtQXBwbHlTb2Z0d2FyZSgpCit2b2lkIEZFQ29tcG9zaXRlOjpwbGF0Zm9ybUFw
cGx5U29mdHdhcmUoY29uc3QgRmlsdGVyJikKIHsKICAgICBGaWx0ZXJFZmZlY3QqIGluID0gaW5w
dXRFZmZlY3QoMCk7CiAgICAgRmlsdGVyRWZmZWN0KiBpbjIgPSBpbnB1dEVmZmVjdCgxKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVDb21w
b3NpdGUuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVDb21w
b3NpdGUuaAppbmRleCAzOTIzN2ZlYjEyN2EuLjFjM2E3M2VlNzk5MSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRUNvbXBvc2l0ZS5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVDb21wb3NpdGUuaApA
QCAtMjIsOCArMjIsNiBAQAogI3ByYWdtYSBvbmNlCiAKICNpbmNsdWRlICJGaWx0ZXJFZmZlY3Qu
aCIKLQotI2luY2x1ZGUgIkZpbHRlci5oIgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5o
PgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC00MSw3ICszOSw3IEBAIGVudW0gQ29tcG9zaXRl
T3BlcmF0aW9uVHlwZSB7CiAKIGNsYXNzIEZFQ29tcG9zaXRlIDogcHVibGljIEZpbHRlckVmZmVj
dCB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFJlZjxGRUNvbXBvc2l0ZT4gY3JlYXRlKEZpbHRlciYs
IGNvbnN0IENvbXBvc2l0ZU9wZXJhdGlvblR5cGUmLCBmbG9hdCwgZmxvYXQsIGZsb2F0LCBmbG9h
dCk7CisgICAgc3RhdGljIFJlZjxGRUNvbXBvc2l0ZT4gY3JlYXRlKGNvbnN0IENvbXBvc2l0ZU9w
ZXJhdGlvblR5cGUmLCBmbG9hdCwgZmxvYXQsIGZsb2F0LCBmbG9hdCk7CiAKICAgICBDb21wb3Np
dGVPcGVyYXRpb25UeXBlIG9wZXJhdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fdHlwZTsgfQogICAg
IGJvb2wgc2V0T3BlcmF0aW9uKENvbXBvc2l0ZU9wZXJhdGlvblR5cGUpOwpAQCAtNjIsMTIgKzYw
LDEyIEBAIHByb3RlY3RlZDoKICAgICBib29sIHJlcXVpcmVzVmFsaWRQcmVNdWx0aXBsaWVkUGl4
ZWxzKCkgb3ZlcnJpZGUgeyByZXR1cm4gbV90eXBlICE9IEZFQ09NUE9TSVRFX09QRVJBVE9SX0FS
SVRITUVUSUM7IH0KIAogcHJpdmF0ZToKLSAgICBGRUNvbXBvc2l0ZShGaWx0ZXImLCBjb25zdCBD
b21wb3NpdGVPcGVyYXRpb25UeXBlJiwgZmxvYXQsIGZsb2F0LCBmbG9hdCwgZmxvYXQpOworICAg
IEZFQ29tcG9zaXRlKGNvbnN0IENvbXBvc2l0ZU9wZXJhdGlvblR5cGUmLCBmbG9hdCwgZmxvYXQs
IGZsb2F0LCBmbG9hdCk7CiAKICAgICB2b2lkIGNvcnJlY3RGaWx0ZXJSZXN1bHRJZk5lZWRlZCgp
IG92ZXJyaWRlOwotICAgIHZvaWQgZGV0ZXJtaW5lQWJzb2x1dGVQYWludFJlY3QoKSBvdmVycmlk
ZTsKKyAgICB2b2lkIGRldGVybWluZUFic29sdXRlUGFpbnRSZWN0KGNvbnN0IEZpbHRlciYpIG92
ZXJyaWRlOwogCi0gICAgdm9pZCBwbGF0Zm9ybUFwcGx5U29mdHdhcmUoKSBvdmVycmlkZTsKKyAg
ICB2b2lkIHBsYXRmb3JtQXBwbHlTb2Z0d2FyZShjb25zdCBGaWx0ZXImKSBvdmVycmlkZTsKICAg
ICBXVEY6OlRleHRTdHJlYW0mIGV4dGVybmFsUmVwcmVzZW50YXRpb24oV1RGOjpUZXh0U3RyZWFt
JiwgUmVwcmVzZW50YXRpb25UeXBlKSBjb25zdCBvdmVycmlkZTsKIAogICAgIGlubGluZSB2b2lk
IHBsYXRmb3JtQXJpdGhtZXRpY1NvZnR3YXJlKGNvbnN0IFVpbnQ4Q2xhbXBlZEFycmF5JiBzb3Vy
Y2UsIFVpbnQ4Q2xhbXBlZEFycmF5JiBkZXN0aW5hdGlvbiwgZmxvYXQgazEsIGZsb2F0IGsyLCBm
bG9hdCBrMywgZmxvYXQgazQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvZmlsdGVycy9GRUNvbnZvbHZlTWF0cml4LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVDb252b2x2ZU1hdHJpeC5jcHAKaW5kZXggZTg2ZjEy
OWM1NGIxLi5jN2Y2MTA4ZmY4OTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2ZpbHRlcnMvRkVDb252b2x2ZU1hdHJpeC5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRUNvbnZvbHZlTWF0cml4LmNwcApAQCAtMzIs
OCArMzIsOCBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLUZFQ29udm9sdmVNYXRyaXg6OkZF
Q29udm9sdmVNYXRyaXgoRmlsdGVyJiBmaWx0ZXIsIGNvbnN0IEludFNpemUmIGtlcm5lbFNpemUs
IGZsb2F0IGRpdmlzb3IsIGZsb2F0IGJpYXMsIGNvbnN0IEludFBvaW50JiB0YXJnZXRPZmZzZXQs
IEVkZ2VNb2RlVHlwZSBlZGdlTW9kZSwgY29uc3QgRmxvYXRQb2ludCYga2VybmVsVW5pdExlbmd0
aCwgYm9vbCBwcmVzZXJ2ZUFscGhhLCBjb25zdCBWZWN0b3I8ZmxvYXQ+JiBrZXJuZWxNYXRyaXgp
Ci0gICAgOiBGaWx0ZXJFZmZlY3QoZmlsdGVyLCBGaWx0ZXJFZmZlY3Q6OlR5cGU6OkZFQ29udm9s
dmVNYXRyaXgpCitGRUNvbnZvbHZlTWF0cml4OjpGRUNvbnZvbHZlTWF0cml4KGNvbnN0IEludFNp
emUmIGtlcm5lbFNpemUsIGZsb2F0IGRpdmlzb3IsIGZsb2F0IGJpYXMsIGNvbnN0IEludFBvaW50
JiB0YXJnZXRPZmZzZXQsIEVkZ2VNb2RlVHlwZSBlZGdlTW9kZSwgY29uc3QgRmxvYXRQb2ludCYg
a2VybmVsVW5pdExlbmd0aCwgYm9vbCBwcmVzZXJ2ZUFscGhhLCBjb25zdCBWZWN0b3I8ZmxvYXQ+
JiBrZXJuZWxNYXRyaXgpCisgICAgOiBGaWx0ZXJFZmZlY3QoRmlsdGVyRWZmZWN0OjpUeXBlOjpG
RUNvbnZvbHZlTWF0cml4KQogICAgICwgbV9rZXJuZWxTaXplKGtlcm5lbFNpemUpCiAgICAgLCBt
X2Rpdmlzb3IoZGl2aXNvcikKICAgICAsIG1fYmlhcyhiaWFzKQpAQCAtNDcsMTEgKzQ3LDkgQEAg
RkVDb252b2x2ZU1hdHJpeDo6RkVDb252b2x2ZU1hdHJpeChGaWx0ZXImIGZpbHRlciwgY29uc3Qg
SW50U2l6ZSYga2VybmVsU2l6ZSwgZmwKICAgICBBU1NFUlQobV9rZXJuZWxTaXplLmhlaWdodCgp
ID4gMCk7CiB9CiAKLVJlZjxGRUNvbnZvbHZlTWF0cml4PiBGRUNvbnZvbHZlTWF0cml4OjpjcmVh
dGUoRmlsdGVyJiBmaWx0ZXIsIGNvbnN0IEludFNpemUmIGtlcm5lbFNpemUsCi0gICAgZmxvYXQg
ZGl2aXNvciwgZmxvYXQgYmlhcywgY29uc3QgSW50UG9pbnQmIHRhcmdldE9mZnNldCwgRWRnZU1v
ZGVUeXBlIGVkZ2VNb2RlLAotICAgIGNvbnN0IEZsb2F0UG9pbnQmIGtlcm5lbFVuaXRMZW5ndGgs
IGJvb2wgcHJlc2VydmVBbHBoYSwgY29uc3QgVmVjdG9yPGZsb2F0PiYga2VybmVsTWF0cml4KQor
UmVmPEZFQ29udm9sdmVNYXRyaXg+IEZFQ29udm9sdmVNYXRyaXg6OmNyZWF0ZShjb25zdCBJbnRT
aXplJiBrZXJuZWxTaXplLCBmbG9hdCBkaXZpc29yLCBmbG9hdCBiaWFzLCBjb25zdCBJbnRQb2lu
dCYgdGFyZ2V0T2Zmc2V0LCBFZGdlTW9kZVR5cGUgZWRnZU1vZGUsIGNvbnN0IEZsb2F0UG9pbnQm
IGtlcm5lbFVuaXRMZW5ndGgsIGJvb2wgcHJlc2VydmVBbHBoYSwgY29uc3QgVmVjdG9yPGZsb2F0
PiYga2VybmVsTWF0cml4KQogewotICAgIHJldHVybiBhZG9wdFJlZigqbmV3IEZFQ29udm9sdmVN
YXRyaXgoZmlsdGVyLCBrZXJuZWxTaXplLCBkaXZpc29yLCBiaWFzLCB0YXJnZXRPZmZzZXQsIGVk
Z2VNb2RlLCBrZXJuZWxVbml0TGVuZ3RoLAorICAgIHJldHVybiBhZG9wdFJlZigqbmV3IEZFQ29u
dm9sdmVNYXRyaXgoa2VybmVsU2l6ZSwgZGl2aXNvciwgYmlhcywgdGFyZ2V0T2Zmc2V0LCBlZGdl
TW9kZSwga2VybmVsVW5pdExlbmd0aCwKICAgICAgICAgcHJlc2VydmVBbHBoYSwga2VybmVsTWF0
cml4KSk7CiB9CiAKQEAgLTM2NSw3ICszNjMsNyBAQCBBTFdBWVNfSU5MSU5FIHZvaWQgRkVDb252
b2x2ZU1hdHJpeDo6c2V0T3V0ZXJQaXhlbHMoUGFpbnRpbmdEYXRhJiBwYWludGluZ0RhdGEsCiAg
ICAgICAgIGZhc3RTZXRPdXRlclBpeGVsczxmYWxzZT4ocGFpbnRpbmdEYXRhLCB4MSwgeTEsIHgy
LCB5Mik7CiB9CiAKLXZvaWQgRkVDb252b2x2ZU1hdHJpeDo6cGxhdGZvcm1BcHBseVNvZnR3YXJl
KCkKK3ZvaWQgRkVDb252b2x2ZU1hdHJpeDo6cGxhdGZvcm1BcHBseVNvZnR3YXJlKGNvbnN0IEZp
bHRlciYpCiB7CiAgICAgRmlsdGVyRWZmZWN0KiBpbiA9IGlucHV0RWZmZWN0KDApOwogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFQ29udm9s
dmVNYXRyaXguaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVD
b252b2x2ZU1hdHJpeC5oCmluZGV4IGMxYTVjNWI4Njc1Ni4uOTU3NmRmZWU3ZTg0IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFQ29udm9sdmVN
YXRyaXguaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZF
Q29udm9sdmVNYXRyaXguaApAQCAtMjQsNyArMjQsNiBAQAogCiAjaW5jbHVkZSAiRmlsdGVyRWZm
ZWN0LmgiCiAjaW5jbHVkZSAiRmxvYXRQb2ludC5oIgotI2luY2x1ZGUgIkZpbHRlci5oIgogI2lu
Y2x1ZGUgPHd0Zi9WZWN0b3IuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtMzgsOSArMzcs
NyBAQCBlbnVtIEVkZ2VNb2RlVHlwZSB7CiAKIGNsYXNzIEZFQ29udm9sdmVNYXRyaXggOiBwdWJs
aWMgRmlsdGVyRWZmZWN0IHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUmVmPEZFQ29udm9sdmVNYXRy
aXg+IGNyZWF0ZShGaWx0ZXImLCBjb25zdCBJbnRTaXplJiwKLSAgICAgICAgICAgIGZsb2F0LCBm
bG9hdCwgY29uc3QgSW50UG9pbnQmLCBFZGdlTW9kZVR5cGUsIGNvbnN0IEZsb2F0UG9pbnQmLAot
ICAgICAgICAgICAgYm9vbCwgY29uc3QgVmVjdG9yPGZsb2F0PiYpOworICAgIHN0YXRpYyBSZWY8
RkVDb252b2x2ZU1hdHJpeD4gY3JlYXRlKGNvbnN0IEludFNpemUmIGtlcm5lbFNpemUsIGZsb2F0
IGRpdmlzb3IsIGZsb2F0IGJpYXMsIGNvbnN0IEludFBvaW50JiB0YXJnZXRPZmZzZXQsIEVkZ2VN
b2RlVHlwZSwgY29uc3QgRmxvYXRQb2ludCYga2VybmVsVW5pdExlbmd0aCwgYm9vbCBwcmVzZXJ2
ZUFscGhhLCBjb25zdCBWZWN0b3I8ZmxvYXQ+JiBrZXJuZWxNYXRyaXgpOwogCiAgICAgSW50U2l6
ZSBrZXJuZWxTaXplKCkgY29uc3QgeyByZXR1cm4gbV9rZXJuZWxTaXplOyB9CiAgICAgdm9pZCBz
ZXRLZXJuZWxTaXplKGNvbnN0IEludFNpemUmKTsKQEAgLTc3LDEyICs3NCwxMSBAQCBwcml2YXRl
OgogICAgICAgICBWZWN0b3I8ZmxvYXQ+IGtlcm5lbE1hdHJpeDsKICAgICB9OwogCi0gICAgRkVD
b252b2x2ZU1hdHJpeChGaWx0ZXImLCBjb25zdCBJbnRTaXplJiwgZmxvYXQsIGZsb2F0LAotICAg
ICAgICAgICAgY29uc3QgSW50UG9pbnQmLCBFZGdlTW9kZVR5cGUsIGNvbnN0IEZsb2F0UG9pbnQm
LCBib29sLCBjb25zdCBWZWN0b3I8ZmxvYXQ+Jik7CisgICAgRkVDb252b2x2ZU1hdHJpeChjb25z
dCBJbnRTaXplJiBrZXJuZWxTaXplLCBmbG9hdCBkaXZpc29yLCBmbG9hdCBiaWFzLCBjb25zdCBJ
bnRQb2ludCYgdGFyZ2V0T2Zmc2V0LCBFZGdlTW9kZVR5cGUsIGNvbnN0IEZsb2F0UG9pbnQmIGtl
cm5lbFVuaXRMZW5ndGgsIGJvb2wgcHJlc2VydmVBbHBoYSwgY29uc3QgVmVjdG9yPGZsb2F0PiYg
a2VybmVsTWF0cml4KTsKIAotICAgIHZvaWQgZGV0ZXJtaW5lQWJzb2x1dGVQYWludFJlY3QoKSBv
dmVycmlkZSB7IHNldEFic29sdXRlUGFpbnRSZWN0KGVuY2xvc2luZ0ludFJlY3QobWF4RWZmZWN0
UmVjdCgpKSk7IH0KKyAgICB2b2lkIGRldGVybWluZUFic29sdXRlUGFpbnRSZWN0KGNvbnN0IEZp
bHRlciYpIG92ZXJyaWRlIHsgc2V0QWJzb2x1dGVQYWludFJlY3QoZW5jbG9zaW5nSW50UmVjdCht
YXhFZmZlY3RSZWN0KCkpKTsgfQogCi0gICAgdm9pZCBwbGF0Zm9ybUFwcGx5U29mdHdhcmUoKSBv
dmVycmlkZTsKKyAgICB2b2lkIHBsYXRmb3JtQXBwbHlTb2Z0d2FyZShjb25zdCBGaWx0ZXImKSBv
dmVycmlkZTsKIAogICAgIFdURjo6VGV4dFN0cmVhbSYgZXh0ZXJuYWxSZXByZXNlbnRhdGlvbihX
VEY6OlRleHRTdHJlYW0mLCBSZXByZXNlbnRhdGlvblR5cGUpIGNvbnN0IG92ZXJyaWRlOwogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFRGlm
ZnVzZUxpZ2h0aW5nLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRl
cnMvRkVEaWZmdXNlTGlnaHRpbmcuY3BwCmluZGV4IDQ0ZTJlNjIxNGEzNy4uZjc2Y2UyY2U5NjQz
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZF
RGlmZnVzZUxpZ2h0aW5nLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9maWx0ZXJzL0ZFRGlmZnVzZUxpZ2h0aW5nLmNwcApAQCAtMjcsMTQgKzI3LDE0IEBACiAKIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIAotRkVEaWZmdXNlTGlnaHRpbmc6OkZFRGlmZnVzZUxpZ2h0aW5n
KEZpbHRlciYgZmlsdGVyLCBjb25zdCBDb2xvciYgbGlnaHRpbmdDb2xvciwgZmxvYXQgc3VyZmFj
ZVNjYWxlLCBmbG9hdCBkaWZmdXNlQ29uc3RhbnQsIGZsb2F0IGtlcm5lbFVuaXRMZW5ndGhYLCBm
bG9hdCBrZXJuZWxVbml0TGVuZ3RoWSwgUmVmPExpZ2h0U291cmNlPiYmIGxpZ2h0U291cmNlKQot
ICAgIDogRkVMaWdodGluZyhmaWx0ZXIsIERpZmZ1c2VMaWdodGluZywgbGlnaHRpbmdDb2xvciwg
c3VyZmFjZVNjYWxlLCBkaWZmdXNlQ29uc3RhbnQsIDAsIDAsIGtlcm5lbFVuaXRMZW5ndGhYLCBr
ZXJuZWxVbml0TGVuZ3RoWSwgV1RGTW92ZShsaWdodFNvdXJjZSksIEZpbHRlckVmZmVjdDo6VHlw
ZTo6RkVEaWZmdXNlTGlnaHRpbmcpCitGRURpZmZ1c2VMaWdodGluZzo6RkVEaWZmdXNlTGlnaHRp
bmcoY29uc3QgQ29sb3ImIGxpZ2h0aW5nQ29sb3IsIGZsb2F0IHN1cmZhY2VTY2FsZSwgZmxvYXQg
ZGlmZnVzZUNvbnN0YW50LCBmbG9hdCBrZXJuZWxVbml0TGVuZ3RoWCwgZmxvYXQga2VybmVsVW5p
dExlbmd0aFksIFJlZjxMaWdodFNvdXJjZT4mJiBsaWdodFNvdXJjZSkKKyAgICA6IEZFTGlnaHRp
bmcoRGlmZnVzZUxpZ2h0aW5nLCBsaWdodGluZ0NvbG9yLCBzdXJmYWNlU2NhbGUsIGRpZmZ1c2VD
b25zdGFudCwgMCwgMCwga2VybmVsVW5pdExlbmd0aFgsIGtlcm5lbFVuaXRMZW5ndGhZLCBXVEZN
b3ZlKGxpZ2h0U291cmNlKSwgRmlsdGVyRWZmZWN0OjpUeXBlOjpGRURpZmZ1c2VMaWdodGluZykK
IHsKIH0KIAotUmVmPEZFRGlmZnVzZUxpZ2h0aW5nPiBGRURpZmZ1c2VMaWdodGluZzo6Y3JlYXRl
KEZpbHRlciYgZmlsdGVyLCBjb25zdCBDb2xvciYgbGlnaHRpbmdDb2xvciwgZmxvYXQgc3VyZmFj
ZVNjYWxlLCBmbG9hdCBkaWZmdXNlQ29uc3RhbnQsIGZsb2F0IGtlcm5lbFVuaXRMZW5ndGhYLCBm
bG9hdCBrZXJuZWxVbml0TGVuZ3RoWSwgUmVmPExpZ2h0U291cmNlPiYmIGxpZ2h0U291cmNlKQor
UmVmPEZFRGlmZnVzZUxpZ2h0aW5nPiBGRURpZmZ1c2VMaWdodGluZzo6Y3JlYXRlKGNvbnN0IENv
bG9yJiBsaWdodGluZ0NvbG9yLCBmbG9hdCBzdXJmYWNlU2NhbGUsIGZsb2F0IGRpZmZ1c2VDb25z
dGFudCwgZmxvYXQga2VybmVsVW5pdExlbmd0aFgsIGZsb2F0IGtlcm5lbFVuaXRMZW5ndGhZLCBS
ZWY8TGlnaHRTb3VyY2U+JiYgbGlnaHRTb3VyY2UpCiB7Ci0gICAgcmV0dXJuIGFkb3B0UmVmKCpu
ZXcgRkVEaWZmdXNlTGlnaHRpbmcoZmlsdGVyLCBsaWdodGluZ0NvbG9yLCBzdXJmYWNlU2NhbGUs
IGRpZmZ1c2VDb25zdGFudCwga2VybmVsVW5pdExlbmd0aFgsIGtlcm5lbFVuaXRMZW5ndGhZLCBX
VEZNb3ZlKGxpZ2h0U291cmNlKSkpOworICAgIHJldHVybiBhZG9wdFJlZigqbmV3IEZFRGlmZnVz
ZUxpZ2h0aW5nKGxpZ2h0aW5nQ29sb3IsIHN1cmZhY2VTY2FsZSwgZGlmZnVzZUNvbnN0YW50LCBr
ZXJuZWxVbml0TGVuZ3RoWCwga2VybmVsVW5pdExlbmd0aFksIFdURk1vdmUobGlnaHRTb3VyY2Up
KSk7CiB9CiAKIGJvb2wgRkVEaWZmdXNlTGlnaHRpbmc6OnNldERpZmZ1c2VDb25zdGFudChmbG9h
dCBkaWZmdXNlQ29uc3RhbnQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9maWx0ZXJzL0ZFRGlmZnVzZUxpZ2h0aW5nLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFRGlmZnVzZUxpZ2h0aW5nLmgKaW5kZXggMjczN2Y2MGY0
YzNmLi44YTEwYWVjODdjOGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2ZpbHRlcnMvRkVEaWZmdXNlTGlnaHRpbmcuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFRGlmZnVzZUxpZ2h0aW5nLmgKQEAgLTI5LDcgKzI5
LDcgQEAgY2xhc3MgTGlnaHRTb3VyY2U7CiAKIGNsYXNzIEZFRGlmZnVzZUxpZ2h0aW5nIDogcHVi
bGljIEZFTGlnaHRpbmcgewogcHVibGljOgotICAgIHN0YXRpYyBSZWY8RkVEaWZmdXNlTGlnaHRp
bmc+IGNyZWF0ZShGaWx0ZXImLCBjb25zdCBDb2xvciYsIGZsb2F0LCBmbG9hdCwgZmxvYXQsIGZs
b2F0LCBSZWY8TGlnaHRTb3VyY2U+JiYpOworICAgIHN0YXRpYyBSZWY8RkVEaWZmdXNlTGlnaHRp
bmc+IGNyZWF0ZShjb25zdCBDb2xvciYgbGlnaHRpbmdDb2xvciwgZmxvYXQgc3VyZmFjZVNjYWxl
LCBmbG9hdCBkaWZmdXNlQ29uc3RhbnQsIGZsb2F0IGtlcm5lbFVuaXRMZW5ndGhYLCBmbG9hdCBr
ZXJuZWxVbml0TGVuZ3RoWSwgUmVmPExpZ2h0U291cmNlPiYmKTsKIAogICAgIGZsb2F0IGRpZmZ1
c2VDb25zdGFudCgpIGNvbnN0IHsgcmV0dXJuIG1fZGlmZnVzZUNvbnN0YW50OyB9CiAgICAgYm9v
bCBzZXREaWZmdXNlQ29uc3RhbnQoZmxvYXQpOwpAQCAtMzcsNyArMzcsNyBAQCBwdWJsaWM6CiAg
ICAgV1RGOjpUZXh0U3RyZWFtJiBleHRlcm5hbFJlcHJlc2VudGF0aW9uKFdURjo6VGV4dFN0cmVh
bSYsIFJlcHJlc2VudGF0aW9uVHlwZSkgY29uc3Qgb3ZlcnJpZGU7CiAKIHByaXZhdGU6Ci0gICAg
RkVEaWZmdXNlTGlnaHRpbmcoRmlsdGVyJiwgY29uc3QgQ29sb3ImLCBmbG9hdCwgZmxvYXQsIGZs
b2F0LCBmbG9hdCwgUmVmPExpZ2h0U291cmNlPiYmKTsKKyAgICBGRURpZmZ1c2VMaWdodGluZyhj
b25zdCBDb2xvciYgbGlnaHRpbmdDb2xvciwgZmxvYXQgc3VyZmFjZVNjYWxlLCBmbG9hdCBkaWZm
dXNlQ29uc3RhbnQsIGZsb2F0IGtlcm5lbFVuaXRMZW5ndGhYLCBmbG9hdCBrZXJuZWxVbml0TGVu
Z3RoWSwgUmVmPExpZ2h0U291cmNlPiYmKTsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVE
aXNwbGFjZW1lbnRNYXAuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmls
dGVycy9GRURpc3BsYWNlbWVudE1hcC5jcHAKaW5kZXggMjRhNDYyNmM2YTFjLi5kNmEzNWZlYTA5
N2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMv
RkVEaXNwbGFjZW1lbnRNYXAuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2ZpbHRlcnMvRkVEaXNwbGFjZW1lbnRNYXAuY3BwCkBAIC0zMSwxOCArMzEsMTcgQEAKIAog
bmFtZXNwYWNlIFdlYkNvcmUgewogCi1GRURpc3BsYWNlbWVudE1hcDo6RkVEaXNwbGFjZW1lbnRN
YXAoRmlsdGVyJiBmaWx0ZXIsIENoYW5uZWxTZWxlY3RvclR5cGUgeENoYW5uZWxTZWxlY3Rvciwg
Q2hhbm5lbFNlbGVjdG9yVHlwZSB5Q2hhbm5lbFNlbGVjdG9yLCBmbG9hdCBzY2FsZSkKLSAgICA6
IEZpbHRlckVmZmVjdChmaWx0ZXIsIEZpbHRlckVmZmVjdDo6VHlwZTo6RkVEaXNwbGFjZW1lbnRN
YXApCitGRURpc3BsYWNlbWVudE1hcDo6RkVEaXNwbGFjZW1lbnRNYXAoQ2hhbm5lbFNlbGVjdG9y
VHlwZSB4Q2hhbm5lbFNlbGVjdG9yLCBDaGFubmVsU2VsZWN0b3JUeXBlIHlDaGFubmVsU2VsZWN0
b3IsIGZsb2F0IHNjYWxlKQorICAgIDogRmlsdGVyRWZmZWN0KEZpbHRlckVmZmVjdDo6VHlwZTo6
RkVEaXNwbGFjZW1lbnRNYXApCiAgICAgLCBtX3hDaGFubmVsU2VsZWN0b3IoeENoYW5uZWxTZWxl
Y3RvcikKICAgICAsIG1feUNoYW5uZWxTZWxlY3Rvcih5Q2hhbm5lbFNlbGVjdG9yKQogICAgICwg
bV9zY2FsZShzY2FsZSkKIHsKIH0KIAotUmVmPEZFRGlzcGxhY2VtZW50TWFwPiBGRURpc3BsYWNl
bWVudE1hcDo6Y3JlYXRlKEZpbHRlciYgZmlsdGVyLCBDaGFubmVsU2VsZWN0b3JUeXBlIHhDaGFu
bmVsU2VsZWN0b3IsCi0gICAgQ2hhbm5lbFNlbGVjdG9yVHlwZSB5Q2hhbm5lbFNlbGVjdG9yLCBm
bG9hdCBzY2FsZSkKK1JlZjxGRURpc3BsYWNlbWVudE1hcD4gRkVEaXNwbGFjZW1lbnRNYXA6OmNy
ZWF0ZShDaGFubmVsU2VsZWN0b3JUeXBlIHhDaGFubmVsU2VsZWN0b3IsIENoYW5uZWxTZWxlY3Rv
clR5cGUgeUNoYW5uZWxTZWxlY3RvciwgZmxvYXQgc2NhbGUpCiB7Ci0gICAgcmV0dXJuIGFkb3B0
UmVmKCpuZXcgRkVEaXNwbGFjZW1lbnRNYXAoZmlsdGVyLCB4Q2hhbm5lbFNlbGVjdG9yLCB5Q2hh
bm5lbFNlbGVjdG9yLCBzY2FsZSkpOworICAgIHJldHVybiBhZG9wdFJlZigqbmV3IEZFRGlzcGxh
Y2VtZW50TWFwKHhDaGFubmVsU2VsZWN0b3IsIHlDaGFubmVsU2VsZWN0b3IsIHNjYWxlKSk7CiB9
CiAKIGJvb2wgRkVEaXNwbGFjZW1lbnRNYXA6OnNldFhDaGFubmVsU2VsZWN0b3IoY29uc3QgQ2hh
bm5lbFNlbGVjdG9yVHlwZSB4Q2hhbm5lbFNlbGVjdG9yKQpAQCAtOTEsNyArOTAsNyBAQCBzdGF0
aWMgaW5saW5lIHVuc2lnbmVkIGJ5dGVPZmZzZXRPZlBpeGVsKHVuc2lnbmVkIHgsIHVuc2lnbmVk
IHksIHVuc2lnbmVkIHJvd0J5dAogICAgIHJldHVybiB4ICogYnl0ZXNQZXJQaXhlbCArIHkgKiBy
b3dCeXRlczsKIH0KIAotdm9pZCBGRURpc3BsYWNlbWVudE1hcDo6cGxhdGZvcm1BcHBseVNvZnR3
YXJlKCkKK3ZvaWQgRkVEaXNwbGFjZW1lbnRNYXA6OnBsYXRmb3JtQXBwbHlTb2Z0d2FyZShjb25z
dCBGaWx0ZXImIGZpbHRlcikKIHsKICAgICBGaWx0ZXJFZmZlY3QqIGluID0gaW5wdXRFZmZlY3Qo
MCk7CiAgICAgRmlsdGVyRWZmZWN0KiBpbjIgPSBpbnB1dEVmZmVjdCgxKTsKQEAgLTExNyw3ICsx
MTYsNiBAQCB2b2lkIEZFRGlzcGxhY2VtZW50TWFwOjpwbGF0Zm9ybUFwcGx5U29mdHdhcmUoKQog
CiAgICAgQVNTRVJUKGlucHV0SW1hZ2UtPmxlbmd0aCgpID09IGRpc3BsYWNlbWVudEltYWdlLT5s
ZW5ndGgoKSk7CiAKLSAgICBGaWx0ZXImIGZpbHRlciA9IHRoaXMtPmZpbHRlcigpOwogICAgIElu
dFNpemUgcGFpbnRTaXplID0gYWJzb2x1dGVQYWludFJlY3QoKS5zaXplKCk7CiAKICAgICBGbG9h
dFNpemUgc2NhbGUgPSBmaWx0ZXIuc2NhbGVkQnlGaWx0ZXJTY2FsZSh7IG1fc2NhbGUsIG1fc2Nh
bGUgfSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0
ZXJzL0ZFRGlzcGxhY2VtZW50TWFwLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9maWx0ZXJzL0ZFRGlzcGxhY2VtZW50TWFwLmgKaW5kZXggYWE1YjZkNDZiYzQ2Li42ZWU2OGIx
MDhkYjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRl
cnMvRkVEaXNwbGFjZW1lbnRNYXAuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9maWx0ZXJzL0ZFRGlzcGxhY2VtZW50TWFwLmgKQEAgLTIyLDcgKzIyLDYgQEAKICNwcmFn
bWEgb25jZQogCiAjaW5jbHVkZSAiRmlsdGVyRWZmZWN0LmgiCi0jaW5jbHVkZSAiRmlsdGVyLmgi
CiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsK
QEAgLTM3LDcgKzM2LDcgQEAgZW51bSBDaGFubmVsU2VsZWN0b3JUeXBlIHsKIAogY2xhc3MgRkVE
aXNwbGFjZW1lbnRNYXAgOiBwdWJsaWMgRmlsdGVyRWZmZWN0IHsKIHB1YmxpYzoKLSAgICBzdGF0
aWMgUmVmPEZFRGlzcGxhY2VtZW50TWFwPiBjcmVhdGUoRmlsdGVyJiwgQ2hhbm5lbFNlbGVjdG9y
VHlwZSB4Q2hhbm5lbFNlbGVjdG9yLCBDaGFubmVsU2VsZWN0b3JUeXBlIHlDaGFubmVsU2VsZWN0
b3IsIGZsb2F0IHNjYWxlKTsKKyAgICBzdGF0aWMgUmVmPEZFRGlzcGxhY2VtZW50TWFwPiBjcmVh
dGUoQ2hhbm5lbFNlbGVjdG9yVHlwZSB4Q2hhbm5lbFNlbGVjdG9yLCBDaGFubmVsU2VsZWN0b3JU
eXBlIHlDaGFubmVsU2VsZWN0b3IsIGZsb2F0IHNjYWxlKTsKIAogICAgIENoYW5uZWxTZWxlY3Rv
clR5cGUgeENoYW5uZWxTZWxlY3RvcigpIGNvbnN0IHsgcmV0dXJuIG1feENoYW5uZWxTZWxlY3Rv
cjsgfQogICAgIGJvb2wgc2V0WENoYW5uZWxTZWxlY3Rvcihjb25zdCBDaGFubmVsU2VsZWN0b3JU
eXBlKTsKQEAgLTUyLDExICs1MSwxMSBAQCBwdWJsaWM6CiAgICAgdm9pZCB0cmFuc2Zvcm1SZXN1
bHRDb2xvclNwYWNlKEZpbHRlckVmZmVjdCosIGNvbnN0IGludCkgb3ZlcnJpZGU7CiAKIHByaXZh
dGU6Ci0gICAgRkVEaXNwbGFjZW1lbnRNYXAoRmlsdGVyJiwgQ2hhbm5lbFNlbGVjdG9yVHlwZSB4
Q2hhbm5lbFNlbGVjdG9yLCBDaGFubmVsU2VsZWN0b3JUeXBlIHlDaGFubmVsU2VsZWN0b3IsIGZs
b2F0KTsKKyAgICBGRURpc3BsYWNlbWVudE1hcChDaGFubmVsU2VsZWN0b3JUeXBlIHhDaGFubmVs
U2VsZWN0b3IsIENoYW5uZWxTZWxlY3RvclR5cGUgeUNoYW5uZWxTZWxlY3RvciwgZmxvYXQgc2Nh
bGUpOwogCi0gICAgdm9pZCBwbGF0Zm9ybUFwcGx5U29mdHdhcmUoKSBvdmVycmlkZTsKKyAgICB2
b2lkIHBsYXRmb3JtQXBwbHlTb2Z0d2FyZShjb25zdCBGaWx0ZXImKSBvdmVycmlkZTsKIAotICAg
IHZvaWQgZGV0ZXJtaW5lQWJzb2x1dGVQYWludFJlY3QoKSBvdmVycmlkZSB7IHNldEFic29sdXRl
UGFpbnRSZWN0KGVuY2xvc2luZ0ludFJlY3QobWF4RWZmZWN0UmVjdCgpKSk7IH0KKyAgICB2b2lk
IGRldGVybWluZUFic29sdXRlUGFpbnRSZWN0KGNvbnN0IEZpbHRlciYpIG92ZXJyaWRlIHsgc2V0
QWJzb2x1dGVQYWludFJlY3QoZW5jbG9zaW5nSW50UmVjdChtYXhFZmZlY3RSZWN0KCkpKTsgfQog
CiAgICAgaW50IHhDaGFubmVsSW5kZXgoKSBjb25zdCB7IHJldHVybiBtX3hDaGFubmVsU2VsZWN0
b3IgLSAxOyB9CiAgICAgaW50IHlDaGFubmVsSW5kZXgoKSBjb25zdCB7IHJldHVybiBtX3lDaGFu
bmVsU2VsZWN0b3IgLSAxOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9maWx0ZXJzL0ZFRHJvcFNoYWRvdy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9maWx0ZXJzL0ZFRHJvcFNoYWRvdy5jcHAKaW5kZXggNTFhZDJmODVmMmMyLi5j
M2NlNGUzNmUyNDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2ZpbHRlcnMvRkVEcm9wU2hhZG93LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9maWx0ZXJzL0ZFRHJvcFNoYWRvdy5jcHAKQEAgLTMxLDggKzMxLDggQEAKIAogbmFt
ZXNwYWNlIFdlYkNvcmUgewogICAgIAotRkVEcm9wU2hhZG93OjpGRURyb3BTaGFkb3coRmlsdGVy
JiBmaWx0ZXIsIGZsb2F0IHN0ZFgsIGZsb2F0IHN0ZFksIGZsb2F0IGR4LCBmbG9hdCBkeSwgY29u
c3QgQ29sb3ImIHNoYWRvd0NvbG9yLCBmbG9hdCBzaGFkb3dPcGFjaXR5KQotICAgIDogRmlsdGVy
RWZmZWN0KGZpbHRlciwgRmlsdGVyRWZmZWN0OjpUeXBlOjpGRURyb3BTaGFkb3cpCitGRURyb3BT
aGFkb3c6OkZFRHJvcFNoYWRvdyhmbG9hdCBzdGRYLCBmbG9hdCBzdGRZLCBmbG9hdCBkeCwgZmxv
YXQgZHksIGNvbnN0IENvbG9yJiBzaGFkb3dDb2xvciwgZmxvYXQgc2hhZG93T3BhY2l0eSkKKyAg
ICA6IEZpbHRlckVmZmVjdChGaWx0ZXJFZmZlY3Q6OlR5cGU6OkZFRHJvcFNoYWRvdykKICAgICAs
IG1fc3RkWChzdGRYKQogICAgICwgbV9zdGRZKHN0ZFkpCiAgICAgLCBtX2R4KGR4KQpAQCAtNDIs
MTUgKzQyLDEzIEBAIEZFRHJvcFNoYWRvdzo6RkVEcm9wU2hhZG93KEZpbHRlciYgZmlsdGVyLCBm
bG9hdCBzdGRYLCBmbG9hdCBzdGRZLCBmbG9hdCBkeCwgZmxvCiB7CiB9CiAKLVJlZjxGRURyb3BT
aGFkb3c+IEZFRHJvcFNoYWRvdzo6Y3JlYXRlKEZpbHRlciYgZmlsdGVyLCBmbG9hdCBzdGRYLCBm
bG9hdCBzdGRZLCBmbG9hdCBkeCwgZmxvYXQgZHksIGNvbnN0IENvbG9yJiBzaGFkb3dDb2xvciwg
ZmxvYXQgc2hhZG93T3BhY2l0eSkKK1JlZjxGRURyb3BTaGFkb3c+IEZFRHJvcFNoYWRvdzo6Y3Jl
YXRlKGZsb2F0IHN0ZFgsIGZsb2F0IHN0ZFksIGZsb2F0IGR4LCBmbG9hdCBkeSwgY29uc3QgQ29s
b3ImIHNoYWRvd0NvbG9yLCBmbG9hdCBzaGFkb3dPcGFjaXR5KQogewotICAgIHJldHVybiBhZG9w
dFJlZigqbmV3IEZFRHJvcFNoYWRvdyhmaWx0ZXIsIHN0ZFgsIHN0ZFksIGR4LCBkeSwgc2hhZG93
Q29sb3IsIHNoYWRvd09wYWNpdHkpKTsKKyAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBGRURyb3BT
aGFkb3coc3RkWCwgc3RkWSwgZHgsIGR5LCBzaGFkb3dDb2xvciwgc2hhZG93T3BhY2l0eSkpOwog
fQogCi12b2lkIEZFRHJvcFNoYWRvdzo6ZGV0ZXJtaW5lQWJzb2x1dGVQYWludFJlY3QoKQordm9p
ZCBGRURyb3BTaGFkb3c6OmRldGVybWluZUFic29sdXRlUGFpbnRSZWN0KGNvbnN0IEZpbHRlciYg
ZmlsdGVyKQogewotICAgIEZpbHRlciYgZmlsdGVyID0gdGhpcy0+ZmlsdGVyKCk7Ci0KICAgICBG
bG9hdFJlY3QgYWJzb2x1dGVQYWludFJlY3QgPSBpbnB1dEVmZmVjdCgwKS0+YWJzb2x1dGVQYWlu
dFJlY3QoKTsKICAgICBGbG9hdFJlY3QgYWJzb2x1dGVPZmZzZXRQYWludFJlY3QoYWJzb2x1dGVQ
YWludFJlY3QpOwogICAgIGFic29sdXRlT2Zmc2V0UGFpbnRSZWN0Lm1vdmUoZmlsdGVyLnNjYWxl
ZEJ5RmlsdGVyU2NhbGUoeyBtX2R4LCBtX2R5IH0pKTsKQEAgLTcwLDcgKzY4LDcgQEAgdm9pZCBG
RURyb3BTaGFkb3c6OmRldGVybWluZUFic29sdXRlUGFpbnRSZWN0KCkKICAgICBzZXRBYnNvbHV0
ZVBhaW50UmVjdChlbmNsb3NpbmdJbnRSZWN0KGFic29sdXRlUGFpbnRSZWN0KSk7CiB9CiAKLXZv
aWQgRkVEcm9wU2hhZG93OjpwbGF0Zm9ybUFwcGx5U29mdHdhcmUoKQordm9pZCBGRURyb3BTaGFk
b3c6OnBsYXRmb3JtQXBwbHlTb2Z0d2FyZShjb25zdCBGaWx0ZXImIGZpbHRlcikKIHsKICAgICBG
aWx0ZXJFZmZlY3QqIGluID0gaW5wdXRFZmZlY3QoMCk7CiAKQEAgLTc4LDggKzc2LDYgQEAgdm9p
ZCBGRURyb3BTaGFkb3c6OnBsYXRmb3JtQXBwbHlTb2Z0d2FyZSgpCiAgICAgaWYgKCFyZXN1bHRJ
bWFnZSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgRmlsdGVyJiBmaWx0ZXIgPSB0aGlzLT5maWx0
ZXIoKTsKLSAgICAKICAgICBGbG9hdFNpemUgYmx1clJhZGl1cyA9IDIgKiBmaWx0ZXIuc2NhbGVk
QnlGaWx0ZXJTY2FsZSh7IG1fc3RkWCwgbV9zdGRZIH0pOwogICAgIEZsb2F0U2l6ZSBvZmZzZXQg
PSBmaWx0ZXIuc2NhbGVkQnlGaWx0ZXJTY2FsZSh7IG1fZHgsIG1fZHkgfSk7CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVEcm9wU2hhZG93
LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFRHJvcFNoYWRv
dy5oCmluZGV4IDJiNmU2NjEzYjVhZS4uMTc3MDU2YmJjZjg4IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFRHJvcFNoYWRvdy5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVEcm9wU2hhZG93LmgKQEAg
LTIwLDE0ICsyMCwxMyBAQAogI3ByYWdtYSBvbmNlCiAKICNpbmNsdWRlICJDb2xvci5oIgotI2lu
Y2x1ZGUgIkZpbHRlci5oIgogI2luY2x1ZGUgIkZpbHRlckVmZmVjdC5oIgogCiBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAgICAgCiBjbGFzcyBGRURyb3BTaGFkb3cgOiBwdWJsaWMgRmlsdGVyRWZmZWN0
IHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUmVmPEZFRHJvcFNoYWRvdz4gY3JlYXRlKEZpbHRlciYs
IGZsb2F0LCBmbG9hdCwgZmxvYXQsIGZsb2F0LCBjb25zdCBDb2xvciYsIGZsb2F0KTsKKyAgICBz
dGF0aWMgUmVmPEZFRHJvcFNoYWRvdz4gY3JlYXRlKGZsb2F0IHN0ZFgsIGZsb2F0IHN0ZFksIGZs
b2F0IGR4LCBmbG9hdCBkeSwgY29uc3QgQ29sb3ImIHNoYWRvd0NvbG9yLCBmbG9hdCBzaGFkb3dP
cGFjaXR5KTsKIAogICAgIGZsb2F0IHN0ZERldmlhdGlvblgoKSBjb25zdCB7IHJldHVybiBtX3N0
ZFg7IH0KICAgICB2b2lkIHNldFN0ZERldmlhdGlvblgoZmxvYXQgc3RkWCkgeyBtX3N0ZFggPSBz
dGRYOyB9CkBAIC00OCwxMSArNDcsMTEgQEAgcHVibGljOgogICAgIHZvaWQgc2V0U2hhZG93T3Bh
Y2l0eShmbG9hdCBzaGFkb3dPcGFjaXR5KSB7IG1fc2hhZG93T3BhY2l0eSA9IHNoYWRvd09wYWNp
dHk7IH0KIAogcHJpdmF0ZToKLSAgICBGRURyb3BTaGFkb3coRmlsdGVyJiwgZmxvYXQsIGZsb2F0
LCBmbG9hdCwgZmxvYXQsIGNvbnN0IENvbG9yJiwgZmxvYXQpOworICAgIEZFRHJvcFNoYWRvdyhm
bG9hdCBzdGRYLCBmbG9hdCBzdGRZLCBmbG9hdCBkeCwgZmxvYXQgZHksIGNvbnN0IENvbG9yJiBz
aGFkb3dDb2xvciwgZmxvYXQgc2hhZG93T3BhY2l0eSk7CiAKLSAgICB2b2lkIHBsYXRmb3JtQXBw
bHlTb2Z0d2FyZSgpIG92ZXJyaWRlOworICAgIHZvaWQgcGxhdGZvcm1BcHBseVNvZnR3YXJlKGNv
bnN0IEZpbHRlciYpIG92ZXJyaWRlOwogCi0gICAgdm9pZCBkZXRlcm1pbmVBYnNvbHV0ZVBhaW50
UmVjdCgpIG92ZXJyaWRlOworICAgIHZvaWQgZGV0ZXJtaW5lQWJzb2x1dGVQYWludFJlY3QoY29u
c3QgRmlsdGVyJikgb3ZlcnJpZGU7CiAKICAgICBJbnRPdXRzZXRzIG91dHNldHMoKSBjb25zdCBv
dmVycmlkZTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
ZmlsdGVycy9GRUZsb29kLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Zp
bHRlcnMvRkVGbG9vZC5jcHAKaW5kZXggYTc4NDIxOTY3NGUxLi44YmQ5ZTM1YzkxYWEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVGbG9vZC5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRUZsb29k
LmNwcApAQCAtMzAsMTYgKzMwLDE2IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotRkVGbG9v
ZDo6RkVGbG9vZChGaWx0ZXImIGZpbHRlciwgY29uc3QgQ29sb3ImIGZsb29kQ29sb3IsIGZsb2F0
IGZsb29kT3BhY2l0eSkKLSAgICA6IEZpbHRlckVmZmVjdChmaWx0ZXIsIEZpbHRlckVmZmVjdDo6
VHlwZTo6RkVGbG9vZCkKK0ZFRmxvb2Q6OkZFRmxvb2QoY29uc3QgQ29sb3ImIGZsb29kQ29sb3Is
IGZsb2F0IGZsb29kT3BhY2l0eSkKKyAgICA6IEZpbHRlckVmZmVjdChGaWx0ZXJFZmZlY3Q6OlR5
cGU6OkZFRmxvb2QpCiAgICAgLCBtX2Zsb29kQ29sb3IoZmxvb2RDb2xvcikKICAgICAsIG1fZmxv
b2RPcGFjaXR5KGZsb29kT3BhY2l0eSkKIHsKIH0KIAotUmVmPEZFRmxvb2Q+IEZFRmxvb2Q6OmNy
ZWF0ZShGaWx0ZXImIGZpbHRlciwgY29uc3QgQ29sb3ImIGZsb29kQ29sb3IsIGZsb2F0IGZsb29k
T3BhY2l0eSkKK1JlZjxGRUZsb29kPiBGRUZsb29kOjpjcmVhdGUoY29uc3QgQ29sb3ImIGZsb29k
Q29sb3IsIGZsb2F0IGZsb29kT3BhY2l0eSkKIHsKLSAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBG
RUZsb29kKGZpbHRlciwgZmxvb2RDb2xvciwgZmxvb2RPcGFjaXR5KSk7CisgICAgcmV0dXJuIGFk
b3B0UmVmKCpuZXcgRkVGbG9vZChmbG9vZENvbG9yLCBmbG9vZE9wYWNpdHkpKTsKIH0KIAogYm9v
bCBGRUZsb29kOjpzZXRGbG9vZENvbG9yKGNvbnN0IENvbG9yJiBjb2xvcikKQEAgLTU4LDcgKzU4
LDcgQEAgYm9vbCBGRUZsb29kOjpzZXRGbG9vZE9wYWNpdHkoZmxvYXQgZmxvb2RPcGFjaXR5KQog
ICAgIHJldHVybiB0cnVlOwogfQogCi12b2lkIEZFRmxvb2Q6OnBsYXRmb3JtQXBwbHlTb2Z0d2Fy
ZSgpCit2b2lkIEZFRmxvb2Q6OnBsYXRmb3JtQXBwbHlTb2Z0d2FyZShjb25zdCBGaWx0ZXImKQog
ewogICAgIEltYWdlQnVmZmVyKiByZXN1bHRJbWFnZSA9IGNyZWF0ZUltYWdlQnVmZmVyUmVzdWx0
KCk7CiAgICAgaWYgKCFyZXN1bHRJbWFnZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVGbG9vZC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvZmlsdGVycy9GRUZsb29kLmgKaW5kZXggMDhhNGU5NTkzNTg1Li5hMjA3ODE5
MmU2NjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRl
cnMvRkVGbG9vZC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRl
cnMvRkVGbG9vZC5oCkBAIC0yMiwxNCArMjIsMTMgQEAKICNwcmFnbWEgb25jZQogCiAjaW5jbHVk
ZSAiQ29sb3IuaCIKLSNpbmNsdWRlICJGaWx0ZXIuaCIKICNpbmNsdWRlICJGaWx0ZXJFZmZlY3Qu
aCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBGRUZsb29kIDogcHVibGljIEZpbHRl
ckVmZmVjdCB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFJlZjxGRUZsb29kPiBjcmVhdGUoRmlsdGVy
JiwgY29uc3QgQ29sb3ImLCBmbG9hdCk7CisgICAgc3RhdGljIFJlZjxGRUZsb29kPiBjcmVhdGUo
Y29uc3QgQ29sb3ImIGZsb29kQ29sb3IsIGZsb2F0IGZsb29kT3BhY2l0eSk7CiAKICAgICBjb25z
dCBDb2xvciYgZmxvb2RDb2xvcigpIGNvbnN0IHsgcmV0dXJuIG1fZmxvb2RDb2xvcjsgfQogICAg
IGJvb2wgc2V0Rmxvb2RDb2xvcihjb25zdCBDb2xvciYpOwpAQCAtNDUsMTEgKzQ0LDExIEBAIHB1
YmxpYzoKICNlbmRpZgogCiBwcml2YXRlOgotICAgIEZFRmxvb2QoRmlsdGVyJiwgY29uc3QgQ29s
b3ImLCBmbG9hdCk7CisgICAgRkVGbG9vZChjb25zdCBDb2xvciYgZmxvb2RDb2xvciwgZmxvYXQg
Zmxvb2RPcGFjaXR5KTsKIAotICAgIHZvaWQgcGxhdGZvcm1BcHBseVNvZnR3YXJlKCkgb3ZlcnJp
ZGU7CisgICAgdm9pZCBwbGF0Zm9ybUFwcGx5U29mdHdhcmUoY29uc3QgRmlsdGVyJikgb3ZlcnJp
ZGU7CiAKLSAgICB2b2lkIGRldGVybWluZUFic29sdXRlUGFpbnRSZWN0KCkgb3ZlcnJpZGUgeyBz
ZXRBYnNvbHV0ZVBhaW50UmVjdChlbmNsb3NpbmdJbnRSZWN0KG1heEVmZmVjdFJlY3QoKSkpOyB9
CisgICAgdm9pZCBkZXRlcm1pbmVBYnNvbHV0ZVBhaW50UmVjdChjb25zdCBGaWx0ZXImKSBvdmVy
cmlkZSB7IHNldEFic29sdXRlUGFpbnRSZWN0KGVuY2xvc2luZ0ludFJlY3QobWF4RWZmZWN0UmVj
dCgpKSk7IH0KIAogICAgIFdURjo6VGV4dFN0cmVhbSYgZXh0ZXJuYWxSZXByZXNlbnRhdGlvbihX
VEY6OlRleHRTdHJlYW0mLCBSZXByZXNlbnRhdGlvblR5cGUpIGNvbnN0IG92ZXJyaWRlOwogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFR2F1
c3NpYW5CbHVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMv
RkVHYXVzc2lhbkJsdXIuY3BwCmluZGV4IDhlNDZjNTAyNmZlNi4uZDI4MDhmZWRhMWZhIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFR2F1c3Np
YW5CbHVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJz
L0ZFR2F1c3NpYW5CbHVyLmNwcApAQCAtNzksMTcgKzc5LDE3IEBAIGlubGluZSB2b2lkIGtlcm5l
bFBvc2l0aW9uKGludCBibHVySXRlcmF0aW9uLCB1bnNpZ25lZCYgcmFkaXVzLCBpbnQmIGRlbHRh
TGVmdCwKICAgICB9CiB9CiAKLUZFR2F1c3NpYW5CbHVyOjpGRUdhdXNzaWFuQmx1cihGaWx0ZXIm
IGZpbHRlciwgZmxvYXQgeCwgZmxvYXQgeSwgRWRnZU1vZGVUeXBlIGVkZ2VNb2RlKQotICAgIDog
RmlsdGVyRWZmZWN0KGZpbHRlciwgRmlsdGVyRWZmZWN0OjpUeXBlOjpGRUdhdXNzaWFuQmx1cikK
K0ZFR2F1c3NpYW5CbHVyOjpGRUdhdXNzaWFuQmx1cihmbG9hdCB4LCBmbG9hdCB5LCBFZGdlTW9k
ZVR5cGUgZWRnZU1vZGUpCisgICAgOiBGaWx0ZXJFZmZlY3QoRmlsdGVyRWZmZWN0OjpUeXBlOjpG
RUdhdXNzaWFuQmx1cikKICAgICAsIG1fc3RkWCh4KQogICAgICwgbV9zdGRZKHkpCiAgICAgLCBt
X2VkZ2VNb2RlKGVkZ2VNb2RlKQogewogfQogCi1SZWY8RkVHYXVzc2lhbkJsdXI+IEZFR2F1c3Np
YW5CbHVyOjpjcmVhdGUoRmlsdGVyJiBmaWx0ZXIsIGZsb2F0IHgsIGZsb2F0IHksIEVkZ2VNb2Rl
VHlwZSBlZGdlTW9kZSkKK1JlZjxGRUdhdXNzaWFuQmx1cj4gRkVHYXVzc2lhbkJsdXI6OmNyZWF0
ZShmbG9hdCB4LCBmbG9hdCB5LCBFZGdlTW9kZVR5cGUgZWRnZU1vZGUpCiB7Ci0gICAgcmV0dXJu
IGFkb3B0UmVmKCpuZXcgRkVHYXVzc2lhbkJsdXIoZmlsdGVyLCB4LCB5LCBlZGdlTW9kZSkpOwor
ICAgIHJldHVybiBhZG9wdFJlZigqbmV3IEZFR2F1c3NpYW5CbHVyKHgsIHksIGVkZ2VNb2RlKSk7
CiB9CiAKIHZvaWQgRkVHYXVzc2lhbkJsdXI6OnNldFN0ZERldmlhdGlvblgoZmxvYXQgeCkKQEAg
LTQ5Niw5ICs0OTYsOSBAQCBJbnRTaXplIEZFR2F1c3NpYW5CbHVyOjpjYWxjdWxhdGVPdXRzZXRT
aXplKEZsb2F0U2l6ZSBzdGREZXZpYXRpb24pCiAgICAgcmV0dXJuIHsgMyAqIGtlcm5lbFNpemUu
d2lkdGgoKSAvIDIsIDMgKiBrZXJuZWxTaXplLmhlaWdodCgpIC8gMiB9OwogfQogCi12b2lkIEZF
R2F1c3NpYW5CbHVyOjpkZXRlcm1pbmVBYnNvbHV0ZVBhaW50UmVjdCgpCit2b2lkIEZFR2F1c3Np
YW5CbHVyOjpkZXRlcm1pbmVBYnNvbHV0ZVBhaW50UmVjdChjb25zdCBGaWx0ZXImIGZpbHRlcikK
IHsKLSAgICBJbnRTaXplIGtlcm5lbFNpemUgPSBjYWxjdWxhdGVLZXJuZWxTaXplKGZpbHRlcigp
LCB7IG1fc3RkWCwgbV9zdGRZIH0pOworICAgIEludFNpemUga2VybmVsU2l6ZSA9IGNhbGN1bGF0
ZUtlcm5lbFNpemUoZmlsdGVyLCB7IG1fc3RkWCwgbV9zdGRZIH0pOwogCiAgICAgRmxvYXRSZWN0
IGFic29sdXRlUGFpbnRSZWN0ID0gaW5wdXRFZmZlY3QoMCktPmFic29sdXRlUGFpbnRSZWN0KCk7
CiAgICAgLy8gRWRnZSBtb2RlcyBvdGhlciB0aGFuICdub25lJyBkbyBub3QgaW5mbGF0ZSB0aGUg
YWZmZWN0ZWQgcGFpbnQgcmVjdC4KQEAgLTUxOSw3ICs1MTksNyBAQCB2b2lkIEZFR2F1c3NpYW5C
bHVyOjpkZXRlcm1pbmVBYnNvbHV0ZVBhaW50UmVjdCgpCiAgICAgc2V0QWJzb2x1dGVQYWludFJl
Y3QoZW5jbG9zaW5nSW50UmVjdChhYnNvbHV0ZVBhaW50UmVjdCkpOwogfQogCi12b2lkIEZFR2F1
c3NpYW5CbHVyOjpwbGF0Zm9ybUFwcGx5U29mdHdhcmUoKQordm9pZCBGRUdhdXNzaWFuQmx1cjo6
cGxhdGZvcm1BcHBseVNvZnR3YXJlKGNvbnN0IEZpbHRlciYgZmlsdGVyKQogewogICAgIEZpbHRl
ckVmZmVjdCogaW4gPSBpbnB1dEVmZmVjdCgwKTsKIApAQCAtNTM2LDcgKzUzNiw3IEBAIHZvaWQg
RkVHYXVzc2lhbkJsdXI6OnBsYXRmb3JtQXBwbHlTb2Z0d2FyZSgpCiAgICAgaWYgKCFtX3N0ZFgg
JiYgIW1fc3RkWSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgSW50U2l6ZSBrZXJuZWxTaXplID0g
Y2FsY3VsYXRlS2VybmVsU2l6ZShmaWx0ZXIoKSwgeyBtX3N0ZFgsIG1fc3RkWSB9KTsKKyAgICBJ
bnRTaXplIGtlcm5lbFNpemUgPSBjYWxjdWxhdGVLZXJuZWxTaXplKGZpbHRlciwgeyBtX3N0ZFgs
IG1fc3RkWSB9KTsKIAogICAgIEludFNpemUgcGFpbnRTaXplID0gYWJzb2x1dGVQYWludFJlY3Qo
KS5zaXplKCk7CiAgICAgYXV0byB0bXBJbWFnZURhdGEgPSBVaW50OENsYW1wZWRBcnJheTo6dHJ5
Q3JlYXRlVW5pbml0aWFsaXplZChwYWludFNpemUuYXJlYSgpICogNCk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFR2F1c3NpYW5CbHVyLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFR2F1c3NpYW5CbHVy
LmgKaW5kZXggNjMxZDg5NTE2MDdmLi43Njk2MjNhZmE1NDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVHYXVzc2lhbkJsdXIuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFR2F1c3NpYW5CbHVyLmgK
QEAgLTIyLDE0ICsyMiwxMyBAQAogI3ByYWdtYSBvbmNlCiAKICNpbmNsdWRlICJGRUNvbnZvbHZl
TWF0cml4LmgiCi0jaW5jbHVkZSAiRmlsdGVyLmgiCiAjaW5jbHVkZSAiRmlsdGVyRWZmZWN0Lmgi
CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgRkVHYXVzc2lhbkJsdXIgOiBwdWJsaWMg
RmlsdGVyRWZmZWN0IHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUmVmPEZFR2F1c3NpYW5CbHVyPiBj
cmVhdGUoRmlsdGVyJiwgZmxvYXQsIGZsb2F0LCBFZGdlTW9kZVR5cGUpOworICAgIHN0YXRpYyBS
ZWY8RkVHYXVzc2lhbkJsdXI+IGNyZWF0ZShmbG9hdCB4LCBmbG9hdCB5LCBFZGdlTW9kZVR5cGUp
OwogCiAgICAgZmxvYXQgc3RkRGV2aWF0aW9uWCgpIGNvbnN0IHsgcmV0dXJuIG1fc3RkWDsgfQog
ICAgIHZvaWQgc2V0U3RkRGV2aWF0aW9uWChmbG9hdCk7CkBAIC00NSw3ICs0NCw3IEBAIHB1Ymxp
YzoKICAgICBzdGF0aWMgSW50U2l6ZSBjYWxjdWxhdGVPdXRzZXRTaXplKEZsb2F0U2l6ZSBzdGRE
ZXZpYXRpb24pOwogCiBwcml2YXRlOgotICAgIEZFR2F1c3NpYW5CbHVyKEZpbHRlciYsIGZsb2F0
LCBmbG9hdCwgRWRnZU1vZGVUeXBlKTsKKyAgICBGRUdhdXNzaWFuQmx1cihmbG9hdCB4LCBmbG9h
dCB5LCBFZGdlTW9kZVR5cGUpOwogCiAgICAgc3RhdGljIGNvbnN0IGludCBzX21pbmltYWxSZWN0
RGltZW5zaW9uID0gMTAwICogMTAwOyAvLyBFbXBpcmljYWwgZGF0YSBsaW1pdCBmb3IgcGFyYWxs
ZWwgam9icwogCkBAIC02Miw5ICs2MSw5IEBAIHByaXZhdGU6CiAgICAgICAgIHVuc2lnbmVkIGtl
cm5lbFNpemVZOwogICAgIH07CiAKLSAgICB2b2lkIHBsYXRmb3JtQXBwbHlTb2Z0d2FyZSgpIG92
ZXJyaWRlOworICAgIHZvaWQgcGxhdGZvcm1BcHBseVNvZnR3YXJlKGNvbnN0IEZpbHRlciYpIG92
ZXJyaWRlOwogCi0gICAgdm9pZCBkZXRlcm1pbmVBYnNvbHV0ZVBhaW50UmVjdCgpIG92ZXJyaWRl
OworICAgIHZvaWQgZGV0ZXJtaW5lQWJzb2x1dGVQYWludFJlY3QoY29uc3QgRmlsdGVyJikgb3Zl
cnJpZGU7CiAKICAgICBJbnRPdXRzZXRzIG91dHNldHMoKSBjb25zdCBvdmVycmlkZTsKIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRUxpZ2h0
aW5nLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVMaWdo
dGluZy5jcHAKaW5kZXggNjU5YjEwNTVmNjFlLi45MTE4YTliZjI1MmUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVMaWdodGluZy5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRUxpZ2h0aW5nLmNw
cApAQCAtMzUsOCArMzUsOCBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLUZFTGlnaHRpbmc6
OkZFTGlnaHRpbmcoRmlsdGVyJiBmaWx0ZXIsIExpZ2h0aW5nVHlwZSBsaWdodGluZ1R5cGUsIGNv
bnN0IENvbG9yJiBsaWdodGluZ0NvbG9yLCBmbG9hdCBzdXJmYWNlU2NhbGUsIGZsb2F0IGRpZmZ1
c2VDb25zdGFudCwgZmxvYXQgc3BlY3VsYXJDb25zdGFudCwgZmxvYXQgc3BlY3VsYXJFeHBvbmVu
dCwgZmxvYXQga2VybmVsVW5pdExlbmd0aFgsIGZsb2F0IGtlcm5lbFVuaXRMZW5ndGhZLCBSZWY8
TGlnaHRTb3VyY2U+JiYgbGlnaHRTb3VyY2UsIFR5cGUgdHlwZSkKLSAgICA6IEZpbHRlckVmZmVj
dChmaWx0ZXIsIHR5cGUpCitGRUxpZ2h0aW5nOjpGRUxpZ2h0aW5nKExpZ2h0aW5nVHlwZSBsaWdo
dGluZ1R5cGUsIGNvbnN0IENvbG9yJiBsaWdodGluZ0NvbG9yLCBmbG9hdCBzdXJmYWNlU2NhbGUs
IGZsb2F0IGRpZmZ1c2VDb25zdGFudCwgZmxvYXQgc3BlY3VsYXJDb25zdGFudCwgZmxvYXQgc3Bl
Y3VsYXJFeHBvbmVudCwgZmxvYXQga2VybmVsVW5pdExlbmd0aFgsIGZsb2F0IGtlcm5lbFVuaXRM
ZW5ndGhZLCBSZWY8TGlnaHRTb3VyY2U+JiYgbGlnaHRTb3VyY2UsIFR5cGUgdHlwZSkKKyAgICA6
IEZpbHRlckVmZmVjdCh0eXBlKQogICAgICwgbV9saWdodGluZ1R5cGUobGlnaHRpbmdUeXBlKQog
ICAgICwgbV9saWdodFNvdXJjZShXVEZNb3ZlKGxpZ2h0U291cmNlKSkKICAgICAsIG1fbGlnaHRp
bmdDb2xvcihsaWdodGluZ0NvbG9yKQpAQCAtNDcxLDcgKzQ3MSw3IEBAIGJvb2wgRkVMaWdodGlu
Zzo6ZHJhd0xpZ2h0aW5nKFVpbnQ4Q2xhbXBlZEFycmF5JiBwaXhlbHMsIGludCB3aWR0aCwgaW50
IGhlaWdodCkKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotdm9pZCBGRUxpZ2h0aW5nOjpwbGF0Zm9y
bUFwcGx5U29mdHdhcmUoKQordm9pZCBGRUxpZ2h0aW5nOjpwbGF0Zm9ybUFwcGx5U29mdHdhcmUo
Y29uc3QgRmlsdGVyJikKIHsKICAgICBGaWx0ZXJFZmZlY3QqIGluID0gaW5wdXRFZmZlY3QoMCk7
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMv
RkVMaWdodGluZy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9G
RUxpZ2h0aW5nLmgKaW5kZXggMDFmNDQyYjQwMDMzLi5kODUyZjhiMTNkZDcgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVMaWdodGluZy5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVMaWdodGluZy5o
CkBAIC0yNyw3ICsyNyw2IEBACiAjcHJhZ21hIG9uY2UKIAogI2luY2x1ZGUgIkNvbG9yLmgiCi0j
aW5jbHVkZSAiRmlsdGVyLmgiCiAjaW5jbHVkZSAiRmlsdGVyRWZmZWN0LmgiCiAjaW5jbHVkZSAi
TGlnaHRTb3VyY2UuaCIKICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9Gb3J3YXJkLmg+CkBAIC00
MCw3ICszOSw3IEBAIHN0cnVjdCBGRUxpZ2h0aW5nUGFpbnRpbmdEYXRhRm9yTmVvbjsKIAogY2xh
c3MgRkVMaWdodGluZyA6IHB1YmxpYyBGaWx0ZXJFZmZlY3QgewogcHVibGljOgotICAgIHZvaWQg
ZGV0ZXJtaW5lQWJzb2x1dGVQYWludFJlY3QoKSBvdmVycmlkZSB7IHNldEFic29sdXRlUGFpbnRS
ZWN0KGVuY2xvc2luZ0ludFJlY3QobWF4RWZmZWN0UmVjdCgpKSk7IH0KKyAgICB2b2lkIGRldGVy
bWluZUFic29sdXRlUGFpbnRSZWN0KGNvbnN0IEZpbHRlciYpIG92ZXJyaWRlIHsgc2V0QWJzb2x1
dGVQYWludFJlY3QoZW5jbG9zaW5nSW50UmVjdChtYXhFZmZlY3RSZWN0KCkpKTsgfQogCiAgICAg
ZmxvYXQgc3VyZmFjZVNjYWxlKCkgY29uc3QgeyByZXR1cm4gbV9zdXJmYWNlU2NhbGU7IH0KICAg
ICBib29sIHNldFN1cmZhY2VTY2FsZShmbG9hdCk7CkBAIC0xMjgsMTQgKzEyNywxNCBAQCBwcm90
ZWN0ZWQ6CiAgICAgc3RhdGljIHZvaWQgcGxhdGZvcm1BcHBseUdlbmVyaWNXb3JrZXIoUGxhdGZv
cm1BcHBseUdlbmVyaWNQYXJhbWV0ZXJzKik7CiAgICAgc3RhdGljIHZvaWQgcGxhdGZvcm1BcHBs
eU5lb25Xb3JrZXIoRkVMaWdodGluZ1BhaW50aW5nRGF0YUZvck5lb24qKTsKIAotICAgIEZFTGln
aHRpbmcoRmlsdGVyJiwgTGlnaHRpbmdUeXBlLCBjb25zdCBDb2xvciYsIGZsb2F0LCBmbG9hdCwg
ZmxvYXQsIGZsb2F0LCBmbG9hdCwgZmxvYXQsIFJlZjxMaWdodFNvdXJjZT4mJiwgVHlwZSk7Cisg
ICAgRkVMaWdodGluZyhMaWdodGluZ1R5cGUsIGNvbnN0IENvbG9yJiBsaWdodGluZ0NvbG9yLCBm
bG9hdCBzdXJmYWNlU2NhbGUsIGZsb2F0IGRpZmZ1c2VDb25zdGFudCwgZmxvYXQgc3BlY3VsYXJD
b25zdGFudCwgZmxvYXQgc3BlY3VsYXJFeHBvbmVudCwgZmxvYXQga2VybmVsVW5pdExlbmd0aFgs
IGZsb2F0IGtlcm5lbFVuaXRMZW5ndGhZLCBSZWY8TGlnaHRTb3VyY2U+JiYsIFR5cGUpOwogCiAg
ICAgYm9vbCBkcmF3TGlnaHRpbmcoVWludDhDbGFtcGVkQXJyYXkmLCBpbnQsIGludCk7CiAKICAg
ICB2b2lkIHNldFBpeGVsKGludCBvZmZzZXQsIGNvbnN0IExpZ2h0aW5nRGF0YSYsIGNvbnN0IExp
Z2h0U291cmNlOjpQYWludGluZ0RhdGEmLCBpbnQgeCwgaW50IHksIGZsb2F0IGZhY3RvclgsIGZs
b2F0IGZhY3RvclksIEludFNpemUgbm9ybWFsVmVjdG9yKTsKICAgICB2b2lkIHNldFBpeGVsSW50
ZXJuYWwoaW50IG9mZnNldCwgY29uc3QgTGlnaHRpbmdEYXRhJiwgY29uc3QgTGlnaHRTb3VyY2U6
OlBhaW50aW5nRGF0YSYsIGludCB4LCBpbnQgeSwgZmxvYXQgZmFjdG9yWCwgZmxvYXQgZmFjdG9y
WSwgSW50U2l6ZSBub3JtYWxWZWN0b3IsIGZsb2F0IGFscGhhKTsKIAotICAgIHZvaWQgcGxhdGZv
cm1BcHBseVNvZnR3YXJlKCkgb3ZlcnJpZGU7CisgICAgdm9pZCBwbGF0Zm9ybUFwcGx5U29mdHdh
cmUoY29uc3QgRmlsdGVyJikgb3ZlcnJpZGU7CiAKICAgICB2b2lkIHBsYXRmb3JtQXBwbHkoY29u
c3QgTGlnaHRpbmdEYXRhJiwgY29uc3QgTGlnaHRTb3VyY2U6OlBhaW50aW5nRGF0YSYpOwogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFTWVy
Z2UuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRU1lcmdl
LmNwcAppbmRleCA2OTdkMmUxNWNjYmYuLjQ4OWMyZmZiYTFjZiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRU1lcmdlLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFTWVyZ2UuY3BwCkBAIC0yOCwx
NyArMjgsMTcgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1GRU1lcmdlOjpGRU1lcmdlKEZp
bHRlciYgZmlsdGVyKQotICAgIDogRmlsdGVyRWZmZWN0KGZpbHRlciwgRmlsdGVyRWZmZWN0OjpU
eXBlOjpGRU1lcmdlKQorRkVNZXJnZTo6RkVNZXJnZSgpCisgICAgOiBGaWx0ZXJFZmZlY3QoRmls
dGVyRWZmZWN0OjpUeXBlOjpGRU1lcmdlKQogewogfQogCi1SZWY8RkVNZXJnZT4gRkVNZXJnZTo6
Y3JlYXRlKEZpbHRlciYgZmlsdGVyKQorUmVmPEZFTWVyZ2U+IEZFTWVyZ2U6OmNyZWF0ZSgpCiB7
Ci0gICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgRkVNZXJnZShmaWx0ZXIpKTsKKyAgICByZXR1cm4g
YWRvcHRSZWYoKm5ldyBGRU1lcmdlKCkpOwogfQogCi12b2lkIEZFTWVyZ2U6OnBsYXRmb3JtQXBw
bHlTb2Z0d2FyZSgpCit2b2lkIEZFTWVyZ2U6OnBsYXRmb3JtQXBwbHlTb2Z0d2FyZShjb25zdCBG
aWx0ZXImKQogewogICAgIHVuc2lnbmVkIHNpemUgPSBudW1iZXJPZkVmZmVjdElucHV0cygpOwog
ICAgIEFTU0VSVChzaXplID4gMCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9maWx0ZXJzL0ZFTWVyZ2UuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2ZpbHRlcnMvRkVNZXJnZS5oCmluZGV4IDI3NTBjNGQ1MjRkMy4uMDUxOWE1Njg4YTgz
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZF
TWVyZ2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZF
TWVyZ2UuaApAQCAtMjIsMTggKzIyLDE3IEBACiAjcHJhZ21hIG9uY2UKIAogI2luY2x1ZGUgIkZp
bHRlckVmZmVjdC5oIgotI2luY2x1ZGUgIkZpbHRlci5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAKIGNsYXNzIEZFTWVyZ2UgOiBwdWJsaWMgRmlsdGVyRWZmZWN0IHsKIHB1YmxpYzoKLSAgICBz
dGF0aWMgUmVmPEZFTWVyZ2U+IGNyZWF0ZShGaWx0ZXImKTsKKyAgICBzdGF0aWMgUmVmPEZFTWVy
Z2U+IGNyZWF0ZSgpOwogCiBwcml2YXRlOgotICAgIEZFTWVyZ2UoRmlsdGVyJik7CisgICAgRkVN
ZXJnZSgpOwogCi0gICAgdm9pZCBwbGF0Zm9ybUFwcGx5U29mdHdhcmUoKSBvdmVycmlkZTsKKyAg
ICB2b2lkIHBsYXRmb3JtQXBwbHlTb2Z0d2FyZShjb25zdCBGaWx0ZXImKSBvdmVycmlkZTsKIAog
ICAgIFdURjo6VGV4dFN0cmVhbSYgZXh0ZXJuYWxSZXByZXNlbnRhdGlvbihXVEY6OlRleHRTdHJl
YW0mLCBSZXByZXNlbnRhdGlvblR5cGUpIGNvbnN0IG92ZXJyaWRlOwogfTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVNb3JwaG9sb2d5LmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVNb3JwaG9sb2d5
LmNwcAppbmRleCAxYjBkYWViMGRiNTYuLjg5YWYyZGVkNjYyMyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRU1vcnBob2xvZ3kuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVNb3JwaG9sb2d5LmNw
cApAQCAtMzUsMTcgKzM1LDE3IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotRkVNb3JwaG9s
b2d5OjpGRU1vcnBob2xvZ3koRmlsdGVyJiBmaWx0ZXIsIE1vcnBob2xvZ3lPcGVyYXRvclR5cGUg
dHlwZSwgZmxvYXQgcmFkaXVzWCwgZmxvYXQgcmFkaXVzWSkKLSAgICA6IEZpbHRlckVmZmVjdChm
aWx0ZXIsIEZpbHRlckVmZmVjdDo6VHlwZTo6RkVNb3JwaG9sb2d5KQorRkVNb3JwaG9sb2d5OjpG
RU1vcnBob2xvZ3koTW9ycGhvbG9neU9wZXJhdG9yVHlwZSB0eXBlLCBmbG9hdCByYWRpdXNYLCBm
bG9hdCByYWRpdXNZKQorICAgIDogRmlsdGVyRWZmZWN0KEZpbHRlckVmZmVjdDo6VHlwZTo6RkVN
b3JwaG9sb2d5KQogICAgICwgbV90eXBlKHR5cGUpCiAgICAgLCBtX3JhZGl1c1gocmFkaXVzWCkK
ICAgICAsIG1fcmFkaXVzWShyYWRpdXNZKQogewogfQogCi1SZWY8RkVNb3JwaG9sb2d5PiBGRU1v
cnBob2xvZ3k6OmNyZWF0ZShGaWx0ZXImIGZpbHRlciwgTW9ycGhvbG9neU9wZXJhdG9yVHlwZSB0
eXBlLCBmbG9hdCByYWRpdXNYLCBmbG9hdCByYWRpdXNZKQorUmVmPEZFTW9ycGhvbG9neT4gRkVN
b3JwaG9sb2d5OjpjcmVhdGUoTW9ycGhvbG9neU9wZXJhdG9yVHlwZSB0eXBlLCBmbG9hdCByYWRp
dXNYLCBmbG9hdCByYWRpdXNZKQogewotICAgIHJldHVybiBhZG9wdFJlZigqbmV3IEZFTW9ycGhv
bG9neShmaWx0ZXIsIHR5cGUsIHJhZGl1c1gsIHJhZGl1c1kpKTsKKyAgICByZXR1cm4gYWRvcHRS
ZWYoKm5ldyBGRU1vcnBob2xvZ3kodHlwZSwgcmFkaXVzWCwgcmFkaXVzWSkpOwogfQogCiBib29s
IEZFTW9ycGhvbG9neTo6c2V0TW9ycGhvbG9neU9wZXJhdG9yKE1vcnBob2xvZ3lPcGVyYXRvclR5
cGUgdHlwZSkKQEAgLTcyLDEwICs3Miw5IEBAIGJvb2wgRkVNb3JwaG9sb2d5OjpzZXRSYWRpdXNZ
KGZsb2F0IHJhZGl1c1kpCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLXZvaWQgRkVNb3JwaG9sb2d5
OjpkZXRlcm1pbmVBYnNvbHV0ZVBhaW50UmVjdCgpCit2b2lkIEZFTW9ycGhvbG9neTo6ZGV0ZXJt
aW5lQWJzb2x1dGVQYWludFJlY3QoY29uc3QgRmlsdGVyJiBmaWx0ZXIpCiB7CiAgICAgRmxvYXRS
ZWN0IHBhaW50UmVjdCA9IGlucHV0RWZmZWN0KDApLT5hYnNvbHV0ZVBhaW50UmVjdCgpOwotICAg
IEZpbHRlciYgZmlsdGVyID0gdGhpcy0+ZmlsdGVyKCk7CiAgICAgcGFpbnRSZWN0LmluZmxhdGUo
ZmlsdGVyLnNjYWxlZEJ5RmlsdGVyU2NhbGUoeyBtX3JhZGl1c1gsIG1fcmFkaXVzWSB9KSk7CiAg
ICAgaWYgKGNsaXBzVG9Cb3VuZHMoKSkKICAgICAgICAgcGFpbnRSZWN0LmludGVyc2VjdChtYXhF
ZmZlY3RSZWN0KCkpOwpAQCAtMjQwLDcgKzIzOSw3IEBAIGJvb2wgRkVNb3JwaG9sb2d5OjpwbGF0
Zm9ybUFwcGx5RGVnZW5lcmF0ZShVaW50OENsYW1wZWRBcnJheSYgZHN0UGl4ZWxBcnJheSwgY29u
CiAgICAgcmV0dXJuIGZhbHNlOwogfQogCi12b2lkIEZFTW9ycGhvbG9neTo6cGxhdGZvcm1BcHBs
eVNvZnR3YXJlKCkKK3ZvaWQgRkVNb3JwaG9sb2d5OjpwbGF0Zm9ybUFwcGx5U29mdHdhcmUoY29u
c3QgRmlsdGVyJiBmaWx0ZXIpCiB7CiAgICAgRmlsdGVyRWZmZWN0KiBpbiA9IGlucHV0RWZmZWN0
KDApOwogCkBAIC0yNTgsNyArMjU3LDYgQEAgdm9pZCBGRU1vcnBob2xvZ3k6OnBsYXRmb3JtQXBw
bHlTb2Z0d2FyZSgpCiAgICAgaWYgKHBsYXRmb3JtQXBwbHlEZWdlbmVyYXRlKGRlc3RpbmF0aW9u
UGl4ZWxBcnJheSwgZWZmZWN0RHJhd2luZ1JlY3QsIHJhZGl1cy53aWR0aCgpLCByYWRpdXMuaGVp
Z2h0KCkpKQogICAgICAgICByZXR1cm47CiAKLSAgICBGaWx0ZXImIGZpbHRlciA9IHRoaXMtPmZp
bHRlcigpOwogICAgIGF1dG8gc291cmNlUGl4ZWxBcnJheSA9IGluLT5wcmVtdWx0aXBsaWVkUmVz
dWx0KGVmZmVjdERyYXdpbmdSZWN0LCBvcGVyYXRpbmdDb2xvclNwYWNlKCkpOwogICAgIGlmICgh
c291cmNlUGl4ZWxBcnJheSkKICAgICAgICAgcmV0dXJuOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRU1vcnBob2xvZ3kuaCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVNb3JwaG9sb2d5LmgKaW5kZXggMWI2
OWM2MzI2Y2IwLi5hZTgxNTE1NGNlYWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVNb3JwaG9sb2d5LmgKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRU1vcnBob2xvZ3kuaApAQCAtMjIsNyArMjIsNiBA
QAogI3ByYWdtYSBvbmNlCiAKICNpbmNsdWRlICJGaWx0ZXJFZmZlY3QuaCIKLSNpbmNsdWRlICJG
aWx0ZXIuaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCkBAIC0zNCw3ICszMyw3IEBAIGVudW0g
TW9ycGhvbG9neU9wZXJhdG9yVHlwZSB7CiAKIGNsYXNzIEZFTW9ycGhvbG9neSA6IHB1YmxpYyBG
aWx0ZXJFZmZlY3QgewogcHVibGljOgotICAgIHN0YXRpYyBSZWY8RkVNb3JwaG9sb2d5PiBjcmVh
dGUoRmlsdGVyJiwgTW9ycGhvbG9neU9wZXJhdG9yVHlwZSwgZmxvYXQgcmFkaXVzWCwgZmxvYXQg
cmFkaXVzWSk7CisgICAgc3RhdGljIFJlZjxGRU1vcnBob2xvZ3k+IGNyZWF0ZShNb3JwaG9sb2d5
T3BlcmF0b3JUeXBlLCBmbG9hdCByYWRpdXNYLCBmbG9hdCByYWRpdXNZKTsKIAogICAgIE1vcnBo
b2xvZ3lPcGVyYXRvclR5cGUgbW9ycGhvbG9neU9wZXJhdG9yKCkgY29uc3QgeyByZXR1cm4gbV90
eXBlOyB9CiAgICAgYm9vbCBzZXRNb3JwaG9sb2d5T3BlcmF0b3IoTW9ycGhvbG9neU9wZXJhdG9y
VHlwZSk7CkBAIC00NiwxMSArNDUsMTEgQEAgcHVibGljOgogICAgIGJvb2wgc2V0UmFkaXVzWShm
bG9hdCk7CiAKIHByaXZhdGU6Ci0gICAgRkVNb3JwaG9sb2d5KEZpbHRlciYsIE1vcnBob2xvZ3lP
cGVyYXRvclR5cGUsIGZsb2F0IHJhZGl1c1gsIGZsb2F0IHJhZGl1c1kpOworICAgIEZFTW9ycGhv
bG9neShNb3JwaG9sb2d5T3BlcmF0b3JUeXBlLCBmbG9hdCByYWRpdXNYLCBmbG9hdCByYWRpdXNZ
KTsKIAotICAgIHZvaWQgcGxhdGZvcm1BcHBseVNvZnR3YXJlKCkgb3ZlcnJpZGU7CisgICAgdm9p
ZCBwbGF0Zm9ybUFwcGx5U29mdHdhcmUoY29uc3QgRmlsdGVyJikgb3ZlcnJpZGU7CiAKLSAgICB2
b2lkIGRldGVybWluZUFic29sdXRlUGFpbnRSZWN0KCkgb3ZlcnJpZGU7CisgICAgdm9pZCBkZXRl
cm1pbmVBYnNvbHV0ZVBhaW50UmVjdChjb25zdCBGaWx0ZXImKSBvdmVycmlkZTsKIAogICAgIFdU
Rjo6VGV4dFN0cmVhbSYgZXh0ZXJuYWxSZXByZXNlbnRhdGlvbihXVEY6OlRleHRTdHJlYW0mLCBS
ZXByZXNlbnRhdGlvblR5cGUpIGNvbnN0IG92ZXJyaWRlOwogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFT2Zmc2V0LmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVPZmZzZXQuY3BwCmluZGV4IDAyOGNi
YzYwYTQ0Ny4uODkwOWNiYjgxOTJmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9maWx0ZXJzL0ZFT2Zmc2V0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFT2Zmc2V0LmNwcApAQCAtMzAsMTYgKzMwLDE2IEBACiAK
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotRkVPZmZzZXQ6OkZFT2Zmc2V0KEZpbHRlciYgZmlsdGVy
LCBmbG9hdCBkeCwgZmxvYXQgZHkpCi0gICAgOiBGaWx0ZXJFZmZlY3QoZmlsdGVyLCBGaWx0ZXJF
ZmZlY3Q6OlR5cGU6OkZFT2Zmc2V0KQorRkVPZmZzZXQ6OkZFT2Zmc2V0KGZsb2F0IGR4LCBmbG9h
dCBkeSkKKyAgICA6IEZpbHRlckVmZmVjdChGaWx0ZXJFZmZlY3Q6OlR5cGU6OkZFT2Zmc2V0KQog
ICAgICwgbV9keChkeCkKICAgICAsIG1fZHkoZHkpCiB7CiB9CiAKLVJlZjxGRU9mZnNldD4gRkVP
ZmZzZXQ6OmNyZWF0ZShGaWx0ZXImIGZpbHRlciwgZmxvYXQgZHgsIGZsb2F0IGR5KQorUmVmPEZF
T2Zmc2V0PiBGRU9mZnNldDo6Y3JlYXRlKGZsb2F0IGR4LCBmbG9hdCBkeSkKIHsKLSAgICByZXR1
cm4gYWRvcHRSZWYoKm5ldyBGRU9mZnNldChmaWx0ZXIsIGR4LCBkeSkpOworICAgIHJldHVybiBh
ZG9wdFJlZigqbmV3IEZFT2Zmc2V0KGR4LCBkeSkpOwogfQogCiB2b2lkIEZFT2Zmc2V0OjpzZXRE
eChmbG9hdCBkeCkKQEAgLTUyLDEwICs1Miw5IEBAIHZvaWQgRkVPZmZzZXQ6OnNldER5KGZsb2F0
IGR5KQogICAgIG1fZHkgPSBkeTsKIH0KIAotdm9pZCBGRU9mZnNldDo6ZGV0ZXJtaW5lQWJzb2x1
dGVQYWludFJlY3QoKQordm9pZCBGRU9mZnNldDo6ZGV0ZXJtaW5lQWJzb2x1dGVQYWludFJlY3Qo
Y29uc3QgRmlsdGVyJiBmaWx0ZXIpCiB7CiAgICAgRmxvYXRSZWN0IHBhaW50UmVjdCA9IGlucHV0
RWZmZWN0KDApLT5hYnNvbHV0ZVBhaW50UmVjdCgpOwotICAgIEZpbHRlciYgZmlsdGVyID0gdGhp
cy0+ZmlsdGVyKCk7CiAgICAgcGFpbnRSZWN0Lm1vdmUoZmlsdGVyLnNjYWxlZEJ5RmlsdGVyU2Nh
bGUoeyBtX2R4LCBtX2R5IH0pKTsKICAgICBpZiAoY2xpcHNUb0JvdW5kcygpKQogICAgICAgICBw
YWludFJlY3QuaW50ZXJzZWN0KG1heEVmZmVjdFJlY3QoKSk7CkBAIC02NCw3ICs2Myw3IEBAIHZv
aWQgRkVPZmZzZXQ6OmRldGVybWluZUFic29sdXRlUGFpbnRSZWN0KCkKICAgICBzZXRBYnNvbHV0
ZVBhaW50UmVjdChlbmNsb3NpbmdJbnRSZWN0KHBhaW50UmVjdCkpOwogfQogCi12b2lkIEZFT2Zm
c2V0OjpwbGF0Zm9ybUFwcGx5U29mdHdhcmUoKQordm9pZCBGRU9mZnNldDo6cGxhdGZvcm1BcHBs
eVNvZnR3YXJlKGNvbnN0IEZpbHRlciYgZmlsdGVyKQogewogICAgIEZpbHRlckVmZmVjdCogaW4g
PSBpbnB1dEVmZmVjdCgwKTsKIApAQCAtNzYsNyArNzUsNiBAQCB2b2lkIEZFT2Zmc2V0OjpwbGF0
Zm9ybUFwcGx5U29mdHdhcmUoKQogICAgIHNldElzQWxwaGFJbWFnZShpbi0+aXNBbHBoYUltYWdl
KCkpOwogCiAgICAgRmxvYXRSZWN0IGRyYXdpbmdSZWdpb24gPSBkcmF3aW5nUmVnaW9uT2ZJbnB1
dEltYWdlKGluLT5hYnNvbHV0ZVBhaW50UmVjdCgpKTsKLSAgICBGaWx0ZXImIGZpbHRlciA9IHRo
aXMtPmZpbHRlcigpOwogICAgIGRyYXdpbmdSZWdpb24ubW92ZShmaWx0ZXIuc2NhbGVkQnlGaWx0
ZXJTY2FsZSh7IG1fZHgsIG1fZHkgfSkpOwogICAgIHJlc3VsdEltYWdlLT5jb250ZXh0KCkuZHJh
d0ltYWdlQnVmZmVyKCppbkJ1ZmZlciwgZHJhd2luZ1JlZ2lvbik7CiB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFT2Zmc2V0LmggYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFT2Zmc2V0LmgKaW5kZXggZGI3
MzIyNTVlZTc4Li5kM2VjOTVhZGRmMTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVPZmZzZXQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFT2Zmc2V0LmgKQEAgLTIyLDEzICsyMiwxMiBAQAogI3By
YWdtYSBvbmNlCiAKICNpbmNsdWRlICJGaWx0ZXJFZmZlY3QuaCIKLSNpbmNsdWRlICJGaWx0ZXIu
aCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBGRU9mZnNldCA6IHB1YmxpYyBGaWx0
ZXJFZmZlY3QgewogcHVibGljOgotICAgIHN0YXRpYyBSZWY8RkVPZmZzZXQ+IGNyZWF0ZShGaWx0
ZXImLCBmbG9hdCBkeCwgZmxvYXQgZHkpOworICAgIHN0YXRpYyBSZWY8RkVPZmZzZXQ+IGNyZWF0
ZShmbG9hdCBkeCwgZmxvYXQgZHkpOwogCiAgICAgZmxvYXQgZHgoKSBjb25zdCB7IHJldHVybiBt
X2R4OyB9CiAgICAgdm9pZCBzZXREeChmbG9hdCk7CkBAIC0zNywxMSArMzYsMTEgQEAgcHVibGlj
OgogICAgIHZvaWQgc2V0RHkoZmxvYXQpOwogCiBwcml2YXRlOgotICAgIEZFT2Zmc2V0KEZpbHRl
ciYsIGZsb2F0IGR4LCBmbG9hdCBkeSk7CisgICAgRkVPZmZzZXQoZmxvYXQgZHgsIGZsb2F0IGR5
KTsKIAotICAgIHZvaWQgcGxhdGZvcm1BcHBseVNvZnR3YXJlKCkgb3ZlcnJpZGU7CisgICAgdm9p
ZCBwbGF0Zm9ybUFwcGx5U29mdHdhcmUoY29uc3QgRmlsdGVyJikgb3ZlcnJpZGU7CiAgICAgCi0g
ICAgdm9pZCBkZXRlcm1pbmVBYnNvbHV0ZVBhaW50UmVjdCgpIG92ZXJyaWRlOworICAgIHZvaWQg
ZGV0ZXJtaW5lQWJzb2x1dGVQYWludFJlY3QoY29uc3QgRmlsdGVyJikgb3ZlcnJpZGU7CiAKICAg
ICBXVEY6OlRleHRTdHJlYW0mIGV4dGVybmFsUmVwcmVzZW50YXRpb24oV1RGOjpUZXh0U3RyZWFt
JiwgUmVwcmVzZW50YXRpb25UeXBlKSBjb25zdCBvdmVycmlkZTsKIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRVNwZWN1bGFyTGlnaHRpbmcu
Y3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRVNwZWN1bGFy
TGlnaHRpbmcuY3BwCmluZGV4IDUyZjQ1MDg0MDkwYS4uMzg3MDdiMzAxZmQxIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFU3BlY3VsYXJMaWdo
dGluZy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9G
RVNwZWN1bGFyTGlnaHRpbmcuY3BwCkBAIC0yNywxNCArMjcsMTQgQEAKIAogbmFtZXNwYWNlIFdl
YkNvcmUgewogCi1GRVNwZWN1bGFyTGlnaHRpbmc6OkZFU3BlY3VsYXJMaWdodGluZyhGaWx0ZXIm
IGZpbHRlciwgY29uc3QgQ29sb3ImIGxpZ2h0aW5nQ29sb3IsIGZsb2F0IHN1cmZhY2VTY2FsZSwg
ZmxvYXQgc3BlY3VsYXJDb25zdGFudCwgZmxvYXQgc3BlY3VsYXJFeHBvbmVudCwgZmxvYXQga2Vy
bmVsVW5pdExlbmd0aFgsIGZsb2F0IGtlcm5lbFVuaXRMZW5ndGhZLCBSZWY8TGlnaHRTb3VyY2U+
JiYgbGlnaHRTb3VyY2UpCi0gICAgOiBGRUxpZ2h0aW5nKGZpbHRlciwgU3BlY3VsYXJMaWdodGlu
ZywgbGlnaHRpbmdDb2xvciwgc3VyZmFjZVNjYWxlLCAwLCBzcGVjdWxhckNvbnN0YW50LCBzcGVj
dWxhckV4cG9uZW50LCBrZXJuZWxVbml0TGVuZ3RoWCwga2VybmVsVW5pdExlbmd0aFksIFdURk1v
dmUobGlnaHRTb3VyY2UpLCBGaWx0ZXJFZmZlY3Q6OlR5cGU6OkZFU3BlY3VsYXJMaWdodGluZykK
K0ZFU3BlY3VsYXJMaWdodGluZzo6RkVTcGVjdWxhckxpZ2h0aW5nKGNvbnN0IENvbG9yJiBsaWdo
dGluZ0NvbG9yLCBmbG9hdCBzdXJmYWNlU2NhbGUsIGZsb2F0IHNwZWN1bGFyQ29uc3RhbnQsIGZs
b2F0IHNwZWN1bGFyRXhwb25lbnQsIGZsb2F0IGtlcm5lbFVuaXRMZW5ndGhYLCBmbG9hdCBrZXJu
ZWxVbml0TGVuZ3RoWSwgUmVmPExpZ2h0U291cmNlPiYmIGxpZ2h0U291cmNlKQorICAgIDogRkVM
aWdodGluZyhTcGVjdWxhckxpZ2h0aW5nLCBsaWdodGluZ0NvbG9yLCBzdXJmYWNlU2NhbGUsIDAs
IHNwZWN1bGFyQ29uc3RhbnQsIHNwZWN1bGFyRXhwb25lbnQsIGtlcm5lbFVuaXRMZW5ndGhYLCBr
ZXJuZWxVbml0TGVuZ3RoWSwgV1RGTW92ZShsaWdodFNvdXJjZSksIEZpbHRlckVmZmVjdDo6VHlw
ZTo6RkVTcGVjdWxhckxpZ2h0aW5nKQogewogfQogCi1SZWY8RkVTcGVjdWxhckxpZ2h0aW5nPiBG
RVNwZWN1bGFyTGlnaHRpbmc6OmNyZWF0ZShGaWx0ZXImIGZpbHRlciwgY29uc3QgQ29sb3ImIGxp
Z2h0aW5nQ29sb3IsIGZsb2F0IHN1cmZhY2VTY2FsZSwgZmxvYXQgc3BlY3VsYXJDb25zdGFudCwg
ZmxvYXQgc3BlY3VsYXJFeHBvbmVudCwgZmxvYXQga2VybmVsVW5pdExlbmd0aFgsIGZsb2F0IGtl
cm5lbFVuaXRMZW5ndGhZLCBSZWY8TGlnaHRTb3VyY2U+JiYgbGlnaHRTb3VyY2UpCitSZWY8RkVT
cGVjdWxhckxpZ2h0aW5nPiBGRVNwZWN1bGFyTGlnaHRpbmc6OmNyZWF0ZShjb25zdCBDb2xvciYg
bGlnaHRpbmdDb2xvciwgZmxvYXQgc3VyZmFjZVNjYWxlLCBmbG9hdCBzcGVjdWxhckNvbnN0YW50
LCBmbG9hdCBzcGVjdWxhckV4cG9uZW50LCBmbG9hdCBrZXJuZWxVbml0TGVuZ3RoWCwgZmxvYXQg
a2VybmVsVW5pdExlbmd0aFksIFJlZjxMaWdodFNvdXJjZT4mJiBsaWdodFNvdXJjZSkKIHsKLSAg
ICByZXR1cm4gYWRvcHRSZWYoKm5ldyBGRVNwZWN1bGFyTGlnaHRpbmcoZmlsdGVyLCBsaWdodGlu
Z0NvbG9yLCBzdXJmYWNlU2NhbGUsIHNwZWN1bGFyQ29uc3RhbnQsIHNwZWN1bGFyRXhwb25lbnQs
IGtlcm5lbFVuaXRMZW5ndGhYLCBrZXJuZWxVbml0TGVuZ3RoWSwgV1RGTW92ZShsaWdodFNvdXJj
ZSkpKTsKKyAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBGRVNwZWN1bGFyTGlnaHRpbmcobGlnaHRp
bmdDb2xvciwgc3VyZmFjZVNjYWxlLCBzcGVjdWxhckNvbnN0YW50LCBzcGVjdWxhckV4cG9uZW50
LCBrZXJuZWxVbml0TGVuZ3RoWCwga2VybmVsVW5pdExlbmd0aFksIFdURk1vdmUobGlnaHRTb3Vy
Y2UpKSk7CiB9CiAKIGJvb2wgRkVTcGVjdWxhckxpZ2h0aW5nOjpzZXRTcGVjdWxhckNvbnN0YW50
KGZsb2F0IHNwZWN1bGFyQ29uc3RhbnQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFU3BlY3VsYXJMaWdodGluZy5oIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRVNwZWN1bGFyTGlnaHRpbmcuaAppbmRleCA5
YmJiYThhOGYxZmMuLmFjNDUwZGJkYjYwYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRVNwZWN1bGFyTGlnaHRpbmcuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFU3BlY3VsYXJMaWdodGluZy5oCkBA
IC0yNyw3ICsyNyw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgRkVTcGVjdWxhckxp
Z2h0aW5nIDogcHVibGljIEZFTGlnaHRpbmcgewogcHVibGljOgotICAgIHN0YXRpYyBSZWY8RkVT
cGVjdWxhckxpZ2h0aW5nPiBjcmVhdGUoRmlsdGVyJiwgY29uc3QgQ29sb3ImLCBmbG9hdCwgZmxv
YXQsIGZsb2F0LCBmbG9hdCwgZmxvYXQsIFJlZjxMaWdodFNvdXJjZT4mJik7CisgICAgc3RhdGlj
IFJlZjxGRVNwZWN1bGFyTGlnaHRpbmc+IGNyZWF0ZShjb25zdCBDb2xvciYgbGlnaHRpbmdDb2xv
ciwgZmxvYXQgc3VyZmFjZVNjYWxlLCBmbG9hdCBzcGVjdWxhckNvbnN0YW50LCBmbG9hdCBzcGVj
dWxhckV4cG9uZW50LCBmbG9hdCBrZXJuZWxVbml0TGVuZ3RoWCwgZmxvYXQga2VybmVsVW5pdExl
bmd0aFksIFJlZjxMaWdodFNvdXJjZT4mJik7CiAKICAgICBmbG9hdCBzcGVjdWxhckNvbnN0YW50
KCkgY29uc3QgeyByZXR1cm4gbV9zcGVjdWxhckNvbnN0YW50OyB9CiAgICAgYm9vbCBzZXRTcGVj
dWxhckNvbnN0YW50KGZsb2F0KTsKQEAgLTM4LDcgKzM4LDcgQEAgcHVibGljOgogICAgIFdURjo6
VGV4dFN0cmVhbSYgZXh0ZXJuYWxSZXByZXNlbnRhdGlvbihXVEY6OlRleHRTdHJlYW0mLCBSZXBy
ZXNlbnRhdGlvblR5cGUpIGNvbnN0IG92ZXJyaWRlOwogCiBwcml2YXRlOgotICAgIEZFU3BlY3Vs
YXJMaWdodGluZyhGaWx0ZXImLCBjb25zdCBDb2xvciYsIGZsb2F0LCBmbG9hdCwgZmxvYXQsIGZs
b2F0LCBmbG9hdCwgUmVmPExpZ2h0U291cmNlPiYmKTsKKyAgICBGRVNwZWN1bGFyTGlnaHRpbmco
Y29uc3QgQ29sb3ImIGxpZ2h0aW5nQ29sb3IsIGZsb2F0IHN1cmZhY2VTY2FsZSwgZmxvYXQgc3Bl
Y3VsYXJDb25zdGFudCwgZmxvYXQgc3BlY3VsYXJFeHBvbmVudCwgZmxvYXQga2VybmVsVW5pdExl
bmd0aFgsIGZsb2F0IGtlcm5lbFVuaXRMZW5ndGhZLCBSZWY8TGlnaHRTb3VyY2U+JiYpOwogfTsK
IAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRVRpbGUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvZmlsdGVycy9GRVRpbGUuY3BwCmluZGV4IDNlNTBmYjZjMDBlYy4uYjc1ZTJm
NjU3ZTdiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0
ZXJzL0ZFVGlsZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmls
dGVycy9GRVRpbGUuY3BwCkBAIC0zMSwxNyArMzEsMTcgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUg
ewogCi1GRVRpbGU6OkZFVGlsZShGaWx0ZXImIGZpbHRlcikKLSAgICA6IEZpbHRlckVmZmVjdChm
aWx0ZXIsIEZpbHRlckVmZmVjdDo6VHlwZTo6RkVUaWxlKQorRkVUaWxlOjpGRVRpbGUoKQorICAg
IDogRmlsdGVyRWZmZWN0KEZpbHRlckVmZmVjdDo6VHlwZTo6RkVUaWxlKQogewogfQogCi1SZWY8
RkVUaWxlPiBGRVRpbGU6OmNyZWF0ZShGaWx0ZXImIGZpbHRlcikKK1JlZjxGRVRpbGU+IEZFVGls
ZTo6Y3JlYXRlKCkKIHsKLSAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBGRVRpbGUoZmlsdGVyKSk7
CisgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgRkVUaWxlKCkpOwogfQogCi12b2lkIEZFVGlsZTo6
cGxhdGZvcm1BcHBseVNvZnR3YXJlKCkKK3ZvaWQgRkVUaWxlOjpwbGF0Zm9ybUFwcGx5U29mdHdh
cmUoY29uc3QgRmlsdGVyJiBmaWx0ZXIpCiB7CiAvLyBGSVhNRTogU2VlIGJ1ZyA0NzMxNS4gVGhp
cyBpcyBhIGhhY2sgdG8gd29yayBhcm91bmQgYSBjb21waWxlIGZhaWx1cmUsIGJ1dCBpcyBpbmNv
cnJlY3QgYmVoYXZpb3Igb3RoZXJ3aXNlLgogICAgIEZpbHRlckVmZmVjdCogaW4gPSBpbnB1dEVm
ZmVjdCgwKTsKQEAgLTU5LDEyICs1OSwxMSBAQCB2b2lkIEZFVGlsZTo6cGxhdGZvcm1BcHBseVNv
ZnR3YXJlKCkKICAgICBGbG9hdFBvaW50IGluTWF4RWZmZWN0TG9jYXRpb24gPSB0aWxlUmVjdC5s
b2NhdGlvbigpOwogICAgIEZsb2F0UG9pbnQgbWF4RWZmZWN0TG9jYXRpb24gPSBtYXhFZmZlY3RS
ZWN0KCkubG9jYXRpb24oKTsKICAgICBpZiAoaW4tPmZpbHRlclR5cGUoKSA9PSBGaWx0ZXJFZmZl
Y3Q6OlR5cGU6OlNvdXJjZUdyYXBoaWMgfHwgaW4tPmZpbHRlclR5cGUoKSA9PSBGaWx0ZXJFZmZl
Y3Q6OlR5cGU6OlNvdXJjZUFscGhhKSB7Ci0gICAgICAgIEZpbHRlciYgZmlsdGVyID0gdGhpcy0+
ZmlsdGVyKCk7CiAgICAgICAgIHRpbGVSZWN0ID0gZmlsdGVyLmZpbHRlclJlZ2lvbigpOwogICAg
ICAgICB0aWxlUmVjdC5zY2FsZShmaWx0ZXIuZmlsdGVyU2NhbGUoKSk7CiAgICAgfQogCi0gICAg
YXV0byB0aWxlSW1hZ2UgPSBTVkdSZW5kZXJpbmdDb250ZXh0OjpjcmVhdGVJbWFnZUJ1ZmZlcih0
aWxlUmVjdCwgdGlsZVJlY3QsIERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQigpLCBmaWx0ZXIo
KS5yZW5kZXJpbmdNb2RlKCkpOworICAgIGF1dG8gdGlsZUltYWdlID0gU1ZHUmVuZGVyaW5nQ29u
dGV4dDo6Y3JlYXRlSW1hZ2VCdWZmZXIodGlsZVJlY3QsIHRpbGVSZWN0LCBEZXN0aW5hdGlvbkNv
bG9yU3BhY2U6OlNSR0IoKSwgZmlsdGVyLnJlbmRlcmluZ01vZGUoKSk7CiAgICAgaWYgKCF0aWxl
SW1hZ2UpCiAgICAgICAgIHJldHVybjsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRVRpbGUuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2ZpbHRlcnMvRkVUaWxlLmgKaW5kZXggNWM0OGVmNDUxNTBlLi5lZDc2OTUxZmI1
YjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMv
RkVUaWxlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9G
RVRpbGUuaApAQCAtMjIsMjAgKzIyLDE5IEBACiAjcHJhZ21hIG9uY2UKIAogI2luY2x1ZGUgIkZp
bHRlckVmZmVjdC5oIgotI2luY2x1ZGUgIkZpbHRlci5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAgICAgCiBjbGFzcyBGRVRpbGUgOiBwdWJsaWMgRmlsdGVyRWZmZWN0IHsKIHB1YmxpYzoKLSAg
ICBzdGF0aWMgUmVmPEZFVGlsZT4gY3JlYXRlKEZpbHRlciYpOworICAgIHN0YXRpYyBSZWY8RkVU
aWxlPiBjcmVhdGUoKTsKIAogcHJpdmF0ZToKLSAgICBGRVRpbGUoRmlsdGVyJik7CisgICAgRkVU
aWxlKCk7CiAKLSAgICB2b2lkIHBsYXRmb3JtQXBwbHlTb2Z0d2FyZSgpIG92ZXJyaWRlOworICAg
IHZvaWQgcGxhdGZvcm1BcHBseVNvZnR3YXJlKGNvbnN0IEZpbHRlciYpIG92ZXJyaWRlOwogCi0g
ICAgdm9pZCBkZXRlcm1pbmVBYnNvbHV0ZVBhaW50UmVjdCgpIG92ZXJyaWRlIHsgc2V0QWJzb2x1
dGVQYWludFJlY3QoZW5jbG9zaW5nSW50UmVjdChtYXhFZmZlY3RSZWN0KCkpKTsgfQorICAgIHZv
aWQgZGV0ZXJtaW5lQWJzb2x1dGVQYWludFJlY3QoY29uc3QgRmlsdGVyJikgb3ZlcnJpZGUgeyBz
ZXRBYnNvbHV0ZVBhaW50UmVjdChlbmNsb3NpbmdJbnRSZWN0KG1heEVmZmVjdFJlY3QoKSkpOyB9
CiAKICAgICBXVEY6OlRleHRTdHJlYW0mIGV4dGVybmFsUmVwcmVzZW50YXRpb24oV1RGOjpUZXh0
U3RyZWFtJiwgUmVwcmVzZW50YXRpb25UeXBlKSBjb25zdCBvdmVycmlkZTsKIH07CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFVHVyYnVsZW5j
ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFVHVyYnVs
ZW5jZS5jcHAKaW5kZXggYTJlN2FlYzM0ZDZhLi4zY2Y0ZmQxZmNkMDcgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVUdXJidWxlbmNlLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFVHVyYnVsZW5j
ZS5jcHAKQEAgLTQ4LDggKzQ4LDggQEAgc3RhdGljIGNvbnN0IGludCBzX3JhbmRBbXBsaXR1ZGUg
PSAxNjgwNzsgLy8gNyoqNTsgcHJpbWl0aXZlIHJvb3Qgb2YgbQogc3RhdGljIGNvbnN0IGludCBz
X3JhbmRRID0gMTI3NzczOyAvLyBtIC8gYQogc3RhdGljIGNvbnN0IGludCBzX3JhbmRSID0gMjgz
NjsgLy8gbSAlIGEKIAotRkVUdXJidWxlbmNlOjpGRVR1cmJ1bGVuY2UoRmlsdGVyJiBmaWx0ZXIs
IFR1cmJ1bGVuY2VUeXBlIHR5cGUsIGZsb2F0IGJhc2VGcmVxdWVuY3lYLCBmbG9hdCBiYXNlRnJl
cXVlbmN5WSwgaW50IG51bU9jdGF2ZXMsIGZsb2F0IHNlZWQsIGJvb2wgc3RpdGNoVGlsZXMpCi0g
ICAgOiBGaWx0ZXJFZmZlY3QoZmlsdGVyLCBGaWx0ZXJFZmZlY3Q6OlR5cGU6OkZFVHVyYnVsZW5j
ZSkKK0ZFVHVyYnVsZW5jZTo6RkVUdXJidWxlbmNlKFR1cmJ1bGVuY2VUeXBlIHR5cGUsIGZsb2F0
IGJhc2VGcmVxdWVuY3lYLCBmbG9hdCBiYXNlRnJlcXVlbmN5WSwgaW50IG51bU9jdGF2ZXMsIGZs
b2F0IHNlZWQsIGJvb2wgc3RpdGNoVGlsZXMpCisgICAgOiBGaWx0ZXJFZmZlY3QoRmlsdGVyRWZm
ZWN0OjpUeXBlOjpGRVR1cmJ1bGVuY2UpCiAgICAgLCBtX3R5cGUodHlwZSkKICAgICAsIG1fYmFz
ZUZyZXF1ZW5jeVgoYmFzZUZyZXF1ZW5jeVgpCiAgICAgLCBtX2Jhc2VGcmVxdWVuY3lZKGJhc2VG
cmVxdWVuY3lZKQpAQCAtNTksOSArNTksOSBAQCBGRVR1cmJ1bGVuY2U6OkZFVHVyYnVsZW5jZShG
aWx0ZXImIGZpbHRlciwgVHVyYnVsZW5jZVR5cGUgdHlwZSwgZmxvYXQgYmFzZUZyZXF1ZQogewog
fQogCi1SZWY8RkVUdXJidWxlbmNlPiBGRVR1cmJ1bGVuY2U6OmNyZWF0ZShGaWx0ZXImIGZpbHRl
ciwgVHVyYnVsZW5jZVR5cGUgdHlwZSwgZmxvYXQgYmFzZUZyZXF1ZW5jeVgsIGZsb2F0IGJhc2VG
cmVxdWVuY3lZLCBpbnQgbnVtT2N0YXZlcywgZmxvYXQgc2VlZCwgYm9vbCBzdGl0Y2hUaWxlcykK
K1JlZjxGRVR1cmJ1bGVuY2U+IEZFVHVyYnVsZW5jZTo6Y3JlYXRlKFR1cmJ1bGVuY2VUeXBlIHR5
cGUsIGZsb2F0IGJhc2VGcmVxdWVuY3lYLCBmbG9hdCBiYXNlRnJlcXVlbmN5WSwgaW50IG51bU9j
dGF2ZXMsIGZsb2F0IHNlZWQsIGJvb2wgc3RpdGNoVGlsZXMpCiB7Ci0gICAgcmV0dXJuIGFkb3B0
UmVmKCpuZXcgRkVUdXJidWxlbmNlKGZpbHRlciwgdHlwZSwgYmFzZUZyZXF1ZW5jeVgsIGJhc2VG
cmVxdWVuY3lZLCBudW1PY3RhdmVzLCBzZWVkLCBzdGl0Y2hUaWxlcykpOworICAgIHJldHVybiBh
ZG9wdFJlZigqbmV3IEZFVHVyYnVsZW5jZSh0eXBlLCBiYXNlRnJlcXVlbmN5WCwgYmFzZUZyZXF1
ZW5jeVksIG51bU9jdGF2ZXMsIHNlZWQsIHN0aXRjaFRpbGVzKSk7CiB9CiAKIGJvb2wgRkVUdXJi
dWxlbmNlOjpzZXRUeXBlKFR1cmJ1bGVuY2VUeXBlIHR5cGUpCkBAIC0zNjYsMTQgKzM2NiwxNCBA
QCBDb2xvckNvbXBvbmVudHM8dWludDhfdCwgND4gRkVUdXJidWxlbmNlOjpjYWxjdWxhdGVUdXJi
dWxlbmNlVmFsdWVGb3JQb2ludChjb25zdAogICAgIHJldHVybiB0b0ludEJhc2VkQ29sb3JDb21w
b25lbnRzKHR1cmJ1bGVuY2VGdW5jdGlvblJlc3VsdCk7CiB9CiAKLXZvaWQgRkVUdXJidWxlbmNl
OjpmaWxsUmVnaW9uKFVpbnQ4Q2xhbXBlZEFycmF5JiBwaXhlbEFycmF5LCBjb25zdCBQYWludGlu
Z0RhdGEmIHBhaW50aW5nRGF0YSwgU3RpdGNoRGF0YSBzdGl0Y2hEYXRhLCBpbnQgc3RhcnRZLCBp
bnQgZW5kWSkgY29uc3QKK3ZvaWQgRkVUdXJidWxlbmNlOjpmaWxsUmVnaW9uKGNvbnN0IEZpbHRl
ciYgZmlsdGVyLCBVaW50OENsYW1wZWRBcnJheSYgcGl4ZWxBcnJheSwgY29uc3QgUGFpbnRpbmdE
YXRhJiBwYWludGluZ0RhdGEsIFN0aXRjaERhdGEgc3RpdGNoRGF0YSwgaW50IHN0YXJ0WSwgaW50
IGVuZFkpIGNvbnN0CiB7CiAgICAgQVNTRVJUKGVuZFkgPiBzdGFydFkpOwogCiAgICAgSW50UmVj
dCBmaWx0ZXJSZWdpb24gPSBhYnNvbHV0ZVBhaW50UmVjdCgpOwogICAgIEZsb2F0UG9pbnQgcG9p
bnQoMCwgZmlsdGVyUmVnaW9uLnkoKSArIHN0YXJ0WSk7CiAgICAgaW50IGluZGV4T2ZQaXhlbENo
YW5uZWwgPSBzdGFydFkgKiAoZmlsdGVyUmVnaW9uLndpZHRoKCkgPDwgMik7Ci0gICAgRmxvYXRT
aXplIGludmVyc2VTY2FsZSA9IHsgMSAvIGZpbHRlcigpLmZpbHRlclNjYWxlKCkud2lkdGgoKSwg
MSAvIGZpbHRlcigpLmZpbHRlclNjYWxlKCkuaGVpZ2h0KCkgfTsKKyAgICBGbG9hdFNpemUgaW52
ZXJzZVNjYWxlID0geyAxIC8gZmlsdGVyLmZpbHRlclNjYWxlKCkud2lkdGgoKSwgMSAvIGZpbHRl
ci5maWx0ZXJTY2FsZSgpLmhlaWdodCgpIH07CiAKICAgICBmb3IgKGludCB5ID0gc3RhcnRZOyB5
IDwgZW5kWTsgKyt5KSB7CiAgICAgICAgIHBvaW50LnNldFkocG9pbnQueSgpICsgMSk7CkBAIC0z
OTAsMTAgKzM5MCwxMCBAQCB2b2lkIEZFVHVyYnVsZW5jZTo6ZmlsbFJlZ2lvbihVaW50OENsYW1w
ZWRBcnJheSYgcGl4ZWxBcnJheSwgY29uc3QgUGFpbnRpbmdEYXRhJgogCiB2b2lkIEZFVHVyYnVs
ZW5jZTo6ZmlsbFJlZ2lvbldvcmtlcihGaWxsUmVnaW9uUGFyYW1ldGVycyogcGFyYW1ldGVycykK
IHsKLSAgICBwYXJhbWV0ZXJzLT5maWx0ZXItPmZpbGxSZWdpb24oKnBhcmFtZXRlcnMtPnBpeGVs
QXJyYXksICpwYXJhbWV0ZXJzLT5wYWludGluZ0RhdGEsIHBhcmFtZXRlcnMtPnN0aXRjaERhdGEs
IHBhcmFtZXRlcnMtPnN0YXJ0WSwgcGFyYW1ldGVycy0+ZW5kWSk7CisgICAgcGFyYW1ldGVycy0+
ZWZmZWN0LT5maWxsUmVnaW9uKCpwYXJhbWV0ZXJzLT5maWx0ZXIsICpwYXJhbWV0ZXJzLT5waXhl
bEFycmF5LCAqcGFyYW1ldGVycy0+cGFpbnRpbmdEYXRhLCBwYXJhbWV0ZXJzLT5zdGl0Y2hEYXRh
LCBwYXJhbWV0ZXJzLT5zdGFydFksIHBhcmFtZXRlcnMtPmVuZFkpOwogfQogCi12b2lkIEZFVHVy
YnVsZW5jZTo6cGxhdGZvcm1BcHBseVNvZnR3YXJlKCkKK3ZvaWQgRkVUdXJidWxlbmNlOjpwbGF0
Zm9ybUFwcGx5U29mdHdhcmUoY29uc3QgRmlsdGVyJiBmaWx0ZXIpCiB7CiAgICAgYXV0byYgZGVz
dGluYXRpb25QaXhlbEJ1ZmZlciA9IGNyZWF0ZVVubXVsdGlwbGllZEltYWdlUmVzdWx0KCk7CiAg
ICAgaWYgKCFkZXN0aW5hdGlvblBpeGVsQnVmZmVyKQpAQCAtNDM4LDcgKzQzOCw4IEBAIHZvaWQg
RkVUdXJidWxlbmNlOjpwbGF0Zm9ybUFwcGx5U29mdHdhcmUoKQogCiAgICAgICAgICAgICBmb3Ig
KHVuc2lnbmVkIGkgPSAwOyBpIDwgbnVtSm9iczsgKytpKSB7CiAgICAgICAgICAgICAgICAgRmls
bFJlZ2lvblBhcmFtZXRlcnMmIHBhcmFtcyA9IHBhcmFsbGVsSm9icy5wYXJhbWV0ZXIoaSk7Ci0g
ICAgICAgICAgICAgICAgcGFyYW1zLmZpbHRlciA9IHRoaXM7CisgICAgICAgICAgICAgICAgcGFy
YW1zLmZpbHRlciA9ICZmaWx0ZXI7CisgICAgICAgICAgICAgICAgcGFyYW1zLmVmZmVjdCA9IHRo
aXM7CiAgICAgICAgICAgICAgICAgcGFyYW1zLnBpeGVsQXJyYXkgPSAmZGVzdGluYXRpb25QaXhl
bEFycmF5OwogICAgICAgICAgICAgICAgIHBhcmFtcy5wYWludGluZ0RhdGEgPSAmcGFpbnRpbmdE
YXRhOwogICAgICAgICAgICAgICAgIHBhcmFtcy5zdGl0Y2hEYXRhID0gc3RpdGNoRGF0YTsKQEAg
LTQ1NSw3ICs0NTYsNyBAQCB2b2lkIEZFVHVyYnVsZW5jZTo6cGxhdGZvcm1BcHBseVNvZnR3YXJl
KCkKICAgICB9CiAKICAgICAvLyBGYWxsYmFjayB0byBzaW5nbGUgdGhyZWFkZWQgbW9kZSBpZiB0
aGVyZSBpcyBubyByb29tIGZvciBhIG5ldyB0aHJlYWQgb3IgdGhlIHBhaW50IGFyZWEgaXMgdG9v
IHNtYWxsLgotICAgIGZpbGxSZWdpb24oZGVzdGluYXRpb25QaXhlbEFycmF5LCBwYWludGluZ0Rh
dGEsIHN0aXRjaERhdGEsIDAsIGhlaWdodCk7CisgICAgZmlsbFJlZ2lvbihmaWx0ZXIsIGRlc3Rp
bmF0aW9uUGl4ZWxBcnJheSwgcGFpbnRpbmdEYXRhLCBzdGl0Y2hEYXRhLCAwLCBoZWlnaHQpOwog
fQogCiBzdGF0aWMgVGV4dFN0cmVhbSYgb3BlcmF0b3I8PChUZXh0U3RyZWFtJiB0cywgVHVyYnVs
ZW5jZVR5cGUgdHlwZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2ZpbHRlcnMvRkVUdXJidWxlbmNlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9maWx0ZXJzL0ZFVHVyYnVsZW5jZS5oCmluZGV4IDU4MWZiZWYwYTdkNi4uNWU1NTBkOWQ2
YjQwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJz
L0ZFVHVyYnVsZW5jZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Zp
bHRlcnMvRkVUdXJidWxlbmNlLmgKQEAgLTI2LDcgKzI2LDYgQEAKIAogI2luY2x1ZGUgIkNvbG9y
Q29tcG9uZW50cy5oIgogI2luY2x1ZGUgIkZpbHRlckVmZmVjdC5oIgotI2luY2x1ZGUgIkZpbHRl
ci5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKQEAgLTM4LDcgKzM3LDcgQEAgZW51bSBjbGFz
cyBUdXJidWxlbmNlVHlwZSB7CiAKIGNsYXNzIEZFVHVyYnVsZW5jZSA6IHB1YmxpYyBGaWx0ZXJF
ZmZlY3QgewogcHVibGljOgotICAgIHN0YXRpYyBSZWY8RkVUdXJidWxlbmNlPiBjcmVhdGUoRmls
dGVyJiwgVHVyYnVsZW5jZVR5cGUsIGZsb2F0LCBmbG9hdCwgaW50LCBmbG9hdCwgYm9vbCk7Cisg
ICAgc3RhdGljIFJlZjxGRVR1cmJ1bGVuY2U+IGNyZWF0ZShUdXJidWxlbmNlVHlwZSwgZmxvYXQg
YmFzZUZyZXF1ZW5jeVgsIGZsb2F0IGJhc2VGcmVxdWVuY3lZLCBpbnQgbnVtT2N0YXZlcywgZmxv
YXQgc2VlZCwgYm9vbCBzdGl0Y2hUaWxlcyk7CiAKICAgICBUdXJidWxlbmNlVHlwZSB0eXBlKCkg
Y29uc3QgeyByZXR1cm4gbV90eXBlOyB9CiAgICAgYm9vbCBzZXRUeXBlKFR1cmJ1bGVuY2VUeXBl
KTsKQEAgLTk2LDcgKzk1LDggQEAgcHJpdmF0ZToKICAgICBmcmllbmQgY2xhc3MgUGFyYWxsZWxK
b2JzOwogCiAgICAgc3RydWN0IEZpbGxSZWdpb25QYXJhbWV0ZXJzIHsKLSAgICAgICAgRkVUdXJi
dWxlbmNlKiBmaWx0ZXI7CisgICAgICAgIGNvbnN0IEZpbHRlciogZmlsdGVyOworICAgICAgICBG
RVR1cmJ1bGVuY2UqIGVmZmVjdDsKICAgICAgICAgVWludDhDbGFtcGVkQXJyYXkqIHBpeGVsQXJy
YXk7CiAgICAgICAgIFBhaW50aW5nRGF0YSogcGFpbnRpbmdEYXRhOwogICAgICAgICBTdGl0Y2hE
YXRhIHN0aXRjaERhdGE7CkBAIC0xMDYsMTcgKzEwNiwxNyBAQCBwcml2YXRlOgogCiAgICAgc3Rh
dGljIHZvaWQgZmlsbFJlZ2lvbldvcmtlcihGaWxsUmVnaW9uUGFyYW1ldGVycyopOwogCi0gICAg
RkVUdXJidWxlbmNlKEZpbHRlciYsIFR1cmJ1bGVuY2VUeXBlLCBmbG9hdCwgZmxvYXQsIGludCwg
ZmxvYXQsIGJvb2wpOworICAgIEZFVHVyYnVsZW5jZShUdXJidWxlbmNlVHlwZSwgZmxvYXQgYmFz
ZUZyZXF1ZW5jeVgsIGZsb2F0IGJhc2VGcmVxdWVuY3lZLCBpbnQgbnVtT2N0YXZlcywgZmxvYXQg
c2VlZCwgYm9vbCBzdGl0Y2hUaWxlcyk7CiAKLSAgICB2b2lkIHBsYXRmb3JtQXBwbHlTb2Z0d2Fy
ZSgpIG92ZXJyaWRlOwotICAgIHZvaWQgZGV0ZXJtaW5lQWJzb2x1dGVQYWludFJlY3QoKSBvdmVy
cmlkZSB7IHNldEFic29sdXRlUGFpbnRSZWN0KGVuY2xvc2luZ0ludFJlY3QobWF4RWZmZWN0UmVj
dCgpKSk7IH0KKyAgICB2b2lkIHBsYXRmb3JtQXBwbHlTb2Z0d2FyZShjb25zdCBGaWx0ZXImKSBv
dmVycmlkZTsKKyAgICB2b2lkIGRldGVybWluZUFic29sdXRlUGFpbnRSZWN0KGNvbnN0IEZpbHRl
ciYpIG92ZXJyaWRlIHsgc2V0QWJzb2x1dGVQYWludFJlY3QoZW5jbG9zaW5nSW50UmVjdChtYXhF
ZmZlY3RSZWN0KCkpKTsgfQogICAgIFdURjo6VGV4dFN0cmVhbSYgZXh0ZXJuYWxSZXByZXNlbnRh
dGlvbihXVEY6OlRleHRTdHJlYW0mLCBSZXByZXNlbnRhdGlvblR5cGUpIGNvbnN0IG92ZXJyaWRl
OwogCiAgICAgdm9pZCBpbml0UGFpbnQoUGFpbnRpbmdEYXRhJik7CiAgICAgU3RpdGNoRGF0YSBj
b21wdXRlU3RpdGNoaW5nKEludFNpemUgdGlsZVNpemUsIGZsb2F0JiBiYXNlRnJlcXVlbmN5WCwg
ZmxvYXQmIGJhc2VGcmVxdWVuY3lZKSBjb25zdDsKICAgICBDb2xvckNvbXBvbmVudHM8ZmxvYXQs
IDQ+IG5vaXNlMkQoY29uc3QgUGFpbnRpbmdEYXRhJiwgY29uc3QgU3RpdGNoRGF0YSYsIGNvbnN0
IEZsb2F0UG9pbnQmKSBjb25zdDsKICAgICBDb2xvckNvbXBvbmVudHM8dWludDhfdCwgND4gY2Fs
Y3VsYXRlVHVyYnVsZW5jZVZhbHVlRm9yUG9pbnQoY29uc3QgUGFpbnRpbmdEYXRhJiwgU3RpdGNo
RGF0YSwgY29uc3QgRmxvYXRQb2ludCYpIGNvbnN0OwotICAgIHZvaWQgZmlsbFJlZ2lvbihVaW50
OENsYW1wZWRBcnJheSYsIGNvbnN0IFBhaW50aW5nRGF0YSYsIFN0aXRjaERhdGEsIGludCBzdGFy
dFksIGludCBlbmRZKSBjb25zdDsKKyAgICB2b2lkIGZpbGxSZWdpb24oY29uc3QgRmlsdGVyJiwg
VWludDhDbGFtcGVkQXJyYXkmLCBjb25zdCBQYWludGluZ0RhdGEmLCBTdGl0Y2hEYXRhLCBpbnQg
c3RhcnRZLCBpbnQgZW5kWSkgY29uc3Q7CiAKICAgICBzdGF0aWMgdm9pZCBmaWxsUmVnaW9uV29y
a2VyKHZvaWQqKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvZmlsdGVycy9GaWx0ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Zp
bHRlcnMvRmlsdGVyLmgKaW5kZXggOTcxZDA5N2VhZGJiLi5mMzVkOWJhNDJmZmIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRmlsdGVyLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GaWx0ZXIuaApAQCAt
NDMsOSArNDMsMTAgQEAgcHVibGljOgogICAgIHZvaWQgc2V0U291cmNlSW1hZ2VSZWN0KGNvbnN0
IEZsb2F0UmVjdCYgc291cmNlSW1hZ2VSZWN0KSB7IG1fc291cmNlSW1hZ2VSZWN0ID0gc291cmNl
SW1hZ2VSZWN0OyB9CiAKICAgICB2aXJ0dWFsIEZsb2F0U2l6ZSBzY2FsZWRCeUZpbHRlclNjYWxl
KEZsb2F0U2l6ZSBzaXplKSBjb25zdCB7IHJldHVybiBzaXplICogbV9maWx0ZXJTY2FsZTsgfQor
ICAgIHZpcnR1YWwgdm9pZCBhcHBseUZpbHRlcigpIHsgfQogCiAgICAgdm9pZCBzZXRTb3VyY2VJ
bWFnZShSZWZQdHI8SW1hZ2VCdWZmZXI+JiYgc291cmNlSW1hZ2UpIHsgbV9zb3VyY2VJbWFnZSA9
IFdURk1vdmUoc291cmNlSW1hZ2UpOyB9Ci0gICAgSW1hZ2VCdWZmZXIqIHNvdXJjZUltYWdlKCkg
eyByZXR1cm4gbV9zb3VyY2VJbWFnZS5nZXQoKTsgfQorICAgIEltYWdlQnVmZmVyKiBzb3VyY2VJ
bWFnZSgpIGNvbnN0IHsgcmV0dXJuIG1fc291cmNlSW1hZ2UuZ2V0KCk7IH0KIAogICAgIFJlbmRl
cmluZ01vZGUgcmVuZGVyaW5nTW9kZSgpIGNvbnN0IHsgcmV0dXJuIG1fcmVuZGVyaW5nTW9kZTsg
fQogICAgIHZvaWQgc2V0UmVuZGVyaW5nTW9kZShSZW5kZXJpbmdNb2RlIHJlbmRlcmluZ01vZGUp
IHsgbV9yZW5kZXJpbmdNb2RlID0gcmVuZGVyaW5nTW9kZTsgfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GaWx0ZXJFZmZlY3QuY3BwIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GaWx0ZXJFZmZlY3QuY3BwCmlu
ZGV4IDQwZDIzMDBlMTFlMS4uZmM5NmQxMzUxOTU0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZpbHRlckVmZmVjdC5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GaWx0ZXJFZmZlY3QuY3BwCkBAIC00
NSwxMyArNDUsMTIgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1GaWx0ZXJFZmZlY3Q6OkZp
bHRlckVmZmVjdChGaWx0ZXImIGZpbHRlciwgRmlsdGVyRWZmZWN0OjpUeXBlIHR5cGUpCitGaWx0
ZXJFZmZlY3Q6OkZpbHRlckVmZmVjdChGaWx0ZXJFZmZlY3Q6OlR5cGUgdHlwZSkKICAgICA6IEZp
bHRlckZ1bmN0aW9uKHR5cGUpCi0gICAgLCBtX2ZpbHRlcihmaWx0ZXIpCiB7CiB9CiAKLXZvaWQg
RmlsdGVyRWZmZWN0OjpkZXRlcm1pbmVBYnNvbHV0ZVBhaW50UmVjdCgpCit2b2lkIEZpbHRlckVm
ZmVjdDo6ZGV0ZXJtaW5lQWJzb2x1dGVQYWludFJlY3QoY29uc3QgRmlsdGVyJikKIHsKICAgICBt
X2Fic29sdXRlUGFpbnRSZWN0ID0gSW50UmVjdCgpOwogICAgIGZvciAoYXV0byYgZWZmZWN0IDog
bV9pbnB1dEVmZmVjdHMpCkBAIC05NCwyMiArOTMsMjIgQEAgRmxvYXRSZWN0IEZpbHRlckVmZmVj
dDo6ZHJhd2luZ1JlZ2lvbk9mSW5wdXRJbWFnZShjb25zdCBJbnRSZWN0JiBzcmNSZWN0KSBjb25z
dAogICAgIHJldHVybiB0cmFuc2Zvcm0ubWFwUmVjdChzcmNSZWN0KTsKIH0KIAotRmxvYXRSZWN0
IEZpbHRlckVmZmVjdDo6ZGV0ZXJtaW5lRmlsdGVyUHJpbWl0aXZlU3VicmVnaW9uKCkKK0Zsb2F0
UmVjdCBGaWx0ZXJFZmZlY3Q6OmRldGVybWluZUZpbHRlclByaW1pdGl2ZVN1YnJlZ2lvbihjb25z
dCBGaWx0ZXImIGZpbHRlcikKIHsKICAgICAvLyBGRVRpbGUsIEZFVHVyYnVsZW5jZSwgRkVGbG9v
ZCBkb24ndCBoYXZlIGlucHV0IGVmZmVjdHMsIHRha2UgdGhlIGZpbHRlciByZWdpb24gYXMgdW5p
dGUgcmVjdC4KICAgICBGbG9hdFJlY3Qgc3VicmVnaW9uOwogICAgIGlmICh1bnNpZ25lZCBudW1i
ZXJPZklucHV0RWZmZWN0cyA9IGlucHV0RWZmZWN0cygpLnNpemUoKSkgewotICAgICAgICBzdWJy
ZWdpb24gPSBpbnB1dEVmZmVjdCgwKS0+ZGV0ZXJtaW5lRmlsdGVyUHJpbWl0aXZlU3VicmVnaW9u
KCk7CisgICAgICAgIHN1YnJlZ2lvbiA9IGlucHV0RWZmZWN0KDApLT5kZXRlcm1pbmVGaWx0ZXJQ
cmltaXRpdmVTdWJyZWdpb24oZmlsdGVyKTsKICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMTsg
aSA8IG51bWJlck9mSW5wdXRFZmZlY3RzOyArK2kpIHsKLSAgICAgICAgICAgIGF1dG8gaW5wdXRQ
cmltaXRpdmVTdWJyZWdpb24gPSBpbnB1dEVmZmVjdChpKS0+ZGV0ZXJtaW5lRmlsdGVyUHJpbWl0
aXZlU3VicmVnaW9uKCk7CisgICAgICAgICAgICBhdXRvIGlucHV0UHJpbWl0aXZlU3VicmVnaW9u
ID0gaW5wdXRFZmZlY3QoaSktPmRldGVybWluZUZpbHRlclByaW1pdGl2ZVN1YnJlZ2lvbihmaWx0
ZXIpOwogICAgICAgICAgICAgc3VicmVnaW9uLnVuaXRlKGlucHV0UHJpbWl0aXZlU3VicmVnaW9u
KTsKICAgICAgICAgfQogICAgIH0gZWxzZQotICAgICAgICBzdWJyZWdpb24gPSBtX2ZpbHRlci5m
aWx0ZXJSZWdpb24oKTsKKyAgICAgICAgc3VicmVnaW9uID0gZmlsdGVyLmZpbHRlclJlZ2lvbigp
OwogCiAgICAgLy8gQWZ0ZXIgY2FsbGluZyBkZXRlcm1pbmVGaWx0ZXJQcmltaXRpdmVTdWJyZWdp
b24gb24gdGhlIHRhcmdldCBlZmZlY3QsIHJlc2V0IHRoZSBzdWJyZWdpb24gYWdhaW4gZm9yIDxm
ZVRpbGU+LgogICAgIGlmIChmaWx0ZXJUeXBlKCkgPT0gRmlsdGVyRWZmZWN0OjpUeXBlOjpGRVRp
bGUpCi0gICAgICAgIHN1YnJlZ2lvbiA9IG1fZmlsdGVyLmZpbHRlclJlZ2lvbigpOworICAgICAg
ICBzdWJyZWdpb24gPSBmaWx0ZXIuZmlsdGVyUmVnaW9uKCk7CiAKICAgICBhdXRvIGJvdW5kYXJp
ZXMgPSBlZmZlY3RCb3VuZGFyaWVzKCk7CiAgICAgaWYgKGhhc1goKSkKQEAgLTEyNCwxMyArMTIz
LDEzIEBAIEZsb2F0UmVjdCBGaWx0ZXJFZmZlY3Q6OmRldGVybWluZUZpbHRlclByaW1pdGl2ZVN1
YnJlZ2lvbigpCiAgICAgc2V0RmlsdGVyUHJpbWl0aXZlU3VicmVnaW9uKHN1YnJlZ2lvbik7CiAK
ICAgICBhdXRvIGFic29sdXRlU3VicmVnaW9uID0gc3VicmVnaW9uOwotICAgIGFic29sdXRlU3Vi
cmVnaW9uLnNjYWxlKG1fZmlsdGVyLmZpbHRlclNjYWxlKCkpOworICAgIGFic29sdXRlU3VicmVn
aW9uLnNjYWxlKGZpbHRlci5maWx0ZXJTY2FsZSgpKTsKICAgICAvLyBTYXZlIHRoaXMgYmVmb3Jl
IGNsaXBwaW5nIHNvIHdlIGNhbiB1c2UgaXQgdG8gbWFwIGxpZ2h0aW5nIHBvaW50cyBmcm9tIHVz
ZXIgc3BhY2UgdG8gYnVmZmVyIGNvb3JkaW5hdGVzLgogICAgIHNldFVuY2xpcHBlZEFic29sdXRl
U3VicmVnaW9uKGFic29sdXRlU3VicmVnaW9uKTsKIAogICAgIC8vIENsaXAgZXZlcnkgZmlsdGVy
IGVmZmVjdCB0byB0aGUgZmlsdGVyIHJlZ2lvbi4KLSAgICBhdXRvIGFic29sdXRlU2NhbGVkRmls
dGVyUmVnaW9uID0gbV9maWx0ZXIuZmlsdGVyUmVnaW9uKCk7Ci0gICAgYWJzb2x1dGVTY2FsZWRG
aWx0ZXJSZWdpb24uc2NhbGUobV9maWx0ZXIuZmlsdGVyU2NhbGUoKSk7CisgICAgYXV0byBhYnNv
bHV0ZVNjYWxlZEZpbHRlclJlZ2lvbiA9IGZpbHRlci5maWx0ZXJSZWdpb24oKTsKKyAgICBhYnNv
bHV0ZVNjYWxlZEZpbHRlclJlZ2lvbi5zY2FsZShmaWx0ZXIuZmlsdGVyU2NhbGUoKSk7CiAgICAg
YWJzb2x1dGVTdWJyZWdpb24uaW50ZXJzZWN0KGFic29sdXRlU2NhbGVkRmlsdGVyUmVnaW9uKTsK
IAogICAgIHNldE1heEVmZmVjdFJlY3QoYWJzb2x1dGVTdWJyZWdpb24pOwpAQCAtMTYwLDE0ICsx
NTksMTQgQEAgdW5zaWduZWQgRmlsdGVyRWZmZWN0Ojp0b3RhbE51bWJlck9mRWZmZWN0SW5wdXRz
KCkgY29uc3QKICAgICByZXR1cm4gY29sbGVjdEVmZmVjdHModGhpcywgYWxsRWZmZWN0cyk7CiB9
CiAKLXZvaWQgRmlsdGVyRWZmZWN0OjphcHBseSgpCit2b2lkIEZpbHRlckVmZmVjdDo6YXBwbHko
Y29uc3QgRmlsdGVyJiBmaWx0ZXIpCiB7CiAgICAgaWYgKGhhc1Jlc3VsdCgpKQogICAgICAgICBy
ZXR1cm47CiAgICAgdW5zaWduZWQgc2l6ZSA9IG1faW5wdXRFZmZlY3RzLnNpemUoKTsKICAgICBm
b3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgc2l6ZTsgKytpKSB7CiAgICAgICAgIEZpbHRlckVmZmVj
dCogaW4gPSBtX2lucHV0RWZmZWN0cy5hdChpKS5nZXQoKTsKLSAgICAgICAgaW4tPmFwcGx5KCk7
CisgICAgICAgIGluLT5hcHBseShmaWx0ZXIpOwogICAgICAgICBpZiAoIWluLT5oYXNSZXN1bHQo
KSkKICAgICAgICAgICAgIHJldHVybjsKIApAQCAtMTc1LDEwICsxNzQsMTAgQEAgdm9pZCBGaWx0
ZXJFZmZlY3Q6OmFwcGx5KCkKICAgICAgICAgdHJhbnNmb3JtUmVzdWx0Q29sb3JTcGFjZShpbiwg
aSk7CiAgICAgfQogCi0gICAgZGV0ZXJtaW5lQWJzb2x1dGVQYWludFJlY3QoKTsKKyAgICBkZXRl
cm1pbmVBYnNvbHV0ZVBhaW50UmVjdChmaWx0ZXIpOwogICAgIHNldFJlc3VsdENvbG9yU3BhY2Uo
bV9vcGVyYXRpbmdDb2xvclNwYWNlKTsKIAotICAgIExPR19XSVRIX1NUUkVBTShGaWx0ZXJzLCBz
dHJlYW0gPDwgIkZpbHRlckVmZmVjdCAiIDw8IGZpbHRlck5hbWUoKSA8PCAiICIgPDwgdGhpcyA8
PCAiIGFwcGx5KCk6XG4gIGZpbHRlclByaW1pdGl2ZVN1YnJlZ2lvbiAiIDw8IG1fZmlsdGVyUHJp
bWl0aXZlU3VicmVnaW9uIDw8ICJcbiAgZWZmZWN0Qm91bmRhcmllcyAiIDw8IG1fZWZmZWN0Qm91
bmRhcmllcyA8PCAiXG4gIGFic29sdXRlVW5jbGlwcGVkU3VicmVnaW9uICIgPDwgbV9hYnNvbHV0
ZVVuY2xpcHBlZFN1YnJlZ2lvbiA8PCAiXG4gIGFic29sdXRlUGFpbnRSZWN0ICIgPDwgbV9hYnNv
bHV0ZVBhaW50UmVjdCA8PCAiXG4gIG1heEVmZmVjdFJlY3QgIiA8PCBtX21heEVmZmVjdFJlY3Qg
PDwgIlxuICBmaWx0ZXIgc2NhbGUgIiA8PCBtX2ZpbHRlci5maWx0ZXJTY2FsZSgpKTsKKyAgICBM
T0dfV0lUSF9TVFJFQU0oRmlsdGVycywgc3RyZWFtIDw8ICJGaWx0ZXJFZmZlY3QgIiA8PCBmaWx0
ZXJOYW1lKCkgPDwgIiAiIDw8IHRoaXMgPDwgIiBhcHBseSgpOlxuICBmaWx0ZXJQcmltaXRpdmVT
dWJyZWdpb24gIiA8PCBtX2ZpbHRlclByaW1pdGl2ZVN1YnJlZ2lvbiA8PCAiXG4gIGVmZmVjdEJv
dW5kYXJpZXMgIiA8PCBtX2VmZmVjdEJvdW5kYXJpZXMgPDwgIlxuICBhYnNvbHV0ZVVuY2xpcHBl
ZFN1YnJlZ2lvbiAiIDw8IG1fYWJzb2x1dGVVbmNsaXBwZWRTdWJyZWdpb24gPDwgIlxuICBhYnNv
bHV0ZVBhaW50UmVjdCAiIDw8IG1fYWJzb2x1dGVQYWludFJlY3QgPDwgIlxuICBtYXhFZmZlY3RS
ZWN0ICIgPDwgbV9tYXhFZmZlY3RSZWN0IDw8ICJcbiAgZmlsdGVyIHNjYWxlICIgPDwgZmlsdGVy
LmZpbHRlclNjYWxlKCkpOwogCiAgICAgaWYgKG1fYWJzb2x1dGVQYWludFJlY3QuaXNFbXB0eSgp
IHx8IEltYWdlQnVmZmVyOjpzaXplTmVlZHNDbGFtcGluZyhtX2Fic29sdXRlUGFpbnRSZWN0LnNp
emUoKSkpCiAgICAgICAgIHJldHVybjsKQEAgLTE4OSw3ICsxODgsNyBAQCB2b2lkIEZpbHRlckVm
ZmVjdDo6YXBwbHkoKQogICAgIH0KICAgICAKICAgICAvLyBBZGQgcGxhdGZvcm0gc3BlY2lmaWMg
YXBwbHkgZnVuY3Rpb25zIGhlcmUgYW5kIHJldHVybiBlYXJsaWVyLgotICAgIHBsYXRmb3JtQXBw
bHlTb2Z0d2FyZSgpOworICAgIHBsYXRmb3JtQXBwbHlTb2Z0d2FyZShmaWx0ZXIpOwogfQogCiB2
b2lkIEZpbHRlckVmZmVjdDo6Zm9yY2VWYWxpZFByZU11bHRpcGxpZWRQaXhlbHMoKQpAQCAtMjcw
LDcgKzI2OSw3IEBAIEltYWdlQnVmZmVyKiBGaWx0ZXJFZmZlY3Q6OmltYWdlQnVmZmVyUmVzdWx0
KCkKICAgICBpZiAobV9pbWFnZUJ1ZmZlclJlc3VsdCkKICAgICAgICAgcmV0dXJuIG1faW1hZ2VC
dWZmZXJSZXN1bHQuZ2V0KCk7CiAKLSAgICBtX2ltYWdlQnVmZmVyUmVzdWx0ID0gSW1hZ2VCdWZm
ZXI6OmNyZWF0ZShtX2Fic29sdXRlUGFpbnRSZWN0LnNpemUoKSwgbV9maWx0ZXIucmVuZGVyaW5n
TW9kZSgpLCAxLCBtX3Jlc3VsdENvbG9yU3BhY2UsIFBpeGVsRm9ybWF0OjpCR1JBOCk7CisgICAg
bV9pbWFnZUJ1ZmZlclJlc3VsdCA9IEltYWdlQnVmZmVyOjpjcmVhdGUobV9hYnNvbHV0ZVBhaW50
UmVjdC5zaXplKCksIFJlbmRlcmluZ01vZGU6OlVuYWNjZWxlcmF0ZWQsIDEsIG1fcmVzdWx0Q29s
b3JTcGFjZSwgUGl4ZWxGb3JtYXQ6OkJHUkE4KTsKICAgICBpZiAoIW1faW1hZ2VCdWZmZXJSZXN1
bHQpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCkBAIC00MzksNyArNDM4LDcgQEAgc3RkOjpv
cHRpb25hbDxQaXhlbEJ1ZmZlcj4gRmlsdGVyRWZmZWN0Ojpjb252ZXJ0UGl4ZWxCdWZmZXJUb0Nv
bG9yU3BhY2UoY29uc3QgRGUKICAgICBJbnRSZWN0IGRlc3RpbmF0aW9uUmVjdChJbnRQb2ludCgp
LCBwaXhlbEJ1ZmZlci5zaXplKCkpOwogICAgIEZsb2F0U2l6ZSBjbGFtcGVkU2l6ZSA9IEltYWdl
QnVmZmVyOjpjbGFtcGVkU2l6ZShkZXN0aW5hdGlvblJlY3Quc2l6ZSgpKTsKICAgICAvLyBDcmVh
dGUgYW4gSW1hZ2VCdWZmZXIgdG8gc3RvcmUgaW5jb21pbmcgUGl4ZWxCdWZmZXIKLSAgICBhdXRv
IGJ1ZmZlciA9IEltYWdlQnVmZmVyOjpjcmVhdGUoY2xhbXBlZFNpemUsIG1fZmlsdGVyLnJlbmRl
cmluZ01vZGUoKSwgMSwgb3BlcmF0aW5nQ29sb3JTcGFjZSgpLCBQaXhlbEZvcm1hdDo6QkdSQTgp
OworICAgIGF1dG8gYnVmZmVyID0gSW1hZ2VCdWZmZXI6OmNyZWF0ZShjbGFtcGVkU2l6ZSwgUmVu
ZGVyaW5nTW9kZTo6VW5hY2NlbGVyYXRlZCwgMSwgb3BlcmF0aW5nQ29sb3JTcGFjZSgpLCBQaXhl
bEZvcm1hdDo6QkdSQTgpOwogICAgIGlmICghYnVmZmVyKQogICAgICAgICByZXR1cm4gc3RkOjpu
dWxsb3B0OwogICAgIGJ1ZmZlci0+cHV0UGl4ZWxCdWZmZXIocGl4ZWxCdWZmZXIsIGRlc3RpbmF0
aW9uUmVjdCk7CkBAIC00NTMsNyArNDUyLDcgQEAgc3RkOjpvcHRpb25hbDxQaXhlbEJ1ZmZlcj4g
RmlsdGVyRWZmZWN0Ojpjb252ZXJ0SW1hZ2VCdWZmZXJUb0NvbG9yU3BhY2UoY29uc3QgRGUKICAg
ICBGbG9hdFNpemUgY2xhbXBlZFNpemUgPSBJbWFnZUJ1ZmZlcjo6Y2xhbXBlZFNpemUocmVjdC5z
aXplKCkpOwogCiAgICAgLy8gQ3JlYXRlIGFuIEltYWdlQnVmZmVyIHdpdGggdGhlIGNvcnJlY3Qg
Y29sb3Igc3BhY2UgYW5kIHV0aWxpemUgQ0cgdG8gaGFuZGxlIGNvbG9yIHNwYWNlIGNvbnZlcnNp
b24KLSAgICBhdXRvIGNvbnZlcnRlZEJ1ZmZlciA9IEltYWdlQnVmZmVyOjpjcmVhdGUoY2xhbXBl
ZFNpemUsIG1fZmlsdGVyLnJlbmRlcmluZ01vZGUoKSwgMSwgdGFyZ2V0Q29sb3JTcGFjZSwgUGl4
ZWxGb3JtYXQ6OkJHUkE4KTsKKyAgICBhdXRvIGNvbnZlcnRlZEJ1ZmZlciA9IEltYWdlQnVmZmVy
OjpjcmVhdGUoY2xhbXBlZFNpemUsIFJlbmRlcmluZ01vZGU6OlVuYWNjZWxlcmF0ZWQsIDEsIHRh
cmdldENvbG9yU3BhY2UsIFBpeGVsRm9ybWF0OjpCR1JBOCk7CiAgICAgaWYgKCFjb252ZXJ0ZWRC
dWZmZXIpCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKQEAgLTU3MCw3ICs1NjksNyBA
QCBJbWFnZUJ1ZmZlciogRmlsdGVyRWZmZWN0OjpjcmVhdGVJbWFnZUJ1ZmZlclJlc3VsdCgpCiAg
ICAgICAgIHJldHVybiBudWxscHRyOwogCiAgICAgRmxvYXRTaXplIGNsYW1wZWRTaXplID0gSW1h
Z2VCdWZmZXI6OmNsYW1wZWRTaXplKG1fYWJzb2x1dGVQYWludFJlY3Quc2l6ZSgpKTsKLSAgICBt
X2ltYWdlQnVmZmVyUmVzdWx0ID0gSW1hZ2VCdWZmZXI6OmNyZWF0ZShjbGFtcGVkU2l6ZSwgbV9m
aWx0ZXIucmVuZGVyaW5nTW9kZSgpLCAxLCBtX3Jlc3VsdENvbG9yU3BhY2UsIFBpeGVsRm9ybWF0
OjpCR1JBOCk7CisgICAgbV9pbWFnZUJ1ZmZlclJlc3VsdCA9IEltYWdlQnVmZmVyOjpjcmVhdGUo
Y2xhbXBlZFNpemUsIFJlbmRlcmluZ01vZGU6OlVuYWNjZWxlcmF0ZWQsIDEsIG1fcmVzdWx0Q29s
b3JTcGFjZSwgUGl4ZWxGb3JtYXQ6OkJHUkE4KTsKICAgICByZXR1cm4gbV9pbWFnZUJ1ZmZlclJl
c3VsdC5nZXQoKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvZmlsdGVycy9GaWx0ZXJFZmZlY3QuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2ZpbHRlcnMvRmlsdGVyRWZmZWN0LmgKaW5kZXggYjgzNmFiNDdhZWFkLi5lNTBlYmY0
NGE5MjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRl
cnMvRmlsdGVyRWZmZWN0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
ZmlsdGVycy9GaWx0ZXJFZmZlY3QuaApAQCAtNzMsNyArNzMsNyBAQCBwdWJsaWM6CiAgICAgSW50
UmVjdCByZXF1ZXN0ZWRSZWdpb25PZklucHV0UGl4ZWxCdWZmZXIoY29uc3QgSW50UmVjdCYpIGNv
bnN0OwogICAgIAogICAgIC8vIFJlY3Vyc2VzIG9uIGlucHV0cy4KLSAgICBGbG9hdFJlY3QgZGV0
ZXJtaW5lRmlsdGVyUHJpbWl0aXZlU3VicmVnaW9uKCk7CisgICAgRmxvYXRSZWN0IGRldGVybWlu
ZUZpbHRlclByaW1pdGl2ZVN1YnJlZ2lvbihjb25zdCBGaWx0ZXImKTsKIAogICAgIC8vIFNvbGlk
IGJsYWNrIGltYWdlIHdpdGggZGlmZmVyZW50IGFscGhhIHZhbHVlcy4KICAgICBib29sIGlzQWxw
aGFJbWFnZSgpIGNvbnN0IHsgcmV0dXJuIG1fYWxwaGFJbWFnZTsgfQpAQCAtODUsMTQgKzg1LDE0
IEBAIHB1YmxpYzoKICAgICBGbG9hdFJlY3QgbWF4RWZmZWN0UmVjdCgpIGNvbnN0IHsgcmV0dXJu
IG1fbWF4RWZmZWN0UmVjdDsgfQogICAgIHZvaWQgc2V0TWF4RWZmZWN0UmVjdChjb25zdCBGbG9h
dFJlY3QmIG1heEVmZmVjdFJlY3QpIHsgbV9tYXhFZmZlY3RSZWN0ID0gbWF4RWZmZWN0UmVjdDsg
fQogCi0gICAgdm9pZCBhcHBseSgpOworICAgIHZvaWQgYXBwbHkoY29uc3QgRmlsdGVyJikgb3Zl
cnJpZGU7CiAKICAgICAvLyBDb3JyZWN0IGFueSBpbnZhbGlkIHBpeGVscywgaWYgbmVjZXNzYXJ5
LCBpbiB0aGUgcmVzdWx0IG9mIGEgZmlsdGVyIG9wZXJhdGlvbi4KICAgICAvLyBUaGlzIG1ldGhv
ZCBpcyB1c2VkIHRvIGVuc3VyZSB2YWxpZCBwaXhlbCB2YWx1ZXMgb24gZmlsdGVyIGlucHV0cyBh
bmQgdGhlIGZpbmFsIHJlc3VsdC4KICAgICAvLyBPbmx5IHRoZSBhcml0aG1ldGljIGNvbXBvc2l0
ZSBmaWx0ZXIgZXZlciBuZWVkcyB0byBwZXJmb3JtIGNvcnJlY3Rpb24uCiAgICAgdmlydHVhbCB2
b2lkIGNvcnJlY3RGaWx0ZXJSZXN1bHRJZk5lZWRlZCgpIHsgfQogCi0gICAgdmlydHVhbCB2b2lk
IGRldGVybWluZUFic29sdXRlUGFpbnRSZWN0KCk7CisgICAgdmlydHVhbCB2b2lkIGRldGVybWlu
ZUFic29sdXRlUGFpbnRSZWN0KGNvbnN0IEZpbHRlciYpOwogCiAgICAgZW51bSBjbGFzcyBSZXBy
ZXNlbnRhdGlvblR5cGUgeyBUZXN0T3V0cHV0LCBEZWJ1Z2dpbmcgfTsKICAgICB2aXJ0dWFsIFdU
Rjo6VGV4dFN0cmVhbSYgZXh0ZXJuYWxSZXByZXNlbnRhdGlvbihXVEY6OlRleHRTdHJlYW0mLCBS
ZXByZXNlbnRhdGlvblR5cGUgPSBSZXByZXNlbnRhdGlvblR5cGU6OlRlc3RPdXRwdXQpIGNvbnN0
OwpAQCAtMTIxLDkgKzEyMSw2IEBAIHB1YmxpYzoKICAgICAKICAgICBGbG9hdFBvaW50IG1hcFBv
aW50RnJvbVVzZXJTcGFjZVRvQnVmZmVyKEZsb2F0UG9pbnQpIGNvbnN0OwogICAgIAotICAgIEZp
bHRlciYgZmlsdGVyKCkgeyByZXR1cm4gbV9maWx0ZXI7IH0KLSAgICBjb25zdCBGaWx0ZXImIGZp
bHRlcigpIGNvbnN0IHsgcmV0dXJuIG1fZmlsdGVyOyB9Ci0KICAgICBib29sIGNsaXBzVG9Cb3Vu
ZHMoKSBjb25zdCB7IHJldHVybiBtX2NsaXBzVG9Cb3VuZHM7IH0KICAgICB2b2lkIHNldENsaXBz
VG9Cb3VuZHMoYm9vbCB2YWx1ZSkgeyBtX2NsaXBzVG9Cb3VuZHMgPSB2YWx1ZTsgfQogCkBAIC0x
NDQsNyArMTQxLDcgQEAgcHVibGljOgogICAgIH0KIAogcHJvdGVjdGVkOgotICAgIEZpbHRlckVm
ZmVjdChGaWx0ZXImLCBUeXBlKTsKKyAgICBGaWx0ZXJFZmZlY3QoVHlwZSk7CiAgICAgCiAgICAg
SW1hZ2VCdWZmZXIqIGNyZWF0ZUltYWdlQnVmZmVyUmVzdWx0KCk7CiAgICAgc3RkOjpvcHRpb25h
bDxQaXhlbEJ1ZmZlcj4mIGNyZWF0ZVVubXVsdGlwbGllZEltYWdlUmVzdWx0KCk7CkBAIC0xNjAs
NyArMTU3LDcgQEAgcHJvdGVjdGVkOgogICAgIHZvaWQgY2xpcEFic29sdXRlUGFpbnRSZWN0KCk7
CiAKIHByaXZhdGU6Ci0gICAgdmlydHVhbCB2b2lkIHBsYXRmb3JtQXBwbHlTb2Z0d2FyZSgpID0g
MDsKKyAgICB2aXJ0dWFsIHZvaWQgcGxhdGZvcm1BcHBseVNvZnR3YXJlKGNvbnN0IEZpbHRlciYp
ID0gMDsKIAogICAgIHZvaWQgY29weUltYWdlQnl0ZXMoY29uc3QgVWludDhDbGFtcGVkQXJyYXkm
IHNvdXJjZSwgVWludDhDbGFtcGVkQXJyYXkmIGRlc3RpbmF0aW9uLCBjb25zdCBJbnRSZWN0Jikg
Y29uc3Q7CiAgICAgdm9pZCBjb3B5Q29udmVydGVkSW1hZ2VCdWZmZXJUb0Rlc3RpbmF0aW9uKFVp
bnQ4Q2xhbXBlZEFycmF5JiwgY29uc3QgRGVzdGluYXRpb25Db2xvclNwYWNlJiwgQWxwaGFQcmVt
dWx0aXBsaWNhdGlvbiwgY29uc3QgSW50UmVjdCYpOwpAQCAtMTcwLDcgKzE2Nyw2IEBAIHByaXZh
dGU6CiAgICAgc3RkOjpvcHRpb25hbDxQaXhlbEJ1ZmZlcj4gY29udmVydFBpeGVsQnVmZmVyVG9D
b2xvclNwYWNlKGNvbnN0IERlc3RpbmF0aW9uQ29sb3JTcGFjZSYsIFBpeGVsQnVmZmVyJik7CiAg
ICAgCiAKLSAgICBGaWx0ZXImIG1fZmlsdGVyOwogICAgIEZpbHRlckVmZmVjdFZlY3RvciBtX2lu
cHV0RWZmZWN0czsKIAogICAgIFJlZlB0cjxJbWFnZUJ1ZmZlcj4gbV9pbWFnZUJ1ZmZlclJlc3Vs
dDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMv
RmlsdGVyRWZmZWN0UmVuZGVyZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2ZpbHRlcnMvRmlsdGVyRWZmZWN0UmVuZGVyZXIuaAppbmRleCA1NmJlMjQ3MzYxZjUuLjU5Y2Y3
ZGZlMzQzNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmls
dGVycy9GaWx0ZXJFZmZlY3RSZW5kZXJlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2ZpbHRlcnMvRmlsdGVyRWZmZWN0UmVuZGVyZXIuaApAQCAtMzYsNyArMzYsNyBA
QCBjbGFzcyBGaWx0ZXJFZmZlY3RSZW5kZXJlciB7CiAgICAgCiBwdWJsaWM6CiAgICAgc3RhdGlj
IHN0ZDo6dW5pcXVlX3B0cjxGaWx0ZXJFZmZlY3RSZW5kZXJlcj4gdHJ5Q3JlYXRlKGJvb2wsIEZp
bHRlckVmZmVjdCYpOwotICAgIHZpcnR1YWwgdm9pZCBhcHBseUVmZmVjdHMoRmlsdGVyRWZmZWN0
JikgPSAwOworICAgIHZpcnR1YWwgdm9pZCBhcHBseUVmZmVjdHMoY29uc3QgRmlsdGVyJiwgRmls
dGVyRWZmZWN0JikgPSAwOwogICAgIHZpcnR1YWwgYm9vbCBoYXNSZXN1bHQoKSBjb25zdCA9IDA7
CiAgICAgdmlydHVhbCBJbWFnZUJ1ZmZlciogb3V0cHV0KCkgY29uc3QgPSAwOwogICAgIHZpcnR1
YWwgRmxvYXRSZWN0IGRlc3RSZWN0KGNvbnN0IEZpbHRlckVmZmVjdCYpIGNvbnN0ID0gMDsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRmlsdGVy
RnVuY3Rpb24uaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRmls
dGVyRnVuY3Rpb24uaAppbmRleCA2NTUxMDU2Zjc0NDguLjI3YmU5ODRjNGQxNyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GaWx0ZXJGdW5jdGlv
bi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRmlsdGVy
RnVuY3Rpb24uaApAQCAtMzYsNiArMzYsOCBAQCBjbGFzcyBUZXh0U3RyZWFtOwogCiBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAKK2NsYXNzIEZpbHRlcjsKKwogY2xhc3MgRmlsdGVyRnVuY3Rpb24gOiBw
dWJsaWMgUmVmQ291bnRlZDxGaWx0ZXJGdW5jdGlvbj4gewogcHVibGljOgogICAgIGVudW0gY2xh
c3MgVHlwZSA6IHVpbnQ4X3QgewpAQCAtODMsNiArODUsNyBAQCBwdWJsaWM6CiAgICAgY29uc3Qg
QXRvbVN0cmluZyYgZmlsdGVyTmFtZSgpIGNvbnN0IHsgcmV0dXJuIGZpbHRlck5hbWUobV9maWx0
ZXJUeXBlKTsgfQogCiAgICAgdmlydHVhbCBJbnRPdXRzZXRzIG91dHNldHMoKSBjb25zdCB7IHJl
dHVybiB7IH07IH0KKyAgICB2aXJ0dWFsIHZvaWQgYXBwbHkoY29uc3QgRmlsdGVyJikgeyB9CiAg
ICAgdmlydHVhbCB2b2lkIGNsZWFyUmVzdWx0KCkgeyB9CiAKIHByaXZhdGU6CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL1NvdXJjZUFscGhhLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvU291cmNlQWxwaGEu
Y3BwCmluZGV4IDk5Njk0MzcyNTc5My4uZTEwNGE4ZDIwODYwIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL1NvdXJjZUFscGhhLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL1NvdXJjZUFscGhhLmNwcApA
QCAtMzMsMTkgKzMzLDE5IEBAIFJlZjxTb3VyY2VBbHBoYT4gU291cmNlQWxwaGE6OmNyZWF0ZShG
aWx0ZXJFZmZlY3QmIHNvdXJjZUVmZmVjdCkKIH0KIAogU291cmNlQWxwaGE6OlNvdXJjZUFscGhh
KEZpbHRlckVmZmVjdCYgc291cmNlRWZmZWN0KQotICAgIDogRmlsdGVyRWZmZWN0KHNvdXJjZUVm
ZmVjdC5maWx0ZXIoKSwgRmlsdGVyRWZmZWN0OjpUeXBlOjpTb3VyY2VBbHBoYSkKKyAgICA6IEZp
bHRlckVmZmVjdChGaWx0ZXJFZmZlY3Q6OlR5cGU6OlNvdXJjZUFscGhhKQogewogICAgIHNldE9w
ZXJhdGluZ0NvbG9yU3BhY2Uoc291cmNlRWZmZWN0Lm9wZXJhdGluZ0NvbG9yU3BhY2UoKSk7CiAg
ICAgaW5wdXRFZmZlY3RzKCkuYXBwZW5kKCZzb3VyY2VFZmZlY3QpOwogfQogCi12b2lkIFNvdXJj
ZUFscGhhOjpkZXRlcm1pbmVBYnNvbHV0ZVBhaW50UmVjdCgpCit2b2lkIFNvdXJjZUFscGhhOjpk
ZXRlcm1pbmVBYnNvbHV0ZVBhaW50UmVjdChjb25zdCBGaWx0ZXImIGZpbHRlcikKIHsKLSAgICBp
bnB1dEVmZmVjdCgwKS0+ZGV0ZXJtaW5lQWJzb2x1dGVQYWludFJlY3QoKTsKKyAgICBpbnB1dEVm
ZmVjdCgwKS0+ZGV0ZXJtaW5lQWJzb2x1dGVQYWludFJlY3QoZmlsdGVyKTsKICAgICBzZXRBYnNv
bHV0ZVBhaW50UmVjdChpbnB1dEVmZmVjdCgwKS0+YWJzb2x1dGVQYWludFJlY3QoKSk7CiB9CiAK
LXZvaWQgU291cmNlQWxwaGE6OnBsYXRmb3JtQXBwbHlTb2Z0d2FyZSgpCit2b2lkIFNvdXJjZUFs
cGhhOjpwbGF0Zm9ybUFwcGx5U29mdHdhcmUoY29uc3QgRmlsdGVyJikKIHsKICAgICBJbWFnZUJ1
ZmZlciogcmVzdWx0SW1hZ2UgPSBjcmVhdGVJbWFnZUJ1ZmZlclJlc3VsdCgpOwogICAgIGlmICgh
cmVzdWx0SW1hZ2UpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9maWx0ZXJzL1NvdXJjZUFscGhhLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9maWx0ZXJzL1NvdXJjZUFscGhhLmgKaW5kZXggN2JiYmY4MWQ2ODUyLi41MmEzOWE0OTI0MTYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvU291
cmNlQWxwaGEuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJz
L1NvdXJjZUFscGhhLmgKQEAgLTMyLDggKzMyLDggQEAgcHVibGljOgogcHJpdmF0ZToKICAgICBl
eHBsaWNpdCBTb3VyY2VBbHBoYShGaWx0ZXJFZmZlY3QmKTsKIAotICAgIHZvaWQgcGxhdGZvcm1B
cHBseVNvZnR3YXJlKCkgb3ZlcnJpZGU7Ci0gICAgdm9pZCBkZXRlcm1pbmVBYnNvbHV0ZVBhaW50
UmVjdCgpIG92ZXJyaWRlOworICAgIHZvaWQgcGxhdGZvcm1BcHBseVNvZnR3YXJlKGNvbnN0IEZp
bHRlciYpIG92ZXJyaWRlOworICAgIHZvaWQgZGV0ZXJtaW5lQWJzb2x1dGVQYWludFJlY3QoY29u
c3QgRmlsdGVyJikgb3ZlcnJpZGU7CiAgICAgV1RGOjpUZXh0U3RyZWFtJiBleHRlcm5hbFJlcHJl
c2VudGF0aW9uKFdURjo6VGV4dFN0cmVhbSYsIFJlcHJlc2VudGF0aW9uVHlwZSkgY29uc3Qgb3Zl
cnJpZGU7CiB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9maWx0ZXJzL1NvdXJjZUdyYXBoaWMuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvZmlsdGVycy9Tb3VyY2VHcmFwaGljLmNwcAppbmRleCBlMTIzZGNkOGZmMjEuLmU3MmYw
ZjBiNzhiOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmls
dGVycy9Tb3VyY2VHcmFwaGljLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9maWx0ZXJzL1NvdXJjZUdyYXBoaWMuY3BwCkBAIC0yNiwyMiArMjYsMjQgQEAKIAogbmFt
ZXNwYWNlIFdlYkNvcmUgewogCi1SZWY8U291cmNlR3JhcGhpYz4gU291cmNlR3JhcGhpYzo6Y3Jl
YXRlKEZpbHRlciYgZmlsdGVyKQorUmVmPFNvdXJjZUdyYXBoaWM+IFNvdXJjZUdyYXBoaWM6OmNy
ZWF0ZSgpCiB7Ci0gICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgU291cmNlR3JhcGhpYyhmaWx0ZXIp
KTsKKyAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBTb3VyY2VHcmFwaGljKCkpOwogfQogCi12b2lk
IFNvdXJjZUdyYXBoaWM6OmRldGVybWluZUFic29sdXRlUGFpbnRSZWN0KCkKK1NvdXJjZUdyYXBo
aWM6OlNvdXJjZUdyYXBoaWMoKQorICAgIDogRmlsdGVyRWZmZWN0KFR5cGU6OlNvdXJjZUdyYXBo
aWMpCit7Cit9CisKK3ZvaWQgU291cmNlR3JhcGhpYzo6ZGV0ZXJtaW5lQWJzb2x1dGVQYWludFJl
Y3QoY29uc3QgRmlsdGVyJiBmaWx0ZXIpCiB7Ci0gICAgRmlsdGVyJiBmaWx0ZXIgPSB0aGlzLT5m
aWx0ZXIoKTsKICAgICBGbG9hdFJlY3QgcGFpbnRSZWN0ID0gZmlsdGVyLnNvdXJjZUltYWdlUmVj
dCgpOwogICAgIHNldEFic29sdXRlUGFpbnRSZWN0KGVuY2xvc2luZ0ludFJlY3QocGFpbnRSZWN0
KSk7CiB9CiAKLXZvaWQgU291cmNlR3JhcGhpYzo6cGxhdGZvcm1BcHBseVNvZnR3YXJlKCkKK3Zv
aWQgU291cmNlR3JhcGhpYzo6cGxhdGZvcm1BcHBseVNvZnR3YXJlKGNvbnN0IEZpbHRlciYgZmls
dGVyKQogewotICAgIEZpbHRlciYgZmlsdGVyID0gdGhpcy0+ZmlsdGVyKCk7Ci0KICAgICBJbWFn
ZUJ1ZmZlciogcmVzdWx0SW1hZ2UgPSBjcmVhdGVJbWFnZUJ1ZmZlclJlc3VsdCgpOwogICAgIElt
YWdlQnVmZmVyKiBzb3VyY2VJbWFnZSA9IGZpbHRlci5zb3VyY2VJbWFnZSgpOwogICAgIGlmICgh
cmVzdWx0SW1hZ2UgfHwgIXNvdXJjZUltYWdlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9Tb3VyY2VHcmFwaGljLmggYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL1NvdXJjZUdyYXBoaWMuaAppbmRleCA1MmRjYjdl
ODY4ZTUuLjZiYzQ3YTFmMDFiNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvZmlsdGVycy9Tb3VyY2VHcmFwaGljLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9Tb3VyY2VHcmFwaGljLmgKQEAgLTI2LDE5ICsyNiwxNSBA
QCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIFNvdXJjZUdyYXBoaWMgOiBwdWJsaWMgRmls
dGVyRWZmZWN0IHsKIHB1YmxpYzogICAgICAgIAotICAgIHN0YXRpYyBSZWY8U291cmNlR3JhcGhp
Yz4gY3JlYXRlKEZpbHRlciYpOworICAgIHN0YXRpYyBSZWY8U291cmNlR3JhcGhpYz4gY3JlYXRl
KCk7CiAKICAgICBzdGF0aWMgY29uc3QgQXRvbVN0cmluZyYgZWZmZWN0TmFtZSgpIHsgcmV0dXJu
IEZpbHRlckVmZmVjdDo6c291cmNlR3JhcGhpY05hbWUoKTsgfQogCiBwcml2YXRlOgotICAgIFNv
dXJjZUdyYXBoaWMoRmlsdGVyJiBmaWx0ZXIpCi0gICAgICAgIDogRmlsdGVyRWZmZWN0KGZpbHRl
ciwgRmlsdGVyRWZmZWN0OjpUeXBlOjpTb3VyY2VHcmFwaGljKQotICAgIHsKLSAgICAgICAgc2V0
T3BlcmF0aW5nQ29sb3JTcGFjZShEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0IoKSk7Ci0gICAg
fQotCi0gICAgdm9pZCBkZXRlcm1pbmVBYnNvbHV0ZVBhaW50UmVjdCgpIG92ZXJyaWRlOwotICAg
IHZvaWQgcGxhdGZvcm1BcHBseVNvZnR3YXJlKCkgb3ZlcnJpZGU7CisgICAgU291cmNlR3JhcGhp
YygpOworCisgICAgdm9pZCBkZXRlcm1pbmVBYnNvbHV0ZVBhaW50UmVjdChjb25zdCBGaWx0ZXIm
KSBvdmVycmlkZTsKKyAgICB2b2lkIHBsYXRmb3JtQXBwbHlTb2Z0d2FyZShjb25zdCBGaWx0ZXIm
KSBvdmVycmlkZTsKICAgICBXVEY6OlRleHRTdHJlYW0mIGV4dGVybmFsUmVwcmVzZW50YXRpb24o
V1RGOjpUZXh0U3RyZWFtJiwgUmVwcmVzZW50YXRpb25UeXBlKSBjb25zdCBvdmVycmlkZTsKIH07
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9DU1NGaWx0ZXIuY3BwIGIv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0NTU0ZpbHRlci5jcHAKaW5kZXggZjlhNzQ4ODYwMzBj
Li5kZmJmZjliZjlmMjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9DU1NG
aWx0ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9DU1NGaWx0ZXIuY3BwCkBA
IC01OCwxNyArNTgsMTcgQEAgQ1NTRmlsdGVyOjpDU1NGaWx0ZXIoYm9vbCBoYXNGaWx0ZXJUaGF0
TW92ZXNQaXhlbHMsIGJvb2wgaGFzRmlsdGVyVGhhdFNob3VsZEJlUmUKICAgICA6IEZpbHRlcihG
aWx0ZXI6OlR5cGU6OkNTU0ZpbHRlciwgRmxvYXRTaXplIHsgc2NhbGVGYWN0b3IsIHNjYWxlRmFj
dG9yIH0pCiAgICAgLCBtX2hhc0ZpbHRlclRoYXRNb3Zlc1BpeGVscyhoYXNGaWx0ZXJUaGF0TW92
ZXNQaXhlbHMpCiAgICAgLCBtX2hhc0ZpbHRlclRoYXRTaG91bGRCZVJlc3RyaWN0ZWRCeVNlY3Vy
aXR5T3JpZ2luKGhhc0ZpbHRlclRoYXRTaG91bGRCZVJlc3RyaWN0ZWRCeVNlY3VyaXR5T3JpZ2lu
KQotICAgICwgbV9zb3VyY2VHcmFwaGljKFNvdXJjZUdyYXBoaWM6OmNyZWF0ZSgqdGhpcykpCisg
ICAgLCBtX3NvdXJjZUdyYXBoaWMoU291cmNlR3JhcGhpYzo6Y3JlYXRlKCkpCiB7CiB9CiAKLXN0
YXRpYyBSZWZQdHI8RmlsdGVyRWZmZWN0PiBjcmVhdGVCbHVyRWZmZWN0KENTU0ZpbHRlciYgZmls
dGVyLCBjb25zdCBCbHVyRmlsdGVyT3BlcmF0aW9uJiBibHVyT3BlcmF0aW9uLCBGaWx0ZXJDb25z
dW1lciBjb25zdW1lcikKK3N0YXRpYyBSZWZQdHI8RmlsdGVyRWZmZWN0PiBjcmVhdGVCbHVyRWZm
ZWN0KGNvbnN0IEJsdXJGaWx0ZXJPcGVyYXRpb24mIGJsdXJPcGVyYXRpb24sIEZpbHRlckNvbnN1
bWVyIGNvbnN1bWVyKQogewogICAgIGZsb2F0IHN0ZERldmlhdGlvbiA9IGZsb2F0VmFsdWVGb3JM
ZW5ndGgoYmx1ck9wZXJhdGlvbi5zdGREZXZpYXRpb24oKSwgMCk7Ci0gICAgcmV0dXJuIEZFR2F1
c3NpYW5CbHVyOjpjcmVhdGUoZmlsdGVyLCBzdGREZXZpYXRpb24sIHN0ZERldmlhdGlvbiwgY29u
c3VtZXIgPT0gRmlsdGVyQ29uc3VtZXI6OkZpbHRlclByb3BlcnR5ID8gRURHRU1PREVfTk9ORSA6
IEVER0VNT0RFX0RVUExJQ0FURSk7CisgICAgcmV0dXJuIEZFR2F1c3NpYW5CbHVyOjpjcmVhdGUo
c3RkRGV2aWF0aW9uLCBzdGREZXZpYXRpb24sIGNvbnN1bWVyID09IEZpbHRlckNvbnN1bWVyOjpG
aWx0ZXJQcm9wZXJ0eSA/IEVER0VNT0RFX05PTkUgOiBFREdFTU9ERV9EVVBMSUNBVEUpOwogfQog
Ci1zdGF0aWMgUmVmUHRyPEZpbHRlckVmZmVjdD4gY3JlYXRlQnJpZ2h0bmVzc0VmZmVjdChDU1NG
aWx0ZXImIGZpbHRlciwgY29uc3QgQmFzaWNDb21wb25lbnRUcmFuc2ZlckZpbHRlck9wZXJhdGlv
biYgY29tcG9uZW50VHJhbnNmZXJPcGVyYXRpb24pCitzdGF0aWMgUmVmUHRyPEZpbHRlckVmZmVj
dD4gY3JlYXRlQnJpZ2h0bmVzc0VmZmVjdChjb25zdCBCYXNpY0NvbXBvbmVudFRyYW5zZmVyRmls
dGVyT3BlcmF0aW9uJiBjb21wb25lbnRUcmFuc2Zlck9wZXJhdGlvbikKIHsKICAgICBDb21wb25l
bnRUcmFuc2ZlckZ1bmN0aW9uIHRyYW5zZmVyRnVuY3Rpb247CiAgICAgdHJhbnNmZXJGdW5jdGlv
bi50eXBlID0gRkVDT01QT05FTlRUUkFOU0ZFUl9UWVBFX0xJTkVBUjsKQEAgLTc2LDEwICs3Niwx
MCBAQCBzdGF0aWMgUmVmUHRyPEZpbHRlckVmZmVjdD4gY3JlYXRlQnJpZ2h0bmVzc0VmZmVjdChD
U1NGaWx0ZXImIGZpbHRlciwgY29uc3QgQmFzaQogICAgIHRyYW5zZmVyRnVuY3Rpb24uaW50ZXJj
ZXB0ID0gMDsKIAogICAgIENvbXBvbmVudFRyYW5zZmVyRnVuY3Rpb24gbnVsbEZ1bmN0aW9uOwot
ICAgIHJldHVybiBGRUNvbXBvbmVudFRyYW5zZmVyOjpjcmVhdGUoZmlsdGVyLCB0cmFuc2ZlckZ1
bmN0aW9uLCB0cmFuc2ZlckZ1bmN0aW9uLCB0cmFuc2ZlckZ1bmN0aW9uLCBudWxsRnVuY3Rpb24p
OworICAgIHJldHVybiBGRUNvbXBvbmVudFRyYW5zZmVyOjpjcmVhdGUodHJhbnNmZXJGdW5jdGlv
biwgdHJhbnNmZXJGdW5jdGlvbiwgdHJhbnNmZXJGdW5jdGlvbiwgbnVsbEZ1bmN0aW9uKTsKIH0K
IAotc3RhdGljIFJlZlB0cjxGaWx0ZXJFZmZlY3Q+IGNyZWF0ZUNvbnRyYXN0RWZmZWN0KENTU0Zp
bHRlciYgZmlsdGVyLCBjb25zdCBCYXNpY0NvbXBvbmVudFRyYW5zZmVyRmlsdGVyT3BlcmF0aW9u
JiBjb21wb25lbnRUcmFuc2Zlck9wZXJhdGlvbikKK3N0YXRpYyBSZWZQdHI8RmlsdGVyRWZmZWN0
PiBjcmVhdGVDb250cmFzdEVmZmVjdChjb25zdCBCYXNpY0NvbXBvbmVudFRyYW5zZmVyRmlsdGVy
T3BlcmF0aW9uJiBjb21wb25lbnRUcmFuc2Zlck9wZXJhdGlvbikKIHsKICAgICBDb21wb25lbnRU
cmFuc2ZlckZ1bmN0aW9uIHRyYW5zZmVyRnVuY3Rpb247CiAgICAgdHJhbnNmZXJGdW5jdGlvbi50
eXBlID0gRkVDT01QT05FTlRUUkFOU0ZFUl9UWVBFX0xJTkVBUjsKQEAgLTg4LDE2ICs4OCwxNiBA
QCBzdGF0aWMgUmVmUHRyPEZpbHRlckVmZmVjdD4gY3JlYXRlQ29udHJhc3RFZmZlY3QoQ1NTRmls
dGVyJiBmaWx0ZXIsIGNvbnN0IEJhc2ljQwogICAgIHRyYW5zZmVyRnVuY3Rpb24uaW50ZXJjZXB0
ID0gLTAuNSAqIGFtb3VudCArIDAuNTsKIAogICAgIENvbXBvbmVudFRyYW5zZmVyRnVuY3Rpb24g
bnVsbEZ1bmN0aW9uOwotICAgIHJldHVybiBGRUNvbXBvbmVudFRyYW5zZmVyOjpjcmVhdGUoZmls
dGVyLCB0cmFuc2ZlckZ1bmN0aW9uLCB0cmFuc2ZlckZ1bmN0aW9uLCB0cmFuc2ZlckZ1bmN0aW9u
LCBudWxsRnVuY3Rpb24pOworICAgIHJldHVybiBGRUNvbXBvbmVudFRyYW5zZmVyOjpjcmVhdGUo
dHJhbnNmZXJGdW5jdGlvbiwgdHJhbnNmZXJGdW5jdGlvbiwgdHJhbnNmZXJGdW5jdGlvbiwgbnVs
bEZ1bmN0aW9uKTsKIH0KIAotc3RhdGljIFJlZlB0cjxGaWx0ZXJFZmZlY3Q+IGNyZWF0ZURyb3BT
aGFkb3dFZmZlY3QoQ1NTRmlsdGVyJiBmaWx0ZXIsIGNvbnN0IERyb3BTaGFkb3dGaWx0ZXJPcGVy
YXRpb24mIGRyb3BTaGFkb3dPcGVyYXRpb24pCitzdGF0aWMgUmVmUHRyPEZpbHRlckVmZmVjdD4g
Y3JlYXRlRHJvcFNoYWRvd0VmZmVjdChjb25zdCBEcm9wU2hhZG93RmlsdGVyT3BlcmF0aW9uJiBk
cm9wU2hhZG93T3BlcmF0aW9uKQogewogICAgIGZsb2F0IHN0ZCA9IGRyb3BTaGFkb3dPcGVyYXRp
b24uc3RkRGV2aWF0aW9uKCk7Ci0gICAgcmV0dXJuIEZFRHJvcFNoYWRvdzo6Y3JlYXRlKGZpbHRl
ciwgc3RkLCBzdGQsIGRyb3BTaGFkb3dPcGVyYXRpb24ueCgpLCBkcm9wU2hhZG93T3BlcmF0aW9u
LnkoKSwgZHJvcFNoYWRvd09wZXJhdGlvbi5jb2xvcigpLCAxKTsKKyAgICByZXR1cm4gRkVEcm9w
U2hhZG93OjpjcmVhdGUoc3RkLCBzdGQsIGRyb3BTaGFkb3dPcGVyYXRpb24ueCgpLCBkcm9wU2hh
ZG93T3BlcmF0aW9uLnkoKSwgZHJvcFNoYWRvd09wZXJhdGlvbi5jb2xvcigpLCAxKTsKIH0KIAot
c3RhdGljIFJlZlB0cjxGaWx0ZXJFZmZlY3Q+IGNyZWF0ZUdyYXlTY2FsZUVmZmVjdChDU1NGaWx0
ZXImIGZpbHRlciwgY29uc3QgQmFzaWNDb2xvck1hdHJpeEZpbHRlck9wZXJhdGlvbiYgY29sb3JN
YXRyaXhPcGVyYXRpb24pCitzdGF0aWMgUmVmUHRyPEZpbHRlckVmZmVjdD4gY3JlYXRlR3JheVNj
YWxlRWZmZWN0KGNvbnN0IEJhc2ljQ29sb3JNYXRyaXhGaWx0ZXJPcGVyYXRpb24mIGNvbG9yTWF0
cml4T3BlcmF0aW9uKQogewogICAgIGRvdWJsZSBvbmVNaW51c0Ftb3VudCA9IGNsYW1wVG8oMSAt
IGNvbG9yTWF0cml4T3BlcmF0aW9uLmFtb3VudCgpLCAwLjAsIDEuMCk7CiAKQEAgLTEzMCwxNiAr
MTMwLDE2IEBAIHN0YXRpYyBSZWZQdHI8RmlsdGVyRWZmZWN0PiBjcmVhdGVHcmF5U2NhbGVFZmZl
Y3QoQ1NTRmlsdGVyJiBmaWx0ZXIsIGNvbnN0IEJhc2ljCiAgICAgICAgIDAsCiAgICAgfTsKIAot
ICAgIHJldHVybiBGRUNvbG9yTWF0cml4OjpjcmVhdGUoZmlsdGVyLCBGRUNPTE9STUFUUklYX1RZ
UEVfTUFUUklYLCBXVEZNb3ZlKGlucHV0UGFyYW1ldGVycykpOworICAgIHJldHVybiBGRUNvbG9y
TWF0cml4OjpjcmVhdGUoRkVDT0xPUk1BVFJJWF9UWVBFX01BVFJJWCwgV1RGTW92ZShpbnB1dFBh
cmFtZXRlcnMpKTsKIH0KIAotc3RhdGljIFJlZlB0cjxGaWx0ZXJFZmZlY3Q+IGNyZWF0ZUh1ZVJv
dGF0ZUVmZmVjdChDU1NGaWx0ZXImIGZpbHRlciwgY29uc3QgQmFzaWNDb2xvck1hdHJpeEZpbHRl
ck9wZXJhdGlvbiYgY29sb3JNYXRyaXhPcGVyYXRpb24pCitzdGF0aWMgUmVmUHRyPEZpbHRlckVm
ZmVjdD4gY3JlYXRlSHVlUm90YXRlRWZmZWN0KGNvbnN0IEJhc2ljQ29sb3JNYXRyaXhGaWx0ZXJP
cGVyYXRpb24mIGNvbG9yTWF0cml4T3BlcmF0aW9uKQogewogICAgIFZlY3RvcjxmbG9hdD4gaW5w
dXRQYXJhbWV0ZXJzIHsgbmFycm93UHJlY2lzaW9uVG9GbG9hdChjb2xvck1hdHJpeE9wZXJhdGlv
bi5hbW91bnQoKSkgfTsKLSAgICByZXR1cm4gRkVDb2xvck1hdHJpeDo6Y3JlYXRlKGZpbHRlciwg
RkVDT0xPUk1BVFJJWF9UWVBFX0hVRVJPVEFURSwgV1RGTW92ZShpbnB1dFBhcmFtZXRlcnMpKTsK
KyAgICByZXR1cm4gRkVDb2xvck1hdHJpeDo6Y3JlYXRlKEZFQ09MT1JNQVRSSVhfVFlQRV9IVUVS
T1RBVEUsIFdURk1vdmUoaW5wdXRQYXJhbWV0ZXJzKSk7CiB9CiAKLXN0YXRpYyBSZWZQdHI8Rmls
dGVyRWZmZWN0PiBjcmVhdGVJbnZlcnRFZmZlY3QoQ1NTRmlsdGVyJiBmaWx0ZXIsIGNvbnN0IEJh
c2ljQ29tcG9uZW50VHJhbnNmZXJGaWx0ZXJPcGVyYXRpb24mIGNvbXBvbmVudFRyYW5zZmVyT3Bl
cmF0aW9uKQorc3RhdGljIFJlZlB0cjxGaWx0ZXJFZmZlY3Q+IGNyZWF0ZUludmVydEVmZmVjdChj
b25zdCBCYXNpY0NvbXBvbmVudFRyYW5zZmVyRmlsdGVyT3BlcmF0aW9uJiBjb21wb25lbnRUcmFu
c2Zlck9wZXJhdGlvbikKIHsKICAgICBDb21wb25lbnRUcmFuc2ZlckZ1bmN0aW9uIHRyYW5zZmVy
RnVuY3Rpb247CiAgICAgdHJhbnNmZXJGdW5jdGlvbi50eXBlID0gRkVDT01QT05FTlRUUkFOU0ZF
Ul9UWVBFX0xJTkVBUjsKQEAgLTE0OCwxMCArMTQ4LDEwIEBAIHN0YXRpYyBSZWZQdHI8RmlsdGVy
RWZmZWN0PiBjcmVhdGVJbnZlcnRFZmZlY3QoQ1NTRmlsdGVyJiBmaWx0ZXIsIGNvbnN0IEJhc2lj
Q29tCiAgICAgdHJhbnNmZXJGdW5jdGlvbi5pbnRlcmNlcHQgPSBhbW91bnQ7CiAKICAgICBDb21w
b25lbnRUcmFuc2ZlckZ1bmN0aW9uIG51bGxGdW5jdGlvbjsKLSAgICByZXR1cm4gRkVDb21wb25l
bnRUcmFuc2Zlcjo6Y3JlYXRlKGZpbHRlciwgdHJhbnNmZXJGdW5jdGlvbiwgdHJhbnNmZXJGdW5j
dGlvbiwgdHJhbnNmZXJGdW5jdGlvbiwgbnVsbEZ1bmN0aW9uKTsKKyAgICByZXR1cm4gRkVDb21w
b25lbnRUcmFuc2Zlcjo6Y3JlYXRlKHRyYW5zZmVyRnVuY3Rpb24sIHRyYW5zZmVyRnVuY3Rpb24s
IHRyYW5zZmVyRnVuY3Rpb24sIG51bGxGdW5jdGlvbik7CiB9CiAKLXN0YXRpYyBSZWZQdHI8Rmls
dGVyRWZmZWN0PiBjcmVhdGVPcGFjaXR5RWZmZWN0KENTU0ZpbHRlciYgZmlsdGVyLCBjb25zdCBC
YXNpY0NvbXBvbmVudFRyYW5zZmVyRmlsdGVyT3BlcmF0aW9uJiBjb21wb25lbnRUcmFuc2Zlck9w
ZXJhdGlvbikKK3N0YXRpYyBSZWZQdHI8RmlsdGVyRWZmZWN0PiBjcmVhdGVPcGFjaXR5RWZmZWN0
KGNvbnN0IEJhc2ljQ29tcG9uZW50VHJhbnNmZXJGaWx0ZXJPcGVyYXRpb24mIGNvbXBvbmVudFRy
YW5zZmVyT3BlcmF0aW9uKQogewogICAgIENvbXBvbmVudFRyYW5zZmVyRnVuY3Rpb24gdHJhbnNm
ZXJGdW5jdGlvbjsKICAgICB0cmFuc2ZlckZ1bmN0aW9uLnR5cGUgPSBGRUNPTVBPTkVOVFRSQU5T
RkVSX1RZUEVfTElORUFSOwpAQCAtMTYwLDE2ICsxNjAsMTYgQEAgc3RhdGljIFJlZlB0cjxGaWx0
ZXJFZmZlY3Q+IGNyZWF0ZU9wYWNpdHlFZmZlY3QoQ1NTRmlsdGVyJiBmaWx0ZXIsIGNvbnN0IEJh
c2ljQ28KICAgICB0cmFuc2ZlckZ1bmN0aW9uLmludGVyY2VwdCA9IDA7CiAKICAgICBDb21wb25l
bnRUcmFuc2ZlckZ1bmN0aW9uIG51bGxGdW5jdGlvbjsKLSAgICByZXR1cm4gRkVDb21wb25lbnRU
cmFuc2Zlcjo6Y3JlYXRlKGZpbHRlciwgbnVsbEZ1bmN0aW9uLCBudWxsRnVuY3Rpb24sIG51bGxG
dW5jdGlvbiwgdHJhbnNmZXJGdW5jdGlvbik7CisgICAgcmV0dXJuIEZFQ29tcG9uZW50VHJhbnNm
ZXI6OmNyZWF0ZShudWxsRnVuY3Rpb24sIG51bGxGdW5jdGlvbiwgbnVsbEZ1bmN0aW9uLCB0cmFu
c2ZlckZ1bmN0aW9uKTsKIH0KIAotc3RhdGljIFJlZlB0cjxGaWx0ZXJFZmZlY3Q+IGNyZWF0ZVNh
dHVyYXRlRWZmZWN0KENTU0ZpbHRlciYgZmlsdGVyLCBjb25zdCBCYXNpY0NvbG9yTWF0cml4Rmls
dGVyT3BlcmF0aW9uJiBjb2xvck1hdHJpeE9wZXJhdGlvbikKK3N0YXRpYyBSZWZQdHI8RmlsdGVy
RWZmZWN0PiBjcmVhdGVTYXR1cmF0ZUVmZmVjdChjb25zdCBCYXNpY0NvbG9yTWF0cml4RmlsdGVy
T3BlcmF0aW9uJiBjb2xvck1hdHJpeE9wZXJhdGlvbikKIHsKICAgICBWZWN0b3I8ZmxvYXQ+IGlu
cHV0UGFyYW1ldGVycyB7IG5hcnJvd1ByZWNpc2lvblRvRmxvYXQoY29sb3JNYXRyaXhPcGVyYXRp
b24uYW1vdW50KCkpIH07Ci0gICAgcmV0dXJuIEZFQ29sb3JNYXRyaXg6OmNyZWF0ZShmaWx0ZXIs
IEZFQ09MT1JNQVRSSVhfVFlQRV9TQVRVUkFURSwgV1RGTW92ZShpbnB1dFBhcmFtZXRlcnMpKTsK
KyAgICByZXR1cm4gRkVDb2xvck1hdHJpeDo6Y3JlYXRlKEZFQ09MT1JNQVRSSVhfVFlQRV9TQVRV
UkFURSwgV1RGTW92ZShpbnB1dFBhcmFtZXRlcnMpKTsKIH0KIAotc3RhdGljIFJlZlB0cjxGaWx0
ZXJFZmZlY3Q+IGNyZWF0ZVNlcGlhRWZmZWN0KENTU0ZpbHRlciYgZmlsdGVyLCBjb25zdCBCYXNp
Y0NvbG9yTWF0cml4RmlsdGVyT3BlcmF0aW9uJiBjb2xvck1hdHJpeE9wZXJhdGlvbikKK3N0YXRp
YyBSZWZQdHI8RmlsdGVyRWZmZWN0PiBjcmVhdGVTZXBpYUVmZmVjdChjb25zdCBCYXNpY0NvbG9y
TWF0cml4RmlsdGVyT3BlcmF0aW9uJiBjb2xvck1hdHJpeE9wZXJhdGlvbikKIHsKICAgICBkb3Vi
bGUgb25lTWludXNBbW91bnQgPSBjbGFtcFRvKDEgLSBjb2xvck1hdHJpeE9wZXJhdGlvbi5hbW91
bnQoKSwgMC4wLCAxLjApOwogCkBAIC0yMDIsNyArMjAyLDcgQEAgc3RhdGljIFJlZlB0cjxGaWx0
ZXJFZmZlY3Q+IGNyZWF0ZVNlcGlhRWZmZWN0KENTU0ZpbHRlciYgZmlsdGVyLCBjb25zdCBCYXNp
Y0NvbG8KICAgICAgICAgMCwKICAgICB9OwogCi0gICAgcmV0dXJuIEZFQ29sb3JNYXRyaXg6OmNy
ZWF0ZShmaWx0ZXIsIEZFQ09MT1JNQVRSSVhfVFlQRV9NQVRSSVgsIFdURk1vdmUoaW5wdXRQYXJh
bWV0ZXJzKSk7CisgICAgcmV0dXJuIEZFQ29sb3JNYXRyaXg6OmNyZWF0ZShGRUNPTE9STUFUUklY
X1RZUEVfTUFUUklYLCBXVEZNb3ZlKGlucHV0UGFyYW1ldGVycykpOwogfQogCiBzdGF0aWMgUmVm
UHRyPFNWR0ZpbHRlcj4gY3JlYXRlU1ZHRmlsdGVyKENTU0ZpbHRlciYgZmlsdGVyLCBjb25zdCBS
ZWZlcmVuY2VGaWx0ZXJPcGVyYXRpb24mIGZpbHRlck9wZXJhdGlvbiwgUmVuZGVyRWxlbWVudCYg
cmVuZGVyZXIsIEZpbHRlckVmZmVjdCYgcHJldmlvdXNFZmZlY3QpCkBAIC0yNDksNDMgKzI0OSw0
MyBAQCBib29sIENTU0ZpbHRlcjo6YnVpbGQoUmVuZGVyRWxlbWVudCYgcmVuZGVyZXIsIGNvbnN0
IEZpbHRlck9wZXJhdGlvbnMmIG9wZXJhdGlvbgogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAg
ICAgICAgICAgCiAgICAgICAgIGNhc2UgRmlsdGVyT3BlcmF0aW9uOjpCTFVSOgotICAgICAgICAg
ICAgZWZmZWN0ID0gY3JlYXRlQmx1ckVmZmVjdCgqdGhpcywgZG93bmNhc3Q8Qmx1ckZpbHRlck9w
ZXJhdGlvbj4oKm9wZXJhdGlvbiksIGNvbnN1bWVyKTsKKyAgICAgICAgICAgIGVmZmVjdCA9IGNy
ZWF0ZUJsdXJFZmZlY3QoZG93bmNhc3Q8Qmx1ckZpbHRlck9wZXJhdGlvbj4oKm9wZXJhdGlvbiks
IGNvbnN1bWVyKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgCiAgICAgICAgIGNh
c2UgRmlsdGVyT3BlcmF0aW9uOjpCUklHSFRORVNTOgotICAgICAgICAgICAgZWZmZWN0ID0gY3Jl
YXRlQnJpZ2h0bmVzc0VmZmVjdCgqdGhpcywgZG93bmNhc3Q8QmFzaWNDb21wb25lbnRUcmFuc2Zl
ckZpbHRlck9wZXJhdGlvbj4oKm9wZXJhdGlvbikpOworICAgICAgICAgICAgZWZmZWN0ID0gY3Jl
YXRlQnJpZ2h0bmVzc0VmZmVjdChkb3duY2FzdDxCYXNpY0NvbXBvbmVudFRyYW5zZmVyRmlsdGVy
T3BlcmF0aW9uPigqb3BlcmF0aW9uKSk7CiAgICAgICAgICAgICBicmVhazsKIAogICAgICAgICBj
YXNlIEZpbHRlck9wZXJhdGlvbjo6Q09OVFJBU1Q6Ci0gICAgICAgICAgICBlZmZlY3QgPSBjcmVh
dGVDb250cmFzdEVmZmVjdCgqdGhpcywgZG93bmNhc3Q8QmFzaWNDb21wb25lbnRUcmFuc2ZlckZp
bHRlck9wZXJhdGlvbj4oKm9wZXJhdGlvbikpOworICAgICAgICAgICAgZWZmZWN0ID0gY3JlYXRl
Q29udHJhc3RFZmZlY3QoZG93bmNhc3Q8QmFzaWNDb21wb25lbnRUcmFuc2ZlckZpbHRlck9wZXJh
dGlvbj4oKm9wZXJhdGlvbikpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAKICAg
ICAgICAgY2FzZSBGaWx0ZXJPcGVyYXRpb246OkRST1BfU0hBRE9XOgotICAgICAgICAgICAgZWZm
ZWN0ID0gY3JlYXRlRHJvcFNoYWRvd0VmZmVjdCgqdGhpcywgZG93bmNhc3Q8RHJvcFNoYWRvd0Zp
bHRlck9wZXJhdGlvbj4oKm9wZXJhdGlvbikpOworICAgICAgICAgICAgZWZmZWN0ID0gY3JlYXRl
RHJvcFNoYWRvd0VmZmVjdChkb3duY2FzdDxEcm9wU2hhZG93RmlsdGVyT3BlcmF0aW9uPigqb3Bl
cmF0aW9uKSk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIAogICAgICAgICBjYXNl
IEZpbHRlck9wZXJhdGlvbjo6R1JBWVNDQUxFOgotICAgICAgICAgICAgZWZmZWN0ID0gY3JlYXRl
R3JheVNjYWxlRWZmZWN0KCp0aGlzLCBkb3duY2FzdDxCYXNpY0NvbG9yTWF0cml4RmlsdGVyT3Bl
cmF0aW9uPigqb3BlcmF0aW9uKSk7CisgICAgICAgICAgICBlZmZlY3QgPSBjcmVhdGVHcmF5U2Nh
bGVFZmZlY3QoZG93bmNhc3Q8QmFzaWNDb2xvck1hdHJpeEZpbHRlck9wZXJhdGlvbj4oKm9wZXJh
dGlvbikpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAKICAgICAgICAgY2FzZSBG
aWx0ZXJPcGVyYXRpb246OkhVRV9ST1RBVEU6Ci0gICAgICAgICAgICBlZmZlY3QgPSBjcmVhdGVI
dWVSb3RhdGVFZmZlY3QoKnRoaXMsIGRvd25jYXN0PEJhc2ljQ29sb3JNYXRyaXhGaWx0ZXJPcGVy
YXRpb24+KCpvcGVyYXRpb24pKTsKKyAgICAgICAgICAgIGVmZmVjdCA9IGNyZWF0ZUh1ZVJvdGF0
ZUVmZmVjdChkb3duY2FzdDxCYXNpY0NvbG9yTWF0cml4RmlsdGVyT3BlcmF0aW9uPigqb3BlcmF0
aW9uKSk7CiAgICAgICAgICAgICBicmVhazsKIAogICAgICAgICBjYXNlIEZpbHRlck9wZXJhdGlv
bjo6SU5WRVJUOgotICAgICAgICAgICAgZWZmZWN0ID0gY3JlYXRlSW52ZXJ0RWZmZWN0KCp0aGlz
LCBkb3duY2FzdDxCYXNpY0NvbXBvbmVudFRyYW5zZmVyRmlsdGVyT3BlcmF0aW9uPigqb3BlcmF0
aW9uKSk7CisgICAgICAgICAgICBlZmZlY3QgPSBjcmVhdGVJbnZlcnRFZmZlY3QoZG93bmNhc3Q8
QmFzaWNDb21wb25lbnRUcmFuc2ZlckZpbHRlck9wZXJhdGlvbj4oKm9wZXJhdGlvbikpOwogICAg
ICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAKICAgICAgICAgY2FzZSBGaWx0ZXJPcGVyYXRp
b246Ok9QQUNJVFk6Ci0gICAgICAgICAgICBlZmZlY3QgPSBjcmVhdGVPcGFjaXR5RWZmZWN0KCp0
aGlzLCBkb3duY2FzdDxCYXNpY0NvbXBvbmVudFRyYW5zZmVyRmlsdGVyT3BlcmF0aW9uPigqb3Bl
cmF0aW9uKSk7CisgICAgICAgICAgICBlZmZlY3QgPSBjcmVhdGVPcGFjaXR5RWZmZWN0KGRvd25j
YXN0PEJhc2ljQ29tcG9uZW50VHJhbnNmZXJGaWx0ZXJPcGVyYXRpb24+KCpvcGVyYXRpb24pKTsK
ICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgCiAgICAgICAgIGNhc2UgRmlsdGVyT3Bl
cmF0aW9uOjpTQVRVUkFURToKLSAgICAgICAgICAgIGVmZmVjdCA9IGNyZWF0ZVNhdHVyYXRlRWZm
ZWN0KCp0aGlzLCBkb3duY2FzdDxCYXNpY0NvbG9yTWF0cml4RmlsdGVyT3BlcmF0aW9uPigqb3Bl
cmF0aW9uKSk7CisgICAgICAgICAgICBlZmZlY3QgPSBjcmVhdGVTYXR1cmF0ZUVmZmVjdChkb3du
Y2FzdDxCYXNpY0NvbG9yTWF0cml4RmlsdGVyT3BlcmF0aW9uPigqb3BlcmF0aW9uKSk7CiAgICAg
ICAgICAgICBicmVhazsKICAgICAgICAgICAgIAogICAgICAgICBjYXNlIEZpbHRlck9wZXJhdGlv
bjo6U0VQSUE6Ci0gICAgICAgICAgICBlZmZlY3QgPSBjcmVhdGVTZXBpYUVmZmVjdCgqdGhpcywg
ZG93bmNhc3Q8QmFzaWNDb2xvck1hdHJpeEZpbHRlck9wZXJhdGlvbj4oKm9wZXJhdGlvbikpOwor
ICAgICAgICAgICAgZWZmZWN0ID0gY3JlYXRlU2VwaWFFZmZlY3QoZG93bmNhc3Q8QmFzaWNDb2xv
ck1hdHJpeEZpbHRlck9wZXJhdGlvbj4oKm9wZXJhdGlvbikpOwogICAgICAgICAgICAgYnJlYWs7
CiAgICAgICAgICAgICAgICAgCiAgICAgICAgIGNhc2UgRmlsdGVyT3BlcmF0aW9uOjpSRUZFUkVO
Q0U6CkBAIC0zMjIsNiArMzIyLDkgQEAgYm9vbCBDU1NGaWx0ZXI6OmJ1aWxkKFJlbmRlckVsZW1l
bnQmIHJlbmRlcmVyLCBjb25zdCBGaWx0ZXJPcGVyYXRpb25zJiBvcGVyYXRpb24KICAgICAvLyBU
aGlzIHdpbGwgc2V0IHRoZSBmaWx0ZXJQcmltaXRpdmVTdWJyZWdpb24gYW5kIG1heEVmZmVjdFJl
Y3QgZm9yIHRoZSBGaWx0ZXJFZmZlY3QgY2hhaW4uCiAgICAgZGV0ZXJtaW5lRmlsdGVyUHJpbWl0
aXZlU3VicmVnaW9uKCk7CiAKKyAgICAvLyBUaGlzIHdpbGwgc2V0IHRoZSBmaWx0ZXJQcmltaXRp
dmVTdWJyZWdpb24gYW5kIG1heEVmZmVjdFJlY3QgZm9yIHRoZSBGaWx0ZXJFZmZlY3QgY2hhaW4u
CisgICAgZGV0ZXJtaW5lRmlsdGVyUHJpbWl0aXZlU3VicmVnaW9uKCk7CisKICNpZiBVU0UoQ09S
RV9JTUFHRSkKICAgICBpZiAoIW1fZmlsdGVyUmVuZGVyZXIpCiAgICAgICAgIG1fZmlsdGVyUmVu
ZGVyZXIgPSBGaWx0ZXJFZmZlY3RSZW5kZXJlcjo6dHJ5Q3JlYXRlKHJlbmRlcmVyLnNldHRpbmdz
KCkuY29yZUltYWdlQWNjZWxlcmF0ZWRGaWx0ZXJSZW5kZXJFbmFibGVkKCksICpsYXN0RWZmZWN0
KCkpOwpAQCAtMzg1LDEzICszODgsMTMgQEAgUmVmUHRyPEZpbHRlckVmZmVjdD4gQ1NTRmlsdGVy
OjpsYXN0RWZmZWN0KCkKIHZvaWQgQ1NTRmlsdGVyOjpkZXRlcm1pbmVGaWx0ZXJQcmltaXRpdmVT
dWJyZWdpb24oKQogewogICAgIGF1dG8gZWZmZWN0ID0gbGFzdEVmZmVjdCgpOwotICAgIGVmZmVj
dC0+ZGV0ZXJtaW5lRmlsdGVyUHJpbWl0aXZlU3VicmVnaW9uKCk7CisgICAgZWZmZWN0LT5kZXRl
cm1pbmVGaWx0ZXJQcmltaXRpdmVTdWJyZWdpb24oKnRoaXMpOwogICAgIEZsb2F0UmVjdCBzdWJS
ZWdpb24gPSBlZmZlY3QtPm1heEVmZmVjdFJlY3QoKTsKICAgICAvLyBBdCBsZWFzdCBvbmUgRmls
dGVyRWZmZWN0IGhhcyBhIHRvbyBiaWcgaW1hZ2Ugc2l6ZSwgcmVjYWxjdWxhdGUgdGhlIGVmZmVj
dCBzaXplcyB3aXRoIG5ldyBzY2FsZSBmYWN0b3JzLgogICAgIEZsb2F0U2l6ZSBmaWx0ZXJTY2Fs
ZSB7IDEsIDEgfTsKICAgICBpZiAoSW1hZ2VCdWZmZXI6OnNpemVOZWVkc0NsYW1waW5nKHN1YlJl
Z2lvbi5zaXplKCksIGZpbHRlclNjYWxlKSkgewogICAgICAgICBzZXRGaWx0ZXJTY2FsZShmaWx0
ZXJTY2FsZSk7Ci0gICAgICAgIGVmZmVjdC0+ZGV0ZXJtaW5lRmlsdGVyUHJpbWl0aXZlU3VicmVn
aW9uKCk7CisgICAgICAgIGVmZmVjdC0+ZGV0ZXJtaW5lRmlsdGVyUHJpbWl0aXZlU3VicmVnaW9u
KCp0aGlzKTsKICAgICB9CiB9CiAKQEAgLTQwMiwxNyArNDA1LDIwIEBAIHZvaWQgQ1NTRmlsdGVy
OjpjbGVhckludGVybWVkaWF0ZVJlc3VsdHMoKQogICAgICAgICBmdW5jdGlvbi0+Y2xlYXJSZXN1
bHQoKTsKIH0KIAotdm9pZCBDU1NGaWx0ZXI6OmFwcGx5KCkKK3ZvaWQgQ1NTRmlsdGVyOjphcHBs
eUZpbHRlcigpCiB7CiAgICAgYXV0byBlZmZlY3QgPSBsYXN0RWZmZWN0KCk7CiAgICAgaWYgKG1f
ZmlsdGVyUmVuZGVyZXIpIHsKLSAgICAgICAgbV9maWx0ZXJSZW5kZXJlci0+YXBwbHlFZmZlY3Rz
KCplZmZlY3QpOworICAgICAgICBtX2ZpbHRlclJlbmRlcmVyLT5hcHBseUVmZmVjdHMoKnRoaXMs
ICplZmZlY3QpOwogICAgICAgICBpZiAobV9maWx0ZXJSZW5kZXJlci0+aGFzUmVzdWx0KCkpIHsK
ICAgICAgICAgICAgIGVmZmVjdC0+dHJhbnNmb3JtUmVzdWx0Q29sb3JTcGFjZShEZXN0aW5hdGlv
bkNvbG9yU3BhY2U6OlNSR0IoKSk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KICAg
ICB9Ci0gICAgZWZmZWN0LT5hcHBseSgpOworCisgICAgZm9yIChhdXRvJiBmdW5jdGlvbiA6IG1f
ZnVuY3Rpb25zKQorICAgICAgICBmdW5jdGlvbi0+YXBwbHkoKnRoaXMpOworCiAgICAgZWZmZWN0
LT50cmFuc2Zvcm1SZXN1bHRDb2xvclNwYWNlKERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQigp
KTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0NTU0ZpbHRlci5o
IGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0NTU0ZpbHRlci5oCmluZGV4IDRlMjI1MTQ4MDk4
Ni4uZWUzZGQ5ZmRmNjUxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvQ1NT
RmlsdGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0NTU0ZpbHRlci5oCkBAIC02
MCw3ICs2MCw3IEBAIHB1YmxpYzoKICAgICBJbnRPdXRzZXRzIG91dHNldHMoKSBjb25zdCBvdmVy
cmlkZTsKIAogICAgIHZvaWQgY2xlYXJJbnRlcm1lZGlhdGVSZXN1bHRzKCk7Ci0gICAgdm9pZCBh
cHBseSgpOworICAgIHZvaWQgYXBwbHlGaWx0ZXIoKSBvdmVycmlkZTsKIAogICAgIEltYWdlQnVm
ZmVyKiBvdXRwdXQoKTsKICAgICBJbnRSZWN0IG91dHB1dFJlY3QoKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllckZpbHRlcnMuY3BwIGIvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyRmlsdGVycy5jcHAKaW5kZXggMWFlOGM5ZDJiOGEy
Li5mZDQ3ZDcyOTdjZTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJMYXllckZpbHRlcnMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJM
YXllckZpbHRlcnMuY3BwCkBAIC0xNTQsOCArMTU0LDYgQEAgR3JhcGhpY3NDb250ZXh0KiBSZW5k
ZXJMYXllckZpbHRlcnM6OmJlZ2luRmlsdGVyRWZmZWN0KEdyYXBoaWNzQ29udGV4dCYgZGVzdGlu
YXQKICAgICBtX3BhaW50T2Zmc2V0ID0gZmlsdGVyU291cmNlUmVjdC5sb2NhdGlvbigpOwogICAg
IHJlc2V0RGlydHlTb3VyY2VSZWN0KCk7CiAKLSAgICBmaWx0ZXIuZGV0ZXJtaW5lRmlsdGVyUHJp
bWl0aXZlU3VicmVnaW9uKCk7Ci0KICAgICBmaWx0ZXIuYWxsb2NhdGVCYWNraW5nU3RvcmVJZk5l
ZWRlZChkZXN0aW5hdGlvbkNvbnRleHQpOwogICAgIGF1dG8qIHNvdXJjZUdyYXBoaWNzQ29udGV4
dCA9IGZpbHRlci5pbnB1dENvbnRleHQoKTsKICAgICBpZiAoIXNvdXJjZUdyYXBoaWNzQ29udGV4
dCB8fCBmaWx0ZXIuZmlsdGVyUmVnaW9uKCkuaXNFbXB0eSgpIHx8IEltYWdlQnVmZmVyOjpzaXpl
TmVlZHNDbGFtcGluZyhmaWx0ZXIuZmlsdGVyUmVnaW9uKCkuc2l6ZSgpKSkKQEAgLTE3OSw3ICsx
NzcsNyBAQCB2b2lkIFJlbmRlckxheWVyRmlsdGVyczo6YXBwbHlGaWx0ZXJFZmZlY3QoR3JhcGhp
Y3NDb250ZXh0JiBkZXN0aW5hdGlvbkNvbnRleHQpCiAgICAgYXV0byYgZmlsdGVyID0gKm1fZmls
dGVyOwogICAgIGZpbHRlci5pbnB1dENvbnRleHQoKS0+cmVzdG9yZSgpOwogCi0gICAgZmlsdGVy
LmFwcGx5KCk7CisgICAgZmlsdGVyLmFwcGx5RmlsdGVyKCk7CiAKICAgICAvLyBHZXQgdGhlIGZp
bHRlcmVkIG91dHB1dCBhbmQgZHJhdyBpdCBpbiBwbGFjZS4KICAgICBMYXlvdXRSZWN0IGRlc3RS
ZWN0ID0gZmlsdGVyLm91dHB1dFJlY3QoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VGaWx0ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZUZpbHRlci5jcHAKaW5kZXggMTBlN2I4ZmE4
NjMyLi5iZTZhZjczMzUyYTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9z
dmcvUmVuZGVyU1ZHUmVzb3VyY2VGaWx0ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VGaWx0ZXIuY3BwCkBAIC0xMzEsMTQgKzEzMSwxNCBA
QCBib29sIFJlbmRlclNWR1Jlc291cmNlRmlsdGVyOjphcHBseVJlc291cmNlKFJlbmRlckVsZW1l
bnQmIHJlbmRlcmVyLCBjb25zdCBSZW5kZQogCiAgICAgTE9HX1dJVEhfU1RSRUFNKEZpbHRlcnMs
IHN0cmVhbSA8PCAiUmVuZGVyU1ZHUmVzb3VyY2VGaWx0ZXI6OmFwcGx5UmVzb3VyY2VcbiIgPDwg
KmZpbHRlckRhdGEtPmJ1aWxkZXItPmxhc3RFZmZlY3QoKSk7CiAKLSAgICBsYXN0RWZmZWN0LT5k
ZXRlcm1pbmVGaWx0ZXJQcmltaXRpdmVTdWJyZWdpb24oKTsKKyAgICBsYXN0RWZmZWN0LT5kZXRl
cm1pbmVGaWx0ZXJQcmltaXRpdmVTdWJyZWdpb24oKmZpbHRlckRhdGEtPmZpbHRlcik7CiAgICAg
RmxvYXRSZWN0IHN1YlJlZ2lvbiA9IGxhc3RFZmZlY3QtPm1heEVmZmVjdFJlY3QoKTsKIAogICAg
IC8vIEF0IGxlYXN0IG9uZSBGaWx0ZXJFZmZlY3QgaGFzIGEgdG9vIGJpZyBpbWFnZSBzaXplLAog
ICAgIC8vIHJlY2FsY3VsYXRlIHRoZSBlZmZlY3Qgc2l6ZXMgd2l0aCBuZXcgc2NhbGUgZmFjdG9y
cy4KICAgICBpZiAoSW1hZ2VCdWZmZXI6OnNpemVOZWVkc0NsYW1waW5nKHN1YlJlZ2lvbi5zaXpl
KCksIGZpbHRlclNjYWxlKSkgewogICAgICAgICBmaWx0ZXJEYXRhLT5maWx0ZXItPnNldEZpbHRl
clNjYWxlKGZpbHRlclNjYWxlKTsKLSAgICAgICAgbGFzdEVmZmVjdC0+ZGV0ZXJtaW5lRmlsdGVy
UHJpbWl0aXZlU3VicmVnaW9uKCk7CisgICAgICAgIGxhc3RFZmZlY3QtPmRldGVybWluZUZpbHRl
clByaW1pdGl2ZVN1YnJlZ2lvbigqZmlsdGVyRGF0YS0+ZmlsdGVyKTsKICAgICB9CiAKICAgICAv
LyBJZiB0aGUgZHJhd2luZ1JlZ2lvbiBpcyBlbXB0eSwgd2UgaGF2ZSBzb21ldGhpbmcgbGlrZSA8
ZyBmaWx0ZXI9Ii4uIi8+LgpAQCAtMjI0LDcgKzIyNCw3IEBAIHZvaWQgUmVuZGVyU1ZHUmVzb3Vy
Y2VGaWx0ZXI6OnBvc3RBcHBseVJlc291cmNlKFJlbmRlckVsZW1lbnQmIHJlbmRlcmVyLCBHcmFw
aGljCiAgICAgICAgIGJyZWFrOwogICAgIH0KIAotICAgIEZpbHRlckVmZmVjdCogbGFzdEVmZmVj
dCA9IGZpbHRlckRhdGEuYnVpbGRlci0+bGFzdEVmZmVjdCgpOworICAgIGF1dG8gbGFzdEVmZmVj
dCA9IGZpbHRlckRhdGEuZmlsdGVyLT5sYXN0RWZmZWN0KCk7CiAKICAgICBpZiAobGFzdEVmZmVj
dCAmJiAhZmlsdGVyRGF0YS5ib3VuZGFyaWVzLmlzRW1wdHkoKSAmJiAhbGFzdEVmZmVjdC0+Zmls
dGVyUHJpbWl0aXZlU3VicmVnaW9uKCkuaXNFbXB0eSgpKSB7CiAgICAgICAgIC8vIFRoaXMgaXMg
dGhlIHJlYWwgZmlsdGVyaW5nIG9mIHRoZSBvYmplY3QuIEl0IGp1c3QgbmVlZHMgdG8gYmUgY2Fs
bGVkIG9uIHRoZQpAQCAtMjM2LDcgKzIzNiw3IEBAIHZvaWQgUmVuZGVyU1ZHUmVzb3VyY2VGaWx0
ZXI6OnBvc3RBcHBseVJlc291cmNlKFJlbmRlckVsZW1lbnQmIHJlbmRlcmVyLCBHcmFwaGljCiAg
ICAgICAgIC8vIEFsd2F5cyB0cnVlIGlmIGZpbHRlckRhdGEgaXMganVzdCBidWlsdCAoZmlsdGVy
RGF0YS0+c3RhdGUgPT0gRmlsdGVyRGF0YTo6QnVpbHQpLgogICAgICAgICBpZiAoIWxhc3RFZmZl
Y3QtPmhhc1Jlc3VsdCgpKSB7CiAgICAgICAgICAgICBmaWx0ZXJEYXRhLnN0YXRlID0gRmlsdGVy
RGF0YTo6QXBwbHlpbmc7Ci0gICAgICAgICAgICBsYXN0RWZmZWN0LT5hcHBseSgpOworICAgICAg
ICAgICAgbGFzdEVmZmVjdC0+YXBwbHkoKmZpbHRlckRhdGEuZmlsdGVyKTsKICAgICAgICAgICAg
IGxhc3RFZmZlY3QtPmNvcnJlY3RGaWx0ZXJSZXN1bHRJZk5lZWRlZCgpOwogICAgICAgICAgICAg
bGFzdEVmZmVjdC0+dHJhbnNmb3JtUmVzdWx0Q29sb3JTcGFjZShEZXN0aW5hdGlvbkNvbG9yU3Bh
Y2U6OlNSR0IoKSk7CiAgICAgICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9T
VkdGRUJsZW5kRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVCbGVuZEVsZW1l
bnQuY3BwCmluZGV4IDdiY2YwNDE4MDBmNy4uMDU0MGM4ZTQ0MDgyIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9zdmcvU1ZHRkVCbGVuZEVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3N2Zy9TVkdGRUJsZW5kRWxlbWVudC5jcHAKQEAgLTEwMCwxOSArMTAwLDE2IEBAIHZvaWQgU1ZH
RkVCbGVuZEVsZW1lbnQ6OnN2Z0F0dHJpYnV0ZUNoYW5nZWQoY29uc3QgUXVhbGlmaWVkTmFtZSYg
YXR0ck5hbWUpCiAgICAgU1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVzOjpzdmdB
dHRyaWJ1dGVDaGFuZ2VkKGF0dHJOYW1lKTsKIH0KIAotUmVmUHRyPEZpbHRlckVmZmVjdD4gU1ZH
RkVCbGVuZEVsZW1lbnQ6OmJ1aWxkKFNWR0ZpbHRlckJ1aWxkZXIqIGZpbHRlckJ1aWxkZXIsIEZp
bHRlciYgZmlsdGVyKSBjb25zdAorUmVmUHRyPEZpbHRlckVmZmVjdD4gU1ZHRkVCbGVuZEVsZW1l
bnQ6OmJ1aWxkKFNWR0ZpbHRlckJ1aWxkZXImIGZpbHRlckJ1aWxkZXIpIGNvbnN0CiB7Ci0gICAg
YXV0byBpbnB1dDEgPSBmaWx0ZXJCdWlsZGVyLT5nZXRFZmZlY3RCeUlkKGluMSgpKTsKLSAgICBh
dXRvIGlucHV0MiA9IGZpbHRlckJ1aWxkZXItPmdldEVmZmVjdEJ5SWQoaW4yKCkpOworICAgIGF1
dG8gaW5wdXQxID0gZmlsdGVyQnVpbGRlci5nZXRFZmZlY3RCeUlkKGluMSgpKTsKKyAgICBhdXRv
IGlucHV0MiA9IGZpbHRlckJ1aWxkZXIuZ2V0RWZmZWN0QnlJZChpbjIoKSk7CiAKICAgICBpZiAo
IWlucHV0MSB8fCAhaW5wdXQyKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAotICAgIGF1dG8g
ZWZmZWN0ID0gRkVCbGVuZDo6Y3JlYXRlKGZpbHRlciwgbW9kZSgpKTsKLSAgICBGaWx0ZXJFZmZl
Y3RWZWN0b3ImIGlucHV0RWZmZWN0cyA9IGVmZmVjdC0+aW5wdXRFZmZlY3RzKCk7Ci0gICAgaW5w
dXRFZmZlY3RzLnJlc2VydmVDYXBhY2l0eSgyKTsKLSAgICBpbnB1dEVmZmVjdHMuYXBwZW5kKGlu
cHV0MSk7Ci0gICAgaW5wdXRFZmZlY3RzLmFwcGVuZChpbnB1dDIpOyAgICAKKyAgICBhdXRvIGVm
ZmVjdCA9IEZFQmxlbmQ6OmNyZWF0ZShtb2RlKCkpOworICAgIGVmZmVjdC0+aW5wdXRFZmZlY3Rz
KCkgPSB7IFdURk1vdmUoaW5wdXQxKSwgV1RGTW92ZShpbnB1dDIpIH07CiAgICAgcmV0dXJuIGVm
ZmVjdDsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFQmxlbmRFbGVt
ZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVCbGVuZEVsZW1lbnQuaAppbmRleCA5MDM3
Y2IxMjFmOTMuLmViYTlhYmI1ODMyOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NW
R0ZFQmxlbmRFbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFQmxlbmRFbGVt
ZW50LmgKQEAgLTY5LDcgKzY5LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIHBhcnNlQXR0cmlidXRl
KGNvbnN0IFF1YWxpZmllZE5hbWUmLCBjb25zdCBBdG9tU3RyaW5nJikgb3ZlcnJpZGU7CiAgICAg
dm9pZCBzdmdBdHRyaWJ1dGVDaGFuZ2VkKGNvbnN0IFF1YWxpZmllZE5hbWUmKSBvdmVycmlkZTsK
IAotICAgIFJlZlB0cjxGaWx0ZXJFZmZlY3Q+IGJ1aWxkKFNWR0ZpbHRlckJ1aWxkZXIqLCBGaWx0
ZXImKSBjb25zdCBvdmVycmlkZTsKKyAgICBSZWZQdHI8RmlsdGVyRWZmZWN0PiBidWlsZChTVkdG
aWx0ZXJCdWlsZGVyJikgY29uc3Qgb3ZlcnJpZGU7CiAgICAgYm9vbCBzZXRGaWx0ZXJFZmZlY3RB
dHRyaWJ1dGUoRmlsdGVyRWZmZWN0KiwgY29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0ck5hbWUpIG92
ZXJyaWRlOwogCiAgICAgUHJvcGVydHlSZWdpc3RyeSBtX3Byb3BlcnR5UmVnaXN0cnkgeyAqdGhp
cyB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFQ29sb3JNYXRyaXhFbGVt
ZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRUNvbG9yTWF0cml4RWxlbWVudC5jcHAK
aW5kZXggMDUyNDg1NzhjMjc0Li5jZGViZWYxOGExZmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3N2Zy9TVkdGRUNvbG9yTWF0cml4RWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
c3ZnL1NWR0ZFQ29sb3JNYXRyaXhFbGVtZW50LmNwcApAQCAtMTAwLDkgKzEwMCw5IEBAIHZvaWQg
U1ZHRkVDb2xvck1hdHJpeEVsZW1lbnQ6OnN2Z0F0dHJpYnV0ZUNoYW5nZWQoY29uc3QgUXVhbGlm
aWVkTmFtZSYgYXR0ck5hbWUpCiAgICAgU1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1
dGVzOjpzdmdBdHRyaWJ1dGVDaGFuZ2VkKGF0dHJOYW1lKTsKIH0KIAotUmVmUHRyPEZpbHRlckVm
ZmVjdD4gU1ZHRkVDb2xvck1hdHJpeEVsZW1lbnQ6OmJ1aWxkKFNWR0ZpbHRlckJ1aWxkZXIqIGZp
bHRlckJ1aWxkZXIsIEZpbHRlciYgZmlsdGVyKSBjb25zdAorUmVmUHRyPEZpbHRlckVmZmVjdD4g
U1ZHRkVDb2xvck1hdHJpeEVsZW1lbnQ6OmJ1aWxkKFNWR0ZpbHRlckJ1aWxkZXImIGZpbHRlckJ1
aWxkZXIpIGNvbnN0CiB7Ci0gICAgYXV0byBpbnB1dDEgPSBmaWx0ZXJCdWlsZGVyLT5nZXRFZmZl
Y3RCeUlkKGluMSgpKTsKKyAgICBhdXRvIGlucHV0MSA9IGZpbHRlckJ1aWxkZXIuZ2V0RWZmZWN0
QnlJZChpbjEoKSk7CiAKICAgICBpZiAoIWlucHV0MSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7
CkBAIC0xNDEsOCArMTQxLDggQEAgUmVmUHRyPEZpbHRlckVmZmVjdD4gU1ZHRkVDb2xvck1hdHJp
eEVsZW1lbnQ6OmJ1aWxkKFNWR0ZpbHRlckJ1aWxkZXIqIGZpbHRlckJ1aWwKICAgICAgICAgZmls
dGVyVmFsdWVzLnNocmlua1RvRml0KCk7CiAgICAgfQogCi0gICAgYXV0byBlZmZlY3QgPSBGRUNv
bG9yTWF0cml4OjpjcmVhdGUoZmlsdGVyLCBmaWx0ZXJUeXBlLCBXVEZNb3ZlKGZpbHRlclZhbHVl
cykpOwotICAgIGVmZmVjdC0+aW5wdXRFZmZlY3RzKCkgPSB7IGlucHV0MSB9OworICAgIGF1dG8g
ZWZmZWN0ID0gRkVDb2xvck1hdHJpeDo6Y3JlYXRlKGZpbHRlclR5cGUsIFdURk1vdmUoZmlsdGVy
VmFsdWVzKSk7CisgICAgZWZmZWN0LT5pbnB1dEVmZmVjdHMoKSA9IHsgV1RGTW92ZShpbnB1dDEp
IH07CiAgICAgcmV0dXJuIGVmZmVjdDsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
c3ZnL1NWR0ZFQ29sb3JNYXRyaXhFbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVD
b2xvck1hdHJpeEVsZW1lbnQuaAppbmRleCA3YWI0YWE0MTgxZTcuLjk3MDExYTA0MWU0OSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFQ29sb3JNYXRyaXhFbGVtZW50LmgKKysr
IGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFQ29sb3JNYXRyaXhFbGVtZW50LmgKQEAgLTg2LDcg
Kzg2LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIHN2Z0F0dHJpYnV0ZUNoYW5nZWQoY29uc3QgUXVh
bGlmaWVkTmFtZSYpIG92ZXJyaWRlOwogCiAgICAgYm9vbCBzZXRGaWx0ZXJFZmZlY3RBdHRyaWJ1
dGUoRmlsdGVyRWZmZWN0KiwgY29uc3QgUXVhbGlmaWVkTmFtZSYpIG92ZXJyaWRlOwotICAgIFJl
ZlB0cjxGaWx0ZXJFZmZlY3Q+IGJ1aWxkKFNWR0ZpbHRlckJ1aWxkZXIqLCBGaWx0ZXImKSBjb25z
dCBvdmVycmlkZTsKKyAgICBSZWZQdHI8RmlsdGVyRWZmZWN0PiBidWlsZChTVkdGaWx0ZXJCdWls
ZGVyJikgY29uc3Qgb3ZlcnJpZGU7CiAKICAgICBQcm9wZXJ0eVJlZ2lzdHJ5IG1fcHJvcGVydHlS
ZWdpc3RyeSB7ICp0aGlzIH07CiAgICAgUmVmPFNWR0FuaW1hdGVkU3RyaW5nPiBtX2luMSB7IFNW
R0FuaW1hdGVkU3RyaW5nOjpjcmVhdGUodGhpcykgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3N2Zy9TVkdGRUNvbXBvbmVudFRyYW5zZmVyRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9zdmcvU1ZHRkVDb21wb25lbnRUcmFuc2ZlckVsZW1lbnQuY3BwCmluZGV4IDkwYTU1YjdlZmZm
Ny4uMjdkMTJiNWQwODgzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVDb21w
b25lbnRUcmFuc2ZlckVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRUNv
bXBvbmVudFRyYW5zZmVyRWxlbWVudC5jcHAKQEAgLTYzLDkgKzYzLDkgQEAgdm9pZCBTVkdGRUNv
bXBvbmVudFRyYW5zZmVyRWxlbWVudDo6cGFyc2VBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFt
ZSYgbmFtZSwgY28KICAgICBTVkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXM6OnBh
cnNlQXR0cmlidXRlKG5hbWUsIHZhbHVlKTsKIH0KIAotUmVmUHRyPEZpbHRlckVmZmVjdD4gU1ZH
RkVDb21wb25lbnRUcmFuc2ZlckVsZW1lbnQ6OmJ1aWxkKFNWR0ZpbHRlckJ1aWxkZXIqIGZpbHRl
ckJ1aWxkZXIsIEZpbHRlciYgZmlsdGVyKSBjb25zdAorUmVmUHRyPEZpbHRlckVmZmVjdD4gU1ZH
RkVDb21wb25lbnRUcmFuc2ZlckVsZW1lbnQ6OmJ1aWxkKFNWR0ZpbHRlckJ1aWxkZXImIGZpbHRl
ckJ1aWxkZXIpIGNvbnN0CiB7Ci0gICAgYXV0byBpbnB1dDEgPSBmaWx0ZXJCdWlsZGVyLT5nZXRF
ZmZlY3RCeUlkKGluMSgpKTsKKyAgICBhdXRvIGlucHV0MSA9IGZpbHRlckJ1aWxkZXIuZ2V0RWZm
ZWN0QnlJZChpbjEoKSk7CiAgICAgCiAgICAgaWYgKCFpbnB1dDEpCiAgICAgICAgIHJldHVybiBu
dWxscHRyOwpAQCAtODYsOCArODYsOCBAQCBSZWZQdHI8RmlsdGVyRWZmZWN0PiBTVkdGRUNvbXBv
bmVudFRyYW5zZmVyRWxlbWVudDo6YnVpbGQoU1ZHRmlsdGVyQnVpbGRlciogZmlsdAogICAgICAg
ICAgICAgYWxwaGEgPSBkb3duY2FzdDxTVkdGRUZ1bmNBRWxlbWVudD4oY2hpbGQpLnRyYW5zZmVy
RnVuY3Rpb24oKTsKICAgICB9CiAgICAgCi0gICAgYXV0byBlZmZlY3QgPSBGRUNvbXBvbmVudFRy
YW5zZmVyOjpjcmVhdGUoZmlsdGVyLCByZWQsIGdyZWVuLCBibHVlLCBhbHBoYSk7Ci0gICAgZWZm
ZWN0LT5pbnB1dEVmZmVjdHMoKSA9IHsgaW5wdXQxIH07CisgICAgYXV0byBlZmZlY3QgPSBGRUNv
bXBvbmVudFRyYW5zZmVyOjpjcmVhdGUocmVkLCBncmVlbiwgYmx1ZSwgYWxwaGEpOworICAgIGVm
ZmVjdC0+aW5wdXRFZmZlY3RzKCkgPSB7IFdURk1vdmUoaW5wdXQxKSB9OwogICAgIHJldHVybiBl
ZmZlY3Q7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRUNvbXBvbmVu
dFRyYW5zZmVyRWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFQ29tcG9uZW50VHJh
bnNmZXJFbGVtZW50LmgKaW5kZXggYmI1ODkzNDdkODgyLi42MDE3MTBmN2QzNTMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRUNvbXBvbmVudFRyYW5zZmVyRWxlbWVudC5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRUNvbXBvbmVudFRyYW5zZmVyRWxlbWVudC5oCkBA
IC00Myw3ICs0Myw3IEBAIHByaXZhdGU6CiAgICAgLy8gRklYTUU6IHN2Z0F0dHJpYnV0ZUNoYW5n
ZWQgbWlzc2luZy4KICAgICB2b2lkIHBhcnNlQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUm
LCBjb25zdCBBdG9tU3RyaW5nJikgb3ZlcnJpZGU7CiAKLSAgICBSZWZQdHI8RmlsdGVyRWZmZWN0
PiBidWlsZChTVkdGaWx0ZXJCdWlsZGVyKiwgRmlsdGVyJikgY29uc3Qgb3ZlcnJpZGU7CisgICAg
UmVmUHRyPEZpbHRlckVmZmVjdD4gYnVpbGQoU1ZHRmlsdGVyQnVpbGRlciYpIGNvbnN0IG92ZXJy
aWRlOwogCiAgICAgUHJvcGVydHlSZWdpc3RyeSBtX3Byb3BlcnR5UmVnaXN0cnkgeyAqdGhpcyB9
OwogICAgIFJlZjxTVkdBbmltYXRlZFN0cmluZz4gbV9pbjEgeyBTVkdBbmltYXRlZFN0cmluZzo6
Y3JlYXRlKHRoaXMpIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVDb21w
b3NpdGVFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRUNvbXBvc2l0ZUVsZW1l
bnQuY3BwCmluZGV4IDNjYTk5Yjg3NTcwOC4uN2ZjZWQyZTY0NTU0IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9zdmcvU1ZHRkVDb21wb3NpdGVFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9zdmcvU1ZHRkVDb21wb3NpdGVFbGVtZW50LmNwcApAQCAtMTMxLDE5ICsxMzEsMTYgQEAg
dm9pZCBTVkdGRUNvbXBvc2l0ZUVsZW1lbnQ6OnN2Z0F0dHJpYnV0ZUNoYW5nZWQoY29uc3QgUXVh
bGlmaWVkTmFtZSYgYXR0ck5hbWUpCiAgICAgU1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRy
aWJ1dGVzOjpzdmdBdHRyaWJ1dGVDaGFuZ2VkKGF0dHJOYW1lKTsKIH0KIAotUmVmUHRyPEZpbHRl
ckVmZmVjdD4gU1ZHRkVDb21wb3NpdGVFbGVtZW50OjpidWlsZChTVkdGaWx0ZXJCdWlsZGVyKiBm
aWx0ZXJCdWlsZGVyLCBGaWx0ZXImIGZpbHRlcikgY29uc3QKK1JlZlB0cjxGaWx0ZXJFZmZlY3Q+
IFNWR0ZFQ29tcG9zaXRlRWxlbWVudDo6YnVpbGQoU1ZHRmlsdGVyQnVpbGRlciYgZmlsdGVyQnVp
bGRlcikgY29uc3QKIHsKLSAgICBhdXRvIGlucHV0MSA9IGZpbHRlckJ1aWxkZXItPmdldEVmZmVj
dEJ5SWQoaW4xKCkpOwotICAgIGF1dG8gaW5wdXQyID0gZmlsdGVyQnVpbGRlci0+Z2V0RWZmZWN0
QnlJZChpbjIoKSk7CisgICAgYXV0byBpbnB1dDEgPSBmaWx0ZXJCdWlsZGVyLmdldEVmZmVjdEJ5
SWQoaW4xKCkpOworICAgIGF1dG8gaW5wdXQyID0gZmlsdGVyQnVpbGRlci5nZXRFZmZlY3RCeUlk
KGluMigpKTsKICAgICAKICAgICBpZiAoIWlucHV0MSB8fCAhaW5wdXQyKQogICAgICAgICByZXR1
cm4gbnVsbHB0cjsKIAotICAgIGF1dG8gZWZmZWN0ID0gRkVDb21wb3NpdGU6OmNyZWF0ZShmaWx0
ZXIsIHN2Z09wZXJhdG9yKCksIGsxKCksIGsyKCksIGszKCksIGs0KCkpOwotICAgIEZpbHRlckVm
ZmVjdFZlY3RvciYgaW5wdXRFZmZlY3RzID0gZWZmZWN0LT5pbnB1dEVmZmVjdHMoKTsKLSAgICBp
bnB1dEVmZmVjdHMucmVzZXJ2ZUNhcGFjaXR5KDIpOwotICAgIGlucHV0RWZmZWN0cy5hcHBlbmQo
aW5wdXQxKTsKLSAgICBpbnB1dEVmZmVjdHMuYXBwZW5kKGlucHV0Mik7ICAgIAorICAgIGF1dG8g
ZWZmZWN0ID0gRkVDb21wb3NpdGU6OmNyZWF0ZShzdmdPcGVyYXRvcigpLCBrMSgpLCBrMigpLCBr
MygpLCBrNCgpKTsKKyAgICBlZmZlY3QtPmlucHV0RWZmZWN0cygpID0geyBXVEZNb3ZlKGlucHV0
MSksIFdURk1vdmUoaW5wdXQyKSB9OwogICAgIHJldHVybiBlZmZlY3Q7CiB9CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRUNvbXBvc2l0ZUVsZW1lbnQuaCBiL1NvdXJjZS9X
ZWJDb3JlL3N2Zy9TVkdGRUNvbXBvc2l0ZUVsZW1lbnQuaAppbmRleCA4MWE3OGM4NjU3YTAuLjc0
ZDgxNGMzYzIwZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFQ29tcG9zaXRl
RWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRUNvbXBvc2l0ZUVsZW1lbnQu
aApAQCAtMTA5LDcgKzEwOSw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBzdmdBdHRyaWJ1dGVDaGFu
Z2VkKGNvbnN0IFF1YWxpZmllZE5hbWUmKSBvdmVycmlkZTsKIAogICAgIGJvb2wgc2V0RmlsdGVy
RWZmZWN0QXR0cmlidXRlKEZpbHRlckVmZmVjdCosIGNvbnN0IFF1YWxpZmllZE5hbWUmKSBvdmVy
cmlkZTsKLSAgICBSZWZQdHI8RmlsdGVyRWZmZWN0PiBidWlsZChTVkdGaWx0ZXJCdWlsZGVyKiwg
RmlsdGVyJikgY29uc3Qgb3ZlcnJpZGU7CisgICAgUmVmUHRyPEZpbHRlckVmZmVjdD4gYnVpbGQo
U1ZHRmlsdGVyQnVpbGRlciYpIGNvbnN0IG92ZXJyaWRlOwogCiAgICAgUHJvcGVydHlSZWdpc3Ry
eSBtX3Byb3BlcnR5UmVnaXN0cnkgeyAqdGhpcyB9OwogICAgIFJlZjxTVkdBbmltYXRlZFN0cmlu
Zz4gbV9pbjEgeyBTVkdBbmltYXRlZFN0cmluZzo6Y3JlYXRlKHRoaXMpIH07CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVDb252b2x2ZU1hdHJpeEVsZW1lbnQuY3BwIGIvU291
cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFQ29udm9sdmVNYXRyaXhFbGVtZW50LmNwcAppbmRleCBmNzUw
NTgxNWRlY2EuLjFhODEzNGE5YzhiNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NW
R0ZFQ29udm9sdmVNYXRyaXhFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZH
RkVDb252b2x2ZU1hdHJpeEVsZW1lbnQuY3BwCkBAIC0xOTEsOSArMTkxLDkgQEAgdm9pZCBTVkdG
RUNvbnZvbHZlTWF0cml4RWxlbWVudDo6c3ZnQXR0cmlidXRlQ2hhbmdlZChjb25zdCBRdWFsaWZp
ZWROYW1lJiBhdHRyTmEKICAgICBTVkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXM6
OnN2Z0F0dHJpYnV0ZUNoYW5nZWQoYXR0ck5hbWUpOwogfQogCi1SZWZQdHI8RmlsdGVyRWZmZWN0
PiBTVkdGRUNvbnZvbHZlTWF0cml4RWxlbWVudDo6YnVpbGQoU1ZHRmlsdGVyQnVpbGRlciogZmls
dGVyQnVpbGRlciwgRmlsdGVyJiBmaWx0ZXIpIGNvbnN0CitSZWZQdHI8RmlsdGVyRWZmZWN0PiBT
VkdGRUNvbnZvbHZlTWF0cml4RWxlbWVudDo6YnVpbGQoU1ZHRmlsdGVyQnVpbGRlciYgZmlsdGVy
QnVpbGRlcikgY29uc3QKIHsKLSAgICBhdXRvIGlucHV0MSA9IGZpbHRlckJ1aWxkZXItPmdldEVm
ZmVjdEJ5SWQoaW4xKCkpOworICAgIGF1dG8gaW5wdXQxID0gZmlsdGVyQnVpbGRlci5nZXRFZmZl
Y3RCeUlkKGluMSgpKTsKIAogICAgIGlmICghaW5wdXQxKQogICAgICAgICByZXR1cm4gbnVsbHB0
cjsKQEAgLTI0Niw4ICsyNDYsOCBAQCBSZWZQdHI8RmlsdGVyRWZmZWN0PiBTVkdGRUNvbnZvbHZl
TWF0cml4RWxlbWVudDo6YnVpbGQoU1ZHRmlsdGVyQnVpbGRlciogZmlsdGVyQgogICAgICAgICAg
ICAgZGl2aXNvclZhbHVlID0gMTsKICAgICB9CiAKLSAgICBhdXRvIGVmZmVjdCA9IEZFQ29udm9s
dmVNYXRyaXg6OmNyZWF0ZShmaWx0ZXIsIEludFNpemUob3JkZXJYVmFsdWUsIG9yZGVyWVZhbHVl
KSwgZGl2aXNvclZhbHVlLCBiaWFzKCksIEludFBvaW50KHRhcmdldFhWYWx1ZSwgdGFyZ2V0WVZh
bHVlKSwgZWRnZU1vZGUoKSwgRmxvYXRQb2ludChrZXJuZWxVbml0TGVuZ3RoWFZhbHVlLCBrZXJu
ZWxVbml0TGVuZ3RoWVZhbHVlKSwgcHJlc2VydmVBbHBoYSgpLCBrZXJuZWxNYXRyaXgpOwotICAg
IGVmZmVjdC0+aW5wdXRFZmZlY3RzKCkgPSB7IGlucHV0MSB9OworICAgIGF1dG8gZWZmZWN0ID0g
RkVDb252b2x2ZU1hdHJpeDo6Y3JlYXRlKEludFNpemUob3JkZXJYVmFsdWUsIG9yZGVyWVZhbHVl
KSwgZGl2aXNvclZhbHVlLCBiaWFzKCksIEludFBvaW50KHRhcmdldFhWYWx1ZSwgdGFyZ2V0WVZh
bHVlKSwgZWRnZU1vZGUoKSwgRmxvYXRQb2ludChrZXJuZWxVbml0TGVuZ3RoWFZhbHVlLCBrZXJu
ZWxVbml0TGVuZ3RoWVZhbHVlKSwgcHJlc2VydmVBbHBoYSgpLCBrZXJuZWxNYXRyaXgpOworICAg
IGVmZmVjdC0+aW5wdXRFZmZlY3RzKCkgPSB7IFdURk1vdmUoaW5wdXQxKSB9OwogICAgIHJldHVy
biBlZmZlY3Q7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRUNvbnZv
bHZlTWF0cml4RWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFQ29udm9sdmVNYXRy
aXhFbGVtZW50LmgKaW5kZXggODVjMDAyNjk4YzYyLi4xYjZiYmU0ODcxMjcgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRUNvbnZvbHZlTWF0cml4RWxlbWVudC5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3N2Zy9TVkdGRUNvbnZvbHZlTWF0cml4RWxlbWVudC5oCkBAIC0xMDMsNyAr
MTAzLDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIHN2Z0F0dHJpYnV0ZUNoYW5nZWQoY29uc3QgUXVh
bGlmaWVkTmFtZSYpIG92ZXJyaWRlOwogCiAgICAgYm9vbCBzZXRGaWx0ZXJFZmZlY3RBdHRyaWJ1
dGUoRmlsdGVyRWZmZWN0KiwgY29uc3QgUXVhbGlmaWVkTmFtZSYpIG92ZXJyaWRlOwotICAgIFJl
ZlB0cjxGaWx0ZXJFZmZlY3Q+IGJ1aWxkKFNWR0ZpbHRlckJ1aWxkZXIqLCBGaWx0ZXImKSBjb25z
dCBvdmVycmlkZTsKKyAgICBSZWZQdHI8RmlsdGVyRWZmZWN0PiBidWlsZChTVkdGaWx0ZXJCdWls
ZGVyJikgY29uc3Qgb3ZlcnJpZGU7CiAKICAgICBQcm9wZXJ0eVJlZ2lzdHJ5IG1fcHJvcGVydHlS
ZWdpc3RyeSB7ICp0aGlzIH07CiAgICAgUmVmPFNWR0FuaW1hdGVkU3RyaW5nPiBtX2luMSB7IFNW
R0FuaW1hdGVkU3RyaW5nOjpjcmVhdGUodGhpcykgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3N2Zy9TVkdGRURpZmZ1c2VMaWdodGluZ0VsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUv
c3ZnL1NWR0ZFRGlmZnVzZUxpZ2h0aW5nRWxlbWVudC5jcHAKaW5kZXggMTUyYzk4NWZkOGU5Li5k
ZDM5NDU5NWNmNzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRURpZmZ1c2VM
aWdodGluZ0VsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRURpZmZ1c2VM
aWdodGluZ0VsZW1lbnQuY3BwCkBAIC0xNTEsOSArMTUxLDkgQEAgdm9pZCBTVkdGRURpZmZ1c2VM
aWdodGluZ0VsZW1lbnQ6OmxpZ2h0RWxlbWVudEF0dHJpYnV0ZUNoYW5nZWQoY29uc3QgU1ZHRkVM
aWdodEUKICAgICBwcmltaXRpdmVBdHRyaWJ1dGVDaGFuZ2VkKGF0dHJOYW1lKTsKIH0KIAotUmVm
UHRyPEZpbHRlckVmZmVjdD4gU1ZHRkVEaWZmdXNlTGlnaHRpbmdFbGVtZW50OjpidWlsZChTVkdG
aWx0ZXJCdWlsZGVyKiBmaWx0ZXJCdWlsZGVyLCBGaWx0ZXImIGZpbHRlcikgY29uc3QKK1JlZlB0
cjxGaWx0ZXJFZmZlY3Q+IFNWR0ZFRGlmZnVzZUxpZ2h0aW5nRWxlbWVudDo6YnVpbGQoU1ZHRmls
dGVyQnVpbGRlciYgZmlsdGVyQnVpbGRlcikgY29uc3QKIHsKLSAgICBhdXRvIGlucHV0MSA9IGZp
bHRlckJ1aWxkZXItPmdldEVmZmVjdEJ5SWQoaW4xKCkpOworICAgIGF1dG8gaW5wdXQxID0gZmls
dGVyQnVpbGRlci5nZXRFZmZlY3RCeUlkKGluMSgpKTsKIAogICAgIGlmICghaW5wdXQxKQogICAg
ICAgICByZXR1cm4gbnVsbHB0cjsKQEAgLTE2Miw3ICsxNjIsNyBAQCBSZWZQdHI8RmlsdGVyRWZm
ZWN0PiBTVkdGRURpZmZ1c2VMaWdodGluZ0VsZW1lbnQ6OmJ1aWxkKFNWR0ZpbHRlckJ1aWxkZXIq
IGZpbHRlcgogICAgIGlmICghbGlnaHRFbGVtZW50KQogICAgICAgICByZXR1cm4gbnVsbHB0cjsK
ICAgICAKLSAgICBhdXRvIGxpZ2h0U291cmNlID0gbGlnaHRFbGVtZW50LT5saWdodFNvdXJjZSgq
ZmlsdGVyQnVpbGRlcik7CisgICAgYXV0byBsaWdodFNvdXJjZSA9IGxpZ2h0RWxlbWVudC0+bGln
aHRTb3VyY2UoZmlsdGVyQnVpbGRlcik7CiAKICAgICBSZW5kZXJPYmplY3QqIHJlbmRlcmVyID0g
dGhpcy0+cmVuZGVyZXIoKTsKICAgICBpZiAoIXJlbmRlcmVyKQpAQCAtMTcwLDggKzE3MCw4IEBA
IFJlZlB0cjxGaWx0ZXJFZmZlY3Q+IFNWR0ZFRGlmZnVzZUxpZ2h0aW5nRWxlbWVudDo6YnVpbGQo
U1ZHRmlsdGVyQnVpbGRlciogZmlsdGVyCiAKICAgICBDb2xvciBjb2xvciA9IHJlbmRlcmVyLT5z
dHlsZSgpLmNvbG9yQnlBcHBseWluZ0NvbG9yRmlsdGVyKHJlbmRlcmVyLT5zdHlsZSgpLnN2Z1N0
eWxlKCkubGlnaHRpbmdDb2xvcigpKTsKIAotICAgIGF1dG8gZWZmZWN0ID0gRkVEaWZmdXNlTGln
aHRpbmc6OmNyZWF0ZShmaWx0ZXIsIGNvbG9yLCBzdXJmYWNlU2NhbGUoKSwgZGlmZnVzZUNvbnN0
YW50KCksIGtlcm5lbFVuaXRMZW5ndGhYKCksIGtlcm5lbFVuaXRMZW5ndGhZKCksIFdURk1vdmUo
bGlnaHRTb3VyY2UpKTsKLSAgICBlZmZlY3QtPmlucHV0RWZmZWN0cygpID0geyBpbnB1dDEgfTsK
KyAgICBhdXRvIGVmZmVjdCA9IEZFRGlmZnVzZUxpZ2h0aW5nOjpjcmVhdGUoY29sb3IsIHN1cmZh
Y2VTY2FsZSgpLCBkaWZmdXNlQ29uc3RhbnQoKSwga2VybmVsVW5pdExlbmd0aFgoKSwga2VybmVs
VW5pdExlbmd0aFkoKSwgV1RGTW92ZShsaWdodFNvdXJjZSkpOworICAgIGVmZmVjdC0+aW5wdXRF
ZmZlY3RzKCkgPSB7IFdURk1vdmUoaW5wdXQxKSB9OwogICAgIHJldHVybiBlZmZlY3Q7CiB9CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRURpZmZ1c2VMaWdodGluZ0VsZW1l
bnQuaCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRURpZmZ1c2VMaWdodGluZ0VsZW1lbnQuaApp
bmRleCA2ODk5OTYwOWY0YjYuLmIyYWFjOGIwM2VkMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvc3ZnL1NWR0ZFRGlmZnVzZUxpZ2h0aW5nRWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3N2Zy9TVkdGRURpZmZ1c2VMaWdodGluZ0VsZW1lbnQuaApAQCAtNTgsNyArNTgsNyBAQCBwcml2
YXRlOgogICAgIHZvaWQgc3ZnQXR0cmlidXRlQ2hhbmdlZChjb25zdCBRdWFsaWZpZWROYW1lJikg
b3ZlcnJpZGU7CiAKICAgICBib29sIHNldEZpbHRlckVmZmVjdEF0dHJpYnV0ZShGaWx0ZXJFZmZl
Y3QqLCBjb25zdCBRdWFsaWZpZWROYW1lJikgb3ZlcnJpZGU7Ci0gICAgUmVmUHRyPEZpbHRlckVm
ZmVjdD4gYnVpbGQoU1ZHRmlsdGVyQnVpbGRlciosIEZpbHRlciYpIGNvbnN0IG92ZXJyaWRlOwor
ICAgIFJlZlB0cjxGaWx0ZXJFZmZlY3Q+IGJ1aWxkKFNWR0ZpbHRlckJ1aWxkZXImKSBjb25zdCBv
dmVycmlkZTsKIAogICAgIFByb3BlcnR5UmVnaXN0cnkgbV9wcm9wZXJ0eVJlZ2lzdHJ5IHsgKnRo
aXMgfTsKICAgICBSZWY8U1ZHQW5pbWF0ZWRTdHJpbmc+IG1faW4xIHsgU1ZHQW5pbWF0ZWRTdHJp
bmc6OmNyZWF0ZSh0aGlzKSB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZF
RGlzcGxhY2VtZW50TWFwRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVEaXNw
bGFjZW1lbnRNYXBFbGVtZW50LmNwcAppbmRleCAwYzVlODI1YmM4MjUuLjY5MDc1MTM3NTA3ZCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFRGlzcGxhY2VtZW50TWFwRWxlbWVu
dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFRGlzcGxhY2VtZW50TWFwRWxlbWVu
dC5jcHAKQEAgLTExNSwxOSArMTE1LDE2IEBAIHZvaWQgU1ZHRkVEaXNwbGFjZW1lbnRNYXBFbGVt
ZW50OjpzdmdBdHRyaWJ1dGVDaGFuZ2VkKGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0dHJOCiAgICAg
U1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVzOjpzdmdBdHRyaWJ1dGVDaGFuZ2Vk
KGF0dHJOYW1lKTsKIH0KIAotUmVmUHRyPEZpbHRlckVmZmVjdD4gU1ZHRkVEaXNwbGFjZW1lbnRN
YXBFbGVtZW50OjpidWlsZChTVkdGaWx0ZXJCdWlsZGVyKiBmaWx0ZXJCdWlsZGVyLCBGaWx0ZXIm
IGZpbHRlcikgY29uc3QKK1JlZlB0cjxGaWx0ZXJFZmZlY3Q+IFNWR0ZFRGlzcGxhY2VtZW50TWFw
RWxlbWVudDo6YnVpbGQoU1ZHRmlsdGVyQnVpbGRlciYgZmlsdGVyQnVpbGRlcikgY29uc3QKIHsK
LSAgICBhdXRvIGlucHV0MSA9IGZpbHRlckJ1aWxkZXItPmdldEVmZmVjdEJ5SWQoaW4xKCkpOwot
ICAgIGF1dG8gaW5wdXQyID0gZmlsdGVyQnVpbGRlci0+Z2V0RWZmZWN0QnlJZChpbjIoKSk7Cisg
ICAgYXV0byBpbnB1dDEgPSBmaWx0ZXJCdWlsZGVyLmdldEVmZmVjdEJ5SWQoaW4xKCkpOworICAg
IGF1dG8gaW5wdXQyID0gZmlsdGVyQnVpbGRlci5nZXRFZmZlY3RCeUlkKGluMigpKTsKICAgICAK
ICAgICBpZiAoIWlucHV0MSB8fCAhaW5wdXQyKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAot
ICAgIGF1dG8gZWZmZWN0ID0gRkVEaXNwbGFjZW1lbnRNYXA6OmNyZWF0ZShmaWx0ZXIsIHhDaGFu
bmVsU2VsZWN0b3IoKSwgeUNoYW5uZWxTZWxlY3RvcigpLCBzY2FsZSgpKTsKLSAgICBGaWx0ZXJF
ZmZlY3RWZWN0b3ImIGlucHV0RWZmZWN0cyA9IGVmZmVjdC0+aW5wdXRFZmZlY3RzKCk7Ci0gICAg
aW5wdXRFZmZlY3RzLnJlc2VydmVDYXBhY2l0eSgyKTsKLSAgICBpbnB1dEVmZmVjdHMuYXBwZW5k
KGlucHV0MSk7Ci0gICAgaW5wdXRFZmZlY3RzLmFwcGVuZChpbnB1dDIpOyAgICAKKyAgICBhdXRv
IGVmZmVjdCA9IEZFRGlzcGxhY2VtZW50TWFwOjpjcmVhdGUoeENoYW5uZWxTZWxlY3RvcigpLCB5
Q2hhbm5lbFNlbGVjdG9yKCksIHNjYWxlKCkpOworICAgIGVmZmVjdC0+aW5wdXRFZmZlY3RzKCkg
PSB7IFdURk1vdmUoaW5wdXQxKSwgV1RGTW92ZShpbnB1dDIpIH07CiAgICAgcmV0dXJuIGVmZmVj
dDsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFRGlzcGxhY2VtZW50
TWFwRWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFRGlzcGxhY2VtZW50TWFwRWxl
bWVudC5oCmluZGV4IGFhOTFkZjM4YjM2Mi4uZjJjNmQwYjE4Zjg1IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9zdmcvU1ZHRkVEaXNwbGFjZW1lbnRNYXBFbGVtZW50LmgKKysrIGIvU291cmNl
L1dlYkNvcmUvc3ZnL1NWR0ZFRGlzcGxhY2VtZW50TWFwRWxlbWVudC5oCkBAIC05MSw3ICs5MSw3
IEBAIHByaXZhdGU6CiAgICAgdm9pZCBzdmdBdHRyaWJ1dGVDaGFuZ2VkKGNvbnN0IFF1YWxpZmll
ZE5hbWUmKSBvdmVycmlkZTsKIAogICAgIGJvb2wgc2V0RmlsdGVyRWZmZWN0QXR0cmlidXRlKEZp
bHRlckVmZmVjdCosIGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0dHJOYW1lKSBvdmVycmlkZTsKLSAg
ICBSZWZQdHI8RmlsdGVyRWZmZWN0PiBidWlsZChTVkdGaWx0ZXJCdWlsZGVyKiwgRmlsdGVyJikg
Y29uc3Qgb3ZlcnJpZGU7CisgICAgUmVmUHRyPEZpbHRlckVmZmVjdD4gYnVpbGQoU1ZHRmlsdGVy
QnVpbGRlciYpIGNvbnN0IG92ZXJyaWRlOwogCiAgICAgUHJvcGVydHlSZWdpc3RyeSBtX3Byb3Bl
cnR5UmVnaXN0cnkgeyAqdGhpcyB9OwogICAgIFJlZjxTVkdBbmltYXRlZFN0cmluZz4gbV9pbjEg
eyBTVkdBbmltYXRlZFN0cmluZzo6Y3JlYXRlKHRoaXMpIH07CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9zdmcvU1ZHRkVEcm9wU2hhZG93RWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9z
dmcvU1ZHRkVEcm9wU2hhZG93RWxlbWVudC5jcHAKaW5kZXggMjJiY2UxZDMzMzE3Li5iZDYxYzI3
NGUxNTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRURyb3BTaGFkb3dFbGVt
ZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVEcm9wU2hhZG93RWxlbWVudC5j
cHAKQEAgLTk3LDcgKzk3LDcgQEAgdm9pZCBTVkdGRURyb3BTaGFkb3dFbGVtZW50OjpzdmdBdHRy
aWJ1dGVDaGFuZ2VkKGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0dHJOYW1lKQogICAgIFNWR0ZpbHRl
clByaW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlczo6c3ZnQXR0cmlidXRlQ2hhbmdlZChhdHRyTmFt
ZSk7CiB9CiAKLVJlZlB0cjxGaWx0ZXJFZmZlY3Q+IFNWR0ZFRHJvcFNoYWRvd0VsZW1lbnQ6OmJ1
aWxkKFNWR0ZpbHRlckJ1aWxkZXIqIGZpbHRlckJ1aWxkZXIsIEZpbHRlciYgZmlsdGVyKSBjb25z
dAorUmVmUHRyPEZpbHRlckVmZmVjdD4gU1ZHRkVEcm9wU2hhZG93RWxlbWVudDo6YnVpbGQoU1ZH
RmlsdGVyQnVpbGRlciYgZmlsdGVyQnVpbGRlcikgY29uc3QKIHsKICAgICBSZW5kZXJPYmplY3Qq
IHJlbmRlcmVyID0gdGhpcy0+cmVuZGVyZXIoKTsKICAgICBpZiAoIXJlbmRlcmVyKQpAQCAtMTEx
LDEyICsxMTEsMTIgQEAgUmVmUHRyPEZpbHRlckVmZmVjdD4gU1ZHRkVEcm9wU2hhZG93RWxlbWVu
dDo6YnVpbGQoU1ZHRmlsdGVyQnVpbGRlciogZmlsdGVyQnVpbGQKICAgICBDb2xvciBjb2xvciA9
IHJlbmRlcmVyLT5zdHlsZSgpLmNvbG9yQnlBcHBseWluZ0NvbG9yRmlsdGVyKHN2Z1N0eWxlLmZs
b29kQ29sb3IoKSk7CiAgICAgZmxvYXQgb3BhY2l0eSA9IHN2Z1N0eWxlLmZsb29kT3BhY2l0eSgp
OwogCi0gICAgYXV0byBpbnB1dDEgPSBmaWx0ZXJCdWlsZGVyLT5nZXRFZmZlY3RCeUlkKGluMSgp
KTsKKyAgICBhdXRvIGlucHV0MSA9IGZpbHRlckJ1aWxkZXIuZ2V0RWZmZWN0QnlJZChpbjEoKSk7
CiAgICAgaWYgKCFpbnB1dDEpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCi0gICAgYXV0byBl
ZmZlY3QgPSBGRURyb3BTaGFkb3c6OmNyZWF0ZShmaWx0ZXIsIHN0ZERldmlhdGlvblgoKSwgc3Rk
RGV2aWF0aW9uWSgpLCBkeCgpLCBkeSgpLCBjb2xvciwgb3BhY2l0eSk7Ci0gICAgZWZmZWN0LT5p
bnB1dEVmZmVjdHMoKSA9IHsgaW5wdXQxIH07CisgICAgYXV0byBlZmZlY3QgPSBGRURyb3BTaGFk
b3c6OmNyZWF0ZShzdGREZXZpYXRpb25YKCksIHN0ZERldmlhdGlvblkoKSwgZHgoKSwgZHkoKSwg
Y29sb3IsIG9wYWNpdHkpOworICAgIGVmZmVjdC0+aW5wdXRFZmZlY3RzKCkgPSB7IFdURk1vdmUo
aW5wdXQxKSB9OwogICAgIHJldHVybiBlZmZlY3Q7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3N2Zy9TVkdGRURyb3BTaGFkb3dFbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9zdmcv
U1ZHRkVEcm9wU2hhZG93RWxlbWVudC5oCmluZGV4IDliNjJkMjRiNDU0Yi4uM2U0MDVkZTQ4OWM2
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVEcm9wU2hhZG93RWxlbWVudC5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRURyb3BTaGFkb3dFbGVtZW50LmgKQEAgLTUz
LDcgKzUzLDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIHBhcnNlQXR0cmlidXRlKGNvbnN0IFF1YWxp
ZmllZE5hbWUmLCBjb25zdCBBdG9tU3RyaW5nJikgb3ZlcnJpZGU7CiAgICAgdm9pZCBzdmdBdHRy
aWJ1dGVDaGFuZ2VkKGNvbnN0IFF1YWxpZmllZE5hbWUmKSBvdmVycmlkZTsKIAotICAgIFJlZlB0
cjxGaWx0ZXJFZmZlY3Q+IGJ1aWxkKFNWR0ZpbHRlckJ1aWxkZXIqLCBGaWx0ZXImKSBjb25zdCBv
dmVycmlkZTsKKyAgICBSZWZQdHI8RmlsdGVyRWZmZWN0PiBidWlsZChTVkdGaWx0ZXJCdWlsZGVy
JikgY29uc3Qgb3ZlcnJpZGU7CiAKICAgICBQcm9wZXJ0eVJlZ2lzdHJ5IG1fcHJvcGVydHlSZWdp
c3RyeSB7ICp0aGlzIH07CiAgICAgUmVmPFNWR0FuaW1hdGVkU3RyaW5nPiBtX2luMSB7IFNWR0Fu
aW1hdGVkU3RyaW5nOjpjcmVhdGUodGhpcykgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3N2Zy9TVkdGRUZsb29kRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVGbG9v
ZEVsZW1lbnQuY3BwCmluZGV4IGMyMjhlMjJkNTY1ZC4uZjMyOGNjN2MxNWVlIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVGbG9vZEVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3N2Zy9TVkdGRUZsb29kRWxlbWVudC5jcHAKQEAgLTU4LDcgKzU4LDcgQEAgYm9vbCBT
VkdGRUZsb29kRWxlbWVudDo6c2V0RmlsdGVyRWZmZWN0QXR0cmlidXRlKEZpbHRlckVmZmVjdCog
ZWZmZWN0LCBjb25zdCBRdWEKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKLVJlZlB0cjxGaWx0ZXJF
ZmZlY3Q+IFNWR0ZFRmxvb2RFbGVtZW50OjpidWlsZChTVkdGaWx0ZXJCdWlsZGVyKiwgRmlsdGVy
JiBmaWx0ZXIpIGNvbnN0CitSZWZQdHI8RmlsdGVyRWZmZWN0PiBTVkdGRUZsb29kRWxlbWVudDo6
YnVpbGQoU1ZHRmlsdGVyQnVpbGRlciYpIGNvbnN0CiB7CiAgICAgUmVuZGVyT2JqZWN0KiByZW5k
ZXJlciA9IHRoaXMtPnJlbmRlcmVyKCk7CiAgICAgaWYgKCFyZW5kZXJlcikKQEAgLTY5LDcgKzY5
LDcgQEAgUmVmUHRyPEZpbHRlckVmZmVjdD4gU1ZHRkVGbG9vZEVsZW1lbnQ6OmJ1aWxkKFNWR0Zp
bHRlckJ1aWxkZXIqLCBGaWx0ZXImIGZpbHRlcikKICAgICBDb2xvciBjb2xvciA9IHJlbmRlcmVy
LT5zdHlsZSgpLmNvbG9yQnlBcHBseWluZ0NvbG9yRmlsdGVyKHN2Z1N0eWxlLmZsb29kQ29sb3Io
KSk7CiAgICAgZmxvYXQgb3BhY2l0eSA9IHN2Z1N0eWxlLmZsb29kT3BhY2l0eSgpOwogCi0gICAg
cmV0dXJuIEZFRmxvb2Q6OmNyZWF0ZShmaWx0ZXIsIGNvbG9yLCBvcGFjaXR5KTsKKyAgICByZXR1
cm4gRkVGbG9vZDo6Y3JlYXRlKGNvbG9yLCBvcGFjaXR5KTsKIH0KIAogfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFRmxvb2RFbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9z
dmcvU1ZHRkVGbG9vZEVsZW1lbnQuaAppbmRleCBiOTZhNDNhYTMxM2UuLmFlZDY2OTE5MzNiZCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFRmxvb2RFbGVtZW50LmgKKysrIGIv
U291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFRmxvb2RFbGVtZW50LmgKQEAgLTM2LDcgKzM2LDcgQEAg
cHJpdmF0ZToKICAgICBjb25zdCBTVkdQcm9wZXJ0eVJlZ2lzdHJ5JiBwcm9wZXJ0eVJlZ2lzdHJ5
KCkgY29uc3QgZmluYWwgeyByZXR1cm4gbV9wcm9wZXJ0eVJlZ2lzdHJ5OyB9CiAKICAgICBib29s
IHNldEZpbHRlckVmZmVjdEF0dHJpYnV0ZShGaWx0ZXJFZmZlY3QqLCBjb25zdCBRdWFsaWZpZWRO
YW1lJiBhdHRyTmFtZSkgb3ZlcnJpZGU7Ci0gICAgUmVmUHRyPEZpbHRlckVmZmVjdD4gYnVpbGQo
U1ZHRmlsdGVyQnVpbGRlciosIEZpbHRlciYpIGNvbnN0IG92ZXJyaWRlOworICAgIFJlZlB0cjxG
aWx0ZXJFZmZlY3Q+IGJ1aWxkKFNWR0ZpbHRlckJ1aWxkZXImKSBjb25zdCBvdmVycmlkZTsKIAog
ICAgIFByb3BlcnR5UmVnaXN0cnkgbV9wcm9wZXJ0eVJlZ2lzdHJ5IHsgKnRoaXMgfTsKIH07CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVHYXVzc2lhbkJsdXJFbGVtZW50LmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRUdhdXNzaWFuQmx1ckVsZW1lbnQuY3BwCmluZGV4
IDdhOTk4MjI0YzkyMS4uZjFlNmJmNDlhNGRiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9z
dmcvU1ZHRkVHYXVzc2lhbkJsdXJFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcv
U1ZHRkVHYXVzc2lhbkJsdXJFbGVtZW50LmNwcApAQCAtOTUsMTcgKzk1LDE3IEBAIHZvaWQgU1ZH
RkVHYXVzc2lhbkJsdXJFbGVtZW50OjpzdmdBdHRyaWJ1dGVDaGFuZ2VkKGNvbnN0IFF1YWxpZmll
ZE5hbWUmIGF0dHJOYW1lCiAgICAgU1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVz
OjpzdmdBdHRyaWJ1dGVDaGFuZ2VkKGF0dHJOYW1lKTsKIH0KIAotUmVmUHRyPEZpbHRlckVmZmVj
dD4gU1ZHRkVHYXVzc2lhbkJsdXJFbGVtZW50OjpidWlsZChTVkdGaWx0ZXJCdWlsZGVyKiBmaWx0
ZXJCdWlsZGVyLCBGaWx0ZXImIGZpbHRlcikgY29uc3QKK1JlZlB0cjxGaWx0ZXJFZmZlY3Q+IFNW
R0ZFR2F1c3NpYW5CbHVyRWxlbWVudDo6YnVpbGQoU1ZHRmlsdGVyQnVpbGRlciYgZmlsdGVyQnVp
bGRlcikgY29uc3QKIHsKLSAgICBhdXRvIGlucHV0MSA9IGZpbHRlckJ1aWxkZXItPmdldEVmZmVj
dEJ5SWQoaW4xKCkpOworICAgIGF1dG8gaW5wdXQxID0gZmlsdGVyQnVpbGRlci5nZXRFZmZlY3RC
eUlkKGluMSgpKTsKICAgICBpZiAoIWlucHV0MSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAK
ICAgICBpZiAoc3RkRGV2aWF0aW9uWCgpIDwgMCB8fCBzdGREZXZpYXRpb25ZKCkgPCAwKQogICAg
ICAgICByZXR1cm4gbnVsbHB0cjsKIAotICAgIGF1dG8gZWZmZWN0ID0gRkVHYXVzc2lhbkJsdXI6
OmNyZWF0ZShmaWx0ZXIsIHN0ZERldmlhdGlvblgoKSwgc3RkRGV2aWF0aW9uWSgpLCBlZGdlTW9k
ZSgpKTsKLSAgICBlZmZlY3QtPmlucHV0RWZmZWN0cygpID0geyBpbnB1dDEgfTsKKyAgICBhdXRv
IGVmZmVjdCA9IEZFR2F1c3NpYW5CbHVyOjpjcmVhdGUoc3RkRGV2aWF0aW9uWCgpLCBzdGREZXZp
YXRpb25ZKCksIGVkZ2VNb2RlKCkpOworICAgIGVmZmVjdC0+aW5wdXRFZmZlY3RzKCkgPSB7IFdU
Rk1vdmUoaW5wdXQxKSB9OwogICAgIHJldHVybiBlZmZlY3Q7CiB9CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3N2Zy9TVkdGRUdhdXNzaWFuQmx1ckVsZW1lbnQuaCBiL1NvdXJjZS9XZWJD
b3JlL3N2Zy9TVkdGRUdhdXNzaWFuQmx1ckVsZW1lbnQuaAppbmRleCBkODllMWE3NDhmYjIuLmY0
MGViMzM3NzhjNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFR2F1c3NpYW5C
bHVyRWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRUdhdXNzaWFuQmx1ckVs
ZW1lbnQuaApAQCAtNTMsNyArNTMsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgcGFyc2VBdHRyaWJ1
dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYsIGNvbnN0IEF0b21TdHJpbmcmKSBvdmVycmlkZTsKICAg
ICB2b2lkIHN2Z0F0dHJpYnV0ZUNoYW5nZWQoY29uc3QgUXVhbGlmaWVkTmFtZSYpIG92ZXJyaWRl
OwogCi0gICAgUmVmUHRyPEZpbHRlckVmZmVjdD4gYnVpbGQoU1ZHRmlsdGVyQnVpbGRlciosIEZp
bHRlciYpIGNvbnN0IG92ZXJyaWRlOworICAgIFJlZlB0cjxGaWx0ZXJFZmZlY3Q+IGJ1aWxkKFNW
R0ZpbHRlckJ1aWxkZXImKSBjb25zdCBvdmVycmlkZTsKIAogICAgIFByb3BlcnR5UmVnaXN0cnkg
bV9wcm9wZXJ0eVJlZ2lzdHJ5IHsgKnRoaXMgfTsKICAgICBSZWY8U1ZHQW5pbWF0ZWRTdHJpbmc+
IG1faW4xIHsgU1ZHQW5pbWF0ZWRTdHJpbmc6OmNyZWF0ZSh0aGlzKSB9OwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFSW1hZ2VFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3N2Zy9TVkdGRUltYWdlRWxlbWVudC5jcHAKaW5kZXggZTE0Njg4YTVlYjE3Li40MmExY2UwZWE2
YWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRUltYWdlRWxlbWVudC5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFSW1hZ2VFbGVtZW50LmNwcApAQCAtMTc0LDE2
ICsxNzQsMTYgQEAgdm9pZCBTVkdGRUltYWdlRWxlbWVudDo6bm90aWZ5RmluaXNoZWQoQ2FjaGVk
UmVzb3VyY2UmLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MKICAgICBSZW5kZXJTVkdSZXNvdXJj
ZTo6bWFya0ZvckxheW91dEFuZFBhcmVudFJlc291cmNlSW52YWxpZGF0aW9uKCpwYXJlbnRSZW5k
ZXJlcik7CiB9CiAKLVJlZlB0cjxGaWx0ZXJFZmZlY3Q+IFNWR0ZFSW1hZ2VFbGVtZW50OjpidWls
ZChTVkdGaWx0ZXJCdWlsZGVyKiwgRmlsdGVyJiBmaWx0ZXIpIGNvbnN0CitSZWZQdHI8RmlsdGVy
RWZmZWN0PiBTVkdGRUltYWdlRWxlbWVudDo6YnVpbGQoU1ZHRmlsdGVyQnVpbGRlciYpIGNvbnN0
CiB7CiAgICAgaWYgKG1fY2FjaGVkSW1hZ2UpCi0gICAgICAgIHJldHVybiBGRUltYWdlOjpjcmVh
dGVXaXRoSW1hZ2UoZmlsdGVyLCBtX2NhY2hlZEltYWdlLT5pbWFnZUZvclJlbmRlcmVyKHJlbmRl
cmVyKCkpLCBwcmVzZXJ2ZUFzcGVjdFJhdGlvKCkpOworICAgICAgICByZXR1cm4gRkVJbWFnZTo6
Y3JlYXRlV2l0aEltYWdlKG1fY2FjaGVkSW1hZ2UtPmltYWdlRm9yUmVuZGVyZXIocmVuZGVyZXIo
KSksIHByZXNlcnZlQXNwZWN0UmF0aW8oKSk7CiAKICAgICBhdXRvIHRhcmdldCA9IFNWR1VSSVJl
ZmVyZW5jZTo6dGFyZ2V0RWxlbWVudEZyb21JUklTdHJpbmcoaHJlZigpLCB0cmVlU2NvcGUoKSk7
CiAgICAgaWYgKGlzRGVzY2VuZGFudE9yU2hhZG93RGVzY2VuZGFudE9mKHRhcmdldC5lbGVtZW50
LmdldCgpKSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKLSAgICByZXR1cm4gRkVJbWFnZTo6
Y3JlYXRlV2l0aElSSVJlZmVyZW5jZShmaWx0ZXIsIHRyZWVTY29wZSgpLCBocmVmKCksIHByZXNl
cnZlQXNwZWN0UmF0aW8oKSk7CisgICAgcmV0dXJuIEZFSW1hZ2U6OmNyZWF0ZVdpdGhJUklSZWZl
cmVuY2UodHJlZVNjb3BlKCksIGhyZWYoKSwgcHJlc2VydmVBc3BlY3RSYXRpbygpKTsKIH0KIAog
dm9pZCBTVkdGRUltYWdlRWxlbWVudDo6YWRkU3VicmVzb3VyY2VBdHRyaWJ1dGVVUkxzKExpc3RI
YXNoU2V0PFVSTD4mIHVybHMpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcv
U1ZHRkVJbWFnZUVsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRUltYWdlRWxlbWVu
dC5oCmluZGV4IGQ5M2UwZDBkYjhiOC4uMmEzZTlmNjBlYmZjIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9zdmcvU1ZHRkVJbWFnZUVsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcv
U1ZHRkVJbWFnZUVsZW1lbnQuaApAQCAtNTUsNyArNTUsNyBAQCBwcml2YXRlOgogCiAgICAgdm9p
ZCBkaWRGaW5pc2hJbnNlcnRpbmdOb2RlKCkgb3ZlcnJpZGU7CiAKLSAgICBSZWZQdHI8RmlsdGVy
RWZmZWN0PiBidWlsZChTVkdGaWx0ZXJCdWlsZGVyKiwgRmlsdGVyJikgY29uc3Qgb3ZlcnJpZGU7
CisgICAgUmVmUHRyPEZpbHRlckVmZmVjdD4gYnVpbGQoU1ZHRmlsdGVyQnVpbGRlciYpIGNvbnN0
IG92ZXJyaWRlOwogCiAgICAgdm9pZCBjbGVhclJlc291cmNlUmVmZXJlbmNlcygpOwogICAgIHZv
aWQgcmVxdWVzdEltYWdlUmVzb3VyY2UoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2
Zy9TVkdGRU1lcmdlRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVNZXJnZUVs
ZW1lbnQuY3BwCmluZGV4IGJlMmY2ZTAzMDdkYy4uMWMwZDU4MmQwMTNiIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVNZXJnZUVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3N2Zy9TVkdGRU1lcmdlRWxlbWVudC5jcHAKQEAgLTQ1LDEzICs0NSwxMiBAQCBSZWY8U1ZH
RkVNZXJnZUVsZW1lbnQ+IFNWR0ZFTWVyZ2VFbGVtZW50OjpjcmVhdGUoY29uc3QgUXVhbGlmaWVk
TmFtZSYgdGFnTmFtZSwgRAogICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFNWR0ZFTWVyZ2VFbGVt
ZW50KHRhZ05hbWUsIGRvY3VtZW50KSk7CiB9CiAKLVJlZlB0cjxGaWx0ZXJFZmZlY3Q+IFNWR0ZF
TWVyZ2VFbGVtZW50OjpidWlsZChTVkdGaWx0ZXJCdWlsZGVyKiBmaWx0ZXJCdWlsZGVyLCBGaWx0
ZXImIGZpbHRlcikgY29uc3QKK1JlZlB0cjxGaWx0ZXJFZmZlY3Q+IFNWR0ZFTWVyZ2VFbGVtZW50
OjpidWlsZChTVkdGaWx0ZXJCdWlsZGVyJiBmaWx0ZXJCdWlsZGVyKSBjb25zdAogewotICAgIGF1
dG8gZWZmZWN0ID0gRkVNZXJnZTo6Y3JlYXRlKGZpbHRlcik7Ci0gICAgYXV0byYgbWVyZ2VJbnB1
dHMgPSBlZmZlY3QtPmlucHV0RWZmZWN0cygpOwotCisgICAgRmlsdGVyRWZmZWN0VmVjdG9yIG1l
cmdlSW5wdXRzOworICAgIAogICAgIGZvciAoYXV0byYgbWVyZ2VOb2RlIDogY2hpbGRyZW5PZlR5
cGU8U1ZHRkVNZXJnZU5vZGVFbGVtZW50PigqdGhpcykpIHsKLSAgICAgICAgYXV0byBtZXJnZUVm
ZmVjdCA9IGZpbHRlckJ1aWxkZXItPmdldEVmZmVjdEJ5SWQobWVyZ2VOb2RlLmluMSgpKTsKKyAg
ICAgICAgYXV0byBtZXJnZUVmZmVjdCA9IGZpbHRlckJ1aWxkZXIuZ2V0RWZmZWN0QnlJZChtZXJn
ZU5vZGUuaW4xKCkpOwogICAgICAgICBpZiAoIW1lcmdlRWZmZWN0KQogICAgICAgICAgICAgcmV0
dXJuIG51bGxwdHI7CiAgICAgICAgIG1lcmdlSW5wdXRzLmFwcGVuZChXVEZNb3ZlKG1lcmdlRWZm
ZWN0KSk7CkBAIC02Miw2ICs2MSw4IEBAIFJlZlB0cjxGaWx0ZXJFZmZlY3Q+IFNWR0ZFTWVyZ2VF
bGVtZW50OjpidWlsZChTVkdGaWx0ZXJCdWlsZGVyKiBmaWx0ZXJCdWlsZGVyLCBGCiAgICAgaWYg
KG1lcmdlSW5wdXRzLmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKKyAgICBh
dXRvIGVmZmVjdCA9IEZFTWVyZ2U6OmNyZWF0ZSgpOworICAgIGVmZmVjdC0+aW5wdXRFZmZlY3Rz
KCkgPSBXVEZNb3ZlKG1lcmdlSW5wdXRzKTsKICAgICByZXR1cm4gZWZmZWN0OwogfQogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVNZXJnZUVsZW1lbnQuaCBiL1NvdXJjZS9X
ZWJDb3JlL3N2Zy9TVkdGRU1lcmdlRWxlbWVudC5oCmluZGV4IDc0NTA4NjgxNmY2OS4uNDM3Y2Q3
MjU2MzJjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVNZXJnZUVsZW1lbnQu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVNZXJnZUVsZW1lbnQuaApAQCAtMzUsNyAr
MzUsNyBAQCBwcml2YXRlOgogICAgIHVzaW5nIFByb3BlcnR5UmVnaXN0cnkgPSBTVkdQcm9wZXJ0
eU93bmVyUmVnaXN0cnk8U1ZHRkVNZXJnZUVsZW1lbnQsIFNWR0ZpbHRlclByaW1pdGl2ZVN0YW5k
YXJkQXR0cmlidXRlcz47CiAgICAgY29uc3QgU1ZHUHJvcGVydHlSZWdpc3RyeSYgcHJvcGVydHlS
ZWdpc3RyeSgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1fcHJvcGVydHlSZWdpc3RyeTsgfQogCi0g
ICAgUmVmUHRyPEZpbHRlckVmZmVjdD4gYnVpbGQoU1ZHRmlsdGVyQnVpbGRlciosIEZpbHRlciYp
IGNvbnN0IG92ZXJyaWRlOworICAgIFJlZlB0cjxGaWx0ZXJFZmZlY3Q+IGJ1aWxkKFNWR0ZpbHRl
ckJ1aWxkZXImKSBjb25zdCBvdmVycmlkZTsKIAogICAgIFByb3BlcnR5UmVnaXN0cnkgbV9wcm9w
ZXJ0eVJlZ2lzdHJ5IHsgKnRoaXMgfTsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9z
dmcvU1ZHRkVNb3JwaG9sb2d5RWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVN
b3JwaG9sb2d5RWxlbWVudC5jcHAKaW5kZXggZDZmYjk1YzhlMzc3Li44YjA1NjBjNGRhODAgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRU1vcnBob2xvZ3lFbGVtZW50LmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVNb3JwaG9sb2d5RWxlbWVudC5jcHAKQEAgLTEx
NCwyMCArMTE0LDE5IEBAIHZvaWQgU1ZHRkVNb3JwaG9sb2d5RWxlbWVudDo6c3ZnQXR0cmlidXRl
Q2hhbmdlZChjb25zdCBRdWFsaWZpZWROYW1lJiBhdHRyTmFtZSkKICAgICBTVkdGaWx0ZXJQcmlt
aXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXM6OnN2Z0F0dHJpYnV0ZUNoYW5nZWQoYXR0ck5hbWUpOwog
fQogCi1SZWZQdHI8RmlsdGVyRWZmZWN0PiBTVkdGRU1vcnBob2xvZ3lFbGVtZW50OjpidWlsZChT
VkdGaWx0ZXJCdWlsZGVyKiBmaWx0ZXJCdWlsZGVyLCBGaWx0ZXImIGZpbHRlcikgY29uc3QKK1Jl
ZlB0cjxGaWx0ZXJFZmZlY3Q+IFNWR0ZFTW9ycGhvbG9neUVsZW1lbnQ6OmJ1aWxkKFNWR0ZpbHRl
ckJ1aWxkZXImIGZpbHRlckJ1aWxkZXIpIGNvbnN0CiB7Ci0gICAgYXV0byBpbnB1dDEgPSBmaWx0
ZXJCdWlsZGVyLT5nZXRFZmZlY3RCeUlkKGluMSgpKTsKLSAgICBmbG9hdCB4UmFkaXVzID0gcmFk
aXVzWCgpOwotICAgIGZsb2F0IHlSYWRpdXMgPSByYWRpdXNZKCk7Ci0KKyAgICBhdXRvIGlucHV0
MSA9IGZpbHRlckJ1aWxkZXIuZ2V0RWZmZWN0QnlJZChpbjEoKSk7CiAgICAgaWYgKCFpbnB1dDEp
CiAgICAgICAgIHJldHVybiBudWxscHRyOwogCisgICAgZmxvYXQgeFJhZGl1cyA9IHJhZGl1c1go
KTsKKyAgICBmbG9hdCB5UmFkaXVzID0gcmFkaXVzWSgpOwogICAgIGlmICh4UmFkaXVzIDwgMCB8
fCB5UmFkaXVzIDwgMCkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKLSAgICBhdXRvIGVmZmVj
dCA9IEZFTW9ycGhvbG9neTo6Y3JlYXRlKGZpbHRlciwgc3ZnT3BlcmF0b3IoKSwgeFJhZGl1cywg
eVJhZGl1cyk7Ci0gICAgZWZmZWN0LT5pbnB1dEVmZmVjdHMoKSA9IHsgaW5wdXQxIH07CisgICAg
YXV0byBlZmZlY3QgPSBGRU1vcnBob2xvZ3k6OmNyZWF0ZShzdmdPcGVyYXRvcigpLCB4UmFkaXVz
LCB5UmFkaXVzKTsKKyAgICBlZmZlY3QtPmlucHV0RWZmZWN0cygpID0geyBXVEZNb3ZlKGlucHV0
MSkgfTsKICAgICByZXR1cm4gZWZmZWN0OwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9zdmcvU1ZHRkVNb3JwaG9sb2d5RWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZF
TW9ycGhvbG9neUVsZW1lbnQuaAppbmRleCAxYTkwODhiNzVjZjguLmIyMWI2ZjVjNDdiNyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFTW9ycGhvbG9neUVsZW1lbnQuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVNb3JwaG9sb2d5RWxlbWVudC5oCkBAIC04MSw3ICs4
MSw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBzdmdBdHRyaWJ1dGVDaGFuZ2VkKGNvbnN0IFF1YWxp
ZmllZE5hbWUmKSBvdmVycmlkZTsKIAogICAgIGJvb2wgc2V0RmlsdGVyRWZmZWN0QXR0cmlidXRl
KEZpbHRlckVmZmVjdCosIGNvbnN0IFF1YWxpZmllZE5hbWUmKSBvdmVycmlkZTsKLSAgICBSZWZQ
dHI8RmlsdGVyRWZmZWN0PiBidWlsZChTVkdGaWx0ZXJCdWlsZGVyKiwgRmlsdGVyJikgY29uc3Qg
b3ZlcnJpZGU7CisgICAgUmVmUHRyPEZpbHRlckVmZmVjdD4gYnVpbGQoU1ZHRmlsdGVyQnVpbGRl
ciYpIGNvbnN0IG92ZXJyaWRlOwogCiAgICAgUHJvcGVydHlSZWdpc3RyeSBtX3Byb3BlcnR5UmVn
aXN0cnkgeyAqdGhpcyB9OwogICAgIFJlZjxTVkdBbmltYXRlZFN0cmluZz4gbV9pbjEgeyBTVkdB
bmltYXRlZFN0cmluZzo6Y3JlYXRlKHRoaXMpIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9zdmcvU1ZHRkVPZmZzZXRFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRU9m
ZnNldEVsZW1lbnQuY3BwCmluZGV4IDAzODI2OGI4OWIyZi4uOWIwZDcwMmExZDI1IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVPZmZzZXRFbGVtZW50LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9zdmcvU1ZHRkVPZmZzZXRFbGVtZW50LmNwcApAQCAtODEsMTQgKzgxLDE0IEBA
IHZvaWQgU1ZHRkVPZmZzZXRFbGVtZW50OjpzdmdBdHRyaWJ1dGVDaGFuZ2VkKGNvbnN0IFF1YWxp
ZmllZE5hbWUmIGF0dHJOYW1lKQogICAgIFNWR0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0cmli
dXRlczo6c3ZnQXR0cmlidXRlQ2hhbmdlZChhdHRyTmFtZSk7CiB9CiAKLVJlZlB0cjxGaWx0ZXJF
ZmZlY3Q+IFNWR0ZFT2Zmc2V0RWxlbWVudDo6YnVpbGQoU1ZHRmlsdGVyQnVpbGRlciogZmlsdGVy
QnVpbGRlciwgRmlsdGVyJiBmaWx0ZXIpIGNvbnN0CitSZWZQdHI8RmlsdGVyRWZmZWN0PiBTVkdG
RU9mZnNldEVsZW1lbnQ6OmJ1aWxkKFNWR0ZpbHRlckJ1aWxkZXImIGZpbHRlckJ1aWxkZXIpIGNv
bnN0CiB7Ci0gICAgYXV0byBpbnB1dDEgPSBmaWx0ZXJCdWlsZGVyLT5nZXRFZmZlY3RCeUlkKGlu
MSgpKTsKKyAgICBhdXRvIGlucHV0MSA9IGZpbHRlckJ1aWxkZXIuZ2V0RWZmZWN0QnlJZChpbjEo
KSk7CiAKICAgICBpZiAoIWlucHV0MSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKLSAgICBh
dXRvIGVmZmVjdCA9IEZFT2Zmc2V0OjpjcmVhdGUoZmlsdGVyLCBkeCgpLCBkeSgpKTsKKyAgICBh
dXRvIGVmZmVjdCA9IEZFT2Zmc2V0OjpjcmVhdGUoZHgoKSwgZHkoKSk7CiAgICAgZWZmZWN0LT5p
bnB1dEVmZmVjdHMoKSA9IHsgaW5wdXQxIH07CiAgICAgcmV0dXJuIGVmZmVjdDsKIH0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRU9mZnNldEVsZW1lbnQuaCBiL1NvdXJjZS9X
ZWJDb3JlL3N2Zy9TVkdGRU9mZnNldEVsZW1lbnQuaAppbmRleCA1NzQ3M2RjYzcyZGIuLjg5OTZm
MjgyYjAxZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFT2Zmc2V0RWxlbWVu
dC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRU9mZnNldEVsZW1lbnQuaApAQCAtNDcs
NyArNDcsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgcGFyc2VBdHRyaWJ1dGUoY29uc3QgUXVhbGlm
aWVkTmFtZSYsIGNvbnN0IEF0b21TdHJpbmcmKSBvdmVycmlkZTsKICAgICB2b2lkIHN2Z0F0dHJp
YnV0ZUNoYW5nZWQoY29uc3QgUXVhbGlmaWVkTmFtZSYpIG92ZXJyaWRlOwogCi0gICAgUmVmUHRy
PEZpbHRlckVmZmVjdD4gYnVpbGQoU1ZHRmlsdGVyQnVpbGRlciosIEZpbHRlciYpIGNvbnN0IG92
ZXJyaWRlOworICAgIFJlZlB0cjxGaWx0ZXJFZmZlY3Q+IGJ1aWxkKFNWR0ZpbHRlckJ1aWxkZXIm
KSBjb25zdCBvdmVycmlkZTsKIAogICAgIFByb3BlcnR5UmVnaXN0cnkgbV9wcm9wZXJ0eVJlZ2lz
dHJ5IHsgKnRoaXMgfTsKICAgICBSZWY8U1ZHQW5pbWF0ZWRTdHJpbmc+IG1faW4xIHsgU1ZHQW5p
bWF0ZWRTdHJpbmc6OmNyZWF0ZSh0aGlzKSB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
c3ZnL1NWR0ZFU3BlY3VsYXJMaWdodGluZ0VsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvc3Zn
L1NWR0ZFU3BlY3VsYXJMaWdodGluZ0VsZW1lbnQuY3BwCmluZGV4IDliN2NlNDBhYjk3MS4uNTYz
YjlmMTdiNGE5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVTcGVjdWxhckxp
Z2h0aW5nRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFU3BlY3VsYXJM
aWdodGluZ0VsZW1lbnQuY3BwCkBAIC0xNjAsOSArMTYwLDkgQEAgdm9pZCBTVkdGRVNwZWN1bGFy
TGlnaHRpbmdFbGVtZW50OjpsaWdodEVsZW1lbnRBdHRyaWJ1dGVDaGFuZ2VkKGNvbnN0IFNWR0ZF
TGlnaHQKICAgICBwcmltaXRpdmVBdHRyaWJ1dGVDaGFuZ2VkKGF0dHJOYW1lKTsKIH0KIAotUmVm
UHRyPEZpbHRlckVmZmVjdD4gU1ZHRkVTcGVjdWxhckxpZ2h0aW5nRWxlbWVudDo6YnVpbGQoU1ZH
RmlsdGVyQnVpbGRlciogZmlsdGVyQnVpbGRlciwgRmlsdGVyJiBmaWx0ZXIpIGNvbnN0CitSZWZQ
dHI8RmlsdGVyRWZmZWN0PiBTVkdGRVNwZWN1bGFyTGlnaHRpbmdFbGVtZW50OjpidWlsZChTVkdG
aWx0ZXJCdWlsZGVyJiBmaWx0ZXJCdWlsZGVyKSBjb25zdAogewotICAgIGF1dG8gaW5wdXQxID0g
ZmlsdGVyQnVpbGRlci0+Z2V0RWZmZWN0QnlJZChpbjEoKSk7CisgICAgYXV0byBpbnB1dDEgPSBm
aWx0ZXJCdWlsZGVyLmdldEVmZmVjdEJ5SWQoaW4xKCkpOwogCiAgICAgaWYgKCFpbnB1dDEpCiAg
ICAgICAgIHJldHVybiBudWxscHRyOwpAQCAtMTcxLDcgKzE3MSw3IEBAIFJlZlB0cjxGaWx0ZXJF
ZmZlY3Q+IFNWR0ZFU3BlY3VsYXJMaWdodGluZ0VsZW1lbnQ6OmJ1aWxkKFNWR0ZpbHRlckJ1aWxk
ZXIqIGZpbHRlCiAgICAgaWYgKCFsaWdodEVsZW1lbnQpCiAgICAgICAgIHJldHVybiBudWxscHRy
OwogICAgIAotICAgIGF1dG8gbGlnaHRTb3VyY2UgPSBsaWdodEVsZW1lbnQtPmxpZ2h0U291cmNl
KCpmaWx0ZXJCdWlsZGVyKTsKKyAgICBhdXRvIGxpZ2h0U291cmNlID0gbGlnaHRFbGVtZW50LT5s
aWdodFNvdXJjZShmaWx0ZXJCdWlsZGVyKTsKIAogICAgIFJlbmRlck9iamVjdCogcmVuZGVyZXIg
PSB0aGlzLT5yZW5kZXJlcigpOwogICAgIGlmICghcmVuZGVyZXIpCkBAIC0xNzksNyArMTc5LDcg
QEAgUmVmUHRyPEZpbHRlckVmZmVjdD4gU1ZHRkVTcGVjdWxhckxpZ2h0aW5nRWxlbWVudDo6YnVp
bGQoU1ZHRmlsdGVyQnVpbGRlciogZmlsdGUKICAgICAKICAgICBDb2xvciBjb2xvciA9IHJlbmRl
cmVyLT5zdHlsZSgpLmNvbG9yQnlBcHBseWluZ0NvbG9yRmlsdGVyKHJlbmRlcmVyLT5zdHlsZSgp
LnN2Z1N0eWxlKCkubGlnaHRpbmdDb2xvcigpKTsKIAotICAgIGF1dG8gZWZmZWN0ID0gRkVTcGVj
dWxhckxpZ2h0aW5nOjpjcmVhdGUoZmlsdGVyLCBjb2xvciwgc3VyZmFjZVNjYWxlKCksIHNwZWN1
bGFyQ29uc3RhbnQoKSwgc3BlY3VsYXJFeHBvbmVudCgpLCBrZXJuZWxVbml0TGVuZ3RoWCgpLCBr
ZXJuZWxVbml0TGVuZ3RoWSgpLCBXVEZNb3ZlKGxpZ2h0U291cmNlKSk7CisgICAgYXV0byBlZmZl
Y3QgPSBGRVNwZWN1bGFyTGlnaHRpbmc6OmNyZWF0ZShjb2xvciwgc3VyZmFjZVNjYWxlKCksIHNw
ZWN1bGFyQ29uc3RhbnQoKSwgc3BlY3VsYXJFeHBvbmVudCgpLCBrZXJuZWxVbml0TGVuZ3RoWCgp
LCBrZXJuZWxVbml0TGVuZ3RoWSgpLCBXVEZNb3ZlKGxpZ2h0U291cmNlKSk7CiAgICAgZWZmZWN0
LT5pbnB1dEVmZmVjdHMoKSA9IHsgaW5wdXQxIH07CiAgICAgcmV0dXJuIGVmZmVjdDsKIH0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRVNwZWN1bGFyTGlnaHRpbmdFbGVtZW50
LmggYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVTcGVjdWxhckxpZ2h0aW5nRWxlbWVudC5oCmlu
ZGV4IDg5N2I4ZGUxNTZkMS4uNGQxYjUzMWM0MmJlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9zdmcvU1ZHRkVTcGVjdWxhckxpZ2h0aW5nRWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3N2Zy9TVkdGRVNwZWN1bGFyTGlnaHRpbmdFbGVtZW50LmgKQEAgLTU4LDcgKzU4LDcgQEAgcHJp
dmF0ZToKICAgICB2b2lkIHN2Z0F0dHJpYnV0ZUNoYW5nZWQoY29uc3QgUXVhbGlmaWVkTmFtZSYp
IG92ZXJyaWRlOwogCiAgICAgYm9vbCBzZXRGaWx0ZXJFZmZlY3RBdHRyaWJ1dGUoRmlsdGVyRWZm
ZWN0KiwgY29uc3QgUXVhbGlmaWVkTmFtZSYpIG92ZXJyaWRlOwotICAgIFJlZlB0cjxGaWx0ZXJF
ZmZlY3Q+IGJ1aWxkKFNWR0ZpbHRlckJ1aWxkZXIqLCBGaWx0ZXImKSBjb25zdCBvdmVycmlkZTsK
KyAgICBSZWZQdHI8RmlsdGVyRWZmZWN0PiBidWlsZChTVkdGaWx0ZXJCdWlsZGVyJikgY29uc3Qg
b3ZlcnJpZGU7CiAKICAgICBQcm9wZXJ0eVJlZ2lzdHJ5IG1fcHJvcGVydHlSZWdpc3RyeSB7ICp0
aGlzIH07CiAgICAgUmVmPFNWR0FuaW1hdGVkU3RyaW5nPiBtX2luMSB7IFNWR0FuaW1hdGVkU3Ry
aW5nOjpjcmVhdGUodGhpcykgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdG
RVRpbGVFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRVRpbGVFbGVtZW50LmNw
cAppbmRleCAzOWJkY2M3NzM1OTYuLjAwMWRkNTA4OTIxNCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvc3ZnL1NWR0ZFVGlsZUVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9T
VkdGRVRpbGVFbGVtZW50LmNwcApAQCAtNzAsMTUgKzcwLDE1IEBAIHZvaWQgU1ZHRkVUaWxlRWxl
bWVudDo6c3ZnQXR0cmlidXRlQ2hhbmdlZChjb25zdCBRdWFsaWZpZWROYW1lJiBhdHRyTmFtZSkK
ICAgICBTVkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXM6OnN2Z0F0dHJpYnV0ZUNo
YW5nZWQoYXR0ck5hbWUpOwogfQogCi1SZWZQdHI8RmlsdGVyRWZmZWN0PiBTVkdGRVRpbGVFbGVt
ZW50OjpidWlsZChTVkdGaWx0ZXJCdWlsZGVyKiBmaWx0ZXJCdWlsZGVyLCBGaWx0ZXImIGZpbHRl
cikgY29uc3QKK1JlZlB0cjxGaWx0ZXJFZmZlY3Q+IFNWR0ZFVGlsZUVsZW1lbnQ6OmJ1aWxkKFNW
R0ZpbHRlckJ1aWxkZXImIGZpbHRlckJ1aWxkZXIpIGNvbnN0CiB7Ci0gICAgYXV0byBpbnB1dDEg
PSBmaWx0ZXJCdWlsZGVyLT5nZXRFZmZlY3RCeUlkKGluMSgpKTsKKyAgICBhdXRvIGlucHV0MSA9
IGZpbHRlckJ1aWxkZXIuZ2V0RWZmZWN0QnlJZChpbjEoKSk7CiAKICAgICBpZiAoIWlucHV0MSkK
ICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKLSAgICBhdXRvIGVmZmVjdCA9IEZFVGlsZTo6Y3Jl
YXRlKGZpbHRlcik7Ci0gICAgZWZmZWN0LT5pbnB1dEVmZmVjdHMoKSA9IHsgaW5wdXQxIH07Cisg
ICAgYXV0byBlZmZlY3QgPSBGRVRpbGU6OmNyZWF0ZSgpOworICAgIGVmZmVjdC0+aW5wdXRFZmZl
Y3RzKCkgPSB7IFdURk1vdmUoaW5wdXQxKSB9OwogICAgIHJldHVybiBlZmZlY3Q7CiB9CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRVRpbGVFbGVtZW50LmggYi9Tb3VyY2Uv
V2ViQ29yZS9zdmcvU1ZHRkVUaWxlRWxlbWVudC5oCmluZGV4IDQ1YjMyNzE4NTFkNy4uY2FiYWNl
NmJkMDFjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVUaWxlRWxlbWVudC5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRVRpbGVFbGVtZW50LmgKQEAgLTQyLDcgKzQy
LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIHBhcnNlQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5h
bWUmLCBjb25zdCBBdG9tU3RyaW5nJikgb3ZlcnJpZGU7CiAgICAgdm9pZCBzdmdBdHRyaWJ1dGVD
aGFuZ2VkKGNvbnN0IFF1YWxpZmllZE5hbWUmKSBvdmVycmlkZTsKIAotICAgIFJlZlB0cjxGaWx0
ZXJFZmZlY3Q+IGJ1aWxkKFNWR0ZpbHRlckJ1aWxkZXIqLCBGaWx0ZXImKSBjb25zdCBvdmVycmlk
ZTsKKyAgICBSZWZQdHI8RmlsdGVyRWZmZWN0PiBidWlsZChTVkdGaWx0ZXJCdWlsZGVyJikgY29u
c3Qgb3ZlcnJpZGU7CiAKICAgICBQcm9wZXJ0eVJlZ2lzdHJ5IG1fcHJvcGVydHlSZWdpc3RyeSB7
ICp0aGlzIH07CiAgICAgUmVmPFNWR0FuaW1hdGVkU3RyaW5nPiBtX2luMSB7IFNWR0FuaW1hdGVk
U3RyaW5nOjpjcmVhdGUodGhpcykgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9T
VkdGRVR1cmJ1bGVuY2VFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRVR1cmJ1
bGVuY2VFbGVtZW50LmNwcAppbmRleCAxMTU2MTExOWQ4M2UuLjE1MWI3YjllOGUwOCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFVHVyYnVsZW5jZUVsZW1lbnQuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRVR1cmJ1bGVuY2VFbGVtZW50LmNwcApAQCAtMTE3LDEx
ICsxMTcsMTEgQEAgdm9pZCBTVkdGRVR1cmJ1bGVuY2VFbGVtZW50OjpzdmdBdHRyaWJ1dGVDaGFu
Z2VkKGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0dHJOYW1lKQogICAgIFNWR0ZpbHRlclByaW1pdGl2
ZVN0YW5kYXJkQXR0cmlidXRlczo6c3ZnQXR0cmlidXRlQ2hhbmdlZChhdHRyTmFtZSk7CiB9CiAK
LVJlZlB0cjxGaWx0ZXJFZmZlY3Q+IFNWR0ZFVHVyYnVsZW5jZUVsZW1lbnQ6OmJ1aWxkKFNWR0Zp
bHRlckJ1aWxkZXIqLCBGaWx0ZXImIGZpbHRlcikgY29uc3QKK1JlZlB0cjxGaWx0ZXJFZmZlY3Q+
IFNWR0ZFVHVyYnVsZW5jZUVsZW1lbnQ6OmJ1aWxkKFNWR0ZpbHRlckJ1aWxkZXImKSBjb25zdAog
ewogICAgIGlmIChiYXNlRnJlcXVlbmN5WCgpIDwgMCB8fCBiYXNlRnJlcXVlbmN5WSgpIDwgMCkK
ICAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgcmV0dXJuIEZFVHVyYnVsZW5jZTo6Y3JlYXRl
KGZpbHRlciwgdHlwZSgpLCBiYXNlRnJlcXVlbmN5WCgpLCBiYXNlRnJlcXVlbmN5WSgpLCBudW1P
Y3RhdmVzKCksIHNlZWQoKSwgc3RpdGNoVGlsZXMoKSA9PSBTVkdfU1RJVENIVFlQRV9TVElUQ0gp
OworICAgIHJldHVybiBGRVR1cmJ1bGVuY2U6OmNyZWF0ZSh0eXBlKCksIGJhc2VGcmVxdWVuY3lY
KCksIGJhc2VGcmVxdWVuY3lZKCksIG51bU9jdGF2ZXMoKSwgc2VlZCgpLCBzdGl0Y2hUaWxlcygp
ID09IFNWR19TVElUQ0hUWVBFX1NUSVRDSCk7CiB9CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3N2Zy9TVkdGRVR1cmJ1bGVuY2VFbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9zdmcv
U1ZHRkVUdXJidWxlbmNlRWxlbWVudC5oCmluZGV4IGJmOWRhMjJhZDQyZS4uNTBhZjkxMGViNThl
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVUdXJidWxlbmNlRWxlbWVudC5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRVR1cmJ1bGVuY2VFbGVtZW50LmgKQEAgLTEx
OSw3ICsxMTksNyBAQCBwcml2YXRlOgogICAgIHZvaWQgc3ZnQXR0cmlidXRlQ2hhbmdlZChjb25z
dCBRdWFsaWZpZWROYW1lJikgb3ZlcnJpZGU7CiAKICAgICBib29sIHNldEZpbHRlckVmZmVjdEF0
dHJpYnV0ZShGaWx0ZXJFZmZlY3QqLCBjb25zdCBRdWFsaWZpZWROYW1lJiBhdHRyTmFtZSkgb3Zl
cnJpZGU7Ci0gICAgUmVmUHRyPEZpbHRlckVmZmVjdD4gYnVpbGQoU1ZHRmlsdGVyQnVpbGRlcios
IEZpbHRlciYpIGNvbnN0IG92ZXJyaWRlOworICAgIFJlZlB0cjxGaWx0ZXJFZmZlY3Q+IGJ1aWxk
KFNWR0ZpbHRlckJ1aWxkZXImKSBjb25zdCBvdmVycmlkZTsKIAogICAgIFByb3BlcnR5UmVnaXN0
cnkgbV9wcm9wZXJ0eVJlZ2lzdHJ5IHsgKnRoaXMgfTsKICAgICBSZWY8U1ZHQW5pbWF0ZWROdW1i
ZXI+IG1fYmFzZUZyZXF1ZW5jeVggeyBTVkdBbmltYXRlZE51bWJlcjo6Y3JlYXRlKHRoaXMpIH07
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRh
cmRBdHRyaWJ1dGVzLmggYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRmlsdGVyUHJpbWl0aXZlU3Rh
bmRhcmRBdHRyaWJ1dGVzLmgKaW5kZXggYzk4YjEzZWQ5NjI3Li4zOGQ0OTg2MDkzMzggMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJp
YnV0ZXMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRh
cmRBdHRyaWJ1dGVzLmgKQEAgLTM4LDcgKzM4LDcgQEAgY2xhc3MgU1ZHRmlsdGVyUHJpbWl0aXZl
U3RhbmRhcmRBdHRyaWJ1dGVzIDogcHVibGljIFNWR0VsZW1lbnQgewogcHVibGljOgogICAgIHZv
aWQgc2V0U3RhbmRhcmRBdHRyaWJ1dGVzKEZpbHRlckVmZmVjdCopIGNvbnN0OwogCi0gICAgdmly
dHVhbCBSZWZQdHI8RmlsdGVyRWZmZWN0PiBidWlsZChTVkdGaWx0ZXJCdWlsZGVyKiwgRmlsdGVy
JikgY29uc3QgPSAwOworICAgIHZpcnR1YWwgUmVmUHRyPEZpbHRlckVmZmVjdD4gYnVpbGQoU1ZH
RmlsdGVyQnVpbGRlciYpIGNvbnN0ID0gMDsKICAgICAvLyBSZXR1cm5zIHRydWUsIGlmIHRoZSBu
ZXcgdmFsdWUgaXMgZGlmZmVyZW50IGZyb20gdGhlIG9sZCBvbmUuCiAgICAgdmlydHVhbCBib29s
IHNldEZpbHRlckVmZmVjdEF0dHJpYnV0ZShGaWx0ZXJFZmZlY3QqLCBjb25zdCBRdWFsaWZpZWRO
YW1lJik7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9ncmFwaGljcy9maWx0ZXJz
L1NWR0ZFSW1hZ2UuY3BwIGIvU291cmNlL1dlYkNvcmUvc3ZnL2dyYXBoaWNzL2ZpbHRlcnMvU1ZH
RkVJbWFnZS5jcHAKaW5kZXggNDVmN2MyOTRhZGI5Li40ZDY5YTgwZDZiMjUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3N2Zy9ncmFwaGljcy9maWx0ZXJzL1NWR0ZFSW1hZ2UuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3N2Zy9ncmFwaGljcy9maWx0ZXJzL1NWR0ZFSW1hZ2UuY3BwCkBAIC0z
NSw0MiArMzUsNDIgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1GRUltYWdlOjpGRUltYWdl
KEZpbHRlciYgZmlsdGVyLCBSZWZQdHI8SW1hZ2U+IGltYWdlLCBjb25zdCBTVkdQcmVzZXJ2ZUFz
cGVjdFJhdGlvVmFsdWUmIHByZXNlcnZlQXNwZWN0UmF0aW8pCi0gICAgOiBGaWx0ZXJFZmZlY3Qo
ZmlsdGVyLCBGaWx0ZXJFZmZlY3Q6OlR5cGU6OkZFSW1hZ2UpCitGRUltYWdlOjpGRUltYWdlKFJl
ZlB0cjxJbWFnZT4gaW1hZ2UsIGNvbnN0IFNWR1ByZXNlcnZlQXNwZWN0UmF0aW9WYWx1ZSYgcHJl
c2VydmVBc3BlY3RSYXRpbykKKyAgICA6IEZpbHRlckVmZmVjdChGaWx0ZXJFZmZlY3Q6OlR5cGU6
OkZFSW1hZ2UpCiAgICAgLCBtX2ltYWdlKGltYWdlKQogICAgICwgbV9wcmVzZXJ2ZUFzcGVjdFJh
dGlvKHByZXNlcnZlQXNwZWN0UmF0aW8pCiB7CiB9CiAKLUZFSW1hZ2U6OkZFSW1hZ2UoRmlsdGVy
JiBmaWx0ZXIsIFRyZWVTY29wZSYgdHJlZVNjb3BlLCBjb25zdCBTdHJpbmcmIGhyZWYsIGNvbnN0
IFNWR1ByZXNlcnZlQXNwZWN0UmF0aW9WYWx1ZSYgcHJlc2VydmVBc3BlY3RSYXRpbykKLSAgICA6
IEZpbHRlckVmZmVjdChmaWx0ZXIsIEZpbHRlckVmZmVjdDo6VHlwZTo6RkVJbWFnZSkKK0ZFSW1h
Z2U6OkZFSW1hZ2UoVHJlZVNjb3BlJiB0cmVlU2NvcGUsIGNvbnN0IFN0cmluZyYgaHJlZiwgY29u
c3QgU1ZHUHJlc2VydmVBc3BlY3RSYXRpb1ZhbHVlJiBwcmVzZXJ2ZUFzcGVjdFJhdGlvKQorICAg
IDogRmlsdGVyRWZmZWN0KEZpbHRlckVmZmVjdDo6VHlwZTo6RkVJbWFnZSkKICAgICAsIG1fdHJl
ZVNjb3BlKCZ0cmVlU2NvcGUpCiAgICAgLCBtX2hyZWYoaHJlZikKICAgICAsIG1fcHJlc2VydmVB
c3BlY3RSYXRpbyhwcmVzZXJ2ZUFzcGVjdFJhdGlvKQogewogfQogCi1SZWY8RkVJbWFnZT4gRkVJ
bWFnZTo6Y3JlYXRlV2l0aEltYWdlKEZpbHRlciYgZmlsdGVyLCBSZWZQdHI8SW1hZ2U+IGltYWdl
LCBjb25zdCBTVkdQcmVzZXJ2ZUFzcGVjdFJhdGlvVmFsdWUmIHByZXNlcnZlQXNwZWN0UmF0aW8p
CitSZWY8RkVJbWFnZT4gRkVJbWFnZTo6Y3JlYXRlV2l0aEltYWdlKFJlZlB0cjxJbWFnZT4gaW1h
Z2UsIGNvbnN0IFNWR1ByZXNlcnZlQXNwZWN0UmF0aW9WYWx1ZSYgcHJlc2VydmVBc3BlY3RSYXRp
bykKIHsKLSAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBGRUltYWdlKGZpbHRlciwgaW1hZ2UsIHBy
ZXNlcnZlQXNwZWN0UmF0aW8pKTsKKyAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBGRUltYWdlKGlt
YWdlLCBwcmVzZXJ2ZUFzcGVjdFJhdGlvKSk7CiB9CiAKLVJlZjxGRUltYWdlPiBGRUltYWdlOjpj
cmVhdGVXaXRoSVJJUmVmZXJlbmNlKEZpbHRlciYgZmlsdGVyLCBUcmVlU2NvcGUmIHRyZWVTY29w
ZSwgY29uc3QgU3RyaW5nJiBocmVmLCBjb25zdCBTVkdQcmVzZXJ2ZUFzcGVjdFJhdGlvVmFsdWUm
IHByZXNlcnZlQXNwZWN0UmF0aW8pCitSZWY8RkVJbWFnZT4gRkVJbWFnZTo6Y3JlYXRlV2l0aElS
SVJlZmVyZW5jZShUcmVlU2NvcGUmIHRyZWVTY29wZSwgY29uc3QgU3RyaW5nJiBocmVmLCBjb25z
dCBTVkdQcmVzZXJ2ZUFzcGVjdFJhdGlvVmFsdWUmIHByZXNlcnZlQXNwZWN0UmF0aW8pCiB7Ci0g
ICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgRkVJbWFnZShmaWx0ZXIsIHRyZWVTY29wZSwgaHJlZiwg
cHJlc2VydmVBc3BlY3RSYXRpbykpOworICAgIHJldHVybiBhZG9wdFJlZigqbmV3IEZFSW1hZ2Uo
dHJlZVNjb3BlLCBocmVmLCBwcmVzZXJ2ZUFzcGVjdFJhdGlvKSk7CiB9CiAKLXZvaWQgRkVJbWFn
ZTo6ZGV0ZXJtaW5lQWJzb2x1dGVQYWludFJlY3QoKQordm9pZCBGRUltYWdlOjpkZXRlcm1pbmVB
YnNvbHV0ZVBhaW50UmVjdChjb25zdCBGaWx0ZXImIGZpbHRlcikKIHsKICAgICBGbG9hdFJlY3Qg
cGFpbnRSZWN0ID0gZmlsdGVyUHJpbWl0aXZlU3VicmVnaW9uKCk7Ci0gICAgcGFpbnRSZWN0LnNj
YWxlKGZpbHRlcigpLmZpbHRlclNjYWxlKCkpOworICAgIHBhaW50UmVjdC5zY2FsZShmaWx0ZXIu
ZmlsdGVyU2NhbGUoKSk7CiAgICAgRmxvYXRSZWN0IHNyY1JlY3Q7CiAgICAgaWYgKG1faW1hZ2Up
IHsKICAgICAgICAgc3JjUmVjdC5zZXRTaXplKG1faW1hZ2UtPnNpemUoKSk7CiAgICAgICAgIG1f
cHJlc2VydmVBc3BlY3RSYXRpby50cmFuc2Zvcm1SZWN0KHBhaW50UmVjdCwgc3JjUmVjdCk7CiAg
ICAgfSBlbHNlIGlmIChSZW5kZXJFbGVtZW50KiByZW5kZXJlciA9IHJlZmVyZW5jZWRSZW5kZXJl
cigpKSB7CiAgICAgICAgIHNyY1JlY3QgPSByZW5kZXJlci0+cmVwYWludFJlY3RJbkxvY2FsQ29v
cmRpbmF0ZXMoKTsKLSAgICAgICAgc3JjUmVjdC5zY2FsZShmaWx0ZXIoKS5maWx0ZXJTY2FsZSgp
KTsKKyAgICAgICAgc3JjUmVjdC5zY2FsZShmaWx0ZXIuZmlsdGVyU2NhbGUoKSk7CiAgICAgfQog
CiAgICAgaWYgKGNsaXBzVG9Cb3VuZHMoKSkKQEAgLTkwLDcgKzkwLDcgQEAgUmVuZGVyRWxlbWVu
dCogRkVJbWFnZTo6cmVmZXJlbmNlZFJlbmRlcmVyKCkgY29uc3QKICAgICByZXR1cm4gdGFyZ2V0
LmVsZW1lbnQtPnJlbmRlcmVyKCk7CiB9CiAKLXZvaWQgRkVJbWFnZTo6cGxhdGZvcm1BcHBseVNv
ZnR3YXJlKCkKK3ZvaWQgRkVJbWFnZTo6cGxhdGZvcm1BcHBseVNvZnR3YXJlKGNvbnN0IEZpbHRl
ciYgZmlsdGVyKQogewogICAgIFJlbmRlckVsZW1lbnQqIHJlbmRlcmVyID0gcmVmZXJlbmNlZFJl
bmRlcmVyKCk7CiAgICAgaWYgKCFtX2ltYWdlICYmICFyZW5kZXJlcikKQEAgLTEwNCwxMiArMTA0
LDEyIEBAIHZvaWQgRkVJbWFnZTo6cGxhdGZvcm1BcHBseVNvZnR3YXJlKCkKICAgICAgICAgcmV0
dXJuOwogCiAgICAgRmxvYXRSZWN0IGRlc3RSZWN0ID0gZmlsdGVyUHJpbWl0aXZlU3VicmVnaW9u
KCk7Ci0gICAgZGVzdFJlY3Quc2NhbGUoZmlsdGVyKCkuZmlsdGVyU2NhbGUoKSk7CisgICAgZGVz
dFJlY3Quc2NhbGUoZmlsdGVyLmZpbHRlclNjYWxlKCkpOwogCiAgICAgRmxvYXRSZWN0IHNyY1Jl
Y3Q7CiAgICAgaWYgKHJlbmRlcmVyKSB7CiAgICAgICAgIHNyY1JlY3QgPSByZW5kZXJlci0+cmVw
YWludFJlY3RJbkxvY2FsQ29vcmRpbmF0ZXMoKTsKLSAgICAgICAgc3JjUmVjdC5zY2FsZShmaWx0
ZXIoKS5maWx0ZXJTY2FsZSgpKTsKKyAgICAgICAgc3JjUmVjdC5zY2FsZShmaWx0ZXIuZmlsdGVy
U2NhbGUoKSk7CiAgICAgfSBlbHNlIHsKICAgICAgICAgc3JjUmVjdCA9IEZsb2F0UmVjdChGbG9h
dFBvaW50KCksIG1faW1hZ2UtPnNpemUoKSk7CiAgICAgICAgIG1fcHJlc2VydmVBc3BlY3RSYXRp
by50cmFuc2Zvcm1SZWN0KGRlc3RSZWN0LCBzcmNSZWN0KTsKQEAgLTEyMSw3ICsxMjEsNyBAQCB2
b2lkIEZFSW1hZ2U6OnBsYXRmb3JtQXBwbHlTb2Z0d2FyZSgpCiAgICAgYXV0byYgY29udGV4dCA9
IHJlc3VsdEltYWdlLT5jb250ZXh0KCk7CiAKICAgICBpZiAocmVuZGVyZXIpIHsKLSAgICAgICAg
Y29udGV4dC5zY2FsZShmaWx0ZXIoKS5maWx0ZXJTY2FsZSgpKTsKKyAgICAgICAgY29udGV4dC5z
Y2FsZShmaWx0ZXIuZmlsdGVyU2NhbGUoKSk7CiAKICAgICAgICAgUmVmUHRyIGNvbnRleHROb2Rl
ID0gZG93bmNhc3Q8U1ZHRWxlbWVudD4ocmVuZGVyZXItPmVsZW1lbnQoKSk7CiAgICAgICAgIGlm
IChjb250ZXh0Tm9kZS0+aGFzUmVsYXRpdmVMZW5ndGhzKCkpIHsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3N2Zy9ncmFwaGljcy9maWx0ZXJzL1NWR0ZFSW1hZ2UuaCBiL1NvdXJjZS9XZWJD
b3JlL3N2Zy9ncmFwaGljcy9maWx0ZXJzL1NWR0ZFSW1hZ2UuaAppbmRleCAxNjg4OTkxNjQ2MmIu
LmM0MjEzY2FmNzJjZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL2dyYXBoaWNzL2Zp
bHRlcnMvU1ZHRkVJbWFnZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9ncmFwaGljcy9maWx0
ZXJzL1NWR0ZFSW1hZ2UuaApAQCAtMzQsMTggKzM0LDE4IEBAIGNsYXNzIFRyZWVTY29wZTsKIAog
Y2xhc3MgRkVJbWFnZSBmaW5hbCA6IHB1YmxpYyBGaWx0ZXJFZmZlY3QgewogcHVibGljOgotICAg
IHN0YXRpYyBSZWY8RkVJbWFnZT4gY3JlYXRlV2l0aEltYWdlKEZpbHRlciYsIFJlZlB0cjxJbWFn
ZT4sIGNvbnN0IFNWR1ByZXNlcnZlQXNwZWN0UmF0aW9WYWx1ZSYpOwotICAgIHN0YXRpYyBSZWY8
RkVJbWFnZT4gY3JlYXRlV2l0aElSSVJlZmVyZW5jZShGaWx0ZXImLCBUcmVlU2NvcGUmLCBjb25z
dCBTdHJpbmcmLCBjb25zdCBTVkdQcmVzZXJ2ZUFzcGVjdFJhdGlvVmFsdWUmKTsKKyAgICBzdGF0
aWMgUmVmPEZFSW1hZ2U+IGNyZWF0ZVdpdGhJbWFnZShSZWZQdHI8SW1hZ2U+LCBjb25zdCBTVkdQ
cmVzZXJ2ZUFzcGVjdFJhdGlvVmFsdWUmKTsKKyAgICBzdGF0aWMgUmVmPEZFSW1hZ2U+IGNyZWF0
ZVdpdGhJUklSZWZlcmVuY2UoVHJlZVNjb3BlJiwgY29uc3QgU3RyaW5nJiwgY29uc3QgU1ZHUHJl
c2VydmVBc3BlY3RSYXRpb1ZhbHVlJik7CiAKIHByaXZhdGU6CiAgICAgdmlydHVhbCB+RkVJbWFn
ZSgpID0gZGVmYXVsdDsKLSAgICBGRUltYWdlKEZpbHRlciYsIFJlZlB0cjxJbWFnZT4sIGNvbnN0
IFNWR1ByZXNlcnZlQXNwZWN0UmF0aW9WYWx1ZSYpOwotICAgIEZFSW1hZ2UoRmlsdGVyJiwgVHJl
ZVNjb3BlJiwgY29uc3QgU3RyaW5nJiwgY29uc3QgU1ZHUHJlc2VydmVBc3BlY3RSYXRpb1ZhbHVl
Jik7CisgICAgRkVJbWFnZShSZWZQdHI8SW1hZ2U+LCBjb25zdCBTVkdQcmVzZXJ2ZUFzcGVjdFJh
dGlvVmFsdWUmKTsKKyAgICBGRUltYWdlKFRyZWVTY29wZSYsIGNvbnN0IFN0cmluZyYsIGNvbnN0
IFNWR1ByZXNlcnZlQXNwZWN0UmF0aW9WYWx1ZSYpOwogCiAgICAgUmVuZGVyRWxlbWVudCogcmVm
ZXJlbmNlZFJlbmRlcmVyKCkgY29uc3Q7CiAKLSAgICB2b2lkIHBsYXRmb3JtQXBwbHlTb2Z0d2Fy
ZSgpIGZpbmFsOwotICAgIHZvaWQgZGV0ZXJtaW5lQWJzb2x1dGVQYWludFJlY3QoKSBmaW5hbDsK
KyAgICB2b2lkIHBsYXRmb3JtQXBwbHlTb2Z0d2FyZShjb25zdCBGaWx0ZXImKSBmaW5hbDsKKyAg
ICB2b2lkIGRldGVybWluZUFic29sdXRlUGFpbnRSZWN0KGNvbnN0IEZpbHRlciYpIGZpbmFsOwog
ICAgIFdURjo6VGV4dFN0cmVhbSYgZXh0ZXJuYWxSZXByZXNlbnRhdGlvbihXVEY6OlRleHRTdHJl
YW0mLCBSZXByZXNlbnRhdGlvblR5cGUpIGNvbnN0IGZpbmFsOwogCiAgICAgUmVmUHRyPEltYWdl
PiBtX2ltYWdlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL2dyYXBoaWNzL2ZpbHRl
cnMvU1ZHRmlsdGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9ncmFwaGljcy9maWx0ZXJzL1NW
R0ZpbHRlci5jcHAKaW5kZXggNGEzZDkyYmJlY2U0Li44M2YzNDFhZDM0NTcgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3N2Zy9ncmFwaGljcy9maWx0ZXJzL1NWR0ZpbHRlci5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvc3ZnL2dyYXBoaWNzL2ZpbHRlcnMvU1ZHRmlsdGVyLmNwcApAQCAtNDQs
MTQgKzQ0LDE0IEBAIFJlZlB0cjxTVkdGaWx0ZXI+IFNWR0ZpbHRlcjo6Y3JlYXRlKFNWR0ZpbHRl
ckVsZW1lbnQmIGZpbHRlckVsZW1lbnQsIFNWR0ZpbHRlckJ1CiAgICAgYXV0byBmaWx0ZXIgPSBh
ZG9wdFJlZigqbmV3IFNWR0ZpbHRlcihmaWx0ZXJTY2FsZSwgc291cmNlSW1hZ2VSZWN0LCBmaWx0
ZXJSZWdpb24sIHRhcmdldEJvdW5kaW5nQm94LCBwcmltaXRpdmVCb3VuZGluZ0JveE1vZGUpKTsK
IAogICAgIGlmICghcHJldmlvdXNFZmZlY3QpCi0gICAgICAgIGJ1aWxkZXIuc2V0dXBCdWlsdGlu
RWZmZWN0cyhTb3VyY2VHcmFwaGljOjpjcmVhdGUoZmlsdGVyKSk7CisgICAgICAgIGJ1aWxkZXIu
c2V0dXBCdWlsdGluRWZmZWN0cyhTb3VyY2VHcmFwaGljOjpjcmVhdGUoKSk7CiAgICAgZWxzZQog
ICAgICAgICBidWlsZGVyLnNldHVwQnVpbHRpbkVmZmVjdHMoeyAqcHJldmlvdXNFZmZlY3QgfSk7
CiAKICAgICBidWlsZGVyLnNldFRhcmdldEJvdW5kaW5nQm94KHRhcmdldEJvdW5kaW5nQm94KTsK
ICAgICBidWlsZGVyLnNldFByaW1pdGl2ZVVuaXRzKGZpbHRlckVsZW1lbnQucHJpbWl0aXZlVW5p
dHMoKSk7CiAKLSAgICBhdXRvIGxhc3RFZmZlY3QgPSBidWlsZGVyLmJ1aWxkRmlsdGVyRWZmZWN0
cyhmaWx0ZXIsIGZpbHRlckVsZW1lbnQpOworICAgIGF1dG8gbGFzdEVmZmVjdCA9IGJ1aWxkZXIu
YnVpbGRGaWx0ZXJFZmZlY3RzKGZpbHRlckVsZW1lbnQpOwogICAgIGlmICghbGFzdEVmZmVjdCkK
ICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgCkBAIC03OCw2ICs3OCwxNyBAQCBGbG9hdFNp
emUgU1ZHRmlsdGVyOjpzY2FsZWRCeUZpbHRlclNjYWxlKEZsb2F0U2l6ZSBzaXplKSBjb25zdAog
ICAgIHJldHVybiBGaWx0ZXI6OnNjYWxlZEJ5RmlsdGVyU2NhbGUoc2l6ZSk7CiB9CiAKK3ZvaWQg
U1ZHRmlsdGVyOjphcHBseShjb25zdCBGaWx0ZXImIGZpbHRlcikKK3sKKyAgICBzZXRTb3VyY2VJ
bWFnZSh7IGZpbHRlci5zb3VyY2VJbWFnZSgpIH0pOworICAgIGFwcGx5RmlsdGVyKCk7Cit9CisK
K3ZvaWQgU1ZHRmlsdGVyOjphcHBseUZpbHRlcigpCit7CisgICAgbV9sYXN0RWZmZWN0LT5hcHBs
eSgqdGhpcyk7Cit9CisKIEludE91dHNldHMgU1ZHRmlsdGVyOjpvdXRzZXRzKCkgY29uc3QKIHsK
ICAgICByZXR1cm4gbV9sYXN0RWZmZWN0LT5vdXRzZXRzKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9zdmcvZ3JhcGhpY3MvZmlsdGVycy9TVkdGaWx0ZXIuaCBiL1NvdXJjZS9XZWJDb3Jl
L3N2Zy9ncmFwaGljcy9maWx0ZXJzL1NWR0ZpbHRlci5oCmluZGV4IDE2NjAxMmZmNGViYS4uZmU4
MjJkODFmOWNjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvZ3JhcGhpY3MvZmlsdGVy
cy9TVkdGaWx0ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvZ3JhcGhpY3MvZmlsdGVycy9T
VkdGaWx0ZXIuaApAQCAtMzcsNiArMzcsOCBAQCBwdWJsaWM6CiAgICAgc3RhdGljIFJlZlB0cjxT
VkdGaWx0ZXI+IGNyZWF0ZShTVkdGaWx0ZXJFbGVtZW50JiwgU1ZHRmlsdGVyQnVpbGRlciYsIGNv
bnN0IEZsb2F0U2l6ZSYgZmlsdGVyU2NhbGUsIGNvbnN0IEZsb2F0UmVjdCYgc291cmNlSW1hZ2VS
ZWN0LCBjb25zdCBGbG9hdFJlY3QmIGZpbHRlclJlZ2lvbiwgY29uc3QgRmxvYXRSZWN0JiB0YXJn
ZXRCb3VuZGluZ0JveCwgRmlsdGVyRWZmZWN0KiBwcmV2aW91c0VmZmVjdCk7CiAKICAgICBGbG9h
dFNpemUgc2NhbGVkQnlGaWx0ZXJTY2FsZShGbG9hdFNpemUpIGNvbnN0IGZpbmFsOworICAgIHZv
aWQgYXBwbHkoY29uc3QgRmlsdGVyJikgb3ZlcnJpZGU7CisgICAgdm9pZCBhcHBseUZpbHRlcigp
IG92ZXJyaWRlOwogCiAgICAgRmxvYXRSZWN0IHRhcmdldEJvdW5kaW5nQm94KCkgY29uc3QgeyBy
ZXR1cm4gbV90YXJnZXRCb3VuZGluZ0JveDsgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9zdmcvZ3JhcGhpY3MvZmlsdGVycy9TVkdGaWx0ZXJCdWlsZGVyLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3N2Zy9ncmFwaGljcy9maWx0ZXJzL1NWR0ZpbHRlckJ1aWxkZXIuY3BwCmluZGV4IDAzODk3
ZDJhNjBiYy4uYTg2YzBhOWNjOTljIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvZ3Jh
cGhpY3MvZmlsdGVycy9TVkdGaWx0ZXJCdWlsZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9z
dmcvZ3JhcGhpY3MvZmlsdGVycy9TVkdGaWx0ZXJCdWlsZGVyLmNwcApAQCAtNTgsNyArNTgsNyBA
QCBzdGF0aWMgQ29sb3JJbnRlcnBvbGF0aW9uIGNvbG9ySW50ZXJwb2xhdGlvbkZvckVsZW1lbnQo
U1ZHRWxlbWVudCYgZWxlbWVudCkKIH0KICNlbmRpZgogCi1SZWZQdHI8RmlsdGVyRWZmZWN0PiBT
VkdGaWx0ZXJCdWlsZGVyOjpidWlsZEZpbHRlckVmZmVjdHMoRmlsdGVyJiBmaWx0ZXIsIFNWR0Zp
bHRlckVsZW1lbnQmIGZpbHRlckVsZW1lbnQpCitSZWZQdHI8RmlsdGVyRWZmZWN0PiBTVkdGaWx0
ZXJCdWlsZGVyOjpidWlsZEZpbHRlckVmZmVjdHMoU1ZHRmlsdGVyRWxlbWVudCYgZmlsdGVyRWxl
bWVudCkKIHsKICAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgbWF4Q291bnRDaGlsZE5vZGVzID0g
MjAwOwogICAgIGlmIChmaWx0ZXJFbGVtZW50LmNvdW50Q2hpbGROb2RlcygpID4gbWF4Q291bnRD
aGlsZE5vZGVzKQpAQCAtNjcsNyArNjcsNyBAQCBSZWZQdHI8RmlsdGVyRWZmZWN0PiBTVkdGaWx0
ZXJCdWlsZGVyOjpidWlsZEZpbHRlckVmZmVjdHMoRmlsdGVyJiBmaWx0ZXIsIFNWR0ZpbAogICAg
IFJlZlB0cjxGaWx0ZXJFZmZlY3Q+IGVmZmVjdDsKIAogICAgIGZvciAoYXV0byYgZWZmZWN0RWxl
bWVudCA6IGNoaWxkcmVuT2ZUeXBlPFNWR0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRl
cz4oZmlsdGVyRWxlbWVudCkpIHsKLSAgICAgICAgZWZmZWN0ID0gZWZmZWN0RWxlbWVudC5idWls
ZCh0aGlzLCBmaWx0ZXIpOworICAgICAgICBlZmZlY3QgPSBlZmZlY3RFbGVtZW50LmJ1aWxkKCp0
aGlzKTsKICAgICAgICAgaWYgKCFlZmZlY3QpIHsKICAgICAgICAgICAgIGNsZWFyRWZmZWN0cygp
OwogICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9zdmcvZ3JhcGhpY3MvZmlsdGVycy9TVkdGaWx0ZXJCdWlsZGVyLmggYi9Tb3VyY2UvV2ViQ29y
ZS9zdmcvZ3JhcGhpY3MvZmlsdGVycy9TVkdGaWx0ZXJCdWlsZGVyLmgKaW5kZXggMzc1YmRiMTUz
MWVmLi5iN2I4MjRiNDg0MzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9ncmFwaGlj
cy9maWx0ZXJzL1NWR0ZpbHRlckJ1aWxkZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvZ3Jh
cGhpY3MvZmlsdGVycy9TVkdGaWx0ZXJCdWlsZGVyLmgKQEAgLTY2LDcgKzY2LDcgQEAgcHVibGlj
OgogICAgIHZvaWQgY2xlYXJSZXN1bHRzUmVjdXJzaXZlKEZpbHRlckVmZmVjdCopOwogCiAgICAg
dm9pZCBzZXR1cEJ1aWx0aW5FZmZlY3RzKFJlZjxGaWx0ZXJFZmZlY3Q+IHNvdXJjZUdyYXBoaWMp
OwotICAgIFJlZlB0cjxGaWx0ZXJFZmZlY3Q+IGJ1aWxkRmlsdGVyRWZmZWN0cyhGaWx0ZXImLCBT
VkdGaWx0ZXJFbGVtZW50Jik7CisgICAgUmVmUHRyPEZpbHRlckVmZmVjdD4gYnVpbGRGaWx0ZXJF
ZmZlY3RzKFNWR0ZpbHRlckVsZW1lbnQmKTsKIAogcHJpdmF0ZToKICAgICBpbmxpbmUgdm9pZCBh
ZGRCdWlsdGluRWZmZWN0cygpCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>443914</attachid>
            <date>2021-11-10 23:07:29 -0800</date>
            <delta_ts>2021-11-10 23:56:04 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-232551-20211110230728.patch</filename>
            <type>text/plain</type>
            <size>157103</size>
            <attacher name="Said Abou-Hallawa">sabouhallawa</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg1NjE4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggM2ZlOWQxZWFhM2IzODY0
ZTU1N2NiM2RhOWU2N2M1NTJjZWFiM2E0Ny4uNGQ4ZTc3YTJkYzZmMTU5ZGNlZWI0M2VhMzZmOGE0
MzExOTJlYjM3YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI0MCBAQAorMjAyMS0xMS0xMCAgU2Fp
ZCBBYm91LUhhbGxhd2EgIDxzYWlkQGFwcGxlLmNvbT4KKworICAgICAgICBbR1BVIFByb2Nlc3Nd
IFJlbW92ZSB0aGUgcmVmZXJlbmNlIHRvIEZpbHRlciBmcm9tIEZpbHRlckVmZmVjdAorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjMyNTUxCisgICAgICAg
IHJkYXI6Ly84NTEzNjQ0NworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgIEluc3RlYWQgb2YgaGF2aW5nIGEgcmVmZXJlbmNlIHRvIHRoZSBGaWx0ZXIgaW4g
dGhlIEZpbHRlckVmZmVjdCwgd2UgYXJlCisgICAgICAgIGdvaW5nIHRvIHBhc3MgYSByZWZlcmVu
Y2UgdG8gdGhlIEZpbHRlciB0byB0aGUgRmlsdGVyRWZmZWN0IGZ1bmN0aW9ucworICAgICAgICBv
bmx5IHdoZW4gbmVlZGVkLiBGaWx0ZXJFZmZlY3QgbWF5IG5lZWQgYWNjZXNzIHRvIHRoZSBGaWx0
ZXIgb25seSBpbiB0d28KKyAgICAgICAgbWV0aG9kczogZGV0ZXJtaW5lQWJzb2x1dGVQYWludFJl
Y3QoKSBhbmQgcGxhdGZvcm1BcHBseVNvZnR3YXJlKCkuCisKKyAgICAgICAgV2UgbmVlZCB0byBj
aGFuZ2UgYWxsIHRoZSBGaWx0ZXJFZmZlY3QgY3JlYXRlIG1ldGhvZHMgdG8gbm90IHRha2UgYSBG
aWx0ZXIKKyAgICAgICAgYXMgaW5wdXQuIFRoaXMgcmVxdWlyZXMgdGhlIFNWRyBmaWx0ZXIgZWZm
ZWN0IGVsZW1lbnRzIHRvIGNoYW5nZSB0aGVpcgorICAgICAgICBidWlsZCgpIG1ldGhvZC4gQW5k
IGl0IHJlcXVpcmVzIGFsc28gQ1NTRmlsdGVyIHRvIG5vdCBwYXNzIGl0c2VsZiB0byB0aGUKKyAg
ICAgICAgRmlsdGVyRWZmZWN0cyBpdHMgY3JlYXRlLgorCisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3MvY29yZWltYWdlL0ZpbHRlckVmZmVjdFJlbmRlcmVyQ29yZUltYWdlLmg6CisgICAgICAg
ICogcGxhdGZvcm0vZ3JhcGhpY3MvY29yZWltYWdlL0ZpbHRlckVmZmVjdFJlbmRlcmVyQ29yZUlt
YWdlLm1tOgorICAgICAgICAoV2ViQ29yZTo6RmlsdGVyRWZmZWN0UmVuZGVyZXJDb3JlSW1hZ2U6
OmFwcGx5RWZmZWN0cyk6CisgICAgICAgIChXZWJDb3JlOjpGaWx0ZXJFZmZlY3RSZW5kZXJlckNv
cmVJbWFnZTo6Y29ubmVjdENJRmlsdGVycyk6CisgICAgICAgIChXZWJDb3JlOjpGaWx0ZXJFZmZl
Y3RSZW5kZXJlckNvcmVJbWFnZTo6aW1hZ2VGb3JTb3VyY2VHcmFwaGljKToKKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy9jcHUvYXJtL2ZpbHRlcnMvRkVCbGVuZE5FT04uaDoKKyAgICAgICAg
KFdlYkNvcmU6OkZFQmxlbmQ6OnBsYXRmb3JtQXBwbHlTb2Z0d2FyZSk6CisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRUJsZW5kLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZF
QmxlbmQ6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpGRUJsZW5kOjpGRUJsZW5kKToKKyAg
ICAgICAgKFdlYkNvcmU6OkZFQmxlbmQ6OnBsYXRmb3JtQXBwbHlTb2Z0d2FyZSk6CisgICAgICAg
ICogcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRUJsZW5kLmg6CisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvZmlsdGVycy9GRUNvbG9yTWF0cml4LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkZFQ29sb3JNYXRyaXg6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpGRUNvbG9yTWF0cml4
OjpGRUNvbG9yTWF0cml4KToKKyAgICAgICAgKFdlYkNvcmU6OkZFQ29sb3JNYXRyaXg6OnBsYXRm
b3JtQXBwbHlTb2Z0d2FyZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9G
RUNvbG9yTWF0cml4Lmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRUNv
bXBvbmVudFRyYW5zZmVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZFQ29tcG9uZW50VHJhbnNm
ZXI6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpGRUNvbXBvbmVudFRyYW5zZmVyOjpGRUNv
bXBvbmVudFRyYW5zZmVyKToKKyAgICAgICAgKFdlYkNvcmU6OkZFQ29tcG9uZW50VHJhbnNmZXI6
OnBsYXRmb3JtQXBwbHlTb2Z0d2FyZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZmls
dGVycy9GRUNvbXBvbmVudFRyYW5zZmVyLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
ZmlsdGVycy9GRUNvbXBvc2l0ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGRUNvbXBvc2l0ZTo6
Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkZFQ29tcG9zaXRlOjpGRUNvbXBvc2l0ZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpGRUNvbXBvc2l0ZTo6ZGV0ZXJtaW5lQWJzb2x1dGVQYWludFJlY3Qp
OgorICAgICAgICAoV2ViQ29yZTo6RkVDb21wb3NpdGU6OnBsYXRmb3JtQXBwbHlTb2Z0d2FyZSk6
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRUNvbXBvc2l0ZS5oOgorICAg
ICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVDb252b2x2ZU1hdHJpeC5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpGRUNvbnZvbHZlTWF0cml4OjpjcmVhdGUpOgorICAgICAgICAoV2Vi
Q29yZTo6RkVDb252b2x2ZU1hdHJpeDo6RkVDb252b2x2ZU1hdHJpeCk6CisgICAgICAgIChXZWJD
b3JlOjpGRUNvbnZvbHZlTWF0cml4OjpwbGF0Zm9ybUFwcGx5U29mdHdhcmUpOgorICAgICAgICAq
IHBsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVDb252b2x2ZU1hdHJpeC5oOgorICAgICAgICAq
IHBsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVEaWZmdXNlTGlnaHRpbmcuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6RkVEaWZmdXNlTGlnaHRpbmc6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3Jl
OjpGRURpZmZ1c2VMaWdodGluZzo6RkVEaWZmdXNlTGlnaHRpbmcpOgorICAgICAgICAqIHBsYXRm
b3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVEaWZmdXNlTGlnaHRpbmcuaDoKKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFRGlzcGxhY2VtZW50TWFwLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkZFRGlzcGxhY2VtZW50TWFwOjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6RkVE
aXNwbGFjZW1lbnRNYXA6OkZFRGlzcGxhY2VtZW50TWFwKToKKyAgICAgICAgKFdlYkNvcmU6OkZF
RGlzcGxhY2VtZW50TWFwOjpwbGF0Zm9ybUFwcGx5U29mdHdhcmUpOgorICAgICAgICAqIHBsYXRm
b3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVEaXNwbGFjZW1lbnRNYXAuaDoKKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFRHJvcFNoYWRvdy5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpGRURyb3BTaGFkb3c6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpGRURyb3BTaGFkb3c6
OkZFRHJvcFNoYWRvdyk6CisgICAgICAgIChXZWJDb3JlOjpGRURyb3BTaGFkb3c6OmRldGVybWlu
ZUFic29sdXRlUGFpbnRSZWN0KToKKyAgICAgICAgKFdlYkNvcmU6OkZFRHJvcFNoYWRvdzo6cGxh
dGZvcm1BcHBseVNvZnR3YXJlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJz
L0ZFRHJvcFNoYWRvdy5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVG
bG9vZC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGRUZsb29kOjpjcmVhdGUpOgorICAgICAgICAo
V2ViQ29yZTo6RkVGbG9vZDo6RkVGbG9vZCk6CisgICAgICAgIChXZWJDb3JlOjpGRUZsb29kOjpw
bGF0Zm9ybUFwcGx5U29mdHdhcmUpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2ZpbHRl
cnMvRkVGbG9vZC5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVHYXVz
c2lhbkJsdXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RkVHYXVzc2lhbkJsdXI6OmNyZWF0ZSk6
CisgICAgICAgIChXZWJDb3JlOjpGRUdhdXNzaWFuQmx1cjo6RkVHYXVzc2lhbkJsdXIpOgorICAg
ICAgICAoV2ViQ29yZTo6RkVHYXVzc2lhbkJsdXI6OmRldGVybWluZUFic29sdXRlUGFpbnRSZWN0
KToKKyAgICAgICAgKFdlYkNvcmU6OkZFR2F1c3NpYW5CbHVyOjpwbGF0Zm9ybUFwcGx5U29mdHdh
cmUpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVHYXVzc2lhbkJsdXIu
aDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFTGlnaHRpbmcuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6RkVMaWdodGluZzo6RkVMaWdodGluZyk6CisgICAgICAgIChXZWJD
b3JlOjpGRUxpZ2h0aW5nOjpwbGF0Zm9ybUFwcGx5U29mdHdhcmUpOgorICAgICAgICAqIHBsYXRm
b3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVMaWdodGluZy5oOgorICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL2ZpbHRlcnMvRkVNZXJnZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGRU1lcmdlOjpj
cmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6RkVNZXJnZTo6RkVNZXJnZSk6CisgICAgICAgIChX
ZWJDb3JlOjpGRU1lcmdlOjpwbGF0Zm9ybUFwcGx5U29mdHdhcmUpOgorICAgICAgICAqIHBsYXRm
b3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVNZXJnZS5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL2ZpbHRlcnMvRkVNb3JwaG9sb2d5LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZFTW9ycGhv
bG9neTo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkZFTW9ycGhvbG9neTo6RkVNb3JwaG9s
b2d5KToKKyAgICAgICAgKFdlYkNvcmU6OkZFTW9ycGhvbG9neTo6ZGV0ZXJtaW5lQWJzb2x1dGVQ
YWludFJlY3QpOgorICAgICAgICAoV2ViQ29yZTo6RkVNb3JwaG9sb2d5OjpwbGF0Zm9ybUFwcGx5
U29mdHdhcmUpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVNb3JwaG9s
b2d5Lmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRU9mZnNldC5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpGRU9mZnNldDo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6
OkZFT2Zmc2V0OjpGRU9mZnNldCk6CisgICAgICAgIChXZWJDb3JlOjpGRU9mZnNldDo6ZGV0ZXJt
aW5lQWJzb2x1dGVQYWludFJlY3QpOgorICAgICAgICAoV2ViQ29yZTo6RkVPZmZzZXQ6OnBsYXRm
b3JtQXBwbHlTb2Z0d2FyZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9G
RU9mZnNldC5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVTcGVjdWxh
ckxpZ2h0aW5nLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZFU3BlY3VsYXJMaWdodGluZzo6Y3Jl
YXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkZFU3BlY3VsYXJMaWdodGluZzo6RkVTcGVjdWxhckxp
Z2h0aW5nKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFU3BlY3VsYXJM
aWdodGluZy5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVUaWxlLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkZFVGlsZTo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6
OkZFVGlsZTo6RkVUaWxlKToKKyAgICAgICAgKFdlYkNvcmU6OkZFVGlsZTo6cGxhdGZvcm1BcHBs
eVNvZnR3YXJlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFVGlsZS5o
OgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVUdXJidWxlbmNlLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkZFVHVyYnVsZW5jZTo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNv
cmU6OkZFVHVyYnVsZW5jZTo6RkVUdXJidWxlbmNlKToKKyAgICAgICAgKFdlYkNvcmU6OkZFVHVy
YnVsZW5jZTo6ZmlsbFJlZ2lvbiBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpGRVR1cmJ1bGVu
Y2U6OmZpbGxSZWdpb25Xb3JrZXIpOgorICAgICAgICAoV2ViQ29yZTo6RkVUdXJidWxlbmNlOjpw
bGF0Zm9ybUFwcGx5U29mdHdhcmUpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2ZpbHRl
cnMvRkVUdXJidWxlbmNlLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9G
aWx0ZXIuaDoKKyAgICAgICAgKFdlYkNvcmU6OkZpbHRlcjo6c291cmNlSW1hZ2UgY29uc3QpOgor
ICAgICAgICAoV2ViQ29yZTo6RmlsdGVyOjpzb3VyY2VJbWFnZSk6IERlbGV0ZWQuCisKKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZpbHRlckVmZmVjdC5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpGaWx0ZXJFZmZlY3Q6OkZpbHRlckVmZmVjdCk6CisgICAgICAgIChXZWJDb3Jl
OjpGaWx0ZXJFZmZlY3Q6OmRldGVybWluZUFic29sdXRlUGFpbnRSZWN0KToKKyAgICAgICAgKFdl
YkNvcmU6OkZpbHRlckVmZmVjdDo6ZGV0ZXJtaW5lRmlsdGVyUHJpbWl0aXZlU3VicmVnaW9uKToK
KyAgICAgICAgKFdlYkNvcmU6OkZpbHRlckVmZmVjdDo6YXBwbHkpOgorICAgICAgICAoV2ViQ29y
ZTo6RmlsdGVyRWZmZWN0OjppbWFnZUJ1ZmZlclJlc3VsdCk6CisgICAgICAgIChXZWJDb3JlOjpG
aWx0ZXJFZmZlY3Q6OmNvbnZlcnRQaXhlbEJ1ZmZlclRvQ29sb3JTcGFjZSk6CisgICAgICAgIChX
ZWJDb3JlOjpGaWx0ZXJFZmZlY3Q6OmNvbnZlcnRJbWFnZUJ1ZmZlclRvQ29sb3JTcGFjZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpGaWx0ZXJFZmZlY3Q6OmNyZWF0ZUltYWdlQnVmZmVyUmVzdWx0KToK
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZpbHRlckVmZmVjdC5oOgorICAg
ICAgICAoV2ViQ29yZTo6RmlsdGVyRWZmZWN0OjpmaWx0ZXIpOiBEZWxldGVkLgorICAgICAgICAo
V2ViQ29yZTo6RmlsdGVyRWZmZWN0OjpmaWx0ZXIgY29uc3QpOiBEZWxldGVkLgorICAgICAgICBD
cmVhdGUgYSB1bmFjY2VsZXJhdGVkIGZpbHRlciBpbWFnZSByZXN1bHQgZm9yIG5vdy4gVGhpcyB3
aWxsIGJlIGZpeGVkIAorICAgICAgICBpbiB0aGUgZm9sbG93aW5nIHBhdGNoLiBBbnl3YXkgY3Vy
cmVudGx5IHdlIG5ldmVyIGNyZWF0ZSBhY2NlbGVyYXRlZAorICAgICAgICBpbnRlcm1lZGlhdGUg
SW1hZ2VCdWZmZXJzIGZvciBmaWx0ZXJzLgorCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
ZmlsdGVycy9GaWx0ZXJFZmZlY3RSZW5kZXJlci5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL2ZpbHRlcnMvU291cmNlQWxwaGEuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U291cmNlQWxw
aGE6OlNvdXJjZUFscGhhKToKKyAgICAgICAgKFdlYkNvcmU6OlNvdXJjZUFscGhhOjpkZXRlcm1p
bmVBYnNvbHV0ZVBhaW50UmVjdCk6CisgICAgICAgIChXZWJDb3JlOjpTb3VyY2VBbHBoYTo6cGxh
dGZvcm1BcHBseVNvZnR3YXJlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJz
L1NvdXJjZUFscGhhLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9Tb3Vy
Y2VHcmFwaGljLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNvdXJjZUdyYXBoaWM6OmNyZWF0ZSk6
CisgICAgICAgIChXZWJDb3JlOjpTb3VyY2VHcmFwaGljOjpTb3VyY2VHcmFwaGljKToKKyAgICAg
ICAgKFdlYkNvcmU6OlNvdXJjZUdyYXBoaWM6OmRldGVybWluZUFic29sdXRlUGFpbnRSZWN0KToK
KyAgICAgICAgKFdlYkNvcmU6OlNvdXJjZUdyYXBoaWM6OnBsYXRmb3JtQXBwbHlTb2Z0d2FyZSk6
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9Tb3VyY2VHcmFwaGljLmg6Cisg
ICAgICAgIChXZWJDb3JlOjpTb3VyY2VHcmFwaGljOjpTb3VyY2VHcmFwaGljKTogRGVsZXRlZC4K
KyAgICAgICAgKiByZW5kZXJpbmcvQ1NTRmlsdGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmNy
ZWF0ZUJsdXJFZmZlY3QpOgorICAgICAgICAoV2ViQ29yZTo6Y3JlYXRlQnJpZ2h0bmVzc0VmZmVj
dCk6CisgICAgICAgIChXZWJDb3JlOjpjcmVhdGVDb250cmFzdEVmZmVjdCk6CisgICAgICAgIChX
ZWJDb3JlOjpjcmVhdGVEcm9wU2hhZG93RWZmZWN0KToKKyAgICAgICAgKFdlYkNvcmU6OmNyZWF0
ZUdyYXlTY2FsZUVmZmVjdCk6CisgICAgICAgIChXZWJDb3JlOjpjcmVhdGVIdWVSb3RhdGVFZmZl
Y3QpOgorICAgICAgICAoV2ViQ29yZTo6Y3JlYXRlSW52ZXJ0RWZmZWN0KToKKyAgICAgICAgKFdl
YkNvcmU6OmNyZWF0ZU9wYWNpdHlFZmZlY3QpOgorICAgICAgICAoV2ViQ29yZTo6Y3JlYXRlU2F0
dXJhdGVFZmZlY3QpOgorICAgICAgICAoV2ViQ29yZTo6Y3JlYXRlU2VwaWFFZmZlY3QpOgorICAg
ICAgICAoV2ViQ29yZTo6Q1NTRmlsdGVyOjpidWlsZEZpbHRlckZ1bmN0aW9ucyk6CisgICAgICAg
IChXZWJDb3JlOjpDU1NGaWx0ZXI6OmRldGVybWluZUZpbHRlclByaW1pdGl2ZVN1YnJlZ2lvbik6
CisgICAgICAgIChXZWJDb3JlOjpDU1NGaWx0ZXI6OmFwcGx5KToKKyAgICAgICAgKiByZW5kZXJp
bmcvQ1NTRmlsdGVyLmg6CisgICAgICAgIEFwcGx5IHRoZSBGaWx0ZXJGdW5jdGlvbnMgb2YgdGhl
IENTU0ZpbHRlciBpbiB0aGUgZm9yd2FyZCBkaXJlY3Rpb24uCisKKyAgICAgICAgKiByZW5kZXJp
bmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlRmlsdGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJl
bmRlclNWR1Jlc291cmNlRmlsdGVyOjphcHBseVJlc291cmNlKToKKyAgICAgICAgKFdlYkNvcmU6
OlJlbmRlclNWR1Jlc291cmNlRmlsdGVyOjpwb3N0QXBwbHlSZXNvdXJjZSk6CisKKyAgICAgICAg
KiBzdmcvU1ZHRkVCbGVuZEVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHRkVCbGVu
ZEVsZW1lbnQ6OmJ1aWxkIGNvbnN0KToKKyAgICAgICAgKiBzdmcvU1ZHRkVCbGVuZEVsZW1lbnQu
aDoKKyAgICAgICAgKiBzdmcvU1ZHRkVDb2xvck1hdHJpeEVsZW1lbnQuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6U1ZHRkVDb2xvck1hdHJpeEVsZW1lbnQ6OmJ1aWxkIGNvbnN0KToKKyAgICAgICAg
KiBzdmcvU1ZHRkVDb2xvck1hdHJpeEVsZW1lbnQuaDoKKyAgICAgICAgKiBzdmcvU1ZHRkVDb21w
b25lbnRUcmFuc2ZlckVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHRkVDb21wb25l
bnRUcmFuc2ZlckVsZW1lbnQ6OmJ1aWxkIGNvbnN0KToKKyAgICAgICAgKiBzdmcvU1ZHRkVDb21w
b25lbnRUcmFuc2ZlckVsZW1lbnQuaDoKKyAgICAgICAgKiBzdmcvU1ZHRkVDb21wb3NpdGVFbGVt
ZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR0ZFQ29tcG9zaXRlRWxlbWVudDo6YnVpbGQg
Y29uc3QpOgorICAgICAgICAqIHN2Zy9TVkdGRUNvbXBvc2l0ZUVsZW1lbnQuaDoKKyAgICAgICAg
KiBzdmcvU1ZHRkVDb252b2x2ZU1hdHJpeEVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
U1ZHRkVDb252b2x2ZU1hdHJpeEVsZW1lbnQ6OmJ1aWxkIGNvbnN0KToKKyAgICAgICAgKiBzdmcv
U1ZHRkVDb252b2x2ZU1hdHJpeEVsZW1lbnQuaDoKKyAgICAgICAgKiBzdmcvU1ZHRkVEaWZmdXNl
TGlnaHRpbmdFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR0ZFRGlmZnVzZUxpZ2h0
aW5nRWxlbWVudDo6YnVpbGQgY29uc3QpOgorICAgICAgICAqIHN2Zy9TVkdGRURpZmZ1c2VMaWdo
dGluZ0VsZW1lbnQuaDoKKyAgICAgICAgKiBzdmcvU1ZHRkVEaXNwbGFjZW1lbnRNYXBFbGVtZW50
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR0ZFRGlzcGxhY2VtZW50TWFwRWxlbWVudDo6YnVp
bGQgY29uc3QpOgorICAgICAgICAqIHN2Zy9TVkdGRURpc3BsYWNlbWVudE1hcEVsZW1lbnQuaDoK
KyAgICAgICAgKiBzdmcvU1ZHRkVEcm9wU2hhZG93RWxlbWVudC5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpTVkdGRURyb3BTaGFkb3dFbGVtZW50OjpidWlsZCBjb25zdCk6CisgICAgICAgICogc3Zn
L1NWR0ZFRHJvcFNoYWRvd0VsZW1lbnQuaDoKKyAgICAgICAgKiBzdmcvU1ZHRkVGbG9vZEVsZW1l
bnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHRkVGbG9vZEVsZW1lbnQ6OmJ1aWxkIGNvbnN0
KToKKyAgICAgICAgKiBzdmcvU1ZHRkVGbG9vZEVsZW1lbnQuaDoKKyAgICAgICAgKiBzdmcvU1ZH
RkVHYXVzc2lhbkJsdXJFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR0ZFR2F1c3Np
YW5CbHVyRWxlbWVudDo6YnVpbGQgY29uc3QpOgorICAgICAgICAqIHN2Zy9TVkdGRUdhdXNzaWFu
Qmx1ckVsZW1lbnQuaDoKKyAgICAgICAgKiBzdmcvU1ZHRkVJbWFnZUVsZW1lbnQuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6U1ZHRkVJbWFnZUVsZW1lbnQ6OmJ1aWxkIGNvbnN0KToKKyAgICAgICAg
KiBzdmcvU1ZHRkVJbWFnZUVsZW1lbnQuaDoKKyAgICAgICAgKiBzdmcvU1ZHRkVNZXJnZUVsZW1l
bnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHRkVNZXJnZUVsZW1lbnQ6OmJ1aWxkIGNvbnN0
KToKKyAgICAgICAgKiBzdmcvU1ZHRkVNZXJnZUVsZW1lbnQuaDoKKyAgICAgICAgKiBzdmcvU1ZH
RkVNb3JwaG9sb2d5RWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdGRU1vcnBob2xv
Z3lFbGVtZW50OjpidWlsZCBjb25zdCk6CisgICAgICAgICogc3ZnL1NWR0ZFTW9ycGhvbG9neUVs
ZW1lbnQuaDoKKyAgICAgICAgKiBzdmcvU1ZHRkVPZmZzZXRFbGVtZW50LmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OlNWR0ZFT2Zmc2V0RWxlbWVudDo6YnVpbGQgY29uc3QpOgorICAgICAgICAqIHN2
Zy9TVkdGRU9mZnNldEVsZW1lbnQuaDoKKyAgICAgICAgKiBzdmcvU1ZHRkVTcGVjdWxhckxpZ2h0
aW5nRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdGRVNwZWN1bGFyTGlnaHRpbmdF
bGVtZW50OjpidWlsZCBjb25zdCk6CisgICAgICAgICogc3ZnL1NWR0ZFU3BlY3VsYXJMaWdodGlu
Z0VsZW1lbnQuaDoKKyAgICAgICAgKiBzdmcvU1ZHRkVUaWxlRWxlbWVudC5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpTVkdGRVRpbGVFbGVtZW50OjpidWlsZCBjb25zdCk6CisgICAgICAgICogc3Zn
L1NWR0ZFVGlsZUVsZW1lbnQuaDoKKyAgICAgICAgKiBzdmcvU1ZHRkVUdXJidWxlbmNlRWxlbWVu
dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdGRVR1cmJ1bGVuY2VFbGVtZW50OjpidWlsZCBj
b25zdCk6CisgICAgICAgICogc3ZnL1NWR0ZFVHVyYnVsZW5jZUVsZW1lbnQuaDoKKyAgICAgICAg
KiBzdmcvU1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVzLmg6CisgICAgICAgIFJl
bW92ZSB0aGUgRmlsdGVyIGFzIGFuIGlucHV0IHRvIHRoZSBidWlsZCgpIG1ldGhvZCBhbmQgcGFz
cyBhIHJlZmVyZW5jZQorICAgICAgICB0byBTVkdGaWx0ZXJCdWlsZGVyIGluc3RlYWQgb2YgcGFz
c2luZyBhIHBvaW50ZXIuCisKKyAgICAgICAgKiBzdmcvZ3JhcGhpY3MvZmlsdGVycy9TVkdGRUlt
YWdlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZFSW1hZ2U6OmNyZWF0ZSk6CisgICAgICAgIChX
ZWJDb3JlOjpGRUltYWdlOjpGRUltYWdlKToKKyAgICAgICAgKFdlYkNvcmU6OkZFSW1hZ2U6OmRl
dGVybWluZUFic29sdXRlUGFpbnRSZWN0KToKKyAgICAgICAgKFdlYkNvcmU6OkZFSW1hZ2U6OnBs
YXRmb3JtQXBwbHlTb2Z0d2FyZSk6CisgICAgICAgICogc3ZnL2dyYXBoaWNzL2ZpbHRlcnMvU1ZH
RkVJbWFnZS5oOgorICAgICAgICAqIHN2Zy9ncmFwaGljcy9maWx0ZXJzL1NWR0ZpbHRlci5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpTVkdGaWx0ZXI6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3Jl
OjpTVkdGaWx0ZXI6OmFwcGx5KToKKyAgICAgICAgKiBzdmcvZ3JhcGhpY3MvZmlsdGVycy9TVkdG
aWx0ZXIuaDoKKyAgICAgICAgKiBzdmcvZ3JhcGhpY3MvZmlsdGVycy9TVkdGaWx0ZXJCdWlsZGVy
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR0ZpbHRlckJ1aWxkZXI6OmJ1aWxkRmlsdGVyRWZm
ZWN0cyk6CisgICAgICAgICogc3ZnL2dyYXBoaWNzL2ZpbHRlcnMvU1ZHRmlsdGVyQnVpbGRlci5o
OgorCiAyMDIxLTExLTEwICBTYWlkIEFib3UtSGFsbGF3YSAgPHNhaWRAYXBwbGUuY29tPgogCiAg
ICAgICAgIFtHUFUgUHJvY2Vzc10gTWFrZSBDU1NGaWx0ZXIgYmUgYSBjb21wb3NpdGUgb2YgRmls
dGVyRnVuY3Rpb25zCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jb3JlaW1hZ2UvRmlsdGVyRWZmZWN0UmVuZGVyZXJDb3JlSW1hZ2UuaCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvcmVpbWFnZS9GaWx0ZXJFZmZlY3RSZW5kZXJlckNvcmVJ
bWFnZS5oCmluZGV4IGU2YzhkZjRkNTViNDU2MTM1NDllM2FmNDkxOTJhMjZlMmMwNDRhZjcuLmU3
YmM4NTMyNzJhYjRkYWY3YzliODUwMTg2Y2M5OWE5NzQ0ZjkzNWYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvcmVpbWFnZS9GaWx0ZXJFZmZlY3RSZW5kZXJl
ckNvcmVJbWFnZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvcmVp
bWFnZS9GaWx0ZXJFZmZlY3RSZW5kZXJlckNvcmVJbWFnZS5oCkBAIC00Nyw3ICs0Nyw3IEBAIGNs
YXNzIEZpbHRlckVmZmVjdFJlbmRlcmVyQ29yZUltYWdlIDogcHVibGljIEZpbHRlckVmZmVjdFJl
bmRlcmVyIHsKIHB1YmxpYzoKICAgICBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPEZpbHRlckVmZmVj
dFJlbmRlcmVyQ29yZUltYWdlPiB0cnlDcmVhdGUoRmlsdGVyRWZmZWN0Jik7CiAgICAgUmV0YWlu
UHRyPENJQ29udGV4dD4gc2hhcmVkQ0lDb250ZXh0KCk7Ci0gICAgdm9pZCBhcHBseUVmZmVjdHMo
RmlsdGVyRWZmZWN0JikgZmluYWw7CisgICAgdm9pZCBhcHBseUVmZmVjdHMoY29uc3QgRmlsdGVy
JiwgRmlsdGVyRWZmZWN0JikgZmluYWw7CiAgICAgYm9vbCBoYXNSZXN1bHQoKSBjb25zdCBmaW5h
bCB7IHJldHVybiBtX291dHB1dEltYWdlOyB9CiAgICAgSW1hZ2VCdWZmZXIqIG91dHB1dCgpIGNv
bnN0IGZpbmFsOwogICAgIEZsb2F0UmVjdCBkZXN0UmVjdChjb25zdCBGaWx0ZXJFZmZlY3QmKSBj
b25zdCBmaW5hbDsKQEAgLTU1LDEyICs1NSwxMiBAQCBwdWJsaWM6CiAgICAgRmlsdGVyRWZmZWN0
UmVuZGVyZXJDb3JlSW1hZ2UoKTsKICAgICAKIHByaXZhdGU6Ci0gICAgUmV0YWluUHRyPENJSW1h
Z2U+IGNvbm5lY3RDSUZpbHRlcnMoRmlsdGVyRWZmZWN0Jik7CisgICAgUmV0YWluUHRyPENJSW1h
Z2U+IGNvbm5lY3RDSUZpbHRlcnMoY29uc3QgRmlsdGVyJiwgRmlsdGVyRWZmZWN0Jik7CiAgICAg
dm9pZCByZW5kZXJUb0ltYWdlQnVmZmVyKEZpbHRlckVmZmVjdCYpIGZpbmFsOwogICAgIHN0YXRp
YyBib29sIHN1cHBvcnRzQ29yZUltYWdlUmVuZGVyaW5nKEZpbHRlckVmZmVjdCYpOwogICAgIHN0
YXRpYyBib29sIGNhblJlbmRlclVzaW5nQ0lGaWx0ZXJzKEZpbHRlckVmZmVjdCYpOwogICAgIAot
ICAgIFJldGFpblB0cjxDSUltYWdlPiBpbWFnZUZvclNvdXJjZUdyYXBoaWMoU291cmNlR3JhcGhp
YyYpOworICAgIFJldGFpblB0cjxDSUltYWdlPiBpbWFnZUZvclNvdXJjZUdyYXBoaWMoY29uc3Qg
RmlsdGVyJik7CiAgICAgUmV0YWluUHRyPENJSW1hZ2U+IGltYWdlRm9yRkVDb2xvck1hdHJpeChj
b25zdCBGRUNvbG9yTWF0cml4JiwgY29uc3QgVmVjdG9yPFJldGFpblB0cjxDSUltYWdlPj4mKTsK
ICAgICBSZXRhaW5QdHI8Q0lJbWFnZT4gaW1hZ2VGb3JGRUNvbXBvbmVudFRyYW5zZmVyKGNvbnN0
IEZFQ29tcG9uZW50VHJhbnNmZXImLCBWZWN0b3I8UmV0YWluUHRyPENJSW1hZ2U+PiYpOwogICAg
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29yZWltYWdl
L0ZpbHRlckVmZmVjdFJlbmRlcmVyQ29yZUltYWdlLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY29yZWltYWdlL0ZpbHRlckVmZmVjdFJlbmRlcmVyQ29yZUltYWdlLm1tCmlu
ZGV4IDk5YjE2OWEzODFlMTIyMTc3NjAyYTJhNzMyMzFiNDBiMWI4ZWU5YmYuLjhiNDAwMTc3MDBl
MTBjNjg3YmE3MDZlNTU5NmI4YzBiMjMwYmEyNGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2NvcmVpbWFnZS9GaWx0ZXJFZmZlY3RSZW5kZXJlckNvcmVJbWFn
ZS5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb3JlaW1hZ2UvRmls
dGVyRWZmZWN0UmVuZGVyZXJDb3JlSW1hZ2UubW0KQEAgLTk3LDI1ICs5NywyNSBAQCBib29sIEZp
bHRlckVmZmVjdFJlbmRlcmVyQ29yZUltYWdlOjpzdXBwb3J0c0NvcmVJbWFnZVJlbmRlcmluZyhG
aWx0ZXJFZmZlY3QmIGVmZgogICAgIHJldHVybiBmYWxzZTsKIH0KIAotdm9pZCBGaWx0ZXJFZmZl
Y3RSZW5kZXJlckNvcmVJbWFnZTo6YXBwbHlFZmZlY3RzKEZpbHRlckVmZmVjdCYgbGFzdEVmZmVj
dCkKK3ZvaWQgRmlsdGVyRWZmZWN0UmVuZGVyZXJDb3JlSW1hZ2U6OmFwcGx5RWZmZWN0cyhjb25z
dCBGaWx0ZXImIGZpbHRlciwgRmlsdGVyRWZmZWN0JiBsYXN0RWZmZWN0KQogewotICAgIG1fb3V0
cHV0SW1hZ2UgPSBjb25uZWN0Q0lGaWx0ZXJzKGxhc3RFZmZlY3QpOworICAgIG1fb3V0cHV0SW1h
Z2UgPSBjb25uZWN0Q0lGaWx0ZXJzKGZpbHRlciwgbGFzdEVmZmVjdCk7CiAgICAgaWYgKCFtX291
dHB1dEltYWdlKQogICAgICAgICByZXR1cm47CiAgICAgcmVuZGVyVG9JbWFnZUJ1ZmZlcihsYXN0
RWZmZWN0KTsKIH0KIAotUmV0YWluUHRyPENJSW1hZ2U+IEZpbHRlckVmZmVjdFJlbmRlcmVyQ29y
ZUltYWdlOjpjb25uZWN0Q0lGaWx0ZXJzKEZpbHRlckVmZmVjdCYgZWZmZWN0KQorUmV0YWluUHRy
PENJSW1hZ2U+IEZpbHRlckVmZmVjdFJlbmRlcmVyQ29yZUltYWdlOjpjb25uZWN0Q0lGaWx0ZXJz
KGNvbnN0IEZpbHRlciYgZmlsdGVyLCBGaWx0ZXJFZmZlY3QmIGVmZmVjdCkKIHsKICAgICBWZWN0
b3I8UmV0YWluUHRyPENJSW1hZ2U+PiBpbnB1dEltYWdlczsKICAgICAKICAgICBmb3IgKGF1dG8g
aW4gOiBlZmZlY3QuaW5wdXRFZmZlY3RzKCkpIHsKLSAgICAgICAgYXV0byBpbnB1dEltYWdlID0g
Y29ubmVjdENJRmlsdGVycygqaW4pOworICAgICAgICBhdXRvIGlucHV0SW1hZ2UgPSBjb25uZWN0
Q0lGaWx0ZXJzKGZpbHRlciwgKmluKTsKICAgICAgICAgaWYgKCFpbnB1dEltYWdlKQogICAgICAg
ICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgICAgIGlucHV0SW1hZ2VzLmFwcGVuZChpbnB1dElt
YWdlKTsKICAgICB9Ci0gICAgZWZmZWN0LmRldGVybWluZUFic29sdXRlUGFpbnRSZWN0KCk7Cisg
ICAgZWZmZWN0LmRldGVybWluZUFic29sdXRlUGFpbnRSZWN0KGZpbHRlcik7CiAgICAgZWZmZWN0
LnNldFJlc3VsdENvbG9yU3BhY2UoZWZmZWN0Lm9wZXJhdGluZ0NvbG9yU3BhY2UoKSk7CiAgICAg
CiAgICAgaWYgKGVmZmVjdC5hYnNvbHV0ZVBhaW50UmVjdCgpLmlzRW1wdHkoKSB8fCBJbWFnZUJ1
ZmZlcjo6c2l6ZU5lZWRzQ2xhbXBpbmcoZWZmZWN0LmFic29sdXRlUGFpbnRSZWN0KCkuc2l6ZSgp
KSkKQEAgLTEyMyw3ICsxMjMsNyBAQCBSZXRhaW5QdHI8Q0lJbWFnZT4gRmlsdGVyRWZmZWN0UmVu
ZGVyZXJDb3JlSW1hZ2U6OmNvbm5lY3RDSUZpbHRlcnMoRmlsdGVyRWZmZWN0JgogICAgIAogICAg
IHN3aXRjaCAoZWZmZWN0LmZpbHRlclR5cGUoKSkgewogICAgIGNhc2UgRmlsdGVyRWZmZWN0OjpU
eXBlOjpTb3VyY2VHcmFwaGljOgotICAgICAgICByZXR1cm4gaW1hZ2VGb3JTb3VyY2VHcmFwaGlj
KGRvd25jYXN0PFNvdXJjZUdyYXBoaWM+KGVmZmVjdCkpOworICAgICAgICByZXR1cm4gaW1hZ2VG
b3JTb3VyY2VHcmFwaGljKGZpbHRlcik7CiAgICAgY2FzZSBGaWx0ZXJFZmZlY3Q6OlR5cGU6OkZF
Q29sb3JNYXRyaXg6CiAgICAgICAgIHJldHVybiBpbWFnZUZvckZFQ29sb3JNYXRyaXgoZG93bmNh
c3Q8RkVDb2xvck1hdHJpeD4oZWZmZWN0KSwgaW5wdXRJbWFnZXMpOwogICAgIGNhc2UgRmlsdGVy
RWZmZWN0OjpUeXBlOjpGRUNvbXBvbmVudFRyYW5zZmVyOgpAQCAtMTM1LDkgKzEzNSw5IEBAIFJl
dGFpblB0cjxDSUltYWdlPiBGaWx0ZXJFZmZlY3RSZW5kZXJlckNvcmVJbWFnZTo6Y29ubmVjdENJ
RmlsdGVycyhGaWx0ZXJFZmZlY3QmCiAgICAgcmV0dXJuIG51bGxwdHI7CiB9CiAKLVJldGFpblB0
cjxDSUltYWdlPiBGaWx0ZXJFZmZlY3RSZW5kZXJlckNvcmVJbWFnZTo6aW1hZ2VGb3JTb3VyY2VH
cmFwaGljKFNvdXJjZUdyYXBoaWMmIGVmZmVjdCkKK1JldGFpblB0cjxDSUltYWdlPiBGaWx0ZXJF
ZmZlY3RSZW5kZXJlckNvcmVJbWFnZTo6aW1hZ2VGb3JTb3VyY2VHcmFwaGljKGNvbnN0IEZpbHRl
ciYgZmlsdGVyKQogewotICAgIEltYWdlQnVmZmVyKiBzb3VyY2VJbWFnZSA9IGVmZmVjdC5maWx0
ZXIoKS5zb3VyY2VJbWFnZSgpOworICAgIEltYWdlQnVmZmVyKiBzb3VyY2VJbWFnZSA9IGZpbHRl
ci5zb3VyY2VJbWFnZSgpOwogICAgIGlmICghc291cmNlSW1hZ2UpCiAgICAgICAgIHJldHVybiBu
dWxscHRyOwogICAgIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY3B1L2FybS9maWx0ZXJzL0ZFQmxlbmRORU9OLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jcHUvYXJtL2ZpbHRlcnMvRkVCbGVuZE5FT04uaAppbmRleCAyNjExMGNkZmIw
YmI2Y2Y0OTA0NTgzODc3ODdhYzEwZmExNzFjZjE4Li43NzgzNmRkZGIwMjU4ZTlmN2M1YmViM2Vh
NTM4MDAyMjE4ZjJjOGI4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jcHUvYXJtL2ZpbHRlcnMvRkVCbGVuZE5FT04uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jcHUvYXJtL2ZpbHRlcnMvRkVCbGVuZE5FT04uaApAQCAtMjUsOCAr
MjUsNyBAQAogICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KICAqLwogCi0jaWZuZGVmIEZFQmxlbmRORU9OX2gKLSNk
ZWZpbmUgRkVCbGVuZE5FT05faAorI3ByYWdtYSBvbmNlCiAKICNpZiBIQVZFKEFSTV9ORU9OX0lO
VFJJTlNJQ1MpCiAKQEAgLTEwNyw3ICsxMDYsNyBAQCBwdWJsaWM6CiAgICAgfQogfTsKIAotdm9p
ZCBGRUJsZW5kOjpwbGF0Zm9ybUFwcGx5U29mdHdhcmUoKQordm9pZCBGRUJsZW5kOjpwbGF0Zm9y
bUFwcGx5U29mdHdhcmUoY29uc3QgRmlsdGVyJikKIHsKICAgICBGaWx0ZXJFZmZlY3QqIGluID0g
aW5wdXRFZmZlY3QoMCk7CiAgICAgRmlsdGVyRWZmZWN0KiBpbjIgPSBpbnB1dEVmZmVjdCgxKTsK
QEAgLTIwNSw1ICsyMDQsMyBAQCB2b2lkIEZFQmxlbmQ6OnBsYXRmb3JtQXBwbHlORU9OKHVuc2ln
bmVkIGNoYXIqIHNyY1BpeGVsQXJyYXlBLCB1bnNpZ25lZCBjaGFyKiBzcgogfSAvLyBuYW1lc3Bh
Y2UgV2ViQ29yZQogCiAjZW5kaWYgLy8gSEFWRShBUk1fTkVPTl9JTlRSSU5TSUNTKQotCi0jZW5k
aWYgLy8gRkVCbGVuZE5FT05faApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvZmlsdGVycy9GRUJsZW5kLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2ZpbHRlcnMvRkVCbGVuZC5jcHAKaW5kZXggYjRjYWVkNDU1NTcyZmM4NWNlZDhhNGYy
MzFjOWY4MzAyN2JhZmIwYi4uM2IxNDgzM2Q2YTVlYzBlOWVkOTk2NTFlMTU0MTk3N2VmMmM4N2I3
NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9G
RUJsZW5kLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJz
L0ZFQmxlbmQuY3BwCkBAIC0yNiw3ICsyNiw2IEBACiAjaW5jbHVkZSAiRkVCbGVuZC5oIgogCiAj
aW5jbHVkZSAiRkVCbGVuZE5FT04uaCIKLSNpbmNsdWRlICJGaWx0ZXIuaCIKICNpbmNsdWRlICJG
bG9hdFBvaW50LmgiCiAjaW5jbHVkZSAiR3JhcGhpY3NDb250ZXh0LmgiCiAjaW5jbHVkZSA8SmF2
YVNjcmlwdENvcmUvVWludDhDbGFtcGVkQXJyYXkuaD4KQEAgLTM0LDE1ICszMywxNSBAQAogCiBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAKLUZFQmxlbmQ6OkZFQmxlbmQoRmlsdGVyJiBmaWx0ZXIsIEJs
ZW5kTW9kZSBtb2RlKQotICAgIDogRmlsdGVyRWZmZWN0KGZpbHRlciwgRmlsdGVyRWZmZWN0OjpU
eXBlOjpGRUJsZW5kKQotICAgICwgbV9tb2RlKG1vZGUpCitSZWY8RkVCbGVuZD4gRkVCbGVuZDo6
Y3JlYXRlKEJsZW5kTW9kZSBtb2RlKQogeworICAgIHJldHVybiBhZG9wdFJlZigqbmV3IEZFQmxl
bmQobW9kZSkpOwogfQogCi1SZWY8RkVCbGVuZD4gRkVCbGVuZDo6Y3JlYXRlKEZpbHRlciYgZmls
dGVyLCBCbGVuZE1vZGUgbW9kZSkKK0ZFQmxlbmQ6OkZFQmxlbmQoQmxlbmRNb2RlIG1vZGUpCisg
ICAgOiBGaWx0ZXJFZmZlY3QoRmlsdGVyRWZmZWN0OjpUeXBlOjpGRUJsZW5kKQorICAgICwgbV9t
b2RlKG1vZGUpCiB7Ci0gICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgRkVCbGVuZChmaWx0ZXIsIG1v
ZGUpKTsKIH0KIAogYm9vbCBGRUJsZW5kOjpzZXRCbGVuZE1vZGUoQmxlbmRNb2RlIG1vZGUpCkBA
IC01NCw3ICs1Myw3IEBAIGJvb2wgRkVCbGVuZDo6c2V0QmxlbmRNb2RlKEJsZW5kTW9kZSBtb2Rl
KQogfQogCiAjaWYgIUhBVkUoQVJNX05FT05fSU5UUklOU0lDUykKLXZvaWQgRkVCbGVuZDo6cGxh
dGZvcm1BcHBseVNvZnR3YXJlKCkKK3ZvaWQgRkVCbGVuZDo6cGxhdGZvcm1BcHBseVNvZnR3YXJl
KGNvbnN0IEZpbHRlciYpCiB7CiAgICAgRmlsdGVyRWZmZWN0KiBpbiA9IGlucHV0RWZmZWN0KDAp
OwogICAgIEZpbHRlckVmZmVjdCogaW4yID0gaW5wdXRFZmZlY3QoMSk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFQmxlbmQuaCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVCbGVuZC5oCmluZGV4IGI4NGM4
ZGQyODA1OGZmNDVkNTRjZGY4YTczYTJiYTcxNzI1ZmRlNWMuLjQwNmY2MzYyZmU2YmFlZGZlM2Mz
N2FjOWM5ZDRiYTYxNzkwZGQ4NmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2ZpbHRlcnMvRkVCbGVuZC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2ZpbHRlcnMvRkVCbGVuZC5oCkBAIC0yNCwxOSArMjQsMTkgQEAKIAogI2luY2x1
ZGUgIkZpbHRlckVmZmVjdC5oIgogCi0jaW5jbHVkZSAiRmlsdGVyLmgiCi0KIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIAogY2xhc3MgRkVCbGVuZCA6IHB1YmxpYyBGaWx0ZXJFZmZlY3QgewogcHVibGlj
OgotICAgIHN0YXRpYyBSZWY8RkVCbGVuZD4gY3JlYXRlKEZpbHRlciYsIEJsZW5kTW9kZSk7Cisg
ICAgc3RhdGljIFJlZjxGRUJsZW5kPiBjcmVhdGUoQmxlbmRNb2RlKTsKIAogICAgIEJsZW5kTW9k
ZSBibGVuZE1vZGUoKSBjb25zdCB7IHJldHVybiBtX21vZGU7IH0KICAgICBib29sIHNldEJsZW5k
TW9kZShCbGVuZE1vZGUpOwogCiBwcml2YXRlOgotICAgIHZvaWQgcGxhdGZvcm1BcHBseVNvZnR3
YXJlKCkgb3ZlcnJpZGU7CisgICAgRkVCbGVuZChCbGVuZE1vZGUpOworCisgICAgdm9pZCBwbGF0
Zm9ybUFwcGx5U29mdHdhcmUoY29uc3QgRmlsdGVyJikgb3ZlcnJpZGU7CiAgICAgdm9pZCBwbGF0
Zm9ybUFwcGx5R2VuZXJpYyh1bnNpZ25lZCBjaGFyKiBzcmNQaXhlbEFycmF5QSwgdW5zaWduZWQg
Y2hhciogc3JjUGl4ZWxBcnJheUIsIHVuc2lnbmVkIGNoYXIqIGRzdFBpeGVsQXJyYXksCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBjb2xvckFycmF5TGVuZ3RoKTsKICAgICB2
b2lkIHBsYXRmb3JtQXBwbHlORU9OKHVuc2lnbmVkIGNoYXIqIHNyY1BpeGVsQXJyYXlBLCB1bnNp
Z25lZCBjaGFyKiBzcmNQaXhlbEFycmF5QiwgdW5zaWduZWQgY2hhciogZHN0UGl4ZWxBcnJheSwK
QEAgLTQ0LDggKzQ0LDYgQEAgcHJpdmF0ZToKIAogICAgIFdURjo6VGV4dFN0cmVhbSYgZXh0ZXJu
YWxSZXByZXNlbnRhdGlvbihXVEY6OlRleHRTdHJlYW0mLCBSZXByZXNlbnRhdGlvblR5cGUpIGNv
bnN0IG92ZXJyaWRlOwogCi0gICAgRkVCbGVuZChGaWx0ZXImLCBCbGVuZE1vZGUpOwotCiAgICAg
QmxlbmRNb2RlIG1fbW9kZTsKIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVDb2xvck1hdHJpeC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFQ29sb3JNYXRyaXguY3BwCmluZGV4IGE3OTFiZDZk
MzFmZDc1MDRhMTEzMjdmMWQ0MWFjYmQzYTQ5ZTE5NTIuLmYwYTlkMzE4MTZmZDRkZGFhOTBlNzI2
ZjJlODE4NDBkNWFmZTJjZjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2ZpbHRlcnMvRkVDb2xvck1hdHJpeC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRUNvbG9yTWF0cml4LmNwcApAQCAtMjMsOCArMjMsOCBA
QAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIkZFQ29sb3JNYXRyaXguaCIKIAotI2lu
Y2x1ZGUgIkZpbHRlci5oIgogI2luY2x1ZGUgIkdyYXBoaWNzQ29udGV4dC5oIgorI2luY2x1ZGUg
IkltYWdlQnVmZmVyLmgiCiAjaW5jbHVkZSAiUGl4ZWxCdWZmZXIuaCIKICNpbmNsdWRlIDx3dGYv
TWF0aEV4dHJhcy5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1RleHRTdHJlYW0uaD4KQEAgLTM1LDE2
ICszNSwxNiBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLUZFQ29sb3JNYXRyaXg6OkZFQ29s
b3JNYXRyaXgoRmlsdGVyJiBmaWx0ZXIsIENvbG9yTWF0cml4VHlwZSB0eXBlLCBWZWN0b3I8Zmxv
YXQ+JiYgdmFsdWVzKQotICAgIDogRmlsdGVyRWZmZWN0KGZpbHRlciwgRmlsdGVyRWZmZWN0OjpU
eXBlOjpGRUNvbG9yTWF0cml4KQotICAgICwgbV90eXBlKHR5cGUpCi0gICAgLCBtX3ZhbHVlcyhX
VEZNb3ZlKHZhbHVlcykpCitSZWY8RkVDb2xvck1hdHJpeD4gRkVDb2xvck1hdHJpeDo6Y3JlYXRl
KENvbG9yTWF0cml4VHlwZSB0eXBlLCBWZWN0b3I8ZmxvYXQ+JiYgdmFsdWVzKQogeworICAgIHJl
dHVybiBhZG9wdFJlZigqbmV3IEZFQ29sb3JNYXRyaXgodHlwZSwgV1RGTW92ZSh2YWx1ZXMpKSk7
CiB9CiAKLVJlZjxGRUNvbG9yTWF0cml4PiBGRUNvbG9yTWF0cml4OjpjcmVhdGUoRmlsdGVyJiBm
aWx0ZXIsIENvbG9yTWF0cml4VHlwZSB0eXBlLCBWZWN0b3I8ZmxvYXQ+JiYgdmFsdWVzKQorRkVD
b2xvck1hdHJpeDo6RkVDb2xvck1hdHJpeChDb2xvck1hdHJpeFR5cGUgdHlwZSwgVmVjdG9yPGZs
b2F0PiYmIHZhbHVlcykKKyAgICA6IEZpbHRlckVmZmVjdChGaWx0ZXJFZmZlY3Q6OlR5cGU6OkZF
Q29sb3JNYXRyaXgpCisgICAgLCBtX3R5cGUodHlwZSkKKyAgICAsIG1fdmFsdWVzKFdURk1vdmUo
dmFsdWVzKSkKIHsKLSAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBGRUNvbG9yTWF0cml4KGZpbHRl
ciwgdHlwZSwgV1RGTW92ZSh2YWx1ZXMpKSk7CiB9CiAKIGJvb2wgRkVDb2xvck1hdHJpeDo6c2V0
VHlwZShDb2xvck1hdHJpeFR5cGUgdHlwZSkKQEAgLTI3Myw3ICsyNzMsNyBAQCB2b2lkIGVmZmVj
dFR5cGUoVWludDhDbGFtcGVkQXJyYXkmIHBpeGVsQXJyYXksIGNvbnN0IFZlY3RvcjxmbG9hdD4m
IHZhbHVlcywgSW50UwogICAgIH0KIH0KIAotdm9pZCBGRUNvbG9yTWF0cml4OjpwbGF0Zm9ybUFw
cGx5U29mdHdhcmUoKQordm9pZCBGRUNvbG9yTWF0cml4OjpwbGF0Zm9ybUFwcGx5U29mdHdhcmUo
Y29uc3QgRmlsdGVyJikKIHsKICAgICBGaWx0ZXJFZmZlY3QqIGluID0gaW5wdXRFZmZlY3QoMCk7
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMv
RkVDb2xvck1hdHJpeC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVy
cy9GRUNvbG9yTWF0cml4LmgKaW5kZXggOTkyZTc1ZjllODE1MGM2MTdhMmVmMDdjNjU5MzYxNjAw
NWU0MGY0Mi4uMjI5ZmYwYjhjNDRmNTFjMGVmMDU0ZTVlYTJhNDI0NmUyMjdkODdkMyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRUNvbG9yTWF0
cml4LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRUNv
bG9yTWF0cml4LmgKQEAgLTIyLDggKzIyLDYgQEAKICNwcmFnbWEgb25jZQogCiAjaW5jbHVkZSAi
RmlsdGVyRWZmZWN0LmgiCi0KLSNpbmNsdWRlICJGaWx0ZXIuaCIKICNpbmNsdWRlIDx3dGYvVmVj
dG9yLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAgLTM4LDcgKzM2LDcgQEAgZW51bSBDb2xv
ck1hdHJpeFR5cGUgewogCiBjbGFzcyBGRUNvbG9yTWF0cml4IDogcHVibGljIEZpbHRlckVmZmVj
dCB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFJlZjxGRUNvbG9yTWF0cml4PiBjcmVhdGUoRmlsdGVy
JiwgQ29sb3JNYXRyaXhUeXBlLCBWZWN0b3I8ZmxvYXQ+JiYpOworICAgIHN0YXRpYyBSZWY8RkVD
b2xvck1hdHJpeD4gY3JlYXRlKENvbG9yTWF0cml4VHlwZSwgVmVjdG9yPGZsb2F0PiYmKTsKIAog
ICAgIENvbG9yTWF0cml4VHlwZSB0eXBlKCkgY29uc3QgeyByZXR1cm4gbV90eXBlOyB9CiAgICAg
Ym9vbCBzZXRUeXBlKENvbG9yTWF0cml4VHlwZSk7CkBAIC01MCw5ICs0OCw5IEBAIHB1YmxpYzoK
ICAgICBzdGF0aWMgaW5saW5lIHZvaWQgY2FsY3VsYXRlSHVlUm90YXRlQ29tcG9uZW50cyhmbG9h
dCogY29tcG9uZW50cywgZmxvYXQgdmFsdWUpOwogCiBwcml2YXRlOgotICAgIEZFQ29sb3JNYXRy
aXgoRmlsdGVyJiwgQ29sb3JNYXRyaXhUeXBlLCBWZWN0b3I8ZmxvYXQ+JiYpOworICAgIEZFQ29s
b3JNYXRyaXgoQ29sb3JNYXRyaXhUeXBlLCBWZWN0b3I8ZmxvYXQ+JiYpOwogCi0gICAgdm9pZCBw
bGF0Zm9ybUFwcGx5U29mdHdhcmUoKSBvdmVycmlkZTsKKyAgICB2b2lkIHBsYXRmb3JtQXBwbHlT
b2Z0d2FyZShjb25zdCBGaWx0ZXImKSBvdmVycmlkZTsKIAogICAgIFdURjo6VGV4dFN0cmVhbSYg
ZXh0ZXJuYWxSZXByZXNlbnRhdGlvbihXVEY6OlRleHRTdHJlYW0mLCBSZXByZXNlbnRhdGlvblR5
cGUpIGNvbnN0IG92ZXJyaWRlOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9maWx0ZXJzL0ZFQ29tcG9uZW50VHJhbnNmZXIuY3BwIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRUNvbXBvbmVudFRyYW5zZmVyLmNwcAppbmRl
eCBjZTAwY2MxOTgyOTc5YjQwOTQwNGQ1Y2ZkY2MwM2E2ZWQzMzVjM2IyLi5iMmRhZDM3MTRjNjNh
YWQ5YWYyZWU3M2RkMWUxYTZlNjBmNWJmMmM4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFQ29tcG9uZW50VHJhbnNmZXIuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVDb21wb25lbnRUcmFuc2Zl
ci5jcHAKQEAgLTI0LDcgKzI0LDYgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJG
RUNvbXBvbmVudFRyYW5zZmVyLmgiCiAKLSNpbmNsdWRlICJGaWx0ZXIuaCIKICNpbmNsdWRlICJH
cmFwaGljc0NvbnRleHQuaCIKICNpbmNsdWRlICJQaXhlbEJ1ZmZlci5oIgogI2luY2x1ZGUgPHd0
Zi9NYXRoRXh0cmFzLmg+CkBAIC0zMyw4ICszMiwxMyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAKLUZFQ29tcG9uZW50VHJhbnNmZXI6OkZFQ29tcG9uZW50VHJhbnNmZXIoRmlsdGVyJiBmaWx0
ZXIsIGNvbnN0IENvbXBvbmVudFRyYW5zZmVyRnVuY3Rpb24mIHJlZEZ1bmN0aW9uLCBjb25zdCBD
b21wb25lbnRUcmFuc2ZlckZ1bmN0aW9uJiBncmVlbkZ1bmN0aW9uLCBjb25zdCBDb21wb25lbnRU
cmFuc2ZlckZ1bmN0aW9uJiBibHVlRnVuY3Rpb24sIGNvbnN0IENvbXBvbmVudFRyYW5zZmVyRnVu
Y3Rpb24mIGFscGhhRnVuY3Rpb24pCi0gICAgOiBGaWx0ZXJFZmZlY3QoZmlsdGVyLCBGaWx0ZXJF
ZmZlY3Q6OlR5cGU6OkZFQ29tcG9uZW50VHJhbnNmZXIpCitSZWY8RkVDb21wb25lbnRUcmFuc2Zl
cj4gRkVDb21wb25lbnRUcmFuc2Zlcjo6Y3JlYXRlKGNvbnN0IENvbXBvbmVudFRyYW5zZmVyRnVu
Y3Rpb24mIHJlZEZ1bmN0aW9uLCBjb25zdCBDb21wb25lbnRUcmFuc2ZlckZ1bmN0aW9uJiBncmVl
bkZ1bmN0aW9uLCBjb25zdCBDb21wb25lbnRUcmFuc2ZlckZ1bmN0aW9uJiBibHVlRnVuY3Rpb24s
IGNvbnN0IENvbXBvbmVudFRyYW5zZmVyRnVuY3Rpb24mIGFscGhhRnVuY3Rpb24pCit7CisgICAg
cmV0dXJuIGFkb3B0UmVmKCpuZXcgRkVDb21wb25lbnRUcmFuc2ZlcihyZWRGdW5jdGlvbiwgZ3Jl
ZW5GdW5jdGlvbiwgYmx1ZUZ1bmN0aW9uLCBhbHBoYUZ1bmN0aW9uKSk7Cit9CisKK0ZFQ29tcG9u
ZW50VHJhbnNmZXI6OkZFQ29tcG9uZW50VHJhbnNmZXIoY29uc3QgQ29tcG9uZW50VHJhbnNmZXJG
dW5jdGlvbiYgcmVkRnVuY3Rpb24sIGNvbnN0IENvbXBvbmVudFRyYW5zZmVyRnVuY3Rpb24mIGdy
ZWVuRnVuY3Rpb24sIGNvbnN0IENvbXBvbmVudFRyYW5zZmVyRnVuY3Rpb24mIGJsdWVGdW5jdGlv
biwgY29uc3QgQ29tcG9uZW50VHJhbnNmZXJGdW5jdGlvbiYgYWxwaGFGdW5jdGlvbikKKyAgICA6
IEZpbHRlckVmZmVjdChGaWx0ZXJFZmZlY3Q6OlR5cGU6OkZFQ29tcG9uZW50VHJhbnNmZXIpCiAg
ICAgLCBtX3JlZEZ1bmN0aW9uKHJlZEZ1bmN0aW9uKQogICAgICwgbV9ncmVlbkZ1bmN0aW9uKGdy
ZWVuRnVuY3Rpb24pCiAgICAgLCBtX2JsdWVGdW5jdGlvbihibHVlRnVuY3Rpb24pCkBAIC00Miwx
MiArNDYsNiBAQCBGRUNvbXBvbmVudFRyYW5zZmVyOjpGRUNvbXBvbmVudFRyYW5zZmVyKEZpbHRl
ciYgZmlsdGVyLCBjb25zdCBDb21wb25lbnRUcmFuc2ZlcgogewogfQogCi1SZWY8RkVDb21wb25l
bnRUcmFuc2Zlcj4gRkVDb21wb25lbnRUcmFuc2Zlcjo6Y3JlYXRlKEZpbHRlciYgZmlsdGVyLCBj
b25zdCBDb21wb25lbnRUcmFuc2ZlckZ1bmN0aW9uJiByZWRGdW5jdGlvbiwKLSAgICBjb25zdCBD
b21wb25lbnRUcmFuc2ZlckZ1bmN0aW9uJiBncmVlbkZ1bmN0aW9uLCBjb25zdCBDb21wb25lbnRU
cmFuc2ZlckZ1bmN0aW9uJiBibHVlRnVuY3Rpb24sIGNvbnN0IENvbXBvbmVudFRyYW5zZmVyRnVu
Y3Rpb24mIGFscGhhRnVuY3Rpb24pCi17Ci0gICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgRkVDb21w
b25lbnRUcmFuc2ZlcihmaWx0ZXIsIHJlZEZ1bmN0aW9uLCBncmVlbkZ1bmN0aW9uLCBibHVlRnVu
Y3Rpb24sIGFscGhhRnVuY3Rpb24pKTsKLX0KLQogdm9pZCBGRUNvbXBvbmVudFRyYW5zZmVyOjpj
b21wdXRlSWRlbnRpdHlUYWJsZShMb29rdXBUYWJsZSYsIGNvbnN0IENvbXBvbmVudFRyYW5zZmVy
RnVuY3Rpb24mKQogewogfQpAQCAtMTAzLDcgKzEwMSw3IEBAIHZvaWQgRkVDb21wb25lbnRUcmFu
c2Zlcjo6Y29tcHV0ZUdhbW1hVGFibGUoTG9va3VwVGFibGUmIHZhbHVlcywgY29uc3QgQ29tcG9u
ZW50CiAgICAgfQogfQogCi12b2lkIEZFQ29tcG9uZW50VHJhbnNmZXI6OnBsYXRmb3JtQXBwbHlT
b2Z0d2FyZSgpCit2b2lkIEZFQ29tcG9uZW50VHJhbnNmZXI6OnBsYXRmb3JtQXBwbHlTb2Z0d2Fy
ZShjb25zdCBGaWx0ZXImKQogewogICAgIEZpbHRlckVmZmVjdCogaW4gPSBpbnB1dEVmZmVjdCgw
KTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVy
cy9GRUNvbXBvbmVudFRyYW5zZmVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9maWx0ZXJzL0ZFQ29tcG9uZW50VHJhbnNmZXIuaAppbmRleCAzYjlkMjYwOGIwOTc0ZDgyNTVl
Y2FhNDJhODNjMmFmZGY2MzhhM2Q5Li42YWZlZTVlOTY4NjE3MTM3NDFlMzk5YTY4YjUxZjM5NDA4
M2YwNDNiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0
ZXJzL0ZFQ29tcG9uZW50VHJhbnNmZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9maWx0ZXJzL0ZFQ29tcG9uZW50VHJhbnNmZXIuaApAQCAtMjIsOCArMjIsNiBAQAog
I3ByYWdtYSBvbmNlCiAKICNpbmNsdWRlICJGaWx0ZXJFZmZlY3QuaCIKLQotI2luY2x1ZGUgIkZp
bHRlci5oIgogI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewpA
QCAtNTMsOCArNTEsNyBAQCBzdHJ1Y3QgQ29tcG9uZW50VHJhbnNmZXJGdW5jdGlvbiB7CiAKIGNs
YXNzIEZFQ29tcG9uZW50VHJhbnNmZXIgOiBwdWJsaWMgRmlsdGVyRWZmZWN0IHsKIHB1YmxpYzoK
LSAgICBzdGF0aWMgUmVmPEZFQ29tcG9uZW50VHJhbnNmZXI+IGNyZWF0ZShGaWx0ZXImLCBjb25z
dCBDb21wb25lbnRUcmFuc2ZlckZ1bmN0aW9uJiByZWRGdW5jLCBjb25zdCBDb21wb25lbnRUcmFu
c2ZlckZ1bmN0aW9uJiBncmVlbkZ1bmMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgY29uc3QgQ29tcG9uZW50VHJhbnNmZXJGdW5jdGlvbiYgYmx1ZUZ1bmMsIGNv
bnN0IENvbXBvbmVudFRyYW5zZmVyRnVuY3Rpb24mIGFscGhhRnVuYyk7CisgICAgc3RhdGljIFJl
ZjxGRUNvbXBvbmVudFRyYW5zZmVyPiBjcmVhdGUoY29uc3QgQ29tcG9uZW50VHJhbnNmZXJGdW5j
dGlvbiYgcmVkRnVuYywgY29uc3QgQ29tcG9uZW50VHJhbnNmZXJGdW5jdGlvbiYgZ3JlZW5GdW5j
LCBjb25zdCBDb21wb25lbnRUcmFuc2ZlckZ1bmN0aW9uJiBibHVlRnVuYywgY29uc3QgQ29tcG9u
ZW50VHJhbnNmZXJGdW5jdGlvbiYgYWxwaGFGdW5jKTsKIAogICAgIENvbXBvbmVudFRyYW5zZmVy
RnVuY3Rpb24gcmVkRnVuY3Rpb24oKSBjb25zdCB7IHJldHVybiBtX3JlZEZ1bmN0aW9uOyB9CiAg
ICAgQ29tcG9uZW50VHJhbnNmZXJGdW5jdGlvbiBncmVlbkZ1bmN0aW9uKCkgY29uc3QgeyByZXR1
cm4gbV9ncmVlbkZ1bmN0aW9uOyB9CkBAIC02Miw4ICs1OSw3IEBAIHB1YmxpYzoKICAgICBDb21w
b25lbnRUcmFuc2ZlckZ1bmN0aW9uIGFscGhhRnVuY3Rpb24oKSBjb25zdCB7IHJldHVybiBtX2Fs
cGhhRnVuY3Rpb247IH0KIAogcHJpdmF0ZToKLSAgICBGRUNvbXBvbmVudFRyYW5zZmVyKEZpbHRl
ciYsIGNvbnN0IENvbXBvbmVudFRyYW5zZmVyRnVuY3Rpb24mIHJlZEZ1bmMsIGNvbnN0IENvbXBv
bmVudFRyYW5zZmVyRnVuY3Rpb24mIGdyZWVuRnVuYywKLSAgICAgICAgICAgICAgICAgICAgICAg
IGNvbnN0IENvbXBvbmVudFRyYW5zZmVyRnVuY3Rpb24mIGJsdWVGdW5jLCBjb25zdCBDb21wb25l
bnRUcmFuc2ZlckZ1bmN0aW9uJiBhbHBoYUZ1bmMpOworICAgIEZFQ29tcG9uZW50VHJhbnNmZXIo
Y29uc3QgQ29tcG9uZW50VHJhbnNmZXJGdW5jdGlvbiYgcmVkRnVuYywgY29uc3QgQ29tcG9uZW50
VHJhbnNmZXJGdW5jdGlvbiYgZ3JlZW5GdW5jLCBjb25zdCBDb21wb25lbnRUcmFuc2ZlckZ1bmN0
aW9uJiBibHVlRnVuYywgY29uc3QgQ29tcG9uZW50VHJhbnNmZXJGdW5jdGlvbiYgYWxwaGFGdW5j
KTsKIAogICAgIHVzaW5nIExvb2t1cFRhYmxlID0gc3RkOjphcnJheTx1aW50OF90LCAyNTY+Owog
CkBAIC03NSw3ICs3MSw3IEBAIHByaXZhdGU6CiAKICAgICB2b2lkIGNvbXB1dGVMb29rdXBUYWJs
ZXMoTG9va3VwVGFibGUmIHJlZFRhYmxlLCBMb29rdXBUYWJsZSYgZ3JlZW5UYWJsZSwgTG9va3Vw
VGFibGUmIGJsdWVUYWJsZSwgTG9va3VwVGFibGUmIGFscGhhVGFibGUpOwogCi0gICAgdm9pZCBw
bGF0Zm9ybUFwcGx5U29mdHdhcmUoKSBvdmVycmlkZTsKKyAgICB2b2lkIHBsYXRmb3JtQXBwbHlT
b2Z0d2FyZShjb25zdCBGaWx0ZXImKSBvdmVycmlkZTsKIAogICAgIFdURjo6VGV4dFN0cmVhbSYg
ZXh0ZXJuYWxSZXByZXNlbnRhdGlvbihXVEY6OlRleHRTdHJlYW0mLCBSZXByZXNlbnRhdGlvblR5
cGUpIGNvbnN0IG92ZXJyaWRlOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9maWx0ZXJzL0ZFQ29tcG9zaXRlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVDb21wb3NpdGUuY3BwCmluZGV4IGUwYmVmMzA3NDA1ZmYy
MzNlOGEyYWZiNWNiZWM4ZDU0OGQyMjc4MDguLmY2YTk0OGJkZjI3YzAxYzA4NzFkNWJiNTdjZTQz
NzkwZjg2YWE4MGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2ZpbHRlcnMvRkVDb21wb3NpdGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2ZpbHRlcnMvRkVDb21wb3NpdGUuY3BwCkBAIC0yNSwxNSArMjUsMTkgQEAKICNpbmNs
dWRlICJGRUNvbXBvc2l0ZS5oIgogCiAjaW5jbHVkZSAiRkVDb21wb3NpdGVBcml0aG1ldGljTkVP
Ti5oIgotI2luY2x1ZGUgIkZpbHRlci5oIgogI2luY2x1ZGUgIkdyYXBoaWNzQ29udGV4dC5oIgog
I2luY2x1ZGUgIlBpeGVsQnVmZmVyLmgiCiAjaW5jbHVkZSA8d3RmL3RleHQvVGV4dFN0cmVhbS5o
PgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLUZFQ29tcG9zaXRlOjpGRUNvbXBvc2l0ZShGaWx0
ZXImIGZpbHRlciwgY29uc3QgQ29tcG9zaXRlT3BlcmF0aW9uVHlwZSYgdHlwZSwgZmxvYXQgazEs
IGZsb2F0IGsyLCBmbG9hdCBrMywgZmxvYXQgazQpCi0gICAgOiBGaWx0ZXJFZmZlY3QoZmlsdGVy
LCBGaWx0ZXJFZmZlY3Q6OlR5cGU6OkZFQ29tcG9zaXRlKQorUmVmPEZFQ29tcG9zaXRlPiBGRUNv
bXBvc2l0ZTo6Y3JlYXRlKGNvbnN0IENvbXBvc2l0ZU9wZXJhdGlvblR5cGUmIHR5cGUsIGZsb2F0
IGsxLCBmbG9hdCBrMiwgZmxvYXQgazMsIGZsb2F0IGs0KQoreworICAgIHJldHVybiBhZG9wdFJl
ZigqbmV3IEZFQ29tcG9zaXRlKHR5cGUsIGsxLCBrMiwgazMsIGs0KSk7Cit9CisKK0ZFQ29tcG9z
aXRlOjpGRUNvbXBvc2l0ZShjb25zdCBDb21wb3NpdGVPcGVyYXRpb25UeXBlJiB0eXBlLCBmbG9h
dCBrMSwgZmxvYXQgazIsIGZsb2F0IGszLCBmbG9hdCBrNCkKKyAgICA6IEZpbHRlckVmZmVjdChG
aWx0ZXJFZmZlY3Q6OlR5cGU6OkZFQ29tcG9zaXRlKQogICAgICwgbV90eXBlKHR5cGUpCiAgICAg
LCBtX2sxKGsxKQogICAgICwgbV9rMihrMikKQEAgLTQyLDExICs0Niw2IEBAIEZFQ29tcG9zaXRl
OjpGRUNvbXBvc2l0ZShGaWx0ZXImIGZpbHRlciwgY29uc3QgQ29tcG9zaXRlT3BlcmF0aW9uVHlw
ZSYgdHlwZSwgZmxvCiB7CiB9CiAKLVJlZjxGRUNvbXBvc2l0ZT4gRkVDb21wb3NpdGU6OmNyZWF0
ZShGaWx0ZXImIGZpbHRlciwgY29uc3QgQ29tcG9zaXRlT3BlcmF0aW9uVHlwZSYgdHlwZSwgZmxv
YXQgazEsIGZsb2F0IGsyLCBmbG9hdCBrMywgZmxvYXQgazQpCi17Ci0gICAgcmV0dXJuIGFkb3B0
UmVmKCpuZXcgRkVDb21wb3NpdGUoZmlsdGVyLCB0eXBlLCBrMSwgazIsIGszLCBrNCkpOwotfQot
CiBib29sIEZFQ29tcG9zaXRlOjpzZXRPcGVyYXRpb24oQ29tcG9zaXRlT3BlcmF0aW9uVHlwZSB0
eXBlKQogewogICAgIGlmIChtX3R5cGUgPT0gdHlwZSkKQEAgLTIwMSw3ICsyMDAsNyBAQCBpbmxp
bmUgdm9pZCBGRUNvbXBvc2l0ZTo6cGxhdGZvcm1Bcml0aG1ldGljU29mdHdhcmUoY29uc3QgVWlu
dDhDbGFtcGVkQXJyYXkmIHNvdQogI2VuZGlmCiB9CiAKLXZvaWQgRkVDb21wb3NpdGU6OmRldGVy
bWluZUFic29sdXRlUGFpbnRSZWN0KCkKK3ZvaWQgRkVDb21wb3NpdGU6OmRldGVybWluZUFic29s
dXRlUGFpbnRSZWN0KGNvbnN0IEZpbHRlciYgZmlsdGVyKQogewogICAgIHN3aXRjaCAobV90eXBl
KSB7CiAgICAgY2FzZSBGRUNPTVBPU0lURV9PUEVSQVRPUl9JTjoKQEAgLTIxOCwxMiArMjE3LDEy
IEBAIHZvaWQgRkVDb21wb3NpdGU6OmRldGVybWluZUFic29sdXRlUGFpbnRSZWN0KCkKICAgICAg
ICAgcmV0dXJuOwogICAgIGRlZmF1bHQ6CiAgICAgICAgIC8vIFRha2UgdGhlIHVuaW9uIG9mIGJv
dGggaW5wdXQgZWZmZWN0cy4KLSAgICAgICAgRmlsdGVyRWZmZWN0OjpkZXRlcm1pbmVBYnNvbHV0
ZVBhaW50UmVjdCgpOworICAgICAgICBGaWx0ZXJFZmZlY3Q6OmRldGVybWluZUFic29sdXRlUGFp
bnRSZWN0KGZpbHRlcik7CiAgICAgICAgIHJldHVybjsKICAgICB9CiB9CiAKLXZvaWQgRkVDb21w
b3NpdGU6OnBsYXRmb3JtQXBwbHlTb2Z0d2FyZSgpCit2b2lkIEZFQ29tcG9zaXRlOjpwbGF0Zm9y
bUFwcGx5U29mdHdhcmUoY29uc3QgRmlsdGVyJikKIHsKICAgICBGaWx0ZXJFZmZlY3QqIGluID0g
aW5wdXRFZmZlY3QoMCk7CiAgICAgRmlsdGVyRWZmZWN0KiBpbjIgPSBpbnB1dEVmZmVjdCgxKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVD
b21wb3NpdGUuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVD
b21wb3NpdGUuaAppbmRleCAzOTIzN2ZlYjEyN2FkMWZmMWRlMjE4MzRiZDdiMmI3MzdmYWFmMzJk
Li4yMjgwN2NhYThkNjY3ODM5YmMwMTdiYjUwMmMwNTA4NGY3MmJjNzI0IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFQ29tcG9zaXRlLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRUNvbXBvc2l0ZS5o
CkBAIC0yMiw4ICsyMiw2IEBACiAjcHJhZ21hIG9uY2UKIAogI2luY2x1ZGUgIkZpbHRlckVmZmVj
dC5oIgotCi0jaW5jbHVkZSAiRmlsdGVyLmgiCiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5n
Lmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAgLTQxLDcgKzM5LDcgQEAgZW51bSBDb21wb3Np
dGVPcGVyYXRpb25UeXBlIHsKIAogY2xhc3MgRkVDb21wb3NpdGUgOiBwdWJsaWMgRmlsdGVyRWZm
ZWN0IHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUmVmPEZFQ29tcG9zaXRlPiBjcmVhdGUoRmlsdGVy
JiwgY29uc3QgQ29tcG9zaXRlT3BlcmF0aW9uVHlwZSYsIGZsb2F0LCBmbG9hdCwgZmxvYXQsIGZs
b2F0KTsKKyAgICBzdGF0aWMgUmVmPEZFQ29tcG9zaXRlPiBjcmVhdGUoY29uc3QgQ29tcG9zaXRl
T3BlcmF0aW9uVHlwZSYsIGZsb2F0IGsxLCBmbG9hdCBrMiwgZmxvYXQgazMsIGZsb2F0IGs0KTsK
IAogICAgIENvbXBvc2l0ZU9wZXJhdGlvblR5cGUgb3BlcmF0aW9uKCkgY29uc3QgeyByZXR1cm4g
bV90eXBlOyB9CiAgICAgYm9vbCBzZXRPcGVyYXRpb24oQ29tcG9zaXRlT3BlcmF0aW9uVHlwZSk7
CkBAIC01OCwxNiArNTYsMTcgQEAgcHVibGljOgogICAgIGZsb2F0IGs0KCkgY29uc3QgeyByZXR1
cm4gbV9rNDsgfQogICAgIGJvb2wgc2V0SzQoZmxvYXQpOwogCi1wcm90ZWN0ZWQ6Ci0gICAgYm9v
bCByZXF1aXJlc1ZhbGlkUHJlTXVsdGlwbGllZFBpeGVscygpIG92ZXJyaWRlIHsgcmV0dXJuIG1f
dHlwZSAhPSBGRUNPTVBPU0lURV9PUEVSQVRPUl9BUklUSE1FVElDOyB9Ci0KIHByaXZhdGU6Ci0g
ICAgRkVDb21wb3NpdGUoRmlsdGVyJiwgY29uc3QgQ29tcG9zaXRlT3BlcmF0aW9uVHlwZSYsIGZs
b2F0LCBmbG9hdCwgZmxvYXQsIGZsb2F0KTsKKyAgICBGRUNvbXBvc2l0ZShjb25zdCBDb21wb3Np
dGVPcGVyYXRpb25UeXBlJiwgZmxvYXQgazEsIGZsb2F0IGsyLCBmbG9hdCBrMywgZmxvYXQgazQp
OwogCiAgICAgdm9pZCBjb3JyZWN0RmlsdGVyUmVzdWx0SWZOZWVkZWQoKSBvdmVycmlkZTsKLSAg
ICB2b2lkIGRldGVybWluZUFic29sdXRlUGFpbnRSZWN0KCkgb3ZlcnJpZGU7CiAKLSAgICB2b2lk
IHBsYXRmb3JtQXBwbHlTb2Z0d2FyZSgpIG92ZXJyaWRlOworICAgIGJvb2wgcmVxdWlyZXNWYWxp
ZFByZU11bHRpcGxpZWRQaXhlbHMoKSBvdmVycmlkZSB7IHJldHVybiBtX3R5cGUgIT0gRkVDT01Q
T1NJVEVfT1BFUkFUT1JfQVJJVEhNRVRJQzsgfQorCisgICAgdm9pZCBkZXRlcm1pbmVBYnNvbHV0
ZVBhaW50UmVjdChjb25zdCBGaWx0ZXImKSBvdmVycmlkZTsKKworICAgIHZvaWQgcGxhdGZvcm1B
cHBseVNvZnR3YXJlKGNvbnN0IEZpbHRlciYpIG92ZXJyaWRlOworCiAgICAgV1RGOjpUZXh0U3Ry
ZWFtJiBleHRlcm5hbFJlcHJlc2VudGF0aW9uKFdURjo6VGV4dFN0cmVhbSYsIFJlcHJlc2VudGF0
aW9uVHlwZSkgY29uc3Qgb3ZlcnJpZGU7CiAKICAgICBpbmxpbmUgdm9pZCBwbGF0Zm9ybUFyaXRo
bWV0aWNTb2Z0d2FyZShjb25zdCBVaW50OENsYW1wZWRBcnJheSYgc291cmNlLCBVaW50OENsYW1w
ZWRBcnJheSYgZGVzdGluYXRpb24sIGZsb2F0IGsxLCBmbG9hdCBrMiwgZmxvYXQgazMsIGZsb2F0
IGs0KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRl
cnMvRkVDb252b2x2ZU1hdHJpeC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9maWx0ZXJzL0ZFQ29udm9sdmVNYXRyaXguY3BwCmluZGV4IGU4NmYxMjljNTRiMWQ4ZmQ4ZWQ5
Mjk0NmUyY2UxYjY5ODIzMDNiZWQuLjYzMjZhNTZlMWQzMWVjNDU0NjlkOGU3OGE2NmEzYWU5Yjll
MjgzYTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRl
cnMvRkVDb252b2x2ZU1hdHJpeC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvZmlsdGVycy9GRUNvbnZvbHZlTWF0cml4LmNwcApAQCAtMjQsNyArMjQsNiBAQAogI2lu
Y2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIkZFQ29udm9sdmVNYXRyaXguaCIKIAotI2luY2x1
ZGUgIkZpbHRlci5oIgogI2luY2x1ZGUgIlBpeGVsQnVmZmVyLmgiCiAjaW5jbHVkZSA8d3RmL1Bh
cmFsbGVsSm9icy5oPgogI2luY2x1ZGUgPHd0Zi9Xb3JrUXVldWUuaD4KQEAgLTMyLDggKzMxLDEz
IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotRkVDb252b2x2ZU1hdHJpeDo6RkVDb252b2x2
ZU1hdHJpeChGaWx0ZXImIGZpbHRlciwgY29uc3QgSW50U2l6ZSYga2VybmVsU2l6ZSwgZmxvYXQg
ZGl2aXNvciwgZmxvYXQgYmlhcywgY29uc3QgSW50UG9pbnQmIHRhcmdldE9mZnNldCwgRWRnZU1v
ZGVUeXBlIGVkZ2VNb2RlLCBjb25zdCBGbG9hdFBvaW50JiBrZXJuZWxVbml0TGVuZ3RoLCBib29s
IHByZXNlcnZlQWxwaGEsIGNvbnN0IFZlY3RvcjxmbG9hdD4mIGtlcm5lbE1hdHJpeCkKLSAgICA6
IEZpbHRlckVmZmVjdChmaWx0ZXIsIEZpbHRlckVmZmVjdDo6VHlwZTo6RkVDb252b2x2ZU1hdHJp
eCkKK1JlZjxGRUNvbnZvbHZlTWF0cml4PiBGRUNvbnZvbHZlTWF0cml4OjpjcmVhdGUoY29uc3Qg
SW50U2l6ZSYga2VybmVsU2l6ZSwgZmxvYXQgZGl2aXNvciwgZmxvYXQgYmlhcywgY29uc3QgSW50
UG9pbnQmIHRhcmdldE9mZnNldCwgRWRnZU1vZGVUeXBlIGVkZ2VNb2RlLCBjb25zdCBGbG9hdFBv
aW50JiBrZXJuZWxVbml0TGVuZ3RoLCBib29sIHByZXNlcnZlQWxwaGEsIGNvbnN0IFZlY3Rvcjxm
bG9hdD4mIGtlcm5lbE1hdHJpeCkKK3sKKyAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBGRUNvbnZv
bHZlTWF0cml4KGtlcm5lbFNpemUsIGRpdmlzb3IsIGJpYXMsIHRhcmdldE9mZnNldCwgZWRnZU1v
ZGUsIGtlcm5lbFVuaXRMZW5ndGgsIHByZXNlcnZlQWxwaGEsIGtlcm5lbE1hdHJpeCkpOworfQor
CitGRUNvbnZvbHZlTWF0cml4OjpGRUNvbnZvbHZlTWF0cml4KGNvbnN0IEludFNpemUmIGtlcm5l
bFNpemUsIGZsb2F0IGRpdmlzb3IsIGZsb2F0IGJpYXMsIGNvbnN0IEludFBvaW50JiB0YXJnZXRP
ZmZzZXQsIEVkZ2VNb2RlVHlwZSBlZGdlTW9kZSwgY29uc3QgRmxvYXRQb2ludCYga2VybmVsVW5p
dExlbmd0aCwgYm9vbCBwcmVzZXJ2ZUFscGhhLCBjb25zdCBWZWN0b3I8ZmxvYXQ+JiBrZXJuZWxN
YXRyaXgpCisgICAgOiBGaWx0ZXJFZmZlY3QoRmlsdGVyRWZmZWN0OjpUeXBlOjpGRUNvbnZvbHZl
TWF0cml4KQogICAgICwgbV9rZXJuZWxTaXplKGtlcm5lbFNpemUpCiAgICAgLCBtX2Rpdmlzb3Io
ZGl2aXNvcikKICAgICAsIG1fYmlhcyhiaWFzKQpAQCAtNDcsMTQgKzUxLDYgQEAgRkVDb252b2x2
ZU1hdHJpeDo6RkVDb252b2x2ZU1hdHJpeChGaWx0ZXImIGZpbHRlciwgY29uc3QgSW50U2l6ZSYg
a2VybmVsU2l6ZSwgZmwKICAgICBBU1NFUlQobV9rZXJuZWxTaXplLmhlaWdodCgpID4gMCk7CiB9
CiAKLVJlZjxGRUNvbnZvbHZlTWF0cml4PiBGRUNvbnZvbHZlTWF0cml4OjpjcmVhdGUoRmlsdGVy
JiBmaWx0ZXIsIGNvbnN0IEludFNpemUmIGtlcm5lbFNpemUsCi0gICAgZmxvYXQgZGl2aXNvciwg
ZmxvYXQgYmlhcywgY29uc3QgSW50UG9pbnQmIHRhcmdldE9mZnNldCwgRWRnZU1vZGVUeXBlIGVk
Z2VNb2RlLAotICAgIGNvbnN0IEZsb2F0UG9pbnQmIGtlcm5lbFVuaXRMZW5ndGgsIGJvb2wgcHJl
c2VydmVBbHBoYSwgY29uc3QgVmVjdG9yPGZsb2F0PiYga2VybmVsTWF0cml4KQotewotICAgIHJl
dHVybiBhZG9wdFJlZigqbmV3IEZFQ29udm9sdmVNYXRyaXgoZmlsdGVyLCBrZXJuZWxTaXplLCBk
aXZpc29yLCBiaWFzLCB0YXJnZXRPZmZzZXQsIGVkZ2VNb2RlLCBrZXJuZWxVbml0TGVuZ3RoLAot
ICAgICAgICBwcmVzZXJ2ZUFscGhhLCBrZXJuZWxNYXRyaXgpKTsKLX0KLQogdm9pZCBGRUNvbnZv
bHZlTWF0cml4OjpzZXRLZXJuZWxTaXplKGNvbnN0IEludFNpemUmIGtlcm5lbFNpemUpCiB7CiAg
ICAgQVNTRVJUKGtlcm5lbFNpemUud2lkdGgoKSA+IDApOwpAQCAtMzY1LDcgKzM2MSw3IEBAIEFM
V0FZU19JTkxJTkUgdm9pZCBGRUNvbnZvbHZlTWF0cml4OjpzZXRPdXRlclBpeGVscyhQYWludGlu
Z0RhdGEmIHBhaW50aW5nRGF0YSwKICAgICAgICAgZmFzdFNldE91dGVyUGl4ZWxzPGZhbHNlPihw
YWludGluZ0RhdGEsIHgxLCB5MSwgeDIsIHkyKTsKIH0KIAotdm9pZCBGRUNvbnZvbHZlTWF0cml4
OjpwbGF0Zm9ybUFwcGx5U29mdHdhcmUoKQordm9pZCBGRUNvbnZvbHZlTWF0cml4OjpwbGF0Zm9y
bUFwcGx5U29mdHdhcmUoY29uc3QgRmlsdGVyJikKIHsKICAgICBGaWx0ZXJFZmZlY3QqIGluID0g
aW5wdXRFZmZlY3QoMCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2ZpbHRlcnMvRkVDb252b2x2ZU1hdHJpeC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvZmlsdGVycy9GRUNvbnZvbHZlTWF0cml4LmgKaW5kZXggYzFhNWM1Yjg2NzU2
MmYyNmFmODA3ZDQ1YzViNDAwOTZkYjFjZmZmYS4uOTU3NmRmZWU3ZTg0MmNhZjQ2NTA4NWFkNzFi
YzcwZTJmNWFhZjU5NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvZmlsdGVycy9GRUNvbnZvbHZlTWF0cml4LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvZmlsdGVycy9GRUNvbnZvbHZlTWF0cml4LmgKQEAgLTI0LDcgKzI0LDYgQEAK
IAogI2luY2x1ZGUgIkZpbHRlckVmZmVjdC5oIgogI2luY2x1ZGUgIkZsb2F0UG9pbnQuaCIKLSNp
bmNsdWRlICJGaWx0ZXIuaCIKICNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CiAKIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKQEAgLTM4LDkgKzM3LDcgQEAgZW51bSBFZGdlTW9kZVR5cGUgewogCiBjbGFzcyBG
RUNvbnZvbHZlTWF0cml4IDogcHVibGljIEZpbHRlckVmZmVjdCB7CiBwdWJsaWM6Ci0gICAgc3Rh
dGljIFJlZjxGRUNvbnZvbHZlTWF0cml4PiBjcmVhdGUoRmlsdGVyJiwgY29uc3QgSW50U2l6ZSYs
Ci0gICAgICAgICAgICBmbG9hdCwgZmxvYXQsIGNvbnN0IEludFBvaW50JiwgRWRnZU1vZGVUeXBl
LCBjb25zdCBGbG9hdFBvaW50JiwKLSAgICAgICAgICAgIGJvb2wsIGNvbnN0IFZlY3RvcjxmbG9h
dD4mKTsKKyAgICBzdGF0aWMgUmVmPEZFQ29udm9sdmVNYXRyaXg+IGNyZWF0ZShjb25zdCBJbnRT
aXplJiBrZXJuZWxTaXplLCBmbG9hdCBkaXZpc29yLCBmbG9hdCBiaWFzLCBjb25zdCBJbnRQb2lu
dCYgdGFyZ2V0T2Zmc2V0LCBFZGdlTW9kZVR5cGUsIGNvbnN0IEZsb2F0UG9pbnQmIGtlcm5lbFVu
aXRMZW5ndGgsIGJvb2wgcHJlc2VydmVBbHBoYSwgY29uc3QgVmVjdG9yPGZsb2F0PiYga2VybmVs
TWF0cml4KTsKIAogICAgIEludFNpemUga2VybmVsU2l6ZSgpIGNvbnN0IHsgcmV0dXJuIG1fa2Vy
bmVsU2l6ZTsgfQogICAgIHZvaWQgc2V0S2VybmVsU2l6ZShjb25zdCBJbnRTaXplJik7CkBAIC03
NywxMiArNzQsMTEgQEAgcHJpdmF0ZToKICAgICAgICAgVmVjdG9yPGZsb2F0PiBrZXJuZWxNYXRy
aXg7CiAgICAgfTsKIAotICAgIEZFQ29udm9sdmVNYXRyaXgoRmlsdGVyJiwgY29uc3QgSW50U2l6
ZSYsIGZsb2F0LCBmbG9hdCwKLSAgICAgICAgICAgIGNvbnN0IEludFBvaW50JiwgRWRnZU1vZGVU
eXBlLCBjb25zdCBGbG9hdFBvaW50JiwgYm9vbCwgY29uc3QgVmVjdG9yPGZsb2F0PiYpOworICAg
IEZFQ29udm9sdmVNYXRyaXgoY29uc3QgSW50U2l6ZSYga2VybmVsU2l6ZSwgZmxvYXQgZGl2aXNv
ciwgZmxvYXQgYmlhcywgY29uc3QgSW50UG9pbnQmIHRhcmdldE9mZnNldCwgRWRnZU1vZGVUeXBl
LCBjb25zdCBGbG9hdFBvaW50JiBrZXJuZWxVbml0TGVuZ3RoLCBib29sIHByZXNlcnZlQWxwaGEs
IGNvbnN0IFZlY3RvcjxmbG9hdD4mIGtlcm5lbE1hdHJpeCk7CiAKLSAgICB2b2lkIGRldGVybWlu
ZUFic29sdXRlUGFpbnRSZWN0KCkgb3ZlcnJpZGUgeyBzZXRBYnNvbHV0ZVBhaW50UmVjdChlbmNs
b3NpbmdJbnRSZWN0KG1heEVmZmVjdFJlY3QoKSkpOyB9CisgICAgdm9pZCBkZXRlcm1pbmVBYnNv
bHV0ZVBhaW50UmVjdChjb25zdCBGaWx0ZXImKSBvdmVycmlkZSB7IHNldEFic29sdXRlUGFpbnRS
ZWN0KGVuY2xvc2luZ0ludFJlY3QobWF4RWZmZWN0UmVjdCgpKSk7IH0KIAotICAgIHZvaWQgcGxh
dGZvcm1BcHBseVNvZnR3YXJlKCkgb3ZlcnJpZGU7CisgICAgdm9pZCBwbGF0Zm9ybUFwcGx5U29m
dHdhcmUoY29uc3QgRmlsdGVyJikgb3ZlcnJpZGU7CiAKICAgICBXVEY6OlRleHRTdHJlYW0mIGV4
dGVybmFsUmVwcmVzZW50YXRpb24oV1RGOjpUZXh0U3RyZWFtJiwgUmVwcmVzZW50YXRpb25UeXBl
KSBjb25zdCBvdmVycmlkZTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvZmlsdGVycy9GRURpZmZ1c2VMaWdodGluZy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFRGlmZnVzZUxpZ2h0aW5nLmNwcAppbmRleCA0NGUy
ZTYyMTRhMzc2YTRkYTFlZTc3M2NkZDQxNzY1Nzc0MDliMWUwLi4xYWFjZTlkNjlhMDkwYjRmMTBm
MTNkZTc1NTc1MWVmMjg2MjA5MWNkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9maWx0ZXJzL0ZFRGlmZnVzZUxpZ2h0aW5nLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFRGlmZnVzZUxpZ2h0aW5nLmNwcApAQCAt
MjcsMTQgKzI3LDE0IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotRkVEaWZmdXNlTGlnaHRp
bmc6OkZFRGlmZnVzZUxpZ2h0aW5nKEZpbHRlciYgZmlsdGVyLCBjb25zdCBDb2xvciYgbGlnaHRp
bmdDb2xvciwgZmxvYXQgc3VyZmFjZVNjYWxlLCBmbG9hdCBkaWZmdXNlQ29uc3RhbnQsIGZsb2F0
IGtlcm5lbFVuaXRMZW5ndGhYLCBmbG9hdCBrZXJuZWxVbml0TGVuZ3RoWSwgUmVmPExpZ2h0U291
cmNlPiYmIGxpZ2h0U291cmNlKQotICAgIDogRkVMaWdodGluZyhmaWx0ZXIsIERpZmZ1c2VMaWdo
dGluZywgbGlnaHRpbmdDb2xvciwgc3VyZmFjZVNjYWxlLCBkaWZmdXNlQ29uc3RhbnQsIDAsIDAs
IGtlcm5lbFVuaXRMZW5ndGhYLCBrZXJuZWxVbml0TGVuZ3RoWSwgV1RGTW92ZShsaWdodFNvdXJj
ZSksIEZpbHRlckVmZmVjdDo6VHlwZTo6RkVEaWZmdXNlTGlnaHRpbmcpCitSZWY8RkVEaWZmdXNl
TGlnaHRpbmc+IEZFRGlmZnVzZUxpZ2h0aW5nOjpjcmVhdGUoY29uc3QgQ29sb3ImIGxpZ2h0aW5n
Q29sb3IsIGZsb2F0IHN1cmZhY2VTY2FsZSwgZmxvYXQgZGlmZnVzZUNvbnN0YW50LCBmbG9hdCBr
ZXJuZWxVbml0TGVuZ3RoWCwgZmxvYXQga2VybmVsVW5pdExlbmd0aFksIFJlZjxMaWdodFNvdXJj
ZT4mJiBsaWdodFNvdXJjZSkKIHsKKyAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBGRURpZmZ1c2VM
aWdodGluZyhsaWdodGluZ0NvbG9yLCBzdXJmYWNlU2NhbGUsIGRpZmZ1c2VDb25zdGFudCwga2Vy
bmVsVW5pdExlbmd0aFgsIGtlcm5lbFVuaXRMZW5ndGhZLCBXVEZNb3ZlKGxpZ2h0U291cmNlKSkp
OwogfQogCi1SZWY8RkVEaWZmdXNlTGlnaHRpbmc+IEZFRGlmZnVzZUxpZ2h0aW5nOjpjcmVhdGUo
RmlsdGVyJiBmaWx0ZXIsIGNvbnN0IENvbG9yJiBsaWdodGluZ0NvbG9yLCBmbG9hdCBzdXJmYWNl
U2NhbGUsIGZsb2F0IGRpZmZ1c2VDb25zdGFudCwgZmxvYXQga2VybmVsVW5pdExlbmd0aFgsIGZs
b2F0IGtlcm5lbFVuaXRMZW5ndGhZLCBSZWY8TGlnaHRTb3VyY2U+JiYgbGlnaHRTb3VyY2UpCitG
RURpZmZ1c2VMaWdodGluZzo6RkVEaWZmdXNlTGlnaHRpbmcoY29uc3QgQ29sb3ImIGxpZ2h0aW5n
Q29sb3IsIGZsb2F0IHN1cmZhY2VTY2FsZSwgZmxvYXQgZGlmZnVzZUNvbnN0YW50LCBmbG9hdCBr
ZXJuZWxVbml0TGVuZ3RoWCwgZmxvYXQga2VybmVsVW5pdExlbmd0aFksIFJlZjxMaWdodFNvdXJj
ZT4mJiBsaWdodFNvdXJjZSkKKyAgICA6IEZFTGlnaHRpbmcoRGlmZnVzZUxpZ2h0aW5nLCBsaWdo
dGluZ0NvbG9yLCBzdXJmYWNlU2NhbGUsIGRpZmZ1c2VDb25zdGFudCwgMCwgMCwga2VybmVsVW5p
dExlbmd0aFgsIGtlcm5lbFVuaXRMZW5ndGhZLCBXVEZNb3ZlKGxpZ2h0U291cmNlKSwgRmlsdGVy
RWZmZWN0OjpUeXBlOjpGRURpZmZ1c2VMaWdodGluZykKIHsKLSAgICByZXR1cm4gYWRvcHRSZWYo
Km5ldyBGRURpZmZ1c2VMaWdodGluZyhmaWx0ZXIsIGxpZ2h0aW5nQ29sb3IsIHN1cmZhY2VTY2Fs
ZSwgZGlmZnVzZUNvbnN0YW50LCBrZXJuZWxVbml0TGVuZ3RoWCwga2VybmVsVW5pdExlbmd0aFks
IFdURk1vdmUobGlnaHRTb3VyY2UpKSk7CiB9CiAKIGJvb2wgRkVEaWZmdXNlTGlnaHRpbmc6OnNl
dERpZmZ1c2VDb25zdGFudChmbG9hdCBkaWZmdXNlQ29uc3RhbnQpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFRGlmZnVzZUxpZ2h0aW5nLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFRGlmZnVzZUxpZ2h0
aW5nLmgKaW5kZXggMjczN2Y2MGY0YzNmNGIzNjI0ZGY4MGViYjk5ODM3YmE2NTlmYTBiZS4uOGEx
MGFlYzg3YzhmMTg5ZjlmMDU3Y2I5NDQzZWFhZWRkNTM4ZjY5MSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRURpZmZ1c2VMaWdodGluZy5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVEaWZmdXNlTGln
aHRpbmcuaApAQCAtMjksNyArMjksNyBAQCBjbGFzcyBMaWdodFNvdXJjZTsKIAogY2xhc3MgRkVE
aWZmdXNlTGlnaHRpbmcgOiBwdWJsaWMgRkVMaWdodGluZyB7CiBwdWJsaWM6Ci0gICAgc3RhdGlj
IFJlZjxGRURpZmZ1c2VMaWdodGluZz4gY3JlYXRlKEZpbHRlciYsIGNvbnN0IENvbG9yJiwgZmxv
YXQsIGZsb2F0LCBmbG9hdCwgZmxvYXQsIFJlZjxMaWdodFNvdXJjZT4mJik7CisgICAgc3RhdGlj
IFJlZjxGRURpZmZ1c2VMaWdodGluZz4gY3JlYXRlKGNvbnN0IENvbG9yJiBsaWdodGluZ0NvbG9y
LCBmbG9hdCBzdXJmYWNlU2NhbGUsIGZsb2F0IGRpZmZ1c2VDb25zdGFudCwgZmxvYXQga2VybmVs
VW5pdExlbmd0aFgsIGZsb2F0IGtlcm5lbFVuaXRMZW5ndGhZLCBSZWY8TGlnaHRTb3VyY2U+JiYp
OwogCiAgICAgZmxvYXQgZGlmZnVzZUNvbnN0YW50KCkgY29uc3QgeyByZXR1cm4gbV9kaWZmdXNl
Q29uc3RhbnQ7IH0KICAgICBib29sIHNldERpZmZ1c2VDb25zdGFudChmbG9hdCk7CkBAIC0zNyw3
ICszNyw3IEBAIHB1YmxpYzoKICAgICBXVEY6OlRleHRTdHJlYW0mIGV4dGVybmFsUmVwcmVzZW50
YXRpb24oV1RGOjpUZXh0U3RyZWFtJiwgUmVwcmVzZW50YXRpb25UeXBlKSBjb25zdCBvdmVycmlk
ZTsKIAogcHJpdmF0ZToKLSAgICBGRURpZmZ1c2VMaWdodGluZyhGaWx0ZXImLCBjb25zdCBDb2xv
ciYsIGZsb2F0LCBmbG9hdCwgZmxvYXQsIGZsb2F0LCBSZWY8TGlnaHRTb3VyY2U+JiYpOworICAg
IEZFRGlmZnVzZUxpZ2h0aW5nKGNvbnN0IENvbG9yJiBsaWdodGluZ0NvbG9yLCBmbG9hdCBzdXJm
YWNlU2NhbGUsIGZsb2F0IGRpZmZ1c2VDb25zdGFudCwgZmxvYXQga2VybmVsVW5pdExlbmd0aFgs
IGZsb2F0IGtlcm5lbFVuaXRMZW5ndGhZLCBSZWY8TGlnaHRTb3VyY2U+JiYpOwogfTsKIAogfSAv
LyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvZmlsdGVycy9GRURpc3BsYWNlbWVudE1hcC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFRGlzcGxhY2VtZW50TWFwLmNwcAppbmRleCAyNGE0
NjI2YzZhMWM4MWZjNzc0ZGE2MjM3NmMxMjliZDg2ZDcxZTI5Li4zNjc1NjgwYzgxYTRkYTUzOTYw
Mzg4YTEyNTlkZGU2MjhjNjFlN2E0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9maWx0ZXJzL0ZFRGlzcGxhY2VtZW50TWFwLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFRGlzcGxhY2VtZW50TWFwLmNwcApAQCAt
MzEsMTggKzMxLDE3IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotRkVEaXNwbGFjZW1lbnRN
YXA6OkZFRGlzcGxhY2VtZW50TWFwKEZpbHRlciYgZmlsdGVyLCBDaGFubmVsU2VsZWN0b3JUeXBl
IHhDaGFubmVsU2VsZWN0b3IsIENoYW5uZWxTZWxlY3RvclR5cGUgeUNoYW5uZWxTZWxlY3Rvciwg
ZmxvYXQgc2NhbGUpCi0gICAgOiBGaWx0ZXJFZmZlY3QoZmlsdGVyLCBGaWx0ZXJFZmZlY3Q6OlR5
cGU6OkZFRGlzcGxhY2VtZW50TWFwKQotICAgICwgbV94Q2hhbm5lbFNlbGVjdG9yKHhDaGFubmVs
U2VsZWN0b3IpCi0gICAgLCBtX3lDaGFubmVsU2VsZWN0b3IoeUNoYW5uZWxTZWxlY3RvcikKLSAg
ICAsIG1fc2NhbGUoc2NhbGUpCitSZWY8RkVEaXNwbGFjZW1lbnRNYXA+IEZFRGlzcGxhY2VtZW50
TWFwOjpjcmVhdGUoQ2hhbm5lbFNlbGVjdG9yVHlwZSB4Q2hhbm5lbFNlbGVjdG9yLCBDaGFubmVs
U2VsZWN0b3JUeXBlIHlDaGFubmVsU2VsZWN0b3IsIGZsb2F0IHNjYWxlKQogeworICAgIHJldHVy
biBhZG9wdFJlZigqbmV3IEZFRGlzcGxhY2VtZW50TWFwKHhDaGFubmVsU2VsZWN0b3IsIHlDaGFu
bmVsU2VsZWN0b3IsIHNjYWxlKSk7CiB9CiAKLVJlZjxGRURpc3BsYWNlbWVudE1hcD4gRkVEaXNw
bGFjZW1lbnRNYXA6OmNyZWF0ZShGaWx0ZXImIGZpbHRlciwgQ2hhbm5lbFNlbGVjdG9yVHlwZSB4
Q2hhbm5lbFNlbGVjdG9yLAotICAgIENoYW5uZWxTZWxlY3RvclR5cGUgeUNoYW5uZWxTZWxlY3Rv
ciwgZmxvYXQgc2NhbGUpCitGRURpc3BsYWNlbWVudE1hcDo6RkVEaXNwbGFjZW1lbnRNYXAoQ2hh
bm5lbFNlbGVjdG9yVHlwZSB4Q2hhbm5lbFNlbGVjdG9yLCBDaGFubmVsU2VsZWN0b3JUeXBlIHlD
aGFubmVsU2VsZWN0b3IsIGZsb2F0IHNjYWxlKQorICAgIDogRmlsdGVyRWZmZWN0KEZpbHRlckVm
ZmVjdDo6VHlwZTo6RkVEaXNwbGFjZW1lbnRNYXApCisgICAgLCBtX3hDaGFubmVsU2VsZWN0b3Io
eENoYW5uZWxTZWxlY3RvcikKKyAgICAsIG1feUNoYW5uZWxTZWxlY3Rvcih5Q2hhbm5lbFNlbGVj
dG9yKQorICAgICwgbV9zY2FsZShzY2FsZSkKIHsKLSAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBG
RURpc3BsYWNlbWVudE1hcChmaWx0ZXIsIHhDaGFubmVsU2VsZWN0b3IsIHlDaGFubmVsU2VsZWN0
b3IsIHNjYWxlKSk7CiB9CiAKIGJvb2wgRkVEaXNwbGFjZW1lbnRNYXA6OnNldFhDaGFubmVsU2Vs
ZWN0b3IoY29uc3QgQ2hhbm5lbFNlbGVjdG9yVHlwZSB4Q2hhbm5lbFNlbGVjdG9yKQpAQCAtOTEs
NyArOTAsNyBAQCBzdGF0aWMgaW5saW5lIHVuc2lnbmVkIGJ5dGVPZmZzZXRPZlBpeGVsKHVuc2ln
bmVkIHgsIHVuc2lnbmVkIHksIHVuc2lnbmVkIHJvd0J5dAogICAgIHJldHVybiB4ICogYnl0ZXNQ
ZXJQaXhlbCArIHkgKiByb3dCeXRlczsKIH0KIAotdm9pZCBGRURpc3BsYWNlbWVudE1hcDo6cGxh
dGZvcm1BcHBseVNvZnR3YXJlKCkKK3ZvaWQgRkVEaXNwbGFjZW1lbnRNYXA6OnBsYXRmb3JtQXBw
bHlTb2Z0d2FyZShjb25zdCBGaWx0ZXImIGZpbHRlcikKIHsKICAgICBGaWx0ZXJFZmZlY3QqIGlu
ID0gaW5wdXRFZmZlY3QoMCk7CiAgICAgRmlsdGVyRWZmZWN0KiBpbjIgPSBpbnB1dEVmZmVjdCgx
KTsKQEAgLTExNyw3ICsxMTYsNiBAQCB2b2lkIEZFRGlzcGxhY2VtZW50TWFwOjpwbGF0Zm9ybUFw
cGx5U29mdHdhcmUoKQogCiAgICAgQVNTRVJUKGlucHV0SW1hZ2UtPmxlbmd0aCgpID09IGRpc3Bs
YWNlbWVudEltYWdlLT5sZW5ndGgoKSk7CiAKLSAgICBGaWx0ZXImIGZpbHRlciA9IHRoaXMtPmZp
bHRlcigpOwogICAgIEludFNpemUgcGFpbnRTaXplID0gYWJzb2x1dGVQYWludFJlY3QoKS5zaXpl
KCk7CiAKICAgICBGbG9hdFNpemUgc2NhbGUgPSBmaWx0ZXIuc2NhbGVkQnlGaWx0ZXJTY2FsZSh7
IG1fc2NhbGUsIG1fc2NhbGUgfSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9maWx0ZXJzL0ZFRGlzcGxhY2VtZW50TWFwLmggYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFRGlzcGxhY2VtZW50TWFwLmgKaW5kZXggYWE1YjZk
NDZiYzQ2NGZjNmQwNjBkODZhZjZiYWUwZWYwN2VjOWU4ZC4uNDgxMmI1NGJhZGY0ZWMyMGU4OTU1
Y2E0NzdkYmY2YWVjNzkxYmY2ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvZmlsdGVycy9GRURpc3BsYWNlbWVudE1hcC5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVEaXNwbGFjZW1lbnRNYXAuaApAQCAtMjIsNyAr
MjIsNiBAQAogI3ByYWdtYSBvbmNlCiAKICNpbmNsdWRlICJGaWx0ZXJFZmZlY3QuaCIKLSNpbmNs
dWRlICJGaWx0ZXIuaCIKICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KIAogbmFtZXNw
YWNlIFdlYkNvcmUgewpAQCAtMzcsNyArMzYsNyBAQCBlbnVtIENoYW5uZWxTZWxlY3RvclR5cGUg
ewogCiBjbGFzcyBGRURpc3BsYWNlbWVudE1hcCA6IHB1YmxpYyBGaWx0ZXJFZmZlY3QgewogcHVi
bGljOgotICAgIHN0YXRpYyBSZWY8RkVEaXNwbGFjZW1lbnRNYXA+IGNyZWF0ZShGaWx0ZXImLCBD
aGFubmVsU2VsZWN0b3JUeXBlIHhDaGFubmVsU2VsZWN0b3IsIENoYW5uZWxTZWxlY3RvclR5cGUg
eUNoYW5uZWxTZWxlY3RvciwgZmxvYXQgc2NhbGUpOworICAgIHN0YXRpYyBSZWY8RkVEaXNwbGFj
ZW1lbnRNYXA+IGNyZWF0ZShDaGFubmVsU2VsZWN0b3JUeXBlIHhDaGFubmVsU2VsZWN0b3IsIENo
YW5uZWxTZWxlY3RvclR5cGUgeUNoYW5uZWxTZWxlY3RvciwgZmxvYXQgc2NhbGUpOwogCiAgICAg
Q2hhbm5lbFNlbGVjdG9yVHlwZSB4Q2hhbm5lbFNlbGVjdG9yKCkgY29uc3QgeyByZXR1cm4gbV94
Q2hhbm5lbFNlbGVjdG9yOyB9CiAgICAgYm9vbCBzZXRYQ2hhbm5lbFNlbGVjdG9yKGNvbnN0IENo
YW5uZWxTZWxlY3RvclR5cGUpOwpAQCAtNTIsMTEgKzUxLDExIEBAIHB1YmxpYzoKICAgICB2b2lk
IHRyYW5zZm9ybVJlc3VsdENvbG9yU3BhY2UoRmlsdGVyRWZmZWN0KiwgY29uc3QgaW50KSBvdmVy
cmlkZTsKIAogcHJpdmF0ZToKLSAgICBGRURpc3BsYWNlbWVudE1hcChGaWx0ZXImLCBDaGFubmVs
U2VsZWN0b3JUeXBlIHhDaGFubmVsU2VsZWN0b3IsIENoYW5uZWxTZWxlY3RvclR5cGUgeUNoYW5u
ZWxTZWxlY3RvciwgZmxvYXQpOworICAgIEZFRGlzcGxhY2VtZW50TWFwKENoYW5uZWxTZWxlY3Rv
clR5cGUgeENoYW5uZWxTZWxlY3RvciwgQ2hhbm5lbFNlbGVjdG9yVHlwZSB5Q2hhbm5lbFNlbGVj
dG9yLCBmbG9hdCk7CiAKLSAgICB2b2lkIHBsYXRmb3JtQXBwbHlTb2Z0d2FyZSgpIG92ZXJyaWRl
OworICAgIHZvaWQgcGxhdGZvcm1BcHBseVNvZnR3YXJlKGNvbnN0IEZpbHRlciYpIG92ZXJyaWRl
OwogCi0gICAgdm9pZCBkZXRlcm1pbmVBYnNvbHV0ZVBhaW50UmVjdCgpIG92ZXJyaWRlIHsgc2V0
QWJzb2x1dGVQYWludFJlY3QoZW5jbG9zaW5nSW50UmVjdChtYXhFZmZlY3RSZWN0KCkpKTsgfQor
ICAgIHZvaWQgZGV0ZXJtaW5lQWJzb2x1dGVQYWludFJlY3QoY29uc3QgRmlsdGVyJikgb3ZlcnJp
ZGUgeyBzZXRBYnNvbHV0ZVBhaW50UmVjdChlbmNsb3NpbmdJbnRSZWN0KG1heEVmZmVjdFJlY3Qo
KSkpOyB9CiAKICAgICBpbnQgeENoYW5uZWxJbmRleCgpIGNvbnN0IHsgcmV0dXJuIG1feENoYW5u
ZWxTZWxlY3RvciAtIDE7IH0KICAgICBpbnQgeUNoYW5uZWxJbmRleCgpIGNvbnN0IHsgcmV0dXJu
IG1feUNoYW5uZWxTZWxlY3RvciAtIDE7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVEcm9wU2hhZG93LmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVEcm9wU2hhZG93LmNwcAppbmRleCA1MWFkMmY4
NWYyYzI3YTZlZTUwNzRmMmMxNjFlYjkxNDY4YzllYzI2Li5kNTY2YzZhOTgxNDUxYTEwMTMyM2Q5
NDhiNTRmYTIxZTJjZDc0MWIzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9maWx0ZXJzL0ZFRHJvcFNoYWRvdy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRURyb3BTaGFkb3cuY3BwCkBAIC0zMCw5ICszMCwxNCBA
QAogI2luY2x1ZGUgPHd0Zi90ZXh0L1RleHRTdHJlYW0uaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUg
ewotICAgIAotRkVEcm9wU2hhZG93OjpGRURyb3BTaGFkb3coRmlsdGVyJiBmaWx0ZXIsIGZsb2F0
IHN0ZFgsIGZsb2F0IHN0ZFksIGZsb2F0IGR4LCBmbG9hdCBkeSwgY29uc3QgQ29sb3ImIHNoYWRv
d0NvbG9yLCBmbG9hdCBzaGFkb3dPcGFjaXR5KQotICAgIDogRmlsdGVyRWZmZWN0KGZpbHRlciwg
RmlsdGVyRWZmZWN0OjpUeXBlOjpGRURyb3BTaGFkb3cpCisKK1JlZjxGRURyb3BTaGFkb3c+IEZF
RHJvcFNoYWRvdzo6Y3JlYXRlKGZsb2F0IHN0ZFgsIGZsb2F0IHN0ZFksIGZsb2F0IGR4LCBmbG9h
dCBkeSwgY29uc3QgQ29sb3ImIHNoYWRvd0NvbG9yLCBmbG9hdCBzaGFkb3dPcGFjaXR5KQorewor
ICAgIHJldHVybiBhZG9wdFJlZigqbmV3IEZFRHJvcFNoYWRvdyhzdGRYLCBzdGRZLCBkeCwgZHks
IHNoYWRvd0NvbG9yLCBzaGFkb3dPcGFjaXR5KSk7Cit9CisKK0ZFRHJvcFNoYWRvdzo6RkVEcm9w
U2hhZG93KGZsb2F0IHN0ZFgsIGZsb2F0IHN0ZFksIGZsb2F0IGR4LCBmbG9hdCBkeSwgY29uc3Qg
Q29sb3ImIHNoYWRvd0NvbG9yLCBmbG9hdCBzaGFkb3dPcGFjaXR5KQorICAgIDogRmlsdGVyRWZm
ZWN0KEZpbHRlckVmZmVjdDo6VHlwZTo6RkVEcm9wU2hhZG93KQogICAgICwgbV9zdGRYKHN0ZFgp
CiAgICAgLCBtX3N0ZFkoc3RkWSkKICAgICAsIG1fZHgoZHgpCkBAIC00MiwxNSArNDcsOCBAQCBG
RURyb3BTaGFkb3c6OkZFRHJvcFNoYWRvdyhGaWx0ZXImIGZpbHRlciwgZmxvYXQgc3RkWCwgZmxv
YXQgc3RkWSwgZmxvYXQgZHgsIGZsbwogewogfQogCi1SZWY8RkVEcm9wU2hhZG93PiBGRURyb3BT
aGFkb3c6OmNyZWF0ZShGaWx0ZXImIGZpbHRlciwgZmxvYXQgc3RkWCwgZmxvYXQgc3RkWSwgZmxv
YXQgZHgsIGZsb2F0IGR5LCBjb25zdCBDb2xvciYgc2hhZG93Q29sb3IsIGZsb2F0IHNoYWRvd09w
YWNpdHkpCit2b2lkIEZFRHJvcFNoYWRvdzo6ZGV0ZXJtaW5lQWJzb2x1dGVQYWludFJlY3QoY29u
c3QgRmlsdGVyJiBmaWx0ZXIpCiB7Ci0gICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgRkVEcm9wU2hh
ZG93KGZpbHRlciwgc3RkWCwgc3RkWSwgZHgsIGR5LCBzaGFkb3dDb2xvciwgc2hhZG93T3BhY2l0
eSkpOwotfQotCi12b2lkIEZFRHJvcFNoYWRvdzo6ZGV0ZXJtaW5lQWJzb2x1dGVQYWludFJlY3Qo
KQotewotICAgIEZpbHRlciYgZmlsdGVyID0gdGhpcy0+ZmlsdGVyKCk7Ci0KICAgICBGbG9hdFJl
Y3QgYWJzb2x1dGVQYWludFJlY3QgPSBpbnB1dEVmZmVjdCgwKS0+YWJzb2x1dGVQYWludFJlY3Qo
KTsKICAgICBGbG9hdFJlY3QgYWJzb2x1dGVPZmZzZXRQYWludFJlY3QoYWJzb2x1dGVQYWludFJl
Y3QpOwogICAgIGFic29sdXRlT2Zmc2V0UGFpbnRSZWN0Lm1vdmUoZmlsdGVyLnNjYWxlZEJ5Rmls
dGVyU2NhbGUoeyBtX2R4LCBtX2R5IH0pKTsKQEAgLTcwLDcgKzY4LDcgQEAgdm9pZCBGRURyb3BT
aGFkb3c6OmRldGVybWluZUFic29sdXRlUGFpbnRSZWN0KCkKICAgICBzZXRBYnNvbHV0ZVBhaW50
UmVjdChlbmNsb3NpbmdJbnRSZWN0KGFic29sdXRlUGFpbnRSZWN0KSk7CiB9CiAKLXZvaWQgRkVE
cm9wU2hhZG93OjpwbGF0Zm9ybUFwcGx5U29mdHdhcmUoKQordm9pZCBGRURyb3BTaGFkb3c6OnBs
YXRmb3JtQXBwbHlTb2Z0d2FyZShjb25zdCBGaWx0ZXImIGZpbHRlcikKIHsKICAgICBGaWx0ZXJF
ZmZlY3QqIGluID0gaW5wdXRFZmZlY3QoMCk7CiAKQEAgLTc4LDggKzc2LDYgQEAgdm9pZCBGRURy
b3BTaGFkb3c6OnBsYXRmb3JtQXBwbHlTb2Z0d2FyZSgpCiAgICAgaWYgKCFyZXN1bHRJbWFnZSkK
ICAgICAgICAgcmV0dXJuOwogCi0gICAgRmlsdGVyJiBmaWx0ZXIgPSB0aGlzLT5maWx0ZXIoKTsK
LSAgICAKICAgICBGbG9hdFNpemUgYmx1clJhZGl1cyA9IDIgKiBmaWx0ZXIuc2NhbGVkQnlGaWx0
ZXJTY2FsZSh7IG1fc3RkWCwgbV9zdGRZIH0pOwogICAgIEZsb2F0U2l6ZSBvZmZzZXQgPSBmaWx0
ZXIuc2NhbGVkQnlGaWx0ZXJTY2FsZSh7IG1fZHgsIG1fZHkgfSk7CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVEcm9wU2hhZG93LmggYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFRHJvcFNoYWRvdy5oCmlu
ZGV4IDJiNmU2NjEzYjVhZTE3ODRhNzEwMmQ1NDZkZGJiY2JkNjEzODU4ZmEuLjY5NzdlYTc3YzZj
YzFlZDM0ODYxOTRjMGNkODhlN2IyZDNkOTgwOGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVEcm9wU2hhZG93LmgKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRURyb3BTaGFkb3cuaApAQCAtMjAsMTQg
KzIwLDEzIEBACiAjcHJhZ21hIG9uY2UKIAogI2luY2x1ZGUgIkNvbG9yLmgiCi0jaW5jbHVkZSAi
RmlsdGVyLmgiCiAjaW5jbHVkZSAiRmlsdGVyRWZmZWN0LmgiCiAKIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKICAgICAKIGNsYXNzIEZFRHJvcFNoYWRvdyA6IHB1YmxpYyBGaWx0ZXJFZmZlY3QgewogcHVi
bGljOgotICAgIHN0YXRpYyBSZWY8RkVEcm9wU2hhZG93PiBjcmVhdGUoRmlsdGVyJiwgZmxvYXQs
IGZsb2F0LCBmbG9hdCwgZmxvYXQsIGNvbnN0IENvbG9yJiwgZmxvYXQpOworICAgIHN0YXRpYyBS
ZWY8RkVEcm9wU2hhZG93PiBjcmVhdGUoZmxvYXQgc3RkWCwgZmxvYXQgc3RkWSwgZmxvYXQgZHgs
IGZsb2F0IGR5LCBjb25zdCBDb2xvciYgc2hhZG93Q29sb3IsIGZsb2F0IHNoYWRvd09wYWNpdHkp
OwogCiAgICAgZmxvYXQgc3RkRGV2aWF0aW9uWCgpIGNvbnN0IHsgcmV0dXJuIG1fc3RkWDsgfQog
ICAgIHZvaWQgc2V0U3RkRGV2aWF0aW9uWChmbG9hdCBzdGRYKSB7IG1fc3RkWCA9IHN0ZFg7IH0K
QEAgLTQ4LDE0ICs0NywxNCBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXRTaGFkb3dPcGFjaXR5KGZs
b2F0IHNoYWRvd09wYWNpdHkpIHsgbV9zaGFkb3dPcGFjaXR5ID0gc2hhZG93T3BhY2l0eTsgfQog
CiBwcml2YXRlOgotICAgIEZFRHJvcFNoYWRvdyhGaWx0ZXImLCBmbG9hdCwgZmxvYXQsIGZsb2F0
LCBmbG9hdCwgY29uc3QgQ29sb3ImLCBmbG9hdCk7CisgICAgRkVEcm9wU2hhZG93KGZsb2F0IHN0
ZFgsIGZsb2F0IHN0ZFksIGZsb2F0IGR4LCBmbG9hdCBkeSwgY29uc3QgQ29sb3ImIHNoYWRvd0Nv
bG9yLCBmbG9hdCBzaGFkb3dPcGFjaXR5KTsKIAotICAgIHZvaWQgcGxhdGZvcm1BcHBseVNvZnR3
YXJlKCkgb3ZlcnJpZGU7Ci0KLSAgICB2b2lkIGRldGVybWluZUFic29sdXRlUGFpbnRSZWN0KCkg
b3ZlcnJpZGU7CisgICAgdm9pZCBkZXRlcm1pbmVBYnNvbHV0ZVBhaW50UmVjdChjb25zdCBGaWx0
ZXImKSBvdmVycmlkZTsKIAogICAgIEludE91dHNldHMgb3V0c2V0cygpIGNvbnN0IG92ZXJyaWRl
OwogCisgICAgdm9pZCBwbGF0Zm9ybUFwcGx5U29mdHdhcmUoY29uc3QgRmlsdGVyJikgb3ZlcnJp
ZGU7CisKICAgICBXVEY6OlRleHRTdHJlYW0mIGV4dGVybmFsUmVwcmVzZW50YXRpb24oV1RGOjpU
ZXh0U3RyZWFtJiwgUmVwcmVzZW50YXRpb25UeXBlKSBjb25zdCBvdmVycmlkZTsKIAogICAgIGZs
b2F0IG1fc3RkWDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2ZpbHRlcnMvRkVGbG9vZC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9m
aWx0ZXJzL0ZFRmxvb2QuY3BwCmluZGV4IGE3ODQyMTk2NzRlMWFlOTc5OTM0NDM4ZGE1NGExYTcx
Yzk4MDQ4NDIuLjA5ZGIyMzMwMzhlZTA4Yjk5NGUyN2Q5Y2FjM2Y2YmIyZTA2ZjAzNjIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVGbG9vZC5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRUZsb29k
LmNwcApAQCAtMjQsMjIgKzI0LDIxIEBACiAjaW5jbHVkZSAiRkVGbG9vZC5oIgogCiAjaW5jbHVk
ZSAiQ29sb3JTZXJpYWxpemF0aW9uLmgiCi0jaW5jbHVkZSAiRmlsdGVyLmgiCiAjaW5jbHVkZSAi
R3JhcGhpY3NDb250ZXh0LmgiCiAjaW5jbHVkZSA8d3RmL3RleHQvVGV4dFN0cmVhbS5oPgogCiBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAKLUZFRmxvb2Q6OkZFRmxvb2QoRmlsdGVyJiBmaWx0ZXIsIGNv
bnN0IENvbG9yJiBmbG9vZENvbG9yLCBmbG9hdCBmbG9vZE9wYWNpdHkpCi0gICAgOiBGaWx0ZXJF
ZmZlY3QoZmlsdGVyLCBGaWx0ZXJFZmZlY3Q6OlR5cGU6OkZFRmxvb2QpCi0gICAgLCBtX2Zsb29k
Q29sb3IoZmxvb2RDb2xvcikKLSAgICAsIG1fZmxvb2RPcGFjaXR5KGZsb29kT3BhY2l0eSkKK1Jl
ZjxGRUZsb29kPiBGRUZsb29kOjpjcmVhdGUoY29uc3QgQ29sb3ImIGZsb29kQ29sb3IsIGZsb2F0
IGZsb29kT3BhY2l0eSkKIHsKKyAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBGRUZsb29kKGZsb29k
Q29sb3IsIGZsb29kT3BhY2l0eSkpOwogfQogCi1SZWY8RkVGbG9vZD4gRkVGbG9vZDo6Y3JlYXRl
KEZpbHRlciYgZmlsdGVyLCBjb25zdCBDb2xvciYgZmxvb2RDb2xvciwgZmxvYXQgZmxvb2RPcGFj
aXR5KQorRkVGbG9vZDo6RkVGbG9vZChjb25zdCBDb2xvciYgZmxvb2RDb2xvciwgZmxvYXQgZmxv
b2RPcGFjaXR5KQorICAgIDogRmlsdGVyRWZmZWN0KEZpbHRlckVmZmVjdDo6VHlwZTo6RkVGbG9v
ZCkKKyAgICAsIG1fZmxvb2RDb2xvcihmbG9vZENvbG9yKQorICAgICwgbV9mbG9vZE9wYWNpdHko
Zmxvb2RPcGFjaXR5KQogewotICAgIHJldHVybiBhZG9wdFJlZigqbmV3IEZFRmxvb2QoZmlsdGVy
LCBmbG9vZENvbG9yLCBmbG9vZE9wYWNpdHkpKTsKIH0KIAogYm9vbCBGRUZsb29kOjpzZXRGbG9v
ZENvbG9yKGNvbnN0IENvbG9yJiBjb2xvcikKQEAgLTU4LDcgKzU3LDcgQEAgYm9vbCBGRUZsb29k
OjpzZXRGbG9vZE9wYWNpdHkoZmxvYXQgZmxvb2RPcGFjaXR5KQogICAgIHJldHVybiB0cnVlOwog
fQogCi12b2lkIEZFRmxvb2Q6OnBsYXRmb3JtQXBwbHlTb2Z0d2FyZSgpCit2b2lkIEZFRmxvb2Q6
OnBsYXRmb3JtQXBwbHlTb2Z0d2FyZShjb25zdCBGaWx0ZXImKQogewogICAgIEltYWdlQnVmZmVy
KiByZXN1bHRJbWFnZSA9IGNyZWF0ZUltYWdlQnVmZmVyUmVzdWx0KCk7CiAgICAgaWYgKCFyZXN1
bHRJbWFnZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Zp
bHRlcnMvRkVGbG9vZC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVy
cy9GRUZsb29kLmgKaW5kZXggMDhhNGU5NTkzNTg1ZDJmYTA3MjY4NGQ0NWQ1Zjg5MzBmM2FlZWYw
YS4uODllYjcyMDI5MTBjYWJmODc0Y2RjMTgzOWQ4MjY3ZDgwNjk3MDRjYSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRUZsb29kLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRUZsb29kLmgKQEAgLTIy
LDE0ICsyMiwxMyBAQAogI3ByYWdtYSBvbmNlCiAKICNpbmNsdWRlICJDb2xvci5oIgotI2luY2x1
ZGUgIkZpbHRlci5oIgogI2luY2x1ZGUgIkZpbHRlckVmZmVjdC5oIgogCiBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAKIGNsYXNzIEZFRmxvb2QgOiBwdWJsaWMgRmlsdGVyRWZmZWN0IHsKIHB1YmxpYzoK
LSAgICBzdGF0aWMgUmVmPEZFRmxvb2Q+IGNyZWF0ZShGaWx0ZXImLCBjb25zdCBDb2xvciYsIGZs
b2F0KTsKKyAgICBzdGF0aWMgUmVmPEZFRmxvb2Q+IGNyZWF0ZShjb25zdCBDb2xvciYgZmxvb2RD
b2xvciwgZmxvYXQgZmxvb2RPcGFjaXR5KTsKIAogICAgIGNvbnN0IENvbG9yJiBmbG9vZENvbG9y
KCkgY29uc3QgeyByZXR1cm4gbV9mbG9vZENvbG9yOyB9CiAgICAgYm9vbCBzZXRGbG9vZENvbG9y
KGNvbnN0IENvbG9yJik7CkBAIC00NSwxMSArNDQsMTEgQEAgcHVibGljOgogI2VuZGlmCiAKIHBy
aXZhdGU6Ci0gICAgRkVGbG9vZChGaWx0ZXImLCBjb25zdCBDb2xvciYsIGZsb2F0KTsKKyAgICBG
RUZsb29kKGNvbnN0IENvbG9yJiBmbG9vZENvbG9yLCBmbG9hdCBmbG9vZE9wYWNpdHkpOwogCi0g
ICAgdm9pZCBwbGF0Zm9ybUFwcGx5U29mdHdhcmUoKSBvdmVycmlkZTsKKyAgICB2b2lkIGRldGVy
bWluZUFic29sdXRlUGFpbnRSZWN0KGNvbnN0IEZpbHRlciYpIG92ZXJyaWRlIHsgc2V0QWJzb2x1
dGVQYWludFJlY3QoZW5jbG9zaW5nSW50UmVjdChtYXhFZmZlY3RSZWN0KCkpKTsgfQogCi0gICAg
dm9pZCBkZXRlcm1pbmVBYnNvbHV0ZVBhaW50UmVjdCgpIG92ZXJyaWRlIHsgc2V0QWJzb2x1dGVQ
YWludFJlY3QoZW5jbG9zaW5nSW50UmVjdChtYXhFZmZlY3RSZWN0KCkpKTsgfQorICAgIHZvaWQg
cGxhdGZvcm1BcHBseVNvZnR3YXJlKGNvbnN0IEZpbHRlciYpIG92ZXJyaWRlOwogCiAgICAgV1RG
OjpUZXh0U3RyZWFtJiBleHRlcm5hbFJlcHJlc2VudGF0aW9uKFdURjo6VGV4dFN0cmVhbSYsIFJl
cHJlc2VudGF0aW9uVHlwZSkgY29uc3Qgb3ZlcnJpZGU7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVHYXVzc2lhbkJsdXIuY3BwIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRUdhdXNzaWFuQmx1ci5jcHAK
aW5kZXggOGU0NmM1MDI2ZmU2NWM3NTU5NjM3NzVkMGJlNjk5NzAyZDQ4ZjI1NS4uZGJlNTcxNWU0
MTY3MzYzNWZiMzZiNGFlMmU0MTAwOWM3ZTQ0NGM1MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRUdhdXNzaWFuQmx1ci5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRUdhdXNzaWFuQmx1ci5jcHAK
QEAgLTc5LDE3ICs3OSwxNyBAQCBpbmxpbmUgdm9pZCBrZXJuZWxQb3NpdGlvbihpbnQgYmx1ckl0
ZXJhdGlvbiwgdW5zaWduZWQmIHJhZGl1cywgaW50JiBkZWx0YUxlZnQsCiAgICAgfQogfQogCi1G
RUdhdXNzaWFuQmx1cjo6RkVHYXVzc2lhbkJsdXIoRmlsdGVyJiBmaWx0ZXIsIGZsb2F0IHgsIGZs
b2F0IHksIEVkZ2VNb2RlVHlwZSBlZGdlTW9kZSkKLSAgICA6IEZpbHRlckVmZmVjdChmaWx0ZXIs
IEZpbHRlckVmZmVjdDo6VHlwZTo6RkVHYXVzc2lhbkJsdXIpCi0gICAgLCBtX3N0ZFgoeCkKLSAg
ICAsIG1fc3RkWSh5KQotICAgICwgbV9lZGdlTW9kZShlZGdlTW9kZSkKK1JlZjxGRUdhdXNzaWFu
Qmx1cj4gRkVHYXVzc2lhbkJsdXI6OmNyZWF0ZShmbG9hdCB4LCBmbG9hdCB5LCBFZGdlTW9kZVR5
cGUgZWRnZU1vZGUpCiB7CisgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgRkVHYXVzc2lhbkJsdXIo
eCwgeSwgZWRnZU1vZGUpKTsKIH0KIAotUmVmPEZFR2F1c3NpYW5CbHVyPiBGRUdhdXNzaWFuQmx1
cjo6Y3JlYXRlKEZpbHRlciYgZmlsdGVyLCBmbG9hdCB4LCBmbG9hdCB5LCBFZGdlTW9kZVR5cGUg
ZWRnZU1vZGUpCitGRUdhdXNzaWFuQmx1cjo6RkVHYXVzc2lhbkJsdXIoZmxvYXQgeCwgZmxvYXQg
eSwgRWRnZU1vZGVUeXBlIGVkZ2VNb2RlKQorICAgIDogRmlsdGVyRWZmZWN0KEZpbHRlckVmZmVj
dDo6VHlwZTo6RkVHYXVzc2lhbkJsdXIpCisgICAgLCBtX3N0ZFgoeCkKKyAgICAsIG1fc3RkWSh5
KQorICAgICwgbV9lZGdlTW9kZShlZGdlTW9kZSkKIHsKLSAgICByZXR1cm4gYWRvcHRSZWYoKm5l
dyBGRUdhdXNzaWFuQmx1cihmaWx0ZXIsIHgsIHksIGVkZ2VNb2RlKSk7CiB9CiAKIHZvaWQgRkVH
YXVzc2lhbkJsdXI6OnNldFN0ZERldmlhdGlvblgoZmxvYXQgeCkKQEAgLTQ5Niw5ICs0OTYsOSBA
QCBJbnRTaXplIEZFR2F1c3NpYW5CbHVyOjpjYWxjdWxhdGVPdXRzZXRTaXplKEZsb2F0U2l6ZSBz
dGREZXZpYXRpb24pCiAgICAgcmV0dXJuIHsgMyAqIGtlcm5lbFNpemUud2lkdGgoKSAvIDIsIDMg
KiBrZXJuZWxTaXplLmhlaWdodCgpIC8gMiB9OwogfQogCi12b2lkIEZFR2F1c3NpYW5CbHVyOjpk
ZXRlcm1pbmVBYnNvbHV0ZVBhaW50UmVjdCgpCit2b2lkIEZFR2F1c3NpYW5CbHVyOjpkZXRlcm1p
bmVBYnNvbHV0ZVBhaW50UmVjdChjb25zdCBGaWx0ZXImIGZpbHRlcikKIHsKLSAgICBJbnRTaXpl
IGtlcm5lbFNpemUgPSBjYWxjdWxhdGVLZXJuZWxTaXplKGZpbHRlcigpLCB7IG1fc3RkWCwgbV9z
dGRZIH0pOworICAgIEludFNpemUga2VybmVsU2l6ZSA9IGNhbGN1bGF0ZUtlcm5lbFNpemUoZmls
dGVyLCB7IG1fc3RkWCwgbV9zdGRZIH0pOwogCiAgICAgRmxvYXRSZWN0IGFic29sdXRlUGFpbnRS
ZWN0ID0gaW5wdXRFZmZlY3QoMCktPmFic29sdXRlUGFpbnRSZWN0KCk7CiAgICAgLy8gRWRnZSBt
b2RlcyBvdGhlciB0aGFuICdub25lJyBkbyBub3QgaW5mbGF0ZSB0aGUgYWZmZWN0ZWQgcGFpbnQg
cmVjdC4KQEAgLTUxOSw3ICs1MTksNyBAQCB2b2lkIEZFR2F1c3NpYW5CbHVyOjpkZXRlcm1pbmVB
YnNvbHV0ZVBhaW50UmVjdCgpCiAgICAgc2V0QWJzb2x1dGVQYWludFJlY3QoZW5jbG9zaW5nSW50
UmVjdChhYnNvbHV0ZVBhaW50UmVjdCkpOwogfQogCi12b2lkIEZFR2F1c3NpYW5CbHVyOjpwbGF0
Zm9ybUFwcGx5U29mdHdhcmUoKQordm9pZCBGRUdhdXNzaWFuQmx1cjo6cGxhdGZvcm1BcHBseVNv
ZnR3YXJlKGNvbnN0IEZpbHRlciYgZmlsdGVyKQogewogICAgIEZpbHRlckVmZmVjdCogaW4gPSBp
bnB1dEVmZmVjdCgwKTsKIApAQCAtNTM2LDcgKzUzNiw3IEBAIHZvaWQgRkVHYXVzc2lhbkJsdXI6
OnBsYXRmb3JtQXBwbHlTb2Z0d2FyZSgpCiAgICAgaWYgKCFtX3N0ZFggJiYgIW1fc3RkWSkKICAg
ICAgICAgcmV0dXJuOwogCi0gICAgSW50U2l6ZSBrZXJuZWxTaXplID0gY2FsY3VsYXRlS2VybmVs
U2l6ZShmaWx0ZXIoKSwgeyBtX3N0ZFgsIG1fc3RkWSB9KTsKKyAgICBJbnRTaXplIGtlcm5lbFNp
emUgPSBjYWxjdWxhdGVLZXJuZWxTaXplKGZpbHRlciwgeyBtX3N0ZFgsIG1fc3RkWSB9KTsKIAog
ICAgIEludFNpemUgcGFpbnRTaXplID0gYWJzb2x1dGVQYWludFJlY3QoKS5zaXplKCk7CiAgICAg
YXV0byB0bXBJbWFnZURhdGEgPSBVaW50OENsYW1wZWRBcnJheTo6dHJ5Q3JlYXRlVW5pbml0aWFs
aXplZChwYWludFNpemUuYXJlYSgpICogNCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFR2F1c3NpYW5CbHVyLmggYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFR2F1c3NpYW5CbHVyLmgKaW5kZXggNzQzYjY1
MTVkZTNmNDYyNTA4MzFkZGMzMjY2MjUyZGFiOGZiMWYwNC4uYzcwNjZkMzM4MzZhZGVhMTA4YTVl
ZjllNWU4ZTU3MDg4MWM3ZjE0NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvZmlsdGVycy9GRUdhdXNzaWFuQmx1ci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVHYXVzc2lhbkJsdXIuaApAQCAtMjIsMTQgKzIyLDEz
IEBACiAjcHJhZ21hIG9uY2UKIAogI2luY2x1ZGUgIkZFQ29udm9sdmVNYXRyaXguaCIKLSNpbmNs
dWRlICJGaWx0ZXIuaCIKICNpbmNsdWRlICJGaWx0ZXJFZmZlY3QuaCIKIAogbmFtZXNwYWNlIFdl
YkNvcmUgewogCiBjbGFzcyBGRUdhdXNzaWFuQmx1ciA6IHB1YmxpYyBGaWx0ZXJFZmZlY3Qgewog
cHVibGljOgotICAgIHN0YXRpYyBSZWY8RkVHYXVzc2lhbkJsdXI+IGNyZWF0ZShGaWx0ZXImLCBm
bG9hdCwgZmxvYXQsIEVkZ2VNb2RlVHlwZSk7CisgICAgc3RhdGljIFJlZjxGRUdhdXNzaWFuQmx1
cj4gY3JlYXRlKGZsb2F0IHgsIGZsb2F0IHksIEVkZ2VNb2RlVHlwZSk7CiAKICAgICBmbG9hdCBz
dGREZXZpYXRpb25YKCkgY29uc3QgeyByZXR1cm4gbV9zdGRYOyB9CiAgICAgdm9pZCBzZXRTdGRE
ZXZpYXRpb25YKGZsb2F0KTsKQEAgLTQ1LDcgKzQ0LDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBJ
bnRTaXplIGNhbGN1bGF0ZU91dHNldFNpemUoRmxvYXRTaXplIHN0ZERldmlhdGlvbik7CiAKIHBy
aXZhdGU6Ci0gICAgRkVHYXVzc2lhbkJsdXIoRmlsdGVyJiwgZmxvYXQsIGZsb2F0LCBFZGdlTW9k
ZVR5cGUpOworICAgIEZFR2F1c3NpYW5CbHVyKGZsb2F0IHgsIGZsb2F0IHksIEVkZ2VNb2RlVHlw
ZSk7CiAKICAgICBzdGF0aWMgY29uc3QgaW50IHNfbWluaW1hbFJlY3REaW1lbnNpb24gPSAxMDAg
KiAxMDA7IC8vIEVtcGlyaWNhbCBkYXRhIGxpbWl0IGZvciBwYXJhbGxlbCBqb2JzCiAKQEAgLTU5
LDkgKzU4LDkgQEAgcHJpdmF0ZToKICAgICAgICAgdW5zaWduZWQga2VybmVsU2l6ZVk7CiAgICAg
fTsKIAotICAgIHZvaWQgcGxhdGZvcm1BcHBseVNvZnR3YXJlKCkgb3ZlcnJpZGU7CisgICAgdm9p
ZCBkZXRlcm1pbmVBYnNvbHV0ZVBhaW50UmVjdChjb25zdCBGaWx0ZXImKSBvdmVycmlkZTsKIAot
ICAgIHZvaWQgZGV0ZXJtaW5lQWJzb2x1dGVQYWludFJlY3QoKSBvdmVycmlkZTsKKyAgICB2b2lk
IHBsYXRmb3JtQXBwbHlTb2Z0d2FyZShjb25zdCBGaWx0ZXImKSBvdmVycmlkZTsKIAogICAgIElu
dE91dHNldHMgb3V0c2V0cygpIGNvbnN0IG92ZXJyaWRlOwogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFTGlnaHRpbmcuY3BwIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRUxpZ2h0aW5nLmNwcAppbmRleCA2
NTliMTA1NWY2MWVhYWJjNWYyOTk5MWRhMGRhMWE1ODUwNzFhZTkyLi45MTE4YTliZjI1MmVjODIw
NjQ3MDNkNWRhZjFmNmZhODQwNTJhMGM0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFTGlnaHRpbmcuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVMaWdodGluZy5jcHAKQEAgLTM1LDggKzM1LDgg
QEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1GRUxpZ2h0aW5nOjpGRUxpZ2h0aW5nKEZpbHRl
ciYgZmlsdGVyLCBMaWdodGluZ1R5cGUgbGlnaHRpbmdUeXBlLCBjb25zdCBDb2xvciYgbGlnaHRp
bmdDb2xvciwgZmxvYXQgc3VyZmFjZVNjYWxlLCBmbG9hdCBkaWZmdXNlQ29uc3RhbnQsIGZsb2F0
IHNwZWN1bGFyQ29uc3RhbnQsIGZsb2F0IHNwZWN1bGFyRXhwb25lbnQsIGZsb2F0IGtlcm5lbFVu
aXRMZW5ndGhYLCBmbG9hdCBrZXJuZWxVbml0TGVuZ3RoWSwgUmVmPExpZ2h0U291cmNlPiYmIGxp
Z2h0U291cmNlLCBUeXBlIHR5cGUpCi0gICAgOiBGaWx0ZXJFZmZlY3QoZmlsdGVyLCB0eXBlKQor
RkVMaWdodGluZzo6RkVMaWdodGluZyhMaWdodGluZ1R5cGUgbGlnaHRpbmdUeXBlLCBjb25zdCBD
b2xvciYgbGlnaHRpbmdDb2xvciwgZmxvYXQgc3VyZmFjZVNjYWxlLCBmbG9hdCBkaWZmdXNlQ29u
c3RhbnQsIGZsb2F0IHNwZWN1bGFyQ29uc3RhbnQsIGZsb2F0IHNwZWN1bGFyRXhwb25lbnQsIGZs
b2F0IGtlcm5lbFVuaXRMZW5ndGhYLCBmbG9hdCBrZXJuZWxVbml0TGVuZ3RoWSwgUmVmPExpZ2h0
U291cmNlPiYmIGxpZ2h0U291cmNlLCBUeXBlIHR5cGUpCisgICAgOiBGaWx0ZXJFZmZlY3QodHlw
ZSkKICAgICAsIG1fbGlnaHRpbmdUeXBlKGxpZ2h0aW5nVHlwZSkKICAgICAsIG1fbGlnaHRTb3Vy
Y2UoV1RGTW92ZShsaWdodFNvdXJjZSkpCiAgICAgLCBtX2xpZ2h0aW5nQ29sb3IobGlnaHRpbmdD
b2xvcikKQEAgLTQ3MSw3ICs0NzEsNyBAQCBib29sIEZFTGlnaHRpbmc6OmRyYXdMaWdodGluZyhV
aW50OENsYW1wZWRBcnJheSYgcGl4ZWxzLCBpbnQgd2lkdGgsIGludCBoZWlnaHQpCiAgICAgcmV0
dXJuIHRydWU7CiB9CiAKLXZvaWQgRkVMaWdodGluZzo6cGxhdGZvcm1BcHBseVNvZnR3YXJlKCkK
K3ZvaWQgRkVMaWdodGluZzo6cGxhdGZvcm1BcHBseVNvZnR3YXJlKGNvbnN0IEZpbHRlciYpCiB7
CiAgICAgRmlsdGVyRWZmZWN0KiBpbiA9IGlucHV0RWZmZWN0KDApOwogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFTGlnaHRpbmcuaCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVMaWdodGluZy5oCmluZGV4
IDAxZjQ0MmI0MDAzM2ZmYTNmNzA3NTcwYTRhMzM0MDMzYmU2YzJiODIuLjM2NDI4ZGJhMzIzMDk5
YjM0ZmU1NGRmNzUwMzA3MjI3MGVkZTk4M2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVMaWdodGluZy5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVMaWdodGluZy5oCkBAIC0yNyw3ICsyNyw2IEBA
CiAjcHJhZ21hIG9uY2UKIAogI2luY2x1ZGUgIkNvbG9yLmgiCi0jaW5jbHVkZSAiRmlsdGVyLmgi
CiAjaW5jbHVkZSAiRmlsdGVyRWZmZWN0LmgiCiAjaW5jbHVkZSAiTGlnaHRTb3VyY2UuaCIKICNp
bmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9Gb3J3YXJkLmg+CkBAIC00MCw4ICszOSw2IEBAIHN0cnVj
dCBGRUxpZ2h0aW5nUGFpbnRpbmdEYXRhRm9yTmVvbjsKIAogY2xhc3MgRkVMaWdodGluZyA6IHB1
YmxpYyBGaWx0ZXJFZmZlY3QgewogcHVibGljOgotICAgIHZvaWQgZGV0ZXJtaW5lQWJzb2x1dGVQ
YWludFJlY3QoKSBvdmVycmlkZSB7IHNldEFic29sdXRlUGFpbnRSZWN0KGVuY2xvc2luZ0ludFJl
Y3QobWF4RWZmZWN0UmVjdCgpKSk7IH0KLQogICAgIGZsb2F0IHN1cmZhY2VTY2FsZSgpIGNvbnN0
IHsgcmV0dXJuIG1fc3VyZmFjZVNjYWxlOyB9CiAgICAgYm9vbCBzZXRTdXJmYWNlU2NhbGUoZmxv
YXQpOwogCkBAIC0xMjgsMTQgKzEyNSwxNiBAQCBwcm90ZWN0ZWQ6CiAgICAgc3RhdGljIHZvaWQg
cGxhdGZvcm1BcHBseUdlbmVyaWNXb3JrZXIoUGxhdGZvcm1BcHBseUdlbmVyaWNQYXJhbWV0ZXJz
Kik7CiAgICAgc3RhdGljIHZvaWQgcGxhdGZvcm1BcHBseU5lb25Xb3JrZXIoRkVMaWdodGluZ1Bh
aW50aW5nRGF0YUZvck5lb24qKTsKIAotICAgIEZFTGlnaHRpbmcoRmlsdGVyJiwgTGlnaHRpbmdU
eXBlLCBjb25zdCBDb2xvciYsIGZsb2F0LCBmbG9hdCwgZmxvYXQsIGZsb2F0LCBmbG9hdCwgZmxv
YXQsIFJlZjxMaWdodFNvdXJjZT4mJiwgVHlwZSk7CisgICAgRkVMaWdodGluZyhMaWdodGluZ1R5
cGUsIGNvbnN0IENvbG9yJiBsaWdodGluZ0NvbG9yLCBmbG9hdCBzdXJmYWNlU2NhbGUsIGZsb2F0
IGRpZmZ1c2VDb25zdGFudCwgZmxvYXQgc3BlY3VsYXJDb25zdGFudCwgZmxvYXQgc3BlY3VsYXJF
eHBvbmVudCwgZmxvYXQga2VybmVsVW5pdExlbmd0aFgsIGZsb2F0IGtlcm5lbFVuaXRMZW5ndGhZ
LCBSZWY8TGlnaHRTb3VyY2U+JiYsIFR5cGUpOwogCiAgICAgYm9vbCBkcmF3TGlnaHRpbmcoVWlu
dDhDbGFtcGVkQXJyYXkmLCBpbnQsIGludCk7CiAKICAgICB2b2lkIHNldFBpeGVsKGludCBvZmZz
ZXQsIGNvbnN0IExpZ2h0aW5nRGF0YSYsIGNvbnN0IExpZ2h0U291cmNlOjpQYWludGluZ0RhdGEm
LCBpbnQgeCwgaW50IHksIGZsb2F0IGZhY3RvclgsIGZsb2F0IGZhY3RvclksIEludFNpemUgbm9y
bWFsVmVjdG9yKTsKICAgICB2b2lkIHNldFBpeGVsSW50ZXJuYWwoaW50IG9mZnNldCwgY29uc3Qg
TGlnaHRpbmdEYXRhJiwgY29uc3QgTGlnaHRTb3VyY2U6OlBhaW50aW5nRGF0YSYsIGludCB4LCBp
bnQgeSwgZmxvYXQgZmFjdG9yWCwgZmxvYXQgZmFjdG9yWSwgSW50U2l6ZSBub3JtYWxWZWN0b3Is
IGZsb2F0IGFscGhhKTsKIAotICAgIHZvaWQgcGxhdGZvcm1BcHBseVNvZnR3YXJlKCkgb3ZlcnJp
ZGU7CisgICAgdm9pZCBkZXRlcm1pbmVBYnNvbHV0ZVBhaW50UmVjdChjb25zdCBGaWx0ZXImKSBv
dmVycmlkZSB7IHNldEFic29sdXRlUGFpbnRSZWN0KGVuY2xvc2luZ0ludFJlY3QobWF4RWZmZWN0
UmVjdCgpKSk7IH0KKworICAgIHZvaWQgcGxhdGZvcm1BcHBseVNvZnR3YXJlKGNvbnN0IEZpbHRl
ciYpIG92ZXJyaWRlOwogCiAgICAgdm9pZCBwbGF0Zm9ybUFwcGx5KGNvbnN0IExpZ2h0aW5nRGF0
YSYsIGNvbnN0IExpZ2h0U291cmNlOjpQYWludGluZ0RhdGEmKTsKIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRU1lcmdlLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVNZXJnZS5jcHAKaW5kZXggNjk3
ZDJlMTVjY2JmMWFlZmVkMGU4OWZkYTM0ZTcwMzI5MzA3ZjczYy4uYjgyZDE2NmUwYWI5ZGQ5ZTFh
YmRlM2QwZDcxYjU4MDkzNGFiNjY3OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvZmlsdGVycy9GRU1lcmdlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFTWVyZ2UuY3BwCkBAIC0yMiwyMyArMjIsMjIgQEAKICNp
bmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJGRU1lcmdlLmgiCiAKLSNpbmNsdWRlICJGaWx0
ZXIuaCIKICNpbmNsdWRlICJHcmFwaGljc0NvbnRleHQuaCIKICNpbmNsdWRlIDx3dGYvdGV4dC9U
ZXh0U3RyZWFtLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotRkVNZXJnZTo6RkVNZXJnZShG
aWx0ZXImIGZpbHRlcikKLSAgICA6IEZpbHRlckVmZmVjdChmaWx0ZXIsIEZpbHRlckVmZmVjdDo6
VHlwZTo6RkVNZXJnZSkKK1JlZjxGRU1lcmdlPiBGRU1lcmdlOjpjcmVhdGUoKQogeworICAgIHJl
dHVybiBhZG9wdFJlZigqbmV3IEZFTWVyZ2UoKSk7CiB9CiAKLVJlZjxGRU1lcmdlPiBGRU1lcmdl
OjpjcmVhdGUoRmlsdGVyJiBmaWx0ZXIpCitGRU1lcmdlOjpGRU1lcmdlKCkKKyAgICA6IEZpbHRl
ckVmZmVjdChGaWx0ZXJFZmZlY3Q6OlR5cGU6OkZFTWVyZ2UpCiB7Ci0gICAgcmV0dXJuIGFkb3B0
UmVmKCpuZXcgRkVNZXJnZShmaWx0ZXIpKTsKIH0KIAotdm9pZCBGRU1lcmdlOjpwbGF0Zm9ybUFw
cGx5U29mdHdhcmUoKQordm9pZCBGRU1lcmdlOjpwbGF0Zm9ybUFwcGx5U29mdHdhcmUoY29uc3Qg
RmlsdGVyJikKIHsKICAgICB1bnNpZ25lZCBzaXplID0gbnVtYmVyT2ZFZmZlY3RJbnB1dHMoKTsK
ICAgICBBU1NFUlQoc2l6ZSA+IDApOwpAQCAtNDcsNyArNDYsNiBAQCB2b2lkIEZFTWVyZ2U6OnBs
YXRmb3JtQXBwbHlTb2Z0d2FyZSgpCiAgICAgaWYgKCFyZXN1bHRJbWFnZSkKICAgICAgICAgcmV0
dXJuOwogCi0KICAgICBHcmFwaGljc0NvbnRleHQmIGZpbHRlckNvbnRleHQgPSByZXN1bHRJbWFn
ZS0+Y29udGV4dCgpOwogICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBzaXplOyArK2kpIHsK
ICAgICAgICAgRmlsdGVyRWZmZWN0KiBpbiA9IGlucHV0RWZmZWN0KGkpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRU1lcmdlLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFTWVyZ2UuaAppbmRleCAyNzUw
YzRkNTI0ZDNhMGY1YWU5NzQxZjY0ODA0NDk0NTM0NWQxYWIxLi4wNTE5YTU2ODhhODM2M2ZjMWJh
MDYzMjA0ZGIyMmY3NDMxYWUzNGYxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9maWx0ZXJzL0ZFTWVyZ2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9maWx0ZXJzL0ZFTWVyZ2UuaApAQCAtMjIsMTggKzIyLDE3IEBACiAjcHJhZ21h
IG9uY2UKIAogI2luY2x1ZGUgIkZpbHRlckVmZmVjdC5oIgotI2luY2x1ZGUgIkZpbHRlci5oIgog
CiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIEZFTWVyZ2UgOiBwdWJsaWMgRmlsdGVyRWZm
ZWN0IHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUmVmPEZFTWVyZ2U+IGNyZWF0ZShGaWx0ZXImKTsK
KyAgICBzdGF0aWMgUmVmPEZFTWVyZ2U+IGNyZWF0ZSgpOwogCiBwcml2YXRlOgotICAgIEZFTWVy
Z2UoRmlsdGVyJik7CisgICAgRkVNZXJnZSgpOwogCi0gICAgdm9pZCBwbGF0Zm9ybUFwcGx5U29m
dHdhcmUoKSBvdmVycmlkZTsKKyAgICB2b2lkIHBsYXRmb3JtQXBwbHlTb2Z0d2FyZShjb25zdCBG
aWx0ZXImKSBvdmVycmlkZTsKIAogICAgIFdURjo6VGV4dFN0cmVhbSYgZXh0ZXJuYWxSZXByZXNl
bnRhdGlvbihXVEY6OlRleHRTdHJlYW0mLCBSZXByZXNlbnRhdGlvblR5cGUpIGNvbnN0IG92ZXJy
aWRlOwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Zp
bHRlcnMvRkVNb3JwaG9sb2d5LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2ZpbHRlcnMvRkVNb3JwaG9sb2d5LmNwcAppbmRleCAxYjBkYWViMGRiNTZlODE4OTIwMThhMzA3
NTA2ZjM1NzcxZDY4YzAwLi40MmZiYTc0YjUzZmI4MGEzNmY5ODRjODE2ODM5NmQ0NTJlNjg0Yzc0
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZF
TW9ycGhvbG9neS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmls
dGVycy9GRU1vcnBob2xvZ3kuY3BwCkBAIC0zNSwxNyArMzUsMTcgQEAKIAogbmFtZXNwYWNlIFdl
YkNvcmUgewogCi1GRU1vcnBob2xvZ3k6OkZFTW9ycGhvbG9neShGaWx0ZXImIGZpbHRlciwgTW9y
cGhvbG9neU9wZXJhdG9yVHlwZSB0eXBlLCBmbG9hdCByYWRpdXNYLCBmbG9hdCByYWRpdXNZKQot
ICAgIDogRmlsdGVyRWZmZWN0KGZpbHRlciwgRmlsdGVyRWZmZWN0OjpUeXBlOjpGRU1vcnBob2xv
Z3kpCi0gICAgLCBtX3R5cGUodHlwZSkKLSAgICAsIG1fcmFkaXVzWChyYWRpdXNYKQotICAgICwg
bV9yYWRpdXNZKHJhZGl1c1kpCitSZWY8RkVNb3JwaG9sb2d5PiBGRU1vcnBob2xvZ3k6OmNyZWF0
ZShNb3JwaG9sb2d5T3BlcmF0b3JUeXBlIHR5cGUsIGZsb2F0IHJhZGl1c1gsIGZsb2F0IHJhZGl1
c1kpCiB7CisgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgRkVNb3JwaG9sb2d5KHR5cGUsIHJhZGl1
c1gsIHJhZGl1c1kpKTsKIH0KIAotUmVmPEZFTW9ycGhvbG9neT4gRkVNb3JwaG9sb2d5OjpjcmVh
dGUoRmlsdGVyJiBmaWx0ZXIsIE1vcnBob2xvZ3lPcGVyYXRvclR5cGUgdHlwZSwgZmxvYXQgcmFk
aXVzWCwgZmxvYXQgcmFkaXVzWSkKK0ZFTW9ycGhvbG9neTo6RkVNb3JwaG9sb2d5KE1vcnBob2xv
Z3lPcGVyYXRvclR5cGUgdHlwZSwgZmxvYXQgcmFkaXVzWCwgZmxvYXQgcmFkaXVzWSkKKyAgICA6
IEZpbHRlckVmZmVjdChGaWx0ZXJFZmZlY3Q6OlR5cGU6OkZFTW9ycGhvbG9neSkKKyAgICAsIG1f
dHlwZSh0eXBlKQorICAgICwgbV9yYWRpdXNYKHJhZGl1c1gpCisgICAgLCBtX3JhZGl1c1kocmFk
aXVzWSkKIHsKLSAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBGRU1vcnBob2xvZ3koZmlsdGVyLCB0
eXBlLCByYWRpdXNYLCByYWRpdXNZKSk7CiB9CiAKIGJvb2wgRkVNb3JwaG9sb2d5OjpzZXRNb3Jw
aG9sb2d5T3BlcmF0b3IoTW9ycGhvbG9neU9wZXJhdG9yVHlwZSB0eXBlKQpAQCAtNzIsMTAgKzcy
LDkgQEAgYm9vbCBGRU1vcnBob2xvZ3k6OnNldFJhZGl1c1koZmxvYXQgcmFkaXVzWSkKICAgICBy
ZXR1cm4gdHJ1ZTsKIH0KIAotdm9pZCBGRU1vcnBob2xvZ3k6OmRldGVybWluZUFic29sdXRlUGFp
bnRSZWN0KCkKK3ZvaWQgRkVNb3JwaG9sb2d5OjpkZXRlcm1pbmVBYnNvbHV0ZVBhaW50UmVjdChj
b25zdCBGaWx0ZXImIGZpbHRlcikKIHsKICAgICBGbG9hdFJlY3QgcGFpbnRSZWN0ID0gaW5wdXRF
ZmZlY3QoMCktPmFic29sdXRlUGFpbnRSZWN0KCk7Ci0gICAgRmlsdGVyJiBmaWx0ZXIgPSB0aGlz
LT5maWx0ZXIoKTsKICAgICBwYWludFJlY3QuaW5mbGF0ZShmaWx0ZXIuc2NhbGVkQnlGaWx0ZXJT
Y2FsZSh7IG1fcmFkaXVzWCwgbV9yYWRpdXNZIH0pKTsKICAgICBpZiAoY2xpcHNUb0JvdW5kcygp
KQogICAgICAgICBwYWludFJlY3QuaW50ZXJzZWN0KG1heEVmZmVjdFJlY3QoKSk7CkBAIC0yNDAs
NyArMjM5LDcgQEAgYm9vbCBGRU1vcnBob2xvZ3k6OnBsYXRmb3JtQXBwbHlEZWdlbmVyYXRlKFVp
bnQ4Q2xhbXBlZEFycmF5JiBkc3RQaXhlbEFycmF5LCBjb24KICAgICByZXR1cm4gZmFsc2U7CiB9
CiAKLXZvaWQgRkVNb3JwaG9sb2d5OjpwbGF0Zm9ybUFwcGx5U29mdHdhcmUoKQordm9pZCBGRU1v
cnBob2xvZ3k6OnBsYXRmb3JtQXBwbHlTb2Z0d2FyZShjb25zdCBGaWx0ZXImIGZpbHRlcikKIHsK
ICAgICBGaWx0ZXJFZmZlY3QqIGluID0gaW5wdXRFZmZlY3QoMCk7CiAKQEAgLTI1OCw3ICsyNTcs
NiBAQCB2b2lkIEZFTW9ycGhvbG9neTo6cGxhdGZvcm1BcHBseVNvZnR3YXJlKCkKICAgICBpZiAo
cGxhdGZvcm1BcHBseURlZ2VuZXJhdGUoZGVzdGluYXRpb25QaXhlbEFycmF5LCBlZmZlY3REcmF3
aW5nUmVjdCwgcmFkaXVzLndpZHRoKCksIHJhZGl1cy5oZWlnaHQoKSkpCiAgICAgICAgIHJldHVy
bjsKIAotICAgIEZpbHRlciYgZmlsdGVyID0gdGhpcy0+ZmlsdGVyKCk7CiAgICAgYXV0byBzb3Vy
Y2VQaXhlbEFycmF5ID0gaW4tPnByZW11bHRpcGxpZWRSZXN1bHQoZWZmZWN0RHJhd2luZ1JlY3Qs
IG9wZXJhdGluZ0NvbG9yU3BhY2UoKSk7CiAgICAgaWYgKCFzb3VyY2VQaXhlbEFycmF5KQogICAg
ICAgICByZXR1cm47CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9maWx0ZXJzL0ZFTW9ycGhvbG9neS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvZmlsdGVycy9GRU1vcnBob2xvZ3kuaAppbmRleCAxYjY5YzYzMjZjYjBiOTIzNmE5MGQzZDE0
MjUzYWUwYjNlZTE0OTg4Li5lYzliZGI2OTYyNTFmY2ZjODFiM2U1Y2FiMDI3N2I5ODJiOTFhOGZh
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZF
TW9ycGhvbG9neS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRl
cnMvRkVNb3JwaG9sb2d5LmgKQEAgLTIyLDcgKzIyLDYgQEAKICNwcmFnbWEgb25jZQogCiAjaW5j
bHVkZSAiRmlsdGVyRWZmZWN0LmgiCi0jaW5jbHVkZSAiRmlsdGVyLmgiCiAKIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIApAQCAtMzQsNyArMzMsNyBAQCBlbnVtIE1vcnBob2xvZ3lPcGVyYXRvclR5cGUg
ewogCiBjbGFzcyBGRU1vcnBob2xvZ3kgOiBwdWJsaWMgRmlsdGVyRWZmZWN0IHsKIHB1YmxpYzoK
LSAgICBzdGF0aWMgUmVmPEZFTW9ycGhvbG9neT4gY3JlYXRlKEZpbHRlciYsIE1vcnBob2xvZ3lP
cGVyYXRvclR5cGUsIGZsb2F0IHJhZGl1c1gsIGZsb2F0IHJhZGl1c1kpOworICAgIHN0YXRpYyBS
ZWY8RkVNb3JwaG9sb2d5PiBjcmVhdGUoTW9ycGhvbG9neU9wZXJhdG9yVHlwZSwgZmxvYXQgcmFk
aXVzWCwgZmxvYXQgcmFkaXVzWSk7CiAKICAgICBNb3JwaG9sb2d5T3BlcmF0b3JUeXBlIG1vcnBo
b2xvZ3lPcGVyYXRvcigpIGNvbnN0IHsgcmV0dXJuIG1fdHlwZTsgfQogICAgIGJvb2wgc2V0TW9y
cGhvbG9neU9wZXJhdG9yKE1vcnBob2xvZ3lPcGVyYXRvclR5cGUpOwpAQCAtNDYsMTEgKzQ1LDEx
IEBAIHB1YmxpYzoKICAgICBib29sIHNldFJhZGl1c1koZmxvYXQpOwogCiBwcml2YXRlOgotICAg
IEZFTW9ycGhvbG9neShGaWx0ZXImLCBNb3JwaG9sb2d5T3BlcmF0b3JUeXBlLCBmbG9hdCByYWRp
dXNYLCBmbG9hdCByYWRpdXNZKTsKKyAgICBGRU1vcnBob2xvZ3koTW9ycGhvbG9neU9wZXJhdG9y
VHlwZSwgZmxvYXQgcmFkaXVzWCwgZmxvYXQgcmFkaXVzWSk7CiAKLSAgICB2b2lkIHBsYXRmb3Jt
QXBwbHlTb2Z0d2FyZSgpIG92ZXJyaWRlOworICAgIHZvaWQgZGV0ZXJtaW5lQWJzb2x1dGVQYWlu
dFJlY3QoY29uc3QgRmlsdGVyJikgb3ZlcnJpZGU7CiAKLSAgICB2b2lkIGRldGVybWluZUFic29s
dXRlUGFpbnRSZWN0KCkgb3ZlcnJpZGU7CisgICAgdm9pZCBwbGF0Zm9ybUFwcGx5U29mdHdhcmUo
Y29uc3QgRmlsdGVyJikgb3ZlcnJpZGU7CiAKICAgICBXVEY6OlRleHRTdHJlYW0mIGV4dGVybmFs
UmVwcmVzZW50YXRpb24oV1RGOjpUZXh0U3RyZWFtJiwgUmVwcmVzZW50YXRpb25UeXBlKSBjb25z
dCBvdmVycmlkZTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvZmlsdGVycy9GRU9mZnNldC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9maWx0ZXJzL0ZFT2Zmc2V0LmNwcAppbmRleCAwMjhjYmM2MGE0NDdmMzY5YmNjZWRhMDA1Yzkx
NzViMzFiMThkOGY2Li5hMDU3NjA4MTU4NTViMjgxMGY2N2YwNDFkOGExMzE1NzdiMjQ2ZjYxIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFT2Zm
c2V0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZF
T2Zmc2V0LmNwcApAQCAtMzAsMTYgKzMwLDE2IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAot
RkVPZmZzZXQ6OkZFT2Zmc2V0KEZpbHRlciYgZmlsdGVyLCBmbG9hdCBkeCwgZmxvYXQgZHkpCi0g
ICAgOiBGaWx0ZXJFZmZlY3QoZmlsdGVyLCBGaWx0ZXJFZmZlY3Q6OlR5cGU6OkZFT2Zmc2V0KQot
ICAgICwgbV9keChkeCkKLSAgICAsIG1fZHkoZHkpCitSZWY8RkVPZmZzZXQ+IEZFT2Zmc2V0Ojpj
cmVhdGUoZmxvYXQgZHgsIGZsb2F0IGR5KQogeworICAgIHJldHVybiBhZG9wdFJlZigqbmV3IEZF
T2Zmc2V0KGR4LCBkeSkpOwogfQogCi1SZWY8RkVPZmZzZXQ+IEZFT2Zmc2V0OjpjcmVhdGUoRmls
dGVyJiBmaWx0ZXIsIGZsb2F0IGR4LCBmbG9hdCBkeSkKK0ZFT2Zmc2V0OjpGRU9mZnNldChmbG9h
dCBkeCwgZmxvYXQgZHkpCisgICAgOiBGaWx0ZXJFZmZlY3QoRmlsdGVyRWZmZWN0OjpUeXBlOjpG
RU9mZnNldCkKKyAgICAsIG1fZHgoZHgpCisgICAgLCBtX2R5KGR5KQogewotICAgIHJldHVybiBh
ZG9wdFJlZigqbmV3IEZFT2Zmc2V0KGZpbHRlciwgZHgsIGR5KSk7CiB9CiAKIHZvaWQgRkVPZmZz
ZXQ6OnNldER4KGZsb2F0IGR4KQpAQCAtNTIsMTAgKzUyLDkgQEAgdm9pZCBGRU9mZnNldDo6c2V0
RHkoZmxvYXQgZHkpCiAgICAgbV9keSA9IGR5OwogfQogCi12b2lkIEZFT2Zmc2V0OjpkZXRlcm1p
bmVBYnNvbHV0ZVBhaW50UmVjdCgpCit2b2lkIEZFT2Zmc2V0OjpkZXRlcm1pbmVBYnNvbHV0ZVBh
aW50UmVjdChjb25zdCBGaWx0ZXImIGZpbHRlcikKIHsKICAgICBGbG9hdFJlY3QgcGFpbnRSZWN0
ID0gaW5wdXRFZmZlY3QoMCktPmFic29sdXRlUGFpbnRSZWN0KCk7Ci0gICAgRmlsdGVyJiBmaWx0
ZXIgPSB0aGlzLT5maWx0ZXIoKTsKICAgICBwYWludFJlY3QubW92ZShmaWx0ZXIuc2NhbGVkQnlG
aWx0ZXJTY2FsZSh7IG1fZHgsIG1fZHkgfSkpOwogICAgIGlmIChjbGlwc1RvQm91bmRzKCkpCiAg
ICAgICAgIHBhaW50UmVjdC5pbnRlcnNlY3QobWF4RWZmZWN0UmVjdCgpKTsKQEAgLTY0LDcgKzYz
LDcgQEAgdm9pZCBGRU9mZnNldDo6ZGV0ZXJtaW5lQWJzb2x1dGVQYWludFJlY3QoKQogICAgIHNl
dEFic29sdXRlUGFpbnRSZWN0KGVuY2xvc2luZ0ludFJlY3QocGFpbnRSZWN0KSk7CiB9CiAKLXZv
aWQgRkVPZmZzZXQ6OnBsYXRmb3JtQXBwbHlTb2Z0d2FyZSgpCit2b2lkIEZFT2Zmc2V0OjpwbGF0
Zm9ybUFwcGx5U29mdHdhcmUoY29uc3QgRmlsdGVyJiBmaWx0ZXIpCiB7CiAgICAgRmlsdGVyRWZm
ZWN0KiBpbiA9IGlucHV0RWZmZWN0KDApOwogCkBAIC03Niw3ICs3NSw2IEBAIHZvaWQgRkVPZmZz
ZXQ6OnBsYXRmb3JtQXBwbHlTb2Z0d2FyZSgpCiAgICAgc2V0SXNBbHBoYUltYWdlKGluLT5pc0Fs
cGhhSW1hZ2UoKSk7CiAKICAgICBGbG9hdFJlY3QgZHJhd2luZ1JlZ2lvbiA9IGRyYXdpbmdSZWdp
b25PZklucHV0SW1hZ2UoaW4tPmFic29sdXRlUGFpbnRSZWN0KCkpOwotICAgIEZpbHRlciYgZmls
dGVyID0gdGhpcy0+ZmlsdGVyKCk7CiAgICAgZHJhd2luZ1JlZ2lvbi5tb3ZlKGZpbHRlci5zY2Fs
ZWRCeUZpbHRlclNjYWxlKHsgbV9keCwgbV9keSB9KSk7CiAgICAgcmVzdWx0SW1hZ2UtPmNvbnRl
eHQoKS5kcmF3SW1hZ2VCdWZmZXIoKmluQnVmZmVyLCBkcmF3aW5nUmVnaW9uKTsKIH0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVPZmZzZXQu
aCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVPZmZzZXQuaApp
bmRleCBkYjczMjI1NWVlNzhkMzM2ODA5ZGI0MjE3ODVhOTJmODQ1Yjk1MjYyLi43MmQ3NmEzMTk4
YTM3MjllOTVjYTFkZmFmNjNmNWIwZjZkODhjYTZmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFT2Zmc2V0LmgKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRU9mZnNldC5oCkBAIC0yMiwxMyArMjIsMTIg
QEAKICNwcmFnbWEgb25jZQogCiAjaW5jbHVkZSAiRmlsdGVyRWZmZWN0LmgiCi0jaW5jbHVkZSAi
RmlsdGVyLmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgRkVPZmZzZXQgOiBwdWJs
aWMgRmlsdGVyRWZmZWN0IHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUmVmPEZFT2Zmc2V0PiBjcmVh
dGUoRmlsdGVyJiwgZmxvYXQgZHgsIGZsb2F0IGR5KTsKKyAgICBzdGF0aWMgUmVmPEZFT2Zmc2V0
PiBjcmVhdGUoZmxvYXQgZHgsIGZsb2F0IGR5KTsKIAogICAgIGZsb2F0IGR4KCkgY29uc3QgeyBy
ZXR1cm4gbV9keDsgfQogICAgIHZvaWQgc2V0RHgoZmxvYXQpOwpAQCAtMzcsMTEgKzM2LDExIEBA
IHB1YmxpYzoKICAgICB2b2lkIHNldER5KGZsb2F0KTsKIAogcHJpdmF0ZToKLSAgICBGRU9mZnNl
dChGaWx0ZXImLCBmbG9hdCBkeCwgZmxvYXQgZHkpOworICAgIEZFT2Zmc2V0KGZsb2F0IGR4LCBm
bG9hdCBkeSk7CiAKLSAgICB2b2lkIHBsYXRmb3JtQXBwbHlTb2Z0d2FyZSgpIG92ZXJyaWRlOwot
ICAgIAotICAgIHZvaWQgZGV0ZXJtaW5lQWJzb2x1dGVQYWludFJlY3QoKSBvdmVycmlkZTsKKyAg
ICB2b2lkIGRldGVybWluZUFic29sdXRlUGFpbnRSZWN0KGNvbnN0IEZpbHRlciYpIG92ZXJyaWRl
OworCisgICAgdm9pZCBwbGF0Zm9ybUFwcGx5U29mdHdhcmUoY29uc3QgRmlsdGVyJikgb3ZlcnJp
ZGU7CiAKICAgICBXVEY6OlRleHRTdHJlYW0mIGV4dGVybmFsUmVwcmVzZW50YXRpb24oV1RGOjpU
ZXh0U3RyZWFtJiwgUmVwcmVzZW50YXRpb25UeXBlKSBjb25zdCBvdmVycmlkZTsKIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRVNwZWN1bGFy
TGlnaHRpbmcuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9G
RVNwZWN1bGFyTGlnaHRpbmcuY3BwCmluZGV4IDUyZjQ1MDg0MDkwYWRjYjA0ZDdlNDUxMjA1OGVh
N2EyYWNkYThmM2MuLjYwN2E3MWM0Y2YzNWY1NmQ0YTIyZmNmNTAyNmYxNDJiNTE3ZTcwZDcgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVTcGVj
dWxhckxpZ2h0aW5nLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9m
aWx0ZXJzL0ZFU3BlY3VsYXJMaWdodGluZy5jcHAKQEAgLTI3LDE0ICsyNywxNCBAQAogCiBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAKLUZFU3BlY3VsYXJMaWdodGluZzo6RkVTcGVjdWxhckxpZ2h0aW5n
KEZpbHRlciYgZmlsdGVyLCBjb25zdCBDb2xvciYgbGlnaHRpbmdDb2xvciwgZmxvYXQgc3VyZmFj
ZVNjYWxlLCBmbG9hdCBzcGVjdWxhckNvbnN0YW50LCBmbG9hdCBzcGVjdWxhckV4cG9uZW50LCBm
bG9hdCBrZXJuZWxVbml0TGVuZ3RoWCwgZmxvYXQga2VybmVsVW5pdExlbmd0aFksIFJlZjxMaWdo
dFNvdXJjZT4mJiBsaWdodFNvdXJjZSkKLSAgICA6IEZFTGlnaHRpbmcoZmlsdGVyLCBTcGVjdWxh
ckxpZ2h0aW5nLCBsaWdodGluZ0NvbG9yLCBzdXJmYWNlU2NhbGUsIDAsIHNwZWN1bGFyQ29uc3Rh
bnQsIHNwZWN1bGFyRXhwb25lbnQsIGtlcm5lbFVuaXRMZW5ndGhYLCBrZXJuZWxVbml0TGVuZ3Ro
WSwgV1RGTW92ZShsaWdodFNvdXJjZSksIEZpbHRlckVmZmVjdDo6VHlwZTo6RkVTcGVjdWxhckxp
Z2h0aW5nKQorUmVmPEZFU3BlY3VsYXJMaWdodGluZz4gRkVTcGVjdWxhckxpZ2h0aW5nOjpjcmVh
dGUoY29uc3QgQ29sb3ImIGxpZ2h0aW5nQ29sb3IsIGZsb2F0IHN1cmZhY2VTY2FsZSwgZmxvYXQg
c3BlY3VsYXJDb25zdGFudCwgZmxvYXQgc3BlY3VsYXJFeHBvbmVudCwgZmxvYXQga2VybmVsVW5p
dExlbmd0aFgsIGZsb2F0IGtlcm5lbFVuaXRMZW5ndGhZLCBSZWY8TGlnaHRTb3VyY2U+JiYgbGln
aHRTb3VyY2UpCiB7CisgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgRkVTcGVjdWxhckxpZ2h0aW5n
KGxpZ2h0aW5nQ29sb3IsIHN1cmZhY2VTY2FsZSwgc3BlY3VsYXJDb25zdGFudCwgc3BlY3VsYXJF
eHBvbmVudCwga2VybmVsVW5pdExlbmd0aFgsIGtlcm5lbFVuaXRMZW5ndGhZLCBXVEZNb3ZlKGxp
Z2h0U291cmNlKSkpOwogfQogCi1SZWY8RkVTcGVjdWxhckxpZ2h0aW5nPiBGRVNwZWN1bGFyTGln
aHRpbmc6OmNyZWF0ZShGaWx0ZXImIGZpbHRlciwgY29uc3QgQ29sb3ImIGxpZ2h0aW5nQ29sb3Is
IGZsb2F0IHN1cmZhY2VTY2FsZSwgZmxvYXQgc3BlY3VsYXJDb25zdGFudCwgZmxvYXQgc3BlY3Vs
YXJFeHBvbmVudCwgZmxvYXQga2VybmVsVW5pdExlbmd0aFgsIGZsb2F0IGtlcm5lbFVuaXRMZW5n
dGhZLCBSZWY8TGlnaHRTb3VyY2U+JiYgbGlnaHRTb3VyY2UpCitGRVNwZWN1bGFyTGlnaHRpbmc6
OkZFU3BlY3VsYXJMaWdodGluZyhjb25zdCBDb2xvciYgbGlnaHRpbmdDb2xvciwgZmxvYXQgc3Vy
ZmFjZVNjYWxlLCBmbG9hdCBzcGVjdWxhckNvbnN0YW50LCBmbG9hdCBzcGVjdWxhckV4cG9uZW50
LCBmbG9hdCBrZXJuZWxVbml0TGVuZ3RoWCwgZmxvYXQga2VybmVsVW5pdExlbmd0aFksIFJlZjxM
aWdodFNvdXJjZT4mJiBsaWdodFNvdXJjZSkKKyAgICA6IEZFTGlnaHRpbmcoU3BlY3VsYXJMaWdo
dGluZywgbGlnaHRpbmdDb2xvciwgc3VyZmFjZVNjYWxlLCAwLCBzcGVjdWxhckNvbnN0YW50LCBz
cGVjdWxhckV4cG9uZW50LCBrZXJuZWxVbml0TGVuZ3RoWCwga2VybmVsVW5pdExlbmd0aFksIFdU
Rk1vdmUobGlnaHRTb3VyY2UpLCBGaWx0ZXJFZmZlY3Q6OlR5cGU6OkZFU3BlY3VsYXJMaWdodGlu
ZykKIHsKLSAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBGRVNwZWN1bGFyTGlnaHRpbmcoZmlsdGVy
LCBsaWdodGluZ0NvbG9yLCBzdXJmYWNlU2NhbGUsIHNwZWN1bGFyQ29uc3RhbnQsIHNwZWN1bGFy
RXhwb25lbnQsIGtlcm5lbFVuaXRMZW5ndGhYLCBrZXJuZWxVbml0TGVuZ3RoWSwgV1RGTW92ZShs
aWdodFNvdXJjZSkpKTsKIH0KIAogYm9vbCBGRVNwZWN1bGFyTGlnaHRpbmc6OnNldFNwZWN1bGFy
Q29uc3RhbnQoZmxvYXQgc3BlY3VsYXJDb25zdGFudCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVTcGVjdWxhckxpZ2h0aW5nLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFU3BlY3VsYXJMaWdodGluZy5o
CmluZGV4IDliYmJhOGE4ZjFmYzZmMDEwNDU3NjBkYTgwZDM1ZjhjZDI3N2NlMTcuLmFjNDUwZGJk
YjYwY2Q2OTdjZDhkZmMzYzc5MzE4ZGJmNjRhZDUzMzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVTcGVjdWxhckxpZ2h0aW5nLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRVNwZWN1bGFyTGlnaHRp
bmcuaApAQCAtMjcsNyArMjcsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIEZFU3Bl
Y3VsYXJMaWdodGluZyA6IHB1YmxpYyBGRUxpZ2h0aW5nIHsKIHB1YmxpYzoKLSAgICBzdGF0aWMg
UmVmPEZFU3BlY3VsYXJMaWdodGluZz4gY3JlYXRlKEZpbHRlciYsIGNvbnN0IENvbG9yJiwgZmxv
YXQsIGZsb2F0LCBmbG9hdCwgZmxvYXQsIGZsb2F0LCBSZWY8TGlnaHRTb3VyY2U+JiYpOworICAg
IHN0YXRpYyBSZWY8RkVTcGVjdWxhckxpZ2h0aW5nPiBjcmVhdGUoY29uc3QgQ29sb3ImIGxpZ2h0
aW5nQ29sb3IsIGZsb2F0IHN1cmZhY2VTY2FsZSwgZmxvYXQgc3BlY3VsYXJDb25zdGFudCwgZmxv
YXQgc3BlY3VsYXJFeHBvbmVudCwgZmxvYXQga2VybmVsVW5pdExlbmd0aFgsIGZsb2F0IGtlcm5l
bFVuaXRMZW5ndGhZLCBSZWY8TGlnaHRTb3VyY2U+JiYpOwogCiAgICAgZmxvYXQgc3BlY3VsYXJD
b25zdGFudCgpIGNvbnN0IHsgcmV0dXJuIG1fc3BlY3VsYXJDb25zdGFudDsgfQogICAgIGJvb2wg
c2V0U3BlY3VsYXJDb25zdGFudChmbG9hdCk7CkBAIC0zOCw3ICszOCw3IEBAIHB1YmxpYzoKICAg
ICBXVEY6OlRleHRTdHJlYW0mIGV4dGVybmFsUmVwcmVzZW50YXRpb24oV1RGOjpUZXh0U3RyZWFt
JiwgUmVwcmVzZW50YXRpb25UeXBlKSBjb25zdCBvdmVycmlkZTsKIAogcHJpdmF0ZToKLSAgICBG
RVNwZWN1bGFyTGlnaHRpbmcoRmlsdGVyJiwgY29uc3QgQ29sb3ImLCBmbG9hdCwgZmxvYXQsIGZs
b2F0LCBmbG9hdCwgZmxvYXQsIFJlZjxMaWdodFNvdXJjZT4mJik7CisgICAgRkVTcGVjdWxhckxp
Z2h0aW5nKGNvbnN0IENvbG9yJiBsaWdodGluZ0NvbG9yLCBmbG9hdCBzdXJmYWNlU2NhbGUsIGZs
b2F0IHNwZWN1bGFyQ29uc3RhbnQsIGZsb2F0IHNwZWN1bGFyRXhwb25lbnQsIGZsb2F0IGtlcm5l
bFVuaXRMZW5ndGhYLCBmbG9hdCBrZXJuZWxVbml0TGVuZ3RoWSwgUmVmPExpZ2h0U291cmNlPiYm
KTsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVUaWxlLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVUaWxlLmNwcAppbmRleCAzZTUwZmI2YzAwZWNm
MzgzOTg1YzYyOTc5ODRmNmU5Nzg1Y2U0MjRlLi43YjdjMWJmZWVjMzE5YjJmMzE2ZTM5YzNmMTVl
NDA2NmQ3Y2Q3ZTM2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9maWx0ZXJzL0ZFVGlsZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvZmlsdGVycy9GRVRpbGUuY3BwCkBAIC0zMSwxNyArMzEsMTcgQEAKIAogbmFtZXNwYWNlIFdl
YkNvcmUgewogCi1GRVRpbGU6OkZFVGlsZShGaWx0ZXImIGZpbHRlcikKLSAgICA6IEZpbHRlckVm
ZmVjdChmaWx0ZXIsIEZpbHRlckVmZmVjdDo6VHlwZTo6RkVUaWxlKQorUmVmPEZFVGlsZT4gRkVU
aWxlOjpjcmVhdGUoKQogeworICAgIHJldHVybiBhZG9wdFJlZigqbmV3IEZFVGlsZSgpKTsKIH0K
IAotUmVmPEZFVGlsZT4gRkVUaWxlOjpjcmVhdGUoRmlsdGVyJiBmaWx0ZXIpCitGRVRpbGU6OkZF
VGlsZSgpCisgICAgOiBGaWx0ZXJFZmZlY3QoRmlsdGVyRWZmZWN0OjpUeXBlOjpGRVRpbGUpCiB7
Ci0gICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgRkVUaWxlKGZpbHRlcikpOwogfQogCi12b2lkIEZF
VGlsZTo6cGxhdGZvcm1BcHBseVNvZnR3YXJlKCkKK3ZvaWQgRkVUaWxlOjpwbGF0Zm9ybUFwcGx5
U29mdHdhcmUoY29uc3QgRmlsdGVyJiBmaWx0ZXIpCiB7CiAvLyBGSVhNRTogU2VlIGJ1ZyA0NzMx
NS4gVGhpcyBpcyBhIGhhY2sgdG8gd29yayBhcm91bmQgYSBjb21waWxlIGZhaWx1cmUsIGJ1dCBp
cyBpbmNvcnJlY3QgYmVoYXZpb3Igb3RoZXJ3aXNlLgogICAgIEZpbHRlckVmZmVjdCogaW4gPSBp
bnB1dEVmZmVjdCgwKTsKQEAgLTU5LDEyICs1OSwxMSBAQCB2b2lkIEZFVGlsZTo6cGxhdGZvcm1B
cHBseVNvZnR3YXJlKCkKICAgICBGbG9hdFBvaW50IGluTWF4RWZmZWN0TG9jYXRpb24gPSB0aWxl
UmVjdC5sb2NhdGlvbigpOwogICAgIEZsb2F0UG9pbnQgbWF4RWZmZWN0TG9jYXRpb24gPSBtYXhF
ZmZlY3RSZWN0KCkubG9jYXRpb24oKTsKICAgICBpZiAoaW4tPmZpbHRlclR5cGUoKSA9PSBGaWx0
ZXJFZmZlY3Q6OlR5cGU6OlNvdXJjZUdyYXBoaWMgfHwgaW4tPmZpbHRlclR5cGUoKSA9PSBGaWx0
ZXJFZmZlY3Q6OlR5cGU6OlNvdXJjZUFscGhhKSB7Ci0gICAgICAgIEZpbHRlciYgZmlsdGVyID0g
dGhpcy0+ZmlsdGVyKCk7CiAgICAgICAgIHRpbGVSZWN0ID0gZmlsdGVyLmZpbHRlclJlZ2lvbigp
OwogICAgICAgICB0aWxlUmVjdC5zY2FsZShmaWx0ZXIuZmlsdGVyU2NhbGUoKSk7CiAgICAgfQog
Ci0gICAgYXV0byB0aWxlSW1hZ2UgPSBTVkdSZW5kZXJpbmdDb250ZXh0OjpjcmVhdGVJbWFnZUJ1
ZmZlcih0aWxlUmVjdCwgdGlsZVJlY3QsIERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQigpLCBm
aWx0ZXIoKS5yZW5kZXJpbmdNb2RlKCkpOworICAgIGF1dG8gdGlsZUltYWdlID0gU1ZHUmVuZGVy
aW5nQ29udGV4dDo6Y3JlYXRlSW1hZ2VCdWZmZXIodGlsZVJlY3QsIHRpbGVSZWN0LCBEZXN0aW5h
dGlvbkNvbG9yU3BhY2U6OlNSR0IoKSwgZmlsdGVyLnJlbmRlcmluZ01vZGUoKSk7CiAgICAgaWYg
KCF0aWxlSW1hZ2UpCiAgICAgICAgIHJldHVybjsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRVRpbGUuaCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVUaWxlLmgKaW5kZXggNWM0OGVmNDUxNTBlYzJjZjg3
OWZkZGI3ZTQ4ZTllOWU4ZDUwMjQxZS4uYzM5OGYzNjQwYjBkNzUzZTg4Mzg1NDQzOGYyMDBkNzE2
ZmIxM2ViZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmls
dGVycy9GRVRpbGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0
ZXJzL0ZFVGlsZS5oCkBAIC0yMiwyMCArMjIsMTkgQEAKICNwcmFnbWEgb25jZQogCiAjaW5jbHVk
ZSAiRmlsdGVyRWZmZWN0LmgiCi0jaW5jbHVkZSAiRmlsdGVyLmgiCiAKIG5hbWVzcGFjZSBXZWJD
b3JlIHsKICAgICAKIGNsYXNzIEZFVGlsZSA6IHB1YmxpYyBGaWx0ZXJFZmZlY3QgewogcHVibGlj
OgotICAgIHN0YXRpYyBSZWY8RkVUaWxlPiBjcmVhdGUoRmlsdGVyJik7CisgICAgc3RhdGljIFJl
ZjxGRVRpbGU+IGNyZWF0ZSgpOwogCiBwcml2YXRlOgotICAgIEZFVGlsZShGaWx0ZXImKTsKKyAg
ICBGRVRpbGUoKTsKIAotICAgIHZvaWQgcGxhdGZvcm1BcHBseVNvZnR3YXJlKCkgb3ZlcnJpZGU7
CisgICAgdm9pZCBkZXRlcm1pbmVBYnNvbHV0ZVBhaW50UmVjdChjb25zdCBGaWx0ZXImKSBvdmVy
cmlkZSB7IHNldEFic29sdXRlUGFpbnRSZWN0KGVuY2xvc2luZ0ludFJlY3QobWF4RWZmZWN0UmVj
dCgpKSk7IH0KIAotICAgIHZvaWQgZGV0ZXJtaW5lQWJzb2x1dGVQYWludFJlY3QoKSBvdmVycmlk
ZSB7IHNldEFic29sdXRlUGFpbnRSZWN0KGVuY2xvc2luZ0ludFJlY3QobWF4RWZmZWN0UmVjdCgp
KSk7IH0KKyAgICB2b2lkIHBsYXRmb3JtQXBwbHlTb2Z0d2FyZShjb25zdCBGaWx0ZXImKSBvdmVy
cmlkZTsKIAogICAgIFdURjo6VGV4dFN0cmVhbSYgZXh0ZXJuYWxSZXByZXNlbnRhdGlvbihXVEY6
OlRleHRTdHJlYW0mLCBSZXByZXNlbnRhdGlvblR5cGUpIGNvbnN0IG92ZXJyaWRlOwogfTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVUdXJi
dWxlbmNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVU
dXJidWxlbmNlLmNwcAppbmRleCBhMmU3YWVjMzRkNmE5NTU0NGEwNzA2OTdkYTU3OGUxODM1NjBk
YjVjLi5mMmNmZWYwNjFhMzcwODQ5NDNhMjBlZmFlOGQ4ZmIwYzliZGE3MWNhIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFVHVyYnVsZW5jZS5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRVR1cmJ1
bGVuY2UuY3BwCkBAIC00OCw4ICs0OCwxMyBAQCBzdGF0aWMgY29uc3QgaW50IHNfcmFuZEFtcGxp
dHVkZSA9IDE2ODA3OyAvLyA3Kio1OyBwcmltaXRpdmUgcm9vdCBvZiBtCiBzdGF0aWMgY29uc3Qg
aW50IHNfcmFuZFEgPSAxMjc3NzM7IC8vIG0gLyBhCiBzdGF0aWMgY29uc3QgaW50IHNfcmFuZFIg
PSAyODM2OyAvLyBtICUgYQogCi1GRVR1cmJ1bGVuY2U6OkZFVHVyYnVsZW5jZShGaWx0ZXImIGZp
bHRlciwgVHVyYnVsZW5jZVR5cGUgdHlwZSwgZmxvYXQgYmFzZUZyZXF1ZW5jeVgsIGZsb2F0IGJh
c2VGcmVxdWVuY3lZLCBpbnQgbnVtT2N0YXZlcywgZmxvYXQgc2VlZCwgYm9vbCBzdGl0Y2hUaWxl
cykKLSAgICA6IEZpbHRlckVmZmVjdChmaWx0ZXIsIEZpbHRlckVmZmVjdDo6VHlwZTo6RkVUdXJi
dWxlbmNlKQorUmVmPEZFVHVyYnVsZW5jZT4gRkVUdXJidWxlbmNlOjpjcmVhdGUoVHVyYnVsZW5j
ZVR5cGUgdHlwZSwgZmxvYXQgYmFzZUZyZXF1ZW5jeVgsIGZsb2F0IGJhc2VGcmVxdWVuY3lZLCBp
bnQgbnVtT2N0YXZlcywgZmxvYXQgc2VlZCwgYm9vbCBzdGl0Y2hUaWxlcykKK3sKKyAgICByZXR1
cm4gYWRvcHRSZWYoKm5ldyBGRVR1cmJ1bGVuY2UodHlwZSwgYmFzZUZyZXF1ZW5jeVgsIGJhc2VG
cmVxdWVuY3lZLCBudW1PY3RhdmVzLCBzZWVkLCBzdGl0Y2hUaWxlcykpOworfQorCitGRVR1cmJ1
bGVuY2U6OkZFVHVyYnVsZW5jZShUdXJidWxlbmNlVHlwZSB0eXBlLCBmbG9hdCBiYXNlRnJlcXVl
bmN5WCwgZmxvYXQgYmFzZUZyZXF1ZW5jeVksIGludCBudW1PY3RhdmVzLCBmbG9hdCBzZWVkLCBi
b29sIHN0aXRjaFRpbGVzKQorICAgIDogRmlsdGVyRWZmZWN0KEZpbHRlckVmZmVjdDo6VHlwZTo6
RkVUdXJidWxlbmNlKQogICAgICwgbV90eXBlKHR5cGUpCiAgICAgLCBtX2Jhc2VGcmVxdWVuY3lY
KGJhc2VGcmVxdWVuY3lYKQogICAgICwgbV9iYXNlRnJlcXVlbmN5WShiYXNlRnJlcXVlbmN5WSkK
QEAgLTU5LDExICs2NCw2IEBAIEZFVHVyYnVsZW5jZTo6RkVUdXJidWxlbmNlKEZpbHRlciYgZmls
dGVyLCBUdXJidWxlbmNlVHlwZSB0eXBlLCBmbG9hdCBiYXNlRnJlcXVlCiB7CiB9CiAKLVJlZjxG
RVR1cmJ1bGVuY2U+IEZFVHVyYnVsZW5jZTo6Y3JlYXRlKEZpbHRlciYgZmlsdGVyLCBUdXJidWxl
bmNlVHlwZSB0eXBlLCBmbG9hdCBiYXNlRnJlcXVlbmN5WCwgZmxvYXQgYmFzZUZyZXF1ZW5jeVks
IGludCBudW1PY3RhdmVzLCBmbG9hdCBzZWVkLCBib29sIHN0aXRjaFRpbGVzKQotewotICAgIHJl
dHVybiBhZG9wdFJlZigqbmV3IEZFVHVyYnVsZW5jZShmaWx0ZXIsIHR5cGUsIGJhc2VGcmVxdWVu
Y3lYLCBiYXNlRnJlcXVlbmN5WSwgbnVtT2N0YXZlcywgc2VlZCwgc3RpdGNoVGlsZXMpKTsKLX0K
LQogYm9vbCBGRVR1cmJ1bGVuY2U6OnNldFR5cGUoVHVyYnVsZW5jZVR5cGUgdHlwZSkKIHsKICAg
ICBpZiAobV90eXBlID09IHR5cGUpCkBAIC0zNjYsMTQgKzM2NiwxNCBAQCBDb2xvckNvbXBvbmVu
dHM8dWludDhfdCwgND4gRkVUdXJidWxlbmNlOjpjYWxjdWxhdGVUdXJidWxlbmNlVmFsdWVGb3JQ
b2ludChjb25zdAogICAgIHJldHVybiB0b0ludEJhc2VkQ29sb3JDb21wb25lbnRzKHR1cmJ1bGVu
Y2VGdW5jdGlvblJlc3VsdCk7CiB9CiAKLXZvaWQgRkVUdXJidWxlbmNlOjpmaWxsUmVnaW9uKFVp
bnQ4Q2xhbXBlZEFycmF5JiBwaXhlbEFycmF5LCBjb25zdCBQYWludGluZ0RhdGEmIHBhaW50aW5n
RGF0YSwgU3RpdGNoRGF0YSBzdGl0Y2hEYXRhLCBpbnQgc3RhcnRZLCBpbnQgZW5kWSkgY29uc3QK
K3ZvaWQgRkVUdXJidWxlbmNlOjpmaWxsUmVnaW9uKGNvbnN0IEZpbHRlciYgZmlsdGVyLCBVaW50
OENsYW1wZWRBcnJheSYgcGl4ZWxBcnJheSwgY29uc3QgUGFpbnRpbmdEYXRhJiBwYWludGluZ0Rh
dGEsIFN0aXRjaERhdGEgc3RpdGNoRGF0YSwgaW50IHN0YXJ0WSwgaW50IGVuZFkpIGNvbnN0CiB7
CiAgICAgQVNTRVJUKGVuZFkgPiBzdGFydFkpOwogCiAgICAgSW50UmVjdCBmaWx0ZXJSZWdpb24g
PSBhYnNvbHV0ZVBhaW50UmVjdCgpOwogICAgIEZsb2F0UG9pbnQgcG9pbnQoMCwgZmlsdGVyUmVn
aW9uLnkoKSArIHN0YXJ0WSk7CiAgICAgaW50IGluZGV4T2ZQaXhlbENoYW5uZWwgPSBzdGFydFkg
KiAoZmlsdGVyUmVnaW9uLndpZHRoKCkgPDwgMik7Ci0gICAgRmxvYXRTaXplIGludmVyc2VTY2Fs
ZSA9IHsgMSAvIGZpbHRlcigpLmZpbHRlclNjYWxlKCkud2lkdGgoKSwgMSAvIGZpbHRlcigpLmZp
bHRlclNjYWxlKCkuaGVpZ2h0KCkgfTsKKyAgICBGbG9hdFNpemUgaW52ZXJzZVNjYWxlID0geyAx
IC8gZmlsdGVyLmZpbHRlclNjYWxlKCkud2lkdGgoKSwgMSAvIGZpbHRlci5maWx0ZXJTY2FsZSgp
LmhlaWdodCgpIH07CiAKICAgICBmb3IgKGludCB5ID0gc3RhcnRZOyB5IDwgZW5kWTsgKyt5KSB7
CiAgICAgICAgIHBvaW50LnNldFkocG9pbnQueSgpICsgMSk7CkBAIC0zOTAsMTAgKzM5MCwxMCBA
QCB2b2lkIEZFVHVyYnVsZW5jZTo6ZmlsbFJlZ2lvbihVaW50OENsYW1wZWRBcnJheSYgcGl4ZWxB
cnJheSwgY29uc3QgUGFpbnRpbmdEYXRhJgogCiB2b2lkIEZFVHVyYnVsZW5jZTo6ZmlsbFJlZ2lv
bldvcmtlcihGaWxsUmVnaW9uUGFyYW1ldGVycyogcGFyYW1ldGVycykKIHsKLSAgICBwYXJhbWV0
ZXJzLT5maWx0ZXItPmZpbGxSZWdpb24oKnBhcmFtZXRlcnMtPnBpeGVsQXJyYXksICpwYXJhbWV0
ZXJzLT5wYWludGluZ0RhdGEsIHBhcmFtZXRlcnMtPnN0aXRjaERhdGEsIHBhcmFtZXRlcnMtPnN0
YXJ0WSwgcGFyYW1ldGVycy0+ZW5kWSk7CisgICAgcGFyYW1ldGVycy0+ZWZmZWN0LT5maWxsUmVn
aW9uKCpwYXJhbWV0ZXJzLT5maWx0ZXIsICpwYXJhbWV0ZXJzLT5waXhlbEFycmF5LCAqcGFyYW1l
dGVycy0+cGFpbnRpbmdEYXRhLCBwYXJhbWV0ZXJzLT5zdGl0Y2hEYXRhLCBwYXJhbWV0ZXJzLT5z
dGFydFksIHBhcmFtZXRlcnMtPmVuZFkpOwogfQogCi12b2lkIEZFVHVyYnVsZW5jZTo6cGxhdGZv
cm1BcHBseVNvZnR3YXJlKCkKK3ZvaWQgRkVUdXJidWxlbmNlOjpwbGF0Zm9ybUFwcGx5U29mdHdh
cmUoY29uc3QgRmlsdGVyJiBmaWx0ZXIpCiB7CiAgICAgYXV0byYgZGVzdGluYXRpb25QaXhlbEJ1
ZmZlciA9IGNyZWF0ZVVubXVsdGlwbGllZEltYWdlUmVzdWx0KCk7CiAgICAgaWYgKCFkZXN0aW5h
dGlvblBpeGVsQnVmZmVyKQpAQCAtNDM4LDcgKzQzOCw4IEBAIHZvaWQgRkVUdXJidWxlbmNlOjpw
bGF0Zm9ybUFwcGx5U29mdHdhcmUoKQogCiAgICAgICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAw
OyBpIDwgbnVtSm9iczsgKytpKSB7CiAgICAgICAgICAgICAgICAgRmlsbFJlZ2lvblBhcmFtZXRl
cnMmIHBhcmFtcyA9IHBhcmFsbGVsSm9icy5wYXJhbWV0ZXIoaSk7Ci0gICAgICAgICAgICAgICAg
cGFyYW1zLmZpbHRlciA9IHRoaXM7CisgICAgICAgICAgICAgICAgcGFyYW1zLmZpbHRlciA9ICZm
aWx0ZXI7CisgICAgICAgICAgICAgICAgcGFyYW1zLmVmZmVjdCA9IHRoaXM7CiAgICAgICAgICAg
ICAgICAgcGFyYW1zLnBpeGVsQXJyYXkgPSAmZGVzdGluYXRpb25QaXhlbEFycmF5OwogICAgICAg
ICAgICAgICAgIHBhcmFtcy5wYWludGluZ0RhdGEgPSAmcGFpbnRpbmdEYXRhOwogICAgICAgICAg
ICAgICAgIHBhcmFtcy5zdGl0Y2hEYXRhID0gc3RpdGNoRGF0YTsKQEAgLTQ1NSw3ICs0NTYsNyBA
QCB2b2lkIEZFVHVyYnVsZW5jZTo6cGxhdGZvcm1BcHBseVNvZnR3YXJlKCkKICAgICB9CiAKICAg
ICAvLyBGYWxsYmFjayB0byBzaW5nbGUgdGhyZWFkZWQgbW9kZSBpZiB0aGVyZSBpcyBubyByb29t
IGZvciBhIG5ldyB0aHJlYWQgb3IgdGhlIHBhaW50IGFyZWEgaXMgdG9vIHNtYWxsLgotICAgIGZp
bGxSZWdpb24oZGVzdGluYXRpb25QaXhlbEFycmF5LCBwYWludGluZ0RhdGEsIHN0aXRjaERhdGEs
IDAsIGhlaWdodCk7CisgICAgZmlsbFJlZ2lvbihmaWx0ZXIsIGRlc3RpbmF0aW9uUGl4ZWxBcnJh
eSwgcGFpbnRpbmdEYXRhLCBzdGl0Y2hEYXRhLCAwLCBoZWlnaHQpOwogfQogCiBzdGF0aWMgVGV4
dFN0cmVhbSYgb3BlcmF0b3I8PChUZXh0U3RyZWFtJiB0cywgVHVyYnVsZW5jZVR5cGUgdHlwZSkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVU
dXJidWxlbmNlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZF
VHVyYnVsZW5jZS5oCmluZGV4IDJkYTAyOGI0NjkzZmFlNjMxNzk2ZGQzZDMyODU4ZTMzNTIwYTEz
MzEuLmQyNDI2ZDM5NWRkYmM5Yjc1ZDFhOGY3ZTAzOWVjMjkzNGFkNWFhZjEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVUdXJidWxlbmNlLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRVR1cmJ1bGVu
Y2UuaApAQCAtMjYsNyArMjYsNiBAQAogCiAjaW5jbHVkZSAiQ29sb3JDb21wb25lbnRzLmgiCiAj
aW5jbHVkZSAiRmlsdGVyRWZmZWN0LmgiCi0jaW5jbHVkZSAiRmlsdGVyLmgiCiAKIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIApAQCAtMzgsNyArMzcsNyBAQCBlbnVtIGNsYXNzIFR1cmJ1bGVuY2VUeXBl
IHsKIAogY2xhc3MgRkVUdXJidWxlbmNlIDogcHVibGljIEZpbHRlckVmZmVjdCB7CiBwdWJsaWM6
Ci0gICAgc3RhdGljIFJlZjxGRVR1cmJ1bGVuY2U+IGNyZWF0ZShGaWx0ZXImLCBUdXJidWxlbmNl
VHlwZSwgZmxvYXQsIGZsb2F0LCBpbnQsIGZsb2F0LCBib29sKTsKKyAgICBzdGF0aWMgUmVmPEZF
VHVyYnVsZW5jZT4gY3JlYXRlKFR1cmJ1bGVuY2VUeXBlLCBmbG9hdCBiYXNlRnJlcXVlbmN5WCwg
ZmxvYXQgYmFzZUZyZXF1ZW5jeVksIGludCBudW1PY3RhdmVzLCBmbG9hdCBzZWVkLCBib29sIHN0
aXRjaFRpbGVzKTsKIAogICAgIFR1cmJ1bGVuY2VUeXBlIHR5cGUoKSBjb25zdCB7IHJldHVybiBt
X3R5cGU7IH0KICAgICBib29sIHNldFR5cGUoVHVyYnVsZW5jZVR5cGUpOwpAQCAtOTMsNyArOTIs
OCBAQCBwcml2YXRlOgogICAgIH07CiAKICAgICBzdHJ1Y3QgRmlsbFJlZ2lvblBhcmFtZXRlcnMg
ewotICAgICAgICBGRVR1cmJ1bGVuY2UqIGZpbHRlcjsKKyAgICAgICAgY29uc3QgRmlsdGVyKiBm
aWx0ZXI7CisgICAgICAgIEZFVHVyYnVsZW5jZSogZWZmZWN0OwogICAgICAgICBVaW50OENsYW1w
ZWRBcnJheSogcGl4ZWxBcnJheTsKICAgICAgICAgUGFpbnRpbmdEYXRhKiBwYWludGluZ0RhdGE7
CiAgICAgICAgIFN0aXRjaERhdGEgc3RpdGNoRGF0YTsKQEAgLTEwMywxNyArMTAzLDE3IEBAIHBy
aXZhdGU6CiAKICAgICBzdGF0aWMgdm9pZCBmaWxsUmVnaW9uV29ya2VyKEZpbGxSZWdpb25QYXJh
bWV0ZXJzKik7CiAKLSAgICBGRVR1cmJ1bGVuY2UoRmlsdGVyJiwgVHVyYnVsZW5jZVR5cGUsIGZs
b2F0LCBmbG9hdCwgaW50LCBmbG9hdCwgYm9vbCk7CisgICAgRkVUdXJidWxlbmNlKFR1cmJ1bGVu
Y2VUeXBlLCBmbG9hdCBiYXNlRnJlcXVlbmN5WCwgZmxvYXQgYmFzZUZyZXF1ZW5jeVksIGludCBu
dW1PY3RhdmVzLCBmbG9hdCBzZWVkLCBib29sIHN0aXRjaFRpbGVzKTsKIAotICAgIHZvaWQgcGxh
dGZvcm1BcHBseVNvZnR3YXJlKCkgb3ZlcnJpZGU7Ci0gICAgdm9pZCBkZXRlcm1pbmVBYnNvbHV0
ZVBhaW50UmVjdCgpIG92ZXJyaWRlIHsgc2V0QWJzb2x1dGVQYWludFJlY3QoZW5jbG9zaW5nSW50
UmVjdChtYXhFZmZlY3RSZWN0KCkpKTsgfQorICAgIHZvaWQgZGV0ZXJtaW5lQWJzb2x1dGVQYWlu
dFJlY3QoY29uc3QgRmlsdGVyJikgb3ZlcnJpZGUgeyBzZXRBYnNvbHV0ZVBhaW50UmVjdChlbmNs
b3NpbmdJbnRSZWN0KG1heEVmZmVjdFJlY3QoKSkpOyB9CisgICAgdm9pZCBwbGF0Zm9ybUFwcGx5
U29mdHdhcmUoY29uc3QgRmlsdGVyJikgb3ZlcnJpZGU7CiAgICAgV1RGOjpUZXh0U3RyZWFtJiBl
eHRlcm5hbFJlcHJlc2VudGF0aW9uKFdURjo6VGV4dFN0cmVhbSYsIFJlcHJlc2VudGF0aW9uVHlw
ZSkgY29uc3Qgb3ZlcnJpZGU7CiAKICAgICB2b2lkIGluaXRQYWludChQYWludGluZ0RhdGEmKTsK
ICAgICBTdGl0Y2hEYXRhIGNvbXB1dGVTdGl0Y2hpbmcoSW50U2l6ZSB0aWxlU2l6ZSwgZmxvYXQm
IGJhc2VGcmVxdWVuY3lYLCBmbG9hdCYgYmFzZUZyZXF1ZW5jeVkpIGNvbnN0OwogICAgIENvbG9y
Q29tcG9uZW50czxmbG9hdCwgND4gbm9pc2UyRChjb25zdCBQYWludGluZ0RhdGEmLCBjb25zdCBT
dGl0Y2hEYXRhJiwgY29uc3QgRmxvYXRQb2ludCYpIGNvbnN0OwogICAgIENvbG9yQ29tcG9uZW50
czx1aW50OF90LCA0PiBjYWxjdWxhdGVUdXJidWxlbmNlVmFsdWVGb3JQb2ludChjb25zdCBQYWlu
dGluZ0RhdGEmLCBTdGl0Y2hEYXRhLCBjb25zdCBGbG9hdFBvaW50JikgY29uc3Q7Ci0gICAgdm9p
ZCBmaWxsUmVnaW9uKFVpbnQ4Q2xhbXBlZEFycmF5JiwgY29uc3QgUGFpbnRpbmdEYXRhJiwgU3Rp
dGNoRGF0YSwgaW50IHN0YXJ0WSwgaW50IGVuZFkpIGNvbnN0OworICAgIHZvaWQgZmlsbFJlZ2lv
bihjb25zdCBGaWx0ZXImLCBVaW50OENsYW1wZWRBcnJheSYsIGNvbnN0IFBhaW50aW5nRGF0YSYs
IFN0aXRjaERhdGEsIGludCBzdGFydFksIGludCBlbmRZKSBjb25zdDsKIAogICAgIHN0YXRpYyB2
b2lkIGZpbGxSZWdpb25Xb3JrZXIodm9pZCopOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZpbHRlci5oIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GaWx0ZXIuaAppbmRleCAxMjFhYWQ1Y2NhODM4MGQ3M2I5
YWQyNjM2MDE1NWEyMTk0MjY2M2M3Li40ZWM1Y2ZhYzljMzA0MGEyZmY1YTI3ZmRhYmExYzNiMGQx
ODlhZGYyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0
ZXJzL0ZpbHRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRl
cnMvRmlsdGVyLmgKQEAgLTQzLDggKzQzLDkgQEAgcHVibGljOgogICAgIHZvaWQgc2V0RmlsdGVy
UmVnaW9uKGNvbnN0IEZsb2F0UmVjdCYgZmlsdGVyUmVnaW9uKSB7IG1fZmlsdGVyUmVnaW9uID0g
ZmlsdGVyUmVnaW9uOyB9CiAKICAgICB2aXJ0dWFsIEZsb2F0U2l6ZSBzY2FsZWRCeUZpbHRlclNj
YWxlKEZsb2F0U2l6ZSBzaXplKSBjb25zdCB7IHJldHVybiBzaXplICogbV9maWx0ZXJTY2FsZTsg
fQorICAgIHZpcnR1YWwgdm9pZCBhcHBseSgpID0gMDsKIAotICAgIEltYWdlQnVmZmVyKiBzb3Vy
Y2VJbWFnZSgpIHsgcmV0dXJuIG1fc291cmNlSW1hZ2UuZ2V0KCk7IH0KKyAgICBJbWFnZUJ1ZmZl
ciogc291cmNlSW1hZ2UoKSBjb25zdCB7IHJldHVybiBtX3NvdXJjZUltYWdlLmdldCgpOyB9CiAg
ICAgdm9pZCBzZXRTb3VyY2VJbWFnZShSZWZQdHI8SW1hZ2VCdWZmZXI+JiYgc291cmNlSW1hZ2Up
IHsgbV9zb3VyY2VJbWFnZSA9IFdURk1vdmUoc291cmNlSW1hZ2UpOyB9CiAKICAgICBSZW5kZXJp
bmdNb2RlIHJlbmRlcmluZ01vZGUoKSBjb25zdCB7IHJldHVybiBtX3JlbmRlcmluZ01vZGU7IH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRmls
dGVyRWZmZWN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMv
RmlsdGVyRWZmZWN0LmNwcAppbmRleCA2ZWZmYzhmMTdkZmJjNjU0ZDVlM2QyNzFkOTA2MzA0ZmMz
NWQ2ZmZkLi40MGZlZDExMTgxMzc2ZmExODkyNTc5MGE4NDdjOGZkNmVmMDZlZDM4IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZpbHRlckVmZmVj
dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GaWx0
ZXJFZmZlY3QuY3BwCkBAIC00NSwxMyArNDUsMTIgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewog
Ci1GaWx0ZXJFZmZlY3Q6OkZpbHRlckVmZmVjdChGaWx0ZXImIGZpbHRlciwgRmlsdGVyRWZmZWN0
OjpUeXBlIHR5cGUpCitGaWx0ZXJFZmZlY3Q6OkZpbHRlckVmZmVjdChGaWx0ZXJFZmZlY3Q6OlR5
cGUgdHlwZSkKICAgICA6IEZpbHRlckZ1bmN0aW9uKHR5cGUpCi0gICAgLCBtX2ZpbHRlcihmaWx0
ZXIpCiB7CiB9CiAKLXZvaWQgRmlsdGVyRWZmZWN0OjpkZXRlcm1pbmVBYnNvbHV0ZVBhaW50UmVj
dCgpCit2b2lkIEZpbHRlckVmZmVjdDo6ZGV0ZXJtaW5lQWJzb2x1dGVQYWludFJlY3QoY29uc3Qg
RmlsdGVyJikKIHsKICAgICBtX2Fic29sdXRlUGFpbnRSZWN0ID0gSW50UmVjdCgpOwogICAgIGZv
ciAoYXV0byYgZWZmZWN0IDogbV9pbnB1dEVmZmVjdHMpCkBAIC05NCwyMiArOTMsMjIgQEAgRmxv
YXRSZWN0IEZpbHRlckVmZmVjdDo6ZHJhd2luZ1JlZ2lvbk9mSW5wdXRJbWFnZShjb25zdCBJbnRS
ZWN0JiBzcmNSZWN0KSBjb25zdAogICAgIHJldHVybiB0cmFuc2Zvcm0ubWFwUmVjdChzcmNSZWN0
KTsKIH0KIAotRmxvYXRSZWN0IEZpbHRlckVmZmVjdDo6ZGV0ZXJtaW5lRmlsdGVyUHJpbWl0aXZl
U3VicmVnaW9uKCkKK0Zsb2F0UmVjdCBGaWx0ZXJFZmZlY3Q6OmRldGVybWluZUZpbHRlclByaW1p
dGl2ZVN1YnJlZ2lvbihjb25zdCBGaWx0ZXImIGZpbHRlcikKIHsKICAgICAvLyBGRVRpbGUsIEZF
VHVyYnVsZW5jZSwgRkVGbG9vZCBkb24ndCBoYXZlIGlucHV0IGVmZmVjdHMsIHRha2UgdGhlIGZp
bHRlciByZWdpb24gYXMgdW5pdGUgcmVjdC4KICAgICBGbG9hdFJlY3Qgc3VicmVnaW9uOwogICAg
IGlmICh1bnNpZ25lZCBudW1iZXJPZklucHV0RWZmZWN0cyA9IGlucHV0RWZmZWN0cygpLnNpemUo
KSkgewotICAgICAgICBzdWJyZWdpb24gPSBpbnB1dEVmZmVjdCgwKS0+ZGV0ZXJtaW5lRmlsdGVy
UHJpbWl0aXZlU3VicmVnaW9uKCk7CisgICAgICAgIHN1YnJlZ2lvbiA9IGlucHV0RWZmZWN0KDAp
LT5kZXRlcm1pbmVGaWx0ZXJQcmltaXRpdmVTdWJyZWdpb24oZmlsdGVyKTsKICAgICAgICAgZm9y
ICh1bnNpZ25lZCBpID0gMTsgaSA8IG51bWJlck9mSW5wdXRFZmZlY3RzOyArK2kpIHsKLSAgICAg
ICAgICAgIGF1dG8gaW5wdXRQcmltaXRpdmVTdWJyZWdpb24gPSBpbnB1dEVmZmVjdChpKS0+ZGV0
ZXJtaW5lRmlsdGVyUHJpbWl0aXZlU3VicmVnaW9uKCk7CisgICAgICAgICAgICBhdXRvIGlucHV0
UHJpbWl0aXZlU3VicmVnaW9uID0gaW5wdXRFZmZlY3QoaSktPmRldGVybWluZUZpbHRlclByaW1p
dGl2ZVN1YnJlZ2lvbihmaWx0ZXIpOwogICAgICAgICAgICAgc3VicmVnaW9uLnVuaXRlKGlucHV0
UHJpbWl0aXZlU3VicmVnaW9uKTsKICAgICAgICAgfQogICAgIH0gZWxzZQotICAgICAgICBzdWJy
ZWdpb24gPSBtX2ZpbHRlci5maWx0ZXJSZWdpb24oKTsKKyAgICAgICAgc3VicmVnaW9uID0gZmls
dGVyLmZpbHRlclJlZ2lvbigpOwogCiAgICAgLy8gQWZ0ZXIgY2FsbGluZyBkZXRlcm1pbmVGaWx0
ZXJQcmltaXRpdmVTdWJyZWdpb24gb24gdGhlIHRhcmdldCBlZmZlY3QsIHJlc2V0IHRoZSBzdWJy
ZWdpb24gYWdhaW4gZm9yIDxmZVRpbGU+LgogICAgIGlmIChmaWx0ZXJUeXBlKCkgPT0gRmlsdGVy
RWZmZWN0OjpUeXBlOjpGRVRpbGUpCi0gICAgICAgIHN1YnJlZ2lvbiA9IG1fZmlsdGVyLmZpbHRl
clJlZ2lvbigpOworICAgICAgICBzdWJyZWdpb24gPSBmaWx0ZXIuZmlsdGVyUmVnaW9uKCk7CiAK
ICAgICBhdXRvIGJvdW5kYXJpZXMgPSBlZmZlY3RCb3VuZGFyaWVzKCk7CiAgICAgaWYgKGhhc1go
KSkKQEAgLTEyNCwxMyArMTIzLDEzIEBAIEZsb2F0UmVjdCBGaWx0ZXJFZmZlY3Q6OmRldGVybWlu
ZUZpbHRlclByaW1pdGl2ZVN1YnJlZ2lvbigpCiAgICAgc2V0RmlsdGVyUHJpbWl0aXZlU3VicmVn
aW9uKHN1YnJlZ2lvbik7CiAKICAgICBhdXRvIGFic29sdXRlU3VicmVnaW9uID0gc3VicmVnaW9u
OwotICAgIGFic29sdXRlU3VicmVnaW9uLnNjYWxlKG1fZmlsdGVyLmZpbHRlclNjYWxlKCkpOwor
ICAgIGFic29sdXRlU3VicmVnaW9uLnNjYWxlKGZpbHRlci5maWx0ZXJTY2FsZSgpKTsKICAgICAv
LyBTYXZlIHRoaXMgYmVmb3JlIGNsaXBwaW5nIHNvIHdlIGNhbiB1c2UgaXQgdG8gbWFwIGxpZ2h0
aW5nIHBvaW50cyBmcm9tIHVzZXIgc3BhY2UgdG8gYnVmZmVyIGNvb3JkaW5hdGVzLgogICAgIHNl
dFVuY2xpcHBlZEFic29sdXRlU3VicmVnaW9uKGFic29sdXRlU3VicmVnaW9uKTsKIAogICAgIC8v
IENsaXAgZXZlcnkgZmlsdGVyIGVmZmVjdCB0byB0aGUgZmlsdGVyIHJlZ2lvbi4KLSAgICBhdXRv
IGFic29sdXRlU2NhbGVkRmlsdGVyUmVnaW9uID0gbV9maWx0ZXIuZmlsdGVyUmVnaW9uKCk7Ci0g
ICAgYWJzb2x1dGVTY2FsZWRGaWx0ZXJSZWdpb24uc2NhbGUobV9maWx0ZXIuZmlsdGVyU2NhbGUo
KSk7CisgICAgYXV0byBhYnNvbHV0ZVNjYWxlZEZpbHRlclJlZ2lvbiA9IGZpbHRlci5maWx0ZXJS
ZWdpb24oKTsKKyAgICBhYnNvbHV0ZVNjYWxlZEZpbHRlclJlZ2lvbi5zY2FsZShmaWx0ZXIuZmls
dGVyU2NhbGUoKSk7CiAgICAgYWJzb2x1dGVTdWJyZWdpb24uaW50ZXJzZWN0KGFic29sdXRlU2Nh
bGVkRmlsdGVyUmVnaW9uKTsKIAogICAgIHNldE1heEVmZmVjdFJlY3QoYWJzb2x1dGVTdWJyZWdp
b24pOwpAQCAtMTQzLDE0ICsxNDIsMTQgQEAgRmlsdGVyRWZmZWN0KiBGaWx0ZXJFZmZlY3Q6Omlu
cHV0RWZmZWN0KHVuc2lnbmVkIG51bWJlcikgY29uc3QKICAgICByZXR1cm4gbV9pbnB1dEVmZmVj
dHMuYXQobnVtYmVyKS5nZXQoKTsKIH0KIAotdm9pZCBGaWx0ZXJFZmZlY3Q6OmFwcGx5KCkKK3Zv
aWQgRmlsdGVyRWZmZWN0OjphcHBseShjb25zdCBGaWx0ZXImIGZpbHRlcikKIHsKICAgICBpZiAo
aGFzUmVzdWx0KCkpCiAgICAgICAgIHJldHVybjsKICAgICB1bnNpZ25lZCBzaXplID0gbV9pbnB1
dEVmZmVjdHMuc2l6ZSgpOwogICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBzaXplOyArK2kp
IHsKICAgICAgICAgRmlsdGVyRWZmZWN0KiBpbiA9IG1faW5wdXRFZmZlY3RzLmF0KGkpLmdldCgp
OwotICAgICAgICBpbi0+YXBwbHkoKTsKKyAgICAgICAgaW4tPmFwcGx5KGZpbHRlcik7CiAgICAg
ICAgIGlmICghaW4tPmhhc1Jlc3VsdCgpKQogICAgICAgICAgICAgcmV0dXJuOwogCkBAIC0xNTgs
MTAgKzE1NywxMCBAQCB2b2lkIEZpbHRlckVmZmVjdDo6YXBwbHkoKQogICAgICAgICB0cmFuc2Zv
cm1SZXN1bHRDb2xvclNwYWNlKGluLCBpKTsKICAgICB9CiAKLSAgICBkZXRlcm1pbmVBYnNvbHV0
ZVBhaW50UmVjdCgpOworICAgIGRldGVybWluZUFic29sdXRlUGFpbnRSZWN0KGZpbHRlcik7CiAg
ICAgc2V0UmVzdWx0Q29sb3JTcGFjZShtX29wZXJhdGluZ0NvbG9yU3BhY2UpOwogCi0gICAgTE9H
X1dJVEhfU1RSRUFNKEZpbHRlcnMsIHN0cmVhbSA8PCAiRmlsdGVyRWZmZWN0ICIgPDwgZmlsdGVy
TmFtZSgpIDw8ICIgIiA8PCB0aGlzIDw8ICIgYXBwbHkoKTpcbiAgZmlsdGVyUHJpbWl0aXZlU3Vi
cmVnaW9uICIgPDwgbV9maWx0ZXJQcmltaXRpdmVTdWJyZWdpb24gPDwgIlxuICBlZmZlY3RCb3Vu
ZGFyaWVzICIgPDwgbV9lZmZlY3RCb3VuZGFyaWVzIDw8ICJcbiAgYWJzb2x1dGVVbmNsaXBwZWRT
dWJyZWdpb24gIiA8PCBtX2Fic29sdXRlVW5jbGlwcGVkU3VicmVnaW9uIDw8ICJcbiAgYWJzb2x1
dGVQYWludFJlY3QgIiA8PCBtX2Fic29sdXRlUGFpbnRSZWN0IDw8ICJcbiAgbWF4RWZmZWN0UmVj
dCAiIDw8IG1fbWF4RWZmZWN0UmVjdCA8PCAiXG4gIGZpbHRlciBzY2FsZSAiIDw8IG1fZmlsdGVy
LmZpbHRlclNjYWxlKCkpOworICAgIExPR19XSVRIX1NUUkVBTShGaWx0ZXJzLCBzdHJlYW0gPDwg
IkZpbHRlckVmZmVjdCAiIDw8IGZpbHRlck5hbWUoKSA8PCAiICIgPDwgdGhpcyA8PCAiIGFwcGx5
KCk6XG4gIGZpbHRlclByaW1pdGl2ZVN1YnJlZ2lvbiAiIDw8IG1fZmlsdGVyUHJpbWl0aXZlU3Vi
cmVnaW9uIDw8ICJcbiAgZWZmZWN0Qm91bmRhcmllcyAiIDw8IG1fZWZmZWN0Qm91bmRhcmllcyA8
PCAiXG4gIGFic29sdXRlVW5jbGlwcGVkU3VicmVnaW9uICIgPDwgbV9hYnNvbHV0ZVVuY2xpcHBl
ZFN1YnJlZ2lvbiA8PCAiXG4gIGFic29sdXRlUGFpbnRSZWN0ICIgPDwgbV9hYnNvbHV0ZVBhaW50
UmVjdCA8PCAiXG4gIG1heEVmZmVjdFJlY3QgIiA8PCBtX21heEVmZmVjdFJlY3QgPDwgIlxuICBm
aWx0ZXIgc2NhbGUgIiA8PCBmaWx0ZXIuZmlsdGVyU2NhbGUoKSk7CiAKICAgICBpZiAobV9hYnNv
bHV0ZVBhaW50UmVjdC5pc0VtcHR5KCkgfHwgSW1hZ2VCdWZmZXI6OnNpemVOZWVkc0NsYW1waW5n
KG1fYWJzb2x1dGVQYWludFJlY3Quc2l6ZSgpKSkKICAgICAgICAgcmV0dXJuOwpAQCAtMTcyLDcg
KzE3MSw3IEBAIHZvaWQgRmlsdGVyRWZmZWN0OjphcHBseSgpCiAgICAgfQogICAgIAogICAgIC8v
IEFkZCBwbGF0Zm9ybSBzcGVjaWZpYyBhcHBseSBmdW5jdGlvbnMgaGVyZSBhbmQgcmV0dXJuIGVh
cmxpZXIuCi0gICAgcGxhdGZvcm1BcHBseVNvZnR3YXJlKCk7CisgICAgcGxhdGZvcm1BcHBseVNv
ZnR3YXJlKGZpbHRlcik7CiB9CiAKIHZvaWQgRmlsdGVyRWZmZWN0Ojpmb3JjZVZhbGlkUHJlTXVs
dGlwbGllZFBpeGVscygpCkBAIC0yNTMsNyArMjUyLDcgQEAgSW1hZ2VCdWZmZXIqIEZpbHRlckVm
ZmVjdDo6aW1hZ2VCdWZmZXJSZXN1bHQoKQogICAgIGlmIChtX2ltYWdlQnVmZmVyUmVzdWx0KQog
ICAgICAgICByZXR1cm4gbV9pbWFnZUJ1ZmZlclJlc3VsdC5nZXQoKTsKIAotICAgIG1faW1hZ2VC
dWZmZXJSZXN1bHQgPSBJbWFnZUJ1ZmZlcjo6Y3JlYXRlKG1fYWJzb2x1dGVQYWludFJlY3Quc2l6
ZSgpLCBtX2ZpbHRlci5yZW5kZXJpbmdNb2RlKCksIDEsIG1fcmVzdWx0Q29sb3JTcGFjZSwgUGl4
ZWxGb3JtYXQ6OkJHUkE4KTsKKyAgICBtX2ltYWdlQnVmZmVyUmVzdWx0ID0gSW1hZ2VCdWZmZXI6
OmNyZWF0ZShtX2Fic29sdXRlUGFpbnRSZWN0LnNpemUoKSwgUmVuZGVyaW5nTW9kZTo6VW5hY2Nl
bGVyYXRlZCwgMSwgbV9yZXN1bHRDb2xvclNwYWNlLCBQaXhlbEZvcm1hdDo6QkdSQTgpOwogICAg
IGlmICghbV9pbWFnZUJ1ZmZlclJlc3VsdCkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKQEAg
LTQyMiw3ICs0MjEsNyBAQCBzdGQ6Om9wdGlvbmFsPFBpeGVsQnVmZmVyPiBGaWx0ZXJFZmZlY3Q6
OmNvbnZlcnRQaXhlbEJ1ZmZlclRvQ29sb3JTcGFjZShjb25zdCBEZQogICAgIEludFJlY3QgZGVz
dGluYXRpb25SZWN0KEludFBvaW50KCksIHBpeGVsQnVmZmVyLnNpemUoKSk7CiAgICAgRmxvYXRT
aXplIGNsYW1wZWRTaXplID0gSW1hZ2VCdWZmZXI6OmNsYW1wZWRTaXplKGRlc3RpbmF0aW9uUmVj
dC5zaXplKCkpOwogICAgIC8vIENyZWF0ZSBhbiBJbWFnZUJ1ZmZlciB0byBzdG9yZSBpbmNvbWlu
ZyBQaXhlbEJ1ZmZlcgotICAgIGF1dG8gYnVmZmVyID0gSW1hZ2VCdWZmZXI6OmNyZWF0ZShjbGFt
cGVkU2l6ZSwgbV9maWx0ZXIucmVuZGVyaW5nTW9kZSgpLCAxLCBvcGVyYXRpbmdDb2xvclNwYWNl
KCksIFBpeGVsRm9ybWF0OjpCR1JBOCk7CisgICAgYXV0byBidWZmZXIgPSBJbWFnZUJ1ZmZlcjo6
Y3JlYXRlKGNsYW1wZWRTaXplLCBSZW5kZXJpbmdNb2RlOjpVbmFjY2VsZXJhdGVkLCAxLCBvcGVy
YXRpbmdDb2xvclNwYWNlKCksIFBpeGVsRm9ybWF0OjpCR1JBOCk7CiAgICAgaWYgKCFidWZmZXIp
CiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgYnVmZmVyLT5wdXRQaXhlbEJ1ZmZl
cihwaXhlbEJ1ZmZlciwgZGVzdGluYXRpb25SZWN0KTsKQEAgLTQzNiw3ICs0MzUsNyBAQCBzdGQ6
Om9wdGlvbmFsPFBpeGVsQnVmZmVyPiBGaWx0ZXJFZmZlY3Q6OmNvbnZlcnRJbWFnZUJ1ZmZlclRv
Q29sb3JTcGFjZShjb25zdCBEZQogICAgIEZsb2F0U2l6ZSBjbGFtcGVkU2l6ZSA9IEltYWdlQnVm
ZmVyOjpjbGFtcGVkU2l6ZShyZWN0LnNpemUoKSk7CiAKICAgICAvLyBDcmVhdGUgYW4gSW1hZ2VC
dWZmZXIgd2l0aCB0aGUgY29ycmVjdCBjb2xvciBzcGFjZSBhbmQgdXRpbGl6ZSBDRyB0byBoYW5k
bGUgY29sb3Igc3BhY2UgY29udmVyc2lvbgotICAgIGF1dG8gY29udmVydGVkQnVmZmVyID0gSW1h
Z2VCdWZmZXI6OmNyZWF0ZShjbGFtcGVkU2l6ZSwgbV9maWx0ZXIucmVuZGVyaW5nTW9kZSgpLCAx
LCB0YXJnZXRDb2xvclNwYWNlLCBQaXhlbEZvcm1hdDo6QkdSQTgpOworICAgIGF1dG8gY29udmVy
dGVkQnVmZmVyID0gSW1hZ2VCdWZmZXI6OmNyZWF0ZShjbGFtcGVkU2l6ZSwgUmVuZGVyaW5nTW9k
ZTo6VW5hY2NlbGVyYXRlZCwgMSwgdGFyZ2V0Q29sb3JTcGFjZSwgUGl4ZWxGb3JtYXQ6OkJHUkE4
KTsKICAgICBpZiAoIWNvbnZlcnRlZEJ1ZmZlcikKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9w
dDsKIApAQCAtNTUzLDcgKzU1Miw3IEBAIEltYWdlQnVmZmVyKiBGaWx0ZXJFZmZlY3Q6OmNyZWF0
ZUltYWdlQnVmZmVyUmVzdWx0KCkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKICAgICBGbG9h
dFNpemUgY2xhbXBlZFNpemUgPSBJbWFnZUJ1ZmZlcjo6Y2xhbXBlZFNpemUobV9hYnNvbHV0ZVBh
aW50UmVjdC5zaXplKCkpOwotICAgIG1faW1hZ2VCdWZmZXJSZXN1bHQgPSBJbWFnZUJ1ZmZlcjo6
Y3JlYXRlKGNsYW1wZWRTaXplLCBtX2ZpbHRlci5yZW5kZXJpbmdNb2RlKCksIDEsIG1fcmVzdWx0
Q29sb3JTcGFjZSwgUGl4ZWxGb3JtYXQ6OkJHUkE4KTsKKyAgICBtX2ltYWdlQnVmZmVyUmVzdWx0
ID0gSW1hZ2VCdWZmZXI6OmNyZWF0ZShjbGFtcGVkU2l6ZSwgUmVuZGVyaW5nTW9kZTo6VW5hY2Nl
bGVyYXRlZCwgMSwgbV9yZXN1bHRDb2xvclNwYWNlLCBQaXhlbEZvcm1hdDo6QkdSQTgpOwogICAg
IHJldHVybiBtX2ltYWdlQnVmZmVyUmVzdWx0LmdldCgpOwogfQogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZpbHRlckVmZmVjdC5oIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GaWx0ZXJFZmZlY3QuaAppbmRl
eCA2Njc2MDBkMzAyYzhmYzliNWE4ZjRmMWZjOGYwYzU2OWNiZTJhN2IyLi45MjhiY2I0OGNkMjE5
ZWIxZWU0NTI5N2I1OTc0YmI2M2UwOTdlOTVlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZpbHRlckVmZmVjdC5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRmlsdGVyRWZmZWN0LmgKQEAgLTcyLDcgKzcy
LDcgQEAgcHVibGljOgogICAgIEludFJlY3QgcmVxdWVzdGVkUmVnaW9uT2ZJbnB1dFBpeGVsQnVm
ZmVyKGNvbnN0IEludFJlY3QmKSBjb25zdDsKICAgICAKICAgICAvLyBSZWN1cnNlcyBvbiBpbnB1
dHMuCi0gICAgRmxvYXRSZWN0IGRldGVybWluZUZpbHRlclByaW1pdGl2ZVN1YnJlZ2lvbigpOwor
ICAgIEZsb2F0UmVjdCBkZXRlcm1pbmVGaWx0ZXJQcmltaXRpdmVTdWJyZWdpb24oY29uc3QgRmls
dGVyJik7CiAKICAgICAvLyBTb2xpZCBibGFjayBpbWFnZSB3aXRoIGRpZmZlcmVudCBhbHBoYSB2
YWx1ZXMuCiAgICAgYm9vbCBpc0FscGhhSW1hZ2UoKSBjb25zdCB7IHJldHVybiBtX2FscGhhSW1h
Z2U7IH0KQEAgLTg0LDE0ICs4NCwxNCBAQCBwdWJsaWM6CiAgICAgRmxvYXRSZWN0IG1heEVmZmVj
dFJlY3QoKSBjb25zdCB7IHJldHVybiBtX21heEVmZmVjdFJlY3Q7IH0KICAgICB2b2lkIHNldE1h
eEVmZmVjdFJlY3QoY29uc3QgRmxvYXRSZWN0JiBtYXhFZmZlY3RSZWN0KSB7IG1fbWF4RWZmZWN0
UmVjdCA9IG1heEVmZmVjdFJlY3Q7IH0KIAotICAgIHZvaWQgYXBwbHkoKTsKKyAgICB2b2lkIGFw
cGx5KGNvbnN0IEZpbHRlciYpOwogCiAgICAgLy8gQ29ycmVjdCBhbnkgaW52YWxpZCBwaXhlbHMs
IGlmIG5lY2Vzc2FyeSwgaW4gdGhlIHJlc3VsdCBvZiBhIGZpbHRlciBvcGVyYXRpb24uCiAgICAg
Ly8gVGhpcyBtZXRob2QgaXMgdXNlZCB0byBlbnN1cmUgdmFsaWQgcGl4ZWwgdmFsdWVzIG9uIGZp
bHRlciBpbnB1dHMgYW5kIHRoZSBmaW5hbCByZXN1bHQuCiAgICAgLy8gT25seSB0aGUgYXJpdGht
ZXRpYyBjb21wb3NpdGUgZmlsdGVyIGV2ZXIgbmVlZHMgdG8gcGVyZm9ybSBjb3JyZWN0aW9uLgog
ICAgIHZpcnR1YWwgdm9pZCBjb3JyZWN0RmlsdGVyUmVzdWx0SWZOZWVkZWQoKSB7IH0KIAotICAg
IHZpcnR1YWwgdm9pZCBkZXRlcm1pbmVBYnNvbHV0ZVBhaW50UmVjdCgpOworICAgIHZpcnR1YWwg
dm9pZCBkZXRlcm1pbmVBYnNvbHV0ZVBhaW50UmVjdChjb25zdCBGaWx0ZXImKTsKIAogICAgIGVu
dW0gY2xhc3MgUmVwcmVzZW50YXRpb25UeXBlIHsgVGVzdE91dHB1dCwgRGVidWdnaW5nIH07CiAg
ICAgdmlydHVhbCBXVEY6OlRleHRTdHJlYW0mIGV4dGVybmFsUmVwcmVzZW50YXRpb24oV1RGOjpU
ZXh0U3RyZWFtJiwgUmVwcmVzZW50YXRpb25UeXBlID0gUmVwcmVzZW50YXRpb25UeXBlOjpUZXN0
T3V0cHV0KSBjb25zdDsKQEAgLTEyMCw5ICsxMjAsNiBAQCBwdWJsaWM6CiAgICAgCiAgICAgRmxv
YXRQb2ludCBtYXBQb2ludEZyb21Vc2VyU3BhY2VUb0J1ZmZlcihGbG9hdFBvaW50KSBjb25zdDsK
ICAgICAKLSAgICBGaWx0ZXImIGZpbHRlcigpIHsgcmV0dXJuIG1fZmlsdGVyOyB9Ci0gICAgY29u
c3QgRmlsdGVyJiBmaWx0ZXIoKSBjb25zdCB7IHJldHVybiBtX2ZpbHRlcjsgfQotCiAgICAgYm9v
bCBjbGlwc1RvQm91bmRzKCkgY29uc3QgeyByZXR1cm4gbV9jbGlwc1RvQm91bmRzOyB9CiAgICAg
dm9pZCBzZXRDbGlwc1RvQm91bmRzKGJvb2wgdmFsdWUpIHsgbV9jbGlwc1RvQm91bmRzID0gdmFs
dWU7IH0KIApAQCAtMTQzLDcgKzE0MCw3IEBAIHB1YmxpYzoKICAgICB9CiAKIHByb3RlY3RlZDoK
LSAgICBGaWx0ZXJFZmZlY3QoRmlsdGVyJiwgVHlwZSk7CisgICAgRmlsdGVyRWZmZWN0KFR5cGUp
OwogICAgIAogICAgIEltYWdlQnVmZmVyKiBjcmVhdGVJbWFnZUJ1ZmZlclJlc3VsdCgpOwogICAg
IHN0ZDo6b3B0aW9uYWw8UGl4ZWxCdWZmZXI+JiBjcmVhdGVVbm11bHRpcGxpZWRJbWFnZVJlc3Vs
dCgpOwpAQCAtMTU5LDcgKzE1Niw3IEBAIHByb3RlY3RlZDoKICAgICB2b2lkIGNsaXBBYnNvbHV0
ZVBhaW50UmVjdCgpOwogCiBwcml2YXRlOgotICAgIHZpcnR1YWwgdm9pZCBwbGF0Zm9ybUFwcGx5
U29mdHdhcmUoKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHBsYXRmb3JtQXBwbHlTb2Z0d2FyZShj
b25zdCBGaWx0ZXImKSA9IDA7CiAKICAgICB2b2lkIGNvcHlJbWFnZUJ5dGVzKGNvbnN0IFVpbnQ4
Q2xhbXBlZEFycmF5JiBzb3VyY2UsIFVpbnQ4Q2xhbXBlZEFycmF5JiBkZXN0aW5hdGlvbiwgY29u
c3QgSW50UmVjdCYpIGNvbnN0OwogICAgIHZvaWQgY29weUNvbnZlcnRlZEltYWdlQnVmZmVyVG9E
ZXN0aW5hdGlvbihVaW50OENsYW1wZWRBcnJheSYsIGNvbnN0IERlc3RpbmF0aW9uQ29sb3JTcGFj
ZSYsIEFscGhhUHJlbXVsdGlwbGljYXRpb24sIGNvbnN0IEludFJlY3QmKTsKQEAgLTE2OCw4ICsx
NjUsNiBAQCBwcml2YXRlOgogICAgIHN0ZDo6b3B0aW9uYWw8UGl4ZWxCdWZmZXI+IGNvbnZlcnRJ
bWFnZUJ1ZmZlclRvQ29sb3JTcGFjZShjb25zdCBEZXN0aW5hdGlvbkNvbG9yU3BhY2UmLCBJbWFn
ZUJ1ZmZlciYsIGNvbnN0IEludFJlY3QmLCBBbHBoYVByZW11bHRpcGxpY2F0aW9uKTsKICAgICBz
dGQ6Om9wdGlvbmFsPFBpeGVsQnVmZmVyPiBjb252ZXJ0UGl4ZWxCdWZmZXJUb0NvbG9yU3BhY2Uo
Y29uc3QgRGVzdGluYXRpb25Db2xvclNwYWNlJiwgUGl4ZWxCdWZmZXImKTsKICAgICAKLQotICAg
IEZpbHRlciYgbV9maWx0ZXI7CiAgICAgRmlsdGVyRWZmZWN0VmVjdG9yIG1faW5wdXRFZmZlY3Rz
OwogCiAgICAgUmVmUHRyPEltYWdlQnVmZmVyPiBtX2ltYWdlQnVmZmVyUmVzdWx0OwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GaWx0ZXJFZmZl
Y3RSZW5kZXJlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9G
aWx0ZXJFZmZlY3RSZW5kZXJlci5oCmluZGV4IDU2YmUyNDczNjFmNTNiM2MwOWVjYjU3MTMyMmI3
NWE3NTczZTljYzQuLjU5Y2Y3ZGZlMzQzNjExZmIxYTZmMjY1MmY2NjBiNmMwYjgxOTA1N2IgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRmlsdGVy
RWZmZWN0UmVuZGVyZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9m
aWx0ZXJzL0ZpbHRlckVmZmVjdFJlbmRlcmVyLmgKQEAgLTM2LDcgKzM2LDcgQEAgY2xhc3MgRmls
dGVyRWZmZWN0UmVuZGVyZXIgewogICAgIAogcHVibGljOgogICAgIHN0YXRpYyBzdGQ6OnVuaXF1
ZV9wdHI8RmlsdGVyRWZmZWN0UmVuZGVyZXI+IHRyeUNyZWF0ZShib29sLCBGaWx0ZXJFZmZlY3Qm
KTsKLSAgICB2aXJ0dWFsIHZvaWQgYXBwbHlFZmZlY3RzKEZpbHRlckVmZmVjdCYpID0gMDsKKyAg
ICB2aXJ0dWFsIHZvaWQgYXBwbHlFZmZlY3RzKGNvbnN0IEZpbHRlciYsIEZpbHRlckVmZmVjdCYp
ID0gMDsKICAgICB2aXJ0dWFsIGJvb2wgaGFzUmVzdWx0KCkgY29uc3QgPSAwOwogICAgIHZpcnR1
YWwgSW1hZ2VCdWZmZXIqIG91dHB1dCgpIGNvbnN0ID0gMDsKICAgICB2aXJ0dWFsIEZsb2F0UmVj
dCBkZXN0UmVjdChjb25zdCBGaWx0ZXJFZmZlY3QmKSBjb25zdCA9IDA7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL1NvdXJjZUFscGhhLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvU291cmNlQWxwaGEuY3Bw
CmluZGV4IDk5Njk0MzcyNTc5M2U5OTY0NmZjM2U1YjIyYWQxNTFmYmRmZGU5Y2EuLmUxMDRhOGQy
MDg2MGVmODAyOWFmNzNhZTkxM2E5NDdlZTFjZTY4N2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvU291cmNlQWxwaGEuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvU291cmNlQWxwaGEuY3BwCkBAIC0z
MywxOSArMzMsMTkgQEAgUmVmPFNvdXJjZUFscGhhPiBTb3VyY2VBbHBoYTo6Y3JlYXRlKEZpbHRl
ckVmZmVjdCYgc291cmNlRWZmZWN0KQogfQogCiBTb3VyY2VBbHBoYTo6U291cmNlQWxwaGEoRmls
dGVyRWZmZWN0JiBzb3VyY2VFZmZlY3QpCi0gICAgOiBGaWx0ZXJFZmZlY3Qoc291cmNlRWZmZWN0
LmZpbHRlcigpLCBGaWx0ZXJFZmZlY3Q6OlR5cGU6OlNvdXJjZUFscGhhKQorICAgIDogRmlsdGVy
RWZmZWN0KEZpbHRlckVmZmVjdDo6VHlwZTo6U291cmNlQWxwaGEpCiB7CiAgICAgc2V0T3BlcmF0
aW5nQ29sb3JTcGFjZShzb3VyY2VFZmZlY3Qub3BlcmF0aW5nQ29sb3JTcGFjZSgpKTsKICAgICBp
bnB1dEVmZmVjdHMoKS5hcHBlbmQoJnNvdXJjZUVmZmVjdCk7CiB9CiAKLXZvaWQgU291cmNlQWxw
aGE6OmRldGVybWluZUFic29sdXRlUGFpbnRSZWN0KCkKK3ZvaWQgU291cmNlQWxwaGE6OmRldGVy
bWluZUFic29sdXRlUGFpbnRSZWN0KGNvbnN0IEZpbHRlciYgZmlsdGVyKQogewotICAgIGlucHV0
RWZmZWN0KDApLT5kZXRlcm1pbmVBYnNvbHV0ZVBhaW50UmVjdCgpOworICAgIGlucHV0RWZmZWN0
KDApLT5kZXRlcm1pbmVBYnNvbHV0ZVBhaW50UmVjdChmaWx0ZXIpOwogICAgIHNldEFic29sdXRl
UGFpbnRSZWN0KGlucHV0RWZmZWN0KDApLT5hYnNvbHV0ZVBhaW50UmVjdCgpKTsKIH0KIAotdm9p
ZCBTb3VyY2VBbHBoYTo6cGxhdGZvcm1BcHBseVNvZnR3YXJlKCkKK3ZvaWQgU291cmNlQWxwaGE6
OnBsYXRmb3JtQXBwbHlTb2Z0d2FyZShjb25zdCBGaWx0ZXImKQogewogICAgIEltYWdlQnVmZmVy
KiByZXN1bHRJbWFnZSA9IGNyZWF0ZUltYWdlQnVmZmVyUmVzdWx0KCk7CiAgICAgaWYgKCFyZXN1
bHRJbWFnZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Zp
bHRlcnMvU291cmNlQWxwaGEuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Zp
bHRlcnMvU291cmNlQWxwaGEuaAppbmRleCA0YmJkZTA3Zjc4ZTM1ZDI1YjRmNGQ0OWM2YjYyNWYx
ZTEwMmE1NDMyLi44ZGE2ZmZkYmQyMDFkNDY5MjE4ZjkzNzIwMTc5ODY2M2EwZjkzZmE0IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL1NvdXJjZUFs
cGhhLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9Tb3Vy
Y2VBbHBoYS5oCkBAIC0zMiw4ICszMiwxMCBAQCBwdWJsaWM6CiBwcml2YXRlOgogICAgIGV4cGxp
Y2l0IFNvdXJjZUFscGhhKEZpbHRlckVmZmVjdCYpOwogCi0gICAgdm9pZCBwbGF0Zm9ybUFwcGx5
U29mdHdhcmUoKSBvdmVycmlkZTsKLSAgICB2b2lkIGRldGVybWluZUFic29sdXRlUGFpbnRSZWN0
KCkgb3ZlcnJpZGU7CisgICAgdm9pZCBkZXRlcm1pbmVBYnNvbHV0ZVBhaW50UmVjdChjb25zdCBG
aWx0ZXImKSBvdmVycmlkZTsKKworICAgIHZvaWQgcGxhdGZvcm1BcHBseVNvZnR3YXJlKGNvbnN0
IEZpbHRlciYpIG92ZXJyaWRlOworCiAgICAgV1RGOjpUZXh0U3RyZWFtJiBleHRlcm5hbFJlcHJl
c2VudGF0aW9uKFdURjo6VGV4dFN0cmVhbSYsIFJlcHJlc2VudGF0aW9uVHlwZSkgY29uc3Qgb3Zl
cnJpZGU7CiB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9maWx0ZXJzL1NvdXJjZUdyYXBoaWMuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvZmlsdGVycy9Tb3VyY2VHcmFwaGljLmNwcAppbmRleCBlMTIzZGNkOGZmMjFkZGM3NzMz
ZTU3ZTUxNWVmMzExZTdjOTAxNTgwLi40YThhMjc0OGJkZTljMTM1OWU1OTQ1ZDgxMGU0YzBjYzY2
YjgwYjM1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0
ZXJzL1NvdXJjZUdyYXBoaWMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2ZpbHRlcnMvU291cmNlR3JhcGhpYy5jcHAKQEAgLTI2LDIyICsyNiwyNSBAQAogCiBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAKLVJlZjxTb3VyY2VHcmFwaGljPiBTb3VyY2VHcmFwaGljOjpjcmVh
dGUoRmlsdGVyJiBmaWx0ZXIpCitSZWY8U291cmNlR3JhcGhpYz4gU291cmNlR3JhcGhpYzo6Y3Jl
YXRlKCkKIHsKLSAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBTb3VyY2VHcmFwaGljKGZpbHRlcikp
OworICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFNvdXJjZUdyYXBoaWMoKSk7CiB9CiAKLXZvaWQg
U291cmNlR3JhcGhpYzo6ZGV0ZXJtaW5lQWJzb2x1dGVQYWludFJlY3QoKQorU291cmNlR3JhcGhp
Yzo6U291cmNlR3JhcGhpYygpCisgICAgOiBGaWx0ZXJFZmZlY3QoRmlsdGVyRWZmZWN0OjpUeXBl
OjpTb3VyY2VHcmFwaGljKQoreworICAgIHNldE9wZXJhdGluZ0NvbG9yU3BhY2UoRGVzdGluYXRp
b25Db2xvclNwYWNlOjpTUkdCKCkpOworfQorCit2b2lkIFNvdXJjZUdyYXBoaWM6OmRldGVybWlu
ZUFic29sdXRlUGFpbnRSZWN0KGNvbnN0IEZpbHRlciYgZmlsdGVyKQogewotICAgIEZpbHRlciYg
ZmlsdGVyID0gdGhpcy0+ZmlsdGVyKCk7CiAgICAgRmxvYXRSZWN0IHBhaW50UmVjdCA9IGZpbHRl
ci5zb3VyY2VJbWFnZVJlY3QoKTsKICAgICBzZXRBYnNvbHV0ZVBhaW50UmVjdChlbmNsb3NpbmdJ
bnRSZWN0KHBhaW50UmVjdCkpOwogfQogCi12b2lkIFNvdXJjZUdyYXBoaWM6OnBsYXRmb3JtQXBw
bHlTb2Z0d2FyZSgpCit2b2lkIFNvdXJjZUdyYXBoaWM6OnBsYXRmb3JtQXBwbHlTb2Z0d2FyZShj
b25zdCBGaWx0ZXImIGZpbHRlcikKIHsKLSAgICBGaWx0ZXImIGZpbHRlciA9IHRoaXMtPmZpbHRl
cigpOwotCiAgICAgSW1hZ2VCdWZmZXIqIHJlc3VsdEltYWdlID0gY3JlYXRlSW1hZ2VCdWZmZXJS
ZXN1bHQoKTsKICAgICBJbWFnZUJ1ZmZlciogc291cmNlSW1hZ2UgPSBmaWx0ZXIuc291cmNlSW1h
Z2UoKTsKICAgICBpZiAoIXJlc3VsdEltYWdlIHx8ICFzb3VyY2VJbWFnZSkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvU291cmNlR3JhcGhpYy5o
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9Tb3VyY2VHcmFwaGlj
LmgKaW5kZXggNWY4YmNlMWI0ODg2NzQ2NjFlMjljM2I4YTM5NmI3NThkYjQ2NDNhYi4uODcyMTBi
MmNmMTYyYTI2YjQ4YTFlMDQ5MjcyZTYyNmE0M2M2NGY3ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9Tb3VyY2VHcmFwaGljLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9Tb3VyY2VHcmFwaGljLmgKQEAg
LTI2LDE5ICsyNiwxNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIFNvdXJjZUdyYXBo
aWMgOiBwdWJsaWMgRmlsdGVyRWZmZWN0IHsKIHB1YmxpYzogICAgICAgIAotICAgIHN0YXRpYyBS
ZWY8U291cmNlR3JhcGhpYz4gY3JlYXRlKEZpbHRlciYpOworICAgIHN0YXRpYyBSZWY8U291cmNl
R3JhcGhpYz4gY3JlYXRlKCk7CiAKICAgICBzdGF0aWMgQXRvbVN0cmluZyBlZmZlY3ROYW1lKCkg
eyByZXR1cm4gRmlsdGVyRWZmZWN0Ojpzb3VyY2VHcmFwaGljTmFtZSgpOyB9CiAKIHByaXZhdGU6
Ci0gICAgU291cmNlR3JhcGhpYyhGaWx0ZXImIGZpbHRlcikKLSAgICAgICAgOiBGaWx0ZXJFZmZl
Y3QoZmlsdGVyLCBGaWx0ZXJFZmZlY3Q6OlR5cGU6OlNvdXJjZUdyYXBoaWMpCi0gICAgewotICAg
ICAgICBzZXRPcGVyYXRpbmdDb2xvclNwYWNlKERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQigp
KTsKLSAgICB9Ci0KLSAgICB2b2lkIGRldGVybWluZUFic29sdXRlUGFpbnRSZWN0KCkgb3ZlcnJp
ZGU7Ci0gICAgdm9pZCBwbGF0Zm9ybUFwcGx5U29mdHdhcmUoKSBvdmVycmlkZTsKKyAgICBTb3Vy
Y2VHcmFwaGljKCk7CisKKyAgICB2b2lkIGRldGVybWluZUFic29sdXRlUGFpbnRSZWN0KGNvbnN0
IEZpbHRlciYpIG92ZXJyaWRlOworCisgICAgdm9pZCBwbGF0Zm9ybUFwcGx5U29mdHdhcmUoY29u
c3QgRmlsdGVyJikgb3ZlcnJpZGU7CisKICAgICBXVEY6OlRleHRTdHJlYW0mIGV4dGVybmFsUmVw
cmVzZW50YXRpb24oV1RGOjpUZXh0U3RyZWFtJiwgUmVwcmVzZW50YXRpb25UeXBlKSBjb25zdCBv
dmVycmlkZTsKIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9DU1NG
aWx0ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0NTU0ZpbHRlci5jcHAKaW5kZXgg
ZjJkMTcxY2JjNjZmNzU5ZmIzMDZhMmUxOWFmNTQyNDFkYWY2MzIyZC4uY2I5ZjUzYjY0YWQwOWIy
MDhiNTdlNWNmZTQ0Mzk0MzJhMGE3NTMzZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL0NTU0ZpbHRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0NTU0Zp
bHRlci5jcHAKQEAgLTY0LDEzICs2NCwxMyBAQCBDU1NGaWx0ZXI6OkNTU0ZpbHRlcihib29sIGhh
c0ZpbHRlclRoYXRNb3Zlc1BpeGVscywgYm9vbCBoYXNGaWx0ZXJUaGF0U2hvdWxkQmVSZQogewog
fQogCi1zdGF0aWMgUmVmUHRyPEZpbHRlckVmZmVjdD4gY3JlYXRlQmx1ckVmZmVjdChDU1NGaWx0
ZXImIGZpbHRlciwgY29uc3QgQmx1ckZpbHRlck9wZXJhdGlvbiYgYmx1ck9wZXJhdGlvbiwgRmls
dGVyQ29uc3VtZXIgY29uc3VtZXIpCitzdGF0aWMgUmVmUHRyPEZpbHRlckVmZmVjdD4gY3JlYXRl
Qmx1ckVmZmVjdChjb25zdCBCbHVyRmlsdGVyT3BlcmF0aW9uJiBibHVyT3BlcmF0aW9uLCBGaWx0
ZXJDb25zdW1lciBjb25zdW1lcikKIHsKICAgICBmbG9hdCBzdGREZXZpYXRpb24gPSBmbG9hdFZh
bHVlRm9yTGVuZ3RoKGJsdXJPcGVyYXRpb24uc3RkRGV2aWF0aW9uKCksIDApOwotICAgIHJldHVy
biBGRUdhdXNzaWFuQmx1cjo6Y3JlYXRlKGZpbHRlciwgc3RkRGV2aWF0aW9uLCBzdGREZXZpYXRp
b24sIGNvbnN1bWVyID09IEZpbHRlckNvbnN1bWVyOjpGaWx0ZXJQcm9wZXJ0eSA/IEVER0VNT0RF
X05PTkUgOiBFREdFTU9ERV9EVVBMSUNBVEUpOworICAgIHJldHVybiBGRUdhdXNzaWFuQmx1cjo6
Y3JlYXRlKHN0ZERldmlhdGlvbiwgc3RkRGV2aWF0aW9uLCBjb25zdW1lciA9PSBGaWx0ZXJDb25z
dW1lcjo6RmlsdGVyUHJvcGVydHkgPyBFREdFTU9ERV9OT05FIDogRURHRU1PREVfRFVQTElDQVRF
KTsKIH0KIAotc3RhdGljIFJlZlB0cjxGaWx0ZXJFZmZlY3Q+IGNyZWF0ZUJyaWdodG5lc3NFZmZl
Y3QoQ1NTRmlsdGVyJiBmaWx0ZXIsIGNvbnN0IEJhc2ljQ29tcG9uZW50VHJhbnNmZXJGaWx0ZXJP
cGVyYXRpb24mIGNvbXBvbmVudFRyYW5zZmVyT3BlcmF0aW9uKQorc3RhdGljIFJlZlB0cjxGaWx0
ZXJFZmZlY3Q+IGNyZWF0ZUJyaWdodG5lc3NFZmZlY3QoY29uc3QgQmFzaWNDb21wb25lbnRUcmFu
c2ZlckZpbHRlck9wZXJhdGlvbiYgY29tcG9uZW50VHJhbnNmZXJPcGVyYXRpb24pCiB7CiAgICAg
Q29tcG9uZW50VHJhbnNmZXJGdW5jdGlvbiB0cmFuc2ZlckZ1bmN0aW9uOwogICAgIHRyYW5zZmVy
RnVuY3Rpb24udHlwZSA9IEZFQ09NUE9ORU5UVFJBTlNGRVJfVFlQRV9MSU5FQVI7CkBAIC03OCwx
MCArNzgsMTAgQEAgc3RhdGljIFJlZlB0cjxGaWx0ZXJFZmZlY3Q+IGNyZWF0ZUJyaWdodG5lc3NF
ZmZlY3QoQ1NTRmlsdGVyJiBmaWx0ZXIsIGNvbnN0IEJhc2kKICAgICB0cmFuc2ZlckZ1bmN0aW9u
LmludGVyY2VwdCA9IDA7CiAKICAgICBDb21wb25lbnRUcmFuc2ZlckZ1bmN0aW9uIG51bGxGdW5j
dGlvbjsKLSAgICByZXR1cm4gRkVDb21wb25lbnRUcmFuc2Zlcjo6Y3JlYXRlKGZpbHRlciwgdHJh
bnNmZXJGdW5jdGlvbiwgdHJhbnNmZXJGdW5jdGlvbiwgdHJhbnNmZXJGdW5jdGlvbiwgbnVsbEZ1
bmN0aW9uKTsKKyAgICByZXR1cm4gRkVDb21wb25lbnRUcmFuc2Zlcjo6Y3JlYXRlKHRyYW5zZmVy
RnVuY3Rpb24sIHRyYW5zZmVyRnVuY3Rpb24sIHRyYW5zZmVyRnVuY3Rpb24sIG51bGxGdW5jdGlv
bik7CiB9CiAKLXN0YXRpYyBSZWZQdHI8RmlsdGVyRWZmZWN0PiBjcmVhdGVDb250cmFzdEVmZmVj
dChDU1NGaWx0ZXImIGZpbHRlciwgY29uc3QgQmFzaWNDb21wb25lbnRUcmFuc2ZlckZpbHRlck9w
ZXJhdGlvbiYgY29tcG9uZW50VHJhbnNmZXJPcGVyYXRpb24pCitzdGF0aWMgUmVmUHRyPEZpbHRl
ckVmZmVjdD4gY3JlYXRlQ29udHJhc3RFZmZlY3QoY29uc3QgQmFzaWNDb21wb25lbnRUcmFuc2Zl
ckZpbHRlck9wZXJhdGlvbiYgY29tcG9uZW50VHJhbnNmZXJPcGVyYXRpb24pCiB7CiAgICAgQ29t
cG9uZW50VHJhbnNmZXJGdW5jdGlvbiB0cmFuc2ZlckZ1bmN0aW9uOwogICAgIHRyYW5zZmVyRnVu
Y3Rpb24udHlwZSA9IEZFQ09NUE9ORU5UVFJBTlNGRVJfVFlQRV9MSU5FQVI7CkBAIC05MCwxNiAr
OTAsMTYgQEAgc3RhdGljIFJlZlB0cjxGaWx0ZXJFZmZlY3Q+IGNyZWF0ZUNvbnRyYXN0RWZmZWN0
KENTU0ZpbHRlciYgZmlsdGVyLCBjb25zdCBCYXNpY0MKICAgICB0cmFuc2ZlckZ1bmN0aW9uLmlu
dGVyY2VwdCA9IC0wLjUgKiBhbW91bnQgKyAwLjU7CiAKICAgICBDb21wb25lbnRUcmFuc2ZlckZ1
bmN0aW9uIG51bGxGdW5jdGlvbjsKLSAgICByZXR1cm4gRkVDb21wb25lbnRUcmFuc2Zlcjo6Y3Jl
YXRlKGZpbHRlciwgdHJhbnNmZXJGdW5jdGlvbiwgdHJhbnNmZXJGdW5jdGlvbiwgdHJhbnNmZXJG
dW5jdGlvbiwgbnVsbEZ1bmN0aW9uKTsKKyAgICByZXR1cm4gRkVDb21wb25lbnRUcmFuc2Zlcjo6
Y3JlYXRlKHRyYW5zZmVyRnVuY3Rpb24sIHRyYW5zZmVyRnVuY3Rpb24sIHRyYW5zZmVyRnVuY3Rp
b24sIG51bGxGdW5jdGlvbik7CiB9CiAKLXN0YXRpYyBSZWZQdHI8RmlsdGVyRWZmZWN0PiBjcmVh
dGVEcm9wU2hhZG93RWZmZWN0KENTU0ZpbHRlciYgZmlsdGVyLCBjb25zdCBEcm9wU2hhZG93Rmls
dGVyT3BlcmF0aW9uJiBkcm9wU2hhZG93T3BlcmF0aW9uKQorc3RhdGljIFJlZlB0cjxGaWx0ZXJF
ZmZlY3Q+IGNyZWF0ZURyb3BTaGFkb3dFZmZlY3QoY29uc3QgRHJvcFNoYWRvd0ZpbHRlck9wZXJh
dGlvbiYgZHJvcFNoYWRvd09wZXJhdGlvbikKIHsKICAgICBmbG9hdCBzdGQgPSBkcm9wU2hhZG93
T3BlcmF0aW9uLnN0ZERldmlhdGlvbigpOwotICAgIHJldHVybiBGRURyb3BTaGFkb3c6OmNyZWF0
ZShmaWx0ZXIsIHN0ZCwgc3RkLCBkcm9wU2hhZG93T3BlcmF0aW9uLngoKSwgZHJvcFNoYWRvd09w
ZXJhdGlvbi55KCksIGRyb3BTaGFkb3dPcGVyYXRpb24uY29sb3IoKSwgMSk7CisgICAgcmV0dXJu
IEZFRHJvcFNoYWRvdzo6Y3JlYXRlKHN0ZCwgc3RkLCBkcm9wU2hhZG93T3BlcmF0aW9uLngoKSwg
ZHJvcFNoYWRvd09wZXJhdGlvbi55KCksIGRyb3BTaGFkb3dPcGVyYXRpb24uY29sb3IoKSwgMSk7
CiB9CiAKLXN0YXRpYyBSZWZQdHI8RmlsdGVyRWZmZWN0PiBjcmVhdGVHcmF5U2NhbGVFZmZlY3Qo
Q1NTRmlsdGVyJiBmaWx0ZXIsIGNvbnN0IEJhc2ljQ29sb3JNYXRyaXhGaWx0ZXJPcGVyYXRpb24m
IGNvbG9yTWF0cml4T3BlcmF0aW9uKQorc3RhdGljIFJlZlB0cjxGaWx0ZXJFZmZlY3Q+IGNyZWF0
ZUdyYXlTY2FsZUVmZmVjdChjb25zdCBCYXNpY0NvbG9yTWF0cml4RmlsdGVyT3BlcmF0aW9uJiBj
b2xvck1hdHJpeE9wZXJhdGlvbikKIHsKICAgICBkb3VibGUgb25lTWludXNBbW91bnQgPSBjbGFt
cFRvKDEgLSBjb2xvck1hdHJpeE9wZXJhdGlvbi5hbW91bnQoKSwgMC4wLCAxLjApOwogCkBAIC0x
MzIsMTYgKzEzMiwxNiBAQCBzdGF0aWMgUmVmUHRyPEZpbHRlckVmZmVjdD4gY3JlYXRlR3JheVNj
YWxlRWZmZWN0KENTU0ZpbHRlciYgZmlsdGVyLCBjb25zdCBCYXNpYwogICAgICAgICAwLAogICAg
IH07CiAKLSAgICByZXR1cm4gRkVDb2xvck1hdHJpeDo6Y3JlYXRlKGZpbHRlciwgRkVDT0xPUk1B
VFJJWF9UWVBFX01BVFJJWCwgV1RGTW92ZShpbnB1dFBhcmFtZXRlcnMpKTsKKyAgICByZXR1cm4g
RkVDb2xvck1hdHJpeDo6Y3JlYXRlKEZFQ09MT1JNQVRSSVhfVFlQRV9NQVRSSVgsIFdURk1vdmUo
aW5wdXRQYXJhbWV0ZXJzKSk7CiB9CiAKLXN0YXRpYyBSZWZQdHI8RmlsdGVyRWZmZWN0PiBjcmVh
dGVIdWVSb3RhdGVFZmZlY3QoQ1NTRmlsdGVyJiBmaWx0ZXIsIGNvbnN0IEJhc2ljQ29sb3JNYXRy
aXhGaWx0ZXJPcGVyYXRpb24mIGNvbG9yTWF0cml4T3BlcmF0aW9uKQorc3RhdGljIFJlZlB0cjxG
aWx0ZXJFZmZlY3Q+IGNyZWF0ZUh1ZVJvdGF0ZUVmZmVjdChjb25zdCBCYXNpY0NvbG9yTWF0cml4
RmlsdGVyT3BlcmF0aW9uJiBjb2xvck1hdHJpeE9wZXJhdGlvbikKIHsKICAgICBWZWN0b3I8Zmxv
YXQ+IGlucHV0UGFyYW1ldGVycyB7IG5hcnJvd1ByZWNpc2lvblRvRmxvYXQoY29sb3JNYXRyaXhP
cGVyYXRpb24uYW1vdW50KCkpIH07Ci0gICAgcmV0dXJuIEZFQ29sb3JNYXRyaXg6OmNyZWF0ZShm
aWx0ZXIsIEZFQ09MT1JNQVRSSVhfVFlQRV9IVUVST1RBVEUsIFdURk1vdmUoaW5wdXRQYXJhbWV0
ZXJzKSk7CisgICAgcmV0dXJuIEZFQ29sb3JNYXRyaXg6OmNyZWF0ZShGRUNPTE9STUFUUklYX1RZ
UEVfSFVFUk9UQVRFLCBXVEZNb3ZlKGlucHV0UGFyYW1ldGVycykpOwogfQogCi1zdGF0aWMgUmVm
UHRyPEZpbHRlckVmZmVjdD4gY3JlYXRlSW52ZXJ0RWZmZWN0KENTU0ZpbHRlciYgZmlsdGVyLCBj
b25zdCBCYXNpY0NvbXBvbmVudFRyYW5zZmVyRmlsdGVyT3BlcmF0aW9uJiBjb21wb25lbnRUcmFu
c2Zlck9wZXJhdGlvbikKK3N0YXRpYyBSZWZQdHI8RmlsdGVyRWZmZWN0PiBjcmVhdGVJbnZlcnRF
ZmZlY3QoY29uc3QgQmFzaWNDb21wb25lbnRUcmFuc2ZlckZpbHRlck9wZXJhdGlvbiYgY29tcG9u
ZW50VHJhbnNmZXJPcGVyYXRpb24pCiB7CiAgICAgQ29tcG9uZW50VHJhbnNmZXJGdW5jdGlvbiB0
cmFuc2ZlckZ1bmN0aW9uOwogICAgIHRyYW5zZmVyRnVuY3Rpb24udHlwZSA9IEZFQ09NUE9ORU5U
VFJBTlNGRVJfVFlQRV9MSU5FQVI7CkBAIC0xNTAsMTAgKzE1MCwxMCBAQCBzdGF0aWMgUmVmUHRy
PEZpbHRlckVmZmVjdD4gY3JlYXRlSW52ZXJ0RWZmZWN0KENTU0ZpbHRlciYgZmlsdGVyLCBjb25z
dCBCYXNpY0NvbQogICAgIHRyYW5zZmVyRnVuY3Rpb24uaW50ZXJjZXB0ID0gYW1vdW50OwogCiAg
ICAgQ29tcG9uZW50VHJhbnNmZXJGdW5jdGlvbiBudWxsRnVuY3Rpb247Ci0gICAgcmV0dXJuIEZF
Q29tcG9uZW50VHJhbnNmZXI6OmNyZWF0ZShmaWx0ZXIsIHRyYW5zZmVyRnVuY3Rpb24sIHRyYW5z
ZmVyRnVuY3Rpb24sIHRyYW5zZmVyRnVuY3Rpb24sIG51bGxGdW5jdGlvbik7CisgICAgcmV0dXJu
IEZFQ29tcG9uZW50VHJhbnNmZXI6OmNyZWF0ZSh0cmFuc2ZlckZ1bmN0aW9uLCB0cmFuc2ZlckZ1
bmN0aW9uLCB0cmFuc2ZlckZ1bmN0aW9uLCBudWxsRnVuY3Rpb24pOwogfQogCi1zdGF0aWMgUmVm
UHRyPEZpbHRlckVmZmVjdD4gY3JlYXRlT3BhY2l0eUVmZmVjdChDU1NGaWx0ZXImIGZpbHRlciwg
Y29uc3QgQmFzaWNDb21wb25lbnRUcmFuc2ZlckZpbHRlck9wZXJhdGlvbiYgY29tcG9uZW50VHJh
bnNmZXJPcGVyYXRpb24pCitzdGF0aWMgUmVmUHRyPEZpbHRlckVmZmVjdD4gY3JlYXRlT3BhY2l0
eUVmZmVjdChjb25zdCBCYXNpY0NvbXBvbmVudFRyYW5zZmVyRmlsdGVyT3BlcmF0aW9uJiBjb21w
b25lbnRUcmFuc2Zlck9wZXJhdGlvbikKIHsKICAgICBDb21wb25lbnRUcmFuc2ZlckZ1bmN0aW9u
IHRyYW5zZmVyRnVuY3Rpb247CiAgICAgdHJhbnNmZXJGdW5jdGlvbi50eXBlID0gRkVDT01QT05F
TlRUUkFOU0ZFUl9UWVBFX0xJTkVBUjsKQEAgLTE2MiwxNiArMTYyLDE2IEBAIHN0YXRpYyBSZWZQ
dHI8RmlsdGVyRWZmZWN0PiBjcmVhdGVPcGFjaXR5RWZmZWN0KENTU0ZpbHRlciYgZmlsdGVyLCBj
b25zdCBCYXNpY0NvCiAgICAgdHJhbnNmZXJGdW5jdGlvbi5pbnRlcmNlcHQgPSAwOwogCiAgICAg
Q29tcG9uZW50VHJhbnNmZXJGdW5jdGlvbiBudWxsRnVuY3Rpb247Ci0gICAgcmV0dXJuIEZFQ29t
cG9uZW50VHJhbnNmZXI6OmNyZWF0ZShmaWx0ZXIsIG51bGxGdW5jdGlvbiwgbnVsbEZ1bmN0aW9u
LCBudWxsRnVuY3Rpb24sIHRyYW5zZmVyRnVuY3Rpb24pOworICAgIHJldHVybiBGRUNvbXBvbmVu
dFRyYW5zZmVyOjpjcmVhdGUobnVsbEZ1bmN0aW9uLCBudWxsRnVuY3Rpb24sIG51bGxGdW5jdGlv
biwgdHJhbnNmZXJGdW5jdGlvbik7CiB9CiAKLXN0YXRpYyBSZWZQdHI8RmlsdGVyRWZmZWN0PiBj
cmVhdGVTYXR1cmF0ZUVmZmVjdChDU1NGaWx0ZXImIGZpbHRlciwgY29uc3QgQmFzaWNDb2xvck1h
dHJpeEZpbHRlck9wZXJhdGlvbiYgY29sb3JNYXRyaXhPcGVyYXRpb24pCitzdGF0aWMgUmVmUHRy
PEZpbHRlckVmZmVjdD4gY3JlYXRlU2F0dXJhdGVFZmZlY3QoY29uc3QgQmFzaWNDb2xvck1hdHJp
eEZpbHRlck9wZXJhdGlvbiYgY29sb3JNYXRyaXhPcGVyYXRpb24pCiB7CiAgICAgVmVjdG9yPGZs
b2F0PiBpbnB1dFBhcmFtZXRlcnMgeyBuYXJyb3dQcmVjaXNpb25Ub0Zsb2F0KGNvbG9yTWF0cml4
T3BlcmF0aW9uLmFtb3VudCgpKSB9OwotICAgIHJldHVybiBGRUNvbG9yTWF0cml4OjpjcmVhdGUo
ZmlsdGVyLCBGRUNPTE9STUFUUklYX1RZUEVfU0FUVVJBVEUsIFdURk1vdmUoaW5wdXRQYXJhbWV0
ZXJzKSk7CisgICAgcmV0dXJuIEZFQ29sb3JNYXRyaXg6OmNyZWF0ZShGRUNPTE9STUFUUklYX1RZ
UEVfU0FUVVJBVEUsIFdURk1vdmUoaW5wdXRQYXJhbWV0ZXJzKSk7CiB9CiAKLXN0YXRpYyBSZWZQ
dHI8RmlsdGVyRWZmZWN0PiBjcmVhdGVTZXBpYUVmZmVjdChDU1NGaWx0ZXImIGZpbHRlciwgY29u
c3QgQmFzaWNDb2xvck1hdHJpeEZpbHRlck9wZXJhdGlvbiYgY29sb3JNYXRyaXhPcGVyYXRpb24p
CitzdGF0aWMgUmVmUHRyPEZpbHRlckVmZmVjdD4gY3JlYXRlU2VwaWFFZmZlY3QoY29uc3QgQmFz
aWNDb2xvck1hdHJpeEZpbHRlck9wZXJhdGlvbiYgY29sb3JNYXRyaXhPcGVyYXRpb24pCiB7CiAg
ICAgZG91YmxlIG9uZU1pbnVzQW1vdW50ID0gY2xhbXBUbygxIC0gY29sb3JNYXRyaXhPcGVyYXRp
b24uYW1vdW50KCksIDAuMCwgMS4wKTsKIApAQCAtMjA0LDcgKzIwNCw3IEBAIHN0YXRpYyBSZWZQ
dHI8RmlsdGVyRWZmZWN0PiBjcmVhdGVTZXBpYUVmZmVjdChDU1NGaWx0ZXImIGZpbHRlciwgY29u
c3QgQmFzaWNDb2xvCiAgICAgICAgIDAsCiAgICAgfTsKIAotICAgIHJldHVybiBGRUNvbG9yTWF0
cml4OjpjcmVhdGUoZmlsdGVyLCBGRUNPTE9STUFUUklYX1RZUEVfTUFUUklYLCBXVEZNb3ZlKGlu
cHV0UGFyYW1ldGVycykpOworICAgIHJldHVybiBGRUNvbG9yTWF0cml4OjpjcmVhdGUoRkVDT0xP
Uk1BVFJJWF9UWVBFX01BVFJJWCwgV1RGTW92ZShpbnB1dFBhcmFtZXRlcnMpKTsKIH0KIAogc3Rh
dGljIFJlZlB0cjxTVkdGaWx0ZXI+IGNyZWF0ZVNWR0ZpbHRlcihDU1NGaWx0ZXImIGZpbHRlciwg
Y29uc3QgUmVmZXJlbmNlRmlsdGVyT3BlcmF0aW9uJiBmaWx0ZXJPcGVyYXRpb24sIFJlbmRlckVs
ZW1lbnQmIHJlbmRlcmVyLCBGaWx0ZXJFZmZlY3QmIHByZXZpb3VzRWZmZWN0KQpAQCAtMjM3LDcg
KzIzNyw3IEBAIGJvb2wgQ1NTRmlsdGVyOjpidWlsZEZpbHRlckZ1bmN0aW9ucyhSZW5kZXJFbGVt
ZW50JiByZW5kZXJlciwgY29uc3QgRmlsdGVyT3BlcmF0CiAgICAgbV9mdW5jdGlvbnMuY2xlYXIo
KTsKICAgICBtX291dHNldHMgPSB7IH07CiAKLSAgICBSZWZQdHI8RmlsdGVyRWZmZWN0PiBwcmV2
aW91c0VmZmVjdCA9IFNvdXJjZUdyYXBoaWM6OmNyZWF0ZSgqdGhpcyk7CisgICAgUmVmUHRyPEZp
bHRlckVmZmVjdD4gcHJldmlvdXNFZmZlY3QgPSBTb3VyY2VHcmFwaGljOjpjcmVhdGUoKTsKICAg
ICBtX2Z1bmN0aW9ucy5hcHBlbmQoeyAqcHJldmlvdXNFZmZlY3QgfSk7CiAKICAgICBSZWZQdHI8
U1ZHRmlsdGVyPiBmaWx0ZXI7CkBAIC0yNTEsNDMgKzI1MSw0MyBAQCBib29sIENTU0ZpbHRlcjo6
YnVpbGRGaWx0ZXJGdW5jdGlvbnMoUmVuZGVyRWxlbWVudCYgcmVuZGVyZXIsIGNvbnN0IEZpbHRl
ck9wZXJhdAogICAgICAgICAgICAgYnJlYWs7CiAKICAgICAgICAgY2FzZSBGaWx0ZXJPcGVyYXRp
b246OkJMVVI6Ci0gICAgICAgICAgICBlZmZlY3QgPSBjcmVhdGVCbHVyRWZmZWN0KCp0aGlzLCBk
b3duY2FzdDxCbHVyRmlsdGVyT3BlcmF0aW9uPigqb3BlcmF0aW9uKSwgY29uc3VtZXIpOworICAg
ICAgICAgICAgZWZmZWN0ID0gY3JlYXRlQmx1ckVmZmVjdChkb3duY2FzdDxCbHVyRmlsdGVyT3Bl
cmF0aW9uPigqb3BlcmF0aW9uKSwgY29uc3VtZXIpOwogICAgICAgICAgICAgYnJlYWs7CiAKICAg
ICAgICAgY2FzZSBGaWx0ZXJPcGVyYXRpb246OkJSSUdIVE5FU1M6Ci0gICAgICAgICAgICBlZmZl
Y3QgPSBjcmVhdGVCcmlnaHRuZXNzRWZmZWN0KCp0aGlzLCBkb3duY2FzdDxCYXNpY0NvbXBvbmVu
dFRyYW5zZmVyRmlsdGVyT3BlcmF0aW9uPigqb3BlcmF0aW9uKSk7CisgICAgICAgICAgICBlZmZl
Y3QgPSBjcmVhdGVCcmlnaHRuZXNzRWZmZWN0KGRvd25jYXN0PEJhc2ljQ29tcG9uZW50VHJhbnNm
ZXJGaWx0ZXJPcGVyYXRpb24+KCpvcGVyYXRpb24pKTsKICAgICAgICAgICAgIGJyZWFrOwogCiAg
ICAgICAgIGNhc2UgRmlsdGVyT3BlcmF0aW9uOjpDT05UUkFTVDoKLSAgICAgICAgICAgIGVmZmVj
dCA9IGNyZWF0ZUNvbnRyYXN0RWZmZWN0KCp0aGlzLCBkb3duY2FzdDxCYXNpY0NvbXBvbmVudFRy
YW5zZmVyRmlsdGVyT3BlcmF0aW9uPigqb3BlcmF0aW9uKSk7CisgICAgICAgICAgICBlZmZlY3Qg
PSBjcmVhdGVDb250cmFzdEVmZmVjdChkb3duY2FzdDxCYXNpY0NvbXBvbmVudFRyYW5zZmVyRmls
dGVyT3BlcmF0aW9uPigqb3BlcmF0aW9uKSk7CiAgICAgICAgICAgICBicmVhazsKIAogICAgICAg
ICBjYXNlIEZpbHRlck9wZXJhdGlvbjo6RFJPUF9TSEFET1c6Ci0gICAgICAgICAgICBlZmZlY3Qg
PSBjcmVhdGVEcm9wU2hhZG93RWZmZWN0KCp0aGlzLCBkb3duY2FzdDxEcm9wU2hhZG93RmlsdGVy
T3BlcmF0aW9uPigqb3BlcmF0aW9uKSk7CisgICAgICAgICAgICBlZmZlY3QgPSBjcmVhdGVEcm9w
U2hhZG93RWZmZWN0KGRvd25jYXN0PERyb3BTaGFkb3dGaWx0ZXJPcGVyYXRpb24+KCpvcGVyYXRp
b24pKTsKICAgICAgICAgICAgIGJyZWFrOwogCiAgICAgICAgIGNhc2UgRmlsdGVyT3BlcmF0aW9u
OjpHUkFZU0NBTEU6Ci0gICAgICAgICAgICBlZmZlY3QgPSBjcmVhdGVHcmF5U2NhbGVFZmZlY3Qo
KnRoaXMsIGRvd25jYXN0PEJhc2ljQ29sb3JNYXRyaXhGaWx0ZXJPcGVyYXRpb24+KCpvcGVyYXRp
b24pKTsKKyAgICAgICAgICAgIGVmZmVjdCA9IGNyZWF0ZUdyYXlTY2FsZUVmZmVjdChkb3duY2Fz
dDxCYXNpY0NvbG9yTWF0cml4RmlsdGVyT3BlcmF0aW9uPigqb3BlcmF0aW9uKSk7CiAgICAgICAg
ICAgICBicmVhazsKIAogICAgICAgICBjYXNlIEZpbHRlck9wZXJhdGlvbjo6SFVFX1JPVEFURToK
LSAgICAgICAgICAgIGVmZmVjdCA9IGNyZWF0ZUh1ZVJvdGF0ZUVmZmVjdCgqdGhpcywgZG93bmNh
c3Q8QmFzaWNDb2xvck1hdHJpeEZpbHRlck9wZXJhdGlvbj4oKm9wZXJhdGlvbikpOworICAgICAg
ICAgICAgZWZmZWN0ID0gY3JlYXRlSHVlUm90YXRlRWZmZWN0KGRvd25jYXN0PEJhc2ljQ29sb3JN
YXRyaXhGaWx0ZXJPcGVyYXRpb24+KCpvcGVyYXRpb24pKTsKICAgICAgICAgICAgIGJyZWFrOwog
CiAgICAgICAgIGNhc2UgRmlsdGVyT3BlcmF0aW9uOjpJTlZFUlQ6Ci0gICAgICAgICAgICBlZmZl
Y3QgPSBjcmVhdGVJbnZlcnRFZmZlY3QoKnRoaXMsIGRvd25jYXN0PEJhc2ljQ29tcG9uZW50VHJh
bnNmZXJGaWx0ZXJPcGVyYXRpb24+KCpvcGVyYXRpb24pKTsKKyAgICAgICAgICAgIGVmZmVjdCA9
IGNyZWF0ZUludmVydEVmZmVjdChkb3duY2FzdDxCYXNpY0NvbXBvbmVudFRyYW5zZmVyRmlsdGVy
T3BlcmF0aW9uPigqb3BlcmF0aW9uKSk7CiAgICAgICAgICAgICBicmVhazsKIAogICAgICAgICBj
YXNlIEZpbHRlck9wZXJhdGlvbjo6T1BBQ0lUWToKLSAgICAgICAgICAgIGVmZmVjdCA9IGNyZWF0
ZU9wYWNpdHlFZmZlY3QoKnRoaXMsIGRvd25jYXN0PEJhc2ljQ29tcG9uZW50VHJhbnNmZXJGaWx0
ZXJPcGVyYXRpb24+KCpvcGVyYXRpb24pKTsKKyAgICAgICAgICAgIGVmZmVjdCA9IGNyZWF0ZU9w
YWNpdHlFZmZlY3QoZG93bmNhc3Q8QmFzaWNDb21wb25lbnRUcmFuc2ZlckZpbHRlck9wZXJhdGlv
bj4oKm9wZXJhdGlvbikpOwogICAgICAgICAgICAgYnJlYWs7CiAKICAgICAgICAgY2FzZSBGaWx0
ZXJPcGVyYXRpb246OlNBVFVSQVRFOgotICAgICAgICAgICAgZWZmZWN0ID0gY3JlYXRlU2F0dXJh
dGVFZmZlY3QoKnRoaXMsIGRvd25jYXN0PEJhc2ljQ29sb3JNYXRyaXhGaWx0ZXJPcGVyYXRpb24+
KCpvcGVyYXRpb24pKTsKKyAgICAgICAgICAgIGVmZmVjdCA9IGNyZWF0ZVNhdHVyYXRlRWZmZWN0
KGRvd25jYXN0PEJhc2ljQ29sb3JNYXRyaXhGaWx0ZXJPcGVyYXRpb24+KCpvcGVyYXRpb24pKTsK
ICAgICAgICAgICAgIGJyZWFrOwogCiAgICAgICAgIGNhc2UgRmlsdGVyT3BlcmF0aW9uOjpTRVBJ
QToKLSAgICAgICAgICAgIGVmZmVjdCA9IGNyZWF0ZVNlcGlhRWZmZWN0KCp0aGlzLCBkb3duY2Fz
dDxCYXNpY0NvbG9yTWF0cml4RmlsdGVyT3BlcmF0aW9uPigqb3BlcmF0aW9uKSk7CisgICAgICAg
ICAgICBlZmZlY3QgPSBjcmVhdGVTZXBpYUVmZmVjdChkb3duY2FzdDxCYXNpY0NvbG9yTWF0cml4
RmlsdGVyT3BlcmF0aW9uPigqb3BlcmF0aW9uKSk7CiAgICAgICAgICAgICBicmVhazsKIAogICAg
ICAgICBjYXNlIEZpbHRlck9wZXJhdGlvbjo6UkVGRVJFTkNFOgpAQCAtMzg1LDEzICszODUsMTMg
QEAgUmVmUHRyPEZpbHRlckVmZmVjdD4gQ1NTRmlsdGVyOjpsYXN0RWZmZWN0KCkKIHZvaWQgQ1NT
RmlsdGVyOjpkZXRlcm1pbmVGaWx0ZXJQcmltaXRpdmVTdWJyZWdpb24oKQogewogICAgIGF1dG8g
ZWZmZWN0ID0gbGFzdEVmZmVjdCgpOwotICAgIGVmZmVjdC0+ZGV0ZXJtaW5lRmlsdGVyUHJpbWl0
aXZlU3VicmVnaW9uKCk7CisgICAgZWZmZWN0LT5kZXRlcm1pbmVGaWx0ZXJQcmltaXRpdmVTdWJy
ZWdpb24oKnRoaXMpOwogICAgIEZsb2F0UmVjdCBzdWJSZWdpb24gPSBlZmZlY3QtPm1heEVmZmVj
dFJlY3QoKTsKICAgICAvLyBBdCBsZWFzdCBvbmUgRmlsdGVyRWZmZWN0IGhhcyBhIHRvbyBiaWcg
aW1hZ2Ugc2l6ZSwgcmVjYWxjdWxhdGUgdGhlIGVmZmVjdCBzaXplcyB3aXRoIG5ldyBzY2FsZSBm
YWN0b3JzLgogICAgIEZsb2F0U2l6ZSBmaWx0ZXJTY2FsZSB7IDEsIDEgfTsKICAgICBpZiAoSW1h
Z2VCdWZmZXI6OnNpemVOZWVkc0NsYW1waW5nKHN1YlJlZ2lvbi5zaXplKCksIGZpbHRlclNjYWxl
KSkgewogICAgICAgICBzZXRGaWx0ZXJTY2FsZShmaWx0ZXJTY2FsZSk7Ci0gICAgICAgIGVmZmVj
dC0+ZGV0ZXJtaW5lRmlsdGVyUHJpbWl0aXZlU3VicmVnaW9uKCk7CisgICAgICAgIGVmZmVjdC0+
ZGV0ZXJtaW5lRmlsdGVyUHJpbWl0aXZlU3VicmVnaW9uKCp0aGlzKTsKICAgICB9CiB9CiAKQEAg
LTQwNSwxMyArNDA1LDIxIEBAIHZvaWQgQ1NTRmlsdGVyOjphcHBseSgpCiB7CiAgICAgYXV0byBl
ZmZlY3QgPSBsYXN0RWZmZWN0KCk7CiAgICAgaWYgKG1fZmlsdGVyUmVuZGVyZXIpIHsKLSAgICAg
ICAgbV9maWx0ZXJSZW5kZXJlci0+YXBwbHlFZmZlY3RzKCplZmZlY3QpOworICAgICAgICBtX2Zp
bHRlclJlbmRlcmVyLT5hcHBseUVmZmVjdHMoKnRoaXMsICplZmZlY3QpOwogICAgICAgICBpZiAo
bV9maWx0ZXJSZW5kZXJlci0+aGFzUmVzdWx0KCkpIHsKICAgICAgICAgICAgIGVmZmVjdC0+dHJh
bnNmb3JtUmVzdWx0Q29sb3JTcGFjZShEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0IoKSk7CiAg
ICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KICAgICB9Ci0gICAgZWZmZWN0LT5hcHBseSgp
OworCisgICAgZm9yIChhdXRvJiBmdW5jdGlvbiA6IG1fZnVuY3Rpb25zKSB7CisgICAgICAgIGlm
IChmdW5jdGlvbi0+aXNTVkdGaWx0ZXIoKSkgeworICAgICAgICAgICAgZG93bmNhc3Q8U1ZHRmls
dGVyPihmdW5jdGlvbi5wdHIoKSktPnNldFNvdXJjZUltYWdlKHsgc291cmNlSW1hZ2UoKSB9KTsK
KyAgICAgICAgICAgIGRvd25jYXN0PFNWR0ZpbHRlcj4oZnVuY3Rpb24ucHRyKCkpLT5hcHBseSgp
OworICAgICAgICB9IGVsc2UgaWYgKGZ1bmN0aW9uLT5pc0ZpbHRlckVmZmVjdCgpKQorICAgICAg
ICAgICAgZG93bmNhc3Q8RmlsdGVyRWZmZWN0PihmdW5jdGlvbi5wdHIoKSktPmFwcGx5KCp0aGlz
KTsKKyAgICB9CisKICAgICBlZmZlY3QtPnRyYW5zZm9ybVJlc3VsdENvbG9yU3BhY2UoRGVzdGlu
YXRpb25Db2xvclNwYWNlOjpTUkdCKCkpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvQ1NTRmlsdGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvQ1NTRmls
dGVyLmgKaW5kZXggZDZkNjE5NzQxNjJkMTM3M2I1ZjZiYzU2YmE2M2IzZjQ3ZDZkMDE4Zi4uNTkz
YjYzMzcwNDdiZDkxMTAyMGQwMDNiYzYwZmU1M2M2NjUxNmE4OSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL0NTU0ZpbHRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9DU1NGaWx0ZXIuaApAQCAtNTksNyArNTksNyBAQCBwdWJsaWM6CiAgICAgSW50T3V0c2V0
cyBvdXRzZXRzKCkgY29uc3Qgb3ZlcnJpZGU7CiAKICAgICB2b2lkIGNsZWFySW50ZXJtZWRpYXRl
UmVzdWx0cygpOwotICAgIHZvaWQgYXBwbHkoKTsKKyAgICB2b2lkIGFwcGx5KCkgb3ZlcnJpZGU7
CiAKICAgICBJbWFnZUJ1ZmZlciogb3V0cHV0KCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VGaWx0ZXIuY3BwIGIvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZUZpbHRlci5jcHAKaW5kZXggZjEw
MzUzMzllYzQxZDZlNTQwZjI1ZjYxZDFkYzUyYjU2NmQwYTkzZi4uNzk1ZWZhYTYzMWMyOWQ3NGRi
OTU2ODU1YTE5ZDcyZTI3NWU0Y2VjYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZUZpbHRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZUZpbHRlci5jcHAKQEAgLTEzMSwxNCArMTMx
LDE0IEBAIGJvb2wgUmVuZGVyU1ZHUmVzb3VyY2VGaWx0ZXI6OmFwcGx5UmVzb3VyY2UoUmVuZGVy
RWxlbWVudCYgcmVuZGVyZXIsIGNvbnN0IFJlbmRlCiAKICAgICBMT0dfV0lUSF9TVFJFQU0oRmls
dGVycywgc3RyZWFtIDw8ICJSZW5kZXJTVkdSZXNvdXJjZUZpbHRlcjo6YXBwbHlSZXNvdXJjZVxu
IiA8PCAqZmlsdGVyRGF0YS0+YnVpbGRlci0+bGFzdEVmZmVjdCgpKTsKIAotICAgIGxhc3RFZmZl
Y3QtPmRldGVybWluZUZpbHRlclByaW1pdGl2ZVN1YnJlZ2lvbigpOworICAgIGxhc3RFZmZlY3Qt
PmRldGVybWluZUZpbHRlclByaW1pdGl2ZVN1YnJlZ2lvbigqZmlsdGVyRGF0YS0+ZmlsdGVyKTsK
ICAgICBGbG9hdFJlY3Qgc3ViUmVnaW9uID0gbGFzdEVmZmVjdC0+bWF4RWZmZWN0UmVjdCgpOwog
CiAgICAgLy8gQXQgbGVhc3Qgb25lIEZpbHRlckVmZmVjdCBoYXMgYSB0b28gYmlnIGltYWdlIHNp
emUsCiAgICAgLy8gcmVjYWxjdWxhdGUgdGhlIGVmZmVjdCBzaXplcyB3aXRoIG5ldyBzY2FsZSBm
YWN0b3JzLgogICAgIGlmIChJbWFnZUJ1ZmZlcjo6c2l6ZU5lZWRzQ2xhbXBpbmcoc3ViUmVnaW9u
LnNpemUoKSwgZmlsdGVyU2NhbGUpKSB7CiAgICAgICAgIGZpbHRlckRhdGEtPmZpbHRlci0+c2V0
RmlsdGVyU2NhbGUoZmlsdGVyU2NhbGUpOwotICAgICAgICBsYXN0RWZmZWN0LT5kZXRlcm1pbmVG
aWx0ZXJQcmltaXRpdmVTdWJyZWdpb24oKTsKKyAgICAgICAgbGFzdEVmZmVjdC0+ZGV0ZXJtaW5l
RmlsdGVyUHJpbWl0aXZlU3VicmVnaW9uKCpmaWx0ZXJEYXRhLT5maWx0ZXIpOwogICAgIH0KIAog
ICAgIC8vIElmIHRoZSBkcmF3aW5nUmVnaW9uIGlzIGVtcHR5LCB3ZSBoYXZlIHNvbWV0aGluZyBs
aWtlIDxnIGZpbHRlcj0iLi4iLz4uCkBAIC0yMjQsNyArMjI0LDcgQEAgdm9pZCBSZW5kZXJTVkdS
ZXNvdXJjZUZpbHRlcjo6cG9zdEFwcGx5UmVzb3VyY2UoUmVuZGVyRWxlbWVudCYgcmVuZGVyZXIs
IEdyYXBoaWMKICAgICAgICAgYnJlYWs7CiAgICAgfQogCi0gICAgRmlsdGVyRWZmZWN0KiBsYXN0
RWZmZWN0ID0gZmlsdGVyRGF0YS5idWlsZGVyLT5sYXN0RWZmZWN0KCk7CisgICAgYXV0byBsYXN0
RWZmZWN0ID0gZmlsdGVyRGF0YS5maWx0ZXItPmxhc3RFZmZlY3QoKTsKIAogICAgIGlmIChsYXN0
RWZmZWN0ICYmICFmaWx0ZXJEYXRhLmJvdW5kYXJpZXMuaXNFbXB0eSgpICYmICFsYXN0RWZmZWN0
LT5maWx0ZXJQcmltaXRpdmVTdWJyZWdpb24oKS5pc0VtcHR5KCkpIHsKICAgICAgICAgLy8gVGhp
cyBpcyB0aGUgcmVhbCBmaWx0ZXJpbmcgb2YgdGhlIG9iamVjdC4gSXQganVzdCBuZWVkcyB0byBi
ZSBjYWxsZWQgb24gdGhlCkBAIC0yMzYsNyArMjM2LDcgQEAgdm9pZCBSZW5kZXJTVkdSZXNvdXJj
ZUZpbHRlcjo6cG9zdEFwcGx5UmVzb3VyY2UoUmVuZGVyRWxlbWVudCYgcmVuZGVyZXIsIEdyYXBo
aWMKICAgICAgICAgLy8gQWx3YXlzIHRydWUgaWYgZmlsdGVyRGF0YSBpcyBqdXN0IGJ1aWx0IChm
aWx0ZXJEYXRhLT5zdGF0ZSA9PSBGaWx0ZXJEYXRhOjpCdWlsdCkuCiAgICAgICAgIGlmICghbGFz
dEVmZmVjdC0+aGFzUmVzdWx0KCkpIHsKICAgICAgICAgICAgIGZpbHRlckRhdGEuc3RhdGUgPSBG
aWx0ZXJEYXRhOjpBcHBseWluZzsKLSAgICAgICAgICAgIGxhc3RFZmZlY3QtPmFwcGx5KCk7Cisg
ICAgICAgICAgICBmaWx0ZXJEYXRhLmZpbHRlci0+YXBwbHkoKTsKICAgICAgICAgICAgIGxhc3RF
ZmZlY3QtPmNvcnJlY3RGaWx0ZXJSZXN1bHRJZk5lZWRlZCgpOwogICAgICAgICAgICAgbGFzdEVm
ZmVjdC0+dHJhbnNmb3JtUmVzdWx0Q29sb3JTcGFjZShEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNS
R0IoKSk7CiAgICAgICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRUJs
ZW5kRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVCbGVuZEVsZW1lbnQuY3Bw
CmluZGV4IDdiY2YwNDE4MDBmNzk5ZjExNzRjZmUwNGI4MjJkNmQwNjQzMWY2ODYuLjA1NDBjOGU0
NDA4MmQ1YzYxZjAwZjhmYjczNWMzNjE4MmQxMGZhN2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3N2Zy9TVkdGRUJsZW5kRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NW
R0ZFQmxlbmRFbGVtZW50LmNwcApAQCAtMTAwLDE5ICsxMDAsMTYgQEAgdm9pZCBTVkdGRUJsZW5k
RWxlbWVudDo6c3ZnQXR0cmlidXRlQ2hhbmdlZChjb25zdCBRdWFsaWZpZWROYW1lJiBhdHRyTmFt
ZSkKICAgICBTVkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXM6OnN2Z0F0dHJpYnV0
ZUNoYW5nZWQoYXR0ck5hbWUpOwogfQogCi1SZWZQdHI8RmlsdGVyRWZmZWN0PiBTVkdGRUJsZW5k
RWxlbWVudDo6YnVpbGQoU1ZHRmlsdGVyQnVpbGRlciogZmlsdGVyQnVpbGRlciwgRmlsdGVyJiBm
aWx0ZXIpIGNvbnN0CitSZWZQdHI8RmlsdGVyRWZmZWN0PiBTVkdGRUJsZW5kRWxlbWVudDo6YnVp
bGQoU1ZHRmlsdGVyQnVpbGRlciYgZmlsdGVyQnVpbGRlcikgY29uc3QKIHsKLSAgICBhdXRvIGlu
cHV0MSA9IGZpbHRlckJ1aWxkZXItPmdldEVmZmVjdEJ5SWQoaW4xKCkpOwotICAgIGF1dG8gaW5w
dXQyID0gZmlsdGVyQnVpbGRlci0+Z2V0RWZmZWN0QnlJZChpbjIoKSk7CisgICAgYXV0byBpbnB1
dDEgPSBmaWx0ZXJCdWlsZGVyLmdldEVmZmVjdEJ5SWQoaW4xKCkpOworICAgIGF1dG8gaW5wdXQy
ID0gZmlsdGVyQnVpbGRlci5nZXRFZmZlY3RCeUlkKGluMigpKTsKIAogICAgIGlmICghaW5wdXQx
IHx8ICFpbnB1dDIpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCi0gICAgYXV0byBlZmZlY3Qg
PSBGRUJsZW5kOjpjcmVhdGUoZmlsdGVyLCBtb2RlKCkpOwotICAgIEZpbHRlckVmZmVjdFZlY3Rv
ciYgaW5wdXRFZmZlY3RzID0gZWZmZWN0LT5pbnB1dEVmZmVjdHMoKTsKLSAgICBpbnB1dEVmZmVj
dHMucmVzZXJ2ZUNhcGFjaXR5KDIpOwotICAgIGlucHV0RWZmZWN0cy5hcHBlbmQoaW5wdXQxKTsK
LSAgICBpbnB1dEVmZmVjdHMuYXBwZW5kKGlucHV0Mik7ICAgIAorICAgIGF1dG8gZWZmZWN0ID0g
RkVCbGVuZDo6Y3JlYXRlKG1vZGUoKSk7CisgICAgZWZmZWN0LT5pbnB1dEVmZmVjdHMoKSA9IHsg
V1RGTW92ZShpbnB1dDEpLCBXVEZNb3ZlKGlucHV0MikgfTsKICAgICByZXR1cm4gZWZmZWN0Owog
fQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVCbGVuZEVsZW1lbnQuaCBi
L1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRUJsZW5kRWxlbWVudC5oCmluZGV4IDkwMzdjYjEyMWY5
MzY3Yjc4OGQ5MjE2ZTBiOTQxZmM4YjA2ZGVjNjYuLmViYTlhYmI1ODMyOGY0ZGFiZjM0MjhiNmIx
N2RiZjU4MjM3Njg0MDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRUJsZW5k
RWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRUJsZW5kRWxlbWVudC5oCkBA
IC02OSw3ICs2OSw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBwYXJzZUF0dHJpYnV0ZShjb25zdCBR
dWFsaWZpZWROYW1lJiwgY29uc3QgQXRvbVN0cmluZyYpIG92ZXJyaWRlOwogICAgIHZvaWQgc3Zn
QXR0cmlidXRlQ2hhbmdlZChjb25zdCBRdWFsaWZpZWROYW1lJikgb3ZlcnJpZGU7CiAKLSAgICBS
ZWZQdHI8RmlsdGVyRWZmZWN0PiBidWlsZChTVkdGaWx0ZXJCdWlsZGVyKiwgRmlsdGVyJikgY29u
c3Qgb3ZlcnJpZGU7CisgICAgUmVmUHRyPEZpbHRlckVmZmVjdD4gYnVpbGQoU1ZHRmlsdGVyQnVp
bGRlciYpIGNvbnN0IG92ZXJyaWRlOwogICAgIGJvb2wgc2V0RmlsdGVyRWZmZWN0QXR0cmlidXRl
KEZpbHRlckVmZmVjdCosIGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0dHJOYW1lKSBvdmVycmlkZTsK
IAogICAgIFByb3BlcnR5UmVnaXN0cnkgbV9wcm9wZXJ0eVJlZ2lzdHJ5IHsgKnRoaXMgfTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRUNvbG9yTWF0cml4RWxlbWVudC5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVDb2xvck1hdHJpeEVsZW1lbnQuY3BwCmluZGV4IDA1
MjQ4NTc4YzI3NGM4ZmEyYjNlMWYyNDRlNDM2Nzg2OGY0MmJhOWMuLmNkZWJlZjE4YTFmZGNiYjhm
M2ZiMzVmYjgzOGFjNjA0YzlhMjNkNjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9T
VkdGRUNvbG9yTWF0cml4RWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZF
Q29sb3JNYXRyaXhFbGVtZW50LmNwcApAQCAtMTAwLDkgKzEwMCw5IEBAIHZvaWQgU1ZHRkVDb2xv
ck1hdHJpeEVsZW1lbnQ6OnN2Z0F0dHJpYnV0ZUNoYW5nZWQoY29uc3QgUXVhbGlmaWVkTmFtZSYg
YXR0ck5hbWUpCiAgICAgU1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVzOjpzdmdB
dHRyaWJ1dGVDaGFuZ2VkKGF0dHJOYW1lKTsKIH0KIAotUmVmUHRyPEZpbHRlckVmZmVjdD4gU1ZH
RkVDb2xvck1hdHJpeEVsZW1lbnQ6OmJ1aWxkKFNWR0ZpbHRlckJ1aWxkZXIqIGZpbHRlckJ1aWxk
ZXIsIEZpbHRlciYgZmlsdGVyKSBjb25zdAorUmVmUHRyPEZpbHRlckVmZmVjdD4gU1ZHRkVDb2xv
ck1hdHJpeEVsZW1lbnQ6OmJ1aWxkKFNWR0ZpbHRlckJ1aWxkZXImIGZpbHRlckJ1aWxkZXIpIGNv
bnN0CiB7Ci0gICAgYXV0byBpbnB1dDEgPSBmaWx0ZXJCdWlsZGVyLT5nZXRFZmZlY3RCeUlkKGlu
MSgpKTsKKyAgICBhdXRvIGlucHV0MSA9IGZpbHRlckJ1aWxkZXIuZ2V0RWZmZWN0QnlJZChpbjEo
KSk7CiAKICAgICBpZiAoIWlucHV0MSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CkBAIC0xNDEs
OCArMTQxLDggQEAgUmVmUHRyPEZpbHRlckVmZmVjdD4gU1ZHRkVDb2xvck1hdHJpeEVsZW1lbnQ6
OmJ1aWxkKFNWR0ZpbHRlckJ1aWxkZXIqIGZpbHRlckJ1aWwKICAgICAgICAgZmlsdGVyVmFsdWVz
LnNocmlua1RvRml0KCk7CiAgICAgfQogCi0gICAgYXV0byBlZmZlY3QgPSBGRUNvbG9yTWF0cml4
OjpjcmVhdGUoZmlsdGVyLCBmaWx0ZXJUeXBlLCBXVEZNb3ZlKGZpbHRlclZhbHVlcykpOwotICAg
IGVmZmVjdC0+aW5wdXRFZmZlY3RzKCkgPSB7IGlucHV0MSB9OworICAgIGF1dG8gZWZmZWN0ID0g
RkVDb2xvck1hdHJpeDo6Y3JlYXRlKGZpbHRlclR5cGUsIFdURk1vdmUoZmlsdGVyVmFsdWVzKSk7
CisgICAgZWZmZWN0LT5pbnB1dEVmZmVjdHMoKSA9IHsgV1RGTW92ZShpbnB1dDEpIH07CiAgICAg
cmV0dXJuIGVmZmVjdDsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZF
Q29sb3JNYXRyaXhFbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVDb2xvck1hdHJp
eEVsZW1lbnQuaAppbmRleCA3YWI0YWE0MTgxZTdhYjE5OGIxMmU3N2JlMjA2YjljNWM0MTAyM2Zk
Li45NzAxMWEwNDFlNDlhMTdmYjQ5OGExZjg0NmY4ODBkYmRkNjk1MjQwIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVDb2xvck1hdHJpeEVsZW1lbnQuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9zdmcvU1ZHRkVDb2xvck1hdHJpeEVsZW1lbnQuaApAQCAtODYsNyArODYsNyBAQCBw
cml2YXRlOgogICAgIHZvaWQgc3ZnQXR0cmlidXRlQ2hhbmdlZChjb25zdCBRdWFsaWZpZWROYW1l
Jikgb3ZlcnJpZGU7CiAKICAgICBib29sIHNldEZpbHRlckVmZmVjdEF0dHJpYnV0ZShGaWx0ZXJF
ZmZlY3QqLCBjb25zdCBRdWFsaWZpZWROYW1lJikgb3ZlcnJpZGU7Ci0gICAgUmVmUHRyPEZpbHRl
ckVmZmVjdD4gYnVpbGQoU1ZHRmlsdGVyQnVpbGRlciosIEZpbHRlciYpIGNvbnN0IG92ZXJyaWRl
OworICAgIFJlZlB0cjxGaWx0ZXJFZmZlY3Q+IGJ1aWxkKFNWR0ZpbHRlckJ1aWxkZXImKSBjb25z
dCBvdmVycmlkZTsKIAogICAgIFByb3BlcnR5UmVnaXN0cnkgbV9wcm9wZXJ0eVJlZ2lzdHJ5IHsg
KnRoaXMgfTsKICAgICBSZWY8U1ZHQW5pbWF0ZWRTdHJpbmc+IG1faW4xIHsgU1ZHQW5pbWF0ZWRT
dHJpbmc6OmNyZWF0ZSh0aGlzKSB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NW
R0ZFQ29tcG9uZW50VHJhbnNmZXJFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdG
RUNvbXBvbmVudFRyYW5zZmVyRWxlbWVudC5jcHAKaW5kZXggOTBhNTViN2VmZmY3YTNmZTYwNmE5
ZTA1NzlhNzZlZGU5Zjk2ODAxMS4uNWVkYjg5ZDBkMjU5MjU4ZmU2ZWNkOTU2NzdhNWQ2MjA0MTQw
ZGU0YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFQ29tcG9uZW50VHJhbnNm
ZXJFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVDb21wb25lbnRUcmFu
c2ZlckVsZW1lbnQuY3BwCkBAIC02Myw5ICs2Myw5IEBAIHZvaWQgU1ZHRkVDb21wb25lbnRUcmFu
c2ZlckVsZW1lbnQ6OnBhcnNlQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIG5hbWUsIGNv
CiAgICAgU1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVzOjpwYXJzZUF0dHJpYnV0
ZShuYW1lLCB2YWx1ZSk7CiB9CiAKLVJlZlB0cjxGaWx0ZXJFZmZlY3Q+IFNWR0ZFQ29tcG9uZW50
VHJhbnNmZXJFbGVtZW50OjpidWlsZChTVkdGaWx0ZXJCdWlsZGVyKiBmaWx0ZXJCdWlsZGVyLCBG
aWx0ZXImIGZpbHRlcikgY29uc3QKK1JlZlB0cjxGaWx0ZXJFZmZlY3Q+IFNWR0ZFQ29tcG9uZW50
VHJhbnNmZXJFbGVtZW50OjpidWlsZChTVkdGaWx0ZXJCdWlsZGVyJiBmaWx0ZXJCdWlsZGVyKSBj
b25zdAogewotICAgIGF1dG8gaW5wdXQxID0gZmlsdGVyQnVpbGRlci0+Z2V0RWZmZWN0QnlJZChp
bjEoKSk7CisgICAgYXV0byBpbnB1dDEgPSBmaWx0ZXJCdWlsZGVyLmdldEVmZmVjdEJ5SWQoaW4x
KCkpOwogICAgIAogICAgIGlmICghaW5wdXQxKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKQEAg
LTg1LDkgKzg1LDkgQEAgUmVmUHRyPEZpbHRlckVmZmVjdD4gU1ZHRkVDb21wb25lbnRUcmFuc2Zl
ckVsZW1lbnQ6OmJ1aWxkKFNWR0ZpbHRlckJ1aWxkZXIqIGZpbHQKICAgICAgICAgZWxzZSBpZiAo
aXM8U1ZHRkVGdW5jQUVsZW1lbnQ+KGNoaWxkKSkKICAgICAgICAgICAgIGFscGhhID0gZG93bmNh
c3Q8U1ZHRkVGdW5jQUVsZW1lbnQ+KGNoaWxkKS50cmFuc2ZlckZ1bmN0aW9uKCk7CiAgICAgfQot
ICAgIAotICAgIGF1dG8gZWZmZWN0ID0gRkVDb21wb25lbnRUcmFuc2Zlcjo6Y3JlYXRlKGZpbHRl
ciwgcmVkLCBncmVlbiwgYmx1ZSwgYWxwaGEpOwotICAgIGVmZmVjdC0+aW5wdXRFZmZlY3RzKCkg
PSB7IGlucHV0MSB9OworCisgICAgYXV0byBlZmZlY3QgPSBGRUNvbXBvbmVudFRyYW5zZmVyOjpj
cmVhdGUocmVkLCBncmVlbiwgYmx1ZSwgYWxwaGEpOworICAgIGVmZmVjdC0+aW5wdXRFZmZlY3Rz
KCkgPSB7IFdURk1vdmUoaW5wdXQxKSB9OwogICAgIHJldHVybiBlZmZlY3Q7CiB9CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRUNvbXBvbmVudFRyYW5zZmVyRWxlbWVudC5o
IGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFQ29tcG9uZW50VHJhbnNmZXJFbGVtZW50LmgKaW5k
ZXggYmI1ODkzNDdkODgyNmRmYjM2MDllZGFjNmU4Yjk5M2E0ZGQ1NDg2My4uNjAxNzEwZjdkMzUz
NWExNDFhMTU3ODg1NGFmMmIwMzUxMTI5ZTk4MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
c3ZnL1NWR0ZFQ29tcG9uZW50VHJhbnNmZXJFbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUv
c3ZnL1NWR0ZFQ29tcG9uZW50VHJhbnNmZXJFbGVtZW50LmgKQEAgLTQzLDcgKzQzLDcgQEAgcHJp
dmF0ZToKICAgICAvLyBGSVhNRTogc3ZnQXR0cmlidXRlQ2hhbmdlZCBtaXNzaW5nLgogICAgIHZv
aWQgcGFyc2VBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYsIGNvbnN0IEF0b21TdHJpbmcm
KSBvdmVycmlkZTsKIAotICAgIFJlZlB0cjxGaWx0ZXJFZmZlY3Q+IGJ1aWxkKFNWR0ZpbHRlckJ1
aWxkZXIqLCBGaWx0ZXImKSBjb25zdCBvdmVycmlkZTsKKyAgICBSZWZQdHI8RmlsdGVyRWZmZWN0
PiBidWlsZChTVkdGaWx0ZXJCdWlsZGVyJikgY29uc3Qgb3ZlcnJpZGU7CiAKICAgICBQcm9wZXJ0
eVJlZ2lzdHJ5IG1fcHJvcGVydHlSZWdpc3RyeSB7ICp0aGlzIH07CiAgICAgUmVmPFNWR0FuaW1h
dGVkU3RyaW5nPiBtX2luMSB7IFNWR0FuaW1hdGVkU3RyaW5nOjpjcmVhdGUodGhpcykgfTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRUNvbXBvc2l0ZUVsZW1lbnQuY3BwIGIv
U291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFQ29tcG9zaXRlRWxlbWVudC5jcHAKaW5kZXggM2NhOTli
ODc1NzA4YmJkOGE2YmFmNjUzZGMwNmZlMjA1YWM5ODIzNS4uN2ZjZWQyZTY0NTU0MGUzYjlkZDA5
NmNiZTQ5OTFmNTg0MTU1MDUxNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZF
Q29tcG9zaXRlRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFQ29tcG9z
aXRlRWxlbWVudC5jcHAKQEAgLTEzMSwxOSArMTMxLDE2IEBAIHZvaWQgU1ZHRkVDb21wb3NpdGVF
bGVtZW50OjpzdmdBdHRyaWJ1dGVDaGFuZ2VkKGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0dHJOYW1l
KQogICAgIFNWR0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlczo6c3ZnQXR0cmlidXRl
Q2hhbmdlZChhdHRyTmFtZSk7CiB9CiAKLVJlZlB0cjxGaWx0ZXJFZmZlY3Q+IFNWR0ZFQ29tcG9z
aXRlRWxlbWVudDo6YnVpbGQoU1ZHRmlsdGVyQnVpbGRlciogZmlsdGVyQnVpbGRlciwgRmlsdGVy
JiBmaWx0ZXIpIGNvbnN0CitSZWZQdHI8RmlsdGVyRWZmZWN0PiBTVkdGRUNvbXBvc2l0ZUVsZW1l
bnQ6OmJ1aWxkKFNWR0ZpbHRlckJ1aWxkZXImIGZpbHRlckJ1aWxkZXIpIGNvbnN0CiB7Ci0gICAg
YXV0byBpbnB1dDEgPSBmaWx0ZXJCdWlsZGVyLT5nZXRFZmZlY3RCeUlkKGluMSgpKTsKLSAgICBh
dXRvIGlucHV0MiA9IGZpbHRlckJ1aWxkZXItPmdldEVmZmVjdEJ5SWQoaW4yKCkpOworICAgIGF1
dG8gaW5wdXQxID0gZmlsdGVyQnVpbGRlci5nZXRFZmZlY3RCeUlkKGluMSgpKTsKKyAgICBhdXRv
IGlucHV0MiA9IGZpbHRlckJ1aWxkZXIuZ2V0RWZmZWN0QnlJZChpbjIoKSk7CiAgICAgCiAgICAg
aWYgKCFpbnB1dDEgfHwgIWlucHV0MikKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKLSAgICBh
dXRvIGVmZmVjdCA9IEZFQ29tcG9zaXRlOjpjcmVhdGUoZmlsdGVyLCBzdmdPcGVyYXRvcigpLCBr
MSgpLCBrMigpLCBrMygpLCBrNCgpKTsKLSAgICBGaWx0ZXJFZmZlY3RWZWN0b3ImIGlucHV0RWZm
ZWN0cyA9IGVmZmVjdC0+aW5wdXRFZmZlY3RzKCk7Ci0gICAgaW5wdXRFZmZlY3RzLnJlc2VydmVD
YXBhY2l0eSgyKTsKLSAgICBpbnB1dEVmZmVjdHMuYXBwZW5kKGlucHV0MSk7Ci0gICAgaW5wdXRF
ZmZlY3RzLmFwcGVuZChpbnB1dDIpOyAgICAKKyAgICBhdXRvIGVmZmVjdCA9IEZFQ29tcG9zaXRl
OjpjcmVhdGUoc3ZnT3BlcmF0b3IoKSwgazEoKSwgazIoKSwgazMoKSwgazQoKSk7CisgICAgZWZm
ZWN0LT5pbnB1dEVmZmVjdHMoKSA9IHsgV1RGTW92ZShpbnB1dDEpLCBXVEZNb3ZlKGlucHV0Mikg
fTsKICAgICByZXR1cm4gZWZmZWN0OwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9z
dmcvU1ZHRkVDb21wb3NpdGVFbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVDb21w
b3NpdGVFbGVtZW50LmgKaW5kZXggODFhNzhjODY1N2EwZmEzMDQ0ZGY1YjdjNWEwODBkNmU3Nzk3
MjJmNi4uNzRkODE0YzNjMjBlMGZkMzdlYjZhOGI1M2FmZjU2OWQ4ZDExZGNhMyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFQ29tcG9zaXRlRWxlbWVudC5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3N2Zy9TVkdGRUNvbXBvc2l0ZUVsZW1lbnQuaApAQCAtMTA5LDcgKzEwOSw3IEBA
IHByaXZhdGU6CiAgICAgdm9pZCBzdmdBdHRyaWJ1dGVDaGFuZ2VkKGNvbnN0IFF1YWxpZmllZE5h
bWUmKSBvdmVycmlkZTsKIAogICAgIGJvb2wgc2V0RmlsdGVyRWZmZWN0QXR0cmlidXRlKEZpbHRl
ckVmZmVjdCosIGNvbnN0IFF1YWxpZmllZE5hbWUmKSBvdmVycmlkZTsKLSAgICBSZWZQdHI8Rmls
dGVyRWZmZWN0PiBidWlsZChTVkdGaWx0ZXJCdWlsZGVyKiwgRmlsdGVyJikgY29uc3Qgb3ZlcnJp
ZGU7CisgICAgUmVmUHRyPEZpbHRlckVmZmVjdD4gYnVpbGQoU1ZHRmlsdGVyQnVpbGRlciYpIGNv
bnN0IG92ZXJyaWRlOwogCiAgICAgUHJvcGVydHlSZWdpc3RyeSBtX3Byb3BlcnR5UmVnaXN0cnkg
eyAqdGhpcyB9OwogICAgIFJlZjxTVkdBbmltYXRlZFN0cmluZz4gbV9pbjEgeyBTVkdBbmltYXRl
ZFN0cmluZzo6Y3JlYXRlKHRoaXMpIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcv
U1ZHRkVDb252b2x2ZU1hdHJpeEVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZF
Q29udm9sdmVNYXRyaXhFbGVtZW50LmNwcAppbmRleCBmNzUwNTgxNWRlY2FiYjRlYTM0YjQzNWI0
N2VhNWE4MGM2YTI2ZGYxLi4xYTgxMzRhOWM4YjdmYzBhNTA3NWVkZTgxYTBkMzY5NzBlOThjNDdm
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVDb252b2x2ZU1hdHJpeEVsZW1l
bnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRUNvbnZvbHZlTWF0cml4RWxlbWVu
dC5jcHAKQEAgLTE5MSw5ICsxOTEsOSBAQCB2b2lkIFNWR0ZFQ29udm9sdmVNYXRyaXhFbGVtZW50
OjpzdmdBdHRyaWJ1dGVDaGFuZ2VkKGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0dHJOYQogICAgIFNW
R0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlczo6c3ZnQXR0cmlidXRlQ2hhbmdlZChh
dHRyTmFtZSk7CiB9CiAKLVJlZlB0cjxGaWx0ZXJFZmZlY3Q+IFNWR0ZFQ29udm9sdmVNYXRyaXhF
bGVtZW50OjpidWlsZChTVkdGaWx0ZXJCdWlsZGVyKiBmaWx0ZXJCdWlsZGVyLCBGaWx0ZXImIGZp
bHRlcikgY29uc3QKK1JlZlB0cjxGaWx0ZXJFZmZlY3Q+IFNWR0ZFQ29udm9sdmVNYXRyaXhFbGVt
ZW50OjpidWlsZChTVkdGaWx0ZXJCdWlsZGVyJiBmaWx0ZXJCdWlsZGVyKSBjb25zdAogewotICAg
IGF1dG8gaW5wdXQxID0gZmlsdGVyQnVpbGRlci0+Z2V0RWZmZWN0QnlJZChpbjEoKSk7CisgICAg
YXV0byBpbnB1dDEgPSBmaWx0ZXJCdWlsZGVyLmdldEVmZmVjdEJ5SWQoaW4xKCkpOwogCiAgICAg
aWYgKCFpbnB1dDEpCiAgICAgICAgIHJldHVybiBudWxscHRyOwpAQCAtMjQ2LDggKzI0Niw4IEBA
IFJlZlB0cjxGaWx0ZXJFZmZlY3Q+IFNWR0ZFQ29udm9sdmVNYXRyaXhFbGVtZW50OjpidWlsZChT
VkdGaWx0ZXJCdWlsZGVyKiBmaWx0ZXJCCiAgICAgICAgICAgICBkaXZpc29yVmFsdWUgPSAxOwog
ICAgIH0KIAotICAgIGF1dG8gZWZmZWN0ID0gRkVDb252b2x2ZU1hdHJpeDo6Y3JlYXRlKGZpbHRl
ciwgSW50U2l6ZShvcmRlclhWYWx1ZSwgb3JkZXJZVmFsdWUpLCBkaXZpc29yVmFsdWUsIGJpYXMo
KSwgSW50UG9pbnQodGFyZ2V0WFZhbHVlLCB0YXJnZXRZVmFsdWUpLCBlZGdlTW9kZSgpLCBGbG9h
dFBvaW50KGtlcm5lbFVuaXRMZW5ndGhYVmFsdWUsIGtlcm5lbFVuaXRMZW5ndGhZVmFsdWUpLCBw
cmVzZXJ2ZUFscGhhKCksIGtlcm5lbE1hdHJpeCk7Ci0gICAgZWZmZWN0LT5pbnB1dEVmZmVjdHMo
KSA9IHsgaW5wdXQxIH07CisgICAgYXV0byBlZmZlY3QgPSBGRUNvbnZvbHZlTWF0cml4OjpjcmVh
dGUoSW50U2l6ZShvcmRlclhWYWx1ZSwgb3JkZXJZVmFsdWUpLCBkaXZpc29yVmFsdWUsIGJpYXMo
KSwgSW50UG9pbnQodGFyZ2V0WFZhbHVlLCB0YXJnZXRZVmFsdWUpLCBlZGdlTW9kZSgpLCBGbG9h
dFBvaW50KGtlcm5lbFVuaXRMZW5ndGhYVmFsdWUsIGtlcm5lbFVuaXRMZW5ndGhZVmFsdWUpLCBw
cmVzZXJ2ZUFscGhhKCksIGtlcm5lbE1hdHJpeCk7CisgICAgZWZmZWN0LT5pbnB1dEVmZmVjdHMo
KSA9IHsgV1RGTW92ZShpbnB1dDEpIH07CiAgICAgcmV0dXJuIGVmZmVjdDsKIH0KIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFQ29udm9sdmVNYXRyaXhFbGVtZW50LmggYi9T
b3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVDb252b2x2ZU1hdHJpeEVsZW1lbnQuaAppbmRleCA4NWMw
MDI2OThjNjI3N2UwNDM3MGQzNTk4MmE5NWI4ZDkwNDliMzM5Li4xYjZiYmU0ODcxMjc1YzQyMWM4
ZGQ0NDA5YzFiNDg5NzI5NWFhMTBhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZH
RkVDb252b2x2ZU1hdHJpeEVsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVD
b252b2x2ZU1hdHJpeEVsZW1lbnQuaApAQCAtMTAzLDcgKzEwMyw3IEBAIHByaXZhdGU6CiAgICAg
dm9pZCBzdmdBdHRyaWJ1dGVDaGFuZ2VkKGNvbnN0IFF1YWxpZmllZE5hbWUmKSBvdmVycmlkZTsK
IAogICAgIGJvb2wgc2V0RmlsdGVyRWZmZWN0QXR0cmlidXRlKEZpbHRlckVmZmVjdCosIGNvbnN0
IFF1YWxpZmllZE5hbWUmKSBvdmVycmlkZTsKLSAgICBSZWZQdHI8RmlsdGVyRWZmZWN0PiBidWls
ZChTVkdGaWx0ZXJCdWlsZGVyKiwgRmlsdGVyJikgY29uc3Qgb3ZlcnJpZGU7CisgICAgUmVmUHRy
PEZpbHRlckVmZmVjdD4gYnVpbGQoU1ZHRmlsdGVyQnVpbGRlciYpIGNvbnN0IG92ZXJyaWRlOwog
CiAgICAgUHJvcGVydHlSZWdpc3RyeSBtX3Byb3BlcnR5UmVnaXN0cnkgeyAqdGhpcyB9OwogICAg
IFJlZjxTVkdBbmltYXRlZFN0cmluZz4gbV9pbjEgeyBTVkdBbmltYXRlZFN0cmluZzo6Y3JlYXRl
KHRoaXMpIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVEaWZmdXNlTGln
aHRpbmdFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRURpZmZ1c2VMaWdodGlu
Z0VsZW1lbnQuY3BwCmluZGV4IDE1MmM5ODVmZDhlOTVhZTk5NTdlNmUyMWQ2YmYyYTEwYzQ1NGJk
ZDUuLmRkMzk0NTk1Y2Y3MjY0OGE2N2Q1MjhhMTM0MTUxZGEzNjdmNGM2OTkgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRURpZmZ1c2VMaWdodGluZ0VsZW1lbnQuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRURpZmZ1c2VMaWdodGluZ0VsZW1lbnQuY3BwCkBAIC0x
NTEsOSArMTUxLDkgQEAgdm9pZCBTVkdGRURpZmZ1c2VMaWdodGluZ0VsZW1lbnQ6OmxpZ2h0RWxl
bWVudEF0dHJpYnV0ZUNoYW5nZWQoY29uc3QgU1ZHRkVMaWdodEUKICAgICBwcmltaXRpdmVBdHRy
aWJ1dGVDaGFuZ2VkKGF0dHJOYW1lKTsKIH0KIAotUmVmUHRyPEZpbHRlckVmZmVjdD4gU1ZHRkVE
aWZmdXNlTGlnaHRpbmdFbGVtZW50OjpidWlsZChTVkdGaWx0ZXJCdWlsZGVyKiBmaWx0ZXJCdWls
ZGVyLCBGaWx0ZXImIGZpbHRlcikgY29uc3QKK1JlZlB0cjxGaWx0ZXJFZmZlY3Q+IFNWR0ZFRGlm
ZnVzZUxpZ2h0aW5nRWxlbWVudDo6YnVpbGQoU1ZHRmlsdGVyQnVpbGRlciYgZmlsdGVyQnVpbGRl
cikgY29uc3QKIHsKLSAgICBhdXRvIGlucHV0MSA9IGZpbHRlckJ1aWxkZXItPmdldEVmZmVjdEJ5
SWQoaW4xKCkpOworICAgIGF1dG8gaW5wdXQxID0gZmlsdGVyQnVpbGRlci5nZXRFZmZlY3RCeUlk
KGluMSgpKTsKIAogICAgIGlmICghaW5wdXQxKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKQEAg
LTE2Miw3ICsxNjIsNyBAQCBSZWZQdHI8RmlsdGVyRWZmZWN0PiBTVkdGRURpZmZ1c2VMaWdodGlu
Z0VsZW1lbnQ6OmJ1aWxkKFNWR0ZpbHRlckJ1aWxkZXIqIGZpbHRlcgogICAgIGlmICghbGlnaHRF
bGVtZW50KQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICAKLSAgICBhdXRvIGxpZ2h0U291
cmNlID0gbGlnaHRFbGVtZW50LT5saWdodFNvdXJjZSgqZmlsdGVyQnVpbGRlcik7CisgICAgYXV0
byBsaWdodFNvdXJjZSA9IGxpZ2h0RWxlbWVudC0+bGlnaHRTb3VyY2UoZmlsdGVyQnVpbGRlcik7
CiAKICAgICBSZW5kZXJPYmplY3QqIHJlbmRlcmVyID0gdGhpcy0+cmVuZGVyZXIoKTsKICAgICBp
ZiAoIXJlbmRlcmVyKQpAQCAtMTcwLDggKzE3MCw4IEBAIFJlZlB0cjxGaWx0ZXJFZmZlY3Q+IFNW
R0ZFRGlmZnVzZUxpZ2h0aW5nRWxlbWVudDo6YnVpbGQoU1ZHRmlsdGVyQnVpbGRlciogZmlsdGVy
CiAKICAgICBDb2xvciBjb2xvciA9IHJlbmRlcmVyLT5zdHlsZSgpLmNvbG9yQnlBcHBseWluZ0Nv
bG9yRmlsdGVyKHJlbmRlcmVyLT5zdHlsZSgpLnN2Z1N0eWxlKCkubGlnaHRpbmdDb2xvcigpKTsK
IAotICAgIGF1dG8gZWZmZWN0ID0gRkVEaWZmdXNlTGlnaHRpbmc6OmNyZWF0ZShmaWx0ZXIsIGNv
bG9yLCBzdXJmYWNlU2NhbGUoKSwgZGlmZnVzZUNvbnN0YW50KCksIGtlcm5lbFVuaXRMZW5ndGhY
KCksIGtlcm5lbFVuaXRMZW5ndGhZKCksIFdURk1vdmUobGlnaHRTb3VyY2UpKTsKLSAgICBlZmZl
Y3QtPmlucHV0RWZmZWN0cygpID0geyBpbnB1dDEgfTsKKyAgICBhdXRvIGVmZmVjdCA9IEZFRGlm
ZnVzZUxpZ2h0aW5nOjpjcmVhdGUoY29sb3IsIHN1cmZhY2VTY2FsZSgpLCBkaWZmdXNlQ29uc3Rh
bnQoKSwga2VybmVsVW5pdExlbmd0aFgoKSwga2VybmVsVW5pdExlbmd0aFkoKSwgV1RGTW92ZShs
aWdodFNvdXJjZSkpOworICAgIGVmZmVjdC0+aW5wdXRFZmZlY3RzKCkgPSB7IFdURk1vdmUoaW5w
dXQxKSB9OwogICAgIHJldHVybiBlZmZlY3Q7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3N2Zy9TVkdGRURpZmZ1c2VMaWdodGluZ0VsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL3N2
Zy9TVkdGRURpZmZ1c2VMaWdodGluZ0VsZW1lbnQuaAppbmRleCA2ODk5OTYwOWY0YjZiNTZhNzZj
ODhlYTU2OTVmMWUwZTllMjA1NTgwLi5iMmFhYzhiMDNlZDI0ZDIxZDk4YjUxOWZiYThlNWY5NDVj
YTMwODBkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVEaWZmdXNlTGlnaHRp
bmdFbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFRGlmZnVzZUxpZ2h0aW5n
RWxlbWVudC5oCkBAIC01OCw3ICs1OCw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBzdmdBdHRyaWJ1
dGVDaGFuZ2VkKGNvbnN0IFF1YWxpZmllZE5hbWUmKSBvdmVycmlkZTsKIAogICAgIGJvb2wgc2V0
RmlsdGVyRWZmZWN0QXR0cmlidXRlKEZpbHRlckVmZmVjdCosIGNvbnN0IFF1YWxpZmllZE5hbWUm
KSBvdmVycmlkZTsKLSAgICBSZWZQdHI8RmlsdGVyRWZmZWN0PiBidWlsZChTVkdGaWx0ZXJCdWls
ZGVyKiwgRmlsdGVyJikgY29uc3Qgb3ZlcnJpZGU7CisgICAgUmVmUHRyPEZpbHRlckVmZmVjdD4g
YnVpbGQoU1ZHRmlsdGVyQnVpbGRlciYpIGNvbnN0IG92ZXJyaWRlOwogCiAgICAgUHJvcGVydHlS
ZWdpc3RyeSBtX3Byb3BlcnR5UmVnaXN0cnkgeyAqdGhpcyB9OwogICAgIFJlZjxTVkdBbmltYXRl
ZFN0cmluZz4gbV9pbjEgeyBTVkdBbmltYXRlZFN0cmluZzo6Y3JlYXRlKHRoaXMpIH07CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVEaXNwbGFjZW1lbnRNYXBFbGVtZW50LmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRURpc3BsYWNlbWVudE1hcEVsZW1lbnQuY3BwCmlu
ZGV4IDBjNWU4MjViYzgyNTYwZjM2YTI2OWVhNmQ3MjJkZmQwNTE3M2Q4YzIuLjY5MDc1MTM3NTA3
ZDZjNjQ3NDlhMWM4YmM0MTJhMGFlZTUxYTFhMmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3N2Zy9TVkdGRURpc3BsYWNlbWVudE1hcEVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3N2Zy9TVkdGRURpc3BsYWNlbWVudE1hcEVsZW1lbnQuY3BwCkBAIC0xMTUsMTkgKzExNSwxNiBA
QCB2b2lkIFNWR0ZFRGlzcGxhY2VtZW50TWFwRWxlbWVudDo6c3ZnQXR0cmlidXRlQ2hhbmdlZChj
b25zdCBRdWFsaWZpZWROYW1lJiBhdHRyTgogICAgIFNWR0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJk
QXR0cmlidXRlczo6c3ZnQXR0cmlidXRlQ2hhbmdlZChhdHRyTmFtZSk7CiB9CiAKLVJlZlB0cjxG
aWx0ZXJFZmZlY3Q+IFNWR0ZFRGlzcGxhY2VtZW50TWFwRWxlbWVudDo6YnVpbGQoU1ZHRmlsdGVy
QnVpbGRlciogZmlsdGVyQnVpbGRlciwgRmlsdGVyJiBmaWx0ZXIpIGNvbnN0CitSZWZQdHI8Rmls
dGVyRWZmZWN0PiBTVkdGRURpc3BsYWNlbWVudE1hcEVsZW1lbnQ6OmJ1aWxkKFNWR0ZpbHRlckJ1
aWxkZXImIGZpbHRlckJ1aWxkZXIpIGNvbnN0CiB7Ci0gICAgYXV0byBpbnB1dDEgPSBmaWx0ZXJC
dWlsZGVyLT5nZXRFZmZlY3RCeUlkKGluMSgpKTsKLSAgICBhdXRvIGlucHV0MiA9IGZpbHRlckJ1
aWxkZXItPmdldEVmZmVjdEJ5SWQoaW4yKCkpOworICAgIGF1dG8gaW5wdXQxID0gZmlsdGVyQnVp
bGRlci5nZXRFZmZlY3RCeUlkKGluMSgpKTsKKyAgICBhdXRvIGlucHV0MiA9IGZpbHRlckJ1aWxk
ZXIuZ2V0RWZmZWN0QnlJZChpbjIoKSk7CiAgICAgCiAgICAgaWYgKCFpbnB1dDEgfHwgIWlucHV0
MikKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKLSAgICBhdXRvIGVmZmVjdCA9IEZFRGlzcGxh
Y2VtZW50TWFwOjpjcmVhdGUoZmlsdGVyLCB4Q2hhbm5lbFNlbGVjdG9yKCksIHlDaGFubmVsU2Vs
ZWN0b3IoKSwgc2NhbGUoKSk7Ci0gICAgRmlsdGVyRWZmZWN0VmVjdG9yJiBpbnB1dEVmZmVjdHMg
PSBlZmZlY3QtPmlucHV0RWZmZWN0cygpOwotICAgIGlucHV0RWZmZWN0cy5yZXNlcnZlQ2FwYWNp
dHkoMik7Ci0gICAgaW5wdXRFZmZlY3RzLmFwcGVuZChpbnB1dDEpOwotICAgIGlucHV0RWZmZWN0
cy5hcHBlbmQoaW5wdXQyKTsgICAgCisgICAgYXV0byBlZmZlY3QgPSBGRURpc3BsYWNlbWVudE1h
cDo6Y3JlYXRlKHhDaGFubmVsU2VsZWN0b3IoKSwgeUNoYW5uZWxTZWxlY3RvcigpLCBzY2FsZSgp
KTsKKyAgICBlZmZlY3QtPmlucHV0RWZmZWN0cygpID0geyBXVEZNb3ZlKGlucHV0MSksIFdURk1v
dmUoaW5wdXQyKSB9OwogICAgIHJldHVybiBlZmZlY3Q7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3N2Zy9TVkdGRURpc3BsYWNlbWVudE1hcEVsZW1lbnQuaCBiL1NvdXJjZS9XZWJD
b3JlL3N2Zy9TVkdGRURpc3BsYWNlbWVudE1hcEVsZW1lbnQuaAppbmRleCBhYTkxZGYzOGIzNjI5
OGYxMjFhMTQxMWM0ZDBhZTVlY2Q1ODY2NWQzLi5mMmM2ZDBiMThmODVjOTRmMzg0ZjViZDFiZWZj
MzU5ZWRlODIzZTZhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVEaXNwbGFj
ZW1lbnRNYXBFbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFRGlzcGxhY2Vt
ZW50TWFwRWxlbWVudC5oCkBAIC05MSw3ICs5MSw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBzdmdB
dHRyaWJ1dGVDaGFuZ2VkKGNvbnN0IFF1YWxpZmllZE5hbWUmKSBvdmVycmlkZTsKIAogICAgIGJv
b2wgc2V0RmlsdGVyRWZmZWN0QXR0cmlidXRlKEZpbHRlckVmZmVjdCosIGNvbnN0IFF1YWxpZmll
ZE5hbWUmIGF0dHJOYW1lKSBvdmVycmlkZTsKLSAgICBSZWZQdHI8RmlsdGVyRWZmZWN0PiBidWls
ZChTVkdGaWx0ZXJCdWlsZGVyKiwgRmlsdGVyJikgY29uc3Qgb3ZlcnJpZGU7CisgICAgUmVmUHRy
PEZpbHRlckVmZmVjdD4gYnVpbGQoU1ZHRmlsdGVyQnVpbGRlciYpIGNvbnN0IG92ZXJyaWRlOwog
CiAgICAgUHJvcGVydHlSZWdpc3RyeSBtX3Byb3BlcnR5UmVnaXN0cnkgeyAqdGhpcyB9OwogICAg
IFJlZjxTVkdBbmltYXRlZFN0cmluZz4gbV9pbjEgeyBTVkdBbmltYXRlZFN0cmluZzo6Y3JlYXRl
KHRoaXMpIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVEcm9wU2hhZG93
RWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVEcm9wU2hhZG93RWxlbWVudC5j
cHAKaW5kZXggMjJiY2UxZDMzMzE3Yzk1NzFmZTVkNzlmNGIzMjZhODliZmM1YjY4MS4uNjU3YWMx
NzVhMzA4ODFlNTNmYmZmNzA4ZGNmMTQxNjA1ZTg0MDkwNyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvc3ZnL1NWR0ZFRHJvcFNoYWRvd0VsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3N2Zy9TVkdGRURyb3BTaGFkb3dFbGVtZW50LmNwcApAQCAtOTcsOCArOTcsMTIgQEAgdm9pZCBT
VkdGRURyb3BTaGFkb3dFbGVtZW50OjpzdmdBdHRyaWJ1dGVDaGFuZ2VkKGNvbnN0IFF1YWxpZmll
ZE5hbWUmIGF0dHJOYW1lKQogICAgIFNWR0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRl
czo6c3ZnQXR0cmlidXRlQ2hhbmdlZChhdHRyTmFtZSk7CiB9CiAKLVJlZlB0cjxGaWx0ZXJFZmZl
Y3Q+IFNWR0ZFRHJvcFNoYWRvd0VsZW1lbnQ6OmJ1aWxkKFNWR0ZpbHRlckJ1aWxkZXIqIGZpbHRl
ckJ1aWxkZXIsIEZpbHRlciYgZmlsdGVyKSBjb25zdAorUmVmUHRyPEZpbHRlckVmZmVjdD4gU1ZH
RkVEcm9wU2hhZG93RWxlbWVudDo6YnVpbGQoU1ZHRmlsdGVyQnVpbGRlciYgZmlsdGVyQnVpbGRl
cikgY29uc3QKIHsKKyAgICBhdXRvIGlucHV0MSA9IGZpbHRlckJ1aWxkZXIuZ2V0RWZmZWN0QnlJ
ZChpbjEoKSk7CisgICAgaWYgKCFpbnB1dDEpCisgICAgICAgIHJldHVybiBudWxscHRyOworCiAg
ICAgUmVuZGVyT2JqZWN0KiByZW5kZXJlciA9IHRoaXMtPnJlbmRlcmVyKCk7CiAgICAgaWYgKCFy
ZW5kZXJlcikKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CkBAIC0xMTEsMTIgKzExNSw4IEBAIFJl
ZlB0cjxGaWx0ZXJFZmZlY3Q+IFNWR0ZFRHJvcFNoYWRvd0VsZW1lbnQ6OmJ1aWxkKFNWR0ZpbHRl
ckJ1aWxkZXIqIGZpbHRlckJ1aWxkCiAgICAgQ29sb3IgY29sb3IgPSByZW5kZXJlci0+c3R5bGUo
KS5jb2xvckJ5QXBwbHlpbmdDb2xvckZpbHRlcihzdmdTdHlsZS5mbG9vZENvbG9yKCkpOwogICAg
IGZsb2F0IG9wYWNpdHkgPSBzdmdTdHlsZS5mbG9vZE9wYWNpdHkoKTsKIAotICAgIGF1dG8gaW5w
dXQxID0gZmlsdGVyQnVpbGRlci0+Z2V0RWZmZWN0QnlJZChpbjEoKSk7Ci0gICAgaWYgKCFpbnB1
dDEpCi0gICAgICAgIHJldHVybiBudWxscHRyOwotCi0gICAgYXV0byBlZmZlY3QgPSBGRURyb3BT
aGFkb3c6OmNyZWF0ZShmaWx0ZXIsIHN0ZERldmlhdGlvblgoKSwgc3RkRGV2aWF0aW9uWSgpLCBk
eCgpLCBkeSgpLCBjb2xvciwgb3BhY2l0eSk7Ci0gICAgZWZmZWN0LT5pbnB1dEVmZmVjdHMoKSA9
IHsgaW5wdXQxIH07CisgICAgYXV0byBlZmZlY3QgPSBGRURyb3BTaGFkb3c6OmNyZWF0ZShzdGRE
ZXZpYXRpb25YKCksIHN0ZERldmlhdGlvblkoKSwgZHgoKSwgZHkoKSwgY29sb3IsIG9wYWNpdHkp
OworICAgIGVmZmVjdC0+aW5wdXRFZmZlY3RzKCkgPSB7IFdURk1vdmUoaW5wdXQxKSB9OwogICAg
IHJldHVybiBlZmZlY3Q7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdG
RURyb3BTaGFkb3dFbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVEcm9wU2hhZG93
RWxlbWVudC5oCmluZGV4IDliNjJkMjRiNDU0YmI3ZDI3NThlNzEyYjYyMWI4Y2JlNDJmNzQ1MWQu
LjNlNDA1ZGU0ODljNjgxYTc2YzQ0ZjlhODI5NzMzYTIwMjZiNGQ4ZmEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3N2Zy9TVkdGRURyb3BTaGFkb3dFbGVtZW50LmgKKysrIGIvU291cmNlL1dl
YkNvcmUvc3ZnL1NWR0ZFRHJvcFNoYWRvd0VsZW1lbnQuaApAQCAtNTMsNyArNTMsNyBAQCBwcml2
YXRlOgogICAgIHZvaWQgcGFyc2VBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYsIGNvbnN0
IEF0b21TdHJpbmcmKSBvdmVycmlkZTsKICAgICB2b2lkIHN2Z0F0dHJpYnV0ZUNoYW5nZWQoY29u
c3QgUXVhbGlmaWVkTmFtZSYpIG92ZXJyaWRlOwogCi0gICAgUmVmUHRyPEZpbHRlckVmZmVjdD4g
YnVpbGQoU1ZHRmlsdGVyQnVpbGRlciosIEZpbHRlciYpIGNvbnN0IG92ZXJyaWRlOworICAgIFJl
ZlB0cjxGaWx0ZXJFZmZlY3Q+IGJ1aWxkKFNWR0ZpbHRlckJ1aWxkZXImKSBjb25zdCBvdmVycmlk
ZTsKIAogICAgIFByb3BlcnR5UmVnaXN0cnkgbV9wcm9wZXJ0eVJlZ2lzdHJ5IHsgKnRoaXMgfTsK
ICAgICBSZWY8U1ZHQW5pbWF0ZWRTdHJpbmc+IG1faW4xIHsgU1ZHQW5pbWF0ZWRTdHJpbmc6OmNy
ZWF0ZSh0aGlzKSB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFRmxvb2RF
bGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRUZsb29kRWxlbWVudC5jcHAKaW5k
ZXggYzIyOGUyMmQ1NjVkMGUxNjNmZjg3ZDBiNGJjYWJkMjI0NDc1OGZjMi4uZjMyOGNjN2MxNWVl
NzkxYjRhYWJhM2E4ZTcxYTgwNGM4MDkzZGNmZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
c3ZnL1NWR0ZFRmxvb2RFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVG
bG9vZEVsZW1lbnQuY3BwCkBAIC01OCw3ICs1OCw3IEBAIGJvb2wgU1ZHRkVGbG9vZEVsZW1lbnQ6
OnNldEZpbHRlckVmZmVjdEF0dHJpYnV0ZShGaWx0ZXJFZmZlY3QqIGVmZmVjdCwgY29uc3QgUXVh
CiAgICAgcmV0dXJuIGZhbHNlOwogfQogCi1SZWZQdHI8RmlsdGVyRWZmZWN0PiBTVkdGRUZsb29k
RWxlbWVudDo6YnVpbGQoU1ZHRmlsdGVyQnVpbGRlciosIEZpbHRlciYgZmlsdGVyKSBjb25zdAor
UmVmUHRyPEZpbHRlckVmZmVjdD4gU1ZHRkVGbG9vZEVsZW1lbnQ6OmJ1aWxkKFNWR0ZpbHRlckJ1
aWxkZXImKSBjb25zdAogewogICAgIFJlbmRlck9iamVjdCogcmVuZGVyZXIgPSB0aGlzLT5yZW5k
ZXJlcigpOwogICAgIGlmICghcmVuZGVyZXIpCkBAIC02OSw3ICs2OSw3IEBAIFJlZlB0cjxGaWx0
ZXJFZmZlY3Q+IFNWR0ZFRmxvb2RFbGVtZW50OjpidWlsZChTVkdGaWx0ZXJCdWlsZGVyKiwgRmls
dGVyJiBmaWx0ZXIpCiAgICAgQ29sb3IgY29sb3IgPSByZW5kZXJlci0+c3R5bGUoKS5jb2xvckJ5
QXBwbHlpbmdDb2xvckZpbHRlcihzdmdTdHlsZS5mbG9vZENvbG9yKCkpOwogICAgIGZsb2F0IG9w
YWNpdHkgPSBzdmdTdHlsZS5mbG9vZE9wYWNpdHkoKTsKIAotICAgIHJldHVybiBGRUZsb29kOjpj
cmVhdGUoZmlsdGVyLCBjb2xvciwgb3BhY2l0eSk7CisgICAgcmV0dXJuIEZFRmxvb2Q6OmNyZWF0
ZShjb2xvciwgb3BhY2l0eSk7CiB9CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2
Zy9TVkdGRUZsb29kRWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFRmxvb2RFbGVt
ZW50LmgKaW5kZXggYjk2YTQzYWEzMTNlNzVlNGEzMTY3MjQ4YTFiNmY1Y2Y1MWZlZTkxMS4uYWVk
NjY5MTkzM2JkMDJmMzMwMWE5MjM5N2I3NDA1OWZmNmJlYzRiZSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvc3ZnL1NWR0ZFRmxvb2RFbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvc3Zn
L1NWR0ZFRmxvb2RFbGVtZW50LmgKQEAgLTM2LDcgKzM2LDcgQEAgcHJpdmF0ZToKICAgICBjb25z
dCBTVkdQcm9wZXJ0eVJlZ2lzdHJ5JiBwcm9wZXJ0eVJlZ2lzdHJ5KCkgY29uc3QgZmluYWwgeyBy
ZXR1cm4gbV9wcm9wZXJ0eVJlZ2lzdHJ5OyB9CiAKICAgICBib29sIHNldEZpbHRlckVmZmVjdEF0
dHJpYnV0ZShGaWx0ZXJFZmZlY3QqLCBjb25zdCBRdWFsaWZpZWROYW1lJiBhdHRyTmFtZSkgb3Zl
cnJpZGU7Ci0gICAgUmVmUHRyPEZpbHRlckVmZmVjdD4gYnVpbGQoU1ZHRmlsdGVyQnVpbGRlcios
IEZpbHRlciYpIGNvbnN0IG92ZXJyaWRlOworICAgIFJlZlB0cjxGaWx0ZXJFZmZlY3Q+IGJ1aWxk
KFNWR0ZpbHRlckJ1aWxkZXImKSBjb25zdCBvdmVycmlkZTsKIAogICAgIFByb3BlcnR5UmVnaXN0
cnkgbV9wcm9wZXJ0eVJlZ2lzdHJ5IHsgKnRoaXMgfTsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9zdmcvU1ZHRkVHYXVzc2lhbkJsdXJFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3N2Zy9TVkdGRUdhdXNzaWFuQmx1ckVsZW1lbnQuY3BwCmluZGV4IDdhOTk4MjI0YzkyMTk1NTUy
NDRhODY5Y2E3OGE4MzBkNTYzYzU5OWQuLmYxZTZiZjQ5YTRkYjNkY2E3NzVjOWI3ZWZhNWRiOWRj
ODY5ODg3MmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRUdhdXNzaWFuQmx1
ckVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRUdhdXNzaWFuQmx1ckVs
ZW1lbnQuY3BwCkBAIC05NSwxNyArOTUsMTcgQEAgdm9pZCBTVkdGRUdhdXNzaWFuQmx1ckVsZW1l
bnQ6OnN2Z0F0dHJpYnV0ZUNoYW5nZWQoY29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0ck5hbWUKICAg
ICBTVkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXM6OnN2Z0F0dHJpYnV0ZUNoYW5n
ZWQoYXR0ck5hbWUpOwogfQogCi1SZWZQdHI8RmlsdGVyRWZmZWN0PiBTVkdGRUdhdXNzaWFuQmx1
ckVsZW1lbnQ6OmJ1aWxkKFNWR0ZpbHRlckJ1aWxkZXIqIGZpbHRlckJ1aWxkZXIsIEZpbHRlciYg
ZmlsdGVyKSBjb25zdAorUmVmUHRyPEZpbHRlckVmZmVjdD4gU1ZHRkVHYXVzc2lhbkJsdXJFbGVt
ZW50OjpidWlsZChTVkdGaWx0ZXJCdWlsZGVyJiBmaWx0ZXJCdWlsZGVyKSBjb25zdAogewotICAg
IGF1dG8gaW5wdXQxID0gZmlsdGVyQnVpbGRlci0+Z2V0RWZmZWN0QnlJZChpbjEoKSk7CisgICAg
YXV0byBpbnB1dDEgPSBmaWx0ZXJCdWlsZGVyLmdldEVmZmVjdEJ5SWQoaW4xKCkpOwogICAgIGlm
ICghaW5wdXQxKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAogICAgIGlmIChzdGREZXZpYXRp
b25YKCkgPCAwIHx8IHN0ZERldmlhdGlvblkoKSA8IDApCiAgICAgICAgIHJldHVybiBudWxscHRy
OwogCi0gICAgYXV0byBlZmZlY3QgPSBGRUdhdXNzaWFuQmx1cjo6Y3JlYXRlKGZpbHRlciwgc3Rk
RGV2aWF0aW9uWCgpLCBzdGREZXZpYXRpb25ZKCksIGVkZ2VNb2RlKCkpOwotICAgIGVmZmVjdC0+
aW5wdXRFZmZlY3RzKCkgPSB7IGlucHV0MSB9OworICAgIGF1dG8gZWZmZWN0ID0gRkVHYXVzc2lh
bkJsdXI6OmNyZWF0ZShzdGREZXZpYXRpb25YKCksIHN0ZERldmlhdGlvblkoKSwgZWRnZU1vZGUo
KSk7CisgICAgZWZmZWN0LT5pbnB1dEVmZmVjdHMoKSA9IHsgV1RGTW92ZShpbnB1dDEpIH07CiAg
ICAgcmV0dXJuIGVmZmVjdDsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NW
R0ZFR2F1c3NpYW5CbHVyRWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFR2F1c3Np
YW5CbHVyRWxlbWVudC5oCmluZGV4IGQ4OWUxYTc0OGZiMmM1MDllMjE0ZmU5NGFlNDEwMDFjZTQ4
ZWUwYjIuLmY0MGViMzM3NzhjNDNkZjYxZWU1ODk2M2VlY2Y5ZWNkYmE1NDljYzEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRUdhdXNzaWFuQmx1ckVsZW1lbnQuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVHYXVzc2lhbkJsdXJFbGVtZW50LmgKQEAgLTUzLDcgKzUz
LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIHBhcnNlQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5h
bWUmLCBjb25zdCBBdG9tU3RyaW5nJikgb3ZlcnJpZGU7CiAgICAgdm9pZCBzdmdBdHRyaWJ1dGVD
aGFuZ2VkKGNvbnN0IFF1YWxpZmllZE5hbWUmKSBvdmVycmlkZTsKIAotICAgIFJlZlB0cjxGaWx0
ZXJFZmZlY3Q+IGJ1aWxkKFNWR0ZpbHRlckJ1aWxkZXIqLCBGaWx0ZXImKSBjb25zdCBvdmVycmlk
ZTsKKyAgICBSZWZQdHI8RmlsdGVyRWZmZWN0PiBidWlsZChTVkdGaWx0ZXJCdWlsZGVyJikgY29u
c3Qgb3ZlcnJpZGU7CiAKICAgICBQcm9wZXJ0eVJlZ2lzdHJ5IG1fcHJvcGVydHlSZWdpc3RyeSB7
ICp0aGlzIH07CiAgICAgUmVmPFNWR0FuaW1hdGVkU3RyaW5nPiBtX2luMSB7IFNWR0FuaW1hdGVk
U3RyaW5nOjpjcmVhdGUodGhpcykgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9T
VkdGRUltYWdlRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVJbWFnZUVsZW1l
bnQuY3BwCmluZGV4IDdmODc4NWEyMWZmMDJiZGY4NjU2YjQ4ZjlhOTk4Njk2ODAzMzJmNmMuLjNj
YmJjMjRiYzY5MmIwNmEzMjlmODBmZGQwZmRlNzg3ZTAwNjgwODQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3N2Zy9TVkdGRUltYWdlRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
c3ZnL1NWR0ZFSW1hZ2VFbGVtZW50LmNwcApAQCAtMjA4LDE2ICsyMDgsMTYgQEAgc3RkOjp0dXBs
ZTxSZWZQdHI8SW1hZ2VCdWZmZXI+LCBGbG9hdFJlY3Q+IFNWR0ZFSW1hZ2VFbGVtZW50OjppbWFn
ZUJ1ZmZlckZvckVmZmUKICAgICByZXR1cm4geyBpbWFnZUJ1ZmZlciwgaW1hZ2VSZWN0IH07CiB9
CiAKLVJlZlB0cjxGaWx0ZXJFZmZlY3Q+IFNWR0ZFSW1hZ2VFbGVtZW50OjpidWlsZChTVkdGaWx0
ZXJCdWlsZGVyKiwgRmlsdGVyJiBmaWx0ZXIpIGNvbnN0CitSZWZQdHI8RmlsdGVyRWZmZWN0PiBT
VkdGRUltYWdlRWxlbWVudDo6YnVpbGQoU1ZHRmlsdGVyQnVpbGRlciYpIGNvbnN0CiB7CiAgICAg
aWYgKG1fY2FjaGVkSW1hZ2UpCi0gICAgICAgIHJldHVybiBGRUltYWdlOjpjcmVhdGUoZmlsdGVy
LCBSZWY8SW1hZ2U+IHsgKm1fY2FjaGVkSW1hZ2UtPmltYWdlRm9yUmVuZGVyZXIocmVuZGVyZXIo
KSkgfSwgcHJlc2VydmVBc3BlY3RSYXRpbygpKTsKKyAgICAgICAgcmV0dXJuIEZFSW1hZ2U6OmNy
ZWF0ZShSZWY8SW1hZ2U+IHsgKm1fY2FjaGVkSW1hZ2UtPmltYWdlRm9yUmVuZGVyZXIocmVuZGVy
ZXIoKSkgfSwgcHJlc2VydmVBc3BlY3RSYXRpbygpKTsKIAogICAgIGF1dG8gW2ltYWdlQnVmZmVy
LCBpbWFnZVJlY3RdID0gaW1hZ2VCdWZmZXJGb3JFZmZlY3QoKTsKICAgICBpZiAoIWltYWdlQnVm
ZmVyKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAotICAgIHJldHVybiBGRUltYWdlOjpjcmVh
dGUoZmlsdGVyLCBpbWFnZUJ1ZmZlci5yZWxlYXNlTm9uTnVsbCgpLCBpbWFnZVJlY3QsIHByZXNl
cnZlQXNwZWN0UmF0aW8oKSk7CisgICAgcmV0dXJuIEZFSW1hZ2U6OmNyZWF0ZShpbWFnZUJ1ZmZl
ci5yZWxlYXNlTm9uTnVsbCgpLCBpbWFnZVJlY3QsIHByZXNlcnZlQXNwZWN0UmF0aW8oKSk7CiB9
CiAKIHZvaWQgU1ZHRkVJbWFnZUVsZW1lbnQ6OmFkZFN1YnJlc291cmNlQXR0cmlidXRlVVJMcyhM
aXN0SGFzaFNldDxVUkw+JiB1cmxzKSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
c3ZnL1NWR0ZFSW1hZ2VFbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVJbWFnZUVs
ZW1lbnQuaAppbmRleCA2MGNlMTAyYzBmNzJhYzg4Y2E5MDAxMDM3M2Q2NjRjNjYzMmQ0YmUxLi5k
ZjlkNmVmMDQxZTU0YjJhYmQyMjAwNWQ5MDM0YmJhNjllMjViZTUxIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9zdmcvU1ZHRkVJbWFnZUVsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9z
dmcvU1ZHRkVJbWFnZUVsZW1lbnQuaApAQCAtNTcsNyArNTcsNyBAQCBwcml2YXRlOgogCiAgICAg
c3RkOjp0dXBsZTxSZWZQdHI8SW1hZ2VCdWZmZXI+LCBGbG9hdFJlY3Q+IGltYWdlQnVmZmVyRm9y
RWZmZWN0KCkgY29uc3Q7CiAKLSAgICBSZWZQdHI8RmlsdGVyRWZmZWN0PiBidWlsZChTVkdGaWx0
ZXJCdWlsZGVyKiwgRmlsdGVyJikgY29uc3Qgb3ZlcnJpZGU7CisgICAgUmVmUHRyPEZpbHRlckVm
ZmVjdD4gYnVpbGQoU1ZHRmlsdGVyQnVpbGRlciYpIGNvbnN0IG92ZXJyaWRlOwogCiAgICAgdm9p
ZCBjbGVhclJlc291cmNlUmVmZXJlbmNlcygpOwogICAgIHZvaWQgcmVxdWVzdEltYWdlUmVzb3Vy
Y2UoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRU1lcmdlRWxlbWVudC5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVNZXJnZUVsZW1lbnQuY3BwCmluZGV4IGJlMmY2
ZTAzMDdkYzU1MTYwMDc5MGZkNWJmMTgyZjFkOTQ2MjNkZDYuLmZiNDkzZTU5ZGQ4MmJjNjlhZDc5
MWIzNzVjZThhODI5MmNkN2M4MWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdG
RU1lcmdlRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFTWVyZ2VFbGVt
ZW50LmNwcApAQCAtNDUsMTMgKzQ1LDEyIEBAIFJlZjxTVkdGRU1lcmdlRWxlbWVudD4gU1ZHRkVN
ZXJnZUVsZW1lbnQ6OmNyZWF0ZShjb25zdCBRdWFsaWZpZWROYW1lJiB0YWdOYW1lLCBECiAgICAg
cmV0dXJuIGFkb3B0UmVmKCpuZXcgU1ZHRkVNZXJnZUVsZW1lbnQodGFnTmFtZSwgZG9jdW1lbnQp
KTsKIH0KIAotUmVmUHRyPEZpbHRlckVmZmVjdD4gU1ZHRkVNZXJnZUVsZW1lbnQ6OmJ1aWxkKFNW
R0ZpbHRlckJ1aWxkZXIqIGZpbHRlckJ1aWxkZXIsIEZpbHRlciYgZmlsdGVyKSBjb25zdAorUmVm
UHRyPEZpbHRlckVmZmVjdD4gU1ZHRkVNZXJnZUVsZW1lbnQ6OmJ1aWxkKFNWR0ZpbHRlckJ1aWxk
ZXImIGZpbHRlckJ1aWxkZXIpIGNvbnN0CiB7Ci0gICAgYXV0byBlZmZlY3QgPSBGRU1lcmdlOjpj
cmVhdGUoZmlsdGVyKTsKLSAgICBhdXRvJiBtZXJnZUlucHV0cyA9IGVmZmVjdC0+aW5wdXRFZmZl
Y3RzKCk7CisgICAgRmlsdGVyRWZmZWN0VmVjdG9yIG1lcmdlSW5wdXRzOwogCiAgICAgZm9yIChh
dXRvJiBtZXJnZU5vZGUgOiBjaGlsZHJlbk9mVHlwZTxTVkdGRU1lcmdlTm9kZUVsZW1lbnQ+KCp0
aGlzKSkgewotICAgICAgICBhdXRvIG1lcmdlRWZmZWN0ID0gZmlsdGVyQnVpbGRlci0+Z2V0RWZm
ZWN0QnlJZChtZXJnZU5vZGUuaW4xKCkpOworICAgICAgICBhdXRvIG1lcmdlRWZmZWN0ID0gZmls
dGVyQnVpbGRlci5nZXRFZmZlY3RCeUlkKG1lcmdlTm9kZS5pbjEoKSk7CiAgICAgICAgIGlmICgh
bWVyZ2VFZmZlY3QpCiAgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICAgICAgbWVyZ2VJ
bnB1dHMuYXBwZW5kKFdURk1vdmUobWVyZ2VFZmZlY3QpKTsKQEAgLTYyLDYgKzYxLDggQEAgUmVm
UHRyPEZpbHRlckVmZmVjdD4gU1ZHRkVNZXJnZUVsZW1lbnQ6OmJ1aWxkKFNWR0ZpbHRlckJ1aWxk
ZXIqIGZpbHRlckJ1aWxkZXIsIEYKICAgICBpZiAobWVyZ2VJbnB1dHMuaXNFbXB0eSgpKQogICAg
ICAgICByZXR1cm4gbnVsbHB0cjsKIAorICAgIGF1dG8gZWZmZWN0ID0gRkVNZXJnZTo6Y3JlYXRl
KCk7CisgICAgZWZmZWN0LT5pbnB1dEVmZmVjdHMoKSA9IFdURk1vdmUobWVyZ2VJbnB1dHMpOwog
ICAgIHJldHVybiBlZmZlY3Q7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9T
VkdGRU1lcmdlRWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFTWVyZ2VFbGVtZW50
LmgKaW5kZXggNzQ1MDg2ODE2ZjY5NzZjNjY5N2RjNTEwNzU4MDJkMjgzY2Y0ZTNjMi4uNDM3Y2Q3
MjU2MzJjNWY0YzUyNDg5NGNjMzI2Y2EwOWI0MTk4NTE3ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvc3ZnL1NWR0ZFTWVyZ2VFbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NW
R0ZFTWVyZ2VFbGVtZW50LmgKQEAgLTM1LDcgKzM1LDcgQEAgcHJpdmF0ZToKICAgICB1c2luZyBQ
cm9wZXJ0eVJlZ2lzdHJ5ID0gU1ZHUHJvcGVydHlPd25lclJlZ2lzdHJ5PFNWR0ZFTWVyZ2VFbGVt
ZW50LCBTVkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXM+OwogICAgIGNvbnN0IFNW
R1Byb3BlcnR5UmVnaXN0cnkmIHByb3BlcnR5UmVnaXN0cnkoKSBjb25zdCBmaW5hbCB7IHJldHVy
biBtX3Byb3BlcnR5UmVnaXN0cnk7IH0KIAotICAgIFJlZlB0cjxGaWx0ZXJFZmZlY3Q+IGJ1aWxk
KFNWR0ZpbHRlckJ1aWxkZXIqLCBGaWx0ZXImKSBjb25zdCBvdmVycmlkZTsKKyAgICBSZWZQdHI8
RmlsdGVyRWZmZWN0PiBidWlsZChTVkdGaWx0ZXJCdWlsZGVyJikgY29uc3Qgb3ZlcnJpZGU7CiAK
ICAgICBQcm9wZXJ0eVJlZ2lzdHJ5IG1fcHJvcGVydHlSZWdpc3RyeSB7ICp0aGlzIH07CiB9Owpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFTW9ycGhvbG9neUVsZW1lbnQuY3Bw
IGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFTW9ycGhvbG9neUVsZW1lbnQuY3BwCmluZGV4IGQ2
ZmI5NWM4ZTM3NzZlNmQyMDkzYmVhY2UzNWUyZWQxNzk1ZDMyMWIuLjhiMDU2MGM0ZGE4MDAzOTcw
MTQ4ZTFlMTVlMmYzMDk3YjkxNTMxNTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9T
VkdGRU1vcnBob2xvZ3lFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVN
b3JwaG9sb2d5RWxlbWVudC5jcHAKQEAgLTExNCwyMCArMTE0LDE5IEBAIHZvaWQgU1ZHRkVNb3Jw
aG9sb2d5RWxlbWVudDo6c3ZnQXR0cmlidXRlQ2hhbmdlZChjb25zdCBRdWFsaWZpZWROYW1lJiBh
dHRyTmFtZSkKICAgICBTVkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXM6OnN2Z0F0
dHJpYnV0ZUNoYW5nZWQoYXR0ck5hbWUpOwogfQogCi1SZWZQdHI8RmlsdGVyRWZmZWN0PiBTVkdG
RU1vcnBob2xvZ3lFbGVtZW50OjpidWlsZChTVkdGaWx0ZXJCdWlsZGVyKiBmaWx0ZXJCdWlsZGVy
LCBGaWx0ZXImIGZpbHRlcikgY29uc3QKK1JlZlB0cjxGaWx0ZXJFZmZlY3Q+IFNWR0ZFTW9ycGhv
bG9neUVsZW1lbnQ6OmJ1aWxkKFNWR0ZpbHRlckJ1aWxkZXImIGZpbHRlckJ1aWxkZXIpIGNvbnN0
CiB7Ci0gICAgYXV0byBpbnB1dDEgPSBmaWx0ZXJCdWlsZGVyLT5nZXRFZmZlY3RCeUlkKGluMSgp
KTsKLSAgICBmbG9hdCB4UmFkaXVzID0gcmFkaXVzWCgpOwotICAgIGZsb2F0IHlSYWRpdXMgPSBy
YWRpdXNZKCk7Ci0KKyAgICBhdXRvIGlucHV0MSA9IGZpbHRlckJ1aWxkZXIuZ2V0RWZmZWN0QnlJ
ZChpbjEoKSk7CiAgICAgaWYgKCFpbnB1dDEpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCisg
ICAgZmxvYXQgeFJhZGl1cyA9IHJhZGl1c1goKTsKKyAgICBmbG9hdCB5UmFkaXVzID0gcmFkaXVz
WSgpOwogICAgIGlmICh4UmFkaXVzIDwgMCB8fCB5UmFkaXVzIDwgMCkKICAgICAgICAgcmV0dXJu
IG51bGxwdHI7CiAKLSAgICBhdXRvIGVmZmVjdCA9IEZFTW9ycGhvbG9neTo6Y3JlYXRlKGZpbHRl
ciwgc3ZnT3BlcmF0b3IoKSwgeFJhZGl1cywgeVJhZGl1cyk7Ci0gICAgZWZmZWN0LT5pbnB1dEVm
ZmVjdHMoKSA9IHsgaW5wdXQxIH07CisgICAgYXV0byBlZmZlY3QgPSBGRU1vcnBob2xvZ3k6OmNy
ZWF0ZShzdmdPcGVyYXRvcigpLCB4UmFkaXVzLCB5UmFkaXVzKTsKKyAgICBlZmZlY3QtPmlucHV0
RWZmZWN0cygpID0geyBXVEZNb3ZlKGlucHV0MSkgfTsKICAgICByZXR1cm4gZWZmZWN0OwogfQog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVNb3JwaG9sb2d5RWxlbWVudC5o
IGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFTW9ycGhvbG9neUVsZW1lbnQuaAppbmRleCAxYTkw
ODhiNzVjZjhkODVhZTM4ZjI5M2UxMTE5OGE2NmY2NmFhNjY5Li5iMjFiNmY1YzQ3Yjc4NWRmMjhm
MDEzZWRlNTQwMWM4NjZkNDBlOWRkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZH
RkVNb3JwaG9sb2d5RWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRU1vcnBo
b2xvZ3lFbGVtZW50LmgKQEAgLTgxLDcgKzgxLDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIHN2Z0F0
dHJpYnV0ZUNoYW5nZWQoY29uc3QgUXVhbGlmaWVkTmFtZSYpIG92ZXJyaWRlOwogCiAgICAgYm9v
bCBzZXRGaWx0ZXJFZmZlY3RBdHRyaWJ1dGUoRmlsdGVyRWZmZWN0KiwgY29uc3QgUXVhbGlmaWVk
TmFtZSYpIG92ZXJyaWRlOwotICAgIFJlZlB0cjxGaWx0ZXJFZmZlY3Q+IGJ1aWxkKFNWR0ZpbHRl
ckJ1aWxkZXIqLCBGaWx0ZXImKSBjb25zdCBvdmVycmlkZTsKKyAgICBSZWZQdHI8RmlsdGVyRWZm
ZWN0PiBidWlsZChTVkdGaWx0ZXJCdWlsZGVyJikgY29uc3Qgb3ZlcnJpZGU7CiAKICAgICBQcm9w
ZXJ0eVJlZ2lzdHJ5IG1fcHJvcGVydHlSZWdpc3RyeSB7ICp0aGlzIH07CiAgICAgUmVmPFNWR0Fu
aW1hdGVkU3RyaW5nPiBtX2luMSB7IFNWR0FuaW1hdGVkU3RyaW5nOjpjcmVhdGUodGhpcykgfTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRU9mZnNldEVsZW1lbnQuY3BwIGIv
U291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFT2Zmc2V0RWxlbWVudC5jcHAKaW5kZXggMDM4MjY4Yjg5
YjJmMTlmOWJlNTY4NzM5ZDEyMzAzNTQxMDBhNWVlNy4uMzM3OTBhNmE1NDAxMjc5ZmIyOGMyM2Zk
OTRkZTliNTUyMDlmN2EzYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFT2Zm
c2V0RWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFT2Zmc2V0RWxlbWVu
dC5jcHAKQEAgLTgxLDE1ICs4MSwxNCBAQCB2b2lkIFNWR0ZFT2Zmc2V0RWxlbWVudDo6c3ZnQXR0
cmlidXRlQ2hhbmdlZChjb25zdCBRdWFsaWZpZWROYW1lJiBhdHRyTmFtZSkKICAgICBTVkdGaWx0
ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXM6OnN2Z0F0dHJpYnV0ZUNoYW5nZWQoYXR0ck5h
bWUpOwogfQogCi1SZWZQdHI8RmlsdGVyRWZmZWN0PiBTVkdGRU9mZnNldEVsZW1lbnQ6OmJ1aWxk
KFNWR0ZpbHRlckJ1aWxkZXIqIGZpbHRlckJ1aWxkZXIsIEZpbHRlciYgZmlsdGVyKSBjb25zdAor
UmVmUHRyPEZpbHRlckVmZmVjdD4gU1ZHRkVPZmZzZXRFbGVtZW50OjpidWlsZChTVkdGaWx0ZXJC
dWlsZGVyJiBmaWx0ZXJCdWlsZGVyKSBjb25zdAogewotICAgIGF1dG8gaW5wdXQxID0gZmlsdGVy
QnVpbGRlci0+Z2V0RWZmZWN0QnlJZChpbjEoKSk7Ci0KKyAgICBhdXRvIGlucHV0MSA9IGZpbHRl
ckJ1aWxkZXIuZ2V0RWZmZWN0QnlJZChpbjEoKSk7CiAgICAgaWYgKCFpbnB1dDEpCiAgICAgICAg
IHJldHVybiBudWxscHRyOwogCi0gICAgYXV0byBlZmZlY3QgPSBGRU9mZnNldDo6Y3JlYXRlKGZp
bHRlciwgZHgoKSwgZHkoKSk7Ci0gICAgZWZmZWN0LT5pbnB1dEVmZmVjdHMoKSA9IHsgaW5wdXQx
IH07CisgICAgYXV0byBlZmZlY3QgPSBGRU9mZnNldDo6Y3JlYXRlKGR4KCksIGR5KCkpOworICAg
IGVmZmVjdC0+aW5wdXRFZmZlY3RzKCkgPSB7IFdURk1vdmUoaW5wdXQxKSB9OwogICAgIHJldHVy
biBlZmZlY3Q7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRU9mZnNl
dEVsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRU9mZnNldEVsZW1lbnQuaAppbmRl
eCA1NzQ3M2RjYzcyZGI2N2IxMjVlYTJlZDQ2NWUzNWI1NzM3MDQ5YmVlLi44OTk2ZjI4MmIwMWU4
ZDljZDY2N2JmMjBiNWNkOTg4YTU5OWFmODg4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9z
dmcvU1ZHRkVPZmZzZXRFbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFT2Zm
c2V0RWxlbWVudC5oCkBAIC00Nyw3ICs0Nyw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBwYXJzZUF0
dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiwgY29uc3QgQXRvbVN0cmluZyYpIG92ZXJyaWRl
OwogICAgIHZvaWQgc3ZnQXR0cmlidXRlQ2hhbmdlZChjb25zdCBRdWFsaWZpZWROYW1lJikgb3Zl
cnJpZGU7CiAKLSAgICBSZWZQdHI8RmlsdGVyRWZmZWN0PiBidWlsZChTVkdGaWx0ZXJCdWlsZGVy
KiwgRmlsdGVyJikgY29uc3Qgb3ZlcnJpZGU7CisgICAgUmVmUHRyPEZpbHRlckVmZmVjdD4gYnVp
bGQoU1ZHRmlsdGVyQnVpbGRlciYpIGNvbnN0IG92ZXJyaWRlOwogCiAgICAgUHJvcGVydHlSZWdp
c3RyeSBtX3Byb3BlcnR5UmVnaXN0cnkgeyAqdGhpcyB9OwogICAgIFJlZjxTVkdBbmltYXRlZFN0
cmluZz4gbV9pbjEgeyBTVkdBbmltYXRlZFN0cmluZzo6Y3JlYXRlKHRoaXMpIH07CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVTcGVjdWxhckxpZ2h0aW5nRWxlbWVudC5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVTcGVjdWxhckxpZ2h0aW5nRWxlbWVudC5jcHAKaW5k
ZXggOWI3Y2U0MGFiOTcxNmFlNGYzMzVmNTRiMjRjZGE0NTlhODQyOWE1OS4uZDI4OTQzYTIzM2M1
ZjMwYTI3NDU2MmNkZWI0MTNiYWVlMmQ1NWY3ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
c3ZnL1NWR0ZFU3BlY3VsYXJMaWdodGluZ0VsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3N2Zy9TVkdGRVNwZWN1bGFyTGlnaHRpbmdFbGVtZW50LmNwcApAQCAtMTYwLDEwICsxNjAsOSBA
QCB2b2lkIFNWR0ZFU3BlY3VsYXJMaWdodGluZ0VsZW1lbnQ6OmxpZ2h0RWxlbWVudEF0dHJpYnV0
ZUNoYW5nZWQoY29uc3QgU1ZHRkVMaWdodAogICAgIHByaW1pdGl2ZUF0dHJpYnV0ZUNoYW5nZWQo
YXR0ck5hbWUpOwogfQogCi1SZWZQdHI8RmlsdGVyRWZmZWN0PiBTVkdGRVNwZWN1bGFyTGlnaHRp
bmdFbGVtZW50OjpidWlsZChTVkdGaWx0ZXJCdWlsZGVyKiBmaWx0ZXJCdWlsZGVyLCBGaWx0ZXIm
IGZpbHRlcikgY29uc3QKK1JlZlB0cjxGaWx0ZXJFZmZlY3Q+IFNWR0ZFU3BlY3VsYXJMaWdodGlu
Z0VsZW1lbnQ6OmJ1aWxkKFNWR0ZpbHRlckJ1aWxkZXImIGZpbHRlckJ1aWxkZXIpIGNvbnN0CiB7
Ci0gICAgYXV0byBpbnB1dDEgPSBmaWx0ZXJCdWlsZGVyLT5nZXRFZmZlY3RCeUlkKGluMSgpKTsK
LQorICAgIGF1dG8gaW5wdXQxID0gZmlsdGVyQnVpbGRlci5nZXRFZmZlY3RCeUlkKGluMSgpKTsK
ICAgICBpZiAoIWlucHV0MSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKQEAgLTE3MSw3ICsx
NzAsNyBAQCBSZWZQdHI8RmlsdGVyRWZmZWN0PiBTVkdGRVNwZWN1bGFyTGlnaHRpbmdFbGVtZW50
OjpidWlsZChTVkdGaWx0ZXJCdWlsZGVyKiBmaWx0ZQogICAgIGlmICghbGlnaHRFbGVtZW50KQog
ICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICAKLSAgICBhdXRvIGxpZ2h0U291cmNlID0gbGln
aHRFbGVtZW50LT5saWdodFNvdXJjZSgqZmlsdGVyQnVpbGRlcik7CisgICAgYXV0byBsaWdodFNv
dXJjZSA9IGxpZ2h0RWxlbWVudC0+bGlnaHRTb3VyY2UoZmlsdGVyQnVpbGRlcik7CiAKICAgICBS
ZW5kZXJPYmplY3QqIHJlbmRlcmVyID0gdGhpcy0+cmVuZGVyZXIoKTsKICAgICBpZiAoIXJlbmRl
cmVyKQpAQCAtMTc5LDggKzE3OCw4IEBAIFJlZlB0cjxGaWx0ZXJFZmZlY3Q+IFNWR0ZFU3BlY3Vs
YXJMaWdodGluZ0VsZW1lbnQ6OmJ1aWxkKFNWR0ZpbHRlckJ1aWxkZXIqIGZpbHRlCiAgICAgCiAg
ICAgQ29sb3IgY29sb3IgPSByZW5kZXJlci0+c3R5bGUoKS5jb2xvckJ5QXBwbHlpbmdDb2xvckZp
bHRlcihyZW5kZXJlci0+c3R5bGUoKS5zdmdTdHlsZSgpLmxpZ2h0aW5nQ29sb3IoKSk7CiAKLSAg
ICBhdXRvIGVmZmVjdCA9IEZFU3BlY3VsYXJMaWdodGluZzo6Y3JlYXRlKGZpbHRlciwgY29sb3Is
IHN1cmZhY2VTY2FsZSgpLCBzcGVjdWxhckNvbnN0YW50KCksIHNwZWN1bGFyRXhwb25lbnQoKSwg
a2VybmVsVW5pdExlbmd0aFgoKSwga2VybmVsVW5pdExlbmd0aFkoKSwgV1RGTW92ZShsaWdodFNv
dXJjZSkpOwotICAgIGVmZmVjdC0+aW5wdXRFZmZlY3RzKCkgPSB7IGlucHV0MSB9OworICAgIGF1
dG8gZWZmZWN0ID0gRkVTcGVjdWxhckxpZ2h0aW5nOjpjcmVhdGUoY29sb3IsIHN1cmZhY2VTY2Fs
ZSgpLCBzcGVjdWxhckNvbnN0YW50KCksIHNwZWN1bGFyRXhwb25lbnQoKSwga2VybmVsVW5pdExl
bmd0aFgoKSwga2VybmVsVW5pdExlbmd0aFkoKSwgV1RGTW92ZShsaWdodFNvdXJjZSkpOworICAg
IGVmZmVjdC0+aW5wdXRFZmZlY3RzKCkgPSB7IFdURk1vdmUoaW5wdXQxKSB9OwogICAgIHJldHVy
biBlZmZlY3Q7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRVNwZWN1
bGFyTGlnaHRpbmdFbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVTcGVjdWxhckxp
Z2h0aW5nRWxlbWVudC5oCmluZGV4IDg5N2I4ZGUxNTZkMWM3OWExZDNmZDhiMzExOGUyYWI2M2I0
N2IxNDYuLjRkMWI1MzFjNDJiZWI4Y2RmYTIwMTUyMTYyMTE2NTEwZDAwOWJjNmUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRVNwZWN1bGFyTGlnaHRpbmdFbGVtZW50LmgKKysr
IGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFU3BlY3VsYXJMaWdodGluZ0VsZW1lbnQuaApAQCAt
NTgsNyArNTgsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgc3ZnQXR0cmlidXRlQ2hhbmdlZChjb25z
dCBRdWFsaWZpZWROYW1lJikgb3ZlcnJpZGU7CiAKICAgICBib29sIHNldEZpbHRlckVmZmVjdEF0
dHJpYnV0ZShGaWx0ZXJFZmZlY3QqLCBjb25zdCBRdWFsaWZpZWROYW1lJikgb3ZlcnJpZGU7Ci0g
ICAgUmVmUHRyPEZpbHRlckVmZmVjdD4gYnVpbGQoU1ZHRmlsdGVyQnVpbGRlciosIEZpbHRlciYp
IGNvbnN0IG92ZXJyaWRlOworICAgIFJlZlB0cjxGaWx0ZXJFZmZlY3Q+IGJ1aWxkKFNWR0ZpbHRl
ckJ1aWxkZXImKSBjb25zdCBvdmVycmlkZTsKIAogICAgIFByb3BlcnR5UmVnaXN0cnkgbV9wcm9w
ZXJ0eVJlZ2lzdHJ5IHsgKnRoaXMgfTsKICAgICBSZWY8U1ZHQW5pbWF0ZWRTdHJpbmc+IG1faW4x
IHsgU1ZHQW5pbWF0ZWRTdHJpbmc6OmNyZWF0ZSh0aGlzKSB9OwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvc3ZnL1NWR0ZFVGlsZUVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NW
R0ZFVGlsZUVsZW1lbnQuY3BwCmluZGV4IDM5YmRjYzc3MzU5NjY1MDM2ZTFhZTc0NzYxMmVhZDZm
OWFjMzczNzAuLmFhY2UyZjM0MzEzZGNmZmFiOGNhZDNhNTJlZTM5NTNkNzEwMDNmNGYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRVRpbGVFbGVtZW50LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9zdmcvU1ZHRkVUaWxlRWxlbWVudC5jcHAKQEAgLTcwLDE1ICs3MCwxNCBAQCB2
b2lkIFNWR0ZFVGlsZUVsZW1lbnQ6OnN2Z0F0dHJpYnV0ZUNoYW5nZWQoY29uc3QgUXVhbGlmaWVk
TmFtZSYgYXR0ck5hbWUpCiAgICAgU1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVz
OjpzdmdBdHRyaWJ1dGVDaGFuZ2VkKGF0dHJOYW1lKTsKIH0KIAotUmVmUHRyPEZpbHRlckVmZmVj
dD4gU1ZHRkVUaWxlRWxlbWVudDo6YnVpbGQoU1ZHRmlsdGVyQnVpbGRlciogZmlsdGVyQnVpbGRl
ciwgRmlsdGVyJiBmaWx0ZXIpIGNvbnN0CitSZWZQdHI8RmlsdGVyRWZmZWN0PiBTVkdGRVRpbGVF
bGVtZW50OjpidWlsZChTVkdGaWx0ZXJCdWlsZGVyJiBmaWx0ZXJCdWlsZGVyKSBjb25zdAogewot
ICAgIGF1dG8gaW5wdXQxID0gZmlsdGVyQnVpbGRlci0+Z2V0RWZmZWN0QnlJZChpbjEoKSk7Ci0K
KyAgICBhdXRvIGlucHV0MSA9IGZpbHRlckJ1aWxkZXIuZ2V0RWZmZWN0QnlJZChpbjEoKSk7CiAg
ICAgaWYgKCFpbnB1dDEpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCi0gICAgYXV0byBlZmZl
Y3QgPSBGRVRpbGU6OmNyZWF0ZShmaWx0ZXIpOwotICAgIGVmZmVjdC0+aW5wdXRFZmZlY3RzKCkg
PSB7IGlucHV0MSB9OworICAgIGF1dG8gZWZmZWN0ID0gRkVUaWxlOjpjcmVhdGUoKTsKKyAgICBl
ZmZlY3QtPmlucHV0RWZmZWN0cygpID0geyBXVEZNb3ZlKGlucHV0MSkgfTsKICAgICByZXR1cm4g
ZWZmZWN0OwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVUaWxlRWxl
bWVudC5oIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFVGlsZUVsZW1lbnQuaAppbmRleCA0NWIz
MjcxODUxZDdmYzBkYzJkM2JjYzg3OWEyMmRjNDJhMzNhOTFmLi5jYWJhY2U2YmQwMWMyYjFkMzU2
NGE1Y2VlNWMyNzViNjY5NmY5ZDQxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZH
RkVUaWxlRWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRVRpbGVFbGVtZW50
LmgKQEAgLTQyLDcgKzQyLDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIHBhcnNlQXR0cmlidXRlKGNv
bnN0IFF1YWxpZmllZE5hbWUmLCBjb25zdCBBdG9tU3RyaW5nJikgb3ZlcnJpZGU7CiAgICAgdm9p
ZCBzdmdBdHRyaWJ1dGVDaGFuZ2VkKGNvbnN0IFF1YWxpZmllZE5hbWUmKSBvdmVycmlkZTsKIAot
ICAgIFJlZlB0cjxGaWx0ZXJFZmZlY3Q+IGJ1aWxkKFNWR0ZpbHRlckJ1aWxkZXIqLCBGaWx0ZXIm
KSBjb25zdCBvdmVycmlkZTsKKyAgICBSZWZQdHI8RmlsdGVyRWZmZWN0PiBidWlsZChTVkdGaWx0
ZXJCdWlsZGVyJikgY29uc3Qgb3ZlcnJpZGU7CiAKICAgICBQcm9wZXJ0eVJlZ2lzdHJ5IG1fcHJv
cGVydHlSZWdpc3RyeSB7ICp0aGlzIH07CiAgICAgUmVmPFNWR0FuaW1hdGVkU3RyaW5nPiBtX2lu
MSB7IFNWR0FuaW1hdGVkU3RyaW5nOjpjcmVhdGUodGhpcykgfTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3N2Zy9TVkdGRVR1cmJ1bGVuY2VFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3N2Zy9TVkdGRVR1cmJ1bGVuY2VFbGVtZW50LmNwcAppbmRleCAxMTU2MTExOWQ4M2UzZmM3ODhh
NDJiMTQ4NjdjNjU2NDEyMzM0YTRkLi4xNTFiN2I5ZThlMDhhNDNlN2NjY2I2ODA5YWE3MjkxNDZk
YmJmMGQ4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVUdXJidWxlbmNlRWxl
bWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFVHVyYnVsZW5jZUVsZW1lbnQu
Y3BwCkBAIC0xMTcsMTEgKzExNywxMSBAQCB2b2lkIFNWR0ZFVHVyYnVsZW5jZUVsZW1lbnQ6OnN2
Z0F0dHJpYnV0ZUNoYW5nZWQoY29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0ck5hbWUpCiAgICAgU1ZH
RmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVzOjpzdmdBdHRyaWJ1dGVDaGFuZ2VkKGF0
dHJOYW1lKTsKIH0KIAotUmVmUHRyPEZpbHRlckVmZmVjdD4gU1ZHRkVUdXJidWxlbmNlRWxlbWVu
dDo6YnVpbGQoU1ZHRmlsdGVyQnVpbGRlciosIEZpbHRlciYgZmlsdGVyKSBjb25zdAorUmVmUHRy
PEZpbHRlckVmZmVjdD4gU1ZHRkVUdXJidWxlbmNlRWxlbWVudDo6YnVpbGQoU1ZHRmlsdGVyQnVp
bGRlciYpIGNvbnN0CiB7CiAgICAgaWYgKGJhc2VGcmVxdWVuY3lYKCkgPCAwIHx8IGJhc2VGcmVx
dWVuY3lZKCkgPCAwKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKLSAgICByZXR1cm4gRkVUdXJi
dWxlbmNlOjpjcmVhdGUoZmlsdGVyLCB0eXBlKCksIGJhc2VGcmVxdWVuY3lYKCksIGJhc2VGcmVx
dWVuY3lZKCksIG51bU9jdGF2ZXMoKSwgc2VlZCgpLCBzdGl0Y2hUaWxlcygpID09IFNWR19TVElU
Q0hUWVBFX1NUSVRDSCk7CisgICAgcmV0dXJuIEZFVHVyYnVsZW5jZTo6Y3JlYXRlKHR5cGUoKSwg
YmFzZUZyZXF1ZW5jeVgoKSwgYmFzZUZyZXF1ZW5jeVkoKSwgbnVtT2N0YXZlcygpLCBzZWVkKCks
IHN0aXRjaFRpbGVzKCkgPT0gU1ZHX1NUSVRDSFRZUEVfU1RJVENIKTsKIH0KIAogfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFVHVyYnVsZW5jZUVsZW1lbnQuaCBiL1NvdXJj
ZS9XZWJDb3JlL3N2Zy9TVkdGRVR1cmJ1bGVuY2VFbGVtZW50LmgKaW5kZXggYmY5ZGEyMmFkNDJl
NDEwYTEwNDM1ZTBhNDBlMzQyNjc3NjllMTk4YS4uNTBhZjkxMGViNThlMmM5MjI0MWE5MGRhOGNi
ZGZkYzY4MTRmOTMxNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFVHVyYnVs
ZW5jZUVsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVUdXJidWxlbmNlRWxl
bWVudC5oCkBAIC0xMTksNyArMTE5LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIHN2Z0F0dHJpYnV0
ZUNoYW5nZWQoY29uc3QgUXVhbGlmaWVkTmFtZSYpIG92ZXJyaWRlOwogCiAgICAgYm9vbCBzZXRG
aWx0ZXJFZmZlY3RBdHRyaWJ1dGUoRmlsdGVyRWZmZWN0KiwgY29uc3QgUXVhbGlmaWVkTmFtZSYg
YXR0ck5hbWUpIG92ZXJyaWRlOwotICAgIFJlZlB0cjxGaWx0ZXJFZmZlY3Q+IGJ1aWxkKFNWR0Zp
bHRlckJ1aWxkZXIqLCBGaWx0ZXImKSBjb25zdCBvdmVycmlkZTsKKyAgICBSZWZQdHI8RmlsdGVy
RWZmZWN0PiBidWlsZChTVkdGaWx0ZXJCdWlsZGVyJikgY29uc3Qgb3ZlcnJpZGU7CiAKICAgICBQ
cm9wZXJ0eVJlZ2lzdHJ5IG1fcHJvcGVydHlSZWdpc3RyeSB7ICp0aGlzIH07CiAgICAgUmVmPFNW
R0FuaW1hdGVkTnVtYmVyPiBtX2Jhc2VGcmVxdWVuY3lYIHsgU1ZHQW5pbWF0ZWROdW1iZXI6OmNy
ZWF0ZSh0aGlzKSB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZpbHRlclBy
aW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlcy5oIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZpbHRl
clByaW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlcy5oCmluZGV4IGM5OGIxM2VkOTYyNzZhZjllMTRm
NjQyODExYTZmZDc0Njc3MmFjYTcuLjM4ZDQ5ODYwOTMzODIxODdiYWQyMjRkMjk3ZDQyNWM5MWRl
NTM5ZDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGaWx0ZXJQcmltaXRpdmVT
dGFuZGFyZEF0dHJpYnV0ZXMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRmlsdGVyUHJp
bWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVzLmgKQEAgLTM4LDcgKzM4LDcgQEAgY2xhc3MgU1ZHRmls
dGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVzIDogcHVibGljIFNWR0VsZW1lbnQgewogcHVi
bGljOgogICAgIHZvaWQgc2V0U3RhbmRhcmRBdHRyaWJ1dGVzKEZpbHRlckVmZmVjdCopIGNvbnN0
OwogCi0gICAgdmlydHVhbCBSZWZQdHI8RmlsdGVyRWZmZWN0PiBidWlsZChTVkdGaWx0ZXJCdWls
ZGVyKiwgRmlsdGVyJikgY29uc3QgPSAwOworICAgIHZpcnR1YWwgUmVmUHRyPEZpbHRlckVmZmVj
dD4gYnVpbGQoU1ZHRmlsdGVyQnVpbGRlciYpIGNvbnN0ID0gMDsKICAgICAvLyBSZXR1cm5zIHRy
dWUsIGlmIHRoZSBuZXcgdmFsdWUgaXMgZGlmZmVyZW50IGZyb20gdGhlIG9sZCBvbmUuCiAgICAg
dmlydHVhbCBib29sIHNldEZpbHRlckVmZmVjdEF0dHJpYnV0ZShGaWx0ZXJFZmZlY3QqLCBjb25z
dCBRdWFsaWZpZWROYW1lJik7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9ncmFw
aGljcy9maWx0ZXJzL1NWR0ZFSW1hZ2UuY3BwIGIvU291cmNlL1dlYkNvcmUvc3ZnL2dyYXBoaWNz
L2ZpbHRlcnMvU1ZHRkVJbWFnZS5jcHAKaW5kZXggNDU0NDViMjgxMzQzNmRiZWY2MzU2OTE1ODFk
ZTYxZGVmYTgyM2JhZC4uYmM2MGFjYjUwMjUyMTExMzFlZGNjZTM2NGQ2MWM2ZTliY2Y5MDdmMyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL2dyYXBoaWNzL2ZpbHRlcnMvU1ZHRkVJbWFn
ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL2dyYXBoaWNzL2ZpbHRlcnMvU1ZHRkVJbWFn
ZS5jcHAKQEAgLTMwLDI2ICszMCwyNiBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLVJlZjxG
RUltYWdlPiBGRUltYWdlOjpjcmVhdGUoRmlsdGVyJiBmaWx0ZXIsIFJlZjxJbWFnZT4mJiBpbWFn
ZSwgY29uc3QgU1ZHUHJlc2VydmVBc3BlY3RSYXRpb1ZhbHVlJiBwcmVzZXJ2ZUFzcGVjdFJhdGlv
KQorUmVmPEZFSW1hZ2U+IEZFSW1hZ2U6OmNyZWF0ZShSZWY8SW1hZ2U+JiYgaW1hZ2UsIGNvbnN0
IFNWR1ByZXNlcnZlQXNwZWN0UmF0aW9WYWx1ZSYgcHJlc2VydmVBc3BlY3RSYXRpbykKIHsKICAg
ICBhdXRvIGltYWdlUmVjdCA9IEZsb2F0UmVjdCB7IHsgfSwgaW1hZ2UtPnNpemUoKSB9OwotICAg
IHJldHVybiBjcmVhdGUoZmlsdGVyLCBXVEZNb3ZlKGltYWdlKSwgaW1hZ2VSZWN0LCBwcmVzZXJ2
ZUFzcGVjdFJhdGlvKTsKKyAgICByZXR1cm4gY3JlYXRlKFdURk1vdmUoaW1hZ2UpLCBpbWFnZVJl
Y3QsIHByZXNlcnZlQXNwZWN0UmF0aW8pOwogfQogCi1SZWY8RkVJbWFnZT4gRkVJbWFnZTo6Y3Jl
YXRlKEZpbHRlciYgZmlsdGVyLCBTb3VyY2VJbWFnZSYmIHNvdXJjZUltYWdlLCBjb25zdCBGbG9h
dFJlY3QmIHNvdXJjZUltYWdlUmVjdCwgY29uc3QgU1ZHUHJlc2VydmVBc3BlY3RSYXRpb1ZhbHVl
JiBwcmVzZXJ2ZUFzcGVjdFJhdGlvKQorUmVmPEZFSW1hZ2U+IEZFSW1hZ2U6OmNyZWF0ZShTb3Vy
Y2VJbWFnZSYmIHNvdXJjZUltYWdlLCBjb25zdCBGbG9hdFJlY3QmIHNvdXJjZUltYWdlUmVjdCwg
Y29uc3QgU1ZHUHJlc2VydmVBc3BlY3RSYXRpb1ZhbHVlJiBwcmVzZXJ2ZUFzcGVjdFJhdGlvKQog
ewotICAgIHJldHVybiBhZG9wdFJlZigqbmV3IEZFSW1hZ2UoZmlsdGVyLCBXVEZNb3ZlKHNvdXJj
ZUltYWdlKSwgc291cmNlSW1hZ2VSZWN0LCBwcmVzZXJ2ZUFzcGVjdFJhdGlvKSk7CisgICAgcmV0
dXJuIGFkb3B0UmVmKCpuZXcgRkVJbWFnZShXVEZNb3ZlKHNvdXJjZUltYWdlKSwgc291cmNlSW1h
Z2VSZWN0LCBwcmVzZXJ2ZUFzcGVjdFJhdGlvKSk7CiB9CiAKLUZFSW1hZ2U6OkZFSW1hZ2UoRmls
dGVyJiBmaWx0ZXIsIFNvdXJjZUltYWdlJiYgc291cmNlSW1hZ2UsIGNvbnN0IEZsb2F0UmVjdCYg
c291cmNlSW1hZ2VSZWN0LCBjb25zdCBTVkdQcmVzZXJ2ZUFzcGVjdFJhdGlvVmFsdWUmIHByZXNl
cnZlQXNwZWN0UmF0aW8pCi0gICAgOiBGaWx0ZXJFZmZlY3QoZmlsdGVyLCBUeXBlOjpGRUltYWdl
KQorRkVJbWFnZTo6RkVJbWFnZShTb3VyY2VJbWFnZSYmIHNvdXJjZUltYWdlLCBjb25zdCBGbG9h
dFJlY3QmIHNvdXJjZUltYWdlUmVjdCwgY29uc3QgU1ZHUHJlc2VydmVBc3BlY3RSYXRpb1ZhbHVl
JiBwcmVzZXJ2ZUFzcGVjdFJhdGlvKQorICAgIDogRmlsdGVyRWZmZWN0KFR5cGU6OkZFSW1hZ2Up
CiAgICAgLCBtX3NvdXJjZUltYWdlKFdURk1vdmUoc291cmNlSW1hZ2UpKQogICAgICwgbV9zb3Vy
Y2VJbWFnZVJlY3Qoc291cmNlSW1hZ2VSZWN0KQogICAgICwgbV9wcmVzZXJ2ZUFzcGVjdFJhdGlv
KHByZXNlcnZlQXNwZWN0UmF0aW8pCiB7CiB9CiAKLXZvaWQgRkVJbWFnZTo6ZGV0ZXJtaW5lQWJz
b2x1dGVQYWludFJlY3QoKQordm9pZCBGRUltYWdlOjpkZXRlcm1pbmVBYnNvbHV0ZVBhaW50UmVj
dChjb25zdCBGaWx0ZXImIGZpbHRlcikKIHsKICAgICBhdXRvIHByaW1pdGl2ZVN1YnJlZ2lvbiA9
IGZpbHRlclByaW1pdGl2ZVN1YnJlZ2lvbigpOwogCkBAIC02NSw3ICs2NSw3IEBAIHZvaWQgRkVJ
bWFnZTo6ZGV0ZXJtaW5lQWJzb2x1dGVQYWludFJlY3QoKQogICAgICAgICB9CiAgICAgKTsKIAot
ICAgIGltYWdlUmVjdC5zY2FsZShmaWx0ZXIoKS5maWx0ZXJTY2FsZSgpKTsKKyAgICBpbWFnZVJl
Y3Quc2NhbGUoZmlsdGVyLmZpbHRlclNjYWxlKCkpOwogCiAgICAgaWYgKGNsaXBzVG9Cb3VuZHMo
KSkKICAgICAgICAgaW1hZ2VSZWN0LmludGVyc2VjdChtYXhFZmZlY3RSZWN0KCkpOwpAQCAtNzQs
NyArNzQsNyBAQCB2b2lkIEZFSW1hZ2U6OmRldGVybWluZUFic29sdXRlUGFpbnRSZWN0KCkKICAg
ICBzZXRBYnNvbHV0ZVBhaW50UmVjdChlbmNsb3NpbmdJbnRSZWN0KGltYWdlUmVjdCkpOwogfQog
Ci12b2lkIEZFSW1hZ2U6OnBsYXRmb3JtQXBwbHlTb2Z0d2FyZSgpCit2b2lkIEZFSW1hZ2U6OnBs
YXRmb3JtQXBwbHlTb2Z0d2FyZShjb25zdCBGaWx0ZXImIGZpbHRlcikKIHsKICAgICAvLyBGRUlt
YWdlIHJlc3VsdHMgYXJlIGFsd2F5cyBpbiBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0IoKQog
ICAgIHNldFJlc3VsdENvbG9yU3BhY2UoRGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdCKCkpOwpA
QCAtOTEsMTQgKzkxLDE0IEBAIHZvaWQgRkVJbWFnZTo6cGxhdGZvcm1BcHBseVNvZnR3YXJlKCkK
ICAgICAgICAgICAgIGF1dG8gaW1hZ2VSZWN0ID0gcHJpbWl0aXZlU3VicmVnaW9uOwogICAgICAg
ICAgICAgYXV0byBzcmNSZWN0ID0gbV9zb3VyY2VJbWFnZVJlY3Q7CiAgICAgICAgICAgICBtX3By
ZXNlcnZlQXNwZWN0UmF0aW8udHJhbnNmb3JtUmVjdChpbWFnZVJlY3QsIHNyY1JlY3QpOwotICAg
ICAgICAgICAgaW1hZ2VSZWN0LnNjYWxlKGZpbHRlcigpLmZpbHRlclNjYWxlKCkpOworICAgICAg
ICAgICAgaW1hZ2VSZWN0LnNjYWxlKGZpbHRlci5maWx0ZXJTY2FsZSgpKTsKICAgICAgICAgICAg
IGltYWdlUmVjdCA9IGRyYXdpbmdSZWdpb25PZklucHV0SW1hZ2UoSW50UmVjdChpbWFnZVJlY3Qp
KTsKICAgICAgICAgICAgIGNvbnRleHQuZHJhd0ltYWdlKGltYWdlLCBpbWFnZVJlY3QsIHNyY1Jl
Y3QpOwogICAgICAgICB9LAogICAgICAgICBbJl0gKGNvbnN0IFJlZjxJbWFnZUJ1ZmZlcj4mIGlt
YWdlQnVmZmVyKSB7CiAgICAgICAgICAgICBhdXRvIGltYWdlUmVjdCA9IHByaW1pdGl2ZVN1YnJl
Z2lvbjsKICAgICAgICAgICAgIGltYWdlUmVjdC5tb3ZlQnkobV9zb3VyY2VJbWFnZVJlY3QubG9j
YXRpb24oKSk7Ci0gICAgICAgICAgICBpbWFnZVJlY3Quc2NhbGUoZmlsdGVyKCkuZmlsdGVyU2Nh
bGUoKSk7CisgICAgICAgICAgICBpbWFnZVJlY3Quc2NhbGUoZmlsdGVyLmZpbHRlclNjYWxlKCkp
OwogICAgICAgICAgICAgaW1hZ2VSZWN0ID0gZHJhd2luZ1JlZ2lvbk9mSW5wdXRJbWFnZShJbnRS
ZWN0KGltYWdlUmVjdCkpOwogICAgICAgICAgICAgY29udGV4dC5kcmF3SW1hZ2VCdWZmZXIoaW1h
Z2VCdWZmZXIsIGltYWdlUmVjdC5sb2NhdGlvbigpKTsKICAgICAgICAgfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvc3ZnL2dyYXBoaWNzL2ZpbHRlcnMvU1ZHRkVJbWFnZS5oIGIvU291cmNl
L1dlYkNvcmUvc3ZnL2dyYXBoaWNzL2ZpbHRlcnMvU1ZHRkVJbWFnZS5oCmluZGV4IDczMTdkOWE5
NGVhYzA3OGE4OGRlN2E3ZTMwNDM0MGE3ZDJmMWQ4MWYuLmI1OGQ1MWIxOTdkOGM1ZmM2NGFmYzU1
ODE5ZjE1ODVkOTkyM2JjOGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9ncmFwaGlj
cy9maWx0ZXJzL1NWR0ZFSW1hZ2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvZ3JhcGhpY3Mv
ZmlsdGVycy9TVkdGRUltYWdlLmgKQEAgLTM1LDE3ICszNSwxOSBAQCBjbGFzcyBGRUltYWdlIGZp
bmFsIDogcHVibGljIEZpbHRlckVmZmVjdCB7CiBwdWJsaWM6CiAgICAgdXNpbmcgU291cmNlSW1h
Z2UgPSBzdGQ6OnZhcmlhbnQ8UmVmPEltYWdlPiwgUmVmPEltYWdlQnVmZmVyPj47CiAKLSAgICBz
dGF0aWMgUmVmPEZFSW1hZ2U+IGNyZWF0ZShGaWx0ZXImLCBSZWY8SW1hZ2U+JiYsIGNvbnN0IFNW
R1ByZXNlcnZlQXNwZWN0UmF0aW9WYWx1ZSYpOwotICAgIHN0YXRpYyBSZWY8RkVJbWFnZT4gY3Jl
YXRlKEZpbHRlciYsIFNvdXJjZUltYWdlJiYsIGNvbnN0IEZsb2F0UmVjdCYgc291cmNlSW1hZ2VS
ZWN0LCBjb25zdCBTVkdQcmVzZXJ2ZUFzcGVjdFJhdGlvVmFsdWUmKTsKKyAgICBzdGF0aWMgUmVm
PEZFSW1hZ2U+IGNyZWF0ZShSZWY8SW1hZ2U+JiYsIGNvbnN0IFNWR1ByZXNlcnZlQXNwZWN0UmF0
aW9WYWx1ZSYpOworICAgIHN0YXRpYyBSZWY8RkVJbWFnZT4gY3JlYXRlKFNvdXJjZUltYWdlJiYs
IGNvbnN0IEZsb2F0UmVjdCYgc291cmNlSW1hZ2VSZWN0LCBjb25zdCBTVkdQcmVzZXJ2ZUFzcGVj
dFJhdGlvVmFsdWUmKTsKIAogICAgIFNvdXJjZUltYWdlJiBzb3VyY2VJbWFnZSgpIHsgcmV0dXJu
IG1fc291cmNlSW1hZ2U7IH0KICAgICB2b2lkIHNldEltYWdlU291cmNlKFNvdXJjZUltYWdlJiYg
c291cmNlSW1hZ2UpIHsgbV9zb3VyY2VJbWFnZSA9IFdURk1vdmUoc291cmNlSW1hZ2UpOyB9CiAK
IHByaXZhdGU6Ci0gICAgRkVJbWFnZShGaWx0ZXImLCBTb3VyY2VJbWFnZSYmLCBjb25zdCBGbG9h
dFJlY3QmIHNvdXJjZUltYWdlUmVjdCwgY29uc3QgU1ZHUHJlc2VydmVBc3BlY3RSYXRpb1ZhbHVl
Jik7CisgICAgRkVJbWFnZShTb3VyY2VJbWFnZSYmLCBjb25zdCBGbG9hdFJlY3QmIHNvdXJjZUlt
YWdlUmVjdCwgY29uc3QgU1ZHUHJlc2VydmVBc3BlY3RSYXRpb1ZhbHVlJik7CisKKyAgICB2b2lk
IGRldGVybWluZUFic29sdXRlUGFpbnRSZWN0KGNvbnN0IEZpbHRlciYpIGZpbmFsOworCisgICAg
dm9pZCBwbGF0Zm9ybUFwcGx5U29mdHdhcmUoY29uc3QgRmlsdGVyJikgZmluYWw7CiAKLSAgICB2
b2lkIHBsYXRmb3JtQXBwbHlTb2Z0d2FyZSgpIGZpbmFsOwotICAgIHZvaWQgZGV0ZXJtaW5lQWJz
b2x1dGVQYWludFJlY3QoKSBmaW5hbDsKICAgICBXVEY6OlRleHRTdHJlYW0mIGV4dGVybmFsUmVw
cmVzZW50YXRpb24oV1RGOjpUZXh0U3RyZWFtJiwgUmVwcmVzZW50YXRpb25UeXBlKSBjb25zdCBm
aW5hbDsKIAogICAgIFNvdXJjZUltYWdlIG1fc291cmNlSW1hZ2U7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9zdmcvZ3JhcGhpY3MvZmlsdGVycy9TVkdGaWx0ZXIuY3BwIGIvU291cmNlL1dl
YkNvcmUvc3ZnL2dyYXBoaWNzL2ZpbHRlcnMvU1ZHRmlsdGVyLmNwcAppbmRleCBjOWRhMjc4MWQ5
NTc0ODgwNjNiOTk1YWIwOTQyMjE5ZjE4ZDAzZWJhLi42MWYxMmI3Mzk4N2I4MjI4NjgzMWJjNjhm
NmMwNWYwMDAzYzNkNGNhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvZ3JhcGhpY3Mv
ZmlsdGVycy9TVkdGaWx0ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9ncmFwaGljcy9m
aWx0ZXJzL1NWR0ZpbHRlci5jcHAKQEAgLTQ1LDE0ICs0NSwxNCBAQCBSZWZQdHI8U1ZHRmlsdGVy
PiBTVkdGaWx0ZXI6OmNyZWF0ZShTVkdGaWx0ZXJFbGVtZW50JiBmaWx0ZXJFbGVtZW50LCBTVkdG
aWx0ZXJCdQogICAgIGF1dG8gZmlsdGVyID0gYWRvcHRSZWYoKm5ldyBTVkdGaWx0ZXIoZmlsdGVy
U2NhbGUsIHNvdXJjZUltYWdlUmVjdCwgZmlsdGVyUmVnaW9uLCB0YXJnZXRCb3VuZGluZ0JveCwg
cHJpbWl0aXZlQm91bmRpbmdCb3hNb2RlKSk7CiAKICAgICBpZiAoIXByZXZpb3VzRWZmZWN0KQot
ICAgICAgICBidWlsZGVyLnNldHVwQnVpbHRpbkVmZmVjdHMoU291cmNlR3JhcGhpYzo6Y3JlYXRl
KGZpbHRlcikpOworICAgICAgICBidWlsZGVyLnNldHVwQnVpbHRpbkVmZmVjdHMoU291cmNlR3Jh
cGhpYzo6Y3JlYXRlKCkpOwogICAgIGVsc2UKICAgICAgICAgYnVpbGRlci5zZXR1cEJ1aWx0aW5F
ZmZlY3RzKHsgKnByZXZpb3VzRWZmZWN0IH0pOwogCiAgICAgYnVpbGRlci5zZXRUYXJnZXRCb3Vu
ZGluZ0JveCh0YXJnZXRCb3VuZGluZ0JveCk7CiAgICAgYnVpbGRlci5zZXRQcmltaXRpdmVVbml0
cyhmaWx0ZXJFbGVtZW50LnByaW1pdGl2ZVVuaXRzKCkpOwogCi0gICAgYXV0byBsYXN0RWZmZWN0
ID0gYnVpbGRlci5idWlsZEZpbHRlckVmZmVjdHMoZmlsdGVyLCBmaWx0ZXJFbGVtZW50KTsKKyAg
ICBhdXRvIGxhc3RFZmZlY3QgPSBidWlsZGVyLmJ1aWxkRmlsdGVyRWZmZWN0cyhmaWx0ZXJFbGVt
ZW50KTsKICAgICBpZiAoIWxhc3RFZmZlY3QpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCkBA
IC03NSw2ICs3NSwxMSBAQCBGbG9hdFNpemUgU1ZHRmlsdGVyOjpzY2FsZWRCeUZpbHRlclNjYWxl
KEZsb2F0U2l6ZSBzaXplKSBjb25zdAogICAgIHJldHVybiBGaWx0ZXI6OnNjYWxlZEJ5RmlsdGVy
U2NhbGUoc2l6ZSk7CiB9CiAKK3ZvaWQgU1ZHRmlsdGVyOjphcHBseSgpCit7CisgICAgbV9sYXN0
RWZmZWN0LT5hcHBseSgqdGhpcyk7Cit9CisKIEludE91dHNldHMgU1ZHRmlsdGVyOjpvdXRzZXRz
KCkgY29uc3QKIHsKICAgICByZXR1cm4gbV9sYXN0RWZmZWN0LT5vdXRzZXRzKCk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvZ3JhcGhpY3MvZmlsdGVycy9TVkdGaWx0ZXIuaCBiL1Nv
dXJjZS9XZWJDb3JlL3N2Zy9ncmFwaGljcy9maWx0ZXJzL1NWR0ZpbHRlci5oCmluZGV4IDE2NjAx
MmZmNGViYWNkMTY1NDRlZTE0MWYwNWQ4Yzg2NzNhMzVmODcuLjFhMWI5MmNkMGJmNzE3YzU2YjY2
ZWEyZmEzMjM0ZWY1ZjQyYTI1NWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9ncmFw
aGljcy9maWx0ZXJzL1NWR0ZpbHRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9ncmFwaGlj
cy9maWx0ZXJzL1NWR0ZpbHRlci5oCkBAIC0zOSw2ICszOSw3IEBAIHB1YmxpYzoKICAgICBGbG9h
dFNpemUgc2NhbGVkQnlGaWx0ZXJTY2FsZShGbG9hdFNpemUpIGNvbnN0IGZpbmFsOwogCiAgICAg
RmxvYXRSZWN0IHRhcmdldEJvdW5kaW5nQm94KCkgY29uc3QgeyByZXR1cm4gbV90YXJnZXRCb3Vu
ZGluZ0JveDsgfQorICAgIHZvaWQgYXBwbHkoKSBvdmVycmlkZTsKIAogICAgIFJlZlB0cjxGaWx0
ZXJFZmZlY3Q+IGxhc3RFZmZlY3QoKSB7IHJldHVybiBtX2xhc3RFZmZlY3Q7IH0KICAgICB2b2lk
IHNldExhc3RFZmZlY3QoUmVmUHRyPEZpbHRlckVmZmVjdD4mJiBsYXN0RWZmZWN0KSB7IG1fbGFz
dEVmZmVjdCA9IFdURk1vdmUobGFzdEVmZmVjdCk7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3N2Zy9ncmFwaGljcy9maWx0ZXJzL1NWR0ZpbHRlckJ1aWxkZXIuY3BwIGIvU291cmNlL1dl
YkNvcmUvc3ZnL2dyYXBoaWNzL2ZpbHRlcnMvU1ZHRmlsdGVyQnVpbGRlci5jcHAKaW5kZXggYmU4
ZjBmYjFjM2Y1MmZmZTVjOWU1NDExYjY4Y2UxYzBmODRmOGQwMS4uNjBkNGJiMjZkYTVhZWYzODA3
MGM4N2JlMmZkMzRkNzI2NGJjMmQ4MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL2dy
YXBoaWNzL2ZpbHRlcnMvU1ZHRmlsdGVyQnVpbGRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
c3ZnL2dyYXBoaWNzL2ZpbHRlcnMvU1ZHRmlsdGVyQnVpbGRlci5jcHAKQEAgLTc1LDcgKzc1LDcg
QEAgc3RhdGljIHVuc2lnbmVkIHRvdGFsTnVtYmVyRmlsdGVyRWZmZWN0cyhjb25zdCBGaWx0ZXJF
ZmZlY3QmIGxhc3RFZmZlY3QpCiAgICAgcmV0dXJuIGNvbGxlY3RFZmZlY3RzKCZsYXN0RWZmZWN0
LCBhbGxFZmZlY3RzKTsKIH0KIAotUmVmUHRyPEZpbHRlckVmZmVjdD4gU1ZHRmlsdGVyQnVpbGRl
cjo6YnVpbGRGaWx0ZXJFZmZlY3RzKEZpbHRlciYgZmlsdGVyLCBTVkdGaWx0ZXJFbGVtZW50JiBm
aWx0ZXJFbGVtZW50KQorUmVmUHRyPEZpbHRlckVmZmVjdD4gU1ZHRmlsdGVyQnVpbGRlcjo6YnVp
bGRGaWx0ZXJFZmZlY3RzKFNWR0ZpbHRlckVsZW1lbnQmIGZpbHRlckVsZW1lbnQpCiB7CiAgICAg
c3RhdGljIGNvbnN0ZXhwciB1bnNpZ25lZCBtYXhDb3VudENoaWxkTm9kZXMgPSAyMDA7CiAgICAg
c3RhdGljIGNvbnN0ZXhwciB1bnNpZ25lZCBtYXhUb3RhbE51bWJlckZpbHRlckVmZmVjdHMgPSAx
MDA7CkBAIC04Niw3ICs4Niw3IEBAIFJlZlB0cjxGaWx0ZXJFZmZlY3Q+IFNWR0ZpbHRlckJ1aWxk
ZXI6OmJ1aWxkRmlsdGVyRWZmZWN0cyhGaWx0ZXImIGZpbHRlciwgU1ZHRmlsCiAgICAgUmVmUHRy
PEZpbHRlckVmZmVjdD4gZWZmZWN0OwogCiAgICAgZm9yIChhdXRvJiBlZmZlY3RFbGVtZW50IDog
Y2hpbGRyZW5PZlR5cGU8U1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVzPihmaWx0
ZXJFbGVtZW50KSkgewotICAgICAgICBlZmZlY3QgPSBlZmZlY3RFbGVtZW50LmJ1aWxkKHRoaXMs
IGZpbHRlcik7CisgICAgICAgIGVmZmVjdCA9IGVmZmVjdEVsZW1lbnQuYnVpbGQoKnRoaXMpOwog
ICAgICAgICBpZiAoIWVmZmVjdCkgewogICAgICAgICAgICAgY2xlYXJFZmZlY3RzKCk7CiAgICAg
ICAgICAgICByZXR1cm4gbnVsbHB0cjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9n
cmFwaGljcy9maWx0ZXJzL1NWR0ZpbHRlckJ1aWxkZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9n
cmFwaGljcy9maWx0ZXJzL1NWR0ZpbHRlckJ1aWxkZXIuaAppbmRleCAzNzViZGIxNTMxZWY0M2Fl
MmI3MTU2NmY2NjU4ZGVjMzRkOGQ0OGFjLi5iN2I4MjRiNDg0MzIzMjU3N2QyMTMwZDg0NmFhYzhi
N2YwOWRlOTk3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvZ3JhcGhpY3MvZmlsdGVy
cy9TVkdGaWx0ZXJCdWlsZGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL2dyYXBoaWNzL2Zp
bHRlcnMvU1ZHRmlsdGVyQnVpbGRlci5oCkBAIC02Niw3ICs2Niw3IEBAIHB1YmxpYzoKICAgICB2
b2lkIGNsZWFyUmVzdWx0c1JlY3Vyc2l2ZShGaWx0ZXJFZmZlY3QqKTsKIAogICAgIHZvaWQgc2V0
dXBCdWlsdGluRWZmZWN0cyhSZWY8RmlsdGVyRWZmZWN0PiBzb3VyY2VHcmFwaGljKTsKLSAgICBS
ZWZQdHI8RmlsdGVyRWZmZWN0PiBidWlsZEZpbHRlckVmZmVjdHMoRmlsdGVyJiwgU1ZHRmlsdGVy
RWxlbWVudCYpOworICAgIFJlZlB0cjxGaWx0ZXJFZmZlY3Q+IGJ1aWxkRmlsdGVyRWZmZWN0cyhT
VkdGaWx0ZXJFbGVtZW50Jik7CiAKIHByaXZhdGU6CiAgICAgaW5saW5lIHZvaWQgYWRkQnVpbHRp
bkVmZmVjdHMoKQo=
</data>
<flag name="commit-queue"
          id="468750"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>443917</attachid>
            <date>2021-11-10 23:53:53 -0800</date>
            <delta_ts>2021-11-14 01:47:09 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-232551-20211110235352.patch</filename>
            <type>text/plain</type>
            <size>157777</size>
            <attacher name="Said Abou-Hallawa">sabouhallawa</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg1NjE4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggM2ZlOWQxZWFhM2IzODY0
ZTU1N2NiM2RhOWU2N2M1NTJjZWFiM2E0Ny4uNGQ4ZTc3YTJkYzZmMTU5ZGNlZWI0M2VhMzZmOGE0
MzExOTJlYjM3YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI0MCBAQAorMjAyMS0xMS0xMCAgU2Fp
ZCBBYm91LUhhbGxhd2EgIDxzYWlkQGFwcGxlLmNvbT4KKworICAgICAgICBbR1BVIFByb2Nlc3Nd
IFJlbW92ZSB0aGUgcmVmZXJlbmNlIHRvIEZpbHRlciBmcm9tIEZpbHRlckVmZmVjdAorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjMyNTUxCisgICAgICAg
IHJkYXI6Ly84NTEzNjQ0NworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgIEluc3RlYWQgb2YgaGF2aW5nIGEgcmVmZXJlbmNlIHRvIHRoZSBGaWx0ZXIgaW4g
dGhlIEZpbHRlckVmZmVjdCwgd2UgYXJlCisgICAgICAgIGdvaW5nIHRvIHBhc3MgYSByZWZlcmVu
Y2UgdG8gdGhlIEZpbHRlciB0byB0aGUgRmlsdGVyRWZmZWN0IGZ1bmN0aW9ucworICAgICAgICBv
bmx5IHdoZW4gbmVlZGVkLiBGaWx0ZXJFZmZlY3QgbWF5IG5lZWQgYWNjZXNzIHRvIHRoZSBGaWx0
ZXIgb25seSBpbiB0d28KKyAgICAgICAgbWV0aG9kczogZGV0ZXJtaW5lQWJzb2x1dGVQYWludFJl
Y3QoKSBhbmQgcGxhdGZvcm1BcHBseVNvZnR3YXJlKCkuCisKKyAgICAgICAgV2UgbmVlZCB0byBj
aGFuZ2UgYWxsIHRoZSBGaWx0ZXJFZmZlY3QgY3JlYXRlIG1ldGhvZHMgdG8gbm90IHRha2UgYSBG
aWx0ZXIKKyAgICAgICAgYXMgaW5wdXQuIFRoaXMgcmVxdWlyZXMgdGhlIFNWRyBmaWx0ZXIgZWZm
ZWN0IGVsZW1lbnRzIHRvIGNoYW5nZSB0aGVpcgorICAgICAgICBidWlsZCgpIG1ldGhvZC4gQW5k
IGl0IHJlcXVpcmVzIGFsc28gQ1NTRmlsdGVyIHRvIG5vdCBwYXNzIGl0c2VsZiB0byB0aGUKKyAg
ICAgICAgRmlsdGVyRWZmZWN0cyBpdHMgY3JlYXRlLgorCisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3MvY29yZWltYWdlL0ZpbHRlckVmZmVjdFJlbmRlcmVyQ29yZUltYWdlLmg6CisgICAgICAg
ICogcGxhdGZvcm0vZ3JhcGhpY3MvY29yZWltYWdlL0ZpbHRlckVmZmVjdFJlbmRlcmVyQ29yZUlt
YWdlLm1tOgorICAgICAgICAoV2ViQ29yZTo6RmlsdGVyRWZmZWN0UmVuZGVyZXJDb3JlSW1hZ2U6
OmFwcGx5RWZmZWN0cyk6CisgICAgICAgIChXZWJDb3JlOjpGaWx0ZXJFZmZlY3RSZW5kZXJlckNv
cmVJbWFnZTo6Y29ubmVjdENJRmlsdGVycyk6CisgICAgICAgIChXZWJDb3JlOjpGaWx0ZXJFZmZl
Y3RSZW5kZXJlckNvcmVJbWFnZTo6aW1hZ2VGb3JTb3VyY2VHcmFwaGljKToKKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy9jcHUvYXJtL2ZpbHRlcnMvRkVCbGVuZE5FT04uaDoKKyAgICAgICAg
KFdlYkNvcmU6OkZFQmxlbmQ6OnBsYXRmb3JtQXBwbHlTb2Z0d2FyZSk6CisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRUJsZW5kLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZF
QmxlbmQ6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpGRUJsZW5kOjpGRUJsZW5kKToKKyAg
ICAgICAgKFdlYkNvcmU6OkZFQmxlbmQ6OnBsYXRmb3JtQXBwbHlTb2Z0d2FyZSk6CisgICAgICAg
ICogcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRUJsZW5kLmg6CisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvZmlsdGVycy9GRUNvbG9yTWF0cml4LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkZFQ29sb3JNYXRyaXg6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpGRUNvbG9yTWF0cml4
OjpGRUNvbG9yTWF0cml4KToKKyAgICAgICAgKFdlYkNvcmU6OkZFQ29sb3JNYXRyaXg6OnBsYXRm
b3JtQXBwbHlTb2Z0d2FyZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9G
RUNvbG9yTWF0cml4Lmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRUNv
bXBvbmVudFRyYW5zZmVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZFQ29tcG9uZW50VHJhbnNm
ZXI6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpGRUNvbXBvbmVudFRyYW5zZmVyOjpGRUNv
bXBvbmVudFRyYW5zZmVyKToKKyAgICAgICAgKFdlYkNvcmU6OkZFQ29tcG9uZW50VHJhbnNmZXI6
OnBsYXRmb3JtQXBwbHlTb2Z0d2FyZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZmls
dGVycy9GRUNvbXBvbmVudFRyYW5zZmVyLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
ZmlsdGVycy9GRUNvbXBvc2l0ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGRUNvbXBvc2l0ZTo6
Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkZFQ29tcG9zaXRlOjpGRUNvbXBvc2l0ZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpGRUNvbXBvc2l0ZTo6ZGV0ZXJtaW5lQWJzb2x1dGVQYWludFJlY3Qp
OgorICAgICAgICAoV2ViQ29yZTo6RkVDb21wb3NpdGU6OnBsYXRmb3JtQXBwbHlTb2Z0d2FyZSk6
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRUNvbXBvc2l0ZS5oOgorICAg
ICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVDb252b2x2ZU1hdHJpeC5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpGRUNvbnZvbHZlTWF0cml4OjpjcmVhdGUpOgorICAgICAgICAoV2Vi
Q29yZTo6RkVDb252b2x2ZU1hdHJpeDo6RkVDb252b2x2ZU1hdHJpeCk6CisgICAgICAgIChXZWJD
b3JlOjpGRUNvbnZvbHZlTWF0cml4OjpwbGF0Zm9ybUFwcGx5U29mdHdhcmUpOgorICAgICAgICAq
IHBsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVDb252b2x2ZU1hdHJpeC5oOgorICAgICAgICAq
IHBsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVEaWZmdXNlTGlnaHRpbmcuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6RkVEaWZmdXNlTGlnaHRpbmc6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3Jl
OjpGRURpZmZ1c2VMaWdodGluZzo6RkVEaWZmdXNlTGlnaHRpbmcpOgorICAgICAgICAqIHBsYXRm
b3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVEaWZmdXNlTGlnaHRpbmcuaDoKKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFRGlzcGxhY2VtZW50TWFwLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkZFRGlzcGxhY2VtZW50TWFwOjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6RkVE
aXNwbGFjZW1lbnRNYXA6OkZFRGlzcGxhY2VtZW50TWFwKToKKyAgICAgICAgKFdlYkNvcmU6OkZF
RGlzcGxhY2VtZW50TWFwOjpwbGF0Zm9ybUFwcGx5U29mdHdhcmUpOgorICAgICAgICAqIHBsYXRm
b3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVEaXNwbGFjZW1lbnRNYXAuaDoKKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFRHJvcFNoYWRvdy5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpGRURyb3BTaGFkb3c6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpGRURyb3BTaGFkb3c6
OkZFRHJvcFNoYWRvdyk6CisgICAgICAgIChXZWJDb3JlOjpGRURyb3BTaGFkb3c6OmRldGVybWlu
ZUFic29sdXRlUGFpbnRSZWN0KToKKyAgICAgICAgKFdlYkNvcmU6OkZFRHJvcFNoYWRvdzo6cGxh
dGZvcm1BcHBseVNvZnR3YXJlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJz
L0ZFRHJvcFNoYWRvdy5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVG
bG9vZC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGRUZsb29kOjpjcmVhdGUpOgorICAgICAgICAo
V2ViQ29yZTo6RkVGbG9vZDo6RkVGbG9vZCk6CisgICAgICAgIChXZWJDb3JlOjpGRUZsb29kOjpw
bGF0Zm9ybUFwcGx5U29mdHdhcmUpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2ZpbHRl
cnMvRkVGbG9vZC5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVHYXVz
c2lhbkJsdXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RkVHYXVzc2lhbkJsdXI6OmNyZWF0ZSk6
CisgICAgICAgIChXZWJDb3JlOjpGRUdhdXNzaWFuQmx1cjo6RkVHYXVzc2lhbkJsdXIpOgorICAg
ICAgICAoV2ViQ29yZTo6RkVHYXVzc2lhbkJsdXI6OmRldGVybWluZUFic29sdXRlUGFpbnRSZWN0
KToKKyAgICAgICAgKFdlYkNvcmU6OkZFR2F1c3NpYW5CbHVyOjpwbGF0Zm9ybUFwcGx5U29mdHdh
cmUpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVHYXVzc2lhbkJsdXIu
aDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFTGlnaHRpbmcuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6RkVMaWdodGluZzo6RkVMaWdodGluZyk6CisgICAgICAgIChXZWJD
b3JlOjpGRUxpZ2h0aW5nOjpwbGF0Zm9ybUFwcGx5U29mdHdhcmUpOgorICAgICAgICAqIHBsYXRm
b3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVMaWdodGluZy5oOgorICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL2ZpbHRlcnMvRkVNZXJnZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGRU1lcmdlOjpj
cmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6RkVNZXJnZTo6RkVNZXJnZSk6CisgICAgICAgIChX
ZWJDb3JlOjpGRU1lcmdlOjpwbGF0Zm9ybUFwcGx5U29mdHdhcmUpOgorICAgICAgICAqIHBsYXRm
b3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVNZXJnZS5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL2ZpbHRlcnMvRkVNb3JwaG9sb2d5LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZFTW9ycGhv
bG9neTo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkZFTW9ycGhvbG9neTo6RkVNb3JwaG9s
b2d5KToKKyAgICAgICAgKFdlYkNvcmU6OkZFTW9ycGhvbG9neTo6ZGV0ZXJtaW5lQWJzb2x1dGVQ
YWludFJlY3QpOgorICAgICAgICAoV2ViQ29yZTo6RkVNb3JwaG9sb2d5OjpwbGF0Zm9ybUFwcGx5
U29mdHdhcmUpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVNb3JwaG9s
b2d5Lmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRU9mZnNldC5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpGRU9mZnNldDo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6
OkZFT2Zmc2V0OjpGRU9mZnNldCk6CisgICAgICAgIChXZWJDb3JlOjpGRU9mZnNldDo6ZGV0ZXJt
aW5lQWJzb2x1dGVQYWludFJlY3QpOgorICAgICAgICAoV2ViQ29yZTo6RkVPZmZzZXQ6OnBsYXRm
b3JtQXBwbHlTb2Z0d2FyZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9G
RU9mZnNldC5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVTcGVjdWxh
ckxpZ2h0aW5nLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZFU3BlY3VsYXJMaWdodGluZzo6Y3Jl
YXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkZFU3BlY3VsYXJMaWdodGluZzo6RkVTcGVjdWxhckxp
Z2h0aW5nKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFU3BlY3VsYXJM
aWdodGluZy5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVUaWxlLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkZFVGlsZTo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6
OkZFVGlsZTo6RkVUaWxlKToKKyAgICAgICAgKFdlYkNvcmU6OkZFVGlsZTo6cGxhdGZvcm1BcHBs
eVNvZnR3YXJlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFVGlsZS5o
OgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVUdXJidWxlbmNlLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkZFVHVyYnVsZW5jZTo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNv
cmU6OkZFVHVyYnVsZW5jZTo6RkVUdXJidWxlbmNlKToKKyAgICAgICAgKFdlYkNvcmU6OkZFVHVy
YnVsZW5jZTo6ZmlsbFJlZ2lvbiBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpGRVR1cmJ1bGVu
Y2U6OmZpbGxSZWdpb25Xb3JrZXIpOgorICAgICAgICAoV2ViQ29yZTo6RkVUdXJidWxlbmNlOjpw
bGF0Zm9ybUFwcGx5U29mdHdhcmUpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2ZpbHRl
cnMvRkVUdXJidWxlbmNlLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9G
aWx0ZXIuaDoKKyAgICAgICAgKFdlYkNvcmU6OkZpbHRlcjo6c291cmNlSW1hZ2UgY29uc3QpOgor
ICAgICAgICAoV2ViQ29yZTo6RmlsdGVyOjpzb3VyY2VJbWFnZSk6IERlbGV0ZWQuCisKKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZpbHRlckVmZmVjdC5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpGaWx0ZXJFZmZlY3Q6OkZpbHRlckVmZmVjdCk6CisgICAgICAgIChXZWJDb3Jl
OjpGaWx0ZXJFZmZlY3Q6OmRldGVybWluZUFic29sdXRlUGFpbnRSZWN0KToKKyAgICAgICAgKFdl
YkNvcmU6OkZpbHRlckVmZmVjdDo6ZGV0ZXJtaW5lRmlsdGVyUHJpbWl0aXZlU3VicmVnaW9uKToK
KyAgICAgICAgKFdlYkNvcmU6OkZpbHRlckVmZmVjdDo6YXBwbHkpOgorICAgICAgICAoV2ViQ29y
ZTo6RmlsdGVyRWZmZWN0OjppbWFnZUJ1ZmZlclJlc3VsdCk6CisgICAgICAgIChXZWJDb3JlOjpG
aWx0ZXJFZmZlY3Q6OmNvbnZlcnRQaXhlbEJ1ZmZlclRvQ29sb3JTcGFjZSk6CisgICAgICAgIChX
ZWJDb3JlOjpGaWx0ZXJFZmZlY3Q6OmNvbnZlcnRJbWFnZUJ1ZmZlclRvQ29sb3JTcGFjZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpGaWx0ZXJFZmZlY3Q6OmNyZWF0ZUltYWdlQnVmZmVyUmVzdWx0KToK
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZpbHRlckVmZmVjdC5oOgorICAg
ICAgICAoV2ViQ29yZTo6RmlsdGVyRWZmZWN0OjpmaWx0ZXIpOiBEZWxldGVkLgorICAgICAgICAo
V2ViQ29yZTo6RmlsdGVyRWZmZWN0OjpmaWx0ZXIgY29uc3QpOiBEZWxldGVkLgorICAgICAgICBD
cmVhdGUgYSB1bmFjY2VsZXJhdGVkIGZpbHRlciBpbWFnZSByZXN1bHQgZm9yIG5vdy4gVGhpcyB3
aWxsIGJlIGZpeGVkIAorICAgICAgICBpbiB0aGUgZm9sbG93aW5nIHBhdGNoLiBBbnl3YXkgY3Vy
cmVudGx5IHdlIG5ldmVyIGNyZWF0ZSBhY2NlbGVyYXRlZAorICAgICAgICBpbnRlcm1lZGlhdGUg
SW1hZ2VCdWZmZXJzIGZvciBmaWx0ZXJzLgorCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
ZmlsdGVycy9GaWx0ZXJFZmZlY3RSZW5kZXJlci5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL2ZpbHRlcnMvU291cmNlQWxwaGEuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U291cmNlQWxw
aGE6OlNvdXJjZUFscGhhKToKKyAgICAgICAgKFdlYkNvcmU6OlNvdXJjZUFscGhhOjpkZXRlcm1p
bmVBYnNvbHV0ZVBhaW50UmVjdCk6CisgICAgICAgIChXZWJDb3JlOjpTb3VyY2VBbHBoYTo6cGxh
dGZvcm1BcHBseVNvZnR3YXJlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJz
L1NvdXJjZUFscGhhLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9Tb3Vy
Y2VHcmFwaGljLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNvdXJjZUdyYXBoaWM6OmNyZWF0ZSk6
CisgICAgICAgIChXZWJDb3JlOjpTb3VyY2VHcmFwaGljOjpTb3VyY2VHcmFwaGljKToKKyAgICAg
ICAgKFdlYkNvcmU6OlNvdXJjZUdyYXBoaWM6OmRldGVybWluZUFic29sdXRlUGFpbnRSZWN0KToK
KyAgICAgICAgKFdlYkNvcmU6OlNvdXJjZUdyYXBoaWM6OnBsYXRmb3JtQXBwbHlTb2Z0d2FyZSk6
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9Tb3VyY2VHcmFwaGljLmg6Cisg
ICAgICAgIChXZWJDb3JlOjpTb3VyY2VHcmFwaGljOjpTb3VyY2VHcmFwaGljKTogRGVsZXRlZC4K
KyAgICAgICAgKiByZW5kZXJpbmcvQ1NTRmlsdGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmNy
ZWF0ZUJsdXJFZmZlY3QpOgorICAgICAgICAoV2ViQ29yZTo6Y3JlYXRlQnJpZ2h0bmVzc0VmZmVj
dCk6CisgICAgICAgIChXZWJDb3JlOjpjcmVhdGVDb250cmFzdEVmZmVjdCk6CisgICAgICAgIChX
ZWJDb3JlOjpjcmVhdGVEcm9wU2hhZG93RWZmZWN0KToKKyAgICAgICAgKFdlYkNvcmU6OmNyZWF0
ZUdyYXlTY2FsZUVmZmVjdCk6CisgICAgICAgIChXZWJDb3JlOjpjcmVhdGVIdWVSb3RhdGVFZmZl
Y3QpOgorICAgICAgICAoV2ViQ29yZTo6Y3JlYXRlSW52ZXJ0RWZmZWN0KToKKyAgICAgICAgKFdl
YkNvcmU6OmNyZWF0ZU9wYWNpdHlFZmZlY3QpOgorICAgICAgICAoV2ViQ29yZTo6Y3JlYXRlU2F0
dXJhdGVFZmZlY3QpOgorICAgICAgICAoV2ViQ29yZTo6Y3JlYXRlU2VwaWFFZmZlY3QpOgorICAg
ICAgICAoV2ViQ29yZTo6Q1NTRmlsdGVyOjpidWlsZEZpbHRlckZ1bmN0aW9ucyk6CisgICAgICAg
IChXZWJDb3JlOjpDU1NGaWx0ZXI6OmRldGVybWluZUZpbHRlclByaW1pdGl2ZVN1YnJlZ2lvbik6
CisgICAgICAgIChXZWJDb3JlOjpDU1NGaWx0ZXI6OmFwcGx5KToKKyAgICAgICAgKiByZW5kZXJp
bmcvQ1NTRmlsdGVyLmg6CisgICAgICAgIEFwcGx5IHRoZSBGaWx0ZXJGdW5jdGlvbnMgb2YgdGhl
IENTU0ZpbHRlciBpbiB0aGUgZm9yd2FyZCBkaXJlY3Rpb24uCisKKyAgICAgICAgKiByZW5kZXJp
bmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlRmlsdGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJl
bmRlclNWR1Jlc291cmNlRmlsdGVyOjphcHBseVJlc291cmNlKToKKyAgICAgICAgKFdlYkNvcmU6
OlJlbmRlclNWR1Jlc291cmNlRmlsdGVyOjpwb3N0QXBwbHlSZXNvdXJjZSk6CisKKyAgICAgICAg
KiBzdmcvU1ZHRkVCbGVuZEVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHRkVCbGVu
ZEVsZW1lbnQ6OmJ1aWxkIGNvbnN0KToKKyAgICAgICAgKiBzdmcvU1ZHRkVCbGVuZEVsZW1lbnQu
aDoKKyAgICAgICAgKiBzdmcvU1ZHRkVDb2xvck1hdHJpeEVsZW1lbnQuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6U1ZHRkVDb2xvck1hdHJpeEVsZW1lbnQ6OmJ1aWxkIGNvbnN0KToKKyAgICAgICAg
KiBzdmcvU1ZHRkVDb2xvck1hdHJpeEVsZW1lbnQuaDoKKyAgICAgICAgKiBzdmcvU1ZHRkVDb21w
b25lbnRUcmFuc2ZlckVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHRkVDb21wb25l
bnRUcmFuc2ZlckVsZW1lbnQ6OmJ1aWxkIGNvbnN0KToKKyAgICAgICAgKiBzdmcvU1ZHRkVDb21w
b25lbnRUcmFuc2ZlckVsZW1lbnQuaDoKKyAgICAgICAgKiBzdmcvU1ZHRkVDb21wb3NpdGVFbGVt
ZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR0ZFQ29tcG9zaXRlRWxlbWVudDo6YnVpbGQg
Y29uc3QpOgorICAgICAgICAqIHN2Zy9TVkdGRUNvbXBvc2l0ZUVsZW1lbnQuaDoKKyAgICAgICAg
KiBzdmcvU1ZHRkVDb252b2x2ZU1hdHJpeEVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
U1ZHRkVDb252b2x2ZU1hdHJpeEVsZW1lbnQ6OmJ1aWxkIGNvbnN0KToKKyAgICAgICAgKiBzdmcv
U1ZHRkVDb252b2x2ZU1hdHJpeEVsZW1lbnQuaDoKKyAgICAgICAgKiBzdmcvU1ZHRkVEaWZmdXNl
TGlnaHRpbmdFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR0ZFRGlmZnVzZUxpZ2h0
aW5nRWxlbWVudDo6YnVpbGQgY29uc3QpOgorICAgICAgICAqIHN2Zy9TVkdGRURpZmZ1c2VMaWdo
dGluZ0VsZW1lbnQuaDoKKyAgICAgICAgKiBzdmcvU1ZHRkVEaXNwbGFjZW1lbnRNYXBFbGVtZW50
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR0ZFRGlzcGxhY2VtZW50TWFwRWxlbWVudDo6YnVp
bGQgY29uc3QpOgorICAgICAgICAqIHN2Zy9TVkdGRURpc3BsYWNlbWVudE1hcEVsZW1lbnQuaDoK
KyAgICAgICAgKiBzdmcvU1ZHRkVEcm9wU2hhZG93RWxlbWVudC5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpTVkdGRURyb3BTaGFkb3dFbGVtZW50OjpidWlsZCBjb25zdCk6CisgICAgICAgICogc3Zn
L1NWR0ZFRHJvcFNoYWRvd0VsZW1lbnQuaDoKKyAgICAgICAgKiBzdmcvU1ZHRkVGbG9vZEVsZW1l
bnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHRkVGbG9vZEVsZW1lbnQ6OmJ1aWxkIGNvbnN0
KToKKyAgICAgICAgKiBzdmcvU1ZHRkVGbG9vZEVsZW1lbnQuaDoKKyAgICAgICAgKiBzdmcvU1ZH
RkVHYXVzc2lhbkJsdXJFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR0ZFR2F1c3Np
YW5CbHVyRWxlbWVudDo6YnVpbGQgY29uc3QpOgorICAgICAgICAqIHN2Zy9TVkdGRUdhdXNzaWFu
Qmx1ckVsZW1lbnQuaDoKKyAgICAgICAgKiBzdmcvU1ZHRkVJbWFnZUVsZW1lbnQuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6U1ZHRkVJbWFnZUVsZW1lbnQ6OmJ1aWxkIGNvbnN0KToKKyAgICAgICAg
KiBzdmcvU1ZHRkVJbWFnZUVsZW1lbnQuaDoKKyAgICAgICAgKiBzdmcvU1ZHRkVNZXJnZUVsZW1l
bnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHRkVNZXJnZUVsZW1lbnQ6OmJ1aWxkIGNvbnN0
KToKKyAgICAgICAgKiBzdmcvU1ZHRkVNZXJnZUVsZW1lbnQuaDoKKyAgICAgICAgKiBzdmcvU1ZH
RkVNb3JwaG9sb2d5RWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdGRU1vcnBob2xv
Z3lFbGVtZW50OjpidWlsZCBjb25zdCk6CisgICAgICAgICogc3ZnL1NWR0ZFTW9ycGhvbG9neUVs
ZW1lbnQuaDoKKyAgICAgICAgKiBzdmcvU1ZHRkVPZmZzZXRFbGVtZW50LmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OlNWR0ZFT2Zmc2V0RWxlbWVudDo6YnVpbGQgY29uc3QpOgorICAgICAgICAqIHN2
Zy9TVkdGRU9mZnNldEVsZW1lbnQuaDoKKyAgICAgICAgKiBzdmcvU1ZHRkVTcGVjdWxhckxpZ2h0
aW5nRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdGRVNwZWN1bGFyTGlnaHRpbmdF
bGVtZW50OjpidWlsZCBjb25zdCk6CisgICAgICAgICogc3ZnL1NWR0ZFU3BlY3VsYXJMaWdodGlu
Z0VsZW1lbnQuaDoKKyAgICAgICAgKiBzdmcvU1ZHRkVUaWxlRWxlbWVudC5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpTVkdGRVRpbGVFbGVtZW50OjpidWlsZCBjb25zdCk6CisgICAgICAgICogc3Zn
L1NWR0ZFVGlsZUVsZW1lbnQuaDoKKyAgICAgICAgKiBzdmcvU1ZHRkVUdXJidWxlbmNlRWxlbWVu
dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdGRVR1cmJ1bGVuY2VFbGVtZW50OjpidWlsZCBj
b25zdCk6CisgICAgICAgICogc3ZnL1NWR0ZFVHVyYnVsZW5jZUVsZW1lbnQuaDoKKyAgICAgICAg
KiBzdmcvU1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVzLmg6CisgICAgICAgIFJl
bW92ZSB0aGUgRmlsdGVyIGFzIGFuIGlucHV0IHRvIHRoZSBidWlsZCgpIG1ldGhvZCBhbmQgcGFz
cyBhIHJlZmVyZW5jZQorICAgICAgICB0byBTVkdGaWx0ZXJCdWlsZGVyIGluc3RlYWQgb2YgcGFz
c2luZyBhIHBvaW50ZXIuCisKKyAgICAgICAgKiBzdmcvZ3JhcGhpY3MvZmlsdGVycy9TVkdGRUlt
YWdlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZFSW1hZ2U6OmNyZWF0ZSk6CisgICAgICAgIChX
ZWJDb3JlOjpGRUltYWdlOjpGRUltYWdlKToKKyAgICAgICAgKFdlYkNvcmU6OkZFSW1hZ2U6OmRl
dGVybWluZUFic29sdXRlUGFpbnRSZWN0KToKKyAgICAgICAgKFdlYkNvcmU6OkZFSW1hZ2U6OnBs
YXRmb3JtQXBwbHlTb2Z0d2FyZSk6CisgICAgICAgICogc3ZnL2dyYXBoaWNzL2ZpbHRlcnMvU1ZH
RkVJbWFnZS5oOgorICAgICAgICAqIHN2Zy9ncmFwaGljcy9maWx0ZXJzL1NWR0ZpbHRlci5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpTVkdGaWx0ZXI6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3Jl
OjpTVkdGaWx0ZXI6OmFwcGx5KToKKyAgICAgICAgKiBzdmcvZ3JhcGhpY3MvZmlsdGVycy9TVkdG
aWx0ZXIuaDoKKyAgICAgICAgKiBzdmcvZ3JhcGhpY3MvZmlsdGVycy9TVkdGaWx0ZXJCdWlsZGVy
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR0ZpbHRlckJ1aWxkZXI6OmJ1aWxkRmlsdGVyRWZm
ZWN0cyk6CisgICAgICAgICogc3ZnL2dyYXBoaWNzL2ZpbHRlcnMvU1ZHRmlsdGVyQnVpbGRlci5o
OgorCiAyMDIxLTExLTEwICBTYWlkIEFib3UtSGFsbGF3YSAgPHNhaWRAYXBwbGUuY29tPgogCiAg
ICAgICAgIFtHUFUgUHJvY2Vzc10gTWFrZSBDU1NGaWx0ZXIgYmUgYSBjb21wb3NpdGUgb2YgRmls
dGVyRnVuY3Rpb25zCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jb3JlaW1hZ2UvRmlsdGVyRWZmZWN0UmVuZGVyZXJDb3JlSW1hZ2UuaCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvcmVpbWFnZS9GaWx0ZXJFZmZlY3RSZW5kZXJlckNvcmVJ
bWFnZS5oCmluZGV4IGU2YzhkZjRkNTViNDU2MTM1NDllM2FmNDkxOTJhMjZlMmMwNDRhZjcuLmU3
YmM4NTMyNzJhYjRkYWY3YzliODUwMTg2Y2M5OWE5NzQ0ZjkzNWYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvcmVpbWFnZS9GaWx0ZXJFZmZlY3RSZW5kZXJl
ckNvcmVJbWFnZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvcmVp
bWFnZS9GaWx0ZXJFZmZlY3RSZW5kZXJlckNvcmVJbWFnZS5oCkBAIC00Nyw3ICs0Nyw3IEBAIGNs
YXNzIEZpbHRlckVmZmVjdFJlbmRlcmVyQ29yZUltYWdlIDogcHVibGljIEZpbHRlckVmZmVjdFJl
bmRlcmVyIHsKIHB1YmxpYzoKICAgICBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPEZpbHRlckVmZmVj
dFJlbmRlcmVyQ29yZUltYWdlPiB0cnlDcmVhdGUoRmlsdGVyRWZmZWN0Jik7CiAgICAgUmV0YWlu
UHRyPENJQ29udGV4dD4gc2hhcmVkQ0lDb250ZXh0KCk7Ci0gICAgdm9pZCBhcHBseUVmZmVjdHMo
RmlsdGVyRWZmZWN0JikgZmluYWw7CisgICAgdm9pZCBhcHBseUVmZmVjdHMoY29uc3QgRmlsdGVy
JiwgRmlsdGVyRWZmZWN0JikgZmluYWw7CiAgICAgYm9vbCBoYXNSZXN1bHQoKSBjb25zdCBmaW5h
bCB7IHJldHVybiBtX291dHB1dEltYWdlOyB9CiAgICAgSW1hZ2VCdWZmZXIqIG91dHB1dCgpIGNv
bnN0IGZpbmFsOwogICAgIEZsb2F0UmVjdCBkZXN0UmVjdChjb25zdCBGaWx0ZXJFZmZlY3QmKSBj
b25zdCBmaW5hbDsKQEAgLTU1LDEyICs1NSwxMiBAQCBwdWJsaWM6CiAgICAgRmlsdGVyRWZmZWN0
UmVuZGVyZXJDb3JlSW1hZ2UoKTsKICAgICAKIHByaXZhdGU6Ci0gICAgUmV0YWluUHRyPENJSW1h
Z2U+IGNvbm5lY3RDSUZpbHRlcnMoRmlsdGVyRWZmZWN0Jik7CisgICAgUmV0YWluUHRyPENJSW1h
Z2U+IGNvbm5lY3RDSUZpbHRlcnMoY29uc3QgRmlsdGVyJiwgRmlsdGVyRWZmZWN0Jik7CiAgICAg
dm9pZCByZW5kZXJUb0ltYWdlQnVmZmVyKEZpbHRlckVmZmVjdCYpIGZpbmFsOwogICAgIHN0YXRp
YyBib29sIHN1cHBvcnRzQ29yZUltYWdlUmVuZGVyaW5nKEZpbHRlckVmZmVjdCYpOwogICAgIHN0
YXRpYyBib29sIGNhblJlbmRlclVzaW5nQ0lGaWx0ZXJzKEZpbHRlckVmZmVjdCYpOwogICAgIAot
ICAgIFJldGFpblB0cjxDSUltYWdlPiBpbWFnZUZvclNvdXJjZUdyYXBoaWMoU291cmNlR3JhcGhp
YyYpOworICAgIFJldGFpblB0cjxDSUltYWdlPiBpbWFnZUZvclNvdXJjZUdyYXBoaWMoY29uc3Qg
RmlsdGVyJik7CiAgICAgUmV0YWluUHRyPENJSW1hZ2U+IGltYWdlRm9yRkVDb2xvck1hdHJpeChj
b25zdCBGRUNvbG9yTWF0cml4JiwgY29uc3QgVmVjdG9yPFJldGFpblB0cjxDSUltYWdlPj4mKTsK
ICAgICBSZXRhaW5QdHI8Q0lJbWFnZT4gaW1hZ2VGb3JGRUNvbXBvbmVudFRyYW5zZmVyKGNvbnN0
IEZFQ29tcG9uZW50VHJhbnNmZXImLCBWZWN0b3I8UmV0YWluUHRyPENJSW1hZ2U+PiYpOwogICAg
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29yZWltYWdl
L0ZpbHRlckVmZmVjdFJlbmRlcmVyQ29yZUltYWdlLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY29yZWltYWdlL0ZpbHRlckVmZmVjdFJlbmRlcmVyQ29yZUltYWdlLm1tCmlu
ZGV4IDk5YjE2OWEzODFlMTIyMTc3NjAyYTJhNzMyMzFiNDBiMWI4ZWU5YmYuLjhiNDAwMTc3MDBl
MTBjNjg3YmE3MDZlNTU5NmI4YzBiMjMwYmEyNGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2NvcmVpbWFnZS9GaWx0ZXJFZmZlY3RSZW5kZXJlckNvcmVJbWFn
ZS5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb3JlaW1hZ2UvRmls
dGVyRWZmZWN0UmVuZGVyZXJDb3JlSW1hZ2UubW0KQEAgLTk3LDI1ICs5NywyNSBAQCBib29sIEZp
bHRlckVmZmVjdFJlbmRlcmVyQ29yZUltYWdlOjpzdXBwb3J0c0NvcmVJbWFnZVJlbmRlcmluZyhG
aWx0ZXJFZmZlY3QmIGVmZgogICAgIHJldHVybiBmYWxzZTsKIH0KIAotdm9pZCBGaWx0ZXJFZmZl
Y3RSZW5kZXJlckNvcmVJbWFnZTo6YXBwbHlFZmZlY3RzKEZpbHRlckVmZmVjdCYgbGFzdEVmZmVj
dCkKK3ZvaWQgRmlsdGVyRWZmZWN0UmVuZGVyZXJDb3JlSW1hZ2U6OmFwcGx5RWZmZWN0cyhjb25z
dCBGaWx0ZXImIGZpbHRlciwgRmlsdGVyRWZmZWN0JiBsYXN0RWZmZWN0KQogewotICAgIG1fb3V0
cHV0SW1hZ2UgPSBjb25uZWN0Q0lGaWx0ZXJzKGxhc3RFZmZlY3QpOworICAgIG1fb3V0cHV0SW1h
Z2UgPSBjb25uZWN0Q0lGaWx0ZXJzKGZpbHRlciwgbGFzdEVmZmVjdCk7CiAgICAgaWYgKCFtX291
dHB1dEltYWdlKQogICAgICAgICByZXR1cm47CiAgICAgcmVuZGVyVG9JbWFnZUJ1ZmZlcihsYXN0
RWZmZWN0KTsKIH0KIAotUmV0YWluUHRyPENJSW1hZ2U+IEZpbHRlckVmZmVjdFJlbmRlcmVyQ29y
ZUltYWdlOjpjb25uZWN0Q0lGaWx0ZXJzKEZpbHRlckVmZmVjdCYgZWZmZWN0KQorUmV0YWluUHRy
PENJSW1hZ2U+IEZpbHRlckVmZmVjdFJlbmRlcmVyQ29yZUltYWdlOjpjb25uZWN0Q0lGaWx0ZXJz
KGNvbnN0IEZpbHRlciYgZmlsdGVyLCBGaWx0ZXJFZmZlY3QmIGVmZmVjdCkKIHsKICAgICBWZWN0
b3I8UmV0YWluUHRyPENJSW1hZ2U+PiBpbnB1dEltYWdlczsKICAgICAKICAgICBmb3IgKGF1dG8g
aW4gOiBlZmZlY3QuaW5wdXRFZmZlY3RzKCkpIHsKLSAgICAgICAgYXV0byBpbnB1dEltYWdlID0g
Y29ubmVjdENJRmlsdGVycygqaW4pOworICAgICAgICBhdXRvIGlucHV0SW1hZ2UgPSBjb25uZWN0
Q0lGaWx0ZXJzKGZpbHRlciwgKmluKTsKICAgICAgICAgaWYgKCFpbnB1dEltYWdlKQogICAgICAg
ICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgICAgIGlucHV0SW1hZ2VzLmFwcGVuZChpbnB1dElt
YWdlKTsKICAgICB9Ci0gICAgZWZmZWN0LmRldGVybWluZUFic29sdXRlUGFpbnRSZWN0KCk7Cisg
ICAgZWZmZWN0LmRldGVybWluZUFic29sdXRlUGFpbnRSZWN0KGZpbHRlcik7CiAgICAgZWZmZWN0
LnNldFJlc3VsdENvbG9yU3BhY2UoZWZmZWN0Lm9wZXJhdGluZ0NvbG9yU3BhY2UoKSk7CiAgICAg
CiAgICAgaWYgKGVmZmVjdC5hYnNvbHV0ZVBhaW50UmVjdCgpLmlzRW1wdHkoKSB8fCBJbWFnZUJ1
ZmZlcjo6c2l6ZU5lZWRzQ2xhbXBpbmcoZWZmZWN0LmFic29sdXRlUGFpbnRSZWN0KCkuc2l6ZSgp
KSkKQEAgLTEyMyw3ICsxMjMsNyBAQCBSZXRhaW5QdHI8Q0lJbWFnZT4gRmlsdGVyRWZmZWN0UmVu
ZGVyZXJDb3JlSW1hZ2U6OmNvbm5lY3RDSUZpbHRlcnMoRmlsdGVyRWZmZWN0JgogICAgIAogICAg
IHN3aXRjaCAoZWZmZWN0LmZpbHRlclR5cGUoKSkgewogICAgIGNhc2UgRmlsdGVyRWZmZWN0OjpU
eXBlOjpTb3VyY2VHcmFwaGljOgotICAgICAgICByZXR1cm4gaW1hZ2VGb3JTb3VyY2VHcmFwaGlj
KGRvd25jYXN0PFNvdXJjZUdyYXBoaWM+KGVmZmVjdCkpOworICAgICAgICByZXR1cm4gaW1hZ2VG
b3JTb3VyY2VHcmFwaGljKGZpbHRlcik7CiAgICAgY2FzZSBGaWx0ZXJFZmZlY3Q6OlR5cGU6OkZF
Q29sb3JNYXRyaXg6CiAgICAgICAgIHJldHVybiBpbWFnZUZvckZFQ29sb3JNYXRyaXgoZG93bmNh
c3Q8RkVDb2xvck1hdHJpeD4oZWZmZWN0KSwgaW5wdXRJbWFnZXMpOwogICAgIGNhc2UgRmlsdGVy
RWZmZWN0OjpUeXBlOjpGRUNvbXBvbmVudFRyYW5zZmVyOgpAQCAtMTM1LDkgKzEzNSw5IEBAIFJl
dGFpblB0cjxDSUltYWdlPiBGaWx0ZXJFZmZlY3RSZW5kZXJlckNvcmVJbWFnZTo6Y29ubmVjdENJ
RmlsdGVycyhGaWx0ZXJFZmZlY3QmCiAgICAgcmV0dXJuIG51bGxwdHI7CiB9CiAKLVJldGFpblB0
cjxDSUltYWdlPiBGaWx0ZXJFZmZlY3RSZW5kZXJlckNvcmVJbWFnZTo6aW1hZ2VGb3JTb3VyY2VH
cmFwaGljKFNvdXJjZUdyYXBoaWMmIGVmZmVjdCkKK1JldGFpblB0cjxDSUltYWdlPiBGaWx0ZXJF
ZmZlY3RSZW5kZXJlckNvcmVJbWFnZTo6aW1hZ2VGb3JTb3VyY2VHcmFwaGljKGNvbnN0IEZpbHRl
ciYgZmlsdGVyKQogewotICAgIEltYWdlQnVmZmVyKiBzb3VyY2VJbWFnZSA9IGVmZmVjdC5maWx0
ZXIoKS5zb3VyY2VJbWFnZSgpOworICAgIEltYWdlQnVmZmVyKiBzb3VyY2VJbWFnZSA9IGZpbHRl
ci5zb3VyY2VJbWFnZSgpOwogICAgIGlmICghc291cmNlSW1hZ2UpCiAgICAgICAgIHJldHVybiBu
dWxscHRyOwogICAgIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY3B1L2FybS9maWx0ZXJzL0ZFQmxlbmRORU9OLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jcHUvYXJtL2ZpbHRlcnMvRkVCbGVuZE5FT04uaAppbmRleCAyNjExMGNkZmIw
YmI2Y2Y0OTA0NTgzODc3ODdhYzEwZmExNzFjZjE4Li43NzgzNmRkZGIwMjU4ZTlmN2M1YmViM2Vh
NTM4MDAyMjE4ZjJjOGI4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jcHUvYXJtL2ZpbHRlcnMvRkVCbGVuZE5FT04uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jcHUvYXJtL2ZpbHRlcnMvRkVCbGVuZE5FT04uaApAQCAtMjUsOCAr
MjUsNyBAQAogICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KICAqLwogCi0jaWZuZGVmIEZFQmxlbmRORU9OX2gKLSNk
ZWZpbmUgRkVCbGVuZE5FT05faAorI3ByYWdtYSBvbmNlCiAKICNpZiBIQVZFKEFSTV9ORU9OX0lO
VFJJTlNJQ1MpCiAKQEAgLTEwNyw3ICsxMDYsNyBAQCBwdWJsaWM6CiAgICAgfQogfTsKIAotdm9p
ZCBGRUJsZW5kOjpwbGF0Zm9ybUFwcGx5U29mdHdhcmUoKQordm9pZCBGRUJsZW5kOjpwbGF0Zm9y
bUFwcGx5U29mdHdhcmUoY29uc3QgRmlsdGVyJikKIHsKICAgICBGaWx0ZXJFZmZlY3QqIGluID0g
aW5wdXRFZmZlY3QoMCk7CiAgICAgRmlsdGVyRWZmZWN0KiBpbjIgPSBpbnB1dEVmZmVjdCgxKTsK
QEAgLTIwNSw1ICsyMDQsMyBAQCB2b2lkIEZFQmxlbmQ6OnBsYXRmb3JtQXBwbHlORU9OKHVuc2ln
bmVkIGNoYXIqIHNyY1BpeGVsQXJyYXlBLCB1bnNpZ25lZCBjaGFyKiBzcgogfSAvLyBuYW1lc3Bh
Y2UgV2ViQ29yZQogCiAjZW5kaWYgLy8gSEFWRShBUk1fTkVPTl9JTlRSSU5TSUNTKQotCi0jZW5k
aWYgLy8gRkVCbGVuZE5FT05faApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvZmlsdGVycy9GRUJsZW5kLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2ZpbHRlcnMvRkVCbGVuZC5jcHAKaW5kZXggYjRjYWVkNDU1NTcyZmM4NWNlZDhhNGYy
MzFjOWY4MzAyN2JhZmIwYi4uMWJiODMxY2UzMDlmYzVmZjdhMzVhNWY1NzYxYmFjNTkyNzE0YmMx
NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9G
RUJsZW5kLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJz
L0ZFQmxlbmQuY3BwCkBAIC0yNiwyMyArMjYsMjMgQEAKICNpbmNsdWRlICJGRUJsZW5kLmgiCiAK
ICNpbmNsdWRlICJGRUJsZW5kTkVPTi5oIgotI2luY2x1ZGUgIkZpbHRlci5oIgogI2luY2x1ZGUg
IkZsb2F0UG9pbnQuaCIKICNpbmNsdWRlICJHcmFwaGljc0NvbnRleHQuaCIKKyNpbmNsdWRlICJJ
bWFnZUJ1ZmZlci5oIgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL1VpbnQ4Q2xhbXBlZEFycmF5
Lmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvVGV4dFN0cmVhbS5oPgogCiBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAKLUZFQmxlbmQ6OkZFQmxlbmQoRmlsdGVyJiBmaWx0ZXIsIEJsZW5kTW9kZSBtb2RlKQot
ICAgIDogRmlsdGVyRWZmZWN0KGZpbHRlciwgRmlsdGVyRWZmZWN0OjpUeXBlOjpGRUJsZW5kKQot
ICAgICwgbV9tb2RlKG1vZGUpCitSZWY8RkVCbGVuZD4gRkVCbGVuZDo6Y3JlYXRlKEJsZW5kTW9k
ZSBtb2RlKQogeworICAgIHJldHVybiBhZG9wdFJlZigqbmV3IEZFQmxlbmQobW9kZSkpOwogfQog
Ci1SZWY8RkVCbGVuZD4gRkVCbGVuZDo6Y3JlYXRlKEZpbHRlciYgZmlsdGVyLCBCbGVuZE1vZGUg
bW9kZSkKK0ZFQmxlbmQ6OkZFQmxlbmQoQmxlbmRNb2RlIG1vZGUpCisgICAgOiBGaWx0ZXJFZmZl
Y3QoRmlsdGVyRWZmZWN0OjpUeXBlOjpGRUJsZW5kKQorICAgICwgbV9tb2RlKG1vZGUpCiB7Ci0g
ICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgRkVCbGVuZChmaWx0ZXIsIG1vZGUpKTsKIH0KIAogYm9v
bCBGRUJsZW5kOjpzZXRCbGVuZE1vZGUoQmxlbmRNb2RlIG1vZGUpCkBAIC01NCw3ICs1NCw3IEBA
IGJvb2wgRkVCbGVuZDo6c2V0QmxlbmRNb2RlKEJsZW5kTW9kZSBtb2RlKQogfQogCiAjaWYgIUhB
VkUoQVJNX05FT05fSU5UUklOU0lDUykKLXZvaWQgRkVCbGVuZDo6cGxhdGZvcm1BcHBseVNvZnR3
YXJlKCkKK3ZvaWQgRkVCbGVuZDo6cGxhdGZvcm1BcHBseVNvZnR3YXJlKGNvbnN0IEZpbHRlciYp
CiB7CiAgICAgRmlsdGVyRWZmZWN0KiBpbiA9IGlucHV0RWZmZWN0KDApOwogICAgIEZpbHRlckVm
ZmVjdCogaW4yID0gaW5wdXRFZmZlY3QoMSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFQmxlbmQuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVCbGVuZC5oCmluZGV4IGI4NGM4ZGQyODA1OGZmNDVkNTRj
ZGY4YTczYTJiYTcxNzI1ZmRlNWMuLmVlZDMxOGU4YzM1YjBjN2U2ZTE2MmY2M2JlYmMwZDJmNGJi
MGRiYmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRl
cnMvRkVCbGVuZC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRl
cnMvRkVCbGVuZC5oCkBAIC0yMywyMCArMjMsMjEgQEAKICNwcmFnbWEgb25jZQogCiAjaW5jbHVk
ZSAiRmlsdGVyRWZmZWN0LmgiCi0KLSNpbmNsdWRlICJGaWx0ZXIuaCIKKyNpbmNsdWRlICJHcmFw
aGljc1R5cGVzLmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgRkVCbGVuZCA6IHB1
YmxpYyBGaWx0ZXJFZmZlY3QgewogcHVibGljOgotICAgIHN0YXRpYyBSZWY8RkVCbGVuZD4gY3Jl
YXRlKEZpbHRlciYsIEJsZW5kTW9kZSk7CisgICAgc3RhdGljIFJlZjxGRUJsZW5kPiBjcmVhdGUo
QmxlbmRNb2RlKTsKIAogICAgIEJsZW5kTW9kZSBibGVuZE1vZGUoKSBjb25zdCB7IHJldHVybiBt
X21vZGU7IH0KICAgICBib29sIHNldEJsZW5kTW9kZShCbGVuZE1vZGUpOwogCiBwcml2YXRlOgot
ICAgIHZvaWQgcGxhdGZvcm1BcHBseVNvZnR3YXJlKCkgb3ZlcnJpZGU7CisgICAgRkVCbGVuZChC
bGVuZE1vZGUpOworCisgICAgdm9pZCBwbGF0Zm9ybUFwcGx5U29mdHdhcmUoY29uc3QgRmlsdGVy
Jikgb3ZlcnJpZGU7CiAgICAgdm9pZCBwbGF0Zm9ybUFwcGx5R2VuZXJpYyh1bnNpZ25lZCBjaGFy
KiBzcmNQaXhlbEFycmF5QSwgdW5zaWduZWQgY2hhciogc3JjUGl4ZWxBcnJheUIsIHVuc2lnbmVk
IGNoYXIqIGRzdFBpeGVsQXJyYXksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25l
ZCBjb2xvckFycmF5TGVuZ3RoKTsKICAgICB2b2lkIHBsYXRmb3JtQXBwbHlORU9OKHVuc2lnbmVk
IGNoYXIqIHNyY1BpeGVsQXJyYXlBLCB1bnNpZ25lZCBjaGFyKiBzcmNQaXhlbEFycmF5QiwgdW5z
aWduZWQgY2hhciogZHN0UGl4ZWxBcnJheSwKQEAgLTQ0LDggKzQ1LDYgQEAgcHJpdmF0ZToKIAog
ICAgIFdURjo6VGV4dFN0cmVhbSYgZXh0ZXJuYWxSZXByZXNlbnRhdGlvbihXVEY6OlRleHRTdHJl
YW0mLCBSZXByZXNlbnRhdGlvblR5cGUpIGNvbnN0IG92ZXJyaWRlOwogCi0gICAgRkVCbGVuZChG
aWx0ZXImLCBCbGVuZE1vZGUpOwotCiAgICAgQmxlbmRNb2RlIG1fbW9kZTsKIH07CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVDb2xvck1h
dHJpeC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFQ29s
b3JNYXRyaXguY3BwCmluZGV4IGE3OTFiZDZkMzFmZDc1MDRhMTEzMjdmMWQ0MWFjYmQzYTQ5ZTE5
NTIuLmYwYTlkMzE4MTZmZDRkZGFhOTBlNzI2ZjJlODE4NDBkNWFmZTJjZjEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVDb2xvck1hdHJpeC5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRUNvbG9y
TWF0cml4LmNwcApAQCAtMjMsOCArMjMsOCBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1
ZGUgIkZFQ29sb3JNYXRyaXguaCIKIAotI2luY2x1ZGUgIkZpbHRlci5oIgogI2luY2x1ZGUgIkdy
YXBoaWNzQ29udGV4dC5oIgorI2luY2x1ZGUgIkltYWdlQnVmZmVyLmgiCiAjaW5jbHVkZSAiUGl4
ZWxCdWZmZXIuaCIKICNpbmNsdWRlIDx3dGYvTWF0aEV4dHJhcy5oPgogI2luY2x1ZGUgPHd0Zi90
ZXh0L1RleHRTdHJlYW0uaD4KQEAgLTM1LDE2ICszNSwxNiBAQAogCiBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAKLUZFQ29sb3JNYXRyaXg6OkZFQ29sb3JNYXRyaXgoRmlsdGVyJiBmaWx0ZXIsIENvbG9y
TWF0cml4VHlwZSB0eXBlLCBWZWN0b3I8ZmxvYXQ+JiYgdmFsdWVzKQotICAgIDogRmlsdGVyRWZm
ZWN0KGZpbHRlciwgRmlsdGVyRWZmZWN0OjpUeXBlOjpGRUNvbG9yTWF0cml4KQotICAgICwgbV90
eXBlKHR5cGUpCi0gICAgLCBtX3ZhbHVlcyhXVEZNb3ZlKHZhbHVlcykpCitSZWY8RkVDb2xvck1h
dHJpeD4gRkVDb2xvck1hdHJpeDo6Y3JlYXRlKENvbG9yTWF0cml4VHlwZSB0eXBlLCBWZWN0b3I8
ZmxvYXQ+JiYgdmFsdWVzKQogeworICAgIHJldHVybiBhZG9wdFJlZigqbmV3IEZFQ29sb3JNYXRy
aXgodHlwZSwgV1RGTW92ZSh2YWx1ZXMpKSk7CiB9CiAKLVJlZjxGRUNvbG9yTWF0cml4PiBGRUNv
bG9yTWF0cml4OjpjcmVhdGUoRmlsdGVyJiBmaWx0ZXIsIENvbG9yTWF0cml4VHlwZSB0eXBlLCBW
ZWN0b3I8ZmxvYXQ+JiYgdmFsdWVzKQorRkVDb2xvck1hdHJpeDo6RkVDb2xvck1hdHJpeChDb2xv
ck1hdHJpeFR5cGUgdHlwZSwgVmVjdG9yPGZsb2F0PiYmIHZhbHVlcykKKyAgICA6IEZpbHRlckVm
ZmVjdChGaWx0ZXJFZmZlY3Q6OlR5cGU6OkZFQ29sb3JNYXRyaXgpCisgICAgLCBtX3R5cGUodHlw
ZSkKKyAgICAsIG1fdmFsdWVzKFdURk1vdmUodmFsdWVzKSkKIHsKLSAgICByZXR1cm4gYWRvcHRS
ZWYoKm5ldyBGRUNvbG9yTWF0cml4KGZpbHRlciwgdHlwZSwgV1RGTW92ZSh2YWx1ZXMpKSk7CiB9
CiAKIGJvb2wgRkVDb2xvck1hdHJpeDo6c2V0VHlwZShDb2xvck1hdHJpeFR5cGUgdHlwZSkKQEAg
LTI3Myw3ICsyNzMsNyBAQCB2b2lkIGVmZmVjdFR5cGUoVWludDhDbGFtcGVkQXJyYXkmIHBpeGVs
QXJyYXksIGNvbnN0IFZlY3RvcjxmbG9hdD4mIHZhbHVlcywgSW50UwogICAgIH0KIH0KIAotdm9p
ZCBGRUNvbG9yTWF0cml4OjpwbGF0Zm9ybUFwcGx5U29mdHdhcmUoKQordm9pZCBGRUNvbG9yTWF0
cml4OjpwbGF0Zm9ybUFwcGx5U29mdHdhcmUoY29uc3QgRmlsdGVyJikKIHsKICAgICBGaWx0ZXJF
ZmZlY3QqIGluID0gaW5wdXRFZmZlY3QoMCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVDb2xvck1hdHJpeC5oIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRUNvbG9yTWF0cml4LmgKaW5kZXggOTkyZTc1
ZjllODE1MGM2MTdhMmVmMDdjNjU5MzYxNjAwNWU0MGY0Mi4uMjI5ZmYwYjhjNDRmNTFjMGVmMDU0
ZTVlYTJhNDI0NmUyMjdkODdkMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvZmlsdGVycy9GRUNvbG9yTWF0cml4LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRUNvbG9yTWF0cml4LmgKQEAgLTIyLDggKzIyLDYgQEAK
ICNwcmFnbWEgb25jZQogCiAjaW5jbHVkZSAiRmlsdGVyRWZmZWN0LmgiCi0KLSNpbmNsdWRlICJG
aWx0ZXIuaCIKICNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsK
QEAgLTM4LDcgKzM2LDcgQEAgZW51bSBDb2xvck1hdHJpeFR5cGUgewogCiBjbGFzcyBGRUNvbG9y
TWF0cml4IDogcHVibGljIEZpbHRlckVmZmVjdCB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFJlZjxG
RUNvbG9yTWF0cml4PiBjcmVhdGUoRmlsdGVyJiwgQ29sb3JNYXRyaXhUeXBlLCBWZWN0b3I8Zmxv
YXQ+JiYpOworICAgIHN0YXRpYyBSZWY8RkVDb2xvck1hdHJpeD4gY3JlYXRlKENvbG9yTWF0cml4
VHlwZSwgVmVjdG9yPGZsb2F0PiYmKTsKIAogICAgIENvbG9yTWF0cml4VHlwZSB0eXBlKCkgY29u
c3QgeyByZXR1cm4gbV90eXBlOyB9CiAgICAgYm9vbCBzZXRUeXBlKENvbG9yTWF0cml4VHlwZSk7
CkBAIC01MCw5ICs0OCw5IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgaW5saW5lIHZvaWQgY2FsY3Vs
YXRlSHVlUm90YXRlQ29tcG9uZW50cyhmbG9hdCogY29tcG9uZW50cywgZmxvYXQgdmFsdWUpOwog
CiBwcml2YXRlOgotICAgIEZFQ29sb3JNYXRyaXgoRmlsdGVyJiwgQ29sb3JNYXRyaXhUeXBlLCBW
ZWN0b3I8ZmxvYXQ+JiYpOworICAgIEZFQ29sb3JNYXRyaXgoQ29sb3JNYXRyaXhUeXBlLCBWZWN0
b3I8ZmxvYXQ+JiYpOwogCi0gICAgdm9pZCBwbGF0Zm9ybUFwcGx5U29mdHdhcmUoKSBvdmVycmlk
ZTsKKyAgICB2b2lkIHBsYXRmb3JtQXBwbHlTb2Z0d2FyZShjb25zdCBGaWx0ZXImKSBvdmVycmlk
ZTsKIAogICAgIFdURjo6VGV4dFN0cmVhbSYgZXh0ZXJuYWxSZXByZXNlbnRhdGlvbihXVEY6OlRl
eHRTdHJlYW0mLCBSZXByZXNlbnRhdGlvblR5cGUpIGNvbnN0IG92ZXJyaWRlOwogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFQ29tcG9uZW50
VHJhbnNmZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9G
RUNvbXBvbmVudFRyYW5zZmVyLmNwcAppbmRleCBjZTAwY2MxOTgyOTc5YjQwOTQwNGQ1Y2ZkY2Mw
M2E2ZWQzMzVjM2IyLi5iMmRhZDM3MTRjNjNhYWQ5YWYyZWU3M2RkMWUxYTZlNjBmNWJmMmM4IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFQ29t
cG9uZW50VHJhbnNmZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2ZpbHRlcnMvRkVDb21wb25lbnRUcmFuc2Zlci5jcHAKQEAgLTI0LDcgKzI0LDYgQEAKICNpbmNs
dWRlICJjb25maWcuaCIKICNpbmNsdWRlICJGRUNvbXBvbmVudFRyYW5zZmVyLmgiCiAKLSNpbmNs
dWRlICJGaWx0ZXIuaCIKICNpbmNsdWRlICJHcmFwaGljc0NvbnRleHQuaCIKICNpbmNsdWRlICJQ
aXhlbEJ1ZmZlci5oIgogI2luY2x1ZGUgPHd0Zi9NYXRoRXh0cmFzLmg+CkBAIC0zMyw4ICszMiwx
MyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLUZFQ29tcG9uZW50VHJhbnNmZXI6OkZFQ29t
cG9uZW50VHJhbnNmZXIoRmlsdGVyJiBmaWx0ZXIsIGNvbnN0IENvbXBvbmVudFRyYW5zZmVyRnVu
Y3Rpb24mIHJlZEZ1bmN0aW9uLCBjb25zdCBDb21wb25lbnRUcmFuc2ZlckZ1bmN0aW9uJiBncmVl
bkZ1bmN0aW9uLCBjb25zdCBDb21wb25lbnRUcmFuc2ZlckZ1bmN0aW9uJiBibHVlRnVuY3Rpb24s
IGNvbnN0IENvbXBvbmVudFRyYW5zZmVyRnVuY3Rpb24mIGFscGhhRnVuY3Rpb24pCi0gICAgOiBG
aWx0ZXJFZmZlY3QoZmlsdGVyLCBGaWx0ZXJFZmZlY3Q6OlR5cGU6OkZFQ29tcG9uZW50VHJhbnNm
ZXIpCitSZWY8RkVDb21wb25lbnRUcmFuc2Zlcj4gRkVDb21wb25lbnRUcmFuc2Zlcjo6Y3JlYXRl
KGNvbnN0IENvbXBvbmVudFRyYW5zZmVyRnVuY3Rpb24mIHJlZEZ1bmN0aW9uLCBjb25zdCBDb21w
b25lbnRUcmFuc2ZlckZ1bmN0aW9uJiBncmVlbkZ1bmN0aW9uLCBjb25zdCBDb21wb25lbnRUcmFu
c2ZlckZ1bmN0aW9uJiBibHVlRnVuY3Rpb24sIGNvbnN0IENvbXBvbmVudFRyYW5zZmVyRnVuY3Rp
b24mIGFscGhhRnVuY3Rpb24pCit7CisgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgRkVDb21wb25l
bnRUcmFuc2ZlcihyZWRGdW5jdGlvbiwgZ3JlZW5GdW5jdGlvbiwgYmx1ZUZ1bmN0aW9uLCBhbHBo
YUZ1bmN0aW9uKSk7Cit9CisKK0ZFQ29tcG9uZW50VHJhbnNmZXI6OkZFQ29tcG9uZW50VHJhbnNm
ZXIoY29uc3QgQ29tcG9uZW50VHJhbnNmZXJGdW5jdGlvbiYgcmVkRnVuY3Rpb24sIGNvbnN0IENv
bXBvbmVudFRyYW5zZmVyRnVuY3Rpb24mIGdyZWVuRnVuY3Rpb24sIGNvbnN0IENvbXBvbmVudFRy
YW5zZmVyRnVuY3Rpb24mIGJsdWVGdW5jdGlvbiwgY29uc3QgQ29tcG9uZW50VHJhbnNmZXJGdW5j
dGlvbiYgYWxwaGFGdW5jdGlvbikKKyAgICA6IEZpbHRlckVmZmVjdChGaWx0ZXJFZmZlY3Q6OlR5
cGU6OkZFQ29tcG9uZW50VHJhbnNmZXIpCiAgICAgLCBtX3JlZEZ1bmN0aW9uKHJlZEZ1bmN0aW9u
KQogICAgICwgbV9ncmVlbkZ1bmN0aW9uKGdyZWVuRnVuY3Rpb24pCiAgICAgLCBtX2JsdWVGdW5j
dGlvbihibHVlRnVuY3Rpb24pCkBAIC00MiwxMiArNDYsNiBAQCBGRUNvbXBvbmVudFRyYW5zZmVy
OjpGRUNvbXBvbmVudFRyYW5zZmVyKEZpbHRlciYgZmlsdGVyLCBjb25zdCBDb21wb25lbnRUcmFu
c2ZlcgogewogfQogCi1SZWY8RkVDb21wb25lbnRUcmFuc2Zlcj4gRkVDb21wb25lbnRUcmFuc2Zl
cjo6Y3JlYXRlKEZpbHRlciYgZmlsdGVyLCBjb25zdCBDb21wb25lbnRUcmFuc2ZlckZ1bmN0aW9u
JiByZWRGdW5jdGlvbiwKLSAgICBjb25zdCBDb21wb25lbnRUcmFuc2ZlckZ1bmN0aW9uJiBncmVl
bkZ1bmN0aW9uLCBjb25zdCBDb21wb25lbnRUcmFuc2ZlckZ1bmN0aW9uJiBibHVlRnVuY3Rpb24s
IGNvbnN0IENvbXBvbmVudFRyYW5zZmVyRnVuY3Rpb24mIGFscGhhRnVuY3Rpb24pCi17Ci0gICAg
cmV0dXJuIGFkb3B0UmVmKCpuZXcgRkVDb21wb25lbnRUcmFuc2ZlcihmaWx0ZXIsIHJlZEZ1bmN0
aW9uLCBncmVlbkZ1bmN0aW9uLCBibHVlRnVuY3Rpb24sIGFscGhhRnVuY3Rpb24pKTsKLX0KLQog
dm9pZCBGRUNvbXBvbmVudFRyYW5zZmVyOjpjb21wdXRlSWRlbnRpdHlUYWJsZShMb29rdXBUYWJs
ZSYsIGNvbnN0IENvbXBvbmVudFRyYW5zZmVyRnVuY3Rpb24mKQogewogfQpAQCAtMTAzLDcgKzEw
MSw3IEBAIHZvaWQgRkVDb21wb25lbnRUcmFuc2Zlcjo6Y29tcHV0ZUdhbW1hVGFibGUoTG9va3Vw
VGFibGUmIHZhbHVlcywgY29uc3QgQ29tcG9uZW50CiAgICAgfQogfQogCi12b2lkIEZFQ29tcG9u
ZW50VHJhbnNmZXI6OnBsYXRmb3JtQXBwbHlTb2Z0d2FyZSgpCit2b2lkIEZFQ29tcG9uZW50VHJh
bnNmZXI6OnBsYXRmb3JtQXBwbHlTb2Z0d2FyZShjb25zdCBGaWx0ZXImKQogewogICAgIEZpbHRl
ckVmZmVjdCogaW4gPSBpbnB1dEVmZmVjdCgwKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRUNvbXBvbmVudFRyYW5zZmVyLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFQ29tcG9uZW50VHJhbnNmZXIu
aAppbmRleCAzYjlkMjYwOGIwOTc0ZDgyNTVlY2FhNDJhODNjMmFmZGY2MzhhM2Q5Li42YWZlZTVl
OTY4NjE3MTM3NDFlMzk5YTY4YjUxZjM5NDA4M2YwNDNiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFQ29tcG9uZW50VHJhbnNmZXIuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFQ29tcG9uZW50VHJh
bnNmZXIuaApAQCAtMjIsOCArMjIsNiBAQAogI3ByYWdtYSBvbmNlCiAKICNpbmNsdWRlICJGaWx0
ZXJFZmZlY3QuaCIKLQotI2luY2x1ZGUgIkZpbHRlci5oIgogI2luY2x1ZGUgPHd0Zi9WZWN0b3Iu
aD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtNTMsOCArNTEsNyBAQCBzdHJ1Y3QgQ29tcG9u
ZW50VHJhbnNmZXJGdW5jdGlvbiB7CiAKIGNsYXNzIEZFQ29tcG9uZW50VHJhbnNmZXIgOiBwdWJs
aWMgRmlsdGVyRWZmZWN0IHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUmVmPEZFQ29tcG9uZW50VHJh
bnNmZXI+IGNyZWF0ZShGaWx0ZXImLCBjb25zdCBDb21wb25lbnRUcmFuc2ZlckZ1bmN0aW9uJiBy
ZWRGdW5jLCBjb25zdCBDb21wb25lbnRUcmFuc2ZlckZ1bmN0aW9uJiBncmVlbkZ1bmMsCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgQ29tcG9uZW50VHJh
bnNmZXJGdW5jdGlvbiYgYmx1ZUZ1bmMsIGNvbnN0IENvbXBvbmVudFRyYW5zZmVyRnVuY3Rpb24m
IGFscGhhRnVuYyk7CisgICAgc3RhdGljIFJlZjxGRUNvbXBvbmVudFRyYW5zZmVyPiBjcmVhdGUo
Y29uc3QgQ29tcG9uZW50VHJhbnNmZXJGdW5jdGlvbiYgcmVkRnVuYywgY29uc3QgQ29tcG9uZW50
VHJhbnNmZXJGdW5jdGlvbiYgZ3JlZW5GdW5jLCBjb25zdCBDb21wb25lbnRUcmFuc2ZlckZ1bmN0
aW9uJiBibHVlRnVuYywgY29uc3QgQ29tcG9uZW50VHJhbnNmZXJGdW5jdGlvbiYgYWxwaGFGdW5j
KTsKIAogICAgIENvbXBvbmVudFRyYW5zZmVyRnVuY3Rpb24gcmVkRnVuY3Rpb24oKSBjb25zdCB7
IHJldHVybiBtX3JlZEZ1bmN0aW9uOyB9CiAgICAgQ29tcG9uZW50VHJhbnNmZXJGdW5jdGlvbiBn
cmVlbkZ1bmN0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9ncmVlbkZ1bmN0aW9uOyB9CkBAIC02Miw4
ICs1OSw3IEBAIHB1YmxpYzoKICAgICBDb21wb25lbnRUcmFuc2ZlckZ1bmN0aW9uIGFscGhhRnVu
Y3Rpb24oKSBjb25zdCB7IHJldHVybiBtX2FscGhhRnVuY3Rpb247IH0KIAogcHJpdmF0ZToKLSAg
ICBGRUNvbXBvbmVudFRyYW5zZmVyKEZpbHRlciYsIGNvbnN0IENvbXBvbmVudFRyYW5zZmVyRnVu
Y3Rpb24mIHJlZEZ1bmMsIGNvbnN0IENvbXBvbmVudFRyYW5zZmVyRnVuY3Rpb24mIGdyZWVuRnVu
YywKLSAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IENvbXBvbmVudFRyYW5zZmVyRnVuY3Rp
b24mIGJsdWVGdW5jLCBjb25zdCBDb21wb25lbnRUcmFuc2ZlckZ1bmN0aW9uJiBhbHBoYUZ1bmMp
OworICAgIEZFQ29tcG9uZW50VHJhbnNmZXIoY29uc3QgQ29tcG9uZW50VHJhbnNmZXJGdW5jdGlv
biYgcmVkRnVuYywgY29uc3QgQ29tcG9uZW50VHJhbnNmZXJGdW5jdGlvbiYgZ3JlZW5GdW5jLCBj
b25zdCBDb21wb25lbnRUcmFuc2ZlckZ1bmN0aW9uJiBibHVlRnVuYywgY29uc3QgQ29tcG9uZW50
VHJhbnNmZXJGdW5jdGlvbiYgYWxwaGFGdW5jKTsKIAogICAgIHVzaW5nIExvb2t1cFRhYmxlID0g
c3RkOjphcnJheTx1aW50OF90LCAyNTY+OwogCkBAIC03NSw3ICs3MSw3IEBAIHByaXZhdGU6CiAK
ICAgICB2b2lkIGNvbXB1dGVMb29rdXBUYWJsZXMoTG9va3VwVGFibGUmIHJlZFRhYmxlLCBMb29r
dXBUYWJsZSYgZ3JlZW5UYWJsZSwgTG9va3VwVGFibGUmIGJsdWVUYWJsZSwgTG9va3VwVGFibGUm
IGFscGhhVGFibGUpOwogCi0gICAgdm9pZCBwbGF0Zm9ybUFwcGx5U29mdHdhcmUoKSBvdmVycmlk
ZTsKKyAgICB2b2lkIHBsYXRmb3JtQXBwbHlTb2Z0d2FyZShjb25zdCBGaWx0ZXImKSBvdmVycmlk
ZTsKIAogICAgIFdURjo6VGV4dFN0cmVhbSYgZXh0ZXJuYWxSZXByZXNlbnRhdGlvbihXVEY6OlRl
eHRTdHJlYW0mLCBSZXByZXNlbnRhdGlvblR5cGUpIGNvbnN0IG92ZXJyaWRlOwogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFQ29tcG9zaXRl
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVDb21wb3Np
dGUuY3BwCmluZGV4IGUwYmVmMzA3NDA1ZmYyMzNlOGEyYWZiNWNiZWM4ZDU0OGQyMjc4MDguLjZk
NmJmNWNiNDY0OWVlYjJmYzA3OGYzNTU3OGQ5MDc0M2M1MWMwNTIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVDb21wb3NpdGUuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVDb21wb3NpdGUuY3Bw
CkBAIC0yNSwxNSArMjUsMjAgQEAKICNpbmNsdWRlICJGRUNvbXBvc2l0ZS5oIgogCiAjaW5jbHVk
ZSAiRkVDb21wb3NpdGVBcml0aG1ldGljTkVPTi5oIgotI2luY2x1ZGUgIkZpbHRlci5oIgogI2lu
Y2x1ZGUgIkdyYXBoaWNzQ29udGV4dC5oIgorI2luY2x1ZGUgIkltYWdlQnVmZmVyLmgiCiAjaW5j
bHVkZSAiUGl4ZWxCdWZmZXIuaCIKICNpbmNsdWRlIDx3dGYvdGV4dC9UZXh0U3RyZWFtLmg+CiAK
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotRkVDb21wb3NpdGU6OkZFQ29tcG9zaXRlKEZpbHRlciYg
ZmlsdGVyLCBjb25zdCBDb21wb3NpdGVPcGVyYXRpb25UeXBlJiB0eXBlLCBmbG9hdCBrMSwgZmxv
YXQgazIsIGZsb2F0IGszLCBmbG9hdCBrNCkKLSAgICA6IEZpbHRlckVmZmVjdChmaWx0ZXIsIEZp
bHRlckVmZmVjdDo6VHlwZTo6RkVDb21wb3NpdGUpCitSZWY8RkVDb21wb3NpdGU+IEZFQ29tcG9z
aXRlOjpjcmVhdGUoY29uc3QgQ29tcG9zaXRlT3BlcmF0aW9uVHlwZSYgdHlwZSwgZmxvYXQgazEs
IGZsb2F0IGsyLCBmbG9hdCBrMywgZmxvYXQgazQpCit7CisgICAgcmV0dXJuIGFkb3B0UmVmKCpu
ZXcgRkVDb21wb3NpdGUodHlwZSwgazEsIGsyLCBrMywgazQpKTsKK30KKworRkVDb21wb3NpdGU6
OkZFQ29tcG9zaXRlKGNvbnN0IENvbXBvc2l0ZU9wZXJhdGlvblR5cGUmIHR5cGUsIGZsb2F0IGsx
LCBmbG9hdCBrMiwgZmxvYXQgazMsIGZsb2F0IGs0KQorICAgIDogRmlsdGVyRWZmZWN0KEZpbHRl
ckVmZmVjdDo6VHlwZTo6RkVDb21wb3NpdGUpCiAgICAgLCBtX3R5cGUodHlwZSkKICAgICAsIG1f
azEoazEpCiAgICAgLCBtX2syKGsyKQpAQCAtNDIsMTEgKzQ3LDYgQEAgRkVDb21wb3NpdGU6OkZF
Q29tcG9zaXRlKEZpbHRlciYgZmlsdGVyLCBjb25zdCBDb21wb3NpdGVPcGVyYXRpb25UeXBlJiB0
eXBlLCBmbG8KIHsKIH0KIAotUmVmPEZFQ29tcG9zaXRlPiBGRUNvbXBvc2l0ZTo6Y3JlYXRlKEZp
bHRlciYgZmlsdGVyLCBjb25zdCBDb21wb3NpdGVPcGVyYXRpb25UeXBlJiB0eXBlLCBmbG9hdCBr
MSwgZmxvYXQgazIsIGZsb2F0IGszLCBmbG9hdCBrNCkKLXsKLSAgICByZXR1cm4gYWRvcHRSZWYo
Km5ldyBGRUNvbXBvc2l0ZShmaWx0ZXIsIHR5cGUsIGsxLCBrMiwgazMsIGs0KSk7Ci19Ci0KIGJv
b2wgRkVDb21wb3NpdGU6OnNldE9wZXJhdGlvbihDb21wb3NpdGVPcGVyYXRpb25UeXBlIHR5cGUp
CiB7CiAgICAgaWYgKG1fdHlwZSA9PSB0eXBlKQpAQCAtMjAxLDcgKzIwMSw3IEBAIGlubGluZSB2
b2lkIEZFQ29tcG9zaXRlOjpwbGF0Zm9ybUFyaXRobWV0aWNTb2Z0d2FyZShjb25zdCBVaW50OENs
YW1wZWRBcnJheSYgc291CiAjZW5kaWYKIH0KIAotdm9pZCBGRUNvbXBvc2l0ZTo6ZGV0ZXJtaW5l
QWJzb2x1dGVQYWludFJlY3QoKQordm9pZCBGRUNvbXBvc2l0ZTo6ZGV0ZXJtaW5lQWJzb2x1dGVQ
YWludFJlY3QoY29uc3QgRmlsdGVyJiBmaWx0ZXIpCiB7CiAgICAgc3dpdGNoIChtX3R5cGUpIHsK
ICAgICBjYXNlIEZFQ09NUE9TSVRFX09QRVJBVE9SX0lOOgpAQCAtMjE4LDEyICsyMTgsMTIgQEAg
dm9pZCBGRUNvbXBvc2l0ZTo6ZGV0ZXJtaW5lQWJzb2x1dGVQYWludFJlY3QoKQogICAgICAgICBy
ZXR1cm47CiAgICAgZGVmYXVsdDoKICAgICAgICAgLy8gVGFrZSB0aGUgdW5pb24gb2YgYm90aCBp
bnB1dCBlZmZlY3RzLgotICAgICAgICBGaWx0ZXJFZmZlY3Q6OmRldGVybWluZUFic29sdXRlUGFp
bnRSZWN0KCk7CisgICAgICAgIEZpbHRlckVmZmVjdDo6ZGV0ZXJtaW5lQWJzb2x1dGVQYWludFJl
Y3QoZmlsdGVyKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIH0KIAotdm9pZCBGRUNvbXBvc2l0
ZTo6cGxhdGZvcm1BcHBseVNvZnR3YXJlKCkKK3ZvaWQgRkVDb21wb3NpdGU6OnBsYXRmb3JtQXBw
bHlTb2Z0d2FyZShjb25zdCBGaWx0ZXImKQogewogICAgIEZpbHRlckVmZmVjdCogaW4gPSBpbnB1
dEVmZmVjdCgwKTsKICAgICBGaWx0ZXJFZmZlY3QqIGluMiA9IGlucHV0RWZmZWN0KDEpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRUNvbXBv
c2l0ZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRUNvbXBv
c2l0ZS5oCmluZGV4IDM5MjM3ZmViMTI3YWQxZmYxZGUyMTgzNGJkN2IyYjczN2ZhYWYzMmQuLjIy
ODA3Y2FhOGQ2Njc4MzliYzAxN2JiNTAyYzA1MDg0ZjcyYmM3MjQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVDb21wb3NpdGUuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFQ29tcG9zaXRlLmgKQEAg
LTIyLDggKzIyLDYgQEAKICNwcmFnbWEgb25jZQogCiAjaW5jbHVkZSAiRmlsdGVyRWZmZWN0Lmgi
Ci0KLSNpbmNsdWRlICJGaWx0ZXIuaCIKICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4K
IAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtNDEsNyArMzksNyBAQCBlbnVtIENvbXBvc2l0ZU9w
ZXJhdGlvblR5cGUgewogCiBjbGFzcyBGRUNvbXBvc2l0ZSA6IHB1YmxpYyBGaWx0ZXJFZmZlY3Qg
ewogcHVibGljOgotICAgIHN0YXRpYyBSZWY8RkVDb21wb3NpdGU+IGNyZWF0ZShGaWx0ZXImLCBj
b25zdCBDb21wb3NpdGVPcGVyYXRpb25UeXBlJiwgZmxvYXQsIGZsb2F0LCBmbG9hdCwgZmxvYXQp
OworICAgIHN0YXRpYyBSZWY8RkVDb21wb3NpdGU+IGNyZWF0ZShjb25zdCBDb21wb3NpdGVPcGVy
YXRpb25UeXBlJiwgZmxvYXQgazEsIGZsb2F0IGsyLCBmbG9hdCBrMywgZmxvYXQgazQpOwogCiAg
ICAgQ29tcG9zaXRlT3BlcmF0aW9uVHlwZSBvcGVyYXRpb24oKSBjb25zdCB7IHJldHVybiBtX3R5
cGU7IH0KICAgICBib29sIHNldE9wZXJhdGlvbihDb21wb3NpdGVPcGVyYXRpb25UeXBlKTsKQEAg
LTU4LDE2ICs1NiwxNyBAQCBwdWJsaWM6CiAgICAgZmxvYXQgazQoKSBjb25zdCB7IHJldHVybiBt
X2s0OyB9CiAgICAgYm9vbCBzZXRLNChmbG9hdCk7CiAKLXByb3RlY3RlZDoKLSAgICBib29sIHJl
cXVpcmVzVmFsaWRQcmVNdWx0aXBsaWVkUGl4ZWxzKCkgb3ZlcnJpZGUgeyByZXR1cm4gbV90eXBl
ICE9IEZFQ09NUE9TSVRFX09QRVJBVE9SX0FSSVRITUVUSUM7IH0KLQogcHJpdmF0ZToKLSAgICBG
RUNvbXBvc2l0ZShGaWx0ZXImLCBjb25zdCBDb21wb3NpdGVPcGVyYXRpb25UeXBlJiwgZmxvYXQs
IGZsb2F0LCBmbG9hdCwgZmxvYXQpOworICAgIEZFQ29tcG9zaXRlKGNvbnN0IENvbXBvc2l0ZU9w
ZXJhdGlvblR5cGUmLCBmbG9hdCBrMSwgZmxvYXQgazIsIGZsb2F0IGszLCBmbG9hdCBrNCk7CiAK
ICAgICB2b2lkIGNvcnJlY3RGaWx0ZXJSZXN1bHRJZk5lZWRlZCgpIG92ZXJyaWRlOwotICAgIHZv
aWQgZGV0ZXJtaW5lQWJzb2x1dGVQYWludFJlY3QoKSBvdmVycmlkZTsKIAotICAgIHZvaWQgcGxh
dGZvcm1BcHBseVNvZnR3YXJlKCkgb3ZlcnJpZGU7CisgICAgYm9vbCByZXF1aXJlc1ZhbGlkUHJl
TXVsdGlwbGllZFBpeGVscygpIG92ZXJyaWRlIHsgcmV0dXJuIG1fdHlwZSAhPSBGRUNPTVBPU0lU
RV9PUEVSQVRPUl9BUklUSE1FVElDOyB9CisKKyAgICB2b2lkIGRldGVybWluZUFic29sdXRlUGFp
bnRSZWN0KGNvbnN0IEZpbHRlciYpIG92ZXJyaWRlOworCisgICAgdm9pZCBwbGF0Zm9ybUFwcGx5
U29mdHdhcmUoY29uc3QgRmlsdGVyJikgb3ZlcnJpZGU7CisKICAgICBXVEY6OlRleHRTdHJlYW0m
IGV4dGVybmFsUmVwcmVzZW50YXRpb24oV1RGOjpUZXh0U3RyZWFtJiwgUmVwcmVzZW50YXRpb25U
eXBlKSBjb25zdCBvdmVycmlkZTsKIAogICAgIGlubGluZSB2b2lkIHBsYXRmb3JtQXJpdGhtZXRp
Y1NvZnR3YXJlKGNvbnN0IFVpbnQ4Q2xhbXBlZEFycmF5JiBzb3VyY2UsIFVpbnQ4Q2xhbXBlZEFy
cmF5JiBkZXN0aW5hdGlvbiwgZmxvYXQgazEsIGZsb2F0IGsyLCBmbG9hdCBrMywgZmxvYXQgazQp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9G
RUNvbnZvbHZlTWF0cml4LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Zp
bHRlcnMvRkVDb252b2x2ZU1hdHJpeC5jcHAKaW5kZXggZTg2ZjEyOWM1NGIxZDhmZDhlZDkyOTQ2
ZTJjZTFiNjk4MjMwM2JlZC4uNjMyNmE1NmUxZDMxZWM0NTQ2OWQ4ZTc4YTY2YTNhZTliOWUyODNh
OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9G
RUNvbnZvbHZlTWF0cml4LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9maWx0ZXJzL0ZFQ29udm9sdmVNYXRyaXguY3BwCkBAIC0yNCw3ICsyNCw2IEBACiAjaW5jbHVk
ZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiRkVDb252b2x2ZU1hdHJpeC5oIgogCi0jaW5jbHVkZSAi
RmlsdGVyLmgiCiAjaW5jbHVkZSAiUGl4ZWxCdWZmZXIuaCIKICNpbmNsdWRlIDx3dGYvUGFyYWxs
ZWxKb2JzLmg+CiAjaW5jbHVkZSA8d3RmL1dvcmtRdWV1ZS5oPgpAQCAtMzIsOCArMzEsMTMgQEAK
IAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1GRUNvbnZvbHZlTWF0cml4OjpGRUNvbnZvbHZlTWF0
cml4KEZpbHRlciYgZmlsdGVyLCBjb25zdCBJbnRTaXplJiBrZXJuZWxTaXplLCBmbG9hdCBkaXZp
c29yLCBmbG9hdCBiaWFzLCBjb25zdCBJbnRQb2ludCYgdGFyZ2V0T2Zmc2V0LCBFZGdlTW9kZVR5
cGUgZWRnZU1vZGUsIGNvbnN0IEZsb2F0UG9pbnQmIGtlcm5lbFVuaXRMZW5ndGgsIGJvb2wgcHJl
c2VydmVBbHBoYSwgY29uc3QgVmVjdG9yPGZsb2F0PiYga2VybmVsTWF0cml4KQotICAgIDogRmls
dGVyRWZmZWN0KGZpbHRlciwgRmlsdGVyRWZmZWN0OjpUeXBlOjpGRUNvbnZvbHZlTWF0cml4KQor
UmVmPEZFQ29udm9sdmVNYXRyaXg+IEZFQ29udm9sdmVNYXRyaXg6OmNyZWF0ZShjb25zdCBJbnRT
aXplJiBrZXJuZWxTaXplLCBmbG9hdCBkaXZpc29yLCBmbG9hdCBiaWFzLCBjb25zdCBJbnRQb2lu
dCYgdGFyZ2V0T2Zmc2V0LCBFZGdlTW9kZVR5cGUgZWRnZU1vZGUsIGNvbnN0IEZsb2F0UG9pbnQm
IGtlcm5lbFVuaXRMZW5ndGgsIGJvb2wgcHJlc2VydmVBbHBoYSwgY29uc3QgVmVjdG9yPGZsb2F0
PiYga2VybmVsTWF0cml4KQoreworICAgIHJldHVybiBhZG9wdFJlZigqbmV3IEZFQ29udm9sdmVN
YXRyaXgoa2VybmVsU2l6ZSwgZGl2aXNvciwgYmlhcywgdGFyZ2V0T2Zmc2V0LCBlZGdlTW9kZSwg
a2VybmVsVW5pdExlbmd0aCwgcHJlc2VydmVBbHBoYSwga2VybmVsTWF0cml4KSk7Cit9CisKK0ZF
Q29udm9sdmVNYXRyaXg6OkZFQ29udm9sdmVNYXRyaXgoY29uc3QgSW50U2l6ZSYga2VybmVsU2l6
ZSwgZmxvYXQgZGl2aXNvciwgZmxvYXQgYmlhcywgY29uc3QgSW50UG9pbnQmIHRhcmdldE9mZnNl
dCwgRWRnZU1vZGVUeXBlIGVkZ2VNb2RlLCBjb25zdCBGbG9hdFBvaW50JiBrZXJuZWxVbml0TGVu
Z3RoLCBib29sIHByZXNlcnZlQWxwaGEsIGNvbnN0IFZlY3RvcjxmbG9hdD4mIGtlcm5lbE1hdHJp
eCkKKyAgICA6IEZpbHRlckVmZmVjdChGaWx0ZXJFZmZlY3Q6OlR5cGU6OkZFQ29udm9sdmVNYXRy
aXgpCiAgICAgLCBtX2tlcm5lbFNpemUoa2VybmVsU2l6ZSkKICAgICAsIG1fZGl2aXNvcihkaXZp
c29yKQogICAgICwgbV9iaWFzKGJpYXMpCkBAIC00NywxNCArNTEsNiBAQCBGRUNvbnZvbHZlTWF0
cml4OjpGRUNvbnZvbHZlTWF0cml4KEZpbHRlciYgZmlsdGVyLCBjb25zdCBJbnRTaXplJiBrZXJu
ZWxTaXplLCBmbAogICAgIEFTU0VSVChtX2tlcm5lbFNpemUuaGVpZ2h0KCkgPiAwKTsKIH0KIAot
UmVmPEZFQ29udm9sdmVNYXRyaXg+IEZFQ29udm9sdmVNYXRyaXg6OmNyZWF0ZShGaWx0ZXImIGZp
bHRlciwgY29uc3QgSW50U2l6ZSYga2VybmVsU2l6ZSwKLSAgICBmbG9hdCBkaXZpc29yLCBmbG9h
dCBiaWFzLCBjb25zdCBJbnRQb2ludCYgdGFyZ2V0T2Zmc2V0LCBFZGdlTW9kZVR5cGUgZWRnZU1v
ZGUsCi0gICAgY29uc3QgRmxvYXRQb2ludCYga2VybmVsVW5pdExlbmd0aCwgYm9vbCBwcmVzZXJ2
ZUFscGhhLCBjb25zdCBWZWN0b3I8ZmxvYXQ+JiBrZXJuZWxNYXRyaXgpCi17Ci0gICAgcmV0dXJu
IGFkb3B0UmVmKCpuZXcgRkVDb252b2x2ZU1hdHJpeChmaWx0ZXIsIGtlcm5lbFNpemUsIGRpdmlz
b3IsIGJpYXMsIHRhcmdldE9mZnNldCwgZWRnZU1vZGUsIGtlcm5lbFVuaXRMZW5ndGgsCi0gICAg
ICAgIHByZXNlcnZlQWxwaGEsIGtlcm5lbE1hdHJpeCkpOwotfQotCiB2b2lkIEZFQ29udm9sdmVN
YXRyaXg6OnNldEtlcm5lbFNpemUoY29uc3QgSW50U2l6ZSYga2VybmVsU2l6ZSkKIHsKICAgICBB
U1NFUlQoa2VybmVsU2l6ZS53aWR0aCgpID4gMCk7CkBAIC0zNjUsNyArMzYxLDcgQEAgQUxXQVlT
X0lOTElORSB2b2lkIEZFQ29udm9sdmVNYXRyaXg6OnNldE91dGVyUGl4ZWxzKFBhaW50aW5nRGF0
YSYgcGFpbnRpbmdEYXRhLAogICAgICAgICBmYXN0U2V0T3V0ZXJQaXhlbHM8ZmFsc2U+KHBhaW50
aW5nRGF0YSwgeDEsIHkxLCB4MiwgeTIpOwogfQogCi12b2lkIEZFQ29udm9sdmVNYXRyaXg6OnBs
YXRmb3JtQXBwbHlTb2Z0d2FyZSgpCit2b2lkIEZFQ29udm9sdmVNYXRyaXg6OnBsYXRmb3JtQXBw
bHlTb2Z0d2FyZShjb25zdCBGaWx0ZXImKQogewogICAgIEZpbHRlckVmZmVjdCogaW4gPSBpbnB1
dEVmZmVjdCgwKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvZmlsdGVycy9GRUNvbnZvbHZlTWF0cml4LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9maWx0ZXJzL0ZFQ29udm9sdmVNYXRyaXguaAppbmRleCBjMWE1YzViODY3NTYyZjI2
YWY4MDdkNDVjNWI0MDA5NmRiMWNmZmZhLi45NTc2ZGZlZTdlODQyY2FmNDY1MDg1YWQ3MWJjNzBl
MmY1YWFmNTk0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9m
aWx0ZXJzL0ZFQ29udm9sdmVNYXRyaXguaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9maWx0ZXJzL0ZFQ29udm9sdmVNYXRyaXguaApAQCAtMjQsNyArMjQsNiBAQAogCiAj
aW5jbHVkZSAiRmlsdGVyRWZmZWN0LmgiCiAjaW5jbHVkZSAiRmxvYXRQb2ludC5oIgotI2luY2x1
ZGUgIkZpbHRlci5oIgogI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KIAogbmFtZXNwYWNlIFdlYkNv
cmUgewpAQCAtMzgsOSArMzcsNyBAQCBlbnVtIEVkZ2VNb2RlVHlwZSB7CiAKIGNsYXNzIEZFQ29u
dm9sdmVNYXRyaXggOiBwdWJsaWMgRmlsdGVyRWZmZWN0IHsKIHB1YmxpYzoKLSAgICBzdGF0aWMg
UmVmPEZFQ29udm9sdmVNYXRyaXg+IGNyZWF0ZShGaWx0ZXImLCBjb25zdCBJbnRTaXplJiwKLSAg
ICAgICAgICAgIGZsb2F0LCBmbG9hdCwgY29uc3QgSW50UG9pbnQmLCBFZGdlTW9kZVR5cGUsIGNv
bnN0IEZsb2F0UG9pbnQmLAotICAgICAgICAgICAgYm9vbCwgY29uc3QgVmVjdG9yPGZsb2F0PiYp
OworICAgIHN0YXRpYyBSZWY8RkVDb252b2x2ZU1hdHJpeD4gY3JlYXRlKGNvbnN0IEludFNpemUm
IGtlcm5lbFNpemUsIGZsb2F0IGRpdmlzb3IsIGZsb2F0IGJpYXMsIGNvbnN0IEludFBvaW50JiB0
YXJnZXRPZmZzZXQsIEVkZ2VNb2RlVHlwZSwgY29uc3QgRmxvYXRQb2ludCYga2VybmVsVW5pdExl
bmd0aCwgYm9vbCBwcmVzZXJ2ZUFscGhhLCBjb25zdCBWZWN0b3I8ZmxvYXQ+JiBrZXJuZWxNYXRy
aXgpOwogCiAgICAgSW50U2l6ZSBrZXJuZWxTaXplKCkgY29uc3QgeyByZXR1cm4gbV9rZXJuZWxT
aXplOyB9CiAgICAgdm9pZCBzZXRLZXJuZWxTaXplKGNvbnN0IEludFNpemUmKTsKQEAgLTc3LDEy
ICs3NCwxMSBAQCBwcml2YXRlOgogICAgICAgICBWZWN0b3I8ZmxvYXQ+IGtlcm5lbE1hdHJpeDsK
ICAgICB9OwogCi0gICAgRkVDb252b2x2ZU1hdHJpeChGaWx0ZXImLCBjb25zdCBJbnRTaXplJiwg
ZmxvYXQsIGZsb2F0LAotICAgICAgICAgICAgY29uc3QgSW50UG9pbnQmLCBFZGdlTW9kZVR5cGUs
IGNvbnN0IEZsb2F0UG9pbnQmLCBib29sLCBjb25zdCBWZWN0b3I8ZmxvYXQ+Jik7CisgICAgRkVD
b252b2x2ZU1hdHJpeChjb25zdCBJbnRTaXplJiBrZXJuZWxTaXplLCBmbG9hdCBkaXZpc29yLCBm
bG9hdCBiaWFzLCBjb25zdCBJbnRQb2ludCYgdGFyZ2V0T2Zmc2V0LCBFZGdlTW9kZVR5cGUsIGNv
bnN0IEZsb2F0UG9pbnQmIGtlcm5lbFVuaXRMZW5ndGgsIGJvb2wgcHJlc2VydmVBbHBoYSwgY29u
c3QgVmVjdG9yPGZsb2F0PiYga2VybmVsTWF0cml4KTsKIAotICAgIHZvaWQgZGV0ZXJtaW5lQWJz
b2x1dGVQYWludFJlY3QoKSBvdmVycmlkZSB7IHNldEFic29sdXRlUGFpbnRSZWN0KGVuY2xvc2lu
Z0ludFJlY3QobWF4RWZmZWN0UmVjdCgpKSk7IH0KKyAgICB2b2lkIGRldGVybWluZUFic29sdXRl
UGFpbnRSZWN0KGNvbnN0IEZpbHRlciYpIG92ZXJyaWRlIHsgc2V0QWJzb2x1dGVQYWludFJlY3Qo
ZW5jbG9zaW5nSW50UmVjdChtYXhFZmZlY3RSZWN0KCkpKTsgfQogCi0gICAgdm9pZCBwbGF0Zm9y
bUFwcGx5U29mdHdhcmUoKSBvdmVycmlkZTsKKyAgICB2b2lkIHBsYXRmb3JtQXBwbHlTb2Z0d2Fy
ZShjb25zdCBGaWx0ZXImKSBvdmVycmlkZTsKIAogICAgIFdURjo6VGV4dFN0cmVhbSYgZXh0ZXJu
YWxSZXByZXNlbnRhdGlvbihXVEY6OlRleHRTdHJlYW0mLCBSZXByZXNlbnRhdGlvblR5cGUpIGNv
bnN0IG92ZXJyaWRlOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9maWx0ZXJzL0ZFRGlmZnVzZUxpZ2h0aW5nLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVEaWZmdXNlTGlnaHRpbmcuY3BwCmluZGV4IDQ0ZTJlNjIx
NGEzNzZhNGRhMWVlNzczY2RkNDE3NjU3NzQwOWIxZTAuLjFhYWNlOWQ2OWEwOTBiNGYxMGYxM2Rl
NzU1NzUxZWYyODYyMDkxY2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2ZpbHRlcnMvRkVEaWZmdXNlTGlnaHRpbmcuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVEaWZmdXNlTGlnaHRpbmcuY3BwCkBAIC0yNywx
NCArMjcsMTQgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1GRURpZmZ1c2VMaWdodGluZzo6
RkVEaWZmdXNlTGlnaHRpbmcoRmlsdGVyJiBmaWx0ZXIsIGNvbnN0IENvbG9yJiBsaWdodGluZ0Nv
bG9yLCBmbG9hdCBzdXJmYWNlU2NhbGUsIGZsb2F0IGRpZmZ1c2VDb25zdGFudCwgZmxvYXQga2Vy
bmVsVW5pdExlbmd0aFgsIGZsb2F0IGtlcm5lbFVuaXRMZW5ndGhZLCBSZWY8TGlnaHRTb3VyY2U+
JiYgbGlnaHRTb3VyY2UpCi0gICAgOiBGRUxpZ2h0aW5nKGZpbHRlciwgRGlmZnVzZUxpZ2h0aW5n
LCBsaWdodGluZ0NvbG9yLCBzdXJmYWNlU2NhbGUsIGRpZmZ1c2VDb25zdGFudCwgMCwgMCwga2Vy
bmVsVW5pdExlbmd0aFgsIGtlcm5lbFVuaXRMZW5ndGhZLCBXVEZNb3ZlKGxpZ2h0U291cmNlKSwg
RmlsdGVyRWZmZWN0OjpUeXBlOjpGRURpZmZ1c2VMaWdodGluZykKK1JlZjxGRURpZmZ1c2VMaWdo
dGluZz4gRkVEaWZmdXNlTGlnaHRpbmc6OmNyZWF0ZShjb25zdCBDb2xvciYgbGlnaHRpbmdDb2xv
ciwgZmxvYXQgc3VyZmFjZVNjYWxlLCBmbG9hdCBkaWZmdXNlQ29uc3RhbnQsIGZsb2F0IGtlcm5l
bFVuaXRMZW5ndGhYLCBmbG9hdCBrZXJuZWxVbml0TGVuZ3RoWSwgUmVmPExpZ2h0U291cmNlPiYm
IGxpZ2h0U291cmNlKQogeworICAgIHJldHVybiBhZG9wdFJlZigqbmV3IEZFRGlmZnVzZUxpZ2h0
aW5nKGxpZ2h0aW5nQ29sb3IsIHN1cmZhY2VTY2FsZSwgZGlmZnVzZUNvbnN0YW50LCBrZXJuZWxV
bml0TGVuZ3RoWCwga2VybmVsVW5pdExlbmd0aFksIFdURk1vdmUobGlnaHRTb3VyY2UpKSk7CiB9
CiAKLVJlZjxGRURpZmZ1c2VMaWdodGluZz4gRkVEaWZmdXNlTGlnaHRpbmc6OmNyZWF0ZShGaWx0
ZXImIGZpbHRlciwgY29uc3QgQ29sb3ImIGxpZ2h0aW5nQ29sb3IsIGZsb2F0IHN1cmZhY2VTY2Fs
ZSwgZmxvYXQgZGlmZnVzZUNvbnN0YW50LCBmbG9hdCBrZXJuZWxVbml0TGVuZ3RoWCwgZmxvYXQg
a2VybmVsVW5pdExlbmd0aFksIFJlZjxMaWdodFNvdXJjZT4mJiBsaWdodFNvdXJjZSkKK0ZFRGlm
ZnVzZUxpZ2h0aW5nOjpGRURpZmZ1c2VMaWdodGluZyhjb25zdCBDb2xvciYgbGlnaHRpbmdDb2xv
ciwgZmxvYXQgc3VyZmFjZVNjYWxlLCBmbG9hdCBkaWZmdXNlQ29uc3RhbnQsIGZsb2F0IGtlcm5l
bFVuaXRMZW5ndGhYLCBmbG9hdCBrZXJuZWxVbml0TGVuZ3RoWSwgUmVmPExpZ2h0U291cmNlPiYm
IGxpZ2h0U291cmNlKQorICAgIDogRkVMaWdodGluZyhEaWZmdXNlTGlnaHRpbmcsIGxpZ2h0aW5n
Q29sb3IsIHN1cmZhY2VTY2FsZSwgZGlmZnVzZUNvbnN0YW50LCAwLCAwLCBrZXJuZWxVbml0TGVu
Z3RoWCwga2VybmVsVW5pdExlbmd0aFksIFdURk1vdmUobGlnaHRTb3VyY2UpLCBGaWx0ZXJFZmZl
Y3Q6OlR5cGU6OkZFRGlmZnVzZUxpZ2h0aW5nKQogewotICAgIHJldHVybiBhZG9wdFJlZigqbmV3
IEZFRGlmZnVzZUxpZ2h0aW5nKGZpbHRlciwgbGlnaHRpbmdDb2xvciwgc3VyZmFjZVNjYWxlLCBk
aWZmdXNlQ29uc3RhbnQsIGtlcm5lbFVuaXRMZW5ndGhYLCBrZXJuZWxVbml0TGVuZ3RoWSwgV1RG
TW92ZShsaWdodFNvdXJjZSkpKTsKIH0KIAogYm9vbCBGRURpZmZ1c2VMaWdodGluZzo6c2V0RGlm
ZnVzZUNvbnN0YW50KGZsb2F0IGRpZmZ1c2VDb25zdGFudCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVEaWZmdXNlTGlnaHRpbmcuaCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVEaWZmdXNlTGlnaHRpbmcu
aAppbmRleCAyNzM3ZjYwZjRjM2Y0YjM2MjRkZjgwZWJiOTk4MzdiYTY1OWZhMGJlLi44YTEwYWVj
ODdjOGYxODlmOWYwNTdjYjk0NDNlYWFlZGQ1MzhmNjkxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFRGlmZnVzZUxpZ2h0aW5nLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRURpZmZ1c2VMaWdodGlu
Zy5oCkBAIC0yOSw3ICsyOSw3IEBAIGNsYXNzIExpZ2h0U291cmNlOwogCiBjbGFzcyBGRURpZmZ1
c2VMaWdodGluZyA6IHB1YmxpYyBGRUxpZ2h0aW5nIHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUmVm
PEZFRGlmZnVzZUxpZ2h0aW5nPiBjcmVhdGUoRmlsdGVyJiwgY29uc3QgQ29sb3ImLCBmbG9hdCwg
ZmxvYXQsIGZsb2F0LCBmbG9hdCwgUmVmPExpZ2h0U291cmNlPiYmKTsKKyAgICBzdGF0aWMgUmVm
PEZFRGlmZnVzZUxpZ2h0aW5nPiBjcmVhdGUoY29uc3QgQ29sb3ImIGxpZ2h0aW5nQ29sb3IsIGZs
b2F0IHN1cmZhY2VTY2FsZSwgZmxvYXQgZGlmZnVzZUNvbnN0YW50LCBmbG9hdCBrZXJuZWxVbml0
TGVuZ3RoWCwgZmxvYXQga2VybmVsVW5pdExlbmd0aFksIFJlZjxMaWdodFNvdXJjZT4mJik7CiAK
ICAgICBmbG9hdCBkaWZmdXNlQ29uc3RhbnQoKSBjb25zdCB7IHJldHVybiBtX2RpZmZ1c2VDb25z
dGFudDsgfQogICAgIGJvb2wgc2V0RGlmZnVzZUNvbnN0YW50KGZsb2F0KTsKQEAgLTM3LDcgKzM3
LDcgQEAgcHVibGljOgogICAgIFdURjo6VGV4dFN0cmVhbSYgZXh0ZXJuYWxSZXByZXNlbnRhdGlv
bihXVEY6OlRleHRTdHJlYW0mLCBSZXByZXNlbnRhdGlvblR5cGUpIGNvbnN0IG92ZXJyaWRlOwog
CiBwcml2YXRlOgotICAgIEZFRGlmZnVzZUxpZ2h0aW5nKEZpbHRlciYsIGNvbnN0IENvbG9yJiwg
ZmxvYXQsIGZsb2F0LCBmbG9hdCwgZmxvYXQsIFJlZjxMaWdodFNvdXJjZT4mJik7CisgICAgRkVE
aWZmdXNlTGlnaHRpbmcoY29uc3QgQ29sb3ImIGxpZ2h0aW5nQ29sb3IsIGZsb2F0IHN1cmZhY2VT
Y2FsZSwgZmxvYXQgZGlmZnVzZUNvbnN0YW50LCBmbG9hdCBrZXJuZWxVbml0TGVuZ3RoWCwgZmxv
YXQga2VybmVsVW5pdExlbmd0aFksIFJlZjxMaWdodFNvdXJjZT4mJik7CiB9OwogCiB9IC8vIG5h
bWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9maWx0ZXJzL0ZFRGlzcGxhY2VtZW50TWFwLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVEaXNwbGFjZW1lbnRNYXAuY3BwCmluZGV4IDI0YTQ2MjZj
NmExYzgxZmM3NzRkYTYyMzc2YzEyOWJkODZkNzFlMjkuLjM2NzU2ODBjODFhNGRhNTM5NjAzODhh
MTI1OWRkZTYyOGM2MWU3YTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2ZpbHRlcnMvRkVEaXNwbGFjZW1lbnRNYXAuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVEaXNwbGFjZW1lbnRNYXAuY3BwCkBAIC0zMSwx
OCArMzEsMTcgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1GRURpc3BsYWNlbWVudE1hcDo6
RkVEaXNwbGFjZW1lbnRNYXAoRmlsdGVyJiBmaWx0ZXIsIENoYW5uZWxTZWxlY3RvclR5cGUgeENo
YW5uZWxTZWxlY3RvciwgQ2hhbm5lbFNlbGVjdG9yVHlwZSB5Q2hhbm5lbFNlbGVjdG9yLCBmbG9h
dCBzY2FsZSkKLSAgICA6IEZpbHRlckVmZmVjdChmaWx0ZXIsIEZpbHRlckVmZmVjdDo6VHlwZTo6
RkVEaXNwbGFjZW1lbnRNYXApCi0gICAgLCBtX3hDaGFubmVsU2VsZWN0b3IoeENoYW5uZWxTZWxl
Y3RvcikKLSAgICAsIG1feUNoYW5uZWxTZWxlY3Rvcih5Q2hhbm5lbFNlbGVjdG9yKQotICAgICwg
bV9zY2FsZShzY2FsZSkKK1JlZjxGRURpc3BsYWNlbWVudE1hcD4gRkVEaXNwbGFjZW1lbnRNYXA6
OmNyZWF0ZShDaGFubmVsU2VsZWN0b3JUeXBlIHhDaGFubmVsU2VsZWN0b3IsIENoYW5uZWxTZWxl
Y3RvclR5cGUgeUNoYW5uZWxTZWxlY3RvciwgZmxvYXQgc2NhbGUpCiB7CisgICAgcmV0dXJuIGFk
b3B0UmVmKCpuZXcgRkVEaXNwbGFjZW1lbnRNYXAoeENoYW5uZWxTZWxlY3RvciwgeUNoYW5uZWxT
ZWxlY3Rvciwgc2NhbGUpKTsKIH0KIAotUmVmPEZFRGlzcGxhY2VtZW50TWFwPiBGRURpc3BsYWNl
bWVudE1hcDo6Y3JlYXRlKEZpbHRlciYgZmlsdGVyLCBDaGFubmVsU2VsZWN0b3JUeXBlIHhDaGFu
bmVsU2VsZWN0b3IsCi0gICAgQ2hhbm5lbFNlbGVjdG9yVHlwZSB5Q2hhbm5lbFNlbGVjdG9yLCBm
bG9hdCBzY2FsZSkKK0ZFRGlzcGxhY2VtZW50TWFwOjpGRURpc3BsYWNlbWVudE1hcChDaGFubmVs
U2VsZWN0b3JUeXBlIHhDaGFubmVsU2VsZWN0b3IsIENoYW5uZWxTZWxlY3RvclR5cGUgeUNoYW5u
ZWxTZWxlY3RvciwgZmxvYXQgc2NhbGUpCisgICAgOiBGaWx0ZXJFZmZlY3QoRmlsdGVyRWZmZWN0
OjpUeXBlOjpGRURpc3BsYWNlbWVudE1hcCkKKyAgICAsIG1feENoYW5uZWxTZWxlY3Rvcih4Q2hh
bm5lbFNlbGVjdG9yKQorICAgICwgbV95Q2hhbm5lbFNlbGVjdG9yKHlDaGFubmVsU2VsZWN0b3Ip
CisgICAgLCBtX3NjYWxlKHNjYWxlKQogewotICAgIHJldHVybiBhZG9wdFJlZigqbmV3IEZFRGlz
cGxhY2VtZW50TWFwKGZpbHRlciwgeENoYW5uZWxTZWxlY3RvciwgeUNoYW5uZWxTZWxlY3Rvciwg
c2NhbGUpKTsKIH0KIAogYm9vbCBGRURpc3BsYWNlbWVudE1hcDo6c2V0WENoYW5uZWxTZWxlY3Rv
cihjb25zdCBDaGFubmVsU2VsZWN0b3JUeXBlIHhDaGFubmVsU2VsZWN0b3IpCkBAIC05MSw3ICs5
MCw3IEBAIHN0YXRpYyBpbmxpbmUgdW5zaWduZWQgYnl0ZU9mZnNldE9mUGl4ZWwodW5zaWduZWQg
eCwgdW5zaWduZWQgeSwgdW5zaWduZWQgcm93Qnl0CiAgICAgcmV0dXJuIHggKiBieXRlc1BlclBp
eGVsICsgeSAqIHJvd0J5dGVzOwogfQogCi12b2lkIEZFRGlzcGxhY2VtZW50TWFwOjpwbGF0Zm9y
bUFwcGx5U29mdHdhcmUoKQordm9pZCBGRURpc3BsYWNlbWVudE1hcDo6cGxhdGZvcm1BcHBseVNv
ZnR3YXJlKGNvbnN0IEZpbHRlciYgZmlsdGVyKQogewogICAgIEZpbHRlckVmZmVjdCogaW4gPSBp
bnB1dEVmZmVjdCgwKTsKICAgICBGaWx0ZXJFZmZlY3QqIGluMiA9IGlucHV0RWZmZWN0KDEpOwpA
QCAtMTE3LDcgKzExNiw2IEBAIHZvaWQgRkVEaXNwbGFjZW1lbnRNYXA6OnBsYXRmb3JtQXBwbHlT
b2Z0d2FyZSgpCiAKICAgICBBU1NFUlQoaW5wdXRJbWFnZS0+bGVuZ3RoKCkgPT0gZGlzcGxhY2Vt
ZW50SW1hZ2UtPmxlbmd0aCgpKTsKIAotICAgIEZpbHRlciYgZmlsdGVyID0gdGhpcy0+ZmlsdGVy
KCk7CiAgICAgSW50U2l6ZSBwYWludFNpemUgPSBhYnNvbHV0ZVBhaW50UmVjdCgpLnNpemUoKTsK
IAogICAgIEZsb2F0U2l6ZSBzY2FsZSA9IGZpbHRlci5zY2FsZWRCeUZpbHRlclNjYWxlKHsgbV9z
Y2FsZSwgbV9zY2FsZSB9KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2ZpbHRlcnMvRkVEaXNwbGFjZW1lbnRNYXAuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVEaXNwbGFjZW1lbnRNYXAuaAppbmRleCBhYTViNmQ0NmJj
NDY0ZmM2ZDA2MGQ4NmFmNmJhZTBlZjA3ZWM5ZThkLi40ODEyYjU0YmFkZjRlYzIwZTg5NTVjYTQ3
N2RiZjZhZWM3OTFiZjZlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9maWx0ZXJzL0ZFRGlzcGxhY2VtZW50TWFwLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRURpc3BsYWNlbWVudE1hcC5oCkBAIC0yMiw3ICsyMiw2
IEBACiAjcHJhZ21hIG9uY2UKIAogI2luY2x1ZGUgIkZpbHRlckVmZmVjdC5oIgotI2luY2x1ZGUg
IkZpbHRlci5oIgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgogCiBuYW1lc3BhY2Ug
V2ViQ29yZSB7CkBAIC0zNyw3ICszNiw3IEBAIGVudW0gQ2hhbm5lbFNlbGVjdG9yVHlwZSB7CiAK
IGNsYXNzIEZFRGlzcGxhY2VtZW50TWFwIDogcHVibGljIEZpbHRlckVmZmVjdCB7CiBwdWJsaWM6
Ci0gICAgc3RhdGljIFJlZjxGRURpc3BsYWNlbWVudE1hcD4gY3JlYXRlKEZpbHRlciYsIENoYW5u
ZWxTZWxlY3RvclR5cGUgeENoYW5uZWxTZWxlY3RvciwgQ2hhbm5lbFNlbGVjdG9yVHlwZSB5Q2hh
bm5lbFNlbGVjdG9yLCBmbG9hdCBzY2FsZSk7CisgICAgc3RhdGljIFJlZjxGRURpc3BsYWNlbWVu
dE1hcD4gY3JlYXRlKENoYW5uZWxTZWxlY3RvclR5cGUgeENoYW5uZWxTZWxlY3RvciwgQ2hhbm5l
bFNlbGVjdG9yVHlwZSB5Q2hhbm5lbFNlbGVjdG9yLCBmbG9hdCBzY2FsZSk7CiAKICAgICBDaGFu
bmVsU2VsZWN0b3JUeXBlIHhDaGFubmVsU2VsZWN0b3IoKSBjb25zdCB7IHJldHVybiBtX3hDaGFu
bmVsU2VsZWN0b3I7IH0KICAgICBib29sIHNldFhDaGFubmVsU2VsZWN0b3IoY29uc3QgQ2hhbm5l
bFNlbGVjdG9yVHlwZSk7CkBAIC01MiwxMSArNTEsMTEgQEAgcHVibGljOgogICAgIHZvaWQgdHJh
bnNmb3JtUmVzdWx0Q29sb3JTcGFjZShGaWx0ZXJFZmZlY3QqLCBjb25zdCBpbnQpIG92ZXJyaWRl
OwogCiBwcml2YXRlOgotICAgIEZFRGlzcGxhY2VtZW50TWFwKEZpbHRlciYsIENoYW5uZWxTZWxl
Y3RvclR5cGUgeENoYW5uZWxTZWxlY3RvciwgQ2hhbm5lbFNlbGVjdG9yVHlwZSB5Q2hhbm5lbFNl
bGVjdG9yLCBmbG9hdCk7CisgICAgRkVEaXNwbGFjZW1lbnRNYXAoQ2hhbm5lbFNlbGVjdG9yVHlw
ZSB4Q2hhbm5lbFNlbGVjdG9yLCBDaGFubmVsU2VsZWN0b3JUeXBlIHlDaGFubmVsU2VsZWN0b3Is
IGZsb2F0KTsKIAotICAgIHZvaWQgcGxhdGZvcm1BcHBseVNvZnR3YXJlKCkgb3ZlcnJpZGU7Cisg
ICAgdm9pZCBwbGF0Zm9ybUFwcGx5U29mdHdhcmUoY29uc3QgRmlsdGVyJikgb3ZlcnJpZGU7CiAK
LSAgICB2b2lkIGRldGVybWluZUFic29sdXRlUGFpbnRSZWN0KCkgb3ZlcnJpZGUgeyBzZXRBYnNv
bHV0ZVBhaW50UmVjdChlbmNsb3NpbmdJbnRSZWN0KG1heEVmZmVjdFJlY3QoKSkpOyB9CisgICAg
dm9pZCBkZXRlcm1pbmVBYnNvbHV0ZVBhaW50UmVjdChjb25zdCBGaWx0ZXImKSBvdmVycmlkZSB7
IHNldEFic29sdXRlUGFpbnRSZWN0KGVuY2xvc2luZ0ludFJlY3QobWF4RWZmZWN0UmVjdCgpKSk7
IH0KIAogICAgIGludCB4Q2hhbm5lbEluZGV4KCkgY29uc3QgeyByZXR1cm4gbV94Q2hhbm5lbFNl
bGVjdG9yIC0gMTsgfQogICAgIGludCB5Q2hhbm5lbEluZGV4KCkgY29uc3QgeyByZXR1cm4gbV95
Q2hhbm5lbFNlbGVjdG9yIC0gMTsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvZmlsdGVycy9GRURyb3BTaGFkb3cuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRURyb3BTaGFkb3cuY3BwCmluZGV4IDUxYWQyZjg1ZjJj
MjdhNmVlNTA3NGYyYzE2MWViOTE0NjhjOWVjMjYuLjRlMGJkNGQ5ZGZkN2Y1ZWQ0MDlkYzY5MGM0
ODEyMjJiNmEyMGZmZmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2ZpbHRlcnMvRkVEcm9wU2hhZG93LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9maWx0ZXJzL0ZFRHJvcFNoYWRvdy5jcHAKQEAgLTI0LDE1ICsyNCwyMSBAQAog
I2luY2x1ZGUgIkZFR2F1c3NpYW5CbHVyLmgiCiAjaW5jbHVkZSAiRmlsdGVyLmgiCiAjaW5jbHVk
ZSAiR3JhcGhpY3NDb250ZXh0LmgiCisjaW5jbHVkZSAiSW1hZ2VCdWZmZXIuaCIKICNpbmNsdWRl
ICJQaXhlbEJ1ZmZlci5oIgogI2luY2x1ZGUgIlNoYWRvd0JsdXIuaCIKICNpbmNsdWRlIDx3dGYv
TWF0aEV4dHJhcy5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1RleHRTdHJlYW0uaD4KIAogbmFtZXNw
YWNlIFdlYkNvcmUgewotICAgIAotRkVEcm9wU2hhZG93OjpGRURyb3BTaGFkb3coRmlsdGVyJiBm
aWx0ZXIsIGZsb2F0IHN0ZFgsIGZsb2F0IHN0ZFksIGZsb2F0IGR4LCBmbG9hdCBkeSwgY29uc3Qg
Q29sb3ImIHNoYWRvd0NvbG9yLCBmbG9hdCBzaGFkb3dPcGFjaXR5KQotICAgIDogRmlsdGVyRWZm
ZWN0KGZpbHRlciwgRmlsdGVyRWZmZWN0OjpUeXBlOjpGRURyb3BTaGFkb3cpCisKK1JlZjxGRURy
b3BTaGFkb3c+IEZFRHJvcFNoYWRvdzo6Y3JlYXRlKGZsb2F0IHN0ZFgsIGZsb2F0IHN0ZFksIGZs
b2F0IGR4LCBmbG9hdCBkeSwgY29uc3QgQ29sb3ImIHNoYWRvd0NvbG9yLCBmbG9hdCBzaGFkb3dP
cGFjaXR5KQoreworICAgIHJldHVybiBhZG9wdFJlZigqbmV3IEZFRHJvcFNoYWRvdyhzdGRYLCBz
dGRZLCBkeCwgZHksIHNoYWRvd0NvbG9yLCBzaGFkb3dPcGFjaXR5KSk7Cit9CisKK0ZFRHJvcFNo
YWRvdzo6RkVEcm9wU2hhZG93KGZsb2F0IHN0ZFgsIGZsb2F0IHN0ZFksIGZsb2F0IGR4LCBmbG9h
dCBkeSwgY29uc3QgQ29sb3ImIHNoYWRvd0NvbG9yLCBmbG9hdCBzaGFkb3dPcGFjaXR5KQorICAg
IDogRmlsdGVyRWZmZWN0KEZpbHRlckVmZmVjdDo6VHlwZTo6RkVEcm9wU2hhZG93KQogICAgICwg
bV9zdGRYKHN0ZFgpCiAgICAgLCBtX3N0ZFkoc3RkWSkKICAgICAsIG1fZHgoZHgpCkBAIC00Miwx
NSArNDgsOCBAQCBGRURyb3BTaGFkb3c6OkZFRHJvcFNoYWRvdyhGaWx0ZXImIGZpbHRlciwgZmxv
YXQgc3RkWCwgZmxvYXQgc3RkWSwgZmxvYXQgZHgsIGZsbwogewogfQogCi1SZWY8RkVEcm9wU2hh
ZG93PiBGRURyb3BTaGFkb3c6OmNyZWF0ZShGaWx0ZXImIGZpbHRlciwgZmxvYXQgc3RkWCwgZmxv
YXQgc3RkWSwgZmxvYXQgZHgsIGZsb2F0IGR5LCBjb25zdCBDb2xvciYgc2hhZG93Q29sb3IsIGZs
b2F0IHNoYWRvd09wYWNpdHkpCit2b2lkIEZFRHJvcFNoYWRvdzo6ZGV0ZXJtaW5lQWJzb2x1dGVQ
YWludFJlY3QoY29uc3QgRmlsdGVyJiBmaWx0ZXIpCiB7Ci0gICAgcmV0dXJuIGFkb3B0UmVmKCpu
ZXcgRkVEcm9wU2hhZG93KGZpbHRlciwgc3RkWCwgc3RkWSwgZHgsIGR5LCBzaGFkb3dDb2xvciwg
c2hhZG93T3BhY2l0eSkpOwotfQotCi12b2lkIEZFRHJvcFNoYWRvdzo6ZGV0ZXJtaW5lQWJzb2x1
dGVQYWludFJlY3QoKQotewotICAgIEZpbHRlciYgZmlsdGVyID0gdGhpcy0+ZmlsdGVyKCk7Ci0K
ICAgICBGbG9hdFJlY3QgYWJzb2x1dGVQYWludFJlY3QgPSBpbnB1dEVmZmVjdCgwKS0+YWJzb2x1
dGVQYWludFJlY3QoKTsKICAgICBGbG9hdFJlY3QgYWJzb2x1dGVPZmZzZXRQYWludFJlY3QoYWJz
b2x1dGVQYWludFJlY3QpOwogICAgIGFic29sdXRlT2Zmc2V0UGFpbnRSZWN0Lm1vdmUoZmlsdGVy
LnNjYWxlZEJ5RmlsdGVyU2NhbGUoeyBtX2R4LCBtX2R5IH0pKTsKQEAgLTcwLDcgKzY5LDcgQEAg
dm9pZCBGRURyb3BTaGFkb3c6OmRldGVybWluZUFic29sdXRlUGFpbnRSZWN0KCkKICAgICBzZXRB
YnNvbHV0ZVBhaW50UmVjdChlbmNsb3NpbmdJbnRSZWN0KGFic29sdXRlUGFpbnRSZWN0KSk7CiB9
CiAKLXZvaWQgRkVEcm9wU2hhZG93OjpwbGF0Zm9ybUFwcGx5U29mdHdhcmUoKQordm9pZCBGRURy
b3BTaGFkb3c6OnBsYXRmb3JtQXBwbHlTb2Z0d2FyZShjb25zdCBGaWx0ZXImIGZpbHRlcikKIHsK
ICAgICBGaWx0ZXJFZmZlY3QqIGluID0gaW5wdXRFZmZlY3QoMCk7CiAKQEAgLTc4LDggKzc3LDYg
QEAgdm9pZCBGRURyb3BTaGFkb3c6OnBsYXRmb3JtQXBwbHlTb2Z0d2FyZSgpCiAgICAgaWYgKCFy
ZXN1bHRJbWFnZSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgRmlsdGVyJiBmaWx0ZXIgPSB0aGlz
LT5maWx0ZXIoKTsKLSAgICAKICAgICBGbG9hdFNpemUgYmx1clJhZGl1cyA9IDIgKiBmaWx0ZXIu
c2NhbGVkQnlGaWx0ZXJTY2FsZSh7IG1fc3RkWCwgbV9zdGRZIH0pOwogICAgIEZsb2F0U2l6ZSBv
ZmZzZXQgPSBmaWx0ZXIuc2NhbGVkQnlGaWx0ZXJTY2FsZSh7IG1fZHgsIG1fZHkgfSk7CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVEcm9w
U2hhZG93LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFRHJv
cFNoYWRvdy5oCmluZGV4IDJiNmU2NjEzYjVhZTE3ODRhNzEwMmQ1NDZkZGJiY2JkNjEzODU4ZmEu
LjY5NzdlYTc3YzZjYzFlZDM0ODYxOTRjMGNkODhlN2IyZDNkOTgwOGEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVEcm9wU2hhZG93LmgKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRURyb3BTaGFkb3cu
aApAQCAtMjAsMTQgKzIwLDEzIEBACiAjcHJhZ21hIG9uY2UKIAogI2luY2x1ZGUgIkNvbG9yLmgi
Ci0jaW5jbHVkZSAiRmlsdGVyLmgiCiAjaW5jbHVkZSAiRmlsdGVyRWZmZWN0LmgiCiAKIG5hbWVz
cGFjZSBXZWJDb3JlIHsKICAgICAKIGNsYXNzIEZFRHJvcFNoYWRvdyA6IHB1YmxpYyBGaWx0ZXJF
ZmZlY3QgewogcHVibGljOgotICAgIHN0YXRpYyBSZWY8RkVEcm9wU2hhZG93PiBjcmVhdGUoRmls
dGVyJiwgZmxvYXQsIGZsb2F0LCBmbG9hdCwgZmxvYXQsIGNvbnN0IENvbG9yJiwgZmxvYXQpOwor
ICAgIHN0YXRpYyBSZWY8RkVEcm9wU2hhZG93PiBjcmVhdGUoZmxvYXQgc3RkWCwgZmxvYXQgc3Rk
WSwgZmxvYXQgZHgsIGZsb2F0IGR5LCBjb25zdCBDb2xvciYgc2hhZG93Q29sb3IsIGZsb2F0IHNo
YWRvd09wYWNpdHkpOwogCiAgICAgZmxvYXQgc3RkRGV2aWF0aW9uWCgpIGNvbnN0IHsgcmV0dXJu
IG1fc3RkWDsgfQogICAgIHZvaWQgc2V0U3RkRGV2aWF0aW9uWChmbG9hdCBzdGRYKSB7IG1fc3Rk
WCA9IHN0ZFg7IH0KQEAgLTQ4LDE0ICs0NywxNCBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXRTaGFk
b3dPcGFjaXR5KGZsb2F0IHNoYWRvd09wYWNpdHkpIHsgbV9zaGFkb3dPcGFjaXR5ID0gc2hhZG93
T3BhY2l0eTsgfQogCiBwcml2YXRlOgotICAgIEZFRHJvcFNoYWRvdyhGaWx0ZXImLCBmbG9hdCwg
ZmxvYXQsIGZsb2F0LCBmbG9hdCwgY29uc3QgQ29sb3ImLCBmbG9hdCk7CisgICAgRkVEcm9wU2hh
ZG93KGZsb2F0IHN0ZFgsIGZsb2F0IHN0ZFksIGZsb2F0IGR4LCBmbG9hdCBkeSwgY29uc3QgQ29s
b3ImIHNoYWRvd0NvbG9yLCBmbG9hdCBzaGFkb3dPcGFjaXR5KTsKIAotICAgIHZvaWQgcGxhdGZv
cm1BcHBseVNvZnR3YXJlKCkgb3ZlcnJpZGU7Ci0KLSAgICB2b2lkIGRldGVybWluZUFic29sdXRl
UGFpbnRSZWN0KCkgb3ZlcnJpZGU7CisgICAgdm9pZCBkZXRlcm1pbmVBYnNvbHV0ZVBhaW50UmVj
dChjb25zdCBGaWx0ZXImKSBvdmVycmlkZTsKIAogICAgIEludE91dHNldHMgb3V0c2V0cygpIGNv
bnN0IG92ZXJyaWRlOwogCisgICAgdm9pZCBwbGF0Zm9ybUFwcGx5U29mdHdhcmUoY29uc3QgRmls
dGVyJikgb3ZlcnJpZGU7CisKICAgICBXVEY6OlRleHRTdHJlYW0mIGV4dGVybmFsUmVwcmVzZW50
YXRpb24oV1RGOjpUZXh0U3RyZWFtJiwgUmVwcmVzZW50YXRpb25UeXBlKSBjb25zdCBvdmVycmlk
ZTsKIAogICAgIGZsb2F0IG1fc3RkWDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVGbG9vZC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9maWx0ZXJzL0ZFRmxvb2QuY3BwCmluZGV4IGE3ODQyMTk2NzRlMWFlOTc5OTM0
NDM4ZGE1NGExYTcxYzk4MDQ4NDIuLmUwYTc3NDIxYTdkZjBjOTQ3ZWUzNjk4NDk3ZjYwNTM3NzA1
MzVjYjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRl
cnMvRkVGbG9vZC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmls
dGVycy9GRUZsb29kLmNwcApAQCAtMjQsMjIgKzI0LDIyIEBACiAjaW5jbHVkZSAiRkVGbG9vZC5o
IgogCiAjaW5jbHVkZSAiQ29sb3JTZXJpYWxpemF0aW9uLmgiCi0jaW5jbHVkZSAiRmlsdGVyLmgi
CiAjaW5jbHVkZSAiR3JhcGhpY3NDb250ZXh0LmgiCisjaW5jbHVkZSAiSW1hZ2VCdWZmZXIuaCIK
ICNpbmNsdWRlIDx3dGYvdGV4dC9UZXh0U3RyZWFtLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IAotRkVGbG9vZDo6RkVGbG9vZChGaWx0ZXImIGZpbHRlciwgY29uc3QgQ29sb3ImIGZsb29kQ29s
b3IsIGZsb2F0IGZsb29kT3BhY2l0eSkKLSAgICA6IEZpbHRlckVmZmVjdChmaWx0ZXIsIEZpbHRl
ckVmZmVjdDo6VHlwZTo6RkVGbG9vZCkKLSAgICAsIG1fZmxvb2RDb2xvcihmbG9vZENvbG9yKQot
ICAgICwgbV9mbG9vZE9wYWNpdHkoZmxvb2RPcGFjaXR5KQorUmVmPEZFRmxvb2Q+IEZFRmxvb2Q6
OmNyZWF0ZShjb25zdCBDb2xvciYgZmxvb2RDb2xvciwgZmxvYXQgZmxvb2RPcGFjaXR5KQogewor
ICAgIHJldHVybiBhZG9wdFJlZigqbmV3IEZFRmxvb2QoZmxvb2RDb2xvciwgZmxvb2RPcGFjaXR5
KSk7CiB9CiAKLVJlZjxGRUZsb29kPiBGRUZsb29kOjpjcmVhdGUoRmlsdGVyJiBmaWx0ZXIsIGNv
bnN0IENvbG9yJiBmbG9vZENvbG9yLCBmbG9hdCBmbG9vZE9wYWNpdHkpCitGRUZsb29kOjpGRUZs
b29kKGNvbnN0IENvbG9yJiBmbG9vZENvbG9yLCBmbG9hdCBmbG9vZE9wYWNpdHkpCisgICAgOiBG
aWx0ZXJFZmZlY3QoRmlsdGVyRWZmZWN0OjpUeXBlOjpGRUZsb29kKQorICAgICwgbV9mbG9vZENv
bG9yKGZsb29kQ29sb3IpCisgICAgLCBtX2Zsb29kT3BhY2l0eShmbG9vZE9wYWNpdHkpCiB7Ci0g
ICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgRkVGbG9vZChmaWx0ZXIsIGZsb29kQ29sb3IsIGZsb29k
T3BhY2l0eSkpOwogfQogCiBib29sIEZFRmxvb2Q6OnNldEZsb29kQ29sb3IoY29uc3QgQ29sb3Im
IGNvbG9yKQpAQCAtNTgsNyArNTgsNyBAQCBib29sIEZFRmxvb2Q6OnNldEZsb29kT3BhY2l0eShm
bG9hdCBmbG9vZE9wYWNpdHkpCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLXZvaWQgRkVGbG9vZDo6
cGxhdGZvcm1BcHBseVNvZnR3YXJlKCkKK3ZvaWQgRkVGbG9vZDo6cGxhdGZvcm1BcHBseVNvZnR3
YXJlKGNvbnN0IEZpbHRlciYpCiB7CiAgICAgSW1hZ2VCdWZmZXIqIHJlc3VsdEltYWdlID0gY3Jl
YXRlSW1hZ2VCdWZmZXJSZXN1bHQoKTsKICAgICBpZiAoIXJlc3VsdEltYWdlKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRUZsb29kLmggYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFRmxvb2QuaAppbmRleCAw
OGE0ZTk1OTM1ODVkMmZhMDcyNjg0ZDQ1ZDVmODkzMGYzYWVlZjBhLi44OWViNzIwMjkxMGNhYmY4
NzRjZGMxODM5ZDgyNjdkODA2OTcwNGNhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFRmxvb2QuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFRmxvb2QuaApAQCAtMjIsMTQgKzIyLDEzIEBACiAjcHJh
Z21hIG9uY2UKIAogI2luY2x1ZGUgIkNvbG9yLmgiCi0jaW5jbHVkZSAiRmlsdGVyLmgiCiAjaW5j
bHVkZSAiRmlsdGVyRWZmZWN0LmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgRkVG
bG9vZCA6IHB1YmxpYyBGaWx0ZXJFZmZlY3QgewogcHVibGljOgotICAgIHN0YXRpYyBSZWY8RkVG
bG9vZD4gY3JlYXRlKEZpbHRlciYsIGNvbnN0IENvbG9yJiwgZmxvYXQpOworICAgIHN0YXRpYyBS
ZWY8RkVGbG9vZD4gY3JlYXRlKGNvbnN0IENvbG9yJiBmbG9vZENvbG9yLCBmbG9hdCBmbG9vZE9w
YWNpdHkpOwogCiAgICAgY29uc3QgQ29sb3ImIGZsb29kQ29sb3IoKSBjb25zdCB7IHJldHVybiBt
X2Zsb29kQ29sb3I7IH0KICAgICBib29sIHNldEZsb29kQ29sb3IoY29uc3QgQ29sb3ImKTsKQEAg
LTQ1LDExICs0NCwxMSBAQCBwdWJsaWM6CiAjZW5kaWYKIAogcHJpdmF0ZToKLSAgICBGRUZsb29k
KEZpbHRlciYsIGNvbnN0IENvbG9yJiwgZmxvYXQpOworICAgIEZFRmxvb2QoY29uc3QgQ29sb3Im
IGZsb29kQ29sb3IsIGZsb2F0IGZsb29kT3BhY2l0eSk7CiAKLSAgICB2b2lkIHBsYXRmb3JtQXBw
bHlTb2Z0d2FyZSgpIG92ZXJyaWRlOworICAgIHZvaWQgZGV0ZXJtaW5lQWJzb2x1dGVQYWludFJl
Y3QoY29uc3QgRmlsdGVyJikgb3ZlcnJpZGUgeyBzZXRBYnNvbHV0ZVBhaW50UmVjdChlbmNsb3Np
bmdJbnRSZWN0KG1heEVmZmVjdFJlY3QoKSkpOyB9CiAKLSAgICB2b2lkIGRldGVybWluZUFic29s
dXRlUGFpbnRSZWN0KCkgb3ZlcnJpZGUgeyBzZXRBYnNvbHV0ZVBhaW50UmVjdChlbmNsb3NpbmdJ
bnRSZWN0KG1heEVmZmVjdFJlY3QoKSkpOyB9CisgICAgdm9pZCBwbGF0Zm9ybUFwcGx5U29mdHdh
cmUoY29uc3QgRmlsdGVyJikgb3ZlcnJpZGU7CiAKICAgICBXVEY6OlRleHRTdHJlYW0mIGV4dGVy
bmFsUmVwcmVzZW50YXRpb24oV1RGOjpUZXh0U3RyZWFtJiwgUmVwcmVzZW50YXRpb25UeXBlKSBj
b25zdCBvdmVycmlkZTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvZmlsdGVycy9GRUdhdXNzaWFuQmx1ci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9maWx0ZXJzL0ZFR2F1c3NpYW5CbHVyLmNwcAppbmRleCA4ZTQ2YzUwMjZmZTY1
Yzc1NTk2Mzc3NWQwYmU2OTk3MDJkNDhmMjU1Li5kYmU1NzE1ZTQxNjczNjM1ZmIzNmI0YWUyZTQx
MDA5YzdlNDQ0YzUxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9maWx0ZXJzL0ZFR2F1c3NpYW5CbHVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9maWx0ZXJzL0ZFR2F1c3NpYW5CbHVyLmNwcApAQCAtNzksMTcgKzc5LDE3IEBA
IGlubGluZSB2b2lkIGtlcm5lbFBvc2l0aW9uKGludCBibHVySXRlcmF0aW9uLCB1bnNpZ25lZCYg
cmFkaXVzLCBpbnQmIGRlbHRhTGVmdCwKICAgICB9CiB9CiAKLUZFR2F1c3NpYW5CbHVyOjpGRUdh
dXNzaWFuQmx1cihGaWx0ZXImIGZpbHRlciwgZmxvYXQgeCwgZmxvYXQgeSwgRWRnZU1vZGVUeXBl
IGVkZ2VNb2RlKQotICAgIDogRmlsdGVyRWZmZWN0KGZpbHRlciwgRmlsdGVyRWZmZWN0OjpUeXBl
OjpGRUdhdXNzaWFuQmx1cikKLSAgICAsIG1fc3RkWCh4KQotICAgICwgbV9zdGRZKHkpCi0gICAg
LCBtX2VkZ2VNb2RlKGVkZ2VNb2RlKQorUmVmPEZFR2F1c3NpYW5CbHVyPiBGRUdhdXNzaWFuQmx1
cjo6Y3JlYXRlKGZsb2F0IHgsIGZsb2F0IHksIEVkZ2VNb2RlVHlwZSBlZGdlTW9kZSkKIHsKKyAg
ICByZXR1cm4gYWRvcHRSZWYoKm5ldyBGRUdhdXNzaWFuQmx1cih4LCB5LCBlZGdlTW9kZSkpOwog
fQogCi1SZWY8RkVHYXVzc2lhbkJsdXI+IEZFR2F1c3NpYW5CbHVyOjpjcmVhdGUoRmlsdGVyJiBm
aWx0ZXIsIGZsb2F0IHgsIGZsb2F0IHksIEVkZ2VNb2RlVHlwZSBlZGdlTW9kZSkKK0ZFR2F1c3Np
YW5CbHVyOjpGRUdhdXNzaWFuQmx1cihmbG9hdCB4LCBmbG9hdCB5LCBFZGdlTW9kZVR5cGUgZWRn
ZU1vZGUpCisgICAgOiBGaWx0ZXJFZmZlY3QoRmlsdGVyRWZmZWN0OjpUeXBlOjpGRUdhdXNzaWFu
Qmx1cikKKyAgICAsIG1fc3RkWCh4KQorICAgICwgbV9zdGRZKHkpCisgICAgLCBtX2VkZ2VNb2Rl
KGVkZ2VNb2RlKQogewotICAgIHJldHVybiBhZG9wdFJlZigqbmV3IEZFR2F1c3NpYW5CbHVyKGZp
bHRlciwgeCwgeSwgZWRnZU1vZGUpKTsKIH0KIAogdm9pZCBGRUdhdXNzaWFuQmx1cjo6c2V0U3Rk
RGV2aWF0aW9uWChmbG9hdCB4KQpAQCAtNDk2LDkgKzQ5Niw5IEBAIEludFNpemUgRkVHYXVzc2lh
bkJsdXI6OmNhbGN1bGF0ZU91dHNldFNpemUoRmxvYXRTaXplIHN0ZERldmlhdGlvbikKICAgICBy
ZXR1cm4geyAzICoga2VybmVsU2l6ZS53aWR0aCgpIC8gMiwgMyAqIGtlcm5lbFNpemUuaGVpZ2h0
KCkgLyAyIH07CiB9CiAKLXZvaWQgRkVHYXVzc2lhbkJsdXI6OmRldGVybWluZUFic29sdXRlUGFp
bnRSZWN0KCkKK3ZvaWQgRkVHYXVzc2lhbkJsdXI6OmRldGVybWluZUFic29sdXRlUGFpbnRSZWN0
KGNvbnN0IEZpbHRlciYgZmlsdGVyKQogewotICAgIEludFNpemUga2VybmVsU2l6ZSA9IGNhbGN1
bGF0ZUtlcm5lbFNpemUoZmlsdGVyKCksIHsgbV9zdGRYLCBtX3N0ZFkgfSk7CisgICAgSW50U2l6
ZSBrZXJuZWxTaXplID0gY2FsY3VsYXRlS2VybmVsU2l6ZShmaWx0ZXIsIHsgbV9zdGRYLCBtX3N0
ZFkgfSk7CiAKICAgICBGbG9hdFJlY3QgYWJzb2x1dGVQYWludFJlY3QgPSBpbnB1dEVmZmVjdCgw
KS0+YWJzb2x1dGVQYWludFJlY3QoKTsKICAgICAvLyBFZGdlIG1vZGVzIG90aGVyIHRoYW4gJ25v
bmUnIGRvIG5vdCBpbmZsYXRlIHRoZSBhZmZlY3RlZCBwYWludCByZWN0LgpAQCAtNTE5LDcgKzUx
OSw3IEBAIHZvaWQgRkVHYXVzc2lhbkJsdXI6OmRldGVybWluZUFic29sdXRlUGFpbnRSZWN0KCkK
ICAgICBzZXRBYnNvbHV0ZVBhaW50UmVjdChlbmNsb3NpbmdJbnRSZWN0KGFic29sdXRlUGFpbnRS
ZWN0KSk7CiB9CiAKLXZvaWQgRkVHYXVzc2lhbkJsdXI6OnBsYXRmb3JtQXBwbHlTb2Z0d2FyZSgp
Cit2b2lkIEZFR2F1c3NpYW5CbHVyOjpwbGF0Zm9ybUFwcGx5U29mdHdhcmUoY29uc3QgRmlsdGVy
JiBmaWx0ZXIpCiB7CiAgICAgRmlsdGVyRWZmZWN0KiBpbiA9IGlucHV0RWZmZWN0KDApOwogCkBA
IC01MzYsNyArNTM2LDcgQEAgdm9pZCBGRUdhdXNzaWFuQmx1cjo6cGxhdGZvcm1BcHBseVNvZnR3
YXJlKCkKICAgICBpZiAoIW1fc3RkWCAmJiAhbV9zdGRZKQogICAgICAgICByZXR1cm47CiAKLSAg
ICBJbnRTaXplIGtlcm5lbFNpemUgPSBjYWxjdWxhdGVLZXJuZWxTaXplKGZpbHRlcigpLCB7IG1f
c3RkWCwgbV9zdGRZIH0pOworICAgIEludFNpemUga2VybmVsU2l6ZSA9IGNhbGN1bGF0ZUtlcm5l
bFNpemUoZmlsdGVyLCB7IG1fc3RkWCwgbV9zdGRZIH0pOwogCiAgICAgSW50U2l6ZSBwYWludFNp
emUgPSBhYnNvbHV0ZVBhaW50UmVjdCgpLnNpemUoKTsKICAgICBhdXRvIHRtcEltYWdlRGF0YSA9
IFVpbnQ4Q2xhbXBlZEFycmF5Ojp0cnlDcmVhdGVVbmluaXRpYWxpemVkKHBhaW50U2l6ZS5hcmVh
KCkgKiA0KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Zp
bHRlcnMvRkVHYXVzc2lhbkJsdXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2ZpbHRlcnMvRkVHYXVzc2lhbkJsdXIuaAppbmRleCA3NDNiNjUxNWRlM2Y0NjI1MDgzMWRkYzMy
NjYyNTJkYWI4ZmIxZjA0Li5jNzA2NmQzMzgzNmFkZWExMDhhNWVmOWU1ZThlNTcwODgxYzdmMTQ3
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZF
R2F1c3NpYW5CbHVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmls
dGVycy9GRUdhdXNzaWFuQmx1ci5oCkBAIC0yMiwxNCArMjIsMTMgQEAKICNwcmFnbWEgb25jZQog
CiAjaW5jbHVkZSAiRkVDb252b2x2ZU1hdHJpeC5oIgotI2luY2x1ZGUgIkZpbHRlci5oIgogI2lu
Y2x1ZGUgIkZpbHRlckVmZmVjdC5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIEZF
R2F1c3NpYW5CbHVyIDogcHVibGljIEZpbHRlckVmZmVjdCB7CiBwdWJsaWM6Ci0gICAgc3RhdGlj
IFJlZjxGRUdhdXNzaWFuQmx1cj4gY3JlYXRlKEZpbHRlciYsIGZsb2F0LCBmbG9hdCwgRWRnZU1v
ZGVUeXBlKTsKKyAgICBzdGF0aWMgUmVmPEZFR2F1c3NpYW5CbHVyPiBjcmVhdGUoZmxvYXQgeCwg
ZmxvYXQgeSwgRWRnZU1vZGVUeXBlKTsKIAogICAgIGZsb2F0IHN0ZERldmlhdGlvblgoKSBjb25z
dCB7IHJldHVybiBtX3N0ZFg7IH0KICAgICB2b2lkIHNldFN0ZERldmlhdGlvblgoZmxvYXQpOwpA
QCAtNDUsNyArNDQsNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIEludFNpemUgY2FsY3VsYXRlT3V0
c2V0U2l6ZShGbG9hdFNpemUgc3RkRGV2aWF0aW9uKTsKIAogcHJpdmF0ZToKLSAgICBGRUdhdXNz
aWFuQmx1cihGaWx0ZXImLCBmbG9hdCwgZmxvYXQsIEVkZ2VNb2RlVHlwZSk7CisgICAgRkVHYXVz
c2lhbkJsdXIoZmxvYXQgeCwgZmxvYXQgeSwgRWRnZU1vZGVUeXBlKTsKIAogICAgIHN0YXRpYyBj
b25zdCBpbnQgc19taW5pbWFsUmVjdERpbWVuc2lvbiA9IDEwMCAqIDEwMDsgLy8gRW1waXJpY2Fs
IGRhdGEgbGltaXQgZm9yIHBhcmFsbGVsIGpvYnMKIApAQCAtNTksOSArNTgsOSBAQCBwcml2YXRl
OgogICAgICAgICB1bnNpZ25lZCBrZXJuZWxTaXplWTsKICAgICB9OwogCi0gICAgdm9pZCBwbGF0
Zm9ybUFwcGx5U29mdHdhcmUoKSBvdmVycmlkZTsKKyAgICB2b2lkIGRldGVybWluZUFic29sdXRl
UGFpbnRSZWN0KGNvbnN0IEZpbHRlciYpIG92ZXJyaWRlOwogCi0gICAgdm9pZCBkZXRlcm1pbmVB
YnNvbHV0ZVBhaW50UmVjdCgpIG92ZXJyaWRlOworICAgIHZvaWQgcGxhdGZvcm1BcHBseVNvZnR3
YXJlKGNvbnN0IEZpbHRlciYpIG92ZXJyaWRlOwogCiAgICAgSW50T3V0c2V0cyBvdXRzZXRzKCkg
Y29uc3Qgb3ZlcnJpZGU7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2ZpbHRlcnMvRkVMaWdodGluZy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9maWx0ZXJzL0ZFTGlnaHRpbmcuY3BwCmluZGV4IDY1OWIxMDU1ZjYxZWFhYmM1ZjI5
OTkxZGEwZGExYTU4NTA3MWFlOTIuLjkxMThhOWJmMjUyZWM4MjA2NDcwM2Q1ZGFmMWY2ZmE4NDA1
MmEwYzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRl
cnMvRkVMaWdodGluZy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
ZmlsdGVycy9GRUxpZ2h0aW5nLmNwcApAQCAtMzUsOCArMzUsOCBAQAogCiBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAKLUZFTGlnaHRpbmc6OkZFTGlnaHRpbmcoRmlsdGVyJiBmaWx0ZXIsIExpZ2h0aW5n
VHlwZSBsaWdodGluZ1R5cGUsIGNvbnN0IENvbG9yJiBsaWdodGluZ0NvbG9yLCBmbG9hdCBzdXJm
YWNlU2NhbGUsIGZsb2F0IGRpZmZ1c2VDb25zdGFudCwgZmxvYXQgc3BlY3VsYXJDb25zdGFudCwg
ZmxvYXQgc3BlY3VsYXJFeHBvbmVudCwgZmxvYXQga2VybmVsVW5pdExlbmd0aFgsIGZsb2F0IGtl
cm5lbFVuaXRMZW5ndGhZLCBSZWY8TGlnaHRTb3VyY2U+JiYgbGlnaHRTb3VyY2UsIFR5cGUgdHlw
ZSkKLSAgICA6IEZpbHRlckVmZmVjdChmaWx0ZXIsIHR5cGUpCitGRUxpZ2h0aW5nOjpGRUxpZ2h0
aW5nKExpZ2h0aW5nVHlwZSBsaWdodGluZ1R5cGUsIGNvbnN0IENvbG9yJiBsaWdodGluZ0NvbG9y
LCBmbG9hdCBzdXJmYWNlU2NhbGUsIGZsb2F0IGRpZmZ1c2VDb25zdGFudCwgZmxvYXQgc3BlY3Vs
YXJDb25zdGFudCwgZmxvYXQgc3BlY3VsYXJFeHBvbmVudCwgZmxvYXQga2VybmVsVW5pdExlbmd0
aFgsIGZsb2F0IGtlcm5lbFVuaXRMZW5ndGhZLCBSZWY8TGlnaHRTb3VyY2U+JiYgbGlnaHRTb3Vy
Y2UsIFR5cGUgdHlwZSkKKyAgICA6IEZpbHRlckVmZmVjdCh0eXBlKQogICAgICwgbV9saWdodGlu
Z1R5cGUobGlnaHRpbmdUeXBlKQogICAgICwgbV9saWdodFNvdXJjZShXVEZNb3ZlKGxpZ2h0U291
cmNlKSkKICAgICAsIG1fbGlnaHRpbmdDb2xvcihsaWdodGluZ0NvbG9yKQpAQCAtNDcxLDcgKzQ3
MSw3IEBAIGJvb2wgRkVMaWdodGluZzo6ZHJhd0xpZ2h0aW5nKFVpbnQ4Q2xhbXBlZEFycmF5JiBw
aXhlbHMsIGludCB3aWR0aCwgaW50IGhlaWdodCkKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotdm9p
ZCBGRUxpZ2h0aW5nOjpwbGF0Zm9ybUFwcGx5U29mdHdhcmUoKQordm9pZCBGRUxpZ2h0aW5nOjpw
bGF0Zm9ybUFwcGx5U29mdHdhcmUoY29uc3QgRmlsdGVyJikKIHsKICAgICBGaWx0ZXJFZmZlY3Qq
IGluID0gaW5wdXRFZmZlY3QoMCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVMaWdodGluZy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvZmlsdGVycy9GRUxpZ2h0aW5nLmgKaW5kZXggMDFmNDQyYjQwMDMzZmZhM2Y3
MDc1NzBhNGEzMzQwMzNiZTZjMmI4Mi4uMzY0MjhkYmEzMjMwOTliMzRmZTU0ZGY3NTAzMDcyMjcw
ZWRlOTgzZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmls
dGVycy9GRUxpZ2h0aW5nLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
ZmlsdGVycy9GRUxpZ2h0aW5nLmgKQEAgLTI3LDcgKzI3LDYgQEAKICNwcmFnbWEgb25jZQogCiAj
aW5jbHVkZSAiQ29sb3IuaCIKLSNpbmNsdWRlICJGaWx0ZXIuaCIKICNpbmNsdWRlICJGaWx0ZXJF
ZmZlY3QuaCIKICNpbmNsdWRlICJMaWdodFNvdXJjZS5oIgogI2luY2x1ZGUgPEphdmFTY3JpcHRD
b3JlL0ZvcndhcmQuaD4KQEAgLTQwLDggKzM5LDYgQEAgc3RydWN0IEZFTGlnaHRpbmdQYWludGlu
Z0RhdGFGb3JOZW9uOwogCiBjbGFzcyBGRUxpZ2h0aW5nIDogcHVibGljIEZpbHRlckVmZmVjdCB7
CiBwdWJsaWM6Ci0gICAgdm9pZCBkZXRlcm1pbmVBYnNvbHV0ZVBhaW50UmVjdCgpIG92ZXJyaWRl
IHsgc2V0QWJzb2x1dGVQYWludFJlY3QoZW5jbG9zaW5nSW50UmVjdChtYXhFZmZlY3RSZWN0KCkp
KTsgfQotCiAgICAgZmxvYXQgc3VyZmFjZVNjYWxlKCkgY29uc3QgeyByZXR1cm4gbV9zdXJmYWNl
U2NhbGU7IH0KICAgICBib29sIHNldFN1cmZhY2VTY2FsZShmbG9hdCk7CiAKQEAgLTEyOCwxNCAr
MTI1LDE2IEBAIHByb3RlY3RlZDoKICAgICBzdGF0aWMgdm9pZCBwbGF0Zm9ybUFwcGx5R2VuZXJp
Y1dvcmtlcihQbGF0Zm9ybUFwcGx5R2VuZXJpY1BhcmFtZXRlcnMqKTsKICAgICBzdGF0aWMgdm9p
ZCBwbGF0Zm9ybUFwcGx5TmVvbldvcmtlcihGRUxpZ2h0aW5nUGFpbnRpbmdEYXRhRm9yTmVvbiop
OwogCi0gICAgRkVMaWdodGluZyhGaWx0ZXImLCBMaWdodGluZ1R5cGUsIGNvbnN0IENvbG9yJiwg
ZmxvYXQsIGZsb2F0LCBmbG9hdCwgZmxvYXQsIGZsb2F0LCBmbG9hdCwgUmVmPExpZ2h0U291cmNl
PiYmLCBUeXBlKTsKKyAgICBGRUxpZ2h0aW5nKExpZ2h0aW5nVHlwZSwgY29uc3QgQ29sb3ImIGxp
Z2h0aW5nQ29sb3IsIGZsb2F0IHN1cmZhY2VTY2FsZSwgZmxvYXQgZGlmZnVzZUNvbnN0YW50LCBm
bG9hdCBzcGVjdWxhckNvbnN0YW50LCBmbG9hdCBzcGVjdWxhckV4cG9uZW50LCBmbG9hdCBrZXJu
ZWxVbml0TGVuZ3RoWCwgZmxvYXQga2VybmVsVW5pdExlbmd0aFksIFJlZjxMaWdodFNvdXJjZT4m
JiwgVHlwZSk7CiAKICAgICBib29sIGRyYXdMaWdodGluZyhVaW50OENsYW1wZWRBcnJheSYsIGlu
dCwgaW50KTsKIAogICAgIHZvaWQgc2V0UGl4ZWwoaW50IG9mZnNldCwgY29uc3QgTGlnaHRpbmdE
YXRhJiwgY29uc3QgTGlnaHRTb3VyY2U6OlBhaW50aW5nRGF0YSYsIGludCB4LCBpbnQgeSwgZmxv
YXQgZmFjdG9yWCwgZmxvYXQgZmFjdG9yWSwgSW50U2l6ZSBub3JtYWxWZWN0b3IpOwogICAgIHZv
aWQgc2V0UGl4ZWxJbnRlcm5hbChpbnQgb2Zmc2V0LCBjb25zdCBMaWdodGluZ0RhdGEmLCBjb25z
dCBMaWdodFNvdXJjZTo6UGFpbnRpbmdEYXRhJiwgaW50IHgsIGludCB5LCBmbG9hdCBmYWN0b3JY
LCBmbG9hdCBmYWN0b3JZLCBJbnRTaXplIG5vcm1hbFZlY3RvciwgZmxvYXQgYWxwaGEpOwogCi0g
ICAgdm9pZCBwbGF0Zm9ybUFwcGx5U29mdHdhcmUoKSBvdmVycmlkZTsKKyAgICB2b2lkIGRldGVy
bWluZUFic29sdXRlUGFpbnRSZWN0KGNvbnN0IEZpbHRlciYpIG92ZXJyaWRlIHsgc2V0QWJzb2x1
dGVQYWludFJlY3QoZW5jbG9zaW5nSW50UmVjdChtYXhFZmZlY3RSZWN0KCkpKTsgfQorCisgICAg
dm9pZCBwbGF0Zm9ybUFwcGx5U29mdHdhcmUoY29uc3QgRmlsdGVyJikgb3ZlcnJpZGU7CiAKICAg
ICB2b2lkIHBsYXRmb3JtQXBwbHkoY29uc3QgTGlnaHRpbmdEYXRhJiwgY29uc3QgTGlnaHRTb3Vy
Y2U6OlBhaW50aW5nRGF0YSYpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9maWx0ZXJzL0ZFTWVyZ2UuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvZmlsdGVycy9GRU1lcmdlLmNwcAppbmRleCA2OTdkMmUxNWNjYmYxYWVmZWQwZTg5
ZmRhMzRlNzAzMjkzMDdmNzNjLi4zNzgxZGIwYzkwNTRiMWMxNzMyMmJhMWM2MGEyMDQ2ODkxN2Y3
YWEyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJz
L0ZFTWVyZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRl
cnMvRkVNZXJnZS5jcHAKQEAgLTIyLDIzICsyMiwyMyBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgog
I2luY2x1ZGUgIkZFTWVyZ2UuaCIKIAotI2luY2x1ZGUgIkZpbHRlci5oIgogI2luY2x1ZGUgIkdy
YXBoaWNzQ29udGV4dC5oIgorI2luY2x1ZGUgIkltYWdlQnVmZmVyLmgiCiAjaW5jbHVkZSA8d3Rm
L3RleHQvVGV4dFN0cmVhbS5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLUZFTWVyZ2U6OkZF
TWVyZ2UoRmlsdGVyJiBmaWx0ZXIpCi0gICAgOiBGaWx0ZXJFZmZlY3QoZmlsdGVyLCBGaWx0ZXJF
ZmZlY3Q6OlR5cGU6OkZFTWVyZ2UpCitSZWY8RkVNZXJnZT4gRkVNZXJnZTo6Y3JlYXRlKCkKIHsK
KyAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBGRU1lcmdlKCkpOwogfQogCi1SZWY8RkVNZXJnZT4g
RkVNZXJnZTo6Y3JlYXRlKEZpbHRlciYgZmlsdGVyKQorRkVNZXJnZTo6RkVNZXJnZSgpCisgICAg
OiBGaWx0ZXJFZmZlY3QoRmlsdGVyRWZmZWN0OjpUeXBlOjpGRU1lcmdlKQogewotICAgIHJldHVy
biBhZG9wdFJlZigqbmV3IEZFTWVyZ2UoZmlsdGVyKSk7CiB9CiAKLXZvaWQgRkVNZXJnZTo6cGxh
dGZvcm1BcHBseVNvZnR3YXJlKCkKK3ZvaWQgRkVNZXJnZTo6cGxhdGZvcm1BcHBseVNvZnR3YXJl
KGNvbnN0IEZpbHRlciYpCiB7CiAgICAgdW5zaWduZWQgc2l6ZSA9IG51bWJlck9mRWZmZWN0SW5w
dXRzKCk7CiAgICAgQVNTRVJUKHNpemUgPiAwKTsKQEAgLTQ3LDcgKzQ3LDYgQEAgdm9pZCBGRU1l
cmdlOjpwbGF0Zm9ybUFwcGx5U29mdHdhcmUoKQogICAgIGlmICghcmVzdWx0SW1hZ2UpCiAgICAg
ICAgIHJldHVybjsKIAotCiAgICAgR3JhcGhpY3NDb250ZXh0JiBmaWx0ZXJDb250ZXh0ID0gcmVz
dWx0SW1hZ2UtPmNvbnRleHQoKTsKICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgc2l6ZTsg
KytpKSB7CiAgICAgICAgIEZpbHRlckVmZmVjdCogaW4gPSBpbnB1dEVmZmVjdChpKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVNZXJnZS5o
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRU1lcmdlLmgKaW5k
ZXggMjc1MGM0ZDUyNGQzYTBmNWFlOTc0MWY2NDgwNDQ5NDUzNDVkMWFiMS4uMDUxOWE1Njg4YTgz
NjNmYzFiYTA2MzIwNGRiMjJmNzQzMWFlMzRmMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRU1lcmdlLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRU1lcmdlLmgKQEAgLTIyLDE4ICsyMiwxNyBAQAog
I3ByYWdtYSBvbmNlCiAKICNpbmNsdWRlICJGaWx0ZXJFZmZlY3QuaCIKLSNpbmNsdWRlICJGaWx0
ZXIuaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBGRU1lcmdlIDogcHVibGljIEZp
bHRlckVmZmVjdCB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFJlZjxGRU1lcmdlPiBjcmVhdGUoRmls
dGVyJik7CisgICAgc3RhdGljIFJlZjxGRU1lcmdlPiBjcmVhdGUoKTsKIAogcHJpdmF0ZToKLSAg
ICBGRU1lcmdlKEZpbHRlciYpOworICAgIEZFTWVyZ2UoKTsKIAotICAgIHZvaWQgcGxhdGZvcm1B
cHBseVNvZnR3YXJlKCkgb3ZlcnJpZGU7CisgICAgdm9pZCBwbGF0Zm9ybUFwcGx5U29mdHdhcmUo
Y29uc3QgRmlsdGVyJikgb3ZlcnJpZGU7CiAKICAgICBXVEY6OlRleHRTdHJlYW0mIGV4dGVybmFs
UmVwcmVzZW50YXRpb24oV1RGOjpUZXh0U3RyZWFtJiwgUmVwcmVzZW50YXRpb25UeXBlKSBjb25z
dCBvdmVycmlkZTsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9maWx0ZXJzL0ZFTW9ycGhvbG9neS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9maWx0ZXJzL0ZFTW9ycGhvbG9neS5jcHAKaW5kZXggMWIwZGFlYjBkYjU2ZTgxODky
MDE4YTMwNzUwNmYzNTc3MWQ2OGMwMC4uNDJmYmE3NGI1M2ZiODBhMzZmOTg0YzgxNjgzOTZkNDUy
ZTY4NGM3NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmls
dGVycy9GRU1vcnBob2xvZ3kuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2ZpbHRlcnMvRkVNb3JwaG9sb2d5LmNwcApAQCAtMzUsMTcgKzM1LDE3IEBACiAKIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIAotRkVNb3JwaG9sb2d5OjpGRU1vcnBob2xvZ3koRmlsdGVyJiBmaWx0
ZXIsIE1vcnBob2xvZ3lPcGVyYXRvclR5cGUgdHlwZSwgZmxvYXQgcmFkaXVzWCwgZmxvYXQgcmFk
aXVzWSkKLSAgICA6IEZpbHRlckVmZmVjdChmaWx0ZXIsIEZpbHRlckVmZmVjdDo6VHlwZTo6RkVN
b3JwaG9sb2d5KQotICAgICwgbV90eXBlKHR5cGUpCi0gICAgLCBtX3JhZGl1c1gocmFkaXVzWCkK
LSAgICAsIG1fcmFkaXVzWShyYWRpdXNZKQorUmVmPEZFTW9ycGhvbG9neT4gRkVNb3JwaG9sb2d5
OjpjcmVhdGUoTW9ycGhvbG9neU9wZXJhdG9yVHlwZSB0eXBlLCBmbG9hdCByYWRpdXNYLCBmbG9h
dCByYWRpdXNZKQogeworICAgIHJldHVybiBhZG9wdFJlZigqbmV3IEZFTW9ycGhvbG9neSh0eXBl
LCByYWRpdXNYLCByYWRpdXNZKSk7CiB9CiAKLVJlZjxGRU1vcnBob2xvZ3k+IEZFTW9ycGhvbG9n
eTo6Y3JlYXRlKEZpbHRlciYgZmlsdGVyLCBNb3JwaG9sb2d5T3BlcmF0b3JUeXBlIHR5cGUsIGZs
b2F0IHJhZGl1c1gsIGZsb2F0IHJhZGl1c1kpCitGRU1vcnBob2xvZ3k6OkZFTW9ycGhvbG9neShN
b3JwaG9sb2d5T3BlcmF0b3JUeXBlIHR5cGUsIGZsb2F0IHJhZGl1c1gsIGZsb2F0IHJhZGl1c1kp
CisgICAgOiBGaWx0ZXJFZmZlY3QoRmlsdGVyRWZmZWN0OjpUeXBlOjpGRU1vcnBob2xvZ3kpCisg
ICAgLCBtX3R5cGUodHlwZSkKKyAgICAsIG1fcmFkaXVzWChyYWRpdXNYKQorICAgICwgbV9yYWRp
dXNZKHJhZGl1c1kpCiB7Ci0gICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgRkVNb3JwaG9sb2d5KGZp
bHRlciwgdHlwZSwgcmFkaXVzWCwgcmFkaXVzWSkpOwogfQogCiBib29sIEZFTW9ycGhvbG9neTo6
c2V0TW9ycGhvbG9neU9wZXJhdG9yKE1vcnBob2xvZ3lPcGVyYXRvclR5cGUgdHlwZSkKQEAgLTcy
LDEwICs3Miw5IEBAIGJvb2wgRkVNb3JwaG9sb2d5OjpzZXRSYWRpdXNZKGZsb2F0IHJhZGl1c1kp
CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLXZvaWQgRkVNb3JwaG9sb2d5OjpkZXRlcm1pbmVBYnNv
bHV0ZVBhaW50UmVjdCgpCit2b2lkIEZFTW9ycGhvbG9neTo6ZGV0ZXJtaW5lQWJzb2x1dGVQYWlu
dFJlY3QoY29uc3QgRmlsdGVyJiBmaWx0ZXIpCiB7CiAgICAgRmxvYXRSZWN0IHBhaW50UmVjdCA9
IGlucHV0RWZmZWN0KDApLT5hYnNvbHV0ZVBhaW50UmVjdCgpOwotICAgIEZpbHRlciYgZmlsdGVy
ID0gdGhpcy0+ZmlsdGVyKCk7CiAgICAgcGFpbnRSZWN0LmluZmxhdGUoZmlsdGVyLnNjYWxlZEJ5
RmlsdGVyU2NhbGUoeyBtX3JhZGl1c1gsIG1fcmFkaXVzWSB9KSk7CiAgICAgaWYgKGNsaXBzVG9C
b3VuZHMoKSkKICAgICAgICAgcGFpbnRSZWN0LmludGVyc2VjdChtYXhFZmZlY3RSZWN0KCkpOwpA
QCAtMjQwLDcgKzIzOSw3IEBAIGJvb2wgRkVNb3JwaG9sb2d5OjpwbGF0Zm9ybUFwcGx5RGVnZW5l
cmF0ZShVaW50OENsYW1wZWRBcnJheSYgZHN0UGl4ZWxBcnJheSwgY29uCiAgICAgcmV0dXJuIGZh
bHNlOwogfQogCi12b2lkIEZFTW9ycGhvbG9neTo6cGxhdGZvcm1BcHBseVNvZnR3YXJlKCkKK3Zv
aWQgRkVNb3JwaG9sb2d5OjpwbGF0Zm9ybUFwcGx5U29mdHdhcmUoY29uc3QgRmlsdGVyJiBmaWx0
ZXIpCiB7CiAgICAgRmlsdGVyRWZmZWN0KiBpbiA9IGlucHV0RWZmZWN0KDApOwogCkBAIC0yNTgs
NyArMjU3LDYgQEAgdm9pZCBGRU1vcnBob2xvZ3k6OnBsYXRmb3JtQXBwbHlTb2Z0d2FyZSgpCiAg
ICAgaWYgKHBsYXRmb3JtQXBwbHlEZWdlbmVyYXRlKGRlc3RpbmF0aW9uUGl4ZWxBcnJheSwgZWZm
ZWN0RHJhd2luZ1JlY3QsIHJhZGl1cy53aWR0aCgpLCByYWRpdXMuaGVpZ2h0KCkpKQogICAgICAg
ICByZXR1cm47CiAKLSAgICBGaWx0ZXImIGZpbHRlciA9IHRoaXMtPmZpbHRlcigpOwogICAgIGF1
dG8gc291cmNlUGl4ZWxBcnJheSA9IGluLT5wcmVtdWx0aXBsaWVkUmVzdWx0KGVmZmVjdERyYXdp
bmdSZWN0LCBvcGVyYXRpbmdDb2xvclNwYWNlKCkpOwogICAgIGlmICghc291cmNlUGl4ZWxBcnJh
eSkKICAgICAgICAgcmV0dXJuOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvZmlsdGVycy9GRU1vcnBob2xvZ3kuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2ZpbHRlcnMvRkVNb3JwaG9sb2d5LmgKaW5kZXggMWI2OWM2MzI2Y2IwYjkyMzZh
OTBkM2QxNDI1M2FlMGIzZWUxNDk4OC4uZWM5YmRiNjk2MjUxZmNmYzgxYjNlNWNhYjAyNzdiOTgy
YjkxYThmYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmls
dGVycy9GRU1vcnBob2xvZ3kuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9maWx0ZXJzL0ZFTW9ycGhvbG9neS5oCkBAIC0yMiw3ICsyMiw2IEBACiAjcHJhZ21hIG9uY2UK
IAogI2luY2x1ZGUgIkZpbHRlckVmZmVjdC5oIgotI2luY2x1ZGUgIkZpbHRlci5oIgogCiBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAKQEAgLTM0LDcgKzMzLDcgQEAgZW51bSBNb3JwaG9sb2d5T3BlcmF0
b3JUeXBlIHsKIAogY2xhc3MgRkVNb3JwaG9sb2d5IDogcHVibGljIEZpbHRlckVmZmVjdCB7CiBw
dWJsaWM6Ci0gICAgc3RhdGljIFJlZjxGRU1vcnBob2xvZ3k+IGNyZWF0ZShGaWx0ZXImLCBNb3Jw
aG9sb2d5T3BlcmF0b3JUeXBlLCBmbG9hdCByYWRpdXNYLCBmbG9hdCByYWRpdXNZKTsKKyAgICBz
dGF0aWMgUmVmPEZFTW9ycGhvbG9neT4gY3JlYXRlKE1vcnBob2xvZ3lPcGVyYXRvclR5cGUsIGZs
b2F0IHJhZGl1c1gsIGZsb2F0IHJhZGl1c1kpOwogCiAgICAgTW9ycGhvbG9neU9wZXJhdG9yVHlw
ZSBtb3JwaG9sb2d5T3BlcmF0b3IoKSBjb25zdCB7IHJldHVybiBtX3R5cGU7IH0KICAgICBib29s
IHNldE1vcnBob2xvZ3lPcGVyYXRvcihNb3JwaG9sb2d5T3BlcmF0b3JUeXBlKTsKQEAgLTQ2LDEx
ICs0NSwxMSBAQCBwdWJsaWM6CiAgICAgYm9vbCBzZXRSYWRpdXNZKGZsb2F0KTsKIAogcHJpdmF0
ZToKLSAgICBGRU1vcnBob2xvZ3koRmlsdGVyJiwgTW9ycGhvbG9neU9wZXJhdG9yVHlwZSwgZmxv
YXQgcmFkaXVzWCwgZmxvYXQgcmFkaXVzWSk7CisgICAgRkVNb3JwaG9sb2d5KE1vcnBob2xvZ3lP
cGVyYXRvclR5cGUsIGZsb2F0IHJhZGl1c1gsIGZsb2F0IHJhZGl1c1kpOwogCi0gICAgdm9pZCBw
bGF0Zm9ybUFwcGx5U29mdHdhcmUoKSBvdmVycmlkZTsKKyAgICB2b2lkIGRldGVybWluZUFic29s
dXRlUGFpbnRSZWN0KGNvbnN0IEZpbHRlciYpIG92ZXJyaWRlOwogCi0gICAgdm9pZCBkZXRlcm1p
bmVBYnNvbHV0ZVBhaW50UmVjdCgpIG92ZXJyaWRlOworICAgIHZvaWQgcGxhdGZvcm1BcHBseVNv
ZnR3YXJlKGNvbnN0IEZpbHRlciYpIG92ZXJyaWRlOwogCiAgICAgV1RGOjpUZXh0U3RyZWFtJiBl
eHRlcm5hbFJlcHJlc2VudGF0aW9uKFdURjo6VGV4dFN0cmVhbSYsIFJlcHJlc2VudGF0aW9uVHlw
ZSkgY29uc3Qgb3ZlcnJpZGU7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2ZpbHRlcnMvRkVPZmZzZXQuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvZmlsdGVycy9GRU9mZnNldC5jcHAKaW5kZXggMDI4Y2JjNjBhNDQ3ZjM2OWJjY2Vk
YTAwNWM5MTc1YjMxYjE4ZDhmNi4uNTNkMjUyYTk3Njc0MmE2YzI5YTU0MzZiNTYwM2RjZmZkOGIz
ZWVjZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVy
cy9GRU9mZnNldC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmls
dGVycy9GRU9mZnNldC5jcHAKQEAgLTI2LDIwICsyNiwyMSBAQAogCiAjaW5jbHVkZSAiRmlsdGVy
LmgiCiAjaW5jbHVkZSAiR3JhcGhpY3NDb250ZXh0LmgiCisjaW5jbHVkZSAiSW1hZ2VCdWZmZXIu
aCIKICNpbmNsdWRlIDx3dGYvdGV4dC9UZXh0U3RyZWFtLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIAotRkVPZmZzZXQ6OkZFT2Zmc2V0KEZpbHRlciYgZmlsdGVyLCBmbG9hdCBkeCwgZmxvYXQg
ZHkpCi0gICAgOiBGaWx0ZXJFZmZlY3QoZmlsdGVyLCBGaWx0ZXJFZmZlY3Q6OlR5cGU6OkZFT2Zm
c2V0KQotICAgICwgbV9keChkeCkKLSAgICAsIG1fZHkoZHkpCitSZWY8RkVPZmZzZXQ+IEZFT2Zm
c2V0OjpjcmVhdGUoZmxvYXQgZHgsIGZsb2F0IGR5KQogeworICAgIHJldHVybiBhZG9wdFJlZigq
bmV3IEZFT2Zmc2V0KGR4LCBkeSkpOwogfQogCi1SZWY8RkVPZmZzZXQ+IEZFT2Zmc2V0OjpjcmVh
dGUoRmlsdGVyJiBmaWx0ZXIsIGZsb2F0IGR4LCBmbG9hdCBkeSkKK0ZFT2Zmc2V0OjpGRU9mZnNl
dChmbG9hdCBkeCwgZmxvYXQgZHkpCisgICAgOiBGaWx0ZXJFZmZlY3QoRmlsdGVyRWZmZWN0OjpU
eXBlOjpGRU9mZnNldCkKKyAgICAsIG1fZHgoZHgpCisgICAgLCBtX2R5KGR5KQogewotICAgIHJl
dHVybiBhZG9wdFJlZigqbmV3IEZFT2Zmc2V0KGZpbHRlciwgZHgsIGR5KSk7CiB9CiAKIHZvaWQg
RkVPZmZzZXQ6OnNldER4KGZsb2F0IGR4KQpAQCAtNTIsMTAgKzUzLDkgQEAgdm9pZCBGRU9mZnNl
dDo6c2V0RHkoZmxvYXQgZHkpCiAgICAgbV9keSA9IGR5OwogfQogCi12b2lkIEZFT2Zmc2V0Ojpk
ZXRlcm1pbmVBYnNvbHV0ZVBhaW50UmVjdCgpCit2b2lkIEZFT2Zmc2V0OjpkZXRlcm1pbmVBYnNv
bHV0ZVBhaW50UmVjdChjb25zdCBGaWx0ZXImIGZpbHRlcikKIHsKICAgICBGbG9hdFJlY3QgcGFp
bnRSZWN0ID0gaW5wdXRFZmZlY3QoMCktPmFic29sdXRlUGFpbnRSZWN0KCk7Ci0gICAgRmlsdGVy
JiBmaWx0ZXIgPSB0aGlzLT5maWx0ZXIoKTsKICAgICBwYWludFJlY3QubW92ZShmaWx0ZXIuc2Nh
bGVkQnlGaWx0ZXJTY2FsZSh7IG1fZHgsIG1fZHkgfSkpOwogICAgIGlmIChjbGlwc1RvQm91bmRz
KCkpCiAgICAgICAgIHBhaW50UmVjdC5pbnRlcnNlY3QobWF4RWZmZWN0UmVjdCgpKTsKQEAgLTY0
LDcgKzY0LDcgQEAgdm9pZCBGRU9mZnNldDo6ZGV0ZXJtaW5lQWJzb2x1dGVQYWludFJlY3QoKQog
ICAgIHNldEFic29sdXRlUGFpbnRSZWN0KGVuY2xvc2luZ0ludFJlY3QocGFpbnRSZWN0KSk7CiB9
CiAKLXZvaWQgRkVPZmZzZXQ6OnBsYXRmb3JtQXBwbHlTb2Z0d2FyZSgpCit2b2lkIEZFT2Zmc2V0
OjpwbGF0Zm9ybUFwcGx5U29mdHdhcmUoY29uc3QgRmlsdGVyJiBmaWx0ZXIpCiB7CiAgICAgRmls
dGVyRWZmZWN0KiBpbiA9IGlucHV0RWZmZWN0KDApOwogCkBAIC03Niw3ICs3Niw2IEBAIHZvaWQg
RkVPZmZzZXQ6OnBsYXRmb3JtQXBwbHlTb2Z0d2FyZSgpCiAgICAgc2V0SXNBbHBoYUltYWdlKGlu
LT5pc0FscGhhSW1hZ2UoKSk7CiAKICAgICBGbG9hdFJlY3QgZHJhd2luZ1JlZ2lvbiA9IGRyYXdp
bmdSZWdpb25PZklucHV0SW1hZ2UoaW4tPmFic29sdXRlUGFpbnRSZWN0KCkpOwotICAgIEZpbHRl
ciYgZmlsdGVyID0gdGhpcy0+ZmlsdGVyKCk7CiAgICAgZHJhd2luZ1JlZ2lvbi5tb3ZlKGZpbHRl
ci5zY2FsZWRCeUZpbHRlclNjYWxlKHsgbV9keCwgbV9keSB9KSk7CiAgICAgcmVzdWx0SW1hZ2Ut
PmNvbnRleHQoKS5kcmF3SW1hZ2VCdWZmZXIoKmluQnVmZmVyLCBkcmF3aW5nUmVnaW9uKTsKIH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVP
ZmZzZXQuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVPZmZz
ZXQuaAppbmRleCBkYjczMjI1NWVlNzhkMzM2ODA5ZGI0MjE3ODVhOTJmODQ1Yjk1MjYyLi43MmQ3
NmEzMTk4YTM3MjllOTVjYTFkZmFmNjNmNWIwZjZkODhjYTZmIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFT2Zmc2V0LmgKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRU9mZnNldC5oCkBAIC0yMiwxMyAr
MjIsMTIgQEAKICNwcmFnbWEgb25jZQogCiAjaW5jbHVkZSAiRmlsdGVyRWZmZWN0LmgiCi0jaW5j
bHVkZSAiRmlsdGVyLmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgRkVPZmZzZXQg
OiBwdWJsaWMgRmlsdGVyRWZmZWN0IHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUmVmPEZFT2Zmc2V0
PiBjcmVhdGUoRmlsdGVyJiwgZmxvYXQgZHgsIGZsb2F0IGR5KTsKKyAgICBzdGF0aWMgUmVmPEZF
T2Zmc2V0PiBjcmVhdGUoZmxvYXQgZHgsIGZsb2F0IGR5KTsKIAogICAgIGZsb2F0IGR4KCkgY29u
c3QgeyByZXR1cm4gbV9keDsgfQogICAgIHZvaWQgc2V0RHgoZmxvYXQpOwpAQCAtMzcsMTEgKzM2
LDExIEBAIHB1YmxpYzoKICAgICB2b2lkIHNldER5KGZsb2F0KTsKIAogcHJpdmF0ZToKLSAgICBG
RU9mZnNldChGaWx0ZXImLCBmbG9hdCBkeCwgZmxvYXQgZHkpOworICAgIEZFT2Zmc2V0KGZsb2F0
IGR4LCBmbG9hdCBkeSk7CiAKLSAgICB2b2lkIHBsYXRmb3JtQXBwbHlTb2Z0d2FyZSgpIG92ZXJy
aWRlOwotICAgIAotICAgIHZvaWQgZGV0ZXJtaW5lQWJzb2x1dGVQYWludFJlY3QoKSBvdmVycmlk
ZTsKKyAgICB2b2lkIGRldGVybWluZUFic29sdXRlUGFpbnRSZWN0KGNvbnN0IEZpbHRlciYpIG92
ZXJyaWRlOworCisgICAgdm9pZCBwbGF0Zm9ybUFwcGx5U29mdHdhcmUoY29uc3QgRmlsdGVyJikg
b3ZlcnJpZGU7CiAKICAgICBXVEY6OlRleHRTdHJlYW0mIGV4dGVybmFsUmVwcmVzZW50YXRpb24o
V1RGOjpUZXh0U3RyZWFtJiwgUmVwcmVzZW50YXRpb25UeXBlKSBjb25zdCBvdmVycmlkZTsKIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRVNw
ZWN1bGFyTGlnaHRpbmcuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmls
dGVycy9GRVNwZWN1bGFyTGlnaHRpbmcuY3BwCmluZGV4IDUyZjQ1MDg0MDkwYWRjYjA0ZDdlNDUx
MjA1OGVhN2EyYWNkYThmM2MuLjYwN2E3MWM0Y2YzNWY1NmQ0YTIyZmNmNTAyNmYxNDJiNTE3ZTcw
ZDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMv
RkVTcGVjdWxhckxpZ2h0aW5nLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9maWx0ZXJzL0ZFU3BlY3VsYXJMaWdodGluZy5jcHAKQEAgLTI3LDE0ICsyNywxNCBAQAog
CiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLUZFU3BlY3VsYXJMaWdodGluZzo6RkVTcGVjdWxhckxp
Z2h0aW5nKEZpbHRlciYgZmlsdGVyLCBjb25zdCBDb2xvciYgbGlnaHRpbmdDb2xvciwgZmxvYXQg
c3VyZmFjZVNjYWxlLCBmbG9hdCBzcGVjdWxhckNvbnN0YW50LCBmbG9hdCBzcGVjdWxhckV4cG9u
ZW50LCBmbG9hdCBrZXJuZWxVbml0TGVuZ3RoWCwgZmxvYXQga2VybmVsVW5pdExlbmd0aFksIFJl
ZjxMaWdodFNvdXJjZT4mJiBsaWdodFNvdXJjZSkKLSAgICA6IEZFTGlnaHRpbmcoZmlsdGVyLCBT
cGVjdWxhckxpZ2h0aW5nLCBsaWdodGluZ0NvbG9yLCBzdXJmYWNlU2NhbGUsIDAsIHNwZWN1bGFy
Q29uc3RhbnQsIHNwZWN1bGFyRXhwb25lbnQsIGtlcm5lbFVuaXRMZW5ndGhYLCBrZXJuZWxVbml0
TGVuZ3RoWSwgV1RGTW92ZShsaWdodFNvdXJjZSksIEZpbHRlckVmZmVjdDo6VHlwZTo6RkVTcGVj
dWxhckxpZ2h0aW5nKQorUmVmPEZFU3BlY3VsYXJMaWdodGluZz4gRkVTcGVjdWxhckxpZ2h0aW5n
OjpjcmVhdGUoY29uc3QgQ29sb3ImIGxpZ2h0aW5nQ29sb3IsIGZsb2F0IHN1cmZhY2VTY2FsZSwg
ZmxvYXQgc3BlY3VsYXJDb25zdGFudCwgZmxvYXQgc3BlY3VsYXJFeHBvbmVudCwgZmxvYXQga2Vy
bmVsVW5pdExlbmd0aFgsIGZsb2F0IGtlcm5lbFVuaXRMZW5ndGhZLCBSZWY8TGlnaHRTb3VyY2U+
JiYgbGlnaHRTb3VyY2UpCiB7CisgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgRkVTcGVjdWxhckxp
Z2h0aW5nKGxpZ2h0aW5nQ29sb3IsIHN1cmZhY2VTY2FsZSwgc3BlY3VsYXJDb25zdGFudCwgc3Bl
Y3VsYXJFeHBvbmVudCwga2VybmVsVW5pdExlbmd0aFgsIGtlcm5lbFVuaXRMZW5ndGhZLCBXVEZN
b3ZlKGxpZ2h0U291cmNlKSkpOwogfQogCi1SZWY8RkVTcGVjdWxhckxpZ2h0aW5nPiBGRVNwZWN1
bGFyTGlnaHRpbmc6OmNyZWF0ZShGaWx0ZXImIGZpbHRlciwgY29uc3QgQ29sb3ImIGxpZ2h0aW5n
Q29sb3IsIGZsb2F0IHN1cmZhY2VTY2FsZSwgZmxvYXQgc3BlY3VsYXJDb25zdGFudCwgZmxvYXQg
c3BlY3VsYXJFeHBvbmVudCwgZmxvYXQga2VybmVsVW5pdExlbmd0aFgsIGZsb2F0IGtlcm5lbFVu
aXRMZW5ndGhZLCBSZWY8TGlnaHRTb3VyY2U+JiYgbGlnaHRTb3VyY2UpCitGRVNwZWN1bGFyTGln
aHRpbmc6OkZFU3BlY3VsYXJMaWdodGluZyhjb25zdCBDb2xvciYgbGlnaHRpbmdDb2xvciwgZmxv
YXQgc3VyZmFjZVNjYWxlLCBmbG9hdCBzcGVjdWxhckNvbnN0YW50LCBmbG9hdCBzcGVjdWxhckV4
cG9uZW50LCBmbG9hdCBrZXJuZWxVbml0TGVuZ3RoWCwgZmxvYXQga2VybmVsVW5pdExlbmd0aFks
IFJlZjxMaWdodFNvdXJjZT4mJiBsaWdodFNvdXJjZSkKKyAgICA6IEZFTGlnaHRpbmcoU3BlY3Vs
YXJMaWdodGluZywgbGlnaHRpbmdDb2xvciwgc3VyZmFjZVNjYWxlLCAwLCBzcGVjdWxhckNvbnN0
YW50LCBzcGVjdWxhckV4cG9uZW50LCBrZXJuZWxVbml0TGVuZ3RoWCwga2VybmVsVW5pdExlbmd0
aFksIFdURk1vdmUobGlnaHRTb3VyY2UpLCBGaWx0ZXJFZmZlY3Q6OlR5cGU6OkZFU3BlY3VsYXJM
aWdodGluZykKIHsKLSAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBGRVNwZWN1bGFyTGlnaHRpbmco
ZmlsdGVyLCBsaWdodGluZ0NvbG9yLCBzdXJmYWNlU2NhbGUsIHNwZWN1bGFyQ29uc3RhbnQsIHNw
ZWN1bGFyRXhwb25lbnQsIGtlcm5lbFVuaXRMZW5ndGhYLCBrZXJuZWxVbml0TGVuZ3RoWSwgV1RG
TW92ZShsaWdodFNvdXJjZSkpKTsKIH0KIAogYm9vbCBGRVNwZWN1bGFyTGlnaHRpbmc6OnNldFNw
ZWN1bGFyQ29uc3RhbnQoZmxvYXQgc3BlY3VsYXJDb25zdGFudCkKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVTcGVjdWxhckxpZ2h0aW5nLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFU3BlY3VsYXJMaWdo
dGluZy5oCmluZGV4IDliYmJhOGE4ZjFmYzZmMDEwNDU3NjBkYTgwZDM1ZjhjZDI3N2NlMTcuLmFj
NDUwZGJkYjYwY2Q2OTdjZDhkZmMzYzc5MzE4ZGJmNjRhZDUzMzUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVTcGVjdWxhckxpZ2h0aW5nLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRVNwZWN1bGFy
TGlnaHRpbmcuaApAQCAtMjcsNyArMjcsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNz
IEZFU3BlY3VsYXJMaWdodGluZyA6IHB1YmxpYyBGRUxpZ2h0aW5nIHsKIHB1YmxpYzoKLSAgICBz
dGF0aWMgUmVmPEZFU3BlY3VsYXJMaWdodGluZz4gY3JlYXRlKEZpbHRlciYsIGNvbnN0IENvbG9y
JiwgZmxvYXQsIGZsb2F0LCBmbG9hdCwgZmxvYXQsIGZsb2F0LCBSZWY8TGlnaHRTb3VyY2U+JiYp
OworICAgIHN0YXRpYyBSZWY8RkVTcGVjdWxhckxpZ2h0aW5nPiBjcmVhdGUoY29uc3QgQ29sb3Im
IGxpZ2h0aW5nQ29sb3IsIGZsb2F0IHN1cmZhY2VTY2FsZSwgZmxvYXQgc3BlY3VsYXJDb25zdGFu
dCwgZmxvYXQgc3BlY3VsYXJFeHBvbmVudCwgZmxvYXQga2VybmVsVW5pdExlbmd0aFgsIGZsb2F0
IGtlcm5lbFVuaXRMZW5ndGhZLCBSZWY8TGlnaHRTb3VyY2U+JiYpOwogCiAgICAgZmxvYXQgc3Bl
Y3VsYXJDb25zdGFudCgpIGNvbnN0IHsgcmV0dXJuIG1fc3BlY3VsYXJDb25zdGFudDsgfQogICAg
IGJvb2wgc2V0U3BlY3VsYXJDb25zdGFudChmbG9hdCk7CkBAIC0zOCw3ICszOCw3IEBAIHB1Ymxp
YzoKICAgICBXVEY6OlRleHRTdHJlYW0mIGV4dGVybmFsUmVwcmVzZW50YXRpb24oV1RGOjpUZXh0
U3RyZWFtJiwgUmVwcmVzZW50YXRpb25UeXBlKSBjb25zdCBvdmVycmlkZTsKIAogcHJpdmF0ZToK
LSAgICBGRVNwZWN1bGFyTGlnaHRpbmcoRmlsdGVyJiwgY29uc3QgQ29sb3ImLCBmbG9hdCwgZmxv
YXQsIGZsb2F0LCBmbG9hdCwgZmxvYXQsIFJlZjxMaWdodFNvdXJjZT4mJik7CisgICAgRkVTcGVj
dWxhckxpZ2h0aW5nKGNvbnN0IENvbG9yJiBsaWdodGluZ0NvbG9yLCBmbG9hdCBzdXJmYWNlU2Nh
bGUsIGZsb2F0IHNwZWN1bGFyQ29uc3RhbnQsIGZsb2F0IHNwZWN1bGFyRXhwb25lbnQsIGZsb2F0
IGtlcm5lbFVuaXRMZW5ndGhYLCBmbG9hdCBrZXJuZWxVbml0TGVuZ3RoWSwgUmVmPExpZ2h0U291
cmNlPiYmKTsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVUaWxlLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVUaWxlLmNwcAppbmRleCAzZTUwZmI2
YzAwZWNmMzgzOTg1YzYyOTc5ODRmNmU5Nzg1Y2U0MjRlLi44MWFhMGM1M2ExYTgzNjU1Zjc4MmVj
OTJhZTE3MDk4OWU0ODhmNTNlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9maWx0ZXJzL0ZFVGlsZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvZmlsdGVycy9GRVRpbGUuY3BwCkBAIC0yNCw2ICsyNCw3IEBACiAjaW5jbHVkZSAi
QWZmaW5lVHJhbnNmb3JtLmgiCiAjaW5jbHVkZSAiRmlsdGVyLmgiCiAjaW5jbHVkZSAiR3JhcGhp
Y3NDb250ZXh0LmgiCisjaW5jbHVkZSAiSW1hZ2VCdWZmZXIuaCIKICNpbmNsdWRlICJQYXR0ZXJu
LmgiCiAjaW5jbHVkZSAiUmVuZGVyVHJlZUFzVGV4dC5oIgogI2luY2x1ZGUgIlNWR1JlbmRlcmlu
Z0NvbnRleHQuaCIKQEAgLTMxLDE3ICszMiwxNyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAK
LUZFVGlsZTo6RkVUaWxlKEZpbHRlciYgZmlsdGVyKQotICAgIDogRmlsdGVyRWZmZWN0KGZpbHRl
ciwgRmlsdGVyRWZmZWN0OjpUeXBlOjpGRVRpbGUpCitSZWY8RkVUaWxlPiBGRVRpbGU6OmNyZWF0
ZSgpCiB7CisgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgRkVUaWxlKCkpOwogfQogCi1SZWY8RkVU
aWxlPiBGRVRpbGU6OmNyZWF0ZShGaWx0ZXImIGZpbHRlcikKK0ZFVGlsZTo6RkVUaWxlKCkKKyAg
ICA6IEZpbHRlckVmZmVjdChGaWx0ZXJFZmZlY3Q6OlR5cGU6OkZFVGlsZSkKIHsKLSAgICByZXR1
cm4gYWRvcHRSZWYoKm5ldyBGRVRpbGUoZmlsdGVyKSk7CiB9CiAKLXZvaWQgRkVUaWxlOjpwbGF0
Zm9ybUFwcGx5U29mdHdhcmUoKQordm9pZCBGRVRpbGU6OnBsYXRmb3JtQXBwbHlTb2Z0d2FyZShj
b25zdCBGaWx0ZXImIGZpbHRlcikKIHsKIC8vIEZJWE1FOiBTZWUgYnVnIDQ3MzE1LiBUaGlzIGlz
IGEgaGFjayB0byB3b3JrIGFyb3VuZCBhIGNvbXBpbGUgZmFpbHVyZSwgYnV0IGlzIGluY29ycmVj
dCBiZWhhdmlvciBvdGhlcndpc2UuCiAgICAgRmlsdGVyRWZmZWN0KiBpbiA9IGlucHV0RWZmZWN0
KDApOwpAQCAtNTksMTIgKzYwLDExIEBAIHZvaWQgRkVUaWxlOjpwbGF0Zm9ybUFwcGx5U29mdHdh
cmUoKQogICAgIEZsb2F0UG9pbnQgaW5NYXhFZmZlY3RMb2NhdGlvbiA9IHRpbGVSZWN0LmxvY2F0
aW9uKCk7CiAgICAgRmxvYXRQb2ludCBtYXhFZmZlY3RMb2NhdGlvbiA9IG1heEVmZmVjdFJlY3Qo
KS5sb2NhdGlvbigpOwogICAgIGlmIChpbi0+ZmlsdGVyVHlwZSgpID09IEZpbHRlckVmZmVjdDo6
VHlwZTo6U291cmNlR3JhcGhpYyB8fCBpbi0+ZmlsdGVyVHlwZSgpID09IEZpbHRlckVmZmVjdDo6
VHlwZTo6U291cmNlQWxwaGEpIHsKLSAgICAgICAgRmlsdGVyJiBmaWx0ZXIgPSB0aGlzLT5maWx0
ZXIoKTsKICAgICAgICAgdGlsZVJlY3QgPSBmaWx0ZXIuZmlsdGVyUmVnaW9uKCk7CiAgICAgICAg
IHRpbGVSZWN0LnNjYWxlKGZpbHRlci5maWx0ZXJTY2FsZSgpKTsKICAgICB9CiAKLSAgICBhdXRv
IHRpbGVJbWFnZSA9IFNWR1JlbmRlcmluZ0NvbnRleHQ6OmNyZWF0ZUltYWdlQnVmZmVyKHRpbGVS
ZWN0LCB0aWxlUmVjdCwgRGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdCKCksIGZpbHRlcigpLnJl
bmRlcmluZ01vZGUoKSk7CisgICAgYXV0byB0aWxlSW1hZ2UgPSBTVkdSZW5kZXJpbmdDb250ZXh0
OjpjcmVhdGVJbWFnZUJ1ZmZlcih0aWxlUmVjdCwgdGlsZVJlY3QsIERlc3RpbmF0aW9uQ29sb3JT
cGFjZTo6U1JHQigpLCBmaWx0ZXIucmVuZGVyaW5nTW9kZSgpKTsKICAgICBpZiAoIXRpbGVJbWFn
ZSkKICAgICAgICAgcmV0dXJuOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9maWx0ZXJzL0ZFVGlsZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvZmlsdGVycy9GRVRpbGUuaAppbmRleCA1YzQ4ZWY0NTE1MGVjMmNmODc5ZmRkYjdlNDhl
OWU5ZThkNTAyNDFlLi5jMzk4ZjM2NDBiMGQ3NTNlODgzODU0NDM4ZjIwMGQ3MTZmYjEzZWJmIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFVGls
ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVUaWxl
LmgKQEAgLTIyLDIwICsyMiwxOSBAQAogI3ByYWdtYSBvbmNlCiAKICNpbmNsdWRlICJGaWx0ZXJF
ZmZlY3QuaCIKLSNpbmNsdWRlICJGaWx0ZXIuaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogICAg
IAogY2xhc3MgRkVUaWxlIDogcHVibGljIEZpbHRlckVmZmVjdCB7CiBwdWJsaWM6Ci0gICAgc3Rh
dGljIFJlZjxGRVRpbGU+IGNyZWF0ZShGaWx0ZXImKTsKKyAgICBzdGF0aWMgUmVmPEZFVGlsZT4g
Y3JlYXRlKCk7CiAKIHByaXZhdGU6Ci0gICAgRkVUaWxlKEZpbHRlciYpOworICAgIEZFVGlsZSgp
OwogCi0gICAgdm9pZCBwbGF0Zm9ybUFwcGx5U29mdHdhcmUoKSBvdmVycmlkZTsKKyAgICB2b2lk
IGRldGVybWluZUFic29sdXRlUGFpbnRSZWN0KGNvbnN0IEZpbHRlciYpIG92ZXJyaWRlIHsgc2V0
QWJzb2x1dGVQYWludFJlY3QoZW5jbG9zaW5nSW50UmVjdChtYXhFZmZlY3RSZWN0KCkpKTsgfQog
Ci0gICAgdm9pZCBkZXRlcm1pbmVBYnNvbHV0ZVBhaW50UmVjdCgpIG92ZXJyaWRlIHsgc2V0QWJz
b2x1dGVQYWludFJlY3QoZW5jbG9zaW5nSW50UmVjdChtYXhFZmZlY3RSZWN0KCkpKTsgfQorICAg
IHZvaWQgcGxhdGZvcm1BcHBseVNvZnR3YXJlKGNvbnN0IEZpbHRlciYpIG92ZXJyaWRlOwogCiAg
ICAgV1RGOjpUZXh0U3RyZWFtJiBleHRlcm5hbFJlcHJlc2VudGF0aW9uKFdURjo6VGV4dFN0cmVh
bSYsIFJlcHJlc2VudGF0aW9uVHlwZSkgY29uc3Qgb3ZlcnJpZGU7CiB9OwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRVR1cmJ1bGVuY2UuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRVR1cmJ1bGVuY2Uu
Y3BwCmluZGV4IGEyZTdhZWMzNGQ2YTk1NTQ0YTA3MDY5N2RhNTc4ZTE4MzU2MGRiNWMuLmYyY2Zl
ZjA2MWEzNzA4NDk0M2EyMGVmYWU4ZDhmYjBjOWJkYTcxY2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVUdXJidWxlbmNlLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFVHVyYnVsZW5jZS5jcHAK
QEAgLTQ4LDggKzQ4LDEzIEBAIHN0YXRpYyBjb25zdCBpbnQgc19yYW5kQW1wbGl0dWRlID0gMTY4
MDc7IC8vIDcqKjU7IHByaW1pdGl2ZSByb290IG9mIG0KIHN0YXRpYyBjb25zdCBpbnQgc19yYW5k
USA9IDEyNzc3MzsgLy8gbSAvIGEKIHN0YXRpYyBjb25zdCBpbnQgc19yYW5kUiA9IDI4MzY7IC8v
IG0gJSBhCiAKLUZFVHVyYnVsZW5jZTo6RkVUdXJidWxlbmNlKEZpbHRlciYgZmlsdGVyLCBUdXJi
dWxlbmNlVHlwZSB0eXBlLCBmbG9hdCBiYXNlRnJlcXVlbmN5WCwgZmxvYXQgYmFzZUZyZXF1ZW5j
eVksIGludCBudW1PY3RhdmVzLCBmbG9hdCBzZWVkLCBib29sIHN0aXRjaFRpbGVzKQotICAgIDog
RmlsdGVyRWZmZWN0KGZpbHRlciwgRmlsdGVyRWZmZWN0OjpUeXBlOjpGRVR1cmJ1bGVuY2UpCitS
ZWY8RkVUdXJidWxlbmNlPiBGRVR1cmJ1bGVuY2U6OmNyZWF0ZShUdXJidWxlbmNlVHlwZSB0eXBl
LCBmbG9hdCBiYXNlRnJlcXVlbmN5WCwgZmxvYXQgYmFzZUZyZXF1ZW5jeVksIGludCBudW1PY3Rh
dmVzLCBmbG9hdCBzZWVkLCBib29sIHN0aXRjaFRpbGVzKQoreworICAgIHJldHVybiBhZG9wdFJl
ZigqbmV3IEZFVHVyYnVsZW5jZSh0eXBlLCBiYXNlRnJlcXVlbmN5WCwgYmFzZUZyZXF1ZW5jeVks
IG51bU9jdGF2ZXMsIHNlZWQsIHN0aXRjaFRpbGVzKSk7Cit9CisKK0ZFVHVyYnVsZW5jZTo6RkVU
dXJidWxlbmNlKFR1cmJ1bGVuY2VUeXBlIHR5cGUsIGZsb2F0IGJhc2VGcmVxdWVuY3lYLCBmbG9h
dCBiYXNlRnJlcXVlbmN5WSwgaW50IG51bU9jdGF2ZXMsIGZsb2F0IHNlZWQsIGJvb2wgc3RpdGNo
VGlsZXMpCisgICAgOiBGaWx0ZXJFZmZlY3QoRmlsdGVyRWZmZWN0OjpUeXBlOjpGRVR1cmJ1bGVu
Y2UpCiAgICAgLCBtX3R5cGUodHlwZSkKICAgICAsIG1fYmFzZUZyZXF1ZW5jeVgoYmFzZUZyZXF1
ZW5jeVgpCiAgICAgLCBtX2Jhc2VGcmVxdWVuY3lZKGJhc2VGcmVxdWVuY3lZKQpAQCAtNTksMTEg
KzY0LDYgQEAgRkVUdXJidWxlbmNlOjpGRVR1cmJ1bGVuY2UoRmlsdGVyJiBmaWx0ZXIsIFR1cmJ1
bGVuY2VUeXBlIHR5cGUsIGZsb2F0IGJhc2VGcmVxdWUKIHsKIH0KIAotUmVmPEZFVHVyYnVsZW5j
ZT4gRkVUdXJidWxlbmNlOjpjcmVhdGUoRmlsdGVyJiBmaWx0ZXIsIFR1cmJ1bGVuY2VUeXBlIHR5
cGUsIGZsb2F0IGJhc2VGcmVxdWVuY3lYLCBmbG9hdCBiYXNlRnJlcXVlbmN5WSwgaW50IG51bU9j
dGF2ZXMsIGZsb2F0IHNlZWQsIGJvb2wgc3RpdGNoVGlsZXMpCi17Ci0gICAgcmV0dXJuIGFkb3B0
UmVmKCpuZXcgRkVUdXJidWxlbmNlKGZpbHRlciwgdHlwZSwgYmFzZUZyZXF1ZW5jeVgsIGJhc2VG
cmVxdWVuY3lZLCBudW1PY3RhdmVzLCBzZWVkLCBzdGl0Y2hUaWxlcykpOwotfQotCiBib29sIEZF
VHVyYnVsZW5jZTo6c2V0VHlwZShUdXJidWxlbmNlVHlwZSB0eXBlKQogewogICAgIGlmIChtX3R5
cGUgPT0gdHlwZSkKQEAgLTM2NiwxNCArMzY2LDE0IEBAIENvbG9yQ29tcG9uZW50czx1aW50OF90
LCA0PiBGRVR1cmJ1bGVuY2U6OmNhbGN1bGF0ZVR1cmJ1bGVuY2VWYWx1ZUZvclBvaW50KGNvbnN0
CiAgICAgcmV0dXJuIHRvSW50QmFzZWRDb2xvckNvbXBvbmVudHModHVyYnVsZW5jZUZ1bmN0aW9u
UmVzdWx0KTsKIH0KIAotdm9pZCBGRVR1cmJ1bGVuY2U6OmZpbGxSZWdpb24oVWludDhDbGFtcGVk
QXJyYXkmIHBpeGVsQXJyYXksIGNvbnN0IFBhaW50aW5nRGF0YSYgcGFpbnRpbmdEYXRhLCBTdGl0
Y2hEYXRhIHN0aXRjaERhdGEsIGludCBzdGFydFksIGludCBlbmRZKSBjb25zdAordm9pZCBGRVR1
cmJ1bGVuY2U6OmZpbGxSZWdpb24oY29uc3QgRmlsdGVyJiBmaWx0ZXIsIFVpbnQ4Q2xhbXBlZEFy
cmF5JiBwaXhlbEFycmF5LCBjb25zdCBQYWludGluZ0RhdGEmIHBhaW50aW5nRGF0YSwgU3RpdGNo
RGF0YSBzdGl0Y2hEYXRhLCBpbnQgc3RhcnRZLCBpbnQgZW5kWSkgY29uc3QKIHsKICAgICBBU1NF
UlQoZW5kWSA+IHN0YXJ0WSk7CiAKICAgICBJbnRSZWN0IGZpbHRlclJlZ2lvbiA9IGFic29sdXRl
UGFpbnRSZWN0KCk7CiAgICAgRmxvYXRQb2ludCBwb2ludCgwLCBmaWx0ZXJSZWdpb24ueSgpICsg
c3RhcnRZKTsKICAgICBpbnQgaW5kZXhPZlBpeGVsQ2hhbm5lbCA9IHN0YXJ0WSAqIChmaWx0ZXJS
ZWdpb24ud2lkdGgoKSA8PCAyKTsKLSAgICBGbG9hdFNpemUgaW52ZXJzZVNjYWxlID0geyAxIC8g
ZmlsdGVyKCkuZmlsdGVyU2NhbGUoKS53aWR0aCgpLCAxIC8gZmlsdGVyKCkuZmlsdGVyU2NhbGUo
KS5oZWlnaHQoKSB9OworICAgIEZsb2F0U2l6ZSBpbnZlcnNlU2NhbGUgPSB7IDEgLyBmaWx0ZXIu
ZmlsdGVyU2NhbGUoKS53aWR0aCgpLCAxIC8gZmlsdGVyLmZpbHRlclNjYWxlKCkuaGVpZ2h0KCkg
fTsKIAogICAgIGZvciAoaW50IHkgPSBzdGFydFk7IHkgPCBlbmRZOyArK3kpIHsKICAgICAgICAg
cG9pbnQuc2V0WShwb2ludC55KCkgKyAxKTsKQEAgLTM5MCwxMCArMzkwLDEwIEBAIHZvaWQgRkVU
dXJidWxlbmNlOjpmaWxsUmVnaW9uKFVpbnQ4Q2xhbXBlZEFycmF5JiBwaXhlbEFycmF5LCBjb25z
dCBQYWludGluZ0RhdGEmCiAKIHZvaWQgRkVUdXJidWxlbmNlOjpmaWxsUmVnaW9uV29ya2VyKEZp
bGxSZWdpb25QYXJhbWV0ZXJzKiBwYXJhbWV0ZXJzKQogewotICAgIHBhcmFtZXRlcnMtPmZpbHRl
ci0+ZmlsbFJlZ2lvbigqcGFyYW1ldGVycy0+cGl4ZWxBcnJheSwgKnBhcmFtZXRlcnMtPnBhaW50
aW5nRGF0YSwgcGFyYW1ldGVycy0+c3RpdGNoRGF0YSwgcGFyYW1ldGVycy0+c3RhcnRZLCBwYXJh
bWV0ZXJzLT5lbmRZKTsKKyAgICBwYXJhbWV0ZXJzLT5lZmZlY3QtPmZpbGxSZWdpb24oKnBhcmFt
ZXRlcnMtPmZpbHRlciwgKnBhcmFtZXRlcnMtPnBpeGVsQXJyYXksICpwYXJhbWV0ZXJzLT5wYWlu
dGluZ0RhdGEsIHBhcmFtZXRlcnMtPnN0aXRjaERhdGEsIHBhcmFtZXRlcnMtPnN0YXJ0WSwgcGFy
YW1ldGVycy0+ZW5kWSk7CiB9CiAKLXZvaWQgRkVUdXJidWxlbmNlOjpwbGF0Zm9ybUFwcGx5U29m
dHdhcmUoKQordm9pZCBGRVR1cmJ1bGVuY2U6OnBsYXRmb3JtQXBwbHlTb2Z0d2FyZShjb25zdCBG
aWx0ZXImIGZpbHRlcikKIHsKICAgICBhdXRvJiBkZXN0aW5hdGlvblBpeGVsQnVmZmVyID0gY3Jl
YXRlVW5tdWx0aXBsaWVkSW1hZ2VSZXN1bHQoKTsKICAgICBpZiAoIWRlc3RpbmF0aW9uUGl4ZWxC
dWZmZXIpCkBAIC00MzgsNyArNDM4LDggQEAgdm9pZCBGRVR1cmJ1bGVuY2U6OnBsYXRmb3JtQXBw
bHlTb2Z0d2FyZSgpCiAKICAgICAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBudW1K
b2JzOyArK2kpIHsKICAgICAgICAgICAgICAgICBGaWxsUmVnaW9uUGFyYW1ldGVycyYgcGFyYW1z
ID0gcGFyYWxsZWxKb2JzLnBhcmFtZXRlcihpKTsKLSAgICAgICAgICAgICAgICBwYXJhbXMuZmls
dGVyID0gdGhpczsKKyAgICAgICAgICAgICAgICBwYXJhbXMuZmlsdGVyID0gJmZpbHRlcjsKKyAg
ICAgICAgICAgICAgICBwYXJhbXMuZWZmZWN0ID0gdGhpczsKICAgICAgICAgICAgICAgICBwYXJh
bXMucGl4ZWxBcnJheSA9ICZkZXN0aW5hdGlvblBpeGVsQXJyYXk7CiAgICAgICAgICAgICAgICAg
cGFyYW1zLnBhaW50aW5nRGF0YSA9ICZwYWludGluZ0RhdGE7CiAgICAgICAgICAgICAgICAgcGFy
YW1zLnN0aXRjaERhdGEgPSBzdGl0Y2hEYXRhOwpAQCAtNDU1LDcgKzQ1Niw3IEBAIHZvaWQgRkVU
dXJidWxlbmNlOjpwbGF0Zm9ybUFwcGx5U29mdHdhcmUoKQogICAgIH0KIAogICAgIC8vIEZhbGxi
YWNrIHRvIHNpbmdsZSB0aHJlYWRlZCBtb2RlIGlmIHRoZXJlIGlzIG5vIHJvb20gZm9yIGEgbmV3
IHRocmVhZCBvciB0aGUgcGFpbnQgYXJlYSBpcyB0b28gc21hbGwuCi0gICAgZmlsbFJlZ2lvbihk
ZXN0aW5hdGlvblBpeGVsQXJyYXksIHBhaW50aW5nRGF0YSwgc3RpdGNoRGF0YSwgMCwgaGVpZ2h0
KTsKKyAgICBmaWxsUmVnaW9uKGZpbHRlciwgZGVzdGluYXRpb25QaXhlbEFycmF5LCBwYWludGlu
Z0RhdGEsIHN0aXRjaERhdGEsIDAsIGhlaWdodCk7CiB9CiAKIHN0YXRpYyBUZXh0U3RyZWFtJiBv
cGVyYXRvcjw8KFRleHRTdHJlYW0mIHRzLCBUdXJidWxlbmNlVHlwZSB0eXBlKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRVR1cmJ1bGVuY2Uu
aCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVUdXJidWxlbmNl
LmgKaW5kZXggMmRhMDI4YjQ2OTNmYWU2MzE3OTZkZDNkMzI4NThlMzM1MjBhMTMzMS4uZDI0MjZk
Mzk1ZGRiYzliNzVkMWE4ZjdlMDM5ZWMyOTM0YWQ1YWFmMSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRVR1cmJ1bGVuY2UuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFVHVyYnVsZW5jZS5oCkBAIC0y
Niw3ICsyNiw2IEBACiAKICNpbmNsdWRlICJDb2xvckNvbXBvbmVudHMuaCIKICNpbmNsdWRlICJG
aWx0ZXJFZmZlY3QuaCIKLSNpbmNsdWRlICJGaWx0ZXIuaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUg
ewogCkBAIC0zOCw3ICszNyw3IEBAIGVudW0gY2xhc3MgVHVyYnVsZW5jZVR5cGUgewogCiBjbGFz
cyBGRVR1cmJ1bGVuY2UgOiBwdWJsaWMgRmlsdGVyRWZmZWN0IHsKIHB1YmxpYzoKLSAgICBzdGF0
aWMgUmVmPEZFVHVyYnVsZW5jZT4gY3JlYXRlKEZpbHRlciYsIFR1cmJ1bGVuY2VUeXBlLCBmbG9h
dCwgZmxvYXQsIGludCwgZmxvYXQsIGJvb2wpOworICAgIHN0YXRpYyBSZWY8RkVUdXJidWxlbmNl
PiBjcmVhdGUoVHVyYnVsZW5jZVR5cGUsIGZsb2F0IGJhc2VGcmVxdWVuY3lYLCBmbG9hdCBiYXNl
RnJlcXVlbmN5WSwgaW50IG51bU9jdGF2ZXMsIGZsb2F0IHNlZWQsIGJvb2wgc3RpdGNoVGlsZXMp
OwogCiAgICAgVHVyYnVsZW5jZVR5cGUgdHlwZSgpIGNvbnN0IHsgcmV0dXJuIG1fdHlwZTsgfQog
ICAgIGJvb2wgc2V0VHlwZShUdXJidWxlbmNlVHlwZSk7CkBAIC05Myw3ICs5Miw4IEBAIHByaXZh
dGU6CiAgICAgfTsKIAogICAgIHN0cnVjdCBGaWxsUmVnaW9uUGFyYW1ldGVycyB7Ci0gICAgICAg
IEZFVHVyYnVsZW5jZSogZmlsdGVyOworICAgICAgICBjb25zdCBGaWx0ZXIqIGZpbHRlcjsKKyAg
ICAgICAgRkVUdXJidWxlbmNlKiBlZmZlY3Q7CiAgICAgICAgIFVpbnQ4Q2xhbXBlZEFycmF5KiBw
aXhlbEFycmF5OwogICAgICAgICBQYWludGluZ0RhdGEqIHBhaW50aW5nRGF0YTsKICAgICAgICAg
U3RpdGNoRGF0YSBzdGl0Y2hEYXRhOwpAQCAtMTAzLDE3ICsxMDMsMTcgQEAgcHJpdmF0ZToKIAog
ICAgIHN0YXRpYyB2b2lkIGZpbGxSZWdpb25Xb3JrZXIoRmlsbFJlZ2lvblBhcmFtZXRlcnMqKTsK
IAotICAgIEZFVHVyYnVsZW5jZShGaWx0ZXImLCBUdXJidWxlbmNlVHlwZSwgZmxvYXQsIGZsb2F0
LCBpbnQsIGZsb2F0LCBib29sKTsKKyAgICBGRVR1cmJ1bGVuY2UoVHVyYnVsZW5jZVR5cGUsIGZs
b2F0IGJhc2VGcmVxdWVuY3lYLCBmbG9hdCBiYXNlRnJlcXVlbmN5WSwgaW50IG51bU9jdGF2ZXMs
IGZsb2F0IHNlZWQsIGJvb2wgc3RpdGNoVGlsZXMpOwogCi0gICAgdm9pZCBwbGF0Zm9ybUFwcGx5
U29mdHdhcmUoKSBvdmVycmlkZTsKLSAgICB2b2lkIGRldGVybWluZUFic29sdXRlUGFpbnRSZWN0
KCkgb3ZlcnJpZGUgeyBzZXRBYnNvbHV0ZVBhaW50UmVjdChlbmNsb3NpbmdJbnRSZWN0KG1heEVm
ZmVjdFJlY3QoKSkpOyB9CisgICAgdm9pZCBkZXRlcm1pbmVBYnNvbHV0ZVBhaW50UmVjdChjb25z
dCBGaWx0ZXImKSBvdmVycmlkZSB7IHNldEFic29sdXRlUGFpbnRSZWN0KGVuY2xvc2luZ0ludFJl
Y3QobWF4RWZmZWN0UmVjdCgpKSk7IH0KKyAgICB2b2lkIHBsYXRmb3JtQXBwbHlTb2Z0d2FyZShj
b25zdCBGaWx0ZXImKSBvdmVycmlkZTsKICAgICBXVEY6OlRleHRTdHJlYW0mIGV4dGVybmFsUmVw
cmVzZW50YXRpb24oV1RGOjpUZXh0U3RyZWFtJiwgUmVwcmVzZW50YXRpb25UeXBlKSBjb25zdCBv
dmVycmlkZTsKIAogICAgIHZvaWQgaW5pdFBhaW50KFBhaW50aW5nRGF0YSYpOwogICAgIFN0aXRj
aERhdGEgY29tcHV0ZVN0aXRjaGluZyhJbnRTaXplIHRpbGVTaXplLCBmbG9hdCYgYmFzZUZyZXF1
ZW5jeVgsIGZsb2F0JiBiYXNlRnJlcXVlbmN5WSkgY29uc3Q7CiAgICAgQ29sb3JDb21wb25lbnRz
PGZsb2F0LCA0PiBub2lzZTJEKGNvbnN0IFBhaW50aW5nRGF0YSYsIGNvbnN0IFN0aXRjaERhdGEm
LCBjb25zdCBGbG9hdFBvaW50JikgY29uc3Q7CiAgICAgQ29sb3JDb21wb25lbnRzPHVpbnQ4X3Qs
IDQ+IGNhbGN1bGF0ZVR1cmJ1bGVuY2VWYWx1ZUZvclBvaW50KGNvbnN0IFBhaW50aW5nRGF0YSYs
IFN0aXRjaERhdGEsIGNvbnN0IEZsb2F0UG9pbnQmKSBjb25zdDsKLSAgICB2b2lkIGZpbGxSZWdp
b24oVWludDhDbGFtcGVkQXJyYXkmLCBjb25zdCBQYWludGluZ0RhdGEmLCBTdGl0Y2hEYXRhLCBp
bnQgc3RhcnRZLCBpbnQgZW5kWSkgY29uc3Q7CisgICAgdm9pZCBmaWxsUmVnaW9uKGNvbnN0IEZp
bHRlciYsIFVpbnQ4Q2xhbXBlZEFycmF5JiwgY29uc3QgUGFpbnRpbmdEYXRhJiwgU3RpdGNoRGF0
YSwgaW50IHN0YXJ0WSwgaW50IGVuZFkpIGNvbnN0OwogCiAgICAgc3RhdGljIHZvaWQgZmlsbFJl
Z2lvbldvcmtlcih2b2lkKik7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2ZpbHRlcnMvRmlsdGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9maWx0ZXJzL0ZpbHRlci5oCmluZGV4IDEyMWFhZDVjY2E4MzgwZDczYjlhZDI2MzYwMTU1
YTIxOTQyNjYzYzcuLjRlYzVjZmFjOWMzMDQwYTJmZjVhMjdmZGFiYTFjM2IwZDE4OWFkZjIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRmlsdGVy
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GaWx0ZXIu
aApAQCAtNDMsOCArNDMsOSBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXRGaWx0ZXJSZWdpb24oY29u
c3QgRmxvYXRSZWN0JiBmaWx0ZXJSZWdpb24pIHsgbV9maWx0ZXJSZWdpb24gPSBmaWx0ZXJSZWdp
b247IH0KIAogICAgIHZpcnR1YWwgRmxvYXRTaXplIHNjYWxlZEJ5RmlsdGVyU2NhbGUoRmxvYXRT
aXplIHNpemUpIGNvbnN0IHsgcmV0dXJuIHNpemUgKiBtX2ZpbHRlclNjYWxlOyB9CisgICAgdmly
dHVhbCB2b2lkIGFwcGx5KCkgPSAwOwogCi0gICAgSW1hZ2VCdWZmZXIqIHNvdXJjZUltYWdlKCkg
eyByZXR1cm4gbV9zb3VyY2VJbWFnZS5nZXQoKTsgfQorICAgIEltYWdlQnVmZmVyKiBzb3VyY2VJ
bWFnZSgpIGNvbnN0IHsgcmV0dXJuIG1fc291cmNlSW1hZ2UuZ2V0KCk7IH0KICAgICB2b2lkIHNl
dFNvdXJjZUltYWdlKFJlZlB0cjxJbWFnZUJ1ZmZlcj4mJiBzb3VyY2VJbWFnZSkgeyBtX3NvdXJj
ZUltYWdlID0gV1RGTW92ZShzb3VyY2VJbWFnZSk7IH0KIAogICAgIFJlbmRlcmluZ01vZGUgcmVu
ZGVyaW5nTW9kZSgpIGNvbnN0IHsgcmV0dXJuIG1fcmVuZGVyaW5nTW9kZTsgfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GaWx0ZXJFZmZlY3Qu
Y3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GaWx0ZXJFZmZl
Y3QuY3BwCmluZGV4IDZlZmZjOGYxN2RmYmM2NTRkNWUzZDI3MWQ5MDYzMDRmYzM1ZDZmZmQuLjQw
ZmVkMTExODEzNzZmYTE4OTI1NzkwYTg0N2M4ZmQ2ZWYwNmVkMzggMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRmlsdGVyRWZmZWN0LmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZpbHRlckVmZmVjdC5j
cHAKQEAgLTQ1LDEzICs0NSwxMiBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLUZpbHRlckVm
ZmVjdDo6RmlsdGVyRWZmZWN0KEZpbHRlciYgZmlsdGVyLCBGaWx0ZXJFZmZlY3Q6OlR5cGUgdHlw
ZSkKK0ZpbHRlckVmZmVjdDo6RmlsdGVyRWZmZWN0KEZpbHRlckVmZmVjdDo6VHlwZSB0eXBlKQog
ICAgIDogRmlsdGVyRnVuY3Rpb24odHlwZSkKLSAgICAsIG1fZmlsdGVyKGZpbHRlcikKIHsKIH0K
IAotdm9pZCBGaWx0ZXJFZmZlY3Q6OmRldGVybWluZUFic29sdXRlUGFpbnRSZWN0KCkKK3ZvaWQg
RmlsdGVyRWZmZWN0OjpkZXRlcm1pbmVBYnNvbHV0ZVBhaW50UmVjdChjb25zdCBGaWx0ZXImKQog
ewogICAgIG1fYWJzb2x1dGVQYWludFJlY3QgPSBJbnRSZWN0KCk7CiAgICAgZm9yIChhdXRvJiBl
ZmZlY3QgOiBtX2lucHV0RWZmZWN0cykKQEAgLTk0LDIyICs5MywyMiBAQCBGbG9hdFJlY3QgRmls
dGVyRWZmZWN0OjpkcmF3aW5nUmVnaW9uT2ZJbnB1dEltYWdlKGNvbnN0IEludFJlY3QmIHNyY1Jl
Y3QpIGNvbnN0CiAgICAgcmV0dXJuIHRyYW5zZm9ybS5tYXBSZWN0KHNyY1JlY3QpOwogfQogCi1G
bG9hdFJlY3QgRmlsdGVyRWZmZWN0OjpkZXRlcm1pbmVGaWx0ZXJQcmltaXRpdmVTdWJyZWdpb24o
KQorRmxvYXRSZWN0IEZpbHRlckVmZmVjdDo6ZGV0ZXJtaW5lRmlsdGVyUHJpbWl0aXZlU3VicmVn
aW9uKGNvbnN0IEZpbHRlciYgZmlsdGVyKQogewogICAgIC8vIEZFVGlsZSwgRkVUdXJidWxlbmNl
LCBGRUZsb29kIGRvbid0IGhhdmUgaW5wdXQgZWZmZWN0cywgdGFrZSB0aGUgZmlsdGVyIHJlZ2lv
biBhcyB1bml0ZSByZWN0LgogICAgIEZsb2F0UmVjdCBzdWJyZWdpb247CiAgICAgaWYgKHVuc2ln
bmVkIG51bWJlck9mSW5wdXRFZmZlY3RzID0gaW5wdXRFZmZlY3RzKCkuc2l6ZSgpKSB7Ci0gICAg
ICAgIHN1YnJlZ2lvbiA9IGlucHV0RWZmZWN0KDApLT5kZXRlcm1pbmVGaWx0ZXJQcmltaXRpdmVT
dWJyZWdpb24oKTsKKyAgICAgICAgc3VicmVnaW9uID0gaW5wdXRFZmZlY3QoMCktPmRldGVybWlu
ZUZpbHRlclByaW1pdGl2ZVN1YnJlZ2lvbihmaWx0ZXIpOwogICAgICAgICBmb3IgKHVuc2lnbmVk
IGkgPSAxOyBpIDwgbnVtYmVyT2ZJbnB1dEVmZmVjdHM7ICsraSkgewotICAgICAgICAgICAgYXV0
byBpbnB1dFByaW1pdGl2ZVN1YnJlZ2lvbiA9IGlucHV0RWZmZWN0KGkpLT5kZXRlcm1pbmVGaWx0
ZXJQcmltaXRpdmVTdWJyZWdpb24oKTsKKyAgICAgICAgICAgIGF1dG8gaW5wdXRQcmltaXRpdmVT
dWJyZWdpb24gPSBpbnB1dEVmZmVjdChpKS0+ZGV0ZXJtaW5lRmlsdGVyUHJpbWl0aXZlU3VicmVn
aW9uKGZpbHRlcik7CiAgICAgICAgICAgICBzdWJyZWdpb24udW5pdGUoaW5wdXRQcmltaXRpdmVT
dWJyZWdpb24pOwogICAgICAgICB9CiAgICAgfSBlbHNlCi0gICAgICAgIHN1YnJlZ2lvbiA9IG1f
ZmlsdGVyLmZpbHRlclJlZ2lvbigpOworICAgICAgICBzdWJyZWdpb24gPSBmaWx0ZXIuZmlsdGVy
UmVnaW9uKCk7CiAKICAgICAvLyBBZnRlciBjYWxsaW5nIGRldGVybWluZUZpbHRlclByaW1pdGl2
ZVN1YnJlZ2lvbiBvbiB0aGUgdGFyZ2V0IGVmZmVjdCwgcmVzZXQgdGhlIHN1YnJlZ2lvbiBhZ2Fp
biBmb3IgPGZlVGlsZT4uCiAgICAgaWYgKGZpbHRlclR5cGUoKSA9PSBGaWx0ZXJFZmZlY3Q6OlR5
cGU6OkZFVGlsZSkKLSAgICAgICAgc3VicmVnaW9uID0gbV9maWx0ZXIuZmlsdGVyUmVnaW9uKCk7
CisgICAgICAgIHN1YnJlZ2lvbiA9IGZpbHRlci5maWx0ZXJSZWdpb24oKTsKIAogICAgIGF1dG8g
Ym91bmRhcmllcyA9IGVmZmVjdEJvdW5kYXJpZXMoKTsKICAgICBpZiAoaGFzWCgpKQpAQCAtMTI0
LDEzICsxMjMsMTMgQEAgRmxvYXRSZWN0IEZpbHRlckVmZmVjdDo6ZGV0ZXJtaW5lRmlsdGVyUHJp
bWl0aXZlU3VicmVnaW9uKCkKICAgICBzZXRGaWx0ZXJQcmltaXRpdmVTdWJyZWdpb24oc3VicmVn
aW9uKTsKIAogICAgIGF1dG8gYWJzb2x1dGVTdWJyZWdpb24gPSBzdWJyZWdpb247Ci0gICAgYWJz
b2x1dGVTdWJyZWdpb24uc2NhbGUobV9maWx0ZXIuZmlsdGVyU2NhbGUoKSk7CisgICAgYWJzb2x1
dGVTdWJyZWdpb24uc2NhbGUoZmlsdGVyLmZpbHRlclNjYWxlKCkpOwogICAgIC8vIFNhdmUgdGhp
cyBiZWZvcmUgY2xpcHBpbmcgc28gd2UgY2FuIHVzZSBpdCB0byBtYXAgbGlnaHRpbmcgcG9pbnRz
IGZyb20gdXNlciBzcGFjZSB0byBidWZmZXIgY29vcmRpbmF0ZXMuCiAgICAgc2V0VW5jbGlwcGVk
QWJzb2x1dGVTdWJyZWdpb24oYWJzb2x1dGVTdWJyZWdpb24pOwogCiAgICAgLy8gQ2xpcCBldmVy
eSBmaWx0ZXIgZWZmZWN0IHRvIHRoZSBmaWx0ZXIgcmVnaW9uLgotICAgIGF1dG8gYWJzb2x1dGVT
Y2FsZWRGaWx0ZXJSZWdpb24gPSBtX2ZpbHRlci5maWx0ZXJSZWdpb24oKTsKLSAgICBhYnNvbHV0
ZVNjYWxlZEZpbHRlclJlZ2lvbi5zY2FsZShtX2ZpbHRlci5maWx0ZXJTY2FsZSgpKTsKKyAgICBh
dXRvIGFic29sdXRlU2NhbGVkRmlsdGVyUmVnaW9uID0gZmlsdGVyLmZpbHRlclJlZ2lvbigpOwor
ICAgIGFic29sdXRlU2NhbGVkRmlsdGVyUmVnaW9uLnNjYWxlKGZpbHRlci5maWx0ZXJTY2FsZSgp
KTsKICAgICBhYnNvbHV0ZVN1YnJlZ2lvbi5pbnRlcnNlY3QoYWJzb2x1dGVTY2FsZWRGaWx0ZXJS
ZWdpb24pOwogCiAgICAgc2V0TWF4RWZmZWN0UmVjdChhYnNvbHV0ZVN1YnJlZ2lvbik7CkBAIC0x
NDMsMTQgKzE0MiwxNCBAQCBGaWx0ZXJFZmZlY3QqIEZpbHRlckVmZmVjdDo6aW5wdXRFZmZlY3Qo
dW5zaWduZWQgbnVtYmVyKSBjb25zdAogICAgIHJldHVybiBtX2lucHV0RWZmZWN0cy5hdChudW1i
ZXIpLmdldCgpOwogfQogCi12b2lkIEZpbHRlckVmZmVjdDo6YXBwbHkoKQordm9pZCBGaWx0ZXJF
ZmZlY3Q6OmFwcGx5KGNvbnN0IEZpbHRlciYgZmlsdGVyKQogewogICAgIGlmIChoYXNSZXN1bHQo
KSkKICAgICAgICAgcmV0dXJuOwogICAgIHVuc2lnbmVkIHNpemUgPSBtX2lucHV0RWZmZWN0cy5z
aXplKCk7CiAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IHNpemU7ICsraSkgewogICAgICAg
ICBGaWx0ZXJFZmZlY3QqIGluID0gbV9pbnB1dEVmZmVjdHMuYXQoaSkuZ2V0KCk7Ci0gICAgICAg
IGluLT5hcHBseSgpOworICAgICAgICBpbi0+YXBwbHkoZmlsdGVyKTsKICAgICAgICAgaWYgKCFp
bi0+aGFzUmVzdWx0KCkpCiAgICAgICAgICAgICByZXR1cm47CiAKQEAgLTE1OCwxMCArMTU3LDEw
IEBAIHZvaWQgRmlsdGVyRWZmZWN0OjphcHBseSgpCiAgICAgICAgIHRyYW5zZm9ybVJlc3VsdENv
bG9yU3BhY2UoaW4sIGkpOwogICAgIH0KIAotICAgIGRldGVybWluZUFic29sdXRlUGFpbnRSZWN0
KCk7CisgICAgZGV0ZXJtaW5lQWJzb2x1dGVQYWludFJlY3QoZmlsdGVyKTsKICAgICBzZXRSZXN1
bHRDb2xvclNwYWNlKG1fb3BlcmF0aW5nQ29sb3JTcGFjZSk7CiAKLSAgICBMT0dfV0lUSF9TVFJF
QU0oRmlsdGVycywgc3RyZWFtIDw8ICJGaWx0ZXJFZmZlY3QgIiA8PCBmaWx0ZXJOYW1lKCkgPDwg
IiAiIDw8IHRoaXMgPDwgIiBhcHBseSgpOlxuICBmaWx0ZXJQcmltaXRpdmVTdWJyZWdpb24gIiA8
PCBtX2ZpbHRlclByaW1pdGl2ZVN1YnJlZ2lvbiA8PCAiXG4gIGVmZmVjdEJvdW5kYXJpZXMgIiA8
PCBtX2VmZmVjdEJvdW5kYXJpZXMgPDwgIlxuICBhYnNvbHV0ZVVuY2xpcHBlZFN1YnJlZ2lvbiAi
IDw8IG1fYWJzb2x1dGVVbmNsaXBwZWRTdWJyZWdpb24gPDwgIlxuICBhYnNvbHV0ZVBhaW50UmVj
dCAiIDw8IG1fYWJzb2x1dGVQYWludFJlY3QgPDwgIlxuICBtYXhFZmZlY3RSZWN0ICIgPDwgbV9t
YXhFZmZlY3RSZWN0IDw8ICJcbiAgZmlsdGVyIHNjYWxlICIgPDwgbV9maWx0ZXIuZmlsdGVyU2Nh
bGUoKSk7CisgICAgTE9HX1dJVEhfU1RSRUFNKEZpbHRlcnMsIHN0cmVhbSA8PCAiRmlsdGVyRWZm
ZWN0ICIgPDwgZmlsdGVyTmFtZSgpIDw8ICIgIiA8PCB0aGlzIDw8ICIgYXBwbHkoKTpcbiAgZmls
dGVyUHJpbWl0aXZlU3VicmVnaW9uICIgPDwgbV9maWx0ZXJQcmltaXRpdmVTdWJyZWdpb24gPDwg
IlxuICBlZmZlY3RCb3VuZGFyaWVzICIgPDwgbV9lZmZlY3RCb3VuZGFyaWVzIDw8ICJcbiAgYWJz
b2x1dGVVbmNsaXBwZWRTdWJyZWdpb24gIiA8PCBtX2Fic29sdXRlVW5jbGlwcGVkU3VicmVnaW9u
IDw8ICJcbiAgYWJzb2x1dGVQYWludFJlY3QgIiA8PCBtX2Fic29sdXRlUGFpbnRSZWN0IDw8ICJc
biAgbWF4RWZmZWN0UmVjdCAiIDw8IG1fbWF4RWZmZWN0UmVjdCA8PCAiXG4gIGZpbHRlciBzY2Fs
ZSAiIDw8IGZpbHRlci5maWx0ZXJTY2FsZSgpKTsKIAogICAgIGlmIChtX2Fic29sdXRlUGFpbnRS
ZWN0LmlzRW1wdHkoKSB8fCBJbWFnZUJ1ZmZlcjo6c2l6ZU5lZWRzQ2xhbXBpbmcobV9hYnNvbHV0
ZVBhaW50UmVjdC5zaXplKCkpKQogICAgICAgICByZXR1cm47CkBAIC0xNzIsNyArMTcxLDcgQEAg
dm9pZCBGaWx0ZXJFZmZlY3Q6OmFwcGx5KCkKICAgICB9CiAgICAgCiAgICAgLy8gQWRkIHBsYXRm
b3JtIHNwZWNpZmljIGFwcGx5IGZ1bmN0aW9ucyBoZXJlIGFuZCByZXR1cm4gZWFybGllci4KLSAg
ICBwbGF0Zm9ybUFwcGx5U29mdHdhcmUoKTsKKyAgICBwbGF0Zm9ybUFwcGx5U29mdHdhcmUoZmls
dGVyKTsKIH0KIAogdm9pZCBGaWx0ZXJFZmZlY3Q6OmZvcmNlVmFsaWRQcmVNdWx0aXBsaWVkUGl4
ZWxzKCkKQEAgLTI1Myw3ICsyNTIsNyBAQCBJbWFnZUJ1ZmZlciogRmlsdGVyRWZmZWN0OjppbWFn
ZUJ1ZmZlclJlc3VsdCgpCiAgICAgaWYgKG1faW1hZ2VCdWZmZXJSZXN1bHQpCiAgICAgICAgIHJl
dHVybiBtX2ltYWdlQnVmZmVyUmVzdWx0LmdldCgpOwogCi0gICAgbV9pbWFnZUJ1ZmZlclJlc3Vs
dCA9IEltYWdlQnVmZmVyOjpjcmVhdGUobV9hYnNvbHV0ZVBhaW50UmVjdC5zaXplKCksIG1fZmls
dGVyLnJlbmRlcmluZ01vZGUoKSwgMSwgbV9yZXN1bHRDb2xvclNwYWNlLCBQaXhlbEZvcm1hdDo6
QkdSQTgpOworICAgIG1faW1hZ2VCdWZmZXJSZXN1bHQgPSBJbWFnZUJ1ZmZlcjo6Y3JlYXRlKG1f
YWJzb2x1dGVQYWludFJlY3Quc2l6ZSgpLCBSZW5kZXJpbmdNb2RlOjpVbmFjY2VsZXJhdGVkLCAx
LCBtX3Jlc3VsdENvbG9yU3BhY2UsIFBpeGVsRm9ybWF0OjpCR1JBOCk7CiAgICAgaWYgKCFtX2lt
YWdlQnVmZmVyUmVzdWx0KQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIApAQCAtNDIyLDcgKzQy
MSw3IEBAIHN0ZDo6b3B0aW9uYWw8UGl4ZWxCdWZmZXI+IEZpbHRlckVmZmVjdDo6Y29udmVydFBp
eGVsQnVmZmVyVG9Db2xvclNwYWNlKGNvbnN0IERlCiAgICAgSW50UmVjdCBkZXN0aW5hdGlvblJl
Y3QoSW50UG9pbnQoKSwgcGl4ZWxCdWZmZXIuc2l6ZSgpKTsKICAgICBGbG9hdFNpemUgY2xhbXBl
ZFNpemUgPSBJbWFnZUJ1ZmZlcjo6Y2xhbXBlZFNpemUoZGVzdGluYXRpb25SZWN0LnNpemUoKSk7
CiAgICAgLy8gQ3JlYXRlIGFuIEltYWdlQnVmZmVyIHRvIHN0b3JlIGluY29taW5nIFBpeGVsQnVm
ZmVyCi0gICAgYXV0byBidWZmZXIgPSBJbWFnZUJ1ZmZlcjo6Y3JlYXRlKGNsYW1wZWRTaXplLCBt
X2ZpbHRlci5yZW5kZXJpbmdNb2RlKCksIDEsIG9wZXJhdGluZ0NvbG9yU3BhY2UoKSwgUGl4ZWxG
b3JtYXQ6OkJHUkE4KTsKKyAgICBhdXRvIGJ1ZmZlciA9IEltYWdlQnVmZmVyOjpjcmVhdGUoY2xh
bXBlZFNpemUsIFJlbmRlcmluZ01vZGU6OlVuYWNjZWxlcmF0ZWQsIDEsIG9wZXJhdGluZ0NvbG9y
U3BhY2UoKSwgUGl4ZWxGb3JtYXQ6OkJHUkE4KTsKICAgICBpZiAoIWJ1ZmZlcikKICAgICAgICAg
cmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICBidWZmZXItPnB1dFBpeGVsQnVmZmVyKHBpeGVsQnVm
ZmVyLCBkZXN0aW5hdGlvblJlY3QpOwpAQCAtNDM2LDcgKzQzNSw3IEBAIHN0ZDo6b3B0aW9uYWw8
UGl4ZWxCdWZmZXI+IEZpbHRlckVmZmVjdDo6Y29udmVydEltYWdlQnVmZmVyVG9Db2xvclNwYWNl
KGNvbnN0IERlCiAgICAgRmxvYXRTaXplIGNsYW1wZWRTaXplID0gSW1hZ2VCdWZmZXI6OmNsYW1w
ZWRTaXplKHJlY3Quc2l6ZSgpKTsKIAogICAgIC8vIENyZWF0ZSBhbiBJbWFnZUJ1ZmZlciB3aXRo
IHRoZSBjb3JyZWN0IGNvbG9yIHNwYWNlIGFuZCB1dGlsaXplIENHIHRvIGhhbmRsZSBjb2xvciBz
cGFjZSBjb252ZXJzaW9uCi0gICAgYXV0byBjb252ZXJ0ZWRCdWZmZXIgPSBJbWFnZUJ1ZmZlcjo6
Y3JlYXRlKGNsYW1wZWRTaXplLCBtX2ZpbHRlci5yZW5kZXJpbmdNb2RlKCksIDEsIHRhcmdldENv
bG9yU3BhY2UsIFBpeGVsRm9ybWF0OjpCR1JBOCk7CisgICAgYXV0byBjb252ZXJ0ZWRCdWZmZXIg
PSBJbWFnZUJ1ZmZlcjo6Y3JlYXRlKGNsYW1wZWRTaXplLCBSZW5kZXJpbmdNb2RlOjpVbmFjY2Vs
ZXJhdGVkLCAxLCB0YXJnZXRDb2xvclNwYWNlLCBQaXhlbEZvcm1hdDo6QkdSQTgpOwogICAgIGlm
ICghY29udmVydGVkQnVmZmVyKQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCkBAIC01
NTMsNyArNTUyLDcgQEAgSW1hZ2VCdWZmZXIqIEZpbHRlckVmZmVjdDo6Y3JlYXRlSW1hZ2VCdWZm
ZXJSZXN1bHQoKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAogICAgIEZsb2F0U2l6ZSBjbGFt
cGVkU2l6ZSA9IEltYWdlQnVmZmVyOjpjbGFtcGVkU2l6ZShtX2Fic29sdXRlUGFpbnRSZWN0LnNp
emUoKSk7Ci0gICAgbV9pbWFnZUJ1ZmZlclJlc3VsdCA9IEltYWdlQnVmZmVyOjpjcmVhdGUoY2xh
bXBlZFNpemUsIG1fZmlsdGVyLnJlbmRlcmluZ01vZGUoKSwgMSwgbV9yZXN1bHRDb2xvclNwYWNl
LCBQaXhlbEZvcm1hdDo6QkdSQTgpOworICAgIG1faW1hZ2VCdWZmZXJSZXN1bHQgPSBJbWFnZUJ1
ZmZlcjo6Y3JlYXRlKGNsYW1wZWRTaXplLCBSZW5kZXJpbmdNb2RlOjpVbmFjY2VsZXJhdGVkLCAx
LCBtX3Jlc3VsdENvbG9yU3BhY2UsIFBpeGVsRm9ybWF0OjpCR1JBOCk7CiAgICAgcmV0dXJuIG1f
aW1hZ2VCdWZmZXJSZXN1bHQuZ2V0KCk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRmlsdGVyRWZmZWN0LmggYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZpbHRlckVmZmVjdC5oCmluZGV4IDY2NzYwMGQz
MDJjOGZjOWI1YThmNGYxZmM4ZjBjNTY5Y2JlMmE3YjIuLjkyOGJjYjQ4Y2QyMTllYjFlZTQ1Mjk3
YjU5NzRiYjYzZTA5N2U5NWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2ZpbHRlcnMvRmlsdGVyRWZmZWN0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvZmlsdGVycy9GaWx0ZXJFZmZlY3QuaApAQCAtNzIsNyArNzIsNyBAQCBwdWJs
aWM6CiAgICAgSW50UmVjdCByZXF1ZXN0ZWRSZWdpb25PZklucHV0UGl4ZWxCdWZmZXIoY29uc3Qg
SW50UmVjdCYpIGNvbnN0OwogICAgIAogICAgIC8vIFJlY3Vyc2VzIG9uIGlucHV0cy4KLSAgICBG
bG9hdFJlY3QgZGV0ZXJtaW5lRmlsdGVyUHJpbWl0aXZlU3VicmVnaW9uKCk7CisgICAgRmxvYXRS
ZWN0IGRldGVybWluZUZpbHRlclByaW1pdGl2ZVN1YnJlZ2lvbihjb25zdCBGaWx0ZXImKTsKIAog
ICAgIC8vIFNvbGlkIGJsYWNrIGltYWdlIHdpdGggZGlmZmVyZW50IGFscGhhIHZhbHVlcy4KICAg
ICBib29sIGlzQWxwaGFJbWFnZSgpIGNvbnN0IHsgcmV0dXJuIG1fYWxwaGFJbWFnZTsgfQpAQCAt
ODQsMTQgKzg0LDE0IEBAIHB1YmxpYzoKICAgICBGbG9hdFJlY3QgbWF4RWZmZWN0UmVjdCgpIGNv
bnN0IHsgcmV0dXJuIG1fbWF4RWZmZWN0UmVjdDsgfQogICAgIHZvaWQgc2V0TWF4RWZmZWN0UmVj
dChjb25zdCBGbG9hdFJlY3QmIG1heEVmZmVjdFJlY3QpIHsgbV9tYXhFZmZlY3RSZWN0ID0gbWF4
RWZmZWN0UmVjdDsgfQogCi0gICAgdm9pZCBhcHBseSgpOworICAgIHZvaWQgYXBwbHkoY29uc3Qg
RmlsdGVyJik7CiAKICAgICAvLyBDb3JyZWN0IGFueSBpbnZhbGlkIHBpeGVscywgaWYgbmVjZXNz
YXJ5LCBpbiB0aGUgcmVzdWx0IG9mIGEgZmlsdGVyIG9wZXJhdGlvbi4KICAgICAvLyBUaGlzIG1l
dGhvZCBpcyB1c2VkIHRvIGVuc3VyZSB2YWxpZCBwaXhlbCB2YWx1ZXMgb24gZmlsdGVyIGlucHV0
cyBhbmQgdGhlIGZpbmFsIHJlc3VsdC4KICAgICAvLyBPbmx5IHRoZSBhcml0aG1ldGljIGNvbXBv
c2l0ZSBmaWx0ZXIgZXZlciBuZWVkcyB0byBwZXJmb3JtIGNvcnJlY3Rpb24uCiAgICAgdmlydHVh
bCB2b2lkIGNvcnJlY3RGaWx0ZXJSZXN1bHRJZk5lZWRlZCgpIHsgfQogCi0gICAgdmlydHVhbCB2
b2lkIGRldGVybWluZUFic29sdXRlUGFpbnRSZWN0KCk7CisgICAgdmlydHVhbCB2b2lkIGRldGVy
bWluZUFic29sdXRlUGFpbnRSZWN0KGNvbnN0IEZpbHRlciYpOwogCiAgICAgZW51bSBjbGFzcyBS
ZXByZXNlbnRhdGlvblR5cGUgeyBUZXN0T3V0cHV0LCBEZWJ1Z2dpbmcgfTsKICAgICB2aXJ0dWFs
IFdURjo6VGV4dFN0cmVhbSYgZXh0ZXJuYWxSZXByZXNlbnRhdGlvbihXVEY6OlRleHRTdHJlYW0m
LCBSZXByZXNlbnRhdGlvblR5cGUgPSBSZXByZXNlbnRhdGlvblR5cGU6OlRlc3RPdXRwdXQpIGNv
bnN0OwpAQCAtMTIwLDkgKzEyMCw2IEBAIHB1YmxpYzoKICAgICAKICAgICBGbG9hdFBvaW50IG1h
cFBvaW50RnJvbVVzZXJTcGFjZVRvQnVmZmVyKEZsb2F0UG9pbnQpIGNvbnN0OwogICAgIAotICAg
IEZpbHRlciYgZmlsdGVyKCkgeyByZXR1cm4gbV9maWx0ZXI7IH0KLSAgICBjb25zdCBGaWx0ZXIm
IGZpbHRlcigpIGNvbnN0IHsgcmV0dXJuIG1fZmlsdGVyOyB9Ci0KICAgICBib29sIGNsaXBzVG9C
b3VuZHMoKSBjb25zdCB7IHJldHVybiBtX2NsaXBzVG9Cb3VuZHM7IH0KICAgICB2b2lkIHNldENs
aXBzVG9Cb3VuZHMoYm9vbCB2YWx1ZSkgeyBtX2NsaXBzVG9Cb3VuZHMgPSB2YWx1ZTsgfQogCkBA
IC0xNDMsNyArMTQwLDcgQEAgcHVibGljOgogICAgIH0KIAogcHJvdGVjdGVkOgotICAgIEZpbHRl
ckVmZmVjdChGaWx0ZXImLCBUeXBlKTsKKyAgICBGaWx0ZXJFZmZlY3QoVHlwZSk7CiAgICAgCiAg
ICAgSW1hZ2VCdWZmZXIqIGNyZWF0ZUltYWdlQnVmZmVyUmVzdWx0KCk7CiAgICAgc3RkOjpvcHRp
b25hbDxQaXhlbEJ1ZmZlcj4mIGNyZWF0ZVVubXVsdGlwbGllZEltYWdlUmVzdWx0KCk7CkBAIC0x
NTksNyArMTU2LDcgQEAgcHJvdGVjdGVkOgogICAgIHZvaWQgY2xpcEFic29sdXRlUGFpbnRSZWN0
KCk7CiAKIHByaXZhdGU6Ci0gICAgdmlydHVhbCB2b2lkIHBsYXRmb3JtQXBwbHlTb2Z0d2FyZSgp
ID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgcGxhdGZvcm1BcHBseVNvZnR3YXJlKGNvbnN0IEZpbHRl
ciYpID0gMDsKIAogICAgIHZvaWQgY29weUltYWdlQnl0ZXMoY29uc3QgVWludDhDbGFtcGVkQXJy
YXkmIHNvdXJjZSwgVWludDhDbGFtcGVkQXJyYXkmIGRlc3RpbmF0aW9uLCBjb25zdCBJbnRSZWN0
JikgY29uc3Q7CiAgICAgdm9pZCBjb3B5Q29udmVydGVkSW1hZ2VCdWZmZXJUb0Rlc3RpbmF0aW9u
KFVpbnQ4Q2xhbXBlZEFycmF5JiwgY29uc3QgRGVzdGluYXRpb25Db2xvclNwYWNlJiwgQWxwaGFQ
cmVtdWx0aXBsaWNhdGlvbiwgY29uc3QgSW50UmVjdCYpOwpAQCAtMTY4LDggKzE2NSw2IEBAIHBy
aXZhdGU6CiAgICAgc3RkOjpvcHRpb25hbDxQaXhlbEJ1ZmZlcj4gY29udmVydEltYWdlQnVmZmVy
VG9Db2xvclNwYWNlKGNvbnN0IERlc3RpbmF0aW9uQ29sb3JTcGFjZSYsIEltYWdlQnVmZmVyJiwg
Y29uc3QgSW50UmVjdCYsIEFscGhhUHJlbXVsdGlwbGljYXRpb24pOwogICAgIHN0ZDo6b3B0aW9u
YWw8UGl4ZWxCdWZmZXI+IGNvbnZlcnRQaXhlbEJ1ZmZlclRvQ29sb3JTcGFjZShjb25zdCBEZXN0
aW5hdGlvbkNvbG9yU3BhY2UmLCBQaXhlbEJ1ZmZlciYpOwogICAgIAotCi0gICAgRmlsdGVyJiBt
X2ZpbHRlcjsKICAgICBGaWx0ZXJFZmZlY3RWZWN0b3IgbV9pbnB1dEVmZmVjdHM7CiAKICAgICBS
ZWZQdHI8SW1hZ2VCdWZmZXI+IG1faW1hZ2VCdWZmZXJSZXN1bHQ7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZpbHRlckVmZmVjdFJlbmRlcmVy
LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZpbHRlckVmZmVj
dFJlbmRlcmVyLmgKaW5kZXggNTZiZTI0NzM2MWY1M2IzYzA5ZWNiNTcxMzIyYjc1YTc1NzNlOWNj
NC4uNTljZjdkZmUzNDM2MTFmYjFhNmYyNjUyZjY2MGI2YzBiODE5MDU3YiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GaWx0ZXJFZmZlY3RSZW5k
ZXJlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRmls
dGVyRWZmZWN0UmVuZGVyZXIuaApAQCAtMzYsNyArMzYsNyBAQCBjbGFzcyBGaWx0ZXJFZmZlY3RS
ZW5kZXJlciB7CiAgICAgCiBwdWJsaWM6CiAgICAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxGaWx0
ZXJFZmZlY3RSZW5kZXJlcj4gdHJ5Q3JlYXRlKGJvb2wsIEZpbHRlckVmZmVjdCYpOwotICAgIHZp
cnR1YWwgdm9pZCBhcHBseUVmZmVjdHMoRmlsdGVyRWZmZWN0JikgPSAwOworICAgIHZpcnR1YWwg
dm9pZCBhcHBseUVmZmVjdHMoY29uc3QgRmlsdGVyJiwgRmlsdGVyRWZmZWN0JikgPSAwOwogICAg
IHZpcnR1YWwgYm9vbCBoYXNSZXN1bHQoKSBjb25zdCA9IDA7CiAgICAgdmlydHVhbCBJbWFnZUJ1
ZmZlciogb3V0cHV0KCkgY29uc3QgPSAwOwogICAgIHZpcnR1YWwgRmxvYXRSZWN0IGRlc3RSZWN0
KGNvbnN0IEZpbHRlckVmZmVjdCYpIGNvbnN0ID0gMDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvU291cmNlQWxwaGEuY3BwIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9Tb3VyY2VBbHBoYS5jcHAKaW5kZXggOTk2
OTQzNzI1NzkzZTk5NjQ2ZmMzZTViMjJhZDE1MWZiZGZkZTljYS4uZTEwNGE4ZDIwODYwZWY4MDI5
YWY3M2FlOTEzYTk0N2VlMWNlNjg3YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvZmlsdGVycy9Tb3VyY2VBbHBoYS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9Tb3VyY2VBbHBoYS5jcHAKQEAgLTMzLDE5ICszMywx
OSBAQCBSZWY8U291cmNlQWxwaGE+IFNvdXJjZUFscGhhOjpjcmVhdGUoRmlsdGVyRWZmZWN0JiBz
b3VyY2VFZmZlY3QpCiB9CiAKIFNvdXJjZUFscGhhOjpTb3VyY2VBbHBoYShGaWx0ZXJFZmZlY3Qm
IHNvdXJjZUVmZmVjdCkKLSAgICA6IEZpbHRlckVmZmVjdChzb3VyY2VFZmZlY3QuZmlsdGVyKCks
IEZpbHRlckVmZmVjdDo6VHlwZTo6U291cmNlQWxwaGEpCisgICAgOiBGaWx0ZXJFZmZlY3QoRmls
dGVyRWZmZWN0OjpUeXBlOjpTb3VyY2VBbHBoYSkKIHsKICAgICBzZXRPcGVyYXRpbmdDb2xvclNw
YWNlKHNvdXJjZUVmZmVjdC5vcGVyYXRpbmdDb2xvclNwYWNlKCkpOwogICAgIGlucHV0RWZmZWN0
cygpLmFwcGVuZCgmc291cmNlRWZmZWN0KTsKIH0KIAotdm9pZCBTb3VyY2VBbHBoYTo6ZGV0ZXJt
aW5lQWJzb2x1dGVQYWludFJlY3QoKQordm9pZCBTb3VyY2VBbHBoYTo6ZGV0ZXJtaW5lQWJzb2x1
dGVQYWludFJlY3QoY29uc3QgRmlsdGVyJiBmaWx0ZXIpCiB7Ci0gICAgaW5wdXRFZmZlY3QoMCkt
PmRldGVybWluZUFic29sdXRlUGFpbnRSZWN0KCk7CisgICAgaW5wdXRFZmZlY3QoMCktPmRldGVy
bWluZUFic29sdXRlUGFpbnRSZWN0KGZpbHRlcik7CiAgICAgc2V0QWJzb2x1dGVQYWludFJlY3Qo
aW5wdXRFZmZlY3QoMCktPmFic29sdXRlUGFpbnRSZWN0KCkpOwogfQogCi12b2lkIFNvdXJjZUFs
cGhhOjpwbGF0Zm9ybUFwcGx5U29mdHdhcmUoKQordm9pZCBTb3VyY2VBbHBoYTo6cGxhdGZvcm1B
cHBseVNvZnR3YXJlKGNvbnN0IEZpbHRlciYpCiB7CiAgICAgSW1hZ2VCdWZmZXIqIHJlc3VsdElt
YWdlID0gY3JlYXRlSW1hZ2VCdWZmZXJSZXN1bHQoKTsKICAgICBpZiAoIXJlc3VsdEltYWdlKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9Tb3Vy
Y2VBbHBoYS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9Tb3Vy
Y2VBbHBoYS5oCmluZGV4IDRiYmRlMDdmNzhlMzVkMjViNGY0ZDQ5YzZiNjI1ZjFlMTAyYTU0MzIu
LjhkYTZmZmRiZDIwMWQ0NjkyMThmOTM3MjAxNzk4NjYzYTBmOTNmYTQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvU291cmNlQWxwaGEuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL1NvdXJjZUFscGhhLmgK
QEAgLTMyLDggKzMyLDEwIEBAIHB1YmxpYzoKIHByaXZhdGU6CiAgICAgZXhwbGljaXQgU291cmNl
QWxwaGEoRmlsdGVyRWZmZWN0Jik7CiAKLSAgICB2b2lkIHBsYXRmb3JtQXBwbHlTb2Z0d2FyZSgp
IG92ZXJyaWRlOwotICAgIHZvaWQgZGV0ZXJtaW5lQWJzb2x1dGVQYWludFJlY3QoKSBvdmVycmlk
ZTsKKyAgICB2b2lkIGRldGVybWluZUFic29sdXRlUGFpbnRSZWN0KGNvbnN0IEZpbHRlciYpIG92
ZXJyaWRlOworCisgICAgdm9pZCBwbGF0Zm9ybUFwcGx5U29mdHdhcmUoY29uc3QgRmlsdGVyJikg
b3ZlcnJpZGU7CisKICAgICBXVEY6OlRleHRTdHJlYW0mIGV4dGVybmFsUmVwcmVzZW50YXRpb24o
V1RGOjpUZXh0U3RyZWFtJiwgUmVwcmVzZW50YXRpb25UeXBlKSBjb25zdCBvdmVycmlkZTsKIH07
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMv
U291cmNlR3JhcGhpYy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0
ZXJzL1NvdXJjZUdyYXBoaWMuY3BwCmluZGV4IGUxMjNkY2Q4ZmYyMWRkYzc3MzNlNTdlNTE1ZWYz
MTFlN2M5MDE1ODAuLjRhOGEyNzQ4YmRlOWMxMzU5ZTU5NDVkODEwZTRjMGNjNjZiODBiMzUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvU291cmNl
R3JhcGhpYy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVy
cy9Tb3VyY2VHcmFwaGljLmNwcApAQCAtMjYsMjIgKzI2LDI1IEBACiAKIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIAotUmVmPFNvdXJjZUdyYXBoaWM+IFNvdXJjZUdyYXBoaWM6OmNyZWF0ZShGaWx0ZXIm
IGZpbHRlcikKK1JlZjxTb3VyY2VHcmFwaGljPiBTb3VyY2VHcmFwaGljOjpjcmVhdGUoKQogewot
ICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFNvdXJjZUdyYXBoaWMoZmlsdGVyKSk7CisgICAgcmV0
dXJuIGFkb3B0UmVmKCpuZXcgU291cmNlR3JhcGhpYygpKTsKIH0KIAotdm9pZCBTb3VyY2VHcmFw
aGljOjpkZXRlcm1pbmVBYnNvbHV0ZVBhaW50UmVjdCgpCitTb3VyY2VHcmFwaGljOjpTb3VyY2VH
cmFwaGljKCkKKyAgICA6IEZpbHRlckVmZmVjdChGaWx0ZXJFZmZlY3Q6OlR5cGU6OlNvdXJjZUdy
YXBoaWMpCit7CisgICAgc2V0T3BlcmF0aW5nQ29sb3JTcGFjZShEZXN0aW5hdGlvbkNvbG9yU3Bh
Y2U6OlNSR0IoKSk7Cit9CisKK3ZvaWQgU291cmNlR3JhcGhpYzo6ZGV0ZXJtaW5lQWJzb2x1dGVQ
YWludFJlY3QoY29uc3QgRmlsdGVyJiBmaWx0ZXIpCiB7Ci0gICAgRmlsdGVyJiBmaWx0ZXIgPSB0
aGlzLT5maWx0ZXIoKTsKICAgICBGbG9hdFJlY3QgcGFpbnRSZWN0ID0gZmlsdGVyLnNvdXJjZUlt
YWdlUmVjdCgpOwogICAgIHNldEFic29sdXRlUGFpbnRSZWN0KGVuY2xvc2luZ0ludFJlY3QocGFp
bnRSZWN0KSk7CiB9CiAKLXZvaWQgU291cmNlR3JhcGhpYzo6cGxhdGZvcm1BcHBseVNvZnR3YXJl
KCkKK3ZvaWQgU291cmNlR3JhcGhpYzo6cGxhdGZvcm1BcHBseVNvZnR3YXJlKGNvbnN0IEZpbHRl
ciYgZmlsdGVyKQogewotICAgIEZpbHRlciYgZmlsdGVyID0gdGhpcy0+ZmlsdGVyKCk7Ci0KICAg
ICBJbWFnZUJ1ZmZlciogcmVzdWx0SW1hZ2UgPSBjcmVhdGVJbWFnZUJ1ZmZlclJlc3VsdCgpOwog
ICAgIEltYWdlQnVmZmVyKiBzb3VyY2VJbWFnZSA9IGZpbHRlci5zb3VyY2VJbWFnZSgpOwogICAg
IGlmICghcmVzdWx0SW1hZ2UgfHwgIXNvdXJjZUltYWdlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9Tb3VyY2VHcmFwaGljLmggYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL1NvdXJjZUdyYXBoaWMuaAppbmRleCA1
ZjhiY2UxYjQ4ODY3NDY2MWUyOWMzYjhhMzk2Yjc1OGRiNDY0M2FiLi44NzIxMGIyY2YxNjJhMjZi
NDhhMWUwNDkyNzJlNjI2YTQzYzY0ZjdmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9maWx0ZXJzL1NvdXJjZUdyYXBoaWMuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL1NvdXJjZUdyYXBoaWMuaApAQCAtMjYsMTkgKzI2
LDE3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgU291cmNlR3JhcGhpYyA6IHB1Ymxp
YyBGaWx0ZXJFZmZlY3QgewogcHVibGljOiAgICAgICAgCi0gICAgc3RhdGljIFJlZjxTb3VyY2VH
cmFwaGljPiBjcmVhdGUoRmlsdGVyJik7CisgICAgc3RhdGljIFJlZjxTb3VyY2VHcmFwaGljPiBj
cmVhdGUoKTsKIAogICAgIHN0YXRpYyBBdG9tU3RyaW5nIGVmZmVjdE5hbWUoKSB7IHJldHVybiBG
aWx0ZXJFZmZlY3Q6OnNvdXJjZUdyYXBoaWNOYW1lKCk7IH0KIAogcHJpdmF0ZToKLSAgICBTb3Vy
Y2VHcmFwaGljKEZpbHRlciYgZmlsdGVyKQotICAgICAgICA6IEZpbHRlckVmZmVjdChmaWx0ZXIs
IEZpbHRlckVmZmVjdDo6VHlwZTo6U291cmNlR3JhcGhpYykKLSAgICB7Ci0gICAgICAgIHNldE9w
ZXJhdGluZ0NvbG9yU3BhY2UoRGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdCKCkpOwotICAgIH0K
LQotICAgIHZvaWQgZGV0ZXJtaW5lQWJzb2x1dGVQYWludFJlY3QoKSBvdmVycmlkZTsKLSAgICB2
b2lkIHBsYXRmb3JtQXBwbHlTb2Z0d2FyZSgpIG92ZXJyaWRlOworICAgIFNvdXJjZUdyYXBoaWMo
KTsKKworICAgIHZvaWQgZGV0ZXJtaW5lQWJzb2x1dGVQYWludFJlY3QoY29uc3QgRmlsdGVyJikg
b3ZlcnJpZGU7CisKKyAgICB2b2lkIHBsYXRmb3JtQXBwbHlTb2Z0d2FyZShjb25zdCBGaWx0ZXIm
KSBvdmVycmlkZTsKKwogICAgIFdURjo6VGV4dFN0cmVhbSYgZXh0ZXJuYWxSZXByZXNlbnRhdGlv
bihXVEY6OlRleHRTdHJlYW0mLCBSZXByZXNlbnRhdGlvblR5cGUpIGNvbnN0IG92ZXJyaWRlOwog
fTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0NTU0ZpbHRlci5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvQ1NTRmlsdGVyLmNwcAppbmRleCBmMmQxNzFjYmM2
NmY3NTlmYjMwNmEyZTE5YWY1NDI0MWRhZjYzMjJkLi5jYjlmNTNiNjRhZDA5YjIwOGI1N2U1Y2Zl
NDQzOTQzMmEwYTc1MzNmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvQ1NT
RmlsdGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvQ1NTRmlsdGVyLmNwcApA
QCAtNjQsMTMgKzY0LDEzIEBAIENTU0ZpbHRlcjo6Q1NTRmlsdGVyKGJvb2wgaGFzRmlsdGVyVGhh
dE1vdmVzUGl4ZWxzLCBib29sIGhhc0ZpbHRlclRoYXRTaG91bGRCZVJlCiB7CiB9CiAKLXN0YXRp
YyBSZWZQdHI8RmlsdGVyRWZmZWN0PiBjcmVhdGVCbHVyRWZmZWN0KENTU0ZpbHRlciYgZmlsdGVy
LCBjb25zdCBCbHVyRmlsdGVyT3BlcmF0aW9uJiBibHVyT3BlcmF0aW9uLCBGaWx0ZXJDb25zdW1l
ciBjb25zdW1lcikKK3N0YXRpYyBSZWZQdHI8RmlsdGVyRWZmZWN0PiBjcmVhdGVCbHVyRWZmZWN0
KGNvbnN0IEJsdXJGaWx0ZXJPcGVyYXRpb24mIGJsdXJPcGVyYXRpb24sIEZpbHRlckNvbnN1bWVy
IGNvbnN1bWVyKQogewogICAgIGZsb2F0IHN0ZERldmlhdGlvbiA9IGZsb2F0VmFsdWVGb3JMZW5n
dGgoYmx1ck9wZXJhdGlvbi5zdGREZXZpYXRpb24oKSwgMCk7Ci0gICAgcmV0dXJuIEZFR2F1c3Np
YW5CbHVyOjpjcmVhdGUoZmlsdGVyLCBzdGREZXZpYXRpb24sIHN0ZERldmlhdGlvbiwgY29uc3Vt
ZXIgPT0gRmlsdGVyQ29uc3VtZXI6OkZpbHRlclByb3BlcnR5ID8gRURHRU1PREVfTk9ORSA6IEVE
R0VNT0RFX0RVUExJQ0FURSk7CisgICAgcmV0dXJuIEZFR2F1c3NpYW5CbHVyOjpjcmVhdGUoc3Rk
RGV2aWF0aW9uLCBzdGREZXZpYXRpb24sIGNvbnN1bWVyID09IEZpbHRlckNvbnN1bWVyOjpGaWx0
ZXJQcm9wZXJ0eSA/IEVER0VNT0RFX05PTkUgOiBFREdFTU9ERV9EVVBMSUNBVEUpOwogfQogCi1z
dGF0aWMgUmVmUHRyPEZpbHRlckVmZmVjdD4gY3JlYXRlQnJpZ2h0bmVzc0VmZmVjdChDU1NGaWx0
ZXImIGZpbHRlciwgY29uc3QgQmFzaWNDb21wb25lbnRUcmFuc2ZlckZpbHRlck9wZXJhdGlvbiYg
Y29tcG9uZW50VHJhbnNmZXJPcGVyYXRpb24pCitzdGF0aWMgUmVmUHRyPEZpbHRlckVmZmVjdD4g
Y3JlYXRlQnJpZ2h0bmVzc0VmZmVjdChjb25zdCBCYXNpY0NvbXBvbmVudFRyYW5zZmVyRmlsdGVy
T3BlcmF0aW9uJiBjb21wb25lbnRUcmFuc2Zlck9wZXJhdGlvbikKIHsKICAgICBDb21wb25lbnRU
cmFuc2ZlckZ1bmN0aW9uIHRyYW5zZmVyRnVuY3Rpb247CiAgICAgdHJhbnNmZXJGdW5jdGlvbi50
eXBlID0gRkVDT01QT05FTlRUUkFOU0ZFUl9UWVBFX0xJTkVBUjsKQEAgLTc4LDEwICs3OCwxMCBA
QCBzdGF0aWMgUmVmUHRyPEZpbHRlckVmZmVjdD4gY3JlYXRlQnJpZ2h0bmVzc0VmZmVjdChDU1NG
aWx0ZXImIGZpbHRlciwgY29uc3QgQmFzaQogICAgIHRyYW5zZmVyRnVuY3Rpb24uaW50ZXJjZXB0
ID0gMDsKIAogICAgIENvbXBvbmVudFRyYW5zZmVyRnVuY3Rpb24gbnVsbEZ1bmN0aW9uOwotICAg
IHJldHVybiBGRUNvbXBvbmVudFRyYW5zZmVyOjpjcmVhdGUoZmlsdGVyLCB0cmFuc2ZlckZ1bmN0
aW9uLCB0cmFuc2ZlckZ1bmN0aW9uLCB0cmFuc2ZlckZ1bmN0aW9uLCBudWxsRnVuY3Rpb24pOwor
ICAgIHJldHVybiBGRUNvbXBvbmVudFRyYW5zZmVyOjpjcmVhdGUodHJhbnNmZXJGdW5jdGlvbiwg
dHJhbnNmZXJGdW5jdGlvbiwgdHJhbnNmZXJGdW5jdGlvbiwgbnVsbEZ1bmN0aW9uKTsKIH0KIAot
c3RhdGljIFJlZlB0cjxGaWx0ZXJFZmZlY3Q+IGNyZWF0ZUNvbnRyYXN0RWZmZWN0KENTU0ZpbHRl
ciYgZmlsdGVyLCBjb25zdCBCYXNpY0NvbXBvbmVudFRyYW5zZmVyRmlsdGVyT3BlcmF0aW9uJiBj
b21wb25lbnRUcmFuc2Zlck9wZXJhdGlvbikKK3N0YXRpYyBSZWZQdHI8RmlsdGVyRWZmZWN0PiBj
cmVhdGVDb250cmFzdEVmZmVjdChjb25zdCBCYXNpY0NvbXBvbmVudFRyYW5zZmVyRmlsdGVyT3Bl
cmF0aW9uJiBjb21wb25lbnRUcmFuc2Zlck9wZXJhdGlvbikKIHsKICAgICBDb21wb25lbnRUcmFu
c2ZlckZ1bmN0aW9uIHRyYW5zZmVyRnVuY3Rpb247CiAgICAgdHJhbnNmZXJGdW5jdGlvbi50eXBl
ID0gRkVDT01QT05FTlRUUkFOU0ZFUl9UWVBFX0xJTkVBUjsKQEAgLTkwLDE2ICs5MCwxNiBAQCBz
dGF0aWMgUmVmUHRyPEZpbHRlckVmZmVjdD4gY3JlYXRlQ29udHJhc3RFZmZlY3QoQ1NTRmlsdGVy
JiBmaWx0ZXIsIGNvbnN0IEJhc2ljQwogICAgIHRyYW5zZmVyRnVuY3Rpb24uaW50ZXJjZXB0ID0g
LTAuNSAqIGFtb3VudCArIDAuNTsKIAogICAgIENvbXBvbmVudFRyYW5zZmVyRnVuY3Rpb24gbnVs
bEZ1bmN0aW9uOwotICAgIHJldHVybiBGRUNvbXBvbmVudFRyYW5zZmVyOjpjcmVhdGUoZmlsdGVy
LCB0cmFuc2ZlckZ1bmN0aW9uLCB0cmFuc2ZlckZ1bmN0aW9uLCB0cmFuc2ZlckZ1bmN0aW9uLCBu
dWxsRnVuY3Rpb24pOworICAgIHJldHVybiBGRUNvbXBvbmVudFRyYW5zZmVyOjpjcmVhdGUodHJh
bnNmZXJGdW5jdGlvbiwgdHJhbnNmZXJGdW5jdGlvbiwgdHJhbnNmZXJGdW5jdGlvbiwgbnVsbEZ1
bmN0aW9uKTsKIH0KIAotc3RhdGljIFJlZlB0cjxGaWx0ZXJFZmZlY3Q+IGNyZWF0ZURyb3BTaGFk
b3dFZmZlY3QoQ1NTRmlsdGVyJiBmaWx0ZXIsIGNvbnN0IERyb3BTaGFkb3dGaWx0ZXJPcGVyYXRp
b24mIGRyb3BTaGFkb3dPcGVyYXRpb24pCitzdGF0aWMgUmVmUHRyPEZpbHRlckVmZmVjdD4gY3Jl
YXRlRHJvcFNoYWRvd0VmZmVjdChjb25zdCBEcm9wU2hhZG93RmlsdGVyT3BlcmF0aW9uJiBkcm9w
U2hhZG93T3BlcmF0aW9uKQogewogICAgIGZsb2F0IHN0ZCA9IGRyb3BTaGFkb3dPcGVyYXRpb24u
c3RkRGV2aWF0aW9uKCk7Ci0gICAgcmV0dXJuIEZFRHJvcFNoYWRvdzo6Y3JlYXRlKGZpbHRlciwg
c3RkLCBzdGQsIGRyb3BTaGFkb3dPcGVyYXRpb24ueCgpLCBkcm9wU2hhZG93T3BlcmF0aW9uLnko
KSwgZHJvcFNoYWRvd09wZXJhdGlvbi5jb2xvcigpLCAxKTsKKyAgICByZXR1cm4gRkVEcm9wU2hh
ZG93OjpjcmVhdGUoc3RkLCBzdGQsIGRyb3BTaGFkb3dPcGVyYXRpb24ueCgpLCBkcm9wU2hhZG93
T3BlcmF0aW9uLnkoKSwgZHJvcFNoYWRvd09wZXJhdGlvbi5jb2xvcigpLCAxKTsKIH0KIAotc3Rh
dGljIFJlZlB0cjxGaWx0ZXJFZmZlY3Q+IGNyZWF0ZUdyYXlTY2FsZUVmZmVjdChDU1NGaWx0ZXIm
IGZpbHRlciwgY29uc3QgQmFzaWNDb2xvck1hdHJpeEZpbHRlck9wZXJhdGlvbiYgY29sb3JNYXRy
aXhPcGVyYXRpb24pCitzdGF0aWMgUmVmUHRyPEZpbHRlckVmZmVjdD4gY3JlYXRlR3JheVNjYWxl
RWZmZWN0KGNvbnN0IEJhc2ljQ29sb3JNYXRyaXhGaWx0ZXJPcGVyYXRpb24mIGNvbG9yTWF0cml4
T3BlcmF0aW9uKQogewogICAgIGRvdWJsZSBvbmVNaW51c0Ftb3VudCA9IGNsYW1wVG8oMSAtIGNv
bG9yTWF0cml4T3BlcmF0aW9uLmFtb3VudCgpLCAwLjAsIDEuMCk7CiAKQEAgLTEzMiwxNiArMTMy
LDE2IEBAIHN0YXRpYyBSZWZQdHI8RmlsdGVyRWZmZWN0PiBjcmVhdGVHcmF5U2NhbGVFZmZlY3Qo
Q1NTRmlsdGVyJiBmaWx0ZXIsIGNvbnN0IEJhc2ljCiAgICAgICAgIDAsCiAgICAgfTsKIAotICAg
IHJldHVybiBGRUNvbG9yTWF0cml4OjpjcmVhdGUoZmlsdGVyLCBGRUNPTE9STUFUUklYX1RZUEVf
TUFUUklYLCBXVEZNb3ZlKGlucHV0UGFyYW1ldGVycykpOworICAgIHJldHVybiBGRUNvbG9yTWF0
cml4OjpjcmVhdGUoRkVDT0xPUk1BVFJJWF9UWVBFX01BVFJJWCwgV1RGTW92ZShpbnB1dFBhcmFt
ZXRlcnMpKTsKIH0KIAotc3RhdGljIFJlZlB0cjxGaWx0ZXJFZmZlY3Q+IGNyZWF0ZUh1ZVJvdGF0
ZUVmZmVjdChDU1NGaWx0ZXImIGZpbHRlciwgY29uc3QgQmFzaWNDb2xvck1hdHJpeEZpbHRlck9w
ZXJhdGlvbiYgY29sb3JNYXRyaXhPcGVyYXRpb24pCitzdGF0aWMgUmVmUHRyPEZpbHRlckVmZmVj
dD4gY3JlYXRlSHVlUm90YXRlRWZmZWN0KGNvbnN0IEJhc2ljQ29sb3JNYXRyaXhGaWx0ZXJPcGVy
YXRpb24mIGNvbG9yTWF0cml4T3BlcmF0aW9uKQogewogICAgIFZlY3RvcjxmbG9hdD4gaW5wdXRQ
YXJhbWV0ZXJzIHsgbmFycm93UHJlY2lzaW9uVG9GbG9hdChjb2xvck1hdHJpeE9wZXJhdGlvbi5h
bW91bnQoKSkgfTsKLSAgICByZXR1cm4gRkVDb2xvck1hdHJpeDo6Y3JlYXRlKGZpbHRlciwgRkVD
T0xPUk1BVFJJWF9UWVBFX0hVRVJPVEFURSwgV1RGTW92ZShpbnB1dFBhcmFtZXRlcnMpKTsKKyAg
ICByZXR1cm4gRkVDb2xvck1hdHJpeDo6Y3JlYXRlKEZFQ09MT1JNQVRSSVhfVFlQRV9IVUVST1RB
VEUsIFdURk1vdmUoaW5wdXRQYXJhbWV0ZXJzKSk7CiB9CiAKLXN0YXRpYyBSZWZQdHI8RmlsdGVy
RWZmZWN0PiBjcmVhdGVJbnZlcnRFZmZlY3QoQ1NTRmlsdGVyJiBmaWx0ZXIsIGNvbnN0IEJhc2lj
Q29tcG9uZW50VHJhbnNmZXJGaWx0ZXJPcGVyYXRpb24mIGNvbXBvbmVudFRyYW5zZmVyT3BlcmF0
aW9uKQorc3RhdGljIFJlZlB0cjxGaWx0ZXJFZmZlY3Q+IGNyZWF0ZUludmVydEVmZmVjdChjb25z
dCBCYXNpY0NvbXBvbmVudFRyYW5zZmVyRmlsdGVyT3BlcmF0aW9uJiBjb21wb25lbnRUcmFuc2Zl
ck9wZXJhdGlvbikKIHsKICAgICBDb21wb25lbnRUcmFuc2ZlckZ1bmN0aW9uIHRyYW5zZmVyRnVu
Y3Rpb247CiAgICAgdHJhbnNmZXJGdW5jdGlvbi50eXBlID0gRkVDT01QT05FTlRUUkFOU0ZFUl9U
WVBFX0xJTkVBUjsKQEAgLTE1MCwxMCArMTUwLDEwIEBAIHN0YXRpYyBSZWZQdHI8RmlsdGVyRWZm
ZWN0PiBjcmVhdGVJbnZlcnRFZmZlY3QoQ1NTRmlsdGVyJiBmaWx0ZXIsIGNvbnN0IEJhc2ljQ29t
CiAgICAgdHJhbnNmZXJGdW5jdGlvbi5pbnRlcmNlcHQgPSBhbW91bnQ7CiAKICAgICBDb21wb25l
bnRUcmFuc2ZlckZ1bmN0aW9uIG51bGxGdW5jdGlvbjsKLSAgICByZXR1cm4gRkVDb21wb25lbnRU
cmFuc2Zlcjo6Y3JlYXRlKGZpbHRlciwgdHJhbnNmZXJGdW5jdGlvbiwgdHJhbnNmZXJGdW5jdGlv
biwgdHJhbnNmZXJGdW5jdGlvbiwgbnVsbEZ1bmN0aW9uKTsKKyAgICByZXR1cm4gRkVDb21wb25l
bnRUcmFuc2Zlcjo6Y3JlYXRlKHRyYW5zZmVyRnVuY3Rpb24sIHRyYW5zZmVyRnVuY3Rpb24sIHRy
YW5zZmVyRnVuY3Rpb24sIG51bGxGdW5jdGlvbik7CiB9CiAKLXN0YXRpYyBSZWZQdHI8RmlsdGVy
RWZmZWN0PiBjcmVhdGVPcGFjaXR5RWZmZWN0KENTU0ZpbHRlciYgZmlsdGVyLCBjb25zdCBCYXNp
Y0NvbXBvbmVudFRyYW5zZmVyRmlsdGVyT3BlcmF0aW9uJiBjb21wb25lbnRUcmFuc2Zlck9wZXJh
dGlvbikKK3N0YXRpYyBSZWZQdHI8RmlsdGVyRWZmZWN0PiBjcmVhdGVPcGFjaXR5RWZmZWN0KGNv
bnN0IEJhc2ljQ29tcG9uZW50VHJhbnNmZXJGaWx0ZXJPcGVyYXRpb24mIGNvbXBvbmVudFRyYW5z
ZmVyT3BlcmF0aW9uKQogewogICAgIENvbXBvbmVudFRyYW5zZmVyRnVuY3Rpb24gdHJhbnNmZXJG
dW5jdGlvbjsKICAgICB0cmFuc2ZlckZ1bmN0aW9uLnR5cGUgPSBGRUNPTVBPTkVOVFRSQU5TRkVS
X1RZUEVfTElORUFSOwpAQCAtMTYyLDE2ICsxNjIsMTYgQEAgc3RhdGljIFJlZlB0cjxGaWx0ZXJF
ZmZlY3Q+IGNyZWF0ZU9wYWNpdHlFZmZlY3QoQ1NTRmlsdGVyJiBmaWx0ZXIsIGNvbnN0IEJhc2lj
Q28KICAgICB0cmFuc2ZlckZ1bmN0aW9uLmludGVyY2VwdCA9IDA7CiAKICAgICBDb21wb25lbnRU
cmFuc2ZlckZ1bmN0aW9uIG51bGxGdW5jdGlvbjsKLSAgICByZXR1cm4gRkVDb21wb25lbnRUcmFu
c2Zlcjo6Y3JlYXRlKGZpbHRlciwgbnVsbEZ1bmN0aW9uLCBudWxsRnVuY3Rpb24sIG51bGxGdW5j
dGlvbiwgdHJhbnNmZXJGdW5jdGlvbik7CisgICAgcmV0dXJuIEZFQ29tcG9uZW50VHJhbnNmZXI6
OmNyZWF0ZShudWxsRnVuY3Rpb24sIG51bGxGdW5jdGlvbiwgbnVsbEZ1bmN0aW9uLCB0cmFuc2Zl
ckZ1bmN0aW9uKTsKIH0KIAotc3RhdGljIFJlZlB0cjxGaWx0ZXJFZmZlY3Q+IGNyZWF0ZVNhdHVy
YXRlRWZmZWN0KENTU0ZpbHRlciYgZmlsdGVyLCBjb25zdCBCYXNpY0NvbG9yTWF0cml4RmlsdGVy
T3BlcmF0aW9uJiBjb2xvck1hdHJpeE9wZXJhdGlvbikKK3N0YXRpYyBSZWZQdHI8RmlsdGVyRWZm
ZWN0PiBjcmVhdGVTYXR1cmF0ZUVmZmVjdChjb25zdCBCYXNpY0NvbG9yTWF0cml4RmlsdGVyT3Bl
cmF0aW9uJiBjb2xvck1hdHJpeE9wZXJhdGlvbikKIHsKICAgICBWZWN0b3I8ZmxvYXQ+IGlucHV0
UGFyYW1ldGVycyB7IG5hcnJvd1ByZWNpc2lvblRvRmxvYXQoY29sb3JNYXRyaXhPcGVyYXRpb24u
YW1vdW50KCkpIH07Ci0gICAgcmV0dXJuIEZFQ29sb3JNYXRyaXg6OmNyZWF0ZShmaWx0ZXIsIEZF
Q09MT1JNQVRSSVhfVFlQRV9TQVRVUkFURSwgV1RGTW92ZShpbnB1dFBhcmFtZXRlcnMpKTsKKyAg
ICByZXR1cm4gRkVDb2xvck1hdHJpeDo6Y3JlYXRlKEZFQ09MT1JNQVRSSVhfVFlQRV9TQVRVUkFU
RSwgV1RGTW92ZShpbnB1dFBhcmFtZXRlcnMpKTsKIH0KIAotc3RhdGljIFJlZlB0cjxGaWx0ZXJF
ZmZlY3Q+IGNyZWF0ZVNlcGlhRWZmZWN0KENTU0ZpbHRlciYgZmlsdGVyLCBjb25zdCBCYXNpY0Nv
bG9yTWF0cml4RmlsdGVyT3BlcmF0aW9uJiBjb2xvck1hdHJpeE9wZXJhdGlvbikKK3N0YXRpYyBS
ZWZQdHI8RmlsdGVyRWZmZWN0PiBjcmVhdGVTZXBpYUVmZmVjdChjb25zdCBCYXNpY0NvbG9yTWF0
cml4RmlsdGVyT3BlcmF0aW9uJiBjb2xvck1hdHJpeE9wZXJhdGlvbikKIHsKICAgICBkb3VibGUg
b25lTWludXNBbW91bnQgPSBjbGFtcFRvKDEgLSBjb2xvck1hdHJpeE9wZXJhdGlvbi5hbW91bnQo
KSwgMC4wLCAxLjApOwogCkBAIC0yMDQsNyArMjA0LDcgQEAgc3RhdGljIFJlZlB0cjxGaWx0ZXJF
ZmZlY3Q+IGNyZWF0ZVNlcGlhRWZmZWN0KENTU0ZpbHRlciYgZmlsdGVyLCBjb25zdCBCYXNpY0Nv
bG8KICAgICAgICAgMCwKICAgICB9OwogCi0gICAgcmV0dXJuIEZFQ29sb3JNYXRyaXg6OmNyZWF0
ZShmaWx0ZXIsIEZFQ09MT1JNQVRSSVhfVFlQRV9NQVRSSVgsIFdURk1vdmUoaW5wdXRQYXJhbWV0
ZXJzKSk7CisgICAgcmV0dXJuIEZFQ29sb3JNYXRyaXg6OmNyZWF0ZShGRUNPTE9STUFUUklYX1RZ
UEVfTUFUUklYLCBXVEZNb3ZlKGlucHV0UGFyYW1ldGVycykpOwogfQogCiBzdGF0aWMgUmVmUHRy
PFNWR0ZpbHRlcj4gY3JlYXRlU1ZHRmlsdGVyKENTU0ZpbHRlciYgZmlsdGVyLCBjb25zdCBSZWZl
cmVuY2VGaWx0ZXJPcGVyYXRpb24mIGZpbHRlck9wZXJhdGlvbiwgUmVuZGVyRWxlbWVudCYgcmVu
ZGVyZXIsIEZpbHRlckVmZmVjdCYgcHJldmlvdXNFZmZlY3QpCkBAIC0yMzcsNyArMjM3LDcgQEAg
Ym9vbCBDU1NGaWx0ZXI6OmJ1aWxkRmlsdGVyRnVuY3Rpb25zKFJlbmRlckVsZW1lbnQmIHJlbmRl
cmVyLCBjb25zdCBGaWx0ZXJPcGVyYXQKICAgICBtX2Z1bmN0aW9ucy5jbGVhcigpOwogICAgIG1f
b3V0c2V0cyA9IHsgfTsKIAotICAgIFJlZlB0cjxGaWx0ZXJFZmZlY3Q+IHByZXZpb3VzRWZmZWN0
ID0gU291cmNlR3JhcGhpYzo6Y3JlYXRlKCp0aGlzKTsKKyAgICBSZWZQdHI8RmlsdGVyRWZmZWN0
PiBwcmV2aW91c0VmZmVjdCA9IFNvdXJjZUdyYXBoaWM6OmNyZWF0ZSgpOwogICAgIG1fZnVuY3Rp
b25zLmFwcGVuZCh7ICpwcmV2aW91c0VmZmVjdCB9KTsKIAogICAgIFJlZlB0cjxTVkdGaWx0ZXI+
IGZpbHRlcjsKQEAgLTI1MSw0MyArMjUxLDQzIEBAIGJvb2wgQ1NTRmlsdGVyOjpidWlsZEZpbHRl
ckZ1bmN0aW9ucyhSZW5kZXJFbGVtZW50JiByZW5kZXJlciwgY29uc3QgRmlsdGVyT3BlcmF0CiAg
ICAgICAgICAgICBicmVhazsKIAogICAgICAgICBjYXNlIEZpbHRlck9wZXJhdGlvbjo6QkxVUjoK
LSAgICAgICAgICAgIGVmZmVjdCA9IGNyZWF0ZUJsdXJFZmZlY3QoKnRoaXMsIGRvd25jYXN0PEJs
dXJGaWx0ZXJPcGVyYXRpb24+KCpvcGVyYXRpb24pLCBjb25zdW1lcik7CisgICAgICAgICAgICBl
ZmZlY3QgPSBjcmVhdGVCbHVyRWZmZWN0KGRvd25jYXN0PEJsdXJGaWx0ZXJPcGVyYXRpb24+KCpv
cGVyYXRpb24pLCBjb25zdW1lcik7CiAgICAgICAgICAgICBicmVhazsKIAogICAgICAgICBjYXNl
IEZpbHRlck9wZXJhdGlvbjo6QlJJR0hUTkVTUzoKLSAgICAgICAgICAgIGVmZmVjdCA9IGNyZWF0
ZUJyaWdodG5lc3NFZmZlY3QoKnRoaXMsIGRvd25jYXN0PEJhc2ljQ29tcG9uZW50VHJhbnNmZXJG
aWx0ZXJPcGVyYXRpb24+KCpvcGVyYXRpb24pKTsKKyAgICAgICAgICAgIGVmZmVjdCA9IGNyZWF0
ZUJyaWdodG5lc3NFZmZlY3QoZG93bmNhc3Q8QmFzaWNDb21wb25lbnRUcmFuc2ZlckZpbHRlck9w
ZXJhdGlvbj4oKm9wZXJhdGlvbikpOwogICAgICAgICAgICAgYnJlYWs7CiAKICAgICAgICAgY2Fz
ZSBGaWx0ZXJPcGVyYXRpb246OkNPTlRSQVNUOgotICAgICAgICAgICAgZWZmZWN0ID0gY3JlYXRl
Q29udHJhc3RFZmZlY3QoKnRoaXMsIGRvd25jYXN0PEJhc2ljQ29tcG9uZW50VHJhbnNmZXJGaWx0
ZXJPcGVyYXRpb24+KCpvcGVyYXRpb24pKTsKKyAgICAgICAgICAgIGVmZmVjdCA9IGNyZWF0ZUNv
bnRyYXN0RWZmZWN0KGRvd25jYXN0PEJhc2ljQ29tcG9uZW50VHJhbnNmZXJGaWx0ZXJPcGVyYXRp
b24+KCpvcGVyYXRpb24pKTsKICAgICAgICAgICAgIGJyZWFrOwogCiAgICAgICAgIGNhc2UgRmls
dGVyT3BlcmF0aW9uOjpEUk9QX1NIQURPVzoKLSAgICAgICAgICAgIGVmZmVjdCA9IGNyZWF0ZURy
b3BTaGFkb3dFZmZlY3QoKnRoaXMsIGRvd25jYXN0PERyb3BTaGFkb3dGaWx0ZXJPcGVyYXRpb24+
KCpvcGVyYXRpb24pKTsKKyAgICAgICAgICAgIGVmZmVjdCA9IGNyZWF0ZURyb3BTaGFkb3dFZmZl
Y3QoZG93bmNhc3Q8RHJvcFNoYWRvd0ZpbHRlck9wZXJhdGlvbj4oKm9wZXJhdGlvbikpOwogICAg
ICAgICAgICAgYnJlYWs7CiAKICAgICAgICAgY2FzZSBGaWx0ZXJPcGVyYXRpb246OkdSQVlTQ0FM
RToKLSAgICAgICAgICAgIGVmZmVjdCA9IGNyZWF0ZUdyYXlTY2FsZUVmZmVjdCgqdGhpcywgZG93
bmNhc3Q8QmFzaWNDb2xvck1hdHJpeEZpbHRlck9wZXJhdGlvbj4oKm9wZXJhdGlvbikpOworICAg
ICAgICAgICAgZWZmZWN0ID0gY3JlYXRlR3JheVNjYWxlRWZmZWN0KGRvd25jYXN0PEJhc2ljQ29s
b3JNYXRyaXhGaWx0ZXJPcGVyYXRpb24+KCpvcGVyYXRpb24pKTsKICAgICAgICAgICAgIGJyZWFr
OwogCiAgICAgICAgIGNhc2UgRmlsdGVyT3BlcmF0aW9uOjpIVUVfUk9UQVRFOgotICAgICAgICAg
ICAgZWZmZWN0ID0gY3JlYXRlSHVlUm90YXRlRWZmZWN0KCp0aGlzLCBkb3duY2FzdDxCYXNpY0Nv
bG9yTWF0cml4RmlsdGVyT3BlcmF0aW9uPigqb3BlcmF0aW9uKSk7CisgICAgICAgICAgICBlZmZl
Y3QgPSBjcmVhdGVIdWVSb3RhdGVFZmZlY3QoZG93bmNhc3Q8QmFzaWNDb2xvck1hdHJpeEZpbHRl
ck9wZXJhdGlvbj4oKm9wZXJhdGlvbikpOwogICAgICAgICAgICAgYnJlYWs7CiAKICAgICAgICAg
Y2FzZSBGaWx0ZXJPcGVyYXRpb246OklOVkVSVDoKLSAgICAgICAgICAgIGVmZmVjdCA9IGNyZWF0
ZUludmVydEVmZmVjdCgqdGhpcywgZG93bmNhc3Q8QmFzaWNDb21wb25lbnRUcmFuc2ZlckZpbHRl
ck9wZXJhdGlvbj4oKm9wZXJhdGlvbikpOworICAgICAgICAgICAgZWZmZWN0ID0gY3JlYXRlSW52
ZXJ0RWZmZWN0KGRvd25jYXN0PEJhc2ljQ29tcG9uZW50VHJhbnNmZXJGaWx0ZXJPcGVyYXRpb24+
KCpvcGVyYXRpb24pKTsKICAgICAgICAgICAgIGJyZWFrOwogCiAgICAgICAgIGNhc2UgRmlsdGVy
T3BlcmF0aW9uOjpPUEFDSVRZOgotICAgICAgICAgICAgZWZmZWN0ID0gY3JlYXRlT3BhY2l0eUVm
ZmVjdCgqdGhpcywgZG93bmNhc3Q8QmFzaWNDb21wb25lbnRUcmFuc2ZlckZpbHRlck9wZXJhdGlv
bj4oKm9wZXJhdGlvbikpOworICAgICAgICAgICAgZWZmZWN0ID0gY3JlYXRlT3BhY2l0eUVmZmVj
dChkb3duY2FzdDxCYXNpY0NvbXBvbmVudFRyYW5zZmVyRmlsdGVyT3BlcmF0aW9uPigqb3BlcmF0
aW9uKSk7CiAgICAgICAgICAgICBicmVhazsKIAogICAgICAgICBjYXNlIEZpbHRlck9wZXJhdGlv
bjo6U0FUVVJBVEU6Ci0gICAgICAgICAgICBlZmZlY3QgPSBjcmVhdGVTYXR1cmF0ZUVmZmVjdCgq
dGhpcywgZG93bmNhc3Q8QmFzaWNDb2xvck1hdHJpeEZpbHRlck9wZXJhdGlvbj4oKm9wZXJhdGlv
bikpOworICAgICAgICAgICAgZWZmZWN0ID0gY3JlYXRlU2F0dXJhdGVFZmZlY3QoZG93bmNhc3Q8
QmFzaWNDb2xvck1hdHJpeEZpbHRlck9wZXJhdGlvbj4oKm9wZXJhdGlvbikpOwogICAgICAgICAg
ICAgYnJlYWs7CiAKICAgICAgICAgY2FzZSBGaWx0ZXJPcGVyYXRpb246OlNFUElBOgotICAgICAg
ICAgICAgZWZmZWN0ID0gY3JlYXRlU2VwaWFFZmZlY3QoKnRoaXMsIGRvd25jYXN0PEJhc2ljQ29s
b3JNYXRyaXhGaWx0ZXJPcGVyYXRpb24+KCpvcGVyYXRpb24pKTsKKyAgICAgICAgICAgIGVmZmVj
dCA9IGNyZWF0ZVNlcGlhRWZmZWN0KGRvd25jYXN0PEJhc2ljQ29sb3JNYXRyaXhGaWx0ZXJPcGVy
YXRpb24+KCpvcGVyYXRpb24pKTsKICAgICAgICAgICAgIGJyZWFrOwogCiAgICAgICAgIGNhc2Ug
RmlsdGVyT3BlcmF0aW9uOjpSRUZFUkVOQ0U6CkBAIC0zODUsMTMgKzM4NSwxMyBAQCBSZWZQdHI8
RmlsdGVyRWZmZWN0PiBDU1NGaWx0ZXI6Omxhc3RFZmZlY3QoKQogdm9pZCBDU1NGaWx0ZXI6OmRl
dGVybWluZUZpbHRlclByaW1pdGl2ZVN1YnJlZ2lvbigpCiB7CiAgICAgYXV0byBlZmZlY3QgPSBs
YXN0RWZmZWN0KCk7Ci0gICAgZWZmZWN0LT5kZXRlcm1pbmVGaWx0ZXJQcmltaXRpdmVTdWJyZWdp
b24oKTsKKyAgICBlZmZlY3QtPmRldGVybWluZUZpbHRlclByaW1pdGl2ZVN1YnJlZ2lvbigqdGhp
cyk7CiAgICAgRmxvYXRSZWN0IHN1YlJlZ2lvbiA9IGVmZmVjdC0+bWF4RWZmZWN0UmVjdCgpOwog
ICAgIC8vIEF0IGxlYXN0IG9uZSBGaWx0ZXJFZmZlY3QgaGFzIGEgdG9vIGJpZyBpbWFnZSBzaXpl
LCByZWNhbGN1bGF0ZSB0aGUgZWZmZWN0IHNpemVzIHdpdGggbmV3IHNjYWxlIGZhY3RvcnMuCiAg
ICAgRmxvYXRTaXplIGZpbHRlclNjYWxlIHsgMSwgMSB9OwogICAgIGlmIChJbWFnZUJ1ZmZlcjo6
c2l6ZU5lZWRzQ2xhbXBpbmcoc3ViUmVnaW9uLnNpemUoKSwgZmlsdGVyU2NhbGUpKSB7CiAgICAg
ICAgIHNldEZpbHRlclNjYWxlKGZpbHRlclNjYWxlKTsKLSAgICAgICAgZWZmZWN0LT5kZXRlcm1p
bmVGaWx0ZXJQcmltaXRpdmVTdWJyZWdpb24oKTsKKyAgICAgICAgZWZmZWN0LT5kZXRlcm1pbmVG
aWx0ZXJQcmltaXRpdmVTdWJyZWdpb24oKnRoaXMpOwogICAgIH0KIH0KIApAQCAtNDA1LDEzICs0
MDUsMjEgQEAgdm9pZCBDU1NGaWx0ZXI6OmFwcGx5KCkKIHsKICAgICBhdXRvIGVmZmVjdCA9IGxh
c3RFZmZlY3QoKTsKICAgICBpZiAobV9maWx0ZXJSZW5kZXJlcikgewotICAgICAgICBtX2ZpbHRl
clJlbmRlcmVyLT5hcHBseUVmZmVjdHMoKmVmZmVjdCk7CisgICAgICAgIG1fZmlsdGVyUmVuZGVy
ZXItPmFwcGx5RWZmZWN0cygqdGhpcywgKmVmZmVjdCk7CiAgICAgICAgIGlmIChtX2ZpbHRlclJl
bmRlcmVyLT5oYXNSZXN1bHQoKSkgewogICAgICAgICAgICAgZWZmZWN0LT50cmFuc2Zvcm1SZXN1
bHRDb2xvclNwYWNlKERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQigpKTsKICAgICAgICAgICAg
IHJldHVybjsKICAgICAgICAgfQogICAgIH0KLSAgICBlZmZlY3QtPmFwcGx5KCk7CisKKyAgICBm
b3IgKGF1dG8mIGZ1bmN0aW9uIDogbV9mdW5jdGlvbnMpIHsKKyAgICAgICAgaWYgKGZ1bmN0aW9u
LT5pc1NWR0ZpbHRlcigpKSB7CisgICAgICAgICAgICBkb3duY2FzdDxTVkdGaWx0ZXI+KGZ1bmN0
aW9uLnB0cigpKS0+c2V0U291cmNlSW1hZ2UoeyBzb3VyY2VJbWFnZSgpIH0pOworICAgICAgICAg
ICAgZG93bmNhc3Q8U1ZHRmlsdGVyPihmdW5jdGlvbi5wdHIoKSktPmFwcGx5KCk7CisgICAgICAg
IH0gZWxzZSBpZiAoZnVuY3Rpb24tPmlzRmlsdGVyRWZmZWN0KCkpCisgICAgICAgICAgICBkb3du
Y2FzdDxGaWx0ZXJFZmZlY3Q+KGZ1bmN0aW9uLnB0cigpKS0+YXBwbHkoKnRoaXMpOworICAgIH0K
KwogICAgIGVmZmVjdC0+dHJhbnNmb3JtUmVzdWx0Q29sb3JTcGFjZShEZXN0aW5hdGlvbkNvbG9y
U3BhY2U6OlNSR0IoKSk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9DU1NGaWx0ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9DU1NGaWx0ZXIuaAppbmRl
eCBkNmQ2MTk3NDE2MmQxMzczYjVmNmJjNTZiYTYzYjNmNDdkNmQwMThmLi41OTNiNjMzNzA0N2Jk
OTExMDIwZDAwM2JjNjBmZTUzYzY2NTE2YTg5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvQ1NTRmlsdGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0NTU0Zp
bHRlci5oCkBAIC01OSw3ICs1OSw3IEBAIHB1YmxpYzoKICAgICBJbnRPdXRzZXRzIG91dHNldHMo
KSBjb25zdCBvdmVycmlkZTsKIAogICAgIHZvaWQgY2xlYXJJbnRlcm1lZGlhdGVSZXN1bHRzKCk7
Ci0gICAgdm9pZCBhcHBseSgpOworICAgIHZvaWQgYXBwbHkoKSBvdmVycmlkZTsKIAogICAgIElt
YWdlQnVmZmVyKiBvdXRwdXQoKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZUZpbHRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlRmlsdGVyLmNwcAppbmRleCBmMTAzNTMzOWVjNDFk
NmU1NDBmMjVmNjFkMWRjNTJiNTY2ZDBhOTNmLi43OTVlZmFhNjMxYzI5ZDc0ZGI5NTY4NTVhMTlk
NzJlMjc1ZTRjZWNjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1Jl
bmRlclNWR1Jlc291cmNlRmlsdGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
c3ZnL1JlbmRlclNWR1Jlc291cmNlRmlsdGVyLmNwcApAQCAtMTMxLDE0ICsxMzEsMTQgQEAgYm9v
bCBSZW5kZXJTVkdSZXNvdXJjZUZpbHRlcjo6YXBwbHlSZXNvdXJjZShSZW5kZXJFbGVtZW50JiBy
ZW5kZXJlciwgY29uc3QgUmVuZGUKIAogICAgIExPR19XSVRIX1NUUkVBTShGaWx0ZXJzLCBzdHJl
YW0gPDwgIlJlbmRlclNWR1Jlc291cmNlRmlsdGVyOjphcHBseVJlc291cmNlXG4iIDw8ICpmaWx0
ZXJEYXRhLT5idWlsZGVyLT5sYXN0RWZmZWN0KCkpOwogCi0gICAgbGFzdEVmZmVjdC0+ZGV0ZXJt
aW5lRmlsdGVyUHJpbWl0aXZlU3VicmVnaW9uKCk7CisgICAgbGFzdEVmZmVjdC0+ZGV0ZXJtaW5l
RmlsdGVyUHJpbWl0aXZlU3VicmVnaW9uKCpmaWx0ZXJEYXRhLT5maWx0ZXIpOwogICAgIEZsb2F0
UmVjdCBzdWJSZWdpb24gPSBsYXN0RWZmZWN0LT5tYXhFZmZlY3RSZWN0KCk7CiAKICAgICAvLyBB
dCBsZWFzdCBvbmUgRmlsdGVyRWZmZWN0IGhhcyBhIHRvbyBiaWcgaW1hZ2Ugc2l6ZSwKICAgICAv
LyByZWNhbGN1bGF0ZSB0aGUgZWZmZWN0IHNpemVzIHdpdGggbmV3IHNjYWxlIGZhY3RvcnMuCiAg
ICAgaWYgKEltYWdlQnVmZmVyOjpzaXplTmVlZHNDbGFtcGluZyhzdWJSZWdpb24uc2l6ZSgpLCBm
aWx0ZXJTY2FsZSkpIHsKICAgICAgICAgZmlsdGVyRGF0YS0+ZmlsdGVyLT5zZXRGaWx0ZXJTY2Fs
ZShmaWx0ZXJTY2FsZSk7Ci0gICAgICAgIGxhc3RFZmZlY3QtPmRldGVybWluZUZpbHRlclByaW1p
dGl2ZVN1YnJlZ2lvbigpOworICAgICAgICBsYXN0RWZmZWN0LT5kZXRlcm1pbmVGaWx0ZXJQcmlt
aXRpdmVTdWJyZWdpb24oKmZpbHRlckRhdGEtPmZpbHRlcik7CiAgICAgfQogCiAgICAgLy8gSWYg
dGhlIGRyYXdpbmdSZWdpb24gaXMgZW1wdHksIHdlIGhhdmUgc29tZXRoaW5nIGxpa2UgPGcgZmls
dGVyPSIuLiIvPi4KQEAgLTIyNCw3ICsyMjQsNyBAQCB2b2lkIFJlbmRlclNWR1Jlc291cmNlRmls
dGVyOjpwb3N0QXBwbHlSZXNvdXJjZShSZW5kZXJFbGVtZW50JiByZW5kZXJlciwgR3JhcGhpYwog
ICAgICAgICBicmVhazsKICAgICB9CiAKLSAgICBGaWx0ZXJFZmZlY3QqIGxhc3RFZmZlY3QgPSBm
aWx0ZXJEYXRhLmJ1aWxkZXItPmxhc3RFZmZlY3QoKTsKKyAgICBhdXRvIGxhc3RFZmZlY3QgPSBm
aWx0ZXJEYXRhLmZpbHRlci0+bGFzdEVmZmVjdCgpOwogCiAgICAgaWYgKGxhc3RFZmZlY3QgJiYg
IWZpbHRlckRhdGEuYm91bmRhcmllcy5pc0VtcHR5KCkgJiYgIWxhc3RFZmZlY3QtPmZpbHRlclBy
aW1pdGl2ZVN1YnJlZ2lvbigpLmlzRW1wdHkoKSkgewogICAgICAgICAvLyBUaGlzIGlzIHRoZSBy
ZWFsIGZpbHRlcmluZyBvZiB0aGUgb2JqZWN0LiBJdCBqdXN0IG5lZWRzIHRvIGJlIGNhbGxlZCBv
biB0aGUKQEAgLTIzNiw3ICsyMzYsNyBAQCB2b2lkIFJlbmRlclNWR1Jlc291cmNlRmlsdGVyOjpw
b3N0QXBwbHlSZXNvdXJjZShSZW5kZXJFbGVtZW50JiByZW5kZXJlciwgR3JhcGhpYwogICAgICAg
ICAvLyBBbHdheXMgdHJ1ZSBpZiBmaWx0ZXJEYXRhIGlzIGp1c3QgYnVpbHQgKGZpbHRlckRhdGEt
PnN0YXRlID09IEZpbHRlckRhdGE6OkJ1aWx0KS4KICAgICAgICAgaWYgKCFsYXN0RWZmZWN0LT5o
YXNSZXN1bHQoKSkgewogICAgICAgICAgICAgZmlsdGVyRGF0YS5zdGF0ZSA9IEZpbHRlckRhdGE6
OkFwcGx5aW5nOwotICAgICAgICAgICAgbGFzdEVmZmVjdC0+YXBwbHkoKTsKKyAgICAgICAgICAg
IGZpbHRlckRhdGEuZmlsdGVyLT5hcHBseSgpOwogICAgICAgICAgICAgbGFzdEVmZmVjdC0+Y29y
cmVjdEZpbHRlclJlc3VsdElmTmVlZGVkKCk7CiAgICAgICAgICAgICBsYXN0RWZmZWN0LT50cmFu
c2Zvcm1SZXN1bHRDb2xvclNwYWNlKERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQigpKTsKICAg
ICAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFQmxlbmRFbGVtZW50
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRUJsZW5kRWxlbWVudC5jcHAKaW5kZXggN2Jj
ZjA0MTgwMGY3OTlmMTE3NGNmZTA0YjgyMmQ2ZDA2NDMxZjY4Ni4uMDU0MGM4ZTQ0MDgyZDVjNjFm
MDBmOGZiNzM1YzM2MTgyZDEwZmE3ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NW
R0ZFQmxlbmRFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVCbGVuZEVs
ZW1lbnQuY3BwCkBAIC0xMDAsMTkgKzEwMCwxNiBAQCB2b2lkIFNWR0ZFQmxlbmRFbGVtZW50Ojpz
dmdBdHRyaWJ1dGVDaGFuZ2VkKGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0dHJOYW1lKQogICAgIFNW
R0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlczo6c3ZnQXR0cmlidXRlQ2hhbmdlZChh
dHRyTmFtZSk7CiB9CiAKLVJlZlB0cjxGaWx0ZXJFZmZlY3Q+IFNWR0ZFQmxlbmRFbGVtZW50Ojpi
dWlsZChTVkdGaWx0ZXJCdWlsZGVyKiBmaWx0ZXJCdWlsZGVyLCBGaWx0ZXImIGZpbHRlcikgY29u
c3QKK1JlZlB0cjxGaWx0ZXJFZmZlY3Q+IFNWR0ZFQmxlbmRFbGVtZW50OjpidWlsZChTVkdGaWx0
ZXJCdWlsZGVyJiBmaWx0ZXJCdWlsZGVyKSBjb25zdAogewotICAgIGF1dG8gaW5wdXQxID0gZmls
dGVyQnVpbGRlci0+Z2V0RWZmZWN0QnlJZChpbjEoKSk7Ci0gICAgYXV0byBpbnB1dDIgPSBmaWx0
ZXJCdWlsZGVyLT5nZXRFZmZlY3RCeUlkKGluMigpKTsKKyAgICBhdXRvIGlucHV0MSA9IGZpbHRl
ckJ1aWxkZXIuZ2V0RWZmZWN0QnlJZChpbjEoKSk7CisgICAgYXV0byBpbnB1dDIgPSBmaWx0ZXJC
dWlsZGVyLmdldEVmZmVjdEJ5SWQoaW4yKCkpOwogCiAgICAgaWYgKCFpbnB1dDEgfHwgIWlucHV0
MikKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKLSAgICBhdXRvIGVmZmVjdCA9IEZFQmxlbmQ6
OmNyZWF0ZShmaWx0ZXIsIG1vZGUoKSk7Ci0gICAgRmlsdGVyRWZmZWN0VmVjdG9yJiBpbnB1dEVm
ZmVjdHMgPSBlZmZlY3QtPmlucHV0RWZmZWN0cygpOwotICAgIGlucHV0RWZmZWN0cy5yZXNlcnZl
Q2FwYWNpdHkoMik7Ci0gICAgaW5wdXRFZmZlY3RzLmFwcGVuZChpbnB1dDEpOwotICAgIGlucHV0
RWZmZWN0cy5hcHBlbmQoaW5wdXQyKTsgICAgCisgICAgYXV0byBlZmZlY3QgPSBGRUJsZW5kOjpj
cmVhdGUobW9kZSgpKTsKKyAgICBlZmZlY3QtPmlucHV0RWZmZWN0cygpID0geyBXVEZNb3ZlKGlu
cHV0MSksIFdURk1vdmUoaW5wdXQyKSB9OwogICAgIHJldHVybiBlZmZlY3Q7CiB9CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRUJsZW5kRWxlbWVudC5oIGIvU291cmNlL1dl
YkNvcmUvc3ZnL1NWR0ZFQmxlbmRFbGVtZW50LmgKaW5kZXggOTAzN2NiMTIxZjkzNjdiNzg4ZDky
MTZlMGI5NDFmYzhiMDZkZWM2Ni4uZWJhOWFiYjU4MzI4ZjRkYWJmMzQyOGI2YjE3ZGJmNTgyMzc2
ODQwOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFQmxlbmRFbGVtZW50LmgK
KysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFQmxlbmRFbGVtZW50LmgKQEAgLTY5LDcgKzY5
LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIHBhcnNlQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5h
bWUmLCBjb25zdCBBdG9tU3RyaW5nJikgb3ZlcnJpZGU7CiAgICAgdm9pZCBzdmdBdHRyaWJ1dGVD
aGFuZ2VkKGNvbnN0IFF1YWxpZmllZE5hbWUmKSBvdmVycmlkZTsKIAotICAgIFJlZlB0cjxGaWx0
ZXJFZmZlY3Q+IGJ1aWxkKFNWR0ZpbHRlckJ1aWxkZXIqLCBGaWx0ZXImKSBjb25zdCBvdmVycmlk
ZTsKKyAgICBSZWZQdHI8RmlsdGVyRWZmZWN0PiBidWlsZChTVkdGaWx0ZXJCdWlsZGVyJikgY29u
c3Qgb3ZlcnJpZGU7CiAgICAgYm9vbCBzZXRGaWx0ZXJFZmZlY3RBdHRyaWJ1dGUoRmlsdGVyRWZm
ZWN0KiwgY29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0ck5hbWUpIG92ZXJyaWRlOwogCiAgICAgUHJv
cGVydHlSZWdpc3RyeSBtX3Byb3BlcnR5UmVnaXN0cnkgeyAqdGhpcyB9OwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFQ29sb3JNYXRyaXhFbGVtZW50LmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3N2Zy9TVkdGRUNvbG9yTWF0cml4RWxlbWVudC5jcHAKaW5kZXggMDUyNDg1NzhjMjc0
YzhmYTJiM2UxZjI0NGU0MzY3ODY4ZjQyYmE5Yy4uY2RlYmVmMThhMWZkY2JiOGYzZmIzNWZiODM4
YWM2MDRjOWEyM2Q2NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFQ29sb3JN
YXRyaXhFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVDb2xvck1hdHJp
eEVsZW1lbnQuY3BwCkBAIC0xMDAsOSArMTAwLDkgQEAgdm9pZCBTVkdGRUNvbG9yTWF0cml4RWxl
bWVudDo6c3ZnQXR0cmlidXRlQ2hhbmdlZChjb25zdCBRdWFsaWZpZWROYW1lJiBhdHRyTmFtZSkK
ICAgICBTVkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXM6OnN2Z0F0dHJpYnV0ZUNo
YW5nZWQoYXR0ck5hbWUpOwogfQogCi1SZWZQdHI8RmlsdGVyRWZmZWN0PiBTVkdGRUNvbG9yTWF0
cml4RWxlbWVudDo6YnVpbGQoU1ZHRmlsdGVyQnVpbGRlciogZmlsdGVyQnVpbGRlciwgRmlsdGVy
JiBmaWx0ZXIpIGNvbnN0CitSZWZQdHI8RmlsdGVyRWZmZWN0PiBTVkdGRUNvbG9yTWF0cml4RWxl
bWVudDo6YnVpbGQoU1ZHRmlsdGVyQnVpbGRlciYgZmlsdGVyQnVpbGRlcikgY29uc3QKIHsKLSAg
ICBhdXRvIGlucHV0MSA9IGZpbHRlckJ1aWxkZXItPmdldEVmZmVjdEJ5SWQoaW4xKCkpOworICAg
IGF1dG8gaW5wdXQxID0gZmlsdGVyQnVpbGRlci5nZXRFZmZlY3RCeUlkKGluMSgpKTsKIAogICAg
IGlmICghaW5wdXQxKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKQEAgLTE0MSw4ICsxNDEsOCBA
QCBSZWZQdHI8RmlsdGVyRWZmZWN0PiBTVkdGRUNvbG9yTWF0cml4RWxlbWVudDo6YnVpbGQoU1ZH
RmlsdGVyQnVpbGRlciogZmlsdGVyQnVpbAogICAgICAgICBmaWx0ZXJWYWx1ZXMuc2hyaW5rVG9G
aXQoKTsKICAgICB9CiAKLSAgICBhdXRvIGVmZmVjdCA9IEZFQ29sb3JNYXRyaXg6OmNyZWF0ZShm
aWx0ZXIsIGZpbHRlclR5cGUsIFdURk1vdmUoZmlsdGVyVmFsdWVzKSk7Ci0gICAgZWZmZWN0LT5p
bnB1dEVmZmVjdHMoKSA9IHsgaW5wdXQxIH07CisgICAgYXV0byBlZmZlY3QgPSBGRUNvbG9yTWF0
cml4OjpjcmVhdGUoZmlsdGVyVHlwZSwgV1RGTW92ZShmaWx0ZXJWYWx1ZXMpKTsKKyAgICBlZmZl
Y3QtPmlucHV0RWZmZWN0cygpID0geyBXVEZNb3ZlKGlucHV0MSkgfTsKICAgICByZXR1cm4gZWZm
ZWN0OwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVDb2xvck1hdHJp
eEVsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRUNvbG9yTWF0cml4RWxlbWVudC5o
CmluZGV4IDdhYjRhYTQxODFlN2FiMTk4YjEyZTc3YmUyMDZiOWM1YzQxMDIzZmQuLjk3MDExYTA0
MWU0OWExN2ZiNDk4YTFmODQ2Zjg4MGRiZGQ2OTUyNDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3N2Zy9TVkdGRUNvbG9yTWF0cml4RWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2
Zy9TVkdGRUNvbG9yTWF0cml4RWxlbWVudC5oCkBAIC04Niw3ICs4Niw3IEBAIHByaXZhdGU6CiAg
ICAgdm9pZCBzdmdBdHRyaWJ1dGVDaGFuZ2VkKGNvbnN0IFF1YWxpZmllZE5hbWUmKSBvdmVycmlk
ZTsKIAogICAgIGJvb2wgc2V0RmlsdGVyRWZmZWN0QXR0cmlidXRlKEZpbHRlckVmZmVjdCosIGNv
bnN0IFF1YWxpZmllZE5hbWUmKSBvdmVycmlkZTsKLSAgICBSZWZQdHI8RmlsdGVyRWZmZWN0PiBi
dWlsZChTVkdGaWx0ZXJCdWlsZGVyKiwgRmlsdGVyJikgY29uc3Qgb3ZlcnJpZGU7CisgICAgUmVm
UHRyPEZpbHRlckVmZmVjdD4gYnVpbGQoU1ZHRmlsdGVyQnVpbGRlciYpIGNvbnN0IG92ZXJyaWRl
OwogCiAgICAgUHJvcGVydHlSZWdpc3RyeSBtX3Byb3BlcnR5UmVnaXN0cnkgeyAqdGhpcyB9Owog
ICAgIFJlZjxTVkdBbmltYXRlZFN0cmluZz4gbV9pbjEgeyBTVkdBbmltYXRlZFN0cmluZzo6Y3Jl
YXRlKHRoaXMpIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVDb21wb25l
bnRUcmFuc2ZlckVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFQ29tcG9uZW50
VHJhbnNmZXJFbGVtZW50LmNwcAppbmRleCA5MGE1NWI3ZWZmZjdhM2ZlNjA2YTllMDU3OWE3NmVk
ZTlmOTY4MDExLi41ZWRiODlkMGQyNTkyNThmZTZlY2Q5NTY3N2E1ZDYyMDQxNDBkZTRiIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVDb21wb25lbnRUcmFuc2ZlckVsZW1lbnQu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRUNvbXBvbmVudFRyYW5zZmVyRWxlbWVu
dC5jcHAKQEAgLTYzLDkgKzYzLDkgQEAgdm9pZCBTVkdGRUNvbXBvbmVudFRyYW5zZmVyRWxlbWVu
dDo6cGFyc2VBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgbmFtZSwgY28KICAgICBTVkdG
aWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXM6OnBhcnNlQXR0cmlidXRlKG5hbWUsIHZh
bHVlKTsKIH0KIAotUmVmUHRyPEZpbHRlckVmZmVjdD4gU1ZHRkVDb21wb25lbnRUcmFuc2ZlckVs
ZW1lbnQ6OmJ1aWxkKFNWR0ZpbHRlckJ1aWxkZXIqIGZpbHRlckJ1aWxkZXIsIEZpbHRlciYgZmls
dGVyKSBjb25zdAorUmVmUHRyPEZpbHRlckVmZmVjdD4gU1ZHRkVDb21wb25lbnRUcmFuc2ZlckVs
ZW1lbnQ6OmJ1aWxkKFNWR0ZpbHRlckJ1aWxkZXImIGZpbHRlckJ1aWxkZXIpIGNvbnN0CiB7Ci0g
ICAgYXV0byBpbnB1dDEgPSBmaWx0ZXJCdWlsZGVyLT5nZXRFZmZlY3RCeUlkKGluMSgpKTsKKyAg
ICBhdXRvIGlucHV0MSA9IGZpbHRlckJ1aWxkZXIuZ2V0RWZmZWN0QnlJZChpbjEoKSk7CiAgICAg
CiAgICAgaWYgKCFpbnB1dDEpCiAgICAgICAgIHJldHVybiBudWxscHRyOwpAQCAtODUsOSArODUs
OSBAQCBSZWZQdHI8RmlsdGVyRWZmZWN0PiBTVkdGRUNvbXBvbmVudFRyYW5zZmVyRWxlbWVudDo6
YnVpbGQoU1ZHRmlsdGVyQnVpbGRlciogZmlsdAogICAgICAgICBlbHNlIGlmIChpczxTVkdGRUZ1
bmNBRWxlbWVudD4oY2hpbGQpKQogICAgICAgICAgICAgYWxwaGEgPSBkb3duY2FzdDxTVkdGRUZ1
bmNBRWxlbWVudD4oY2hpbGQpLnRyYW5zZmVyRnVuY3Rpb24oKTsKICAgICB9Ci0gICAgCi0gICAg
YXV0byBlZmZlY3QgPSBGRUNvbXBvbmVudFRyYW5zZmVyOjpjcmVhdGUoZmlsdGVyLCByZWQsIGdy
ZWVuLCBibHVlLCBhbHBoYSk7Ci0gICAgZWZmZWN0LT5pbnB1dEVmZmVjdHMoKSA9IHsgaW5wdXQx
IH07CisKKyAgICBhdXRvIGVmZmVjdCA9IEZFQ29tcG9uZW50VHJhbnNmZXI6OmNyZWF0ZShyZWQs
IGdyZWVuLCBibHVlLCBhbHBoYSk7CisgICAgZWZmZWN0LT5pbnB1dEVmZmVjdHMoKSA9IHsgV1RG
TW92ZShpbnB1dDEpIH07CiAgICAgcmV0dXJuIGVmZmVjdDsKIH0KIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFQ29tcG9uZW50VHJhbnNmZXJFbGVtZW50LmggYi9Tb3VyY2Uv
V2ViQ29yZS9zdmcvU1ZHRkVDb21wb25lbnRUcmFuc2ZlckVsZW1lbnQuaAppbmRleCBiYjU4OTM0
N2Q4ODI2ZGZiMzYwOWVkYWM2ZThiOTkzYTRkZDU0ODYzLi42MDE3MTBmN2QzNTM1YTE0MWExNTc4
ODU0YWYyYjAzNTExMjllOTgyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVD
b21wb25lbnRUcmFuc2ZlckVsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVD
b21wb25lbnRUcmFuc2ZlckVsZW1lbnQuaApAQCAtNDMsNyArNDMsNyBAQCBwcml2YXRlOgogICAg
IC8vIEZJWE1FOiBzdmdBdHRyaWJ1dGVDaGFuZ2VkIG1pc3NpbmcuCiAgICAgdm9pZCBwYXJzZUF0
dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiwgY29uc3QgQXRvbVN0cmluZyYpIG92ZXJyaWRl
OwogCi0gICAgUmVmUHRyPEZpbHRlckVmZmVjdD4gYnVpbGQoU1ZHRmlsdGVyQnVpbGRlciosIEZp
bHRlciYpIGNvbnN0IG92ZXJyaWRlOworICAgIFJlZlB0cjxGaWx0ZXJFZmZlY3Q+IGJ1aWxkKFNW
R0ZpbHRlckJ1aWxkZXImKSBjb25zdCBvdmVycmlkZTsKIAogICAgIFByb3BlcnR5UmVnaXN0cnkg
bV9wcm9wZXJ0eVJlZ2lzdHJ5IHsgKnRoaXMgfTsKICAgICBSZWY8U1ZHQW5pbWF0ZWRTdHJpbmc+
IG1faW4xIHsgU1ZHQW5pbWF0ZWRTdHJpbmc6OmNyZWF0ZSh0aGlzKSB9OwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFQ29tcG9zaXRlRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9zdmcvU1ZHRkVDb21wb3NpdGVFbGVtZW50LmNwcAppbmRleCAzY2E5OWI4NzU3MDhiYmQ4
YTZiYWY2NTNkYzA2ZmUyMDVhYzk4MjM1Li43ZmNlZDJlNjQ1NTQwZTNiOWRkMDk2Y2JlNDk5MWY1
ODQxNTUwNTE0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVDb21wb3NpdGVF
bGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVDb21wb3NpdGVFbGVtZW50
LmNwcApAQCAtMTMxLDE5ICsxMzEsMTYgQEAgdm9pZCBTVkdGRUNvbXBvc2l0ZUVsZW1lbnQ6OnN2
Z0F0dHJpYnV0ZUNoYW5nZWQoY29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0ck5hbWUpCiAgICAgU1ZH
RmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVzOjpzdmdBdHRyaWJ1dGVDaGFuZ2VkKGF0
dHJOYW1lKTsKIH0KIAotUmVmUHRyPEZpbHRlckVmZmVjdD4gU1ZHRkVDb21wb3NpdGVFbGVtZW50
OjpidWlsZChTVkdGaWx0ZXJCdWlsZGVyKiBmaWx0ZXJCdWlsZGVyLCBGaWx0ZXImIGZpbHRlcikg
Y29uc3QKK1JlZlB0cjxGaWx0ZXJFZmZlY3Q+IFNWR0ZFQ29tcG9zaXRlRWxlbWVudDo6YnVpbGQo
U1ZHRmlsdGVyQnVpbGRlciYgZmlsdGVyQnVpbGRlcikgY29uc3QKIHsKLSAgICBhdXRvIGlucHV0
MSA9IGZpbHRlckJ1aWxkZXItPmdldEVmZmVjdEJ5SWQoaW4xKCkpOwotICAgIGF1dG8gaW5wdXQy
ID0gZmlsdGVyQnVpbGRlci0+Z2V0RWZmZWN0QnlJZChpbjIoKSk7CisgICAgYXV0byBpbnB1dDEg
PSBmaWx0ZXJCdWlsZGVyLmdldEVmZmVjdEJ5SWQoaW4xKCkpOworICAgIGF1dG8gaW5wdXQyID0g
ZmlsdGVyQnVpbGRlci5nZXRFZmZlY3RCeUlkKGluMigpKTsKICAgICAKICAgICBpZiAoIWlucHV0
MSB8fCAhaW5wdXQyKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAotICAgIGF1dG8gZWZmZWN0
ID0gRkVDb21wb3NpdGU6OmNyZWF0ZShmaWx0ZXIsIHN2Z09wZXJhdG9yKCksIGsxKCksIGsyKCks
IGszKCksIGs0KCkpOwotICAgIEZpbHRlckVmZmVjdFZlY3RvciYgaW5wdXRFZmZlY3RzID0gZWZm
ZWN0LT5pbnB1dEVmZmVjdHMoKTsKLSAgICBpbnB1dEVmZmVjdHMucmVzZXJ2ZUNhcGFjaXR5KDIp
OwotICAgIGlucHV0RWZmZWN0cy5hcHBlbmQoaW5wdXQxKTsKLSAgICBpbnB1dEVmZmVjdHMuYXBw
ZW5kKGlucHV0Mik7ICAgIAorICAgIGF1dG8gZWZmZWN0ID0gRkVDb21wb3NpdGU6OmNyZWF0ZShz
dmdPcGVyYXRvcigpLCBrMSgpLCBrMigpLCBrMygpLCBrNCgpKTsKKyAgICBlZmZlY3QtPmlucHV0
RWZmZWN0cygpID0geyBXVEZNb3ZlKGlucHV0MSksIFdURk1vdmUoaW5wdXQyKSB9OwogICAgIHJl
dHVybiBlZmZlY3Q7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRUNv
bXBvc2l0ZUVsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRUNvbXBvc2l0ZUVsZW1l
bnQuaAppbmRleCA4MWE3OGM4NjU3YTBmYTMwNDRkZjViN2M1YTA4MGQ2ZTc3OTcyMmY2Li43NGQ4
MTRjM2MyMGUwZmQzN2ViNmE4YjUzYWZmNTY5ZDhkMTFkY2EzIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9zdmcvU1ZHRkVDb21wb3NpdGVFbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUv
c3ZnL1NWR0ZFQ29tcG9zaXRlRWxlbWVudC5oCkBAIC0xMDksNyArMTA5LDcgQEAgcHJpdmF0ZToK
ICAgICB2b2lkIHN2Z0F0dHJpYnV0ZUNoYW5nZWQoY29uc3QgUXVhbGlmaWVkTmFtZSYpIG92ZXJy
aWRlOwogCiAgICAgYm9vbCBzZXRGaWx0ZXJFZmZlY3RBdHRyaWJ1dGUoRmlsdGVyRWZmZWN0Kiwg
Y29uc3QgUXVhbGlmaWVkTmFtZSYpIG92ZXJyaWRlOwotICAgIFJlZlB0cjxGaWx0ZXJFZmZlY3Q+
IGJ1aWxkKFNWR0ZpbHRlckJ1aWxkZXIqLCBGaWx0ZXImKSBjb25zdCBvdmVycmlkZTsKKyAgICBS
ZWZQdHI8RmlsdGVyRWZmZWN0PiBidWlsZChTVkdGaWx0ZXJCdWlsZGVyJikgY29uc3Qgb3ZlcnJp
ZGU7CiAKICAgICBQcm9wZXJ0eVJlZ2lzdHJ5IG1fcHJvcGVydHlSZWdpc3RyeSB7ICp0aGlzIH07
CiAgICAgUmVmPFNWR0FuaW1hdGVkU3RyaW5nPiBtX2luMSB7IFNWR0FuaW1hdGVkU3RyaW5nOjpj
cmVhdGUodGhpcykgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRUNvbnZv
bHZlTWF0cml4RWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVDb252b2x2ZU1h
dHJpeEVsZW1lbnQuY3BwCmluZGV4IGY3NTA1ODE1ZGVjYWJiNGVhMzRiNDM1YjQ3ZWE1YTgwYzZh
MjZkZjEuLjFhODEzNGE5YzhiN2ZjMGE1MDc1ZWRlODFhMGQzNjk3MGU5OGM0N2YgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRUNvbnZvbHZlTWF0cml4RWxlbWVudC5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFQ29udm9sdmVNYXRyaXhFbGVtZW50LmNwcApAQCAt
MTkxLDkgKzE5MSw5IEBAIHZvaWQgU1ZHRkVDb252b2x2ZU1hdHJpeEVsZW1lbnQ6OnN2Z0F0dHJp
YnV0ZUNoYW5nZWQoY29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0ck5hCiAgICAgU1ZHRmlsdGVyUHJp
bWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVzOjpzdmdBdHRyaWJ1dGVDaGFuZ2VkKGF0dHJOYW1lKTsK
IH0KIAotUmVmUHRyPEZpbHRlckVmZmVjdD4gU1ZHRkVDb252b2x2ZU1hdHJpeEVsZW1lbnQ6OmJ1
aWxkKFNWR0ZpbHRlckJ1aWxkZXIqIGZpbHRlckJ1aWxkZXIsIEZpbHRlciYgZmlsdGVyKSBjb25z
dAorUmVmUHRyPEZpbHRlckVmZmVjdD4gU1ZHRkVDb252b2x2ZU1hdHJpeEVsZW1lbnQ6OmJ1aWxk
KFNWR0ZpbHRlckJ1aWxkZXImIGZpbHRlckJ1aWxkZXIpIGNvbnN0CiB7Ci0gICAgYXV0byBpbnB1
dDEgPSBmaWx0ZXJCdWlsZGVyLT5nZXRFZmZlY3RCeUlkKGluMSgpKTsKKyAgICBhdXRvIGlucHV0
MSA9IGZpbHRlckJ1aWxkZXIuZ2V0RWZmZWN0QnlJZChpbjEoKSk7CiAKICAgICBpZiAoIWlucHV0
MSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CkBAIC0yNDYsOCArMjQ2LDggQEAgUmVmUHRyPEZp
bHRlckVmZmVjdD4gU1ZHRkVDb252b2x2ZU1hdHJpeEVsZW1lbnQ6OmJ1aWxkKFNWR0ZpbHRlckJ1
aWxkZXIqIGZpbHRlckIKICAgICAgICAgICAgIGRpdmlzb3JWYWx1ZSA9IDE7CiAgICAgfQogCi0g
ICAgYXV0byBlZmZlY3QgPSBGRUNvbnZvbHZlTWF0cml4OjpjcmVhdGUoZmlsdGVyLCBJbnRTaXpl
KG9yZGVyWFZhbHVlLCBvcmRlcllWYWx1ZSksIGRpdmlzb3JWYWx1ZSwgYmlhcygpLCBJbnRQb2lu
dCh0YXJnZXRYVmFsdWUsIHRhcmdldFlWYWx1ZSksIGVkZ2VNb2RlKCksIEZsb2F0UG9pbnQoa2Vy
bmVsVW5pdExlbmd0aFhWYWx1ZSwga2VybmVsVW5pdExlbmd0aFlWYWx1ZSksIHByZXNlcnZlQWxw
aGEoKSwga2VybmVsTWF0cml4KTsKLSAgICBlZmZlY3QtPmlucHV0RWZmZWN0cygpID0geyBpbnB1
dDEgfTsKKyAgICBhdXRvIGVmZmVjdCA9IEZFQ29udm9sdmVNYXRyaXg6OmNyZWF0ZShJbnRTaXpl
KG9yZGVyWFZhbHVlLCBvcmRlcllWYWx1ZSksIGRpdmlzb3JWYWx1ZSwgYmlhcygpLCBJbnRQb2lu
dCh0YXJnZXRYVmFsdWUsIHRhcmdldFlWYWx1ZSksIGVkZ2VNb2RlKCksIEZsb2F0UG9pbnQoa2Vy
bmVsVW5pdExlbmd0aFhWYWx1ZSwga2VybmVsVW5pdExlbmd0aFlWYWx1ZSksIHByZXNlcnZlQWxw
aGEoKSwga2VybmVsTWF0cml4KTsKKyAgICBlZmZlY3QtPmlucHV0RWZmZWN0cygpID0geyBXVEZN
b3ZlKGlucHV0MSkgfTsKICAgICByZXR1cm4gZWZmZWN0OwogfQogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9zdmcvU1ZHRkVDb252b2x2ZU1hdHJpeEVsZW1lbnQuaCBiL1NvdXJjZS9XZWJD
b3JlL3N2Zy9TVkdGRUNvbnZvbHZlTWF0cml4RWxlbWVudC5oCmluZGV4IDg1YzAwMjY5OGM2Mjc3
ZTA0MzcwZDM1OTgyYTk1YjhkOTA0OWIzMzkuLjFiNmJiZTQ4NzEyNzVjNDIxYzhkZDQ0MDljMWI0
ODk3Mjk1YWExMGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRUNvbnZvbHZl
TWF0cml4RWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRUNvbnZvbHZlTWF0
cml4RWxlbWVudC5oCkBAIC0xMDMsNyArMTAzLDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIHN2Z0F0
dHJpYnV0ZUNoYW5nZWQoY29uc3QgUXVhbGlmaWVkTmFtZSYpIG92ZXJyaWRlOwogCiAgICAgYm9v
bCBzZXRGaWx0ZXJFZmZlY3RBdHRyaWJ1dGUoRmlsdGVyRWZmZWN0KiwgY29uc3QgUXVhbGlmaWVk
TmFtZSYpIG92ZXJyaWRlOwotICAgIFJlZlB0cjxGaWx0ZXJFZmZlY3Q+IGJ1aWxkKFNWR0ZpbHRl
ckJ1aWxkZXIqLCBGaWx0ZXImKSBjb25zdCBvdmVycmlkZTsKKyAgICBSZWZQdHI8RmlsdGVyRWZm
ZWN0PiBidWlsZChTVkdGaWx0ZXJCdWlsZGVyJikgY29uc3Qgb3ZlcnJpZGU7CiAKICAgICBQcm9w
ZXJ0eVJlZ2lzdHJ5IG1fcHJvcGVydHlSZWdpc3RyeSB7ICp0aGlzIH07CiAgICAgUmVmPFNWR0Fu
aW1hdGVkU3RyaW5nPiBtX2luMSB7IFNWR0FuaW1hdGVkU3RyaW5nOjpjcmVhdGUodGhpcykgfTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRURpZmZ1c2VMaWdodGluZ0VsZW1l
bnQuY3BwIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFRGlmZnVzZUxpZ2h0aW5nRWxlbWVudC5j
cHAKaW5kZXggMTUyYzk4NWZkOGU5NWFlOTk1N2U2ZTIxZDZiZjJhMTBjNDU0YmRkNS4uZGQzOTQ1
OTVjZjcyNjQ4YTY3ZDUyOGExMzQxNTFkYTM2N2Y0YzY5OSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvc3ZnL1NWR0ZFRGlmZnVzZUxpZ2h0aW5nRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvc3ZnL1NWR0ZFRGlmZnVzZUxpZ2h0aW5nRWxlbWVudC5jcHAKQEAgLTE1MSw5ICsxNTEs
OSBAQCB2b2lkIFNWR0ZFRGlmZnVzZUxpZ2h0aW5nRWxlbWVudDo6bGlnaHRFbGVtZW50QXR0cmli
dXRlQ2hhbmdlZChjb25zdCBTVkdGRUxpZ2h0RQogICAgIHByaW1pdGl2ZUF0dHJpYnV0ZUNoYW5n
ZWQoYXR0ck5hbWUpOwogfQogCi1SZWZQdHI8RmlsdGVyRWZmZWN0PiBTVkdGRURpZmZ1c2VMaWdo
dGluZ0VsZW1lbnQ6OmJ1aWxkKFNWR0ZpbHRlckJ1aWxkZXIqIGZpbHRlckJ1aWxkZXIsIEZpbHRl
ciYgZmlsdGVyKSBjb25zdAorUmVmUHRyPEZpbHRlckVmZmVjdD4gU1ZHRkVEaWZmdXNlTGlnaHRp
bmdFbGVtZW50OjpidWlsZChTVkdGaWx0ZXJCdWlsZGVyJiBmaWx0ZXJCdWlsZGVyKSBjb25zdAog
ewotICAgIGF1dG8gaW5wdXQxID0gZmlsdGVyQnVpbGRlci0+Z2V0RWZmZWN0QnlJZChpbjEoKSk7
CisgICAgYXV0byBpbnB1dDEgPSBmaWx0ZXJCdWlsZGVyLmdldEVmZmVjdEJ5SWQoaW4xKCkpOwog
CiAgICAgaWYgKCFpbnB1dDEpCiAgICAgICAgIHJldHVybiBudWxscHRyOwpAQCAtMTYyLDcgKzE2
Miw3IEBAIFJlZlB0cjxGaWx0ZXJFZmZlY3Q+IFNWR0ZFRGlmZnVzZUxpZ2h0aW5nRWxlbWVudDo6
YnVpbGQoU1ZHRmlsdGVyQnVpbGRlciogZmlsdGVyCiAgICAgaWYgKCFsaWdodEVsZW1lbnQpCiAg
ICAgICAgIHJldHVybiBudWxscHRyOwogICAgIAotICAgIGF1dG8gbGlnaHRTb3VyY2UgPSBsaWdo
dEVsZW1lbnQtPmxpZ2h0U291cmNlKCpmaWx0ZXJCdWlsZGVyKTsKKyAgICBhdXRvIGxpZ2h0U291
cmNlID0gbGlnaHRFbGVtZW50LT5saWdodFNvdXJjZShmaWx0ZXJCdWlsZGVyKTsKIAogICAgIFJl
bmRlck9iamVjdCogcmVuZGVyZXIgPSB0aGlzLT5yZW5kZXJlcigpOwogICAgIGlmICghcmVuZGVy
ZXIpCkBAIC0xNzAsOCArMTcwLDggQEAgUmVmUHRyPEZpbHRlckVmZmVjdD4gU1ZHRkVEaWZmdXNl
TGlnaHRpbmdFbGVtZW50OjpidWlsZChTVkdGaWx0ZXJCdWlsZGVyKiBmaWx0ZXIKIAogICAgIENv
bG9yIGNvbG9yID0gcmVuZGVyZXItPnN0eWxlKCkuY29sb3JCeUFwcGx5aW5nQ29sb3JGaWx0ZXIo
cmVuZGVyZXItPnN0eWxlKCkuc3ZnU3R5bGUoKS5saWdodGluZ0NvbG9yKCkpOwogCi0gICAgYXV0
byBlZmZlY3QgPSBGRURpZmZ1c2VMaWdodGluZzo6Y3JlYXRlKGZpbHRlciwgY29sb3IsIHN1cmZh
Y2VTY2FsZSgpLCBkaWZmdXNlQ29uc3RhbnQoKSwga2VybmVsVW5pdExlbmd0aFgoKSwga2VybmVs
VW5pdExlbmd0aFkoKSwgV1RGTW92ZShsaWdodFNvdXJjZSkpOwotICAgIGVmZmVjdC0+aW5wdXRF
ZmZlY3RzKCkgPSB7IGlucHV0MSB9OworICAgIGF1dG8gZWZmZWN0ID0gRkVEaWZmdXNlTGlnaHRp
bmc6OmNyZWF0ZShjb2xvciwgc3VyZmFjZVNjYWxlKCksIGRpZmZ1c2VDb25zdGFudCgpLCBrZXJu
ZWxVbml0TGVuZ3RoWCgpLCBrZXJuZWxVbml0TGVuZ3RoWSgpLCBXVEZNb3ZlKGxpZ2h0U291cmNl
KSk7CisgICAgZWZmZWN0LT5pbnB1dEVmZmVjdHMoKSA9IHsgV1RGTW92ZShpbnB1dDEpIH07CiAg
ICAgcmV0dXJuIGVmZmVjdDsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NW
R0ZFRGlmZnVzZUxpZ2h0aW5nRWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFRGlm
ZnVzZUxpZ2h0aW5nRWxlbWVudC5oCmluZGV4IDY4OTk5NjA5ZjRiNmI1NmE3NmM4OGVhNTY5NWYx
ZTBlOWUyMDU1ODAuLmIyYWFjOGIwM2VkMjRkMjFkOThiNTE5ZmJhOGU1Zjk0NWNhMzA4MGQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRURpZmZ1c2VMaWdodGluZ0VsZW1lbnQu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVEaWZmdXNlTGlnaHRpbmdFbGVtZW50LmgK
QEAgLTU4LDcgKzU4LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIHN2Z0F0dHJpYnV0ZUNoYW5nZWQo
Y29uc3QgUXVhbGlmaWVkTmFtZSYpIG92ZXJyaWRlOwogCiAgICAgYm9vbCBzZXRGaWx0ZXJFZmZl
Y3RBdHRyaWJ1dGUoRmlsdGVyRWZmZWN0KiwgY29uc3QgUXVhbGlmaWVkTmFtZSYpIG92ZXJyaWRl
OwotICAgIFJlZlB0cjxGaWx0ZXJFZmZlY3Q+IGJ1aWxkKFNWR0ZpbHRlckJ1aWxkZXIqLCBGaWx0
ZXImKSBjb25zdCBvdmVycmlkZTsKKyAgICBSZWZQdHI8RmlsdGVyRWZmZWN0PiBidWlsZChTVkdG
aWx0ZXJCdWlsZGVyJikgY29uc3Qgb3ZlcnJpZGU7CiAKICAgICBQcm9wZXJ0eVJlZ2lzdHJ5IG1f
cHJvcGVydHlSZWdpc3RyeSB7ICp0aGlzIH07CiAgICAgUmVmPFNWR0FuaW1hdGVkU3RyaW5nPiBt
X2luMSB7IFNWR0FuaW1hdGVkU3RyaW5nOjpjcmVhdGUodGhpcykgfTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3N2Zy9TVkdGRURpc3BsYWNlbWVudE1hcEVsZW1lbnQuY3BwIGIvU291cmNl
L1dlYkNvcmUvc3ZnL1NWR0ZFRGlzcGxhY2VtZW50TWFwRWxlbWVudC5jcHAKaW5kZXggMGM1ZTgy
NWJjODI1NjBmMzZhMjY5ZWE2ZDcyMmRmZDA1MTczZDhjMi4uNjkwNzUxMzc1MDdkNmM2NDc0OWEx
YzhiYzQxMmEwYWVlNTFhMWEyZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZF
RGlzcGxhY2VtZW50TWFwRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZF
RGlzcGxhY2VtZW50TWFwRWxlbWVudC5jcHAKQEAgLTExNSwxOSArMTE1LDE2IEBAIHZvaWQgU1ZH
RkVEaXNwbGFjZW1lbnRNYXBFbGVtZW50OjpzdmdBdHRyaWJ1dGVDaGFuZ2VkKGNvbnN0IFF1YWxp
ZmllZE5hbWUmIGF0dHJOCiAgICAgU1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVz
OjpzdmdBdHRyaWJ1dGVDaGFuZ2VkKGF0dHJOYW1lKTsKIH0KIAotUmVmUHRyPEZpbHRlckVmZmVj
dD4gU1ZHRkVEaXNwbGFjZW1lbnRNYXBFbGVtZW50OjpidWlsZChTVkdGaWx0ZXJCdWlsZGVyKiBm
aWx0ZXJCdWlsZGVyLCBGaWx0ZXImIGZpbHRlcikgY29uc3QKK1JlZlB0cjxGaWx0ZXJFZmZlY3Q+
IFNWR0ZFRGlzcGxhY2VtZW50TWFwRWxlbWVudDo6YnVpbGQoU1ZHRmlsdGVyQnVpbGRlciYgZmls
dGVyQnVpbGRlcikgY29uc3QKIHsKLSAgICBhdXRvIGlucHV0MSA9IGZpbHRlckJ1aWxkZXItPmdl
dEVmZmVjdEJ5SWQoaW4xKCkpOwotICAgIGF1dG8gaW5wdXQyID0gZmlsdGVyQnVpbGRlci0+Z2V0
RWZmZWN0QnlJZChpbjIoKSk7CisgICAgYXV0byBpbnB1dDEgPSBmaWx0ZXJCdWlsZGVyLmdldEVm
ZmVjdEJ5SWQoaW4xKCkpOworICAgIGF1dG8gaW5wdXQyID0gZmlsdGVyQnVpbGRlci5nZXRFZmZl
Y3RCeUlkKGluMigpKTsKICAgICAKICAgICBpZiAoIWlucHV0MSB8fCAhaW5wdXQyKQogICAgICAg
ICByZXR1cm4gbnVsbHB0cjsKIAotICAgIGF1dG8gZWZmZWN0ID0gRkVEaXNwbGFjZW1lbnRNYXA6
OmNyZWF0ZShmaWx0ZXIsIHhDaGFubmVsU2VsZWN0b3IoKSwgeUNoYW5uZWxTZWxlY3RvcigpLCBz
Y2FsZSgpKTsKLSAgICBGaWx0ZXJFZmZlY3RWZWN0b3ImIGlucHV0RWZmZWN0cyA9IGVmZmVjdC0+
aW5wdXRFZmZlY3RzKCk7Ci0gICAgaW5wdXRFZmZlY3RzLnJlc2VydmVDYXBhY2l0eSgyKTsKLSAg
ICBpbnB1dEVmZmVjdHMuYXBwZW5kKGlucHV0MSk7Ci0gICAgaW5wdXRFZmZlY3RzLmFwcGVuZChp
bnB1dDIpOyAgICAKKyAgICBhdXRvIGVmZmVjdCA9IEZFRGlzcGxhY2VtZW50TWFwOjpjcmVhdGUo
eENoYW5uZWxTZWxlY3RvcigpLCB5Q2hhbm5lbFNlbGVjdG9yKCksIHNjYWxlKCkpOworICAgIGVm
ZmVjdC0+aW5wdXRFZmZlY3RzKCkgPSB7IFdURk1vdmUoaW5wdXQxKSwgV1RGTW92ZShpbnB1dDIp
IH07CiAgICAgcmV0dXJuIGVmZmVjdDsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
c3ZnL1NWR0ZFRGlzcGxhY2VtZW50TWFwRWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NW
R0ZFRGlzcGxhY2VtZW50TWFwRWxlbWVudC5oCmluZGV4IGFhOTFkZjM4YjM2Mjk4ZjEyMWExNDEx
YzRkMGFlNWVjZDU4NjY1ZDMuLmYyYzZkMGIxOGY4NWM5NGYzODRmNWJkMWJlZmMzNTllZGU4MjNl
NmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRURpc3BsYWNlbWVudE1hcEVs
ZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVEaXNwbGFjZW1lbnRNYXBFbGVt
ZW50LmgKQEAgLTkxLDcgKzkxLDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIHN2Z0F0dHJpYnV0ZUNo
YW5nZWQoY29uc3QgUXVhbGlmaWVkTmFtZSYpIG92ZXJyaWRlOwogCiAgICAgYm9vbCBzZXRGaWx0
ZXJFZmZlY3RBdHRyaWJ1dGUoRmlsdGVyRWZmZWN0KiwgY29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0
ck5hbWUpIG92ZXJyaWRlOwotICAgIFJlZlB0cjxGaWx0ZXJFZmZlY3Q+IGJ1aWxkKFNWR0ZpbHRl
ckJ1aWxkZXIqLCBGaWx0ZXImKSBjb25zdCBvdmVycmlkZTsKKyAgICBSZWZQdHI8RmlsdGVyRWZm
ZWN0PiBidWlsZChTVkdGaWx0ZXJCdWlsZGVyJikgY29uc3Qgb3ZlcnJpZGU7CiAKICAgICBQcm9w
ZXJ0eVJlZ2lzdHJ5IG1fcHJvcGVydHlSZWdpc3RyeSB7ICp0aGlzIH07CiAgICAgUmVmPFNWR0Fu
aW1hdGVkU3RyaW5nPiBtX2luMSB7IFNWR0FuaW1hdGVkU3RyaW5nOjpjcmVhdGUodGhpcykgfTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRURyb3BTaGFkb3dFbGVtZW50LmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRURyb3BTaGFkb3dFbGVtZW50LmNwcAppbmRleCAy
MmJjZTFkMzMzMTdjOTU3MWZlNWQ3OWY0YjMyNmE4OWJmYzViNjgxLi42NTdhYzE3NWEzMDg4MWU1
M2ZiZmY3MDhkY2YxNDE2MDVlODQwOTA3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcv
U1ZHRkVEcm9wU2hhZG93RWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZF
RHJvcFNoYWRvd0VsZW1lbnQuY3BwCkBAIC05Nyw4ICs5NywxMiBAQCB2b2lkIFNWR0ZFRHJvcFNo
YWRvd0VsZW1lbnQ6OnN2Z0F0dHJpYnV0ZUNoYW5nZWQoY29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0
ck5hbWUpCiAgICAgU1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVzOjpzdmdBdHRy
aWJ1dGVDaGFuZ2VkKGF0dHJOYW1lKTsKIH0KIAotUmVmUHRyPEZpbHRlckVmZmVjdD4gU1ZHRkVE
cm9wU2hhZG93RWxlbWVudDo6YnVpbGQoU1ZHRmlsdGVyQnVpbGRlciogZmlsdGVyQnVpbGRlciwg
RmlsdGVyJiBmaWx0ZXIpIGNvbnN0CitSZWZQdHI8RmlsdGVyRWZmZWN0PiBTVkdGRURyb3BTaGFk
b3dFbGVtZW50OjpidWlsZChTVkdGaWx0ZXJCdWlsZGVyJiBmaWx0ZXJCdWlsZGVyKSBjb25zdAog
eworICAgIGF1dG8gaW5wdXQxID0gZmlsdGVyQnVpbGRlci5nZXRFZmZlY3RCeUlkKGluMSgpKTsK
KyAgICBpZiAoIWlucHV0MSkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisKICAgICBSZW5kZXJP
YmplY3QqIHJlbmRlcmVyID0gdGhpcy0+cmVuZGVyZXIoKTsKICAgICBpZiAoIXJlbmRlcmVyKQog
ICAgICAgICByZXR1cm4gbnVsbHB0cjsKQEAgLTExMSwxMiArMTE1LDggQEAgUmVmUHRyPEZpbHRl
ckVmZmVjdD4gU1ZHRkVEcm9wU2hhZG93RWxlbWVudDo6YnVpbGQoU1ZHRmlsdGVyQnVpbGRlciog
ZmlsdGVyQnVpbGQKICAgICBDb2xvciBjb2xvciA9IHJlbmRlcmVyLT5zdHlsZSgpLmNvbG9yQnlB
cHBseWluZ0NvbG9yRmlsdGVyKHN2Z1N0eWxlLmZsb29kQ29sb3IoKSk7CiAgICAgZmxvYXQgb3Bh
Y2l0eSA9IHN2Z1N0eWxlLmZsb29kT3BhY2l0eSgpOwogCi0gICAgYXV0byBpbnB1dDEgPSBmaWx0
ZXJCdWlsZGVyLT5nZXRFZmZlY3RCeUlkKGluMSgpKTsKLSAgICBpZiAoIWlucHV0MSkKLSAgICAg
ICAgcmV0dXJuIG51bGxwdHI7Ci0KLSAgICBhdXRvIGVmZmVjdCA9IEZFRHJvcFNoYWRvdzo6Y3Jl
YXRlKGZpbHRlciwgc3RkRGV2aWF0aW9uWCgpLCBzdGREZXZpYXRpb25ZKCksIGR4KCksIGR5KCks
IGNvbG9yLCBvcGFjaXR5KTsKLSAgICBlZmZlY3QtPmlucHV0RWZmZWN0cygpID0geyBpbnB1dDEg
fTsKKyAgICBhdXRvIGVmZmVjdCA9IEZFRHJvcFNoYWRvdzo6Y3JlYXRlKHN0ZERldmlhdGlvblgo
KSwgc3RkRGV2aWF0aW9uWSgpLCBkeCgpLCBkeSgpLCBjb2xvciwgb3BhY2l0eSk7CisgICAgZWZm
ZWN0LT5pbnB1dEVmZmVjdHMoKSA9IHsgV1RGTW92ZShpbnB1dDEpIH07CiAgICAgcmV0dXJuIGVm
ZmVjdDsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFRHJvcFNoYWRv
d0VsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRURyb3BTaGFkb3dFbGVtZW50LmgK
aW5kZXggOWI2MmQyNGI0NTRiYjdkMjc1OGU3MTJiNjIxYjhjYmU0MmY3NDUxZC4uM2U0MDVkZTQ4
OWM2ODFhNzZjNDRmOWE4Mjk3MzNhMjAyNmI0ZDhmYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvc3ZnL1NWR0ZFRHJvcFNoYWRvd0VsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcv
U1ZHRkVEcm9wU2hhZG93RWxlbWVudC5oCkBAIC01Myw3ICs1Myw3IEBAIHByaXZhdGU6CiAgICAg
dm9pZCBwYXJzZUF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiwgY29uc3QgQXRvbVN0cmlu
ZyYpIG92ZXJyaWRlOwogICAgIHZvaWQgc3ZnQXR0cmlidXRlQ2hhbmdlZChjb25zdCBRdWFsaWZp
ZWROYW1lJikgb3ZlcnJpZGU7CiAKLSAgICBSZWZQdHI8RmlsdGVyRWZmZWN0PiBidWlsZChTVkdG
aWx0ZXJCdWlsZGVyKiwgRmlsdGVyJikgY29uc3Qgb3ZlcnJpZGU7CisgICAgUmVmUHRyPEZpbHRl
ckVmZmVjdD4gYnVpbGQoU1ZHRmlsdGVyQnVpbGRlciYpIGNvbnN0IG92ZXJyaWRlOwogCiAgICAg
UHJvcGVydHlSZWdpc3RyeSBtX3Byb3BlcnR5UmVnaXN0cnkgeyAqdGhpcyB9OwogICAgIFJlZjxT
VkdBbmltYXRlZFN0cmluZz4gbV9pbjEgeyBTVkdBbmltYXRlZFN0cmluZzo6Y3JlYXRlKHRoaXMp
IH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVGbG9vZEVsZW1lbnQuY3Bw
IGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFRmxvb2RFbGVtZW50LmNwcAppbmRleCBjMjI4ZTIy
ZDU2NWQwZTE2M2ZmODdkMGI0YmNhYmQyMjQ0NzU4ZmMyLi5mMzI4Y2M3YzE1ZWU3OTFiNGFhYmEz
YThlNzFhODA0YzgwOTNkY2ZlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVG
bG9vZEVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRUZsb29kRWxlbWVu
dC5jcHAKQEAgLTU4LDcgKzU4LDcgQEAgYm9vbCBTVkdGRUZsb29kRWxlbWVudDo6c2V0RmlsdGVy
RWZmZWN0QXR0cmlidXRlKEZpbHRlckVmZmVjdCogZWZmZWN0LCBjb25zdCBRdWEKICAgICByZXR1
cm4gZmFsc2U7CiB9CiAKLVJlZlB0cjxGaWx0ZXJFZmZlY3Q+IFNWR0ZFRmxvb2RFbGVtZW50Ojpi
dWlsZChTVkdGaWx0ZXJCdWlsZGVyKiwgRmlsdGVyJiBmaWx0ZXIpIGNvbnN0CitSZWZQdHI8Rmls
dGVyRWZmZWN0PiBTVkdGRUZsb29kRWxlbWVudDo6YnVpbGQoU1ZHRmlsdGVyQnVpbGRlciYpIGNv
bnN0CiB7CiAgICAgUmVuZGVyT2JqZWN0KiByZW5kZXJlciA9IHRoaXMtPnJlbmRlcmVyKCk7CiAg
ICAgaWYgKCFyZW5kZXJlcikKQEAgLTY5LDcgKzY5LDcgQEAgUmVmUHRyPEZpbHRlckVmZmVjdD4g
U1ZHRkVGbG9vZEVsZW1lbnQ6OmJ1aWxkKFNWR0ZpbHRlckJ1aWxkZXIqLCBGaWx0ZXImIGZpbHRl
cikKICAgICBDb2xvciBjb2xvciA9IHJlbmRlcmVyLT5zdHlsZSgpLmNvbG9yQnlBcHBseWluZ0Nv
bG9yRmlsdGVyKHN2Z1N0eWxlLmZsb29kQ29sb3IoKSk7CiAgICAgZmxvYXQgb3BhY2l0eSA9IHN2
Z1N0eWxlLmZsb29kT3BhY2l0eSgpOwogCi0gICAgcmV0dXJuIEZFRmxvb2Q6OmNyZWF0ZShmaWx0
ZXIsIGNvbG9yLCBvcGFjaXR5KTsKKyAgICByZXR1cm4gRkVGbG9vZDo6Y3JlYXRlKGNvbG9yLCBv
cGFjaXR5KTsKIH0KIAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFRmxv
b2RFbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVGbG9vZEVsZW1lbnQuaAppbmRl
eCBiOTZhNDNhYTMxM2U3NWU0YTMxNjcyNDhhMWI2ZjVjZjUxZmVlOTExLi5hZWQ2NjkxOTMzYmQw
MmYzMzAxYTkyMzk3Yjc0MDU5ZmY2YmVjNGJlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9z
dmcvU1ZHRkVGbG9vZEVsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVGbG9v
ZEVsZW1lbnQuaApAQCAtMzYsNyArMzYsNyBAQCBwcml2YXRlOgogICAgIGNvbnN0IFNWR1Byb3Bl
cnR5UmVnaXN0cnkmIHByb3BlcnR5UmVnaXN0cnkoKSBjb25zdCBmaW5hbCB7IHJldHVybiBtX3By
b3BlcnR5UmVnaXN0cnk7IH0KIAogICAgIGJvb2wgc2V0RmlsdGVyRWZmZWN0QXR0cmlidXRlKEZp
bHRlckVmZmVjdCosIGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0dHJOYW1lKSBvdmVycmlkZTsKLSAg
ICBSZWZQdHI8RmlsdGVyRWZmZWN0PiBidWlsZChTVkdGaWx0ZXJCdWlsZGVyKiwgRmlsdGVyJikg
Y29uc3Qgb3ZlcnJpZGU7CisgICAgUmVmUHRyPEZpbHRlckVmZmVjdD4gYnVpbGQoU1ZHRmlsdGVy
QnVpbGRlciYpIGNvbnN0IG92ZXJyaWRlOwogCiAgICAgUHJvcGVydHlSZWdpc3RyeSBtX3Byb3Bl
cnR5UmVnaXN0cnkgeyAqdGhpcyB9OwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2
Zy9TVkdGRUdhdXNzaWFuQmx1ckVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZF
R2F1c3NpYW5CbHVyRWxlbWVudC5jcHAKaW5kZXggN2E5OTgyMjRjOTIxOTU1NTI0NGE4NjljYTc4
YTgzMGQ1NjNjNTk5ZC4uZjFlNmJmNDlhNGRiM2RjYTc3NWM5YjdlZmE1ZGI5ZGM4Njk4ODcyYSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFR2F1c3NpYW5CbHVyRWxlbWVudC5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFR2F1c3NpYW5CbHVyRWxlbWVudC5jcHAK
QEAgLTk1LDE3ICs5NSwxNyBAQCB2b2lkIFNWR0ZFR2F1c3NpYW5CbHVyRWxlbWVudDo6c3ZnQXR0
cmlidXRlQ2hhbmdlZChjb25zdCBRdWFsaWZpZWROYW1lJiBhdHRyTmFtZQogICAgIFNWR0ZpbHRl
clByaW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlczo6c3ZnQXR0cmlidXRlQ2hhbmdlZChhdHRyTmFt
ZSk7CiB9CiAKLVJlZlB0cjxGaWx0ZXJFZmZlY3Q+IFNWR0ZFR2F1c3NpYW5CbHVyRWxlbWVudDo6
YnVpbGQoU1ZHRmlsdGVyQnVpbGRlciogZmlsdGVyQnVpbGRlciwgRmlsdGVyJiBmaWx0ZXIpIGNv
bnN0CitSZWZQdHI8RmlsdGVyRWZmZWN0PiBTVkdGRUdhdXNzaWFuQmx1ckVsZW1lbnQ6OmJ1aWxk
KFNWR0ZpbHRlckJ1aWxkZXImIGZpbHRlckJ1aWxkZXIpIGNvbnN0CiB7Ci0gICAgYXV0byBpbnB1
dDEgPSBmaWx0ZXJCdWlsZGVyLT5nZXRFZmZlY3RCeUlkKGluMSgpKTsKKyAgICBhdXRvIGlucHV0
MSA9IGZpbHRlckJ1aWxkZXIuZ2V0RWZmZWN0QnlJZChpbjEoKSk7CiAgICAgaWYgKCFpbnB1dDEp
CiAgICAgICAgIHJldHVybiBudWxscHRyOwogCiAgICAgaWYgKHN0ZERldmlhdGlvblgoKSA8IDAg
fHwgc3RkRGV2aWF0aW9uWSgpIDwgMCkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKLSAgICBh
dXRvIGVmZmVjdCA9IEZFR2F1c3NpYW5CbHVyOjpjcmVhdGUoZmlsdGVyLCBzdGREZXZpYXRpb25Y
KCksIHN0ZERldmlhdGlvblkoKSwgZWRnZU1vZGUoKSk7Ci0gICAgZWZmZWN0LT5pbnB1dEVmZmVj
dHMoKSA9IHsgaW5wdXQxIH07CisgICAgYXV0byBlZmZlY3QgPSBGRUdhdXNzaWFuQmx1cjo6Y3Jl
YXRlKHN0ZERldmlhdGlvblgoKSwgc3RkRGV2aWF0aW9uWSgpLCBlZGdlTW9kZSgpKTsKKyAgICBl
ZmZlY3QtPmlucHV0RWZmZWN0cygpID0geyBXVEZNb3ZlKGlucHV0MSkgfTsKICAgICByZXR1cm4g
ZWZmZWN0OwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVHYXVzc2lh
bkJsdXJFbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVHYXVzc2lhbkJsdXJFbGVt
ZW50LmgKaW5kZXggZDg5ZTFhNzQ4ZmIyYzUwOWUyMTRmZTk0YWU0MTAwMWNlNDhlZTBiMi4uZjQw
ZWIzMzc3OGM0M2RmNjFlZTU4OTYzZWVjZjllY2RiYTU0OWNjMSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvc3ZnL1NWR0ZFR2F1c3NpYW5CbHVyRWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3N2Zy9TVkdGRUdhdXNzaWFuQmx1ckVsZW1lbnQuaApAQCAtNTMsNyArNTMsNyBAQCBwcml2
YXRlOgogICAgIHZvaWQgcGFyc2VBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYsIGNvbnN0
IEF0b21TdHJpbmcmKSBvdmVycmlkZTsKICAgICB2b2lkIHN2Z0F0dHJpYnV0ZUNoYW5nZWQoY29u
c3QgUXVhbGlmaWVkTmFtZSYpIG92ZXJyaWRlOwogCi0gICAgUmVmUHRyPEZpbHRlckVmZmVjdD4g
YnVpbGQoU1ZHRmlsdGVyQnVpbGRlciosIEZpbHRlciYpIGNvbnN0IG92ZXJyaWRlOworICAgIFJl
ZlB0cjxGaWx0ZXJFZmZlY3Q+IGJ1aWxkKFNWR0ZpbHRlckJ1aWxkZXImKSBjb25zdCBvdmVycmlk
ZTsKIAogICAgIFByb3BlcnR5UmVnaXN0cnkgbV9wcm9wZXJ0eVJlZ2lzdHJ5IHsgKnRoaXMgfTsK
ICAgICBSZWY8U1ZHQW5pbWF0ZWRTdHJpbmc+IG1faW4xIHsgU1ZHQW5pbWF0ZWRTdHJpbmc6OmNy
ZWF0ZSh0aGlzKSB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFSW1hZ2VF
bGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRUltYWdlRWxlbWVudC5jcHAKaW5k
ZXggN2Y4Nzg1YTIxZmYwMmJkZjg2NTZiNDhmOWE5OTg2OTY4MDMzMmY2Yy4uM2NiYmMyNGJjNjky
YjA2YTMyOWY4MGZkZDBmZGU3ODdlMDA2ODA4NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
c3ZnL1NWR0ZFSW1hZ2VFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVJ
bWFnZUVsZW1lbnQuY3BwCkBAIC0yMDgsMTYgKzIwOCwxNiBAQCBzdGQ6OnR1cGxlPFJlZlB0cjxJ
bWFnZUJ1ZmZlcj4sIEZsb2F0UmVjdD4gU1ZHRkVJbWFnZUVsZW1lbnQ6OmltYWdlQnVmZmVyRm9y
RWZmZQogICAgIHJldHVybiB7IGltYWdlQnVmZmVyLCBpbWFnZVJlY3QgfTsKIH0KIAotUmVmUHRy
PEZpbHRlckVmZmVjdD4gU1ZHRkVJbWFnZUVsZW1lbnQ6OmJ1aWxkKFNWR0ZpbHRlckJ1aWxkZXIq
LCBGaWx0ZXImIGZpbHRlcikgY29uc3QKK1JlZlB0cjxGaWx0ZXJFZmZlY3Q+IFNWR0ZFSW1hZ2VF
bGVtZW50OjpidWlsZChTVkdGaWx0ZXJCdWlsZGVyJikgY29uc3QKIHsKICAgICBpZiAobV9jYWNo
ZWRJbWFnZSkKLSAgICAgICAgcmV0dXJuIEZFSW1hZ2U6OmNyZWF0ZShmaWx0ZXIsIFJlZjxJbWFn
ZT4geyAqbV9jYWNoZWRJbWFnZS0+aW1hZ2VGb3JSZW5kZXJlcihyZW5kZXJlcigpKSB9LCBwcmVz
ZXJ2ZUFzcGVjdFJhdGlvKCkpOworICAgICAgICByZXR1cm4gRkVJbWFnZTo6Y3JlYXRlKFJlZjxJ
bWFnZT4geyAqbV9jYWNoZWRJbWFnZS0+aW1hZ2VGb3JSZW5kZXJlcihyZW5kZXJlcigpKSB9LCBw
cmVzZXJ2ZUFzcGVjdFJhdGlvKCkpOwogCiAgICAgYXV0byBbaW1hZ2VCdWZmZXIsIGltYWdlUmVj
dF0gPSBpbWFnZUJ1ZmZlckZvckVmZmVjdCgpOwogICAgIGlmICghaW1hZ2VCdWZmZXIpCiAgICAg
ICAgIHJldHVybiBudWxscHRyOwogCi0gICAgcmV0dXJuIEZFSW1hZ2U6OmNyZWF0ZShmaWx0ZXIs
IGltYWdlQnVmZmVyLnJlbGVhc2VOb25OdWxsKCksIGltYWdlUmVjdCwgcHJlc2VydmVBc3BlY3RS
YXRpbygpKTsKKyAgICByZXR1cm4gRkVJbWFnZTo6Y3JlYXRlKGltYWdlQnVmZmVyLnJlbGVhc2VO
b25OdWxsKCksIGltYWdlUmVjdCwgcHJlc2VydmVBc3BlY3RSYXRpbygpKTsKIH0KIAogdm9pZCBT
VkdGRUltYWdlRWxlbWVudDo6YWRkU3VicmVzb3VyY2VBdHRyaWJ1dGVVUkxzKExpc3RIYXNoU2V0
PFVSTD4mIHVybHMpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVJ
bWFnZUVsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRUltYWdlRWxlbWVudC5oCmlu
ZGV4IDYwY2UxMDJjMGY3MmFjODhjYTkwMDEwMzczZDY2NGM2NjMyZDRiZTEuLmRmOWQ2ZWYwNDFl
NTRiMmFiZDIyMDA1ZDkwMzRiYmE2OWUyNWJlNTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3N2Zy9TVkdGRUltYWdlRWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRUlt
YWdlRWxlbWVudC5oCkBAIC01Nyw3ICs1Nyw3IEBAIHByaXZhdGU6CiAKICAgICBzdGQ6OnR1cGxl
PFJlZlB0cjxJbWFnZUJ1ZmZlcj4sIEZsb2F0UmVjdD4gaW1hZ2VCdWZmZXJGb3JFZmZlY3QoKSBj
b25zdDsKIAotICAgIFJlZlB0cjxGaWx0ZXJFZmZlY3Q+IGJ1aWxkKFNWR0ZpbHRlckJ1aWxkZXIq
LCBGaWx0ZXImKSBjb25zdCBvdmVycmlkZTsKKyAgICBSZWZQdHI8RmlsdGVyRWZmZWN0PiBidWls
ZChTVkdGaWx0ZXJCdWlsZGVyJikgY29uc3Qgb3ZlcnJpZGU7CiAKICAgICB2b2lkIGNsZWFyUmVz
b3VyY2VSZWZlcmVuY2VzKCk7CiAgICAgdm9pZCByZXF1ZXN0SW1hZ2VSZXNvdXJjZSgpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFTWVyZ2VFbGVtZW50LmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3N2Zy9TVkdGRU1lcmdlRWxlbWVudC5jcHAKaW5kZXggYmUyZjZlMDMwN2RjNTUx
NjAwNzkwZmQ1YmYxODJmMWQ5NDYyM2RkNi4uZmI0OTNlNTlkZDgyYmM2OWFkNzkxYjM3NWNlOGE4
MjkyY2Q3YzgxZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFTWVyZ2VFbGVt
ZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVNZXJnZUVsZW1lbnQuY3BwCkBA
IC00NSwxMyArNDUsMTIgQEAgUmVmPFNWR0ZFTWVyZ2VFbGVtZW50PiBTVkdGRU1lcmdlRWxlbWVu
dDo6Y3JlYXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIHRhZ05hbWUsIEQKICAgICByZXR1cm4gYWRv
cHRSZWYoKm5ldyBTVkdGRU1lcmdlRWxlbWVudCh0YWdOYW1lLCBkb2N1bWVudCkpOwogfQogCi1S
ZWZQdHI8RmlsdGVyRWZmZWN0PiBTVkdGRU1lcmdlRWxlbWVudDo6YnVpbGQoU1ZHRmlsdGVyQnVp
bGRlciogZmlsdGVyQnVpbGRlciwgRmlsdGVyJiBmaWx0ZXIpIGNvbnN0CitSZWZQdHI8RmlsdGVy
RWZmZWN0PiBTVkdGRU1lcmdlRWxlbWVudDo6YnVpbGQoU1ZHRmlsdGVyQnVpbGRlciYgZmlsdGVy
QnVpbGRlcikgY29uc3QKIHsKLSAgICBhdXRvIGVmZmVjdCA9IEZFTWVyZ2U6OmNyZWF0ZShmaWx0
ZXIpOwotICAgIGF1dG8mIG1lcmdlSW5wdXRzID0gZWZmZWN0LT5pbnB1dEVmZmVjdHMoKTsKKyAg
ICBGaWx0ZXJFZmZlY3RWZWN0b3IgbWVyZ2VJbnB1dHM7CiAKICAgICBmb3IgKGF1dG8mIG1lcmdl
Tm9kZSA6IGNoaWxkcmVuT2ZUeXBlPFNWR0ZFTWVyZ2VOb2RlRWxlbWVudD4oKnRoaXMpKSB7Ci0g
ICAgICAgIGF1dG8gbWVyZ2VFZmZlY3QgPSBmaWx0ZXJCdWlsZGVyLT5nZXRFZmZlY3RCeUlkKG1l
cmdlTm9kZS5pbjEoKSk7CisgICAgICAgIGF1dG8gbWVyZ2VFZmZlY3QgPSBmaWx0ZXJCdWlsZGVy
LmdldEVmZmVjdEJ5SWQobWVyZ2VOb2RlLmluMSgpKTsKICAgICAgICAgaWYgKCFtZXJnZUVmZmVj
dCkKICAgICAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgICAgICBtZXJnZUlucHV0cy5hcHBl
bmQoV1RGTW92ZShtZXJnZUVmZmVjdCkpOwpAQCAtNjIsNiArNjEsOCBAQCBSZWZQdHI8RmlsdGVy
RWZmZWN0PiBTVkdGRU1lcmdlRWxlbWVudDo6YnVpbGQoU1ZHRmlsdGVyQnVpbGRlciogZmlsdGVy
QnVpbGRlciwgRgogICAgIGlmIChtZXJnZUlucHV0cy5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVy
biBudWxscHRyOwogCisgICAgYXV0byBlZmZlY3QgPSBGRU1lcmdlOjpjcmVhdGUoKTsKKyAgICBl
ZmZlY3QtPmlucHV0RWZmZWN0cygpID0gV1RGTW92ZShtZXJnZUlucHV0cyk7CiAgICAgcmV0dXJu
IGVmZmVjdDsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFTWVyZ2VF
bGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVNZXJnZUVsZW1lbnQuaAppbmRleCA3
NDUwODY4MTZmNjk3NmM2Njk3ZGM1MTA3NTgwMmQyODNjZjRlM2MyLi40MzdjZDcyNTYzMmM1ZjRj
NTI0ODk0Y2MzMjZjYTA5YjQxOTg1MTdmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcv
U1ZHRkVNZXJnZUVsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVNZXJnZUVs
ZW1lbnQuaApAQCAtMzUsNyArMzUsNyBAQCBwcml2YXRlOgogICAgIHVzaW5nIFByb3BlcnR5UmVn
aXN0cnkgPSBTVkdQcm9wZXJ0eU93bmVyUmVnaXN0cnk8U1ZHRkVNZXJnZUVsZW1lbnQsIFNWR0Zp
bHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlcz47CiAgICAgY29uc3QgU1ZHUHJvcGVydHlS
ZWdpc3RyeSYgcHJvcGVydHlSZWdpc3RyeSgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1fcHJvcGVy
dHlSZWdpc3RyeTsgfQogCi0gICAgUmVmUHRyPEZpbHRlckVmZmVjdD4gYnVpbGQoU1ZHRmlsdGVy
QnVpbGRlciosIEZpbHRlciYpIGNvbnN0IG92ZXJyaWRlOworICAgIFJlZlB0cjxGaWx0ZXJFZmZl
Y3Q+IGJ1aWxkKFNWR0ZpbHRlckJ1aWxkZXImKSBjb25zdCBvdmVycmlkZTsKIAogICAgIFByb3Bl
cnR5UmVnaXN0cnkgbV9wcm9wZXJ0eVJlZ2lzdHJ5IHsgKnRoaXMgfTsKIH07CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVNb3JwaG9sb2d5RWxlbWVudC5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9zdmcvU1ZHRkVNb3JwaG9sb2d5RWxlbWVudC5jcHAKaW5kZXggZDZmYjk1YzhlMzc3
NmU2ZDIwOTNiZWFjZTM1ZTJlZDE3OTVkMzIxYi4uOGIwNTYwYzRkYTgwMDM5NzAxNDhlMWUxNWUy
ZjMwOTdiOTE1MzE1NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFTW9ycGhv
bG9neUVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRU1vcnBob2xvZ3lF
bGVtZW50LmNwcApAQCAtMTE0LDIwICsxMTQsMTkgQEAgdm9pZCBTVkdGRU1vcnBob2xvZ3lFbGVt
ZW50OjpzdmdBdHRyaWJ1dGVDaGFuZ2VkKGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0dHJOYW1lKQog
ICAgIFNWR0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlczo6c3ZnQXR0cmlidXRlQ2hh
bmdlZChhdHRyTmFtZSk7CiB9CiAKLVJlZlB0cjxGaWx0ZXJFZmZlY3Q+IFNWR0ZFTW9ycGhvbG9n
eUVsZW1lbnQ6OmJ1aWxkKFNWR0ZpbHRlckJ1aWxkZXIqIGZpbHRlckJ1aWxkZXIsIEZpbHRlciYg
ZmlsdGVyKSBjb25zdAorUmVmUHRyPEZpbHRlckVmZmVjdD4gU1ZHRkVNb3JwaG9sb2d5RWxlbWVu
dDo6YnVpbGQoU1ZHRmlsdGVyQnVpbGRlciYgZmlsdGVyQnVpbGRlcikgY29uc3QKIHsKLSAgICBh
dXRvIGlucHV0MSA9IGZpbHRlckJ1aWxkZXItPmdldEVmZmVjdEJ5SWQoaW4xKCkpOwotICAgIGZs
b2F0IHhSYWRpdXMgPSByYWRpdXNYKCk7Ci0gICAgZmxvYXQgeVJhZGl1cyA9IHJhZGl1c1koKTsK
LQorICAgIGF1dG8gaW5wdXQxID0gZmlsdGVyQnVpbGRlci5nZXRFZmZlY3RCeUlkKGluMSgpKTsK
ICAgICBpZiAoIWlucHV0MSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKKyAgICBmbG9hdCB4
UmFkaXVzID0gcmFkaXVzWCgpOworICAgIGZsb2F0IHlSYWRpdXMgPSByYWRpdXNZKCk7CiAgICAg
aWYgKHhSYWRpdXMgPCAwIHx8IHlSYWRpdXMgPCAwKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsK
IAotICAgIGF1dG8gZWZmZWN0ID0gRkVNb3JwaG9sb2d5OjpjcmVhdGUoZmlsdGVyLCBzdmdPcGVy
YXRvcigpLCB4UmFkaXVzLCB5UmFkaXVzKTsKLSAgICBlZmZlY3QtPmlucHV0RWZmZWN0cygpID0g
eyBpbnB1dDEgfTsKKyAgICBhdXRvIGVmZmVjdCA9IEZFTW9ycGhvbG9neTo6Y3JlYXRlKHN2Z09w
ZXJhdG9yKCksIHhSYWRpdXMsIHlSYWRpdXMpOworICAgIGVmZmVjdC0+aW5wdXRFZmZlY3RzKCkg
PSB7IFdURk1vdmUoaW5wdXQxKSB9OwogICAgIHJldHVybiBlZmZlY3Q7CiB9CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRU1vcnBob2xvZ3lFbGVtZW50LmggYi9Tb3VyY2Uv
V2ViQ29yZS9zdmcvU1ZHRkVNb3JwaG9sb2d5RWxlbWVudC5oCmluZGV4IDFhOTA4OGI3NWNmOGQ4
NWFlMzhmMjkzZTExMTk4YTY2ZjY2YWE2NjkuLmIyMWI2ZjVjNDdiNzg1ZGYyOGYwMTNlZGU1NDAx
Yzg2NmQ0MGU5ZGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRU1vcnBob2xv
Z3lFbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFTW9ycGhvbG9neUVsZW1l
bnQuaApAQCAtODEsNyArODEsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgc3ZnQXR0cmlidXRlQ2hh
bmdlZChjb25zdCBRdWFsaWZpZWROYW1lJikgb3ZlcnJpZGU7CiAKICAgICBib29sIHNldEZpbHRl
ckVmZmVjdEF0dHJpYnV0ZShGaWx0ZXJFZmZlY3QqLCBjb25zdCBRdWFsaWZpZWROYW1lJikgb3Zl
cnJpZGU7Ci0gICAgUmVmUHRyPEZpbHRlckVmZmVjdD4gYnVpbGQoU1ZHRmlsdGVyQnVpbGRlcios
IEZpbHRlciYpIGNvbnN0IG92ZXJyaWRlOworICAgIFJlZlB0cjxGaWx0ZXJFZmZlY3Q+IGJ1aWxk
KFNWR0ZpbHRlckJ1aWxkZXImKSBjb25zdCBvdmVycmlkZTsKIAogICAgIFByb3BlcnR5UmVnaXN0
cnkgbV9wcm9wZXJ0eVJlZ2lzdHJ5IHsgKnRoaXMgfTsKICAgICBSZWY8U1ZHQW5pbWF0ZWRTdHJp
bmc+IG1faW4xIHsgU1ZHQW5pbWF0ZWRTdHJpbmc6OmNyZWF0ZSh0aGlzKSB9OwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFT2Zmc2V0RWxlbWVudC5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9zdmcvU1ZHRkVPZmZzZXRFbGVtZW50LmNwcAppbmRleCAwMzgyNjhiODliMmYxOWY5YmU1
Njg3MzlkMTIzMDM1NDEwMGE1ZWU3Li4zMzc5MGE2YTU0MDEyNzlmYjI4YzIzZmQ5NGRlOWI1NTIw
OWY3YTNjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVPZmZzZXRFbGVtZW50
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVPZmZzZXRFbGVtZW50LmNwcApAQCAt
ODEsMTUgKzgxLDE0IEBAIHZvaWQgU1ZHRkVPZmZzZXRFbGVtZW50OjpzdmdBdHRyaWJ1dGVDaGFu
Z2VkKGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0dHJOYW1lKQogICAgIFNWR0ZpbHRlclByaW1pdGl2
ZVN0YW5kYXJkQXR0cmlidXRlczo6c3ZnQXR0cmlidXRlQ2hhbmdlZChhdHRyTmFtZSk7CiB9CiAK
LVJlZlB0cjxGaWx0ZXJFZmZlY3Q+IFNWR0ZFT2Zmc2V0RWxlbWVudDo6YnVpbGQoU1ZHRmlsdGVy
QnVpbGRlciogZmlsdGVyQnVpbGRlciwgRmlsdGVyJiBmaWx0ZXIpIGNvbnN0CitSZWZQdHI8Rmls
dGVyRWZmZWN0PiBTVkdGRU9mZnNldEVsZW1lbnQ6OmJ1aWxkKFNWR0ZpbHRlckJ1aWxkZXImIGZp
bHRlckJ1aWxkZXIpIGNvbnN0CiB7Ci0gICAgYXV0byBpbnB1dDEgPSBmaWx0ZXJCdWlsZGVyLT5n
ZXRFZmZlY3RCeUlkKGluMSgpKTsKLQorICAgIGF1dG8gaW5wdXQxID0gZmlsdGVyQnVpbGRlci5n
ZXRFZmZlY3RCeUlkKGluMSgpKTsKICAgICBpZiAoIWlucHV0MSkKICAgICAgICAgcmV0dXJuIG51
bGxwdHI7CiAKLSAgICBhdXRvIGVmZmVjdCA9IEZFT2Zmc2V0OjpjcmVhdGUoZmlsdGVyLCBkeCgp
LCBkeSgpKTsKLSAgICBlZmZlY3QtPmlucHV0RWZmZWN0cygpID0geyBpbnB1dDEgfTsKKyAgICBh
dXRvIGVmZmVjdCA9IEZFT2Zmc2V0OjpjcmVhdGUoZHgoKSwgZHkoKSk7CisgICAgZWZmZWN0LT5p
bnB1dEVmZmVjdHMoKSA9IHsgV1RGTW92ZShpbnB1dDEpIH07CiAgICAgcmV0dXJuIGVmZmVjdDsK
IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFT2Zmc2V0RWxlbWVudC5o
IGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFT2Zmc2V0RWxlbWVudC5oCmluZGV4IDU3NDczZGNj
NzJkYjY3YjEyNWVhMmVkNDY1ZTM1YjU3MzcwNDliZWUuLjg5OTZmMjgyYjAxZThkOWNkNjY3YmYy
MGI1Y2Q5ODhhNTk5YWY4ODggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRU9m
ZnNldEVsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVPZmZzZXRFbGVtZW50
LmgKQEAgLTQ3LDcgKzQ3LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIHBhcnNlQXR0cmlidXRlKGNv
bnN0IFF1YWxpZmllZE5hbWUmLCBjb25zdCBBdG9tU3RyaW5nJikgb3ZlcnJpZGU7CiAgICAgdm9p
ZCBzdmdBdHRyaWJ1dGVDaGFuZ2VkKGNvbnN0IFF1YWxpZmllZE5hbWUmKSBvdmVycmlkZTsKIAot
ICAgIFJlZlB0cjxGaWx0ZXJFZmZlY3Q+IGJ1aWxkKFNWR0ZpbHRlckJ1aWxkZXIqLCBGaWx0ZXIm
KSBjb25zdCBvdmVycmlkZTsKKyAgICBSZWZQdHI8RmlsdGVyRWZmZWN0PiBidWlsZChTVkdGaWx0
ZXJCdWlsZGVyJikgY29uc3Qgb3ZlcnJpZGU7CiAKICAgICBQcm9wZXJ0eVJlZ2lzdHJ5IG1fcHJv
cGVydHlSZWdpc3RyeSB7ICp0aGlzIH07CiAgICAgUmVmPFNWR0FuaW1hdGVkU3RyaW5nPiBtX2lu
MSB7IFNWR0FuaW1hdGVkU3RyaW5nOjpjcmVhdGUodGhpcykgfTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3N2Zy9TVkdGRVNwZWN1bGFyTGlnaHRpbmdFbGVtZW50LmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3N2Zy9TVkdGRVNwZWN1bGFyTGlnaHRpbmdFbGVtZW50LmNwcAppbmRleCA5YjdjZTQw
YWI5NzE2YWU0ZjMzNWY1NGIyNGNkYTQ1OWE4NDI5YTU5Li5kMjg5NDNhMjMzYzVmMzBhMjc0NTYy
Y2RlYjQxM2JhZWUyZDU1ZjdlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVT
cGVjdWxhckxpZ2h0aW5nRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZF
U3BlY3VsYXJMaWdodGluZ0VsZW1lbnQuY3BwCkBAIC0xNjAsMTAgKzE2MCw5IEBAIHZvaWQgU1ZH
RkVTcGVjdWxhckxpZ2h0aW5nRWxlbWVudDo6bGlnaHRFbGVtZW50QXR0cmlidXRlQ2hhbmdlZChj
b25zdCBTVkdGRUxpZ2h0CiAgICAgcHJpbWl0aXZlQXR0cmlidXRlQ2hhbmdlZChhdHRyTmFtZSk7
CiB9CiAKLVJlZlB0cjxGaWx0ZXJFZmZlY3Q+IFNWR0ZFU3BlY3VsYXJMaWdodGluZ0VsZW1lbnQ6
OmJ1aWxkKFNWR0ZpbHRlckJ1aWxkZXIqIGZpbHRlckJ1aWxkZXIsIEZpbHRlciYgZmlsdGVyKSBj
b25zdAorUmVmUHRyPEZpbHRlckVmZmVjdD4gU1ZHRkVTcGVjdWxhckxpZ2h0aW5nRWxlbWVudDo6
YnVpbGQoU1ZHRmlsdGVyQnVpbGRlciYgZmlsdGVyQnVpbGRlcikgY29uc3QKIHsKLSAgICBhdXRv
IGlucHV0MSA9IGZpbHRlckJ1aWxkZXItPmdldEVmZmVjdEJ5SWQoaW4xKCkpOwotCisgICAgYXV0
byBpbnB1dDEgPSBmaWx0ZXJCdWlsZGVyLmdldEVmZmVjdEJ5SWQoaW4xKCkpOwogICAgIGlmICgh
aW5wdXQxKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIApAQCAtMTcxLDcgKzE3MCw3IEBAIFJl
ZlB0cjxGaWx0ZXJFZmZlY3Q+IFNWR0ZFU3BlY3VsYXJMaWdodGluZ0VsZW1lbnQ6OmJ1aWxkKFNW
R0ZpbHRlckJ1aWxkZXIqIGZpbHRlCiAgICAgaWYgKCFsaWdodEVsZW1lbnQpCiAgICAgICAgIHJl
dHVybiBudWxscHRyOwogICAgIAotICAgIGF1dG8gbGlnaHRTb3VyY2UgPSBsaWdodEVsZW1lbnQt
PmxpZ2h0U291cmNlKCpmaWx0ZXJCdWlsZGVyKTsKKyAgICBhdXRvIGxpZ2h0U291cmNlID0gbGln
aHRFbGVtZW50LT5saWdodFNvdXJjZShmaWx0ZXJCdWlsZGVyKTsKIAogICAgIFJlbmRlck9iamVj
dCogcmVuZGVyZXIgPSB0aGlzLT5yZW5kZXJlcigpOwogICAgIGlmICghcmVuZGVyZXIpCkBAIC0x
NzksOCArMTc4LDggQEAgUmVmUHRyPEZpbHRlckVmZmVjdD4gU1ZHRkVTcGVjdWxhckxpZ2h0aW5n
RWxlbWVudDo6YnVpbGQoU1ZHRmlsdGVyQnVpbGRlciogZmlsdGUKICAgICAKICAgICBDb2xvciBj
b2xvciA9IHJlbmRlcmVyLT5zdHlsZSgpLmNvbG9yQnlBcHBseWluZ0NvbG9yRmlsdGVyKHJlbmRl
cmVyLT5zdHlsZSgpLnN2Z1N0eWxlKCkubGlnaHRpbmdDb2xvcigpKTsKIAotICAgIGF1dG8gZWZm
ZWN0ID0gRkVTcGVjdWxhckxpZ2h0aW5nOjpjcmVhdGUoZmlsdGVyLCBjb2xvciwgc3VyZmFjZVNj
YWxlKCksIHNwZWN1bGFyQ29uc3RhbnQoKSwgc3BlY3VsYXJFeHBvbmVudCgpLCBrZXJuZWxVbml0
TGVuZ3RoWCgpLCBrZXJuZWxVbml0TGVuZ3RoWSgpLCBXVEZNb3ZlKGxpZ2h0U291cmNlKSk7Ci0g
ICAgZWZmZWN0LT5pbnB1dEVmZmVjdHMoKSA9IHsgaW5wdXQxIH07CisgICAgYXV0byBlZmZlY3Qg
PSBGRVNwZWN1bGFyTGlnaHRpbmc6OmNyZWF0ZShjb2xvciwgc3VyZmFjZVNjYWxlKCksIHNwZWN1
bGFyQ29uc3RhbnQoKSwgc3BlY3VsYXJFeHBvbmVudCgpLCBrZXJuZWxVbml0TGVuZ3RoWCgpLCBr
ZXJuZWxVbml0TGVuZ3RoWSgpLCBXVEZNb3ZlKGxpZ2h0U291cmNlKSk7CisgICAgZWZmZWN0LT5p
bnB1dEVmZmVjdHMoKSA9IHsgV1RGTW92ZShpbnB1dDEpIH07CiAgICAgcmV0dXJuIGVmZmVjdDsK
IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFU3BlY3VsYXJMaWdodGlu
Z0VsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRVNwZWN1bGFyTGlnaHRpbmdFbGVt
ZW50LmgKaW5kZXggODk3YjhkZTE1NmQxYzc5YTFkM2ZkOGIzMTE4ZTJhYjYzYjQ3YjE0Ni4uNGQx
YjUzMWM0MmJlYjhjZGZhMjAxNTIxNjIxMTY1MTBkMDA5YmM2ZSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvc3ZnL1NWR0ZFU3BlY3VsYXJMaWdodGluZ0VsZW1lbnQuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9zdmcvU1ZHRkVTcGVjdWxhckxpZ2h0aW5nRWxlbWVudC5oCkBAIC01OCw3ICs1OCw3
IEBAIHByaXZhdGU6CiAgICAgdm9pZCBzdmdBdHRyaWJ1dGVDaGFuZ2VkKGNvbnN0IFF1YWxpZmll
ZE5hbWUmKSBvdmVycmlkZTsKIAogICAgIGJvb2wgc2V0RmlsdGVyRWZmZWN0QXR0cmlidXRlKEZp
bHRlckVmZmVjdCosIGNvbnN0IFF1YWxpZmllZE5hbWUmKSBvdmVycmlkZTsKLSAgICBSZWZQdHI8
RmlsdGVyRWZmZWN0PiBidWlsZChTVkdGaWx0ZXJCdWlsZGVyKiwgRmlsdGVyJikgY29uc3Qgb3Zl
cnJpZGU7CisgICAgUmVmUHRyPEZpbHRlckVmZmVjdD4gYnVpbGQoU1ZHRmlsdGVyQnVpbGRlciYp
IGNvbnN0IG92ZXJyaWRlOwogCiAgICAgUHJvcGVydHlSZWdpc3RyeSBtX3Byb3BlcnR5UmVnaXN0
cnkgeyAqdGhpcyB9OwogICAgIFJlZjxTVkdBbmltYXRlZFN0cmluZz4gbV9pbjEgeyBTVkdBbmlt
YXRlZFN0cmluZzo6Y3JlYXRlKHRoaXMpIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9z
dmcvU1ZHRkVUaWxlRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVUaWxlRWxl
bWVudC5jcHAKaW5kZXggMzliZGNjNzczNTk2NjUwMzZlMWFlNzQ3NjEyZWFkNmY5YWMzNzM3MC4u
YWFjZTJmMzQzMTNkY2ZmYWI4Y2FkM2E1MmVlMzk1M2Q3MTAwM2Y0ZiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFVGlsZUVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3N2Zy9TVkdGRVRpbGVFbGVtZW50LmNwcApAQCAtNzAsMTUgKzcwLDE0IEBAIHZvaWQgU1ZHRkVU
aWxlRWxlbWVudDo6c3ZnQXR0cmlidXRlQ2hhbmdlZChjb25zdCBRdWFsaWZpZWROYW1lJiBhdHRy
TmFtZSkKICAgICBTVkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXM6OnN2Z0F0dHJp
YnV0ZUNoYW5nZWQoYXR0ck5hbWUpOwogfQogCi1SZWZQdHI8RmlsdGVyRWZmZWN0PiBTVkdGRVRp
bGVFbGVtZW50OjpidWlsZChTVkdGaWx0ZXJCdWlsZGVyKiBmaWx0ZXJCdWlsZGVyLCBGaWx0ZXIm
IGZpbHRlcikgY29uc3QKK1JlZlB0cjxGaWx0ZXJFZmZlY3Q+IFNWR0ZFVGlsZUVsZW1lbnQ6OmJ1
aWxkKFNWR0ZpbHRlckJ1aWxkZXImIGZpbHRlckJ1aWxkZXIpIGNvbnN0CiB7Ci0gICAgYXV0byBp
bnB1dDEgPSBmaWx0ZXJCdWlsZGVyLT5nZXRFZmZlY3RCeUlkKGluMSgpKTsKLQorICAgIGF1dG8g
aW5wdXQxID0gZmlsdGVyQnVpbGRlci5nZXRFZmZlY3RCeUlkKGluMSgpKTsKICAgICBpZiAoIWlu
cHV0MSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKLSAgICBhdXRvIGVmZmVjdCA9IEZFVGls
ZTo6Y3JlYXRlKGZpbHRlcik7Ci0gICAgZWZmZWN0LT5pbnB1dEVmZmVjdHMoKSA9IHsgaW5wdXQx
IH07CisgICAgYXV0byBlZmZlY3QgPSBGRVRpbGU6OmNyZWF0ZSgpOworICAgIGVmZmVjdC0+aW5w
dXRFZmZlY3RzKCkgPSB7IFdURk1vdmUoaW5wdXQxKSB9OwogICAgIHJldHVybiBlZmZlY3Q7CiB9
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRVRpbGVFbGVtZW50LmggYi9T
b3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVUaWxlRWxlbWVudC5oCmluZGV4IDQ1YjMyNzE4NTFkN2Zj
MGRjMmQzYmNjODc5YTIyZGM0MmEzM2E5MWYuLmNhYmFjZTZiZDAxYzJiMWQzNTY0YTVjZWU1YzI3
NWI2Njk2ZjlkNDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRVRpbGVFbGVt
ZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFVGlsZUVsZW1lbnQuaApAQCAtNDIs
NyArNDIsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgcGFyc2VBdHRyaWJ1dGUoY29uc3QgUXVhbGlm
aWVkTmFtZSYsIGNvbnN0IEF0b21TdHJpbmcmKSBvdmVycmlkZTsKICAgICB2b2lkIHN2Z0F0dHJp
YnV0ZUNoYW5nZWQoY29uc3QgUXVhbGlmaWVkTmFtZSYpIG92ZXJyaWRlOwogCi0gICAgUmVmUHRy
PEZpbHRlckVmZmVjdD4gYnVpbGQoU1ZHRmlsdGVyQnVpbGRlciosIEZpbHRlciYpIGNvbnN0IG92
ZXJyaWRlOworICAgIFJlZlB0cjxGaWx0ZXJFZmZlY3Q+IGJ1aWxkKFNWR0ZpbHRlckJ1aWxkZXIm
KSBjb25zdCBvdmVycmlkZTsKIAogICAgIFByb3BlcnR5UmVnaXN0cnkgbV9wcm9wZXJ0eVJlZ2lz
dHJ5IHsgKnRoaXMgfTsKICAgICBSZWY8U1ZHQW5pbWF0ZWRTdHJpbmc+IG1faW4xIHsgU1ZHQW5p
bWF0ZWRTdHJpbmc6OmNyZWF0ZSh0aGlzKSB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
c3ZnL1NWR0ZFVHVyYnVsZW5jZUVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZF
VHVyYnVsZW5jZUVsZW1lbnQuY3BwCmluZGV4IDExNTYxMTE5ZDgzZTNmYzc4OGE0MmIxNDg2N2M2
NTY0MTIzMzRhNGQuLjE1MWI3YjllOGUwOGE0M2U3Y2NjYjY4MDlhYTcyOTE0NmRiYmYwZDggMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRVR1cmJ1bGVuY2VFbGVtZW50LmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVUdXJidWxlbmNlRWxlbWVudC5jcHAKQEAgLTEx
NywxMSArMTE3LDExIEBAIHZvaWQgU1ZHRkVUdXJidWxlbmNlRWxlbWVudDo6c3ZnQXR0cmlidXRl
Q2hhbmdlZChjb25zdCBRdWFsaWZpZWROYW1lJiBhdHRyTmFtZSkKICAgICBTVkdGaWx0ZXJQcmlt
aXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXM6OnN2Z0F0dHJpYnV0ZUNoYW5nZWQoYXR0ck5hbWUpOwog
fQogCi1SZWZQdHI8RmlsdGVyRWZmZWN0PiBTVkdGRVR1cmJ1bGVuY2VFbGVtZW50OjpidWlsZChT
VkdGaWx0ZXJCdWlsZGVyKiwgRmlsdGVyJiBmaWx0ZXIpIGNvbnN0CitSZWZQdHI8RmlsdGVyRWZm
ZWN0PiBTVkdGRVR1cmJ1bGVuY2VFbGVtZW50OjpidWlsZChTVkdGaWx0ZXJCdWlsZGVyJikgY29u
c3QKIHsKICAgICBpZiAoYmFzZUZyZXF1ZW5jeVgoKSA8IDAgfHwgYmFzZUZyZXF1ZW5jeVkoKSA8
IDApCiAgICAgICAgIHJldHVybiBudWxscHRyOwotICAgIHJldHVybiBGRVR1cmJ1bGVuY2U6OmNy
ZWF0ZShmaWx0ZXIsIHR5cGUoKSwgYmFzZUZyZXF1ZW5jeVgoKSwgYmFzZUZyZXF1ZW5jeVkoKSwg
bnVtT2N0YXZlcygpLCBzZWVkKCksIHN0aXRjaFRpbGVzKCkgPT0gU1ZHX1NUSVRDSFRZUEVfU1RJ
VENIKTsKKyAgICByZXR1cm4gRkVUdXJidWxlbmNlOjpjcmVhdGUodHlwZSgpLCBiYXNlRnJlcXVl
bmN5WCgpLCBiYXNlRnJlcXVlbmN5WSgpLCBudW1PY3RhdmVzKCksIHNlZWQoKSwgc3RpdGNoVGls
ZXMoKSA9PSBTVkdfU1RJVENIVFlQRV9TVElUQ0gpOwogfQogCiB9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9zdmcvU1ZHRkVUdXJidWxlbmNlRWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUv
c3ZnL1NWR0ZFVHVyYnVsZW5jZUVsZW1lbnQuaAppbmRleCBiZjlkYTIyYWQ0MmU0MTBhMTA0MzVl
MGE0MGUzNDI2Nzc2OWUxOThhLi41MGFmOTEwZWI1OGUyYzkyMjQxYTkwZGE4Y2JkZmRjNjgxNGY5
MzE2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVUdXJidWxlbmNlRWxlbWVu
dC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRVR1cmJ1bGVuY2VFbGVtZW50LmgKQEAg
LTExOSw3ICsxMTksNyBAQCBwcml2YXRlOgogICAgIHZvaWQgc3ZnQXR0cmlidXRlQ2hhbmdlZChj
b25zdCBRdWFsaWZpZWROYW1lJikgb3ZlcnJpZGU7CiAKICAgICBib29sIHNldEZpbHRlckVmZmVj
dEF0dHJpYnV0ZShGaWx0ZXJFZmZlY3QqLCBjb25zdCBRdWFsaWZpZWROYW1lJiBhdHRyTmFtZSkg
b3ZlcnJpZGU7Ci0gICAgUmVmUHRyPEZpbHRlckVmZmVjdD4gYnVpbGQoU1ZHRmlsdGVyQnVpbGRl
ciosIEZpbHRlciYpIGNvbnN0IG92ZXJyaWRlOworICAgIFJlZlB0cjxGaWx0ZXJFZmZlY3Q+IGJ1
aWxkKFNWR0ZpbHRlckJ1aWxkZXImKSBjb25zdCBvdmVycmlkZTsKIAogICAgIFByb3BlcnR5UmVn
aXN0cnkgbV9wcm9wZXJ0eVJlZ2lzdHJ5IHsgKnRoaXMgfTsKICAgICBSZWY8U1ZHQW5pbWF0ZWRO
dW1iZXI+IG1fYmFzZUZyZXF1ZW5jeVggeyBTVkdBbmltYXRlZE51bWJlcjo6Y3JlYXRlKHRoaXMp
IH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRmlsdGVyUHJpbWl0aXZlU3Rh
bmRhcmRBdHRyaWJ1dGVzLmggYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRmlsdGVyUHJpbWl0aXZl
U3RhbmRhcmRBdHRyaWJ1dGVzLmgKaW5kZXggYzk4YjEzZWQ5NjI3NmFmOWUxNGY2NDI4MTFhNmZk
NzQ2NzcyYWNhNy4uMzhkNDk4NjA5MzM4MjE4N2JhZDIyNGQyOTdkNDI1YzkxZGU1MzlkNyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0
cmlidXRlcy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGaWx0ZXJQcmltaXRpdmVTdGFu
ZGFyZEF0dHJpYnV0ZXMuaApAQCAtMzgsNyArMzgsNyBAQCBjbGFzcyBTVkdGaWx0ZXJQcmltaXRp
dmVTdGFuZGFyZEF0dHJpYnV0ZXMgOiBwdWJsaWMgU1ZHRWxlbWVudCB7CiBwdWJsaWM6CiAgICAg
dm9pZCBzZXRTdGFuZGFyZEF0dHJpYnV0ZXMoRmlsdGVyRWZmZWN0KikgY29uc3Q7CiAKLSAgICB2
aXJ0dWFsIFJlZlB0cjxGaWx0ZXJFZmZlY3Q+IGJ1aWxkKFNWR0ZpbHRlckJ1aWxkZXIqLCBGaWx0
ZXImKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBSZWZQdHI8RmlsdGVyRWZmZWN0PiBidWlsZChT
VkdGaWx0ZXJCdWlsZGVyJikgY29uc3QgPSAwOwogICAgIC8vIFJldHVybnMgdHJ1ZSwgaWYgdGhl
IG5ldyB2YWx1ZSBpcyBkaWZmZXJlbnQgZnJvbSB0aGUgb2xkIG9uZS4KICAgICB2aXJ0dWFsIGJv
b2wgc2V0RmlsdGVyRWZmZWN0QXR0cmlidXRlKEZpbHRlckVmZmVjdCosIGNvbnN0IFF1YWxpZmll
ZE5hbWUmKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL2dyYXBoaWNzL2ZpbHRl
cnMvU1ZHRkVJbWFnZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvZ3JhcGhpY3MvZmlsdGVycy9T
VkdGRUltYWdlLmNwcAppbmRleCA0NTQ0NWIyODEzNDM2ZGJlZjYzNTY5MTU4MWRlNjFkZWZhODIz
YmFkLi5iYzYwYWNiNTAyNTIxMTEzMWVkY2NlMzY0ZDYxYzZlOWJjZjkwN2YzIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9zdmcvZ3JhcGhpY3MvZmlsdGVycy9TVkdGRUltYWdlLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9zdmcvZ3JhcGhpY3MvZmlsdGVycy9TVkdGRUltYWdlLmNwcApAQCAt
MzAsMjYgKzMwLDI2IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotUmVmPEZFSW1hZ2U+IEZF
SW1hZ2U6OmNyZWF0ZShGaWx0ZXImIGZpbHRlciwgUmVmPEltYWdlPiYmIGltYWdlLCBjb25zdCBT
VkdQcmVzZXJ2ZUFzcGVjdFJhdGlvVmFsdWUmIHByZXNlcnZlQXNwZWN0UmF0aW8pCitSZWY8RkVJ
bWFnZT4gRkVJbWFnZTo6Y3JlYXRlKFJlZjxJbWFnZT4mJiBpbWFnZSwgY29uc3QgU1ZHUHJlc2Vy
dmVBc3BlY3RSYXRpb1ZhbHVlJiBwcmVzZXJ2ZUFzcGVjdFJhdGlvKQogewogICAgIGF1dG8gaW1h
Z2VSZWN0ID0gRmxvYXRSZWN0IHsgeyB9LCBpbWFnZS0+c2l6ZSgpIH07Ci0gICAgcmV0dXJuIGNy
ZWF0ZShmaWx0ZXIsIFdURk1vdmUoaW1hZ2UpLCBpbWFnZVJlY3QsIHByZXNlcnZlQXNwZWN0UmF0
aW8pOworICAgIHJldHVybiBjcmVhdGUoV1RGTW92ZShpbWFnZSksIGltYWdlUmVjdCwgcHJlc2Vy
dmVBc3BlY3RSYXRpbyk7CiB9CiAKLVJlZjxGRUltYWdlPiBGRUltYWdlOjpjcmVhdGUoRmlsdGVy
JiBmaWx0ZXIsIFNvdXJjZUltYWdlJiYgc291cmNlSW1hZ2UsIGNvbnN0IEZsb2F0UmVjdCYgc291
cmNlSW1hZ2VSZWN0LCBjb25zdCBTVkdQcmVzZXJ2ZUFzcGVjdFJhdGlvVmFsdWUmIHByZXNlcnZl
QXNwZWN0UmF0aW8pCitSZWY8RkVJbWFnZT4gRkVJbWFnZTo6Y3JlYXRlKFNvdXJjZUltYWdlJiYg
c291cmNlSW1hZ2UsIGNvbnN0IEZsb2F0UmVjdCYgc291cmNlSW1hZ2VSZWN0LCBjb25zdCBTVkdQ
cmVzZXJ2ZUFzcGVjdFJhdGlvVmFsdWUmIHByZXNlcnZlQXNwZWN0UmF0aW8pCiB7Ci0gICAgcmV0
dXJuIGFkb3B0UmVmKCpuZXcgRkVJbWFnZShmaWx0ZXIsIFdURk1vdmUoc291cmNlSW1hZ2UpLCBz
b3VyY2VJbWFnZVJlY3QsIHByZXNlcnZlQXNwZWN0UmF0aW8pKTsKKyAgICByZXR1cm4gYWRvcHRS
ZWYoKm5ldyBGRUltYWdlKFdURk1vdmUoc291cmNlSW1hZ2UpLCBzb3VyY2VJbWFnZVJlY3QsIHBy
ZXNlcnZlQXNwZWN0UmF0aW8pKTsKIH0KIAotRkVJbWFnZTo6RkVJbWFnZShGaWx0ZXImIGZpbHRl
ciwgU291cmNlSW1hZ2UmJiBzb3VyY2VJbWFnZSwgY29uc3QgRmxvYXRSZWN0JiBzb3VyY2VJbWFn
ZVJlY3QsIGNvbnN0IFNWR1ByZXNlcnZlQXNwZWN0UmF0aW9WYWx1ZSYgcHJlc2VydmVBc3BlY3RS
YXRpbykKLSAgICA6IEZpbHRlckVmZmVjdChmaWx0ZXIsIFR5cGU6OkZFSW1hZ2UpCitGRUltYWdl
OjpGRUltYWdlKFNvdXJjZUltYWdlJiYgc291cmNlSW1hZ2UsIGNvbnN0IEZsb2F0UmVjdCYgc291
cmNlSW1hZ2VSZWN0LCBjb25zdCBTVkdQcmVzZXJ2ZUFzcGVjdFJhdGlvVmFsdWUmIHByZXNlcnZl
QXNwZWN0UmF0aW8pCisgICAgOiBGaWx0ZXJFZmZlY3QoVHlwZTo6RkVJbWFnZSkKICAgICAsIG1f
c291cmNlSW1hZ2UoV1RGTW92ZShzb3VyY2VJbWFnZSkpCiAgICAgLCBtX3NvdXJjZUltYWdlUmVj
dChzb3VyY2VJbWFnZVJlY3QpCiAgICAgLCBtX3ByZXNlcnZlQXNwZWN0UmF0aW8ocHJlc2VydmVB
c3BlY3RSYXRpbykKIHsKIH0KIAotdm9pZCBGRUltYWdlOjpkZXRlcm1pbmVBYnNvbHV0ZVBhaW50
UmVjdCgpCit2b2lkIEZFSW1hZ2U6OmRldGVybWluZUFic29sdXRlUGFpbnRSZWN0KGNvbnN0IEZp
bHRlciYgZmlsdGVyKQogewogICAgIGF1dG8gcHJpbWl0aXZlU3VicmVnaW9uID0gZmlsdGVyUHJp
bWl0aXZlU3VicmVnaW9uKCk7CiAKQEAgLTY1LDcgKzY1LDcgQEAgdm9pZCBGRUltYWdlOjpkZXRl
cm1pbmVBYnNvbHV0ZVBhaW50UmVjdCgpCiAgICAgICAgIH0KICAgICApOwogCi0gICAgaW1hZ2VS
ZWN0LnNjYWxlKGZpbHRlcigpLmZpbHRlclNjYWxlKCkpOworICAgIGltYWdlUmVjdC5zY2FsZShm
aWx0ZXIuZmlsdGVyU2NhbGUoKSk7CiAKICAgICBpZiAoY2xpcHNUb0JvdW5kcygpKQogICAgICAg
ICBpbWFnZVJlY3QuaW50ZXJzZWN0KG1heEVmZmVjdFJlY3QoKSk7CkBAIC03NCw3ICs3NCw3IEBA
IHZvaWQgRkVJbWFnZTo6ZGV0ZXJtaW5lQWJzb2x1dGVQYWludFJlY3QoKQogICAgIHNldEFic29s
dXRlUGFpbnRSZWN0KGVuY2xvc2luZ0ludFJlY3QoaW1hZ2VSZWN0KSk7CiB9CiAKLXZvaWQgRkVJ
bWFnZTo6cGxhdGZvcm1BcHBseVNvZnR3YXJlKCkKK3ZvaWQgRkVJbWFnZTo6cGxhdGZvcm1BcHBs
eVNvZnR3YXJlKGNvbnN0IEZpbHRlciYgZmlsdGVyKQogewogICAgIC8vIEZFSW1hZ2UgcmVzdWx0
cyBhcmUgYWx3YXlzIGluIERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQigpCiAgICAgc2V0UmVz
dWx0Q29sb3JTcGFjZShEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0IoKSk7CkBAIC05MSwxNCAr
OTEsMTQgQEAgdm9pZCBGRUltYWdlOjpwbGF0Zm9ybUFwcGx5U29mdHdhcmUoKQogICAgICAgICAg
ICAgYXV0byBpbWFnZVJlY3QgPSBwcmltaXRpdmVTdWJyZWdpb247CiAgICAgICAgICAgICBhdXRv
IHNyY1JlY3QgPSBtX3NvdXJjZUltYWdlUmVjdDsKICAgICAgICAgICAgIG1fcHJlc2VydmVBc3Bl
Y3RSYXRpby50cmFuc2Zvcm1SZWN0KGltYWdlUmVjdCwgc3JjUmVjdCk7Ci0gICAgICAgICAgICBp
bWFnZVJlY3Quc2NhbGUoZmlsdGVyKCkuZmlsdGVyU2NhbGUoKSk7CisgICAgICAgICAgICBpbWFn
ZVJlY3Quc2NhbGUoZmlsdGVyLmZpbHRlclNjYWxlKCkpOwogICAgICAgICAgICAgaW1hZ2VSZWN0
ID0gZHJhd2luZ1JlZ2lvbk9mSW5wdXRJbWFnZShJbnRSZWN0KGltYWdlUmVjdCkpOwogICAgICAg
ICAgICAgY29udGV4dC5kcmF3SW1hZ2UoaW1hZ2UsIGltYWdlUmVjdCwgc3JjUmVjdCk7CiAgICAg
ICAgIH0sCiAgICAgICAgIFsmXSAoY29uc3QgUmVmPEltYWdlQnVmZmVyPiYgaW1hZ2VCdWZmZXIp
IHsKICAgICAgICAgICAgIGF1dG8gaW1hZ2VSZWN0ID0gcHJpbWl0aXZlU3VicmVnaW9uOwogICAg
ICAgICAgICAgaW1hZ2VSZWN0Lm1vdmVCeShtX3NvdXJjZUltYWdlUmVjdC5sb2NhdGlvbigpKTsK
LSAgICAgICAgICAgIGltYWdlUmVjdC5zY2FsZShmaWx0ZXIoKS5maWx0ZXJTY2FsZSgpKTsKKyAg
ICAgICAgICAgIGltYWdlUmVjdC5zY2FsZShmaWx0ZXIuZmlsdGVyU2NhbGUoKSk7CiAgICAgICAg
ICAgICBpbWFnZVJlY3QgPSBkcmF3aW5nUmVnaW9uT2ZJbnB1dEltYWdlKEludFJlY3QoaW1hZ2VS
ZWN0KSk7CiAgICAgICAgICAgICBjb250ZXh0LmRyYXdJbWFnZUJ1ZmZlcihpbWFnZUJ1ZmZlciwg
aW1hZ2VSZWN0LmxvY2F0aW9uKCkpOwogICAgICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9zdmcvZ3JhcGhpY3MvZmlsdGVycy9TVkdGRUltYWdlLmggYi9Tb3VyY2UvV2ViQ29yZS9z
dmcvZ3JhcGhpY3MvZmlsdGVycy9TVkdGRUltYWdlLmgKaW5kZXggNzMxN2Q5YTk0ZWFjMDc4YTg4
ZGU3YTdlMzA0MzQwYTdkMmYxZDgxZi4uYjU4ZDUxYjE5N2Q4YzVmYzY0YWZjNTU4MTlmMTU4NWQ5
OTIzYmM4YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL2dyYXBoaWNzL2ZpbHRlcnMv
U1ZHRkVJbWFnZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9ncmFwaGljcy9maWx0ZXJzL1NW
R0ZFSW1hZ2UuaApAQCAtMzUsMTcgKzM1LDE5IEBAIGNsYXNzIEZFSW1hZ2UgZmluYWwgOiBwdWJs
aWMgRmlsdGVyRWZmZWN0IHsKIHB1YmxpYzoKICAgICB1c2luZyBTb3VyY2VJbWFnZSA9IHN0ZDo6
dmFyaWFudDxSZWY8SW1hZ2U+LCBSZWY8SW1hZ2VCdWZmZXI+PjsKIAotICAgIHN0YXRpYyBSZWY8
RkVJbWFnZT4gY3JlYXRlKEZpbHRlciYsIFJlZjxJbWFnZT4mJiwgY29uc3QgU1ZHUHJlc2VydmVB
c3BlY3RSYXRpb1ZhbHVlJik7Ci0gICAgc3RhdGljIFJlZjxGRUltYWdlPiBjcmVhdGUoRmlsdGVy
JiwgU291cmNlSW1hZ2UmJiwgY29uc3QgRmxvYXRSZWN0JiBzb3VyY2VJbWFnZVJlY3QsIGNvbnN0
IFNWR1ByZXNlcnZlQXNwZWN0UmF0aW9WYWx1ZSYpOworICAgIHN0YXRpYyBSZWY8RkVJbWFnZT4g
Y3JlYXRlKFJlZjxJbWFnZT4mJiwgY29uc3QgU1ZHUHJlc2VydmVBc3BlY3RSYXRpb1ZhbHVlJik7
CisgICAgc3RhdGljIFJlZjxGRUltYWdlPiBjcmVhdGUoU291cmNlSW1hZ2UmJiwgY29uc3QgRmxv
YXRSZWN0JiBzb3VyY2VJbWFnZVJlY3QsIGNvbnN0IFNWR1ByZXNlcnZlQXNwZWN0UmF0aW9WYWx1
ZSYpOwogCiAgICAgU291cmNlSW1hZ2UmIHNvdXJjZUltYWdlKCkgeyByZXR1cm4gbV9zb3VyY2VJ
bWFnZTsgfQogICAgIHZvaWQgc2V0SW1hZ2VTb3VyY2UoU291cmNlSW1hZ2UmJiBzb3VyY2VJbWFn
ZSkgeyBtX3NvdXJjZUltYWdlID0gV1RGTW92ZShzb3VyY2VJbWFnZSk7IH0KIAogcHJpdmF0ZToK
LSAgICBGRUltYWdlKEZpbHRlciYsIFNvdXJjZUltYWdlJiYsIGNvbnN0IEZsb2F0UmVjdCYgc291
cmNlSW1hZ2VSZWN0LCBjb25zdCBTVkdQcmVzZXJ2ZUFzcGVjdFJhdGlvVmFsdWUmKTsKKyAgICBG
RUltYWdlKFNvdXJjZUltYWdlJiYsIGNvbnN0IEZsb2F0UmVjdCYgc291cmNlSW1hZ2VSZWN0LCBj
b25zdCBTVkdQcmVzZXJ2ZUFzcGVjdFJhdGlvVmFsdWUmKTsKKworICAgIHZvaWQgZGV0ZXJtaW5l
QWJzb2x1dGVQYWludFJlY3QoY29uc3QgRmlsdGVyJikgZmluYWw7CisKKyAgICB2b2lkIHBsYXRm
b3JtQXBwbHlTb2Z0d2FyZShjb25zdCBGaWx0ZXImKSBmaW5hbDsKIAotICAgIHZvaWQgcGxhdGZv
cm1BcHBseVNvZnR3YXJlKCkgZmluYWw7Ci0gICAgdm9pZCBkZXRlcm1pbmVBYnNvbHV0ZVBhaW50
UmVjdCgpIGZpbmFsOwogICAgIFdURjo6VGV4dFN0cmVhbSYgZXh0ZXJuYWxSZXByZXNlbnRhdGlv
bihXVEY6OlRleHRTdHJlYW0mLCBSZXByZXNlbnRhdGlvblR5cGUpIGNvbnN0IGZpbmFsOwogCiAg
ICAgU291cmNlSW1hZ2UgbV9zb3VyY2VJbWFnZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3N2Zy9ncmFwaGljcy9maWx0ZXJzL1NWR0ZpbHRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdmcv
Z3JhcGhpY3MvZmlsdGVycy9TVkdGaWx0ZXIuY3BwCmluZGV4IGM5ZGEyNzgxZDk1NzQ4ODA2M2I5
OTVhYjA5NDIyMTlmMThkMDNlYmEuLjYxZjEyYjczOTg3YjgyMjg2ODMxYmM2OGY2YzA1ZjAwMDNj
M2Q0Y2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9ncmFwaGljcy9maWx0ZXJzL1NW
R0ZpbHRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL2dyYXBoaWNzL2ZpbHRlcnMvU1ZH
RmlsdGVyLmNwcApAQCAtNDUsMTQgKzQ1LDE0IEBAIFJlZlB0cjxTVkdGaWx0ZXI+IFNWR0ZpbHRl
cjo6Y3JlYXRlKFNWR0ZpbHRlckVsZW1lbnQmIGZpbHRlckVsZW1lbnQsIFNWR0ZpbHRlckJ1CiAg
ICAgYXV0byBmaWx0ZXIgPSBhZG9wdFJlZigqbmV3IFNWR0ZpbHRlcihmaWx0ZXJTY2FsZSwgc291
cmNlSW1hZ2VSZWN0LCBmaWx0ZXJSZWdpb24sIHRhcmdldEJvdW5kaW5nQm94LCBwcmltaXRpdmVC
b3VuZGluZ0JveE1vZGUpKTsKIAogICAgIGlmICghcHJldmlvdXNFZmZlY3QpCi0gICAgICAgIGJ1
aWxkZXIuc2V0dXBCdWlsdGluRWZmZWN0cyhTb3VyY2VHcmFwaGljOjpjcmVhdGUoZmlsdGVyKSk7
CisgICAgICAgIGJ1aWxkZXIuc2V0dXBCdWlsdGluRWZmZWN0cyhTb3VyY2VHcmFwaGljOjpjcmVh
dGUoKSk7CiAgICAgZWxzZQogICAgICAgICBidWlsZGVyLnNldHVwQnVpbHRpbkVmZmVjdHMoeyAq
cHJldmlvdXNFZmZlY3QgfSk7CiAKICAgICBidWlsZGVyLnNldFRhcmdldEJvdW5kaW5nQm94KHRh
cmdldEJvdW5kaW5nQm94KTsKICAgICBidWlsZGVyLnNldFByaW1pdGl2ZVVuaXRzKGZpbHRlckVs
ZW1lbnQucHJpbWl0aXZlVW5pdHMoKSk7CiAKLSAgICBhdXRvIGxhc3RFZmZlY3QgPSBidWlsZGVy
LmJ1aWxkRmlsdGVyRWZmZWN0cyhmaWx0ZXIsIGZpbHRlckVsZW1lbnQpOworICAgIGF1dG8gbGFz
dEVmZmVjdCA9IGJ1aWxkZXIuYnVpbGRGaWx0ZXJFZmZlY3RzKGZpbHRlckVsZW1lbnQpOwogICAg
IGlmICghbGFzdEVmZmVjdCkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKQEAgLTc1LDYgKzc1
LDExIEBAIEZsb2F0U2l6ZSBTVkdGaWx0ZXI6OnNjYWxlZEJ5RmlsdGVyU2NhbGUoRmxvYXRTaXpl
IHNpemUpIGNvbnN0CiAgICAgcmV0dXJuIEZpbHRlcjo6c2NhbGVkQnlGaWx0ZXJTY2FsZShzaXpl
KTsKIH0KIAordm9pZCBTVkdGaWx0ZXI6OmFwcGx5KCkKK3sKKyAgICBtX2xhc3RFZmZlY3QtPmFw
cGx5KCp0aGlzKTsKK30KKwogSW50T3V0c2V0cyBTVkdGaWx0ZXI6Om91dHNldHMoKSBjb25zdAog
ewogICAgIHJldHVybiBtX2xhc3RFZmZlY3QtPm91dHNldHMoKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3N2Zy9ncmFwaGljcy9maWx0ZXJzL1NWR0ZpbHRlci5oIGIvU291cmNlL1dlYkNv
cmUvc3ZnL2dyYXBoaWNzL2ZpbHRlcnMvU1ZHRmlsdGVyLmgKaW5kZXggMTY2MDEyZmY0ZWJhY2Qx
NjU0NGVlMTQxZjA1ZDhjODY3M2EzNWY4Ny4uMWExYjkyY2QwYmY3MTdjNTZiNjZlYTJmYTMyMzRl
ZjVmNDJhMjU1YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL2dyYXBoaWNzL2ZpbHRl
cnMvU1ZHRmlsdGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL2dyYXBoaWNzL2ZpbHRlcnMv
U1ZHRmlsdGVyLmgKQEAgLTM5LDYgKzM5LDcgQEAgcHVibGljOgogICAgIEZsb2F0U2l6ZSBzY2Fs
ZWRCeUZpbHRlclNjYWxlKEZsb2F0U2l6ZSkgY29uc3QgZmluYWw7CiAKICAgICBGbG9hdFJlY3Qg
dGFyZ2V0Qm91bmRpbmdCb3goKSBjb25zdCB7IHJldHVybiBtX3RhcmdldEJvdW5kaW5nQm94OyB9
CisgICAgdm9pZCBhcHBseSgpIG92ZXJyaWRlOwogCiAgICAgUmVmUHRyPEZpbHRlckVmZmVjdD4g
bGFzdEVmZmVjdCgpIHsgcmV0dXJuIG1fbGFzdEVmZmVjdDsgfQogICAgIHZvaWQgc2V0TGFzdEVm
ZmVjdChSZWZQdHI8RmlsdGVyRWZmZWN0PiYmIGxhc3RFZmZlY3QpIHsgbV9sYXN0RWZmZWN0ID0g
V1RGTW92ZShsYXN0RWZmZWN0KTsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL2dy
YXBoaWNzL2ZpbHRlcnMvU1ZHRmlsdGVyQnVpbGRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdmcv
Z3JhcGhpY3MvZmlsdGVycy9TVkdGaWx0ZXJCdWlsZGVyLmNwcAppbmRleCBiZThmMGZiMWMzZjUy
ZmZlNWM5ZTU0MTFiNjhjZTFjMGY4NGY4ZDAxLi42MGQ0YmIyNmRhNWFlZjM4MDcwYzg3YmUyZmQz
NGQ3MjY0YmMyZDgyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvZ3JhcGhpY3MvZmls
dGVycy9TVkdGaWx0ZXJCdWlsZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvZ3JhcGhp
Y3MvZmlsdGVycy9TVkdGaWx0ZXJCdWlsZGVyLmNwcApAQCAtNzUsNyArNzUsNyBAQCBzdGF0aWMg
dW5zaWduZWQgdG90YWxOdW1iZXJGaWx0ZXJFZmZlY3RzKGNvbnN0IEZpbHRlckVmZmVjdCYgbGFz
dEVmZmVjdCkKICAgICByZXR1cm4gY29sbGVjdEVmZmVjdHMoJmxhc3RFZmZlY3QsIGFsbEVmZmVj
dHMpOwogfQogCi1SZWZQdHI8RmlsdGVyRWZmZWN0PiBTVkdGaWx0ZXJCdWlsZGVyOjpidWlsZEZp
bHRlckVmZmVjdHMoRmlsdGVyJiBmaWx0ZXIsIFNWR0ZpbHRlckVsZW1lbnQmIGZpbHRlckVsZW1l
bnQpCitSZWZQdHI8RmlsdGVyRWZmZWN0PiBTVkdGaWx0ZXJCdWlsZGVyOjpidWlsZEZpbHRlckVm
ZmVjdHMoU1ZHRmlsdGVyRWxlbWVudCYgZmlsdGVyRWxlbWVudCkKIHsKICAgICBzdGF0aWMgY29u
c3RleHByIHVuc2lnbmVkIG1heENvdW50Q2hpbGROb2RlcyA9IDIwMDsKICAgICBzdGF0aWMgY29u
c3RleHByIHVuc2lnbmVkIG1heFRvdGFsTnVtYmVyRmlsdGVyRWZmZWN0cyA9IDEwMDsKQEAgLTg2
LDcgKzg2LDcgQEAgUmVmUHRyPEZpbHRlckVmZmVjdD4gU1ZHRmlsdGVyQnVpbGRlcjo6YnVpbGRG
aWx0ZXJFZmZlY3RzKEZpbHRlciYgZmlsdGVyLCBTVkdGaWwKICAgICBSZWZQdHI8RmlsdGVyRWZm
ZWN0PiBlZmZlY3Q7CiAKICAgICBmb3IgKGF1dG8mIGVmZmVjdEVsZW1lbnQgOiBjaGlsZHJlbk9m
VHlwZTxTVkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXM+KGZpbHRlckVsZW1lbnQp
KSB7Ci0gICAgICAgIGVmZmVjdCA9IGVmZmVjdEVsZW1lbnQuYnVpbGQodGhpcywgZmlsdGVyKTsK
KyAgICAgICAgZWZmZWN0ID0gZWZmZWN0RWxlbWVudC5idWlsZCgqdGhpcyk7CiAgICAgICAgIGlm
ICghZWZmZWN0KSB7CiAgICAgICAgICAgICBjbGVhckVmZmVjdHMoKTsKICAgICAgICAgICAgIHJl
dHVybiBudWxscHRyOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL2dyYXBoaWNzL2Zp
bHRlcnMvU1ZHRmlsdGVyQnVpbGRlci5oIGIvU291cmNlL1dlYkNvcmUvc3ZnL2dyYXBoaWNzL2Zp
bHRlcnMvU1ZHRmlsdGVyQnVpbGRlci5oCmluZGV4IDM3NWJkYjE1MzFlZjQzYWUyYjcxNTY2ZjY2
NThkZWMzNGQ4ZDQ4YWMuLmI3YjgyNGI0ODQzMjMyNTc3ZDIxMzBkODQ2YWFjOGI3ZjA5ZGU5OTcg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9ncmFwaGljcy9maWx0ZXJzL1NWR0ZpbHRl
ckJ1aWxkZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvZ3JhcGhpY3MvZmlsdGVycy9TVkdG
aWx0ZXJCdWlsZGVyLmgKQEAgLTY2LDcgKzY2LDcgQEAgcHVibGljOgogICAgIHZvaWQgY2xlYXJS
ZXN1bHRzUmVjdXJzaXZlKEZpbHRlckVmZmVjdCopOwogCiAgICAgdm9pZCBzZXR1cEJ1aWx0aW5F
ZmZlY3RzKFJlZjxGaWx0ZXJFZmZlY3Q+IHNvdXJjZUdyYXBoaWMpOwotICAgIFJlZlB0cjxGaWx0
ZXJFZmZlY3Q+IGJ1aWxkRmlsdGVyRWZmZWN0cyhGaWx0ZXImLCBTVkdGaWx0ZXJFbGVtZW50Jik7
CisgICAgUmVmUHRyPEZpbHRlckVmZmVjdD4gYnVpbGRGaWx0ZXJFZmZlY3RzKFNWR0ZpbHRlckVs
ZW1lbnQmKTsKIAogcHJpdmF0ZToKICAgICBpbmxpbmUgdm9pZCBhZGRCdWlsdGluRWZmZWN0cygp
Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>444172</attachid>
            <date>2021-11-14 01:47:13 -0800</date>
            <delta_ts>2021-11-14 18:45:40 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-232551-20211114014712.patch</filename>
            <type>text/plain</type>
            <size>158257</size>
            <attacher name="Said Abou-Hallawa">sabouhallawa</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg1Nzg1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNmJkMGFlNjQ4MjY4ODhh
ZjVkZGViN2Q2YTVhZjhiMGMxMzFlMWMyNS4uN2FlZDE5MzlhOTJiMzhhNmY3MDRhMzFmM2JhZWNm
NzBkMWJjOGFlZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI0NCBAQAorMjAyMS0xMS0xMyAgU2Fp
ZCBBYm91LUhhbGxhd2EgIDxzYWlkQGFwcGxlLmNvbT4KKworICAgICAgICBbR1BVIFByb2Nlc3Nd
IFJlbW92ZSB0aGUgcmVmZXJlbmNlIHRvIEZpbHRlciBmcm9tIEZpbHRlckVmZmVjdAorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjMyNTUxCisgICAgICAg
IHJkYXI6Ly84NTEzNjQ0NworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgIFRoaXMgcGF0Y2ggcmVtb3ZlcyBhbiB1bm5lY2Vzc2FyeSBkZXBlbmRlbmN5IG9m
IGluZGl2aWR1YWwgRmlsdGVyRWZmZWN0cworICAgICAgICBvbiB0aGUgRmlsdGVyIG9iamVjdCwg
d2hpY2ggbWFrZXMgaXQgZWFzaWVyIHRvIHNlbmQgdGhlIGZpbHRlciBkZXNjcmlwdGlvbgorICAg
ICAgICBvdmVyIElQQy4KKworICAgICAgICBJbnN0ZWFkIG9mIGhhdmluZyBhIHJlZmVyZW5jZSB0
byB0aGUgRmlsdGVyIGluIHRoZSBGaWx0ZXJFZmZlY3QsIHdlIGFyZQorICAgICAgICBnb2luZyB0
byBwYXNzIGEgcmVmZXJlbmNlIHRvIHRoZSBGaWx0ZXIgdG8gdGhlIEZpbHRlckVmZmVjdCBmdW5j
dGlvbnMKKyAgICAgICAgb25seSB3aGVuIG5lZWRlZC4gRmlsdGVyRWZmZWN0IG1heSBuZWVkIGFj
Y2VzcyB0byB0aGUgRmlsdGVyIG9ubHkgaW4gdHdvCisgICAgICAgIG1ldGhvZHM6IGRldGVybWlu
ZUFic29sdXRlUGFpbnRSZWN0KCkgYW5kIHBsYXRmb3JtQXBwbHlTb2Z0d2FyZSgpLgorCisgICAg
ICAgIFdlIG5lZWQgdG8gY2hhbmdlIGFsbCB0aGUgRmlsdGVyRWZmZWN0IGNyZWF0ZSBtZXRob2Rz
IHRvIG5vdCB0YWtlIGEgRmlsdGVyCisgICAgICAgIGFzIGlucHV0LiBUaGlzIHJlcXVpcmVzIHRo
ZSBTVkcgZmlsdGVyIGVmZmVjdCBlbGVtZW50cyB0byBjaGFuZ2UgdGhlaXIKKyAgICAgICAgYnVp
bGQoKSBtZXRob2QuIEFuZCBpdCByZXF1aXJlcyBhbHNvIENTU0ZpbHRlciB0byBub3QgcGFzcyBp
dHNlbGYgdG8gdGhlCisgICAgICAgIEZpbHRlckVmZmVjdHMgaXRzIGNyZWF0ZS4KKworICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NvcmVpbWFnZS9GaWx0ZXJFZmZlY3RSZW5kZXJlckNvcmVJ
bWFnZS5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NvcmVpbWFnZS9GaWx0ZXJFZmZl
Y3RSZW5kZXJlckNvcmVJbWFnZS5tbToKKyAgICAgICAgKFdlYkNvcmU6OkZpbHRlckVmZmVjdFJl
bmRlcmVyQ29yZUltYWdlOjphcHBseUVmZmVjdHMpOgorICAgICAgICAoV2ViQ29yZTo6RmlsdGVy
RWZmZWN0UmVuZGVyZXJDb3JlSW1hZ2U6OmNvbm5lY3RDSUZpbHRlcnMpOgorICAgICAgICAoV2Vi
Q29yZTo6RmlsdGVyRWZmZWN0UmVuZGVyZXJDb3JlSW1hZ2U6OmltYWdlRm9yU291cmNlR3JhcGhp
Yyk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY3B1L2FybS9maWx0ZXJzL0ZFQmxlbmRO
RU9OLmg6CisgICAgICAgIChXZWJDb3JlOjpGRUJsZW5kOjpwbGF0Zm9ybUFwcGx5U29mdHdhcmUp
OgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVCbGVuZC5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpGRUJsZW5kOjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6RkVCbGVu
ZDo6RkVCbGVuZCk6CisgICAgICAgIChXZWJDb3JlOjpGRUJsZW5kOjpwbGF0Zm9ybUFwcGx5U29m
dHdhcmUpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVCbGVuZC5oOgor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVDb2xvck1hdHJpeC5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpGRUNvbG9yTWF0cml4OjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29y
ZTo6RkVDb2xvck1hdHJpeDo6RkVDb2xvck1hdHJpeCk6CisgICAgICAgIChXZWJDb3JlOjpGRUNv
bG9yTWF0cml4OjpwbGF0Zm9ybUFwcGx5U29mdHdhcmUpOgorICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL2ZpbHRlcnMvRkVDb2xvck1hdHJpeC5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL2ZpbHRlcnMvRkVDb21wb25lbnRUcmFuc2Zlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpG
RUNvbXBvbmVudFRyYW5zZmVyOjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6RkVDb21wb25l
bnRUcmFuc2Zlcjo6RkVDb21wb25lbnRUcmFuc2Zlcik6CisgICAgICAgIChXZWJDb3JlOjpGRUNv
bXBvbmVudFRyYW5zZmVyOjpwbGF0Zm9ybUFwcGx5U29mdHdhcmUpOgorICAgICAgICAqIHBsYXRm
b3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVDb21wb25lbnRUcmFuc2Zlci5oOgorICAgICAgICAqIHBs
YXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVDb21wb3NpdGUuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6RkVDb21wb3NpdGU6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpGRUNvbXBvc2l0ZTo6
RkVDb21wb3NpdGUpOgorICAgICAgICAoV2ViQ29yZTo6RkVDb21wb3NpdGU6OmRldGVybWluZUFi
c29sdXRlUGFpbnRSZWN0KToKKyAgICAgICAgKFdlYkNvcmU6OkZFQ29tcG9zaXRlOjpwbGF0Zm9y
bUFwcGx5U29mdHdhcmUpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVD
b21wb3NpdGUuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFQ29udm9s
dmVNYXRyaXguY3BwOgorICAgICAgICAoV2ViQ29yZTo6RkVDb252b2x2ZU1hdHJpeDo6Y3JlYXRl
KToKKyAgICAgICAgKFdlYkNvcmU6OkZFQ29udm9sdmVNYXRyaXg6OkZFQ29udm9sdmVNYXRyaXgp
OgorICAgICAgICAoV2ViQ29yZTo6RkVDb252b2x2ZU1hdHJpeDo6cGxhdGZvcm1BcHBseVNvZnR3
YXJlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFQ29udm9sdmVNYXRy
aXguaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFRGlmZnVzZUxpZ2h0
aW5nLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZFRGlmZnVzZUxpZ2h0aW5nOjpjcmVhdGUpOgor
ICAgICAgICAoV2ViQ29yZTo6RkVEaWZmdXNlTGlnaHRpbmc6OkZFRGlmZnVzZUxpZ2h0aW5nKToK
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFRGlmZnVzZUxpZ2h0aW5nLmg6
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRURpc3BsYWNlbWVudE1hcC5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpGRURpc3BsYWNlbWVudE1hcDo6Y3JlYXRlKToKKyAgICAg
ICAgKFdlYkNvcmU6OkZFRGlzcGxhY2VtZW50TWFwOjpGRURpc3BsYWNlbWVudE1hcCk6CisgICAg
ICAgIChXZWJDb3JlOjpGRURpc3BsYWNlbWVudE1hcDo6cGxhdGZvcm1BcHBseVNvZnR3YXJlKToK
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFRGlzcGxhY2VtZW50TWFwLmg6
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRURyb3BTaGFkb3cuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6RkVEcm9wU2hhZG93OjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29y
ZTo6RkVEcm9wU2hhZG93OjpGRURyb3BTaGFkb3cpOgorICAgICAgICAoV2ViQ29yZTo6RkVEcm9w
U2hhZG93OjpkZXRlcm1pbmVBYnNvbHV0ZVBhaW50UmVjdCk6CisgICAgICAgIChXZWJDb3JlOjpG
RURyb3BTaGFkb3c6OnBsYXRmb3JtQXBwbHlTb2Z0d2FyZSk6CisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3MvZmlsdGVycy9GRURyb3BTaGFkb3cuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9maWx0ZXJzL0ZFRmxvb2QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RkVGbG9vZDo6Y3Jl
YXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkZFRmxvb2Q6OkZFRmxvb2QpOgorICAgICAgICAoV2Vi
Q29yZTo6RkVGbG9vZDo6cGxhdGZvcm1BcHBseVNvZnR3YXJlKToKKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy9maWx0ZXJzL0ZFRmxvb2QuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy9maWx0ZXJzL0ZFR2F1c3NpYW5CbHVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZFR2F1c3Np
YW5CbHVyOjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6RkVHYXVzc2lhbkJsdXI6OkZFR2F1
c3NpYW5CbHVyKToKKyAgICAgICAgKFdlYkNvcmU6OkZFR2F1c3NpYW5CbHVyOjpkZXRlcm1pbmVB
YnNvbHV0ZVBhaW50UmVjdCk6CisgICAgICAgIChXZWJDb3JlOjpGRUdhdXNzaWFuQmx1cjo6cGxh
dGZvcm1BcHBseVNvZnR3YXJlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJz
L0ZFR2F1c3NpYW5CbHVyLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9G
RUxpZ2h0aW5nLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZFTGlnaHRpbmc6OkZFTGlnaHRpbmcp
OgorICAgICAgICAoV2ViQ29yZTo6RkVMaWdodGluZzo6cGxhdGZvcm1BcHBseVNvZnR3YXJlKToK
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFTGlnaHRpbmcuaDoKKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFTWVyZ2UuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6RkVNZXJnZTo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkZFTWVyZ2U6OkZFTWVy
Z2UpOgorICAgICAgICAoV2ViQ29yZTo6RkVNZXJnZTo6cGxhdGZvcm1BcHBseVNvZnR3YXJlKToK
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFTWVyZ2UuaDoKKyAgICAgICAg
KiBwbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFTW9ycGhvbG9neS5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpGRU1vcnBob2xvZ3k6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpGRU1vcnBo
b2xvZ3k6OkZFTW9ycGhvbG9neSk6CisgICAgICAgIChXZWJDb3JlOjpGRU1vcnBob2xvZ3k6OmRl
dGVybWluZUFic29sdXRlUGFpbnRSZWN0KToKKyAgICAgICAgKFdlYkNvcmU6OkZFTW9ycGhvbG9n
eTo6cGxhdGZvcm1BcHBseVNvZnR3YXJlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9m
aWx0ZXJzL0ZFTW9ycGhvbG9neS5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2ZpbHRl
cnMvRkVPZmZzZXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RkVPZmZzZXQ6OmNyZWF0ZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpGRU9mZnNldDo6RkVPZmZzZXQpOgorICAgICAgICAoV2ViQ29yZTo6
RkVPZmZzZXQ6OmRldGVybWluZUFic29sdXRlUGFpbnRSZWN0KToKKyAgICAgICAgKFdlYkNvcmU6
OkZFT2Zmc2V0OjpwbGF0Zm9ybUFwcGx5U29mdHdhcmUpOgorICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL2ZpbHRlcnMvRkVPZmZzZXQuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9m
aWx0ZXJzL0ZFU3BlY3VsYXJMaWdodGluZy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGRVNwZWN1
bGFyTGlnaHRpbmc6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpGRVNwZWN1bGFyTGlnaHRp
bmc6OkZFU3BlY3VsYXJMaWdodGluZyk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZmls
dGVycy9GRVNwZWN1bGFyTGlnaHRpbmcuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9m
aWx0ZXJzL0ZFVGlsZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGRVRpbGU6OmNyZWF0ZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpGRVRpbGU6OkZFVGlsZSk6CisgICAgICAgIChXZWJDb3JlOjpGRVRp
bGU6OnBsYXRmb3JtQXBwbHlTb2Z0d2FyZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
ZmlsdGVycy9GRVRpbGUuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZF
VHVyYnVsZW5jZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGRVR1cmJ1bGVuY2U6OmNyZWF0ZSk6
CisgICAgICAgIChXZWJDb3JlOjpGRVR1cmJ1bGVuY2U6OkZFVHVyYnVsZW5jZSk6CisgICAgICAg
IChXZWJDb3JlOjpGRVR1cmJ1bGVuY2U6OmZpbGxSZWdpb24gY29uc3QpOgorICAgICAgICAoV2Vi
Q29yZTo6RkVUdXJidWxlbmNlOjpmaWxsUmVnaW9uV29ya2VyKToKKyAgICAgICAgKFdlYkNvcmU6
OkZFVHVyYnVsZW5jZTo6cGxhdGZvcm1BcHBseVNvZnR3YXJlKToKKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy9maWx0ZXJzL0ZFVHVyYnVsZW5jZS5oOgorICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL2ZpbHRlcnMvRmlsdGVyLmg6CisgICAgICAgIChXZWJDb3JlOjpGaWx0ZXI6OnNvdXJj
ZUltYWdlIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkZpbHRlcjo6c291cmNlSW1hZ2UpOiBE
ZWxldGVkLgorCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GaWx0ZXJFZmZl
Y3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RmlsdGVyRWZmZWN0OjpGaWx0ZXJFZmZlY3QpOgor
ICAgICAgICAoV2ViQ29yZTo6RmlsdGVyRWZmZWN0OjpkZXRlcm1pbmVBYnNvbHV0ZVBhaW50UmVj
dCk6CisgICAgICAgIChXZWJDb3JlOjpGaWx0ZXJFZmZlY3Q6OmRldGVybWluZUZpbHRlclByaW1p
dGl2ZVN1YnJlZ2lvbik6CisgICAgICAgIChXZWJDb3JlOjpGaWx0ZXJFZmZlY3Q6OmFwcGx5KToK
KyAgICAgICAgKFdlYkNvcmU6OkZpbHRlckVmZmVjdDo6aW1hZ2VCdWZmZXJSZXN1bHQpOgorICAg
ICAgICAoV2ViQ29yZTo6RmlsdGVyRWZmZWN0Ojpjb252ZXJ0UGl4ZWxCdWZmZXJUb0NvbG9yU3Bh
Y2UpOgorICAgICAgICAoV2ViQ29yZTo6RmlsdGVyRWZmZWN0Ojpjb252ZXJ0SW1hZ2VCdWZmZXJU
b0NvbG9yU3BhY2UpOgorICAgICAgICAoV2ViQ29yZTo6RmlsdGVyRWZmZWN0OjpjcmVhdGVJbWFn
ZUJ1ZmZlclJlc3VsdCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GaWx0
ZXJFZmZlY3QuaDoKKyAgICAgICAgKFdlYkNvcmU6OkZpbHRlckVmZmVjdDo6ZmlsdGVyKTogRGVs
ZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkZpbHRlckVmZmVjdDo6ZmlsdGVyIGNvbnN0KTogRGVs
ZXRlZC4KKyAgICAgICAgQ3JlYXRlIGEgdW5hY2NlbGVyYXRlZCBmaWx0ZXIgaW1hZ2UgcmVzdWx0
IGZvciBub3cuIFRoaXMgd2lsbCBiZSBmaXhlZCAKKyAgICAgICAgaW4gdGhlIGZvbGxvd2luZyBw
YXRjaC4gQW55d2F5IGN1cnJlbnRseSB3ZSBuZXZlciBjcmVhdGUgYWNjZWxlcmF0ZWQKKyAgICAg
ICAgaW50ZXJtZWRpYXRlIEltYWdlQnVmZmVycyBmb3IgZmlsdGVycy4KKworICAgICAgICAqIHBs
YXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRmlsdGVyRWZmZWN0UmVuZGVyZXIuaDoKKyAgICAgICAg
KiBwbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL1NvdXJjZUFscGhhLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OlNvdXJjZUFscGhhOjpTb3VyY2VBbHBoYSk6CisgICAgICAgIChXZWJDb3JlOjpTb3Vy
Y2VBbHBoYTo6ZGV0ZXJtaW5lQWJzb2x1dGVQYWludFJlY3QpOgorICAgICAgICAoV2ViQ29yZTo6
U291cmNlQWxwaGE6OnBsYXRmb3JtQXBwbHlTb2Z0d2FyZSk6CisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3MvZmlsdGVycy9Tb3VyY2VBbHBoYS5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL2ZpbHRlcnMvU291cmNlR3JhcGhpYy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTb3VyY2VH
cmFwaGljOjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6U291cmNlR3JhcGhpYzo6U291cmNl
R3JhcGhpYyk6CisgICAgICAgIChXZWJDb3JlOjpTb3VyY2VHcmFwaGljOjpkZXRlcm1pbmVBYnNv
bHV0ZVBhaW50UmVjdCk6CisgICAgICAgIChXZWJDb3JlOjpTb3VyY2VHcmFwaGljOjpwbGF0Zm9y
bUFwcGx5U29mdHdhcmUpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvU291
cmNlR3JhcGhpYy5oOgorICAgICAgICAoV2ViQ29yZTo6U291cmNlR3JhcGhpYzo6U291cmNlR3Jh
cGhpYyk6IERlbGV0ZWQuCisgICAgICAgICogcmVuZGVyaW5nL0NTU0ZpbHRlci5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpjcmVhdGVCbHVyRWZmZWN0KToKKyAgICAgICAgKFdlYkNvcmU6OmNyZWF0
ZUJyaWdodG5lc3NFZmZlY3QpOgorICAgICAgICAoV2ViQ29yZTo6Y3JlYXRlQ29udHJhc3RFZmZl
Y3QpOgorICAgICAgICAoV2ViQ29yZTo6Y3JlYXRlRHJvcFNoYWRvd0VmZmVjdCk6CisgICAgICAg
IChXZWJDb3JlOjpjcmVhdGVHcmF5U2NhbGVFZmZlY3QpOgorICAgICAgICAoV2ViQ29yZTo6Y3Jl
YXRlSHVlUm90YXRlRWZmZWN0KToKKyAgICAgICAgKFdlYkNvcmU6OmNyZWF0ZUludmVydEVmZmVj
dCk6CisgICAgICAgIChXZWJDb3JlOjpjcmVhdGVPcGFjaXR5RWZmZWN0KToKKyAgICAgICAgKFdl
YkNvcmU6OmNyZWF0ZVNhdHVyYXRlRWZmZWN0KToKKyAgICAgICAgKFdlYkNvcmU6OmNyZWF0ZVNl
cGlhRWZmZWN0KToKKyAgICAgICAgKFdlYkNvcmU6OkNTU0ZpbHRlcjo6YnVpbGRGaWx0ZXJGdW5j
dGlvbnMpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTRmlsdGVyOjpkZXRlcm1pbmVGaWx0ZXJQcmlt
aXRpdmVTdWJyZWdpb24pOgorICAgICAgICAoV2ViQ29yZTo6Q1NTRmlsdGVyOjphcHBseSk6Cisg
ICAgICAgICogcmVuZGVyaW5nL0NTU0ZpbHRlci5oOgorICAgICAgICBBcHBseSB0aGUgRmlsdGVy
RnVuY3Rpb25zIG9mIHRoZSBDU1NGaWx0ZXIgaW4gdGhlIGZvcndhcmQgZGlyZWN0aW9uLgorCisg
ICAgICAgICogcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZUZpbHRlci5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpSZW5kZXJTVkdSZXNvdXJjZUZpbHRlcjo6YXBwbHlSZXNvdXJjZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpSZW5kZXJTVkdSZXNvdXJjZUZpbHRlcjo6cG9zdEFwcGx5UmVzb3Vy
Y2UpOgorCisgICAgICAgICogc3ZnL1NWR0ZFQmxlbmRFbGVtZW50LmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OlNWR0ZFQmxlbmRFbGVtZW50OjpidWlsZCBjb25zdCk6CisgICAgICAgICogc3ZnL1NW
R0ZFQmxlbmRFbGVtZW50Lmg6CisgICAgICAgICogc3ZnL1NWR0ZFQ29sb3JNYXRyaXhFbGVtZW50
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR0ZFQ29sb3JNYXRyaXhFbGVtZW50OjpidWlsZCBj
b25zdCk6CisgICAgICAgICogc3ZnL1NWR0ZFQ29sb3JNYXRyaXhFbGVtZW50Lmg6CisgICAgICAg
ICogc3ZnL1NWR0ZFQ29tcG9uZW50VHJhbnNmZXJFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OlNWR0ZFQ29tcG9uZW50VHJhbnNmZXJFbGVtZW50OjpidWlsZCBjb25zdCk6CisgICAgICAg
ICogc3ZnL1NWR0ZFQ29tcG9uZW50VHJhbnNmZXJFbGVtZW50Lmg6CisgICAgICAgICogc3ZnL1NW
R0ZFQ29tcG9zaXRlRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdGRUNvbXBvc2l0
ZUVsZW1lbnQ6OmJ1aWxkIGNvbnN0KToKKyAgICAgICAgKiBzdmcvU1ZHRkVDb21wb3NpdGVFbGVt
ZW50Lmg6CisgICAgICAgICogc3ZnL1NWR0ZFQ29udm9sdmVNYXRyaXhFbGVtZW50LmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OlNWR0ZFQ29udm9sdmVNYXRyaXhFbGVtZW50OjpidWlsZCBjb25zdCk6
CisgICAgICAgICogc3ZnL1NWR0ZFQ29udm9sdmVNYXRyaXhFbGVtZW50Lmg6CisgICAgICAgICog
c3ZnL1NWR0ZFRGlmZnVzZUxpZ2h0aW5nRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpT
VkdGRURpZmZ1c2VMaWdodGluZ0VsZW1lbnQ6OmJ1aWxkIGNvbnN0KToKKyAgICAgICAgKiBzdmcv
U1ZHRkVEaWZmdXNlTGlnaHRpbmdFbGVtZW50Lmg6CisgICAgICAgICogc3ZnL1NWR0ZFRGlzcGxh
Y2VtZW50TWFwRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdGRURpc3BsYWNlbWVu
dE1hcEVsZW1lbnQ6OmJ1aWxkIGNvbnN0KToKKyAgICAgICAgKiBzdmcvU1ZHRkVEaXNwbGFjZW1l
bnRNYXBFbGVtZW50Lmg6CisgICAgICAgICogc3ZnL1NWR0ZFRHJvcFNoYWRvd0VsZW1lbnQuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6U1ZHRkVEcm9wU2hhZG93RWxlbWVudDo6YnVpbGQgY29uc3Qp
OgorICAgICAgICAqIHN2Zy9TVkdGRURyb3BTaGFkb3dFbGVtZW50Lmg6CisgICAgICAgICogc3Zn
L1NWR0ZFRmxvb2RFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR0ZFRmxvb2RFbGVt
ZW50OjpidWlsZCBjb25zdCk6CisgICAgICAgICogc3ZnL1NWR0ZFRmxvb2RFbGVtZW50Lmg6Cisg
ICAgICAgICogc3ZnL1NWR0ZFR2F1c3NpYW5CbHVyRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpTVkdGRUdhdXNzaWFuQmx1ckVsZW1lbnQ6OmJ1aWxkIGNvbnN0KToKKyAgICAgICAgKiBz
dmcvU1ZHRkVHYXVzc2lhbkJsdXJFbGVtZW50Lmg6CisgICAgICAgICogc3ZnL1NWR0ZFSW1hZ2VF
bGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR0ZFSW1hZ2VFbGVtZW50OjpidWlsZCBj
b25zdCk6CisgICAgICAgICogc3ZnL1NWR0ZFSW1hZ2VFbGVtZW50Lmg6CisgICAgICAgICogc3Zn
L1NWR0ZFTWVyZ2VFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR0ZFTWVyZ2VFbGVt
ZW50OjpidWlsZCBjb25zdCk6CisgICAgICAgICogc3ZnL1NWR0ZFTWVyZ2VFbGVtZW50Lmg6Cisg
ICAgICAgICogc3ZnL1NWR0ZFTW9ycGhvbG9neUVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6U1ZHRkVNb3JwaG9sb2d5RWxlbWVudDo6YnVpbGQgY29uc3QpOgorICAgICAgICAqIHN2Zy9T
VkdGRU1vcnBob2xvZ3lFbGVtZW50Lmg6CisgICAgICAgICogc3ZnL1NWR0ZFT2Zmc2V0RWxlbWVu
dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdGRU9mZnNldEVsZW1lbnQ6OmJ1aWxkIGNvbnN0
KToKKyAgICAgICAgKiBzdmcvU1ZHRkVPZmZzZXRFbGVtZW50Lmg6CisgICAgICAgICogc3ZnL1NW
R0ZFU3BlY3VsYXJMaWdodGluZ0VsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHRkVT
cGVjdWxhckxpZ2h0aW5nRWxlbWVudDo6YnVpbGQgY29uc3QpOgorICAgICAgICAqIHN2Zy9TVkdG
RVNwZWN1bGFyTGlnaHRpbmdFbGVtZW50Lmg6CisgICAgICAgICogc3ZnL1NWR0ZFVGlsZUVsZW1l
bnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHRkVUaWxlRWxlbWVudDo6YnVpbGQgY29uc3Qp
OgorICAgICAgICAqIHN2Zy9TVkdGRVRpbGVFbGVtZW50Lmg6CisgICAgICAgICogc3ZnL1NWR0ZF
VHVyYnVsZW5jZUVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHRkVUdXJidWxlbmNl
RWxlbWVudDo6YnVpbGQgY29uc3QpOgorICAgICAgICAqIHN2Zy9TVkdGRVR1cmJ1bGVuY2VFbGVt
ZW50Lmg6CisgICAgICAgICogc3ZnL1NWR0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRl
cy5oOgorICAgICAgICBSZW1vdmUgdGhlIEZpbHRlciBhcyBhbiBpbnB1dCB0byB0aGUgYnVpbGQo
KSBtZXRob2QgYW5kIHBhc3MgYSByZWZlcmVuY2UKKyAgICAgICAgdG8gU1ZHRmlsdGVyQnVpbGRl
ciBpbnN0ZWFkIG9mIHBhc3NpbmcgYSBwb2ludGVyLgorCisgICAgICAgICogc3ZnL2dyYXBoaWNz
L2ZpbHRlcnMvU1ZHRkVJbWFnZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGRUltYWdlOjpjcmVh
dGUpOgorICAgICAgICAoV2ViQ29yZTo6RkVJbWFnZTo6RkVJbWFnZSk6CisgICAgICAgIChXZWJD
b3JlOjpGRUltYWdlOjpkZXRlcm1pbmVBYnNvbHV0ZVBhaW50UmVjdCk6CisgICAgICAgIChXZWJD
b3JlOjpGRUltYWdlOjpwbGF0Zm9ybUFwcGx5U29mdHdhcmUpOgorICAgICAgICAqIHN2Zy9ncmFw
aGljcy9maWx0ZXJzL1NWR0ZFSW1hZ2UuaDoKKyAgICAgICAgKiBzdmcvZ3JhcGhpY3MvZmlsdGVy
cy9TVkdGaWx0ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHRmlsdGVyOjpjcmVhdGUpOgor
ICAgICAgICAoV2ViQ29yZTo6U1ZHRmlsdGVyOjphcHBseSk6CisgICAgICAgICogc3ZnL2dyYXBo
aWNzL2ZpbHRlcnMvU1ZHRmlsdGVyLmg6CisgICAgICAgICogc3ZnL2dyYXBoaWNzL2ZpbHRlcnMv
U1ZHRmlsdGVyQnVpbGRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdGaWx0ZXJCdWlsZGVy
OjpidWlsZEZpbHRlckVmZmVjdHMpOgorICAgICAgICAqIHN2Zy9ncmFwaGljcy9maWx0ZXJzL1NW
R0ZpbHRlckJ1aWxkZXIuaDoKKwogMjAyMS0xMS0xMyAgU2FpZCBBYm91LUhhbGxhd2EgIDxzYWlk
QGFwcGxlLmNvbT4KIAogICAgICAgICBSRUdSRVNTSU9OIChyMjg1NjE4KTogW21hYy13azFdIEFT
U0VSVElPTiBGQUlMRUQ6IGNnQ29udGV4dCA9PSBbY3VycmVudENvbnRleHQgQ0dDb250ZXh0XQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29yZWltYWdlL0Zp
bHRlckVmZmVjdFJlbmRlcmVyQ29yZUltYWdlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jb3JlaW1hZ2UvRmlsdGVyRWZmZWN0UmVuZGVyZXJDb3JlSW1hZ2UuaAppbmRleCBl
NmM4ZGY0ZDU1YjQ1NjEzNTQ5ZTNhZjQ5MTkyYTI2ZTJjMDQ0YWY3Li5lN2JjODUzMjcyYWI0ZGFm
N2M5Yjg1MDE4NmNjOTlhOTc0NGY5MzVmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jb3JlaW1hZ2UvRmlsdGVyRWZmZWN0UmVuZGVyZXJDb3JlSW1hZ2UuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb3JlaW1hZ2UvRmlsdGVyRWZm
ZWN0UmVuZGVyZXJDb3JlSW1hZ2UuaApAQCAtNDcsNyArNDcsNyBAQCBjbGFzcyBGaWx0ZXJFZmZl
Y3RSZW5kZXJlckNvcmVJbWFnZSA6IHB1YmxpYyBGaWx0ZXJFZmZlY3RSZW5kZXJlciB7CiBwdWJs
aWM6CiAgICAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxGaWx0ZXJFZmZlY3RSZW5kZXJlckNvcmVJ
bWFnZT4gdHJ5Q3JlYXRlKEZpbHRlckVmZmVjdCYpOwogICAgIFJldGFpblB0cjxDSUNvbnRleHQ+
IHNoYXJlZENJQ29udGV4dCgpOwotICAgIHZvaWQgYXBwbHlFZmZlY3RzKEZpbHRlckVmZmVjdCYp
IGZpbmFsOworICAgIHZvaWQgYXBwbHlFZmZlY3RzKGNvbnN0IEZpbHRlciYsIEZpbHRlckVmZmVj
dCYpIGZpbmFsOwogICAgIGJvb2wgaGFzUmVzdWx0KCkgY29uc3QgZmluYWwgeyByZXR1cm4gbV9v
dXRwdXRJbWFnZTsgfQogICAgIEltYWdlQnVmZmVyKiBvdXRwdXQoKSBjb25zdCBmaW5hbDsKICAg
ICBGbG9hdFJlY3QgZGVzdFJlY3QoY29uc3QgRmlsdGVyRWZmZWN0JikgY29uc3QgZmluYWw7CkBA
IC01NSwxMiArNTUsMTIgQEAgcHVibGljOgogICAgIEZpbHRlckVmZmVjdFJlbmRlcmVyQ29yZUlt
YWdlKCk7CiAgICAgCiBwcml2YXRlOgotICAgIFJldGFpblB0cjxDSUltYWdlPiBjb25uZWN0Q0lG
aWx0ZXJzKEZpbHRlckVmZmVjdCYpOworICAgIFJldGFpblB0cjxDSUltYWdlPiBjb25uZWN0Q0lG
aWx0ZXJzKGNvbnN0IEZpbHRlciYsIEZpbHRlckVmZmVjdCYpOwogICAgIHZvaWQgcmVuZGVyVG9J
bWFnZUJ1ZmZlcihGaWx0ZXJFZmZlY3QmKSBmaW5hbDsKICAgICBzdGF0aWMgYm9vbCBzdXBwb3J0
c0NvcmVJbWFnZVJlbmRlcmluZyhGaWx0ZXJFZmZlY3QmKTsKICAgICBzdGF0aWMgYm9vbCBjYW5S
ZW5kZXJVc2luZ0NJRmlsdGVycyhGaWx0ZXJFZmZlY3QmKTsKICAgICAKLSAgICBSZXRhaW5QdHI8
Q0lJbWFnZT4gaW1hZ2VGb3JTb3VyY2VHcmFwaGljKFNvdXJjZUdyYXBoaWMmKTsKKyAgICBSZXRh
aW5QdHI8Q0lJbWFnZT4gaW1hZ2VGb3JTb3VyY2VHcmFwaGljKGNvbnN0IEZpbHRlciYpOwogICAg
IFJldGFpblB0cjxDSUltYWdlPiBpbWFnZUZvckZFQ29sb3JNYXRyaXgoY29uc3QgRkVDb2xvck1h
dHJpeCYsIGNvbnN0IFZlY3RvcjxSZXRhaW5QdHI8Q0lJbWFnZT4+Jik7CiAgICAgUmV0YWluUHRy
PENJSW1hZ2U+IGltYWdlRm9yRkVDb21wb25lbnRUcmFuc2Zlcihjb25zdCBGRUNvbXBvbmVudFRy
YW5zZmVyJiwgVmVjdG9yPFJldGFpblB0cjxDSUltYWdlPj4mKTsKICAgICAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvcmVpbWFnZS9GaWx0ZXJFZmZlY3RS
ZW5kZXJlckNvcmVJbWFnZS5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nv
cmVpbWFnZS9GaWx0ZXJFZmZlY3RSZW5kZXJlckNvcmVJbWFnZS5tbQppbmRleCA5OWIxNjlhMzgx
ZTEyMjE3NzYwMmEyYTczMjMxYjQwYjFiOGVlOWJmLi44YjQwMDE3NzAwZTEwYzY4N2JhNzA2ZTU1
OTZiOGMwYjIzMGJhMjRlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jb3JlaW1hZ2UvRmlsdGVyRWZmZWN0UmVuZGVyZXJDb3JlSW1hZ2UubW0KKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29yZWltYWdlL0ZpbHRlckVmZmVjdFJlbmRl
cmVyQ29yZUltYWdlLm1tCkBAIC05NywyNSArOTcsMjUgQEAgYm9vbCBGaWx0ZXJFZmZlY3RSZW5k
ZXJlckNvcmVJbWFnZTo6c3VwcG9ydHNDb3JlSW1hZ2VSZW5kZXJpbmcoRmlsdGVyRWZmZWN0JiBl
ZmYKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKLXZvaWQgRmlsdGVyRWZmZWN0UmVuZGVyZXJDb3Jl
SW1hZ2U6OmFwcGx5RWZmZWN0cyhGaWx0ZXJFZmZlY3QmIGxhc3RFZmZlY3QpCit2b2lkIEZpbHRl
ckVmZmVjdFJlbmRlcmVyQ29yZUltYWdlOjphcHBseUVmZmVjdHMoY29uc3QgRmlsdGVyJiBmaWx0
ZXIsIEZpbHRlckVmZmVjdCYgbGFzdEVmZmVjdCkKIHsKLSAgICBtX291dHB1dEltYWdlID0gY29u
bmVjdENJRmlsdGVycyhsYXN0RWZmZWN0KTsKKyAgICBtX291dHB1dEltYWdlID0gY29ubmVjdENJ
RmlsdGVycyhmaWx0ZXIsIGxhc3RFZmZlY3QpOwogICAgIGlmICghbV9vdXRwdXRJbWFnZSkKICAg
ICAgICAgcmV0dXJuOwogICAgIHJlbmRlclRvSW1hZ2VCdWZmZXIobGFzdEVmZmVjdCk7CiB9CiAK
LVJldGFpblB0cjxDSUltYWdlPiBGaWx0ZXJFZmZlY3RSZW5kZXJlckNvcmVJbWFnZTo6Y29ubmVj
dENJRmlsdGVycyhGaWx0ZXJFZmZlY3QmIGVmZmVjdCkKK1JldGFpblB0cjxDSUltYWdlPiBGaWx0
ZXJFZmZlY3RSZW5kZXJlckNvcmVJbWFnZTo6Y29ubmVjdENJRmlsdGVycyhjb25zdCBGaWx0ZXIm
IGZpbHRlciwgRmlsdGVyRWZmZWN0JiBlZmZlY3QpCiB7CiAgICAgVmVjdG9yPFJldGFpblB0cjxD
SUltYWdlPj4gaW5wdXRJbWFnZXM7CiAgICAgCiAgICAgZm9yIChhdXRvIGluIDogZWZmZWN0Lmlu
cHV0RWZmZWN0cygpKSB7Ci0gICAgICAgIGF1dG8gaW5wdXRJbWFnZSA9IGNvbm5lY3RDSUZpbHRl
cnMoKmluKTsKKyAgICAgICAgYXV0byBpbnB1dEltYWdlID0gY29ubmVjdENJRmlsdGVycyhmaWx0
ZXIsICppbik7CiAgICAgICAgIGlmICghaW5wdXRJbWFnZSkKICAgICAgICAgICAgIHJldHVybiBu
dWxscHRyOwogICAgICAgICBpbnB1dEltYWdlcy5hcHBlbmQoaW5wdXRJbWFnZSk7CiAgICAgfQot
ICAgIGVmZmVjdC5kZXRlcm1pbmVBYnNvbHV0ZVBhaW50UmVjdCgpOworICAgIGVmZmVjdC5kZXRl
cm1pbmVBYnNvbHV0ZVBhaW50UmVjdChmaWx0ZXIpOwogICAgIGVmZmVjdC5zZXRSZXN1bHRDb2xv
clNwYWNlKGVmZmVjdC5vcGVyYXRpbmdDb2xvclNwYWNlKCkpOwogICAgIAogICAgIGlmIChlZmZl
Y3QuYWJzb2x1dGVQYWludFJlY3QoKS5pc0VtcHR5KCkgfHwgSW1hZ2VCdWZmZXI6OnNpemVOZWVk
c0NsYW1waW5nKGVmZmVjdC5hYnNvbHV0ZVBhaW50UmVjdCgpLnNpemUoKSkpCkBAIC0xMjMsNyAr
MTIzLDcgQEAgUmV0YWluUHRyPENJSW1hZ2U+IEZpbHRlckVmZmVjdFJlbmRlcmVyQ29yZUltYWdl
Ojpjb25uZWN0Q0lGaWx0ZXJzKEZpbHRlckVmZmVjdCYKICAgICAKICAgICBzd2l0Y2ggKGVmZmVj
dC5maWx0ZXJUeXBlKCkpIHsKICAgICBjYXNlIEZpbHRlckVmZmVjdDo6VHlwZTo6U291cmNlR3Jh
cGhpYzoKLSAgICAgICAgcmV0dXJuIGltYWdlRm9yU291cmNlR3JhcGhpYyhkb3duY2FzdDxTb3Vy
Y2VHcmFwaGljPihlZmZlY3QpKTsKKyAgICAgICAgcmV0dXJuIGltYWdlRm9yU291cmNlR3JhcGhp
YyhmaWx0ZXIpOwogICAgIGNhc2UgRmlsdGVyRWZmZWN0OjpUeXBlOjpGRUNvbG9yTWF0cml4Ogog
ICAgICAgICByZXR1cm4gaW1hZ2VGb3JGRUNvbG9yTWF0cml4KGRvd25jYXN0PEZFQ29sb3JNYXRy
aXg+KGVmZmVjdCksIGlucHV0SW1hZ2VzKTsKICAgICBjYXNlIEZpbHRlckVmZmVjdDo6VHlwZTo6
RkVDb21wb25lbnRUcmFuc2ZlcjoKQEAgLTEzNSw5ICsxMzUsOSBAQCBSZXRhaW5QdHI8Q0lJbWFn
ZT4gRmlsdGVyRWZmZWN0UmVuZGVyZXJDb3JlSW1hZ2U6OmNvbm5lY3RDSUZpbHRlcnMoRmlsdGVy
RWZmZWN0JgogICAgIHJldHVybiBudWxscHRyOwogfQogCi1SZXRhaW5QdHI8Q0lJbWFnZT4gRmls
dGVyRWZmZWN0UmVuZGVyZXJDb3JlSW1hZ2U6OmltYWdlRm9yU291cmNlR3JhcGhpYyhTb3VyY2VH
cmFwaGljJiBlZmZlY3QpCitSZXRhaW5QdHI8Q0lJbWFnZT4gRmlsdGVyRWZmZWN0UmVuZGVyZXJD
b3JlSW1hZ2U6OmltYWdlRm9yU291cmNlR3JhcGhpYyhjb25zdCBGaWx0ZXImIGZpbHRlcikKIHsK
LSAgICBJbWFnZUJ1ZmZlciogc291cmNlSW1hZ2UgPSBlZmZlY3QuZmlsdGVyKCkuc291cmNlSW1h
Z2UoKTsKKyAgICBJbWFnZUJ1ZmZlciogc291cmNlSW1hZ2UgPSBmaWx0ZXIuc291cmNlSW1hZ2Uo
KTsKICAgICBpZiAoIXNvdXJjZUltYWdlKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NwdS9hcm0vZmls
dGVycy9GRUJsZW5kTkVPTi5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY3B1
L2FybS9maWx0ZXJzL0ZFQmxlbmRORU9OLmgKaW5kZXggMjYxMTBjZGZiMGJiNmNmNDkwNDU4Mzg3
Nzg3YWMxMGZhMTcxY2YxOC4uNzc4MzZkZGRiMDI1OGU5ZjdjNWJlYjNlYTUzODAwMjIxOGYyYzhi
OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY3B1L2FybS9m
aWx0ZXJzL0ZFQmxlbmRORU9OLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY3B1L2FybS9maWx0ZXJzL0ZFQmxlbmRORU9OLmgKQEAgLTI1LDggKzI1LDcgQEAKICAqIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCiAgKi8KIAotI2lmbmRlZiBGRUJsZW5kTkVPTl9oCi0jZGVmaW5lIEZFQmxlbmRO
RU9OX2gKKyNwcmFnbWEgb25jZQogCiAjaWYgSEFWRShBUk1fTkVPTl9JTlRSSU5TSUNTKQogCkBA
IC0xMDcsNyArMTA2LDcgQEAgcHVibGljOgogICAgIH0KIH07CiAKLXZvaWQgRkVCbGVuZDo6cGxh
dGZvcm1BcHBseVNvZnR3YXJlKCkKK3ZvaWQgRkVCbGVuZDo6cGxhdGZvcm1BcHBseVNvZnR3YXJl
KGNvbnN0IEZpbHRlciYpCiB7CiAgICAgRmlsdGVyRWZmZWN0KiBpbiA9IGlucHV0RWZmZWN0KDAp
OwogICAgIEZpbHRlckVmZmVjdCogaW4yID0gaW5wdXRFZmZlY3QoMSk7CkBAIC0yMDUsNSArMjA0
LDMgQEAgdm9pZCBGRUJsZW5kOjpwbGF0Zm9ybUFwcGx5TkVPTih1bnNpZ25lZCBjaGFyKiBzcmNQ
aXhlbEFycmF5QSwgdW5zaWduZWQgY2hhciogc3IKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAog
I2VuZGlmIC8vIEhBVkUoQVJNX05FT05fSU5UUklOU0lDUykKLQotI2VuZGlmIC8vIEZFQmxlbmRO
RU9OX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRl
cnMvRkVCbGVuZC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJz
L0ZFQmxlbmQuY3BwCmluZGV4IGI0Y2FlZDQ1NTU3MmZjODVjZWQ4YTRmMjMxYzlmODMwMjdiYWZi
MGIuLjFiYjgzMWNlMzA5ZmM1ZmY3YTM1YTVmNTc2MWJhYzU5MjcxNGJjMTcgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVCbGVuZC5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRUJsZW5kLmNwcApA
QCAtMjYsMjMgKzI2LDIzIEBACiAjaW5jbHVkZSAiRkVCbGVuZC5oIgogCiAjaW5jbHVkZSAiRkVC
bGVuZE5FT04uaCIKLSNpbmNsdWRlICJGaWx0ZXIuaCIKICNpbmNsdWRlICJGbG9hdFBvaW50Lmgi
CiAjaW5jbHVkZSAiR3JhcGhpY3NDb250ZXh0LmgiCisjaW5jbHVkZSAiSW1hZ2VCdWZmZXIuaCIK
ICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9VaW50OENsYW1wZWRBcnJheS5oPgogI2luY2x1ZGUg
PHd0Zi90ZXh0L1RleHRTdHJlYW0uaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1GRUJsZW5k
OjpGRUJsZW5kKEZpbHRlciYgZmlsdGVyLCBCbGVuZE1vZGUgbW9kZSkKLSAgICA6IEZpbHRlckVm
ZmVjdChmaWx0ZXIsIEZpbHRlckVmZmVjdDo6VHlwZTo6RkVCbGVuZCkKLSAgICAsIG1fbW9kZSht
b2RlKQorUmVmPEZFQmxlbmQ+IEZFQmxlbmQ6OmNyZWF0ZShCbGVuZE1vZGUgbW9kZSkKIHsKKyAg
ICByZXR1cm4gYWRvcHRSZWYoKm5ldyBGRUJsZW5kKG1vZGUpKTsKIH0KIAotUmVmPEZFQmxlbmQ+
IEZFQmxlbmQ6OmNyZWF0ZShGaWx0ZXImIGZpbHRlciwgQmxlbmRNb2RlIG1vZGUpCitGRUJsZW5k
OjpGRUJsZW5kKEJsZW5kTW9kZSBtb2RlKQorICAgIDogRmlsdGVyRWZmZWN0KEZpbHRlckVmZmVj
dDo6VHlwZTo6RkVCbGVuZCkKKyAgICAsIG1fbW9kZShtb2RlKQogewotICAgIHJldHVybiBhZG9w
dFJlZigqbmV3IEZFQmxlbmQoZmlsdGVyLCBtb2RlKSk7CiB9CiAKIGJvb2wgRkVCbGVuZDo6c2V0
QmxlbmRNb2RlKEJsZW5kTW9kZSBtb2RlKQpAQCAtNTQsNyArNTQsNyBAQCBib29sIEZFQmxlbmQ6
OnNldEJsZW5kTW9kZShCbGVuZE1vZGUgbW9kZSkKIH0KIAogI2lmICFIQVZFKEFSTV9ORU9OX0lO
VFJJTlNJQ1MpCi12b2lkIEZFQmxlbmQ6OnBsYXRmb3JtQXBwbHlTb2Z0d2FyZSgpCit2b2lkIEZF
QmxlbmQ6OnBsYXRmb3JtQXBwbHlTb2Z0d2FyZShjb25zdCBGaWx0ZXImKQogewogICAgIEZpbHRl
ckVmZmVjdCogaW4gPSBpbnB1dEVmZmVjdCgwKTsKICAgICBGaWx0ZXJFZmZlY3QqIGluMiA9IGlu
cHV0RWZmZWN0KDEpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvZmlsdGVycy9GRUJsZW5kLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9m
aWx0ZXJzL0ZFQmxlbmQuaAppbmRleCBiODRjOGRkMjgwNThmZjQ1ZDU0Y2RmOGE3M2EyYmE3MTcy
NWZkZTVjLi5lZWQzMThlOGMzNWIwYzdlNmUxNjJmNjNiZWJjMGQyZjRiYjBkYmJhIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFQmxlbmQuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFQmxlbmQuaApA
QCAtMjMsMjAgKzIzLDIxIEBACiAjcHJhZ21hIG9uY2UKIAogI2luY2x1ZGUgIkZpbHRlckVmZmVj
dC5oIgotCi0jaW5jbHVkZSAiRmlsdGVyLmgiCisjaW5jbHVkZSAiR3JhcGhpY3NUeXBlcy5oIgog
CiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIEZFQmxlbmQgOiBwdWJsaWMgRmlsdGVyRWZm
ZWN0IHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUmVmPEZFQmxlbmQ+IGNyZWF0ZShGaWx0ZXImLCBC
bGVuZE1vZGUpOworICAgIHN0YXRpYyBSZWY8RkVCbGVuZD4gY3JlYXRlKEJsZW5kTW9kZSk7CiAK
ICAgICBCbGVuZE1vZGUgYmxlbmRNb2RlKCkgY29uc3QgeyByZXR1cm4gbV9tb2RlOyB9CiAgICAg
Ym9vbCBzZXRCbGVuZE1vZGUoQmxlbmRNb2RlKTsKIAogcHJpdmF0ZToKLSAgICB2b2lkIHBsYXRm
b3JtQXBwbHlTb2Z0d2FyZSgpIG92ZXJyaWRlOworICAgIEZFQmxlbmQoQmxlbmRNb2RlKTsKKwor
ICAgIHZvaWQgcGxhdGZvcm1BcHBseVNvZnR3YXJlKGNvbnN0IEZpbHRlciYpIG92ZXJyaWRlOwog
ICAgIHZvaWQgcGxhdGZvcm1BcHBseUdlbmVyaWModW5zaWduZWQgY2hhciogc3JjUGl4ZWxBcnJh
eUEsIHVuc2lnbmVkIGNoYXIqIHNyY1BpeGVsQXJyYXlCLCB1bnNpZ25lZCBjaGFyKiBkc3RQaXhl
bEFycmF5LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgY29sb3JBcnJheUxl
bmd0aCk7CiAgICAgdm9pZCBwbGF0Zm9ybUFwcGx5TkVPTih1bnNpZ25lZCBjaGFyKiBzcmNQaXhl
bEFycmF5QSwgdW5zaWduZWQgY2hhciogc3JjUGl4ZWxBcnJheUIsIHVuc2lnbmVkIGNoYXIqIGRz
dFBpeGVsQXJyYXksCkBAIC00NCw4ICs0NSw2IEBAIHByaXZhdGU6CiAKICAgICBXVEY6OlRleHRT
dHJlYW0mIGV4dGVybmFsUmVwcmVzZW50YXRpb24oV1RGOjpUZXh0U3RyZWFtJiwgUmVwcmVzZW50
YXRpb25UeXBlKSBjb25zdCBvdmVycmlkZTsKIAotICAgIEZFQmxlbmQoRmlsdGVyJiwgQmxlbmRN
b2RlKTsKLQogICAgIEJsZW5kTW9kZSBtX21vZGU7CiB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFQ29sb3JNYXRyaXguY3BwIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRUNvbG9yTWF0cml4LmNwcApp
bmRleCBhNzkxYmQ2ZDMxZmQ3NTA0YTExMzI3ZjFkNDFhY2JkM2E0OWUxOTUyLi5mMGE5ZDMxODE2
ZmQ0ZGRhYTkwZTcyNmYyZTgxODQwZDVhZmUyY2YxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFQ29sb3JNYXRyaXguY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVDb2xvck1hdHJpeC5jcHAKQEAg
LTIzLDggKzIzLDggQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJGRUNvbG9yTWF0
cml4LmgiCiAKLSNpbmNsdWRlICJGaWx0ZXIuaCIKICNpbmNsdWRlICJHcmFwaGljc0NvbnRleHQu
aCIKKyNpbmNsdWRlICJJbWFnZUJ1ZmZlci5oIgogI2luY2x1ZGUgIlBpeGVsQnVmZmVyLmgiCiAj
aW5jbHVkZSA8d3RmL01hdGhFeHRyYXMuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9UZXh0U3RyZWFt
Lmg+CkBAIC0zNSwxNiArMzUsMTYgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1GRUNvbG9y
TWF0cml4OjpGRUNvbG9yTWF0cml4KEZpbHRlciYgZmlsdGVyLCBDb2xvck1hdHJpeFR5cGUgdHlw
ZSwgVmVjdG9yPGZsb2F0PiYmIHZhbHVlcykKLSAgICA6IEZpbHRlckVmZmVjdChmaWx0ZXIsIEZp
bHRlckVmZmVjdDo6VHlwZTo6RkVDb2xvck1hdHJpeCkKLSAgICAsIG1fdHlwZSh0eXBlKQotICAg
ICwgbV92YWx1ZXMoV1RGTW92ZSh2YWx1ZXMpKQorUmVmPEZFQ29sb3JNYXRyaXg+IEZFQ29sb3JN
YXRyaXg6OmNyZWF0ZShDb2xvck1hdHJpeFR5cGUgdHlwZSwgVmVjdG9yPGZsb2F0PiYmIHZhbHVl
cykKIHsKKyAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBGRUNvbG9yTWF0cml4KHR5cGUsIFdURk1v
dmUodmFsdWVzKSkpOwogfQogCi1SZWY8RkVDb2xvck1hdHJpeD4gRkVDb2xvck1hdHJpeDo6Y3Jl
YXRlKEZpbHRlciYgZmlsdGVyLCBDb2xvck1hdHJpeFR5cGUgdHlwZSwgVmVjdG9yPGZsb2F0PiYm
IHZhbHVlcykKK0ZFQ29sb3JNYXRyaXg6OkZFQ29sb3JNYXRyaXgoQ29sb3JNYXRyaXhUeXBlIHR5
cGUsIFZlY3RvcjxmbG9hdD4mJiB2YWx1ZXMpCisgICAgOiBGaWx0ZXJFZmZlY3QoRmlsdGVyRWZm
ZWN0OjpUeXBlOjpGRUNvbG9yTWF0cml4KQorICAgICwgbV90eXBlKHR5cGUpCisgICAgLCBtX3Zh
bHVlcyhXVEZNb3ZlKHZhbHVlcykpCiB7Ci0gICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgRkVDb2xv
ck1hdHJpeChmaWx0ZXIsIHR5cGUsIFdURk1vdmUodmFsdWVzKSkpOwogfQogCiBib29sIEZFQ29s
b3JNYXRyaXg6OnNldFR5cGUoQ29sb3JNYXRyaXhUeXBlIHR5cGUpCkBAIC0yNzMsNyArMjczLDcg
QEAgdm9pZCBlZmZlY3RUeXBlKFVpbnQ4Q2xhbXBlZEFycmF5JiBwaXhlbEFycmF5LCBjb25zdCBW
ZWN0b3I8ZmxvYXQ+JiB2YWx1ZXMsIEludFMKICAgICB9CiB9CiAKLXZvaWQgRkVDb2xvck1hdHJp
eDo6cGxhdGZvcm1BcHBseVNvZnR3YXJlKCkKK3ZvaWQgRkVDb2xvck1hdHJpeDo6cGxhdGZvcm1B
cHBseVNvZnR3YXJlKGNvbnN0IEZpbHRlciYpCiB7CiAgICAgRmlsdGVyRWZmZWN0KiBpbiA9IGlu
cHV0RWZmZWN0KDApOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9maWx0ZXJzL0ZFQ29sb3JNYXRyaXguaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2ZpbHRlcnMvRkVDb2xvck1hdHJpeC5oCmluZGV4IDk5MmU3NWY5ZTgxNTBjNjE3YTJl
ZjA3YzY1OTM2MTYwMDVlNDBmNDIuLjIyOWZmMGI4YzQ0ZjUxYzBlZjA1NGU1ZWEyYTQyNDZlMjI3
ZDg3ZDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRl
cnMvRkVDb2xvck1hdHJpeC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2ZpbHRlcnMvRkVDb2xvck1hdHJpeC5oCkBAIC0yMiw4ICsyMiw2IEBACiAjcHJhZ21hIG9uY2UK
IAogI2luY2x1ZGUgIkZpbHRlckVmZmVjdC5oIgotCi0jaW5jbHVkZSAiRmlsdGVyLmgiCiAjaW5j
bHVkZSA8d3RmL1ZlY3Rvci5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC0zOCw3ICszNiw3
IEBAIGVudW0gQ29sb3JNYXRyaXhUeXBlIHsKIAogY2xhc3MgRkVDb2xvck1hdHJpeCA6IHB1Ymxp
YyBGaWx0ZXJFZmZlY3QgewogcHVibGljOgotICAgIHN0YXRpYyBSZWY8RkVDb2xvck1hdHJpeD4g
Y3JlYXRlKEZpbHRlciYsIENvbG9yTWF0cml4VHlwZSwgVmVjdG9yPGZsb2F0PiYmKTsKKyAgICBz
dGF0aWMgUmVmPEZFQ29sb3JNYXRyaXg+IGNyZWF0ZShDb2xvck1hdHJpeFR5cGUsIFZlY3Rvcjxm
bG9hdD4mJik7CiAKICAgICBDb2xvck1hdHJpeFR5cGUgdHlwZSgpIGNvbnN0IHsgcmV0dXJuIG1f
dHlwZTsgfQogICAgIGJvb2wgc2V0VHlwZShDb2xvck1hdHJpeFR5cGUpOwpAQCAtNTAsOSArNDgs
OSBAQCBwdWJsaWM6CiAgICAgc3RhdGljIGlubGluZSB2b2lkIGNhbGN1bGF0ZUh1ZVJvdGF0ZUNv
bXBvbmVudHMoZmxvYXQqIGNvbXBvbmVudHMsIGZsb2F0IHZhbHVlKTsKIAogcHJpdmF0ZToKLSAg
ICBGRUNvbG9yTWF0cml4KEZpbHRlciYsIENvbG9yTWF0cml4VHlwZSwgVmVjdG9yPGZsb2F0PiYm
KTsKKyAgICBGRUNvbG9yTWF0cml4KENvbG9yTWF0cml4VHlwZSwgVmVjdG9yPGZsb2F0PiYmKTsK
IAotICAgIHZvaWQgcGxhdGZvcm1BcHBseVNvZnR3YXJlKCkgb3ZlcnJpZGU7CisgICAgdm9pZCBw
bGF0Zm9ybUFwcGx5U29mdHdhcmUoY29uc3QgRmlsdGVyJikgb3ZlcnJpZGU7CiAKICAgICBXVEY6
OlRleHRTdHJlYW0mIGV4dGVybmFsUmVwcmVzZW50YXRpb24oV1RGOjpUZXh0U3RyZWFtJiwgUmVw
cmVzZW50YXRpb25UeXBlKSBjb25zdCBvdmVycmlkZTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRUNvbXBvbmVudFRyYW5zZmVyLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVDb21wb25lbnRUcmFu
c2Zlci5jcHAKaW5kZXggY2UwMGNjMTk4Mjk3OWI0MDk0MDRkNWNmZGNjMDNhNmVkMzM1YzNiMi4u
YjJkYWQzNzE0YzYzYWFkOWFmMmVlNzNkZDFlMWE2ZTYwZjViZjJjOCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRUNvbXBvbmVudFRyYW5zZmVy
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFQ29t
cG9uZW50VHJhbnNmZXIuY3BwCkBAIC0yNCw3ICsyNCw2IEBACiAjaW5jbHVkZSAiY29uZmlnLmgi
CiAjaW5jbHVkZSAiRkVDb21wb25lbnRUcmFuc2Zlci5oIgogCi0jaW5jbHVkZSAiRmlsdGVyLmgi
CiAjaW5jbHVkZSAiR3JhcGhpY3NDb250ZXh0LmgiCiAjaW5jbHVkZSAiUGl4ZWxCdWZmZXIuaCIK
ICNpbmNsdWRlIDx3dGYvTWF0aEV4dHJhcy5oPgpAQCAtMzMsOCArMzIsMTMgQEAKIAogbmFtZXNw
YWNlIFdlYkNvcmUgewogCi1GRUNvbXBvbmVudFRyYW5zZmVyOjpGRUNvbXBvbmVudFRyYW5zZmVy
KEZpbHRlciYgZmlsdGVyLCBjb25zdCBDb21wb25lbnRUcmFuc2ZlckZ1bmN0aW9uJiByZWRGdW5j
dGlvbiwgY29uc3QgQ29tcG9uZW50VHJhbnNmZXJGdW5jdGlvbiYgZ3JlZW5GdW5jdGlvbiwgY29u
c3QgQ29tcG9uZW50VHJhbnNmZXJGdW5jdGlvbiYgYmx1ZUZ1bmN0aW9uLCBjb25zdCBDb21wb25l
bnRUcmFuc2ZlckZ1bmN0aW9uJiBhbHBoYUZ1bmN0aW9uKQotICAgIDogRmlsdGVyRWZmZWN0KGZp
bHRlciwgRmlsdGVyRWZmZWN0OjpUeXBlOjpGRUNvbXBvbmVudFRyYW5zZmVyKQorUmVmPEZFQ29t
cG9uZW50VHJhbnNmZXI+IEZFQ29tcG9uZW50VHJhbnNmZXI6OmNyZWF0ZShjb25zdCBDb21wb25l
bnRUcmFuc2ZlckZ1bmN0aW9uJiByZWRGdW5jdGlvbiwgY29uc3QgQ29tcG9uZW50VHJhbnNmZXJG
dW5jdGlvbiYgZ3JlZW5GdW5jdGlvbiwgY29uc3QgQ29tcG9uZW50VHJhbnNmZXJGdW5jdGlvbiYg
Ymx1ZUZ1bmN0aW9uLCBjb25zdCBDb21wb25lbnRUcmFuc2ZlckZ1bmN0aW9uJiBhbHBoYUZ1bmN0
aW9uKQoreworICAgIHJldHVybiBhZG9wdFJlZigqbmV3IEZFQ29tcG9uZW50VHJhbnNmZXIocmVk
RnVuY3Rpb24sIGdyZWVuRnVuY3Rpb24sIGJsdWVGdW5jdGlvbiwgYWxwaGFGdW5jdGlvbikpOwor
fQorCitGRUNvbXBvbmVudFRyYW5zZmVyOjpGRUNvbXBvbmVudFRyYW5zZmVyKGNvbnN0IENvbXBv
bmVudFRyYW5zZmVyRnVuY3Rpb24mIHJlZEZ1bmN0aW9uLCBjb25zdCBDb21wb25lbnRUcmFuc2Zl
ckZ1bmN0aW9uJiBncmVlbkZ1bmN0aW9uLCBjb25zdCBDb21wb25lbnRUcmFuc2ZlckZ1bmN0aW9u
JiBibHVlRnVuY3Rpb24sIGNvbnN0IENvbXBvbmVudFRyYW5zZmVyRnVuY3Rpb24mIGFscGhhRnVu
Y3Rpb24pCisgICAgOiBGaWx0ZXJFZmZlY3QoRmlsdGVyRWZmZWN0OjpUeXBlOjpGRUNvbXBvbmVu
dFRyYW5zZmVyKQogICAgICwgbV9yZWRGdW5jdGlvbihyZWRGdW5jdGlvbikKICAgICAsIG1fZ3Jl
ZW5GdW5jdGlvbihncmVlbkZ1bmN0aW9uKQogICAgICwgbV9ibHVlRnVuY3Rpb24oYmx1ZUZ1bmN0
aW9uKQpAQCAtNDIsMTIgKzQ2LDYgQEAgRkVDb21wb25lbnRUcmFuc2Zlcjo6RkVDb21wb25lbnRU
cmFuc2ZlcihGaWx0ZXImIGZpbHRlciwgY29uc3QgQ29tcG9uZW50VHJhbnNmZXIKIHsKIH0KIAot
UmVmPEZFQ29tcG9uZW50VHJhbnNmZXI+IEZFQ29tcG9uZW50VHJhbnNmZXI6OmNyZWF0ZShGaWx0
ZXImIGZpbHRlciwgY29uc3QgQ29tcG9uZW50VHJhbnNmZXJGdW5jdGlvbiYgcmVkRnVuY3Rpb24s
Ci0gICAgY29uc3QgQ29tcG9uZW50VHJhbnNmZXJGdW5jdGlvbiYgZ3JlZW5GdW5jdGlvbiwgY29u
c3QgQ29tcG9uZW50VHJhbnNmZXJGdW5jdGlvbiYgYmx1ZUZ1bmN0aW9uLCBjb25zdCBDb21wb25l
bnRUcmFuc2ZlckZ1bmN0aW9uJiBhbHBoYUZ1bmN0aW9uKQotewotICAgIHJldHVybiBhZG9wdFJl
ZigqbmV3IEZFQ29tcG9uZW50VHJhbnNmZXIoZmlsdGVyLCByZWRGdW5jdGlvbiwgZ3JlZW5GdW5j
dGlvbiwgYmx1ZUZ1bmN0aW9uLCBhbHBoYUZ1bmN0aW9uKSk7Ci19Ci0KIHZvaWQgRkVDb21wb25l
bnRUcmFuc2Zlcjo6Y29tcHV0ZUlkZW50aXR5VGFibGUoTG9va3VwVGFibGUmLCBjb25zdCBDb21w
b25lbnRUcmFuc2ZlckZ1bmN0aW9uJikKIHsKIH0KQEAgLTEwMyw3ICsxMDEsNyBAQCB2b2lkIEZF
Q29tcG9uZW50VHJhbnNmZXI6OmNvbXB1dGVHYW1tYVRhYmxlKExvb2t1cFRhYmxlJiB2YWx1ZXMs
IGNvbnN0IENvbXBvbmVudAogICAgIH0KIH0KIAotdm9pZCBGRUNvbXBvbmVudFRyYW5zZmVyOjpw
bGF0Zm9ybUFwcGx5U29mdHdhcmUoKQordm9pZCBGRUNvbXBvbmVudFRyYW5zZmVyOjpwbGF0Zm9y
bUFwcGx5U29mdHdhcmUoY29uc3QgRmlsdGVyJikKIHsKICAgICBGaWx0ZXJFZmZlY3QqIGluID0g
aW5wdXRFZmZlY3QoMCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2ZpbHRlcnMvRkVDb21wb25lbnRUcmFuc2Zlci5oIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRUNvbXBvbmVudFRyYW5zZmVyLmgKaW5kZXggM2I5ZDI2
MDhiMDk3NGQ4MjU1ZWNhYTQyYTgzYzJhZmRmNjM4YTNkOS4uNmFmZWU1ZTk2ODYxNzEzNzQxZTM5
OWE2OGI1MWYzOTQwODNmMDQzYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvZmlsdGVycy9GRUNvbXBvbmVudFRyYW5zZmVyLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRUNvbXBvbmVudFRyYW5zZmVyLmgKQEAgLTIy
LDggKzIyLDYgQEAKICNwcmFnbWEgb25jZQogCiAjaW5jbHVkZSAiRmlsdGVyRWZmZWN0LmgiCi0K
LSNpbmNsdWRlICJGaWx0ZXIuaCIKICNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CiAKIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKQEAgLTUzLDggKzUxLDcgQEAgc3RydWN0IENvbXBvbmVudFRyYW5zZmVyRnVu
Y3Rpb24gewogCiBjbGFzcyBGRUNvbXBvbmVudFRyYW5zZmVyIDogcHVibGljIEZpbHRlckVmZmVj
dCB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFJlZjxGRUNvbXBvbmVudFRyYW5zZmVyPiBjcmVhdGUo
RmlsdGVyJiwgY29uc3QgQ29tcG9uZW50VHJhbnNmZXJGdW5jdGlvbiYgcmVkRnVuYywgY29uc3Qg
Q29tcG9uZW50VHJhbnNmZXJGdW5jdGlvbiYgZ3JlZW5GdW5jLAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IENvbXBvbmVudFRyYW5zZmVyRnVuY3Rpb24m
IGJsdWVGdW5jLCBjb25zdCBDb21wb25lbnRUcmFuc2ZlckZ1bmN0aW9uJiBhbHBoYUZ1bmMpOwor
ICAgIHN0YXRpYyBSZWY8RkVDb21wb25lbnRUcmFuc2Zlcj4gY3JlYXRlKGNvbnN0IENvbXBvbmVu
dFRyYW5zZmVyRnVuY3Rpb24mIHJlZEZ1bmMsIGNvbnN0IENvbXBvbmVudFRyYW5zZmVyRnVuY3Rp
b24mIGdyZWVuRnVuYywgY29uc3QgQ29tcG9uZW50VHJhbnNmZXJGdW5jdGlvbiYgYmx1ZUZ1bmMs
IGNvbnN0IENvbXBvbmVudFRyYW5zZmVyRnVuY3Rpb24mIGFscGhhRnVuYyk7CiAKICAgICBDb21w
b25lbnRUcmFuc2ZlckZ1bmN0aW9uIHJlZEZ1bmN0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9yZWRG
dW5jdGlvbjsgfQogICAgIENvbXBvbmVudFRyYW5zZmVyRnVuY3Rpb24gZ3JlZW5GdW5jdGlvbigp
IGNvbnN0IHsgcmV0dXJuIG1fZ3JlZW5GdW5jdGlvbjsgfQpAQCAtNjIsOCArNTksNyBAQCBwdWJs
aWM6CiAgICAgQ29tcG9uZW50VHJhbnNmZXJGdW5jdGlvbiBhbHBoYUZ1bmN0aW9uKCkgY29uc3Qg
eyByZXR1cm4gbV9hbHBoYUZ1bmN0aW9uOyB9CiAKIHByaXZhdGU6Ci0gICAgRkVDb21wb25lbnRU
cmFuc2ZlcihGaWx0ZXImLCBjb25zdCBDb21wb25lbnRUcmFuc2ZlckZ1bmN0aW9uJiByZWRGdW5j
LCBjb25zdCBDb21wb25lbnRUcmFuc2ZlckZ1bmN0aW9uJiBncmVlbkZ1bmMsCi0gICAgICAgICAg
ICAgICAgICAgICAgICBjb25zdCBDb21wb25lbnRUcmFuc2ZlckZ1bmN0aW9uJiBibHVlRnVuYywg
Y29uc3QgQ29tcG9uZW50VHJhbnNmZXJGdW5jdGlvbiYgYWxwaGFGdW5jKTsKKyAgICBGRUNvbXBv
bmVudFRyYW5zZmVyKGNvbnN0IENvbXBvbmVudFRyYW5zZmVyRnVuY3Rpb24mIHJlZEZ1bmMsIGNv
bnN0IENvbXBvbmVudFRyYW5zZmVyRnVuY3Rpb24mIGdyZWVuRnVuYywgY29uc3QgQ29tcG9uZW50
VHJhbnNmZXJGdW5jdGlvbiYgYmx1ZUZ1bmMsIGNvbnN0IENvbXBvbmVudFRyYW5zZmVyRnVuY3Rp
b24mIGFscGhhRnVuYyk7CiAKICAgICB1c2luZyBMb29rdXBUYWJsZSA9IHN0ZDo6YXJyYXk8dWlu
dDhfdCwgMjU2PjsKIApAQCAtNzUsNyArNzEsNyBAQCBwcml2YXRlOgogCiAgICAgdm9pZCBjb21w
dXRlTG9va3VwVGFibGVzKExvb2t1cFRhYmxlJiByZWRUYWJsZSwgTG9va3VwVGFibGUmIGdyZWVu
VGFibGUsIExvb2t1cFRhYmxlJiBibHVlVGFibGUsIExvb2t1cFRhYmxlJiBhbHBoYVRhYmxlKTsK
IAotICAgIHZvaWQgcGxhdGZvcm1BcHBseVNvZnR3YXJlKCkgb3ZlcnJpZGU7CisgICAgdm9pZCBw
bGF0Zm9ybUFwcGx5U29mdHdhcmUoY29uc3QgRmlsdGVyJikgb3ZlcnJpZGU7CiAKICAgICBXVEY6
OlRleHRTdHJlYW0mIGV4dGVybmFsUmVwcmVzZW50YXRpb24oV1RGOjpUZXh0U3RyZWFtJiwgUmVw
cmVzZW50YXRpb25UeXBlKSBjb25zdCBvdmVycmlkZTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRUNvbXBvc2l0ZS5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFQ29tcG9zaXRlLmNwcAppbmRleCBl
MGJlZjMwNzQwNWZmMjMzZThhMmFmYjVjYmVjOGQ1NDhkMjI3ODA4Li42ZDZiZjVjYjQ2NDllZWIy
ZmMwNzhmMzU1NzhkOTA3NDNjNTFjMDUyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFQ29tcG9zaXRlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFQ29tcG9zaXRlLmNwcApAQCAtMjUsMTUgKzI1
LDIwIEBACiAjaW5jbHVkZSAiRkVDb21wb3NpdGUuaCIKIAogI2luY2x1ZGUgIkZFQ29tcG9zaXRl
QXJpdGhtZXRpY05FT04uaCIKLSNpbmNsdWRlICJGaWx0ZXIuaCIKICNpbmNsdWRlICJHcmFwaGlj
c0NvbnRleHQuaCIKKyNpbmNsdWRlICJJbWFnZUJ1ZmZlci5oIgogI2luY2x1ZGUgIlBpeGVsQnVm
ZmVyLmgiCiAjaW5jbHVkZSA8d3RmL3RleHQvVGV4dFN0cmVhbS5oPgogCiBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAKLUZFQ29tcG9zaXRlOjpGRUNvbXBvc2l0ZShGaWx0ZXImIGZpbHRlciwgY29uc3Qg
Q29tcG9zaXRlT3BlcmF0aW9uVHlwZSYgdHlwZSwgZmxvYXQgazEsIGZsb2F0IGsyLCBmbG9hdCBr
MywgZmxvYXQgazQpCi0gICAgOiBGaWx0ZXJFZmZlY3QoZmlsdGVyLCBGaWx0ZXJFZmZlY3Q6OlR5
cGU6OkZFQ29tcG9zaXRlKQorUmVmPEZFQ29tcG9zaXRlPiBGRUNvbXBvc2l0ZTo6Y3JlYXRlKGNv
bnN0IENvbXBvc2l0ZU9wZXJhdGlvblR5cGUmIHR5cGUsIGZsb2F0IGsxLCBmbG9hdCBrMiwgZmxv
YXQgazMsIGZsb2F0IGs0KQoreworICAgIHJldHVybiBhZG9wdFJlZigqbmV3IEZFQ29tcG9zaXRl
KHR5cGUsIGsxLCBrMiwgazMsIGs0KSk7Cit9CisKK0ZFQ29tcG9zaXRlOjpGRUNvbXBvc2l0ZShj
b25zdCBDb21wb3NpdGVPcGVyYXRpb25UeXBlJiB0eXBlLCBmbG9hdCBrMSwgZmxvYXQgazIsIGZs
b2F0IGszLCBmbG9hdCBrNCkKKyAgICA6IEZpbHRlckVmZmVjdChGaWx0ZXJFZmZlY3Q6OlR5cGU6
OkZFQ29tcG9zaXRlKQogICAgICwgbV90eXBlKHR5cGUpCiAgICAgLCBtX2sxKGsxKQogICAgICwg
bV9rMihrMikKQEAgLTQyLDExICs0Nyw2IEBAIEZFQ29tcG9zaXRlOjpGRUNvbXBvc2l0ZShGaWx0
ZXImIGZpbHRlciwgY29uc3QgQ29tcG9zaXRlT3BlcmF0aW9uVHlwZSYgdHlwZSwgZmxvCiB7CiB9
CiAKLVJlZjxGRUNvbXBvc2l0ZT4gRkVDb21wb3NpdGU6OmNyZWF0ZShGaWx0ZXImIGZpbHRlciwg
Y29uc3QgQ29tcG9zaXRlT3BlcmF0aW9uVHlwZSYgdHlwZSwgZmxvYXQgazEsIGZsb2F0IGsyLCBm
bG9hdCBrMywgZmxvYXQgazQpCi17Ci0gICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgRkVDb21wb3Np
dGUoZmlsdGVyLCB0eXBlLCBrMSwgazIsIGszLCBrNCkpOwotfQotCiBib29sIEZFQ29tcG9zaXRl
OjpzZXRPcGVyYXRpb24oQ29tcG9zaXRlT3BlcmF0aW9uVHlwZSB0eXBlKQogewogICAgIGlmICht
X3R5cGUgPT0gdHlwZSkKQEAgLTIwMSw3ICsyMDEsNyBAQCBpbmxpbmUgdm9pZCBGRUNvbXBvc2l0
ZTo6cGxhdGZvcm1Bcml0aG1ldGljU29mdHdhcmUoY29uc3QgVWludDhDbGFtcGVkQXJyYXkmIHNv
dQogI2VuZGlmCiB9CiAKLXZvaWQgRkVDb21wb3NpdGU6OmRldGVybWluZUFic29sdXRlUGFpbnRS
ZWN0KCkKK3ZvaWQgRkVDb21wb3NpdGU6OmRldGVybWluZUFic29sdXRlUGFpbnRSZWN0KGNvbnN0
IEZpbHRlciYgZmlsdGVyKQogewogICAgIHN3aXRjaCAobV90eXBlKSB7CiAgICAgY2FzZSBGRUNP
TVBPU0lURV9PUEVSQVRPUl9JTjoKQEAgLTIxOCwxMiArMjE4LDEyIEBAIHZvaWQgRkVDb21wb3Np
dGU6OmRldGVybWluZUFic29sdXRlUGFpbnRSZWN0KCkKICAgICAgICAgcmV0dXJuOwogICAgIGRl
ZmF1bHQ6CiAgICAgICAgIC8vIFRha2UgdGhlIHVuaW9uIG9mIGJvdGggaW5wdXQgZWZmZWN0cy4K
LSAgICAgICAgRmlsdGVyRWZmZWN0OjpkZXRlcm1pbmVBYnNvbHV0ZVBhaW50UmVjdCgpOworICAg
ICAgICBGaWx0ZXJFZmZlY3Q6OmRldGVybWluZUFic29sdXRlUGFpbnRSZWN0KGZpbHRlcik7CiAg
ICAgICAgIHJldHVybjsKICAgICB9CiB9CiAKLXZvaWQgRkVDb21wb3NpdGU6OnBsYXRmb3JtQXBw
bHlTb2Z0d2FyZSgpCit2b2lkIEZFQ29tcG9zaXRlOjpwbGF0Zm9ybUFwcGx5U29mdHdhcmUoY29u
c3QgRmlsdGVyJikKIHsKICAgICBGaWx0ZXJFZmZlY3QqIGluID0gaW5wdXRFZmZlY3QoMCk7CiAg
ICAgRmlsdGVyRWZmZWN0KiBpbjIgPSBpbnB1dEVmZmVjdCgxKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVDb21wb3NpdGUuaCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVDb21wb3NpdGUuaAppbmRleCAz
OTIzN2ZlYjEyN2FkMWZmMWRlMjE4MzRiZDdiMmI3MzdmYWFmMzJkLi4yMjgwN2NhYThkNjY3ODM5
YmMwMTdiYjUwMmMwNTA4NGY3MmJjNzI0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFQ29tcG9zaXRlLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRUNvbXBvc2l0ZS5oCkBAIC0yMiw4ICsyMiw2IEBA
CiAjcHJhZ21hIG9uY2UKIAogI2luY2x1ZGUgIkZpbHRlckVmZmVjdC5oIgotCi0jaW5jbHVkZSAi
RmlsdGVyLmgiCiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAKIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKQEAgLTQxLDcgKzM5LDcgQEAgZW51bSBDb21wb3NpdGVPcGVyYXRpb25UeXBlIHsK
IAogY2xhc3MgRkVDb21wb3NpdGUgOiBwdWJsaWMgRmlsdGVyRWZmZWN0IHsKIHB1YmxpYzoKLSAg
ICBzdGF0aWMgUmVmPEZFQ29tcG9zaXRlPiBjcmVhdGUoRmlsdGVyJiwgY29uc3QgQ29tcG9zaXRl
T3BlcmF0aW9uVHlwZSYsIGZsb2F0LCBmbG9hdCwgZmxvYXQsIGZsb2F0KTsKKyAgICBzdGF0aWMg
UmVmPEZFQ29tcG9zaXRlPiBjcmVhdGUoY29uc3QgQ29tcG9zaXRlT3BlcmF0aW9uVHlwZSYsIGZs
b2F0IGsxLCBmbG9hdCBrMiwgZmxvYXQgazMsIGZsb2F0IGs0KTsKIAogICAgIENvbXBvc2l0ZU9w
ZXJhdGlvblR5cGUgb3BlcmF0aW9uKCkgY29uc3QgeyByZXR1cm4gbV90eXBlOyB9CiAgICAgYm9v
bCBzZXRPcGVyYXRpb24oQ29tcG9zaXRlT3BlcmF0aW9uVHlwZSk7CkBAIC01OCwxNiArNTYsMTcg
QEAgcHVibGljOgogICAgIGZsb2F0IGs0KCkgY29uc3QgeyByZXR1cm4gbV9rNDsgfQogICAgIGJv
b2wgc2V0SzQoZmxvYXQpOwogCi1wcm90ZWN0ZWQ6Ci0gICAgYm9vbCByZXF1aXJlc1ZhbGlkUHJl
TXVsdGlwbGllZFBpeGVscygpIG92ZXJyaWRlIHsgcmV0dXJuIG1fdHlwZSAhPSBGRUNPTVBPU0lU
RV9PUEVSQVRPUl9BUklUSE1FVElDOyB9Ci0KIHByaXZhdGU6Ci0gICAgRkVDb21wb3NpdGUoRmls
dGVyJiwgY29uc3QgQ29tcG9zaXRlT3BlcmF0aW9uVHlwZSYsIGZsb2F0LCBmbG9hdCwgZmxvYXQs
IGZsb2F0KTsKKyAgICBGRUNvbXBvc2l0ZShjb25zdCBDb21wb3NpdGVPcGVyYXRpb25UeXBlJiwg
ZmxvYXQgazEsIGZsb2F0IGsyLCBmbG9hdCBrMywgZmxvYXQgazQpOwogCiAgICAgdm9pZCBjb3Jy
ZWN0RmlsdGVyUmVzdWx0SWZOZWVkZWQoKSBvdmVycmlkZTsKLSAgICB2b2lkIGRldGVybWluZUFi
c29sdXRlUGFpbnRSZWN0KCkgb3ZlcnJpZGU7CiAKLSAgICB2b2lkIHBsYXRmb3JtQXBwbHlTb2Z0
d2FyZSgpIG92ZXJyaWRlOworICAgIGJvb2wgcmVxdWlyZXNWYWxpZFByZU11bHRpcGxpZWRQaXhl
bHMoKSBvdmVycmlkZSB7IHJldHVybiBtX3R5cGUgIT0gRkVDT01QT1NJVEVfT1BFUkFUT1JfQVJJ
VEhNRVRJQzsgfQorCisgICAgdm9pZCBkZXRlcm1pbmVBYnNvbHV0ZVBhaW50UmVjdChjb25zdCBG
aWx0ZXImKSBvdmVycmlkZTsKKworICAgIHZvaWQgcGxhdGZvcm1BcHBseVNvZnR3YXJlKGNvbnN0
IEZpbHRlciYpIG92ZXJyaWRlOworCiAgICAgV1RGOjpUZXh0U3RyZWFtJiBleHRlcm5hbFJlcHJl
c2VudGF0aW9uKFdURjo6VGV4dFN0cmVhbSYsIFJlcHJlc2VudGF0aW9uVHlwZSkgY29uc3Qgb3Zl
cnJpZGU7CiAKICAgICBpbmxpbmUgdm9pZCBwbGF0Zm9ybUFyaXRobWV0aWNTb2Z0d2FyZShjb25z
dCBVaW50OENsYW1wZWRBcnJheSYgc291cmNlLCBVaW50OENsYW1wZWRBcnJheSYgZGVzdGluYXRp
b24sIGZsb2F0IGsxLCBmbG9hdCBrMiwgZmxvYXQgazMsIGZsb2F0IGs0KTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVDb252b2x2ZU1hdHJp
eC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFQ29udm9s
dmVNYXRyaXguY3BwCmluZGV4IGU4NmYxMjljNTRiMWQ4ZmQ4ZWQ5Mjk0NmUyY2UxYjY5ODIzMDNi
ZWQuLjYzMjZhNTZlMWQzMWVjNDU0NjlkOGU3OGE2NmEzYWU5YjllMjgzYTkgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVDb252b2x2ZU1hdHJp
eC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRUNv
bnZvbHZlTWF0cml4LmNwcApAQCAtMjQsNyArMjQsNiBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgog
I2luY2x1ZGUgIkZFQ29udm9sdmVNYXRyaXguaCIKIAotI2luY2x1ZGUgIkZpbHRlci5oIgogI2lu
Y2x1ZGUgIlBpeGVsQnVmZmVyLmgiCiAjaW5jbHVkZSA8d3RmL1BhcmFsbGVsSm9icy5oPgogI2lu
Y2x1ZGUgPHd0Zi9Xb3JrUXVldWUuaD4KQEAgLTMyLDggKzMxLDEzIEBACiAKIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIAotRkVDb252b2x2ZU1hdHJpeDo6RkVDb252b2x2ZU1hdHJpeChGaWx0ZXImIGZp
bHRlciwgY29uc3QgSW50U2l6ZSYga2VybmVsU2l6ZSwgZmxvYXQgZGl2aXNvciwgZmxvYXQgYmlh
cywgY29uc3QgSW50UG9pbnQmIHRhcmdldE9mZnNldCwgRWRnZU1vZGVUeXBlIGVkZ2VNb2RlLCBj
b25zdCBGbG9hdFBvaW50JiBrZXJuZWxVbml0TGVuZ3RoLCBib29sIHByZXNlcnZlQWxwaGEsIGNv
bnN0IFZlY3RvcjxmbG9hdD4mIGtlcm5lbE1hdHJpeCkKLSAgICA6IEZpbHRlckVmZmVjdChmaWx0
ZXIsIEZpbHRlckVmZmVjdDo6VHlwZTo6RkVDb252b2x2ZU1hdHJpeCkKK1JlZjxGRUNvbnZvbHZl
TWF0cml4PiBGRUNvbnZvbHZlTWF0cml4OjpjcmVhdGUoY29uc3QgSW50U2l6ZSYga2VybmVsU2l6
ZSwgZmxvYXQgZGl2aXNvciwgZmxvYXQgYmlhcywgY29uc3QgSW50UG9pbnQmIHRhcmdldE9mZnNl
dCwgRWRnZU1vZGVUeXBlIGVkZ2VNb2RlLCBjb25zdCBGbG9hdFBvaW50JiBrZXJuZWxVbml0TGVu
Z3RoLCBib29sIHByZXNlcnZlQWxwaGEsIGNvbnN0IFZlY3RvcjxmbG9hdD4mIGtlcm5lbE1hdHJp
eCkKK3sKKyAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBGRUNvbnZvbHZlTWF0cml4KGtlcm5lbFNp
emUsIGRpdmlzb3IsIGJpYXMsIHRhcmdldE9mZnNldCwgZWRnZU1vZGUsIGtlcm5lbFVuaXRMZW5n
dGgsIHByZXNlcnZlQWxwaGEsIGtlcm5lbE1hdHJpeCkpOworfQorCitGRUNvbnZvbHZlTWF0cml4
OjpGRUNvbnZvbHZlTWF0cml4KGNvbnN0IEludFNpemUmIGtlcm5lbFNpemUsIGZsb2F0IGRpdmlz
b3IsIGZsb2F0IGJpYXMsIGNvbnN0IEludFBvaW50JiB0YXJnZXRPZmZzZXQsIEVkZ2VNb2RlVHlw
ZSBlZGdlTW9kZSwgY29uc3QgRmxvYXRQb2ludCYga2VybmVsVW5pdExlbmd0aCwgYm9vbCBwcmVz
ZXJ2ZUFscGhhLCBjb25zdCBWZWN0b3I8ZmxvYXQ+JiBrZXJuZWxNYXRyaXgpCisgICAgOiBGaWx0
ZXJFZmZlY3QoRmlsdGVyRWZmZWN0OjpUeXBlOjpGRUNvbnZvbHZlTWF0cml4KQogICAgICwgbV9r
ZXJuZWxTaXplKGtlcm5lbFNpemUpCiAgICAgLCBtX2Rpdmlzb3IoZGl2aXNvcikKICAgICAsIG1f
YmlhcyhiaWFzKQpAQCAtNDcsMTQgKzUxLDYgQEAgRkVDb252b2x2ZU1hdHJpeDo6RkVDb252b2x2
ZU1hdHJpeChGaWx0ZXImIGZpbHRlciwgY29uc3QgSW50U2l6ZSYga2VybmVsU2l6ZSwgZmwKICAg
ICBBU1NFUlQobV9rZXJuZWxTaXplLmhlaWdodCgpID4gMCk7CiB9CiAKLVJlZjxGRUNvbnZvbHZl
TWF0cml4PiBGRUNvbnZvbHZlTWF0cml4OjpjcmVhdGUoRmlsdGVyJiBmaWx0ZXIsIGNvbnN0IElu
dFNpemUmIGtlcm5lbFNpemUsCi0gICAgZmxvYXQgZGl2aXNvciwgZmxvYXQgYmlhcywgY29uc3Qg
SW50UG9pbnQmIHRhcmdldE9mZnNldCwgRWRnZU1vZGVUeXBlIGVkZ2VNb2RlLAotICAgIGNvbnN0
IEZsb2F0UG9pbnQmIGtlcm5lbFVuaXRMZW5ndGgsIGJvb2wgcHJlc2VydmVBbHBoYSwgY29uc3Qg
VmVjdG9yPGZsb2F0PiYga2VybmVsTWF0cml4KQotewotICAgIHJldHVybiBhZG9wdFJlZigqbmV3
IEZFQ29udm9sdmVNYXRyaXgoZmlsdGVyLCBrZXJuZWxTaXplLCBkaXZpc29yLCBiaWFzLCB0YXJn
ZXRPZmZzZXQsIGVkZ2VNb2RlLCBrZXJuZWxVbml0TGVuZ3RoLAotICAgICAgICBwcmVzZXJ2ZUFs
cGhhLCBrZXJuZWxNYXRyaXgpKTsKLX0KLQogdm9pZCBGRUNvbnZvbHZlTWF0cml4OjpzZXRLZXJu
ZWxTaXplKGNvbnN0IEludFNpemUmIGtlcm5lbFNpemUpCiB7CiAgICAgQVNTRVJUKGtlcm5lbFNp
emUud2lkdGgoKSA+IDApOwpAQCAtMzY1LDcgKzM2MSw3IEBAIEFMV0FZU19JTkxJTkUgdm9pZCBG
RUNvbnZvbHZlTWF0cml4OjpzZXRPdXRlclBpeGVscyhQYWludGluZ0RhdGEmIHBhaW50aW5nRGF0
YSwKICAgICAgICAgZmFzdFNldE91dGVyUGl4ZWxzPGZhbHNlPihwYWludGluZ0RhdGEsIHgxLCB5
MSwgeDIsIHkyKTsKIH0KIAotdm9pZCBGRUNvbnZvbHZlTWF0cml4OjpwbGF0Zm9ybUFwcGx5U29m
dHdhcmUoKQordm9pZCBGRUNvbnZvbHZlTWF0cml4OjpwbGF0Zm9ybUFwcGx5U29mdHdhcmUoY29u
c3QgRmlsdGVyJikKIHsKICAgICBGaWx0ZXJFZmZlY3QqIGluID0gaW5wdXRFZmZlY3QoMCk7CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVD
b252b2x2ZU1hdHJpeC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVy
cy9GRUNvbnZvbHZlTWF0cml4LmgKaW5kZXggYzFhNWM1Yjg2NzU2MmYyNmFmODA3ZDQ1YzViNDAw
OTZkYjFjZmZmYS4uOTU3NmRmZWU3ZTg0MmNhZjQ2NTA4NWFkNzFiYzcwZTJmNWFhZjU5NCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRUNvbnZv
bHZlTWF0cml4LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVy
cy9GRUNvbnZvbHZlTWF0cml4LmgKQEAgLTI0LDcgKzI0LDYgQEAKIAogI2luY2x1ZGUgIkZpbHRl
ckVmZmVjdC5oIgogI2luY2x1ZGUgIkZsb2F0UG9pbnQuaCIKLSNpbmNsdWRlICJGaWx0ZXIuaCIK
ICNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAgLTM4LDkg
KzM3LDcgQEAgZW51bSBFZGdlTW9kZVR5cGUgewogCiBjbGFzcyBGRUNvbnZvbHZlTWF0cml4IDog
cHVibGljIEZpbHRlckVmZmVjdCB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFJlZjxGRUNvbnZvbHZl
TWF0cml4PiBjcmVhdGUoRmlsdGVyJiwgY29uc3QgSW50U2l6ZSYsCi0gICAgICAgICAgICBmbG9h
dCwgZmxvYXQsIGNvbnN0IEludFBvaW50JiwgRWRnZU1vZGVUeXBlLCBjb25zdCBGbG9hdFBvaW50
JiwKLSAgICAgICAgICAgIGJvb2wsIGNvbnN0IFZlY3RvcjxmbG9hdD4mKTsKKyAgICBzdGF0aWMg
UmVmPEZFQ29udm9sdmVNYXRyaXg+IGNyZWF0ZShjb25zdCBJbnRTaXplJiBrZXJuZWxTaXplLCBm
bG9hdCBkaXZpc29yLCBmbG9hdCBiaWFzLCBjb25zdCBJbnRQb2ludCYgdGFyZ2V0T2Zmc2V0LCBF
ZGdlTW9kZVR5cGUsIGNvbnN0IEZsb2F0UG9pbnQmIGtlcm5lbFVuaXRMZW5ndGgsIGJvb2wgcHJl
c2VydmVBbHBoYSwgY29uc3QgVmVjdG9yPGZsb2F0PiYga2VybmVsTWF0cml4KTsKIAogICAgIElu
dFNpemUga2VybmVsU2l6ZSgpIGNvbnN0IHsgcmV0dXJuIG1fa2VybmVsU2l6ZTsgfQogICAgIHZv
aWQgc2V0S2VybmVsU2l6ZShjb25zdCBJbnRTaXplJik7CkBAIC03NywxMiArNzQsMTEgQEAgcHJp
dmF0ZToKICAgICAgICAgVmVjdG9yPGZsb2F0PiBrZXJuZWxNYXRyaXg7CiAgICAgfTsKIAotICAg
IEZFQ29udm9sdmVNYXRyaXgoRmlsdGVyJiwgY29uc3QgSW50U2l6ZSYsIGZsb2F0LCBmbG9hdCwK
LSAgICAgICAgICAgIGNvbnN0IEludFBvaW50JiwgRWRnZU1vZGVUeXBlLCBjb25zdCBGbG9hdFBv
aW50JiwgYm9vbCwgY29uc3QgVmVjdG9yPGZsb2F0PiYpOworICAgIEZFQ29udm9sdmVNYXRyaXgo
Y29uc3QgSW50U2l6ZSYga2VybmVsU2l6ZSwgZmxvYXQgZGl2aXNvciwgZmxvYXQgYmlhcywgY29u
c3QgSW50UG9pbnQmIHRhcmdldE9mZnNldCwgRWRnZU1vZGVUeXBlLCBjb25zdCBGbG9hdFBvaW50
JiBrZXJuZWxVbml0TGVuZ3RoLCBib29sIHByZXNlcnZlQWxwaGEsIGNvbnN0IFZlY3RvcjxmbG9h
dD4mIGtlcm5lbE1hdHJpeCk7CiAKLSAgICB2b2lkIGRldGVybWluZUFic29sdXRlUGFpbnRSZWN0
KCkgb3ZlcnJpZGUgeyBzZXRBYnNvbHV0ZVBhaW50UmVjdChlbmNsb3NpbmdJbnRSZWN0KG1heEVm
ZmVjdFJlY3QoKSkpOyB9CisgICAgdm9pZCBkZXRlcm1pbmVBYnNvbHV0ZVBhaW50UmVjdChjb25z
dCBGaWx0ZXImKSBvdmVycmlkZSB7IHNldEFic29sdXRlUGFpbnRSZWN0KGVuY2xvc2luZ0ludFJl
Y3QobWF4RWZmZWN0UmVjdCgpKSk7IH0KIAotICAgIHZvaWQgcGxhdGZvcm1BcHBseVNvZnR3YXJl
KCkgb3ZlcnJpZGU7CisgICAgdm9pZCBwbGF0Zm9ybUFwcGx5U29mdHdhcmUoY29uc3QgRmlsdGVy
Jikgb3ZlcnJpZGU7CiAKICAgICBXVEY6OlRleHRTdHJlYW0mIGV4dGVybmFsUmVwcmVzZW50YXRp
b24oV1RGOjpUZXh0U3RyZWFtJiwgUmVwcmVzZW50YXRpb25UeXBlKSBjb25zdCBvdmVycmlkZTsK
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9G
RURpZmZ1c2VMaWdodGluZy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9m
aWx0ZXJzL0ZFRGlmZnVzZUxpZ2h0aW5nLmNwcAppbmRleCA0NGUyZTYyMTRhMzc2YTRkYTFlZTc3
M2NkZDQxNzY1Nzc0MDliMWUwLi4xYWFjZTlkNjlhMDkwYjRmMTBmMTNkZTc1NTc1MWVmMjg2MjA5
MWNkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJz
L0ZFRGlmZnVzZUxpZ2h0aW5nLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9maWx0ZXJzL0ZFRGlmZnVzZUxpZ2h0aW5nLmNwcApAQCAtMjcsMTQgKzI3LDE0IEBACiAK
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotRkVEaWZmdXNlTGlnaHRpbmc6OkZFRGlmZnVzZUxpZ2h0
aW5nKEZpbHRlciYgZmlsdGVyLCBjb25zdCBDb2xvciYgbGlnaHRpbmdDb2xvciwgZmxvYXQgc3Vy
ZmFjZVNjYWxlLCBmbG9hdCBkaWZmdXNlQ29uc3RhbnQsIGZsb2F0IGtlcm5lbFVuaXRMZW5ndGhY
LCBmbG9hdCBrZXJuZWxVbml0TGVuZ3RoWSwgUmVmPExpZ2h0U291cmNlPiYmIGxpZ2h0U291cmNl
KQotICAgIDogRkVMaWdodGluZyhmaWx0ZXIsIERpZmZ1c2VMaWdodGluZywgbGlnaHRpbmdDb2xv
ciwgc3VyZmFjZVNjYWxlLCBkaWZmdXNlQ29uc3RhbnQsIDAsIDAsIGtlcm5lbFVuaXRMZW5ndGhY
LCBrZXJuZWxVbml0TGVuZ3RoWSwgV1RGTW92ZShsaWdodFNvdXJjZSksIEZpbHRlckVmZmVjdDo6
VHlwZTo6RkVEaWZmdXNlTGlnaHRpbmcpCitSZWY8RkVEaWZmdXNlTGlnaHRpbmc+IEZFRGlmZnVz
ZUxpZ2h0aW5nOjpjcmVhdGUoY29uc3QgQ29sb3ImIGxpZ2h0aW5nQ29sb3IsIGZsb2F0IHN1cmZh
Y2VTY2FsZSwgZmxvYXQgZGlmZnVzZUNvbnN0YW50LCBmbG9hdCBrZXJuZWxVbml0TGVuZ3RoWCwg
ZmxvYXQga2VybmVsVW5pdExlbmd0aFksIFJlZjxMaWdodFNvdXJjZT4mJiBsaWdodFNvdXJjZSkK
IHsKKyAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBGRURpZmZ1c2VMaWdodGluZyhsaWdodGluZ0Nv
bG9yLCBzdXJmYWNlU2NhbGUsIGRpZmZ1c2VDb25zdGFudCwga2VybmVsVW5pdExlbmd0aFgsIGtl
cm5lbFVuaXRMZW5ndGhZLCBXVEZNb3ZlKGxpZ2h0U291cmNlKSkpOwogfQogCi1SZWY8RkVEaWZm
dXNlTGlnaHRpbmc+IEZFRGlmZnVzZUxpZ2h0aW5nOjpjcmVhdGUoRmlsdGVyJiBmaWx0ZXIsIGNv
bnN0IENvbG9yJiBsaWdodGluZ0NvbG9yLCBmbG9hdCBzdXJmYWNlU2NhbGUsIGZsb2F0IGRpZmZ1
c2VDb25zdGFudCwgZmxvYXQga2VybmVsVW5pdExlbmd0aFgsIGZsb2F0IGtlcm5lbFVuaXRMZW5n
dGhZLCBSZWY8TGlnaHRTb3VyY2U+JiYgbGlnaHRTb3VyY2UpCitGRURpZmZ1c2VMaWdodGluZzo6
RkVEaWZmdXNlTGlnaHRpbmcoY29uc3QgQ29sb3ImIGxpZ2h0aW5nQ29sb3IsIGZsb2F0IHN1cmZh
Y2VTY2FsZSwgZmxvYXQgZGlmZnVzZUNvbnN0YW50LCBmbG9hdCBrZXJuZWxVbml0TGVuZ3RoWCwg
ZmxvYXQga2VybmVsVW5pdExlbmd0aFksIFJlZjxMaWdodFNvdXJjZT4mJiBsaWdodFNvdXJjZSkK
KyAgICA6IEZFTGlnaHRpbmcoRGlmZnVzZUxpZ2h0aW5nLCBsaWdodGluZ0NvbG9yLCBzdXJmYWNl
U2NhbGUsIGRpZmZ1c2VDb25zdGFudCwgMCwgMCwga2VybmVsVW5pdExlbmd0aFgsIGtlcm5lbFVu
aXRMZW5ndGhZLCBXVEZNb3ZlKGxpZ2h0U291cmNlKSwgRmlsdGVyRWZmZWN0OjpUeXBlOjpGRURp
ZmZ1c2VMaWdodGluZykKIHsKLSAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBGRURpZmZ1c2VMaWdo
dGluZyhmaWx0ZXIsIGxpZ2h0aW5nQ29sb3IsIHN1cmZhY2VTY2FsZSwgZGlmZnVzZUNvbnN0YW50
LCBrZXJuZWxVbml0TGVuZ3RoWCwga2VybmVsVW5pdExlbmd0aFksIFdURk1vdmUobGlnaHRTb3Vy
Y2UpKSk7CiB9CiAKIGJvb2wgRkVEaWZmdXNlTGlnaHRpbmc6OnNldERpZmZ1c2VDb25zdGFudChm
bG9hdCBkaWZmdXNlQ29uc3RhbnQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9maWx0ZXJzL0ZFRGlmZnVzZUxpZ2h0aW5nLmggYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFRGlmZnVzZUxpZ2h0aW5nLmgKaW5kZXggMjczN2Y2
MGY0YzNmNGIzNjI0ZGY4MGViYjk5ODM3YmE2NTlmYTBiZS4uOGExMGFlYzg3YzhmMTg5ZjlmMDU3
Y2I5NDQzZWFhZWRkNTM4ZjY5MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvZmlsdGVycy9GRURpZmZ1c2VMaWdodGluZy5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVEaWZmdXNlTGlnaHRpbmcuaApAQCAtMjksNyAr
MjksNyBAQCBjbGFzcyBMaWdodFNvdXJjZTsKIAogY2xhc3MgRkVEaWZmdXNlTGlnaHRpbmcgOiBw
dWJsaWMgRkVMaWdodGluZyB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFJlZjxGRURpZmZ1c2VMaWdo
dGluZz4gY3JlYXRlKEZpbHRlciYsIGNvbnN0IENvbG9yJiwgZmxvYXQsIGZsb2F0LCBmbG9hdCwg
ZmxvYXQsIFJlZjxMaWdodFNvdXJjZT4mJik7CisgICAgc3RhdGljIFJlZjxGRURpZmZ1c2VMaWdo
dGluZz4gY3JlYXRlKGNvbnN0IENvbG9yJiBsaWdodGluZ0NvbG9yLCBmbG9hdCBzdXJmYWNlU2Nh
bGUsIGZsb2F0IGRpZmZ1c2VDb25zdGFudCwgZmxvYXQga2VybmVsVW5pdExlbmd0aFgsIGZsb2F0
IGtlcm5lbFVuaXRMZW5ndGhZLCBSZWY8TGlnaHRTb3VyY2U+JiYpOwogCiAgICAgZmxvYXQgZGlm
ZnVzZUNvbnN0YW50KCkgY29uc3QgeyByZXR1cm4gbV9kaWZmdXNlQ29uc3RhbnQ7IH0KICAgICBi
b29sIHNldERpZmZ1c2VDb25zdGFudChmbG9hdCk7CkBAIC0zNyw3ICszNyw3IEBAIHB1YmxpYzoK
ICAgICBXVEY6OlRleHRTdHJlYW0mIGV4dGVybmFsUmVwcmVzZW50YXRpb24oV1RGOjpUZXh0U3Ry
ZWFtJiwgUmVwcmVzZW50YXRpb25UeXBlKSBjb25zdCBvdmVycmlkZTsKIAogcHJpdmF0ZToKLSAg
ICBGRURpZmZ1c2VMaWdodGluZyhGaWx0ZXImLCBjb25zdCBDb2xvciYsIGZsb2F0LCBmbG9hdCwg
ZmxvYXQsIGZsb2F0LCBSZWY8TGlnaHRTb3VyY2U+JiYpOworICAgIEZFRGlmZnVzZUxpZ2h0aW5n
KGNvbnN0IENvbG9yJiBsaWdodGluZ0NvbG9yLCBmbG9hdCBzdXJmYWNlU2NhbGUsIGZsb2F0IGRp
ZmZ1c2VDb25zdGFudCwgZmxvYXQga2VybmVsVW5pdExlbmd0aFgsIGZsb2F0IGtlcm5lbFVuaXRM
ZW5ndGhZLCBSZWY8TGlnaHRTb3VyY2U+JiYpOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29y
ZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9G
RURpc3BsYWNlbWVudE1hcC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9m
aWx0ZXJzL0ZFRGlzcGxhY2VtZW50TWFwLmNwcAppbmRleCAyNGE0NjI2YzZhMWM4MWZjNzc0ZGE2
MjM3NmMxMjliZDg2ZDcxZTI5Li4zNjc1NjgwYzgxYTRkYTUzOTYwMzg4YTEyNTlkZGU2MjhjNjFl
N2E0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJz
L0ZFRGlzcGxhY2VtZW50TWFwLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9maWx0ZXJzL0ZFRGlzcGxhY2VtZW50TWFwLmNwcApAQCAtMzEsMTggKzMxLDE3IEBACiAK
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotRkVEaXNwbGFjZW1lbnRNYXA6OkZFRGlzcGxhY2VtZW50
TWFwKEZpbHRlciYgZmlsdGVyLCBDaGFubmVsU2VsZWN0b3JUeXBlIHhDaGFubmVsU2VsZWN0b3Is
IENoYW5uZWxTZWxlY3RvclR5cGUgeUNoYW5uZWxTZWxlY3RvciwgZmxvYXQgc2NhbGUpCi0gICAg
OiBGaWx0ZXJFZmZlY3QoZmlsdGVyLCBGaWx0ZXJFZmZlY3Q6OlR5cGU6OkZFRGlzcGxhY2VtZW50
TWFwKQotICAgICwgbV94Q2hhbm5lbFNlbGVjdG9yKHhDaGFubmVsU2VsZWN0b3IpCi0gICAgLCBt
X3lDaGFubmVsU2VsZWN0b3IoeUNoYW5uZWxTZWxlY3RvcikKLSAgICAsIG1fc2NhbGUoc2NhbGUp
CitSZWY8RkVEaXNwbGFjZW1lbnRNYXA+IEZFRGlzcGxhY2VtZW50TWFwOjpjcmVhdGUoQ2hhbm5l
bFNlbGVjdG9yVHlwZSB4Q2hhbm5lbFNlbGVjdG9yLCBDaGFubmVsU2VsZWN0b3JUeXBlIHlDaGFu
bmVsU2VsZWN0b3IsIGZsb2F0IHNjYWxlKQogeworICAgIHJldHVybiBhZG9wdFJlZigqbmV3IEZF
RGlzcGxhY2VtZW50TWFwKHhDaGFubmVsU2VsZWN0b3IsIHlDaGFubmVsU2VsZWN0b3IsIHNjYWxl
KSk7CiB9CiAKLVJlZjxGRURpc3BsYWNlbWVudE1hcD4gRkVEaXNwbGFjZW1lbnRNYXA6OmNyZWF0
ZShGaWx0ZXImIGZpbHRlciwgQ2hhbm5lbFNlbGVjdG9yVHlwZSB4Q2hhbm5lbFNlbGVjdG9yLAot
ICAgIENoYW5uZWxTZWxlY3RvclR5cGUgeUNoYW5uZWxTZWxlY3RvciwgZmxvYXQgc2NhbGUpCitG
RURpc3BsYWNlbWVudE1hcDo6RkVEaXNwbGFjZW1lbnRNYXAoQ2hhbm5lbFNlbGVjdG9yVHlwZSB4
Q2hhbm5lbFNlbGVjdG9yLCBDaGFubmVsU2VsZWN0b3JUeXBlIHlDaGFubmVsU2VsZWN0b3IsIGZs
b2F0IHNjYWxlKQorICAgIDogRmlsdGVyRWZmZWN0KEZpbHRlckVmZmVjdDo6VHlwZTo6RkVEaXNw
bGFjZW1lbnRNYXApCisgICAgLCBtX3hDaGFubmVsU2VsZWN0b3IoeENoYW5uZWxTZWxlY3RvcikK
KyAgICAsIG1feUNoYW5uZWxTZWxlY3Rvcih5Q2hhbm5lbFNlbGVjdG9yKQorICAgICwgbV9zY2Fs
ZShzY2FsZSkKIHsKLSAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBGRURpc3BsYWNlbWVudE1hcChm
aWx0ZXIsIHhDaGFubmVsU2VsZWN0b3IsIHlDaGFubmVsU2VsZWN0b3IsIHNjYWxlKSk7CiB9CiAK
IGJvb2wgRkVEaXNwbGFjZW1lbnRNYXA6OnNldFhDaGFubmVsU2VsZWN0b3IoY29uc3QgQ2hhbm5l
bFNlbGVjdG9yVHlwZSB4Q2hhbm5lbFNlbGVjdG9yKQpAQCAtOTEsNyArOTAsNyBAQCBzdGF0aWMg
aW5saW5lIHVuc2lnbmVkIGJ5dGVPZmZzZXRPZlBpeGVsKHVuc2lnbmVkIHgsIHVuc2lnbmVkIHks
IHVuc2lnbmVkIHJvd0J5dAogICAgIHJldHVybiB4ICogYnl0ZXNQZXJQaXhlbCArIHkgKiByb3dC
eXRlczsKIH0KIAotdm9pZCBGRURpc3BsYWNlbWVudE1hcDo6cGxhdGZvcm1BcHBseVNvZnR3YXJl
KCkKK3ZvaWQgRkVEaXNwbGFjZW1lbnRNYXA6OnBsYXRmb3JtQXBwbHlTb2Z0d2FyZShjb25zdCBG
aWx0ZXImIGZpbHRlcikKIHsKICAgICBGaWx0ZXJFZmZlY3QqIGluID0gaW5wdXRFZmZlY3QoMCk7
CiAgICAgRmlsdGVyRWZmZWN0KiBpbjIgPSBpbnB1dEVmZmVjdCgxKTsKQEAgLTExNyw3ICsxMTYs
NiBAQCB2b2lkIEZFRGlzcGxhY2VtZW50TWFwOjpwbGF0Zm9ybUFwcGx5U29mdHdhcmUoKQogCiAg
ICAgQVNTRVJUKGlucHV0SW1hZ2UtPmxlbmd0aCgpID09IGRpc3BsYWNlbWVudEltYWdlLT5sZW5n
dGgoKSk7CiAKLSAgICBGaWx0ZXImIGZpbHRlciA9IHRoaXMtPmZpbHRlcigpOwogICAgIEludFNp
emUgcGFpbnRTaXplID0gYWJzb2x1dGVQYWludFJlY3QoKS5zaXplKCk7CiAKICAgICBGbG9hdFNp
emUgc2NhbGUgPSBmaWx0ZXIuc2NhbGVkQnlGaWx0ZXJTY2FsZSh7IG1fc2NhbGUsIG1fc2NhbGUg
fSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJz
L0ZFRGlzcGxhY2VtZW50TWFwLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9m
aWx0ZXJzL0ZFRGlzcGxhY2VtZW50TWFwLmgKaW5kZXggYWE1YjZkNDZiYzQ2NGZjNmQwNjBkODZh
ZjZiYWUwZWYwN2VjOWU4ZC4uNDgxMmI1NGJhZGY0ZWMyMGU4OTU1Y2E0NzdkYmY2YWVjNzkxYmY2
ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9G
RURpc3BsYWNlbWVudE1hcC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2ZpbHRlcnMvRkVEaXNwbGFjZW1lbnRNYXAuaApAQCAtMjIsNyArMjIsNiBAQAogI3ByYWdtYSBv
bmNlCiAKICNpbmNsdWRlICJGaWx0ZXJFZmZlY3QuaCIKLSNpbmNsdWRlICJGaWx0ZXIuaCIKICNp
bmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAt
MzcsNyArMzYsNyBAQCBlbnVtIENoYW5uZWxTZWxlY3RvclR5cGUgewogCiBjbGFzcyBGRURpc3Bs
YWNlbWVudE1hcCA6IHB1YmxpYyBGaWx0ZXJFZmZlY3QgewogcHVibGljOgotICAgIHN0YXRpYyBS
ZWY8RkVEaXNwbGFjZW1lbnRNYXA+IGNyZWF0ZShGaWx0ZXImLCBDaGFubmVsU2VsZWN0b3JUeXBl
IHhDaGFubmVsU2VsZWN0b3IsIENoYW5uZWxTZWxlY3RvclR5cGUgeUNoYW5uZWxTZWxlY3Rvciwg
ZmxvYXQgc2NhbGUpOworICAgIHN0YXRpYyBSZWY8RkVEaXNwbGFjZW1lbnRNYXA+IGNyZWF0ZShD
aGFubmVsU2VsZWN0b3JUeXBlIHhDaGFubmVsU2VsZWN0b3IsIENoYW5uZWxTZWxlY3RvclR5cGUg
eUNoYW5uZWxTZWxlY3RvciwgZmxvYXQgc2NhbGUpOwogCiAgICAgQ2hhbm5lbFNlbGVjdG9yVHlw
ZSB4Q2hhbm5lbFNlbGVjdG9yKCkgY29uc3QgeyByZXR1cm4gbV94Q2hhbm5lbFNlbGVjdG9yOyB9
CiAgICAgYm9vbCBzZXRYQ2hhbm5lbFNlbGVjdG9yKGNvbnN0IENoYW5uZWxTZWxlY3RvclR5cGUp
OwpAQCAtNTIsMTEgKzUxLDExIEBAIHB1YmxpYzoKICAgICB2b2lkIHRyYW5zZm9ybVJlc3VsdENv
bG9yU3BhY2UoRmlsdGVyRWZmZWN0KiwgY29uc3QgaW50KSBvdmVycmlkZTsKIAogcHJpdmF0ZToK
LSAgICBGRURpc3BsYWNlbWVudE1hcChGaWx0ZXImLCBDaGFubmVsU2VsZWN0b3JUeXBlIHhDaGFu
bmVsU2VsZWN0b3IsIENoYW5uZWxTZWxlY3RvclR5cGUgeUNoYW5uZWxTZWxlY3RvciwgZmxvYXQp
OworICAgIEZFRGlzcGxhY2VtZW50TWFwKENoYW5uZWxTZWxlY3RvclR5cGUgeENoYW5uZWxTZWxl
Y3RvciwgQ2hhbm5lbFNlbGVjdG9yVHlwZSB5Q2hhbm5lbFNlbGVjdG9yLCBmbG9hdCk7CiAKLSAg
ICB2b2lkIHBsYXRmb3JtQXBwbHlTb2Z0d2FyZSgpIG92ZXJyaWRlOworICAgIHZvaWQgcGxhdGZv
cm1BcHBseVNvZnR3YXJlKGNvbnN0IEZpbHRlciYpIG92ZXJyaWRlOwogCi0gICAgdm9pZCBkZXRl
cm1pbmVBYnNvbHV0ZVBhaW50UmVjdCgpIG92ZXJyaWRlIHsgc2V0QWJzb2x1dGVQYWludFJlY3Qo
ZW5jbG9zaW5nSW50UmVjdChtYXhFZmZlY3RSZWN0KCkpKTsgfQorICAgIHZvaWQgZGV0ZXJtaW5l
QWJzb2x1dGVQYWludFJlY3QoY29uc3QgRmlsdGVyJikgb3ZlcnJpZGUgeyBzZXRBYnNvbHV0ZVBh
aW50UmVjdChlbmNsb3NpbmdJbnRSZWN0KG1heEVmZmVjdFJlY3QoKSkpOyB9CiAKICAgICBpbnQg
eENoYW5uZWxJbmRleCgpIGNvbnN0IHsgcmV0dXJuIG1feENoYW5uZWxTZWxlY3RvciAtIDE7IH0K
ICAgICBpbnQgeUNoYW5uZWxJbmRleCgpIGNvbnN0IHsgcmV0dXJuIG1feUNoYW5uZWxTZWxlY3Rv
ciAtIDE7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Zp
bHRlcnMvRkVEcm9wU2hhZG93LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2ZpbHRlcnMvRkVEcm9wU2hhZG93LmNwcAppbmRleCA1MWFkMmY4NWYyYzI3YTZlZTUwNzRmMmMx
NjFlYjkxNDY4YzllYzI2Li40ZTBiZDRkOWRmZDdmNWVkNDA5ZGM2OTBjNDgxMjIyYjZhMjBmZmZk
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZF
RHJvcFNoYWRvdy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmls
dGVycy9GRURyb3BTaGFkb3cuY3BwCkBAIC0yNCwxNSArMjQsMjEgQEAKICNpbmNsdWRlICJGRUdh
dXNzaWFuQmx1ci5oIgogI2luY2x1ZGUgIkZpbHRlci5oIgogI2luY2x1ZGUgIkdyYXBoaWNzQ29u
dGV4dC5oIgorI2luY2x1ZGUgIkltYWdlQnVmZmVyLmgiCiAjaW5jbHVkZSAiUGl4ZWxCdWZmZXIu
aCIKICNpbmNsdWRlICJTaGFkb3dCbHVyLmgiCiAjaW5jbHVkZSA8d3RmL01hdGhFeHRyYXMuaD4K
ICNpbmNsdWRlIDx3dGYvdGV4dC9UZXh0U3RyZWFtLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsK
LSAgICAKLUZFRHJvcFNoYWRvdzo6RkVEcm9wU2hhZG93KEZpbHRlciYgZmlsdGVyLCBmbG9hdCBz
dGRYLCBmbG9hdCBzdGRZLCBmbG9hdCBkeCwgZmxvYXQgZHksIGNvbnN0IENvbG9yJiBzaGFkb3dD
b2xvciwgZmxvYXQgc2hhZG93T3BhY2l0eSkKLSAgICA6IEZpbHRlckVmZmVjdChmaWx0ZXIsIEZp
bHRlckVmZmVjdDo6VHlwZTo6RkVEcm9wU2hhZG93KQorCitSZWY8RkVEcm9wU2hhZG93PiBGRURy
b3BTaGFkb3c6OmNyZWF0ZShmbG9hdCBzdGRYLCBmbG9hdCBzdGRZLCBmbG9hdCBkeCwgZmxvYXQg
ZHksIGNvbnN0IENvbG9yJiBzaGFkb3dDb2xvciwgZmxvYXQgc2hhZG93T3BhY2l0eSkKK3sKKyAg
ICByZXR1cm4gYWRvcHRSZWYoKm5ldyBGRURyb3BTaGFkb3coc3RkWCwgc3RkWSwgZHgsIGR5LCBz
aGFkb3dDb2xvciwgc2hhZG93T3BhY2l0eSkpOworfQorCitGRURyb3BTaGFkb3c6OkZFRHJvcFNo
YWRvdyhmbG9hdCBzdGRYLCBmbG9hdCBzdGRZLCBmbG9hdCBkeCwgZmxvYXQgZHksIGNvbnN0IENv
bG9yJiBzaGFkb3dDb2xvciwgZmxvYXQgc2hhZG93T3BhY2l0eSkKKyAgICA6IEZpbHRlckVmZmVj
dChGaWx0ZXJFZmZlY3Q6OlR5cGU6OkZFRHJvcFNoYWRvdykKICAgICAsIG1fc3RkWChzdGRYKQog
ICAgICwgbV9zdGRZKHN0ZFkpCiAgICAgLCBtX2R4KGR4KQpAQCAtNDIsMTUgKzQ4LDggQEAgRkVE
cm9wU2hhZG93OjpGRURyb3BTaGFkb3coRmlsdGVyJiBmaWx0ZXIsIGZsb2F0IHN0ZFgsIGZsb2F0
IHN0ZFksIGZsb2F0IGR4LCBmbG8KIHsKIH0KIAotUmVmPEZFRHJvcFNoYWRvdz4gRkVEcm9wU2hh
ZG93OjpjcmVhdGUoRmlsdGVyJiBmaWx0ZXIsIGZsb2F0IHN0ZFgsIGZsb2F0IHN0ZFksIGZsb2F0
IGR4LCBmbG9hdCBkeSwgY29uc3QgQ29sb3ImIHNoYWRvd0NvbG9yLCBmbG9hdCBzaGFkb3dPcGFj
aXR5KQordm9pZCBGRURyb3BTaGFkb3c6OmRldGVybWluZUFic29sdXRlUGFpbnRSZWN0KGNvbnN0
IEZpbHRlciYgZmlsdGVyKQogewotICAgIHJldHVybiBhZG9wdFJlZigqbmV3IEZFRHJvcFNoYWRv
dyhmaWx0ZXIsIHN0ZFgsIHN0ZFksIGR4LCBkeSwgc2hhZG93Q29sb3IsIHNoYWRvd09wYWNpdHkp
KTsKLX0KLQotdm9pZCBGRURyb3BTaGFkb3c6OmRldGVybWluZUFic29sdXRlUGFpbnRSZWN0KCkK
LXsKLSAgICBGaWx0ZXImIGZpbHRlciA9IHRoaXMtPmZpbHRlcigpOwotCiAgICAgRmxvYXRSZWN0
IGFic29sdXRlUGFpbnRSZWN0ID0gaW5wdXRFZmZlY3QoMCktPmFic29sdXRlUGFpbnRSZWN0KCk7
CiAgICAgRmxvYXRSZWN0IGFic29sdXRlT2Zmc2V0UGFpbnRSZWN0KGFic29sdXRlUGFpbnRSZWN0
KTsKICAgICBhYnNvbHV0ZU9mZnNldFBhaW50UmVjdC5tb3ZlKGZpbHRlci5zY2FsZWRCeUZpbHRl
clNjYWxlKHsgbV9keCwgbV9keSB9KSk7CkBAIC03MCw3ICs2OSw3IEBAIHZvaWQgRkVEcm9wU2hh
ZG93OjpkZXRlcm1pbmVBYnNvbHV0ZVBhaW50UmVjdCgpCiAgICAgc2V0QWJzb2x1dGVQYWludFJl
Y3QoZW5jbG9zaW5nSW50UmVjdChhYnNvbHV0ZVBhaW50UmVjdCkpOwogfQogCi12b2lkIEZFRHJv
cFNoYWRvdzo6cGxhdGZvcm1BcHBseVNvZnR3YXJlKCkKK3ZvaWQgRkVEcm9wU2hhZG93OjpwbGF0
Zm9ybUFwcGx5U29mdHdhcmUoY29uc3QgRmlsdGVyJiBmaWx0ZXIpCiB7CiAgICAgRmlsdGVyRWZm
ZWN0KiBpbiA9IGlucHV0RWZmZWN0KDApOwogCkBAIC03OCw4ICs3Nyw2IEBAIHZvaWQgRkVEcm9w
U2hhZG93OjpwbGF0Zm9ybUFwcGx5U29mdHdhcmUoKQogICAgIGlmICghcmVzdWx0SW1hZ2UpCiAg
ICAgICAgIHJldHVybjsKIAotICAgIEZpbHRlciYgZmlsdGVyID0gdGhpcy0+ZmlsdGVyKCk7Ci0g
ICAgCiAgICAgRmxvYXRTaXplIGJsdXJSYWRpdXMgPSAyICogZmlsdGVyLnNjYWxlZEJ5RmlsdGVy
U2NhbGUoeyBtX3N0ZFgsIG1fc3RkWSB9KTsKICAgICBGbG9hdFNpemUgb2Zmc2V0ID0gZmlsdGVy
LnNjYWxlZEJ5RmlsdGVyU2NhbGUoeyBtX2R4LCBtX2R5IH0pOwogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFRHJvcFNoYWRvdy5oIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRURyb3BTaGFkb3cuaAppbmRl
eCAyYjZlNjYxM2I1YWUxNzg0YTcxMDJkNTQ2ZGRiYmNiZDYxMzg1OGZhLi42OTc3ZWE3N2M2Y2Mx
ZWQzNDg2MTk0YzBjZDg4ZTdiMmQzZDk4MDhhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFRHJvcFNoYWRvdy5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVEcm9wU2hhZG93LmgKQEAgLTIwLDE0ICsy
MCwxMyBAQAogI3ByYWdtYSBvbmNlCiAKICNpbmNsdWRlICJDb2xvci5oIgotI2luY2x1ZGUgIkZp
bHRlci5oIgogI2luY2x1ZGUgIkZpbHRlckVmZmVjdC5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAgICAgCiBjbGFzcyBGRURyb3BTaGFkb3cgOiBwdWJsaWMgRmlsdGVyRWZmZWN0IHsKIHB1Ymxp
YzoKLSAgICBzdGF0aWMgUmVmPEZFRHJvcFNoYWRvdz4gY3JlYXRlKEZpbHRlciYsIGZsb2F0LCBm
bG9hdCwgZmxvYXQsIGZsb2F0LCBjb25zdCBDb2xvciYsIGZsb2F0KTsKKyAgICBzdGF0aWMgUmVm
PEZFRHJvcFNoYWRvdz4gY3JlYXRlKGZsb2F0IHN0ZFgsIGZsb2F0IHN0ZFksIGZsb2F0IGR4LCBm
bG9hdCBkeSwgY29uc3QgQ29sb3ImIHNoYWRvd0NvbG9yLCBmbG9hdCBzaGFkb3dPcGFjaXR5KTsK
IAogICAgIGZsb2F0IHN0ZERldmlhdGlvblgoKSBjb25zdCB7IHJldHVybiBtX3N0ZFg7IH0KICAg
ICB2b2lkIHNldFN0ZERldmlhdGlvblgoZmxvYXQgc3RkWCkgeyBtX3N0ZFggPSBzdGRYOyB9CkBA
IC00OCwxNCArNDcsMTQgQEAgcHVibGljOgogICAgIHZvaWQgc2V0U2hhZG93T3BhY2l0eShmbG9h
dCBzaGFkb3dPcGFjaXR5KSB7IG1fc2hhZG93T3BhY2l0eSA9IHNoYWRvd09wYWNpdHk7IH0KIAog
cHJpdmF0ZToKLSAgICBGRURyb3BTaGFkb3coRmlsdGVyJiwgZmxvYXQsIGZsb2F0LCBmbG9hdCwg
ZmxvYXQsIGNvbnN0IENvbG9yJiwgZmxvYXQpOworICAgIEZFRHJvcFNoYWRvdyhmbG9hdCBzdGRY
LCBmbG9hdCBzdGRZLCBmbG9hdCBkeCwgZmxvYXQgZHksIGNvbnN0IENvbG9yJiBzaGFkb3dDb2xv
ciwgZmxvYXQgc2hhZG93T3BhY2l0eSk7CiAKLSAgICB2b2lkIHBsYXRmb3JtQXBwbHlTb2Z0d2Fy
ZSgpIG92ZXJyaWRlOwotCi0gICAgdm9pZCBkZXRlcm1pbmVBYnNvbHV0ZVBhaW50UmVjdCgpIG92
ZXJyaWRlOworICAgIHZvaWQgZGV0ZXJtaW5lQWJzb2x1dGVQYWludFJlY3QoY29uc3QgRmlsdGVy
Jikgb3ZlcnJpZGU7CiAKICAgICBJbnRPdXRzZXRzIG91dHNldHMoKSBjb25zdCBvdmVycmlkZTsK
IAorICAgIHZvaWQgcGxhdGZvcm1BcHBseVNvZnR3YXJlKGNvbnN0IEZpbHRlciYpIG92ZXJyaWRl
OworCiAgICAgV1RGOjpUZXh0U3RyZWFtJiBleHRlcm5hbFJlcHJlc2VudGF0aW9uKFdURjo6VGV4
dFN0cmVhbSYsIFJlcHJlc2VudGF0aW9uVHlwZSkgY29uc3Qgb3ZlcnJpZGU7CiAKICAgICBmbG9h
dCBtX3N0ZFg7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9m
aWx0ZXJzL0ZFRmxvb2QuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmls
dGVycy9GRUZsb29kLmNwcAppbmRleCBhNzg0MjE5Njc0ZTFhZTk3OTkzNDQzOGRhNTRhMWE3MWM5
ODA0ODQyLi5lMGE3NzQyMWE3ZGYwYzk0N2VlMzY5ODQ5N2Y2MDUzNzcwNTM1Y2I1IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFRmxvb2QuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVGbG9vZC5j
cHAKQEAgLTI0LDIyICsyNCwyMiBAQAogI2luY2x1ZGUgIkZFRmxvb2QuaCIKIAogI2luY2x1ZGUg
IkNvbG9yU2VyaWFsaXphdGlvbi5oIgotI2luY2x1ZGUgIkZpbHRlci5oIgogI2luY2x1ZGUgIkdy
YXBoaWNzQ29udGV4dC5oIgorI2luY2x1ZGUgIkltYWdlQnVmZmVyLmgiCiAjaW5jbHVkZSA8d3Rm
L3RleHQvVGV4dFN0cmVhbS5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLUZFRmxvb2Q6OkZF
Rmxvb2QoRmlsdGVyJiBmaWx0ZXIsIGNvbnN0IENvbG9yJiBmbG9vZENvbG9yLCBmbG9hdCBmbG9v
ZE9wYWNpdHkpCi0gICAgOiBGaWx0ZXJFZmZlY3QoZmlsdGVyLCBGaWx0ZXJFZmZlY3Q6OlR5cGU6
OkZFRmxvb2QpCi0gICAgLCBtX2Zsb29kQ29sb3IoZmxvb2RDb2xvcikKLSAgICAsIG1fZmxvb2RP
cGFjaXR5KGZsb29kT3BhY2l0eSkKK1JlZjxGRUZsb29kPiBGRUZsb29kOjpjcmVhdGUoY29uc3Qg
Q29sb3ImIGZsb29kQ29sb3IsIGZsb2F0IGZsb29kT3BhY2l0eSkKIHsKKyAgICByZXR1cm4gYWRv
cHRSZWYoKm5ldyBGRUZsb29kKGZsb29kQ29sb3IsIGZsb29kT3BhY2l0eSkpOwogfQogCi1SZWY8
RkVGbG9vZD4gRkVGbG9vZDo6Y3JlYXRlKEZpbHRlciYgZmlsdGVyLCBjb25zdCBDb2xvciYgZmxv
b2RDb2xvciwgZmxvYXQgZmxvb2RPcGFjaXR5KQorRkVGbG9vZDo6RkVGbG9vZChjb25zdCBDb2xv
ciYgZmxvb2RDb2xvciwgZmxvYXQgZmxvb2RPcGFjaXR5KQorICAgIDogRmlsdGVyRWZmZWN0KEZp
bHRlckVmZmVjdDo6VHlwZTo6RkVGbG9vZCkKKyAgICAsIG1fZmxvb2RDb2xvcihmbG9vZENvbG9y
KQorICAgICwgbV9mbG9vZE9wYWNpdHkoZmxvb2RPcGFjaXR5KQogewotICAgIHJldHVybiBhZG9w
dFJlZigqbmV3IEZFRmxvb2QoZmlsdGVyLCBmbG9vZENvbG9yLCBmbG9vZE9wYWNpdHkpKTsKIH0K
IAogYm9vbCBGRUZsb29kOjpzZXRGbG9vZENvbG9yKGNvbnN0IENvbG9yJiBjb2xvcikKQEAgLTU4
LDcgKzU4LDcgQEAgYm9vbCBGRUZsb29kOjpzZXRGbG9vZE9wYWNpdHkoZmxvYXQgZmxvb2RPcGFj
aXR5KQogICAgIHJldHVybiB0cnVlOwogfQogCi12b2lkIEZFRmxvb2Q6OnBsYXRmb3JtQXBwbHlT
b2Z0d2FyZSgpCit2b2lkIEZFRmxvb2Q6OnBsYXRmb3JtQXBwbHlTb2Z0d2FyZShjb25zdCBGaWx0
ZXImKQogewogICAgIEltYWdlQnVmZmVyKiByZXN1bHRJbWFnZSA9IGNyZWF0ZUltYWdlQnVmZmVy
UmVzdWx0KCk7CiAgICAgaWYgKCFyZXN1bHRJbWFnZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVGbG9vZC5oIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRUZsb29kLmgKaW5kZXggMDhhNGU5NTkzNTg1ZDJm
YTA3MjY4NGQ0NWQ1Zjg5MzBmM2FlZWYwYS4uODllYjcyMDI5MTBjYWJmODc0Y2RjMTgzOWQ4MjY3
ZDgwNjk3MDRjYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
ZmlsdGVycy9GRUZsb29kLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
ZmlsdGVycy9GRUZsb29kLmgKQEAgLTIyLDE0ICsyMiwxMyBAQAogI3ByYWdtYSBvbmNlCiAKICNp
bmNsdWRlICJDb2xvci5oIgotI2luY2x1ZGUgIkZpbHRlci5oIgogI2luY2x1ZGUgIkZpbHRlckVm
ZmVjdC5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIEZFRmxvb2QgOiBwdWJsaWMg
RmlsdGVyRWZmZWN0IHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUmVmPEZFRmxvb2Q+IGNyZWF0ZShG
aWx0ZXImLCBjb25zdCBDb2xvciYsIGZsb2F0KTsKKyAgICBzdGF0aWMgUmVmPEZFRmxvb2Q+IGNy
ZWF0ZShjb25zdCBDb2xvciYgZmxvb2RDb2xvciwgZmxvYXQgZmxvb2RPcGFjaXR5KTsKIAogICAg
IGNvbnN0IENvbG9yJiBmbG9vZENvbG9yKCkgY29uc3QgeyByZXR1cm4gbV9mbG9vZENvbG9yOyB9
CiAgICAgYm9vbCBzZXRGbG9vZENvbG9yKGNvbnN0IENvbG9yJik7CkBAIC00NSwxMSArNDQsMTEg
QEAgcHVibGljOgogI2VuZGlmCiAKIHByaXZhdGU6Ci0gICAgRkVGbG9vZChGaWx0ZXImLCBjb25z
dCBDb2xvciYsIGZsb2F0KTsKKyAgICBGRUZsb29kKGNvbnN0IENvbG9yJiBmbG9vZENvbG9yLCBm
bG9hdCBmbG9vZE9wYWNpdHkpOwogCi0gICAgdm9pZCBwbGF0Zm9ybUFwcGx5U29mdHdhcmUoKSBv
dmVycmlkZTsKKyAgICB2b2lkIGRldGVybWluZUFic29sdXRlUGFpbnRSZWN0KGNvbnN0IEZpbHRl
ciYpIG92ZXJyaWRlIHsgc2V0QWJzb2x1dGVQYWludFJlY3QoZW5jbG9zaW5nSW50UmVjdChtYXhF
ZmZlY3RSZWN0KCkpKTsgfQogCi0gICAgdm9pZCBkZXRlcm1pbmVBYnNvbHV0ZVBhaW50UmVjdCgp
IG92ZXJyaWRlIHsgc2V0QWJzb2x1dGVQYWludFJlY3QoZW5jbG9zaW5nSW50UmVjdChtYXhFZmZl
Y3RSZWN0KCkpKTsgfQorICAgIHZvaWQgcGxhdGZvcm1BcHBseVNvZnR3YXJlKGNvbnN0IEZpbHRl
ciYpIG92ZXJyaWRlOwogCiAgICAgV1RGOjpUZXh0U3RyZWFtJiBleHRlcm5hbFJlcHJlc2VudGF0
aW9uKFdURjo6VGV4dFN0cmVhbSYsIFJlcHJlc2VudGF0aW9uVHlwZSkgY29uc3Qgb3ZlcnJpZGU7
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMv
RkVHYXVzc2lhbkJsdXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmls
dGVycy9GRUdhdXNzaWFuQmx1ci5jcHAKaW5kZXggOGU0NmM1MDI2ZmU2NWM3NTU5NjM3NzVkMGJl
Njk5NzAyZDQ4ZjI1NS4uZGJlNTcxNWU0MTY3MzYzNWZiMzZiNGFlMmU0MTAwOWM3ZTQ0NGM1MSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRUdh
dXNzaWFuQmx1ci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmls
dGVycy9GRUdhdXNzaWFuQmx1ci5jcHAKQEAgLTc5LDE3ICs3OSwxNyBAQCBpbmxpbmUgdm9pZCBr
ZXJuZWxQb3NpdGlvbihpbnQgYmx1ckl0ZXJhdGlvbiwgdW5zaWduZWQmIHJhZGl1cywgaW50JiBk
ZWx0YUxlZnQsCiAgICAgfQogfQogCi1GRUdhdXNzaWFuQmx1cjo6RkVHYXVzc2lhbkJsdXIoRmls
dGVyJiBmaWx0ZXIsIGZsb2F0IHgsIGZsb2F0IHksIEVkZ2VNb2RlVHlwZSBlZGdlTW9kZSkKLSAg
ICA6IEZpbHRlckVmZmVjdChmaWx0ZXIsIEZpbHRlckVmZmVjdDo6VHlwZTo6RkVHYXVzc2lhbkJs
dXIpCi0gICAgLCBtX3N0ZFgoeCkKLSAgICAsIG1fc3RkWSh5KQotICAgICwgbV9lZGdlTW9kZShl
ZGdlTW9kZSkKK1JlZjxGRUdhdXNzaWFuQmx1cj4gRkVHYXVzc2lhbkJsdXI6OmNyZWF0ZShmbG9h
dCB4LCBmbG9hdCB5LCBFZGdlTW9kZVR5cGUgZWRnZU1vZGUpCiB7CisgICAgcmV0dXJuIGFkb3B0
UmVmKCpuZXcgRkVHYXVzc2lhbkJsdXIoeCwgeSwgZWRnZU1vZGUpKTsKIH0KIAotUmVmPEZFR2F1
c3NpYW5CbHVyPiBGRUdhdXNzaWFuQmx1cjo6Y3JlYXRlKEZpbHRlciYgZmlsdGVyLCBmbG9hdCB4
LCBmbG9hdCB5LCBFZGdlTW9kZVR5cGUgZWRnZU1vZGUpCitGRUdhdXNzaWFuQmx1cjo6RkVHYXVz
c2lhbkJsdXIoZmxvYXQgeCwgZmxvYXQgeSwgRWRnZU1vZGVUeXBlIGVkZ2VNb2RlKQorICAgIDog
RmlsdGVyRWZmZWN0KEZpbHRlckVmZmVjdDo6VHlwZTo6RkVHYXVzc2lhbkJsdXIpCisgICAgLCBt
X3N0ZFgoeCkKKyAgICAsIG1fc3RkWSh5KQorICAgICwgbV9lZGdlTW9kZShlZGdlTW9kZSkKIHsK
LSAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBGRUdhdXNzaWFuQmx1cihmaWx0ZXIsIHgsIHksIGVk
Z2VNb2RlKSk7CiB9CiAKIHZvaWQgRkVHYXVzc2lhbkJsdXI6OnNldFN0ZERldmlhdGlvblgoZmxv
YXQgeCkKQEAgLTQ5Niw5ICs0OTYsOSBAQCBJbnRTaXplIEZFR2F1c3NpYW5CbHVyOjpjYWxjdWxh
dGVPdXRzZXRTaXplKEZsb2F0U2l6ZSBzdGREZXZpYXRpb24pCiAgICAgcmV0dXJuIHsgMyAqIGtl
cm5lbFNpemUud2lkdGgoKSAvIDIsIDMgKiBrZXJuZWxTaXplLmhlaWdodCgpIC8gMiB9OwogfQog
Ci12b2lkIEZFR2F1c3NpYW5CbHVyOjpkZXRlcm1pbmVBYnNvbHV0ZVBhaW50UmVjdCgpCit2b2lk
IEZFR2F1c3NpYW5CbHVyOjpkZXRlcm1pbmVBYnNvbHV0ZVBhaW50UmVjdChjb25zdCBGaWx0ZXIm
IGZpbHRlcikKIHsKLSAgICBJbnRTaXplIGtlcm5lbFNpemUgPSBjYWxjdWxhdGVLZXJuZWxTaXpl
KGZpbHRlcigpLCB7IG1fc3RkWCwgbV9zdGRZIH0pOworICAgIEludFNpemUga2VybmVsU2l6ZSA9
IGNhbGN1bGF0ZUtlcm5lbFNpemUoZmlsdGVyLCB7IG1fc3RkWCwgbV9zdGRZIH0pOwogCiAgICAg
RmxvYXRSZWN0IGFic29sdXRlUGFpbnRSZWN0ID0gaW5wdXRFZmZlY3QoMCktPmFic29sdXRlUGFp
bnRSZWN0KCk7CiAgICAgLy8gRWRnZSBtb2RlcyBvdGhlciB0aGFuICdub25lJyBkbyBub3QgaW5m
bGF0ZSB0aGUgYWZmZWN0ZWQgcGFpbnQgcmVjdC4KQEAgLTUxOSw3ICs1MTksNyBAQCB2b2lkIEZF
R2F1c3NpYW5CbHVyOjpkZXRlcm1pbmVBYnNvbHV0ZVBhaW50UmVjdCgpCiAgICAgc2V0QWJzb2x1
dGVQYWludFJlY3QoZW5jbG9zaW5nSW50UmVjdChhYnNvbHV0ZVBhaW50UmVjdCkpOwogfQogCi12
b2lkIEZFR2F1c3NpYW5CbHVyOjpwbGF0Zm9ybUFwcGx5U29mdHdhcmUoKQordm9pZCBGRUdhdXNz
aWFuQmx1cjo6cGxhdGZvcm1BcHBseVNvZnR3YXJlKGNvbnN0IEZpbHRlciYgZmlsdGVyKQogewog
ICAgIEZpbHRlckVmZmVjdCogaW4gPSBpbnB1dEVmZmVjdCgwKTsKIApAQCAtNTM2LDcgKzUzNiw3
IEBAIHZvaWQgRkVHYXVzc2lhbkJsdXI6OnBsYXRmb3JtQXBwbHlTb2Z0d2FyZSgpCiAgICAgaWYg
KCFtX3N0ZFggJiYgIW1fc3RkWSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgSW50U2l6ZSBrZXJu
ZWxTaXplID0gY2FsY3VsYXRlS2VybmVsU2l6ZShmaWx0ZXIoKSwgeyBtX3N0ZFgsIG1fc3RkWSB9
KTsKKyAgICBJbnRTaXplIGtlcm5lbFNpemUgPSBjYWxjdWxhdGVLZXJuZWxTaXplKGZpbHRlciwg
eyBtX3N0ZFgsIG1fc3RkWSB9KTsKIAogICAgIEludFNpemUgcGFpbnRTaXplID0gYWJzb2x1dGVQ
YWludFJlY3QoKS5zaXplKCk7CiAgICAgYXV0byB0bXBJbWFnZURhdGEgPSBVaW50OENsYW1wZWRB
cnJheTo6dHJ5Q3JlYXRlVW5pbml0aWFsaXplZChwYWludFNpemUuYXJlYSgpICogNCk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFR2F1c3Np
YW5CbHVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFR2F1
c3NpYW5CbHVyLmgKaW5kZXggNzQzYjY1MTVkZTNmNDYyNTA4MzFkZGMzMjY2MjUyZGFiOGZiMWYw
NC4uYzcwNjZkMzM4MzZhZGVhMTA4YTVlZjllNWU4ZTU3MDg4MWM3ZjE0NyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRUdhdXNzaWFuQmx1ci5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVHYXVzc2lh
bkJsdXIuaApAQCAtMjIsMTQgKzIyLDEzIEBACiAjcHJhZ21hIG9uY2UKIAogI2luY2x1ZGUgIkZF
Q29udm9sdmVNYXRyaXguaCIKLSNpbmNsdWRlICJGaWx0ZXIuaCIKICNpbmNsdWRlICJGaWx0ZXJF
ZmZlY3QuaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBGRUdhdXNzaWFuQmx1ciA6
IHB1YmxpYyBGaWx0ZXJFZmZlY3QgewogcHVibGljOgotICAgIHN0YXRpYyBSZWY8RkVHYXVzc2lh
bkJsdXI+IGNyZWF0ZShGaWx0ZXImLCBmbG9hdCwgZmxvYXQsIEVkZ2VNb2RlVHlwZSk7CisgICAg
c3RhdGljIFJlZjxGRUdhdXNzaWFuQmx1cj4gY3JlYXRlKGZsb2F0IHgsIGZsb2F0IHksIEVkZ2VN
b2RlVHlwZSk7CiAKICAgICBmbG9hdCBzdGREZXZpYXRpb25YKCkgY29uc3QgeyByZXR1cm4gbV9z
dGRYOyB9CiAgICAgdm9pZCBzZXRTdGREZXZpYXRpb25YKGZsb2F0KTsKQEAgLTQ1LDcgKzQ0LDcg
QEAgcHVibGljOgogICAgIHN0YXRpYyBJbnRTaXplIGNhbGN1bGF0ZU91dHNldFNpemUoRmxvYXRT
aXplIHN0ZERldmlhdGlvbik7CiAKIHByaXZhdGU6Ci0gICAgRkVHYXVzc2lhbkJsdXIoRmlsdGVy
JiwgZmxvYXQsIGZsb2F0LCBFZGdlTW9kZVR5cGUpOworICAgIEZFR2F1c3NpYW5CbHVyKGZsb2F0
IHgsIGZsb2F0IHksIEVkZ2VNb2RlVHlwZSk7CiAKICAgICBzdGF0aWMgY29uc3QgaW50IHNfbWlu
aW1hbFJlY3REaW1lbnNpb24gPSAxMDAgKiAxMDA7IC8vIEVtcGlyaWNhbCBkYXRhIGxpbWl0IGZv
ciBwYXJhbGxlbCBqb2JzCiAKQEAgLTU5LDkgKzU4LDkgQEAgcHJpdmF0ZToKICAgICAgICAgdW5z
aWduZWQga2VybmVsU2l6ZVk7CiAgICAgfTsKIAotICAgIHZvaWQgcGxhdGZvcm1BcHBseVNvZnR3
YXJlKCkgb3ZlcnJpZGU7CisgICAgdm9pZCBkZXRlcm1pbmVBYnNvbHV0ZVBhaW50UmVjdChjb25z
dCBGaWx0ZXImKSBvdmVycmlkZTsKIAotICAgIHZvaWQgZGV0ZXJtaW5lQWJzb2x1dGVQYWludFJl
Y3QoKSBvdmVycmlkZTsKKyAgICB2b2lkIHBsYXRmb3JtQXBwbHlTb2Z0d2FyZShjb25zdCBGaWx0
ZXImKSBvdmVycmlkZTsKIAogICAgIEludE91dHNldHMgb3V0c2V0cygpIGNvbnN0IG92ZXJyaWRl
OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJz
L0ZFTGlnaHRpbmcuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVy
cy9GRUxpZ2h0aW5nLmNwcAppbmRleCA2NTliMTA1NWY2MWVhYWJjNWYyOTk5MWRhMGRhMWE1ODUw
NzFhZTkyLi45MTE4YTliZjI1MmVjODIwNjQ3MDNkNWRhZjFmNmZhODQwNTJhMGM0IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFTGlnaHRpbmcu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVMaWdo
dGluZy5jcHAKQEAgLTM1LDggKzM1LDggQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1GRUxp
Z2h0aW5nOjpGRUxpZ2h0aW5nKEZpbHRlciYgZmlsdGVyLCBMaWdodGluZ1R5cGUgbGlnaHRpbmdU
eXBlLCBjb25zdCBDb2xvciYgbGlnaHRpbmdDb2xvciwgZmxvYXQgc3VyZmFjZVNjYWxlLCBmbG9h
dCBkaWZmdXNlQ29uc3RhbnQsIGZsb2F0IHNwZWN1bGFyQ29uc3RhbnQsIGZsb2F0IHNwZWN1bGFy
RXhwb25lbnQsIGZsb2F0IGtlcm5lbFVuaXRMZW5ndGhYLCBmbG9hdCBrZXJuZWxVbml0TGVuZ3Ro
WSwgUmVmPExpZ2h0U291cmNlPiYmIGxpZ2h0U291cmNlLCBUeXBlIHR5cGUpCi0gICAgOiBGaWx0
ZXJFZmZlY3QoZmlsdGVyLCB0eXBlKQorRkVMaWdodGluZzo6RkVMaWdodGluZyhMaWdodGluZ1R5
cGUgbGlnaHRpbmdUeXBlLCBjb25zdCBDb2xvciYgbGlnaHRpbmdDb2xvciwgZmxvYXQgc3VyZmFj
ZVNjYWxlLCBmbG9hdCBkaWZmdXNlQ29uc3RhbnQsIGZsb2F0IHNwZWN1bGFyQ29uc3RhbnQsIGZs
b2F0IHNwZWN1bGFyRXhwb25lbnQsIGZsb2F0IGtlcm5lbFVuaXRMZW5ndGhYLCBmbG9hdCBrZXJu
ZWxVbml0TGVuZ3RoWSwgUmVmPExpZ2h0U291cmNlPiYmIGxpZ2h0U291cmNlLCBUeXBlIHR5cGUp
CisgICAgOiBGaWx0ZXJFZmZlY3QodHlwZSkKICAgICAsIG1fbGlnaHRpbmdUeXBlKGxpZ2h0aW5n
VHlwZSkKICAgICAsIG1fbGlnaHRTb3VyY2UoV1RGTW92ZShsaWdodFNvdXJjZSkpCiAgICAgLCBt
X2xpZ2h0aW5nQ29sb3IobGlnaHRpbmdDb2xvcikKQEAgLTQ3MSw3ICs0NzEsNyBAQCBib29sIEZF
TGlnaHRpbmc6OmRyYXdMaWdodGluZyhVaW50OENsYW1wZWRBcnJheSYgcGl4ZWxzLCBpbnQgd2lk
dGgsIGludCBoZWlnaHQpCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLXZvaWQgRkVMaWdodGluZzo6
cGxhdGZvcm1BcHBseVNvZnR3YXJlKCkKK3ZvaWQgRkVMaWdodGluZzo6cGxhdGZvcm1BcHBseVNv
ZnR3YXJlKGNvbnN0IEZpbHRlciYpCiB7CiAgICAgRmlsdGVyRWZmZWN0KiBpbiA9IGlucHV0RWZm
ZWN0KDApOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9m
aWx0ZXJzL0ZFTGlnaHRpbmcuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Zp
bHRlcnMvRkVMaWdodGluZy5oCmluZGV4IDAxZjQ0MmI0MDAzM2ZmYTNmNzA3NTcwYTRhMzM0MDMz
YmU2YzJiODIuLjM2NDI4ZGJhMzIzMDk5YjM0ZmU1NGRmNzUwMzA3MjI3MGVkZTk4M2YgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVMaWdodGlu
Zy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVMaWdo
dGluZy5oCkBAIC0yNyw3ICsyNyw2IEBACiAjcHJhZ21hIG9uY2UKIAogI2luY2x1ZGUgIkNvbG9y
LmgiCi0jaW5jbHVkZSAiRmlsdGVyLmgiCiAjaW5jbHVkZSAiRmlsdGVyRWZmZWN0LmgiCiAjaW5j
bHVkZSAiTGlnaHRTb3VyY2UuaCIKICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9Gb3J3YXJkLmg+
CkBAIC00MCw4ICszOSw2IEBAIHN0cnVjdCBGRUxpZ2h0aW5nUGFpbnRpbmdEYXRhRm9yTmVvbjsK
IAogY2xhc3MgRkVMaWdodGluZyA6IHB1YmxpYyBGaWx0ZXJFZmZlY3QgewogcHVibGljOgotICAg
IHZvaWQgZGV0ZXJtaW5lQWJzb2x1dGVQYWludFJlY3QoKSBvdmVycmlkZSB7IHNldEFic29sdXRl
UGFpbnRSZWN0KGVuY2xvc2luZ0ludFJlY3QobWF4RWZmZWN0UmVjdCgpKSk7IH0KLQogICAgIGZs
b2F0IHN1cmZhY2VTY2FsZSgpIGNvbnN0IHsgcmV0dXJuIG1fc3VyZmFjZVNjYWxlOyB9CiAgICAg
Ym9vbCBzZXRTdXJmYWNlU2NhbGUoZmxvYXQpOwogCkBAIC0xMjgsMTQgKzEyNSwxNiBAQCBwcm90
ZWN0ZWQ6CiAgICAgc3RhdGljIHZvaWQgcGxhdGZvcm1BcHBseUdlbmVyaWNXb3JrZXIoUGxhdGZv
cm1BcHBseUdlbmVyaWNQYXJhbWV0ZXJzKik7CiAgICAgc3RhdGljIHZvaWQgcGxhdGZvcm1BcHBs
eU5lb25Xb3JrZXIoRkVMaWdodGluZ1BhaW50aW5nRGF0YUZvck5lb24qKTsKIAotICAgIEZFTGln
aHRpbmcoRmlsdGVyJiwgTGlnaHRpbmdUeXBlLCBjb25zdCBDb2xvciYsIGZsb2F0LCBmbG9hdCwg
ZmxvYXQsIGZsb2F0LCBmbG9hdCwgZmxvYXQsIFJlZjxMaWdodFNvdXJjZT4mJiwgVHlwZSk7Cisg
ICAgRkVMaWdodGluZyhMaWdodGluZ1R5cGUsIGNvbnN0IENvbG9yJiBsaWdodGluZ0NvbG9yLCBm
bG9hdCBzdXJmYWNlU2NhbGUsIGZsb2F0IGRpZmZ1c2VDb25zdGFudCwgZmxvYXQgc3BlY3VsYXJD
b25zdGFudCwgZmxvYXQgc3BlY3VsYXJFeHBvbmVudCwgZmxvYXQga2VybmVsVW5pdExlbmd0aFgs
IGZsb2F0IGtlcm5lbFVuaXRMZW5ndGhZLCBSZWY8TGlnaHRTb3VyY2U+JiYsIFR5cGUpOwogCiAg
ICAgYm9vbCBkcmF3TGlnaHRpbmcoVWludDhDbGFtcGVkQXJyYXkmLCBpbnQsIGludCk7CiAKICAg
ICB2b2lkIHNldFBpeGVsKGludCBvZmZzZXQsIGNvbnN0IExpZ2h0aW5nRGF0YSYsIGNvbnN0IExp
Z2h0U291cmNlOjpQYWludGluZ0RhdGEmLCBpbnQgeCwgaW50IHksIGZsb2F0IGZhY3RvclgsIGZs
b2F0IGZhY3RvclksIEludFNpemUgbm9ybWFsVmVjdG9yKTsKICAgICB2b2lkIHNldFBpeGVsSW50
ZXJuYWwoaW50IG9mZnNldCwgY29uc3QgTGlnaHRpbmdEYXRhJiwgY29uc3QgTGlnaHRTb3VyY2U6
OlBhaW50aW5nRGF0YSYsIGludCB4LCBpbnQgeSwgZmxvYXQgZmFjdG9yWCwgZmxvYXQgZmFjdG9y
WSwgSW50U2l6ZSBub3JtYWxWZWN0b3IsIGZsb2F0IGFscGhhKTsKIAotICAgIHZvaWQgcGxhdGZv
cm1BcHBseVNvZnR3YXJlKCkgb3ZlcnJpZGU7CisgICAgdm9pZCBkZXRlcm1pbmVBYnNvbHV0ZVBh
aW50UmVjdChjb25zdCBGaWx0ZXImKSBvdmVycmlkZSB7IHNldEFic29sdXRlUGFpbnRSZWN0KGVu
Y2xvc2luZ0ludFJlY3QobWF4RWZmZWN0UmVjdCgpKSk7IH0KKworICAgIHZvaWQgcGxhdGZvcm1B
cHBseVNvZnR3YXJlKGNvbnN0IEZpbHRlciYpIG92ZXJyaWRlOwogCiAgICAgdm9pZCBwbGF0Zm9y
bUFwcGx5KGNvbnN0IExpZ2h0aW5nRGF0YSYsIGNvbnN0IExpZ2h0U291cmNlOjpQYWludGluZ0Rh
dGEmKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmls
dGVycy9GRU1lcmdlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRl
cnMvRkVNZXJnZS5jcHAKaW5kZXggNjk3ZDJlMTVjY2JmMWFlZmVkMGU4OWZkYTM0ZTcwMzI5MzA3
ZjczYy4uMzc4MWRiMGM5MDU0YjFjMTczMjJiYTFjNjBhMjA0Njg5MTdmN2FhMiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRU1lcmdlLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFTWVyZ2UuY3Bw
CkBAIC0yMiwyMyArMjIsMjMgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJGRU1l
cmdlLmgiCiAKLSNpbmNsdWRlICJGaWx0ZXIuaCIKICNpbmNsdWRlICJHcmFwaGljc0NvbnRleHQu
aCIKKyNpbmNsdWRlICJJbWFnZUJ1ZmZlci5oIgogI2luY2x1ZGUgPHd0Zi90ZXh0L1RleHRTdHJl
YW0uaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1GRU1lcmdlOjpGRU1lcmdlKEZpbHRlciYg
ZmlsdGVyKQotICAgIDogRmlsdGVyRWZmZWN0KGZpbHRlciwgRmlsdGVyRWZmZWN0OjpUeXBlOjpG
RU1lcmdlKQorUmVmPEZFTWVyZ2U+IEZFTWVyZ2U6OmNyZWF0ZSgpCiB7CisgICAgcmV0dXJuIGFk
b3B0UmVmKCpuZXcgRkVNZXJnZSgpKTsKIH0KIAotUmVmPEZFTWVyZ2U+IEZFTWVyZ2U6OmNyZWF0
ZShGaWx0ZXImIGZpbHRlcikKK0ZFTWVyZ2U6OkZFTWVyZ2UoKQorICAgIDogRmlsdGVyRWZmZWN0
KEZpbHRlckVmZmVjdDo6VHlwZTo6RkVNZXJnZSkKIHsKLSAgICByZXR1cm4gYWRvcHRSZWYoKm5l
dyBGRU1lcmdlKGZpbHRlcikpOwogfQogCi12b2lkIEZFTWVyZ2U6OnBsYXRmb3JtQXBwbHlTb2Z0
d2FyZSgpCit2b2lkIEZFTWVyZ2U6OnBsYXRmb3JtQXBwbHlTb2Z0d2FyZShjb25zdCBGaWx0ZXIm
KQogewogICAgIHVuc2lnbmVkIHNpemUgPSBudW1iZXJPZkVmZmVjdElucHV0cygpOwogICAgIEFT
U0VSVChzaXplID4gMCk7CkBAIC00Nyw3ICs0Nyw2IEBAIHZvaWQgRkVNZXJnZTo6cGxhdGZvcm1B
cHBseVNvZnR3YXJlKCkKICAgICBpZiAoIXJlc3VsdEltYWdlKQogICAgICAgICByZXR1cm47CiAK
LQogICAgIEdyYXBoaWNzQ29udGV4dCYgZmlsdGVyQ29udGV4dCA9IHJlc3VsdEltYWdlLT5jb250
ZXh0KCk7CiAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IHNpemU7ICsraSkgewogICAgICAg
ICBGaWx0ZXJFZmZlY3QqIGluID0gaW5wdXRFZmZlY3QoaSk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFTWVyZ2UuaCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVNZXJnZS5oCmluZGV4IDI3NTBjNGQ1MjRk
M2EwZjVhZTk3NDFmNjQ4MDQ0OTQ1MzQ1ZDFhYjEuLjA1MTlhNTY4OGE4MzYzZmMxYmEwNjMyMDRk
YjIyZjc0MzFhZTM0ZjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2ZpbHRlcnMvRkVNZXJnZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2ZpbHRlcnMvRkVNZXJnZS5oCkBAIC0yMiwxOCArMjIsMTcgQEAKICNwcmFnbWEgb25jZQog
CiAjaW5jbHVkZSAiRmlsdGVyRWZmZWN0LmgiCi0jaW5jbHVkZSAiRmlsdGVyLmgiCiAKIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgRkVNZXJnZSA6IHB1YmxpYyBGaWx0ZXJFZmZlY3Qgewog
cHVibGljOgotICAgIHN0YXRpYyBSZWY8RkVNZXJnZT4gY3JlYXRlKEZpbHRlciYpOworICAgIHN0
YXRpYyBSZWY8RkVNZXJnZT4gY3JlYXRlKCk7CiAKIHByaXZhdGU6Ci0gICAgRkVNZXJnZShGaWx0
ZXImKTsKKyAgICBGRU1lcmdlKCk7CiAKLSAgICB2b2lkIHBsYXRmb3JtQXBwbHlTb2Z0d2FyZSgp
IG92ZXJyaWRlOworICAgIHZvaWQgcGxhdGZvcm1BcHBseVNvZnR3YXJlKGNvbnN0IEZpbHRlciYp
IG92ZXJyaWRlOwogCiAgICAgV1RGOjpUZXh0U3RyZWFtJiBleHRlcm5hbFJlcHJlc2VudGF0aW9u
KFdURjo6VGV4dFN0cmVhbSYsIFJlcHJlc2VudGF0aW9uVHlwZSkgY29uc3Qgb3ZlcnJpZGU7CiB9
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9G
RU1vcnBob2xvZ3kuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVy
cy9GRU1vcnBob2xvZ3kuY3BwCmluZGV4IDFiMGRhZWIwZGI1NmU4MTg5MjAxOGEzMDc1MDZmMzU3
NzFkNjhjMDAuLjQyZmJhNzRiNTNmYjgwYTM2Zjk4NGM4MTY4Mzk2ZDQ1MmU2ODRjNzQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVNb3JwaG9s
b2d5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZF
TW9ycGhvbG9neS5jcHAKQEAgLTM1LDE3ICszNSwxNyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAKLUZFTW9ycGhvbG9neTo6RkVNb3JwaG9sb2d5KEZpbHRlciYgZmlsdGVyLCBNb3JwaG9sb2d5
T3BlcmF0b3JUeXBlIHR5cGUsIGZsb2F0IHJhZGl1c1gsIGZsb2F0IHJhZGl1c1kpCi0gICAgOiBG
aWx0ZXJFZmZlY3QoZmlsdGVyLCBGaWx0ZXJFZmZlY3Q6OlR5cGU6OkZFTW9ycGhvbG9neSkKLSAg
ICAsIG1fdHlwZSh0eXBlKQotICAgICwgbV9yYWRpdXNYKHJhZGl1c1gpCi0gICAgLCBtX3JhZGl1
c1kocmFkaXVzWSkKK1JlZjxGRU1vcnBob2xvZ3k+IEZFTW9ycGhvbG9neTo6Y3JlYXRlKE1vcnBo
b2xvZ3lPcGVyYXRvclR5cGUgdHlwZSwgZmxvYXQgcmFkaXVzWCwgZmxvYXQgcmFkaXVzWSkKIHsK
KyAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBGRU1vcnBob2xvZ3kodHlwZSwgcmFkaXVzWCwgcmFk
aXVzWSkpOwogfQogCi1SZWY8RkVNb3JwaG9sb2d5PiBGRU1vcnBob2xvZ3k6OmNyZWF0ZShGaWx0
ZXImIGZpbHRlciwgTW9ycGhvbG9neU9wZXJhdG9yVHlwZSB0eXBlLCBmbG9hdCByYWRpdXNYLCBm
bG9hdCByYWRpdXNZKQorRkVNb3JwaG9sb2d5OjpGRU1vcnBob2xvZ3koTW9ycGhvbG9neU9wZXJh
dG9yVHlwZSB0eXBlLCBmbG9hdCByYWRpdXNYLCBmbG9hdCByYWRpdXNZKQorICAgIDogRmlsdGVy
RWZmZWN0KEZpbHRlckVmZmVjdDo6VHlwZTo6RkVNb3JwaG9sb2d5KQorICAgICwgbV90eXBlKHR5
cGUpCisgICAgLCBtX3JhZGl1c1gocmFkaXVzWCkKKyAgICAsIG1fcmFkaXVzWShyYWRpdXNZKQog
ewotICAgIHJldHVybiBhZG9wdFJlZigqbmV3IEZFTW9ycGhvbG9neShmaWx0ZXIsIHR5cGUsIHJh
ZGl1c1gsIHJhZGl1c1kpKTsKIH0KIAogYm9vbCBGRU1vcnBob2xvZ3k6OnNldE1vcnBob2xvZ3lP
cGVyYXRvcihNb3JwaG9sb2d5T3BlcmF0b3JUeXBlIHR5cGUpCkBAIC03MiwxMCArNzIsOSBAQCBi
b29sIEZFTW9ycGhvbG9neTo6c2V0UmFkaXVzWShmbG9hdCByYWRpdXNZKQogICAgIHJldHVybiB0
cnVlOwogfQogCi12b2lkIEZFTW9ycGhvbG9neTo6ZGV0ZXJtaW5lQWJzb2x1dGVQYWludFJlY3Qo
KQordm9pZCBGRU1vcnBob2xvZ3k6OmRldGVybWluZUFic29sdXRlUGFpbnRSZWN0KGNvbnN0IEZp
bHRlciYgZmlsdGVyKQogewogICAgIEZsb2F0UmVjdCBwYWludFJlY3QgPSBpbnB1dEVmZmVjdCgw
KS0+YWJzb2x1dGVQYWludFJlY3QoKTsKLSAgICBGaWx0ZXImIGZpbHRlciA9IHRoaXMtPmZpbHRl
cigpOwogICAgIHBhaW50UmVjdC5pbmZsYXRlKGZpbHRlci5zY2FsZWRCeUZpbHRlclNjYWxlKHsg
bV9yYWRpdXNYLCBtX3JhZGl1c1kgfSkpOwogICAgIGlmIChjbGlwc1RvQm91bmRzKCkpCiAgICAg
ICAgIHBhaW50UmVjdC5pbnRlcnNlY3QobWF4RWZmZWN0UmVjdCgpKTsKQEAgLTI0MCw3ICsyMzks
NyBAQCBib29sIEZFTW9ycGhvbG9neTo6cGxhdGZvcm1BcHBseURlZ2VuZXJhdGUoVWludDhDbGFt
cGVkQXJyYXkmIGRzdFBpeGVsQXJyYXksIGNvbgogICAgIHJldHVybiBmYWxzZTsKIH0KIAotdm9p
ZCBGRU1vcnBob2xvZ3k6OnBsYXRmb3JtQXBwbHlTb2Z0d2FyZSgpCit2b2lkIEZFTW9ycGhvbG9n
eTo6cGxhdGZvcm1BcHBseVNvZnR3YXJlKGNvbnN0IEZpbHRlciYgZmlsdGVyKQogewogICAgIEZp
bHRlckVmZmVjdCogaW4gPSBpbnB1dEVmZmVjdCgwKTsKIApAQCAtMjU4LDcgKzI1Nyw2IEBAIHZv
aWQgRkVNb3JwaG9sb2d5OjpwbGF0Zm9ybUFwcGx5U29mdHdhcmUoKQogICAgIGlmIChwbGF0Zm9y
bUFwcGx5RGVnZW5lcmF0ZShkZXN0aW5hdGlvblBpeGVsQXJyYXksIGVmZmVjdERyYXdpbmdSZWN0
LCByYWRpdXMud2lkdGgoKSwgcmFkaXVzLmhlaWdodCgpKSkKICAgICAgICAgcmV0dXJuOwogCi0g
ICAgRmlsdGVyJiBmaWx0ZXIgPSB0aGlzLT5maWx0ZXIoKTsKICAgICBhdXRvIHNvdXJjZVBpeGVs
QXJyYXkgPSBpbi0+cHJlbXVsdGlwbGllZFJlc3VsdChlZmZlY3REcmF3aW5nUmVjdCwgb3BlcmF0
aW5nQ29sb3JTcGFjZSgpKTsKICAgICBpZiAoIXNvdXJjZVBpeGVsQXJyYXkpCiAgICAgICAgIHJl
dHVybjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRl
cnMvRkVNb3JwaG9sb2d5LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0
ZXJzL0ZFTW9ycGhvbG9neS5oCmluZGV4IDFiNjljNjMyNmNiMGI5MjM2YTkwZDNkMTQyNTNhZTBi
M2VlMTQ5ODguLmVjOWJkYjY5NjI1MWZjZmM4MWIzZTVjYWIwMjc3Yjk4MmI5MWE4ZmEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVNb3JwaG9s
b2d5LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRU1v
cnBob2xvZ3kuaApAQCAtMjIsNyArMjIsNiBAQAogI3ByYWdtYSBvbmNlCiAKICNpbmNsdWRlICJG
aWx0ZXJFZmZlY3QuaCIKLSNpbmNsdWRlICJGaWx0ZXIuaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUg
ewogCkBAIC0zNCw3ICszMyw3IEBAIGVudW0gTW9ycGhvbG9neU9wZXJhdG9yVHlwZSB7CiAKIGNs
YXNzIEZFTW9ycGhvbG9neSA6IHB1YmxpYyBGaWx0ZXJFZmZlY3QgewogcHVibGljOgotICAgIHN0
YXRpYyBSZWY8RkVNb3JwaG9sb2d5PiBjcmVhdGUoRmlsdGVyJiwgTW9ycGhvbG9neU9wZXJhdG9y
VHlwZSwgZmxvYXQgcmFkaXVzWCwgZmxvYXQgcmFkaXVzWSk7CisgICAgc3RhdGljIFJlZjxGRU1v
cnBob2xvZ3k+IGNyZWF0ZShNb3JwaG9sb2d5T3BlcmF0b3JUeXBlLCBmbG9hdCByYWRpdXNYLCBm
bG9hdCByYWRpdXNZKTsKIAogICAgIE1vcnBob2xvZ3lPcGVyYXRvclR5cGUgbW9ycGhvbG9neU9w
ZXJhdG9yKCkgY29uc3QgeyByZXR1cm4gbV90eXBlOyB9CiAgICAgYm9vbCBzZXRNb3JwaG9sb2d5
T3BlcmF0b3IoTW9ycGhvbG9neU9wZXJhdG9yVHlwZSk7CkBAIC00NiwxMSArNDUsMTEgQEAgcHVi
bGljOgogICAgIGJvb2wgc2V0UmFkaXVzWShmbG9hdCk7CiAKIHByaXZhdGU6Ci0gICAgRkVNb3Jw
aG9sb2d5KEZpbHRlciYsIE1vcnBob2xvZ3lPcGVyYXRvclR5cGUsIGZsb2F0IHJhZGl1c1gsIGZs
b2F0IHJhZGl1c1kpOworICAgIEZFTW9ycGhvbG9neShNb3JwaG9sb2d5T3BlcmF0b3JUeXBlLCBm
bG9hdCByYWRpdXNYLCBmbG9hdCByYWRpdXNZKTsKIAotICAgIHZvaWQgcGxhdGZvcm1BcHBseVNv
ZnR3YXJlKCkgb3ZlcnJpZGU7CisgICAgdm9pZCBkZXRlcm1pbmVBYnNvbHV0ZVBhaW50UmVjdChj
b25zdCBGaWx0ZXImKSBvdmVycmlkZTsKIAotICAgIHZvaWQgZGV0ZXJtaW5lQWJzb2x1dGVQYWlu
dFJlY3QoKSBvdmVycmlkZTsKKyAgICB2b2lkIHBsYXRmb3JtQXBwbHlTb2Z0d2FyZShjb25zdCBG
aWx0ZXImKSBvdmVycmlkZTsKIAogICAgIFdURjo6VGV4dFN0cmVhbSYgZXh0ZXJuYWxSZXByZXNl
bnRhdGlvbihXVEY6OlRleHRTdHJlYW0mLCBSZXByZXNlbnRhdGlvblR5cGUpIGNvbnN0IG92ZXJy
aWRlOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0
ZXJzL0ZFT2Zmc2V0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRl
cnMvRkVPZmZzZXQuY3BwCmluZGV4IDAyOGNiYzYwYTQ0N2YzNjliY2NlZGEwMDVjOTE3NWIzMWIx
OGQ4ZjYuLjUzZDI1MmE5NzY3NDJhNmMyOWE1NDM2YjU2MDNkY2ZmZDhiM2VlY2YgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVPZmZzZXQuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVPZmZzZXQu
Y3BwCkBAIC0yNiwyMCArMjYsMjEgQEAKIAogI2luY2x1ZGUgIkZpbHRlci5oIgogI2luY2x1ZGUg
IkdyYXBoaWNzQ29udGV4dC5oIgorI2luY2x1ZGUgIkltYWdlQnVmZmVyLmgiCiAjaW5jbHVkZSA8
d3RmL3RleHQvVGV4dFN0cmVhbS5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLUZFT2Zmc2V0
OjpGRU9mZnNldChGaWx0ZXImIGZpbHRlciwgZmxvYXQgZHgsIGZsb2F0IGR5KQotICAgIDogRmls
dGVyRWZmZWN0KGZpbHRlciwgRmlsdGVyRWZmZWN0OjpUeXBlOjpGRU9mZnNldCkKLSAgICAsIG1f
ZHgoZHgpCi0gICAgLCBtX2R5KGR5KQorUmVmPEZFT2Zmc2V0PiBGRU9mZnNldDo6Y3JlYXRlKGZs
b2F0IGR4LCBmbG9hdCBkeSkKIHsKKyAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBGRU9mZnNldChk
eCwgZHkpKTsKIH0KIAotUmVmPEZFT2Zmc2V0PiBGRU9mZnNldDo6Y3JlYXRlKEZpbHRlciYgZmls
dGVyLCBmbG9hdCBkeCwgZmxvYXQgZHkpCitGRU9mZnNldDo6RkVPZmZzZXQoZmxvYXQgZHgsIGZs
b2F0IGR5KQorICAgIDogRmlsdGVyRWZmZWN0KEZpbHRlckVmZmVjdDo6VHlwZTo6RkVPZmZzZXQp
CisgICAgLCBtX2R4KGR4KQorICAgICwgbV9keShkeSkKIHsKLSAgICByZXR1cm4gYWRvcHRSZWYo
Km5ldyBGRU9mZnNldChmaWx0ZXIsIGR4LCBkeSkpOwogfQogCiB2b2lkIEZFT2Zmc2V0OjpzZXRE
eChmbG9hdCBkeCkKQEAgLTUyLDEwICs1Myw5IEBAIHZvaWQgRkVPZmZzZXQ6OnNldER5KGZsb2F0
IGR5KQogICAgIG1fZHkgPSBkeTsKIH0KIAotdm9pZCBGRU9mZnNldDo6ZGV0ZXJtaW5lQWJzb2x1
dGVQYWludFJlY3QoKQordm9pZCBGRU9mZnNldDo6ZGV0ZXJtaW5lQWJzb2x1dGVQYWludFJlY3Qo
Y29uc3QgRmlsdGVyJiBmaWx0ZXIpCiB7CiAgICAgRmxvYXRSZWN0IHBhaW50UmVjdCA9IGlucHV0
RWZmZWN0KDApLT5hYnNvbHV0ZVBhaW50UmVjdCgpOwotICAgIEZpbHRlciYgZmlsdGVyID0gdGhp
cy0+ZmlsdGVyKCk7CiAgICAgcGFpbnRSZWN0Lm1vdmUoZmlsdGVyLnNjYWxlZEJ5RmlsdGVyU2Nh
bGUoeyBtX2R4LCBtX2R5IH0pKTsKICAgICBpZiAoY2xpcHNUb0JvdW5kcygpKQogICAgICAgICBw
YWludFJlY3QuaW50ZXJzZWN0KG1heEVmZmVjdFJlY3QoKSk7CkBAIC02NCw3ICs2NCw3IEBAIHZv
aWQgRkVPZmZzZXQ6OmRldGVybWluZUFic29sdXRlUGFpbnRSZWN0KCkKICAgICBzZXRBYnNvbHV0
ZVBhaW50UmVjdChlbmNsb3NpbmdJbnRSZWN0KHBhaW50UmVjdCkpOwogfQogCi12b2lkIEZFT2Zm
c2V0OjpwbGF0Zm9ybUFwcGx5U29mdHdhcmUoKQordm9pZCBGRU9mZnNldDo6cGxhdGZvcm1BcHBs
eVNvZnR3YXJlKGNvbnN0IEZpbHRlciYgZmlsdGVyKQogewogICAgIEZpbHRlckVmZmVjdCogaW4g
PSBpbnB1dEVmZmVjdCgwKTsKIApAQCAtNzYsNyArNzYsNiBAQCB2b2lkIEZFT2Zmc2V0OjpwbGF0
Zm9ybUFwcGx5U29mdHdhcmUoKQogICAgIHNldElzQWxwaGFJbWFnZShpbi0+aXNBbHBoYUltYWdl
KCkpOwogCiAgICAgRmxvYXRSZWN0IGRyYXdpbmdSZWdpb24gPSBkcmF3aW5nUmVnaW9uT2ZJbnB1
dEltYWdlKGluLT5hYnNvbHV0ZVBhaW50UmVjdCgpKTsKLSAgICBGaWx0ZXImIGZpbHRlciA9IHRo
aXMtPmZpbHRlcigpOwogICAgIGRyYXdpbmdSZWdpb24ubW92ZShmaWx0ZXIuc2NhbGVkQnlGaWx0
ZXJTY2FsZSh7IG1fZHgsIG1fZHkgfSkpOwogICAgIHJlc3VsdEltYWdlLT5jb250ZXh0KCkuZHJh
d0ltYWdlQnVmZmVyKCppbkJ1ZmZlciwgZHJhd2luZ1JlZ2lvbik7CiB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFT2Zmc2V0LmggYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFT2Zmc2V0LmgKaW5kZXggZGI3
MzIyNTVlZTc4ZDMzNjgwOWRiNDIxNzg1YTkyZjg0NWI5NTI2Mi4uNzJkNzZhMzE5OGEzNzI5ZTk1
Y2ExZGZhZjYzZjViMGY2ZDg4Y2E2ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvZmlsdGVycy9GRU9mZnNldC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVPZmZzZXQuaApAQCAtMjIsMTMgKzIyLDEyIEBACiAjcHJh
Z21hIG9uY2UKIAogI2luY2x1ZGUgIkZpbHRlckVmZmVjdC5oIgotI2luY2x1ZGUgIkZpbHRlci5o
IgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIEZFT2Zmc2V0IDogcHVibGljIEZpbHRl
ckVmZmVjdCB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFJlZjxGRU9mZnNldD4gY3JlYXRlKEZpbHRl
ciYsIGZsb2F0IGR4LCBmbG9hdCBkeSk7CisgICAgc3RhdGljIFJlZjxGRU9mZnNldD4gY3JlYXRl
KGZsb2F0IGR4LCBmbG9hdCBkeSk7CiAKICAgICBmbG9hdCBkeCgpIGNvbnN0IHsgcmV0dXJuIG1f
ZHg7IH0KICAgICB2b2lkIHNldER4KGZsb2F0KTsKQEAgLTM3LDExICszNiwxMSBAQCBwdWJsaWM6
CiAgICAgdm9pZCBzZXREeShmbG9hdCk7CiAKIHByaXZhdGU6Ci0gICAgRkVPZmZzZXQoRmlsdGVy
JiwgZmxvYXQgZHgsIGZsb2F0IGR5KTsKKyAgICBGRU9mZnNldChmbG9hdCBkeCwgZmxvYXQgZHkp
OwogCi0gICAgdm9pZCBwbGF0Zm9ybUFwcGx5U29mdHdhcmUoKSBvdmVycmlkZTsKLSAgICAKLSAg
ICB2b2lkIGRldGVybWluZUFic29sdXRlUGFpbnRSZWN0KCkgb3ZlcnJpZGU7CisgICAgdm9pZCBk
ZXRlcm1pbmVBYnNvbHV0ZVBhaW50UmVjdChjb25zdCBGaWx0ZXImKSBvdmVycmlkZTsKKworICAg
IHZvaWQgcGxhdGZvcm1BcHBseVNvZnR3YXJlKGNvbnN0IEZpbHRlciYpIG92ZXJyaWRlOwogCiAg
ICAgV1RGOjpUZXh0U3RyZWFtJiBleHRlcm5hbFJlcHJlc2VudGF0aW9uKFdURjo6VGV4dFN0cmVh
bSYsIFJlcHJlc2VudGF0aW9uVHlwZSkgY29uc3Qgb3ZlcnJpZGU7CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVTcGVjdWxhckxpZ2h0aW5n
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVTcGVjdWxh
ckxpZ2h0aW5nLmNwcAppbmRleCA1MmY0NTA4NDA5MGFkY2IwNGQ3ZTQ1MTIwNThlYTdhMmFjZGE4
ZjNjLi42MDdhNzFjNGNmMzVmNTZkNGEyMmZjZjUwMjZmMTQyYjUxN2U3MGQ3IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFU3BlY3VsYXJMaWdo
dGluZy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9G
RVNwZWN1bGFyTGlnaHRpbmcuY3BwCkBAIC0yNywxNCArMjcsMTQgQEAKIAogbmFtZXNwYWNlIFdl
YkNvcmUgewogCi1GRVNwZWN1bGFyTGlnaHRpbmc6OkZFU3BlY3VsYXJMaWdodGluZyhGaWx0ZXIm
IGZpbHRlciwgY29uc3QgQ29sb3ImIGxpZ2h0aW5nQ29sb3IsIGZsb2F0IHN1cmZhY2VTY2FsZSwg
ZmxvYXQgc3BlY3VsYXJDb25zdGFudCwgZmxvYXQgc3BlY3VsYXJFeHBvbmVudCwgZmxvYXQga2Vy
bmVsVW5pdExlbmd0aFgsIGZsb2F0IGtlcm5lbFVuaXRMZW5ndGhZLCBSZWY8TGlnaHRTb3VyY2U+
JiYgbGlnaHRTb3VyY2UpCi0gICAgOiBGRUxpZ2h0aW5nKGZpbHRlciwgU3BlY3VsYXJMaWdodGlu
ZywgbGlnaHRpbmdDb2xvciwgc3VyZmFjZVNjYWxlLCAwLCBzcGVjdWxhckNvbnN0YW50LCBzcGVj
dWxhckV4cG9uZW50LCBrZXJuZWxVbml0TGVuZ3RoWCwga2VybmVsVW5pdExlbmd0aFksIFdURk1v
dmUobGlnaHRTb3VyY2UpLCBGaWx0ZXJFZmZlY3Q6OlR5cGU6OkZFU3BlY3VsYXJMaWdodGluZykK
K1JlZjxGRVNwZWN1bGFyTGlnaHRpbmc+IEZFU3BlY3VsYXJMaWdodGluZzo6Y3JlYXRlKGNvbnN0
IENvbG9yJiBsaWdodGluZ0NvbG9yLCBmbG9hdCBzdXJmYWNlU2NhbGUsIGZsb2F0IHNwZWN1bGFy
Q29uc3RhbnQsIGZsb2F0IHNwZWN1bGFyRXhwb25lbnQsIGZsb2F0IGtlcm5lbFVuaXRMZW5ndGhY
LCBmbG9hdCBrZXJuZWxVbml0TGVuZ3RoWSwgUmVmPExpZ2h0U291cmNlPiYmIGxpZ2h0U291cmNl
KQogeworICAgIHJldHVybiBhZG9wdFJlZigqbmV3IEZFU3BlY3VsYXJMaWdodGluZyhsaWdodGlu
Z0NvbG9yLCBzdXJmYWNlU2NhbGUsIHNwZWN1bGFyQ29uc3RhbnQsIHNwZWN1bGFyRXhwb25lbnQs
IGtlcm5lbFVuaXRMZW5ndGhYLCBrZXJuZWxVbml0TGVuZ3RoWSwgV1RGTW92ZShsaWdodFNvdXJj
ZSkpKTsKIH0KIAotUmVmPEZFU3BlY3VsYXJMaWdodGluZz4gRkVTcGVjdWxhckxpZ2h0aW5nOjpj
cmVhdGUoRmlsdGVyJiBmaWx0ZXIsIGNvbnN0IENvbG9yJiBsaWdodGluZ0NvbG9yLCBmbG9hdCBz
dXJmYWNlU2NhbGUsIGZsb2F0IHNwZWN1bGFyQ29uc3RhbnQsIGZsb2F0IHNwZWN1bGFyRXhwb25l
bnQsIGZsb2F0IGtlcm5lbFVuaXRMZW5ndGhYLCBmbG9hdCBrZXJuZWxVbml0TGVuZ3RoWSwgUmVm
PExpZ2h0U291cmNlPiYmIGxpZ2h0U291cmNlKQorRkVTcGVjdWxhckxpZ2h0aW5nOjpGRVNwZWN1
bGFyTGlnaHRpbmcoY29uc3QgQ29sb3ImIGxpZ2h0aW5nQ29sb3IsIGZsb2F0IHN1cmZhY2VTY2Fs
ZSwgZmxvYXQgc3BlY3VsYXJDb25zdGFudCwgZmxvYXQgc3BlY3VsYXJFeHBvbmVudCwgZmxvYXQg
a2VybmVsVW5pdExlbmd0aFgsIGZsb2F0IGtlcm5lbFVuaXRMZW5ndGhZLCBSZWY8TGlnaHRTb3Vy
Y2U+JiYgbGlnaHRTb3VyY2UpCisgICAgOiBGRUxpZ2h0aW5nKFNwZWN1bGFyTGlnaHRpbmcsIGxp
Z2h0aW5nQ29sb3IsIHN1cmZhY2VTY2FsZSwgMCwgc3BlY3VsYXJDb25zdGFudCwgc3BlY3VsYXJF
eHBvbmVudCwga2VybmVsVW5pdExlbmd0aFgsIGtlcm5lbFVuaXRMZW5ndGhZLCBXVEZNb3ZlKGxp
Z2h0U291cmNlKSwgRmlsdGVyRWZmZWN0OjpUeXBlOjpGRVNwZWN1bGFyTGlnaHRpbmcpCiB7Ci0g
ICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgRkVTcGVjdWxhckxpZ2h0aW5nKGZpbHRlciwgbGlnaHRp
bmdDb2xvciwgc3VyZmFjZVNjYWxlLCBzcGVjdWxhckNvbnN0YW50LCBzcGVjdWxhckV4cG9uZW50
LCBrZXJuZWxVbml0TGVuZ3RoWCwga2VybmVsVW5pdExlbmd0aFksIFdURk1vdmUobGlnaHRTb3Vy
Y2UpKSk7CiB9CiAKIGJvb2wgRkVTcGVjdWxhckxpZ2h0aW5nOjpzZXRTcGVjdWxhckNvbnN0YW50
KGZsb2F0IHNwZWN1bGFyQ29uc3RhbnQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFU3BlY3VsYXJMaWdodGluZy5oIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRVNwZWN1bGFyTGlnaHRpbmcuaAppbmRleCA5
YmJiYThhOGYxZmM2ZjAxMDQ1NzYwZGE4MGQzNWY4Y2QyNzdjZTE3Li5hYzQ1MGRiZGI2MGNkNjk3
Y2Q4ZGZjM2M3OTMxOGRiZjY0YWQ1MzM1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFU3BlY3VsYXJMaWdodGluZy5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVTcGVjdWxhckxpZ2h0aW5nLmgKQEAg
LTI3LDcgKzI3LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBGRVNwZWN1bGFyTGln
aHRpbmcgOiBwdWJsaWMgRkVMaWdodGluZyB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFJlZjxGRVNw
ZWN1bGFyTGlnaHRpbmc+IGNyZWF0ZShGaWx0ZXImLCBjb25zdCBDb2xvciYsIGZsb2F0LCBmbG9h
dCwgZmxvYXQsIGZsb2F0LCBmbG9hdCwgUmVmPExpZ2h0U291cmNlPiYmKTsKKyAgICBzdGF0aWMg
UmVmPEZFU3BlY3VsYXJMaWdodGluZz4gY3JlYXRlKGNvbnN0IENvbG9yJiBsaWdodGluZ0NvbG9y
LCBmbG9hdCBzdXJmYWNlU2NhbGUsIGZsb2F0IHNwZWN1bGFyQ29uc3RhbnQsIGZsb2F0IHNwZWN1
bGFyRXhwb25lbnQsIGZsb2F0IGtlcm5lbFVuaXRMZW5ndGhYLCBmbG9hdCBrZXJuZWxVbml0TGVu
Z3RoWSwgUmVmPExpZ2h0U291cmNlPiYmKTsKIAogICAgIGZsb2F0IHNwZWN1bGFyQ29uc3RhbnQo
KSBjb25zdCB7IHJldHVybiBtX3NwZWN1bGFyQ29uc3RhbnQ7IH0KICAgICBib29sIHNldFNwZWN1
bGFyQ29uc3RhbnQoZmxvYXQpOwpAQCAtMzgsNyArMzgsNyBAQCBwdWJsaWM6CiAgICAgV1RGOjpU
ZXh0U3RyZWFtJiBleHRlcm5hbFJlcHJlc2VudGF0aW9uKFdURjo6VGV4dFN0cmVhbSYsIFJlcHJl
c2VudGF0aW9uVHlwZSkgY29uc3Qgb3ZlcnJpZGU7CiAKIHByaXZhdGU6Ci0gICAgRkVTcGVjdWxh
ckxpZ2h0aW5nKEZpbHRlciYsIGNvbnN0IENvbG9yJiwgZmxvYXQsIGZsb2F0LCBmbG9hdCwgZmxv
YXQsIGZsb2F0LCBSZWY8TGlnaHRTb3VyY2U+JiYpOworICAgIEZFU3BlY3VsYXJMaWdodGluZyhj
b25zdCBDb2xvciYgbGlnaHRpbmdDb2xvciwgZmxvYXQgc3VyZmFjZVNjYWxlLCBmbG9hdCBzcGVj
dWxhckNvbnN0YW50LCBmbG9hdCBzcGVjdWxhckV4cG9uZW50LCBmbG9hdCBrZXJuZWxVbml0TGVu
Z3RoWCwgZmxvYXQga2VybmVsVW5pdExlbmd0aFksIFJlZjxMaWdodFNvdXJjZT4mJik7CiB9Owog
CiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFVGlsZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9maWx0ZXJzL0ZFVGlsZS5jcHAKaW5kZXggM2U1MGZiNmMwMGVjZjM4Mzk4NWM2
Mjk3OTg0ZjZlOTc4NWNlNDI0ZS4uODFhYTBjNTNhMWE4MzY1NWY3ODJlYzkyYWUxNzA5ODllNDg4
ZjUzZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVy
cy9GRVRpbGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRl
cnMvRkVUaWxlLmNwcApAQCAtMjQsNiArMjQsNyBAQAogI2luY2x1ZGUgIkFmZmluZVRyYW5zZm9y
bS5oIgogI2luY2x1ZGUgIkZpbHRlci5oIgogI2luY2x1ZGUgIkdyYXBoaWNzQ29udGV4dC5oIgor
I2luY2x1ZGUgIkltYWdlQnVmZmVyLmgiCiAjaW5jbHVkZSAiUGF0dGVybi5oIgogI2luY2x1ZGUg
IlJlbmRlclRyZWVBc1RleHQuaCIKICNpbmNsdWRlICJTVkdSZW5kZXJpbmdDb250ZXh0LmgiCkBA
IC0zMSwxNyArMzIsMTcgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1GRVRpbGU6OkZFVGls
ZShGaWx0ZXImIGZpbHRlcikKLSAgICA6IEZpbHRlckVmZmVjdChmaWx0ZXIsIEZpbHRlckVmZmVj
dDo6VHlwZTo6RkVUaWxlKQorUmVmPEZFVGlsZT4gRkVUaWxlOjpjcmVhdGUoKQogeworICAgIHJl
dHVybiBhZG9wdFJlZigqbmV3IEZFVGlsZSgpKTsKIH0KIAotUmVmPEZFVGlsZT4gRkVUaWxlOjpj
cmVhdGUoRmlsdGVyJiBmaWx0ZXIpCitGRVRpbGU6OkZFVGlsZSgpCisgICAgOiBGaWx0ZXJFZmZl
Y3QoRmlsdGVyRWZmZWN0OjpUeXBlOjpGRVRpbGUpCiB7Ci0gICAgcmV0dXJuIGFkb3B0UmVmKCpu
ZXcgRkVUaWxlKGZpbHRlcikpOwogfQogCi12b2lkIEZFVGlsZTo6cGxhdGZvcm1BcHBseVNvZnR3
YXJlKCkKK3ZvaWQgRkVUaWxlOjpwbGF0Zm9ybUFwcGx5U29mdHdhcmUoY29uc3QgRmlsdGVyJiBm
aWx0ZXIpCiB7CiAvLyBGSVhNRTogU2VlIGJ1ZyA0NzMxNS4gVGhpcyBpcyBhIGhhY2sgdG8gd29y
ayBhcm91bmQgYSBjb21waWxlIGZhaWx1cmUsIGJ1dCBpcyBpbmNvcnJlY3QgYmVoYXZpb3Igb3Ro
ZXJ3aXNlLgogICAgIEZpbHRlckVmZmVjdCogaW4gPSBpbnB1dEVmZmVjdCgwKTsKQEAgLTU5LDEy
ICs2MCwxMSBAQCB2b2lkIEZFVGlsZTo6cGxhdGZvcm1BcHBseVNvZnR3YXJlKCkKICAgICBGbG9h
dFBvaW50IGluTWF4RWZmZWN0TG9jYXRpb24gPSB0aWxlUmVjdC5sb2NhdGlvbigpOwogICAgIEZs
b2F0UG9pbnQgbWF4RWZmZWN0TG9jYXRpb24gPSBtYXhFZmZlY3RSZWN0KCkubG9jYXRpb24oKTsK
ICAgICBpZiAoaW4tPmZpbHRlclR5cGUoKSA9PSBGaWx0ZXJFZmZlY3Q6OlR5cGU6OlNvdXJjZUdy
YXBoaWMgfHwgaW4tPmZpbHRlclR5cGUoKSA9PSBGaWx0ZXJFZmZlY3Q6OlR5cGU6OlNvdXJjZUFs
cGhhKSB7Ci0gICAgICAgIEZpbHRlciYgZmlsdGVyID0gdGhpcy0+ZmlsdGVyKCk7CiAgICAgICAg
IHRpbGVSZWN0ID0gZmlsdGVyLmZpbHRlclJlZ2lvbigpOwogICAgICAgICB0aWxlUmVjdC5zY2Fs
ZShmaWx0ZXIuZmlsdGVyU2NhbGUoKSk7CiAgICAgfQogCi0gICAgYXV0byB0aWxlSW1hZ2UgPSBT
VkdSZW5kZXJpbmdDb250ZXh0OjpjcmVhdGVJbWFnZUJ1ZmZlcih0aWxlUmVjdCwgdGlsZVJlY3Qs
IERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQigpLCBmaWx0ZXIoKS5yZW5kZXJpbmdNb2RlKCkp
OworICAgIGF1dG8gdGlsZUltYWdlID0gU1ZHUmVuZGVyaW5nQ29udGV4dDo6Y3JlYXRlSW1hZ2VC
dWZmZXIodGlsZVJlY3QsIHRpbGVSZWN0LCBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0IoKSwg
ZmlsdGVyLnJlbmRlcmluZ01vZGUoKSk7CiAgICAgaWYgKCF0aWxlSW1hZ2UpCiAgICAgICAgIHJl
dHVybjsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmls
dGVycy9GRVRpbGUuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMv
RkVUaWxlLmgKaW5kZXggNWM0OGVmNDUxNTBlYzJjZjg3OWZkZGI3ZTQ4ZTllOWU4ZDUwMjQxZS4u
YzM5OGYzNjQwYjBkNzUzZTg4Mzg1NDQzOGYyMDBkNzE2ZmIxM2ViZiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRVRpbGUuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFVGlsZS5oCkBAIC0yMiwyMCAr
MjIsMTkgQEAKICNwcmFnbWEgb25jZQogCiAjaW5jbHVkZSAiRmlsdGVyRWZmZWN0LmgiCi0jaW5j
bHVkZSAiRmlsdGVyLmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAKIGNsYXNzIEZFVGls
ZSA6IHB1YmxpYyBGaWx0ZXJFZmZlY3QgewogcHVibGljOgotICAgIHN0YXRpYyBSZWY8RkVUaWxl
PiBjcmVhdGUoRmlsdGVyJik7CisgICAgc3RhdGljIFJlZjxGRVRpbGU+IGNyZWF0ZSgpOwogCiBw
cml2YXRlOgotICAgIEZFVGlsZShGaWx0ZXImKTsKKyAgICBGRVRpbGUoKTsKIAotICAgIHZvaWQg
cGxhdGZvcm1BcHBseVNvZnR3YXJlKCkgb3ZlcnJpZGU7CisgICAgdm9pZCBkZXRlcm1pbmVBYnNv
bHV0ZVBhaW50UmVjdChjb25zdCBGaWx0ZXImKSBvdmVycmlkZSB7IHNldEFic29sdXRlUGFpbnRS
ZWN0KGVuY2xvc2luZ0ludFJlY3QobWF4RWZmZWN0UmVjdCgpKSk7IH0KIAotICAgIHZvaWQgZGV0
ZXJtaW5lQWJzb2x1dGVQYWludFJlY3QoKSBvdmVycmlkZSB7IHNldEFic29sdXRlUGFpbnRSZWN0
KGVuY2xvc2luZ0ludFJlY3QobWF4RWZmZWN0UmVjdCgpKSk7IH0KKyAgICB2b2lkIHBsYXRmb3Jt
QXBwbHlTb2Z0d2FyZShjb25zdCBGaWx0ZXImKSBvdmVycmlkZTsKIAogICAgIFdURjo6VGV4dFN0
cmVhbSYgZXh0ZXJuYWxSZXByZXNlbnRhdGlvbihXVEY6OlRleHRTdHJlYW0mLCBSZXByZXNlbnRh
dGlvblR5cGUpIGNvbnN0IG92ZXJyaWRlOwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVUdXJidWxlbmNlLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVUdXJidWxlbmNlLmNwcAppbmRleCBhMmU3
YWVjMzRkNmE5NTU0NGEwNzA2OTdkYTU3OGUxODM1NjBkYjVjLi5mMmNmZWYwNjFhMzcwODQ5NDNh
MjBlZmFlOGQ4ZmIwYzliZGE3MWNhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9maWx0ZXJzL0ZFVHVyYnVsZW5jZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRVR1cmJ1bGVuY2UuY3BwCkBAIC00OCw4ICs0OCwx
MyBAQCBzdGF0aWMgY29uc3QgaW50IHNfcmFuZEFtcGxpdHVkZSA9IDE2ODA3OyAvLyA3Kio1OyBw
cmltaXRpdmUgcm9vdCBvZiBtCiBzdGF0aWMgY29uc3QgaW50IHNfcmFuZFEgPSAxMjc3NzM7IC8v
IG0gLyBhCiBzdGF0aWMgY29uc3QgaW50IHNfcmFuZFIgPSAyODM2OyAvLyBtICUgYQogCi1GRVR1
cmJ1bGVuY2U6OkZFVHVyYnVsZW5jZShGaWx0ZXImIGZpbHRlciwgVHVyYnVsZW5jZVR5cGUgdHlw
ZSwgZmxvYXQgYmFzZUZyZXF1ZW5jeVgsIGZsb2F0IGJhc2VGcmVxdWVuY3lZLCBpbnQgbnVtT2N0
YXZlcywgZmxvYXQgc2VlZCwgYm9vbCBzdGl0Y2hUaWxlcykKLSAgICA6IEZpbHRlckVmZmVjdChm
aWx0ZXIsIEZpbHRlckVmZmVjdDo6VHlwZTo6RkVUdXJidWxlbmNlKQorUmVmPEZFVHVyYnVsZW5j
ZT4gRkVUdXJidWxlbmNlOjpjcmVhdGUoVHVyYnVsZW5jZVR5cGUgdHlwZSwgZmxvYXQgYmFzZUZy
ZXF1ZW5jeVgsIGZsb2F0IGJhc2VGcmVxdWVuY3lZLCBpbnQgbnVtT2N0YXZlcywgZmxvYXQgc2Vl
ZCwgYm9vbCBzdGl0Y2hUaWxlcykKK3sKKyAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBGRVR1cmJ1
bGVuY2UodHlwZSwgYmFzZUZyZXF1ZW5jeVgsIGJhc2VGcmVxdWVuY3lZLCBudW1PY3RhdmVzLCBz
ZWVkLCBzdGl0Y2hUaWxlcykpOworfQorCitGRVR1cmJ1bGVuY2U6OkZFVHVyYnVsZW5jZShUdXJi
dWxlbmNlVHlwZSB0eXBlLCBmbG9hdCBiYXNlRnJlcXVlbmN5WCwgZmxvYXQgYmFzZUZyZXF1ZW5j
eVksIGludCBudW1PY3RhdmVzLCBmbG9hdCBzZWVkLCBib29sIHN0aXRjaFRpbGVzKQorICAgIDog
RmlsdGVyRWZmZWN0KEZpbHRlckVmZmVjdDo6VHlwZTo6RkVUdXJidWxlbmNlKQogICAgICwgbV90
eXBlKHR5cGUpCiAgICAgLCBtX2Jhc2VGcmVxdWVuY3lYKGJhc2VGcmVxdWVuY3lYKQogICAgICwg
bV9iYXNlRnJlcXVlbmN5WShiYXNlRnJlcXVlbmN5WSkKQEAgLTU5LDExICs2NCw2IEBAIEZFVHVy
YnVsZW5jZTo6RkVUdXJidWxlbmNlKEZpbHRlciYgZmlsdGVyLCBUdXJidWxlbmNlVHlwZSB0eXBl
LCBmbG9hdCBiYXNlRnJlcXVlCiB7CiB9CiAKLVJlZjxGRVR1cmJ1bGVuY2U+IEZFVHVyYnVsZW5j
ZTo6Y3JlYXRlKEZpbHRlciYgZmlsdGVyLCBUdXJidWxlbmNlVHlwZSB0eXBlLCBmbG9hdCBiYXNl
RnJlcXVlbmN5WCwgZmxvYXQgYmFzZUZyZXF1ZW5jeVksIGludCBudW1PY3RhdmVzLCBmbG9hdCBz
ZWVkLCBib29sIHN0aXRjaFRpbGVzKQotewotICAgIHJldHVybiBhZG9wdFJlZigqbmV3IEZFVHVy
YnVsZW5jZShmaWx0ZXIsIHR5cGUsIGJhc2VGcmVxdWVuY3lYLCBiYXNlRnJlcXVlbmN5WSwgbnVt
T2N0YXZlcywgc2VlZCwgc3RpdGNoVGlsZXMpKTsKLX0KLQogYm9vbCBGRVR1cmJ1bGVuY2U6OnNl
dFR5cGUoVHVyYnVsZW5jZVR5cGUgdHlwZSkKIHsKICAgICBpZiAobV90eXBlID09IHR5cGUpCkBA
IC0zNjYsMTQgKzM2NiwxNCBAQCBDb2xvckNvbXBvbmVudHM8dWludDhfdCwgND4gRkVUdXJidWxl
bmNlOjpjYWxjdWxhdGVUdXJidWxlbmNlVmFsdWVGb3JQb2ludChjb25zdAogICAgIHJldHVybiB0
b0ludEJhc2VkQ29sb3JDb21wb25lbnRzKHR1cmJ1bGVuY2VGdW5jdGlvblJlc3VsdCk7CiB9CiAK
LXZvaWQgRkVUdXJidWxlbmNlOjpmaWxsUmVnaW9uKFVpbnQ4Q2xhbXBlZEFycmF5JiBwaXhlbEFy
cmF5LCBjb25zdCBQYWludGluZ0RhdGEmIHBhaW50aW5nRGF0YSwgU3RpdGNoRGF0YSBzdGl0Y2hE
YXRhLCBpbnQgc3RhcnRZLCBpbnQgZW5kWSkgY29uc3QKK3ZvaWQgRkVUdXJidWxlbmNlOjpmaWxs
UmVnaW9uKGNvbnN0IEZpbHRlciYgZmlsdGVyLCBVaW50OENsYW1wZWRBcnJheSYgcGl4ZWxBcnJh
eSwgY29uc3QgUGFpbnRpbmdEYXRhJiBwYWludGluZ0RhdGEsIFN0aXRjaERhdGEgc3RpdGNoRGF0
YSwgaW50IHN0YXJ0WSwgaW50IGVuZFkpIGNvbnN0CiB7CiAgICAgQVNTRVJUKGVuZFkgPiBzdGFy
dFkpOwogCiAgICAgSW50UmVjdCBmaWx0ZXJSZWdpb24gPSBhYnNvbHV0ZVBhaW50UmVjdCgpOwog
ICAgIEZsb2F0UG9pbnQgcG9pbnQoMCwgZmlsdGVyUmVnaW9uLnkoKSArIHN0YXJ0WSk7CiAgICAg
aW50IGluZGV4T2ZQaXhlbENoYW5uZWwgPSBzdGFydFkgKiAoZmlsdGVyUmVnaW9uLndpZHRoKCkg
PDwgMik7Ci0gICAgRmxvYXRTaXplIGludmVyc2VTY2FsZSA9IHsgMSAvIGZpbHRlcigpLmZpbHRl
clNjYWxlKCkud2lkdGgoKSwgMSAvIGZpbHRlcigpLmZpbHRlclNjYWxlKCkuaGVpZ2h0KCkgfTsK
KyAgICBGbG9hdFNpemUgaW52ZXJzZVNjYWxlID0geyAxIC8gZmlsdGVyLmZpbHRlclNjYWxlKCku
d2lkdGgoKSwgMSAvIGZpbHRlci5maWx0ZXJTY2FsZSgpLmhlaWdodCgpIH07CiAKICAgICBmb3Ig
KGludCB5ID0gc3RhcnRZOyB5IDwgZW5kWTsgKyt5KSB7CiAgICAgICAgIHBvaW50LnNldFkocG9p
bnQueSgpICsgMSk7CkBAIC0zOTAsMTAgKzM5MCwxMCBAQCB2b2lkIEZFVHVyYnVsZW5jZTo6Zmls
bFJlZ2lvbihVaW50OENsYW1wZWRBcnJheSYgcGl4ZWxBcnJheSwgY29uc3QgUGFpbnRpbmdEYXRh
JgogCiB2b2lkIEZFVHVyYnVsZW5jZTo6ZmlsbFJlZ2lvbldvcmtlcihGaWxsUmVnaW9uUGFyYW1l
dGVycyogcGFyYW1ldGVycykKIHsKLSAgICBwYXJhbWV0ZXJzLT5maWx0ZXItPmZpbGxSZWdpb24o
KnBhcmFtZXRlcnMtPnBpeGVsQXJyYXksICpwYXJhbWV0ZXJzLT5wYWludGluZ0RhdGEsIHBhcmFt
ZXRlcnMtPnN0aXRjaERhdGEsIHBhcmFtZXRlcnMtPnN0YXJ0WSwgcGFyYW1ldGVycy0+ZW5kWSk7
CisgICAgcGFyYW1ldGVycy0+ZWZmZWN0LT5maWxsUmVnaW9uKCpwYXJhbWV0ZXJzLT5maWx0ZXIs
ICpwYXJhbWV0ZXJzLT5waXhlbEFycmF5LCAqcGFyYW1ldGVycy0+cGFpbnRpbmdEYXRhLCBwYXJh
bWV0ZXJzLT5zdGl0Y2hEYXRhLCBwYXJhbWV0ZXJzLT5zdGFydFksIHBhcmFtZXRlcnMtPmVuZFkp
OwogfQogCi12b2lkIEZFVHVyYnVsZW5jZTo6cGxhdGZvcm1BcHBseVNvZnR3YXJlKCkKK3ZvaWQg
RkVUdXJidWxlbmNlOjpwbGF0Zm9ybUFwcGx5U29mdHdhcmUoY29uc3QgRmlsdGVyJiBmaWx0ZXIp
CiB7CiAgICAgYXV0byYgZGVzdGluYXRpb25QaXhlbEJ1ZmZlciA9IGNyZWF0ZVVubXVsdGlwbGll
ZEltYWdlUmVzdWx0KCk7CiAgICAgaWYgKCFkZXN0aW5hdGlvblBpeGVsQnVmZmVyKQpAQCAtNDM4
LDcgKzQzOCw4IEBAIHZvaWQgRkVUdXJidWxlbmNlOjpwbGF0Zm9ybUFwcGx5U29mdHdhcmUoKQog
CiAgICAgICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbnVtSm9iczsgKytpKSB7CiAg
ICAgICAgICAgICAgICAgRmlsbFJlZ2lvblBhcmFtZXRlcnMmIHBhcmFtcyA9IHBhcmFsbGVsSm9i
cy5wYXJhbWV0ZXIoaSk7Ci0gICAgICAgICAgICAgICAgcGFyYW1zLmZpbHRlciA9IHRoaXM7Cisg
ICAgICAgICAgICAgICAgcGFyYW1zLmZpbHRlciA9ICZmaWx0ZXI7CisgICAgICAgICAgICAgICAg
cGFyYW1zLmVmZmVjdCA9IHRoaXM7CiAgICAgICAgICAgICAgICAgcGFyYW1zLnBpeGVsQXJyYXkg
PSAmZGVzdGluYXRpb25QaXhlbEFycmF5OwogICAgICAgICAgICAgICAgIHBhcmFtcy5wYWludGlu
Z0RhdGEgPSAmcGFpbnRpbmdEYXRhOwogICAgICAgICAgICAgICAgIHBhcmFtcy5zdGl0Y2hEYXRh
ID0gc3RpdGNoRGF0YTsKQEAgLTQ1NSw3ICs0NTYsNyBAQCB2b2lkIEZFVHVyYnVsZW5jZTo6cGxh
dGZvcm1BcHBseVNvZnR3YXJlKCkKICAgICB9CiAKICAgICAvLyBGYWxsYmFjayB0byBzaW5nbGUg
dGhyZWFkZWQgbW9kZSBpZiB0aGVyZSBpcyBubyByb29tIGZvciBhIG5ldyB0aHJlYWQgb3IgdGhl
IHBhaW50IGFyZWEgaXMgdG9vIHNtYWxsLgotICAgIGZpbGxSZWdpb24oZGVzdGluYXRpb25QaXhl
bEFycmF5LCBwYWludGluZ0RhdGEsIHN0aXRjaERhdGEsIDAsIGhlaWdodCk7CisgICAgZmlsbFJl
Z2lvbihmaWx0ZXIsIGRlc3RpbmF0aW9uUGl4ZWxBcnJheSwgcGFpbnRpbmdEYXRhLCBzdGl0Y2hE
YXRhLCAwLCBoZWlnaHQpOwogfQogCiBzdGF0aWMgVGV4dFN0cmVhbSYgb3BlcmF0b3I8PChUZXh0
U3RyZWFtJiB0cywgVHVyYnVsZW5jZVR5cGUgdHlwZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVUdXJidWxlbmNlLmggYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFVHVyYnVsZW5jZS5oCmluZGV4IDJkYTAy
OGI0NjkzZmFlNjMxNzk2ZGQzZDMyODU4ZTMzNTIwYTEzMzEuLmQyNDI2ZDM5NWRkYmM5Yjc1ZDFh
OGY3ZTAzOWVjMjkzNGFkNWFhZjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2ZpbHRlcnMvRkVUdXJidWxlbmNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRVR1cmJ1bGVuY2UuaApAQCAtMjYsNyArMjYsNiBAQAog
CiAjaW5jbHVkZSAiQ29sb3JDb21wb25lbnRzLmgiCiAjaW5jbHVkZSAiRmlsdGVyRWZmZWN0Lmgi
Ci0jaW5jbHVkZSAiRmlsdGVyLmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApAQCAtMzgsNyAr
MzcsNyBAQCBlbnVtIGNsYXNzIFR1cmJ1bGVuY2VUeXBlIHsKIAogY2xhc3MgRkVUdXJidWxlbmNl
IDogcHVibGljIEZpbHRlckVmZmVjdCB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFJlZjxGRVR1cmJ1
bGVuY2U+IGNyZWF0ZShGaWx0ZXImLCBUdXJidWxlbmNlVHlwZSwgZmxvYXQsIGZsb2F0LCBpbnQs
IGZsb2F0LCBib29sKTsKKyAgICBzdGF0aWMgUmVmPEZFVHVyYnVsZW5jZT4gY3JlYXRlKFR1cmJ1
bGVuY2VUeXBlLCBmbG9hdCBiYXNlRnJlcXVlbmN5WCwgZmxvYXQgYmFzZUZyZXF1ZW5jeVksIGlu
dCBudW1PY3RhdmVzLCBmbG9hdCBzZWVkLCBib29sIHN0aXRjaFRpbGVzKTsKIAogICAgIFR1cmJ1
bGVuY2VUeXBlIHR5cGUoKSBjb25zdCB7IHJldHVybiBtX3R5cGU7IH0KICAgICBib29sIHNldFR5
cGUoVHVyYnVsZW5jZVR5cGUpOwpAQCAtOTMsNyArOTIsOCBAQCBwcml2YXRlOgogICAgIH07CiAK
ICAgICBzdHJ1Y3QgRmlsbFJlZ2lvblBhcmFtZXRlcnMgewotICAgICAgICBGRVR1cmJ1bGVuY2Uq
IGZpbHRlcjsKKyAgICAgICAgY29uc3QgRmlsdGVyKiBmaWx0ZXI7CisgICAgICAgIEZFVHVyYnVs
ZW5jZSogZWZmZWN0OwogICAgICAgICBVaW50OENsYW1wZWRBcnJheSogcGl4ZWxBcnJheTsKICAg
ICAgICAgUGFpbnRpbmdEYXRhKiBwYWludGluZ0RhdGE7CiAgICAgICAgIFN0aXRjaERhdGEgc3Rp
dGNoRGF0YTsKQEAgLTEwMywxNyArMTAzLDE3IEBAIHByaXZhdGU6CiAKICAgICBzdGF0aWMgdm9p
ZCBmaWxsUmVnaW9uV29ya2VyKEZpbGxSZWdpb25QYXJhbWV0ZXJzKik7CiAKLSAgICBGRVR1cmJ1
bGVuY2UoRmlsdGVyJiwgVHVyYnVsZW5jZVR5cGUsIGZsb2F0LCBmbG9hdCwgaW50LCBmbG9hdCwg
Ym9vbCk7CisgICAgRkVUdXJidWxlbmNlKFR1cmJ1bGVuY2VUeXBlLCBmbG9hdCBiYXNlRnJlcXVl
bmN5WCwgZmxvYXQgYmFzZUZyZXF1ZW5jeVksIGludCBudW1PY3RhdmVzLCBmbG9hdCBzZWVkLCBi
b29sIHN0aXRjaFRpbGVzKTsKIAotICAgIHZvaWQgcGxhdGZvcm1BcHBseVNvZnR3YXJlKCkgb3Zl
cnJpZGU7Ci0gICAgdm9pZCBkZXRlcm1pbmVBYnNvbHV0ZVBhaW50UmVjdCgpIG92ZXJyaWRlIHsg
c2V0QWJzb2x1dGVQYWludFJlY3QoZW5jbG9zaW5nSW50UmVjdChtYXhFZmZlY3RSZWN0KCkpKTsg
fQorICAgIHZvaWQgZGV0ZXJtaW5lQWJzb2x1dGVQYWludFJlY3QoY29uc3QgRmlsdGVyJikgb3Zl
cnJpZGUgeyBzZXRBYnNvbHV0ZVBhaW50UmVjdChlbmNsb3NpbmdJbnRSZWN0KG1heEVmZmVjdFJl
Y3QoKSkpOyB9CisgICAgdm9pZCBwbGF0Zm9ybUFwcGx5U29mdHdhcmUoY29uc3QgRmlsdGVyJikg
b3ZlcnJpZGU7CiAgICAgV1RGOjpUZXh0U3RyZWFtJiBleHRlcm5hbFJlcHJlc2VudGF0aW9uKFdU
Rjo6VGV4dFN0cmVhbSYsIFJlcHJlc2VudGF0aW9uVHlwZSkgY29uc3Qgb3ZlcnJpZGU7CiAKICAg
ICB2b2lkIGluaXRQYWludChQYWludGluZ0RhdGEmKTsKICAgICBTdGl0Y2hEYXRhIGNvbXB1dGVT
dGl0Y2hpbmcoSW50U2l6ZSB0aWxlU2l6ZSwgZmxvYXQmIGJhc2VGcmVxdWVuY3lYLCBmbG9hdCYg
YmFzZUZyZXF1ZW5jeVkpIGNvbnN0OwogICAgIENvbG9yQ29tcG9uZW50czxmbG9hdCwgND4gbm9p
c2UyRChjb25zdCBQYWludGluZ0RhdGEmLCBjb25zdCBTdGl0Y2hEYXRhJiwgY29uc3QgRmxvYXRQ
b2ludCYpIGNvbnN0OwogICAgIENvbG9yQ29tcG9uZW50czx1aW50OF90LCA0PiBjYWxjdWxhdGVU
dXJidWxlbmNlVmFsdWVGb3JQb2ludChjb25zdCBQYWludGluZ0RhdGEmLCBTdGl0Y2hEYXRhLCBj
b25zdCBGbG9hdFBvaW50JikgY29uc3Q7Ci0gICAgdm9pZCBmaWxsUmVnaW9uKFVpbnQ4Q2xhbXBl
ZEFycmF5JiwgY29uc3QgUGFpbnRpbmdEYXRhJiwgU3RpdGNoRGF0YSwgaW50IHN0YXJ0WSwgaW50
IGVuZFkpIGNvbnN0OworICAgIHZvaWQgZmlsbFJlZ2lvbihjb25zdCBGaWx0ZXImLCBVaW50OENs
YW1wZWRBcnJheSYsIGNvbnN0IFBhaW50aW5nRGF0YSYsIFN0aXRjaERhdGEsIGludCBzdGFydFks
IGludCBlbmRZKSBjb25zdDsKIAogICAgIHN0YXRpYyB2b2lkIGZpbGxSZWdpb25Xb3JrZXIodm9p
ZCopOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0
ZXJzL0ZpbHRlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9G
aWx0ZXIuaAppbmRleCAxMjFhYWQ1Y2NhODM4MGQ3M2I5YWQyNjM2MDE1NWEyMTk0MjY2M2M3Li40
ZWM1Y2ZhYzljMzA0MGEyZmY1YTI3ZmRhYmExYzNiMGQxODlhZGYyIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZpbHRlci5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRmlsdGVyLmgKQEAgLTQzLDggKzQz
LDkgQEAgcHVibGljOgogICAgIHZvaWQgc2V0RmlsdGVyUmVnaW9uKGNvbnN0IEZsb2F0UmVjdCYg
ZmlsdGVyUmVnaW9uKSB7IG1fZmlsdGVyUmVnaW9uID0gZmlsdGVyUmVnaW9uOyB9CiAKICAgICB2
aXJ0dWFsIEZsb2F0U2l6ZSBzY2FsZWRCeUZpbHRlclNjYWxlKEZsb2F0U2l6ZSBzaXplKSBjb25z
dCB7IHJldHVybiBzaXplICogbV9maWx0ZXJTY2FsZTsgfQorICAgIHZpcnR1YWwgdm9pZCBhcHBs
eSgpID0gMDsKIAotICAgIEltYWdlQnVmZmVyKiBzb3VyY2VJbWFnZSgpIHsgcmV0dXJuIG1fc291
cmNlSW1hZ2UuZ2V0KCk7IH0KKyAgICBJbWFnZUJ1ZmZlciogc291cmNlSW1hZ2UoKSBjb25zdCB7
IHJldHVybiBtX3NvdXJjZUltYWdlLmdldCgpOyB9CiAgICAgdm9pZCBzZXRTb3VyY2VJbWFnZShS
ZWZQdHI8SW1hZ2VCdWZmZXI+JiYgc291cmNlSW1hZ2UpIHsgbV9zb3VyY2VJbWFnZSA9IFdURk1v
dmUoc291cmNlSW1hZ2UpOyB9CiAKICAgICBSZW5kZXJpbmdNb2RlIHJlbmRlcmluZ01vZGUoKSBj
b25zdCB7IHJldHVybiBtX3JlbmRlcmluZ01vZGU7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRmlsdGVyRWZmZWN0LmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRmlsdGVyRWZmZWN0LmNwcAppbmRleCA2
ZWZmYzhmMTdkZmJjNjU0ZDVlM2QyNzFkOTA2MzA0ZmMzNWQ2ZmZkLi4xYjdmMzQ1OGQ0Mzk4MTg5
NGI0MWFjNjJjYWI0YWMxM2E0ZTNhNzk3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZpbHRlckVmZmVjdC5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GaWx0ZXJFZmZlY3QuY3BwCkBAIC00NSwxMyAr
NDUsMTIgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1GaWx0ZXJFZmZlY3Q6OkZpbHRlckVm
ZmVjdChGaWx0ZXImIGZpbHRlciwgRmlsdGVyRWZmZWN0OjpUeXBlIHR5cGUpCitGaWx0ZXJFZmZl
Y3Q6OkZpbHRlckVmZmVjdChGaWx0ZXJFZmZlY3Q6OlR5cGUgdHlwZSkKICAgICA6IEZpbHRlckZ1
bmN0aW9uKHR5cGUpCi0gICAgLCBtX2ZpbHRlcihmaWx0ZXIpCiB7CiB9CiAKLXZvaWQgRmlsdGVy
RWZmZWN0OjpkZXRlcm1pbmVBYnNvbHV0ZVBhaW50UmVjdCgpCit2b2lkIEZpbHRlckVmZmVjdDo6
ZGV0ZXJtaW5lQWJzb2x1dGVQYWludFJlY3QoY29uc3QgRmlsdGVyJikKIHsKICAgICBtX2Fic29s
dXRlUGFpbnRSZWN0ID0gSW50UmVjdCgpOwogICAgIGZvciAoYXV0byYgZWZmZWN0IDogbV9pbnB1
dEVmZmVjdHMpCkBAIC05NCwyMiArOTMsMjIgQEAgRmxvYXRSZWN0IEZpbHRlckVmZmVjdDo6ZHJh
d2luZ1JlZ2lvbk9mSW5wdXRJbWFnZShjb25zdCBJbnRSZWN0JiBzcmNSZWN0KSBjb25zdAogICAg
IHJldHVybiB0cmFuc2Zvcm0ubWFwUmVjdChzcmNSZWN0KTsKIH0KIAotRmxvYXRSZWN0IEZpbHRl
ckVmZmVjdDo6ZGV0ZXJtaW5lRmlsdGVyUHJpbWl0aXZlU3VicmVnaW9uKCkKK0Zsb2F0UmVjdCBG
aWx0ZXJFZmZlY3Q6OmRldGVybWluZUZpbHRlclByaW1pdGl2ZVN1YnJlZ2lvbihjb25zdCBGaWx0
ZXImIGZpbHRlcikKIHsKICAgICAvLyBGRVRpbGUsIEZFVHVyYnVsZW5jZSwgRkVGbG9vZCBkb24n
dCBoYXZlIGlucHV0IGVmZmVjdHMsIHRha2UgdGhlIGZpbHRlciByZWdpb24gYXMgdW5pdGUgcmVj
dC4KICAgICBGbG9hdFJlY3Qgc3VicmVnaW9uOwogICAgIGlmICh1bnNpZ25lZCBudW1iZXJPZklu
cHV0RWZmZWN0cyA9IGlucHV0RWZmZWN0cygpLnNpemUoKSkgewotICAgICAgICBzdWJyZWdpb24g
PSBpbnB1dEVmZmVjdCgwKS0+ZGV0ZXJtaW5lRmlsdGVyUHJpbWl0aXZlU3VicmVnaW9uKCk7Cisg
ICAgICAgIHN1YnJlZ2lvbiA9IGlucHV0RWZmZWN0KDApLT5kZXRlcm1pbmVGaWx0ZXJQcmltaXRp
dmVTdWJyZWdpb24oZmlsdGVyKTsKICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMTsgaSA8IG51
bWJlck9mSW5wdXRFZmZlY3RzOyArK2kpIHsKLSAgICAgICAgICAgIGF1dG8gaW5wdXRQcmltaXRp
dmVTdWJyZWdpb24gPSBpbnB1dEVmZmVjdChpKS0+ZGV0ZXJtaW5lRmlsdGVyUHJpbWl0aXZlU3Vi
cmVnaW9uKCk7CisgICAgICAgICAgICBhdXRvIGlucHV0UHJpbWl0aXZlU3VicmVnaW9uID0gaW5w
dXRFZmZlY3QoaSktPmRldGVybWluZUZpbHRlclByaW1pdGl2ZVN1YnJlZ2lvbihmaWx0ZXIpOwog
ICAgICAgICAgICAgc3VicmVnaW9uLnVuaXRlKGlucHV0UHJpbWl0aXZlU3VicmVnaW9uKTsKICAg
ICAgICAgfQogICAgIH0gZWxzZQotICAgICAgICBzdWJyZWdpb24gPSBtX2ZpbHRlci5maWx0ZXJS
ZWdpb24oKTsKKyAgICAgICAgc3VicmVnaW9uID0gZmlsdGVyLmZpbHRlclJlZ2lvbigpOwogCiAg
ICAgLy8gQWZ0ZXIgY2FsbGluZyBkZXRlcm1pbmVGaWx0ZXJQcmltaXRpdmVTdWJyZWdpb24gb24g
dGhlIHRhcmdldCBlZmZlY3QsIHJlc2V0IHRoZSBzdWJyZWdpb24gYWdhaW4gZm9yIDxmZVRpbGU+
LgogICAgIGlmIChmaWx0ZXJUeXBlKCkgPT0gRmlsdGVyRWZmZWN0OjpUeXBlOjpGRVRpbGUpCi0g
ICAgICAgIHN1YnJlZ2lvbiA9IG1fZmlsdGVyLmZpbHRlclJlZ2lvbigpOworICAgICAgICBzdWJy
ZWdpb24gPSBmaWx0ZXIuZmlsdGVyUmVnaW9uKCk7CiAKICAgICBhdXRvIGJvdW5kYXJpZXMgPSBl
ZmZlY3RCb3VuZGFyaWVzKCk7CiAgICAgaWYgKGhhc1goKSkKQEAgLTEyNCwxMyArMTIzLDEzIEBA
IEZsb2F0UmVjdCBGaWx0ZXJFZmZlY3Q6OmRldGVybWluZUZpbHRlclByaW1pdGl2ZVN1YnJlZ2lv
bigpCiAgICAgc2V0RmlsdGVyUHJpbWl0aXZlU3VicmVnaW9uKHN1YnJlZ2lvbik7CiAKICAgICBh
dXRvIGFic29sdXRlU3VicmVnaW9uID0gc3VicmVnaW9uOwotICAgIGFic29sdXRlU3VicmVnaW9u
LnNjYWxlKG1fZmlsdGVyLmZpbHRlclNjYWxlKCkpOworICAgIGFic29sdXRlU3VicmVnaW9uLnNj
YWxlKGZpbHRlci5maWx0ZXJTY2FsZSgpKTsKICAgICAvLyBTYXZlIHRoaXMgYmVmb3JlIGNsaXBw
aW5nIHNvIHdlIGNhbiB1c2UgaXQgdG8gbWFwIGxpZ2h0aW5nIHBvaW50cyBmcm9tIHVzZXIgc3Bh
Y2UgdG8gYnVmZmVyIGNvb3JkaW5hdGVzLgogICAgIHNldFVuY2xpcHBlZEFic29sdXRlU3VicmVn
aW9uKGFic29sdXRlU3VicmVnaW9uKTsKIAogICAgIC8vIENsaXAgZXZlcnkgZmlsdGVyIGVmZmVj
dCB0byB0aGUgZmlsdGVyIHJlZ2lvbi4KLSAgICBhdXRvIGFic29sdXRlU2NhbGVkRmlsdGVyUmVn
aW9uID0gbV9maWx0ZXIuZmlsdGVyUmVnaW9uKCk7Ci0gICAgYWJzb2x1dGVTY2FsZWRGaWx0ZXJS
ZWdpb24uc2NhbGUobV9maWx0ZXIuZmlsdGVyU2NhbGUoKSk7CisgICAgYXV0byBhYnNvbHV0ZVNj
YWxlZEZpbHRlclJlZ2lvbiA9IGZpbHRlci5maWx0ZXJSZWdpb24oKTsKKyAgICBhYnNvbHV0ZVNj
YWxlZEZpbHRlclJlZ2lvbi5zY2FsZShmaWx0ZXIuZmlsdGVyU2NhbGUoKSk7CiAgICAgYWJzb2x1
dGVTdWJyZWdpb24uaW50ZXJzZWN0KGFic29sdXRlU2NhbGVkRmlsdGVyUmVnaW9uKTsKIAogICAg
IHNldE1heEVmZmVjdFJlY3QoYWJzb2x1dGVTdWJyZWdpb24pOwpAQCAtMTQzLDE0ICsxNDIsMTQg
QEAgRmlsdGVyRWZmZWN0KiBGaWx0ZXJFZmZlY3Q6OmlucHV0RWZmZWN0KHVuc2lnbmVkIG51bWJl
cikgY29uc3QKICAgICByZXR1cm4gbV9pbnB1dEVmZmVjdHMuYXQobnVtYmVyKS5nZXQoKTsKIH0K
IAotdm9pZCBGaWx0ZXJFZmZlY3Q6OmFwcGx5KCkKK3ZvaWQgRmlsdGVyRWZmZWN0OjphcHBseShj
b25zdCBGaWx0ZXImIGZpbHRlcikKIHsKICAgICBpZiAoaGFzUmVzdWx0KCkpCiAgICAgICAgIHJl
dHVybjsKICAgICB1bnNpZ25lZCBzaXplID0gbV9pbnB1dEVmZmVjdHMuc2l6ZSgpOwogICAgIGZv
ciAodW5zaWduZWQgaSA9IDA7IGkgPCBzaXplOyArK2kpIHsKICAgICAgICAgRmlsdGVyRWZmZWN0
KiBpbiA9IG1faW5wdXRFZmZlY3RzLmF0KGkpLmdldCgpOwotICAgICAgICBpbi0+YXBwbHkoKTsK
KyAgICAgICAgaW4tPmFwcGx5KGZpbHRlcik7CiAgICAgICAgIGlmICghaW4tPmhhc1Jlc3VsdCgp
KQogICAgICAgICAgICAgcmV0dXJuOwogCkBAIC0xNTgsMTAgKzE1NywxMCBAQCB2b2lkIEZpbHRl
ckVmZmVjdDo6YXBwbHkoKQogICAgICAgICB0cmFuc2Zvcm1SZXN1bHRDb2xvclNwYWNlKGluLCBp
KTsKICAgICB9CiAKLSAgICBkZXRlcm1pbmVBYnNvbHV0ZVBhaW50UmVjdCgpOworICAgIGRldGVy
bWluZUFic29sdXRlUGFpbnRSZWN0KGZpbHRlcik7CiAgICAgc2V0UmVzdWx0Q29sb3JTcGFjZSht
X29wZXJhdGluZ0NvbG9yU3BhY2UpOwogCi0gICAgTE9HX1dJVEhfU1RSRUFNKEZpbHRlcnMsIHN0
cmVhbSA8PCAiRmlsdGVyRWZmZWN0ICIgPDwgZmlsdGVyTmFtZSgpIDw8ICIgIiA8PCB0aGlzIDw8
ICIgYXBwbHkoKTpcbiAgZmlsdGVyUHJpbWl0aXZlU3VicmVnaW9uICIgPDwgbV9maWx0ZXJQcmlt
aXRpdmVTdWJyZWdpb24gPDwgIlxuICBlZmZlY3RCb3VuZGFyaWVzICIgPDwgbV9lZmZlY3RCb3Vu
ZGFyaWVzIDw8ICJcbiAgYWJzb2x1dGVVbmNsaXBwZWRTdWJyZWdpb24gIiA8PCBtX2Fic29sdXRl
VW5jbGlwcGVkU3VicmVnaW9uIDw8ICJcbiAgYWJzb2x1dGVQYWludFJlY3QgIiA8PCBtX2Fic29s
dXRlUGFpbnRSZWN0IDw8ICJcbiAgbWF4RWZmZWN0UmVjdCAiIDw8IG1fbWF4RWZmZWN0UmVjdCA8
PCAiXG4gIGZpbHRlciBzY2FsZSAiIDw8IG1fZmlsdGVyLmZpbHRlclNjYWxlKCkpOworICAgIExP
R19XSVRIX1NUUkVBTShGaWx0ZXJzLCBzdHJlYW0gPDwgIkZpbHRlckVmZmVjdCAiIDw8IGZpbHRl
ck5hbWUoKSA8PCAiICIgPDwgdGhpcyA8PCAiIGFwcGx5KCk6XG4gIGZpbHRlclByaW1pdGl2ZVN1
YnJlZ2lvbiAiIDw8IG1fZmlsdGVyUHJpbWl0aXZlU3VicmVnaW9uIDw8ICJcbiAgZWZmZWN0Qm91
bmRhcmllcyAiIDw8IG1fZWZmZWN0Qm91bmRhcmllcyA8PCAiXG4gIGFic29sdXRlVW5jbGlwcGVk
U3VicmVnaW9uICIgPDwgbV9hYnNvbHV0ZVVuY2xpcHBlZFN1YnJlZ2lvbiA8PCAiXG4gIGFic29s
dXRlUGFpbnRSZWN0ICIgPDwgbV9hYnNvbHV0ZVBhaW50UmVjdCA8PCAiXG4gIG1heEVmZmVjdFJl
Y3QgIiA8PCBtX21heEVmZmVjdFJlY3QgPDwgIlxuICBmaWx0ZXIgc2NhbGUgIiA8PCBmaWx0ZXIu
ZmlsdGVyU2NhbGUoKSk7CiAKICAgICBpZiAobV9hYnNvbHV0ZVBhaW50UmVjdC5pc0VtcHR5KCkg
fHwgSW1hZ2VCdWZmZXI6OnNpemVOZWVkc0NsYW1waW5nKG1fYWJzb2x1dGVQYWludFJlY3Quc2l6
ZSgpKSkKICAgICAgICAgcmV0dXJuOwpAQCAtMTcyLDcgKzE3MSw3IEBAIHZvaWQgRmlsdGVyRWZm
ZWN0OjphcHBseSgpCiAgICAgfQogICAgIAogICAgIC8vIEFkZCBwbGF0Zm9ybSBzcGVjaWZpYyBh
cHBseSBmdW5jdGlvbnMgaGVyZSBhbmQgcmV0dXJuIGVhcmxpZXIuCi0gICAgcGxhdGZvcm1BcHBs
eVNvZnR3YXJlKCk7CisgICAgcGxhdGZvcm1BcHBseVNvZnR3YXJlKGZpbHRlcik7CiB9CiAKIHZv
aWQgRmlsdGVyRWZmZWN0Ojpmb3JjZVZhbGlkUHJlTXVsdGlwbGllZFBpeGVscygpCkBAIC0yNTMs
NyArMjUyLDEwIEBAIEltYWdlQnVmZmVyKiBGaWx0ZXJFZmZlY3Q6OmltYWdlQnVmZmVyUmVzdWx0
KCkKICAgICBpZiAobV9pbWFnZUJ1ZmZlclJlc3VsdCkKICAgICAgICAgcmV0dXJuIG1faW1hZ2VC
dWZmZXJSZXN1bHQuZ2V0KCk7CiAKLSAgICBtX2ltYWdlQnVmZmVyUmVzdWx0ID0gSW1hZ2VCdWZm
ZXI6OmNyZWF0ZShtX2Fic29sdXRlUGFpbnRSZWN0LnNpemUoKSwgbV9maWx0ZXIucmVuZGVyaW5n
TW9kZSgpLCAxLCBtX3Jlc3VsdENvbG9yU3BhY2UsIFBpeGVsRm9ybWF0OjpCR1JBOCk7CisgICAg
Ly8gRklYTUU6IFJlc3BlY3QgdGhlIEZpbHRlcjo6cmVuZGVyaW5nTW9kZSgpIHdoZW4gY3JlYXRp
bmcgdGhlIGZpbHRlciBJbWFnZUJ1ZmZlciByZXN1bHQuCisgICAgLy8gRm9yIG5vdyBqdXN0IHBh
c3MgUmVuZGVyaW5nTW9kZTo6VW5hY2NlbGVyYXRlZC4gVGhpcyB3aWxsIG5vdCBiZSBhIGJlaGF2
aW9yIGNoYW5nZSBzaW5jZQorICAgIC8vIHRoaXMgaXMgd2hhdCB3ZSBkbyBmb3IgdGhlIHNvZnR3
YXJlIGZpbHRlciBjb2RlIHBhdGggYW55d2F5LgorICAgIG1faW1hZ2VCdWZmZXJSZXN1bHQgPSBJ
bWFnZUJ1ZmZlcjo6Y3JlYXRlKG1fYWJzb2x1dGVQYWludFJlY3Quc2l6ZSgpLCBSZW5kZXJpbmdN
b2RlOjpVbmFjY2VsZXJhdGVkLCAxLCBtX3Jlc3VsdENvbG9yU3BhY2UsIFBpeGVsRm9ybWF0OjpC
R1JBOCk7CiAgICAgaWYgKCFtX2ltYWdlQnVmZmVyUmVzdWx0KQogICAgICAgICByZXR1cm4gbnVs
bHB0cjsKIApAQCAtNDIyLDcgKzQyNCw3IEBAIHN0ZDo6b3B0aW9uYWw8UGl4ZWxCdWZmZXI+IEZp
bHRlckVmZmVjdDo6Y29udmVydFBpeGVsQnVmZmVyVG9Db2xvclNwYWNlKGNvbnN0IERlCiAgICAg
SW50UmVjdCBkZXN0aW5hdGlvblJlY3QoSW50UG9pbnQoKSwgcGl4ZWxCdWZmZXIuc2l6ZSgpKTsK
ICAgICBGbG9hdFNpemUgY2xhbXBlZFNpemUgPSBJbWFnZUJ1ZmZlcjo6Y2xhbXBlZFNpemUoZGVz
dGluYXRpb25SZWN0LnNpemUoKSk7CiAgICAgLy8gQ3JlYXRlIGFuIEltYWdlQnVmZmVyIHRvIHN0
b3JlIGluY29taW5nIFBpeGVsQnVmZmVyCi0gICAgYXV0byBidWZmZXIgPSBJbWFnZUJ1ZmZlcjo6
Y3JlYXRlKGNsYW1wZWRTaXplLCBtX2ZpbHRlci5yZW5kZXJpbmdNb2RlKCksIDEsIG9wZXJhdGlu
Z0NvbG9yU3BhY2UoKSwgUGl4ZWxGb3JtYXQ6OkJHUkE4KTsKKyAgICBhdXRvIGJ1ZmZlciA9IElt
YWdlQnVmZmVyOjpjcmVhdGUoY2xhbXBlZFNpemUsIFJlbmRlcmluZ01vZGU6OlVuYWNjZWxlcmF0
ZWQsIDEsIG9wZXJhdGluZ0NvbG9yU3BhY2UoKSwgUGl4ZWxGb3JtYXQ6OkJHUkE4KTsKICAgICBp
ZiAoIWJ1ZmZlcikKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICBidWZmZXItPnB1
dFBpeGVsQnVmZmVyKHBpeGVsQnVmZmVyLCBkZXN0aW5hdGlvblJlY3QpOwpAQCAtNDM2LDcgKzQz
OCw3IEBAIHN0ZDo6b3B0aW9uYWw8UGl4ZWxCdWZmZXI+IEZpbHRlckVmZmVjdDo6Y29udmVydElt
YWdlQnVmZmVyVG9Db2xvclNwYWNlKGNvbnN0IERlCiAgICAgRmxvYXRTaXplIGNsYW1wZWRTaXpl
ID0gSW1hZ2VCdWZmZXI6OmNsYW1wZWRTaXplKHJlY3Quc2l6ZSgpKTsKIAogICAgIC8vIENyZWF0
ZSBhbiBJbWFnZUJ1ZmZlciB3aXRoIHRoZSBjb3JyZWN0IGNvbG9yIHNwYWNlIGFuZCB1dGlsaXpl
IENHIHRvIGhhbmRsZSBjb2xvciBzcGFjZSBjb252ZXJzaW9uCi0gICAgYXV0byBjb252ZXJ0ZWRC
dWZmZXIgPSBJbWFnZUJ1ZmZlcjo6Y3JlYXRlKGNsYW1wZWRTaXplLCBtX2ZpbHRlci5yZW5kZXJp
bmdNb2RlKCksIDEsIHRhcmdldENvbG9yU3BhY2UsIFBpeGVsRm9ybWF0OjpCR1JBOCk7CisgICAg
YXV0byBjb252ZXJ0ZWRCdWZmZXIgPSBJbWFnZUJ1ZmZlcjo6Y3JlYXRlKGNsYW1wZWRTaXplLCBS
ZW5kZXJpbmdNb2RlOjpVbmFjY2VsZXJhdGVkLCAxLCB0YXJnZXRDb2xvclNwYWNlLCBQaXhlbEZv
cm1hdDo6QkdSQTgpOwogICAgIGlmICghY29udmVydGVkQnVmZmVyKQogICAgICAgICByZXR1cm4g
c3RkOjpudWxsb3B0OwogCkBAIC01NTMsNyArNTU1LDcgQEAgSW1hZ2VCdWZmZXIqIEZpbHRlckVm
ZmVjdDo6Y3JlYXRlSW1hZ2VCdWZmZXJSZXN1bHQoKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsK
IAogICAgIEZsb2F0U2l6ZSBjbGFtcGVkU2l6ZSA9IEltYWdlQnVmZmVyOjpjbGFtcGVkU2l6ZSht
X2Fic29sdXRlUGFpbnRSZWN0LnNpemUoKSk7Ci0gICAgbV9pbWFnZUJ1ZmZlclJlc3VsdCA9IElt
YWdlQnVmZmVyOjpjcmVhdGUoY2xhbXBlZFNpemUsIG1fZmlsdGVyLnJlbmRlcmluZ01vZGUoKSwg
MSwgbV9yZXN1bHRDb2xvclNwYWNlLCBQaXhlbEZvcm1hdDo6QkdSQTgpOworICAgIG1faW1hZ2VC
dWZmZXJSZXN1bHQgPSBJbWFnZUJ1ZmZlcjo6Y3JlYXRlKGNsYW1wZWRTaXplLCBSZW5kZXJpbmdN
b2RlOjpVbmFjY2VsZXJhdGVkLCAxLCBtX3Jlc3VsdENvbG9yU3BhY2UsIFBpeGVsRm9ybWF0OjpC
R1JBOCk7CiAgICAgcmV0dXJuIG1faW1hZ2VCdWZmZXJSZXN1bHQuZ2V0KCk7CiB9CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRmlsdGVyRWZm
ZWN0LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZpbHRlckVm
ZmVjdC5oCmluZGV4IDY2NzYwMGQzMDJjOGZjOWI1YThmNGYxZmM4ZjBjNTY5Y2JlMmE3YjIuLjky
OGJjYjQ4Y2QyMTllYjFlZTQ1Mjk3YjU5NzRiYjYzZTA5N2U5NWUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRmlsdGVyRWZmZWN0LmgKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GaWx0ZXJFZmZlY3QuaApA
QCAtNzIsNyArNzIsNyBAQCBwdWJsaWM6CiAgICAgSW50UmVjdCByZXF1ZXN0ZWRSZWdpb25PZklu
cHV0UGl4ZWxCdWZmZXIoY29uc3QgSW50UmVjdCYpIGNvbnN0OwogICAgIAogICAgIC8vIFJlY3Vy
c2VzIG9uIGlucHV0cy4KLSAgICBGbG9hdFJlY3QgZGV0ZXJtaW5lRmlsdGVyUHJpbWl0aXZlU3Vi
cmVnaW9uKCk7CisgICAgRmxvYXRSZWN0IGRldGVybWluZUZpbHRlclByaW1pdGl2ZVN1YnJlZ2lv
bihjb25zdCBGaWx0ZXImKTsKIAogICAgIC8vIFNvbGlkIGJsYWNrIGltYWdlIHdpdGggZGlmZmVy
ZW50IGFscGhhIHZhbHVlcy4KICAgICBib29sIGlzQWxwaGFJbWFnZSgpIGNvbnN0IHsgcmV0dXJu
IG1fYWxwaGFJbWFnZTsgfQpAQCAtODQsMTQgKzg0LDE0IEBAIHB1YmxpYzoKICAgICBGbG9hdFJl
Y3QgbWF4RWZmZWN0UmVjdCgpIGNvbnN0IHsgcmV0dXJuIG1fbWF4RWZmZWN0UmVjdDsgfQogICAg
IHZvaWQgc2V0TWF4RWZmZWN0UmVjdChjb25zdCBGbG9hdFJlY3QmIG1heEVmZmVjdFJlY3QpIHsg
bV9tYXhFZmZlY3RSZWN0ID0gbWF4RWZmZWN0UmVjdDsgfQogCi0gICAgdm9pZCBhcHBseSgpOwor
ICAgIHZvaWQgYXBwbHkoY29uc3QgRmlsdGVyJik7CiAKICAgICAvLyBDb3JyZWN0IGFueSBpbnZh
bGlkIHBpeGVscywgaWYgbmVjZXNzYXJ5LCBpbiB0aGUgcmVzdWx0IG9mIGEgZmlsdGVyIG9wZXJh
dGlvbi4KICAgICAvLyBUaGlzIG1ldGhvZCBpcyB1c2VkIHRvIGVuc3VyZSB2YWxpZCBwaXhlbCB2
YWx1ZXMgb24gZmlsdGVyIGlucHV0cyBhbmQgdGhlIGZpbmFsIHJlc3VsdC4KICAgICAvLyBPbmx5
IHRoZSBhcml0aG1ldGljIGNvbXBvc2l0ZSBmaWx0ZXIgZXZlciBuZWVkcyB0byBwZXJmb3JtIGNv
cnJlY3Rpb24uCiAgICAgdmlydHVhbCB2b2lkIGNvcnJlY3RGaWx0ZXJSZXN1bHRJZk5lZWRlZCgp
IHsgfQogCi0gICAgdmlydHVhbCB2b2lkIGRldGVybWluZUFic29sdXRlUGFpbnRSZWN0KCk7Cisg
ICAgdmlydHVhbCB2b2lkIGRldGVybWluZUFic29sdXRlUGFpbnRSZWN0KGNvbnN0IEZpbHRlciYp
OwogCiAgICAgZW51bSBjbGFzcyBSZXByZXNlbnRhdGlvblR5cGUgeyBUZXN0T3V0cHV0LCBEZWJ1
Z2dpbmcgfTsKICAgICB2aXJ0dWFsIFdURjo6VGV4dFN0cmVhbSYgZXh0ZXJuYWxSZXByZXNlbnRh
dGlvbihXVEY6OlRleHRTdHJlYW0mLCBSZXByZXNlbnRhdGlvblR5cGUgPSBSZXByZXNlbnRhdGlv
blR5cGU6OlRlc3RPdXRwdXQpIGNvbnN0OwpAQCAtMTIwLDkgKzEyMCw2IEBAIHB1YmxpYzoKICAg
ICAKICAgICBGbG9hdFBvaW50IG1hcFBvaW50RnJvbVVzZXJTcGFjZVRvQnVmZmVyKEZsb2F0UG9p
bnQpIGNvbnN0OwogICAgIAotICAgIEZpbHRlciYgZmlsdGVyKCkgeyByZXR1cm4gbV9maWx0ZXI7
IH0KLSAgICBjb25zdCBGaWx0ZXImIGZpbHRlcigpIGNvbnN0IHsgcmV0dXJuIG1fZmlsdGVyOyB9
Ci0KICAgICBib29sIGNsaXBzVG9Cb3VuZHMoKSBjb25zdCB7IHJldHVybiBtX2NsaXBzVG9Cb3Vu
ZHM7IH0KICAgICB2b2lkIHNldENsaXBzVG9Cb3VuZHMoYm9vbCB2YWx1ZSkgeyBtX2NsaXBzVG9C
b3VuZHMgPSB2YWx1ZTsgfQogCkBAIC0xNDMsNyArMTQwLDcgQEAgcHVibGljOgogICAgIH0KIAog
cHJvdGVjdGVkOgotICAgIEZpbHRlckVmZmVjdChGaWx0ZXImLCBUeXBlKTsKKyAgICBGaWx0ZXJF
ZmZlY3QoVHlwZSk7CiAgICAgCiAgICAgSW1hZ2VCdWZmZXIqIGNyZWF0ZUltYWdlQnVmZmVyUmVz
dWx0KCk7CiAgICAgc3RkOjpvcHRpb25hbDxQaXhlbEJ1ZmZlcj4mIGNyZWF0ZVVubXVsdGlwbGll
ZEltYWdlUmVzdWx0KCk7CkBAIC0xNTksNyArMTU2LDcgQEAgcHJvdGVjdGVkOgogICAgIHZvaWQg
Y2xpcEFic29sdXRlUGFpbnRSZWN0KCk7CiAKIHByaXZhdGU6Ci0gICAgdmlydHVhbCB2b2lkIHBs
YXRmb3JtQXBwbHlTb2Z0d2FyZSgpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgcGxhdGZvcm1BcHBs
eVNvZnR3YXJlKGNvbnN0IEZpbHRlciYpID0gMDsKIAogICAgIHZvaWQgY29weUltYWdlQnl0ZXMo
Y29uc3QgVWludDhDbGFtcGVkQXJyYXkmIHNvdXJjZSwgVWludDhDbGFtcGVkQXJyYXkmIGRlc3Rp
bmF0aW9uLCBjb25zdCBJbnRSZWN0JikgY29uc3Q7CiAgICAgdm9pZCBjb3B5Q29udmVydGVkSW1h
Z2VCdWZmZXJUb0Rlc3RpbmF0aW9uKFVpbnQ4Q2xhbXBlZEFycmF5JiwgY29uc3QgRGVzdGluYXRp
b25Db2xvclNwYWNlJiwgQWxwaGFQcmVtdWx0aXBsaWNhdGlvbiwgY29uc3QgSW50UmVjdCYpOwpA
QCAtMTY4LDggKzE2NSw2IEBAIHByaXZhdGU6CiAgICAgc3RkOjpvcHRpb25hbDxQaXhlbEJ1ZmZl
cj4gY29udmVydEltYWdlQnVmZmVyVG9Db2xvclNwYWNlKGNvbnN0IERlc3RpbmF0aW9uQ29sb3JT
cGFjZSYsIEltYWdlQnVmZmVyJiwgY29uc3QgSW50UmVjdCYsIEFscGhhUHJlbXVsdGlwbGljYXRp
b24pOwogICAgIHN0ZDo6b3B0aW9uYWw8UGl4ZWxCdWZmZXI+IGNvbnZlcnRQaXhlbEJ1ZmZlclRv
Q29sb3JTcGFjZShjb25zdCBEZXN0aW5hdGlvbkNvbG9yU3BhY2UmLCBQaXhlbEJ1ZmZlciYpOwog
ICAgIAotCi0gICAgRmlsdGVyJiBtX2ZpbHRlcjsKICAgICBGaWx0ZXJFZmZlY3RWZWN0b3IgbV9p
bnB1dEVmZmVjdHM7CiAKICAgICBSZWZQdHI8SW1hZ2VCdWZmZXI+IG1faW1hZ2VCdWZmZXJSZXN1
bHQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJz
L0ZpbHRlckVmZmVjdFJlbmRlcmVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9maWx0ZXJzL0ZpbHRlckVmZmVjdFJlbmRlcmVyLmgKaW5kZXggNTZiZTI0NzM2MWY1M2IzYzA5
ZWNiNTcxMzIyYjc1YTc1NzNlOWNjNC4uNTljZjdkZmUzNDM2MTFmYjFhNmYyNjUyZjY2MGI2YzBi
ODE5MDU3YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmls
dGVycy9GaWx0ZXJFZmZlY3RSZW5kZXJlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2ZpbHRlcnMvRmlsdGVyRWZmZWN0UmVuZGVyZXIuaApAQCAtMzYsNyArMzYsNyBA
QCBjbGFzcyBGaWx0ZXJFZmZlY3RSZW5kZXJlciB7CiAgICAgCiBwdWJsaWM6CiAgICAgc3RhdGlj
IHN0ZDo6dW5pcXVlX3B0cjxGaWx0ZXJFZmZlY3RSZW5kZXJlcj4gdHJ5Q3JlYXRlKGJvb2wsIEZp
bHRlckVmZmVjdCYpOwotICAgIHZpcnR1YWwgdm9pZCBhcHBseUVmZmVjdHMoRmlsdGVyRWZmZWN0
JikgPSAwOworICAgIHZpcnR1YWwgdm9pZCBhcHBseUVmZmVjdHMoY29uc3QgRmlsdGVyJiwgRmls
dGVyRWZmZWN0JikgPSAwOwogICAgIHZpcnR1YWwgYm9vbCBoYXNSZXN1bHQoKSBjb25zdCA9IDA7
CiAgICAgdmlydHVhbCBJbWFnZUJ1ZmZlciogb3V0cHV0KCkgY29uc3QgPSAwOwogICAgIHZpcnR1
YWwgRmxvYXRSZWN0IGRlc3RSZWN0KGNvbnN0IEZpbHRlckVmZmVjdCYpIGNvbnN0ID0gMDsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvU291cmNl
QWxwaGEuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9Tb3Vy
Y2VBbHBoYS5jcHAKaW5kZXggOTk2OTQzNzI1NzkzZTk5NjQ2ZmMzZTViMjJhZDE1MWZiZGZkZTlj
YS4uZTEwNGE4ZDIwODYwZWY4MDI5YWY3M2FlOTEzYTk0N2VlMWNlNjg3YSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9Tb3VyY2VBbHBoYS5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9Tb3VyY2VBbHBo
YS5jcHAKQEAgLTMzLDE5ICszMywxOSBAQCBSZWY8U291cmNlQWxwaGE+IFNvdXJjZUFscGhhOjpj
cmVhdGUoRmlsdGVyRWZmZWN0JiBzb3VyY2VFZmZlY3QpCiB9CiAKIFNvdXJjZUFscGhhOjpTb3Vy
Y2VBbHBoYShGaWx0ZXJFZmZlY3QmIHNvdXJjZUVmZmVjdCkKLSAgICA6IEZpbHRlckVmZmVjdChz
b3VyY2VFZmZlY3QuZmlsdGVyKCksIEZpbHRlckVmZmVjdDo6VHlwZTo6U291cmNlQWxwaGEpCisg
ICAgOiBGaWx0ZXJFZmZlY3QoRmlsdGVyRWZmZWN0OjpUeXBlOjpTb3VyY2VBbHBoYSkKIHsKICAg
ICBzZXRPcGVyYXRpbmdDb2xvclNwYWNlKHNvdXJjZUVmZmVjdC5vcGVyYXRpbmdDb2xvclNwYWNl
KCkpOwogICAgIGlucHV0RWZmZWN0cygpLmFwcGVuZCgmc291cmNlRWZmZWN0KTsKIH0KIAotdm9p
ZCBTb3VyY2VBbHBoYTo6ZGV0ZXJtaW5lQWJzb2x1dGVQYWludFJlY3QoKQordm9pZCBTb3VyY2VB
bHBoYTo6ZGV0ZXJtaW5lQWJzb2x1dGVQYWludFJlY3QoY29uc3QgRmlsdGVyJiBmaWx0ZXIpCiB7
Ci0gICAgaW5wdXRFZmZlY3QoMCktPmRldGVybWluZUFic29sdXRlUGFpbnRSZWN0KCk7CisgICAg
aW5wdXRFZmZlY3QoMCktPmRldGVybWluZUFic29sdXRlUGFpbnRSZWN0KGZpbHRlcik7CiAgICAg
c2V0QWJzb2x1dGVQYWludFJlY3QoaW5wdXRFZmZlY3QoMCktPmFic29sdXRlUGFpbnRSZWN0KCkp
OwogfQogCi12b2lkIFNvdXJjZUFscGhhOjpwbGF0Zm9ybUFwcGx5U29mdHdhcmUoKQordm9pZCBT
b3VyY2VBbHBoYTo6cGxhdGZvcm1BcHBseVNvZnR3YXJlKGNvbnN0IEZpbHRlciYpCiB7CiAgICAg
SW1hZ2VCdWZmZXIqIHJlc3VsdEltYWdlID0gY3JlYXRlSW1hZ2VCdWZmZXJSZXN1bHQoKTsKICAg
ICBpZiAoIXJlc3VsdEltYWdlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvZmlsdGVycy9Tb3VyY2VBbHBoYS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvZmlsdGVycy9Tb3VyY2VBbHBoYS5oCmluZGV4IDRiYmRlMDdmNzhlMzVkMjViNGY0
ZDQ5YzZiNjI1ZjFlMTAyYTU0MzIuLjhkYTZmZmRiZDIwMWQ0NjkyMThmOTM3MjAxNzk4NjYzYTBm
OTNmYTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRl
cnMvU291cmNlQWxwaGEuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9m
aWx0ZXJzL1NvdXJjZUFscGhhLmgKQEAgLTMyLDggKzMyLDEwIEBAIHB1YmxpYzoKIHByaXZhdGU6
CiAgICAgZXhwbGljaXQgU291cmNlQWxwaGEoRmlsdGVyRWZmZWN0Jik7CiAKLSAgICB2b2lkIHBs
YXRmb3JtQXBwbHlTb2Z0d2FyZSgpIG92ZXJyaWRlOwotICAgIHZvaWQgZGV0ZXJtaW5lQWJzb2x1
dGVQYWludFJlY3QoKSBvdmVycmlkZTsKKyAgICB2b2lkIGRldGVybWluZUFic29sdXRlUGFpbnRS
ZWN0KGNvbnN0IEZpbHRlciYpIG92ZXJyaWRlOworCisgICAgdm9pZCBwbGF0Zm9ybUFwcGx5U29m
dHdhcmUoY29uc3QgRmlsdGVyJikgb3ZlcnJpZGU7CisKICAgICBXVEY6OlRleHRTdHJlYW0mIGV4
dGVybmFsUmVwcmVzZW50YXRpb24oV1RGOjpUZXh0U3RyZWFtJiwgUmVwcmVzZW50YXRpb25UeXBl
KSBjb25zdCBvdmVycmlkZTsKIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2ZpbHRlcnMvU291cmNlR3JhcGhpYy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL1NvdXJjZUdyYXBoaWMuY3BwCmluZGV4IGUxMjNkY2Q4
ZmYyMWRkYzc3MzNlNTdlNTE1ZWYzMTFlN2M5MDE1ODAuLjRhOGEyNzQ4YmRlOWMxMzU5ZTU5NDVk
ODEwZTRjMGNjNjZiODBiMzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2ZpbHRlcnMvU291cmNlR3JhcGhpYy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9Tb3VyY2VHcmFwaGljLmNwcApAQCAtMjYsMjIgKzI2LDI1
IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotUmVmPFNvdXJjZUdyYXBoaWM+IFNvdXJjZUdy
YXBoaWM6OmNyZWF0ZShGaWx0ZXImIGZpbHRlcikKK1JlZjxTb3VyY2VHcmFwaGljPiBTb3VyY2VH
cmFwaGljOjpjcmVhdGUoKQogewotICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFNvdXJjZUdyYXBo
aWMoZmlsdGVyKSk7CisgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgU291cmNlR3JhcGhpYygpKTsK
IH0KIAotdm9pZCBTb3VyY2VHcmFwaGljOjpkZXRlcm1pbmVBYnNvbHV0ZVBhaW50UmVjdCgpCitT
b3VyY2VHcmFwaGljOjpTb3VyY2VHcmFwaGljKCkKKyAgICA6IEZpbHRlckVmZmVjdChGaWx0ZXJF
ZmZlY3Q6OlR5cGU6OlNvdXJjZUdyYXBoaWMpCit7CisgICAgc2V0T3BlcmF0aW5nQ29sb3JTcGFj
ZShEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0IoKSk7Cit9CisKK3ZvaWQgU291cmNlR3JhcGhp
Yzo6ZGV0ZXJtaW5lQWJzb2x1dGVQYWludFJlY3QoY29uc3QgRmlsdGVyJiBmaWx0ZXIpCiB7Ci0g
ICAgRmlsdGVyJiBmaWx0ZXIgPSB0aGlzLT5maWx0ZXIoKTsKICAgICBGbG9hdFJlY3QgcGFpbnRS
ZWN0ID0gZmlsdGVyLnNvdXJjZUltYWdlUmVjdCgpOwogICAgIHNldEFic29sdXRlUGFpbnRSZWN0
KGVuY2xvc2luZ0ludFJlY3QocGFpbnRSZWN0KSk7CiB9CiAKLXZvaWQgU291cmNlR3JhcGhpYzo6
cGxhdGZvcm1BcHBseVNvZnR3YXJlKCkKK3ZvaWQgU291cmNlR3JhcGhpYzo6cGxhdGZvcm1BcHBs
eVNvZnR3YXJlKGNvbnN0IEZpbHRlciYgZmlsdGVyKQogewotICAgIEZpbHRlciYgZmlsdGVyID0g
dGhpcy0+ZmlsdGVyKCk7Ci0KICAgICBJbWFnZUJ1ZmZlciogcmVzdWx0SW1hZ2UgPSBjcmVhdGVJ
bWFnZUJ1ZmZlclJlc3VsdCgpOwogICAgIEltYWdlQnVmZmVyKiBzb3VyY2VJbWFnZSA9IGZpbHRl
ci5zb3VyY2VJbWFnZSgpOwogICAgIGlmICghcmVzdWx0SW1hZ2UgfHwgIXNvdXJjZUltYWdlKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9Tb3Vy
Y2VHcmFwaGljLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL1Nv
dXJjZUdyYXBoaWMuaAppbmRleCA1ZjhiY2UxYjQ4ODY3NDY2MWUyOWMzYjhhMzk2Yjc1OGRiNDY0
M2FiLi44NzIxMGIyY2YxNjJhMjZiNDhhMWUwNDkyNzJlNjI2YTQzYzY0ZjdmIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL1NvdXJjZUdyYXBoaWMu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL1NvdXJjZUdy
YXBoaWMuaApAQCAtMjYsMTkgKzI2LDE3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3Mg
U291cmNlR3JhcGhpYyA6IHB1YmxpYyBGaWx0ZXJFZmZlY3QgewogcHVibGljOiAgICAgICAgCi0g
ICAgc3RhdGljIFJlZjxTb3VyY2VHcmFwaGljPiBjcmVhdGUoRmlsdGVyJik7CisgICAgc3RhdGlj
IFJlZjxTb3VyY2VHcmFwaGljPiBjcmVhdGUoKTsKIAogICAgIHN0YXRpYyBBdG9tU3RyaW5nIGVm
ZmVjdE5hbWUoKSB7IHJldHVybiBGaWx0ZXJFZmZlY3Q6OnNvdXJjZUdyYXBoaWNOYW1lKCk7IH0K
IAogcHJpdmF0ZToKLSAgICBTb3VyY2VHcmFwaGljKEZpbHRlciYgZmlsdGVyKQotICAgICAgICA6
IEZpbHRlckVmZmVjdChmaWx0ZXIsIEZpbHRlckVmZmVjdDo6VHlwZTo6U291cmNlR3JhcGhpYykK
LSAgICB7Ci0gICAgICAgIHNldE9wZXJhdGluZ0NvbG9yU3BhY2UoRGVzdGluYXRpb25Db2xvclNw
YWNlOjpTUkdCKCkpOwotICAgIH0KLQotICAgIHZvaWQgZGV0ZXJtaW5lQWJzb2x1dGVQYWludFJl
Y3QoKSBvdmVycmlkZTsKLSAgICB2b2lkIHBsYXRmb3JtQXBwbHlTb2Z0d2FyZSgpIG92ZXJyaWRl
OworICAgIFNvdXJjZUdyYXBoaWMoKTsKKworICAgIHZvaWQgZGV0ZXJtaW5lQWJzb2x1dGVQYWlu
dFJlY3QoY29uc3QgRmlsdGVyJikgb3ZlcnJpZGU7CisKKyAgICB2b2lkIHBsYXRmb3JtQXBwbHlT
b2Z0d2FyZShjb25zdCBGaWx0ZXImKSBvdmVycmlkZTsKKwogICAgIFdURjo6VGV4dFN0cmVhbSYg
ZXh0ZXJuYWxSZXByZXNlbnRhdGlvbihXVEY6OlRleHRTdHJlYW0mLCBSZXByZXNlbnRhdGlvblR5
cGUpIGNvbnN0IG92ZXJyaWRlOwogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL0NTU0ZpbHRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvQ1NTRmlsdGVy
LmNwcAppbmRleCAxY2EwYTA5MzQzODE3YjEzN2YxOWYxNTZlZGM0NGI5MDk1ODU5M2Q4Li5iMjM2
N2ZlMTc0YjA1MTdjYTNhOGU5Y2QxNmZmN2JlZTc5ZWVkNjEyIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvQ1NTRmlsdGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvQ1NTRmlsdGVyLmNwcApAQCAtNjgsMTMgKzY4LDEzIEBAIENTU0ZpbHRlcjo6Q1NTRmls
dGVyKGJvb2wgaGFzRmlsdGVyVGhhdE1vdmVzUGl4ZWxzLCBib29sIGhhc0ZpbHRlclRoYXRTaG91
bGRCZVJlCiB7CiB9CiAKLXN0YXRpYyBSZWZQdHI8RmlsdGVyRWZmZWN0PiBjcmVhdGVCbHVyRWZm
ZWN0KENTU0ZpbHRlciYgZmlsdGVyLCBjb25zdCBCbHVyRmlsdGVyT3BlcmF0aW9uJiBibHVyT3Bl
cmF0aW9uLCBGaWx0ZXJDb25zdW1lciBjb25zdW1lcikKK3N0YXRpYyBSZWZQdHI8RmlsdGVyRWZm
ZWN0PiBjcmVhdGVCbHVyRWZmZWN0KGNvbnN0IEJsdXJGaWx0ZXJPcGVyYXRpb24mIGJsdXJPcGVy
YXRpb24sIEZpbHRlckNvbnN1bWVyIGNvbnN1bWVyKQogewogICAgIGZsb2F0IHN0ZERldmlhdGlv
biA9IGZsb2F0VmFsdWVGb3JMZW5ndGgoYmx1ck9wZXJhdGlvbi5zdGREZXZpYXRpb24oKSwgMCk7
Ci0gICAgcmV0dXJuIEZFR2F1c3NpYW5CbHVyOjpjcmVhdGUoZmlsdGVyLCBzdGREZXZpYXRpb24s
IHN0ZERldmlhdGlvbiwgY29uc3VtZXIgPT0gRmlsdGVyQ29uc3VtZXI6OkZpbHRlclByb3BlcnR5
ID8gRURHRU1PREVfTk9ORSA6IEVER0VNT0RFX0RVUExJQ0FURSk7CisgICAgcmV0dXJuIEZFR2F1
c3NpYW5CbHVyOjpjcmVhdGUoc3RkRGV2aWF0aW9uLCBzdGREZXZpYXRpb24sIGNvbnN1bWVyID09
IEZpbHRlckNvbnN1bWVyOjpGaWx0ZXJQcm9wZXJ0eSA/IEVER0VNT0RFX05PTkUgOiBFREdFTU9E
RV9EVVBMSUNBVEUpOwogfQogCi1zdGF0aWMgUmVmUHRyPEZpbHRlckVmZmVjdD4gY3JlYXRlQnJp
Z2h0bmVzc0VmZmVjdChDU1NGaWx0ZXImIGZpbHRlciwgY29uc3QgQmFzaWNDb21wb25lbnRUcmFu
c2ZlckZpbHRlck9wZXJhdGlvbiYgY29tcG9uZW50VHJhbnNmZXJPcGVyYXRpb24pCitzdGF0aWMg
UmVmUHRyPEZpbHRlckVmZmVjdD4gY3JlYXRlQnJpZ2h0bmVzc0VmZmVjdChjb25zdCBCYXNpY0Nv
bXBvbmVudFRyYW5zZmVyRmlsdGVyT3BlcmF0aW9uJiBjb21wb25lbnRUcmFuc2Zlck9wZXJhdGlv
bikKIHsKICAgICBDb21wb25lbnRUcmFuc2ZlckZ1bmN0aW9uIHRyYW5zZmVyRnVuY3Rpb247CiAg
ICAgdHJhbnNmZXJGdW5jdGlvbi50eXBlID0gRkVDT01QT05FTlRUUkFOU0ZFUl9UWVBFX0xJTkVB
UjsKQEAgLTgyLDEwICs4MiwxMCBAQCBzdGF0aWMgUmVmUHRyPEZpbHRlckVmZmVjdD4gY3JlYXRl
QnJpZ2h0bmVzc0VmZmVjdChDU1NGaWx0ZXImIGZpbHRlciwgY29uc3QgQmFzaQogICAgIHRyYW5z
ZmVyRnVuY3Rpb24uaW50ZXJjZXB0ID0gMDsKIAogICAgIENvbXBvbmVudFRyYW5zZmVyRnVuY3Rp
b24gbnVsbEZ1bmN0aW9uOwotICAgIHJldHVybiBGRUNvbXBvbmVudFRyYW5zZmVyOjpjcmVhdGUo
ZmlsdGVyLCB0cmFuc2ZlckZ1bmN0aW9uLCB0cmFuc2ZlckZ1bmN0aW9uLCB0cmFuc2ZlckZ1bmN0
aW9uLCBudWxsRnVuY3Rpb24pOworICAgIHJldHVybiBGRUNvbXBvbmVudFRyYW5zZmVyOjpjcmVh
dGUodHJhbnNmZXJGdW5jdGlvbiwgdHJhbnNmZXJGdW5jdGlvbiwgdHJhbnNmZXJGdW5jdGlvbiwg
bnVsbEZ1bmN0aW9uKTsKIH0KIAotc3RhdGljIFJlZlB0cjxGaWx0ZXJFZmZlY3Q+IGNyZWF0ZUNv
bnRyYXN0RWZmZWN0KENTU0ZpbHRlciYgZmlsdGVyLCBjb25zdCBCYXNpY0NvbXBvbmVudFRyYW5z
ZmVyRmlsdGVyT3BlcmF0aW9uJiBjb21wb25lbnRUcmFuc2Zlck9wZXJhdGlvbikKK3N0YXRpYyBS
ZWZQdHI8RmlsdGVyRWZmZWN0PiBjcmVhdGVDb250cmFzdEVmZmVjdChjb25zdCBCYXNpY0NvbXBv
bmVudFRyYW5zZmVyRmlsdGVyT3BlcmF0aW9uJiBjb21wb25lbnRUcmFuc2Zlck9wZXJhdGlvbikK
IHsKICAgICBDb21wb25lbnRUcmFuc2ZlckZ1bmN0aW9uIHRyYW5zZmVyRnVuY3Rpb247CiAgICAg
dHJhbnNmZXJGdW5jdGlvbi50eXBlID0gRkVDT01QT05FTlRUUkFOU0ZFUl9UWVBFX0xJTkVBUjsK
QEAgLTk0LDE2ICs5NCwxNiBAQCBzdGF0aWMgUmVmUHRyPEZpbHRlckVmZmVjdD4gY3JlYXRlQ29u
dHJhc3RFZmZlY3QoQ1NTRmlsdGVyJiBmaWx0ZXIsIGNvbnN0IEJhc2ljQwogICAgIHRyYW5zZmVy
RnVuY3Rpb24uaW50ZXJjZXB0ID0gLTAuNSAqIGFtb3VudCArIDAuNTsKIAogICAgIENvbXBvbmVu
dFRyYW5zZmVyRnVuY3Rpb24gbnVsbEZ1bmN0aW9uOwotICAgIHJldHVybiBGRUNvbXBvbmVudFRy
YW5zZmVyOjpjcmVhdGUoZmlsdGVyLCB0cmFuc2ZlckZ1bmN0aW9uLCB0cmFuc2ZlckZ1bmN0aW9u
LCB0cmFuc2ZlckZ1bmN0aW9uLCBudWxsRnVuY3Rpb24pOworICAgIHJldHVybiBGRUNvbXBvbmVu
dFRyYW5zZmVyOjpjcmVhdGUodHJhbnNmZXJGdW5jdGlvbiwgdHJhbnNmZXJGdW5jdGlvbiwgdHJh
bnNmZXJGdW5jdGlvbiwgbnVsbEZ1bmN0aW9uKTsKIH0KIAotc3RhdGljIFJlZlB0cjxGaWx0ZXJF
ZmZlY3Q+IGNyZWF0ZURyb3BTaGFkb3dFZmZlY3QoQ1NTRmlsdGVyJiBmaWx0ZXIsIGNvbnN0IERy
b3BTaGFkb3dGaWx0ZXJPcGVyYXRpb24mIGRyb3BTaGFkb3dPcGVyYXRpb24pCitzdGF0aWMgUmVm
UHRyPEZpbHRlckVmZmVjdD4gY3JlYXRlRHJvcFNoYWRvd0VmZmVjdChjb25zdCBEcm9wU2hhZG93
RmlsdGVyT3BlcmF0aW9uJiBkcm9wU2hhZG93T3BlcmF0aW9uKQogewogICAgIGZsb2F0IHN0ZCA9
IGRyb3BTaGFkb3dPcGVyYXRpb24uc3RkRGV2aWF0aW9uKCk7Ci0gICAgcmV0dXJuIEZFRHJvcFNo
YWRvdzo6Y3JlYXRlKGZpbHRlciwgc3RkLCBzdGQsIGRyb3BTaGFkb3dPcGVyYXRpb24ueCgpLCBk
cm9wU2hhZG93T3BlcmF0aW9uLnkoKSwgZHJvcFNoYWRvd09wZXJhdGlvbi5jb2xvcigpLCAxKTsK
KyAgICByZXR1cm4gRkVEcm9wU2hhZG93OjpjcmVhdGUoc3RkLCBzdGQsIGRyb3BTaGFkb3dPcGVy
YXRpb24ueCgpLCBkcm9wU2hhZG93T3BlcmF0aW9uLnkoKSwgZHJvcFNoYWRvd09wZXJhdGlvbi5j
b2xvcigpLCAxKTsKIH0KIAotc3RhdGljIFJlZlB0cjxGaWx0ZXJFZmZlY3Q+IGNyZWF0ZUdyYXlT
Y2FsZUVmZmVjdChDU1NGaWx0ZXImIGZpbHRlciwgY29uc3QgQmFzaWNDb2xvck1hdHJpeEZpbHRl
ck9wZXJhdGlvbiYgY29sb3JNYXRyaXhPcGVyYXRpb24pCitzdGF0aWMgUmVmUHRyPEZpbHRlckVm
ZmVjdD4gY3JlYXRlR3JheVNjYWxlRWZmZWN0KGNvbnN0IEJhc2ljQ29sb3JNYXRyaXhGaWx0ZXJP
cGVyYXRpb24mIGNvbG9yTWF0cml4T3BlcmF0aW9uKQogewogICAgIGRvdWJsZSBvbmVNaW51c0Ft
b3VudCA9IGNsYW1wVG8oMSAtIGNvbG9yTWF0cml4T3BlcmF0aW9uLmFtb3VudCgpLCAwLjAsIDEu
MCk7CiAKQEAgLTEzNiwxNiArMTM2LDE2IEBAIHN0YXRpYyBSZWZQdHI8RmlsdGVyRWZmZWN0PiBj
cmVhdGVHcmF5U2NhbGVFZmZlY3QoQ1NTRmlsdGVyJiBmaWx0ZXIsIGNvbnN0IEJhc2ljCiAgICAg
ICAgIDAsCiAgICAgfTsKIAotICAgIHJldHVybiBGRUNvbG9yTWF0cml4OjpjcmVhdGUoZmlsdGVy
LCBGRUNPTE9STUFUUklYX1RZUEVfTUFUUklYLCBXVEZNb3ZlKGlucHV0UGFyYW1ldGVycykpOwor
ICAgIHJldHVybiBGRUNvbG9yTWF0cml4OjpjcmVhdGUoRkVDT0xPUk1BVFJJWF9UWVBFX01BVFJJ
WCwgV1RGTW92ZShpbnB1dFBhcmFtZXRlcnMpKTsKIH0KIAotc3RhdGljIFJlZlB0cjxGaWx0ZXJF
ZmZlY3Q+IGNyZWF0ZUh1ZVJvdGF0ZUVmZmVjdChDU1NGaWx0ZXImIGZpbHRlciwgY29uc3QgQmFz
aWNDb2xvck1hdHJpeEZpbHRlck9wZXJhdGlvbiYgY29sb3JNYXRyaXhPcGVyYXRpb24pCitzdGF0
aWMgUmVmUHRyPEZpbHRlckVmZmVjdD4gY3JlYXRlSHVlUm90YXRlRWZmZWN0KGNvbnN0IEJhc2lj
Q29sb3JNYXRyaXhGaWx0ZXJPcGVyYXRpb24mIGNvbG9yTWF0cml4T3BlcmF0aW9uKQogewogICAg
IFZlY3RvcjxmbG9hdD4gaW5wdXRQYXJhbWV0ZXJzIHsgbmFycm93UHJlY2lzaW9uVG9GbG9hdChj
b2xvck1hdHJpeE9wZXJhdGlvbi5hbW91bnQoKSkgfTsKLSAgICByZXR1cm4gRkVDb2xvck1hdHJp
eDo6Y3JlYXRlKGZpbHRlciwgRkVDT0xPUk1BVFJJWF9UWVBFX0hVRVJPVEFURSwgV1RGTW92ZShp
bnB1dFBhcmFtZXRlcnMpKTsKKyAgICByZXR1cm4gRkVDb2xvck1hdHJpeDo6Y3JlYXRlKEZFQ09M
T1JNQVRSSVhfVFlQRV9IVUVST1RBVEUsIFdURk1vdmUoaW5wdXRQYXJhbWV0ZXJzKSk7CiB9CiAK
LXN0YXRpYyBSZWZQdHI8RmlsdGVyRWZmZWN0PiBjcmVhdGVJbnZlcnRFZmZlY3QoQ1NTRmlsdGVy
JiBmaWx0ZXIsIGNvbnN0IEJhc2ljQ29tcG9uZW50VHJhbnNmZXJGaWx0ZXJPcGVyYXRpb24mIGNv
bXBvbmVudFRyYW5zZmVyT3BlcmF0aW9uKQorc3RhdGljIFJlZlB0cjxGaWx0ZXJFZmZlY3Q+IGNy
ZWF0ZUludmVydEVmZmVjdChjb25zdCBCYXNpY0NvbXBvbmVudFRyYW5zZmVyRmlsdGVyT3BlcmF0
aW9uJiBjb21wb25lbnRUcmFuc2Zlck9wZXJhdGlvbikKIHsKICAgICBDb21wb25lbnRUcmFuc2Zl
ckZ1bmN0aW9uIHRyYW5zZmVyRnVuY3Rpb247CiAgICAgdHJhbnNmZXJGdW5jdGlvbi50eXBlID0g
RkVDT01QT05FTlRUUkFOU0ZFUl9UWVBFX0xJTkVBUjsKQEAgLTE1NCwxMCArMTU0LDEwIEBAIHN0
YXRpYyBSZWZQdHI8RmlsdGVyRWZmZWN0PiBjcmVhdGVJbnZlcnRFZmZlY3QoQ1NTRmlsdGVyJiBm
aWx0ZXIsIGNvbnN0IEJhc2ljQ29tCiAgICAgdHJhbnNmZXJGdW5jdGlvbi5pbnRlcmNlcHQgPSBh
bW91bnQ7CiAKICAgICBDb21wb25lbnRUcmFuc2ZlckZ1bmN0aW9uIG51bGxGdW5jdGlvbjsKLSAg
ICByZXR1cm4gRkVDb21wb25lbnRUcmFuc2Zlcjo6Y3JlYXRlKGZpbHRlciwgdHJhbnNmZXJGdW5j
dGlvbiwgdHJhbnNmZXJGdW5jdGlvbiwgdHJhbnNmZXJGdW5jdGlvbiwgbnVsbEZ1bmN0aW9uKTsK
KyAgICByZXR1cm4gRkVDb21wb25lbnRUcmFuc2Zlcjo6Y3JlYXRlKHRyYW5zZmVyRnVuY3Rpb24s
IHRyYW5zZmVyRnVuY3Rpb24sIHRyYW5zZmVyRnVuY3Rpb24sIG51bGxGdW5jdGlvbik7CiB9CiAK
LXN0YXRpYyBSZWZQdHI8RmlsdGVyRWZmZWN0PiBjcmVhdGVPcGFjaXR5RWZmZWN0KENTU0ZpbHRl
ciYgZmlsdGVyLCBjb25zdCBCYXNpY0NvbXBvbmVudFRyYW5zZmVyRmlsdGVyT3BlcmF0aW9uJiBj
b21wb25lbnRUcmFuc2Zlck9wZXJhdGlvbikKK3N0YXRpYyBSZWZQdHI8RmlsdGVyRWZmZWN0PiBj
cmVhdGVPcGFjaXR5RWZmZWN0KGNvbnN0IEJhc2ljQ29tcG9uZW50VHJhbnNmZXJGaWx0ZXJPcGVy
YXRpb24mIGNvbXBvbmVudFRyYW5zZmVyT3BlcmF0aW9uKQogewogICAgIENvbXBvbmVudFRyYW5z
ZmVyRnVuY3Rpb24gdHJhbnNmZXJGdW5jdGlvbjsKICAgICB0cmFuc2ZlckZ1bmN0aW9uLnR5cGUg
PSBGRUNPTVBPTkVOVFRSQU5TRkVSX1RZUEVfTElORUFSOwpAQCAtMTY2LDE2ICsxNjYsMTYgQEAg
c3RhdGljIFJlZlB0cjxGaWx0ZXJFZmZlY3Q+IGNyZWF0ZU9wYWNpdHlFZmZlY3QoQ1NTRmlsdGVy
JiBmaWx0ZXIsIGNvbnN0IEJhc2ljQ28KICAgICB0cmFuc2ZlckZ1bmN0aW9uLmludGVyY2VwdCA9
IDA7CiAKICAgICBDb21wb25lbnRUcmFuc2ZlckZ1bmN0aW9uIG51bGxGdW5jdGlvbjsKLSAgICBy
ZXR1cm4gRkVDb21wb25lbnRUcmFuc2Zlcjo6Y3JlYXRlKGZpbHRlciwgbnVsbEZ1bmN0aW9uLCBu
dWxsRnVuY3Rpb24sIG51bGxGdW5jdGlvbiwgdHJhbnNmZXJGdW5jdGlvbik7CisgICAgcmV0dXJu
IEZFQ29tcG9uZW50VHJhbnNmZXI6OmNyZWF0ZShudWxsRnVuY3Rpb24sIG51bGxGdW5jdGlvbiwg
bnVsbEZ1bmN0aW9uLCB0cmFuc2ZlckZ1bmN0aW9uKTsKIH0KIAotc3RhdGljIFJlZlB0cjxGaWx0
ZXJFZmZlY3Q+IGNyZWF0ZVNhdHVyYXRlRWZmZWN0KENTU0ZpbHRlciYgZmlsdGVyLCBjb25zdCBC
YXNpY0NvbG9yTWF0cml4RmlsdGVyT3BlcmF0aW9uJiBjb2xvck1hdHJpeE9wZXJhdGlvbikKK3N0
YXRpYyBSZWZQdHI8RmlsdGVyRWZmZWN0PiBjcmVhdGVTYXR1cmF0ZUVmZmVjdChjb25zdCBCYXNp
Y0NvbG9yTWF0cml4RmlsdGVyT3BlcmF0aW9uJiBjb2xvck1hdHJpeE9wZXJhdGlvbikKIHsKICAg
ICBWZWN0b3I8ZmxvYXQ+IGlucHV0UGFyYW1ldGVycyB7IG5hcnJvd1ByZWNpc2lvblRvRmxvYXQo
Y29sb3JNYXRyaXhPcGVyYXRpb24uYW1vdW50KCkpIH07Ci0gICAgcmV0dXJuIEZFQ29sb3JNYXRy
aXg6OmNyZWF0ZShmaWx0ZXIsIEZFQ09MT1JNQVRSSVhfVFlQRV9TQVRVUkFURSwgV1RGTW92ZShp
bnB1dFBhcmFtZXRlcnMpKTsKKyAgICByZXR1cm4gRkVDb2xvck1hdHJpeDo6Y3JlYXRlKEZFQ09M
T1JNQVRSSVhfVFlQRV9TQVRVUkFURSwgV1RGTW92ZShpbnB1dFBhcmFtZXRlcnMpKTsKIH0KIAot
c3RhdGljIFJlZlB0cjxGaWx0ZXJFZmZlY3Q+IGNyZWF0ZVNlcGlhRWZmZWN0KENTU0ZpbHRlciYg
ZmlsdGVyLCBjb25zdCBCYXNpY0NvbG9yTWF0cml4RmlsdGVyT3BlcmF0aW9uJiBjb2xvck1hdHJp
eE9wZXJhdGlvbikKK3N0YXRpYyBSZWZQdHI8RmlsdGVyRWZmZWN0PiBjcmVhdGVTZXBpYUVmZmVj
dChjb25zdCBCYXNpY0NvbG9yTWF0cml4RmlsdGVyT3BlcmF0aW9uJiBjb2xvck1hdHJpeE9wZXJh
dGlvbikKIHsKICAgICBkb3VibGUgb25lTWludXNBbW91bnQgPSBjbGFtcFRvKDEgLSBjb2xvck1h
dHJpeE9wZXJhdGlvbi5hbW91bnQoKSwgMC4wLCAxLjApOwogCkBAIC0yMDgsNyArMjA4LDcgQEAg
c3RhdGljIFJlZlB0cjxGaWx0ZXJFZmZlY3Q+IGNyZWF0ZVNlcGlhRWZmZWN0KENTU0ZpbHRlciYg
ZmlsdGVyLCBjb25zdCBCYXNpY0NvbG8KICAgICAgICAgMCwKICAgICB9OwogCi0gICAgcmV0dXJu
IEZFQ29sb3JNYXRyaXg6OmNyZWF0ZShmaWx0ZXIsIEZFQ09MT1JNQVRSSVhfVFlQRV9NQVRSSVgs
IFdURk1vdmUoaW5wdXRQYXJhbWV0ZXJzKSk7CisgICAgcmV0dXJuIEZFQ29sb3JNYXRyaXg6OmNy
ZWF0ZShGRUNPTE9STUFUUklYX1RZUEVfTUFUUklYLCBXVEZNb3ZlKGlucHV0UGFyYW1ldGVycykp
OwogfQogCiBzdGF0aWMgUmVmUHRyPFNWR0ZpbHRlcj4gY3JlYXRlU1ZHRmlsdGVyKENTU0ZpbHRl
ciYgZmlsdGVyLCBjb25zdCBSZWZlcmVuY2VGaWx0ZXJPcGVyYXRpb24mIGZpbHRlck9wZXJhdGlv
biwgUmVuZGVyRWxlbWVudCYgcmVuZGVyZXIsIEZpbHRlckVmZmVjdCYgcHJldmlvdXNFZmZlY3Qp
CkBAIC0yNDEsNyArMjQxLDcgQEAgYm9vbCBDU1NGaWx0ZXI6OmJ1aWxkRmlsdGVyRnVuY3Rpb25z
KFJlbmRlckVsZW1lbnQmIHJlbmRlcmVyLCBjb25zdCBGaWx0ZXJPcGVyYXQKICAgICBtX2Z1bmN0
aW9ucy5jbGVhcigpOwogICAgIG1fb3V0c2V0cyA9IHsgfTsKIAotICAgIFJlZlB0cjxGaWx0ZXJF
ZmZlY3Q+IHByZXZpb3VzRWZmZWN0ID0gU291cmNlR3JhcGhpYzo6Y3JlYXRlKCp0aGlzKTsKKyAg
ICBSZWZQdHI8RmlsdGVyRWZmZWN0PiBwcmV2aW91c0VmZmVjdCA9IFNvdXJjZUdyYXBoaWM6OmNy
ZWF0ZSgpOwogICAgIFJlZlB0cjxTVkdGaWx0ZXI+IGZpbHRlcjsKICAgICAKICAgICBmb3IgKGF1
dG8mIG9wZXJhdGlvbiA6IG9wZXJhdGlvbnMub3BlcmF0aW9ucygpKSB7CkBAIC0yNTMsNDMgKzI1
Myw0MyBAQCBib29sIENTU0ZpbHRlcjo6YnVpbGRGaWx0ZXJGdW5jdGlvbnMoUmVuZGVyRWxlbWVu
dCYgcmVuZGVyZXIsIGNvbnN0IEZpbHRlck9wZXJhdAogICAgICAgICAgICAgYnJlYWs7CiAKICAg
ICAgICAgY2FzZSBGaWx0ZXJPcGVyYXRpb246OkJMVVI6Ci0gICAgICAgICAgICBlZmZlY3QgPSBj
cmVhdGVCbHVyRWZmZWN0KCp0aGlzLCBkb3duY2FzdDxCbHVyRmlsdGVyT3BlcmF0aW9uPigqb3Bl
cmF0aW9uKSwgY29uc3VtZXIpOworICAgICAgICAgICAgZWZmZWN0ID0gY3JlYXRlQmx1ckVmZmVj
dChkb3duY2FzdDxCbHVyRmlsdGVyT3BlcmF0aW9uPigqb3BlcmF0aW9uKSwgY29uc3VtZXIpOwog
ICAgICAgICAgICAgYnJlYWs7CiAKICAgICAgICAgY2FzZSBGaWx0ZXJPcGVyYXRpb246OkJSSUdI
VE5FU1M6Ci0gICAgICAgICAgICBlZmZlY3QgPSBjcmVhdGVCcmlnaHRuZXNzRWZmZWN0KCp0aGlz
LCBkb3duY2FzdDxCYXNpY0NvbXBvbmVudFRyYW5zZmVyRmlsdGVyT3BlcmF0aW9uPigqb3BlcmF0
aW9uKSk7CisgICAgICAgICAgICBlZmZlY3QgPSBjcmVhdGVCcmlnaHRuZXNzRWZmZWN0KGRvd25j
YXN0PEJhc2ljQ29tcG9uZW50VHJhbnNmZXJGaWx0ZXJPcGVyYXRpb24+KCpvcGVyYXRpb24pKTsK
ICAgICAgICAgICAgIGJyZWFrOwogCiAgICAgICAgIGNhc2UgRmlsdGVyT3BlcmF0aW9uOjpDT05U
UkFTVDoKLSAgICAgICAgICAgIGVmZmVjdCA9IGNyZWF0ZUNvbnRyYXN0RWZmZWN0KCp0aGlzLCBk
b3duY2FzdDxCYXNpY0NvbXBvbmVudFRyYW5zZmVyRmlsdGVyT3BlcmF0aW9uPigqb3BlcmF0aW9u
KSk7CisgICAgICAgICAgICBlZmZlY3QgPSBjcmVhdGVDb250cmFzdEVmZmVjdChkb3duY2FzdDxC
YXNpY0NvbXBvbmVudFRyYW5zZmVyRmlsdGVyT3BlcmF0aW9uPigqb3BlcmF0aW9uKSk7CiAgICAg
ICAgICAgICBicmVhazsKIAogICAgICAgICBjYXNlIEZpbHRlck9wZXJhdGlvbjo6RFJPUF9TSEFE
T1c6Ci0gICAgICAgICAgICBlZmZlY3QgPSBjcmVhdGVEcm9wU2hhZG93RWZmZWN0KCp0aGlzLCBk
b3duY2FzdDxEcm9wU2hhZG93RmlsdGVyT3BlcmF0aW9uPigqb3BlcmF0aW9uKSk7CisgICAgICAg
ICAgICBlZmZlY3QgPSBjcmVhdGVEcm9wU2hhZG93RWZmZWN0KGRvd25jYXN0PERyb3BTaGFkb3dG
aWx0ZXJPcGVyYXRpb24+KCpvcGVyYXRpb24pKTsKICAgICAgICAgICAgIGJyZWFrOwogCiAgICAg
ICAgIGNhc2UgRmlsdGVyT3BlcmF0aW9uOjpHUkFZU0NBTEU6Ci0gICAgICAgICAgICBlZmZlY3Qg
PSBjcmVhdGVHcmF5U2NhbGVFZmZlY3QoKnRoaXMsIGRvd25jYXN0PEJhc2ljQ29sb3JNYXRyaXhG
aWx0ZXJPcGVyYXRpb24+KCpvcGVyYXRpb24pKTsKKyAgICAgICAgICAgIGVmZmVjdCA9IGNyZWF0
ZUdyYXlTY2FsZUVmZmVjdChkb3duY2FzdDxCYXNpY0NvbG9yTWF0cml4RmlsdGVyT3BlcmF0aW9u
Pigqb3BlcmF0aW9uKSk7CiAgICAgICAgICAgICBicmVhazsKIAogICAgICAgICBjYXNlIEZpbHRl
ck9wZXJhdGlvbjo6SFVFX1JPVEFURToKLSAgICAgICAgICAgIGVmZmVjdCA9IGNyZWF0ZUh1ZVJv
dGF0ZUVmZmVjdCgqdGhpcywgZG93bmNhc3Q8QmFzaWNDb2xvck1hdHJpeEZpbHRlck9wZXJhdGlv
bj4oKm9wZXJhdGlvbikpOworICAgICAgICAgICAgZWZmZWN0ID0gY3JlYXRlSHVlUm90YXRlRWZm
ZWN0KGRvd25jYXN0PEJhc2ljQ29sb3JNYXRyaXhGaWx0ZXJPcGVyYXRpb24+KCpvcGVyYXRpb24p
KTsKICAgICAgICAgICAgIGJyZWFrOwogCiAgICAgICAgIGNhc2UgRmlsdGVyT3BlcmF0aW9uOjpJ
TlZFUlQ6Ci0gICAgICAgICAgICBlZmZlY3QgPSBjcmVhdGVJbnZlcnRFZmZlY3QoKnRoaXMsIGRv
d25jYXN0PEJhc2ljQ29tcG9uZW50VHJhbnNmZXJGaWx0ZXJPcGVyYXRpb24+KCpvcGVyYXRpb24p
KTsKKyAgICAgICAgICAgIGVmZmVjdCA9IGNyZWF0ZUludmVydEVmZmVjdChkb3duY2FzdDxCYXNp
Y0NvbXBvbmVudFRyYW5zZmVyRmlsdGVyT3BlcmF0aW9uPigqb3BlcmF0aW9uKSk7CiAgICAgICAg
ICAgICBicmVhazsKIAogICAgICAgICBjYXNlIEZpbHRlck9wZXJhdGlvbjo6T1BBQ0lUWToKLSAg
ICAgICAgICAgIGVmZmVjdCA9IGNyZWF0ZU9wYWNpdHlFZmZlY3QoKnRoaXMsIGRvd25jYXN0PEJh
c2ljQ29tcG9uZW50VHJhbnNmZXJGaWx0ZXJPcGVyYXRpb24+KCpvcGVyYXRpb24pKTsKKyAgICAg
ICAgICAgIGVmZmVjdCA9IGNyZWF0ZU9wYWNpdHlFZmZlY3QoZG93bmNhc3Q8QmFzaWNDb21wb25l
bnRUcmFuc2ZlckZpbHRlck9wZXJhdGlvbj4oKm9wZXJhdGlvbikpOwogICAgICAgICAgICAgYnJl
YWs7CiAKICAgICAgICAgY2FzZSBGaWx0ZXJPcGVyYXRpb246OlNBVFVSQVRFOgotICAgICAgICAg
ICAgZWZmZWN0ID0gY3JlYXRlU2F0dXJhdGVFZmZlY3QoKnRoaXMsIGRvd25jYXN0PEJhc2ljQ29s
b3JNYXRyaXhGaWx0ZXJPcGVyYXRpb24+KCpvcGVyYXRpb24pKTsKKyAgICAgICAgICAgIGVmZmVj
dCA9IGNyZWF0ZVNhdHVyYXRlRWZmZWN0KGRvd25jYXN0PEJhc2ljQ29sb3JNYXRyaXhGaWx0ZXJP
cGVyYXRpb24+KCpvcGVyYXRpb24pKTsKICAgICAgICAgICAgIGJyZWFrOwogCiAgICAgICAgIGNh
c2UgRmlsdGVyT3BlcmF0aW9uOjpTRVBJQToKLSAgICAgICAgICAgIGVmZmVjdCA9IGNyZWF0ZVNl
cGlhRWZmZWN0KCp0aGlzLCBkb3duY2FzdDxCYXNpY0NvbG9yTWF0cml4RmlsdGVyT3BlcmF0aW9u
Pigqb3BlcmF0aW9uKSk7CisgICAgICAgICAgICBlZmZlY3QgPSBjcmVhdGVTZXBpYUVmZmVjdChk
b3duY2FzdDxCYXNpY0NvbG9yTWF0cml4RmlsdGVyT3BlcmF0aW9uPigqb3BlcmF0aW9uKSk7CiAg
ICAgICAgICAgICBicmVhazsKIAogICAgICAgICBjYXNlIEZpbHRlck9wZXJhdGlvbjo6UkVGRVJF
TkNFOgpAQCAtMzkyLDEzICszOTIsMTMgQEAgUmVmUHRyPEZpbHRlckVmZmVjdD4gQ1NTRmlsdGVy
OjpsYXN0RWZmZWN0KCkKIHZvaWQgQ1NTRmlsdGVyOjpkZXRlcm1pbmVGaWx0ZXJQcmltaXRpdmVT
dWJyZWdpb24oKQogewogICAgIGF1dG8gZWZmZWN0ID0gbGFzdEVmZmVjdCgpOwotICAgIGVmZmVj
dC0+ZGV0ZXJtaW5lRmlsdGVyUHJpbWl0aXZlU3VicmVnaW9uKCk7CisgICAgZWZmZWN0LT5kZXRl
cm1pbmVGaWx0ZXJQcmltaXRpdmVTdWJyZWdpb24oKnRoaXMpOwogICAgIEZsb2F0UmVjdCBzdWJS
ZWdpb24gPSBlZmZlY3QtPm1heEVmZmVjdFJlY3QoKTsKICAgICAvLyBBdCBsZWFzdCBvbmUgRmls
dGVyRWZmZWN0IGhhcyBhIHRvbyBiaWcgaW1hZ2Ugc2l6ZSwgcmVjYWxjdWxhdGUgdGhlIGVmZmVj
dCBzaXplcyB3aXRoIG5ldyBzY2FsZSBmYWN0b3JzLgogICAgIEZsb2F0U2l6ZSBmaWx0ZXJTY2Fs
ZSB7IDEsIDEgfTsKICAgICBpZiAoSW1hZ2VCdWZmZXI6OnNpemVOZWVkc0NsYW1waW5nKHN1YlJl
Z2lvbi5zaXplKCksIGZpbHRlclNjYWxlKSkgewogICAgICAgICBzZXRGaWx0ZXJTY2FsZShmaWx0
ZXJTY2FsZSk7Ci0gICAgICAgIGVmZmVjdC0+ZGV0ZXJtaW5lRmlsdGVyUHJpbWl0aXZlU3VicmVn
aW9uKCk7CisgICAgICAgIGVmZmVjdC0+ZGV0ZXJtaW5lRmlsdGVyUHJpbWl0aXZlU3VicmVnaW9u
KCp0aGlzKTsKICAgICB9CiB9CiAKQEAgLTQxMiwxMyArNDEyLDIxIEBAIHZvaWQgQ1NTRmlsdGVy
OjphcHBseSgpCiB7CiAgICAgYXV0byBlZmZlY3QgPSBsYXN0RWZmZWN0KCk7CiAgICAgaWYgKG1f
ZmlsdGVyUmVuZGVyZXIpIHsKLSAgICAgICAgbV9maWx0ZXJSZW5kZXJlci0+YXBwbHlFZmZlY3Rz
KCplZmZlY3QpOworICAgICAgICBtX2ZpbHRlclJlbmRlcmVyLT5hcHBseUVmZmVjdHMoKnRoaXMs
ICplZmZlY3QpOwogICAgICAgICBpZiAobV9maWx0ZXJSZW5kZXJlci0+aGFzUmVzdWx0KCkpIHsK
ICAgICAgICAgICAgIGVmZmVjdC0+dHJhbnNmb3JtUmVzdWx0Q29sb3JTcGFjZShEZXN0aW5hdGlv
bkNvbG9yU3BhY2U6OlNSR0IoKSk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KICAg
ICB9Ci0gICAgZWZmZWN0LT5hcHBseSgpOworCisgICAgZm9yIChhdXRvJiBmdW5jdGlvbiA6IG1f
ZnVuY3Rpb25zKSB7CisgICAgICAgIGlmIChmdW5jdGlvbi0+aXNTVkdGaWx0ZXIoKSkgeworICAg
ICAgICAgICAgZG93bmNhc3Q8U1ZHRmlsdGVyPihmdW5jdGlvbi5nZXQoKSkuc2V0U291cmNlSW1h
Z2UoeyBzb3VyY2VJbWFnZSgpIH0pOworICAgICAgICAgICAgZG93bmNhc3Q8U1ZHRmlsdGVyPihm
dW5jdGlvbi5nZXQoKSkuYXBwbHkoKTsKKyAgICAgICAgfSBlbHNlIGlmIChmdW5jdGlvbi0+aXNG
aWx0ZXJFZmZlY3QoKSkKKyAgICAgICAgICAgIGRvd25jYXN0PEZpbHRlckVmZmVjdD4oZnVuY3Rp
b24uZ2V0KCkpLmFwcGx5KCp0aGlzKTsKKyAgICB9CisKICAgICBlZmZlY3QtPnRyYW5zZm9ybVJl
c3VsdENvbG9yU3BhY2UoRGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdCKCkpOwogfQogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvQ1NTRmlsdGVyLmggYi9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvQ1NTRmlsdGVyLmgKaW5kZXggZDZkNjE5NzQxNjJkMTM3M2I1ZjZiYzU2
YmE2M2IzZjQ3ZDZkMDE4Zi4uNTkzYjYzMzcwNDdiZDkxMTAyMGQwMDNiYzYwZmU1M2M2NjUxNmE4
OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0NTU0ZpbHRlci5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9DU1NGaWx0ZXIuaApAQCAtNTksNyArNTksNyBAQCBw
dWJsaWM6CiAgICAgSW50T3V0c2V0cyBvdXRzZXRzKCkgY29uc3Qgb3ZlcnJpZGU7CiAKICAgICB2
b2lkIGNsZWFySW50ZXJtZWRpYXRlUmVzdWx0cygpOwotICAgIHZvaWQgYXBwbHkoKTsKKyAgICB2
b2lkIGFwcGx5KCkgb3ZlcnJpZGU7CiAKICAgICBJbWFnZUJ1ZmZlciogb3V0cHV0KCk7CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VG
aWx0ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJj
ZUZpbHRlci5jcHAKaW5kZXggM2JjN2ZmM2Y5NjdjMmZkNWIwMWI3MWQxM2MyN2VhNjhhMmNiZjBi
MC4uNGEwNTBiMTY5NTk5OTEyZDA3M2VmZGQ3YTM3MDM1NTI4ZTMyNTEyYyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZUZpbHRlci5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZUZpbHRl
ci5jcHAKQEAgLTEzOSwxNCArMTM5LDE0IEBAIGJvb2wgUmVuZGVyU1ZHUmVzb3VyY2VGaWx0ZXI6
OmFwcGx5UmVzb3VyY2UoUmVuZGVyRWxlbWVudCYgcmVuZGVyZXIsIGNvbnN0IFJlbmRlCiAKICAg
ICBMT0dfV0lUSF9TVFJFQU0oRmlsdGVycywgc3RyZWFtIDw8ICJSZW5kZXJTVkdSZXNvdXJjZUZp
bHRlcjo6YXBwbHlSZXNvdXJjZVxuIiA8PCAqZmlsdGVyRGF0YS0+YnVpbGRlci0+bGFzdEVmZmVj
dCgpKTsKIAotICAgIGxhc3RFZmZlY3QtPmRldGVybWluZUZpbHRlclByaW1pdGl2ZVN1YnJlZ2lv
bigpOworICAgIGxhc3RFZmZlY3QtPmRldGVybWluZUZpbHRlclByaW1pdGl2ZVN1YnJlZ2lvbigq
ZmlsdGVyRGF0YS0+ZmlsdGVyKTsKICAgICBGbG9hdFJlY3Qgc3ViUmVnaW9uID0gbGFzdEVmZmVj
dC0+bWF4RWZmZWN0UmVjdCgpOwogCiAgICAgLy8gQXQgbGVhc3Qgb25lIEZpbHRlckVmZmVjdCBo
YXMgYSB0b28gYmlnIGltYWdlIHNpemUsCiAgICAgLy8gcmVjYWxjdWxhdGUgdGhlIGVmZmVjdCBz
aXplcyB3aXRoIG5ldyBzY2FsZSBmYWN0b3JzLgogICAgIGlmIChJbWFnZUJ1ZmZlcjo6c2l6ZU5l
ZWRzQ2xhbXBpbmcoc3ViUmVnaW9uLnNpemUoKSwgZmlsdGVyU2NhbGUpKSB7CiAgICAgICAgIGZp
bHRlckRhdGEtPmZpbHRlci0+c2V0RmlsdGVyU2NhbGUoZmlsdGVyU2NhbGUpOwotICAgICAgICBs
YXN0RWZmZWN0LT5kZXRlcm1pbmVGaWx0ZXJQcmltaXRpdmVTdWJyZWdpb24oKTsKKyAgICAgICAg
bGFzdEVmZmVjdC0+ZGV0ZXJtaW5lRmlsdGVyUHJpbWl0aXZlU3VicmVnaW9uKCpmaWx0ZXJEYXRh
LT5maWx0ZXIpOwogICAgIH0KIAogICAgIC8vIElmIHRoZSBkcmF3aW5nUmVnaW9uIGlzIGVtcHR5
LCB3ZSBoYXZlIHNvbWV0aGluZyBsaWtlIDxnIGZpbHRlcj0iLi4iLz4uCkBAIC0yMjgsNyArMjI4
LDcgQEAgdm9pZCBSZW5kZXJTVkdSZXNvdXJjZUZpbHRlcjo6cG9zdEFwcGx5UmVzb3VyY2UoUmVu
ZGVyRWxlbWVudCYgcmVuZGVyZXIsIEdyYXBoaWMKICAgICAgICAgYnJlYWs7CiAgICAgfQogCi0g
ICAgRmlsdGVyRWZmZWN0KiBsYXN0RWZmZWN0ID0gZmlsdGVyRGF0YS5idWlsZGVyLT5sYXN0RWZm
ZWN0KCk7CisgICAgYXV0byBsYXN0RWZmZWN0ID0gZmlsdGVyRGF0YS5maWx0ZXItPmxhc3RFZmZl
Y3QoKTsKIAogICAgIGlmIChsYXN0RWZmZWN0ICYmICFmaWx0ZXJEYXRhLmJvdW5kYXJpZXMuaXNF
bXB0eSgpICYmICFsYXN0RWZmZWN0LT5maWx0ZXJQcmltaXRpdmVTdWJyZWdpb24oKS5pc0VtcHR5
KCkpIHsKICAgICAgICAgLy8gVGhpcyBpcyB0aGUgcmVhbCBmaWx0ZXJpbmcgb2YgdGhlIG9iamVj
dC4gSXQganVzdCBuZWVkcyB0byBiZSBjYWxsZWQgb24gdGhlCkBAIC0yNDAsNyArMjQwLDcgQEAg
dm9pZCBSZW5kZXJTVkdSZXNvdXJjZUZpbHRlcjo6cG9zdEFwcGx5UmVzb3VyY2UoUmVuZGVyRWxl
bWVudCYgcmVuZGVyZXIsIEdyYXBoaWMKICAgICAgICAgLy8gQWx3YXlzIHRydWUgaWYgZmlsdGVy
RGF0YSBpcyBqdXN0IGJ1aWx0IChmaWx0ZXJEYXRhLT5zdGF0ZSA9PSBGaWx0ZXJEYXRhOjpCdWls
dCkuCiAgICAgICAgIGlmICghbGFzdEVmZmVjdC0+aGFzUmVzdWx0KCkpIHsKICAgICAgICAgICAg
IGZpbHRlckRhdGEuc3RhdGUgPSBGaWx0ZXJEYXRhOjpBcHBseWluZzsKLSAgICAgICAgICAgIGxh
c3RFZmZlY3QtPmFwcGx5KCk7CisgICAgICAgICAgICBmaWx0ZXJEYXRhLmZpbHRlci0+YXBwbHko
KTsKICAgICAgICAgICAgIGxhc3RFZmZlY3QtPmNvcnJlY3RGaWx0ZXJSZXN1bHRJZk5lZWRlZCgp
OwogICAgICAgICAgICAgbGFzdEVmZmVjdC0+dHJhbnNmb3JtUmVzdWx0Q29sb3JTcGFjZShEZXN0
aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0IoKSk7CiAgICAgICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3N2Zy9TVkdGRUJsZW5kRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdmcv
U1ZHRkVCbGVuZEVsZW1lbnQuY3BwCmluZGV4IDdiY2YwNDE4MDBmNzk5ZjExNzRjZmUwNGI4MjJk
NmQwNjQzMWY2ODYuLjA1NDBjOGU0NDA4MmQ1YzYxZjAwZjhmYjczNWMzNjE4MmQxMGZhN2YgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRUJsZW5kRWxlbWVudC5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFQmxlbmRFbGVtZW50LmNwcApAQCAtMTAwLDE5ICsxMDAs
MTYgQEAgdm9pZCBTVkdGRUJsZW5kRWxlbWVudDo6c3ZnQXR0cmlidXRlQ2hhbmdlZChjb25zdCBR
dWFsaWZpZWROYW1lJiBhdHRyTmFtZSkKICAgICBTVkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0
dHJpYnV0ZXM6OnN2Z0F0dHJpYnV0ZUNoYW5nZWQoYXR0ck5hbWUpOwogfQogCi1SZWZQdHI8Rmls
dGVyRWZmZWN0PiBTVkdGRUJsZW5kRWxlbWVudDo6YnVpbGQoU1ZHRmlsdGVyQnVpbGRlciogZmls
dGVyQnVpbGRlciwgRmlsdGVyJiBmaWx0ZXIpIGNvbnN0CitSZWZQdHI8RmlsdGVyRWZmZWN0PiBT
VkdGRUJsZW5kRWxlbWVudDo6YnVpbGQoU1ZHRmlsdGVyQnVpbGRlciYgZmlsdGVyQnVpbGRlcikg
Y29uc3QKIHsKLSAgICBhdXRvIGlucHV0MSA9IGZpbHRlckJ1aWxkZXItPmdldEVmZmVjdEJ5SWQo
aW4xKCkpOwotICAgIGF1dG8gaW5wdXQyID0gZmlsdGVyQnVpbGRlci0+Z2V0RWZmZWN0QnlJZChp
bjIoKSk7CisgICAgYXV0byBpbnB1dDEgPSBmaWx0ZXJCdWlsZGVyLmdldEVmZmVjdEJ5SWQoaW4x
KCkpOworICAgIGF1dG8gaW5wdXQyID0gZmlsdGVyQnVpbGRlci5nZXRFZmZlY3RCeUlkKGluMigp
KTsKIAogICAgIGlmICghaW5wdXQxIHx8ICFpbnB1dDIpCiAgICAgICAgIHJldHVybiBudWxscHRy
OwogCi0gICAgYXV0byBlZmZlY3QgPSBGRUJsZW5kOjpjcmVhdGUoZmlsdGVyLCBtb2RlKCkpOwot
ICAgIEZpbHRlckVmZmVjdFZlY3RvciYgaW5wdXRFZmZlY3RzID0gZWZmZWN0LT5pbnB1dEVmZmVj
dHMoKTsKLSAgICBpbnB1dEVmZmVjdHMucmVzZXJ2ZUNhcGFjaXR5KDIpOwotICAgIGlucHV0RWZm
ZWN0cy5hcHBlbmQoaW5wdXQxKTsKLSAgICBpbnB1dEVmZmVjdHMuYXBwZW5kKGlucHV0Mik7ICAg
IAorICAgIGF1dG8gZWZmZWN0ID0gRkVCbGVuZDo6Y3JlYXRlKG1vZGUoKSk7CisgICAgZWZmZWN0
LT5pbnB1dEVmZmVjdHMoKSA9IHsgV1RGTW92ZShpbnB1dDEpLCBXVEZNb3ZlKGlucHV0MikgfTsK
ICAgICByZXR1cm4gZWZmZWN0OwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcv
U1ZHRkVCbGVuZEVsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRUJsZW5kRWxlbWVu
dC5oCmluZGV4IDkwMzdjYjEyMWY5MzY3Yjc4OGQ5MjE2ZTBiOTQxZmM4YjA2ZGVjNjYuLmViYTlh
YmI1ODMyOGY0ZGFiZjM0MjhiNmIxN2RiZjU4MjM3Njg0MDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3N2Zy9TVkdGRUJsZW5kRWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9T
VkdGRUJsZW5kRWxlbWVudC5oCkBAIC02OSw3ICs2OSw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBw
YXJzZUF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiwgY29uc3QgQXRvbVN0cmluZyYpIG92
ZXJyaWRlOwogICAgIHZvaWQgc3ZnQXR0cmlidXRlQ2hhbmdlZChjb25zdCBRdWFsaWZpZWROYW1l
Jikgb3ZlcnJpZGU7CiAKLSAgICBSZWZQdHI8RmlsdGVyRWZmZWN0PiBidWlsZChTVkdGaWx0ZXJC
dWlsZGVyKiwgRmlsdGVyJikgY29uc3Qgb3ZlcnJpZGU7CisgICAgUmVmUHRyPEZpbHRlckVmZmVj
dD4gYnVpbGQoU1ZHRmlsdGVyQnVpbGRlciYpIGNvbnN0IG92ZXJyaWRlOwogICAgIGJvb2wgc2V0
RmlsdGVyRWZmZWN0QXR0cmlidXRlKEZpbHRlckVmZmVjdCosIGNvbnN0IFF1YWxpZmllZE5hbWUm
IGF0dHJOYW1lKSBvdmVycmlkZTsKIAogICAgIFByb3BlcnR5UmVnaXN0cnkgbV9wcm9wZXJ0eVJl
Z2lzdHJ5IHsgKnRoaXMgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRUNv
bG9yTWF0cml4RWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVDb2xvck1hdHJp
eEVsZW1lbnQuY3BwCmluZGV4IDA1MjQ4NTc4YzI3NGM4ZmEyYjNlMWYyNDRlNDM2Nzg2OGY0MmJh
OWMuLmNkZWJlZjE4YTFmZGNiYjhmM2ZiMzVmYjgzOGFjNjA0YzlhMjNkNjUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRUNvbG9yTWF0cml4RWxlbWVudC5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFQ29sb3JNYXRyaXhFbGVtZW50LmNwcApAQCAtMTAwLDkgKzEw
MCw5IEBAIHZvaWQgU1ZHRkVDb2xvck1hdHJpeEVsZW1lbnQ6OnN2Z0F0dHJpYnV0ZUNoYW5nZWQo
Y29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0ck5hbWUpCiAgICAgU1ZHRmlsdGVyUHJpbWl0aXZlU3Rh
bmRhcmRBdHRyaWJ1dGVzOjpzdmdBdHRyaWJ1dGVDaGFuZ2VkKGF0dHJOYW1lKTsKIH0KIAotUmVm
UHRyPEZpbHRlckVmZmVjdD4gU1ZHRkVDb2xvck1hdHJpeEVsZW1lbnQ6OmJ1aWxkKFNWR0ZpbHRl
ckJ1aWxkZXIqIGZpbHRlckJ1aWxkZXIsIEZpbHRlciYgZmlsdGVyKSBjb25zdAorUmVmUHRyPEZp
bHRlckVmZmVjdD4gU1ZHRkVDb2xvck1hdHJpeEVsZW1lbnQ6OmJ1aWxkKFNWR0ZpbHRlckJ1aWxk
ZXImIGZpbHRlckJ1aWxkZXIpIGNvbnN0CiB7Ci0gICAgYXV0byBpbnB1dDEgPSBmaWx0ZXJCdWls
ZGVyLT5nZXRFZmZlY3RCeUlkKGluMSgpKTsKKyAgICBhdXRvIGlucHV0MSA9IGZpbHRlckJ1aWxk
ZXIuZ2V0RWZmZWN0QnlJZChpbjEoKSk7CiAKICAgICBpZiAoIWlucHV0MSkKICAgICAgICAgcmV0
dXJuIG51bGxwdHI7CkBAIC0xNDEsOCArMTQxLDggQEAgUmVmUHRyPEZpbHRlckVmZmVjdD4gU1ZH
RkVDb2xvck1hdHJpeEVsZW1lbnQ6OmJ1aWxkKFNWR0ZpbHRlckJ1aWxkZXIqIGZpbHRlckJ1aWwK
ICAgICAgICAgZmlsdGVyVmFsdWVzLnNocmlua1RvRml0KCk7CiAgICAgfQogCi0gICAgYXV0byBl
ZmZlY3QgPSBGRUNvbG9yTWF0cml4OjpjcmVhdGUoZmlsdGVyLCBmaWx0ZXJUeXBlLCBXVEZNb3Zl
KGZpbHRlclZhbHVlcykpOwotICAgIGVmZmVjdC0+aW5wdXRFZmZlY3RzKCkgPSB7IGlucHV0MSB9
OworICAgIGF1dG8gZWZmZWN0ID0gRkVDb2xvck1hdHJpeDo6Y3JlYXRlKGZpbHRlclR5cGUsIFdU
Rk1vdmUoZmlsdGVyVmFsdWVzKSk7CisgICAgZWZmZWN0LT5pbnB1dEVmZmVjdHMoKSA9IHsgV1RG
TW92ZShpbnB1dDEpIH07CiAgICAgcmV0dXJuIGVmZmVjdDsKIH0KIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFQ29sb3JNYXRyaXhFbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29y
ZS9zdmcvU1ZHRkVDb2xvck1hdHJpeEVsZW1lbnQuaAppbmRleCA3YWI0YWE0MTgxZTdhYjE5OGIx
MmU3N2JlMjA2YjljNWM0MTAyM2ZkLi45NzAxMWEwNDFlNDlhMTdmYjQ5OGExZjg0NmY4ODBkYmRk
Njk1MjQwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVDb2xvck1hdHJpeEVs
ZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVDb2xvck1hdHJpeEVsZW1lbnQu
aApAQCAtODYsNyArODYsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgc3ZnQXR0cmlidXRlQ2hhbmdl
ZChjb25zdCBRdWFsaWZpZWROYW1lJikgb3ZlcnJpZGU7CiAKICAgICBib29sIHNldEZpbHRlckVm
ZmVjdEF0dHJpYnV0ZShGaWx0ZXJFZmZlY3QqLCBjb25zdCBRdWFsaWZpZWROYW1lJikgb3ZlcnJp
ZGU7Ci0gICAgUmVmUHRyPEZpbHRlckVmZmVjdD4gYnVpbGQoU1ZHRmlsdGVyQnVpbGRlciosIEZp
bHRlciYpIGNvbnN0IG92ZXJyaWRlOworICAgIFJlZlB0cjxGaWx0ZXJFZmZlY3Q+IGJ1aWxkKFNW
R0ZpbHRlckJ1aWxkZXImKSBjb25zdCBvdmVycmlkZTsKIAogICAgIFByb3BlcnR5UmVnaXN0cnkg
bV9wcm9wZXJ0eVJlZ2lzdHJ5IHsgKnRoaXMgfTsKICAgICBSZWY8U1ZHQW5pbWF0ZWRTdHJpbmc+
IG1faW4xIHsgU1ZHQW5pbWF0ZWRTdHJpbmc6OmNyZWF0ZSh0aGlzKSB9OwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFQ29tcG9uZW50VHJhbnNmZXJFbGVtZW50LmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3N2Zy9TVkdGRUNvbXBvbmVudFRyYW5zZmVyRWxlbWVudC5jcHAKaW5kZXgg
OTBhNTViN2VmZmY3YTNmZTYwNmE5ZTA1NzlhNzZlZGU5Zjk2ODAxMS4uNWVkYjg5ZDBkMjU5MjU4
ZmU2ZWNkOTU2NzdhNWQ2MjA0MTQwZGU0YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3Zn
L1NWR0ZFQ29tcG9uZW50VHJhbnNmZXJFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9z
dmcvU1ZHRkVDb21wb25lbnRUcmFuc2ZlckVsZW1lbnQuY3BwCkBAIC02Myw5ICs2Myw5IEBAIHZv
aWQgU1ZHRkVDb21wb25lbnRUcmFuc2ZlckVsZW1lbnQ6OnBhcnNlQXR0cmlidXRlKGNvbnN0IFF1
YWxpZmllZE5hbWUmIG5hbWUsIGNvCiAgICAgU1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRy
aWJ1dGVzOjpwYXJzZUF0dHJpYnV0ZShuYW1lLCB2YWx1ZSk7CiB9CiAKLVJlZlB0cjxGaWx0ZXJF
ZmZlY3Q+IFNWR0ZFQ29tcG9uZW50VHJhbnNmZXJFbGVtZW50OjpidWlsZChTVkdGaWx0ZXJCdWls
ZGVyKiBmaWx0ZXJCdWlsZGVyLCBGaWx0ZXImIGZpbHRlcikgY29uc3QKK1JlZlB0cjxGaWx0ZXJF
ZmZlY3Q+IFNWR0ZFQ29tcG9uZW50VHJhbnNmZXJFbGVtZW50OjpidWlsZChTVkdGaWx0ZXJCdWls
ZGVyJiBmaWx0ZXJCdWlsZGVyKSBjb25zdAogewotICAgIGF1dG8gaW5wdXQxID0gZmlsdGVyQnVp
bGRlci0+Z2V0RWZmZWN0QnlJZChpbjEoKSk7CisgICAgYXV0byBpbnB1dDEgPSBmaWx0ZXJCdWls
ZGVyLmdldEVmZmVjdEJ5SWQoaW4xKCkpOwogICAgIAogICAgIGlmICghaW5wdXQxKQogICAgICAg
ICByZXR1cm4gbnVsbHB0cjsKQEAgLTg1LDkgKzg1LDkgQEAgUmVmUHRyPEZpbHRlckVmZmVjdD4g
U1ZHRkVDb21wb25lbnRUcmFuc2ZlckVsZW1lbnQ6OmJ1aWxkKFNWR0ZpbHRlckJ1aWxkZXIqIGZp
bHQKICAgICAgICAgZWxzZSBpZiAoaXM8U1ZHRkVGdW5jQUVsZW1lbnQ+KGNoaWxkKSkKICAgICAg
ICAgICAgIGFscGhhID0gZG93bmNhc3Q8U1ZHRkVGdW5jQUVsZW1lbnQ+KGNoaWxkKS50cmFuc2Zl
ckZ1bmN0aW9uKCk7CiAgICAgfQotICAgIAotICAgIGF1dG8gZWZmZWN0ID0gRkVDb21wb25lbnRU
cmFuc2Zlcjo6Y3JlYXRlKGZpbHRlciwgcmVkLCBncmVlbiwgYmx1ZSwgYWxwaGEpOwotICAgIGVm
ZmVjdC0+aW5wdXRFZmZlY3RzKCkgPSB7IGlucHV0MSB9OworCisgICAgYXV0byBlZmZlY3QgPSBG
RUNvbXBvbmVudFRyYW5zZmVyOjpjcmVhdGUocmVkLCBncmVlbiwgYmx1ZSwgYWxwaGEpOworICAg
IGVmZmVjdC0+aW5wdXRFZmZlY3RzKCkgPSB7IFdURk1vdmUoaW5wdXQxKSB9OwogICAgIHJldHVy
biBlZmZlY3Q7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRUNvbXBv
bmVudFRyYW5zZmVyRWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFQ29tcG9uZW50
VHJhbnNmZXJFbGVtZW50LmgKaW5kZXggYmI1ODkzNDdkODgyNmRmYjM2MDllZGFjNmU4Yjk5M2E0
ZGQ1NDg2My4uNjAxNzEwZjdkMzUzNWExNDFhMTU3ODg1NGFmMmIwMzUxMTI5ZTk4MiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFQ29tcG9uZW50VHJhbnNmZXJFbGVtZW50LmgK
KysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFQ29tcG9uZW50VHJhbnNmZXJFbGVtZW50LmgK
QEAgLTQzLDcgKzQzLDcgQEAgcHJpdmF0ZToKICAgICAvLyBGSVhNRTogc3ZnQXR0cmlidXRlQ2hh
bmdlZCBtaXNzaW5nLgogICAgIHZvaWQgcGFyc2VBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFt
ZSYsIGNvbnN0IEF0b21TdHJpbmcmKSBvdmVycmlkZTsKIAotICAgIFJlZlB0cjxGaWx0ZXJFZmZl
Y3Q+IGJ1aWxkKFNWR0ZpbHRlckJ1aWxkZXIqLCBGaWx0ZXImKSBjb25zdCBvdmVycmlkZTsKKyAg
ICBSZWZQdHI8RmlsdGVyRWZmZWN0PiBidWlsZChTVkdGaWx0ZXJCdWlsZGVyJikgY29uc3Qgb3Zl
cnJpZGU7CiAKICAgICBQcm9wZXJ0eVJlZ2lzdHJ5IG1fcHJvcGVydHlSZWdpc3RyeSB7ICp0aGlz
IH07CiAgICAgUmVmPFNWR0FuaW1hdGVkU3RyaW5nPiBtX2luMSB7IFNWR0FuaW1hdGVkU3RyaW5n
OjpjcmVhdGUodGhpcykgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRUNv
bXBvc2l0ZUVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFQ29tcG9zaXRlRWxl
bWVudC5jcHAKaW5kZXggM2NhOTliODc1NzA4YmJkOGE2YmFmNjUzZGMwNmZlMjA1YWM5ODIzNS4u
N2ZjZWQyZTY0NTU0MGUzYjlkZDA5NmNiZTQ5OTFmNTg0MTU1MDUxNCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFQ29tcG9zaXRlRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvc3ZnL1NWR0ZFQ29tcG9zaXRlRWxlbWVudC5jcHAKQEAgLTEzMSwxOSArMTMxLDE2IEBA
IHZvaWQgU1ZHRkVDb21wb3NpdGVFbGVtZW50OjpzdmdBdHRyaWJ1dGVDaGFuZ2VkKGNvbnN0IFF1
YWxpZmllZE5hbWUmIGF0dHJOYW1lKQogICAgIFNWR0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0
cmlidXRlczo6c3ZnQXR0cmlidXRlQ2hhbmdlZChhdHRyTmFtZSk7CiB9CiAKLVJlZlB0cjxGaWx0
ZXJFZmZlY3Q+IFNWR0ZFQ29tcG9zaXRlRWxlbWVudDo6YnVpbGQoU1ZHRmlsdGVyQnVpbGRlciog
ZmlsdGVyQnVpbGRlciwgRmlsdGVyJiBmaWx0ZXIpIGNvbnN0CitSZWZQdHI8RmlsdGVyRWZmZWN0
PiBTVkdGRUNvbXBvc2l0ZUVsZW1lbnQ6OmJ1aWxkKFNWR0ZpbHRlckJ1aWxkZXImIGZpbHRlckJ1
aWxkZXIpIGNvbnN0CiB7Ci0gICAgYXV0byBpbnB1dDEgPSBmaWx0ZXJCdWlsZGVyLT5nZXRFZmZl
Y3RCeUlkKGluMSgpKTsKLSAgICBhdXRvIGlucHV0MiA9IGZpbHRlckJ1aWxkZXItPmdldEVmZmVj
dEJ5SWQoaW4yKCkpOworICAgIGF1dG8gaW5wdXQxID0gZmlsdGVyQnVpbGRlci5nZXRFZmZlY3RC
eUlkKGluMSgpKTsKKyAgICBhdXRvIGlucHV0MiA9IGZpbHRlckJ1aWxkZXIuZ2V0RWZmZWN0QnlJ
ZChpbjIoKSk7CiAgICAgCiAgICAgaWYgKCFpbnB1dDEgfHwgIWlucHV0MikKICAgICAgICAgcmV0
dXJuIG51bGxwdHI7CiAKLSAgICBhdXRvIGVmZmVjdCA9IEZFQ29tcG9zaXRlOjpjcmVhdGUoZmls
dGVyLCBzdmdPcGVyYXRvcigpLCBrMSgpLCBrMigpLCBrMygpLCBrNCgpKTsKLSAgICBGaWx0ZXJF
ZmZlY3RWZWN0b3ImIGlucHV0RWZmZWN0cyA9IGVmZmVjdC0+aW5wdXRFZmZlY3RzKCk7Ci0gICAg
aW5wdXRFZmZlY3RzLnJlc2VydmVDYXBhY2l0eSgyKTsKLSAgICBpbnB1dEVmZmVjdHMuYXBwZW5k
KGlucHV0MSk7Ci0gICAgaW5wdXRFZmZlY3RzLmFwcGVuZChpbnB1dDIpOyAgICAKKyAgICBhdXRv
IGVmZmVjdCA9IEZFQ29tcG9zaXRlOjpjcmVhdGUoc3ZnT3BlcmF0b3IoKSwgazEoKSwgazIoKSwg
azMoKSwgazQoKSk7CisgICAgZWZmZWN0LT5pbnB1dEVmZmVjdHMoKSA9IHsgV1RGTW92ZShpbnB1
dDEpLCBXVEZNb3ZlKGlucHV0MikgfTsKICAgICByZXR1cm4gZWZmZWN0OwogfQogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVDb21wb3NpdGVFbGVtZW50LmggYi9Tb3VyY2Uv
V2ViQ29yZS9zdmcvU1ZHRkVDb21wb3NpdGVFbGVtZW50LmgKaW5kZXggODFhNzhjODY1N2EwZmEz
MDQ0ZGY1YjdjNWEwODBkNmU3Nzk3MjJmNi4uNzRkODE0YzNjMjBlMGZkMzdlYjZhOGI1M2FmZjU2
OWQ4ZDExZGNhMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFQ29tcG9zaXRl
RWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRUNvbXBvc2l0ZUVsZW1lbnQu
aApAQCAtMTA5LDcgKzEwOSw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBzdmdBdHRyaWJ1dGVDaGFu
Z2VkKGNvbnN0IFF1YWxpZmllZE5hbWUmKSBvdmVycmlkZTsKIAogICAgIGJvb2wgc2V0RmlsdGVy
RWZmZWN0QXR0cmlidXRlKEZpbHRlckVmZmVjdCosIGNvbnN0IFF1YWxpZmllZE5hbWUmKSBvdmVy
cmlkZTsKLSAgICBSZWZQdHI8RmlsdGVyRWZmZWN0PiBidWlsZChTVkdGaWx0ZXJCdWlsZGVyKiwg
RmlsdGVyJikgY29uc3Qgb3ZlcnJpZGU7CisgICAgUmVmUHRyPEZpbHRlckVmZmVjdD4gYnVpbGQo
U1ZHRmlsdGVyQnVpbGRlciYpIGNvbnN0IG92ZXJyaWRlOwogCiAgICAgUHJvcGVydHlSZWdpc3Ry
eSBtX3Byb3BlcnR5UmVnaXN0cnkgeyAqdGhpcyB9OwogICAgIFJlZjxTVkdBbmltYXRlZFN0cmlu
Zz4gbV9pbjEgeyBTVkdBbmltYXRlZFN0cmluZzo6Y3JlYXRlKHRoaXMpIH07CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVDb252b2x2ZU1hdHJpeEVsZW1lbnQuY3BwIGIvU291
cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFQ29udm9sdmVNYXRyaXhFbGVtZW50LmNwcAppbmRleCBmNzUw
NTgxNWRlY2FiYjRlYTM0YjQzNWI0N2VhNWE4MGM2YTI2ZGYxLi4xYTgxMzRhOWM4YjdmYzBhNTA3
NWVkZTgxYTBkMzY5NzBlOThjNDdmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZH
RkVDb252b2x2ZU1hdHJpeEVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdG
RUNvbnZvbHZlTWF0cml4RWxlbWVudC5jcHAKQEAgLTE5MSw5ICsxOTEsOSBAQCB2b2lkIFNWR0ZF
Q29udm9sdmVNYXRyaXhFbGVtZW50OjpzdmdBdHRyaWJ1dGVDaGFuZ2VkKGNvbnN0IFF1YWxpZmll
ZE5hbWUmIGF0dHJOYQogICAgIFNWR0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlczo6
c3ZnQXR0cmlidXRlQ2hhbmdlZChhdHRyTmFtZSk7CiB9CiAKLVJlZlB0cjxGaWx0ZXJFZmZlY3Q+
IFNWR0ZFQ29udm9sdmVNYXRyaXhFbGVtZW50OjpidWlsZChTVkdGaWx0ZXJCdWlsZGVyKiBmaWx0
ZXJCdWlsZGVyLCBGaWx0ZXImIGZpbHRlcikgY29uc3QKK1JlZlB0cjxGaWx0ZXJFZmZlY3Q+IFNW
R0ZFQ29udm9sdmVNYXRyaXhFbGVtZW50OjpidWlsZChTVkdGaWx0ZXJCdWlsZGVyJiBmaWx0ZXJC
dWlsZGVyKSBjb25zdAogewotICAgIGF1dG8gaW5wdXQxID0gZmlsdGVyQnVpbGRlci0+Z2V0RWZm
ZWN0QnlJZChpbjEoKSk7CisgICAgYXV0byBpbnB1dDEgPSBmaWx0ZXJCdWlsZGVyLmdldEVmZmVj
dEJ5SWQoaW4xKCkpOwogCiAgICAgaWYgKCFpbnB1dDEpCiAgICAgICAgIHJldHVybiBudWxscHRy
OwpAQCAtMjQ2LDggKzI0Niw4IEBAIFJlZlB0cjxGaWx0ZXJFZmZlY3Q+IFNWR0ZFQ29udm9sdmVN
YXRyaXhFbGVtZW50OjpidWlsZChTVkdGaWx0ZXJCdWlsZGVyKiBmaWx0ZXJCCiAgICAgICAgICAg
ICBkaXZpc29yVmFsdWUgPSAxOwogICAgIH0KIAotICAgIGF1dG8gZWZmZWN0ID0gRkVDb252b2x2
ZU1hdHJpeDo6Y3JlYXRlKGZpbHRlciwgSW50U2l6ZShvcmRlclhWYWx1ZSwgb3JkZXJZVmFsdWUp
LCBkaXZpc29yVmFsdWUsIGJpYXMoKSwgSW50UG9pbnQodGFyZ2V0WFZhbHVlLCB0YXJnZXRZVmFs
dWUpLCBlZGdlTW9kZSgpLCBGbG9hdFBvaW50KGtlcm5lbFVuaXRMZW5ndGhYVmFsdWUsIGtlcm5l
bFVuaXRMZW5ndGhZVmFsdWUpLCBwcmVzZXJ2ZUFscGhhKCksIGtlcm5lbE1hdHJpeCk7Ci0gICAg
ZWZmZWN0LT5pbnB1dEVmZmVjdHMoKSA9IHsgaW5wdXQxIH07CisgICAgYXV0byBlZmZlY3QgPSBG
RUNvbnZvbHZlTWF0cml4OjpjcmVhdGUoSW50U2l6ZShvcmRlclhWYWx1ZSwgb3JkZXJZVmFsdWUp
LCBkaXZpc29yVmFsdWUsIGJpYXMoKSwgSW50UG9pbnQodGFyZ2V0WFZhbHVlLCB0YXJnZXRZVmFs
dWUpLCBlZGdlTW9kZSgpLCBGbG9hdFBvaW50KGtlcm5lbFVuaXRMZW5ndGhYVmFsdWUsIGtlcm5l
bFVuaXRMZW5ndGhZVmFsdWUpLCBwcmVzZXJ2ZUFscGhhKCksIGtlcm5lbE1hdHJpeCk7CisgICAg
ZWZmZWN0LT5pbnB1dEVmZmVjdHMoKSA9IHsgV1RGTW92ZShpbnB1dDEpIH07CiAgICAgcmV0dXJu
IGVmZmVjdDsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFQ29udm9s
dmVNYXRyaXhFbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVDb252b2x2ZU1hdHJp
eEVsZW1lbnQuaAppbmRleCA4NWMwMDI2OThjNjI3N2UwNDM3MGQzNTk4MmE5NWI4ZDkwNDliMzM5
Li4xYjZiYmU0ODcxMjc1YzQyMWM4ZGQ0NDA5YzFiNDg5NzI5NWFhMTBhIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVDb252b2x2ZU1hdHJpeEVsZW1lbnQuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9zdmcvU1ZHRkVDb252b2x2ZU1hdHJpeEVsZW1lbnQuaApAQCAtMTAzLDcgKzEw
Myw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBzdmdBdHRyaWJ1dGVDaGFuZ2VkKGNvbnN0IFF1YWxp
ZmllZE5hbWUmKSBvdmVycmlkZTsKIAogICAgIGJvb2wgc2V0RmlsdGVyRWZmZWN0QXR0cmlidXRl
KEZpbHRlckVmZmVjdCosIGNvbnN0IFF1YWxpZmllZE5hbWUmKSBvdmVycmlkZTsKLSAgICBSZWZQ
dHI8RmlsdGVyRWZmZWN0PiBidWlsZChTVkdGaWx0ZXJCdWlsZGVyKiwgRmlsdGVyJikgY29uc3Qg
b3ZlcnJpZGU7CisgICAgUmVmUHRyPEZpbHRlckVmZmVjdD4gYnVpbGQoU1ZHRmlsdGVyQnVpbGRl
ciYpIGNvbnN0IG92ZXJyaWRlOwogCiAgICAgUHJvcGVydHlSZWdpc3RyeSBtX3Byb3BlcnR5UmVn
aXN0cnkgeyAqdGhpcyB9OwogICAgIFJlZjxTVkdBbmltYXRlZFN0cmluZz4gbV9pbjEgeyBTVkdB
bmltYXRlZFN0cmluZzo6Y3JlYXRlKHRoaXMpIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9zdmcvU1ZHRkVEaWZmdXNlTGlnaHRpbmdFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N2
Zy9TVkdGRURpZmZ1c2VMaWdodGluZ0VsZW1lbnQuY3BwCmluZGV4IDE1MmM5ODVmZDhlOTVhZTk5
NTdlNmUyMWQ2YmYyYTEwYzQ1NGJkZDUuLmRkMzk0NTk1Y2Y3MjY0OGE2N2Q1MjhhMTM0MTUxZGEz
NjdmNGM2OTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRURpZmZ1c2VMaWdo
dGluZ0VsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRURpZmZ1c2VMaWdo
dGluZ0VsZW1lbnQuY3BwCkBAIC0xNTEsOSArMTUxLDkgQEAgdm9pZCBTVkdGRURpZmZ1c2VMaWdo
dGluZ0VsZW1lbnQ6OmxpZ2h0RWxlbWVudEF0dHJpYnV0ZUNoYW5nZWQoY29uc3QgU1ZHRkVMaWdo
dEUKICAgICBwcmltaXRpdmVBdHRyaWJ1dGVDaGFuZ2VkKGF0dHJOYW1lKTsKIH0KIAotUmVmUHRy
PEZpbHRlckVmZmVjdD4gU1ZHRkVEaWZmdXNlTGlnaHRpbmdFbGVtZW50OjpidWlsZChTVkdGaWx0
ZXJCdWlsZGVyKiBmaWx0ZXJCdWlsZGVyLCBGaWx0ZXImIGZpbHRlcikgY29uc3QKK1JlZlB0cjxG
aWx0ZXJFZmZlY3Q+IFNWR0ZFRGlmZnVzZUxpZ2h0aW5nRWxlbWVudDo6YnVpbGQoU1ZHRmlsdGVy
QnVpbGRlciYgZmlsdGVyQnVpbGRlcikgY29uc3QKIHsKLSAgICBhdXRvIGlucHV0MSA9IGZpbHRl
ckJ1aWxkZXItPmdldEVmZmVjdEJ5SWQoaW4xKCkpOworICAgIGF1dG8gaW5wdXQxID0gZmlsdGVy
QnVpbGRlci5nZXRFZmZlY3RCeUlkKGluMSgpKTsKIAogICAgIGlmICghaW5wdXQxKQogICAgICAg
ICByZXR1cm4gbnVsbHB0cjsKQEAgLTE2Miw3ICsxNjIsNyBAQCBSZWZQdHI8RmlsdGVyRWZmZWN0
PiBTVkdGRURpZmZ1c2VMaWdodGluZ0VsZW1lbnQ6OmJ1aWxkKFNWR0ZpbHRlckJ1aWxkZXIqIGZp
bHRlcgogICAgIGlmICghbGlnaHRFbGVtZW50KQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAg
ICAKLSAgICBhdXRvIGxpZ2h0U291cmNlID0gbGlnaHRFbGVtZW50LT5saWdodFNvdXJjZSgqZmls
dGVyQnVpbGRlcik7CisgICAgYXV0byBsaWdodFNvdXJjZSA9IGxpZ2h0RWxlbWVudC0+bGlnaHRT
b3VyY2UoZmlsdGVyQnVpbGRlcik7CiAKICAgICBSZW5kZXJPYmplY3QqIHJlbmRlcmVyID0gdGhp
cy0+cmVuZGVyZXIoKTsKICAgICBpZiAoIXJlbmRlcmVyKQpAQCAtMTcwLDggKzE3MCw4IEBAIFJl
ZlB0cjxGaWx0ZXJFZmZlY3Q+IFNWR0ZFRGlmZnVzZUxpZ2h0aW5nRWxlbWVudDo6YnVpbGQoU1ZH
RmlsdGVyQnVpbGRlciogZmlsdGVyCiAKICAgICBDb2xvciBjb2xvciA9IHJlbmRlcmVyLT5zdHls
ZSgpLmNvbG9yQnlBcHBseWluZ0NvbG9yRmlsdGVyKHJlbmRlcmVyLT5zdHlsZSgpLnN2Z1N0eWxl
KCkubGlnaHRpbmdDb2xvcigpKTsKIAotICAgIGF1dG8gZWZmZWN0ID0gRkVEaWZmdXNlTGlnaHRp
bmc6OmNyZWF0ZShmaWx0ZXIsIGNvbG9yLCBzdXJmYWNlU2NhbGUoKSwgZGlmZnVzZUNvbnN0YW50
KCksIGtlcm5lbFVuaXRMZW5ndGhYKCksIGtlcm5lbFVuaXRMZW5ndGhZKCksIFdURk1vdmUobGln
aHRTb3VyY2UpKTsKLSAgICBlZmZlY3QtPmlucHV0RWZmZWN0cygpID0geyBpbnB1dDEgfTsKKyAg
ICBhdXRvIGVmZmVjdCA9IEZFRGlmZnVzZUxpZ2h0aW5nOjpjcmVhdGUoY29sb3IsIHN1cmZhY2VT
Y2FsZSgpLCBkaWZmdXNlQ29uc3RhbnQoKSwga2VybmVsVW5pdExlbmd0aFgoKSwga2VybmVsVW5p
dExlbmd0aFkoKSwgV1RGTW92ZShsaWdodFNvdXJjZSkpOworICAgIGVmZmVjdC0+aW5wdXRFZmZl
Y3RzKCkgPSB7IFdURk1vdmUoaW5wdXQxKSB9OwogICAgIHJldHVybiBlZmZlY3Q7CiB9CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRURpZmZ1c2VMaWdodGluZ0VsZW1lbnQu
aCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRURpZmZ1c2VMaWdodGluZ0VsZW1lbnQuaAppbmRl
eCA2ODk5OTYwOWY0YjZiNTZhNzZjODhlYTU2OTVmMWUwZTllMjA1NTgwLi5iMmFhYzhiMDNlZDI0
ZDIxZDk4YjUxOWZiYThlNWY5NDVjYTMwODBkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9z
dmcvU1ZHRkVEaWZmdXNlTGlnaHRpbmdFbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvc3Zn
L1NWR0ZFRGlmZnVzZUxpZ2h0aW5nRWxlbWVudC5oCkBAIC01OCw3ICs1OCw3IEBAIHByaXZhdGU6
CiAgICAgdm9pZCBzdmdBdHRyaWJ1dGVDaGFuZ2VkKGNvbnN0IFF1YWxpZmllZE5hbWUmKSBvdmVy
cmlkZTsKIAogICAgIGJvb2wgc2V0RmlsdGVyRWZmZWN0QXR0cmlidXRlKEZpbHRlckVmZmVjdCos
IGNvbnN0IFF1YWxpZmllZE5hbWUmKSBvdmVycmlkZTsKLSAgICBSZWZQdHI8RmlsdGVyRWZmZWN0
PiBidWlsZChTVkdGaWx0ZXJCdWlsZGVyKiwgRmlsdGVyJikgY29uc3Qgb3ZlcnJpZGU7CisgICAg
UmVmUHRyPEZpbHRlckVmZmVjdD4gYnVpbGQoU1ZHRmlsdGVyQnVpbGRlciYpIGNvbnN0IG92ZXJy
aWRlOwogCiAgICAgUHJvcGVydHlSZWdpc3RyeSBtX3Byb3BlcnR5UmVnaXN0cnkgeyAqdGhpcyB9
OwogICAgIFJlZjxTVkdBbmltYXRlZFN0cmluZz4gbV9pbjEgeyBTVkdBbmltYXRlZFN0cmluZzo6
Y3JlYXRlKHRoaXMpIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVEaXNw
bGFjZW1lbnRNYXBFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRURpc3BsYWNl
bWVudE1hcEVsZW1lbnQuY3BwCmluZGV4IDBjNWU4MjViYzgyNTYwZjM2YTI2OWVhNmQ3MjJkZmQw
NTE3M2Q4YzIuLjY5MDc1MTM3NTA3ZDZjNjQ3NDlhMWM4YmM0MTJhMGFlZTUxYTFhMmQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRURpc3BsYWNlbWVudE1hcEVsZW1lbnQuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRURpc3BsYWNlbWVudE1hcEVsZW1lbnQuY3Bw
CkBAIC0xMTUsMTkgKzExNSwxNiBAQCB2b2lkIFNWR0ZFRGlzcGxhY2VtZW50TWFwRWxlbWVudDo6
c3ZnQXR0cmlidXRlQ2hhbmdlZChjb25zdCBRdWFsaWZpZWROYW1lJiBhdHRyTgogICAgIFNWR0Zp
bHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlczo6c3ZnQXR0cmlidXRlQ2hhbmdlZChhdHRy
TmFtZSk7CiB9CiAKLVJlZlB0cjxGaWx0ZXJFZmZlY3Q+IFNWR0ZFRGlzcGxhY2VtZW50TWFwRWxl
bWVudDo6YnVpbGQoU1ZHRmlsdGVyQnVpbGRlciogZmlsdGVyQnVpbGRlciwgRmlsdGVyJiBmaWx0
ZXIpIGNvbnN0CitSZWZQdHI8RmlsdGVyRWZmZWN0PiBTVkdGRURpc3BsYWNlbWVudE1hcEVsZW1l
bnQ6OmJ1aWxkKFNWR0ZpbHRlckJ1aWxkZXImIGZpbHRlckJ1aWxkZXIpIGNvbnN0CiB7Ci0gICAg
YXV0byBpbnB1dDEgPSBmaWx0ZXJCdWlsZGVyLT5nZXRFZmZlY3RCeUlkKGluMSgpKTsKLSAgICBh
dXRvIGlucHV0MiA9IGZpbHRlckJ1aWxkZXItPmdldEVmZmVjdEJ5SWQoaW4yKCkpOworICAgIGF1
dG8gaW5wdXQxID0gZmlsdGVyQnVpbGRlci5nZXRFZmZlY3RCeUlkKGluMSgpKTsKKyAgICBhdXRv
IGlucHV0MiA9IGZpbHRlckJ1aWxkZXIuZ2V0RWZmZWN0QnlJZChpbjIoKSk7CiAgICAgCiAgICAg
aWYgKCFpbnB1dDEgfHwgIWlucHV0MikKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKLSAgICBh
dXRvIGVmZmVjdCA9IEZFRGlzcGxhY2VtZW50TWFwOjpjcmVhdGUoZmlsdGVyLCB4Q2hhbm5lbFNl
bGVjdG9yKCksIHlDaGFubmVsU2VsZWN0b3IoKSwgc2NhbGUoKSk7Ci0gICAgRmlsdGVyRWZmZWN0
VmVjdG9yJiBpbnB1dEVmZmVjdHMgPSBlZmZlY3QtPmlucHV0RWZmZWN0cygpOwotICAgIGlucHV0
RWZmZWN0cy5yZXNlcnZlQ2FwYWNpdHkoMik7Ci0gICAgaW5wdXRFZmZlY3RzLmFwcGVuZChpbnB1
dDEpOwotICAgIGlucHV0RWZmZWN0cy5hcHBlbmQoaW5wdXQyKTsgICAgCisgICAgYXV0byBlZmZl
Y3QgPSBGRURpc3BsYWNlbWVudE1hcDo6Y3JlYXRlKHhDaGFubmVsU2VsZWN0b3IoKSwgeUNoYW5u
ZWxTZWxlY3RvcigpLCBzY2FsZSgpKTsKKyAgICBlZmZlY3QtPmlucHV0RWZmZWN0cygpID0geyBX
VEZNb3ZlKGlucHV0MSksIFdURk1vdmUoaW5wdXQyKSB9OwogICAgIHJldHVybiBlZmZlY3Q7CiB9
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRURpc3BsYWNlbWVudE1hcEVs
ZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRURpc3BsYWNlbWVudE1hcEVsZW1lbnQu
aAppbmRleCBhYTkxZGYzOGIzNjI5OGYxMjFhMTQxMWM0ZDBhZTVlY2Q1ODY2NWQzLi5mMmM2ZDBi
MThmODVjOTRmMzg0ZjViZDFiZWZjMzU5ZWRlODIzZTZhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9zdmcvU1ZHRkVEaXNwbGFjZW1lbnRNYXBFbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNv
cmUvc3ZnL1NWR0ZFRGlzcGxhY2VtZW50TWFwRWxlbWVudC5oCkBAIC05MSw3ICs5MSw3IEBAIHBy
aXZhdGU6CiAgICAgdm9pZCBzdmdBdHRyaWJ1dGVDaGFuZ2VkKGNvbnN0IFF1YWxpZmllZE5hbWUm
KSBvdmVycmlkZTsKIAogICAgIGJvb2wgc2V0RmlsdGVyRWZmZWN0QXR0cmlidXRlKEZpbHRlckVm
ZmVjdCosIGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0dHJOYW1lKSBvdmVycmlkZTsKLSAgICBSZWZQ
dHI8RmlsdGVyRWZmZWN0PiBidWlsZChTVkdGaWx0ZXJCdWlsZGVyKiwgRmlsdGVyJikgY29uc3Qg
b3ZlcnJpZGU7CisgICAgUmVmUHRyPEZpbHRlckVmZmVjdD4gYnVpbGQoU1ZHRmlsdGVyQnVpbGRl
ciYpIGNvbnN0IG92ZXJyaWRlOwogCiAgICAgUHJvcGVydHlSZWdpc3RyeSBtX3Byb3BlcnR5UmVn
aXN0cnkgeyAqdGhpcyB9OwogICAgIFJlZjxTVkdBbmltYXRlZFN0cmluZz4gbV9pbjEgeyBTVkdB
bmltYXRlZFN0cmluZzo6Y3JlYXRlKHRoaXMpIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9zdmcvU1ZHRkVEcm9wU2hhZG93RWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZH
RkVEcm9wU2hhZG93RWxlbWVudC5jcHAKaW5kZXggMjJiY2UxZDMzMzE3Yzk1NzFmZTVkNzlmNGIz
MjZhODliZmM1YjY4MS4uNjU3YWMxNzVhMzA4ODFlNTNmYmZmNzA4ZGNmMTQxNjA1ZTg0MDkwNyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFRHJvcFNoYWRvd0VsZW1lbnQuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRURyb3BTaGFkb3dFbGVtZW50LmNwcApAQCAt
OTcsOCArOTcsMTIgQEAgdm9pZCBTVkdGRURyb3BTaGFkb3dFbGVtZW50OjpzdmdBdHRyaWJ1dGVD
aGFuZ2VkKGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0dHJOYW1lKQogICAgIFNWR0ZpbHRlclByaW1p
dGl2ZVN0YW5kYXJkQXR0cmlidXRlczo6c3ZnQXR0cmlidXRlQ2hhbmdlZChhdHRyTmFtZSk7CiB9
CiAKLVJlZlB0cjxGaWx0ZXJFZmZlY3Q+IFNWR0ZFRHJvcFNoYWRvd0VsZW1lbnQ6OmJ1aWxkKFNW
R0ZpbHRlckJ1aWxkZXIqIGZpbHRlckJ1aWxkZXIsIEZpbHRlciYgZmlsdGVyKSBjb25zdAorUmVm
UHRyPEZpbHRlckVmZmVjdD4gU1ZHRkVEcm9wU2hhZG93RWxlbWVudDo6YnVpbGQoU1ZHRmlsdGVy
QnVpbGRlciYgZmlsdGVyQnVpbGRlcikgY29uc3QKIHsKKyAgICBhdXRvIGlucHV0MSA9IGZpbHRl
ckJ1aWxkZXIuZ2V0RWZmZWN0QnlJZChpbjEoKSk7CisgICAgaWYgKCFpbnB1dDEpCisgICAgICAg
IHJldHVybiBudWxscHRyOworCiAgICAgUmVuZGVyT2JqZWN0KiByZW5kZXJlciA9IHRoaXMtPnJl
bmRlcmVyKCk7CiAgICAgaWYgKCFyZW5kZXJlcikKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CkBA
IC0xMTEsMTIgKzExNSw4IEBAIFJlZlB0cjxGaWx0ZXJFZmZlY3Q+IFNWR0ZFRHJvcFNoYWRvd0Vs
ZW1lbnQ6OmJ1aWxkKFNWR0ZpbHRlckJ1aWxkZXIqIGZpbHRlckJ1aWxkCiAgICAgQ29sb3IgY29s
b3IgPSByZW5kZXJlci0+c3R5bGUoKS5jb2xvckJ5QXBwbHlpbmdDb2xvckZpbHRlcihzdmdTdHls
ZS5mbG9vZENvbG9yKCkpOwogICAgIGZsb2F0IG9wYWNpdHkgPSBzdmdTdHlsZS5mbG9vZE9wYWNp
dHkoKTsKIAotICAgIGF1dG8gaW5wdXQxID0gZmlsdGVyQnVpbGRlci0+Z2V0RWZmZWN0QnlJZChp
bjEoKSk7Ci0gICAgaWYgKCFpbnB1dDEpCi0gICAgICAgIHJldHVybiBudWxscHRyOwotCi0gICAg
YXV0byBlZmZlY3QgPSBGRURyb3BTaGFkb3c6OmNyZWF0ZShmaWx0ZXIsIHN0ZERldmlhdGlvblgo
KSwgc3RkRGV2aWF0aW9uWSgpLCBkeCgpLCBkeSgpLCBjb2xvciwgb3BhY2l0eSk7Ci0gICAgZWZm
ZWN0LT5pbnB1dEVmZmVjdHMoKSA9IHsgaW5wdXQxIH07CisgICAgYXV0byBlZmZlY3QgPSBGRURy
b3BTaGFkb3c6OmNyZWF0ZShzdGREZXZpYXRpb25YKCksIHN0ZERldmlhdGlvblkoKSwgZHgoKSwg
ZHkoKSwgY29sb3IsIG9wYWNpdHkpOworICAgIGVmZmVjdC0+aW5wdXRFZmZlY3RzKCkgPSB7IFdU
Rk1vdmUoaW5wdXQxKSB9OwogICAgIHJldHVybiBlZmZlY3Q7CiB9CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3N2Zy9TVkdGRURyb3BTaGFkb3dFbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29y
ZS9zdmcvU1ZHRkVEcm9wU2hhZG93RWxlbWVudC5oCmluZGV4IDliNjJkMjRiNDU0YmI3ZDI3NThl
NzEyYjYyMWI4Y2JlNDJmNzQ1MWQuLjNlNDA1ZGU0ODljNjgxYTc2YzQ0ZjlhODI5NzMzYTIwMjZi
NGQ4ZmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRURyb3BTaGFkb3dFbGVt
ZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFRHJvcFNoYWRvd0VsZW1lbnQuaApA
QCAtNTMsNyArNTMsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgcGFyc2VBdHRyaWJ1dGUoY29uc3Qg
UXVhbGlmaWVkTmFtZSYsIGNvbnN0IEF0b21TdHJpbmcmKSBvdmVycmlkZTsKICAgICB2b2lkIHN2
Z0F0dHJpYnV0ZUNoYW5nZWQoY29uc3QgUXVhbGlmaWVkTmFtZSYpIG92ZXJyaWRlOwogCi0gICAg
UmVmUHRyPEZpbHRlckVmZmVjdD4gYnVpbGQoU1ZHRmlsdGVyQnVpbGRlciosIEZpbHRlciYpIGNv
bnN0IG92ZXJyaWRlOworICAgIFJlZlB0cjxGaWx0ZXJFZmZlY3Q+IGJ1aWxkKFNWR0ZpbHRlckJ1
aWxkZXImKSBjb25zdCBvdmVycmlkZTsKIAogICAgIFByb3BlcnR5UmVnaXN0cnkgbV9wcm9wZXJ0
eVJlZ2lzdHJ5IHsgKnRoaXMgfTsKICAgICBSZWY8U1ZHQW5pbWF0ZWRTdHJpbmc+IG1faW4xIHsg
U1ZHQW5pbWF0ZWRTdHJpbmc6OmNyZWF0ZSh0aGlzKSB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvc3ZnL1NWR0ZFRmxvb2RFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdG
RUZsb29kRWxlbWVudC5jcHAKaW5kZXggYzIyOGUyMmQ1NjVkMGUxNjNmZjg3ZDBiNGJjYWJkMjI0
NDc1OGZjMi4uZjMyOGNjN2MxNWVlNzkxYjRhYWJhM2E4ZTcxYTgwNGM4MDkzZGNmZSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFRmxvb2RFbGVtZW50LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9zdmcvU1ZHRkVGbG9vZEVsZW1lbnQuY3BwCkBAIC01OCw3ICs1OCw3IEBAIGJv
b2wgU1ZHRkVGbG9vZEVsZW1lbnQ6OnNldEZpbHRlckVmZmVjdEF0dHJpYnV0ZShGaWx0ZXJFZmZl
Y3QqIGVmZmVjdCwgY29uc3QgUXVhCiAgICAgcmV0dXJuIGZhbHNlOwogfQogCi1SZWZQdHI8Rmls
dGVyRWZmZWN0PiBTVkdGRUZsb29kRWxlbWVudDo6YnVpbGQoU1ZHRmlsdGVyQnVpbGRlciosIEZp
bHRlciYgZmlsdGVyKSBjb25zdAorUmVmUHRyPEZpbHRlckVmZmVjdD4gU1ZHRkVGbG9vZEVsZW1l
bnQ6OmJ1aWxkKFNWR0ZpbHRlckJ1aWxkZXImKSBjb25zdAogewogICAgIFJlbmRlck9iamVjdCog
cmVuZGVyZXIgPSB0aGlzLT5yZW5kZXJlcigpOwogICAgIGlmICghcmVuZGVyZXIpCkBAIC02OSw3
ICs2OSw3IEBAIFJlZlB0cjxGaWx0ZXJFZmZlY3Q+IFNWR0ZFRmxvb2RFbGVtZW50OjpidWlsZChT
VkdGaWx0ZXJCdWlsZGVyKiwgRmlsdGVyJiBmaWx0ZXIpCiAgICAgQ29sb3IgY29sb3IgPSByZW5k
ZXJlci0+c3R5bGUoKS5jb2xvckJ5QXBwbHlpbmdDb2xvckZpbHRlcihzdmdTdHlsZS5mbG9vZENv
bG9yKCkpOwogICAgIGZsb2F0IG9wYWNpdHkgPSBzdmdTdHlsZS5mbG9vZE9wYWNpdHkoKTsKIAot
ICAgIHJldHVybiBGRUZsb29kOjpjcmVhdGUoZmlsdGVyLCBjb2xvciwgb3BhY2l0eSk7CisgICAg
cmV0dXJuIEZFRmxvb2Q6OmNyZWF0ZShjb2xvciwgb3BhY2l0eSk7CiB9CiAKIH0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRUZsb29kRWxlbWVudC5oIGIvU291cmNlL1dlYkNv
cmUvc3ZnL1NWR0ZFRmxvb2RFbGVtZW50LmgKaW5kZXggYjk2YTQzYWEzMTNlNzVlNGEzMTY3MjQ4
YTFiNmY1Y2Y1MWZlZTkxMS4uYWVkNjY5MTkzM2JkMDJmMzMwMWE5MjM5N2I3NDA1OWZmNmJlYzRi
ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFRmxvb2RFbGVtZW50LmgKKysr
IGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFRmxvb2RFbGVtZW50LmgKQEAgLTM2LDcgKzM2LDcg
QEAgcHJpdmF0ZToKICAgICBjb25zdCBTVkdQcm9wZXJ0eVJlZ2lzdHJ5JiBwcm9wZXJ0eVJlZ2lz
dHJ5KCkgY29uc3QgZmluYWwgeyByZXR1cm4gbV9wcm9wZXJ0eVJlZ2lzdHJ5OyB9CiAKICAgICBi
b29sIHNldEZpbHRlckVmZmVjdEF0dHJpYnV0ZShGaWx0ZXJFZmZlY3QqLCBjb25zdCBRdWFsaWZp
ZWROYW1lJiBhdHRyTmFtZSkgb3ZlcnJpZGU7Ci0gICAgUmVmUHRyPEZpbHRlckVmZmVjdD4gYnVp
bGQoU1ZHRmlsdGVyQnVpbGRlciosIEZpbHRlciYpIGNvbnN0IG92ZXJyaWRlOworICAgIFJlZlB0
cjxGaWx0ZXJFZmZlY3Q+IGJ1aWxkKFNWR0ZpbHRlckJ1aWxkZXImKSBjb25zdCBvdmVycmlkZTsK
IAogICAgIFByb3BlcnR5UmVnaXN0cnkgbV9wcm9wZXJ0eVJlZ2lzdHJ5IHsgKnRoaXMgfTsKIH07
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVHYXVzc2lhbkJsdXJFbGVtZW50
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRUdhdXNzaWFuQmx1ckVsZW1lbnQuY3BwCmlu
ZGV4IDdhOTk4MjI0YzkyMTk1NTUyNDRhODY5Y2E3OGE4MzBkNTYzYzU5OWQuLmYxZTZiZjQ5YTRk
YjNkY2E3NzVjOWI3ZWZhNWRiOWRjODY5ODg3MmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3N2Zy9TVkdGRUdhdXNzaWFuQmx1ckVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2
Zy9TVkdGRUdhdXNzaWFuQmx1ckVsZW1lbnQuY3BwCkBAIC05NSwxNyArOTUsMTcgQEAgdm9pZCBT
VkdGRUdhdXNzaWFuQmx1ckVsZW1lbnQ6OnN2Z0F0dHJpYnV0ZUNoYW5nZWQoY29uc3QgUXVhbGlm
aWVkTmFtZSYgYXR0ck5hbWUKICAgICBTVkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0
ZXM6OnN2Z0F0dHJpYnV0ZUNoYW5nZWQoYXR0ck5hbWUpOwogfQogCi1SZWZQdHI8RmlsdGVyRWZm
ZWN0PiBTVkdGRUdhdXNzaWFuQmx1ckVsZW1lbnQ6OmJ1aWxkKFNWR0ZpbHRlckJ1aWxkZXIqIGZp
bHRlckJ1aWxkZXIsIEZpbHRlciYgZmlsdGVyKSBjb25zdAorUmVmUHRyPEZpbHRlckVmZmVjdD4g
U1ZHRkVHYXVzc2lhbkJsdXJFbGVtZW50OjpidWlsZChTVkdGaWx0ZXJCdWlsZGVyJiBmaWx0ZXJC
dWlsZGVyKSBjb25zdAogewotICAgIGF1dG8gaW5wdXQxID0gZmlsdGVyQnVpbGRlci0+Z2V0RWZm
ZWN0QnlJZChpbjEoKSk7CisgICAgYXV0byBpbnB1dDEgPSBmaWx0ZXJCdWlsZGVyLmdldEVmZmVj
dEJ5SWQoaW4xKCkpOwogICAgIGlmICghaW5wdXQxKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsK
IAogICAgIGlmIChzdGREZXZpYXRpb25YKCkgPCAwIHx8IHN0ZERldmlhdGlvblkoKSA8IDApCiAg
ICAgICAgIHJldHVybiBudWxscHRyOwogCi0gICAgYXV0byBlZmZlY3QgPSBGRUdhdXNzaWFuQmx1
cjo6Y3JlYXRlKGZpbHRlciwgc3RkRGV2aWF0aW9uWCgpLCBzdGREZXZpYXRpb25ZKCksIGVkZ2VN
b2RlKCkpOwotICAgIGVmZmVjdC0+aW5wdXRFZmZlY3RzKCkgPSB7IGlucHV0MSB9OworICAgIGF1
dG8gZWZmZWN0ID0gRkVHYXVzc2lhbkJsdXI6OmNyZWF0ZShzdGREZXZpYXRpb25YKCksIHN0ZERl
dmlhdGlvblkoKSwgZWRnZU1vZGUoKSk7CisgICAgZWZmZWN0LT5pbnB1dEVmZmVjdHMoKSA9IHsg
V1RGTW92ZShpbnB1dDEpIH07CiAgICAgcmV0dXJuIGVmZmVjdDsKIH0KIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFR2F1c3NpYW5CbHVyRWxlbWVudC5oIGIvU291cmNlL1dl
YkNvcmUvc3ZnL1NWR0ZFR2F1c3NpYW5CbHVyRWxlbWVudC5oCmluZGV4IGQ4OWUxYTc0OGZiMmM1
MDllMjE0ZmU5NGFlNDEwMDFjZTQ4ZWUwYjIuLmY0MGViMzM3NzhjNDNkZjYxZWU1ODk2M2VlY2Y5
ZWNkYmE1NDljYzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRUdhdXNzaWFu
Qmx1ckVsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVHYXVzc2lhbkJsdXJF
bGVtZW50LmgKQEAgLTUzLDcgKzUzLDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIHBhcnNlQXR0cmli
dXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmLCBjb25zdCBBdG9tU3RyaW5nJikgb3ZlcnJpZGU7CiAg
ICAgdm9pZCBzdmdBdHRyaWJ1dGVDaGFuZ2VkKGNvbnN0IFF1YWxpZmllZE5hbWUmKSBvdmVycmlk
ZTsKIAotICAgIFJlZlB0cjxGaWx0ZXJFZmZlY3Q+IGJ1aWxkKFNWR0ZpbHRlckJ1aWxkZXIqLCBG
aWx0ZXImKSBjb25zdCBvdmVycmlkZTsKKyAgICBSZWZQdHI8RmlsdGVyRWZmZWN0PiBidWlsZChT
VkdGaWx0ZXJCdWlsZGVyJikgY29uc3Qgb3ZlcnJpZGU7CiAKICAgICBQcm9wZXJ0eVJlZ2lzdHJ5
IG1fcHJvcGVydHlSZWdpc3RyeSB7ICp0aGlzIH07CiAgICAgUmVmPFNWR0FuaW1hdGVkU3RyaW5n
PiBtX2luMSB7IFNWR0FuaW1hdGVkU3RyaW5nOjpjcmVhdGUodGhpcykgfTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRUltYWdlRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9zdmcvU1ZHRkVJbWFnZUVsZW1lbnQuY3BwCmluZGV4IDdmODc4NWEyMWZmMDJiZGY4NjU2YjQ4
ZjlhOTk4Njk2ODAzMzJmNmMuLmU2MzVkMTI2MzE4NDA3NTY0NTBjZjI0MTU2ZDEzYjMyMjhjNTFl
NzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRUltYWdlRWxlbWVudC5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFSW1hZ2VFbGVtZW50LmNwcApAQCAtMjA4LDE2
ICsyMDgsMTYgQEAgc3RkOjp0dXBsZTxSZWZQdHI8SW1hZ2VCdWZmZXI+LCBGbG9hdFJlY3Q+IFNW
R0ZFSW1hZ2VFbGVtZW50OjppbWFnZUJ1ZmZlckZvckVmZmUKICAgICByZXR1cm4geyBpbWFnZUJ1
ZmZlciwgaW1hZ2VSZWN0IH07CiB9CiAKLVJlZlB0cjxGaWx0ZXJFZmZlY3Q+IFNWR0ZFSW1hZ2VF
bGVtZW50OjpidWlsZChTVkdGaWx0ZXJCdWlsZGVyKiwgRmlsdGVyJiBmaWx0ZXIpIGNvbnN0CitS
ZWZQdHI8RmlsdGVyRWZmZWN0PiBTVkdGRUltYWdlRWxlbWVudDo6YnVpbGQoU1ZHRmlsdGVyQnVp
bGRlciYpIGNvbnN0CiB7CiAgICAgaWYgKG1fY2FjaGVkSW1hZ2UpCi0gICAgICAgIHJldHVybiBG
RUltYWdlOjpjcmVhdGUoZmlsdGVyLCBSZWY8SW1hZ2U+IHsgKm1fY2FjaGVkSW1hZ2UtPmltYWdl
Rm9yUmVuZGVyZXIocmVuZGVyZXIoKSkgfSwgcHJlc2VydmVBc3BlY3RSYXRpbygpKTsKKyAgICAg
ICAgcmV0dXJuIEZFSW1hZ2U6OmNyZWF0ZShSZWYgeyAqbV9jYWNoZWRJbWFnZS0+aW1hZ2VGb3JS
ZW5kZXJlcihyZW5kZXJlcigpKSB9LCBwcmVzZXJ2ZUFzcGVjdFJhdGlvKCkpOwogCiAgICAgYXV0
byBbaW1hZ2VCdWZmZXIsIGltYWdlUmVjdF0gPSBpbWFnZUJ1ZmZlckZvckVmZmVjdCgpOwogICAg
IGlmICghaW1hZ2VCdWZmZXIpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCi0gICAgcmV0dXJu
IEZFSW1hZ2U6OmNyZWF0ZShmaWx0ZXIsIGltYWdlQnVmZmVyLnJlbGVhc2VOb25OdWxsKCksIGlt
YWdlUmVjdCwgcHJlc2VydmVBc3BlY3RSYXRpbygpKTsKKyAgICByZXR1cm4gRkVJbWFnZTo6Y3Jl
YXRlKGltYWdlQnVmZmVyLnJlbGVhc2VOb25OdWxsKCksIGltYWdlUmVjdCwgcHJlc2VydmVBc3Bl
Y3RSYXRpbygpKTsKIH0KIAogdm9pZCBTVkdGRUltYWdlRWxlbWVudDo6YWRkU3VicmVzb3VyY2VB
dHRyaWJ1dGVVUkxzKExpc3RIYXNoU2V0PFVSTD4mIHVybHMpIGNvbnN0CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVJbWFnZUVsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL3N2
Zy9TVkdGRUltYWdlRWxlbWVudC5oCmluZGV4IDYwY2UxMDJjMGY3MmFjODhjYTkwMDEwMzczZDY2
NGM2NjMyZDRiZTEuLmRmOWQ2ZWYwNDFlNTRiMmFiZDIyMDA1ZDkwMzRiYmE2OWUyNWJlNTEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRUltYWdlRWxlbWVudC5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3N2Zy9TVkdGRUltYWdlRWxlbWVudC5oCkBAIC01Nyw3ICs1Nyw3IEBAIHBy
aXZhdGU6CiAKICAgICBzdGQ6OnR1cGxlPFJlZlB0cjxJbWFnZUJ1ZmZlcj4sIEZsb2F0UmVjdD4g
aW1hZ2VCdWZmZXJGb3JFZmZlY3QoKSBjb25zdDsKIAotICAgIFJlZlB0cjxGaWx0ZXJFZmZlY3Q+
IGJ1aWxkKFNWR0ZpbHRlckJ1aWxkZXIqLCBGaWx0ZXImKSBjb25zdCBvdmVycmlkZTsKKyAgICBS
ZWZQdHI8RmlsdGVyRWZmZWN0PiBidWlsZChTVkdGaWx0ZXJCdWlsZGVyJikgY29uc3Qgb3ZlcnJp
ZGU7CiAKICAgICB2b2lkIGNsZWFyUmVzb3VyY2VSZWZlcmVuY2VzKCk7CiAgICAgdm9pZCByZXF1
ZXN0SW1hZ2VSZXNvdXJjZSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZF
TWVyZ2VFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRU1lcmdlRWxlbWVudC5j
cHAKaW5kZXggYmUyZjZlMDMwN2RjNTUxNjAwNzkwZmQ1YmYxODJmMWQ5NDYyM2RkNi4uZmI0OTNl
NTlkZDgyYmM2OWFkNzkxYjM3NWNlOGE4MjkyY2Q3YzgxZiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvc3ZnL1NWR0ZFTWVyZ2VFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcv
U1ZHRkVNZXJnZUVsZW1lbnQuY3BwCkBAIC00NSwxMyArNDUsMTIgQEAgUmVmPFNWR0ZFTWVyZ2VF
bGVtZW50PiBTVkdGRU1lcmdlRWxlbWVudDo6Y3JlYXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIHRh
Z05hbWUsIEQKICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBTVkdGRU1lcmdlRWxlbWVudCh0YWdO
YW1lLCBkb2N1bWVudCkpOwogfQogCi1SZWZQdHI8RmlsdGVyRWZmZWN0PiBTVkdGRU1lcmdlRWxl
bWVudDo6YnVpbGQoU1ZHRmlsdGVyQnVpbGRlciogZmlsdGVyQnVpbGRlciwgRmlsdGVyJiBmaWx0
ZXIpIGNvbnN0CitSZWZQdHI8RmlsdGVyRWZmZWN0PiBTVkdGRU1lcmdlRWxlbWVudDo6YnVpbGQo
U1ZHRmlsdGVyQnVpbGRlciYgZmlsdGVyQnVpbGRlcikgY29uc3QKIHsKLSAgICBhdXRvIGVmZmVj
dCA9IEZFTWVyZ2U6OmNyZWF0ZShmaWx0ZXIpOwotICAgIGF1dG8mIG1lcmdlSW5wdXRzID0gZWZm
ZWN0LT5pbnB1dEVmZmVjdHMoKTsKKyAgICBGaWx0ZXJFZmZlY3RWZWN0b3IgbWVyZ2VJbnB1dHM7
CiAKICAgICBmb3IgKGF1dG8mIG1lcmdlTm9kZSA6IGNoaWxkcmVuT2ZUeXBlPFNWR0ZFTWVyZ2VO
b2RlRWxlbWVudD4oKnRoaXMpKSB7Ci0gICAgICAgIGF1dG8gbWVyZ2VFZmZlY3QgPSBmaWx0ZXJC
dWlsZGVyLT5nZXRFZmZlY3RCeUlkKG1lcmdlTm9kZS5pbjEoKSk7CisgICAgICAgIGF1dG8gbWVy
Z2VFZmZlY3QgPSBmaWx0ZXJCdWlsZGVyLmdldEVmZmVjdEJ5SWQobWVyZ2VOb2RlLmluMSgpKTsK
ICAgICAgICAgaWYgKCFtZXJnZUVmZmVjdCkKICAgICAgICAgICAgIHJldHVybiBudWxscHRyOwog
ICAgICAgICBtZXJnZUlucHV0cy5hcHBlbmQoV1RGTW92ZShtZXJnZUVmZmVjdCkpOwpAQCAtNjIs
NiArNjEsOCBAQCBSZWZQdHI8RmlsdGVyRWZmZWN0PiBTVkdGRU1lcmdlRWxlbWVudDo6YnVpbGQo
U1ZHRmlsdGVyQnVpbGRlciogZmlsdGVyQnVpbGRlciwgRgogICAgIGlmIChtZXJnZUlucHV0cy5p
c0VtcHR5KCkpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCisgICAgYXV0byBlZmZlY3QgPSBG
RU1lcmdlOjpjcmVhdGUoKTsKKyAgICBlZmZlY3QtPmlucHV0RWZmZWN0cygpID0gV1RGTW92ZSht
ZXJnZUlucHV0cyk7CiAgICAgcmV0dXJuIGVmZmVjdDsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvc3ZnL1NWR0ZFTWVyZ2VFbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZH
RkVNZXJnZUVsZW1lbnQuaAppbmRleCA3NDUwODY4MTZmNjk3NmM2Njk3ZGM1MTA3NTgwMmQyODNj
ZjRlM2MyLi40MzdjZDcyNTYzMmM1ZjRjNTI0ODk0Y2MzMjZjYTA5YjQxOTg1MTdmIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVNZXJnZUVsZW1lbnQuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9zdmcvU1ZHRkVNZXJnZUVsZW1lbnQuaApAQCAtMzUsNyArMzUsNyBAQCBwcml2YXRl
OgogICAgIHVzaW5nIFByb3BlcnR5UmVnaXN0cnkgPSBTVkdQcm9wZXJ0eU93bmVyUmVnaXN0cnk8
U1ZHRkVNZXJnZUVsZW1lbnQsIFNWR0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlcz47
CiAgICAgY29uc3QgU1ZHUHJvcGVydHlSZWdpc3RyeSYgcHJvcGVydHlSZWdpc3RyeSgpIGNvbnN0
IGZpbmFsIHsgcmV0dXJuIG1fcHJvcGVydHlSZWdpc3RyeTsgfQogCi0gICAgUmVmUHRyPEZpbHRl
ckVmZmVjdD4gYnVpbGQoU1ZHRmlsdGVyQnVpbGRlciosIEZpbHRlciYpIGNvbnN0IG92ZXJyaWRl
OworICAgIFJlZlB0cjxGaWx0ZXJFZmZlY3Q+IGJ1aWxkKFNWR0ZpbHRlckJ1aWxkZXImKSBjb25z
dCBvdmVycmlkZTsKIAogICAgIFByb3BlcnR5UmVnaXN0cnkgbV9wcm9wZXJ0eVJlZ2lzdHJ5IHsg
KnRoaXMgfTsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVNb3JwaG9s
b2d5RWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVNb3JwaG9sb2d5RWxlbWVu
dC5jcHAKaW5kZXggZDZmYjk1YzhlMzc3NmU2ZDIwOTNiZWFjZTM1ZTJlZDE3OTVkMzIxYi4uOGIw
NTYwYzRkYTgwMDM5NzAxNDhlMWUxNWUyZjMwOTdiOTE1MzE1NiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvc3ZnL1NWR0ZFTW9ycGhvbG9neUVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3N2Zy9TVkdGRU1vcnBob2xvZ3lFbGVtZW50LmNwcApAQCAtMTE0LDIwICsxMTQsMTkgQEAg
dm9pZCBTVkdGRU1vcnBob2xvZ3lFbGVtZW50OjpzdmdBdHRyaWJ1dGVDaGFuZ2VkKGNvbnN0IFF1
YWxpZmllZE5hbWUmIGF0dHJOYW1lKQogICAgIFNWR0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0
cmlidXRlczo6c3ZnQXR0cmlidXRlQ2hhbmdlZChhdHRyTmFtZSk7CiB9CiAKLVJlZlB0cjxGaWx0
ZXJFZmZlY3Q+IFNWR0ZFTW9ycGhvbG9neUVsZW1lbnQ6OmJ1aWxkKFNWR0ZpbHRlckJ1aWxkZXIq
IGZpbHRlckJ1aWxkZXIsIEZpbHRlciYgZmlsdGVyKSBjb25zdAorUmVmUHRyPEZpbHRlckVmZmVj
dD4gU1ZHRkVNb3JwaG9sb2d5RWxlbWVudDo6YnVpbGQoU1ZHRmlsdGVyQnVpbGRlciYgZmlsdGVy
QnVpbGRlcikgY29uc3QKIHsKLSAgICBhdXRvIGlucHV0MSA9IGZpbHRlckJ1aWxkZXItPmdldEVm
ZmVjdEJ5SWQoaW4xKCkpOwotICAgIGZsb2F0IHhSYWRpdXMgPSByYWRpdXNYKCk7Ci0gICAgZmxv
YXQgeVJhZGl1cyA9IHJhZGl1c1koKTsKLQorICAgIGF1dG8gaW5wdXQxID0gZmlsdGVyQnVpbGRl
ci5nZXRFZmZlY3RCeUlkKGluMSgpKTsKICAgICBpZiAoIWlucHV0MSkKICAgICAgICAgcmV0dXJu
IG51bGxwdHI7CiAKKyAgICBmbG9hdCB4UmFkaXVzID0gcmFkaXVzWCgpOworICAgIGZsb2F0IHlS
YWRpdXMgPSByYWRpdXNZKCk7CiAgICAgaWYgKHhSYWRpdXMgPCAwIHx8IHlSYWRpdXMgPCAwKQog
ICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAotICAgIGF1dG8gZWZmZWN0ID0gRkVNb3JwaG9sb2d5
OjpjcmVhdGUoZmlsdGVyLCBzdmdPcGVyYXRvcigpLCB4UmFkaXVzLCB5UmFkaXVzKTsKLSAgICBl
ZmZlY3QtPmlucHV0RWZmZWN0cygpID0geyBpbnB1dDEgfTsKKyAgICBhdXRvIGVmZmVjdCA9IEZF
TW9ycGhvbG9neTo6Y3JlYXRlKHN2Z09wZXJhdG9yKCksIHhSYWRpdXMsIHlSYWRpdXMpOworICAg
IGVmZmVjdC0+aW5wdXRFZmZlY3RzKCkgPSB7IFdURk1vdmUoaW5wdXQxKSB9OwogICAgIHJldHVy
biBlZmZlY3Q7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRU1vcnBo
b2xvZ3lFbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVNb3JwaG9sb2d5RWxlbWVu
dC5oCmluZGV4IDFhOTA4OGI3NWNmOGQ4NWFlMzhmMjkzZTExMTk4YTY2ZjY2YWE2NjkuLmIyMWI2
ZjVjNDdiNzg1ZGYyOGYwMTNlZGU1NDAxYzg2NmQ0MGU5ZGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3N2Zy9TVkdGRU1vcnBob2xvZ3lFbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUv
c3ZnL1NWR0ZFTW9ycGhvbG9neUVsZW1lbnQuaApAQCAtODEsNyArODEsNyBAQCBwcml2YXRlOgog
ICAgIHZvaWQgc3ZnQXR0cmlidXRlQ2hhbmdlZChjb25zdCBRdWFsaWZpZWROYW1lJikgb3ZlcnJp
ZGU7CiAKICAgICBib29sIHNldEZpbHRlckVmZmVjdEF0dHJpYnV0ZShGaWx0ZXJFZmZlY3QqLCBj
b25zdCBRdWFsaWZpZWROYW1lJikgb3ZlcnJpZGU7Ci0gICAgUmVmUHRyPEZpbHRlckVmZmVjdD4g
YnVpbGQoU1ZHRmlsdGVyQnVpbGRlciosIEZpbHRlciYpIGNvbnN0IG92ZXJyaWRlOworICAgIFJl
ZlB0cjxGaWx0ZXJFZmZlY3Q+IGJ1aWxkKFNWR0ZpbHRlckJ1aWxkZXImKSBjb25zdCBvdmVycmlk
ZTsKIAogICAgIFByb3BlcnR5UmVnaXN0cnkgbV9wcm9wZXJ0eVJlZ2lzdHJ5IHsgKnRoaXMgfTsK
ICAgICBSZWY8U1ZHQW5pbWF0ZWRTdHJpbmc+IG1faW4xIHsgU1ZHQW5pbWF0ZWRTdHJpbmc6OmNy
ZWF0ZSh0aGlzKSB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFT2Zmc2V0
RWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVPZmZzZXRFbGVtZW50LmNwcApp
bmRleCAwMzgyNjhiODliMmYxOWY5YmU1Njg3MzlkMTIzMDM1NDEwMGE1ZWU3Li4zMzc5MGE2YTU0
MDEyNzlmYjI4YzIzZmQ5NGRlOWI1NTIwOWY3YTNjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9zdmcvU1ZHRkVPZmZzZXRFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZH
RkVPZmZzZXRFbGVtZW50LmNwcApAQCAtODEsMTUgKzgxLDE0IEBAIHZvaWQgU1ZHRkVPZmZzZXRF
bGVtZW50OjpzdmdBdHRyaWJ1dGVDaGFuZ2VkKGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0dHJOYW1l
KQogICAgIFNWR0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlczo6c3ZnQXR0cmlidXRl
Q2hhbmdlZChhdHRyTmFtZSk7CiB9CiAKLVJlZlB0cjxGaWx0ZXJFZmZlY3Q+IFNWR0ZFT2Zmc2V0
RWxlbWVudDo6YnVpbGQoU1ZHRmlsdGVyQnVpbGRlciogZmlsdGVyQnVpbGRlciwgRmlsdGVyJiBm
aWx0ZXIpIGNvbnN0CitSZWZQdHI8RmlsdGVyRWZmZWN0PiBTVkdGRU9mZnNldEVsZW1lbnQ6OmJ1
aWxkKFNWR0ZpbHRlckJ1aWxkZXImIGZpbHRlckJ1aWxkZXIpIGNvbnN0CiB7Ci0gICAgYXV0byBp
bnB1dDEgPSBmaWx0ZXJCdWlsZGVyLT5nZXRFZmZlY3RCeUlkKGluMSgpKTsKLQorICAgIGF1dG8g
aW5wdXQxID0gZmlsdGVyQnVpbGRlci5nZXRFZmZlY3RCeUlkKGluMSgpKTsKICAgICBpZiAoIWlu
cHV0MSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKLSAgICBhdXRvIGVmZmVjdCA9IEZFT2Zm
c2V0OjpjcmVhdGUoZmlsdGVyLCBkeCgpLCBkeSgpKTsKLSAgICBlZmZlY3QtPmlucHV0RWZmZWN0
cygpID0geyBpbnB1dDEgfTsKKyAgICBhdXRvIGVmZmVjdCA9IEZFT2Zmc2V0OjpjcmVhdGUoZHgo
KSwgZHkoKSk7CisgICAgZWZmZWN0LT5pbnB1dEVmZmVjdHMoKSA9IHsgV1RGTW92ZShpbnB1dDEp
IH07CiAgICAgcmV0dXJuIGVmZmVjdDsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
c3ZnL1NWR0ZFT2Zmc2V0RWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFT2Zmc2V0
RWxlbWVudC5oCmluZGV4IDU3NDczZGNjNzJkYjY3YjEyNWVhMmVkNDY1ZTM1YjU3MzcwNDliZWUu
Ljg5OTZmMjgyYjAxZThkOWNkNjY3YmYyMGI1Y2Q5ODhhNTk5YWY4ODggMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3N2Zy9TVkdGRU9mZnNldEVsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9zdmcvU1ZHRkVPZmZzZXRFbGVtZW50LmgKQEAgLTQ3LDcgKzQ3LDcgQEAgcHJpdmF0ZToKICAg
ICB2b2lkIHBhcnNlQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmLCBjb25zdCBBdG9tU3Ry
aW5nJikgb3ZlcnJpZGU7CiAgICAgdm9pZCBzdmdBdHRyaWJ1dGVDaGFuZ2VkKGNvbnN0IFF1YWxp
ZmllZE5hbWUmKSBvdmVycmlkZTsKIAotICAgIFJlZlB0cjxGaWx0ZXJFZmZlY3Q+IGJ1aWxkKFNW
R0ZpbHRlckJ1aWxkZXIqLCBGaWx0ZXImKSBjb25zdCBvdmVycmlkZTsKKyAgICBSZWZQdHI8Rmls
dGVyRWZmZWN0PiBidWlsZChTVkdGaWx0ZXJCdWlsZGVyJikgY29uc3Qgb3ZlcnJpZGU7CiAKICAg
ICBQcm9wZXJ0eVJlZ2lzdHJ5IG1fcHJvcGVydHlSZWdpc3RyeSB7ICp0aGlzIH07CiAgICAgUmVm
PFNWR0FuaW1hdGVkU3RyaW5nPiBtX2luMSB7IFNWR0FuaW1hdGVkU3RyaW5nOjpjcmVhdGUodGhp
cykgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRVNwZWN1bGFyTGlnaHRp
bmdFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRVNwZWN1bGFyTGlnaHRpbmdF
bGVtZW50LmNwcAppbmRleCA5YjdjZTQwYWI5NzE2YWU0ZjMzNWY1NGIyNGNkYTQ1OWE4NDI5YTU5
Li5kMjg5NDNhMjMzYzVmMzBhMjc0NTYyY2RlYjQxM2JhZWUyZDU1ZjdlIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVTcGVjdWxhckxpZ2h0aW5nRWxlbWVudC5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFU3BlY3VsYXJMaWdodGluZ0VsZW1lbnQuY3BwCkBAIC0x
NjAsMTAgKzE2MCw5IEBAIHZvaWQgU1ZHRkVTcGVjdWxhckxpZ2h0aW5nRWxlbWVudDo6bGlnaHRF
bGVtZW50QXR0cmlidXRlQ2hhbmdlZChjb25zdCBTVkdGRUxpZ2h0CiAgICAgcHJpbWl0aXZlQXR0
cmlidXRlQ2hhbmdlZChhdHRyTmFtZSk7CiB9CiAKLVJlZlB0cjxGaWx0ZXJFZmZlY3Q+IFNWR0ZF
U3BlY3VsYXJMaWdodGluZ0VsZW1lbnQ6OmJ1aWxkKFNWR0ZpbHRlckJ1aWxkZXIqIGZpbHRlckJ1
aWxkZXIsIEZpbHRlciYgZmlsdGVyKSBjb25zdAorUmVmUHRyPEZpbHRlckVmZmVjdD4gU1ZHRkVT
cGVjdWxhckxpZ2h0aW5nRWxlbWVudDo6YnVpbGQoU1ZHRmlsdGVyQnVpbGRlciYgZmlsdGVyQnVp
bGRlcikgY29uc3QKIHsKLSAgICBhdXRvIGlucHV0MSA9IGZpbHRlckJ1aWxkZXItPmdldEVmZmVj
dEJ5SWQoaW4xKCkpOwotCisgICAgYXV0byBpbnB1dDEgPSBmaWx0ZXJCdWlsZGVyLmdldEVmZmVj
dEJ5SWQoaW4xKCkpOwogICAgIGlmICghaW5wdXQxKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsK
IApAQCAtMTcxLDcgKzE3MCw3IEBAIFJlZlB0cjxGaWx0ZXJFZmZlY3Q+IFNWR0ZFU3BlY3VsYXJM
aWdodGluZ0VsZW1lbnQ6OmJ1aWxkKFNWR0ZpbHRlckJ1aWxkZXIqIGZpbHRlCiAgICAgaWYgKCFs
aWdodEVsZW1lbnQpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIAotICAgIGF1dG8gbGln
aHRTb3VyY2UgPSBsaWdodEVsZW1lbnQtPmxpZ2h0U291cmNlKCpmaWx0ZXJCdWlsZGVyKTsKKyAg
ICBhdXRvIGxpZ2h0U291cmNlID0gbGlnaHRFbGVtZW50LT5saWdodFNvdXJjZShmaWx0ZXJCdWls
ZGVyKTsKIAogICAgIFJlbmRlck9iamVjdCogcmVuZGVyZXIgPSB0aGlzLT5yZW5kZXJlcigpOwog
ICAgIGlmICghcmVuZGVyZXIpCkBAIC0xNzksOCArMTc4LDggQEAgUmVmUHRyPEZpbHRlckVmZmVj
dD4gU1ZHRkVTcGVjdWxhckxpZ2h0aW5nRWxlbWVudDo6YnVpbGQoU1ZHRmlsdGVyQnVpbGRlciog
ZmlsdGUKICAgICAKICAgICBDb2xvciBjb2xvciA9IHJlbmRlcmVyLT5zdHlsZSgpLmNvbG9yQnlB
cHBseWluZ0NvbG9yRmlsdGVyKHJlbmRlcmVyLT5zdHlsZSgpLnN2Z1N0eWxlKCkubGlnaHRpbmdD
b2xvcigpKTsKIAotICAgIGF1dG8gZWZmZWN0ID0gRkVTcGVjdWxhckxpZ2h0aW5nOjpjcmVhdGUo
ZmlsdGVyLCBjb2xvciwgc3VyZmFjZVNjYWxlKCksIHNwZWN1bGFyQ29uc3RhbnQoKSwgc3BlY3Vs
YXJFeHBvbmVudCgpLCBrZXJuZWxVbml0TGVuZ3RoWCgpLCBrZXJuZWxVbml0TGVuZ3RoWSgpLCBX
VEZNb3ZlKGxpZ2h0U291cmNlKSk7Ci0gICAgZWZmZWN0LT5pbnB1dEVmZmVjdHMoKSA9IHsgaW5w
dXQxIH07CisgICAgYXV0byBlZmZlY3QgPSBGRVNwZWN1bGFyTGlnaHRpbmc6OmNyZWF0ZShjb2xv
ciwgc3VyZmFjZVNjYWxlKCksIHNwZWN1bGFyQ29uc3RhbnQoKSwgc3BlY3VsYXJFeHBvbmVudCgp
LCBrZXJuZWxVbml0TGVuZ3RoWCgpLCBrZXJuZWxVbml0TGVuZ3RoWSgpLCBXVEZNb3ZlKGxpZ2h0
U291cmNlKSk7CisgICAgZWZmZWN0LT5pbnB1dEVmZmVjdHMoKSA9IHsgV1RGTW92ZShpbnB1dDEp
IH07CiAgICAgcmV0dXJuIGVmZmVjdDsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
c3ZnL1NWR0ZFU3BlY3VsYXJMaWdodGluZ0VsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9T
VkdGRVNwZWN1bGFyTGlnaHRpbmdFbGVtZW50LmgKaW5kZXggODk3YjhkZTE1NmQxYzc5YTFkM2Zk
OGIzMTE4ZTJhYjYzYjQ3YjE0Ni4uNGQxYjUzMWM0MmJlYjhjZGZhMjAxNTIxNjIxMTY1MTBkMDA5
YmM2ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFU3BlY3VsYXJMaWdodGlu
Z0VsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVTcGVjdWxhckxpZ2h0aW5n
RWxlbWVudC5oCkBAIC01OCw3ICs1OCw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBzdmdBdHRyaWJ1
dGVDaGFuZ2VkKGNvbnN0IFF1YWxpZmllZE5hbWUmKSBvdmVycmlkZTsKIAogICAgIGJvb2wgc2V0
RmlsdGVyRWZmZWN0QXR0cmlidXRlKEZpbHRlckVmZmVjdCosIGNvbnN0IFF1YWxpZmllZE5hbWUm
KSBvdmVycmlkZTsKLSAgICBSZWZQdHI8RmlsdGVyRWZmZWN0PiBidWlsZChTVkdGaWx0ZXJCdWls
ZGVyKiwgRmlsdGVyJikgY29uc3Qgb3ZlcnJpZGU7CisgICAgUmVmUHRyPEZpbHRlckVmZmVjdD4g
YnVpbGQoU1ZHRmlsdGVyQnVpbGRlciYpIGNvbnN0IG92ZXJyaWRlOwogCiAgICAgUHJvcGVydHlS
ZWdpc3RyeSBtX3Byb3BlcnR5UmVnaXN0cnkgeyAqdGhpcyB9OwogICAgIFJlZjxTVkdBbmltYXRl
ZFN0cmluZz4gbV9pbjEgeyBTVkdBbmltYXRlZFN0cmluZzo6Y3JlYXRlKHRoaXMpIH07CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVUaWxlRWxlbWVudC5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9zdmcvU1ZHRkVUaWxlRWxlbWVudC5jcHAKaW5kZXggMzliZGNjNzczNTk2NjUwMzZl
MWFlNzQ3NjEyZWFkNmY5YWMzNzM3MC4uYWFjZTJmMzQzMTNkY2ZmYWI4Y2FkM2E1MmVlMzk1M2Q3
MTAwM2Y0ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFVGlsZUVsZW1lbnQu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRVRpbGVFbGVtZW50LmNwcApAQCAtNzAs
MTUgKzcwLDE0IEBAIHZvaWQgU1ZHRkVUaWxlRWxlbWVudDo6c3ZnQXR0cmlidXRlQ2hhbmdlZChj
b25zdCBRdWFsaWZpZWROYW1lJiBhdHRyTmFtZSkKICAgICBTVkdGaWx0ZXJQcmltaXRpdmVTdGFu
ZGFyZEF0dHJpYnV0ZXM6OnN2Z0F0dHJpYnV0ZUNoYW5nZWQoYXR0ck5hbWUpOwogfQogCi1SZWZQ
dHI8RmlsdGVyRWZmZWN0PiBTVkdGRVRpbGVFbGVtZW50OjpidWlsZChTVkdGaWx0ZXJCdWlsZGVy
KiBmaWx0ZXJCdWlsZGVyLCBGaWx0ZXImIGZpbHRlcikgY29uc3QKK1JlZlB0cjxGaWx0ZXJFZmZl
Y3Q+IFNWR0ZFVGlsZUVsZW1lbnQ6OmJ1aWxkKFNWR0ZpbHRlckJ1aWxkZXImIGZpbHRlckJ1aWxk
ZXIpIGNvbnN0CiB7Ci0gICAgYXV0byBpbnB1dDEgPSBmaWx0ZXJCdWlsZGVyLT5nZXRFZmZlY3RC
eUlkKGluMSgpKTsKLQorICAgIGF1dG8gaW5wdXQxID0gZmlsdGVyQnVpbGRlci5nZXRFZmZlY3RC
eUlkKGluMSgpKTsKICAgICBpZiAoIWlucHV0MSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAK
LSAgICBhdXRvIGVmZmVjdCA9IEZFVGlsZTo6Y3JlYXRlKGZpbHRlcik7Ci0gICAgZWZmZWN0LT5p
bnB1dEVmZmVjdHMoKSA9IHsgaW5wdXQxIH07CisgICAgYXV0byBlZmZlY3QgPSBGRVRpbGU6OmNy
ZWF0ZSgpOworICAgIGVmZmVjdC0+aW5wdXRFZmZlY3RzKCkgPSB7IFdURk1vdmUoaW5wdXQxKSB9
OwogICAgIHJldHVybiBlZmZlY3Q7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2
Zy9TVkdGRVRpbGVFbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVUaWxlRWxlbWVu
dC5oCmluZGV4IDQ1YjMyNzE4NTFkN2ZjMGRjMmQzYmNjODc5YTIyZGM0MmEzM2E5MWYuLmNhYmFj
ZTZiZDAxYzJiMWQzNTY0YTVjZWU1YzI3NWI2Njk2ZjlkNDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3N2Zy9TVkdGRVRpbGVFbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NW
R0ZFVGlsZUVsZW1lbnQuaApAQCAtNDIsNyArNDIsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgcGFy
c2VBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYsIGNvbnN0IEF0b21TdHJpbmcmKSBvdmVy
cmlkZTsKICAgICB2b2lkIHN2Z0F0dHJpYnV0ZUNoYW5nZWQoY29uc3QgUXVhbGlmaWVkTmFtZSYp
IG92ZXJyaWRlOwogCi0gICAgUmVmUHRyPEZpbHRlckVmZmVjdD4gYnVpbGQoU1ZHRmlsdGVyQnVp
bGRlciosIEZpbHRlciYpIGNvbnN0IG92ZXJyaWRlOworICAgIFJlZlB0cjxGaWx0ZXJFZmZlY3Q+
IGJ1aWxkKFNWR0ZpbHRlckJ1aWxkZXImKSBjb25zdCBvdmVycmlkZTsKIAogICAgIFByb3BlcnR5
UmVnaXN0cnkgbV9wcm9wZXJ0eVJlZ2lzdHJ5IHsgKnRoaXMgfTsKICAgICBSZWY8U1ZHQW5pbWF0
ZWRTdHJpbmc+IG1faW4xIHsgU1ZHQW5pbWF0ZWRTdHJpbmc6OmNyZWF0ZSh0aGlzKSB9OwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFVHVyYnVsZW5jZUVsZW1lbnQuY3BwIGIv
U291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFVHVyYnVsZW5jZUVsZW1lbnQuY3BwCmluZGV4IDExNTYx
MTE5ZDgzZTNmYzc4OGE0MmIxNDg2N2M2NTY0MTIzMzRhNGQuLjE1MWI3YjllOGUwOGE0M2U3Y2Nj
YjY4MDlhYTcyOTE0NmRiYmYwZDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdG
RVR1cmJ1bGVuY2VFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVUdXJi
dWxlbmNlRWxlbWVudC5jcHAKQEAgLTExNywxMSArMTE3LDExIEBAIHZvaWQgU1ZHRkVUdXJidWxl
bmNlRWxlbWVudDo6c3ZnQXR0cmlidXRlQ2hhbmdlZChjb25zdCBRdWFsaWZpZWROYW1lJiBhdHRy
TmFtZSkKICAgICBTVkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXM6OnN2Z0F0dHJp
YnV0ZUNoYW5nZWQoYXR0ck5hbWUpOwogfQogCi1SZWZQdHI8RmlsdGVyRWZmZWN0PiBTVkdGRVR1
cmJ1bGVuY2VFbGVtZW50OjpidWlsZChTVkdGaWx0ZXJCdWlsZGVyKiwgRmlsdGVyJiBmaWx0ZXIp
IGNvbnN0CitSZWZQdHI8RmlsdGVyRWZmZWN0PiBTVkdGRVR1cmJ1bGVuY2VFbGVtZW50OjpidWls
ZChTVkdGaWx0ZXJCdWlsZGVyJikgY29uc3QKIHsKICAgICBpZiAoYmFzZUZyZXF1ZW5jeVgoKSA8
IDAgfHwgYmFzZUZyZXF1ZW5jeVkoKSA8IDApCiAgICAgICAgIHJldHVybiBudWxscHRyOwotICAg
IHJldHVybiBGRVR1cmJ1bGVuY2U6OmNyZWF0ZShmaWx0ZXIsIHR5cGUoKSwgYmFzZUZyZXF1ZW5j
eVgoKSwgYmFzZUZyZXF1ZW5jeVkoKSwgbnVtT2N0YXZlcygpLCBzZWVkKCksIHN0aXRjaFRpbGVz
KCkgPT0gU1ZHX1NUSVRDSFRZUEVfU1RJVENIKTsKKyAgICByZXR1cm4gRkVUdXJidWxlbmNlOjpj
cmVhdGUodHlwZSgpLCBiYXNlRnJlcXVlbmN5WCgpLCBiYXNlRnJlcXVlbmN5WSgpLCBudW1PY3Rh
dmVzKCksIHNlZWQoKSwgc3RpdGNoVGlsZXMoKSA9PSBTVkdfU1RJVENIVFlQRV9TVElUQ0gpOwog
fQogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVUdXJidWxlbmNlRWxl
bWVudC5oIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFVHVyYnVsZW5jZUVsZW1lbnQuaAppbmRl
eCBiZjlkYTIyYWQ0MmU0MTBhMTA0MzVlMGE0MGUzNDI2Nzc2OWUxOThhLi41MGFmOTEwZWI1OGUy
YzkyMjQxYTkwZGE4Y2JkZmRjNjgxNGY5MzE2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9z
dmcvU1ZHRkVUdXJidWxlbmNlRWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdG
RVR1cmJ1bGVuY2VFbGVtZW50LmgKQEAgLTExOSw3ICsxMTksNyBAQCBwcml2YXRlOgogICAgIHZv
aWQgc3ZnQXR0cmlidXRlQ2hhbmdlZChjb25zdCBRdWFsaWZpZWROYW1lJikgb3ZlcnJpZGU7CiAK
ICAgICBib29sIHNldEZpbHRlckVmZmVjdEF0dHJpYnV0ZShGaWx0ZXJFZmZlY3QqLCBjb25zdCBR
dWFsaWZpZWROYW1lJiBhdHRyTmFtZSkgb3ZlcnJpZGU7Ci0gICAgUmVmUHRyPEZpbHRlckVmZmVj
dD4gYnVpbGQoU1ZHRmlsdGVyQnVpbGRlciosIEZpbHRlciYpIGNvbnN0IG92ZXJyaWRlOworICAg
IFJlZlB0cjxGaWx0ZXJFZmZlY3Q+IGJ1aWxkKFNWR0ZpbHRlckJ1aWxkZXImKSBjb25zdCBvdmVy
cmlkZTsKIAogICAgIFByb3BlcnR5UmVnaXN0cnkgbV9wcm9wZXJ0eVJlZ2lzdHJ5IHsgKnRoaXMg
fTsKICAgICBSZWY8U1ZHQW5pbWF0ZWROdW1iZXI+IG1fYmFzZUZyZXF1ZW5jeVggeyBTVkdBbmlt
YXRlZE51bWJlcjo6Y3JlYXRlKHRoaXMpIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9z
dmcvU1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVzLmggYi9Tb3VyY2UvV2ViQ29y
ZS9zdmcvU1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVzLmgKaW5kZXggYzk4YjEz
ZWQ5NjI3NmFmOWUxNGY2NDI4MTFhNmZkNzQ2NzcyYWNhNy4uMzhkNDk4NjA5MzM4MjE4N2JhZDIy
NGQyOTdkNDI1YzkxZGU1MzlkNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0Zp
bHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlcy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2
Zy9TVkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXMuaApAQCAtMzgsNyArMzgsNyBA
QCBjbGFzcyBTVkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXMgOiBwdWJsaWMgU1ZH
RWxlbWVudCB7CiBwdWJsaWM6CiAgICAgdm9pZCBzZXRTdGFuZGFyZEF0dHJpYnV0ZXMoRmlsdGVy
RWZmZWN0KikgY29uc3Q7CiAKLSAgICB2aXJ0dWFsIFJlZlB0cjxGaWx0ZXJFZmZlY3Q+IGJ1aWxk
KFNWR0ZpbHRlckJ1aWxkZXIqLCBGaWx0ZXImKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBSZWZQ
dHI8RmlsdGVyRWZmZWN0PiBidWlsZChTVkdGaWx0ZXJCdWlsZGVyJikgY29uc3QgPSAwOwogICAg
IC8vIFJldHVybnMgdHJ1ZSwgaWYgdGhlIG5ldyB2YWx1ZSBpcyBkaWZmZXJlbnQgZnJvbSB0aGUg
b2xkIG9uZS4KICAgICB2aXJ0dWFsIGJvb2wgc2V0RmlsdGVyRWZmZWN0QXR0cmlidXRlKEZpbHRl
ckVmZmVjdCosIGNvbnN0IFF1YWxpZmllZE5hbWUmKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvc3ZnL2dyYXBoaWNzL2ZpbHRlcnMvU1ZHRkVJbWFnZS5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9zdmcvZ3JhcGhpY3MvZmlsdGVycy9TVkdGRUltYWdlLmNwcAppbmRleCA0NTQ0NWIyODEzNDM2
ZGJlZjYzNTY5MTU4MWRlNjFkZWZhODIzYmFkLi5iYzYwYWNiNTAyNTIxMTEzMWVkY2NlMzY0ZDYx
YzZlOWJjZjkwN2YzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvZ3JhcGhpY3MvZmls
dGVycy9TVkdGRUltYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvZ3JhcGhpY3MvZmls
dGVycy9TVkdGRUltYWdlLmNwcApAQCAtMzAsMjYgKzMwLDI2IEBACiAKIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIAotUmVmPEZFSW1hZ2U+IEZFSW1hZ2U6OmNyZWF0ZShGaWx0ZXImIGZpbHRlciwgUmVm
PEltYWdlPiYmIGltYWdlLCBjb25zdCBTVkdQcmVzZXJ2ZUFzcGVjdFJhdGlvVmFsdWUmIHByZXNl
cnZlQXNwZWN0UmF0aW8pCitSZWY8RkVJbWFnZT4gRkVJbWFnZTo6Y3JlYXRlKFJlZjxJbWFnZT4m
JiBpbWFnZSwgY29uc3QgU1ZHUHJlc2VydmVBc3BlY3RSYXRpb1ZhbHVlJiBwcmVzZXJ2ZUFzcGVj
dFJhdGlvKQogewogICAgIGF1dG8gaW1hZ2VSZWN0ID0gRmxvYXRSZWN0IHsgeyB9LCBpbWFnZS0+
c2l6ZSgpIH07Ci0gICAgcmV0dXJuIGNyZWF0ZShmaWx0ZXIsIFdURk1vdmUoaW1hZ2UpLCBpbWFn
ZVJlY3QsIHByZXNlcnZlQXNwZWN0UmF0aW8pOworICAgIHJldHVybiBjcmVhdGUoV1RGTW92ZShp
bWFnZSksIGltYWdlUmVjdCwgcHJlc2VydmVBc3BlY3RSYXRpbyk7CiB9CiAKLVJlZjxGRUltYWdl
PiBGRUltYWdlOjpjcmVhdGUoRmlsdGVyJiBmaWx0ZXIsIFNvdXJjZUltYWdlJiYgc291cmNlSW1h
Z2UsIGNvbnN0IEZsb2F0UmVjdCYgc291cmNlSW1hZ2VSZWN0LCBjb25zdCBTVkdQcmVzZXJ2ZUFz
cGVjdFJhdGlvVmFsdWUmIHByZXNlcnZlQXNwZWN0UmF0aW8pCitSZWY8RkVJbWFnZT4gRkVJbWFn
ZTo6Y3JlYXRlKFNvdXJjZUltYWdlJiYgc291cmNlSW1hZ2UsIGNvbnN0IEZsb2F0UmVjdCYgc291
cmNlSW1hZ2VSZWN0LCBjb25zdCBTVkdQcmVzZXJ2ZUFzcGVjdFJhdGlvVmFsdWUmIHByZXNlcnZl
QXNwZWN0UmF0aW8pCiB7Ci0gICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgRkVJbWFnZShmaWx0ZXIs
IFdURk1vdmUoc291cmNlSW1hZ2UpLCBzb3VyY2VJbWFnZVJlY3QsIHByZXNlcnZlQXNwZWN0UmF0
aW8pKTsKKyAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBGRUltYWdlKFdURk1vdmUoc291cmNlSW1h
Z2UpLCBzb3VyY2VJbWFnZVJlY3QsIHByZXNlcnZlQXNwZWN0UmF0aW8pKTsKIH0KIAotRkVJbWFn
ZTo6RkVJbWFnZShGaWx0ZXImIGZpbHRlciwgU291cmNlSW1hZ2UmJiBzb3VyY2VJbWFnZSwgY29u
c3QgRmxvYXRSZWN0JiBzb3VyY2VJbWFnZVJlY3QsIGNvbnN0IFNWR1ByZXNlcnZlQXNwZWN0UmF0
aW9WYWx1ZSYgcHJlc2VydmVBc3BlY3RSYXRpbykKLSAgICA6IEZpbHRlckVmZmVjdChmaWx0ZXIs
IFR5cGU6OkZFSW1hZ2UpCitGRUltYWdlOjpGRUltYWdlKFNvdXJjZUltYWdlJiYgc291cmNlSW1h
Z2UsIGNvbnN0IEZsb2F0UmVjdCYgc291cmNlSW1hZ2VSZWN0LCBjb25zdCBTVkdQcmVzZXJ2ZUFz
cGVjdFJhdGlvVmFsdWUmIHByZXNlcnZlQXNwZWN0UmF0aW8pCisgICAgOiBGaWx0ZXJFZmZlY3Qo
VHlwZTo6RkVJbWFnZSkKICAgICAsIG1fc291cmNlSW1hZ2UoV1RGTW92ZShzb3VyY2VJbWFnZSkp
CiAgICAgLCBtX3NvdXJjZUltYWdlUmVjdChzb3VyY2VJbWFnZVJlY3QpCiAgICAgLCBtX3ByZXNl
cnZlQXNwZWN0UmF0aW8ocHJlc2VydmVBc3BlY3RSYXRpbykKIHsKIH0KIAotdm9pZCBGRUltYWdl
OjpkZXRlcm1pbmVBYnNvbHV0ZVBhaW50UmVjdCgpCit2b2lkIEZFSW1hZ2U6OmRldGVybWluZUFi
c29sdXRlUGFpbnRSZWN0KGNvbnN0IEZpbHRlciYgZmlsdGVyKQogewogICAgIGF1dG8gcHJpbWl0
aXZlU3VicmVnaW9uID0gZmlsdGVyUHJpbWl0aXZlU3VicmVnaW9uKCk7CiAKQEAgLTY1LDcgKzY1
LDcgQEAgdm9pZCBGRUltYWdlOjpkZXRlcm1pbmVBYnNvbHV0ZVBhaW50UmVjdCgpCiAgICAgICAg
IH0KICAgICApOwogCi0gICAgaW1hZ2VSZWN0LnNjYWxlKGZpbHRlcigpLmZpbHRlclNjYWxlKCkp
OworICAgIGltYWdlUmVjdC5zY2FsZShmaWx0ZXIuZmlsdGVyU2NhbGUoKSk7CiAKICAgICBpZiAo
Y2xpcHNUb0JvdW5kcygpKQogICAgICAgICBpbWFnZVJlY3QuaW50ZXJzZWN0KG1heEVmZmVjdFJl
Y3QoKSk7CkBAIC03NCw3ICs3NCw3IEBAIHZvaWQgRkVJbWFnZTo6ZGV0ZXJtaW5lQWJzb2x1dGVQ
YWludFJlY3QoKQogICAgIHNldEFic29sdXRlUGFpbnRSZWN0KGVuY2xvc2luZ0ludFJlY3QoaW1h
Z2VSZWN0KSk7CiB9CiAKLXZvaWQgRkVJbWFnZTo6cGxhdGZvcm1BcHBseVNvZnR3YXJlKCkKK3Zv
aWQgRkVJbWFnZTo6cGxhdGZvcm1BcHBseVNvZnR3YXJlKGNvbnN0IEZpbHRlciYgZmlsdGVyKQog
ewogICAgIC8vIEZFSW1hZ2UgcmVzdWx0cyBhcmUgYWx3YXlzIGluIERlc3RpbmF0aW9uQ29sb3JT
cGFjZTo6U1JHQigpCiAgICAgc2V0UmVzdWx0Q29sb3JTcGFjZShEZXN0aW5hdGlvbkNvbG9yU3Bh
Y2U6OlNSR0IoKSk7CkBAIC05MSwxNCArOTEsMTQgQEAgdm9pZCBGRUltYWdlOjpwbGF0Zm9ybUFw
cGx5U29mdHdhcmUoKQogICAgICAgICAgICAgYXV0byBpbWFnZVJlY3QgPSBwcmltaXRpdmVTdWJy
ZWdpb247CiAgICAgICAgICAgICBhdXRvIHNyY1JlY3QgPSBtX3NvdXJjZUltYWdlUmVjdDsKICAg
ICAgICAgICAgIG1fcHJlc2VydmVBc3BlY3RSYXRpby50cmFuc2Zvcm1SZWN0KGltYWdlUmVjdCwg
c3JjUmVjdCk7Ci0gICAgICAgICAgICBpbWFnZVJlY3Quc2NhbGUoZmlsdGVyKCkuZmlsdGVyU2Nh
bGUoKSk7CisgICAgICAgICAgICBpbWFnZVJlY3Quc2NhbGUoZmlsdGVyLmZpbHRlclNjYWxlKCkp
OwogICAgICAgICAgICAgaW1hZ2VSZWN0ID0gZHJhd2luZ1JlZ2lvbk9mSW5wdXRJbWFnZShJbnRS
ZWN0KGltYWdlUmVjdCkpOwogICAgICAgICAgICAgY29udGV4dC5kcmF3SW1hZ2UoaW1hZ2UsIGlt
YWdlUmVjdCwgc3JjUmVjdCk7CiAgICAgICAgIH0sCiAgICAgICAgIFsmXSAoY29uc3QgUmVmPElt
YWdlQnVmZmVyPiYgaW1hZ2VCdWZmZXIpIHsKICAgICAgICAgICAgIGF1dG8gaW1hZ2VSZWN0ID0g
cHJpbWl0aXZlU3VicmVnaW9uOwogICAgICAgICAgICAgaW1hZ2VSZWN0Lm1vdmVCeShtX3NvdXJj
ZUltYWdlUmVjdC5sb2NhdGlvbigpKTsKLSAgICAgICAgICAgIGltYWdlUmVjdC5zY2FsZShmaWx0
ZXIoKS5maWx0ZXJTY2FsZSgpKTsKKyAgICAgICAgICAgIGltYWdlUmVjdC5zY2FsZShmaWx0ZXIu
ZmlsdGVyU2NhbGUoKSk7CiAgICAgICAgICAgICBpbWFnZVJlY3QgPSBkcmF3aW5nUmVnaW9uT2ZJ
bnB1dEltYWdlKEludFJlY3QoaW1hZ2VSZWN0KSk7CiAgICAgICAgICAgICBjb250ZXh0LmRyYXdJ
bWFnZUJ1ZmZlcihpbWFnZUJ1ZmZlciwgaW1hZ2VSZWN0LmxvY2F0aW9uKCkpOwogICAgICAgICB9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvZ3JhcGhpY3MvZmlsdGVycy9TVkdGRUlt
YWdlLmggYi9Tb3VyY2UvV2ViQ29yZS9zdmcvZ3JhcGhpY3MvZmlsdGVycy9TVkdGRUltYWdlLmgK
aW5kZXggNzMxN2Q5YTk0ZWFjMDc4YTg4ZGU3YTdlMzA0MzQwYTdkMmYxZDgxZi4uYjU4ZDUxYjE5
N2Q4YzVmYzY0YWZjNTU4MTlmMTU4NWQ5OTIzYmM4YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvc3ZnL2dyYXBoaWNzL2ZpbHRlcnMvU1ZHRkVJbWFnZS5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3N2Zy9ncmFwaGljcy9maWx0ZXJzL1NWR0ZFSW1hZ2UuaApAQCAtMzUsMTcgKzM1LDE5IEBAIGNs
YXNzIEZFSW1hZ2UgZmluYWwgOiBwdWJsaWMgRmlsdGVyRWZmZWN0IHsKIHB1YmxpYzoKICAgICB1
c2luZyBTb3VyY2VJbWFnZSA9IHN0ZDo6dmFyaWFudDxSZWY8SW1hZ2U+LCBSZWY8SW1hZ2VCdWZm
ZXI+PjsKIAotICAgIHN0YXRpYyBSZWY8RkVJbWFnZT4gY3JlYXRlKEZpbHRlciYsIFJlZjxJbWFn
ZT4mJiwgY29uc3QgU1ZHUHJlc2VydmVBc3BlY3RSYXRpb1ZhbHVlJik7Ci0gICAgc3RhdGljIFJl
ZjxGRUltYWdlPiBjcmVhdGUoRmlsdGVyJiwgU291cmNlSW1hZ2UmJiwgY29uc3QgRmxvYXRSZWN0
JiBzb3VyY2VJbWFnZVJlY3QsIGNvbnN0IFNWR1ByZXNlcnZlQXNwZWN0UmF0aW9WYWx1ZSYpOwor
ICAgIHN0YXRpYyBSZWY8RkVJbWFnZT4gY3JlYXRlKFJlZjxJbWFnZT4mJiwgY29uc3QgU1ZHUHJl
c2VydmVBc3BlY3RSYXRpb1ZhbHVlJik7CisgICAgc3RhdGljIFJlZjxGRUltYWdlPiBjcmVhdGUo
U291cmNlSW1hZ2UmJiwgY29uc3QgRmxvYXRSZWN0JiBzb3VyY2VJbWFnZVJlY3QsIGNvbnN0IFNW
R1ByZXNlcnZlQXNwZWN0UmF0aW9WYWx1ZSYpOwogCiAgICAgU291cmNlSW1hZ2UmIHNvdXJjZUlt
YWdlKCkgeyByZXR1cm4gbV9zb3VyY2VJbWFnZTsgfQogICAgIHZvaWQgc2V0SW1hZ2VTb3VyY2Uo
U291cmNlSW1hZ2UmJiBzb3VyY2VJbWFnZSkgeyBtX3NvdXJjZUltYWdlID0gV1RGTW92ZShzb3Vy
Y2VJbWFnZSk7IH0KIAogcHJpdmF0ZToKLSAgICBGRUltYWdlKEZpbHRlciYsIFNvdXJjZUltYWdl
JiYsIGNvbnN0IEZsb2F0UmVjdCYgc291cmNlSW1hZ2VSZWN0LCBjb25zdCBTVkdQcmVzZXJ2ZUFz
cGVjdFJhdGlvVmFsdWUmKTsKKyAgICBGRUltYWdlKFNvdXJjZUltYWdlJiYsIGNvbnN0IEZsb2F0
UmVjdCYgc291cmNlSW1hZ2VSZWN0LCBjb25zdCBTVkdQcmVzZXJ2ZUFzcGVjdFJhdGlvVmFsdWUm
KTsKKworICAgIHZvaWQgZGV0ZXJtaW5lQWJzb2x1dGVQYWludFJlY3QoY29uc3QgRmlsdGVyJikg
ZmluYWw7CisKKyAgICB2b2lkIHBsYXRmb3JtQXBwbHlTb2Z0d2FyZShjb25zdCBGaWx0ZXImKSBm
aW5hbDsKIAotICAgIHZvaWQgcGxhdGZvcm1BcHBseVNvZnR3YXJlKCkgZmluYWw7Ci0gICAgdm9p
ZCBkZXRlcm1pbmVBYnNvbHV0ZVBhaW50UmVjdCgpIGZpbmFsOwogICAgIFdURjo6VGV4dFN0cmVh
bSYgZXh0ZXJuYWxSZXByZXNlbnRhdGlvbihXVEY6OlRleHRTdHJlYW0mLCBSZXByZXNlbnRhdGlv
blR5cGUpIGNvbnN0IGZpbmFsOwogCiAgICAgU291cmNlSW1hZ2UgbV9zb3VyY2VJbWFnZTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9ncmFwaGljcy9maWx0ZXJzL1NWR0ZpbHRlci5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvZ3JhcGhpY3MvZmlsdGVycy9TVkdGaWx0ZXIuY3BwCmlu
ZGV4IGM5ZGEyNzgxZDk1NzQ4ODA2M2I5OTVhYjA5NDIyMTlmMThkMDNlYmEuLjYxZjEyYjczOTg3
YjgyMjg2ODMxYmM2OGY2YzA1ZjAwMDNjM2Q0Y2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3N2Zy9ncmFwaGljcy9maWx0ZXJzL1NWR0ZpbHRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
c3ZnL2dyYXBoaWNzL2ZpbHRlcnMvU1ZHRmlsdGVyLmNwcApAQCAtNDUsMTQgKzQ1LDE0IEBAIFJl
ZlB0cjxTVkdGaWx0ZXI+IFNWR0ZpbHRlcjo6Y3JlYXRlKFNWR0ZpbHRlckVsZW1lbnQmIGZpbHRl
ckVsZW1lbnQsIFNWR0ZpbHRlckJ1CiAgICAgYXV0byBmaWx0ZXIgPSBhZG9wdFJlZigqbmV3IFNW
R0ZpbHRlcihmaWx0ZXJTY2FsZSwgc291cmNlSW1hZ2VSZWN0LCBmaWx0ZXJSZWdpb24sIHRhcmdl
dEJvdW5kaW5nQm94LCBwcmltaXRpdmVCb3VuZGluZ0JveE1vZGUpKTsKIAogICAgIGlmICghcHJl
dmlvdXNFZmZlY3QpCi0gICAgICAgIGJ1aWxkZXIuc2V0dXBCdWlsdGluRWZmZWN0cyhTb3VyY2VH
cmFwaGljOjpjcmVhdGUoZmlsdGVyKSk7CisgICAgICAgIGJ1aWxkZXIuc2V0dXBCdWlsdGluRWZm
ZWN0cyhTb3VyY2VHcmFwaGljOjpjcmVhdGUoKSk7CiAgICAgZWxzZQogICAgICAgICBidWlsZGVy
LnNldHVwQnVpbHRpbkVmZmVjdHMoeyAqcHJldmlvdXNFZmZlY3QgfSk7CiAKICAgICBidWlsZGVy
LnNldFRhcmdldEJvdW5kaW5nQm94KHRhcmdldEJvdW5kaW5nQm94KTsKICAgICBidWlsZGVyLnNl
dFByaW1pdGl2ZVVuaXRzKGZpbHRlckVsZW1lbnQucHJpbWl0aXZlVW5pdHMoKSk7CiAKLSAgICBh
dXRvIGxhc3RFZmZlY3QgPSBidWlsZGVyLmJ1aWxkRmlsdGVyRWZmZWN0cyhmaWx0ZXIsIGZpbHRl
ckVsZW1lbnQpOworICAgIGF1dG8gbGFzdEVmZmVjdCA9IGJ1aWxkZXIuYnVpbGRGaWx0ZXJFZmZl
Y3RzKGZpbHRlckVsZW1lbnQpOwogICAgIGlmICghbGFzdEVmZmVjdCkKICAgICAgICAgcmV0dXJu
IG51bGxwdHI7CiAKQEAgLTc1LDYgKzc1LDExIEBAIEZsb2F0U2l6ZSBTVkdGaWx0ZXI6OnNjYWxl
ZEJ5RmlsdGVyU2NhbGUoRmxvYXRTaXplIHNpemUpIGNvbnN0CiAgICAgcmV0dXJuIEZpbHRlcjo6
c2NhbGVkQnlGaWx0ZXJTY2FsZShzaXplKTsKIH0KIAordm9pZCBTVkdGaWx0ZXI6OmFwcGx5KCkK
K3sKKyAgICBtX2xhc3RFZmZlY3QtPmFwcGx5KCp0aGlzKTsKK30KKwogSW50T3V0c2V0cyBTVkdG
aWx0ZXI6Om91dHNldHMoKSBjb25zdAogewogICAgIHJldHVybiBtX2xhc3RFZmZlY3QtPm91dHNl
dHMoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9ncmFwaGljcy9maWx0ZXJzL1NW
R0ZpbHRlci5oIGIvU291cmNlL1dlYkNvcmUvc3ZnL2dyYXBoaWNzL2ZpbHRlcnMvU1ZHRmlsdGVy
LmgKaW5kZXggMTY2MDEyZmY0ZWJhY2QxNjU0NGVlMTQxZjA1ZDhjODY3M2EzNWY4Ny4uMWExYjky
Y2QwYmY3MTdjNTZiNjZlYTJmYTMyMzRlZjVmNDJhMjU1YiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvc3ZnL2dyYXBoaWNzL2ZpbHRlcnMvU1ZHRmlsdGVyLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvc3ZnL2dyYXBoaWNzL2ZpbHRlcnMvU1ZHRmlsdGVyLmgKQEAgLTM5LDYgKzM5LDcgQEAgcHVi
bGljOgogICAgIEZsb2F0U2l6ZSBzY2FsZWRCeUZpbHRlclNjYWxlKEZsb2F0U2l6ZSkgY29uc3Qg
ZmluYWw7CiAKICAgICBGbG9hdFJlY3QgdGFyZ2V0Qm91bmRpbmdCb3goKSBjb25zdCB7IHJldHVy
biBtX3RhcmdldEJvdW5kaW5nQm94OyB9CisgICAgdm9pZCBhcHBseSgpIG92ZXJyaWRlOwogCiAg
ICAgUmVmUHRyPEZpbHRlckVmZmVjdD4gbGFzdEVmZmVjdCgpIHsgcmV0dXJuIG1fbGFzdEVmZmVj
dDsgfQogICAgIHZvaWQgc2V0TGFzdEVmZmVjdChSZWZQdHI8RmlsdGVyRWZmZWN0PiYmIGxhc3RF
ZmZlY3QpIHsgbV9sYXN0RWZmZWN0ID0gV1RGTW92ZShsYXN0RWZmZWN0KTsgfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvc3ZnL2dyYXBoaWNzL2ZpbHRlcnMvU1ZHRmlsdGVyQnVpbGRlci5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvZ3JhcGhpY3MvZmlsdGVycy9TVkdGaWx0ZXJCdWlsZGVy
LmNwcAppbmRleCBiZThmMGZiMWMzZjUyZmZlNWM5ZTU0MTFiNjhjZTFjMGY4NGY4ZDAxLi42MGQ0
YmIyNmRhNWFlZjM4MDcwYzg3YmUyZmQzNGQ3MjY0YmMyZDgyIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9zdmcvZ3JhcGhpY3MvZmlsdGVycy9TVkdGaWx0ZXJCdWlsZGVyLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9zdmcvZ3JhcGhpY3MvZmlsdGVycy9TVkdGaWx0ZXJCdWlsZGVyLmNwcApA
QCAtNzUsNyArNzUsNyBAQCBzdGF0aWMgdW5zaWduZWQgdG90YWxOdW1iZXJGaWx0ZXJFZmZlY3Rz
KGNvbnN0IEZpbHRlckVmZmVjdCYgbGFzdEVmZmVjdCkKICAgICByZXR1cm4gY29sbGVjdEVmZmVj
dHMoJmxhc3RFZmZlY3QsIGFsbEVmZmVjdHMpOwogfQogCi1SZWZQdHI8RmlsdGVyRWZmZWN0PiBT
VkdGaWx0ZXJCdWlsZGVyOjpidWlsZEZpbHRlckVmZmVjdHMoRmlsdGVyJiBmaWx0ZXIsIFNWR0Zp
bHRlckVsZW1lbnQmIGZpbHRlckVsZW1lbnQpCitSZWZQdHI8RmlsdGVyRWZmZWN0PiBTVkdGaWx0
ZXJCdWlsZGVyOjpidWlsZEZpbHRlckVmZmVjdHMoU1ZHRmlsdGVyRWxlbWVudCYgZmlsdGVyRWxl
bWVudCkKIHsKICAgICBzdGF0aWMgY29uc3RleHByIHVuc2lnbmVkIG1heENvdW50Q2hpbGROb2Rl
cyA9IDIwMDsKICAgICBzdGF0aWMgY29uc3RleHByIHVuc2lnbmVkIG1heFRvdGFsTnVtYmVyRmls
dGVyRWZmZWN0cyA9IDEwMDsKQEAgLTg2LDcgKzg2LDcgQEAgUmVmUHRyPEZpbHRlckVmZmVjdD4g
U1ZHRmlsdGVyQnVpbGRlcjo6YnVpbGRGaWx0ZXJFZmZlY3RzKEZpbHRlciYgZmlsdGVyLCBTVkdG
aWwKICAgICBSZWZQdHI8RmlsdGVyRWZmZWN0PiBlZmZlY3Q7CiAKICAgICBmb3IgKGF1dG8mIGVm
ZmVjdEVsZW1lbnQgOiBjaGlsZHJlbk9mVHlwZTxTVkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0
dHJpYnV0ZXM+KGZpbHRlckVsZW1lbnQpKSB7Ci0gICAgICAgIGVmZmVjdCA9IGVmZmVjdEVsZW1l
bnQuYnVpbGQodGhpcywgZmlsdGVyKTsKKyAgICAgICAgZWZmZWN0ID0gZWZmZWN0RWxlbWVudC5i
dWlsZCgqdGhpcyk7CiAgICAgICAgIGlmICghZWZmZWN0KSB7CiAgICAgICAgICAgICBjbGVhckVm
ZmVjdHMoKTsKICAgICAgICAgICAgIHJldHVybiBudWxscHRyOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvc3ZnL2dyYXBoaWNzL2ZpbHRlcnMvU1ZHRmlsdGVyQnVpbGRlci5oIGIvU291cmNl
L1dlYkNvcmUvc3ZnL2dyYXBoaWNzL2ZpbHRlcnMvU1ZHRmlsdGVyQnVpbGRlci5oCmluZGV4IDM3
NWJkYjE1MzFlZjQzYWUyYjcxNTY2ZjY2NThkZWMzNGQ4ZDQ4YWMuLmI3YjgyNGI0ODQzMjMyNTc3
ZDIxMzBkODQ2YWFjOGI3ZjA5ZGU5OTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9n
cmFwaGljcy9maWx0ZXJzL1NWR0ZpbHRlckJ1aWxkZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9z
dmcvZ3JhcGhpY3MvZmlsdGVycy9TVkdGaWx0ZXJCdWlsZGVyLmgKQEAgLTY2LDcgKzY2LDcgQEAg
cHVibGljOgogICAgIHZvaWQgY2xlYXJSZXN1bHRzUmVjdXJzaXZlKEZpbHRlckVmZmVjdCopOwog
CiAgICAgdm9pZCBzZXR1cEJ1aWx0aW5FZmZlY3RzKFJlZjxGaWx0ZXJFZmZlY3Q+IHNvdXJjZUdy
YXBoaWMpOwotICAgIFJlZlB0cjxGaWx0ZXJFZmZlY3Q+IGJ1aWxkRmlsdGVyRWZmZWN0cyhGaWx0
ZXImLCBTVkdGaWx0ZXJFbGVtZW50Jik7CisgICAgUmVmUHRyPEZpbHRlckVmZmVjdD4gYnVpbGRG
aWx0ZXJFZmZlY3RzKFNWR0ZpbHRlckVsZW1lbnQmKTsKIAogcHJpdmF0ZToKICAgICBpbmxpbmUg
dm9pZCBhZGRCdWlsdGluRWZmZWN0cygpCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>