<?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>212239</bug_id>
          
          <creation_ts>2020-05-21 16:49:51 -0700</creation_ts>
          <short_desc>in_by_val inside structure property for-in loop should use an opcode like has_structure_property but for &quot;in&quot;</short_desc>
          <delta_ts>2020-05-27 09:00:34 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>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>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Saam Barati">saam</reporter>
          <assigned_to name="Saam Barati">saam</assigned_to>
          <cc>benjamin</cc>
    
    <cc>fpizlo</cc>
    
    <cc>ggaren</cc>
    
    <cc>gskachkov</cc>
    
    <cc>guijemont</cc>
    
    <cc>keith_miller</cc>
    
    <cc>mark.lam</cc>
    
    <cc>msaboff</cc>
    
    <cc>rmorisset</cc>
    
    <cc>ross.kirsling</cc>
    
    <cc>ticaiolima</cc>
    
    <cc>tzagallo</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>ysuzuki</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1655147</commentid>
    <comment_count>0</comment_count>
    <who name="Saam Barati">saam</who>
    <bug_when>2020-05-21 16:49:51 -0700</bug_when>
    <thetext>...</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1655197</commentid>
    <comment_count>1</comment_count>
      <attachid>400012</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2020-05-21 19:30:19 -0700</bug_when>
    <thetext>Created attachment 400012
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1655208</commentid>
    <comment_count>2</comment_count>
      <attachid>400012</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2020-05-21 19:39:27 -0700</bug_when>
    <thetext>Comment on attachment 400012
patch

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

&gt; JSTests/stress/in-by-val-inside-for-in-loop.js:35
&gt; +            if (p === &quot;a&quot;)
&gt; +                delete o.a;

Since you&apos;re using the same o object every time, this delete will only take place on the first time thru here.  Is that intentional?

&gt; JSTests/stress/in-by-val-inside-for-in-loop.js:110
&gt; +            delete o[p];

Ditto. We only delete the properties in o on the first run thru here.  Is this intentional?

&gt; JSTests/stress/in-by-val-inside-for-in-loop.js:144
&gt; +            delete o[p];

Ditto.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1655242</commentid>
    <comment_count>3</comment_count>
      <attachid>400012</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2020-05-21 21:15:32 -0700</bug_when>
    <thetext>Comment on attachment 400012
patch

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

&gt;&gt; JSTests/stress/in-by-val-inside-for-in-loop.js:35
&gt;&gt; +                delete o.a;
&gt; 
&gt; Since you&apos;re using the same o object every time, this delete will only take place on the first time thru here.  Is that intentional?

yes. Just to change structure</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1655348</commentid>
    <comment_count>4</comment_count>
      <attachid>400012</attachid>
    <who name="Tadeu Zagallo">tzagallo</who>
    <bug_when>2020-05-22 10:31:01 -0700</bug_when>
    <thetext>Comment on attachment 400012
patch

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

&gt; Source/JavaScriptCore/ChangeLog:26
&gt; +        uses the HasProperty internal method, instead of like op_has_structure_property,

s/instead of like/unlike/ ?

&gt; Source/JavaScriptCore/bytecompiler/BytecodeGenerator.cpp:5203
&gt; +    static_assert(std::is_same&lt;NewOpType, OpGetByVal&gt;::value || std::is_same&lt;NewOpType, OpInByVal&gt;::value, &quot;get_by_val and in_by_val have arguments in the same order.&quot;);

If this must be true it might be worth placing them in an op_group in BytecodeList.rb and adding a comment. Eventually we should add a way of referring to the group itself for cases like this.

&gt; Source/JavaScriptCore/bytecompiler/BytecodeGenerator.cpp:5216
&gt; +    generator.m_lastOpcodeID = op_end;

also pre-existing, but we should make a method for this.

&gt; Source/JavaScriptCore/bytecompiler/BytecodeGenerator.cpp:5225
&gt; +    while (generator.m_writer.position() &lt; end)

Assert that position &lt;= end? I&apos;m not sure if we have a static method for that, but might worth asserting that `OldOpType::length() &lt;= NewOpType::length()`. One thing I&apos;m not sure if it&apos;s worth it since there&apos;s only two use cases is not allowing an arbitrary pair &lt;OldOpType, NewOpType&gt;.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1655375</commentid>
    <comment_count>5</comment_count>
      <attachid>400061</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2020-05-22 11:27:54 -0700</bug_when>
    <thetext>Created attachment 400061
patch

fix debug assert. I was casting to the wrong op type in baseline JIT compiler</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1655376</commentid>
    <comment_count>6</comment_count>
      <attachid>400012</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2020-05-22 11:29:27 -0700</bug_when>
    <thetext>Comment on attachment 400012
patch

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

&gt;&gt; Source/JavaScriptCore/ChangeLog:26
&gt;&gt; +        uses the HasProperty internal method, instead of like op_has_structure_property,
&gt; 
&gt; s/instead of like/unlike/ ?

I will fix

&gt;&gt; Source/JavaScriptCore/bytecompiler/BytecodeGenerator.cpp:5203
&gt;&gt; +    static_assert(std::is_same&lt;NewOpType, OpGetByVal&gt;::value || std::is_same&lt;NewOpType, OpInByVal&gt;::value, &quot;get_by_val and in_by_val have arguments in the same order.&quot;);
&gt; 
&gt; If this must be true it might be worth placing them in an op_group in BytecodeList.rb and adding a comment. Eventually we should add a way of referring to the group itself for cases like this.

But they don&apos;t share the same metadata.

I can just remove the reliance on this in the code below

&gt;&gt; Source/JavaScriptCore/bytecompiler/BytecodeGenerator.cpp:5225
&gt;&gt; +    while (generator.m_writer.position() &lt; end)
&gt; 
&gt; Assert that position &lt;= end? I&apos;m not sure if we have a static method for that, but might worth asserting that `OldOpType::length() &lt;= NewOpType::length()`. One thing I&apos;m not sure if it&apos;s worth it since there&apos;s only two use cases is not allowing an arbitrary pair &lt;OldOpType, NewOpType&gt;.

static-assert below guarantees this. I&apos;ll move that static_assert into this function when adapting it to not rely on NewOpType</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1655405</commentid>
    <comment_count>7</comment_count>
      <attachid>400069</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2020-05-22 13:02:04 -0700</bug_when>
    <thetext>Created attachment 400069
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1655431</commentid>
    <comment_count>8</comment_count>
      <attachid>400069</attachid>
    <who name="Tadeu Zagallo">tzagallo</who>
    <bug_when>2020-05-22 14:02:01 -0700</bug_when>
    <thetext>Comment on attachment 400069
patch

r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1655465</commentid>
    <comment_count>9</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2020-05-22 15:31:18 -0700</bug_when>
    <thetext>Committed r262083: &lt;https://trac.webkit.org/changeset/262083&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 400069.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1655466</commentid>
    <comment_count>10</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2020-05-22 15:32:14 -0700</bug_when>
    <thetext>&lt;rdar://problem/63556424&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1656378</commentid>
    <comment_count>11</comment_count>
      <attachid>400069</attachid>
    <who name="Keith Miller">keith_miller</who>
    <bug_when>2020-05-27 09:00:34 -0700</bug_when>
    <thetext>Comment on attachment 400069
patch

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

&gt; Source/JavaScriptCore/bytecompiler/BytecodeGenerator.cpp:2491
&gt; +        OpInStructureProperty::emit&lt;OpcodeSize::Wide32&gt;(this, dst, base, property, structureContext.enumerator());

Why does this have to be wide? Is it just because it makes the rewriting easier? Seems like we should at least have a FIXME.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>400012</attachid>
            <date>2020-05-21 19:30:19 -0700</date>
            <delta_ts>2020-05-22 11:27:54 -0700</delta_ts>
            <desc>patch</desc>
            <filename>a-backup.diff</filename>
            <type>text/plain</type>
            <size>42653</size>
            <attacher name="Saam Barati">saam</attacher>
            
              <data encoding="base64">SW5kZXg6IEpTVGVzdHMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIEpTVGVzdHMvQ2hhbmdlTG9n
CShyZXZpc2lvbiAyNjIwMzkpCisrKyBKU1Rlc3RzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpA
QCAtMSwzICsxLDMyIEBACisyMDIwLTA1LTIxICBTYWFtIEJhcmF0aSAgPHNiYXJhdGlAYXBwbGUu
Y29tPgorCisgICAgICAgIGluX2J5X3ZhbCBpbnNpZGUgc3RydWN0dXJlIHByb3BlcnR5IGZvci1p
biBsb29wIHNob3VsZCB1c2UgYW4gb3Bjb2RlIGxpa2UgaGFzX3N0cnVjdHVyZV9wcm9wZXJ0eSBi
dXQgZm9yICJpbiIKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTIxMjIzOQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgICogbWljcm9iZW5jaG1hcmtzL2luLWJ5LXZhbC1pbnNpZGUtZm9yLWluLWxvb3AuanM6IEFk
ZGVkLgorICAgICAgICAoYXNzZXJ0KToKKyAgICAgICAgKGNvdW50KToKKyAgICAgICAgKiBzdHJl
c3MvaW4tYnktdmFsLWluc2lkZS1mb3ItaW4tbG9vcC5qczogQWRkZWQuCisgICAgICAgIChhc3Nl
cnQpOgorICAgICAgICAodGVzdDEuY291bnQpOgorICAgICAgICAodGVzdDEpOgorICAgICAgICAo
dGVzdDIuY291bnQpOgorICAgICAgICAodGVzdDIpOgorICAgICAgICAodGVzdDMuY291bnQpOgor
ICAgICAgICAodGVzdDMpOgorICAgICAgICAodGVzdDQuY291bnQpOgorICAgICAgICAodGVzdDQp
OgorICAgICAgICAodGVzdDUuY291bnQpOgorICAgICAgICAodGVzdDUpOgorICAgICAgICAodGVz
dDYuY291bnQpOgorICAgICAgICAodGVzdDYpOgorICAgICAgICAodGVzdDcuY291bnQpOgorICAg
ICAgICAodGVzdDcpOgorICAgICAgICAodGVzdDguY291bnQpOgorICAgICAgICAodGVzdDgpOgor
CiAyMDIwLTA1LTIxICBBbGV4ZXkgU2h2YXlrYSAgPHNodmFpa2FsZXNoQGdtYWlsLmNvbT4KIAog
ICAgICAgICBVc2UgQGlzVW5kZWZpbmVkT3JOdWxsIGluc3RlYWQgb2YgYWJzdHJhY3QgZXF1YWxp
dHkgd2l0aCBudWxsCkluZGV4OiBKU1Rlc3RzL21pY3JvYmVuY2htYXJrcy9pbi1ieS12YWwtaW5z
aWRlLWZvci1pbi1sb29wLmpzCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIEpTVGVzdHMvbWljcm9iZW5jaG1hcmtz
L2luLWJ5LXZhbC1pbnNpZGUtZm9yLWluLWxvb3AuanMJKG5vbmV4aXN0ZW50KQorKysgSlNUZXN0
cy9taWNyb2JlbmNobWFya3MvaW4tYnktdmFsLWluc2lkZS1mb3ItaW4tbG9vcC5qcwkod29ya2lu
ZyBjb3B5KQpAQCAtMCwwICsxLDI1IEBACitmdW5jdGlvbiBhc3NlcnQoYikgeworICAgIGlmICgh
YikKKyAgICAgICAgdGhyb3cgbmV3IEVycm9yOworfQorCitmdW5jdGlvbiBjb3VudChvKSB7Cisg
ICAgbGV0IGMgPSAwOworICAgIGZvciAobGV0IHAgaW4gbykgeworICAgICAgICBpZiAocCBpbiBv
KQorICAgICAgICAgICAgKytjOworICAgIH0KKyAgICByZXR1cm4gYzsKK30KK25vSW5saW5lKGNv
dW50KTsKKworbGV0IG8gPSB7CisgICAgYToyMCwKKyAgICBiOjMwLAorICAgIGM6NDAsCisgICAg
ZDo1MAorfTsKKworZm9yIChsZXQgaSA9IDA7IGkgPCAzMDAwMDA7ICsraSkgeworICAgIGFzc2Vy
dChjb3VudChvKSA9PT0gNCk7Cit9CkluZGV4OiBKU1Rlc3RzL3N0cmVzcy9pbi1ieS12YWwtaW5z
aWRlLWZvci1pbi1sb29wLmpzCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIEpTVGVzdHMvc3RyZXNzL2luLWJ5LXZh
bC1pbnNpZGUtZm9yLWluLWxvb3AuanMJKG5vbmV4aXN0ZW50KQorKysgSlNUZXN0cy9zdHJlc3Mv
aW4tYnktdmFsLWluc2lkZS1mb3ItaW4tbG9vcC5qcwkod29ya2luZyBjb3B5KQpAQCAtMCwwICsx
LDIyNyBAQAorZnVuY3Rpb24gYXNzZXJ0KGIpIHsKKyAgICBpZiAoIWIpCisgICAgICAgIHRocm93
IG5ldyBFcnJvcjsKK30KKworZnVuY3Rpb24gdGVzdDEoKSB7CisgICAgZnVuY3Rpb24gY291bnQo
bykgeworICAgICAgICBsZXQgYyA9IDA7CisgICAgICAgIGZvciAobGV0IHAgaW4gbykgeworICAg
ICAgICAgICAgaWYgKHAgaW4gbykKKyAgICAgICAgICAgICAgICArK2M7CisgICAgICAgIH0KKyAg
ICAgICAgcmV0dXJuIGM7CisgICAgfQorICAgIG5vSW5saW5lKGNvdW50KTsKKworICAgIGxldCBv
ID0geworICAgICAgICBhOjIwLAorICAgICAgICBiOjMwLAorICAgICAgICBjOjQwLAorICAgICAg
ICBkOjUwCisgICAgfTsKKworICAgIGZvciAobGV0IGkgPSAwOyBpIDwgMTAwMDsgKytpKSB7Cisg
ICAgICAgIGFzc2VydChjb3VudChvKSA9PT0gNCk7CisgICAgfQorfQordGVzdDEoKTsKKworZnVu
Y3Rpb24gdGVzdDIoKSB7CisgICAgZnVuY3Rpb24gY291bnQobykgeworICAgICAgICBsZXQgYyA9
IDA7CisgICAgICAgIGZvciAobGV0IHAgaW4gbykgeworICAgICAgICAgICAgaWYgKHAgPT09ICJh
IikKKyAgICAgICAgICAgICAgICBkZWxldGUgby5hOworICAgICAgICAgICAgaWYgKHAgaW4gbykK
KyAgICAgICAgICAgICAgICArK2M7CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIGM7CisgICAg
fQorICAgIG5vSW5saW5lKGNvdW50KTsKKworICAgIGxldCBvID0geworICAgICAgICBhOjIwLAor
ICAgICAgICBiOjMwLAorICAgICAgICBjOjQwLAorICAgICAgICBkOjUwCisgICAgfTsKKworICAg
IGZvciAobGV0IGkgPSAwOyBpIDwgMTAwMDsgKytpKSB7CisgICAgICAgIGFzc2VydChjb3VudChv
KSA9PT0gMyk7CisgICAgfQorfQordGVzdDIoKTsKKworZnVuY3Rpb24gdGVzdDMoKSB7CisgICAg
ZnVuY3Rpb24gY291bnQobykgeworICAgICAgICBsZXQgYyA9IDA7CisgICAgICAgIGZvciAobGV0
IHAgaW4gbykgeworICAgICAgICAgICAgcCA9ICJhIjsKKyAgICAgICAgICAgIGlmIChwIGluIG8p
CisgICAgICAgICAgICAgICAgKytjOworICAgICAgICB9CisgICAgICAgIHJldHVybiBjOworICAg
IH0KKyAgICBub0lubGluZShjb3VudCk7CisKKyAgICBsZXQgbyA9IHsKKyAgICAgICAgYToyMCwK
KyAgICAgICAgYjozMCwKKyAgICAgICAgYzo0MCwKKyAgICAgICAgZDo1MAorICAgIH07CisKKyAg
ICBmb3IgKGxldCBpID0gMDsgaSA8IDEwMDA7ICsraSkgeworICAgICAgICBhc3NlcnQoY291bnQo
bykgPT09IDQpOworICAgIH0KK30KK3Rlc3QzKCk7CisKK2Z1bmN0aW9uIHRlc3Q0KCkgeworICAg
IGZ1bmN0aW9uIGNvdW50KG8pIHsKKyAgICAgICAgbGV0IGMgPSAwOworICAgICAgICBmb3IgKGxl
dCBwIGluIG8pIHsKKyAgICAgICAgICAgIHAgPSAiZiI7CisgICAgICAgICAgICBpZiAocCBpbiBv
KQorICAgICAgICAgICAgICAgICsrYzsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4gYzsKKyAg
ICB9CisgICAgbm9JbmxpbmUoY291bnQpOworCisgICAgbGV0IG8gPSB7CisgICAgICAgIGE6MjAs
CisgICAgICAgIGI6MzAsCisgICAgICAgIGM6NDAsCisgICAgICAgIGQ6NTAKKyAgICB9OworCisg
ICAgZm9yIChsZXQgaSA9IDA7IGkgPCAxMDAwOyArK2kpIHsKKyAgICAgICAgYXNzZXJ0KGNvdW50
KG8pID09PSAwKTsKKyAgICB9Cit9Cit0ZXN0NCgpOworCitmdW5jdGlvbiB0ZXN0NSgpIHsKKyAg
ICBmdW5jdGlvbiBjb3VudChvKSB7CisgICAgICAgIGxldCBjID0gMDsKKyAgICAgICAgZm9yIChs
ZXQgcCBpbiBvKSB7CisgICAgICAgICAgICBkZWxldGUgb1twXTsKKyAgICAgICAgICAgIGlmIChw
IGluIG8pCisgICAgICAgICAgICAgICAgKytjOworICAgICAgICB9CisgICAgICAgIHJldHVybiBj
OworICAgIH0KKyAgICBub0lubGluZShjb3VudCk7CisKKyAgICBsZXQgbyA9IHsKKyAgICAgICAg
YToyMCwKKyAgICAgICAgYjozMCwKKyAgICAgICAgYzo0MCwKKyAgICAgICAgZDo1MAorICAgIH07
CisKKyAgICBsZXQgcCA9IHsKKyAgICAgICAgYToyMCwKKyAgICAgICAgYjozMCwKKyAgICAgICAg
Yzo0MCwKKyAgICAgICAgZDo1MAorICAgIH07CisKKyAgICBvLl9fcHJvdG9fXyA9IHA7CisKKyAg
ICBmb3IgKGxldCBpID0gMDsgaSA8IDEwMDA7ICsraSkgeworICAgICAgICBhc3NlcnQoY291bnQo
bykgPT09IDQpOworICAgIH0KK30KK3Rlc3Q1KCk7CisKK2Z1bmN0aW9uIHRlc3Q2KCkgeworICAg
IGZ1bmN0aW9uIGNvdW50KG8pIHsKKyAgICAgICAgbGV0IGMgPSAwOworICAgICAgICBmb3IgKGxl
dCBwIGluIG8pIHsKKyAgICAgICAgICAgIGRlbGV0ZSBvW3BdOworICAgICAgICAgICAgaWYgKHAg
aW4gbykKKyAgICAgICAgICAgICAgICArK2M7CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIGM7
CisgICAgfQorICAgIG5vSW5saW5lKGNvdW50KTsKKworICAgIGxldCBvID0geworICAgICAgICBh
OjIwLAorICAgICAgICBiOjMwLAorICAgICAgICBjOjQwLAorICAgICAgICBkOjUwCisgICAgfTsK
KworICAgIGxldCBwID0geyB9OworCisgICAgby5fX3Byb3RvX18gPSBwOworCisgICAgZm9yIChs
ZXQgaSA9IDA7IGkgPCAxMDAwOyArK2kpIHsKKyAgICAgICAgYXNzZXJ0KGNvdW50KG8pID09PSAw
KTsKKyAgICB9Cit9Cit0ZXN0NigpOworCitmdW5jdGlvbiB0ZXN0NygpIHsKKyAgICBmdW5jdGlv
biBjb3VudChvLCBvMikgeworICAgICAgICBsZXQgYyA9IDA7CisgICAgICAgIGZvciAobGV0IHAg
aW4gbykgeworICAgICAgICAgICAgaWYgKHAgaW4gbzIpCisgICAgICAgICAgICAgICAgKytjOwor
ICAgICAgICB9CisgICAgICAgIHJldHVybiBjOworICAgIH0KKyAgICBub0lubGluZShjb3VudCk7
CisKKyAgICBmb3IgKGxldCBpID0gMDsgaSA8IDEwMDA7ICsraSkgeworICAgICAgICBsZXQgbyA9
IHthOiAyMH07CisgICAgICAgIGlmICghIShpICUgMikpIHsKKyAgICAgICAgICAgIGxldCBvayA9
IGZhbHNlOworICAgICAgICAgICAgdHJ5IHsKKyAgICAgICAgICAgICAgICBjb3VudChvLCBudWxs
KTsKKyAgICAgICAgICAgIH0gY2F0Y2goZSkgeworICAgICAgICAgICAgICAgIGFzc2VydChlIGlu
c3RhbmNlb2YgVHlwZUVycm9yKTsKKyAgICAgICAgICAgICAgICBvayA9IGUudG9TdHJpbmcoKS5p
bmRleE9mKCJvMiBpcyBub3QgYW4gT2JqZWN0IikgPj0gMDsKKyAgICAgICAgICAgIH0KKyAgICAg
ICAgICAgIGFzc2VydChvayk7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBhc3NlcnQo
Y291bnQobywge30pID09PSAwKTsKKyAgICAgICAgfQorICAgIH0KK30KK3Rlc3Q3KCk7CisKK2Z1
bmN0aW9uIHRlc3Q4KCkgeworICAgIGZ1bmN0aW9uIGNvdW50KG8sIHByb3RvKSB7CisgICAgICAg
IGxldCBjID0gMDsKKyAgICAgICAgZm9yIChsZXQgcCBpbiBvKSB7CisgICAgICAgICAgICBkZWxl
dGUgb1twXTsKKyAgICAgICAgICAgIG8uX19wcm90b19fID0gcHJvdG87CisgICAgICAgICAgICBp
ZiAocCBpbiBvKQorICAgICAgICAgICAgICAgICsrYzsKKyAgICAgICAgfQorICAgICAgICByZXR1
cm4gYzsKKyAgICB9CisgICAgbm9JbmxpbmUoY291bnQpOworCisgICAgbGV0IGhhc093blByb3Bl
cnR5Q2FsbGVkID0gZmFsc2U7CisgICAgbGV0IHAgPSBuZXcgUHJveHkoe30sIHsKKyAgICAgICAg
aGFzKCkgeworICAgICAgICAgICAgaGFzT3duUHJvcGVydHlDYWxsZWQgPSB0cnVlOworICAgICAg
ICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICB9CisgICAgfSk7CisKKyAgICBmb3IgKGxldCBp
ID0gMDsgaSA8IDEwMDA7ICsraSkgeworICAgICAgICBsZXQgbyA9IHsgYToyMCB9OworCisgICAg
ICAgIGFzc2VydChjb3VudChvLCBwKSA9PT0gMCk7CisgICAgICAgIGFzc2VydChoYXNPd25Qcm9w
ZXJ0eUNhbGxlZCA9PT0gdHJ1ZSk7CisgICAgICAgIGhhc093blByb3BlcnR5Q2FsbGVkID0gZmFs
c2U7CisgICAgfQorfQordGVzdDgoKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFu
Z2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2
aXNpb24gMjYyMDM5KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2lu
ZyBjb3B5KQpAQCAtMSwzICsxLDk0IEBACisyMDIwLTA1LTIxICBTYWFtIEJhcmF0aSAgPHNiYXJh
dGlAYXBwbGUuY29tPgorCisgICAgICAgIGluX2J5X3ZhbCBpbnNpZGUgc3RydWN0dXJlIHByb3Bl
cnR5IGZvci1pbiBsb29wIHNob3VsZCB1c2UgYW4gb3Bjb2RlIGxpa2UgaGFzX3N0cnVjdHVyZV9w
cm9wZXJ0eSBidXQgZm9yICJpbiIKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTIxMjIzOQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgIFRoZXJlIGlzIGNvZGUgaW5zaWRlIFNwZWVkb21ldGVyIDIgdGhhdCBpcyBs
aWtlOgorICAgICAgICAKKyAgICAgICAgYGBgCisgICAgICAgIGZvciAobGV0IHAgaW4gbykgewor
ICAgICAgICAgICAgaWYgKHAgaW4gbzIpCisgICAgICAgICAgICAgICAgLi4uCisgICAgICAgIH0K
KyAgICAgICAgYGBgCisgICAgICAgIAorICAgICAgICBXaGVyZSBvIGFuZCBvMiBmcmVxdWVudGx5
IHNoYXJlIHRoZSBzYW1lIHN0cnVjdHVyZS4gRWxtIGRvZXMgdGhpcyB3aGVuIGl0J3MKKyAgICAg
ICAgZGlmZmluZyB0d28gb2JqZWN0cy4gV2UgYWxyZWFkeSBvcHRpbWl6ZSBvMltwXSAoZ2V0X2J5
X3ZhbCkgaW4gdGhlIGFib3ZlIGxvb3AKKyAgICAgICAgZm9yIHN0cnVjdHVyZSBwcm9wZXJ0aWVz
LiBUaGlzIHBhdGNoIGFkZHMgdGhhdCBzYW1lIG9wdGltaXphdGlvbiBmb3IgaW5fYnlfdmFsLgor
ICAgICAgICBCZWNhdXNlIHdlIGFscmVhZHkgZW1pdCBhICJzdHJ1Y3R1cmUiIGxvb3AgZm9yIGZv
ci1pbiwgd2hlcmUgd2UgaXRlcmF0ZSBzdHJ1Y3R1cmUKKyAgICAgICAgcHJvcGVydGllcywgdGhl
IGZhc3QgcGF0aCBmb3IgdGhlIGFib3ZlLCB3aGVyZSBvIGFuZCBvMiBoYXZlIHRoZSBzYW1lCisg
ICAgICAgIHN0cnVjdHVyZSBpcyBzaW1wbHkgYSBzdHJ1Y3R1cmUgY2hlY2sgZm9sbG93ZWQgYnkg
cmV0dXJuIHRydWUuCisgICAgICAgIAorICAgICAgICBUaGlzIHBhdGNoIGludHJvZHVjZXMgdGhl
IG5ldyBvcGNvZGU6IG9wX2luX3N0cnVjdHVyZV9wcm9wZXJ0eS4gSXRzIGZhc3QgcGF0aCBpcyBp
ZGVudGljYWwKKyAgICAgICAgdG8gb3BfaGFzX3N0cnVjdHVyZV9wcm9wZXJ0eS4gSXRzIHNsb3cg
cGF0aCwgaG93ZXZlciwgYmVoYXZlcyBsaWtlICJpbiIsIHdoaWNoCisgICAgICAgIHVzZXMgdGhl
IEhhc1Byb3BlcnR5IGludGVybmFsIG1ldGhvZCwgaW5zdGVhZCBvZiBsaWtlIG9wX2hhc19zdHJ1
Y3R1cmVfcHJvcGVydHksCisgICAgICAgIHdoaWNoIHVzZXMgdGhlIEdldE93blByb3BlcnR5IGlu
dGVybmFsIG1ldGhvZC4gVGhpcyBiZWhhdmlvciBkaWZmZXJlbmNlIGlzCisgICAgICAgIG9ic2Vy
dmFibGUgdXNpbmcgUHJveHkuCisgICAgICAgIAorICAgICAgICBUaGlzIGEgNSUgcGVyZiBpbXBy
b3ZlbWVudCBpbiB0aGUgRWxtIHN1YnRlc3QgaW4gU3BlZWRvbWV0ZXIgMi4KKworICAgICAgICAq
IGJ5dGVjb2RlL0J5dGVjb2RlTGlzdC5yYjoKKyAgICAgICAgKiBieXRlY29kZS9CeXRlY29kZVVz
ZURlZi5jcHA6CisgICAgICAgIChKU0M6OmNvbXB1dGVVc2VzRm9yQnl0ZWNvZGVJbmRleEltcGwp
OgorICAgICAgICAoSlNDOjpjb21wdXRlRGVmc0ZvckJ5dGVjb2RlSW5kZXhJbXBsKToKKyAgICAg
ICAgKiBieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuY3BwOgorICAgICAgICAoSlNDOjpC
eXRlY29kZUdlbmVyYXRvcjo6ZW1pdEluQnlWYWwpOgorICAgICAgICAoSlNDOjpyZXdyaXRlT3Ap
OgorICAgICAgICAoSlNDOjpTdHJ1Y3R1cmVGb3JJbkNvbnRleHQ6OmZpbmFsaXplKToKKyAgICAg
ICAgKiBieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuaDoKKyAgICAgICAgKEpTQzo6U3Ry
dWN0dXJlRm9ySW5Db250ZXh0OjphZGRJbkluc3QpOgorICAgICAgICAqIGRmZy9ERkdBYnN0cmFj
dEludGVycHJldGVySW5saW5lcy5oOgorICAgICAgICAoSlNDOjpERkc6OkFic3RyYWN0SW50ZXJw
cmV0ZXI8QWJzdHJhY3RTdGF0ZVR5cGU+OjpleGVjdXRlRWZmZWN0cyk6CisgICAgICAgICogZGZn
L0RGR0J5dGVDb2RlUGFyc2VyLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpCeXRlQ29kZVBhcnNl
cjo6cGFyc2VCbG9jayk6CisgICAgICAgICogZGZnL0RGR0NhcGFiaWxpdGllcy5jcHA6CisgICAg
ICAgIChKU0M6OkRGRzo6Y2FwYWJpbGl0eUxldmVsKToKKyAgICAgICAgKiBkZmcvREZHQ2xvYmJl
cml6ZS5oOgorICAgICAgICAoSlNDOjpERkc6OmNsb2JiZXJpemUpOgorICAgICAgICAqIGRmZy9E
RkdEb2VzR0MuY3BwOgorICAgICAgICAoSlNDOjpERkc6OmRvZXNHQyk6CisgICAgICAgICogZGZn
L0RGR0ZpeHVwUGhhc2UuY3BwOgorICAgICAgICAoSlNDOjpERkc6OkZpeHVwUGhhc2U6OmZpeHVw
Tm9kZSk6CisgICAgICAgICogZGZnL0RGR05vZGVUeXBlLmg6CisgICAgICAgICogZGZnL0RGR09w
ZXJhdGlvbnMuY3BwOgorICAgICAgICAqIGRmZy9ERkdPcGVyYXRpb25zLmg6CisgICAgICAgICog
ZGZnL0RGR1ByZWRpY3Rpb25Qcm9wYWdhdGlvblBoYXNlLmNwcDoKKyAgICAgICAgKiBkZmcvREZH
U2FmZVRvRXhlY3V0ZS5oOgorICAgICAgICAoSlNDOjpERkc6OnNhZmVUb0V4ZWN1dGUpOgorICAg
ICAgICAqIGRmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6U3Bl
Y3VsYXRpdmVKSVQ6OmNvbXBpbGVJblN0cnVjdHVyZVByb3BlcnR5KToKKyAgICAgICAgKiBkZmcv
REZHU3BlY3VsYXRpdmVKSVQuaDoKKyAgICAgICAgKiBkZmcvREZHU3BlY3VsYXRpdmVKSVQzMl82
NC5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUpOgorICAg
ICAgICAqIGRmZy9ERkdTcGVjdWxhdGl2ZUpJVDY0LmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpT
cGVjdWxhdGl2ZUpJVDo6Y29tcGlsZSk6CisgICAgICAgICogZnRsL0ZUTENhcGFiaWxpdGllcy5j
cHA6CisgICAgICAgIChKU0M6OkZUTDo6Y2FuQ29tcGlsZSk6CisgICAgICAgICogZnRsL0ZUTExv
d2VyREZHVG9CMy5jcHA6CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRGR1RvQjM6OmNv
bXBpbGVOb2RlKToKKyAgICAgICAgKEpTQzo6RlRMOjpERkc6Okxvd2VyREZHVG9CMzo6Y29tcGls
ZUhhc1N0cnVjdHVyZVByb3BlcnR5SW1wbCk6CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dl
ckRGR1RvQjM6OmNvbXBpbGVIYXNTdHJ1Y3R1cmVQcm9wZXJ0eSk6CisgICAgICAgIChKU0M6OkZU
TDo6REZHOjpMb3dlckRGR1RvQjM6OmNvbXBpbGVJblN0cnVjdHVyZVByb3BlcnR5KToKKyAgICAg
ICAgKiBqaXQvSklULmNwcDoKKyAgICAgICAgKEpTQzo6SklUOjpwcml2YXRlQ29tcGlsZU1haW5Q
YXNzKToKKyAgICAgICAgKEpTQzo6SklUOjpwcml2YXRlQ29tcGlsZVNsb3dDYXNlcyk6CisgICAg
ICAgICogaml0L0pJVC5oOgorICAgICAgICAqIGppdC9KSVRPcGNvZGVzLmNwcDoKKyAgICAgICAg
KEpTQzo6SklUOjplbWl0X29wX2luX3N0cnVjdHVyZV9wcm9wZXJ0eSk6CisgICAgICAgICogaml0
L0pJVE9wY29kZXMzMl82NC5jcHA6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9pbl9zdHJ1
Y3R1cmVfcHJvcGVydHkpOgorICAgICAgICAqIGxsaW50L0xMSW50T2Zmc2V0c0V4dHJhY3Rvci5j
cHA6CisgICAgICAgICogbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlci5hc206CisgICAgICAgICog
bGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlcjY0LmFzbToKKyAgICAgICAgKiBydW50aW1lL0NvbW1v
blNsb3dQYXRocy5jcHA6CisgICAgICAgIChKU0M6OlNMT1dfUEFUSF9ERUNMKToKKyAgICAgICAg
KiBydW50aW1lL0NvbW1vblNsb3dQYXRocy5oOgorICAgICAgICAqIHJ1bnRpbWUvSlNPYmplY3Qu
Y3BwOgorICAgICAgICAoSlNDOjpKU09iamVjdDo6aGFzUHJvcGVydHlHZW5lcmljIGNvbnN0KToK
KyAgICAgICAgKiBydW50aW1lL0pTUHJvcGVydHlOYW1lRW51bWVyYXRvci5oOgorCiAyMDIwLTA1
LTIxICBSb2JpbiBNb3Jpc3NldCAgPHJtb3Jpc3NldEBhcHBsZS5jb20+CiAKICAgICAgICAgUmVt
b3ZlIEFzc2VtYmxlckJ1ZmZlcldpdGhDb25zdGFudFBvb2wuaCAoYXMgaXQgaGFzIGJlZW4gZGVh
ZCBmb3IgeWVhcnMpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNv
ZGVMaXN0LnJiCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9C
eXRlY29kZUxpc3QucmIJKHJldmlzaW9uIDI2MjAzOSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ieXRlY29kZS9CeXRlY29kZUxpc3QucmIJKHdvcmtpbmcgY29weSkKQEAgLTExMDUsNiArMTEw
NSwxNCBAQCBvcCA6aGFzX3N0cnVjdHVyZV9wcm9wZXJ0eSwKICAgICAgICAgZW51bWVyYXRvcjog
VmlydHVhbFJlZ2lzdGVyLAogICAgIH0KIAorb3AgOmluX3N0cnVjdHVyZV9wcm9wZXJ0eSwKKyAg
ICBhcmdzOiB7CisgICAgICAgIGRzdDogVmlydHVhbFJlZ2lzdGVyLAorICAgICAgICBiYXNlOiBW
aXJ0dWFsUmVnaXN0ZXIsCisgICAgICAgIHByb3BlcnR5OiBWaXJ0dWFsUmVnaXN0ZXIsCisgICAg
ICAgIGVudW1lcmF0b3I6IFZpcnR1YWxSZWdpc3RlciwKKyAgICB9CisKIG9wIDpoYXNfZ2VuZXJp
Y19wcm9wZXJ0eSwKICAgICBhcmdzOiB7CiAgICAgICAgIGRzdDogVmlydHVhbFJlZ2lzdGVyLApJ
bmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlVXNlRGVmLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVVc2VE
ZWYuY3BwCShyZXZpc2lvbiAyNjIwMzkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNv
ZGUvQnl0ZWNvZGVVc2VEZWYuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNDYsNiArMjQ2LDcgQEAg
dm9pZCBjb21wdXRlVXNlc0ZvckJ5dGVjb2RlSW5kZXhJbXBsKFZpcgogICAgIFVTRVMoT3BHZXRC
eVZhbFdpdGhUaGlzLCBiYXNlLCB0aGlzVmFsdWUsIHByb3BlcnR5KQogICAgIFVTRVMoT3BJbnN0
YW5jZW9mQ3VzdG9tLCB2YWx1ZSwgY29uc3RydWN0b3IsIGhhc0luc3RhbmNlVmFsdWUpCiAgICAg
VVNFUyhPcEhhc1N0cnVjdHVyZVByb3BlcnR5LCBiYXNlLCBwcm9wZXJ0eSwgZW51bWVyYXRvcikK
KyAgICBVU0VTKE9wSW5TdHJ1Y3R1cmVQcm9wZXJ0eSwgYmFzZSwgcHJvcGVydHksIGVudW1lcmF0
b3IpCiAgICAgVVNFUyhPcENvbnN0cnVjdFZhcmFyZ3MsIGNhbGxlZSwgdGhpc1ZhbHVlLCBhcmd1
bWVudHMpCiAgICAgVVNFUyhPcENhbGxWYXJhcmdzLCBjYWxsZWUsIHRoaXNWYWx1ZSwgYXJndW1l
bnRzKQogICAgIFVTRVMoT3BUYWlsQ2FsbFZhcmFyZ3MsIGNhbGxlZSwgdGhpc1ZhbHVlLCBhcmd1
bWVudHMpCkBAIC0zNzQsNiArMzc1LDcgQEAgdm9pZCBjb21wdXRlRGVmc0ZvckJ5dGVjb2RlSW5k
ZXhJbXBsKHVucwogICAgIERFRlMoT3BHZXRFbnVtZXJhYmxlTGVuZ3RoLCBkc3QpCiAgICAgREVG
UyhPcEhhc0luZGV4ZWRQcm9wZXJ0eSwgZHN0KQogICAgIERFRlMoT3BIYXNTdHJ1Y3R1cmVQcm9w
ZXJ0eSwgZHN0KQorICAgIERFRlMoT3BJblN0cnVjdHVyZVByb3BlcnR5LCBkc3QpCiAgICAgREVG
UyhPcEhhc0dlbmVyaWNQcm9wZXJ0eSwgZHN0KQogICAgIERFRlMoT3BHZXREaXJlY3RQbmFtZSwg
ZHN0KQogICAgIERFRlMoT3BHZXRQcm9wZXJ0eUVudW1lcmF0b3IsIGRzdCkKSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5l
cmF0b3IuY3BwCShyZXZpc2lvbiAyNjIwMzkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjQ3OSw2
ICsyNDc5LDIwIEBAIFJlZ2lzdGVySUQqIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0SW5zdGEKIAog
UmVnaXN0ZXJJRCogQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRJbkJ5VmFsKFJlZ2lzdGVySUQqIGRz
dCwgUmVnaXN0ZXJJRCogcHJvcGVydHksIFJlZ2lzdGVySUQqIGJhc2UpCiB7CisgICAgZm9yIChz
aXplX3QgaSA9IG1fZm9ySW5Db250ZXh0U3RhY2suc2l6ZSgpOyBpLS07ICkgeworICAgICAgICBG
b3JJbkNvbnRleHQmIGNvbnRleHQgPSBtX2ZvckluQ29udGV4dFN0YWNrW2ldLmdldCgpOworICAg
ICAgICBpZiAoY29udGV4dC5sb2NhbCgpICE9IHByb3BlcnR5KQorICAgICAgICAgICAgY29udGlu
dWU7CisKKyAgICAgICAgaWYgKCFjb250ZXh0LmlzU3RydWN0dXJlRm9ySW5Db250ZXh0KCkpCisg
ICAgICAgICAgICBicmVhazsKKworICAgICAgICBTdHJ1Y3R1cmVGb3JJbkNvbnRleHQmIHN0cnVj
dHVyZUNvbnRleHQgPSBjb250ZXh0LmFzU3RydWN0dXJlRm9ySW5Db250ZXh0KCk7CisgICAgICAg
IE9wSW5TdHJ1Y3R1cmVQcm9wZXJ0eTo6ZW1pdDxPcGNvZGVTaXplOjpXaWRlMzI+KHRoaXMsIGRz
dCwgYmFzZSwgcHJvcGVydHksIHN0cnVjdHVyZUNvbnRleHQuZW51bWVyYXRvcigpKTsKKyAgICAg
ICAgc3RydWN0dXJlQ29udGV4dC5hZGRJbkluc3QobV9sYXN0SW5zdHJ1Y3Rpb24ub2Zmc2V0KCks
IHByb3BlcnR5LT5pbmRleCgpKTsKKyAgICAgICAgcmV0dXJuIGRzdDsKKyAgICB9CisKICAgICBP
cEluQnlWYWw6OmVtaXQodGhpcywgZHN0LCBiYXNlLCBwcm9wZXJ0eSk7CiAgICAgcmV0dXJuIGRz
dDsKIH0KQEAgLTUxODMsNiArNTE5NywzNSBAQCB2b2lkIEZvckluQ29udGV4dDo6ZmluYWxpemUo
Qnl0ZWNvZGVHZW5lCiAgICAgfQogfQogCit0ZW1wbGF0ZSA8dHlwZW5hbWUgT2xkT3BUeXBlLCB0
eXBlbmFtZSBOZXdPcFR5cGUsIHR5cGVuYW1lIFR1cGxlVHlwZT4KK0FMV0FZU19JTkxJTkUgdm9p
ZCByZXdyaXRlT3AoQnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwgVHVwbGVUeXBlJiBpbnN0
VHVwbGUpCit7CisgICAgc3RhdGljX2Fzc2VydChzdGQ6OmlzX3NhbWU8TmV3T3BUeXBlLCBPcEdl
dEJ5VmFsPjo6dmFsdWUgfHwgc3RkOjppc19zYW1lPE5ld09wVHlwZSwgT3BJbkJ5VmFsPjo6dmFs
dWUsICJnZXRfYnlfdmFsIGFuZCBpbl9ieV92YWwgaGF2ZSBhcmd1bWVudHMgaW4gdGhlIHNhbWUg
b3JkZXIuIik7CisKKyAgICB1bnNpZ25lZCBpbnN0SW5kZXggPSBzdGQ6OmdldDwwPihpbnN0VHVw
bGUpOworICAgIGludCBwcm9wZXJ0eVJlZ0luZGV4ID0gc3RkOjpnZXQ8MT4oaW5zdFR1cGxlKTsK
KyAgICBhdXRvIGluc3RydWN0aW9uID0gZ2VuZXJhdG9yLm1fd3JpdGVyLnJlZihpbnN0SW5kZXgp
OworICAgIGF1dG8gZW5kID0gaW5zdEluZGV4ICsgaW5zdHJ1Y3Rpb24tPnNpemUoKTsKKyAgICBB
U1NFUlQoaW5zdHJ1Y3Rpb24tPmlzV2lkZTMyKCkpOworCisgICAgZ2VuZXJhdG9yLm1fd3JpdGVy
LnNlZWsoaW5zdEluZGV4KTsKKworICAgIGF1dG8gYnl0ZWNvZGUgPSBpbnN0cnVjdGlvbi0+YXM8
T2xkT3BUeXBlPigpOworCisgICAgLy8gZGlzYWJsZSBwZWVwaG9sZSBvcHRpbWl6YXRpb25zCisg
ICAgZ2VuZXJhdG9yLm1fbGFzdE9wY29kZUlEID0gb3BfZW5kOworCisgICAgLy8gQ2hhbmdlIHRo
ZSBvcGNvZGUgdG8gZ2V0X2J5X3ZhbC4KKyAgICAvLyAxLiBkc3Qgc3RheXMgdGhlIHNhbWUuCisg
ICAgLy8gMi4gYmFzZSBzdGF5cyB0aGUgc2FtZS4KKyAgICAvLyAzLiBwcm9wZXJ0eSBnZXRzIHN3
aXRjaGVkIHRvIHRoZSBvcmlnaW5hbCBwcm9wZXJ0eS4KKyAgICBOZXdPcFR5cGU6OnRlbXBsYXRl
IGVtaXQ8T3Bjb2RlU2l6ZTo6V2lkZTMyPigmZ2VuZXJhdG9yLCBieXRlY29kZS5tX2RzdCwgYnl0
ZWNvZGUubV9iYXNlLCBWaXJ0dWFsUmVnaXN0ZXIocHJvcGVydHlSZWdJbmRleCkpOworCisgICAg
Ly8gNC4gbm9wIG91dCB0aGUgcmVtYWluaW5nIGJ5dGVzCisgICAgd2hpbGUgKGdlbmVyYXRvci5t
X3dyaXRlci5wb3NpdGlvbigpIDwgZW5kKQorICAgICAgICBPcE5vcDo6ZW1pdDxPcGNvZGVTaXpl
OjpOYXJyb3c+KCZnZW5lcmF0b3IpOworfQorCiB2b2lkIFN0cnVjdHVyZUZvckluQ29udGV4dDo6
ZmluYWxpemUoQnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwgVW5saW5rZWRDb2RlQmxvY2tH
ZW5lcmF0b3IqIGNvZGVCbG9jaywgdW5zaWduZWQgYm9keUJ5dGVjb2RlRW5kT2Zmc2V0KQogewog
ICAgIEJhc2U6OmZpbmFsaXplKGdlbmVyYXRvciwgY29kZUJsb2NrLCBib2R5Qnl0ZWNvZGVFbmRP
ZmZzZXQpOwpAQCAtNTE5MSwzMCArNTIzNCwxNiBAQCB2b2lkIFN0cnVjdHVyZUZvckluQ29udGV4
dDo6ZmluYWxpemUoQnl0CiAKICAgICBPcGNvZGVJRCBsYXN0T3Bjb2RlSUQgPSBnZW5lcmF0b3Iu
bV9sYXN0T3Bjb2RlSUQ7CiAgICAgSW5zdHJ1Y3Rpb25TdHJlYW06Ok11dGFibGVSZWYgbGFzdElu
c3RydWN0aW9uID0gZ2VuZXJhdG9yLm1fbGFzdEluc3RydWN0aW9uOwotICAgIGZvciAoY29uc3Qg
YXV0byYgaW5zdFR1cGxlIDogbV9nZXRJbnN0cykgewotICAgICAgICB1bnNpZ25lZCBpbnN0SW5k
ZXggPSBzdGQ6OmdldDwwPihpbnN0VHVwbGUpOwotICAgICAgICBpbnQgcHJvcGVydHlSZWdJbmRl
eCA9IHN0ZDo6Z2V0PDE+KGluc3RUdXBsZSk7Ci0gICAgICAgIGF1dG8gaW5zdHJ1Y3Rpb24gPSBn
ZW5lcmF0b3IubV93cml0ZXIucmVmKGluc3RJbmRleCk7Ci0gICAgICAgIGF1dG8gZW5kID0gaW5z
dEluZGV4ICsgaW5zdHJ1Y3Rpb24tPnNpemUoKTsKLSAgICAgICAgQVNTRVJUKGluc3RydWN0aW9u
LT5pc1dpZGUzMigpKTsKLQotICAgICAgICBnZW5lcmF0b3IubV93cml0ZXIuc2VlayhpbnN0SW5k
ZXgpOwotCi0gICAgICAgIGF1dG8gYnl0ZWNvZGUgPSBpbnN0cnVjdGlvbi0+YXM8T3BHZXREaXJl
Y3RQbmFtZT4oKTsKLQotICAgICAgICAvLyBkaXNhYmxlIHBlZXBob2xlIG9wdGltaXphdGlvbnMK
LSAgICAgICAgZ2VuZXJhdG9yLm1fbGFzdE9wY29kZUlEID0gb3BfZW5kOwotCi0gICAgICAgIC8v
IENoYW5nZSB0aGUgb3Bjb2RlIHRvIGdldF9ieV92YWwuCi0gICAgICAgIC8vIDEuIGRzdCBzdGF5
cyB0aGUgc2FtZS4KLSAgICAgICAgLy8gMi4gYmFzZSBzdGF5cyB0aGUgc2FtZS4KLSAgICAgICAg
Ly8gMy4gcHJvcGVydHkgZ2V0cyBzd2l0Y2hlZCB0byB0aGUgb3JpZ2luYWwgcHJvcGVydHkuCi0g
ICAgICAgIE9wR2V0QnlWYWw6OmVtaXQ8T3Bjb2RlU2l6ZTo6V2lkZTMyPigmZ2VuZXJhdG9yLCBi
eXRlY29kZS5tX2RzdCwgYnl0ZWNvZGUubV9iYXNlLCBWaXJ0dWFsUmVnaXN0ZXIocHJvcGVydHlS
ZWdJbmRleCkpOwotCi0gICAgICAgIC8vIDQuIG5vcCBvdXQgdGhlIHJlbWFpbmluZyBieXRlcwot
ICAgICAgICB3aGlsZSAoZ2VuZXJhdG9yLm1fd3JpdGVyLnBvc2l0aW9uKCkgPCBlbmQpCi0gICAg
ICAgICAgICBPcE5vcDo6ZW1pdDxPcGNvZGVTaXplOjpOYXJyb3c+KCZnZW5lcmF0b3IpOwotICAg
IH0KKworICAgIHN0YXRpY19hc3NlcnQoc2l6ZW9mKE9wR2V0QnlWYWwpIDw9IHNpemVvZihPcEdl
dERpcmVjdFBuYW1lKSk7CisgICAgc3RhdGljX2Fzc2VydChzaXplb2YoT3BJbkJ5VmFsKSA8PSBz
aXplb2YoT3BJblN0cnVjdHVyZVByb3BlcnR5KSk7CisKKyAgICBmb3IgKGNvbnN0IGF1dG8mIGlu
c3RUdXBsZSA6IG1fZ2V0SW5zdHMpCisgICAgICAgIHJld3JpdGVPcDxPcEdldERpcmVjdFBuYW1l
LCBPcEdldEJ5VmFsPihnZW5lcmF0b3IsIGluc3RUdXBsZSk7CisKKyAgICBmb3IgKGNvbnN0IGF1
dG8mIGluc3RUdXBsZSA6IG1faW5JbnN0cykKKyAgICAgICAgcmV3cml0ZU9wPE9wSW5TdHJ1Y3R1
cmVQcm9wZXJ0eSwgT3BJbkJ5VmFsPihnZW5lcmF0b3IsIGluc3RUdXBsZSk7CisKICAgICBnZW5l
cmF0b3IubV93cml0ZXIuc2VlayhnZW5lcmF0b3IubV93cml0ZXIuc2l6ZSgpKTsKICAgICBpZiAo
Z2VuZXJhdG9yLm1fbGFzdEluc3RydWN0aW9uLm9mZnNldCgpICsgZ2VuZXJhdG9yLm1fbGFzdElu
c3RydWN0aW9uLT5zaXplKCkgIT0gZ2VuZXJhdG9yLm1fd3JpdGVyLnNpemUoKSkgewogICAgICAg
ICBnZW5lcmF0b3IubV9sYXN0T3Bjb2RlSUQgPSBsYXN0T3Bjb2RlSUQ7CkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRv
ci5oCShyZXZpc2lvbiAyNjIwMzkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBp
bGVyL0J5dGVjb2RlR2VuZXJhdG9yLmgJKHdvcmtpbmcgY29weSkKQEAgLTIzOCw2ICsyMzgsNyBA
QCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgdXNpbmcgQmFzZSA9IEZvckluQ29udGV4dDsKICAg
ICBwdWJsaWM6CiAgICAgICAgIHVzaW5nIEdldEluc3QgPSBzdGQ6OnR1cGxlPHVuc2lnbmVkLCBp
bnQ+OworICAgICAgICB1c2luZyBJbkluc3QgPSBHZXRJbnN0OwogCiAgICAgICAgIFN0cnVjdHVy
ZUZvckluQ29udGV4dChSZWdpc3RlcklEKiBsb2NhbFJlZ2lzdGVyLCBSZWdpc3RlcklEKiBpbmRl
eFJlZ2lzdGVyLCBSZWdpc3RlcklEKiBwcm9wZXJ0eVJlZ2lzdGVyLCBSZWdpc3RlcklEKiBlbnVt
ZXJhdG9yUmVnaXN0ZXIsIHVuc2lnbmVkIGJvZHlCeXRlY29kZVN0YXJ0T2Zmc2V0KQogICAgICAg
ICAgICAgOiBGb3JJbkNvbnRleHQobG9jYWxSZWdpc3RlciwgVHlwZTo6U3RydWN0dXJlRm9ySW4s
IGJvZHlCeXRlY29kZVN0YXJ0T2Zmc2V0KQpAQCAtMjU2LDYgKzI1NywxMSBAQCBuYW1lc3BhY2Ug
SlNDIHsKICAgICAgICAgICAgIG1fZ2V0SW5zdHMuYXBwZW5kKEdldEluc3QgeyBpbnN0SW5kZXgs
IHByb3BlcnR5UmVnSW5kZXggfSk7CiAgICAgICAgIH0KIAorICAgICAgICB2b2lkIGFkZEluSW5z
dCh1bnNpZ25lZCBpbnN0SW5kZXgsIGludCBwcm9wZXJ0eVJlZ0luZGV4KQorICAgICAgICB7Cisg
ICAgICAgICAgICBtX2luSW5zdHMuYXBwZW5kKEluSW5zdCB7IGluc3RJbmRleCwgcHJvcGVydHlS
ZWdJbmRleCB9KTsKKyAgICAgICAgfQorCiAgICAgICAgIHZvaWQgZmluYWxpemUoQnl0ZWNvZGVH
ZW5lcmF0b3ImLCBVbmxpbmtlZENvZGVCbG9ja0dlbmVyYXRvciosIHVuc2lnbmVkIGJvZHlCeXRl
Y29kZUVuZE9mZnNldCk7CiAKICAgICBwcml2YXRlOgpAQCAtMjYzLDYgKzI2OSw3IEBAIG5hbWVz
cGFjZSBKU0MgewogICAgICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gbV9wcm9wZXJ0eVJlZ2lzdGVy
OwogICAgICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gbV9lbnVtZXJhdG9yUmVnaXN0ZXI7CiAgICAg
ICAgIFZlY3RvcjxHZXRJbnN0PiBtX2dldEluc3RzOworICAgICAgICBWZWN0b3I8SW5JbnN0PiBt
X2luSW5zdHM7CiAgICAgfTsKIAogICAgIGNsYXNzIEluZGV4ZWRGb3JJbkNvbnRleHQgOiBwdWJs
aWMgRm9ySW5Db250ZXh0IHsKQEAgLTM4MSw2ICszODgsMTAgQEAgbmFtZXNwYWNlIEpTQyB7CiAg
ICAgICAgIGZyaWVuZCBjbGFzcyBJbmRleGVkRm9ySW5Db250ZXh0OwogICAgICAgICBmcmllbmQg
Y2xhc3MgU3RydWN0dXJlRm9ySW5Db250ZXh0OwogICAgICAgICBmcmllbmQgY2xhc3MgU3RyaWN0
TW9kZVNjb3BlOworCisgICAgICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBPbGRPcFR5cGUsIHR5cGVu
YW1lIE5ld09wVHlwZSwgdHlwZW5hbWUgVHVwbGVUeXBlPgorICAgICAgICBmcmllbmQgdm9pZCBy
ZXdyaXRlT3AoQnl0ZWNvZGVHZW5lcmF0b3ImLCBUdXBsZVR5cGUmKTsKKwogICAgIHB1YmxpYzoK
ICAgICAgICAgdHlwZWRlZiBEZWNsYXJhdGlvblN0YWNrczo6RnVuY3Rpb25TdGFjayBGdW5jdGlv
blN0YWNrOwogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Fic3RyYWN0SW50
ZXJwcmV0ZXJJbmxpbmVzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdBYnN0cmFjdEludGVycHJldGVySW5saW5lcy5oCShyZXZpc2lvbiAyNjIwMzkpCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Fic3RyYWN0SW50ZXJwcmV0ZXJJbmxpbmVzLmgJ
KHdvcmtpbmcgY29weSkKQEAgLTQxMTQsNiArNDExNCw3IEBAIGJvb2wgQWJzdHJhY3RJbnRlcnBy
ZXRlcjxBYnN0cmFjdFN0YXRlVHkKICAgICAgICAgY2xvYmJlcldvcmxkKCk7CiAgICAgICAgIGJy
ZWFrOwogICAgIH0KKyAgICBjYXNlIEluU3RydWN0dXJlUHJvcGVydHk6CiAgICAgY2FzZSBIYXNT
dHJ1Y3R1cmVQcm9wZXJ0eTogewogICAgICAgICBzZXROb25DZWxsVHlwZUZvck5vZGUobm9kZSwg
U3BlY0Jvb2xlYW4pOwogICAgICAgICBjbG9iYmVyV29ybGQoKTsKSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3BwCShyZXZpc2lvbiAyNjIw
MzkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtNzgyNCw2ICs3ODI0LDE1IEBAIHZvaWQgQnl0ZUNvZGVQYXJzZXI6
OnBhcnNlQmxvY2sodW5zaWduZWQKICAgICAgICAgICAgIE5FWFRfT1BDT0RFKG9wX2hhc19zdHJ1
Y3R1cmVfcHJvcGVydHkpOwogICAgICAgICB9CiAKKyAgICAgICAgY2FzZSBvcF9pbl9zdHJ1Y3R1
cmVfcHJvcGVydHk6IHsKKyAgICAgICAgICAgIGF1dG8gYnl0ZWNvZGUgPSBjdXJyZW50SW5zdHJ1
Y3Rpb24tPmFzPE9wSW5TdHJ1Y3R1cmVQcm9wZXJ0eT4oKTsKKyAgICAgICAgICAgIHNldChieXRl
Y29kZS5tX2RzdCwgYWRkVG9HcmFwaChJblN0cnVjdHVyZVByb3BlcnR5LAorICAgICAgICAgICAg
ICAgIGdldChieXRlY29kZS5tX2Jhc2UpLAorICAgICAgICAgICAgICAgIGdldChieXRlY29kZS5t
X3Byb3BlcnR5KSwKKyAgICAgICAgICAgICAgICBnZXQoYnl0ZWNvZGUubV9lbnVtZXJhdG9yKSkp
OworICAgICAgICAgICAgTkVYVF9PUENPREUob3BfaW5fc3RydWN0dXJlX3Byb3BlcnR5KTsKKyAg
ICAgICAgfQorCiAgICAgICAgIGNhc2Ugb3BfaGFzX2luZGV4ZWRfcHJvcGVydHk6IHsKICAgICAg
ICAgICAgIGF1dG8gYnl0ZWNvZGUgPSBjdXJyZW50SW5zdHJ1Y3Rpb24tPmFzPE9wSGFzSW5kZXhl
ZFByb3BlcnR5PigpOwogICAgICAgICAgICAgTm9kZSogYmFzZSA9IGdldChieXRlY29kZS5tX2Jh
c2UpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDYXBhYmlsaXRpZXMuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ2FwYWJpbGl0aWVz
LmNwcAkocmV2aXNpb24gMjYyMDM5KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdD
YXBhYmlsaXRpZXMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNTMsNiArMjUzLDcgQEAgQ2FwYWJp
bGl0eUxldmVsIGNhcGFiaWxpdHlMZXZlbChPcGNvZGVJRAogICAgIGNhc2Ugb3BfZ2V0X2VudW1l
cmFibGVfbGVuZ3RoOgogICAgIGNhc2Ugb3BfaGFzX2dlbmVyaWNfcHJvcGVydHk6CiAgICAgY2Fz
ZSBvcF9oYXNfc3RydWN0dXJlX3Byb3BlcnR5OgorICAgIGNhc2Ugb3BfaW5fc3RydWN0dXJlX3By
b3BlcnR5OgogICAgIGNhc2Ugb3BfaGFzX2luZGV4ZWRfcHJvcGVydHk6CiAgICAgY2FzZSBvcF9n
ZXRfZGlyZWN0X3BuYW1lOgogICAgIGNhc2Ugb3BfZ2V0X3Byb3BlcnR5X2VudW1lcmF0b3I6Cklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Nsb2JiZXJpemUuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Nsb2JiZXJpemUuaAkocmV2aXNpb24g
MjYyMDM5KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDbG9iYmVyaXplLmgJKHdv
cmtpbmcgY29weSkKQEAgLTY5Nyw2ICs2OTcsNyBAQCB2b2lkIGNsb2JiZXJpemUoR3JhcGgmIGdy
YXBoLCBOb2RlKiBub2RlCiAgICAgY2FzZSBUb09iamVjdDoKICAgICBjYXNlIEhhc0dlbmVyaWNQ
cm9wZXJ0eToKICAgICBjYXNlIEhhc1N0cnVjdHVyZVByb3BlcnR5OgorICAgIGNhc2UgSW5TdHJ1
Y3R1cmVQcm9wZXJ0eToKICAgICBjYXNlIEdldFByb3BlcnR5RW51bWVyYXRvcjoKICAgICBjYXNl
IEdldERpcmVjdFBuYW1lOgogICAgIGNhc2UgSW5zdGFuY2VPZkN1c3RvbToKSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRG9lc0dDLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR0RvZXNHQy5jcHAJKHJldmlzaW9uIDI2MjAzOSkKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRG9lc0dDLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
Mjk3LDYgKzI5Nyw3IEBAIGJvb2wgZG9lc0dDKEdyYXBoJiBncmFwaCwgTm9kZSogbm9kZSkKICAg
ICBjYXNlIEhhc0luZGV4ZWRQcm9wZXJ0eToKICAgICBjYXNlIEhhc093blByb3BlcnR5OgogICAg
IGNhc2UgSGFzU3RydWN0dXJlUHJvcGVydHk6CisgICAgY2FzZSBJblN0cnVjdHVyZVByb3BlcnR5
OgogICAgIGNhc2UgSW5CeUlkOgogICAgIGNhc2UgSW5CeVZhbDoKICAgICBjYXNlIEluc3RhbmNl
T2Y6CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0ZpeHVwUGhhc2UuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRml4dXBQaGFzZS5jcHAJ
KHJldmlzaW9uIDI2MjAzOSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRml4dXBQ
aGFzZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTIxNzksNiArMjE3OSwxMiBAQCBwcml2YXRlOgog
ICAgICAgICAgICAgZml4RWRnZTxLbm93bkNlbGxVc2U+KG5vZGUtPmNoaWxkMygpKTsKICAgICAg
ICAgICAgIGJyZWFrOwogICAgICAgICB9CisgICAgICAgIGNhc2UgSW5TdHJ1Y3R1cmVQcm9wZXJ0
eTogeworICAgICAgICAgICAgZml4RWRnZTxDZWxsVXNlPihub2RlLT5jaGlsZDEoKSk7CisgICAg
ICAgICAgICBmaXhFZGdlPFN0cmluZ1VzZT4obm9kZS0+Y2hpbGQyKCkpOworICAgICAgICAgICAg
Zml4RWRnZTxLbm93bkNlbGxVc2U+KG5vZGUtPmNoaWxkMygpKTsKKyAgICAgICAgICAgIGJyZWFr
OworICAgICAgICB9CiAgICAgICAgIGNhc2UgSGFzSW5kZXhlZFByb3BlcnR5OiB7CiAgICAgICAg
ICAgICBub2RlLT5zZXRBcnJheU1vZGUoCiAgICAgICAgICAgICAgICAgbm9kZS0+YXJyYXlNb2Rl
KCkucmVmaW5lKApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlVHlwZS5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZVR5cGUuaAko
cmV2aXNpb24gMjYyMDM5KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlVHlw
ZS5oCSh3b3JraW5nIGNvcHkpCkBAIC00OTAsNiArNDkwLDcgQEAgbmFtZXNwYWNlIEpTQyB7IG5h
bWVzcGFjZSBERkcgewogICAgIC8qIE11c3QgZ2VuZXJhdGUgYmVjYXVzZSBvZiBQcm94aWVzIG9u
IHRoZSBwcm90b3R5cGUgY2hhaW4gKi8gXAogICAgIG1hY3JvKEhhc0luZGV4ZWRQcm9wZXJ0eSwg
Tm9kZU11c3RHZW5lcmF0ZSB8IE5vZGVSZXN1bHRCb29sZWFuIHwgTm9kZUhhc1ZhckFyZ3MpIFwK
ICAgICBtYWNybyhIYXNTdHJ1Y3R1cmVQcm9wZXJ0eSwgTm9kZVJlc3VsdEJvb2xlYW4pIFwKKyAg
ICBtYWNybyhJblN0cnVjdHVyZVByb3BlcnR5LCBOb2RlTXVzdEdlbmVyYXRlIHwgTm9kZVJlc3Vs
dEJvb2xlYW4pIFwKICAgICBtYWNybyhIYXNHZW5lcmljUHJvcGVydHksIE5vZGVSZXN1bHRCb29s
ZWFuKSBcCiAgICAgbWFjcm8oR2V0RGlyZWN0UG5hbWUsIE5vZGVNdXN0R2VuZXJhdGUgfCBOb2Rl
SGFzVmFyQXJncyB8IE5vZGVSZXN1bHRKUykgXAogICAgIG1hY3JvKEdldFByb3BlcnR5RW51bWVy
YXRvciwgTm9kZU11c3RHZW5lcmF0ZSB8IE5vZGVSZXN1bHRKUykgXApJbmRleDogU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdPcGVyYXRpb25zLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR09wZXJhdGlvbnMuY3BwCShyZXZpc2lvbiAyNjIwMzkpCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09wZXJhdGlvbnMuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC0yMjc0LDYgKzIyNzQsMTUgQEAgRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBv
cGVyYXRpb25IYQogICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwgSlNWYWx1ZTo6ZW5jb2Rl
KGpzQm9vbGVhbihiYXNlLT5oYXNQcm9wZXJ0eUdlbmVyaWMoZ2xvYmFsT2JqZWN0LCBwcm9wZXJ0
eU5hbWUsIFByb3BlcnR5U2xvdDo6SW50ZXJuYWxNZXRob2RUeXBlOjpHZXRPd25Qcm9wZXJ0eSkp
KSk7CiB9CiAKK0VuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uSW5TdHJ1Y3R1
cmVQcm9wZXJ0eShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU0NlbGwqIGJhc2UsIEpT
Q2VsbCogcHJvcGVydHkpCit7CisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOworICAg
IENhbGxGcmFtZSogY2FsbEZyYW1lID0gREVDTEFSRV9DQUxMX0ZSQU1FKHZtKTsKKyAgICBKSVRP
cGVyYXRpb25Qcm9sb2d1ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0sIGNhbGxGcmFtZSk7CisK
KyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzQm9vbGVhbihDb21tb25TbG93UGF0aHM6Om9w
SW5CeVZhbChnbG9iYWxPYmplY3QsIGJhc2UsIHByb3BlcnR5KSkpOworfQorCiBzaXplX3QgSklU
X09QRVJBVElPTiBvcGVyYXRpb25IYXNJbmRleGVkUHJvcGVydHlCeUludChKU0dsb2JhbE9iamVj
dCogZ2xvYmFsT2JqZWN0LCBKU0NlbGwqIGJhc2VDZWxsLCBpbnQzMl90IHN1YnNjcmlwdCwgaW50
MzJfdCBpbnRlcm5hbE1ldGhvZFR5cGUpCiB7CiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52
bSgpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPcGVyYXRpb25zLmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPcGVyYXRpb25zLmgJKHJl
dmlzaW9uIDI2MjAzOSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT3BlcmF0aW9u
cy5oCSh3b3JraW5nIGNvcHkpCkBAIC05OSw2ICs5OSw3IEBAIEVuY29kZWRKU1ZhbHVlIEpJVF9P
UEVSQVRJT04gb3BlcmF0aW9uR2UKIEVuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0
aW9uR2V0UHJvdG90eXBlT2YoSlNHbG9iYWxPYmplY3QqLCBFbmNvZGVkSlNWYWx1ZSkgV1RGX0lO
VEVSTkFMOwogRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25HZXRQcm90b3R5
cGVPZk9iamVjdChKU0dsb2JhbE9iamVjdCosIEpTT2JqZWN0KikgV1RGX0lOVEVSTkFMOwogRW5j
b2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25IYXNHZW5lcmljUHJvcGVydHkoSlNH
bG9iYWxPYmplY3QqLCBFbmNvZGVkSlNWYWx1ZSwgSlNDZWxsKik7CitFbmNvZGVkSlNWYWx1ZSBK
SVRfT1BFUkFUSU9OIG9wZXJhdGlvbkluU3RydWN0dXJlUHJvcGVydHkoSlNHbG9iYWxPYmplY3Qq
LCBKU0NlbGwqLCBKU0NlbGwqKTsKIHNpemVfdCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkhhc0lu
ZGV4ZWRQcm9wZXJ0eUJ5SW50KEpTR2xvYmFsT2JqZWN0KiwgSlNDZWxsKiwgaW50MzJfdCwgaW50
MzJfdCk7CiBKU0NlbGwqIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uR2V0UHJvcGVydHlFbnVtZXJh
dG9yKEpTR2xvYmFsT2JqZWN0KiwgRW5jb2RlZEpTVmFsdWUpOwogSlNDZWxsKiBKSVRfT1BFUkFU
SU9OIG9wZXJhdGlvbkdldFByb3BlcnR5RW51bWVyYXRvckNlbGwoSlNHbG9iYWxPYmplY3QqLCBK
U0NlbGwqKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUHJlZGljdGlvblBy
b3BhZ2F0aW9uUGhhc2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHUHJlZGljdGlvblByb3BhZ2F0aW9uUGhhc2UuY3BwCShyZXZpc2lvbiAyNjIwMzkpCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1ByZWRpY3Rpb25Qcm9wYWdhdGlvblBoYXNl
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTIwNiw2ICsxMjA2LDcgQEAgcHJpdmF0ZToKICAgICAg
ICAgfQogICAgICAgICBjYXNlIEhhc0dlbmVyaWNQcm9wZXJ0eToKICAgICAgICAgY2FzZSBIYXNT
dHJ1Y3R1cmVQcm9wZXJ0eToKKyAgICAgICAgY2FzZSBJblN0cnVjdHVyZVByb3BlcnR5OgogICAg
ICAgICBjYXNlIEhhc0luZGV4ZWRQcm9wZXJ0eTogewogICAgICAgICAgICAgc2V0UHJlZGljdGlv
bihTcGVjQm9vbGVhbik7CiAgICAgICAgICAgICBicmVhazsKSW5kZXg6IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHU2FmZVRvRXhlY3V0ZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHU2FmZVRvRXhlY3V0ZS5oCShyZXZpc2lvbiAyNjIwMzkpCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NhZmVUb0V4ZWN1dGUuaAkod29ya2luZyBjb3B5
KQpAQCAtNjE4LDYgKzYxOCw3IEBAIGJvb2wgc2FmZVRvRXhlY3V0ZShBYnN0cmFjdFN0YXRlVHlw
ZSYgc3QKICAgICBjYXNlIEdldEVudW1lcmFibGVMZW5ndGg6CiAgICAgY2FzZSBIYXNHZW5lcmlj
UHJvcGVydHk6CiAgICAgY2FzZSBIYXNTdHJ1Y3R1cmVQcm9wZXJ0eToKKyAgICBjYXNlIEluU3Ry
dWN0dXJlUHJvcGVydHk6CiAgICAgY2FzZSBHZXREaXJlY3RQbmFtZToKICAgICBjYXNlIEdldFBy
b3BlcnR5RW51bWVyYXRvcjoKICAgICBjYXNlIFBoYW50b21OZXdPYmplY3Q6CkluZGV4OiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUMzJfNjQuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQzMl82NC5j
cHAJKHJldmlzaW9uIDI2MjAzOSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3Bl
Y3VsYXRpdmVKSVQzMl82NC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQwNTcsNiArNDA1NywxMCBA
QCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlKE5vZGUqIG5vZGUpCiAgICAgICAgIGNvbXBp
bGVIYXNTdHJ1Y3R1cmVQcm9wZXJ0eShub2RlKTsKICAgICAgICAgYnJlYWs7CiAgICAgfQorICAg
IGNhc2UgSW5TdHJ1Y3R1cmVQcm9wZXJ0eTogeworICAgICAgICBjb21waWxlSW5TdHJ1Y3R1cmVQ
cm9wZXJ0eShub2RlKTsKKyAgICAgICAgYnJlYWs7CisgICAgfQogICAgIGNhc2UgSGFzSW5kZXhl
ZFByb3BlcnR5OiB7CiAgICAgICAgIGNvbXBpbGVIYXNJbmRleGVkUHJvcGVydHkobm9kZSk7CiAg
ICAgICAgIGJyZWFrOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxh
dGl2ZUpJVDY0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R1NwZWN1bGF0aXZlSklUNjQuY3BwCShyZXZpc2lvbiAyNjIwMzkpCisrKyBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00
OTg4LDYgKzQ5ODgsMTAgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShOb2RlKiBub2Rl
KQogICAgICAgICBjb21waWxlSGFzU3RydWN0dXJlUHJvcGVydHkobm9kZSk7CiAgICAgICAgIGJy
ZWFrOwogICAgIH0KKyAgICBjYXNlIEluU3RydWN0dXJlUHJvcGVydHk6IHsKKyAgICAgICAgY29t
cGlsZUluU3RydWN0dXJlUHJvcGVydHkobm9kZSk7CisgICAgICAgIGJyZWFrOworICAgIH0KICAg
ICBjYXNlIEhhc0luZGV4ZWRQcm9wZXJ0eTogewogICAgICAgICBjb21waWxlSGFzSW5kZXhlZFBy
b3BlcnR5KG5vZGUpOwogICAgICAgICBicmVhazsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwCShyZXZpc2lvbiAyNjIwMzkpCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmNwcAkod29ya2luZyBj
b3B5KQpAQCAtMTI4MjYsNiArMTI4MjYsMzMgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGls
ZUhhc1N0cnVjdHVyZQogICAgIGJsZXNzZWRCb29sZWFuUmVzdWx0KHJlc3VsdFJlZ3MucGF5bG9h
ZEdQUigpLCBub2RlKTsKIH0KIAordm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUluU3RydWN0
dXJlUHJvcGVydHkoTm9kZSogbm9kZSkKK3sKKyAgICBTcGVjdWxhdGVDZWxsT3BlcmFuZCBiYXNl
KHRoaXMsIG5vZGUtPmNoaWxkMSgpKTsKKyAgICBTcGVjdWxhdGVDZWxsT3BlcmFuZCBwcm9wZXJ0
eSh0aGlzLCBub2RlLT5jaGlsZDIoKSk7CisgICAgU3BlY3VsYXRlQ2VsbE9wZXJhbmQgZW51bWVy
YXRvcih0aGlzLCBub2RlLT5jaGlsZDMoKSk7CisgICAgSlNWYWx1ZVJlZ3NUZW1wb3JhcnkgcmVz
dWx0KHRoaXMpOworCisgICAgR1BSUmVnIGJhc2VHUFIgPSBiYXNlLmdwcigpOworICAgIEdQUlJl
ZyBwcm9wZXJ0eUdQUiA9IHByb3BlcnR5LmdwcigpOworICAgIEpTVmFsdWVSZWdzIHJlc3VsdFJl
Z3MgPSByZXN1bHQucmVncygpOworCisgICAgQ0NhbGxIZWxwZXJzOjpKdW1wTGlzdCB3cm9uZ1N0
cnVjdHVyZTsKKworICAgIG1faml0LmxvYWQzMihNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhiYXNl
R1BSLCBKU0NlbGw6OnN0cnVjdHVyZUlET2Zmc2V0KCkpLCByZXN1bHRSZWdzLnBheWxvYWRHUFIo
KSk7CisgICAgd3JvbmdTdHJ1Y3R1cmUuYXBwZW5kKG1faml0LmJyYW5jaDMyKE1hY3JvQXNzZW1i
bGVyOjpOb3RFcXVhbCwKKyAgICAgICAgcmVzdWx0UmVncy5wYXlsb2FkR1BSKCksCisgICAgICAg
IE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKGVudW1lcmF0b3IuZ3ByKCksIEpTUHJvcGVydHlOYW1l
RW51bWVyYXRvcjo6Y2FjaGVkU3RydWN0dXJlSURPZmZzZXQoKSkpKTsKKworICAgIG1vdmVUcnVl
VG8ocmVzdWx0UmVncy5wYXlsb2FkR1BSKCkpOworICAgIE1hY3JvQXNzZW1ibGVyOjpKdW1wIGRv
bmUgPSBtX2ppdC5qdW1wKCk7CisKKyAgICBkb25lLmxpbmsoJm1faml0KTsKKworICAgIGFkZFNs
b3dQYXRoR2VuZXJhdG9yKHNsb3dQYXRoQ2FsbCh3cm9uZ1N0cnVjdHVyZSwgdGhpcywgb3BlcmF0
aW9uSW5TdHJ1Y3R1cmVQcm9wZXJ0eSwgcmVzdWx0UmVncywgVHJ1c3RlZEltbVB0cjo6d2Vha1Bv
aW50ZXIobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFu
dGljKSksIGJhc2VHUFIsIHByb3BlcnR5R1BSKSk7CisgICAgYmxlc3NlZEJvb2xlYW5SZXN1bHQo
cmVzdWx0UmVncy5wYXlsb2FkR1BSKCksIG5vZGUpOworfQorCiB2b2lkIFNwZWN1bGF0aXZlSklU
Ojpjb21waWxlR2V0UHJvcGVydHlFbnVtZXJhdG9yKE5vZGUqIG5vZGUpCiB7CiAgICAgaWYgKG5v
ZGUtPmNoaWxkMSgpLnVzZUtpbmQoKSA9PSBDZWxsVXNlKSB7CkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5oCShyZXZpc2lvbiAyNjIwMzkpCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmgJKHdvcmtpbmcg
Y29weSkKQEAgLTE0NDcsNiArMTQ0Nyw3IEBAIHB1YmxpYzoKICAgICB2b2lkIGNvbXBpbGVQdXRC
eUlkRGlyZWN0KE5vZGUqKTsKICAgICB2b2lkIGNvbXBpbGVQdXRCeUlkV2l0aFRoaXMoTm9kZSop
OwogICAgIHZvaWQgY29tcGlsZUhhc1N0cnVjdHVyZVByb3BlcnR5KE5vZGUqKTsKKyAgICB2b2lk
IGNvbXBpbGVJblN0cnVjdHVyZVByb3BlcnR5KE5vZGUqKTsKICAgICB2b2lkIGNvbXBpbGVHZXRE
aXJlY3RQbmFtZShOb2RlKik7CiAgICAgdm9pZCBjb21waWxlR2V0UHJvcGVydHlFbnVtZXJhdG9y
KE5vZGUqKTsKICAgICB2b2lkIGNvbXBpbGVHZXRFbnVtZXJhdG9yUG5hbWUoTm9kZSopOwpJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExDYXBhYmlsaXRpZXMuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMQ2FwYWJpbGl0aWVzLmNwcAkocmV2
aXNpb24gMjYyMDM5KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExDYXBhYmlsaXRp
ZXMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yODAsNiArMjgwLDcgQEAgaW5saW5lIENhcGFiaWxp
dHlMZXZlbCBjYW5Db21waWxlKE5vZGUqIAogICAgIGNhc2UgQm9vbGVhblRvTnVtYmVyOgogICAg
IGNhc2UgSGFzR2VuZXJpY1Byb3BlcnR5OgogICAgIGNhc2UgSGFzU3RydWN0dXJlUHJvcGVydHk6
CisgICAgY2FzZSBJblN0cnVjdHVyZVByb3BlcnR5OgogICAgIGNhc2UgSGFzSW5kZXhlZFByb3Bl
cnR5OgogICAgIGNhc2UgR2V0RGlyZWN0UG5hbWU6CiAgICAgY2FzZSBHZXRFbnVtZXJhYmxlTGVu
Z3RoOgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExMb3dlckRGR1RvQjMuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTG93ZXJERkdUb0Iz
LmNwcAkocmV2aXNpb24gMjYyMDM5KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExM
b3dlckRGR1RvQjMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNDc3LDYgKzE0NzcsOSBAQCBwcml2
YXRlOgogICAgICAgICBjYXNlIEhhc1N0cnVjdHVyZVByb3BlcnR5OgogICAgICAgICAgICAgY29t
cGlsZUhhc1N0cnVjdHVyZVByb3BlcnR5KCk7CiAgICAgICAgICAgICBicmVhazsKKyAgICAgICAg
Y2FzZSBJblN0cnVjdHVyZVByb3BlcnR5OgorICAgICAgICAgICAgY29tcGlsZUluU3RydWN0dXJl
UHJvcGVydHkoKTsKKyAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIEdldERpcmVjdFBu
YW1lOgogICAgICAgICAgICAgY29tcGlsZUdldERpcmVjdFBuYW1lKCk7CiAgICAgICAgICAgICBi
cmVhazsKQEAgLTEyMjQxLDM1ICsxMjI0NCw1MSBAQCBwcml2YXRlOgogICAgICAgICBzZXRKU1Zh
bHVlKHZtQ2FsbChJbnQ2NCwgb3BlcmF0aW9uSGFzR2VuZXJpY1Byb3BlcnR5LCB3ZWFrUG9pbnRl
cihnbG9iYWxPYmplY3QpLCBiYXNlLCBwcm9wZXJ0eSkpOwogICAgIH0KIAotICAgIHZvaWQgY29t
cGlsZUhhc1N0cnVjdHVyZVByb3BlcnR5KCkKKyAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgU2xvd1Bh
dGhDYWxsPgorICAgIHZvaWQgY29tcGlsZUhhc1N0cnVjdHVyZVByb3BlcnR5SW1wbChMVmFsdWUg
YmFzZSwgU2xvd1BhdGhDYWxsIHNsb3dQYXRoQ2FsbCkKICAgICB7CiAgICAgICAgIEpTR2xvYmFs
T2JqZWN0KiBnbG9iYWxPYmplY3QgPSBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihtX25vZGUtPm9y
aWdpbi5zZW1hbnRpYyk7Ci0gICAgICAgIExWYWx1ZSBiYXNlID0gbG93SlNWYWx1ZShtX25vZGUt
PmNoaWxkMSgpKTsKICAgICAgICAgTFZhbHVlIHByb3BlcnR5ID0gbG93U3RyaW5nKG1fbm9kZS0+
Y2hpbGQyKCkpOwogICAgICAgICBMVmFsdWUgZW51bWVyYXRvciA9IGxvd0NlbGwobV9ub2RlLT5j
aGlsZDMoKSk7CiAKKyAgICAgICAgTEJhc2ljQmxvY2sgaXNDZWxsQ2FzZSA9IG1fb3V0Lm5ld0Js
b2NrKCk7CiAgICAgICAgIExCYXNpY0Jsb2NrIGNvcnJlY3RTdHJ1Y3R1cmUgPSBtX291dC5uZXdC
bG9jaygpOwotICAgICAgICBMQmFzaWNCbG9jayB3cm9uZ1N0cnVjdHVyZSA9IG1fb3V0Lm5ld0Js
b2NrKCk7CisgICAgICAgIExCYXNpY0Jsb2NrIHNsb3dQYXRoID0gbV9vdXQubmV3QmxvY2soKTsK
ICAgICAgICAgTEJhc2ljQmxvY2sgY29udGludWF0aW9uID0gbV9vdXQubmV3QmxvY2soKTsKIAor
ICAgICAgICBtX291dC5icmFuY2goaXNDZWxsKGJhc2UsIHByb3ZlblR5cGUobV9ub2RlLT5jaGls
ZDEoKSkpLAorICAgICAgICAgICAgdXN1YWxseShpc0NlbGxDYXNlKSwgcmFyZWx5KHNsb3dQYXRo
KSk7CisKKyAgICAgICAgTEJhc2ljQmxvY2sgbGFzdE5leHQgPSBtX291dC5hcHBlbmRUbyhpc0Nl
bGxDYXNlLCBjb3JyZWN0U3RydWN0dXJlKTsKKwogICAgICAgICBtX291dC5icmFuY2gobV9vdXQu
bm90RXF1YWwoCiAgICAgICAgICAgICBtX291dC5sb2FkMzIoYmFzZSwgbV9oZWFwcy5KU0NlbGxf
c3RydWN0dXJlSUQpLAogICAgICAgICAgICAgbV9vdXQubG9hZDMyKGVudW1lcmF0b3IsIG1faGVh
cHMuSlNQcm9wZXJ0eU5hbWVFbnVtZXJhdG9yX2NhY2hlZFN0cnVjdHVyZUlEKSksCi0gICAgICAg
ICAgICByYXJlbHkod3JvbmdTdHJ1Y3R1cmUpLCB1c3VhbGx5KGNvcnJlY3RTdHJ1Y3R1cmUpKTsK
KyAgICAgICAgICAgIHJhcmVseShzbG93UGF0aCksIHVzdWFsbHkoY29ycmVjdFN0cnVjdHVyZSkp
OwogCi0gICAgICAgIExCYXNpY0Jsb2NrIGxhc3ROZXh0ID0gbV9vdXQuYXBwZW5kVG8oY29ycmVj
dFN0cnVjdHVyZSwgd3JvbmdTdHJ1Y3R1cmUpOworICAgICAgICBtX291dC5hcHBlbmRUbyhjb3Jy
ZWN0U3RydWN0dXJlLCBzbG93UGF0aCk7CiAgICAgICAgIFZhbHVlRnJvbUJsb2NrIGNvcnJlY3RT
dHJ1Y3R1cmVSZXN1bHQgPSBtX291dC5hbmNob3IobV9vdXQuYm9vbGVhblRydWUpOwogICAgICAg
ICBtX291dC5qdW1wKGNvbnRpbnVhdGlvbik7CiAKLSAgICAgICAgbV9vdXQuYXBwZW5kVG8od3Jv
bmdTdHJ1Y3R1cmUsIGNvbnRpbnVhdGlvbik7Ci0gICAgICAgIFZhbHVlRnJvbUJsb2NrIHdyb25n
U3RydWN0dXJlUmVzdWx0ID0gbV9vdXQuYW5jaG9yKAorICAgICAgICBtX291dC5hcHBlbmRUbyhz
bG93UGF0aCwgY29udGludWF0aW9uKTsKKyAgICAgICAgVmFsdWVGcm9tQmxvY2sgc2xvd1BhdGhS
ZXN1bHQgPSBtX291dC5hbmNob3IoCiAgICAgICAgICAgICBtX291dC5lcXVhbCgKICAgICAgICAg
ICAgICAgICBtX291dC5jb25zdEludDY0KEpTVmFsdWU6OmVuY29kZShqc0Jvb2xlYW4odHJ1ZSkp
KSwgCi0gICAgICAgICAgICAgICAgdm1DYWxsKEludDY0LCBvcGVyYXRpb25IYXNHZW5lcmljUHJv
cGVydHksIHdlYWtQb2ludGVyKGdsb2JhbE9iamVjdCksIGJhc2UsIHByb3BlcnR5KSkpOworICAg
ICAgICAgICAgICAgIHZtQ2FsbChJbnQ2NCwgc2xvd1BhdGhDYWxsLCB3ZWFrUG9pbnRlcihnbG9i
YWxPYmplY3QpLCBiYXNlLCBwcm9wZXJ0eSkpKTsKICAgICAgICAgbV9vdXQuanVtcChjb250aW51
YXRpb24pOwogCiAgICAgICAgIG1fb3V0LmFwcGVuZFRvKGNvbnRpbnVhdGlvbiwgbGFzdE5leHQp
OwotICAgICAgICBzZXRCb29sZWFuKG1fb3V0LnBoaShJbnQzMiwgY29ycmVjdFN0cnVjdHVyZVJl
c3VsdCwgd3JvbmdTdHJ1Y3R1cmVSZXN1bHQpKTsKKyAgICAgICAgc2V0Qm9vbGVhbihtX291dC5w
aGkoSW50MzIsIGNvcnJlY3RTdHJ1Y3R1cmVSZXN1bHQsIHNsb3dQYXRoUmVzdWx0KSk7CisgICAg
fQorCisgICAgdm9pZCBjb21waWxlSGFzU3RydWN0dXJlUHJvcGVydHkoKQorICAgIHsKKyAgICAg
ICAgY29tcGlsZUhhc1N0cnVjdHVyZVByb3BlcnR5SW1wbChsb3dKU1ZhbHVlKG1fbm9kZS0+Y2hp
bGQxKCkpLCBvcGVyYXRpb25IYXNHZW5lcmljUHJvcGVydHkpOworICAgIH0KKworICAgIHZvaWQg
Y29tcGlsZUluU3RydWN0dXJlUHJvcGVydHkoKQorICAgIHsKKyAgICAgICAgY29tcGlsZUhhc1N0
cnVjdHVyZVByb3BlcnR5SW1wbChsb3dDZWxsKG1fbm9kZS0+Y2hpbGQxKCkpLCBvcGVyYXRpb25J
blN0cnVjdHVyZVByb3BlcnR5KTsKICAgICB9CiAKICAgICB2b2lkIGNvbXBpbGVHZXREaXJlY3RQ
bmFtZSgpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuY3BwCShyZXZpc2lvbiAyNjIwMzkp
CisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTQ2MCw2ICs0NjAsNyBAQCB2b2lkIEpJVDo6cHJpdmF0ZUNvbXBpbGVNYWluUGFzcygpCiAgICAg
ICAgIERFRklORV9PUChvcF9wdXRfdG9fYXJndW1lbnRzKQogCiAgICAgICAgIERFRklORV9PUChv
cF9oYXNfc3RydWN0dXJlX3Byb3BlcnR5KQorICAgICAgICBERUZJTkVfT1Aob3BfaW5fc3RydWN0
dXJlX3Byb3BlcnR5KQogICAgICAgICBERUZJTkVfT1Aob3BfaGFzX2luZGV4ZWRfcHJvcGVydHkp
CiAgICAgICAgIERFRklORV9PUChvcF9nZXRfZGlyZWN0X3BuYW1lKQogICAgICAgICBERUZJTkVf
T1Aob3BfZW51bWVyYXRvcl9zdHJ1Y3R1cmVfcG5hbWUpCkBAIC02MTYsNiArNjE3LDcgQEAgdm9p
ZCBKSVQ6OnByaXZhdGVDb21waWxlU2xvd0Nhc2VzKCkKICAgICAgICAgREVGSU5FX1NMT1dDQVNF
X1NMT1dfT1AobnN0cmljdGVxKQogICAgICAgICBERUZJTkVfU0xPV0NBU0VfU0xPV19PUChnZXRf
ZGlyZWN0X3BuYW1lKQogICAgICAgICBERUZJTkVfU0xPV0NBU0VfU0xPV19PUChoYXNfc3RydWN0
dXJlX3Byb3BlcnR5KQorICAgICAgICBERUZJTkVfU0xPV0NBU0VfU0xPV19PUChpbl9zdHJ1Y3R1
cmVfcHJvcGVydHkpCiAgICAgICAgIERFRklORV9TTE9XQ0FTRV9TTE9XX09QKHJlc29sdmVfc2Nv
cGUpCiAgICAgICAgIERFRklORV9TTE9XQ0FTRV9TTE9XX09QKGNoZWNrX3RkeikKICAgICAgICAg
REVGSU5FX1NMT1dDQVNFX1NMT1dfT1AodG9fcHJvcGVydHlfa2V5KQpJbmRleDogU291cmNlL0ph
dmFTY3JpcHRDb3JlL2ppdC9KSVQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvaml0L0pJVC5oCShyZXZpc2lvbiAyNjIwMzkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
aml0L0pJVC5oCSh3b3JraW5nIGNvcHkpCkBAIC02MTksNiArNjE5LDcgQEAgbmFtZXNwYWNlIEpT
QyB7CiAgICAgICAgIHZvaWQgZW1pdF9vcF91bnNpZ25lZChjb25zdCBJbnN0cnVjdGlvbiopOwog
ICAgICAgICB2b2lkIGVtaXRfb3BfdXJzaGlmdChjb25zdCBJbnN0cnVjdGlvbiopOwogICAgICAg
ICB2b2lkIGVtaXRfb3BfaGFzX3N0cnVjdHVyZV9wcm9wZXJ0eShjb25zdCBJbnN0cnVjdGlvbiop
OworICAgICAgICB2b2lkIGVtaXRfb3BfaW5fc3RydWN0dXJlX3Byb3BlcnR5KGNvbnN0IEluc3Ry
dWN0aW9uKik7CiAgICAgICAgIHZvaWQgZW1pdF9vcF9oYXNfaW5kZXhlZF9wcm9wZXJ0eShjb25z
dCBJbnN0cnVjdGlvbiopOwogICAgICAgICB2b2lkIGVtaXRfb3BfZ2V0X2RpcmVjdF9wbmFtZShj
b25zdCBJbnN0cnVjdGlvbiopOwogICAgICAgICB2b2lkIGVtaXRfb3BfZW51bWVyYXRvcl9zdHJ1
Y3R1cmVfcG5hbWUoY29uc3QgSW5zdHJ1Y3Rpb24qKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9qaXQvSklUT3Bjb2RlczMyXzY0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvaml0L0pJVE9wY29kZXMzMl82NC5jcHAJKHJldmlzaW9uIDI2MjAzOSkKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3Bjb2RlczMyXzY0LmNwcAkod29ya2luZyBjb3B5
KQpAQCAtMTE1MCw2ICsxMTUwLDI1IEBAIHZvaWQgSklUOjplbWl0X29wX2hhc19zdHJ1Y3R1cmVf
cHJvcGVydHkKICAgICBlbWl0U3RvcmVCb29sKGRzdCwgcmVnVDApOwogfQogCit2b2lkIEpJVDo6
ZW1pdF9vcF9pbl9zdHJ1Y3R1cmVfcHJvcGVydHkoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJ
bnN0cnVjdGlvbikKK3sKKyAgICBhdXRvIGJ5dGVjb2RlID0gY3VycmVudEluc3RydWN0aW9uLT5h
czxPcEhhc1N0cnVjdHVyZVByb3BlcnR5PigpOworICAgIFZpcnR1YWxSZWdpc3RlciBkc3QgPSBi
eXRlY29kZS5tX2RzdDsKKyAgICBWaXJ0dWFsUmVnaXN0ZXIgYmFzZSA9IGJ5dGVjb2RlLm1fYmFz
ZTsKKyAgICBWaXJ0dWFsUmVnaXN0ZXIgZW51bWVyYXRvciA9IGJ5dGVjb2RlLm1fZW51bWVyYXRv
cjsKKworICAgIGVtaXRMb2FkUGF5bG9hZChiYXNlLCByZWdUMCk7CisgICAgZW1pdEp1bXBTbG93
Q2FzZUlmTm90SlNDZWxsKGJhc2UpOworCisgICAgZW1pdExvYWRQYXlsb2FkKGVudW1lcmF0b3Is
IHJlZ1QxKTsKKworICAgIGxvYWQzMihBZGRyZXNzKHJlZ1QwLCBKU0NlbGw6OnN0cnVjdHVyZUlE
T2Zmc2V0KCkpLCByZWdUMCk7CisgICAgYWRkU2xvd0Nhc2UoYnJhbmNoMzIoTm90RXF1YWwsIHJl
Z1QwLCBBZGRyZXNzKHJlZ1QxLCBKU1Byb3BlcnR5TmFtZUVudW1lcmF0b3I6OmNhY2hlZFN0cnVj
dHVyZUlET2Zmc2V0KCkpKSk7CisgICAgCisgICAgbW92ZShUcnVzdGVkSW1tMzIoMSksIHJlZ1Qw
KTsKKyAgICBlbWl0U3RvcmVCb29sKGRzdCwgcmVnVDApOworfQorCiB2b2lkIEpJVDo6cHJpdmF0
ZUNvbXBpbGVIYXNJbmRleGVkUHJvcGVydHkoQnlWYWxJbmZvKiBieVZhbEluZm8sIFJldHVybkFk
ZHJlc3NQdHIgcmV0dXJuQWRkcmVzcywgSklUQXJyYXlNb2RlIGFycmF5TW9kZSkKIHsKICAgICBj
b25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uID0gbV9jb2RlQmxvY2stPmluc3Ry
dWN0aW9ucygpLmF0KGJ5VmFsSW5mby0+Ynl0ZWNvZGVJbmRleCkucHRyKCk7CkluZGV4OiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wY29kZXMuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3Bjb2Rlcy5jcHAJKHJldmlzaW9uIDI2MjAzOSkKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3Bjb2Rlcy5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTEzNzIsNiArMTM3MiwyNCBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9oYXNfc3RydWN0dXJlX3By
b3BlcnR5CiAgICAgZW1pdFB1dFZpcnR1YWxSZWdpc3Rlcihkc3QpOwogfQogCit2b2lkIEpJVDo6
ZW1pdF9vcF9pbl9zdHJ1Y3R1cmVfcHJvcGVydHkoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJ
bnN0cnVjdGlvbikKK3sKKyAgICBhdXRvIGJ5dGVjb2RlID0gY3VycmVudEluc3RydWN0aW9uLT5h
czxPcEhhc1N0cnVjdHVyZVByb3BlcnR5PigpOworICAgIFZpcnR1YWxSZWdpc3RlciBkc3QgPSBi
eXRlY29kZS5tX2RzdDsKKyAgICBWaXJ0dWFsUmVnaXN0ZXIgYmFzZSA9IGJ5dGVjb2RlLm1fYmFz
ZTsKKyAgICBWaXJ0dWFsUmVnaXN0ZXIgZW51bWVyYXRvciA9IGJ5dGVjb2RlLm1fZW51bWVyYXRv
cjsKKworICAgIGVtaXRHZXRWaXJ0dWFsUmVnaXN0ZXIoYmFzZSwgcmVnVDApOworICAgIGVtaXRH
ZXRWaXJ0dWFsUmVnaXN0ZXIoZW51bWVyYXRvciwgcmVnVDEpOworICAgIGVtaXRKdW1wU2xvd0Nh
c2VJZk5vdEpTQ2VsbChyZWdUMCwgYmFzZSk7CisKKyAgICBsb2FkMzIoQWRkcmVzcyhyZWdUMCwg
SlNDZWxsOjpzdHJ1Y3R1cmVJRE9mZnNldCgpKSwgcmVnVDApOworICAgIGFkZFNsb3dDYXNlKGJy
YW5jaDMyKE5vdEVxdWFsLCByZWdUMCwgQWRkcmVzcyhyZWdUMSwgSlNQcm9wZXJ0eU5hbWVFbnVt
ZXJhdG9yOjpjYWNoZWRTdHJ1Y3R1cmVJRE9mZnNldCgpKSkpOworICAgIAorICAgIG1vdmUoVHJ1
c3RlZEltbTY0KEpTVmFsdWU6OmVuY29kZShqc0Jvb2xlYW4odHJ1ZSkpKSwgcmVnVDApOworICAg
IGVtaXRQdXRWaXJ0dWFsUmVnaXN0ZXIoZHN0KTsKK30KKwogdm9pZCBKSVQ6OnByaXZhdGVDb21w
aWxlSGFzSW5kZXhlZFByb3BlcnR5KEJ5VmFsSW5mbyogYnlWYWxJbmZvLCBSZXR1cm5BZGRyZXNz
UHRyIHJldHVybkFkZHJlc3MsIEpJVEFycmF5TW9kZSBhcnJheU1vZGUpCiB7CiAgICAgY29uc3Qg
SW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbiA9IG1fY29kZUJsb2NrLT5pbnN0cnVjdGlv
bnMoKS5hdChieVZhbEluZm8tPmJ5dGVjb2RlSW5kZXgpLnB0cigpOwpJbmRleDogU291cmNlL0ph
dmFTY3JpcHRDb3JlL2xsaW50L0xMSW50T2Zmc2V0c0V4dHJhY3Rvci5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50T2Zmc2V0c0V4dHJhY3Rvci5jcHAJ
KHJldmlzaW9uIDI2MjAzOSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludE9m
ZnNldHNFeHRyYWN0b3IuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00OSw2ICs0OSw3IEBACiAjaW5j
bHVkZSAiSlNMZXhpY2FsRW52aXJvbm1lbnQuaCIKICNpbmNsdWRlICJKU01vZHVsZVJlY29yZC5o
IgogI2luY2x1ZGUgIkpTT2JqZWN0LmgiCisjaW5jbHVkZSAiSlNQcm9wZXJ0eU5hbWVFbnVtZXJh
dG9yLmgiCiAjaW5jbHVkZSAiSlNTdHJpbmcuaCIKICNpbmNsdWRlICJKU1R5cGVJbmZvLmgiCiAj
aW5jbHVkZSAiSnVtcFRhYmxlLmgiCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQv
TG93TGV2ZWxJbnRlcnByZXRlcjY0LmFzbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlcjY0LmFzbQkocmV2aXNpb24gMjYyMDM5KQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXI2NC5hc20J
KHdvcmtpbmcgY29weSkKQEAgLTI4NDcsMyArMjg0NywyNyBAQCBsbGludE9wKG9wX2xvZ19zaGFk
b3dfY2hpY2tlbl90YWlsLCBPcExvCiAgICAgY2FsbFNsb3dQYXRoKF9sbGludF9zbG93X3BhdGhf
bG9nX3NoYWRvd19jaGlja2VuX3RhaWwpCiAgICAgZGlzcGF0Y2goKQogZW5kKQorCittYWNybyBo
YXNTdHJ1Y3R1cmVQcm9wZXJ0eUltcGwoc2l6ZSwgZ2V0LCBkaXNwYXRjaCwgcmV0dXJuLCBzbG93
UGF0aENhbGwpCisgICAgZ2V0KG1fYmFzZSwgdDApCisgICAgbG9hZENvbnN0YW50T3JWYXJpYWJs
ZShzaXplLCB0MCwgdDEpCisgICAgYnRxbnogdDEsIG5vdENlbGxNYXNrLCAuc2xvd1BhdGgKKwor
ICAgIGxvYWRWYXJpYWJsZShnZXQsIG1fZW51bWVyYXRvciwgdDApCisgICAgbG9hZGkgSlNDZWxs
OjptX3N0cnVjdHVyZUlEW3QxXSwgdDEKKyAgICBiaW5lcSB0MSwgSlNQcm9wZXJ0eU5hbWVFbnVt
ZXJhdG9yOjptX2NhY2hlZFN0cnVjdHVyZUlEW3QwXSwgLnNsb3dQYXRoCisKKyAgICByZXR1cm4o
VmFsdWVUcnVlKQorCisuc2xvd1BhdGg6CisgICAgY2FsbFNsb3dQYXRoKHNsb3dQYXRoQ2FsbCkK
KyAgICBkaXNwYXRjaCgpCitlbmQKKworbGxpbnRPcFdpdGhSZXR1cm4ob3BfaGFzX3N0cnVjdHVy
ZV9wcm9wZXJ0eSwgT3BIYXNTdHJ1Y3R1cmVQcm9wZXJ0eSwgbWFjcm8gKHNpemUsIGdldCwgZGlz
cGF0Y2gsIHJldHVybikKKyAgICBoYXNTdHJ1Y3R1cmVQcm9wZXJ0eUltcGwoc2l6ZSwgZ2V0LCBk
aXNwYXRjaCwgIHJldHVybiwgX3Nsb3dfcGF0aF9oYXNfc3RydWN0dXJlX3Byb3BlcnR5KQorZW5k
KQorCitsbGludE9wV2l0aFJldHVybihvcF9pbl9zdHJ1Y3R1cmVfcHJvcGVydHksIE9wSW5TdHJ1
Y3R1cmVQcm9wZXJ0eSwgbWFjcm8gKHNpemUsIGdldCwgZGlzcGF0Y2gsIHJldHVybikKKyAgICBo
YXNTdHJ1Y3R1cmVQcm9wZXJ0eUltcGwoc2l6ZSwgZ2V0LCBkaXNwYXRjaCwgIHJldHVybiwgX3Ns
b3dfcGF0aF9pbl9zdHJ1Y3R1cmVfcHJvcGVydHkpCitlbmQpCkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlci5hc20KPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIuYXNtCShyZXZpc2lv
biAyNjIwMzkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnBy
ZXRlci5hc20JKHdvcmtpbmcgY29weSkKQEAgLTE3NjksNyArMTc2OSwxMiBAQCBzbG93UGF0aE9w
KGdyZWF0ZXIpCiBzbG93UGF0aE9wKGdyZWF0ZXJlcSkKIHNsb3dQYXRoT3AoaGFzX2dlbmVyaWNf
cHJvcGVydHkpCiBzbG93UGF0aE9wKGhhc19pbmRleGVkX3Byb3BlcnR5KQotc2xvd1BhdGhPcCho
YXNfc3RydWN0dXJlX3Byb3BlcnR5KQorCitpZiBub3QgSlNWQUxVRTY0CisgICAgc2xvd1BhdGhP
cChoYXNfc3RydWN0dXJlX3Byb3BlcnR5KQorICAgIHNsb3dQYXRoT3AoaW5fc3RydWN0dXJlX3By
b3BlcnR5KQorZW5kCisKIHNsb3dQYXRoT3AoaW5fYnlfaWQpCiBzbG93UGF0aE9wKGluX2J5X3Zh
bCkKIHNsb3dQYXRoT3AoaXNfZnVuY3Rpb24pCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9Db21tb25TbG93UGF0aHMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0NvbW1vblNsb3dQYXRocy5jcHAJKHJldmlzaW9uIDI2MjAzOSkKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vblNsb3dQYXRocy5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTEwNTEsMTYgKzEwNTEsMzMgQEAgU0xPV19QQVRIX0RFQ0woc2xvd19wYXRo
X2hhc19zdHJ1Y3R1cmVfcAogICAgIEpTT2JqZWN0KiBiYXNlID0gR0VUKGJ5dGVjb2RlLm1fYmFz
ZSkuanNWYWx1ZSgpLnRvT2JqZWN0KGdsb2JhbE9iamVjdCk7CiAgICAgQ0hFQ0tfRVhDRVBUSU9O
KCk7CiAgICAgSlNWYWx1ZSBwcm9wZXJ0eSA9IEdFVChieXRlY29kZS5tX3Byb3BlcnR5KS5qc1Zh
bHVlKCk7Ci0gICAgQVNTRVJUKHByb3BlcnR5LmlzU3RyaW5nKCkpOworICAgIFJFTEVBU0VfQVNT
RVJUKHByb3BlcnR5LmlzU3RyaW5nKCkpOworI2lmIFVTRShKU1ZBTFVFMzJfNjQpCiAgICAgSlNQ
cm9wZXJ0eU5hbWVFbnVtZXJhdG9yKiBlbnVtZXJhdG9yID0ganNDYXN0PEpTUHJvcGVydHlOYW1l
RW51bWVyYXRvcio+KEdFVChieXRlY29kZS5tX2VudW1lcmF0b3IpLmpzVmFsdWUoKS5hc0NlbGwo
KSk7CiAgICAgaWYgKGJhc2UtPnN0cnVjdHVyZSh2bSktPmlkKCkgPT0gZW51bWVyYXRvci0+Y2Fj
aGVkU3RydWN0dXJlSUQoKSkKICAgICAgICAgUkVUVVJOKGpzQm9vbGVhbih0cnVlKSk7CisjZW5k
aWYKICAgICBKU1N0cmluZyogc3RyaW5nID0gYXNTdHJpbmcocHJvcGVydHkpOwogICAgIGF1dG8g
cHJvcGVydHlOYW1lID0gc3RyaW5nLT50b0lkZW50aWZpZXIoZ2xvYmFsT2JqZWN0KTsKICAgICBD
SEVDS19FWENFUFRJT04oKTsKICAgICBSRVRVUk4oanNCb29sZWFuKGJhc2UtPmhhc1Byb3BlcnR5
R2VuZXJpYyhnbG9iYWxPYmplY3QsIHByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90OjpJbnRlcm5h
bE1ldGhvZFR5cGU6OkdldE93blByb3BlcnR5KSkpOwogfQogCitTTE9XX1BBVEhfREVDTChzbG93
X3BhdGhfaW5fc3RydWN0dXJlX3Byb3BlcnR5KQoreworICAgIEJFR0lOKCk7CisgICAgYXV0byBi
eXRlY29kZSA9IHBjLT5hczxPcEluU3RydWN0dXJlUHJvcGVydHk+KCk7CisgICAgSlNWYWx1ZSBi
YXNlID0gR0VUKGJ5dGVjb2RlLm1fYmFzZSkuanNWYWx1ZSgpOworI2lmIFVTRShKU1ZBTFVFMzJf
NjQpCisgICAgSlNQcm9wZXJ0eU5hbWVFbnVtZXJhdG9yKiBlbnVtZXJhdG9yID0ganNDYXN0PEpT
UHJvcGVydHlOYW1lRW51bWVyYXRvcio+KEdFVChieXRlY29kZS5tX2VudW1lcmF0b3IpLmpzVmFs
dWUoKS5hc0NlbGwoKSk7CisgICAgaWYgKGJhc2UuaXNDZWxsKCkgJiYgYmFzZS5hc0NlbGwoKS0+
c3RydWN0dXJlKHZtKS0+aWQoKSA9PSBlbnVtZXJhdG9yLT5jYWNoZWRTdHJ1Y3R1cmVJRCgpKQor
ICAgICAgICBSRVRVUk4oanNCb29sZWFuKHRydWUpKTsKKyNlbmRpZgorICAgIEpTVmFsdWUgcHJv
cGVydHkgPSBHRVQoYnl0ZWNvZGUubV9wcm9wZXJ0eSkuanNWYWx1ZSgpOworICAgIFJFTEVBU0Vf
QVNTRVJUKHByb3BlcnR5LmlzU3RyaW5nKCkpOworICAgIFJFVFVSTihqc0Jvb2xlYW4oQ29tbW9u
U2xvd1BhdGhzOjpvcEluQnlWYWwoZ2xvYmFsT2JqZWN0LCBiYXNlLCBhc1N0cmluZyhwcm9wZXJ0
eSkpKSk7Cit9CisKIFNMT1dfUEFUSF9ERUNMKHNsb3dfcGF0aF9oYXNfZ2VuZXJpY19wcm9wZXJ0
eSkKIHsKICAgICBCRUdJTigpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
Q29tbW9uU2xvd1BhdGhzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvQ29tbW9uU2xvd1BhdGhzLmgJKHJldmlzaW9uIDI2MjAzOSkKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vblNsb3dQYXRocy5oCSh3b3JraW5nIGNvcHkpCkBAIC0y
NTQsNiArMjU0LDcgQEAgU0xPV19QQVRIX0hJRERFTl9ERUNMKHNsb3dfcGF0aF90b19wcm9wZQog
U0xPV19QQVRIX0hJRERFTl9ERUNMKHNsb3dfcGF0aF9nZXRfZW51bWVyYWJsZV9sZW5ndGgpOwog
U0xPV19QQVRIX0hJRERFTl9ERUNMKHNsb3dfcGF0aF9oYXNfZ2VuZXJpY19wcm9wZXJ0eSk7CiBT
TE9XX1BBVEhfSElEREVOX0RFQ0woc2xvd19wYXRoX2hhc19zdHJ1Y3R1cmVfcHJvcGVydHkpOwor
U0xPV19QQVRIX0hJRERFTl9ERUNMKHNsb3dfcGF0aF9pbl9zdHJ1Y3R1cmVfcHJvcGVydHkpOwog
U0xPV19QQVRIX0hJRERFTl9ERUNMKHNsb3dfcGF0aF9oYXNfaW5kZXhlZF9wcm9wZXJ0eSk7CiBT
TE9XX1BBVEhfSElEREVOX0RFQ0woc2xvd19wYXRoX2dldF9kaXJlY3RfcG5hbWUpOwogU0xPV19Q
QVRIX0hJRERFTl9ERUNMKHNsb3dfcGF0aF9nZXRfcHJvcGVydHlfZW51bWVyYXRvcik7CkluZGV4
OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1Byb3BlcnR5TmFtZUVudW1lcmF0b3Iu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1Byb3BlcnR5
TmFtZUVudW1lcmF0b3IuaAkocmV2aXNpb24gMjYyMDM5KQorKysgU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSlNQcm9wZXJ0eU5hbWVFbnVtZXJhdG9yLmgJKHdvcmtpbmcgY29weSkKQEAg
LTg3LDYgKzg3LDggQEAgcHVibGljOgogICAgIHN0YXRpYyB2b2lkIHZpc2l0Q2hpbGRyZW4oSlND
ZWxsKiwgU2xvdFZpc2l0b3ImKTsKIAogcHJpdmF0ZToKKyAgICBmcmllbmQgY2xhc3MgTExJbnRP
ZmZzZXRzRXh0cmFjdG9yOworCiAgICAgSlNQcm9wZXJ0eU5hbWVFbnVtZXJhdG9yKFZNJiwgU3Ry
dWN0dXJlKiwgdWludDMyX3QsIHVpbnQzMl90LCBXcml0ZUJhcnJpZXI8SlNTdHJpbmc+KiwgdW5z
aWduZWQpOwogICAgIHZvaWQgZmluaXNoQ3JlYXRpb24oVk0mLCBSZWZQdHI8UHJvcGVydHlOYW1l
QXJyYXlEYXRhPiYmKTsKIAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>400061</attachid>
            <date>2020-05-22 11:27:54 -0700</date>
            <delta_ts>2020-05-22 13:02:04 -0700</delta_ts>
            <desc>patch</desc>
            <filename>a-backup.diff</filename>
            <type>text/plain</type>
            <size>42651</size>
            <attacher name="Saam Barati">saam</attacher>
            
              <data encoding="base64">SW5kZXg6IEpTVGVzdHMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIEpTVGVzdHMvQ2hhbmdlTG9n
CShyZXZpc2lvbiAyNjIwMzkpCisrKyBKU1Rlc3RzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpA
QCAtMSwzICsxLDMyIEBACisyMDIwLTA1LTIxICBTYWFtIEJhcmF0aSAgPHNiYXJhdGlAYXBwbGUu
Y29tPgorCisgICAgICAgIGluX2J5X3ZhbCBpbnNpZGUgc3RydWN0dXJlIHByb3BlcnR5IGZvci1p
biBsb29wIHNob3VsZCB1c2UgYW4gb3Bjb2RlIGxpa2UgaGFzX3N0cnVjdHVyZV9wcm9wZXJ0eSBi
dXQgZm9yICJpbiIKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTIxMjIzOQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgICogbWljcm9iZW5jaG1hcmtzL2luLWJ5LXZhbC1pbnNpZGUtZm9yLWluLWxvb3AuanM6IEFk
ZGVkLgorICAgICAgICAoYXNzZXJ0KToKKyAgICAgICAgKGNvdW50KToKKyAgICAgICAgKiBzdHJl
c3MvaW4tYnktdmFsLWluc2lkZS1mb3ItaW4tbG9vcC5qczogQWRkZWQuCisgICAgICAgIChhc3Nl
cnQpOgorICAgICAgICAodGVzdDEuY291bnQpOgorICAgICAgICAodGVzdDEpOgorICAgICAgICAo
dGVzdDIuY291bnQpOgorICAgICAgICAodGVzdDIpOgorICAgICAgICAodGVzdDMuY291bnQpOgor
ICAgICAgICAodGVzdDMpOgorICAgICAgICAodGVzdDQuY291bnQpOgorICAgICAgICAodGVzdDQp
OgorICAgICAgICAodGVzdDUuY291bnQpOgorICAgICAgICAodGVzdDUpOgorICAgICAgICAodGVz
dDYuY291bnQpOgorICAgICAgICAodGVzdDYpOgorICAgICAgICAodGVzdDcuY291bnQpOgorICAg
ICAgICAodGVzdDcpOgorICAgICAgICAodGVzdDguY291bnQpOgorICAgICAgICAodGVzdDgpOgor
CiAyMDIwLTA1LTIxICBBbGV4ZXkgU2h2YXlrYSAgPHNodmFpa2FsZXNoQGdtYWlsLmNvbT4KIAog
ICAgICAgICBVc2UgQGlzVW5kZWZpbmVkT3JOdWxsIGluc3RlYWQgb2YgYWJzdHJhY3QgZXF1YWxp
dHkgd2l0aCBudWxsCkluZGV4OiBKU1Rlc3RzL21pY3JvYmVuY2htYXJrcy9pbi1ieS12YWwtaW5z
aWRlLWZvci1pbi1sb29wLmpzCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIEpTVGVzdHMvbWljcm9iZW5jaG1hcmtz
L2luLWJ5LXZhbC1pbnNpZGUtZm9yLWluLWxvb3AuanMJKG5vbmV4aXN0ZW50KQorKysgSlNUZXN0
cy9taWNyb2JlbmNobWFya3MvaW4tYnktdmFsLWluc2lkZS1mb3ItaW4tbG9vcC5qcwkod29ya2lu
ZyBjb3B5KQpAQCAtMCwwICsxLDI1IEBACitmdW5jdGlvbiBhc3NlcnQoYikgeworICAgIGlmICgh
YikKKyAgICAgICAgdGhyb3cgbmV3IEVycm9yOworfQorCitmdW5jdGlvbiBjb3VudChvKSB7Cisg
ICAgbGV0IGMgPSAwOworICAgIGZvciAobGV0IHAgaW4gbykgeworICAgICAgICBpZiAocCBpbiBv
KQorICAgICAgICAgICAgKytjOworICAgIH0KKyAgICByZXR1cm4gYzsKK30KK25vSW5saW5lKGNv
dW50KTsKKworbGV0IG8gPSB7CisgICAgYToyMCwKKyAgICBiOjMwLAorICAgIGM6NDAsCisgICAg
ZDo1MAorfTsKKworZm9yIChsZXQgaSA9IDA7IGkgPCAzMDAwMDA7ICsraSkgeworICAgIGFzc2Vy
dChjb3VudChvKSA9PT0gNCk7Cit9CkluZGV4OiBKU1Rlc3RzL3N0cmVzcy9pbi1ieS12YWwtaW5z
aWRlLWZvci1pbi1sb29wLmpzCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIEpTVGVzdHMvc3RyZXNzL2luLWJ5LXZh
bC1pbnNpZGUtZm9yLWluLWxvb3AuanMJKG5vbmV4aXN0ZW50KQorKysgSlNUZXN0cy9zdHJlc3Mv
aW4tYnktdmFsLWluc2lkZS1mb3ItaW4tbG9vcC5qcwkod29ya2luZyBjb3B5KQpAQCAtMCwwICsx
LDIyNyBAQAorZnVuY3Rpb24gYXNzZXJ0KGIpIHsKKyAgICBpZiAoIWIpCisgICAgICAgIHRocm93
IG5ldyBFcnJvcjsKK30KKworZnVuY3Rpb24gdGVzdDEoKSB7CisgICAgZnVuY3Rpb24gY291bnQo
bykgeworICAgICAgICBsZXQgYyA9IDA7CisgICAgICAgIGZvciAobGV0IHAgaW4gbykgeworICAg
ICAgICAgICAgaWYgKHAgaW4gbykKKyAgICAgICAgICAgICAgICArK2M7CisgICAgICAgIH0KKyAg
ICAgICAgcmV0dXJuIGM7CisgICAgfQorICAgIG5vSW5saW5lKGNvdW50KTsKKworICAgIGxldCBv
ID0geworICAgICAgICBhOjIwLAorICAgICAgICBiOjMwLAorICAgICAgICBjOjQwLAorICAgICAg
ICBkOjUwCisgICAgfTsKKworICAgIGZvciAobGV0IGkgPSAwOyBpIDwgMTAwMDsgKytpKSB7Cisg
ICAgICAgIGFzc2VydChjb3VudChvKSA9PT0gNCk7CisgICAgfQorfQordGVzdDEoKTsKKworZnVu
Y3Rpb24gdGVzdDIoKSB7CisgICAgZnVuY3Rpb24gY291bnQobykgeworICAgICAgICBsZXQgYyA9
IDA7CisgICAgICAgIGZvciAobGV0IHAgaW4gbykgeworICAgICAgICAgICAgaWYgKHAgPT09ICJh
IikKKyAgICAgICAgICAgICAgICBkZWxldGUgby5hOworICAgICAgICAgICAgaWYgKHAgaW4gbykK
KyAgICAgICAgICAgICAgICArK2M7CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIGM7CisgICAg
fQorICAgIG5vSW5saW5lKGNvdW50KTsKKworICAgIGxldCBvID0geworICAgICAgICBhOjIwLAor
ICAgICAgICBiOjMwLAorICAgICAgICBjOjQwLAorICAgICAgICBkOjUwCisgICAgfTsKKworICAg
IGZvciAobGV0IGkgPSAwOyBpIDwgMTAwMDsgKytpKSB7CisgICAgICAgIGFzc2VydChjb3VudChv
KSA9PT0gMyk7CisgICAgfQorfQordGVzdDIoKTsKKworZnVuY3Rpb24gdGVzdDMoKSB7CisgICAg
ZnVuY3Rpb24gY291bnQobykgeworICAgICAgICBsZXQgYyA9IDA7CisgICAgICAgIGZvciAobGV0
IHAgaW4gbykgeworICAgICAgICAgICAgcCA9ICJhIjsKKyAgICAgICAgICAgIGlmIChwIGluIG8p
CisgICAgICAgICAgICAgICAgKytjOworICAgICAgICB9CisgICAgICAgIHJldHVybiBjOworICAg
IH0KKyAgICBub0lubGluZShjb3VudCk7CisKKyAgICBsZXQgbyA9IHsKKyAgICAgICAgYToyMCwK
KyAgICAgICAgYjozMCwKKyAgICAgICAgYzo0MCwKKyAgICAgICAgZDo1MAorICAgIH07CisKKyAg
ICBmb3IgKGxldCBpID0gMDsgaSA8IDEwMDA7ICsraSkgeworICAgICAgICBhc3NlcnQoY291bnQo
bykgPT09IDQpOworICAgIH0KK30KK3Rlc3QzKCk7CisKK2Z1bmN0aW9uIHRlc3Q0KCkgeworICAg
IGZ1bmN0aW9uIGNvdW50KG8pIHsKKyAgICAgICAgbGV0IGMgPSAwOworICAgICAgICBmb3IgKGxl
dCBwIGluIG8pIHsKKyAgICAgICAgICAgIHAgPSAiZiI7CisgICAgICAgICAgICBpZiAocCBpbiBv
KQorICAgICAgICAgICAgICAgICsrYzsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4gYzsKKyAg
ICB9CisgICAgbm9JbmxpbmUoY291bnQpOworCisgICAgbGV0IG8gPSB7CisgICAgICAgIGE6MjAs
CisgICAgICAgIGI6MzAsCisgICAgICAgIGM6NDAsCisgICAgICAgIGQ6NTAKKyAgICB9OworCisg
ICAgZm9yIChsZXQgaSA9IDA7IGkgPCAxMDAwOyArK2kpIHsKKyAgICAgICAgYXNzZXJ0KGNvdW50
KG8pID09PSAwKTsKKyAgICB9Cit9Cit0ZXN0NCgpOworCitmdW5jdGlvbiB0ZXN0NSgpIHsKKyAg
ICBmdW5jdGlvbiBjb3VudChvKSB7CisgICAgICAgIGxldCBjID0gMDsKKyAgICAgICAgZm9yIChs
ZXQgcCBpbiBvKSB7CisgICAgICAgICAgICBkZWxldGUgb1twXTsKKyAgICAgICAgICAgIGlmIChw
IGluIG8pCisgICAgICAgICAgICAgICAgKytjOworICAgICAgICB9CisgICAgICAgIHJldHVybiBj
OworICAgIH0KKyAgICBub0lubGluZShjb3VudCk7CisKKyAgICBsZXQgbyA9IHsKKyAgICAgICAg
YToyMCwKKyAgICAgICAgYjozMCwKKyAgICAgICAgYzo0MCwKKyAgICAgICAgZDo1MAorICAgIH07
CisKKyAgICBsZXQgcCA9IHsKKyAgICAgICAgYToyMCwKKyAgICAgICAgYjozMCwKKyAgICAgICAg
Yzo0MCwKKyAgICAgICAgZDo1MAorICAgIH07CisKKyAgICBvLl9fcHJvdG9fXyA9IHA7CisKKyAg
ICBmb3IgKGxldCBpID0gMDsgaSA8IDEwMDA7ICsraSkgeworICAgICAgICBhc3NlcnQoY291bnQo
bykgPT09IDQpOworICAgIH0KK30KK3Rlc3Q1KCk7CisKK2Z1bmN0aW9uIHRlc3Q2KCkgeworICAg
IGZ1bmN0aW9uIGNvdW50KG8pIHsKKyAgICAgICAgbGV0IGMgPSAwOworICAgICAgICBmb3IgKGxl
dCBwIGluIG8pIHsKKyAgICAgICAgICAgIGRlbGV0ZSBvW3BdOworICAgICAgICAgICAgaWYgKHAg
aW4gbykKKyAgICAgICAgICAgICAgICArK2M7CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIGM7
CisgICAgfQorICAgIG5vSW5saW5lKGNvdW50KTsKKworICAgIGxldCBvID0geworICAgICAgICBh
OjIwLAorICAgICAgICBiOjMwLAorICAgICAgICBjOjQwLAorICAgICAgICBkOjUwCisgICAgfTsK
KworICAgIGxldCBwID0geyB9OworCisgICAgby5fX3Byb3RvX18gPSBwOworCisgICAgZm9yIChs
ZXQgaSA9IDA7IGkgPCAxMDAwOyArK2kpIHsKKyAgICAgICAgYXNzZXJ0KGNvdW50KG8pID09PSAw
KTsKKyAgICB9Cit9Cit0ZXN0NigpOworCitmdW5jdGlvbiB0ZXN0NygpIHsKKyAgICBmdW5jdGlv
biBjb3VudChvLCBvMikgeworICAgICAgICBsZXQgYyA9IDA7CisgICAgICAgIGZvciAobGV0IHAg
aW4gbykgeworICAgICAgICAgICAgaWYgKHAgaW4gbzIpCisgICAgICAgICAgICAgICAgKytjOwor
ICAgICAgICB9CisgICAgICAgIHJldHVybiBjOworICAgIH0KKyAgICBub0lubGluZShjb3VudCk7
CisKKyAgICBmb3IgKGxldCBpID0gMDsgaSA8IDEwMDA7ICsraSkgeworICAgICAgICBsZXQgbyA9
IHthOiAyMH07CisgICAgICAgIGlmICghIShpICUgMikpIHsKKyAgICAgICAgICAgIGxldCBvayA9
IGZhbHNlOworICAgICAgICAgICAgdHJ5IHsKKyAgICAgICAgICAgICAgICBjb3VudChvLCBudWxs
KTsKKyAgICAgICAgICAgIH0gY2F0Y2goZSkgeworICAgICAgICAgICAgICAgIGFzc2VydChlIGlu
c3RhbmNlb2YgVHlwZUVycm9yKTsKKyAgICAgICAgICAgICAgICBvayA9IGUudG9TdHJpbmcoKS5p
bmRleE9mKCJvMiBpcyBub3QgYW4gT2JqZWN0IikgPj0gMDsKKyAgICAgICAgICAgIH0KKyAgICAg
ICAgICAgIGFzc2VydChvayk7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBhc3NlcnQo
Y291bnQobywge30pID09PSAwKTsKKyAgICAgICAgfQorICAgIH0KK30KK3Rlc3Q3KCk7CisKK2Z1
bmN0aW9uIHRlc3Q4KCkgeworICAgIGZ1bmN0aW9uIGNvdW50KG8sIHByb3RvKSB7CisgICAgICAg
IGxldCBjID0gMDsKKyAgICAgICAgZm9yIChsZXQgcCBpbiBvKSB7CisgICAgICAgICAgICBkZWxl
dGUgb1twXTsKKyAgICAgICAgICAgIG8uX19wcm90b19fID0gcHJvdG87CisgICAgICAgICAgICBp
ZiAocCBpbiBvKQorICAgICAgICAgICAgICAgICsrYzsKKyAgICAgICAgfQorICAgICAgICByZXR1
cm4gYzsKKyAgICB9CisgICAgbm9JbmxpbmUoY291bnQpOworCisgICAgbGV0IGhhc093blByb3Bl
cnR5Q2FsbGVkID0gZmFsc2U7CisgICAgbGV0IHAgPSBuZXcgUHJveHkoe30sIHsKKyAgICAgICAg
aGFzKCkgeworICAgICAgICAgICAgaGFzT3duUHJvcGVydHlDYWxsZWQgPSB0cnVlOworICAgICAg
ICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICB9CisgICAgfSk7CisKKyAgICBmb3IgKGxldCBp
ID0gMDsgaSA8IDEwMDA7ICsraSkgeworICAgICAgICBsZXQgbyA9IHsgYToyMCB9OworCisgICAg
ICAgIGFzc2VydChjb3VudChvLCBwKSA9PT0gMCk7CisgICAgICAgIGFzc2VydChoYXNPd25Qcm9w
ZXJ0eUNhbGxlZCA9PT0gdHJ1ZSk7CisgICAgICAgIGhhc093blByb3BlcnR5Q2FsbGVkID0gZmFs
c2U7CisgICAgfQorfQordGVzdDgoKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFu
Z2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2
aXNpb24gMjYyMDM5KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2lu
ZyBjb3B5KQpAQCAtMSwzICsxLDk0IEBACisyMDIwLTA1LTIxICBTYWFtIEJhcmF0aSAgPHNiYXJh
dGlAYXBwbGUuY29tPgorCisgICAgICAgIGluX2J5X3ZhbCBpbnNpZGUgc3RydWN0dXJlIHByb3Bl
cnR5IGZvci1pbiBsb29wIHNob3VsZCB1c2UgYW4gb3Bjb2RlIGxpa2UgaGFzX3N0cnVjdHVyZV9w
cm9wZXJ0eSBidXQgZm9yICJpbiIKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTIxMjIzOQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgIFRoZXJlIGlzIGNvZGUgaW5zaWRlIFNwZWVkb21ldGVyIDIgdGhhdCBpcyBs
aWtlOgorICAgICAgICAKKyAgICAgICAgYGBgCisgICAgICAgIGZvciAobGV0IHAgaW4gbykgewor
ICAgICAgICAgICAgaWYgKHAgaW4gbzIpCisgICAgICAgICAgICAgICAgLi4uCisgICAgICAgIH0K
KyAgICAgICAgYGBgCisgICAgICAgIAorICAgICAgICBXaGVyZSBvIGFuZCBvMiBmcmVxdWVudGx5
IHNoYXJlIHRoZSBzYW1lIHN0cnVjdHVyZS4gRWxtIGRvZXMgdGhpcyB3aGVuIGl0J3MKKyAgICAg
ICAgZGlmZmluZyB0d28gb2JqZWN0cy4gV2UgYWxyZWFkeSBvcHRpbWl6ZSBvMltwXSAoZ2V0X2J5
X3ZhbCkgaW4gdGhlIGFib3ZlIGxvb3AKKyAgICAgICAgZm9yIHN0cnVjdHVyZSBwcm9wZXJ0aWVz
LiBUaGlzIHBhdGNoIGFkZHMgdGhhdCBzYW1lIG9wdGltaXphdGlvbiBmb3IgaW5fYnlfdmFsLgor
ICAgICAgICBCZWNhdXNlIHdlIGFscmVhZHkgZW1pdCBhICJzdHJ1Y3R1cmUiIGxvb3AgZm9yIGZv
ci1pbiwgd2hlcmUgd2UgaXRlcmF0ZSBzdHJ1Y3R1cmUKKyAgICAgICAgcHJvcGVydGllcywgdGhl
IGZhc3QgcGF0aCBmb3IgdGhlIGFib3ZlLCB3aGVyZSBvIGFuZCBvMiBoYXZlIHRoZSBzYW1lCisg
ICAgICAgIHN0cnVjdHVyZSBpcyBzaW1wbHkgYSBzdHJ1Y3R1cmUgY2hlY2sgZm9sbG93ZWQgYnkg
cmV0dXJuIHRydWUuCisgICAgICAgIAorICAgICAgICBUaGlzIHBhdGNoIGludHJvZHVjZXMgdGhl
IG5ldyBvcGNvZGU6IG9wX2luX3N0cnVjdHVyZV9wcm9wZXJ0eS4gSXRzIGZhc3QgcGF0aCBpcyBp
ZGVudGljYWwKKyAgICAgICAgdG8gb3BfaGFzX3N0cnVjdHVyZV9wcm9wZXJ0eS4gSXRzIHNsb3cg
cGF0aCwgaG93ZXZlciwgYmVoYXZlcyBsaWtlICJpbiIsIHdoaWNoCisgICAgICAgIHVzZXMgdGhl
IEhhc1Byb3BlcnR5IGludGVybmFsIG1ldGhvZCwgaW5zdGVhZCBvZiBsaWtlIG9wX2hhc19zdHJ1
Y3R1cmVfcHJvcGVydHksCisgICAgICAgIHdoaWNoIHVzZXMgdGhlIEdldE93blByb3BlcnR5IGlu
dGVybmFsIG1ldGhvZC4gVGhpcyBiZWhhdmlvciBkaWZmZXJlbmNlIGlzCisgICAgICAgIG9ic2Vy
dmFibGUgdXNpbmcgUHJveHkuCisgICAgICAgIAorICAgICAgICBUaGlzIGEgNSUgcGVyZiBpbXBy
b3ZlbWVudCBpbiB0aGUgRWxtIHN1YnRlc3QgaW4gU3BlZWRvbWV0ZXIgMi4KKworICAgICAgICAq
IGJ5dGVjb2RlL0J5dGVjb2RlTGlzdC5yYjoKKyAgICAgICAgKiBieXRlY29kZS9CeXRlY29kZVVz
ZURlZi5jcHA6CisgICAgICAgIChKU0M6OmNvbXB1dGVVc2VzRm9yQnl0ZWNvZGVJbmRleEltcGwp
OgorICAgICAgICAoSlNDOjpjb21wdXRlRGVmc0ZvckJ5dGVjb2RlSW5kZXhJbXBsKToKKyAgICAg
ICAgKiBieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuY3BwOgorICAgICAgICAoSlNDOjpC
eXRlY29kZUdlbmVyYXRvcjo6ZW1pdEluQnlWYWwpOgorICAgICAgICAoSlNDOjpyZXdyaXRlT3Ap
OgorICAgICAgICAoSlNDOjpTdHJ1Y3R1cmVGb3JJbkNvbnRleHQ6OmZpbmFsaXplKToKKyAgICAg
ICAgKiBieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuaDoKKyAgICAgICAgKEpTQzo6U3Ry
dWN0dXJlRm9ySW5Db250ZXh0OjphZGRJbkluc3QpOgorICAgICAgICAqIGRmZy9ERkdBYnN0cmFj
dEludGVycHJldGVySW5saW5lcy5oOgorICAgICAgICAoSlNDOjpERkc6OkFic3RyYWN0SW50ZXJw
cmV0ZXI8QWJzdHJhY3RTdGF0ZVR5cGU+OjpleGVjdXRlRWZmZWN0cyk6CisgICAgICAgICogZGZn
L0RGR0J5dGVDb2RlUGFyc2VyLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpCeXRlQ29kZVBhcnNl
cjo6cGFyc2VCbG9jayk6CisgICAgICAgICogZGZnL0RGR0NhcGFiaWxpdGllcy5jcHA6CisgICAg
ICAgIChKU0M6OkRGRzo6Y2FwYWJpbGl0eUxldmVsKToKKyAgICAgICAgKiBkZmcvREZHQ2xvYmJl
cml6ZS5oOgorICAgICAgICAoSlNDOjpERkc6OmNsb2JiZXJpemUpOgorICAgICAgICAqIGRmZy9E
RkdEb2VzR0MuY3BwOgorICAgICAgICAoSlNDOjpERkc6OmRvZXNHQyk6CisgICAgICAgICogZGZn
L0RGR0ZpeHVwUGhhc2UuY3BwOgorICAgICAgICAoSlNDOjpERkc6OkZpeHVwUGhhc2U6OmZpeHVw
Tm9kZSk6CisgICAgICAgICogZGZnL0RGR05vZGVUeXBlLmg6CisgICAgICAgICogZGZnL0RGR09w
ZXJhdGlvbnMuY3BwOgorICAgICAgICAqIGRmZy9ERkdPcGVyYXRpb25zLmg6CisgICAgICAgICog
ZGZnL0RGR1ByZWRpY3Rpb25Qcm9wYWdhdGlvblBoYXNlLmNwcDoKKyAgICAgICAgKiBkZmcvREZH
U2FmZVRvRXhlY3V0ZS5oOgorICAgICAgICAoSlNDOjpERkc6OnNhZmVUb0V4ZWN1dGUpOgorICAg
ICAgICAqIGRmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6U3Bl
Y3VsYXRpdmVKSVQ6OmNvbXBpbGVJblN0cnVjdHVyZVByb3BlcnR5KToKKyAgICAgICAgKiBkZmcv
REZHU3BlY3VsYXRpdmVKSVQuaDoKKyAgICAgICAgKiBkZmcvREZHU3BlY3VsYXRpdmVKSVQzMl82
NC5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUpOgorICAg
ICAgICAqIGRmZy9ERkdTcGVjdWxhdGl2ZUpJVDY0LmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpT
cGVjdWxhdGl2ZUpJVDo6Y29tcGlsZSk6CisgICAgICAgICogZnRsL0ZUTENhcGFiaWxpdGllcy5j
cHA6CisgICAgICAgIChKU0M6OkZUTDo6Y2FuQ29tcGlsZSk6CisgICAgICAgICogZnRsL0ZUTExv
d2VyREZHVG9CMy5jcHA6CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRGR1RvQjM6OmNv
bXBpbGVOb2RlKToKKyAgICAgICAgKEpTQzo6RlRMOjpERkc6Okxvd2VyREZHVG9CMzo6Y29tcGls
ZUhhc1N0cnVjdHVyZVByb3BlcnR5SW1wbCk6CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dl
ckRGR1RvQjM6OmNvbXBpbGVIYXNTdHJ1Y3R1cmVQcm9wZXJ0eSk6CisgICAgICAgIChKU0M6OkZU
TDo6REZHOjpMb3dlckRGR1RvQjM6OmNvbXBpbGVJblN0cnVjdHVyZVByb3BlcnR5KToKKyAgICAg
ICAgKiBqaXQvSklULmNwcDoKKyAgICAgICAgKEpTQzo6SklUOjpwcml2YXRlQ29tcGlsZU1haW5Q
YXNzKToKKyAgICAgICAgKEpTQzo6SklUOjpwcml2YXRlQ29tcGlsZVNsb3dDYXNlcyk6CisgICAg
ICAgICogaml0L0pJVC5oOgorICAgICAgICAqIGppdC9KSVRPcGNvZGVzLmNwcDoKKyAgICAgICAg
KEpTQzo6SklUOjplbWl0X29wX2luX3N0cnVjdHVyZV9wcm9wZXJ0eSk6CisgICAgICAgICogaml0
L0pJVE9wY29kZXMzMl82NC5jcHA6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9pbl9zdHJ1
Y3R1cmVfcHJvcGVydHkpOgorICAgICAgICAqIGxsaW50L0xMSW50T2Zmc2V0c0V4dHJhY3Rvci5j
cHA6CisgICAgICAgICogbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlci5hc206CisgICAgICAgICog
bGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlcjY0LmFzbToKKyAgICAgICAgKiBydW50aW1lL0NvbW1v
blNsb3dQYXRocy5jcHA6CisgICAgICAgIChKU0M6OlNMT1dfUEFUSF9ERUNMKToKKyAgICAgICAg
KiBydW50aW1lL0NvbW1vblNsb3dQYXRocy5oOgorICAgICAgICAqIHJ1bnRpbWUvSlNPYmplY3Qu
Y3BwOgorICAgICAgICAoSlNDOjpKU09iamVjdDo6aGFzUHJvcGVydHlHZW5lcmljIGNvbnN0KToK
KyAgICAgICAgKiBydW50aW1lL0pTUHJvcGVydHlOYW1lRW51bWVyYXRvci5oOgorCiAyMDIwLTA1
LTIxICBSb2JpbiBNb3Jpc3NldCAgPHJtb3Jpc3NldEBhcHBsZS5jb20+CiAKICAgICAgICAgUmVt
b3ZlIEFzc2VtYmxlckJ1ZmZlcldpdGhDb25zdGFudFBvb2wuaCAoYXMgaXQgaGFzIGJlZW4gZGVh
ZCBmb3IgeWVhcnMpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNv
ZGVMaXN0LnJiCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9C
eXRlY29kZUxpc3QucmIJKHJldmlzaW9uIDI2MjAzOSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ieXRlY29kZS9CeXRlY29kZUxpc3QucmIJKHdvcmtpbmcgY29weSkKQEAgLTExMDUsNiArMTEw
NSwxNCBAQCBvcCA6aGFzX3N0cnVjdHVyZV9wcm9wZXJ0eSwKICAgICAgICAgZW51bWVyYXRvcjog
VmlydHVhbFJlZ2lzdGVyLAogICAgIH0KIAorb3AgOmluX3N0cnVjdHVyZV9wcm9wZXJ0eSwKKyAg
ICBhcmdzOiB7CisgICAgICAgIGRzdDogVmlydHVhbFJlZ2lzdGVyLAorICAgICAgICBiYXNlOiBW
aXJ0dWFsUmVnaXN0ZXIsCisgICAgICAgIHByb3BlcnR5OiBWaXJ0dWFsUmVnaXN0ZXIsCisgICAg
ICAgIGVudW1lcmF0b3I6IFZpcnR1YWxSZWdpc3RlciwKKyAgICB9CisKIG9wIDpoYXNfZ2VuZXJp
Y19wcm9wZXJ0eSwKICAgICBhcmdzOiB7CiAgICAgICAgIGRzdDogVmlydHVhbFJlZ2lzdGVyLApJ
bmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlVXNlRGVmLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVVc2VE
ZWYuY3BwCShyZXZpc2lvbiAyNjIwMzkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNv
ZGUvQnl0ZWNvZGVVc2VEZWYuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNDYsNiArMjQ2LDcgQEAg
dm9pZCBjb21wdXRlVXNlc0ZvckJ5dGVjb2RlSW5kZXhJbXBsKFZpcgogICAgIFVTRVMoT3BHZXRC
eVZhbFdpdGhUaGlzLCBiYXNlLCB0aGlzVmFsdWUsIHByb3BlcnR5KQogICAgIFVTRVMoT3BJbnN0
YW5jZW9mQ3VzdG9tLCB2YWx1ZSwgY29uc3RydWN0b3IsIGhhc0luc3RhbmNlVmFsdWUpCiAgICAg
VVNFUyhPcEhhc1N0cnVjdHVyZVByb3BlcnR5LCBiYXNlLCBwcm9wZXJ0eSwgZW51bWVyYXRvcikK
KyAgICBVU0VTKE9wSW5TdHJ1Y3R1cmVQcm9wZXJ0eSwgYmFzZSwgcHJvcGVydHksIGVudW1lcmF0
b3IpCiAgICAgVVNFUyhPcENvbnN0cnVjdFZhcmFyZ3MsIGNhbGxlZSwgdGhpc1ZhbHVlLCBhcmd1
bWVudHMpCiAgICAgVVNFUyhPcENhbGxWYXJhcmdzLCBjYWxsZWUsIHRoaXNWYWx1ZSwgYXJndW1l
bnRzKQogICAgIFVTRVMoT3BUYWlsQ2FsbFZhcmFyZ3MsIGNhbGxlZSwgdGhpc1ZhbHVlLCBhcmd1
bWVudHMpCkBAIC0zNzQsNiArMzc1LDcgQEAgdm9pZCBjb21wdXRlRGVmc0ZvckJ5dGVjb2RlSW5k
ZXhJbXBsKHVucwogICAgIERFRlMoT3BHZXRFbnVtZXJhYmxlTGVuZ3RoLCBkc3QpCiAgICAgREVG
UyhPcEhhc0luZGV4ZWRQcm9wZXJ0eSwgZHN0KQogICAgIERFRlMoT3BIYXNTdHJ1Y3R1cmVQcm9w
ZXJ0eSwgZHN0KQorICAgIERFRlMoT3BJblN0cnVjdHVyZVByb3BlcnR5LCBkc3QpCiAgICAgREVG
UyhPcEhhc0dlbmVyaWNQcm9wZXJ0eSwgZHN0KQogICAgIERFRlMoT3BHZXREaXJlY3RQbmFtZSwg
ZHN0KQogICAgIERFRlMoT3BHZXRQcm9wZXJ0eUVudW1lcmF0b3IsIGRzdCkKSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5l
cmF0b3IuY3BwCShyZXZpc2lvbiAyNjIwMzkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjQ3OSw2
ICsyNDc5LDIwIEBAIFJlZ2lzdGVySUQqIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0SW5zdGEKIAog
UmVnaXN0ZXJJRCogQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRJbkJ5VmFsKFJlZ2lzdGVySUQqIGRz
dCwgUmVnaXN0ZXJJRCogcHJvcGVydHksIFJlZ2lzdGVySUQqIGJhc2UpCiB7CisgICAgZm9yIChz
aXplX3QgaSA9IG1fZm9ySW5Db250ZXh0U3RhY2suc2l6ZSgpOyBpLS07ICkgeworICAgICAgICBG
b3JJbkNvbnRleHQmIGNvbnRleHQgPSBtX2ZvckluQ29udGV4dFN0YWNrW2ldLmdldCgpOworICAg
ICAgICBpZiAoY29udGV4dC5sb2NhbCgpICE9IHByb3BlcnR5KQorICAgICAgICAgICAgY29udGlu
dWU7CisKKyAgICAgICAgaWYgKCFjb250ZXh0LmlzU3RydWN0dXJlRm9ySW5Db250ZXh0KCkpCisg
ICAgICAgICAgICBicmVhazsKKworICAgICAgICBTdHJ1Y3R1cmVGb3JJbkNvbnRleHQmIHN0cnVj
dHVyZUNvbnRleHQgPSBjb250ZXh0LmFzU3RydWN0dXJlRm9ySW5Db250ZXh0KCk7CisgICAgICAg
IE9wSW5TdHJ1Y3R1cmVQcm9wZXJ0eTo6ZW1pdDxPcGNvZGVTaXplOjpXaWRlMzI+KHRoaXMsIGRz
dCwgYmFzZSwgcHJvcGVydHksIHN0cnVjdHVyZUNvbnRleHQuZW51bWVyYXRvcigpKTsKKyAgICAg
ICAgc3RydWN0dXJlQ29udGV4dC5hZGRJbkluc3QobV9sYXN0SW5zdHJ1Y3Rpb24ub2Zmc2V0KCks
IHByb3BlcnR5LT5pbmRleCgpKTsKKyAgICAgICAgcmV0dXJuIGRzdDsKKyAgICB9CisKICAgICBP
cEluQnlWYWw6OmVtaXQodGhpcywgZHN0LCBiYXNlLCBwcm9wZXJ0eSk7CiAgICAgcmV0dXJuIGRz
dDsKIH0KQEAgLTUxODMsNiArNTE5NywzNSBAQCB2b2lkIEZvckluQ29udGV4dDo6ZmluYWxpemUo
Qnl0ZWNvZGVHZW5lCiAgICAgfQogfQogCit0ZW1wbGF0ZSA8dHlwZW5hbWUgT2xkT3BUeXBlLCB0
eXBlbmFtZSBOZXdPcFR5cGUsIHR5cGVuYW1lIFR1cGxlVHlwZT4KK0FMV0FZU19JTkxJTkUgdm9p
ZCByZXdyaXRlT3AoQnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwgVHVwbGVUeXBlJiBpbnN0
VHVwbGUpCit7CisgICAgc3RhdGljX2Fzc2VydChzdGQ6OmlzX3NhbWU8TmV3T3BUeXBlLCBPcEdl
dEJ5VmFsPjo6dmFsdWUgfHwgc3RkOjppc19zYW1lPE5ld09wVHlwZSwgT3BJbkJ5VmFsPjo6dmFs
dWUsICJnZXRfYnlfdmFsIGFuZCBpbl9ieV92YWwgaGF2ZSBhcmd1bWVudHMgaW4gdGhlIHNhbWUg
b3JkZXIuIik7CisKKyAgICB1bnNpZ25lZCBpbnN0SW5kZXggPSBzdGQ6OmdldDwwPihpbnN0VHVw
bGUpOworICAgIGludCBwcm9wZXJ0eVJlZ0luZGV4ID0gc3RkOjpnZXQ8MT4oaW5zdFR1cGxlKTsK
KyAgICBhdXRvIGluc3RydWN0aW9uID0gZ2VuZXJhdG9yLm1fd3JpdGVyLnJlZihpbnN0SW5kZXgp
OworICAgIGF1dG8gZW5kID0gaW5zdEluZGV4ICsgaW5zdHJ1Y3Rpb24tPnNpemUoKTsKKyAgICBB
U1NFUlQoaW5zdHJ1Y3Rpb24tPmlzV2lkZTMyKCkpOworCisgICAgZ2VuZXJhdG9yLm1fd3JpdGVy
LnNlZWsoaW5zdEluZGV4KTsKKworICAgIGF1dG8gYnl0ZWNvZGUgPSBpbnN0cnVjdGlvbi0+YXM8
T2xkT3BUeXBlPigpOworCisgICAgLy8gZGlzYWJsZSBwZWVwaG9sZSBvcHRpbWl6YXRpb25zCisg
ICAgZ2VuZXJhdG9yLm1fbGFzdE9wY29kZUlEID0gb3BfZW5kOworCisgICAgLy8gQ2hhbmdlIHRo
ZSBvcGNvZGUgdG8gZ2V0X2J5X3ZhbC4KKyAgICAvLyAxLiBkc3Qgc3RheXMgdGhlIHNhbWUuCisg
ICAgLy8gMi4gYmFzZSBzdGF5cyB0aGUgc2FtZS4KKyAgICAvLyAzLiBwcm9wZXJ0eSBnZXRzIHN3
aXRjaGVkIHRvIHRoZSBvcmlnaW5hbCBwcm9wZXJ0eS4KKyAgICBOZXdPcFR5cGU6OnRlbXBsYXRl
IGVtaXQ8T3Bjb2RlU2l6ZTo6V2lkZTMyPigmZ2VuZXJhdG9yLCBieXRlY29kZS5tX2RzdCwgYnl0
ZWNvZGUubV9iYXNlLCBWaXJ0dWFsUmVnaXN0ZXIocHJvcGVydHlSZWdJbmRleCkpOworCisgICAg
Ly8gNC4gbm9wIG91dCB0aGUgcmVtYWluaW5nIGJ5dGVzCisgICAgd2hpbGUgKGdlbmVyYXRvci5t
X3dyaXRlci5wb3NpdGlvbigpIDwgZW5kKQorICAgICAgICBPcE5vcDo6ZW1pdDxPcGNvZGVTaXpl
OjpOYXJyb3c+KCZnZW5lcmF0b3IpOworfQorCiB2b2lkIFN0cnVjdHVyZUZvckluQ29udGV4dDo6
ZmluYWxpemUoQnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwgVW5saW5rZWRDb2RlQmxvY2tH
ZW5lcmF0b3IqIGNvZGVCbG9jaywgdW5zaWduZWQgYm9keUJ5dGVjb2RlRW5kT2Zmc2V0KQogewog
ICAgIEJhc2U6OmZpbmFsaXplKGdlbmVyYXRvciwgY29kZUJsb2NrLCBib2R5Qnl0ZWNvZGVFbmRP
ZmZzZXQpOwpAQCAtNTE5MSwzMCArNTIzNCwxNiBAQCB2b2lkIFN0cnVjdHVyZUZvckluQ29udGV4
dDo6ZmluYWxpemUoQnl0CiAKICAgICBPcGNvZGVJRCBsYXN0T3Bjb2RlSUQgPSBnZW5lcmF0b3Iu
bV9sYXN0T3Bjb2RlSUQ7CiAgICAgSW5zdHJ1Y3Rpb25TdHJlYW06Ok11dGFibGVSZWYgbGFzdElu
c3RydWN0aW9uID0gZ2VuZXJhdG9yLm1fbGFzdEluc3RydWN0aW9uOwotICAgIGZvciAoY29uc3Qg
YXV0byYgaW5zdFR1cGxlIDogbV9nZXRJbnN0cykgewotICAgICAgICB1bnNpZ25lZCBpbnN0SW5k
ZXggPSBzdGQ6OmdldDwwPihpbnN0VHVwbGUpOwotICAgICAgICBpbnQgcHJvcGVydHlSZWdJbmRl
eCA9IHN0ZDo6Z2V0PDE+KGluc3RUdXBsZSk7Ci0gICAgICAgIGF1dG8gaW5zdHJ1Y3Rpb24gPSBn
ZW5lcmF0b3IubV93cml0ZXIucmVmKGluc3RJbmRleCk7Ci0gICAgICAgIGF1dG8gZW5kID0gaW5z
dEluZGV4ICsgaW5zdHJ1Y3Rpb24tPnNpemUoKTsKLSAgICAgICAgQVNTRVJUKGluc3RydWN0aW9u
LT5pc1dpZGUzMigpKTsKLQotICAgICAgICBnZW5lcmF0b3IubV93cml0ZXIuc2VlayhpbnN0SW5k
ZXgpOwotCi0gICAgICAgIGF1dG8gYnl0ZWNvZGUgPSBpbnN0cnVjdGlvbi0+YXM8T3BHZXREaXJl
Y3RQbmFtZT4oKTsKLQotICAgICAgICAvLyBkaXNhYmxlIHBlZXBob2xlIG9wdGltaXphdGlvbnMK
LSAgICAgICAgZ2VuZXJhdG9yLm1fbGFzdE9wY29kZUlEID0gb3BfZW5kOwotCi0gICAgICAgIC8v
IENoYW5nZSB0aGUgb3Bjb2RlIHRvIGdldF9ieV92YWwuCi0gICAgICAgIC8vIDEuIGRzdCBzdGF5
cyB0aGUgc2FtZS4KLSAgICAgICAgLy8gMi4gYmFzZSBzdGF5cyB0aGUgc2FtZS4KLSAgICAgICAg
Ly8gMy4gcHJvcGVydHkgZ2V0cyBzd2l0Y2hlZCB0byB0aGUgb3JpZ2luYWwgcHJvcGVydHkuCi0g
ICAgICAgIE9wR2V0QnlWYWw6OmVtaXQ8T3Bjb2RlU2l6ZTo6V2lkZTMyPigmZ2VuZXJhdG9yLCBi
eXRlY29kZS5tX2RzdCwgYnl0ZWNvZGUubV9iYXNlLCBWaXJ0dWFsUmVnaXN0ZXIocHJvcGVydHlS
ZWdJbmRleCkpOwotCi0gICAgICAgIC8vIDQuIG5vcCBvdXQgdGhlIHJlbWFpbmluZyBieXRlcwot
ICAgICAgICB3aGlsZSAoZ2VuZXJhdG9yLm1fd3JpdGVyLnBvc2l0aW9uKCkgPCBlbmQpCi0gICAg
ICAgICAgICBPcE5vcDo6ZW1pdDxPcGNvZGVTaXplOjpOYXJyb3c+KCZnZW5lcmF0b3IpOwotICAg
IH0KKworICAgIHN0YXRpY19hc3NlcnQoc2l6ZW9mKE9wR2V0QnlWYWwpIDw9IHNpemVvZihPcEdl
dERpcmVjdFBuYW1lKSk7CisgICAgc3RhdGljX2Fzc2VydChzaXplb2YoT3BJbkJ5VmFsKSA8PSBz
aXplb2YoT3BJblN0cnVjdHVyZVByb3BlcnR5KSk7CisKKyAgICBmb3IgKGNvbnN0IGF1dG8mIGlu
c3RUdXBsZSA6IG1fZ2V0SW5zdHMpCisgICAgICAgIHJld3JpdGVPcDxPcEdldERpcmVjdFBuYW1l
LCBPcEdldEJ5VmFsPihnZW5lcmF0b3IsIGluc3RUdXBsZSk7CisKKyAgICBmb3IgKGNvbnN0IGF1
dG8mIGluc3RUdXBsZSA6IG1faW5JbnN0cykKKyAgICAgICAgcmV3cml0ZU9wPE9wSW5TdHJ1Y3R1
cmVQcm9wZXJ0eSwgT3BJbkJ5VmFsPihnZW5lcmF0b3IsIGluc3RUdXBsZSk7CisKICAgICBnZW5l
cmF0b3IubV93cml0ZXIuc2VlayhnZW5lcmF0b3IubV93cml0ZXIuc2l6ZSgpKTsKICAgICBpZiAo
Z2VuZXJhdG9yLm1fbGFzdEluc3RydWN0aW9uLm9mZnNldCgpICsgZ2VuZXJhdG9yLm1fbGFzdElu
c3RydWN0aW9uLT5zaXplKCkgIT0gZ2VuZXJhdG9yLm1fd3JpdGVyLnNpemUoKSkgewogICAgICAg
ICBnZW5lcmF0b3IubV9sYXN0T3Bjb2RlSUQgPSBsYXN0T3Bjb2RlSUQ7CkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRv
ci5oCShyZXZpc2lvbiAyNjIwMzkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBp
bGVyL0J5dGVjb2RlR2VuZXJhdG9yLmgJKHdvcmtpbmcgY29weSkKQEAgLTIzOCw2ICsyMzgsNyBA
QCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgdXNpbmcgQmFzZSA9IEZvckluQ29udGV4dDsKICAg
ICBwdWJsaWM6CiAgICAgICAgIHVzaW5nIEdldEluc3QgPSBzdGQ6OnR1cGxlPHVuc2lnbmVkLCBp
bnQ+OworICAgICAgICB1c2luZyBJbkluc3QgPSBHZXRJbnN0OwogCiAgICAgICAgIFN0cnVjdHVy
ZUZvckluQ29udGV4dChSZWdpc3RlcklEKiBsb2NhbFJlZ2lzdGVyLCBSZWdpc3RlcklEKiBpbmRl
eFJlZ2lzdGVyLCBSZWdpc3RlcklEKiBwcm9wZXJ0eVJlZ2lzdGVyLCBSZWdpc3RlcklEKiBlbnVt
ZXJhdG9yUmVnaXN0ZXIsIHVuc2lnbmVkIGJvZHlCeXRlY29kZVN0YXJ0T2Zmc2V0KQogICAgICAg
ICAgICAgOiBGb3JJbkNvbnRleHQobG9jYWxSZWdpc3RlciwgVHlwZTo6U3RydWN0dXJlRm9ySW4s
IGJvZHlCeXRlY29kZVN0YXJ0T2Zmc2V0KQpAQCAtMjU2LDYgKzI1NywxMSBAQCBuYW1lc3BhY2Ug
SlNDIHsKICAgICAgICAgICAgIG1fZ2V0SW5zdHMuYXBwZW5kKEdldEluc3QgeyBpbnN0SW5kZXgs
IHByb3BlcnR5UmVnSW5kZXggfSk7CiAgICAgICAgIH0KIAorICAgICAgICB2b2lkIGFkZEluSW5z
dCh1bnNpZ25lZCBpbnN0SW5kZXgsIGludCBwcm9wZXJ0eVJlZ0luZGV4KQorICAgICAgICB7Cisg
ICAgICAgICAgICBtX2luSW5zdHMuYXBwZW5kKEluSW5zdCB7IGluc3RJbmRleCwgcHJvcGVydHlS
ZWdJbmRleCB9KTsKKyAgICAgICAgfQorCiAgICAgICAgIHZvaWQgZmluYWxpemUoQnl0ZWNvZGVH
ZW5lcmF0b3ImLCBVbmxpbmtlZENvZGVCbG9ja0dlbmVyYXRvciosIHVuc2lnbmVkIGJvZHlCeXRl
Y29kZUVuZE9mZnNldCk7CiAKICAgICBwcml2YXRlOgpAQCAtMjYzLDYgKzI2OSw3IEBAIG5hbWVz
cGFjZSBKU0MgewogICAgICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gbV9wcm9wZXJ0eVJlZ2lzdGVy
OwogICAgICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gbV9lbnVtZXJhdG9yUmVnaXN0ZXI7CiAgICAg
ICAgIFZlY3RvcjxHZXRJbnN0PiBtX2dldEluc3RzOworICAgICAgICBWZWN0b3I8SW5JbnN0PiBt
X2luSW5zdHM7CiAgICAgfTsKIAogICAgIGNsYXNzIEluZGV4ZWRGb3JJbkNvbnRleHQgOiBwdWJs
aWMgRm9ySW5Db250ZXh0IHsKQEAgLTM4MSw2ICszODgsMTAgQEAgbmFtZXNwYWNlIEpTQyB7CiAg
ICAgICAgIGZyaWVuZCBjbGFzcyBJbmRleGVkRm9ySW5Db250ZXh0OwogICAgICAgICBmcmllbmQg
Y2xhc3MgU3RydWN0dXJlRm9ySW5Db250ZXh0OwogICAgICAgICBmcmllbmQgY2xhc3MgU3RyaWN0
TW9kZVNjb3BlOworCisgICAgICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBPbGRPcFR5cGUsIHR5cGVu
YW1lIE5ld09wVHlwZSwgdHlwZW5hbWUgVHVwbGVUeXBlPgorICAgICAgICBmcmllbmQgdm9pZCBy
ZXdyaXRlT3AoQnl0ZWNvZGVHZW5lcmF0b3ImLCBUdXBsZVR5cGUmKTsKKwogICAgIHB1YmxpYzoK
ICAgICAgICAgdHlwZWRlZiBEZWNsYXJhdGlvblN0YWNrczo6RnVuY3Rpb25TdGFjayBGdW5jdGlv
blN0YWNrOwogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Fic3RyYWN0SW50
ZXJwcmV0ZXJJbmxpbmVzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdBYnN0cmFjdEludGVycHJldGVySW5saW5lcy5oCShyZXZpc2lvbiAyNjIwMzkpCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Fic3RyYWN0SW50ZXJwcmV0ZXJJbmxpbmVzLmgJ
KHdvcmtpbmcgY29weSkKQEAgLTQxMTQsNiArNDExNCw3IEBAIGJvb2wgQWJzdHJhY3RJbnRlcnBy
ZXRlcjxBYnN0cmFjdFN0YXRlVHkKICAgICAgICAgY2xvYmJlcldvcmxkKCk7CiAgICAgICAgIGJy
ZWFrOwogICAgIH0KKyAgICBjYXNlIEluU3RydWN0dXJlUHJvcGVydHk6CiAgICAgY2FzZSBIYXNT
dHJ1Y3R1cmVQcm9wZXJ0eTogewogICAgICAgICBzZXROb25DZWxsVHlwZUZvck5vZGUobm9kZSwg
U3BlY0Jvb2xlYW4pOwogICAgICAgICBjbG9iYmVyV29ybGQoKTsKSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3BwCShyZXZpc2lvbiAyNjIw
MzkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtNzgyNCw2ICs3ODI0LDE1IEBAIHZvaWQgQnl0ZUNvZGVQYXJzZXI6
OnBhcnNlQmxvY2sodW5zaWduZWQKICAgICAgICAgICAgIE5FWFRfT1BDT0RFKG9wX2hhc19zdHJ1
Y3R1cmVfcHJvcGVydHkpOwogICAgICAgICB9CiAKKyAgICAgICAgY2FzZSBvcF9pbl9zdHJ1Y3R1
cmVfcHJvcGVydHk6IHsKKyAgICAgICAgICAgIGF1dG8gYnl0ZWNvZGUgPSBjdXJyZW50SW5zdHJ1
Y3Rpb24tPmFzPE9wSW5TdHJ1Y3R1cmVQcm9wZXJ0eT4oKTsKKyAgICAgICAgICAgIHNldChieXRl
Y29kZS5tX2RzdCwgYWRkVG9HcmFwaChJblN0cnVjdHVyZVByb3BlcnR5LAorICAgICAgICAgICAg
ICAgIGdldChieXRlY29kZS5tX2Jhc2UpLAorICAgICAgICAgICAgICAgIGdldChieXRlY29kZS5t
X3Byb3BlcnR5KSwKKyAgICAgICAgICAgICAgICBnZXQoYnl0ZWNvZGUubV9lbnVtZXJhdG9yKSkp
OworICAgICAgICAgICAgTkVYVF9PUENPREUob3BfaW5fc3RydWN0dXJlX3Byb3BlcnR5KTsKKyAg
ICAgICAgfQorCiAgICAgICAgIGNhc2Ugb3BfaGFzX2luZGV4ZWRfcHJvcGVydHk6IHsKICAgICAg
ICAgICAgIGF1dG8gYnl0ZWNvZGUgPSBjdXJyZW50SW5zdHJ1Y3Rpb24tPmFzPE9wSGFzSW5kZXhl
ZFByb3BlcnR5PigpOwogICAgICAgICAgICAgTm9kZSogYmFzZSA9IGdldChieXRlY29kZS5tX2Jh
c2UpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDYXBhYmlsaXRpZXMuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ2FwYWJpbGl0aWVz
LmNwcAkocmV2aXNpb24gMjYyMDM5KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdD
YXBhYmlsaXRpZXMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNTMsNiArMjUzLDcgQEAgQ2FwYWJp
bGl0eUxldmVsIGNhcGFiaWxpdHlMZXZlbChPcGNvZGVJRAogICAgIGNhc2Ugb3BfZ2V0X2VudW1l
cmFibGVfbGVuZ3RoOgogICAgIGNhc2Ugb3BfaGFzX2dlbmVyaWNfcHJvcGVydHk6CiAgICAgY2Fz
ZSBvcF9oYXNfc3RydWN0dXJlX3Byb3BlcnR5OgorICAgIGNhc2Ugb3BfaW5fc3RydWN0dXJlX3By
b3BlcnR5OgogICAgIGNhc2Ugb3BfaGFzX2luZGV4ZWRfcHJvcGVydHk6CiAgICAgY2FzZSBvcF9n
ZXRfZGlyZWN0X3BuYW1lOgogICAgIGNhc2Ugb3BfZ2V0X3Byb3BlcnR5X2VudW1lcmF0b3I6Cklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Nsb2JiZXJpemUuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Nsb2JiZXJpemUuaAkocmV2aXNpb24g
MjYyMDM5KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDbG9iYmVyaXplLmgJKHdv
cmtpbmcgY29weSkKQEAgLTY5Nyw2ICs2OTcsNyBAQCB2b2lkIGNsb2JiZXJpemUoR3JhcGgmIGdy
YXBoLCBOb2RlKiBub2RlCiAgICAgY2FzZSBUb09iamVjdDoKICAgICBjYXNlIEhhc0dlbmVyaWNQ
cm9wZXJ0eToKICAgICBjYXNlIEhhc1N0cnVjdHVyZVByb3BlcnR5OgorICAgIGNhc2UgSW5TdHJ1
Y3R1cmVQcm9wZXJ0eToKICAgICBjYXNlIEdldFByb3BlcnR5RW51bWVyYXRvcjoKICAgICBjYXNl
IEdldERpcmVjdFBuYW1lOgogICAgIGNhc2UgSW5zdGFuY2VPZkN1c3RvbToKSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRG9lc0dDLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR0RvZXNHQy5jcHAJKHJldmlzaW9uIDI2MjAzOSkKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRG9lc0dDLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
Mjk3LDYgKzI5Nyw3IEBAIGJvb2wgZG9lc0dDKEdyYXBoJiBncmFwaCwgTm9kZSogbm9kZSkKICAg
ICBjYXNlIEhhc0luZGV4ZWRQcm9wZXJ0eToKICAgICBjYXNlIEhhc093blByb3BlcnR5OgogICAg
IGNhc2UgSGFzU3RydWN0dXJlUHJvcGVydHk6CisgICAgY2FzZSBJblN0cnVjdHVyZVByb3BlcnR5
OgogICAgIGNhc2UgSW5CeUlkOgogICAgIGNhc2UgSW5CeVZhbDoKICAgICBjYXNlIEluc3RhbmNl
T2Y6CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0ZpeHVwUGhhc2UuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRml4dXBQaGFzZS5jcHAJ
KHJldmlzaW9uIDI2MjAzOSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRml4dXBQ
aGFzZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTIxNzksNiArMjE3OSwxMiBAQCBwcml2YXRlOgog
ICAgICAgICAgICAgZml4RWRnZTxLbm93bkNlbGxVc2U+KG5vZGUtPmNoaWxkMygpKTsKICAgICAg
ICAgICAgIGJyZWFrOwogICAgICAgICB9CisgICAgICAgIGNhc2UgSW5TdHJ1Y3R1cmVQcm9wZXJ0
eTogeworICAgICAgICAgICAgZml4RWRnZTxDZWxsVXNlPihub2RlLT5jaGlsZDEoKSk7CisgICAg
ICAgICAgICBmaXhFZGdlPFN0cmluZ1VzZT4obm9kZS0+Y2hpbGQyKCkpOworICAgICAgICAgICAg
Zml4RWRnZTxLbm93bkNlbGxVc2U+KG5vZGUtPmNoaWxkMygpKTsKKyAgICAgICAgICAgIGJyZWFr
OworICAgICAgICB9CiAgICAgICAgIGNhc2UgSGFzSW5kZXhlZFByb3BlcnR5OiB7CiAgICAgICAg
ICAgICBub2RlLT5zZXRBcnJheU1vZGUoCiAgICAgICAgICAgICAgICAgbm9kZS0+YXJyYXlNb2Rl
KCkucmVmaW5lKApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlVHlwZS5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZVR5cGUuaAko
cmV2aXNpb24gMjYyMDM5KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlVHlw
ZS5oCSh3b3JraW5nIGNvcHkpCkBAIC00OTAsNiArNDkwLDcgQEAgbmFtZXNwYWNlIEpTQyB7IG5h
bWVzcGFjZSBERkcgewogICAgIC8qIE11c3QgZ2VuZXJhdGUgYmVjYXVzZSBvZiBQcm94aWVzIG9u
IHRoZSBwcm90b3R5cGUgY2hhaW4gKi8gXAogICAgIG1hY3JvKEhhc0luZGV4ZWRQcm9wZXJ0eSwg
Tm9kZU11c3RHZW5lcmF0ZSB8IE5vZGVSZXN1bHRCb29sZWFuIHwgTm9kZUhhc1ZhckFyZ3MpIFwK
ICAgICBtYWNybyhIYXNTdHJ1Y3R1cmVQcm9wZXJ0eSwgTm9kZVJlc3VsdEJvb2xlYW4pIFwKKyAg
ICBtYWNybyhJblN0cnVjdHVyZVByb3BlcnR5LCBOb2RlTXVzdEdlbmVyYXRlIHwgTm9kZVJlc3Vs
dEJvb2xlYW4pIFwKICAgICBtYWNybyhIYXNHZW5lcmljUHJvcGVydHksIE5vZGVSZXN1bHRCb29s
ZWFuKSBcCiAgICAgbWFjcm8oR2V0RGlyZWN0UG5hbWUsIE5vZGVNdXN0R2VuZXJhdGUgfCBOb2Rl
SGFzVmFyQXJncyB8IE5vZGVSZXN1bHRKUykgXAogICAgIG1hY3JvKEdldFByb3BlcnR5RW51bWVy
YXRvciwgTm9kZU11c3RHZW5lcmF0ZSB8IE5vZGVSZXN1bHRKUykgXApJbmRleDogU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdPcGVyYXRpb25zLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR09wZXJhdGlvbnMuY3BwCShyZXZpc2lvbiAyNjIwMzkpCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09wZXJhdGlvbnMuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC0yMjc0LDYgKzIyNzQsMTUgQEAgRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBv
cGVyYXRpb25IYQogICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwgSlNWYWx1ZTo6ZW5jb2Rl
KGpzQm9vbGVhbihiYXNlLT5oYXNQcm9wZXJ0eUdlbmVyaWMoZ2xvYmFsT2JqZWN0LCBwcm9wZXJ0
eU5hbWUsIFByb3BlcnR5U2xvdDo6SW50ZXJuYWxNZXRob2RUeXBlOjpHZXRPd25Qcm9wZXJ0eSkp
KSk7CiB9CiAKK0VuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uSW5TdHJ1Y3R1
cmVQcm9wZXJ0eShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU0NlbGwqIGJhc2UsIEpT
Q2VsbCogcHJvcGVydHkpCit7CisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOworICAg
IENhbGxGcmFtZSogY2FsbEZyYW1lID0gREVDTEFSRV9DQUxMX0ZSQU1FKHZtKTsKKyAgICBKSVRP
cGVyYXRpb25Qcm9sb2d1ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0sIGNhbGxGcmFtZSk7CisK
KyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzQm9vbGVhbihDb21tb25TbG93UGF0aHM6Om9w
SW5CeVZhbChnbG9iYWxPYmplY3QsIGJhc2UsIHByb3BlcnR5KSkpOworfQorCiBzaXplX3QgSklU
X09QRVJBVElPTiBvcGVyYXRpb25IYXNJbmRleGVkUHJvcGVydHlCeUludChKU0dsb2JhbE9iamVj
dCogZ2xvYmFsT2JqZWN0LCBKU0NlbGwqIGJhc2VDZWxsLCBpbnQzMl90IHN1YnNjcmlwdCwgaW50
MzJfdCBpbnRlcm5hbE1ldGhvZFR5cGUpCiB7CiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52
bSgpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPcGVyYXRpb25zLmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPcGVyYXRpb25zLmgJKHJl
dmlzaW9uIDI2MjAzOSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT3BlcmF0aW9u
cy5oCSh3b3JraW5nIGNvcHkpCkBAIC05OSw2ICs5OSw3IEBAIEVuY29kZWRKU1ZhbHVlIEpJVF9P
UEVSQVRJT04gb3BlcmF0aW9uR2UKIEVuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0
aW9uR2V0UHJvdG90eXBlT2YoSlNHbG9iYWxPYmplY3QqLCBFbmNvZGVkSlNWYWx1ZSkgV1RGX0lO
VEVSTkFMOwogRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25HZXRQcm90b3R5
cGVPZk9iamVjdChKU0dsb2JhbE9iamVjdCosIEpTT2JqZWN0KikgV1RGX0lOVEVSTkFMOwogRW5j
b2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25IYXNHZW5lcmljUHJvcGVydHkoSlNH
bG9iYWxPYmplY3QqLCBFbmNvZGVkSlNWYWx1ZSwgSlNDZWxsKik7CitFbmNvZGVkSlNWYWx1ZSBK
SVRfT1BFUkFUSU9OIG9wZXJhdGlvbkluU3RydWN0dXJlUHJvcGVydHkoSlNHbG9iYWxPYmplY3Qq
LCBKU0NlbGwqLCBKU0NlbGwqKTsKIHNpemVfdCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkhhc0lu
ZGV4ZWRQcm9wZXJ0eUJ5SW50KEpTR2xvYmFsT2JqZWN0KiwgSlNDZWxsKiwgaW50MzJfdCwgaW50
MzJfdCk7CiBKU0NlbGwqIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uR2V0UHJvcGVydHlFbnVtZXJh
dG9yKEpTR2xvYmFsT2JqZWN0KiwgRW5jb2RlZEpTVmFsdWUpOwogSlNDZWxsKiBKSVRfT1BFUkFU
SU9OIG9wZXJhdGlvbkdldFByb3BlcnR5RW51bWVyYXRvckNlbGwoSlNHbG9iYWxPYmplY3QqLCBK
U0NlbGwqKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUHJlZGljdGlvblBy
b3BhZ2F0aW9uUGhhc2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHUHJlZGljdGlvblByb3BhZ2F0aW9uUGhhc2UuY3BwCShyZXZpc2lvbiAyNjIwMzkpCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1ByZWRpY3Rpb25Qcm9wYWdhdGlvblBoYXNl
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTIwNiw2ICsxMjA2LDcgQEAgcHJpdmF0ZToKICAgICAg
ICAgfQogICAgICAgICBjYXNlIEhhc0dlbmVyaWNQcm9wZXJ0eToKICAgICAgICAgY2FzZSBIYXNT
dHJ1Y3R1cmVQcm9wZXJ0eToKKyAgICAgICAgY2FzZSBJblN0cnVjdHVyZVByb3BlcnR5OgogICAg
ICAgICBjYXNlIEhhc0luZGV4ZWRQcm9wZXJ0eTogewogICAgICAgICAgICAgc2V0UHJlZGljdGlv
bihTcGVjQm9vbGVhbik7CiAgICAgICAgICAgICBicmVhazsKSW5kZXg6IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHU2FmZVRvRXhlY3V0ZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHU2FmZVRvRXhlY3V0ZS5oCShyZXZpc2lvbiAyNjIwMzkpCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NhZmVUb0V4ZWN1dGUuaAkod29ya2luZyBjb3B5
KQpAQCAtNjE4LDYgKzYxOCw3IEBAIGJvb2wgc2FmZVRvRXhlY3V0ZShBYnN0cmFjdFN0YXRlVHlw
ZSYgc3QKICAgICBjYXNlIEdldEVudW1lcmFibGVMZW5ndGg6CiAgICAgY2FzZSBIYXNHZW5lcmlj
UHJvcGVydHk6CiAgICAgY2FzZSBIYXNTdHJ1Y3R1cmVQcm9wZXJ0eToKKyAgICBjYXNlIEluU3Ry
dWN0dXJlUHJvcGVydHk6CiAgICAgY2FzZSBHZXREaXJlY3RQbmFtZToKICAgICBjYXNlIEdldFBy
b3BlcnR5RW51bWVyYXRvcjoKICAgICBjYXNlIFBoYW50b21OZXdPYmplY3Q6CkluZGV4OiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUMzJfNjQuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQzMl82NC5j
cHAJKHJldmlzaW9uIDI2MjAzOSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3Bl
Y3VsYXRpdmVKSVQzMl82NC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQwNTcsNiArNDA1NywxMCBA
QCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlKE5vZGUqIG5vZGUpCiAgICAgICAgIGNvbXBp
bGVIYXNTdHJ1Y3R1cmVQcm9wZXJ0eShub2RlKTsKICAgICAgICAgYnJlYWs7CiAgICAgfQorICAg
IGNhc2UgSW5TdHJ1Y3R1cmVQcm9wZXJ0eTogeworICAgICAgICBjb21waWxlSW5TdHJ1Y3R1cmVQ
cm9wZXJ0eShub2RlKTsKKyAgICAgICAgYnJlYWs7CisgICAgfQogICAgIGNhc2UgSGFzSW5kZXhl
ZFByb3BlcnR5OiB7CiAgICAgICAgIGNvbXBpbGVIYXNJbmRleGVkUHJvcGVydHkobm9kZSk7CiAg
ICAgICAgIGJyZWFrOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxh
dGl2ZUpJVDY0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R1NwZWN1bGF0aXZlSklUNjQuY3BwCShyZXZpc2lvbiAyNjIwMzkpCisrKyBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00
OTg4LDYgKzQ5ODgsMTAgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShOb2RlKiBub2Rl
KQogICAgICAgICBjb21waWxlSGFzU3RydWN0dXJlUHJvcGVydHkobm9kZSk7CiAgICAgICAgIGJy
ZWFrOwogICAgIH0KKyAgICBjYXNlIEluU3RydWN0dXJlUHJvcGVydHk6IHsKKyAgICAgICAgY29t
cGlsZUluU3RydWN0dXJlUHJvcGVydHkobm9kZSk7CisgICAgICAgIGJyZWFrOworICAgIH0KICAg
ICBjYXNlIEhhc0luZGV4ZWRQcm9wZXJ0eTogewogICAgICAgICBjb21waWxlSGFzSW5kZXhlZFBy
b3BlcnR5KG5vZGUpOwogICAgICAgICBicmVhazsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwCShyZXZpc2lvbiAyNjIwMzkpCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmNwcAkod29ya2luZyBj
b3B5KQpAQCAtMTI4MjYsNiArMTI4MjYsMzMgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGls
ZUhhc1N0cnVjdHVyZQogICAgIGJsZXNzZWRCb29sZWFuUmVzdWx0KHJlc3VsdFJlZ3MucGF5bG9h
ZEdQUigpLCBub2RlKTsKIH0KIAordm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUluU3RydWN0
dXJlUHJvcGVydHkoTm9kZSogbm9kZSkKK3sKKyAgICBTcGVjdWxhdGVDZWxsT3BlcmFuZCBiYXNl
KHRoaXMsIG5vZGUtPmNoaWxkMSgpKTsKKyAgICBTcGVjdWxhdGVDZWxsT3BlcmFuZCBwcm9wZXJ0
eSh0aGlzLCBub2RlLT5jaGlsZDIoKSk7CisgICAgU3BlY3VsYXRlQ2VsbE9wZXJhbmQgZW51bWVy
YXRvcih0aGlzLCBub2RlLT5jaGlsZDMoKSk7CisgICAgSlNWYWx1ZVJlZ3NUZW1wb3JhcnkgcmVz
dWx0KHRoaXMpOworCisgICAgR1BSUmVnIGJhc2VHUFIgPSBiYXNlLmdwcigpOworICAgIEdQUlJl
ZyBwcm9wZXJ0eUdQUiA9IHByb3BlcnR5LmdwcigpOworICAgIEpTVmFsdWVSZWdzIHJlc3VsdFJl
Z3MgPSByZXN1bHQucmVncygpOworCisgICAgQ0NhbGxIZWxwZXJzOjpKdW1wTGlzdCB3cm9uZ1N0
cnVjdHVyZTsKKworICAgIG1faml0LmxvYWQzMihNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhiYXNl
R1BSLCBKU0NlbGw6OnN0cnVjdHVyZUlET2Zmc2V0KCkpLCByZXN1bHRSZWdzLnBheWxvYWRHUFIo
KSk7CisgICAgd3JvbmdTdHJ1Y3R1cmUuYXBwZW5kKG1faml0LmJyYW5jaDMyKE1hY3JvQXNzZW1i
bGVyOjpOb3RFcXVhbCwKKyAgICAgICAgcmVzdWx0UmVncy5wYXlsb2FkR1BSKCksCisgICAgICAg
IE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKGVudW1lcmF0b3IuZ3ByKCksIEpTUHJvcGVydHlOYW1l
RW51bWVyYXRvcjo6Y2FjaGVkU3RydWN0dXJlSURPZmZzZXQoKSkpKTsKKworICAgIG1vdmVUcnVl
VG8ocmVzdWx0UmVncy5wYXlsb2FkR1BSKCkpOworICAgIE1hY3JvQXNzZW1ibGVyOjpKdW1wIGRv
bmUgPSBtX2ppdC5qdW1wKCk7CisKKyAgICBkb25lLmxpbmsoJm1faml0KTsKKworICAgIGFkZFNs
b3dQYXRoR2VuZXJhdG9yKHNsb3dQYXRoQ2FsbCh3cm9uZ1N0cnVjdHVyZSwgdGhpcywgb3BlcmF0
aW9uSW5TdHJ1Y3R1cmVQcm9wZXJ0eSwgcmVzdWx0UmVncywgVHJ1c3RlZEltbVB0cjo6d2Vha1Bv
aW50ZXIobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFu
dGljKSksIGJhc2VHUFIsIHByb3BlcnR5R1BSKSk7CisgICAgYmxlc3NlZEJvb2xlYW5SZXN1bHQo
cmVzdWx0UmVncy5wYXlsb2FkR1BSKCksIG5vZGUpOworfQorCiB2b2lkIFNwZWN1bGF0aXZlSklU
Ojpjb21waWxlR2V0UHJvcGVydHlFbnVtZXJhdG9yKE5vZGUqIG5vZGUpCiB7CiAgICAgaWYgKG5v
ZGUtPmNoaWxkMSgpLnVzZUtpbmQoKSA9PSBDZWxsVXNlKSB7CkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5oCShyZXZpc2lvbiAyNjIwMzkpCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmgJKHdvcmtpbmcg
Y29weSkKQEAgLTE0NDcsNiArMTQ0Nyw3IEBAIHB1YmxpYzoKICAgICB2b2lkIGNvbXBpbGVQdXRC
eUlkRGlyZWN0KE5vZGUqKTsKICAgICB2b2lkIGNvbXBpbGVQdXRCeUlkV2l0aFRoaXMoTm9kZSop
OwogICAgIHZvaWQgY29tcGlsZUhhc1N0cnVjdHVyZVByb3BlcnR5KE5vZGUqKTsKKyAgICB2b2lk
IGNvbXBpbGVJblN0cnVjdHVyZVByb3BlcnR5KE5vZGUqKTsKICAgICB2b2lkIGNvbXBpbGVHZXRE
aXJlY3RQbmFtZShOb2RlKik7CiAgICAgdm9pZCBjb21waWxlR2V0UHJvcGVydHlFbnVtZXJhdG9y
KE5vZGUqKTsKICAgICB2b2lkIGNvbXBpbGVHZXRFbnVtZXJhdG9yUG5hbWUoTm9kZSopOwpJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExDYXBhYmlsaXRpZXMuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMQ2FwYWJpbGl0aWVzLmNwcAkocmV2
aXNpb24gMjYyMDM5KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExDYXBhYmlsaXRp
ZXMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yODAsNiArMjgwLDcgQEAgaW5saW5lIENhcGFiaWxp
dHlMZXZlbCBjYW5Db21waWxlKE5vZGUqIAogICAgIGNhc2UgQm9vbGVhblRvTnVtYmVyOgogICAg
IGNhc2UgSGFzR2VuZXJpY1Byb3BlcnR5OgogICAgIGNhc2UgSGFzU3RydWN0dXJlUHJvcGVydHk6
CisgICAgY2FzZSBJblN0cnVjdHVyZVByb3BlcnR5OgogICAgIGNhc2UgSGFzSW5kZXhlZFByb3Bl
cnR5OgogICAgIGNhc2UgR2V0RGlyZWN0UG5hbWU6CiAgICAgY2FzZSBHZXRFbnVtZXJhYmxlTGVu
Z3RoOgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExMb3dlckRGR1RvQjMuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTG93ZXJERkdUb0Iz
LmNwcAkocmV2aXNpb24gMjYyMDM5KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExM
b3dlckRGR1RvQjMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNDc3LDYgKzE0NzcsOSBAQCBwcml2
YXRlOgogICAgICAgICBjYXNlIEhhc1N0cnVjdHVyZVByb3BlcnR5OgogICAgICAgICAgICAgY29t
cGlsZUhhc1N0cnVjdHVyZVByb3BlcnR5KCk7CiAgICAgICAgICAgICBicmVhazsKKyAgICAgICAg
Y2FzZSBJblN0cnVjdHVyZVByb3BlcnR5OgorICAgICAgICAgICAgY29tcGlsZUluU3RydWN0dXJl
UHJvcGVydHkoKTsKKyAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIEdldERpcmVjdFBu
YW1lOgogICAgICAgICAgICAgY29tcGlsZUdldERpcmVjdFBuYW1lKCk7CiAgICAgICAgICAgICBi
cmVhazsKQEAgLTEyMjQxLDM1ICsxMjI0NCw1MSBAQCBwcml2YXRlOgogICAgICAgICBzZXRKU1Zh
bHVlKHZtQ2FsbChJbnQ2NCwgb3BlcmF0aW9uSGFzR2VuZXJpY1Byb3BlcnR5LCB3ZWFrUG9pbnRl
cihnbG9iYWxPYmplY3QpLCBiYXNlLCBwcm9wZXJ0eSkpOwogICAgIH0KIAotICAgIHZvaWQgY29t
cGlsZUhhc1N0cnVjdHVyZVByb3BlcnR5KCkKKyAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgU2xvd1Bh
dGhDYWxsPgorICAgIHZvaWQgY29tcGlsZUhhc1N0cnVjdHVyZVByb3BlcnR5SW1wbChMVmFsdWUg
YmFzZSwgU2xvd1BhdGhDYWxsIHNsb3dQYXRoQ2FsbCkKICAgICB7CiAgICAgICAgIEpTR2xvYmFs
T2JqZWN0KiBnbG9iYWxPYmplY3QgPSBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihtX25vZGUtPm9y
aWdpbi5zZW1hbnRpYyk7Ci0gICAgICAgIExWYWx1ZSBiYXNlID0gbG93SlNWYWx1ZShtX25vZGUt
PmNoaWxkMSgpKTsKICAgICAgICAgTFZhbHVlIHByb3BlcnR5ID0gbG93U3RyaW5nKG1fbm9kZS0+
Y2hpbGQyKCkpOwogICAgICAgICBMVmFsdWUgZW51bWVyYXRvciA9IGxvd0NlbGwobV9ub2RlLT5j
aGlsZDMoKSk7CiAKKyAgICAgICAgTEJhc2ljQmxvY2sgaXNDZWxsQ2FzZSA9IG1fb3V0Lm5ld0Js
b2NrKCk7CiAgICAgICAgIExCYXNpY0Jsb2NrIGNvcnJlY3RTdHJ1Y3R1cmUgPSBtX291dC5uZXdC
bG9jaygpOwotICAgICAgICBMQmFzaWNCbG9jayB3cm9uZ1N0cnVjdHVyZSA9IG1fb3V0Lm5ld0Js
b2NrKCk7CisgICAgICAgIExCYXNpY0Jsb2NrIHNsb3dQYXRoID0gbV9vdXQubmV3QmxvY2soKTsK
ICAgICAgICAgTEJhc2ljQmxvY2sgY29udGludWF0aW9uID0gbV9vdXQubmV3QmxvY2soKTsKIAor
ICAgICAgICBtX291dC5icmFuY2goaXNDZWxsKGJhc2UsIHByb3ZlblR5cGUobV9ub2RlLT5jaGls
ZDEoKSkpLAorICAgICAgICAgICAgdXN1YWxseShpc0NlbGxDYXNlKSwgcmFyZWx5KHNsb3dQYXRo
KSk7CisKKyAgICAgICAgTEJhc2ljQmxvY2sgbGFzdE5leHQgPSBtX291dC5hcHBlbmRUbyhpc0Nl
bGxDYXNlLCBjb3JyZWN0U3RydWN0dXJlKTsKKwogICAgICAgICBtX291dC5icmFuY2gobV9vdXQu
bm90RXF1YWwoCiAgICAgICAgICAgICBtX291dC5sb2FkMzIoYmFzZSwgbV9oZWFwcy5KU0NlbGxf
c3RydWN0dXJlSUQpLAogICAgICAgICAgICAgbV9vdXQubG9hZDMyKGVudW1lcmF0b3IsIG1faGVh
cHMuSlNQcm9wZXJ0eU5hbWVFbnVtZXJhdG9yX2NhY2hlZFN0cnVjdHVyZUlEKSksCi0gICAgICAg
ICAgICByYXJlbHkod3JvbmdTdHJ1Y3R1cmUpLCB1c3VhbGx5KGNvcnJlY3RTdHJ1Y3R1cmUpKTsK
KyAgICAgICAgICAgIHJhcmVseShzbG93UGF0aCksIHVzdWFsbHkoY29ycmVjdFN0cnVjdHVyZSkp
OwogCi0gICAgICAgIExCYXNpY0Jsb2NrIGxhc3ROZXh0ID0gbV9vdXQuYXBwZW5kVG8oY29ycmVj
dFN0cnVjdHVyZSwgd3JvbmdTdHJ1Y3R1cmUpOworICAgICAgICBtX291dC5hcHBlbmRUbyhjb3Jy
ZWN0U3RydWN0dXJlLCBzbG93UGF0aCk7CiAgICAgICAgIFZhbHVlRnJvbUJsb2NrIGNvcnJlY3RT
dHJ1Y3R1cmVSZXN1bHQgPSBtX291dC5hbmNob3IobV9vdXQuYm9vbGVhblRydWUpOwogICAgICAg
ICBtX291dC5qdW1wKGNvbnRpbnVhdGlvbik7CiAKLSAgICAgICAgbV9vdXQuYXBwZW5kVG8od3Jv
bmdTdHJ1Y3R1cmUsIGNvbnRpbnVhdGlvbik7Ci0gICAgICAgIFZhbHVlRnJvbUJsb2NrIHdyb25n
U3RydWN0dXJlUmVzdWx0ID0gbV9vdXQuYW5jaG9yKAorICAgICAgICBtX291dC5hcHBlbmRUbyhz
bG93UGF0aCwgY29udGludWF0aW9uKTsKKyAgICAgICAgVmFsdWVGcm9tQmxvY2sgc2xvd1BhdGhS
ZXN1bHQgPSBtX291dC5hbmNob3IoCiAgICAgICAgICAgICBtX291dC5lcXVhbCgKICAgICAgICAg
ICAgICAgICBtX291dC5jb25zdEludDY0KEpTVmFsdWU6OmVuY29kZShqc0Jvb2xlYW4odHJ1ZSkp
KSwgCi0gICAgICAgICAgICAgICAgdm1DYWxsKEludDY0LCBvcGVyYXRpb25IYXNHZW5lcmljUHJv
cGVydHksIHdlYWtQb2ludGVyKGdsb2JhbE9iamVjdCksIGJhc2UsIHByb3BlcnR5KSkpOworICAg
ICAgICAgICAgICAgIHZtQ2FsbChJbnQ2NCwgc2xvd1BhdGhDYWxsLCB3ZWFrUG9pbnRlcihnbG9i
YWxPYmplY3QpLCBiYXNlLCBwcm9wZXJ0eSkpKTsKICAgICAgICAgbV9vdXQuanVtcChjb250aW51
YXRpb24pOwogCiAgICAgICAgIG1fb3V0LmFwcGVuZFRvKGNvbnRpbnVhdGlvbiwgbGFzdE5leHQp
OwotICAgICAgICBzZXRCb29sZWFuKG1fb3V0LnBoaShJbnQzMiwgY29ycmVjdFN0cnVjdHVyZVJl
c3VsdCwgd3JvbmdTdHJ1Y3R1cmVSZXN1bHQpKTsKKyAgICAgICAgc2V0Qm9vbGVhbihtX291dC5w
aGkoSW50MzIsIGNvcnJlY3RTdHJ1Y3R1cmVSZXN1bHQsIHNsb3dQYXRoUmVzdWx0KSk7CisgICAg
fQorCisgICAgdm9pZCBjb21waWxlSGFzU3RydWN0dXJlUHJvcGVydHkoKQorICAgIHsKKyAgICAg
ICAgY29tcGlsZUhhc1N0cnVjdHVyZVByb3BlcnR5SW1wbChsb3dKU1ZhbHVlKG1fbm9kZS0+Y2hp
bGQxKCkpLCBvcGVyYXRpb25IYXNHZW5lcmljUHJvcGVydHkpOworICAgIH0KKworICAgIHZvaWQg
Y29tcGlsZUluU3RydWN0dXJlUHJvcGVydHkoKQorICAgIHsKKyAgICAgICAgY29tcGlsZUhhc1N0
cnVjdHVyZVByb3BlcnR5SW1wbChsb3dDZWxsKG1fbm9kZS0+Y2hpbGQxKCkpLCBvcGVyYXRpb25J
blN0cnVjdHVyZVByb3BlcnR5KTsKICAgICB9CiAKICAgICB2b2lkIGNvbXBpbGVHZXREaXJlY3RQ
bmFtZSgpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuY3BwCShyZXZpc2lvbiAyNjIwMzkp
CisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTQ2MCw2ICs0NjAsNyBAQCB2b2lkIEpJVDo6cHJpdmF0ZUNvbXBpbGVNYWluUGFzcygpCiAgICAg
ICAgIERFRklORV9PUChvcF9wdXRfdG9fYXJndW1lbnRzKQogCiAgICAgICAgIERFRklORV9PUChv
cF9oYXNfc3RydWN0dXJlX3Byb3BlcnR5KQorICAgICAgICBERUZJTkVfT1Aob3BfaW5fc3RydWN0
dXJlX3Byb3BlcnR5KQogICAgICAgICBERUZJTkVfT1Aob3BfaGFzX2luZGV4ZWRfcHJvcGVydHkp
CiAgICAgICAgIERFRklORV9PUChvcF9nZXRfZGlyZWN0X3BuYW1lKQogICAgICAgICBERUZJTkVf
T1Aob3BfZW51bWVyYXRvcl9zdHJ1Y3R1cmVfcG5hbWUpCkBAIC02MTYsNiArNjE3LDcgQEAgdm9p
ZCBKSVQ6OnByaXZhdGVDb21waWxlU2xvd0Nhc2VzKCkKICAgICAgICAgREVGSU5FX1NMT1dDQVNF
X1NMT1dfT1AobnN0cmljdGVxKQogICAgICAgICBERUZJTkVfU0xPV0NBU0VfU0xPV19PUChnZXRf
ZGlyZWN0X3BuYW1lKQogICAgICAgICBERUZJTkVfU0xPV0NBU0VfU0xPV19PUChoYXNfc3RydWN0
dXJlX3Byb3BlcnR5KQorICAgICAgICBERUZJTkVfU0xPV0NBU0VfU0xPV19PUChpbl9zdHJ1Y3R1
cmVfcHJvcGVydHkpCiAgICAgICAgIERFRklORV9TTE9XQ0FTRV9TTE9XX09QKHJlc29sdmVfc2Nv
cGUpCiAgICAgICAgIERFRklORV9TTE9XQ0FTRV9TTE9XX09QKGNoZWNrX3RkeikKICAgICAgICAg
REVGSU5FX1NMT1dDQVNFX1NMT1dfT1AodG9fcHJvcGVydHlfa2V5KQpJbmRleDogU291cmNlL0ph
dmFTY3JpcHRDb3JlL2ppdC9KSVQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvaml0L0pJVC5oCShyZXZpc2lvbiAyNjIwMzkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
aml0L0pJVC5oCSh3b3JraW5nIGNvcHkpCkBAIC02MTksNiArNjE5LDcgQEAgbmFtZXNwYWNlIEpT
QyB7CiAgICAgICAgIHZvaWQgZW1pdF9vcF91bnNpZ25lZChjb25zdCBJbnN0cnVjdGlvbiopOwog
ICAgICAgICB2b2lkIGVtaXRfb3BfdXJzaGlmdChjb25zdCBJbnN0cnVjdGlvbiopOwogICAgICAg
ICB2b2lkIGVtaXRfb3BfaGFzX3N0cnVjdHVyZV9wcm9wZXJ0eShjb25zdCBJbnN0cnVjdGlvbiop
OworICAgICAgICB2b2lkIGVtaXRfb3BfaW5fc3RydWN0dXJlX3Byb3BlcnR5KGNvbnN0IEluc3Ry
dWN0aW9uKik7CiAgICAgICAgIHZvaWQgZW1pdF9vcF9oYXNfaW5kZXhlZF9wcm9wZXJ0eShjb25z
dCBJbnN0cnVjdGlvbiopOwogICAgICAgICB2b2lkIGVtaXRfb3BfZ2V0X2RpcmVjdF9wbmFtZShj
b25zdCBJbnN0cnVjdGlvbiopOwogICAgICAgICB2b2lkIGVtaXRfb3BfZW51bWVyYXRvcl9zdHJ1
Y3R1cmVfcG5hbWUoY29uc3QgSW5zdHJ1Y3Rpb24qKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9qaXQvSklUT3Bjb2RlczMyXzY0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvaml0L0pJVE9wY29kZXMzMl82NC5jcHAJKHJldmlzaW9uIDI2MjAzOSkKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3Bjb2RlczMyXzY0LmNwcAkod29ya2luZyBjb3B5
KQpAQCAtMTE1MCw2ICsxMTUwLDI1IEBAIHZvaWQgSklUOjplbWl0X29wX2hhc19zdHJ1Y3R1cmVf
cHJvcGVydHkKICAgICBlbWl0U3RvcmVCb29sKGRzdCwgcmVnVDApOwogfQogCit2b2lkIEpJVDo6
ZW1pdF9vcF9pbl9zdHJ1Y3R1cmVfcHJvcGVydHkoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJ
bnN0cnVjdGlvbikKK3sKKyAgICBhdXRvIGJ5dGVjb2RlID0gY3VycmVudEluc3RydWN0aW9uLT5h
czxPcEluU3RydWN0dXJlUHJvcGVydHk+KCk7CisgICAgVmlydHVhbFJlZ2lzdGVyIGRzdCA9IGJ5
dGVjb2RlLm1fZHN0OworICAgIFZpcnR1YWxSZWdpc3RlciBiYXNlID0gYnl0ZWNvZGUubV9iYXNl
OworICAgIFZpcnR1YWxSZWdpc3RlciBlbnVtZXJhdG9yID0gYnl0ZWNvZGUubV9lbnVtZXJhdG9y
OworCisgICAgZW1pdExvYWRQYXlsb2FkKGJhc2UsIHJlZ1QwKTsKKyAgICBlbWl0SnVtcFNsb3dD
YXNlSWZOb3RKU0NlbGwoYmFzZSk7CisKKyAgICBlbWl0TG9hZFBheWxvYWQoZW51bWVyYXRvciwg
cmVnVDEpOworCisgICAgbG9hZDMyKEFkZHJlc3MocmVnVDAsIEpTQ2VsbDo6c3RydWN0dXJlSURP
ZmZzZXQoKSksIHJlZ1QwKTsKKyAgICBhZGRTbG93Q2FzZShicmFuY2gzMihOb3RFcXVhbCwgcmVn
VDAsIEFkZHJlc3MocmVnVDEsIEpTUHJvcGVydHlOYW1lRW51bWVyYXRvcjo6Y2FjaGVkU3RydWN0
dXJlSURPZmZzZXQoKSkpKTsKKyAgICAKKyAgICBtb3ZlKFRydXN0ZWRJbW0zMigxKSwgcmVnVDAp
OworICAgIGVtaXRTdG9yZUJvb2woZHN0LCByZWdUMCk7Cit9CisKIHZvaWQgSklUOjpwcml2YXRl
Q29tcGlsZUhhc0luZGV4ZWRQcm9wZXJ0eShCeVZhbEluZm8qIGJ5VmFsSW5mbywgUmV0dXJuQWRk
cmVzc1B0ciByZXR1cm5BZGRyZXNzLCBKSVRBcnJheU1vZGUgYXJyYXlNb2RlKQogewogICAgIGNv
bnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24gPSBtX2NvZGVCbG9jay0+aW5zdHJ1
Y3Rpb25zKCkuYXQoYnlWYWxJbmZvLT5ieXRlY29kZUluZGV4KS5wdHIoKTsKSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3Bjb2Rlcy5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGNvZGVzLmNwcAkocmV2aXNpb24gMjYyMDM5KQorKysg
U291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGNvZGVzLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtMTM3Miw2ICsxMzcyLDI0IEBAIHZvaWQgSklUOjplbWl0X29wX2hhc19zdHJ1Y3R1cmVfcHJv
cGVydHkKICAgICBlbWl0UHV0VmlydHVhbFJlZ2lzdGVyKGRzdCk7CiB9CiAKK3ZvaWQgSklUOjpl
bWl0X29wX2luX3N0cnVjdHVyZV9wcm9wZXJ0eShjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudElu
c3RydWN0aW9uKQoreworICAgIGF1dG8gYnl0ZWNvZGUgPSBjdXJyZW50SW5zdHJ1Y3Rpb24tPmFz
PE9wSW5TdHJ1Y3R1cmVQcm9wZXJ0eT4oKTsKKyAgICBWaXJ0dWFsUmVnaXN0ZXIgZHN0ID0gYnl0
ZWNvZGUubV9kc3Q7CisgICAgVmlydHVhbFJlZ2lzdGVyIGJhc2UgPSBieXRlY29kZS5tX2Jhc2U7
CisgICAgVmlydHVhbFJlZ2lzdGVyIGVudW1lcmF0b3IgPSBieXRlY29kZS5tX2VudW1lcmF0b3I7
CisKKyAgICBlbWl0R2V0VmlydHVhbFJlZ2lzdGVyKGJhc2UsIHJlZ1QwKTsKKyAgICBlbWl0R2V0
VmlydHVhbFJlZ2lzdGVyKGVudW1lcmF0b3IsIHJlZ1QxKTsKKyAgICBlbWl0SnVtcFNsb3dDYXNl
SWZOb3RKU0NlbGwocmVnVDAsIGJhc2UpOworCisgICAgbG9hZDMyKEFkZHJlc3MocmVnVDAsIEpT
Q2VsbDo6c3RydWN0dXJlSURPZmZzZXQoKSksIHJlZ1QwKTsKKyAgICBhZGRTbG93Q2FzZShicmFu
Y2gzMihOb3RFcXVhbCwgcmVnVDAsIEFkZHJlc3MocmVnVDEsIEpTUHJvcGVydHlOYW1lRW51bWVy
YXRvcjo6Y2FjaGVkU3RydWN0dXJlSURPZmZzZXQoKSkpKTsKKyAgICAKKyAgICBtb3ZlKFRydXN0
ZWRJbW02NChKU1ZhbHVlOjplbmNvZGUoanNCb29sZWFuKHRydWUpKSksIHJlZ1QwKTsKKyAgICBl
bWl0UHV0VmlydHVhbFJlZ2lzdGVyKGRzdCk7Cit9CisKIHZvaWQgSklUOjpwcml2YXRlQ29tcGls
ZUhhc0luZGV4ZWRQcm9wZXJ0eShCeVZhbEluZm8qIGJ5VmFsSW5mbywgUmV0dXJuQWRkcmVzc1B0
ciByZXR1cm5BZGRyZXNzLCBKSVRBcnJheU1vZGUgYXJyYXlNb2RlKQogewogICAgIGNvbnN0IElu
c3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24gPSBtX2NvZGVCbG9jay0+aW5zdHJ1Y3Rpb25z
KCkuYXQoYnlWYWxJbmZvLT5ieXRlY29kZUluZGV4KS5wdHIoKTsKSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9sbGludC9MTEludE9mZnNldHNFeHRyYWN0b3IuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludE9mZnNldHNFeHRyYWN0b3IuY3BwCShy
ZXZpc2lvbiAyNjIwMzkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRPZmZz
ZXRzRXh0cmFjdG9yLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDksNiArNDksNyBAQAogI2luY2x1
ZGUgIkpTTGV4aWNhbEVudmlyb25tZW50LmgiCiAjaW5jbHVkZSAiSlNNb2R1bGVSZWNvcmQuaCIK
ICNpbmNsdWRlICJKU09iamVjdC5oIgorI2luY2x1ZGUgIkpTUHJvcGVydHlOYW1lRW51bWVyYXRv
ci5oIgogI2luY2x1ZGUgIkpTU3RyaW5nLmgiCiAjaW5jbHVkZSAiSlNUeXBlSW5mby5oIgogI2lu
Y2x1ZGUgIkp1bXBUYWJsZS5oIgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xv
d0xldmVsSW50ZXJwcmV0ZXI2NC5hc20KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXI2NC5hc20JKHJldmlzaW9uIDI2MjAzOSkKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyNjQuYXNtCSh3
b3JraW5nIGNvcHkpCkBAIC0yODQ3LDMgKzI4NDcsMjcgQEAgbGxpbnRPcChvcF9sb2dfc2hhZG93
X2NoaWNrZW5fdGFpbCwgT3BMbwogICAgIGNhbGxTbG93UGF0aChfbGxpbnRfc2xvd19wYXRoX2xv
Z19zaGFkb3dfY2hpY2tlbl90YWlsKQogICAgIGRpc3BhdGNoKCkKIGVuZCkKKworbWFjcm8gaGFz
U3RydWN0dXJlUHJvcGVydHlJbXBsKHNpemUsIGdldCwgZGlzcGF0Y2gsIHJldHVybiwgc2xvd1Bh
dGhDYWxsKQorICAgIGdldChtX2Jhc2UsIHQwKQorICAgIGxvYWRDb25zdGFudE9yVmFyaWFibGUo
c2l6ZSwgdDAsIHQxKQorICAgIGJ0cW56IHQxLCBub3RDZWxsTWFzaywgLnNsb3dQYXRoCisKKyAg
ICBsb2FkVmFyaWFibGUoZ2V0LCBtX2VudW1lcmF0b3IsIHQwKQorICAgIGxvYWRpIEpTQ2VsbDo6
bV9zdHJ1Y3R1cmVJRFt0MV0sIHQxCisgICAgYmluZXEgdDEsIEpTUHJvcGVydHlOYW1lRW51bWVy
YXRvcjo6bV9jYWNoZWRTdHJ1Y3R1cmVJRFt0MF0sIC5zbG93UGF0aAorCisgICAgcmV0dXJuKFZh
bHVlVHJ1ZSkKKworLnNsb3dQYXRoOgorICAgIGNhbGxTbG93UGF0aChzbG93UGF0aENhbGwpCisg
ICAgZGlzcGF0Y2goKQorZW5kCisKK2xsaW50T3BXaXRoUmV0dXJuKG9wX2hhc19zdHJ1Y3R1cmVf
cHJvcGVydHksIE9wSGFzU3RydWN0dXJlUHJvcGVydHksIG1hY3JvIChzaXplLCBnZXQsIGRpc3Bh
dGNoLCByZXR1cm4pCisgICAgaGFzU3RydWN0dXJlUHJvcGVydHlJbXBsKHNpemUsIGdldCwgZGlz
cGF0Y2gsICByZXR1cm4sIF9zbG93X3BhdGhfaGFzX3N0cnVjdHVyZV9wcm9wZXJ0eSkKK2VuZCkK
KworbGxpbnRPcFdpdGhSZXR1cm4ob3BfaW5fc3RydWN0dXJlX3Byb3BlcnR5LCBPcEluU3RydWN0
dXJlUHJvcGVydHksIG1hY3JvIChzaXplLCBnZXQsIGRpc3BhdGNoLCByZXR1cm4pCisgICAgaGFz
U3RydWN0dXJlUHJvcGVydHlJbXBsKHNpemUsIGdldCwgZGlzcGF0Y2gsICByZXR1cm4sIF9zbG93
X3BhdGhfaW5fc3RydWN0dXJlX3Byb3BlcnR5KQorZW5kKQpJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIuYXNtCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyLmFzbQkocmV2aXNpb24g
MjYyMDM5KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0
ZXIuYXNtCSh3b3JraW5nIGNvcHkpCkBAIC0xNzY5LDcgKzE3NjksMTIgQEAgc2xvd1BhdGhPcChn
cmVhdGVyKQogc2xvd1BhdGhPcChncmVhdGVyZXEpCiBzbG93UGF0aE9wKGhhc19nZW5lcmljX3By
b3BlcnR5KQogc2xvd1BhdGhPcChoYXNfaW5kZXhlZF9wcm9wZXJ0eSkKLXNsb3dQYXRoT3AoaGFz
X3N0cnVjdHVyZV9wcm9wZXJ0eSkKKworaWYgbm90IEpTVkFMVUU2NAorICAgIHNsb3dQYXRoT3Ao
aGFzX3N0cnVjdHVyZV9wcm9wZXJ0eSkKKyAgICBzbG93UGF0aE9wKGluX3N0cnVjdHVyZV9wcm9w
ZXJ0eSkKK2VuZAorCiBzbG93UGF0aE9wKGluX2J5X2lkKQogc2xvd1BhdGhPcChpbl9ieV92YWwp
CiBzbG93UGF0aE9wKGlzX2Z1bmN0aW9uKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvQ29tbW9uU2xvd1BhdGhzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9Db21tb25TbG93UGF0aHMuY3BwCShyZXZpc2lvbiAyNjIwMzkpCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25TbG93UGF0aHMuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0xMDUxLDE2ICsxMDUxLDMzIEBAIFNMT1dfUEFUSF9ERUNMKHNsb3dfcGF0aF9o
YXNfc3RydWN0dXJlX3AKICAgICBKU09iamVjdCogYmFzZSA9IEdFVChieXRlY29kZS5tX2Jhc2Up
LmpzVmFsdWUoKS50b09iamVjdChnbG9iYWxPYmplY3QpOwogICAgIENIRUNLX0VYQ0VQVElPTigp
OwogICAgIEpTVmFsdWUgcHJvcGVydHkgPSBHRVQoYnl0ZWNvZGUubV9wcm9wZXJ0eSkuanNWYWx1
ZSgpOwotICAgIEFTU0VSVChwcm9wZXJ0eS5pc1N0cmluZygpKTsKKyAgICBSRUxFQVNFX0FTU0VS
VChwcm9wZXJ0eS5pc1N0cmluZygpKTsKKyNpZiBVU0UoSlNWQUxVRTMyXzY0KQogICAgIEpTUHJv
cGVydHlOYW1lRW51bWVyYXRvciogZW51bWVyYXRvciA9IGpzQ2FzdDxKU1Byb3BlcnR5TmFtZUVu
dW1lcmF0b3IqPihHRVQoYnl0ZWNvZGUubV9lbnVtZXJhdG9yKS5qc1ZhbHVlKCkuYXNDZWxsKCkp
OwogICAgIGlmIChiYXNlLT5zdHJ1Y3R1cmUodm0pLT5pZCgpID09IGVudW1lcmF0b3ItPmNhY2hl
ZFN0cnVjdHVyZUlEKCkpCiAgICAgICAgIFJFVFVSTihqc0Jvb2xlYW4odHJ1ZSkpOworI2VuZGlm
CiAgICAgSlNTdHJpbmcqIHN0cmluZyA9IGFzU3RyaW5nKHByb3BlcnR5KTsKICAgICBhdXRvIHBy
b3BlcnR5TmFtZSA9IHN0cmluZy0+dG9JZGVudGlmaWVyKGdsb2JhbE9iamVjdCk7CiAgICAgQ0hF
Q0tfRVhDRVBUSU9OKCk7CiAgICAgUkVUVVJOKGpzQm9vbGVhbihiYXNlLT5oYXNQcm9wZXJ0eUdl
bmVyaWMoZ2xvYmFsT2JqZWN0LCBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdDo6SW50ZXJuYWxN
ZXRob2RUeXBlOjpHZXRPd25Qcm9wZXJ0eSkpKTsKIH0KIAorU0xPV19QQVRIX0RFQ0woc2xvd19w
YXRoX2luX3N0cnVjdHVyZV9wcm9wZXJ0eSkKK3sKKyAgICBCRUdJTigpOworICAgIGF1dG8gYnl0
ZWNvZGUgPSBwYy0+YXM8T3BJblN0cnVjdHVyZVByb3BlcnR5PigpOworICAgIEpTVmFsdWUgYmFz
ZSA9IEdFVChieXRlY29kZS5tX2Jhc2UpLmpzVmFsdWUoKTsKKyNpZiBVU0UoSlNWQUxVRTMyXzY0
KQorICAgIEpTUHJvcGVydHlOYW1lRW51bWVyYXRvciogZW51bWVyYXRvciA9IGpzQ2FzdDxKU1By
b3BlcnR5TmFtZUVudW1lcmF0b3IqPihHRVQoYnl0ZWNvZGUubV9lbnVtZXJhdG9yKS5qc1ZhbHVl
KCkuYXNDZWxsKCkpOworICAgIGlmIChiYXNlLmlzQ2VsbCgpICYmIGJhc2UuYXNDZWxsKCktPnN0
cnVjdHVyZSh2bSktPmlkKCkgPT0gZW51bWVyYXRvci0+Y2FjaGVkU3RydWN0dXJlSUQoKSkKKyAg
ICAgICAgUkVUVVJOKGpzQm9vbGVhbih0cnVlKSk7CisjZW5kaWYKKyAgICBKU1ZhbHVlIHByb3Bl
cnR5ID0gR0VUKGJ5dGVjb2RlLm1fcHJvcGVydHkpLmpzVmFsdWUoKTsKKyAgICBSRUxFQVNFX0FT
U0VSVChwcm9wZXJ0eS5pc1N0cmluZygpKTsKKyAgICBSRVRVUk4oanNCb29sZWFuKENvbW1vblNs
b3dQYXRoczo6b3BJbkJ5VmFsKGdsb2JhbE9iamVjdCwgYmFzZSwgYXNTdHJpbmcocHJvcGVydHkp
KSkpOworfQorCiBTTE9XX1BBVEhfREVDTChzbG93X3BhdGhfaGFzX2dlbmVyaWNfcHJvcGVydHkp
CiB7CiAgICAgQkVHSU4oKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Nv
bW1vblNsb3dQYXRocy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0NvbW1vblNsb3dQYXRocy5oCShyZXZpc2lvbiAyNjIwMzkpCisrKyBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9Db21tb25TbG93UGF0aHMuaAkod29ya2luZyBjb3B5KQpAQCAtMjU0
LDYgKzI1NCw3IEBAIFNMT1dfUEFUSF9ISURERU5fREVDTChzbG93X3BhdGhfdG9fcHJvcGUKIFNM
T1dfUEFUSF9ISURERU5fREVDTChzbG93X3BhdGhfZ2V0X2VudW1lcmFibGVfbGVuZ3RoKTsKIFNM
T1dfUEFUSF9ISURERU5fREVDTChzbG93X3BhdGhfaGFzX2dlbmVyaWNfcHJvcGVydHkpOwogU0xP
V19QQVRIX0hJRERFTl9ERUNMKHNsb3dfcGF0aF9oYXNfc3RydWN0dXJlX3Byb3BlcnR5KTsKK1NM
T1dfUEFUSF9ISURERU5fREVDTChzbG93X3BhdGhfaW5fc3RydWN0dXJlX3Byb3BlcnR5KTsKIFNM
T1dfUEFUSF9ISURERU5fREVDTChzbG93X3BhdGhfaGFzX2luZGV4ZWRfcHJvcGVydHkpOwogU0xP
V19QQVRIX0hJRERFTl9ERUNMKHNsb3dfcGF0aF9nZXRfZGlyZWN0X3BuYW1lKTsKIFNMT1dfUEFU
SF9ISURERU5fREVDTChzbG93X3BhdGhfZ2V0X3Byb3BlcnR5X2VudW1lcmF0b3IpOwpJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNQcm9wZXJ0eU5hbWVFbnVtZXJhdG9yLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNQcm9wZXJ0eU5h
bWVFbnVtZXJhdG9yLmgJKHJldmlzaW9uIDI2MjAzOSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0pTUHJvcGVydHlOYW1lRW51bWVyYXRvci5oCSh3b3JraW5nIGNvcHkpCkBAIC04
Nyw2ICs4Nyw4IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgdm9pZCB2aXNpdENoaWxkcmVuKEpTQ2Vs
bCosIFNsb3RWaXNpdG9yJik7CiAKIHByaXZhdGU6CisgICAgZnJpZW5kIGNsYXNzIExMSW50T2Zm
c2V0c0V4dHJhY3RvcjsKKwogICAgIEpTUHJvcGVydHlOYW1lRW51bWVyYXRvcihWTSYsIFN0cnVj
dHVyZSosIHVpbnQzMl90LCB1aW50MzJfdCwgV3JpdGVCYXJyaWVyPEpTU3RyaW5nPiosIHVuc2ln
bmVkKTsKICAgICB2b2lkIGZpbmlzaENyZWF0aW9uKFZNJiwgUmVmUHRyPFByb3BlcnR5TmFtZUFy
cmF5RGF0YT4mJik7CiAK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>400069</attachid>
            <date>2020-05-22 13:02:04 -0700</date>
            <delta_ts>2020-05-22 15:31:18 -0700</delta_ts>
            <desc>patch</desc>
            <filename>a-backup.diff</filename>
            <type>text/plain</type>
            <size>42739</size>
            <attacher name="Saam Barati">saam</attacher>
            
              <data encoding="base64">SW5kZXg6IEpTVGVzdHMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIEpTVGVzdHMvQ2hhbmdlTG9n
CShyZXZpc2lvbiAyNjIwMzkpCisrKyBKU1Rlc3RzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpA
QCAtMSwzICsxLDMyIEBACisyMDIwLTA1LTIxICBTYWFtIEJhcmF0aSAgPHNiYXJhdGlAYXBwbGUu
Y29tPgorCisgICAgICAgIGluX2J5X3ZhbCBpbnNpZGUgc3RydWN0dXJlIHByb3BlcnR5IGZvci1p
biBsb29wIHNob3VsZCB1c2UgYW4gb3Bjb2RlIGxpa2UgaGFzX3N0cnVjdHVyZV9wcm9wZXJ0eSBi
dXQgZm9yICJpbiIKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTIxMjIzOQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgICogbWljcm9iZW5jaG1hcmtzL2luLWJ5LXZhbC1pbnNpZGUtZm9yLWluLWxvb3AuanM6IEFk
ZGVkLgorICAgICAgICAoYXNzZXJ0KToKKyAgICAgICAgKGNvdW50KToKKyAgICAgICAgKiBzdHJl
c3MvaW4tYnktdmFsLWluc2lkZS1mb3ItaW4tbG9vcC5qczogQWRkZWQuCisgICAgICAgIChhc3Nl
cnQpOgorICAgICAgICAodGVzdDEuY291bnQpOgorICAgICAgICAodGVzdDEpOgorICAgICAgICAo
dGVzdDIuY291bnQpOgorICAgICAgICAodGVzdDIpOgorICAgICAgICAodGVzdDMuY291bnQpOgor
ICAgICAgICAodGVzdDMpOgorICAgICAgICAodGVzdDQuY291bnQpOgorICAgICAgICAodGVzdDQp
OgorICAgICAgICAodGVzdDUuY291bnQpOgorICAgICAgICAodGVzdDUpOgorICAgICAgICAodGVz
dDYuY291bnQpOgorICAgICAgICAodGVzdDYpOgorICAgICAgICAodGVzdDcuY291bnQpOgorICAg
ICAgICAodGVzdDcpOgorICAgICAgICAodGVzdDguY291bnQpOgorICAgICAgICAodGVzdDgpOgor
CiAyMDIwLTA1LTIxICBBbGV4ZXkgU2h2YXlrYSAgPHNodmFpa2FsZXNoQGdtYWlsLmNvbT4KIAog
ICAgICAgICBVc2UgQGlzVW5kZWZpbmVkT3JOdWxsIGluc3RlYWQgb2YgYWJzdHJhY3QgZXF1YWxp
dHkgd2l0aCBudWxsCkluZGV4OiBKU1Rlc3RzL21pY3JvYmVuY2htYXJrcy9pbi1ieS12YWwtaW5z
aWRlLWZvci1pbi1sb29wLmpzCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIEpTVGVzdHMvbWljcm9iZW5jaG1hcmtz
L2luLWJ5LXZhbC1pbnNpZGUtZm9yLWluLWxvb3AuanMJKG5vbmV4aXN0ZW50KQorKysgSlNUZXN0
cy9taWNyb2JlbmNobWFya3MvaW4tYnktdmFsLWluc2lkZS1mb3ItaW4tbG9vcC5qcwkod29ya2lu
ZyBjb3B5KQpAQCAtMCwwICsxLDI1IEBACitmdW5jdGlvbiBhc3NlcnQoYikgeworICAgIGlmICgh
YikKKyAgICAgICAgdGhyb3cgbmV3IEVycm9yOworfQorCitmdW5jdGlvbiBjb3VudChvKSB7Cisg
ICAgbGV0IGMgPSAwOworICAgIGZvciAobGV0IHAgaW4gbykgeworICAgICAgICBpZiAocCBpbiBv
KQorICAgICAgICAgICAgKytjOworICAgIH0KKyAgICByZXR1cm4gYzsKK30KK25vSW5saW5lKGNv
dW50KTsKKworbGV0IG8gPSB7CisgICAgYToyMCwKKyAgICBiOjMwLAorICAgIGM6NDAsCisgICAg
ZDo1MAorfTsKKworZm9yIChsZXQgaSA9IDA7IGkgPCAzMDAwMDA7ICsraSkgeworICAgIGFzc2Vy
dChjb3VudChvKSA9PT0gNCk7Cit9CkluZGV4OiBKU1Rlc3RzL3N0cmVzcy9pbi1ieS12YWwtaW5z
aWRlLWZvci1pbi1sb29wLmpzCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIEpTVGVzdHMvc3RyZXNzL2luLWJ5LXZh
bC1pbnNpZGUtZm9yLWluLWxvb3AuanMJKG5vbmV4aXN0ZW50KQorKysgSlNUZXN0cy9zdHJlc3Mv
aW4tYnktdmFsLWluc2lkZS1mb3ItaW4tbG9vcC5qcwkod29ya2luZyBjb3B5KQpAQCAtMCwwICsx
LDIyNyBAQAorZnVuY3Rpb24gYXNzZXJ0KGIpIHsKKyAgICBpZiAoIWIpCisgICAgICAgIHRocm93
IG5ldyBFcnJvcjsKK30KKworZnVuY3Rpb24gdGVzdDEoKSB7CisgICAgZnVuY3Rpb24gY291bnQo
bykgeworICAgICAgICBsZXQgYyA9IDA7CisgICAgICAgIGZvciAobGV0IHAgaW4gbykgeworICAg
ICAgICAgICAgaWYgKHAgaW4gbykKKyAgICAgICAgICAgICAgICArK2M7CisgICAgICAgIH0KKyAg
ICAgICAgcmV0dXJuIGM7CisgICAgfQorICAgIG5vSW5saW5lKGNvdW50KTsKKworICAgIGxldCBv
ID0geworICAgICAgICBhOjIwLAorICAgICAgICBiOjMwLAorICAgICAgICBjOjQwLAorICAgICAg
ICBkOjUwCisgICAgfTsKKworICAgIGZvciAobGV0IGkgPSAwOyBpIDwgMTAwMDsgKytpKSB7Cisg
ICAgICAgIGFzc2VydChjb3VudChvKSA9PT0gNCk7CisgICAgfQorfQordGVzdDEoKTsKKworZnVu
Y3Rpb24gdGVzdDIoKSB7CisgICAgZnVuY3Rpb24gY291bnQobykgeworICAgICAgICBsZXQgYyA9
IDA7CisgICAgICAgIGZvciAobGV0IHAgaW4gbykgeworICAgICAgICAgICAgaWYgKHAgPT09ICJh
IikKKyAgICAgICAgICAgICAgICBkZWxldGUgby5hOworICAgICAgICAgICAgaWYgKHAgaW4gbykK
KyAgICAgICAgICAgICAgICArK2M7CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIGM7CisgICAg
fQorICAgIG5vSW5saW5lKGNvdW50KTsKKworICAgIGxldCBvID0geworICAgICAgICBhOjIwLAor
ICAgICAgICBiOjMwLAorICAgICAgICBjOjQwLAorICAgICAgICBkOjUwCisgICAgfTsKKworICAg
IGZvciAobGV0IGkgPSAwOyBpIDwgMTAwMDsgKytpKSB7CisgICAgICAgIGFzc2VydChjb3VudChv
KSA9PT0gMyk7CisgICAgfQorfQordGVzdDIoKTsKKworZnVuY3Rpb24gdGVzdDMoKSB7CisgICAg
ZnVuY3Rpb24gY291bnQobykgeworICAgICAgICBsZXQgYyA9IDA7CisgICAgICAgIGZvciAobGV0
IHAgaW4gbykgeworICAgICAgICAgICAgcCA9ICJhIjsKKyAgICAgICAgICAgIGlmIChwIGluIG8p
CisgICAgICAgICAgICAgICAgKytjOworICAgICAgICB9CisgICAgICAgIHJldHVybiBjOworICAg
IH0KKyAgICBub0lubGluZShjb3VudCk7CisKKyAgICBsZXQgbyA9IHsKKyAgICAgICAgYToyMCwK
KyAgICAgICAgYjozMCwKKyAgICAgICAgYzo0MCwKKyAgICAgICAgZDo1MAorICAgIH07CisKKyAg
ICBmb3IgKGxldCBpID0gMDsgaSA8IDEwMDA7ICsraSkgeworICAgICAgICBhc3NlcnQoY291bnQo
bykgPT09IDQpOworICAgIH0KK30KK3Rlc3QzKCk7CisKK2Z1bmN0aW9uIHRlc3Q0KCkgeworICAg
IGZ1bmN0aW9uIGNvdW50KG8pIHsKKyAgICAgICAgbGV0IGMgPSAwOworICAgICAgICBmb3IgKGxl
dCBwIGluIG8pIHsKKyAgICAgICAgICAgIHAgPSAiZiI7CisgICAgICAgICAgICBpZiAocCBpbiBv
KQorICAgICAgICAgICAgICAgICsrYzsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4gYzsKKyAg
ICB9CisgICAgbm9JbmxpbmUoY291bnQpOworCisgICAgbGV0IG8gPSB7CisgICAgICAgIGE6MjAs
CisgICAgICAgIGI6MzAsCisgICAgICAgIGM6NDAsCisgICAgICAgIGQ6NTAKKyAgICB9OworCisg
ICAgZm9yIChsZXQgaSA9IDA7IGkgPCAxMDAwOyArK2kpIHsKKyAgICAgICAgYXNzZXJ0KGNvdW50
KG8pID09PSAwKTsKKyAgICB9Cit9Cit0ZXN0NCgpOworCitmdW5jdGlvbiB0ZXN0NSgpIHsKKyAg
ICBmdW5jdGlvbiBjb3VudChvKSB7CisgICAgICAgIGxldCBjID0gMDsKKyAgICAgICAgZm9yIChs
ZXQgcCBpbiBvKSB7CisgICAgICAgICAgICBkZWxldGUgb1twXTsKKyAgICAgICAgICAgIGlmIChw
IGluIG8pCisgICAgICAgICAgICAgICAgKytjOworICAgICAgICB9CisgICAgICAgIHJldHVybiBj
OworICAgIH0KKyAgICBub0lubGluZShjb3VudCk7CisKKyAgICBsZXQgbyA9IHsKKyAgICAgICAg
YToyMCwKKyAgICAgICAgYjozMCwKKyAgICAgICAgYzo0MCwKKyAgICAgICAgZDo1MAorICAgIH07
CisKKyAgICBsZXQgcCA9IHsKKyAgICAgICAgYToyMCwKKyAgICAgICAgYjozMCwKKyAgICAgICAg
Yzo0MCwKKyAgICAgICAgZDo1MAorICAgIH07CisKKyAgICBvLl9fcHJvdG9fXyA9IHA7CisKKyAg
ICBmb3IgKGxldCBpID0gMDsgaSA8IDEwMDA7ICsraSkgeworICAgICAgICBhc3NlcnQoY291bnQo
bykgPT09IDQpOworICAgIH0KK30KK3Rlc3Q1KCk7CisKK2Z1bmN0aW9uIHRlc3Q2KCkgeworICAg
IGZ1bmN0aW9uIGNvdW50KG8pIHsKKyAgICAgICAgbGV0IGMgPSAwOworICAgICAgICBmb3IgKGxl
dCBwIGluIG8pIHsKKyAgICAgICAgICAgIGRlbGV0ZSBvW3BdOworICAgICAgICAgICAgaWYgKHAg
aW4gbykKKyAgICAgICAgICAgICAgICArK2M7CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIGM7
CisgICAgfQorICAgIG5vSW5saW5lKGNvdW50KTsKKworICAgIGxldCBvID0geworICAgICAgICBh
OjIwLAorICAgICAgICBiOjMwLAorICAgICAgICBjOjQwLAorICAgICAgICBkOjUwCisgICAgfTsK
KworICAgIGxldCBwID0geyB9OworCisgICAgby5fX3Byb3RvX18gPSBwOworCisgICAgZm9yIChs
ZXQgaSA9IDA7IGkgPCAxMDAwOyArK2kpIHsKKyAgICAgICAgYXNzZXJ0KGNvdW50KG8pID09PSAw
KTsKKyAgICB9Cit9Cit0ZXN0NigpOworCitmdW5jdGlvbiB0ZXN0NygpIHsKKyAgICBmdW5jdGlv
biBjb3VudChvLCBvMikgeworICAgICAgICBsZXQgYyA9IDA7CisgICAgICAgIGZvciAobGV0IHAg
aW4gbykgeworICAgICAgICAgICAgaWYgKHAgaW4gbzIpCisgICAgICAgICAgICAgICAgKytjOwor
ICAgICAgICB9CisgICAgICAgIHJldHVybiBjOworICAgIH0KKyAgICBub0lubGluZShjb3VudCk7
CisKKyAgICBmb3IgKGxldCBpID0gMDsgaSA8IDEwMDA7ICsraSkgeworICAgICAgICBsZXQgbyA9
IHthOiAyMH07CisgICAgICAgIGlmICghIShpICUgMikpIHsKKyAgICAgICAgICAgIGxldCBvayA9
IGZhbHNlOworICAgICAgICAgICAgdHJ5IHsKKyAgICAgICAgICAgICAgICBjb3VudChvLCBudWxs
KTsKKyAgICAgICAgICAgIH0gY2F0Y2goZSkgeworICAgICAgICAgICAgICAgIGFzc2VydChlIGlu
c3RhbmNlb2YgVHlwZUVycm9yKTsKKyAgICAgICAgICAgICAgICBvayA9IGUudG9TdHJpbmcoKS5p
bmRleE9mKCJvMiBpcyBub3QgYW4gT2JqZWN0IikgPj0gMDsKKyAgICAgICAgICAgIH0KKyAgICAg
ICAgICAgIGFzc2VydChvayk7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBhc3NlcnQo
Y291bnQobywge30pID09PSAwKTsKKyAgICAgICAgfQorICAgIH0KK30KK3Rlc3Q3KCk7CisKK2Z1
bmN0aW9uIHRlc3Q4KCkgeworICAgIGZ1bmN0aW9uIGNvdW50KG8sIHByb3RvKSB7CisgICAgICAg
IGxldCBjID0gMDsKKyAgICAgICAgZm9yIChsZXQgcCBpbiBvKSB7CisgICAgICAgICAgICBkZWxl
dGUgb1twXTsKKyAgICAgICAgICAgIG8uX19wcm90b19fID0gcHJvdG87CisgICAgICAgICAgICBp
ZiAocCBpbiBvKQorICAgICAgICAgICAgICAgICsrYzsKKyAgICAgICAgfQorICAgICAgICByZXR1
cm4gYzsKKyAgICB9CisgICAgbm9JbmxpbmUoY291bnQpOworCisgICAgbGV0IGhhc093blByb3Bl
cnR5Q2FsbGVkID0gZmFsc2U7CisgICAgbGV0IHAgPSBuZXcgUHJveHkoe30sIHsKKyAgICAgICAg
aGFzKCkgeworICAgICAgICAgICAgaGFzT3duUHJvcGVydHlDYWxsZWQgPSB0cnVlOworICAgICAg
ICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICB9CisgICAgfSk7CisKKyAgICBmb3IgKGxldCBp
ID0gMDsgaSA8IDEwMDA7ICsraSkgeworICAgICAgICBsZXQgbyA9IHsgYToyMCB9OworCisgICAg
ICAgIGFzc2VydChjb3VudChvLCBwKSA9PT0gMCk7CisgICAgICAgIGFzc2VydChoYXNPd25Qcm9w
ZXJ0eUNhbGxlZCA9PT0gdHJ1ZSk7CisgICAgICAgIGhhc093blByb3BlcnR5Q2FsbGVkID0gZmFs
c2U7CisgICAgfQorfQordGVzdDgoKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFu
Z2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2
aXNpb24gMjYyMDM5KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2lu
ZyBjb3B5KQpAQCAtMSwzICsxLDk0IEBACisyMDIwLTA1LTIxICBTYWFtIEJhcmF0aSAgPHNiYXJh
dGlAYXBwbGUuY29tPgorCisgICAgICAgIGluX2J5X3ZhbCBpbnNpZGUgc3RydWN0dXJlIHByb3Bl
cnR5IGZvci1pbiBsb29wIHNob3VsZCB1c2UgYW4gb3Bjb2RlIGxpa2UgaGFzX3N0cnVjdHVyZV9w
cm9wZXJ0eSBidXQgZm9yICJpbiIKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTIxMjIzOQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgIFRoZXJlIGlzIGNvZGUgaW5zaWRlIFNwZWVkb21ldGVyIDIgdGhhdCBpcyBs
aWtlOgorICAgICAgICAKKyAgICAgICAgYGBgCisgICAgICAgIGZvciAobGV0IHAgaW4gbykgewor
ICAgICAgICAgICAgaWYgKHAgaW4gbzIpCisgICAgICAgICAgICAgICAgLi4uCisgICAgICAgIH0K
KyAgICAgICAgYGBgCisgICAgICAgIAorICAgICAgICBXaGVyZSBvIGFuZCBvMiBmcmVxdWVudGx5
IHNoYXJlIHRoZSBzYW1lIHN0cnVjdHVyZS4gRWxtIGRvZXMgdGhpcyB3aGVuIGl0J3MKKyAgICAg
ICAgZGlmZmluZyB0d28gb2JqZWN0cy4gV2UgYWxyZWFkeSBvcHRpbWl6ZSBvMltwXSAoZ2V0X2J5
X3ZhbCkgaW4gdGhlIGFib3ZlIGxvb3AKKyAgICAgICAgZm9yIHN0cnVjdHVyZSBwcm9wZXJ0aWVz
LiBUaGlzIHBhdGNoIGFkZHMgdGhhdCBzYW1lIG9wdGltaXphdGlvbiBmb3IgaW5fYnlfdmFsLgor
ICAgICAgICBCZWNhdXNlIHdlIGFscmVhZHkgZW1pdCBhICJzdHJ1Y3R1cmUiIGxvb3AgZm9yIGZv
ci1pbiwgd2hlcmUgd2UgaXRlcmF0ZSBzdHJ1Y3R1cmUKKyAgICAgICAgcHJvcGVydGllcywgdGhl
IGZhc3QgcGF0aCBmb3IgdGhlIGFib3ZlLCB3aGVyZSBvIGFuZCBvMiBoYXZlIHRoZSBzYW1lCisg
ICAgICAgIHN0cnVjdHVyZSBpcyBzaW1wbHkgYSBzdHJ1Y3R1cmUgY2hlY2sgZm9sbG93ZWQgYnkg
cmV0dXJuIHRydWUuCisgICAgICAgIAorICAgICAgICBUaGlzIHBhdGNoIGludHJvZHVjZXMgdGhl
IG5ldyBvcGNvZGU6IG9wX2luX3N0cnVjdHVyZV9wcm9wZXJ0eS4gSXRzIGZhc3QgcGF0aCBpcyBp
ZGVudGljYWwKKyAgICAgICAgdG8gb3BfaGFzX3N0cnVjdHVyZV9wcm9wZXJ0eS4gSXRzIHNsb3cg
cGF0aCwgaG93ZXZlciwgYmVoYXZlcyBsaWtlICJpbiIsIHdoaWNoCisgICAgICAgIHVzZXMgdGhl
IEhhc1Byb3BlcnR5IGludGVybmFsIG1ldGhvZCwgdW5saWtlIG9wX2hhc19zdHJ1Y3R1cmVfcHJv
cGVydHksCisgICAgICAgIHdoaWNoIHVzZXMgdGhlIEdldE93blByb3BlcnR5IGludGVybmFsIG1l
dGhvZC4gVGhpcyBiZWhhdmlvciBkaWZmZXJlbmNlIGlzCisgICAgICAgIG9ic2VydmFibGUgdXNp
bmcgUHJveHkuCisgICAgICAgIAorICAgICAgICBUaGlzIGEgNSUgcGVyZiBpbXByb3ZlbWVudCBp
biB0aGUgRWxtIHN1YnRlc3QgaW4gU3BlZWRvbWV0ZXIgMi4KKworICAgICAgICAqIGJ5dGVjb2Rl
L0J5dGVjb2RlTGlzdC5yYjoKKyAgICAgICAgKiBieXRlY29kZS9CeXRlY29kZVVzZURlZi5jcHA6
CisgICAgICAgIChKU0M6OmNvbXB1dGVVc2VzRm9yQnl0ZWNvZGVJbmRleEltcGwpOgorICAgICAg
ICAoSlNDOjpjb21wdXRlRGVmc0ZvckJ5dGVjb2RlSW5kZXhJbXBsKToKKyAgICAgICAgKiBieXRl
Y29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuY3BwOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdl
bmVyYXRvcjo6ZW1pdEluQnlWYWwpOgorICAgICAgICAoSlNDOjpyZXdyaXRlT3ApOgorICAgICAg
ICAoSlNDOjpTdHJ1Y3R1cmVGb3JJbkNvbnRleHQ6OmZpbmFsaXplKToKKyAgICAgICAgKiBieXRl
Y29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuaDoKKyAgICAgICAgKEpTQzo6U3RydWN0dXJlRm9y
SW5Db250ZXh0OjphZGRJbkluc3QpOgorICAgICAgICAqIGRmZy9ERkdBYnN0cmFjdEludGVycHJl
dGVySW5saW5lcy5oOgorICAgICAgICAoSlNDOjpERkc6OkFic3RyYWN0SW50ZXJwcmV0ZXI8QWJz
dHJhY3RTdGF0ZVR5cGU+OjpleGVjdXRlRWZmZWN0cyk6CisgICAgICAgICogZGZnL0RGR0J5dGVD
b2RlUGFyc2VyLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpCeXRlQ29kZVBhcnNlcjo6cGFyc2VC
bG9jayk6CisgICAgICAgICogZGZnL0RGR0NhcGFiaWxpdGllcy5jcHA6CisgICAgICAgIChKU0M6
OkRGRzo6Y2FwYWJpbGl0eUxldmVsKToKKyAgICAgICAgKiBkZmcvREZHQ2xvYmJlcml6ZS5oOgor
ICAgICAgICAoSlNDOjpERkc6OmNsb2JiZXJpemUpOgorICAgICAgICAqIGRmZy9ERkdEb2VzR0Mu
Y3BwOgorICAgICAgICAoSlNDOjpERkc6OmRvZXNHQyk6CisgICAgICAgICogZGZnL0RGR0ZpeHVw
UGhhc2UuY3BwOgorICAgICAgICAoSlNDOjpERkc6OkZpeHVwUGhhc2U6OmZpeHVwTm9kZSk6Cisg
ICAgICAgICogZGZnL0RGR05vZGVUeXBlLmg6CisgICAgICAgICogZGZnL0RGR09wZXJhdGlvbnMu
Y3BwOgorICAgICAgICAqIGRmZy9ERkdPcGVyYXRpb25zLmg6CisgICAgICAgICogZGZnL0RGR1By
ZWRpY3Rpb25Qcm9wYWdhdGlvblBoYXNlLmNwcDoKKyAgICAgICAgKiBkZmcvREZHU2FmZVRvRXhl
Y3V0ZS5oOgorICAgICAgICAoSlNDOjpERkc6OnNhZmVUb0V4ZWN1dGUpOgorICAgICAgICAqIGRm
Zy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVK
SVQ6OmNvbXBpbGVJblN0cnVjdHVyZVByb3BlcnR5KToKKyAgICAgICAgKiBkZmcvREZHU3BlY3Vs
YXRpdmVKSVQuaDoKKyAgICAgICAgKiBkZmcvREZHU3BlY3VsYXRpdmVKSVQzMl82NC5jcHA6Cisg
ICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUpOgorICAgICAgICAqIGRm
Zy9ERkdTcGVjdWxhdGl2ZUpJVDY0LmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2
ZUpJVDo6Y29tcGlsZSk6CisgICAgICAgICogZnRsL0ZUTENhcGFiaWxpdGllcy5jcHA6CisgICAg
ICAgIChKU0M6OkZUTDo6Y2FuQ29tcGlsZSk6CisgICAgICAgICogZnRsL0ZUTExvd2VyREZHVG9C
My5jcHA6CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRGR1RvQjM6OmNvbXBpbGVOb2Rl
KToKKyAgICAgICAgKEpTQzo6RlRMOjpERkc6Okxvd2VyREZHVG9CMzo6Y29tcGlsZUhhc1N0cnVj
dHVyZVByb3BlcnR5SW1wbCk6CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRGR1RvQjM6
OmNvbXBpbGVIYXNTdHJ1Y3R1cmVQcm9wZXJ0eSk6CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpM
b3dlckRGR1RvQjM6OmNvbXBpbGVJblN0cnVjdHVyZVByb3BlcnR5KToKKyAgICAgICAgKiBqaXQv
SklULmNwcDoKKyAgICAgICAgKEpTQzo6SklUOjpwcml2YXRlQ29tcGlsZU1haW5QYXNzKToKKyAg
ICAgICAgKEpTQzo6SklUOjpwcml2YXRlQ29tcGlsZVNsb3dDYXNlcyk6CisgICAgICAgICogaml0
L0pJVC5oOgorICAgICAgICAqIGppdC9KSVRPcGNvZGVzLmNwcDoKKyAgICAgICAgKEpTQzo6SklU
OjplbWl0X29wX2luX3N0cnVjdHVyZV9wcm9wZXJ0eSk6CisgICAgICAgICogaml0L0pJVE9wY29k
ZXMzMl82NC5jcHA6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9pbl9zdHJ1Y3R1cmVfcHJv
cGVydHkpOgorICAgICAgICAqIGxsaW50L0xMSW50T2Zmc2V0c0V4dHJhY3Rvci5jcHA6CisgICAg
ICAgICogbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlci5hc206CisgICAgICAgICogbGxpbnQvTG93
TGV2ZWxJbnRlcnByZXRlcjY0LmFzbToKKyAgICAgICAgKiBydW50aW1lL0NvbW1vblNsb3dQYXRo
cy5jcHA6CisgICAgICAgIChKU0M6OlNMT1dfUEFUSF9ERUNMKToKKyAgICAgICAgKiBydW50aW1l
L0NvbW1vblNsb3dQYXRocy5oOgorICAgICAgICAqIHJ1bnRpbWUvSlNPYmplY3QuY3BwOgorICAg
ICAgICAoSlNDOjpKU09iamVjdDo6aGFzUHJvcGVydHlHZW5lcmljIGNvbnN0KToKKyAgICAgICAg
KiBydW50aW1lL0pTUHJvcGVydHlOYW1lRW51bWVyYXRvci5oOgorCiAyMDIwLTA1LTIxICBSb2Jp
biBNb3Jpc3NldCAgPHJtb3Jpc3NldEBhcHBsZS5jb20+CiAKICAgICAgICAgUmVtb3ZlIEFzc2Vt
YmxlckJ1ZmZlcldpdGhDb25zdGFudFBvb2wuaCAoYXMgaXQgaGFzIGJlZW4gZGVhZCBmb3IgeWVh
cnMpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVMaXN0LnJi
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUxp
c3QucmIJKHJldmlzaW9uIDI2MjAzOSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29k
ZS9CeXRlY29kZUxpc3QucmIJKHdvcmtpbmcgY29weSkKQEAgLTExMDUsNiArMTEwNSwxNCBAQCBv
cCA6aGFzX3N0cnVjdHVyZV9wcm9wZXJ0eSwKICAgICAgICAgZW51bWVyYXRvcjogVmlydHVhbFJl
Z2lzdGVyLAogICAgIH0KIAorb3AgOmluX3N0cnVjdHVyZV9wcm9wZXJ0eSwKKyAgICBhcmdzOiB7
CisgICAgICAgIGRzdDogVmlydHVhbFJlZ2lzdGVyLAorICAgICAgICBiYXNlOiBWaXJ0dWFsUmVn
aXN0ZXIsCisgICAgICAgIHByb3BlcnR5OiBWaXJ0dWFsUmVnaXN0ZXIsCisgICAgICAgIGVudW1l
cmF0b3I6IFZpcnR1YWxSZWdpc3RlciwKKyAgICB9CisKIG9wIDpoYXNfZ2VuZXJpY19wcm9wZXJ0
eSwKICAgICBhcmdzOiB7CiAgICAgICAgIGRzdDogVmlydHVhbFJlZ2lzdGVyLApJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlVXNlRGVmLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVVc2VEZWYuY3BwCShy
ZXZpc2lvbiAyNjIwMzkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNv
ZGVVc2VEZWYuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNDYsNiArMjQ2LDcgQEAgdm9pZCBjb21w
dXRlVXNlc0ZvckJ5dGVjb2RlSW5kZXhJbXBsKFZpcgogICAgIFVTRVMoT3BHZXRCeVZhbFdpdGhU
aGlzLCBiYXNlLCB0aGlzVmFsdWUsIHByb3BlcnR5KQogICAgIFVTRVMoT3BJbnN0YW5jZW9mQ3Vz
dG9tLCB2YWx1ZSwgY29uc3RydWN0b3IsIGhhc0luc3RhbmNlVmFsdWUpCiAgICAgVVNFUyhPcEhh
c1N0cnVjdHVyZVByb3BlcnR5LCBiYXNlLCBwcm9wZXJ0eSwgZW51bWVyYXRvcikKKyAgICBVU0VT
KE9wSW5TdHJ1Y3R1cmVQcm9wZXJ0eSwgYmFzZSwgcHJvcGVydHksIGVudW1lcmF0b3IpCiAgICAg
VVNFUyhPcENvbnN0cnVjdFZhcmFyZ3MsIGNhbGxlZSwgdGhpc1ZhbHVlLCBhcmd1bWVudHMpCiAg
ICAgVVNFUyhPcENhbGxWYXJhcmdzLCBjYWxsZWUsIHRoaXNWYWx1ZSwgYXJndW1lbnRzKQogICAg
IFVTRVMoT3BUYWlsQ2FsbFZhcmFyZ3MsIGNhbGxlZSwgdGhpc1ZhbHVlLCBhcmd1bWVudHMpCkBA
IC0zNzQsNiArMzc1LDcgQEAgdm9pZCBjb21wdXRlRGVmc0ZvckJ5dGVjb2RlSW5kZXhJbXBsKHVu
cwogICAgIERFRlMoT3BHZXRFbnVtZXJhYmxlTGVuZ3RoLCBkc3QpCiAgICAgREVGUyhPcEhhc0lu
ZGV4ZWRQcm9wZXJ0eSwgZHN0KQogICAgIERFRlMoT3BIYXNTdHJ1Y3R1cmVQcm9wZXJ0eSwgZHN0
KQorICAgIERFRlMoT3BJblN0cnVjdHVyZVByb3BlcnR5LCBkc3QpCiAgICAgREVGUyhPcEhhc0dl
bmVyaWNQcm9wZXJ0eSwgZHN0KQogICAgIERFRlMoT3BHZXREaXJlY3RQbmFtZSwgZHN0KQogICAg
IERFRlMoT3BHZXRQcm9wZXJ0eUVudW1lcmF0b3IsIGRzdCkKSW5kZXg6IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuY3Bw
CShyZXZpc2lvbiAyNjIwMzkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVy
L0J5dGVjb2RlR2VuZXJhdG9yLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjQ3OSw2ICsyNDc5LDIw
IEBAIFJlZ2lzdGVySUQqIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0SW5zdGEKIAogUmVnaXN0ZXJJ
RCogQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRJbkJ5VmFsKFJlZ2lzdGVySUQqIGRzdCwgUmVnaXN0
ZXJJRCogcHJvcGVydHksIFJlZ2lzdGVySUQqIGJhc2UpCiB7CisgICAgZm9yIChzaXplX3QgaSA9
IG1fZm9ySW5Db250ZXh0U3RhY2suc2l6ZSgpOyBpLS07ICkgeworICAgICAgICBGb3JJbkNvbnRl
eHQmIGNvbnRleHQgPSBtX2ZvckluQ29udGV4dFN0YWNrW2ldLmdldCgpOworICAgICAgICBpZiAo
Y29udGV4dC5sb2NhbCgpICE9IHByb3BlcnR5KQorICAgICAgICAgICAgY29udGludWU7CisKKyAg
ICAgICAgaWYgKCFjb250ZXh0LmlzU3RydWN0dXJlRm9ySW5Db250ZXh0KCkpCisgICAgICAgICAg
ICBicmVhazsKKworICAgICAgICBTdHJ1Y3R1cmVGb3JJbkNvbnRleHQmIHN0cnVjdHVyZUNvbnRl
eHQgPSBjb250ZXh0LmFzU3RydWN0dXJlRm9ySW5Db250ZXh0KCk7CisgICAgICAgIE9wSW5TdHJ1
Y3R1cmVQcm9wZXJ0eTo6ZW1pdDxPcGNvZGVTaXplOjpXaWRlMzI+KHRoaXMsIGRzdCwgYmFzZSwg
cHJvcGVydHksIHN0cnVjdHVyZUNvbnRleHQuZW51bWVyYXRvcigpKTsKKyAgICAgICAgc3RydWN0
dXJlQ29udGV4dC5hZGRJbkluc3QobV9sYXN0SW5zdHJ1Y3Rpb24ub2Zmc2V0KCksIHByb3BlcnR5
LT5pbmRleCgpKTsKKyAgICAgICAgcmV0dXJuIGRzdDsKKyAgICB9CisKICAgICBPcEluQnlWYWw6
OmVtaXQodGhpcywgZHN0LCBiYXNlLCBwcm9wZXJ0eSk7CiAgICAgcmV0dXJuIGRzdDsKIH0KQEAg
LTUxODMsNiArNTE5Nyw0MSBAQCB2b2lkIEZvckluQ29udGV4dDo6ZmluYWxpemUoQnl0ZWNvZGVH
ZW5lCiAgICAgfQogfQogCit0ZW1wbGF0ZSA8dHlwZW5hbWUgT2xkT3BUeXBlLCB0eXBlbmFtZSBU
dXBsZVR5cGU+CitBTFdBWVNfSU5MSU5FIHZvaWQgcmV3cml0ZU9wKEJ5dGVjb2RlR2VuZXJhdG9y
JiBnZW5lcmF0b3IsIFR1cGxlVHlwZSYgaW5zdFR1cGxlKQoreworICAgIHVuc2lnbmVkIGluc3RJ
bmRleCA9IHN0ZDo6Z2V0PDA+KGluc3RUdXBsZSk7CisgICAgaW50IHByb3BlcnR5UmVnSW5kZXgg
PSBzdGQ6OmdldDwxPihpbnN0VHVwbGUpOworICAgIGF1dG8gaW5zdHJ1Y3Rpb24gPSBnZW5lcmF0
b3IubV93cml0ZXIucmVmKGluc3RJbmRleCk7CisgICAgYXV0byBlbmQgPSBpbnN0SW5kZXggKyBp
bnN0cnVjdGlvbi0+c2l6ZSgpOworICAgIEFTU0VSVChpbnN0cnVjdGlvbi0+aXNXaWRlMzIoKSk7
CisKKyAgICBnZW5lcmF0b3IubV93cml0ZXIuc2VlayhpbnN0SW5kZXgpOworCisgICAgYXV0byBi
eXRlY29kZSA9IGluc3RydWN0aW9uLT5hczxPbGRPcFR5cGU+KCk7CisKKyAgICAvLyBkaXNhYmxl
IHBlZXBob2xlIG9wdGltaXphdGlvbnMKKyAgICBnZW5lcmF0b3IubV9sYXN0T3Bjb2RlSUQgPSBv
cF9lbmQ7CisKKyAgICAvLyBDaGFuZ2UgdGhlIG9wY29kZSB0byBnZXRfYnlfdmFsLgorICAgIC8v
IDEuIGRzdCBzdGF5cyB0aGUgc2FtZS4KKyAgICAvLyAyLiBiYXNlIHN0YXlzIHRoZSBzYW1lLgor
ICAgIC8vIDMuIHByb3BlcnR5IGdldHMgc3dpdGNoZWQgdG8gdGhlIG9yaWdpbmFsIHByb3BlcnR5
LgorCisgICAgaWYgY29uc3RleHByIChzdGQ6OmlzX3NhbWU8T2xkT3BUeXBlLCBPcEdldERpcmVj
dFBuYW1lPjo6dmFsdWUpIHsKKyAgICAgICAgc3RhdGljX2Fzc2VydChzaXplb2YoT3BHZXRCeVZh
bCkgPD0gc2l6ZW9mKE9wR2V0RGlyZWN0UG5hbWUpKTsKKyAgICAgICAgT3BHZXRCeVZhbDo6ZW1p
dDxPcGNvZGVTaXplOjpXaWRlMzI+KCZnZW5lcmF0b3IsIGJ5dGVjb2RlLm1fZHN0LCBieXRlY29k
ZS5tX2Jhc2UsIFZpcnR1YWxSZWdpc3Rlcihwcm9wZXJ0eVJlZ0luZGV4KSk7CisgICAgfSBlbHNl
IGlmIGNvbnN0ZXhwciAoc3RkOjppc19zYW1lPE9sZE9wVHlwZSwgT3BJblN0cnVjdHVyZVByb3Bl
cnR5Pjo6dmFsdWUpIHsKKyAgICAgICAgc3RhdGljX2Fzc2VydChzaXplb2YoT3BJbkJ5VmFsKSA8
PSBzaXplb2YoT3BJblN0cnVjdHVyZVByb3BlcnR5KSk7CisgICAgICAgIE9wSW5CeVZhbDo6ZW1p
dDxPcGNvZGVTaXplOjpXaWRlMzI+KCZnZW5lcmF0b3IsIGJ5dGVjb2RlLm1fZHN0LCBieXRlY29k
ZS5tX2Jhc2UsIFZpcnR1YWxSZWdpc3Rlcihwcm9wZXJ0eVJlZ0luZGV4KSk7CisgICAgfSBlbHNl
CisgICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CisKKyAgICAvLyA0LiBub3Ag
b3V0IHRoZSByZW1haW5pbmcgYnl0ZXMKKyAgICB3aGlsZSAoZ2VuZXJhdG9yLm1fd3JpdGVyLnBv
c2l0aW9uKCkgPCBlbmQpCisgICAgICAgIE9wTm9wOjplbWl0PE9wY29kZVNpemU6Ok5hcnJvdz4o
JmdlbmVyYXRvcik7Cit9CisKIHZvaWQgU3RydWN0dXJlRm9ySW5Db250ZXh0OjpmaW5hbGl6ZShC
eXRlY29kZUdlbmVyYXRvciYgZ2VuZXJhdG9yLCBVbmxpbmtlZENvZGVCbG9ja0dlbmVyYXRvciog
Y29kZUJsb2NrLCB1bnNpZ25lZCBib2R5Qnl0ZWNvZGVFbmRPZmZzZXQpCiB7CiAgICAgQmFzZTo6
ZmluYWxpemUoZ2VuZXJhdG9yLCBjb2RlQmxvY2ssIGJvZHlCeXRlY29kZUVuZE9mZnNldCk7CkBA
IC01MTkxLDMwICs1MjQwLDEzIEBAIHZvaWQgU3RydWN0dXJlRm9ySW5Db250ZXh0OjpmaW5hbGl6
ZShCeXQKIAogICAgIE9wY29kZUlEIGxhc3RPcGNvZGVJRCA9IGdlbmVyYXRvci5tX2xhc3RPcGNv
ZGVJRDsKICAgICBJbnN0cnVjdGlvblN0cmVhbTo6TXV0YWJsZVJlZiBsYXN0SW5zdHJ1Y3Rpb24g
PSBnZW5lcmF0b3IubV9sYXN0SW5zdHJ1Y3Rpb247Ci0gICAgZm9yIChjb25zdCBhdXRvJiBpbnN0
VHVwbGUgOiBtX2dldEluc3RzKSB7Ci0gICAgICAgIHVuc2lnbmVkIGluc3RJbmRleCA9IHN0ZDo6
Z2V0PDA+KGluc3RUdXBsZSk7Ci0gICAgICAgIGludCBwcm9wZXJ0eVJlZ0luZGV4ID0gc3RkOjpn
ZXQ8MT4oaW5zdFR1cGxlKTsKLSAgICAgICAgYXV0byBpbnN0cnVjdGlvbiA9IGdlbmVyYXRvci5t
X3dyaXRlci5yZWYoaW5zdEluZGV4KTsKLSAgICAgICAgYXV0byBlbmQgPSBpbnN0SW5kZXggKyBp
bnN0cnVjdGlvbi0+c2l6ZSgpOwotICAgICAgICBBU1NFUlQoaW5zdHJ1Y3Rpb24tPmlzV2lkZTMy
KCkpOwotCi0gICAgICAgIGdlbmVyYXRvci5tX3dyaXRlci5zZWVrKGluc3RJbmRleCk7Ci0KLSAg
ICAgICAgYXV0byBieXRlY29kZSA9IGluc3RydWN0aW9uLT5hczxPcEdldERpcmVjdFBuYW1lPigp
OwotCi0gICAgICAgIC8vIGRpc2FibGUgcGVlcGhvbGUgb3B0aW1pemF0aW9ucwotICAgICAgICBn
ZW5lcmF0b3IubV9sYXN0T3Bjb2RlSUQgPSBvcF9lbmQ7Ci0KLSAgICAgICAgLy8gQ2hhbmdlIHRo
ZSBvcGNvZGUgdG8gZ2V0X2J5X3ZhbC4KLSAgICAgICAgLy8gMS4gZHN0IHN0YXlzIHRoZSBzYW1l
LgotICAgICAgICAvLyAyLiBiYXNlIHN0YXlzIHRoZSBzYW1lLgotICAgICAgICAvLyAzLiBwcm9w
ZXJ0eSBnZXRzIHN3aXRjaGVkIHRvIHRoZSBvcmlnaW5hbCBwcm9wZXJ0eS4KLSAgICAgICAgT3BH
ZXRCeVZhbDo6ZW1pdDxPcGNvZGVTaXplOjpXaWRlMzI+KCZnZW5lcmF0b3IsIGJ5dGVjb2RlLm1f
ZHN0LCBieXRlY29kZS5tX2Jhc2UsIFZpcnR1YWxSZWdpc3Rlcihwcm9wZXJ0eVJlZ0luZGV4KSk7
CiAKLSAgICAgICAgLy8gNC4gbm9wIG91dCB0aGUgcmVtYWluaW5nIGJ5dGVzCi0gICAgICAgIHdo
aWxlIChnZW5lcmF0b3IubV93cml0ZXIucG9zaXRpb24oKSA8IGVuZCkKLSAgICAgICAgICAgIE9w
Tm9wOjplbWl0PE9wY29kZVNpemU6Ok5hcnJvdz4oJmdlbmVyYXRvcik7Ci0gICAgfQorICAgIGZv
ciAoY29uc3QgYXV0byYgaW5zdFR1cGxlIDogbV9nZXRJbnN0cykKKyAgICAgICAgcmV3cml0ZU9w
PE9wR2V0RGlyZWN0UG5hbWU+KGdlbmVyYXRvciwgaW5zdFR1cGxlKTsKKworICAgIGZvciAoY29u
c3QgYXV0byYgaW5zdFR1cGxlIDogbV9pbkluc3RzKQorICAgICAgICByZXdyaXRlT3A8T3BJblN0
cnVjdHVyZVByb3BlcnR5PihnZW5lcmF0b3IsIGluc3RUdXBsZSk7CisKICAgICBnZW5lcmF0b3Iu
bV93cml0ZXIuc2VlayhnZW5lcmF0b3IubV93cml0ZXIuc2l6ZSgpKTsKICAgICBpZiAoZ2VuZXJh
dG9yLm1fbGFzdEluc3RydWN0aW9uLm9mZnNldCgpICsgZ2VuZXJhdG9yLm1fbGFzdEluc3RydWN0
aW9uLT5zaXplKCkgIT0gZ2VuZXJhdG9yLm1fd3JpdGVyLnNpemUoKSkgewogICAgICAgICBnZW5l
cmF0b3IubV9sYXN0T3Bjb2RlSUQgPSBsYXN0T3Bjb2RlSUQ7CkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5oCShy
ZXZpc2lvbiAyNjIwMzkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5
dGVjb2RlR2VuZXJhdG9yLmgJKHdvcmtpbmcgY29weSkKQEAgLTIzOCw2ICsyMzgsNyBAQCBuYW1l
c3BhY2UgSlNDIHsKICAgICAgICAgdXNpbmcgQmFzZSA9IEZvckluQ29udGV4dDsKICAgICBwdWJs
aWM6CiAgICAgICAgIHVzaW5nIEdldEluc3QgPSBzdGQ6OnR1cGxlPHVuc2lnbmVkLCBpbnQ+Owor
ICAgICAgICB1c2luZyBJbkluc3QgPSBHZXRJbnN0OwogCiAgICAgICAgIFN0cnVjdHVyZUZvcklu
Q29udGV4dChSZWdpc3RlcklEKiBsb2NhbFJlZ2lzdGVyLCBSZWdpc3RlcklEKiBpbmRleFJlZ2lz
dGVyLCBSZWdpc3RlcklEKiBwcm9wZXJ0eVJlZ2lzdGVyLCBSZWdpc3RlcklEKiBlbnVtZXJhdG9y
UmVnaXN0ZXIsIHVuc2lnbmVkIGJvZHlCeXRlY29kZVN0YXJ0T2Zmc2V0KQogICAgICAgICAgICAg
OiBGb3JJbkNvbnRleHQobG9jYWxSZWdpc3RlciwgVHlwZTo6U3RydWN0dXJlRm9ySW4sIGJvZHlC
eXRlY29kZVN0YXJ0T2Zmc2V0KQpAQCAtMjU2LDYgKzI1NywxMSBAQCBuYW1lc3BhY2UgSlNDIHsK
ICAgICAgICAgICAgIG1fZ2V0SW5zdHMuYXBwZW5kKEdldEluc3QgeyBpbnN0SW5kZXgsIHByb3Bl
cnR5UmVnSW5kZXggfSk7CiAgICAgICAgIH0KIAorICAgICAgICB2b2lkIGFkZEluSW5zdCh1bnNp
Z25lZCBpbnN0SW5kZXgsIGludCBwcm9wZXJ0eVJlZ0luZGV4KQorICAgICAgICB7CisgICAgICAg
ICAgICBtX2luSW5zdHMuYXBwZW5kKEluSW5zdCB7IGluc3RJbmRleCwgcHJvcGVydHlSZWdJbmRl
eCB9KTsKKyAgICAgICAgfQorCiAgICAgICAgIHZvaWQgZmluYWxpemUoQnl0ZWNvZGVHZW5lcmF0
b3ImLCBVbmxpbmtlZENvZGVCbG9ja0dlbmVyYXRvciosIHVuc2lnbmVkIGJvZHlCeXRlY29kZUVu
ZE9mZnNldCk7CiAKICAgICBwcml2YXRlOgpAQCAtMjYzLDYgKzI2OSw3IEBAIG5hbWVzcGFjZSBK
U0MgewogICAgICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gbV9wcm9wZXJ0eVJlZ2lzdGVyOwogICAg
ICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gbV9lbnVtZXJhdG9yUmVnaXN0ZXI7CiAgICAgICAgIFZl
Y3RvcjxHZXRJbnN0PiBtX2dldEluc3RzOworICAgICAgICBWZWN0b3I8SW5JbnN0PiBtX2luSW5z
dHM7CiAgICAgfTsKIAogICAgIGNsYXNzIEluZGV4ZWRGb3JJbkNvbnRleHQgOiBwdWJsaWMgRm9y
SW5Db250ZXh0IHsKQEAgLTM4MSw2ICszODgsMTAgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAg
IGZyaWVuZCBjbGFzcyBJbmRleGVkRm9ySW5Db250ZXh0OwogICAgICAgICBmcmllbmQgY2xhc3Mg
U3RydWN0dXJlRm9ySW5Db250ZXh0OwogICAgICAgICBmcmllbmQgY2xhc3MgU3RyaWN0TW9kZVNj
b3BlOworCisgICAgICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBPbGRPcFR5cGUsIHR5cGVuYW1lIFR1
cGxlVHlwZT4KKyAgICAgICAgZnJpZW5kIHZvaWQgcmV3cml0ZU9wKEJ5dGVjb2RlR2VuZXJhdG9y
JiwgVHVwbGVUeXBlJik7CisKICAgICBwdWJsaWM6CiAgICAgICAgIHR5cGVkZWYgRGVjbGFyYXRp
b25TdGFja3M6OkZ1bmN0aW9uU3RhY2sgRnVuY3Rpb25TdGFjazsKIApJbmRleDogU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdBYnN0cmFjdEludGVycHJldGVySW5saW5lcy5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQWJzdHJhY3RJbnRlcnByZXRlcklu
bGluZXMuaAkocmV2aXNpb24gMjYyMDM5KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdBYnN0cmFjdEludGVycHJldGVySW5saW5lcy5oCSh3b3JraW5nIGNvcHkpCkBAIC00MTE0LDYg
KzQxMTQsNyBAQCBib29sIEFic3RyYWN0SW50ZXJwcmV0ZXI8QWJzdHJhY3RTdGF0ZVR5CiAgICAg
ICAgIGNsb2JiZXJXb3JsZCgpOwogICAgICAgICBicmVhazsKICAgICB9CisgICAgY2FzZSBJblN0
cnVjdHVyZVByb3BlcnR5OgogICAgIGNhc2UgSGFzU3RydWN0dXJlUHJvcGVydHk6IHsKICAgICAg
ICAgc2V0Tm9uQ2VsbFR5cGVGb3JOb2RlKG5vZGUsIFNwZWNCb29sZWFuKTsKICAgICAgICAgY2xv
YmJlcldvcmxkKCk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0J5dGVDb2Rl
UGFyc2VyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0J5
dGVDb2RlUGFyc2VyLmNwcAkocmV2aXNpb24gMjYyMDM5KQorKysgU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdCeXRlQ29kZVBhcnNlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTc4MjQsNiAr
NzgyNCwxNSBAQCB2b2lkIEJ5dGVDb2RlUGFyc2VyOjpwYXJzZUJsb2NrKHVuc2lnbmVkCiAgICAg
ICAgICAgICBORVhUX09QQ09ERShvcF9oYXNfc3RydWN0dXJlX3Byb3BlcnR5KTsKICAgICAgICAg
fQogCisgICAgICAgIGNhc2Ugb3BfaW5fc3RydWN0dXJlX3Byb3BlcnR5OiB7CisgICAgICAgICAg
ICBhdXRvIGJ5dGVjb2RlID0gY3VycmVudEluc3RydWN0aW9uLT5hczxPcEluU3RydWN0dXJlUHJv
cGVydHk+KCk7CisgICAgICAgICAgICBzZXQoYnl0ZWNvZGUubV9kc3QsIGFkZFRvR3JhcGgoSW5T
dHJ1Y3R1cmVQcm9wZXJ0eSwKKyAgICAgICAgICAgICAgICBnZXQoYnl0ZWNvZGUubV9iYXNlKSwK
KyAgICAgICAgICAgICAgICBnZXQoYnl0ZWNvZGUubV9wcm9wZXJ0eSksCisgICAgICAgICAgICAg
ICAgZ2V0KGJ5dGVjb2RlLm1fZW51bWVyYXRvcikpKTsKKyAgICAgICAgICAgIE5FWFRfT1BDT0RF
KG9wX2luX3N0cnVjdHVyZV9wcm9wZXJ0eSk7CisgICAgICAgIH0KKwogICAgICAgICBjYXNlIG9w
X2hhc19pbmRleGVkX3Byb3BlcnR5OiB7CiAgICAgICAgICAgICBhdXRvIGJ5dGVjb2RlID0gY3Vy
cmVudEluc3RydWN0aW9uLT5hczxPcEhhc0luZGV4ZWRQcm9wZXJ0eT4oKTsKICAgICAgICAgICAg
IE5vZGUqIGJhc2UgPSBnZXQoYnl0ZWNvZGUubV9iYXNlKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHQ2FwYWJpbGl0aWVzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR0NhcGFiaWxpdGllcy5jcHAJKHJldmlzaW9uIDI2MjAzOSkKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ2FwYWJpbGl0aWVzLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtMjUzLDYgKzI1Myw3IEBAIENhcGFiaWxpdHlMZXZlbCBjYXBhYmlsaXR5TGV2ZWwo
T3Bjb2RlSUQKICAgICBjYXNlIG9wX2dldF9lbnVtZXJhYmxlX2xlbmd0aDoKICAgICBjYXNlIG9w
X2hhc19nZW5lcmljX3Byb3BlcnR5OgogICAgIGNhc2Ugb3BfaGFzX3N0cnVjdHVyZV9wcm9wZXJ0
eToKKyAgICBjYXNlIG9wX2luX3N0cnVjdHVyZV9wcm9wZXJ0eToKICAgICBjYXNlIG9wX2hhc19p
bmRleGVkX3Byb3BlcnR5OgogICAgIGNhc2Ugb3BfZ2V0X2RpcmVjdF9wbmFtZToKICAgICBjYXNl
IG9wX2dldF9wcm9wZXJ0eV9lbnVtZXJhdG9yOgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdDbG9iYmVyaXplLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdDbG9iYmVyaXplLmgJKHJldmlzaW9uIDI2MjAzOSkKKysrIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHQ2xvYmJlcml6ZS5oCSh3b3JraW5nIGNvcHkpCkBAIC02OTcsNiArNjk3
LDcgQEAgdm9pZCBjbG9iYmVyaXplKEdyYXBoJiBncmFwaCwgTm9kZSogbm9kZQogICAgIGNhc2Ug
VG9PYmplY3Q6CiAgICAgY2FzZSBIYXNHZW5lcmljUHJvcGVydHk6CiAgICAgY2FzZSBIYXNTdHJ1
Y3R1cmVQcm9wZXJ0eToKKyAgICBjYXNlIEluU3RydWN0dXJlUHJvcGVydHk6CiAgICAgY2FzZSBH
ZXRQcm9wZXJ0eUVudW1lcmF0b3I6CiAgICAgY2FzZSBHZXREaXJlY3RQbmFtZToKICAgICBjYXNl
IEluc3RhbmNlT2ZDdXN0b206CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Rv
ZXNHQy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdEb2Vz
R0MuY3BwCShyZXZpc2lvbiAyNjIwMzkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R0RvZXNHQy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI5Nyw2ICsyOTcsNyBAQCBib29sIGRvZXNH
QyhHcmFwaCYgZ3JhcGgsIE5vZGUqIG5vZGUpCiAgICAgY2FzZSBIYXNJbmRleGVkUHJvcGVydHk6
CiAgICAgY2FzZSBIYXNPd25Qcm9wZXJ0eToKICAgICBjYXNlIEhhc1N0cnVjdHVyZVByb3BlcnR5
OgorICAgIGNhc2UgSW5TdHJ1Y3R1cmVQcm9wZXJ0eToKICAgICBjYXNlIEluQnlJZDoKICAgICBj
YXNlIEluQnlWYWw6CiAgICAgY2FzZSBJbnN0YW5jZU9mOgpJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdGaXh1cFBoYXNlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR0ZpeHVwUGhhc2UuY3BwCShyZXZpc2lvbiAyNjIwMzkpCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0ZpeHVwUGhhc2UuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC0yMTc5LDYgKzIxNzksMTIgQEAgcHJpdmF0ZToKICAgICAgICAgICAgIGZpeEVkZ2U8S25vd25D
ZWxsVXNlPihub2RlLT5jaGlsZDMoKSk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQor
ICAgICAgICBjYXNlIEluU3RydWN0dXJlUHJvcGVydHk6IHsKKyAgICAgICAgICAgIGZpeEVkZ2U8
Q2VsbFVzZT4obm9kZS0+Y2hpbGQxKCkpOworICAgICAgICAgICAgZml4RWRnZTxTdHJpbmdVc2U+
KG5vZGUtPmNoaWxkMigpKTsKKyAgICAgICAgICAgIGZpeEVkZ2U8S25vd25DZWxsVXNlPihub2Rl
LT5jaGlsZDMoKSk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQogICAgICAgICBjYXNl
IEhhc0luZGV4ZWRQcm9wZXJ0eTogewogICAgICAgICAgICAgbm9kZS0+c2V0QXJyYXlNb2RlKAog
ICAgICAgICAgICAgICAgIG5vZGUtPmFycmF5TW9kZSgpLnJlZmluZSgKSW5kZXg6IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZVR5cGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR05vZGVUeXBlLmgJKHJldmlzaW9uIDI2MjAzOSkKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZVR5cGUuaAkod29ya2luZyBjb3B5KQpAQCAtNDkw
LDYgKzQ5MCw3IEBAIG5hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgREZHIHsKICAgICAvKiBNdXN0
IGdlbmVyYXRlIGJlY2F1c2Ugb2YgUHJveGllcyBvbiB0aGUgcHJvdG90eXBlIGNoYWluICovIFwK
ICAgICBtYWNybyhIYXNJbmRleGVkUHJvcGVydHksIE5vZGVNdXN0R2VuZXJhdGUgfCBOb2RlUmVz
dWx0Qm9vbGVhbiB8IE5vZGVIYXNWYXJBcmdzKSBcCiAgICAgbWFjcm8oSGFzU3RydWN0dXJlUHJv
cGVydHksIE5vZGVSZXN1bHRCb29sZWFuKSBcCisgICAgbWFjcm8oSW5TdHJ1Y3R1cmVQcm9wZXJ0
eSwgTm9kZU11c3RHZW5lcmF0ZSB8IE5vZGVSZXN1bHRCb29sZWFuKSBcCiAgICAgbWFjcm8oSGFz
R2VuZXJpY1Byb3BlcnR5LCBOb2RlUmVzdWx0Qm9vbGVhbikgXAogICAgIG1hY3JvKEdldERpcmVj
dFBuYW1lLCBOb2RlTXVzdEdlbmVyYXRlIHwgTm9kZUhhc1ZhckFyZ3MgfCBOb2RlUmVzdWx0SlMp
IFwKICAgICBtYWNybyhHZXRQcm9wZXJ0eUVudW1lcmF0b3IsIE5vZGVNdXN0R2VuZXJhdGUgfCBO
b2RlUmVzdWx0SlMpIFwKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT3BlcmF0
aW9ucy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPcGVy
YXRpb25zLmNwcAkocmV2aXNpb24gMjYyMDM5KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdPcGVyYXRpb25zLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjI3NCw2ICsyMjc0LDE1IEBA
IEVuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uSGEKICAgICBSRUxFQVNFX0FO
RF9SRVRVUk4oc2NvcGUsIEpTVmFsdWU6OmVuY29kZShqc0Jvb2xlYW4oYmFzZS0+aGFzUHJvcGVy
dHlHZW5lcmljKGdsb2JhbE9iamVjdCwgcHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3Q6OkludGVy
bmFsTWV0aG9kVHlwZTo6R2V0T3duUHJvcGVydHkpKSkpOwogfQogCitFbmNvZGVkSlNWYWx1ZSBK
SVRfT1BFUkFUSU9OIG9wZXJhdGlvbkluU3RydWN0dXJlUHJvcGVydHkoSlNHbG9iYWxPYmplY3Qq
IGdsb2JhbE9iamVjdCwgSlNDZWxsKiBiYXNlLCBKU0NlbGwqIHByb3BlcnR5KQoreworICAgIFZN
JiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKKyAgICBDYWxsRnJhbWUqIGNhbGxGcmFtZSA9IERF
Q0xBUkVfQ0FMTF9GUkFNRSh2bSk7CisgICAgSklUT3BlcmF0aW9uUHJvbG9ndWVDYWxsRnJhbWVU
cmFjZXIgdHJhY2VyKHZtLCBjYWxsRnJhbWUpOworCisgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29k
ZShqc0Jvb2xlYW4oQ29tbW9uU2xvd1BhdGhzOjpvcEluQnlWYWwoZ2xvYmFsT2JqZWN0LCBiYXNl
LCBwcm9wZXJ0eSkpKTsKK30KKwogc2l6ZV90IEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uSGFzSW5k
ZXhlZFByb3BlcnR5QnlJbnQoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNDZWxsKiBi
YXNlQ2VsbCwgaW50MzJfdCBzdWJzY3JpcHQsIGludDMyX3QgaW50ZXJuYWxNZXRob2RUeXBlKQog
ewogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHT3BlcmF0aW9ucy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHT3BlcmF0aW9ucy5oCShyZXZpc2lvbiAyNjIwMzkpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR09wZXJhdGlvbnMuaAkod29ya2luZyBjb3B5KQpAQCAtOTks
NiArOTksNyBAQCBFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkdlCiBFbmNv
ZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkdldFByb3RvdHlwZU9mKEpTR2xvYmFs
T2JqZWN0KiwgRW5jb2RlZEpTVmFsdWUpIFdURl9JTlRFUk5BTDsKIEVuY29kZWRKU1ZhbHVlIEpJ
VF9PUEVSQVRJT04gb3BlcmF0aW9uR2V0UHJvdG90eXBlT2ZPYmplY3QoSlNHbG9iYWxPYmplY3Qq
LCBKU09iamVjdCopIFdURl9JTlRFUk5BTDsKIEVuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04g
b3BlcmF0aW9uSGFzR2VuZXJpY1Byb3BlcnR5KEpTR2xvYmFsT2JqZWN0KiwgRW5jb2RlZEpTVmFs
dWUsIEpTQ2VsbCopOworRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25JblN0
cnVjdHVyZVByb3BlcnR5KEpTR2xvYmFsT2JqZWN0KiwgSlNDZWxsKiwgSlNDZWxsKik7CiBzaXpl
X3QgSklUX09QRVJBVElPTiBvcGVyYXRpb25IYXNJbmRleGVkUHJvcGVydHlCeUludChKU0dsb2Jh
bE9iamVjdCosIEpTQ2VsbCosIGludDMyX3QsIGludDMyX3QpOwogSlNDZWxsKiBKSVRfT1BFUkFU
SU9OIG9wZXJhdGlvbkdldFByb3BlcnR5RW51bWVyYXRvcihKU0dsb2JhbE9iamVjdCosIEVuY29k
ZWRKU1ZhbHVlKTsKIEpTQ2VsbCogSklUX09QRVJBVElPTiBvcGVyYXRpb25HZXRQcm9wZXJ0eUVu
dW1lcmF0b3JDZWxsKEpTR2xvYmFsT2JqZWN0KiwgSlNDZWxsKik7CkluZGV4OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR1ByZWRpY3Rpb25Qcm9wYWdhdGlvblBoYXNlLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1ByZWRpY3Rpb25Qcm9wYWdhdGlv
blBoYXNlLmNwcAkocmV2aXNpb24gMjYyMDM5KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdQcmVkaWN0aW9uUHJvcGFnYXRpb25QaGFzZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEy
MDYsNiArMTIwNiw3IEBAIHByaXZhdGU6CiAgICAgICAgIH0KICAgICAgICAgY2FzZSBIYXNHZW5l
cmljUHJvcGVydHk6CiAgICAgICAgIGNhc2UgSGFzU3RydWN0dXJlUHJvcGVydHk6CisgICAgICAg
IGNhc2UgSW5TdHJ1Y3R1cmVQcm9wZXJ0eToKICAgICAgICAgY2FzZSBIYXNJbmRleGVkUHJvcGVy
dHk6IHsKICAgICAgICAgICAgIHNldFByZWRpY3Rpb24oU3BlY0Jvb2xlYW4pOwogICAgICAgICAg
ICAgYnJlYWs7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NhZmVUb0V4ZWN1
dGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NhZmVUb0V4
ZWN1dGUuaAkocmV2aXNpb24gMjYyMDM5KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdTYWZlVG9FeGVjdXRlLmgJKHdvcmtpbmcgY29weSkKQEAgLTYxOCw2ICs2MTgsNyBAQCBib29s
IHNhZmVUb0V4ZWN1dGUoQWJzdHJhY3RTdGF0ZVR5cGUmIHN0CiAgICAgY2FzZSBHZXRFbnVtZXJh
YmxlTGVuZ3RoOgogICAgIGNhc2UgSGFzR2VuZXJpY1Byb3BlcnR5OgogICAgIGNhc2UgSGFzU3Ry
dWN0dXJlUHJvcGVydHk6CisgICAgY2FzZSBJblN0cnVjdHVyZVByb3BlcnR5OgogICAgIGNhc2Ug
R2V0RGlyZWN0UG5hbWU6CiAgICAgY2FzZSBHZXRQcm9wZXJ0eUVudW1lcmF0b3I6CiAgICAgY2Fz
ZSBQaGFudG9tTmV3T2JqZWN0OgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdT
cGVjdWxhdGl2ZUpJVDMyXzY0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUMzJfNjQuY3BwCShyZXZpc2lvbiAyNjIwMzkpCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUMzJfNjQuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC00MDU3LDYgKzQwNTcsMTAgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29t
cGlsZShOb2RlKiBub2RlKQogICAgICAgICBjb21waWxlSGFzU3RydWN0dXJlUHJvcGVydHkobm9k
ZSk7CiAgICAgICAgIGJyZWFrOwogICAgIH0KKyAgICBjYXNlIEluU3RydWN0dXJlUHJvcGVydHk6
IHsKKyAgICAgICAgY29tcGlsZUluU3RydWN0dXJlUHJvcGVydHkobm9kZSk7CisgICAgICAgIGJy
ZWFrOworICAgIH0KICAgICBjYXNlIEhhc0luZGV4ZWRQcm9wZXJ0eTogewogICAgICAgICBjb21w
aWxlSGFzSW5kZXhlZFByb3BlcnR5KG5vZGUpOwogICAgICAgICBicmVhazsKSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDY0LmNwcAkocmV2
aXNpb24gMjYyMDM5KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2
ZUpJVDY0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDk4OCw2ICs0OTg4LDEwIEBAIHZvaWQgU3Bl
Y3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSogbm9kZSkKICAgICAgICAgY29tcGlsZUhhc1N0cnVj
dHVyZVByb3BlcnR5KG5vZGUpOwogICAgICAgICBicmVhazsKICAgICB9CisgICAgY2FzZSBJblN0
cnVjdHVyZVByb3BlcnR5OiB7CisgICAgICAgIGNvbXBpbGVJblN0cnVjdHVyZVByb3BlcnR5KG5v
ZGUpOworICAgICAgICBicmVhazsKKyAgICB9CiAgICAgY2FzZSBIYXNJbmRleGVkUHJvcGVydHk6
IHsKICAgICAgICAgY29tcGlsZUhhc0luZGV4ZWRQcm9wZXJ0eShub2RlKTsKICAgICAgICAgYnJl
YWs7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZl
SklULmNwcAkocmV2aXNpb24gMjYyMDM5KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdTcGVjdWxhdGl2ZUpJVC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEyODI2LDYgKzEyODI2LDMz
IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVIYXNTdHJ1Y3R1cmUKICAgICBibGVzc2Vk
Qm9vbGVhblJlc3VsdChyZXN1bHRSZWdzLnBheWxvYWRHUFIoKSwgbm9kZSk7CiB9CiAKK3ZvaWQg
U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVJblN0cnVjdHVyZVByb3BlcnR5KE5vZGUqIG5vZGUpCit7
CisgICAgU3BlY3VsYXRlQ2VsbE9wZXJhbmQgYmFzZSh0aGlzLCBub2RlLT5jaGlsZDEoKSk7Cisg
ICAgU3BlY3VsYXRlQ2VsbE9wZXJhbmQgcHJvcGVydHkodGhpcywgbm9kZS0+Y2hpbGQyKCkpOwor
ICAgIFNwZWN1bGF0ZUNlbGxPcGVyYW5kIGVudW1lcmF0b3IodGhpcywgbm9kZS0+Y2hpbGQzKCkp
OworICAgIEpTVmFsdWVSZWdzVGVtcG9yYXJ5IHJlc3VsdCh0aGlzKTsKKworICAgIEdQUlJlZyBi
YXNlR1BSID0gYmFzZS5ncHIoKTsKKyAgICBHUFJSZWcgcHJvcGVydHlHUFIgPSBwcm9wZXJ0eS5n
cHIoKTsKKyAgICBKU1ZhbHVlUmVncyByZXN1bHRSZWdzID0gcmVzdWx0LnJlZ3MoKTsKKworICAg
IENDYWxsSGVscGVyczo6SnVtcExpc3Qgd3JvbmdTdHJ1Y3R1cmU7CisKKyAgICBtX2ppdC5sb2Fk
MzIoTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3MoYmFzZUdQUiwgSlNDZWxsOjpzdHJ1Y3R1cmVJRE9m
ZnNldCgpKSwgcmVzdWx0UmVncy5wYXlsb2FkR1BSKCkpOworICAgIHdyb25nU3RydWN0dXJlLmFw
cGVuZChtX2ppdC5icmFuY2gzMihNYWNyb0Fzc2VtYmxlcjo6Tm90RXF1YWwsCisgICAgICAgIHJl
c3VsdFJlZ3MucGF5bG9hZEdQUigpLAorICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhl
bnVtZXJhdG9yLmdwcigpLCBKU1Byb3BlcnR5TmFtZUVudW1lcmF0b3I6OmNhY2hlZFN0cnVjdHVy
ZUlET2Zmc2V0KCkpKSk7CisKKyAgICBtb3ZlVHJ1ZVRvKHJlc3VsdFJlZ3MucGF5bG9hZEdQUigp
KTsKKyAgICBNYWNyb0Fzc2VtYmxlcjo6SnVtcCBkb25lID0gbV9qaXQuanVtcCgpOworCisgICAg
ZG9uZS5saW5rKCZtX2ppdCk7CisKKyAgICBhZGRTbG93UGF0aEdlbmVyYXRvcihzbG93UGF0aENh
bGwod3JvbmdTdHJ1Y3R1cmUsIHRoaXMsIG9wZXJhdGlvbkluU3RydWN0dXJlUHJvcGVydHksIHJl
c3VsdFJlZ3MsIFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1fZ3JhcGgsIG1fZ3JhcGguZ2xv
YmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBiYXNlR1BSLCBwcm9wZXJ0eUdQ
UikpOworICAgIGJsZXNzZWRCb29sZWFuUmVzdWx0KHJlc3VsdFJlZ3MucGF5bG9hZEdQUigpLCBu
b2RlKTsKK30KKwogdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUdldFByb3BlcnR5RW51bWVy
YXRvcihOb2RlKiBub2RlKQogewogICAgIGlmIChub2RlLT5jaGlsZDEoKS51c2VLaW5kKCkgPT0g
Q2VsbFVzZSkgewpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2
ZUpJVC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3Vs
YXRpdmVKSVQuaAkocmV2aXNpb24gMjYyMDM5KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdTcGVjdWxhdGl2ZUpJVC5oCSh3b3JraW5nIGNvcHkpCkBAIC0xNDQ3LDYgKzE0NDcsNyBA
QCBwdWJsaWM6CiAgICAgdm9pZCBjb21waWxlUHV0QnlJZERpcmVjdChOb2RlKik7CiAgICAgdm9p
ZCBjb21waWxlUHV0QnlJZFdpdGhUaGlzKE5vZGUqKTsKICAgICB2b2lkIGNvbXBpbGVIYXNTdHJ1
Y3R1cmVQcm9wZXJ0eShOb2RlKik7CisgICAgdm9pZCBjb21waWxlSW5TdHJ1Y3R1cmVQcm9wZXJ0
eShOb2RlKik7CiAgICAgdm9pZCBjb21waWxlR2V0RGlyZWN0UG5hbWUoTm9kZSopOwogICAgIHZv
aWQgY29tcGlsZUdldFByb3BlcnR5RW51bWVyYXRvcihOb2RlKik7CiAgICAgdm9pZCBjb21waWxl
R2V0RW51bWVyYXRvclBuYW1lKE5vZGUqKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9m
dGwvRlRMQ2FwYWJpbGl0aWVzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvZnRsL0ZUTENhcGFiaWxpdGllcy5jcHAJKHJldmlzaW9uIDI2MjAzOSkKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9mdGwvRlRMQ2FwYWJpbGl0aWVzLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
MjgwLDYgKzI4MCw3IEBAIGlubGluZSBDYXBhYmlsaXR5TGV2ZWwgY2FuQ29tcGlsZShOb2RlKiAK
ICAgICBjYXNlIEJvb2xlYW5Ub051bWJlcjoKICAgICBjYXNlIEhhc0dlbmVyaWNQcm9wZXJ0eToK
ICAgICBjYXNlIEhhc1N0cnVjdHVyZVByb3BlcnR5OgorICAgIGNhc2UgSW5TdHJ1Y3R1cmVQcm9w
ZXJ0eToKICAgICBjYXNlIEhhc0luZGV4ZWRQcm9wZXJ0eToKICAgICBjYXNlIEdldERpcmVjdFBu
YW1lOgogICAgIGNhc2UgR2V0RW51bWVyYWJsZUxlbmd0aDoKSW5kZXg6IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9mdGwvRlRMTG93ZXJERkdUb0IzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvZnRsL0ZUTExvd2VyREZHVG9CMy5jcHAJKHJldmlzaW9uIDI2MjAzOSkKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTG93ZXJERkdUb0IzLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtMTQ3Nyw2ICsxNDc3LDkgQEAgcHJpdmF0ZToKICAgICAgICAgY2FzZSBIYXNTdHJ1
Y3R1cmVQcm9wZXJ0eToKICAgICAgICAgICAgIGNvbXBpbGVIYXNTdHJ1Y3R1cmVQcm9wZXJ0eSgp
OwogICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgSW5TdHJ1Y3R1cmVQcm9wZXJ0eToK
KyAgICAgICAgICAgIGNvbXBpbGVJblN0cnVjdHVyZVByb3BlcnR5KCk7CisgICAgICAgICAgICBi
cmVhazsKICAgICAgICAgY2FzZSBHZXREaXJlY3RQbmFtZToKICAgICAgICAgICAgIGNvbXBpbGVH
ZXREaXJlY3RQbmFtZSgpOwogICAgICAgICAgICAgYnJlYWs7CkBAIC0xMjI0MSwzNSArMTIyNDQs
NTEgQEAgcHJpdmF0ZToKICAgICAgICAgc2V0SlNWYWx1ZSh2bUNhbGwoSW50NjQsIG9wZXJhdGlv
bkhhc0dlbmVyaWNQcm9wZXJ0eSwgd2Vha1BvaW50ZXIoZ2xvYmFsT2JqZWN0KSwgYmFzZSwgcHJv
cGVydHkpKTsKICAgICB9CiAKLSAgICB2b2lkIGNvbXBpbGVIYXNTdHJ1Y3R1cmVQcm9wZXJ0eSgp
CisgICAgdGVtcGxhdGUgPHR5cGVuYW1lIFNsb3dQYXRoQ2FsbD4KKyAgICB2b2lkIGNvbXBpbGVI
YXNTdHJ1Y3R1cmVQcm9wZXJ0eUltcGwoTFZhbHVlIGJhc2UsIFNsb3dQYXRoQ2FsbCBzbG93UGF0
aENhbGwpCiAgICAgewogICAgICAgICBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0ID0gbV9n
cmFwaC5nbG9iYWxPYmplY3RGb3IobV9ub2RlLT5vcmlnaW4uc2VtYW50aWMpOwotICAgICAgICBM
VmFsdWUgYmFzZSA9IGxvd0pTVmFsdWUobV9ub2RlLT5jaGlsZDEoKSk7CiAgICAgICAgIExWYWx1
ZSBwcm9wZXJ0eSA9IGxvd1N0cmluZyhtX25vZGUtPmNoaWxkMigpKTsKICAgICAgICAgTFZhbHVl
IGVudW1lcmF0b3IgPSBsb3dDZWxsKG1fbm9kZS0+Y2hpbGQzKCkpOwogCisgICAgICAgIExCYXNp
Y0Jsb2NrIGlzQ2VsbENhc2UgPSBtX291dC5uZXdCbG9jaygpOwogICAgICAgICBMQmFzaWNCbG9j
ayBjb3JyZWN0U3RydWN0dXJlID0gbV9vdXQubmV3QmxvY2soKTsKLSAgICAgICAgTEJhc2ljQmxv
Y2sgd3JvbmdTdHJ1Y3R1cmUgPSBtX291dC5uZXdCbG9jaygpOworICAgICAgICBMQmFzaWNCbG9j
ayBzbG93UGF0aCA9IG1fb3V0Lm5ld0Jsb2NrKCk7CiAgICAgICAgIExCYXNpY0Jsb2NrIGNvbnRp
bnVhdGlvbiA9IG1fb3V0Lm5ld0Jsb2NrKCk7CiAKKyAgICAgICAgbV9vdXQuYnJhbmNoKGlzQ2Vs
bChiYXNlLCBwcm92ZW5UeXBlKG1fbm9kZS0+Y2hpbGQxKCkpKSwKKyAgICAgICAgICAgIHVzdWFs
bHkoaXNDZWxsQ2FzZSksIHJhcmVseShzbG93UGF0aCkpOworCisgICAgICAgIExCYXNpY0Jsb2Nr
IGxhc3ROZXh0ID0gbV9vdXQuYXBwZW5kVG8oaXNDZWxsQ2FzZSwgY29ycmVjdFN0cnVjdHVyZSk7
CisKICAgICAgICAgbV9vdXQuYnJhbmNoKG1fb3V0Lm5vdEVxdWFsKAogICAgICAgICAgICAgbV9v
dXQubG9hZDMyKGJhc2UsIG1faGVhcHMuSlNDZWxsX3N0cnVjdHVyZUlEKSwKICAgICAgICAgICAg
IG1fb3V0LmxvYWQzMihlbnVtZXJhdG9yLCBtX2hlYXBzLkpTUHJvcGVydHlOYW1lRW51bWVyYXRv
cl9jYWNoZWRTdHJ1Y3R1cmVJRCkpLAotICAgICAgICAgICAgcmFyZWx5KHdyb25nU3RydWN0dXJl
KSwgdXN1YWxseShjb3JyZWN0U3RydWN0dXJlKSk7CisgICAgICAgICAgICByYXJlbHkoc2xvd1Bh
dGgpLCB1c3VhbGx5KGNvcnJlY3RTdHJ1Y3R1cmUpKTsKIAotICAgICAgICBMQmFzaWNCbG9jayBs
YXN0TmV4dCA9IG1fb3V0LmFwcGVuZFRvKGNvcnJlY3RTdHJ1Y3R1cmUsIHdyb25nU3RydWN0dXJl
KTsKKyAgICAgICAgbV9vdXQuYXBwZW5kVG8oY29ycmVjdFN0cnVjdHVyZSwgc2xvd1BhdGgpOwog
ICAgICAgICBWYWx1ZUZyb21CbG9jayBjb3JyZWN0U3RydWN0dXJlUmVzdWx0ID0gbV9vdXQuYW5j
aG9yKG1fb3V0LmJvb2xlYW5UcnVlKTsKICAgICAgICAgbV9vdXQuanVtcChjb250aW51YXRpb24p
OwogCi0gICAgICAgIG1fb3V0LmFwcGVuZFRvKHdyb25nU3RydWN0dXJlLCBjb250aW51YXRpb24p
OwotICAgICAgICBWYWx1ZUZyb21CbG9jayB3cm9uZ1N0cnVjdHVyZVJlc3VsdCA9IG1fb3V0LmFu
Y2hvcigKKyAgICAgICAgbV9vdXQuYXBwZW5kVG8oc2xvd1BhdGgsIGNvbnRpbnVhdGlvbik7Cisg
ICAgICAgIFZhbHVlRnJvbUJsb2NrIHNsb3dQYXRoUmVzdWx0ID0gbV9vdXQuYW5jaG9yKAogICAg
ICAgICAgICAgbV9vdXQuZXF1YWwoCiAgICAgICAgICAgICAgICAgbV9vdXQuY29uc3RJbnQ2NChK
U1ZhbHVlOjplbmNvZGUoanNCb29sZWFuKHRydWUpKSksIAotICAgICAgICAgICAgICAgIHZtQ2Fs
bChJbnQ2NCwgb3BlcmF0aW9uSGFzR2VuZXJpY1Byb3BlcnR5LCB3ZWFrUG9pbnRlcihnbG9iYWxP
YmplY3QpLCBiYXNlLCBwcm9wZXJ0eSkpKTsKKyAgICAgICAgICAgICAgICB2bUNhbGwoSW50NjQs
IHNsb3dQYXRoQ2FsbCwgd2Vha1BvaW50ZXIoZ2xvYmFsT2JqZWN0KSwgYmFzZSwgcHJvcGVydHkp
KSk7CiAgICAgICAgIG1fb3V0Lmp1bXAoY29udGludWF0aW9uKTsKIAogICAgICAgICBtX291dC5h
cHBlbmRUbyhjb250aW51YXRpb24sIGxhc3ROZXh0KTsKLSAgICAgICAgc2V0Qm9vbGVhbihtX291
dC5waGkoSW50MzIsIGNvcnJlY3RTdHJ1Y3R1cmVSZXN1bHQsIHdyb25nU3RydWN0dXJlUmVzdWx0
KSk7CisgICAgICAgIHNldEJvb2xlYW4obV9vdXQucGhpKEludDMyLCBjb3JyZWN0U3RydWN0dXJl
UmVzdWx0LCBzbG93UGF0aFJlc3VsdCkpOworICAgIH0KKworICAgIHZvaWQgY29tcGlsZUhhc1N0
cnVjdHVyZVByb3BlcnR5KCkKKyAgICB7CisgICAgICAgIGNvbXBpbGVIYXNTdHJ1Y3R1cmVQcm9w
ZXJ0eUltcGwobG93SlNWYWx1ZShtX25vZGUtPmNoaWxkMSgpKSwgb3BlcmF0aW9uSGFzR2VuZXJp
Y1Byb3BlcnR5KTsKKyAgICB9CisKKyAgICB2b2lkIGNvbXBpbGVJblN0cnVjdHVyZVByb3BlcnR5
KCkKKyAgICB7CisgICAgICAgIGNvbXBpbGVIYXNTdHJ1Y3R1cmVQcm9wZXJ0eUltcGwobG93Q2Vs
bChtX25vZGUtPmNoaWxkMSgpKSwgb3BlcmF0aW9uSW5TdHJ1Y3R1cmVQcm9wZXJ0eSk7CiAgICAg
fQogCiAgICAgdm9pZCBjb21waWxlR2V0RGlyZWN0UG5hbWUoKQpJbmRleDogU291cmNlL0phdmFT
Y3JpcHRDb3JlL2ppdC9KSVQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9qaXQvSklULmNwcAkocmV2aXNpb24gMjYyMDM5KQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L2ppdC9KSVQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00NjAsNiArNDYwLDcgQEAgdm9pZCBKSVQ6
OnByaXZhdGVDb21waWxlTWFpblBhc3MoKQogICAgICAgICBERUZJTkVfT1Aob3BfcHV0X3RvX2Fy
Z3VtZW50cykKIAogICAgICAgICBERUZJTkVfT1Aob3BfaGFzX3N0cnVjdHVyZV9wcm9wZXJ0eSkK
KyAgICAgICAgREVGSU5FX09QKG9wX2luX3N0cnVjdHVyZV9wcm9wZXJ0eSkKICAgICAgICAgREVG
SU5FX09QKG9wX2hhc19pbmRleGVkX3Byb3BlcnR5KQogICAgICAgICBERUZJTkVfT1Aob3BfZ2V0
X2RpcmVjdF9wbmFtZSkKICAgICAgICAgREVGSU5FX09QKG9wX2VudW1lcmF0b3Jfc3RydWN0dXJl
X3BuYW1lKQpAQCAtNjE2LDYgKzYxNyw3IEBAIHZvaWQgSklUOjpwcml2YXRlQ29tcGlsZVNsb3dD
YXNlcygpCiAgICAgICAgIERFRklORV9TTE9XQ0FTRV9TTE9XX09QKG5zdHJpY3RlcSkKICAgICAg
ICAgREVGSU5FX1NMT1dDQVNFX1NMT1dfT1AoZ2V0X2RpcmVjdF9wbmFtZSkKICAgICAgICAgREVG
SU5FX1NMT1dDQVNFX1NMT1dfT1AoaGFzX3N0cnVjdHVyZV9wcm9wZXJ0eSkKKyAgICAgICAgREVG
SU5FX1NMT1dDQVNFX1NMT1dfT1AoaW5fc3RydWN0dXJlX3Byb3BlcnR5KQogICAgICAgICBERUZJ
TkVfU0xPV0NBU0VfU0xPV19PUChyZXNvbHZlX3Njb3BlKQogICAgICAgICBERUZJTkVfU0xPV0NB
U0VfU0xPV19PUChjaGVja190ZHopCiAgICAgICAgIERFRklORV9TTE9XQ0FTRV9TTE9XX09QKHRv
X3Byb3BlcnR5X2tleSkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuaAkocmV2aXNpb24gMjYy
MDM5KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuaAkod29ya2luZyBjb3B5KQpA
QCAtNjE5LDYgKzYxOSw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICB2b2lkIGVtaXRfb3Bf
dW5zaWduZWQoY29uc3QgSW5zdHJ1Y3Rpb24qKTsKICAgICAgICAgdm9pZCBlbWl0X29wX3Vyc2hp
ZnQoY29uc3QgSW5zdHJ1Y3Rpb24qKTsKICAgICAgICAgdm9pZCBlbWl0X29wX2hhc19zdHJ1Y3R1
cmVfcHJvcGVydHkoY29uc3QgSW5zdHJ1Y3Rpb24qKTsKKyAgICAgICAgdm9pZCBlbWl0X29wX2lu
X3N0cnVjdHVyZV9wcm9wZXJ0eShjb25zdCBJbnN0cnVjdGlvbiopOwogICAgICAgICB2b2lkIGVt
aXRfb3BfaGFzX2luZGV4ZWRfcHJvcGVydHkoY29uc3QgSW5zdHJ1Y3Rpb24qKTsKICAgICAgICAg
dm9pZCBlbWl0X29wX2dldF9kaXJlY3RfcG5hbWUoY29uc3QgSW5zdHJ1Y3Rpb24qKTsKICAgICAg
ICAgdm9pZCBlbWl0X29wX2VudW1lcmF0b3Jfc3RydWN0dXJlX3BuYW1lKGNvbnN0IEluc3RydWN0
aW9uKik7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wY29kZXMzMl82NC5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGNvZGVzMzJf
NjQuY3BwCShyZXZpc2lvbiAyNjIwMzkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJ
VE9wY29kZXMzMl82NC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTExNTAsNiArMTE1MCwyNSBAQCB2
b2lkIEpJVDo6ZW1pdF9vcF9oYXNfc3RydWN0dXJlX3Byb3BlcnR5CiAgICAgZW1pdFN0b3JlQm9v
bChkc3QsIHJlZ1QwKTsKIH0KIAordm9pZCBKSVQ6OmVtaXRfb3BfaW5fc3RydWN0dXJlX3Byb3Bl
cnR5KGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCit7CisgICAgYXV0byBi
eXRlY29kZSA9IGN1cnJlbnRJbnN0cnVjdGlvbi0+YXM8T3BJblN0cnVjdHVyZVByb3BlcnR5Pigp
OworICAgIFZpcnR1YWxSZWdpc3RlciBkc3QgPSBieXRlY29kZS5tX2RzdDsKKyAgICBWaXJ0dWFs
UmVnaXN0ZXIgYmFzZSA9IGJ5dGVjb2RlLm1fYmFzZTsKKyAgICBWaXJ0dWFsUmVnaXN0ZXIgZW51
bWVyYXRvciA9IGJ5dGVjb2RlLm1fZW51bWVyYXRvcjsKKworICAgIGVtaXRMb2FkUGF5bG9hZChi
YXNlLCByZWdUMCk7CisgICAgZW1pdEp1bXBTbG93Q2FzZUlmTm90SlNDZWxsKGJhc2UpOworCisg
ICAgZW1pdExvYWRQYXlsb2FkKGVudW1lcmF0b3IsIHJlZ1QxKTsKKworICAgIGxvYWQzMihBZGRy
ZXNzKHJlZ1QwLCBKU0NlbGw6OnN0cnVjdHVyZUlET2Zmc2V0KCkpLCByZWdUMCk7CisgICAgYWRk
U2xvd0Nhc2UoYnJhbmNoMzIoTm90RXF1YWwsIHJlZ1QwLCBBZGRyZXNzKHJlZ1QxLCBKU1Byb3Bl
cnR5TmFtZUVudW1lcmF0b3I6OmNhY2hlZFN0cnVjdHVyZUlET2Zmc2V0KCkpKSk7CisgICAgCisg
ICAgbW92ZShUcnVzdGVkSW1tMzIoMSksIHJlZ1QwKTsKKyAgICBlbWl0U3RvcmVCb29sKGRzdCwg
cmVnVDApOworfQorCiB2b2lkIEpJVDo6cHJpdmF0ZUNvbXBpbGVIYXNJbmRleGVkUHJvcGVydHko
QnlWYWxJbmZvKiBieVZhbEluZm8sIFJldHVybkFkZHJlc3NQdHIgcmV0dXJuQWRkcmVzcywgSklU
QXJyYXlNb2RlIGFycmF5TW9kZSkKIHsKICAgICBjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudElu
c3RydWN0aW9uID0gbV9jb2RlQmxvY2stPmluc3RydWN0aW9ucygpLmF0KGJ5VmFsSW5mby0+Ynl0
ZWNvZGVJbmRleCkucHRyKCk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9w
Y29kZXMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3Bj
b2Rlcy5jcHAJKHJldmlzaW9uIDI2MjAzOSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQv
SklUT3Bjb2Rlcy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEzNzIsNiArMTM3MiwyNCBAQCB2b2lk
IEpJVDo6ZW1pdF9vcF9oYXNfc3RydWN0dXJlX3Byb3BlcnR5CiAgICAgZW1pdFB1dFZpcnR1YWxS
ZWdpc3Rlcihkc3QpOwogfQogCit2b2lkIEpJVDo6ZW1pdF9vcF9pbl9zdHJ1Y3R1cmVfcHJvcGVy
dHkoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKK3sKKyAgICBhdXRvIGJ5
dGVjb2RlID0gY3VycmVudEluc3RydWN0aW9uLT5hczxPcEluU3RydWN0dXJlUHJvcGVydHk+KCk7
CisgICAgVmlydHVhbFJlZ2lzdGVyIGRzdCA9IGJ5dGVjb2RlLm1fZHN0OworICAgIFZpcnR1YWxS
ZWdpc3RlciBiYXNlID0gYnl0ZWNvZGUubV9iYXNlOworICAgIFZpcnR1YWxSZWdpc3RlciBlbnVt
ZXJhdG9yID0gYnl0ZWNvZGUubV9lbnVtZXJhdG9yOworCisgICAgZW1pdEdldFZpcnR1YWxSZWdp
c3RlcihiYXNlLCByZWdUMCk7CisgICAgZW1pdEdldFZpcnR1YWxSZWdpc3RlcihlbnVtZXJhdG9y
LCByZWdUMSk7CisgICAgZW1pdEp1bXBTbG93Q2FzZUlmTm90SlNDZWxsKHJlZ1QwLCBiYXNlKTsK
KworICAgIGxvYWQzMihBZGRyZXNzKHJlZ1QwLCBKU0NlbGw6OnN0cnVjdHVyZUlET2Zmc2V0KCkp
LCByZWdUMCk7CisgICAgYWRkU2xvd0Nhc2UoYnJhbmNoMzIoTm90RXF1YWwsIHJlZ1QwLCBBZGRy
ZXNzKHJlZ1QxLCBKU1Byb3BlcnR5TmFtZUVudW1lcmF0b3I6OmNhY2hlZFN0cnVjdHVyZUlET2Zm
c2V0KCkpKSk7CisgICAgCisgICAgbW92ZShUcnVzdGVkSW1tNjQoSlNWYWx1ZTo6ZW5jb2RlKGpz
Qm9vbGVhbih0cnVlKSkpLCByZWdUMCk7CisgICAgZW1pdFB1dFZpcnR1YWxSZWdpc3Rlcihkc3Qp
OworfQorCiB2b2lkIEpJVDo6cHJpdmF0ZUNvbXBpbGVIYXNJbmRleGVkUHJvcGVydHkoQnlWYWxJ
bmZvKiBieVZhbEluZm8sIFJldHVybkFkZHJlc3NQdHIgcmV0dXJuQWRkcmVzcywgSklUQXJyYXlN
b2RlIGFycmF5TW9kZSkKIHsKICAgICBjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0
aW9uID0gbV9jb2RlQmxvY2stPmluc3RydWN0aW9ucygpLmF0KGJ5VmFsSW5mby0+Ynl0ZWNvZGVJ
bmRleCkucHRyKCk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRPZmZz
ZXRzRXh0cmFjdG9yLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxp
bnQvTExJbnRPZmZzZXRzRXh0cmFjdG9yLmNwcAkocmV2aXNpb24gMjYyMDM5KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50T2Zmc2V0c0V4dHJhY3Rvci5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTQ5LDYgKzQ5LDcgQEAKICNpbmNsdWRlICJKU0xleGljYWxFbnZpcm9ubWVudC5o
IgogI2luY2x1ZGUgIkpTTW9kdWxlUmVjb3JkLmgiCiAjaW5jbHVkZSAiSlNPYmplY3QuaCIKKyNp
bmNsdWRlICJKU1Byb3BlcnR5TmFtZUVudW1lcmF0b3IuaCIKICNpbmNsdWRlICJKU1N0cmluZy5o
IgogI2luY2x1ZGUgIkpTVHlwZUluZm8uaCIKICNpbmNsdWRlICJKdW1wVGFibGUuaCIKSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyNjQuYXNtCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJl
dGVyNjQuYXNtCShyZXZpc2lvbiAyNjIwMzkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxp
bnQvTG93TGV2ZWxJbnRlcnByZXRlcjY0LmFzbQkod29ya2luZyBjb3B5KQpAQCAtMjg0NywzICsy
ODQ3LDI3IEBAIGxsaW50T3Aob3BfbG9nX3NoYWRvd19jaGlja2VuX3RhaWwsIE9wTG8KICAgICBj
YWxsU2xvd1BhdGgoX2xsaW50X3Nsb3dfcGF0aF9sb2dfc2hhZG93X2NoaWNrZW5fdGFpbCkKICAg
ICBkaXNwYXRjaCgpCiBlbmQpCisKK21hY3JvIGhhc1N0cnVjdHVyZVByb3BlcnR5SW1wbChzaXpl
LCBnZXQsIGRpc3BhdGNoLCByZXR1cm4sIHNsb3dQYXRoQ2FsbCkKKyAgICBnZXQobV9iYXNlLCB0
MCkKKyAgICBsb2FkQ29uc3RhbnRPclZhcmlhYmxlKHNpemUsIHQwLCB0MSkKKyAgICBidHFueiB0
MSwgbm90Q2VsbE1hc2ssIC5zbG93UGF0aAorCisgICAgbG9hZFZhcmlhYmxlKGdldCwgbV9lbnVt
ZXJhdG9yLCB0MCkKKyAgICBsb2FkaSBKU0NlbGw6Om1fc3RydWN0dXJlSURbdDFdLCB0MQorICAg
IGJpbmVxIHQxLCBKU1Byb3BlcnR5TmFtZUVudW1lcmF0b3I6Om1fY2FjaGVkU3RydWN0dXJlSURb
dDBdLCAuc2xvd1BhdGgKKworICAgIHJldHVybihWYWx1ZVRydWUpCisKKy5zbG93UGF0aDoKKyAg
ICBjYWxsU2xvd1BhdGgoc2xvd1BhdGhDYWxsKQorICAgIGRpc3BhdGNoKCkKK2VuZAorCitsbGlu
dE9wV2l0aFJldHVybihvcF9oYXNfc3RydWN0dXJlX3Byb3BlcnR5LCBPcEhhc1N0cnVjdHVyZVBy
b3BlcnR5LCBtYWNybyAoc2l6ZSwgZ2V0LCBkaXNwYXRjaCwgcmV0dXJuKQorICAgIGhhc1N0cnVj
dHVyZVByb3BlcnR5SW1wbChzaXplLCBnZXQsIGRpc3BhdGNoLCAgcmV0dXJuLCBfc2xvd19wYXRo
X2hhc19zdHJ1Y3R1cmVfcHJvcGVydHkpCitlbmQpCisKK2xsaW50T3BXaXRoUmV0dXJuKG9wX2lu
X3N0cnVjdHVyZV9wcm9wZXJ0eSwgT3BJblN0cnVjdHVyZVByb3BlcnR5LCBtYWNybyAoc2l6ZSwg
Z2V0LCBkaXNwYXRjaCwgcmV0dXJuKQorICAgIGhhc1N0cnVjdHVyZVByb3BlcnR5SW1wbChzaXpl
LCBnZXQsIGRpc3BhdGNoLCAgcmV0dXJuLCBfc2xvd19wYXRoX2luX3N0cnVjdHVyZV9wcm9wZXJ0
eSkKK2VuZCkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVy
cHJldGVyLmFzbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93
TGV2ZWxJbnRlcnByZXRlci5hc20JKHJldmlzaW9uIDI2MjAzOSkKKysrIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyLmFzbQkod29ya2luZyBjb3B5KQpAQCAt
MTc2OSw3ICsxNzY5LDEyIEBAIHNsb3dQYXRoT3AoZ3JlYXRlcikKIHNsb3dQYXRoT3AoZ3JlYXRl
cmVxKQogc2xvd1BhdGhPcChoYXNfZ2VuZXJpY19wcm9wZXJ0eSkKIHNsb3dQYXRoT3AoaGFzX2lu
ZGV4ZWRfcHJvcGVydHkpCi1zbG93UGF0aE9wKGhhc19zdHJ1Y3R1cmVfcHJvcGVydHkpCisKK2lm
IG5vdCBKU1ZBTFVFNjQKKyAgICBzbG93UGF0aE9wKGhhc19zdHJ1Y3R1cmVfcHJvcGVydHkpCisg
ICAgc2xvd1BhdGhPcChpbl9zdHJ1Y3R1cmVfcHJvcGVydHkpCitlbmQKKwogc2xvd1BhdGhPcChp
bl9ieV9pZCkKIHNsb3dQYXRoT3AoaW5fYnlfdmFsKQogc2xvd1BhdGhPcChpc19mdW5jdGlvbikK
SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vblNsb3dQYXRocy5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uU2xvd1Bh
dGhzLmNwcAkocmV2aXNpb24gMjYyMDM5KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvQ29tbW9uU2xvd1BhdGhzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTA1MSwxNiArMTA1MSwz
MyBAQCBTTE9XX1BBVEhfREVDTChzbG93X3BhdGhfaGFzX3N0cnVjdHVyZV9wCiAgICAgSlNPYmpl
Y3QqIGJhc2UgPSBHRVQoYnl0ZWNvZGUubV9iYXNlKS5qc1ZhbHVlKCkudG9PYmplY3QoZ2xvYmFs
T2JqZWN0KTsKICAgICBDSEVDS19FWENFUFRJT04oKTsKICAgICBKU1ZhbHVlIHByb3BlcnR5ID0g
R0VUKGJ5dGVjb2RlLm1fcHJvcGVydHkpLmpzVmFsdWUoKTsKLSAgICBBU1NFUlQocHJvcGVydHku
aXNTdHJpbmcoKSk7CisgICAgUkVMRUFTRV9BU1NFUlQocHJvcGVydHkuaXNTdHJpbmcoKSk7Cisj
aWYgVVNFKEpTVkFMVUUzMl82NCkKICAgICBKU1Byb3BlcnR5TmFtZUVudW1lcmF0b3IqIGVudW1l
cmF0b3IgPSBqc0Nhc3Q8SlNQcm9wZXJ0eU5hbWVFbnVtZXJhdG9yKj4oR0VUKGJ5dGVjb2RlLm1f
ZW51bWVyYXRvcikuanNWYWx1ZSgpLmFzQ2VsbCgpKTsKICAgICBpZiAoYmFzZS0+c3RydWN0dXJl
KHZtKS0+aWQoKSA9PSBlbnVtZXJhdG9yLT5jYWNoZWRTdHJ1Y3R1cmVJRCgpKQogICAgICAgICBS
RVRVUk4oanNCb29sZWFuKHRydWUpKTsKKyNlbmRpZgogICAgIEpTU3RyaW5nKiBzdHJpbmcgPSBh
c1N0cmluZyhwcm9wZXJ0eSk7CiAgICAgYXV0byBwcm9wZXJ0eU5hbWUgPSBzdHJpbmctPnRvSWRl
bnRpZmllcihnbG9iYWxPYmplY3QpOwogICAgIENIRUNLX0VYQ0VQVElPTigpOwogICAgIFJFVFVS
Tihqc0Jvb2xlYW4oYmFzZS0+aGFzUHJvcGVydHlHZW5lcmljKGdsb2JhbE9iamVjdCwgcHJvcGVy
dHlOYW1lLCBQcm9wZXJ0eVNsb3Q6OkludGVybmFsTWV0aG9kVHlwZTo6R2V0T3duUHJvcGVydHkp
KSk7CiB9CiAKK1NMT1dfUEFUSF9ERUNMKHNsb3dfcGF0aF9pbl9zdHJ1Y3R1cmVfcHJvcGVydHkp
Cit7CisgICAgQkVHSU4oKTsKKyAgICBhdXRvIGJ5dGVjb2RlID0gcGMtPmFzPE9wSW5TdHJ1Y3R1
cmVQcm9wZXJ0eT4oKTsKKyAgICBKU1ZhbHVlIGJhc2UgPSBHRVQoYnl0ZWNvZGUubV9iYXNlKS5q
c1ZhbHVlKCk7CisjaWYgVVNFKEpTVkFMVUUzMl82NCkKKyAgICBKU1Byb3BlcnR5TmFtZUVudW1l
cmF0b3IqIGVudW1lcmF0b3IgPSBqc0Nhc3Q8SlNQcm9wZXJ0eU5hbWVFbnVtZXJhdG9yKj4oR0VU
KGJ5dGVjb2RlLm1fZW51bWVyYXRvcikuanNWYWx1ZSgpLmFzQ2VsbCgpKTsKKyAgICBpZiAoYmFz
ZS5pc0NlbGwoKSAmJiBiYXNlLmFzQ2VsbCgpLT5zdHJ1Y3R1cmUodm0pLT5pZCgpID09IGVudW1l
cmF0b3ItPmNhY2hlZFN0cnVjdHVyZUlEKCkpCisgICAgICAgIFJFVFVSTihqc0Jvb2xlYW4odHJ1
ZSkpOworI2VuZGlmCisgICAgSlNWYWx1ZSBwcm9wZXJ0eSA9IEdFVChieXRlY29kZS5tX3Byb3Bl
cnR5KS5qc1ZhbHVlKCk7CisgICAgUkVMRUFTRV9BU1NFUlQocHJvcGVydHkuaXNTdHJpbmcoKSk7
CisgICAgUkVUVVJOKGpzQm9vbGVhbihDb21tb25TbG93UGF0aHM6Om9wSW5CeVZhbChnbG9iYWxP
YmplY3QsIGJhc2UsIGFzU3RyaW5nKHByb3BlcnR5KSkpKTsKK30KKwogU0xPV19QQVRIX0RFQ0wo
c2xvd19wYXRoX2hhc19nZW5lcmljX3Byb3BlcnR5KQogewogICAgIEJFR0lOKCk7CkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25TbG93UGF0aHMuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25TbG93UGF0aHMuaAkocmV2
aXNpb24gMjYyMDM5KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uU2xv
d1BhdGhzLmgJKHdvcmtpbmcgY29weSkKQEAgLTI1NCw2ICsyNTQsNyBAQCBTTE9XX1BBVEhfSElE
REVOX0RFQ0woc2xvd19wYXRoX3RvX3Byb3BlCiBTTE9XX1BBVEhfSElEREVOX0RFQ0woc2xvd19w
YXRoX2dldF9lbnVtZXJhYmxlX2xlbmd0aCk7CiBTTE9XX1BBVEhfSElEREVOX0RFQ0woc2xvd19w
YXRoX2hhc19nZW5lcmljX3Byb3BlcnR5KTsKIFNMT1dfUEFUSF9ISURERU5fREVDTChzbG93X3Bh
dGhfaGFzX3N0cnVjdHVyZV9wcm9wZXJ0eSk7CitTTE9XX1BBVEhfSElEREVOX0RFQ0woc2xvd19w
YXRoX2luX3N0cnVjdHVyZV9wcm9wZXJ0eSk7CiBTTE9XX1BBVEhfSElEREVOX0RFQ0woc2xvd19w
YXRoX2hhc19pbmRleGVkX3Byb3BlcnR5KTsKIFNMT1dfUEFUSF9ISURERU5fREVDTChzbG93X3Bh
dGhfZ2V0X2RpcmVjdF9wbmFtZSk7CiBTTE9XX1BBVEhfSElEREVOX0RFQ0woc2xvd19wYXRoX2dl
dF9wcm9wZXJ0eV9lbnVtZXJhdG9yKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0pTUHJvcGVydHlOYW1lRW51bWVyYXRvci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0pTUHJvcGVydHlOYW1lRW51bWVyYXRvci5oCShyZXZpc2lvbiAy
NjIwMzkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1Byb3BlcnR5TmFtZUVu
dW1lcmF0b3IuaAkod29ya2luZyBjb3B5KQpAQCAtODcsNiArODcsOCBAQCBwdWJsaWM6CiAgICAg
c3RhdGljIHZvaWQgdmlzaXRDaGlsZHJlbihKU0NlbGwqLCBTbG90VmlzaXRvciYpOwogCiBwcml2
YXRlOgorICAgIGZyaWVuZCBjbGFzcyBMTEludE9mZnNldHNFeHRyYWN0b3I7CisKICAgICBKU1By
b3BlcnR5TmFtZUVudW1lcmF0b3IoVk0mLCBTdHJ1Y3R1cmUqLCB1aW50MzJfdCwgdWludDMyX3Qs
IFdyaXRlQmFycmllcjxKU1N0cmluZz4qLCB1bnNpZ25lZCk7CiAgICAgdm9pZCBmaW5pc2hDcmVh
dGlvbihWTSYsIFJlZlB0cjxQcm9wZXJ0eU5hbWVBcnJheURhdGE+JiYpOwogCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>