<?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>164432</bug_id>
          
          <creation_ts>2016-11-04 14:11:29 -0700</creation_ts>
          <short_desc>[JSC] The implementation of 8 bit operation in MacroAssembler should care about uint8_t / int8_t</short_desc>
          <delta_ts>2016-11-09 11:13:53 -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>JavaScriptCore</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></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>164004</blocked>
    
    <blocked>164487</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Yusuke Suzuki">ysuzuki</reporter>
          <assigned_to name="Yusuke Suzuki">ysuzuki</assigned_to>
          <cc>fpizlo</cc>
    
    <cc>ggaren</cc>
    
    <cc>jfbastien</cc>
    
    <cc>joepeck</cc>
    
    <cc>keith_miller</cc>
    
    <cc>mark.lam</cc>
    
    <cc>msaboff</cc>
    
    <cc>ossy</cc>
    
    <cc>saam</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1248267</commentid>
    <comment_count>0</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2016-11-04 14:11:29 -0700</bug_when>
    <thetext>In r203331, we fixed some bugs.
But the behavior is not changed. We just drop the meaningless assertions.

However, MacroAssembler still has a bug.
In ARM, ARM64 assemblers, 8bit operations are implementation like this.

Jump branch8(RelationCondition cord, Address left, TrustedImm32 right)
{
    TrustedImm32 right8(static_cast&lt;int8_t&gt;(right.m_value));
    load8(left, getCachedMemoryTempRegisterIDAndInvalidate());
    return branch32(cone, memoryTempRegister, right8);
}

The problem is, load8 does not perform sign extension. So if you pass signed 8bit value in |right|, the above code has a bad time. 32bit extended values becomes different. One is sign extended, another is not.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1248268</commentid>
    <comment_count>1</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2016-11-04 14:11:40 -0700</bug_when>
    <thetext>https://trac.webkit.org/changeset/203331</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1248275</commentid>
    <comment_count>2</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2016-11-04 14:25:50 -0700</bug_when>
    <thetext>Current ARM64 branch8 always use load8 to load 8bit value to a register.
It means that we cannot perform signed operations like GreaterThan, LessThan etc.

addr holds -1 as int8_t.
branch8(LessThan, addr, 0) =&gt;

load8(addr) =&gt; 32bit 255 is sotred in the register
255 &lt; 0 (IN 32bit context).

=&gt; false. But it should return true.

If we would like to make it work, we should select load8 / load8SignedExtendTo32 based on the condition.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1248276</commentid>
    <comment_count>3</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2016-11-04 14:27:26 -0700</bug_when>
    <thetext>This issue actually causes https://bugs.webkit.org/show_bug.cgi?id=164004&apos;s crash.
Since now JSType(8bit) may have the highest bit.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1248278</commentid>
    <comment_count>4</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2016-11-04 14:30:18 -0700</bug_when>
    <thetext>(In reply to comment #2)
&gt; Current ARM64 branch8 always use load8 to load 8bit value to a register.
&gt; It means that we cannot perform signed operations like GreaterThan, LessThan
&gt; etc.
&gt; 
&gt; addr holds -1 as int8_t.
&gt; branch8(LessThan, addr, 0) =&gt;
&gt; 
&gt; load8(addr) =&gt; 32bit 255 is sotred in the register
&gt; 255 &lt; 0 (IN 32bit context).
&gt; 
&gt; =&gt; false. But it should return true.
&gt; 
&gt; If we would like to make it work, we should select load8 /
&gt; load8SignedExtendTo32 based on the condition.

And also, we should select the way to mask the 32bit value.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1248281</commentid>
    <comment_count>5</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2016-11-04 14:33:30 -0700</bug_when>
    <thetext>(In reply to comment #4)
&gt; (In reply to comment #2)
&gt; &gt; Current ARM64 branch8 always use load8 to load 8bit value to a register.
&gt; &gt; It means that we cannot perform signed operations like GreaterThan, LessThan
&gt; &gt; etc.
&gt; &gt; 
&gt; &gt; addr holds -1 as int8_t.
&gt; &gt; branch8(LessThan, addr, 0) =&gt;
&gt; &gt; 
&gt; &gt; load8(addr) =&gt; 32bit 255 is sotred in the register
&gt; &gt; 255 &lt; 0 (IN 32bit context).
&gt; &gt; 
&gt; &gt; =&gt; false. But it should return true.
&gt; &gt; 
&gt; &gt; If we would like to make it work, we should select load8 /
&gt; &gt; load8SignedExtendTo32 based on the condition.
&gt; 
&gt; And also, we should select the way to mask the 32bit value.

Yes, exactly.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1248444</commentid>
    <comment_count>6</comment_count>
      <attachid>293984</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2016-11-04 22:22:01 -0700</bug_when>
    <thetext>Created attachment 293984
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1248445</commentid>
    <comment_count>7</comment_count>
      <attachid>293984</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2016-11-04 22:23:30 -0700</bug_when>
    <thetext>Comment on attachment 293984
Patch

WIP</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1248467</commentid>
    <comment_count>8</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2016-11-05 01:57:20 -0700</bug_when>
    <thetext>OK, I&apos;ve ensured that this fixes https://bugs.webkit.org/show_bug.cgi?id=164004 problem.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1248595</commentid>
    <comment_count>9</comment_count>
      <attachid>294018</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2016-11-06 00:58:40 -0700</bug_when>
    <thetext>Created attachment 294018
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1248793</commentid>
    <comment_count>10</comment_count>
      <attachid>294072</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2016-11-07 11:24:59 -0800</bug_when>
    <thetext>Created attachment 294072
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1248796</commentid>
    <comment_count>11</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2016-11-07 11:30:16 -0800</bug_when>
    <thetext>And we would like to introduce some testing mechanism like this in the separate patch. https://bugs.webkit.org/show_bug.cgi?id=164487</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1248843</commentid>
    <comment_count>12</comment_count>
      <attachid>294072</attachid>
    <who name="Michael Saboff">msaboff</who>
    <bug_when>2016-11-07 14:25:47 -0800</bug_when>
    <thetext>Comment on attachment 294072
Patch

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

r=me

&gt; Source/JavaScriptCore/ChangeLog:8
&gt; +        Except for X86, our supported MacroAssemblers do not have the native 8bit instructions.

Remove &quot;the&quot;.

&gt; Source/JavaScriptCore/ChangeLog:20
&gt; +        The problem is that we exclusively use zero-extended load instruction (load8). Even if
&gt; +        RelationCondition is signedness aware one, we do not perform signed extension.

How about changing &quot;Even if RelationCondition is signedness aware one&quot; to &quot;Even for signed RelationConditions.&quot;?  Change &quot;signed extension&quot; to &quot;sign extension&quot;.

&gt; Source/JavaScriptCore/ChangeLog:21
&gt; +        It makes signedness aware operations with negative numbers incorrect!

Change &quot;signedness aware operations&quot; to &quot;signed operations&quot;.

&gt; Source/JavaScriptCore/ChangeLog:23
&gt; +        into 32bit register. On the other hand, |right| will be signed extended. If you pass 0

Use &quot;sign extended&quot;.

&gt; Source/JavaScriptCore/ChangeLog:33
&gt; +        This problem does not matter since it does not perform extension.

You probably can remove this sentence if you insert &quot;signed&quot; between &quot;native&quot; and &quot;8bit&quot; in the prior sentence.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1248853</commentid>
    <comment_count>13</comment_count>
      <attachid>294072</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2016-11-07 14:46:02 -0800</bug_when>
    <thetext>Comment on attachment 294072
Patch

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

Thanks! I&apos;ll land it once EWS is back.

&gt;&gt; Source/JavaScriptCore/ChangeLog:8
&gt;&gt; +        Except for X86, our supported MacroAssemblers do not have the native 8bit instructions.
&gt; 
&gt; Remove &quot;the&quot;.

Dropped.

&gt;&gt; Source/JavaScriptCore/ChangeLog:20
&gt;&gt; +        RelationCondition is signedness aware one, we do not perform signed extension.
&gt; 
&gt; How about changing &quot;Even if RelationCondition is signedness aware one&quot; to &quot;Even for signed RelationConditions.&quot;?  Change &quot;signed extension&quot; to &quot;sign extension&quot;.

Sounds nice. Fixed.

&gt;&gt; Source/JavaScriptCore/ChangeLog:21
&gt;&gt; +        It makes signedness aware operations with negative numbers incorrect!
&gt; 
&gt; Change &quot;signedness aware operations&quot; to &quot;signed operations&quot;.

Fixed.

&gt;&gt; Source/JavaScriptCore/ChangeLog:23
&gt;&gt; +        into 32bit register. On the other hand, |right| will be signed extended. If you pass 0
&gt; 
&gt; Use &quot;sign extended&quot;.

Fixed.

&gt;&gt; Source/JavaScriptCore/ChangeLog:33
&gt;&gt; +        This problem does not matter since it does not perform extension.
&gt; 
&gt; You probably can remove this sentence if you insert &quot;signed&quot; between &quot;native&quot; and &quot;8bit&quot; in the prior sentence.

OK, insert &quot;signed&quot; between &quot;native&quot; and &quot;8bit&quot;. And drop this sentence.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1248856</commentid>
    <comment_count>14</comment_count>
      <attachid>294089</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2016-11-07 14:54:57 -0800</bug_when>
    <thetext>Created attachment 294089
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1249371</commentid>
    <comment_count>15</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2016-11-09 11:13:53 -0800</bug_when>
    <thetext>Committed r208450: &lt;http://trac.webkit.org/changeset/208450&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>293984</attachid>
            <date>2016-11-04 22:22:01 -0700</date>
            <delta_ts>2016-11-06 00:58:36 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-164432-20161104221758.patch</filename>
            <type>text/plain</type>
            <size>45390</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjA4NDAwCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBi
MzU3MzU5MzhlZWJjNmMzYTUwNzA5ZDFmZDk1NTUzMDE3MjRkY2RlLi4yODhjYWY5OWE3YTRlNGFh
NTQ4ZWMwODU1YzI3NTM5ZDhhZWZkY2MyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw3NyBAQAorMjAxNi0xMS0wNCAgWXVzdWtlIFN1enVraSAgPHV0YXRhbmUudGVhQGdtYWls
LmNvbT4KKworICAgICAgICBbSlNDXSBUaGUgaW1wbGVtZW50YXRpb24gb2YgOCBiaXQgb3BlcmF0
aW9uIGluIE1hY3JvQXNzZW1ibGVyIHNob3VsZCBjYXJlIGFib3V0IHVpbnQ4X3QgLyBpbnQ4X3QK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE2NDQzMgor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEV4Y2VwdCBm
b3IgWDg2LCBvdXIgc3VwcG9ydGVkIE1hY3JvQXNzZW1ibGVycyBkbyBub3QgaGF2ZSB0aGUgbmF0
aXZlIDhiaXQgaW5zdHJ1Y3Rpb25zLgorICAgICAgICBJdCBtZWFucyB0aGF0IGFsbCB0aGUgOGJp
dCBpbnN0cnVjdGlvbnMgYXJlIGNvbnZlcnRlZCB0byAzMmJpdCBvcGVyYXRpb25zIGJ5IHVzaW5n
CisgICAgICAgIHNjcmF0Y2ggcmVnaXN0ZXJzLiBGb3IgZXhhbXBsZSwgQVJNNjQgYnJhbmNoOCBp
bXBsZW1lbnRhdGlvbiBpcyB0aGUgZm9sbG93aW5nLgorCisgICAgICAgICAgICBKdW1wIGJyYW5j
aDgoUmVsYXRpb25Db25kaXRpb24gY29yZCwgQWRkcmVzcyBsZWZ0LCBUcnVzdGVkSW1tMzIgcmln
aHQpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgVHJ1c3RlZEltbTMyIHJpZ2h0OChz
dGF0aWNfY2FzdDxpbnQ4X3Q+KHJpZ2h0Lm1fdmFsdWUpKTsKKyAgICAgICAgICAgICAgICBsb2Fk
OChsZWZ0LCBnZXRDYWNoZWRNZW1vcnlUZW1wUmVnaXN0ZXJJREFuZEludmFsaWRhdGUoKSk7Cisg
ICAgICAgICAgICAgICAgcmV0dXJuIGJyYW5jaDMyKGNvbmUsIG1lbW9yeVRlbXBSZWdpc3Rlciwg
cmlnaHQ4KTsKKyAgICAgICAgICAgIH0KKworICAgICAgICBUaGUgcHJvYmxlbSBpcyB0aGF0IHdl
IGV4Y2x1c2l2ZWx5IHVzZSB6ZXJvLWV4dGVuZGVkIGxvYWQgaW5zdHJ1Y3Rpb24gKGxvYWQ4KS4g
RXZlbiBpZgorICAgICAgICBSZWxhdGlvbkNvbmRpdGlvbiBpcyBzaWduZWRuZXNzIGF3YXJlIG9u
ZSwgd2UgZG8gbm90IHBlcmZvcm0gc2lnbmVkIGV4dGVuc2lvbi4KKyAgICAgICAgSXQgbWFrZXMg
c2lnbmVkbmVzcyBhd2FyZSBvcGVyYXRpb25zIHdpdGggbmVnYXRpdmUgbnVtYmVycyBpbmNvcnJl
Y3QhCisgICAgICAgIENvbnNpZGVyIHRoZSB8bGVmdHwgYWRkcmVzcyBob2xkcyBgLTFgIGluIGlu
dDhfdCBmb3JtLiBIb3dldmVyIGxvYWQ4IHdpbGwgbG9hZCBpdCBhcyAyNTUKKyAgICAgICAgaW50
byAzMmJpdCByZWdpc3Rlci4gT24gdGhlIG90aGVyIGhhbmQsIHxyaWdodHwgd2lsbCBiZSBzaWdu
ZWQgZXh0ZW5kZWQuIElmIHlvdSBwYXNzIDAKKyAgICAgICAgYXMgfHJpZ2h0fCBhbmQgTGVzc1Ro
YW4gY29uZGl0aW9uLCB0aGlzIGJyYW5jaDggc2hvdWxkIGp1bXAgYmFzZWQgb24gdGhlIGFuc3dl
ciBvZgorICAgICAgICBgLTEgPCAwYC4gQnV0IHRoZSBjdXJyZW50IE1hY3JvQXNzZW1ibGVyIHBl
cmZvcm1zIGAyNTUgPCAwYCBpbiBpbnQzMl90IGNvbnRleHQgYW5kIHJldHVybnMKKyAgICAgICAg
dGhlIGluY29ycmVjdCByZXN1bHQuCisKKyAgICAgICAgV2Ugc2hvdWxkIGZvbGxvdyB0aGUgeDg2
IG1vZGVsLiBTbyB3ZSBzaG91bGQgc2VsZWN0IHRoZSBhcHByb3ByaWF0ZSBsb2FkIG9wZXJhdGlv
biBhbmQgbWFza2luZworICAgICAgICBvcGVyYXRpb24gYmFzZWQgb24gdGhlIFJlbGF0aW9uQ29u
ZGl0aW9uLiBUaGlzIHBhdGNoIGludHJvZHVjZXMgbWFzazhPbkNvbmRpdGlvbiBhbmQgbG9hZDhP
bkNvbmRpdGlvbi4KKyAgICAgICAgQW5kIHdlIHVzZSB0aGVtIGluIDhiaXQgb3BlcmF0aW9ucyBp
bmNsdWRpbmcgYnJhbmNoOCwgYnJhbmNoVGVzdDgsIGNvbXBhcmU4LCBhbmQgdGVzdDguCisKKyAg
ICAgICAgV2UgaW50ZW50aW9uYWxseSBkbyBub3QgY2hhbmdlIGFueXRoaW5nIG9uIHg4NiBhc3Nl
bWJsZXIgc2luY2UgaXQgaGFzIHRoZSBuYXRpdmUgOGJpdCBvcGVyYXRpb25zLgorICAgICAgICBU
aGlzIHByb2JsZW0gZG9lcyBub3QgbWF0dGVyIHNpbmNlIGl0IGRvZXMgbm90IHBlcmZvcm0gZXh0
ZW5zaW9uLgorCisgICAgICAgICogSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvajoKKyAgICAgICAgKiBhc3NlbWJsZXIvQWJzdHJhY3RNYWNyb0Fzc2VtYmxlci5oOgorICAg
ICAgICAqIGFzc2VtYmxlci9NYWNyb0Fzc2VtYmxlci5oOgorICAgICAgICAoSlNDOjpNYWNyb0Fz
c2VtYmxlcjo6aXNTaWduZWQpOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlcjo6aXNVbnNp
Z25lZCk6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyOjpicmFuY2hUZXN0OCk6CisgICAg
ICAgICogYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyQVJNLmg6CisgICAgICAgIChKU0M6Ok1hY3Jv
QXNzZW1ibGVyQVJNOjpicmFuY2g4KToKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJBUk06
OmJyYW5jaFRlc3Q4KToKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJBUk06OmNvbXBhcmU4
KToKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJBUk06OnRlc3Q4KToKKyAgICAgICAgKiBh
c3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJBUk02NC5oOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2Vt
YmxlckFSTTY0Ojpsb2FkOFNpZ25lZEV4dGVuZFRvMzIpOgorICAgICAgICAoSlNDOjpNYWNyb0Fz
c2VtYmxlckFSTTY0OjpicmFuY2g4KToKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJBUk02
NDo6YnJhbmNoVGVzdDgpOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlckFSTTY0Ojpjb21w
YXJlOCk6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyQVJNNjQ6OnRlc3Q4KToKKyAgICAg
ICAgKiBhc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJBUk12Ny5oOgorICAgICAgICAoSlNDOjpNYWNy
b0Fzc2VtYmxlckFSTXY3OjpicmFuY2g4KToKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJB
Uk12Nzo6YnJhbmNoVGVzdDgpOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlckFSTXY3Ojpj
b21wYXJlOCk6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyQVJNdjc6OnRlc3Q4KToKKyAg
ICAgICAgKiBhc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJIZWxwZXJzLmg6IEFkZGVkLgorICAgICAg
ICAoSlNDOjpNYWNyb0Fzc2VtYmxlckhlbHBlcnM6OmlzU2lnbmVkKToKKyAgICAgICAgKEpTQzo6
TWFjcm9Bc3NlbWJsZXJIZWxwZXJzOjppc1Vuc2lnbmVkKToKKyAgICAgICAgKEpTQzo6TWFjcm9B
c3NlbWJsZXJIZWxwZXJzOjptYXNrOE9uQ29uZGl0aW9uKToKKyAgICAgICAgKEpTQzo6TWFjcm9B
c3NlbWJsZXJIZWxwZXJzOjpsb2FkOE9uQ29uZGl0aW9uKToKKyAgICAgICAgKiBhc3NlbWJsZXIv
TWFjcm9Bc3NlbWJsZXJNSVBTLmg6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyTUlQUzo6
YnJhbmNoOCk6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyTUlQUzo6Y29tcGFyZTgpOgor
ICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlck1JUFM6OmJyYW5jaFRlc3Q4KToKKyAgICAgICAg
KEpTQzo6TWFjcm9Bc3NlbWJsZXJNSVBTOjp0ZXN0OCk6CisgICAgICAgICogYXNzZW1ibGVyL01h
Y3JvQXNzZW1ibGVyU0g0Lmg6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyU0g0OjpicmFu
Y2hUZXN0OCk6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyU0g0OjpicmFuY2g4KToKKyAg
ICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJTSDQ6OmNvbXBhcmU4KToKKyAgICAgICAgKEpTQzo6
TWFjcm9Bc3NlbWJsZXJTSDQ6OnRlc3Q4KToKKyAgICAgICAgKiBhc3NlbWJsZXIvTWFjcm9Bc3Nl
bWJsZXJYODZfNjQuaDoKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJYODZfNjQ6OmJyYW5j
aDgpOgorCiAyMDE2LTExLTAzICBNYXJrIExhbSAgPG1hcmsubGFtQGFwcGxlLmNvbT4KIAogICAg
ICAgICBDbG9uZWRBcmd1bWVudHMgbmVlZCB0byBhbHNvIHN1cHBvcnQgaGF2ZUFCYWRUaW1lIG1v
ZGUuCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNv
ZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0
Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDE5OTczNDA0NzQwYzc5NDJlNjdi
OTgwYzhkM2U2YmQwYzdlYjcyMTMuLmY3MGI0MjA2N2M3NDVlZGIxZTM0MzY3Y2ZjYWNhYWEwMjFl
YzcyNGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZh
U2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0yMTk3LDYgKzIxOTcsNyBA
QAogCQlFMzI4REFFOTFEMzhEMDA1MDAxQTI1MjkgLyogQnl0ZWNvZGVHcmFwaC5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTNEMjY0MjgxRDM4QzA0MjAw
MEJFMTc0IC8qIEJ5dGVjb2RlR3JhcGguaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQ
cml2YXRlLCApOyB9OyB9OwogCQlFMzI4REFFQTFEMzhEMDA1MDAxQTI1MjkgLyogQnl0ZWNvZGVS
ZXdyaXRlci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSBFM0QyNjQyOTFEMzhDMDQyMDAwQkUxNzQgLyogQnl0ZWNvZGVSZXdyaXRlci5jcHAgKi87IH07
CiAJCUUzMjhEQUVCMUQzOEQwMDUwMDFBMjUyOSAvKiBCeXRlY29kZVJld3JpdGVyLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFM0QyNjQyQTFEMzhDMDQy
MDAwQkUxNzQgLyogQnl0ZWNvZGVSZXdyaXRlci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVT
ID0gKFByaXZhdGUsICk7IH07IH07CisJCUUzMkFCMjQ0MURDRDc1RjQwMEQ3NTMzQSAvKiBNYWNy
b0Fzc2VtYmxlckhlbHBlcnMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IEUzODBBNzZCMURDRDcxOTUwMDBGODlFNiAvKiBNYWNyb0Fzc2VtYmxlckhlbHBl
cnMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlF
MzJGRjFFQTFEQTc1NzFDMDBBOEJGMjEgLyogRE9NSklUU2xvd1BhdGhDYWxscy5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTNDQjFFMjQxREE3NTQwQTAw
RkExRTU2IC8qIERPTUpJVFNsb3dQYXRoQ2FsbHMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRF
UyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlFMzM2MzdBNTFCNjMyMjAyMDBFRTA4NDAgLyogUmVm
bGVjdE9iamVjdC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSBFMzM2MzdBMzFCNjMyMjAyMDBFRTA4NDAgLyogUmVmbGVjdE9iamVjdC5jcHAgKi87IH07
CiAJCUUzMzYzN0E2MUI2MzIyMDIwMEVFMDg0MCAvKiBSZWZsZWN0T2JqZWN0LmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMzM2MzdBNDFCNjMyMjAyMDBF
RTA4NDAgLyogUmVmbGVjdE9iamVjdC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFBy
aXZhdGUsICk7IH07IH07CkBAIC00NjY1LDYgKzQ2NjYsNyBAQAogCQlFMzc5NEU3NDFCNzdFQjk3
MDA1NTQzQUUgLyogTW9kdWxlQW5hbHl6ZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gTW9kdWxlQW5hbHl6ZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTM3
QUQ4M0ExREE0OTI4MDAwRjNENDEyIC8qIERPTUpJVFBhdGNocG9pbnRQYXJhbXMuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRE9NSklUUGF0Y2hwb2ludFBhcmFtcy5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFMzdBRDgzQjFEQTQ5MjgwMDBGM0Q0MTIgLyogRE9N
SklUUmVnLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IERPTUpJVFJlZy5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlFMzgwQTc2QjFEQ0Q3MTk1MDAwRjg5RTYgLyog
TWFjcm9Bc3NlbWJsZXJIZWxwZXJzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IE1hY3JvQXNzZW1ibGVySGVscGVycy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlF
Mzk2M0NFQzFCNzNGNzUwMDBFQjRDRTUgLyogTm9kZXNBbmFseXplTW9kdWxlLmNwcCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IE5vZGVzQW5hbHl6ZU1vZHVsZS5jcHA7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUUzOUQ5RDg0MUQzOTAwMDYwMDY2NzI4MiAvKiBJ
bnRlcnByZXRlcklubGluZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSW50
ZXJwcmV0ZXJJbmxpbmVzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUUzOURBNEE0
MUI3RThCN0MwMDg0RjMzQSAvKiBKU01vZHVsZVJlY29yZC5jcHAgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5jcHA7IHBhdGggPSBKU01vZHVsZVJlY29yZC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CkBAIC03MDY0LDYgKzcwNjYsNyBAQAogCQkJCTg2QUREMTQ0MEZEREVBOTgwMDA2
RUVDMiAvKiBNYWNyb0Fzc2VtYmxlckFSTXY3LmggKi8sCiAJCQkJMEY2REI3RUIxRDYxN0QwRjAw
Q0RCRjhFIC8qIE1hY3JvQXNzZW1ibGVyQ29kZVJlZi5jcHAgKi8sCiAJCQkJODYzQjIzREYwRkM2
MEU2MjAwNzAzQUE0IC8qIE1hY3JvQXNzZW1ibGVyQ29kZVJlZi5oICovLAorCQkJCUUzODBBNzZC
MURDRDcxOTUwMDBGODlFNiAvKiBNYWNyb0Fzc2VtYmxlckhlbHBlcnMuaCAqLywKIAkJCQk4NkM1
NjhERTExQTIxM0VFMDAwN0Y3RjAgLyogTWFjcm9Bc3NlbWJsZXJNSVBTLmggKi8sCiAJCQkJRkU2
OEM2MzUxQjkwREREOTAwNDJCQ0IzIC8qIE1hY3JvQXNzZW1ibGVyUHJpbnRlci5jcHAgKi8sCiAJ
CQkJRkU2OEM2MzYxQjkwREREOTAwNDJCQ0IzIC8qIE1hY3JvQXNzZW1ibGVyUHJpbnRlci5oICov
LApAQCAtODA0OCw2ICs4MDUxLDcgQEAKIAkJCQkwRjQwRTRBODFDNDk3Rjc0MDBBNTc3RkEgLyog
QWlyT3Bjb2RlR2VuZXJhdGVkLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjIzNUJFRTE3MTc4RTcz
MDA2OTBDN0YgLyogREZHT1NSRXhpdFByZXBhcmF0aW9uLmggaW4gSGVhZGVycyAqLywKIAkJCQkw
RjYyMzc5ODFBRTQ1Q0E3MDBENDAyRUEgLyogREZHUGhhbnRvbUluc2VydGlvblBoYXNlLmggaW4g
SGVhZGVycyAqLywKKwkJCQlFMzJBQjI0NDFEQ0Q3NUY0MDBENzUzM0EgLyogTWFjcm9Bc3NlbWJs
ZXJIZWxwZXJzLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRkZGQzk1QzE0RUY5MEFGMDBDNzI1MzIg
LyogREZHUGhhc2UuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGMkI5Q0VCMTlEMEJBN0QwMEIxRDFC
NSAvKiBERkdQaGlDaGlsZHJlbi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTc4QTk3N0IxNzk3MzhC
ODAwOURGNzQ0IC8qIERGR1BsYW4uaCBpbiBIZWFkZXJzICovLApkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9BYnN0cmFjdE1hY3JvQXNzZW1ibGVyLmggYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL0Fic3RyYWN0TWFjcm9Bc3NlbWJsZXIuaAppbmRl
eCA2ZjU1ZDdmZTAwNTcxMWUxOGEwOTEwYTNiYjZjYzY3MGJlMmVjMGUwLi4zN2IyMWQ4ZDdiODgy
NzUzOWI2OTQ5MGFjNjY2ZWVhMzM2ZjViNjk4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvYXNzZW1ibGVyL0Fic3RyYWN0TWFjcm9Bc3NlbWJsZXIuaAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYXNzZW1ibGVyL0Fic3RyYWN0TWFjcm9Bc3NlbWJsZXIuaApAQCAtMzEsNiAr
MzEsNyBAQAogI2luY2x1ZGUgIkNQVS5oIgogI2luY2x1ZGUgIkNvZGVMb2NhdGlvbi5oIgogI2lu
Y2x1ZGUgIk1hY3JvQXNzZW1ibGVyQ29kZVJlZi5oIgorI2luY2x1ZGUgIk1hY3JvQXNzZW1ibGVy
SGVscGVycy5oIgogI2luY2x1ZGUgIk9wdGlvbnMuaCIKICNpbmNsdWRlIDx3dGYvQ3J5cHRvZ3Jh
cGhpY2FsbHlSYW5kb21OdW1iZXIuaD4KICNpbmNsdWRlIDx3dGYvTm9uY29weWFibGUuaD4KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXIu
aCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXIuaAppbmRl
eCBiNDk4MDg0NTFiNjVmYTUyZmY5MWE4NmE4Nzg2OTgzNGZiNTYyNGIzLi41MjZjYzgyM2EwNTE5
ZDViYmJlZTlhNTUyYzExOGFhMjYzNzgxOWYxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlci5oCkBAIC02NSw2ICs2NSw4IEBAIHR5cGVkZWYg
TWFjcm9Bc3NlbWJsZXJTSDQgTWFjcm9Bc3NlbWJsZXJCYXNlOwogI2Vycm9yICJUaGUgTWFjcm9B
c3NlbWJsZXIgaXMgbm90IHN1cHBvcnRlZCBvbiB0aGlzIHBsYXRmb3JtLiIKICNlbmRpZgogCisj
aW5jbHVkZSAiTWFjcm9Bc3NlbWJsZXJIZWxwZXJzLmgiCisKIG5hbWVzcGFjZSBKU0MgewogCiBj
bGFzcyBNYWNyb0Fzc2VtYmxlciA6IHB1YmxpYyBNYWNyb0Fzc2VtYmxlckJhc2UgewpAQCAtMTQw
LDcgKzE0Miw2IEBAIGNsYXNzIE1hY3JvQXNzZW1ibGVyIDogcHVibGljIE1hY3JvQXNzZW1ibGVy
QmFzZSB7CiAgICAgc3RhdGljIGNvbnN0IGRvdWJsZSB0d29Ub1RoZTMyOyAvLyBUaGlzIGlzIHN1
cGVyIHVzZWZ1bCBmb3Igc29tZSBkb3VibGUgY29kZS4KIAogICAgIC8vIFV0aWxpdGllcyB1c2Vk
IGJ5IHRoZSBERkcgSklULgotI2lmIEVOQUJMRShERkdfSklUKQogICAgIHVzaW5nIE1hY3JvQXNz
ZW1ibGVyQmFzZTo6aW52ZXJ0OwogICAgIAogICAgIHN0YXRpYyBEb3VibGVDb25kaXRpb24gaW52
ZXJ0KERvdWJsZUNvbmRpdGlvbiBjb25kKQpAQCAtMjMzLDQ0ICsyMzQsMjUgQEAgY2xhc3MgTWFj
cm9Bc3NlbWJsZXIgOiBwdWJsaWMgTWFjcm9Bc3NlbWJsZXJCYXNlIHsKICAgICAgICAgcmV0dXJu
IEVxdWFsOwogICAgIH0KIAotICAgIC8vIFRydWUgaWYgdGhpczoKLSAgICAvLyAgICAgYnJhbmNo
OChjb25kLCB2YWx1ZSwgdmFsdWUpCi0gICAgLy8gSXMgdGhlIHNhbWUgYXMgdGhpczoKLSAgICAv
LyAgICAgYnJhbmNoMzIoY29uZCwgc2lnbkV4dDgodmFsdWUpLCBzaWduRXh0OCh2YWx1ZSkpCiAg
ICAgc3RhdGljIGJvb2wgaXNTaWduZWQoUmVsYXRpb25hbENvbmRpdGlvbiBjb25kKQogICAgIHsK
LSAgICAgICAgc3dpdGNoIChjb25kKSB7Ci0gICAgICAgIGNhc2UgRXF1YWw6Ci0gICAgICAgIGNh
c2UgTm90RXF1YWw6Ci0gICAgICAgIGNhc2UgR3JlYXRlclRoYW46Ci0gICAgICAgIGNhc2UgR3Jl
YXRlclRoYW5PckVxdWFsOgotICAgICAgICBjYXNlIExlc3NUaGFuOgotICAgICAgICBjYXNlIExl
c3NUaGFuT3JFcXVhbDoKLSAgICAgICAgICAgIHJldHVybiB0cnVlOwotICAgICAgICBkZWZhdWx0
OgotICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICB9CisgICAgICAgIHJldHVybiBN
YWNyb0Fzc2VtYmxlckhlbHBlcnM6OmlzU2lnbmVkPE1hY3JvQXNzZW1ibGVyPihjb25kKTsKICAg
ICB9CiAKLSAgICAvLyBUcnVlIGlmIHRoaXM6Ci0gICAgLy8gICAgIGJyYW5jaDgoY29uZCwgdmFs
dWUsIHZhbHVlKQotICAgIC8vIElzIHRoZSBzYW1lIGFzIHRoaXM6Ci0gICAgLy8gICAgIGJyYW5j
aDMyKGNvbmQsIHplcm9FeHQ4KHZhbHVlKSwgemVyb0V4dDgodmFsdWUpKQogICAgIHN0YXRpYyBi
b29sIGlzVW5zaWduZWQoUmVsYXRpb25hbENvbmRpdGlvbiBjb25kKQogICAgIHsKLSAgICAgICAg
c3dpdGNoIChjb25kKSB7Ci0gICAgICAgIGNhc2UgRXF1YWw6Ci0gICAgICAgIGNhc2UgTm90RXF1
YWw6Ci0gICAgICAgIGNhc2UgQWJvdmU6Ci0gICAgICAgIGNhc2UgQWJvdmVPckVxdWFsOgotICAg
ICAgICBjYXNlIEJlbG93OgotICAgICAgICBjYXNlIEJlbG93T3JFcXVhbDoKLSAgICAgICAgICAg
IHJldHVybiB0cnVlOwotICAgICAgICBkZWZhdWx0OgotICAgICAgICAgICAgcmV0dXJuIGZhbHNl
OwotICAgICAgICB9CisgICAgICAgIHJldHVybiBNYWNyb0Fzc2VtYmxlckhlbHBlcnM6OmlzVW5z
aWduZWQ8TWFjcm9Bc3NlbWJsZXI+KGNvbmQpOworICAgIH0KKworICAgIHN0YXRpYyBib29sIGlz
U2lnbmVkKFJlc3VsdENvbmRpdGlvbiBjb25kKQorICAgIHsKKyAgICAgICAgcmV0dXJuIE1hY3Jv
QXNzZW1ibGVySGVscGVyczo6aXNTaWduZWQ8TWFjcm9Bc3NlbWJsZXI+KGNvbmQpOworICAgIH0K
KworICAgIHN0YXRpYyBib29sIGlzVW5zaWduZWQoUmVzdWx0Q29uZGl0aW9uIGNvbmQpCisgICAg
eworICAgICAgICByZXR1cm4gTWFjcm9Bc3NlbWJsZXJIZWxwZXJzOjppc1Vuc2lnbmVkPE1hY3Jv
QXNzZW1ibGVyPihjb25kKTsKICAgICB9Ci0jZW5kaWYKIAogICAgIC8vIFBsYXRmb3JtIGFnbm9z
dGljIGNvbnZlbmllbmNlIGZ1bmN0aW9ucywKICAgICAvLyBkZXNjcmliZWQgaW4gdGVybXMgb2Yg
b3RoZXIgbWFjcm8gYXNzZW1ibHkgbWV0aG9kcy4KQEAgLTc5Nyw4ICs3NzksNyBAQCBjbGFzcyBN
YWNyb0Fzc2VtYmxlciA6IHB1YmxpYyBNYWNyb0Fzc2VtYmxlckJhc2UgewogICAgIHVzaW5nIE1h
Y3JvQXNzZW1ibGVyQmFzZTo6YnJhbmNoVGVzdDg7CiAgICAgSnVtcCBicmFuY2hUZXN0OChSZXN1
bHRDb25kaXRpb24gY29uZCwgRXh0ZW5kZWRBZGRyZXNzIGFkZHJlc3MsIFRydXN0ZWRJbW0zMiBt
YXNrID0gVHJ1c3RlZEltbTMyKC0xKSkKICAgICB7Ci0gICAgICAgIFRydXN0ZWRJbW0zMiBtYXNr
OChzdGF0aWNfY2FzdDxpbnQ4X3Q+KG1hc2subV92YWx1ZSkpOwotICAgICAgICByZXR1cm4gTWFj
cm9Bc3NlbWJsZXJCYXNlOjpicmFuY2hUZXN0OChjb25kLCBBZGRyZXNzKGFkZHJlc3MuYmFzZSwg
YWRkcmVzcy5vZmZzZXQpLCBtYXNrOCk7CisgICAgICAgIHJldHVybiBNYWNyb0Fzc2VtYmxlckJh
c2U6OmJyYW5jaFRlc3Q4KGNvbmQsIEFkZHJlc3MoYWRkcmVzcy5iYXNlLCBhZGRyZXNzLm9mZnNl
dCksIG1hc2spOwogICAgIH0KIAogI2Vsc2UgLy8gIUNQVShYODZfNjQpCmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyQVJNLmggYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyQVJNLmgKaW5kZXggZjEx
MThkODM0NjFkYzAwYWMyNzlkOWEwNTUyNWEwZjk3NWM5MjJlNC4uODZhMmYyYzI0YTUwYWFmZTkz
NzQyZTY4YzUxMDJjODczMWFlMzExNiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlckFSTS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJBUk0uaApAQCAtNjMyLDIzICs2MzIsMjMgQEAgY2xh
c3MgTWFjcm9Bc3NlbWJsZXJBUk0gOiBwdWJsaWMgQWJzdHJhY3RNYWNyb0Fzc2VtYmxlcjxBUk1B
c3NlbWJsZXIsIE1hY3JvQXNzZW0KIAogICAgIEp1bXAgYnJhbmNoOChSZWxhdGlvbmFsQ29uZGl0
aW9uIGNvbmQsIEFkZHJlc3MgbGVmdCwgVHJ1c3RlZEltbTMyIHJpZ2h0KQogICAgIHsKLSAgICAg
ICAgVHJ1c3RlZEltbTMyIHJpZ2h0OChzdGF0aWNfY2FzdDxpbnQ4X3Q+KHJpZ2h0Lm1fdmFsdWUp
KTsKLSAgICAgICAgbG9hZDgobGVmdCwgQVJNUmVnaXN0ZXJzOjpTMSk7CisgICAgICAgIFRydXN0
ZWRJbW0zMiByaWdodDggPSBNYWNyb0Fzc2VtYmxlckhlbHBlcnM6Om1hc2s4T25Db25kaXRpb24o
KnRoaXMsIGNvbmQsIHJpZ2h0KTsKKyAgICAgICAgTWFjcm9Bc3NlbWJsZXJIZWxwZXJzOjpsb2Fk
OE9uQ29uZGl0aW9uKCp0aGlzLCBjb25kLCBsZWZ0LCBBUk1SZWdpc3RlcnM6OlMxKTsKICAgICAg
ICAgcmV0dXJuIGJyYW5jaDMyKGNvbmQsIEFSTVJlZ2lzdGVyczo6UzEsIHJpZ2h0OCk7CiAgICAg
fQogCiAgICAgSnVtcCBicmFuY2g4KFJlbGF0aW9uYWxDb25kaXRpb24gY29uZCwgQmFzZUluZGV4
IGxlZnQsIFRydXN0ZWRJbW0zMiByaWdodCkKICAgICB7Ci0gICAgICAgIFRydXN0ZWRJbW0zMiBy
aWdodDgoc3RhdGljX2Nhc3Q8aW50OF90PihyaWdodC5tX3ZhbHVlKSk7Ci0gICAgICAgIGxvYWQ4
KGxlZnQsIEFSTVJlZ2lzdGVyczo6UzEpOworICAgICAgICBUcnVzdGVkSW1tMzIgcmlnaHQ4ID0g
TWFjcm9Bc3NlbWJsZXJIZWxwZXJzOjptYXNrOE9uQ29uZGl0aW9uKCp0aGlzLCBjb25kLCByaWdo
dCk7CisgICAgICAgIE1hY3JvQXNzZW1ibGVySGVscGVyczo6bG9hZDhPbkNvbmRpdGlvbigqdGhp
cywgY29uZCwgbGVmdCwgQVJNUmVnaXN0ZXJzOjpTMSk7CiAgICAgICAgIHJldHVybiBicmFuY2gz
Mihjb25kLCBBUk1SZWdpc3RlcnM6OlMxLCByaWdodDgpOwogICAgIH0KIAogICAgIEp1bXAgYnJh
bmNoOChSZWxhdGlvbmFsQ29uZGl0aW9uIGNvbmQsIEFic29sdXRlQWRkcmVzcyBsZWZ0LCBUcnVz
dGVkSW1tMzIgcmlnaHQpCiAgICAgewotICAgICAgICBUcnVzdGVkSW1tMzIgcmlnaHQ4KHN0YXRp
Y19jYXN0PGludDhfdD4ocmlnaHQubV92YWx1ZSkpOworICAgICAgICBUcnVzdGVkSW1tMzIgcmln
aHQ4ID0gTWFjcm9Bc3NlbWJsZXJIZWxwZXJzOjptYXNrOE9uQ29uZGl0aW9uKCp0aGlzLCBjb25k
LCByaWdodCk7CiAgICAgICAgIG1vdmUoVHJ1c3RlZEltbVB0cihsZWZ0Lm1fcHRyKSwgQVJNUmVn
aXN0ZXJzOjpTMSk7Ci0gICAgICAgIGxvYWQ4KEFkZHJlc3MoQVJNUmVnaXN0ZXJzOjpTMSksIEFS
TVJlZ2lzdGVyczo6UzEpOworICAgICAgICBNYWNyb0Fzc2VtYmxlckhlbHBlcnM6OmxvYWQ4T25D
b25kaXRpb24oKnRoaXMsIGNvbmQsIEFkZHJlc3MoQVJNUmVnaXN0ZXJzOjpTMSksIEFSTVJlZ2lz
dGVyczo6UzEpOwogICAgICAgICByZXR1cm4gYnJhbmNoMzIoY29uZCwgQVJNUmVnaXN0ZXJzOjpT
MSwgcmlnaHQ4KTsKICAgICB9CiAKQEAgLTcwMiwyMyArNzAyLDIzIEBAIGNsYXNzIE1hY3JvQXNz
ZW1ibGVyQVJNIDogcHVibGljIEFic3RyYWN0TWFjcm9Bc3NlbWJsZXI8QVJNQXNzZW1ibGVyLCBN
YWNyb0Fzc2VtCiAKICAgICBKdW1wIGJyYW5jaFRlc3Q4KFJlc3VsdENvbmRpdGlvbiBjb25kLCBB
ZGRyZXNzIGFkZHJlc3MsIFRydXN0ZWRJbW0zMiBtYXNrID0gVHJ1c3RlZEltbTMyKC0xKSkKICAg
ICB7Ci0gICAgICAgIFRydXN0ZWRJbW0zMiBtYXNrOChzdGF0aWNfY2FzdDxpbnQ4X3Q+KG1hc2su
bV92YWx1ZSkpOwotICAgICAgICBsb2FkOChhZGRyZXNzLCBBUk1SZWdpc3RlcnM6OlMxKTsKKyAg
ICAgICAgVHJ1c3RlZEltbTMyIG1hc2s4ID0gTWFjcm9Bc3NlbWJsZXJIZWxwZXJzOjptYXNrOE9u
Q29uZGl0aW9uKCp0aGlzLCBjb25kLCBtYXNrKTsKKyAgICAgICAgTWFjcm9Bc3NlbWJsZXJIZWxw
ZXJzOjpsb2FkOE9uQ29uZGl0aW9uKCp0aGlzLCBjb25kLCBhZGRyZXNzLCBBUk1SZWdpc3RlcnM6
OlMxKTsKICAgICAgICAgcmV0dXJuIGJyYW5jaFRlc3QzMihjb25kLCBBUk1SZWdpc3RlcnM6OlMx
LCBtYXNrOCk7CiAgICAgfQogCiAgICAgSnVtcCBicmFuY2hUZXN0OChSZXN1bHRDb25kaXRpb24g
Y29uZCwgQmFzZUluZGV4IGFkZHJlc3MsIFRydXN0ZWRJbW0zMiBtYXNrID0gVHJ1c3RlZEltbTMy
KC0xKSkKICAgICB7Ci0gICAgICAgIFRydXN0ZWRJbW0zMiBtYXNrOChzdGF0aWNfY2FzdDxpbnQ4
X3Q+KG1hc2subV92YWx1ZSkpOwotICAgICAgICBsb2FkOChhZGRyZXNzLCBBUk1SZWdpc3RlcnM6
OlMxKTsKKyAgICAgICAgVHJ1c3RlZEltbTMyIG1hc2s4ID0gTWFjcm9Bc3NlbWJsZXJIZWxwZXJz
OjptYXNrOE9uQ29uZGl0aW9uKCp0aGlzLCBjb25kLCBtYXNrKTsKKyAgICAgICAgTWFjcm9Bc3Nl
bWJsZXJIZWxwZXJzOjpsb2FkOE9uQ29uZGl0aW9uKCp0aGlzLCBjb25kLCBhZGRyZXNzLCBBUk1S
ZWdpc3RlcnM6OlMxKTsKICAgICAgICAgcmV0dXJuIGJyYW5jaFRlc3QzMihjb25kLCBBUk1SZWdp
c3RlcnM6OlMxLCBtYXNrOCk7CiAgICAgfQogCiAgICAgSnVtcCBicmFuY2hUZXN0OChSZXN1bHRD
b25kaXRpb24gY29uZCwgQWJzb2x1dGVBZGRyZXNzIGFkZHJlc3MsIFRydXN0ZWRJbW0zMiBtYXNr
ID0gVHJ1c3RlZEltbTMyKC0xKSkKICAgICB7Ci0gICAgICAgIFRydXN0ZWRJbW0zMiBtYXNrOChz
dGF0aWNfY2FzdDxpbnQ4X3Q+KG1hc2subV92YWx1ZSkpOworICAgICAgICBUcnVzdGVkSW1tMzIg
bWFzazggPSBNYWNyb0Fzc2VtYmxlckhlbHBlcnM6Om1hc2s4T25Db25kaXRpb24oKnRoaXMsIGNv
bmQsIG1hc2spOwogICAgICAgICBtb3ZlKFRydXN0ZWRJbW1QdHIoYWRkcmVzcy5tX3B0ciksIEFS
TVJlZ2lzdGVyczo6UzEpOwotICAgICAgICBsb2FkOChBZGRyZXNzKEFSTVJlZ2lzdGVyczo6UzEp
LCBBUk1SZWdpc3RlcnM6OlMxKTsKKyAgICAgICAgTWFjcm9Bc3NlbWJsZXJIZWxwZXJzOjpsb2Fk
OE9uQ29uZGl0aW9uKCp0aGlzLCBjb25kLCBBZGRyZXNzKEFSTVJlZ2lzdGVyczo6UzEpLCBBUk1S
ZWdpc3RlcnM6OlMxKTsKICAgICAgICAgcmV0dXJuIGJyYW5jaFRlc3QzMihjb25kLCBBUk1SZWdp
c3RlcnM6OlMxLCBtYXNrOCk7CiAgICAgfQogCkBAIC05ODUsOCArOTg1LDggQEAgY2xhc3MgTWFj
cm9Bc3NlbWJsZXJBUk0gOiBwdWJsaWMgQWJzdHJhY3RNYWNyb0Fzc2VtYmxlcjxBUk1Bc3NlbWJs
ZXIsIE1hY3JvQXNzZW0KIAogICAgIHZvaWQgY29tcGFyZTgoUmVsYXRpb25hbENvbmRpdGlvbiBj
b25kLCBBZGRyZXNzIGxlZnQsIFRydXN0ZWRJbW0zMiByaWdodCwgUmVnaXN0ZXJJRCBkZXN0KQog
ICAgIHsKLSAgICAgICAgVHJ1c3RlZEltbTMyIHJpZ2h0OChzdGF0aWNfY2FzdDxpbnQ4X3Q+KHJp
Z2h0Lm1fdmFsdWUpKTsKLSAgICAgICAgbG9hZDgobGVmdCwgQVJNUmVnaXN0ZXJzOjpTMSk7Cisg
ICAgICAgIFRydXN0ZWRJbW0zMiByaWdodDggPSBNYWNyb0Fzc2VtYmxlckhlbHBlcnM6Om1hc2s4
T25Db25kaXRpb24oKnRoaXMsIGNvbmQsIHJpZ2h0KTsKKyAgICAgICAgTWFjcm9Bc3NlbWJsZXJI
ZWxwZXJzOjpsb2FkOE9uQ29uZGl0aW9uKCp0aGlzLCBjb25kLCBsZWZ0LCBBUk1SZWdpc3RlcnM6
OlMxKTsKICAgICAgICAgY29tcGFyZTMyKGNvbmQsIEFSTVJlZ2lzdGVyczo6UzEsIHJpZ2h0OCwg
ZGVzdCk7CiAgICAgfQogCkBAIC0xMDA4LDggKzEwMDgsOCBAQCBjbGFzcyBNYWNyb0Fzc2VtYmxl
ckFSTSA6IHB1YmxpYyBBYnN0cmFjdE1hY3JvQXNzZW1ibGVyPEFSTUFzc2VtYmxlciwgTWFjcm9B
c3NlbQogCiAgICAgdm9pZCB0ZXN0OChSZXN1bHRDb25kaXRpb24gY29uZCwgQWRkcmVzcyBhZGRy
ZXNzLCBUcnVzdGVkSW1tMzIgbWFzaywgUmVnaXN0ZXJJRCBkZXN0KQogICAgIHsKLSAgICAgICAg
VHJ1c3RlZEltbTMyIG1hc2s4KHN0YXRpY19jYXN0PGludDhfdD4obWFzay5tX3ZhbHVlKSk7Ci0g
ICAgICAgIGxvYWQ4KGFkZHJlc3MsIEFSTVJlZ2lzdGVyczo6UzEpOworICAgICAgICBUcnVzdGVk
SW1tMzIgbWFzazggPSBNYWNyb0Fzc2VtYmxlckhlbHBlcnM6Om1hc2s4T25Db25kaXRpb24oKnRo
aXMsIGNvbmQsIG1hc2spOworICAgICAgICBNYWNyb0Fzc2VtYmxlckhlbHBlcnM6OmxvYWQ4T25D
b25kaXRpb24oKnRoaXMsIGNvbmQsIGFkZHJlc3MsIEFSTVJlZ2lzdGVyczo6UzEpOwogICAgICAg
ICB0ZXN0MzIoY29uZCwgQVJNUmVnaXN0ZXJzOjpTMSwgbWFzazgsIGRlc3QpOwogICAgIH0KIApk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxl
ckFSTTY0LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVy
QVJNNjQuaAppbmRleCA1ZmRjNzI5ZWVlNjNlYzA0YzA2MTljNjdmNTFjYmQyMmEzZTY5ZmI2Li45
NzkwNjFhMTI5NGJiYmNmZTAxMDBhYmJmNzNhN2ZkNzVlNTZmYjM0IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyQVJNNjQuaAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyQVJNNjQuaApAQCAt
MTIwMCw2ICsxMjAwLDE0IEBAIGNsYXNzIE1hY3JvQXNzZW1ibGVyQVJNNjQgOiBwdWJsaWMgQWJz
dHJhY3RNYWNyb0Fzc2VtYmxlcjxBUk02NEFzc2VtYmxlciwgTWFjcm9BCiAgICAgICAgIG1fYXNz
ZW1ibGVyLmxkcnNiPDMyPihkZXN0LCBhZGRyZXNzLmJhc2UsIG1lbW9yeVRlbXBSZWdpc3Rlcik7
CiAgICAgfQogCisgICAgdm9pZCBsb2FkOFNpZ25lZEV4dGVuZFRvMzIoY29uc3Qgdm9pZCogYWRk
cmVzcywgUmVnaXN0ZXJJRCBkZXN0KQorICAgIHsKKyAgICAgICAgbW92ZVRvQ2FjaGVkUmVnKFRy
dXN0ZWRJbW1QdHIoYWRkcmVzcyksIGNhY2hlZE1lbW9yeVRlbXBSZWdpc3RlcigpKTsKKyAgICAg
ICAgbV9hc3NlbWJsZXIubGRyc2I8MzI+KGRlc3QsIG1lbW9yeVRlbXBSZWdpc3RlciwgQVJNNjRS
ZWdpc3RlcnM6OnpyKTsKKyAgICAgICAgaWYgKGRlc3QgPT0gbWVtb3J5VGVtcFJlZ2lzdGVyKQor
ICAgICAgICAgICAgY2FjaGVkTWVtb3J5VGVtcFJlZ2lzdGVyKCkuaW52YWxpZGF0ZSgpOworICAg
IH0KKwogICAgIHZvaWQgemVyb0V4dGVuZDhUbzMyKFJlZ2lzdGVySUQgc3JjLCBSZWdpc3RlcklE
IGRlc3QpCiAgICAgewogICAgICAgICBtX2Fzc2VtYmxlci51eHRiPDMyPihkZXN0LCBzcmMpOwpA
QCAtMjQyNCwyMiArMjQzMiwyMiBAQCBjbGFzcyBNYWNyb0Fzc2VtYmxlckFSTTY0IDogcHVibGlj
IEFic3RyYWN0TWFjcm9Bc3NlbWJsZXI8QVJNNjRBc3NlbWJsZXIsIE1hY3JvQQogCiAgICAgSnVt
cCBicmFuY2g4KFJlbGF0aW9uYWxDb25kaXRpb24gY29uZCwgQWRkcmVzcyBsZWZ0LCBUcnVzdGVk
SW1tMzIgcmlnaHQpCiAgICAgewotICAgICAgICBUcnVzdGVkSW1tMzIgcmlnaHQ4KHN0YXRpY19j
YXN0PGludDhfdD4ocmlnaHQubV92YWx1ZSkpOwotICAgICAgICBsb2FkOChsZWZ0LCBnZXRDYWNo
ZWRNZW1vcnlUZW1wUmVnaXN0ZXJJREFuZEludmFsaWRhdGUoKSk7CisgICAgICAgIFRydXN0ZWRJ
bW0zMiByaWdodDggPSBNYWNyb0Fzc2VtYmxlckhlbHBlcnM6Om1hc2s4T25Db25kaXRpb24oKnRo
aXMsIGNvbmQsIHJpZ2h0KTsKKyAgICAgICAgTWFjcm9Bc3NlbWJsZXJIZWxwZXJzOjpsb2FkOE9u
Q29uZGl0aW9uKCp0aGlzLCBjb25kLCBsZWZ0LCBnZXRDYWNoZWRNZW1vcnlUZW1wUmVnaXN0ZXJJ
REFuZEludmFsaWRhdGUoKSk7CiAgICAgICAgIHJldHVybiBicmFuY2gzMihjb25kLCBtZW1vcnlU
ZW1wUmVnaXN0ZXIsIHJpZ2h0OCk7CiAgICAgfQogCiAgICAgSnVtcCBicmFuY2g4KFJlbGF0aW9u
YWxDb25kaXRpb24gY29uZCwgQmFzZUluZGV4IGxlZnQsIFRydXN0ZWRJbW0zMiByaWdodCkKICAg
ICB7Ci0gICAgICAgIFRydXN0ZWRJbW0zMiByaWdodDgoc3RhdGljX2Nhc3Q8aW50OF90PihyaWdo
dC5tX3ZhbHVlKSk7Ci0gICAgICAgIGxvYWQ4KGxlZnQsIGdldENhY2hlZE1lbW9yeVRlbXBSZWdp
c3RlcklEQW5kSW52YWxpZGF0ZSgpKTsKKyAgICAgICAgVHJ1c3RlZEltbTMyIHJpZ2h0OCA9IE1h
Y3JvQXNzZW1ibGVySGVscGVyczo6bWFzazhPbkNvbmRpdGlvbigqdGhpcywgY29uZCwgcmlnaHQp
OworICAgICAgICBNYWNyb0Fzc2VtYmxlckhlbHBlcnM6OmxvYWQ4T25Db25kaXRpb24oKnRoaXMs
IGNvbmQsIGxlZnQsIGdldENhY2hlZE1lbW9yeVRlbXBSZWdpc3RlcklEQW5kSW52YWxpZGF0ZSgp
KTsKICAgICAgICAgcmV0dXJuIGJyYW5jaDMyKGNvbmQsIG1lbW9yeVRlbXBSZWdpc3Rlciwgcmln
aHQ4KTsKICAgICB9CiAgICAgCiAgICAgSnVtcCBicmFuY2g4KFJlbGF0aW9uYWxDb25kaXRpb24g
Y29uZCwgQWJzb2x1dGVBZGRyZXNzIGxlZnQsIFRydXN0ZWRJbW0zMiByaWdodCkKICAgICB7Ci0g
ICAgICAgIFRydXN0ZWRJbW0zMiByaWdodDgoc3RhdGljX2Nhc3Q8aW50OF90PihyaWdodC5tX3Zh
bHVlKSk7Ci0gICAgICAgIGxvYWQ4KGxlZnQubV9wdHIsIGdldENhY2hlZE1lbW9yeVRlbXBSZWdp
c3RlcklEQW5kSW52YWxpZGF0ZSgpKTsKKyAgICAgICAgVHJ1c3RlZEltbTMyIHJpZ2h0OCA9IE1h
Y3JvQXNzZW1ibGVySGVscGVyczo6bWFzazhPbkNvbmRpdGlvbigqdGhpcywgY29uZCwgcmlnaHQp
OworICAgICAgICBNYWNyb0Fzc2VtYmxlckhlbHBlcnM6OmxvYWQ4T25Db25kaXRpb24oKnRoaXMs
IGNvbmQsIGxlZnQubV9wdHIsIGdldENhY2hlZE1lbW9yeVRlbXBSZWdpc3RlcklEQW5kSW52YWxp
ZGF0ZSgpKTsKICAgICAgICAgcmV0dXJuIGJyYW5jaDMyKGNvbmQsIG1lbW9yeVRlbXBSZWdpc3Rl
ciwgcmlnaHQ4KTsKICAgICB9CiAgICAgCkBAIC0yNTgzLDMwICsyNTkxLDM1IEBAIGNsYXNzIE1h
Y3JvQXNzZW1ibGVyQVJNNjQgOiBwdWJsaWMgQWJzdHJhY3RNYWNyb0Fzc2VtYmxlcjxBUk02NEFz
c2VtYmxlciwgTWFjcm9BCiAKICAgICBKdW1wIGJyYW5jaFRlc3Q4KFJlc3VsdENvbmRpdGlvbiBj
b25kLCBBZGRyZXNzIGFkZHJlc3MsIFRydXN0ZWRJbW0zMiBtYXNrID0gVHJ1c3RlZEltbTMyKC0x
KSkKICAgICB7Ci0gICAgICAgIFRydXN0ZWRJbW0zMiBtYXNrOChzdGF0aWNfY2FzdDxpbnQ4X3Q+
KG1hc2subV92YWx1ZSkpOwotICAgICAgICBsb2FkOChhZGRyZXNzLCBnZXRDYWNoZWREYXRhVGVt
cFJlZ2lzdGVySURBbmRJbnZhbGlkYXRlKCkpOworICAgICAgICBUcnVzdGVkSW1tMzIgbWFzazgg
PSBNYWNyb0Fzc2VtYmxlckhlbHBlcnM6Om1hc2s4T25Db25kaXRpb24oKnRoaXMsIGNvbmQsIG1h
c2spOworICAgICAgICBNYWNyb0Fzc2VtYmxlckhlbHBlcnM6OmxvYWQ4T25Db25kaXRpb24oKnRo
aXMsIGNvbmQsIGFkZHJlc3MsIGdldENhY2hlZERhdGFUZW1wUmVnaXN0ZXJJREFuZEludmFsaWRh
dGUoKSk7CiAgICAgICAgIHJldHVybiBicmFuY2hUZXN0MzIoY29uZCwgZGF0YVRlbXBSZWdpc3Rl
ciwgbWFzazgpOwogICAgIH0KIAogICAgIEp1bXAgYnJhbmNoVGVzdDgoUmVzdWx0Q29uZGl0aW9u
IGNvbmQsIEFic29sdXRlQWRkcmVzcyBhZGRyZXNzLCBUcnVzdGVkSW1tMzIgbWFzayA9IFRydXN0
ZWRJbW0zMigtMSkpCiAgICAgewotICAgICAgICBUcnVzdGVkSW1tMzIgbWFzazgoc3RhdGljX2Nh
c3Q8aW50OF90PihtYXNrLm1fdmFsdWUpKTsKLSAgICAgICAgbG9hZDgoYWRkcmVzcy5tX3B0ciwg
Z2V0Q2FjaGVkRGF0YVRlbXBSZWdpc3RlcklEQW5kSW52YWxpZGF0ZSgpKTsKKyAgICAgICAgVHJ1
c3RlZEltbTMyIG1hc2s4ID0gTWFjcm9Bc3NlbWJsZXJIZWxwZXJzOjptYXNrOE9uQ29uZGl0aW9u
KCp0aGlzLCBjb25kLCBtYXNrKTsKKyAgICAgICAgTWFjcm9Bc3NlbWJsZXJIZWxwZXJzOjpsb2Fk
OE9uQ29uZGl0aW9uKCp0aGlzLCBjb25kLCBhZGRyZXNzLm1fcHRyLCBnZXRDYWNoZWREYXRhVGVt
cFJlZ2lzdGVySURBbmRJbnZhbGlkYXRlKCkpOwogICAgICAgICByZXR1cm4gYnJhbmNoVGVzdDMy
KGNvbmQsIGRhdGFUZW1wUmVnaXN0ZXIsIG1hc2s4KTsKICAgICB9CiAKICAgICBKdW1wIGJyYW5j
aFRlc3Q4KFJlc3VsdENvbmRpdGlvbiBjb25kLCBFeHRlbmRlZEFkZHJlc3MgYWRkcmVzcywgVHJ1
c3RlZEltbTMyIG1hc2sgPSBUcnVzdGVkSW1tMzIoLTEpKQogICAgIHsKLSAgICAgICAgVHJ1c3Rl
ZEltbTMyIG1hc2s4KHN0YXRpY19jYXN0PGludDhfdD4obWFzay5tX3ZhbHVlKSk7CisgICAgICAg
IFRydXN0ZWRJbW0zMiBtYXNrOCA9IE1hY3JvQXNzZW1ibGVySGVscGVyczo6bWFzazhPbkNvbmRp
dGlvbigqdGhpcywgY29uZCwgbWFzayk7CiAgICAgICAgIG1vdmUoVHJ1c3RlZEltbVB0cihyZWlu
dGVycHJldF9jYXN0PHZvaWQqPihhZGRyZXNzLm9mZnNldCkpLCBnZXRDYWNoZWREYXRhVGVtcFJl
Z2lzdGVySURBbmRJbnZhbGlkYXRlKCkpOwotICAgICAgICBtX2Fzc2VtYmxlci5sZHJiKGRhdGFU
ZW1wUmVnaXN0ZXIsIGFkZHJlc3MuYmFzZSwgZGF0YVRlbXBSZWdpc3Rlcik7CisKKyAgICAgICAg
aWYgKE1hY3JvQXNzZW1ibGVySGVscGVyczo6aXNVbnNpZ25lZDxNYWNyb0Fzc2VtYmxlckFSTTY0
Pihjb25kKSkKKyAgICAgICAgICAgIG1fYXNzZW1ibGVyLmxkcmIoZGF0YVRlbXBSZWdpc3Rlciwg
YWRkcmVzcy5iYXNlLCBkYXRhVGVtcFJlZ2lzdGVyKTsKKyAgICAgICAgZWxzZQorICAgICAgICAg
ICAgbV9hc3NlbWJsZXIubGRyc2I8MzI+KGRhdGFUZW1wUmVnaXN0ZXIsIGFkZHJlc3MuYmFzZSwg
ZGF0YVRlbXBSZWdpc3Rlcik7CisKICAgICAgICAgcmV0dXJuIGJyYW5jaFRlc3QzMihjb25kLCBk
YXRhVGVtcFJlZ2lzdGVyLCBtYXNrOCk7CiAgICAgfQogCiAgICAgSnVtcCBicmFuY2hUZXN0OChS
ZXN1bHRDb25kaXRpb24gY29uZCwgQmFzZUluZGV4IGFkZHJlc3MsIFRydXN0ZWRJbW0zMiBtYXNr
ID0gVHJ1c3RlZEltbTMyKC0xKSkKICAgICB7Ci0gICAgICAgIFRydXN0ZWRJbW0zMiBtYXNrOChz
dGF0aWNfY2FzdDxpbnQ4X3Q+KG1hc2subV92YWx1ZSkpOwotICAgICAgICBsb2FkOChhZGRyZXNz
LCBnZXRDYWNoZWREYXRhVGVtcFJlZ2lzdGVySURBbmRJbnZhbGlkYXRlKCkpOworICAgICAgICBU
cnVzdGVkSW1tMzIgbWFzazggPSBNYWNyb0Fzc2VtYmxlckhlbHBlcnM6Om1hc2s4T25Db25kaXRp
b24oKnRoaXMsIGNvbmQsIG1hc2spOworICAgICAgICBNYWNyb0Fzc2VtYmxlckhlbHBlcnM6Omxv
YWQ4T25Db25kaXRpb24oKnRoaXMsIGNvbmQsIGFkZHJlc3MsIGdldENhY2hlZERhdGFUZW1wUmVn
aXN0ZXJJREFuZEludmFsaWRhdGUoKSk7CiAgICAgICAgIHJldHVybiBicmFuY2hUZXN0MzIoY29u
ZCwgZGF0YVRlbXBSZWdpc3RlciwgbWFzazgpOwogICAgIH0KIApAQCAtMzAyMyw4ICszMDM2LDgg
QEAgY2xhc3MgTWFjcm9Bc3NlbWJsZXJBUk02NCA6IHB1YmxpYyBBYnN0cmFjdE1hY3JvQXNzZW1i
bGVyPEFSTTY0QXNzZW1ibGVyLCBNYWNyb0EKIAogICAgIHZvaWQgY29tcGFyZTgoUmVsYXRpb25h
bENvbmRpdGlvbiBjb25kLCBBZGRyZXNzIGxlZnQsIFRydXN0ZWRJbW0zMiByaWdodCwgUmVnaXN0
ZXJJRCBkZXN0KQogICAgIHsKLSAgICAgICAgVHJ1c3RlZEltbTMyIHJpZ2h0OChzdGF0aWNfY2Fz
dDxpbnQ4X3Q+KHJpZ2h0Lm1fdmFsdWUpKTsKLSAgICAgICAgbG9hZDgobGVmdCwgZ2V0Q2FjaGVk
TWVtb3J5VGVtcFJlZ2lzdGVySURBbmRJbnZhbGlkYXRlKCkpOworICAgICAgICBUcnVzdGVkSW1t
MzIgcmlnaHQ4ID0gTWFjcm9Bc3NlbWJsZXJIZWxwZXJzOjptYXNrOE9uQ29uZGl0aW9uKCp0aGlz
LCBjb25kLCByaWdodCk7CisgICAgICAgIE1hY3JvQXNzZW1ibGVySGVscGVyczo6bG9hZDhPbkNv
bmRpdGlvbigqdGhpcywgY29uZCwgbGVmdCwgZ2V0Q2FjaGVkTWVtb3J5VGVtcFJlZ2lzdGVySURB
bmRJbnZhbGlkYXRlKCkpOwogICAgICAgICBtb3ZlKHJpZ2h0OCwgZ2V0Q2FjaGVkRGF0YVRlbXBS
ZWdpc3RlcklEQW5kSW52YWxpZGF0ZSgpKTsKICAgICAgICAgY29tcGFyZTMyKGNvbmQsIG1lbW9y
eVRlbXBSZWdpc3RlciwgZGF0YVRlbXBSZWdpc3RlciwgZGVzdCk7CiAgICAgfQpAQCAtMzA0OSw4
ICszMDYyLDggQEAgY2xhc3MgTWFjcm9Bc3NlbWJsZXJBUk02NCA6IHB1YmxpYyBBYnN0cmFjdE1h
Y3JvQXNzZW1ibGVyPEFSTTY0QXNzZW1ibGVyLCBNYWNyb0EKIAogICAgIHZvaWQgdGVzdDgoUmVz
dWx0Q29uZGl0aW9uIGNvbmQsIEFkZHJlc3MgYWRkcmVzcywgVHJ1c3RlZEltbTMyIG1hc2ssIFJl
Z2lzdGVySUQgZGVzdCkKICAgICB7Ci0gICAgICAgIFRydXN0ZWRJbW0zMiBtYXNrOChzdGF0aWNf
Y2FzdDxpbnQ4X3Q+KG1hc2subV92YWx1ZSkpOwotICAgICAgICBsb2FkOChhZGRyZXNzLCBnZXRD
YWNoZWRNZW1vcnlUZW1wUmVnaXN0ZXJJREFuZEludmFsaWRhdGUoKSk7CisgICAgICAgIFRydXN0
ZWRJbW0zMiBtYXNrOCA9IE1hY3JvQXNzZW1ibGVySGVscGVyczo6bWFzazhPbkNvbmRpdGlvbigq
dGhpcywgY29uZCwgbWFzayk7CisgICAgICAgIE1hY3JvQXNzZW1ibGVySGVscGVyczo6bG9hZDhP
bkNvbmRpdGlvbigqdGhpcywgY29uZCwgYWRkcmVzcywgZ2V0Q2FjaGVkTWVtb3J5VGVtcFJlZ2lz
dGVySURBbmRJbnZhbGlkYXRlKCkpOwogICAgICAgICB0ZXN0MzIoY29uZCwgbWVtb3J5VGVtcFJl
Z2lzdGVyLCBtYXNrOCwgZGVzdCk7CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyQVJNdjcuaCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJBUk12Ny5oCmluZGV4IGY2NjM3ZDgyZTk0
NWU4ZTI3OGQ0NTIxNjAxNTQ0YzY1ZDZhMjg0ODUuLmFiYWQ2NmFhMmY1MGZiOWE5NDA1NDkxZGFh
ZGE5MDEwYzI2YmUwMWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJs
ZXIvTWFjcm9Bc3NlbWJsZXJBUk12Ny5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3Nl
bWJsZXIvTWFjcm9Bc3NlbWJsZXJBUk12Ny5oCkBAIC0xNDkwLDcgKzE0OTAsNyBAQCBjbGFzcyBN
YWNyb0Fzc2VtYmxlckFSTXY3IDogcHVibGljIEFic3RyYWN0TWFjcm9Bc3NlbWJsZXI8QVJNdjdB
c3NlbWJsZXIsIE1hY3JvQQogCiAgICAgSnVtcCBicmFuY2g4KFJlbGF0aW9uYWxDb25kaXRpb24g
Y29uZCwgUmVnaXN0ZXJJRCBsZWZ0LCBUcnVzdGVkSW1tMzIgcmlnaHQpCiAgICAgewotICAgICAg
ICBUcnVzdGVkSW1tMzIgcmlnaHQ4KHN0YXRpY19jYXN0PGludDhfdD4ocmlnaHQubV92YWx1ZSkp
OworICAgICAgICBUcnVzdGVkSW1tMzIgcmlnaHQ4ID0gTWFjcm9Bc3NlbWJsZXJIZWxwZXJzOjpt
YXNrOE9uQ29uZGl0aW9uKCp0aGlzLCBjb25kLCByaWdodCk7CiAgICAgICAgIGNvbXBhcmUzMkFu
ZFNldEZsYWdzKGxlZnQsIHJpZ2h0OCk7CiAgICAgICAgIHJldHVybiBKdW1wKG1ha2VCcmFuY2go
Y29uZCkpOwogICAgIH0KQEAgLTE0OTgsMjUgKzE0OTgsMjUgQEAgY2xhc3MgTWFjcm9Bc3NlbWJs
ZXJBUk12NyA6IHB1YmxpYyBBYnN0cmFjdE1hY3JvQXNzZW1ibGVyPEFSTXY3QXNzZW1ibGVyLCBN
YWNyb0EKICAgICBKdW1wIGJyYW5jaDgoUmVsYXRpb25hbENvbmRpdGlvbiBjb25kLCBBZGRyZXNz
IGxlZnQsIFRydXN0ZWRJbW0zMiByaWdodCkKICAgICB7CiAgICAgICAgIC8vIHVzZSBhZGRyZXNz
VGVtcFJlZ2lzdGVyIGluY2FzZSB0aGUgYnJhbmNoOCB3ZSBjYWxsIHVzZXMgZGF0YVRlbXBSZWdp
c3Rlci4gOi0vCi0gICAgICAgIFRydXN0ZWRJbW0zMiByaWdodDgoc3RhdGljX2Nhc3Q8aW50OF90
PihyaWdodC5tX3ZhbHVlKSk7Ci0gICAgICAgIGxvYWQ4KGxlZnQsIGFkZHJlc3NUZW1wUmVnaXN0
ZXIpOworICAgICAgICBUcnVzdGVkSW1tMzIgcmlnaHQ4ID0gTWFjcm9Bc3NlbWJsZXJIZWxwZXJz
OjptYXNrOE9uQ29uZGl0aW9uKCp0aGlzLCBjb25kLCByaWdodCk7CisgICAgICAgIE1hY3JvQXNz
ZW1ibGVySGVscGVyczo6bG9hZDhPbkNvbmRpdGlvbigqdGhpcywgY29uZCwgbGVmdCwgYWRkcmVz
c1RlbXBSZWdpc3Rlcik7CiAgICAgICAgIHJldHVybiBicmFuY2g4KGNvbmQsIGFkZHJlc3NUZW1w
UmVnaXN0ZXIsIHJpZ2h0OCk7CiAgICAgfQogCiAgICAgSnVtcCBicmFuY2g4KFJlbGF0aW9uYWxD
b25kaXRpb24gY29uZCwgQmFzZUluZGV4IGxlZnQsIFRydXN0ZWRJbW0zMiByaWdodCkKICAgICB7
CiAgICAgICAgIC8vIHVzZSBhZGRyZXNzVGVtcFJlZ2lzdGVyIGluY2FzZSB0aGUgYnJhbmNoMzIg
d2UgY2FsbCB1c2VzIGRhdGFUZW1wUmVnaXN0ZXIuIDotLwotICAgICAgICBUcnVzdGVkSW1tMzIg
cmlnaHQ4KHN0YXRpY19jYXN0PGludDhfdD4ocmlnaHQubV92YWx1ZSkpOwotICAgICAgICBsb2Fk
OChsZWZ0LCBhZGRyZXNzVGVtcFJlZ2lzdGVyKTsKKyAgICAgICAgVHJ1c3RlZEltbTMyIHJpZ2h0
OCA9IE1hY3JvQXNzZW1ibGVySGVscGVyczo6bWFzazhPbkNvbmRpdGlvbigqdGhpcywgY29uZCwg
cmlnaHQpOworICAgICAgICBNYWNyb0Fzc2VtYmxlckhlbHBlcnM6OmxvYWQ4T25Db25kaXRpb24o
KnRoaXMsIGNvbmQsIGxlZnQsIGFkZHJlc3NUZW1wUmVnaXN0ZXIpOwogICAgICAgICByZXR1cm4g
YnJhbmNoMzIoY29uZCwgYWRkcmVzc1RlbXBSZWdpc3RlciwgcmlnaHQ4KTsKICAgICB9CiAgICAg
CiAgICAgSnVtcCBicmFuY2g4KFJlbGF0aW9uYWxDb25kaXRpb24gY29uZCwgQWJzb2x1dGVBZGRy
ZXNzIGFkZHJlc3MsIFRydXN0ZWRJbW0zMiByaWdodCkKICAgICB7CiAgICAgICAgIC8vIFVzZSBh
ZGRyZXNzVGVtcFJlZ2lzdGVyIGluc3RlYWQgb2YgZGF0YVRlbXBSZWdpc3Rlciwgc2luY2UgYnJh
bmNoMzIgdXNlcyBkYXRhVGVtcFJlZ2lzdGVyLgotICAgICAgICBUcnVzdGVkSW1tMzIgcmlnaHQ4
KHN0YXRpY19jYXN0PGludDhfdD4ocmlnaHQubV92YWx1ZSkpOworICAgICAgICBUcnVzdGVkSW1t
MzIgcmlnaHQ4ID0gTWFjcm9Bc3NlbWJsZXJIZWxwZXJzOjptYXNrOE9uQ29uZGl0aW9uKCp0aGlz
LCBjb25kLCByaWdodCk7CiAgICAgICAgIG1vdmUoVHJ1c3RlZEltbVB0cihhZGRyZXNzLm1fcHRy
KSwgYWRkcmVzc1RlbXBSZWdpc3Rlcik7Ci0gICAgICAgIGxvYWQ4KEFkZHJlc3MoYWRkcmVzc1Rl
bXBSZWdpc3RlciksIGFkZHJlc3NUZW1wUmVnaXN0ZXIpOworICAgICAgICBNYWNyb0Fzc2VtYmxl
ckhlbHBlcnM6OmxvYWQ4T25Db25kaXRpb24oKnRoaXMsIGNvbmQsIEFkZHJlc3MoYWRkcmVzc1Rl
bXBSZWdpc3RlciksIGFkZHJlc3NUZW1wUmVnaXN0ZXIpOwogICAgICAgICByZXR1cm4gYnJhbmNo
MzIoY29uZCwgYWRkcmVzc1RlbXBSZWdpc3RlciwgcmlnaHQ4KTsKICAgICB9CiAgICAgCkBAIC0x
NTUxLDI1ICsxNTUxLDI1IEBAIGNsYXNzIE1hY3JvQXNzZW1ibGVyQVJNdjcgOiBwdWJsaWMgQWJz
dHJhY3RNYWNyb0Fzc2VtYmxlcjxBUk12N0Fzc2VtYmxlciwgTWFjcm9BCiAgICAgSnVtcCBicmFu
Y2hUZXN0OChSZXN1bHRDb25kaXRpb24gY29uZCwgQmFzZUluZGV4IGFkZHJlc3MsIFRydXN0ZWRJ
bW0zMiBtYXNrID0gVHJ1c3RlZEltbTMyKC0xKSkKICAgICB7CiAgICAgICAgIC8vIHVzZSBhZGRy
ZXNzVGVtcFJlZ2lzdGVyIGluY2FzZSB0aGUgYnJhbmNoVGVzdDggd2UgY2FsbCB1c2VzIGRhdGFU
ZW1wUmVnaXN0ZXIuIDotLwotICAgICAgICBUcnVzdGVkSW1tMzIgbWFzazgoc3RhdGljX2Nhc3Q8
aW50OF90PihtYXNrLm1fdmFsdWUpKTsKLSAgICAgICAgbG9hZDgoYWRkcmVzcywgYWRkcmVzc1Rl
bXBSZWdpc3Rlcik7CisgICAgICAgIFRydXN0ZWRJbW0zMiBtYXNrOCA9IE1hY3JvQXNzZW1ibGVy
SGVscGVyczo6bWFzazhPbkNvbmRpdGlvbigqdGhpcywgY29uZCwgbWFzayk7CisgICAgICAgIE1h
Y3JvQXNzZW1ibGVySGVscGVyczo6bG9hZDhPbkNvbmRpdGlvbigqdGhpcywgY29uZCwgYWRkcmVz
cywgYWRkcmVzc1RlbXBSZWdpc3Rlcik7CiAgICAgICAgIHJldHVybiBicmFuY2hUZXN0MzIoY29u
ZCwgYWRkcmVzc1RlbXBSZWdpc3RlciwgbWFzazgpOwogICAgIH0KIAogICAgIEp1bXAgYnJhbmNo
VGVzdDgoUmVzdWx0Q29uZGl0aW9uIGNvbmQsIEFkZHJlc3MgYWRkcmVzcywgVHJ1c3RlZEltbTMy
IG1hc2sgPSBUcnVzdGVkSW1tMzIoLTEpKQogICAgIHsKICAgICAgICAgLy8gdXNlIGFkZHJlc3NU
ZW1wUmVnaXN0ZXIgaW5jYXNlIHRoZSBicmFuY2hUZXN0OCB3ZSBjYWxsIHVzZXMgZGF0YVRlbXBS
ZWdpc3Rlci4gOi0vCi0gICAgICAgIFRydXN0ZWRJbW0zMiBtYXNrOChzdGF0aWNfY2FzdDxpbnQ4
X3Q+KG1hc2subV92YWx1ZSkpOwotICAgICAgICBsb2FkOChhZGRyZXNzLCBhZGRyZXNzVGVtcFJl
Z2lzdGVyKTsKKyAgICAgICAgVHJ1c3RlZEltbTMyIG1hc2s4ID0gTWFjcm9Bc3NlbWJsZXJIZWxw
ZXJzOjptYXNrOE9uQ29uZGl0aW9uKCp0aGlzLCBjb25kLCBtYXNrKTsKKyAgICAgICAgTWFjcm9B
c3NlbWJsZXJIZWxwZXJzOjpsb2FkOE9uQ29uZGl0aW9uKCp0aGlzLCBjb25kLCBhZGRyZXNzLCBh
ZGRyZXNzVGVtcFJlZ2lzdGVyKTsKICAgICAgICAgcmV0dXJuIGJyYW5jaFRlc3QzMihjb25kLCBh
ZGRyZXNzVGVtcFJlZ2lzdGVyLCBtYXNrOCk7CiAgICAgfQogCiAgICAgSnVtcCBicmFuY2hUZXN0
OChSZXN1bHRDb25kaXRpb24gY29uZCwgQWJzb2x1dGVBZGRyZXNzIGFkZHJlc3MsIFRydXN0ZWRJ
bW0zMiBtYXNrID0gVHJ1c3RlZEltbTMyKC0xKSkKICAgICB7CiAgICAgICAgIC8vIHVzZSBhZGRy
ZXNzVGVtcFJlZ2lzdGVyIGluY2FzZSB0aGUgYnJhbmNoVGVzdDggd2UgY2FsbCB1c2VzIGRhdGFU
ZW1wUmVnaXN0ZXIuIDotLwotICAgICAgICBUcnVzdGVkSW1tMzIgbWFzazgoc3RhdGljX2Nhc3Q8
aW50OF90PihtYXNrLm1fdmFsdWUpKTsKKyAgICAgICAgVHJ1c3RlZEltbTMyIG1hc2s4ID0gTWFj
cm9Bc3NlbWJsZXJIZWxwZXJzOjptYXNrOE9uQ29uZGl0aW9uKCp0aGlzLCBjb25kLCBtYXNrKTsK
ICAgICAgICAgbW92ZShUcnVzdGVkSW1tUHRyKGFkZHJlc3MubV9wdHIpLCBhZGRyZXNzVGVtcFJl
Z2lzdGVyKTsKLSAgICAgICAgbG9hZDgoQWRkcmVzcyhhZGRyZXNzVGVtcFJlZ2lzdGVyKSwgYWRk
cmVzc1RlbXBSZWdpc3Rlcik7CisgICAgICAgIE1hY3JvQXNzZW1ibGVySGVscGVyczo6bG9hZDhP
bkNvbmRpdGlvbigqdGhpcywgY29uZCwgQWRkcmVzcyhhZGRyZXNzVGVtcFJlZ2lzdGVyKSwgYWRk
cmVzc1RlbXBSZWdpc3Rlcik7CiAgICAgICAgIHJldHVybiBicmFuY2hUZXN0MzIoY29uZCwgYWRk
cmVzc1RlbXBSZWdpc3RlciwgbWFzazgpOwogICAgIH0KIApAQCAtMTc5Nyw4ICsxNzk3LDggQEAg
Y2xhc3MgTWFjcm9Bc3NlbWJsZXJBUk12NyA6IHB1YmxpYyBBYnN0cmFjdE1hY3JvQXNzZW1ibGVy
PEFSTXY3QXNzZW1ibGVyLCBNYWNyb0EKIAogICAgIHZvaWQgY29tcGFyZTgoUmVsYXRpb25hbENv
bmRpdGlvbiBjb25kLCBBZGRyZXNzIGxlZnQsIFRydXN0ZWRJbW0zMiByaWdodCwgUmVnaXN0ZXJJ
RCBkZXN0KQogICAgIHsKLSAgICAgICAgVHJ1c3RlZEltbTMyIHJpZ2h0OChzdGF0aWNfY2FzdDxp
bnQ4X3Q+KHJpZ2h0Lm1fdmFsdWUpKTsKLSAgICAgICAgbG9hZDgobGVmdCwgYWRkcmVzc1RlbXBS
ZWdpc3Rlcik7CisgICAgICAgIFRydXN0ZWRJbW0zMiByaWdodDggPSBNYWNyb0Fzc2VtYmxlckhl
bHBlcnM6Om1hc2s4T25Db25kaXRpb24oKnRoaXMsIGNvbmQsIHJpZ2h0KTsKKyAgICAgICAgTWFj
cm9Bc3NlbWJsZXJIZWxwZXJzOjpsb2FkOE9uQ29uZGl0aW9uKCp0aGlzLCBjb25kLCBsZWZ0LCBh
ZGRyZXNzVGVtcFJlZ2lzdGVyKTsKICAgICAgICAgY29tcGFyZTMyKGNvbmQsIGFkZHJlc3NUZW1w
UmVnaXN0ZXIsIHJpZ2h0OCwgZGVzdCk7CiAgICAgfQogCkBAIC0xODI1LDggKzE4MjUsOCBAQCBj
bGFzcyBNYWNyb0Fzc2VtYmxlckFSTXY3IDogcHVibGljIEFic3RyYWN0TWFjcm9Bc3NlbWJsZXI8
QVJNdjdBc3NlbWJsZXIsIE1hY3JvQQogCiAgICAgdm9pZCB0ZXN0OChSZXN1bHRDb25kaXRpb24g
Y29uZCwgQWRkcmVzcyBhZGRyZXNzLCBUcnVzdGVkSW1tMzIgbWFzaywgUmVnaXN0ZXJJRCBkZXN0
KQogICAgIHsKLSAgICAgICAgVHJ1c3RlZEltbTMyIG1hc2s4KHN0YXRpY19jYXN0PGludDhfdD4o
bWFzay5tX3ZhbHVlKSk7Ci0gICAgICAgIGxvYWQ4KGFkZHJlc3MsIGRhdGFUZW1wUmVnaXN0ZXIp
OworICAgICAgICBUcnVzdGVkSW1tMzIgbWFzazggPSBNYWNyb0Fzc2VtYmxlckhlbHBlcnM6Om1h
c2s4T25Db25kaXRpb24oKnRoaXMsIGNvbmQsIG1hc2spOworICAgICAgICBNYWNyb0Fzc2VtYmxl
ckhlbHBlcnM6OmxvYWQ4T25Db25kaXRpb24oKnRoaXMsIGNvbmQsIGFkZHJlc3MsIGRhdGFUZW1w
UmVnaXN0ZXIpOwogICAgICAgICB0ZXN0MzIoZGF0YVRlbXBSZWdpc3RlciwgbWFzazgpOwogICAg
ICAgICBtX2Fzc2VtYmxlci5pdChhcm1WN0NvbmRpdGlvbihjb25kKSwgZmFsc2UpOwogICAgICAg
ICBtX2Fzc2VtYmxlci5tb3YoZGVzdCwgQVJNVGh1bWJJbW1lZGlhdGU6Om1ha2VVSW50MTYoMSkp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2Vt
YmxlckhlbHBlcnMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3Nl
bWJsZXJIZWxwZXJzLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMDQ3ZTk0YzI3MWIzMDgwNTUwYmM0MjY5M2RkYTQy
Mzc1MGFjMzJmMQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3Nl
bWJsZXIvTWFjcm9Bc3NlbWJsZXJIZWxwZXJzLmgKQEAgLTAsMCArMSwxMzEgQEAKKy8qCisgKiBD
b3B5cmlnaHQgKEMpIDIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElT
JycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElT
Q0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9S
UyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAq
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworbmFt
ZXNwYWNlIEpTQyB7CituYW1lc3BhY2UgTWFjcm9Bc3NlbWJsZXJIZWxwZXJzIHsKKworLy8gVHJ1
ZSBpZiB0aGlzOgorLy8gICAgIGJyYW5jaDgoY29uZCwgdmFsdWUsIHZhbHVlKQorLy8gSXMgdGhl
IHNhbWUgYXMgdGhpczoKKy8vICAgICBicmFuY2gzMihjb25kLCBzaWduRXh0OCh2YWx1ZSksIHNp
Z25FeHQ4KHZhbHVlKSkKK3RlbXBsYXRlPHR5cGVuYW1lIE1hY3JvQXNzZW1ibGVyVHlwZT4KK2lu
bGluZSBib29sIGlzU2lnbmVkKHR5cGVuYW1lIE1hY3JvQXNzZW1ibGVyVHlwZTo6UmVsYXRpb25h
bENvbmRpdGlvbiBjb25kKQoreworICAgIHN3aXRjaCAoY29uZCkgeworICAgIGNhc2UgTWFjcm9B
c3NlbWJsZXJUeXBlOjpFcXVhbDoKKyAgICBjYXNlIE1hY3JvQXNzZW1ibGVyVHlwZTo6Tm90RXF1
YWw6CisgICAgY2FzZSBNYWNyb0Fzc2VtYmxlclR5cGU6OkdyZWF0ZXJUaGFuOgorICAgIGNhc2Ug
TWFjcm9Bc3NlbWJsZXJUeXBlOjpHcmVhdGVyVGhhbk9yRXF1YWw6CisgICAgY2FzZSBNYWNyb0Fz
c2VtYmxlclR5cGU6Okxlc3NUaGFuOgorICAgIGNhc2UgTWFjcm9Bc3NlbWJsZXJUeXBlOjpMZXNz
VGhhbk9yRXF1YWw6CisgICAgICAgIHJldHVybiB0cnVlOworICAgIGRlZmF1bHQ6CisgICAgICAg
IHJldHVybiBmYWxzZTsKKyAgICB9Cit9CisKKy8vIFRydWUgaWYgdGhpczoKKy8vICAgICBicmFu
Y2g4KGNvbmQsIHZhbHVlLCB2YWx1ZSkKKy8vIElzIHRoZSBzYW1lIGFzIHRoaXM6CisvLyAgICAg
YnJhbmNoMzIoY29uZCwgemVyb0V4dDgodmFsdWUpLCB6ZXJvRXh0OCh2YWx1ZSkpCit0ZW1wbGF0
ZTx0eXBlbmFtZSBNYWNyb0Fzc2VtYmxlclR5cGU+CitpbmxpbmUgYm9vbCBpc1Vuc2lnbmVkKHR5
cGVuYW1lIE1hY3JvQXNzZW1ibGVyVHlwZTo6UmVsYXRpb25hbENvbmRpdGlvbiBjb25kKQorewor
ICAgIHN3aXRjaCAoY29uZCkgeworICAgIGNhc2UgTWFjcm9Bc3NlbWJsZXJUeXBlOjpFcXVhbDoK
KyAgICBjYXNlIE1hY3JvQXNzZW1ibGVyVHlwZTo6Tm90RXF1YWw6CisgICAgY2FzZSBNYWNyb0Fz
c2VtYmxlclR5cGU6OkFib3ZlOgorICAgIGNhc2UgTWFjcm9Bc3NlbWJsZXJUeXBlOjpBYm92ZU9y
RXF1YWw6CisgICAgY2FzZSBNYWNyb0Fzc2VtYmxlclR5cGU6OkJlbG93OgorICAgIGNhc2UgTWFj
cm9Bc3NlbWJsZXJUeXBlOjpCZWxvd09yRXF1YWw6CisgICAgICAgIHJldHVybiB0cnVlOworICAg
IGRlZmF1bHQ6CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9Cit9CisKKy8vIFRydWUgaWYg
dGhpczoKKy8vICAgICB0ZXN0OChjb25kLCB2YWx1ZSwgdmFsdWUpCisvLyBJcyB0aGUgc2FtZSBh
cyB0aGlzOgorLy8gICAgIHRlc3QzMihjb25kLCBzaWduRXh0OCh2YWx1ZSksIHNpZ25FeHQ4KHZh
bHVlKSkKK3RlbXBsYXRlPHR5cGVuYW1lIE1hY3JvQXNzZW1ibGVyVHlwZT4KK2lubGluZSBib29s
IGlzU2lnbmVkKHR5cGVuYW1lIE1hY3JvQXNzZW1ibGVyVHlwZTo6UmVzdWx0Q29uZGl0aW9uIGNv
bmQpCit7CisgICAgc3dpdGNoIChjb25kKSB7CisgICAgY2FzZSBNYWNyb0Fzc2VtYmxlclR5cGU6
OlNpZ25lZDoKKyAgICBjYXNlIE1hY3JvQXNzZW1ibGVyVHlwZTo6UG9zaXRpdmVPclplcm86Cisg
ICAgY2FzZSBNYWNyb0Fzc2VtYmxlclR5cGU6Olplcm86CisgICAgY2FzZSBNYWNyb0Fzc2VtYmxl
clR5cGU6Ok5vblplcm86CisgICAgICAgIHJldHVybiB0cnVlOworICAgIGRlZmF1bHQ6CisgICAg
ICAgIHJldHVybiBmYWxzZTsKKyAgICB9Cit9CisKKy8vIFRydWUgaWYgdGhpczoKKy8vICAgICB0
ZXN0OChjb25kLCB2YWx1ZSwgdmFsdWUpCisvLyBJcyB0aGUgc2FtZSBhcyB0aGlzOgorLy8gICAg
IHRlc3QzMihjb25kLCB6ZXJvRXh0OCh2YWx1ZSksIHplcm9FeHQ4KHZhbHVlKSkKK3RlbXBsYXRl
PHR5cGVuYW1lIE1hY3JvQXNzZW1ibGVyVHlwZT4KK2lubGluZSBib29sIGlzVW5zaWduZWQodHlw
ZW5hbWUgTWFjcm9Bc3NlbWJsZXJUeXBlOjpSZXN1bHRDb25kaXRpb24gY29uZCkKK3sKKyAgICBz
d2l0Y2ggKGNvbmQpIHsKKyAgICBjYXNlIE1hY3JvQXNzZW1ibGVyVHlwZTo6WmVybzoKKyAgICBj
YXNlIE1hY3JvQXNzZW1ibGVyVHlwZTo6Tm9uWmVybzoKKyAgICAgICAgcmV0dXJuIHRydWU7Cisg
ICAgZGVmYXVsdDoKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KK30KKwordGVtcGxhdGU8
dHlwZW5hbWUgTWFjcm9Bc3NlbWJsZXJUeXBlPgoraW5saW5lIHR5cGVuYW1lIE1hY3JvQXNzZW1i
bGVyVHlwZTo6VHJ1c3RlZEltbTMyIG1hc2s4T25Db25kaXRpb24oTWFjcm9Bc3NlbWJsZXJUeXBl
JiwgdHlwZW5hbWUgTWFjcm9Bc3NlbWJsZXJUeXBlOjpSZWxhdGlvbmFsQ29uZGl0aW9uIGNvbmQs
IHR5cGVuYW1lIE1hY3JvQXNzZW1ibGVyVHlwZTo6VHJ1c3RlZEltbTMyIHZhbHVlKQoreworICAg
IGlmIChpc1Vuc2lnbmVkPE1hY3JvQXNzZW1ibGVyVHlwZT4oY29uZCkpCisgICAgICAgIHJldHVy
biB0eXBlbmFtZSBNYWNyb0Fzc2VtYmxlclR5cGU6OlRydXN0ZWRJbW0zMihzdGF0aWNfY2FzdDx1
aW50OF90Pih2YWx1ZS5tX3ZhbHVlKSk7CisgICAgcmV0dXJuIHR5cGVuYW1lIE1hY3JvQXNzZW1i
bGVyVHlwZTo6VHJ1c3RlZEltbTMyKHN0YXRpY19jYXN0PGludDhfdD4odmFsdWUubV92YWx1ZSkp
OworfQorCit0ZW1wbGF0ZTx0eXBlbmFtZSBNYWNyb0Fzc2VtYmxlclR5cGU+CitpbmxpbmUgdHlw
ZW5hbWUgTWFjcm9Bc3NlbWJsZXJUeXBlOjpUcnVzdGVkSW1tMzIgbWFzazhPbkNvbmRpdGlvbihN
YWNyb0Fzc2VtYmxlclR5cGUmLCB0eXBlbmFtZSBNYWNyb0Fzc2VtYmxlclR5cGU6OlJlc3VsdENv
bmRpdGlvbiBjb25kLCB0eXBlbmFtZSBNYWNyb0Fzc2VtYmxlclR5cGU6OlRydXN0ZWRJbW0zMiB2
YWx1ZSkKK3sKKyAgICBpZiAoaXNVbnNpZ25lZDxNYWNyb0Fzc2VtYmxlclR5cGU+KGNvbmQpKQor
ICAgICAgICByZXR1cm4gdHlwZW5hbWUgTWFjcm9Bc3NlbWJsZXJUeXBlOjpUcnVzdGVkSW1tMzIo
c3RhdGljX2Nhc3Q8dWludDhfdD4odmFsdWUubV92YWx1ZSkpOworICAgIEFTU0VSVF9XSVRIX01F
U1NBR0UoY29uZCAhPSBNYWNyb0Fzc2VtYmxlclR5cGU6Ok92ZXJmbG93LCAiT3ZlcmZsb3cgaXMg
bm90IHVzZWQgZm9yIDhiaXQgdGVzdCBvcGVyYXRpb25zLiIpOworICAgIEFTU0VSVChpc1NpZ25l
ZDxNYWNyb0Fzc2VtYmxlclR5cGU+KGNvbmQpKTsKKyAgICByZXR1cm4gdHlwZW5hbWUgTWFjcm9B
c3NlbWJsZXJUeXBlOjpUcnVzdGVkSW1tMzIoc3RhdGljX2Nhc3Q8aW50OF90Pih2YWx1ZS5tX3Zh
bHVlKSk7Cit9CisKK3RlbXBsYXRlPHR5cGVuYW1lIE1hY3JvQXNzZW1ibGVyVHlwZSwgdHlwZW5h
bWUgQ29uZGl0aW9uLCB0eXBlbmFtZSAuLi5BcmdzPgordm9pZCBsb2FkOE9uQ29uZGl0aW9uKE1h
Y3JvQXNzZW1ibGVyVHlwZSYgaml0LCBDb25kaXRpb24gY29uZCwgQXJncy4uLiBhcmdzKQorewor
ICAgIGlmIChpc1Vuc2lnbmVkPE1hY3JvQXNzZW1ibGVyVHlwZT4oY29uZCkpCisgICAgICAgIHJl
dHVybiBqaXQubG9hZDgoc3RkOjpmb3J3YXJkPEFyZ3M+KGFyZ3MpLi4uKTsKKyAgICByZXR1cm4g
aml0LmxvYWQ4U2lnbmVkRXh0ZW5kVG8zMihzdGQ6OmZvcndhcmQ8QXJncz4oYXJncykuLi4pOwor
fQorCit9IH0gLy8gbmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlck1JUFMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJNSVBTLmgKaW5kZXggZmFmZGM1MWNhZmIzMjdiNTEx
MTY3N2Y1NTc2YjM0ZWRkMWQzNDgzNi4uNzdmZGVkOTQ4YzgwMWM3OGQzYWExNDdkOWM3NDFjNmQx
NzMyYTA2ZiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNy
b0Fzc2VtYmxlck1JUFMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01h
Y3JvQXNzZW1ibGVyTUlQUy5oCkBAIC0xNDQ1LDMyICsxNDQ1LDMyIEBAIGNsYXNzIE1hY3JvQXNz
ZW1ibGVyTUlQUyA6IHB1YmxpYyBBYnN0cmFjdE1hY3JvQXNzZW1ibGVyPE1JUFNBc3NlbWJsZXIs
IE1hY3JvQXNzCiAKICAgICBKdW1wIGJyYW5jaDgoUmVsYXRpb25hbENvbmRpdGlvbiBjb25kLCBB
ZGRyZXNzIGxlZnQsIFRydXN0ZWRJbW0zMiByaWdodCkKICAgICB7Ci0gICAgICAgIFRydXN0ZWRJ
bW0zMiByaWdodDgoc3RhdGljX2Nhc3Q8aW50OF90PihyaWdodC5tX3ZhbHVlKSk7Ci0gICAgICAg
IGxvYWQ4KGxlZnQsIGRhdGFUZW1wUmVnaXN0ZXIpOworICAgICAgICBUcnVzdGVkSW1tMzIgcmln
aHQ4ID0gTWFjcm9Bc3NlbWJsZXJIZWxwZXJzOjptYXNrOE9uQ29uZGl0aW9uKCp0aGlzLCBjb25k
LCByaWdodCk7CisgICAgICAgIE1hY3JvQXNzZW1ibGVySGVscGVyczo6bG9hZDhPbkNvbmRpdGlv
bigqdGhpcywgY29uZCwgbGVmdCwgZGF0YVRlbXBSZWdpc3Rlcik7CiAgICAgICAgIG1vdmUocmln
aHQ4LCBpbW1UZW1wUmVnaXN0ZXIpOwogICAgICAgICByZXR1cm4gYnJhbmNoMzIoY29uZCwgZGF0
YVRlbXBSZWdpc3RlciwgaW1tVGVtcFJlZ2lzdGVyKTsKICAgICB9CiAKICAgICBKdW1wIGJyYW5j
aDgoUmVsYXRpb25hbENvbmRpdGlvbiBjb25kLCBBYnNvbHV0ZUFkZHJlc3MgbGVmdCwgVHJ1c3Rl
ZEltbTMyIHJpZ2h0KQogICAgIHsKLSAgICAgICAgVHJ1c3RlZEltbTMyIHJpZ2h0OChzdGF0aWNf
Y2FzdDxpbnQ4X3Q+KHJpZ2h0Lm1fdmFsdWUpKTsKLSAgICAgICAgbG9hZDgobGVmdCwgZGF0YVRl
bXBSZWdpc3Rlcik7CisgICAgICAgIFRydXN0ZWRJbW0zMiByaWdodDggPSBNYWNyb0Fzc2VtYmxl
ckhlbHBlcnM6Om1hc2s4T25Db25kaXRpb24oKnRoaXMsIGNvbmQsIHJpZ2h0KTsKKyAgICAgICAg
TWFjcm9Bc3NlbWJsZXJIZWxwZXJzOjpsb2FkOE9uQ29uZGl0aW9uKCp0aGlzLCBjb25kLCBsZWZ0
LCBkYXRhVGVtcFJlZ2lzdGVyKTsKICAgICAgICAgbW92ZShyaWdodDgsIGltbVRlbXBSZWdpc3Rl
cik7CiAgICAgICAgIHJldHVybiBicmFuY2gzMihjb25kLCBkYXRhVGVtcFJlZ2lzdGVyLCBpbW1U
ZW1wUmVnaXN0ZXIpOwogICAgIH0KIAogICAgIHZvaWQgY29tcGFyZTgoUmVsYXRpb25hbENvbmRp
dGlvbiBjb25kLCBBZGRyZXNzIGxlZnQsIFRydXN0ZWRJbW0zMiByaWdodCwgUmVnaXN0ZXJJRCBk
ZXN0KQogICAgIHsKLSAgICAgICAgVHJ1c3RlZEltbTMyIHJpZ2h0OChzdGF0aWNfY2FzdDxpbnQ4
X3Q+KHJpZ2h0Lm1fdmFsdWUpKTsKLSAgICAgICAgbG9hZDgobGVmdCwgZGF0YVRlbXBSZWdpc3Rl
cik7CisgICAgICAgIFRydXN0ZWRJbW0zMiByaWdodDggPSBNYWNyb0Fzc2VtYmxlckhlbHBlcnM6
Om1hc2s4T25Db25kaXRpb24oKnRoaXMsIGNvbmQsIHJpZ2h0KTsKKyAgICAgICAgTWFjcm9Bc3Nl
bWJsZXJIZWxwZXJzOjpsb2FkOE9uQ29uZGl0aW9uKCp0aGlzLCBjb25kLCBsZWZ0LCBkYXRhVGVt
cFJlZ2lzdGVyKTsKICAgICAgICAgbW92ZShyaWdodDgsIGltbVRlbXBSZWdpc3Rlcik7CiAgICAg
ICAgIGNvbXBhcmUzMihjb25kLCBkYXRhVGVtcFJlZ2lzdGVyLCBpbW1UZW1wUmVnaXN0ZXIsIGRl
c3QpOwogICAgIH0KIAogICAgIEp1bXAgYnJhbmNoOChSZWxhdGlvbmFsQ29uZGl0aW9uIGNvbmQs
IEJhc2VJbmRleCBsZWZ0LCBUcnVzdGVkSW1tMzIgcmlnaHQpCiAgICAgewotICAgICAgICBUcnVz
dGVkSW1tMzIgcmlnaHQ4KHN0YXRpY19jYXN0PGludDhfdD4ocmlnaHQubV92YWx1ZSkpOwotICAg
ICAgICBsb2FkOChsZWZ0LCBkYXRhVGVtcFJlZ2lzdGVyKTsKKyAgICAgICAgVHJ1c3RlZEltbTMy
IHJpZ2h0OCA9IE1hY3JvQXNzZW1ibGVySGVscGVyczo6bWFzazhPbkNvbmRpdGlvbigqdGhpcywg
Y29uZCwgcmlnaHQpOworICAgICAgICBNYWNyb0Fzc2VtYmxlckhlbHBlcnM6OmxvYWQ4T25Db25k
aXRpb24oKnRoaXMsIGNvbmQsIGxlZnQsIGRhdGFUZW1wUmVnaXN0ZXIpOwogICAgICAgICAvLyBC
ZSBjYXJlZnVsIHRoYXQgdGhlIHByZXZpb3VzIGxvYWQ4KCkgdXNlcyBpbW1UZW1wUmVnaXN0ZXIu
CiAgICAgICAgIC8vIFNvLCB3ZSBuZWVkIHRvIHB1dCBtb3ZlKCkgYWZ0ZXIgbG9hZDgoKS4KICAg
ICAgICAgbW92ZShyaWdodDgsIGltbVRlbXBSZWdpc3Rlcik7CkBAIC0xNjI4LDIzICsxNjI4LDIz
IEBAIGNsYXNzIE1hY3JvQXNzZW1ibGVyTUlQUyA6IHB1YmxpYyBBYnN0cmFjdE1hY3JvQXNzZW1i
bGVyPE1JUFNBc3NlbWJsZXIsIE1hY3JvQXNzCiAKICAgICBKdW1wIGJyYW5jaFRlc3Q4KFJlc3Vs
dENvbmRpdGlvbiBjb25kLCBCYXNlSW5kZXggYWRkcmVzcywgVHJ1c3RlZEltbTMyIG1hc2sgPSBU
cnVzdGVkSW1tMzIoLTEpKQogICAgIHsKLSAgICAgICAgVHJ1c3RlZEltbTMyIG1hc2s4KHN0YXRp
Y19jYXN0PGludDhfdD4obWFzay5tX3ZhbHVlKSk7Ci0gICAgICAgIGxvYWQ4KGFkZHJlc3MsIGRh
dGFUZW1wUmVnaXN0ZXIpOworICAgICAgICBUcnVzdGVkSW1tMzIgbWFzazggPSBNYWNyb0Fzc2Vt
YmxlckhlbHBlcnM6Om1hc2s4T25Db25kaXRpb24oKnRoaXMsIGNvbmQsIG1hc2spOworICAgICAg
ICBNYWNyb0Fzc2VtYmxlckhlbHBlcnM6OmxvYWQ4T25Db25kaXRpb24oKnRoaXMsIGNvbmQsIGFk
ZHJlc3MsIGRhdGFUZW1wUmVnaXN0ZXIpOwogICAgICAgICByZXR1cm4gYnJhbmNoVGVzdDMyKGNv
bmQsIGRhdGFUZW1wUmVnaXN0ZXIsIG1hc2s4KTsKICAgICB9CiAKICAgICBKdW1wIGJyYW5jaFRl
c3Q4KFJlc3VsdENvbmRpdGlvbiBjb25kLCBBZGRyZXNzIGFkZHJlc3MsIFRydXN0ZWRJbW0zMiBt
YXNrID0gVHJ1c3RlZEltbTMyKC0xKSkKICAgICB7Ci0gICAgICAgIFRydXN0ZWRJbW0zMiBtYXNr
OChzdGF0aWNfY2FzdDxpbnQ4X3Q+KG1hc2subV92YWx1ZSkpOwotICAgICAgICBsb2FkOChhZGRy
ZXNzLCBkYXRhVGVtcFJlZ2lzdGVyKTsKKyAgICAgICAgVHJ1c3RlZEltbTMyIG1hc2s4ID0gTWFj
cm9Bc3NlbWJsZXJIZWxwZXJzOjptYXNrOE9uQ29uZGl0aW9uKCp0aGlzLCBjb25kLCBtYXNrKTsK
KyAgICAgICAgTWFjcm9Bc3NlbWJsZXJIZWxwZXJzOjpsb2FkOE9uQ29uZGl0aW9uKCp0aGlzLCBj
b25kLCBhZGRyZXNzLCBkYXRhVGVtcFJlZ2lzdGVyKTsKICAgICAgICAgcmV0dXJuIGJyYW5jaFRl
c3QzMihjb25kLCBkYXRhVGVtcFJlZ2lzdGVyLCBtYXNrOCk7CiAgICAgfQogCiAgICAgSnVtcCBi
cmFuY2hUZXN0OChSZXN1bHRDb25kaXRpb24gY29uZCwgQWJzb2x1dGVBZGRyZXNzIGFkZHJlc3Ms
IFRydXN0ZWRJbW0zMiBtYXNrID0gVHJ1c3RlZEltbTMyKC0xKSkKICAgICB7Ci0gICAgICAgIFRy
dXN0ZWRJbW0zMiBtYXNrOChzdGF0aWNfY2FzdDxpbnQ4X3Q+KG1hc2subV92YWx1ZSkpOworICAg
ICAgICBUcnVzdGVkSW1tMzIgbWFzazggPSBNYWNyb0Fzc2VtYmxlckhlbHBlcnM6Om1hc2s4T25D
b25kaXRpb24oKnRoaXMsIGNvbmQsIG1hc2spOwogICAgICAgICBtb3ZlKFRydXN0ZWRJbW1QdHIo
YWRkcmVzcy5tX3B0ciksIGRhdGFUZW1wUmVnaXN0ZXIpOwotICAgICAgICBsb2FkOChBZGRyZXNz
KGRhdGFUZW1wUmVnaXN0ZXIpLCBkYXRhVGVtcFJlZ2lzdGVyKTsKKyAgICAgICAgTWFjcm9Bc3Nl
bWJsZXJIZWxwZXJzOjpsb2FkOE9uQ29uZGl0aW9uKCp0aGlzLCBjb25kLCBBZGRyZXNzKGRhdGFU
ZW1wUmVnaXN0ZXIpLCBkYXRhVGVtcFJlZ2lzdGVyKTsKICAgICAgICAgcmV0dXJuIGJyYW5jaFRl
c3QzMihjb25kLCBkYXRhVGVtcFJlZ2lzdGVyLCBtYXNrOCk7CiAgICAgfQogCkBAIC0yMjE4LDgg
KzIyMTgsOCBAQCBjbGFzcyBNYWNyb0Fzc2VtYmxlck1JUFMgOiBwdWJsaWMgQWJzdHJhY3RNYWNy
b0Fzc2VtYmxlcjxNSVBTQXNzZW1ibGVyLCBNYWNyb0FzcwogICAgIHZvaWQgdGVzdDgoUmVzdWx0
Q29uZGl0aW9uIGNvbmQsIEFkZHJlc3MgYWRkcmVzcywgVHJ1c3RlZEltbTMyIG1hc2ssIFJlZ2lz
dGVySUQgZGVzdCkKICAgICB7CiAgICAgICAgIEFTU0VSVCgoY29uZCA9PSBaZXJvKSB8fCAoY29u
ZCA9PSBOb25aZXJvKSk7Ci0gICAgICAgIFRydXN0ZWRJbW0zMiBtYXNrOChzdGF0aWNfY2FzdDxp
bnQ4X3Q+KG1hc2subV92YWx1ZSkpOwotICAgICAgICBsb2FkOChhZGRyZXNzLCBkYXRhVGVtcFJl
Z2lzdGVyKTsKKyAgICAgICAgVHJ1c3RlZEltbTMyIG1hc2s4ID0gTWFjcm9Bc3NlbWJsZXJIZWxw
ZXJzOjptYXNrOE9uQ29uZGl0aW9uKCp0aGlzLCBjb25kLCBtYXNrKTsKKyAgICAgICAgTWFjcm9B
c3NlbWJsZXJIZWxwZXJzOjpsb2FkOE9uQ29uZGl0aW9uKCp0aGlzLCBjb25kLCBhZGRyZXNzLCBk
YXRhVGVtcFJlZ2lzdGVyKTsKICAgICAgICAgaWYgKG1hc2s4Lm1fdmFsdWUgPT0gLTEgJiYgIW1f
Zml4ZWRXaWR0aCkgewogICAgICAgICAgICAgaWYgKGNvbmQgPT0gWmVybykKICAgICAgICAgICAg
ICAgICBtX2Fzc2VtYmxlci5zbHRpdShkZXN0LCBkYXRhVGVtcFJlZ2lzdGVyLCAxKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJTSDQu
aCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJTSDQuaApp
bmRleCBlZWNjNDE1ZjViZTM1MmRlNTlkODkxNGRiZDAwZmYyNWY2YzU1YTVmLi5kMjU4NjcxZjRj
ZjBiYmUxNzgwZDgyMDY5ODkyZGFkNDJmNDIzNWE4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyU0g0LmgKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlclNINC5oCkBAIC0xNjA1LDkgKzE2MDUs
OSBAQCBjbGFzcyBNYWNyb0Fzc2VtYmxlclNINCA6IHB1YmxpYyBBYnN0cmFjdE1hY3JvQXNzZW1i
bGVyPFNINEFzc2VtYmxlciwgTWFjcm9Bc3NlbQogCiAgICAgSnVtcCBicmFuY2hUZXN0OChSZXN1
bHRDb25kaXRpb24gY29uZCwgQWRkcmVzcyBhZGRyZXNzLCBUcnVzdGVkSW1tMzIgbWFzayA9IFRy
dXN0ZWRJbW0zMigtMSkpCiAgICAgewotICAgICAgICBUcnVzdGVkSW1tMzIgbWFzazgoc3RhdGlj
X2Nhc3Q8aW50OF90PihtYXNrLm1fdmFsdWUpKTsKKyAgICAgICAgVHJ1c3RlZEltbTMyIG1hc2s4
ID0gTWFjcm9Bc3NlbWJsZXJIZWxwZXJzOjptYXNrOE9uQ29uZGl0aW9uKCp0aGlzLCBjb25kLCBt
YXNrKTsKICAgICAgICAgUmVnaXN0ZXJJRCBhZGRyZXNzVGVtcFJlZ2lzdGVyID0gY2xhaW1TY3Jh
dGNoKCk7Ci0gICAgICAgIGxvYWQ4KGFkZHJlc3MsIGFkZHJlc3NUZW1wUmVnaXN0ZXIpOworICAg
ICAgICBNYWNyb0Fzc2VtYmxlckhlbHBlcnM6OmxvYWQ4T25Db25kaXRpb24oKnRoaXMsIGNvbmQs
IGFkZHJlc3MsIGFkZHJlc3NUZW1wUmVnaXN0ZXIpOwogICAgICAgICBKdW1wIGptcCA9IGJyYW5j
aFRlc3QzMihjb25kLCBhZGRyZXNzVGVtcFJlZ2lzdGVyLCBtYXNrOCk7CiAgICAgICAgIHJlbGVh
c2VTY3JhdGNoKGFkZHJlc3NUZW1wUmVnaXN0ZXIpOwogICAgICAgICByZXR1cm4gam1wOwpAQCAt
MTYxNSw5ICsxNjE1LDkgQEAgY2xhc3MgTWFjcm9Bc3NlbWJsZXJTSDQgOiBwdWJsaWMgQWJzdHJh
Y3RNYWNyb0Fzc2VtYmxlcjxTSDRBc3NlbWJsZXIsIE1hY3JvQXNzZW0KIAogICAgIEp1bXAgYnJh
bmNoVGVzdDgoUmVzdWx0Q29uZGl0aW9uIGNvbmQsIEJhc2VJbmRleCBhZGRyZXNzLCBUcnVzdGVk
SW1tMzIgbWFzayA9IFRydXN0ZWRJbW0zMigtMSkpCiAgICAgewotICAgICAgICBUcnVzdGVkSW1t
MzIgbWFzazgoc3RhdGljX2Nhc3Q8aW50OF90PihtYXNrLm1fdmFsdWUpKTsKKyAgICAgICAgVHJ1
c3RlZEltbTMyIG1hc2s4ID0gTWFjcm9Bc3NlbWJsZXJIZWxwZXJzOjptYXNrOE9uQ29uZGl0aW9u
KCp0aGlzLCBjb25kLCBtYXNrKTsKICAgICAgICAgUmVnaXN0ZXJJRCBhZGRyZXNzVGVtcFJlZ2lz
dGVyID0gY2xhaW1TY3JhdGNoKCk7Ci0gICAgICAgIGxvYWQ4KGFkZHJlc3MsIGFkZHJlc3NUZW1w
UmVnaXN0ZXIpOworICAgICAgICBNYWNyb0Fzc2VtYmxlckhlbHBlcnM6OmxvYWQ4T25Db25kaXRp
b24oKnRoaXMsIGNvbmQsIGFkZHJlc3MsIGFkZHJlc3NUZW1wUmVnaXN0ZXIpOwogICAgICAgICBK
dW1wIGptcCA9IGJyYW5jaFRlc3QzMihjb25kLCBhZGRyZXNzVGVtcFJlZ2lzdGVyLCBtYXNrOCk7
CiAgICAgICAgIHJlbGVhc2VTY3JhdGNoKGFkZHJlc3NUZW1wUmVnaXN0ZXIpOwogICAgICAgICBy
ZXR1cm4gam1wOwpAQCAtMTYyNSwxMCArMTYyNSwxMCBAQCBjbGFzcyBNYWNyb0Fzc2VtYmxlclNI
NCA6IHB1YmxpYyBBYnN0cmFjdE1hY3JvQXNzZW1ibGVyPFNINEFzc2VtYmxlciwgTWFjcm9Bc3Nl
bQogCiAgICAgSnVtcCBicmFuY2hUZXN0OChSZXN1bHRDb25kaXRpb24gY29uZCwgQWJzb2x1dGVB
ZGRyZXNzIGFkZHJlc3MsIFRydXN0ZWRJbW0zMiBtYXNrID0gVHJ1c3RlZEltbTMyKC0xKSkKICAg
ICB7Ci0gICAgICAgIFRydXN0ZWRJbW0zMiBtYXNrOChzdGF0aWNfY2FzdDxpbnQ4X3Q+KG1hc2su
bV92YWx1ZSkpOworICAgICAgICBUcnVzdGVkSW1tMzIgbWFzazggPSBNYWNyb0Fzc2VtYmxlckhl
bHBlcnM6Om1hc2s4T25Db25kaXRpb24oKnRoaXMsIGNvbmQsIG1hc2spOwogICAgICAgICBSZWdp
c3RlcklEIGFkZHJlc3NUZW1wUmVnaXN0ZXIgPSBjbGFpbVNjcmF0Y2goKTsKICAgICAgICAgbW92
ZShUcnVzdGVkSW1tUHRyKGFkZHJlc3MubV9wdHIpLCBhZGRyZXNzVGVtcFJlZ2lzdGVyKTsKLSAg
ICAgICAgbG9hZDgoQWRkcmVzcyhhZGRyZXNzVGVtcFJlZ2lzdGVyKSwgYWRkcmVzc1RlbXBSZWdp
c3Rlcik7CisgICAgICAgIE1hY3JvQXNzZW1ibGVySGVscGVyczo6bG9hZDhPbkNvbmRpdGlvbigq
dGhpcywgY29uZCwgQWRkcmVzcyhhZGRyZXNzVGVtcFJlZ2lzdGVyKSwgYWRkcmVzc1RlbXBSZWdp
c3Rlcik7CiAgICAgICAgIEp1bXAgam1wID0gYnJhbmNoVGVzdDMyKGNvbmQsIGFkZHJlc3NUZW1w
UmVnaXN0ZXIsIG1hc2s4KTsKICAgICAgICAgcmVsZWFzZVNjcmF0Y2goYWRkcmVzc1RlbXBSZWdp
c3Rlcik7CiAgICAgICAgIHJldHVybiBqbXA7CkBAIC0xNjQ2LDkgKzE2NDYsOSBAQCBjbGFzcyBN
YWNyb0Fzc2VtYmxlclNINCA6IHB1YmxpYyBBYnN0cmFjdE1hY3JvQXNzZW1ibGVyPFNINEFzc2Vt
YmxlciwgTWFjcm9Bc3NlbQogCiAgICAgSnVtcCBicmFuY2g4KFJlbGF0aW9uYWxDb25kaXRpb24g
Y29uZCwgQWRkcmVzcyBsZWZ0LCBUcnVzdGVkSW1tMzIgcmlnaHQpCiAgICAgewotICAgICAgICBU
cnVzdGVkSW1tMzIgcmlnaHQ4KHN0YXRpY19jYXN0PGludDhfdD4ocmlnaHQubV92YWx1ZSkpOwor
ICAgICAgICBUcnVzdGVkSW1tMzIgcmlnaHQ4ID0gTWFjcm9Bc3NlbWJsZXJIZWxwZXJzOjptYXNr
OE9uQ29uZGl0aW9uKCp0aGlzLCBjb25kLCByaWdodCk7CiAgICAgICAgIFJlZ2lzdGVySUQgYWRk
cmVzc1RlbXBSZWdpc3RlciA9IGNsYWltU2NyYXRjaCgpOwotICAgICAgICBsb2FkOChsZWZ0LCBh
ZGRyZXNzVGVtcFJlZ2lzdGVyKTsKKyAgICAgICAgTWFjcm9Bc3NlbWJsZXJIZWxwZXJzOjpsb2Fk
OE9uQ29uZGl0aW9uKCp0aGlzLCBjb25kLCBsZWZ0LCBhZGRyZXNzVGVtcFJlZ2lzdGVyKTsKICAg
ICAgICAgSnVtcCBqbXAgPSBicmFuY2gzMihjb25kLCBhZGRyZXNzVGVtcFJlZ2lzdGVyLCByaWdo
dDgpOwogICAgICAgICByZWxlYXNlU2NyYXRjaChhZGRyZXNzVGVtcFJlZ2lzdGVyKTsKICAgICAg
ICAgcmV0dXJuIGptcDsKQEAgLTE2NTYsOSArMTY1Niw5IEBAIGNsYXNzIE1hY3JvQXNzZW1ibGVy
U0g0IDogcHVibGljIEFic3RyYWN0TWFjcm9Bc3NlbWJsZXI8U0g0QXNzZW1ibGVyLCBNYWNyb0Fz
c2VtCiAKICAgICBKdW1wIGJyYW5jaDgoUmVsYXRpb25hbENvbmRpdGlvbiBjb25kLCBBYnNvbHV0
ZUFkZHJlc3MgbGVmdCwgVHJ1c3RlZEltbTMyIHJpZ2h0KQogICAgIHsKLSAgICAgICAgVHJ1c3Rl
ZEltbTMyIHJpZ2h0OChzdGF0aWNfY2FzdDxpbnQ4X3Q+KHJpZ2h0Lm1fdmFsdWUpKTsKKyAgICAg
ICAgVHJ1c3RlZEltbTMyIHJpZ2h0OCA9IE1hY3JvQXNzZW1ibGVySGVscGVyczo6bWFzazhPbkNv
bmRpdGlvbigqdGhpcywgY29uZCwgcmlnaHQpOwogICAgICAgICBSZWdpc3RlcklEIGFkZHJlc3NU
ZW1wUmVnaXN0ZXIgPSBjbGFpbVNjcmF0Y2goKTsKLSAgICAgICAgbG9hZDgobGVmdCwgYWRkcmVz
c1RlbXBSZWdpc3Rlcik7CisgICAgICAgIE1hY3JvQXNzZW1ibGVySGVscGVyczo6bG9hZDhPbkNv
bmRpdGlvbigqdGhpcywgY29uZCwgbGVmdCwgYWRkcmVzc1RlbXBSZWdpc3Rlcik7CiAgICAgICAg
IEp1bXAgam1wID0gYnJhbmNoMzIoY29uZCwgYWRkcmVzc1RlbXBSZWdpc3RlciwgcmlnaHQ4KTsK
ICAgICAgICAgcmVsZWFzZVNjcmF0Y2goYWRkcmVzc1RlbXBSZWdpc3Rlcik7CiAgICAgICAgIHJl
dHVybiBqbXA7CkBAIC0xNjY2LDkgKzE2NjYsOSBAQCBjbGFzcyBNYWNyb0Fzc2VtYmxlclNINCA6
IHB1YmxpYyBBYnN0cmFjdE1hY3JvQXNzZW1ibGVyPFNINEFzc2VtYmxlciwgTWFjcm9Bc3NlbQog
CiAgICAgdm9pZCBjb21wYXJlOChSZWxhdGlvbmFsQ29uZGl0aW9uIGNvbmQsIEFkZHJlc3MgbGVm
dCwgVHJ1c3RlZEltbTMyIHJpZ2h0LCBSZWdpc3RlcklEIGRlc3QpCiAgICAgewotICAgICAgICBU
cnVzdGVkSW1tMzIgcmlnaHQ4KHN0YXRpY19jYXN0PGludDhfdD4ocmlnaHQubV92YWx1ZSkpOwor
ICAgICAgICBUcnVzdGVkSW1tMzIgcmlnaHQ4ID0gTWFjcm9Bc3NlbWJsZXJIZWxwZXJzOjptYXNr
OE9uQ29uZGl0aW9uKCp0aGlzLCBjb25kLCByaWdodCk7CiAgICAgICAgIFJlZ2lzdGVySUQgYWRk
cmVzc1RlbXBSZWdpc3RlciA9IGNsYWltU2NyYXRjaCgpOwotICAgICAgICBsb2FkOChsZWZ0LCBh
ZGRyZXNzVGVtcFJlZ2lzdGVyKTsKKyAgICAgICAgTWFjcm9Bc3NlbWJsZXJIZWxwZXJzOjpsb2Fk
OE9uQ29uZGl0aW9uKCp0aGlzLCBjb25kLCBsZWZ0LCBhZGRyZXNzVGVtcFJlZ2lzdGVyKTsKICAg
ICAgICAgY29tcGFyZTMyKGNvbmQsIGFkZHJlc3NUZW1wUmVnaXN0ZXIsIHJpZ2h0OCwgZGVzdCk7
CiAgICAgICAgIHJlbGVhc2VTY3JhdGNoKGFkZHJlc3NUZW1wUmVnaXN0ZXIpOwogICAgIH0KQEAg
LTE4NDEsOSArMTg0MSw5IEBAIGNsYXNzIE1hY3JvQXNzZW1ibGVyU0g0IDogcHVibGljIEFic3Ry
YWN0TWFjcm9Bc3NlbWJsZXI8U0g0QXNzZW1ibGVyLCBNYWNyb0Fzc2VtCiAgICAgewogICAgICAg
ICBBU1NFUlQoKGNvbmQgPT0gWmVybykgfHwgKGNvbmQgPT0gTm9uWmVybykpOwogCi0gICAgICAg
IFRydXN0ZWRJbW0zMiBtYXNrOChzdGF0aWNfY2FzdDxpbnQ4X3Q+KG1hc2subV92YWx1ZSkpOwor
ICAgICAgICBUcnVzdGVkSW1tMzIgbWFzazggPSBNYWNyb0Fzc2VtYmxlckhlbHBlcnM6Om1hc2s4
T25Db25kaXRpb24oKnRoaXMsIGNvbmQsIG1hc2spOwogCi0gICAgICAgIGxvYWQ4KGFkZHJlc3Ms
IGRlc3QpOworICAgICAgICBNYWNyb0Fzc2VtYmxlckhlbHBlcnM6OmxvYWQ4T25Db25kaXRpb24o
KnRoaXMsIGNvbmQsIGFkZHJlc3MsIGRlc3QpOwogICAgICAgICBpZiAobWFzazgubV92YWx1ZSA9
PSAtMSkKICAgICAgICAgICAgIGNvbXBhcmUzMigwLCBkZXN0LCBzdGF0aWNfY2FzdDxSZWxhdGlv
bmFsQ29uZGl0aW9uPihjb25kKSk7CiAgICAgICAgIGVsc2UKQEAgLTE5NjUsMTIgKzE5NjUsMTIg
QEAgY2xhc3MgTWFjcm9Bc3NlbWJsZXJTSDQgOiBwdWJsaWMgQWJzdHJhY3RNYWNyb0Fzc2VtYmxl
cjxTSDRBc3NlbWJsZXIsIE1hY3JvQXNzZW0KIAogICAgIEp1bXAgYnJhbmNoOChSZWxhdGlvbmFs
Q29uZGl0aW9uIGNvbmQsIEJhc2VJbmRleCBsZWZ0LCBUcnVzdGVkSW1tMzIgcmlnaHQpCiAgICAg
ewotICAgICAgICBUcnVzdGVkSW1tMzIgcmlnaHQ4KHN0YXRpY19jYXN0PGludDhfdD4ocmlnaHQu
bV92YWx1ZSkpOworICAgICAgICBUcnVzdGVkSW1tMzIgcmlnaHQ4ID0gTWFjcm9Bc3NlbWJsZXJI
ZWxwZXJzOjptYXNrOE9uQ29uZGl0aW9uKCp0aGlzLCBjb25kLCByaWdodCk7CiAgICAgICAgIFJl
Z2lzdGVySUQgbGVmdHRtcCA9IGNsYWltU2NyYXRjaCgpOwogCiAgICAgICAgIGxvYWRFZmZlY3Rp
dmVBZGRyZXNzKGxlZnQsIGxlZnR0bXApOwogCi0gICAgICAgIGxvYWQ4KGxlZnR0bXAsIGxlZnR0
bXApOworICAgICAgICBNYWNyb0Fzc2VtYmxlckhlbHBlcnM6OmxvYWQ4T25Db25kaXRpb24oKnRo
aXMsIGNvbmQsIGxlZnR0bXAsIGxlZnR0bXApOwogICAgICAgICBSZWdpc3RlcklEIHJpZ2h0dG1w
ID0gY2xhaW1TY3JhdGNoKCk7CiAgICAgICAgIG1fYXNzZW1ibGVyLmxvYWRDb25zdGFudChyaWdo
dDgubV92YWx1ZSwgcmlnaHR0bXApOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyWDg2XzY0LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyWDg2XzY0LmgKaW5kZXggMzc5NzI4MjEzZWVmMDEw
MGQ1NmZkZDJmODkwZTVmNTg4MDA2M2ExZi4uMDdmODYyMGZhYmYyMmMzYzQ3NjJmNWEyY2E3YWJi
ZDU1YjcwMmU2MiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9N
YWNyb0Fzc2VtYmxlclg4Nl82NC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJs
ZXIvTWFjcm9Bc3NlbWJsZXJYODZfNjQuaApAQCAtMTIyMCw5ICsxMjIwLDggQEAgY2xhc3MgTWFj
cm9Bc3NlbWJsZXJYODZfNjQgOiBwdWJsaWMgTWFjcm9Bc3NlbWJsZXJYODZDb21tb24gewogICAg
IHVzaW5nIE1hY3JvQXNzZW1ibGVyWDg2Q29tbW9uOjpicmFuY2g4OwogICAgIEp1bXAgYnJhbmNo
OChSZWxhdGlvbmFsQ29uZGl0aW9uIGNvbmQsIEFic29sdXRlQWRkcmVzcyBsZWZ0LCBUcnVzdGVk
SW1tMzIgcmlnaHQpCiAgICAgewotICAgICAgICBUcnVzdGVkSW1tMzIgcmlnaHQ4KHN0YXRpY19j
YXN0PGludDhfdD4ocmlnaHQubV92YWx1ZSkpOwogICAgICAgICBNYWNyb0Fzc2VtYmxlclg4NkNv
bW1vbjo6bW92ZShUcnVzdGVkSW1tUHRyKGxlZnQubV9wdHIpLCBzY3JhdGNoUmVnaXN0ZXIoKSk7
Ci0gICAgICAgIHJldHVybiBNYWNyb0Fzc2VtYmxlclg4NkNvbW1vbjo6YnJhbmNoOChjb25kLCBB
ZGRyZXNzKHNjcmF0Y2hSZWdpc3RlcigpKSwgcmlnaHQ4KTsKKyAgICAgICAgcmV0dXJuIE1hY3Jv
QXNzZW1ibGVyWDg2Q29tbW9uOjpicmFuY2g4KGNvbmQsIEFkZHJlc3Moc2NyYXRjaFJlZ2lzdGVy
KCkpLCByaWdodCk7CiAgICAgfQogICAgIAogICAgIHVzaW5nIE1hY3JvQXNzZW1ibGVyWDg2Q29t
bW9uOjpicmFuY2hUZXN0ODsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>294018</attachid>
            <date>2016-11-06 00:58:40 -0700</date>
            <delta_ts>2016-11-07 11:24:56 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-164432-20161106165434.patch</filename>
            <type>text/plain</type>
            <size>47794</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjA4NDIwCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA2
NDc0N2FhMDI3YzdmZmU0MTM0ZjE1NjhmZDNkYTM4YmNhZGNiNjI2Li4yZGY5Y2IyMWUyMTNlYzZm
OGI4NTY3ZDY0OTBiMGMxMjNlNmYzY2ZlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw3NyBAQAorMjAxNi0xMS0wNiAgWXVzdWtlIFN1enVraSAgPHV0YXRhbmUudGVhQGdtYWls
LmNvbT4KKworICAgICAgICBbSlNDXSBUaGUgaW1wbGVtZW50YXRpb24gb2YgOCBiaXQgb3BlcmF0
aW9uIGluIE1hY3JvQXNzZW1ibGVyIHNob3VsZCBjYXJlIGFib3V0IHVpbnQ4X3QgLyBpbnQ4X3QK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE2NDQzMgor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEV4Y2VwdCBm
b3IgWDg2LCBvdXIgc3VwcG9ydGVkIE1hY3JvQXNzZW1ibGVycyBkbyBub3QgaGF2ZSB0aGUgbmF0
aXZlIDhiaXQgaW5zdHJ1Y3Rpb25zLgorICAgICAgICBJdCBtZWFucyB0aGF0IGFsbCB0aGUgOGJp
dCBpbnN0cnVjdGlvbnMgYXJlIGNvbnZlcnRlZCB0byAzMmJpdCBvcGVyYXRpb25zIGJ5IHVzaW5n
CisgICAgICAgIHNjcmF0Y2ggcmVnaXN0ZXJzLiBGb3IgZXhhbXBsZSwgQVJNNjQgYnJhbmNoOCBp
bXBsZW1lbnRhdGlvbiBpcyB0aGUgZm9sbG93aW5nLgorCisgICAgICAgICAgICBKdW1wIGJyYW5j
aDgoUmVsYXRpb25Db25kaXRpb24gY29yZCwgQWRkcmVzcyBsZWZ0LCBUcnVzdGVkSW1tMzIgcmln
aHQpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgVHJ1c3RlZEltbTMyIHJpZ2h0OChz
dGF0aWNfY2FzdDxpbnQ4X3Q+KHJpZ2h0Lm1fdmFsdWUpKTsKKyAgICAgICAgICAgICAgICBsb2Fk
OChsZWZ0LCBnZXRDYWNoZWRNZW1vcnlUZW1wUmVnaXN0ZXJJREFuZEludmFsaWRhdGUoKSk7Cisg
ICAgICAgICAgICAgICAgcmV0dXJuIGJyYW5jaDMyKGNvbmUsIG1lbW9yeVRlbXBSZWdpc3Rlciwg
cmlnaHQ4KTsKKyAgICAgICAgICAgIH0KKworICAgICAgICBUaGUgcHJvYmxlbSBpcyB0aGF0IHdl
IGV4Y2x1c2l2ZWx5IHVzZSB6ZXJvLWV4dGVuZGVkIGxvYWQgaW5zdHJ1Y3Rpb24gKGxvYWQ4KS4g
RXZlbiBpZgorICAgICAgICBSZWxhdGlvbkNvbmRpdGlvbiBpcyBzaWduZWRuZXNzIGF3YXJlIG9u
ZSwgd2UgZG8gbm90IHBlcmZvcm0gc2lnbmVkIGV4dGVuc2lvbi4KKyAgICAgICAgSXQgbWFrZXMg
c2lnbmVkbmVzcyBhd2FyZSBvcGVyYXRpb25zIHdpdGggbmVnYXRpdmUgbnVtYmVycyBpbmNvcnJl
Y3QhCisgICAgICAgIENvbnNpZGVyIHRoZSB8bGVmdHwgYWRkcmVzcyBob2xkcyBgLTFgIGluIGlu
dDhfdCBmb3JtLiBIb3dldmVyIGxvYWQ4IHdpbGwgbG9hZCBpdCBhcyAyNTUKKyAgICAgICAgaW50
byAzMmJpdCByZWdpc3Rlci4gT24gdGhlIG90aGVyIGhhbmQsIHxyaWdodHwgd2lsbCBiZSBzaWdu
ZWQgZXh0ZW5kZWQuIElmIHlvdSBwYXNzIDAKKyAgICAgICAgYXMgfHJpZ2h0fCBhbmQgTGVzc1Ro
YW4gY29uZGl0aW9uLCB0aGlzIGJyYW5jaDggc2hvdWxkIGp1bXAgYmFzZWQgb24gdGhlIGFuc3dl
ciBvZgorICAgICAgICBgLTEgPCAwYC4gQnV0IHRoZSBjdXJyZW50IE1hY3JvQXNzZW1ibGVyIHBl
cmZvcm1zIGAyNTUgPCAwYCBpbiBpbnQzMl90IGNvbnRleHQgYW5kIHJldHVybnMKKyAgICAgICAg
dGhlIGluY29ycmVjdCByZXN1bHQuCisKKyAgICAgICAgV2Ugc2hvdWxkIGZvbGxvdyB0aGUgeDg2
IG1vZGVsLiBTbyB3ZSBzaG91bGQgc2VsZWN0IHRoZSBhcHByb3ByaWF0ZSBsb2FkIG9wZXJhdGlv
biBhbmQgbWFza2luZworICAgICAgICBvcGVyYXRpb24gYmFzZWQgb24gdGhlIFJlbGF0aW9uQ29u
ZGl0aW9uLiBUaGlzIHBhdGNoIGludHJvZHVjZXMgbWFzazhPbkNvbmRpdGlvbiBhbmQgbG9hZDhP
bkNvbmRpdGlvbi4KKyAgICAgICAgQW5kIHdlIHVzZSB0aGVtIGluIDhiaXQgb3BlcmF0aW9ucyBp
bmNsdWRpbmcgYnJhbmNoOCwgYnJhbmNoVGVzdDgsIGNvbXBhcmU4LCBhbmQgdGVzdDguCisKKyAg
ICAgICAgV2UgaW50ZW50aW9uYWxseSBkbyBub3QgY2hhbmdlIGFueXRoaW5nIG9uIHg4NiBhc3Nl
bWJsZXIgc2luY2UgaXQgaGFzIHRoZSBuYXRpdmUgOGJpdCBvcGVyYXRpb25zLgorICAgICAgICBU
aGlzIHByb2JsZW0gZG9lcyBub3QgbWF0dGVyIHNpbmNlIGl0IGRvZXMgbm90IHBlcmZvcm0gZXh0
ZW5zaW9uLgorCisgICAgICAgICogSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvajoKKyAgICAgICAgKiBhc3NlbWJsZXIvQWJzdHJhY3RNYWNyb0Fzc2VtYmxlci5oOgorICAg
ICAgICAqIGFzc2VtYmxlci9NYWNyb0Fzc2VtYmxlci5oOgorICAgICAgICAoSlNDOjpNYWNyb0Fz
c2VtYmxlcjo6aXNTaWduZWQpOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlcjo6aXNVbnNp
Z25lZCk6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyOjpicmFuY2hUZXN0OCk6CisgICAg
ICAgICogYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyQVJNLmg6CisgICAgICAgIChKU0M6Ok1hY3Jv
QXNzZW1ibGVyQVJNOjpicmFuY2g4KToKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJBUk06
OmJyYW5jaFRlc3Q4KToKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJBUk06OmNvbXBhcmU4
KToKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJBUk06OnRlc3Q4KToKKyAgICAgICAgKiBh
c3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJBUk02NC5oOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2Vt
YmxlckFSTTY0Ojpsb2FkOFNpZ25lZEV4dGVuZFRvMzIpOgorICAgICAgICAoSlNDOjpNYWNyb0Fz
c2VtYmxlckFSTTY0OjpicmFuY2g4KToKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJBUk02
NDo6YnJhbmNoVGVzdDgpOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlckFSTTY0Ojpjb21w
YXJlOCk6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyQVJNNjQ6OnRlc3Q4KToKKyAgICAg
ICAgKiBhc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJBUk12Ny5oOgorICAgICAgICAoSlNDOjpNYWNy
b0Fzc2VtYmxlckFSTXY3OjpicmFuY2g4KToKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJB
Uk12Nzo6YnJhbmNoVGVzdDgpOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlckFSTXY3Ojpj
b21wYXJlOCk6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyQVJNdjc6OnRlc3Q4KToKKyAg
ICAgICAgKiBhc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJIZWxwZXJzLmg6IEFkZGVkLgorICAgICAg
ICAoSlNDOjpNYWNyb0Fzc2VtYmxlckhlbHBlcnM6OmlzU2lnbmVkKToKKyAgICAgICAgKEpTQzo6
TWFjcm9Bc3NlbWJsZXJIZWxwZXJzOjppc1Vuc2lnbmVkKToKKyAgICAgICAgKEpTQzo6TWFjcm9B
c3NlbWJsZXJIZWxwZXJzOjptYXNrOE9uQ29uZGl0aW9uKToKKyAgICAgICAgKEpTQzo6TWFjcm9B
c3NlbWJsZXJIZWxwZXJzOjpsb2FkOE9uQ29uZGl0aW9uKToKKyAgICAgICAgKiBhc3NlbWJsZXIv
TWFjcm9Bc3NlbWJsZXJNSVBTLmg6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyTUlQUzo6
YnJhbmNoOCk6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyTUlQUzo6Y29tcGFyZTgpOgor
ICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlck1JUFM6OmJyYW5jaFRlc3Q4KToKKyAgICAgICAg
KEpTQzo6TWFjcm9Bc3NlbWJsZXJNSVBTOjp0ZXN0OCk6CisgICAgICAgICogYXNzZW1ibGVyL01h
Y3JvQXNzZW1ibGVyU0g0Lmg6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyU0g0OjpicmFu
Y2hUZXN0OCk6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyU0g0OjpicmFuY2g4KToKKyAg
ICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJTSDQ6OmNvbXBhcmU4KToKKyAgICAgICAgKEpTQzo6
TWFjcm9Bc3NlbWJsZXJTSDQ6OnRlc3Q4KToKKyAgICAgICAgKiBhc3NlbWJsZXIvTWFjcm9Bc3Nl
bWJsZXJYODZfNjQuaDoKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJYODZfNjQ6OmJyYW5j
aDgpOgorCiAyMDE2LTExLTA1ICBLb25zdGFudGluIFRva2FyZXYgIDxhbm51bGVuQHlhbmRleC5y
dT4KIAogICAgICAgICBGaXhlZCBjb21waWxhdGlvbiBvZiBMTEludCB3aXRoIE1pbkdXCmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3By
b2plY3QucGJ4cHJvaiBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDYwMGNhMzQxZDM1ODJlZTRmZjA0ZGU0MTI0NjAz
MjVmNDQzMjI4NzMuLmM3M2FjYzViZDY2NmUzOGQwZjhkNWNlMTU2MjNlNjQ1NmU5ZTBlMTcgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ov
cHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29y
ZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0yMTk3LDYgKzIxOTcsNyBAQAogCQlFMzI4
REFFOTFEMzhEMDA1MDAxQTI1MjkgLyogQnl0ZWNvZGVHcmFwaC5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTNEMjY0MjgxRDM4QzA0MjAwMEJFMTc0IC8q
IEJ5dGVjb2RlR3JhcGguaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCAp
OyB9OyB9OwogCQlFMzI4REFFQTFEMzhEMDA1MDAxQTI1MjkgLyogQnl0ZWNvZGVSZXdyaXRlci5j
cHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFM0QyNjQy
OTFEMzhDMDQyMDAwQkUxNzQgLyogQnl0ZWNvZGVSZXdyaXRlci5jcHAgKi87IH07CiAJCUUzMjhE
QUVCMUQzOEQwMDUwMDFBMjUyOSAvKiBCeXRlY29kZVJld3JpdGVyLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFM0QyNjQyQTFEMzhDMDQyMDAwQkUxNzQg
LyogQnl0ZWNvZGVSZXdyaXRlci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZh
dGUsICk7IH07IH07CisJCUUzMkFCMjQ0MURDRDc1RjQwMEQ3NTMzQSAvKiBNYWNyb0Fzc2VtYmxl
ckhlbHBlcnMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IEUzODBBNzZCMURDRDcxOTUwMDBGODlFNiAvKiBNYWNyb0Fzc2VtYmxlckhlbHBlcnMuaCAqLzsg
c2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlFMzJGRjFFQTFE
QTc1NzFDMDBBOEJGMjEgLyogRE9NSklUU2xvd1BhdGhDYWxscy5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTNDQjFFMjQxREE3NTQwQTAwRkExRTU2IC8q
IERPTUpJVFNsb3dQYXRoQ2FsbHMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2
YXRlLCApOyB9OyB9OwogCQlFMzM2MzdBNTFCNjMyMjAyMDBFRTA4NDAgLyogUmVmbGVjdE9iamVj
dC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMzM2
MzdBMzFCNjMyMjAyMDBFRTA4NDAgLyogUmVmbGVjdE9iamVjdC5jcHAgKi87IH07CiAJCUUzMzYz
N0E2MUI2MzIyMDIwMEVFMDg0MCAvKiBSZWZsZWN0T2JqZWN0LmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMzM2MzdBNDFCNjMyMjAyMDBFRTA4NDAgLyog
UmVmbGVjdE9iamVjdC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7
IH07IH07CkBAIC00NjY1LDYgKzQ2NjYsNyBAQAogCQlFMzc5NEU3NDFCNzdFQjk3MDA1NTQzQUUg
LyogTW9kdWxlQW5hbHl6ZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTW9k
dWxlQW5hbHl6ZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTM3QUQ4M0ExREE0
OTI4MDAwRjNENDEyIC8qIERPTUpJVFBhdGNocG9pbnRQYXJhbXMuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gRE9NSklUUGF0Y2hwb2ludFBhcmFtcy5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQlFMzdBRDgzQjFEQTQ5MjgwMDBGM0Q0MTIgLyogRE9NSklUUmVnLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IERPTUpJVFJlZy5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OworCQlFMzgwQTc2QjFEQ0Q3MTk1MDAwRjg5RTYgLyogTWFjcm9Bc3Nl
bWJsZXJIZWxwZXJzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE1hY3JvQXNz
ZW1ibGVySGVscGVycy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFMzk2M0NFQzFC
NzNGNzUwMDBFQjRDRTUgLyogTm9kZXNBbmFseXplTW9kdWxlLmNwcCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLmNwcDsgcGF0aCA9IE5vZGVzQW5hbHl6ZU1vZHVsZS5jcHA7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCUUzOUQ5RDg0MUQzOTAwMDYwMDY2NzI4MiAvKiBJbnRlcnByZXRl
cklubGluZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSW50ZXJwcmV0ZXJJ
bmxpbmVzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUUzOURBNEE0MUI3RThCN0Mw
MDg0RjMzQSAvKiBKU01vZHVsZVJlY29yZC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5j
cHA7IHBhdGggPSBKU01vZHVsZVJlY29yZC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CkBAIC03MDY0LDYgKzcwNjYsNyBAQAogCQkJCTg2QUREMTQ0MEZEREVBOTgwMDA2RUVDMiAvKiBN
YWNyb0Fzc2VtYmxlckFSTXY3LmggKi8sCiAJCQkJMEY2REI3RUIxRDYxN0QwRjAwQ0RCRjhFIC8q
IE1hY3JvQXNzZW1ibGVyQ29kZVJlZi5jcHAgKi8sCiAJCQkJODYzQjIzREYwRkM2MEU2MjAwNzAz
QUE0IC8qIE1hY3JvQXNzZW1ibGVyQ29kZVJlZi5oICovLAorCQkJCUUzODBBNzZCMURDRDcxOTUw
MDBGODlFNiAvKiBNYWNyb0Fzc2VtYmxlckhlbHBlcnMuaCAqLywKIAkJCQk4NkM1NjhERTExQTIx
M0VFMDAwN0Y3RjAgLyogTWFjcm9Bc3NlbWJsZXJNSVBTLmggKi8sCiAJCQkJRkU2OEM2MzUxQjkw
REREOTAwNDJCQ0IzIC8qIE1hY3JvQXNzZW1ibGVyUHJpbnRlci5jcHAgKi8sCiAJCQkJRkU2OEM2
MzYxQjkwREREOTAwNDJCQ0IzIC8qIE1hY3JvQXNzZW1ibGVyUHJpbnRlci5oICovLApAQCAtODA0
OCw2ICs4MDUxLDcgQEAKIAkJCQkwRjQwRTRBODFDNDk3Rjc0MDBBNTc3RkEgLyogQWlyT3Bjb2Rl
R2VuZXJhdGVkLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjIzNUJFRTE3MTc4RTczMDA2OTBDN0Yg
LyogREZHT1NSRXhpdFByZXBhcmF0aW9uLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjYyMzc5ODFB
RTQ1Q0E3MDBENDAyRUEgLyogREZHUGhhbnRvbUluc2VydGlvblBoYXNlLmggaW4gSGVhZGVycyAq
LywKKwkJCQlFMzJBQjI0NDFEQ0Q3NUY0MDBENzUzM0EgLyogTWFjcm9Bc3NlbWJsZXJIZWxwZXJz
LmggaW4gSGVhZGVycyAqLywKIAkJCQkwRkZGQzk1QzE0RUY5MEFGMDBDNzI1MzIgLyogREZHUGhh
c2UuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGMkI5Q0VCMTlEMEJBN0QwMEIxRDFCNSAvKiBERkdQ
aGlDaGlsZHJlbi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTc4QTk3N0IxNzk3MzhCODAwOURGNzQ0
IC8qIERGR1BsYW4uaCBpbiBIZWFkZXJzICovLApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2Fzc2VtYmxlci9BYnN0cmFjdE1hY3JvQXNzZW1ibGVyLmggYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYXNzZW1ibGVyL0Fic3RyYWN0TWFjcm9Bc3NlbWJsZXIuaAppbmRleCA2ZjU1ZDdm
ZTAwNTcxMWUxOGEwOTEwYTNiYjZjYzY3MGJlMmVjMGUwLi4zN2IyMWQ4ZDdiODgyNzUzOWI2OTQ5
MGFjNjY2ZWVhMzM2ZjViNjk4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNz
ZW1ibGVyL0Fic3RyYWN0TWFjcm9Bc3NlbWJsZXIuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYXNzZW1ibGVyL0Fic3RyYWN0TWFjcm9Bc3NlbWJsZXIuaApAQCAtMzEsNiArMzEsNyBAQAog
I2luY2x1ZGUgIkNQVS5oIgogI2luY2x1ZGUgIkNvZGVMb2NhdGlvbi5oIgogI2luY2x1ZGUgIk1h
Y3JvQXNzZW1ibGVyQ29kZVJlZi5oIgorI2luY2x1ZGUgIk1hY3JvQXNzZW1ibGVySGVscGVycy5o
IgogI2luY2x1ZGUgIk9wdGlvbnMuaCIKICNpbmNsdWRlIDx3dGYvQ3J5cHRvZ3JhcGhpY2FsbHlS
YW5kb21OdW1iZXIuaD4KICNpbmNsdWRlIDx3dGYvTm9uY29weWFibGUuaD4KZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXIuaCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXIuaAppbmRleCBiNDk4MDg0
NTFiNjVmYTUyZmY5MWE4NmE4Nzg2OTgzNGZiNTYyNGIzLi41MjZjYzgyM2EwNTE5ZDViYmJlZTlh
NTUyYzExOGFhMjYzNzgxOWYxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNz
ZW1ibGVyL01hY3JvQXNzZW1ibGVyLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2Vt
Ymxlci9NYWNyb0Fzc2VtYmxlci5oCkBAIC02NSw2ICs2NSw4IEBAIHR5cGVkZWYgTWFjcm9Bc3Nl
bWJsZXJTSDQgTWFjcm9Bc3NlbWJsZXJCYXNlOwogI2Vycm9yICJUaGUgTWFjcm9Bc3NlbWJsZXIg
aXMgbm90IHN1cHBvcnRlZCBvbiB0aGlzIHBsYXRmb3JtLiIKICNlbmRpZgogCisjaW5jbHVkZSAi
TWFjcm9Bc3NlbWJsZXJIZWxwZXJzLmgiCisKIG5hbWVzcGFjZSBKU0MgewogCiBjbGFzcyBNYWNy
b0Fzc2VtYmxlciA6IHB1YmxpYyBNYWNyb0Fzc2VtYmxlckJhc2UgewpAQCAtMTQwLDcgKzE0Miw2
IEBAIGNsYXNzIE1hY3JvQXNzZW1ibGVyIDogcHVibGljIE1hY3JvQXNzZW1ibGVyQmFzZSB7CiAg
ICAgc3RhdGljIGNvbnN0IGRvdWJsZSB0d29Ub1RoZTMyOyAvLyBUaGlzIGlzIHN1cGVyIHVzZWZ1
bCBmb3Igc29tZSBkb3VibGUgY29kZS4KIAogICAgIC8vIFV0aWxpdGllcyB1c2VkIGJ5IHRoZSBE
RkcgSklULgotI2lmIEVOQUJMRShERkdfSklUKQogICAgIHVzaW5nIE1hY3JvQXNzZW1ibGVyQmFz
ZTo6aW52ZXJ0OwogICAgIAogICAgIHN0YXRpYyBEb3VibGVDb25kaXRpb24gaW52ZXJ0KERvdWJs
ZUNvbmRpdGlvbiBjb25kKQpAQCAtMjMzLDQ0ICsyMzQsMjUgQEAgY2xhc3MgTWFjcm9Bc3NlbWJs
ZXIgOiBwdWJsaWMgTWFjcm9Bc3NlbWJsZXJCYXNlIHsKICAgICAgICAgcmV0dXJuIEVxdWFsOwog
ICAgIH0KIAotICAgIC8vIFRydWUgaWYgdGhpczoKLSAgICAvLyAgICAgYnJhbmNoOChjb25kLCB2
YWx1ZSwgdmFsdWUpCi0gICAgLy8gSXMgdGhlIHNhbWUgYXMgdGhpczoKLSAgICAvLyAgICAgYnJh
bmNoMzIoY29uZCwgc2lnbkV4dDgodmFsdWUpLCBzaWduRXh0OCh2YWx1ZSkpCiAgICAgc3RhdGlj
IGJvb2wgaXNTaWduZWQoUmVsYXRpb25hbENvbmRpdGlvbiBjb25kKQogICAgIHsKLSAgICAgICAg
c3dpdGNoIChjb25kKSB7Ci0gICAgICAgIGNhc2UgRXF1YWw6Ci0gICAgICAgIGNhc2UgTm90RXF1
YWw6Ci0gICAgICAgIGNhc2UgR3JlYXRlclRoYW46Ci0gICAgICAgIGNhc2UgR3JlYXRlclRoYW5P
ckVxdWFsOgotICAgICAgICBjYXNlIExlc3NUaGFuOgotICAgICAgICBjYXNlIExlc3NUaGFuT3JF
cXVhbDoKLSAgICAgICAgICAgIHJldHVybiB0cnVlOwotICAgICAgICBkZWZhdWx0OgotICAgICAg
ICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICB9CisgICAgICAgIHJldHVybiBNYWNyb0Fzc2Vt
YmxlckhlbHBlcnM6OmlzU2lnbmVkPE1hY3JvQXNzZW1ibGVyPihjb25kKTsKICAgICB9CiAKLSAg
ICAvLyBUcnVlIGlmIHRoaXM6Ci0gICAgLy8gICAgIGJyYW5jaDgoY29uZCwgdmFsdWUsIHZhbHVl
KQotICAgIC8vIElzIHRoZSBzYW1lIGFzIHRoaXM6Ci0gICAgLy8gICAgIGJyYW5jaDMyKGNvbmQs
IHplcm9FeHQ4KHZhbHVlKSwgemVyb0V4dDgodmFsdWUpKQogICAgIHN0YXRpYyBib29sIGlzVW5z
aWduZWQoUmVsYXRpb25hbENvbmRpdGlvbiBjb25kKQogICAgIHsKLSAgICAgICAgc3dpdGNoIChj
b25kKSB7Ci0gICAgICAgIGNhc2UgRXF1YWw6Ci0gICAgICAgIGNhc2UgTm90RXF1YWw6Ci0gICAg
ICAgIGNhc2UgQWJvdmU6Ci0gICAgICAgIGNhc2UgQWJvdmVPckVxdWFsOgotICAgICAgICBjYXNl
IEJlbG93OgotICAgICAgICBjYXNlIEJlbG93T3JFcXVhbDoKLSAgICAgICAgICAgIHJldHVybiB0
cnVlOwotICAgICAgICBkZWZhdWx0OgotICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAg
ICB9CisgICAgICAgIHJldHVybiBNYWNyb0Fzc2VtYmxlckhlbHBlcnM6OmlzVW5zaWduZWQ8TWFj
cm9Bc3NlbWJsZXI+KGNvbmQpOworICAgIH0KKworICAgIHN0YXRpYyBib29sIGlzU2lnbmVkKFJl
c3VsdENvbmRpdGlvbiBjb25kKQorICAgIHsKKyAgICAgICAgcmV0dXJuIE1hY3JvQXNzZW1ibGVy
SGVscGVyczo6aXNTaWduZWQ8TWFjcm9Bc3NlbWJsZXI+KGNvbmQpOworICAgIH0KKworICAgIHN0
YXRpYyBib29sIGlzVW5zaWduZWQoUmVzdWx0Q29uZGl0aW9uIGNvbmQpCisgICAgeworICAgICAg
ICByZXR1cm4gTWFjcm9Bc3NlbWJsZXJIZWxwZXJzOjppc1Vuc2lnbmVkPE1hY3JvQXNzZW1ibGVy
Pihjb25kKTsKICAgICB9Ci0jZW5kaWYKIAogICAgIC8vIFBsYXRmb3JtIGFnbm9zdGljIGNvbnZl
bmllbmNlIGZ1bmN0aW9ucywKICAgICAvLyBkZXNjcmliZWQgaW4gdGVybXMgb2Ygb3RoZXIgbWFj
cm8gYXNzZW1ibHkgbWV0aG9kcy4KQEAgLTc5Nyw4ICs3NzksNyBAQCBjbGFzcyBNYWNyb0Fzc2Vt
YmxlciA6IHB1YmxpYyBNYWNyb0Fzc2VtYmxlckJhc2UgewogICAgIHVzaW5nIE1hY3JvQXNzZW1i
bGVyQmFzZTo6YnJhbmNoVGVzdDg7CiAgICAgSnVtcCBicmFuY2hUZXN0OChSZXN1bHRDb25kaXRp
b24gY29uZCwgRXh0ZW5kZWRBZGRyZXNzIGFkZHJlc3MsIFRydXN0ZWRJbW0zMiBtYXNrID0gVHJ1
c3RlZEltbTMyKC0xKSkKICAgICB7Ci0gICAgICAgIFRydXN0ZWRJbW0zMiBtYXNrOChzdGF0aWNf
Y2FzdDxpbnQ4X3Q+KG1hc2subV92YWx1ZSkpOwotICAgICAgICByZXR1cm4gTWFjcm9Bc3NlbWJs
ZXJCYXNlOjpicmFuY2hUZXN0OChjb25kLCBBZGRyZXNzKGFkZHJlc3MuYmFzZSwgYWRkcmVzcy5v
ZmZzZXQpLCBtYXNrOCk7CisgICAgICAgIHJldHVybiBNYWNyb0Fzc2VtYmxlckJhc2U6OmJyYW5j
aFRlc3Q4KGNvbmQsIEFkZHJlc3MoYWRkcmVzcy5iYXNlLCBhZGRyZXNzLm9mZnNldCksIG1hc2sp
OwogICAgIH0KIAogI2Vsc2UgLy8gIUNQVShYODZfNjQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyQVJNLmggYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyQVJNLmgKaW5kZXggZjExMThkODM0NjFk
YzAwYWMyNzlkOWEwNTUyNWEwZjk3NWM5MjJlNC4uODZhMmYyYzI0YTUwYWFmZTkzNzQyZTY4YzUx
MDJjODczMWFlMzExNiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxl
ci9NYWNyb0Fzc2VtYmxlckFSTS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJs
ZXIvTWFjcm9Bc3NlbWJsZXJBUk0uaApAQCAtNjMyLDIzICs2MzIsMjMgQEAgY2xhc3MgTWFjcm9B
c3NlbWJsZXJBUk0gOiBwdWJsaWMgQWJzdHJhY3RNYWNyb0Fzc2VtYmxlcjxBUk1Bc3NlbWJsZXIs
IE1hY3JvQXNzZW0KIAogICAgIEp1bXAgYnJhbmNoOChSZWxhdGlvbmFsQ29uZGl0aW9uIGNvbmQs
IEFkZHJlc3MgbGVmdCwgVHJ1c3RlZEltbTMyIHJpZ2h0KQogICAgIHsKLSAgICAgICAgVHJ1c3Rl
ZEltbTMyIHJpZ2h0OChzdGF0aWNfY2FzdDxpbnQ4X3Q+KHJpZ2h0Lm1fdmFsdWUpKTsKLSAgICAg
ICAgbG9hZDgobGVmdCwgQVJNUmVnaXN0ZXJzOjpTMSk7CisgICAgICAgIFRydXN0ZWRJbW0zMiBy
aWdodDggPSBNYWNyb0Fzc2VtYmxlckhlbHBlcnM6Om1hc2s4T25Db25kaXRpb24oKnRoaXMsIGNv
bmQsIHJpZ2h0KTsKKyAgICAgICAgTWFjcm9Bc3NlbWJsZXJIZWxwZXJzOjpsb2FkOE9uQ29uZGl0
aW9uKCp0aGlzLCBjb25kLCBsZWZ0LCBBUk1SZWdpc3RlcnM6OlMxKTsKICAgICAgICAgcmV0dXJu
IGJyYW5jaDMyKGNvbmQsIEFSTVJlZ2lzdGVyczo6UzEsIHJpZ2h0OCk7CiAgICAgfQogCiAgICAg
SnVtcCBicmFuY2g4KFJlbGF0aW9uYWxDb25kaXRpb24gY29uZCwgQmFzZUluZGV4IGxlZnQsIFRy
dXN0ZWRJbW0zMiByaWdodCkKICAgICB7Ci0gICAgICAgIFRydXN0ZWRJbW0zMiByaWdodDgoc3Rh
dGljX2Nhc3Q8aW50OF90PihyaWdodC5tX3ZhbHVlKSk7Ci0gICAgICAgIGxvYWQ4KGxlZnQsIEFS
TVJlZ2lzdGVyczo6UzEpOworICAgICAgICBUcnVzdGVkSW1tMzIgcmlnaHQ4ID0gTWFjcm9Bc3Nl
bWJsZXJIZWxwZXJzOjptYXNrOE9uQ29uZGl0aW9uKCp0aGlzLCBjb25kLCByaWdodCk7CisgICAg
ICAgIE1hY3JvQXNzZW1ibGVySGVscGVyczo6bG9hZDhPbkNvbmRpdGlvbigqdGhpcywgY29uZCwg
bGVmdCwgQVJNUmVnaXN0ZXJzOjpTMSk7CiAgICAgICAgIHJldHVybiBicmFuY2gzMihjb25kLCBB
Uk1SZWdpc3RlcnM6OlMxLCByaWdodDgpOwogICAgIH0KIAogICAgIEp1bXAgYnJhbmNoOChSZWxh
dGlvbmFsQ29uZGl0aW9uIGNvbmQsIEFic29sdXRlQWRkcmVzcyBsZWZ0LCBUcnVzdGVkSW1tMzIg
cmlnaHQpCiAgICAgewotICAgICAgICBUcnVzdGVkSW1tMzIgcmlnaHQ4KHN0YXRpY19jYXN0PGlu
dDhfdD4ocmlnaHQubV92YWx1ZSkpOworICAgICAgICBUcnVzdGVkSW1tMzIgcmlnaHQ4ID0gTWFj
cm9Bc3NlbWJsZXJIZWxwZXJzOjptYXNrOE9uQ29uZGl0aW9uKCp0aGlzLCBjb25kLCByaWdodCk7
CiAgICAgICAgIG1vdmUoVHJ1c3RlZEltbVB0cihsZWZ0Lm1fcHRyKSwgQVJNUmVnaXN0ZXJzOjpT
MSk7Ci0gICAgICAgIGxvYWQ4KEFkZHJlc3MoQVJNUmVnaXN0ZXJzOjpTMSksIEFSTVJlZ2lzdGVy
czo6UzEpOworICAgICAgICBNYWNyb0Fzc2VtYmxlckhlbHBlcnM6OmxvYWQ4T25Db25kaXRpb24o
KnRoaXMsIGNvbmQsIEFkZHJlc3MoQVJNUmVnaXN0ZXJzOjpTMSksIEFSTVJlZ2lzdGVyczo6UzEp
OwogICAgICAgICByZXR1cm4gYnJhbmNoMzIoY29uZCwgQVJNUmVnaXN0ZXJzOjpTMSwgcmlnaHQ4
KTsKICAgICB9CiAKQEAgLTcwMiwyMyArNzAyLDIzIEBAIGNsYXNzIE1hY3JvQXNzZW1ibGVyQVJN
IDogcHVibGljIEFic3RyYWN0TWFjcm9Bc3NlbWJsZXI8QVJNQXNzZW1ibGVyLCBNYWNyb0Fzc2Vt
CiAKICAgICBKdW1wIGJyYW5jaFRlc3Q4KFJlc3VsdENvbmRpdGlvbiBjb25kLCBBZGRyZXNzIGFk
ZHJlc3MsIFRydXN0ZWRJbW0zMiBtYXNrID0gVHJ1c3RlZEltbTMyKC0xKSkKICAgICB7Ci0gICAg
ICAgIFRydXN0ZWRJbW0zMiBtYXNrOChzdGF0aWNfY2FzdDxpbnQ4X3Q+KG1hc2subV92YWx1ZSkp
OwotICAgICAgICBsb2FkOChhZGRyZXNzLCBBUk1SZWdpc3RlcnM6OlMxKTsKKyAgICAgICAgVHJ1
c3RlZEltbTMyIG1hc2s4ID0gTWFjcm9Bc3NlbWJsZXJIZWxwZXJzOjptYXNrOE9uQ29uZGl0aW9u
KCp0aGlzLCBjb25kLCBtYXNrKTsKKyAgICAgICAgTWFjcm9Bc3NlbWJsZXJIZWxwZXJzOjpsb2Fk
OE9uQ29uZGl0aW9uKCp0aGlzLCBjb25kLCBhZGRyZXNzLCBBUk1SZWdpc3RlcnM6OlMxKTsKICAg
ICAgICAgcmV0dXJuIGJyYW5jaFRlc3QzMihjb25kLCBBUk1SZWdpc3RlcnM6OlMxLCBtYXNrOCk7
CiAgICAgfQogCiAgICAgSnVtcCBicmFuY2hUZXN0OChSZXN1bHRDb25kaXRpb24gY29uZCwgQmFz
ZUluZGV4IGFkZHJlc3MsIFRydXN0ZWRJbW0zMiBtYXNrID0gVHJ1c3RlZEltbTMyKC0xKSkKICAg
ICB7Ci0gICAgICAgIFRydXN0ZWRJbW0zMiBtYXNrOChzdGF0aWNfY2FzdDxpbnQ4X3Q+KG1hc2su
bV92YWx1ZSkpOwotICAgICAgICBsb2FkOChhZGRyZXNzLCBBUk1SZWdpc3RlcnM6OlMxKTsKKyAg
ICAgICAgVHJ1c3RlZEltbTMyIG1hc2s4ID0gTWFjcm9Bc3NlbWJsZXJIZWxwZXJzOjptYXNrOE9u
Q29uZGl0aW9uKCp0aGlzLCBjb25kLCBtYXNrKTsKKyAgICAgICAgTWFjcm9Bc3NlbWJsZXJIZWxw
ZXJzOjpsb2FkOE9uQ29uZGl0aW9uKCp0aGlzLCBjb25kLCBhZGRyZXNzLCBBUk1SZWdpc3RlcnM6
OlMxKTsKICAgICAgICAgcmV0dXJuIGJyYW5jaFRlc3QzMihjb25kLCBBUk1SZWdpc3RlcnM6OlMx
LCBtYXNrOCk7CiAgICAgfQogCiAgICAgSnVtcCBicmFuY2hUZXN0OChSZXN1bHRDb25kaXRpb24g
Y29uZCwgQWJzb2x1dGVBZGRyZXNzIGFkZHJlc3MsIFRydXN0ZWRJbW0zMiBtYXNrID0gVHJ1c3Rl
ZEltbTMyKC0xKSkKICAgICB7Ci0gICAgICAgIFRydXN0ZWRJbW0zMiBtYXNrOChzdGF0aWNfY2Fz
dDxpbnQ4X3Q+KG1hc2subV92YWx1ZSkpOworICAgICAgICBUcnVzdGVkSW1tMzIgbWFzazggPSBN
YWNyb0Fzc2VtYmxlckhlbHBlcnM6Om1hc2s4T25Db25kaXRpb24oKnRoaXMsIGNvbmQsIG1hc2sp
OwogICAgICAgICBtb3ZlKFRydXN0ZWRJbW1QdHIoYWRkcmVzcy5tX3B0ciksIEFSTVJlZ2lzdGVy
czo6UzEpOwotICAgICAgICBsb2FkOChBZGRyZXNzKEFSTVJlZ2lzdGVyczo6UzEpLCBBUk1SZWdp
c3RlcnM6OlMxKTsKKyAgICAgICAgTWFjcm9Bc3NlbWJsZXJIZWxwZXJzOjpsb2FkOE9uQ29uZGl0
aW9uKCp0aGlzLCBjb25kLCBBZGRyZXNzKEFSTVJlZ2lzdGVyczo6UzEpLCBBUk1SZWdpc3RlcnM6
OlMxKTsKICAgICAgICAgcmV0dXJuIGJyYW5jaFRlc3QzMihjb25kLCBBUk1SZWdpc3RlcnM6OlMx
LCBtYXNrOCk7CiAgICAgfQogCkBAIC05ODUsOCArOTg1LDggQEAgY2xhc3MgTWFjcm9Bc3NlbWJs
ZXJBUk0gOiBwdWJsaWMgQWJzdHJhY3RNYWNyb0Fzc2VtYmxlcjxBUk1Bc3NlbWJsZXIsIE1hY3Jv
QXNzZW0KIAogICAgIHZvaWQgY29tcGFyZTgoUmVsYXRpb25hbENvbmRpdGlvbiBjb25kLCBBZGRy
ZXNzIGxlZnQsIFRydXN0ZWRJbW0zMiByaWdodCwgUmVnaXN0ZXJJRCBkZXN0KQogICAgIHsKLSAg
ICAgICAgVHJ1c3RlZEltbTMyIHJpZ2h0OChzdGF0aWNfY2FzdDxpbnQ4X3Q+KHJpZ2h0Lm1fdmFs
dWUpKTsKLSAgICAgICAgbG9hZDgobGVmdCwgQVJNUmVnaXN0ZXJzOjpTMSk7CisgICAgICAgIFRy
dXN0ZWRJbW0zMiByaWdodDggPSBNYWNyb0Fzc2VtYmxlckhlbHBlcnM6Om1hc2s4T25Db25kaXRp
b24oKnRoaXMsIGNvbmQsIHJpZ2h0KTsKKyAgICAgICAgTWFjcm9Bc3NlbWJsZXJIZWxwZXJzOjps
b2FkOE9uQ29uZGl0aW9uKCp0aGlzLCBjb25kLCBsZWZ0LCBBUk1SZWdpc3RlcnM6OlMxKTsKICAg
ICAgICAgY29tcGFyZTMyKGNvbmQsIEFSTVJlZ2lzdGVyczo6UzEsIHJpZ2h0OCwgZGVzdCk7CiAg
ICAgfQogCkBAIC0xMDA4LDggKzEwMDgsOCBAQCBjbGFzcyBNYWNyb0Fzc2VtYmxlckFSTSA6IHB1
YmxpYyBBYnN0cmFjdE1hY3JvQXNzZW1ibGVyPEFSTUFzc2VtYmxlciwgTWFjcm9Bc3NlbQogCiAg
ICAgdm9pZCB0ZXN0OChSZXN1bHRDb25kaXRpb24gY29uZCwgQWRkcmVzcyBhZGRyZXNzLCBUcnVz
dGVkSW1tMzIgbWFzaywgUmVnaXN0ZXJJRCBkZXN0KQogICAgIHsKLSAgICAgICAgVHJ1c3RlZElt
bTMyIG1hc2s4KHN0YXRpY19jYXN0PGludDhfdD4obWFzay5tX3ZhbHVlKSk7Ci0gICAgICAgIGxv
YWQ4KGFkZHJlc3MsIEFSTVJlZ2lzdGVyczo6UzEpOworICAgICAgICBUcnVzdGVkSW1tMzIgbWFz
azggPSBNYWNyb0Fzc2VtYmxlckhlbHBlcnM6Om1hc2s4T25Db25kaXRpb24oKnRoaXMsIGNvbmQs
IG1hc2spOworICAgICAgICBNYWNyb0Fzc2VtYmxlckhlbHBlcnM6OmxvYWQ4T25Db25kaXRpb24o
KnRoaXMsIGNvbmQsIGFkZHJlc3MsIEFSTVJlZ2lzdGVyczo6UzEpOwogICAgICAgICB0ZXN0MzIo
Y29uZCwgQVJNUmVnaXN0ZXJzOjpTMSwgbWFzazgsIGRlc3QpOwogICAgIH0KIApkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlckFSTTY0Lmgg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyQVJNNjQuaApp
bmRleCA1ZmRjNzI5ZWVlNjNlYzA0YzA2MTljNjdmNTFjYmQyMmEzZTY5ZmI2Li45NzkwNjFhMTI5
NGJiYmNmZTAxMDBhYmJmNzNhN2ZkNzVlNTZmYjM0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyQVJNNjQuaAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyQVJNNjQuaApAQCAtMTIwMCw2ICsx
MjAwLDE0IEBAIGNsYXNzIE1hY3JvQXNzZW1ibGVyQVJNNjQgOiBwdWJsaWMgQWJzdHJhY3RNYWNy
b0Fzc2VtYmxlcjxBUk02NEFzc2VtYmxlciwgTWFjcm9BCiAgICAgICAgIG1fYXNzZW1ibGVyLmxk
cnNiPDMyPihkZXN0LCBhZGRyZXNzLmJhc2UsIG1lbW9yeVRlbXBSZWdpc3Rlcik7CiAgICAgfQog
CisgICAgdm9pZCBsb2FkOFNpZ25lZEV4dGVuZFRvMzIoY29uc3Qgdm9pZCogYWRkcmVzcywgUmVn
aXN0ZXJJRCBkZXN0KQorICAgIHsKKyAgICAgICAgbW92ZVRvQ2FjaGVkUmVnKFRydXN0ZWRJbW1Q
dHIoYWRkcmVzcyksIGNhY2hlZE1lbW9yeVRlbXBSZWdpc3RlcigpKTsKKyAgICAgICAgbV9hc3Nl
bWJsZXIubGRyc2I8MzI+KGRlc3QsIG1lbW9yeVRlbXBSZWdpc3RlciwgQVJNNjRSZWdpc3RlcnM6
OnpyKTsKKyAgICAgICAgaWYgKGRlc3QgPT0gbWVtb3J5VGVtcFJlZ2lzdGVyKQorICAgICAgICAg
ICAgY2FjaGVkTWVtb3J5VGVtcFJlZ2lzdGVyKCkuaW52YWxpZGF0ZSgpOworICAgIH0KKwogICAg
IHZvaWQgemVyb0V4dGVuZDhUbzMyKFJlZ2lzdGVySUQgc3JjLCBSZWdpc3RlcklEIGRlc3QpCiAg
ICAgewogICAgICAgICBtX2Fzc2VtYmxlci51eHRiPDMyPihkZXN0LCBzcmMpOwpAQCAtMjQyNCwy
MiArMjQzMiwyMiBAQCBjbGFzcyBNYWNyb0Fzc2VtYmxlckFSTTY0IDogcHVibGljIEFic3RyYWN0
TWFjcm9Bc3NlbWJsZXI8QVJNNjRBc3NlbWJsZXIsIE1hY3JvQQogCiAgICAgSnVtcCBicmFuY2g4
KFJlbGF0aW9uYWxDb25kaXRpb24gY29uZCwgQWRkcmVzcyBsZWZ0LCBUcnVzdGVkSW1tMzIgcmln
aHQpCiAgICAgewotICAgICAgICBUcnVzdGVkSW1tMzIgcmlnaHQ4KHN0YXRpY19jYXN0PGludDhf
dD4ocmlnaHQubV92YWx1ZSkpOwotICAgICAgICBsb2FkOChsZWZ0LCBnZXRDYWNoZWRNZW1vcnlU
ZW1wUmVnaXN0ZXJJREFuZEludmFsaWRhdGUoKSk7CisgICAgICAgIFRydXN0ZWRJbW0zMiByaWdo
dDggPSBNYWNyb0Fzc2VtYmxlckhlbHBlcnM6Om1hc2s4T25Db25kaXRpb24oKnRoaXMsIGNvbmQs
IHJpZ2h0KTsKKyAgICAgICAgTWFjcm9Bc3NlbWJsZXJIZWxwZXJzOjpsb2FkOE9uQ29uZGl0aW9u
KCp0aGlzLCBjb25kLCBsZWZ0LCBnZXRDYWNoZWRNZW1vcnlUZW1wUmVnaXN0ZXJJREFuZEludmFs
aWRhdGUoKSk7CiAgICAgICAgIHJldHVybiBicmFuY2gzMihjb25kLCBtZW1vcnlUZW1wUmVnaXN0
ZXIsIHJpZ2h0OCk7CiAgICAgfQogCiAgICAgSnVtcCBicmFuY2g4KFJlbGF0aW9uYWxDb25kaXRp
b24gY29uZCwgQmFzZUluZGV4IGxlZnQsIFRydXN0ZWRJbW0zMiByaWdodCkKICAgICB7Ci0gICAg
ICAgIFRydXN0ZWRJbW0zMiByaWdodDgoc3RhdGljX2Nhc3Q8aW50OF90PihyaWdodC5tX3ZhbHVl
KSk7Ci0gICAgICAgIGxvYWQ4KGxlZnQsIGdldENhY2hlZE1lbW9yeVRlbXBSZWdpc3RlcklEQW5k
SW52YWxpZGF0ZSgpKTsKKyAgICAgICAgVHJ1c3RlZEltbTMyIHJpZ2h0OCA9IE1hY3JvQXNzZW1i
bGVySGVscGVyczo6bWFzazhPbkNvbmRpdGlvbigqdGhpcywgY29uZCwgcmlnaHQpOworICAgICAg
ICBNYWNyb0Fzc2VtYmxlckhlbHBlcnM6OmxvYWQ4T25Db25kaXRpb24oKnRoaXMsIGNvbmQsIGxl
ZnQsIGdldENhY2hlZE1lbW9yeVRlbXBSZWdpc3RlcklEQW5kSW52YWxpZGF0ZSgpKTsKICAgICAg
ICAgcmV0dXJuIGJyYW5jaDMyKGNvbmQsIG1lbW9yeVRlbXBSZWdpc3RlciwgcmlnaHQ4KTsKICAg
ICB9CiAgICAgCiAgICAgSnVtcCBicmFuY2g4KFJlbGF0aW9uYWxDb25kaXRpb24gY29uZCwgQWJz
b2x1dGVBZGRyZXNzIGxlZnQsIFRydXN0ZWRJbW0zMiByaWdodCkKICAgICB7Ci0gICAgICAgIFRy
dXN0ZWRJbW0zMiByaWdodDgoc3RhdGljX2Nhc3Q8aW50OF90PihyaWdodC5tX3ZhbHVlKSk7Ci0g
ICAgICAgIGxvYWQ4KGxlZnQubV9wdHIsIGdldENhY2hlZE1lbW9yeVRlbXBSZWdpc3RlcklEQW5k
SW52YWxpZGF0ZSgpKTsKKyAgICAgICAgVHJ1c3RlZEltbTMyIHJpZ2h0OCA9IE1hY3JvQXNzZW1i
bGVySGVscGVyczo6bWFzazhPbkNvbmRpdGlvbigqdGhpcywgY29uZCwgcmlnaHQpOworICAgICAg
ICBNYWNyb0Fzc2VtYmxlckhlbHBlcnM6OmxvYWQ4T25Db25kaXRpb24oKnRoaXMsIGNvbmQsIGxl
ZnQubV9wdHIsIGdldENhY2hlZE1lbW9yeVRlbXBSZWdpc3RlcklEQW5kSW52YWxpZGF0ZSgpKTsK
ICAgICAgICAgcmV0dXJuIGJyYW5jaDMyKGNvbmQsIG1lbW9yeVRlbXBSZWdpc3RlciwgcmlnaHQ4
KTsKICAgICB9CiAgICAgCkBAIC0yNTgzLDMwICsyNTkxLDM1IEBAIGNsYXNzIE1hY3JvQXNzZW1i
bGVyQVJNNjQgOiBwdWJsaWMgQWJzdHJhY3RNYWNyb0Fzc2VtYmxlcjxBUk02NEFzc2VtYmxlciwg
TWFjcm9BCiAKICAgICBKdW1wIGJyYW5jaFRlc3Q4KFJlc3VsdENvbmRpdGlvbiBjb25kLCBBZGRy
ZXNzIGFkZHJlc3MsIFRydXN0ZWRJbW0zMiBtYXNrID0gVHJ1c3RlZEltbTMyKC0xKSkKICAgICB7
Ci0gICAgICAgIFRydXN0ZWRJbW0zMiBtYXNrOChzdGF0aWNfY2FzdDxpbnQ4X3Q+KG1hc2subV92
YWx1ZSkpOwotICAgICAgICBsb2FkOChhZGRyZXNzLCBnZXRDYWNoZWREYXRhVGVtcFJlZ2lzdGVy
SURBbmRJbnZhbGlkYXRlKCkpOworICAgICAgICBUcnVzdGVkSW1tMzIgbWFzazggPSBNYWNyb0Fz
c2VtYmxlckhlbHBlcnM6Om1hc2s4T25Db25kaXRpb24oKnRoaXMsIGNvbmQsIG1hc2spOworICAg
ICAgICBNYWNyb0Fzc2VtYmxlckhlbHBlcnM6OmxvYWQ4T25Db25kaXRpb24oKnRoaXMsIGNvbmQs
IGFkZHJlc3MsIGdldENhY2hlZERhdGFUZW1wUmVnaXN0ZXJJREFuZEludmFsaWRhdGUoKSk7CiAg
ICAgICAgIHJldHVybiBicmFuY2hUZXN0MzIoY29uZCwgZGF0YVRlbXBSZWdpc3RlciwgbWFzazgp
OwogICAgIH0KIAogICAgIEp1bXAgYnJhbmNoVGVzdDgoUmVzdWx0Q29uZGl0aW9uIGNvbmQsIEFi
c29sdXRlQWRkcmVzcyBhZGRyZXNzLCBUcnVzdGVkSW1tMzIgbWFzayA9IFRydXN0ZWRJbW0zMigt
MSkpCiAgICAgewotICAgICAgICBUcnVzdGVkSW1tMzIgbWFzazgoc3RhdGljX2Nhc3Q8aW50OF90
PihtYXNrLm1fdmFsdWUpKTsKLSAgICAgICAgbG9hZDgoYWRkcmVzcy5tX3B0ciwgZ2V0Q2FjaGVk
RGF0YVRlbXBSZWdpc3RlcklEQW5kSW52YWxpZGF0ZSgpKTsKKyAgICAgICAgVHJ1c3RlZEltbTMy
IG1hc2s4ID0gTWFjcm9Bc3NlbWJsZXJIZWxwZXJzOjptYXNrOE9uQ29uZGl0aW9uKCp0aGlzLCBj
b25kLCBtYXNrKTsKKyAgICAgICAgTWFjcm9Bc3NlbWJsZXJIZWxwZXJzOjpsb2FkOE9uQ29uZGl0
aW9uKCp0aGlzLCBjb25kLCBhZGRyZXNzLm1fcHRyLCBnZXRDYWNoZWREYXRhVGVtcFJlZ2lzdGVy
SURBbmRJbnZhbGlkYXRlKCkpOwogICAgICAgICByZXR1cm4gYnJhbmNoVGVzdDMyKGNvbmQsIGRh
dGFUZW1wUmVnaXN0ZXIsIG1hc2s4KTsKICAgICB9CiAKICAgICBKdW1wIGJyYW5jaFRlc3Q4KFJl
c3VsdENvbmRpdGlvbiBjb25kLCBFeHRlbmRlZEFkZHJlc3MgYWRkcmVzcywgVHJ1c3RlZEltbTMy
IG1hc2sgPSBUcnVzdGVkSW1tMzIoLTEpKQogICAgIHsKLSAgICAgICAgVHJ1c3RlZEltbTMyIG1h
c2s4KHN0YXRpY19jYXN0PGludDhfdD4obWFzay5tX3ZhbHVlKSk7CisgICAgICAgIFRydXN0ZWRJ
bW0zMiBtYXNrOCA9IE1hY3JvQXNzZW1ibGVySGVscGVyczo6bWFzazhPbkNvbmRpdGlvbigqdGhp
cywgY29uZCwgbWFzayk7CiAgICAgICAgIG1vdmUoVHJ1c3RlZEltbVB0cihyZWludGVycHJldF9j
YXN0PHZvaWQqPihhZGRyZXNzLm9mZnNldCkpLCBnZXRDYWNoZWREYXRhVGVtcFJlZ2lzdGVySURB
bmRJbnZhbGlkYXRlKCkpOwotICAgICAgICBtX2Fzc2VtYmxlci5sZHJiKGRhdGFUZW1wUmVnaXN0
ZXIsIGFkZHJlc3MuYmFzZSwgZGF0YVRlbXBSZWdpc3Rlcik7CisKKyAgICAgICAgaWYgKE1hY3Jv
QXNzZW1ibGVySGVscGVyczo6aXNVbnNpZ25lZDxNYWNyb0Fzc2VtYmxlckFSTTY0Pihjb25kKSkK
KyAgICAgICAgICAgIG1fYXNzZW1ibGVyLmxkcmIoZGF0YVRlbXBSZWdpc3RlciwgYWRkcmVzcy5i
YXNlLCBkYXRhVGVtcFJlZ2lzdGVyKTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgbV9hc3Nl
bWJsZXIubGRyc2I8MzI+KGRhdGFUZW1wUmVnaXN0ZXIsIGFkZHJlc3MuYmFzZSwgZGF0YVRlbXBS
ZWdpc3Rlcik7CisKICAgICAgICAgcmV0dXJuIGJyYW5jaFRlc3QzMihjb25kLCBkYXRhVGVtcFJl
Z2lzdGVyLCBtYXNrOCk7CiAgICAgfQogCiAgICAgSnVtcCBicmFuY2hUZXN0OChSZXN1bHRDb25k
aXRpb24gY29uZCwgQmFzZUluZGV4IGFkZHJlc3MsIFRydXN0ZWRJbW0zMiBtYXNrID0gVHJ1c3Rl
ZEltbTMyKC0xKSkKICAgICB7Ci0gICAgICAgIFRydXN0ZWRJbW0zMiBtYXNrOChzdGF0aWNfY2Fz
dDxpbnQ4X3Q+KG1hc2subV92YWx1ZSkpOwotICAgICAgICBsb2FkOChhZGRyZXNzLCBnZXRDYWNo
ZWREYXRhVGVtcFJlZ2lzdGVySURBbmRJbnZhbGlkYXRlKCkpOworICAgICAgICBUcnVzdGVkSW1t
MzIgbWFzazggPSBNYWNyb0Fzc2VtYmxlckhlbHBlcnM6Om1hc2s4T25Db25kaXRpb24oKnRoaXMs
IGNvbmQsIG1hc2spOworICAgICAgICBNYWNyb0Fzc2VtYmxlckhlbHBlcnM6OmxvYWQ4T25Db25k
aXRpb24oKnRoaXMsIGNvbmQsIGFkZHJlc3MsIGdldENhY2hlZERhdGFUZW1wUmVnaXN0ZXJJREFu
ZEludmFsaWRhdGUoKSk7CiAgICAgICAgIHJldHVybiBicmFuY2hUZXN0MzIoY29uZCwgZGF0YVRl
bXBSZWdpc3RlciwgbWFzazgpOwogICAgIH0KIApAQCAtMzAyMyw4ICszMDM2LDggQEAgY2xhc3Mg
TWFjcm9Bc3NlbWJsZXJBUk02NCA6IHB1YmxpYyBBYnN0cmFjdE1hY3JvQXNzZW1ibGVyPEFSTTY0
QXNzZW1ibGVyLCBNYWNyb0EKIAogICAgIHZvaWQgY29tcGFyZTgoUmVsYXRpb25hbENvbmRpdGlv
biBjb25kLCBBZGRyZXNzIGxlZnQsIFRydXN0ZWRJbW0zMiByaWdodCwgUmVnaXN0ZXJJRCBkZXN0
KQogICAgIHsKLSAgICAgICAgVHJ1c3RlZEltbTMyIHJpZ2h0OChzdGF0aWNfY2FzdDxpbnQ4X3Q+
KHJpZ2h0Lm1fdmFsdWUpKTsKLSAgICAgICAgbG9hZDgobGVmdCwgZ2V0Q2FjaGVkTWVtb3J5VGVt
cFJlZ2lzdGVySURBbmRJbnZhbGlkYXRlKCkpOworICAgICAgICBUcnVzdGVkSW1tMzIgcmlnaHQ4
ID0gTWFjcm9Bc3NlbWJsZXJIZWxwZXJzOjptYXNrOE9uQ29uZGl0aW9uKCp0aGlzLCBjb25kLCBy
aWdodCk7CisgICAgICAgIE1hY3JvQXNzZW1ibGVySGVscGVyczo6bG9hZDhPbkNvbmRpdGlvbigq
dGhpcywgY29uZCwgbGVmdCwgZ2V0Q2FjaGVkTWVtb3J5VGVtcFJlZ2lzdGVySURBbmRJbnZhbGlk
YXRlKCkpOwogICAgICAgICBtb3ZlKHJpZ2h0OCwgZ2V0Q2FjaGVkRGF0YVRlbXBSZWdpc3RlcklE
QW5kSW52YWxpZGF0ZSgpKTsKICAgICAgICAgY29tcGFyZTMyKGNvbmQsIG1lbW9yeVRlbXBSZWdp
c3RlciwgZGF0YVRlbXBSZWdpc3RlciwgZGVzdCk7CiAgICAgfQpAQCAtMzA0OSw4ICszMDYyLDgg
QEAgY2xhc3MgTWFjcm9Bc3NlbWJsZXJBUk02NCA6IHB1YmxpYyBBYnN0cmFjdE1hY3JvQXNzZW1i
bGVyPEFSTTY0QXNzZW1ibGVyLCBNYWNyb0EKIAogICAgIHZvaWQgdGVzdDgoUmVzdWx0Q29uZGl0
aW9uIGNvbmQsIEFkZHJlc3MgYWRkcmVzcywgVHJ1c3RlZEltbTMyIG1hc2ssIFJlZ2lzdGVySUQg
ZGVzdCkKICAgICB7Ci0gICAgICAgIFRydXN0ZWRJbW0zMiBtYXNrOChzdGF0aWNfY2FzdDxpbnQ4
X3Q+KG1hc2subV92YWx1ZSkpOwotICAgICAgICBsb2FkOChhZGRyZXNzLCBnZXRDYWNoZWRNZW1v
cnlUZW1wUmVnaXN0ZXJJREFuZEludmFsaWRhdGUoKSk7CisgICAgICAgIFRydXN0ZWRJbW0zMiBt
YXNrOCA9IE1hY3JvQXNzZW1ibGVySGVscGVyczo6bWFzazhPbkNvbmRpdGlvbigqdGhpcywgY29u
ZCwgbWFzayk7CisgICAgICAgIE1hY3JvQXNzZW1ibGVySGVscGVyczo6bG9hZDhPbkNvbmRpdGlv
bigqdGhpcywgY29uZCwgYWRkcmVzcywgZ2V0Q2FjaGVkTWVtb3J5VGVtcFJlZ2lzdGVySURBbmRJ
bnZhbGlkYXRlKCkpOwogICAgICAgICB0ZXN0MzIoY29uZCwgbWVtb3J5VGVtcFJlZ2lzdGVyLCBt
YXNrOCwgZGVzdCk7CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
YXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyQVJNdjcuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9h
c3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJBUk12Ny5oCmluZGV4IGY2NjM3ZDgyZTk0NWU4ZTI3OGQ0
NTIxNjAxNTQ0YzY1ZDZhMjg0ODUuLmFiYWQ2NmFhMmY1MGZiOWE5NDA1NDkxZGFhZGE5MDEwYzI2
YmUwMWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9B
c3NlbWJsZXJBUk12Ny5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFj
cm9Bc3NlbWJsZXJBUk12Ny5oCkBAIC0xNDkwLDcgKzE0OTAsNyBAQCBjbGFzcyBNYWNyb0Fzc2Vt
YmxlckFSTXY3IDogcHVibGljIEFic3RyYWN0TWFjcm9Bc3NlbWJsZXI8QVJNdjdBc3NlbWJsZXIs
IE1hY3JvQQogCiAgICAgSnVtcCBicmFuY2g4KFJlbGF0aW9uYWxDb25kaXRpb24gY29uZCwgUmVn
aXN0ZXJJRCBsZWZ0LCBUcnVzdGVkSW1tMzIgcmlnaHQpCiAgICAgewotICAgICAgICBUcnVzdGVk
SW1tMzIgcmlnaHQ4KHN0YXRpY19jYXN0PGludDhfdD4ocmlnaHQubV92YWx1ZSkpOworICAgICAg
ICBUcnVzdGVkSW1tMzIgcmlnaHQ4ID0gTWFjcm9Bc3NlbWJsZXJIZWxwZXJzOjptYXNrOE9uQ29u
ZGl0aW9uKCp0aGlzLCBjb25kLCByaWdodCk7CiAgICAgICAgIGNvbXBhcmUzMkFuZFNldEZsYWdz
KGxlZnQsIHJpZ2h0OCk7CiAgICAgICAgIHJldHVybiBKdW1wKG1ha2VCcmFuY2goY29uZCkpOwog
ICAgIH0KQEAgLTE0OTgsMjUgKzE0OTgsMjUgQEAgY2xhc3MgTWFjcm9Bc3NlbWJsZXJBUk12NyA6
IHB1YmxpYyBBYnN0cmFjdE1hY3JvQXNzZW1ibGVyPEFSTXY3QXNzZW1ibGVyLCBNYWNyb0EKICAg
ICBKdW1wIGJyYW5jaDgoUmVsYXRpb25hbENvbmRpdGlvbiBjb25kLCBBZGRyZXNzIGxlZnQsIFRy
dXN0ZWRJbW0zMiByaWdodCkKICAgICB7CiAgICAgICAgIC8vIHVzZSBhZGRyZXNzVGVtcFJlZ2lz
dGVyIGluY2FzZSB0aGUgYnJhbmNoOCB3ZSBjYWxsIHVzZXMgZGF0YVRlbXBSZWdpc3Rlci4gOi0v
Ci0gICAgICAgIFRydXN0ZWRJbW0zMiByaWdodDgoc3RhdGljX2Nhc3Q8aW50OF90PihyaWdodC5t
X3ZhbHVlKSk7Ci0gICAgICAgIGxvYWQ4KGxlZnQsIGFkZHJlc3NUZW1wUmVnaXN0ZXIpOworICAg
ICAgICBUcnVzdGVkSW1tMzIgcmlnaHQ4ID0gTWFjcm9Bc3NlbWJsZXJIZWxwZXJzOjptYXNrOE9u
Q29uZGl0aW9uKCp0aGlzLCBjb25kLCByaWdodCk7CisgICAgICAgIE1hY3JvQXNzZW1ibGVySGVs
cGVyczo6bG9hZDhPbkNvbmRpdGlvbigqdGhpcywgY29uZCwgbGVmdCwgYWRkcmVzc1RlbXBSZWdp
c3Rlcik7CiAgICAgICAgIHJldHVybiBicmFuY2g4KGNvbmQsIGFkZHJlc3NUZW1wUmVnaXN0ZXIs
IHJpZ2h0OCk7CiAgICAgfQogCiAgICAgSnVtcCBicmFuY2g4KFJlbGF0aW9uYWxDb25kaXRpb24g
Y29uZCwgQmFzZUluZGV4IGxlZnQsIFRydXN0ZWRJbW0zMiByaWdodCkKICAgICB7CiAgICAgICAg
IC8vIHVzZSBhZGRyZXNzVGVtcFJlZ2lzdGVyIGluY2FzZSB0aGUgYnJhbmNoMzIgd2UgY2FsbCB1
c2VzIGRhdGFUZW1wUmVnaXN0ZXIuIDotLwotICAgICAgICBUcnVzdGVkSW1tMzIgcmlnaHQ4KHN0
YXRpY19jYXN0PGludDhfdD4ocmlnaHQubV92YWx1ZSkpOwotICAgICAgICBsb2FkOChsZWZ0LCBh
ZGRyZXNzVGVtcFJlZ2lzdGVyKTsKKyAgICAgICAgVHJ1c3RlZEltbTMyIHJpZ2h0OCA9IE1hY3Jv
QXNzZW1ibGVySGVscGVyczo6bWFzazhPbkNvbmRpdGlvbigqdGhpcywgY29uZCwgcmlnaHQpOwor
ICAgICAgICBNYWNyb0Fzc2VtYmxlckhlbHBlcnM6OmxvYWQ4T25Db25kaXRpb24oKnRoaXMsIGNv
bmQsIGxlZnQsIGFkZHJlc3NUZW1wUmVnaXN0ZXIpOwogICAgICAgICByZXR1cm4gYnJhbmNoMzIo
Y29uZCwgYWRkcmVzc1RlbXBSZWdpc3RlciwgcmlnaHQ4KTsKICAgICB9CiAgICAgCiAgICAgSnVt
cCBicmFuY2g4KFJlbGF0aW9uYWxDb25kaXRpb24gY29uZCwgQWJzb2x1dGVBZGRyZXNzIGFkZHJl
c3MsIFRydXN0ZWRJbW0zMiByaWdodCkKICAgICB7CiAgICAgICAgIC8vIFVzZSBhZGRyZXNzVGVt
cFJlZ2lzdGVyIGluc3RlYWQgb2YgZGF0YVRlbXBSZWdpc3Rlciwgc2luY2UgYnJhbmNoMzIgdXNl
cyBkYXRhVGVtcFJlZ2lzdGVyLgotICAgICAgICBUcnVzdGVkSW1tMzIgcmlnaHQ4KHN0YXRpY19j
YXN0PGludDhfdD4ocmlnaHQubV92YWx1ZSkpOworICAgICAgICBUcnVzdGVkSW1tMzIgcmlnaHQ4
ID0gTWFjcm9Bc3NlbWJsZXJIZWxwZXJzOjptYXNrOE9uQ29uZGl0aW9uKCp0aGlzLCBjb25kLCBy
aWdodCk7CiAgICAgICAgIG1vdmUoVHJ1c3RlZEltbVB0cihhZGRyZXNzLm1fcHRyKSwgYWRkcmVz
c1RlbXBSZWdpc3Rlcik7Ci0gICAgICAgIGxvYWQ4KEFkZHJlc3MoYWRkcmVzc1RlbXBSZWdpc3Rl
ciksIGFkZHJlc3NUZW1wUmVnaXN0ZXIpOworICAgICAgICBNYWNyb0Fzc2VtYmxlckhlbHBlcnM6
OmxvYWQ4T25Db25kaXRpb24oKnRoaXMsIGNvbmQsIEFkZHJlc3MoYWRkcmVzc1RlbXBSZWdpc3Rl
ciksIGFkZHJlc3NUZW1wUmVnaXN0ZXIpOwogICAgICAgICByZXR1cm4gYnJhbmNoMzIoY29uZCwg
YWRkcmVzc1RlbXBSZWdpc3RlciwgcmlnaHQ4KTsKICAgICB9CiAgICAgCkBAIC0xNTUxLDI1ICsx
NTUxLDI1IEBAIGNsYXNzIE1hY3JvQXNzZW1ibGVyQVJNdjcgOiBwdWJsaWMgQWJzdHJhY3RNYWNy
b0Fzc2VtYmxlcjxBUk12N0Fzc2VtYmxlciwgTWFjcm9BCiAgICAgSnVtcCBicmFuY2hUZXN0OChS
ZXN1bHRDb25kaXRpb24gY29uZCwgQmFzZUluZGV4IGFkZHJlc3MsIFRydXN0ZWRJbW0zMiBtYXNr
ID0gVHJ1c3RlZEltbTMyKC0xKSkKICAgICB7CiAgICAgICAgIC8vIHVzZSBhZGRyZXNzVGVtcFJl
Z2lzdGVyIGluY2FzZSB0aGUgYnJhbmNoVGVzdDggd2UgY2FsbCB1c2VzIGRhdGFUZW1wUmVnaXN0
ZXIuIDotLwotICAgICAgICBUcnVzdGVkSW1tMzIgbWFzazgoc3RhdGljX2Nhc3Q8aW50OF90Piht
YXNrLm1fdmFsdWUpKTsKLSAgICAgICAgbG9hZDgoYWRkcmVzcywgYWRkcmVzc1RlbXBSZWdpc3Rl
cik7CisgICAgICAgIFRydXN0ZWRJbW0zMiBtYXNrOCA9IE1hY3JvQXNzZW1ibGVySGVscGVyczo6
bWFzazhPbkNvbmRpdGlvbigqdGhpcywgY29uZCwgbWFzayk7CisgICAgICAgIE1hY3JvQXNzZW1i
bGVySGVscGVyczo6bG9hZDhPbkNvbmRpdGlvbigqdGhpcywgY29uZCwgYWRkcmVzcywgYWRkcmVz
c1RlbXBSZWdpc3Rlcik7CiAgICAgICAgIHJldHVybiBicmFuY2hUZXN0MzIoY29uZCwgYWRkcmVz
c1RlbXBSZWdpc3RlciwgbWFzazgpOwogICAgIH0KIAogICAgIEp1bXAgYnJhbmNoVGVzdDgoUmVz
dWx0Q29uZGl0aW9uIGNvbmQsIEFkZHJlc3MgYWRkcmVzcywgVHJ1c3RlZEltbTMyIG1hc2sgPSBU
cnVzdGVkSW1tMzIoLTEpKQogICAgIHsKICAgICAgICAgLy8gdXNlIGFkZHJlc3NUZW1wUmVnaXN0
ZXIgaW5jYXNlIHRoZSBicmFuY2hUZXN0OCB3ZSBjYWxsIHVzZXMgZGF0YVRlbXBSZWdpc3Rlci4g
Oi0vCi0gICAgICAgIFRydXN0ZWRJbW0zMiBtYXNrOChzdGF0aWNfY2FzdDxpbnQ4X3Q+KG1hc2su
bV92YWx1ZSkpOwotICAgICAgICBsb2FkOChhZGRyZXNzLCBhZGRyZXNzVGVtcFJlZ2lzdGVyKTsK
KyAgICAgICAgVHJ1c3RlZEltbTMyIG1hc2s4ID0gTWFjcm9Bc3NlbWJsZXJIZWxwZXJzOjptYXNr
OE9uQ29uZGl0aW9uKCp0aGlzLCBjb25kLCBtYXNrKTsKKyAgICAgICAgTWFjcm9Bc3NlbWJsZXJI
ZWxwZXJzOjpsb2FkOE9uQ29uZGl0aW9uKCp0aGlzLCBjb25kLCBhZGRyZXNzLCBhZGRyZXNzVGVt
cFJlZ2lzdGVyKTsKICAgICAgICAgcmV0dXJuIGJyYW5jaFRlc3QzMihjb25kLCBhZGRyZXNzVGVt
cFJlZ2lzdGVyLCBtYXNrOCk7CiAgICAgfQogCiAgICAgSnVtcCBicmFuY2hUZXN0OChSZXN1bHRD
b25kaXRpb24gY29uZCwgQWJzb2x1dGVBZGRyZXNzIGFkZHJlc3MsIFRydXN0ZWRJbW0zMiBtYXNr
ID0gVHJ1c3RlZEltbTMyKC0xKSkKICAgICB7CiAgICAgICAgIC8vIHVzZSBhZGRyZXNzVGVtcFJl
Z2lzdGVyIGluY2FzZSB0aGUgYnJhbmNoVGVzdDggd2UgY2FsbCB1c2VzIGRhdGFUZW1wUmVnaXN0
ZXIuIDotLwotICAgICAgICBUcnVzdGVkSW1tMzIgbWFzazgoc3RhdGljX2Nhc3Q8aW50OF90Piht
YXNrLm1fdmFsdWUpKTsKKyAgICAgICAgVHJ1c3RlZEltbTMyIG1hc2s4ID0gTWFjcm9Bc3NlbWJs
ZXJIZWxwZXJzOjptYXNrOE9uQ29uZGl0aW9uKCp0aGlzLCBjb25kLCBtYXNrKTsKICAgICAgICAg
bW92ZShUcnVzdGVkSW1tUHRyKGFkZHJlc3MubV9wdHIpLCBhZGRyZXNzVGVtcFJlZ2lzdGVyKTsK
LSAgICAgICAgbG9hZDgoQWRkcmVzcyhhZGRyZXNzVGVtcFJlZ2lzdGVyKSwgYWRkcmVzc1RlbXBS
ZWdpc3Rlcik7CisgICAgICAgIE1hY3JvQXNzZW1ibGVySGVscGVyczo6bG9hZDhPbkNvbmRpdGlv
bigqdGhpcywgY29uZCwgQWRkcmVzcyhhZGRyZXNzVGVtcFJlZ2lzdGVyKSwgYWRkcmVzc1RlbXBS
ZWdpc3Rlcik7CiAgICAgICAgIHJldHVybiBicmFuY2hUZXN0MzIoY29uZCwgYWRkcmVzc1RlbXBS
ZWdpc3RlciwgbWFzazgpOwogICAgIH0KIApAQCAtMTc5Nyw4ICsxNzk3LDggQEAgY2xhc3MgTWFj
cm9Bc3NlbWJsZXJBUk12NyA6IHB1YmxpYyBBYnN0cmFjdE1hY3JvQXNzZW1ibGVyPEFSTXY3QXNz
ZW1ibGVyLCBNYWNyb0EKIAogICAgIHZvaWQgY29tcGFyZTgoUmVsYXRpb25hbENvbmRpdGlvbiBj
b25kLCBBZGRyZXNzIGxlZnQsIFRydXN0ZWRJbW0zMiByaWdodCwgUmVnaXN0ZXJJRCBkZXN0KQog
ICAgIHsKLSAgICAgICAgVHJ1c3RlZEltbTMyIHJpZ2h0OChzdGF0aWNfY2FzdDxpbnQ4X3Q+KHJp
Z2h0Lm1fdmFsdWUpKTsKLSAgICAgICAgbG9hZDgobGVmdCwgYWRkcmVzc1RlbXBSZWdpc3Rlcik7
CisgICAgICAgIFRydXN0ZWRJbW0zMiByaWdodDggPSBNYWNyb0Fzc2VtYmxlckhlbHBlcnM6Om1h
c2s4T25Db25kaXRpb24oKnRoaXMsIGNvbmQsIHJpZ2h0KTsKKyAgICAgICAgTWFjcm9Bc3NlbWJs
ZXJIZWxwZXJzOjpsb2FkOE9uQ29uZGl0aW9uKCp0aGlzLCBjb25kLCBsZWZ0LCBhZGRyZXNzVGVt
cFJlZ2lzdGVyKTsKICAgICAgICAgY29tcGFyZTMyKGNvbmQsIGFkZHJlc3NUZW1wUmVnaXN0ZXIs
IHJpZ2h0OCwgZGVzdCk7CiAgICAgfQogCkBAIC0xODI1LDggKzE4MjUsOCBAQCBjbGFzcyBNYWNy
b0Fzc2VtYmxlckFSTXY3IDogcHVibGljIEFic3RyYWN0TWFjcm9Bc3NlbWJsZXI8QVJNdjdBc3Nl
bWJsZXIsIE1hY3JvQQogCiAgICAgdm9pZCB0ZXN0OChSZXN1bHRDb25kaXRpb24gY29uZCwgQWRk
cmVzcyBhZGRyZXNzLCBUcnVzdGVkSW1tMzIgbWFzaywgUmVnaXN0ZXJJRCBkZXN0KQogICAgIHsK
LSAgICAgICAgVHJ1c3RlZEltbTMyIG1hc2s4KHN0YXRpY19jYXN0PGludDhfdD4obWFzay5tX3Zh
bHVlKSk7Ci0gICAgICAgIGxvYWQ4KGFkZHJlc3MsIGRhdGFUZW1wUmVnaXN0ZXIpOworICAgICAg
ICBUcnVzdGVkSW1tMzIgbWFzazggPSBNYWNyb0Fzc2VtYmxlckhlbHBlcnM6Om1hc2s4T25Db25k
aXRpb24oKnRoaXMsIGNvbmQsIG1hc2spOworICAgICAgICBNYWNyb0Fzc2VtYmxlckhlbHBlcnM6
OmxvYWQ4T25Db25kaXRpb24oKnRoaXMsIGNvbmQsIGFkZHJlc3MsIGRhdGFUZW1wUmVnaXN0ZXIp
OwogICAgICAgICB0ZXN0MzIoZGF0YVRlbXBSZWdpc3RlciwgbWFzazgpOwogICAgICAgICBtX2Fz
c2VtYmxlci5pdChhcm1WN0NvbmRpdGlvbihjb25kKSwgZmFsc2UpOwogICAgICAgICBtX2Fzc2Vt
Ymxlci5tb3YoZGVzdCwgQVJNVGh1bWJJbW1lZGlhdGU6Om1ha2VVSW50MTYoMSkpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlckhlbHBl
cnMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJIZWxw
ZXJzLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uMDQ3ZTk0YzI3MWIzMDgwNTUwYmM0MjY5M2RkYTQyMzc1MGFjMzJm
MQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFj
cm9Bc3NlbWJsZXJIZWxwZXJzLmgKQEAgLTAsMCArMSwxMzEgQEAKKy8qCisgKiBDb3B5cmlnaHQg
KEMpIDIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAq
IDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAq
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFO
WQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
IElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhF
TVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworbmFtZXNwYWNlIEpT
QyB7CituYW1lc3BhY2UgTWFjcm9Bc3NlbWJsZXJIZWxwZXJzIHsKKworLy8gVHJ1ZSBpZiB0aGlz
OgorLy8gICAgIGJyYW5jaDgoY29uZCwgdmFsdWUsIHZhbHVlKQorLy8gSXMgdGhlIHNhbWUgYXMg
dGhpczoKKy8vICAgICBicmFuY2gzMihjb25kLCBzaWduRXh0OCh2YWx1ZSksIHNpZ25FeHQ4KHZh
bHVlKSkKK3RlbXBsYXRlPHR5cGVuYW1lIE1hY3JvQXNzZW1ibGVyVHlwZT4KK2lubGluZSBib29s
IGlzU2lnbmVkKHR5cGVuYW1lIE1hY3JvQXNzZW1ibGVyVHlwZTo6UmVsYXRpb25hbENvbmRpdGlv
biBjb25kKQoreworICAgIHN3aXRjaCAoY29uZCkgeworICAgIGNhc2UgTWFjcm9Bc3NlbWJsZXJU
eXBlOjpFcXVhbDoKKyAgICBjYXNlIE1hY3JvQXNzZW1ibGVyVHlwZTo6Tm90RXF1YWw6CisgICAg
Y2FzZSBNYWNyb0Fzc2VtYmxlclR5cGU6OkdyZWF0ZXJUaGFuOgorICAgIGNhc2UgTWFjcm9Bc3Nl
bWJsZXJUeXBlOjpHcmVhdGVyVGhhbk9yRXF1YWw6CisgICAgY2FzZSBNYWNyb0Fzc2VtYmxlclR5
cGU6Okxlc3NUaGFuOgorICAgIGNhc2UgTWFjcm9Bc3NlbWJsZXJUeXBlOjpMZXNzVGhhbk9yRXF1
YWw6CisgICAgICAgIHJldHVybiB0cnVlOworICAgIGRlZmF1bHQ6CisgICAgICAgIHJldHVybiBm
YWxzZTsKKyAgICB9Cit9CisKKy8vIFRydWUgaWYgdGhpczoKKy8vICAgICBicmFuY2g4KGNvbmQs
IHZhbHVlLCB2YWx1ZSkKKy8vIElzIHRoZSBzYW1lIGFzIHRoaXM6CisvLyAgICAgYnJhbmNoMzIo
Y29uZCwgemVyb0V4dDgodmFsdWUpLCB6ZXJvRXh0OCh2YWx1ZSkpCit0ZW1wbGF0ZTx0eXBlbmFt
ZSBNYWNyb0Fzc2VtYmxlclR5cGU+CitpbmxpbmUgYm9vbCBpc1Vuc2lnbmVkKHR5cGVuYW1lIE1h
Y3JvQXNzZW1ibGVyVHlwZTo6UmVsYXRpb25hbENvbmRpdGlvbiBjb25kKQoreworICAgIHN3aXRj
aCAoY29uZCkgeworICAgIGNhc2UgTWFjcm9Bc3NlbWJsZXJUeXBlOjpFcXVhbDoKKyAgICBjYXNl
IE1hY3JvQXNzZW1ibGVyVHlwZTo6Tm90RXF1YWw6CisgICAgY2FzZSBNYWNyb0Fzc2VtYmxlclR5
cGU6OkFib3ZlOgorICAgIGNhc2UgTWFjcm9Bc3NlbWJsZXJUeXBlOjpBYm92ZU9yRXF1YWw6Cisg
ICAgY2FzZSBNYWNyb0Fzc2VtYmxlclR5cGU6OkJlbG93OgorICAgIGNhc2UgTWFjcm9Bc3NlbWJs
ZXJUeXBlOjpCZWxvd09yRXF1YWw6CisgICAgICAgIHJldHVybiB0cnVlOworICAgIGRlZmF1bHQ6
CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9Cit9CisKKy8vIFRydWUgaWYgdGhpczoKKy8v
ICAgICB0ZXN0OChjb25kLCB2YWx1ZSwgdmFsdWUpCisvLyBJcyB0aGUgc2FtZSBhcyB0aGlzOgor
Ly8gICAgIHRlc3QzMihjb25kLCBzaWduRXh0OCh2YWx1ZSksIHNpZ25FeHQ4KHZhbHVlKSkKK3Rl
bXBsYXRlPHR5cGVuYW1lIE1hY3JvQXNzZW1ibGVyVHlwZT4KK2lubGluZSBib29sIGlzU2lnbmVk
KHR5cGVuYW1lIE1hY3JvQXNzZW1ibGVyVHlwZTo6UmVzdWx0Q29uZGl0aW9uIGNvbmQpCit7Cisg
ICAgc3dpdGNoIChjb25kKSB7CisgICAgY2FzZSBNYWNyb0Fzc2VtYmxlclR5cGU6OlNpZ25lZDoK
KyAgICBjYXNlIE1hY3JvQXNzZW1ibGVyVHlwZTo6UG9zaXRpdmVPclplcm86CisgICAgY2FzZSBN
YWNyb0Fzc2VtYmxlclR5cGU6Olplcm86CisgICAgY2FzZSBNYWNyb0Fzc2VtYmxlclR5cGU6Ok5v
blplcm86CisgICAgICAgIHJldHVybiB0cnVlOworICAgIGRlZmF1bHQ6CisgICAgICAgIHJldHVy
biBmYWxzZTsKKyAgICB9Cit9CisKKy8vIFRydWUgaWYgdGhpczoKKy8vICAgICB0ZXN0OChjb25k
LCB2YWx1ZSwgdmFsdWUpCisvLyBJcyB0aGUgc2FtZSBhcyB0aGlzOgorLy8gICAgIHRlc3QzMihj
b25kLCB6ZXJvRXh0OCh2YWx1ZSksIHplcm9FeHQ4KHZhbHVlKSkKK3RlbXBsYXRlPHR5cGVuYW1l
IE1hY3JvQXNzZW1ibGVyVHlwZT4KK2lubGluZSBib29sIGlzVW5zaWduZWQodHlwZW5hbWUgTWFj
cm9Bc3NlbWJsZXJUeXBlOjpSZXN1bHRDb25kaXRpb24gY29uZCkKK3sKKyAgICBzd2l0Y2ggKGNv
bmQpIHsKKyAgICBjYXNlIE1hY3JvQXNzZW1ibGVyVHlwZTo6WmVybzoKKyAgICBjYXNlIE1hY3Jv
QXNzZW1ibGVyVHlwZTo6Tm9uWmVybzoKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgZGVmYXVs
dDoKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KK30KKwordGVtcGxhdGU8dHlwZW5hbWUg
TWFjcm9Bc3NlbWJsZXJUeXBlPgoraW5saW5lIHR5cGVuYW1lIE1hY3JvQXNzZW1ibGVyVHlwZTo6
VHJ1c3RlZEltbTMyIG1hc2s4T25Db25kaXRpb24oTWFjcm9Bc3NlbWJsZXJUeXBlJiwgdHlwZW5h
bWUgTWFjcm9Bc3NlbWJsZXJUeXBlOjpSZWxhdGlvbmFsQ29uZGl0aW9uIGNvbmQsIHR5cGVuYW1l
IE1hY3JvQXNzZW1ibGVyVHlwZTo6VHJ1c3RlZEltbTMyIHZhbHVlKQoreworICAgIGlmIChpc1Vu
c2lnbmVkPE1hY3JvQXNzZW1ibGVyVHlwZT4oY29uZCkpCisgICAgICAgIHJldHVybiB0eXBlbmFt
ZSBNYWNyb0Fzc2VtYmxlclR5cGU6OlRydXN0ZWRJbW0zMihzdGF0aWNfY2FzdDx1aW50OF90Pih2
YWx1ZS5tX3ZhbHVlKSk7CisgICAgcmV0dXJuIHR5cGVuYW1lIE1hY3JvQXNzZW1ibGVyVHlwZTo6
VHJ1c3RlZEltbTMyKHN0YXRpY19jYXN0PGludDhfdD4odmFsdWUubV92YWx1ZSkpOworfQorCit0
ZW1wbGF0ZTx0eXBlbmFtZSBNYWNyb0Fzc2VtYmxlclR5cGU+CitpbmxpbmUgdHlwZW5hbWUgTWFj
cm9Bc3NlbWJsZXJUeXBlOjpUcnVzdGVkSW1tMzIgbWFzazhPbkNvbmRpdGlvbihNYWNyb0Fzc2Vt
YmxlclR5cGUmLCB0eXBlbmFtZSBNYWNyb0Fzc2VtYmxlclR5cGU6OlJlc3VsdENvbmRpdGlvbiBj
b25kLCB0eXBlbmFtZSBNYWNyb0Fzc2VtYmxlclR5cGU6OlRydXN0ZWRJbW0zMiB2YWx1ZSkKK3sK
KyAgICBpZiAoaXNVbnNpZ25lZDxNYWNyb0Fzc2VtYmxlclR5cGU+KGNvbmQpKQorICAgICAgICBy
ZXR1cm4gdHlwZW5hbWUgTWFjcm9Bc3NlbWJsZXJUeXBlOjpUcnVzdGVkSW1tMzIoc3RhdGljX2Nh
c3Q8dWludDhfdD4odmFsdWUubV92YWx1ZSkpOworICAgIEFTU0VSVF9XSVRIX01FU1NBR0UoY29u
ZCAhPSBNYWNyb0Fzc2VtYmxlclR5cGU6Ok92ZXJmbG93LCAiT3ZlcmZsb3cgaXMgbm90IHVzZWQg
Zm9yIDhiaXQgdGVzdCBvcGVyYXRpb25zLiIpOworICAgIEFTU0VSVChpc1NpZ25lZDxNYWNyb0Fz
c2VtYmxlclR5cGU+KGNvbmQpKTsKKyAgICByZXR1cm4gdHlwZW5hbWUgTWFjcm9Bc3NlbWJsZXJU
eXBlOjpUcnVzdGVkSW1tMzIoc3RhdGljX2Nhc3Q8aW50OF90Pih2YWx1ZS5tX3ZhbHVlKSk7Cit9
CisKK3RlbXBsYXRlPHR5cGVuYW1lIE1hY3JvQXNzZW1ibGVyVHlwZSwgdHlwZW5hbWUgQ29uZGl0
aW9uLCB0eXBlbmFtZSAuLi5BcmdzPgordm9pZCBsb2FkOE9uQ29uZGl0aW9uKE1hY3JvQXNzZW1i
bGVyVHlwZSYgaml0LCBDb25kaXRpb24gY29uZCwgQXJncy4uLiBhcmdzKQoreworICAgIGlmIChp
c1Vuc2lnbmVkPE1hY3JvQXNzZW1ibGVyVHlwZT4oY29uZCkpCisgICAgICAgIHJldHVybiBqaXQu
bG9hZDgoc3RkOjpmb3J3YXJkPEFyZ3M+KGFyZ3MpLi4uKTsKKyAgICByZXR1cm4gaml0LmxvYWQ4
U2lnbmVkRXh0ZW5kVG8zMihzdGQ6OmZvcndhcmQ8QXJncz4oYXJncykuLi4pOworfQorCit9IH0g
Ly8gbmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2Vt
Ymxlci9NYWNyb0Fzc2VtYmxlck1JUFMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJs
ZXIvTWFjcm9Bc3NlbWJsZXJNSVBTLmgKaW5kZXggZmFmZGM1MWNhZmIzMjdiNTExMTY3N2Y1NTc2
YjM0ZWRkMWQzNDgzNi4uNzdmZGVkOTQ4YzgwMWM3OGQzYWExNDdkOWM3NDFjNmQxNzMyYTA2ZiAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxl
ck1JUFMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1i
bGVyTUlQUy5oCkBAIC0xNDQ1LDMyICsxNDQ1LDMyIEBAIGNsYXNzIE1hY3JvQXNzZW1ibGVyTUlQ
UyA6IHB1YmxpYyBBYnN0cmFjdE1hY3JvQXNzZW1ibGVyPE1JUFNBc3NlbWJsZXIsIE1hY3JvQXNz
CiAKICAgICBKdW1wIGJyYW5jaDgoUmVsYXRpb25hbENvbmRpdGlvbiBjb25kLCBBZGRyZXNzIGxl
ZnQsIFRydXN0ZWRJbW0zMiByaWdodCkKICAgICB7Ci0gICAgICAgIFRydXN0ZWRJbW0zMiByaWdo
dDgoc3RhdGljX2Nhc3Q8aW50OF90PihyaWdodC5tX3ZhbHVlKSk7Ci0gICAgICAgIGxvYWQ4KGxl
ZnQsIGRhdGFUZW1wUmVnaXN0ZXIpOworICAgICAgICBUcnVzdGVkSW1tMzIgcmlnaHQ4ID0gTWFj
cm9Bc3NlbWJsZXJIZWxwZXJzOjptYXNrOE9uQ29uZGl0aW9uKCp0aGlzLCBjb25kLCByaWdodCk7
CisgICAgICAgIE1hY3JvQXNzZW1ibGVySGVscGVyczo6bG9hZDhPbkNvbmRpdGlvbigqdGhpcywg
Y29uZCwgbGVmdCwgZGF0YVRlbXBSZWdpc3Rlcik7CiAgICAgICAgIG1vdmUocmlnaHQ4LCBpbW1U
ZW1wUmVnaXN0ZXIpOwogICAgICAgICByZXR1cm4gYnJhbmNoMzIoY29uZCwgZGF0YVRlbXBSZWdp
c3RlciwgaW1tVGVtcFJlZ2lzdGVyKTsKICAgICB9CiAKICAgICBKdW1wIGJyYW5jaDgoUmVsYXRp
b25hbENvbmRpdGlvbiBjb25kLCBBYnNvbHV0ZUFkZHJlc3MgbGVmdCwgVHJ1c3RlZEltbTMyIHJp
Z2h0KQogICAgIHsKLSAgICAgICAgVHJ1c3RlZEltbTMyIHJpZ2h0OChzdGF0aWNfY2FzdDxpbnQ4
X3Q+KHJpZ2h0Lm1fdmFsdWUpKTsKLSAgICAgICAgbG9hZDgobGVmdCwgZGF0YVRlbXBSZWdpc3Rl
cik7CisgICAgICAgIFRydXN0ZWRJbW0zMiByaWdodDggPSBNYWNyb0Fzc2VtYmxlckhlbHBlcnM6
Om1hc2s4T25Db25kaXRpb24oKnRoaXMsIGNvbmQsIHJpZ2h0KTsKKyAgICAgICAgTWFjcm9Bc3Nl
bWJsZXJIZWxwZXJzOjpsb2FkOE9uQ29uZGl0aW9uKCp0aGlzLCBjb25kLCBsZWZ0LCBkYXRhVGVt
cFJlZ2lzdGVyKTsKICAgICAgICAgbW92ZShyaWdodDgsIGltbVRlbXBSZWdpc3Rlcik7CiAgICAg
ICAgIHJldHVybiBicmFuY2gzMihjb25kLCBkYXRhVGVtcFJlZ2lzdGVyLCBpbW1UZW1wUmVnaXN0
ZXIpOwogICAgIH0KIAogICAgIHZvaWQgY29tcGFyZTgoUmVsYXRpb25hbENvbmRpdGlvbiBjb25k
LCBBZGRyZXNzIGxlZnQsIFRydXN0ZWRJbW0zMiByaWdodCwgUmVnaXN0ZXJJRCBkZXN0KQogICAg
IHsKLSAgICAgICAgVHJ1c3RlZEltbTMyIHJpZ2h0OChzdGF0aWNfY2FzdDxpbnQ4X3Q+KHJpZ2h0
Lm1fdmFsdWUpKTsKLSAgICAgICAgbG9hZDgobGVmdCwgZGF0YVRlbXBSZWdpc3Rlcik7CisgICAg
ICAgIFRydXN0ZWRJbW0zMiByaWdodDggPSBNYWNyb0Fzc2VtYmxlckhlbHBlcnM6Om1hc2s4T25D
b25kaXRpb24oKnRoaXMsIGNvbmQsIHJpZ2h0KTsKKyAgICAgICAgTWFjcm9Bc3NlbWJsZXJIZWxw
ZXJzOjpsb2FkOE9uQ29uZGl0aW9uKCp0aGlzLCBjb25kLCBsZWZ0LCBkYXRhVGVtcFJlZ2lzdGVy
KTsKICAgICAgICAgbW92ZShyaWdodDgsIGltbVRlbXBSZWdpc3Rlcik7CiAgICAgICAgIGNvbXBh
cmUzMihjb25kLCBkYXRhVGVtcFJlZ2lzdGVyLCBpbW1UZW1wUmVnaXN0ZXIsIGRlc3QpOwogICAg
IH0KIAogICAgIEp1bXAgYnJhbmNoOChSZWxhdGlvbmFsQ29uZGl0aW9uIGNvbmQsIEJhc2VJbmRl
eCBsZWZ0LCBUcnVzdGVkSW1tMzIgcmlnaHQpCiAgICAgewotICAgICAgICBUcnVzdGVkSW1tMzIg
cmlnaHQ4KHN0YXRpY19jYXN0PGludDhfdD4ocmlnaHQubV92YWx1ZSkpOwotICAgICAgICBsb2Fk
OChsZWZ0LCBkYXRhVGVtcFJlZ2lzdGVyKTsKKyAgICAgICAgVHJ1c3RlZEltbTMyIHJpZ2h0OCA9
IE1hY3JvQXNzZW1ibGVySGVscGVyczo6bWFzazhPbkNvbmRpdGlvbigqdGhpcywgY29uZCwgcmln
aHQpOworICAgICAgICBNYWNyb0Fzc2VtYmxlckhlbHBlcnM6OmxvYWQ4T25Db25kaXRpb24oKnRo
aXMsIGNvbmQsIGxlZnQsIGRhdGFUZW1wUmVnaXN0ZXIpOwogICAgICAgICAvLyBCZSBjYXJlZnVs
IHRoYXQgdGhlIHByZXZpb3VzIGxvYWQ4KCkgdXNlcyBpbW1UZW1wUmVnaXN0ZXIuCiAgICAgICAg
IC8vIFNvLCB3ZSBuZWVkIHRvIHB1dCBtb3ZlKCkgYWZ0ZXIgbG9hZDgoKS4KICAgICAgICAgbW92
ZShyaWdodDgsIGltbVRlbXBSZWdpc3Rlcik7CkBAIC0xNjI4LDIzICsxNjI4LDIzIEBAIGNsYXNz
IE1hY3JvQXNzZW1ibGVyTUlQUyA6IHB1YmxpYyBBYnN0cmFjdE1hY3JvQXNzZW1ibGVyPE1JUFNB
c3NlbWJsZXIsIE1hY3JvQXNzCiAKICAgICBKdW1wIGJyYW5jaFRlc3Q4KFJlc3VsdENvbmRpdGlv
biBjb25kLCBCYXNlSW5kZXggYWRkcmVzcywgVHJ1c3RlZEltbTMyIG1hc2sgPSBUcnVzdGVkSW1t
MzIoLTEpKQogICAgIHsKLSAgICAgICAgVHJ1c3RlZEltbTMyIG1hc2s4KHN0YXRpY19jYXN0PGlu
dDhfdD4obWFzay5tX3ZhbHVlKSk7Ci0gICAgICAgIGxvYWQ4KGFkZHJlc3MsIGRhdGFUZW1wUmVn
aXN0ZXIpOworICAgICAgICBUcnVzdGVkSW1tMzIgbWFzazggPSBNYWNyb0Fzc2VtYmxlckhlbHBl
cnM6Om1hc2s4T25Db25kaXRpb24oKnRoaXMsIGNvbmQsIG1hc2spOworICAgICAgICBNYWNyb0Fz
c2VtYmxlckhlbHBlcnM6OmxvYWQ4T25Db25kaXRpb24oKnRoaXMsIGNvbmQsIGFkZHJlc3MsIGRh
dGFUZW1wUmVnaXN0ZXIpOwogICAgICAgICByZXR1cm4gYnJhbmNoVGVzdDMyKGNvbmQsIGRhdGFU
ZW1wUmVnaXN0ZXIsIG1hc2s4KTsKICAgICB9CiAKICAgICBKdW1wIGJyYW5jaFRlc3Q4KFJlc3Vs
dENvbmRpdGlvbiBjb25kLCBBZGRyZXNzIGFkZHJlc3MsIFRydXN0ZWRJbW0zMiBtYXNrID0gVHJ1
c3RlZEltbTMyKC0xKSkKICAgICB7Ci0gICAgICAgIFRydXN0ZWRJbW0zMiBtYXNrOChzdGF0aWNf
Y2FzdDxpbnQ4X3Q+KG1hc2subV92YWx1ZSkpOwotICAgICAgICBsb2FkOChhZGRyZXNzLCBkYXRh
VGVtcFJlZ2lzdGVyKTsKKyAgICAgICAgVHJ1c3RlZEltbTMyIG1hc2s4ID0gTWFjcm9Bc3NlbWJs
ZXJIZWxwZXJzOjptYXNrOE9uQ29uZGl0aW9uKCp0aGlzLCBjb25kLCBtYXNrKTsKKyAgICAgICAg
TWFjcm9Bc3NlbWJsZXJIZWxwZXJzOjpsb2FkOE9uQ29uZGl0aW9uKCp0aGlzLCBjb25kLCBhZGRy
ZXNzLCBkYXRhVGVtcFJlZ2lzdGVyKTsKICAgICAgICAgcmV0dXJuIGJyYW5jaFRlc3QzMihjb25k
LCBkYXRhVGVtcFJlZ2lzdGVyLCBtYXNrOCk7CiAgICAgfQogCiAgICAgSnVtcCBicmFuY2hUZXN0
OChSZXN1bHRDb25kaXRpb24gY29uZCwgQWJzb2x1dGVBZGRyZXNzIGFkZHJlc3MsIFRydXN0ZWRJ
bW0zMiBtYXNrID0gVHJ1c3RlZEltbTMyKC0xKSkKICAgICB7Ci0gICAgICAgIFRydXN0ZWRJbW0z
MiBtYXNrOChzdGF0aWNfY2FzdDxpbnQ4X3Q+KG1hc2subV92YWx1ZSkpOworICAgICAgICBUcnVz
dGVkSW1tMzIgbWFzazggPSBNYWNyb0Fzc2VtYmxlckhlbHBlcnM6Om1hc2s4T25Db25kaXRpb24o
KnRoaXMsIGNvbmQsIG1hc2spOwogICAgICAgICBtb3ZlKFRydXN0ZWRJbW1QdHIoYWRkcmVzcy5t
X3B0ciksIGRhdGFUZW1wUmVnaXN0ZXIpOwotICAgICAgICBsb2FkOChBZGRyZXNzKGRhdGFUZW1w
UmVnaXN0ZXIpLCBkYXRhVGVtcFJlZ2lzdGVyKTsKKyAgICAgICAgTWFjcm9Bc3NlbWJsZXJIZWxw
ZXJzOjpsb2FkOE9uQ29uZGl0aW9uKCp0aGlzLCBjb25kLCBBZGRyZXNzKGRhdGFUZW1wUmVnaXN0
ZXIpLCBkYXRhVGVtcFJlZ2lzdGVyKTsKICAgICAgICAgcmV0dXJuIGJyYW5jaFRlc3QzMihjb25k
LCBkYXRhVGVtcFJlZ2lzdGVyLCBtYXNrOCk7CiAgICAgfQogCkBAIC0yMjE4LDggKzIyMTgsOCBA
QCBjbGFzcyBNYWNyb0Fzc2VtYmxlck1JUFMgOiBwdWJsaWMgQWJzdHJhY3RNYWNyb0Fzc2VtYmxl
cjxNSVBTQXNzZW1ibGVyLCBNYWNyb0FzcwogICAgIHZvaWQgdGVzdDgoUmVzdWx0Q29uZGl0aW9u
IGNvbmQsIEFkZHJlc3MgYWRkcmVzcywgVHJ1c3RlZEltbTMyIG1hc2ssIFJlZ2lzdGVySUQgZGVz
dCkKICAgICB7CiAgICAgICAgIEFTU0VSVCgoY29uZCA9PSBaZXJvKSB8fCAoY29uZCA9PSBOb25a
ZXJvKSk7Ci0gICAgICAgIFRydXN0ZWRJbW0zMiBtYXNrOChzdGF0aWNfY2FzdDxpbnQ4X3Q+KG1h
c2subV92YWx1ZSkpOwotICAgICAgICBsb2FkOChhZGRyZXNzLCBkYXRhVGVtcFJlZ2lzdGVyKTsK
KyAgICAgICAgVHJ1c3RlZEltbTMyIG1hc2s4ID0gTWFjcm9Bc3NlbWJsZXJIZWxwZXJzOjptYXNr
OE9uQ29uZGl0aW9uKCp0aGlzLCBjb25kLCBtYXNrKTsKKyAgICAgICAgTWFjcm9Bc3NlbWJsZXJI
ZWxwZXJzOjpsb2FkOE9uQ29uZGl0aW9uKCp0aGlzLCBjb25kLCBhZGRyZXNzLCBkYXRhVGVtcFJl
Z2lzdGVyKTsKICAgICAgICAgaWYgKG1hc2s4Lm1fdmFsdWUgPT0gLTEgJiYgIW1fZml4ZWRXaWR0
aCkgewogICAgICAgICAgICAgaWYgKGNvbmQgPT0gWmVybykKICAgICAgICAgICAgICAgICBtX2Fz
c2VtYmxlci5zbHRpdShkZXN0LCBkYXRhVGVtcFJlZ2lzdGVyLCAxKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJTSDQuaCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJTSDQuaAppbmRleCBlZWNj
NDE1ZjViZTM1MmRlNTlkODkxNGRiZDAwZmYyNWY2YzU1YTVmLi5kMjU4NjcxZjRjZjBiYmUxNzgw
ZDgyMDY5ODkyZGFkNDJmNDIzNWE4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
YXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyU0g0LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlclNINC5oCkBAIC0xNjA1LDkgKzE2MDUsOSBAQCBjbGFz
cyBNYWNyb0Fzc2VtYmxlclNINCA6IHB1YmxpYyBBYnN0cmFjdE1hY3JvQXNzZW1ibGVyPFNINEFz
c2VtYmxlciwgTWFjcm9Bc3NlbQogCiAgICAgSnVtcCBicmFuY2hUZXN0OChSZXN1bHRDb25kaXRp
b24gY29uZCwgQWRkcmVzcyBhZGRyZXNzLCBUcnVzdGVkSW1tMzIgbWFzayA9IFRydXN0ZWRJbW0z
MigtMSkpCiAgICAgewotICAgICAgICBUcnVzdGVkSW1tMzIgbWFzazgoc3RhdGljX2Nhc3Q8aW50
OF90PihtYXNrLm1fdmFsdWUpKTsKKyAgICAgICAgVHJ1c3RlZEltbTMyIG1hc2s4ID0gTWFjcm9B
c3NlbWJsZXJIZWxwZXJzOjptYXNrOE9uQ29uZGl0aW9uKCp0aGlzLCBjb25kLCBtYXNrKTsKICAg
ICAgICAgUmVnaXN0ZXJJRCBhZGRyZXNzVGVtcFJlZ2lzdGVyID0gY2xhaW1TY3JhdGNoKCk7Ci0g
ICAgICAgIGxvYWQ4KGFkZHJlc3MsIGFkZHJlc3NUZW1wUmVnaXN0ZXIpOworICAgICAgICBNYWNy
b0Fzc2VtYmxlckhlbHBlcnM6OmxvYWQ4T25Db25kaXRpb24oKnRoaXMsIGNvbmQsIGFkZHJlc3Ms
IGFkZHJlc3NUZW1wUmVnaXN0ZXIpOwogICAgICAgICBKdW1wIGptcCA9IGJyYW5jaFRlc3QzMihj
b25kLCBhZGRyZXNzVGVtcFJlZ2lzdGVyLCBtYXNrOCk7CiAgICAgICAgIHJlbGVhc2VTY3JhdGNo
KGFkZHJlc3NUZW1wUmVnaXN0ZXIpOwogICAgICAgICByZXR1cm4gam1wOwpAQCAtMTYxNSw5ICsx
NjE1LDkgQEAgY2xhc3MgTWFjcm9Bc3NlbWJsZXJTSDQgOiBwdWJsaWMgQWJzdHJhY3RNYWNyb0Fz
c2VtYmxlcjxTSDRBc3NlbWJsZXIsIE1hY3JvQXNzZW0KIAogICAgIEp1bXAgYnJhbmNoVGVzdDgo
UmVzdWx0Q29uZGl0aW9uIGNvbmQsIEJhc2VJbmRleCBhZGRyZXNzLCBUcnVzdGVkSW1tMzIgbWFz
ayA9IFRydXN0ZWRJbW0zMigtMSkpCiAgICAgewotICAgICAgICBUcnVzdGVkSW1tMzIgbWFzazgo
c3RhdGljX2Nhc3Q8aW50OF90PihtYXNrLm1fdmFsdWUpKTsKKyAgICAgICAgVHJ1c3RlZEltbTMy
IG1hc2s4ID0gTWFjcm9Bc3NlbWJsZXJIZWxwZXJzOjptYXNrOE9uQ29uZGl0aW9uKCp0aGlzLCBj
b25kLCBtYXNrKTsKICAgICAgICAgUmVnaXN0ZXJJRCBhZGRyZXNzVGVtcFJlZ2lzdGVyID0gY2xh
aW1TY3JhdGNoKCk7Ci0gICAgICAgIGxvYWQ4KGFkZHJlc3MsIGFkZHJlc3NUZW1wUmVnaXN0ZXIp
OworICAgICAgICBNYWNyb0Fzc2VtYmxlckhlbHBlcnM6OmxvYWQ4T25Db25kaXRpb24oKnRoaXMs
IGNvbmQsIGFkZHJlc3MsIGFkZHJlc3NUZW1wUmVnaXN0ZXIpOwogICAgICAgICBKdW1wIGptcCA9
IGJyYW5jaFRlc3QzMihjb25kLCBhZGRyZXNzVGVtcFJlZ2lzdGVyLCBtYXNrOCk7CiAgICAgICAg
IHJlbGVhc2VTY3JhdGNoKGFkZHJlc3NUZW1wUmVnaXN0ZXIpOwogICAgICAgICByZXR1cm4gam1w
OwpAQCAtMTYyNSwxMCArMTYyNSwxMCBAQCBjbGFzcyBNYWNyb0Fzc2VtYmxlclNINCA6IHB1Ymxp
YyBBYnN0cmFjdE1hY3JvQXNzZW1ibGVyPFNINEFzc2VtYmxlciwgTWFjcm9Bc3NlbQogCiAgICAg
SnVtcCBicmFuY2hUZXN0OChSZXN1bHRDb25kaXRpb24gY29uZCwgQWJzb2x1dGVBZGRyZXNzIGFk
ZHJlc3MsIFRydXN0ZWRJbW0zMiBtYXNrID0gVHJ1c3RlZEltbTMyKC0xKSkKICAgICB7Ci0gICAg
ICAgIFRydXN0ZWRJbW0zMiBtYXNrOChzdGF0aWNfY2FzdDxpbnQ4X3Q+KG1hc2subV92YWx1ZSkp
OworICAgICAgICBUcnVzdGVkSW1tMzIgbWFzazggPSBNYWNyb0Fzc2VtYmxlckhlbHBlcnM6Om1h
c2s4T25Db25kaXRpb24oKnRoaXMsIGNvbmQsIG1hc2spOwogICAgICAgICBSZWdpc3RlcklEIGFk
ZHJlc3NUZW1wUmVnaXN0ZXIgPSBjbGFpbVNjcmF0Y2goKTsKICAgICAgICAgbW92ZShUcnVzdGVk
SW1tUHRyKGFkZHJlc3MubV9wdHIpLCBhZGRyZXNzVGVtcFJlZ2lzdGVyKTsKLSAgICAgICAgbG9h
ZDgoQWRkcmVzcyhhZGRyZXNzVGVtcFJlZ2lzdGVyKSwgYWRkcmVzc1RlbXBSZWdpc3Rlcik7Cisg
ICAgICAgIE1hY3JvQXNzZW1ibGVySGVscGVyczo6bG9hZDhPbkNvbmRpdGlvbigqdGhpcywgY29u
ZCwgQWRkcmVzcyhhZGRyZXNzVGVtcFJlZ2lzdGVyKSwgYWRkcmVzc1RlbXBSZWdpc3Rlcik7CiAg
ICAgICAgIEp1bXAgam1wID0gYnJhbmNoVGVzdDMyKGNvbmQsIGFkZHJlc3NUZW1wUmVnaXN0ZXIs
IG1hc2s4KTsKICAgICAgICAgcmVsZWFzZVNjcmF0Y2goYWRkcmVzc1RlbXBSZWdpc3Rlcik7CiAg
ICAgICAgIHJldHVybiBqbXA7CkBAIC0xNjQ2LDkgKzE2NDYsOSBAQCBjbGFzcyBNYWNyb0Fzc2Vt
YmxlclNINCA6IHB1YmxpYyBBYnN0cmFjdE1hY3JvQXNzZW1ibGVyPFNINEFzc2VtYmxlciwgTWFj
cm9Bc3NlbQogCiAgICAgSnVtcCBicmFuY2g4KFJlbGF0aW9uYWxDb25kaXRpb24gY29uZCwgQWRk
cmVzcyBsZWZ0LCBUcnVzdGVkSW1tMzIgcmlnaHQpCiAgICAgewotICAgICAgICBUcnVzdGVkSW1t
MzIgcmlnaHQ4KHN0YXRpY19jYXN0PGludDhfdD4ocmlnaHQubV92YWx1ZSkpOworICAgICAgICBU
cnVzdGVkSW1tMzIgcmlnaHQ4ID0gTWFjcm9Bc3NlbWJsZXJIZWxwZXJzOjptYXNrOE9uQ29uZGl0
aW9uKCp0aGlzLCBjb25kLCByaWdodCk7CiAgICAgICAgIFJlZ2lzdGVySUQgYWRkcmVzc1RlbXBS
ZWdpc3RlciA9IGNsYWltU2NyYXRjaCgpOwotICAgICAgICBsb2FkOChsZWZ0LCBhZGRyZXNzVGVt
cFJlZ2lzdGVyKTsKKyAgICAgICAgTWFjcm9Bc3NlbWJsZXJIZWxwZXJzOjpsb2FkOE9uQ29uZGl0
aW9uKCp0aGlzLCBjb25kLCBsZWZ0LCBhZGRyZXNzVGVtcFJlZ2lzdGVyKTsKICAgICAgICAgSnVt
cCBqbXAgPSBicmFuY2gzMihjb25kLCBhZGRyZXNzVGVtcFJlZ2lzdGVyLCByaWdodDgpOwogICAg
ICAgICByZWxlYXNlU2NyYXRjaChhZGRyZXNzVGVtcFJlZ2lzdGVyKTsKICAgICAgICAgcmV0dXJu
IGptcDsKQEAgLTE2NTYsOSArMTY1Niw5IEBAIGNsYXNzIE1hY3JvQXNzZW1ibGVyU0g0IDogcHVi
bGljIEFic3RyYWN0TWFjcm9Bc3NlbWJsZXI8U0g0QXNzZW1ibGVyLCBNYWNyb0Fzc2VtCiAKICAg
ICBKdW1wIGJyYW5jaDgoUmVsYXRpb25hbENvbmRpdGlvbiBjb25kLCBBYnNvbHV0ZUFkZHJlc3Mg
bGVmdCwgVHJ1c3RlZEltbTMyIHJpZ2h0KQogICAgIHsKLSAgICAgICAgVHJ1c3RlZEltbTMyIHJp
Z2h0OChzdGF0aWNfY2FzdDxpbnQ4X3Q+KHJpZ2h0Lm1fdmFsdWUpKTsKKyAgICAgICAgVHJ1c3Rl
ZEltbTMyIHJpZ2h0OCA9IE1hY3JvQXNzZW1ibGVySGVscGVyczo6bWFzazhPbkNvbmRpdGlvbigq
dGhpcywgY29uZCwgcmlnaHQpOwogICAgICAgICBSZWdpc3RlcklEIGFkZHJlc3NUZW1wUmVnaXN0
ZXIgPSBjbGFpbVNjcmF0Y2goKTsKLSAgICAgICAgbG9hZDgobGVmdCwgYWRkcmVzc1RlbXBSZWdp
c3Rlcik7CisgICAgICAgIE1hY3JvQXNzZW1ibGVySGVscGVyczo6bG9hZDhPbkNvbmRpdGlvbigq
dGhpcywgY29uZCwgbGVmdCwgYWRkcmVzc1RlbXBSZWdpc3Rlcik7CiAgICAgICAgIEp1bXAgam1w
ID0gYnJhbmNoMzIoY29uZCwgYWRkcmVzc1RlbXBSZWdpc3RlciwgcmlnaHQ4KTsKICAgICAgICAg
cmVsZWFzZVNjcmF0Y2goYWRkcmVzc1RlbXBSZWdpc3Rlcik7CiAgICAgICAgIHJldHVybiBqbXA7
CkBAIC0xNjY2LDkgKzE2NjYsOSBAQCBjbGFzcyBNYWNyb0Fzc2VtYmxlclNINCA6IHB1YmxpYyBB
YnN0cmFjdE1hY3JvQXNzZW1ibGVyPFNINEFzc2VtYmxlciwgTWFjcm9Bc3NlbQogCiAgICAgdm9p
ZCBjb21wYXJlOChSZWxhdGlvbmFsQ29uZGl0aW9uIGNvbmQsIEFkZHJlc3MgbGVmdCwgVHJ1c3Rl
ZEltbTMyIHJpZ2h0LCBSZWdpc3RlcklEIGRlc3QpCiAgICAgewotICAgICAgICBUcnVzdGVkSW1t
MzIgcmlnaHQ4KHN0YXRpY19jYXN0PGludDhfdD4ocmlnaHQubV92YWx1ZSkpOworICAgICAgICBU
cnVzdGVkSW1tMzIgcmlnaHQ4ID0gTWFjcm9Bc3NlbWJsZXJIZWxwZXJzOjptYXNrOE9uQ29uZGl0
aW9uKCp0aGlzLCBjb25kLCByaWdodCk7CiAgICAgICAgIFJlZ2lzdGVySUQgYWRkcmVzc1RlbXBS
ZWdpc3RlciA9IGNsYWltU2NyYXRjaCgpOwotICAgICAgICBsb2FkOChsZWZ0LCBhZGRyZXNzVGVt
cFJlZ2lzdGVyKTsKKyAgICAgICAgTWFjcm9Bc3NlbWJsZXJIZWxwZXJzOjpsb2FkOE9uQ29uZGl0
aW9uKCp0aGlzLCBjb25kLCBsZWZ0LCBhZGRyZXNzVGVtcFJlZ2lzdGVyKTsKICAgICAgICAgY29t
cGFyZTMyKGNvbmQsIGFkZHJlc3NUZW1wUmVnaXN0ZXIsIHJpZ2h0OCwgZGVzdCk7CiAgICAgICAg
IHJlbGVhc2VTY3JhdGNoKGFkZHJlc3NUZW1wUmVnaXN0ZXIpOwogICAgIH0KQEAgLTE4NDEsOSAr
MTg0MSw5IEBAIGNsYXNzIE1hY3JvQXNzZW1ibGVyU0g0IDogcHVibGljIEFic3RyYWN0TWFjcm9B
c3NlbWJsZXI8U0g0QXNzZW1ibGVyLCBNYWNyb0Fzc2VtCiAgICAgewogICAgICAgICBBU1NFUlQo
KGNvbmQgPT0gWmVybykgfHwgKGNvbmQgPT0gTm9uWmVybykpOwogCi0gICAgICAgIFRydXN0ZWRJ
bW0zMiBtYXNrOChzdGF0aWNfY2FzdDxpbnQ4X3Q+KG1hc2subV92YWx1ZSkpOworICAgICAgICBU
cnVzdGVkSW1tMzIgbWFzazggPSBNYWNyb0Fzc2VtYmxlckhlbHBlcnM6Om1hc2s4T25Db25kaXRp
b24oKnRoaXMsIGNvbmQsIG1hc2spOwogCi0gICAgICAgIGxvYWQ4KGFkZHJlc3MsIGRlc3QpOwor
ICAgICAgICBNYWNyb0Fzc2VtYmxlckhlbHBlcnM6OmxvYWQ4T25Db25kaXRpb24oKnRoaXMsIGNv
bmQsIGFkZHJlc3MsIGRlc3QpOwogICAgICAgICBpZiAobWFzazgubV92YWx1ZSA9PSAtMSkKICAg
ICAgICAgICAgIGNvbXBhcmUzMigwLCBkZXN0LCBzdGF0aWNfY2FzdDxSZWxhdGlvbmFsQ29uZGl0
aW9uPihjb25kKSk7CiAgICAgICAgIGVsc2UKQEAgLTE5NjUsMTIgKzE5NjUsMTIgQEAgY2xhc3Mg
TWFjcm9Bc3NlbWJsZXJTSDQgOiBwdWJsaWMgQWJzdHJhY3RNYWNyb0Fzc2VtYmxlcjxTSDRBc3Nl
bWJsZXIsIE1hY3JvQXNzZW0KIAogICAgIEp1bXAgYnJhbmNoOChSZWxhdGlvbmFsQ29uZGl0aW9u
IGNvbmQsIEJhc2VJbmRleCBsZWZ0LCBUcnVzdGVkSW1tMzIgcmlnaHQpCiAgICAgewotICAgICAg
ICBUcnVzdGVkSW1tMzIgcmlnaHQ4KHN0YXRpY19jYXN0PGludDhfdD4ocmlnaHQubV92YWx1ZSkp
OworICAgICAgICBUcnVzdGVkSW1tMzIgcmlnaHQ4ID0gTWFjcm9Bc3NlbWJsZXJIZWxwZXJzOjpt
YXNrOE9uQ29uZGl0aW9uKCp0aGlzLCBjb25kLCByaWdodCk7CiAgICAgICAgIFJlZ2lzdGVySUQg
bGVmdHRtcCA9IGNsYWltU2NyYXRjaCgpOwogCiAgICAgICAgIGxvYWRFZmZlY3RpdmVBZGRyZXNz
KGxlZnQsIGxlZnR0bXApOwogCi0gICAgICAgIGxvYWQ4KGxlZnR0bXAsIGxlZnR0bXApOworICAg
ICAgICBNYWNyb0Fzc2VtYmxlckhlbHBlcnM6OmxvYWQ4T25Db25kaXRpb24oKnRoaXMsIGNvbmQs
IGxlZnR0bXAsIGxlZnR0bXApOwogICAgICAgICBSZWdpc3RlcklEIHJpZ2h0dG1wID0gY2xhaW1T
Y3JhdGNoKCk7CiAgICAgICAgIG1fYXNzZW1ibGVyLmxvYWRDb25zdGFudChyaWdodDgubV92YWx1
ZSwgcmlnaHR0bXApOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1i
bGVyL01hY3JvQXNzZW1ibGVyWDg2XzY0LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1i
bGVyL01hY3JvQXNzZW1ibGVyWDg2XzY0LmgKaW5kZXggMzc5NzI4MjEzZWVmMDEwMGQ1NmZkZDJm
ODkwZTVmNTg4MDA2M2ExZi4uMDdmODYyMGZhYmYyMmMzYzQ3NjJmNWEyY2E3YWJiZDU1YjcwMmU2
MiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2Vt
Ymxlclg4Nl82NC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9B
c3NlbWJsZXJYODZfNjQuaApAQCAtMTIyMCw5ICsxMjIwLDggQEAgY2xhc3MgTWFjcm9Bc3NlbWJs
ZXJYODZfNjQgOiBwdWJsaWMgTWFjcm9Bc3NlbWJsZXJYODZDb21tb24gewogICAgIHVzaW5nIE1h
Y3JvQXNzZW1ibGVyWDg2Q29tbW9uOjpicmFuY2g4OwogICAgIEp1bXAgYnJhbmNoOChSZWxhdGlv
bmFsQ29uZGl0aW9uIGNvbmQsIEFic29sdXRlQWRkcmVzcyBsZWZ0LCBUcnVzdGVkSW1tMzIgcmln
aHQpCiAgICAgewotICAgICAgICBUcnVzdGVkSW1tMzIgcmlnaHQ4KHN0YXRpY19jYXN0PGludDhf
dD4ocmlnaHQubV92YWx1ZSkpOwogICAgICAgICBNYWNyb0Fzc2VtYmxlclg4NkNvbW1vbjo6bW92
ZShUcnVzdGVkSW1tUHRyKGxlZnQubV9wdHIpLCBzY3JhdGNoUmVnaXN0ZXIoKSk7Ci0gICAgICAg
IHJldHVybiBNYWNyb0Fzc2VtYmxlclg4NkNvbW1vbjo6YnJhbmNoOChjb25kLCBBZGRyZXNzKHNj
cmF0Y2hSZWdpc3RlcigpKSwgcmlnaHQ4KTsKKyAgICAgICAgcmV0dXJuIE1hY3JvQXNzZW1ibGVy
WDg2Q29tbW9uOjpicmFuY2g4KGNvbmQsIEFkZHJlc3Moc2NyYXRjaFJlZ2lzdGVyKCkpLCByaWdo
dCk7CiAgICAgfQogICAgIAogICAgIHVzaW5nIE1hY3JvQXNzZW1ibGVyWDg2Q29tbW9uOjpicmFu
Y2hUZXN0ODsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3Rz
L0NoYW5nZUxvZwppbmRleCAyMDdlOWUxODFhMjk4M2Y2ZjA0ZGVlYjkzOTg2ZDFhOWVhNmVkNzIx
Li4xNWM2OGU2MmZiN2ZlMWIyMTViZTNiMGVmYzg3YjU4MDg4MWIyZWI0IDEwMDY0NAotLS0gYS9M
YXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMg
KzEsMTUgQEAKKzIwMTYtMTEtMDYgIFl1c3VrZSBTdXp1a2kgIDx1dGF0YW5lLnRlYUBnbWFpbC5j
b20+CisKKyAgICAgICAgW0pTQ10gVGhlIGltcGxlbWVudGF0aW9uIG9mIDggYml0IG9wZXJhdGlv
biBpbiBNYWNyb0Fzc2VtYmxlciBzaG91bGQgY2FyZSBhYm91dCB1aW50OF90IC8gaW50OF90Cisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjQ0MzIKKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBVc2Ugb3duZXJE
b2N1bWVudC4gT25jZSBET01KSVQgZm9yIG93bmVyRG9jdW1lbnQgaXMgbGFuZGVkLCB0aGlzIHdp
bGwgdXNlIGJyYW5jaDguCisKKyAgICAgICAgKiBqcy9kb20vZG9taml0LWFjY2Vzc29yLW93bmVy
LWRvY3VtZW50LXR5cGUtY2hlY2stZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBqcy9k
b20vZG9taml0LWFjY2Vzc29yLW93bmVyLWRvY3VtZW50LXR5cGUtY2hlY2suaHRtbDogQWRkZWQu
CisKIDIwMTYtMTEtMDUgIFJ5YW4gSGFkZGFkICA8cnlhbmhhZGRhZEBhcHBsZS5jb20+CiAKICAg
ICAgICAgUmVtb3ZpbmcgZmxha3kgZXhwZWN0YXRpb25zIGZvciB0ZXN0cyB0aGF0IHdlcmUgZml4
ZWQgd2l0aCByMjA4MzI3LgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvanMvZG9tL2RvbWppdC1h
Y2Nlc3Nvci1vd25lci1kb2N1bWVudC10eXBlLWNoZWNrLWV4cGVjdGVkLnR4dCBiL0xheW91dFRl
c3RzL2pzL2RvbS9kb21qaXQtYWNjZXNzb3Itb3duZXItZG9jdW1lbnQtdHlwZS1jaGVjay1leHBl
Y3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uOGFlYzU4ZWNkYjljOGQxZTZjODE2MDJjNmQxMjAxOTRlN2Ni
MTU0MwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2pzL2RvbS9kb21qaXQtYWNjZXNz
b3Itb3duZXItZG9jdW1lbnQtdHlwZS1jaGVjay1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwxMCBA
QAorVGVzdCBET01KSVQgb3duZXJEb2N1bWVudCBhY2Nlc3NvciB3b3JrcyBvbiBBUk0gZW52aXJv
bm1lbnRzLgorCitPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1l
c3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCisKKworUEFTUyBkb25lCitQQVNT
IHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKwpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvanMvZG9tL2RvbWppdC1hY2Nlc3Nvci1vd25lci1kb2N1bWVudC10eXBl
LWNoZWNrLmh0bWwgYi9MYXlvdXRUZXN0cy9qcy9kb20vZG9taml0LWFjY2Vzc29yLW93bmVyLWRv
Y3VtZW50LXR5cGUtY2hlY2suaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5mNDY5OTYzYTEwMTNkMzI4NmVkNzI4
MTEwNjVkNWZhM2I1NWZhMzk2Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvanMvZG9t
L2RvbWppdC1hY2Nlc3Nvci1vd25lci1kb2N1bWVudC10eXBlLWNoZWNrLmh0bWwKQEAgLTAsMCAr
MSwyOCBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorPHNjcmlwdCBzcmM9Ii4u
Ly4uL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4K
KzxzY3JpcHQ+CitkZXNjcmlwdGlvbignVGVzdCBET01KSVQgb3duZXJEb2N1bWVudCBhY2Nlc3Nv
ciB3b3JrcyBvbiBBUk0gZW52aXJvbm1lbnRzLicpOworCitmdW5jdGlvbiBydW5UZXN0KCkKK3sK
KyAgICBmdW5jdGlvbiBvd25lckRvY3VtZW50KGRvYykKKyAgICB7CisgICAgICAgIHJldHVybiBk
b2Mub3duZXJEb2N1bWVudDsKKyAgICB9CisgICAgbm9JbmxpbmUob3duZXJEb2N1bWVudCk7CisK
KyAgICBmb3IgKHZhciBpID0gMDsgaSA8IDFlNDsgKytpKSB7CisgICAgICAgIGlmIChudWxsICE9
PSBvd25lckRvY3VtZW50KGRvY3VtZW50KSkKKyAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcign
RXJyb3InKTsKKyAgICB9CisgICAgdGVzdFBhc3NlZCgiZG9uZSIpOworfQorcnVuVGVzdCgpOwor
PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+
PC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>294072</attachid>
            <date>2016-11-07 11:24:59 -0800</date>
            <delta_ts>2016-11-07 14:25:47 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-164432-20161107112053.patch</filename>
            <type>text/plain</type>
            <size>48051</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjA4NDIyCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA2
NDc0N2FhMDI3YzdmZmU0MTM0ZjE1NjhmZDNkYTM4YmNhZGNiNjI2Li43NzgwNzFkMWI4OGEyN2Fi
NjdjOWMzMTlmZWE0OGQ5MzkyMDdkMWRjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw3NyBAQAorMjAxNi0xMS0wNyAgWXVzdWtlIFN1enVraSAgPHV0YXRhbmUudGVhQGdtYWls
LmNvbT4KKworICAgICAgICBbSlNDXSBUaGUgaW1wbGVtZW50YXRpb24gb2YgOCBiaXQgb3BlcmF0
aW9uIGluIE1hY3JvQXNzZW1ibGVyIHNob3VsZCBjYXJlIGFib3V0IHVpbnQ4X3QgLyBpbnQ4X3QK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE2NDQzMgor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEV4Y2VwdCBm
b3IgWDg2LCBvdXIgc3VwcG9ydGVkIE1hY3JvQXNzZW1ibGVycyBkbyBub3QgaGF2ZSB0aGUgbmF0
aXZlIDhiaXQgaW5zdHJ1Y3Rpb25zLgorICAgICAgICBJdCBtZWFucyB0aGF0IGFsbCB0aGUgOGJp
dCBpbnN0cnVjdGlvbnMgYXJlIGNvbnZlcnRlZCB0byAzMmJpdCBvcGVyYXRpb25zIGJ5IHVzaW5n
CisgICAgICAgIHNjcmF0Y2ggcmVnaXN0ZXJzLiBGb3IgZXhhbXBsZSwgQVJNNjQgYnJhbmNoOCBp
bXBsZW1lbnRhdGlvbiBpcyB0aGUgZm9sbG93aW5nLgorCisgICAgICAgICAgICBKdW1wIGJyYW5j
aDgoUmVsYXRpb25Db25kaXRpb24gY29yZCwgQWRkcmVzcyBsZWZ0LCBUcnVzdGVkSW1tMzIgcmln
aHQpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgVHJ1c3RlZEltbTMyIHJpZ2h0OChz
dGF0aWNfY2FzdDxpbnQ4X3Q+KHJpZ2h0Lm1fdmFsdWUpKTsKKyAgICAgICAgICAgICAgICBsb2Fk
OChsZWZ0LCBnZXRDYWNoZWRNZW1vcnlUZW1wUmVnaXN0ZXJJREFuZEludmFsaWRhdGUoKSk7Cisg
ICAgICAgICAgICAgICAgcmV0dXJuIGJyYW5jaDMyKGNvbmUsIG1lbW9yeVRlbXBSZWdpc3Rlciwg
cmlnaHQ4KTsKKyAgICAgICAgICAgIH0KKworICAgICAgICBUaGUgcHJvYmxlbSBpcyB0aGF0IHdl
IGV4Y2x1c2l2ZWx5IHVzZSB6ZXJvLWV4dGVuZGVkIGxvYWQgaW5zdHJ1Y3Rpb24gKGxvYWQ4KS4g
RXZlbiBpZgorICAgICAgICBSZWxhdGlvbkNvbmRpdGlvbiBpcyBzaWduZWRuZXNzIGF3YXJlIG9u
ZSwgd2UgZG8gbm90IHBlcmZvcm0gc2lnbmVkIGV4dGVuc2lvbi4KKyAgICAgICAgSXQgbWFrZXMg
c2lnbmVkbmVzcyBhd2FyZSBvcGVyYXRpb25zIHdpdGggbmVnYXRpdmUgbnVtYmVycyBpbmNvcnJl
Y3QhCisgICAgICAgIENvbnNpZGVyIHRoZSB8bGVmdHwgYWRkcmVzcyBob2xkcyBgLTFgIGluIGlu
dDhfdCBmb3JtLiBIb3dldmVyIGxvYWQ4IHdpbGwgbG9hZCBpdCBhcyAyNTUKKyAgICAgICAgaW50
byAzMmJpdCByZWdpc3Rlci4gT24gdGhlIG90aGVyIGhhbmQsIHxyaWdodHwgd2lsbCBiZSBzaWdu
ZWQgZXh0ZW5kZWQuIElmIHlvdSBwYXNzIDAKKyAgICAgICAgYXMgfHJpZ2h0fCBhbmQgTGVzc1Ro
YW4gY29uZGl0aW9uLCB0aGlzIGJyYW5jaDggc2hvdWxkIGp1bXAgYmFzZWQgb24gdGhlIGFuc3dl
ciBvZgorICAgICAgICBgLTEgPCAwYC4gQnV0IHRoZSBjdXJyZW50IE1hY3JvQXNzZW1ibGVyIHBl
cmZvcm1zIGAyNTUgPCAwYCBpbiBpbnQzMl90IGNvbnRleHQgYW5kIHJldHVybnMKKyAgICAgICAg
dGhlIGluY29ycmVjdCByZXN1bHQuCisKKyAgICAgICAgV2Ugc2hvdWxkIGZvbGxvdyB0aGUgeDg2
IG1vZGVsLiBTbyB3ZSBzaG91bGQgc2VsZWN0IHRoZSBhcHByb3ByaWF0ZSBsb2FkIG9wZXJhdGlv
biBhbmQgbWFza2luZworICAgICAgICBvcGVyYXRpb24gYmFzZWQgb24gdGhlIFJlbGF0aW9uQ29u
ZGl0aW9uLiBUaGlzIHBhdGNoIGludHJvZHVjZXMgbWFzazhPbkNvbmRpdGlvbiBhbmQgbG9hZDhP
bkNvbmRpdGlvbi4KKyAgICAgICAgQW5kIHdlIHVzZSB0aGVtIGluIDhiaXQgb3BlcmF0aW9ucyBp
bmNsdWRpbmcgYnJhbmNoOCwgYnJhbmNoVGVzdDgsIGNvbXBhcmU4LCBhbmQgdGVzdDguCisKKyAg
ICAgICAgV2UgaW50ZW50aW9uYWxseSBkbyBub3QgY2hhbmdlIGFueXRoaW5nIG9uIHg4NiBhc3Nl
bWJsZXIgc2luY2UgaXQgaGFzIHRoZSBuYXRpdmUgOGJpdCBvcGVyYXRpb25zLgorICAgICAgICBU
aGlzIHByb2JsZW0gZG9lcyBub3QgbWF0dGVyIHNpbmNlIGl0IGRvZXMgbm90IHBlcmZvcm0gZXh0
ZW5zaW9uLgorCisgICAgICAgICogSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvajoKKyAgICAgICAgKiBhc3NlbWJsZXIvQWJzdHJhY3RNYWNyb0Fzc2VtYmxlci5oOgorICAg
ICAgICAqIGFzc2VtYmxlci9NYWNyb0Fzc2VtYmxlci5oOgorICAgICAgICAoSlNDOjpNYWNyb0Fz
c2VtYmxlcjo6aXNTaWduZWQpOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlcjo6aXNVbnNp
Z25lZCk6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyOjpicmFuY2hUZXN0OCk6CisgICAg
ICAgICogYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyQVJNLmg6CisgICAgICAgIChKU0M6Ok1hY3Jv
QXNzZW1ibGVyQVJNOjpicmFuY2g4KToKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJBUk06
OmJyYW5jaFRlc3Q4KToKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJBUk06OmNvbXBhcmU4
KToKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJBUk06OnRlc3Q4KToKKyAgICAgICAgKiBh
c3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJBUk02NC5oOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2Vt
YmxlckFSTTY0Ojpsb2FkOFNpZ25lZEV4dGVuZFRvMzIpOgorICAgICAgICAoSlNDOjpNYWNyb0Fz
c2VtYmxlckFSTTY0OjpicmFuY2g4KToKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJBUk02
NDo6YnJhbmNoVGVzdDgpOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlckFSTTY0Ojpjb21w
YXJlOCk6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyQVJNNjQ6OnRlc3Q4KToKKyAgICAg
ICAgKiBhc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJBUk12Ny5oOgorICAgICAgICAoSlNDOjpNYWNy
b0Fzc2VtYmxlckFSTXY3OjpicmFuY2g4KToKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJB
Uk12Nzo6YnJhbmNoVGVzdDgpOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlckFSTXY3Ojpj
b21wYXJlOCk6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyQVJNdjc6OnRlc3Q4KToKKyAg
ICAgICAgKiBhc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJIZWxwZXJzLmg6IEFkZGVkLgorICAgICAg
ICAoSlNDOjpNYWNyb0Fzc2VtYmxlckhlbHBlcnM6OmlzU2lnbmVkKToKKyAgICAgICAgKEpTQzo6
TWFjcm9Bc3NlbWJsZXJIZWxwZXJzOjppc1Vuc2lnbmVkKToKKyAgICAgICAgKEpTQzo6TWFjcm9B
c3NlbWJsZXJIZWxwZXJzOjptYXNrOE9uQ29uZGl0aW9uKToKKyAgICAgICAgKEpTQzo6TWFjcm9B
c3NlbWJsZXJIZWxwZXJzOjpsb2FkOE9uQ29uZGl0aW9uKToKKyAgICAgICAgKiBhc3NlbWJsZXIv
TWFjcm9Bc3NlbWJsZXJNSVBTLmg6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyTUlQUzo6
YnJhbmNoOCk6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyTUlQUzo6Y29tcGFyZTgpOgor
ICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlck1JUFM6OmJyYW5jaFRlc3Q4KToKKyAgICAgICAg
KEpTQzo6TWFjcm9Bc3NlbWJsZXJNSVBTOjp0ZXN0OCk6CisgICAgICAgICogYXNzZW1ibGVyL01h
Y3JvQXNzZW1ibGVyU0g0Lmg6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyU0g0OjpicmFu
Y2hUZXN0OCk6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyU0g0OjpicmFuY2g4KToKKyAg
ICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJTSDQ6OmNvbXBhcmU4KToKKyAgICAgICAgKEpTQzo6
TWFjcm9Bc3NlbWJsZXJTSDQ6OnRlc3Q4KToKKyAgICAgICAgKiBhc3NlbWJsZXIvTWFjcm9Bc3Nl
bWJsZXJYODZfNjQuaDoKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJYODZfNjQ6OmJyYW5j
aDgpOgorCiAyMDE2LTExLTA1ICBLb25zdGFudGluIFRva2FyZXYgIDxhbm51bGVuQHlhbmRleC5y
dT4KIAogICAgICAgICBGaXhlZCBjb21waWxhdGlvbiBvZiBMTEludCB3aXRoIE1pbkdXCmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3By
b2plY3QucGJ4cHJvaiBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDYwMGNhMzQxZDM1ODJlZTRmZjA0ZGU0MTI0NjAz
MjVmNDQzMjI4NzMuLmM3M2FjYzViZDY2NmUzOGQwZjhkNWNlMTU2MjNlNjQ1NmU5ZTBlMTcgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ov
cHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29y
ZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0yMTk3LDYgKzIxOTcsNyBAQAogCQlFMzI4
REFFOTFEMzhEMDA1MDAxQTI1MjkgLyogQnl0ZWNvZGVHcmFwaC5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTNEMjY0MjgxRDM4QzA0MjAwMEJFMTc0IC8q
IEJ5dGVjb2RlR3JhcGguaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCAp
OyB9OyB9OwogCQlFMzI4REFFQTFEMzhEMDA1MDAxQTI1MjkgLyogQnl0ZWNvZGVSZXdyaXRlci5j
cHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFM0QyNjQy
OTFEMzhDMDQyMDAwQkUxNzQgLyogQnl0ZWNvZGVSZXdyaXRlci5jcHAgKi87IH07CiAJCUUzMjhE
QUVCMUQzOEQwMDUwMDFBMjUyOSAvKiBCeXRlY29kZVJld3JpdGVyLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFM0QyNjQyQTFEMzhDMDQyMDAwQkUxNzQg
LyogQnl0ZWNvZGVSZXdyaXRlci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZh
dGUsICk7IH07IH07CisJCUUzMkFCMjQ0MURDRDc1RjQwMEQ3NTMzQSAvKiBNYWNyb0Fzc2VtYmxl
ckhlbHBlcnMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IEUzODBBNzZCMURDRDcxOTUwMDBGODlFNiAvKiBNYWNyb0Fzc2VtYmxlckhlbHBlcnMuaCAqLzsg
c2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlFMzJGRjFFQTFE
QTc1NzFDMDBBOEJGMjEgLyogRE9NSklUU2xvd1BhdGhDYWxscy5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTNDQjFFMjQxREE3NTQwQTAwRkExRTU2IC8q
IERPTUpJVFNsb3dQYXRoQ2FsbHMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2
YXRlLCApOyB9OyB9OwogCQlFMzM2MzdBNTFCNjMyMjAyMDBFRTA4NDAgLyogUmVmbGVjdE9iamVj
dC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMzM2
MzdBMzFCNjMyMjAyMDBFRTA4NDAgLyogUmVmbGVjdE9iamVjdC5jcHAgKi87IH07CiAJCUUzMzYz
N0E2MUI2MzIyMDIwMEVFMDg0MCAvKiBSZWZsZWN0T2JqZWN0LmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMzM2MzdBNDFCNjMyMjAyMDBFRTA4NDAgLyog
UmVmbGVjdE9iamVjdC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7
IH07IH07CkBAIC00NjY1LDYgKzQ2NjYsNyBAQAogCQlFMzc5NEU3NDFCNzdFQjk3MDA1NTQzQUUg
LyogTW9kdWxlQW5hbHl6ZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTW9k
dWxlQW5hbHl6ZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTM3QUQ4M0ExREE0
OTI4MDAwRjNENDEyIC8qIERPTUpJVFBhdGNocG9pbnRQYXJhbXMuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gRE9NSklUUGF0Y2hwb2ludFBhcmFtcy5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQlFMzdBRDgzQjFEQTQ5MjgwMDBGM0Q0MTIgLyogRE9NSklUUmVnLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IERPTUpJVFJlZy5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OworCQlFMzgwQTc2QjFEQ0Q3MTk1MDAwRjg5RTYgLyogTWFjcm9Bc3Nl
bWJsZXJIZWxwZXJzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE1hY3JvQXNz
ZW1ibGVySGVscGVycy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFMzk2M0NFQzFC
NzNGNzUwMDBFQjRDRTUgLyogTm9kZXNBbmFseXplTW9kdWxlLmNwcCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLmNwcDsgcGF0aCA9IE5vZGVzQW5hbHl6ZU1vZHVsZS5jcHA7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCUUzOUQ5RDg0MUQzOTAwMDYwMDY2NzI4MiAvKiBJbnRlcnByZXRl
cklubGluZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSW50ZXJwcmV0ZXJJ
bmxpbmVzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUUzOURBNEE0MUI3RThCN0Mw
MDg0RjMzQSAvKiBKU01vZHVsZVJlY29yZC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5j
cHA7IHBhdGggPSBKU01vZHVsZVJlY29yZC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CkBAIC03MDY0LDYgKzcwNjYsNyBAQAogCQkJCTg2QUREMTQ0MEZEREVBOTgwMDA2RUVDMiAvKiBN
YWNyb0Fzc2VtYmxlckFSTXY3LmggKi8sCiAJCQkJMEY2REI3RUIxRDYxN0QwRjAwQ0RCRjhFIC8q
IE1hY3JvQXNzZW1ibGVyQ29kZVJlZi5jcHAgKi8sCiAJCQkJODYzQjIzREYwRkM2MEU2MjAwNzAz
QUE0IC8qIE1hY3JvQXNzZW1ibGVyQ29kZVJlZi5oICovLAorCQkJCUUzODBBNzZCMURDRDcxOTUw
MDBGODlFNiAvKiBNYWNyb0Fzc2VtYmxlckhlbHBlcnMuaCAqLywKIAkJCQk4NkM1NjhERTExQTIx
M0VFMDAwN0Y3RjAgLyogTWFjcm9Bc3NlbWJsZXJNSVBTLmggKi8sCiAJCQkJRkU2OEM2MzUxQjkw
REREOTAwNDJCQ0IzIC8qIE1hY3JvQXNzZW1ibGVyUHJpbnRlci5jcHAgKi8sCiAJCQkJRkU2OEM2
MzYxQjkwREREOTAwNDJCQ0IzIC8qIE1hY3JvQXNzZW1ibGVyUHJpbnRlci5oICovLApAQCAtODA0
OCw2ICs4MDUxLDcgQEAKIAkJCQkwRjQwRTRBODFDNDk3Rjc0MDBBNTc3RkEgLyogQWlyT3Bjb2Rl
R2VuZXJhdGVkLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjIzNUJFRTE3MTc4RTczMDA2OTBDN0Yg
LyogREZHT1NSRXhpdFByZXBhcmF0aW9uLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjYyMzc5ODFB
RTQ1Q0E3MDBENDAyRUEgLyogREZHUGhhbnRvbUluc2VydGlvblBoYXNlLmggaW4gSGVhZGVycyAq
LywKKwkJCQlFMzJBQjI0NDFEQ0Q3NUY0MDBENzUzM0EgLyogTWFjcm9Bc3NlbWJsZXJIZWxwZXJz
LmggaW4gSGVhZGVycyAqLywKIAkJCQkwRkZGQzk1QzE0RUY5MEFGMDBDNzI1MzIgLyogREZHUGhh
c2UuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGMkI5Q0VCMTlEMEJBN0QwMEIxRDFCNSAvKiBERkdQ
aGlDaGlsZHJlbi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTc4QTk3N0IxNzk3MzhCODAwOURGNzQ0
IC8qIERGR1BsYW4uaCBpbiBIZWFkZXJzICovLApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2Fzc2VtYmxlci9BYnN0cmFjdE1hY3JvQXNzZW1ibGVyLmggYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYXNzZW1ibGVyL0Fic3RyYWN0TWFjcm9Bc3NlbWJsZXIuaAppbmRleCA2ZjU1ZDdm
ZTAwNTcxMWUxOGEwOTEwYTNiYjZjYzY3MGJlMmVjMGUwLi4zN2IyMWQ4ZDdiODgyNzUzOWI2OTQ5
MGFjNjY2ZWVhMzM2ZjViNjk4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNz
ZW1ibGVyL0Fic3RyYWN0TWFjcm9Bc3NlbWJsZXIuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYXNzZW1ibGVyL0Fic3RyYWN0TWFjcm9Bc3NlbWJsZXIuaApAQCAtMzEsNiArMzEsNyBAQAog
I2luY2x1ZGUgIkNQVS5oIgogI2luY2x1ZGUgIkNvZGVMb2NhdGlvbi5oIgogI2luY2x1ZGUgIk1h
Y3JvQXNzZW1ibGVyQ29kZVJlZi5oIgorI2luY2x1ZGUgIk1hY3JvQXNzZW1ibGVySGVscGVycy5o
IgogI2luY2x1ZGUgIk9wdGlvbnMuaCIKICNpbmNsdWRlIDx3dGYvQ3J5cHRvZ3JhcGhpY2FsbHlS
YW5kb21OdW1iZXIuaD4KICNpbmNsdWRlIDx3dGYvTm9uY29weWFibGUuaD4KZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXIuaCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXIuaAppbmRleCBiNDk4MDg0
NTFiNjVmYTUyZmY5MWE4NmE4Nzg2OTgzNGZiNTYyNGIzLi41MjZjYzgyM2EwNTE5ZDViYmJlZTlh
NTUyYzExOGFhMjYzNzgxOWYxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNz
ZW1ibGVyL01hY3JvQXNzZW1ibGVyLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2Vt
Ymxlci9NYWNyb0Fzc2VtYmxlci5oCkBAIC02NSw2ICs2NSw4IEBAIHR5cGVkZWYgTWFjcm9Bc3Nl
bWJsZXJTSDQgTWFjcm9Bc3NlbWJsZXJCYXNlOwogI2Vycm9yICJUaGUgTWFjcm9Bc3NlbWJsZXIg
aXMgbm90IHN1cHBvcnRlZCBvbiB0aGlzIHBsYXRmb3JtLiIKICNlbmRpZgogCisjaW5jbHVkZSAi
TWFjcm9Bc3NlbWJsZXJIZWxwZXJzLmgiCisKIG5hbWVzcGFjZSBKU0MgewogCiBjbGFzcyBNYWNy
b0Fzc2VtYmxlciA6IHB1YmxpYyBNYWNyb0Fzc2VtYmxlckJhc2UgewpAQCAtMTQwLDcgKzE0Miw2
IEBAIGNsYXNzIE1hY3JvQXNzZW1ibGVyIDogcHVibGljIE1hY3JvQXNzZW1ibGVyQmFzZSB7CiAg
ICAgc3RhdGljIGNvbnN0IGRvdWJsZSB0d29Ub1RoZTMyOyAvLyBUaGlzIGlzIHN1cGVyIHVzZWZ1
bCBmb3Igc29tZSBkb3VibGUgY29kZS4KIAogICAgIC8vIFV0aWxpdGllcyB1c2VkIGJ5IHRoZSBE
RkcgSklULgotI2lmIEVOQUJMRShERkdfSklUKQogICAgIHVzaW5nIE1hY3JvQXNzZW1ibGVyQmFz
ZTo6aW52ZXJ0OwogICAgIAogICAgIHN0YXRpYyBEb3VibGVDb25kaXRpb24gaW52ZXJ0KERvdWJs
ZUNvbmRpdGlvbiBjb25kKQpAQCAtMjMzLDQ0ICsyMzQsMjUgQEAgY2xhc3MgTWFjcm9Bc3NlbWJs
ZXIgOiBwdWJsaWMgTWFjcm9Bc3NlbWJsZXJCYXNlIHsKICAgICAgICAgcmV0dXJuIEVxdWFsOwog
ICAgIH0KIAotICAgIC8vIFRydWUgaWYgdGhpczoKLSAgICAvLyAgICAgYnJhbmNoOChjb25kLCB2
YWx1ZSwgdmFsdWUpCi0gICAgLy8gSXMgdGhlIHNhbWUgYXMgdGhpczoKLSAgICAvLyAgICAgYnJh
bmNoMzIoY29uZCwgc2lnbkV4dDgodmFsdWUpLCBzaWduRXh0OCh2YWx1ZSkpCiAgICAgc3RhdGlj
IGJvb2wgaXNTaWduZWQoUmVsYXRpb25hbENvbmRpdGlvbiBjb25kKQogICAgIHsKLSAgICAgICAg
c3dpdGNoIChjb25kKSB7Ci0gICAgICAgIGNhc2UgRXF1YWw6Ci0gICAgICAgIGNhc2UgTm90RXF1
YWw6Ci0gICAgICAgIGNhc2UgR3JlYXRlclRoYW46Ci0gICAgICAgIGNhc2UgR3JlYXRlclRoYW5P
ckVxdWFsOgotICAgICAgICBjYXNlIExlc3NUaGFuOgotICAgICAgICBjYXNlIExlc3NUaGFuT3JF
cXVhbDoKLSAgICAgICAgICAgIHJldHVybiB0cnVlOwotICAgICAgICBkZWZhdWx0OgotICAgICAg
ICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICB9CisgICAgICAgIHJldHVybiBNYWNyb0Fzc2Vt
YmxlckhlbHBlcnM6OmlzU2lnbmVkPE1hY3JvQXNzZW1ibGVyPihjb25kKTsKICAgICB9CiAKLSAg
ICAvLyBUcnVlIGlmIHRoaXM6Ci0gICAgLy8gICAgIGJyYW5jaDgoY29uZCwgdmFsdWUsIHZhbHVl
KQotICAgIC8vIElzIHRoZSBzYW1lIGFzIHRoaXM6Ci0gICAgLy8gICAgIGJyYW5jaDMyKGNvbmQs
IHplcm9FeHQ4KHZhbHVlKSwgemVyb0V4dDgodmFsdWUpKQogICAgIHN0YXRpYyBib29sIGlzVW5z
aWduZWQoUmVsYXRpb25hbENvbmRpdGlvbiBjb25kKQogICAgIHsKLSAgICAgICAgc3dpdGNoIChj
b25kKSB7Ci0gICAgICAgIGNhc2UgRXF1YWw6Ci0gICAgICAgIGNhc2UgTm90RXF1YWw6Ci0gICAg
ICAgIGNhc2UgQWJvdmU6Ci0gICAgICAgIGNhc2UgQWJvdmVPckVxdWFsOgotICAgICAgICBjYXNl
IEJlbG93OgotICAgICAgICBjYXNlIEJlbG93T3JFcXVhbDoKLSAgICAgICAgICAgIHJldHVybiB0
cnVlOwotICAgICAgICBkZWZhdWx0OgotICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAg
ICB9CisgICAgICAgIHJldHVybiBNYWNyb0Fzc2VtYmxlckhlbHBlcnM6OmlzVW5zaWduZWQ8TWFj
cm9Bc3NlbWJsZXI+KGNvbmQpOworICAgIH0KKworICAgIHN0YXRpYyBib29sIGlzU2lnbmVkKFJl
c3VsdENvbmRpdGlvbiBjb25kKQorICAgIHsKKyAgICAgICAgcmV0dXJuIE1hY3JvQXNzZW1ibGVy
SGVscGVyczo6aXNTaWduZWQ8TWFjcm9Bc3NlbWJsZXI+KGNvbmQpOworICAgIH0KKworICAgIHN0
YXRpYyBib29sIGlzVW5zaWduZWQoUmVzdWx0Q29uZGl0aW9uIGNvbmQpCisgICAgeworICAgICAg
ICByZXR1cm4gTWFjcm9Bc3NlbWJsZXJIZWxwZXJzOjppc1Vuc2lnbmVkPE1hY3JvQXNzZW1ibGVy
Pihjb25kKTsKICAgICB9Ci0jZW5kaWYKIAogICAgIC8vIFBsYXRmb3JtIGFnbm9zdGljIGNvbnZl
bmllbmNlIGZ1bmN0aW9ucywKICAgICAvLyBkZXNjcmliZWQgaW4gdGVybXMgb2Ygb3RoZXIgbWFj
cm8gYXNzZW1ibHkgbWV0aG9kcy4KQEAgLTc5Nyw4ICs3NzksNyBAQCBjbGFzcyBNYWNyb0Fzc2Vt
YmxlciA6IHB1YmxpYyBNYWNyb0Fzc2VtYmxlckJhc2UgewogICAgIHVzaW5nIE1hY3JvQXNzZW1i
bGVyQmFzZTo6YnJhbmNoVGVzdDg7CiAgICAgSnVtcCBicmFuY2hUZXN0OChSZXN1bHRDb25kaXRp
b24gY29uZCwgRXh0ZW5kZWRBZGRyZXNzIGFkZHJlc3MsIFRydXN0ZWRJbW0zMiBtYXNrID0gVHJ1
c3RlZEltbTMyKC0xKSkKICAgICB7Ci0gICAgICAgIFRydXN0ZWRJbW0zMiBtYXNrOChzdGF0aWNf
Y2FzdDxpbnQ4X3Q+KG1hc2subV92YWx1ZSkpOwotICAgICAgICByZXR1cm4gTWFjcm9Bc3NlbWJs
ZXJCYXNlOjpicmFuY2hUZXN0OChjb25kLCBBZGRyZXNzKGFkZHJlc3MuYmFzZSwgYWRkcmVzcy5v
ZmZzZXQpLCBtYXNrOCk7CisgICAgICAgIHJldHVybiBNYWNyb0Fzc2VtYmxlckJhc2U6OmJyYW5j
aFRlc3Q4KGNvbmQsIEFkZHJlc3MoYWRkcmVzcy5iYXNlLCBhZGRyZXNzLm9mZnNldCksIG1hc2sp
OwogICAgIH0KIAogI2Vsc2UgLy8gIUNQVShYODZfNjQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyQVJNLmggYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyQVJNLmgKaW5kZXggZjExMThkODM0NjFk
YzAwYWMyNzlkOWEwNTUyNWEwZjk3NWM5MjJlNC4uODZhMmYyYzI0YTUwYWFmZTkzNzQyZTY4YzUx
MDJjODczMWFlMzExNiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxl
ci9NYWNyb0Fzc2VtYmxlckFSTS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJs
ZXIvTWFjcm9Bc3NlbWJsZXJBUk0uaApAQCAtNjMyLDIzICs2MzIsMjMgQEAgY2xhc3MgTWFjcm9B
c3NlbWJsZXJBUk0gOiBwdWJsaWMgQWJzdHJhY3RNYWNyb0Fzc2VtYmxlcjxBUk1Bc3NlbWJsZXIs
IE1hY3JvQXNzZW0KIAogICAgIEp1bXAgYnJhbmNoOChSZWxhdGlvbmFsQ29uZGl0aW9uIGNvbmQs
IEFkZHJlc3MgbGVmdCwgVHJ1c3RlZEltbTMyIHJpZ2h0KQogICAgIHsKLSAgICAgICAgVHJ1c3Rl
ZEltbTMyIHJpZ2h0OChzdGF0aWNfY2FzdDxpbnQ4X3Q+KHJpZ2h0Lm1fdmFsdWUpKTsKLSAgICAg
ICAgbG9hZDgobGVmdCwgQVJNUmVnaXN0ZXJzOjpTMSk7CisgICAgICAgIFRydXN0ZWRJbW0zMiBy
aWdodDggPSBNYWNyb0Fzc2VtYmxlckhlbHBlcnM6Om1hc2s4T25Db25kaXRpb24oKnRoaXMsIGNv
bmQsIHJpZ2h0KTsKKyAgICAgICAgTWFjcm9Bc3NlbWJsZXJIZWxwZXJzOjpsb2FkOE9uQ29uZGl0
aW9uKCp0aGlzLCBjb25kLCBsZWZ0LCBBUk1SZWdpc3RlcnM6OlMxKTsKICAgICAgICAgcmV0dXJu
IGJyYW5jaDMyKGNvbmQsIEFSTVJlZ2lzdGVyczo6UzEsIHJpZ2h0OCk7CiAgICAgfQogCiAgICAg
SnVtcCBicmFuY2g4KFJlbGF0aW9uYWxDb25kaXRpb24gY29uZCwgQmFzZUluZGV4IGxlZnQsIFRy
dXN0ZWRJbW0zMiByaWdodCkKICAgICB7Ci0gICAgICAgIFRydXN0ZWRJbW0zMiByaWdodDgoc3Rh
dGljX2Nhc3Q8aW50OF90PihyaWdodC5tX3ZhbHVlKSk7Ci0gICAgICAgIGxvYWQ4KGxlZnQsIEFS
TVJlZ2lzdGVyczo6UzEpOworICAgICAgICBUcnVzdGVkSW1tMzIgcmlnaHQ4ID0gTWFjcm9Bc3Nl
bWJsZXJIZWxwZXJzOjptYXNrOE9uQ29uZGl0aW9uKCp0aGlzLCBjb25kLCByaWdodCk7CisgICAg
ICAgIE1hY3JvQXNzZW1ibGVySGVscGVyczo6bG9hZDhPbkNvbmRpdGlvbigqdGhpcywgY29uZCwg
bGVmdCwgQVJNUmVnaXN0ZXJzOjpTMSk7CiAgICAgICAgIHJldHVybiBicmFuY2gzMihjb25kLCBB
Uk1SZWdpc3RlcnM6OlMxLCByaWdodDgpOwogICAgIH0KIAogICAgIEp1bXAgYnJhbmNoOChSZWxh
dGlvbmFsQ29uZGl0aW9uIGNvbmQsIEFic29sdXRlQWRkcmVzcyBsZWZ0LCBUcnVzdGVkSW1tMzIg
cmlnaHQpCiAgICAgewotICAgICAgICBUcnVzdGVkSW1tMzIgcmlnaHQ4KHN0YXRpY19jYXN0PGlu
dDhfdD4ocmlnaHQubV92YWx1ZSkpOworICAgICAgICBUcnVzdGVkSW1tMzIgcmlnaHQ4ID0gTWFj
cm9Bc3NlbWJsZXJIZWxwZXJzOjptYXNrOE9uQ29uZGl0aW9uKCp0aGlzLCBjb25kLCByaWdodCk7
CiAgICAgICAgIG1vdmUoVHJ1c3RlZEltbVB0cihsZWZ0Lm1fcHRyKSwgQVJNUmVnaXN0ZXJzOjpT
MSk7Ci0gICAgICAgIGxvYWQ4KEFkZHJlc3MoQVJNUmVnaXN0ZXJzOjpTMSksIEFSTVJlZ2lzdGVy
czo6UzEpOworICAgICAgICBNYWNyb0Fzc2VtYmxlckhlbHBlcnM6OmxvYWQ4T25Db25kaXRpb24o
KnRoaXMsIGNvbmQsIEFkZHJlc3MoQVJNUmVnaXN0ZXJzOjpTMSksIEFSTVJlZ2lzdGVyczo6UzEp
OwogICAgICAgICByZXR1cm4gYnJhbmNoMzIoY29uZCwgQVJNUmVnaXN0ZXJzOjpTMSwgcmlnaHQ4
KTsKICAgICB9CiAKQEAgLTcwMiwyMyArNzAyLDIzIEBAIGNsYXNzIE1hY3JvQXNzZW1ibGVyQVJN
IDogcHVibGljIEFic3RyYWN0TWFjcm9Bc3NlbWJsZXI8QVJNQXNzZW1ibGVyLCBNYWNyb0Fzc2Vt
CiAKICAgICBKdW1wIGJyYW5jaFRlc3Q4KFJlc3VsdENvbmRpdGlvbiBjb25kLCBBZGRyZXNzIGFk
ZHJlc3MsIFRydXN0ZWRJbW0zMiBtYXNrID0gVHJ1c3RlZEltbTMyKC0xKSkKICAgICB7Ci0gICAg
ICAgIFRydXN0ZWRJbW0zMiBtYXNrOChzdGF0aWNfY2FzdDxpbnQ4X3Q+KG1hc2subV92YWx1ZSkp
OwotICAgICAgICBsb2FkOChhZGRyZXNzLCBBUk1SZWdpc3RlcnM6OlMxKTsKKyAgICAgICAgVHJ1
c3RlZEltbTMyIG1hc2s4ID0gTWFjcm9Bc3NlbWJsZXJIZWxwZXJzOjptYXNrOE9uQ29uZGl0aW9u
KCp0aGlzLCBjb25kLCBtYXNrKTsKKyAgICAgICAgTWFjcm9Bc3NlbWJsZXJIZWxwZXJzOjpsb2Fk
OE9uQ29uZGl0aW9uKCp0aGlzLCBjb25kLCBhZGRyZXNzLCBBUk1SZWdpc3RlcnM6OlMxKTsKICAg
ICAgICAgcmV0dXJuIGJyYW5jaFRlc3QzMihjb25kLCBBUk1SZWdpc3RlcnM6OlMxLCBtYXNrOCk7
CiAgICAgfQogCiAgICAgSnVtcCBicmFuY2hUZXN0OChSZXN1bHRDb25kaXRpb24gY29uZCwgQmFz
ZUluZGV4IGFkZHJlc3MsIFRydXN0ZWRJbW0zMiBtYXNrID0gVHJ1c3RlZEltbTMyKC0xKSkKICAg
ICB7Ci0gICAgICAgIFRydXN0ZWRJbW0zMiBtYXNrOChzdGF0aWNfY2FzdDxpbnQ4X3Q+KG1hc2su
bV92YWx1ZSkpOwotICAgICAgICBsb2FkOChhZGRyZXNzLCBBUk1SZWdpc3RlcnM6OlMxKTsKKyAg
ICAgICAgVHJ1c3RlZEltbTMyIG1hc2s4ID0gTWFjcm9Bc3NlbWJsZXJIZWxwZXJzOjptYXNrOE9u
Q29uZGl0aW9uKCp0aGlzLCBjb25kLCBtYXNrKTsKKyAgICAgICAgTWFjcm9Bc3NlbWJsZXJIZWxw
ZXJzOjpsb2FkOE9uQ29uZGl0aW9uKCp0aGlzLCBjb25kLCBhZGRyZXNzLCBBUk1SZWdpc3RlcnM6
OlMxKTsKICAgICAgICAgcmV0dXJuIGJyYW5jaFRlc3QzMihjb25kLCBBUk1SZWdpc3RlcnM6OlMx
LCBtYXNrOCk7CiAgICAgfQogCiAgICAgSnVtcCBicmFuY2hUZXN0OChSZXN1bHRDb25kaXRpb24g
Y29uZCwgQWJzb2x1dGVBZGRyZXNzIGFkZHJlc3MsIFRydXN0ZWRJbW0zMiBtYXNrID0gVHJ1c3Rl
ZEltbTMyKC0xKSkKICAgICB7Ci0gICAgICAgIFRydXN0ZWRJbW0zMiBtYXNrOChzdGF0aWNfY2Fz
dDxpbnQ4X3Q+KG1hc2subV92YWx1ZSkpOworICAgICAgICBUcnVzdGVkSW1tMzIgbWFzazggPSBN
YWNyb0Fzc2VtYmxlckhlbHBlcnM6Om1hc2s4T25Db25kaXRpb24oKnRoaXMsIGNvbmQsIG1hc2sp
OwogICAgICAgICBtb3ZlKFRydXN0ZWRJbW1QdHIoYWRkcmVzcy5tX3B0ciksIEFSTVJlZ2lzdGVy
czo6UzEpOwotICAgICAgICBsb2FkOChBZGRyZXNzKEFSTVJlZ2lzdGVyczo6UzEpLCBBUk1SZWdp
c3RlcnM6OlMxKTsKKyAgICAgICAgTWFjcm9Bc3NlbWJsZXJIZWxwZXJzOjpsb2FkOE9uQ29uZGl0
aW9uKCp0aGlzLCBjb25kLCBBZGRyZXNzKEFSTVJlZ2lzdGVyczo6UzEpLCBBUk1SZWdpc3RlcnM6
OlMxKTsKICAgICAgICAgcmV0dXJuIGJyYW5jaFRlc3QzMihjb25kLCBBUk1SZWdpc3RlcnM6OlMx
LCBtYXNrOCk7CiAgICAgfQogCkBAIC05ODUsOCArOTg1LDggQEAgY2xhc3MgTWFjcm9Bc3NlbWJs
ZXJBUk0gOiBwdWJsaWMgQWJzdHJhY3RNYWNyb0Fzc2VtYmxlcjxBUk1Bc3NlbWJsZXIsIE1hY3Jv
QXNzZW0KIAogICAgIHZvaWQgY29tcGFyZTgoUmVsYXRpb25hbENvbmRpdGlvbiBjb25kLCBBZGRy
ZXNzIGxlZnQsIFRydXN0ZWRJbW0zMiByaWdodCwgUmVnaXN0ZXJJRCBkZXN0KQogICAgIHsKLSAg
ICAgICAgVHJ1c3RlZEltbTMyIHJpZ2h0OChzdGF0aWNfY2FzdDxpbnQ4X3Q+KHJpZ2h0Lm1fdmFs
dWUpKTsKLSAgICAgICAgbG9hZDgobGVmdCwgQVJNUmVnaXN0ZXJzOjpTMSk7CisgICAgICAgIFRy
dXN0ZWRJbW0zMiByaWdodDggPSBNYWNyb0Fzc2VtYmxlckhlbHBlcnM6Om1hc2s4T25Db25kaXRp
b24oKnRoaXMsIGNvbmQsIHJpZ2h0KTsKKyAgICAgICAgTWFjcm9Bc3NlbWJsZXJIZWxwZXJzOjps
b2FkOE9uQ29uZGl0aW9uKCp0aGlzLCBjb25kLCBsZWZ0LCBBUk1SZWdpc3RlcnM6OlMxKTsKICAg
ICAgICAgY29tcGFyZTMyKGNvbmQsIEFSTVJlZ2lzdGVyczo6UzEsIHJpZ2h0OCwgZGVzdCk7CiAg
ICAgfQogCkBAIC0xMDA4LDggKzEwMDgsOCBAQCBjbGFzcyBNYWNyb0Fzc2VtYmxlckFSTSA6IHB1
YmxpYyBBYnN0cmFjdE1hY3JvQXNzZW1ibGVyPEFSTUFzc2VtYmxlciwgTWFjcm9Bc3NlbQogCiAg
ICAgdm9pZCB0ZXN0OChSZXN1bHRDb25kaXRpb24gY29uZCwgQWRkcmVzcyBhZGRyZXNzLCBUcnVz
dGVkSW1tMzIgbWFzaywgUmVnaXN0ZXJJRCBkZXN0KQogICAgIHsKLSAgICAgICAgVHJ1c3RlZElt
bTMyIG1hc2s4KHN0YXRpY19jYXN0PGludDhfdD4obWFzay5tX3ZhbHVlKSk7Ci0gICAgICAgIGxv
YWQ4KGFkZHJlc3MsIEFSTVJlZ2lzdGVyczo6UzEpOworICAgICAgICBUcnVzdGVkSW1tMzIgbWFz
azggPSBNYWNyb0Fzc2VtYmxlckhlbHBlcnM6Om1hc2s4T25Db25kaXRpb24oKnRoaXMsIGNvbmQs
IG1hc2spOworICAgICAgICBNYWNyb0Fzc2VtYmxlckhlbHBlcnM6OmxvYWQ4T25Db25kaXRpb24o
KnRoaXMsIGNvbmQsIGFkZHJlc3MsIEFSTVJlZ2lzdGVyczo6UzEpOwogICAgICAgICB0ZXN0MzIo
Y29uZCwgQVJNUmVnaXN0ZXJzOjpTMSwgbWFzazgsIGRlc3QpOwogICAgIH0KIApkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlckFSTTY0Lmgg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyQVJNNjQuaApp
bmRleCA1ZmRjNzI5ZWVlNjNlYzA0YzA2MTljNjdmNTFjYmQyMmEzZTY5ZmI2Li45NzkwNjFhMTI5
NGJiYmNmZTAxMDBhYmJmNzNhN2ZkNzVlNTZmYjM0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyQVJNNjQuaAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyQVJNNjQuaApAQCAtMTIwMCw2ICsx
MjAwLDE0IEBAIGNsYXNzIE1hY3JvQXNzZW1ibGVyQVJNNjQgOiBwdWJsaWMgQWJzdHJhY3RNYWNy
b0Fzc2VtYmxlcjxBUk02NEFzc2VtYmxlciwgTWFjcm9BCiAgICAgICAgIG1fYXNzZW1ibGVyLmxk
cnNiPDMyPihkZXN0LCBhZGRyZXNzLmJhc2UsIG1lbW9yeVRlbXBSZWdpc3Rlcik7CiAgICAgfQog
CisgICAgdm9pZCBsb2FkOFNpZ25lZEV4dGVuZFRvMzIoY29uc3Qgdm9pZCogYWRkcmVzcywgUmVn
aXN0ZXJJRCBkZXN0KQorICAgIHsKKyAgICAgICAgbW92ZVRvQ2FjaGVkUmVnKFRydXN0ZWRJbW1Q
dHIoYWRkcmVzcyksIGNhY2hlZE1lbW9yeVRlbXBSZWdpc3RlcigpKTsKKyAgICAgICAgbV9hc3Nl
bWJsZXIubGRyc2I8MzI+KGRlc3QsIG1lbW9yeVRlbXBSZWdpc3RlciwgQVJNNjRSZWdpc3RlcnM6
OnpyKTsKKyAgICAgICAgaWYgKGRlc3QgPT0gbWVtb3J5VGVtcFJlZ2lzdGVyKQorICAgICAgICAg
ICAgY2FjaGVkTWVtb3J5VGVtcFJlZ2lzdGVyKCkuaW52YWxpZGF0ZSgpOworICAgIH0KKwogICAg
IHZvaWQgemVyb0V4dGVuZDhUbzMyKFJlZ2lzdGVySUQgc3JjLCBSZWdpc3RlcklEIGRlc3QpCiAg
ICAgewogICAgICAgICBtX2Fzc2VtYmxlci51eHRiPDMyPihkZXN0LCBzcmMpOwpAQCAtMjQyNCwy
MiArMjQzMiwyMiBAQCBjbGFzcyBNYWNyb0Fzc2VtYmxlckFSTTY0IDogcHVibGljIEFic3RyYWN0
TWFjcm9Bc3NlbWJsZXI8QVJNNjRBc3NlbWJsZXIsIE1hY3JvQQogCiAgICAgSnVtcCBicmFuY2g4
KFJlbGF0aW9uYWxDb25kaXRpb24gY29uZCwgQWRkcmVzcyBsZWZ0LCBUcnVzdGVkSW1tMzIgcmln
aHQpCiAgICAgewotICAgICAgICBUcnVzdGVkSW1tMzIgcmlnaHQ4KHN0YXRpY19jYXN0PGludDhf
dD4ocmlnaHQubV92YWx1ZSkpOwotICAgICAgICBsb2FkOChsZWZ0LCBnZXRDYWNoZWRNZW1vcnlU
ZW1wUmVnaXN0ZXJJREFuZEludmFsaWRhdGUoKSk7CisgICAgICAgIFRydXN0ZWRJbW0zMiByaWdo
dDggPSBNYWNyb0Fzc2VtYmxlckhlbHBlcnM6Om1hc2s4T25Db25kaXRpb24oKnRoaXMsIGNvbmQs
IHJpZ2h0KTsKKyAgICAgICAgTWFjcm9Bc3NlbWJsZXJIZWxwZXJzOjpsb2FkOE9uQ29uZGl0aW9u
KCp0aGlzLCBjb25kLCBsZWZ0LCBnZXRDYWNoZWRNZW1vcnlUZW1wUmVnaXN0ZXJJREFuZEludmFs
aWRhdGUoKSk7CiAgICAgICAgIHJldHVybiBicmFuY2gzMihjb25kLCBtZW1vcnlUZW1wUmVnaXN0
ZXIsIHJpZ2h0OCk7CiAgICAgfQogCiAgICAgSnVtcCBicmFuY2g4KFJlbGF0aW9uYWxDb25kaXRp
b24gY29uZCwgQmFzZUluZGV4IGxlZnQsIFRydXN0ZWRJbW0zMiByaWdodCkKICAgICB7Ci0gICAg
ICAgIFRydXN0ZWRJbW0zMiByaWdodDgoc3RhdGljX2Nhc3Q8aW50OF90PihyaWdodC5tX3ZhbHVl
KSk7Ci0gICAgICAgIGxvYWQ4KGxlZnQsIGdldENhY2hlZE1lbW9yeVRlbXBSZWdpc3RlcklEQW5k
SW52YWxpZGF0ZSgpKTsKKyAgICAgICAgVHJ1c3RlZEltbTMyIHJpZ2h0OCA9IE1hY3JvQXNzZW1i
bGVySGVscGVyczo6bWFzazhPbkNvbmRpdGlvbigqdGhpcywgY29uZCwgcmlnaHQpOworICAgICAg
ICBNYWNyb0Fzc2VtYmxlckhlbHBlcnM6OmxvYWQ4T25Db25kaXRpb24oKnRoaXMsIGNvbmQsIGxl
ZnQsIGdldENhY2hlZE1lbW9yeVRlbXBSZWdpc3RlcklEQW5kSW52YWxpZGF0ZSgpKTsKICAgICAg
ICAgcmV0dXJuIGJyYW5jaDMyKGNvbmQsIG1lbW9yeVRlbXBSZWdpc3RlciwgcmlnaHQ4KTsKICAg
ICB9CiAgICAgCiAgICAgSnVtcCBicmFuY2g4KFJlbGF0aW9uYWxDb25kaXRpb24gY29uZCwgQWJz
b2x1dGVBZGRyZXNzIGxlZnQsIFRydXN0ZWRJbW0zMiByaWdodCkKICAgICB7Ci0gICAgICAgIFRy
dXN0ZWRJbW0zMiByaWdodDgoc3RhdGljX2Nhc3Q8aW50OF90PihyaWdodC5tX3ZhbHVlKSk7Ci0g
ICAgICAgIGxvYWQ4KGxlZnQubV9wdHIsIGdldENhY2hlZE1lbW9yeVRlbXBSZWdpc3RlcklEQW5k
SW52YWxpZGF0ZSgpKTsKKyAgICAgICAgVHJ1c3RlZEltbTMyIHJpZ2h0OCA9IE1hY3JvQXNzZW1i
bGVySGVscGVyczo6bWFzazhPbkNvbmRpdGlvbigqdGhpcywgY29uZCwgcmlnaHQpOworICAgICAg
ICBNYWNyb0Fzc2VtYmxlckhlbHBlcnM6OmxvYWQ4T25Db25kaXRpb24oKnRoaXMsIGNvbmQsIGxl
ZnQubV9wdHIsIGdldENhY2hlZE1lbW9yeVRlbXBSZWdpc3RlcklEQW5kSW52YWxpZGF0ZSgpKTsK
ICAgICAgICAgcmV0dXJuIGJyYW5jaDMyKGNvbmQsIG1lbW9yeVRlbXBSZWdpc3RlciwgcmlnaHQ4
KTsKICAgICB9CiAgICAgCkBAIC0yNTgzLDMwICsyNTkxLDM1IEBAIGNsYXNzIE1hY3JvQXNzZW1i
bGVyQVJNNjQgOiBwdWJsaWMgQWJzdHJhY3RNYWNyb0Fzc2VtYmxlcjxBUk02NEFzc2VtYmxlciwg
TWFjcm9BCiAKICAgICBKdW1wIGJyYW5jaFRlc3Q4KFJlc3VsdENvbmRpdGlvbiBjb25kLCBBZGRy
ZXNzIGFkZHJlc3MsIFRydXN0ZWRJbW0zMiBtYXNrID0gVHJ1c3RlZEltbTMyKC0xKSkKICAgICB7
Ci0gICAgICAgIFRydXN0ZWRJbW0zMiBtYXNrOChzdGF0aWNfY2FzdDxpbnQ4X3Q+KG1hc2subV92
YWx1ZSkpOwotICAgICAgICBsb2FkOChhZGRyZXNzLCBnZXRDYWNoZWREYXRhVGVtcFJlZ2lzdGVy
SURBbmRJbnZhbGlkYXRlKCkpOworICAgICAgICBUcnVzdGVkSW1tMzIgbWFzazggPSBNYWNyb0Fz
c2VtYmxlckhlbHBlcnM6Om1hc2s4T25Db25kaXRpb24oKnRoaXMsIGNvbmQsIG1hc2spOworICAg
ICAgICBNYWNyb0Fzc2VtYmxlckhlbHBlcnM6OmxvYWQ4T25Db25kaXRpb24oKnRoaXMsIGNvbmQs
IGFkZHJlc3MsIGdldENhY2hlZERhdGFUZW1wUmVnaXN0ZXJJREFuZEludmFsaWRhdGUoKSk7CiAg
ICAgICAgIHJldHVybiBicmFuY2hUZXN0MzIoY29uZCwgZGF0YVRlbXBSZWdpc3RlciwgbWFzazgp
OwogICAgIH0KIAogICAgIEp1bXAgYnJhbmNoVGVzdDgoUmVzdWx0Q29uZGl0aW9uIGNvbmQsIEFi
c29sdXRlQWRkcmVzcyBhZGRyZXNzLCBUcnVzdGVkSW1tMzIgbWFzayA9IFRydXN0ZWRJbW0zMigt
MSkpCiAgICAgewotICAgICAgICBUcnVzdGVkSW1tMzIgbWFzazgoc3RhdGljX2Nhc3Q8aW50OF90
PihtYXNrLm1fdmFsdWUpKTsKLSAgICAgICAgbG9hZDgoYWRkcmVzcy5tX3B0ciwgZ2V0Q2FjaGVk
RGF0YVRlbXBSZWdpc3RlcklEQW5kSW52YWxpZGF0ZSgpKTsKKyAgICAgICAgVHJ1c3RlZEltbTMy
IG1hc2s4ID0gTWFjcm9Bc3NlbWJsZXJIZWxwZXJzOjptYXNrOE9uQ29uZGl0aW9uKCp0aGlzLCBj
b25kLCBtYXNrKTsKKyAgICAgICAgTWFjcm9Bc3NlbWJsZXJIZWxwZXJzOjpsb2FkOE9uQ29uZGl0
aW9uKCp0aGlzLCBjb25kLCBhZGRyZXNzLm1fcHRyLCBnZXRDYWNoZWREYXRhVGVtcFJlZ2lzdGVy
SURBbmRJbnZhbGlkYXRlKCkpOwogICAgICAgICByZXR1cm4gYnJhbmNoVGVzdDMyKGNvbmQsIGRh
dGFUZW1wUmVnaXN0ZXIsIG1hc2s4KTsKICAgICB9CiAKICAgICBKdW1wIGJyYW5jaFRlc3Q4KFJl
c3VsdENvbmRpdGlvbiBjb25kLCBFeHRlbmRlZEFkZHJlc3MgYWRkcmVzcywgVHJ1c3RlZEltbTMy
IG1hc2sgPSBUcnVzdGVkSW1tMzIoLTEpKQogICAgIHsKLSAgICAgICAgVHJ1c3RlZEltbTMyIG1h
c2s4KHN0YXRpY19jYXN0PGludDhfdD4obWFzay5tX3ZhbHVlKSk7CisgICAgICAgIFRydXN0ZWRJ
bW0zMiBtYXNrOCA9IE1hY3JvQXNzZW1ibGVySGVscGVyczo6bWFzazhPbkNvbmRpdGlvbigqdGhp
cywgY29uZCwgbWFzayk7CiAgICAgICAgIG1vdmUoVHJ1c3RlZEltbVB0cihyZWludGVycHJldF9j
YXN0PHZvaWQqPihhZGRyZXNzLm9mZnNldCkpLCBnZXRDYWNoZWREYXRhVGVtcFJlZ2lzdGVySURB
bmRJbnZhbGlkYXRlKCkpOwotICAgICAgICBtX2Fzc2VtYmxlci5sZHJiKGRhdGFUZW1wUmVnaXN0
ZXIsIGFkZHJlc3MuYmFzZSwgZGF0YVRlbXBSZWdpc3Rlcik7CisKKyAgICAgICAgaWYgKE1hY3Jv
QXNzZW1ibGVySGVscGVyczo6aXNVbnNpZ25lZDxNYWNyb0Fzc2VtYmxlckFSTTY0Pihjb25kKSkK
KyAgICAgICAgICAgIG1fYXNzZW1ibGVyLmxkcmIoZGF0YVRlbXBSZWdpc3RlciwgYWRkcmVzcy5i
YXNlLCBkYXRhVGVtcFJlZ2lzdGVyKTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgbV9hc3Nl
bWJsZXIubGRyc2I8MzI+KGRhdGFUZW1wUmVnaXN0ZXIsIGFkZHJlc3MuYmFzZSwgZGF0YVRlbXBS
ZWdpc3Rlcik7CisKICAgICAgICAgcmV0dXJuIGJyYW5jaFRlc3QzMihjb25kLCBkYXRhVGVtcFJl
Z2lzdGVyLCBtYXNrOCk7CiAgICAgfQogCiAgICAgSnVtcCBicmFuY2hUZXN0OChSZXN1bHRDb25k
aXRpb24gY29uZCwgQmFzZUluZGV4IGFkZHJlc3MsIFRydXN0ZWRJbW0zMiBtYXNrID0gVHJ1c3Rl
ZEltbTMyKC0xKSkKICAgICB7Ci0gICAgICAgIFRydXN0ZWRJbW0zMiBtYXNrOChzdGF0aWNfY2Fz
dDxpbnQ4X3Q+KG1hc2subV92YWx1ZSkpOwotICAgICAgICBsb2FkOChhZGRyZXNzLCBnZXRDYWNo
ZWREYXRhVGVtcFJlZ2lzdGVySURBbmRJbnZhbGlkYXRlKCkpOworICAgICAgICBUcnVzdGVkSW1t
MzIgbWFzazggPSBNYWNyb0Fzc2VtYmxlckhlbHBlcnM6Om1hc2s4T25Db25kaXRpb24oKnRoaXMs
IGNvbmQsIG1hc2spOworICAgICAgICBNYWNyb0Fzc2VtYmxlckhlbHBlcnM6OmxvYWQ4T25Db25k
aXRpb24oKnRoaXMsIGNvbmQsIGFkZHJlc3MsIGdldENhY2hlZERhdGFUZW1wUmVnaXN0ZXJJREFu
ZEludmFsaWRhdGUoKSk7CiAgICAgICAgIHJldHVybiBicmFuY2hUZXN0MzIoY29uZCwgZGF0YVRl
bXBSZWdpc3RlciwgbWFzazgpOwogICAgIH0KIApAQCAtMzAyMyw4ICszMDM2LDggQEAgY2xhc3Mg
TWFjcm9Bc3NlbWJsZXJBUk02NCA6IHB1YmxpYyBBYnN0cmFjdE1hY3JvQXNzZW1ibGVyPEFSTTY0
QXNzZW1ibGVyLCBNYWNyb0EKIAogICAgIHZvaWQgY29tcGFyZTgoUmVsYXRpb25hbENvbmRpdGlv
biBjb25kLCBBZGRyZXNzIGxlZnQsIFRydXN0ZWRJbW0zMiByaWdodCwgUmVnaXN0ZXJJRCBkZXN0
KQogICAgIHsKLSAgICAgICAgVHJ1c3RlZEltbTMyIHJpZ2h0OChzdGF0aWNfY2FzdDxpbnQ4X3Q+
KHJpZ2h0Lm1fdmFsdWUpKTsKLSAgICAgICAgbG9hZDgobGVmdCwgZ2V0Q2FjaGVkTWVtb3J5VGVt
cFJlZ2lzdGVySURBbmRJbnZhbGlkYXRlKCkpOworICAgICAgICBUcnVzdGVkSW1tMzIgcmlnaHQ4
ID0gTWFjcm9Bc3NlbWJsZXJIZWxwZXJzOjptYXNrOE9uQ29uZGl0aW9uKCp0aGlzLCBjb25kLCBy
aWdodCk7CisgICAgICAgIE1hY3JvQXNzZW1ibGVySGVscGVyczo6bG9hZDhPbkNvbmRpdGlvbigq
dGhpcywgY29uZCwgbGVmdCwgZ2V0Q2FjaGVkTWVtb3J5VGVtcFJlZ2lzdGVySURBbmRJbnZhbGlk
YXRlKCkpOwogICAgICAgICBtb3ZlKHJpZ2h0OCwgZ2V0Q2FjaGVkRGF0YVRlbXBSZWdpc3RlcklE
QW5kSW52YWxpZGF0ZSgpKTsKICAgICAgICAgY29tcGFyZTMyKGNvbmQsIG1lbW9yeVRlbXBSZWdp
c3RlciwgZGF0YVRlbXBSZWdpc3RlciwgZGVzdCk7CiAgICAgfQpAQCAtMzA0OSw4ICszMDYyLDgg
QEAgY2xhc3MgTWFjcm9Bc3NlbWJsZXJBUk02NCA6IHB1YmxpYyBBYnN0cmFjdE1hY3JvQXNzZW1i
bGVyPEFSTTY0QXNzZW1ibGVyLCBNYWNyb0EKIAogICAgIHZvaWQgdGVzdDgoUmVzdWx0Q29uZGl0
aW9uIGNvbmQsIEFkZHJlc3MgYWRkcmVzcywgVHJ1c3RlZEltbTMyIG1hc2ssIFJlZ2lzdGVySUQg
ZGVzdCkKICAgICB7Ci0gICAgICAgIFRydXN0ZWRJbW0zMiBtYXNrOChzdGF0aWNfY2FzdDxpbnQ4
X3Q+KG1hc2subV92YWx1ZSkpOwotICAgICAgICBsb2FkOChhZGRyZXNzLCBnZXRDYWNoZWRNZW1v
cnlUZW1wUmVnaXN0ZXJJREFuZEludmFsaWRhdGUoKSk7CisgICAgICAgIFRydXN0ZWRJbW0zMiBt
YXNrOCA9IE1hY3JvQXNzZW1ibGVySGVscGVyczo6bWFzazhPbkNvbmRpdGlvbigqdGhpcywgY29u
ZCwgbWFzayk7CisgICAgICAgIE1hY3JvQXNzZW1ibGVySGVscGVyczo6bG9hZDhPbkNvbmRpdGlv
bigqdGhpcywgY29uZCwgYWRkcmVzcywgZ2V0Q2FjaGVkTWVtb3J5VGVtcFJlZ2lzdGVySURBbmRJ
bnZhbGlkYXRlKCkpOwogICAgICAgICB0ZXN0MzIoY29uZCwgbWVtb3J5VGVtcFJlZ2lzdGVyLCBt
YXNrOCwgZGVzdCk7CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
YXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyQVJNdjcuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9h
c3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJBUk12Ny5oCmluZGV4IGY2NjM3ZDgyZTk0NWU4ZTI3OGQ0
NTIxNjAxNTQ0YzY1ZDZhMjg0ODUuLmFiYWQ2NmFhMmY1MGZiOWE5NDA1NDkxZGFhZGE5MDEwYzI2
YmUwMWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9B
c3NlbWJsZXJBUk12Ny5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFj
cm9Bc3NlbWJsZXJBUk12Ny5oCkBAIC0xNDkwLDcgKzE0OTAsNyBAQCBjbGFzcyBNYWNyb0Fzc2Vt
YmxlckFSTXY3IDogcHVibGljIEFic3RyYWN0TWFjcm9Bc3NlbWJsZXI8QVJNdjdBc3NlbWJsZXIs
IE1hY3JvQQogCiAgICAgSnVtcCBicmFuY2g4KFJlbGF0aW9uYWxDb25kaXRpb24gY29uZCwgUmVn
aXN0ZXJJRCBsZWZ0LCBUcnVzdGVkSW1tMzIgcmlnaHQpCiAgICAgewotICAgICAgICBUcnVzdGVk
SW1tMzIgcmlnaHQ4KHN0YXRpY19jYXN0PGludDhfdD4ocmlnaHQubV92YWx1ZSkpOworICAgICAg
ICBUcnVzdGVkSW1tMzIgcmlnaHQ4ID0gTWFjcm9Bc3NlbWJsZXJIZWxwZXJzOjptYXNrOE9uQ29u
ZGl0aW9uKCp0aGlzLCBjb25kLCByaWdodCk7CiAgICAgICAgIGNvbXBhcmUzMkFuZFNldEZsYWdz
KGxlZnQsIHJpZ2h0OCk7CiAgICAgICAgIHJldHVybiBKdW1wKG1ha2VCcmFuY2goY29uZCkpOwog
ICAgIH0KQEAgLTE0OTgsMjUgKzE0OTgsMjUgQEAgY2xhc3MgTWFjcm9Bc3NlbWJsZXJBUk12NyA6
IHB1YmxpYyBBYnN0cmFjdE1hY3JvQXNzZW1ibGVyPEFSTXY3QXNzZW1ibGVyLCBNYWNyb0EKICAg
ICBKdW1wIGJyYW5jaDgoUmVsYXRpb25hbENvbmRpdGlvbiBjb25kLCBBZGRyZXNzIGxlZnQsIFRy
dXN0ZWRJbW0zMiByaWdodCkKICAgICB7CiAgICAgICAgIC8vIHVzZSBhZGRyZXNzVGVtcFJlZ2lz
dGVyIGluY2FzZSB0aGUgYnJhbmNoOCB3ZSBjYWxsIHVzZXMgZGF0YVRlbXBSZWdpc3Rlci4gOi0v
Ci0gICAgICAgIFRydXN0ZWRJbW0zMiByaWdodDgoc3RhdGljX2Nhc3Q8aW50OF90PihyaWdodC5t
X3ZhbHVlKSk7Ci0gICAgICAgIGxvYWQ4KGxlZnQsIGFkZHJlc3NUZW1wUmVnaXN0ZXIpOworICAg
ICAgICBUcnVzdGVkSW1tMzIgcmlnaHQ4ID0gTWFjcm9Bc3NlbWJsZXJIZWxwZXJzOjptYXNrOE9u
Q29uZGl0aW9uKCp0aGlzLCBjb25kLCByaWdodCk7CisgICAgICAgIE1hY3JvQXNzZW1ibGVySGVs
cGVyczo6bG9hZDhPbkNvbmRpdGlvbigqdGhpcywgY29uZCwgbGVmdCwgYWRkcmVzc1RlbXBSZWdp
c3Rlcik7CiAgICAgICAgIHJldHVybiBicmFuY2g4KGNvbmQsIGFkZHJlc3NUZW1wUmVnaXN0ZXIs
IHJpZ2h0OCk7CiAgICAgfQogCiAgICAgSnVtcCBicmFuY2g4KFJlbGF0aW9uYWxDb25kaXRpb24g
Y29uZCwgQmFzZUluZGV4IGxlZnQsIFRydXN0ZWRJbW0zMiByaWdodCkKICAgICB7CiAgICAgICAg
IC8vIHVzZSBhZGRyZXNzVGVtcFJlZ2lzdGVyIGluY2FzZSB0aGUgYnJhbmNoMzIgd2UgY2FsbCB1
c2VzIGRhdGFUZW1wUmVnaXN0ZXIuIDotLwotICAgICAgICBUcnVzdGVkSW1tMzIgcmlnaHQ4KHN0
YXRpY19jYXN0PGludDhfdD4ocmlnaHQubV92YWx1ZSkpOwotICAgICAgICBsb2FkOChsZWZ0LCBh
ZGRyZXNzVGVtcFJlZ2lzdGVyKTsKKyAgICAgICAgVHJ1c3RlZEltbTMyIHJpZ2h0OCA9IE1hY3Jv
QXNzZW1ibGVySGVscGVyczo6bWFzazhPbkNvbmRpdGlvbigqdGhpcywgY29uZCwgcmlnaHQpOwor
ICAgICAgICBNYWNyb0Fzc2VtYmxlckhlbHBlcnM6OmxvYWQ4T25Db25kaXRpb24oKnRoaXMsIGNv
bmQsIGxlZnQsIGFkZHJlc3NUZW1wUmVnaXN0ZXIpOwogICAgICAgICByZXR1cm4gYnJhbmNoMzIo
Y29uZCwgYWRkcmVzc1RlbXBSZWdpc3RlciwgcmlnaHQ4KTsKICAgICB9CiAgICAgCiAgICAgSnVt
cCBicmFuY2g4KFJlbGF0aW9uYWxDb25kaXRpb24gY29uZCwgQWJzb2x1dGVBZGRyZXNzIGFkZHJl
c3MsIFRydXN0ZWRJbW0zMiByaWdodCkKICAgICB7CiAgICAgICAgIC8vIFVzZSBhZGRyZXNzVGVt
cFJlZ2lzdGVyIGluc3RlYWQgb2YgZGF0YVRlbXBSZWdpc3Rlciwgc2luY2UgYnJhbmNoMzIgdXNl
cyBkYXRhVGVtcFJlZ2lzdGVyLgotICAgICAgICBUcnVzdGVkSW1tMzIgcmlnaHQ4KHN0YXRpY19j
YXN0PGludDhfdD4ocmlnaHQubV92YWx1ZSkpOworICAgICAgICBUcnVzdGVkSW1tMzIgcmlnaHQ4
ID0gTWFjcm9Bc3NlbWJsZXJIZWxwZXJzOjptYXNrOE9uQ29uZGl0aW9uKCp0aGlzLCBjb25kLCBy
aWdodCk7CiAgICAgICAgIG1vdmUoVHJ1c3RlZEltbVB0cihhZGRyZXNzLm1fcHRyKSwgYWRkcmVz
c1RlbXBSZWdpc3Rlcik7Ci0gICAgICAgIGxvYWQ4KEFkZHJlc3MoYWRkcmVzc1RlbXBSZWdpc3Rl
ciksIGFkZHJlc3NUZW1wUmVnaXN0ZXIpOworICAgICAgICBNYWNyb0Fzc2VtYmxlckhlbHBlcnM6
OmxvYWQ4T25Db25kaXRpb24oKnRoaXMsIGNvbmQsIEFkZHJlc3MoYWRkcmVzc1RlbXBSZWdpc3Rl
ciksIGFkZHJlc3NUZW1wUmVnaXN0ZXIpOwogICAgICAgICByZXR1cm4gYnJhbmNoMzIoY29uZCwg
YWRkcmVzc1RlbXBSZWdpc3RlciwgcmlnaHQ4KTsKICAgICB9CiAgICAgCkBAIC0xNTUxLDI1ICsx
NTUxLDI1IEBAIGNsYXNzIE1hY3JvQXNzZW1ibGVyQVJNdjcgOiBwdWJsaWMgQWJzdHJhY3RNYWNy
b0Fzc2VtYmxlcjxBUk12N0Fzc2VtYmxlciwgTWFjcm9BCiAgICAgSnVtcCBicmFuY2hUZXN0OChS
ZXN1bHRDb25kaXRpb24gY29uZCwgQmFzZUluZGV4IGFkZHJlc3MsIFRydXN0ZWRJbW0zMiBtYXNr
ID0gVHJ1c3RlZEltbTMyKC0xKSkKICAgICB7CiAgICAgICAgIC8vIHVzZSBhZGRyZXNzVGVtcFJl
Z2lzdGVyIGluY2FzZSB0aGUgYnJhbmNoVGVzdDggd2UgY2FsbCB1c2VzIGRhdGFUZW1wUmVnaXN0
ZXIuIDotLwotICAgICAgICBUcnVzdGVkSW1tMzIgbWFzazgoc3RhdGljX2Nhc3Q8aW50OF90Piht
YXNrLm1fdmFsdWUpKTsKLSAgICAgICAgbG9hZDgoYWRkcmVzcywgYWRkcmVzc1RlbXBSZWdpc3Rl
cik7CisgICAgICAgIFRydXN0ZWRJbW0zMiBtYXNrOCA9IE1hY3JvQXNzZW1ibGVySGVscGVyczo6
bWFzazhPbkNvbmRpdGlvbigqdGhpcywgY29uZCwgbWFzayk7CisgICAgICAgIE1hY3JvQXNzZW1i
bGVySGVscGVyczo6bG9hZDhPbkNvbmRpdGlvbigqdGhpcywgY29uZCwgYWRkcmVzcywgYWRkcmVz
c1RlbXBSZWdpc3Rlcik7CiAgICAgICAgIHJldHVybiBicmFuY2hUZXN0MzIoY29uZCwgYWRkcmVz
c1RlbXBSZWdpc3RlciwgbWFzazgpOwogICAgIH0KIAogICAgIEp1bXAgYnJhbmNoVGVzdDgoUmVz
dWx0Q29uZGl0aW9uIGNvbmQsIEFkZHJlc3MgYWRkcmVzcywgVHJ1c3RlZEltbTMyIG1hc2sgPSBU
cnVzdGVkSW1tMzIoLTEpKQogICAgIHsKICAgICAgICAgLy8gdXNlIGFkZHJlc3NUZW1wUmVnaXN0
ZXIgaW5jYXNlIHRoZSBicmFuY2hUZXN0OCB3ZSBjYWxsIHVzZXMgZGF0YVRlbXBSZWdpc3Rlci4g
Oi0vCi0gICAgICAgIFRydXN0ZWRJbW0zMiBtYXNrOChzdGF0aWNfY2FzdDxpbnQ4X3Q+KG1hc2su
bV92YWx1ZSkpOwotICAgICAgICBsb2FkOChhZGRyZXNzLCBhZGRyZXNzVGVtcFJlZ2lzdGVyKTsK
KyAgICAgICAgVHJ1c3RlZEltbTMyIG1hc2s4ID0gTWFjcm9Bc3NlbWJsZXJIZWxwZXJzOjptYXNr
OE9uQ29uZGl0aW9uKCp0aGlzLCBjb25kLCBtYXNrKTsKKyAgICAgICAgTWFjcm9Bc3NlbWJsZXJI
ZWxwZXJzOjpsb2FkOE9uQ29uZGl0aW9uKCp0aGlzLCBjb25kLCBhZGRyZXNzLCBhZGRyZXNzVGVt
cFJlZ2lzdGVyKTsKICAgICAgICAgcmV0dXJuIGJyYW5jaFRlc3QzMihjb25kLCBhZGRyZXNzVGVt
cFJlZ2lzdGVyLCBtYXNrOCk7CiAgICAgfQogCiAgICAgSnVtcCBicmFuY2hUZXN0OChSZXN1bHRD
b25kaXRpb24gY29uZCwgQWJzb2x1dGVBZGRyZXNzIGFkZHJlc3MsIFRydXN0ZWRJbW0zMiBtYXNr
ID0gVHJ1c3RlZEltbTMyKC0xKSkKICAgICB7CiAgICAgICAgIC8vIHVzZSBhZGRyZXNzVGVtcFJl
Z2lzdGVyIGluY2FzZSB0aGUgYnJhbmNoVGVzdDggd2UgY2FsbCB1c2VzIGRhdGFUZW1wUmVnaXN0
ZXIuIDotLwotICAgICAgICBUcnVzdGVkSW1tMzIgbWFzazgoc3RhdGljX2Nhc3Q8aW50OF90Piht
YXNrLm1fdmFsdWUpKTsKKyAgICAgICAgVHJ1c3RlZEltbTMyIG1hc2s4ID0gTWFjcm9Bc3NlbWJs
ZXJIZWxwZXJzOjptYXNrOE9uQ29uZGl0aW9uKCp0aGlzLCBjb25kLCBtYXNrKTsKICAgICAgICAg
bW92ZShUcnVzdGVkSW1tUHRyKGFkZHJlc3MubV9wdHIpLCBhZGRyZXNzVGVtcFJlZ2lzdGVyKTsK
LSAgICAgICAgbG9hZDgoQWRkcmVzcyhhZGRyZXNzVGVtcFJlZ2lzdGVyKSwgYWRkcmVzc1RlbXBS
ZWdpc3Rlcik7CisgICAgICAgIE1hY3JvQXNzZW1ibGVySGVscGVyczo6bG9hZDhPbkNvbmRpdGlv
bigqdGhpcywgY29uZCwgQWRkcmVzcyhhZGRyZXNzVGVtcFJlZ2lzdGVyKSwgYWRkcmVzc1RlbXBS
ZWdpc3Rlcik7CiAgICAgICAgIHJldHVybiBicmFuY2hUZXN0MzIoY29uZCwgYWRkcmVzc1RlbXBS
ZWdpc3RlciwgbWFzazgpOwogICAgIH0KIApAQCAtMTc5Nyw4ICsxNzk3LDggQEAgY2xhc3MgTWFj
cm9Bc3NlbWJsZXJBUk12NyA6IHB1YmxpYyBBYnN0cmFjdE1hY3JvQXNzZW1ibGVyPEFSTXY3QXNz
ZW1ibGVyLCBNYWNyb0EKIAogICAgIHZvaWQgY29tcGFyZTgoUmVsYXRpb25hbENvbmRpdGlvbiBj
b25kLCBBZGRyZXNzIGxlZnQsIFRydXN0ZWRJbW0zMiByaWdodCwgUmVnaXN0ZXJJRCBkZXN0KQog
ICAgIHsKLSAgICAgICAgVHJ1c3RlZEltbTMyIHJpZ2h0OChzdGF0aWNfY2FzdDxpbnQ4X3Q+KHJp
Z2h0Lm1fdmFsdWUpKTsKLSAgICAgICAgbG9hZDgobGVmdCwgYWRkcmVzc1RlbXBSZWdpc3Rlcik7
CisgICAgICAgIFRydXN0ZWRJbW0zMiByaWdodDggPSBNYWNyb0Fzc2VtYmxlckhlbHBlcnM6Om1h
c2s4T25Db25kaXRpb24oKnRoaXMsIGNvbmQsIHJpZ2h0KTsKKyAgICAgICAgTWFjcm9Bc3NlbWJs
ZXJIZWxwZXJzOjpsb2FkOE9uQ29uZGl0aW9uKCp0aGlzLCBjb25kLCBsZWZ0LCBhZGRyZXNzVGVt
cFJlZ2lzdGVyKTsKICAgICAgICAgY29tcGFyZTMyKGNvbmQsIGFkZHJlc3NUZW1wUmVnaXN0ZXIs
IHJpZ2h0OCwgZGVzdCk7CiAgICAgfQogCkBAIC0xODI1LDggKzE4MjUsOCBAQCBjbGFzcyBNYWNy
b0Fzc2VtYmxlckFSTXY3IDogcHVibGljIEFic3RyYWN0TWFjcm9Bc3NlbWJsZXI8QVJNdjdBc3Nl
bWJsZXIsIE1hY3JvQQogCiAgICAgdm9pZCB0ZXN0OChSZXN1bHRDb25kaXRpb24gY29uZCwgQWRk
cmVzcyBhZGRyZXNzLCBUcnVzdGVkSW1tMzIgbWFzaywgUmVnaXN0ZXJJRCBkZXN0KQogICAgIHsK
LSAgICAgICAgVHJ1c3RlZEltbTMyIG1hc2s4KHN0YXRpY19jYXN0PGludDhfdD4obWFzay5tX3Zh
bHVlKSk7Ci0gICAgICAgIGxvYWQ4KGFkZHJlc3MsIGRhdGFUZW1wUmVnaXN0ZXIpOworICAgICAg
ICBUcnVzdGVkSW1tMzIgbWFzazggPSBNYWNyb0Fzc2VtYmxlckhlbHBlcnM6Om1hc2s4T25Db25k
aXRpb24oKnRoaXMsIGNvbmQsIG1hc2spOworICAgICAgICBNYWNyb0Fzc2VtYmxlckhlbHBlcnM6
OmxvYWQ4T25Db25kaXRpb24oKnRoaXMsIGNvbmQsIGFkZHJlc3MsIGRhdGFUZW1wUmVnaXN0ZXIp
OwogICAgICAgICB0ZXN0MzIoZGF0YVRlbXBSZWdpc3RlciwgbWFzazgpOwogICAgICAgICBtX2Fz
c2VtYmxlci5pdChhcm1WN0NvbmRpdGlvbihjb25kKSwgZmFsc2UpOwogICAgICAgICBtX2Fzc2Vt
Ymxlci5tb3YoZGVzdCwgQVJNVGh1bWJJbW1lZGlhdGU6Om1ha2VVSW50MTYoMSkpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlckhlbHBl
cnMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJIZWxw
ZXJzLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uMDQ3ZTk0YzI3MWIzMDgwNTUwYmM0MjY5M2RkYTQyMzc1MGFjMzJm
MQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFj
cm9Bc3NlbWJsZXJIZWxwZXJzLmgKQEAgLTAsMCArMSwxMzEgQEAKKy8qCisgKiBDb3B5cmlnaHQg
KEMpIDIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAq
IDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAq
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFO
WQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
IElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhF
TVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworbmFtZXNwYWNlIEpT
QyB7CituYW1lc3BhY2UgTWFjcm9Bc3NlbWJsZXJIZWxwZXJzIHsKKworLy8gVHJ1ZSBpZiB0aGlz
OgorLy8gICAgIGJyYW5jaDgoY29uZCwgdmFsdWUsIHZhbHVlKQorLy8gSXMgdGhlIHNhbWUgYXMg
dGhpczoKKy8vICAgICBicmFuY2gzMihjb25kLCBzaWduRXh0OCh2YWx1ZSksIHNpZ25FeHQ4KHZh
bHVlKSkKK3RlbXBsYXRlPHR5cGVuYW1lIE1hY3JvQXNzZW1ibGVyVHlwZT4KK2lubGluZSBib29s
IGlzU2lnbmVkKHR5cGVuYW1lIE1hY3JvQXNzZW1ibGVyVHlwZTo6UmVsYXRpb25hbENvbmRpdGlv
biBjb25kKQoreworICAgIHN3aXRjaCAoY29uZCkgeworICAgIGNhc2UgTWFjcm9Bc3NlbWJsZXJU
eXBlOjpFcXVhbDoKKyAgICBjYXNlIE1hY3JvQXNzZW1ibGVyVHlwZTo6Tm90RXF1YWw6CisgICAg
Y2FzZSBNYWNyb0Fzc2VtYmxlclR5cGU6OkdyZWF0ZXJUaGFuOgorICAgIGNhc2UgTWFjcm9Bc3Nl
bWJsZXJUeXBlOjpHcmVhdGVyVGhhbk9yRXF1YWw6CisgICAgY2FzZSBNYWNyb0Fzc2VtYmxlclR5
cGU6Okxlc3NUaGFuOgorICAgIGNhc2UgTWFjcm9Bc3NlbWJsZXJUeXBlOjpMZXNzVGhhbk9yRXF1
YWw6CisgICAgICAgIHJldHVybiB0cnVlOworICAgIGRlZmF1bHQ6CisgICAgICAgIHJldHVybiBm
YWxzZTsKKyAgICB9Cit9CisKKy8vIFRydWUgaWYgdGhpczoKKy8vICAgICBicmFuY2g4KGNvbmQs
IHZhbHVlLCB2YWx1ZSkKKy8vIElzIHRoZSBzYW1lIGFzIHRoaXM6CisvLyAgICAgYnJhbmNoMzIo
Y29uZCwgemVyb0V4dDgodmFsdWUpLCB6ZXJvRXh0OCh2YWx1ZSkpCit0ZW1wbGF0ZTx0eXBlbmFt
ZSBNYWNyb0Fzc2VtYmxlclR5cGU+CitpbmxpbmUgYm9vbCBpc1Vuc2lnbmVkKHR5cGVuYW1lIE1h
Y3JvQXNzZW1ibGVyVHlwZTo6UmVsYXRpb25hbENvbmRpdGlvbiBjb25kKQoreworICAgIHN3aXRj
aCAoY29uZCkgeworICAgIGNhc2UgTWFjcm9Bc3NlbWJsZXJUeXBlOjpFcXVhbDoKKyAgICBjYXNl
IE1hY3JvQXNzZW1ibGVyVHlwZTo6Tm90RXF1YWw6CisgICAgY2FzZSBNYWNyb0Fzc2VtYmxlclR5
cGU6OkFib3ZlOgorICAgIGNhc2UgTWFjcm9Bc3NlbWJsZXJUeXBlOjpBYm92ZU9yRXF1YWw6Cisg
ICAgY2FzZSBNYWNyb0Fzc2VtYmxlclR5cGU6OkJlbG93OgorICAgIGNhc2UgTWFjcm9Bc3NlbWJs
ZXJUeXBlOjpCZWxvd09yRXF1YWw6CisgICAgICAgIHJldHVybiB0cnVlOworICAgIGRlZmF1bHQ6
CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9Cit9CisKKy8vIFRydWUgaWYgdGhpczoKKy8v
ICAgICB0ZXN0OChjb25kLCB2YWx1ZSwgdmFsdWUpCisvLyBJcyB0aGUgc2FtZSBhcyB0aGlzOgor
Ly8gICAgIHRlc3QzMihjb25kLCBzaWduRXh0OCh2YWx1ZSksIHNpZ25FeHQ4KHZhbHVlKSkKK3Rl
bXBsYXRlPHR5cGVuYW1lIE1hY3JvQXNzZW1ibGVyVHlwZT4KK2lubGluZSBib29sIGlzU2lnbmVk
KHR5cGVuYW1lIE1hY3JvQXNzZW1ibGVyVHlwZTo6UmVzdWx0Q29uZGl0aW9uIGNvbmQpCit7Cisg
ICAgc3dpdGNoIChjb25kKSB7CisgICAgY2FzZSBNYWNyb0Fzc2VtYmxlclR5cGU6OlNpZ25lZDoK
KyAgICBjYXNlIE1hY3JvQXNzZW1ibGVyVHlwZTo6UG9zaXRpdmVPclplcm86CisgICAgY2FzZSBN
YWNyb0Fzc2VtYmxlclR5cGU6Olplcm86CisgICAgY2FzZSBNYWNyb0Fzc2VtYmxlclR5cGU6Ok5v
blplcm86CisgICAgICAgIHJldHVybiB0cnVlOworICAgIGRlZmF1bHQ6CisgICAgICAgIHJldHVy
biBmYWxzZTsKKyAgICB9Cit9CisKKy8vIFRydWUgaWYgdGhpczoKKy8vICAgICB0ZXN0OChjb25k
LCB2YWx1ZSwgdmFsdWUpCisvLyBJcyB0aGUgc2FtZSBhcyB0aGlzOgorLy8gICAgIHRlc3QzMihj
b25kLCB6ZXJvRXh0OCh2YWx1ZSksIHplcm9FeHQ4KHZhbHVlKSkKK3RlbXBsYXRlPHR5cGVuYW1l
IE1hY3JvQXNzZW1ibGVyVHlwZT4KK2lubGluZSBib29sIGlzVW5zaWduZWQodHlwZW5hbWUgTWFj
cm9Bc3NlbWJsZXJUeXBlOjpSZXN1bHRDb25kaXRpb24gY29uZCkKK3sKKyAgICBzd2l0Y2ggKGNv
bmQpIHsKKyAgICBjYXNlIE1hY3JvQXNzZW1ibGVyVHlwZTo6WmVybzoKKyAgICBjYXNlIE1hY3Jv
QXNzZW1ibGVyVHlwZTo6Tm9uWmVybzoKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgZGVmYXVs
dDoKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KK30KKwordGVtcGxhdGU8dHlwZW5hbWUg
TWFjcm9Bc3NlbWJsZXJUeXBlPgoraW5saW5lIHR5cGVuYW1lIE1hY3JvQXNzZW1ibGVyVHlwZTo6
VHJ1c3RlZEltbTMyIG1hc2s4T25Db25kaXRpb24oTWFjcm9Bc3NlbWJsZXJUeXBlJiwgdHlwZW5h
bWUgTWFjcm9Bc3NlbWJsZXJUeXBlOjpSZWxhdGlvbmFsQ29uZGl0aW9uIGNvbmQsIHR5cGVuYW1l
IE1hY3JvQXNzZW1ibGVyVHlwZTo6VHJ1c3RlZEltbTMyIHZhbHVlKQoreworICAgIGlmIChpc1Vu
c2lnbmVkPE1hY3JvQXNzZW1ibGVyVHlwZT4oY29uZCkpCisgICAgICAgIHJldHVybiB0eXBlbmFt
ZSBNYWNyb0Fzc2VtYmxlclR5cGU6OlRydXN0ZWRJbW0zMihzdGF0aWNfY2FzdDx1aW50OF90Pih2
YWx1ZS5tX3ZhbHVlKSk7CisgICAgcmV0dXJuIHR5cGVuYW1lIE1hY3JvQXNzZW1ibGVyVHlwZTo6
VHJ1c3RlZEltbTMyKHN0YXRpY19jYXN0PGludDhfdD4odmFsdWUubV92YWx1ZSkpOworfQorCit0
ZW1wbGF0ZTx0eXBlbmFtZSBNYWNyb0Fzc2VtYmxlclR5cGU+CitpbmxpbmUgdHlwZW5hbWUgTWFj
cm9Bc3NlbWJsZXJUeXBlOjpUcnVzdGVkSW1tMzIgbWFzazhPbkNvbmRpdGlvbihNYWNyb0Fzc2Vt
YmxlclR5cGUmLCB0eXBlbmFtZSBNYWNyb0Fzc2VtYmxlclR5cGU6OlJlc3VsdENvbmRpdGlvbiBj
b25kLCB0eXBlbmFtZSBNYWNyb0Fzc2VtYmxlclR5cGU6OlRydXN0ZWRJbW0zMiB2YWx1ZSkKK3sK
KyAgICBpZiAoaXNVbnNpZ25lZDxNYWNyb0Fzc2VtYmxlclR5cGU+KGNvbmQpKQorICAgICAgICBy
ZXR1cm4gdHlwZW5hbWUgTWFjcm9Bc3NlbWJsZXJUeXBlOjpUcnVzdGVkSW1tMzIoc3RhdGljX2Nh
c3Q8dWludDhfdD4odmFsdWUubV92YWx1ZSkpOworICAgIEFTU0VSVF9XSVRIX01FU1NBR0UoY29u
ZCAhPSBNYWNyb0Fzc2VtYmxlclR5cGU6Ok92ZXJmbG93LCAiT3ZlcmZsb3cgaXMgbm90IHVzZWQg
Zm9yIDhiaXQgdGVzdCBvcGVyYXRpb25zLiIpOworICAgIEFTU0VSVChpc1NpZ25lZDxNYWNyb0Fz
c2VtYmxlclR5cGU+KGNvbmQpKTsKKyAgICByZXR1cm4gdHlwZW5hbWUgTWFjcm9Bc3NlbWJsZXJU
eXBlOjpUcnVzdGVkSW1tMzIoc3RhdGljX2Nhc3Q8aW50OF90Pih2YWx1ZS5tX3ZhbHVlKSk7Cit9
CisKK3RlbXBsYXRlPHR5cGVuYW1lIE1hY3JvQXNzZW1ibGVyVHlwZSwgdHlwZW5hbWUgQ29uZGl0
aW9uLCB0eXBlbmFtZSAuLi5BcmdzPgordm9pZCBsb2FkOE9uQ29uZGl0aW9uKE1hY3JvQXNzZW1i
bGVyVHlwZSYgaml0LCBDb25kaXRpb24gY29uZCwgQXJncy4uLiBhcmdzKQoreworICAgIGlmIChp
c1Vuc2lnbmVkPE1hY3JvQXNzZW1ibGVyVHlwZT4oY29uZCkpCisgICAgICAgIHJldHVybiBqaXQu
bG9hZDgoc3RkOjpmb3J3YXJkPEFyZ3M+KGFyZ3MpLi4uKTsKKyAgICByZXR1cm4gaml0LmxvYWQ4
U2lnbmVkRXh0ZW5kVG8zMihzdGQ6OmZvcndhcmQ8QXJncz4oYXJncykuLi4pOworfQorCit9IH0g
Ly8gbmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2Vt
Ymxlci9NYWNyb0Fzc2VtYmxlck1JUFMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJs
ZXIvTWFjcm9Bc3NlbWJsZXJNSVBTLmgKaW5kZXggZmFmZGM1MWNhZmIzMjdiNTExMTY3N2Y1NTc2
YjM0ZWRkMWQzNDgzNi4uYTY4OGU5ODBkOWQ0OTY5YmNlZGYxNzMzN2FiN2U1ZDhlM2I0OGE4OSAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxl
ck1JUFMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1i
bGVyTUlQUy5oCkBAIC0xNDQ1LDMyICsxNDQ1LDMyIEBAIGNsYXNzIE1hY3JvQXNzZW1ibGVyTUlQ
UyA6IHB1YmxpYyBBYnN0cmFjdE1hY3JvQXNzZW1ibGVyPE1JUFNBc3NlbWJsZXIsIE1hY3JvQXNz
CiAKICAgICBKdW1wIGJyYW5jaDgoUmVsYXRpb25hbENvbmRpdGlvbiBjb25kLCBBZGRyZXNzIGxl
ZnQsIFRydXN0ZWRJbW0zMiByaWdodCkKICAgICB7Ci0gICAgICAgIFRydXN0ZWRJbW0zMiByaWdo
dDgoc3RhdGljX2Nhc3Q8aW50OF90PihyaWdodC5tX3ZhbHVlKSk7Ci0gICAgICAgIGxvYWQ4KGxl
ZnQsIGRhdGFUZW1wUmVnaXN0ZXIpOworICAgICAgICBUcnVzdGVkSW1tMzIgcmlnaHQ4ID0gTWFj
cm9Bc3NlbWJsZXJIZWxwZXJzOjptYXNrOE9uQ29uZGl0aW9uKCp0aGlzLCBjb25kLCByaWdodCk7
CisgICAgICAgIE1hY3JvQXNzZW1ibGVySGVscGVyczo6bG9hZDhPbkNvbmRpdGlvbigqdGhpcywg
Y29uZCwgbGVmdCwgZGF0YVRlbXBSZWdpc3Rlcik7CiAgICAgICAgIG1vdmUocmlnaHQ4LCBpbW1U
ZW1wUmVnaXN0ZXIpOwogICAgICAgICByZXR1cm4gYnJhbmNoMzIoY29uZCwgZGF0YVRlbXBSZWdp
c3RlciwgaW1tVGVtcFJlZ2lzdGVyKTsKICAgICB9CiAKICAgICBKdW1wIGJyYW5jaDgoUmVsYXRp
b25hbENvbmRpdGlvbiBjb25kLCBBYnNvbHV0ZUFkZHJlc3MgbGVmdCwgVHJ1c3RlZEltbTMyIHJp
Z2h0KQogICAgIHsKLSAgICAgICAgVHJ1c3RlZEltbTMyIHJpZ2h0OChzdGF0aWNfY2FzdDxpbnQ4
X3Q+KHJpZ2h0Lm1fdmFsdWUpKTsKLSAgICAgICAgbG9hZDgobGVmdCwgZGF0YVRlbXBSZWdpc3Rl
cik7CisgICAgICAgIFRydXN0ZWRJbW0zMiByaWdodDggPSBNYWNyb0Fzc2VtYmxlckhlbHBlcnM6
Om1hc2s4T25Db25kaXRpb24oKnRoaXMsIGNvbmQsIHJpZ2h0KTsKKyAgICAgICAgTWFjcm9Bc3Nl
bWJsZXJIZWxwZXJzOjpsb2FkOE9uQ29uZGl0aW9uKCp0aGlzLCBjb25kLCBsZWZ0LCBkYXRhVGVt
cFJlZ2lzdGVyKTsKICAgICAgICAgbW92ZShyaWdodDgsIGltbVRlbXBSZWdpc3Rlcik7CiAgICAg
ICAgIHJldHVybiBicmFuY2gzMihjb25kLCBkYXRhVGVtcFJlZ2lzdGVyLCBpbW1UZW1wUmVnaXN0
ZXIpOwogICAgIH0KIAogICAgIHZvaWQgY29tcGFyZTgoUmVsYXRpb25hbENvbmRpdGlvbiBjb25k
LCBBZGRyZXNzIGxlZnQsIFRydXN0ZWRJbW0zMiByaWdodCwgUmVnaXN0ZXJJRCBkZXN0KQogICAg
IHsKLSAgICAgICAgVHJ1c3RlZEltbTMyIHJpZ2h0OChzdGF0aWNfY2FzdDxpbnQ4X3Q+KHJpZ2h0
Lm1fdmFsdWUpKTsKLSAgICAgICAgbG9hZDgobGVmdCwgZGF0YVRlbXBSZWdpc3Rlcik7CisgICAg
ICAgIFRydXN0ZWRJbW0zMiByaWdodDggPSBNYWNyb0Fzc2VtYmxlckhlbHBlcnM6Om1hc2s4T25D
b25kaXRpb24oKnRoaXMsIGNvbmQsIHJpZ2h0KTsKKyAgICAgICAgTWFjcm9Bc3NlbWJsZXJIZWxw
ZXJzOjpsb2FkOE9uQ29uZGl0aW9uKCp0aGlzLCBjb25kLCBsZWZ0LCBkYXRhVGVtcFJlZ2lzdGVy
KTsKICAgICAgICAgbW92ZShyaWdodDgsIGltbVRlbXBSZWdpc3Rlcik7CiAgICAgICAgIGNvbXBh
cmUzMihjb25kLCBkYXRhVGVtcFJlZ2lzdGVyLCBpbW1UZW1wUmVnaXN0ZXIsIGRlc3QpOwogICAg
IH0KIAogICAgIEp1bXAgYnJhbmNoOChSZWxhdGlvbmFsQ29uZGl0aW9uIGNvbmQsIEJhc2VJbmRl
eCBsZWZ0LCBUcnVzdGVkSW1tMzIgcmlnaHQpCiAgICAgewotICAgICAgICBUcnVzdGVkSW1tMzIg
cmlnaHQ4KHN0YXRpY19jYXN0PGludDhfdD4ocmlnaHQubV92YWx1ZSkpOwotICAgICAgICBsb2Fk
OChsZWZ0LCBkYXRhVGVtcFJlZ2lzdGVyKTsKKyAgICAgICAgVHJ1c3RlZEltbTMyIHJpZ2h0OCA9
IE1hY3JvQXNzZW1ibGVySGVscGVyczo6bWFzazhPbkNvbmRpdGlvbigqdGhpcywgY29uZCwgcmln
aHQpOworICAgICAgICBNYWNyb0Fzc2VtYmxlckhlbHBlcnM6OmxvYWQ4T25Db25kaXRpb24oKnRo
aXMsIGNvbmQsIGxlZnQsIGRhdGFUZW1wUmVnaXN0ZXIpOwogICAgICAgICAvLyBCZSBjYXJlZnVs
IHRoYXQgdGhlIHByZXZpb3VzIGxvYWQ4KCkgdXNlcyBpbW1UZW1wUmVnaXN0ZXIuCiAgICAgICAg
IC8vIFNvLCB3ZSBuZWVkIHRvIHB1dCBtb3ZlKCkgYWZ0ZXIgbG9hZDgoKS4KICAgICAgICAgbW92
ZShyaWdodDgsIGltbVRlbXBSZWdpc3Rlcik7CkBAIC0xNjI4LDIzICsxNjI4LDIzIEBAIGNsYXNz
IE1hY3JvQXNzZW1ibGVyTUlQUyA6IHB1YmxpYyBBYnN0cmFjdE1hY3JvQXNzZW1ibGVyPE1JUFNB
c3NlbWJsZXIsIE1hY3JvQXNzCiAKICAgICBKdW1wIGJyYW5jaFRlc3Q4KFJlc3VsdENvbmRpdGlv
biBjb25kLCBCYXNlSW5kZXggYWRkcmVzcywgVHJ1c3RlZEltbTMyIG1hc2sgPSBUcnVzdGVkSW1t
MzIoLTEpKQogICAgIHsKLSAgICAgICAgVHJ1c3RlZEltbTMyIG1hc2s4KHN0YXRpY19jYXN0PGlu
dDhfdD4obWFzay5tX3ZhbHVlKSk7Ci0gICAgICAgIGxvYWQ4KGFkZHJlc3MsIGRhdGFUZW1wUmVn
aXN0ZXIpOworICAgICAgICBUcnVzdGVkSW1tMzIgbWFzazggPSBNYWNyb0Fzc2VtYmxlckhlbHBl
cnM6Om1hc2s4T25Db25kaXRpb24oKnRoaXMsIGNvbmQsIG1hc2spOworICAgICAgICBNYWNyb0Fz
c2VtYmxlckhlbHBlcnM6OmxvYWQ4T25Db25kaXRpb24oKnRoaXMsIGNvbmQsIGFkZHJlc3MsIGRh
dGFUZW1wUmVnaXN0ZXIpOwogICAgICAgICByZXR1cm4gYnJhbmNoVGVzdDMyKGNvbmQsIGRhdGFU
ZW1wUmVnaXN0ZXIsIG1hc2s4KTsKICAgICB9CiAKICAgICBKdW1wIGJyYW5jaFRlc3Q4KFJlc3Vs
dENvbmRpdGlvbiBjb25kLCBBZGRyZXNzIGFkZHJlc3MsIFRydXN0ZWRJbW0zMiBtYXNrID0gVHJ1
c3RlZEltbTMyKC0xKSkKICAgICB7Ci0gICAgICAgIFRydXN0ZWRJbW0zMiBtYXNrOChzdGF0aWNf
Y2FzdDxpbnQ4X3Q+KG1hc2subV92YWx1ZSkpOwotICAgICAgICBsb2FkOChhZGRyZXNzLCBkYXRh
VGVtcFJlZ2lzdGVyKTsKKyAgICAgICAgVHJ1c3RlZEltbTMyIG1hc2s4ID0gTWFjcm9Bc3NlbWJs
ZXJIZWxwZXJzOjptYXNrOE9uQ29uZGl0aW9uKCp0aGlzLCBjb25kLCBtYXNrKTsKKyAgICAgICAg
TWFjcm9Bc3NlbWJsZXJIZWxwZXJzOjpsb2FkOE9uQ29uZGl0aW9uKCp0aGlzLCBjb25kLCBhZGRy
ZXNzLCBkYXRhVGVtcFJlZ2lzdGVyKTsKICAgICAgICAgcmV0dXJuIGJyYW5jaFRlc3QzMihjb25k
LCBkYXRhVGVtcFJlZ2lzdGVyLCBtYXNrOCk7CiAgICAgfQogCiAgICAgSnVtcCBicmFuY2hUZXN0
OChSZXN1bHRDb25kaXRpb24gY29uZCwgQWJzb2x1dGVBZGRyZXNzIGFkZHJlc3MsIFRydXN0ZWRJ
bW0zMiBtYXNrID0gVHJ1c3RlZEltbTMyKC0xKSkKICAgICB7Ci0gICAgICAgIFRydXN0ZWRJbW0z
MiBtYXNrOChzdGF0aWNfY2FzdDxpbnQ4X3Q+KG1hc2subV92YWx1ZSkpOworICAgICAgICBUcnVz
dGVkSW1tMzIgbWFzazggPSBNYWNyb0Fzc2VtYmxlckhlbHBlcnM6Om1hc2s4T25Db25kaXRpb24o
KnRoaXMsIGNvbmQsIG1hc2spOwogICAgICAgICBtb3ZlKFRydXN0ZWRJbW1QdHIoYWRkcmVzcy5t
X3B0ciksIGRhdGFUZW1wUmVnaXN0ZXIpOwotICAgICAgICBsb2FkOChBZGRyZXNzKGRhdGFUZW1w
UmVnaXN0ZXIpLCBkYXRhVGVtcFJlZ2lzdGVyKTsKKyAgICAgICAgTWFjcm9Bc3NlbWJsZXJIZWxw
ZXJzOjpsb2FkOE9uQ29uZGl0aW9uKCp0aGlzLCBjb25kLCBBZGRyZXNzKGRhdGFUZW1wUmVnaXN0
ZXIpLCBkYXRhVGVtcFJlZ2lzdGVyKTsKICAgICAgICAgcmV0dXJuIGJyYW5jaFRlc3QzMihjb25k
LCBkYXRhVGVtcFJlZ2lzdGVyLCBtYXNrOCk7CiAgICAgfQogCkBAIC0yMjE4LDkgKzIyMTgsOSBA
QCBjbGFzcyBNYWNyb0Fzc2VtYmxlck1JUFMgOiBwdWJsaWMgQWJzdHJhY3RNYWNyb0Fzc2VtYmxl
cjxNSVBTQXNzZW1ibGVyLCBNYWNyb0FzcwogICAgIHZvaWQgdGVzdDgoUmVzdWx0Q29uZGl0aW9u
IGNvbmQsIEFkZHJlc3MgYWRkcmVzcywgVHJ1c3RlZEltbTMyIG1hc2ssIFJlZ2lzdGVySUQgZGVz
dCkKICAgICB7CiAgICAgICAgIEFTU0VSVCgoY29uZCA9PSBaZXJvKSB8fCAoY29uZCA9PSBOb25a
ZXJvKSk7Ci0gICAgICAgIFRydXN0ZWRJbW0zMiBtYXNrOChzdGF0aWNfY2FzdDxpbnQ4X3Q+KG1h
c2subV92YWx1ZSkpOwotICAgICAgICBsb2FkOChhZGRyZXNzLCBkYXRhVGVtcFJlZ2lzdGVyKTsK
LSAgICAgICAgaWYgKG1hc2s4Lm1fdmFsdWUgPT0gLTEgJiYgIW1fZml4ZWRXaWR0aCkgeworICAg
ICAgICBUcnVzdGVkSW1tMzIgbWFzazggPSBNYWNyb0Fzc2VtYmxlckhlbHBlcnM6Om1hc2s4T25D
b25kaXRpb24oKnRoaXMsIGNvbmQsIG1hc2spOworICAgICAgICBNYWNyb0Fzc2VtYmxlckhlbHBl
cnM6OmxvYWQ4T25Db25kaXRpb24oKnRoaXMsIGNvbmQsIGFkZHJlc3MsIGRhdGFUZW1wUmVnaXN0
ZXIpOworICAgICAgICBpZiAoKG1hc2s4Lm1fdmFsdWUgJiAweGZmKSA9PSAweGZmICYmICFtX2Zp
eGVkV2lkdGgpIHsKICAgICAgICAgICAgIGlmIChjb25kID09IFplcm8pCiAgICAgICAgICAgICAg
ICAgbV9hc3NlbWJsZXIuc2x0aXUoZGVzdCwgZGF0YVRlbXBSZWdpc3RlciwgMSk7CiAgICAgICAg
ICAgICBlbHNlCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01h
Y3JvQXNzZW1ibGVyU0g0LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3Jv
QXNzZW1ibGVyU0g0LmgKaW5kZXggZWVjYzQxNWY1YmUzNTJkZTU5ZDg5MTRkYmQwMGZmMjVmNmM1
NWE1Zi4uYzQ5MmE0MGE5MmRlMzE1OTI2MWQwYmM4YjNiYjIzMDE1ZTY3NGVhNyAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlclNINC5oCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJTSDQuaApA
QCAtMTYwNSw5ICsxNjA1LDkgQEAgY2xhc3MgTWFjcm9Bc3NlbWJsZXJTSDQgOiBwdWJsaWMgQWJz
dHJhY3RNYWNyb0Fzc2VtYmxlcjxTSDRBc3NlbWJsZXIsIE1hY3JvQXNzZW0KIAogICAgIEp1bXAg
YnJhbmNoVGVzdDgoUmVzdWx0Q29uZGl0aW9uIGNvbmQsIEFkZHJlc3MgYWRkcmVzcywgVHJ1c3Rl
ZEltbTMyIG1hc2sgPSBUcnVzdGVkSW1tMzIoLTEpKQogICAgIHsKLSAgICAgICAgVHJ1c3RlZElt
bTMyIG1hc2s4KHN0YXRpY19jYXN0PGludDhfdD4obWFzay5tX3ZhbHVlKSk7CisgICAgICAgIFRy
dXN0ZWRJbW0zMiBtYXNrOCA9IE1hY3JvQXNzZW1ibGVySGVscGVyczo6bWFzazhPbkNvbmRpdGlv
bigqdGhpcywgY29uZCwgbWFzayk7CiAgICAgICAgIFJlZ2lzdGVySUQgYWRkcmVzc1RlbXBSZWdp
c3RlciA9IGNsYWltU2NyYXRjaCgpOwotICAgICAgICBsb2FkOChhZGRyZXNzLCBhZGRyZXNzVGVt
cFJlZ2lzdGVyKTsKKyAgICAgICAgTWFjcm9Bc3NlbWJsZXJIZWxwZXJzOjpsb2FkOE9uQ29uZGl0
aW9uKCp0aGlzLCBjb25kLCBhZGRyZXNzLCBhZGRyZXNzVGVtcFJlZ2lzdGVyKTsKICAgICAgICAg
SnVtcCBqbXAgPSBicmFuY2hUZXN0MzIoY29uZCwgYWRkcmVzc1RlbXBSZWdpc3RlciwgbWFzazgp
OwogICAgICAgICByZWxlYXNlU2NyYXRjaChhZGRyZXNzVGVtcFJlZ2lzdGVyKTsKICAgICAgICAg
cmV0dXJuIGptcDsKQEAgLTE2MTUsOSArMTYxNSw5IEBAIGNsYXNzIE1hY3JvQXNzZW1ibGVyU0g0
IDogcHVibGljIEFic3RyYWN0TWFjcm9Bc3NlbWJsZXI8U0g0QXNzZW1ibGVyLCBNYWNyb0Fzc2Vt
CiAKICAgICBKdW1wIGJyYW5jaFRlc3Q4KFJlc3VsdENvbmRpdGlvbiBjb25kLCBCYXNlSW5kZXgg
YWRkcmVzcywgVHJ1c3RlZEltbTMyIG1hc2sgPSBUcnVzdGVkSW1tMzIoLTEpKQogICAgIHsKLSAg
ICAgICAgVHJ1c3RlZEltbTMyIG1hc2s4KHN0YXRpY19jYXN0PGludDhfdD4obWFzay5tX3ZhbHVl
KSk7CisgICAgICAgIFRydXN0ZWRJbW0zMiBtYXNrOCA9IE1hY3JvQXNzZW1ibGVySGVscGVyczo6
bWFzazhPbkNvbmRpdGlvbigqdGhpcywgY29uZCwgbWFzayk7CiAgICAgICAgIFJlZ2lzdGVySUQg
YWRkcmVzc1RlbXBSZWdpc3RlciA9IGNsYWltU2NyYXRjaCgpOwotICAgICAgICBsb2FkOChhZGRy
ZXNzLCBhZGRyZXNzVGVtcFJlZ2lzdGVyKTsKKyAgICAgICAgTWFjcm9Bc3NlbWJsZXJIZWxwZXJz
Ojpsb2FkOE9uQ29uZGl0aW9uKCp0aGlzLCBjb25kLCBhZGRyZXNzLCBhZGRyZXNzVGVtcFJlZ2lz
dGVyKTsKICAgICAgICAgSnVtcCBqbXAgPSBicmFuY2hUZXN0MzIoY29uZCwgYWRkcmVzc1RlbXBS
ZWdpc3RlciwgbWFzazgpOwogICAgICAgICByZWxlYXNlU2NyYXRjaChhZGRyZXNzVGVtcFJlZ2lz
dGVyKTsKICAgICAgICAgcmV0dXJuIGptcDsKQEAgLTE2MjUsMTAgKzE2MjUsMTAgQEAgY2xhc3Mg
TWFjcm9Bc3NlbWJsZXJTSDQgOiBwdWJsaWMgQWJzdHJhY3RNYWNyb0Fzc2VtYmxlcjxTSDRBc3Nl
bWJsZXIsIE1hY3JvQXNzZW0KIAogICAgIEp1bXAgYnJhbmNoVGVzdDgoUmVzdWx0Q29uZGl0aW9u
IGNvbmQsIEFic29sdXRlQWRkcmVzcyBhZGRyZXNzLCBUcnVzdGVkSW1tMzIgbWFzayA9IFRydXN0
ZWRJbW0zMigtMSkpCiAgICAgewotICAgICAgICBUcnVzdGVkSW1tMzIgbWFzazgoc3RhdGljX2Nh
c3Q8aW50OF90PihtYXNrLm1fdmFsdWUpKTsKKyAgICAgICAgVHJ1c3RlZEltbTMyIG1hc2s4ID0g
TWFjcm9Bc3NlbWJsZXJIZWxwZXJzOjptYXNrOE9uQ29uZGl0aW9uKCp0aGlzLCBjb25kLCBtYXNr
KTsKICAgICAgICAgUmVnaXN0ZXJJRCBhZGRyZXNzVGVtcFJlZ2lzdGVyID0gY2xhaW1TY3JhdGNo
KCk7CiAgICAgICAgIG1vdmUoVHJ1c3RlZEltbVB0cihhZGRyZXNzLm1fcHRyKSwgYWRkcmVzc1Rl
bXBSZWdpc3Rlcik7Ci0gICAgICAgIGxvYWQ4KEFkZHJlc3MoYWRkcmVzc1RlbXBSZWdpc3Rlciks
IGFkZHJlc3NUZW1wUmVnaXN0ZXIpOworICAgICAgICBNYWNyb0Fzc2VtYmxlckhlbHBlcnM6Omxv
YWQ4T25Db25kaXRpb24oKnRoaXMsIGNvbmQsIEFkZHJlc3MoYWRkcmVzc1RlbXBSZWdpc3Rlciks
IGFkZHJlc3NUZW1wUmVnaXN0ZXIpOwogICAgICAgICBKdW1wIGptcCA9IGJyYW5jaFRlc3QzMihj
b25kLCBhZGRyZXNzVGVtcFJlZ2lzdGVyLCBtYXNrOCk7CiAgICAgICAgIHJlbGVhc2VTY3JhdGNo
KGFkZHJlc3NUZW1wUmVnaXN0ZXIpOwogICAgICAgICByZXR1cm4gam1wOwpAQCAtMTY0Niw5ICsx
NjQ2LDkgQEAgY2xhc3MgTWFjcm9Bc3NlbWJsZXJTSDQgOiBwdWJsaWMgQWJzdHJhY3RNYWNyb0Fz
c2VtYmxlcjxTSDRBc3NlbWJsZXIsIE1hY3JvQXNzZW0KIAogICAgIEp1bXAgYnJhbmNoOChSZWxh
dGlvbmFsQ29uZGl0aW9uIGNvbmQsIEFkZHJlc3MgbGVmdCwgVHJ1c3RlZEltbTMyIHJpZ2h0KQog
ICAgIHsKLSAgICAgICAgVHJ1c3RlZEltbTMyIHJpZ2h0OChzdGF0aWNfY2FzdDxpbnQ4X3Q+KHJp
Z2h0Lm1fdmFsdWUpKTsKKyAgICAgICAgVHJ1c3RlZEltbTMyIHJpZ2h0OCA9IE1hY3JvQXNzZW1i
bGVySGVscGVyczo6bWFzazhPbkNvbmRpdGlvbigqdGhpcywgY29uZCwgcmlnaHQpOwogICAgICAg
ICBSZWdpc3RlcklEIGFkZHJlc3NUZW1wUmVnaXN0ZXIgPSBjbGFpbVNjcmF0Y2goKTsKLSAgICAg
ICAgbG9hZDgobGVmdCwgYWRkcmVzc1RlbXBSZWdpc3Rlcik7CisgICAgICAgIE1hY3JvQXNzZW1i
bGVySGVscGVyczo6bG9hZDhPbkNvbmRpdGlvbigqdGhpcywgY29uZCwgbGVmdCwgYWRkcmVzc1Rl
bXBSZWdpc3Rlcik7CiAgICAgICAgIEp1bXAgam1wID0gYnJhbmNoMzIoY29uZCwgYWRkcmVzc1Rl
bXBSZWdpc3RlciwgcmlnaHQ4KTsKICAgICAgICAgcmVsZWFzZVNjcmF0Y2goYWRkcmVzc1RlbXBS
ZWdpc3Rlcik7CiAgICAgICAgIHJldHVybiBqbXA7CkBAIC0xNjU2LDkgKzE2NTYsOSBAQCBjbGFz
cyBNYWNyb0Fzc2VtYmxlclNINCA6IHB1YmxpYyBBYnN0cmFjdE1hY3JvQXNzZW1ibGVyPFNINEFz
c2VtYmxlciwgTWFjcm9Bc3NlbQogCiAgICAgSnVtcCBicmFuY2g4KFJlbGF0aW9uYWxDb25kaXRp
b24gY29uZCwgQWJzb2x1dGVBZGRyZXNzIGxlZnQsIFRydXN0ZWRJbW0zMiByaWdodCkKICAgICB7
Ci0gICAgICAgIFRydXN0ZWRJbW0zMiByaWdodDgoc3RhdGljX2Nhc3Q8aW50OF90PihyaWdodC5t
X3ZhbHVlKSk7CisgICAgICAgIFRydXN0ZWRJbW0zMiByaWdodDggPSBNYWNyb0Fzc2VtYmxlckhl
bHBlcnM6Om1hc2s4T25Db25kaXRpb24oKnRoaXMsIGNvbmQsIHJpZ2h0KTsKICAgICAgICAgUmVn
aXN0ZXJJRCBhZGRyZXNzVGVtcFJlZ2lzdGVyID0gY2xhaW1TY3JhdGNoKCk7Ci0gICAgICAgIGxv
YWQ4KGxlZnQsIGFkZHJlc3NUZW1wUmVnaXN0ZXIpOworICAgICAgICBNYWNyb0Fzc2VtYmxlckhl
bHBlcnM6OmxvYWQ4T25Db25kaXRpb24oKnRoaXMsIGNvbmQsIGxlZnQsIGFkZHJlc3NUZW1wUmVn
aXN0ZXIpOwogICAgICAgICBKdW1wIGptcCA9IGJyYW5jaDMyKGNvbmQsIGFkZHJlc3NUZW1wUmVn
aXN0ZXIsIHJpZ2h0OCk7CiAgICAgICAgIHJlbGVhc2VTY3JhdGNoKGFkZHJlc3NUZW1wUmVnaXN0
ZXIpOwogICAgICAgICByZXR1cm4gam1wOwpAQCAtMTY2Niw5ICsxNjY2LDkgQEAgY2xhc3MgTWFj
cm9Bc3NlbWJsZXJTSDQgOiBwdWJsaWMgQWJzdHJhY3RNYWNyb0Fzc2VtYmxlcjxTSDRBc3NlbWJs
ZXIsIE1hY3JvQXNzZW0KIAogICAgIHZvaWQgY29tcGFyZTgoUmVsYXRpb25hbENvbmRpdGlvbiBj
b25kLCBBZGRyZXNzIGxlZnQsIFRydXN0ZWRJbW0zMiByaWdodCwgUmVnaXN0ZXJJRCBkZXN0KQog
ICAgIHsKLSAgICAgICAgVHJ1c3RlZEltbTMyIHJpZ2h0OChzdGF0aWNfY2FzdDxpbnQ4X3Q+KHJp
Z2h0Lm1fdmFsdWUpKTsKKyAgICAgICAgVHJ1c3RlZEltbTMyIHJpZ2h0OCA9IE1hY3JvQXNzZW1i
bGVySGVscGVyczo6bWFzazhPbkNvbmRpdGlvbigqdGhpcywgY29uZCwgcmlnaHQpOwogICAgICAg
ICBSZWdpc3RlcklEIGFkZHJlc3NUZW1wUmVnaXN0ZXIgPSBjbGFpbVNjcmF0Y2goKTsKLSAgICAg
ICAgbG9hZDgobGVmdCwgYWRkcmVzc1RlbXBSZWdpc3Rlcik7CisgICAgICAgIE1hY3JvQXNzZW1i
bGVySGVscGVyczo6bG9hZDhPbkNvbmRpdGlvbigqdGhpcywgY29uZCwgbGVmdCwgYWRkcmVzc1Rl
bXBSZWdpc3Rlcik7CiAgICAgICAgIGNvbXBhcmUzMihjb25kLCBhZGRyZXNzVGVtcFJlZ2lzdGVy
LCByaWdodDgsIGRlc3QpOwogICAgICAgICByZWxlYXNlU2NyYXRjaChhZGRyZXNzVGVtcFJlZ2lz
dGVyKTsKICAgICB9CkBAIC0xODQxLDEwICsxODQxLDEwIEBAIGNsYXNzIE1hY3JvQXNzZW1ibGVy
U0g0IDogcHVibGljIEFic3RyYWN0TWFjcm9Bc3NlbWJsZXI8U0g0QXNzZW1ibGVyLCBNYWNyb0Fz
c2VtCiAgICAgewogICAgICAgICBBU1NFUlQoKGNvbmQgPT0gWmVybykgfHwgKGNvbmQgPT0gTm9u
WmVybykpOwogCi0gICAgICAgIFRydXN0ZWRJbW0zMiBtYXNrOChzdGF0aWNfY2FzdDxpbnQ4X3Q+
KG1hc2subV92YWx1ZSkpOworICAgICAgICBUcnVzdGVkSW1tMzIgbWFzazggPSBNYWNyb0Fzc2Vt
YmxlckhlbHBlcnM6Om1hc2s4T25Db25kaXRpb24oKnRoaXMsIGNvbmQsIG1hc2spOwogCi0gICAg
ICAgIGxvYWQ4KGFkZHJlc3MsIGRlc3QpOwotICAgICAgICBpZiAobWFzazgubV92YWx1ZSA9PSAt
MSkKKyAgICAgICAgTWFjcm9Bc3NlbWJsZXJIZWxwZXJzOjpsb2FkOE9uQ29uZGl0aW9uKCp0aGlz
LCBjb25kLCBhZGRyZXNzLCBkZXN0KTsKKyAgICAgICAgaWYgKChtYXNrOC5tX3ZhbHVlICYgMHhm
ZikgPT0gMHhmZikKICAgICAgICAgICAgIGNvbXBhcmUzMigwLCBkZXN0LCBzdGF0aWNfY2FzdDxS
ZWxhdGlvbmFsQ29uZGl0aW9uPihjb25kKSk7CiAgICAgICAgIGVsc2UKICAgICAgICAgICAgIHRl
c3RsSW1tKG1hc2s4Lm1fdmFsdWUsIGRlc3QpOwpAQCAtMTk2NSwxMiArMTk2NSwxMiBAQCBjbGFz
cyBNYWNyb0Fzc2VtYmxlclNINCA6IHB1YmxpYyBBYnN0cmFjdE1hY3JvQXNzZW1ibGVyPFNINEFz
c2VtYmxlciwgTWFjcm9Bc3NlbQogCiAgICAgSnVtcCBicmFuY2g4KFJlbGF0aW9uYWxDb25kaXRp
b24gY29uZCwgQmFzZUluZGV4IGxlZnQsIFRydXN0ZWRJbW0zMiByaWdodCkKICAgICB7Ci0gICAg
ICAgIFRydXN0ZWRJbW0zMiByaWdodDgoc3RhdGljX2Nhc3Q8aW50OF90PihyaWdodC5tX3ZhbHVl
KSk7CisgICAgICAgIFRydXN0ZWRJbW0zMiByaWdodDggPSBNYWNyb0Fzc2VtYmxlckhlbHBlcnM6
Om1hc2s4T25Db25kaXRpb24oKnRoaXMsIGNvbmQsIHJpZ2h0KTsKICAgICAgICAgUmVnaXN0ZXJJ
RCBsZWZ0dG1wID0gY2xhaW1TY3JhdGNoKCk7CiAKICAgICAgICAgbG9hZEVmZmVjdGl2ZUFkZHJl
c3MobGVmdCwgbGVmdHRtcCk7CiAKLSAgICAgICAgbG9hZDgobGVmdHRtcCwgbGVmdHRtcCk7Cisg
ICAgICAgIE1hY3JvQXNzZW1ibGVySGVscGVyczo6bG9hZDhPbkNvbmRpdGlvbigqdGhpcywgY29u
ZCwgbGVmdHRtcCwgbGVmdHRtcCk7CiAgICAgICAgIFJlZ2lzdGVySUQgcmlnaHR0bXAgPSBjbGFp
bVNjcmF0Y2goKTsKICAgICAgICAgbV9hc3NlbWJsZXIubG9hZENvbnN0YW50KHJpZ2h0OC5tX3Zh
bHVlLCByaWdodHRtcCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3Nl
bWJsZXIvTWFjcm9Bc3NlbWJsZXJYODZfNjQuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3Nl
bWJsZXIvTWFjcm9Bc3NlbWJsZXJYODZfNjQuaAppbmRleCAzNzk3MjgyMTNlZWYwMTAwZDU2ZmRk
MmY4OTBlNWY1ODgwMDYzYTFmLi4wN2Y4NjIwZmFiZjIyYzNjNDc2MmY1YTJjYTdhYmJkNTViNzAy
ZTYyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNz
ZW1ibGVyWDg2XzY0LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNy
b0Fzc2VtYmxlclg4Nl82NC5oCkBAIC0xMjIwLDkgKzEyMjAsOCBAQCBjbGFzcyBNYWNyb0Fzc2Vt
Ymxlclg4Nl82NCA6IHB1YmxpYyBNYWNyb0Fzc2VtYmxlclg4NkNvbW1vbiB7CiAgICAgdXNpbmcg
TWFjcm9Bc3NlbWJsZXJYODZDb21tb246OmJyYW5jaDg7CiAgICAgSnVtcCBicmFuY2g4KFJlbGF0
aW9uYWxDb25kaXRpb24gY29uZCwgQWJzb2x1dGVBZGRyZXNzIGxlZnQsIFRydXN0ZWRJbW0zMiBy
aWdodCkKICAgICB7Ci0gICAgICAgIFRydXN0ZWRJbW0zMiByaWdodDgoc3RhdGljX2Nhc3Q8aW50
OF90PihyaWdodC5tX3ZhbHVlKSk7CiAgICAgICAgIE1hY3JvQXNzZW1ibGVyWDg2Q29tbW9uOjpt
b3ZlKFRydXN0ZWRJbW1QdHIobGVmdC5tX3B0ciksIHNjcmF0Y2hSZWdpc3RlcigpKTsKLSAgICAg
ICAgcmV0dXJuIE1hY3JvQXNzZW1ibGVyWDg2Q29tbW9uOjpicmFuY2g4KGNvbmQsIEFkZHJlc3Mo
c2NyYXRjaFJlZ2lzdGVyKCkpLCByaWdodDgpOworICAgICAgICByZXR1cm4gTWFjcm9Bc3NlbWJs
ZXJYODZDb21tb246OmJyYW5jaDgoY29uZCwgQWRkcmVzcyhzY3JhdGNoUmVnaXN0ZXIoKSksIHJp
Z2h0KTsKICAgICB9CiAgICAgCiAgICAgdXNpbmcgTWFjcm9Bc3NlbWJsZXJYODZDb21tb246OmJy
YW5jaFRlc3Q4OwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVz
dHMvQ2hhbmdlTG9nCmluZGV4IDQwMDdkZTg5YjY4ZDc0MTEwYjc3YzYzNGRiNjUwODI0ZmRkMmMx
NzcuLmZiZGE0YjIzMjFkYWJkYTg1ZjVmOTUyZDUyMjNmMTU4NTRjYTZjZWQgMTAwNjQ0Ci0tLSBh
L0xheW91dFRlc3RzL0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxNSBAQAorMjAxNi0xMS0wNyAgWXVzdWtlIFN1enVraSAgPHV0YXRhbmUudGVhQGdtYWls
LmNvbT4KKworICAgICAgICBbSlNDXSBUaGUgaW1wbGVtZW50YXRpb24gb2YgOCBiaXQgb3BlcmF0
aW9uIGluIE1hY3JvQXNzZW1ibGVyIHNob3VsZCBjYXJlIGFib3V0IHVpbnQ4X3QgLyBpbnQ4X3QK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE2NDQzMgor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFVzZSBvd25l
ckRvY3VtZW50LiBPbmNlIERPTUpJVCBmb3Igb3duZXJEb2N1bWVudCBpcyBsYW5kZWQsIHRoaXMg
d2lsbCB1c2UgYnJhbmNoOC4KKworICAgICAgICAqIGpzL2RvbS9kb21qaXQtYWNjZXNzb3Itb3du
ZXItZG9jdW1lbnQtdHlwZS1jaGVjay1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGpz
L2RvbS9kb21qaXQtYWNjZXNzb3Itb3duZXItZG9jdW1lbnQtdHlwZS1jaGVjay5odG1sOiBBZGRl
ZC4KKwogMjAxNi0xMS0wNyAgUnlhbiBIYWRkYWQgIDxyeWFuaGFkZGFkQGFwcGxlLmNvbT4KIAog
ICAgICAgICBVbnJldmlld2VkLCByb2xsaW5nIG91dCByMjA4MzgyLgpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvanMvZG9tL2RvbWppdC1hY2Nlc3Nvci1vd25lci1kb2N1bWVudC10eXBlLWNoZWNr
LWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2pzL2RvbS9kb21qaXQtYWNjZXNzb3Itb3duZXIt
ZG9jdW1lbnQtdHlwZS1jaGVjay1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOGFlYzU4ZWNkYjlj
OGQxZTZjODE2MDJjNmQxMjAxOTRlN2NiMTU0MwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRl
c3RzL2pzL2RvbS9kb21qaXQtYWNjZXNzb3Itb3duZXItZG9jdW1lbnQtdHlwZS1jaGVjay1leHBl
Y3RlZC50eHQKQEAgLTAsMCArMSwxMCBAQAorVGVzdCBET01KSVQgb3duZXJEb2N1bWVudCBhY2Nl
c3NvciB3b3JrcyBvbiBBUk0gZW52aXJvbm1lbnRzLgorCitPbiBzdWNjZXNzLCB5b3Ugd2lsbCBz
ZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVU
RSIuCisKKworUEFTUyBkb25lCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RF
U1QgQ09NUExFVEUKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvanMvZG9tL2RvbWppdC1hY2Nl
c3Nvci1vd25lci1kb2N1bWVudC10eXBlLWNoZWNrLmh0bWwgYi9MYXlvdXRUZXN0cy9qcy9kb20v
ZG9taml0LWFjY2Vzc29yLW93bmVyLWRvY3VtZW50LXR5cGUtY2hlY2suaHRtbApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li5iMDc0ZjFlMjU1ODIyOWFkMGYzNmRmMGZmNzkxOWQyMzg2OGFmNDhlCi0tLSAvZGV2L251bGwK
KysrIGIvTGF5b3V0VGVzdHMvanMvZG9tL2RvbWppdC1hY2Nlc3Nvci1vd25lci1kb2N1bWVudC10
eXBlLWNoZWNrLmh0bWwKQEAgLTAsMCArMSwyOSBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4K
KzxoZWFkPgorPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9z
Y3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxzY3JpcHQ+CitkZXNjcmlwdGlvbignVGVzdCBET01K
SVQgb3duZXJEb2N1bWVudCBhY2Nlc3NvciB3b3JrcyBvbiBBUk0gZW52aXJvbm1lbnRzLicpOwor
CitmdW5jdGlvbiBydW5UZXN0KCkKK3sKKyAgICBmdW5jdGlvbiBvd25lckRvY3VtZW50KGRvYykK
KyAgICB7CisgICAgICAgIC8vIElmIERPTUpJVCBpcyBlbmFibGVkLCBpdCB3aWxsIHBlcmZvcm0g
RG9jdW1lbnQgdHlwZSBjaGVjaywgYW5kIGl0IHVzZXMgYnJhbmNoOCB3aXRoIGEgbnVtYmVyIHRo
YXQgaGFzIE1TQi4KKyAgICAgICAgcmV0dXJuIGRvYy5vd25lckRvY3VtZW50OworICAgIH0KKyAg
ICBub0lubGluZShvd25lckRvY3VtZW50KTsKKworICAgIGZvciAodmFyIGkgPSAwOyBpIDwgMWU0
OyArK2kpIHsKKyAgICAgICAgaWYgKG51bGwgIT09IG93bmVyRG9jdW1lbnQoZG9jdW1lbnQpKQor
ICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdFcnJvcicpOworICAgIH0KKyAgICB0ZXN0UGFz
c2VkKCJkb25lIik7Cit9CitydW5UZXN0KCk7Cis8L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8u
Li9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4K
</data>
<flag name="review"
          id="316857"
          type_id="1"
          status="+"
          setter="msaboff"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>294089</attachid>
            <date>2016-11-07 14:54:57 -0800</date>
            <delta_ts>2016-11-07 14:54:57 -0800</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-164432-20161108075049.patch</filename>
            <type>text/plain</type>
            <size>47941</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjA4NDIyCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA2
NDc0N2FhMDI3YzdmZmU0MTM0ZjE1NjhmZDNkYTM4YmNhZGNiNjI2Li40Mjc1YjMwMGM2MTc1ZjU1
NDRhZTEzNjIxZWI3YzEyY2EyYmNlZjVjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw3NSBAQAorMjAxNi0xMS0wNyAgWXVzdWtlIFN1enVraSAgPHV0YXRhbmUudGVhQGdtYWls
LmNvbT4KKworICAgICAgICBbSlNDXSBUaGUgaW1wbGVtZW50YXRpb24gb2YgOCBiaXQgb3BlcmF0
aW9uIGluIE1hY3JvQXNzZW1ibGVyIHNob3VsZCBjYXJlIGFib3V0IHVpbnQ4X3QgLyBpbnQ4X3QK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE2NDQzMgor
CisgICAgICAgIFJldmlld2VkIGJ5IE1pY2hhZWwgU2Fib2ZmLgorCisgICAgICAgIEV4Y2VwdCBm
b3IgWDg2LCBvdXIgc3VwcG9ydGVkIE1hY3JvQXNzZW1ibGVycyBkbyBub3QgaGF2ZSBuYXRpdmUg
OGJpdCBpbnN0cnVjdGlvbnMuCisgICAgICAgIEl0IG1lYW5zIHRoYXQgYWxsIHRoZSA4Yml0IGlu
c3RydWN0aW9ucyBhcmUgY29udmVydGVkIHRvIDMyYml0IG9wZXJhdGlvbnMgYnkgdXNpbmcKKyAg
ICAgICAgc2NyYXRjaCByZWdpc3RlcnMuIEZvciBleGFtcGxlLCBBUk02NCBicmFuY2g4IGltcGxl
bWVudGF0aW9uIGlzIHRoZSBmb2xsb3dpbmcuCisKKyAgICAgICAgICAgIEp1bXAgYnJhbmNoOChS
ZWxhdGlvbkNvbmRpdGlvbiBjb3JkLCBBZGRyZXNzIGxlZnQsIFRydXN0ZWRJbW0zMiByaWdodCkK
KyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBUcnVzdGVkSW1tMzIgcmlnaHQ4KHN0YXRp
Y19jYXN0PGludDhfdD4ocmlnaHQubV92YWx1ZSkpOworICAgICAgICAgICAgICAgIGxvYWQ4KGxl
ZnQsIGdldENhY2hlZE1lbW9yeVRlbXBSZWdpc3RlcklEQW5kSW52YWxpZGF0ZSgpKTsKKyAgICAg
ICAgICAgICAgICByZXR1cm4gYnJhbmNoMzIoY29uZSwgbWVtb3J5VGVtcFJlZ2lzdGVyLCByaWdo
dDgpOworICAgICAgICAgICAgfQorCisgICAgICAgIFRoZSBwcm9ibGVtIGlzIHRoYXQgd2UgZXhj
bHVzaXZlbHkgdXNlIHplcm8tZXh0ZW5kZWQgbG9hZCBpbnN0cnVjdGlvbiAobG9hZDgpLiBFdmVu
CisgICAgICAgIGZvciBzaWduZWQgUmVsYXRpb25Db25kaXRpb25zLCB3ZSBkbyBub3QgcGVyZm9y
bSBzaWduIGV4dGVuc2lvbi4gSXQgbWFrZXMgc2lnbmVkCisgICAgICAgIG9wZXJhdGlvbnMgd2l0
aCBuZWdhdGl2ZSBudW1iZXJzIGluY29ycmVjdCEgQ29uc2lkZXIgdGhlIHxsZWZ0fCBhZGRyZXNz
IGhvbGRzIGAtMWAKKyAgICAgICAgaW4gaW50OF90IGZvcm0uIEhvd2V2ZXIgbG9hZDggd2lsbCBs
b2FkIGl0IGFzIDI1NSBpbnRvIDMyYml0IHJlZ2lzdGVyLiBPbiB0aGUgb3RoZXIgaGFuZCwKKyAg
ICAgICAgfHJpZ2h0fCB3aWxsIGJlIHNpZ24gZXh0ZW5kZWQuIElmIHlvdSBwYXNzIDAgYXMgfHJp
Z2h0fCBhbmQgTGVzc1RoYW4gY29uZGl0aW9uLCB0aGlzCisgICAgICAgIGJyYW5jaDggc2hvdWxk
IGp1bXAgYmFzZWQgb24gdGhlIGFuc3dlciBvZiBgLTEgPCAwYC4gQnV0IHRoZSBjdXJyZW50IE1h
Y3JvQXNzZW1ibGVyCisgICAgICAgIHBlcmZvcm1zIGAyNTUgPCAwYCBpbiBpbnQzMl90IGNvbnRl
eHQgYW5kIHJldHVybnMgdGhlIGluY29ycmVjdCByZXN1bHQuCisKKyAgICAgICAgV2Ugc2hvdWxk
IGZvbGxvdyB0aGUgeDg2IG1vZGVsLiBTbyB3ZSBzaG91bGQgc2VsZWN0IHRoZSBhcHByb3ByaWF0
ZSBsb2FkIG9wZXJhdGlvbiBhbmQgbWFza2luZworICAgICAgICBvcGVyYXRpb24gYmFzZWQgb24g
dGhlIFJlbGF0aW9uQ29uZGl0aW9uLiBUaGlzIHBhdGNoIGludHJvZHVjZXMgbWFzazhPbkNvbmRp
dGlvbiBhbmQgbG9hZDhPbkNvbmRpdGlvbi4KKyAgICAgICAgQW5kIHdlIHVzZSB0aGVtIGluIDhi
aXQgb3BlcmF0aW9ucyBpbmNsdWRpbmcgYnJhbmNoOCwgYnJhbmNoVGVzdDgsIGNvbXBhcmU4LCBh
bmQgdGVzdDguCisKKyAgICAgICAgV2UgaW50ZW50aW9uYWxseSBkbyBub3QgY2hhbmdlIGFueXRo
aW5nIG9uIHg4NiBhc3NlbWJsZXIgc2luY2UgaXQgaGFzIHRoZSBuYXRpdmUgc2lnbmVkIDhiaXQg
b3BlcmF0aW9ucy4KKworICAgICAgICAqIEphdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0
LnBieHByb2o6CisgICAgICAgICogYXNzZW1ibGVyL0Fic3RyYWN0TWFjcm9Bc3NlbWJsZXIuaDoK
KyAgICAgICAgKiBhc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXIuaDoKKyAgICAgICAgKEpTQzo6TWFj
cm9Bc3NlbWJsZXI6OmlzU2lnbmVkKToKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXI6Omlz
VW5zaWduZWQpOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlcjo6YnJhbmNoVGVzdDgpOgor
ICAgICAgICAqIGFzc2VtYmxlci9NYWNyb0Fzc2VtYmxlckFSTS5oOgorICAgICAgICAoSlNDOjpN
YWNyb0Fzc2VtYmxlckFSTTo6YnJhbmNoOCk6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVy
QVJNOjpicmFuY2hUZXN0OCk6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyQVJNOjpjb21w
YXJlOCk6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyQVJNOjp0ZXN0OCk6CisgICAgICAg
ICogYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyQVJNNjQuaDoKKyAgICAgICAgKEpTQzo6TWFjcm9B
c3NlbWJsZXJBUk02NDo6bG9hZDhTaWduZWRFeHRlbmRUbzMyKToKKyAgICAgICAgKEpTQzo6TWFj
cm9Bc3NlbWJsZXJBUk02NDo6YnJhbmNoOCk6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVy
QVJNNjQ6OmJyYW5jaFRlc3Q4KToKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJBUk02NDo6
Y29tcGFyZTgpOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlckFSTTY0Ojp0ZXN0OCk6Cisg
ICAgICAgICogYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyQVJNdjcuaDoKKyAgICAgICAgKEpTQzo6
TWFjcm9Bc3NlbWJsZXJBUk12Nzo6YnJhbmNoOCk6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1i
bGVyQVJNdjc6OmJyYW5jaFRlc3Q4KToKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJBUk12
Nzo6Y29tcGFyZTgpOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlckFSTXY3Ojp0ZXN0OCk6
CisgICAgICAgICogYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVySGVscGVycy5oOiBBZGRlZC4KKyAg
ICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJIZWxwZXJzOjppc1NpZ25lZCk6CisgICAgICAgIChK
U0M6Ok1hY3JvQXNzZW1ibGVySGVscGVyczo6aXNVbnNpZ25lZCk6CisgICAgICAgIChKU0M6Ok1h
Y3JvQXNzZW1ibGVySGVscGVyczo6bWFzazhPbkNvbmRpdGlvbik6CisgICAgICAgIChKU0M6Ok1h
Y3JvQXNzZW1ibGVySGVscGVyczo6bG9hZDhPbkNvbmRpdGlvbik6CisgICAgICAgICogYXNzZW1i
bGVyL01hY3JvQXNzZW1ibGVyTUlQUy5oOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlck1J
UFM6OmJyYW5jaDgpOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlck1JUFM6OmNvbXBhcmU4
KToKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJNSVBTOjpicmFuY2hUZXN0OCk6CisgICAg
ICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyTUlQUzo6dGVzdDgpOgorICAgICAgICAqIGFzc2VtYmxl
ci9NYWNyb0Fzc2VtYmxlclNINC5oOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlclNINDo6
YnJhbmNoVGVzdDgpOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlclNINDo6YnJhbmNoOCk6
CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyU0g0Ojpjb21wYXJlOCk6CisgICAgICAgIChK
U0M6Ok1hY3JvQXNzZW1ibGVyU0g0Ojp0ZXN0OCk6CisgICAgICAgICogYXNzZW1ibGVyL01hY3Jv
QXNzZW1ibGVyWDg2XzY0Lmg6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyWDg2XzY0Ojpi
cmFuY2g4KToKKwogMjAxNi0xMS0wNSAgS29uc3RhbnRpbiBUb2thcmV2ICA8YW5udWxlbkB5YW5k
ZXgucnU+CiAKICAgICAgICAgRml4ZWQgY29tcGlsYXRpb24gb2YgTExJbnQgd2l0aCBNaW5HVwpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUu
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCA2MDBjYTM0MWQzNTgyZWU0ZmYwNGRlNDEy
NDYwMzI1ZjQ0MzIyODczLi5jNzNhY2M1YmQ2NjZlMzhkMGY4ZDVjZTE1NjIzZTY0NTZlOWUwZTE3
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlw
dENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMjE5Nyw2ICsyMTk3LDcgQEAKIAkJ
RTMyOERBRTkxRDM4RDAwNTAwMUEyNTI5IC8qIEJ5dGVjb2RlR3JhcGguaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUzRDI2NDI4MUQzOEMwNDIwMDBCRTE3
NCAvKiBCeXRlY29kZUdyYXBoLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0
ZSwgKTsgfTsgfTsKIAkJRTMyOERBRUExRDM4RDAwNTAwMUEyNTI5IC8qIEJ5dGVjb2RlUmV3cml0
ZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTNE
MjY0MjkxRDM4QzA0MjAwMEJFMTc0IC8qIEJ5dGVjb2RlUmV3cml0ZXIuY3BwICovOyB9OwogCQlF
MzI4REFFQjFEMzhEMDA1MDAxQTI1MjkgLyogQnl0ZWNvZGVSZXdyaXRlci5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTNEMjY0MkExRDM4QzA0MjAwMEJF
MTc0IC8qIEJ5dGVjb2RlUmV3cml0ZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQ
cml2YXRlLCApOyB9OyB9OworCQlFMzJBQjI0NDFEQ0Q3NUY0MDBENzUzM0EgLyogTWFjcm9Bc3Nl
bWJsZXJIZWxwZXJzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSBFMzgwQTc2QjFEQ0Q3MTk1MDAwRjg5RTYgLyogTWFjcm9Bc3NlbWJsZXJIZWxwZXJzLmgg
Ki87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJRTMyRkYx
RUExREE3NTcxQzAwQThCRjIxIC8qIERPTUpJVFNsb3dQYXRoQ2FsbHMuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUzQ0IxRTI0MURBNzU0MEEwMEZBMUU1
NiAvKiBET01KSVRTbG93UGF0aENhbGxzLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAo
UHJpdmF0ZSwgKTsgfTsgfTsKIAkJRTMzNjM3QTUxQjYzMjIwMjAwRUUwODQwIC8qIFJlZmxlY3RP
YmplY3QuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
RTMzNjM3QTMxQjYzMjIwMjAwRUUwODQwIC8qIFJlZmxlY3RPYmplY3QuY3BwICovOyB9OwogCQlF
MzM2MzdBNjFCNjMyMjAyMDBFRTA4NDAgLyogUmVmbGVjdE9iamVjdC5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTMzNjM3QTQxQjYzMjIwMjAwRUUwODQw
IC8qIFJlZmxlY3RPYmplY3QuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRl
LCApOyB9OyB9OwpAQCAtNDY2NSw2ICs0NjY2LDcgQEAKIAkJRTM3OTRFNzQxQjc3RUI5NzAwNTU0
M0FFIC8qIE1vZHVsZUFuYWx5emVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IE1vZHVsZUFuYWx5emVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUUzN0FEODNB
MURBNDkyODAwMEYzRDQxMiAvKiBET01KSVRQYXRjaHBvaW50UGFyYW1zLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IERPTUpJVFBhdGNocG9pbnRQYXJhbXMuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTM3QUQ4M0IxREE0OTI4MDAwRjNENDEyIC8qIERPTUpJVFJl
Zy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBET01KSVRSZWcuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRTM4MEE3NkIxRENENzE5NTAwMEY4OUU2IC8qIE1hY3Jv
QXNzZW1ibGVySGVscGVycy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBNYWNy
b0Fzc2VtYmxlckhlbHBlcnMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTM5NjND
RUMxQjczRjc1MDAwRUI0Q0U1IC8qIE5vZGVzQW5hbHl6ZU1vZHVsZS5jcHAgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBOb2Rlc0FuYWx5emVNb2R1bGUuY3BwOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQlFMzlEOUQ4NDFEMzkwMDA2MDA2NjcyODIgLyogSW50ZXJw
cmV0ZXJJbmxpbmVzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEludGVycHJl
dGVySW5saW5lcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFMzlEQTRBNDFCN0U4
QjdDMDA4NEYzM0EgLyogSlNNb2R1bGVSZWNvcmQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAuY3BwOyBwYXRoID0gSlNNb2R1bGVSZWNvcmQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwpAQCAtNzA2NCw2ICs3MDY2LDcgQEAKIAkJCQk4NkFERDE0NDBGRERFQTk4MDAwNkVFQzIg
LyogTWFjcm9Bc3NlbWJsZXJBUk12Ny5oICovLAogCQkJCTBGNkRCN0VCMUQ2MTdEMEYwMENEQkY4
RSAvKiBNYWNyb0Fzc2VtYmxlckNvZGVSZWYuY3BwICovLAogCQkJCTg2M0IyM0RGMEZDNjBFNjIw
MDcwM0FBNCAvKiBNYWNyb0Fzc2VtYmxlckNvZGVSZWYuaCAqLywKKwkJCQlFMzgwQTc2QjFEQ0Q3
MTk1MDAwRjg5RTYgLyogTWFjcm9Bc3NlbWJsZXJIZWxwZXJzLmggKi8sCiAJCQkJODZDNTY4REUx
MUEyMTNFRTAwMDdGN0YwIC8qIE1hY3JvQXNzZW1ibGVyTUlQUy5oICovLAogCQkJCUZFNjhDNjM1
MUI5MERERDkwMDQyQkNCMyAvKiBNYWNyb0Fzc2VtYmxlclByaW50ZXIuY3BwICovLAogCQkJCUZF
NjhDNjM2MUI5MERERDkwMDQyQkNCMyAvKiBNYWNyb0Fzc2VtYmxlclByaW50ZXIuaCAqLywKQEAg
LTgwNDgsNiArODA1MSw3IEBACiAJCQkJMEY0MEU0QTgxQzQ5N0Y3NDAwQTU3N0ZBIC8qIEFpck9w
Y29kZUdlbmVyYXRlZC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEYyMzVCRUUxNzE3OEU3MzAwNjkw
QzdGIC8qIERGR09TUkV4aXRQcmVwYXJhdGlvbi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEY2MjM3
OTgxQUU0NUNBNzAwRDQwMkVBIC8qIERGR1BoYW50b21JbnNlcnRpb25QaGFzZS5oIGluIEhlYWRl
cnMgKi8sCisJCQkJRTMyQUIyNDQxRENENzVGNDAwRDc1MzNBIC8qIE1hY3JvQXNzZW1ibGVySGVs
cGVycy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEZGRkM5NUMxNEVGOTBBRjAwQzcyNTMyIC8qIERG
R1BoYXNlLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjJCOUNFQjE5RDBCQTdEMDBCMUQxQjUgLyog
REZHUGhpQ2hpbGRyZW4uaCBpbiBIZWFkZXJzICovLAogCQkJCUE3OEE5NzdCMTc5NzM4QjgwMDlE
Rjc0NCAvKiBERkdQbGFuLmggaW4gSGVhZGVycyAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9hc3NlbWJsZXIvQWJzdHJhY3RNYWNyb0Fzc2VtYmxlci5oIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9BYnN0cmFjdE1hY3JvQXNzZW1ibGVyLmgKaW5kZXggNmY1
NWQ3ZmUwMDU3MTFlMThhMDkxMGEzYmI2Y2M2NzBiZTJlYzBlMC4uMzdiMjFkOGQ3Yjg4Mjc1Mzli
Njk0OTBhYzY2NmVlYTMzNmY1YjY5OCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2Fzc2VtYmxlci9BYnN0cmFjdE1hY3JvQXNzZW1ibGVyLmgKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2Fzc2VtYmxlci9BYnN0cmFjdE1hY3JvQXNzZW1ibGVyLmgKQEAgLTMxLDYgKzMxLDcg
QEAKICNpbmNsdWRlICJDUFUuaCIKICNpbmNsdWRlICJDb2RlTG9jYXRpb24uaCIKICNpbmNsdWRl
ICJNYWNyb0Fzc2VtYmxlckNvZGVSZWYuaCIKKyNpbmNsdWRlICJNYWNyb0Fzc2VtYmxlckhlbHBl
cnMuaCIKICNpbmNsdWRlICJPcHRpb25zLmgiCiAjaW5jbHVkZSA8d3RmL0NyeXB0b2dyYXBoaWNh
bGx5UmFuZG9tTnVtYmVyLmg+CiAjaW5jbHVkZSA8d3RmL05vbmNvcHlhYmxlLmg+CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyLmggYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyLmgKaW5kZXggYjQ5
ODA4NDUxYjY1ZmE1MmZmOTFhODZhODc4Njk4MzRmYjU2MjRiMy4uNTI2Y2M4MjNhMDUxOWQ1YmJi
ZWU5YTU1MmMxMThhYTI2Mzc4MTlmMSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlci5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9h
c3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXIuaApAQCAtNjUsNiArNjUsOCBAQCB0eXBlZGVmIE1hY3Jv
QXNzZW1ibGVyU0g0IE1hY3JvQXNzZW1ibGVyQmFzZTsKICNlcnJvciAiVGhlIE1hY3JvQXNzZW1i
bGVyIGlzIG5vdCBzdXBwb3J0ZWQgb24gdGhpcyBwbGF0Zm9ybS4iCiAjZW5kaWYKIAorI2luY2x1
ZGUgIk1hY3JvQXNzZW1ibGVySGVscGVycy5oIgorCiBuYW1lc3BhY2UgSlNDIHsKIAogY2xhc3Mg
TWFjcm9Bc3NlbWJsZXIgOiBwdWJsaWMgTWFjcm9Bc3NlbWJsZXJCYXNlIHsKQEAgLTE0MCw3ICsx
NDIsNiBAQCBjbGFzcyBNYWNyb0Fzc2VtYmxlciA6IHB1YmxpYyBNYWNyb0Fzc2VtYmxlckJhc2Ug
ewogICAgIHN0YXRpYyBjb25zdCBkb3VibGUgdHdvVG9UaGUzMjsgLy8gVGhpcyBpcyBzdXBlciB1
c2VmdWwgZm9yIHNvbWUgZG91YmxlIGNvZGUuCiAKICAgICAvLyBVdGlsaXRpZXMgdXNlZCBieSB0
aGUgREZHIEpJVC4KLSNpZiBFTkFCTEUoREZHX0pJVCkKICAgICB1c2luZyBNYWNyb0Fzc2VtYmxl
ckJhc2U6OmludmVydDsKICAgICAKICAgICBzdGF0aWMgRG91YmxlQ29uZGl0aW9uIGludmVydChE
b3VibGVDb25kaXRpb24gY29uZCkKQEAgLTIzMyw0NCArMjM0LDI1IEBAIGNsYXNzIE1hY3JvQXNz
ZW1ibGVyIDogcHVibGljIE1hY3JvQXNzZW1ibGVyQmFzZSB7CiAgICAgICAgIHJldHVybiBFcXVh
bDsKICAgICB9CiAKLSAgICAvLyBUcnVlIGlmIHRoaXM6Ci0gICAgLy8gICAgIGJyYW5jaDgoY29u
ZCwgdmFsdWUsIHZhbHVlKQotICAgIC8vIElzIHRoZSBzYW1lIGFzIHRoaXM6Ci0gICAgLy8gICAg
IGJyYW5jaDMyKGNvbmQsIHNpZ25FeHQ4KHZhbHVlKSwgc2lnbkV4dDgodmFsdWUpKQogICAgIHN0
YXRpYyBib29sIGlzU2lnbmVkKFJlbGF0aW9uYWxDb25kaXRpb24gY29uZCkKICAgICB7Ci0gICAg
ICAgIHN3aXRjaCAoY29uZCkgewotICAgICAgICBjYXNlIEVxdWFsOgotICAgICAgICBjYXNlIE5v
dEVxdWFsOgotICAgICAgICBjYXNlIEdyZWF0ZXJUaGFuOgotICAgICAgICBjYXNlIEdyZWF0ZXJU
aGFuT3JFcXVhbDoKLSAgICAgICAgY2FzZSBMZXNzVGhhbjoKLSAgICAgICAgY2FzZSBMZXNzVGhh
bk9yRXF1YWw6Ci0gICAgICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICAgICAgZGVmYXVsdDoKLSAg
ICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgfQorICAgICAgICByZXR1cm4gTWFjcm9B
c3NlbWJsZXJIZWxwZXJzOjppc1NpZ25lZDxNYWNyb0Fzc2VtYmxlcj4oY29uZCk7CiAgICAgfQog
Ci0gICAgLy8gVHJ1ZSBpZiB0aGlzOgotICAgIC8vICAgICBicmFuY2g4KGNvbmQsIHZhbHVlLCB2
YWx1ZSkKLSAgICAvLyBJcyB0aGUgc2FtZSBhcyB0aGlzOgotICAgIC8vICAgICBicmFuY2gzMihj
b25kLCB6ZXJvRXh0OCh2YWx1ZSksIHplcm9FeHQ4KHZhbHVlKSkKICAgICBzdGF0aWMgYm9vbCBp
c1Vuc2lnbmVkKFJlbGF0aW9uYWxDb25kaXRpb24gY29uZCkKICAgICB7Ci0gICAgICAgIHN3aXRj
aCAoY29uZCkgewotICAgICAgICBjYXNlIEVxdWFsOgotICAgICAgICBjYXNlIE5vdEVxdWFsOgot
ICAgICAgICBjYXNlIEFib3ZlOgotICAgICAgICBjYXNlIEFib3ZlT3JFcXVhbDoKLSAgICAgICAg
Y2FzZSBCZWxvdzoKLSAgICAgICAgY2FzZSBCZWxvd09yRXF1YWw6Ci0gICAgICAgICAgICByZXR1
cm4gdHJ1ZTsKLSAgICAgICAgZGVmYXVsdDoKLSAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAg
ICAgICAgfQorICAgICAgICByZXR1cm4gTWFjcm9Bc3NlbWJsZXJIZWxwZXJzOjppc1Vuc2lnbmVk
PE1hY3JvQXNzZW1ibGVyPihjb25kKTsKKyAgICB9CisKKyAgICBzdGF0aWMgYm9vbCBpc1NpZ25l
ZChSZXN1bHRDb25kaXRpb24gY29uZCkKKyAgICB7CisgICAgICAgIHJldHVybiBNYWNyb0Fzc2Vt
YmxlckhlbHBlcnM6OmlzU2lnbmVkPE1hY3JvQXNzZW1ibGVyPihjb25kKTsKKyAgICB9CisKKyAg
ICBzdGF0aWMgYm9vbCBpc1Vuc2lnbmVkKFJlc3VsdENvbmRpdGlvbiBjb25kKQorICAgIHsKKyAg
ICAgICAgcmV0dXJuIE1hY3JvQXNzZW1ibGVySGVscGVyczo6aXNVbnNpZ25lZDxNYWNyb0Fzc2Vt
Ymxlcj4oY29uZCk7CiAgICAgfQotI2VuZGlmCiAKICAgICAvLyBQbGF0Zm9ybSBhZ25vc3RpYyBj
b252ZW5pZW5jZSBmdW5jdGlvbnMsCiAgICAgLy8gZGVzY3JpYmVkIGluIHRlcm1zIG9mIG90aGVy
IG1hY3JvIGFzc2VtYmx5IG1ldGhvZHMuCkBAIC03OTcsOCArNzc5LDcgQEAgY2xhc3MgTWFjcm9B
c3NlbWJsZXIgOiBwdWJsaWMgTWFjcm9Bc3NlbWJsZXJCYXNlIHsKICAgICB1c2luZyBNYWNyb0Fz
c2VtYmxlckJhc2U6OmJyYW5jaFRlc3Q4OwogICAgIEp1bXAgYnJhbmNoVGVzdDgoUmVzdWx0Q29u
ZGl0aW9uIGNvbmQsIEV4dGVuZGVkQWRkcmVzcyBhZGRyZXNzLCBUcnVzdGVkSW1tMzIgbWFzayA9
IFRydXN0ZWRJbW0zMigtMSkpCiAgICAgewotICAgICAgICBUcnVzdGVkSW1tMzIgbWFzazgoc3Rh
dGljX2Nhc3Q8aW50OF90PihtYXNrLm1fdmFsdWUpKTsKLSAgICAgICAgcmV0dXJuIE1hY3JvQXNz
ZW1ibGVyQmFzZTo6YnJhbmNoVGVzdDgoY29uZCwgQWRkcmVzcyhhZGRyZXNzLmJhc2UsIGFkZHJl
c3Mub2Zmc2V0KSwgbWFzazgpOworICAgICAgICByZXR1cm4gTWFjcm9Bc3NlbWJsZXJCYXNlOjpi
cmFuY2hUZXN0OChjb25kLCBBZGRyZXNzKGFkZHJlc3MuYmFzZSwgYWRkcmVzcy5vZmZzZXQpLCBt
YXNrKTsKICAgICB9CiAKICNlbHNlIC8vICFDUFUoWDg2XzY0KQpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlckFSTS5oIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlckFSTS5oCmluZGV4IGYxMTE4ZDgz
NDYxZGMwMGFjMjc5ZDlhMDU1MjVhMGY5NzVjOTIyZTQuLjg2YTJmMmMyNGE1MGFhZmU5Mzc0MmU2
OGM1MTAyYzg3MzFhZTMxMTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3Nl
bWJsZXIvTWFjcm9Bc3NlbWJsZXJBUk0uaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNz
ZW1ibGVyL01hY3JvQXNzZW1ibGVyQVJNLmgKQEAgLTYzMiwyMyArNjMyLDIzIEBAIGNsYXNzIE1h
Y3JvQXNzZW1ibGVyQVJNIDogcHVibGljIEFic3RyYWN0TWFjcm9Bc3NlbWJsZXI8QVJNQXNzZW1i
bGVyLCBNYWNyb0Fzc2VtCiAKICAgICBKdW1wIGJyYW5jaDgoUmVsYXRpb25hbENvbmRpdGlvbiBj
b25kLCBBZGRyZXNzIGxlZnQsIFRydXN0ZWRJbW0zMiByaWdodCkKICAgICB7Ci0gICAgICAgIFRy
dXN0ZWRJbW0zMiByaWdodDgoc3RhdGljX2Nhc3Q8aW50OF90PihyaWdodC5tX3ZhbHVlKSk7Ci0g
ICAgICAgIGxvYWQ4KGxlZnQsIEFSTVJlZ2lzdGVyczo6UzEpOworICAgICAgICBUcnVzdGVkSW1t
MzIgcmlnaHQ4ID0gTWFjcm9Bc3NlbWJsZXJIZWxwZXJzOjptYXNrOE9uQ29uZGl0aW9uKCp0aGlz
LCBjb25kLCByaWdodCk7CisgICAgICAgIE1hY3JvQXNzZW1ibGVySGVscGVyczo6bG9hZDhPbkNv
bmRpdGlvbigqdGhpcywgY29uZCwgbGVmdCwgQVJNUmVnaXN0ZXJzOjpTMSk7CiAgICAgICAgIHJl
dHVybiBicmFuY2gzMihjb25kLCBBUk1SZWdpc3RlcnM6OlMxLCByaWdodDgpOwogICAgIH0KIAog
ICAgIEp1bXAgYnJhbmNoOChSZWxhdGlvbmFsQ29uZGl0aW9uIGNvbmQsIEJhc2VJbmRleCBsZWZ0
LCBUcnVzdGVkSW1tMzIgcmlnaHQpCiAgICAgewotICAgICAgICBUcnVzdGVkSW1tMzIgcmlnaHQ4
KHN0YXRpY19jYXN0PGludDhfdD4ocmlnaHQubV92YWx1ZSkpOwotICAgICAgICBsb2FkOChsZWZ0
LCBBUk1SZWdpc3RlcnM6OlMxKTsKKyAgICAgICAgVHJ1c3RlZEltbTMyIHJpZ2h0OCA9IE1hY3Jv
QXNzZW1ibGVySGVscGVyczo6bWFzazhPbkNvbmRpdGlvbigqdGhpcywgY29uZCwgcmlnaHQpOwor
ICAgICAgICBNYWNyb0Fzc2VtYmxlckhlbHBlcnM6OmxvYWQ4T25Db25kaXRpb24oKnRoaXMsIGNv
bmQsIGxlZnQsIEFSTVJlZ2lzdGVyczo6UzEpOwogICAgICAgICByZXR1cm4gYnJhbmNoMzIoY29u
ZCwgQVJNUmVnaXN0ZXJzOjpTMSwgcmlnaHQ4KTsKICAgICB9CiAKICAgICBKdW1wIGJyYW5jaDgo
UmVsYXRpb25hbENvbmRpdGlvbiBjb25kLCBBYnNvbHV0ZUFkZHJlc3MgbGVmdCwgVHJ1c3RlZElt
bTMyIHJpZ2h0KQogICAgIHsKLSAgICAgICAgVHJ1c3RlZEltbTMyIHJpZ2h0OChzdGF0aWNfY2Fz
dDxpbnQ4X3Q+KHJpZ2h0Lm1fdmFsdWUpKTsKKyAgICAgICAgVHJ1c3RlZEltbTMyIHJpZ2h0OCA9
IE1hY3JvQXNzZW1ibGVySGVscGVyczo6bWFzazhPbkNvbmRpdGlvbigqdGhpcywgY29uZCwgcmln
aHQpOwogICAgICAgICBtb3ZlKFRydXN0ZWRJbW1QdHIobGVmdC5tX3B0ciksIEFSTVJlZ2lzdGVy
czo6UzEpOwotICAgICAgICBsb2FkOChBZGRyZXNzKEFSTVJlZ2lzdGVyczo6UzEpLCBBUk1SZWdp
c3RlcnM6OlMxKTsKKyAgICAgICAgTWFjcm9Bc3NlbWJsZXJIZWxwZXJzOjpsb2FkOE9uQ29uZGl0
aW9uKCp0aGlzLCBjb25kLCBBZGRyZXNzKEFSTVJlZ2lzdGVyczo6UzEpLCBBUk1SZWdpc3RlcnM6
OlMxKTsKICAgICAgICAgcmV0dXJuIGJyYW5jaDMyKGNvbmQsIEFSTVJlZ2lzdGVyczo6UzEsIHJp
Z2h0OCk7CiAgICAgfQogCkBAIC03MDIsMjMgKzcwMiwyMyBAQCBjbGFzcyBNYWNyb0Fzc2VtYmxl
ckFSTSA6IHB1YmxpYyBBYnN0cmFjdE1hY3JvQXNzZW1ibGVyPEFSTUFzc2VtYmxlciwgTWFjcm9B
c3NlbQogCiAgICAgSnVtcCBicmFuY2hUZXN0OChSZXN1bHRDb25kaXRpb24gY29uZCwgQWRkcmVz
cyBhZGRyZXNzLCBUcnVzdGVkSW1tMzIgbWFzayA9IFRydXN0ZWRJbW0zMigtMSkpCiAgICAgewot
ICAgICAgICBUcnVzdGVkSW1tMzIgbWFzazgoc3RhdGljX2Nhc3Q8aW50OF90PihtYXNrLm1fdmFs
dWUpKTsKLSAgICAgICAgbG9hZDgoYWRkcmVzcywgQVJNUmVnaXN0ZXJzOjpTMSk7CisgICAgICAg
IFRydXN0ZWRJbW0zMiBtYXNrOCA9IE1hY3JvQXNzZW1ibGVySGVscGVyczo6bWFzazhPbkNvbmRp
dGlvbigqdGhpcywgY29uZCwgbWFzayk7CisgICAgICAgIE1hY3JvQXNzZW1ibGVySGVscGVyczo6
bG9hZDhPbkNvbmRpdGlvbigqdGhpcywgY29uZCwgYWRkcmVzcywgQVJNUmVnaXN0ZXJzOjpTMSk7
CiAgICAgICAgIHJldHVybiBicmFuY2hUZXN0MzIoY29uZCwgQVJNUmVnaXN0ZXJzOjpTMSwgbWFz
azgpOwogICAgIH0KIAogICAgIEp1bXAgYnJhbmNoVGVzdDgoUmVzdWx0Q29uZGl0aW9uIGNvbmQs
IEJhc2VJbmRleCBhZGRyZXNzLCBUcnVzdGVkSW1tMzIgbWFzayA9IFRydXN0ZWRJbW0zMigtMSkp
CiAgICAgewotICAgICAgICBUcnVzdGVkSW1tMzIgbWFzazgoc3RhdGljX2Nhc3Q8aW50OF90Piht
YXNrLm1fdmFsdWUpKTsKLSAgICAgICAgbG9hZDgoYWRkcmVzcywgQVJNUmVnaXN0ZXJzOjpTMSk7
CisgICAgICAgIFRydXN0ZWRJbW0zMiBtYXNrOCA9IE1hY3JvQXNzZW1ibGVySGVscGVyczo6bWFz
azhPbkNvbmRpdGlvbigqdGhpcywgY29uZCwgbWFzayk7CisgICAgICAgIE1hY3JvQXNzZW1ibGVy
SGVscGVyczo6bG9hZDhPbkNvbmRpdGlvbigqdGhpcywgY29uZCwgYWRkcmVzcywgQVJNUmVnaXN0
ZXJzOjpTMSk7CiAgICAgICAgIHJldHVybiBicmFuY2hUZXN0MzIoY29uZCwgQVJNUmVnaXN0ZXJz
OjpTMSwgbWFzazgpOwogICAgIH0KIAogICAgIEp1bXAgYnJhbmNoVGVzdDgoUmVzdWx0Q29uZGl0
aW9uIGNvbmQsIEFic29sdXRlQWRkcmVzcyBhZGRyZXNzLCBUcnVzdGVkSW1tMzIgbWFzayA9IFRy
dXN0ZWRJbW0zMigtMSkpCiAgICAgewotICAgICAgICBUcnVzdGVkSW1tMzIgbWFzazgoc3RhdGlj
X2Nhc3Q8aW50OF90PihtYXNrLm1fdmFsdWUpKTsKKyAgICAgICAgVHJ1c3RlZEltbTMyIG1hc2s4
ID0gTWFjcm9Bc3NlbWJsZXJIZWxwZXJzOjptYXNrOE9uQ29uZGl0aW9uKCp0aGlzLCBjb25kLCBt
YXNrKTsKICAgICAgICAgbW92ZShUcnVzdGVkSW1tUHRyKGFkZHJlc3MubV9wdHIpLCBBUk1SZWdp
c3RlcnM6OlMxKTsKLSAgICAgICAgbG9hZDgoQWRkcmVzcyhBUk1SZWdpc3RlcnM6OlMxKSwgQVJN
UmVnaXN0ZXJzOjpTMSk7CisgICAgICAgIE1hY3JvQXNzZW1ibGVySGVscGVyczo6bG9hZDhPbkNv
bmRpdGlvbigqdGhpcywgY29uZCwgQWRkcmVzcyhBUk1SZWdpc3RlcnM6OlMxKSwgQVJNUmVnaXN0
ZXJzOjpTMSk7CiAgICAgICAgIHJldHVybiBicmFuY2hUZXN0MzIoY29uZCwgQVJNUmVnaXN0ZXJz
OjpTMSwgbWFzazgpOwogICAgIH0KIApAQCAtOTg1LDggKzk4NSw4IEBAIGNsYXNzIE1hY3JvQXNz
ZW1ibGVyQVJNIDogcHVibGljIEFic3RyYWN0TWFjcm9Bc3NlbWJsZXI8QVJNQXNzZW1ibGVyLCBN
YWNyb0Fzc2VtCiAKICAgICB2b2lkIGNvbXBhcmU4KFJlbGF0aW9uYWxDb25kaXRpb24gY29uZCwg
QWRkcmVzcyBsZWZ0LCBUcnVzdGVkSW1tMzIgcmlnaHQsIFJlZ2lzdGVySUQgZGVzdCkKICAgICB7
Ci0gICAgICAgIFRydXN0ZWRJbW0zMiByaWdodDgoc3RhdGljX2Nhc3Q8aW50OF90PihyaWdodC5t
X3ZhbHVlKSk7Ci0gICAgICAgIGxvYWQ4KGxlZnQsIEFSTVJlZ2lzdGVyczo6UzEpOworICAgICAg
ICBUcnVzdGVkSW1tMzIgcmlnaHQ4ID0gTWFjcm9Bc3NlbWJsZXJIZWxwZXJzOjptYXNrOE9uQ29u
ZGl0aW9uKCp0aGlzLCBjb25kLCByaWdodCk7CisgICAgICAgIE1hY3JvQXNzZW1ibGVySGVscGVy
czo6bG9hZDhPbkNvbmRpdGlvbigqdGhpcywgY29uZCwgbGVmdCwgQVJNUmVnaXN0ZXJzOjpTMSk7
CiAgICAgICAgIGNvbXBhcmUzMihjb25kLCBBUk1SZWdpc3RlcnM6OlMxLCByaWdodDgsIGRlc3Qp
OwogICAgIH0KIApAQCAtMTAwOCw4ICsxMDA4LDggQEAgY2xhc3MgTWFjcm9Bc3NlbWJsZXJBUk0g
OiBwdWJsaWMgQWJzdHJhY3RNYWNyb0Fzc2VtYmxlcjxBUk1Bc3NlbWJsZXIsIE1hY3JvQXNzZW0K
IAogICAgIHZvaWQgdGVzdDgoUmVzdWx0Q29uZGl0aW9uIGNvbmQsIEFkZHJlc3MgYWRkcmVzcywg
VHJ1c3RlZEltbTMyIG1hc2ssIFJlZ2lzdGVySUQgZGVzdCkKICAgICB7Ci0gICAgICAgIFRydXN0
ZWRJbW0zMiBtYXNrOChzdGF0aWNfY2FzdDxpbnQ4X3Q+KG1hc2subV92YWx1ZSkpOwotICAgICAg
ICBsb2FkOChhZGRyZXNzLCBBUk1SZWdpc3RlcnM6OlMxKTsKKyAgICAgICAgVHJ1c3RlZEltbTMy
IG1hc2s4ID0gTWFjcm9Bc3NlbWJsZXJIZWxwZXJzOjptYXNrOE9uQ29uZGl0aW9uKCp0aGlzLCBj
b25kLCBtYXNrKTsKKyAgICAgICAgTWFjcm9Bc3NlbWJsZXJIZWxwZXJzOjpsb2FkOE9uQ29uZGl0
aW9uKCp0aGlzLCBjb25kLCBhZGRyZXNzLCBBUk1SZWdpc3RlcnM6OlMxKTsKICAgICAgICAgdGVz
dDMyKGNvbmQsIEFSTVJlZ2lzdGVyczo6UzEsIG1hc2s4LCBkZXN0KTsKICAgICB9CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJBUk02
NC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlckFSTTY0
LmgKaW5kZXggNWZkYzcyOWVlZTYzZWMwNGMwNjE5YzY3ZjUxY2JkMjJhM2U2OWZiNi4uOTc5MDYx
YTEyOTRiYmJjZmUwMTAwYWJiZjczYTdmZDc1ZTU2ZmIzNCAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlckFSTTY0LmgKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlckFSTTY0LmgKQEAgLTEyMDAs
NiArMTIwMCwxNCBAQCBjbGFzcyBNYWNyb0Fzc2VtYmxlckFSTTY0IDogcHVibGljIEFic3RyYWN0
TWFjcm9Bc3NlbWJsZXI8QVJNNjRBc3NlbWJsZXIsIE1hY3JvQQogICAgICAgICBtX2Fzc2VtYmxl
ci5sZHJzYjwzMj4oZGVzdCwgYWRkcmVzcy5iYXNlLCBtZW1vcnlUZW1wUmVnaXN0ZXIpOwogICAg
IH0KIAorICAgIHZvaWQgbG9hZDhTaWduZWRFeHRlbmRUbzMyKGNvbnN0IHZvaWQqIGFkZHJlc3Ms
IFJlZ2lzdGVySUQgZGVzdCkKKyAgICB7CisgICAgICAgIG1vdmVUb0NhY2hlZFJlZyhUcnVzdGVk
SW1tUHRyKGFkZHJlc3MpLCBjYWNoZWRNZW1vcnlUZW1wUmVnaXN0ZXIoKSk7CisgICAgICAgIG1f
YXNzZW1ibGVyLmxkcnNiPDMyPihkZXN0LCBtZW1vcnlUZW1wUmVnaXN0ZXIsIEFSTTY0UmVnaXN0
ZXJzOjp6cik7CisgICAgICAgIGlmIChkZXN0ID09IG1lbW9yeVRlbXBSZWdpc3RlcikKKyAgICAg
ICAgICAgIGNhY2hlZE1lbW9yeVRlbXBSZWdpc3RlcigpLmludmFsaWRhdGUoKTsKKyAgICB9CisK
ICAgICB2b2lkIHplcm9FeHRlbmQ4VG8zMihSZWdpc3RlcklEIHNyYywgUmVnaXN0ZXJJRCBkZXN0
KQogICAgIHsKICAgICAgICAgbV9hc3NlbWJsZXIudXh0YjwzMj4oZGVzdCwgc3JjKTsKQEAgLTI0
MjQsMjIgKzI0MzIsMjIgQEAgY2xhc3MgTWFjcm9Bc3NlbWJsZXJBUk02NCA6IHB1YmxpYyBBYnN0
cmFjdE1hY3JvQXNzZW1ibGVyPEFSTTY0QXNzZW1ibGVyLCBNYWNyb0EKIAogICAgIEp1bXAgYnJh
bmNoOChSZWxhdGlvbmFsQ29uZGl0aW9uIGNvbmQsIEFkZHJlc3MgbGVmdCwgVHJ1c3RlZEltbTMy
IHJpZ2h0KQogICAgIHsKLSAgICAgICAgVHJ1c3RlZEltbTMyIHJpZ2h0OChzdGF0aWNfY2FzdDxp
bnQ4X3Q+KHJpZ2h0Lm1fdmFsdWUpKTsKLSAgICAgICAgbG9hZDgobGVmdCwgZ2V0Q2FjaGVkTWVt
b3J5VGVtcFJlZ2lzdGVySURBbmRJbnZhbGlkYXRlKCkpOworICAgICAgICBUcnVzdGVkSW1tMzIg
cmlnaHQ4ID0gTWFjcm9Bc3NlbWJsZXJIZWxwZXJzOjptYXNrOE9uQ29uZGl0aW9uKCp0aGlzLCBj
b25kLCByaWdodCk7CisgICAgICAgIE1hY3JvQXNzZW1ibGVySGVscGVyczo6bG9hZDhPbkNvbmRp
dGlvbigqdGhpcywgY29uZCwgbGVmdCwgZ2V0Q2FjaGVkTWVtb3J5VGVtcFJlZ2lzdGVySURBbmRJ
bnZhbGlkYXRlKCkpOwogICAgICAgICByZXR1cm4gYnJhbmNoMzIoY29uZCwgbWVtb3J5VGVtcFJl
Z2lzdGVyLCByaWdodDgpOwogICAgIH0KIAogICAgIEp1bXAgYnJhbmNoOChSZWxhdGlvbmFsQ29u
ZGl0aW9uIGNvbmQsIEJhc2VJbmRleCBsZWZ0LCBUcnVzdGVkSW1tMzIgcmlnaHQpCiAgICAgewot
ICAgICAgICBUcnVzdGVkSW1tMzIgcmlnaHQ4KHN0YXRpY19jYXN0PGludDhfdD4ocmlnaHQubV92
YWx1ZSkpOwotICAgICAgICBsb2FkOChsZWZ0LCBnZXRDYWNoZWRNZW1vcnlUZW1wUmVnaXN0ZXJJ
REFuZEludmFsaWRhdGUoKSk7CisgICAgICAgIFRydXN0ZWRJbW0zMiByaWdodDggPSBNYWNyb0Fz
c2VtYmxlckhlbHBlcnM6Om1hc2s4T25Db25kaXRpb24oKnRoaXMsIGNvbmQsIHJpZ2h0KTsKKyAg
ICAgICAgTWFjcm9Bc3NlbWJsZXJIZWxwZXJzOjpsb2FkOE9uQ29uZGl0aW9uKCp0aGlzLCBjb25k
LCBsZWZ0LCBnZXRDYWNoZWRNZW1vcnlUZW1wUmVnaXN0ZXJJREFuZEludmFsaWRhdGUoKSk7CiAg
ICAgICAgIHJldHVybiBicmFuY2gzMihjb25kLCBtZW1vcnlUZW1wUmVnaXN0ZXIsIHJpZ2h0OCk7
CiAgICAgfQogICAgIAogICAgIEp1bXAgYnJhbmNoOChSZWxhdGlvbmFsQ29uZGl0aW9uIGNvbmQs
IEFic29sdXRlQWRkcmVzcyBsZWZ0LCBUcnVzdGVkSW1tMzIgcmlnaHQpCiAgICAgewotICAgICAg
ICBUcnVzdGVkSW1tMzIgcmlnaHQ4KHN0YXRpY19jYXN0PGludDhfdD4ocmlnaHQubV92YWx1ZSkp
OwotICAgICAgICBsb2FkOChsZWZ0Lm1fcHRyLCBnZXRDYWNoZWRNZW1vcnlUZW1wUmVnaXN0ZXJJ
REFuZEludmFsaWRhdGUoKSk7CisgICAgICAgIFRydXN0ZWRJbW0zMiByaWdodDggPSBNYWNyb0Fz
c2VtYmxlckhlbHBlcnM6Om1hc2s4T25Db25kaXRpb24oKnRoaXMsIGNvbmQsIHJpZ2h0KTsKKyAg
ICAgICAgTWFjcm9Bc3NlbWJsZXJIZWxwZXJzOjpsb2FkOE9uQ29uZGl0aW9uKCp0aGlzLCBjb25k
LCBsZWZ0Lm1fcHRyLCBnZXRDYWNoZWRNZW1vcnlUZW1wUmVnaXN0ZXJJREFuZEludmFsaWRhdGUo
KSk7CiAgICAgICAgIHJldHVybiBicmFuY2gzMihjb25kLCBtZW1vcnlUZW1wUmVnaXN0ZXIsIHJp
Z2h0OCk7CiAgICAgfQogICAgIApAQCAtMjU4MywzMCArMjU5MSwzNSBAQCBjbGFzcyBNYWNyb0Fz
c2VtYmxlckFSTTY0IDogcHVibGljIEFic3RyYWN0TWFjcm9Bc3NlbWJsZXI8QVJNNjRBc3NlbWJs
ZXIsIE1hY3JvQQogCiAgICAgSnVtcCBicmFuY2hUZXN0OChSZXN1bHRDb25kaXRpb24gY29uZCwg
QWRkcmVzcyBhZGRyZXNzLCBUcnVzdGVkSW1tMzIgbWFzayA9IFRydXN0ZWRJbW0zMigtMSkpCiAg
ICAgewotICAgICAgICBUcnVzdGVkSW1tMzIgbWFzazgoc3RhdGljX2Nhc3Q8aW50OF90PihtYXNr
Lm1fdmFsdWUpKTsKLSAgICAgICAgbG9hZDgoYWRkcmVzcywgZ2V0Q2FjaGVkRGF0YVRlbXBSZWdp
c3RlcklEQW5kSW52YWxpZGF0ZSgpKTsKKyAgICAgICAgVHJ1c3RlZEltbTMyIG1hc2s4ID0gTWFj
cm9Bc3NlbWJsZXJIZWxwZXJzOjptYXNrOE9uQ29uZGl0aW9uKCp0aGlzLCBjb25kLCBtYXNrKTsK
KyAgICAgICAgTWFjcm9Bc3NlbWJsZXJIZWxwZXJzOjpsb2FkOE9uQ29uZGl0aW9uKCp0aGlzLCBj
b25kLCBhZGRyZXNzLCBnZXRDYWNoZWREYXRhVGVtcFJlZ2lzdGVySURBbmRJbnZhbGlkYXRlKCkp
OwogICAgICAgICByZXR1cm4gYnJhbmNoVGVzdDMyKGNvbmQsIGRhdGFUZW1wUmVnaXN0ZXIsIG1h
c2s4KTsKICAgICB9CiAKICAgICBKdW1wIGJyYW5jaFRlc3Q4KFJlc3VsdENvbmRpdGlvbiBjb25k
LCBBYnNvbHV0ZUFkZHJlc3MgYWRkcmVzcywgVHJ1c3RlZEltbTMyIG1hc2sgPSBUcnVzdGVkSW1t
MzIoLTEpKQogICAgIHsKLSAgICAgICAgVHJ1c3RlZEltbTMyIG1hc2s4KHN0YXRpY19jYXN0PGlu
dDhfdD4obWFzay5tX3ZhbHVlKSk7Ci0gICAgICAgIGxvYWQ4KGFkZHJlc3MubV9wdHIsIGdldENh
Y2hlZERhdGFUZW1wUmVnaXN0ZXJJREFuZEludmFsaWRhdGUoKSk7CisgICAgICAgIFRydXN0ZWRJ
bW0zMiBtYXNrOCA9IE1hY3JvQXNzZW1ibGVySGVscGVyczo6bWFzazhPbkNvbmRpdGlvbigqdGhp
cywgY29uZCwgbWFzayk7CisgICAgICAgIE1hY3JvQXNzZW1ibGVySGVscGVyczo6bG9hZDhPbkNv
bmRpdGlvbigqdGhpcywgY29uZCwgYWRkcmVzcy5tX3B0ciwgZ2V0Q2FjaGVkRGF0YVRlbXBSZWdp
c3RlcklEQW5kSW52YWxpZGF0ZSgpKTsKICAgICAgICAgcmV0dXJuIGJyYW5jaFRlc3QzMihjb25k
LCBkYXRhVGVtcFJlZ2lzdGVyLCBtYXNrOCk7CiAgICAgfQogCiAgICAgSnVtcCBicmFuY2hUZXN0
OChSZXN1bHRDb25kaXRpb24gY29uZCwgRXh0ZW5kZWRBZGRyZXNzIGFkZHJlc3MsIFRydXN0ZWRJ
bW0zMiBtYXNrID0gVHJ1c3RlZEltbTMyKC0xKSkKICAgICB7Ci0gICAgICAgIFRydXN0ZWRJbW0z
MiBtYXNrOChzdGF0aWNfY2FzdDxpbnQ4X3Q+KG1hc2subV92YWx1ZSkpOworICAgICAgICBUcnVz
dGVkSW1tMzIgbWFzazggPSBNYWNyb0Fzc2VtYmxlckhlbHBlcnM6Om1hc2s4T25Db25kaXRpb24o
KnRoaXMsIGNvbmQsIG1hc2spOwogICAgICAgICBtb3ZlKFRydXN0ZWRJbW1QdHIocmVpbnRlcnBy
ZXRfY2FzdDx2b2lkKj4oYWRkcmVzcy5vZmZzZXQpKSwgZ2V0Q2FjaGVkRGF0YVRlbXBSZWdpc3Rl
cklEQW5kSW52YWxpZGF0ZSgpKTsKLSAgICAgICAgbV9hc3NlbWJsZXIubGRyYihkYXRhVGVtcFJl
Z2lzdGVyLCBhZGRyZXNzLmJhc2UsIGRhdGFUZW1wUmVnaXN0ZXIpOworCisgICAgICAgIGlmIChN
YWNyb0Fzc2VtYmxlckhlbHBlcnM6OmlzVW5zaWduZWQ8TWFjcm9Bc3NlbWJsZXJBUk02ND4oY29u
ZCkpCisgICAgICAgICAgICBtX2Fzc2VtYmxlci5sZHJiKGRhdGFUZW1wUmVnaXN0ZXIsIGFkZHJl
c3MuYmFzZSwgZGF0YVRlbXBSZWdpc3Rlcik7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIG1f
YXNzZW1ibGVyLmxkcnNiPDMyPihkYXRhVGVtcFJlZ2lzdGVyLCBhZGRyZXNzLmJhc2UsIGRhdGFU
ZW1wUmVnaXN0ZXIpOworCiAgICAgICAgIHJldHVybiBicmFuY2hUZXN0MzIoY29uZCwgZGF0YVRl
bXBSZWdpc3RlciwgbWFzazgpOwogICAgIH0KIAogICAgIEp1bXAgYnJhbmNoVGVzdDgoUmVzdWx0
Q29uZGl0aW9uIGNvbmQsIEJhc2VJbmRleCBhZGRyZXNzLCBUcnVzdGVkSW1tMzIgbWFzayA9IFRy
dXN0ZWRJbW0zMigtMSkpCiAgICAgewotICAgICAgICBUcnVzdGVkSW1tMzIgbWFzazgoc3RhdGlj
X2Nhc3Q8aW50OF90PihtYXNrLm1fdmFsdWUpKTsKLSAgICAgICAgbG9hZDgoYWRkcmVzcywgZ2V0
Q2FjaGVkRGF0YVRlbXBSZWdpc3RlcklEQW5kSW52YWxpZGF0ZSgpKTsKKyAgICAgICAgVHJ1c3Rl
ZEltbTMyIG1hc2s4ID0gTWFjcm9Bc3NlbWJsZXJIZWxwZXJzOjptYXNrOE9uQ29uZGl0aW9uKCp0
aGlzLCBjb25kLCBtYXNrKTsKKyAgICAgICAgTWFjcm9Bc3NlbWJsZXJIZWxwZXJzOjpsb2FkOE9u
Q29uZGl0aW9uKCp0aGlzLCBjb25kLCBhZGRyZXNzLCBnZXRDYWNoZWREYXRhVGVtcFJlZ2lzdGVy
SURBbmRJbnZhbGlkYXRlKCkpOwogICAgICAgICByZXR1cm4gYnJhbmNoVGVzdDMyKGNvbmQsIGRh
dGFUZW1wUmVnaXN0ZXIsIG1hc2s4KTsKICAgICB9CiAKQEAgLTMwMjMsOCArMzAzNiw4IEBAIGNs
YXNzIE1hY3JvQXNzZW1ibGVyQVJNNjQgOiBwdWJsaWMgQWJzdHJhY3RNYWNyb0Fzc2VtYmxlcjxB
Uk02NEFzc2VtYmxlciwgTWFjcm9BCiAKICAgICB2b2lkIGNvbXBhcmU4KFJlbGF0aW9uYWxDb25k
aXRpb24gY29uZCwgQWRkcmVzcyBsZWZ0LCBUcnVzdGVkSW1tMzIgcmlnaHQsIFJlZ2lzdGVySUQg
ZGVzdCkKICAgICB7Ci0gICAgICAgIFRydXN0ZWRJbW0zMiByaWdodDgoc3RhdGljX2Nhc3Q8aW50
OF90PihyaWdodC5tX3ZhbHVlKSk7Ci0gICAgICAgIGxvYWQ4KGxlZnQsIGdldENhY2hlZE1lbW9y
eVRlbXBSZWdpc3RlcklEQW5kSW52YWxpZGF0ZSgpKTsKKyAgICAgICAgVHJ1c3RlZEltbTMyIHJp
Z2h0OCA9IE1hY3JvQXNzZW1ibGVySGVscGVyczo6bWFzazhPbkNvbmRpdGlvbigqdGhpcywgY29u
ZCwgcmlnaHQpOworICAgICAgICBNYWNyb0Fzc2VtYmxlckhlbHBlcnM6OmxvYWQ4T25Db25kaXRp
b24oKnRoaXMsIGNvbmQsIGxlZnQsIGdldENhY2hlZE1lbW9yeVRlbXBSZWdpc3RlcklEQW5kSW52
YWxpZGF0ZSgpKTsKICAgICAgICAgbW92ZShyaWdodDgsIGdldENhY2hlZERhdGFUZW1wUmVnaXN0
ZXJJREFuZEludmFsaWRhdGUoKSk7CiAgICAgICAgIGNvbXBhcmUzMihjb25kLCBtZW1vcnlUZW1w
UmVnaXN0ZXIsIGRhdGFUZW1wUmVnaXN0ZXIsIGRlc3QpOwogICAgIH0KQEAgLTMwNDksOCArMzA2
Miw4IEBAIGNsYXNzIE1hY3JvQXNzZW1ibGVyQVJNNjQgOiBwdWJsaWMgQWJzdHJhY3RNYWNyb0Fz
c2VtYmxlcjxBUk02NEFzc2VtYmxlciwgTWFjcm9BCiAKICAgICB2b2lkIHRlc3Q4KFJlc3VsdENv
bmRpdGlvbiBjb25kLCBBZGRyZXNzIGFkZHJlc3MsIFRydXN0ZWRJbW0zMiBtYXNrLCBSZWdpc3Rl
cklEIGRlc3QpCiAgICAgewotICAgICAgICBUcnVzdGVkSW1tMzIgbWFzazgoc3RhdGljX2Nhc3Q8
aW50OF90PihtYXNrLm1fdmFsdWUpKTsKLSAgICAgICAgbG9hZDgoYWRkcmVzcywgZ2V0Q2FjaGVk
TWVtb3J5VGVtcFJlZ2lzdGVySURBbmRJbnZhbGlkYXRlKCkpOworICAgICAgICBUcnVzdGVkSW1t
MzIgbWFzazggPSBNYWNyb0Fzc2VtYmxlckhlbHBlcnM6Om1hc2s4T25Db25kaXRpb24oKnRoaXMs
IGNvbmQsIG1hc2spOworICAgICAgICBNYWNyb0Fzc2VtYmxlckhlbHBlcnM6OmxvYWQ4T25Db25k
aXRpb24oKnRoaXMsIGNvbmQsIGFkZHJlc3MsIGdldENhY2hlZE1lbW9yeVRlbXBSZWdpc3RlcklE
QW5kSW52YWxpZGF0ZSgpKTsKICAgICAgICAgdGVzdDMyKGNvbmQsIG1lbW9yeVRlbXBSZWdpc3Rl
ciwgbWFzazgsIGRlc3QpOwogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlckFSTXY3LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyQVJNdjcuaAppbmRleCBmNjYzN2Q4MmU5NDVlOGUy
NzhkNDUyMTYwMTU0NGM2NWQ2YTI4NDg1Li5hYmFkNjZhYTJmNTBmYjlhOTQwNTQ5MWRhYWRhOTAx
MGMyNmJlMDFhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01h
Y3JvQXNzZW1ibGVyQVJNdjcuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVy
L01hY3JvQXNzZW1ibGVyQVJNdjcuaApAQCAtMTQ5MCw3ICsxNDkwLDcgQEAgY2xhc3MgTWFjcm9B
c3NlbWJsZXJBUk12NyA6IHB1YmxpYyBBYnN0cmFjdE1hY3JvQXNzZW1ibGVyPEFSTXY3QXNzZW1i
bGVyLCBNYWNyb0EKIAogICAgIEp1bXAgYnJhbmNoOChSZWxhdGlvbmFsQ29uZGl0aW9uIGNvbmQs
IFJlZ2lzdGVySUQgbGVmdCwgVHJ1c3RlZEltbTMyIHJpZ2h0KQogICAgIHsKLSAgICAgICAgVHJ1
c3RlZEltbTMyIHJpZ2h0OChzdGF0aWNfY2FzdDxpbnQ4X3Q+KHJpZ2h0Lm1fdmFsdWUpKTsKKyAg
ICAgICAgVHJ1c3RlZEltbTMyIHJpZ2h0OCA9IE1hY3JvQXNzZW1ibGVySGVscGVyczo6bWFzazhP
bkNvbmRpdGlvbigqdGhpcywgY29uZCwgcmlnaHQpOwogICAgICAgICBjb21wYXJlMzJBbmRTZXRG
bGFncyhsZWZ0LCByaWdodDgpOwogICAgICAgICByZXR1cm4gSnVtcChtYWtlQnJhbmNoKGNvbmQp
KTsKICAgICB9CkBAIC0xNDk4LDI1ICsxNDk4LDI1IEBAIGNsYXNzIE1hY3JvQXNzZW1ibGVyQVJN
djcgOiBwdWJsaWMgQWJzdHJhY3RNYWNyb0Fzc2VtYmxlcjxBUk12N0Fzc2VtYmxlciwgTWFjcm9B
CiAgICAgSnVtcCBicmFuY2g4KFJlbGF0aW9uYWxDb25kaXRpb24gY29uZCwgQWRkcmVzcyBsZWZ0
LCBUcnVzdGVkSW1tMzIgcmlnaHQpCiAgICAgewogICAgICAgICAvLyB1c2UgYWRkcmVzc1RlbXBS
ZWdpc3RlciBpbmNhc2UgdGhlIGJyYW5jaDggd2UgY2FsbCB1c2VzIGRhdGFUZW1wUmVnaXN0ZXIu
IDotLwotICAgICAgICBUcnVzdGVkSW1tMzIgcmlnaHQ4KHN0YXRpY19jYXN0PGludDhfdD4ocmln
aHQubV92YWx1ZSkpOwotICAgICAgICBsb2FkOChsZWZ0LCBhZGRyZXNzVGVtcFJlZ2lzdGVyKTsK
KyAgICAgICAgVHJ1c3RlZEltbTMyIHJpZ2h0OCA9IE1hY3JvQXNzZW1ibGVySGVscGVyczo6bWFz
azhPbkNvbmRpdGlvbigqdGhpcywgY29uZCwgcmlnaHQpOworICAgICAgICBNYWNyb0Fzc2VtYmxl
ckhlbHBlcnM6OmxvYWQ4T25Db25kaXRpb24oKnRoaXMsIGNvbmQsIGxlZnQsIGFkZHJlc3NUZW1w
UmVnaXN0ZXIpOwogICAgICAgICByZXR1cm4gYnJhbmNoOChjb25kLCBhZGRyZXNzVGVtcFJlZ2lz
dGVyLCByaWdodDgpOwogICAgIH0KIAogICAgIEp1bXAgYnJhbmNoOChSZWxhdGlvbmFsQ29uZGl0
aW9uIGNvbmQsIEJhc2VJbmRleCBsZWZ0LCBUcnVzdGVkSW1tMzIgcmlnaHQpCiAgICAgewogICAg
ICAgICAvLyB1c2UgYWRkcmVzc1RlbXBSZWdpc3RlciBpbmNhc2UgdGhlIGJyYW5jaDMyIHdlIGNh
bGwgdXNlcyBkYXRhVGVtcFJlZ2lzdGVyLiA6LS8KLSAgICAgICAgVHJ1c3RlZEltbTMyIHJpZ2h0
OChzdGF0aWNfY2FzdDxpbnQ4X3Q+KHJpZ2h0Lm1fdmFsdWUpKTsKLSAgICAgICAgbG9hZDgobGVm
dCwgYWRkcmVzc1RlbXBSZWdpc3Rlcik7CisgICAgICAgIFRydXN0ZWRJbW0zMiByaWdodDggPSBN
YWNyb0Fzc2VtYmxlckhlbHBlcnM6Om1hc2s4T25Db25kaXRpb24oKnRoaXMsIGNvbmQsIHJpZ2h0
KTsKKyAgICAgICAgTWFjcm9Bc3NlbWJsZXJIZWxwZXJzOjpsb2FkOE9uQ29uZGl0aW9uKCp0aGlz
LCBjb25kLCBsZWZ0LCBhZGRyZXNzVGVtcFJlZ2lzdGVyKTsKICAgICAgICAgcmV0dXJuIGJyYW5j
aDMyKGNvbmQsIGFkZHJlc3NUZW1wUmVnaXN0ZXIsIHJpZ2h0OCk7CiAgICAgfQogICAgIAogICAg
IEp1bXAgYnJhbmNoOChSZWxhdGlvbmFsQ29uZGl0aW9uIGNvbmQsIEFic29sdXRlQWRkcmVzcyBh
ZGRyZXNzLCBUcnVzdGVkSW1tMzIgcmlnaHQpCiAgICAgewogICAgICAgICAvLyBVc2UgYWRkcmVz
c1RlbXBSZWdpc3RlciBpbnN0ZWFkIG9mIGRhdGFUZW1wUmVnaXN0ZXIsIHNpbmNlIGJyYW5jaDMy
IHVzZXMgZGF0YVRlbXBSZWdpc3Rlci4KLSAgICAgICAgVHJ1c3RlZEltbTMyIHJpZ2h0OChzdGF0
aWNfY2FzdDxpbnQ4X3Q+KHJpZ2h0Lm1fdmFsdWUpKTsKKyAgICAgICAgVHJ1c3RlZEltbTMyIHJp
Z2h0OCA9IE1hY3JvQXNzZW1ibGVySGVscGVyczo6bWFzazhPbkNvbmRpdGlvbigqdGhpcywgY29u
ZCwgcmlnaHQpOwogICAgICAgICBtb3ZlKFRydXN0ZWRJbW1QdHIoYWRkcmVzcy5tX3B0ciksIGFk
ZHJlc3NUZW1wUmVnaXN0ZXIpOwotICAgICAgICBsb2FkOChBZGRyZXNzKGFkZHJlc3NUZW1wUmVn
aXN0ZXIpLCBhZGRyZXNzVGVtcFJlZ2lzdGVyKTsKKyAgICAgICAgTWFjcm9Bc3NlbWJsZXJIZWxw
ZXJzOjpsb2FkOE9uQ29uZGl0aW9uKCp0aGlzLCBjb25kLCBBZGRyZXNzKGFkZHJlc3NUZW1wUmVn
aXN0ZXIpLCBhZGRyZXNzVGVtcFJlZ2lzdGVyKTsKICAgICAgICAgcmV0dXJuIGJyYW5jaDMyKGNv
bmQsIGFkZHJlc3NUZW1wUmVnaXN0ZXIsIHJpZ2h0OCk7CiAgICAgfQogICAgIApAQCAtMTU1MSwy
NSArMTU1MSwyNSBAQCBjbGFzcyBNYWNyb0Fzc2VtYmxlckFSTXY3IDogcHVibGljIEFic3RyYWN0
TWFjcm9Bc3NlbWJsZXI8QVJNdjdBc3NlbWJsZXIsIE1hY3JvQQogICAgIEp1bXAgYnJhbmNoVGVz
dDgoUmVzdWx0Q29uZGl0aW9uIGNvbmQsIEJhc2VJbmRleCBhZGRyZXNzLCBUcnVzdGVkSW1tMzIg
bWFzayA9IFRydXN0ZWRJbW0zMigtMSkpCiAgICAgewogICAgICAgICAvLyB1c2UgYWRkcmVzc1Rl
bXBSZWdpc3RlciBpbmNhc2UgdGhlIGJyYW5jaFRlc3Q4IHdlIGNhbGwgdXNlcyBkYXRhVGVtcFJl
Z2lzdGVyLiA6LS8KLSAgICAgICAgVHJ1c3RlZEltbTMyIG1hc2s4KHN0YXRpY19jYXN0PGludDhf
dD4obWFzay5tX3ZhbHVlKSk7Ci0gICAgICAgIGxvYWQ4KGFkZHJlc3MsIGFkZHJlc3NUZW1wUmVn
aXN0ZXIpOworICAgICAgICBUcnVzdGVkSW1tMzIgbWFzazggPSBNYWNyb0Fzc2VtYmxlckhlbHBl
cnM6Om1hc2s4T25Db25kaXRpb24oKnRoaXMsIGNvbmQsIG1hc2spOworICAgICAgICBNYWNyb0Fz
c2VtYmxlckhlbHBlcnM6OmxvYWQ4T25Db25kaXRpb24oKnRoaXMsIGNvbmQsIGFkZHJlc3MsIGFk
ZHJlc3NUZW1wUmVnaXN0ZXIpOwogICAgICAgICByZXR1cm4gYnJhbmNoVGVzdDMyKGNvbmQsIGFk
ZHJlc3NUZW1wUmVnaXN0ZXIsIG1hc2s4KTsKICAgICB9CiAKICAgICBKdW1wIGJyYW5jaFRlc3Q4
KFJlc3VsdENvbmRpdGlvbiBjb25kLCBBZGRyZXNzIGFkZHJlc3MsIFRydXN0ZWRJbW0zMiBtYXNr
ID0gVHJ1c3RlZEltbTMyKC0xKSkKICAgICB7CiAgICAgICAgIC8vIHVzZSBhZGRyZXNzVGVtcFJl
Z2lzdGVyIGluY2FzZSB0aGUgYnJhbmNoVGVzdDggd2UgY2FsbCB1c2VzIGRhdGFUZW1wUmVnaXN0
ZXIuIDotLwotICAgICAgICBUcnVzdGVkSW1tMzIgbWFzazgoc3RhdGljX2Nhc3Q8aW50OF90Piht
YXNrLm1fdmFsdWUpKTsKLSAgICAgICAgbG9hZDgoYWRkcmVzcywgYWRkcmVzc1RlbXBSZWdpc3Rl
cik7CisgICAgICAgIFRydXN0ZWRJbW0zMiBtYXNrOCA9IE1hY3JvQXNzZW1ibGVySGVscGVyczo6
bWFzazhPbkNvbmRpdGlvbigqdGhpcywgY29uZCwgbWFzayk7CisgICAgICAgIE1hY3JvQXNzZW1i
bGVySGVscGVyczo6bG9hZDhPbkNvbmRpdGlvbigqdGhpcywgY29uZCwgYWRkcmVzcywgYWRkcmVz
c1RlbXBSZWdpc3Rlcik7CiAgICAgICAgIHJldHVybiBicmFuY2hUZXN0MzIoY29uZCwgYWRkcmVz
c1RlbXBSZWdpc3RlciwgbWFzazgpOwogICAgIH0KIAogICAgIEp1bXAgYnJhbmNoVGVzdDgoUmVz
dWx0Q29uZGl0aW9uIGNvbmQsIEFic29sdXRlQWRkcmVzcyBhZGRyZXNzLCBUcnVzdGVkSW1tMzIg
bWFzayA9IFRydXN0ZWRJbW0zMigtMSkpCiAgICAgewogICAgICAgICAvLyB1c2UgYWRkcmVzc1Rl
bXBSZWdpc3RlciBpbmNhc2UgdGhlIGJyYW5jaFRlc3Q4IHdlIGNhbGwgdXNlcyBkYXRhVGVtcFJl
Z2lzdGVyLiA6LS8KLSAgICAgICAgVHJ1c3RlZEltbTMyIG1hc2s4KHN0YXRpY19jYXN0PGludDhf
dD4obWFzay5tX3ZhbHVlKSk7CisgICAgICAgIFRydXN0ZWRJbW0zMiBtYXNrOCA9IE1hY3JvQXNz
ZW1ibGVySGVscGVyczo6bWFzazhPbkNvbmRpdGlvbigqdGhpcywgY29uZCwgbWFzayk7CiAgICAg
ICAgIG1vdmUoVHJ1c3RlZEltbVB0cihhZGRyZXNzLm1fcHRyKSwgYWRkcmVzc1RlbXBSZWdpc3Rl
cik7Ci0gICAgICAgIGxvYWQ4KEFkZHJlc3MoYWRkcmVzc1RlbXBSZWdpc3RlciksIGFkZHJlc3NU
ZW1wUmVnaXN0ZXIpOworICAgICAgICBNYWNyb0Fzc2VtYmxlckhlbHBlcnM6OmxvYWQ4T25Db25k
aXRpb24oKnRoaXMsIGNvbmQsIEFkZHJlc3MoYWRkcmVzc1RlbXBSZWdpc3RlciksIGFkZHJlc3NU
ZW1wUmVnaXN0ZXIpOwogICAgICAgICByZXR1cm4gYnJhbmNoVGVzdDMyKGNvbmQsIGFkZHJlc3NU
ZW1wUmVnaXN0ZXIsIG1hc2s4KTsKICAgICB9CiAKQEAgLTE3OTcsOCArMTc5Nyw4IEBAIGNsYXNz
IE1hY3JvQXNzZW1ibGVyQVJNdjcgOiBwdWJsaWMgQWJzdHJhY3RNYWNyb0Fzc2VtYmxlcjxBUk12
N0Fzc2VtYmxlciwgTWFjcm9BCiAKICAgICB2b2lkIGNvbXBhcmU4KFJlbGF0aW9uYWxDb25kaXRp
b24gY29uZCwgQWRkcmVzcyBsZWZ0LCBUcnVzdGVkSW1tMzIgcmlnaHQsIFJlZ2lzdGVySUQgZGVz
dCkKICAgICB7Ci0gICAgICAgIFRydXN0ZWRJbW0zMiByaWdodDgoc3RhdGljX2Nhc3Q8aW50OF90
PihyaWdodC5tX3ZhbHVlKSk7Ci0gICAgICAgIGxvYWQ4KGxlZnQsIGFkZHJlc3NUZW1wUmVnaXN0
ZXIpOworICAgICAgICBUcnVzdGVkSW1tMzIgcmlnaHQ4ID0gTWFjcm9Bc3NlbWJsZXJIZWxwZXJz
OjptYXNrOE9uQ29uZGl0aW9uKCp0aGlzLCBjb25kLCByaWdodCk7CisgICAgICAgIE1hY3JvQXNz
ZW1ibGVySGVscGVyczo6bG9hZDhPbkNvbmRpdGlvbigqdGhpcywgY29uZCwgbGVmdCwgYWRkcmVz
c1RlbXBSZWdpc3Rlcik7CiAgICAgICAgIGNvbXBhcmUzMihjb25kLCBhZGRyZXNzVGVtcFJlZ2lz
dGVyLCByaWdodDgsIGRlc3QpOwogICAgIH0KIApAQCAtMTgyNSw4ICsxODI1LDggQEAgY2xhc3Mg
TWFjcm9Bc3NlbWJsZXJBUk12NyA6IHB1YmxpYyBBYnN0cmFjdE1hY3JvQXNzZW1ibGVyPEFSTXY3
QXNzZW1ibGVyLCBNYWNyb0EKIAogICAgIHZvaWQgdGVzdDgoUmVzdWx0Q29uZGl0aW9uIGNvbmQs
IEFkZHJlc3MgYWRkcmVzcywgVHJ1c3RlZEltbTMyIG1hc2ssIFJlZ2lzdGVySUQgZGVzdCkKICAg
ICB7Ci0gICAgICAgIFRydXN0ZWRJbW0zMiBtYXNrOChzdGF0aWNfY2FzdDxpbnQ4X3Q+KG1hc2su
bV92YWx1ZSkpOwotICAgICAgICBsb2FkOChhZGRyZXNzLCBkYXRhVGVtcFJlZ2lzdGVyKTsKKyAg
ICAgICAgVHJ1c3RlZEltbTMyIG1hc2s4ID0gTWFjcm9Bc3NlbWJsZXJIZWxwZXJzOjptYXNrOE9u
Q29uZGl0aW9uKCp0aGlzLCBjb25kLCBtYXNrKTsKKyAgICAgICAgTWFjcm9Bc3NlbWJsZXJIZWxw
ZXJzOjpsb2FkOE9uQ29uZGl0aW9uKCp0aGlzLCBjb25kLCBhZGRyZXNzLCBkYXRhVGVtcFJlZ2lz
dGVyKTsKICAgICAgICAgdGVzdDMyKGRhdGFUZW1wUmVnaXN0ZXIsIG1hc2s4KTsKICAgICAgICAg
bV9hc3NlbWJsZXIuaXQoYXJtVjdDb25kaXRpb24oY29uZCksIGZhbHNlKTsKICAgICAgICAgbV9h
c3NlbWJsZXIubW92KGRlc3QsIEFSTVRodW1iSW1tZWRpYXRlOjptYWtlVUludDE2KDEpKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJI
ZWxwZXJzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVy
SGVscGVycy5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjA0N2U5NGMyNzFiMzA4MDU1MGJjNDI2OTNkZGE0MjM3NTBh
YzMyZjEKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVy
L01hY3JvQXNzZW1ibGVySGVscGVycy5oCkBAIC0wLDAgKzEsMTMxIEBACisvKgorICogQ29weXJp
Z2h0IChDKSAyMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
CisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAq
CisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFO
RCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAq
IEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKK25hbWVzcGFj
ZSBKU0MgeworbmFtZXNwYWNlIE1hY3JvQXNzZW1ibGVySGVscGVycyB7CisKKy8vIFRydWUgaWYg
dGhpczoKKy8vICAgICBicmFuY2g4KGNvbmQsIHZhbHVlLCB2YWx1ZSkKKy8vIElzIHRoZSBzYW1l
IGFzIHRoaXM6CisvLyAgICAgYnJhbmNoMzIoY29uZCwgc2lnbkV4dDgodmFsdWUpLCBzaWduRXh0
OCh2YWx1ZSkpCit0ZW1wbGF0ZTx0eXBlbmFtZSBNYWNyb0Fzc2VtYmxlclR5cGU+CitpbmxpbmUg
Ym9vbCBpc1NpZ25lZCh0eXBlbmFtZSBNYWNyb0Fzc2VtYmxlclR5cGU6OlJlbGF0aW9uYWxDb25k
aXRpb24gY29uZCkKK3sKKyAgICBzd2l0Y2ggKGNvbmQpIHsKKyAgICBjYXNlIE1hY3JvQXNzZW1i
bGVyVHlwZTo6RXF1YWw6CisgICAgY2FzZSBNYWNyb0Fzc2VtYmxlclR5cGU6Ok5vdEVxdWFsOgor
ICAgIGNhc2UgTWFjcm9Bc3NlbWJsZXJUeXBlOjpHcmVhdGVyVGhhbjoKKyAgICBjYXNlIE1hY3Jv
QXNzZW1ibGVyVHlwZTo6R3JlYXRlclRoYW5PckVxdWFsOgorICAgIGNhc2UgTWFjcm9Bc3NlbWJs
ZXJUeXBlOjpMZXNzVGhhbjoKKyAgICBjYXNlIE1hY3JvQXNzZW1ibGVyVHlwZTo6TGVzc1RoYW5P
ckVxdWFsOgorICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICBkZWZhdWx0OgorICAgICAgICByZXR1
cm4gZmFsc2U7CisgICAgfQorfQorCisvLyBUcnVlIGlmIHRoaXM6CisvLyAgICAgYnJhbmNoOChj
b25kLCB2YWx1ZSwgdmFsdWUpCisvLyBJcyB0aGUgc2FtZSBhcyB0aGlzOgorLy8gICAgIGJyYW5j
aDMyKGNvbmQsIHplcm9FeHQ4KHZhbHVlKSwgemVyb0V4dDgodmFsdWUpKQordGVtcGxhdGU8dHlw
ZW5hbWUgTWFjcm9Bc3NlbWJsZXJUeXBlPgoraW5saW5lIGJvb2wgaXNVbnNpZ25lZCh0eXBlbmFt
ZSBNYWNyb0Fzc2VtYmxlclR5cGU6OlJlbGF0aW9uYWxDb25kaXRpb24gY29uZCkKK3sKKyAgICBz
d2l0Y2ggKGNvbmQpIHsKKyAgICBjYXNlIE1hY3JvQXNzZW1ibGVyVHlwZTo6RXF1YWw6CisgICAg
Y2FzZSBNYWNyb0Fzc2VtYmxlclR5cGU6Ok5vdEVxdWFsOgorICAgIGNhc2UgTWFjcm9Bc3NlbWJs
ZXJUeXBlOjpBYm92ZToKKyAgICBjYXNlIE1hY3JvQXNzZW1ibGVyVHlwZTo6QWJvdmVPckVxdWFs
OgorICAgIGNhc2UgTWFjcm9Bc3NlbWJsZXJUeXBlOjpCZWxvdzoKKyAgICBjYXNlIE1hY3JvQXNz
ZW1ibGVyVHlwZTo6QmVsb3dPckVxdWFsOgorICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICBkZWZh
dWx0OgorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorfQorCisvLyBUcnVlIGlmIHRoaXM6
CisvLyAgICAgdGVzdDgoY29uZCwgdmFsdWUsIHZhbHVlKQorLy8gSXMgdGhlIHNhbWUgYXMgdGhp
czoKKy8vICAgICB0ZXN0MzIoY29uZCwgc2lnbkV4dDgodmFsdWUpLCBzaWduRXh0OCh2YWx1ZSkp
Cit0ZW1wbGF0ZTx0eXBlbmFtZSBNYWNyb0Fzc2VtYmxlclR5cGU+CitpbmxpbmUgYm9vbCBpc1Np
Z25lZCh0eXBlbmFtZSBNYWNyb0Fzc2VtYmxlclR5cGU6OlJlc3VsdENvbmRpdGlvbiBjb25kKQor
eworICAgIHN3aXRjaCAoY29uZCkgeworICAgIGNhc2UgTWFjcm9Bc3NlbWJsZXJUeXBlOjpTaWdu
ZWQ6CisgICAgY2FzZSBNYWNyb0Fzc2VtYmxlclR5cGU6OlBvc2l0aXZlT3JaZXJvOgorICAgIGNh
c2UgTWFjcm9Bc3NlbWJsZXJUeXBlOjpaZXJvOgorICAgIGNhc2UgTWFjcm9Bc3NlbWJsZXJUeXBl
OjpOb25aZXJvOgorICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICBkZWZhdWx0OgorICAgICAgICBy
ZXR1cm4gZmFsc2U7CisgICAgfQorfQorCisvLyBUcnVlIGlmIHRoaXM6CisvLyAgICAgdGVzdDgo
Y29uZCwgdmFsdWUsIHZhbHVlKQorLy8gSXMgdGhlIHNhbWUgYXMgdGhpczoKKy8vICAgICB0ZXN0
MzIoY29uZCwgemVyb0V4dDgodmFsdWUpLCB6ZXJvRXh0OCh2YWx1ZSkpCit0ZW1wbGF0ZTx0eXBl
bmFtZSBNYWNyb0Fzc2VtYmxlclR5cGU+CitpbmxpbmUgYm9vbCBpc1Vuc2lnbmVkKHR5cGVuYW1l
IE1hY3JvQXNzZW1ibGVyVHlwZTo6UmVzdWx0Q29uZGl0aW9uIGNvbmQpCit7CisgICAgc3dpdGNo
IChjb25kKSB7CisgICAgY2FzZSBNYWNyb0Fzc2VtYmxlclR5cGU6Olplcm86CisgICAgY2FzZSBN
YWNyb0Fzc2VtYmxlclR5cGU6Ok5vblplcm86CisgICAgICAgIHJldHVybiB0cnVlOworICAgIGRl
ZmF1bHQ6CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9Cit9CisKK3RlbXBsYXRlPHR5cGVu
YW1lIE1hY3JvQXNzZW1ibGVyVHlwZT4KK2lubGluZSB0eXBlbmFtZSBNYWNyb0Fzc2VtYmxlclR5
cGU6OlRydXN0ZWRJbW0zMiBtYXNrOE9uQ29uZGl0aW9uKE1hY3JvQXNzZW1ibGVyVHlwZSYsIHR5
cGVuYW1lIE1hY3JvQXNzZW1ibGVyVHlwZTo6UmVsYXRpb25hbENvbmRpdGlvbiBjb25kLCB0eXBl
bmFtZSBNYWNyb0Fzc2VtYmxlclR5cGU6OlRydXN0ZWRJbW0zMiB2YWx1ZSkKK3sKKyAgICBpZiAo
aXNVbnNpZ25lZDxNYWNyb0Fzc2VtYmxlclR5cGU+KGNvbmQpKQorICAgICAgICByZXR1cm4gdHlw
ZW5hbWUgTWFjcm9Bc3NlbWJsZXJUeXBlOjpUcnVzdGVkSW1tMzIoc3RhdGljX2Nhc3Q8dWludDhf
dD4odmFsdWUubV92YWx1ZSkpOworICAgIHJldHVybiB0eXBlbmFtZSBNYWNyb0Fzc2VtYmxlclR5
cGU6OlRydXN0ZWRJbW0zMihzdGF0aWNfY2FzdDxpbnQ4X3Q+KHZhbHVlLm1fdmFsdWUpKTsKK30K
KwordGVtcGxhdGU8dHlwZW5hbWUgTWFjcm9Bc3NlbWJsZXJUeXBlPgoraW5saW5lIHR5cGVuYW1l
IE1hY3JvQXNzZW1ibGVyVHlwZTo6VHJ1c3RlZEltbTMyIG1hc2s4T25Db25kaXRpb24oTWFjcm9B
c3NlbWJsZXJUeXBlJiwgdHlwZW5hbWUgTWFjcm9Bc3NlbWJsZXJUeXBlOjpSZXN1bHRDb25kaXRp
b24gY29uZCwgdHlwZW5hbWUgTWFjcm9Bc3NlbWJsZXJUeXBlOjpUcnVzdGVkSW1tMzIgdmFsdWUp
Cit7CisgICAgaWYgKGlzVW5zaWduZWQ8TWFjcm9Bc3NlbWJsZXJUeXBlPihjb25kKSkKKyAgICAg
ICAgcmV0dXJuIHR5cGVuYW1lIE1hY3JvQXNzZW1ibGVyVHlwZTo6VHJ1c3RlZEltbTMyKHN0YXRp
Y19jYXN0PHVpbnQ4X3Q+KHZhbHVlLm1fdmFsdWUpKTsKKyAgICBBU1NFUlRfV0lUSF9NRVNTQUdF
KGNvbmQgIT0gTWFjcm9Bc3NlbWJsZXJUeXBlOjpPdmVyZmxvdywgIk92ZXJmbG93IGlzIG5vdCB1
c2VkIGZvciA4Yml0IHRlc3Qgb3BlcmF0aW9ucy4iKTsKKyAgICBBU1NFUlQoaXNTaWduZWQ8TWFj
cm9Bc3NlbWJsZXJUeXBlPihjb25kKSk7CisgICAgcmV0dXJuIHR5cGVuYW1lIE1hY3JvQXNzZW1i
bGVyVHlwZTo6VHJ1c3RlZEltbTMyKHN0YXRpY19jYXN0PGludDhfdD4odmFsdWUubV92YWx1ZSkp
OworfQorCit0ZW1wbGF0ZTx0eXBlbmFtZSBNYWNyb0Fzc2VtYmxlclR5cGUsIHR5cGVuYW1lIENv
bmRpdGlvbiwgdHlwZW5hbWUgLi4uQXJncz4KK3ZvaWQgbG9hZDhPbkNvbmRpdGlvbihNYWNyb0Fz
c2VtYmxlclR5cGUmIGppdCwgQ29uZGl0aW9uIGNvbmQsIEFyZ3MuLi4gYXJncykKK3sKKyAgICBp
ZiAoaXNVbnNpZ25lZDxNYWNyb0Fzc2VtYmxlclR5cGU+KGNvbmQpKQorICAgICAgICByZXR1cm4g
aml0LmxvYWQ4KHN0ZDo6Zm9yd2FyZDxBcmdzPihhcmdzKS4uLik7CisgICAgcmV0dXJuIGppdC5s
b2FkOFNpZ25lZEV4dGVuZFRvMzIoc3RkOjpmb3J3YXJkPEFyZ3M+KGFyZ3MpLi4uKTsKK30KKwor
fSB9IC8vIG5hbWVzcGFjZSBKU0MKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9h
c3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJNSVBTLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNz
ZW1ibGVyL01hY3JvQXNzZW1ibGVyTUlQUy5oCmluZGV4IGZhZmRjNTFjYWZiMzI3YjUxMTE2Nzdm
NTU3NmIzNGVkZDFkMzQ4MzYuLmE2ODhlOTgwZDlkNDk2OWJjZWRmMTczMzdhYjdlNWQ4ZTNiNDhh
ODkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3Nl
bWJsZXJNSVBTLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fz
c2VtYmxlck1JUFMuaApAQCAtMTQ0NSwzMiArMTQ0NSwzMiBAQCBjbGFzcyBNYWNyb0Fzc2VtYmxl
ck1JUFMgOiBwdWJsaWMgQWJzdHJhY3RNYWNyb0Fzc2VtYmxlcjxNSVBTQXNzZW1ibGVyLCBNYWNy
b0FzcwogCiAgICAgSnVtcCBicmFuY2g4KFJlbGF0aW9uYWxDb25kaXRpb24gY29uZCwgQWRkcmVz
cyBsZWZ0LCBUcnVzdGVkSW1tMzIgcmlnaHQpCiAgICAgewotICAgICAgICBUcnVzdGVkSW1tMzIg
cmlnaHQ4KHN0YXRpY19jYXN0PGludDhfdD4ocmlnaHQubV92YWx1ZSkpOwotICAgICAgICBsb2Fk
OChsZWZ0LCBkYXRhVGVtcFJlZ2lzdGVyKTsKKyAgICAgICAgVHJ1c3RlZEltbTMyIHJpZ2h0OCA9
IE1hY3JvQXNzZW1ibGVySGVscGVyczo6bWFzazhPbkNvbmRpdGlvbigqdGhpcywgY29uZCwgcmln
aHQpOworICAgICAgICBNYWNyb0Fzc2VtYmxlckhlbHBlcnM6OmxvYWQ4T25Db25kaXRpb24oKnRo
aXMsIGNvbmQsIGxlZnQsIGRhdGFUZW1wUmVnaXN0ZXIpOwogICAgICAgICBtb3ZlKHJpZ2h0OCwg
aW1tVGVtcFJlZ2lzdGVyKTsKICAgICAgICAgcmV0dXJuIGJyYW5jaDMyKGNvbmQsIGRhdGFUZW1w
UmVnaXN0ZXIsIGltbVRlbXBSZWdpc3Rlcik7CiAgICAgfQogCiAgICAgSnVtcCBicmFuY2g4KFJl
bGF0aW9uYWxDb25kaXRpb24gY29uZCwgQWJzb2x1dGVBZGRyZXNzIGxlZnQsIFRydXN0ZWRJbW0z
MiByaWdodCkKICAgICB7Ci0gICAgICAgIFRydXN0ZWRJbW0zMiByaWdodDgoc3RhdGljX2Nhc3Q8
aW50OF90PihyaWdodC5tX3ZhbHVlKSk7Ci0gICAgICAgIGxvYWQ4KGxlZnQsIGRhdGFUZW1wUmVn
aXN0ZXIpOworICAgICAgICBUcnVzdGVkSW1tMzIgcmlnaHQ4ID0gTWFjcm9Bc3NlbWJsZXJIZWxw
ZXJzOjptYXNrOE9uQ29uZGl0aW9uKCp0aGlzLCBjb25kLCByaWdodCk7CisgICAgICAgIE1hY3Jv
QXNzZW1ibGVySGVscGVyczo6bG9hZDhPbkNvbmRpdGlvbigqdGhpcywgY29uZCwgbGVmdCwgZGF0
YVRlbXBSZWdpc3Rlcik7CiAgICAgICAgIG1vdmUocmlnaHQ4LCBpbW1UZW1wUmVnaXN0ZXIpOwog
ICAgICAgICByZXR1cm4gYnJhbmNoMzIoY29uZCwgZGF0YVRlbXBSZWdpc3RlciwgaW1tVGVtcFJl
Z2lzdGVyKTsKICAgICB9CiAKICAgICB2b2lkIGNvbXBhcmU4KFJlbGF0aW9uYWxDb25kaXRpb24g
Y29uZCwgQWRkcmVzcyBsZWZ0LCBUcnVzdGVkSW1tMzIgcmlnaHQsIFJlZ2lzdGVySUQgZGVzdCkK
ICAgICB7Ci0gICAgICAgIFRydXN0ZWRJbW0zMiByaWdodDgoc3RhdGljX2Nhc3Q8aW50OF90Pihy
aWdodC5tX3ZhbHVlKSk7Ci0gICAgICAgIGxvYWQ4KGxlZnQsIGRhdGFUZW1wUmVnaXN0ZXIpOwor
ICAgICAgICBUcnVzdGVkSW1tMzIgcmlnaHQ4ID0gTWFjcm9Bc3NlbWJsZXJIZWxwZXJzOjptYXNr
OE9uQ29uZGl0aW9uKCp0aGlzLCBjb25kLCByaWdodCk7CisgICAgICAgIE1hY3JvQXNzZW1ibGVy
SGVscGVyczo6bG9hZDhPbkNvbmRpdGlvbigqdGhpcywgY29uZCwgbGVmdCwgZGF0YVRlbXBSZWdp
c3Rlcik7CiAgICAgICAgIG1vdmUocmlnaHQ4LCBpbW1UZW1wUmVnaXN0ZXIpOwogICAgICAgICBj
b21wYXJlMzIoY29uZCwgZGF0YVRlbXBSZWdpc3RlciwgaW1tVGVtcFJlZ2lzdGVyLCBkZXN0KTsK
ICAgICB9CiAKICAgICBKdW1wIGJyYW5jaDgoUmVsYXRpb25hbENvbmRpdGlvbiBjb25kLCBCYXNl
SW5kZXggbGVmdCwgVHJ1c3RlZEltbTMyIHJpZ2h0KQogICAgIHsKLSAgICAgICAgVHJ1c3RlZElt
bTMyIHJpZ2h0OChzdGF0aWNfY2FzdDxpbnQ4X3Q+KHJpZ2h0Lm1fdmFsdWUpKTsKLSAgICAgICAg
bG9hZDgobGVmdCwgZGF0YVRlbXBSZWdpc3Rlcik7CisgICAgICAgIFRydXN0ZWRJbW0zMiByaWdo
dDggPSBNYWNyb0Fzc2VtYmxlckhlbHBlcnM6Om1hc2s4T25Db25kaXRpb24oKnRoaXMsIGNvbmQs
IHJpZ2h0KTsKKyAgICAgICAgTWFjcm9Bc3NlbWJsZXJIZWxwZXJzOjpsb2FkOE9uQ29uZGl0aW9u
KCp0aGlzLCBjb25kLCBsZWZ0LCBkYXRhVGVtcFJlZ2lzdGVyKTsKICAgICAgICAgLy8gQmUgY2Fy
ZWZ1bCB0aGF0IHRoZSBwcmV2aW91cyBsb2FkOCgpIHVzZXMgaW1tVGVtcFJlZ2lzdGVyLgogICAg
ICAgICAvLyBTbywgd2UgbmVlZCB0byBwdXQgbW92ZSgpIGFmdGVyIGxvYWQ4KCkuCiAgICAgICAg
IG1vdmUocmlnaHQ4LCBpbW1UZW1wUmVnaXN0ZXIpOwpAQCAtMTYyOCwyMyArMTYyOCwyMyBAQCBj
bGFzcyBNYWNyb0Fzc2VtYmxlck1JUFMgOiBwdWJsaWMgQWJzdHJhY3RNYWNyb0Fzc2VtYmxlcjxN
SVBTQXNzZW1ibGVyLCBNYWNyb0FzcwogCiAgICAgSnVtcCBicmFuY2hUZXN0OChSZXN1bHRDb25k
aXRpb24gY29uZCwgQmFzZUluZGV4IGFkZHJlc3MsIFRydXN0ZWRJbW0zMiBtYXNrID0gVHJ1c3Rl
ZEltbTMyKC0xKSkKICAgICB7Ci0gICAgICAgIFRydXN0ZWRJbW0zMiBtYXNrOChzdGF0aWNfY2Fz
dDxpbnQ4X3Q+KG1hc2subV92YWx1ZSkpOwotICAgICAgICBsb2FkOChhZGRyZXNzLCBkYXRhVGVt
cFJlZ2lzdGVyKTsKKyAgICAgICAgVHJ1c3RlZEltbTMyIG1hc2s4ID0gTWFjcm9Bc3NlbWJsZXJI
ZWxwZXJzOjptYXNrOE9uQ29uZGl0aW9uKCp0aGlzLCBjb25kLCBtYXNrKTsKKyAgICAgICAgTWFj
cm9Bc3NlbWJsZXJIZWxwZXJzOjpsb2FkOE9uQ29uZGl0aW9uKCp0aGlzLCBjb25kLCBhZGRyZXNz
LCBkYXRhVGVtcFJlZ2lzdGVyKTsKICAgICAgICAgcmV0dXJuIGJyYW5jaFRlc3QzMihjb25kLCBk
YXRhVGVtcFJlZ2lzdGVyLCBtYXNrOCk7CiAgICAgfQogCiAgICAgSnVtcCBicmFuY2hUZXN0OChS
ZXN1bHRDb25kaXRpb24gY29uZCwgQWRkcmVzcyBhZGRyZXNzLCBUcnVzdGVkSW1tMzIgbWFzayA9
IFRydXN0ZWRJbW0zMigtMSkpCiAgICAgewotICAgICAgICBUcnVzdGVkSW1tMzIgbWFzazgoc3Rh
dGljX2Nhc3Q8aW50OF90PihtYXNrLm1fdmFsdWUpKTsKLSAgICAgICAgbG9hZDgoYWRkcmVzcywg
ZGF0YVRlbXBSZWdpc3Rlcik7CisgICAgICAgIFRydXN0ZWRJbW0zMiBtYXNrOCA9IE1hY3JvQXNz
ZW1ibGVySGVscGVyczo6bWFzazhPbkNvbmRpdGlvbigqdGhpcywgY29uZCwgbWFzayk7CisgICAg
ICAgIE1hY3JvQXNzZW1ibGVySGVscGVyczo6bG9hZDhPbkNvbmRpdGlvbigqdGhpcywgY29uZCwg
YWRkcmVzcywgZGF0YVRlbXBSZWdpc3Rlcik7CiAgICAgICAgIHJldHVybiBicmFuY2hUZXN0MzIo
Y29uZCwgZGF0YVRlbXBSZWdpc3RlciwgbWFzazgpOwogICAgIH0KIAogICAgIEp1bXAgYnJhbmNo
VGVzdDgoUmVzdWx0Q29uZGl0aW9uIGNvbmQsIEFic29sdXRlQWRkcmVzcyBhZGRyZXNzLCBUcnVz
dGVkSW1tMzIgbWFzayA9IFRydXN0ZWRJbW0zMigtMSkpCiAgICAgewotICAgICAgICBUcnVzdGVk
SW1tMzIgbWFzazgoc3RhdGljX2Nhc3Q8aW50OF90PihtYXNrLm1fdmFsdWUpKTsKKyAgICAgICAg
VHJ1c3RlZEltbTMyIG1hc2s4ID0gTWFjcm9Bc3NlbWJsZXJIZWxwZXJzOjptYXNrOE9uQ29uZGl0
aW9uKCp0aGlzLCBjb25kLCBtYXNrKTsKICAgICAgICAgbW92ZShUcnVzdGVkSW1tUHRyKGFkZHJl
c3MubV9wdHIpLCBkYXRhVGVtcFJlZ2lzdGVyKTsKLSAgICAgICAgbG9hZDgoQWRkcmVzcyhkYXRh
VGVtcFJlZ2lzdGVyKSwgZGF0YVRlbXBSZWdpc3Rlcik7CisgICAgICAgIE1hY3JvQXNzZW1ibGVy
SGVscGVyczo6bG9hZDhPbkNvbmRpdGlvbigqdGhpcywgY29uZCwgQWRkcmVzcyhkYXRhVGVtcFJl
Z2lzdGVyKSwgZGF0YVRlbXBSZWdpc3Rlcik7CiAgICAgICAgIHJldHVybiBicmFuY2hUZXN0MzIo
Y29uZCwgZGF0YVRlbXBSZWdpc3RlciwgbWFzazgpOwogICAgIH0KIApAQCAtMjIxOCw5ICsyMjE4
LDkgQEAgY2xhc3MgTWFjcm9Bc3NlbWJsZXJNSVBTIDogcHVibGljIEFic3RyYWN0TWFjcm9Bc3Nl
bWJsZXI8TUlQU0Fzc2VtYmxlciwgTWFjcm9Bc3MKICAgICB2b2lkIHRlc3Q4KFJlc3VsdENvbmRp
dGlvbiBjb25kLCBBZGRyZXNzIGFkZHJlc3MsIFRydXN0ZWRJbW0zMiBtYXNrLCBSZWdpc3RlcklE
IGRlc3QpCiAgICAgewogICAgICAgICBBU1NFUlQoKGNvbmQgPT0gWmVybykgfHwgKGNvbmQgPT0g
Tm9uWmVybykpOwotICAgICAgICBUcnVzdGVkSW1tMzIgbWFzazgoc3RhdGljX2Nhc3Q8aW50OF90
PihtYXNrLm1fdmFsdWUpKTsKLSAgICAgICAgbG9hZDgoYWRkcmVzcywgZGF0YVRlbXBSZWdpc3Rl
cik7Ci0gICAgICAgIGlmIChtYXNrOC5tX3ZhbHVlID09IC0xICYmICFtX2ZpeGVkV2lkdGgpIHsK
KyAgICAgICAgVHJ1c3RlZEltbTMyIG1hc2s4ID0gTWFjcm9Bc3NlbWJsZXJIZWxwZXJzOjptYXNr
OE9uQ29uZGl0aW9uKCp0aGlzLCBjb25kLCBtYXNrKTsKKyAgICAgICAgTWFjcm9Bc3NlbWJsZXJI
ZWxwZXJzOjpsb2FkOE9uQ29uZGl0aW9uKCp0aGlzLCBjb25kLCBhZGRyZXNzLCBkYXRhVGVtcFJl
Z2lzdGVyKTsKKyAgICAgICAgaWYgKChtYXNrOC5tX3ZhbHVlICYgMHhmZikgPT0gMHhmZiAmJiAh
bV9maXhlZFdpZHRoKSB7CiAgICAgICAgICAgICBpZiAoY29uZCA9PSBaZXJvKQogICAgICAgICAg
ICAgICAgIG1fYXNzZW1ibGVyLnNsdGl1KGRlc3QsIGRhdGFUZW1wUmVnaXN0ZXIsIDEpOwogICAg
ICAgICAgICAgZWxzZQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxl
ci9NYWNyb0Fzc2VtYmxlclNINC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9N
YWNyb0Fzc2VtYmxlclNINC5oCmluZGV4IGVlY2M0MTVmNWJlMzUyZGU1OWQ4OTE0ZGJkMDBmZjI1
ZjZjNTVhNWYuLmM0OTJhNDBhOTJkZTMxNTkyNjFkMGJjOGIzYmIyMzAxNWU2NzRlYTcgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJTSDQu
aAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyU0g0
LmgKQEAgLTE2MDUsOSArMTYwNSw5IEBAIGNsYXNzIE1hY3JvQXNzZW1ibGVyU0g0IDogcHVibGlj
IEFic3RyYWN0TWFjcm9Bc3NlbWJsZXI8U0g0QXNzZW1ibGVyLCBNYWNyb0Fzc2VtCiAKICAgICBK
dW1wIGJyYW5jaFRlc3Q4KFJlc3VsdENvbmRpdGlvbiBjb25kLCBBZGRyZXNzIGFkZHJlc3MsIFRy
dXN0ZWRJbW0zMiBtYXNrID0gVHJ1c3RlZEltbTMyKC0xKSkKICAgICB7Ci0gICAgICAgIFRydXN0
ZWRJbW0zMiBtYXNrOChzdGF0aWNfY2FzdDxpbnQ4X3Q+KG1hc2subV92YWx1ZSkpOworICAgICAg
ICBUcnVzdGVkSW1tMzIgbWFzazggPSBNYWNyb0Fzc2VtYmxlckhlbHBlcnM6Om1hc2s4T25Db25k
aXRpb24oKnRoaXMsIGNvbmQsIG1hc2spOwogICAgICAgICBSZWdpc3RlcklEIGFkZHJlc3NUZW1w
UmVnaXN0ZXIgPSBjbGFpbVNjcmF0Y2goKTsKLSAgICAgICAgbG9hZDgoYWRkcmVzcywgYWRkcmVz
c1RlbXBSZWdpc3Rlcik7CisgICAgICAgIE1hY3JvQXNzZW1ibGVySGVscGVyczo6bG9hZDhPbkNv
bmRpdGlvbigqdGhpcywgY29uZCwgYWRkcmVzcywgYWRkcmVzc1RlbXBSZWdpc3Rlcik7CiAgICAg
ICAgIEp1bXAgam1wID0gYnJhbmNoVGVzdDMyKGNvbmQsIGFkZHJlc3NUZW1wUmVnaXN0ZXIsIG1h
c2s4KTsKICAgICAgICAgcmVsZWFzZVNjcmF0Y2goYWRkcmVzc1RlbXBSZWdpc3Rlcik7CiAgICAg
ICAgIHJldHVybiBqbXA7CkBAIC0xNjE1LDkgKzE2MTUsOSBAQCBjbGFzcyBNYWNyb0Fzc2VtYmxl
clNINCA6IHB1YmxpYyBBYnN0cmFjdE1hY3JvQXNzZW1ibGVyPFNINEFzc2VtYmxlciwgTWFjcm9B
c3NlbQogCiAgICAgSnVtcCBicmFuY2hUZXN0OChSZXN1bHRDb25kaXRpb24gY29uZCwgQmFzZUlu
ZGV4IGFkZHJlc3MsIFRydXN0ZWRJbW0zMiBtYXNrID0gVHJ1c3RlZEltbTMyKC0xKSkKICAgICB7
Ci0gICAgICAgIFRydXN0ZWRJbW0zMiBtYXNrOChzdGF0aWNfY2FzdDxpbnQ4X3Q+KG1hc2subV92
YWx1ZSkpOworICAgICAgICBUcnVzdGVkSW1tMzIgbWFzazggPSBNYWNyb0Fzc2VtYmxlckhlbHBl
cnM6Om1hc2s4T25Db25kaXRpb24oKnRoaXMsIGNvbmQsIG1hc2spOwogICAgICAgICBSZWdpc3Rl
cklEIGFkZHJlc3NUZW1wUmVnaXN0ZXIgPSBjbGFpbVNjcmF0Y2goKTsKLSAgICAgICAgbG9hZDgo
YWRkcmVzcywgYWRkcmVzc1RlbXBSZWdpc3Rlcik7CisgICAgICAgIE1hY3JvQXNzZW1ibGVySGVs
cGVyczo6bG9hZDhPbkNvbmRpdGlvbigqdGhpcywgY29uZCwgYWRkcmVzcywgYWRkcmVzc1RlbXBS
ZWdpc3Rlcik7CiAgICAgICAgIEp1bXAgam1wID0gYnJhbmNoVGVzdDMyKGNvbmQsIGFkZHJlc3NU
ZW1wUmVnaXN0ZXIsIG1hc2s4KTsKICAgICAgICAgcmVsZWFzZVNjcmF0Y2goYWRkcmVzc1RlbXBS
ZWdpc3Rlcik7CiAgICAgICAgIHJldHVybiBqbXA7CkBAIC0xNjI1LDEwICsxNjI1LDEwIEBAIGNs
YXNzIE1hY3JvQXNzZW1ibGVyU0g0IDogcHVibGljIEFic3RyYWN0TWFjcm9Bc3NlbWJsZXI8U0g0
QXNzZW1ibGVyLCBNYWNyb0Fzc2VtCiAKICAgICBKdW1wIGJyYW5jaFRlc3Q4KFJlc3VsdENvbmRp
dGlvbiBjb25kLCBBYnNvbHV0ZUFkZHJlc3MgYWRkcmVzcywgVHJ1c3RlZEltbTMyIG1hc2sgPSBU
cnVzdGVkSW1tMzIoLTEpKQogICAgIHsKLSAgICAgICAgVHJ1c3RlZEltbTMyIG1hc2s4KHN0YXRp
Y19jYXN0PGludDhfdD4obWFzay5tX3ZhbHVlKSk7CisgICAgICAgIFRydXN0ZWRJbW0zMiBtYXNr
OCA9IE1hY3JvQXNzZW1ibGVySGVscGVyczo6bWFzazhPbkNvbmRpdGlvbigqdGhpcywgY29uZCwg
bWFzayk7CiAgICAgICAgIFJlZ2lzdGVySUQgYWRkcmVzc1RlbXBSZWdpc3RlciA9IGNsYWltU2Ny
YXRjaCgpOwogICAgICAgICBtb3ZlKFRydXN0ZWRJbW1QdHIoYWRkcmVzcy5tX3B0ciksIGFkZHJl
c3NUZW1wUmVnaXN0ZXIpOwotICAgICAgICBsb2FkOChBZGRyZXNzKGFkZHJlc3NUZW1wUmVnaXN0
ZXIpLCBhZGRyZXNzVGVtcFJlZ2lzdGVyKTsKKyAgICAgICAgTWFjcm9Bc3NlbWJsZXJIZWxwZXJz
Ojpsb2FkOE9uQ29uZGl0aW9uKCp0aGlzLCBjb25kLCBBZGRyZXNzKGFkZHJlc3NUZW1wUmVnaXN0
ZXIpLCBhZGRyZXNzVGVtcFJlZ2lzdGVyKTsKICAgICAgICAgSnVtcCBqbXAgPSBicmFuY2hUZXN0
MzIoY29uZCwgYWRkcmVzc1RlbXBSZWdpc3RlciwgbWFzazgpOwogICAgICAgICByZWxlYXNlU2Ny
YXRjaChhZGRyZXNzVGVtcFJlZ2lzdGVyKTsKICAgICAgICAgcmV0dXJuIGptcDsKQEAgLTE2NDYs
OSArMTY0Niw5IEBAIGNsYXNzIE1hY3JvQXNzZW1ibGVyU0g0IDogcHVibGljIEFic3RyYWN0TWFj
cm9Bc3NlbWJsZXI8U0g0QXNzZW1ibGVyLCBNYWNyb0Fzc2VtCiAKICAgICBKdW1wIGJyYW5jaDgo
UmVsYXRpb25hbENvbmRpdGlvbiBjb25kLCBBZGRyZXNzIGxlZnQsIFRydXN0ZWRJbW0zMiByaWdo
dCkKICAgICB7Ci0gICAgICAgIFRydXN0ZWRJbW0zMiByaWdodDgoc3RhdGljX2Nhc3Q8aW50OF90
PihyaWdodC5tX3ZhbHVlKSk7CisgICAgICAgIFRydXN0ZWRJbW0zMiByaWdodDggPSBNYWNyb0Fz
c2VtYmxlckhlbHBlcnM6Om1hc2s4T25Db25kaXRpb24oKnRoaXMsIGNvbmQsIHJpZ2h0KTsKICAg
ICAgICAgUmVnaXN0ZXJJRCBhZGRyZXNzVGVtcFJlZ2lzdGVyID0gY2xhaW1TY3JhdGNoKCk7Ci0g
ICAgICAgIGxvYWQ4KGxlZnQsIGFkZHJlc3NUZW1wUmVnaXN0ZXIpOworICAgICAgICBNYWNyb0Fz
c2VtYmxlckhlbHBlcnM6OmxvYWQ4T25Db25kaXRpb24oKnRoaXMsIGNvbmQsIGxlZnQsIGFkZHJl
c3NUZW1wUmVnaXN0ZXIpOwogICAgICAgICBKdW1wIGptcCA9IGJyYW5jaDMyKGNvbmQsIGFkZHJl
c3NUZW1wUmVnaXN0ZXIsIHJpZ2h0OCk7CiAgICAgICAgIHJlbGVhc2VTY3JhdGNoKGFkZHJlc3NU
ZW1wUmVnaXN0ZXIpOwogICAgICAgICByZXR1cm4gam1wOwpAQCAtMTY1Niw5ICsxNjU2LDkgQEAg
Y2xhc3MgTWFjcm9Bc3NlbWJsZXJTSDQgOiBwdWJsaWMgQWJzdHJhY3RNYWNyb0Fzc2VtYmxlcjxT
SDRBc3NlbWJsZXIsIE1hY3JvQXNzZW0KIAogICAgIEp1bXAgYnJhbmNoOChSZWxhdGlvbmFsQ29u
ZGl0aW9uIGNvbmQsIEFic29sdXRlQWRkcmVzcyBsZWZ0LCBUcnVzdGVkSW1tMzIgcmlnaHQpCiAg
ICAgewotICAgICAgICBUcnVzdGVkSW1tMzIgcmlnaHQ4KHN0YXRpY19jYXN0PGludDhfdD4ocmln
aHQubV92YWx1ZSkpOworICAgICAgICBUcnVzdGVkSW1tMzIgcmlnaHQ4ID0gTWFjcm9Bc3NlbWJs
ZXJIZWxwZXJzOjptYXNrOE9uQ29uZGl0aW9uKCp0aGlzLCBjb25kLCByaWdodCk7CiAgICAgICAg
IFJlZ2lzdGVySUQgYWRkcmVzc1RlbXBSZWdpc3RlciA9IGNsYWltU2NyYXRjaCgpOwotICAgICAg
ICBsb2FkOChsZWZ0LCBhZGRyZXNzVGVtcFJlZ2lzdGVyKTsKKyAgICAgICAgTWFjcm9Bc3NlbWJs
ZXJIZWxwZXJzOjpsb2FkOE9uQ29uZGl0aW9uKCp0aGlzLCBjb25kLCBsZWZ0LCBhZGRyZXNzVGVt
cFJlZ2lzdGVyKTsKICAgICAgICAgSnVtcCBqbXAgPSBicmFuY2gzMihjb25kLCBhZGRyZXNzVGVt
cFJlZ2lzdGVyLCByaWdodDgpOwogICAgICAgICByZWxlYXNlU2NyYXRjaChhZGRyZXNzVGVtcFJl
Z2lzdGVyKTsKICAgICAgICAgcmV0dXJuIGptcDsKQEAgLTE2NjYsOSArMTY2Niw5IEBAIGNsYXNz
IE1hY3JvQXNzZW1ibGVyU0g0IDogcHVibGljIEFic3RyYWN0TWFjcm9Bc3NlbWJsZXI8U0g0QXNz
ZW1ibGVyLCBNYWNyb0Fzc2VtCiAKICAgICB2b2lkIGNvbXBhcmU4KFJlbGF0aW9uYWxDb25kaXRp
b24gY29uZCwgQWRkcmVzcyBsZWZ0LCBUcnVzdGVkSW1tMzIgcmlnaHQsIFJlZ2lzdGVySUQgZGVz
dCkKICAgICB7Ci0gICAgICAgIFRydXN0ZWRJbW0zMiByaWdodDgoc3RhdGljX2Nhc3Q8aW50OF90
PihyaWdodC5tX3ZhbHVlKSk7CisgICAgICAgIFRydXN0ZWRJbW0zMiByaWdodDggPSBNYWNyb0Fz
c2VtYmxlckhlbHBlcnM6Om1hc2s4T25Db25kaXRpb24oKnRoaXMsIGNvbmQsIHJpZ2h0KTsKICAg
ICAgICAgUmVnaXN0ZXJJRCBhZGRyZXNzVGVtcFJlZ2lzdGVyID0gY2xhaW1TY3JhdGNoKCk7Ci0g
ICAgICAgIGxvYWQ4KGxlZnQsIGFkZHJlc3NUZW1wUmVnaXN0ZXIpOworICAgICAgICBNYWNyb0Fz
c2VtYmxlckhlbHBlcnM6OmxvYWQ4T25Db25kaXRpb24oKnRoaXMsIGNvbmQsIGxlZnQsIGFkZHJl
c3NUZW1wUmVnaXN0ZXIpOwogICAgICAgICBjb21wYXJlMzIoY29uZCwgYWRkcmVzc1RlbXBSZWdp
c3RlciwgcmlnaHQ4LCBkZXN0KTsKICAgICAgICAgcmVsZWFzZVNjcmF0Y2goYWRkcmVzc1RlbXBS
ZWdpc3Rlcik7CiAgICAgfQpAQCAtMTg0MSwxMCArMTg0MSwxMCBAQCBjbGFzcyBNYWNyb0Fzc2Vt
YmxlclNINCA6IHB1YmxpYyBBYnN0cmFjdE1hY3JvQXNzZW1ibGVyPFNINEFzc2VtYmxlciwgTWFj
cm9Bc3NlbQogICAgIHsKICAgICAgICAgQVNTRVJUKChjb25kID09IFplcm8pIHx8IChjb25kID09
IE5vblplcm8pKTsKIAotICAgICAgICBUcnVzdGVkSW1tMzIgbWFzazgoc3RhdGljX2Nhc3Q8aW50
OF90PihtYXNrLm1fdmFsdWUpKTsKKyAgICAgICAgVHJ1c3RlZEltbTMyIG1hc2s4ID0gTWFjcm9B
c3NlbWJsZXJIZWxwZXJzOjptYXNrOE9uQ29uZGl0aW9uKCp0aGlzLCBjb25kLCBtYXNrKTsKIAot
ICAgICAgICBsb2FkOChhZGRyZXNzLCBkZXN0KTsKLSAgICAgICAgaWYgKG1hc2s4Lm1fdmFsdWUg
PT0gLTEpCisgICAgICAgIE1hY3JvQXNzZW1ibGVySGVscGVyczo6bG9hZDhPbkNvbmRpdGlvbigq
dGhpcywgY29uZCwgYWRkcmVzcywgZGVzdCk7CisgICAgICAgIGlmICgobWFzazgubV92YWx1ZSAm
IDB4ZmYpID09IDB4ZmYpCiAgICAgICAgICAgICBjb21wYXJlMzIoMCwgZGVzdCwgc3RhdGljX2Nh
c3Q8UmVsYXRpb25hbENvbmRpdGlvbj4oY29uZCkpOwogICAgICAgICBlbHNlCiAgICAgICAgICAg
ICB0ZXN0bEltbShtYXNrOC5tX3ZhbHVlLCBkZXN0KTsKQEAgLTE5NjUsMTIgKzE5NjUsMTIgQEAg
Y2xhc3MgTWFjcm9Bc3NlbWJsZXJTSDQgOiBwdWJsaWMgQWJzdHJhY3RNYWNyb0Fzc2VtYmxlcjxT
SDRBc3NlbWJsZXIsIE1hY3JvQXNzZW0KIAogICAgIEp1bXAgYnJhbmNoOChSZWxhdGlvbmFsQ29u
ZGl0aW9uIGNvbmQsIEJhc2VJbmRleCBsZWZ0LCBUcnVzdGVkSW1tMzIgcmlnaHQpCiAgICAgewot
ICAgICAgICBUcnVzdGVkSW1tMzIgcmlnaHQ4KHN0YXRpY19jYXN0PGludDhfdD4ocmlnaHQubV92
YWx1ZSkpOworICAgICAgICBUcnVzdGVkSW1tMzIgcmlnaHQ4ID0gTWFjcm9Bc3NlbWJsZXJIZWxw
ZXJzOjptYXNrOE9uQ29uZGl0aW9uKCp0aGlzLCBjb25kLCByaWdodCk7CiAgICAgICAgIFJlZ2lz
dGVySUQgbGVmdHRtcCA9IGNsYWltU2NyYXRjaCgpOwogCiAgICAgICAgIGxvYWRFZmZlY3RpdmVB
ZGRyZXNzKGxlZnQsIGxlZnR0bXApOwogCi0gICAgICAgIGxvYWQ4KGxlZnR0bXAsIGxlZnR0bXAp
OworICAgICAgICBNYWNyb0Fzc2VtYmxlckhlbHBlcnM6OmxvYWQ4T25Db25kaXRpb24oKnRoaXMs
IGNvbmQsIGxlZnR0bXAsIGxlZnR0bXApOwogICAgICAgICBSZWdpc3RlcklEIHJpZ2h0dG1wID0g
Y2xhaW1TY3JhdGNoKCk7CiAgICAgICAgIG1fYXNzZW1ibGVyLmxvYWRDb25zdGFudChyaWdodDgu
bV92YWx1ZSwgcmlnaHR0bXApOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
YXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyWDg2XzY0LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
YXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyWDg2XzY0LmgKaW5kZXggMzc5NzI4MjEzZWVmMDEwMGQ1
NmZkZDJmODkwZTVmNTg4MDA2M2ExZi4uMDdmODYyMGZhYmYyMmMzYzQ3NjJmNWEyY2E3YWJiZDU1
YjcwMmU2MiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNy
b0Fzc2VtYmxlclg4Nl82NC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIv
TWFjcm9Bc3NlbWJsZXJYODZfNjQuaApAQCAtMTIyMCw5ICsxMjIwLDggQEAgY2xhc3MgTWFjcm9B
c3NlbWJsZXJYODZfNjQgOiBwdWJsaWMgTWFjcm9Bc3NlbWJsZXJYODZDb21tb24gewogICAgIHVz
aW5nIE1hY3JvQXNzZW1ibGVyWDg2Q29tbW9uOjpicmFuY2g4OwogICAgIEp1bXAgYnJhbmNoOChS
ZWxhdGlvbmFsQ29uZGl0aW9uIGNvbmQsIEFic29sdXRlQWRkcmVzcyBsZWZ0LCBUcnVzdGVkSW1t
MzIgcmlnaHQpCiAgICAgewotICAgICAgICBUcnVzdGVkSW1tMzIgcmlnaHQ4KHN0YXRpY19jYXN0
PGludDhfdD4ocmlnaHQubV92YWx1ZSkpOwogICAgICAgICBNYWNyb0Fzc2VtYmxlclg4NkNvbW1v
bjo6bW92ZShUcnVzdGVkSW1tUHRyKGxlZnQubV9wdHIpLCBzY3JhdGNoUmVnaXN0ZXIoKSk7Ci0g
ICAgICAgIHJldHVybiBNYWNyb0Fzc2VtYmxlclg4NkNvbW1vbjo6YnJhbmNoOChjb25kLCBBZGRy
ZXNzKHNjcmF0Y2hSZWdpc3RlcigpKSwgcmlnaHQ4KTsKKyAgICAgICAgcmV0dXJuIE1hY3JvQXNz
ZW1ibGVyWDg2Q29tbW9uOjpicmFuY2g4KGNvbmQsIEFkZHJlc3Moc2NyYXRjaFJlZ2lzdGVyKCkp
LCByaWdodCk7CiAgICAgfQogICAgIAogICAgIHVzaW5nIE1hY3JvQXNzZW1ibGVyWDg2Q29tbW9u
OjpicmFuY2hUZXN0ODsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91
dFRlc3RzL0NoYW5nZUxvZwppbmRleCA0MDA3ZGU4OWI2OGQ3NDExMGI3N2M2MzRkYjY1MDgyNGZk
ZDJjMTc3Li45ZGRlNTQ5OTQ4ZGUwZTJhYTRmYTRjZTViYTlkMDE3YTRhYzNhZTc0IDEwMDY0NAot
LS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBA
IC0xLDMgKzEsMTUgQEAKKzIwMTYtMTEtMDcgIFl1c3VrZSBTdXp1a2kgIDx1dGF0YW5lLnRlYUBn
bWFpbC5jb20+CisKKyAgICAgICAgW0pTQ10gVGhlIGltcGxlbWVudGF0aW9uIG9mIDggYml0IG9w
ZXJhdGlvbiBpbiBNYWNyb0Fzc2VtYmxlciBzaG91bGQgY2FyZSBhYm91dCB1aW50OF90IC8gaW50
OF90CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjQ0
MzIKKworICAgICAgICBSZXZpZXdlZCBieSBNaWNoYWVsIFNhYm9mZi4KKworICAgICAgICBVc2Ug
b3duZXJEb2N1bWVudC4gT25jZSBET01KSVQgZm9yIG93bmVyRG9jdW1lbnQgaXMgbGFuZGVkLCB0
aGlzIHdpbGwgdXNlIGJyYW5jaDguCisKKyAgICAgICAgKiBqcy9kb20vZG9taml0LWFjY2Vzc29y
LW93bmVyLWRvY3VtZW50LXR5cGUtY2hlY2stZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAg
KiBqcy9kb20vZG9taml0LWFjY2Vzc29yLW93bmVyLWRvY3VtZW50LXR5cGUtY2hlY2suaHRtbDog
QWRkZWQuCisKIDIwMTYtMTEtMDcgIFJ5YW4gSGFkZGFkICA8cnlhbmhhZGRhZEBhcHBsZS5jb20+
CiAKICAgICAgICAgVW5yZXZpZXdlZCwgcm9sbGluZyBvdXQgcjIwODM4Mi4KZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2pzL2RvbS9kb21qaXQtYWNjZXNzb3Itb3duZXItZG9jdW1lbnQtdHlwZS1j
aGVjay1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9qcy9kb20vZG9taml0LWFjY2Vzc29yLW93
bmVyLWRvY3VtZW50LXR5cGUtY2hlY2stZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjhhZWM1OGVj
ZGI5YzhkMWU2YzgxNjAyYzZkMTIwMTk0ZTdjYjE1NDMKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlv
dXRUZXN0cy9qcy9kb20vZG9taml0LWFjY2Vzc29yLW93bmVyLWRvY3VtZW50LXR5cGUtY2hlY2st
ZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMTAgQEAKK1Rlc3QgRE9NSklUIG93bmVyRG9jdW1lbnQg
YWNjZXNzb3Igd29ya3Mgb24gQVJNIGVudmlyb25tZW50cy4KKworT24gc3VjY2VzcywgeW91IHdp
bGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09N
UExFVEUiLgorCisKK1BBU1MgZG9uZQorUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQor
CitURVNUIENPTVBMRVRFCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2pzL2RvbS9kb21qaXQt
YWNjZXNzb3Itb3duZXItZG9jdW1lbnQtdHlwZS1jaGVjay5odG1sIGIvTGF5b3V0VGVzdHMvanMv
ZG9tL2RvbWppdC1hY2Nlc3Nvci1vd25lci1kb2N1bWVudC10eXBlLWNoZWNrLmh0bWwKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uYjA3NGYxZTI1NTgyMjlhZDBmMzZkZjBmZjc5MTlkMjM4NjhhZjQ4ZQotLS0gL2Rldi9u
dWxsCisrKyBiL0xheW91dFRlc3RzL2pzL2RvbS9kb21qaXQtYWNjZXNzb3Itb3duZXItZG9jdW1l
bnQtdHlwZS1jaGVjay5odG1sCkBAIC0wLDAgKzEsMjkgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0
bWw+Cis8aGVhZD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMi
Pjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8c2NyaXB0PgorZGVzY3JpcHRpb24oJ1Rlc3Qg
RE9NSklUIG93bmVyRG9jdW1lbnQgYWNjZXNzb3Igd29ya3Mgb24gQVJNIGVudmlyb25tZW50cy4n
KTsKKworZnVuY3Rpb24gcnVuVGVzdCgpCit7CisgICAgZnVuY3Rpb24gb3duZXJEb2N1bWVudChk
b2MpCisgICAgeworICAgICAgICAvLyBJZiBET01KSVQgaXMgZW5hYmxlZCwgaXQgd2lsbCBwZXJm
b3JtIERvY3VtZW50IHR5cGUgY2hlY2ssIGFuZCBpdCB1c2VzIGJyYW5jaDggd2l0aCBhIG51bWJl
ciB0aGF0IGhhcyBNU0IuCisgICAgICAgIHJldHVybiBkb2Mub3duZXJEb2N1bWVudDsKKyAgICB9
CisgICAgbm9JbmxpbmUob3duZXJEb2N1bWVudCk7CisKKyAgICBmb3IgKHZhciBpID0gMDsgaSA8
IDFlNDsgKytpKSB7CisgICAgICAgIGlmIChudWxsICE9PSBvd25lckRvY3VtZW50KGRvY3VtZW50
KSkKKyAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcignRXJyb3InKTsKKyAgICB9CisgICAgdGVz
dFBhc3NlZCgiZG9uZSIpOworfQorcnVuVGVzdCgpOworPC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0i
Li4vLi4vcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0
bWw+Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>