<?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>215487</bug_id>
          
          <creation_ts>2020-08-13 19:11:53 -0700</creation_ts>
          <short_desc>Have an OOB+SaneChain Array::Speculation</short_desc>
          <delta_ts>2020-08-18 21:38:49 -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>Other</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          <see_also>https://bugs.webkit.org/show_bug.cgi?id=215639</see_also>
          <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>jsc32</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>1680190</commentid>
    <comment_count>0</comment_count>
    <who name="Saam Barati">saam</who>
    <bug_when>2020-08-13 19:11:53 -0700</bug_when>
    <thetext>So we can return undefined when we&apos;re OOB.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1680192</commentid>
    <comment_count>1</comment_count>
      <attachid>406565</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2020-08-13 19:16:38 -0700</bug_when>
    <thetext>Created attachment 406565
WIP</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1680193</commentid>
    <comment_count>2</comment_count>
    <who name="Saam Barati">saam</who>
    <bug_when>2020-08-13 19:16:55 -0700</bug_when>
    <thetext>This at least helps crypto-md5-SP</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1680561</commentid>
    <comment_count>3</comment_count>
      <attachid>406645</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2020-08-14 18:36:46 -0700</bug_when>
    <thetext>Created attachment 406645
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1680563</commentid>
    <comment_count>4</comment_count>
      <attachid>406646</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2020-08-14 18:38:06 -0700</bug_when>
    <thetext>Created attachment 406646
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1680575</commentid>
    <comment_count>5</comment_count>
      <attachid>406650</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2020-08-14 19:50:20 -0700</bug_when>
    <thetext>Created attachment 406650
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1680576</commentid>
    <comment_count>6</comment_count>
      <attachid>406650</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2020-08-14 19:51:16 -0700</bug_when>
    <thetext>Comment on attachment 406650
patch

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

&gt; Source/JavaScriptCore/dfg/DFGValidate.cpp:386
&gt; +                        // We rely on being an original array structure so we can return undefined for negative indices.
&gt; +                        // We could do better in the future, and have and have an feedback based profiling mechanism
&gt; +                        // where we speculate against the index being &gt;= 0.

Will update this comment to reflect new reason we need to be original</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1680577</commentid>
    <comment_count>7</comment_count>
      <attachid>406651</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2020-08-14 19:53:13 -0700</bug_when>
    <thetext>Created attachment 406651
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1680580</commentid>
    <comment_count>8</comment_count>
      <attachid>406651</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2020-08-14 20:36:00 -0700</bug_when>
    <thetext>Comment on attachment 406651
patch

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

r=me with one comment.

&gt; Source/JavaScriptCore/dfg/DFGClobberize.h:945
&gt; +                LocationKind kind = mode.isInBoundsSaneChain() ? IndexedPropertyDoubleSaneChainLoc : IndexedPropertyDoubleLoc;

This means that we will use IndexedPropertyDoubleLoc for OutOfBoundsSaneChain, is it correct?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1680655</commentid>
    <comment_count>9</comment_count>
    <who name="Saam Barati">saam</who>
    <bug_when>2020-08-15 17:52:49 -0700</bug_when>
    <thetext>(In reply to Yusuke Suzuki from comment #8)
&gt; Comment on attachment 406651 [details]
&gt; patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=406651&amp;action=review
&gt; 
&gt; r=me with one comment.
&gt; 
&gt; &gt; Source/JavaScriptCore/dfg/DFGClobberize.h:945
&gt; &gt; +                LocationKind kind = mode.isInBoundsSaneChain() ? IndexedPropertyDoubleSaneChainLoc : IndexedPropertyDoubleLoc;
&gt; 
&gt; This means that we will use IndexedPropertyDoubleLoc for
&gt; OutOfBoundsSaneChain, is it correct?

Yeah. Maybe we should introduce a new heap just out of paranoia that’s for OOBSaneChain</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1680878</commentid>
    <comment_count>10</comment_count>
    <who name="Saam Barati">saam</who>
    <bug_when>2020-08-17 12:24:57 -0700</bug_when>
    <thetext>(In reply to Saam Barati from comment #9)
&gt; (In reply to Yusuke Suzuki from comment #8)
&gt; &gt; Comment on attachment 406651 [details]
&gt; &gt; patch
&gt; &gt; 
&gt; &gt; View in context:
&gt; &gt; https://bugs.webkit.org/attachment.cgi?id=406651&amp;action=review
&gt; &gt; 
&gt; &gt; r=me with one comment.
&gt; &gt; 
&gt; &gt; &gt; Source/JavaScriptCore/dfg/DFGClobberize.h:945
&gt; &gt; &gt; +                LocationKind kind = mode.isInBoundsSaneChain() ? IndexedPropertyDoubleSaneChainLoc : IndexedPropertyDoubleLoc;
&gt; &gt; 
&gt; &gt; This means that we will use IndexedPropertyDoubleLoc for
&gt; &gt; OutOfBoundsSaneChain, is it correct?
&gt; 
&gt; Yeah. Maybe we should introduce a new heap just out of paranoia that’s for
&gt; OOBSaneChain

I did some more reading. What&apos;s going on here is SaneChain may return NaN, where InBounds-non-sane-chain won&apos;t ever return NaN. So that&apos;s why we have two heap locations.

The change I&apos;m making that I discussed with Yusuke is:
- OOB+SaneChain+NoUsesAsOther, we&apos;ll now return unboxed double value, to behave like in bounds SaneChain. Then, we can use the same heap location
- OOB+SaneChain+UsesAsOther =&gt; return JSValue, and new heap location</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1680882</commentid>
    <comment_count>11</comment_count>
      <attachid>406730</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2020-08-17 12:32:26 -0700</bug_when>
    <thetext>Created attachment 406730
patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1680884</commentid>
    <comment_count>12</comment_count>
      <attachid>406730</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2020-08-17 12:33:41 -0700</bug_when>
    <thetext>Comment on attachment 406730
patch for landing

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

&gt; Source/JavaScriptCore/dfg/DFGClobberize.h:932
&gt; +            if (mode.isInBounds() || mode.isOutOfBoundsSaneChain()) {

I need a new heap location for this.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1680888</commentid>
    <comment_count>13</comment_count>
      <attachid>406730</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2020-08-17 12:46:36 -0700</bug_when>
    <thetext>Comment on attachment 406730
patch for landing

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

&gt;&gt; Source/JavaScriptCore/dfg/DFGClobberize.h:932
&gt;&gt; +            if (mode.isInBounds() || mode.isOutOfBoundsSaneChain()) {
&gt; 
&gt; I need a new heap location for this.

The issue is, AI might say we only return Int32 for a node. If we  CSE it with something that says &quot;Int32 | Other&quot;, we&apos;ve  broken an AI invariant by growing the type.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1680889</commentid>
    <comment_count>14</comment_count>
      <attachid>406733</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2020-08-17 12:49:06 -0700</bug_when>
    <thetext>Created attachment 406733
patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1680906</commentid>
    <comment_count>15</comment_count>
      <attachid>406741</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2020-08-17 13:28:31 -0700</bug_when>
    <thetext>Created attachment 406741
patch for landing

Turn off OOBSaneChain for 32-bit</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1680934</commentid>
    <comment_count>16</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2020-08-17 15:10:18 -0700</bug_when>
    <thetext>Committed r265775: &lt;https://trac.webkit.org/changeset/265775&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 406741.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1680936</commentid>
    <comment_count>17</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2020-08-17 15:11:59 -0700</bug_when>
    <thetext>&lt;rdar://problem/67274231&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>406565</attachid>
            <date>2020-08-13 19:16:38 -0700</date>
            <delta_ts>2020-08-14 18:36:46 -0700</delta_ts>
            <desc>WIP</desc>
            <filename>c-backup.diff</filename>
            <type>text/plain</type>
            <size>12669</size>
            <attacher name="Saam Barati">saam</attacher>
            
              <data encoding="base64">SW5kZXg6IFBlcmZvcm1hbmNlVGVzdHMvSmV0U3RyZWFtMi9KZXRTdHJlYW1Ecml2ZXIuanMKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gUGVyZm9ybWFuY2VUZXN0cy9KZXRTdHJlYW0yL0pldFN0cmVhbURyaXZlci5q
cwkocmV2aXNpb24gMjY1NjM3KQorKysgUGVyZm9ybWFuY2VUZXN0cy9KZXRTdHJlYW0yL0pldFN0
cmVhbURyaXZlci5qcwkod29ya2luZyBjb3B5KQpAQCAtMjI2LDcgKzIyNiwxMCBAQCBjbGFzcyBE
cml2ZXIgewogICAgICAgICAgICAgYXdhaXQgdXBkYXRlVUkoKTsKIAogICAgICAgICAgICAgdHJ5
IHsKKyAgICAgICAgICAgICAgICBsZXQgYiA9IHR5cGVvZiBfX2Rpc2FibGVTYW1wbGluZ1Byb2Zp
bGVyICE9PSAidW5kZWZpbmVkIjsKKyAgICAgICAgICAgICAgICBpZiAoYikgX19lbmFibGVTYW1w
bGluZ1Byb2ZpbGVyKCk7CiAgICAgICAgICAgICAgICAgYXdhaXQgYmVuY2htYXJrLnJ1bigpOwor
ICAgICAgICAgICAgICAgIGlmIChiKSBfX2Rpc2FibGVTYW1wbGluZ1Byb2ZpbGVyKCk7CiAgICAg
ICAgICAgICB9IGNhdGNoKGUpIHsKICAgICAgICAgICAgICAgICBKZXRTdHJlYW0ucmVwb3J0RXJy
b3IoYmVuY2htYXJrKTsKICAgICAgICAgICAgICAgICB0aHJvdyBlOwpJbmRleDogUGVyZm9ybWFu
Y2VUZXN0cy9KZXRTdHJlYW0yL2NsaS5qcwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBQZXJmb3JtYW5jZVRlc3Rz
L0pldFN0cmVhbTIvY2xpLmpzCShyZXZpc2lvbiAyNjU2MzcpCisrKyBQZXJmb3JtYW5jZVRlc3Rz
L0pldFN0cmVhbTIvY2xpLmpzCSh3b3JraW5nIGNvcHkpCkBAIC0zMiw2ICszMiw5IEBAIGNvbnN0
IGlzRDggPSB0eXBlb2YgUmVhbG0gIT09ICJ1bmRlZmluZWQKIGlmIChpc0Q4KQogICAgIHJlYWRG
aWxlID0gcmVhZDsKIAoraWYgKHR5cGVvZiBfX2Rpc2FibGVTYW1wbGluZ1Byb2ZpbGVyICE9PSAi
dW5kZWZpbmVkIikKKyAgICBfX2Rpc2FibGVTYW1wbGluZ1Byb2ZpbGVyKCk7CisKIGlmICh0eXBl
b2YgdGVzdExpc3QgPT09ICJ1bmRlZmluZWQiKQogICAgIHRlc3RMaXN0ID0gdW5kZWZpbmVkOwog
CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0FycmF5TW9kZS5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBcnJheU1vZGUuY3BwCShyZXZp
c2lvbiAyNjU2MzcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0FycmF5TW9kZS5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTcyMSw2ICs3MjEsOCBAQCBjb25zdCBjaGFyKiBhcnJheVNw
ZWN1bGF0aW9uVG9TdHJpbmcoQXJyCiAgICAgICAgIHJldHVybiAiVG9Ib2xlIjsKICAgICBjYXNl
IEFycmF5OjpPdXRPZkJvdW5kczoKICAgICAgICAgcmV0dXJuICJPdXRPZkJvdW5kcyI7CisgICAg
Y2FzZSBBcnJheTo6T3V0T2ZCb3VuZHNBbmRTYWluOgorICAgICAgICByZXR1cm4gIk91dE9mQm91
bmRzQW5kU2FpbiI7CiAgICAgZGVmYXVsdDoKICAgICAgICAgcmV0dXJuICJVbmtub3duISI7CiAg
ICAgfQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBcnJheU1vZGUuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0FycmF5TW9kZS5oCShyZXZp
c2lvbiAyNjU2MzcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0FycmF5TW9kZS5o
CSh3b3JraW5nIGNvcHkpCkBAIC05Myw2ICs5Myw3IEBAIGVudW0gU3BlY3VsYXRpb24gOiB1aW50
OF90IHsKICAgICAKICAgICBJbkJvdW5kcywgLy8gSW4gYm91bmRzIGFuZCBub3QgbG9hZGluZyBh
IGhvbGUuCiAgICAgVG9Ib2xlLCAvLyBQb3RlbnRpYWxseSBzdG9yaW5nIHRvIGEgaG9sZS4KKyAg
ICBPdXRPZkJvdW5kc0FuZFNhaW4sIC8vIE91dC1vZi1ib3VuZHMgYWNjZXNzLCBidXQgc2FpbiBj
aGFpbi4KICAgICBPdXRPZkJvdW5kcyAvLyBPdXQtb2YtYm91bmRzIGFjY2VzcyBhbmQgYW55dGhp
bmcgY2FuIGhhcHBlbi4KIH07CiBlbnVtIENvbnZlcnNpb24gOiB1aW50OF90IHsKQEAgLTI5OSw3
ICszMDAsNyBAQCBwdWJsaWM6CiAgICAgCiAgICAgYm9vbCBpc091dE9mQm91bmRzKCkgY29uc3QK
ICAgICB7Ci0gICAgICAgIHJldHVybiBzcGVjdWxhdGlvbigpID09IEFycmF5OjpPdXRPZkJvdW5k
czsKKyAgICAgICAgcmV0dXJuIHNwZWN1bGF0aW9uKCkgPT0gQXJyYXk6Ok91dE9mQm91bmRzIHx8
IHNwZWN1bGF0aW9uKCkgPT0gQXJyYXk6Ok91dE9mQm91bmRzQW5kU2FpbjsKICAgICB9CiAgICAg
CiAgICAgYm9vbCBpc1Nsb3dQdXQoKSBjb25zdApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdGaXh1cFBoYXNlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR0ZpeHVwUGhhc2UuY3BwCShyZXZpc2lvbiAyNjU2MzcpCisrKyBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR0ZpeHVwUGhhc2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMDU5
LDUxICsxMDU5LDU3IEBAIHByaXZhdGU6CiAgICAgICAgICAgICBzd2l0Y2ggKGFycmF5TW9kZS50
eXBlKCkpIHsKICAgICAgICAgICAgIGNhc2UgQXJyYXk6OkNvbnRpZ3VvdXM6CiAgICAgICAgICAg
ICBjYXNlIEFycmF5OjpEb3VibGU6Ci0gICAgICAgICAgICAgICAgaWYgKGFycmF5TW9kZS5pc0pT
QXJyYXlXaXRoT3JpZ2luYWxTdHJ1Y3R1cmUoKSAmJiBhcnJheU1vZGUuc3BlY3VsYXRpb24oKSA9
PSBBcnJheTo6SW5Cb3VuZHMpIHsKLSAgICAgICAgICAgICAgICAgICAgLy8gQ2hlY2sgaWYgU2Fu
ZUNoYWluIHdpbGwgd29yayBvbiBhIHBlci10eXBlIGJhc2lzLiBOb3RlIHRoYXQ6Ci0gICAgICAg
ICAgICAgICAgICAgIC8vCi0gICAgICAgICAgICAgICAgICAgIC8vIDEpIFdlIGRvbid0IHdhbnQg
ZG91YmxlIGFycmF5cyB0byBzb21ldGltZXMgcmV0dXJuIHVuZGVmaW5lZCwgc2luY2UKLSAgICAg
ICAgICAgICAgICAgICAgLy8gdGhhdCB3b3VsZCByZXF1aXJlIGEgY2hhbmdlIHRvIHRoZSByZXR1
cm4gdHlwZSBhbmQgaXQgd291bGQgcGVzc2ltaXNlCi0gICAgICAgICAgICAgICAgICAgIC8vIHRo
aW5ncyBhIGxvdC4gU28sIHdlJ2Qgb25seSB3YW50IHRvIGRvIHRoYXQgaWYgd2UgYWN0dWFsbHkg
aGFkCi0gICAgICAgICAgICAgICAgICAgIC8vIGV2aWRlbmNlIHRoYXQgd2UgY291bGQgcmVhZCBm
cm9tIGEgaG9sZS4gVGhhdCdzIHByZXR0eSBhbm5veWluZy4KLSAgICAgICAgICAgICAgICAgICAg
Ly8gTGlrZWx5IHRoZSBiZXN0IHdheSB0byBoYW5kbGUgdGhhdCBjYXNlIGlzIHdpdGggYW4gZXF1
aXZhbGVudCBvZgotICAgICAgICAgICAgICAgICAgICAvLyBTYW5lQ2hhaW4gZm9yIE91dE9mQm91
bmRzLiBGb3Igbm93IHdlIGp1c3QgZGV0ZWN0IHdoZW4gVW5kZWZpbmVkIGFuZAotICAgICAgICAg
ICAgICAgICAgICAvLyBOYU4gYXJlIGluZGlzdGluZ3Vpc2hhYmxlIGFjY29yZGluZyB0byBiYWNr
d2FyZHMgcHJvcGFnYXRpb24sIGFuZCBqdXN0Ci0gICAgICAgICAgICAgICAgICAgIC8vIHVzZSBT
YW5lQ2hhaW4gaW4gdGhhdCBjYXNlLiBUaGlzIGhhcHBlbnMgdG8gY2F0Y2ggYSBsb3Qgb2YgY2Fz
ZXMuCi0gICAgICAgICAgICAgICAgICAgIC8vCi0gICAgICAgICAgICAgICAgICAgIC8vIDIpIFdl
IGRvbid0IHdhbnQgaW50MzIgYXJyYXkgbG9hZHMgdG8gaGF2ZSB0byBkbyBhIGhvbGUgY2hlY2sg
anVzdCB0bwotICAgICAgICAgICAgICAgICAgICAvLyBjb2VyY2UgdG8gVW5kZWZpbmVkLCBzaW5j
ZSB0aGF0IHdvdWxkIG1lYW4gdHdpY2UgdGhlIGNoZWNrcy4KLSAgICAgICAgICAgICAgICAgICAg
Ly8KLSAgICAgICAgICAgICAgICAgICAgLy8gVGhpcyBoYXMgdHdvIGltcGxpY2F0aW9ucy4gRmly
c3QsIHdlIGhhdmUgdG8gZG8gbW9yZSBjaGVja3MgdGhhbiB3ZSdkCi0gICAgICAgICAgICAgICAg
ICAgIC8vIGxpa2UuIEl0J3MgdW5mb3J0dW5hdGUgdGhhdCB3ZSBoYXZlIHRvIGRvIHRoZSBob2xl
IGNoZWNrLiBTZWNvbmQsCi0gICAgICAgICAgICAgICAgICAgIC8vIHNvbWUgYWNjZXNzZXMgdGhh
dCBoaXQgYSBob2xlIHdpbGwgbm93IG5lZWQgdG8gdGFrZSB0aGUgZnVsbC1ibG93bgotICAgICAg
ICAgICAgICAgICAgICAvLyBvdXQtb2YtYm91bmRzIHNsb3cgcGF0aC4gV2UgY2FuIGZpeCB0aGF0
IHdpdGg6Ci0gICAgICAgICAgICAgICAgICAgIC8vIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0xNDQ2NjgKLSAgICAgICAgICAgICAgICAgICAgCi0gICAgICAgICAgICAg
ICAgICAgIGJvb2wgY2FuRG9TYW5lQ2hhaW4gPSBmYWxzZTsKLSAgICAgICAgICAgICAgICAgICAg
c3dpdGNoIChhcnJheU1vZGUudHlwZSgpKSB7Ci0gICAgICAgICAgICAgICAgICAgIGNhc2UgQXJy
YXk6OkNvbnRpZ3VvdXM6Ci0gICAgICAgICAgICAgICAgICAgICAgICAvLyBUaGlzIGlzIGhhcHBl
bnMgdG8gYmUgZW50aXJlbHkgbmF0dXJhbC4gV2UgYWxyZWFkeSB3b3VsZCBoYXZlCi0gICAgICAg
ICAgICAgICAgICAgICAgICAvLyByZXR1cm5lZCBhbnkgSlNWYWx1ZSwgYW5kIG5vdyB3ZSdsbCBy
ZXR1cm4gVW5kZWZpbmVkLiBXZSBzdGlsbCBkbwotICAgICAgICAgICAgICAgICAgICAgICAgLy8g
dGhlIGNoZWNrIGJ1dCBpdCBkb2Vzbid0IHJlcXVpcmUgdGFraW5nIGFueSBraW5kIG9mIHNsb3cg
cGF0aC4KLSAgICAgICAgICAgICAgICAgICAgICAgIGNhbkRvU2FuZUNoYWluID0gdHJ1ZTsKLSAg
ICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgY2FzZSBBcnJheTo6SW50
MzI6IHsKKyAgICAgICAgICAgICAgICAgICAgT3B0aW9uYWw8QXJyYXk6OlNwZWN1bGF0aW9uPiBz
YW5lQ2hhaW5TcGVjdWxhdGlvbjsKKyAgICAgICAgICAgICAgICAgICAgaWYgKGFycmF5TW9kZS5p
c0pTQXJyYXlXaXRoT3JpZ2luYWxTdHJ1Y3R1cmUoKSAmJiBhcnJheU1vZGUuc3BlY3VsYXRpb24o
KSA9PSBBcnJheTo6SW5Cb3VuZHMgJiYgYXJyYXlNb2RlLnR5cGUoKSAhPSBBcnJheTo6SW50MzIp
IHsKKyAgICAgICAgICAgICAgICAgICAgICAgIC8vIENoZWNrIGlmIFNhbmVDaGFpbiB3aWxsIHdv
cmsgb24gYSBwZXItdHlwZSBiYXNpcy4gTm90ZSB0aGF0OgorICAgICAgICAgICAgICAgICAgICAg
ICAgLy8KKyAgICAgICAgICAgICAgICAgICAgICAgIC8vIDEpIFdlIGRvbid0IHdhbnQgZG91Ymxl
IGFycmF5cyB0byBzb21ldGltZXMgcmV0dXJuIHVuZGVmaW5lZCwgc2luY2UKKyAgICAgICAgICAg
ICAgICAgICAgICAgIC8vIHRoYXQgd291bGQgcmVxdWlyZSBhIGNoYW5nZSB0byB0aGUgcmV0dXJu
IHR5cGUgYW5kIGl0IHdvdWxkIHBlc3NpbWlzZQorICAgICAgICAgICAgICAgICAgICAgICAgLy8g
dGhpbmdzIGEgbG90LiBTbywgd2UnZCBvbmx5IHdhbnQgdG8gZG8gdGhhdCBpZiB3ZSBhY3R1YWxs
eSBoYWQKKyAgICAgICAgICAgICAgICAgICAgICAgIC8vIGV2aWRlbmNlIHRoYXQgd2UgY291bGQg
cmVhZCBmcm9tIGEgaG9sZS4gVGhhdCdzIHByZXR0eSBhbm5veWluZy4KKyAgICAgICAgICAgICAg
ICAgICAgICAgIC8vIExpa2VseSB0aGUgYmVzdCB3YXkgdG8gaGFuZGxlIHRoYXQgY2FzZSBpcyB3
aXRoIGFuIGVxdWl2YWxlbnQgb2YKKyAgICAgICAgICAgICAgICAgICAgICAgIC8vIFNhbmVDaGFp
biBmb3IgT3V0T2ZCb3VuZHMuIEZvciBub3cgd2UganVzdCBkZXRlY3Qgd2hlbiBVbmRlZmluZWQg
YW5kCisgICAgICAgICAgICAgICAgICAgICAgICAvLyBOYU4gYXJlIGluZGlzdGluZ3Vpc2hhYmxl
IGFjY29yZGluZyB0byBiYWNrd2FyZHMgcHJvcGFnYXRpb24sIGFuZCBqdXN0CisgICAgICAgICAg
ICAgICAgICAgICAgICAvLyB1c2UgU2FuZUNoYWluIGluIHRoYXQgY2FzZS4gVGhpcyBoYXBwZW5z
IHRvIGNhdGNoIGEgbG90IG9mIGNhc2VzLgorICAgICAgICAgICAgICAgICAgICAgICAgLy8KKyAg
ICAgICAgICAgICAgICAgICAgICAgIC8vIDIpIFdlIGRvbid0IHdhbnQgaW50MzIgYXJyYXkgbG9h
ZHMgdG8gaGF2ZSB0byBkbyBhIGhvbGUgY2hlY2sganVzdCB0bworICAgICAgICAgICAgICAgICAg
ICAgICAgLy8gY29lcmNlIHRvIFVuZGVmaW5lZCwgc2luY2UgdGhhdCB3b3VsZCBtZWFuIHR3aWNl
IHRoZSBjaGVja3MuIFdlIHdhbnQgdG8KKyAgICAgICAgICAgICAgICAgICAgICAgIC8vIGJlIGFi
bGUgdG8gc2F5IHdlIGFsd2F5cyByZXR1cm4gSW50MzIuIEZJWE1FOiBNYXliZSB0aGlzIHNob3Vs
ZCBiZSBwcm9maWxpbmcKKyAgICAgICAgICAgICAgICAgICAgICAgIC8vIGJhc2VkPworICAgICAg
ICAgICAgICAgICAgICAgICAgLy8KKyAgICAgICAgICAgICAgICAgICAgICAgIC8vIFRoaXMgaGFz
IHR3byBpbXBsaWNhdGlvbnMuIEZpcnN0LCB3ZSBoYXZlIHRvIGRvIG1vcmUgY2hlY2tzIHRoYW4g
d2UnZAorICAgICAgICAgICAgICAgICAgICAgICAgLy8gbGlrZS4gSXQncyB1bmZvcnR1bmF0ZSB0
aGF0IHdlIGhhdmUgdG8gZG8gdGhlIGhvbGUgY2hlY2suIFNlY29uZCwKKyAgICAgICAgICAgICAg
ICAgICAgICAgIC8vIHNvbWUgYWNjZXNzZXMgdGhhdCBoaXQgYSBob2xlIHdpbGwgbm93IG5lZWQg
dG8gdGFrZSB0aGUgZnVsbC1ibG93bgorICAgICAgICAgICAgICAgICAgICAgICAgLy8gb3V0LW9m
LWJvdW5kcyBzbG93IHBhdGguIFdlIGNhbiBmaXggdGhhdCB3aXRoOgorICAgICAgICAgICAgICAg
ICAgICAgICAgLy8gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE0NDY2
OAogICAgICAgICAgICAgICAgICAgICAgICAgCi0gICAgICAgICAgICAgICAgICAgIGNhc2UgQXJy
YXk6OkRvdWJsZToKLSAgICAgICAgICAgICAgICAgICAgICAgIGlmICghKG5vZGUtPmZsYWdzKCkg
JiBOb2RlQnl0ZWNvZGVVc2VzQXNPdGhlcikpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAvLyBIb2xlcyBsb29rIGxpa2UgTmFOIGFscmVhZHksIHNvIGlmIHRoZSB1c2VyIGRvZXNuJ3Qg
Y2FyZQotICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGFib3V0IHRoZSBkaWZmZXJlbmNl
IGJldHdlZW4gVW5kZWZpbmVkIGFuZCBOYU4gdGhlbiB3ZSBjYW4KLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAvLyBkbyB0aGlzLgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhbkRv
U2FuZUNoYWluID0gdHJ1ZTsKKyAgICAgICAgICAgICAgICAgICAgICAgIHN3aXRjaCAoYXJyYXlN
b2RlLnR5cGUoKSkgeworICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSBBcnJheTo6Q29udGln
dW91czoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBUaGlzIGlzIGhhcHBlbnMgdG8g
YmUgZW50aXJlbHkgbmF0dXJhbC4gV2UgYWxyZWFkeSB3b3VsZCBoYXZlCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgLy8gcmV0dXJuZWQgYW55IEpTVmFsdWUsIGFuZCBub3cgd2UnbGwgcmV0
dXJuIFVuZGVmaW5lZC4gV2Ugc3RpbGwgZG8KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAv
LyB0aGUgY2hlY2sgYnV0IGl0IGRvZXNuJ3QgcmVxdWlyZSB0YWtpbmcgYW55IGtpbmQgb2Ygc2xv
dyBwYXRoLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNhbmVDaGFpblNwZWN1bGF0aW9u
ID0gQXJyYXk6OlNhbmVDaGFpbjsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICAgICAgICAgIGNh
c2UgQXJyYXk6OkRvdWJsZToKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIShub2Rl
LT5mbGFncygpICYgTm9kZUJ5dGVjb2RlVXNlc0FzT3RoZXIpKSB7CisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIC8vIEhvbGVzIGxvb2sgbGlrZSBOYU4gYWxyZWFkeSwgc28gaWYgdGhl
IHVzZXIgZG9lc24ndCBjYXJlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGFi
b3V0IHRoZSBkaWZmZXJlbmNlIGJldHdlZW4gVW5kZWZpbmVkIGFuZCBOYU4gdGhlbiB3ZSBjYW4K
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gZG8gdGhpcy4KKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgc2FuZUNoYWluU3BlY3VsYXRpb24gPSBBcnJheTo6U2FuZUNo
YWluOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKyAgICAgICAgICAg
ICAgICAgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7
CiAgICAgICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgICAgICAgICBicmVh
azsKICAgICAgICAgICAgICAgICAgICAgICAgIAotICAgICAgICAgICAgICAgICAgICBkZWZhdWx0
OgotICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgICAgIH0K
LSAgICAgICAgICAgICAgICAgICAgCi0gICAgICAgICAgICAgICAgICAgIGlmIChjYW5Eb1NhbmVD
aGFpbikKLSAgICAgICAgICAgICAgICAgICAgICAgIHNldFNhbmVDaGFpbklmUG9zc2libGUobm9k
ZSk7CisgICAgICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoYXJyYXlNb2RlLmlzSlNBcnJheVdp
dGhPcmlnaW5hbFN0cnVjdHVyZSgpICYmIGFycmF5TW9kZS5zcGVjdWxhdGlvbigpID09IEFycmF5
OjpPdXRPZkJvdW5kcyAmJiBhcnJheU1vZGUudHlwZSgpID09IEFycmF5OjpJbnQzMikKKyAgICAg
ICAgICAgICAgICAgICAgICAgIHNhbmVDaGFpblNwZWN1bGF0aW9uID0gQXJyYXk6Ok91dE9mQm91
bmRzQW5kU2FpbjsKKworICAgICAgICAgICAgICAgICAgICBpZiAoc2FuZUNoYWluU3BlY3VsYXRp
b24pCisgICAgICAgICAgICAgICAgICAgICAgICBzZXRTYW5lQ2hhaW5JZlBvc3NpYmxlKG5vZGUs
ICpzYW5lQ2hhaW5TcGVjdWxhdGlvbik7CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAg
ICAgIGJyZWFrOwogICAgICAgICAgICAgICAgIApAQCAtMjIwMiw3ICsyMjA4LDcgQEAgcHJpdmF0
ZToKICAgICAgICAgICAgIC8vIEZJWE1FOiBPdXRPZkJvdW5kcyBzaG91bGRuJ3QgcHJlY2x1ZGUg
Z29pbmcgc2FuZSBjaGFpbiBiZWNhdXNlIE9PQiBpcyBqdXN0IGZhbHNlIGFuZCBjYW5ub3QgaGF2
ZSBlZmZlY3RzLgogICAgICAgICAgICAgLy8gU2VlOiBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MjA5NDU2CiAgICAgICAgICAgICBpZiAoYXJyYXlNb2RlLmlzSlNBcnJh
eVdpdGhPcmlnaW5hbFN0cnVjdHVyZSgpICYmIGFycmF5TW9kZS5zcGVjdWxhdGlvbigpID09IEFy
cmF5OjpJbkJvdW5kcykKLSAgICAgICAgICAgICAgICBzZXRTYW5lQ2hhaW5JZlBvc3NpYmxlKG5v
ZGUpOworICAgICAgICAgICAgICAgIHNldFNhbmVDaGFpbklmUG9zc2libGUobm9kZSwgQXJyYXk6
OlNhbmVDaGFpbik7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogICAgICAgICBjYXNl
IEdldERpcmVjdFBuYW1lOiB7CkBAIC0zNTUxLDcgKzM1NTcsNyBAQCBwcml2YXRlOgogICAgICAg
ICAgICAgT3BJbmZvKGFycmF5TW9kZS5hc1dvcmQoKSksIEVkZ2UoYXJyYXksIEtub3duQ2VsbFVz
ZSkpOwogICAgIH0KIAotICAgIHZvaWQgc2V0U2FuZUNoYWluSWZQb3NzaWJsZShOb2RlKiBub2Rl
KQorICAgIHZvaWQgc2V0U2FuZUNoYWluSWZQb3NzaWJsZShOb2RlKiBub2RlLCBBcnJheTo6U3Bl
Y3VsYXRpb24gc3BlY3VsYXRpb24pCiAgICAgewogICAgICAgICBKU0dsb2JhbE9iamVjdCogZ2xv
YmFsT2JqZWN0ID0gbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGlj
KTsKICAgICAgICAgU3RydWN0dXJlKiBhcnJheVByb3RvdHlwZVN0cnVjdHVyZSA9IGdsb2JhbE9i
amVjdC0+YXJyYXlQcm90b3R5cGUoKS0+c3RydWN0dXJlKHZtKCkpOwpAQCAtMzU2MSw3ICszNTY3
LDcgQEAgcHJpdmF0ZToKICAgICAgICAgICAgICYmIGdsb2JhbE9iamVjdC0+YXJyYXlQcm90b3R5
cGVDaGFpbklzU2FuZSgpKSB7CiAgICAgICAgICAgICBtX2dyYXBoLnJlZ2lzdGVyQW5kV2F0Y2hT
dHJ1Y3R1cmVUcmFuc2l0aW9uKGFycmF5UHJvdG90eXBlU3RydWN0dXJlKTsKICAgICAgICAgICAg
IG1fZ3JhcGgucmVnaXN0ZXJBbmRXYXRjaFN0cnVjdHVyZVRyYW5zaXRpb24ob2JqZWN0UHJvdG90
eXBlU3RydWN0dXJlKTsKLSAgICAgICAgICAgIG5vZGUtPnNldEFycmF5TW9kZShub2RlLT5hcnJh
eU1vZGUoKS53aXRoU3BlY3VsYXRpb24oQXJyYXk6OlNhbmVDaGFpbikpOworICAgICAgICAgICAg
bm9kZS0+c2V0QXJyYXlNb2RlKG5vZGUtPmFycmF5TW9kZSgpLndpdGhTcGVjdWxhdGlvbihzcGVj
dWxhdGlvbikpOwogICAgICAgICAgICAgbm9kZS0+Y2xlYXJGbGFncyhOb2RlTXVzdEdlbmVyYXRl
KTsKICAgICAgICAgfQogICAgIH0KQEAgLTM5NDMsNyArMzk0OSw3IEBAIHByaXZhdGU6CiAgICAg
ICAgIC8vIEZJWE1FOiBPdXRPZkJvdW5kcyBzaG91bGRuJ3QgcHJlY2x1ZGUgZ29pbmcgc2FuZSBj
aGFpbiBiZWNhdXNlIE9PQiBpcyBqdXN0IGZhbHNlIGFuZCBjYW5ub3QgaGF2ZSBlZmZlY3RzLgog
ICAgICAgICAvLyBTZWU6IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0y
MDk0NTYKICAgICAgICAgaWYgKGFycmF5TW9kZS5pc0pTQXJyYXlXaXRoT3JpZ2luYWxTdHJ1Y3R1
cmUoKSAmJiBhcnJheU1vZGUuc3BlY3VsYXRpb24oKSA9PSBBcnJheTo6SW5Cb3VuZHMpCi0gICAg
ICAgICAgICBzZXRTYW5lQ2hhaW5JZlBvc3NpYmxlKG5vZGUpOworICAgICAgICAgICAgc2V0U2Fu
ZUNoYWluSWZQb3NzaWJsZShub2RlLCBBcnJheTo6U2FuZUNoYWluKTsKIAogICAgICAgICBmaXhF
ZGdlPENlbGxVc2U+KG1fZ3JhcGgudmFyQXJnQ2hpbGQobm9kZSwgMCkpOwogICAgICAgICBmaXhF
ZGdlPEludDMyVXNlPihtX2dyYXBoLnZhckFyZ0NoaWxkKG5vZGUsIDEpKTsKSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTG93ZXJERkdUb0IzLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTExvd2VyREZHVG9CMy5jcHAJKHJldmlzaW9uIDI2
NTYzNykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTG93ZXJERkdUb0IzLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtNDY0NSw2ICs0NjQ1LDkgQEAgcHJpdmF0ZToKICAgICAgICAgICAg
ICAgICBzZXRKU1ZhbHVlKHJlc3VsdCk7CiAgICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAg
ICAgICAgfQorCisgICAgICAgICAgICAvL2lmIChtX25vZGUtPm9yaWdpbi5zZW1hbnRpYy5ieXRl
Y29kZUluZGV4KCkub2Zmc2V0KCkgPT0gMTEwICYmIFN0cmluZyhjb2RlQmxvY2soKS0+aW5mZXJy
ZWROYW1lKCkuZGF0YSgpKSA9PSAic3RyMmJpbmwiICYmIG1fbm9kZS0+YXJyYXlNb2RlKCkudHlw
ZSgpID09IEFycmF5OjpJbnQzMikKKyAgICAgICAgICAgIC8vICAgIGRhdGFMb2dMbigiY29tcGls
aW5nIG9vYiBpbnQzMiIpOwogICAgICAgICAgICAgCiAgICAgICAgICAgICBMQmFzaWNCbG9jayBm
YXN0Q2FzZSA9IG1fb3V0Lm5ld0Jsb2NrKCk7CiAgICAgICAgICAgICBMQmFzaWNCbG9jayBzbG93
Q2FzZSA9IG1fb3V0Lm5ld0Jsb2NrKCk7CkBAIC00NjYzLDcgKzQ2NjYsMTEgQEAgcHJpdmF0ZToK
ICAgICAgICAgICAgICAgICBtX291dC5pc1plcm82NChmYXN0UmVzdWx0VmFsdWUpLCByYXJlbHko
c2xvd0Nhc2UpLCB1c3VhbGx5KGNvbnRpbnVhdGlvbikpOwogICAgICAgICAgICAgCiAgICAgICAg
ICAgICBtX291dC5hcHBlbmRUbyhzbG93Q2FzZSwgY29udGludWF0aW9uKTsKLSAgICAgICAgICAg
IFZhbHVlRnJvbUJsb2NrIHNsb3dSZXN1bHQgPSBtX291dC5hbmNob3Iodm1DYWxsKEludDY0LCBv
cGVyYXRpb25HZXRCeVZhbE9iamVjdEludCwgd2Vha1BvaW50ZXIoZ2xvYmFsT2JqZWN0KSwgYmFz
ZSwgaW5kZXgpKTsKKyAgICAgICAgICAgIFZhbHVlRnJvbUJsb2NrIHNsb3dSZXN1bHQ7CisgICAg
ICAgICAgICBpZiAobV9ub2RlLT5hcnJheU1vZGUoKS5zcGVjdWxhdGlvbigpID09IEFycmF5OjpP
dXRPZkJvdW5kc0FuZFNhaW4pCisgICAgICAgICAgICAgICAgc2xvd1Jlc3VsdCA9IG1fb3V0LmFu
Y2hvcihtX291dC5jb25zdEludDY0KEpTVmFsdWU6OlZhbHVlVW5kZWZpbmVkKSk7CisgICAgICAg
ICAgICBlbHNlCisgICAgICAgICAgICAgICAgc2xvd1Jlc3VsdCA9IG1fb3V0LmFuY2hvcih2bUNh
bGwoSW50NjQsIG9wZXJhdGlvbkdldEJ5VmFsT2JqZWN0SW50LCB3ZWFrUG9pbnRlcihnbG9iYWxP
YmplY3QpLCBiYXNlLCBpbmRleCkpOwogICAgICAgICAgICAgbV9vdXQuanVtcChjb250aW51YXRp
b24pOwogICAgICAgICAgICAgCiAgICAgICAgICAgICBtX291dC5hcHBlbmRUbyhjb250aW51YXRp
b24sIGxhc3ROZXh0KTsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>406645</attachid>
            <date>2020-08-14 18:36:46 -0700</date>
            <delta_ts>2020-08-14 18:38:06 -0700</delta_ts>
            <desc>patch</desc>
            <filename>c-backup.diff</filename>
            <type>text/plain</type>
            <size>39571</size>
            <attacher name="Saam Barati">saam</attacher>
            
              <data encoding="base64">SW5kZXg6IEpTVGVzdHMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIEpTVGVzdHMvQ2hhbmdlTG9n
CShyZXZpc2lvbiAyNjU3MjMpCisrKyBKU1Rlc3RzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpA
QCAtMSwzICsxLDIzIEBACisyMDIwLTA4LTE0ICBTYWFtIEJhcmF0aSAgPHNiYXJhdGlAYXBwbGUu
Y29tPgorCisgICAgICAgIEhhdmUgYW4gT09CK1NhbmVDaGFpbiBBcnJheTo6U3BlY3VsYXRpb24K
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxNTQ4Nwor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogbWljcm9i
ZW5jaG1hcmtzL29vYi1zYW5lLWNoYWluLWNvbnRpZ3VvdXMuanM6IEFkZGVkLgorICAgICAgICAo
YXNzZXJ0KToKKyAgICAgICAgKGJhcik6CisgICAgICAgICogbWljcm9iZW5jaG1hcmtzL29vYi1z
YW5lLWNoYWluLWRvdWJsZS1yZWFkLXVuZGVmaW5lZC5qczogQWRkZWQuCisgICAgICAgIChhc3Nl
cnQpOgorICAgICAgICAoYmF6KToKKyAgICAgICAgKiBtaWNyb2JlbmNobWFya3Mvb29iLXNhbmUt
Y2hhaW4tZG91YmxlLmpzOiBBZGRlZC4KKyAgICAgICAgKGFzc2VydCk6CisgICAgICAgIChmb28p
OgorICAgICAgICAqIG1pY3JvYmVuY2htYXJrcy9vb2Itc2FuZS1jaGFpbi1pbnQzMi5qczogQWRk
ZWQuCisgICAgICAgIChhc3NlcnQpOgorICAgICAgICAoYmFyKToKKwogMjAyMC0wOC0xMiAgS2Vp
dGggTWlsbGVyICA8a2VpdGhfbWlsbGVyQGFwcGxlLmNvbT4KIAogICAgICAgICBPU1JBdmFpbGFi
aWxpdHlBbmFseXNpcyBzaG91bGRuJ3QgbWFyayBHZXRTdGFjayBub2RlcyBkaXJlY3RseSBhcyB2
YWxpZCBwbGFjZXMgZm9yIHJlY292ZXJ5CkluZGV4OiBKU1Rlc3RzL21pY3JvYmVuY2htYXJrcy9v
b2Itc2FuZS1jaGFpbi1jb250aWd1b3VzLmpzCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIEpTVGVzdHMvbWljcm9i
ZW5jaG1hcmtzL29vYi1zYW5lLWNoYWluLWNvbnRpZ3VvdXMuanMJKG5vbmV4aXN0ZW50KQorKysg
SlNUZXN0cy9taWNyb2JlbmNobWFya3Mvb29iLXNhbmUtY2hhaW4tY29udGlndW91cy5qcwkod29y
a2luZyBjb3B5KQpAQCAtMCwwICsxLDE5IEBACitmdW5jdGlvbiBhc3NlcnQoYikgeworICAgIGlm
ICghYikKKyAgICAgICAgdGhyb3cgbmV3IEVycm9yOworfQorCitmdW5jdGlvbiBiYXIoYSwgeCkg
eworICAgIHJldHVybiBhW3hdOworfQorbm9JbmxpbmUoYmFyKTsKKworbGV0IG8gPSB7fTsKK2xl
dCBiID0gW28sICIiLCAsIDI1XTsKKworZm9yIChsZXQgaSA9IDA7IGkgPCAxMDAwMDAwMDsgKytp
KSB7CisgICAgYXNzZXJ0KGJhcihiLCAwKSA9PT0gbyk7CisgICAgYXNzZXJ0KGJhcihiLCA1KSA9
PT0gdW5kZWZpbmVkKTsKKyAgICBhc3NlcnQoYmFyKGIsIDIpID09PSB1bmRlZmluZWQpOworICAg
IGFzc2VydChiYXIoYiwgLTEpID09PSB1bmRlZmluZWQpOworfQpJbmRleDogSlNUZXN0cy9taWNy
b2JlbmNobWFya3Mvb29iLXNhbmUtY2hhaW4tZG91YmxlLXJlYWQtdW5kZWZpbmVkLmpzCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIEpTVGVzdHMvbWljcm9iZW5jaG1hcmtzL29vYi1zYW5lLWNoYWluLWRvdWJsZS1y
ZWFkLXVuZGVmaW5lZC5qcwkobm9uZXhpc3RlbnQpCisrKyBKU1Rlc3RzL21pY3JvYmVuY2htYXJr
cy9vb2Itc2FuZS1jaGFpbi1kb3VibGUtcmVhZC11bmRlZmluZWQuanMJKHdvcmtpbmcgY29weSkK
QEAgLTAsMCArMSwxOSBAQAorZnVuY3Rpb24gYXNzZXJ0KGIpIHsKKyAgICBpZiAoIWIpCisgICAg
ICAgIHRocm93IG5ldyBFcnJvcjsKK30KKworZnVuY3Rpb24gYmF6KGEsIHgpIHsKKyAgICByZXR1
cm4gYVt4XTsKK30KK25vSW5saW5lKGJheik7CisKK2xldCBhID0gWzEuNSwgMi41LCAsIDMuNV07
CisKK2ZvciAobGV0IGkgPSAwOyBpIDwgMTAwMDAwMDA7ICsraSkgeworICAgIGFzc2VydChiYXoo
YSwgMCkgPT09IDEuNSk7CisgICAgYXNzZXJ0KGJheihhLCA1KSA9PT0gdW5kZWZpbmVkKTsKKyAg
ICBhc3NlcnQoYmF6KGEsIDIpID09PSB1bmRlZmluZWQpOworICAgIGFzc2VydChiYXooYSwgLTEp
ID09PSB1bmRlZmluZWQpOworfQorCkluZGV4OiBKU1Rlc3RzL21pY3JvYmVuY2htYXJrcy9vb2It
c2FuZS1jaGFpbi1kb3VibGUuanMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gSlNUZXN0cy9taWNyb2JlbmNobWFy
a3Mvb29iLXNhbmUtY2hhaW4tZG91YmxlLmpzCShub25leGlzdGVudCkKKysrIEpTVGVzdHMvbWlj
cm9iZW5jaG1hcmtzL29vYi1zYW5lLWNoYWluLWRvdWJsZS5qcwkod29ya2luZyBjb3B5KQpAQCAt
MCwwICsxLDE4IEBACitmdW5jdGlvbiBhc3NlcnQoYikgeworICAgIGlmICghYikKKyAgICAgICAg
dGhyb3cgbmV3IEVycm9yOworfQorCitmdW5jdGlvbiBmb28oYSwgeCkgeworICAgIHJldHVybiBh
W3hdICogMi41OworfQorbm9JbmxpbmUoZm9vKTsKKworbGV0IGEgPSBbMS41LCAyLjUsICwgMy41
XTsKKworZm9yIChsZXQgaSA9IDA7IGkgPCAxMDAwMDAwMDsgKytpKSB7CisgICAgYXNzZXJ0KGZv
byhhLCAwKSA9PT0gMi41ICogMS41KTsKKyAgICBhc3NlcnQoaXNOYU4oZm9vKGEsIDUpKSk7Cisg
ICAgYXNzZXJ0KGlzTmFOKGZvbyhhLCAyKSkpOworICAgIGFzc2VydChpc05hTihmb28oYSwgLTEp
KSk7Cit9CkluZGV4OiBKU1Rlc3RzL21pY3JvYmVuY2htYXJrcy9vb2Itc2FuZS1jaGFpbi1pbnQz
Mi5qcwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBKU1Rlc3RzL21pY3JvYmVuY2htYXJrcy9vb2Itc2FuZS1jaGFp
bi1pbnQzMi5qcwkobm9uZXhpc3RlbnQpCisrKyBKU1Rlc3RzL21pY3JvYmVuY2htYXJrcy9vb2It
c2FuZS1jaGFpbi1pbnQzMi5qcwkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDE4IEBACitmdW5j
dGlvbiBhc3NlcnQoYikgeworICAgIGlmICghYikKKyAgICAgICAgdGhyb3cgbmV3IEVycm9yOwor
fQorCitmdW5jdGlvbiBiYXIoYSwgeCkgeworICAgIHJldHVybiBhW3hdOworfQorbm9JbmxpbmUo
YmFyKTsKKworbGV0IGIgPSBbMCwgMSwgLCAgMl07CisKK2ZvciAobGV0IGkgPSAwOyBpIDwgMTAw
MDAwMDA7ICsraSkgeworICAgIGFzc2VydChiYXIoYiwgMCkgPT09IDApOworICAgIGFzc2VydChi
YXIoYiwgNSkgPT09IHVuZGVmaW5lZCk7CisgICAgYXNzZXJ0KGJhcihiLCAyKSA9PT0gdW5kZWZp
bmVkKTsKKyAgICBhc3NlcnQoYmFyKGIsIC0xKSA9PT0gdW5kZWZpbmVkKTsKK30KSW5kZXg6IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFT
Y3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMjY1NjM3KQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDU3IEBACisyMDIwLTA4
LTE0ICBTYWFtIEJhcmF0aSAgPHNiYXJhdGlAYXBwbGUuY29tPgorCisgICAgICAgIEhhdmUgYW4g
T09CK1NhbmVDaGFpbiBBcnJheTo6U3BlY3VsYXRpb24KKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxNTQ4NworCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoaXMgcGF0Y2ggYWRkcyBhIG5ldyBBcnJheU1vZGUg
c3BlY3VsYXRpb24gaW4gdGhlIERGRy9GVEwgY2FsbGVkIE91dE9mQm91bmRzU2FuZUNoYWluLgor
ICAgICAgICBJdCBhbGxvd3MgdXMgdG8gZG8gZmFzdCB0aGluZ3Mgd2hlbiB3ZSBnbyBPT0IsIGxp
a2Ugc2ltcGx5IHJldHVybiB1bmRlZmluZWQuCisgICAgICAgIFRoaXMgaXMgYmVjYXVzZSB3ZSBp
bnN0YWxsIHdhdGNocG9pbnRzIG9uIHRoZSBwcm90b3R5cGUgY2hhaW4gdG8gZW5zdXJlIHRoZXkK
KyAgICAgICAgaGF2ZSBubyBpbmRleGVkIHByb3BlcnRpZXMuIFRoaXMgcGF0Y2ggaW1wbGVtZW50
cyBPdXRPZkJvdW5kc1NhbmVDaGFpbiBvbgorICAgICAgICBHZXRCeVZhbCBvdmVyIEludDMyL0Rv
dWJsZS9Db250aWd1b3VzIG9yaWdpbmFsIEpTIGFycmF5cy4gV2UgY2FuIGV4dGVuZCBpdCBpbgor
ICAgICAgICB0aGUgZnV0dXJlIHRvIG5vbiBvcmlnaW5hbCBKUyBhcnJheXMuIFRoYXQgZXh0ZW5z
aW9uIHdvdWxkIHJlcXVpcmUgZXhpdGluZyBpZgorICAgICAgICB3ZSBzZWUgYSBuZWdhdGl2ZSBp
bmRleCAoYW5kIGNyZWF0aW5nIGEgZmVlZGJhY2sgbG9vcCBzbyB3ZSBkb24ndCBoYXZlIGFuIE9T
UgorICAgICAgICBleGl0IGxvb3AgZm9yIG5lZ2F0aXZlIGluZGljZXMpLiBUaGUgcmVhc29uIHRo
aXMgcGF0Y2ggb25seSBkb2VzIGl0IGZvcgorICAgICAgICBvcmlnaW5hbCBhcnJheXMgaXMgdGhh
dCBpZiB3ZSdyZSBhbiBvcmlnaW5hbCBKUyBhcnJheSwgYW5kIHNhbmUgY2hhaW4sIHdlIGhhdmUK
KyAgICAgICAgcHJvdmVuIHRoYXQgd2UgY2FuIHJldHVybiB1bmRlZmluZWQgZm9yIG5lZ2F0aXZl
IGluZGljZXMuCisgICAgICAgIAorICAgICAgICBUaGlzIGlzIGFib3V0IDIwJSBmYXN0ZXIgb24g
Y3J5cHRvLW1kNS1TUC4gQW5kIH4zLTR4IGZhc3RlciBvbiB0aGUKKyAgICAgICAgbWljcm9iZW5j
aG1hcmtzIEkgY3JlYXRlZC4KKworICAgICAgICAqIGRmZy9ERkdBYnN0cmFjdEludGVycHJldGVy
SW5saW5lcy5oOgorICAgICAgICAoSlNDOjpERkc6OkFic3RyYWN0SW50ZXJwcmV0ZXI8QWJzdHJh
Y3RTdGF0ZVR5cGU+OjpleGVjdXRlRWZmZWN0cyk6CisgICAgICAgICogZGZnL0RGR0FycmF5TW9k
ZS5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6QXJyYXlNb2RlOjpyZWZpbmUgY29uc3QpOgorICAg
ICAgICAoSlNDOjpERkc6OmFycmF5U3BlY3VsYXRpb25Ub1N0cmluZyk6CisgICAgICAgICogZGZn
L0RGR0FycmF5TW9kZS5oOgorICAgICAgICAoSlNDOjpERkc6OkFycmF5TW9kZTo6aXNJbkJvdW5k
c1NhbmVDaGFpbiBjb25zdCk6CisgICAgICAgIChKU0M6OkRGRzo6QXJyYXlNb2RlOjppc091dE9m
Qm91bmRzU2FuZUNoYWluIGNvbnN0KToKKyAgICAgICAgKEpTQzo6REZHOjpBcnJheU1vZGU6Omlz
T3V0T2ZCb3VuZHMgY29uc3QpOgorICAgICAgICAoSlNDOjpERkc6OkFycmF5TW9kZTo6aXNFZmZl
Y3RmdWxPdXRPZkJvdW5kcyBjb25zdCk6CisgICAgICAgIChKU0M6OkRGRzo6QXJyYXlNb2RlOjpp
c0luQm91bmRzIGNvbnN0KToKKyAgICAgICAgKEpTQzo6REZHOjpBcnJheU1vZGU6OmlzU2FuZUNo
YWluIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKiBkZmcvREZHQ1NFUGhhc2UuY3BwOgorICAg
ICAgICAqIGRmZy9ERkdDbG9iYmVyaXplLmg6CisgICAgICAgIChKU0M6OkRGRzo6Y2xvYmJlcml6
ZSk6CisgICAgICAgICogZGZnL0RGR0ZpeHVwUGhhc2UuY3BwOgorICAgICAgICAoSlNDOjpERkc6
OkZpeHVwUGhhc2U6OmZpeHVwTm9kZSk6CisgICAgICAgIChKU0M6OkRGRzo6Rml4dXBQaGFzZTo6
Y2hlY2tBcnJheSk6CisgICAgICAgIChKU0M6OkRGRzo6Rml4dXBQaGFzZTo6c2V0U2FuZUNoYWlu
SWZQb3NzaWJsZSk6CisgICAgICAgIChKU0M6OkRGRzo6Rml4dXBQaGFzZTo6Y29udmVydFRvSGFz
SW5kZXhlZFByb3BlcnR5KToKKyAgICAgICAgKiBkZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwOgor
ICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21waWxlR2V0QnlWYWxPblN0cmlu
Zyk6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVIYXNJbmRleGVk
UHJvcGVydHkpOgorICAgICAgICAqIGRmZy9ERkdTcGVjdWxhdGl2ZUpJVDMyXzY0LmNwcDoKKyAg
ICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZSk6CisgICAgICAgICogZGZn
L0RGR1NwZWN1bGF0aXZlSklUNjQuY3BwOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZl
SklUOjpjb21waWxlKToKKyAgICAgICAgKiBkZmcvREZHVmFsaWRhdGUuY3BwOgorICAgICAgICAq
IGZ0bC9GVExMb3dlckRGR1RvQjMuY3BwOgorICAgICAgICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJE
RkdUb0IzOjpjb21waWxlR2V0QnlWYWwpOgorICAgICAgICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJE
RkdUb0IzOjpjb21waWxlU3RyaW5nQ2hhckF0KToKKyAgICAgICAgKEpTQzo6RlRMOjpERkc6Okxv
d2VyREZHVG9CMzo6Y29tcGlsZUhhc0luZGV4ZWRQcm9wZXJ0eSk6CisKIDIwMjAtMDgtMTIgIEtl
aXRoIFJvbGxpbiAgPGtyb2xsaW5AYXBwbGUuY29tPgogCiAgICAgICAgIFJlbW92ZSB0aGUgbmVl
ZCBmb3IgZGVmaW5pbmcgVVNFX05FV19CVUlMRF9TWVNURU0KSW5kZXg6IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHQWJzdHJhY3RJbnRlcnByZXRlcklubGluZXMuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Fic3RyYWN0SW50ZXJwcmV0ZXJJbmxpbmVz
LmgJKHJldmlzaW9uIDI2NTYzNykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQWJz
dHJhY3RJbnRlcnByZXRlcklubGluZXMuaAkod29ya2luZyBjb3B5KQpAQCAtMjM1MCw3ICsyMzUw
LDcgQEAgYm9vbCBBYnN0cmFjdEludGVycHJldGVyPEFic3RyYWN0U3RhdGVUeQogICAgICAgICAg
ICAgICAgIC8vIHdlIGdvdCB0byB0aGUgYmFja2VuZC4gU28gdG8gZG8gdGhpcyByaWdodCwgd2Un
ZCBoYXZlIHRvIGdldCB0aGUKICAgICAgICAgICAgICAgICAvLyBmaXh1cCBwaGFzZSB0byBjaGVj
ayB0aGUgd2F0Y2hwb2ludCBzdGF0ZSBhbmQgdGhlbiBiYWtlIGludG8gdGhlCiAgICAgICAgICAg
ICAgICAgLy8gR2V0QnlWYWwgb3BlcmF0aW9uIHRoZSBmYWN0IHRoYXQgd2UncmUgdXNpbmcgYSB3
YXRjaHBvaW50LCB1c2luZwotICAgICAgICAgICAgICAgIC8vIHNvbWV0aGluZyBsaWtlIEFycmF5
OjpTYW5lQ2hhaW4gKGV4Y2VwdCBub3QgcXVpdGUsIGJlY2F1c2UgdGhhdAorICAgICAgICAgICAg
ICAgIC8vIHNvbWV0aGluZyBsaWtlIEFycmF5OjpJbkJvdW5kc1NhbmVDaGFpbiAoZXhjZXB0IG5v
dCBxdWl0ZSwgYmVjYXVzZSB0aGF0CiAgICAgICAgICAgICAgICAgLy8gaW1wbGllcyBhbiBpbi1i
b3VuZHMgYWNjZXNzKS4gTm9uZSBvZiB0aGlzIGZlZWxzIGxpa2UgaXQncyB3b3J0aCBpdCwKICAg
ICAgICAgICAgICAgICAvLyBzbyB3ZSdyZSBnb2luZyB3aXRoIFRPUCBmb3Igbm93LiBUaGUgc2Ft
ZSB0aGluZyBhcHBsaWVzIHRvCiAgICAgICAgICAgICAgICAgLy8gY2xvYmJlcmluZyB0aGUgd29y
bGQuCkBAIC0yMzY2LDI1ICsyMzY2LDMzIEBAIGJvb2wgQWJzdHJhY3RJbnRlcnByZXRlcjxBYnN0
cmFjdFN0YXRlVHkKICAgICAgICAgICAgIG1ha2VIZWFwVG9wRm9yTm9kZShub2RlKTsKICAgICAg
ICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIEFycmF5OjpJbnQzMjoKLSAgICAgICAgICAgIGlm
IChub2RlLT5hcnJheU1vZGUoKS5pc091dE9mQm91bmRzKCkpIHsKKyAgICAgICAgICAgIGlmIChu
b2RlLT5hcnJheU1vZGUoKS5pc0VmZmVjdGZ1bE91dE9mQm91bmRzKCkpIHsKICAgICAgICAgICAg
ICAgICBjbG9iYmVyV29ybGQoKTsKICAgICAgICAgICAgICAgICBtYWtlSGVhcFRvcEZvck5vZGUo
bm9kZSk7Ci0gICAgICAgICAgICB9IGVsc2UKKyAgICAgICAgICAgIH0gZWxzZSBpZiAobm9kZS0+
YXJyYXlNb2RlKCkuaXNPdXRPZkJvdW5kc1NhbmVDaGFpbigpKQorICAgICAgICAgICAgICAgIHNl
dE5vbkNlbGxUeXBlRm9yTm9kZShub2RlLCBTcGVjSW50MzJPbmx5IHwgU3BlY090aGVyKTsKKyAg
ICAgICAgICAgIGVsc2UKICAgICAgICAgICAgICAgICBzZXROb25DZWxsVHlwZUZvck5vZGUobm9k
ZSwgU3BlY0ludDMyT25seSk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBBcnJh
eTo6RG91YmxlOgotICAgICAgICAgICAgaWYgKG5vZGUtPmFycmF5TW9kZSgpLmlzT3V0T2ZCb3Vu
ZHMoKSkgeworICAgICAgICAgICAgaWYgKG5vZGUtPmFycmF5TW9kZSgpLmlzRWZmZWN0ZnVsT3V0
T2ZCb3VuZHMoKSkgewogICAgICAgICAgICAgICAgIGNsb2JiZXJXb3JsZCgpOwogICAgICAgICAg
ICAgICAgIG1ha2VIZWFwVG9wRm9yTm9kZShub2RlKTsKLSAgICAgICAgICAgIH0gZWxzZSBpZiAo
bm9kZS0+YXJyYXlNb2RlKCkuaXNTYW5lQ2hhaW4oKSkKKyAgICAgICAgICAgIH0gZWxzZSBpZiAo
bm9kZS0+YXJyYXlNb2RlKCkuaXNJbkJvdW5kc1NhbmVDaGFpbigpKQogICAgICAgICAgICAgICAg
IHNldE5vbkNlbGxUeXBlRm9yTm9kZShub2RlLCBTcGVjQnl0ZWNvZGVEb3VibGUpOworICAgICAg
ICAgICAgZWxzZSBpZiAobm9kZS0+YXJyYXlNb2RlKCkuaXNPdXRPZkJvdW5kc1NhbmVDaGFpbigp
KSB7CisgICAgICAgICAgICAgICAgaWYgKCEhKG5vZGUtPmZsYWdzKCkgJiBOb2RlQnl0ZWNvZGVV
c2VzQXNPdGhlcikpCisgICAgICAgICAgICAgICAgICAgIHNldE5vbkNlbGxUeXBlRm9yTm9kZShu
b2RlLCBTcGVjQnl0ZWNvZGVEb3VibGUgfCBTcGVjT3RoZXIpOworICAgICAgICAgICAgICAgIGVs
c2UKKyAgICAgICAgICAgICAgICAgICAgc2V0Tm9uQ2VsbFR5cGVGb3JOb2RlKG5vZGUsIFNwZWNC
eXRlY29kZURvdWJsZSk7CisgICAgICAgICAgICB9CiAgICAgICAgICAgICBlbHNlCiAgICAgICAg
ICAgICAgICAgc2V0Tm9uQ2VsbFR5cGVGb3JOb2RlKG5vZGUsIFNwZWNEb3VibGVSZWFsKTsKICAg
ICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIEFycmF5OjpDb250aWd1b3VzOgogICAgICAg
ICBjYXNlIEFycmF5OjpBcnJheVN0b3JhZ2U6CiAgICAgICAgIGNhc2UgQXJyYXk6OlNsb3dQdXRB
cnJheVN0b3JhZ2U6Ci0gICAgICAgICAgICBpZiAobm9kZS0+YXJyYXlNb2RlKCkuaXNPdXRPZkJv
dW5kcygpKQorICAgICAgICAgICAgaWYgKG5vZGUtPmFycmF5TW9kZSgpLmlzRWZmZWN0ZnVsT3V0
T2ZCb3VuZHMoKSkKICAgICAgICAgICAgICAgICBjbG9iYmVyV29ybGQoKTsKICAgICAgICAgICAg
IG1ha2VIZWFwVG9wRm9yTm9kZShub2RlKTsKICAgICAgICAgICAgIGJyZWFrOwpJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBcnJheU1vZGUuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQXJyYXlNb2RlLmNwcAkocmV2aXNpb24gMjY1NjM3
KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBcnJheU1vZGUuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0yNjAsNyArMjYwLDcgQEAgQXJyYXlNb2RlIEFycmF5TW9kZTo6cmVmaW5lKAog
ICAgICAgICAgICAgZ3JhcGgucmVnaXN0ZXJBbmRXYXRjaFN0cnVjdHVyZVRyYW5zaXRpb24oYXJy
YXlQcm90b3R5cGVTdHJ1Y3R1cmUpOwogICAgICAgICAgICAgZ3JhcGgucmVnaXN0ZXJBbmRXYXRj
aFN0cnVjdHVyZVRyYW5zaXRpb24ob2JqZWN0UHJvdG90eXBlU3RydWN0dXJlKTsKICAgICAgICAg
ICAgIGlmIChnbG9iYWxPYmplY3QtPmFycmF5UHJvdG90eXBlQ2hhaW5Jc1NhbmUoKSkKLSAgICAg
ICAgICAgICAgICByZXR1cm4gd2l0aFNwZWN1bGF0aW9uKEFycmF5OjpTYW5lQ2hhaW4pOworICAg
ICAgICAgICAgICAgIHJldHVybiB3aXRoU3BlY3VsYXRpb24oQXJyYXk6OkluQm91bmRzU2FuZUNo
YWluKTsKICAgICAgICAgfQogICAgICAgICByZXR1cm4gQXJyYXlNb2RlKEFycmF5OjpHZW5lcmlj
LCBhY3Rpb24oKSk7CiAgICAgfQpAQCAtNzEzLDE0ICs3MTMsMTYgQEAgY29uc3QgY2hhciogYXJy
YXlDbGFzc1RvU3RyaW5nKEFycmF5OjpDbAogY29uc3QgY2hhciogYXJyYXlTcGVjdWxhdGlvblRv
U3RyaW5nKEFycmF5OjpTcGVjdWxhdGlvbiBzcGVjdWxhdGlvbikKIHsKICAgICBzd2l0Y2ggKHNw
ZWN1bGF0aW9uKSB7Ci0gICAgY2FzZSBBcnJheTo6U2FuZUNoYWluOgotICAgICAgICByZXR1cm4g
IlNhbmVDaGFpbiI7CisgICAgY2FzZSBBcnJheTo6SW5Cb3VuZHNTYW5lQ2hhaW46CisgICAgICAg
IHJldHVybiAiSW5Cb3VuZHNTYW5lQ2hhaW4iOwogICAgIGNhc2UgQXJyYXk6OkluQm91bmRzOgog
ICAgICAgICByZXR1cm4gIkluQm91bmRzIjsKICAgICBjYXNlIEFycmF5OjpUb0hvbGU6CiAgICAg
ICAgIHJldHVybiAiVG9Ib2xlIjsKICAgICBjYXNlIEFycmF5OjpPdXRPZkJvdW5kczoKICAgICAg
ICAgcmV0dXJuICJPdXRPZkJvdW5kcyI7CisgICAgY2FzZSBBcnJheTo6T3V0T2ZCb3VuZHNTYW5l
Q2hhaW46CisgICAgICAgIHJldHVybiAiT3V0T2ZCb3VuZHNTYW5lQ2hhaW4iOwogICAgIGRlZmF1
bHQ6CiAgICAgICAgIHJldHVybiAiVW5rbm93biEiOwogICAgIH0KSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHQXJyYXlNb2RlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdBcnJheU1vZGUuaAkocmV2aXNpb24gMjY1NjM3KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBcnJheU1vZGUuaAkod29ya2luZyBjb3B5KQpAQCAtODks
MTAgKzg5LDExIEBAIGVudW0gQ2xhc3MgOiB1aW50OF90IHsKIH07CiAKIGVudW0gU3BlY3VsYXRp
b24gOiB1aW50OF90IHsKLSAgICBTYW5lQ2hhaW4sIC8vIEluIGJvdW5kcyBhbmQgdGhlIGFycmF5
IHByb3RvdHlwZSBjaGFpbiBpcyBzdGlsbCBpbnRhY3QsIGkuZS4gbG9hZGluZyBhIGhvbGUgZG9l
c24ndCByZXF1aXJlIHNwZWNpYWwgdHJlYXRtZW50LgorICAgIEluQm91bmRzU2FuZUNoYWluLCAv
LyBJbiBib3VuZHMgYW5kIHRoZSBhcnJheSBwcm90b3R5cGUgY2hhaW4gaXMgc3RpbGwgaW50YWN0
LCBpLmUuIGxvYWRpbmcgYSBob2xlIGRvZXNuJ3QgcmVxdWlyZSBzcGVjaWFsIHRyZWF0bWVudC4K
ICAgICAKICAgICBJbkJvdW5kcywgLy8gSW4gYm91bmRzIGFuZCBub3QgbG9hZGluZyBhIGhvbGUu
CiAgICAgVG9Ib2xlLCAvLyBQb3RlbnRpYWxseSBzdG9yaW5nIHRvIGEgaG9sZS4KKyAgICBPdXRP
ZkJvdW5kc1NhbmVDaGFpbiwgLy8gT3V0LW9mLWJvdW5kcyBhY2Nlc3MsIGJ1dCBzYW5lIGNoYWlu
LCBzbyB0aGVyZSBhcmUgbm8gYXJiaXRyYXJ5IGVmZmVjdHMuIEUuZywgbG9hZGluZyBvdXQgb2Yg
Ym91bmRzIGRvZXNuJ3QgcmVxdWlyZSB0cmF2ZXJzaW5nIHRoZSBwcm90b3R5cGUgY2hhaW4gaWYg
d2UncmUgYW4gb3JpZ2luYWwgYXJyYXkgc3RydWN0dXJlLgogICAgIE91dE9mQm91bmRzIC8vIE91
dC1vZi1ib3VuZHMgYWNjZXNzIGFuZCBhbnl0aGluZyBjYW4gaGFwcGVuLgogfTsKIGVudW0gQ29u
dmVyc2lvbiA6IHVpbnQ4X3QgewpAQCAtMjc2LDE1ICsyNzcsMzAgQEAgcHVibGljOgogICAgICAg
ICByZXR1cm4gYXJyYXlDbGFzcygpID09IEFycmF5OjpPcmlnaW5hbEFycmF5IHx8IGFycmF5Q2xh
c3MoKSA9PSBBcnJheTo6T3JpZ2luYWxDb3B5T25Xcml0ZUFycmF5OwogICAgIH0KICAgICAKLSAg
ICBib29sIGlzU2FuZUNoYWluKCkgY29uc3QKKyAgICBib29sIGlzSW5Cb3VuZHNTYW5lQ2hhaW4o
KSBjb25zdAogICAgIHsKLSAgICAgICAgcmV0dXJuIHNwZWN1bGF0aW9uKCkgPT0gQXJyYXk6OlNh
bmVDaGFpbjsKKyAgICAgICAgcmV0dXJuIHNwZWN1bGF0aW9uKCkgPT0gQXJyYXk6OkluQm91bmRz
U2FuZUNoYWluOworICAgIH0KKworICAgIGJvb2wgaXNPdXRPZkJvdW5kc1NhbmVDaGFpbigpIGNv
bnN0CisgICAgeworICAgICAgICByZXR1cm4gc3BlY3VsYXRpb24oKSA9PSBBcnJheTo6T3V0T2ZC
b3VuZHNTYW5lQ2hhaW47CisgICAgfQorICAgIAorICAgIGJvb2wgaXNPdXRPZkJvdW5kcygpIGNv
bnN0CisgICAgeworICAgICAgICByZXR1cm4gc3BlY3VsYXRpb24oKSA9PSBBcnJheTo6T3V0T2ZC
b3VuZHMgfHwgc3BlY3VsYXRpb24oKSA9PSBBcnJheTo6T3V0T2ZCb3VuZHNTYW5lQ2hhaW47Cisg
ICAgfQorCisgICAgYm9vbCBpc0VmZmVjdGZ1bE91dE9mQm91bmRzKCkgY29uc3QKKyAgICB7Cisg
ICAgICAgIHJldHVybiBzcGVjdWxhdGlvbigpID09IEFycmF5OjpPdXRPZkJvdW5kczsKICAgICB9
CiAgICAgCiAgICAgYm9vbCBpc0luQm91bmRzKCkgY29uc3QKICAgICB7CiAgICAgICAgIHN3aXRj
aCAoc3BlY3VsYXRpb24oKSkgewotICAgICAgICBjYXNlIEFycmF5OjpTYW5lQ2hhaW46CisgICAg
ICAgIGNhc2UgQXJyYXk6OkluQm91bmRzU2FuZUNoYWluOgogICAgICAgICBjYXNlIEFycmF5OjpJ
bkJvdW5kczoKICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICBkZWZhdWx0OgpAQCAt
Mjk3LDExICszMTMsNiBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiAhaXNJbkJvdW5kcygpOwog
ICAgIH0KICAgICAKLSAgICBib29sIGlzT3V0T2ZCb3VuZHMoKSBjb25zdAotICAgIHsKLSAgICAg
ICAgcmV0dXJuIHNwZWN1bGF0aW9uKCkgPT0gQXJyYXk6Ok91dE9mQm91bmRzOwotICAgIH0KLSAg
ICAKICAgICBib29sIGlzU2xvd1B1dCgpIGNvbnN0CiAgICAgewogICAgICAgICByZXR1cm4gdHlw
ZSgpID09IEFycmF5OjpTbG93UHV0QXJyYXlTdG9yYWdlOwpJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdDU0VQaGFzZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdDU0VQaGFzZS5jcHAJKHJldmlzaW9uIDI2NTYzNykKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHQ1NFUGhhc2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01NTAs
NyArNTUwLDcgQEAgcHJpdmF0ZToKICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgQXJyYXk6
OkRvdWJsZTogewogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghbW9kZS5pc0luQm91
bmRzKCkpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIExvY2F0aW9uS2luZCBraW5kID0gbW9kZS5pc1NhbmVDaGFpbigp
ID8gSW5kZXhlZFByb3BlcnR5RG91YmxlU2FuZUNoYWluTG9jIDogSW5kZXhlZFByb3BlcnR5RG91
YmxlTG9jOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIExvY2F0aW9uS2luZCBraW5kID0g
bW9kZS5pc0luQm91bmRzU2FuZUNoYWluKCkgPyBJbmRleGVkUHJvcGVydHlEb3VibGVTYW5lQ2hh
aW5Mb2MgOiBJbmRleGVkUHJvcGVydHlEb3VibGVMb2M7CiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgaGVhcCA9IEhlYXBMb2NhdGlvbihraW5kLCBJbmRleGVkRG91YmxlUHJvcGVydGllcywg
YmFzZSwgaW5kZXgpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAg
ICAgICAgICAgICAgICAgICAgfQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdD
bG9iYmVyaXplLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdD
bG9iYmVyaXplLmgJKHJldmlzaW9uIDI2NTYzNykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHQ2xvYmJlcml6ZS5oCSh3b3JraW5nIGNvcHkpCkBAIC05MjksNyArOTI5LDcgQEAgdm9p
ZCBjbG9iYmVyaXplKEdyYXBoJiBncmFwaCwgTm9kZSogbm9kZQogICAgICAgICAgICAgcmV0dXJu
OwogICAgICAgICAgICAgCiAgICAgICAgIGNhc2UgQXJyYXk6OkludDMyOgotICAgICAgICAgICAg
aWYgKG1vZGUuaXNJbkJvdW5kcygpKSB7CisgICAgICAgICAgICBpZiAobW9kZS5pc0luQm91bmRz
KCkgfHwgbW9kZS5pc091dE9mQm91bmRzU2FuZUNoYWluKCkpIHsKICAgICAgICAgICAgICAgICBy
ZWFkKEJ1dHRlcmZseV9wdWJsaWNMZW5ndGgpOwogICAgICAgICAgICAgICAgIHJlYWQoSW5kZXhl
ZEludDMyUHJvcGVydGllcyk7CiAgICAgICAgICAgICAgICAgZGVmKEhlYXBMb2NhdGlvbihpbmRl
eGVkUHJvcGVydHlMb2MsIEluZGV4ZWRJbnQzMlByb3BlcnRpZXMsIGdyYXBoLnZhckFyZ0NoaWxk
KG5vZGUsIDApLCBncmFwaC52YXJBcmdDaGlsZChub2RlLCAxKSksIExhenlOb2RlKG5vZGUpKTsK
QEAgLTkzOSwxMCArOTM5LDEwIEBAIHZvaWQgY2xvYmJlcml6ZShHcmFwaCYgZ3JhcGgsIE5vZGUq
IG5vZGUKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgIAogICAgICAgICBjYXNlIEFy
cmF5OjpEb3VibGU6Ci0gICAgICAgICAgICBpZiAobW9kZS5pc0luQm91bmRzKCkpIHsKKyAgICAg
ICAgICAgIGlmIChtb2RlLmlzSW5Cb3VuZHMoKSB8fCBtb2RlLmlzT3V0T2ZCb3VuZHNTYW5lQ2hh
aW4oKSkgewogICAgICAgICAgICAgICAgIHJlYWQoQnV0dGVyZmx5X3B1YmxpY0xlbmd0aCk7CiAg
ICAgICAgICAgICAgICAgcmVhZChJbmRleGVkRG91YmxlUHJvcGVydGllcyk7Ci0gICAgICAgICAg
ICAgICAgTG9jYXRpb25LaW5kIGtpbmQgPSBtb2RlLmlzU2FuZUNoYWluKCkgPyBJbmRleGVkUHJv
cGVydHlEb3VibGVTYW5lQ2hhaW5Mb2MgOiBJbmRleGVkUHJvcGVydHlEb3VibGVMb2M7CisgICAg
ICAgICAgICAgICAgTG9jYXRpb25LaW5kIGtpbmQgPSBtb2RlLmlzSW5Cb3VuZHNTYW5lQ2hhaW4o
KSA/IEluZGV4ZWRQcm9wZXJ0eURvdWJsZVNhbmVDaGFpbkxvYyA6IEluZGV4ZWRQcm9wZXJ0eURv
dWJsZUxvYzsKICAgICAgICAgICAgICAgICBkZWYoSGVhcExvY2F0aW9uKGtpbmQsIEluZGV4ZWRE
b3VibGVQcm9wZXJ0aWVzLCBncmFwaC52YXJBcmdDaGlsZChub2RlLCAwKSwgZ3JhcGgudmFyQXJn
Q2hpbGQobm9kZSwgMSkpLCBMYXp5Tm9kZShub2RlKSk7CiAgICAgICAgICAgICAgICAgcmV0dXJu
OwogICAgICAgICAgICAgfQpAQCAtOTUwLDcgKzk1MCw3IEBAIHZvaWQgY2xvYmJlcml6ZShHcmFw
aCYgZ3JhcGgsIE5vZGUqIG5vZGUKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgIAog
ICAgICAgICBjYXNlIEFycmF5OjpDb250aWd1b3VzOgotICAgICAgICAgICAgaWYgKG1vZGUuaXNJ
bkJvdW5kcygpKSB7CisgICAgICAgICAgICBpZiAobW9kZS5pc0luQm91bmRzKCkgfHwgbW9kZS5p
c091dE9mQm91bmRzU2FuZUNoYWluKCkpIHsKICAgICAgICAgICAgICAgICByZWFkKEJ1dHRlcmZs
eV9wdWJsaWNMZW5ndGgpOwogICAgICAgICAgICAgICAgIHJlYWQoSW5kZXhlZENvbnRpZ3VvdXNQ
cm9wZXJ0aWVzKTsKICAgICAgICAgICAgICAgICBkZWYoSGVhcExvY2F0aW9uKGluZGV4ZWRQcm9w
ZXJ0eUxvYywgSW5kZXhlZENvbnRpZ3VvdXNQcm9wZXJ0aWVzLCBncmFwaC52YXJBcmdDaGlsZChu
b2RlLCAwKSwgZ3JhcGgudmFyQXJnQ2hpbGQobm9kZSwgMSkpLCBMYXp5Tm9kZShub2RlKSk7Cklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0ZpeHVwUGhhc2UuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRml4dXBQaGFzZS5jcHAJKHJldmlz
aW9uIDI2NTYzNykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRml4dXBQaGFzZS5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTEwNTksMjAgKzEwNTksMjQgQEAgcHJpdmF0ZToKICAgICAg
ICAgICAgIHN3aXRjaCAoYXJyYXlNb2RlLnR5cGUoKSkgewogICAgICAgICAgICAgY2FzZSBBcnJh
eTo6Q29udGlndW91czoKICAgICAgICAgICAgIGNhc2UgQXJyYXk6OkRvdWJsZToKLSAgICAgICAg
ICAgICAgICBpZiAoYXJyYXlNb2RlLmlzSlNBcnJheVdpdGhPcmlnaW5hbFN0cnVjdHVyZSgpICYm
IGFycmF5TW9kZS5zcGVjdWxhdGlvbigpID09IEFycmF5OjpJbkJvdW5kcykgewotICAgICAgICAg
ICAgICAgICAgICAvLyBDaGVjayBpZiBTYW5lQ2hhaW4gd2lsbCB3b3JrIG9uIGEgcGVyLXR5cGUg
YmFzaXMuIE5vdGUgdGhhdDoKKyAgICAgICAgICAgIGNhc2UgQXJyYXk6OkludDMyOiB7CisgICAg
ICAgICAgICAgICAgT3B0aW9uYWw8QXJyYXk6OlNwZWN1bGF0aW9uPiBzYW5lQ2hhaW5TcGVjdWxh
dGlvbjsKKyAgICAgICAgICAgICAgICBpZiAoYXJyYXlNb2RlLmlzSlNBcnJheVdpdGhPcmlnaW5h
bFN0cnVjdHVyZSgpKSB7CisgICAgICAgICAgICAgICAgICAgIC8vIENoZWNrIGlmIEluQm91bmRz
U2FuZUNoYWluIHdpbGwgd29yayBvbiBhIHBlci10eXBlIGJhc2lzLiBOb3RlIHRoYXQ6CiAgICAg
ICAgICAgICAgICAgICAgIC8vCiAgICAgICAgICAgICAgICAgICAgIC8vIDEpIFdlIGRvbid0IHdh
bnQgZG91YmxlIGFycmF5cyB0byBzb21ldGltZXMgcmV0dXJuIHVuZGVmaW5lZCwgc2luY2UKICAg
ICAgICAgICAgICAgICAgICAgLy8gdGhhdCB3b3VsZCByZXF1aXJlIGEgY2hhbmdlIHRvIHRoZSBy
ZXR1cm4gdHlwZSBhbmQgaXQgd291bGQgcGVzc2ltaXNlCiAgICAgICAgICAgICAgICAgICAgIC8v
IHRoaW5ncyBhIGxvdC4gU28sIHdlJ2Qgb25seSB3YW50IHRvIGRvIHRoYXQgaWYgd2UgYWN0dWFs
bHkgaGFkCiAgICAgICAgICAgICAgICAgICAgIC8vIGV2aWRlbmNlIHRoYXQgd2UgY291bGQgcmVh
ZCBmcm9tIGEgaG9sZS4gVGhhdCdzIHByZXR0eSBhbm5veWluZy4KICAgICAgICAgICAgICAgICAg
ICAgLy8gTGlrZWx5IHRoZSBiZXN0IHdheSB0byBoYW5kbGUgdGhhdCBjYXNlIGlzIHdpdGggYW4g
ZXF1aXZhbGVudCBvZgotICAgICAgICAgICAgICAgICAgICAvLyBTYW5lQ2hhaW4gZm9yIE91dE9m
Qm91bmRzLiBGb3Igbm93IHdlIGp1c3QgZGV0ZWN0IHdoZW4gVW5kZWZpbmVkIGFuZAorICAgICAg
ICAgICAgICAgICAgICAvLyBJbkJvdW5kc1NhbmVDaGFpbiBmb3IgT3V0T2ZCb3VuZHMuIEZvciBu
b3cgd2UganVzdCBkZXRlY3Qgd2hlbiBVbmRlZmluZWQgYW5kCiAgICAgICAgICAgICAgICAgICAg
IC8vIE5hTiBhcmUgaW5kaXN0aW5ndWlzaGFibGUgYWNjb3JkaW5nIHRvIGJhY2t3YXJkcyBwcm9w
YWdhdGlvbiwgYW5kIGp1c3QKLSAgICAgICAgICAgICAgICAgICAgLy8gdXNlIFNhbmVDaGFpbiBp
biB0aGF0IGNhc2UuIFRoaXMgaGFwcGVucyB0byBjYXRjaCBhIGxvdCBvZiBjYXNlcy4KKyAgICAg
ICAgICAgICAgICAgICAgLy8gdXNlIEluQm91bmRzU2FuZUNoYWluIGluIHRoYXQgY2FzZS4gVGhp
cyBoYXBwZW5zIHRvIGNhdGNoIGEgbG90IG9mIGNhc2VzLgogICAgICAgICAgICAgICAgICAgICAv
LwogICAgICAgICAgICAgICAgICAgICAvLyAyKSBXZSBkb24ndCB3YW50IGludDMyIGFycmF5IGxv
YWRzIHRvIGhhdmUgdG8gZG8gYSBob2xlIGNoZWNrIGp1c3QgdG8KLSAgICAgICAgICAgICAgICAg
ICAgLy8gY29lcmNlIHRvIFVuZGVmaW5lZCwgc2luY2UgdGhhdCB3b3VsZCBtZWFuIHR3aWNlIHRo
ZSBjaGVja3MuCisgICAgICAgICAgICAgICAgICAgIC8vIGNvZXJjZSB0byBVbmRlZmluZWQsIHNp
bmNlIHRoYXQgd291bGQgbWVhbiB0d2ljZSB0aGUgY2hlY2tzLiBXZSB3YW50IHRvCisgICAgICAg
ICAgICAgICAgICAgIC8vIGJlIGFibGUgdG8gc2F5IHdlIGFsd2F5cyByZXR1cm4gSW50MzIuIEZJ
WE1FOiBNYXliZSB0aGlzIHNob3VsZCBiZSBwcm9maWxpbmcKKyAgICAgICAgICAgICAgICAgICAg
Ly8gYmFzZWQ/CiAgICAgICAgICAgICAgICAgICAgIC8vCiAgICAgICAgICAgICAgICAgICAgIC8v
IFRoaXMgaGFzIHR3byBpbXBsaWNhdGlvbnMuIEZpcnN0LCB3ZSBoYXZlIHRvIGRvIG1vcmUgY2hl
Y2tzIHRoYW4gd2UnZAogICAgICAgICAgICAgICAgICAgICAvLyBsaWtlLiBJdCdzIHVuZm9ydHVu
YXRlIHRoYXQgd2UgaGF2ZSB0byBkbyB0aGUgaG9sZSBjaGVjay4gU2Vjb25kLApAQCAtMTA4MCwz
MiArMTA4NCw0MSBAQCBwcml2YXRlOgogICAgICAgICAgICAgICAgICAgICAvLyBvdXQtb2YtYm91
bmRzIHNsb3cgcGF0aC4gV2UgY2FuIGZpeCB0aGF0IHdpdGg6CiAgICAgICAgICAgICAgICAgICAg
IC8vIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNDQ2NjgKICAgICAg
ICAgICAgICAgICAgICAgCi0gICAgICAgICAgICAgICAgICAgIGJvb2wgY2FuRG9TYW5lQ2hhaW4g
PSBmYWxzZTsKICAgICAgICAgICAgICAgICAgICAgc3dpdGNoIChhcnJheU1vZGUudHlwZSgpKSB7
CisgICAgICAgICAgICAgICAgICAgIGNhc2UgQXJyYXk6OkludDMyOgorICAgICAgICAgICAgICAg
ICAgICAgICAgaWYgKGFycmF5TW9kZS5zcGVjdWxhdGlvbigpID09IEFycmF5OjpPdXRPZkJvdW5k
cykKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBzYW5lQ2hhaW5TcGVjdWxhdGlvbiA9IEFy
cmF5OjpPdXRPZkJvdW5kc1NhbmVDaGFpbjsKKyAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFr
OwogICAgICAgICAgICAgICAgICAgICBjYXNlIEFycmF5OjpDb250aWd1b3VzOgogICAgICAgICAg
ICAgICAgICAgICAgICAgLy8gVGhpcyBpcyBoYXBwZW5zIHRvIGJlIGVudGlyZWx5IG5hdHVyYWwu
IFdlIGFscmVhZHkgd291bGQgaGF2ZQogICAgICAgICAgICAgICAgICAgICAgICAgLy8gcmV0dXJu
ZWQgYW55IEpTVmFsdWUsIGFuZCBub3cgd2UnbGwgcmV0dXJuIFVuZGVmaW5lZC4gV2Ugc3RpbGwg
ZG8KICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHRoZSBjaGVjayBidXQgaXQgZG9lc24ndCBy
ZXF1aXJlIHRha2luZyBhbnkga2luZCBvZiBzbG93IHBhdGguCi0gICAgICAgICAgICAgICAgICAg
ICAgICBjYW5Eb1NhbmVDaGFpbiA9IHRydWU7CisgICAgICAgICAgICAgICAgICAgICAgICBpZiAo
YXJyYXlNb2RlLnNwZWN1bGF0aW9uKCkgPT0gQXJyYXk6Ok91dE9mQm91bmRzKQorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHNhbmVDaGFpblNwZWN1bGF0aW9uID0gQXJyYXk6Ok91dE9mQm91
bmRzU2FuZUNoYWluOworICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSBpZiAoYXJyYXlNb2Rl
LnNwZWN1bGF0aW9uKCkgPT0gQXJyYXk6OkluQm91bmRzKQorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHNhbmVDaGFpblNwZWN1bGF0aW9uID0gQXJyYXk6OkluQm91bmRzU2FuZUNoYWluOwog
ICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgICAgICAK
ICAgICAgICAgICAgICAgICAgICAgY2FzZSBBcnJheTo6RG91YmxlOgotICAgICAgICAgICAgICAg
ICAgICAgICAgaWYgKCEobm9kZS0+ZmxhZ3MoKSAmIE5vZGVCeXRlY29kZVVzZXNBc090aGVyKSkg
eworICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCEobm9kZS0+ZmxhZ3MoKSAmIE5vZGVCeXRl
Y29kZVVzZXNBc090aGVyKSAmJiBhcnJheU1vZGUuc3BlY3VsYXRpb24oKSA9PSBBcnJheTo6SW5C
b3VuZHMpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBIb2xlcyBsb29rIGxpa2Ug
TmFOIGFscmVhZHksIHNvIGlmIHRoZSB1c2VyIGRvZXNuJ3QgY2FyZQogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIC8vIGFib3V0IHRoZSBkaWZmZXJlbmNlIGJldHdlZW4gVW5kZWZpbmVkIGFu
ZCBOYU4gdGhlbiB3ZSBjYW4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBkbyB0aGlz
LgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhbkRvU2FuZUNoYWluID0gdHJ1ZTsKLSAg
ICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBzYW5l
Q2hhaW5TcGVjdWxhdGlvbiA9IEFycmF5OjpJbkJvdW5kc1NhbmVDaGFpbjsKKyAgICAgICAgICAg
ICAgICAgICAgICAgIH0gZWxzZSBpZiAoYXJyYXlNb2RlLnNwZWN1bGF0aW9uKCkgPT0gQXJyYXk6
Ok91dE9mQm91bmRzKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNhbmVDaGFpblNwZWN1
bGF0aW9uID0gQXJyYXk6Ok91dE9mQm91bmRzU2FuZUNoYWluOwogICAgICAgICAgICAgICAgICAg
ICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAg
ICAgZGVmYXVsdDoKICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAg
ICAgICAgICB9Ci0gICAgICAgICAgICAgICAgICAgIAotICAgICAgICAgICAgICAgICAgICBpZiAo
Y2FuRG9TYW5lQ2hhaW4pCi0gICAgICAgICAgICAgICAgICAgICAgICBzZXRTYW5lQ2hhaW5JZlBv
c3NpYmxlKG5vZGUpOwogICAgICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgICAgIGlmIChz
YW5lQ2hhaW5TcGVjdWxhdGlvbikKKyAgICAgICAgICAgICAgICAgICAgc2V0U2FuZUNoYWluSWZQ
b3NzaWJsZShub2RlLCAqc2FuZUNoYWluU3BlY3VsYXRpb24pOworCiAgICAgICAgICAgICAgICAg
YnJlYWs7CisgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICBjYXNl
IEFycmF5OjpTdHJpbmc6CiAgICAgICAgICAgICAgICAgaWYgKChub2RlLT5wcmVkaWN0aW9uKCkg
JiB+U3BlY1N0cmluZykKQEAgLTIyMDIsNyArMjIxNSw3IEBAIHByaXZhdGU6CiAgICAgICAgICAg
ICAvLyBGSVhNRTogT3V0T2ZCb3VuZHMgc2hvdWxkbid0IHByZWNsdWRlIGdvaW5nIHNhbmUgY2hh
aW4gYmVjYXVzZSBPT0IgaXMganVzdCBmYWxzZSBhbmQgY2Fubm90IGhhdmUgZWZmZWN0cy4KICAg
ICAgICAgICAgIC8vIFNlZTogaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTIwOTQ1NgogICAgICAgICAgICAgaWYgKGFycmF5TW9kZS5pc0pTQXJyYXlXaXRoT3JpZ2luYWxT
dHJ1Y3R1cmUoKSAmJiBhcnJheU1vZGUuc3BlY3VsYXRpb24oKSA9PSBBcnJheTo6SW5Cb3VuZHMp
Ci0gICAgICAgICAgICAgICAgc2V0U2FuZUNoYWluSWZQb3NzaWJsZShub2RlKTsKKyAgICAgICAg
ICAgICAgICBzZXRTYW5lQ2hhaW5JZlBvc3NpYmxlKG5vZGUsIEFycmF5OjpJbkJvdW5kc1NhbmVD
aGFpbik7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogICAgICAgICBjYXNlIEdldERp
cmVjdFBuYW1lOiB7CkBAIC0zNTA5LDcgKzM1MjIsNyBAQCBwcml2YXRlOgogICAgICAgICAgICAg
bV9pbnNlcnRpb25TZXQuaW5zZXJ0Tm9kZSgKICAgICAgICAgICAgICAgICBtX2luZGV4SW5CbG9j
aywgU3BlY05vbmUsIENoZWNrLCBvcmlnaW4sIEVkZ2UoYXJyYXksIFN0cmluZ1VzZSkpOwogICAg
ICAgICB9IGVsc2UgewotICAgICAgICAgICAgLy8gTm90ZSB0aGF0IHdlIG9ubHkgbmVlZCB0byBi
ZSB1c2luZyBhIHN0cnVjdHVyZSBjaGVjayBpZiB3ZSBvcHQgZm9yIFNhbmVDaGFpbiwgc2luY2UK
KyAgICAgICAgICAgIC8vIE5vdGUgdGhhdCB3ZSBvbmx5IG5lZWQgdG8gYmUgdXNpbmcgYSBzdHJ1
Y3R1cmUgY2hlY2sgaWYgd2Ugb3B0IGZvciBJbkJvdW5kc1NhbmVDaGFpbiwgc2luY2UKICAgICAg
ICAgICAgIC8vIHRoYXQgbmVlZHMgdG8gcHJvdGVjdCBhZ2FpbnN0IEpTQXJyYXkncyBfX3Byb3Rv
X18gYmVpbmcgY2hhbmdlZC4KICAgICAgICAgICAgIFN0cnVjdHVyZSogc3RydWN0dXJlID0gYXJy
YXlNb2RlLm9yaWdpbmFsQXJyYXlTdHJ1Y3R1cmUobV9ncmFwaCwgb3JpZ2luLnNlbWFudGljKTsK
ICAgICAgICAgCkBAIC0zNTUxLDggKzM1NjQsMTEgQEAgcHJpdmF0ZToKICAgICAgICAgICAgIE9w
SW5mbyhhcnJheU1vZGUuYXNXb3JkKCkpLCBFZGdlKGFycmF5LCBLbm93bkNlbGxVc2UpKTsKICAg
ICB9CiAKLSAgICB2b2lkIHNldFNhbmVDaGFpbklmUG9zc2libGUoTm9kZSogbm9kZSkKKyAgICB2
b2lkIHNldFNhbmVDaGFpbklmUG9zc2libGUoTm9kZSogbm9kZSwgQXJyYXk6OlNwZWN1bGF0aW9u
IHNwZWN1bGF0aW9uKQogICAgIHsKKyAgICAgICAgaWYgKHNwZWN1bGF0aW9uID09IEFycmF5OjpP
dXRPZkJvdW5kc1NhbmVDaGFpbiAmJiBnZXRlbnYoIk9PQlNBTkUiKSAmJiAhYXRvaShnZXRlbnYo
Ik9PQlNBTkUiKSkpCisgICAgICAgICAgICByZXR1cm47CisKICAgICAgICAgSlNHbG9iYWxPYmpl
Y3QqIGdsb2JhbE9iamVjdCA9IG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5z
ZW1hbnRpYyk7CiAgICAgICAgIFN0cnVjdHVyZSogYXJyYXlQcm90b3R5cGVTdHJ1Y3R1cmUgPSBn
bG9iYWxPYmplY3QtPmFycmF5UHJvdG90eXBlKCktPnN0cnVjdHVyZSh2bSgpKTsKICAgICAgICAg
U3RydWN0dXJlKiBvYmplY3RQcm90b3R5cGVTdHJ1Y3R1cmUgPSBnbG9iYWxPYmplY3QtPm9iamVj
dFByb3RvdHlwZSgpLT5zdHJ1Y3R1cmUodm0oKSk7CkBAIC0zNTYxLDcgKzM1NzcsNyBAQCBwcml2
YXRlOgogICAgICAgICAgICAgJiYgZ2xvYmFsT2JqZWN0LT5hcnJheVByb3RvdHlwZUNoYWluSXNT
YW5lKCkpIHsKICAgICAgICAgICAgIG1fZ3JhcGgucmVnaXN0ZXJBbmRXYXRjaFN0cnVjdHVyZVRy
YW5zaXRpb24oYXJyYXlQcm90b3R5cGVTdHJ1Y3R1cmUpOwogICAgICAgICAgICAgbV9ncmFwaC5y
ZWdpc3RlckFuZFdhdGNoU3RydWN0dXJlVHJhbnNpdGlvbihvYmplY3RQcm90b3R5cGVTdHJ1Y3R1
cmUpOwotICAgICAgICAgICAgbm9kZS0+c2V0QXJyYXlNb2RlKG5vZGUtPmFycmF5TW9kZSgpLndp
dGhTcGVjdWxhdGlvbihBcnJheTo6U2FuZUNoYWluKSk7CisgICAgICAgICAgICBub2RlLT5zZXRB
cnJheU1vZGUobm9kZS0+YXJyYXlNb2RlKCkud2l0aFNwZWN1bGF0aW9uKHNwZWN1bGF0aW9uKSk7
CiAgICAgICAgICAgICBub2RlLT5jbGVhckZsYWdzKE5vZGVNdXN0R2VuZXJhdGUpOwogICAgICAg
ICB9CiAgICAgfQpAQCAtMzk0Myw3ICszOTU5LDcgQEAgcHJpdmF0ZToKICAgICAgICAgLy8gRklY
TUU6IE91dE9mQm91bmRzIHNob3VsZG4ndCBwcmVjbHVkZSBnb2luZyBzYW5lIGNoYWluIGJlY2F1
c2UgT09CIGlzIGp1c3QgZmFsc2UgYW5kIGNhbm5vdCBoYXZlIGVmZmVjdHMuCiAgICAgICAgIC8v
IFNlZTogaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwOTQ1NgogICAg
ICAgICBpZiAoYXJyYXlNb2RlLmlzSlNBcnJheVdpdGhPcmlnaW5hbFN0cnVjdHVyZSgpICYmIGFy
cmF5TW9kZS5zcGVjdWxhdGlvbigpID09IEFycmF5OjpJbkJvdW5kcykKLSAgICAgICAgICAgIHNl
dFNhbmVDaGFpbklmUG9zc2libGUobm9kZSk7CisgICAgICAgICAgICBzZXRTYW5lQ2hhaW5JZlBv
c3NpYmxlKG5vZGUsIEFycmF5OjpJbkJvdW5kc1NhbmVDaGFpbik7CiAKICAgICAgICAgZml4RWRn
ZTxDZWxsVXNlPihtX2dyYXBoLnZhckFyZ0NoaWxkKG5vZGUsIDApKTsKICAgICAgICAgZml4RWRn
ZTxJbnQzMlVzZT4obV9ncmFwaC52YXJBcmdDaGlsZChub2RlLCAxKSk7CkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUMzJfNjQuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQzMl82NC5jcHAJ
KHJldmlzaW9uIDI2NTYzNykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3Vs
YXRpdmVKSVQzMl82NC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTIzNjYsNyArMjM2Niw3IEBAIHZv
aWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSogbm9kZSkKICAgICAgICAgICAgIAogICAg
ICAgICAgICAgICAgIEdQUlRlbXBvcmFyeSByZXN1bHRQYXlsb2FkKHRoaXMpOwogICAgICAgICAg
ICAgICAgIGlmIChub2RlLT5hcnJheU1vZGUoKS50eXBlKCkgPT0gQXJyYXk6OkludDMyKSB7Ci0g
ICAgICAgICAgICAgICAgICAgIEFTU0VSVCghbm9kZS0+YXJyYXlNb2RlKCkuaXNTYW5lQ2hhaW4o
KSk7CisgICAgICAgICAgICAgICAgICAgIEFTU0VSVCghbm9kZS0+YXJyYXlNb2RlKCkuaXNJbkJv
dW5kc1NhbmVDaGFpbigpKTsKICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAg
ICAgIHNwZWN1bGF0aW9uQ2hlY2soCiAgICAgICAgICAgICAgICAgICAgICAgICBPdXRPZkJvdW5k
cywgSlNWYWx1ZVJlZ3MoKSwgMCwKQEAgLTIzOTIsNyArMjM5Miw3IEBAIHZvaWQgU3BlY3VsYXRp
dmVKSVQ6OmNvbXBpbGUoTm9kZSogbm9kZSkKICAgICAgICAgICAgICAgICAgICAgTWFjcm9Bc3Nl
bWJsZXI6OkJhc2VJbmRleCgKICAgICAgICAgICAgICAgICAgICAgICAgIHN0b3JhZ2VSZWcsIHBy
b3BlcnR5UmVnLCBNYWNyb0Fzc2VtYmxlcjo6VGltZXNFaWdodCwgUGF5bG9hZE9mZnNldCksCiAg
ICAgICAgICAgICAgICAgICAgIHJlc3VsdFBheWxvYWQuZ3ByKCkpOwotICAgICAgICAgICAgICAg
IGlmIChub2RlLT5hcnJheU1vZGUoKS5pc1NhbmVDaGFpbigpKSB7CisgICAgICAgICAgICAgICAg
aWYgKG5vZGUtPmFycmF5TW9kZSgpLmlzSW5Cb3VuZHNTYW5lQ2hhaW4oKSkgewogICAgICAgICAg
ICAgICAgICAgICBKSVRDb21waWxlcjo6SnVtcCBub3RIb2xlID0gbV9qaXQuYnJhbmNoSWZOb3RF
bXB0eShyZXN1bHRUYWcuZ3ByKCkpOwogICAgICAgICAgICAgICAgICAgICBtX2ppdC5tb3ZlKFRy
dXN0ZWRJbW0zMihKU1ZhbHVlOjpVbmRlZmluZWRUYWcpLCByZXN1bHRUYWcuZ3ByKCkpOwogICAg
ICAgICAgICAgICAgICAgICBtX2ppdC5tb3ZlKFRydXN0ZWRJbW0zMigwKSwgcmVzdWx0UGF5bG9h
ZC5ncHIoKSk7CkBAIC0yNDUzLDcgKzI0NTMsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21w
aWxlKE5vZGUqIG5vZGUpCiAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICBGUFJUZW1wb3Jh
cnkgcmVzdWx0KHRoaXMpOwogICAgICAgICAgICAgICAgIG1faml0LmxvYWREb3VibGUoTWFjcm9B
c3NlbWJsZXI6OkJhc2VJbmRleChzdG9yYWdlUmVnLCBwcm9wZXJ0eVJlZywgTWFjcm9Bc3NlbWJs
ZXI6OlRpbWVzRWlnaHQpLCByZXN1bHQuZnByKCkpOwotICAgICAgICAgICAgICAgIGlmICghbm9k
ZS0+YXJyYXlNb2RlKCkuaXNTYW5lQ2hhaW4oKSkKKyAgICAgICAgICAgICAgICBpZiAoIW5vZGUt
PmFycmF5TW9kZSgpLmlzSW5Cb3VuZHNTYW5lQ2hhaW4oKSkKICAgICAgICAgICAgICAgICAgICAg
c3BlY3VsYXRpb25DaGVjayhMb2FkRnJvbUhvbGUsIEpTVmFsdWVSZWdzKCksIDAsIG1faml0LmJy
YW5jaElmTmFOKHJlc3VsdC5mcHIoKSkpOwogICAgICAgICAgICAgICAgIGRvdWJsZVJlc3VsdChy
ZXN1bHQuZnByKCksIG5vZGUpOwogICAgICAgICAgICAgICAgIGJyZWFrOwpJbmRleDogU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDY0LmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQuY3BwCShyZXZp
c2lvbiAyNjU2MzcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZl
SklUNjQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNzM2LDcgKzI3MzYsNyBAQCB2b2lkIFNwZWN1
bGF0aXZlSklUOjpjb21waWxlKE5vZGUqIG5vZGUpCiAgICAgICAgICAgICAgICAgR1BSVGVtcG9y
YXJ5IHJlc3VsdCh0aGlzKTsKIAogICAgICAgICAgICAgICAgIG1faml0LmxvYWQ2NChNYWNyb0Fz
c2VtYmxlcjo6QmFzZUluZGV4KHN0b3JhZ2VSZWcsIHByb3BlcnR5UmVnLCBNYWNyb0Fzc2VtYmxl
cjo6VGltZXNFaWdodCksIHJlc3VsdC5ncHIoKSk7Ci0gICAgICAgICAgICAgICAgaWYgKG5vZGUt
PmFycmF5TW9kZSgpLmlzU2FuZUNoYWluKCkpIHsKKyAgICAgICAgICAgICAgICBpZiAobm9kZS0+
YXJyYXlNb2RlKCkuaXNJbkJvdW5kc1NhbmVDaGFpbigpKSB7CiAgICAgICAgICAgICAgICAgICAg
IEFTU0VSVChub2RlLT5hcnJheU1vZGUoKS50eXBlKCkgPT0gQXJyYXk6OkNvbnRpZ3VvdXMpOwog
ICAgICAgICAgICAgICAgICAgICBKSVRDb21waWxlcjo6SnVtcCBub3RIb2xlID0gbV9qaXQuYnJh
bmNoSWZOb3RFbXB0eShyZXN1bHQuZ3ByKCkpOwogICAgICAgICAgICAgICAgICAgICBtX2ppdC5t
b3ZlKFRydXN0ZWRJbW02NChKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSkpLCByZXN1bHQu
Z3ByKCkpOwpAQCAtMjc2OSwxMiArMjc2OSwyMCBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21w
aWxlKE5vZGUqIG5vZGUpCiAgICAgICAgICAgICBzbG93Q2FzZXMuYXBwZW5kKG1faml0LmJyYW5j
aDMyKE1hY3JvQXNzZW1ibGVyOjpBYm92ZU9yRXF1YWwsIHByb3BlcnR5UmVnLCBNYWNyb0Fzc2Vt
Ymxlcjo6QWRkcmVzcyhzdG9yYWdlUmVnLCBCdXR0ZXJmbHk6Om9mZnNldE9mUHVibGljTGVuZ3Ro
KCkpKSk7CiAKICAgICAgICAgICAgIG1faml0LmxvYWQ2NChNYWNyb0Fzc2VtYmxlcjo6QmFzZUlu
ZGV4KHN0b3JhZ2VSZWcsIHByb3BlcnR5UmVnLCBNYWNyb0Fzc2VtYmxlcjo6VGltZXNFaWdodCks
IHJlc3VsdFJlZyk7Ci0gICAgICAgICAgICBzbG93Q2FzZXMuYXBwZW5kKG1faml0LmJyYW5jaElm
RW1wdHkocmVzdWx0UmVnKSk7CisKKyAgICAgICAgICAgIGlmIChub2RlLT5hcnJheU1vZGUoKS5p
c091dE9mQm91bmRzU2FuZUNoYWluKCkpIHsKKyAgICAgICAgICAgICAgICBhdXRvIGRvbmUgPSBt
X2ppdC5icmFuY2hJZk5vdEVtcHR5KHJlc3VsdFJlZyk7CisgICAgICAgICAgICAgICAgc2xvd0Nh
c2VzLmxpbmsoJm1faml0KTsKKyAgICAgICAgICAgICAgICBtX2ppdC5tb3ZlKENDYWxsSGVscGVy
czo6VHJ1c3RlZEltbTY0KEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKSksIHJlc3VsdFJl
Zyk7CisgICAgICAgICAgICAgICAgZG9uZS5saW5rKCZtX2ppdCk7CisgICAgICAgICAgICB9IGVs
c2UgeworICAgICAgICAgICAgICAgIHNsb3dDYXNlcy5hcHBlbmQobV9qaXQuYnJhbmNoSWZFbXB0
eShyZXN1bHRSZWcpKTsKKyAgICAgICAgICAgICAgICBhZGRTbG93UGF0aEdlbmVyYXRvcigKKyAg
ICAgICAgICAgICAgICAgICAgc2xvd1BhdGhDYWxsKAorICAgICAgICAgICAgICAgICAgICAgICAg
c2xvd0Nhc2VzLCB0aGlzLCBvcGVyYXRpb25HZXRCeVZhbE9iamVjdEludCwKKyAgICAgICAgICAg
ICAgICAgICAgICAgIHJlc3VsdC5ncHIoKSwgVHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIobV9n
cmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSksIGJh
c2VSZWcsIHByb3BlcnR5UmVnKSk7CisgICAgICAgICAgICB9CiAgICAgICAgICAgICAKLSAgICAg
ICAgICAgIGFkZFNsb3dQYXRoR2VuZXJhdG9yKAotICAgICAgICAgICAgICAgIHNsb3dQYXRoQ2Fs
bCgKLSAgICAgICAgICAgICAgICAgICAgc2xvd0Nhc2VzLCB0aGlzLCBvcGVyYXRpb25HZXRCeVZh
bE9iamVjdEludCwKLSAgICAgICAgICAgICAgICAgICAgcmVzdWx0LmdwcigpLCBUcnVzdGVkSW1t
UHRyOjp3ZWFrUG9pbnRlcihtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5v
cmlnaW4uc2VtYW50aWMpKSwgYmFzZVJlZywgcHJvcGVydHlSZWcpKTsKICAgICAgICAgICAgIAog
ICAgICAgICAgICAganNWYWx1ZVJlc3VsdChyZXN1bHRSZWcsIG5vZGUpOwogICAgICAgICAgICAg
YnJlYWs7CkBAIC0yNzk3LDcgKzI4MDUsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxl
KE5vZGUqIG5vZGUpCiAgICAgICAgICAgICAgICAgc3BlY3VsYXRpb25DaGVjayhPdXRPZkJvdW5k
cywgSlNWYWx1ZVJlZ3MoKSwgbnVsbHB0ciwgbV9qaXQuYnJhbmNoMzIoTWFjcm9Bc3NlbWJsZXI6
OkFib3ZlT3JFcXVhbCwgcHJvcGVydHlSZWcsIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKHN0b3Jh
Z2VSZWcsIEJ1dHRlcmZseTo6b2Zmc2V0T2ZQdWJsaWNMZW5ndGgoKSkpKTsKIAogICAgICAgICAg
ICAgICAgIG1faml0LmxvYWREb3VibGUoTWFjcm9Bc3NlbWJsZXI6OkJhc2VJbmRleChzdG9yYWdl
UmVnLCBwcm9wZXJ0eVJlZywgTWFjcm9Bc3NlbWJsZXI6OlRpbWVzRWlnaHQpLCByZXN1bHRSZWcp
OwotICAgICAgICAgICAgICAgIGlmICghbm9kZS0+YXJyYXlNb2RlKCkuaXNTYW5lQ2hhaW4oKSkK
KyAgICAgICAgICAgICAgICBpZiAoIW5vZGUtPmFycmF5TW9kZSgpLmlzSW5Cb3VuZHNTYW5lQ2hh
aW4oKSkKICAgICAgICAgICAgICAgICAgICAgc3BlY3VsYXRpb25DaGVjayhMb2FkRnJvbUhvbGUs
IEpTVmFsdWVSZWdzKCksIG51bGxwdHIsIG1faml0LmJyYW5jaElmTmFOKHJlc3VsdFJlZykpOwog
ICAgICAgICAgICAgICAgIGRvdWJsZVJlc3VsdChyZXN1bHRSZWcsIG5vZGUpOwogICAgICAgICAg
ICAgICAgIGJyZWFrOwpAQCAtMjgyNCwxMyArMjgzMiwyNSBAQCB2b2lkIFNwZWN1bGF0aXZlSklU
Ojpjb21waWxlKE5vZGUqIG5vZGUpCiAgICAgICAgICAgICBzbG93Q2FzZXMuYXBwZW5kKG1faml0
LmJyYW5jaDMyKE1hY3JvQXNzZW1ibGVyOjpBYm92ZU9yRXF1YWwsIHByb3BlcnR5UmVnLCBNYWNy
b0Fzc2VtYmxlcjo6QWRkcmVzcyhzdG9yYWdlUmVnLCBCdXR0ZXJmbHk6Om9mZnNldE9mUHVibGlj
TGVuZ3RoKCkpKSk7CiAKICAgICAgICAgICAgIG1faml0LmxvYWREb3VibGUoTWFjcm9Bc3NlbWJs
ZXI6OkJhc2VJbmRleChzdG9yYWdlUmVnLCBwcm9wZXJ0eVJlZywgTWFjcm9Bc3NlbWJsZXI6OlRp
bWVzRWlnaHQpLCB0ZW1wUmVnKTsKLSAgICAgICAgICAgIHNsb3dDYXNlcy5hcHBlbmQobV9qaXQu
YnJhbmNoSWZOYU4odGVtcFJlZykpOwotICAgICAgICAgICAgYm94RG91YmxlKHRlbXBSZWcsIHJl
c3VsdFJlZyk7Ci0gICAgICAgICAgICAKLSAgICAgICAgICAgIGFkZFNsb3dQYXRoR2VuZXJhdG9y
KAotICAgICAgICAgICAgICAgIHNsb3dQYXRoQ2FsbCgKLSAgICAgICAgICAgICAgICAgICAgc2xv
d0Nhc2VzLCB0aGlzLCBvcGVyYXRpb25HZXRCeVZhbE9iamVjdEludCwKLSAgICAgICAgICAgICAg
ICAgICAgcmVzdWx0LmdwcigpLCBUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRlcihtX2dyYXBoLCBt
X2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpKSwgYmFzZVJlZywg
cHJvcGVydHlSZWcpKTsKKyAgICAgICAgICAgIGlmIChub2RlLT5hcnJheU1vZGUoKS5pc091dE9m
Qm91bmRzU2FuZUNoYWluKCkpIHsKKyAgICAgICAgICAgICAgICBpZiAoISEobm9kZS0+ZmxhZ3Mo
KSAmIE5vZGVCeXRlY29kZVVzZXNBc090aGVyKSkKKyAgICAgICAgICAgICAgICAgICAgc2xvd0Nh
c2VzLmFwcGVuZChtX2ppdC5icmFuY2hJZk5hTih0ZW1wUmVnKSk7CisgICAgICAgICAgICAgICAg
Ym94RG91YmxlKHRlbXBSZWcsIHJlc3VsdFJlZyk7CisgICAgICAgICAgICAgICAgYXV0byBkb25l
ID0gbV9qaXQuanVtcCgpOworICAgICAgICAgICAgICAgIHNsb3dDYXNlcy5saW5rKCZtX2ppdCk7
CisgICAgICAgICAgICAgICAgaWYgKCEhKG5vZGUtPmZsYWdzKCkgJiBOb2RlQnl0ZWNvZGVVc2Vz
QXNPdGhlcikpCisgICAgICAgICAgICAgICAgICAgIG1faml0Lm1vdmUoQ0NhbGxIZWxwZXJzOjpU
cnVzdGVkSW1tNjQoSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpKSwgcmVzdWx0UmVnKTsK
KyAgICAgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgICAgIG1faml0Lm1vdmUoQ0Nh
bGxIZWxwZXJzOjpUcnVzdGVkSW1tNjQoSlNWYWx1ZTo6ZW5jb2RlKGpzTnVtYmVyKFBOYU4pKSks
IHJlc3VsdFJlZyk7CisgICAgICAgICAgICAgICAgZG9uZS5saW5rKCZtX2ppdCk7CisgICAgICAg
ICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIHNsb3dDYXNlcy5hcHBlbmQobV9qaXQuYnJh
bmNoSWZOYU4odGVtcFJlZykpOworICAgICAgICAgICAgICAgIGJveERvdWJsZSh0ZW1wUmVnLCBy
ZXN1bHRSZWcpOworICAgICAgICAgICAgICAgIGFkZFNsb3dQYXRoR2VuZXJhdG9yKAorICAgICAg
ICAgICAgICAgICAgICBzbG93UGF0aENhbGwoCisgICAgICAgICAgICAgICAgICAgICAgICBzbG93
Q2FzZXMsIHRoaXMsIG9wZXJhdGlvbkdldEJ5VmFsT2JqZWN0SW50LAorICAgICAgICAgICAgICAg
ICAgICAgICAgcmVzdWx0LmdwcigpLCBUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRlcihtX2dyYXBo
LCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpKSwgYmFzZVJl
ZywgcHJvcGVydHlSZWcpKTsKKyAgICAgICAgICAgIH0KICAgICAgICAgICAgIAogICAgICAgICAg
ICAganNWYWx1ZVJlc3VsdChyZXN1bHRSZWcsIG5vZGUpOwogICAgICAgICAgICAgYnJlYWs7Cklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmNw
cAkocmV2aXNpb24gMjY1NjM3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVj
dWxhdGl2ZUpJVC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI0MDgsNyArMjQwOCw3IEBAIHZvaWQg
U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVHZXRCeVZhbE9uU3QKIAogICAgICAgICBpZiAoZ2xvYmFs
T2JqZWN0LT5zdHJpbmdQcm90b3R5cGVDaGFpbklzU2FuZSgpKSB7CiAgICAgICAgICAgICAvLyBG
SVhNRTogVGhpcyBjb3VsZCBiZSBjYXB0dXJlZCB1c2luZyBhIFNwZWN1bGF0aW9uIG1vZGUgdGhh
dCBtZWFucyAib3V0LW9mLWJvdW5kcwotICAgICAgICAgICAgLy8gbG9hZHMgcmV0dXJuIGEgdHJp
dmlhbCB2YWx1ZSIuIFNvbWV0aGluZyBsaWtlIFNhbmVDaGFpbk91dE9mQm91bmRzLiBUaGlzIHNo
b3VsZAorICAgICAgICAgICAgLy8gbG9hZHMgcmV0dXJuIGEgdHJpdmlhbCB2YWx1ZSIuIFNvbWV0
aGluZyBsaWtlIE91dE9mQm91bmRzU2FuZUNoYWluLiBUaGlzIHNob3VsZAogICAgICAgICAgICAg
Ly8gc3BlY3VsYXRlIHRoYXQgd2UgZG9uJ3QgdGFrZSBuZWdhdGl2ZSBvdXQtb2YtYm91bmRzLCBv
ciBiZXR0ZXIgeWV0LCBpdCBzaG91bGQgcmVseQogICAgICAgICAgICAgLy8gb24gYSBzdHJpbmdQ
cm90b3R5cGVDaGFpbklzU2FuZSgpIGd1YXJhbnRlZWluZyB0aGF0IHRoZSBwcm90b3R5cGVzIGhh
dmUgbm8gbmVnYXRpdmUKICAgICAgICAgICAgIC8vIGluZGV4ZWQgcHJvcGVydGllcyBlaXRoZXIu
CkBAIC0xNDE0OCw3ICsxNDE0OCw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVIYXNJ
bmRleGVkUHIKICAgICAgICAgbV9qaXQubG9hZDMyKE1hY3JvQXNzZW1ibGVyOjpCYXNlSW5kZXgo
c3RvcmFnZUdQUiwgaW5kZXhHUFIsIE1hY3JvQXNzZW1ibGVyOjpUaW1lc0VpZ2h0LCBPQkpFQ1Rf
T0ZGU0VUT0YoSlNWYWx1ZSwgdS5hc0JpdHMudGFnKSksIHNjcmF0Y2hHUFIpOwogI2VuZGlmCiAK
LSAgICAgICAgaWYgKG1vZGUuaXNTYW5lQ2hhaW4oKSkgeworICAgICAgICBpZiAobW9kZS5pc0lu
Qm91bmRzU2FuZUNoYWluKCkpIHsKICAgICAgICAgICAgIG1faml0LmlzTm90RW1wdHkoc2NyYXRj
aEdQUiwgcmVzdWx0R1BSKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CkBAIC0xNDE3
Nyw3ICsxNDE3Nyw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVIYXNJbmRleGVkUHIK
IAogICAgICAgICBtX2ppdC5sb2FkRG91YmxlKE1hY3JvQXNzZW1ibGVyOjpCYXNlSW5kZXgoc3Rv
cmFnZUdQUiwgaW5kZXhHUFIsIE1hY3JvQXNzZW1ibGVyOjpUaW1lc0VpZ2h0KSwgc2NyYXRjaEZQ
Uik7CiAKLSAgICAgICAgaWYgKG1vZGUuaXNTYW5lQ2hhaW4oKSkgeworICAgICAgICBpZiAobW9k
ZS5pc0luQm91bmRzU2FuZUNoYWluKCkpIHsKICAgICAgICAgICAgIG1faml0LmNvbXBhcmVEb3Vi
bGUoTWFjcm9Bc3NlbWJsZXI6OkRvdWJsZUVxdWFsQW5kT3JkZXJlZCwgc2NyYXRjaEZQUiwgc2Ny
YXRjaEZQUiwgcmVzdWx0R1BSKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CkBAIC0x
NDIxMCwxMyArMTQyMTAsMTMgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUhhc0luZGV4
ZWRQcgogICAgICAgICBtX2ppdC5sb2FkMzIoTWFjcm9Bc3NlbWJsZXI6OkJhc2VJbmRleChzdG9y
YWdlR1BSLCBpbmRleEdQUiwgTWFjcm9Bc3NlbWJsZXI6OlRpbWVzRWlnaHQsIEFycmF5U3RvcmFn
ZTo6dmVjdG9yT2Zmc2V0KCkgKyBPQkpFQ1RfT0ZGU0VUT0YoSlNWYWx1ZSwgdS5hc0JpdHMudGFn
KSksIHNjcmF0Y2hHUFIpOwogI2VuZGlmCiAKLSAgICAgICAgaWYgKG1vZGUuaXNTYW5lQ2hhaW4o
KSkgeworICAgICAgICBpZiAobW9kZS5pc0luQm91bmRzU2FuZUNoYWluKCkpIHsKICAgICAgICAg
ICAgIG1faml0LmlzTm90RW1wdHkoc2NyYXRjaEdQUiwgcmVzdWx0R1BSKTsKICAgICAgICAgICAg
IGJyZWFrOwogICAgICAgICB9CiAKICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6Okp1bXAgaXNIb2xl
ID0gbV9qaXQuYnJhbmNoSWZFbXB0eShzY3JhdGNoR1BSKTsKLSAgICAgICAgaWYgKCFtb2RlLmlz
SW5Cb3VuZHMoKSB8fCBtb2RlLmlzU2FuZUNoYWluKCkpCisgICAgICAgIGlmICghbW9kZS5pc0lu
Qm91bmRzKCkgfHwgbW9kZS5pc0luQm91bmRzU2FuZUNoYWluKCkpCiAgICAgICAgICAgICBzbG93
Q2FzZXMuYXBwZW5kKGlzSG9sZSk7CiAgICAgICAgIGVsc2UKICAgICAgICAgICAgIHNwZWN1bGF0
aW9uQ2hlY2soTG9hZEZyb21Ib2xlLCBKU1ZhbHVlUmVncygpLCBudWxscHRyLCBpc0hvbGUpOwpJ
bmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdWYWxpZGF0ZS5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdWYWxpZGF0ZS5jcHAJKHJldmlzaW9u
IDI2NTYzNykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHVmFsaWRhdGUuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC0zNzYsNiArMzc2LDIxIEBAIHB1YmxpYzoKICAgICAgICAgICAgICAg
ICBjYXNlIE5ld0FycmF5QnVmZmVyOgogICAgICAgICAgICAgICAgICAgICBWQUxJREFURSgobm9k
ZSksIG5vZGUtPnZlY3Rvckxlbmd0aEhpbnQoKSA+PSBub2RlLT5jYXN0T3BlcmFuZDxKU0ltbXV0
YWJsZUJ1dHRlcmZseSo+KCktPmxlbmd0aCgpKTsKICAgICAgICAgICAgICAgICAgICAgYnJlYWs7
CisgICAgICAgICAgICAgICAgY2FzZSBHZXRCeVZhbDoKKyAgICAgICAgICAgICAgICAgICAgc3dp
dGNoIChub2RlLT5hcnJheU1vZGUoKS50eXBlKCkpIHsKKyAgICAgICAgICAgICAgICAgICAgY2Fz
ZSBBcnJheTo6SW50MzI6CisgICAgICAgICAgICAgICAgICAgIGNhc2UgQXJyYXk6OkRvdWJsZToK
KyAgICAgICAgICAgICAgICAgICAgY2FzZSBBcnJheTo6Q29udGlndW91czoKKyAgICAgICAgICAg
ICAgICAgICAgICAgIC8vIFdlIHJlbHkgb24gYmVpbmcgYW4gb3JpZ2luYWwgYXJyYXkgc3RydWN0
dXJlIHNvIHdlIGNhbiByZXR1cm4gdW5kZWZpbmVkIGZvciBuZWdhdGl2ZSBpbmRpY2VzLgorICAg
ICAgICAgICAgICAgICAgICAgICAgLy8gV2UgY291bGQgZG8gYmV0dGVyIGluIHRoZSBmdXR1cmUs
IGFuZCBoYXZlIGFuZCBoYXZlIGFuIGZlZWRiYWNrIGJhc2VkIHByb2ZpbGluZyBtZWNoYW5pc20K
KyAgICAgICAgICAgICAgICAgICAgICAgIC8vIHdoZXJlIHdlIHNwZWN1bGF0ZSBhZ2FpbnN0IHRo
ZSBpbmRleCBiZWluZyA+PSAwLgorICAgICAgICAgICAgICAgICAgICAgICAgaWYgKG5vZGUtPmFy
cmF5TW9kZSgpLmlzT3V0T2ZCb3VuZHNTYW5lQ2hhaW4oKSkKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBWQUxJREFURSgobm9kZSksIG5vZGUtPmFycmF5TW9kZSgpLmlzSlNBcnJheVdpdGhP
cmlnaW5hbFN0cnVjdHVyZSgpKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAg
ICAgICAgICAgICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7
CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAg
ICAgICAgICAgICAgZGVmYXVsdDoKICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAg
ICAgICAgICAgfQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExMb3dlckRGR1Rv
QjMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTG93ZXJE
RkdUb0IzLmNwcAkocmV2aXNpb24gMjY1NjM3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0
bC9GVExMb3dlckRGR1RvQjMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00NjMyLDcgKzQ2MzIsNyBA
QCBwcml2YXRlOgogICAgICAgICAgICAgaWYgKG1fbm9kZS0+YXJyYXlNb2RlKCkuaXNJbkJvdW5k
cygpKSB7CiAgICAgICAgICAgICAgICAgTFZhbHVlIHJlc3VsdCA9IG1fb3V0LmxvYWQ2NChiYXNl
SW5kZXgoaGVhcCwgc3RvcmFnZSwgaW5kZXgsIG1fZ3JhcGgudmFyQXJnQ2hpbGQobV9ub2RlLCAx
KSkpOwogICAgICAgICAgICAgICAgIExWYWx1ZSBpc0hvbGUgPSBtX291dC5pc1plcm82NChyZXN1
bHQpOwotICAgICAgICAgICAgICAgIGlmIChtX25vZGUtPmFycmF5TW9kZSgpLmlzU2FuZUNoYWlu
KCkpIHsKKyAgICAgICAgICAgICAgICBpZiAobV9ub2RlLT5hcnJheU1vZGUoKS5pc0luQm91bmRz
U2FuZUNoYWluKCkpIHsKICAgICAgICAgICAgICAgICAgICAgREZHX0FTU0VSVCgKICAgICAgICAg
ICAgICAgICAgICAgICAgIG1fZ3JhcGgsIG1fbm9kZSwgbV9ub2RlLT5hcnJheU1vZGUoKS50eXBl
KCkgPT0gQXJyYXk6OkNvbnRpZ3VvdXMsIG1fbm9kZS0+YXJyYXlNb2RlKCkudHlwZSgpKTsKICAg
ICAgICAgICAgICAgICAgICAgcmVzdWx0ID0gbV9vdXQuc2VsZWN0KApAQCAtNDY0NSw3ICs0NjQ1
LDcgQEAgcHJpdmF0ZToKICAgICAgICAgICAgICAgICBzZXRKU1ZhbHVlKHJlc3VsdCk7CiAgICAg
ICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAgfQotICAgICAgICAgICAgCisKICAgICAg
ICAgICAgIExCYXNpY0Jsb2NrIGZhc3RDYXNlID0gbV9vdXQubmV3QmxvY2soKTsKICAgICAgICAg
ICAgIExCYXNpY0Jsb2NrIHNsb3dDYXNlID0gbV9vdXQubmV3QmxvY2soKTsKICAgICAgICAgICAg
IExCYXNpY0Jsb2NrIGNvbnRpbnVhdGlvbiA9IG1fb3V0Lm5ld0Jsb2NrKCk7CkBAIC00NjYzLDcg
KzQ2NjMsMTEgQEAgcHJpdmF0ZToKICAgICAgICAgICAgICAgICBtX291dC5pc1plcm82NChmYXN0
UmVzdWx0VmFsdWUpLCByYXJlbHkoc2xvd0Nhc2UpLCB1c3VhbGx5KGNvbnRpbnVhdGlvbikpOwog
ICAgICAgICAgICAgCiAgICAgICAgICAgICBtX291dC5hcHBlbmRUbyhzbG93Q2FzZSwgY29udGlu
dWF0aW9uKTsKLSAgICAgICAgICAgIFZhbHVlRnJvbUJsb2NrIHNsb3dSZXN1bHQgPSBtX291dC5h
bmNob3Iodm1DYWxsKEludDY0LCBvcGVyYXRpb25HZXRCeVZhbE9iamVjdEludCwgd2Vha1BvaW50
ZXIoZ2xvYmFsT2JqZWN0KSwgYmFzZSwgaW5kZXgpKTsKKyAgICAgICAgICAgIFZhbHVlRnJvbUJs
b2NrIHNsb3dSZXN1bHQ7CisgICAgICAgICAgICBpZiAobV9ub2RlLT5hcnJheU1vZGUoKS5pc091
dE9mQm91bmRzU2FuZUNoYWluKCkpCisgICAgICAgICAgICAgICAgc2xvd1Jlc3VsdCA9IG1fb3V0
LmFuY2hvcihtX291dC5jb25zdEludDY0KEpTVmFsdWU6OlZhbHVlVW5kZWZpbmVkKSk7CisgICAg
ICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgc2xvd1Jlc3VsdCA9IG1fb3V0LmFuY2hvcih2
bUNhbGwoSW50NjQsIG9wZXJhdGlvbkdldEJ5VmFsT2JqZWN0SW50LCB3ZWFrUG9pbnRlcihnbG9i
YWxPYmplY3QpLCBiYXNlLCBpbmRleCkpOwogICAgICAgICAgICAgbV9vdXQuanVtcChjb250aW51
YXRpb24pOwogICAgICAgICAgICAgCiAgICAgICAgICAgICBtX291dC5hcHBlbmRUbyhjb250aW51
YXRpb24sIGxhc3ROZXh0KTsKQEAgLTQ2ODUsNyArNDY4OSw3IEBAIHByaXZhdGU6CiAgICAgICAg
ICAgICAgICAgTFZhbHVlIHJlc3VsdCA9IG1fb3V0LmxvYWREb3VibGUoCiAgICAgICAgICAgICAg
ICAgICAgIGJhc2VJbmRleChoZWFwLCBzdG9yYWdlLCBpbmRleCwgbV9ncmFwaC52YXJBcmdDaGls
ZChtX25vZGUsIDEpKSk7CiAgICAgICAgICAgICAgICAgCi0gICAgICAgICAgICAgICAgaWYgKCFt
X25vZGUtPmFycmF5TW9kZSgpLmlzU2FuZUNoYWluKCkpIHsKKyAgICAgICAgICAgICAgICBpZiAo
IW1fbm9kZS0+YXJyYXlNb2RlKCkuaXNJbkJvdW5kc1NhbmVDaGFpbigpKSB7CiAgICAgICAgICAg
ICAgICAgICAgIHNwZWN1bGF0ZSgKICAgICAgICAgICAgICAgICAgICAgICAgIExvYWRGcm9tSG9s
ZSwgbm9WYWx1ZSgpLCBudWxscHRyLAogICAgICAgICAgICAgICAgICAgICAgICAgbV9vdXQuZG91
YmxlTm90RXF1YWxPclVub3JkZXJlZChyZXN1bHQsIHJlc3VsdCkpOwpAQCAtNDcxNiw3ICs0NzIw
LDE0IEBAIHByaXZhdGU6CiAgICAgICAgICAgICBtX291dC5qdW1wKGNvbnRpbnVhdGlvbik7CiAg
ICAgICAgICAgICAKICAgICAgICAgICAgIG1fb3V0LmFwcGVuZFRvKHNsb3dDYXNlLCBjb250aW51
YXRpb24pOwotICAgICAgICAgICAgVmFsdWVGcm9tQmxvY2sgc2xvd1Jlc3VsdCA9IG1fb3V0LmFu
Y2hvcih2bUNhbGwoSW50NjQsIG9wZXJhdGlvbkdldEJ5VmFsT2JqZWN0SW50LCB3ZWFrUG9pbnRl
cihnbG9iYWxPYmplY3QpLCBiYXNlLCBpbmRleCkpOworICAgICAgICAgICAgVmFsdWVGcm9tQmxv
Y2sgc2xvd1Jlc3VsdDsKKyAgICAgICAgICAgIGlmIChtX25vZGUtPmFycmF5TW9kZSgpLmlzT3V0
T2ZCb3VuZHNTYW5lQ2hhaW4oKSkgeworICAgICAgICAgICAgICAgIGlmICghIShtX25vZGUtPmZs
YWdzKCkgJiBOb2RlQnl0ZWNvZGVVc2VzQXNPdGhlcikpCisgICAgICAgICAgICAgICAgICAgIHNs
b3dSZXN1bHQgPSBtX291dC5hbmNob3IobV9vdXQuY29uc3RJbnQ2NChKU1ZhbHVlOjplbmNvZGUo
anNVbmRlZmluZWQoKSkpKTsKKyAgICAgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAg
ICAgIHNsb3dSZXN1bHQgPSBtX291dC5hbmNob3IobV9vdXQuY29uc3RJbnQ2NChKU1ZhbHVlOjpl
bmNvZGUoanNOdW1iZXIoUE5hTikpKSk7CisgICAgICAgICAgICB9IGVsc2UKKyAgICAgICAgICAg
ICAgICBzbG93UmVzdWx0ID0gbV9vdXQuYW5jaG9yKHZtQ2FsbChJbnQ2NCwgb3BlcmF0aW9uR2V0
QnlWYWxPYmplY3RJbnQsIHdlYWtQb2ludGVyKGdsb2JhbE9iamVjdCksIGJhc2UsIGluZGV4KSk7
CiAgICAgICAgICAgICBtX291dC5qdW1wKGNvbnRpbnVhdGlvbik7CiAgICAgICAgICAgICAKICAg
ICAgICAgICAgIG1fb3V0LmFwcGVuZFRvKGNvbnRpbnVhdGlvbiwgbGFzdE5leHQpOwpAQCAtODEz
NSw3ICs4MTQ2LDcgQEAgcHJpdmF0ZToKICAgICAgICAgICAgIGlmIChnbG9iYWxPYmplY3QtPnN0
cmluZ1Byb3RvdHlwZUNoYWluSXNTYW5lKCkpIHsKICAgICAgICAgICAgICAgICAvLyBGSVhNRTog
VGhpcyBjb3VsZCBiZSBjYXB0dXJlZCB1c2luZyBhIFNwZWN1bGF0aW9uIG1vZGUgdGhhdCBtZWFu
cwogICAgICAgICAgICAgICAgIC8vICJvdXQtb2YtYm91bmRzIGxvYWRzIHJldHVybiBhIHRyaXZp
YWwgdmFsdWUiLCBzb21ldGhpbmcgbGlrZQotICAgICAgICAgICAgICAgIC8vIFNhbmVDaGFpbk91
dE9mQm91bmRzLgorICAgICAgICAgICAgICAgIC8vIE91dE9mQm91bmRzU2FuZUNoYWluLgogICAg
ICAgICAgICAgICAgIC8vIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0x
NDQ2NjgKICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICBtX2dyYXBoLnJlZ2lzdGVy
QW5kV2F0Y2hTdHJ1Y3R1cmVUcmFuc2l0aW9uKHN0cmluZ1Byb3RvdHlwZVN0cnVjdHVyZSk7CkBA
IC0xMjIyMCw3ICsxMjIzMSw3IEBAIHByaXZhdGU6CiAgICAgICAgICAgICBMVmFsdWUgY2hlY2tI
b2xlUmVzdWx0VmFsdWUgPQogICAgICAgICAgICAgICAgIG1fb3V0Lm5vdFplcm82NChtX291dC5s
b2FkNjQoYmFzZUluZGV4KGhlYXAsIHN0b3JhZ2UsIGluZGV4LCBtX2dyYXBoLnZhckFyZ0NoaWxk
KG1fbm9kZSwgMSkpKSk7CiAgICAgICAgICAgICBWYWx1ZUZyb21CbG9jayBjaGVja0hvbGVSZXN1
bHQgPSBtX291dC5hbmNob3IoY2hlY2tIb2xlUmVzdWx0VmFsdWUpOwotICAgICAgICAgICAgaWYg
KG1vZGUuaXNTYW5lQ2hhaW4oKSkKKyAgICAgICAgICAgIGlmIChtb2RlLmlzSW5Cb3VuZHNTYW5l
Q2hhaW4oKSkKICAgICAgICAgICAgICAgICBtX291dC5qdW1wKGNvbnRpbnVhdGlvbik7CiAgICAg
ICAgICAgICBlbHNlIGlmICghbW9kZS5pc0luQm91bmRzKCkpCiAgICAgICAgICAgICAgICAgbV9v
dXQuYnJhbmNoKGNoZWNrSG9sZVJlc3VsdFZhbHVlLCB1c3VhbGx5KGNvbnRpbnVhdGlvbiksIHJh
cmVseShzbG93Q2FzZSkpOwpAQCAtMTIyNTksNyArMTIyNzAsNyBAQCBwcml2YXRlOgogICAgICAg
ICAgICAgTFZhbHVlIGRvdWJsZVZhbHVlID0gbV9vdXQubG9hZERvdWJsZShiYXNlSW5kZXgoaGVh
cCwgc3RvcmFnZSwgaW5kZXgsIG1fZ3JhcGgudmFyQXJnQ2hpbGQobV9ub2RlLCAxKSkpOwogICAg
ICAgICAgICAgTFZhbHVlIGNoZWNrSG9sZVJlc3VsdFZhbHVlID0gbV9vdXQuZG91YmxlRXF1YWwo
ZG91YmxlVmFsdWUsIGRvdWJsZVZhbHVlKTsKICAgICAgICAgICAgIFZhbHVlRnJvbUJsb2NrIGNo
ZWNrSG9sZVJlc3VsdCA9IG1fb3V0LmFuY2hvcihjaGVja0hvbGVSZXN1bHRWYWx1ZSk7Ci0gICAg
ICAgICAgICBpZiAobW9kZS5pc1NhbmVDaGFpbigpKQorICAgICAgICAgICAgaWYgKG1vZGUuaXNJ
bkJvdW5kc1NhbmVDaGFpbigpKQogICAgICAgICAgICAgICAgIG1fb3V0Lmp1bXAoY29udGludWF0
aW9uKTsKICAgICAgICAgICAgIGVsc2UgaWYgKCFtb2RlLmlzSW5Cb3VuZHMoKSkKICAgICAgICAg
ICAgICAgICBtX291dC5icmFuY2goY2hlY2tIb2xlUmVzdWx0VmFsdWUsIHVzdWFsbHkoY29udGlu
dWF0aW9uKSwgcmFyZWx5KHNsb3dDYXNlKSk7CkBAIC0xMjI5Nyw3ICsxMjMwOCw3IEBAIHByaXZh
dGU6CiAgICAgICAgICAgICBMVmFsdWUgY2hlY2tIb2xlUmVzdWx0VmFsdWUgPQogICAgICAgICAg
ICAgICAgIG1fb3V0Lm5vdFplcm82NChtX291dC5sb2FkNjQoYmFzZUluZGV4KG1faGVhcHMuQXJy
YXlTdG9yYWdlX3ZlY3Rvciwgc3RvcmFnZSwgaW5kZXgsIG1fZ3JhcGgudmFyQXJnQ2hpbGQobV9u
b2RlLCAxKSkpKTsKICAgICAgICAgICAgIFZhbHVlRnJvbUJsb2NrIGNoZWNrSG9sZVJlc3VsdCA9
IG1fb3V0LmFuY2hvcihjaGVja0hvbGVSZXN1bHRWYWx1ZSk7Ci0gICAgICAgICAgICBpZiAobW9k
ZS5pc1NhbmVDaGFpbigpKQorICAgICAgICAgICAgaWYgKG1vZGUuaXNJbkJvdW5kc1NhbmVDaGFp
bigpKQogICAgICAgICAgICAgICAgIG1fb3V0Lmp1bXAoY29udGludWF0aW9uKTsKICAgICAgICAg
ICAgIGVsc2UgaWYgKCFtb2RlLmlzSW5Cb3VuZHMoKSkKICAgICAgICAgICAgICAgICBtX291dC5i
cmFuY2goY2hlY2tIb2xlUmVzdWx0VmFsdWUsIHVzdWFsbHkoY29udGludWF0aW9uKSwgcmFyZWx5
KHNsb3dDYXNlKSk7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>406646</attachid>
            <date>2020-08-14 18:38:06 -0700</date>
            <delta_ts>2020-08-14 19:50:20 -0700</delta_ts>
            <desc>patch</desc>
            <filename>c-backup.diff</filename>
            <type>text/plain</type>
            <size>39344</size>
            <attacher name="Saam Barati">saam</attacher>
            
              <data encoding="base64">SW5kZXg6IEpTVGVzdHMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIEpTVGVzdHMvQ2hhbmdlTG9n
CShyZXZpc2lvbiAyNjU3MjMpCisrKyBKU1Rlc3RzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpA
QCAtMSwzICsxLDIzIEBACisyMDIwLTA4LTE0ICBTYWFtIEJhcmF0aSAgPHNiYXJhdGlAYXBwbGUu
Y29tPgorCisgICAgICAgIEhhdmUgYW4gT09CK1NhbmVDaGFpbiBBcnJheTo6U3BlY3VsYXRpb24K
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxNTQ4Nwor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogbWljcm9i
ZW5jaG1hcmtzL29vYi1zYW5lLWNoYWluLWNvbnRpZ3VvdXMuanM6IEFkZGVkLgorICAgICAgICAo
YXNzZXJ0KToKKyAgICAgICAgKGJhcik6CisgICAgICAgICogbWljcm9iZW5jaG1hcmtzL29vYi1z
YW5lLWNoYWluLWRvdWJsZS1yZWFkLXVuZGVmaW5lZC5qczogQWRkZWQuCisgICAgICAgIChhc3Nl
cnQpOgorICAgICAgICAoYmF6KToKKyAgICAgICAgKiBtaWNyb2JlbmNobWFya3Mvb29iLXNhbmUt
Y2hhaW4tZG91YmxlLmpzOiBBZGRlZC4KKyAgICAgICAgKGFzc2VydCk6CisgICAgICAgIChmb28p
OgorICAgICAgICAqIG1pY3JvYmVuY2htYXJrcy9vb2Itc2FuZS1jaGFpbi1pbnQzMi5qczogQWRk
ZWQuCisgICAgICAgIChhc3NlcnQpOgorICAgICAgICAoYmFyKToKKwogMjAyMC0wOC0xMiAgS2Vp
dGggTWlsbGVyICA8a2VpdGhfbWlsbGVyQGFwcGxlLmNvbT4KIAogICAgICAgICBPU1JBdmFpbGFi
aWxpdHlBbmFseXNpcyBzaG91bGRuJ3QgbWFyayBHZXRTdGFjayBub2RlcyBkaXJlY3RseSBhcyB2
YWxpZCBwbGFjZXMgZm9yIHJlY292ZXJ5CkluZGV4OiBKU1Rlc3RzL21pY3JvYmVuY2htYXJrcy9v
b2Itc2FuZS1jaGFpbi1jb250aWd1b3VzLmpzCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIEpTVGVzdHMvbWljcm9i
ZW5jaG1hcmtzL29vYi1zYW5lLWNoYWluLWNvbnRpZ3VvdXMuanMJKG5vbmV4aXN0ZW50KQorKysg
SlNUZXN0cy9taWNyb2JlbmNobWFya3Mvb29iLXNhbmUtY2hhaW4tY29udGlndW91cy5qcwkod29y
a2luZyBjb3B5KQpAQCAtMCwwICsxLDE5IEBACitmdW5jdGlvbiBhc3NlcnQoYikgeworICAgIGlm
ICghYikKKyAgICAgICAgdGhyb3cgbmV3IEVycm9yOworfQorCitmdW5jdGlvbiBiYXIoYSwgeCkg
eworICAgIHJldHVybiBhW3hdOworfQorbm9JbmxpbmUoYmFyKTsKKworbGV0IG8gPSB7fTsKK2xl
dCBiID0gW28sICIiLCAsIDI1XTsKKworZm9yIChsZXQgaSA9IDA7IGkgPCAxMDAwMDAwMDsgKytp
KSB7CisgICAgYXNzZXJ0KGJhcihiLCAwKSA9PT0gbyk7CisgICAgYXNzZXJ0KGJhcihiLCA1KSA9
PT0gdW5kZWZpbmVkKTsKKyAgICBhc3NlcnQoYmFyKGIsIDIpID09PSB1bmRlZmluZWQpOworICAg
IGFzc2VydChiYXIoYiwgLTEpID09PSB1bmRlZmluZWQpOworfQpJbmRleDogSlNUZXN0cy9taWNy
b2JlbmNobWFya3Mvb29iLXNhbmUtY2hhaW4tZG91YmxlLXJlYWQtdW5kZWZpbmVkLmpzCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIEpTVGVzdHMvbWljcm9iZW5jaG1hcmtzL29vYi1zYW5lLWNoYWluLWRvdWJsZS1y
ZWFkLXVuZGVmaW5lZC5qcwkobm9uZXhpc3RlbnQpCisrKyBKU1Rlc3RzL21pY3JvYmVuY2htYXJr
cy9vb2Itc2FuZS1jaGFpbi1kb3VibGUtcmVhZC11bmRlZmluZWQuanMJKHdvcmtpbmcgY29weSkK
QEAgLTAsMCArMSwxOSBAQAorZnVuY3Rpb24gYXNzZXJ0KGIpIHsKKyAgICBpZiAoIWIpCisgICAg
ICAgIHRocm93IG5ldyBFcnJvcjsKK30KKworZnVuY3Rpb24gYmF6KGEsIHgpIHsKKyAgICByZXR1
cm4gYVt4XTsKK30KK25vSW5saW5lKGJheik7CisKK2xldCBhID0gWzEuNSwgMi41LCAsIDMuNV07
CisKK2ZvciAobGV0IGkgPSAwOyBpIDwgMTAwMDAwMDA7ICsraSkgeworICAgIGFzc2VydChiYXoo
YSwgMCkgPT09IDEuNSk7CisgICAgYXNzZXJ0KGJheihhLCA1KSA9PT0gdW5kZWZpbmVkKTsKKyAg
ICBhc3NlcnQoYmF6KGEsIDIpID09PSB1bmRlZmluZWQpOworICAgIGFzc2VydChiYXooYSwgLTEp
ID09PSB1bmRlZmluZWQpOworfQorCkluZGV4OiBKU1Rlc3RzL21pY3JvYmVuY2htYXJrcy9vb2It
c2FuZS1jaGFpbi1kb3VibGUuanMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gSlNUZXN0cy9taWNyb2JlbmNobWFy
a3Mvb29iLXNhbmUtY2hhaW4tZG91YmxlLmpzCShub25leGlzdGVudCkKKysrIEpTVGVzdHMvbWlj
cm9iZW5jaG1hcmtzL29vYi1zYW5lLWNoYWluLWRvdWJsZS5qcwkod29ya2luZyBjb3B5KQpAQCAt
MCwwICsxLDE4IEBACitmdW5jdGlvbiBhc3NlcnQoYikgeworICAgIGlmICghYikKKyAgICAgICAg
dGhyb3cgbmV3IEVycm9yOworfQorCitmdW5jdGlvbiBmb28oYSwgeCkgeworICAgIHJldHVybiBh
W3hdICogMi41OworfQorbm9JbmxpbmUoZm9vKTsKKworbGV0IGEgPSBbMS41LCAyLjUsICwgMy41
XTsKKworZm9yIChsZXQgaSA9IDA7IGkgPCAxMDAwMDAwMDsgKytpKSB7CisgICAgYXNzZXJ0KGZv
byhhLCAwKSA9PT0gMi41ICogMS41KTsKKyAgICBhc3NlcnQoaXNOYU4oZm9vKGEsIDUpKSk7Cisg
ICAgYXNzZXJ0KGlzTmFOKGZvbyhhLCAyKSkpOworICAgIGFzc2VydChpc05hTihmb28oYSwgLTEp
KSk7Cit9CkluZGV4OiBKU1Rlc3RzL21pY3JvYmVuY2htYXJrcy9vb2Itc2FuZS1jaGFpbi1pbnQz
Mi5qcwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBKU1Rlc3RzL21pY3JvYmVuY2htYXJrcy9vb2Itc2FuZS1jaGFp
bi1pbnQzMi5qcwkobm9uZXhpc3RlbnQpCisrKyBKU1Rlc3RzL21pY3JvYmVuY2htYXJrcy9vb2It
c2FuZS1jaGFpbi1pbnQzMi5qcwkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDE4IEBACitmdW5j
dGlvbiBhc3NlcnQoYikgeworICAgIGlmICghYikKKyAgICAgICAgdGhyb3cgbmV3IEVycm9yOwor
fQorCitmdW5jdGlvbiBiYXIoYSwgeCkgeworICAgIHJldHVybiBhW3hdOworfQorbm9JbmxpbmUo
YmFyKTsKKworbGV0IGIgPSBbMCwgMSwgLCAgMl07CisKK2ZvciAobGV0IGkgPSAwOyBpIDwgMTAw
MDAwMDA7ICsraSkgeworICAgIGFzc2VydChiYXIoYiwgMCkgPT09IDApOworICAgIGFzc2VydChi
YXIoYiwgNSkgPT09IHVuZGVmaW5lZCk7CisgICAgYXNzZXJ0KGJhcihiLCAyKSA9PT0gdW5kZWZp
bmVkKTsKKyAgICBhc3NlcnQoYmFyKGIsIC0xKSA9PT0gdW5kZWZpbmVkKTsKK30KSW5kZXg6IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFT
Y3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMjY1NjM3KQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDU3IEBACisyMDIwLTA4
LTE0ICBTYWFtIEJhcmF0aSAgPHNiYXJhdGlAYXBwbGUuY29tPgorCisgICAgICAgIEhhdmUgYW4g
T09CK1NhbmVDaGFpbiBBcnJheTo6U3BlY3VsYXRpb24KKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxNTQ4NworCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoaXMgcGF0Y2ggYWRkcyBhIG5ldyBBcnJheU1vZGUg
c3BlY3VsYXRpb24gaW4gdGhlIERGRy9GVEwgY2FsbGVkIE91dE9mQm91bmRzU2FuZUNoYWluLgor
ICAgICAgICBJdCBhbGxvd3MgdXMgdG8gZG8gZmFzdCB0aGluZ3Mgd2hlbiB3ZSBnbyBPT0IsIGxp
a2Ugc2ltcGx5IHJldHVybiB1bmRlZmluZWQuCisgICAgICAgIFRoaXMgaXMgYmVjYXVzZSB3ZSBp
bnN0YWxsIHdhdGNocG9pbnRzIG9uIHRoZSBwcm90b3R5cGUgY2hhaW4gdG8gZW5zdXJlIHRoZXkK
KyAgICAgICAgaGF2ZSBubyBpbmRleGVkIHByb3BlcnRpZXMuIFRoaXMgcGF0Y2ggaW1wbGVtZW50
cyBPdXRPZkJvdW5kc1NhbmVDaGFpbiBvbgorICAgICAgICBHZXRCeVZhbCBvdmVyIEludDMyL0Rv
dWJsZS9Db250aWd1b3VzIG9yaWdpbmFsIEpTIGFycmF5cy4gV2UgY2FuIGV4dGVuZCBpdCBpbgor
ICAgICAgICB0aGUgZnV0dXJlIHRvIG5vbiBvcmlnaW5hbCBKUyBhcnJheXMuIFRoYXQgZXh0ZW5z
aW9uIHdvdWxkIHJlcXVpcmUgZXhpdGluZyBpZgorICAgICAgICB3ZSBzZWUgYSBuZWdhdGl2ZSBp
bmRleCAoYW5kIGNyZWF0aW5nIGEgZmVlZGJhY2sgbG9vcCBzbyB3ZSBkb24ndCBoYXZlIGFuIE9T
UgorICAgICAgICBleGl0IGxvb3AgZm9yIG5lZ2F0aXZlIGluZGljZXMpLiBUaGUgcmVhc29uIHRo
aXMgcGF0Y2ggb25seSBkb2VzIGl0IGZvcgorICAgICAgICBvcmlnaW5hbCBhcnJheXMgaXMgdGhh
dCBpZiB3ZSdyZSBhbiBvcmlnaW5hbCBKUyBhcnJheSwgYW5kIHNhbmUgY2hhaW4sIHdlIGhhdmUK
KyAgICAgICAgcHJvdmVuIHRoYXQgd2UgY2FuIHJldHVybiB1bmRlZmluZWQgZm9yIG5lZ2F0aXZl
IGluZGljZXMuCisgICAgICAgIAorICAgICAgICBUaGlzIGlzIGFib3V0IDIwJSBmYXN0ZXIgb24g
Y3J5cHRvLW1kNS1TUC4gQW5kIH4zLTR4IGZhc3RlciBvbiB0aGUKKyAgICAgICAgbWljcm9iZW5j
aG1hcmtzIEkgY3JlYXRlZC4KKworICAgICAgICAqIGRmZy9ERkdBYnN0cmFjdEludGVycHJldGVy
SW5saW5lcy5oOgorICAgICAgICAoSlNDOjpERkc6OkFic3RyYWN0SW50ZXJwcmV0ZXI8QWJzdHJh
Y3RTdGF0ZVR5cGU+OjpleGVjdXRlRWZmZWN0cyk6CisgICAgICAgICogZGZnL0RGR0FycmF5TW9k
ZS5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6QXJyYXlNb2RlOjpyZWZpbmUgY29uc3QpOgorICAg
ICAgICAoSlNDOjpERkc6OmFycmF5U3BlY3VsYXRpb25Ub1N0cmluZyk6CisgICAgICAgICogZGZn
L0RGR0FycmF5TW9kZS5oOgorICAgICAgICAoSlNDOjpERkc6OkFycmF5TW9kZTo6aXNJbkJvdW5k
c1NhbmVDaGFpbiBjb25zdCk6CisgICAgICAgIChKU0M6OkRGRzo6QXJyYXlNb2RlOjppc091dE9m
Qm91bmRzU2FuZUNoYWluIGNvbnN0KToKKyAgICAgICAgKEpTQzo6REZHOjpBcnJheU1vZGU6Omlz
T3V0T2ZCb3VuZHMgY29uc3QpOgorICAgICAgICAoSlNDOjpERkc6OkFycmF5TW9kZTo6aXNFZmZl
Y3RmdWxPdXRPZkJvdW5kcyBjb25zdCk6CisgICAgICAgIChKU0M6OkRGRzo6QXJyYXlNb2RlOjpp
c0luQm91bmRzIGNvbnN0KToKKyAgICAgICAgKEpTQzo6REZHOjpBcnJheU1vZGU6OmlzU2FuZUNo
YWluIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKiBkZmcvREZHQ1NFUGhhc2UuY3BwOgorICAg
ICAgICAqIGRmZy9ERkdDbG9iYmVyaXplLmg6CisgICAgICAgIChKU0M6OkRGRzo6Y2xvYmJlcml6
ZSk6CisgICAgICAgICogZGZnL0RGR0ZpeHVwUGhhc2UuY3BwOgorICAgICAgICAoSlNDOjpERkc6
OkZpeHVwUGhhc2U6OmZpeHVwTm9kZSk6CisgICAgICAgIChKU0M6OkRGRzo6Rml4dXBQaGFzZTo6
Y2hlY2tBcnJheSk6CisgICAgICAgIChKU0M6OkRGRzo6Rml4dXBQaGFzZTo6c2V0U2FuZUNoYWlu
SWZQb3NzaWJsZSk6CisgICAgICAgIChKU0M6OkRGRzo6Rml4dXBQaGFzZTo6Y29udmVydFRvSGFz
SW5kZXhlZFByb3BlcnR5KToKKyAgICAgICAgKiBkZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwOgor
ICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21waWxlR2V0QnlWYWxPblN0cmlu
Zyk6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVIYXNJbmRleGVk
UHJvcGVydHkpOgorICAgICAgICAqIGRmZy9ERkdTcGVjdWxhdGl2ZUpJVDMyXzY0LmNwcDoKKyAg
ICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZSk6CisgICAgICAgICogZGZn
L0RGR1NwZWN1bGF0aXZlSklUNjQuY3BwOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZl
SklUOjpjb21waWxlKToKKyAgICAgICAgKiBkZmcvREZHVmFsaWRhdGUuY3BwOgorICAgICAgICAq
IGZ0bC9GVExMb3dlckRGR1RvQjMuY3BwOgorICAgICAgICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJE
RkdUb0IzOjpjb21waWxlR2V0QnlWYWwpOgorICAgICAgICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJE
RkdUb0IzOjpjb21waWxlU3RyaW5nQ2hhckF0KToKKyAgICAgICAgKEpTQzo6RlRMOjpERkc6Okxv
d2VyREZHVG9CMzo6Y29tcGlsZUhhc0luZGV4ZWRQcm9wZXJ0eSk6CisKIDIwMjAtMDgtMTIgIEtl
aXRoIFJvbGxpbiAgPGtyb2xsaW5AYXBwbGUuY29tPgogCiAgICAgICAgIFJlbW92ZSB0aGUgbmVl
ZCBmb3IgZGVmaW5pbmcgVVNFX05FV19CVUlMRF9TWVNURU0KSW5kZXg6IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHQWJzdHJhY3RJbnRlcnByZXRlcklubGluZXMuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Fic3RyYWN0SW50ZXJwcmV0ZXJJbmxpbmVz
LmgJKHJldmlzaW9uIDI2NTYzNykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQWJz
dHJhY3RJbnRlcnByZXRlcklubGluZXMuaAkod29ya2luZyBjb3B5KQpAQCAtMjM1MCw3ICsyMzUw
LDcgQEAgYm9vbCBBYnN0cmFjdEludGVycHJldGVyPEFic3RyYWN0U3RhdGVUeQogICAgICAgICAg
ICAgICAgIC8vIHdlIGdvdCB0byB0aGUgYmFja2VuZC4gU28gdG8gZG8gdGhpcyByaWdodCwgd2Un
ZCBoYXZlIHRvIGdldCB0aGUKICAgICAgICAgICAgICAgICAvLyBmaXh1cCBwaGFzZSB0byBjaGVj
ayB0aGUgd2F0Y2hwb2ludCBzdGF0ZSBhbmQgdGhlbiBiYWtlIGludG8gdGhlCiAgICAgICAgICAg
ICAgICAgLy8gR2V0QnlWYWwgb3BlcmF0aW9uIHRoZSBmYWN0IHRoYXQgd2UncmUgdXNpbmcgYSB3
YXRjaHBvaW50LCB1c2luZwotICAgICAgICAgICAgICAgIC8vIHNvbWV0aGluZyBsaWtlIEFycmF5
OjpTYW5lQ2hhaW4gKGV4Y2VwdCBub3QgcXVpdGUsIGJlY2F1c2UgdGhhdAorICAgICAgICAgICAg
ICAgIC8vIHNvbWV0aGluZyBsaWtlIEFycmF5OjpJbkJvdW5kc1NhbmVDaGFpbiAoZXhjZXB0IG5v
dCBxdWl0ZSwgYmVjYXVzZSB0aGF0CiAgICAgICAgICAgICAgICAgLy8gaW1wbGllcyBhbiBpbi1i
b3VuZHMgYWNjZXNzKS4gTm9uZSBvZiB0aGlzIGZlZWxzIGxpa2UgaXQncyB3b3J0aCBpdCwKICAg
ICAgICAgICAgICAgICAvLyBzbyB3ZSdyZSBnb2luZyB3aXRoIFRPUCBmb3Igbm93LiBUaGUgc2Ft
ZSB0aGluZyBhcHBsaWVzIHRvCiAgICAgICAgICAgICAgICAgLy8gY2xvYmJlcmluZyB0aGUgd29y
bGQuCkBAIC0yMzY2LDI1ICsyMzY2LDMzIEBAIGJvb2wgQWJzdHJhY3RJbnRlcnByZXRlcjxBYnN0
cmFjdFN0YXRlVHkKICAgICAgICAgICAgIG1ha2VIZWFwVG9wRm9yTm9kZShub2RlKTsKICAgICAg
ICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIEFycmF5OjpJbnQzMjoKLSAgICAgICAgICAgIGlm
IChub2RlLT5hcnJheU1vZGUoKS5pc091dE9mQm91bmRzKCkpIHsKKyAgICAgICAgICAgIGlmIChu
b2RlLT5hcnJheU1vZGUoKS5pc0VmZmVjdGZ1bE91dE9mQm91bmRzKCkpIHsKICAgICAgICAgICAg
ICAgICBjbG9iYmVyV29ybGQoKTsKICAgICAgICAgICAgICAgICBtYWtlSGVhcFRvcEZvck5vZGUo
bm9kZSk7Ci0gICAgICAgICAgICB9IGVsc2UKKyAgICAgICAgICAgIH0gZWxzZSBpZiAobm9kZS0+
YXJyYXlNb2RlKCkuaXNPdXRPZkJvdW5kc1NhbmVDaGFpbigpKQorICAgICAgICAgICAgICAgIHNl
dE5vbkNlbGxUeXBlRm9yTm9kZShub2RlLCBTcGVjSW50MzJPbmx5IHwgU3BlY090aGVyKTsKKyAg
ICAgICAgICAgIGVsc2UKICAgICAgICAgICAgICAgICBzZXROb25DZWxsVHlwZUZvck5vZGUobm9k
ZSwgU3BlY0ludDMyT25seSk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBBcnJh
eTo6RG91YmxlOgotICAgICAgICAgICAgaWYgKG5vZGUtPmFycmF5TW9kZSgpLmlzT3V0T2ZCb3Vu
ZHMoKSkgeworICAgICAgICAgICAgaWYgKG5vZGUtPmFycmF5TW9kZSgpLmlzRWZmZWN0ZnVsT3V0
T2ZCb3VuZHMoKSkgewogICAgICAgICAgICAgICAgIGNsb2JiZXJXb3JsZCgpOwogICAgICAgICAg
ICAgICAgIG1ha2VIZWFwVG9wRm9yTm9kZShub2RlKTsKLSAgICAgICAgICAgIH0gZWxzZSBpZiAo
bm9kZS0+YXJyYXlNb2RlKCkuaXNTYW5lQ2hhaW4oKSkKKyAgICAgICAgICAgIH0gZWxzZSBpZiAo
bm9kZS0+YXJyYXlNb2RlKCkuaXNJbkJvdW5kc1NhbmVDaGFpbigpKQogICAgICAgICAgICAgICAg
IHNldE5vbkNlbGxUeXBlRm9yTm9kZShub2RlLCBTcGVjQnl0ZWNvZGVEb3VibGUpOworICAgICAg
ICAgICAgZWxzZSBpZiAobm9kZS0+YXJyYXlNb2RlKCkuaXNPdXRPZkJvdW5kc1NhbmVDaGFpbigp
KSB7CisgICAgICAgICAgICAgICAgaWYgKCEhKG5vZGUtPmZsYWdzKCkgJiBOb2RlQnl0ZWNvZGVV
c2VzQXNPdGhlcikpCisgICAgICAgICAgICAgICAgICAgIHNldE5vbkNlbGxUeXBlRm9yTm9kZShu
b2RlLCBTcGVjQnl0ZWNvZGVEb3VibGUgfCBTcGVjT3RoZXIpOworICAgICAgICAgICAgICAgIGVs
c2UKKyAgICAgICAgICAgICAgICAgICAgc2V0Tm9uQ2VsbFR5cGVGb3JOb2RlKG5vZGUsIFNwZWNC
eXRlY29kZURvdWJsZSk7CisgICAgICAgICAgICB9CiAgICAgICAgICAgICBlbHNlCiAgICAgICAg
ICAgICAgICAgc2V0Tm9uQ2VsbFR5cGVGb3JOb2RlKG5vZGUsIFNwZWNEb3VibGVSZWFsKTsKICAg
ICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIEFycmF5OjpDb250aWd1b3VzOgogICAgICAg
ICBjYXNlIEFycmF5OjpBcnJheVN0b3JhZ2U6CiAgICAgICAgIGNhc2UgQXJyYXk6OlNsb3dQdXRB
cnJheVN0b3JhZ2U6Ci0gICAgICAgICAgICBpZiAobm9kZS0+YXJyYXlNb2RlKCkuaXNPdXRPZkJv
dW5kcygpKQorICAgICAgICAgICAgaWYgKG5vZGUtPmFycmF5TW9kZSgpLmlzRWZmZWN0ZnVsT3V0
T2ZCb3VuZHMoKSkKICAgICAgICAgICAgICAgICBjbG9iYmVyV29ybGQoKTsKICAgICAgICAgICAg
IG1ha2VIZWFwVG9wRm9yTm9kZShub2RlKTsKICAgICAgICAgICAgIGJyZWFrOwpJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBcnJheU1vZGUuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQXJyYXlNb2RlLmNwcAkocmV2aXNpb24gMjY1NjM3
KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBcnJheU1vZGUuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0yNjAsNyArMjYwLDcgQEAgQXJyYXlNb2RlIEFycmF5TW9kZTo6cmVmaW5lKAog
ICAgICAgICAgICAgZ3JhcGgucmVnaXN0ZXJBbmRXYXRjaFN0cnVjdHVyZVRyYW5zaXRpb24oYXJy
YXlQcm90b3R5cGVTdHJ1Y3R1cmUpOwogICAgICAgICAgICAgZ3JhcGgucmVnaXN0ZXJBbmRXYXRj
aFN0cnVjdHVyZVRyYW5zaXRpb24ob2JqZWN0UHJvdG90eXBlU3RydWN0dXJlKTsKICAgICAgICAg
ICAgIGlmIChnbG9iYWxPYmplY3QtPmFycmF5UHJvdG90eXBlQ2hhaW5Jc1NhbmUoKSkKLSAgICAg
ICAgICAgICAgICByZXR1cm4gd2l0aFNwZWN1bGF0aW9uKEFycmF5OjpTYW5lQ2hhaW4pOworICAg
ICAgICAgICAgICAgIHJldHVybiB3aXRoU3BlY3VsYXRpb24oQXJyYXk6OkluQm91bmRzU2FuZUNo
YWluKTsKICAgICAgICAgfQogICAgICAgICByZXR1cm4gQXJyYXlNb2RlKEFycmF5OjpHZW5lcmlj
LCBhY3Rpb24oKSk7CiAgICAgfQpAQCAtNzEzLDE0ICs3MTMsMTYgQEAgY29uc3QgY2hhciogYXJy
YXlDbGFzc1RvU3RyaW5nKEFycmF5OjpDbAogY29uc3QgY2hhciogYXJyYXlTcGVjdWxhdGlvblRv
U3RyaW5nKEFycmF5OjpTcGVjdWxhdGlvbiBzcGVjdWxhdGlvbikKIHsKICAgICBzd2l0Y2ggKHNw
ZWN1bGF0aW9uKSB7Ci0gICAgY2FzZSBBcnJheTo6U2FuZUNoYWluOgotICAgICAgICByZXR1cm4g
IlNhbmVDaGFpbiI7CisgICAgY2FzZSBBcnJheTo6SW5Cb3VuZHNTYW5lQ2hhaW46CisgICAgICAg
IHJldHVybiAiSW5Cb3VuZHNTYW5lQ2hhaW4iOwogICAgIGNhc2UgQXJyYXk6OkluQm91bmRzOgog
ICAgICAgICByZXR1cm4gIkluQm91bmRzIjsKICAgICBjYXNlIEFycmF5OjpUb0hvbGU6CiAgICAg
ICAgIHJldHVybiAiVG9Ib2xlIjsKICAgICBjYXNlIEFycmF5OjpPdXRPZkJvdW5kczoKICAgICAg
ICAgcmV0dXJuICJPdXRPZkJvdW5kcyI7CisgICAgY2FzZSBBcnJheTo6T3V0T2ZCb3VuZHNTYW5l
Q2hhaW46CisgICAgICAgIHJldHVybiAiT3V0T2ZCb3VuZHNTYW5lQ2hhaW4iOwogICAgIGRlZmF1
bHQ6CiAgICAgICAgIHJldHVybiAiVW5rbm93biEiOwogICAgIH0KSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHQXJyYXlNb2RlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdBcnJheU1vZGUuaAkocmV2aXNpb24gMjY1NjM3KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBcnJheU1vZGUuaAkod29ya2luZyBjb3B5KQpAQCAtODks
MTAgKzg5LDExIEBAIGVudW0gQ2xhc3MgOiB1aW50OF90IHsKIH07CiAKIGVudW0gU3BlY3VsYXRp
b24gOiB1aW50OF90IHsKLSAgICBTYW5lQ2hhaW4sIC8vIEluIGJvdW5kcyBhbmQgdGhlIGFycmF5
IHByb3RvdHlwZSBjaGFpbiBpcyBzdGlsbCBpbnRhY3QsIGkuZS4gbG9hZGluZyBhIGhvbGUgZG9l
c24ndCByZXF1aXJlIHNwZWNpYWwgdHJlYXRtZW50LgorICAgIEluQm91bmRzU2FuZUNoYWluLCAv
LyBJbiBib3VuZHMgYW5kIHRoZSBhcnJheSBwcm90b3R5cGUgY2hhaW4gaXMgc3RpbGwgaW50YWN0
LCBpLmUuIGxvYWRpbmcgYSBob2xlIGRvZXNuJ3QgcmVxdWlyZSBzcGVjaWFsIHRyZWF0bWVudC4K
ICAgICAKICAgICBJbkJvdW5kcywgLy8gSW4gYm91bmRzIGFuZCBub3QgbG9hZGluZyBhIGhvbGUu
CiAgICAgVG9Ib2xlLCAvLyBQb3RlbnRpYWxseSBzdG9yaW5nIHRvIGEgaG9sZS4KKyAgICBPdXRP
ZkJvdW5kc1NhbmVDaGFpbiwgLy8gT3V0LW9mLWJvdW5kcyBhY2Nlc3MsIGJ1dCBzYW5lIGNoYWlu
LCBzbyB0aGVyZSBhcmUgbm8gYXJiaXRyYXJ5IGVmZmVjdHMuIEUuZywgbG9hZGluZyBvdXQgb2Yg
Ym91bmRzIGRvZXNuJ3QgcmVxdWlyZSB0cmF2ZXJzaW5nIHRoZSBwcm90b3R5cGUgY2hhaW4gaWYg
d2UncmUgYW4gb3JpZ2luYWwgYXJyYXkgc3RydWN0dXJlLgogICAgIE91dE9mQm91bmRzIC8vIE91
dC1vZi1ib3VuZHMgYWNjZXNzIGFuZCBhbnl0aGluZyBjYW4gaGFwcGVuLgogfTsKIGVudW0gQ29u
dmVyc2lvbiA6IHVpbnQ4X3QgewpAQCAtMjc2LDE1ICsyNzcsMzAgQEAgcHVibGljOgogICAgICAg
ICByZXR1cm4gYXJyYXlDbGFzcygpID09IEFycmF5OjpPcmlnaW5hbEFycmF5IHx8IGFycmF5Q2xh
c3MoKSA9PSBBcnJheTo6T3JpZ2luYWxDb3B5T25Xcml0ZUFycmF5OwogICAgIH0KICAgICAKLSAg
ICBib29sIGlzU2FuZUNoYWluKCkgY29uc3QKKyAgICBib29sIGlzSW5Cb3VuZHNTYW5lQ2hhaW4o
KSBjb25zdAogICAgIHsKLSAgICAgICAgcmV0dXJuIHNwZWN1bGF0aW9uKCkgPT0gQXJyYXk6OlNh
bmVDaGFpbjsKKyAgICAgICAgcmV0dXJuIHNwZWN1bGF0aW9uKCkgPT0gQXJyYXk6OkluQm91bmRz
U2FuZUNoYWluOworICAgIH0KKworICAgIGJvb2wgaXNPdXRPZkJvdW5kc1NhbmVDaGFpbigpIGNv
bnN0CisgICAgeworICAgICAgICByZXR1cm4gc3BlY3VsYXRpb24oKSA9PSBBcnJheTo6T3V0T2ZC
b3VuZHNTYW5lQ2hhaW47CisgICAgfQorICAgIAorICAgIGJvb2wgaXNPdXRPZkJvdW5kcygpIGNv
bnN0CisgICAgeworICAgICAgICByZXR1cm4gc3BlY3VsYXRpb24oKSA9PSBBcnJheTo6T3V0T2ZC
b3VuZHMgfHwgc3BlY3VsYXRpb24oKSA9PSBBcnJheTo6T3V0T2ZCb3VuZHNTYW5lQ2hhaW47Cisg
ICAgfQorCisgICAgYm9vbCBpc0VmZmVjdGZ1bE91dE9mQm91bmRzKCkgY29uc3QKKyAgICB7Cisg
ICAgICAgIHJldHVybiBzcGVjdWxhdGlvbigpID09IEFycmF5OjpPdXRPZkJvdW5kczsKICAgICB9
CiAgICAgCiAgICAgYm9vbCBpc0luQm91bmRzKCkgY29uc3QKICAgICB7CiAgICAgICAgIHN3aXRj
aCAoc3BlY3VsYXRpb24oKSkgewotICAgICAgICBjYXNlIEFycmF5OjpTYW5lQ2hhaW46CisgICAg
ICAgIGNhc2UgQXJyYXk6OkluQm91bmRzU2FuZUNoYWluOgogICAgICAgICBjYXNlIEFycmF5OjpJ
bkJvdW5kczoKICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICBkZWZhdWx0OgpAQCAt
Mjk3LDExICszMTMsNiBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiAhaXNJbkJvdW5kcygpOwog
ICAgIH0KICAgICAKLSAgICBib29sIGlzT3V0T2ZCb3VuZHMoKSBjb25zdAotICAgIHsKLSAgICAg
ICAgcmV0dXJuIHNwZWN1bGF0aW9uKCkgPT0gQXJyYXk6Ok91dE9mQm91bmRzOwotICAgIH0KLSAg
ICAKICAgICBib29sIGlzU2xvd1B1dCgpIGNvbnN0CiAgICAgewogICAgICAgICByZXR1cm4gdHlw
ZSgpID09IEFycmF5OjpTbG93UHV0QXJyYXlTdG9yYWdlOwpJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdDU0VQaGFzZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdDU0VQaGFzZS5jcHAJKHJldmlzaW9uIDI2NTYzNykKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHQ1NFUGhhc2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01NTAs
NyArNTUwLDcgQEAgcHJpdmF0ZToKICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgQXJyYXk6
OkRvdWJsZTogewogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghbW9kZS5pc0luQm91
bmRzKCkpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIExvY2F0aW9uS2luZCBraW5kID0gbW9kZS5pc1NhbmVDaGFpbigp
ID8gSW5kZXhlZFByb3BlcnR5RG91YmxlU2FuZUNoYWluTG9jIDogSW5kZXhlZFByb3BlcnR5RG91
YmxlTG9jOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIExvY2F0aW9uS2luZCBraW5kID0g
bW9kZS5pc0luQm91bmRzU2FuZUNoYWluKCkgPyBJbmRleGVkUHJvcGVydHlEb3VibGVTYW5lQ2hh
aW5Mb2MgOiBJbmRleGVkUHJvcGVydHlEb3VibGVMb2M7CiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgaGVhcCA9IEhlYXBMb2NhdGlvbihraW5kLCBJbmRleGVkRG91YmxlUHJvcGVydGllcywg
YmFzZSwgaW5kZXgpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAg
ICAgICAgICAgICAgICAgICAgfQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdD
bG9iYmVyaXplLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdD
bG9iYmVyaXplLmgJKHJldmlzaW9uIDI2NTYzNykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHQ2xvYmJlcml6ZS5oCSh3b3JraW5nIGNvcHkpCkBAIC05MjksNyArOTI5LDcgQEAgdm9p
ZCBjbG9iYmVyaXplKEdyYXBoJiBncmFwaCwgTm9kZSogbm9kZQogICAgICAgICAgICAgcmV0dXJu
OwogICAgICAgICAgICAgCiAgICAgICAgIGNhc2UgQXJyYXk6OkludDMyOgotICAgICAgICAgICAg
aWYgKG1vZGUuaXNJbkJvdW5kcygpKSB7CisgICAgICAgICAgICBpZiAobW9kZS5pc0luQm91bmRz
KCkgfHwgbW9kZS5pc091dE9mQm91bmRzU2FuZUNoYWluKCkpIHsKICAgICAgICAgICAgICAgICBy
ZWFkKEJ1dHRlcmZseV9wdWJsaWNMZW5ndGgpOwogICAgICAgICAgICAgICAgIHJlYWQoSW5kZXhl
ZEludDMyUHJvcGVydGllcyk7CiAgICAgICAgICAgICAgICAgZGVmKEhlYXBMb2NhdGlvbihpbmRl
eGVkUHJvcGVydHlMb2MsIEluZGV4ZWRJbnQzMlByb3BlcnRpZXMsIGdyYXBoLnZhckFyZ0NoaWxk
KG5vZGUsIDApLCBncmFwaC52YXJBcmdDaGlsZChub2RlLCAxKSksIExhenlOb2RlKG5vZGUpKTsK
QEAgLTkzOSwxMCArOTM5LDEwIEBAIHZvaWQgY2xvYmJlcml6ZShHcmFwaCYgZ3JhcGgsIE5vZGUq
IG5vZGUKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgIAogICAgICAgICBjYXNlIEFy
cmF5OjpEb3VibGU6Ci0gICAgICAgICAgICBpZiAobW9kZS5pc0luQm91bmRzKCkpIHsKKyAgICAg
ICAgICAgIGlmIChtb2RlLmlzSW5Cb3VuZHMoKSB8fCBtb2RlLmlzT3V0T2ZCb3VuZHNTYW5lQ2hh
aW4oKSkgewogICAgICAgICAgICAgICAgIHJlYWQoQnV0dGVyZmx5X3B1YmxpY0xlbmd0aCk7CiAg
ICAgICAgICAgICAgICAgcmVhZChJbmRleGVkRG91YmxlUHJvcGVydGllcyk7Ci0gICAgICAgICAg
ICAgICAgTG9jYXRpb25LaW5kIGtpbmQgPSBtb2RlLmlzU2FuZUNoYWluKCkgPyBJbmRleGVkUHJv
cGVydHlEb3VibGVTYW5lQ2hhaW5Mb2MgOiBJbmRleGVkUHJvcGVydHlEb3VibGVMb2M7CisgICAg
ICAgICAgICAgICAgTG9jYXRpb25LaW5kIGtpbmQgPSBtb2RlLmlzSW5Cb3VuZHNTYW5lQ2hhaW4o
KSA/IEluZGV4ZWRQcm9wZXJ0eURvdWJsZVNhbmVDaGFpbkxvYyA6IEluZGV4ZWRQcm9wZXJ0eURv
dWJsZUxvYzsKICAgICAgICAgICAgICAgICBkZWYoSGVhcExvY2F0aW9uKGtpbmQsIEluZGV4ZWRE
b3VibGVQcm9wZXJ0aWVzLCBncmFwaC52YXJBcmdDaGlsZChub2RlLCAwKSwgZ3JhcGgudmFyQXJn
Q2hpbGQobm9kZSwgMSkpLCBMYXp5Tm9kZShub2RlKSk7CiAgICAgICAgICAgICAgICAgcmV0dXJu
OwogICAgICAgICAgICAgfQpAQCAtOTUwLDcgKzk1MCw3IEBAIHZvaWQgY2xvYmJlcml6ZShHcmFw
aCYgZ3JhcGgsIE5vZGUqIG5vZGUKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgIAog
ICAgICAgICBjYXNlIEFycmF5OjpDb250aWd1b3VzOgotICAgICAgICAgICAgaWYgKG1vZGUuaXNJ
bkJvdW5kcygpKSB7CisgICAgICAgICAgICBpZiAobW9kZS5pc0luQm91bmRzKCkgfHwgbW9kZS5p
c091dE9mQm91bmRzU2FuZUNoYWluKCkpIHsKICAgICAgICAgICAgICAgICByZWFkKEJ1dHRlcmZs
eV9wdWJsaWNMZW5ndGgpOwogICAgICAgICAgICAgICAgIHJlYWQoSW5kZXhlZENvbnRpZ3VvdXNQ
cm9wZXJ0aWVzKTsKICAgICAgICAgICAgICAgICBkZWYoSGVhcExvY2F0aW9uKGluZGV4ZWRQcm9w
ZXJ0eUxvYywgSW5kZXhlZENvbnRpZ3VvdXNQcm9wZXJ0aWVzLCBncmFwaC52YXJBcmdDaGlsZChu
b2RlLCAwKSwgZ3JhcGgudmFyQXJnQ2hpbGQobm9kZSwgMSkpLCBMYXp5Tm9kZShub2RlKSk7Cklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0ZpeHVwUGhhc2UuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRml4dXBQaGFzZS5jcHAJKHJldmlz
aW9uIDI2NTYzNykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRml4dXBQaGFzZS5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTEwNTksMjAgKzEwNTksMjQgQEAgcHJpdmF0ZToKICAgICAg
ICAgICAgIHN3aXRjaCAoYXJyYXlNb2RlLnR5cGUoKSkgewogICAgICAgICAgICAgY2FzZSBBcnJh
eTo6Q29udGlndW91czoKICAgICAgICAgICAgIGNhc2UgQXJyYXk6OkRvdWJsZToKLSAgICAgICAg
ICAgICAgICBpZiAoYXJyYXlNb2RlLmlzSlNBcnJheVdpdGhPcmlnaW5hbFN0cnVjdHVyZSgpICYm
IGFycmF5TW9kZS5zcGVjdWxhdGlvbigpID09IEFycmF5OjpJbkJvdW5kcykgewotICAgICAgICAg
ICAgICAgICAgICAvLyBDaGVjayBpZiBTYW5lQ2hhaW4gd2lsbCB3b3JrIG9uIGEgcGVyLXR5cGUg
YmFzaXMuIE5vdGUgdGhhdDoKKyAgICAgICAgICAgIGNhc2UgQXJyYXk6OkludDMyOiB7CisgICAg
ICAgICAgICAgICAgT3B0aW9uYWw8QXJyYXk6OlNwZWN1bGF0aW9uPiBzYW5lQ2hhaW5TcGVjdWxh
dGlvbjsKKyAgICAgICAgICAgICAgICBpZiAoYXJyYXlNb2RlLmlzSlNBcnJheVdpdGhPcmlnaW5h
bFN0cnVjdHVyZSgpKSB7CisgICAgICAgICAgICAgICAgICAgIC8vIENoZWNrIGlmIEluQm91bmRz
U2FuZUNoYWluIHdpbGwgd29yayBvbiBhIHBlci10eXBlIGJhc2lzLiBOb3RlIHRoYXQ6CiAgICAg
ICAgICAgICAgICAgICAgIC8vCiAgICAgICAgICAgICAgICAgICAgIC8vIDEpIFdlIGRvbid0IHdh
bnQgZG91YmxlIGFycmF5cyB0byBzb21ldGltZXMgcmV0dXJuIHVuZGVmaW5lZCwgc2luY2UKICAg
ICAgICAgICAgICAgICAgICAgLy8gdGhhdCB3b3VsZCByZXF1aXJlIGEgY2hhbmdlIHRvIHRoZSBy
ZXR1cm4gdHlwZSBhbmQgaXQgd291bGQgcGVzc2ltaXNlCiAgICAgICAgICAgICAgICAgICAgIC8v
IHRoaW5ncyBhIGxvdC4gU28sIHdlJ2Qgb25seSB3YW50IHRvIGRvIHRoYXQgaWYgd2UgYWN0dWFs
bHkgaGFkCiAgICAgICAgICAgICAgICAgICAgIC8vIGV2aWRlbmNlIHRoYXQgd2UgY291bGQgcmVh
ZCBmcm9tIGEgaG9sZS4gVGhhdCdzIHByZXR0eSBhbm5veWluZy4KICAgICAgICAgICAgICAgICAg
ICAgLy8gTGlrZWx5IHRoZSBiZXN0IHdheSB0byBoYW5kbGUgdGhhdCBjYXNlIGlzIHdpdGggYW4g
ZXF1aXZhbGVudCBvZgotICAgICAgICAgICAgICAgICAgICAvLyBTYW5lQ2hhaW4gZm9yIE91dE9m
Qm91bmRzLiBGb3Igbm93IHdlIGp1c3QgZGV0ZWN0IHdoZW4gVW5kZWZpbmVkIGFuZAorICAgICAg
ICAgICAgICAgICAgICAvLyBJbkJvdW5kc1NhbmVDaGFpbiBmb3IgT3V0T2ZCb3VuZHMuIEZvciBu
b3cgd2UganVzdCBkZXRlY3Qgd2hlbiBVbmRlZmluZWQgYW5kCiAgICAgICAgICAgICAgICAgICAg
IC8vIE5hTiBhcmUgaW5kaXN0aW5ndWlzaGFibGUgYWNjb3JkaW5nIHRvIGJhY2t3YXJkcyBwcm9w
YWdhdGlvbiwgYW5kIGp1c3QKLSAgICAgICAgICAgICAgICAgICAgLy8gdXNlIFNhbmVDaGFpbiBp
biB0aGF0IGNhc2UuIFRoaXMgaGFwcGVucyB0byBjYXRjaCBhIGxvdCBvZiBjYXNlcy4KKyAgICAg
ICAgICAgICAgICAgICAgLy8gdXNlIEluQm91bmRzU2FuZUNoYWluIGluIHRoYXQgY2FzZS4gVGhp
cyBoYXBwZW5zIHRvIGNhdGNoIGEgbG90IG9mIGNhc2VzLgogICAgICAgICAgICAgICAgICAgICAv
LwogICAgICAgICAgICAgICAgICAgICAvLyAyKSBXZSBkb24ndCB3YW50IGludDMyIGFycmF5IGxv
YWRzIHRvIGhhdmUgdG8gZG8gYSBob2xlIGNoZWNrIGp1c3QgdG8KLSAgICAgICAgICAgICAgICAg
ICAgLy8gY29lcmNlIHRvIFVuZGVmaW5lZCwgc2luY2UgdGhhdCB3b3VsZCBtZWFuIHR3aWNlIHRo
ZSBjaGVja3MuCisgICAgICAgICAgICAgICAgICAgIC8vIGNvZXJjZSB0byBVbmRlZmluZWQsIHNp
bmNlIHRoYXQgd291bGQgbWVhbiB0d2ljZSB0aGUgY2hlY2tzLiBXZSB3YW50IHRvCisgICAgICAg
ICAgICAgICAgICAgIC8vIGJlIGFibGUgdG8gc2F5IHdlIGFsd2F5cyByZXR1cm4gSW50MzIuIEZJ
WE1FOiBNYXliZSB0aGlzIHNob3VsZCBiZSBwcm9maWxpbmcKKyAgICAgICAgICAgICAgICAgICAg
Ly8gYmFzZWQ/CiAgICAgICAgICAgICAgICAgICAgIC8vCiAgICAgICAgICAgICAgICAgICAgIC8v
IFRoaXMgaGFzIHR3byBpbXBsaWNhdGlvbnMuIEZpcnN0LCB3ZSBoYXZlIHRvIGRvIG1vcmUgY2hl
Y2tzIHRoYW4gd2UnZAogICAgICAgICAgICAgICAgICAgICAvLyBsaWtlLiBJdCdzIHVuZm9ydHVu
YXRlIHRoYXQgd2UgaGF2ZSB0byBkbyB0aGUgaG9sZSBjaGVjay4gU2Vjb25kLApAQCAtMTA4MCwz
MiArMTA4NCw0MSBAQCBwcml2YXRlOgogICAgICAgICAgICAgICAgICAgICAvLyBvdXQtb2YtYm91
bmRzIHNsb3cgcGF0aC4gV2UgY2FuIGZpeCB0aGF0IHdpdGg6CiAgICAgICAgICAgICAgICAgICAg
IC8vIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNDQ2NjgKICAgICAg
ICAgICAgICAgICAgICAgCi0gICAgICAgICAgICAgICAgICAgIGJvb2wgY2FuRG9TYW5lQ2hhaW4g
PSBmYWxzZTsKICAgICAgICAgICAgICAgICAgICAgc3dpdGNoIChhcnJheU1vZGUudHlwZSgpKSB7
CisgICAgICAgICAgICAgICAgICAgIGNhc2UgQXJyYXk6OkludDMyOgorICAgICAgICAgICAgICAg
ICAgICAgICAgaWYgKGFycmF5TW9kZS5zcGVjdWxhdGlvbigpID09IEFycmF5OjpPdXRPZkJvdW5k
cykKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBzYW5lQ2hhaW5TcGVjdWxhdGlvbiA9IEFy
cmF5OjpPdXRPZkJvdW5kc1NhbmVDaGFpbjsKKyAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFr
OwogICAgICAgICAgICAgICAgICAgICBjYXNlIEFycmF5OjpDb250aWd1b3VzOgogICAgICAgICAg
ICAgICAgICAgICAgICAgLy8gVGhpcyBpcyBoYXBwZW5zIHRvIGJlIGVudGlyZWx5IG5hdHVyYWwu
IFdlIGFscmVhZHkgd291bGQgaGF2ZQogICAgICAgICAgICAgICAgICAgICAgICAgLy8gcmV0dXJu
ZWQgYW55IEpTVmFsdWUsIGFuZCBub3cgd2UnbGwgcmV0dXJuIFVuZGVmaW5lZC4gV2Ugc3RpbGwg
ZG8KICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHRoZSBjaGVjayBidXQgaXQgZG9lc24ndCBy
ZXF1aXJlIHRha2luZyBhbnkga2luZCBvZiBzbG93IHBhdGguCi0gICAgICAgICAgICAgICAgICAg
ICAgICBjYW5Eb1NhbmVDaGFpbiA9IHRydWU7CisgICAgICAgICAgICAgICAgICAgICAgICBpZiAo
YXJyYXlNb2RlLnNwZWN1bGF0aW9uKCkgPT0gQXJyYXk6Ok91dE9mQm91bmRzKQorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHNhbmVDaGFpblNwZWN1bGF0aW9uID0gQXJyYXk6Ok91dE9mQm91
bmRzU2FuZUNoYWluOworICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSBpZiAoYXJyYXlNb2Rl
LnNwZWN1bGF0aW9uKCkgPT0gQXJyYXk6OkluQm91bmRzKQorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHNhbmVDaGFpblNwZWN1bGF0aW9uID0gQXJyYXk6OkluQm91bmRzU2FuZUNoYWluOwog
ICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgICAgICAK
ICAgICAgICAgICAgICAgICAgICAgY2FzZSBBcnJheTo6RG91YmxlOgotICAgICAgICAgICAgICAg
ICAgICAgICAgaWYgKCEobm9kZS0+ZmxhZ3MoKSAmIE5vZGVCeXRlY29kZVVzZXNBc090aGVyKSkg
eworICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCEobm9kZS0+ZmxhZ3MoKSAmIE5vZGVCeXRl
Y29kZVVzZXNBc090aGVyKSAmJiBhcnJheU1vZGUuc3BlY3VsYXRpb24oKSA9PSBBcnJheTo6SW5C
b3VuZHMpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBIb2xlcyBsb29rIGxpa2Ug
TmFOIGFscmVhZHksIHNvIGlmIHRoZSB1c2VyIGRvZXNuJ3QgY2FyZQogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIC8vIGFib3V0IHRoZSBkaWZmZXJlbmNlIGJldHdlZW4gVW5kZWZpbmVkIGFu
ZCBOYU4gdGhlbiB3ZSBjYW4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBkbyB0aGlz
LgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhbkRvU2FuZUNoYWluID0gdHJ1ZTsKLSAg
ICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBzYW5l
Q2hhaW5TcGVjdWxhdGlvbiA9IEFycmF5OjpJbkJvdW5kc1NhbmVDaGFpbjsKKyAgICAgICAgICAg
ICAgICAgICAgICAgIH0gZWxzZSBpZiAoYXJyYXlNb2RlLnNwZWN1bGF0aW9uKCkgPT0gQXJyYXk6
Ok91dE9mQm91bmRzKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNhbmVDaGFpblNwZWN1
bGF0aW9uID0gQXJyYXk6Ok91dE9mQm91bmRzU2FuZUNoYWluOwogICAgICAgICAgICAgICAgICAg
ICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAg
ICAgZGVmYXVsdDoKICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAg
ICAgICAgICB9Ci0gICAgICAgICAgICAgICAgICAgIAotICAgICAgICAgICAgICAgICAgICBpZiAo
Y2FuRG9TYW5lQ2hhaW4pCi0gICAgICAgICAgICAgICAgICAgICAgICBzZXRTYW5lQ2hhaW5JZlBv
c3NpYmxlKG5vZGUpOwogICAgICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgICAgIGlmIChz
YW5lQ2hhaW5TcGVjdWxhdGlvbikKKyAgICAgICAgICAgICAgICAgICAgc2V0U2FuZUNoYWluSWZQ
b3NzaWJsZShub2RlLCAqc2FuZUNoYWluU3BlY3VsYXRpb24pOworCiAgICAgICAgICAgICAgICAg
YnJlYWs7CisgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICBjYXNl
IEFycmF5OjpTdHJpbmc6CiAgICAgICAgICAgICAgICAgaWYgKChub2RlLT5wcmVkaWN0aW9uKCkg
JiB+U3BlY1N0cmluZykKQEAgLTIyMDIsNyArMjIxNSw3IEBAIHByaXZhdGU6CiAgICAgICAgICAg
ICAvLyBGSVhNRTogT3V0T2ZCb3VuZHMgc2hvdWxkbid0IHByZWNsdWRlIGdvaW5nIHNhbmUgY2hh
aW4gYmVjYXVzZSBPT0IgaXMganVzdCBmYWxzZSBhbmQgY2Fubm90IGhhdmUgZWZmZWN0cy4KICAg
ICAgICAgICAgIC8vIFNlZTogaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTIwOTQ1NgogICAgICAgICAgICAgaWYgKGFycmF5TW9kZS5pc0pTQXJyYXlXaXRoT3JpZ2luYWxT
dHJ1Y3R1cmUoKSAmJiBhcnJheU1vZGUuc3BlY3VsYXRpb24oKSA9PSBBcnJheTo6SW5Cb3VuZHMp
Ci0gICAgICAgICAgICAgICAgc2V0U2FuZUNoYWluSWZQb3NzaWJsZShub2RlKTsKKyAgICAgICAg
ICAgICAgICBzZXRTYW5lQ2hhaW5JZlBvc3NpYmxlKG5vZGUsIEFycmF5OjpJbkJvdW5kc1NhbmVD
aGFpbik7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogICAgICAgICBjYXNlIEdldERp
cmVjdFBuYW1lOiB7CkBAIC0zNTA5LDcgKzM1MjIsNyBAQCBwcml2YXRlOgogICAgICAgICAgICAg
bV9pbnNlcnRpb25TZXQuaW5zZXJ0Tm9kZSgKICAgICAgICAgICAgICAgICBtX2luZGV4SW5CbG9j
aywgU3BlY05vbmUsIENoZWNrLCBvcmlnaW4sIEVkZ2UoYXJyYXksIFN0cmluZ1VzZSkpOwogICAg
ICAgICB9IGVsc2UgewotICAgICAgICAgICAgLy8gTm90ZSB0aGF0IHdlIG9ubHkgbmVlZCB0byBi
ZSB1c2luZyBhIHN0cnVjdHVyZSBjaGVjayBpZiB3ZSBvcHQgZm9yIFNhbmVDaGFpbiwgc2luY2UK
KyAgICAgICAgICAgIC8vIE5vdGUgdGhhdCB3ZSBvbmx5IG5lZWQgdG8gYmUgdXNpbmcgYSBzdHJ1
Y3R1cmUgY2hlY2sgaWYgd2Ugb3B0IGZvciBJbkJvdW5kc1NhbmVDaGFpbiwgc2luY2UKICAgICAg
ICAgICAgIC8vIHRoYXQgbmVlZHMgdG8gcHJvdGVjdCBhZ2FpbnN0IEpTQXJyYXkncyBfX3Byb3Rv
X18gYmVpbmcgY2hhbmdlZC4KICAgICAgICAgICAgIFN0cnVjdHVyZSogc3RydWN0dXJlID0gYXJy
YXlNb2RlLm9yaWdpbmFsQXJyYXlTdHJ1Y3R1cmUobV9ncmFwaCwgb3JpZ2luLnNlbWFudGljKTsK
ICAgICAgICAgCkBAIC0zNTUxLDcgKzM1NjQsNyBAQCBwcml2YXRlOgogICAgICAgICAgICAgT3BJ
bmZvKGFycmF5TW9kZS5hc1dvcmQoKSksIEVkZ2UoYXJyYXksIEtub3duQ2VsbFVzZSkpOwogICAg
IH0KIAotICAgIHZvaWQgc2V0U2FuZUNoYWluSWZQb3NzaWJsZShOb2RlKiBub2RlKQorICAgIHZv
aWQgc2V0U2FuZUNoYWluSWZQb3NzaWJsZShOb2RlKiBub2RlLCBBcnJheTo6U3BlY3VsYXRpb24g
c3BlY3VsYXRpb24pCiAgICAgewogICAgICAgICBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0
ID0gbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKTsKICAgICAg
ICAgU3RydWN0dXJlKiBhcnJheVByb3RvdHlwZVN0cnVjdHVyZSA9IGdsb2JhbE9iamVjdC0+YXJy
YXlQcm90b3R5cGUoKS0+c3RydWN0dXJlKHZtKCkpOwpAQCAtMzU2MSw3ICszNTc0LDcgQEAgcHJp
dmF0ZToKICAgICAgICAgICAgICYmIGdsb2JhbE9iamVjdC0+YXJyYXlQcm90b3R5cGVDaGFpbklz
U2FuZSgpKSB7CiAgICAgICAgICAgICBtX2dyYXBoLnJlZ2lzdGVyQW5kV2F0Y2hTdHJ1Y3R1cmVU
cmFuc2l0aW9uKGFycmF5UHJvdG90eXBlU3RydWN0dXJlKTsKICAgICAgICAgICAgIG1fZ3JhcGgu
cmVnaXN0ZXJBbmRXYXRjaFN0cnVjdHVyZVRyYW5zaXRpb24ob2JqZWN0UHJvdG90eXBlU3RydWN0
dXJlKTsKLSAgICAgICAgICAgIG5vZGUtPnNldEFycmF5TW9kZShub2RlLT5hcnJheU1vZGUoKS53
aXRoU3BlY3VsYXRpb24oQXJyYXk6OlNhbmVDaGFpbikpOworICAgICAgICAgICAgbm9kZS0+c2V0
QXJyYXlNb2RlKG5vZGUtPmFycmF5TW9kZSgpLndpdGhTcGVjdWxhdGlvbihzcGVjdWxhdGlvbikp
OwogICAgICAgICAgICAgbm9kZS0+Y2xlYXJGbGFncyhOb2RlTXVzdEdlbmVyYXRlKTsKICAgICAg
ICAgfQogICAgIH0KQEAgLTM5NDMsNyArMzk1Niw3IEBAIHByaXZhdGU6CiAgICAgICAgIC8vIEZJ
WE1FOiBPdXRPZkJvdW5kcyBzaG91bGRuJ3QgcHJlY2x1ZGUgZ29pbmcgc2FuZSBjaGFpbiBiZWNh
dXNlIE9PQiBpcyBqdXN0IGZhbHNlIGFuZCBjYW5ub3QgaGF2ZSBlZmZlY3RzLgogICAgICAgICAv
LyBTZWU6IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDk0NTYKICAg
ICAgICAgaWYgKGFycmF5TW9kZS5pc0pTQXJyYXlXaXRoT3JpZ2luYWxTdHJ1Y3R1cmUoKSAmJiBh
cnJheU1vZGUuc3BlY3VsYXRpb24oKSA9PSBBcnJheTo6SW5Cb3VuZHMpCi0gICAgICAgICAgICBz
ZXRTYW5lQ2hhaW5JZlBvc3NpYmxlKG5vZGUpOworICAgICAgICAgICAgc2V0U2FuZUNoYWluSWZQ
b3NzaWJsZShub2RlLCBBcnJheTo6SW5Cb3VuZHNTYW5lQ2hhaW4pOwogCiAgICAgICAgIGZpeEVk
Z2U8Q2VsbFVzZT4obV9ncmFwaC52YXJBcmdDaGlsZChub2RlLCAwKSk7CiAgICAgICAgIGZpeEVk
Z2U8SW50MzJVc2U+KG1fZ3JhcGgudmFyQXJnQ2hpbGQobm9kZSwgMSkpOwpJbmRleDogU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDMyXzY0LmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUMzJfNjQuY3Bw
CShyZXZpc2lvbiAyNjU2MzcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1
bGF0aXZlSklUMzJfNjQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yMzY2LDcgKzIzNjYsNyBAQCB2
b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlKE5vZGUqIG5vZGUpCiAgICAgICAgICAgICAKICAg
ICAgICAgICAgICAgICBHUFJUZW1wb3JhcnkgcmVzdWx0UGF5bG9hZCh0aGlzKTsKICAgICAgICAg
ICAgICAgICBpZiAobm9kZS0+YXJyYXlNb2RlKCkudHlwZSgpID09IEFycmF5OjpJbnQzMikgewot
ICAgICAgICAgICAgICAgICAgICBBU1NFUlQoIW5vZGUtPmFycmF5TW9kZSgpLmlzU2FuZUNoYWlu
KCkpOworICAgICAgICAgICAgICAgICAgICBBU1NFUlQoIW5vZGUtPmFycmF5TW9kZSgpLmlzSW5C
b3VuZHNTYW5lQ2hhaW4oKSk7CiAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAg
ICAgICBzcGVjdWxhdGlvbkNoZWNrKAogICAgICAgICAgICAgICAgICAgICAgICAgT3V0T2ZCb3Vu
ZHMsIEpTVmFsdWVSZWdzKCksIDAsCkBAIC0yMzkyLDcgKzIzOTIsNyBAQCB2b2lkIFNwZWN1bGF0
aXZlSklUOjpjb21waWxlKE5vZGUqIG5vZGUpCiAgICAgICAgICAgICAgICAgICAgIE1hY3JvQXNz
ZW1ibGVyOjpCYXNlSW5kZXgoCiAgICAgICAgICAgICAgICAgICAgICAgICBzdG9yYWdlUmVnLCBw
cm9wZXJ0eVJlZywgTWFjcm9Bc3NlbWJsZXI6OlRpbWVzRWlnaHQsIFBheWxvYWRPZmZzZXQpLAog
ICAgICAgICAgICAgICAgICAgICByZXN1bHRQYXlsb2FkLmdwcigpKTsKLSAgICAgICAgICAgICAg
ICBpZiAobm9kZS0+YXJyYXlNb2RlKCkuaXNTYW5lQ2hhaW4oKSkgeworICAgICAgICAgICAgICAg
IGlmIChub2RlLT5hcnJheU1vZGUoKS5pc0luQm91bmRzU2FuZUNoYWluKCkpIHsKICAgICAgICAg
ICAgICAgICAgICAgSklUQ29tcGlsZXI6Okp1bXAgbm90SG9sZSA9IG1faml0LmJyYW5jaElmTm90
RW1wdHkocmVzdWx0VGFnLmdwcigpKTsKICAgICAgICAgICAgICAgICAgICAgbV9qaXQubW92ZShU
cnVzdGVkSW1tMzIoSlNWYWx1ZTo6VW5kZWZpbmVkVGFnKSwgcmVzdWx0VGFnLmdwcigpKTsKICAg
ICAgICAgICAgICAgICAgICAgbV9qaXQubW92ZShUcnVzdGVkSW1tMzIoMCksIHJlc3VsdFBheWxv
YWQuZ3ByKCkpOwpAQCAtMjQ1Myw3ICsyNDUzLDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29t
cGlsZShOb2RlKiBub2RlKQogICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgRlBSVGVtcG9y
YXJ5IHJlc3VsdCh0aGlzKTsKICAgICAgICAgICAgICAgICBtX2ppdC5sb2FkRG91YmxlKE1hY3Jv
QXNzZW1ibGVyOjpCYXNlSW5kZXgoc3RvcmFnZVJlZywgcHJvcGVydHlSZWcsIE1hY3JvQXNzZW1i
bGVyOjpUaW1lc0VpZ2h0KSwgcmVzdWx0LmZwcigpKTsKLSAgICAgICAgICAgICAgICBpZiAoIW5v
ZGUtPmFycmF5TW9kZSgpLmlzU2FuZUNoYWluKCkpCisgICAgICAgICAgICAgICAgaWYgKCFub2Rl
LT5hcnJheU1vZGUoKS5pc0luQm91bmRzU2FuZUNoYWluKCkpCiAgICAgICAgICAgICAgICAgICAg
IHNwZWN1bGF0aW9uQ2hlY2soTG9hZEZyb21Ib2xlLCBKU1ZhbHVlUmVncygpLCAwLCBtX2ppdC5i
cmFuY2hJZk5hTihyZXN1bHQuZnByKCkpKTsKICAgICAgICAgICAgICAgICBkb3VibGVSZXN1bHQo
cmVzdWx0LmZwcigpLCBub2RlKTsKICAgICAgICAgICAgICAgICBicmVhazsKSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDY0LmNwcAkocmV2
aXNpb24gMjY1NjM3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2
ZUpJVDY0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjczNiw3ICsyNzM2LDcgQEAgdm9pZCBTcGVj
dWxhdGl2ZUpJVDo6Y29tcGlsZShOb2RlKiBub2RlKQogICAgICAgICAgICAgICAgIEdQUlRlbXBv
cmFyeSByZXN1bHQodGhpcyk7CiAKICAgICAgICAgICAgICAgICBtX2ppdC5sb2FkNjQoTWFjcm9B
c3NlbWJsZXI6OkJhc2VJbmRleChzdG9yYWdlUmVnLCBwcm9wZXJ0eVJlZywgTWFjcm9Bc3NlbWJs
ZXI6OlRpbWVzRWlnaHQpLCByZXN1bHQuZ3ByKCkpOwotICAgICAgICAgICAgICAgIGlmIChub2Rl
LT5hcnJheU1vZGUoKS5pc1NhbmVDaGFpbigpKSB7CisgICAgICAgICAgICAgICAgaWYgKG5vZGUt
PmFycmF5TW9kZSgpLmlzSW5Cb3VuZHNTYW5lQ2hhaW4oKSkgewogICAgICAgICAgICAgICAgICAg
ICBBU1NFUlQobm9kZS0+YXJyYXlNb2RlKCkudHlwZSgpID09IEFycmF5OjpDb250aWd1b3VzKTsK
ICAgICAgICAgICAgICAgICAgICAgSklUQ29tcGlsZXI6Okp1bXAgbm90SG9sZSA9IG1faml0LmJy
YW5jaElmTm90RW1wdHkocmVzdWx0LmdwcigpKTsKICAgICAgICAgICAgICAgICAgICAgbV9qaXQu
bW92ZShUcnVzdGVkSW1tNjQoSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpKSwgcmVzdWx0
LmdwcigpKTsKQEAgLTI3NjksMTIgKzI3NjksMjAgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29t
cGlsZShOb2RlKiBub2RlKQogICAgICAgICAgICAgc2xvd0Nhc2VzLmFwcGVuZChtX2ppdC5icmFu
Y2gzMihNYWNyb0Fzc2VtYmxlcjo6QWJvdmVPckVxdWFsLCBwcm9wZXJ0eVJlZywgTWFjcm9Bc3Nl
bWJsZXI6OkFkZHJlc3Moc3RvcmFnZVJlZywgQnV0dGVyZmx5OjpvZmZzZXRPZlB1YmxpY0xlbmd0
aCgpKSkpOwogCiAgICAgICAgICAgICBtX2ppdC5sb2FkNjQoTWFjcm9Bc3NlbWJsZXI6OkJhc2VJ
bmRleChzdG9yYWdlUmVnLCBwcm9wZXJ0eVJlZywgTWFjcm9Bc3NlbWJsZXI6OlRpbWVzRWlnaHQp
LCByZXN1bHRSZWcpOwotICAgICAgICAgICAgc2xvd0Nhc2VzLmFwcGVuZChtX2ppdC5icmFuY2hJ
ZkVtcHR5KHJlc3VsdFJlZykpOworCisgICAgICAgICAgICBpZiAobm9kZS0+YXJyYXlNb2RlKCku
aXNPdXRPZkJvdW5kc1NhbmVDaGFpbigpKSB7CisgICAgICAgICAgICAgICAgYXV0byBkb25lID0g
bV9qaXQuYnJhbmNoSWZOb3RFbXB0eShyZXN1bHRSZWcpOworICAgICAgICAgICAgICAgIHNsb3dD
YXNlcy5saW5rKCZtX2ppdCk7CisgICAgICAgICAgICAgICAgbV9qaXQubW92ZShDQ2FsbEhlbHBl
cnM6OlRydXN0ZWRJbW02NChKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSkpLCByZXN1bHRS
ZWcpOworICAgICAgICAgICAgICAgIGRvbmUubGluaygmbV9qaXQpOworICAgICAgICAgICAgfSBl
bHNlIHsKKyAgICAgICAgICAgICAgICBzbG93Q2FzZXMuYXBwZW5kKG1faml0LmJyYW5jaElmRW1w
dHkocmVzdWx0UmVnKSk7CisgICAgICAgICAgICAgICAgYWRkU2xvd1BhdGhHZW5lcmF0b3IoCisg
ICAgICAgICAgICAgICAgICAgIHNsb3dQYXRoQ2FsbCgKKyAgICAgICAgICAgICAgICAgICAgICAg
IHNsb3dDYXNlcywgdGhpcywgb3BlcmF0aW9uR2V0QnlWYWxPYmplY3RJbnQsCisgICAgICAgICAg
ICAgICAgICAgICAgICByZXN1bHQuZ3ByKCksIFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1f
Z3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBi
YXNlUmVnLCBwcm9wZXJ0eVJlZykpOworICAgICAgICAgICAgfQogICAgICAgICAgICAgCi0gICAg
ICAgICAgICBhZGRTbG93UGF0aEdlbmVyYXRvcigKLSAgICAgICAgICAgICAgICBzbG93UGF0aENh
bGwoCi0gICAgICAgICAgICAgICAgICAgIHNsb3dDYXNlcywgdGhpcywgb3BlcmF0aW9uR2V0QnlW
YWxPYmplY3RJbnQsCi0gICAgICAgICAgICAgICAgICAgIHJlc3VsdC5ncHIoKSwgVHJ1c3RlZElt
bVB0cjo6d2Vha1BvaW50ZXIobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+
b3JpZ2luLnNlbWFudGljKSksIGJhc2VSZWcsIHByb3BlcnR5UmVnKSk7CiAgICAgICAgICAgICAK
ICAgICAgICAgICAgIGpzVmFsdWVSZXN1bHQocmVzdWx0UmVnLCBub2RlKTsKICAgICAgICAgICAg
IGJyZWFrOwpAQCAtMjc5Nyw3ICsyODA1LDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGls
ZShOb2RlKiBub2RlKQogICAgICAgICAgICAgICAgIHNwZWN1bGF0aW9uQ2hlY2soT3V0T2ZCb3Vu
ZHMsIEpTVmFsdWVSZWdzKCksIG51bGxwdHIsIG1faml0LmJyYW5jaDMyKE1hY3JvQXNzZW1ibGVy
OjpBYm92ZU9yRXF1YWwsIHByb3BlcnR5UmVnLCBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhzdG9y
YWdlUmVnLCBCdXR0ZXJmbHk6Om9mZnNldE9mUHVibGljTGVuZ3RoKCkpKSk7CiAKICAgICAgICAg
ICAgICAgICBtX2ppdC5sb2FkRG91YmxlKE1hY3JvQXNzZW1ibGVyOjpCYXNlSW5kZXgoc3RvcmFn
ZVJlZywgcHJvcGVydHlSZWcsIE1hY3JvQXNzZW1ibGVyOjpUaW1lc0VpZ2h0KSwgcmVzdWx0UmVn
KTsKLSAgICAgICAgICAgICAgICBpZiAoIW5vZGUtPmFycmF5TW9kZSgpLmlzU2FuZUNoYWluKCkp
CisgICAgICAgICAgICAgICAgaWYgKCFub2RlLT5hcnJheU1vZGUoKS5pc0luQm91bmRzU2FuZUNo
YWluKCkpCiAgICAgICAgICAgICAgICAgICAgIHNwZWN1bGF0aW9uQ2hlY2soTG9hZEZyb21Ib2xl
LCBKU1ZhbHVlUmVncygpLCBudWxscHRyLCBtX2ppdC5icmFuY2hJZk5hTihyZXN1bHRSZWcpKTsK
ICAgICAgICAgICAgICAgICBkb3VibGVSZXN1bHQocmVzdWx0UmVnLCBub2RlKTsKICAgICAgICAg
ICAgICAgICBicmVhazsKQEAgLTI4MjQsMTMgKzI4MzIsMjUgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJ
VDo6Y29tcGlsZShOb2RlKiBub2RlKQogICAgICAgICAgICAgc2xvd0Nhc2VzLmFwcGVuZChtX2pp
dC5icmFuY2gzMihNYWNyb0Fzc2VtYmxlcjo6QWJvdmVPckVxdWFsLCBwcm9wZXJ0eVJlZywgTWFj
cm9Bc3NlbWJsZXI6OkFkZHJlc3Moc3RvcmFnZVJlZywgQnV0dGVyZmx5OjpvZmZzZXRPZlB1Ymxp
Y0xlbmd0aCgpKSkpOwogCiAgICAgICAgICAgICBtX2ppdC5sb2FkRG91YmxlKE1hY3JvQXNzZW1i
bGVyOjpCYXNlSW5kZXgoc3RvcmFnZVJlZywgcHJvcGVydHlSZWcsIE1hY3JvQXNzZW1ibGVyOjpU
aW1lc0VpZ2h0KSwgdGVtcFJlZyk7Ci0gICAgICAgICAgICBzbG93Q2FzZXMuYXBwZW5kKG1faml0
LmJyYW5jaElmTmFOKHRlbXBSZWcpKTsKLSAgICAgICAgICAgIGJveERvdWJsZSh0ZW1wUmVnLCBy
ZXN1bHRSZWcpOwotICAgICAgICAgICAgCi0gICAgICAgICAgICBhZGRTbG93UGF0aEdlbmVyYXRv
cigKLSAgICAgICAgICAgICAgICBzbG93UGF0aENhbGwoCi0gICAgICAgICAgICAgICAgICAgIHNs
b3dDYXNlcywgdGhpcywgb3BlcmF0aW9uR2V0QnlWYWxPYmplY3RJbnQsCi0gICAgICAgICAgICAg
ICAgICAgIHJlc3VsdC5ncHIoKSwgVHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIobV9ncmFwaCwg
bV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSksIGJhc2VSZWcs
IHByb3BlcnR5UmVnKSk7CisgICAgICAgICAgICBpZiAobm9kZS0+YXJyYXlNb2RlKCkuaXNPdXRP
ZkJvdW5kc1NhbmVDaGFpbigpKSB7CisgICAgICAgICAgICAgICAgaWYgKCEhKG5vZGUtPmZsYWdz
KCkgJiBOb2RlQnl0ZWNvZGVVc2VzQXNPdGhlcikpCisgICAgICAgICAgICAgICAgICAgIHNsb3dD
YXNlcy5hcHBlbmQobV9qaXQuYnJhbmNoSWZOYU4odGVtcFJlZykpOworICAgICAgICAgICAgICAg
IGJveERvdWJsZSh0ZW1wUmVnLCByZXN1bHRSZWcpOworICAgICAgICAgICAgICAgIGF1dG8gZG9u
ZSA9IG1faml0Lmp1bXAoKTsKKyAgICAgICAgICAgICAgICBzbG93Q2FzZXMubGluaygmbV9qaXQp
OworICAgICAgICAgICAgICAgIGlmICghIShub2RlLT5mbGFncygpICYgTm9kZUJ5dGVjb2RlVXNl
c0FzT3RoZXIpKQorICAgICAgICAgICAgICAgICAgICBtX2ppdC5tb3ZlKENDYWxsSGVscGVyczo6
VHJ1c3RlZEltbTY0KEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKSksIHJlc3VsdFJlZyk7
CisgICAgICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgICAgICBtX2ppdC5tb3ZlKEND
YWxsSGVscGVyczo6VHJ1c3RlZEltbTY0KEpTVmFsdWU6OmVuY29kZShqc051bWJlcihQTmFOKSkp
LCByZXN1bHRSZWcpOworICAgICAgICAgICAgICAgIGRvbmUubGluaygmbV9qaXQpOworICAgICAg
ICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICBzbG93Q2FzZXMuYXBwZW5kKG1faml0LmJy
YW5jaElmTmFOKHRlbXBSZWcpKTsKKyAgICAgICAgICAgICAgICBib3hEb3VibGUodGVtcFJlZywg
cmVzdWx0UmVnKTsKKyAgICAgICAgICAgICAgICBhZGRTbG93UGF0aEdlbmVyYXRvcigKKyAgICAg
ICAgICAgICAgICAgICAgc2xvd1BhdGhDYWxsKAorICAgICAgICAgICAgICAgICAgICAgICAgc2xv
d0Nhc2VzLCB0aGlzLCBvcGVyYXRpb25HZXRCeVZhbE9iamVjdEludCwKKyAgICAgICAgICAgICAg
ICAgICAgICAgIHJlc3VsdC5ncHIoKSwgVHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIobV9ncmFw
aCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSksIGJhc2VS
ZWcsIHByb3BlcnR5UmVnKSk7CisgICAgICAgICAgICB9CiAgICAgICAgICAgICAKICAgICAgICAg
ICAgIGpzVmFsdWVSZXN1bHQocmVzdWx0UmVnLCBub2RlKTsKICAgICAgICAgICAgIGJyZWFrOwpJ
bmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5j
cHAJKHJldmlzaW9uIDI2NTYzNykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3Bl
Y3VsYXRpdmVKSVQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNDA4LDcgKzI0MDgsNyBAQCB2b2lk
IFNwZWN1bGF0aXZlSklUOjpjb21waWxlR2V0QnlWYWxPblN0CiAKICAgICAgICAgaWYgKGdsb2Jh
bE9iamVjdC0+c3RyaW5nUHJvdG90eXBlQ2hhaW5Jc1NhbmUoKSkgewogICAgICAgICAgICAgLy8g
RklYTUU6IFRoaXMgY291bGQgYmUgY2FwdHVyZWQgdXNpbmcgYSBTcGVjdWxhdGlvbiBtb2RlIHRo
YXQgbWVhbnMgIm91dC1vZi1ib3VuZHMKLSAgICAgICAgICAgIC8vIGxvYWRzIHJldHVybiBhIHRy
aXZpYWwgdmFsdWUiLiBTb21ldGhpbmcgbGlrZSBTYW5lQ2hhaW5PdXRPZkJvdW5kcy4gVGhpcyBz
aG91bGQKKyAgICAgICAgICAgIC8vIGxvYWRzIHJldHVybiBhIHRyaXZpYWwgdmFsdWUiLiBTb21l
dGhpbmcgbGlrZSBPdXRPZkJvdW5kc1NhbmVDaGFpbi4gVGhpcyBzaG91bGQKICAgICAgICAgICAg
IC8vIHNwZWN1bGF0ZSB0aGF0IHdlIGRvbid0IHRha2UgbmVnYXRpdmUgb3V0LW9mLWJvdW5kcywg
b3IgYmV0dGVyIHlldCwgaXQgc2hvdWxkIHJlbHkKICAgICAgICAgICAgIC8vIG9uIGEgc3RyaW5n
UHJvdG90eXBlQ2hhaW5Jc1NhbmUoKSBndWFyYW50ZWVpbmcgdGhhdCB0aGUgcHJvdG90eXBlcyBo
YXZlIG5vIG5lZ2F0aXZlCiAgICAgICAgICAgICAvLyBpbmRleGVkIHByb3BlcnRpZXMgZWl0aGVy
LgpAQCAtMTQxNDgsNyArMTQxNDgsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlSGFz
SW5kZXhlZFByCiAgICAgICAgIG1faml0LmxvYWQzMihNYWNyb0Fzc2VtYmxlcjo6QmFzZUluZGV4
KHN0b3JhZ2VHUFIsIGluZGV4R1BSLCBNYWNyb0Fzc2VtYmxlcjo6VGltZXNFaWdodCwgT0JKRUNU
X09GRlNFVE9GKEpTVmFsdWUsIHUuYXNCaXRzLnRhZykpLCBzY3JhdGNoR1BSKTsKICNlbmRpZgog
Ci0gICAgICAgIGlmIChtb2RlLmlzU2FuZUNoYWluKCkpIHsKKyAgICAgICAgaWYgKG1vZGUuaXNJ
bkJvdW5kc1NhbmVDaGFpbigpKSB7CiAgICAgICAgICAgICBtX2ppdC5pc05vdEVtcHR5KHNjcmF0
Y2hHUFIsIHJlc3VsdEdQUik7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQpAQCAtMTQx
NzcsNyArMTQxNzcsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlSGFzSW5kZXhlZFBy
CiAKICAgICAgICAgbV9qaXQubG9hZERvdWJsZShNYWNyb0Fzc2VtYmxlcjo6QmFzZUluZGV4KHN0
b3JhZ2VHUFIsIGluZGV4R1BSLCBNYWNyb0Fzc2VtYmxlcjo6VGltZXNFaWdodCksIHNjcmF0Y2hG
UFIpOwogCi0gICAgICAgIGlmIChtb2RlLmlzU2FuZUNoYWluKCkpIHsKKyAgICAgICAgaWYgKG1v
ZGUuaXNJbkJvdW5kc1NhbmVDaGFpbigpKSB7CiAgICAgICAgICAgICBtX2ppdC5jb21wYXJlRG91
YmxlKE1hY3JvQXNzZW1ibGVyOjpEb3VibGVFcXVhbEFuZE9yZGVyZWQsIHNjcmF0Y2hGUFIsIHNj
cmF0Y2hGUFIsIHJlc3VsdEdQUik7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQpAQCAt
MTQyMTAsMTMgKzE0MjEwLDEzIEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVIYXNJbmRl
eGVkUHIKICAgICAgICAgbV9qaXQubG9hZDMyKE1hY3JvQXNzZW1ibGVyOjpCYXNlSW5kZXgoc3Rv
cmFnZUdQUiwgaW5kZXhHUFIsIE1hY3JvQXNzZW1ibGVyOjpUaW1lc0VpZ2h0LCBBcnJheVN0b3Jh
Z2U6OnZlY3Rvck9mZnNldCgpICsgT0JKRUNUX09GRlNFVE9GKEpTVmFsdWUsIHUuYXNCaXRzLnRh
ZykpLCBzY3JhdGNoR1BSKTsKICNlbmRpZgogCi0gICAgICAgIGlmIChtb2RlLmlzU2FuZUNoYWlu
KCkpIHsKKyAgICAgICAgaWYgKG1vZGUuaXNJbkJvdW5kc1NhbmVDaGFpbigpKSB7CiAgICAgICAg
ICAgICBtX2ppdC5pc05vdEVtcHR5KHNjcmF0Y2hHUFIsIHJlc3VsdEdQUik7CiAgICAgICAgICAg
ICBicmVhazsKICAgICAgICAgfQogCiAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpKdW1wIGlzSG9s
ZSA9IG1faml0LmJyYW5jaElmRW1wdHkoc2NyYXRjaEdQUik7Ci0gICAgICAgIGlmICghbW9kZS5p
c0luQm91bmRzKCkgfHwgbW9kZS5pc1NhbmVDaGFpbigpKQorICAgICAgICBpZiAoIW1vZGUuaXNJ
bkJvdW5kcygpIHx8IG1vZGUuaXNJbkJvdW5kc1NhbmVDaGFpbigpKQogICAgICAgICAgICAgc2xv
d0Nhc2VzLmFwcGVuZChpc0hvbGUpOwogICAgICAgICBlbHNlCiAgICAgICAgICAgICBzcGVjdWxh
dGlvbkNoZWNrKExvYWRGcm9tSG9sZSwgSlNWYWx1ZVJlZ3MoKSwgbnVsbHB0ciwgaXNIb2xlKTsK
SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHVmFsaWRhdGUuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHVmFsaWRhdGUuY3BwCShyZXZpc2lv
biAyNjU2MzcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1ZhbGlkYXRlLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtMzc2LDYgKzM3NiwyMSBAQCBwdWJsaWM6CiAgICAgICAgICAgICAg
ICAgY2FzZSBOZXdBcnJheUJ1ZmZlcjoKICAgICAgICAgICAgICAgICAgICAgVkFMSURBVEUoKG5v
ZGUpLCBub2RlLT52ZWN0b3JMZW5ndGhIaW50KCkgPj0gbm9kZS0+Y2FzdE9wZXJhbmQ8SlNJbW11
dGFibGVCdXR0ZXJmbHkqPigpLT5sZW5ndGgoKSk7CiAgICAgICAgICAgICAgICAgICAgIGJyZWFr
OworICAgICAgICAgICAgICAgIGNhc2UgR2V0QnlWYWw6CisgICAgICAgICAgICAgICAgICAgIHN3
aXRjaCAobm9kZS0+YXJyYXlNb2RlKCkudHlwZSgpKSB7CisgICAgICAgICAgICAgICAgICAgIGNh
c2UgQXJyYXk6OkludDMyOgorICAgICAgICAgICAgICAgICAgICBjYXNlIEFycmF5OjpEb3VibGU6
CisgICAgICAgICAgICAgICAgICAgIGNhc2UgQXJyYXk6OkNvbnRpZ3VvdXM6CisgICAgICAgICAg
ICAgICAgICAgICAgICAvLyBXZSByZWx5IG9uIGJlaW5nIGFuIG9yaWdpbmFsIGFycmF5IHN0cnVj
dHVyZSBzbyB3ZSBjYW4gcmV0dXJuIHVuZGVmaW5lZCBmb3IgbmVnYXRpdmUgaW5kaWNlcy4KKyAg
ICAgICAgICAgICAgICAgICAgICAgIC8vIFdlIGNvdWxkIGRvIGJldHRlciBpbiB0aGUgZnV0dXJl
LCBhbmQgaGF2ZSBhbmQgaGF2ZSBhbiBmZWVkYmFjayBiYXNlZCBwcm9maWxpbmcgbWVjaGFuaXNt
CisgICAgICAgICAgICAgICAgICAgICAgICAvLyB3aGVyZSB3ZSBzcGVjdWxhdGUgYWdhaW5zdCB0
aGUgaW5kZXggYmVpbmcgPj0gMC4KKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIChub2RlLT5h
cnJheU1vZGUoKS5pc091dE9mQm91bmRzU2FuZUNoYWluKCkpCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgVkFMSURBVEUoKG5vZGUpLCBub2RlLT5hcnJheU1vZGUoKS5pc0pTQXJyYXlXaXRo
T3JpZ2luYWxTdHJ1Y3R1cmUoKSk7CisgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAg
ICAgICAgICAgICAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFr
OworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAg
ICAgICAgICAgICAgIGRlZmF1bHQ6CiAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAg
ICAgICAgICAgIH0KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTG93ZXJERkdU
b0IzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTExvd2Vy
REZHVG9CMy5jcHAJKHJldmlzaW9uIDI2NTYzNykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9m
dGwvRlRMTG93ZXJERkdUb0IzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDYzMiw3ICs0NjMyLDcg
QEAgcHJpdmF0ZToKICAgICAgICAgICAgIGlmIChtX25vZGUtPmFycmF5TW9kZSgpLmlzSW5Cb3Vu
ZHMoKSkgewogICAgICAgICAgICAgICAgIExWYWx1ZSByZXN1bHQgPSBtX291dC5sb2FkNjQoYmFz
ZUluZGV4KGhlYXAsIHN0b3JhZ2UsIGluZGV4LCBtX2dyYXBoLnZhckFyZ0NoaWxkKG1fbm9kZSwg
MSkpKTsKICAgICAgICAgICAgICAgICBMVmFsdWUgaXNIb2xlID0gbV9vdXQuaXNaZXJvNjQocmVz
dWx0KTsKLSAgICAgICAgICAgICAgICBpZiAobV9ub2RlLT5hcnJheU1vZGUoKS5pc1NhbmVDaGFp
bigpKSB7CisgICAgICAgICAgICAgICAgaWYgKG1fbm9kZS0+YXJyYXlNb2RlKCkuaXNJbkJvdW5k
c1NhbmVDaGFpbigpKSB7CiAgICAgICAgICAgICAgICAgICAgIERGR19BU1NFUlQoCiAgICAgICAg
ICAgICAgICAgICAgICAgICBtX2dyYXBoLCBtX25vZGUsIG1fbm9kZS0+YXJyYXlNb2RlKCkudHlw
ZSgpID09IEFycmF5OjpDb250aWd1b3VzLCBtX25vZGUtPmFycmF5TW9kZSgpLnR5cGUoKSk7CiAg
ICAgICAgICAgICAgICAgICAgIHJlc3VsdCA9IG1fb3V0LnNlbGVjdCgKQEAgLTQ2NDUsNyArNDY0
NSw3IEBAIHByaXZhdGU6CiAgICAgICAgICAgICAgICAgc2V0SlNWYWx1ZShyZXN1bHQpOwogICAg
ICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIAorCiAgICAg
ICAgICAgICBMQmFzaWNCbG9jayBmYXN0Q2FzZSA9IG1fb3V0Lm5ld0Jsb2NrKCk7CiAgICAgICAg
ICAgICBMQmFzaWNCbG9jayBzbG93Q2FzZSA9IG1fb3V0Lm5ld0Jsb2NrKCk7CiAgICAgICAgICAg
ICBMQmFzaWNCbG9jayBjb250aW51YXRpb24gPSBtX291dC5uZXdCbG9jaygpOwpAQCAtNDY2Myw3
ICs0NjYzLDExIEBAIHByaXZhdGU6CiAgICAgICAgICAgICAgICAgbV9vdXQuaXNaZXJvNjQoZmFz
dFJlc3VsdFZhbHVlKSwgcmFyZWx5KHNsb3dDYXNlKSwgdXN1YWxseShjb250aW51YXRpb24pKTsK
ICAgICAgICAgICAgIAogICAgICAgICAgICAgbV9vdXQuYXBwZW5kVG8oc2xvd0Nhc2UsIGNvbnRp
bnVhdGlvbik7Ci0gICAgICAgICAgICBWYWx1ZUZyb21CbG9jayBzbG93UmVzdWx0ID0gbV9vdXQu
YW5jaG9yKHZtQ2FsbChJbnQ2NCwgb3BlcmF0aW9uR2V0QnlWYWxPYmplY3RJbnQsIHdlYWtQb2lu
dGVyKGdsb2JhbE9iamVjdCksIGJhc2UsIGluZGV4KSk7CisgICAgICAgICAgICBWYWx1ZUZyb21C
bG9jayBzbG93UmVzdWx0OworICAgICAgICAgICAgaWYgKG1fbm9kZS0+YXJyYXlNb2RlKCkuaXNP
dXRPZkJvdW5kc1NhbmVDaGFpbigpKQorICAgICAgICAgICAgICAgIHNsb3dSZXN1bHQgPSBtX291
dC5hbmNob3IobV9vdXQuY29uc3RJbnQ2NChKU1ZhbHVlOjpWYWx1ZVVuZGVmaW5lZCkpOworICAg
ICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIHNsb3dSZXN1bHQgPSBtX291dC5hbmNob3Io
dm1DYWxsKEludDY0LCBvcGVyYXRpb25HZXRCeVZhbE9iamVjdEludCwgd2Vha1BvaW50ZXIoZ2xv
YmFsT2JqZWN0KSwgYmFzZSwgaW5kZXgpKTsKICAgICAgICAgICAgIG1fb3V0Lmp1bXAoY29udGlu
dWF0aW9uKTsKICAgICAgICAgICAgIAogICAgICAgICAgICAgbV9vdXQuYXBwZW5kVG8oY29udGlu
dWF0aW9uLCBsYXN0TmV4dCk7CkBAIC00Njg1LDcgKzQ2ODksNyBAQCBwcml2YXRlOgogICAgICAg
ICAgICAgICAgIExWYWx1ZSByZXN1bHQgPSBtX291dC5sb2FkRG91YmxlKAogICAgICAgICAgICAg
ICAgICAgICBiYXNlSW5kZXgoaGVhcCwgc3RvcmFnZSwgaW5kZXgsIG1fZ3JhcGgudmFyQXJnQ2hp
bGQobV9ub2RlLCAxKSkpOwogICAgICAgICAgICAgICAgIAotICAgICAgICAgICAgICAgIGlmICgh
bV9ub2RlLT5hcnJheU1vZGUoKS5pc1NhbmVDaGFpbigpKSB7CisgICAgICAgICAgICAgICAgaWYg
KCFtX25vZGUtPmFycmF5TW9kZSgpLmlzSW5Cb3VuZHNTYW5lQ2hhaW4oKSkgewogICAgICAgICAg
ICAgICAgICAgICBzcGVjdWxhdGUoCiAgICAgICAgICAgICAgICAgICAgICAgICBMb2FkRnJvbUhv
bGUsIG5vVmFsdWUoKSwgbnVsbHB0ciwKICAgICAgICAgICAgICAgICAgICAgICAgIG1fb3V0LmRv
dWJsZU5vdEVxdWFsT3JVbm9yZGVyZWQocmVzdWx0LCByZXN1bHQpKTsKQEAgLTQ3MTYsNyArNDcy
MCwxNCBAQCBwcml2YXRlOgogICAgICAgICAgICAgbV9vdXQuanVtcChjb250aW51YXRpb24pOwog
ICAgICAgICAgICAgCiAgICAgICAgICAgICBtX291dC5hcHBlbmRUbyhzbG93Q2FzZSwgY29udGlu
dWF0aW9uKTsKLSAgICAgICAgICAgIFZhbHVlRnJvbUJsb2NrIHNsb3dSZXN1bHQgPSBtX291dC5h
bmNob3Iodm1DYWxsKEludDY0LCBvcGVyYXRpb25HZXRCeVZhbE9iamVjdEludCwgd2Vha1BvaW50
ZXIoZ2xvYmFsT2JqZWN0KSwgYmFzZSwgaW5kZXgpKTsKKyAgICAgICAgICAgIFZhbHVlRnJvbUJs
b2NrIHNsb3dSZXN1bHQ7CisgICAgICAgICAgICBpZiAobV9ub2RlLT5hcnJheU1vZGUoKS5pc091
dE9mQm91bmRzU2FuZUNoYWluKCkpIHsKKyAgICAgICAgICAgICAgICBpZiAoISEobV9ub2RlLT5m
bGFncygpICYgTm9kZUJ5dGVjb2RlVXNlc0FzT3RoZXIpKQorICAgICAgICAgICAgICAgICAgICBz
bG93UmVzdWx0ID0gbV9vdXQuYW5jaG9yKG1fb3V0LmNvbnN0SW50NjQoSlNWYWx1ZTo6ZW5jb2Rl
KGpzVW5kZWZpbmVkKCkpKSk7CisgICAgICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAg
ICAgICBzbG93UmVzdWx0ID0gbV9vdXQuYW5jaG9yKG1fb3V0LmNvbnN0SW50NjQoSlNWYWx1ZTo6
ZW5jb2RlKGpzTnVtYmVyKFBOYU4pKSkpOworICAgICAgICAgICAgfSBlbHNlCisgICAgICAgICAg
ICAgICAgc2xvd1Jlc3VsdCA9IG1fb3V0LmFuY2hvcih2bUNhbGwoSW50NjQsIG9wZXJhdGlvbkdl
dEJ5VmFsT2JqZWN0SW50LCB3ZWFrUG9pbnRlcihnbG9iYWxPYmplY3QpLCBiYXNlLCBpbmRleCkp
OwogICAgICAgICAgICAgbV9vdXQuanVtcChjb250aW51YXRpb24pOwogICAgICAgICAgICAgCiAg
ICAgICAgICAgICBtX291dC5hcHBlbmRUbyhjb250aW51YXRpb24sIGxhc3ROZXh0KTsKQEAgLTgx
MzUsNyArODE0Niw3IEBAIHByaXZhdGU6CiAgICAgICAgICAgICBpZiAoZ2xvYmFsT2JqZWN0LT5z
dHJpbmdQcm90b3R5cGVDaGFpbklzU2FuZSgpKSB7CiAgICAgICAgICAgICAgICAgLy8gRklYTUU6
IFRoaXMgY291bGQgYmUgY2FwdHVyZWQgdXNpbmcgYSBTcGVjdWxhdGlvbiBtb2RlIHRoYXQgbWVh
bnMKICAgICAgICAgICAgICAgICAvLyAib3V0LW9mLWJvdW5kcyBsb2FkcyByZXR1cm4gYSB0cml2
aWFsIHZhbHVlIiwgc29tZXRoaW5nIGxpa2UKLSAgICAgICAgICAgICAgICAvLyBTYW5lQ2hhaW5P
dXRPZkJvdW5kcy4KKyAgICAgICAgICAgICAgICAvLyBPdXRPZkJvdW5kc1NhbmVDaGFpbi4KICAg
ICAgICAgICAgICAgICAvLyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MTQ0NjY4CiAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgbV9ncmFwaC5yZWdpc3Rl
ckFuZFdhdGNoU3RydWN0dXJlVHJhbnNpdGlvbihzdHJpbmdQcm90b3R5cGVTdHJ1Y3R1cmUpOwpA
QCAtMTIyMjAsNyArMTIyMzEsNyBAQCBwcml2YXRlOgogICAgICAgICAgICAgTFZhbHVlIGNoZWNr
SG9sZVJlc3VsdFZhbHVlID0KICAgICAgICAgICAgICAgICBtX291dC5ub3RaZXJvNjQobV9vdXQu
bG9hZDY0KGJhc2VJbmRleChoZWFwLCBzdG9yYWdlLCBpbmRleCwgbV9ncmFwaC52YXJBcmdDaGls
ZChtX25vZGUsIDEpKSkpOwogICAgICAgICAgICAgVmFsdWVGcm9tQmxvY2sgY2hlY2tIb2xlUmVz
dWx0ID0gbV9vdXQuYW5jaG9yKGNoZWNrSG9sZVJlc3VsdFZhbHVlKTsKLSAgICAgICAgICAgIGlm
IChtb2RlLmlzU2FuZUNoYWluKCkpCisgICAgICAgICAgICBpZiAobW9kZS5pc0luQm91bmRzU2Fu
ZUNoYWluKCkpCiAgICAgICAgICAgICAgICAgbV9vdXQuanVtcChjb250aW51YXRpb24pOwogICAg
ICAgICAgICAgZWxzZSBpZiAoIW1vZGUuaXNJbkJvdW5kcygpKQogICAgICAgICAgICAgICAgIG1f
b3V0LmJyYW5jaChjaGVja0hvbGVSZXN1bHRWYWx1ZSwgdXN1YWxseShjb250aW51YXRpb24pLCBy
YXJlbHkoc2xvd0Nhc2UpKTsKQEAgLTEyMjU5LDcgKzEyMjcwLDcgQEAgcHJpdmF0ZToKICAgICAg
ICAgICAgIExWYWx1ZSBkb3VibGVWYWx1ZSA9IG1fb3V0LmxvYWREb3VibGUoYmFzZUluZGV4KGhl
YXAsIHN0b3JhZ2UsIGluZGV4LCBtX2dyYXBoLnZhckFyZ0NoaWxkKG1fbm9kZSwgMSkpKTsKICAg
ICAgICAgICAgIExWYWx1ZSBjaGVja0hvbGVSZXN1bHRWYWx1ZSA9IG1fb3V0LmRvdWJsZUVxdWFs
KGRvdWJsZVZhbHVlLCBkb3VibGVWYWx1ZSk7CiAgICAgICAgICAgICBWYWx1ZUZyb21CbG9jayBj
aGVja0hvbGVSZXN1bHQgPSBtX291dC5hbmNob3IoY2hlY2tIb2xlUmVzdWx0VmFsdWUpOwotICAg
ICAgICAgICAgaWYgKG1vZGUuaXNTYW5lQ2hhaW4oKSkKKyAgICAgICAgICAgIGlmIChtb2RlLmlz
SW5Cb3VuZHNTYW5lQ2hhaW4oKSkKICAgICAgICAgICAgICAgICBtX291dC5qdW1wKGNvbnRpbnVh
dGlvbik7CiAgICAgICAgICAgICBlbHNlIGlmICghbW9kZS5pc0luQm91bmRzKCkpCiAgICAgICAg
ICAgICAgICAgbV9vdXQuYnJhbmNoKGNoZWNrSG9sZVJlc3VsdFZhbHVlLCB1c3VhbGx5KGNvbnRp
bnVhdGlvbiksIHJhcmVseShzbG93Q2FzZSkpOwpAQCAtMTIyOTcsNyArMTIzMDgsNyBAQCBwcml2
YXRlOgogICAgICAgICAgICAgTFZhbHVlIGNoZWNrSG9sZVJlc3VsdFZhbHVlID0KICAgICAgICAg
ICAgICAgICBtX291dC5ub3RaZXJvNjQobV9vdXQubG9hZDY0KGJhc2VJbmRleChtX2hlYXBzLkFy
cmF5U3RvcmFnZV92ZWN0b3IsIHN0b3JhZ2UsIGluZGV4LCBtX2dyYXBoLnZhckFyZ0NoaWxkKG1f
bm9kZSwgMSkpKSk7CiAgICAgICAgICAgICBWYWx1ZUZyb21CbG9jayBjaGVja0hvbGVSZXN1bHQg
PSBtX291dC5hbmNob3IoY2hlY2tIb2xlUmVzdWx0VmFsdWUpOwotICAgICAgICAgICAgaWYgKG1v
ZGUuaXNTYW5lQ2hhaW4oKSkKKyAgICAgICAgICAgIGlmIChtb2RlLmlzSW5Cb3VuZHNTYW5lQ2hh
aW4oKSkKICAgICAgICAgICAgICAgICBtX291dC5qdW1wKGNvbnRpbnVhdGlvbik7CiAgICAgICAg
ICAgICBlbHNlIGlmICghbW9kZS5pc0luQm91bmRzKCkpCiAgICAgICAgICAgICAgICAgbV9vdXQu
YnJhbmNoKGNoZWNrSG9sZVJlc3VsdFZhbHVlLCB1c3VhbGx5KGNvbnRpbnVhdGlvbiksIHJhcmVs
eShzbG93Q2FzZSkpOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>406650</attachid>
            <date>2020-08-14 19:50:20 -0700</date>
            <delta_ts>2020-08-14 19:53:13 -0700</delta_ts>
            <desc>patch</desc>
            <filename>c-backup.diff</filename>
            <type>text/plain</type>
            <size>41924</size>
            <attacher name="Saam Barati">saam</attacher>
            
              <data encoding="base64">SW5kZXg6IEpTVGVzdHMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIEpTVGVzdHMvQ2hhbmdlTG9n
CShyZXZpc2lvbiAyNjU3MjMpCisrKyBKU1Rlc3RzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpA
QCAtMSwzICsxLDIzIEBACisyMDIwLTA4LTE0ICBTYWFtIEJhcmF0aSAgPHNiYXJhdGlAYXBwbGUu
Y29tPgorCisgICAgICAgIEhhdmUgYW4gT09CK1NhbmVDaGFpbiBBcnJheTo6U3BlY3VsYXRpb24K
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxNTQ4Nwor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogbWljcm9i
ZW5jaG1hcmtzL29vYi1zYW5lLWNoYWluLWNvbnRpZ3VvdXMuanM6IEFkZGVkLgorICAgICAgICAo
YXNzZXJ0KToKKyAgICAgICAgKGJhcik6CisgICAgICAgICogbWljcm9iZW5jaG1hcmtzL29vYi1z
YW5lLWNoYWluLWRvdWJsZS1yZWFkLXVuZGVmaW5lZC5qczogQWRkZWQuCisgICAgICAgIChhc3Nl
cnQpOgorICAgICAgICAoYmF6KToKKyAgICAgICAgKiBtaWNyb2JlbmNobWFya3Mvb29iLXNhbmUt
Y2hhaW4tZG91YmxlLmpzOiBBZGRlZC4KKyAgICAgICAgKGFzc2VydCk6CisgICAgICAgIChmb28p
OgorICAgICAgICAqIG1pY3JvYmVuY2htYXJrcy9vb2Itc2FuZS1jaGFpbi1pbnQzMi5qczogQWRk
ZWQuCisgICAgICAgIChhc3NlcnQpOgorICAgICAgICAoYmFyKToKKwogMjAyMC0wOC0xMiAgS2Vp
dGggTWlsbGVyICA8a2VpdGhfbWlsbGVyQGFwcGxlLmNvbT4KIAogICAgICAgICBPU1JBdmFpbGFi
aWxpdHlBbmFseXNpcyBzaG91bGRuJ3QgbWFyayBHZXRTdGFjayBub2RlcyBkaXJlY3RseSBhcyB2
YWxpZCBwbGFjZXMgZm9yIHJlY292ZXJ5CkluZGV4OiBKU1Rlc3RzL21pY3JvYmVuY2htYXJrcy9v
b2Itc2FuZS1jaGFpbi1jb250aWd1b3VzLmpzCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIEpTVGVzdHMvbWljcm9i
ZW5jaG1hcmtzL29vYi1zYW5lLWNoYWluLWNvbnRpZ3VvdXMuanMJKG5vbmV4aXN0ZW50KQorKysg
SlNUZXN0cy9taWNyb2JlbmNobWFya3Mvb29iLXNhbmUtY2hhaW4tY29udGlndW91cy5qcwkod29y
a2luZyBjb3B5KQpAQCAtMCwwICsxLDE4IEBACitmdW5jdGlvbiBhc3NlcnQoYikgeworICAgIGlm
ICghYikKKyAgICAgICAgdGhyb3cgbmV3IEVycm9yOworfQorCitmdW5jdGlvbiBiYXIoYSwgeCkg
eworICAgIHJldHVybiBhW3hdOworfQorbm9JbmxpbmUoYmFyKTsKKworbGV0IG8gPSB7fTsKK2xl
dCBiID0gW28sICIiLCAsIDI1XTsKKworZm9yIChsZXQgaSA9IDA7IGkgPCAxMDAwMDAwMDsgKytp
KSB7CisgICAgYXNzZXJ0KGJhcihiLCAwKSA9PT0gbyk7CisgICAgYXNzZXJ0KGJhcihiLCA1KSA9
PT0gdW5kZWZpbmVkKTsKKyAgICBhc3NlcnQoYmFyKGIsIDIpID09PSB1bmRlZmluZWQpOworfQpJ
bmRleDogSlNUZXN0cy9taWNyb2JlbmNobWFya3Mvb29iLXNhbmUtY2hhaW4tZG91YmxlLXJlYWQt
dW5kZWZpbmVkLmpzCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIEpTVGVzdHMvbWljcm9iZW5jaG1hcmtzL29vYi1z
YW5lLWNoYWluLWRvdWJsZS1yZWFkLXVuZGVmaW5lZC5qcwkobm9uZXhpc3RlbnQpCisrKyBKU1Rl
c3RzL21pY3JvYmVuY2htYXJrcy9vb2Itc2FuZS1jaGFpbi1kb3VibGUtcmVhZC11bmRlZmluZWQu
anMJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwxOCBAQAorZnVuY3Rpb24gYXNzZXJ0KGIpIHsK
KyAgICBpZiAoIWIpCisgICAgICAgIHRocm93IG5ldyBFcnJvcjsKK30KKworZnVuY3Rpb24gYmF6
KGEsIHgpIHsKKyAgICByZXR1cm4gYVt4XTsKK30KK25vSW5saW5lKGJheik7CisKK2xldCBhID0g
WzEuNSwgMi41LCAsIDMuNV07CisKK2ZvciAobGV0IGkgPSAwOyBpIDwgMTAwMDAwMDA7ICsraSkg
eworICAgIGFzc2VydChiYXooYSwgMCkgPT09IDEuNSk7CisgICAgYXNzZXJ0KGJheihhLCA1KSA9
PT0gdW5kZWZpbmVkKTsKKyAgICBhc3NlcnQoYmF6KGEsIDIpID09PSB1bmRlZmluZWQpOworfQor
CkluZGV4OiBKU1Rlc3RzL21pY3JvYmVuY2htYXJrcy9vb2Itc2FuZS1jaGFpbi1kb3VibGUuanMK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gSlNUZXN0cy9taWNyb2JlbmNobWFya3Mvb29iLXNhbmUtY2hhaW4tZG91
YmxlLmpzCShub25leGlzdGVudCkKKysrIEpTVGVzdHMvbWljcm9iZW5jaG1hcmtzL29vYi1zYW5l
LWNoYWluLWRvdWJsZS5qcwkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDE3IEBACitmdW5jdGlv
biBhc3NlcnQoYikgeworICAgIGlmICghYikKKyAgICAgICAgdGhyb3cgbmV3IEVycm9yOworfQor
CitmdW5jdGlvbiBmb28oYSwgeCkgeworICAgIHJldHVybiBhW3hdICogMi41OworfQorbm9Jbmxp
bmUoZm9vKTsKKworbGV0IGEgPSBbMS41LCAyLjUsICwgMy41XTsKKworZm9yIChsZXQgaSA9IDA7
IGkgPCAxMDAwMDAwMDsgKytpKSB7CisgICAgYXNzZXJ0KGZvbyhhLCAwKSA9PT0gMi41ICogMS41
KTsKKyAgICBhc3NlcnQoaXNOYU4oZm9vKGEsIDUpKSk7CisgICAgYXNzZXJ0KGlzTmFOKGZvbyhh
LCAyKSkpOworfQpJbmRleDogSlNUZXN0cy9taWNyb2JlbmNobWFya3Mvb29iLXNhbmUtY2hhaW4t
aW50MzIuanMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gSlNUZXN0cy9taWNyb2JlbmNobWFya3Mvb29iLXNhbmUt
Y2hhaW4taW50MzIuanMJKG5vbmV4aXN0ZW50KQorKysgSlNUZXN0cy9taWNyb2JlbmNobWFya3Mv
b29iLXNhbmUtY2hhaW4taW50MzIuanMJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwxNyBAQAor
ZnVuY3Rpb24gYXNzZXJ0KGIpIHsKKyAgICBpZiAoIWIpCisgICAgICAgIHRocm93IG5ldyBFcnJv
cjsKK30KKworZnVuY3Rpb24gYmFyKGEsIHgpIHsKKyAgICByZXR1cm4gYVt4XTsKK30KK25vSW5s
aW5lKGJhcik7CisKK2xldCBiID0gWzAsIDEsICwgIDJdOworCitmb3IgKGxldCBpID0gMDsgaSA8
IDEwMDAwMDAwOyArK2kpIHsKKyAgICBhc3NlcnQoYmFyKGIsIDApID09PSAwKTsKKyAgICBhc3Nl
cnQoYmFyKGIsIDUpID09PSB1bmRlZmluZWQpOworICAgIGFzc2VydChiYXIoYiwgMikgPT09IHVu
ZGVmaW5lZCk7Cit9CkluZGV4OiBKU1Rlc3RzL3N0cmVzcy9vb2Itc2FuZS1jaGFpbi1uZWdhdGl2
ZS1pbmRleC5qcwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBKU1Rlc3RzL3N0cmVzcy9vb2Itc2FuZS1jaGFpbi1u
ZWdhdGl2ZS1pbmRleC5qcwkobm9uZXhpc3RlbnQpCisrKyBKU1Rlc3RzL3N0cmVzcy9vb2Itc2Fu
ZS1jaGFpbi1uZWdhdGl2ZS1pbmRleC5qcwkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDI0IEBA
CitsZXQgY2FsbGVkID0gZmFsc2U7CitPYmplY3QuZGVmaW5lUHJvcGVydHkoQXJyYXkucHJvdG90
eXBlLCAiLTEiLCB7CisgICAgZ2V0OiBmdW5jdGlvbigpIHsKKyAgICAgICAgY2FsbGVkID0gdHJ1
ZTsKKyAgICAgICAgcmV0dXJuIDQyOworICAgIH0KK30pOworZnVuY3Rpb24gYXNzZXJ0KGIpIHsK
KyAgICBpZiAoIWIpCisgICAgICAgIHRocm93IG5ldyBFcnJvcjsKK30KKworZnVuY3Rpb24gYmF6
KGEsIHgpIHsKKyAgICByZXR1cm4gYVt4XTsKK30KK25vSW5saW5lKGJheik7CisKK2xldCBhID0g
WzEsMiwzXTsKKworZm9yIChsZXQgaSA9IDA7IGkgPCAxMDAwMDAwMDsgKytpKSB7CisgICAgYXNz
ZXJ0KGJheihhLCAtMSkgPT09IDQyKTsKKyAgICBhc3NlcnQoY2FsbGVkKTsKKyAgICBjYWxsZWQg
PSBmYWxzZTsKK30KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMjY1NjM3
KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAt
MSwzICsxLDU3IEBACisyMDIwLTA4LTE0ICBTYWFtIEJhcmF0aSAgPHNiYXJhdGlAYXBwbGUuY29t
PgorCisgICAgICAgIEhhdmUgYW4gT09CK1NhbmVDaGFpbiBBcnJheTo6U3BlY3VsYXRpb24KKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxNTQ4NworCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoaXMgcGF0Y2gg
YWRkcyBhIG5ldyBBcnJheU1vZGUgc3BlY3VsYXRpb24gaW4gdGhlIERGRy9GVEwgY2FsbGVkIE91
dE9mQm91bmRzU2FuZUNoYWluLgorICAgICAgICBJdCBhbGxvd3MgdXMgdG8gZG8gZmFzdCB0aGlu
Z3Mgd2hlbiB3ZSBnbyBPT0IsIGxpa2Ugc2ltcGx5IHJldHVybiB1bmRlZmluZWQuCisgICAgICAg
IFRoaXMgaXMgYmVjYXVzZSB3ZSBpbnN0YWxsIHdhdGNocG9pbnRzIG9uIHRoZSBwcm90b3R5cGUg
Y2hhaW4gdG8gZW5zdXJlIHRoZXkKKyAgICAgICAgaGF2ZSBubyBpbmRleGVkIHByb3BlcnRpZXMu
IFRoaXMgcGF0Y2ggaW1wbGVtZW50cyBPdXRPZkJvdW5kc1NhbmVDaGFpbiBvbgorICAgICAgICBH
ZXRCeVZhbCBvdmVyIEludDMyL0RvdWJsZS9Db250aWd1b3VzIG9yaWdpbmFsIEpTIGFycmF5cy4g
V2UgY2FuIGV4dGVuZCBpdCBpbgorICAgICAgICB0aGUgZnV0dXJlIHRvIG5vbiBvcmlnaW5hbCBK
UyBhcnJheXMgaWYgd2UgcHJvdmUgdGhlaXIgcHJvdG90eXBlIGlzIEFycmF5LnByb3RvdHlwZS4g
CisgICAgICAgIFRvIGltcGxlbWVudCB0aGlzIHByb3Blcmx5LCB3ZSBhbHNvIG5lZWQgdG8gZW5z
dXJlIHRoYXQgdGhlIGluZGV4IGlzbid0IG5lZ2F0aXZlLAorICAgICAgICBhcyBBcnJheS5wcm90
b3R5cGUvT2JqZWN0LnByb3RvdHlwZSBtYXkgaGF2ZSBuZWdhdGl2ZSBpbmRleGVkIGFjY2Vzc29y
cy4gV2UKKyAgICAgICAgZG8gdGhpcyB2aWEgc3BlY3VsYXRpb24sIGFuZCBpZiB3ZSBldmVyIHJl
Y29tcGlsZSwgYW5kIHNlZSBhbiBleGl0IGJlY2F1c2Ugb2YKKyAgICAgICAgdGhpcywgd2Ugd2ls
bCBzdG9wIHNwZWN1bGF0aW5nIE91dE9mQm91bmRzU2FuZUNoYWluLgorICAgICAgICAKKyAgICAg
ICAgVGhpcyBpcyBhYm91dCAyMCUgZmFzdGVyIG9uIGNyeXB0by1tZDUtU1AuIEFuZCB+My00eCBm
YXN0ZXIgb24gdGhlCisgICAgICAgIG1pY3JvYmVuY2htYXJrcyBJIGNyZWF0ZWQuCisKKyAgICAg
ICAgKiBkZmcvREZHQWJzdHJhY3RJbnRlcnByZXRlcklubGluZXMuaDoKKyAgICAgICAgKEpTQzo6
REZHOjpBYnN0cmFjdEludGVycHJldGVyPEFic3RyYWN0U3RhdGVUeXBlPjo6ZXhlY3V0ZUVmZmVj
dHMpOgorICAgICAgICAqIGRmZy9ERkdBcnJheU1vZGUuY3BwOgorICAgICAgICAoSlNDOjpERkc6
OkFycmF5TW9kZTo6cmVmaW5lIGNvbnN0KToKKyAgICAgICAgKEpTQzo6REZHOjphcnJheVNwZWN1
bGF0aW9uVG9TdHJpbmcpOgorICAgICAgICAqIGRmZy9ERkdBcnJheU1vZGUuaDoKKyAgICAgICAg
KEpTQzo6REZHOjpBcnJheU1vZGU6OmlzSW5Cb3VuZHNTYW5lQ2hhaW4gY29uc3QpOgorICAgICAg
ICAoSlNDOjpERkc6OkFycmF5TW9kZTo6aXNPdXRPZkJvdW5kc1NhbmVDaGFpbiBjb25zdCk6Cisg
ICAgICAgIChKU0M6OkRGRzo6QXJyYXlNb2RlOjppc091dE9mQm91bmRzIGNvbnN0KToKKyAgICAg
ICAgKEpTQzo6REZHOjpBcnJheU1vZGU6OmlzRWZmZWN0ZnVsT3V0T2ZCb3VuZHMgY29uc3QpOgor
ICAgICAgICAoSlNDOjpERkc6OkFycmF5TW9kZTo6aXNJbkJvdW5kcyBjb25zdCk6CisgICAgICAg
IChKU0M6OkRGRzo6QXJyYXlNb2RlOjppc1NhbmVDaGFpbiBjb25zdCk6IERlbGV0ZWQuCisgICAg
ICAgICogZGZnL0RGR0NTRVBoYXNlLmNwcDoKKyAgICAgICAgKiBkZmcvREZHQ2xvYmJlcml6ZS5o
OgorICAgICAgICAoSlNDOjpERkc6OmNsb2JiZXJpemUpOgorICAgICAgICAqIGRmZy9ERkdGaXh1
cFBoYXNlLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpGaXh1cFBoYXNlOjpmaXh1cE5vZGUpOgor
ICAgICAgICAoSlNDOjpERkc6OkZpeHVwUGhhc2U6OmNoZWNrQXJyYXkpOgorICAgICAgICAoSlND
OjpERkc6OkZpeHVwUGhhc2U6OnNldFNhbmVDaGFpbklmUG9zc2libGUpOgorICAgICAgICAoSlND
OjpERkc6OkZpeHVwUGhhc2U6OmNvbnZlcnRUb0hhc0luZGV4ZWRQcm9wZXJ0eSk6CisgICAgICAg
ICogZGZnL0RGR1NwZWN1bGF0aXZlSklULmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxh
dGl2ZUpJVDo6Y29tcGlsZUdldEJ5VmFsT25TdHJpbmcpOgorICAgICAgICAoSlNDOjpERkc6OlNw
ZWN1bGF0aXZlSklUOjpjb21waWxlSGFzSW5kZXhlZFByb3BlcnR5KToKKyAgICAgICAgKiBkZmcv
REZHU3BlY3VsYXRpdmVKSVQzMl82NC5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRp
dmVKSVQ6OmNvbXBpbGUpOgorICAgICAgICAqIGRmZy9ERkdTcGVjdWxhdGl2ZUpJVDY0LmNwcDoK
KyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZSk6CisgICAgICAgICog
ZGZnL0RGR1ZhbGlkYXRlLmNwcDoKKyAgICAgICAgKiBmdGwvRlRMTG93ZXJERkdUb0IzLmNwcDoK
KyAgICAgICAgKEpTQzo6RlRMOjpERkc6Okxvd2VyREZHVG9CMzo6Y29tcGlsZUdldEJ5VmFsKToK
KyAgICAgICAgKEpTQzo6RlRMOjpERkc6Okxvd2VyREZHVG9CMzo6Y29tcGlsZVN0cmluZ0NoYXJB
dCk6CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRGR1RvQjM6OmNvbXBpbGVIYXNJbmRl
eGVkUHJvcGVydHkpOgorCiAyMDIwLTA4LTEyICBLZWl0aCBSb2xsaW4gIDxrcm9sbGluQGFwcGxl
LmNvbT4KIAogICAgICAgICBSZW1vdmUgdGhlIG5lZWQgZm9yIGRlZmluaW5nIFVTRV9ORVdfQlVJ
TERfU1lTVEVNCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvRXhpdEtpbmQu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9FeGl0S2lu
ZC5jcHAJKHJldmlzaW9uIDI2NTYzNykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29k
ZS9FeGl0S2luZC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTU2LDYgKzU2LDggQEAgY29uc3QgY2hh
ciogZXhpdEtpbmRUb1N0cmluZyhFeGl0S2luZCBraQogICAgICAgICByZXR1cm4gIk92ZXJmbG93
IjsKICAgICBjYXNlIE5lZ2F0aXZlWmVybzoKICAgICAgICAgcmV0dXJuICJOZWdhdGl2ZVplcm8i
OworICAgIGNhc2UgTmVnYXRpdmVJbmRleDoKKyAgICAgICAgcmV0dXJuICJOZWdhdGl2ZUluZGV4
IjsKICAgICBjYXNlIEludDUyT3ZlcmZsb3c6CiAgICAgICAgIHJldHVybiAiSW50NTJPdmVyZmxv
dyI7CiAgICAgY2FzZSBTdG9yZVRvSG9sZToKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29kZS9FeGl0S2luZC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29kZS9FeGl0S2luZC5oCShyZXZpc2lvbiAyNjU2MzcpCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvYnl0ZWNvZGUvRXhpdEtpbmQuaAkod29ya2luZyBjb3B5KQpAQCAtMzksNiArMzksNyBA
QCBlbnVtIEV4aXRLaW5kIDogdWludDhfdCB7CiAgICAgQmFkVHlwZUluZm9GbGFncywgLy8gV2Ug
ZXhpdGVkIGJlY2F1c2Ugd2UgbWFkZSBhbiBpbmNvcnJlY3QgYXNzdW1wdGlvbiBhYm91dCB3aGF0
IFR5cGVJbmZvIGZsYWdzIHdlIHdvdWxkIHNlZS4KICAgICBPdmVyZmxvdywgLy8gV2UgZXhpdGVk
IGJlY2F1c2Ugb2Ygb3ZlcmZsb3cuCiAgICAgTmVnYXRpdmVaZXJvLCAvLyBXZSBleGl0ZWQgYmVj
YXVzZSB3ZSBlbmNvdW50ZXJlZCBuZWdhdGl2ZSB6ZXJvLgorICAgIE5lZ2F0aXZlSW5kZXgsIC8v
IFdlIGV4aXRlZCBiZWNhdXNlIHdlIGVuY291bnRlcmVkIGEgbmVnYXRpdmUgaW5kZXggaW4gYSBw
bGFjZSB3ZSBkaWRuJ3Qgd2FudCB0byBzZWUgaXQuCiAgICAgSW50NTJPdmVyZmxvdywgLy8gV2Ug
ZXhpdGVkIGJlY2F1c2Ugb2YgYW4gSW50NTIgb3ZlcmZsb3cuCiAgICAgU3RvcmVUb0hvbGUsIC8v
IFdlIGhhZCBhIHN0b3JlIHRvIGEgaG9sZS4KICAgICBMb2FkRnJvbUhvbGUsIC8vIFdlIGhhZCBh
IGxvYWQgZnJvbSBhIGhvbGUuCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Fi
c3RyYWN0SW50ZXJwcmV0ZXJJbmxpbmVzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdBYnN0cmFjdEludGVycHJldGVySW5saW5lcy5oCShyZXZpc2lvbiAyNjU2
MzcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Fic3RyYWN0SW50ZXJwcmV0ZXJJ
bmxpbmVzLmgJKHdvcmtpbmcgY29weSkKQEAgLTIzNTAsNyArMjM1MCw3IEBAIGJvb2wgQWJzdHJh
Y3RJbnRlcnByZXRlcjxBYnN0cmFjdFN0YXRlVHkKICAgICAgICAgICAgICAgICAvLyB3ZSBnb3Qg
dG8gdGhlIGJhY2tlbmQuIFNvIHRvIGRvIHRoaXMgcmlnaHQsIHdlJ2QgaGF2ZSB0byBnZXQgdGhl
CiAgICAgICAgICAgICAgICAgLy8gZml4dXAgcGhhc2UgdG8gY2hlY2sgdGhlIHdhdGNocG9pbnQg
c3RhdGUgYW5kIHRoZW4gYmFrZSBpbnRvIHRoZQogICAgICAgICAgICAgICAgIC8vIEdldEJ5VmFs
IG9wZXJhdGlvbiB0aGUgZmFjdCB0aGF0IHdlJ3JlIHVzaW5nIGEgd2F0Y2hwb2ludCwgdXNpbmcK
LSAgICAgICAgICAgICAgICAvLyBzb21ldGhpbmcgbGlrZSBBcnJheTo6U2FuZUNoYWluIChleGNl
cHQgbm90IHF1aXRlLCBiZWNhdXNlIHRoYXQKKyAgICAgICAgICAgICAgICAvLyBzb21ldGhpbmcg
bGlrZSBBcnJheTo6SW5Cb3VuZHNTYW5lQ2hhaW4gKGV4Y2VwdCBub3QgcXVpdGUsIGJlY2F1c2Ug
dGhhdAogICAgICAgICAgICAgICAgIC8vIGltcGxpZXMgYW4gaW4tYm91bmRzIGFjY2VzcykuIE5v
bmUgb2YgdGhpcyBmZWVscyBsaWtlIGl0J3Mgd29ydGggaXQsCiAgICAgICAgICAgICAgICAgLy8g
c28gd2UncmUgZ29pbmcgd2l0aCBUT1AgZm9yIG5vdy4gVGhlIHNhbWUgdGhpbmcgYXBwbGllcyB0
bwogICAgICAgICAgICAgICAgIC8vIGNsb2JiZXJpbmcgdGhlIHdvcmxkLgpAQCAtMjM2NiwyNSAr
MjM2NiwzMyBAQCBib29sIEFic3RyYWN0SW50ZXJwcmV0ZXI8QWJzdHJhY3RTdGF0ZVR5CiAgICAg
ICAgICAgICBtYWtlSGVhcFRvcEZvck5vZGUobm9kZSk7CiAgICAgICAgICAgICBicmVhazsKICAg
ICAgICAgY2FzZSBBcnJheTo6SW50MzI6Ci0gICAgICAgICAgICBpZiAobm9kZS0+YXJyYXlNb2Rl
KCkuaXNPdXRPZkJvdW5kcygpKSB7CisgICAgICAgICAgICBpZiAobm9kZS0+YXJyYXlNb2RlKCku
aXNFZmZlY3RmdWxPdXRPZkJvdW5kcygpKSB7CiAgICAgICAgICAgICAgICAgY2xvYmJlcldvcmxk
KCk7CiAgICAgICAgICAgICAgICAgbWFrZUhlYXBUb3BGb3JOb2RlKG5vZGUpOwotICAgICAgICAg
ICAgfSBlbHNlCisgICAgICAgICAgICB9IGVsc2UgaWYgKG5vZGUtPmFycmF5TW9kZSgpLmlzT3V0
T2ZCb3VuZHNTYW5lQ2hhaW4oKSkKKyAgICAgICAgICAgICAgICBzZXROb25DZWxsVHlwZUZvck5v
ZGUobm9kZSwgU3BlY0ludDMyT25seSB8IFNwZWNPdGhlcik7CisgICAgICAgICAgICBlbHNlCiAg
ICAgICAgICAgICAgICAgc2V0Tm9uQ2VsbFR5cGVGb3JOb2RlKG5vZGUsIFNwZWNJbnQzMk9ubHkp
OwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgQXJyYXk6OkRvdWJsZToKLSAgICAg
ICAgICAgIGlmIChub2RlLT5hcnJheU1vZGUoKS5pc091dE9mQm91bmRzKCkpIHsKKyAgICAgICAg
ICAgIGlmIChub2RlLT5hcnJheU1vZGUoKS5pc0VmZmVjdGZ1bE91dE9mQm91bmRzKCkpIHsKICAg
ICAgICAgICAgICAgICBjbG9iYmVyV29ybGQoKTsKICAgICAgICAgICAgICAgICBtYWtlSGVhcFRv
cEZvck5vZGUobm9kZSk7Ci0gICAgICAgICAgICB9IGVsc2UgaWYgKG5vZGUtPmFycmF5TW9kZSgp
LmlzU2FuZUNoYWluKCkpCisgICAgICAgICAgICB9IGVsc2UgaWYgKG5vZGUtPmFycmF5TW9kZSgp
LmlzSW5Cb3VuZHNTYW5lQ2hhaW4oKSkKICAgICAgICAgICAgICAgICBzZXROb25DZWxsVHlwZUZv
ck5vZGUobm9kZSwgU3BlY0J5dGVjb2RlRG91YmxlKTsKKyAgICAgICAgICAgIGVsc2UgaWYgKG5v
ZGUtPmFycmF5TW9kZSgpLmlzT3V0T2ZCb3VuZHNTYW5lQ2hhaW4oKSkgeworICAgICAgICAgICAg
ICAgIGlmICghIShub2RlLT5mbGFncygpICYgTm9kZUJ5dGVjb2RlVXNlc0FzT3RoZXIpKQorICAg
ICAgICAgICAgICAgICAgICBzZXROb25DZWxsVHlwZUZvck5vZGUobm9kZSwgU3BlY0J5dGVjb2Rl
RG91YmxlIHwgU3BlY090aGVyKTsKKyAgICAgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAg
ICAgICAgIHNldE5vbkNlbGxUeXBlRm9yTm9kZShub2RlLCBTcGVjQnl0ZWNvZGVEb3VibGUpOwor
ICAgICAgICAgICAgfQogICAgICAgICAgICAgZWxzZQogICAgICAgICAgICAgICAgIHNldE5vbkNl
bGxUeXBlRm9yTm9kZShub2RlLCBTcGVjRG91YmxlUmVhbCk7CiAgICAgICAgICAgICBicmVhazsK
ICAgICAgICAgY2FzZSBBcnJheTo6Q29udGlndW91czoKICAgICAgICAgY2FzZSBBcnJheTo6QXJy
YXlTdG9yYWdlOgogICAgICAgICBjYXNlIEFycmF5OjpTbG93UHV0QXJyYXlTdG9yYWdlOgotICAg
ICAgICAgICAgaWYgKG5vZGUtPmFycmF5TW9kZSgpLmlzT3V0T2ZCb3VuZHMoKSkKKyAgICAgICAg
ICAgIGlmIChub2RlLT5hcnJheU1vZGUoKS5pc0VmZmVjdGZ1bE91dE9mQm91bmRzKCkpCiAgICAg
ICAgICAgICAgICAgY2xvYmJlcldvcmxkKCk7CiAgICAgICAgICAgICBtYWtlSGVhcFRvcEZvck5v
ZGUobm9kZSk7CiAgICAgICAgICAgICBicmVhazsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHQXJyYXlNb2RlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR0FycmF5TW9kZS5jcHAJKHJldmlzaW9uIDI2NTYzNykKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHQXJyYXlNb2RlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjYwLDcg
KzI2MCw3IEBAIEFycmF5TW9kZSBBcnJheU1vZGU6OnJlZmluZSgKICAgICAgICAgICAgIGdyYXBo
LnJlZ2lzdGVyQW5kV2F0Y2hTdHJ1Y3R1cmVUcmFuc2l0aW9uKGFycmF5UHJvdG90eXBlU3RydWN0
dXJlKTsKICAgICAgICAgICAgIGdyYXBoLnJlZ2lzdGVyQW5kV2F0Y2hTdHJ1Y3R1cmVUcmFuc2l0
aW9uKG9iamVjdFByb3RvdHlwZVN0cnVjdHVyZSk7CiAgICAgICAgICAgICBpZiAoZ2xvYmFsT2Jq
ZWN0LT5hcnJheVByb3RvdHlwZUNoYWluSXNTYW5lKCkpCi0gICAgICAgICAgICAgICAgcmV0dXJu
IHdpdGhTcGVjdWxhdGlvbihBcnJheTo6U2FuZUNoYWluKTsKKyAgICAgICAgICAgICAgICByZXR1
cm4gd2l0aFNwZWN1bGF0aW9uKEFycmF5OjpJbkJvdW5kc1NhbmVDaGFpbik7CiAgICAgICAgIH0K
ICAgICAgICAgcmV0dXJuIEFycmF5TW9kZShBcnJheTo6R2VuZXJpYywgYWN0aW9uKCkpOwogICAg
IH0KQEAgLTcxMywxNCArNzEzLDE2IEBAIGNvbnN0IGNoYXIqIGFycmF5Q2xhc3NUb1N0cmluZyhB
cnJheTo6Q2wKIGNvbnN0IGNoYXIqIGFycmF5U3BlY3VsYXRpb25Ub1N0cmluZyhBcnJheTo6U3Bl
Y3VsYXRpb24gc3BlY3VsYXRpb24pCiB7CiAgICAgc3dpdGNoIChzcGVjdWxhdGlvbikgewotICAg
IGNhc2UgQXJyYXk6OlNhbmVDaGFpbjoKLSAgICAgICAgcmV0dXJuICJTYW5lQ2hhaW4iOworICAg
IGNhc2UgQXJyYXk6OkluQm91bmRzU2FuZUNoYWluOgorICAgICAgICByZXR1cm4gIkluQm91bmRz
U2FuZUNoYWluIjsKICAgICBjYXNlIEFycmF5OjpJbkJvdW5kczoKICAgICAgICAgcmV0dXJuICJJ
bkJvdW5kcyI7CiAgICAgY2FzZSBBcnJheTo6VG9Ib2xlOgogICAgICAgICByZXR1cm4gIlRvSG9s
ZSI7CiAgICAgY2FzZSBBcnJheTo6T3V0T2ZCb3VuZHM6CiAgICAgICAgIHJldHVybiAiT3V0T2ZC
b3VuZHMiOworICAgIGNhc2UgQXJyYXk6Ok91dE9mQm91bmRzU2FuZUNoYWluOgorICAgICAgICBy
ZXR1cm4gIk91dE9mQm91bmRzU2FuZUNoYWluIjsKICAgICBkZWZhdWx0OgogICAgICAgICByZXR1
cm4gIlVua25vd24hIjsKICAgICB9CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R0FycmF5TW9kZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
QXJyYXlNb2RlLmgJKHJldmlzaW9uIDI2NTYzNykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHQXJyYXlNb2RlLmgJKHdvcmtpbmcgY29weSkKQEAgLTg5LDEwICs4OSwxMSBAQCBlbnVt
IENsYXNzIDogdWludDhfdCB7CiB9OwogCiBlbnVtIFNwZWN1bGF0aW9uIDogdWludDhfdCB7Ci0g
ICAgU2FuZUNoYWluLCAvLyBJbiBib3VuZHMgYW5kIHRoZSBhcnJheSBwcm90b3R5cGUgY2hhaW4g
aXMgc3RpbGwgaW50YWN0LCBpLmUuIGxvYWRpbmcgYSBob2xlIGRvZXNuJ3QgcmVxdWlyZSBzcGVj
aWFsIHRyZWF0bWVudC4KKyAgICBJbkJvdW5kc1NhbmVDaGFpbiwgLy8gSW4gYm91bmRzIGFuZCB0
aGUgYXJyYXkgcHJvdG90eXBlIGNoYWluIGlzIHN0aWxsIGludGFjdCwgaS5lLiBsb2FkaW5nIGEg
aG9sZSBkb2Vzbid0IHJlcXVpcmUgc3BlY2lhbCB0cmVhdG1lbnQuCiAgICAgCiAgICAgSW5Cb3Vu
ZHMsIC8vIEluIGJvdW5kcyBhbmQgbm90IGxvYWRpbmcgYSBob2xlLgogICAgIFRvSG9sZSwgLy8g
UG90ZW50aWFsbHkgc3RvcmluZyB0byBhIGhvbGUuCisgICAgT3V0T2ZCb3VuZHNTYW5lQ2hhaW4s
IC8vIE91dC1vZi1ib3VuZHMgYWNjZXNzLCBidXQgc2FuZSBjaGFpbiwgc28gdGhlcmUgYXJlIG5v
IGFyYml0cmFyeSBlZmZlY3RzLiBFLmcsIGxvYWRpbmcgb3V0IG9mIGJvdW5kcyBkb2Vzbid0IHJl
cXVpcmUgdHJhdmVyc2luZyB0aGUgcHJvdG90eXBlIGNoYWluIGlmIHdlJ3JlIGFuIG9yaWdpbmFs
IGFycmF5IHN0cnVjdHVyZS4KICAgICBPdXRPZkJvdW5kcyAvLyBPdXQtb2YtYm91bmRzIGFjY2Vz
cyBhbmQgYW55dGhpbmcgY2FuIGhhcHBlbi4KIH07CiBlbnVtIENvbnZlcnNpb24gOiB1aW50OF90
IHsKQEAgLTI3NiwxNSArMjc3LDMwIEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIGFycmF5Q2xh
c3MoKSA9PSBBcnJheTo6T3JpZ2luYWxBcnJheSB8fCBhcnJheUNsYXNzKCkgPT0gQXJyYXk6Ok9y
aWdpbmFsQ29weU9uV3JpdGVBcnJheTsKICAgICB9CiAgICAgCi0gICAgYm9vbCBpc1NhbmVDaGFp
bigpIGNvbnN0CisgICAgYm9vbCBpc0luQm91bmRzU2FuZUNoYWluKCkgY29uc3QKICAgICB7Ci0g
ICAgICAgIHJldHVybiBzcGVjdWxhdGlvbigpID09IEFycmF5OjpTYW5lQ2hhaW47CisgICAgICAg
IHJldHVybiBzcGVjdWxhdGlvbigpID09IEFycmF5OjpJbkJvdW5kc1NhbmVDaGFpbjsKKyAgICB9
CisKKyAgICBib29sIGlzT3V0T2ZCb3VuZHNTYW5lQ2hhaW4oKSBjb25zdAorICAgIHsKKyAgICAg
ICAgcmV0dXJuIHNwZWN1bGF0aW9uKCkgPT0gQXJyYXk6Ok91dE9mQm91bmRzU2FuZUNoYWluOwor
ICAgIH0KKyAgICAKKyAgICBib29sIGlzT3V0T2ZCb3VuZHMoKSBjb25zdAorICAgIHsKKyAgICAg
ICAgcmV0dXJuIHNwZWN1bGF0aW9uKCkgPT0gQXJyYXk6Ok91dE9mQm91bmRzIHx8IHNwZWN1bGF0
aW9uKCkgPT0gQXJyYXk6Ok91dE9mQm91bmRzU2FuZUNoYWluOworICAgIH0KKworICAgIGJvb2wg
aXNFZmZlY3RmdWxPdXRPZkJvdW5kcygpIGNvbnN0CisgICAgeworICAgICAgICByZXR1cm4gc3Bl
Y3VsYXRpb24oKSA9PSBBcnJheTo6T3V0T2ZCb3VuZHM7CiAgICAgfQogICAgIAogICAgIGJvb2wg
aXNJbkJvdW5kcygpIGNvbnN0CiAgICAgewogICAgICAgICBzd2l0Y2ggKHNwZWN1bGF0aW9uKCkp
IHsKLSAgICAgICAgY2FzZSBBcnJheTo6U2FuZUNoYWluOgorICAgICAgICBjYXNlIEFycmF5OjpJ
bkJvdW5kc1NhbmVDaGFpbjoKICAgICAgICAgY2FzZSBBcnJheTo6SW5Cb3VuZHM6CiAgICAgICAg
ICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAgZGVmYXVsdDoKQEAgLTI5NywxMSArMzEzLDYgQEAg
cHVibGljOgogICAgICAgICByZXR1cm4gIWlzSW5Cb3VuZHMoKTsKICAgICB9CiAgICAgCi0gICAg
Ym9vbCBpc091dE9mQm91bmRzKCkgY29uc3QKLSAgICB7Ci0gICAgICAgIHJldHVybiBzcGVjdWxh
dGlvbigpID09IEFycmF5OjpPdXRPZkJvdW5kczsKLSAgICB9Ci0gICAgCiAgICAgYm9vbCBpc1Ns
b3dQdXQoKSBjb25zdAogICAgIHsKICAgICAgICAgcmV0dXJuIHR5cGUoKSA9PSBBcnJheTo6U2xv
d1B1dEFycmF5U3RvcmFnZTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ1NF
UGhhc2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ1NF
UGhhc2UuY3BwCShyZXZpc2lvbiAyNjU2MzcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR0NTRVBoYXNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTUwLDcgKzU1MCw3IEBAIHByaXZh
dGU6CiAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlIEFycmF5OjpEb3VibGU6IHsKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBpZiAoIW1vZGUuaXNJbkJvdW5kcygpKQogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBMb2NhdGlvbktpbmQga2luZCA9IG1vZGUuaXNTYW5lQ2hhaW4oKSA/IEluZGV4ZWRQcm9wZXJ0
eURvdWJsZVNhbmVDaGFpbkxvYyA6IEluZGV4ZWRQcm9wZXJ0eURvdWJsZUxvYzsKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBMb2NhdGlvbktpbmQga2luZCA9IG1vZGUuaXNJbkJvdW5kc1Nh
bmVDaGFpbigpID8gSW5kZXhlZFByb3BlcnR5RG91YmxlU2FuZUNoYWluTG9jIDogSW5kZXhlZFBy
b3BlcnR5RG91YmxlTG9jOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhlYXAgPSBIZWFw
TG9jYXRpb24oa2luZCwgSW5kZXhlZERvdWJsZVByb3BlcnRpZXMsIGJhc2UsIGluZGV4KTsKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICAgICAg
IH0KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ2xvYmJlcml6ZS5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ2xvYmJlcml6ZS5oCShyZXZp
c2lvbiAyNjU2MzcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Nsb2JiZXJpemUu
aAkod29ya2luZyBjb3B5KQpAQCAtOTI5LDcgKzkyOSw3IEBAIHZvaWQgY2xvYmJlcml6ZShHcmFw
aCYgZ3JhcGgsIE5vZGUqIG5vZGUKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgIAog
ICAgICAgICBjYXNlIEFycmF5OjpJbnQzMjoKLSAgICAgICAgICAgIGlmIChtb2RlLmlzSW5Cb3Vu
ZHMoKSkgeworICAgICAgICAgICAgaWYgKG1vZGUuaXNJbkJvdW5kcygpIHx8IG1vZGUuaXNPdXRP
ZkJvdW5kc1NhbmVDaGFpbigpKSB7CiAgICAgICAgICAgICAgICAgcmVhZChCdXR0ZXJmbHlfcHVi
bGljTGVuZ3RoKTsKICAgICAgICAgICAgICAgICByZWFkKEluZGV4ZWRJbnQzMlByb3BlcnRpZXMp
OwogICAgICAgICAgICAgICAgIGRlZihIZWFwTG9jYXRpb24oaW5kZXhlZFByb3BlcnR5TG9jLCBJ
bmRleGVkSW50MzJQcm9wZXJ0aWVzLCBncmFwaC52YXJBcmdDaGlsZChub2RlLCAwKSwgZ3JhcGgu
dmFyQXJnQ2hpbGQobm9kZSwgMSkpLCBMYXp5Tm9kZShub2RlKSk7CkBAIC05MzksMTAgKzkzOSwx
MCBAQCB2b2lkIGNsb2JiZXJpemUoR3JhcGgmIGdyYXBoLCBOb2RlKiBub2RlCiAgICAgICAgICAg
ICByZXR1cm47CiAgICAgICAgICAgICAKICAgICAgICAgY2FzZSBBcnJheTo6RG91YmxlOgotICAg
ICAgICAgICAgaWYgKG1vZGUuaXNJbkJvdW5kcygpKSB7CisgICAgICAgICAgICBpZiAobW9kZS5p
c0luQm91bmRzKCkgfHwgbW9kZS5pc091dE9mQm91bmRzU2FuZUNoYWluKCkpIHsKICAgICAgICAg
ICAgICAgICByZWFkKEJ1dHRlcmZseV9wdWJsaWNMZW5ndGgpOwogICAgICAgICAgICAgICAgIHJl
YWQoSW5kZXhlZERvdWJsZVByb3BlcnRpZXMpOwotICAgICAgICAgICAgICAgIExvY2F0aW9uS2lu
ZCBraW5kID0gbW9kZS5pc1NhbmVDaGFpbigpID8gSW5kZXhlZFByb3BlcnR5RG91YmxlU2FuZUNo
YWluTG9jIDogSW5kZXhlZFByb3BlcnR5RG91YmxlTG9jOworICAgICAgICAgICAgICAgIExvY2F0
aW9uS2luZCBraW5kID0gbW9kZS5pc0luQm91bmRzU2FuZUNoYWluKCkgPyBJbmRleGVkUHJvcGVy
dHlEb3VibGVTYW5lQ2hhaW5Mb2MgOiBJbmRleGVkUHJvcGVydHlEb3VibGVMb2M7CiAgICAgICAg
ICAgICAgICAgZGVmKEhlYXBMb2NhdGlvbihraW5kLCBJbmRleGVkRG91YmxlUHJvcGVydGllcywg
Z3JhcGgudmFyQXJnQ2hpbGQobm9kZSwgMCksIGdyYXBoLnZhckFyZ0NoaWxkKG5vZGUsIDEpKSwg
TGF6eU5vZGUobm9kZSkpOwogICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgIH0K
QEAgLTk1MCw3ICs5NTAsNyBAQCB2b2lkIGNsb2JiZXJpemUoR3JhcGgmIGdyYXBoLCBOb2RlKiBu
b2RlCiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgICAKICAgICAgICAgY2FzZSBBcnJh
eTo6Q29udGlndW91czoKLSAgICAgICAgICAgIGlmIChtb2RlLmlzSW5Cb3VuZHMoKSkgeworICAg
ICAgICAgICAgaWYgKG1vZGUuaXNJbkJvdW5kcygpIHx8IG1vZGUuaXNPdXRPZkJvdW5kc1NhbmVD
aGFpbigpKSB7CiAgICAgICAgICAgICAgICAgcmVhZChCdXR0ZXJmbHlfcHVibGljTGVuZ3RoKTsK
ICAgICAgICAgICAgICAgICByZWFkKEluZGV4ZWRDb250aWd1b3VzUHJvcGVydGllcyk7CiAgICAg
ICAgICAgICAgICAgZGVmKEhlYXBMb2NhdGlvbihpbmRleGVkUHJvcGVydHlMb2MsIEluZGV4ZWRD
b250aWd1b3VzUHJvcGVydGllcywgZ3JhcGgudmFyQXJnQ2hpbGQobm9kZSwgMCksIGdyYXBoLnZh
ckFyZ0NoaWxkKG5vZGUsIDEpKSwgTGF6eU5vZGUobm9kZSkpOwpJbmRleDogU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdGaXh1cFBoYXNlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR0ZpeHVwUGhhc2UuY3BwCShyZXZpc2lvbiAyNjU2MzcpCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0ZpeHVwUGhhc2UuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC0xMDU5LDIwICsxMDU5LDI0IEBAIHByaXZhdGU6CiAgICAgICAgICAgICBzd2l0Y2ggKGFy
cmF5TW9kZS50eXBlKCkpIHsKICAgICAgICAgICAgIGNhc2UgQXJyYXk6OkNvbnRpZ3VvdXM6CiAg
ICAgICAgICAgICBjYXNlIEFycmF5OjpEb3VibGU6Ci0gICAgICAgICAgICAgICAgaWYgKGFycmF5
TW9kZS5pc0pTQXJyYXlXaXRoT3JpZ2luYWxTdHJ1Y3R1cmUoKSAmJiBhcnJheU1vZGUuc3BlY3Vs
YXRpb24oKSA9PSBBcnJheTo6SW5Cb3VuZHMpIHsKLSAgICAgICAgICAgICAgICAgICAgLy8gQ2hl
Y2sgaWYgU2FuZUNoYWluIHdpbGwgd29yayBvbiBhIHBlci10eXBlIGJhc2lzLiBOb3RlIHRoYXQ6
CisgICAgICAgICAgICBjYXNlIEFycmF5OjpJbnQzMjogeworICAgICAgICAgICAgICAgIE9wdGlv
bmFsPEFycmF5OjpTcGVjdWxhdGlvbj4gc2FuZUNoYWluU3BlY3VsYXRpb247CisgICAgICAgICAg
ICAgICAgaWYgKGFycmF5TW9kZS5pc0pTQXJyYXlXaXRoT3JpZ2luYWxTdHJ1Y3R1cmUoKSkgewor
ICAgICAgICAgICAgICAgICAgICAvLyBDaGVjayBpZiBJbkJvdW5kc1NhbmVDaGFpbiB3aWxsIHdv
cmsgb24gYSBwZXItdHlwZSBiYXNpcy4gTm90ZSB0aGF0OgogICAgICAgICAgICAgICAgICAgICAv
LwogICAgICAgICAgICAgICAgICAgICAvLyAxKSBXZSBkb24ndCB3YW50IGRvdWJsZSBhcnJheXMg
dG8gc29tZXRpbWVzIHJldHVybiB1bmRlZmluZWQsIHNpbmNlCiAgICAgICAgICAgICAgICAgICAg
IC8vIHRoYXQgd291bGQgcmVxdWlyZSBhIGNoYW5nZSB0byB0aGUgcmV0dXJuIHR5cGUgYW5kIGl0
IHdvdWxkIHBlc3NpbWlzZQogICAgICAgICAgICAgICAgICAgICAvLyB0aGluZ3MgYSBsb3QuIFNv
LCB3ZSdkIG9ubHkgd2FudCB0byBkbyB0aGF0IGlmIHdlIGFjdHVhbGx5IGhhZAogICAgICAgICAg
ICAgICAgICAgICAvLyBldmlkZW5jZSB0aGF0IHdlIGNvdWxkIHJlYWQgZnJvbSBhIGhvbGUuIFRo
YXQncyBwcmV0dHkgYW5ub3lpbmcuCiAgICAgICAgICAgICAgICAgICAgIC8vIExpa2VseSB0aGUg
YmVzdCB3YXkgdG8gaGFuZGxlIHRoYXQgY2FzZSBpcyB3aXRoIGFuIGVxdWl2YWxlbnQgb2YKLSAg
ICAgICAgICAgICAgICAgICAgLy8gU2FuZUNoYWluIGZvciBPdXRPZkJvdW5kcy4gRm9yIG5vdyB3
ZSBqdXN0IGRldGVjdCB3aGVuIFVuZGVmaW5lZCBhbmQKKyAgICAgICAgICAgICAgICAgICAgLy8g
SW5Cb3VuZHNTYW5lQ2hhaW4gZm9yIE91dE9mQm91bmRzLiBGb3Igbm93IHdlIGp1c3QgZGV0ZWN0
IHdoZW4gVW5kZWZpbmVkIGFuZAogICAgICAgICAgICAgICAgICAgICAvLyBOYU4gYXJlIGluZGlz
dGluZ3Vpc2hhYmxlIGFjY29yZGluZyB0byBiYWNrd2FyZHMgcHJvcGFnYXRpb24sIGFuZCBqdXN0
Ci0gICAgICAgICAgICAgICAgICAgIC8vIHVzZSBTYW5lQ2hhaW4gaW4gdGhhdCBjYXNlLiBUaGlz
IGhhcHBlbnMgdG8gY2F0Y2ggYSBsb3Qgb2YgY2FzZXMuCisgICAgICAgICAgICAgICAgICAgIC8v
IHVzZSBJbkJvdW5kc1NhbmVDaGFpbiBpbiB0aGF0IGNhc2UuIFRoaXMgaGFwcGVucyB0byBjYXRj
aCBhIGxvdCBvZiBjYXNlcy4KICAgICAgICAgICAgICAgICAgICAgLy8KICAgICAgICAgICAgICAg
ICAgICAgLy8gMikgV2UgZG9uJ3Qgd2FudCBpbnQzMiBhcnJheSBsb2FkcyB0byBoYXZlIHRvIGRv
IGEgaG9sZSBjaGVjayBqdXN0IHRvCi0gICAgICAgICAgICAgICAgICAgIC8vIGNvZXJjZSB0byBV
bmRlZmluZWQsIHNpbmNlIHRoYXQgd291bGQgbWVhbiB0d2ljZSB0aGUgY2hlY2tzLgorICAgICAg
ICAgICAgICAgICAgICAvLyBjb2VyY2UgdG8gVW5kZWZpbmVkLCBzaW5jZSB0aGF0IHdvdWxkIG1l
YW4gdHdpY2UgdGhlIGNoZWNrcy4gV2Ugd2FudCB0bworICAgICAgICAgICAgICAgICAgICAvLyBi
ZSBhYmxlIHRvIHNheSB3ZSBhbHdheXMgcmV0dXJuIEludDMyLiBGSVhNRTogTWF5YmUgdGhpcyBz
aG91bGQgYmUgcHJvZmlsaW5nCisgICAgICAgICAgICAgICAgICAgIC8vIGJhc2VkPwogICAgICAg
ICAgICAgICAgICAgICAvLwogICAgICAgICAgICAgICAgICAgICAvLyBUaGlzIGhhcyB0d28gaW1w
bGljYXRpb25zLiBGaXJzdCwgd2UgaGF2ZSB0byBkbyBtb3JlIGNoZWNrcyB0aGFuIHdlJ2QKICAg
ICAgICAgICAgICAgICAgICAgLy8gbGlrZS4gSXQncyB1bmZvcnR1bmF0ZSB0aGF0IHdlIGhhdmUg
dG8gZG8gdGhlIGhvbGUgY2hlY2suIFNlY29uZCwKQEAgLTEwODAsMzIgKzEwODQsNDEgQEAgcHJp
dmF0ZToKICAgICAgICAgICAgICAgICAgICAgLy8gb3V0LW9mLWJvdW5kcyBzbG93IHBhdGguIFdl
IGNhbiBmaXggdGhhdCB3aXRoOgogICAgICAgICAgICAgICAgICAgICAvLyBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTQ0NjY4CiAgICAgICAgICAgICAgICAgICAgIAot
ICAgICAgICAgICAgICAgICAgICBib29sIGNhbkRvU2FuZUNoYWluID0gZmFsc2U7CiAgICAgICAg
ICAgICAgICAgICAgIHN3aXRjaCAoYXJyYXlNb2RlLnR5cGUoKSkgeworICAgICAgICAgICAgICAg
ICAgICBjYXNlIEFycmF5OjpJbnQzMjoKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIChhcnJh
eU1vZGUuc3BlY3VsYXRpb24oKSA9PSBBcnJheTo6T3V0T2ZCb3VuZHMgJiYgIW1fZ3JhcGguaGFz
RXhpdFNpdGUobm9kZS0+b3JpZ2luLnNlbWFudGljLCBOZWdhdGl2ZUluZGV4KSkKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBzYW5lQ2hhaW5TcGVjdWxhdGlvbiA9IEFycmF5OjpPdXRPZkJv
dW5kc1NhbmVDaGFpbjsKKyAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAg
ICAgICAgICAgICBjYXNlIEFycmF5OjpDb250aWd1b3VzOgogICAgICAgICAgICAgICAgICAgICAg
ICAgLy8gVGhpcyBpcyBoYXBwZW5zIHRvIGJlIGVudGlyZWx5IG5hdHVyYWwuIFdlIGFscmVhZHkg
d291bGQgaGF2ZQogICAgICAgICAgICAgICAgICAgICAgICAgLy8gcmV0dXJuZWQgYW55IEpTVmFs
dWUsIGFuZCBub3cgd2UnbGwgcmV0dXJuIFVuZGVmaW5lZC4gV2Ugc3RpbGwgZG8KICAgICAgICAg
ICAgICAgICAgICAgICAgIC8vIHRoZSBjaGVjayBidXQgaXQgZG9lc24ndCByZXF1aXJlIHRha2lu
ZyBhbnkga2luZCBvZiBzbG93IHBhdGguCi0gICAgICAgICAgICAgICAgICAgICAgICBjYW5Eb1Nh
bmVDaGFpbiA9IHRydWU7CisgICAgICAgICAgICAgICAgICAgICAgICBpZiAoYXJyYXlNb2RlLnNw
ZWN1bGF0aW9uKCkgPT0gQXJyYXk6Ok91dE9mQm91bmRzICYmICFtX2dyYXBoLmhhc0V4aXRTaXRl
KG5vZGUtPm9yaWdpbi5zZW1hbnRpYywgTmVnYXRpdmVJbmRleCkpCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgc2FuZUNoYWluU3BlY3VsYXRpb24gPSBBcnJheTo6T3V0T2ZCb3VuZHNTYW5l
Q2hhaW47CisgICAgICAgICAgICAgICAgICAgICAgICBlbHNlIGlmIChhcnJheU1vZGUuc3BlY3Vs
YXRpb24oKSA9PSBBcnJheTo6SW5Cb3VuZHMpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
c2FuZUNoYWluU3BlY3VsYXRpb24gPSBBcnJheTo6SW5Cb3VuZHNTYW5lQ2hhaW47CiAgICAgICAg
ICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAg
ICAgICAgICAgICAgICBjYXNlIEFycmF5OjpEb3VibGU6Ci0gICAgICAgICAgICAgICAgICAgICAg
ICBpZiAoIShub2RlLT5mbGFncygpICYgTm9kZUJ5dGVjb2RlVXNlc0FzT3RoZXIpKSB7CisgICAg
ICAgICAgICAgICAgICAgICAgICBpZiAoIShub2RlLT5mbGFncygpICYgTm9kZUJ5dGVjb2RlVXNl
c0FzT3RoZXIpICYmIGFycmF5TW9kZS5zcGVjdWxhdGlvbigpID09IEFycmF5OjpJbkJvdW5kcykg
ewogICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIEhvbGVzIGxvb2sgbGlrZSBOYU4gYWxy
ZWFkeSwgc28gaWYgdGhlIHVzZXIgZG9lc24ndCBjYXJlCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgLy8gYWJvdXQgdGhlIGRpZmZlcmVuY2UgYmV0d2VlbiBVbmRlZmluZWQgYW5kIE5hTiB0
aGVuIHdlIGNhbgogICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGRvIHRoaXMuCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgY2FuRG9TYW5lQ2hhaW4gPSB0cnVlOwotICAgICAgICAg
ICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNhbmVDaGFpblNw
ZWN1bGF0aW9uID0gQXJyYXk6OkluQm91bmRzU2FuZUNoYWluOworICAgICAgICAgICAgICAgICAg
ICAgICAgfSBlbHNlIGlmIChhcnJheU1vZGUuc3BlY3VsYXRpb24oKSA9PSBBcnJheTo6T3V0T2ZC
b3VuZHMgJiYgIW1fZ3JhcGguaGFzRXhpdFNpdGUobm9kZS0+b3JpZ2luLnNlbWFudGljLCBOZWdh
dGl2ZUluZGV4KSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBzYW5lQ2hhaW5TcGVjdWxh
dGlvbiA9IEFycmF5OjpPdXRPZkJvdW5kc1NhbmVDaGFpbjsKICAgICAgICAgICAgICAgICAgICAg
ICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAg
IGRlZmF1bHQ6CiAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAg
ICAgICAgfQotICAgICAgICAgICAgICAgICAgICAKLSAgICAgICAgICAgICAgICAgICAgaWYgKGNh
bkRvU2FuZUNoYWluKQotICAgICAgICAgICAgICAgICAgICAgICAgc2V0U2FuZUNoYWluSWZQb3Nz
aWJsZShub2RlKTsKICAgICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAgICBpZiAoc2Fu
ZUNoYWluU3BlY3VsYXRpb24pCisgICAgICAgICAgICAgICAgICAgIHNldFNhbmVDaGFpbklmUG9z
c2libGUobm9kZSwgKnNhbmVDaGFpblNwZWN1bGF0aW9uKTsKKwogICAgICAgICAgICAgICAgIGJy
ZWFrOworICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgY2FzZSBB
cnJheTo6U3RyaW5nOgogICAgICAgICAgICAgICAgIGlmICgobm9kZS0+cHJlZGljdGlvbigpICYg
flNwZWNTdHJpbmcpCkBAIC0yMjAyLDcgKzIyMTUsNyBAQCBwcml2YXRlOgogICAgICAgICAgICAg
Ly8gRklYTUU6IE91dE9mQm91bmRzIHNob3VsZG4ndCBwcmVjbHVkZSBnb2luZyBzYW5lIGNoYWlu
IGJlY2F1c2UgT09CIGlzIGp1c3QgZmFsc2UgYW5kIGNhbm5vdCBoYXZlIGVmZmVjdHMuCiAgICAg
ICAgICAgICAvLyBTZWU6IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0y
MDk0NTYKICAgICAgICAgICAgIGlmIChhcnJheU1vZGUuaXNKU0FycmF5V2l0aE9yaWdpbmFsU3Ry
dWN0dXJlKCkgJiYgYXJyYXlNb2RlLnNwZWN1bGF0aW9uKCkgPT0gQXJyYXk6OkluQm91bmRzKQot
ICAgICAgICAgICAgICAgIHNldFNhbmVDaGFpbklmUG9zc2libGUobm9kZSk7CisgICAgICAgICAg
ICAgICAgc2V0U2FuZUNoYWluSWZQb3NzaWJsZShub2RlLCBBcnJheTo6SW5Cb3VuZHNTYW5lQ2hh
aW4pOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAgICAgICAgY2FzZSBHZXREaXJl
Y3RQbmFtZTogewpAQCAtMzUwOSw3ICszNTIyLDcgQEAgcHJpdmF0ZToKICAgICAgICAgICAgIG1f
aW5zZXJ0aW9uU2V0Lmluc2VydE5vZGUoCiAgICAgICAgICAgICAgICAgbV9pbmRleEluQmxvY2ss
IFNwZWNOb25lLCBDaGVjaywgb3JpZ2luLCBFZGdlKGFycmF5LCBTdHJpbmdVc2UpKTsKICAgICAg
ICAgfSBlbHNlIHsKLSAgICAgICAgICAgIC8vIE5vdGUgdGhhdCB3ZSBvbmx5IG5lZWQgdG8gYmUg
dXNpbmcgYSBzdHJ1Y3R1cmUgY2hlY2sgaWYgd2Ugb3B0IGZvciBTYW5lQ2hhaW4sIHNpbmNlCisg
ICAgICAgICAgICAvLyBOb3RlIHRoYXQgd2Ugb25seSBuZWVkIHRvIGJlIHVzaW5nIGEgc3RydWN0
dXJlIGNoZWNrIGlmIHdlIG9wdCBmb3IgSW5Cb3VuZHNTYW5lQ2hhaW4sIHNpbmNlCiAgICAgICAg
ICAgICAvLyB0aGF0IG5lZWRzIHRvIHByb3RlY3QgYWdhaW5zdCBKU0FycmF5J3MgX19wcm90b19f
IGJlaW5nIGNoYW5nZWQuCiAgICAgICAgICAgICBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSA9IGFycmF5
TW9kZS5vcmlnaW5hbEFycmF5U3RydWN0dXJlKG1fZ3JhcGgsIG9yaWdpbi5zZW1hbnRpYyk7CiAg
ICAgICAgIApAQCAtMzU1MSw3ICszNTY0LDcgQEAgcHJpdmF0ZToKICAgICAgICAgICAgIE9wSW5m
byhhcnJheU1vZGUuYXNXb3JkKCkpLCBFZGdlKGFycmF5LCBLbm93bkNlbGxVc2UpKTsKICAgICB9
CiAKLSAgICB2b2lkIHNldFNhbmVDaGFpbklmUG9zc2libGUoTm9kZSogbm9kZSkKKyAgICB2b2lk
IHNldFNhbmVDaGFpbklmUG9zc2libGUoTm9kZSogbm9kZSwgQXJyYXk6OlNwZWN1bGF0aW9uIHNw
ZWN1bGF0aW9uKQogICAgIHsKICAgICAgICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCA9
IG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYyk7CiAgICAgICAg
IFN0cnVjdHVyZSogYXJyYXlQcm90b3R5cGVTdHJ1Y3R1cmUgPSBnbG9iYWxPYmplY3QtPmFycmF5
UHJvdG90eXBlKCktPnN0cnVjdHVyZSh2bSgpKTsKQEAgLTM1NjEsNyArMzU3NCw3IEBAIHByaXZh
dGU6CiAgICAgICAgICAgICAmJiBnbG9iYWxPYmplY3QtPmFycmF5UHJvdG90eXBlQ2hhaW5Jc1Nh
bmUoKSkgewogICAgICAgICAgICAgbV9ncmFwaC5yZWdpc3RlckFuZFdhdGNoU3RydWN0dXJlVHJh
bnNpdGlvbihhcnJheVByb3RvdHlwZVN0cnVjdHVyZSk7CiAgICAgICAgICAgICBtX2dyYXBoLnJl
Z2lzdGVyQW5kV2F0Y2hTdHJ1Y3R1cmVUcmFuc2l0aW9uKG9iamVjdFByb3RvdHlwZVN0cnVjdHVy
ZSk7Ci0gICAgICAgICAgICBub2RlLT5zZXRBcnJheU1vZGUobm9kZS0+YXJyYXlNb2RlKCkud2l0
aFNwZWN1bGF0aW9uKEFycmF5OjpTYW5lQ2hhaW4pKTsKKyAgICAgICAgICAgIG5vZGUtPnNldEFy
cmF5TW9kZShub2RlLT5hcnJheU1vZGUoKS53aXRoU3BlY3VsYXRpb24oc3BlY3VsYXRpb24pKTsK
ICAgICAgICAgICAgIG5vZGUtPmNsZWFyRmxhZ3MoTm9kZU11c3RHZW5lcmF0ZSk7CiAgICAgICAg
IH0KICAgICB9CkBAIC0zOTQzLDcgKzM5NTYsNyBAQCBwcml2YXRlOgogICAgICAgICAvLyBGSVhN
RTogT3V0T2ZCb3VuZHMgc2hvdWxkbid0IHByZWNsdWRlIGdvaW5nIHNhbmUgY2hhaW4gYmVjYXVz
ZSBPT0IgaXMganVzdCBmYWxzZSBhbmQgY2Fubm90IGhhdmUgZWZmZWN0cy4KICAgICAgICAgLy8g
U2VlOiBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjA5NDU2CiAgICAg
ICAgIGlmIChhcnJheU1vZGUuaXNKU0FycmF5V2l0aE9yaWdpbmFsU3RydWN0dXJlKCkgJiYgYXJy
YXlNb2RlLnNwZWN1bGF0aW9uKCkgPT0gQXJyYXk6OkluQm91bmRzKQotICAgICAgICAgICAgc2V0
U2FuZUNoYWluSWZQb3NzaWJsZShub2RlKTsKKyAgICAgICAgICAgIHNldFNhbmVDaGFpbklmUG9z
c2libGUobm9kZSwgQXJyYXk6OkluQm91bmRzU2FuZUNoYWluKTsKIAogICAgICAgICBmaXhFZGdl
PENlbGxVc2U+KG1fZ3JhcGgudmFyQXJnQ2hpbGQobm9kZSwgMCkpOwogICAgICAgICBmaXhFZGdl
PEludDMyVXNlPihtX2dyYXBoLnZhckFyZ0NoaWxkKG5vZGUsIDEpKTsKSW5kZXg6IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQzMl82NC5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDMyXzY0LmNwcAko
cmV2aXNpb24gMjY1NjM3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxh
dGl2ZUpJVDMyXzY0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjM2Niw3ICsyMzY2LDcgQEAgdm9p
ZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShOb2RlKiBub2RlKQogICAgICAgICAgICAgCiAgICAg
ICAgICAgICAgICAgR1BSVGVtcG9yYXJ5IHJlc3VsdFBheWxvYWQodGhpcyk7CiAgICAgICAgICAg
ICAgICAgaWYgKG5vZGUtPmFycmF5TW9kZSgpLnR5cGUoKSA9PSBBcnJheTo6SW50MzIpIHsKLSAg
ICAgICAgICAgICAgICAgICAgQVNTRVJUKCFub2RlLT5hcnJheU1vZGUoKS5pc1NhbmVDaGFpbigp
KTsKKyAgICAgICAgICAgICAgICAgICAgQVNTRVJUKCFub2RlLT5hcnJheU1vZGUoKS5pc0luQm91
bmRzU2FuZUNoYWluKCkpOwogICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAg
ICAgc3BlY3VsYXRpb25DaGVjaygKICAgICAgICAgICAgICAgICAgICAgICAgIE91dE9mQm91bmRz
LCBKU1ZhbHVlUmVncygpLCAwLApAQCAtMjM5Miw3ICsyMzkyLDcgQEAgdm9pZCBTcGVjdWxhdGl2
ZUpJVDo6Y29tcGlsZShOb2RlKiBub2RlKQogICAgICAgICAgICAgICAgICAgICBNYWNyb0Fzc2Vt
Ymxlcjo6QmFzZUluZGV4KAogICAgICAgICAgICAgICAgICAgICAgICAgc3RvcmFnZVJlZywgcHJv
cGVydHlSZWcsIE1hY3JvQXNzZW1ibGVyOjpUaW1lc0VpZ2h0LCBQYXlsb2FkT2Zmc2V0KSwKICAg
ICAgICAgICAgICAgICAgICAgcmVzdWx0UGF5bG9hZC5ncHIoKSk7Ci0gICAgICAgICAgICAgICAg
aWYgKG5vZGUtPmFycmF5TW9kZSgpLmlzU2FuZUNoYWluKCkpIHsKKyAgICAgICAgICAgICAgICBp
ZiAobm9kZS0+YXJyYXlNb2RlKCkuaXNJbkJvdW5kc1NhbmVDaGFpbigpKSB7CiAgICAgICAgICAg
ICAgICAgICAgIEpJVENvbXBpbGVyOjpKdW1wIG5vdEhvbGUgPSBtX2ppdC5icmFuY2hJZk5vdEVt
cHR5KHJlc3VsdFRhZy5ncHIoKSk7CiAgICAgICAgICAgICAgICAgICAgIG1faml0Lm1vdmUoVHJ1
c3RlZEltbTMyKEpTVmFsdWU6OlVuZGVmaW5lZFRhZyksIHJlc3VsdFRhZy5ncHIoKSk7CiAgICAg
ICAgICAgICAgICAgICAgIG1faml0Lm1vdmUoVHJ1c3RlZEltbTMyKDApLCByZXN1bHRQYXlsb2Fk
LmdwcigpKTsKQEAgLTI0NTMsNyArMjQ1Myw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBp
bGUoTm9kZSogbm9kZSkKICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgIEZQUlRlbXBvcmFy
eSByZXN1bHQodGhpcyk7CiAgICAgICAgICAgICAgICAgbV9qaXQubG9hZERvdWJsZShNYWNyb0Fz
c2VtYmxlcjo6QmFzZUluZGV4KHN0b3JhZ2VSZWcsIHByb3BlcnR5UmVnLCBNYWNyb0Fzc2VtYmxl
cjo6VGltZXNFaWdodCksIHJlc3VsdC5mcHIoKSk7Ci0gICAgICAgICAgICAgICAgaWYgKCFub2Rl
LT5hcnJheU1vZGUoKS5pc1NhbmVDaGFpbigpKQorICAgICAgICAgICAgICAgIGlmICghbm9kZS0+
YXJyYXlNb2RlKCkuaXNJbkJvdW5kc1NhbmVDaGFpbigpKQogICAgICAgICAgICAgICAgICAgICBz
cGVjdWxhdGlvbkNoZWNrKExvYWRGcm9tSG9sZSwgSlNWYWx1ZVJlZ3MoKSwgMCwgbV9qaXQuYnJh
bmNoSWZOYU4ocmVzdWx0LmZwcigpKSk7CiAgICAgICAgICAgICAgICAgZG91YmxlUmVzdWx0KHJl
c3VsdC5mcHIoKSwgbm9kZSk7CiAgICAgICAgICAgICAgICAgYnJlYWs7CkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHAJKHJldmlz
aW9uIDI2NTYzNykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVK
SVQ2NC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI3MzYsNyArMjczNiw3IEBAIHZvaWQgU3BlY3Vs
YXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSogbm9kZSkKICAgICAgICAgICAgICAgICBHUFJUZW1wb3Jh
cnkgcmVzdWx0KHRoaXMpOwogCiAgICAgICAgICAgICAgICAgbV9qaXQubG9hZDY0KE1hY3JvQXNz
ZW1ibGVyOjpCYXNlSW5kZXgoc3RvcmFnZVJlZywgcHJvcGVydHlSZWcsIE1hY3JvQXNzZW1ibGVy
OjpUaW1lc0VpZ2h0KSwgcmVzdWx0LmdwcigpKTsKLSAgICAgICAgICAgICAgICBpZiAobm9kZS0+
YXJyYXlNb2RlKCkuaXNTYW5lQ2hhaW4oKSkgeworICAgICAgICAgICAgICAgIGlmIChub2RlLT5h
cnJheU1vZGUoKS5pc0luQm91bmRzU2FuZUNoYWluKCkpIHsKICAgICAgICAgICAgICAgICAgICAg
QVNTRVJUKG5vZGUtPmFycmF5TW9kZSgpLnR5cGUoKSA9PSBBcnJheTo6Q29udGlndW91cyk7CiAg
ICAgICAgICAgICAgICAgICAgIEpJVENvbXBpbGVyOjpKdW1wIG5vdEhvbGUgPSBtX2ppdC5icmFu
Y2hJZk5vdEVtcHR5KHJlc3VsdC5ncHIoKSk7CiAgICAgICAgICAgICAgICAgICAgIG1faml0Lm1v
dmUoVHJ1c3RlZEltbTY0KEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKSksIHJlc3VsdC5n
cHIoKSk7CkBAIC0yNzY5LDEyICsyNzY5LDIxIEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBp
bGUoTm9kZSogbm9kZSkKICAgICAgICAgICAgIHNsb3dDYXNlcy5hcHBlbmQobV9qaXQuYnJhbmNo
MzIoTWFjcm9Bc3NlbWJsZXI6OkFib3ZlT3JFcXVhbCwgcHJvcGVydHlSZWcsIE1hY3JvQXNzZW1i
bGVyOjpBZGRyZXNzKHN0b3JhZ2VSZWcsIEJ1dHRlcmZseTo6b2Zmc2V0T2ZQdWJsaWNMZW5ndGgo
KSkpKTsKIAogICAgICAgICAgICAgbV9qaXQubG9hZDY0KE1hY3JvQXNzZW1ibGVyOjpCYXNlSW5k
ZXgoc3RvcmFnZVJlZywgcHJvcGVydHlSZWcsIE1hY3JvQXNzZW1ibGVyOjpUaW1lc0VpZ2h0KSwg
cmVzdWx0UmVnKTsKLSAgICAgICAgICAgIHNsb3dDYXNlcy5hcHBlbmQobV9qaXQuYnJhbmNoSWZF
bXB0eShyZXN1bHRSZWcpKTsKKworICAgICAgICAgICAgaWYgKG5vZGUtPmFycmF5TW9kZSgpLmlz
T3V0T2ZCb3VuZHNTYW5lQ2hhaW4oKSkgeworICAgICAgICAgICAgICAgIGF1dG8gZG9uZSA9IG1f
aml0LmJyYW5jaElmTm90RW1wdHkocmVzdWx0UmVnKTsKKyAgICAgICAgICAgICAgICBzbG93Q2Fz
ZXMubGluaygmbV9qaXQpOworICAgICAgICAgICAgICAgIHNwZWN1bGF0aW9uQ2hlY2soTmVnYXRp
dmVJbmRleCwgSlNWYWx1ZVJlZ3MoKSwgbnVsbHB0ciwgbV9qaXQuYnJhbmNoMzIoTWFjcm9Bc3Nl
bWJsZXI6Okxlc3NUaGFuLCBwcm9wZXJ0eVJlZywgQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tMzIo
MCkpKTsKKyAgICAgICAgICAgICAgICBtX2ppdC5tb3ZlKENDYWxsSGVscGVyczo6VHJ1c3RlZElt
bTY0KEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKSksIHJlc3VsdFJlZyk7CisgICAgICAg
ICAgICAgICAgZG9uZS5saW5rKCZtX2ppdCk7CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAg
ICAgICAgICAgIHNsb3dDYXNlcy5hcHBlbmQobV9qaXQuYnJhbmNoSWZFbXB0eShyZXN1bHRSZWcp
KTsKKyAgICAgICAgICAgICAgICBhZGRTbG93UGF0aEdlbmVyYXRvcigKKyAgICAgICAgICAgICAg
ICAgICAgc2xvd1BhdGhDYWxsKAorICAgICAgICAgICAgICAgICAgICAgICAgc2xvd0Nhc2VzLCB0
aGlzLCBvcGVyYXRpb25HZXRCeVZhbE9iamVjdEludCwKKyAgICAgICAgICAgICAgICAgICAgICAg
IHJlc3VsdC5ncHIoKSwgVHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIobV9ncmFwaCwgbV9ncmFw
aC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSksIGJhc2VSZWcsIHByb3Bl
cnR5UmVnKSk7CisgICAgICAgICAgICB9CiAgICAgICAgICAgICAKLSAgICAgICAgICAgIGFkZFNs
b3dQYXRoR2VuZXJhdG9yKAotICAgICAgICAgICAgICAgIHNsb3dQYXRoQ2FsbCgKLSAgICAgICAg
ICAgICAgICAgICAgc2xvd0Nhc2VzLCB0aGlzLCBvcGVyYXRpb25HZXRCeVZhbE9iamVjdEludCwK
LSAgICAgICAgICAgICAgICAgICAgcmVzdWx0LmdwcigpLCBUcnVzdGVkSW1tUHRyOjp3ZWFrUG9p
bnRlcihtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50
aWMpKSwgYmFzZVJlZywgcHJvcGVydHlSZWcpKTsKICAgICAgICAgICAgIAogICAgICAgICAgICAg
anNWYWx1ZVJlc3VsdChyZXN1bHRSZWcsIG5vZGUpOwogICAgICAgICAgICAgYnJlYWs7CkBAIC0y
Nzk3LDcgKzI4MDYsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlKE5vZGUqIG5vZGUp
CiAgICAgICAgICAgICAgICAgc3BlY3VsYXRpb25DaGVjayhPdXRPZkJvdW5kcywgSlNWYWx1ZVJl
Z3MoKSwgbnVsbHB0ciwgbV9qaXQuYnJhbmNoMzIoTWFjcm9Bc3NlbWJsZXI6OkFib3ZlT3JFcXVh
bCwgcHJvcGVydHlSZWcsIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKHN0b3JhZ2VSZWcsIEJ1dHRl
cmZseTo6b2Zmc2V0T2ZQdWJsaWNMZW5ndGgoKSkpKTsKIAogICAgICAgICAgICAgICAgIG1faml0
LmxvYWREb3VibGUoTWFjcm9Bc3NlbWJsZXI6OkJhc2VJbmRleChzdG9yYWdlUmVnLCBwcm9wZXJ0
eVJlZywgTWFjcm9Bc3NlbWJsZXI6OlRpbWVzRWlnaHQpLCByZXN1bHRSZWcpOwotICAgICAgICAg
ICAgICAgIGlmICghbm9kZS0+YXJyYXlNb2RlKCkuaXNTYW5lQ2hhaW4oKSkKKyAgICAgICAgICAg
ICAgICBpZiAoIW5vZGUtPmFycmF5TW9kZSgpLmlzSW5Cb3VuZHNTYW5lQ2hhaW4oKSkKICAgICAg
ICAgICAgICAgICAgICAgc3BlY3VsYXRpb25DaGVjayhMb2FkRnJvbUhvbGUsIEpTVmFsdWVSZWdz
KCksIG51bGxwdHIsIG1faml0LmJyYW5jaElmTmFOKHJlc3VsdFJlZykpOwogICAgICAgICAgICAg
ICAgIGRvdWJsZVJlc3VsdChyZXN1bHRSZWcsIG5vZGUpOwogICAgICAgICAgICAgICAgIGJyZWFr
OwpAQCAtMjgyNCwxMyArMjgzMywyNiBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlKE5v
ZGUqIG5vZGUpCiAgICAgICAgICAgICBzbG93Q2FzZXMuYXBwZW5kKG1faml0LmJyYW5jaDMyKE1h
Y3JvQXNzZW1ibGVyOjpBYm92ZU9yRXF1YWwsIHByb3BlcnR5UmVnLCBNYWNyb0Fzc2VtYmxlcjo6
QWRkcmVzcyhzdG9yYWdlUmVnLCBCdXR0ZXJmbHk6Om9mZnNldE9mUHVibGljTGVuZ3RoKCkpKSk7
CiAKICAgICAgICAgICAgIG1faml0LmxvYWREb3VibGUoTWFjcm9Bc3NlbWJsZXI6OkJhc2VJbmRl
eChzdG9yYWdlUmVnLCBwcm9wZXJ0eVJlZywgTWFjcm9Bc3NlbWJsZXI6OlRpbWVzRWlnaHQpLCB0
ZW1wUmVnKTsKLSAgICAgICAgICAgIHNsb3dDYXNlcy5hcHBlbmQobV9qaXQuYnJhbmNoSWZOYU4o
dGVtcFJlZykpOwotICAgICAgICAgICAgYm94RG91YmxlKHRlbXBSZWcsIHJlc3VsdFJlZyk7Ci0g
ICAgICAgICAgICAKLSAgICAgICAgICAgIGFkZFNsb3dQYXRoR2VuZXJhdG9yKAotICAgICAgICAg
ICAgICAgIHNsb3dQYXRoQ2FsbCgKLSAgICAgICAgICAgICAgICAgICAgc2xvd0Nhc2VzLCB0aGlz
LCBvcGVyYXRpb25HZXRCeVZhbE9iamVjdEludCwKLSAgICAgICAgICAgICAgICAgICAgcmVzdWx0
LmdwcigpLCBUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRlcihtX2dyYXBoLCBtX2dyYXBoLmdsb2Jh
bE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpKSwgYmFzZVJlZywgcHJvcGVydHlSZWcp
KTsKKyAgICAgICAgICAgIGlmIChub2RlLT5hcnJheU1vZGUoKS5pc091dE9mQm91bmRzU2FuZUNo
YWluKCkpIHsKKyAgICAgICAgICAgICAgICBpZiAoISEobm9kZS0+ZmxhZ3MoKSAmIE5vZGVCeXRl
Y29kZVVzZXNBc090aGVyKSkKKyAgICAgICAgICAgICAgICAgICAgc2xvd0Nhc2VzLmFwcGVuZCht
X2ppdC5icmFuY2hJZk5hTih0ZW1wUmVnKSk7CisgICAgICAgICAgICAgICAgYm94RG91YmxlKHRl
bXBSZWcsIHJlc3VsdFJlZyk7CisgICAgICAgICAgICAgICAgYXV0byBkb25lID0gbV9qaXQuanVt
cCgpOworICAgICAgICAgICAgICAgIHNsb3dDYXNlcy5saW5rKCZtX2ppdCk7CisgICAgICAgICAg
ICAgICAgc3BlY3VsYXRpb25DaGVjayhOZWdhdGl2ZUluZGV4LCBKU1ZhbHVlUmVncygpLCBudWxs
cHRyLCBtX2ppdC5icmFuY2gzMihNYWNyb0Fzc2VtYmxlcjo6TGVzc1RoYW4sIHByb3BlcnR5UmVn
LCBDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW0zMigwKSkpOworICAgICAgICAgICAgICAgIGlmICgh
IShub2RlLT5mbGFncygpICYgTm9kZUJ5dGVjb2RlVXNlc0FzT3RoZXIpKQorICAgICAgICAgICAg
ICAgICAgICBtX2ppdC5tb3ZlKENDYWxsSGVscGVyczo6VHJ1c3RlZEltbTY0KEpTVmFsdWU6OmVu
Y29kZShqc1VuZGVmaW5lZCgpKSksIHJlc3VsdFJlZyk7CisgICAgICAgICAgICAgICAgZWxzZQor
ICAgICAgICAgICAgICAgICAgICBtX2ppdC5tb3ZlKENDYWxsSGVscGVyczo6VHJ1c3RlZEltbTY0
KEpTVmFsdWU6OmVuY29kZShqc051bWJlcihQTmFOKSkpLCByZXN1bHRSZWcpOworICAgICAgICAg
ICAgICAgIGRvbmUubGluaygmbV9qaXQpOworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAg
ICAgICAgICBzbG93Q2FzZXMuYXBwZW5kKG1faml0LmJyYW5jaElmTmFOKHRlbXBSZWcpKTsKKyAg
ICAgICAgICAgICAgICBib3hEb3VibGUodGVtcFJlZywgcmVzdWx0UmVnKTsKKyAgICAgICAgICAg
ICAgICBhZGRTbG93UGF0aEdlbmVyYXRvcigKKyAgICAgICAgICAgICAgICAgICAgc2xvd1BhdGhD
YWxsKAorICAgICAgICAgICAgICAgICAgICAgICAgc2xvd0Nhc2VzLCB0aGlzLCBvcGVyYXRpb25H
ZXRCeVZhbE9iamVjdEludCwKKyAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdC5ncHIoKSwg
VHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RG
b3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSksIGJhc2VSZWcsIHByb3BlcnR5UmVnKSk7CisgICAg
ICAgICAgICB9CiAgICAgICAgICAgICAKICAgICAgICAgICAgIGpzVmFsdWVSZXN1bHQocmVzdWx0
UmVnLCBub2RlKTsKICAgICAgICAgICAgIGJyZWFrOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHAJKHJldmlzaW9uIDI2NTYzNykKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0yNDA4LDcgKzI0MDgsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxl
R2V0QnlWYWxPblN0CiAKICAgICAgICAgaWYgKGdsb2JhbE9iamVjdC0+c3RyaW5nUHJvdG90eXBl
Q2hhaW5Jc1NhbmUoKSkgewogICAgICAgICAgICAgLy8gRklYTUU6IFRoaXMgY291bGQgYmUgY2Fw
dHVyZWQgdXNpbmcgYSBTcGVjdWxhdGlvbiBtb2RlIHRoYXQgbWVhbnMgIm91dC1vZi1ib3VuZHMK
LSAgICAgICAgICAgIC8vIGxvYWRzIHJldHVybiBhIHRyaXZpYWwgdmFsdWUiLiBTb21ldGhpbmcg
bGlrZSBTYW5lQ2hhaW5PdXRPZkJvdW5kcy4gVGhpcyBzaG91bGQKKyAgICAgICAgICAgIC8vIGxv
YWRzIHJldHVybiBhIHRyaXZpYWwgdmFsdWUiLiBTb21ldGhpbmcgbGlrZSBPdXRPZkJvdW5kc1Nh
bmVDaGFpbi4gVGhpcyBzaG91bGQKICAgICAgICAgICAgIC8vIHNwZWN1bGF0ZSB0aGF0IHdlIGRv
bid0IHRha2UgbmVnYXRpdmUgb3V0LW9mLWJvdW5kcywgb3IgYmV0dGVyIHlldCwgaXQgc2hvdWxk
IHJlbHkKICAgICAgICAgICAgIC8vIG9uIGEgc3RyaW5nUHJvdG90eXBlQ2hhaW5Jc1NhbmUoKSBn
dWFyYW50ZWVpbmcgdGhhdCB0aGUgcHJvdG90eXBlcyBoYXZlIG5vIG5lZ2F0aXZlCiAgICAgICAg
ICAgICAvLyBpbmRleGVkIHByb3BlcnRpZXMgZWl0aGVyLgpAQCAtMTQxNDgsNyArMTQxNDgsNyBA
QCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlSGFzSW5kZXhlZFByCiAgICAgICAgIG1faml0
LmxvYWQzMihNYWNyb0Fzc2VtYmxlcjo6QmFzZUluZGV4KHN0b3JhZ2VHUFIsIGluZGV4R1BSLCBN
YWNyb0Fzc2VtYmxlcjo6VGltZXNFaWdodCwgT0JKRUNUX09GRlNFVE9GKEpTVmFsdWUsIHUuYXNC
aXRzLnRhZykpLCBzY3JhdGNoR1BSKTsKICNlbmRpZgogCi0gICAgICAgIGlmIChtb2RlLmlzU2Fu
ZUNoYWluKCkpIHsKKyAgICAgICAgaWYgKG1vZGUuaXNJbkJvdW5kc1NhbmVDaGFpbigpKSB7CiAg
ICAgICAgICAgICBtX2ppdC5pc05vdEVtcHR5KHNjcmF0Y2hHUFIsIHJlc3VsdEdQUik7CiAgICAg
ICAgICAgICBicmVhazsKICAgICAgICAgfQpAQCAtMTQxNzcsNyArMTQxNzcsNyBAQCB2b2lkIFNw
ZWN1bGF0aXZlSklUOjpjb21waWxlSGFzSW5kZXhlZFByCiAKICAgICAgICAgbV9qaXQubG9hZERv
dWJsZShNYWNyb0Fzc2VtYmxlcjo6QmFzZUluZGV4KHN0b3JhZ2VHUFIsIGluZGV4R1BSLCBNYWNy
b0Fzc2VtYmxlcjo6VGltZXNFaWdodCksIHNjcmF0Y2hGUFIpOwogCi0gICAgICAgIGlmIChtb2Rl
LmlzU2FuZUNoYWluKCkpIHsKKyAgICAgICAgaWYgKG1vZGUuaXNJbkJvdW5kc1NhbmVDaGFpbigp
KSB7CiAgICAgICAgICAgICBtX2ppdC5jb21wYXJlRG91YmxlKE1hY3JvQXNzZW1ibGVyOjpEb3Vi
bGVFcXVhbEFuZE9yZGVyZWQsIHNjcmF0Y2hGUFIsIHNjcmF0Y2hGUFIsIHJlc3VsdEdQUik7CiAg
ICAgICAgICAgICBicmVhazsKICAgICAgICAgfQpAQCAtMTQyMTAsMTMgKzE0MjEwLDEzIEBAIHZv
aWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVIYXNJbmRleGVkUHIKICAgICAgICAgbV9qaXQubG9h
ZDMyKE1hY3JvQXNzZW1ibGVyOjpCYXNlSW5kZXgoc3RvcmFnZUdQUiwgaW5kZXhHUFIsIE1hY3Jv
QXNzZW1ibGVyOjpUaW1lc0VpZ2h0LCBBcnJheVN0b3JhZ2U6OnZlY3Rvck9mZnNldCgpICsgT0JK
RUNUX09GRlNFVE9GKEpTVmFsdWUsIHUuYXNCaXRzLnRhZykpLCBzY3JhdGNoR1BSKTsKICNlbmRp
ZgogCi0gICAgICAgIGlmIChtb2RlLmlzU2FuZUNoYWluKCkpIHsKKyAgICAgICAgaWYgKG1vZGUu
aXNJbkJvdW5kc1NhbmVDaGFpbigpKSB7CiAgICAgICAgICAgICBtX2ppdC5pc05vdEVtcHR5KHNj
cmF0Y2hHUFIsIHJlc3VsdEdQUik7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogCiAg
ICAgICAgIE1hY3JvQXNzZW1ibGVyOjpKdW1wIGlzSG9sZSA9IG1faml0LmJyYW5jaElmRW1wdHko
c2NyYXRjaEdQUik7Ci0gICAgICAgIGlmICghbW9kZS5pc0luQm91bmRzKCkgfHwgbW9kZS5pc1Nh
bmVDaGFpbigpKQorICAgICAgICBpZiAoIW1vZGUuaXNJbkJvdW5kcygpIHx8IG1vZGUuaXNJbkJv
dW5kc1NhbmVDaGFpbigpKQogICAgICAgICAgICAgc2xvd0Nhc2VzLmFwcGVuZChpc0hvbGUpOwog
ICAgICAgICBlbHNlCiAgICAgICAgICAgICBzcGVjdWxhdGlvbkNoZWNrKExvYWRGcm9tSG9sZSwg
SlNWYWx1ZVJlZ3MoKSwgbnVsbHB0ciwgaXNIb2xlKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHVmFsaWRhdGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHVmFsaWRhdGUuY3BwCShyZXZpc2lvbiAyNjU2MzcpCisrKyBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR1ZhbGlkYXRlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzc2LDYg
KzM3NiwyMSBAQCBwdWJsaWM6CiAgICAgICAgICAgICAgICAgY2FzZSBOZXdBcnJheUJ1ZmZlcjoK
ICAgICAgICAgICAgICAgICAgICAgVkFMSURBVEUoKG5vZGUpLCBub2RlLT52ZWN0b3JMZW5ndGhI
aW50KCkgPj0gbm9kZS0+Y2FzdE9wZXJhbmQ8SlNJbW11dGFibGVCdXR0ZXJmbHkqPigpLT5sZW5n
dGgoKSk7CiAgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgIGNhc2Ug
R2V0QnlWYWw6CisgICAgICAgICAgICAgICAgICAgIHN3aXRjaCAobm9kZS0+YXJyYXlNb2RlKCku
dHlwZSgpKSB7CisgICAgICAgICAgICAgICAgICAgIGNhc2UgQXJyYXk6OkludDMyOgorICAgICAg
ICAgICAgICAgICAgICBjYXNlIEFycmF5OjpEb3VibGU6CisgICAgICAgICAgICAgICAgICAgIGNh
c2UgQXJyYXk6OkNvbnRpZ3VvdXM6CisgICAgICAgICAgICAgICAgICAgICAgICAvLyBXZSByZWx5
IG9uIGJlaW5nIGFuIG9yaWdpbmFsIGFycmF5IHN0cnVjdHVyZSBzbyB3ZSBjYW4gcmV0dXJuIHVu
ZGVmaW5lZCBmb3IgbmVnYXRpdmUgaW5kaWNlcy4KKyAgICAgICAgICAgICAgICAgICAgICAgIC8v
IFdlIGNvdWxkIGRvIGJldHRlciBpbiB0aGUgZnV0dXJlLCBhbmQgaGF2ZSBhbmQgaGF2ZSBhbiBm
ZWVkYmFjayBiYXNlZCBwcm9maWxpbmcgbWVjaGFuaXNtCisgICAgICAgICAgICAgICAgICAgICAg
ICAvLyB3aGVyZSB3ZSBzcGVjdWxhdGUgYWdhaW5zdCB0aGUgaW5kZXggYmVpbmcgPj0gMC4KKyAg
ICAgICAgICAgICAgICAgICAgICAgIGlmIChub2RlLT5hcnJheU1vZGUoKS5pc091dE9mQm91bmRz
U2FuZUNoYWluKCkpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgVkFMSURBVEUoKG5vZGUp
LCBub2RlLT5hcnJheU1vZGUoKS5pc0pTQXJyYXlXaXRoT3JpZ2luYWxTdHJ1Y3R1cmUoKSk7Cisg
ICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICAgICAgZGVmYXVs
dDoKKyAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgICAgICB9
CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgIGRlZmF1bHQ6CiAg
ICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgIH0KSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTG93ZXJERkdUb0IzLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTExvd2VyREZHVG9CMy5jcHAJKHJldmlzaW9uIDI2
NTYzNykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTG93ZXJERkdUb0IzLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtNDYzMiw3ICs0NjMyLDcgQEAgcHJpdmF0ZToKICAgICAgICAgICAg
IGlmIChtX25vZGUtPmFycmF5TW9kZSgpLmlzSW5Cb3VuZHMoKSkgewogICAgICAgICAgICAgICAg
IExWYWx1ZSByZXN1bHQgPSBtX291dC5sb2FkNjQoYmFzZUluZGV4KGhlYXAsIHN0b3JhZ2UsIGlu
ZGV4LCBtX2dyYXBoLnZhckFyZ0NoaWxkKG1fbm9kZSwgMSkpKTsKICAgICAgICAgICAgICAgICBM
VmFsdWUgaXNIb2xlID0gbV9vdXQuaXNaZXJvNjQocmVzdWx0KTsKLSAgICAgICAgICAgICAgICBp
ZiAobV9ub2RlLT5hcnJheU1vZGUoKS5pc1NhbmVDaGFpbigpKSB7CisgICAgICAgICAgICAgICAg
aWYgKG1fbm9kZS0+YXJyYXlNb2RlKCkuaXNJbkJvdW5kc1NhbmVDaGFpbigpKSB7CiAgICAgICAg
ICAgICAgICAgICAgIERGR19BU1NFUlQoCiAgICAgICAgICAgICAgICAgICAgICAgICBtX2dyYXBo
LCBtX25vZGUsIG1fbm9kZS0+YXJyYXlNb2RlKCkudHlwZSgpID09IEFycmF5OjpDb250aWd1b3Vz
LCBtX25vZGUtPmFycmF5TW9kZSgpLnR5cGUoKSk7CiAgICAgICAgICAgICAgICAgICAgIHJlc3Vs
dCA9IG1fb3V0LnNlbGVjdCgKQEAgLTQ2NDUsNyArNDY0NSw3IEBAIHByaXZhdGU6CiAgICAgICAg
ICAgICAgICAgc2V0SlNWYWx1ZShyZXN1bHQpOwogICAgICAgICAgICAgICAgIHJldHVybjsKICAg
ICAgICAgICAgIH0KLSAgICAgICAgICAgIAorCiAgICAgICAgICAgICBMQmFzaWNCbG9jayBmYXN0
Q2FzZSA9IG1fb3V0Lm5ld0Jsb2NrKCk7CiAgICAgICAgICAgICBMQmFzaWNCbG9jayBzbG93Q2Fz
ZSA9IG1fb3V0Lm5ld0Jsb2NrKCk7CiAgICAgICAgICAgICBMQmFzaWNCbG9jayBjb250aW51YXRp
b24gPSBtX291dC5uZXdCbG9jaygpOwpAQCAtNDY2Myw3ICs0NjYzLDEyIEBAIHByaXZhdGU6CiAg
ICAgICAgICAgICAgICAgbV9vdXQuaXNaZXJvNjQoZmFzdFJlc3VsdFZhbHVlKSwgcmFyZWx5KHNs
b3dDYXNlKSwgdXN1YWxseShjb250aW51YXRpb24pKTsKICAgICAgICAgICAgIAogICAgICAgICAg
ICAgbV9vdXQuYXBwZW5kVG8oc2xvd0Nhc2UsIGNvbnRpbnVhdGlvbik7Ci0gICAgICAgICAgICBW
YWx1ZUZyb21CbG9jayBzbG93UmVzdWx0ID0gbV9vdXQuYW5jaG9yKHZtQ2FsbChJbnQ2NCwgb3Bl
cmF0aW9uR2V0QnlWYWxPYmplY3RJbnQsIHdlYWtQb2ludGVyKGdsb2JhbE9iamVjdCksIGJhc2Us
IGluZGV4KSk7CisgICAgICAgICAgICBWYWx1ZUZyb21CbG9jayBzbG93UmVzdWx0OworICAgICAg
ICAgICAgaWYgKG1fbm9kZS0+YXJyYXlNb2RlKCkuaXNPdXRPZkJvdW5kc1NhbmVDaGFpbigpKSB7
CisgICAgICAgICAgICAgICAgc3BlY3VsYXRlKE5lZ2F0aXZlSW5kZXgsIG5vVmFsdWUoKSwgbnVs
bHB0ciwgbV9vdXQubGVzc1RoYW4oaW5kZXgsIG1fb3V0LmludDMyWmVybykpOworICAgICAgICAg
ICAgICAgIHNsb3dSZXN1bHQgPSBtX291dC5hbmNob3IobV9vdXQuY29uc3RJbnQ2NChKU1ZhbHVl
OjpWYWx1ZVVuZGVmaW5lZCkpOworICAgICAgICAgICAgfSBlbHNlCisgICAgICAgICAgICAgICAg
c2xvd1Jlc3VsdCA9IG1fb3V0LmFuY2hvcih2bUNhbGwoSW50NjQsIG9wZXJhdGlvbkdldEJ5VmFs
T2JqZWN0SW50LCB3ZWFrUG9pbnRlcihnbG9iYWxPYmplY3QpLCBiYXNlLCBpbmRleCkpOwogICAg
ICAgICAgICAgbV9vdXQuanVtcChjb250aW51YXRpb24pOwogICAgICAgICAgICAgCiAgICAgICAg
ICAgICBtX291dC5hcHBlbmRUbyhjb250aW51YXRpb24sIGxhc3ROZXh0KTsKQEAgLTQ2ODUsNyAr
NDY5MCw3IEBAIHByaXZhdGU6CiAgICAgICAgICAgICAgICAgTFZhbHVlIHJlc3VsdCA9IG1fb3V0
LmxvYWREb3VibGUoCiAgICAgICAgICAgICAgICAgICAgIGJhc2VJbmRleChoZWFwLCBzdG9yYWdl
LCBpbmRleCwgbV9ncmFwaC52YXJBcmdDaGlsZChtX25vZGUsIDEpKSk7CiAgICAgICAgICAgICAg
ICAgCi0gICAgICAgICAgICAgICAgaWYgKCFtX25vZGUtPmFycmF5TW9kZSgpLmlzU2FuZUNoYWlu
KCkpIHsKKyAgICAgICAgICAgICAgICBpZiAoIW1fbm9kZS0+YXJyYXlNb2RlKCkuaXNJbkJvdW5k
c1NhbmVDaGFpbigpKSB7CiAgICAgICAgICAgICAgICAgICAgIHNwZWN1bGF0ZSgKICAgICAgICAg
ICAgICAgICAgICAgICAgIExvYWRGcm9tSG9sZSwgbm9WYWx1ZSgpLCBudWxscHRyLAogICAgICAg
ICAgICAgICAgICAgICAgICAgbV9vdXQuZG91YmxlTm90RXF1YWxPclVub3JkZXJlZChyZXN1bHQs
IHJlc3VsdCkpOwpAQCAtNDcxNiw3ICs0NzIxLDE1IEBAIHByaXZhdGU6CiAgICAgICAgICAgICBt
X291dC5qdW1wKGNvbnRpbnVhdGlvbik7CiAgICAgICAgICAgICAKICAgICAgICAgICAgIG1fb3V0
LmFwcGVuZFRvKHNsb3dDYXNlLCBjb250aW51YXRpb24pOwotICAgICAgICAgICAgVmFsdWVGcm9t
QmxvY2sgc2xvd1Jlc3VsdCA9IG1fb3V0LmFuY2hvcih2bUNhbGwoSW50NjQsIG9wZXJhdGlvbkdl
dEJ5VmFsT2JqZWN0SW50LCB3ZWFrUG9pbnRlcihnbG9iYWxPYmplY3QpLCBiYXNlLCBpbmRleCkp
OworICAgICAgICAgICAgVmFsdWVGcm9tQmxvY2sgc2xvd1Jlc3VsdDsKKyAgICAgICAgICAgIGlm
IChtX25vZGUtPmFycmF5TW9kZSgpLmlzT3V0T2ZCb3VuZHNTYW5lQ2hhaW4oKSkgeworICAgICAg
ICAgICAgICAgIHNwZWN1bGF0ZShOZWdhdGl2ZUluZGV4LCBub1ZhbHVlKCksIG51bGxwdHIsIG1f
b3V0Lmxlc3NUaGFuKGluZGV4LCBtX291dC5pbnQzMlplcm8pKTsKKyAgICAgICAgICAgICAgICBp
ZiAoISEobV9ub2RlLT5mbGFncygpICYgTm9kZUJ5dGVjb2RlVXNlc0FzT3RoZXIpKQorICAgICAg
ICAgICAgICAgICAgICBzbG93UmVzdWx0ID0gbV9vdXQuYW5jaG9yKG1fb3V0LmNvbnN0SW50NjQo
SlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpKSk7CisgICAgICAgICAgICAgICAgZWxzZQor
ICAgICAgICAgICAgICAgICAgICBzbG93UmVzdWx0ID0gbV9vdXQuYW5jaG9yKG1fb3V0LmNvbnN0
SW50NjQoSlNWYWx1ZTo6ZW5jb2RlKGpzTnVtYmVyKFBOYU4pKSkpOworICAgICAgICAgICAgfSBl
bHNlCisgICAgICAgICAgICAgICAgc2xvd1Jlc3VsdCA9IG1fb3V0LmFuY2hvcih2bUNhbGwoSW50
NjQsIG9wZXJhdGlvbkdldEJ5VmFsT2JqZWN0SW50LCB3ZWFrUG9pbnRlcihnbG9iYWxPYmplY3Qp
LCBiYXNlLCBpbmRleCkpOwogICAgICAgICAgICAgbV9vdXQuanVtcChjb250aW51YXRpb24pOwog
ICAgICAgICAgICAgCiAgICAgICAgICAgICBtX291dC5hcHBlbmRUbyhjb250aW51YXRpb24sIGxh
c3ROZXh0KTsKQEAgLTgxMzUsNyArODE0OCw3IEBAIHByaXZhdGU6CiAgICAgICAgICAgICBpZiAo
Z2xvYmFsT2JqZWN0LT5zdHJpbmdQcm90b3R5cGVDaGFpbklzU2FuZSgpKSB7CiAgICAgICAgICAg
ICAgICAgLy8gRklYTUU6IFRoaXMgY291bGQgYmUgY2FwdHVyZWQgdXNpbmcgYSBTcGVjdWxhdGlv
biBtb2RlIHRoYXQgbWVhbnMKICAgICAgICAgICAgICAgICAvLyAib3V0LW9mLWJvdW5kcyBsb2Fk
cyByZXR1cm4gYSB0cml2aWFsIHZhbHVlIiwgc29tZXRoaW5nIGxpa2UKLSAgICAgICAgICAgICAg
ICAvLyBTYW5lQ2hhaW5PdXRPZkJvdW5kcy4KKyAgICAgICAgICAgICAgICAvLyBPdXRPZkJvdW5k
c1NhbmVDaGFpbi4KICAgICAgICAgICAgICAgICAvLyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MTQ0NjY4CiAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAg
bV9ncmFwaC5yZWdpc3RlckFuZFdhdGNoU3RydWN0dXJlVHJhbnNpdGlvbihzdHJpbmdQcm90b3R5
cGVTdHJ1Y3R1cmUpOwpAQCAtMTIyMjAsNyArMTIyMzMsNyBAQCBwcml2YXRlOgogICAgICAgICAg
ICAgTFZhbHVlIGNoZWNrSG9sZVJlc3VsdFZhbHVlID0KICAgICAgICAgICAgICAgICBtX291dC5u
b3RaZXJvNjQobV9vdXQubG9hZDY0KGJhc2VJbmRleChoZWFwLCBzdG9yYWdlLCBpbmRleCwgbV9n
cmFwaC52YXJBcmdDaGlsZChtX25vZGUsIDEpKSkpOwogICAgICAgICAgICAgVmFsdWVGcm9tQmxv
Y2sgY2hlY2tIb2xlUmVzdWx0ID0gbV9vdXQuYW5jaG9yKGNoZWNrSG9sZVJlc3VsdFZhbHVlKTsK
LSAgICAgICAgICAgIGlmIChtb2RlLmlzU2FuZUNoYWluKCkpCisgICAgICAgICAgICBpZiAobW9k
ZS5pc0luQm91bmRzU2FuZUNoYWluKCkpCiAgICAgICAgICAgICAgICAgbV9vdXQuanVtcChjb250
aW51YXRpb24pOwogICAgICAgICAgICAgZWxzZSBpZiAoIW1vZGUuaXNJbkJvdW5kcygpKQogICAg
ICAgICAgICAgICAgIG1fb3V0LmJyYW5jaChjaGVja0hvbGVSZXN1bHRWYWx1ZSwgdXN1YWxseShj
b250aW51YXRpb24pLCByYXJlbHkoc2xvd0Nhc2UpKTsKQEAgLTEyMjU5LDcgKzEyMjcyLDcgQEAg
cHJpdmF0ZToKICAgICAgICAgICAgIExWYWx1ZSBkb3VibGVWYWx1ZSA9IG1fb3V0LmxvYWREb3Vi
bGUoYmFzZUluZGV4KGhlYXAsIHN0b3JhZ2UsIGluZGV4LCBtX2dyYXBoLnZhckFyZ0NoaWxkKG1f
bm9kZSwgMSkpKTsKICAgICAgICAgICAgIExWYWx1ZSBjaGVja0hvbGVSZXN1bHRWYWx1ZSA9IG1f
b3V0LmRvdWJsZUVxdWFsKGRvdWJsZVZhbHVlLCBkb3VibGVWYWx1ZSk7CiAgICAgICAgICAgICBW
YWx1ZUZyb21CbG9jayBjaGVja0hvbGVSZXN1bHQgPSBtX291dC5hbmNob3IoY2hlY2tIb2xlUmVz
dWx0VmFsdWUpOwotICAgICAgICAgICAgaWYgKG1vZGUuaXNTYW5lQ2hhaW4oKSkKKyAgICAgICAg
ICAgIGlmIChtb2RlLmlzSW5Cb3VuZHNTYW5lQ2hhaW4oKSkKICAgICAgICAgICAgICAgICBtX291
dC5qdW1wKGNvbnRpbnVhdGlvbik7CiAgICAgICAgICAgICBlbHNlIGlmICghbW9kZS5pc0luQm91
bmRzKCkpCiAgICAgICAgICAgICAgICAgbV9vdXQuYnJhbmNoKGNoZWNrSG9sZVJlc3VsdFZhbHVl
LCB1c3VhbGx5KGNvbnRpbnVhdGlvbiksIHJhcmVseShzbG93Q2FzZSkpOwpAQCAtMTIyOTcsNyAr
MTIzMTAsNyBAQCBwcml2YXRlOgogICAgICAgICAgICAgTFZhbHVlIGNoZWNrSG9sZVJlc3VsdFZh
bHVlID0KICAgICAgICAgICAgICAgICBtX291dC5ub3RaZXJvNjQobV9vdXQubG9hZDY0KGJhc2VJ
bmRleChtX2hlYXBzLkFycmF5U3RvcmFnZV92ZWN0b3IsIHN0b3JhZ2UsIGluZGV4LCBtX2dyYXBo
LnZhckFyZ0NoaWxkKG1fbm9kZSwgMSkpKSk7CiAgICAgICAgICAgICBWYWx1ZUZyb21CbG9jayBj
aGVja0hvbGVSZXN1bHQgPSBtX291dC5hbmNob3IoY2hlY2tIb2xlUmVzdWx0VmFsdWUpOwotICAg
ICAgICAgICAgaWYgKG1vZGUuaXNTYW5lQ2hhaW4oKSkKKyAgICAgICAgICAgIGlmIChtb2RlLmlz
SW5Cb3VuZHNTYW5lQ2hhaW4oKSkKICAgICAgICAgICAgICAgICBtX291dC5qdW1wKGNvbnRpbnVh
dGlvbik7CiAgICAgICAgICAgICBlbHNlIGlmICghbW9kZS5pc0luQm91bmRzKCkpCiAgICAgICAg
ICAgICAgICAgbV9vdXQuYnJhbmNoKGNoZWNrSG9sZVJlc3VsdFZhbHVlLCB1c3VhbGx5KGNvbnRp
bnVhdGlvbiksIHJhcmVseShzbG93Q2FzZSkpOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>406651</attachid>
            <date>2020-08-14 19:53:13 -0700</date>
            <delta_ts>2020-08-17 12:32:26 -0700</delta_ts>
            <desc>patch</desc>
            <filename>c-backup.diff</filename>
            <type>text/plain</type>
            <size>41827</size>
            <attacher name="Saam Barati">saam</attacher>
            
              <data encoding="base64">SW5kZXg6IEpTVGVzdHMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIEpTVGVzdHMvQ2hhbmdlTG9n
CShyZXZpc2lvbiAyNjU3MjMpCisrKyBKU1Rlc3RzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpA
QCAtMSwzICsxLDIzIEBACisyMDIwLTA4LTE0ICBTYWFtIEJhcmF0aSAgPHNiYXJhdGlAYXBwbGUu
Y29tPgorCisgICAgICAgIEhhdmUgYW4gT09CK1NhbmVDaGFpbiBBcnJheTo6U3BlY3VsYXRpb24K
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxNTQ4Nwor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogbWljcm9i
ZW5jaG1hcmtzL29vYi1zYW5lLWNoYWluLWNvbnRpZ3VvdXMuanM6IEFkZGVkLgorICAgICAgICAo
YXNzZXJ0KToKKyAgICAgICAgKGJhcik6CisgICAgICAgICogbWljcm9iZW5jaG1hcmtzL29vYi1z
YW5lLWNoYWluLWRvdWJsZS1yZWFkLXVuZGVmaW5lZC5qczogQWRkZWQuCisgICAgICAgIChhc3Nl
cnQpOgorICAgICAgICAoYmF6KToKKyAgICAgICAgKiBtaWNyb2JlbmNobWFya3Mvb29iLXNhbmUt
Y2hhaW4tZG91YmxlLmpzOiBBZGRlZC4KKyAgICAgICAgKGFzc2VydCk6CisgICAgICAgIChmb28p
OgorICAgICAgICAqIG1pY3JvYmVuY2htYXJrcy9vb2Itc2FuZS1jaGFpbi1pbnQzMi5qczogQWRk
ZWQuCisgICAgICAgIChhc3NlcnQpOgorICAgICAgICAoYmFyKToKKwogMjAyMC0wOC0xMiAgS2Vp
dGggTWlsbGVyICA8a2VpdGhfbWlsbGVyQGFwcGxlLmNvbT4KIAogICAgICAgICBPU1JBdmFpbGFi
aWxpdHlBbmFseXNpcyBzaG91bGRuJ3QgbWFyayBHZXRTdGFjayBub2RlcyBkaXJlY3RseSBhcyB2
YWxpZCBwbGFjZXMgZm9yIHJlY292ZXJ5CkluZGV4OiBKU1Rlc3RzL21pY3JvYmVuY2htYXJrcy9v
b2Itc2FuZS1jaGFpbi1jb250aWd1b3VzLmpzCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIEpTVGVzdHMvbWljcm9i
ZW5jaG1hcmtzL29vYi1zYW5lLWNoYWluLWNvbnRpZ3VvdXMuanMJKG5vbmV4aXN0ZW50KQorKysg
SlNUZXN0cy9taWNyb2JlbmNobWFya3Mvb29iLXNhbmUtY2hhaW4tY29udGlndW91cy5qcwkod29y
a2luZyBjb3B5KQpAQCAtMCwwICsxLDE4IEBACitmdW5jdGlvbiBhc3NlcnQoYikgeworICAgIGlm
ICghYikKKyAgICAgICAgdGhyb3cgbmV3IEVycm9yOworfQorCitmdW5jdGlvbiBiYXIoYSwgeCkg
eworICAgIHJldHVybiBhW3hdOworfQorbm9JbmxpbmUoYmFyKTsKKworbGV0IG8gPSB7fTsKK2xl
dCBiID0gW28sICIiLCAsIDI1XTsKKworZm9yIChsZXQgaSA9IDA7IGkgPCAxMDAwMDAwMDsgKytp
KSB7CisgICAgYXNzZXJ0KGJhcihiLCAwKSA9PT0gbyk7CisgICAgYXNzZXJ0KGJhcihiLCA1KSA9
PT0gdW5kZWZpbmVkKTsKKyAgICBhc3NlcnQoYmFyKGIsIDIpID09PSB1bmRlZmluZWQpOworfQpJ
bmRleDogSlNUZXN0cy9taWNyb2JlbmNobWFya3Mvb29iLXNhbmUtY2hhaW4tZG91YmxlLXJlYWQt
dW5kZWZpbmVkLmpzCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIEpTVGVzdHMvbWljcm9iZW5jaG1hcmtzL29vYi1z
YW5lLWNoYWluLWRvdWJsZS1yZWFkLXVuZGVmaW5lZC5qcwkobm9uZXhpc3RlbnQpCisrKyBKU1Rl
c3RzL21pY3JvYmVuY2htYXJrcy9vb2Itc2FuZS1jaGFpbi1kb3VibGUtcmVhZC11bmRlZmluZWQu
anMJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwxOCBAQAorZnVuY3Rpb24gYXNzZXJ0KGIpIHsK
KyAgICBpZiAoIWIpCisgICAgICAgIHRocm93IG5ldyBFcnJvcjsKK30KKworZnVuY3Rpb24gYmF6
KGEsIHgpIHsKKyAgICByZXR1cm4gYVt4XTsKK30KK25vSW5saW5lKGJheik7CisKK2xldCBhID0g
WzEuNSwgMi41LCAsIDMuNV07CisKK2ZvciAobGV0IGkgPSAwOyBpIDwgMTAwMDAwMDA7ICsraSkg
eworICAgIGFzc2VydChiYXooYSwgMCkgPT09IDEuNSk7CisgICAgYXNzZXJ0KGJheihhLCA1KSA9
PT0gdW5kZWZpbmVkKTsKKyAgICBhc3NlcnQoYmF6KGEsIDIpID09PSB1bmRlZmluZWQpOworfQor
CkluZGV4OiBKU1Rlc3RzL21pY3JvYmVuY2htYXJrcy9vb2Itc2FuZS1jaGFpbi1kb3VibGUuanMK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gSlNUZXN0cy9taWNyb2JlbmNobWFya3Mvb29iLXNhbmUtY2hhaW4tZG91
YmxlLmpzCShub25leGlzdGVudCkKKysrIEpTVGVzdHMvbWljcm9iZW5jaG1hcmtzL29vYi1zYW5l
LWNoYWluLWRvdWJsZS5qcwkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDE3IEBACitmdW5jdGlv
biBhc3NlcnQoYikgeworICAgIGlmICghYikKKyAgICAgICAgdGhyb3cgbmV3IEVycm9yOworfQor
CitmdW5jdGlvbiBmb28oYSwgeCkgeworICAgIHJldHVybiBhW3hdICogMi41OworfQorbm9Jbmxp
bmUoZm9vKTsKKworbGV0IGEgPSBbMS41LCAyLjUsICwgMy41XTsKKworZm9yIChsZXQgaSA9IDA7
IGkgPCAxMDAwMDAwMDsgKytpKSB7CisgICAgYXNzZXJ0KGZvbyhhLCAwKSA9PT0gMi41ICogMS41
KTsKKyAgICBhc3NlcnQoaXNOYU4oZm9vKGEsIDUpKSk7CisgICAgYXNzZXJ0KGlzTmFOKGZvbyhh
LCAyKSkpOworfQpJbmRleDogSlNUZXN0cy9taWNyb2JlbmNobWFya3Mvb29iLXNhbmUtY2hhaW4t
aW50MzIuanMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gSlNUZXN0cy9taWNyb2JlbmNobWFya3Mvb29iLXNhbmUt
Y2hhaW4taW50MzIuanMJKG5vbmV4aXN0ZW50KQorKysgSlNUZXN0cy9taWNyb2JlbmNobWFya3Mv
b29iLXNhbmUtY2hhaW4taW50MzIuanMJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwxNyBAQAor
ZnVuY3Rpb24gYXNzZXJ0KGIpIHsKKyAgICBpZiAoIWIpCisgICAgICAgIHRocm93IG5ldyBFcnJv
cjsKK30KKworZnVuY3Rpb24gYmFyKGEsIHgpIHsKKyAgICByZXR1cm4gYVt4XTsKK30KK25vSW5s
aW5lKGJhcik7CisKK2xldCBiID0gWzAsIDEsICwgIDJdOworCitmb3IgKGxldCBpID0gMDsgaSA8
IDEwMDAwMDAwOyArK2kpIHsKKyAgICBhc3NlcnQoYmFyKGIsIDApID09PSAwKTsKKyAgICBhc3Nl
cnQoYmFyKGIsIDUpID09PSB1bmRlZmluZWQpOworICAgIGFzc2VydChiYXIoYiwgMikgPT09IHVu
ZGVmaW5lZCk7Cit9CkluZGV4OiBKU1Rlc3RzL3N0cmVzcy9vb2Itc2FuZS1jaGFpbi1uZWdhdGl2
ZS1pbmRleC5qcwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBKU1Rlc3RzL3N0cmVzcy9vb2Itc2FuZS1jaGFpbi1u
ZWdhdGl2ZS1pbmRleC5qcwkobm9uZXhpc3RlbnQpCisrKyBKU1Rlc3RzL3N0cmVzcy9vb2Itc2Fu
ZS1jaGFpbi1uZWdhdGl2ZS1pbmRleC5qcwkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDI0IEBA
CitsZXQgY2FsbGVkID0gZmFsc2U7CitPYmplY3QuZGVmaW5lUHJvcGVydHkoQXJyYXkucHJvdG90
eXBlLCAiLTEiLCB7CisgICAgZ2V0OiBmdW5jdGlvbigpIHsKKyAgICAgICAgY2FsbGVkID0gdHJ1
ZTsKKyAgICAgICAgcmV0dXJuIDQyOworICAgIH0KK30pOworZnVuY3Rpb24gYXNzZXJ0KGIpIHsK
KyAgICBpZiAoIWIpCisgICAgICAgIHRocm93IG5ldyBFcnJvcjsKK30KKworZnVuY3Rpb24gYmF6
KGEsIHgpIHsKKyAgICByZXR1cm4gYVt4XTsKK30KK25vSW5saW5lKGJheik7CisKK2xldCBhID0g
WzEsMiwzXTsKKworZm9yIChsZXQgaSA9IDA7IGkgPCAxMDAwMDAwMDsgKytpKSB7CisgICAgYXNz
ZXJ0KGJheihhLCAtMSkgPT09IDQyKTsKKyAgICBhc3NlcnQoY2FsbGVkKTsKKyAgICBjYWxsZWQg
PSBmYWxzZTsKK30KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMjY1NjM3
KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAt
MSwzICsxLDU3IEBACisyMDIwLTA4LTE0ICBTYWFtIEJhcmF0aSAgPHNiYXJhdGlAYXBwbGUuY29t
PgorCisgICAgICAgIEhhdmUgYW4gT09CK1NhbmVDaGFpbiBBcnJheTo6U3BlY3VsYXRpb24KKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxNTQ4NworCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoaXMgcGF0Y2gg
YWRkcyBhIG5ldyBBcnJheU1vZGUgc3BlY3VsYXRpb24gaW4gdGhlIERGRy9GVEwgY2FsbGVkIE91
dE9mQm91bmRzU2FuZUNoYWluLgorICAgICAgICBJdCBhbGxvd3MgdXMgdG8gZG8gZmFzdCB0aGlu
Z3Mgd2hlbiB3ZSBnbyBPT0IsIGxpa2Ugc2ltcGx5IHJldHVybiB1bmRlZmluZWQuCisgICAgICAg
IFRoaXMgaXMgYmVjYXVzZSB3ZSBpbnN0YWxsIHdhdGNocG9pbnRzIG9uIHRoZSBwcm90b3R5cGUg
Y2hhaW4gdG8gZW5zdXJlIHRoZXkKKyAgICAgICAgaGF2ZSBubyBpbmRleGVkIHByb3BlcnRpZXMu
IFRoaXMgcGF0Y2ggaW1wbGVtZW50cyBPdXRPZkJvdW5kc1NhbmVDaGFpbiBvbgorICAgICAgICBH
ZXRCeVZhbCBvdmVyIEludDMyL0RvdWJsZS9Db250aWd1b3VzIG9yaWdpbmFsIEpTIGFycmF5cy4g
V2UgY2FuIGV4dGVuZCBpdCBpbgorICAgICAgICB0aGUgZnV0dXJlIHRvIG5vbiBvcmlnaW5hbCBK
UyBhcnJheXMgaWYgd2UgcHJvdmUgdGhlaXIgcHJvdG90eXBlIGlzIEFycmF5LnByb3RvdHlwZS4g
CisgICAgICAgIFRvIGltcGxlbWVudCB0aGlzIHByb3Blcmx5LCB3ZSBhbHNvIG5lZWQgdG8gZW5z
dXJlIHRoYXQgdGhlIGluZGV4IGlzbid0IG5lZ2F0aXZlLAorICAgICAgICBhcyBBcnJheS5wcm90
b3R5cGUvT2JqZWN0LnByb3RvdHlwZSBtYXkgaGF2ZSBuZWdhdGl2ZSBpbmRleGVkIGFjY2Vzc29y
cy4gV2UKKyAgICAgICAgZG8gdGhpcyB2aWEgc3BlY3VsYXRpb24sIGFuZCBpZiB3ZSBldmVyIHJl
Y29tcGlsZSwgYW5kIHNlZSBhbiBleGl0IGJlY2F1c2Ugb2YKKyAgICAgICAgdGhpcywgd2Ugd2ls
bCBzdG9wIHNwZWN1bGF0aW5nIE91dE9mQm91bmRzU2FuZUNoYWluLgorICAgICAgICAKKyAgICAg
ICAgVGhpcyBpcyBhYm91dCAyMCUgZmFzdGVyIG9uIGNyeXB0by1tZDUtU1AuIEFuZCB+My00eCBm
YXN0ZXIgb24gdGhlCisgICAgICAgIG1pY3JvYmVuY2htYXJrcyBJIGNyZWF0ZWQuCisKKyAgICAg
ICAgKiBkZmcvREZHQWJzdHJhY3RJbnRlcnByZXRlcklubGluZXMuaDoKKyAgICAgICAgKEpTQzo6
REZHOjpBYnN0cmFjdEludGVycHJldGVyPEFic3RyYWN0U3RhdGVUeXBlPjo6ZXhlY3V0ZUVmZmVj
dHMpOgorICAgICAgICAqIGRmZy9ERkdBcnJheU1vZGUuY3BwOgorICAgICAgICAoSlNDOjpERkc6
OkFycmF5TW9kZTo6cmVmaW5lIGNvbnN0KToKKyAgICAgICAgKEpTQzo6REZHOjphcnJheVNwZWN1
bGF0aW9uVG9TdHJpbmcpOgorICAgICAgICAqIGRmZy9ERkdBcnJheU1vZGUuaDoKKyAgICAgICAg
KEpTQzo6REZHOjpBcnJheU1vZGU6OmlzSW5Cb3VuZHNTYW5lQ2hhaW4gY29uc3QpOgorICAgICAg
ICAoSlNDOjpERkc6OkFycmF5TW9kZTo6aXNPdXRPZkJvdW5kc1NhbmVDaGFpbiBjb25zdCk6Cisg
ICAgICAgIChKU0M6OkRGRzo6QXJyYXlNb2RlOjppc091dE9mQm91bmRzIGNvbnN0KToKKyAgICAg
ICAgKEpTQzo6REZHOjpBcnJheU1vZGU6OmlzRWZmZWN0ZnVsT3V0T2ZCb3VuZHMgY29uc3QpOgor
ICAgICAgICAoSlNDOjpERkc6OkFycmF5TW9kZTo6aXNJbkJvdW5kcyBjb25zdCk6CisgICAgICAg
IChKU0M6OkRGRzo6QXJyYXlNb2RlOjppc1NhbmVDaGFpbiBjb25zdCk6IERlbGV0ZWQuCisgICAg
ICAgICogZGZnL0RGR0NTRVBoYXNlLmNwcDoKKyAgICAgICAgKiBkZmcvREZHQ2xvYmJlcml6ZS5o
OgorICAgICAgICAoSlNDOjpERkc6OmNsb2JiZXJpemUpOgorICAgICAgICAqIGRmZy9ERkdGaXh1
cFBoYXNlLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpGaXh1cFBoYXNlOjpmaXh1cE5vZGUpOgor
ICAgICAgICAoSlNDOjpERkc6OkZpeHVwUGhhc2U6OmNoZWNrQXJyYXkpOgorICAgICAgICAoSlND
OjpERkc6OkZpeHVwUGhhc2U6OnNldFNhbmVDaGFpbklmUG9zc2libGUpOgorICAgICAgICAoSlND
OjpERkc6OkZpeHVwUGhhc2U6OmNvbnZlcnRUb0hhc0luZGV4ZWRQcm9wZXJ0eSk6CisgICAgICAg
ICogZGZnL0RGR1NwZWN1bGF0aXZlSklULmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxh
dGl2ZUpJVDo6Y29tcGlsZUdldEJ5VmFsT25TdHJpbmcpOgorICAgICAgICAoSlNDOjpERkc6OlNw
ZWN1bGF0aXZlSklUOjpjb21waWxlSGFzSW5kZXhlZFByb3BlcnR5KToKKyAgICAgICAgKiBkZmcv
REZHU3BlY3VsYXRpdmVKSVQzMl82NC5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRp
dmVKSVQ6OmNvbXBpbGUpOgorICAgICAgICAqIGRmZy9ERkdTcGVjdWxhdGl2ZUpJVDY0LmNwcDoK
KyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZSk6CisgICAgICAgICog
ZGZnL0RGR1ZhbGlkYXRlLmNwcDoKKyAgICAgICAgKiBmdGwvRlRMTG93ZXJERkdUb0IzLmNwcDoK
KyAgICAgICAgKEpTQzo6RlRMOjpERkc6Okxvd2VyREZHVG9CMzo6Y29tcGlsZUdldEJ5VmFsKToK
KyAgICAgICAgKEpTQzo6RlRMOjpERkc6Okxvd2VyREZHVG9CMzo6Y29tcGlsZVN0cmluZ0NoYXJB
dCk6CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRGR1RvQjM6OmNvbXBpbGVIYXNJbmRl
eGVkUHJvcGVydHkpOgorCiAyMDIwLTA4LTEyICBLZWl0aCBSb2xsaW4gIDxrcm9sbGluQGFwcGxl
LmNvbT4KIAogICAgICAgICBSZW1vdmUgdGhlIG5lZWQgZm9yIGRlZmluaW5nIFVTRV9ORVdfQlVJ
TERfU1lTVEVNCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvRXhpdEtpbmQu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9FeGl0S2lu
ZC5jcHAJKHJldmlzaW9uIDI2NTYzNykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29k
ZS9FeGl0S2luZC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTU2LDYgKzU2LDggQEAgY29uc3QgY2hh
ciogZXhpdEtpbmRUb1N0cmluZyhFeGl0S2luZCBraQogICAgICAgICByZXR1cm4gIk92ZXJmbG93
IjsKICAgICBjYXNlIE5lZ2F0aXZlWmVybzoKICAgICAgICAgcmV0dXJuICJOZWdhdGl2ZVplcm8i
OworICAgIGNhc2UgTmVnYXRpdmVJbmRleDoKKyAgICAgICAgcmV0dXJuICJOZWdhdGl2ZUluZGV4
IjsKICAgICBjYXNlIEludDUyT3ZlcmZsb3c6CiAgICAgICAgIHJldHVybiAiSW50NTJPdmVyZmxv
dyI7CiAgICAgY2FzZSBTdG9yZVRvSG9sZToKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29kZS9FeGl0S2luZC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29kZS9FeGl0S2luZC5oCShyZXZpc2lvbiAyNjU2MzcpCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvYnl0ZWNvZGUvRXhpdEtpbmQuaAkod29ya2luZyBjb3B5KQpAQCAtMzksNiArMzksNyBA
QCBlbnVtIEV4aXRLaW5kIDogdWludDhfdCB7CiAgICAgQmFkVHlwZUluZm9GbGFncywgLy8gV2Ug
ZXhpdGVkIGJlY2F1c2Ugd2UgbWFkZSBhbiBpbmNvcnJlY3QgYXNzdW1wdGlvbiBhYm91dCB3aGF0
IFR5cGVJbmZvIGZsYWdzIHdlIHdvdWxkIHNlZS4KICAgICBPdmVyZmxvdywgLy8gV2UgZXhpdGVk
IGJlY2F1c2Ugb2Ygb3ZlcmZsb3cuCiAgICAgTmVnYXRpdmVaZXJvLCAvLyBXZSBleGl0ZWQgYmVj
YXVzZSB3ZSBlbmNvdW50ZXJlZCBuZWdhdGl2ZSB6ZXJvLgorICAgIE5lZ2F0aXZlSW5kZXgsIC8v
IFdlIGV4aXRlZCBiZWNhdXNlIHdlIGVuY291bnRlcmVkIGEgbmVnYXRpdmUgaW5kZXggaW4gYSBw
bGFjZSB3ZSBkaWRuJ3Qgd2FudCB0byBzZWUgaXQuCiAgICAgSW50NTJPdmVyZmxvdywgLy8gV2Ug
ZXhpdGVkIGJlY2F1c2Ugb2YgYW4gSW50NTIgb3ZlcmZsb3cuCiAgICAgU3RvcmVUb0hvbGUsIC8v
IFdlIGhhZCBhIHN0b3JlIHRvIGEgaG9sZS4KICAgICBMb2FkRnJvbUhvbGUsIC8vIFdlIGhhZCBh
IGxvYWQgZnJvbSBhIGhvbGUuCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Fi
c3RyYWN0SW50ZXJwcmV0ZXJJbmxpbmVzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdBYnN0cmFjdEludGVycHJldGVySW5saW5lcy5oCShyZXZpc2lvbiAyNjU2
MzcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Fic3RyYWN0SW50ZXJwcmV0ZXJJ
bmxpbmVzLmgJKHdvcmtpbmcgY29weSkKQEAgLTIzNTAsNyArMjM1MCw3IEBAIGJvb2wgQWJzdHJh
Y3RJbnRlcnByZXRlcjxBYnN0cmFjdFN0YXRlVHkKICAgICAgICAgICAgICAgICAvLyB3ZSBnb3Qg
dG8gdGhlIGJhY2tlbmQuIFNvIHRvIGRvIHRoaXMgcmlnaHQsIHdlJ2QgaGF2ZSB0byBnZXQgdGhl
CiAgICAgICAgICAgICAgICAgLy8gZml4dXAgcGhhc2UgdG8gY2hlY2sgdGhlIHdhdGNocG9pbnQg
c3RhdGUgYW5kIHRoZW4gYmFrZSBpbnRvIHRoZQogICAgICAgICAgICAgICAgIC8vIEdldEJ5VmFs
IG9wZXJhdGlvbiB0aGUgZmFjdCB0aGF0IHdlJ3JlIHVzaW5nIGEgd2F0Y2hwb2ludCwgdXNpbmcK
LSAgICAgICAgICAgICAgICAvLyBzb21ldGhpbmcgbGlrZSBBcnJheTo6U2FuZUNoYWluIChleGNl
cHQgbm90IHF1aXRlLCBiZWNhdXNlIHRoYXQKKyAgICAgICAgICAgICAgICAvLyBzb21ldGhpbmcg
bGlrZSBBcnJheTo6SW5Cb3VuZHNTYW5lQ2hhaW4gKGV4Y2VwdCBub3QgcXVpdGUsIGJlY2F1c2Ug
dGhhdAogICAgICAgICAgICAgICAgIC8vIGltcGxpZXMgYW4gaW4tYm91bmRzIGFjY2VzcykuIE5v
bmUgb2YgdGhpcyBmZWVscyBsaWtlIGl0J3Mgd29ydGggaXQsCiAgICAgICAgICAgICAgICAgLy8g
c28gd2UncmUgZ29pbmcgd2l0aCBUT1AgZm9yIG5vdy4gVGhlIHNhbWUgdGhpbmcgYXBwbGllcyB0
bwogICAgICAgICAgICAgICAgIC8vIGNsb2JiZXJpbmcgdGhlIHdvcmxkLgpAQCAtMjM2NiwyNSAr
MjM2NiwzMyBAQCBib29sIEFic3RyYWN0SW50ZXJwcmV0ZXI8QWJzdHJhY3RTdGF0ZVR5CiAgICAg
ICAgICAgICBtYWtlSGVhcFRvcEZvck5vZGUobm9kZSk7CiAgICAgICAgICAgICBicmVhazsKICAg
ICAgICAgY2FzZSBBcnJheTo6SW50MzI6Ci0gICAgICAgICAgICBpZiAobm9kZS0+YXJyYXlNb2Rl
KCkuaXNPdXRPZkJvdW5kcygpKSB7CisgICAgICAgICAgICBpZiAobm9kZS0+YXJyYXlNb2RlKCku
aXNFZmZlY3RmdWxPdXRPZkJvdW5kcygpKSB7CiAgICAgICAgICAgICAgICAgY2xvYmJlcldvcmxk
KCk7CiAgICAgICAgICAgICAgICAgbWFrZUhlYXBUb3BGb3JOb2RlKG5vZGUpOwotICAgICAgICAg
ICAgfSBlbHNlCisgICAgICAgICAgICB9IGVsc2UgaWYgKG5vZGUtPmFycmF5TW9kZSgpLmlzT3V0
T2ZCb3VuZHNTYW5lQ2hhaW4oKSkKKyAgICAgICAgICAgICAgICBzZXROb25DZWxsVHlwZUZvck5v
ZGUobm9kZSwgU3BlY0ludDMyT25seSB8IFNwZWNPdGhlcik7CisgICAgICAgICAgICBlbHNlCiAg
ICAgICAgICAgICAgICAgc2V0Tm9uQ2VsbFR5cGVGb3JOb2RlKG5vZGUsIFNwZWNJbnQzMk9ubHkp
OwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgQXJyYXk6OkRvdWJsZToKLSAgICAg
ICAgICAgIGlmIChub2RlLT5hcnJheU1vZGUoKS5pc091dE9mQm91bmRzKCkpIHsKKyAgICAgICAg
ICAgIGlmIChub2RlLT5hcnJheU1vZGUoKS5pc0VmZmVjdGZ1bE91dE9mQm91bmRzKCkpIHsKICAg
ICAgICAgICAgICAgICBjbG9iYmVyV29ybGQoKTsKICAgICAgICAgICAgICAgICBtYWtlSGVhcFRv
cEZvck5vZGUobm9kZSk7Ci0gICAgICAgICAgICB9IGVsc2UgaWYgKG5vZGUtPmFycmF5TW9kZSgp
LmlzU2FuZUNoYWluKCkpCisgICAgICAgICAgICB9IGVsc2UgaWYgKG5vZGUtPmFycmF5TW9kZSgp
LmlzSW5Cb3VuZHNTYW5lQ2hhaW4oKSkKICAgICAgICAgICAgICAgICBzZXROb25DZWxsVHlwZUZv
ck5vZGUobm9kZSwgU3BlY0J5dGVjb2RlRG91YmxlKTsKKyAgICAgICAgICAgIGVsc2UgaWYgKG5v
ZGUtPmFycmF5TW9kZSgpLmlzT3V0T2ZCb3VuZHNTYW5lQ2hhaW4oKSkgeworICAgICAgICAgICAg
ICAgIGlmICghIShub2RlLT5mbGFncygpICYgTm9kZUJ5dGVjb2RlVXNlc0FzT3RoZXIpKQorICAg
ICAgICAgICAgICAgICAgICBzZXROb25DZWxsVHlwZUZvck5vZGUobm9kZSwgU3BlY0J5dGVjb2Rl
RG91YmxlIHwgU3BlY090aGVyKTsKKyAgICAgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAg
ICAgICAgIHNldE5vbkNlbGxUeXBlRm9yTm9kZShub2RlLCBTcGVjQnl0ZWNvZGVEb3VibGUpOwor
ICAgICAgICAgICAgfQogICAgICAgICAgICAgZWxzZQogICAgICAgICAgICAgICAgIHNldE5vbkNl
bGxUeXBlRm9yTm9kZShub2RlLCBTcGVjRG91YmxlUmVhbCk7CiAgICAgICAgICAgICBicmVhazsK
ICAgICAgICAgY2FzZSBBcnJheTo6Q29udGlndW91czoKICAgICAgICAgY2FzZSBBcnJheTo6QXJy
YXlTdG9yYWdlOgogICAgICAgICBjYXNlIEFycmF5OjpTbG93UHV0QXJyYXlTdG9yYWdlOgotICAg
ICAgICAgICAgaWYgKG5vZGUtPmFycmF5TW9kZSgpLmlzT3V0T2ZCb3VuZHMoKSkKKyAgICAgICAg
ICAgIGlmIChub2RlLT5hcnJheU1vZGUoKS5pc0VmZmVjdGZ1bE91dE9mQm91bmRzKCkpCiAgICAg
ICAgICAgICAgICAgY2xvYmJlcldvcmxkKCk7CiAgICAgICAgICAgICBtYWtlSGVhcFRvcEZvck5v
ZGUobm9kZSk7CiAgICAgICAgICAgICBicmVhazsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHQXJyYXlNb2RlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR0FycmF5TW9kZS5jcHAJKHJldmlzaW9uIDI2NTYzNykKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHQXJyYXlNb2RlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjYwLDcg
KzI2MCw3IEBAIEFycmF5TW9kZSBBcnJheU1vZGU6OnJlZmluZSgKICAgICAgICAgICAgIGdyYXBo
LnJlZ2lzdGVyQW5kV2F0Y2hTdHJ1Y3R1cmVUcmFuc2l0aW9uKGFycmF5UHJvdG90eXBlU3RydWN0
dXJlKTsKICAgICAgICAgICAgIGdyYXBoLnJlZ2lzdGVyQW5kV2F0Y2hTdHJ1Y3R1cmVUcmFuc2l0
aW9uKG9iamVjdFByb3RvdHlwZVN0cnVjdHVyZSk7CiAgICAgICAgICAgICBpZiAoZ2xvYmFsT2Jq
ZWN0LT5hcnJheVByb3RvdHlwZUNoYWluSXNTYW5lKCkpCi0gICAgICAgICAgICAgICAgcmV0dXJu
IHdpdGhTcGVjdWxhdGlvbihBcnJheTo6U2FuZUNoYWluKTsKKyAgICAgICAgICAgICAgICByZXR1
cm4gd2l0aFNwZWN1bGF0aW9uKEFycmF5OjpJbkJvdW5kc1NhbmVDaGFpbik7CiAgICAgICAgIH0K
ICAgICAgICAgcmV0dXJuIEFycmF5TW9kZShBcnJheTo6R2VuZXJpYywgYWN0aW9uKCkpOwogICAg
IH0KQEAgLTcxMywxNCArNzEzLDE2IEBAIGNvbnN0IGNoYXIqIGFycmF5Q2xhc3NUb1N0cmluZyhB
cnJheTo6Q2wKIGNvbnN0IGNoYXIqIGFycmF5U3BlY3VsYXRpb25Ub1N0cmluZyhBcnJheTo6U3Bl
Y3VsYXRpb24gc3BlY3VsYXRpb24pCiB7CiAgICAgc3dpdGNoIChzcGVjdWxhdGlvbikgewotICAg
IGNhc2UgQXJyYXk6OlNhbmVDaGFpbjoKLSAgICAgICAgcmV0dXJuICJTYW5lQ2hhaW4iOworICAg
IGNhc2UgQXJyYXk6OkluQm91bmRzU2FuZUNoYWluOgorICAgICAgICByZXR1cm4gIkluQm91bmRz
U2FuZUNoYWluIjsKICAgICBjYXNlIEFycmF5OjpJbkJvdW5kczoKICAgICAgICAgcmV0dXJuICJJ
bkJvdW5kcyI7CiAgICAgY2FzZSBBcnJheTo6VG9Ib2xlOgogICAgICAgICByZXR1cm4gIlRvSG9s
ZSI7CiAgICAgY2FzZSBBcnJheTo6T3V0T2ZCb3VuZHM6CiAgICAgICAgIHJldHVybiAiT3V0T2ZC
b3VuZHMiOworICAgIGNhc2UgQXJyYXk6Ok91dE9mQm91bmRzU2FuZUNoYWluOgorICAgICAgICBy
ZXR1cm4gIk91dE9mQm91bmRzU2FuZUNoYWluIjsKICAgICBkZWZhdWx0OgogICAgICAgICByZXR1
cm4gIlVua25vd24hIjsKICAgICB9CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R0FycmF5TW9kZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
QXJyYXlNb2RlLmgJKHJldmlzaW9uIDI2NTYzNykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHQXJyYXlNb2RlLmgJKHdvcmtpbmcgY29weSkKQEAgLTg5LDEwICs4OSwxMSBAQCBlbnVt
IENsYXNzIDogdWludDhfdCB7CiB9OwogCiBlbnVtIFNwZWN1bGF0aW9uIDogdWludDhfdCB7Ci0g
ICAgU2FuZUNoYWluLCAvLyBJbiBib3VuZHMgYW5kIHRoZSBhcnJheSBwcm90b3R5cGUgY2hhaW4g
aXMgc3RpbGwgaW50YWN0LCBpLmUuIGxvYWRpbmcgYSBob2xlIGRvZXNuJ3QgcmVxdWlyZSBzcGVj
aWFsIHRyZWF0bWVudC4KKyAgICBJbkJvdW5kc1NhbmVDaGFpbiwgLy8gSW4gYm91bmRzIGFuZCB0
aGUgYXJyYXkgcHJvdG90eXBlIGNoYWluIGlzIHN0aWxsIGludGFjdCwgaS5lLiBsb2FkaW5nIGEg
aG9sZSBkb2Vzbid0IHJlcXVpcmUgc3BlY2lhbCB0cmVhdG1lbnQuCiAgICAgCiAgICAgSW5Cb3Vu
ZHMsIC8vIEluIGJvdW5kcyBhbmQgbm90IGxvYWRpbmcgYSBob2xlLgogICAgIFRvSG9sZSwgLy8g
UG90ZW50aWFsbHkgc3RvcmluZyB0byBhIGhvbGUuCisgICAgT3V0T2ZCb3VuZHNTYW5lQ2hhaW4s
IC8vIE91dC1vZi1ib3VuZHMgYWNjZXNzLCBidXQgc2FuZSBjaGFpbiwgc28gdGhlcmUgYXJlIG5v
IGFyYml0cmFyeSBlZmZlY3RzLiBFLmcsIGxvYWRpbmcgb3V0IG9mIGJvdW5kcyBkb2Vzbid0IHJl
cXVpcmUgdHJhdmVyc2luZyB0aGUgcHJvdG90eXBlIGNoYWluIGlmIHdlJ3JlIGFuIG9yaWdpbmFs
IGFycmF5IHN0cnVjdHVyZS4KICAgICBPdXRPZkJvdW5kcyAvLyBPdXQtb2YtYm91bmRzIGFjY2Vz
cyBhbmQgYW55dGhpbmcgY2FuIGhhcHBlbi4KIH07CiBlbnVtIENvbnZlcnNpb24gOiB1aW50OF90
IHsKQEAgLTI3NiwxNSArMjc3LDMwIEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIGFycmF5Q2xh
c3MoKSA9PSBBcnJheTo6T3JpZ2luYWxBcnJheSB8fCBhcnJheUNsYXNzKCkgPT0gQXJyYXk6Ok9y
aWdpbmFsQ29weU9uV3JpdGVBcnJheTsKICAgICB9CiAgICAgCi0gICAgYm9vbCBpc1NhbmVDaGFp
bigpIGNvbnN0CisgICAgYm9vbCBpc0luQm91bmRzU2FuZUNoYWluKCkgY29uc3QKICAgICB7Ci0g
ICAgICAgIHJldHVybiBzcGVjdWxhdGlvbigpID09IEFycmF5OjpTYW5lQ2hhaW47CisgICAgICAg
IHJldHVybiBzcGVjdWxhdGlvbigpID09IEFycmF5OjpJbkJvdW5kc1NhbmVDaGFpbjsKKyAgICB9
CisKKyAgICBib29sIGlzT3V0T2ZCb3VuZHNTYW5lQ2hhaW4oKSBjb25zdAorICAgIHsKKyAgICAg
ICAgcmV0dXJuIHNwZWN1bGF0aW9uKCkgPT0gQXJyYXk6Ok91dE9mQm91bmRzU2FuZUNoYWluOwor
ICAgIH0KKyAgICAKKyAgICBib29sIGlzT3V0T2ZCb3VuZHMoKSBjb25zdAorICAgIHsKKyAgICAg
ICAgcmV0dXJuIHNwZWN1bGF0aW9uKCkgPT0gQXJyYXk6Ok91dE9mQm91bmRzIHx8IHNwZWN1bGF0
aW9uKCkgPT0gQXJyYXk6Ok91dE9mQm91bmRzU2FuZUNoYWluOworICAgIH0KKworICAgIGJvb2wg
aXNFZmZlY3RmdWxPdXRPZkJvdW5kcygpIGNvbnN0CisgICAgeworICAgICAgICByZXR1cm4gc3Bl
Y3VsYXRpb24oKSA9PSBBcnJheTo6T3V0T2ZCb3VuZHM7CiAgICAgfQogICAgIAogICAgIGJvb2wg
aXNJbkJvdW5kcygpIGNvbnN0CiAgICAgewogICAgICAgICBzd2l0Y2ggKHNwZWN1bGF0aW9uKCkp
IHsKLSAgICAgICAgY2FzZSBBcnJheTo6U2FuZUNoYWluOgorICAgICAgICBjYXNlIEFycmF5OjpJ
bkJvdW5kc1NhbmVDaGFpbjoKICAgICAgICAgY2FzZSBBcnJheTo6SW5Cb3VuZHM6CiAgICAgICAg
ICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAgZGVmYXVsdDoKQEAgLTI5NywxMSArMzEzLDYgQEAg
cHVibGljOgogICAgICAgICByZXR1cm4gIWlzSW5Cb3VuZHMoKTsKICAgICB9CiAgICAgCi0gICAg
Ym9vbCBpc091dE9mQm91bmRzKCkgY29uc3QKLSAgICB7Ci0gICAgICAgIHJldHVybiBzcGVjdWxh
dGlvbigpID09IEFycmF5OjpPdXRPZkJvdW5kczsKLSAgICB9Ci0gICAgCiAgICAgYm9vbCBpc1Ns
b3dQdXQoKSBjb25zdAogICAgIHsKICAgICAgICAgcmV0dXJuIHR5cGUoKSA9PSBBcnJheTo6U2xv
d1B1dEFycmF5U3RvcmFnZTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ1NF
UGhhc2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ1NF
UGhhc2UuY3BwCShyZXZpc2lvbiAyNjU2MzcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR0NTRVBoYXNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTUwLDcgKzU1MCw3IEBAIHByaXZh
dGU6CiAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlIEFycmF5OjpEb3VibGU6IHsKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBpZiAoIW1vZGUuaXNJbkJvdW5kcygpKQogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBMb2NhdGlvbktpbmQga2luZCA9IG1vZGUuaXNTYW5lQ2hhaW4oKSA/IEluZGV4ZWRQcm9wZXJ0
eURvdWJsZVNhbmVDaGFpbkxvYyA6IEluZGV4ZWRQcm9wZXJ0eURvdWJsZUxvYzsKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBMb2NhdGlvbktpbmQga2luZCA9IG1vZGUuaXNJbkJvdW5kc1Nh
bmVDaGFpbigpID8gSW5kZXhlZFByb3BlcnR5RG91YmxlU2FuZUNoYWluTG9jIDogSW5kZXhlZFBy
b3BlcnR5RG91YmxlTG9jOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhlYXAgPSBIZWFw
TG9jYXRpb24oa2luZCwgSW5kZXhlZERvdWJsZVByb3BlcnRpZXMsIGJhc2UsIGluZGV4KTsKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICAgICAg
IH0KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ2xvYmJlcml6ZS5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ2xvYmJlcml6ZS5oCShyZXZp
c2lvbiAyNjU2MzcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Nsb2JiZXJpemUu
aAkod29ya2luZyBjb3B5KQpAQCAtOTI5LDcgKzkyOSw3IEBAIHZvaWQgY2xvYmJlcml6ZShHcmFw
aCYgZ3JhcGgsIE5vZGUqIG5vZGUKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgIAog
ICAgICAgICBjYXNlIEFycmF5OjpJbnQzMjoKLSAgICAgICAgICAgIGlmIChtb2RlLmlzSW5Cb3Vu
ZHMoKSkgeworICAgICAgICAgICAgaWYgKG1vZGUuaXNJbkJvdW5kcygpIHx8IG1vZGUuaXNPdXRP
ZkJvdW5kc1NhbmVDaGFpbigpKSB7CiAgICAgICAgICAgICAgICAgcmVhZChCdXR0ZXJmbHlfcHVi
bGljTGVuZ3RoKTsKICAgICAgICAgICAgICAgICByZWFkKEluZGV4ZWRJbnQzMlByb3BlcnRpZXMp
OwogICAgICAgICAgICAgICAgIGRlZihIZWFwTG9jYXRpb24oaW5kZXhlZFByb3BlcnR5TG9jLCBJ
bmRleGVkSW50MzJQcm9wZXJ0aWVzLCBncmFwaC52YXJBcmdDaGlsZChub2RlLCAwKSwgZ3JhcGgu
dmFyQXJnQ2hpbGQobm9kZSwgMSkpLCBMYXp5Tm9kZShub2RlKSk7CkBAIC05MzksMTAgKzkzOSwx
MCBAQCB2b2lkIGNsb2JiZXJpemUoR3JhcGgmIGdyYXBoLCBOb2RlKiBub2RlCiAgICAgICAgICAg
ICByZXR1cm47CiAgICAgICAgICAgICAKICAgICAgICAgY2FzZSBBcnJheTo6RG91YmxlOgotICAg
ICAgICAgICAgaWYgKG1vZGUuaXNJbkJvdW5kcygpKSB7CisgICAgICAgICAgICBpZiAobW9kZS5p
c0luQm91bmRzKCkgfHwgbW9kZS5pc091dE9mQm91bmRzU2FuZUNoYWluKCkpIHsKICAgICAgICAg
ICAgICAgICByZWFkKEJ1dHRlcmZseV9wdWJsaWNMZW5ndGgpOwogICAgICAgICAgICAgICAgIHJl
YWQoSW5kZXhlZERvdWJsZVByb3BlcnRpZXMpOwotICAgICAgICAgICAgICAgIExvY2F0aW9uS2lu
ZCBraW5kID0gbW9kZS5pc1NhbmVDaGFpbigpID8gSW5kZXhlZFByb3BlcnR5RG91YmxlU2FuZUNo
YWluTG9jIDogSW5kZXhlZFByb3BlcnR5RG91YmxlTG9jOworICAgICAgICAgICAgICAgIExvY2F0
aW9uS2luZCBraW5kID0gbW9kZS5pc0luQm91bmRzU2FuZUNoYWluKCkgPyBJbmRleGVkUHJvcGVy
dHlEb3VibGVTYW5lQ2hhaW5Mb2MgOiBJbmRleGVkUHJvcGVydHlEb3VibGVMb2M7CiAgICAgICAg
ICAgICAgICAgZGVmKEhlYXBMb2NhdGlvbihraW5kLCBJbmRleGVkRG91YmxlUHJvcGVydGllcywg
Z3JhcGgudmFyQXJnQ2hpbGQobm9kZSwgMCksIGdyYXBoLnZhckFyZ0NoaWxkKG5vZGUsIDEpKSwg
TGF6eU5vZGUobm9kZSkpOwogICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgIH0K
QEAgLTk1MCw3ICs5NTAsNyBAQCB2b2lkIGNsb2JiZXJpemUoR3JhcGgmIGdyYXBoLCBOb2RlKiBu
b2RlCiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgICAKICAgICAgICAgY2FzZSBBcnJh
eTo6Q29udGlndW91czoKLSAgICAgICAgICAgIGlmIChtb2RlLmlzSW5Cb3VuZHMoKSkgeworICAg
ICAgICAgICAgaWYgKG1vZGUuaXNJbkJvdW5kcygpIHx8IG1vZGUuaXNPdXRPZkJvdW5kc1NhbmVD
aGFpbigpKSB7CiAgICAgICAgICAgICAgICAgcmVhZChCdXR0ZXJmbHlfcHVibGljTGVuZ3RoKTsK
ICAgICAgICAgICAgICAgICByZWFkKEluZGV4ZWRDb250aWd1b3VzUHJvcGVydGllcyk7CiAgICAg
ICAgICAgICAgICAgZGVmKEhlYXBMb2NhdGlvbihpbmRleGVkUHJvcGVydHlMb2MsIEluZGV4ZWRD
b250aWd1b3VzUHJvcGVydGllcywgZ3JhcGgudmFyQXJnQ2hpbGQobm9kZSwgMCksIGdyYXBoLnZh
ckFyZ0NoaWxkKG5vZGUsIDEpKSwgTGF6eU5vZGUobm9kZSkpOwpJbmRleDogU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdGaXh1cFBoYXNlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR0ZpeHVwUGhhc2UuY3BwCShyZXZpc2lvbiAyNjU2MzcpCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0ZpeHVwUGhhc2UuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC0xMDU5LDIwICsxMDU5LDI0IEBAIHByaXZhdGU6CiAgICAgICAgICAgICBzd2l0Y2ggKGFy
cmF5TW9kZS50eXBlKCkpIHsKICAgICAgICAgICAgIGNhc2UgQXJyYXk6OkNvbnRpZ3VvdXM6CiAg
ICAgICAgICAgICBjYXNlIEFycmF5OjpEb3VibGU6Ci0gICAgICAgICAgICAgICAgaWYgKGFycmF5
TW9kZS5pc0pTQXJyYXlXaXRoT3JpZ2luYWxTdHJ1Y3R1cmUoKSAmJiBhcnJheU1vZGUuc3BlY3Vs
YXRpb24oKSA9PSBBcnJheTo6SW5Cb3VuZHMpIHsKLSAgICAgICAgICAgICAgICAgICAgLy8gQ2hl
Y2sgaWYgU2FuZUNoYWluIHdpbGwgd29yayBvbiBhIHBlci10eXBlIGJhc2lzLiBOb3RlIHRoYXQ6
CisgICAgICAgICAgICBjYXNlIEFycmF5OjpJbnQzMjogeworICAgICAgICAgICAgICAgIE9wdGlv
bmFsPEFycmF5OjpTcGVjdWxhdGlvbj4gc2FuZUNoYWluU3BlY3VsYXRpb247CisgICAgICAgICAg
ICAgICAgaWYgKGFycmF5TW9kZS5pc0pTQXJyYXlXaXRoT3JpZ2luYWxTdHJ1Y3R1cmUoKSkgewor
ICAgICAgICAgICAgICAgICAgICAvLyBDaGVjayBpZiBJbkJvdW5kc1NhbmVDaGFpbiB3aWxsIHdv
cmsgb24gYSBwZXItdHlwZSBiYXNpcy4gTm90ZSB0aGF0OgogICAgICAgICAgICAgICAgICAgICAv
LwogICAgICAgICAgICAgICAgICAgICAvLyAxKSBXZSBkb24ndCB3YW50IGRvdWJsZSBhcnJheXMg
dG8gc29tZXRpbWVzIHJldHVybiB1bmRlZmluZWQsIHNpbmNlCiAgICAgICAgICAgICAgICAgICAg
IC8vIHRoYXQgd291bGQgcmVxdWlyZSBhIGNoYW5nZSB0byB0aGUgcmV0dXJuIHR5cGUgYW5kIGl0
IHdvdWxkIHBlc3NpbWlzZQogICAgICAgICAgICAgICAgICAgICAvLyB0aGluZ3MgYSBsb3QuIFNv
LCB3ZSdkIG9ubHkgd2FudCB0byBkbyB0aGF0IGlmIHdlIGFjdHVhbGx5IGhhZAogICAgICAgICAg
ICAgICAgICAgICAvLyBldmlkZW5jZSB0aGF0IHdlIGNvdWxkIHJlYWQgZnJvbSBhIGhvbGUuIFRo
YXQncyBwcmV0dHkgYW5ub3lpbmcuCiAgICAgICAgICAgICAgICAgICAgIC8vIExpa2VseSB0aGUg
YmVzdCB3YXkgdG8gaGFuZGxlIHRoYXQgY2FzZSBpcyB3aXRoIGFuIGVxdWl2YWxlbnQgb2YKLSAg
ICAgICAgICAgICAgICAgICAgLy8gU2FuZUNoYWluIGZvciBPdXRPZkJvdW5kcy4gRm9yIG5vdyB3
ZSBqdXN0IGRldGVjdCB3aGVuIFVuZGVmaW5lZCBhbmQKKyAgICAgICAgICAgICAgICAgICAgLy8g
SW5Cb3VuZHNTYW5lQ2hhaW4gZm9yIE91dE9mQm91bmRzLiBGb3Igbm93IHdlIGp1c3QgZGV0ZWN0
IHdoZW4gVW5kZWZpbmVkIGFuZAogICAgICAgICAgICAgICAgICAgICAvLyBOYU4gYXJlIGluZGlz
dGluZ3Vpc2hhYmxlIGFjY29yZGluZyB0byBiYWNrd2FyZHMgcHJvcGFnYXRpb24sIGFuZCBqdXN0
Ci0gICAgICAgICAgICAgICAgICAgIC8vIHVzZSBTYW5lQ2hhaW4gaW4gdGhhdCBjYXNlLiBUaGlz
IGhhcHBlbnMgdG8gY2F0Y2ggYSBsb3Qgb2YgY2FzZXMuCisgICAgICAgICAgICAgICAgICAgIC8v
IHVzZSBJbkJvdW5kc1NhbmVDaGFpbiBpbiB0aGF0IGNhc2UuIFRoaXMgaGFwcGVucyB0byBjYXRj
aCBhIGxvdCBvZiBjYXNlcy4KICAgICAgICAgICAgICAgICAgICAgLy8KICAgICAgICAgICAgICAg
ICAgICAgLy8gMikgV2UgZG9uJ3Qgd2FudCBpbnQzMiBhcnJheSBsb2FkcyB0byBoYXZlIHRvIGRv
IGEgaG9sZSBjaGVjayBqdXN0IHRvCi0gICAgICAgICAgICAgICAgICAgIC8vIGNvZXJjZSB0byBV
bmRlZmluZWQsIHNpbmNlIHRoYXQgd291bGQgbWVhbiB0d2ljZSB0aGUgY2hlY2tzLgorICAgICAg
ICAgICAgICAgICAgICAvLyBjb2VyY2UgdG8gVW5kZWZpbmVkLCBzaW5jZSB0aGF0IHdvdWxkIG1l
YW4gdHdpY2UgdGhlIGNoZWNrcy4gV2Ugd2FudCB0bworICAgICAgICAgICAgICAgICAgICAvLyBi
ZSBhYmxlIHRvIHNheSB3ZSBhbHdheXMgcmV0dXJuIEludDMyLiBGSVhNRTogTWF5YmUgdGhpcyBz
aG91bGQgYmUgcHJvZmlsaW5nCisgICAgICAgICAgICAgICAgICAgIC8vIGJhc2VkPwogICAgICAg
ICAgICAgICAgICAgICAvLwogICAgICAgICAgICAgICAgICAgICAvLyBUaGlzIGhhcyB0d28gaW1w
bGljYXRpb25zLiBGaXJzdCwgd2UgaGF2ZSB0byBkbyBtb3JlIGNoZWNrcyB0aGFuIHdlJ2QKICAg
ICAgICAgICAgICAgICAgICAgLy8gbGlrZS4gSXQncyB1bmZvcnR1bmF0ZSB0aGF0IHdlIGhhdmUg
dG8gZG8gdGhlIGhvbGUgY2hlY2suIFNlY29uZCwKQEAgLTEwODAsMzIgKzEwODQsNDEgQEAgcHJp
dmF0ZToKICAgICAgICAgICAgICAgICAgICAgLy8gb3V0LW9mLWJvdW5kcyBzbG93IHBhdGguIFdl
IGNhbiBmaXggdGhhdCB3aXRoOgogICAgICAgICAgICAgICAgICAgICAvLyBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTQ0NjY4CiAgICAgICAgICAgICAgICAgICAgIAot
ICAgICAgICAgICAgICAgICAgICBib29sIGNhbkRvU2FuZUNoYWluID0gZmFsc2U7CiAgICAgICAg
ICAgICAgICAgICAgIHN3aXRjaCAoYXJyYXlNb2RlLnR5cGUoKSkgeworICAgICAgICAgICAgICAg
ICAgICBjYXNlIEFycmF5OjpJbnQzMjoKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIChhcnJh
eU1vZGUuc3BlY3VsYXRpb24oKSA9PSBBcnJheTo6T3V0T2ZCb3VuZHMgJiYgIW1fZ3JhcGguaGFz
RXhpdFNpdGUobm9kZS0+b3JpZ2luLnNlbWFudGljLCBOZWdhdGl2ZUluZGV4KSkKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBzYW5lQ2hhaW5TcGVjdWxhdGlvbiA9IEFycmF5OjpPdXRPZkJv
dW5kc1NhbmVDaGFpbjsKKyAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAg
ICAgICAgICAgICBjYXNlIEFycmF5OjpDb250aWd1b3VzOgogICAgICAgICAgICAgICAgICAgICAg
ICAgLy8gVGhpcyBpcyBoYXBwZW5zIHRvIGJlIGVudGlyZWx5IG5hdHVyYWwuIFdlIGFscmVhZHkg
d291bGQgaGF2ZQogICAgICAgICAgICAgICAgICAgICAgICAgLy8gcmV0dXJuZWQgYW55IEpTVmFs
dWUsIGFuZCBub3cgd2UnbGwgcmV0dXJuIFVuZGVmaW5lZC4gV2Ugc3RpbGwgZG8KICAgICAgICAg
ICAgICAgICAgICAgICAgIC8vIHRoZSBjaGVjayBidXQgaXQgZG9lc24ndCByZXF1aXJlIHRha2lu
ZyBhbnkga2luZCBvZiBzbG93IHBhdGguCi0gICAgICAgICAgICAgICAgICAgICAgICBjYW5Eb1Nh
bmVDaGFpbiA9IHRydWU7CisgICAgICAgICAgICAgICAgICAgICAgICBpZiAoYXJyYXlNb2RlLnNw
ZWN1bGF0aW9uKCkgPT0gQXJyYXk6Ok91dE9mQm91bmRzICYmICFtX2dyYXBoLmhhc0V4aXRTaXRl
KG5vZGUtPm9yaWdpbi5zZW1hbnRpYywgTmVnYXRpdmVJbmRleCkpCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgc2FuZUNoYWluU3BlY3VsYXRpb24gPSBBcnJheTo6T3V0T2ZCb3VuZHNTYW5l
Q2hhaW47CisgICAgICAgICAgICAgICAgICAgICAgICBlbHNlIGlmIChhcnJheU1vZGUuc3BlY3Vs
YXRpb24oKSA9PSBBcnJheTo6SW5Cb3VuZHMpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
c2FuZUNoYWluU3BlY3VsYXRpb24gPSBBcnJheTo6SW5Cb3VuZHNTYW5lQ2hhaW47CiAgICAgICAg
ICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAg
ICAgICAgICAgICAgICBjYXNlIEFycmF5OjpEb3VibGU6Ci0gICAgICAgICAgICAgICAgICAgICAg
ICBpZiAoIShub2RlLT5mbGFncygpICYgTm9kZUJ5dGVjb2RlVXNlc0FzT3RoZXIpKSB7CisgICAg
ICAgICAgICAgICAgICAgICAgICBpZiAoIShub2RlLT5mbGFncygpICYgTm9kZUJ5dGVjb2RlVXNl
c0FzT3RoZXIpICYmIGFycmF5TW9kZS5zcGVjdWxhdGlvbigpID09IEFycmF5OjpJbkJvdW5kcykg
ewogICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIEhvbGVzIGxvb2sgbGlrZSBOYU4gYWxy
ZWFkeSwgc28gaWYgdGhlIHVzZXIgZG9lc24ndCBjYXJlCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgLy8gYWJvdXQgdGhlIGRpZmZlcmVuY2UgYmV0d2VlbiBVbmRlZmluZWQgYW5kIE5hTiB0
aGVuIHdlIGNhbgogICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGRvIHRoaXMuCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgY2FuRG9TYW5lQ2hhaW4gPSB0cnVlOwotICAgICAgICAg
ICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNhbmVDaGFpblNw
ZWN1bGF0aW9uID0gQXJyYXk6OkluQm91bmRzU2FuZUNoYWluOworICAgICAgICAgICAgICAgICAg
ICAgICAgfSBlbHNlIGlmIChhcnJheU1vZGUuc3BlY3VsYXRpb24oKSA9PSBBcnJheTo6T3V0T2ZC
b3VuZHMgJiYgIW1fZ3JhcGguaGFzRXhpdFNpdGUobm9kZS0+b3JpZ2luLnNlbWFudGljLCBOZWdh
dGl2ZUluZGV4KSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBzYW5lQ2hhaW5TcGVjdWxh
dGlvbiA9IEFycmF5OjpPdXRPZkJvdW5kc1NhbmVDaGFpbjsKICAgICAgICAgICAgICAgICAgICAg
ICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAg
IGRlZmF1bHQ6CiAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAg
ICAgICAgfQotICAgICAgICAgICAgICAgICAgICAKLSAgICAgICAgICAgICAgICAgICAgaWYgKGNh
bkRvU2FuZUNoYWluKQotICAgICAgICAgICAgICAgICAgICAgICAgc2V0U2FuZUNoYWluSWZQb3Nz
aWJsZShub2RlKTsKICAgICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAgICBpZiAoc2Fu
ZUNoYWluU3BlY3VsYXRpb24pCisgICAgICAgICAgICAgICAgICAgIHNldFNhbmVDaGFpbklmUG9z
c2libGUobm9kZSwgKnNhbmVDaGFpblNwZWN1bGF0aW9uKTsKKwogICAgICAgICAgICAgICAgIGJy
ZWFrOworICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgY2FzZSBB
cnJheTo6U3RyaW5nOgogICAgICAgICAgICAgICAgIGlmICgobm9kZS0+cHJlZGljdGlvbigpICYg
flNwZWNTdHJpbmcpCkBAIC0yMjAyLDcgKzIyMTUsNyBAQCBwcml2YXRlOgogICAgICAgICAgICAg
Ly8gRklYTUU6IE91dE9mQm91bmRzIHNob3VsZG4ndCBwcmVjbHVkZSBnb2luZyBzYW5lIGNoYWlu
IGJlY2F1c2UgT09CIGlzIGp1c3QgZmFsc2UgYW5kIGNhbm5vdCBoYXZlIGVmZmVjdHMuCiAgICAg
ICAgICAgICAvLyBTZWU6IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0y
MDk0NTYKICAgICAgICAgICAgIGlmIChhcnJheU1vZGUuaXNKU0FycmF5V2l0aE9yaWdpbmFsU3Ry
dWN0dXJlKCkgJiYgYXJyYXlNb2RlLnNwZWN1bGF0aW9uKCkgPT0gQXJyYXk6OkluQm91bmRzKQot
ICAgICAgICAgICAgICAgIHNldFNhbmVDaGFpbklmUG9zc2libGUobm9kZSk7CisgICAgICAgICAg
ICAgICAgc2V0U2FuZUNoYWluSWZQb3NzaWJsZShub2RlLCBBcnJheTo6SW5Cb3VuZHNTYW5lQ2hh
aW4pOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAgICAgICAgY2FzZSBHZXREaXJl
Y3RQbmFtZTogewpAQCAtMzUwOSw3ICszNTIyLDcgQEAgcHJpdmF0ZToKICAgICAgICAgICAgIG1f
aW5zZXJ0aW9uU2V0Lmluc2VydE5vZGUoCiAgICAgICAgICAgICAgICAgbV9pbmRleEluQmxvY2ss
IFNwZWNOb25lLCBDaGVjaywgb3JpZ2luLCBFZGdlKGFycmF5LCBTdHJpbmdVc2UpKTsKICAgICAg
ICAgfSBlbHNlIHsKLSAgICAgICAgICAgIC8vIE5vdGUgdGhhdCB3ZSBvbmx5IG5lZWQgdG8gYmUg
dXNpbmcgYSBzdHJ1Y3R1cmUgY2hlY2sgaWYgd2Ugb3B0IGZvciBTYW5lQ2hhaW4sIHNpbmNlCisg
ICAgICAgICAgICAvLyBOb3RlIHRoYXQgd2Ugb25seSBuZWVkIHRvIGJlIHVzaW5nIGEgc3RydWN0
dXJlIGNoZWNrIGlmIHdlIG9wdCBmb3IgSW5Cb3VuZHNTYW5lQ2hhaW4sIHNpbmNlCiAgICAgICAg
ICAgICAvLyB0aGF0IG5lZWRzIHRvIHByb3RlY3QgYWdhaW5zdCBKU0FycmF5J3MgX19wcm90b19f
IGJlaW5nIGNoYW5nZWQuCiAgICAgICAgICAgICBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSA9IGFycmF5
TW9kZS5vcmlnaW5hbEFycmF5U3RydWN0dXJlKG1fZ3JhcGgsIG9yaWdpbi5zZW1hbnRpYyk7CiAg
ICAgICAgIApAQCAtMzU1MSw3ICszNTY0LDcgQEAgcHJpdmF0ZToKICAgICAgICAgICAgIE9wSW5m
byhhcnJheU1vZGUuYXNXb3JkKCkpLCBFZGdlKGFycmF5LCBLbm93bkNlbGxVc2UpKTsKICAgICB9
CiAKLSAgICB2b2lkIHNldFNhbmVDaGFpbklmUG9zc2libGUoTm9kZSogbm9kZSkKKyAgICB2b2lk
IHNldFNhbmVDaGFpbklmUG9zc2libGUoTm9kZSogbm9kZSwgQXJyYXk6OlNwZWN1bGF0aW9uIHNw
ZWN1bGF0aW9uKQogICAgIHsKICAgICAgICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCA9
IG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYyk7CiAgICAgICAg
IFN0cnVjdHVyZSogYXJyYXlQcm90b3R5cGVTdHJ1Y3R1cmUgPSBnbG9iYWxPYmplY3QtPmFycmF5
UHJvdG90eXBlKCktPnN0cnVjdHVyZSh2bSgpKTsKQEAgLTM1NjEsNyArMzU3NCw3IEBAIHByaXZh
dGU6CiAgICAgICAgICAgICAmJiBnbG9iYWxPYmplY3QtPmFycmF5UHJvdG90eXBlQ2hhaW5Jc1Nh
bmUoKSkgewogICAgICAgICAgICAgbV9ncmFwaC5yZWdpc3RlckFuZFdhdGNoU3RydWN0dXJlVHJh
bnNpdGlvbihhcnJheVByb3RvdHlwZVN0cnVjdHVyZSk7CiAgICAgICAgICAgICBtX2dyYXBoLnJl
Z2lzdGVyQW5kV2F0Y2hTdHJ1Y3R1cmVUcmFuc2l0aW9uKG9iamVjdFByb3RvdHlwZVN0cnVjdHVy
ZSk7Ci0gICAgICAgICAgICBub2RlLT5zZXRBcnJheU1vZGUobm9kZS0+YXJyYXlNb2RlKCkud2l0
aFNwZWN1bGF0aW9uKEFycmF5OjpTYW5lQ2hhaW4pKTsKKyAgICAgICAgICAgIG5vZGUtPnNldEFy
cmF5TW9kZShub2RlLT5hcnJheU1vZGUoKS53aXRoU3BlY3VsYXRpb24oc3BlY3VsYXRpb24pKTsK
ICAgICAgICAgICAgIG5vZGUtPmNsZWFyRmxhZ3MoTm9kZU11c3RHZW5lcmF0ZSk7CiAgICAgICAg
IH0KICAgICB9CkBAIC0zOTQzLDcgKzM5NTYsNyBAQCBwcml2YXRlOgogICAgICAgICAvLyBGSVhN
RTogT3V0T2ZCb3VuZHMgc2hvdWxkbid0IHByZWNsdWRlIGdvaW5nIHNhbmUgY2hhaW4gYmVjYXVz
ZSBPT0IgaXMganVzdCBmYWxzZSBhbmQgY2Fubm90IGhhdmUgZWZmZWN0cy4KICAgICAgICAgLy8g
U2VlOiBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjA5NDU2CiAgICAg
ICAgIGlmIChhcnJheU1vZGUuaXNKU0FycmF5V2l0aE9yaWdpbmFsU3RydWN0dXJlKCkgJiYgYXJy
YXlNb2RlLnNwZWN1bGF0aW9uKCkgPT0gQXJyYXk6OkluQm91bmRzKQotICAgICAgICAgICAgc2V0
U2FuZUNoYWluSWZQb3NzaWJsZShub2RlKTsKKyAgICAgICAgICAgIHNldFNhbmVDaGFpbklmUG9z
c2libGUobm9kZSwgQXJyYXk6OkluQm91bmRzU2FuZUNoYWluKTsKIAogICAgICAgICBmaXhFZGdl
PENlbGxVc2U+KG1fZ3JhcGgudmFyQXJnQ2hpbGQobm9kZSwgMCkpOwogICAgICAgICBmaXhFZGdl
PEludDMyVXNlPihtX2dyYXBoLnZhckFyZ0NoaWxkKG5vZGUsIDEpKTsKSW5kZXg6IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQzMl82NC5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDMyXzY0LmNwcAko
cmV2aXNpb24gMjY1NjM3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxh
dGl2ZUpJVDMyXzY0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjM2Niw3ICsyMzY2LDcgQEAgdm9p
ZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShOb2RlKiBub2RlKQogICAgICAgICAgICAgCiAgICAg
ICAgICAgICAgICAgR1BSVGVtcG9yYXJ5IHJlc3VsdFBheWxvYWQodGhpcyk7CiAgICAgICAgICAg
ICAgICAgaWYgKG5vZGUtPmFycmF5TW9kZSgpLnR5cGUoKSA9PSBBcnJheTo6SW50MzIpIHsKLSAg
ICAgICAgICAgICAgICAgICAgQVNTRVJUKCFub2RlLT5hcnJheU1vZGUoKS5pc1NhbmVDaGFpbigp
KTsKKyAgICAgICAgICAgICAgICAgICAgQVNTRVJUKCFub2RlLT5hcnJheU1vZGUoKS5pc0luQm91
bmRzU2FuZUNoYWluKCkpOwogICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAg
ICAgc3BlY3VsYXRpb25DaGVjaygKICAgICAgICAgICAgICAgICAgICAgICAgIE91dE9mQm91bmRz
LCBKU1ZhbHVlUmVncygpLCAwLApAQCAtMjM5Miw3ICsyMzkyLDcgQEAgdm9pZCBTcGVjdWxhdGl2
ZUpJVDo6Y29tcGlsZShOb2RlKiBub2RlKQogICAgICAgICAgICAgICAgICAgICBNYWNyb0Fzc2Vt
Ymxlcjo6QmFzZUluZGV4KAogICAgICAgICAgICAgICAgICAgICAgICAgc3RvcmFnZVJlZywgcHJv
cGVydHlSZWcsIE1hY3JvQXNzZW1ibGVyOjpUaW1lc0VpZ2h0LCBQYXlsb2FkT2Zmc2V0KSwKICAg
ICAgICAgICAgICAgICAgICAgcmVzdWx0UGF5bG9hZC5ncHIoKSk7Ci0gICAgICAgICAgICAgICAg
aWYgKG5vZGUtPmFycmF5TW9kZSgpLmlzU2FuZUNoYWluKCkpIHsKKyAgICAgICAgICAgICAgICBp
ZiAobm9kZS0+YXJyYXlNb2RlKCkuaXNJbkJvdW5kc1NhbmVDaGFpbigpKSB7CiAgICAgICAgICAg
ICAgICAgICAgIEpJVENvbXBpbGVyOjpKdW1wIG5vdEhvbGUgPSBtX2ppdC5icmFuY2hJZk5vdEVt
cHR5KHJlc3VsdFRhZy5ncHIoKSk7CiAgICAgICAgICAgICAgICAgICAgIG1faml0Lm1vdmUoVHJ1
c3RlZEltbTMyKEpTVmFsdWU6OlVuZGVmaW5lZFRhZyksIHJlc3VsdFRhZy5ncHIoKSk7CiAgICAg
ICAgICAgICAgICAgICAgIG1faml0Lm1vdmUoVHJ1c3RlZEltbTMyKDApLCByZXN1bHRQYXlsb2Fk
LmdwcigpKTsKQEAgLTI0NTMsNyArMjQ1Myw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBp
bGUoTm9kZSogbm9kZSkKICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgIEZQUlRlbXBvcmFy
eSByZXN1bHQodGhpcyk7CiAgICAgICAgICAgICAgICAgbV9qaXQubG9hZERvdWJsZShNYWNyb0Fz
c2VtYmxlcjo6QmFzZUluZGV4KHN0b3JhZ2VSZWcsIHByb3BlcnR5UmVnLCBNYWNyb0Fzc2VtYmxl
cjo6VGltZXNFaWdodCksIHJlc3VsdC5mcHIoKSk7Ci0gICAgICAgICAgICAgICAgaWYgKCFub2Rl
LT5hcnJheU1vZGUoKS5pc1NhbmVDaGFpbigpKQorICAgICAgICAgICAgICAgIGlmICghbm9kZS0+
YXJyYXlNb2RlKCkuaXNJbkJvdW5kc1NhbmVDaGFpbigpKQogICAgICAgICAgICAgICAgICAgICBz
cGVjdWxhdGlvbkNoZWNrKExvYWRGcm9tSG9sZSwgSlNWYWx1ZVJlZ3MoKSwgMCwgbV9qaXQuYnJh
bmNoSWZOYU4ocmVzdWx0LmZwcigpKSk7CiAgICAgICAgICAgICAgICAgZG91YmxlUmVzdWx0KHJl
c3VsdC5mcHIoKSwgbm9kZSk7CiAgICAgICAgICAgICAgICAgYnJlYWs7CkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHAJKHJldmlz
aW9uIDI2NTYzNykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVK
SVQ2NC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI3MzYsNyArMjczNiw3IEBAIHZvaWQgU3BlY3Vs
YXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSogbm9kZSkKICAgICAgICAgICAgICAgICBHUFJUZW1wb3Jh
cnkgcmVzdWx0KHRoaXMpOwogCiAgICAgICAgICAgICAgICAgbV9qaXQubG9hZDY0KE1hY3JvQXNz
ZW1ibGVyOjpCYXNlSW5kZXgoc3RvcmFnZVJlZywgcHJvcGVydHlSZWcsIE1hY3JvQXNzZW1ibGVy
OjpUaW1lc0VpZ2h0KSwgcmVzdWx0LmdwcigpKTsKLSAgICAgICAgICAgICAgICBpZiAobm9kZS0+
YXJyYXlNb2RlKCkuaXNTYW5lQ2hhaW4oKSkgeworICAgICAgICAgICAgICAgIGlmIChub2RlLT5h
cnJheU1vZGUoKS5pc0luQm91bmRzU2FuZUNoYWluKCkpIHsKICAgICAgICAgICAgICAgICAgICAg
QVNTRVJUKG5vZGUtPmFycmF5TW9kZSgpLnR5cGUoKSA9PSBBcnJheTo6Q29udGlndW91cyk7CiAg
ICAgICAgICAgICAgICAgICAgIEpJVENvbXBpbGVyOjpKdW1wIG5vdEhvbGUgPSBtX2ppdC5icmFu
Y2hJZk5vdEVtcHR5KHJlc3VsdC5ncHIoKSk7CiAgICAgICAgICAgICAgICAgICAgIG1faml0Lm1v
dmUoVHJ1c3RlZEltbTY0KEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKSksIHJlc3VsdC5n
cHIoKSk7CkBAIC0yNzY5LDEyICsyNzY5LDIxIEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBp
bGUoTm9kZSogbm9kZSkKICAgICAgICAgICAgIHNsb3dDYXNlcy5hcHBlbmQobV9qaXQuYnJhbmNo
MzIoTWFjcm9Bc3NlbWJsZXI6OkFib3ZlT3JFcXVhbCwgcHJvcGVydHlSZWcsIE1hY3JvQXNzZW1i
bGVyOjpBZGRyZXNzKHN0b3JhZ2VSZWcsIEJ1dHRlcmZseTo6b2Zmc2V0T2ZQdWJsaWNMZW5ndGgo
KSkpKTsKIAogICAgICAgICAgICAgbV9qaXQubG9hZDY0KE1hY3JvQXNzZW1ibGVyOjpCYXNlSW5k
ZXgoc3RvcmFnZVJlZywgcHJvcGVydHlSZWcsIE1hY3JvQXNzZW1ibGVyOjpUaW1lc0VpZ2h0KSwg
cmVzdWx0UmVnKTsKLSAgICAgICAgICAgIHNsb3dDYXNlcy5hcHBlbmQobV9qaXQuYnJhbmNoSWZF
bXB0eShyZXN1bHRSZWcpKTsKKworICAgICAgICAgICAgaWYgKG5vZGUtPmFycmF5TW9kZSgpLmlz
T3V0T2ZCb3VuZHNTYW5lQ2hhaW4oKSkgeworICAgICAgICAgICAgICAgIGF1dG8gZG9uZSA9IG1f
aml0LmJyYW5jaElmTm90RW1wdHkocmVzdWx0UmVnKTsKKyAgICAgICAgICAgICAgICBzbG93Q2Fz
ZXMubGluaygmbV9qaXQpOworICAgICAgICAgICAgICAgIHNwZWN1bGF0aW9uQ2hlY2soTmVnYXRp
dmVJbmRleCwgSlNWYWx1ZVJlZ3MoKSwgbnVsbHB0ciwgbV9qaXQuYnJhbmNoMzIoTWFjcm9Bc3Nl
bWJsZXI6Okxlc3NUaGFuLCBwcm9wZXJ0eVJlZywgQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tMzIo
MCkpKTsKKyAgICAgICAgICAgICAgICBtX2ppdC5tb3ZlKENDYWxsSGVscGVyczo6VHJ1c3RlZElt
bTY0KEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKSksIHJlc3VsdFJlZyk7CisgICAgICAg
ICAgICAgICAgZG9uZS5saW5rKCZtX2ppdCk7CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAg
ICAgICAgICAgIHNsb3dDYXNlcy5hcHBlbmQobV9qaXQuYnJhbmNoSWZFbXB0eShyZXN1bHRSZWcp
KTsKKyAgICAgICAgICAgICAgICBhZGRTbG93UGF0aEdlbmVyYXRvcigKKyAgICAgICAgICAgICAg
ICAgICAgc2xvd1BhdGhDYWxsKAorICAgICAgICAgICAgICAgICAgICAgICAgc2xvd0Nhc2VzLCB0
aGlzLCBvcGVyYXRpb25HZXRCeVZhbE9iamVjdEludCwKKyAgICAgICAgICAgICAgICAgICAgICAg
IHJlc3VsdC5ncHIoKSwgVHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIobV9ncmFwaCwgbV9ncmFw
aC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSksIGJhc2VSZWcsIHByb3Bl
cnR5UmVnKSk7CisgICAgICAgICAgICB9CiAgICAgICAgICAgICAKLSAgICAgICAgICAgIGFkZFNs
b3dQYXRoR2VuZXJhdG9yKAotICAgICAgICAgICAgICAgIHNsb3dQYXRoQ2FsbCgKLSAgICAgICAg
ICAgICAgICAgICAgc2xvd0Nhc2VzLCB0aGlzLCBvcGVyYXRpb25HZXRCeVZhbE9iamVjdEludCwK
LSAgICAgICAgICAgICAgICAgICAgcmVzdWx0LmdwcigpLCBUcnVzdGVkSW1tUHRyOjp3ZWFrUG9p
bnRlcihtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50
aWMpKSwgYmFzZVJlZywgcHJvcGVydHlSZWcpKTsKICAgICAgICAgICAgIAogICAgICAgICAgICAg
anNWYWx1ZVJlc3VsdChyZXN1bHRSZWcsIG5vZGUpOwogICAgICAgICAgICAgYnJlYWs7CkBAIC0y
Nzk3LDcgKzI4MDYsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlKE5vZGUqIG5vZGUp
CiAgICAgICAgICAgICAgICAgc3BlY3VsYXRpb25DaGVjayhPdXRPZkJvdW5kcywgSlNWYWx1ZVJl
Z3MoKSwgbnVsbHB0ciwgbV9qaXQuYnJhbmNoMzIoTWFjcm9Bc3NlbWJsZXI6OkFib3ZlT3JFcXVh
bCwgcHJvcGVydHlSZWcsIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKHN0b3JhZ2VSZWcsIEJ1dHRl
cmZseTo6b2Zmc2V0T2ZQdWJsaWNMZW5ndGgoKSkpKTsKIAogICAgICAgICAgICAgICAgIG1faml0
LmxvYWREb3VibGUoTWFjcm9Bc3NlbWJsZXI6OkJhc2VJbmRleChzdG9yYWdlUmVnLCBwcm9wZXJ0
eVJlZywgTWFjcm9Bc3NlbWJsZXI6OlRpbWVzRWlnaHQpLCByZXN1bHRSZWcpOwotICAgICAgICAg
ICAgICAgIGlmICghbm9kZS0+YXJyYXlNb2RlKCkuaXNTYW5lQ2hhaW4oKSkKKyAgICAgICAgICAg
ICAgICBpZiAoIW5vZGUtPmFycmF5TW9kZSgpLmlzSW5Cb3VuZHNTYW5lQ2hhaW4oKSkKICAgICAg
ICAgICAgICAgICAgICAgc3BlY3VsYXRpb25DaGVjayhMb2FkRnJvbUhvbGUsIEpTVmFsdWVSZWdz
KCksIG51bGxwdHIsIG1faml0LmJyYW5jaElmTmFOKHJlc3VsdFJlZykpOwogICAgICAgICAgICAg
ICAgIGRvdWJsZVJlc3VsdChyZXN1bHRSZWcsIG5vZGUpOwogICAgICAgICAgICAgICAgIGJyZWFr
OwpAQCAtMjgyNCwxMyArMjgzMywyNiBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlKE5v
ZGUqIG5vZGUpCiAgICAgICAgICAgICBzbG93Q2FzZXMuYXBwZW5kKG1faml0LmJyYW5jaDMyKE1h
Y3JvQXNzZW1ibGVyOjpBYm92ZU9yRXF1YWwsIHByb3BlcnR5UmVnLCBNYWNyb0Fzc2VtYmxlcjo6
QWRkcmVzcyhzdG9yYWdlUmVnLCBCdXR0ZXJmbHk6Om9mZnNldE9mUHVibGljTGVuZ3RoKCkpKSk7
CiAKICAgICAgICAgICAgIG1faml0LmxvYWREb3VibGUoTWFjcm9Bc3NlbWJsZXI6OkJhc2VJbmRl
eChzdG9yYWdlUmVnLCBwcm9wZXJ0eVJlZywgTWFjcm9Bc3NlbWJsZXI6OlRpbWVzRWlnaHQpLCB0
ZW1wUmVnKTsKLSAgICAgICAgICAgIHNsb3dDYXNlcy5hcHBlbmQobV9qaXQuYnJhbmNoSWZOYU4o
dGVtcFJlZykpOwotICAgICAgICAgICAgYm94RG91YmxlKHRlbXBSZWcsIHJlc3VsdFJlZyk7Ci0g
ICAgICAgICAgICAKLSAgICAgICAgICAgIGFkZFNsb3dQYXRoR2VuZXJhdG9yKAotICAgICAgICAg
ICAgICAgIHNsb3dQYXRoQ2FsbCgKLSAgICAgICAgICAgICAgICAgICAgc2xvd0Nhc2VzLCB0aGlz
LCBvcGVyYXRpb25HZXRCeVZhbE9iamVjdEludCwKLSAgICAgICAgICAgICAgICAgICAgcmVzdWx0
LmdwcigpLCBUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRlcihtX2dyYXBoLCBtX2dyYXBoLmdsb2Jh
bE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpKSwgYmFzZVJlZywgcHJvcGVydHlSZWcp
KTsKKyAgICAgICAgICAgIGlmIChub2RlLT5hcnJheU1vZGUoKS5pc091dE9mQm91bmRzU2FuZUNo
YWluKCkpIHsKKyAgICAgICAgICAgICAgICBpZiAoISEobm9kZS0+ZmxhZ3MoKSAmIE5vZGVCeXRl
Y29kZVVzZXNBc090aGVyKSkKKyAgICAgICAgICAgICAgICAgICAgc2xvd0Nhc2VzLmFwcGVuZCht
X2ppdC5icmFuY2hJZk5hTih0ZW1wUmVnKSk7CisgICAgICAgICAgICAgICAgYm94RG91YmxlKHRl
bXBSZWcsIHJlc3VsdFJlZyk7CisgICAgICAgICAgICAgICAgYXV0byBkb25lID0gbV9qaXQuanVt
cCgpOworICAgICAgICAgICAgICAgIHNsb3dDYXNlcy5saW5rKCZtX2ppdCk7CisgICAgICAgICAg
ICAgICAgc3BlY3VsYXRpb25DaGVjayhOZWdhdGl2ZUluZGV4LCBKU1ZhbHVlUmVncygpLCBudWxs
cHRyLCBtX2ppdC5icmFuY2gzMihNYWNyb0Fzc2VtYmxlcjo6TGVzc1RoYW4sIHByb3BlcnR5UmVn
LCBDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW0zMigwKSkpOworICAgICAgICAgICAgICAgIGlmICgh
IShub2RlLT5mbGFncygpICYgTm9kZUJ5dGVjb2RlVXNlc0FzT3RoZXIpKQorICAgICAgICAgICAg
ICAgICAgICBtX2ppdC5tb3ZlKENDYWxsSGVscGVyczo6VHJ1c3RlZEltbTY0KEpTVmFsdWU6OmVu
Y29kZShqc1VuZGVmaW5lZCgpKSksIHJlc3VsdFJlZyk7CisgICAgICAgICAgICAgICAgZWxzZQor
ICAgICAgICAgICAgICAgICAgICBtX2ppdC5tb3ZlKENDYWxsSGVscGVyczo6VHJ1c3RlZEltbTY0
KEpTVmFsdWU6OmVuY29kZShqc051bWJlcihQTmFOKSkpLCByZXN1bHRSZWcpOworICAgICAgICAg
ICAgICAgIGRvbmUubGluaygmbV9qaXQpOworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAg
ICAgICAgICBzbG93Q2FzZXMuYXBwZW5kKG1faml0LmJyYW5jaElmTmFOKHRlbXBSZWcpKTsKKyAg
ICAgICAgICAgICAgICBib3hEb3VibGUodGVtcFJlZywgcmVzdWx0UmVnKTsKKyAgICAgICAgICAg
ICAgICBhZGRTbG93UGF0aEdlbmVyYXRvcigKKyAgICAgICAgICAgICAgICAgICAgc2xvd1BhdGhD
YWxsKAorICAgICAgICAgICAgICAgICAgICAgICAgc2xvd0Nhc2VzLCB0aGlzLCBvcGVyYXRpb25H
ZXRCeVZhbE9iamVjdEludCwKKyAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdC5ncHIoKSwg
VHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RG
b3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSksIGJhc2VSZWcsIHByb3BlcnR5UmVnKSk7CisgICAg
ICAgICAgICB9CiAgICAgICAgICAgICAKICAgICAgICAgICAgIGpzVmFsdWVSZXN1bHQocmVzdWx0
UmVnLCBub2RlKTsKICAgICAgICAgICAgIGJyZWFrOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHAJKHJldmlzaW9uIDI2NTYzNykKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0yNDA4LDcgKzI0MDgsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxl
R2V0QnlWYWxPblN0CiAKICAgICAgICAgaWYgKGdsb2JhbE9iamVjdC0+c3RyaW5nUHJvdG90eXBl
Q2hhaW5Jc1NhbmUoKSkgewogICAgICAgICAgICAgLy8gRklYTUU6IFRoaXMgY291bGQgYmUgY2Fw
dHVyZWQgdXNpbmcgYSBTcGVjdWxhdGlvbiBtb2RlIHRoYXQgbWVhbnMgIm91dC1vZi1ib3VuZHMK
LSAgICAgICAgICAgIC8vIGxvYWRzIHJldHVybiBhIHRyaXZpYWwgdmFsdWUiLiBTb21ldGhpbmcg
bGlrZSBTYW5lQ2hhaW5PdXRPZkJvdW5kcy4gVGhpcyBzaG91bGQKKyAgICAgICAgICAgIC8vIGxv
YWRzIHJldHVybiBhIHRyaXZpYWwgdmFsdWUiLiBTb21ldGhpbmcgbGlrZSBPdXRPZkJvdW5kc1Nh
bmVDaGFpbi4gVGhpcyBzaG91bGQKICAgICAgICAgICAgIC8vIHNwZWN1bGF0ZSB0aGF0IHdlIGRv
bid0IHRha2UgbmVnYXRpdmUgb3V0LW9mLWJvdW5kcywgb3IgYmV0dGVyIHlldCwgaXQgc2hvdWxk
IHJlbHkKICAgICAgICAgICAgIC8vIG9uIGEgc3RyaW5nUHJvdG90eXBlQ2hhaW5Jc1NhbmUoKSBn
dWFyYW50ZWVpbmcgdGhhdCB0aGUgcHJvdG90eXBlcyBoYXZlIG5vIG5lZ2F0aXZlCiAgICAgICAg
ICAgICAvLyBpbmRleGVkIHByb3BlcnRpZXMgZWl0aGVyLgpAQCAtMTQxNDgsNyArMTQxNDgsNyBA
QCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlSGFzSW5kZXhlZFByCiAgICAgICAgIG1faml0
LmxvYWQzMihNYWNyb0Fzc2VtYmxlcjo6QmFzZUluZGV4KHN0b3JhZ2VHUFIsIGluZGV4R1BSLCBN
YWNyb0Fzc2VtYmxlcjo6VGltZXNFaWdodCwgT0JKRUNUX09GRlNFVE9GKEpTVmFsdWUsIHUuYXNC
aXRzLnRhZykpLCBzY3JhdGNoR1BSKTsKICNlbmRpZgogCi0gICAgICAgIGlmIChtb2RlLmlzU2Fu
ZUNoYWluKCkpIHsKKyAgICAgICAgaWYgKG1vZGUuaXNJbkJvdW5kc1NhbmVDaGFpbigpKSB7CiAg
ICAgICAgICAgICBtX2ppdC5pc05vdEVtcHR5KHNjcmF0Y2hHUFIsIHJlc3VsdEdQUik7CiAgICAg
ICAgICAgICBicmVhazsKICAgICAgICAgfQpAQCAtMTQxNzcsNyArMTQxNzcsNyBAQCB2b2lkIFNw
ZWN1bGF0aXZlSklUOjpjb21waWxlSGFzSW5kZXhlZFByCiAKICAgICAgICAgbV9qaXQubG9hZERv
dWJsZShNYWNyb0Fzc2VtYmxlcjo6QmFzZUluZGV4KHN0b3JhZ2VHUFIsIGluZGV4R1BSLCBNYWNy
b0Fzc2VtYmxlcjo6VGltZXNFaWdodCksIHNjcmF0Y2hGUFIpOwogCi0gICAgICAgIGlmIChtb2Rl
LmlzU2FuZUNoYWluKCkpIHsKKyAgICAgICAgaWYgKG1vZGUuaXNJbkJvdW5kc1NhbmVDaGFpbigp
KSB7CiAgICAgICAgICAgICBtX2ppdC5jb21wYXJlRG91YmxlKE1hY3JvQXNzZW1ibGVyOjpEb3Vi
bGVFcXVhbEFuZE9yZGVyZWQsIHNjcmF0Y2hGUFIsIHNjcmF0Y2hGUFIsIHJlc3VsdEdQUik7CiAg
ICAgICAgICAgICBicmVhazsKICAgICAgICAgfQpAQCAtMTQyMTAsMTMgKzE0MjEwLDEzIEBAIHZv
aWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVIYXNJbmRleGVkUHIKICAgICAgICAgbV9qaXQubG9h
ZDMyKE1hY3JvQXNzZW1ibGVyOjpCYXNlSW5kZXgoc3RvcmFnZUdQUiwgaW5kZXhHUFIsIE1hY3Jv
QXNzZW1ibGVyOjpUaW1lc0VpZ2h0LCBBcnJheVN0b3JhZ2U6OnZlY3Rvck9mZnNldCgpICsgT0JK
RUNUX09GRlNFVE9GKEpTVmFsdWUsIHUuYXNCaXRzLnRhZykpLCBzY3JhdGNoR1BSKTsKICNlbmRp
ZgogCi0gICAgICAgIGlmIChtb2RlLmlzU2FuZUNoYWluKCkpIHsKKyAgICAgICAgaWYgKG1vZGUu
aXNJbkJvdW5kc1NhbmVDaGFpbigpKSB7CiAgICAgICAgICAgICBtX2ppdC5pc05vdEVtcHR5KHNj
cmF0Y2hHUFIsIHJlc3VsdEdQUik7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogCiAg
ICAgICAgIE1hY3JvQXNzZW1ibGVyOjpKdW1wIGlzSG9sZSA9IG1faml0LmJyYW5jaElmRW1wdHko
c2NyYXRjaEdQUik7Ci0gICAgICAgIGlmICghbW9kZS5pc0luQm91bmRzKCkgfHwgbW9kZS5pc1Nh
bmVDaGFpbigpKQorICAgICAgICBpZiAoIW1vZGUuaXNJbkJvdW5kcygpIHx8IG1vZGUuaXNJbkJv
dW5kc1NhbmVDaGFpbigpKQogICAgICAgICAgICAgc2xvd0Nhc2VzLmFwcGVuZChpc0hvbGUpOwog
ICAgICAgICBlbHNlCiAgICAgICAgICAgICBzcGVjdWxhdGlvbkNoZWNrKExvYWRGcm9tSG9sZSwg
SlNWYWx1ZVJlZ3MoKSwgbnVsbHB0ciwgaXNIb2xlKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHVmFsaWRhdGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHVmFsaWRhdGUuY3BwCShyZXZpc2lvbiAyNjU2MzcpCisrKyBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR1ZhbGlkYXRlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzc2LDYg
KzM3NiwyMCBAQCBwdWJsaWM6CiAgICAgICAgICAgICAgICAgY2FzZSBOZXdBcnJheUJ1ZmZlcjoK
ICAgICAgICAgICAgICAgICAgICAgVkFMSURBVEUoKG5vZGUpLCBub2RlLT52ZWN0b3JMZW5ndGhI
aW50KCkgPj0gbm9kZS0+Y2FzdE9wZXJhbmQ8SlNJbW11dGFibGVCdXR0ZXJmbHkqPigpLT5sZW5n
dGgoKSk7CiAgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgIGNhc2Ug
R2V0QnlWYWw6CisgICAgICAgICAgICAgICAgICAgIHN3aXRjaCAobm9kZS0+YXJyYXlNb2RlKCku
dHlwZSgpKSB7CisgICAgICAgICAgICAgICAgICAgIGNhc2UgQXJyYXk6OkludDMyOgorICAgICAg
ICAgICAgICAgICAgICBjYXNlIEFycmF5OjpEb3VibGU6CisgICAgICAgICAgICAgICAgICAgIGNh
c2UgQXJyYXk6OkNvbnRpZ3VvdXM6CisgICAgICAgICAgICAgICAgICAgICAgICAvLyBXZSByZWx5
IG9uIGJlaW5nIGFuIG9yaWdpbmFsIGFycmF5IHN0cnVjdHVyZSBiZWNhdXNlIHdlIGFyZSBTYW5l
Q2hhaW4sIGFuZCB3ZSBuZWVkIAorICAgICAgICAgICAgICAgICAgICAgICAgLy8gQXJyYXkucHJv
dG90eXBlIHRvIGJlIG91ciBwcm90b3R5cGUsIHNvIHdlIGNhbiByZXR1cm4gdW5kZWZpbmVkIHdo
ZW4gd2UgZ28gT09CLgorICAgICAgICAgICAgICAgICAgICAgICAgaWYgKG5vZGUtPmFycmF5TW9k
ZSgpLmlzT3V0T2ZCb3VuZHNTYW5lQ2hhaW4oKSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBWQUxJREFURSgobm9kZSksIG5vZGUtPmFycmF5TW9kZSgpLmlzSlNBcnJheVdpdGhPcmlnaW5h
bFN0cnVjdHVyZSgpKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAg
ICAgICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAg
ICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAg
ICAgICAgZGVmYXVsdDoKICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAg
ICAgfQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExMb3dlckRGR1RvQjMuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTG93ZXJERkdUb0Iz
LmNwcAkocmV2aXNpb24gMjY1NjM3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExM
b3dlckRGR1RvQjMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00NjMyLDcgKzQ2MzIsNyBAQCBwcml2
YXRlOgogICAgICAgICAgICAgaWYgKG1fbm9kZS0+YXJyYXlNb2RlKCkuaXNJbkJvdW5kcygpKSB7
CiAgICAgICAgICAgICAgICAgTFZhbHVlIHJlc3VsdCA9IG1fb3V0LmxvYWQ2NChiYXNlSW5kZXgo
aGVhcCwgc3RvcmFnZSwgaW5kZXgsIG1fZ3JhcGgudmFyQXJnQ2hpbGQobV9ub2RlLCAxKSkpOwog
ICAgICAgICAgICAgICAgIExWYWx1ZSBpc0hvbGUgPSBtX291dC5pc1plcm82NChyZXN1bHQpOwot
ICAgICAgICAgICAgICAgIGlmIChtX25vZGUtPmFycmF5TW9kZSgpLmlzU2FuZUNoYWluKCkpIHsK
KyAgICAgICAgICAgICAgICBpZiAobV9ub2RlLT5hcnJheU1vZGUoKS5pc0luQm91bmRzU2FuZUNo
YWluKCkpIHsKICAgICAgICAgICAgICAgICAgICAgREZHX0FTU0VSVCgKICAgICAgICAgICAgICAg
ICAgICAgICAgIG1fZ3JhcGgsIG1fbm9kZSwgbV9ub2RlLT5hcnJheU1vZGUoKS50eXBlKCkgPT0g
QXJyYXk6OkNvbnRpZ3VvdXMsIG1fbm9kZS0+YXJyYXlNb2RlKCkudHlwZSgpKTsKICAgICAgICAg
ICAgICAgICAgICAgcmVzdWx0ID0gbV9vdXQuc2VsZWN0KApAQCAtNDY0NSw3ICs0NjQ1LDcgQEAg
cHJpdmF0ZToKICAgICAgICAgICAgICAgICBzZXRKU1ZhbHVlKHJlc3VsdCk7CiAgICAgICAgICAg
ICAgICAgcmV0dXJuOwogICAgICAgICAgICAgfQotICAgICAgICAgICAgCisKICAgICAgICAgICAg
IExCYXNpY0Jsb2NrIGZhc3RDYXNlID0gbV9vdXQubmV3QmxvY2soKTsKICAgICAgICAgICAgIExC
YXNpY0Jsb2NrIHNsb3dDYXNlID0gbV9vdXQubmV3QmxvY2soKTsKICAgICAgICAgICAgIExCYXNp
Y0Jsb2NrIGNvbnRpbnVhdGlvbiA9IG1fb3V0Lm5ld0Jsb2NrKCk7CkBAIC00NjYzLDcgKzQ2NjMs
MTIgQEAgcHJpdmF0ZToKICAgICAgICAgICAgICAgICBtX291dC5pc1plcm82NChmYXN0UmVzdWx0
VmFsdWUpLCByYXJlbHkoc2xvd0Nhc2UpLCB1c3VhbGx5KGNvbnRpbnVhdGlvbikpOwogICAgICAg
ICAgICAgCiAgICAgICAgICAgICBtX291dC5hcHBlbmRUbyhzbG93Q2FzZSwgY29udGludWF0aW9u
KTsKLSAgICAgICAgICAgIFZhbHVlRnJvbUJsb2NrIHNsb3dSZXN1bHQgPSBtX291dC5hbmNob3Io
dm1DYWxsKEludDY0LCBvcGVyYXRpb25HZXRCeVZhbE9iamVjdEludCwgd2Vha1BvaW50ZXIoZ2xv
YmFsT2JqZWN0KSwgYmFzZSwgaW5kZXgpKTsKKyAgICAgICAgICAgIFZhbHVlRnJvbUJsb2NrIHNs
b3dSZXN1bHQ7CisgICAgICAgICAgICBpZiAobV9ub2RlLT5hcnJheU1vZGUoKS5pc091dE9mQm91
bmRzU2FuZUNoYWluKCkpIHsKKyAgICAgICAgICAgICAgICBzcGVjdWxhdGUoTmVnYXRpdmVJbmRl
eCwgbm9WYWx1ZSgpLCBudWxscHRyLCBtX291dC5sZXNzVGhhbihpbmRleCwgbV9vdXQuaW50MzJa
ZXJvKSk7CisgICAgICAgICAgICAgICAgc2xvd1Jlc3VsdCA9IG1fb3V0LmFuY2hvcihtX291dC5j
b25zdEludDY0KEpTVmFsdWU6OlZhbHVlVW5kZWZpbmVkKSk7CisgICAgICAgICAgICB9IGVsc2UK
KyAgICAgICAgICAgICAgICBzbG93UmVzdWx0ID0gbV9vdXQuYW5jaG9yKHZtQ2FsbChJbnQ2NCwg
b3BlcmF0aW9uR2V0QnlWYWxPYmplY3RJbnQsIHdlYWtQb2ludGVyKGdsb2JhbE9iamVjdCksIGJh
c2UsIGluZGV4KSk7CiAgICAgICAgICAgICBtX291dC5qdW1wKGNvbnRpbnVhdGlvbik7CiAgICAg
ICAgICAgICAKICAgICAgICAgICAgIG1fb3V0LmFwcGVuZFRvKGNvbnRpbnVhdGlvbiwgbGFzdE5l
eHQpOwpAQCAtNDY4NSw3ICs0NjkwLDcgQEAgcHJpdmF0ZToKICAgICAgICAgICAgICAgICBMVmFs
dWUgcmVzdWx0ID0gbV9vdXQubG9hZERvdWJsZSgKICAgICAgICAgICAgICAgICAgICAgYmFzZUlu
ZGV4KGhlYXAsIHN0b3JhZ2UsIGluZGV4LCBtX2dyYXBoLnZhckFyZ0NoaWxkKG1fbm9kZSwgMSkp
KTsKICAgICAgICAgICAgICAgICAKLSAgICAgICAgICAgICAgICBpZiAoIW1fbm9kZS0+YXJyYXlN
b2RlKCkuaXNTYW5lQ2hhaW4oKSkgeworICAgICAgICAgICAgICAgIGlmICghbV9ub2RlLT5hcnJh
eU1vZGUoKS5pc0luQm91bmRzU2FuZUNoYWluKCkpIHsKICAgICAgICAgICAgICAgICAgICAgc3Bl
Y3VsYXRlKAogICAgICAgICAgICAgICAgICAgICAgICAgTG9hZEZyb21Ib2xlLCBub1ZhbHVlKCks
IG51bGxwdHIsCiAgICAgICAgICAgICAgICAgICAgICAgICBtX291dC5kb3VibGVOb3RFcXVhbE9y
VW5vcmRlcmVkKHJlc3VsdCwgcmVzdWx0KSk7CkBAIC00NzE2LDcgKzQ3MjEsMTUgQEAgcHJpdmF0
ZToKICAgICAgICAgICAgIG1fb3V0Lmp1bXAoY29udGludWF0aW9uKTsKICAgICAgICAgICAgIAog
ICAgICAgICAgICAgbV9vdXQuYXBwZW5kVG8oc2xvd0Nhc2UsIGNvbnRpbnVhdGlvbik7Ci0gICAg
ICAgICAgICBWYWx1ZUZyb21CbG9jayBzbG93UmVzdWx0ID0gbV9vdXQuYW5jaG9yKHZtQ2FsbChJ
bnQ2NCwgb3BlcmF0aW9uR2V0QnlWYWxPYmplY3RJbnQsIHdlYWtQb2ludGVyKGdsb2JhbE9iamVj
dCksIGJhc2UsIGluZGV4KSk7CisgICAgICAgICAgICBWYWx1ZUZyb21CbG9jayBzbG93UmVzdWx0
OworICAgICAgICAgICAgaWYgKG1fbm9kZS0+YXJyYXlNb2RlKCkuaXNPdXRPZkJvdW5kc1NhbmVD
aGFpbigpKSB7CisgICAgICAgICAgICAgICAgc3BlY3VsYXRlKE5lZ2F0aXZlSW5kZXgsIG5vVmFs
dWUoKSwgbnVsbHB0ciwgbV9vdXQubGVzc1RoYW4oaW5kZXgsIG1fb3V0LmludDMyWmVybykpOwor
ICAgICAgICAgICAgICAgIGlmICghIShtX25vZGUtPmZsYWdzKCkgJiBOb2RlQnl0ZWNvZGVVc2Vz
QXNPdGhlcikpCisgICAgICAgICAgICAgICAgICAgIHNsb3dSZXN1bHQgPSBtX291dC5hbmNob3Io
bV9vdXQuY29uc3RJbnQ2NChKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSkpKTsKKyAgICAg
ICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgICAgIHNsb3dSZXN1bHQgPSBtX291dC5h
bmNob3IobV9vdXQuY29uc3RJbnQ2NChKU1ZhbHVlOjplbmNvZGUoanNOdW1iZXIoUE5hTikpKSk7
CisgICAgICAgICAgICB9IGVsc2UKKyAgICAgICAgICAgICAgICBzbG93UmVzdWx0ID0gbV9vdXQu
YW5jaG9yKHZtQ2FsbChJbnQ2NCwgb3BlcmF0aW9uR2V0QnlWYWxPYmplY3RJbnQsIHdlYWtQb2lu
dGVyKGdsb2JhbE9iamVjdCksIGJhc2UsIGluZGV4KSk7CiAgICAgICAgICAgICBtX291dC5qdW1w
KGNvbnRpbnVhdGlvbik7CiAgICAgICAgICAgICAKICAgICAgICAgICAgIG1fb3V0LmFwcGVuZFRv
KGNvbnRpbnVhdGlvbiwgbGFzdE5leHQpOwpAQCAtODEzNSw3ICs4MTQ4LDcgQEAgcHJpdmF0ZToK
ICAgICAgICAgICAgIGlmIChnbG9iYWxPYmplY3QtPnN0cmluZ1Byb3RvdHlwZUNoYWluSXNTYW5l
KCkpIHsKICAgICAgICAgICAgICAgICAvLyBGSVhNRTogVGhpcyBjb3VsZCBiZSBjYXB0dXJlZCB1
c2luZyBhIFNwZWN1bGF0aW9uIG1vZGUgdGhhdCBtZWFucwogICAgICAgICAgICAgICAgIC8vICJv
dXQtb2YtYm91bmRzIGxvYWRzIHJldHVybiBhIHRyaXZpYWwgdmFsdWUiLCBzb21ldGhpbmcgbGlr
ZQotICAgICAgICAgICAgICAgIC8vIFNhbmVDaGFpbk91dE9mQm91bmRzLgorICAgICAgICAgICAg
ICAgIC8vIE91dE9mQm91bmRzU2FuZUNoYWluLgogICAgICAgICAgICAgICAgIC8vIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNDQ2NjgKICAgICAgICAgICAgICAgICAK
ICAgICAgICAgICAgICAgICBtX2dyYXBoLnJlZ2lzdGVyQW5kV2F0Y2hTdHJ1Y3R1cmVUcmFuc2l0
aW9uKHN0cmluZ1Byb3RvdHlwZVN0cnVjdHVyZSk7CkBAIC0xMjIyMCw3ICsxMjIzMyw3IEBAIHBy
aXZhdGU6CiAgICAgICAgICAgICBMVmFsdWUgY2hlY2tIb2xlUmVzdWx0VmFsdWUgPQogICAgICAg
ICAgICAgICAgIG1fb3V0Lm5vdFplcm82NChtX291dC5sb2FkNjQoYmFzZUluZGV4KGhlYXAsIHN0
b3JhZ2UsIGluZGV4LCBtX2dyYXBoLnZhckFyZ0NoaWxkKG1fbm9kZSwgMSkpKSk7CiAgICAgICAg
ICAgICBWYWx1ZUZyb21CbG9jayBjaGVja0hvbGVSZXN1bHQgPSBtX291dC5hbmNob3IoY2hlY2tI
b2xlUmVzdWx0VmFsdWUpOwotICAgICAgICAgICAgaWYgKG1vZGUuaXNTYW5lQ2hhaW4oKSkKKyAg
ICAgICAgICAgIGlmIChtb2RlLmlzSW5Cb3VuZHNTYW5lQ2hhaW4oKSkKICAgICAgICAgICAgICAg
ICBtX291dC5qdW1wKGNvbnRpbnVhdGlvbik7CiAgICAgICAgICAgICBlbHNlIGlmICghbW9kZS5p
c0luQm91bmRzKCkpCiAgICAgICAgICAgICAgICAgbV9vdXQuYnJhbmNoKGNoZWNrSG9sZVJlc3Vs
dFZhbHVlLCB1c3VhbGx5KGNvbnRpbnVhdGlvbiksIHJhcmVseShzbG93Q2FzZSkpOwpAQCAtMTIy
NTksNyArMTIyNzIsNyBAQCBwcml2YXRlOgogICAgICAgICAgICAgTFZhbHVlIGRvdWJsZVZhbHVl
ID0gbV9vdXQubG9hZERvdWJsZShiYXNlSW5kZXgoaGVhcCwgc3RvcmFnZSwgaW5kZXgsIG1fZ3Jh
cGgudmFyQXJnQ2hpbGQobV9ub2RlLCAxKSkpOwogICAgICAgICAgICAgTFZhbHVlIGNoZWNrSG9s
ZVJlc3VsdFZhbHVlID0gbV9vdXQuZG91YmxlRXF1YWwoZG91YmxlVmFsdWUsIGRvdWJsZVZhbHVl
KTsKICAgICAgICAgICAgIFZhbHVlRnJvbUJsb2NrIGNoZWNrSG9sZVJlc3VsdCA9IG1fb3V0LmFu
Y2hvcihjaGVja0hvbGVSZXN1bHRWYWx1ZSk7Ci0gICAgICAgICAgICBpZiAobW9kZS5pc1NhbmVD
aGFpbigpKQorICAgICAgICAgICAgaWYgKG1vZGUuaXNJbkJvdW5kc1NhbmVDaGFpbigpKQogICAg
ICAgICAgICAgICAgIG1fb3V0Lmp1bXAoY29udGludWF0aW9uKTsKICAgICAgICAgICAgIGVsc2Ug
aWYgKCFtb2RlLmlzSW5Cb3VuZHMoKSkKICAgICAgICAgICAgICAgICBtX291dC5icmFuY2goY2hl
Y2tIb2xlUmVzdWx0VmFsdWUsIHVzdWFsbHkoY29udGludWF0aW9uKSwgcmFyZWx5KHNsb3dDYXNl
KSk7CkBAIC0xMjI5Nyw3ICsxMjMxMCw3IEBAIHByaXZhdGU6CiAgICAgICAgICAgICBMVmFsdWUg
Y2hlY2tIb2xlUmVzdWx0VmFsdWUgPQogICAgICAgICAgICAgICAgIG1fb3V0Lm5vdFplcm82NCht
X291dC5sb2FkNjQoYmFzZUluZGV4KG1faGVhcHMuQXJyYXlTdG9yYWdlX3ZlY3Rvciwgc3RvcmFn
ZSwgaW5kZXgsIG1fZ3JhcGgudmFyQXJnQ2hpbGQobV9ub2RlLCAxKSkpKTsKICAgICAgICAgICAg
IFZhbHVlRnJvbUJsb2NrIGNoZWNrSG9sZVJlc3VsdCA9IG1fb3V0LmFuY2hvcihjaGVja0hvbGVS
ZXN1bHRWYWx1ZSk7Ci0gICAgICAgICAgICBpZiAobW9kZS5pc1NhbmVDaGFpbigpKQorICAgICAg
ICAgICAgaWYgKG1vZGUuaXNJbkJvdW5kc1NhbmVDaGFpbigpKQogICAgICAgICAgICAgICAgIG1f
b3V0Lmp1bXAoY29udGludWF0aW9uKTsKICAgICAgICAgICAgIGVsc2UgaWYgKCFtb2RlLmlzSW5C
b3VuZHMoKSkKICAgICAgICAgICAgICAgICBtX291dC5icmFuY2goY2hlY2tIb2xlUmVzdWx0VmFs
dWUsIHVzdWFsbHkoY29udGludWF0aW9uKSwgcmFyZWx5KHNsb3dDYXNlKSk7Cg==
</data>
<flag name="review"
          id="422042"
          type_id="1"
          status="+"
          setter="ysuzuki"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>406730</attachid>
            <date>2020-08-17 12:32:26 -0700</date>
            <delta_ts>2020-08-17 12:49:06 -0700</delta_ts>
            <desc>patch for landing</desc>
            <filename>c-backup.diff</filename>
            <type>text/plain</type>
            <size>45986</size>
            <attacher name="Saam Barati">saam</attacher>
            
              <data encoding="base64">SW5kZXg6IEpTVGVzdHMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIEpTVGVzdHMvQ2hhbmdlTG9n
CShyZXZpc2lvbiAyNjU3MjMpCisrKyBKU1Rlc3RzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpA
QCAtMSwzICsxLDE2IEBACisyMDIwLTA4LTE0ICBTYWFtIEJhcmF0aSAgPHNiYXJhdGlAYXBwbGUu
Y29tPgorCisgICAgICAgIEhhdmUgYW4gT09CK1NhbmVDaGFpbiBBcnJheTo6U3BlY3VsYXRpb24K
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxNTQ4Nwor
CisgICAgICAgIFJldmlld2VkIGJ5IFl1c3VrZSBTdXp1a2kuCisKKyAgICAgICAgKiBtaWNyb2Jl
bmNobWFya3Mvb29iLXNhbmUtY2hhaW4tY29udGlndW91cy5qczogQWRkZWQuCisgICAgICAgICog
bWljcm9iZW5jaG1hcmtzL29vYi1zYW5lLWNoYWluLWRvdWJsZS1yZWFkLXVuZGVmaW5lZC5qczog
QWRkZWQuCisgICAgICAgICogbWljcm9iZW5jaG1hcmtzL29vYi1zYW5lLWNoYWluLWRvdWJsZS5q
czogQWRkZWQuCisgICAgICAgICogbWljcm9iZW5jaG1hcmtzL29vYi1zYW5lLWNoYWluLWludDMy
LmpzOiBBZGRlZC4KKyAgICAgICAgKiBzdHJlc3Mvb29iLXNhbmUtY2hhaW4tbmVnYXRpdmUtaW5k
ZXguanM6IEFkZGVkLgorCiAyMDIwLTA4LTEyICBLZWl0aCBNaWxsZXIgIDxrZWl0aF9taWxsZXJA
YXBwbGUuY29tPgogCiAgICAgICAgIE9TUkF2YWlsYWJpbGl0eUFuYWx5c2lzIHNob3VsZG4ndCBt
YXJrIEdldFN0YWNrIG5vZGVzIGRpcmVjdGx5IGFzIHZhbGlkIHBsYWNlcyBmb3IgcmVjb3ZlcnkK
SW5kZXg6IEpTVGVzdHMvbWljcm9iZW5jaG1hcmtzL29vYi1zYW5lLWNoYWluLWNvbnRpZ3VvdXMu
anMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gSlNUZXN0cy9taWNyb2JlbmNobWFya3Mvb29iLXNhbmUtY2hhaW4t
Y29udGlndW91cy5qcwkobm9uZXhpc3RlbnQpCisrKyBKU1Rlc3RzL21pY3JvYmVuY2htYXJrcy9v
b2Itc2FuZS1jaGFpbi1jb250aWd1b3VzLmpzCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMTgg
QEAKK2Z1bmN0aW9uIGFzc2VydChiKSB7CisgICAgaWYgKCFiKQorICAgICAgICB0aHJvdyBuZXcg
RXJyb3I7Cit9CisKK2Z1bmN0aW9uIGJhcihhLCB4KSB7CisgICAgcmV0dXJuIGFbeF07Cit9Citu
b0lubGluZShiYXIpOworCitsZXQgbyA9IHt9OworbGV0IGIgPSBbbywgIiIsICwgMjVdOworCitm
b3IgKGxldCBpID0gMDsgaSA8IDEwMDAwMDAwOyArK2kpIHsKKyAgICBhc3NlcnQoYmFyKGIsIDAp
ID09PSBvKTsKKyAgICBhc3NlcnQoYmFyKGIsIDUpID09PSB1bmRlZmluZWQpOworICAgIGFzc2Vy
dChiYXIoYiwgMikgPT09IHVuZGVmaW5lZCk7Cit9CkluZGV4OiBKU1Rlc3RzL21pY3JvYmVuY2ht
YXJrcy9vb2Itc2FuZS1jaGFpbi1kb3VibGUtcmVhZC11bmRlZmluZWQuanMKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gSlNUZXN0cy9taWNyb2JlbmNobWFya3Mvb29iLXNhbmUtY2hhaW4tZG91YmxlLXJlYWQtdW5k
ZWZpbmVkLmpzCShub25leGlzdGVudCkKKysrIEpTVGVzdHMvbWljcm9iZW5jaG1hcmtzL29vYi1z
YW5lLWNoYWluLWRvdWJsZS1yZWFkLXVuZGVmaW5lZC5qcwkod29ya2luZyBjb3B5KQpAQCAtMCww
ICsxLDE4IEBACitmdW5jdGlvbiBhc3NlcnQoYikgeworICAgIGlmICghYikKKyAgICAgICAgdGhy
b3cgbmV3IEVycm9yOworfQorCitmdW5jdGlvbiBiYXooYSwgeCkgeworICAgIHJldHVybiBhW3hd
OworfQorbm9JbmxpbmUoYmF6KTsKKworbGV0IGEgPSBbMS41LCAyLjUsICwgMy41XTsKKworZm9y
IChsZXQgaSA9IDA7IGkgPCAxMDAwMDAwMDsgKytpKSB7CisgICAgYXNzZXJ0KGJheihhLCAwKSA9
PT0gMS41KTsKKyAgICBhc3NlcnQoYmF6KGEsIDUpID09PSB1bmRlZmluZWQpOworICAgIGFzc2Vy
dChiYXooYSwgMikgPT09IHVuZGVmaW5lZCk7Cit9CisKSW5kZXg6IEpTVGVzdHMvbWljcm9iZW5j
aG1hcmtzL29vYi1zYW5lLWNoYWluLWRvdWJsZS5qcwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBKU1Rlc3RzL21p
Y3JvYmVuY2htYXJrcy9vb2Itc2FuZS1jaGFpbi1kb3VibGUuanMJKG5vbmV4aXN0ZW50KQorKysg
SlNUZXN0cy9taWNyb2JlbmNobWFya3Mvb29iLXNhbmUtY2hhaW4tZG91YmxlLmpzCSh3b3JraW5n
IGNvcHkpCkBAIC0wLDAgKzEsMTcgQEAKK2Z1bmN0aW9uIGFzc2VydChiKSB7CisgICAgaWYgKCFi
KQorICAgICAgICB0aHJvdyBuZXcgRXJyb3I7Cit9CisKK2Z1bmN0aW9uIGZvbyhhLCB4KSB7Cisg
ICAgcmV0dXJuIGFbeF0gKiAyLjU7Cit9Citub0lubGluZShmb28pOworCitsZXQgYSA9IFsxLjUs
IDIuNSwgLCAzLjVdOworCitmb3IgKGxldCBpID0gMDsgaSA8IDEwMDAwMDAwOyArK2kpIHsKKyAg
ICBhc3NlcnQoZm9vKGEsIDApID09PSAyLjUgKiAxLjUpOworICAgIGFzc2VydChpc05hTihmb28o
YSwgNSkpKTsKKyAgICBhc3NlcnQoaXNOYU4oZm9vKGEsIDIpKSk7Cit9CkluZGV4OiBKU1Rlc3Rz
L21pY3JvYmVuY2htYXJrcy9vb2Itc2FuZS1jaGFpbi1pbnQzMi5qcwo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBK
U1Rlc3RzL21pY3JvYmVuY2htYXJrcy9vb2Itc2FuZS1jaGFpbi1pbnQzMi5qcwkobm9uZXhpc3Rl
bnQpCisrKyBKU1Rlc3RzL21pY3JvYmVuY2htYXJrcy9vb2Itc2FuZS1jaGFpbi1pbnQzMi5qcwko
d29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDE3IEBACitmdW5jdGlvbiBhc3NlcnQoYikgeworICAg
IGlmICghYikKKyAgICAgICAgdGhyb3cgbmV3IEVycm9yOworfQorCitmdW5jdGlvbiBiYXIoYSwg
eCkgeworICAgIHJldHVybiBhW3hdOworfQorbm9JbmxpbmUoYmFyKTsKKworbGV0IGIgPSBbMCwg
MSwgLCAgMl07CisKK2ZvciAobGV0IGkgPSAwOyBpIDwgMTAwMDAwMDA7ICsraSkgeworICAgIGFz
c2VydChiYXIoYiwgMCkgPT09IDApOworICAgIGFzc2VydChiYXIoYiwgNSkgPT09IHVuZGVmaW5l
ZCk7CisgICAgYXNzZXJ0KGJhcihiLCAyKSA9PT0gdW5kZWZpbmVkKTsKK30KSW5kZXg6IEpTVGVz
dHMvc3RyZXNzL29vYi1zYW5lLWNoYWluLW5lZ2F0aXZlLWluZGV4LmpzCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IEpTVGVzdHMvc3RyZXNzL29vYi1zYW5lLWNoYWluLW5lZ2F0aXZlLWluZGV4LmpzCShub25leGlz
dGVudCkKKysrIEpTVGVzdHMvc3RyZXNzL29vYi1zYW5lLWNoYWluLW5lZ2F0aXZlLWluZGV4Lmpz
CSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMjQgQEAKK2xldCBjYWxsZWQgPSBmYWxzZTsKK09i
amVjdC5kZWZpbmVQcm9wZXJ0eShBcnJheS5wcm90b3R5cGUsICItMSIsIHsKKyAgICBnZXQ6IGZ1
bmN0aW9uKCkgeworICAgICAgICBjYWxsZWQgPSB0cnVlOworICAgICAgICByZXR1cm4gNDI7Cisg
ICAgfQorfSk7CitmdW5jdGlvbiBhc3NlcnQoYikgeworICAgIGlmICghYikKKyAgICAgICAgdGhy
b3cgbmV3IEVycm9yOworfQorCitmdW5jdGlvbiBiYXooYSwgeCkgeworICAgIHJldHVybiBhW3hd
OworfQorbm9JbmxpbmUoYmF6KTsKKworbGV0IGEgPSBbMSwyLDNdOworCitmb3IgKGxldCBpID0g
MDsgaSA8IDEwMDAwMDAwOyArK2kpIHsKKyAgICBhc3NlcnQoYmF6KGEsIC0xKSA9PT0gNDIpOwor
ICAgIGFzc2VydChjYWxsZWQpOworICAgIGNhbGxlZCA9IGZhbHNlOworfQpJbmRleDogU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nCShyZXZpc2lvbiAyNjU2MzcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsNTcgQEAKKzIwMjAtMDgtMTQg
IFNhYW0gQmFyYXRpICA8c2JhcmF0aUBhcHBsZS5jb20+CisKKyAgICAgICAgSGF2ZSBhbiBPT0Ir
U2FuZUNoYWluIEFycmF5OjpTcGVjdWxhdGlvbgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjE1NDg3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgWXVzdWtl
IFN1enVraS4KKworICAgICAgICBUaGlzIHBhdGNoIGFkZHMgYSBuZXcgQXJyYXlNb2RlIHNwZWN1
bGF0aW9uIGluIHRoZSBERkcvRlRMIGNhbGxlZCBPdXRPZkJvdW5kc1NhbmVDaGFpbi4KKyAgICAg
ICAgSXQgYWxsb3dzIHVzIHRvIGRvIGZhc3QgdGhpbmdzIHdoZW4gd2UgZ28gT09CLCBsaWtlIHNp
bXBseSByZXR1cm4gdW5kZWZpbmVkLgorICAgICAgICBUaGlzIGlzIGJlY2F1c2Ugd2UgaW5zdGFs
bCB3YXRjaHBvaW50cyBvbiB0aGUgcHJvdG90eXBlIGNoYWluIHRvIGVuc3VyZSB0aGV5CisgICAg
ICAgIGhhdmUgbm8gaW5kZXhlZCBwcm9wZXJ0aWVzLiBUaGlzIHBhdGNoIGltcGxlbWVudHMgT3V0
T2ZCb3VuZHNTYW5lQ2hhaW4gb24KKyAgICAgICAgR2V0QnlWYWwgb3ZlciBJbnQzMi9Eb3VibGUv
Q29udGlndW91cyBvcmlnaW5hbCBKUyBhcnJheXMuIFdlIGNhbiBleHRlbmQgaXQgaW4KKyAgICAg
ICAgdGhlIGZ1dHVyZSB0byBub24gb3JpZ2luYWwgSlMgYXJyYXlzIGlmIHdlIHByb3ZlIHRoZWly
IHByb3RvdHlwZSBpcyBBcnJheS5wcm90b3R5cGUuIAorICAgICAgICBUbyBpbXBsZW1lbnQgdGhp
cyBwcm9wZXJseSwgd2UgYWxzbyBuZWVkIHRvIGVuc3VyZSB0aGF0IHRoZSBpbmRleCBpc24ndCBu
ZWdhdGl2ZSwKKyAgICAgICAgYXMgQXJyYXkucHJvdG90eXBlL09iamVjdC5wcm90b3R5cGUgbWF5
IGhhdmUgbmVnYXRpdmUgaW5kZXhlZCBhY2Nlc3NvcnMuIFdlCisgICAgICAgIGRvIHRoaXMgdmlh
IHNwZWN1bGF0aW9uLCBhbmQgaWYgd2UgZXZlciByZWNvbXBpbGUsIGFuZCBzZWUgYW4gZXhpdCBi
ZWNhdXNlIG9mCisgICAgICAgIHRoaXMsIHdlIHdpbGwgc3RvcCBzcGVjdWxhdGluZyBPdXRPZkJv
dW5kc1NhbmVDaGFpbi4KKyAgICAgICAgCisgICAgICAgIFRoaXMgaXMgYWJvdXQgMjAlIGZhc3Rl
ciBvbiBjcnlwdG8tbWQ1LVNQLiBBbmQgfjMtNHggZmFzdGVyIG9uIHRoZQorICAgICAgICBtaWNy
b2JlbmNobWFya3MgSSBjcmVhdGVkLgorCisgICAgICAgICogZGZnL0RGR0Fic3RyYWN0SW50ZXJw
cmV0ZXJJbmxpbmVzLmg6CisgICAgICAgIChKU0M6OkRGRzo6QWJzdHJhY3RJbnRlcnByZXRlcjxB
YnN0cmFjdFN0YXRlVHlwZT46OmV4ZWN1dGVFZmZlY3RzKToKKyAgICAgICAgKiBkZmcvREZHQXJy
YXlNb2RlLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpBcnJheU1vZGU6OnJlZmluZSBjb25zdCk6
CisgICAgICAgIChKU0M6OkRGRzo6YXJyYXlTcGVjdWxhdGlvblRvU3RyaW5nKToKKyAgICAgICAg
KiBkZmcvREZHQXJyYXlNb2RlLmg6CisgICAgICAgIChKU0M6OkRGRzo6QXJyYXlNb2RlOjppc0lu
Qm91bmRzU2FuZUNoYWluIGNvbnN0KToKKyAgICAgICAgKEpTQzo6REZHOjpBcnJheU1vZGU6Omlz
T3V0T2ZCb3VuZHNTYW5lQ2hhaW4gY29uc3QpOgorICAgICAgICAoSlNDOjpERkc6OkFycmF5TW9k
ZTo6aXNPdXRPZkJvdW5kcyBjb25zdCk6CisgICAgICAgIChKU0M6OkRGRzo6QXJyYXlNb2RlOjpp
c0VmZmVjdGZ1bE91dE9mQm91bmRzIGNvbnN0KToKKyAgICAgICAgKEpTQzo6REZHOjpBcnJheU1v
ZGU6OmlzSW5Cb3VuZHMgY29uc3QpOgorICAgICAgICAoSlNDOjpERkc6OkFycmF5TW9kZTo6aXNT
YW5lQ2hhaW4gY29uc3QpOiBEZWxldGVkLgorICAgICAgICAqIGRmZy9ERkdDU0VQaGFzZS5jcHA6
CisgICAgICAgICogZGZnL0RGR0Nsb2JiZXJpemUuaDoKKyAgICAgICAgKEpTQzo6REZHOjpjbG9i
YmVyaXplKToKKyAgICAgICAgKiBkZmcvREZHRml4dXBQaGFzZS5jcHA6CisgICAgICAgIChKU0M6
OkRGRzo6Rml4dXBQaGFzZTo6Zml4dXBOb2RlKToKKyAgICAgICAgKEpTQzo6REZHOjpGaXh1cFBo
YXNlOjpjaGVja0FycmF5KToKKyAgICAgICAgKEpTQzo6REZHOjpGaXh1cFBoYXNlOjpzZXRTYW5l
Q2hhaW5JZlBvc3NpYmxlKToKKyAgICAgICAgKEpTQzo6REZHOjpGaXh1cFBoYXNlOjpjb252ZXJ0
VG9IYXNJbmRleGVkUHJvcGVydHkpOgorICAgICAgICAqIGRmZy9ERkdTcGVjdWxhdGl2ZUpJVC5j
cHA6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVHZXRCeVZhbE9u
U3RyaW5nKToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUhhc0lu
ZGV4ZWRQcm9wZXJ0eSk6CisgICAgICAgICogZGZnL0RGR1NwZWN1bGF0aXZlSklUMzJfNjQuY3Bw
OgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21waWxlKToKKyAgICAgICAg
KiBkZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3Vs
YXRpdmVKSVQ6OmNvbXBpbGUpOgorICAgICAgICAqIGRmZy9ERkdWYWxpZGF0ZS5jcHA6CisgICAg
ICAgICogZnRsL0ZUTExvd2VyREZHVG9CMy5jcHA6CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpM
b3dlckRGR1RvQjM6OmNvbXBpbGVHZXRCeVZhbCk6CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpM
b3dlckRGR1RvQjM6OmNvbXBpbGVTdHJpbmdDaGFyQXQpOgorICAgICAgICAoSlNDOjpGVEw6OkRG
Rzo6TG93ZXJERkdUb0IzOjpjb21waWxlSGFzSW5kZXhlZFByb3BlcnR5KToKKwogMjAyMC0wOC0x
MiAgS2VpdGggUm9sbGluICA8a3JvbGxpbkBhcHBsZS5jb20+CiAKICAgICAgICAgUmVtb3ZlIHRo
ZSBuZWVkIGZvciBkZWZpbmluZyBVU0VfTkVXX0JVSUxEX1NZU1RFTQpJbmRleDogU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb2RlL0V4aXRLaW5kLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvRXhpdEtpbmQuY3BwCShyZXZpc2lvbiAyNjU2MzcpCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvRXhpdEtpbmQuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC01Niw2ICs1Niw4IEBAIGNvbnN0IGNoYXIqIGV4aXRLaW5kVG9TdHJpbmcoRXhpdEtp
bmQga2kKICAgICAgICAgcmV0dXJuICJPdmVyZmxvdyI7CiAgICAgY2FzZSBOZWdhdGl2ZVplcm86
CiAgICAgICAgIHJldHVybiAiTmVnYXRpdmVaZXJvIjsKKyAgICBjYXNlIE5lZ2F0aXZlSW5kZXg6
CisgICAgICAgIHJldHVybiAiTmVnYXRpdmVJbmRleCI7CiAgICAgY2FzZSBJbnQ1Mk92ZXJmbG93
OgogICAgICAgICByZXR1cm4gIkludDUyT3ZlcmZsb3ciOwogICAgIGNhc2UgU3RvcmVUb0hvbGU6
CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvRXhpdEtpbmQuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvRXhpdEtpbmQuaAkocmV2aXNp
b24gMjY1NjM3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0V4aXRLaW5kLmgJ
KHdvcmtpbmcgY29weSkKQEAgLTM5LDYgKzM5LDcgQEAgZW51bSBFeGl0S2luZCA6IHVpbnQ4X3Qg
ewogICAgIEJhZFR5cGVJbmZvRmxhZ3MsIC8vIFdlIGV4aXRlZCBiZWNhdXNlIHdlIG1hZGUgYW4g
aW5jb3JyZWN0IGFzc3VtcHRpb24gYWJvdXQgd2hhdCBUeXBlSW5mbyBmbGFncyB3ZSB3b3VsZCBz
ZWUuCiAgICAgT3ZlcmZsb3csIC8vIFdlIGV4aXRlZCBiZWNhdXNlIG9mIG92ZXJmbG93LgogICAg
IE5lZ2F0aXZlWmVybywgLy8gV2UgZXhpdGVkIGJlY2F1c2Ugd2UgZW5jb3VudGVyZWQgbmVnYXRp
dmUgemVyby4KKyAgICBOZWdhdGl2ZUluZGV4LCAvLyBXZSBleGl0ZWQgYmVjYXVzZSB3ZSBlbmNv
dW50ZXJlZCBhIG5lZ2F0aXZlIGluZGV4IGluIGEgcGxhY2Ugd2UgZGlkbid0IHdhbnQgdG8gc2Vl
IGl0LgogICAgIEludDUyT3ZlcmZsb3csIC8vIFdlIGV4aXRlZCBiZWNhdXNlIG9mIGFuIEludDUy
IG92ZXJmbG93LgogICAgIFN0b3JlVG9Ib2xlLCAvLyBXZSBoYWQgYSBzdG9yZSB0byBhIGhvbGUu
CiAgICAgTG9hZEZyb21Ib2xlLCAvLyBXZSBoYWQgYSBsb2FkIGZyb20gYSBob2xlLgpJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBYnN0cmFjdEludGVycHJldGVySW5saW5lcy5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQWJzdHJhY3RJbnRl
cnByZXRlcklubGluZXMuaAkocmV2aXNpb24gMjY1NjM3KQorKysgU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdBYnN0cmFjdEludGVycHJldGVySW5saW5lcy5oCSh3b3JraW5nIGNvcHkpCkBA
IC0yMzUwLDcgKzIzNTAsNyBAQCBib29sIEFic3RyYWN0SW50ZXJwcmV0ZXI8QWJzdHJhY3RTdGF0
ZVR5CiAgICAgICAgICAgICAgICAgLy8gd2UgZ290IHRvIHRoZSBiYWNrZW5kLiBTbyB0byBkbyB0
aGlzIHJpZ2h0LCB3ZSdkIGhhdmUgdG8gZ2V0IHRoZQogICAgICAgICAgICAgICAgIC8vIGZpeHVw
IHBoYXNlIHRvIGNoZWNrIHRoZSB3YXRjaHBvaW50IHN0YXRlIGFuZCB0aGVuIGJha2UgaW50byB0
aGUKICAgICAgICAgICAgICAgICAvLyBHZXRCeVZhbCBvcGVyYXRpb24gdGhlIGZhY3QgdGhhdCB3
ZSdyZSB1c2luZyBhIHdhdGNocG9pbnQsIHVzaW5nCi0gICAgICAgICAgICAgICAgLy8gc29tZXRo
aW5nIGxpa2UgQXJyYXk6OlNhbmVDaGFpbiAoZXhjZXB0IG5vdCBxdWl0ZSwgYmVjYXVzZSB0aGF0
CisgICAgICAgICAgICAgICAgLy8gc29tZXRoaW5nIGxpa2UgQXJyYXk6OkluQm91bmRzU2FuZUNo
YWluIChleGNlcHQgbm90IHF1aXRlLCBiZWNhdXNlIHRoYXQKICAgICAgICAgICAgICAgICAvLyBp
bXBsaWVzIGFuIGluLWJvdW5kcyBhY2Nlc3MpLiBOb25lIG9mIHRoaXMgZmVlbHMgbGlrZSBpdCdz
IHdvcnRoIGl0LAogICAgICAgICAgICAgICAgIC8vIHNvIHdlJ3JlIGdvaW5nIHdpdGggVE9QIGZv
ciBub3cuIFRoZSBzYW1lIHRoaW5nIGFwcGxpZXMgdG8KICAgICAgICAgICAgICAgICAvLyBjbG9i
YmVyaW5nIHRoZSB3b3JsZC4KQEAgLTIzNjYsMjUgKzIzNjYsMzIgQEAgYm9vbCBBYnN0cmFjdElu
dGVycHJldGVyPEFic3RyYWN0U3RhdGVUeQogICAgICAgICAgICAgbWFrZUhlYXBUb3BGb3JOb2Rl
KG5vZGUpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgQXJyYXk6OkludDMyOgot
ICAgICAgICAgICAgaWYgKG5vZGUtPmFycmF5TW9kZSgpLmlzT3V0T2ZCb3VuZHMoKSkgeworICAg
ICAgICAgICAgaWYgKG5vZGUtPmFycmF5TW9kZSgpLmlzRWZmZWN0ZnVsT3V0T2ZCb3VuZHMoKSkg
ewogICAgICAgICAgICAgICAgIGNsb2JiZXJXb3JsZCgpOwogICAgICAgICAgICAgICAgIG1ha2VI
ZWFwVG9wRm9yTm9kZShub2RlKTsKLSAgICAgICAgICAgIH0gZWxzZQorICAgICAgICAgICAgfSBl
bHNlIGlmIChub2RlLT5hcnJheU1vZGUoKS5pc091dE9mQm91bmRzU2FuZUNoYWluKCkpCisgICAg
ICAgICAgICAgICAgc2V0Tm9uQ2VsbFR5cGVGb3JOb2RlKG5vZGUsIFNwZWNJbnQzMk9ubHkgfCBT
cGVjT3RoZXIpOworICAgICAgICAgICAgZWxzZQogICAgICAgICAgICAgICAgIHNldE5vbkNlbGxU
eXBlRm9yTm9kZShub2RlLCBTcGVjSW50MzJPbmx5KTsKICAgICAgICAgICAgIGJyZWFrOwogICAg
ICAgICBjYXNlIEFycmF5OjpEb3VibGU6Ci0gICAgICAgICAgICBpZiAobm9kZS0+YXJyYXlNb2Rl
KCkuaXNPdXRPZkJvdW5kcygpKSB7CisgICAgICAgICAgICBpZiAobm9kZS0+YXJyYXlNb2RlKCku
aXNFZmZlY3RmdWxPdXRPZkJvdW5kcygpKSB7CiAgICAgICAgICAgICAgICAgY2xvYmJlcldvcmxk
KCk7CiAgICAgICAgICAgICAgICAgbWFrZUhlYXBUb3BGb3JOb2RlKG5vZGUpOwotICAgICAgICAg
ICAgfSBlbHNlIGlmIChub2RlLT5hcnJheU1vZGUoKS5pc1NhbmVDaGFpbigpKQorICAgICAgICAg
ICAgfSBlbHNlIGlmIChub2RlLT5hcnJheU1vZGUoKS5pc0luQm91bmRzU2FuZUNoYWluKCkpCiAg
ICAgICAgICAgICAgICAgc2V0Tm9uQ2VsbFR5cGVGb3JOb2RlKG5vZGUsIFNwZWNCeXRlY29kZURv
dWJsZSk7Ci0gICAgICAgICAgICBlbHNlCisgICAgICAgICAgICBlbHNlIGlmIChub2RlLT5hcnJh
eU1vZGUoKS5pc091dE9mQm91bmRzU2FuZUNoYWluKCkpIHsKKyAgICAgICAgICAgICAgICBpZiAo
ISEobm9kZS0+ZmxhZ3MoKSAmIE5vZGVCeXRlY29kZVVzZXNBc090aGVyKSkKKyAgICAgICAgICAg
ICAgICAgICAgc2V0Tm9uQ2VsbFR5cGVGb3JOb2RlKG5vZGUsIFNwZWNCeXRlY29kZURvdWJsZSB8
IFNwZWNPdGhlcik7CisgICAgICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgICAgICBz
ZXROb25DZWxsVHlwZUZvck5vZGUobm9kZSwgU3BlY0J5dGVjb2RlRG91YmxlKTsKKyAgICAgICAg
ICAgIH0gZWxzZQogICAgICAgICAgICAgICAgIHNldE5vbkNlbGxUeXBlRm9yTm9kZShub2RlLCBT
cGVjRG91YmxlUmVhbCk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBBcnJheTo6
Q29udGlndW91czoKICAgICAgICAgY2FzZSBBcnJheTo6QXJyYXlTdG9yYWdlOgogICAgICAgICBj
YXNlIEFycmF5OjpTbG93UHV0QXJyYXlTdG9yYWdlOgotICAgICAgICAgICAgaWYgKG5vZGUtPmFy
cmF5TW9kZSgpLmlzT3V0T2ZCb3VuZHMoKSkKKyAgICAgICAgICAgIGlmIChub2RlLT5hcnJheU1v
ZGUoKS5pc0VmZmVjdGZ1bE91dE9mQm91bmRzKCkpCiAgICAgICAgICAgICAgICAgY2xvYmJlcldv
cmxkKCk7CiAgICAgICAgICAgICBtYWtlSGVhcFRvcEZvck5vZGUobm9kZSk7CiAgICAgICAgICAg
ICBicmVhazsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQXJyYXlNb2RlLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0FycmF5TW9kZS5j
cHAJKHJldmlzaW9uIDI2NTYzNykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQXJy
YXlNb2RlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjYwLDcgKzI2MCw3IEBAIEFycmF5TW9kZSBB
cnJheU1vZGU6OnJlZmluZSgKICAgICAgICAgICAgIGdyYXBoLnJlZ2lzdGVyQW5kV2F0Y2hTdHJ1
Y3R1cmVUcmFuc2l0aW9uKGFycmF5UHJvdG90eXBlU3RydWN0dXJlKTsKICAgICAgICAgICAgIGdy
YXBoLnJlZ2lzdGVyQW5kV2F0Y2hTdHJ1Y3R1cmVUcmFuc2l0aW9uKG9iamVjdFByb3RvdHlwZVN0
cnVjdHVyZSk7CiAgICAgICAgICAgICBpZiAoZ2xvYmFsT2JqZWN0LT5hcnJheVByb3RvdHlwZUNo
YWluSXNTYW5lKCkpCi0gICAgICAgICAgICAgICAgcmV0dXJuIHdpdGhTcGVjdWxhdGlvbihBcnJh
eTo6U2FuZUNoYWluKTsKKyAgICAgICAgICAgICAgICByZXR1cm4gd2l0aFNwZWN1bGF0aW9uKEFy
cmF5OjpJbkJvdW5kc1NhbmVDaGFpbik7CiAgICAgICAgIH0KICAgICAgICAgcmV0dXJuIEFycmF5
TW9kZShBcnJheTo6R2VuZXJpYywgYWN0aW9uKCkpOwogICAgIH0KQEAgLTcxMywxNCArNzEzLDE2
IEBAIGNvbnN0IGNoYXIqIGFycmF5Q2xhc3NUb1N0cmluZyhBcnJheTo6Q2wKIGNvbnN0IGNoYXIq
IGFycmF5U3BlY3VsYXRpb25Ub1N0cmluZyhBcnJheTo6U3BlY3VsYXRpb24gc3BlY3VsYXRpb24p
CiB7CiAgICAgc3dpdGNoIChzcGVjdWxhdGlvbikgewotICAgIGNhc2UgQXJyYXk6OlNhbmVDaGFp
bjoKLSAgICAgICAgcmV0dXJuICJTYW5lQ2hhaW4iOworICAgIGNhc2UgQXJyYXk6OkluQm91bmRz
U2FuZUNoYWluOgorICAgICAgICByZXR1cm4gIkluQm91bmRzU2FuZUNoYWluIjsKICAgICBjYXNl
IEFycmF5OjpJbkJvdW5kczoKICAgICAgICAgcmV0dXJuICJJbkJvdW5kcyI7CiAgICAgY2FzZSBB
cnJheTo6VG9Ib2xlOgogICAgICAgICByZXR1cm4gIlRvSG9sZSI7CiAgICAgY2FzZSBBcnJheTo6
T3V0T2ZCb3VuZHM6CiAgICAgICAgIHJldHVybiAiT3V0T2ZCb3VuZHMiOworICAgIGNhc2UgQXJy
YXk6Ok91dE9mQm91bmRzU2FuZUNoYWluOgorICAgICAgICByZXR1cm4gIk91dE9mQm91bmRzU2Fu
ZUNoYWluIjsKICAgICBkZWZhdWx0OgogICAgICAgICByZXR1cm4gIlVua25vd24hIjsKICAgICB9
CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0FycmF5TW9kZS5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQXJyYXlNb2RlLmgJKHJldmlzaW9u
IDI2NTYzNykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQXJyYXlNb2RlLmgJKHdv
cmtpbmcgY29weSkKQEAgLTg5LDEwICs4OSwxMSBAQCBlbnVtIENsYXNzIDogdWludDhfdCB7CiB9
OwogCiBlbnVtIFNwZWN1bGF0aW9uIDogdWludDhfdCB7Ci0gICAgU2FuZUNoYWluLCAvLyBJbiBi
b3VuZHMgYW5kIHRoZSBhcnJheSBwcm90b3R5cGUgY2hhaW4gaXMgc3RpbGwgaW50YWN0LCBpLmUu
IGxvYWRpbmcgYSBob2xlIGRvZXNuJ3QgcmVxdWlyZSBzcGVjaWFsIHRyZWF0bWVudC4KKyAgICBJ
bkJvdW5kc1NhbmVDaGFpbiwgLy8gSW4gYm91bmRzIGFuZCB0aGUgYXJyYXkgcHJvdG90eXBlIGNo
YWluIGlzIHN0aWxsIGludGFjdCwgaS5lLiBsb2FkaW5nIGEgaG9sZSBkb2Vzbid0IHJlcXVpcmUg
c3BlY2lhbCB0cmVhdG1lbnQuCiAgICAgCiAgICAgSW5Cb3VuZHMsIC8vIEluIGJvdW5kcyBhbmQg
bm90IGxvYWRpbmcgYSBob2xlLgogICAgIFRvSG9sZSwgLy8gUG90ZW50aWFsbHkgc3RvcmluZyB0
byBhIGhvbGUuCisgICAgT3V0T2ZCb3VuZHNTYW5lQ2hhaW4sIC8vIE91dC1vZi1ib3VuZHMgYWNj
ZXNzLCBidXQgc2FuZSBjaGFpbiwgc28gdGhlcmUgYXJlIG5vIGFyYml0cmFyeSBlZmZlY3RzLiBF
LmcsIGxvYWRpbmcgb3V0IG9mIGJvdW5kcyBkb2Vzbid0IHJlcXVpcmUgdHJhdmVyc2luZyB0aGUg
cHJvdG90eXBlIGNoYWluIGlmIHdlJ3JlIGFuIG9yaWdpbmFsIGFycmF5IHN0cnVjdHVyZS4KICAg
ICBPdXRPZkJvdW5kcyAvLyBPdXQtb2YtYm91bmRzIGFjY2VzcyBhbmQgYW55dGhpbmcgY2FuIGhh
cHBlbi4KIH07CiBlbnVtIENvbnZlcnNpb24gOiB1aW50OF90IHsKQEAgLTI3NiwxNSArMjc3LDM1
IEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIGFycmF5Q2xhc3MoKSA9PSBBcnJheTo6T3JpZ2lu
YWxBcnJheSB8fCBhcnJheUNsYXNzKCkgPT0gQXJyYXk6Ok9yaWdpbmFsQ29weU9uV3JpdGVBcnJh
eTsKICAgICB9CiAgICAgCi0gICAgYm9vbCBpc1NhbmVDaGFpbigpIGNvbnN0CisgICAgYm9vbCBp
c0luQm91bmRzU2FuZUNoYWluKCkgY29uc3QKICAgICB7Ci0gICAgICAgIHJldHVybiBzcGVjdWxh
dGlvbigpID09IEFycmF5OjpTYW5lQ2hhaW47CisgICAgICAgIHJldHVybiBzcGVjdWxhdGlvbigp
ID09IEFycmF5OjpJbkJvdW5kc1NhbmVDaGFpbjsKKyAgICB9CisKKyAgICBib29sIGlzT3V0T2ZC
b3VuZHNTYW5lQ2hhaW4oKSBjb25zdAorICAgIHsKKyAgICAgICAgcmV0dXJuIHNwZWN1bGF0aW9u
KCkgPT0gQXJyYXk6Ok91dE9mQm91bmRzU2FuZUNoYWluOworICAgIH0KKworICAgIGJvb2wgaXNB
bnlTYW5lQ2hhaW4oKSBjb25zdAorICAgIHsKKyAgICAgICAgcmV0dXJuIGlzSW5Cb3VuZHNTYW5l
Q2hhaW4oKSB8fCBpc091dE9mQm91bmRzU2FuZUNoYWluKCk7CisgICAgfQorICAgIAorICAgIGJv
b2wgaXNPdXRPZkJvdW5kcygpIGNvbnN0CisgICAgeworICAgICAgICByZXR1cm4gc3BlY3VsYXRp
b24oKSA9PSBBcnJheTo6T3V0T2ZCb3VuZHMgfHwgc3BlY3VsYXRpb24oKSA9PSBBcnJheTo6T3V0
T2ZCb3VuZHNTYW5lQ2hhaW47CisgICAgfQorCisgICAgYm9vbCBpc0VmZmVjdGZ1bE91dE9mQm91
bmRzKCkgY29uc3QKKyAgICB7CisgICAgICAgIHJldHVybiBzcGVjdWxhdGlvbigpID09IEFycmF5
OjpPdXRPZkJvdW5kczsKICAgICB9CiAgICAgCiAgICAgYm9vbCBpc0luQm91bmRzKCkgY29uc3QK
ICAgICB7CiAgICAgICAgIHN3aXRjaCAoc3BlY3VsYXRpb24oKSkgewotICAgICAgICBjYXNlIEFy
cmF5OjpTYW5lQ2hhaW46CisgICAgICAgIGNhc2UgQXJyYXk6OkluQm91bmRzU2FuZUNoYWluOgog
ICAgICAgICBjYXNlIEFycmF5OjpJbkJvdW5kczoKICAgICAgICAgICAgIHJldHVybiB0cnVlOwog
ICAgICAgICBkZWZhdWx0OgpAQCAtMjk3LDExICszMTgsNiBAQCBwdWJsaWM6CiAgICAgICAgIHJl
dHVybiAhaXNJbkJvdW5kcygpOwogICAgIH0KICAgICAKLSAgICBib29sIGlzT3V0T2ZCb3VuZHMo
KSBjb25zdAotICAgIHsKLSAgICAgICAgcmV0dXJuIHNwZWN1bGF0aW9uKCkgPT0gQXJyYXk6Ok91
dE9mQm91bmRzOwotICAgIH0KLSAgICAKICAgICBib29sIGlzU2xvd1B1dCgpIGNvbnN0CiAgICAg
ewogICAgICAgICByZXR1cm4gdHlwZSgpID09IEFycmF5OjpTbG93UHV0QXJyYXlTdG9yYWdlOwpJ
bmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDU0VQaGFzZS5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDU0VQaGFzZS5jcHAJKHJldmlzaW9u
IDI2NTYzNykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ1NFUGhhc2UuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC01NTAsNyArNTUwLDcgQEAgcHJpdmF0ZToKICAgICAgICAgICAgICAg
ICAgICAgICAgIGNhc2UgQXJyYXk6OkRvdWJsZTogewogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGlmICghbW9kZS5pc0luQm91bmRzKCkpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGJyZWFrOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgIExvY2F0aW9uS2luZCBraW5k
ID0gbW9kZS5pc1NhbmVDaGFpbigpID8gSW5kZXhlZFByb3BlcnR5RG91YmxlU2FuZUNoYWluTG9j
IDogSW5kZXhlZFByb3BlcnR5RG91YmxlTG9jOworICAgICAgICAgICAgICAgICAgICAgICAgICAg
IExvY2F0aW9uS2luZCBraW5kID0gbW9kZS5pc0luQm91bmRzU2FuZUNoYWluKCkgPyBJbmRleGVk
UHJvcGVydHlEb3VibGVTYW5lQ2hhaW5Mb2MgOiBJbmRleGVkUHJvcGVydHlEb3VibGVMb2M7CiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgaGVhcCA9IEhlYXBMb2NhdGlvbihraW5kLCBJbmRl
eGVkRG91YmxlUHJvcGVydGllcywgYmFzZSwgaW5kZXgpOwogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgICAgICAgfQpJbmRleDogU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdDbG9iYmVyaXplLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdDbG9iYmVyaXplLmgJKHJldmlzaW9uIDI2NTYzNykKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ2xvYmJlcml6ZS5oCSh3b3JraW5nIGNvcHkpCkBA
IC05MjksNyArOTI5LDcgQEAgdm9pZCBjbG9iYmVyaXplKEdyYXBoJiBncmFwaCwgTm9kZSogbm9k
ZQogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAgCiAgICAgICAgIGNhc2UgQXJyYXk6
OkludDMyOgotICAgICAgICAgICAgaWYgKG1vZGUuaXNJbkJvdW5kcygpKSB7CisgICAgICAgICAg
ICBpZiAobW9kZS5pc0luQm91bmRzKCkgfHwgbW9kZS5pc091dE9mQm91bmRzU2FuZUNoYWluKCkp
IHsKICAgICAgICAgICAgICAgICByZWFkKEJ1dHRlcmZseV9wdWJsaWNMZW5ndGgpOwogICAgICAg
ICAgICAgICAgIHJlYWQoSW5kZXhlZEludDMyUHJvcGVydGllcyk7CiAgICAgICAgICAgICAgICAg
ZGVmKEhlYXBMb2NhdGlvbihpbmRleGVkUHJvcGVydHlMb2MsIEluZGV4ZWRJbnQzMlByb3BlcnRp
ZXMsIGdyYXBoLnZhckFyZ0NoaWxkKG5vZGUsIDApLCBncmFwaC52YXJBcmdDaGlsZChub2RlLCAx
KSksIExhenlOb2RlKG5vZGUpKTsKQEAgLTkzOSwxMCArOTM5LDE2IEBAIHZvaWQgY2xvYmJlcml6
ZShHcmFwaCYgZ3JhcGgsIE5vZGUqIG5vZGUKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAg
ICAgIAogICAgICAgICBjYXNlIEFycmF5OjpEb3VibGU6Ci0gICAgICAgICAgICBpZiAobW9kZS5p
c0luQm91bmRzKCkpIHsKKyAgICAgICAgICAgIGlmIChtb2RlLmlzSW5Cb3VuZHMoKSB8fCBtb2Rl
LmlzT3V0T2ZCb3VuZHNTYW5lQ2hhaW4oKSkgewogICAgICAgICAgICAgICAgIHJlYWQoQnV0dGVy
Zmx5X3B1YmxpY0xlbmd0aCk7CiAgICAgICAgICAgICAgICAgcmVhZChJbmRleGVkRG91YmxlUHJv
cGVydGllcyk7Ci0gICAgICAgICAgICAgICAgTG9jYXRpb25LaW5kIGtpbmQgPSBtb2RlLmlzU2Fu
ZUNoYWluKCkgPyBJbmRleGVkUHJvcGVydHlEb3VibGVTYW5lQ2hhaW5Mb2MgOiBJbmRleGVkUHJv
cGVydHlEb3VibGVMb2M7CisgICAgICAgICAgICAgICAgTG9jYXRpb25LaW5kIGtpbmQ7CisgICAg
ICAgICAgICAgICAgaWYgKG5vZGUtPmhhc0RvdWJsZVJlc3VsdCgpKQorICAgICAgICAgICAgICAg
ICAgICBraW5kID0gbW9kZS5pc0FueVNhbmVDaGFpbigpID8gSW5kZXhlZFByb3BlcnR5RG91Ymxl
U2FuZUNoYWluTG9jIDogSW5kZXhlZFByb3BlcnR5RG91YmxlTG9jOworICAgICAgICAgICAgICAg
IGVsc2UgeworICAgICAgICAgICAgICAgICAgICBBU1NFUlQobW9kZS5pc091dE9mQm91bmRzU2Fu
ZUNoYWluKCkpOworICAgICAgICAgICAgICAgICAgICBraW5kID0gSW5kZXhlZFByb3BlcnR5RG91
YmxlT3JPdGhlclNhbmVDaGFpbkxvYzsKKyAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAg
ICAgZGVmKEhlYXBMb2NhdGlvbihraW5kLCBJbmRleGVkRG91YmxlUHJvcGVydGllcywgZ3JhcGgu
dmFyQXJnQ2hpbGQobm9kZSwgMCksIGdyYXBoLnZhckFyZ0NoaWxkKG5vZGUsIDEpKSwgTGF6eU5v
ZGUobm9kZSkpOwogICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgIH0KQEAgLTk1
MCw3ICs5NTYsNyBAQCB2b2lkIGNsb2JiZXJpemUoR3JhcGgmIGdyYXBoLCBOb2RlKiBub2RlCiAg
ICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgICAKICAgICAgICAgY2FzZSBBcnJheTo6Q29u
dGlndW91czoKLSAgICAgICAgICAgIGlmIChtb2RlLmlzSW5Cb3VuZHMoKSkgeworICAgICAgICAg
ICAgaWYgKG1vZGUuaXNJbkJvdW5kcygpIHx8IG1vZGUuaXNPdXRPZkJvdW5kc1NhbmVDaGFpbigp
KSB7CiAgICAgICAgICAgICAgICAgcmVhZChCdXR0ZXJmbHlfcHVibGljTGVuZ3RoKTsKICAgICAg
ICAgICAgICAgICByZWFkKEluZGV4ZWRDb250aWd1b3VzUHJvcGVydGllcyk7CiAgICAgICAgICAg
ICAgICAgZGVmKEhlYXBMb2NhdGlvbihpbmRleGVkUHJvcGVydHlMb2MsIEluZGV4ZWRDb250aWd1
b3VzUHJvcGVydGllcywgZ3JhcGgudmFyQXJnQ2hpbGQobm9kZSwgMCksIGdyYXBoLnZhckFyZ0No
aWxkKG5vZGUsIDEpKSwgTGF6eU5vZGUobm9kZSkpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdGaXh1cFBoYXNlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR0ZpeHVwUGhhc2UuY3BwCShyZXZpc2lvbiAyNjU2MzcpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR0ZpeHVwUGhhc2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0x
MDU5LDIwICsxMDU5LDI0IEBAIHByaXZhdGU6CiAgICAgICAgICAgICBzd2l0Y2ggKGFycmF5TW9k
ZS50eXBlKCkpIHsKICAgICAgICAgICAgIGNhc2UgQXJyYXk6OkNvbnRpZ3VvdXM6CiAgICAgICAg
ICAgICBjYXNlIEFycmF5OjpEb3VibGU6Ci0gICAgICAgICAgICAgICAgaWYgKGFycmF5TW9kZS5p
c0pTQXJyYXlXaXRoT3JpZ2luYWxTdHJ1Y3R1cmUoKSAmJiBhcnJheU1vZGUuc3BlY3VsYXRpb24o
KSA9PSBBcnJheTo6SW5Cb3VuZHMpIHsKLSAgICAgICAgICAgICAgICAgICAgLy8gQ2hlY2sgaWYg
U2FuZUNoYWluIHdpbGwgd29yayBvbiBhIHBlci10eXBlIGJhc2lzLiBOb3RlIHRoYXQ6CisgICAg
ICAgICAgICBjYXNlIEFycmF5OjpJbnQzMjogeworICAgICAgICAgICAgICAgIE9wdGlvbmFsPEFy
cmF5OjpTcGVjdWxhdGlvbj4gc2FuZUNoYWluU3BlY3VsYXRpb247CisgICAgICAgICAgICAgICAg
aWYgKGFycmF5TW9kZS5pc0pTQXJyYXlXaXRoT3JpZ2luYWxTdHJ1Y3R1cmUoKSkgeworICAgICAg
ICAgICAgICAgICAgICAvLyBDaGVjayBpZiBJbkJvdW5kc1NhbmVDaGFpbiB3aWxsIHdvcmsgb24g
YSBwZXItdHlwZSBiYXNpcy4gTm90ZSB0aGF0OgogICAgICAgICAgICAgICAgICAgICAvLwogICAg
ICAgICAgICAgICAgICAgICAvLyAxKSBXZSBkb24ndCB3YW50IGRvdWJsZSBhcnJheXMgdG8gc29t
ZXRpbWVzIHJldHVybiB1bmRlZmluZWQsIHNpbmNlCiAgICAgICAgICAgICAgICAgICAgIC8vIHRo
YXQgd291bGQgcmVxdWlyZSBhIGNoYW5nZSB0byB0aGUgcmV0dXJuIHR5cGUgYW5kIGl0IHdvdWxk
IHBlc3NpbWlzZQogICAgICAgICAgICAgICAgICAgICAvLyB0aGluZ3MgYSBsb3QuIFNvLCB3ZSdk
IG9ubHkgd2FudCB0byBkbyB0aGF0IGlmIHdlIGFjdHVhbGx5IGhhZAogICAgICAgICAgICAgICAg
ICAgICAvLyBldmlkZW5jZSB0aGF0IHdlIGNvdWxkIHJlYWQgZnJvbSBhIGhvbGUuIFRoYXQncyBw
cmV0dHkgYW5ub3lpbmcuCiAgICAgICAgICAgICAgICAgICAgIC8vIExpa2VseSB0aGUgYmVzdCB3
YXkgdG8gaGFuZGxlIHRoYXQgY2FzZSBpcyB3aXRoIGFuIGVxdWl2YWxlbnQgb2YKLSAgICAgICAg
ICAgICAgICAgICAgLy8gU2FuZUNoYWluIGZvciBPdXRPZkJvdW5kcy4gRm9yIG5vdyB3ZSBqdXN0
IGRldGVjdCB3aGVuIFVuZGVmaW5lZCBhbmQKKyAgICAgICAgICAgICAgICAgICAgLy8gSW5Cb3Vu
ZHNTYW5lQ2hhaW4gZm9yIE91dE9mQm91bmRzLiBGb3Igbm93IHdlIGp1c3QgZGV0ZWN0IHdoZW4g
VW5kZWZpbmVkIGFuZAogICAgICAgICAgICAgICAgICAgICAvLyBOYU4gYXJlIGluZGlzdGluZ3Vp
c2hhYmxlIGFjY29yZGluZyB0byBiYWNrd2FyZHMgcHJvcGFnYXRpb24sIGFuZCBqdXN0Ci0gICAg
ICAgICAgICAgICAgICAgIC8vIHVzZSBTYW5lQ2hhaW4gaW4gdGhhdCBjYXNlLiBUaGlzIGhhcHBl
bnMgdG8gY2F0Y2ggYSBsb3Qgb2YgY2FzZXMuCisgICAgICAgICAgICAgICAgICAgIC8vIHVzZSBJ
bkJvdW5kc1NhbmVDaGFpbiBpbiB0aGF0IGNhc2UuIFRoaXMgaGFwcGVucyB0byBjYXRjaCBhIGxv
dCBvZiBjYXNlcy4KICAgICAgICAgICAgICAgICAgICAgLy8KICAgICAgICAgICAgICAgICAgICAg
Ly8gMikgV2UgZG9uJ3Qgd2FudCBpbnQzMiBhcnJheSBsb2FkcyB0byBoYXZlIHRvIGRvIGEgaG9s
ZSBjaGVjayBqdXN0IHRvCi0gICAgICAgICAgICAgICAgICAgIC8vIGNvZXJjZSB0byBVbmRlZmlu
ZWQsIHNpbmNlIHRoYXQgd291bGQgbWVhbiB0d2ljZSB0aGUgY2hlY2tzLgorICAgICAgICAgICAg
ICAgICAgICAvLyBjb2VyY2UgdG8gVW5kZWZpbmVkLCBzaW5jZSB0aGF0IHdvdWxkIG1lYW4gdHdp
Y2UgdGhlIGNoZWNrcy4gV2Ugd2FudCB0bworICAgICAgICAgICAgICAgICAgICAvLyBiZSBhYmxl
IHRvIHNheSB3ZSBhbHdheXMgcmV0dXJuIEludDMyLiBGSVhNRTogTWF5YmUgdGhpcyBzaG91bGQg
YmUgcHJvZmlsaW5nCisgICAgICAgICAgICAgICAgICAgIC8vIGJhc2VkPwogICAgICAgICAgICAg
ICAgICAgICAvLwogICAgICAgICAgICAgICAgICAgICAvLyBUaGlzIGhhcyB0d28gaW1wbGljYXRp
b25zLiBGaXJzdCwgd2UgaGF2ZSB0byBkbyBtb3JlIGNoZWNrcyB0aGFuIHdlJ2QKICAgICAgICAg
ICAgICAgICAgICAgLy8gbGlrZS4gSXQncyB1bmZvcnR1bmF0ZSB0aGF0IHdlIGhhdmUgdG8gZG8g
dGhlIGhvbGUgY2hlY2suIFNlY29uZCwKQEAgLTEwODAsMzIgKzEwODQsNDEgQEAgcHJpdmF0ZToK
ICAgICAgICAgICAgICAgICAgICAgLy8gb3V0LW9mLWJvdW5kcyBzbG93IHBhdGguIFdlIGNhbiBm
aXggdGhhdCB3aXRoOgogICAgICAgICAgICAgICAgICAgICAvLyBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTQ0NjY4CiAgICAgICAgICAgICAgICAgICAgIAotICAgICAg
ICAgICAgICAgICAgICBib29sIGNhbkRvU2FuZUNoYWluID0gZmFsc2U7CiAgICAgICAgICAgICAg
ICAgICAgIHN3aXRjaCAoYXJyYXlNb2RlLnR5cGUoKSkgeworICAgICAgICAgICAgICAgICAgICBj
YXNlIEFycmF5OjpJbnQzMjoKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIChhcnJheU1vZGUu
c3BlY3VsYXRpb24oKSA9PSBBcnJheTo6T3V0T2ZCb3VuZHMgJiYgIW1fZ3JhcGguaGFzRXhpdFNp
dGUobm9kZS0+b3JpZ2luLnNlbWFudGljLCBOZWdhdGl2ZUluZGV4KSkKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBzYW5lQ2hhaW5TcGVjdWxhdGlvbiA9IEFycmF5OjpPdXRPZkJvdW5kc1Nh
bmVDaGFpbjsKKyAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAg
ICAgICBjYXNlIEFycmF5OjpDb250aWd1b3VzOgogICAgICAgICAgICAgICAgICAgICAgICAgLy8g
VGhpcyBpcyBoYXBwZW5zIHRvIGJlIGVudGlyZWx5IG5hdHVyYWwuIFdlIGFscmVhZHkgd291bGQg
aGF2ZQogICAgICAgICAgICAgICAgICAgICAgICAgLy8gcmV0dXJuZWQgYW55IEpTVmFsdWUsIGFu
ZCBub3cgd2UnbGwgcmV0dXJuIFVuZGVmaW5lZC4gV2Ugc3RpbGwgZG8KICAgICAgICAgICAgICAg
ICAgICAgICAgIC8vIHRoZSBjaGVjayBidXQgaXQgZG9lc24ndCByZXF1aXJlIHRha2luZyBhbnkg
a2luZCBvZiBzbG93IHBhdGguCi0gICAgICAgICAgICAgICAgICAgICAgICBjYW5Eb1NhbmVDaGFp
biA9IHRydWU7CisgICAgICAgICAgICAgICAgICAgICAgICBpZiAoYXJyYXlNb2RlLnNwZWN1bGF0
aW9uKCkgPT0gQXJyYXk6Ok91dE9mQm91bmRzICYmICFtX2dyYXBoLmhhc0V4aXRTaXRlKG5vZGUt
Pm9yaWdpbi5zZW1hbnRpYywgTmVnYXRpdmVJbmRleCkpCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgc2FuZUNoYWluU3BlY3VsYXRpb24gPSBBcnJheTo6T3V0T2ZCb3VuZHNTYW5lQ2hhaW47
CisgICAgICAgICAgICAgICAgICAgICAgICBlbHNlIGlmIChhcnJheU1vZGUuc3BlY3VsYXRpb24o
KSA9PSBBcnJheTo6SW5Cb3VuZHMpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2FuZUNo
YWluU3BlY3VsYXRpb24gPSBBcnJheTo6SW5Cb3VuZHNTYW5lQ2hhaW47CiAgICAgICAgICAgICAg
ICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAg
ICAgICAgICBjYXNlIEFycmF5OjpEb3VibGU6Ci0gICAgICAgICAgICAgICAgICAgICAgICBpZiAo
IShub2RlLT5mbGFncygpICYgTm9kZUJ5dGVjb2RlVXNlc0FzT3RoZXIpKSB7CisgICAgICAgICAg
ICAgICAgICAgICAgICBpZiAoIShub2RlLT5mbGFncygpICYgTm9kZUJ5dGVjb2RlVXNlc0FzT3Ro
ZXIpICYmIGFycmF5TW9kZS5zcGVjdWxhdGlvbigpID09IEFycmF5OjpJbkJvdW5kcykgewogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIC8vIEhvbGVzIGxvb2sgbGlrZSBOYU4gYWxyZWFkeSwg
c28gaWYgdGhlIHVzZXIgZG9lc24ndCBjYXJlCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
Ly8gYWJvdXQgdGhlIGRpZmZlcmVuY2UgYmV0d2VlbiBVbmRlZmluZWQgYW5kIE5hTiB0aGVuIHdl
IGNhbgogICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGRvIHRoaXMuCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgY2FuRG9TYW5lQ2hhaW4gPSB0cnVlOwotICAgICAgICAgICAgICAg
ICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNhbmVDaGFpblNwZWN1bGF0
aW9uID0gQXJyYXk6OkluQm91bmRzU2FuZUNoYWluOworICAgICAgICAgICAgICAgICAgICAgICAg
fSBlbHNlIGlmIChhcnJheU1vZGUuc3BlY3VsYXRpb24oKSA9PSBBcnJheTo6T3V0T2ZCb3VuZHMg
JiYgIW1fZ3JhcGguaGFzRXhpdFNpdGUobm9kZS0+b3JpZ2luLnNlbWFudGljLCBOZWdhdGl2ZUlu
ZGV4KSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBzYW5lQ2hhaW5TcGVjdWxhdGlvbiA9
IEFycmF5OjpPdXRPZkJvdW5kc1NhbmVDaGFpbjsKICAgICAgICAgICAgICAgICAgICAgICAgIGJy
ZWFrOwogICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgIGRlZmF1
bHQ6CiAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICAg
fQotICAgICAgICAgICAgICAgICAgICAKLSAgICAgICAgICAgICAgICAgICAgaWYgKGNhbkRvU2Fu
ZUNoYWluKQotICAgICAgICAgICAgICAgICAgICAgICAgc2V0U2FuZUNoYWluSWZQb3NzaWJsZShu
b2RlKTsKICAgICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAgICBpZiAoc2FuZUNoYWlu
U3BlY3VsYXRpb24pCisgICAgICAgICAgICAgICAgICAgIHNldFNhbmVDaGFpbklmUG9zc2libGUo
bm9kZSwgKnNhbmVDaGFpblNwZWN1bGF0aW9uKTsKKwogICAgICAgICAgICAgICAgIGJyZWFrOwor
ICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgY2FzZSBBcnJheTo6
U3RyaW5nOgogICAgICAgICAgICAgICAgIGlmICgobm9kZS0+cHJlZGljdGlvbigpICYgflNwZWNT
dHJpbmcpCkBAIC0xMTU1LDcgKzExNjgsOCBAQCBwcml2YXRlOgogICAgICAgICAgICAgCiAgICAg
ICAgICAgICBzd2l0Y2ggKGFycmF5TW9kZS50eXBlKCkpIHsKICAgICAgICAgICAgIGNhc2UgQXJy
YXk6OkRvdWJsZToKLSAgICAgICAgICAgICAgICBpZiAoIWFycmF5TW9kZS5pc091dE9mQm91bmRz
KCkpCisgICAgICAgICAgICAgICAgaWYgKCFhcnJheU1vZGUuaXNPdXRPZkJvdW5kcygpCisgICAg
ICAgICAgICAgICAgICAgIHx8IChhcnJheU1vZGUuaXNPdXRPZkJvdW5kc1NhbmVDaGFpbigpICYm
ICEobm9kZS0+ZmxhZ3MoKSAmIE5vZGVCeXRlY29kZVVzZXNBc090aGVyKSkpCiAgICAgICAgICAg
ICAgICAgICAgIG5vZGUtPnNldFJlc3VsdChOb2RlUmVzdWx0RG91YmxlKTsKICAgICAgICAgICAg
ICAgICBicmVhazsKICAgICAgICAgICAgICAgICAKQEAgLTIyMDIsNyArMjIxNiw3IEBAIHByaXZh
dGU6CiAgICAgICAgICAgICAvLyBGSVhNRTogT3V0T2ZCb3VuZHMgc2hvdWxkbid0IHByZWNsdWRl
IGdvaW5nIHNhbmUgY2hhaW4gYmVjYXVzZSBPT0IgaXMganVzdCBmYWxzZSBhbmQgY2Fubm90IGhh
dmUgZWZmZWN0cy4KICAgICAgICAgICAgIC8vIFNlZTogaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTIwOTQ1NgogICAgICAgICAgICAgaWYgKGFycmF5TW9kZS5pc0pTQXJy
YXlXaXRoT3JpZ2luYWxTdHJ1Y3R1cmUoKSAmJiBhcnJheU1vZGUuc3BlY3VsYXRpb24oKSA9PSBB
cnJheTo6SW5Cb3VuZHMpCi0gICAgICAgICAgICAgICAgc2V0U2FuZUNoYWluSWZQb3NzaWJsZShu
b2RlKTsKKyAgICAgICAgICAgICAgICBzZXRTYW5lQ2hhaW5JZlBvc3NpYmxlKG5vZGUsIEFycmF5
OjpJbkJvdW5kc1NhbmVDaGFpbik7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogICAg
ICAgICBjYXNlIEdldERpcmVjdFBuYW1lOiB7CkBAIC0zNTA5LDcgKzM1MjMsNyBAQCBwcml2YXRl
OgogICAgICAgICAgICAgbV9pbnNlcnRpb25TZXQuaW5zZXJ0Tm9kZSgKICAgICAgICAgICAgICAg
ICBtX2luZGV4SW5CbG9jaywgU3BlY05vbmUsIENoZWNrLCBvcmlnaW4sIEVkZ2UoYXJyYXksIFN0
cmluZ1VzZSkpOwogICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgLy8gTm90ZSB0aGF0IHdl
IG9ubHkgbmVlZCB0byBiZSB1c2luZyBhIHN0cnVjdHVyZSBjaGVjayBpZiB3ZSBvcHQgZm9yIFNh
bmVDaGFpbiwgc2luY2UKKyAgICAgICAgICAgIC8vIE5vdGUgdGhhdCB3ZSBvbmx5IG5lZWQgdG8g
YmUgdXNpbmcgYSBzdHJ1Y3R1cmUgY2hlY2sgaWYgd2Ugb3B0IGZvciBJbkJvdW5kc1NhbmVDaGFp
biwgc2luY2UKICAgICAgICAgICAgIC8vIHRoYXQgbmVlZHMgdG8gcHJvdGVjdCBhZ2FpbnN0IEpT
QXJyYXkncyBfX3Byb3RvX18gYmVpbmcgY2hhbmdlZC4KICAgICAgICAgICAgIFN0cnVjdHVyZSog
c3RydWN0dXJlID0gYXJyYXlNb2RlLm9yaWdpbmFsQXJyYXlTdHJ1Y3R1cmUobV9ncmFwaCwgb3Jp
Z2luLnNlbWFudGljKTsKICAgICAgICAgCkBAIC0zNTUxLDcgKzM1NjUsNyBAQCBwcml2YXRlOgog
ICAgICAgICAgICAgT3BJbmZvKGFycmF5TW9kZS5hc1dvcmQoKSksIEVkZ2UoYXJyYXksIEtub3du
Q2VsbFVzZSkpOwogICAgIH0KIAotICAgIHZvaWQgc2V0U2FuZUNoYWluSWZQb3NzaWJsZShOb2Rl
KiBub2RlKQorICAgIHZvaWQgc2V0U2FuZUNoYWluSWZQb3NzaWJsZShOb2RlKiBub2RlLCBBcnJh
eTo6U3BlY3VsYXRpb24gc3BlY3VsYXRpb24pCiAgICAgewogICAgICAgICBKU0dsb2JhbE9iamVj
dCogZ2xvYmFsT2JqZWN0ID0gbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNl
bWFudGljKTsKICAgICAgICAgU3RydWN0dXJlKiBhcnJheVByb3RvdHlwZVN0cnVjdHVyZSA9IGds
b2JhbE9iamVjdC0+YXJyYXlQcm90b3R5cGUoKS0+c3RydWN0dXJlKHZtKCkpOwpAQCAtMzU2MSw3
ICszNTc1LDcgQEAgcHJpdmF0ZToKICAgICAgICAgICAgICYmIGdsb2JhbE9iamVjdC0+YXJyYXlQ
cm90b3R5cGVDaGFpbklzU2FuZSgpKSB7CiAgICAgICAgICAgICBtX2dyYXBoLnJlZ2lzdGVyQW5k
V2F0Y2hTdHJ1Y3R1cmVUcmFuc2l0aW9uKGFycmF5UHJvdG90eXBlU3RydWN0dXJlKTsKICAgICAg
ICAgICAgIG1fZ3JhcGgucmVnaXN0ZXJBbmRXYXRjaFN0cnVjdHVyZVRyYW5zaXRpb24ob2JqZWN0
UHJvdG90eXBlU3RydWN0dXJlKTsKLSAgICAgICAgICAgIG5vZGUtPnNldEFycmF5TW9kZShub2Rl
LT5hcnJheU1vZGUoKS53aXRoU3BlY3VsYXRpb24oQXJyYXk6OlNhbmVDaGFpbikpOworICAgICAg
ICAgICAgbm9kZS0+c2V0QXJyYXlNb2RlKG5vZGUtPmFycmF5TW9kZSgpLndpdGhTcGVjdWxhdGlv
bihzcGVjdWxhdGlvbikpOwogICAgICAgICAgICAgbm9kZS0+Y2xlYXJGbGFncyhOb2RlTXVzdEdl
bmVyYXRlKTsKICAgICAgICAgfQogICAgIH0KQEAgLTM5NDMsNyArMzk1Nyw3IEBAIHByaXZhdGU6
CiAgICAgICAgIC8vIEZJWE1FOiBPdXRPZkJvdW5kcyBzaG91bGRuJ3QgcHJlY2x1ZGUgZ29pbmcg
c2FuZSBjaGFpbiBiZWNhdXNlIE9PQiBpcyBqdXN0IGZhbHNlIGFuZCBjYW5ub3QgaGF2ZSBlZmZl
Y3RzLgogICAgICAgICAvLyBTZWU6IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0yMDk0NTYKICAgICAgICAgaWYgKGFycmF5TW9kZS5pc0pTQXJyYXlXaXRoT3JpZ2luYWxT
dHJ1Y3R1cmUoKSAmJiBhcnJheU1vZGUuc3BlY3VsYXRpb24oKSA9PSBBcnJheTo6SW5Cb3VuZHMp
Ci0gICAgICAgICAgICBzZXRTYW5lQ2hhaW5JZlBvc3NpYmxlKG5vZGUpOworICAgICAgICAgICAg
c2V0U2FuZUNoYWluSWZQb3NzaWJsZShub2RlLCBBcnJheTo6SW5Cb3VuZHNTYW5lQ2hhaW4pOwog
CiAgICAgICAgIGZpeEVkZ2U8Q2VsbFVzZT4obV9ncmFwaC52YXJBcmdDaGlsZChub2RlLCAwKSk7
CiAgICAgICAgIGZpeEVkZ2U8SW50MzJVc2U+KG1fZ3JhcGgudmFyQXJnQ2hpbGQobm9kZSwgMSkp
OwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdIZWFwTG9jYXRpb24uY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHSGVhcExvY2F0aW9uLmNw
cAkocmV2aXNpb24gMjY1NjM3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdIZWFw
TG9jYXRpb24uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMzgsNiArMTM4LDEwIEBAIHZvaWQgcHJp
bnRJbnRlcm5hbChQcmludFN0cmVhbSYgb3V0LCBMb2MKICAgICAgICAgb3V0LnByaW50KCJJbmRl
eGVkUHJvcGVydHlEb3VibGVTYW5lQ2hhaW5Mb2MiKTsKICAgICAgICAgcmV0dXJuOwogCisgICAg
Y2FzZSBJbmRleGVkUHJvcGVydHlEb3VibGVPck90aGVyU2FuZUNoYWluTG9jOgorICAgICAgICBv
dXQucHJpbnQoIkluZGV4ZWRQcm9wZXJ0eURvdWJsZU9yT3RoZXJTYW5lQ2hhaW5Mb2MiKTsKKyAg
ICAgICAgcmV0dXJuOworCiAgICAgY2FzZSBJbmRleGVkUHJvcGVydHlJbnQzMkxvYzoKICAgICAg
ICAgb3V0LnByaW50KCJJbmRleGVkUHJvcGVydHlJbnQzMkxvYyIpOwogICAgICAgICByZXR1cm47
CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0hlYXBMb2NhdGlvbi5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHSGVhcExvY2F0aW9uLmgJKHJl
dmlzaW9uIDI2NTYzNykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHSGVhcExvY2F0
aW9uLmgJKHdvcmtpbmcgY29weSkKQEAgLTQ5LDYgKzQ5LDcgQEAgZW51bSBMb2NhdGlvbktpbmQg
ewogICAgIEhhc0luZGV4ZWRQcm9wZXJ0eUxvYywKICAgICBJbmRleGVkUHJvcGVydHlEb3VibGVM
b2MsCiAgICAgSW5kZXhlZFByb3BlcnR5RG91YmxlU2FuZUNoYWluTG9jLAorICAgIEluZGV4ZWRQ
cm9wZXJ0eURvdWJsZU9yT3RoZXJTYW5lQ2hhaW5Mb2MsCiAgICAgSW5kZXhlZFByb3BlcnR5SW50
MzJMb2MsCiAgICAgSW5kZXhlZFByb3BlcnR5SW50NTJMb2MsCiAgICAgSW5kZXhlZFByb3BlcnR5
SlNMb2MsCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklU
MzJfNjQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3Bl
Y3VsYXRpdmVKSVQzMl82NC5jcHAJKHJldmlzaW9uIDI2NTYzNykKKysrIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQzMl82NC5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTIzNjYsNyArMjM2Niw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSogbm9k
ZSkKICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgIEdQUlRlbXBvcmFyeSByZXN1bHRQYXls
b2FkKHRoaXMpOwogICAgICAgICAgICAgICAgIGlmIChub2RlLT5hcnJheU1vZGUoKS50eXBlKCkg
PT0gQXJyYXk6OkludDMyKSB7Ci0gICAgICAgICAgICAgICAgICAgIEFTU0VSVCghbm9kZS0+YXJy
YXlNb2RlKCkuaXNTYW5lQ2hhaW4oKSk7CisgICAgICAgICAgICAgICAgICAgIEFTU0VSVCghbm9k
ZS0+YXJyYXlNb2RlKCkuaXNJbkJvdW5kc1NhbmVDaGFpbigpKTsKICAgICAgICAgICAgICAgICAg
ICAgCiAgICAgICAgICAgICAgICAgICAgIHNwZWN1bGF0aW9uQ2hlY2soCiAgICAgICAgICAgICAg
ICAgICAgICAgICBPdXRPZkJvdW5kcywgSlNWYWx1ZVJlZ3MoKSwgMCwKQEAgLTIzOTIsNyArMjM5
Miw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSogbm9kZSkKICAgICAgICAg
ICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkJhc2VJbmRleCgKICAgICAgICAgICAgICAgICAg
ICAgICAgIHN0b3JhZ2VSZWcsIHByb3BlcnR5UmVnLCBNYWNyb0Fzc2VtYmxlcjo6VGltZXNFaWdo
dCwgUGF5bG9hZE9mZnNldCksCiAgICAgICAgICAgICAgICAgICAgIHJlc3VsdFBheWxvYWQuZ3By
KCkpOwotICAgICAgICAgICAgICAgIGlmIChub2RlLT5hcnJheU1vZGUoKS5pc1NhbmVDaGFpbigp
KSB7CisgICAgICAgICAgICAgICAgaWYgKG5vZGUtPmFycmF5TW9kZSgpLmlzSW5Cb3VuZHNTYW5l
Q2hhaW4oKSkgewogICAgICAgICAgICAgICAgICAgICBKSVRDb21waWxlcjo6SnVtcCBub3RIb2xl
ID0gbV9qaXQuYnJhbmNoSWZOb3RFbXB0eShyZXN1bHRUYWcuZ3ByKCkpOwogICAgICAgICAgICAg
ICAgICAgICBtX2ppdC5tb3ZlKFRydXN0ZWRJbW0zMihKU1ZhbHVlOjpVbmRlZmluZWRUYWcpLCBy
ZXN1bHRUYWcuZ3ByKCkpOwogICAgICAgICAgICAgICAgICAgICBtX2ppdC5tb3ZlKFRydXN0ZWRJ
bW0zMigwKSwgcmVzdWx0UGF5bG9hZC5ncHIoKSk7CkBAIC0yNDUzLDcgKzI0NTMsNyBAQCB2b2lk
IFNwZWN1bGF0aXZlSklUOjpjb21waWxlKE5vZGUqIG5vZGUpCiAgICAgICAgICAgICAKICAgICAg
ICAgICAgICAgICBGUFJUZW1wb3JhcnkgcmVzdWx0KHRoaXMpOwogICAgICAgICAgICAgICAgIG1f
aml0LmxvYWREb3VibGUoTWFjcm9Bc3NlbWJsZXI6OkJhc2VJbmRleChzdG9yYWdlUmVnLCBwcm9w
ZXJ0eVJlZywgTWFjcm9Bc3NlbWJsZXI6OlRpbWVzRWlnaHQpLCByZXN1bHQuZnByKCkpOwotICAg
ICAgICAgICAgICAgIGlmICghbm9kZS0+YXJyYXlNb2RlKCkuaXNTYW5lQ2hhaW4oKSkKKyAgICAg
ICAgICAgICAgICBpZiAoIW5vZGUtPmFycmF5TW9kZSgpLmlzSW5Cb3VuZHNTYW5lQ2hhaW4oKSkK
ICAgICAgICAgICAgICAgICAgICAgc3BlY3VsYXRpb25DaGVjayhMb2FkRnJvbUhvbGUsIEpTVmFs
dWVSZWdzKCksIDAsIG1faml0LmJyYW5jaElmTmFOKHJlc3VsdC5mcHIoKSkpOwogICAgICAgICAg
ICAgICAgIGRvdWJsZVJlc3VsdChyZXN1bHQuZnByKCksIG5vZGUpOwogICAgICAgICAgICAgICAg
IGJyZWFrOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJ
VDY0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1
bGF0aXZlSklUNjQuY3BwCShyZXZpc2lvbiAyNjU2MzcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNzM2LDcg
KzI3MzYsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlKE5vZGUqIG5vZGUpCiAgICAg
ICAgICAgICAgICAgR1BSVGVtcG9yYXJ5IHJlc3VsdCh0aGlzKTsKIAogICAgICAgICAgICAgICAg
IG1faml0LmxvYWQ2NChNYWNyb0Fzc2VtYmxlcjo6QmFzZUluZGV4KHN0b3JhZ2VSZWcsIHByb3Bl
cnR5UmVnLCBNYWNyb0Fzc2VtYmxlcjo6VGltZXNFaWdodCksIHJlc3VsdC5ncHIoKSk7Ci0gICAg
ICAgICAgICAgICAgaWYgKG5vZGUtPmFycmF5TW9kZSgpLmlzU2FuZUNoYWluKCkpIHsKKyAgICAg
ICAgICAgICAgICBpZiAobm9kZS0+YXJyYXlNb2RlKCkuaXNJbkJvdW5kc1NhbmVDaGFpbigpKSB7
CiAgICAgICAgICAgICAgICAgICAgIEFTU0VSVChub2RlLT5hcnJheU1vZGUoKS50eXBlKCkgPT0g
QXJyYXk6OkNvbnRpZ3VvdXMpOwogICAgICAgICAgICAgICAgICAgICBKSVRDb21waWxlcjo6SnVt
cCBub3RIb2xlID0gbV9qaXQuYnJhbmNoSWZOb3RFbXB0eShyZXN1bHQuZ3ByKCkpOwogICAgICAg
ICAgICAgICAgICAgICBtX2ppdC5tb3ZlKFRydXN0ZWRJbW02NChKU1ZhbHVlOjplbmNvZGUoanNV
bmRlZmluZWQoKSkpLCByZXN1bHQuZ3ByKCkpOwpAQCAtMjc2OSwxMiArMjc2OSwyMSBAQCB2b2lk
IFNwZWN1bGF0aXZlSklUOjpjb21waWxlKE5vZGUqIG5vZGUpCiAgICAgICAgICAgICBzbG93Q2Fz
ZXMuYXBwZW5kKG1faml0LmJyYW5jaDMyKE1hY3JvQXNzZW1ibGVyOjpBYm92ZU9yRXF1YWwsIHBy
b3BlcnR5UmVnLCBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhzdG9yYWdlUmVnLCBCdXR0ZXJmbHk6
Om9mZnNldE9mUHVibGljTGVuZ3RoKCkpKSk7CiAKICAgICAgICAgICAgIG1faml0LmxvYWQ2NChN
YWNyb0Fzc2VtYmxlcjo6QmFzZUluZGV4KHN0b3JhZ2VSZWcsIHByb3BlcnR5UmVnLCBNYWNyb0Fz
c2VtYmxlcjo6VGltZXNFaWdodCksIHJlc3VsdFJlZyk7Ci0gICAgICAgICAgICBzbG93Q2FzZXMu
YXBwZW5kKG1faml0LmJyYW5jaElmRW1wdHkocmVzdWx0UmVnKSk7CisKKyAgICAgICAgICAgIGlm
IChub2RlLT5hcnJheU1vZGUoKS5pc091dE9mQm91bmRzU2FuZUNoYWluKCkpIHsKKyAgICAgICAg
ICAgICAgICBhdXRvIGRvbmUgPSBtX2ppdC5icmFuY2hJZk5vdEVtcHR5KHJlc3VsdFJlZyk7Cisg
ICAgICAgICAgICAgICAgc2xvd0Nhc2VzLmxpbmsoJm1faml0KTsKKyAgICAgICAgICAgICAgICBz
cGVjdWxhdGlvbkNoZWNrKE5lZ2F0aXZlSW5kZXgsIEpTVmFsdWVSZWdzKCksIG51bGxwdHIsIG1f
aml0LmJyYW5jaDMyKE1hY3JvQXNzZW1ibGVyOjpMZXNzVGhhbiwgcHJvcGVydHlSZWcsIENDYWxs
SGVscGVyczo6VHJ1c3RlZEltbTMyKDApKSk7CisgICAgICAgICAgICAgICAgbV9qaXQubW92ZShD
Q2FsbEhlbHBlcnM6OlRydXN0ZWRJbW02NChKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSkp
LCByZXN1bHRSZWcpOworICAgICAgICAgICAgICAgIGRvbmUubGluaygmbV9qaXQpOworICAgICAg
ICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICBzbG93Q2FzZXMuYXBwZW5kKG1faml0LmJy
YW5jaElmRW1wdHkocmVzdWx0UmVnKSk7CisgICAgICAgICAgICAgICAgYWRkU2xvd1BhdGhHZW5l
cmF0b3IoCisgICAgICAgICAgICAgICAgICAgIHNsb3dQYXRoQ2FsbCgKKyAgICAgICAgICAgICAg
ICAgICAgICAgIHNsb3dDYXNlcywgdGhpcywgb3BlcmF0aW9uR2V0QnlWYWxPYmplY3RJbnQsCisg
ICAgICAgICAgICAgICAgICAgICAgICByZXN1bHQuZ3ByKCksIFRydXN0ZWRJbW1QdHI6OndlYWtQ
b2ludGVyKG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1h
bnRpYykpLCBiYXNlUmVnLCBwcm9wZXJ0eVJlZykpOworICAgICAgICAgICAgfQogICAgICAgICAg
ICAgCi0gICAgICAgICAgICBhZGRTbG93UGF0aEdlbmVyYXRvcigKLSAgICAgICAgICAgICAgICBz
bG93UGF0aENhbGwoCi0gICAgICAgICAgICAgICAgICAgIHNsb3dDYXNlcywgdGhpcywgb3BlcmF0
aW9uR2V0QnlWYWxPYmplY3RJbnQsCi0gICAgICAgICAgICAgICAgICAgIHJlc3VsdC5ncHIoKSwg
VHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RG
b3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSksIGJhc2VSZWcsIHByb3BlcnR5UmVnKSk7CiAgICAg
ICAgICAgICAKICAgICAgICAgICAgIGpzVmFsdWVSZXN1bHQocmVzdWx0UmVnLCBub2RlKTsKICAg
ICAgICAgICAgIGJyZWFrOwpAQCAtMjc5NywxMiArMjgwNiwxNCBAQCB2b2lkIFNwZWN1bGF0aXZl
SklUOjpjb21waWxlKE5vZGUqIG5vZGUpCiAgICAgICAgICAgICAgICAgc3BlY3VsYXRpb25DaGVj
ayhPdXRPZkJvdW5kcywgSlNWYWx1ZVJlZ3MoKSwgbnVsbHB0ciwgbV9qaXQuYnJhbmNoMzIoTWFj
cm9Bc3NlbWJsZXI6OkFib3ZlT3JFcXVhbCwgcHJvcGVydHlSZWcsIE1hY3JvQXNzZW1ibGVyOjpB
ZGRyZXNzKHN0b3JhZ2VSZWcsIEJ1dHRlcmZseTo6b2Zmc2V0T2ZQdWJsaWNMZW5ndGgoKSkpKTsK
IAogICAgICAgICAgICAgICAgIG1faml0LmxvYWREb3VibGUoTWFjcm9Bc3NlbWJsZXI6OkJhc2VJ
bmRleChzdG9yYWdlUmVnLCBwcm9wZXJ0eVJlZywgTWFjcm9Bc3NlbWJsZXI6OlRpbWVzRWlnaHQp
LCByZXN1bHRSZWcpOwotICAgICAgICAgICAgICAgIGlmICghbm9kZS0+YXJyYXlNb2RlKCkuaXNT
YW5lQ2hhaW4oKSkKKyAgICAgICAgICAgICAgICBpZiAoIW5vZGUtPmFycmF5TW9kZSgpLmlzSW5C
b3VuZHNTYW5lQ2hhaW4oKSkKICAgICAgICAgICAgICAgICAgICAgc3BlY3VsYXRpb25DaGVjayhM
b2FkRnJvbUhvbGUsIEpTVmFsdWVSZWdzKCksIG51bGxwdHIsIG1faml0LmJyYW5jaElmTmFOKHJl
c3VsdFJlZykpOwogICAgICAgICAgICAgICAgIGRvdWJsZVJlc3VsdChyZXN1bHRSZWcsIG5vZGUp
OwogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgfQogCisgICAgICAgICAgICBi
b29sIHJlc3VsdElzVW5ib3hlZCA9IG5vZGUtPmFycmF5TW9kZSgpLmlzT3V0T2ZCb3VuZHNTYW5l
Q2hhaW4oKSAmJiAhKG5vZGUtPmZsYWdzKCkgJiBOb2RlQnl0ZWNvZGVVc2VzQXNPdGhlcik7CisK
ICAgICAgICAgICAgIFNwZWN1bGF0ZUNlbGxPcGVyYW5kIGJhc2UodGhpcywgbV9ncmFwaC52YXJB
cmdDaGlsZChub2RlLCAwKSk7CiAgICAgICAgICAgICBTcGVjdWxhdGVTdHJpY3RJbnQzMk9wZXJh
bmQgcHJvcGVydHkodGhpcywgbV9ncmFwaC52YXJBcmdDaGlsZChub2RlLCAxKSk7CiAgICAgICAg
ICAgICBTdG9yYWdlT3BlcmFuZCBzdG9yYWdlKHRoaXMsIG1fZ3JhcGgudmFyQXJnQ2hpbGQobm9k
ZSwgMikpOwpAQCAtMjgxNCw5ICsyODI1LDEzIEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBp
bGUoTm9kZSogbm9kZSkKICAgICAgICAgICAgIGlmICghbV9jb21waWxlT2theSkKICAgICAgICAg
ICAgICAgICByZXR1cm47CiAgICAgICAgICAgICAKLSAgICAgICAgICAgIEdQUlRlbXBvcmFyeSBy
ZXN1bHQodGhpcyk7CisgICAgICAgICAgICBPcHRpb25hbDxHUFJUZW1wb3Jhcnk+IHJlc3VsdDsK
KyAgICAgICAgICAgIE9wdGlvbmFsPEdQUlJlZz4gcmVzdWx0UmVnOworICAgICAgICAgICAgaWYg
KCFyZXN1bHRJc1VuYm94ZWQpIHsKKyAgICAgICAgICAgICAgICByZXN1bHQuZW1wbGFjZSh0aGlz
KTsKKyAgICAgICAgICAgICAgICByZXN1bHRSZWcgPSByZXN1bHQtPmdwcigpOworICAgICAgICAg
ICAgfQogICAgICAgICAgICAgRlBSVGVtcG9yYXJ5IHRlbXAodGhpcyk7Ci0gICAgICAgICAgICBH
UFJSZWcgcmVzdWx0UmVnID0gcmVzdWx0LmdwcigpOwogICAgICAgICAgICAgRlBSUmVnIHRlbXBS
ZWcgPSB0ZW1wLmZwcigpOwogICAgICAgICAgICAgCiAgICAgICAgICAgICBNYWNyb0Fzc2VtYmxl
cjo6SnVtcExpc3Qgc2xvd0Nhc2VzOwpAQCAtMjgyNCwxNSArMjgzOSwzNSBAQCB2b2lkIFNwZWN1
bGF0aXZlSklUOjpjb21waWxlKE5vZGUqIG5vZGUpCiAgICAgICAgICAgICBzbG93Q2FzZXMuYXBw
ZW5kKG1faml0LmJyYW5jaDMyKE1hY3JvQXNzZW1ibGVyOjpBYm92ZU9yRXF1YWwsIHByb3BlcnR5
UmVnLCBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhzdG9yYWdlUmVnLCBCdXR0ZXJmbHk6Om9mZnNl
dE9mUHVibGljTGVuZ3RoKCkpKSk7CiAKICAgICAgICAgICAgIG1faml0LmxvYWREb3VibGUoTWFj
cm9Bc3NlbWJsZXI6OkJhc2VJbmRleChzdG9yYWdlUmVnLCBwcm9wZXJ0eVJlZywgTWFjcm9Bc3Nl
bWJsZXI6OlRpbWVzRWlnaHQpLCB0ZW1wUmVnKTsKLSAgICAgICAgICAgIHNsb3dDYXNlcy5hcHBl
bmQobV9qaXQuYnJhbmNoSWZOYU4odGVtcFJlZykpOwotICAgICAgICAgICAgYm94RG91YmxlKHRl
bXBSZWcsIHJlc3VsdFJlZyk7Ci0gICAgICAgICAgICAKLSAgICAgICAgICAgIGFkZFNsb3dQYXRo
R2VuZXJhdG9yKAotICAgICAgICAgICAgICAgIHNsb3dQYXRoQ2FsbCgKLSAgICAgICAgICAgICAg
ICAgICAgc2xvd0Nhc2VzLCB0aGlzLCBvcGVyYXRpb25HZXRCeVZhbE9iamVjdEludCwKLSAgICAg
ICAgICAgICAgICAgICAgcmVzdWx0LmdwcigpLCBUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRlciht
X2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpKSwg
YmFzZVJlZywgcHJvcGVydHlSZWcpKTsKLSAgICAgICAgICAgIAotICAgICAgICAgICAganNWYWx1
ZVJlc3VsdChyZXN1bHRSZWcsIG5vZGUpOworICAgICAgICAgICAgaWYgKG5vZGUtPmFycmF5TW9k
ZSgpLmlzT3V0T2ZCb3VuZHNTYW5lQ2hhaW4oKSkgeworICAgICAgICAgICAgICAgIGlmIChyZXN1
bHRJc1VuYm94ZWQpIHsKKyAgICAgICAgICAgICAgICAgICAgYXV0byBkb25lID0gbV9qaXQuanVt
cCgpOworICAgICAgICAgICAgICAgICAgICBzbG93Q2FzZXMubGluaygmbV9qaXQpOworICAgICAg
ICAgICAgICAgICAgICBzcGVjdWxhdGlvbkNoZWNrKE5lZ2F0aXZlSW5kZXgsIEpTVmFsdWVSZWdz
KCksIG51bGxwdHIsIG1faml0LmJyYW5jaDMyKE1hY3JvQXNzZW1ibGVyOjpMZXNzVGhhbiwgcHJv
cGVydHlSZWcsIENDYWxsSGVscGVyczo6VHJ1c3RlZEltbTMyKDApKSk7CisgICAgICAgICAgICAg
ICAgICAgIHN0YXRpYyBjb25zdCBkb3VibGUgTmFOID0gUE5hTjsKKyAgICAgICAgICAgICAgICAg
ICAgbV9qaXQubG9hZERvdWJsZShUcnVzdGVkSW1tUHRyKCZOYU4pLCB0ZW1wUmVnKTsKKyAgICAg
ICAgICAgICAgICAgICAgZG9uZS5saW5rKCZtX2ppdCk7CisgICAgICAgICAgICAgICAgICAgIGRv
dWJsZVJlc3VsdCh0ZW1wUmVnLCBub2RlKTsKKyAgICAgICAgICAgICAgICB9IGVsc2UgeworICAg
ICAgICAgICAgICAgICAgICBzbG93Q2FzZXMuYXBwZW5kKG1faml0LmJyYW5jaElmTmFOKHRlbXBS
ZWcpKTsKKyAgICAgICAgICAgICAgICAgICAgYm94RG91YmxlKHRlbXBSZWcsICpyZXN1bHRSZWcp
OworICAgICAgICAgICAgICAgICAgICBhdXRvIGRvbmUgPSBtX2ppdC5qdW1wKCk7CisgICAgICAg
ICAgICAgICAgICAgIHNsb3dDYXNlcy5saW5rKCZtX2ppdCk7CisgICAgICAgICAgICAgICAgICAg
IHNwZWN1bGF0aW9uQ2hlY2soTmVnYXRpdmVJbmRleCwgSlNWYWx1ZVJlZ3MoKSwgbnVsbHB0ciwg
bV9qaXQuYnJhbmNoMzIoTWFjcm9Bc3NlbWJsZXI6Okxlc3NUaGFuLCBwcm9wZXJ0eVJlZywgQ0Nh
bGxIZWxwZXJzOjpUcnVzdGVkSW1tMzIoMCkpKTsKKyAgICAgICAgICAgICAgICAgICAgbV9qaXQu
bW92ZShDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW02NChKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmlu
ZWQoKSkpLCAqcmVzdWx0UmVnKTsKKyAgICAgICAgICAgICAgICAgICAgZG9uZS5saW5rKCZtX2pp
dCk7CisgICAgICAgICAgICAgICAgICAgIGpzVmFsdWVSZXN1bHQoKnJlc3VsdFJlZywgbm9kZSk7
CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAg
ICBzbG93Q2FzZXMuYXBwZW5kKG1faml0LmJyYW5jaElmTmFOKHRlbXBSZWcpKTsKKyAgICAgICAg
ICAgICAgICBib3hEb3VibGUodGVtcFJlZywgKnJlc3VsdFJlZyk7CisgICAgICAgICAgICAgICAg
YWRkU2xvd1BhdGhHZW5lcmF0b3IoCisgICAgICAgICAgICAgICAgICAgIHNsb3dQYXRoQ2FsbCgK
KyAgICAgICAgICAgICAgICAgICAgICAgIHNsb3dDYXNlcywgdGhpcywgb3BlcmF0aW9uR2V0QnlW
YWxPYmplY3RJbnQsCisgICAgICAgICAgICAgICAgICAgICAgICAqcmVzdWx0UmVnLCBUcnVzdGVk
SW1tUHRyOjp3ZWFrUG9pbnRlcihtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2Rl
LT5vcmlnaW4uc2VtYW50aWMpKSwgYmFzZVJlZywgcHJvcGVydHlSZWcpKTsKKyAgICAgICAgICAg
ICAgICBqc1ZhbHVlUmVzdWx0KCpyZXN1bHRSZWcsIG5vZGUpOworICAgICAgICAgICAgfQorCiAg
ICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmNwcAkocmV2aXNpb24gMjY1NjM3KQorKysg
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTI0MDgsNyArMjQwOCw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVH
ZXRCeVZhbE9uU3QKIAogICAgICAgICBpZiAoZ2xvYmFsT2JqZWN0LT5zdHJpbmdQcm90b3R5cGVD
aGFpbklzU2FuZSgpKSB7CiAgICAgICAgICAgICAvLyBGSVhNRTogVGhpcyBjb3VsZCBiZSBjYXB0
dXJlZCB1c2luZyBhIFNwZWN1bGF0aW9uIG1vZGUgdGhhdCBtZWFucyAib3V0LW9mLWJvdW5kcwot
ICAgICAgICAgICAgLy8gbG9hZHMgcmV0dXJuIGEgdHJpdmlhbCB2YWx1ZSIuIFNvbWV0aGluZyBs
aWtlIFNhbmVDaGFpbk91dE9mQm91bmRzLiBUaGlzIHNob3VsZAorICAgICAgICAgICAgLy8gbG9h
ZHMgcmV0dXJuIGEgdHJpdmlhbCB2YWx1ZSIuIFNvbWV0aGluZyBsaWtlIE91dE9mQm91bmRzU2Fu
ZUNoYWluLiBUaGlzIHNob3VsZAogICAgICAgICAgICAgLy8gc3BlY3VsYXRlIHRoYXQgd2UgZG9u
J3QgdGFrZSBuZWdhdGl2ZSBvdXQtb2YtYm91bmRzLCBvciBiZXR0ZXIgeWV0LCBpdCBzaG91bGQg
cmVseQogICAgICAgICAgICAgLy8gb24gYSBzdHJpbmdQcm90b3R5cGVDaGFpbklzU2FuZSgpIGd1
YXJhbnRlZWluZyB0aGF0IHRoZSBwcm90b3R5cGVzIGhhdmUgbm8gbmVnYXRpdmUKICAgICAgICAg
ICAgIC8vIGluZGV4ZWQgcHJvcGVydGllcyBlaXRoZXIuCkBAIC0xNDE0OCw3ICsxNDE0OCw3IEBA
IHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVIYXNJbmRleGVkUHIKICAgICAgICAgbV9qaXQu
bG9hZDMyKE1hY3JvQXNzZW1ibGVyOjpCYXNlSW5kZXgoc3RvcmFnZUdQUiwgaW5kZXhHUFIsIE1h
Y3JvQXNzZW1ibGVyOjpUaW1lc0VpZ2h0LCBPQkpFQ1RfT0ZGU0VUT0YoSlNWYWx1ZSwgdS5hc0Jp
dHMudGFnKSksIHNjcmF0Y2hHUFIpOwogI2VuZGlmCiAKLSAgICAgICAgaWYgKG1vZGUuaXNTYW5l
Q2hhaW4oKSkgeworICAgICAgICBpZiAobW9kZS5pc0luQm91bmRzU2FuZUNoYWluKCkpIHsKICAg
ICAgICAgICAgIG1faml0LmlzTm90RW1wdHkoc2NyYXRjaEdQUiwgcmVzdWx0R1BSKTsKICAgICAg
ICAgICAgIGJyZWFrOwogICAgICAgICB9CkBAIC0xNDE3Nyw3ICsxNDE3Nyw3IEBAIHZvaWQgU3Bl
Y3VsYXRpdmVKSVQ6OmNvbXBpbGVIYXNJbmRleGVkUHIKIAogICAgICAgICBtX2ppdC5sb2FkRG91
YmxlKE1hY3JvQXNzZW1ibGVyOjpCYXNlSW5kZXgoc3RvcmFnZUdQUiwgaW5kZXhHUFIsIE1hY3Jv
QXNzZW1ibGVyOjpUaW1lc0VpZ2h0KSwgc2NyYXRjaEZQUik7CiAKLSAgICAgICAgaWYgKG1vZGUu
aXNTYW5lQ2hhaW4oKSkgeworICAgICAgICBpZiAobW9kZS5pc0luQm91bmRzU2FuZUNoYWluKCkp
IHsKICAgICAgICAgICAgIG1faml0LmNvbXBhcmVEb3VibGUoTWFjcm9Bc3NlbWJsZXI6OkRvdWJs
ZUVxdWFsQW5kT3JkZXJlZCwgc2NyYXRjaEZQUiwgc2NyYXRjaEZQUiwgcmVzdWx0R1BSKTsKICAg
ICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CkBAIC0xNDIxMCwxMyArMTQyMTAsMTMgQEAgdm9p
ZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUhhc0luZGV4ZWRQcgogICAgICAgICBtX2ppdC5sb2Fk
MzIoTWFjcm9Bc3NlbWJsZXI6OkJhc2VJbmRleChzdG9yYWdlR1BSLCBpbmRleEdQUiwgTWFjcm9B
c3NlbWJsZXI6OlRpbWVzRWlnaHQsIEFycmF5U3RvcmFnZTo6dmVjdG9yT2Zmc2V0KCkgKyBPQkpF
Q1RfT0ZGU0VUT0YoSlNWYWx1ZSwgdS5hc0JpdHMudGFnKSksIHNjcmF0Y2hHUFIpOwogI2VuZGlm
CiAKLSAgICAgICAgaWYgKG1vZGUuaXNTYW5lQ2hhaW4oKSkgeworICAgICAgICBpZiAobW9kZS5p
c0luQm91bmRzU2FuZUNoYWluKCkpIHsKICAgICAgICAgICAgIG1faml0LmlzTm90RW1wdHkoc2Ny
YXRjaEdQUiwgcmVzdWx0R1BSKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAKICAg
ICAgICAgTWFjcm9Bc3NlbWJsZXI6Okp1bXAgaXNIb2xlID0gbV9qaXQuYnJhbmNoSWZFbXB0eShz
Y3JhdGNoR1BSKTsKLSAgICAgICAgaWYgKCFtb2RlLmlzSW5Cb3VuZHMoKSB8fCBtb2RlLmlzU2Fu
ZUNoYWluKCkpCisgICAgICAgIGlmICghbW9kZS5pc0luQm91bmRzKCkgfHwgbW9kZS5pc0luQm91
bmRzU2FuZUNoYWluKCkpCiAgICAgICAgICAgICBzbG93Q2FzZXMuYXBwZW5kKGlzSG9sZSk7CiAg
ICAgICAgIGVsc2UKICAgICAgICAgICAgIHNwZWN1bGF0aW9uQ2hlY2soTG9hZEZyb21Ib2xlLCBK
U1ZhbHVlUmVncygpLCBudWxscHRyLCBpc0hvbGUpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdWYWxpZGF0ZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdWYWxpZGF0ZS5jcHAJKHJldmlzaW9uIDI2NTYzNykKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHVmFsaWRhdGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNzYsNiAr
Mzc2LDIwIEBAIHB1YmxpYzoKICAgICAgICAgICAgICAgICBjYXNlIE5ld0FycmF5QnVmZmVyOgog
ICAgICAgICAgICAgICAgICAgICBWQUxJREFURSgobm9kZSksIG5vZGUtPnZlY3Rvckxlbmd0aEhp
bnQoKSA+PSBub2RlLT5jYXN0T3BlcmFuZDxKU0ltbXV0YWJsZUJ1dHRlcmZseSo+KCktPmxlbmd0
aCgpKTsKICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgY2FzZSBH
ZXRCeVZhbDoKKyAgICAgICAgICAgICAgICAgICAgc3dpdGNoIChub2RlLT5hcnJheU1vZGUoKS50
eXBlKCkpIHsKKyAgICAgICAgICAgICAgICAgICAgY2FzZSBBcnJheTo6SW50MzI6CisgICAgICAg
ICAgICAgICAgICAgIGNhc2UgQXJyYXk6OkRvdWJsZToKKyAgICAgICAgICAgICAgICAgICAgY2Fz
ZSBBcnJheTo6Q29udGlndW91czoKKyAgICAgICAgICAgICAgICAgICAgICAgIC8vIFdlIHJlbHkg
b24gYmVpbmcgYW4gb3JpZ2luYWwgYXJyYXkgc3RydWN0dXJlIGJlY2F1c2Ugd2UgYXJlIFNhbmVD
aGFpbiwgYW5kIHdlIG5lZWQgCisgICAgICAgICAgICAgICAgICAgICAgICAvLyBBcnJheS5wcm90
b3R5cGUgdG8gYmUgb3VyIHByb3RvdHlwZSwgc28gd2UgY2FuIHJldHVybiB1bmRlZmluZWQgd2hl
biB3ZSBnbyBPT0IuCisgICAgICAgICAgICAgICAgICAgICAgICBpZiAobm9kZS0+YXJyYXlNb2Rl
KCkuaXNPdXRPZkJvdW5kc1NhbmVDaGFpbigpKQorICAgICAgICAgICAgICAgICAgICAgICAgICAg
IFZBTElEQVRFKChub2RlKSwgbm9kZS0+YXJyYXlNb2RlKCkuaXNKU0FycmF5V2l0aE9yaWdpbmFs
U3RydWN0dXJlKCkpOworICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAg
ICAgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAg
ICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAg
ICAgICBkZWZhdWx0OgogICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAg
ICB9CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTExvd2VyREZHVG9CMy5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExMb3dlckRGR1RvQjMu
Y3BwCShyZXZpc2lvbiAyNjU2MzcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTExv
d2VyREZHVG9CMy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ2MzIsNyArNDYzMiw3IEBAIHByaXZh
dGU6CiAgICAgICAgICAgICBpZiAobV9ub2RlLT5hcnJheU1vZGUoKS5pc0luQm91bmRzKCkpIHsK
ICAgICAgICAgICAgICAgICBMVmFsdWUgcmVzdWx0ID0gbV9vdXQubG9hZDY0KGJhc2VJbmRleCho
ZWFwLCBzdG9yYWdlLCBpbmRleCwgbV9ncmFwaC52YXJBcmdDaGlsZChtX25vZGUsIDEpKSk7CiAg
ICAgICAgICAgICAgICAgTFZhbHVlIGlzSG9sZSA9IG1fb3V0LmlzWmVybzY0KHJlc3VsdCk7Ci0g
ICAgICAgICAgICAgICAgaWYgKG1fbm9kZS0+YXJyYXlNb2RlKCkuaXNTYW5lQ2hhaW4oKSkgewor
ICAgICAgICAgICAgICAgIGlmIChtX25vZGUtPmFycmF5TW9kZSgpLmlzSW5Cb3VuZHNTYW5lQ2hh
aW4oKSkgewogICAgICAgICAgICAgICAgICAgICBERkdfQVNTRVJUKAogICAgICAgICAgICAgICAg
ICAgICAgICAgbV9ncmFwaCwgbV9ub2RlLCBtX25vZGUtPmFycmF5TW9kZSgpLnR5cGUoKSA9PSBB
cnJheTo6Q29udGlndW91cywgbV9ub2RlLT5hcnJheU1vZGUoKS50eXBlKCkpOwogICAgICAgICAg
ICAgICAgICAgICByZXN1bHQgPSBtX291dC5zZWxlY3QoCkBAIC00NjQ1LDcgKzQ2NDUsNyBAQCBw
cml2YXRlOgogICAgICAgICAgICAgICAgIHNldEpTVmFsdWUocmVzdWx0KTsKICAgICAgICAgICAg
ICAgICByZXR1cm47CiAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAKKwogICAgICAgICAgICAg
TEJhc2ljQmxvY2sgZmFzdENhc2UgPSBtX291dC5uZXdCbG9jaygpOwogICAgICAgICAgICAgTEJh
c2ljQmxvY2sgc2xvd0Nhc2UgPSBtX291dC5uZXdCbG9jaygpOwogICAgICAgICAgICAgTEJhc2lj
QmxvY2sgY29udGludWF0aW9uID0gbV9vdXQubmV3QmxvY2soKTsKQEAgLTQ2NjMsNyArNDY2Mywx
MiBAQCBwcml2YXRlOgogICAgICAgICAgICAgICAgIG1fb3V0LmlzWmVybzY0KGZhc3RSZXN1bHRW
YWx1ZSksIHJhcmVseShzbG93Q2FzZSksIHVzdWFsbHkoY29udGludWF0aW9uKSk7CiAgICAgICAg
ICAgICAKICAgICAgICAgICAgIG1fb3V0LmFwcGVuZFRvKHNsb3dDYXNlLCBjb250aW51YXRpb24p
OwotICAgICAgICAgICAgVmFsdWVGcm9tQmxvY2sgc2xvd1Jlc3VsdCA9IG1fb3V0LmFuY2hvcih2
bUNhbGwoSW50NjQsIG9wZXJhdGlvbkdldEJ5VmFsT2JqZWN0SW50LCB3ZWFrUG9pbnRlcihnbG9i
YWxPYmplY3QpLCBiYXNlLCBpbmRleCkpOworICAgICAgICAgICAgVmFsdWVGcm9tQmxvY2sgc2xv
d1Jlc3VsdDsKKyAgICAgICAgICAgIGlmIChtX25vZGUtPmFycmF5TW9kZSgpLmlzT3V0T2ZCb3Vu
ZHNTYW5lQ2hhaW4oKSkgeworICAgICAgICAgICAgICAgIHNwZWN1bGF0ZShOZWdhdGl2ZUluZGV4
LCBub1ZhbHVlKCksIG51bGxwdHIsIG1fb3V0Lmxlc3NUaGFuKGluZGV4LCBtX291dC5pbnQzMlpl
cm8pKTsKKyAgICAgICAgICAgICAgICBzbG93UmVzdWx0ID0gbV9vdXQuYW5jaG9yKG1fb3V0LmNv
bnN0SW50NjQoSlNWYWx1ZTo6VmFsdWVVbmRlZmluZWQpKTsKKyAgICAgICAgICAgIH0gZWxzZQor
ICAgICAgICAgICAgICAgIHNsb3dSZXN1bHQgPSBtX291dC5hbmNob3Iodm1DYWxsKEludDY0LCBv
cGVyYXRpb25HZXRCeVZhbE9iamVjdEludCwgd2Vha1BvaW50ZXIoZ2xvYmFsT2JqZWN0KSwgYmFz
ZSwgaW5kZXgpKTsKICAgICAgICAgICAgIG1fb3V0Lmp1bXAoY29udGludWF0aW9uKTsKICAgICAg
ICAgICAgIAogICAgICAgICAgICAgbV9vdXQuYXBwZW5kVG8oY29udGludWF0aW9uLCBsYXN0TmV4
dCk7CkBAIC00Njg1LDcgKzQ2OTAsNyBAQCBwcml2YXRlOgogICAgICAgICAgICAgICAgIExWYWx1
ZSByZXN1bHQgPSBtX291dC5sb2FkRG91YmxlKAogICAgICAgICAgICAgICAgICAgICBiYXNlSW5k
ZXgoaGVhcCwgc3RvcmFnZSwgaW5kZXgsIG1fZ3JhcGgudmFyQXJnQ2hpbGQobV9ub2RlLCAxKSkp
OwogICAgICAgICAgICAgICAgIAotICAgICAgICAgICAgICAgIGlmICghbV9ub2RlLT5hcnJheU1v
ZGUoKS5pc1NhbmVDaGFpbigpKSB7CisgICAgICAgICAgICAgICAgaWYgKCFtX25vZGUtPmFycmF5
TW9kZSgpLmlzSW5Cb3VuZHNTYW5lQ2hhaW4oKSkgewogICAgICAgICAgICAgICAgICAgICBzcGVj
dWxhdGUoCiAgICAgICAgICAgICAgICAgICAgICAgICBMb2FkRnJvbUhvbGUsIG5vVmFsdWUoKSwg
bnVsbHB0ciwKICAgICAgICAgICAgICAgICAgICAgICAgIG1fb3V0LmRvdWJsZU5vdEVxdWFsT3JV
bm9yZGVyZWQocmVzdWx0LCByZXN1bHQpKTsKQEAgLTQ2OTQsNiArNDY5OSw4IEBAIHByaXZhdGU6
CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICB9CiAKKyAgICAgICAgICAgIGJv
b2wgcmVzdWx0SXNVbmJveGVkID0gbV9ub2RlLT5hcnJheU1vZGUoKS5pc091dE9mQm91bmRzU2Fu
ZUNoYWluKCkgJiYgIShtX25vZGUtPmZsYWdzKCkgJiBOb2RlQnl0ZWNvZGVVc2VzQXNPdGhlcik7
CisKICAgICAgICAgICAgIExCYXNpY0Jsb2NrIGluQm91bmRzID0gbV9vdXQubmV3QmxvY2soKTsK
ICAgICAgICAgICAgIExCYXNpY0Jsb2NrIGJveFBhdGggPSBtX291dC5uZXdCbG9jaygpOwogICAg
ICAgICAgICAgTEJhc2ljQmxvY2sgc2xvd0Nhc2UgPSBtX291dC5uZXdCbG9jaygpOwpAQCAtNDcx
MiwxNSArNDcxOSwyNiBAQCBwcml2YXRlOgogICAgICAgICAgICAgICAgIHJhcmVseShzbG93Q2Fz
ZSksIHVzdWFsbHkoYm94UGF0aCkpOwogICAgICAgICAgICAgCiAgICAgICAgICAgICBtX291dC5h
cHBlbmRUbyhib3hQYXRoLCBzbG93Q2FzZSk7Ci0gICAgICAgICAgICBWYWx1ZUZyb21CbG9jayBm
YXN0UmVzdWx0ID0gbV9vdXQuYW5jaG9yKGJveERvdWJsZShkb3VibGVWYWx1ZSkpOworICAgICAg
ICAgICAgVmFsdWVGcm9tQmxvY2sgZmFzdFJlc3VsdCA9IG1fb3V0LmFuY2hvcihyZXN1bHRJc1Vu
Ym94ZWQgPyBkb3VibGVWYWx1ZSA6IGJveERvdWJsZShkb3VibGVWYWx1ZSkpOwogICAgICAgICAg
ICAgbV9vdXQuanVtcChjb250aW51YXRpb24pOwogICAgICAgICAgICAgCiAgICAgICAgICAgICBt
X291dC5hcHBlbmRUbyhzbG93Q2FzZSwgY29udGludWF0aW9uKTsKLSAgICAgICAgICAgIFZhbHVl
RnJvbUJsb2NrIHNsb3dSZXN1bHQgPSBtX291dC5hbmNob3Iodm1DYWxsKEludDY0LCBvcGVyYXRp
b25HZXRCeVZhbE9iamVjdEludCwgd2Vha1BvaW50ZXIoZ2xvYmFsT2JqZWN0KSwgYmFzZSwgaW5k
ZXgpKTsKKyAgICAgICAgICAgIFZhbHVlRnJvbUJsb2NrIHNsb3dSZXN1bHQ7CisgICAgICAgICAg
ICBpZiAobV9ub2RlLT5hcnJheU1vZGUoKS5pc091dE9mQm91bmRzU2FuZUNoYWluKCkpIHsKKyAg
ICAgICAgICAgICAgICBzcGVjdWxhdGUoTmVnYXRpdmVJbmRleCwgbm9WYWx1ZSgpLCBudWxscHRy
LCBtX291dC5sZXNzVGhhbihpbmRleCwgbV9vdXQuaW50MzJaZXJvKSk7CisgICAgICAgICAgICAg
ICAgaWYgKHJlc3VsdElzVW5ib3hlZCkKKyAgICAgICAgICAgICAgICAgICAgc2xvd1Jlc3VsdCA9
IG1fb3V0LmFuY2hvcihtX291dC5jb25zdERvdWJsZShQTmFOKSk7CisgICAgICAgICAgICAgICAg
ZWxzZQorICAgICAgICAgICAgICAgICAgICBzbG93UmVzdWx0ID0gbV9vdXQuYW5jaG9yKG1fb3V0
LmNvbnN0SW50NjQoSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpKSk7CisgICAgICAgICAg
ICB9IGVsc2UKKyAgICAgICAgICAgICAgICBzbG93UmVzdWx0ID0gbV9vdXQuYW5jaG9yKHZtQ2Fs
bChJbnQ2NCwgb3BlcmF0aW9uR2V0QnlWYWxPYmplY3RJbnQsIHdlYWtQb2ludGVyKGdsb2JhbE9i
amVjdCksIGJhc2UsIGluZGV4KSk7CiAgICAgICAgICAgICBtX291dC5qdW1wKGNvbnRpbnVhdGlv
bik7CiAgICAgICAgICAgICAKICAgICAgICAgICAgIG1fb3V0LmFwcGVuZFRvKGNvbnRpbnVhdGlv
biwgbGFzdE5leHQpOwotICAgICAgICAgICAgc2V0SlNWYWx1ZShtX291dC5waGkoSW50NjQsIGZh
c3RSZXN1bHQsIHNsb3dSZXN1bHQpKTsKKyAgICAgICAgICAgIGlmIChyZXN1bHRJc1VuYm94ZWQp
CisgICAgICAgICAgICAgICAgc2V0RG91YmxlKG1fb3V0LnBoaShEb3VibGUsIGZhc3RSZXN1bHQs
IHNsb3dSZXN1bHQpKTsKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICBzZXRKU1Zh
bHVlKG1fb3V0LnBoaShJbnQ2NCwgZmFzdFJlc3VsdCwgc2xvd1Jlc3VsdCkpOwogICAgICAgICAg
ICAgcmV0dXJuOwogICAgICAgICB9CiAKQEAgLTgxMzUsNyArODE1Myw3IEBAIHByaXZhdGU6CiAg
ICAgICAgICAgICBpZiAoZ2xvYmFsT2JqZWN0LT5zdHJpbmdQcm90b3R5cGVDaGFpbklzU2FuZSgp
KSB7CiAgICAgICAgICAgICAgICAgLy8gRklYTUU6IFRoaXMgY291bGQgYmUgY2FwdHVyZWQgdXNp
bmcgYSBTcGVjdWxhdGlvbiBtb2RlIHRoYXQgbWVhbnMKICAgICAgICAgICAgICAgICAvLyAib3V0
LW9mLWJvdW5kcyBsb2FkcyByZXR1cm4gYSB0cml2aWFsIHZhbHVlIiwgc29tZXRoaW5nIGxpa2UK
LSAgICAgICAgICAgICAgICAvLyBTYW5lQ2hhaW5PdXRPZkJvdW5kcy4KKyAgICAgICAgICAgICAg
ICAvLyBPdXRPZkJvdW5kc1NhbmVDaGFpbi4KICAgICAgICAgICAgICAgICAvLyBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTQ0NjY4CiAgICAgICAgICAgICAgICAgCiAg
ICAgICAgICAgICAgICAgbV9ncmFwaC5yZWdpc3RlckFuZFdhdGNoU3RydWN0dXJlVHJhbnNpdGlv
bihzdHJpbmdQcm90b3R5cGVTdHJ1Y3R1cmUpOwpAQCAtMTIyMjAsNyArMTIyMzgsNyBAQCBwcml2
YXRlOgogICAgICAgICAgICAgTFZhbHVlIGNoZWNrSG9sZVJlc3VsdFZhbHVlID0KICAgICAgICAg
ICAgICAgICBtX291dC5ub3RaZXJvNjQobV9vdXQubG9hZDY0KGJhc2VJbmRleChoZWFwLCBzdG9y
YWdlLCBpbmRleCwgbV9ncmFwaC52YXJBcmdDaGlsZChtX25vZGUsIDEpKSkpOwogICAgICAgICAg
ICAgVmFsdWVGcm9tQmxvY2sgY2hlY2tIb2xlUmVzdWx0ID0gbV9vdXQuYW5jaG9yKGNoZWNrSG9s
ZVJlc3VsdFZhbHVlKTsKLSAgICAgICAgICAgIGlmIChtb2RlLmlzU2FuZUNoYWluKCkpCisgICAg
ICAgICAgICBpZiAobW9kZS5pc0luQm91bmRzU2FuZUNoYWluKCkpCiAgICAgICAgICAgICAgICAg
bV9vdXQuanVtcChjb250aW51YXRpb24pOwogICAgICAgICAgICAgZWxzZSBpZiAoIW1vZGUuaXNJ
bkJvdW5kcygpKQogICAgICAgICAgICAgICAgIG1fb3V0LmJyYW5jaChjaGVja0hvbGVSZXN1bHRW
YWx1ZSwgdXN1YWxseShjb250aW51YXRpb24pLCByYXJlbHkoc2xvd0Nhc2UpKTsKQEAgLTEyMjU5
LDcgKzEyMjc3LDcgQEAgcHJpdmF0ZToKICAgICAgICAgICAgIExWYWx1ZSBkb3VibGVWYWx1ZSA9
IG1fb3V0LmxvYWREb3VibGUoYmFzZUluZGV4KGhlYXAsIHN0b3JhZ2UsIGluZGV4LCBtX2dyYXBo
LnZhckFyZ0NoaWxkKG1fbm9kZSwgMSkpKTsKICAgICAgICAgICAgIExWYWx1ZSBjaGVja0hvbGVS
ZXN1bHRWYWx1ZSA9IG1fb3V0LmRvdWJsZUVxdWFsKGRvdWJsZVZhbHVlLCBkb3VibGVWYWx1ZSk7
CiAgICAgICAgICAgICBWYWx1ZUZyb21CbG9jayBjaGVja0hvbGVSZXN1bHQgPSBtX291dC5hbmNo
b3IoY2hlY2tIb2xlUmVzdWx0VmFsdWUpOwotICAgICAgICAgICAgaWYgKG1vZGUuaXNTYW5lQ2hh
aW4oKSkKKyAgICAgICAgICAgIGlmIChtb2RlLmlzSW5Cb3VuZHNTYW5lQ2hhaW4oKSkKICAgICAg
ICAgICAgICAgICBtX291dC5qdW1wKGNvbnRpbnVhdGlvbik7CiAgICAgICAgICAgICBlbHNlIGlm
ICghbW9kZS5pc0luQm91bmRzKCkpCiAgICAgICAgICAgICAgICAgbV9vdXQuYnJhbmNoKGNoZWNr
SG9sZVJlc3VsdFZhbHVlLCB1c3VhbGx5KGNvbnRpbnVhdGlvbiksIHJhcmVseShzbG93Q2FzZSkp
OwpAQCAtMTIyOTcsNyArMTIzMTUsNyBAQCBwcml2YXRlOgogICAgICAgICAgICAgTFZhbHVlIGNo
ZWNrSG9sZVJlc3VsdFZhbHVlID0KICAgICAgICAgICAgICAgICBtX291dC5ub3RaZXJvNjQobV9v
dXQubG9hZDY0KGJhc2VJbmRleChtX2hlYXBzLkFycmF5U3RvcmFnZV92ZWN0b3IsIHN0b3JhZ2Us
IGluZGV4LCBtX2dyYXBoLnZhckFyZ0NoaWxkKG1fbm9kZSwgMSkpKSk7CiAgICAgICAgICAgICBW
YWx1ZUZyb21CbG9jayBjaGVja0hvbGVSZXN1bHQgPSBtX291dC5hbmNob3IoY2hlY2tIb2xlUmVz
dWx0VmFsdWUpOwotICAgICAgICAgICAgaWYgKG1vZGUuaXNTYW5lQ2hhaW4oKSkKKyAgICAgICAg
ICAgIGlmIChtb2RlLmlzSW5Cb3VuZHNTYW5lQ2hhaW4oKSkKICAgICAgICAgICAgICAgICBtX291
dC5qdW1wKGNvbnRpbnVhdGlvbik7CiAgICAgICAgICAgICBlbHNlIGlmICghbW9kZS5pc0luQm91
bmRzKCkpCiAgICAgICAgICAgICAgICAgbV9vdXQuYnJhbmNoKGNoZWNrSG9sZVJlc3VsdFZhbHVl
LCB1c3VhbGx5KGNvbnRpbnVhdGlvbiksIHJhcmVseShzbG93Q2FzZSkpOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>406733</attachid>
            <date>2020-08-17 12:49:06 -0700</date>
            <delta_ts>2020-08-17 13:28:31 -0700</delta_ts>
            <desc>patch for landing</desc>
            <filename>c-backup.diff</filename>
            <type>text/plain</type>
            <size>46990</size>
            <attacher name="Saam Barati">saam</attacher>
            
              <data encoding="base64">SW5kZXg6IEpTVGVzdHMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIEpTVGVzdHMvQ2hhbmdlTG9n
CShyZXZpc2lvbiAyNjU3MjMpCisrKyBKU1Rlc3RzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpA
QCAtMSwzICsxLDE2IEBACisyMDIwLTA4LTE0ICBTYWFtIEJhcmF0aSAgPHNiYXJhdGlAYXBwbGUu
Y29tPgorCisgICAgICAgIEhhdmUgYW4gT09CK1NhbmVDaGFpbiBBcnJheTo6U3BlY3VsYXRpb24K
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxNTQ4Nwor
CisgICAgICAgIFJldmlld2VkIGJ5IFl1c3VrZSBTdXp1a2kuCisKKyAgICAgICAgKiBtaWNyb2Jl
bmNobWFya3Mvb29iLXNhbmUtY2hhaW4tY29udGlndW91cy5qczogQWRkZWQuCisgICAgICAgICog
bWljcm9iZW5jaG1hcmtzL29vYi1zYW5lLWNoYWluLWRvdWJsZS1yZWFkLXVuZGVmaW5lZC5qczog
QWRkZWQuCisgICAgICAgICogbWljcm9iZW5jaG1hcmtzL29vYi1zYW5lLWNoYWluLWRvdWJsZS5q
czogQWRkZWQuCisgICAgICAgICogbWljcm9iZW5jaG1hcmtzL29vYi1zYW5lLWNoYWluLWludDMy
LmpzOiBBZGRlZC4KKyAgICAgICAgKiBzdHJlc3Mvb29iLXNhbmUtY2hhaW4tbmVnYXRpdmUtaW5k
ZXguanM6IEFkZGVkLgorCiAyMDIwLTA4LTEyICBLZWl0aCBNaWxsZXIgIDxrZWl0aF9taWxsZXJA
YXBwbGUuY29tPgogCiAgICAgICAgIE9TUkF2YWlsYWJpbGl0eUFuYWx5c2lzIHNob3VsZG4ndCBt
YXJrIEdldFN0YWNrIG5vZGVzIGRpcmVjdGx5IGFzIHZhbGlkIHBsYWNlcyBmb3IgcmVjb3ZlcnkK
SW5kZXg6IEpTVGVzdHMvbWljcm9iZW5jaG1hcmtzL29vYi1zYW5lLWNoYWluLWNvbnRpZ3VvdXMu
anMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gSlNUZXN0cy9taWNyb2JlbmNobWFya3Mvb29iLXNhbmUtY2hhaW4t
Y29udGlndW91cy5qcwkobm9uZXhpc3RlbnQpCisrKyBKU1Rlc3RzL21pY3JvYmVuY2htYXJrcy9v
b2Itc2FuZS1jaGFpbi1jb250aWd1b3VzLmpzCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMTgg
QEAKK2Z1bmN0aW9uIGFzc2VydChiKSB7CisgICAgaWYgKCFiKQorICAgICAgICB0aHJvdyBuZXcg
RXJyb3I7Cit9CisKK2Z1bmN0aW9uIGJhcihhLCB4KSB7CisgICAgcmV0dXJuIGFbeF07Cit9Citu
b0lubGluZShiYXIpOworCitsZXQgbyA9IHt9OworbGV0IGIgPSBbbywgIiIsICwgMjVdOworCitm
b3IgKGxldCBpID0gMDsgaSA8IDEwMDAwMDAwOyArK2kpIHsKKyAgICBhc3NlcnQoYmFyKGIsIDAp
ID09PSBvKTsKKyAgICBhc3NlcnQoYmFyKGIsIDUpID09PSB1bmRlZmluZWQpOworICAgIGFzc2Vy
dChiYXIoYiwgMikgPT09IHVuZGVmaW5lZCk7Cit9CkluZGV4OiBKU1Rlc3RzL21pY3JvYmVuY2ht
YXJrcy9vb2Itc2FuZS1jaGFpbi1kb3VibGUtcmVhZC11bmRlZmluZWQuanMKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gSlNUZXN0cy9taWNyb2JlbmNobWFya3Mvb29iLXNhbmUtY2hhaW4tZG91YmxlLXJlYWQtdW5k
ZWZpbmVkLmpzCShub25leGlzdGVudCkKKysrIEpTVGVzdHMvbWljcm9iZW5jaG1hcmtzL29vYi1z
YW5lLWNoYWluLWRvdWJsZS1yZWFkLXVuZGVmaW5lZC5qcwkod29ya2luZyBjb3B5KQpAQCAtMCww
ICsxLDE4IEBACitmdW5jdGlvbiBhc3NlcnQoYikgeworICAgIGlmICghYikKKyAgICAgICAgdGhy
b3cgbmV3IEVycm9yOworfQorCitmdW5jdGlvbiBiYXooYSwgeCkgeworICAgIHJldHVybiBhW3hd
OworfQorbm9JbmxpbmUoYmF6KTsKKworbGV0IGEgPSBbMS41LCAyLjUsICwgMy41XTsKKworZm9y
IChsZXQgaSA9IDA7IGkgPCAxMDAwMDAwMDsgKytpKSB7CisgICAgYXNzZXJ0KGJheihhLCAwKSA9
PT0gMS41KTsKKyAgICBhc3NlcnQoYmF6KGEsIDUpID09PSB1bmRlZmluZWQpOworICAgIGFzc2Vy
dChiYXooYSwgMikgPT09IHVuZGVmaW5lZCk7Cit9CisKSW5kZXg6IEpTVGVzdHMvbWljcm9iZW5j
aG1hcmtzL29vYi1zYW5lLWNoYWluLWRvdWJsZS5qcwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBKU1Rlc3RzL21p
Y3JvYmVuY2htYXJrcy9vb2Itc2FuZS1jaGFpbi1kb3VibGUuanMJKG5vbmV4aXN0ZW50KQorKysg
SlNUZXN0cy9taWNyb2JlbmNobWFya3Mvb29iLXNhbmUtY2hhaW4tZG91YmxlLmpzCSh3b3JraW5n
IGNvcHkpCkBAIC0wLDAgKzEsMTcgQEAKK2Z1bmN0aW9uIGFzc2VydChiKSB7CisgICAgaWYgKCFi
KQorICAgICAgICB0aHJvdyBuZXcgRXJyb3I7Cit9CisKK2Z1bmN0aW9uIGZvbyhhLCB4KSB7Cisg
ICAgcmV0dXJuIGFbeF0gKiAyLjU7Cit9Citub0lubGluZShmb28pOworCitsZXQgYSA9IFsxLjUs
IDIuNSwgLCAzLjVdOworCitmb3IgKGxldCBpID0gMDsgaSA8IDEwMDAwMDAwOyArK2kpIHsKKyAg
ICBhc3NlcnQoZm9vKGEsIDApID09PSAyLjUgKiAxLjUpOworICAgIGFzc2VydChpc05hTihmb28o
YSwgNSkpKTsKKyAgICBhc3NlcnQoaXNOYU4oZm9vKGEsIDIpKSk7Cit9CkluZGV4OiBKU1Rlc3Rz
L21pY3JvYmVuY2htYXJrcy9vb2Itc2FuZS1jaGFpbi1pbnQzMi5qcwo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBK
U1Rlc3RzL21pY3JvYmVuY2htYXJrcy9vb2Itc2FuZS1jaGFpbi1pbnQzMi5qcwkobm9uZXhpc3Rl
bnQpCisrKyBKU1Rlc3RzL21pY3JvYmVuY2htYXJrcy9vb2Itc2FuZS1jaGFpbi1pbnQzMi5qcwko
d29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDE3IEBACitmdW5jdGlvbiBhc3NlcnQoYikgeworICAg
IGlmICghYikKKyAgICAgICAgdGhyb3cgbmV3IEVycm9yOworfQorCitmdW5jdGlvbiBiYXIoYSwg
eCkgeworICAgIHJldHVybiBhW3hdOworfQorbm9JbmxpbmUoYmFyKTsKKworbGV0IGIgPSBbMCwg
MSwgLCAgMl07CisKK2ZvciAobGV0IGkgPSAwOyBpIDwgMTAwMDAwMDA7ICsraSkgeworICAgIGFz
c2VydChiYXIoYiwgMCkgPT09IDApOworICAgIGFzc2VydChiYXIoYiwgNSkgPT09IHVuZGVmaW5l
ZCk7CisgICAgYXNzZXJ0KGJhcihiLCAyKSA9PT0gdW5kZWZpbmVkKTsKK30KSW5kZXg6IEpTVGVz
dHMvc3RyZXNzL29vYi1zYW5lLWNoYWluLW5lZ2F0aXZlLWluZGV4LmpzCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IEpTVGVzdHMvc3RyZXNzL29vYi1zYW5lLWNoYWluLW5lZ2F0aXZlLWluZGV4LmpzCShub25leGlz
dGVudCkKKysrIEpTVGVzdHMvc3RyZXNzL29vYi1zYW5lLWNoYWluLW5lZ2F0aXZlLWluZGV4Lmpz
CSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMjQgQEAKK2xldCBjYWxsZWQgPSBmYWxzZTsKK09i
amVjdC5kZWZpbmVQcm9wZXJ0eShBcnJheS5wcm90b3R5cGUsICItMSIsIHsKKyAgICBnZXQ6IGZ1
bmN0aW9uKCkgeworICAgICAgICBjYWxsZWQgPSB0cnVlOworICAgICAgICByZXR1cm4gNDI7Cisg
ICAgfQorfSk7CitmdW5jdGlvbiBhc3NlcnQoYikgeworICAgIGlmICghYikKKyAgICAgICAgdGhy
b3cgbmV3IEVycm9yOworfQorCitmdW5jdGlvbiBiYXooYSwgeCkgeworICAgIHJldHVybiBhW3hd
OworfQorbm9JbmxpbmUoYmF6KTsKKworbGV0IGEgPSBbMSwyLDNdOworCitmb3IgKGxldCBpID0g
MDsgaSA8IDEwMDAwMDAwOyArK2kpIHsKKyAgICBhc3NlcnQoYmF6KGEsIC0xKSA9PT0gNDIpOwor
ICAgIGFzc2VydChjYWxsZWQpOworICAgIGNhbGxlZCA9IGZhbHNlOworfQpJbmRleDogU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nCShyZXZpc2lvbiAyNjU2MzcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsNTcgQEAKKzIwMjAtMDgtMTQg
IFNhYW0gQmFyYXRpICA8c2JhcmF0aUBhcHBsZS5jb20+CisKKyAgICAgICAgSGF2ZSBhbiBPT0Ir
U2FuZUNoYWluIEFycmF5OjpTcGVjdWxhdGlvbgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjE1NDg3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgWXVzdWtl
IFN1enVraS4KKworICAgICAgICBUaGlzIHBhdGNoIGFkZHMgYSBuZXcgQXJyYXlNb2RlIHNwZWN1
bGF0aW9uIGluIHRoZSBERkcvRlRMIGNhbGxlZCBPdXRPZkJvdW5kc1NhbmVDaGFpbi4KKyAgICAg
ICAgSXQgYWxsb3dzIHVzIHRvIGRvIGZhc3QgdGhpbmdzIHdoZW4gd2UgZ28gT09CLCBsaWtlIHNp
bXBseSByZXR1cm4gdW5kZWZpbmVkLgorICAgICAgICBUaGlzIGlzIGJlY2F1c2Ugd2UgaW5zdGFs
bCB3YXRjaHBvaW50cyBvbiB0aGUgcHJvdG90eXBlIGNoYWluIHRvIGVuc3VyZSB0aGV5CisgICAg
ICAgIGhhdmUgbm8gaW5kZXhlZCBwcm9wZXJ0aWVzLiBUaGlzIHBhdGNoIGltcGxlbWVudHMgT3V0
T2ZCb3VuZHNTYW5lQ2hhaW4gb24KKyAgICAgICAgR2V0QnlWYWwgb3ZlciBJbnQzMi9Eb3VibGUv
Q29udGlndW91cyBvcmlnaW5hbCBKUyBhcnJheXMuIFdlIGNhbiBleHRlbmQgaXQgaW4KKyAgICAg
ICAgdGhlIGZ1dHVyZSB0byBub24gb3JpZ2luYWwgSlMgYXJyYXlzIGlmIHdlIHByb3ZlIHRoZWly
IHByb3RvdHlwZSBpcyBBcnJheS5wcm90b3R5cGUuIAorICAgICAgICBUbyBpbXBsZW1lbnQgdGhp
cyBwcm9wZXJseSwgd2UgYWxzbyBuZWVkIHRvIGVuc3VyZSB0aGF0IHRoZSBpbmRleCBpc24ndCBu
ZWdhdGl2ZSwKKyAgICAgICAgYXMgQXJyYXkucHJvdG90eXBlL09iamVjdC5wcm90b3R5cGUgbWF5
IGhhdmUgbmVnYXRpdmUgaW5kZXhlZCBhY2Nlc3NvcnMuIFdlCisgICAgICAgIGRvIHRoaXMgdmlh
IHNwZWN1bGF0aW9uLCBhbmQgaWYgd2UgZXZlciByZWNvbXBpbGUsIGFuZCBzZWUgYW4gZXhpdCBi
ZWNhdXNlIG9mCisgICAgICAgIHRoaXMsIHdlIHdpbGwgc3RvcCBzcGVjdWxhdGluZyBPdXRPZkJv
dW5kc1NhbmVDaGFpbi4KKyAgICAgICAgCisgICAgICAgIFRoaXMgaXMgYWJvdXQgMjAlIGZhc3Rl
ciBvbiBjcnlwdG8tbWQ1LVNQLiBBbmQgfjMtNHggZmFzdGVyIG9uIHRoZQorICAgICAgICBtaWNy
b2JlbmNobWFya3MgSSBjcmVhdGVkLgorCisgICAgICAgICogZGZnL0RGR0Fic3RyYWN0SW50ZXJw
cmV0ZXJJbmxpbmVzLmg6CisgICAgICAgIChKU0M6OkRGRzo6QWJzdHJhY3RJbnRlcnByZXRlcjxB
YnN0cmFjdFN0YXRlVHlwZT46OmV4ZWN1dGVFZmZlY3RzKToKKyAgICAgICAgKiBkZmcvREZHQXJy
YXlNb2RlLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpBcnJheU1vZGU6OnJlZmluZSBjb25zdCk6
CisgICAgICAgIChKU0M6OkRGRzo6YXJyYXlTcGVjdWxhdGlvblRvU3RyaW5nKToKKyAgICAgICAg
KiBkZmcvREZHQXJyYXlNb2RlLmg6CisgICAgICAgIChKU0M6OkRGRzo6QXJyYXlNb2RlOjppc0lu
Qm91bmRzU2FuZUNoYWluIGNvbnN0KToKKyAgICAgICAgKEpTQzo6REZHOjpBcnJheU1vZGU6Omlz
T3V0T2ZCb3VuZHNTYW5lQ2hhaW4gY29uc3QpOgorICAgICAgICAoSlNDOjpERkc6OkFycmF5TW9k
ZTo6aXNPdXRPZkJvdW5kcyBjb25zdCk6CisgICAgICAgIChKU0M6OkRGRzo6QXJyYXlNb2RlOjpp
c0VmZmVjdGZ1bE91dE9mQm91bmRzIGNvbnN0KToKKyAgICAgICAgKEpTQzo6REZHOjpBcnJheU1v
ZGU6OmlzSW5Cb3VuZHMgY29uc3QpOgorICAgICAgICAoSlNDOjpERkc6OkFycmF5TW9kZTo6aXNT
YW5lQ2hhaW4gY29uc3QpOiBEZWxldGVkLgorICAgICAgICAqIGRmZy9ERkdDU0VQaGFzZS5jcHA6
CisgICAgICAgICogZGZnL0RGR0Nsb2JiZXJpemUuaDoKKyAgICAgICAgKEpTQzo6REZHOjpjbG9i
YmVyaXplKToKKyAgICAgICAgKiBkZmcvREZHRml4dXBQaGFzZS5jcHA6CisgICAgICAgIChKU0M6
OkRGRzo6Rml4dXBQaGFzZTo6Zml4dXBOb2RlKToKKyAgICAgICAgKEpTQzo6REZHOjpGaXh1cFBo
YXNlOjpjaGVja0FycmF5KToKKyAgICAgICAgKEpTQzo6REZHOjpGaXh1cFBoYXNlOjpzZXRTYW5l
Q2hhaW5JZlBvc3NpYmxlKToKKyAgICAgICAgKEpTQzo6REZHOjpGaXh1cFBoYXNlOjpjb252ZXJ0
VG9IYXNJbmRleGVkUHJvcGVydHkpOgorICAgICAgICAqIGRmZy9ERkdTcGVjdWxhdGl2ZUpJVC5j
cHA6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVHZXRCeVZhbE9u
U3RyaW5nKToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUhhc0lu
ZGV4ZWRQcm9wZXJ0eSk6CisgICAgICAgICogZGZnL0RGR1NwZWN1bGF0aXZlSklUMzJfNjQuY3Bw
OgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21waWxlKToKKyAgICAgICAg
KiBkZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3Vs
YXRpdmVKSVQ6OmNvbXBpbGUpOgorICAgICAgICAqIGRmZy9ERkdWYWxpZGF0ZS5jcHA6CisgICAg
ICAgICogZnRsL0ZUTExvd2VyREZHVG9CMy5jcHA6CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpM
b3dlckRGR1RvQjM6OmNvbXBpbGVHZXRCeVZhbCk6CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpM
b3dlckRGR1RvQjM6OmNvbXBpbGVTdHJpbmdDaGFyQXQpOgorICAgICAgICAoSlNDOjpGVEw6OkRG
Rzo6TG93ZXJERkdUb0IzOjpjb21waWxlSGFzSW5kZXhlZFByb3BlcnR5KToKKwogMjAyMC0wOC0x
MiAgS2VpdGggUm9sbGluICA8a3JvbGxpbkBhcHBsZS5jb20+CiAKICAgICAgICAgUmVtb3ZlIHRo
ZSBuZWVkIGZvciBkZWZpbmluZyBVU0VfTkVXX0JVSUxEX1NZU1RFTQpJbmRleDogU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb2RlL0V4aXRLaW5kLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvRXhpdEtpbmQuY3BwCShyZXZpc2lvbiAyNjU2MzcpCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvRXhpdEtpbmQuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC01Niw2ICs1Niw4IEBAIGNvbnN0IGNoYXIqIGV4aXRLaW5kVG9TdHJpbmcoRXhpdEtp
bmQga2kKICAgICAgICAgcmV0dXJuICJPdmVyZmxvdyI7CiAgICAgY2FzZSBOZWdhdGl2ZVplcm86
CiAgICAgICAgIHJldHVybiAiTmVnYXRpdmVaZXJvIjsKKyAgICBjYXNlIE5lZ2F0aXZlSW5kZXg6
CisgICAgICAgIHJldHVybiAiTmVnYXRpdmVJbmRleCI7CiAgICAgY2FzZSBJbnQ1Mk92ZXJmbG93
OgogICAgICAgICByZXR1cm4gIkludDUyT3ZlcmZsb3ciOwogICAgIGNhc2UgU3RvcmVUb0hvbGU6
CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvRXhpdEtpbmQuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvRXhpdEtpbmQuaAkocmV2aXNp
b24gMjY1NjM3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0V4aXRLaW5kLmgJ
KHdvcmtpbmcgY29weSkKQEAgLTM5LDYgKzM5LDcgQEAgZW51bSBFeGl0S2luZCA6IHVpbnQ4X3Qg
ewogICAgIEJhZFR5cGVJbmZvRmxhZ3MsIC8vIFdlIGV4aXRlZCBiZWNhdXNlIHdlIG1hZGUgYW4g
aW5jb3JyZWN0IGFzc3VtcHRpb24gYWJvdXQgd2hhdCBUeXBlSW5mbyBmbGFncyB3ZSB3b3VsZCBz
ZWUuCiAgICAgT3ZlcmZsb3csIC8vIFdlIGV4aXRlZCBiZWNhdXNlIG9mIG92ZXJmbG93LgogICAg
IE5lZ2F0aXZlWmVybywgLy8gV2UgZXhpdGVkIGJlY2F1c2Ugd2UgZW5jb3VudGVyZWQgbmVnYXRp
dmUgemVyby4KKyAgICBOZWdhdGl2ZUluZGV4LCAvLyBXZSBleGl0ZWQgYmVjYXVzZSB3ZSBlbmNv
dW50ZXJlZCBhIG5lZ2F0aXZlIGluZGV4IGluIGEgcGxhY2Ugd2UgZGlkbid0IHdhbnQgdG8gc2Vl
IGl0LgogICAgIEludDUyT3ZlcmZsb3csIC8vIFdlIGV4aXRlZCBiZWNhdXNlIG9mIGFuIEludDUy
IG92ZXJmbG93LgogICAgIFN0b3JlVG9Ib2xlLCAvLyBXZSBoYWQgYSBzdG9yZSB0byBhIGhvbGUu
CiAgICAgTG9hZEZyb21Ib2xlLCAvLyBXZSBoYWQgYSBsb2FkIGZyb20gYSBob2xlLgpJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBYnN0cmFjdEludGVycHJldGVySW5saW5lcy5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQWJzdHJhY3RJbnRl
cnByZXRlcklubGluZXMuaAkocmV2aXNpb24gMjY1NjM3KQorKysgU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdBYnN0cmFjdEludGVycHJldGVySW5saW5lcy5oCSh3b3JraW5nIGNvcHkpCkBA
IC0yMzUwLDcgKzIzNTAsNyBAQCBib29sIEFic3RyYWN0SW50ZXJwcmV0ZXI8QWJzdHJhY3RTdGF0
ZVR5CiAgICAgICAgICAgICAgICAgLy8gd2UgZ290IHRvIHRoZSBiYWNrZW5kLiBTbyB0byBkbyB0
aGlzIHJpZ2h0LCB3ZSdkIGhhdmUgdG8gZ2V0IHRoZQogICAgICAgICAgICAgICAgIC8vIGZpeHVw
IHBoYXNlIHRvIGNoZWNrIHRoZSB3YXRjaHBvaW50IHN0YXRlIGFuZCB0aGVuIGJha2UgaW50byB0
aGUKICAgICAgICAgICAgICAgICAvLyBHZXRCeVZhbCBvcGVyYXRpb24gdGhlIGZhY3QgdGhhdCB3
ZSdyZSB1c2luZyBhIHdhdGNocG9pbnQsIHVzaW5nCi0gICAgICAgICAgICAgICAgLy8gc29tZXRo
aW5nIGxpa2UgQXJyYXk6OlNhbmVDaGFpbiAoZXhjZXB0IG5vdCBxdWl0ZSwgYmVjYXVzZSB0aGF0
CisgICAgICAgICAgICAgICAgLy8gc29tZXRoaW5nIGxpa2UgQXJyYXk6OkluQm91bmRzU2FuZUNo
YWluIChleGNlcHQgbm90IHF1aXRlLCBiZWNhdXNlIHRoYXQKICAgICAgICAgICAgICAgICAvLyBp
bXBsaWVzIGFuIGluLWJvdW5kcyBhY2Nlc3MpLiBOb25lIG9mIHRoaXMgZmVlbHMgbGlrZSBpdCdz
IHdvcnRoIGl0LAogICAgICAgICAgICAgICAgIC8vIHNvIHdlJ3JlIGdvaW5nIHdpdGggVE9QIGZv
ciBub3cuIFRoZSBzYW1lIHRoaW5nIGFwcGxpZXMgdG8KICAgICAgICAgICAgICAgICAvLyBjbG9i
YmVyaW5nIHRoZSB3b3JsZC4KQEAgLTIzNjYsMjUgKzIzNjYsMzIgQEAgYm9vbCBBYnN0cmFjdElu
dGVycHJldGVyPEFic3RyYWN0U3RhdGVUeQogICAgICAgICAgICAgbWFrZUhlYXBUb3BGb3JOb2Rl
KG5vZGUpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgQXJyYXk6OkludDMyOgot
ICAgICAgICAgICAgaWYgKG5vZGUtPmFycmF5TW9kZSgpLmlzT3V0T2ZCb3VuZHMoKSkgeworICAg
ICAgICAgICAgaWYgKG5vZGUtPmFycmF5TW9kZSgpLmlzRWZmZWN0ZnVsT3V0T2ZCb3VuZHMoKSkg
ewogICAgICAgICAgICAgICAgIGNsb2JiZXJXb3JsZCgpOwogICAgICAgICAgICAgICAgIG1ha2VI
ZWFwVG9wRm9yTm9kZShub2RlKTsKLSAgICAgICAgICAgIH0gZWxzZQorICAgICAgICAgICAgfSBl
bHNlIGlmIChub2RlLT5hcnJheU1vZGUoKS5pc091dE9mQm91bmRzU2FuZUNoYWluKCkpCisgICAg
ICAgICAgICAgICAgc2V0Tm9uQ2VsbFR5cGVGb3JOb2RlKG5vZGUsIFNwZWNJbnQzMk9ubHkgfCBT
cGVjT3RoZXIpOworICAgICAgICAgICAgZWxzZQogICAgICAgICAgICAgICAgIHNldE5vbkNlbGxU
eXBlRm9yTm9kZShub2RlLCBTcGVjSW50MzJPbmx5KTsKICAgICAgICAgICAgIGJyZWFrOwogICAg
ICAgICBjYXNlIEFycmF5OjpEb3VibGU6Ci0gICAgICAgICAgICBpZiAobm9kZS0+YXJyYXlNb2Rl
KCkuaXNPdXRPZkJvdW5kcygpKSB7CisgICAgICAgICAgICBpZiAobm9kZS0+YXJyYXlNb2RlKCku
aXNFZmZlY3RmdWxPdXRPZkJvdW5kcygpKSB7CiAgICAgICAgICAgICAgICAgY2xvYmJlcldvcmxk
KCk7CiAgICAgICAgICAgICAgICAgbWFrZUhlYXBUb3BGb3JOb2RlKG5vZGUpOwotICAgICAgICAg
ICAgfSBlbHNlIGlmIChub2RlLT5hcnJheU1vZGUoKS5pc1NhbmVDaGFpbigpKQorICAgICAgICAg
ICAgfSBlbHNlIGlmIChub2RlLT5hcnJheU1vZGUoKS5pc0luQm91bmRzU2FuZUNoYWluKCkpCiAg
ICAgICAgICAgICAgICAgc2V0Tm9uQ2VsbFR5cGVGb3JOb2RlKG5vZGUsIFNwZWNCeXRlY29kZURv
dWJsZSk7Ci0gICAgICAgICAgICBlbHNlCisgICAgICAgICAgICBlbHNlIGlmIChub2RlLT5hcnJh
eU1vZGUoKS5pc091dE9mQm91bmRzU2FuZUNoYWluKCkpIHsKKyAgICAgICAgICAgICAgICBpZiAo
ISEobm9kZS0+ZmxhZ3MoKSAmIE5vZGVCeXRlY29kZVVzZXNBc090aGVyKSkKKyAgICAgICAgICAg
ICAgICAgICAgc2V0Tm9uQ2VsbFR5cGVGb3JOb2RlKG5vZGUsIFNwZWNCeXRlY29kZURvdWJsZSB8
IFNwZWNPdGhlcik7CisgICAgICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgICAgICBz
ZXROb25DZWxsVHlwZUZvck5vZGUobm9kZSwgU3BlY0J5dGVjb2RlRG91YmxlKTsKKyAgICAgICAg
ICAgIH0gZWxzZQogICAgICAgICAgICAgICAgIHNldE5vbkNlbGxUeXBlRm9yTm9kZShub2RlLCBT
cGVjRG91YmxlUmVhbCk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBBcnJheTo6
Q29udGlndW91czoKICAgICAgICAgY2FzZSBBcnJheTo6QXJyYXlTdG9yYWdlOgogICAgICAgICBj
YXNlIEFycmF5OjpTbG93UHV0QXJyYXlTdG9yYWdlOgotICAgICAgICAgICAgaWYgKG5vZGUtPmFy
cmF5TW9kZSgpLmlzT3V0T2ZCb3VuZHMoKSkKKyAgICAgICAgICAgIGlmIChub2RlLT5hcnJheU1v
ZGUoKS5pc0VmZmVjdGZ1bE91dE9mQm91bmRzKCkpCiAgICAgICAgICAgICAgICAgY2xvYmJlcldv
cmxkKCk7CiAgICAgICAgICAgICBtYWtlSGVhcFRvcEZvck5vZGUobm9kZSk7CiAgICAgICAgICAg
ICBicmVhazsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQXJyYXlNb2RlLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0FycmF5TW9kZS5j
cHAJKHJldmlzaW9uIDI2NTYzNykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQXJy
YXlNb2RlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjYwLDcgKzI2MCw3IEBAIEFycmF5TW9kZSBB
cnJheU1vZGU6OnJlZmluZSgKICAgICAgICAgICAgIGdyYXBoLnJlZ2lzdGVyQW5kV2F0Y2hTdHJ1
Y3R1cmVUcmFuc2l0aW9uKGFycmF5UHJvdG90eXBlU3RydWN0dXJlKTsKICAgICAgICAgICAgIGdy
YXBoLnJlZ2lzdGVyQW5kV2F0Y2hTdHJ1Y3R1cmVUcmFuc2l0aW9uKG9iamVjdFByb3RvdHlwZVN0
cnVjdHVyZSk7CiAgICAgICAgICAgICBpZiAoZ2xvYmFsT2JqZWN0LT5hcnJheVByb3RvdHlwZUNo
YWluSXNTYW5lKCkpCi0gICAgICAgICAgICAgICAgcmV0dXJuIHdpdGhTcGVjdWxhdGlvbihBcnJh
eTo6U2FuZUNoYWluKTsKKyAgICAgICAgICAgICAgICByZXR1cm4gd2l0aFNwZWN1bGF0aW9uKEFy
cmF5OjpJbkJvdW5kc1NhbmVDaGFpbik7CiAgICAgICAgIH0KICAgICAgICAgcmV0dXJuIEFycmF5
TW9kZShBcnJheTo6R2VuZXJpYywgYWN0aW9uKCkpOwogICAgIH0KQEAgLTcxMywxNCArNzEzLDE2
IEBAIGNvbnN0IGNoYXIqIGFycmF5Q2xhc3NUb1N0cmluZyhBcnJheTo6Q2wKIGNvbnN0IGNoYXIq
IGFycmF5U3BlY3VsYXRpb25Ub1N0cmluZyhBcnJheTo6U3BlY3VsYXRpb24gc3BlY3VsYXRpb24p
CiB7CiAgICAgc3dpdGNoIChzcGVjdWxhdGlvbikgewotICAgIGNhc2UgQXJyYXk6OlNhbmVDaGFp
bjoKLSAgICAgICAgcmV0dXJuICJTYW5lQ2hhaW4iOworICAgIGNhc2UgQXJyYXk6OkluQm91bmRz
U2FuZUNoYWluOgorICAgICAgICByZXR1cm4gIkluQm91bmRzU2FuZUNoYWluIjsKICAgICBjYXNl
IEFycmF5OjpJbkJvdW5kczoKICAgICAgICAgcmV0dXJuICJJbkJvdW5kcyI7CiAgICAgY2FzZSBB
cnJheTo6VG9Ib2xlOgogICAgICAgICByZXR1cm4gIlRvSG9sZSI7CiAgICAgY2FzZSBBcnJheTo6
T3V0T2ZCb3VuZHM6CiAgICAgICAgIHJldHVybiAiT3V0T2ZCb3VuZHMiOworICAgIGNhc2UgQXJy
YXk6Ok91dE9mQm91bmRzU2FuZUNoYWluOgorICAgICAgICByZXR1cm4gIk91dE9mQm91bmRzU2Fu
ZUNoYWluIjsKICAgICBkZWZhdWx0OgogICAgICAgICByZXR1cm4gIlVua25vd24hIjsKICAgICB9
CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0FycmF5TW9kZS5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQXJyYXlNb2RlLmgJKHJldmlzaW9u
IDI2NTYzNykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQXJyYXlNb2RlLmgJKHdv
cmtpbmcgY29weSkKQEAgLTg5LDEwICs4OSwxMSBAQCBlbnVtIENsYXNzIDogdWludDhfdCB7CiB9
OwogCiBlbnVtIFNwZWN1bGF0aW9uIDogdWludDhfdCB7Ci0gICAgU2FuZUNoYWluLCAvLyBJbiBi
b3VuZHMgYW5kIHRoZSBhcnJheSBwcm90b3R5cGUgY2hhaW4gaXMgc3RpbGwgaW50YWN0LCBpLmUu
IGxvYWRpbmcgYSBob2xlIGRvZXNuJ3QgcmVxdWlyZSBzcGVjaWFsIHRyZWF0bWVudC4KKyAgICBJ
bkJvdW5kc1NhbmVDaGFpbiwgLy8gSW4gYm91bmRzIGFuZCB0aGUgYXJyYXkgcHJvdG90eXBlIGNo
YWluIGlzIHN0aWxsIGludGFjdCwgaS5lLiBsb2FkaW5nIGEgaG9sZSBkb2Vzbid0IHJlcXVpcmUg
c3BlY2lhbCB0cmVhdG1lbnQuCiAgICAgCiAgICAgSW5Cb3VuZHMsIC8vIEluIGJvdW5kcyBhbmQg
bm90IGxvYWRpbmcgYSBob2xlLgogICAgIFRvSG9sZSwgLy8gUG90ZW50aWFsbHkgc3RvcmluZyB0
byBhIGhvbGUuCisgICAgT3V0T2ZCb3VuZHNTYW5lQ2hhaW4sIC8vIE91dC1vZi1ib3VuZHMgYWNj
ZXNzLCBidXQgc2FuZSBjaGFpbiwgc28gdGhlcmUgYXJlIG5vIGFyYml0cmFyeSBlZmZlY3RzLiBF
LmcsIGxvYWRpbmcgb3V0IG9mIGJvdW5kcyBkb2Vzbid0IHJlcXVpcmUgdHJhdmVyc2luZyB0aGUg
cHJvdG90eXBlIGNoYWluIGlmIHdlJ3JlIGFuIG9yaWdpbmFsIGFycmF5IHN0cnVjdHVyZS4KICAg
ICBPdXRPZkJvdW5kcyAvLyBPdXQtb2YtYm91bmRzIGFjY2VzcyBhbmQgYW55dGhpbmcgY2FuIGhh
cHBlbi4KIH07CiBlbnVtIENvbnZlcnNpb24gOiB1aW50OF90IHsKQEAgLTI3NiwxNSArMjc3LDM1
IEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIGFycmF5Q2xhc3MoKSA9PSBBcnJheTo6T3JpZ2lu
YWxBcnJheSB8fCBhcnJheUNsYXNzKCkgPT0gQXJyYXk6Ok9yaWdpbmFsQ29weU9uV3JpdGVBcnJh
eTsKICAgICB9CiAgICAgCi0gICAgYm9vbCBpc1NhbmVDaGFpbigpIGNvbnN0CisgICAgYm9vbCBp
c0luQm91bmRzU2FuZUNoYWluKCkgY29uc3QKICAgICB7Ci0gICAgICAgIHJldHVybiBzcGVjdWxh
dGlvbigpID09IEFycmF5OjpTYW5lQ2hhaW47CisgICAgICAgIHJldHVybiBzcGVjdWxhdGlvbigp
ID09IEFycmF5OjpJbkJvdW5kc1NhbmVDaGFpbjsKKyAgICB9CisKKyAgICBib29sIGlzT3V0T2ZC
b3VuZHNTYW5lQ2hhaW4oKSBjb25zdAorICAgIHsKKyAgICAgICAgcmV0dXJuIHNwZWN1bGF0aW9u
KCkgPT0gQXJyYXk6Ok91dE9mQm91bmRzU2FuZUNoYWluOworICAgIH0KKworICAgIGJvb2wgaXNB
bnlTYW5lQ2hhaW4oKSBjb25zdAorICAgIHsKKyAgICAgICAgcmV0dXJuIGlzSW5Cb3VuZHNTYW5l
Q2hhaW4oKSB8fCBpc091dE9mQm91bmRzU2FuZUNoYWluKCk7CisgICAgfQorICAgIAorICAgIGJv
b2wgaXNPdXRPZkJvdW5kcygpIGNvbnN0CisgICAgeworICAgICAgICByZXR1cm4gc3BlY3VsYXRp
b24oKSA9PSBBcnJheTo6T3V0T2ZCb3VuZHMgfHwgc3BlY3VsYXRpb24oKSA9PSBBcnJheTo6T3V0
T2ZCb3VuZHNTYW5lQ2hhaW47CisgICAgfQorCisgICAgYm9vbCBpc0VmZmVjdGZ1bE91dE9mQm91
bmRzKCkgY29uc3QKKyAgICB7CisgICAgICAgIHJldHVybiBzcGVjdWxhdGlvbigpID09IEFycmF5
OjpPdXRPZkJvdW5kczsKICAgICB9CiAgICAgCiAgICAgYm9vbCBpc0luQm91bmRzKCkgY29uc3QK
ICAgICB7CiAgICAgICAgIHN3aXRjaCAoc3BlY3VsYXRpb24oKSkgewotICAgICAgICBjYXNlIEFy
cmF5OjpTYW5lQ2hhaW46CisgICAgICAgIGNhc2UgQXJyYXk6OkluQm91bmRzU2FuZUNoYWluOgog
ICAgICAgICBjYXNlIEFycmF5OjpJbkJvdW5kczoKICAgICAgICAgICAgIHJldHVybiB0cnVlOwog
ICAgICAgICBkZWZhdWx0OgpAQCAtMjk3LDExICszMTgsNiBAQCBwdWJsaWM6CiAgICAgICAgIHJl
dHVybiAhaXNJbkJvdW5kcygpOwogICAgIH0KICAgICAKLSAgICBib29sIGlzT3V0T2ZCb3VuZHMo
KSBjb25zdAotICAgIHsKLSAgICAgICAgcmV0dXJuIHNwZWN1bGF0aW9uKCkgPT0gQXJyYXk6Ok91
dE9mQm91bmRzOwotICAgIH0KLSAgICAKICAgICBib29sIGlzU2xvd1B1dCgpIGNvbnN0CiAgICAg
ewogICAgICAgICByZXR1cm4gdHlwZSgpID09IEFycmF5OjpTbG93UHV0QXJyYXlTdG9yYWdlOwpJ
bmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDU0VQaGFzZS5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDU0VQaGFzZS5jcHAJKHJldmlzaW9u
IDI2NTYzNykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ1NFUGhhc2UuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC01NTAsNyArNTUwLDcgQEAgcHJpdmF0ZToKICAgICAgICAgICAgICAg
ICAgICAgICAgIGNhc2UgQXJyYXk6OkRvdWJsZTogewogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGlmICghbW9kZS5pc0luQm91bmRzKCkpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGJyZWFrOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgIExvY2F0aW9uS2luZCBraW5k
ID0gbW9kZS5pc1NhbmVDaGFpbigpID8gSW5kZXhlZFByb3BlcnR5RG91YmxlU2FuZUNoYWluTG9j
IDogSW5kZXhlZFByb3BlcnR5RG91YmxlTG9jOworICAgICAgICAgICAgICAgICAgICAgICAgICAg
IExvY2F0aW9uS2luZCBraW5kID0gbW9kZS5pc0luQm91bmRzU2FuZUNoYWluKCkgPyBJbmRleGVk
UHJvcGVydHlEb3VibGVTYW5lQ2hhaW5Mb2MgOiBJbmRleGVkUHJvcGVydHlEb3VibGVMb2M7CiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgaGVhcCA9IEhlYXBMb2NhdGlvbihraW5kLCBJbmRl
eGVkRG91YmxlUHJvcGVydGllcywgYmFzZSwgaW5kZXgpOwogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgICAgICAgfQpJbmRleDogU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdDbG9iYmVyaXplLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdDbG9iYmVyaXplLmgJKHJldmlzaW9uIDI2NTYzNykKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ2xvYmJlcml6ZS5oCSh3b3JraW5nIGNvcHkpCkBA
IC05MjksMjAgKzkyOSwyNyBAQCB2b2lkIGNsb2JiZXJpemUoR3JhcGgmIGdyYXBoLCBOb2RlKiBu
b2RlCiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgICAKICAgICAgICAgY2FzZSBBcnJh
eTo6SW50MzI6Ci0gICAgICAgICAgICBpZiAobW9kZS5pc0luQm91bmRzKCkpIHsKKyAgICAgICAg
ICAgIGlmIChtb2RlLmlzSW5Cb3VuZHMoKSB8fCBtb2RlLmlzT3V0T2ZCb3VuZHNTYW5lQ2hhaW4o
KSkgewogICAgICAgICAgICAgICAgIHJlYWQoQnV0dGVyZmx5X3B1YmxpY0xlbmd0aCk7CiAgICAg
ICAgICAgICAgICAgcmVhZChJbmRleGVkSW50MzJQcm9wZXJ0aWVzKTsKLSAgICAgICAgICAgICAg
ICBkZWYoSGVhcExvY2F0aW9uKGluZGV4ZWRQcm9wZXJ0eUxvYywgSW5kZXhlZEludDMyUHJvcGVy
dGllcywgZ3JhcGgudmFyQXJnQ2hpbGQobm9kZSwgMCksIGdyYXBoLnZhckFyZ0NoaWxkKG5vZGUs
IDEpKSwgTGF6eU5vZGUobm9kZSkpOworICAgICAgICAgICAgICAgIExvY2F0aW9uS2luZCBraW5k
ID0gbW9kZS5pc091dE9mQm91bmRzU2FuZUNoYWluKCkgPyBJbmRleGVkUHJvcGVydHlJbnQzMk9y
T3RoZXJMb2MgOiBpbmRleGVkUHJvcGVydHlMb2M7CisgICAgICAgICAgICAgICAgZGVmKEhlYXBM
b2NhdGlvbihraW5kLCBJbmRleGVkSW50MzJQcm9wZXJ0aWVzLCBncmFwaC52YXJBcmdDaGlsZChu
b2RlLCAwKSwgZ3JhcGgudmFyQXJnQ2hpbGQobm9kZSwgMSkpLCBMYXp5Tm9kZShub2RlKSk7CiAg
ICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgY2xvYmJl
clRvcCgpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAgCiAgICAgICAgIGNhc2Ug
QXJyYXk6OkRvdWJsZToKLSAgICAgICAgICAgIGlmIChtb2RlLmlzSW5Cb3VuZHMoKSkgeworICAg
ICAgICAgICAgaWYgKG1vZGUuaXNJbkJvdW5kcygpIHx8IG1vZGUuaXNPdXRPZkJvdW5kc1NhbmVD
aGFpbigpKSB7CiAgICAgICAgICAgICAgICAgcmVhZChCdXR0ZXJmbHlfcHVibGljTGVuZ3RoKTsK
ICAgICAgICAgICAgICAgICByZWFkKEluZGV4ZWREb3VibGVQcm9wZXJ0aWVzKTsKLSAgICAgICAg
ICAgICAgICBMb2NhdGlvbktpbmQga2luZCA9IG1vZGUuaXNTYW5lQ2hhaW4oKSA/IEluZGV4ZWRQ
cm9wZXJ0eURvdWJsZVNhbmVDaGFpbkxvYyA6IEluZGV4ZWRQcm9wZXJ0eURvdWJsZUxvYzsKKyAg
ICAgICAgICAgICAgICBMb2NhdGlvbktpbmQga2luZDsKKyAgICAgICAgICAgICAgICBpZiAobm9k
ZS0+aGFzRG91YmxlUmVzdWx0KCkpCisgICAgICAgICAgICAgICAgICAgIGtpbmQgPSBtb2RlLmlz
QW55U2FuZUNoYWluKCkgPyBJbmRleGVkUHJvcGVydHlEb3VibGVTYW5lQ2hhaW5Mb2MgOiBJbmRl
eGVkUHJvcGVydHlEb3VibGVMb2M7CisgICAgICAgICAgICAgICAgZWxzZSB7CisgICAgICAgICAg
ICAgICAgICAgIEFTU0VSVChtb2RlLmlzT3V0T2ZCb3VuZHNTYW5lQ2hhaW4oKSk7CisgICAgICAg
ICAgICAgICAgICAgIGtpbmQgPSBJbmRleGVkUHJvcGVydHlEb3VibGVPck90aGVyU2FuZUNoYWlu
TG9jOworICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICBkZWYoSGVhcExvY2F0aW9u
KGtpbmQsIEluZGV4ZWREb3VibGVQcm9wZXJ0aWVzLCBncmFwaC52YXJBcmdDaGlsZChub2RlLCAw
KSwgZ3JhcGgudmFyQXJnQ2hpbGQobm9kZSwgMSkpLCBMYXp5Tm9kZShub2RlKSk7CiAgICAgICAg
ICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAgfQpAQCAtOTUwLDcgKzk1Nyw3IEBAIHZvaWQg
Y2xvYmJlcml6ZShHcmFwaCYgZ3JhcGgsIE5vZGUqIG5vZGUKICAgICAgICAgICAgIHJldHVybjsK
ICAgICAgICAgICAgIAogICAgICAgICBjYXNlIEFycmF5OjpDb250aWd1b3VzOgotICAgICAgICAg
ICAgaWYgKG1vZGUuaXNJbkJvdW5kcygpKSB7CisgICAgICAgICAgICBpZiAobW9kZS5pc0luQm91
bmRzKCkgfHwgbW9kZS5pc091dE9mQm91bmRzU2FuZUNoYWluKCkpIHsKICAgICAgICAgICAgICAg
ICByZWFkKEJ1dHRlcmZseV9wdWJsaWNMZW5ndGgpOwogICAgICAgICAgICAgICAgIHJlYWQoSW5k
ZXhlZENvbnRpZ3VvdXNQcm9wZXJ0aWVzKTsKICAgICAgICAgICAgICAgICBkZWYoSGVhcExvY2F0
aW9uKGluZGV4ZWRQcm9wZXJ0eUxvYywgSW5kZXhlZENvbnRpZ3VvdXNQcm9wZXJ0aWVzLCBncmFw
aC52YXJBcmdDaGlsZChub2RlLCAwKSwgZ3JhcGgudmFyQXJnQ2hpbGQobm9kZSwgMSkpLCBMYXp5
Tm9kZShub2RlKSk7CkBAIC0xMDQyLDYgKzEwNDksNyBAQCB2b2lkIGNsb2JiZXJpemUoR3JhcGgm
IGdyYXBoLCBOb2RlKiBub2RlCiAgICAgICAgICAgICBpZiAobm9kZS0+YXJyYXlNb2RlKCkubWF5
U3RvcmVUb0hvbGUoKSkKICAgICAgICAgICAgICAgICB3cml0ZShCdXR0ZXJmbHlfcHVibGljTGVu
Z3RoKTsKICAgICAgICAgICAgIGRlZihIZWFwTG9jYXRpb24oaW5kZXhlZFByb3BlcnR5TG9jLCBJ
bmRleGVkSW50MzJQcm9wZXJ0aWVzLCBiYXNlLCBpbmRleCksIExhenlOb2RlKHZhbHVlKSk7Cisg
ICAgICAgICAgICBkZWYoSGVhcExvY2F0aW9uKEluZGV4ZWRQcm9wZXJ0eUludDMyT3JPdGhlckxv
YywgSW5kZXhlZEludDMyUHJvcGVydGllcywgYmFzZSwgaW5kZXgpLCBMYXp5Tm9kZSh2YWx1ZSkp
OwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAgCiAgICAgICAgIGNhc2UgQXJyYXk6
OkRvdWJsZToKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRml4dXBQaGFzZS5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdGaXh1cFBoYXNl
LmNwcAkocmV2aXNpb24gMjY1NjM3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdG
aXh1cFBoYXNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTA1OSwyMCArMTA1OSwyNCBAQCBwcml2
YXRlOgogICAgICAgICAgICAgc3dpdGNoIChhcnJheU1vZGUudHlwZSgpKSB7CiAgICAgICAgICAg
ICBjYXNlIEFycmF5OjpDb250aWd1b3VzOgogICAgICAgICAgICAgY2FzZSBBcnJheTo6RG91Ymxl
OgotICAgICAgICAgICAgICAgIGlmIChhcnJheU1vZGUuaXNKU0FycmF5V2l0aE9yaWdpbmFsU3Ry
dWN0dXJlKCkgJiYgYXJyYXlNb2RlLnNwZWN1bGF0aW9uKCkgPT0gQXJyYXk6OkluQm91bmRzKSB7
Ci0gICAgICAgICAgICAgICAgICAgIC8vIENoZWNrIGlmIFNhbmVDaGFpbiB3aWxsIHdvcmsgb24g
YSBwZXItdHlwZSBiYXNpcy4gTm90ZSB0aGF0OgorICAgICAgICAgICAgY2FzZSBBcnJheTo6SW50
MzI6IHsKKyAgICAgICAgICAgICAgICBPcHRpb25hbDxBcnJheTo6U3BlY3VsYXRpb24+IHNhbmVD
aGFpblNwZWN1bGF0aW9uOworICAgICAgICAgICAgICAgIGlmIChhcnJheU1vZGUuaXNKU0FycmF5
V2l0aE9yaWdpbmFsU3RydWN0dXJlKCkpIHsKKyAgICAgICAgICAgICAgICAgICAgLy8gQ2hlY2sg
aWYgSW5Cb3VuZHNTYW5lQ2hhaW4gd2lsbCB3b3JrIG9uIGEgcGVyLXR5cGUgYmFzaXMuIE5vdGUg
dGhhdDoKICAgICAgICAgICAgICAgICAgICAgLy8KICAgICAgICAgICAgICAgICAgICAgLy8gMSkg
V2UgZG9uJ3Qgd2FudCBkb3VibGUgYXJyYXlzIHRvIHNvbWV0aW1lcyByZXR1cm4gdW5kZWZpbmVk
LCBzaW5jZQogICAgICAgICAgICAgICAgICAgICAvLyB0aGF0IHdvdWxkIHJlcXVpcmUgYSBjaGFu
Z2UgdG8gdGhlIHJldHVybiB0eXBlIGFuZCBpdCB3b3VsZCBwZXNzaW1pc2UKICAgICAgICAgICAg
ICAgICAgICAgLy8gdGhpbmdzIGEgbG90LiBTbywgd2UnZCBvbmx5IHdhbnQgdG8gZG8gdGhhdCBp
ZiB3ZSBhY3R1YWxseSBoYWQKICAgICAgICAgICAgICAgICAgICAgLy8gZXZpZGVuY2UgdGhhdCB3
ZSBjb3VsZCByZWFkIGZyb20gYSBob2xlLiBUaGF0J3MgcHJldHR5IGFubm95aW5nLgogICAgICAg
ICAgICAgICAgICAgICAvLyBMaWtlbHkgdGhlIGJlc3Qgd2F5IHRvIGhhbmRsZSB0aGF0IGNhc2Ug
aXMgd2l0aCBhbiBlcXVpdmFsZW50IG9mCi0gICAgICAgICAgICAgICAgICAgIC8vIFNhbmVDaGFp
biBmb3IgT3V0T2ZCb3VuZHMuIEZvciBub3cgd2UganVzdCBkZXRlY3Qgd2hlbiBVbmRlZmluZWQg
YW5kCisgICAgICAgICAgICAgICAgICAgIC8vIEluQm91bmRzU2FuZUNoYWluIGZvciBPdXRPZkJv
dW5kcy4gRm9yIG5vdyB3ZSBqdXN0IGRldGVjdCB3aGVuIFVuZGVmaW5lZCBhbmQKICAgICAgICAg
ICAgICAgICAgICAgLy8gTmFOIGFyZSBpbmRpc3Rpbmd1aXNoYWJsZSBhY2NvcmRpbmcgdG8gYmFj
a3dhcmRzIHByb3BhZ2F0aW9uLCBhbmQganVzdAotICAgICAgICAgICAgICAgICAgICAvLyB1c2Ug
U2FuZUNoYWluIGluIHRoYXQgY2FzZS4gVGhpcyBoYXBwZW5zIHRvIGNhdGNoIGEgbG90IG9mIGNh
c2VzLgorICAgICAgICAgICAgICAgICAgICAvLyB1c2UgSW5Cb3VuZHNTYW5lQ2hhaW4gaW4gdGhh
dCBjYXNlLiBUaGlzIGhhcHBlbnMgdG8gY2F0Y2ggYSBsb3Qgb2YgY2FzZXMuCiAgICAgICAgICAg
ICAgICAgICAgIC8vCiAgICAgICAgICAgICAgICAgICAgIC8vIDIpIFdlIGRvbid0IHdhbnQgaW50
MzIgYXJyYXkgbG9hZHMgdG8gaGF2ZSB0byBkbyBhIGhvbGUgY2hlY2sganVzdCB0bwotICAgICAg
ICAgICAgICAgICAgICAvLyBjb2VyY2UgdG8gVW5kZWZpbmVkLCBzaW5jZSB0aGF0IHdvdWxkIG1l
YW4gdHdpY2UgdGhlIGNoZWNrcy4KKyAgICAgICAgICAgICAgICAgICAgLy8gY29lcmNlIHRvIFVu
ZGVmaW5lZCwgc2luY2UgdGhhdCB3b3VsZCBtZWFuIHR3aWNlIHRoZSBjaGVja3MuIFdlIHdhbnQg
dG8KKyAgICAgICAgICAgICAgICAgICAgLy8gYmUgYWJsZSB0byBzYXkgd2UgYWx3YXlzIHJldHVy
biBJbnQzMi4gRklYTUU6IE1heWJlIHRoaXMgc2hvdWxkIGJlIHByb2ZpbGluZworICAgICAgICAg
ICAgICAgICAgICAvLyBiYXNlZD8KICAgICAgICAgICAgICAgICAgICAgLy8KICAgICAgICAgICAg
ICAgICAgICAgLy8gVGhpcyBoYXMgdHdvIGltcGxpY2F0aW9ucy4gRmlyc3QsIHdlIGhhdmUgdG8g
ZG8gbW9yZSBjaGVja3MgdGhhbiB3ZSdkCiAgICAgICAgICAgICAgICAgICAgIC8vIGxpa2UuIEl0
J3MgdW5mb3J0dW5hdGUgdGhhdCB3ZSBoYXZlIHRvIGRvIHRoZSBob2xlIGNoZWNrLiBTZWNvbmQs
CkBAIC0xMDgwLDMyICsxMDg0LDQxIEBAIHByaXZhdGU6CiAgICAgICAgICAgICAgICAgICAgIC8v
IG91dC1vZi1ib3VuZHMgc2xvdyBwYXRoLiBXZSBjYW4gZml4IHRoYXQgd2l0aDoKICAgICAgICAg
ICAgICAgICAgICAgLy8gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE0
NDY2OAogICAgICAgICAgICAgICAgICAgICAKLSAgICAgICAgICAgICAgICAgICAgYm9vbCBjYW5E
b1NhbmVDaGFpbiA9IGZhbHNlOwogICAgICAgICAgICAgICAgICAgICBzd2l0Y2ggKGFycmF5TW9k
ZS50eXBlKCkpIHsKKyAgICAgICAgICAgICAgICAgICAgY2FzZSBBcnJheTo6SW50MzI6CisgICAg
ICAgICAgICAgICAgICAgICAgICBpZiAoYXJyYXlNb2RlLnNwZWN1bGF0aW9uKCkgPT0gQXJyYXk6
Ok91dE9mQm91bmRzICYmICFtX2dyYXBoLmhhc0V4aXRTaXRlKG5vZGUtPm9yaWdpbi5zZW1hbnRp
YywgTmVnYXRpdmVJbmRleCkpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2FuZUNoYWlu
U3BlY3VsYXRpb24gPSBBcnJheTo6T3V0T2ZCb3VuZHNTYW5lQ2hhaW47CisgICAgICAgICAgICAg
ICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICAgY2FzZSBBcnJheTo6Q29udGln
dW91czoKICAgICAgICAgICAgICAgICAgICAgICAgIC8vIFRoaXMgaXMgaGFwcGVucyB0byBiZSBl
bnRpcmVseSBuYXR1cmFsLiBXZSBhbHJlYWR5IHdvdWxkIGhhdmUKICAgICAgICAgICAgICAgICAg
ICAgICAgIC8vIHJldHVybmVkIGFueSBKU1ZhbHVlLCBhbmQgbm93IHdlJ2xsIHJldHVybiBVbmRl
ZmluZWQuIFdlIHN0aWxsIGRvCiAgICAgICAgICAgICAgICAgICAgICAgICAvLyB0aGUgY2hlY2sg
YnV0IGl0IGRvZXNuJ3QgcmVxdWlyZSB0YWtpbmcgYW55IGtpbmQgb2Ygc2xvdyBwYXRoLgotICAg
ICAgICAgICAgICAgICAgICAgICAgY2FuRG9TYW5lQ2hhaW4gPSB0cnVlOworICAgICAgICAgICAg
ICAgICAgICAgICAgaWYgKGFycmF5TW9kZS5zcGVjdWxhdGlvbigpID09IEFycmF5OjpPdXRPZkJv
dW5kcyAmJiAhbV9ncmFwaC5oYXNFeGl0U2l0ZShub2RlLT5vcmlnaW4uc2VtYW50aWMsIE5lZ2F0
aXZlSW5kZXgpKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNhbmVDaGFpblNwZWN1bGF0
aW9uID0gQXJyYXk6Ok91dE9mQm91bmRzU2FuZUNoYWluOworICAgICAgICAgICAgICAgICAgICAg
ICAgZWxzZSBpZiAoYXJyYXlNb2RlLnNwZWN1bGF0aW9uKCkgPT0gQXJyYXk6OkluQm91bmRzKQor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNhbmVDaGFpblNwZWN1bGF0aW9uID0gQXJyYXk6
OkluQm91bmRzU2FuZUNoYWluOwogICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAg
ICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgY2FzZSBBcnJheTo6RG91
YmxlOgotICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCEobm9kZS0+ZmxhZ3MoKSAmIE5vZGVC
eXRlY29kZVVzZXNBc090aGVyKSkgeworICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCEobm9k
ZS0+ZmxhZ3MoKSAmIE5vZGVCeXRlY29kZVVzZXNBc090aGVyKSAmJiBhcnJheU1vZGUuc3BlY3Vs
YXRpb24oKSA9PSBBcnJheTo6SW5Cb3VuZHMpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAvLyBIb2xlcyBsb29rIGxpa2UgTmFOIGFscmVhZHksIHNvIGlmIHRoZSB1c2VyIGRvZXNuJ3Qg
Y2FyZQogICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGFib3V0IHRoZSBkaWZmZXJlbmNl
IGJldHdlZW4gVW5kZWZpbmVkIGFuZCBOYU4gdGhlbiB3ZSBjYW4KICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAvLyBkbyB0aGlzLgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhbkRv
U2FuZUNoYWluID0gdHJ1ZTsKLSAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBzYW5lQ2hhaW5TcGVjdWxhdGlvbiA9IEFycmF5OjpJbkJvdW5kc1Nh
bmVDaGFpbjsKKyAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoYXJyYXlNb2RlLnNw
ZWN1bGF0aW9uKCkgPT0gQXJyYXk6Ok91dE9mQm91bmRzICYmICFtX2dyYXBoLmhhc0V4aXRTaXRl
KG5vZGUtPm9yaWdpbi5zZW1hbnRpYywgTmVnYXRpdmVJbmRleCkpCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgc2FuZUNoYWluU3BlY3VsYXRpb24gPSBBcnJheTo6T3V0T2ZCb3VuZHNTYW5l
Q2hhaW47CiAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAg
ICAgICAgIAogICAgICAgICAgICAgICAgICAgICBkZWZhdWx0OgogICAgICAgICAgICAgICAgICAg
ICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgICAg
Ci0gICAgICAgICAgICAgICAgICAgIGlmIChjYW5Eb1NhbmVDaGFpbikKLSAgICAgICAgICAgICAg
ICAgICAgICAgIHNldFNhbmVDaGFpbklmUG9zc2libGUobm9kZSk7CiAgICAgICAgICAgICAgICAg
fQorCisgICAgICAgICAgICAgICAgaWYgKHNhbmVDaGFpblNwZWN1bGF0aW9uKQorICAgICAgICAg
ICAgICAgICAgICBzZXRTYW5lQ2hhaW5JZlBvc3NpYmxlKG5vZGUsICpzYW5lQ2hhaW5TcGVjdWxh
dGlvbik7CisKICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIH0KICAgICAgICAg
ICAgICAgICAKICAgICAgICAgICAgIGNhc2UgQXJyYXk6OlN0cmluZzoKICAgICAgICAgICAgICAg
ICBpZiAoKG5vZGUtPnByZWRpY3Rpb24oKSAmIH5TcGVjU3RyaW5nKQpAQCAtMTE1NSw3ICsxMTY4
LDggQEAgcHJpdmF0ZToKICAgICAgICAgICAgIAogICAgICAgICAgICAgc3dpdGNoIChhcnJheU1v
ZGUudHlwZSgpKSB7CiAgICAgICAgICAgICBjYXNlIEFycmF5OjpEb3VibGU6Ci0gICAgICAgICAg
ICAgICAgaWYgKCFhcnJheU1vZGUuaXNPdXRPZkJvdW5kcygpKQorICAgICAgICAgICAgICAgIGlm
ICghYXJyYXlNb2RlLmlzT3V0T2ZCb3VuZHMoKQorICAgICAgICAgICAgICAgICAgICB8fCAoYXJy
YXlNb2RlLmlzT3V0T2ZCb3VuZHNTYW5lQ2hhaW4oKSAmJiAhKG5vZGUtPmZsYWdzKCkgJiBOb2Rl
Qnl0ZWNvZGVVc2VzQXNPdGhlcikpKQogICAgICAgICAgICAgICAgICAgICBub2RlLT5zZXRSZXN1
bHQoTm9kZVJlc3VsdERvdWJsZSk7CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAg
ICAgICAgCkBAIC0yMjAyLDcgKzIyMTYsNyBAQCBwcml2YXRlOgogICAgICAgICAgICAgLy8gRklY
TUU6IE91dE9mQm91bmRzIHNob3VsZG4ndCBwcmVjbHVkZSBnb2luZyBzYW5lIGNoYWluIGJlY2F1
c2UgT09CIGlzIGp1c3QgZmFsc2UgYW5kIGNhbm5vdCBoYXZlIGVmZmVjdHMuCiAgICAgICAgICAg
ICAvLyBTZWU6IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDk0NTYK
ICAgICAgICAgICAgIGlmIChhcnJheU1vZGUuaXNKU0FycmF5V2l0aE9yaWdpbmFsU3RydWN0dXJl
KCkgJiYgYXJyYXlNb2RlLnNwZWN1bGF0aW9uKCkgPT0gQXJyYXk6OkluQm91bmRzKQotICAgICAg
ICAgICAgICAgIHNldFNhbmVDaGFpbklmUG9zc2libGUobm9kZSk7CisgICAgICAgICAgICAgICAg
c2V0U2FuZUNoYWluSWZQb3NzaWJsZShub2RlLCBBcnJheTo6SW5Cb3VuZHNTYW5lQ2hhaW4pOwog
ICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAgICAgICAgY2FzZSBHZXREaXJlY3RQbmFt
ZTogewpAQCAtMzUwOSw3ICszNTIzLDcgQEAgcHJpdmF0ZToKICAgICAgICAgICAgIG1faW5zZXJ0
aW9uU2V0Lmluc2VydE5vZGUoCiAgICAgICAgICAgICAgICAgbV9pbmRleEluQmxvY2ssIFNwZWNO
b25lLCBDaGVjaywgb3JpZ2luLCBFZGdlKGFycmF5LCBTdHJpbmdVc2UpKTsKICAgICAgICAgfSBl
bHNlIHsKLSAgICAgICAgICAgIC8vIE5vdGUgdGhhdCB3ZSBvbmx5IG5lZWQgdG8gYmUgdXNpbmcg
YSBzdHJ1Y3R1cmUgY2hlY2sgaWYgd2Ugb3B0IGZvciBTYW5lQ2hhaW4sIHNpbmNlCisgICAgICAg
ICAgICAvLyBOb3RlIHRoYXQgd2Ugb25seSBuZWVkIHRvIGJlIHVzaW5nIGEgc3RydWN0dXJlIGNo
ZWNrIGlmIHdlIG9wdCBmb3IgSW5Cb3VuZHNTYW5lQ2hhaW4sIHNpbmNlCiAgICAgICAgICAgICAv
LyB0aGF0IG5lZWRzIHRvIHByb3RlY3QgYWdhaW5zdCBKU0FycmF5J3MgX19wcm90b19fIGJlaW5n
IGNoYW5nZWQuCiAgICAgICAgICAgICBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSA9IGFycmF5TW9kZS5v
cmlnaW5hbEFycmF5U3RydWN0dXJlKG1fZ3JhcGgsIG9yaWdpbi5zZW1hbnRpYyk7CiAgICAgICAg
IApAQCAtMzU1MSw3ICszNTY1LDcgQEAgcHJpdmF0ZToKICAgICAgICAgICAgIE9wSW5mbyhhcnJh
eU1vZGUuYXNXb3JkKCkpLCBFZGdlKGFycmF5LCBLbm93bkNlbGxVc2UpKTsKICAgICB9CiAKLSAg
ICB2b2lkIHNldFNhbmVDaGFpbklmUG9zc2libGUoTm9kZSogbm9kZSkKKyAgICB2b2lkIHNldFNh
bmVDaGFpbklmUG9zc2libGUoTm9kZSogbm9kZSwgQXJyYXk6OlNwZWN1bGF0aW9uIHNwZWN1bGF0
aW9uKQogICAgIHsKICAgICAgICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCA9IG1fZ3Jh
cGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYyk7CiAgICAgICAgIFN0cnVj
dHVyZSogYXJyYXlQcm90b3R5cGVTdHJ1Y3R1cmUgPSBnbG9iYWxPYmplY3QtPmFycmF5UHJvdG90
eXBlKCktPnN0cnVjdHVyZSh2bSgpKTsKQEAgLTM1NjEsNyArMzU3NSw3IEBAIHByaXZhdGU6CiAg
ICAgICAgICAgICAmJiBnbG9iYWxPYmplY3QtPmFycmF5UHJvdG90eXBlQ2hhaW5Jc1NhbmUoKSkg
ewogICAgICAgICAgICAgbV9ncmFwaC5yZWdpc3RlckFuZFdhdGNoU3RydWN0dXJlVHJhbnNpdGlv
bihhcnJheVByb3RvdHlwZVN0cnVjdHVyZSk7CiAgICAgICAgICAgICBtX2dyYXBoLnJlZ2lzdGVy
QW5kV2F0Y2hTdHJ1Y3R1cmVUcmFuc2l0aW9uKG9iamVjdFByb3RvdHlwZVN0cnVjdHVyZSk7Ci0g
ICAgICAgICAgICBub2RlLT5zZXRBcnJheU1vZGUobm9kZS0+YXJyYXlNb2RlKCkud2l0aFNwZWN1
bGF0aW9uKEFycmF5OjpTYW5lQ2hhaW4pKTsKKyAgICAgICAgICAgIG5vZGUtPnNldEFycmF5TW9k
ZShub2RlLT5hcnJheU1vZGUoKS53aXRoU3BlY3VsYXRpb24oc3BlY3VsYXRpb24pKTsKICAgICAg
ICAgICAgIG5vZGUtPmNsZWFyRmxhZ3MoTm9kZU11c3RHZW5lcmF0ZSk7CiAgICAgICAgIH0KICAg
ICB9CkBAIC0zOTQzLDcgKzM5NTcsNyBAQCBwcml2YXRlOgogICAgICAgICAvLyBGSVhNRTogT3V0
T2ZCb3VuZHMgc2hvdWxkbid0IHByZWNsdWRlIGdvaW5nIHNhbmUgY2hhaW4gYmVjYXVzZSBPT0Ig
aXMganVzdCBmYWxzZSBhbmQgY2Fubm90IGhhdmUgZWZmZWN0cy4KICAgICAgICAgLy8gU2VlOiBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjA5NDU2CiAgICAgICAgIGlm
IChhcnJheU1vZGUuaXNKU0FycmF5V2l0aE9yaWdpbmFsU3RydWN0dXJlKCkgJiYgYXJyYXlNb2Rl
LnNwZWN1bGF0aW9uKCkgPT0gQXJyYXk6OkluQm91bmRzKQotICAgICAgICAgICAgc2V0U2FuZUNo
YWluSWZQb3NzaWJsZShub2RlKTsKKyAgICAgICAgICAgIHNldFNhbmVDaGFpbklmUG9zc2libGUo
bm9kZSwgQXJyYXk6OkluQm91bmRzU2FuZUNoYWluKTsKIAogICAgICAgICBmaXhFZGdlPENlbGxV
c2U+KG1fZ3JhcGgudmFyQXJnQ2hpbGQobm9kZSwgMCkpOwogICAgICAgICBmaXhFZGdlPEludDMy
VXNlPihtX2dyYXBoLnZhckFyZ0NoaWxkKG5vZGUsIDEpKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHSGVhcExvY2F0aW9uLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR0hlYXBMb2NhdGlvbi5jcHAJKHJldmlzaW9uIDI2NTYzNykKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHSGVhcExvY2F0aW9uLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtMTM4LDEwICsxMzgsMTggQEAgdm9pZCBwcmludEludGVybmFsKFByaW50U3RyZWFt
JiBvdXQsIExvYwogICAgICAgICBvdXQucHJpbnQoIkluZGV4ZWRQcm9wZXJ0eURvdWJsZVNhbmVD
aGFpbkxvYyIpOwogICAgICAgICByZXR1cm47CiAKKyAgICBjYXNlIEluZGV4ZWRQcm9wZXJ0eURv
dWJsZU9yT3RoZXJTYW5lQ2hhaW5Mb2M6CisgICAgICAgIG91dC5wcmludCgiSW5kZXhlZFByb3Bl
cnR5RG91YmxlT3JPdGhlclNhbmVDaGFpbkxvYyIpOworICAgICAgICByZXR1cm47CisKICAgICBj
YXNlIEluZGV4ZWRQcm9wZXJ0eUludDMyTG9jOgogICAgICAgICBvdXQucHJpbnQoIkluZGV4ZWRQ
cm9wZXJ0eUludDMyTG9jIik7CiAgICAgICAgIHJldHVybjsKIAorICAgIGNhc2UgSW5kZXhlZFBy
b3BlcnR5SW50MzJPck90aGVyTG9jOgorICAgICAgICBvdXQucHJpbnQoIkluZGV4ZWRQcm9wZXJ0
eUludDMyT3JPdGhlckxvYyIpOworICAgICAgICByZXR1cm47CisKICAgICBjYXNlIEluZGV4ZWRQ
cm9wZXJ0eUludDUyTG9jOgogICAgICAgICBvdXQucHJpbnQoIkluZGV4ZWRQcm9wZXJ0eUludDUy
TG9jIik7CiAgICAgICAgIHJldHVybjsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHSGVhcExvY2F0aW9uLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdIZWFwTG9jYXRpb24uaAkocmV2aXNpb24gMjY1NjM3KQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdIZWFwTG9jYXRpb24uaAkod29ya2luZyBjb3B5KQpAQCAtNDksNyArNDks
OSBAQCBlbnVtIExvY2F0aW9uS2luZCB7CiAgICAgSGFzSW5kZXhlZFByb3BlcnR5TG9jLAogICAg
IEluZGV4ZWRQcm9wZXJ0eURvdWJsZUxvYywKICAgICBJbmRleGVkUHJvcGVydHlEb3VibGVTYW5l
Q2hhaW5Mb2MsCisgICAgSW5kZXhlZFByb3BlcnR5RG91YmxlT3JPdGhlclNhbmVDaGFpbkxvYywK
ICAgICBJbmRleGVkUHJvcGVydHlJbnQzMkxvYywKKyAgICBJbmRleGVkUHJvcGVydHlJbnQzMk9y
T3RoZXJMb2MsCiAgICAgSW5kZXhlZFByb3BlcnR5SW50NTJMb2MsCiAgICAgSW5kZXhlZFByb3Bl
cnR5SlNMb2MsCiAgICAgSW5kZXhlZFByb3BlcnR5U3RvcmFnZUxvYywKSW5kZXg6IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQzMl82NC5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDMyXzY0LmNwcAko
cmV2aXNpb24gMjY1NjM3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxh
dGl2ZUpJVDMyXzY0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjM2Niw3ICsyMzY2LDcgQEAgdm9p
ZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShOb2RlKiBub2RlKQogICAgICAgICAgICAgCiAgICAg
ICAgICAgICAgICAgR1BSVGVtcG9yYXJ5IHJlc3VsdFBheWxvYWQodGhpcyk7CiAgICAgICAgICAg
ICAgICAgaWYgKG5vZGUtPmFycmF5TW9kZSgpLnR5cGUoKSA9PSBBcnJheTo6SW50MzIpIHsKLSAg
ICAgICAgICAgICAgICAgICAgQVNTRVJUKCFub2RlLT5hcnJheU1vZGUoKS5pc1NhbmVDaGFpbigp
KTsKKyAgICAgICAgICAgICAgICAgICAgQVNTRVJUKCFub2RlLT5hcnJheU1vZGUoKS5pc0luQm91
bmRzU2FuZUNoYWluKCkpOwogICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAg
ICAgc3BlY3VsYXRpb25DaGVjaygKICAgICAgICAgICAgICAgICAgICAgICAgIE91dE9mQm91bmRz
LCBKU1ZhbHVlUmVncygpLCAwLApAQCAtMjM5Miw3ICsyMzkyLDcgQEAgdm9pZCBTcGVjdWxhdGl2
ZUpJVDo6Y29tcGlsZShOb2RlKiBub2RlKQogICAgICAgICAgICAgICAgICAgICBNYWNyb0Fzc2Vt
Ymxlcjo6QmFzZUluZGV4KAogICAgICAgICAgICAgICAgICAgICAgICAgc3RvcmFnZVJlZywgcHJv
cGVydHlSZWcsIE1hY3JvQXNzZW1ibGVyOjpUaW1lc0VpZ2h0LCBQYXlsb2FkT2Zmc2V0KSwKICAg
ICAgICAgICAgICAgICAgICAgcmVzdWx0UGF5bG9hZC5ncHIoKSk7Ci0gICAgICAgICAgICAgICAg
aWYgKG5vZGUtPmFycmF5TW9kZSgpLmlzU2FuZUNoYWluKCkpIHsKKyAgICAgICAgICAgICAgICBp
ZiAobm9kZS0+YXJyYXlNb2RlKCkuaXNJbkJvdW5kc1NhbmVDaGFpbigpKSB7CiAgICAgICAgICAg
ICAgICAgICAgIEpJVENvbXBpbGVyOjpKdW1wIG5vdEhvbGUgPSBtX2ppdC5icmFuY2hJZk5vdEVt
cHR5KHJlc3VsdFRhZy5ncHIoKSk7CiAgICAgICAgICAgICAgICAgICAgIG1faml0Lm1vdmUoVHJ1
c3RlZEltbTMyKEpTVmFsdWU6OlVuZGVmaW5lZFRhZyksIHJlc3VsdFRhZy5ncHIoKSk7CiAgICAg
ICAgICAgICAgICAgICAgIG1faml0Lm1vdmUoVHJ1c3RlZEltbTMyKDApLCByZXN1bHRQYXlsb2Fk
LmdwcigpKTsKQEAgLTI0NTMsNyArMjQ1Myw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBp
bGUoTm9kZSogbm9kZSkKICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgIEZQUlRlbXBvcmFy
eSByZXN1bHQodGhpcyk7CiAgICAgICAgICAgICAgICAgbV9qaXQubG9hZERvdWJsZShNYWNyb0Fz
c2VtYmxlcjo6QmFzZUluZGV4KHN0b3JhZ2VSZWcsIHByb3BlcnR5UmVnLCBNYWNyb0Fzc2VtYmxl
cjo6VGltZXNFaWdodCksIHJlc3VsdC5mcHIoKSk7Ci0gICAgICAgICAgICAgICAgaWYgKCFub2Rl
LT5hcnJheU1vZGUoKS5pc1NhbmVDaGFpbigpKQorICAgICAgICAgICAgICAgIGlmICghbm9kZS0+
YXJyYXlNb2RlKCkuaXNJbkJvdW5kc1NhbmVDaGFpbigpKQogICAgICAgICAgICAgICAgICAgICBz
cGVjdWxhdGlvbkNoZWNrKExvYWRGcm9tSG9sZSwgSlNWYWx1ZVJlZ3MoKSwgMCwgbV9qaXQuYnJh
bmNoSWZOYU4ocmVzdWx0LmZwcigpKSk7CiAgICAgICAgICAgICAgICAgZG91YmxlUmVzdWx0KHJl
c3VsdC5mcHIoKSwgbm9kZSk7CiAgICAgICAgICAgICAgICAgYnJlYWs7CkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHAJKHJldmlz
aW9uIDI2NTYzNykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVK
SVQ2NC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI3MzYsNyArMjczNiw3IEBAIHZvaWQgU3BlY3Vs
YXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSogbm9kZSkKICAgICAgICAgICAgICAgICBHUFJUZW1wb3Jh
cnkgcmVzdWx0KHRoaXMpOwogCiAgICAgICAgICAgICAgICAgbV9qaXQubG9hZDY0KE1hY3JvQXNz
ZW1ibGVyOjpCYXNlSW5kZXgoc3RvcmFnZVJlZywgcHJvcGVydHlSZWcsIE1hY3JvQXNzZW1ibGVy
OjpUaW1lc0VpZ2h0KSwgcmVzdWx0LmdwcigpKTsKLSAgICAgICAgICAgICAgICBpZiAobm9kZS0+
YXJyYXlNb2RlKCkuaXNTYW5lQ2hhaW4oKSkgeworICAgICAgICAgICAgICAgIGlmIChub2RlLT5h
cnJheU1vZGUoKS5pc0luQm91bmRzU2FuZUNoYWluKCkpIHsKICAgICAgICAgICAgICAgICAgICAg
QVNTRVJUKG5vZGUtPmFycmF5TW9kZSgpLnR5cGUoKSA9PSBBcnJheTo6Q29udGlndW91cyk7CiAg
ICAgICAgICAgICAgICAgICAgIEpJVENvbXBpbGVyOjpKdW1wIG5vdEhvbGUgPSBtX2ppdC5icmFu
Y2hJZk5vdEVtcHR5KHJlc3VsdC5ncHIoKSk7CiAgICAgICAgICAgICAgICAgICAgIG1faml0Lm1v
dmUoVHJ1c3RlZEltbTY0KEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKSksIHJlc3VsdC5n
cHIoKSk7CkBAIC0yNzY5LDEyICsyNzY5LDIxIEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBp
bGUoTm9kZSogbm9kZSkKICAgICAgICAgICAgIHNsb3dDYXNlcy5hcHBlbmQobV9qaXQuYnJhbmNo
MzIoTWFjcm9Bc3NlbWJsZXI6OkFib3ZlT3JFcXVhbCwgcHJvcGVydHlSZWcsIE1hY3JvQXNzZW1i
bGVyOjpBZGRyZXNzKHN0b3JhZ2VSZWcsIEJ1dHRlcmZseTo6b2Zmc2V0T2ZQdWJsaWNMZW5ndGgo
KSkpKTsKIAogICAgICAgICAgICAgbV9qaXQubG9hZDY0KE1hY3JvQXNzZW1ibGVyOjpCYXNlSW5k
ZXgoc3RvcmFnZVJlZywgcHJvcGVydHlSZWcsIE1hY3JvQXNzZW1ibGVyOjpUaW1lc0VpZ2h0KSwg
cmVzdWx0UmVnKTsKLSAgICAgICAgICAgIHNsb3dDYXNlcy5hcHBlbmQobV9qaXQuYnJhbmNoSWZF
bXB0eShyZXN1bHRSZWcpKTsKKworICAgICAgICAgICAgaWYgKG5vZGUtPmFycmF5TW9kZSgpLmlz
T3V0T2ZCb3VuZHNTYW5lQ2hhaW4oKSkgeworICAgICAgICAgICAgICAgIGF1dG8gZG9uZSA9IG1f
aml0LmJyYW5jaElmTm90RW1wdHkocmVzdWx0UmVnKTsKKyAgICAgICAgICAgICAgICBzbG93Q2Fz
ZXMubGluaygmbV9qaXQpOworICAgICAgICAgICAgICAgIHNwZWN1bGF0aW9uQ2hlY2soTmVnYXRp
dmVJbmRleCwgSlNWYWx1ZVJlZ3MoKSwgbnVsbHB0ciwgbV9qaXQuYnJhbmNoMzIoTWFjcm9Bc3Nl
bWJsZXI6Okxlc3NUaGFuLCBwcm9wZXJ0eVJlZywgQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tMzIo
MCkpKTsKKyAgICAgICAgICAgICAgICBtX2ppdC5tb3ZlKENDYWxsSGVscGVyczo6VHJ1c3RlZElt
bTY0KEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKSksIHJlc3VsdFJlZyk7CisgICAgICAg
ICAgICAgICAgZG9uZS5saW5rKCZtX2ppdCk7CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAg
ICAgICAgICAgIHNsb3dDYXNlcy5hcHBlbmQobV9qaXQuYnJhbmNoSWZFbXB0eShyZXN1bHRSZWcp
KTsKKyAgICAgICAgICAgICAgICBhZGRTbG93UGF0aEdlbmVyYXRvcigKKyAgICAgICAgICAgICAg
ICAgICAgc2xvd1BhdGhDYWxsKAorICAgICAgICAgICAgICAgICAgICAgICAgc2xvd0Nhc2VzLCB0
aGlzLCBvcGVyYXRpb25HZXRCeVZhbE9iamVjdEludCwKKyAgICAgICAgICAgICAgICAgICAgICAg
IHJlc3VsdC5ncHIoKSwgVHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIobV9ncmFwaCwgbV9ncmFw
aC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSksIGJhc2VSZWcsIHByb3Bl
cnR5UmVnKSk7CisgICAgICAgICAgICB9CiAgICAgICAgICAgICAKLSAgICAgICAgICAgIGFkZFNs
b3dQYXRoR2VuZXJhdG9yKAotICAgICAgICAgICAgICAgIHNsb3dQYXRoQ2FsbCgKLSAgICAgICAg
ICAgICAgICAgICAgc2xvd0Nhc2VzLCB0aGlzLCBvcGVyYXRpb25HZXRCeVZhbE9iamVjdEludCwK
LSAgICAgICAgICAgICAgICAgICAgcmVzdWx0LmdwcigpLCBUcnVzdGVkSW1tUHRyOjp3ZWFrUG9p
bnRlcihtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50
aWMpKSwgYmFzZVJlZywgcHJvcGVydHlSZWcpKTsKICAgICAgICAgICAgIAogICAgICAgICAgICAg
anNWYWx1ZVJlc3VsdChyZXN1bHRSZWcsIG5vZGUpOwogICAgICAgICAgICAgYnJlYWs7CkBAIC0y
Nzk3LDEyICsyODA2LDE0IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSogbm9k
ZSkKICAgICAgICAgICAgICAgICBzcGVjdWxhdGlvbkNoZWNrKE91dE9mQm91bmRzLCBKU1ZhbHVl
UmVncygpLCBudWxscHRyLCBtX2ppdC5icmFuY2gzMihNYWNyb0Fzc2VtYmxlcjo6QWJvdmVPckVx
dWFsLCBwcm9wZXJ0eVJlZywgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3Moc3RvcmFnZVJlZywgQnV0
dGVyZmx5OjpvZmZzZXRPZlB1YmxpY0xlbmd0aCgpKSkpOwogCiAgICAgICAgICAgICAgICAgbV9q
aXQubG9hZERvdWJsZShNYWNyb0Fzc2VtYmxlcjo6QmFzZUluZGV4KHN0b3JhZ2VSZWcsIHByb3Bl
cnR5UmVnLCBNYWNyb0Fzc2VtYmxlcjo6VGltZXNFaWdodCksIHJlc3VsdFJlZyk7Ci0gICAgICAg
ICAgICAgICAgaWYgKCFub2RlLT5hcnJheU1vZGUoKS5pc1NhbmVDaGFpbigpKQorICAgICAgICAg
ICAgICAgIGlmICghbm9kZS0+YXJyYXlNb2RlKCkuaXNJbkJvdW5kc1NhbmVDaGFpbigpKQogICAg
ICAgICAgICAgICAgICAgICBzcGVjdWxhdGlvbkNoZWNrKExvYWRGcm9tSG9sZSwgSlNWYWx1ZVJl
Z3MoKSwgbnVsbHB0ciwgbV9qaXQuYnJhbmNoSWZOYU4ocmVzdWx0UmVnKSk7CiAgICAgICAgICAg
ICAgICAgZG91YmxlUmVzdWx0KHJlc3VsdFJlZywgbm9kZSk7CiAgICAgICAgICAgICAgICAgYnJl
YWs7CiAgICAgICAgICAgICB9CiAKKyAgICAgICAgICAgIGJvb2wgcmVzdWx0SXNVbmJveGVkID0g
bm9kZS0+YXJyYXlNb2RlKCkuaXNPdXRPZkJvdW5kc1NhbmVDaGFpbigpICYmICEobm9kZS0+Zmxh
Z3MoKSAmIE5vZGVCeXRlY29kZVVzZXNBc090aGVyKTsKKwogICAgICAgICAgICAgU3BlY3VsYXRl
Q2VsbE9wZXJhbmQgYmFzZSh0aGlzLCBtX2dyYXBoLnZhckFyZ0NoaWxkKG5vZGUsIDApKTsKICAg
ICAgICAgICAgIFNwZWN1bGF0ZVN0cmljdEludDMyT3BlcmFuZCBwcm9wZXJ0eSh0aGlzLCBtX2dy
YXBoLnZhckFyZ0NoaWxkKG5vZGUsIDEpKTsKICAgICAgICAgICAgIFN0b3JhZ2VPcGVyYW5kIHN0
b3JhZ2UodGhpcywgbV9ncmFwaC52YXJBcmdDaGlsZChub2RlLCAyKSk7CkBAIC0yODE0LDkgKzI4
MjUsMTMgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShOb2RlKiBub2RlKQogICAgICAg
ICAgICAgaWYgKCFtX2NvbXBpbGVPa2F5KQogICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAg
ICAgICAgIAotICAgICAgICAgICAgR1BSVGVtcG9yYXJ5IHJlc3VsdCh0aGlzKTsKKyAgICAgICAg
ICAgIE9wdGlvbmFsPEdQUlRlbXBvcmFyeT4gcmVzdWx0OworICAgICAgICAgICAgT3B0aW9uYWw8
R1BSUmVnPiByZXN1bHRSZWc7CisgICAgICAgICAgICBpZiAoIXJlc3VsdElzVW5ib3hlZCkgewor
ICAgICAgICAgICAgICAgIHJlc3VsdC5lbXBsYWNlKHRoaXMpOworICAgICAgICAgICAgICAgIHJl
c3VsdFJlZyA9IHJlc3VsdC0+Z3ByKCk7CisgICAgICAgICAgICB9CiAgICAgICAgICAgICBGUFJU
ZW1wb3JhcnkgdGVtcCh0aGlzKTsKLSAgICAgICAgICAgIEdQUlJlZyByZXN1bHRSZWcgPSByZXN1
bHQuZ3ByKCk7CiAgICAgICAgICAgICBGUFJSZWcgdGVtcFJlZyA9IHRlbXAuZnByKCk7CiAgICAg
ICAgICAgICAKICAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpKdW1wTGlzdCBzbG93Q2FzZXM7
CkBAIC0yODI0LDE1ICsyODM5LDM1IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9k
ZSogbm9kZSkKICAgICAgICAgICAgIHNsb3dDYXNlcy5hcHBlbmQobV9qaXQuYnJhbmNoMzIoTWFj
cm9Bc3NlbWJsZXI6OkFib3ZlT3JFcXVhbCwgcHJvcGVydHlSZWcsIE1hY3JvQXNzZW1ibGVyOjpB
ZGRyZXNzKHN0b3JhZ2VSZWcsIEJ1dHRlcmZseTo6b2Zmc2V0T2ZQdWJsaWNMZW5ndGgoKSkpKTsK
IAogICAgICAgICAgICAgbV9qaXQubG9hZERvdWJsZShNYWNyb0Fzc2VtYmxlcjo6QmFzZUluZGV4
KHN0b3JhZ2VSZWcsIHByb3BlcnR5UmVnLCBNYWNyb0Fzc2VtYmxlcjo6VGltZXNFaWdodCksIHRl
bXBSZWcpOwotICAgICAgICAgICAgc2xvd0Nhc2VzLmFwcGVuZChtX2ppdC5icmFuY2hJZk5hTih0
ZW1wUmVnKSk7Ci0gICAgICAgICAgICBib3hEb3VibGUodGVtcFJlZywgcmVzdWx0UmVnKTsKLSAg
ICAgICAgICAgIAotICAgICAgICAgICAgYWRkU2xvd1BhdGhHZW5lcmF0b3IoCi0gICAgICAgICAg
ICAgICAgc2xvd1BhdGhDYWxsKAotICAgICAgICAgICAgICAgICAgICBzbG93Q2FzZXMsIHRoaXMs
IG9wZXJhdGlvbkdldEJ5VmFsT2JqZWN0SW50LAotICAgICAgICAgICAgICAgICAgICByZXN1bHQu
Z3ByKCksIFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFs
T2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBiYXNlUmVnLCBwcm9wZXJ0eVJlZykp
OwotICAgICAgICAgICAgCi0gICAgICAgICAgICBqc1ZhbHVlUmVzdWx0KHJlc3VsdFJlZywgbm9k
ZSk7CisgICAgICAgICAgICBpZiAobm9kZS0+YXJyYXlNb2RlKCkuaXNPdXRPZkJvdW5kc1NhbmVD
aGFpbigpKSB7CisgICAgICAgICAgICAgICAgaWYgKHJlc3VsdElzVW5ib3hlZCkgeworICAgICAg
ICAgICAgICAgICAgICBhdXRvIGRvbmUgPSBtX2ppdC5qdW1wKCk7CisgICAgICAgICAgICAgICAg
ICAgIHNsb3dDYXNlcy5saW5rKCZtX2ppdCk7CisgICAgICAgICAgICAgICAgICAgIHNwZWN1bGF0
aW9uQ2hlY2soTmVnYXRpdmVJbmRleCwgSlNWYWx1ZVJlZ3MoKSwgbnVsbHB0ciwgbV9qaXQuYnJh
bmNoMzIoTWFjcm9Bc3NlbWJsZXI6Okxlc3NUaGFuLCBwcm9wZXJ0eVJlZywgQ0NhbGxIZWxwZXJz
OjpUcnVzdGVkSW1tMzIoMCkpKTsKKyAgICAgICAgICAgICAgICAgICAgc3RhdGljIGNvbnN0IGRv
dWJsZSBOYU4gPSBQTmFOOworICAgICAgICAgICAgICAgICAgICBtX2ppdC5sb2FkRG91YmxlKFRy
dXN0ZWRJbW1QdHIoJk5hTiksIHRlbXBSZWcpOworICAgICAgICAgICAgICAgICAgICBkb25lLmxp
bmsoJm1faml0KTsKKyAgICAgICAgICAgICAgICAgICAgZG91YmxlUmVzdWx0KHRlbXBSZWcsIG5v
ZGUpOworICAgICAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgICAgIHNsb3dD
YXNlcy5hcHBlbmQobV9qaXQuYnJhbmNoSWZOYU4odGVtcFJlZykpOworICAgICAgICAgICAgICAg
ICAgICBib3hEb3VibGUodGVtcFJlZywgKnJlc3VsdFJlZyk7CisgICAgICAgICAgICAgICAgICAg
IGF1dG8gZG9uZSA9IG1faml0Lmp1bXAoKTsKKyAgICAgICAgICAgICAgICAgICAgc2xvd0Nhc2Vz
LmxpbmsoJm1faml0KTsKKyAgICAgICAgICAgICAgICAgICAgc3BlY3VsYXRpb25DaGVjayhOZWdh
dGl2ZUluZGV4LCBKU1ZhbHVlUmVncygpLCBudWxscHRyLCBtX2ppdC5icmFuY2gzMihNYWNyb0Fz
c2VtYmxlcjo6TGVzc1RoYW4sIHByb3BlcnR5UmVnLCBDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW0z
MigwKSkpOworICAgICAgICAgICAgICAgICAgICBtX2ppdC5tb3ZlKENDYWxsSGVscGVyczo6VHJ1
c3RlZEltbTY0KEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKSksICpyZXN1bHRSZWcpOwor
ICAgICAgICAgICAgICAgICAgICBkb25lLmxpbmsoJm1faml0KTsKKyAgICAgICAgICAgICAgICAg
ICAganNWYWx1ZVJlc3VsdCgqcmVzdWx0UmVnLCBub2RlKTsKKyAgICAgICAgICAgICAgICB9Cisg
ICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIHNsb3dDYXNlcy5hcHBlbmQobV9q
aXQuYnJhbmNoSWZOYU4odGVtcFJlZykpOworICAgICAgICAgICAgICAgIGJveERvdWJsZSh0ZW1w
UmVnLCAqcmVzdWx0UmVnKTsKKyAgICAgICAgICAgICAgICBhZGRTbG93UGF0aEdlbmVyYXRvcigK
KyAgICAgICAgICAgICAgICAgICAgc2xvd1BhdGhDYWxsKAorICAgICAgICAgICAgICAgICAgICAg
ICAgc2xvd0Nhc2VzLCB0aGlzLCBvcGVyYXRpb25HZXRCeVZhbE9iamVjdEludCwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICpyZXN1bHRSZWcsIFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1f
Z3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBi
YXNlUmVnLCBwcm9wZXJ0eVJlZykpOworICAgICAgICAgICAgICAgIGpzVmFsdWVSZXN1bHQoKnJl
c3VsdFJlZywgbm9kZSk7CisgICAgICAgICAgICB9CisKICAgICAgICAgICAgIGJyZWFrOwogICAg
ICAgICB9CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVK
SVQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3Vs
YXRpdmVKSVQuY3BwCShyZXZpc2lvbiAyNjU2MzcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR1NwZWN1bGF0aXZlSklULmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjQwOCw3ICsyNDA4
LDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUdldEJ5VmFsT25TdAogCiAgICAgICAg
IGlmIChnbG9iYWxPYmplY3QtPnN0cmluZ1Byb3RvdHlwZUNoYWluSXNTYW5lKCkpIHsKICAgICAg
ICAgICAgIC8vIEZJWE1FOiBUaGlzIGNvdWxkIGJlIGNhcHR1cmVkIHVzaW5nIGEgU3BlY3VsYXRp
b24gbW9kZSB0aGF0IG1lYW5zICJvdXQtb2YtYm91bmRzCi0gICAgICAgICAgICAvLyBsb2FkcyBy
ZXR1cm4gYSB0cml2aWFsIHZhbHVlIi4gU29tZXRoaW5nIGxpa2UgU2FuZUNoYWluT3V0T2ZCb3Vu
ZHMuIFRoaXMgc2hvdWxkCisgICAgICAgICAgICAvLyBsb2FkcyByZXR1cm4gYSB0cml2aWFsIHZh
bHVlIi4gU29tZXRoaW5nIGxpa2UgT3V0T2ZCb3VuZHNTYW5lQ2hhaW4uIFRoaXMgc2hvdWxkCiAg
ICAgICAgICAgICAvLyBzcGVjdWxhdGUgdGhhdCB3ZSBkb24ndCB0YWtlIG5lZ2F0aXZlIG91dC1v
Zi1ib3VuZHMsIG9yIGJldHRlciB5ZXQsIGl0IHNob3VsZCByZWx5CiAgICAgICAgICAgICAvLyBv
biBhIHN0cmluZ1Byb3RvdHlwZUNoYWluSXNTYW5lKCkgZ3VhcmFudGVlaW5nIHRoYXQgdGhlIHBy
b3RvdHlwZXMgaGF2ZSBubyBuZWdhdGl2ZQogICAgICAgICAgICAgLy8gaW5kZXhlZCBwcm9wZXJ0
aWVzIGVpdGhlci4KQEAgLTE0MTQ4LDcgKzE0MTQ4LDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6
Y29tcGlsZUhhc0luZGV4ZWRQcgogICAgICAgICBtX2ppdC5sb2FkMzIoTWFjcm9Bc3NlbWJsZXI6
OkJhc2VJbmRleChzdG9yYWdlR1BSLCBpbmRleEdQUiwgTWFjcm9Bc3NlbWJsZXI6OlRpbWVzRWln
aHQsIE9CSkVDVF9PRkZTRVRPRihKU1ZhbHVlLCB1LmFzQml0cy50YWcpKSwgc2NyYXRjaEdQUik7
CiAjZW5kaWYKIAotICAgICAgICBpZiAobW9kZS5pc1NhbmVDaGFpbigpKSB7CisgICAgICAgIGlm
IChtb2RlLmlzSW5Cb3VuZHNTYW5lQ2hhaW4oKSkgewogICAgICAgICAgICAgbV9qaXQuaXNOb3RF
bXB0eShzY3JhdGNoR1BSLCByZXN1bHRHUFIpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAg
IH0KQEAgLTE0MTc3LDcgKzE0MTc3LDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUhh
c0luZGV4ZWRQcgogCiAgICAgICAgIG1faml0LmxvYWREb3VibGUoTWFjcm9Bc3NlbWJsZXI6OkJh
c2VJbmRleChzdG9yYWdlR1BSLCBpbmRleEdQUiwgTWFjcm9Bc3NlbWJsZXI6OlRpbWVzRWlnaHQp
LCBzY3JhdGNoRlBSKTsKIAotICAgICAgICBpZiAobW9kZS5pc1NhbmVDaGFpbigpKSB7CisgICAg
ICAgIGlmIChtb2RlLmlzSW5Cb3VuZHNTYW5lQ2hhaW4oKSkgewogICAgICAgICAgICAgbV9qaXQu
Y29tcGFyZURvdWJsZShNYWNyb0Fzc2VtYmxlcjo6RG91YmxlRXF1YWxBbmRPcmRlcmVkLCBzY3Jh
dGNoRlBSLCBzY3JhdGNoRlBSLCByZXN1bHRHUFIpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAg
ICAgIH0KQEAgLTE0MjEwLDEzICsxNDIxMCwxMyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21w
aWxlSGFzSW5kZXhlZFByCiAgICAgICAgIG1faml0LmxvYWQzMihNYWNyb0Fzc2VtYmxlcjo6QmFz
ZUluZGV4KHN0b3JhZ2VHUFIsIGluZGV4R1BSLCBNYWNyb0Fzc2VtYmxlcjo6VGltZXNFaWdodCwg
QXJyYXlTdG9yYWdlOjp2ZWN0b3JPZmZzZXQoKSArIE9CSkVDVF9PRkZTRVRPRihKU1ZhbHVlLCB1
LmFzQml0cy50YWcpKSwgc2NyYXRjaEdQUik7CiAjZW5kaWYKIAotICAgICAgICBpZiAobW9kZS5p
c1NhbmVDaGFpbigpKSB7CisgICAgICAgIGlmIChtb2RlLmlzSW5Cb3VuZHNTYW5lQ2hhaW4oKSkg
ewogICAgICAgICAgICAgbV9qaXQuaXNOb3RFbXB0eShzY3JhdGNoR1BSLCByZXN1bHRHUFIpOwog
ICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KIAogICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6
SnVtcCBpc0hvbGUgPSBtX2ppdC5icmFuY2hJZkVtcHR5KHNjcmF0Y2hHUFIpOwotICAgICAgICBp
ZiAoIW1vZGUuaXNJbkJvdW5kcygpIHx8IG1vZGUuaXNTYW5lQ2hhaW4oKSkKKyAgICAgICAgaWYg
KCFtb2RlLmlzSW5Cb3VuZHMoKSB8fCBtb2RlLmlzSW5Cb3VuZHNTYW5lQ2hhaW4oKSkKICAgICAg
ICAgICAgIHNsb3dDYXNlcy5hcHBlbmQoaXNIb2xlKTsKICAgICAgICAgZWxzZQogICAgICAgICAg
ICAgc3BlY3VsYXRpb25DaGVjayhMb2FkRnJvbUhvbGUsIEpTVmFsdWVSZWdzKCksIG51bGxwdHIs
IGlzSG9sZSk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1ZhbGlkYXRlLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1ZhbGlkYXRlLmNw
cAkocmV2aXNpb24gMjY1NjM3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdWYWxp
ZGF0ZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM3Niw2ICszNzYsMjAgQEAgcHVibGljOgogICAg
ICAgICAgICAgICAgIGNhc2UgTmV3QXJyYXlCdWZmZXI6CiAgICAgICAgICAgICAgICAgICAgIFZB
TElEQVRFKChub2RlKSwgbm9kZS0+dmVjdG9yTGVuZ3RoSGludCgpID49IG5vZGUtPmNhc3RPcGVy
YW5kPEpTSW1tdXRhYmxlQnV0dGVyZmx5Kj4oKS0+bGVuZ3RoKCkpOwogICAgICAgICAgICAgICAg
ICAgICBicmVhazsKKyAgICAgICAgICAgICAgICBjYXNlIEdldEJ5VmFsOgorICAgICAgICAgICAg
ICAgICAgICBzd2l0Y2ggKG5vZGUtPmFycmF5TW9kZSgpLnR5cGUoKSkgeworICAgICAgICAgICAg
ICAgICAgICBjYXNlIEFycmF5OjpJbnQzMjoKKyAgICAgICAgICAgICAgICAgICAgY2FzZSBBcnJh
eTo6RG91YmxlOgorICAgICAgICAgICAgICAgICAgICBjYXNlIEFycmF5OjpDb250aWd1b3VzOgor
ICAgICAgICAgICAgICAgICAgICAgICAgLy8gV2UgcmVseSBvbiBiZWluZyBhbiBvcmlnaW5hbCBh
cnJheSBzdHJ1Y3R1cmUgYmVjYXVzZSB3ZSBhcmUgU2FuZUNoYWluLCBhbmQgd2UgbmVlZCAKKyAg
ICAgICAgICAgICAgICAgICAgICAgIC8vIEFycmF5LnByb3RvdHlwZSB0byBiZSBvdXIgcHJvdG90
eXBlLCBzbyB3ZSBjYW4gcmV0dXJuIHVuZGVmaW5lZCB3aGVuIHdlIGdvIE9PQi4KKyAgICAgICAg
ICAgICAgICAgICAgICAgIGlmIChub2RlLT5hcnJheU1vZGUoKS5pc091dE9mQm91bmRzU2FuZUNo
YWluKCkpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgVkFMSURBVEUoKG5vZGUpLCBub2Rl
LT5hcnJheU1vZGUoKS5pc0pTQXJyYXlXaXRoT3JpZ2luYWxTdHJ1Y3R1cmUoKSk7CisgICAgICAg
ICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICAgICAgZGVmYXVsdDoKKyAg
ICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgICAgICB9CisgICAg
ICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgIGRlZmF1bHQ6CiAgICAgICAg
ICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgIH0KSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9mdGwvRlRMTG93ZXJERkdUb0IzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZnRsL0ZUTExvd2VyREZHVG9CMy5jcHAJKHJldmlzaW9uIDI2NTYzNykK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTG93ZXJERkdUb0IzLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtNDYzMiw3ICs0NjMyLDcgQEAgcHJpdmF0ZToKICAgICAgICAgICAgIGlmICht
X25vZGUtPmFycmF5TW9kZSgpLmlzSW5Cb3VuZHMoKSkgewogICAgICAgICAgICAgICAgIExWYWx1
ZSByZXN1bHQgPSBtX291dC5sb2FkNjQoYmFzZUluZGV4KGhlYXAsIHN0b3JhZ2UsIGluZGV4LCBt
X2dyYXBoLnZhckFyZ0NoaWxkKG1fbm9kZSwgMSkpKTsKICAgICAgICAgICAgICAgICBMVmFsdWUg
aXNIb2xlID0gbV9vdXQuaXNaZXJvNjQocmVzdWx0KTsKLSAgICAgICAgICAgICAgICBpZiAobV9u
b2RlLT5hcnJheU1vZGUoKS5pc1NhbmVDaGFpbigpKSB7CisgICAgICAgICAgICAgICAgaWYgKG1f
bm9kZS0+YXJyYXlNb2RlKCkuaXNJbkJvdW5kc1NhbmVDaGFpbigpKSB7CiAgICAgICAgICAgICAg
ICAgICAgIERGR19BU1NFUlQoCiAgICAgICAgICAgICAgICAgICAgICAgICBtX2dyYXBoLCBtX25v
ZGUsIG1fbm9kZS0+YXJyYXlNb2RlKCkudHlwZSgpID09IEFycmF5OjpDb250aWd1b3VzLCBtX25v
ZGUtPmFycmF5TW9kZSgpLnR5cGUoKSk7CiAgICAgICAgICAgICAgICAgICAgIHJlc3VsdCA9IG1f
b3V0LnNlbGVjdCgKQEAgLTQ2NDUsNyArNDY0NSw3IEBAIHByaXZhdGU6CiAgICAgICAgICAgICAg
ICAgc2V0SlNWYWx1ZShyZXN1bHQpOwogICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAg
ICAgIH0KLSAgICAgICAgICAgIAorCiAgICAgICAgICAgICBMQmFzaWNCbG9jayBmYXN0Q2FzZSA9
IG1fb3V0Lm5ld0Jsb2NrKCk7CiAgICAgICAgICAgICBMQmFzaWNCbG9jayBzbG93Q2FzZSA9IG1f
b3V0Lm5ld0Jsb2NrKCk7CiAgICAgICAgICAgICBMQmFzaWNCbG9jayBjb250aW51YXRpb24gPSBt
X291dC5uZXdCbG9jaygpOwpAQCAtNDY2Myw3ICs0NjYzLDEyIEBAIHByaXZhdGU6CiAgICAgICAg
ICAgICAgICAgbV9vdXQuaXNaZXJvNjQoZmFzdFJlc3VsdFZhbHVlKSwgcmFyZWx5KHNsb3dDYXNl
KSwgdXN1YWxseShjb250aW51YXRpb24pKTsKICAgICAgICAgICAgIAogICAgICAgICAgICAgbV9v
dXQuYXBwZW5kVG8oc2xvd0Nhc2UsIGNvbnRpbnVhdGlvbik7Ci0gICAgICAgICAgICBWYWx1ZUZy
b21CbG9jayBzbG93UmVzdWx0ID0gbV9vdXQuYW5jaG9yKHZtQ2FsbChJbnQ2NCwgb3BlcmF0aW9u
R2V0QnlWYWxPYmplY3RJbnQsIHdlYWtQb2ludGVyKGdsb2JhbE9iamVjdCksIGJhc2UsIGluZGV4
KSk7CisgICAgICAgICAgICBWYWx1ZUZyb21CbG9jayBzbG93UmVzdWx0OworICAgICAgICAgICAg
aWYgKG1fbm9kZS0+YXJyYXlNb2RlKCkuaXNPdXRPZkJvdW5kc1NhbmVDaGFpbigpKSB7CisgICAg
ICAgICAgICAgICAgc3BlY3VsYXRlKE5lZ2F0aXZlSW5kZXgsIG5vVmFsdWUoKSwgbnVsbHB0ciwg
bV9vdXQubGVzc1RoYW4oaW5kZXgsIG1fb3V0LmludDMyWmVybykpOworICAgICAgICAgICAgICAg
IHNsb3dSZXN1bHQgPSBtX291dC5hbmNob3IobV9vdXQuY29uc3RJbnQ2NChKU1ZhbHVlOjpWYWx1
ZVVuZGVmaW5lZCkpOworICAgICAgICAgICAgfSBlbHNlCisgICAgICAgICAgICAgICAgc2xvd1Jl
c3VsdCA9IG1fb3V0LmFuY2hvcih2bUNhbGwoSW50NjQsIG9wZXJhdGlvbkdldEJ5VmFsT2JqZWN0
SW50LCB3ZWFrUG9pbnRlcihnbG9iYWxPYmplY3QpLCBiYXNlLCBpbmRleCkpOwogICAgICAgICAg
ICAgbV9vdXQuanVtcChjb250aW51YXRpb24pOwogICAgICAgICAgICAgCiAgICAgICAgICAgICBt
X291dC5hcHBlbmRUbyhjb250aW51YXRpb24sIGxhc3ROZXh0KTsKQEAgLTQ2ODUsNyArNDY5MCw3
IEBAIHByaXZhdGU6CiAgICAgICAgICAgICAgICAgTFZhbHVlIHJlc3VsdCA9IG1fb3V0LmxvYWRE
b3VibGUoCiAgICAgICAgICAgICAgICAgICAgIGJhc2VJbmRleChoZWFwLCBzdG9yYWdlLCBpbmRl
eCwgbV9ncmFwaC52YXJBcmdDaGlsZChtX25vZGUsIDEpKSk7CiAgICAgICAgICAgICAgICAgCi0g
ICAgICAgICAgICAgICAgaWYgKCFtX25vZGUtPmFycmF5TW9kZSgpLmlzU2FuZUNoYWluKCkpIHsK
KyAgICAgICAgICAgICAgICBpZiAoIW1fbm9kZS0+YXJyYXlNb2RlKCkuaXNJbkJvdW5kc1NhbmVD
aGFpbigpKSB7CiAgICAgICAgICAgICAgICAgICAgIHNwZWN1bGF0ZSgKICAgICAgICAgICAgICAg
ICAgICAgICAgIExvYWRGcm9tSG9sZSwgbm9WYWx1ZSgpLCBudWxscHRyLAogICAgICAgICAgICAg
ICAgICAgICAgICAgbV9vdXQuZG91YmxlTm90RXF1YWxPclVub3JkZXJlZChyZXN1bHQsIHJlc3Vs
dCkpOwpAQCAtNDY5NCw2ICs0Njk5LDggQEAgcHJpdmF0ZToKICAgICAgICAgICAgICAgICBicmVh
azsKICAgICAgICAgICAgIH0KIAorICAgICAgICAgICAgYm9vbCByZXN1bHRJc1VuYm94ZWQgPSBt
X25vZGUtPmFycmF5TW9kZSgpLmlzT3V0T2ZCb3VuZHNTYW5lQ2hhaW4oKSAmJiAhKG1fbm9kZS0+
ZmxhZ3MoKSAmIE5vZGVCeXRlY29kZVVzZXNBc090aGVyKTsKKwogICAgICAgICAgICAgTEJhc2lj
QmxvY2sgaW5Cb3VuZHMgPSBtX291dC5uZXdCbG9jaygpOwogICAgICAgICAgICAgTEJhc2ljQmxv
Y2sgYm94UGF0aCA9IG1fb3V0Lm5ld0Jsb2NrKCk7CiAgICAgICAgICAgICBMQmFzaWNCbG9jayBz
bG93Q2FzZSA9IG1fb3V0Lm5ld0Jsb2NrKCk7CkBAIC00NzEyLDE1ICs0NzE5LDI2IEBAIHByaXZh
dGU6CiAgICAgICAgICAgICAgICAgcmFyZWx5KHNsb3dDYXNlKSwgdXN1YWxseShib3hQYXRoKSk7
CiAgICAgICAgICAgICAKICAgICAgICAgICAgIG1fb3V0LmFwcGVuZFRvKGJveFBhdGgsIHNsb3dD
YXNlKTsKLSAgICAgICAgICAgIFZhbHVlRnJvbUJsb2NrIGZhc3RSZXN1bHQgPSBtX291dC5hbmNo
b3IoYm94RG91YmxlKGRvdWJsZVZhbHVlKSk7CisgICAgICAgICAgICBWYWx1ZUZyb21CbG9jayBm
YXN0UmVzdWx0ID0gbV9vdXQuYW5jaG9yKHJlc3VsdElzVW5ib3hlZCA/IGRvdWJsZVZhbHVlIDog
Ym94RG91YmxlKGRvdWJsZVZhbHVlKSk7CiAgICAgICAgICAgICBtX291dC5qdW1wKGNvbnRpbnVh
dGlvbik7CiAgICAgICAgICAgICAKICAgICAgICAgICAgIG1fb3V0LmFwcGVuZFRvKHNsb3dDYXNl
LCBjb250aW51YXRpb24pOwotICAgICAgICAgICAgVmFsdWVGcm9tQmxvY2sgc2xvd1Jlc3VsdCA9
IG1fb3V0LmFuY2hvcih2bUNhbGwoSW50NjQsIG9wZXJhdGlvbkdldEJ5VmFsT2JqZWN0SW50LCB3
ZWFrUG9pbnRlcihnbG9iYWxPYmplY3QpLCBiYXNlLCBpbmRleCkpOworICAgICAgICAgICAgVmFs
dWVGcm9tQmxvY2sgc2xvd1Jlc3VsdDsKKyAgICAgICAgICAgIGlmIChtX25vZGUtPmFycmF5TW9k
ZSgpLmlzT3V0T2ZCb3VuZHNTYW5lQ2hhaW4oKSkgeworICAgICAgICAgICAgICAgIHNwZWN1bGF0
ZShOZWdhdGl2ZUluZGV4LCBub1ZhbHVlKCksIG51bGxwdHIsIG1fb3V0Lmxlc3NUaGFuKGluZGV4
LCBtX291dC5pbnQzMlplcm8pKTsKKyAgICAgICAgICAgICAgICBpZiAocmVzdWx0SXNVbmJveGVk
KQorICAgICAgICAgICAgICAgICAgICBzbG93UmVzdWx0ID0gbV9vdXQuYW5jaG9yKG1fb3V0LmNv
bnN0RG91YmxlKFBOYU4pKTsKKyAgICAgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAg
ICAgIHNsb3dSZXN1bHQgPSBtX291dC5hbmNob3IobV9vdXQuY29uc3RJbnQ2NChKU1ZhbHVlOjpl
bmNvZGUoanNVbmRlZmluZWQoKSkpKTsKKyAgICAgICAgICAgIH0gZWxzZQorICAgICAgICAgICAg
ICAgIHNsb3dSZXN1bHQgPSBtX291dC5hbmNob3Iodm1DYWxsKEludDY0LCBvcGVyYXRpb25HZXRC
eVZhbE9iamVjdEludCwgd2Vha1BvaW50ZXIoZ2xvYmFsT2JqZWN0KSwgYmFzZSwgaW5kZXgpKTsK
ICAgICAgICAgICAgIG1fb3V0Lmp1bXAoY29udGludWF0aW9uKTsKICAgICAgICAgICAgIAogICAg
ICAgICAgICAgbV9vdXQuYXBwZW5kVG8oY29udGludWF0aW9uLCBsYXN0TmV4dCk7Ci0gICAgICAg
ICAgICBzZXRKU1ZhbHVlKG1fb3V0LnBoaShJbnQ2NCwgZmFzdFJlc3VsdCwgc2xvd1Jlc3VsdCkp
OworICAgICAgICAgICAgaWYgKHJlc3VsdElzVW5ib3hlZCkKKyAgICAgICAgICAgICAgICBzZXRE
b3VibGUobV9vdXQucGhpKERvdWJsZSwgZmFzdFJlc3VsdCwgc2xvd1Jlc3VsdCkpOworICAgICAg
ICAgICAgZWxzZQorICAgICAgICAgICAgICAgIHNldEpTVmFsdWUobV9vdXQucGhpKEludDY0LCBm
YXN0UmVzdWx0LCBzbG93UmVzdWx0KSk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0K
IApAQCAtODEzNSw3ICs4MTUzLDcgQEAgcHJpdmF0ZToKICAgICAgICAgICAgIGlmIChnbG9iYWxP
YmplY3QtPnN0cmluZ1Byb3RvdHlwZUNoYWluSXNTYW5lKCkpIHsKICAgICAgICAgICAgICAgICAv
LyBGSVhNRTogVGhpcyBjb3VsZCBiZSBjYXB0dXJlZCB1c2luZyBhIFNwZWN1bGF0aW9uIG1vZGUg
dGhhdCBtZWFucwogICAgICAgICAgICAgICAgIC8vICJvdXQtb2YtYm91bmRzIGxvYWRzIHJldHVy
biBhIHRyaXZpYWwgdmFsdWUiLCBzb21ldGhpbmcgbGlrZQotICAgICAgICAgICAgICAgIC8vIFNh
bmVDaGFpbk91dE9mQm91bmRzLgorICAgICAgICAgICAgICAgIC8vIE91dE9mQm91bmRzU2FuZUNo
YWluLgogICAgICAgICAgICAgICAgIC8vIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0xNDQ2NjgKICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICBtX2dyYXBo
LnJlZ2lzdGVyQW5kV2F0Y2hTdHJ1Y3R1cmVUcmFuc2l0aW9uKHN0cmluZ1Byb3RvdHlwZVN0cnVj
dHVyZSk7CkBAIC0xMjIyMCw3ICsxMjIzOCw3IEBAIHByaXZhdGU6CiAgICAgICAgICAgICBMVmFs
dWUgY2hlY2tIb2xlUmVzdWx0VmFsdWUgPQogICAgICAgICAgICAgICAgIG1fb3V0Lm5vdFplcm82
NChtX291dC5sb2FkNjQoYmFzZUluZGV4KGhlYXAsIHN0b3JhZ2UsIGluZGV4LCBtX2dyYXBoLnZh
ckFyZ0NoaWxkKG1fbm9kZSwgMSkpKSk7CiAgICAgICAgICAgICBWYWx1ZUZyb21CbG9jayBjaGVj
a0hvbGVSZXN1bHQgPSBtX291dC5hbmNob3IoY2hlY2tIb2xlUmVzdWx0VmFsdWUpOwotICAgICAg
ICAgICAgaWYgKG1vZGUuaXNTYW5lQ2hhaW4oKSkKKyAgICAgICAgICAgIGlmIChtb2RlLmlzSW5C
b3VuZHNTYW5lQ2hhaW4oKSkKICAgICAgICAgICAgICAgICBtX291dC5qdW1wKGNvbnRpbnVhdGlv
bik7CiAgICAgICAgICAgICBlbHNlIGlmICghbW9kZS5pc0luQm91bmRzKCkpCiAgICAgICAgICAg
ICAgICAgbV9vdXQuYnJhbmNoKGNoZWNrSG9sZVJlc3VsdFZhbHVlLCB1c3VhbGx5KGNvbnRpbnVh
dGlvbiksIHJhcmVseShzbG93Q2FzZSkpOwpAQCAtMTIyNTksNyArMTIyNzcsNyBAQCBwcml2YXRl
OgogICAgICAgICAgICAgTFZhbHVlIGRvdWJsZVZhbHVlID0gbV9vdXQubG9hZERvdWJsZShiYXNl
SW5kZXgoaGVhcCwgc3RvcmFnZSwgaW5kZXgsIG1fZ3JhcGgudmFyQXJnQ2hpbGQobV9ub2RlLCAx
KSkpOwogICAgICAgICAgICAgTFZhbHVlIGNoZWNrSG9sZVJlc3VsdFZhbHVlID0gbV9vdXQuZG91
YmxlRXF1YWwoZG91YmxlVmFsdWUsIGRvdWJsZVZhbHVlKTsKICAgICAgICAgICAgIFZhbHVlRnJv
bUJsb2NrIGNoZWNrSG9sZVJlc3VsdCA9IG1fb3V0LmFuY2hvcihjaGVja0hvbGVSZXN1bHRWYWx1
ZSk7Ci0gICAgICAgICAgICBpZiAobW9kZS5pc1NhbmVDaGFpbigpKQorICAgICAgICAgICAgaWYg
KG1vZGUuaXNJbkJvdW5kc1NhbmVDaGFpbigpKQogICAgICAgICAgICAgICAgIG1fb3V0Lmp1bXAo
Y29udGludWF0aW9uKTsKICAgICAgICAgICAgIGVsc2UgaWYgKCFtb2RlLmlzSW5Cb3VuZHMoKSkK
ICAgICAgICAgICAgICAgICBtX291dC5icmFuY2goY2hlY2tIb2xlUmVzdWx0VmFsdWUsIHVzdWFs
bHkoY29udGludWF0aW9uKSwgcmFyZWx5KHNsb3dDYXNlKSk7CkBAIC0xMjI5Nyw3ICsxMjMxNSw3
IEBAIHByaXZhdGU6CiAgICAgICAgICAgICBMVmFsdWUgY2hlY2tIb2xlUmVzdWx0VmFsdWUgPQog
ICAgICAgICAgICAgICAgIG1fb3V0Lm5vdFplcm82NChtX291dC5sb2FkNjQoYmFzZUluZGV4KG1f
aGVhcHMuQXJyYXlTdG9yYWdlX3ZlY3Rvciwgc3RvcmFnZSwgaW5kZXgsIG1fZ3JhcGgudmFyQXJn
Q2hpbGQobV9ub2RlLCAxKSkpKTsKICAgICAgICAgICAgIFZhbHVlRnJvbUJsb2NrIGNoZWNrSG9s
ZVJlc3VsdCA9IG1fb3V0LmFuY2hvcihjaGVja0hvbGVSZXN1bHRWYWx1ZSk7Ci0gICAgICAgICAg
ICBpZiAobW9kZS5pc1NhbmVDaGFpbigpKQorICAgICAgICAgICAgaWYgKG1vZGUuaXNJbkJvdW5k
c1NhbmVDaGFpbigpKQogICAgICAgICAgICAgICAgIG1fb3V0Lmp1bXAoY29udGludWF0aW9uKTsK
ICAgICAgICAgICAgIGVsc2UgaWYgKCFtb2RlLmlzSW5Cb3VuZHMoKSkKICAgICAgICAgICAgICAg
ICBtX291dC5icmFuY2goY2hlY2tIb2xlUmVzdWx0VmFsdWUsIHVzdWFsbHkoY29udGludWF0aW9u
KSwgcmFyZWx5KHNsb3dDYXNlKSk7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>406741</attachid>
            <date>2020-08-17 13:28:31 -0700</date>
            <delta_ts>2020-08-17 15:10:19 -0700</delta_ts>
            <desc>patch for landing</desc>
            <filename>c-backup.diff</filename>
            <type>text/plain</type>
            <size>47029</size>
            <attacher name="Saam Barati">saam</attacher>
            
              <data encoding="base64">SW5kZXg6IEpTVGVzdHMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIEpTVGVzdHMvQ2hhbmdlTG9n
CShyZXZpc2lvbiAyNjU3MjMpCisrKyBKU1Rlc3RzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpA
QCAtMSwzICsxLDE2IEBACisyMDIwLTA4LTE0ICBTYWFtIEJhcmF0aSAgPHNiYXJhdGlAYXBwbGUu
Y29tPgorCisgICAgICAgIEhhdmUgYW4gT09CK1NhbmVDaGFpbiBBcnJheTo6U3BlY3VsYXRpb24K
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxNTQ4Nwor
CisgICAgICAgIFJldmlld2VkIGJ5IFl1c3VrZSBTdXp1a2kuCisKKyAgICAgICAgKiBtaWNyb2Jl
bmNobWFya3Mvb29iLXNhbmUtY2hhaW4tY29udGlndW91cy5qczogQWRkZWQuCisgICAgICAgICog
bWljcm9iZW5jaG1hcmtzL29vYi1zYW5lLWNoYWluLWRvdWJsZS1yZWFkLXVuZGVmaW5lZC5qczog
QWRkZWQuCisgICAgICAgICogbWljcm9iZW5jaG1hcmtzL29vYi1zYW5lLWNoYWluLWRvdWJsZS5q
czogQWRkZWQuCisgICAgICAgICogbWljcm9iZW5jaG1hcmtzL29vYi1zYW5lLWNoYWluLWludDMy
LmpzOiBBZGRlZC4KKyAgICAgICAgKiBzdHJlc3Mvb29iLXNhbmUtY2hhaW4tbmVnYXRpdmUtaW5k
ZXguanM6IEFkZGVkLgorCiAyMDIwLTA4LTEyICBLZWl0aCBNaWxsZXIgIDxrZWl0aF9taWxsZXJA
YXBwbGUuY29tPgogCiAgICAgICAgIE9TUkF2YWlsYWJpbGl0eUFuYWx5c2lzIHNob3VsZG4ndCBt
YXJrIEdldFN0YWNrIG5vZGVzIGRpcmVjdGx5IGFzIHZhbGlkIHBsYWNlcyBmb3IgcmVjb3ZlcnkK
SW5kZXg6IEpTVGVzdHMvbWljcm9iZW5jaG1hcmtzL29vYi1zYW5lLWNoYWluLWNvbnRpZ3VvdXMu
anMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gSlNUZXN0cy9taWNyb2JlbmNobWFya3Mvb29iLXNhbmUtY2hhaW4t
Y29udGlndW91cy5qcwkobm9uZXhpc3RlbnQpCisrKyBKU1Rlc3RzL21pY3JvYmVuY2htYXJrcy9v
b2Itc2FuZS1jaGFpbi1jb250aWd1b3VzLmpzCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMTgg
QEAKK2Z1bmN0aW9uIGFzc2VydChiKSB7CisgICAgaWYgKCFiKQorICAgICAgICB0aHJvdyBuZXcg
RXJyb3I7Cit9CisKK2Z1bmN0aW9uIGJhcihhLCB4KSB7CisgICAgcmV0dXJuIGFbeF07Cit9Citu
b0lubGluZShiYXIpOworCitsZXQgbyA9IHt9OworbGV0IGIgPSBbbywgIiIsICwgMjVdOworCitm
b3IgKGxldCBpID0gMDsgaSA8IDEwMDAwMDAwOyArK2kpIHsKKyAgICBhc3NlcnQoYmFyKGIsIDAp
ID09PSBvKTsKKyAgICBhc3NlcnQoYmFyKGIsIDUpID09PSB1bmRlZmluZWQpOworICAgIGFzc2Vy
dChiYXIoYiwgMikgPT09IHVuZGVmaW5lZCk7Cit9CkluZGV4OiBKU1Rlc3RzL21pY3JvYmVuY2ht
YXJrcy9vb2Itc2FuZS1jaGFpbi1kb3VibGUtcmVhZC11bmRlZmluZWQuanMKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gSlNUZXN0cy9taWNyb2JlbmNobWFya3Mvb29iLXNhbmUtY2hhaW4tZG91YmxlLXJlYWQtdW5k
ZWZpbmVkLmpzCShub25leGlzdGVudCkKKysrIEpTVGVzdHMvbWljcm9iZW5jaG1hcmtzL29vYi1z
YW5lLWNoYWluLWRvdWJsZS1yZWFkLXVuZGVmaW5lZC5qcwkod29ya2luZyBjb3B5KQpAQCAtMCww
ICsxLDE4IEBACitmdW5jdGlvbiBhc3NlcnQoYikgeworICAgIGlmICghYikKKyAgICAgICAgdGhy
b3cgbmV3IEVycm9yOworfQorCitmdW5jdGlvbiBiYXooYSwgeCkgeworICAgIHJldHVybiBhW3hd
OworfQorbm9JbmxpbmUoYmF6KTsKKworbGV0IGEgPSBbMS41LCAyLjUsICwgMy41XTsKKworZm9y
IChsZXQgaSA9IDA7IGkgPCAxMDAwMDAwMDsgKytpKSB7CisgICAgYXNzZXJ0KGJheihhLCAwKSA9
PT0gMS41KTsKKyAgICBhc3NlcnQoYmF6KGEsIDUpID09PSB1bmRlZmluZWQpOworICAgIGFzc2Vy
dChiYXooYSwgMikgPT09IHVuZGVmaW5lZCk7Cit9CisKSW5kZXg6IEpTVGVzdHMvbWljcm9iZW5j
aG1hcmtzL29vYi1zYW5lLWNoYWluLWRvdWJsZS5qcwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBKU1Rlc3RzL21p
Y3JvYmVuY2htYXJrcy9vb2Itc2FuZS1jaGFpbi1kb3VibGUuanMJKG5vbmV4aXN0ZW50KQorKysg
SlNUZXN0cy9taWNyb2JlbmNobWFya3Mvb29iLXNhbmUtY2hhaW4tZG91YmxlLmpzCSh3b3JraW5n
IGNvcHkpCkBAIC0wLDAgKzEsMTcgQEAKK2Z1bmN0aW9uIGFzc2VydChiKSB7CisgICAgaWYgKCFi
KQorICAgICAgICB0aHJvdyBuZXcgRXJyb3I7Cit9CisKK2Z1bmN0aW9uIGZvbyhhLCB4KSB7Cisg
ICAgcmV0dXJuIGFbeF0gKiAyLjU7Cit9Citub0lubGluZShmb28pOworCitsZXQgYSA9IFsxLjUs
IDIuNSwgLCAzLjVdOworCitmb3IgKGxldCBpID0gMDsgaSA8IDEwMDAwMDAwOyArK2kpIHsKKyAg
ICBhc3NlcnQoZm9vKGEsIDApID09PSAyLjUgKiAxLjUpOworICAgIGFzc2VydChpc05hTihmb28o
YSwgNSkpKTsKKyAgICBhc3NlcnQoaXNOYU4oZm9vKGEsIDIpKSk7Cit9CkluZGV4OiBKU1Rlc3Rz
L21pY3JvYmVuY2htYXJrcy9vb2Itc2FuZS1jaGFpbi1pbnQzMi5qcwo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBK
U1Rlc3RzL21pY3JvYmVuY2htYXJrcy9vb2Itc2FuZS1jaGFpbi1pbnQzMi5qcwkobm9uZXhpc3Rl
bnQpCisrKyBKU1Rlc3RzL21pY3JvYmVuY2htYXJrcy9vb2Itc2FuZS1jaGFpbi1pbnQzMi5qcwko
d29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDE3IEBACitmdW5jdGlvbiBhc3NlcnQoYikgeworICAg
IGlmICghYikKKyAgICAgICAgdGhyb3cgbmV3IEVycm9yOworfQorCitmdW5jdGlvbiBiYXIoYSwg
eCkgeworICAgIHJldHVybiBhW3hdOworfQorbm9JbmxpbmUoYmFyKTsKKworbGV0IGIgPSBbMCwg
MSwgLCAgMl07CisKK2ZvciAobGV0IGkgPSAwOyBpIDwgMTAwMDAwMDA7ICsraSkgeworICAgIGFz
c2VydChiYXIoYiwgMCkgPT09IDApOworICAgIGFzc2VydChiYXIoYiwgNSkgPT09IHVuZGVmaW5l
ZCk7CisgICAgYXNzZXJ0KGJhcihiLCAyKSA9PT0gdW5kZWZpbmVkKTsKK30KSW5kZXg6IEpTVGVz
dHMvc3RyZXNzL29vYi1zYW5lLWNoYWluLW5lZ2F0aXZlLWluZGV4LmpzCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IEpTVGVzdHMvc3RyZXNzL29vYi1zYW5lLWNoYWluLW5lZ2F0aXZlLWluZGV4LmpzCShub25leGlz
dGVudCkKKysrIEpTVGVzdHMvc3RyZXNzL29vYi1zYW5lLWNoYWluLW5lZ2F0aXZlLWluZGV4Lmpz
CSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMjQgQEAKK2xldCBjYWxsZWQgPSBmYWxzZTsKK09i
amVjdC5kZWZpbmVQcm9wZXJ0eShBcnJheS5wcm90b3R5cGUsICItMSIsIHsKKyAgICBnZXQ6IGZ1
bmN0aW9uKCkgeworICAgICAgICBjYWxsZWQgPSB0cnVlOworICAgICAgICByZXR1cm4gNDI7Cisg
ICAgfQorfSk7CitmdW5jdGlvbiBhc3NlcnQoYikgeworICAgIGlmICghYikKKyAgICAgICAgdGhy
b3cgbmV3IEVycm9yOworfQorCitmdW5jdGlvbiBiYXooYSwgeCkgeworICAgIHJldHVybiBhW3hd
OworfQorbm9JbmxpbmUoYmF6KTsKKworbGV0IGEgPSBbMSwyLDNdOworCitmb3IgKGxldCBpID0g
MDsgaSA8IDEwMDAwMDAwOyArK2kpIHsKKyAgICBhc3NlcnQoYmF6KGEsIC0xKSA9PT0gNDIpOwor
ICAgIGFzc2VydChjYWxsZWQpOworICAgIGNhbGxlZCA9IGZhbHNlOworfQpJbmRleDogU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nCShyZXZpc2lvbiAyNjU2MzcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsNTcgQEAKKzIwMjAtMDgtMTQg
IFNhYW0gQmFyYXRpICA8c2JhcmF0aUBhcHBsZS5jb20+CisKKyAgICAgICAgSGF2ZSBhbiBPT0Ir
U2FuZUNoYWluIEFycmF5OjpTcGVjdWxhdGlvbgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjE1NDg3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgWXVzdWtl
IFN1enVraS4KKworICAgICAgICBUaGlzIHBhdGNoIGFkZHMgYSBuZXcgQXJyYXlNb2RlIHNwZWN1
bGF0aW9uIGluIHRoZSBERkcvRlRMIGNhbGxlZCBPdXRPZkJvdW5kc1NhbmVDaGFpbi4KKyAgICAg
ICAgSXQgYWxsb3dzIHVzIHRvIGRvIGZhc3QgdGhpbmdzIHdoZW4gd2UgZ28gT09CLCBsaWtlIHNp
bXBseSByZXR1cm4gdW5kZWZpbmVkLgorICAgICAgICBUaGlzIGlzIGJlY2F1c2Ugd2UgaW5zdGFs
bCB3YXRjaHBvaW50cyBvbiB0aGUgcHJvdG90eXBlIGNoYWluIHRvIGVuc3VyZSB0aGV5CisgICAg
ICAgIGhhdmUgbm8gaW5kZXhlZCBwcm9wZXJ0aWVzLiBUaGlzIHBhdGNoIGltcGxlbWVudHMgT3V0
T2ZCb3VuZHNTYW5lQ2hhaW4gb24KKyAgICAgICAgR2V0QnlWYWwgb3ZlciBJbnQzMi9Eb3VibGUv
Q29udGlndW91cyBvcmlnaW5hbCBKUyBhcnJheXMuIFdlIGNhbiBleHRlbmQgaXQgaW4KKyAgICAg
ICAgdGhlIGZ1dHVyZSB0byBub24gb3JpZ2luYWwgSlMgYXJyYXlzIGlmIHdlIHByb3ZlIHRoZWly
IHByb3RvdHlwZSBpcyBBcnJheS5wcm90b3R5cGUuIAorICAgICAgICBUbyBpbXBsZW1lbnQgdGhp
cyBwcm9wZXJseSwgd2UgYWxzbyBuZWVkIHRvIGVuc3VyZSB0aGF0IHRoZSBpbmRleCBpc24ndCBu
ZWdhdGl2ZSwKKyAgICAgICAgYXMgQXJyYXkucHJvdG90eXBlL09iamVjdC5wcm90b3R5cGUgbWF5
IGhhdmUgbmVnYXRpdmUgaW5kZXhlZCBhY2Nlc3NvcnMuIFdlCisgICAgICAgIGRvIHRoaXMgdmlh
IHNwZWN1bGF0aW9uLCBhbmQgaWYgd2UgZXZlciByZWNvbXBpbGUsIGFuZCBzZWUgYW4gZXhpdCBi
ZWNhdXNlIG9mCisgICAgICAgIHRoaXMsIHdlIHdpbGwgc3RvcCBzcGVjdWxhdGluZyBPdXRPZkJv
dW5kc1NhbmVDaGFpbi4KKyAgICAgICAgCisgICAgICAgIFRoaXMgaXMgYWJvdXQgMjAlIGZhc3Rl
ciBvbiBjcnlwdG8tbWQ1LVNQLiBBbmQgfjMtNHggZmFzdGVyIG9uIHRoZQorICAgICAgICBtaWNy
b2JlbmNobWFya3MgSSBjcmVhdGVkLgorCisgICAgICAgICogZGZnL0RGR0Fic3RyYWN0SW50ZXJw
cmV0ZXJJbmxpbmVzLmg6CisgICAgICAgIChKU0M6OkRGRzo6QWJzdHJhY3RJbnRlcnByZXRlcjxB
YnN0cmFjdFN0YXRlVHlwZT46OmV4ZWN1dGVFZmZlY3RzKToKKyAgICAgICAgKiBkZmcvREZHQXJy
YXlNb2RlLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpBcnJheU1vZGU6OnJlZmluZSBjb25zdCk6
CisgICAgICAgIChKU0M6OkRGRzo6YXJyYXlTcGVjdWxhdGlvblRvU3RyaW5nKToKKyAgICAgICAg
KiBkZmcvREZHQXJyYXlNb2RlLmg6CisgICAgICAgIChKU0M6OkRGRzo6QXJyYXlNb2RlOjppc0lu
Qm91bmRzU2FuZUNoYWluIGNvbnN0KToKKyAgICAgICAgKEpTQzo6REZHOjpBcnJheU1vZGU6Omlz
T3V0T2ZCb3VuZHNTYW5lQ2hhaW4gY29uc3QpOgorICAgICAgICAoSlNDOjpERkc6OkFycmF5TW9k
ZTo6aXNPdXRPZkJvdW5kcyBjb25zdCk6CisgICAgICAgIChKU0M6OkRGRzo6QXJyYXlNb2RlOjpp
c0VmZmVjdGZ1bE91dE9mQm91bmRzIGNvbnN0KToKKyAgICAgICAgKEpTQzo6REZHOjpBcnJheU1v
ZGU6OmlzSW5Cb3VuZHMgY29uc3QpOgorICAgICAgICAoSlNDOjpERkc6OkFycmF5TW9kZTo6aXNT
YW5lQ2hhaW4gY29uc3QpOiBEZWxldGVkLgorICAgICAgICAqIGRmZy9ERkdDU0VQaGFzZS5jcHA6
CisgICAgICAgICogZGZnL0RGR0Nsb2JiZXJpemUuaDoKKyAgICAgICAgKEpTQzo6REZHOjpjbG9i
YmVyaXplKToKKyAgICAgICAgKiBkZmcvREZHRml4dXBQaGFzZS5jcHA6CisgICAgICAgIChKU0M6
OkRGRzo6Rml4dXBQaGFzZTo6Zml4dXBOb2RlKToKKyAgICAgICAgKEpTQzo6REZHOjpGaXh1cFBo
YXNlOjpjaGVja0FycmF5KToKKyAgICAgICAgKEpTQzo6REZHOjpGaXh1cFBoYXNlOjpzZXRTYW5l
Q2hhaW5JZlBvc3NpYmxlKToKKyAgICAgICAgKEpTQzo6REZHOjpGaXh1cFBoYXNlOjpjb252ZXJ0
VG9IYXNJbmRleGVkUHJvcGVydHkpOgorICAgICAgICAqIGRmZy9ERkdTcGVjdWxhdGl2ZUpJVC5j
cHA6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVHZXRCeVZhbE9u
U3RyaW5nKToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUhhc0lu
ZGV4ZWRQcm9wZXJ0eSk6CisgICAgICAgICogZGZnL0RGR1NwZWN1bGF0aXZlSklUMzJfNjQuY3Bw
OgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21waWxlKToKKyAgICAgICAg
KiBkZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3Vs
YXRpdmVKSVQ6OmNvbXBpbGUpOgorICAgICAgICAqIGRmZy9ERkdWYWxpZGF0ZS5jcHA6CisgICAg
ICAgICogZnRsL0ZUTExvd2VyREZHVG9CMy5jcHA6CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpM
b3dlckRGR1RvQjM6OmNvbXBpbGVHZXRCeVZhbCk6CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpM
b3dlckRGR1RvQjM6OmNvbXBpbGVTdHJpbmdDaGFyQXQpOgorICAgICAgICAoSlNDOjpGVEw6OkRG
Rzo6TG93ZXJERkdUb0IzOjpjb21waWxlSGFzSW5kZXhlZFByb3BlcnR5KToKKwogMjAyMC0wOC0x
MiAgS2VpdGggUm9sbGluICA8a3JvbGxpbkBhcHBsZS5jb20+CiAKICAgICAgICAgUmVtb3ZlIHRo
ZSBuZWVkIGZvciBkZWZpbmluZyBVU0VfTkVXX0JVSUxEX1NZU1RFTQpJbmRleDogU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb2RlL0V4aXRLaW5kLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvRXhpdEtpbmQuY3BwCShyZXZpc2lvbiAyNjU2MzcpCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvRXhpdEtpbmQuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC01Niw2ICs1Niw4IEBAIGNvbnN0IGNoYXIqIGV4aXRLaW5kVG9TdHJpbmcoRXhpdEtp
bmQga2kKICAgICAgICAgcmV0dXJuICJPdmVyZmxvdyI7CiAgICAgY2FzZSBOZWdhdGl2ZVplcm86
CiAgICAgICAgIHJldHVybiAiTmVnYXRpdmVaZXJvIjsKKyAgICBjYXNlIE5lZ2F0aXZlSW5kZXg6
CisgICAgICAgIHJldHVybiAiTmVnYXRpdmVJbmRleCI7CiAgICAgY2FzZSBJbnQ1Mk92ZXJmbG93
OgogICAgICAgICByZXR1cm4gIkludDUyT3ZlcmZsb3ciOwogICAgIGNhc2UgU3RvcmVUb0hvbGU6
CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvRXhpdEtpbmQuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvRXhpdEtpbmQuaAkocmV2aXNp
b24gMjY1NjM3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0V4aXRLaW5kLmgJ
KHdvcmtpbmcgY29weSkKQEAgLTM5LDYgKzM5LDcgQEAgZW51bSBFeGl0S2luZCA6IHVpbnQ4X3Qg
ewogICAgIEJhZFR5cGVJbmZvRmxhZ3MsIC8vIFdlIGV4aXRlZCBiZWNhdXNlIHdlIG1hZGUgYW4g
aW5jb3JyZWN0IGFzc3VtcHRpb24gYWJvdXQgd2hhdCBUeXBlSW5mbyBmbGFncyB3ZSB3b3VsZCBz
ZWUuCiAgICAgT3ZlcmZsb3csIC8vIFdlIGV4aXRlZCBiZWNhdXNlIG9mIG92ZXJmbG93LgogICAg
IE5lZ2F0aXZlWmVybywgLy8gV2UgZXhpdGVkIGJlY2F1c2Ugd2UgZW5jb3VudGVyZWQgbmVnYXRp
dmUgemVyby4KKyAgICBOZWdhdGl2ZUluZGV4LCAvLyBXZSBleGl0ZWQgYmVjYXVzZSB3ZSBlbmNv
dW50ZXJlZCBhIG5lZ2F0aXZlIGluZGV4IGluIGEgcGxhY2Ugd2UgZGlkbid0IHdhbnQgdG8gc2Vl
IGl0LgogICAgIEludDUyT3ZlcmZsb3csIC8vIFdlIGV4aXRlZCBiZWNhdXNlIG9mIGFuIEludDUy
IG92ZXJmbG93LgogICAgIFN0b3JlVG9Ib2xlLCAvLyBXZSBoYWQgYSBzdG9yZSB0byBhIGhvbGUu
CiAgICAgTG9hZEZyb21Ib2xlLCAvLyBXZSBoYWQgYSBsb2FkIGZyb20gYSBob2xlLgpJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBYnN0cmFjdEludGVycHJldGVySW5saW5lcy5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQWJzdHJhY3RJbnRl
cnByZXRlcklubGluZXMuaAkocmV2aXNpb24gMjY1NjM3KQorKysgU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdBYnN0cmFjdEludGVycHJldGVySW5saW5lcy5oCSh3b3JraW5nIGNvcHkpCkBA
IC0yMzUwLDcgKzIzNTAsNyBAQCBib29sIEFic3RyYWN0SW50ZXJwcmV0ZXI8QWJzdHJhY3RTdGF0
ZVR5CiAgICAgICAgICAgICAgICAgLy8gd2UgZ290IHRvIHRoZSBiYWNrZW5kLiBTbyB0byBkbyB0
aGlzIHJpZ2h0LCB3ZSdkIGhhdmUgdG8gZ2V0IHRoZQogICAgICAgICAgICAgICAgIC8vIGZpeHVw
IHBoYXNlIHRvIGNoZWNrIHRoZSB3YXRjaHBvaW50IHN0YXRlIGFuZCB0aGVuIGJha2UgaW50byB0
aGUKICAgICAgICAgICAgICAgICAvLyBHZXRCeVZhbCBvcGVyYXRpb24gdGhlIGZhY3QgdGhhdCB3
ZSdyZSB1c2luZyBhIHdhdGNocG9pbnQsIHVzaW5nCi0gICAgICAgICAgICAgICAgLy8gc29tZXRo
aW5nIGxpa2UgQXJyYXk6OlNhbmVDaGFpbiAoZXhjZXB0IG5vdCBxdWl0ZSwgYmVjYXVzZSB0aGF0
CisgICAgICAgICAgICAgICAgLy8gc29tZXRoaW5nIGxpa2UgQXJyYXk6OkluQm91bmRzU2FuZUNo
YWluIChleGNlcHQgbm90IHF1aXRlLCBiZWNhdXNlIHRoYXQKICAgICAgICAgICAgICAgICAvLyBp
bXBsaWVzIGFuIGluLWJvdW5kcyBhY2Nlc3MpLiBOb25lIG9mIHRoaXMgZmVlbHMgbGlrZSBpdCdz
IHdvcnRoIGl0LAogICAgICAgICAgICAgICAgIC8vIHNvIHdlJ3JlIGdvaW5nIHdpdGggVE9QIGZv
ciBub3cuIFRoZSBzYW1lIHRoaW5nIGFwcGxpZXMgdG8KICAgICAgICAgICAgICAgICAvLyBjbG9i
YmVyaW5nIHRoZSB3b3JsZC4KQEAgLTIzNjYsMjUgKzIzNjYsMzIgQEAgYm9vbCBBYnN0cmFjdElu
dGVycHJldGVyPEFic3RyYWN0U3RhdGVUeQogICAgICAgICAgICAgbWFrZUhlYXBUb3BGb3JOb2Rl
KG5vZGUpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgQXJyYXk6OkludDMyOgot
ICAgICAgICAgICAgaWYgKG5vZGUtPmFycmF5TW9kZSgpLmlzT3V0T2ZCb3VuZHMoKSkgeworICAg
ICAgICAgICAgaWYgKG5vZGUtPmFycmF5TW9kZSgpLmlzRWZmZWN0ZnVsT3V0T2ZCb3VuZHMoKSkg
ewogICAgICAgICAgICAgICAgIGNsb2JiZXJXb3JsZCgpOwogICAgICAgICAgICAgICAgIG1ha2VI
ZWFwVG9wRm9yTm9kZShub2RlKTsKLSAgICAgICAgICAgIH0gZWxzZQorICAgICAgICAgICAgfSBl
bHNlIGlmIChub2RlLT5hcnJheU1vZGUoKS5pc091dE9mQm91bmRzU2FuZUNoYWluKCkpCisgICAg
ICAgICAgICAgICAgc2V0Tm9uQ2VsbFR5cGVGb3JOb2RlKG5vZGUsIFNwZWNJbnQzMk9ubHkgfCBT
cGVjT3RoZXIpOworICAgICAgICAgICAgZWxzZQogICAgICAgICAgICAgICAgIHNldE5vbkNlbGxU
eXBlRm9yTm9kZShub2RlLCBTcGVjSW50MzJPbmx5KTsKICAgICAgICAgICAgIGJyZWFrOwogICAg
ICAgICBjYXNlIEFycmF5OjpEb3VibGU6Ci0gICAgICAgICAgICBpZiAobm9kZS0+YXJyYXlNb2Rl
KCkuaXNPdXRPZkJvdW5kcygpKSB7CisgICAgICAgICAgICBpZiAobm9kZS0+YXJyYXlNb2RlKCku
aXNFZmZlY3RmdWxPdXRPZkJvdW5kcygpKSB7CiAgICAgICAgICAgICAgICAgY2xvYmJlcldvcmxk
KCk7CiAgICAgICAgICAgICAgICAgbWFrZUhlYXBUb3BGb3JOb2RlKG5vZGUpOwotICAgICAgICAg
ICAgfSBlbHNlIGlmIChub2RlLT5hcnJheU1vZGUoKS5pc1NhbmVDaGFpbigpKQorICAgICAgICAg
ICAgfSBlbHNlIGlmIChub2RlLT5hcnJheU1vZGUoKS5pc0luQm91bmRzU2FuZUNoYWluKCkpCiAg
ICAgICAgICAgICAgICAgc2V0Tm9uQ2VsbFR5cGVGb3JOb2RlKG5vZGUsIFNwZWNCeXRlY29kZURv
dWJsZSk7Ci0gICAgICAgICAgICBlbHNlCisgICAgICAgICAgICBlbHNlIGlmIChub2RlLT5hcnJh
eU1vZGUoKS5pc091dE9mQm91bmRzU2FuZUNoYWluKCkpIHsKKyAgICAgICAgICAgICAgICBpZiAo
ISEobm9kZS0+ZmxhZ3MoKSAmIE5vZGVCeXRlY29kZVVzZXNBc090aGVyKSkKKyAgICAgICAgICAg
ICAgICAgICAgc2V0Tm9uQ2VsbFR5cGVGb3JOb2RlKG5vZGUsIFNwZWNCeXRlY29kZURvdWJsZSB8
IFNwZWNPdGhlcik7CisgICAgICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgICAgICBz
ZXROb25DZWxsVHlwZUZvck5vZGUobm9kZSwgU3BlY0J5dGVjb2RlRG91YmxlKTsKKyAgICAgICAg
ICAgIH0gZWxzZQogICAgICAgICAgICAgICAgIHNldE5vbkNlbGxUeXBlRm9yTm9kZShub2RlLCBT
cGVjRG91YmxlUmVhbCk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBBcnJheTo6
Q29udGlndW91czoKICAgICAgICAgY2FzZSBBcnJheTo6QXJyYXlTdG9yYWdlOgogICAgICAgICBj
YXNlIEFycmF5OjpTbG93UHV0QXJyYXlTdG9yYWdlOgotICAgICAgICAgICAgaWYgKG5vZGUtPmFy
cmF5TW9kZSgpLmlzT3V0T2ZCb3VuZHMoKSkKKyAgICAgICAgICAgIGlmIChub2RlLT5hcnJheU1v
ZGUoKS5pc0VmZmVjdGZ1bE91dE9mQm91bmRzKCkpCiAgICAgICAgICAgICAgICAgY2xvYmJlcldv
cmxkKCk7CiAgICAgICAgICAgICBtYWtlSGVhcFRvcEZvck5vZGUobm9kZSk7CiAgICAgICAgICAg
ICBicmVhazsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQXJyYXlNb2RlLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0FycmF5TW9kZS5j
cHAJKHJldmlzaW9uIDI2NTYzNykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQXJy
YXlNb2RlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjYwLDcgKzI2MCw3IEBAIEFycmF5TW9kZSBB
cnJheU1vZGU6OnJlZmluZSgKICAgICAgICAgICAgIGdyYXBoLnJlZ2lzdGVyQW5kV2F0Y2hTdHJ1
Y3R1cmVUcmFuc2l0aW9uKGFycmF5UHJvdG90eXBlU3RydWN0dXJlKTsKICAgICAgICAgICAgIGdy
YXBoLnJlZ2lzdGVyQW5kV2F0Y2hTdHJ1Y3R1cmVUcmFuc2l0aW9uKG9iamVjdFByb3RvdHlwZVN0
cnVjdHVyZSk7CiAgICAgICAgICAgICBpZiAoZ2xvYmFsT2JqZWN0LT5hcnJheVByb3RvdHlwZUNo
YWluSXNTYW5lKCkpCi0gICAgICAgICAgICAgICAgcmV0dXJuIHdpdGhTcGVjdWxhdGlvbihBcnJh
eTo6U2FuZUNoYWluKTsKKyAgICAgICAgICAgICAgICByZXR1cm4gd2l0aFNwZWN1bGF0aW9uKEFy
cmF5OjpJbkJvdW5kc1NhbmVDaGFpbik7CiAgICAgICAgIH0KICAgICAgICAgcmV0dXJuIEFycmF5
TW9kZShBcnJheTo6R2VuZXJpYywgYWN0aW9uKCkpOwogICAgIH0KQEAgLTcxMywxNCArNzEzLDE2
IEBAIGNvbnN0IGNoYXIqIGFycmF5Q2xhc3NUb1N0cmluZyhBcnJheTo6Q2wKIGNvbnN0IGNoYXIq
IGFycmF5U3BlY3VsYXRpb25Ub1N0cmluZyhBcnJheTo6U3BlY3VsYXRpb24gc3BlY3VsYXRpb24p
CiB7CiAgICAgc3dpdGNoIChzcGVjdWxhdGlvbikgewotICAgIGNhc2UgQXJyYXk6OlNhbmVDaGFp
bjoKLSAgICAgICAgcmV0dXJuICJTYW5lQ2hhaW4iOworICAgIGNhc2UgQXJyYXk6OkluQm91bmRz
U2FuZUNoYWluOgorICAgICAgICByZXR1cm4gIkluQm91bmRzU2FuZUNoYWluIjsKICAgICBjYXNl
IEFycmF5OjpJbkJvdW5kczoKICAgICAgICAgcmV0dXJuICJJbkJvdW5kcyI7CiAgICAgY2FzZSBB
cnJheTo6VG9Ib2xlOgogICAgICAgICByZXR1cm4gIlRvSG9sZSI7CiAgICAgY2FzZSBBcnJheTo6
T3V0T2ZCb3VuZHM6CiAgICAgICAgIHJldHVybiAiT3V0T2ZCb3VuZHMiOworICAgIGNhc2UgQXJy
YXk6Ok91dE9mQm91bmRzU2FuZUNoYWluOgorICAgICAgICByZXR1cm4gIk91dE9mQm91bmRzU2Fu
ZUNoYWluIjsKICAgICBkZWZhdWx0OgogICAgICAgICByZXR1cm4gIlVua25vd24hIjsKICAgICB9
CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0FycmF5TW9kZS5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQXJyYXlNb2RlLmgJKHJldmlzaW9u
IDI2NTYzNykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQXJyYXlNb2RlLmgJKHdv
cmtpbmcgY29weSkKQEAgLTg5LDEwICs4OSwxMSBAQCBlbnVtIENsYXNzIDogdWludDhfdCB7CiB9
OwogCiBlbnVtIFNwZWN1bGF0aW9uIDogdWludDhfdCB7Ci0gICAgU2FuZUNoYWluLCAvLyBJbiBi
b3VuZHMgYW5kIHRoZSBhcnJheSBwcm90b3R5cGUgY2hhaW4gaXMgc3RpbGwgaW50YWN0LCBpLmUu
IGxvYWRpbmcgYSBob2xlIGRvZXNuJ3QgcmVxdWlyZSBzcGVjaWFsIHRyZWF0bWVudC4KKyAgICBJ
bkJvdW5kc1NhbmVDaGFpbiwgLy8gSW4gYm91bmRzIGFuZCB0aGUgYXJyYXkgcHJvdG90eXBlIGNo
YWluIGlzIHN0aWxsIGludGFjdCwgaS5lLiBsb2FkaW5nIGEgaG9sZSBkb2Vzbid0IHJlcXVpcmUg
c3BlY2lhbCB0cmVhdG1lbnQuCiAgICAgCiAgICAgSW5Cb3VuZHMsIC8vIEluIGJvdW5kcyBhbmQg
bm90IGxvYWRpbmcgYSBob2xlLgogICAgIFRvSG9sZSwgLy8gUG90ZW50aWFsbHkgc3RvcmluZyB0
byBhIGhvbGUuCisgICAgT3V0T2ZCb3VuZHNTYW5lQ2hhaW4sIC8vIE91dC1vZi1ib3VuZHMgYWNj
ZXNzLCBidXQgc2FuZSBjaGFpbiwgc28gdGhlcmUgYXJlIG5vIGFyYml0cmFyeSBlZmZlY3RzLiBF
LmcsIGxvYWRpbmcgb3V0IG9mIGJvdW5kcyBkb2Vzbid0IHJlcXVpcmUgdHJhdmVyc2luZyB0aGUg
cHJvdG90eXBlIGNoYWluIGlmIHdlJ3JlIGFuIG9yaWdpbmFsIGFycmF5IHN0cnVjdHVyZS4KICAg
ICBPdXRPZkJvdW5kcyAvLyBPdXQtb2YtYm91bmRzIGFjY2VzcyBhbmQgYW55dGhpbmcgY2FuIGhh
cHBlbi4KIH07CiBlbnVtIENvbnZlcnNpb24gOiB1aW50OF90IHsKQEAgLTI3NiwxNSArMjc3LDM1
IEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIGFycmF5Q2xhc3MoKSA9PSBBcnJheTo6T3JpZ2lu
YWxBcnJheSB8fCBhcnJheUNsYXNzKCkgPT0gQXJyYXk6Ok9yaWdpbmFsQ29weU9uV3JpdGVBcnJh
eTsKICAgICB9CiAgICAgCi0gICAgYm9vbCBpc1NhbmVDaGFpbigpIGNvbnN0CisgICAgYm9vbCBp
c0luQm91bmRzU2FuZUNoYWluKCkgY29uc3QKICAgICB7Ci0gICAgICAgIHJldHVybiBzcGVjdWxh
dGlvbigpID09IEFycmF5OjpTYW5lQ2hhaW47CisgICAgICAgIHJldHVybiBzcGVjdWxhdGlvbigp
ID09IEFycmF5OjpJbkJvdW5kc1NhbmVDaGFpbjsKKyAgICB9CisKKyAgICBib29sIGlzT3V0T2ZC
b3VuZHNTYW5lQ2hhaW4oKSBjb25zdAorICAgIHsKKyAgICAgICAgcmV0dXJuIHNwZWN1bGF0aW9u
KCkgPT0gQXJyYXk6Ok91dE9mQm91bmRzU2FuZUNoYWluOworICAgIH0KKworICAgIGJvb2wgaXNB
bnlTYW5lQ2hhaW4oKSBjb25zdAorICAgIHsKKyAgICAgICAgcmV0dXJuIGlzSW5Cb3VuZHNTYW5l
Q2hhaW4oKSB8fCBpc091dE9mQm91bmRzU2FuZUNoYWluKCk7CisgICAgfQorICAgIAorICAgIGJv
b2wgaXNPdXRPZkJvdW5kcygpIGNvbnN0CisgICAgeworICAgICAgICByZXR1cm4gc3BlY3VsYXRp
b24oKSA9PSBBcnJheTo6T3V0T2ZCb3VuZHMgfHwgc3BlY3VsYXRpb24oKSA9PSBBcnJheTo6T3V0
T2ZCb3VuZHNTYW5lQ2hhaW47CisgICAgfQorCisgICAgYm9vbCBpc0VmZmVjdGZ1bE91dE9mQm91
bmRzKCkgY29uc3QKKyAgICB7CisgICAgICAgIHJldHVybiBzcGVjdWxhdGlvbigpID09IEFycmF5
OjpPdXRPZkJvdW5kczsKICAgICB9CiAgICAgCiAgICAgYm9vbCBpc0luQm91bmRzKCkgY29uc3QK
ICAgICB7CiAgICAgICAgIHN3aXRjaCAoc3BlY3VsYXRpb24oKSkgewotICAgICAgICBjYXNlIEFy
cmF5OjpTYW5lQ2hhaW46CisgICAgICAgIGNhc2UgQXJyYXk6OkluQm91bmRzU2FuZUNoYWluOgog
ICAgICAgICBjYXNlIEFycmF5OjpJbkJvdW5kczoKICAgICAgICAgICAgIHJldHVybiB0cnVlOwog
ICAgICAgICBkZWZhdWx0OgpAQCAtMjk3LDExICszMTgsNiBAQCBwdWJsaWM6CiAgICAgICAgIHJl
dHVybiAhaXNJbkJvdW5kcygpOwogICAgIH0KICAgICAKLSAgICBib29sIGlzT3V0T2ZCb3VuZHMo
KSBjb25zdAotICAgIHsKLSAgICAgICAgcmV0dXJuIHNwZWN1bGF0aW9uKCkgPT0gQXJyYXk6Ok91
dE9mQm91bmRzOwotICAgIH0KLSAgICAKICAgICBib29sIGlzU2xvd1B1dCgpIGNvbnN0CiAgICAg
ewogICAgICAgICByZXR1cm4gdHlwZSgpID09IEFycmF5OjpTbG93UHV0QXJyYXlTdG9yYWdlOwpJ
bmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDU0VQaGFzZS5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDU0VQaGFzZS5jcHAJKHJldmlzaW9u
IDI2NTYzNykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ1NFUGhhc2UuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC01NTAsNyArNTUwLDcgQEAgcHJpdmF0ZToKICAgICAgICAgICAgICAg
ICAgICAgICAgIGNhc2UgQXJyYXk6OkRvdWJsZTogewogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGlmICghbW9kZS5pc0luQm91bmRzKCkpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGJyZWFrOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgIExvY2F0aW9uS2luZCBraW5k
ID0gbW9kZS5pc1NhbmVDaGFpbigpID8gSW5kZXhlZFByb3BlcnR5RG91YmxlU2FuZUNoYWluTG9j
IDogSW5kZXhlZFByb3BlcnR5RG91YmxlTG9jOworICAgICAgICAgICAgICAgICAgICAgICAgICAg
IExvY2F0aW9uS2luZCBraW5kID0gbW9kZS5pc0luQm91bmRzU2FuZUNoYWluKCkgPyBJbmRleGVk
UHJvcGVydHlEb3VibGVTYW5lQ2hhaW5Mb2MgOiBJbmRleGVkUHJvcGVydHlEb3VibGVMb2M7CiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgaGVhcCA9IEhlYXBMb2NhdGlvbihraW5kLCBJbmRl
eGVkRG91YmxlUHJvcGVydGllcywgYmFzZSwgaW5kZXgpOwogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgICAgICAgfQpJbmRleDogU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdDbG9iYmVyaXplLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdDbG9iYmVyaXplLmgJKHJldmlzaW9uIDI2NTYzNykKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ2xvYmJlcml6ZS5oCSh3b3JraW5nIGNvcHkpCkBA
IC05MjksMjAgKzkyOSwyNyBAQCB2b2lkIGNsb2JiZXJpemUoR3JhcGgmIGdyYXBoLCBOb2RlKiBu
b2RlCiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgICAKICAgICAgICAgY2FzZSBBcnJh
eTo6SW50MzI6Ci0gICAgICAgICAgICBpZiAobW9kZS5pc0luQm91bmRzKCkpIHsKKyAgICAgICAg
ICAgIGlmIChtb2RlLmlzSW5Cb3VuZHMoKSB8fCBtb2RlLmlzT3V0T2ZCb3VuZHNTYW5lQ2hhaW4o
KSkgewogICAgICAgICAgICAgICAgIHJlYWQoQnV0dGVyZmx5X3B1YmxpY0xlbmd0aCk7CiAgICAg
ICAgICAgICAgICAgcmVhZChJbmRleGVkSW50MzJQcm9wZXJ0aWVzKTsKLSAgICAgICAgICAgICAg
ICBkZWYoSGVhcExvY2F0aW9uKGluZGV4ZWRQcm9wZXJ0eUxvYywgSW5kZXhlZEludDMyUHJvcGVy
dGllcywgZ3JhcGgudmFyQXJnQ2hpbGQobm9kZSwgMCksIGdyYXBoLnZhckFyZ0NoaWxkKG5vZGUs
IDEpKSwgTGF6eU5vZGUobm9kZSkpOworICAgICAgICAgICAgICAgIExvY2F0aW9uS2luZCBraW5k
ID0gbW9kZS5pc091dE9mQm91bmRzU2FuZUNoYWluKCkgPyBJbmRleGVkUHJvcGVydHlJbnQzMk9y
T3RoZXJMb2MgOiBpbmRleGVkUHJvcGVydHlMb2M7CisgICAgICAgICAgICAgICAgZGVmKEhlYXBM
b2NhdGlvbihraW5kLCBJbmRleGVkSW50MzJQcm9wZXJ0aWVzLCBncmFwaC52YXJBcmdDaGlsZChu
b2RlLCAwKSwgZ3JhcGgudmFyQXJnQ2hpbGQobm9kZSwgMSkpLCBMYXp5Tm9kZShub2RlKSk7CiAg
ICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgY2xvYmJl
clRvcCgpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAgCiAgICAgICAgIGNhc2Ug
QXJyYXk6OkRvdWJsZToKLSAgICAgICAgICAgIGlmIChtb2RlLmlzSW5Cb3VuZHMoKSkgeworICAg
ICAgICAgICAgaWYgKG1vZGUuaXNJbkJvdW5kcygpIHx8IG1vZGUuaXNPdXRPZkJvdW5kc1NhbmVD
aGFpbigpKSB7CiAgICAgICAgICAgICAgICAgcmVhZChCdXR0ZXJmbHlfcHVibGljTGVuZ3RoKTsK
ICAgICAgICAgICAgICAgICByZWFkKEluZGV4ZWREb3VibGVQcm9wZXJ0aWVzKTsKLSAgICAgICAg
ICAgICAgICBMb2NhdGlvbktpbmQga2luZCA9IG1vZGUuaXNTYW5lQ2hhaW4oKSA/IEluZGV4ZWRQ
cm9wZXJ0eURvdWJsZVNhbmVDaGFpbkxvYyA6IEluZGV4ZWRQcm9wZXJ0eURvdWJsZUxvYzsKKyAg
ICAgICAgICAgICAgICBMb2NhdGlvbktpbmQga2luZDsKKyAgICAgICAgICAgICAgICBpZiAobm9k
ZS0+aGFzRG91YmxlUmVzdWx0KCkpCisgICAgICAgICAgICAgICAgICAgIGtpbmQgPSBtb2RlLmlz
QW55U2FuZUNoYWluKCkgPyBJbmRleGVkUHJvcGVydHlEb3VibGVTYW5lQ2hhaW5Mb2MgOiBJbmRl
eGVkUHJvcGVydHlEb3VibGVMb2M7CisgICAgICAgICAgICAgICAgZWxzZSB7CisgICAgICAgICAg
ICAgICAgICAgIEFTU0VSVChtb2RlLmlzT3V0T2ZCb3VuZHNTYW5lQ2hhaW4oKSk7CisgICAgICAg
ICAgICAgICAgICAgIGtpbmQgPSBJbmRleGVkUHJvcGVydHlEb3VibGVPck90aGVyU2FuZUNoYWlu
TG9jOworICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICBkZWYoSGVhcExvY2F0aW9u
KGtpbmQsIEluZGV4ZWREb3VibGVQcm9wZXJ0aWVzLCBncmFwaC52YXJBcmdDaGlsZChub2RlLCAw
KSwgZ3JhcGgudmFyQXJnQ2hpbGQobm9kZSwgMSkpLCBMYXp5Tm9kZShub2RlKSk7CiAgICAgICAg
ICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAgfQpAQCAtOTUwLDcgKzk1Nyw3IEBAIHZvaWQg
Y2xvYmJlcml6ZShHcmFwaCYgZ3JhcGgsIE5vZGUqIG5vZGUKICAgICAgICAgICAgIHJldHVybjsK
ICAgICAgICAgICAgIAogICAgICAgICBjYXNlIEFycmF5OjpDb250aWd1b3VzOgotICAgICAgICAg
ICAgaWYgKG1vZGUuaXNJbkJvdW5kcygpKSB7CisgICAgICAgICAgICBpZiAobW9kZS5pc0luQm91
bmRzKCkgfHwgbW9kZS5pc091dE9mQm91bmRzU2FuZUNoYWluKCkpIHsKICAgICAgICAgICAgICAg
ICByZWFkKEJ1dHRlcmZseV9wdWJsaWNMZW5ndGgpOwogICAgICAgICAgICAgICAgIHJlYWQoSW5k
ZXhlZENvbnRpZ3VvdXNQcm9wZXJ0aWVzKTsKICAgICAgICAgICAgICAgICBkZWYoSGVhcExvY2F0
aW9uKGluZGV4ZWRQcm9wZXJ0eUxvYywgSW5kZXhlZENvbnRpZ3VvdXNQcm9wZXJ0aWVzLCBncmFw
aC52YXJBcmdDaGlsZChub2RlLCAwKSwgZ3JhcGgudmFyQXJnQ2hpbGQobm9kZSwgMSkpLCBMYXp5
Tm9kZShub2RlKSk7CkBAIC0xMDQyLDYgKzEwNDksNyBAQCB2b2lkIGNsb2JiZXJpemUoR3JhcGgm
IGdyYXBoLCBOb2RlKiBub2RlCiAgICAgICAgICAgICBpZiAobm9kZS0+YXJyYXlNb2RlKCkubWF5
U3RvcmVUb0hvbGUoKSkKICAgICAgICAgICAgICAgICB3cml0ZShCdXR0ZXJmbHlfcHVibGljTGVu
Z3RoKTsKICAgICAgICAgICAgIGRlZihIZWFwTG9jYXRpb24oaW5kZXhlZFByb3BlcnR5TG9jLCBJ
bmRleGVkSW50MzJQcm9wZXJ0aWVzLCBiYXNlLCBpbmRleCksIExhenlOb2RlKHZhbHVlKSk7Cisg
ICAgICAgICAgICBkZWYoSGVhcExvY2F0aW9uKEluZGV4ZWRQcm9wZXJ0eUludDMyT3JPdGhlckxv
YywgSW5kZXhlZEludDMyUHJvcGVydGllcywgYmFzZSwgaW5kZXgpLCBMYXp5Tm9kZSh2YWx1ZSkp
OwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAgCiAgICAgICAgIGNhc2UgQXJyYXk6
OkRvdWJsZToKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRml4dXBQaGFzZS5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdGaXh1cFBoYXNl
LmNwcAkocmV2aXNpb24gMjY1NjM3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdG
aXh1cFBoYXNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTA1OSwyMCArMTA1OSwyNCBAQCBwcml2
YXRlOgogICAgICAgICAgICAgc3dpdGNoIChhcnJheU1vZGUudHlwZSgpKSB7CiAgICAgICAgICAg
ICBjYXNlIEFycmF5OjpDb250aWd1b3VzOgogICAgICAgICAgICAgY2FzZSBBcnJheTo6RG91Ymxl
OgotICAgICAgICAgICAgICAgIGlmIChhcnJheU1vZGUuaXNKU0FycmF5V2l0aE9yaWdpbmFsU3Ry
dWN0dXJlKCkgJiYgYXJyYXlNb2RlLnNwZWN1bGF0aW9uKCkgPT0gQXJyYXk6OkluQm91bmRzKSB7
Ci0gICAgICAgICAgICAgICAgICAgIC8vIENoZWNrIGlmIFNhbmVDaGFpbiB3aWxsIHdvcmsgb24g
YSBwZXItdHlwZSBiYXNpcy4gTm90ZSB0aGF0OgorICAgICAgICAgICAgY2FzZSBBcnJheTo6SW50
MzI6IHsKKyAgICAgICAgICAgICAgICBPcHRpb25hbDxBcnJheTo6U3BlY3VsYXRpb24+IHNhbmVD
aGFpblNwZWN1bGF0aW9uOworICAgICAgICAgICAgICAgIGlmIChhcnJheU1vZGUuaXNKU0FycmF5
V2l0aE9yaWdpbmFsU3RydWN0dXJlKCkpIHsKKyAgICAgICAgICAgICAgICAgICAgLy8gQ2hlY2sg
aWYgSW5Cb3VuZHNTYW5lQ2hhaW4gd2lsbCB3b3JrIG9uIGEgcGVyLXR5cGUgYmFzaXMuIE5vdGUg
dGhhdDoKICAgICAgICAgICAgICAgICAgICAgLy8KICAgICAgICAgICAgICAgICAgICAgLy8gMSkg
V2UgZG9uJ3Qgd2FudCBkb3VibGUgYXJyYXlzIHRvIHNvbWV0aW1lcyByZXR1cm4gdW5kZWZpbmVk
LCBzaW5jZQogICAgICAgICAgICAgICAgICAgICAvLyB0aGF0IHdvdWxkIHJlcXVpcmUgYSBjaGFu
Z2UgdG8gdGhlIHJldHVybiB0eXBlIGFuZCBpdCB3b3VsZCBwZXNzaW1pc2UKICAgICAgICAgICAg
ICAgICAgICAgLy8gdGhpbmdzIGEgbG90LiBTbywgd2UnZCBvbmx5IHdhbnQgdG8gZG8gdGhhdCBp
ZiB3ZSBhY3R1YWxseSBoYWQKICAgICAgICAgICAgICAgICAgICAgLy8gZXZpZGVuY2UgdGhhdCB3
ZSBjb3VsZCByZWFkIGZyb20gYSBob2xlLiBUaGF0J3MgcHJldHR5IGFubm95aW5nLgogICAgICAg
ICAgICAgICAgICAgICAvLyBMaWtlbHkgdGhlIGJlc3Qgd2F5IHRvIGhhbmRsZSB0aGF0IGNhc2Ug
aXMgd2l0aCBhbiBlcXVpdmFsZW50IG9mCi0gICAgICAgICAgICAgICAgICAgIC8vIFNhbmVDaGFp
biBmb3IgT3V0T2ZCb3VuZHMuIEZvciBub3cgd2UganVzdCBkZXRlY3Qgd2hlbiBVbmRlZmluZWQg
YW5kCisgICAgICAgICAgICAgICAgICAgIC8vIEluQm91bmRzU2FuZUNoYWluIGZvciBPdXRPZkJv
dW5kcy4gRm9yIG5vdyB3ZSBqdXN0IGRldGVjdCB3aGVuIFVuZGVmaW5lZCBhbmQKICAgICAgICAg
ICAgICAgICAgICAgLy8gTmFOIGFyZSBpbmRpc3Rpbmd1aXNoYWJsZSBhY2NvcmRpbmcgdG8gYmFj
a3dhcmRzIHByb3BhZ2F0aW9uLCBhbmQganVzdAotICAgICAgICAgICAgICAgICAgICAvLyB1c2Ug
U2FuZUNoYWluIGluIHRoYXQgY2FzZS4gVGhpcyBoYXBwZW5zIHRvIGNhdGNoIGEgbG90IG9mIGNh
c2VzLgorICAgICAgICAgICAgICAgICAgICAvLyB1c2UgSW5Cb3VuZHNTYW5lQ2hhaW4gaW4gdGhh
dCBjYXNlLiBUaGlzIGhhcHBlbnMgdG8gY2F0Y2ggYSBsb3Qgb2YgY2FzZXMuCiAgICAgICAgICAg
ICAgICAgICAgIC8vCiAgICAgICAgICAgICAgICAgICAgIC8vIDIpIFdlIGRvbid0IHdhbnQgaW50
MzIgYXJyYXkgbG9hZHMgdG8gaGF2ZSB0byBkbyBhIGhvbGUgY2hlY2sganVzdCB0bwotICAgICAg
ICAgICAgICAgICAgICAvLyBjb2VyY2UgdG8gVW5kZWZpbmVkLCBzaW5jZSB0aGF0IHdvdWxkIG1l
YW4gdHdpY2UgdGhlIGNoZWNrcy4KKyAgICAgICAgICAgICAgICAgICAgLy8gY29lcmNlIHRvIFVu
ZGVmaW5lZCwgc2luY2UgdGhhdCB3b3VsZCBtZWFuIHR3aWNlIHRoZSBjaGVja3MuIFdlIHdhbnQg
dG8KKyAgICAgICAgICAgICAgICAgICAgLy8gYmUgYWJsZSB0byBzYXkgd2UgYWx3YXlzIHJldHVy
biBJbnQzMi4gRklYTUU6IE1heWJlIHRoaXMgc2hvdWxkIGJlIHByb2ZpbGluZworICAgICAgICAg
ICAgICAgICAgICAvLyBiYXNlZD8KICAgICAgICAgICAgICAgICAgICAgLy8KICAgICAgICAgICAg
ICAgICAgICAgLy8gVGhpcyBoYXMgdHdvIGltcGxpY2F0aW9ucy4gRmlyc3QsIHdlIGhhdmUgdG8g
ZG8gbW9yZSBjaGVja3MgdGhhbiB3ZSdkCiAgICAgICAgICAgICAgICAgICAgIC8vIGxpa2UuIEl0
J3MgdW5mb3J0dW5hdGUgdGhhdCB3ZSBoYXZlIHRvIGRvIHRoZSBob2xlIGNoZWNrLiBTZWNvbmQs
CkBAIC0xMDgwLDMyICsxMDg0LDQxIEBAIHByaXZhdGU6CiAgICAgICAgICAgICAgICAgICAgIC8v
IG91dC1vZi1ib3VuZHMgc2xvdyBwYXRoLiBXZSBjYW4gZml4IHRoYXQgd2l0aDoKICAgICAgICAg
ICAgICAgICAgICAgLy8gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE0
NDY2OAogICAgICAgICAgICAgICAgICAgICAKLSAgICAgICAgICAgICAgICAgICAgYm9vbCBjYW5E
b1NhbmVDaGFpbiA9IGZhbHNlOwogICAgICAgICAgICAgICAgICAgICBzd2l0Y2ggKGFycmF5TW9k
ZS50eXBlKCkpIHsKKyAgICAgICAgICAgICAgICAgICAgY2FzZSBBcnJheTo6SW50MzI6CisgICAg
ICAgICAgICAgICAgICAgICAgICBpZiAoaXM2NEJpdCgpICYmIGFycmF5TW9kZS5zcGVjdWxhdGlv
bigpID09IEFycmF5OjpPdXRPZkJvdW5kcyAmJiAhbV9ncmFwaC5oYXNFeGl0U2l0ZShub2RlLT5v
cmlnaW4uc2VtYW50aWMsIE5lZ2F0aXZlSW5kZXgpKQorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHNhbmVDaGFpblNwZWN1bGF0aW9uID0gQXJyYXk6Ok91dE9mQm91bmRzU2FuZUNoYWluOwor
ICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgIGNhc2Ug
QXJyYXk6OkNvbnRpZ3VvdXM6CiAgICAgICAgICAgICAgICAgICAgICAgICAvLyBUaGlzIGlzIGhh
cHBlbnMgdG8gYmUgZW50aXJlbHkgbmF0dXJhbC4gV2UgYWxyZWFkeSB3b3VsZCBoYXZlCiAgICAg
ICAgICAgICAgICAgICAgICAgICAvLyByZXR1cm5lZCBhbnkgSlNWYWx1ZSwgYW5kIG5vdyB3ZSds
bCByZXR1cm4gVW5kZWZpbmVkLiBXZSBzdGlsbCBkbwogICAgICAgICAgICAgICAgICAgICAgICAg
Ly8gdGhlIGNoZWNrIGJ1dCBpdCBkb2Vzbid0IHJlcXVpcmUgdGFraW5nIGFueSBraW5kIG9mIHNs
b3cgcGF0aC4KLSAgICAgICAgICAgICAgICAgICAgICAgIGNhbkRvU2FuZUNoYWluID0gdHJ1ZTsK
KyAgICAgICAgICAgICAgICAgICAgICAgIGlmIChpczY0Qml0KCkgJiYgYXJyYXlNb2RlLnNwZWN1
bGF0aW9uKCkgPT0gQXJyYXk6Ok91dE9mQm91bmRzICYmICFtX2dyYXBoLmhhc0V4aXRTaXRlKG5v
ZGUtPm9yaWdpbi5zZW1hbnRpYywgTmVnYXRpdmVJbmRleCkpCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgc2FuZUNoYWluU3BlY3VsYXRpb24gPSBBcnJheTo6T3V0T2ZCb3VuZHNTYW5lQ2hh
aW47CisgICAgICAgICAgICAgICAgICAgICAgICBlbHNlIGlmIChhcnJheU1vZGUuc3BlY3VsYXRp
b24oKSA9PSBBcnJheTo6SW5Cb3VuZHMpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2Fu
ZUNoYWluU3BlY3VsYXRpb24gPSBBcnJheTo6SW5Cb3VuZHNTYW5lQ2hhaW47CiAgICAgICAgICAg
ICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAg
ICAgICAgICAgICBjYXNlIEFycmF5OjpEb3VibGU6Ci0gICAgICAgICAgICAgICAgICAgICAgICBp
ZiAoIShub2RlLT5mbGFncygpICYgTm9kZUJ5dGVjb2RlVXNlc0FzT3RoZXIpKSB7CisgICAgICAg
ICAgICAgICAgICAgICAgICBpZiAoIShub2RlLT5mbGFncygpICYgTm9kZUJ5dGVjb2RlVXNlc0Fz
T3RoZXIpICYmIGFycmF5TW9kZS5zcGVjdWxhdGlvbigpID09IEFycmF5OjpJbkJvdW5kcykgewog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIEhvbGVzIGxvb2sgbGlrZSBOYU4gYWxyZWFk
eSwgc28gaWYgdGhlIHVzZXIgZG9lc24ndCBjYXJlCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgLy8gYWJvdXQgdGhlIGRpZmZlcmVuY2UgYmV0d2VlbiBVbmRlZmluZWQgYW5kIE5hTiB0aGVu
IHdlIGNhbgogICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGRvIHRoaXMuCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgY2FuRG9TYW5lQ2hhaW4gPSB0cnVlOwotICAgICAgICAgICAg
ICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNhbmVDaGFpblNwZWN1
bGF0aW9uID0gQXJyYXk6OkluQm91bmRzU2FuZUNoYWluOworICAgICAgICAgICAgICAgICAgICAg
ICAgfSBlbHNlIGlmIChpczY0Qml0KCkgJiYgYXJyYXlNb2RlLnNwZWN1bGF0aW9uKCkgPT0gQXJy
YXk6Ok91dE9mQm91bmRzICYmICFtX2dyYXBoLmhhc0V4aXRTaXRlKG5vZGUtPm9yaWdpbi5zZW1h
bnRpYywgTmVnYXRpdmVJbmRleCkpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2FuZUNo
YWluU3BlY3VsYXRpb24gPSBBcnJheTo6T3V0T2ZCb3VuZHNTYW5lQ2hhaW47CiAgICAgICAgICAg
ICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAg
ICAgICAgICAgICBkZWZhdWx0OgogICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAg
ICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgICAgCi0gICAgICAgICAgICAgICAg
ICAgIGlmIChjYW5Eb1NhbmVDaGFpbikKLSAgICAgICAgICAgICAgICAgICAgICAgIHNldFNhbmVD
aGFpbklmUG9zc2libGUobm9kZSk7CiAgICAgICAgICAgICAgICAgfQorCisgICAgICAgICAgICAg
ICAgaWYgKHNhbmVDaGFpblNwZWN1bGF0aW9uKQorICAgICAgICAgICAgICAgICAgICBzZXRTYW5l
Q2hhaW5JZlBvc3NpYmxlKG5vZGUsICpzYW5lQ2hhaW5TcGVjdWxhdGlvbik7CisKICAgICAgICAg
ICAgICAgICBicmVhazsKKyAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAKICAgICAgICAg
ICAgIGNhc2UgQXJyYXk6OlN0cmluZzoKICAgICAgICAgICAgICAgICBpZiAoKG5vZGUtPnByZWRp
Y3Rpb24oKSAmIH5TcGVjU3RyaW5nKQpAQCAtMTE1NSw3ICsxMTY4LDggQEAgcHJpdmF0ZToKICAg
ICAgICAgICAgIAogICAgICAgICAgICAgc3dpdGNoIChhcnJheU1vZGUudHlwZSgpKSB7CiAgICAg
ICAgICAgICBjYXNlIEFycmF5OjpEb3VibGU6Ci0gICAgICAgICAgICAgICAgaWYgKCFhcnJheU1v
ZGUuaXNPdXRPZkJvdW5kcygpKQorICAgICAgICAgICAgICAgIGlmICghYXJyYXlNb2RlLmlzT3V0
T2ZCb3VuZHMoKQorICAgICAgICAgICAgICAgICAgICB8fCAoYXJyYXlNb2RlLmlzT3V0T2ZCb3Vu
ZHNTYW5lQ2hhaW4oKSAmJiAhKG5vZGUtPmZsYWdzKCkgJiBOb2RlQnl0ZWNvZGVVc2VzQXNPdGhl
cikpKQogICAgICAgICAgICAgICAgICAgICBub2RlLT5zZXRSZXN1bHQoTm9kZVJlc3VsdERvdWJs
ZSk7CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgCkBAIC0yMjAyLDcg
KzIyMTYsNyBAQCBwcml2YXRlOgogICAgICAgICAgICAgLy8gRklYTUU6IE91dE9mQm91bmRzIHNo
b3VsZG4ndCBwcmVjbHVkZSBnb2luZyBzYW5lIGNoYWluIGJlY2F1c2UgT09CIGlzIGp1c3QgZmFs
c2UgYW5kIGNhbm5vdCBoYXZlIGVmZmVjdHMuCiAgICAgICAgICAgICAvLyBTZWU6IGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDk0NTYKICAgICAgICAgICAgIGlmIChh
cnJheU1vZGUuaXNKU0FycmF5V2l0aE9yaWdpbmFsU3RydWN0dXJlKCkgJiYgYXJyYXlNb2RlLnNw
ZWN1bGF0aW9uKCkgPT0gQXJyYXk6OkluQm91bmRzKQotICAgICAgICAgICAgICAgIHNldFNhbmVD
aGFpbklmUG9zc2libGUobm9kZSk7CisgICAgICAgICAgICAgICAgc2V0U2FuZUNoYWluSWZQb3Nz
aWJsZShub2RlLCBBcnJheTo6SW5Cb3VuZHNTYW5lQ2hhaW4pOwogICAgICAgICAgICAgYnJlYWs7
CiAgICAgICAgIH0KICAgICAgICAgY2FzZSBHZXREaXJlY3RQbmFtZTogewpAQCAtMzUwOSw3ICsz
NTIzLDcgQEAgcHJpdmF0ZToKICAgICAgICAgICAgIG1faW5zZXJ0aW9uU2V0Lmluc2VydE5vZGUo
CiAgICAgICAgICAgICAgICAgbV9pbmRleEluQmxvY2ssIFNwZWNOb25lLCBDaGVjaywgb3JpZ2lu
LCBFZGdlKGFycmF5LCBTdHJpbmdVc2UpKTsKICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAg
IC8vIE5vdGUgdGhhdCB3ZSBvbmx5IG5lZWQgdG8gYmUgdXNpbmcgYSBzdHJ1Y3R1cmUgY2hlY2sg
aWYgd2Ugb3B0IGZvciBTYW5lQ2hhaW4sIHNpbmNlCisgICAgICAgICAgICAvLyBOb3RlIHRoYXQg
d2Ugb25seSBuZWVkIHRvIGJlIHVzaW5nIGEgc3RydWN0dXJlIGNoZWNrIGlmIHdlIG9wdCBmb3Ig
SW5Cb3VuZHNTYW5lQ2hhaW4sIHNpbmNlCiAgICAgICAgICAgICAvLyB0aGF0IG5lZWRzIHRvIHBy
b3RlY3QgYWdhaW5zdCBKU0FycmF5J3MgX19wcm90b19fIGJlaW5nIGNoYW5nZWQuCiAgICAgICAg
ICAgICBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSA9IGFycmF5TW9kZS5vcmlnaW5hbEFycmF5U3RydWN0
dXJlKG1fZ3JhcGgsIG9yaWdpbi5zZW1hbnRpYyk7CiAgICAgICAgIApAQCAtMzU1MSw3ICszNTY1
LDcgQEAgcHJpdmF0ZToKICAgICAgICAgICAgIE9wSW5mbyhhcnJheU1vZGUuYXNXb3JkKCkpLCBF
ZGdlKGFycmF5LCBLbm93bkNlbGxVc2UpKTsKICAgICB9CiAKLSAgICB2b2lkIHNldFNhbmVDaGFp
bklmUG9zc2libGUoTm9kZSogbm9kZSkKKyAgICB2b2lkIHNldFNhbmVDaGFpbklmUG9zc2libGUo
Tm9kZSogbm9kZSwgQXJyYXk6OlNwZWN1bGF0aW9uIHNwZWN1bGF0aW9uKQogICAgIHsKICAgICAg
ICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCA9IG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9y
KG5vZGUtPm9yaWdpbi5zZW1hbnRpYyk7CiAgICAgICAgIFN0cnVjdHVyZSogYXJyYXlQcm90b3R5
cGVTdHJ1Y3R1cmUgPSBnbG9iYWxPYmplY3QtPmFycmF5UHJvdG90eXBlKCktPnN0cnVjdHVyZSh2
bSgpKTsKQEAgLTM1NjEsNyArMzU3NSw3IEBAIHByaXZhdGU6CiAgICAgICAgICAgICAmJiBnbG9i
YWxPYmplY3QtPmFycmF5UHJvdG90eXBlQ2hhaW5Jc1NhbmUoKSkgewogICAgICAgICAgICAgbV9n
cmFwaC5yZWdpc3RlckFuZFdhdGNoU3RydWN0dXJlVHJhbnNpdGlvbihhcnJheVByb3RvdHlwZVN0
cnVjdHVyZSk7CiAgICAgICAgICAgICBtX2dyYXBoLnJlZ2lzdGVyQW5kV2F0Y2hTdHJ1Y3R1cmVU
cmFuc2l0aW9uKG9iamVjdFByb3RvdHlwZVN0cnVjdHVyZSk7Ci0gICAgICAgICAgICBub2RlLT5z
ZXRBcnJheU1vZGUobm9kZS0+YXJyYXlNb2RlKCkud2l0aFNwZWN1bGF0aW9uKEFycmF5OjpTYW5l
Q2hhaW4pKTsKKyAgICAgICAgICAgIG5vZGUtPnNldEFycmF5TW9kZShub2RlLT5hcnJheU1vZGUo
KS53aXRoU3BlY3VsYXRpb24oc3BlY3VsYXRpb24pKTsKICAgICAgICAgICAgIG5vZGUtPmNsZWFy
RmxhZ3MoTm9kZU11c3RHZW5lcmF0ZSk7CiAgICAgICAgIH0KICAgICB9CkBAIC0zOTQzLDcgKzM5
NTcsNyBAQCBwcml2YXRlOgogICAgICAgICAvLyBGSVhNRTogT3V0T2ZCb3VuZHMgc2hvdWxkbid0
IHByZWNsdWRlIGdvaW5nIHNhbmUgY2hhaW4gYmVjYXVzZSBPT0IgaXMganVzdCBmYWxzZSBhbmQg
Y2Fubm90IGhhdmUgZWZmZWN0cy4KICAgICAgICAgLy8gU2VlOiBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjA5NDU2CiAgICAgICAgIGlmIChhcnJheU1vZGUuaXNKU0Fy
cmF5V2l0aE9yaWdpbmFsU3RydWN0dXJlKCkgJiYgYXJyYXlNb2RlLnNwZWN1bGF0aW9uKCkgPT0g
QXJyYXk6OkluQm91bmRzKQotICAgICAgICAgICAgc2V0U2FuZUNoYWluSWZQb3NzaWJsZShub2Rl
KTsKKyAgICAgICAgICAgIHNldFNhbmVDaGFpbklmUG9zc2libGUobm9kZSwgQXJyYXk6OkluQm91
bmRzU2FuZUNoYWluKTsKIAogICAgICAgICBmaXhFZGdlPENlbGxVc2U+KG1fZ3JhcGgudmFyQXJn
Q2hpbGQobm9kZSwgMCkpOwogICAgICAgICBmaXhFZGdlPEludDMyVXNlPihtX2dyYXBoLnZhckFy
Z0NoaWxkKG5vZGUsIDEpKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHSGVh
cExvY2F0aW9uLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R0hlYXBMb2NhdGlvbi5jcHAJKHJldmlzaW9uIDI2NTYzNykKKysrIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHSGVhcExvY2F0aW9uLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTM4LDEwICsx
MzgsMTggQEAgdm9pZCBwcmludEludGVybmFsKFByaW50U3RyZWFtJiBvdXQsIExvYwogICAgICAg
ICBvdXQucHJpbnQoIkluZGV4ZWRQcm9wZXJ0eURvdWJsZVNhbmVDaGFpbkxvYyIpOwogICAgICAg
ICByZXR1cm47CiAKKyAgICBjYXNlIEluZGV4ZWRQcm9wZXJ0eURvdWJsZU9yT3RoZXJTYW5lQ2hh
aW5Mb2M6CisgICAgICAgIG91dC5wcmludCgiSW5kZXhlZFByb3BlcnR5RG91YmxlT3JPdGhlclNh
bmVDaGFpbkxvYyIpOworICAgICAgICByZXR1cm47CisKICAgICBjYXNlIEluZGV4ZWRQcm9wZXJ0
eUludDMyTG9jOgogICAgICAgICBvdXQucHJpbnQoIkluZGV4ZWRQcm9wZXJ0eUludDMyTG9jIik7
CiAgICAgICAgIHJldHVybjsKIAorICAgIGNhc2UgSW5kZXhlZFByb3BlcnR5SW50MzJPck90aGVy
TG9jOgorICAgICAgICBvdXQucHJpbnQoIkluZGV4ZWRQcm9wZXJ0eUludDMyT3JPdGhlckxvYyIp
OworICAgICAgICByZXR1cm47CisKICAgICBjYXNlIEluZGV4ZWRQcm9wZXJ0eUludDUyTG9jOgog
ICAgICAgICBvdXQucHJpbnQoIkluZGV4ZWRQcm9wZXJ0eUludDUyTG9jIik7CiAgICAgICAgIHJl
dHVybjsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHSGVhcExvY2F0aW9uLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdIZWFwTG9jYXRpb24u
aAkocmV2aXNpb24gMjY1NjM3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdIZWFw
TG9jYXRpb24uaAkod29ya2luZyBjb3B5KQpAQCAtNDksNyArNDksOSBAQCBlbnVtIExvY2F0aW9u
S2luZCB7CiAgICAgSGFzSW5kZXhlZFByb3BlcnR5TG9jLAogICAgIEluZGV4ZWRQcm9wZXJ0eURv
dWJsZUxvYywKICAgICBJbmRleGVkUHJvcGVydHlEb3VibGVTYW5lQ2hhaW5Mb2MsCisgICAgSW5k
ZXhlZFByb3BlcnR5RG91YmxlT3JPdGhlclNhbmVDaGFpbkxvYywKICAgICBJbmRleGVkUHJvcGVy
dHlJbnQzMkxvYywKKyAgICBJbmRleGVkUHJvcGVydHlJbnQzMk9yT3RoZXJMb2MsCiAgICAgSW5k
ZXhlZFByb3BlcnR5SW50NTJMb2MsCiAgICAgSW5kZXhlZFByb3BlcnR5SlNMb2MsCiAgICAgSW5k
ZXhlZFByb3BlcnR5U3RvcmFnZUxvYywKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHU3BlY3VsYXRpdmVKSVQzMl82NC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDMyXzY0LmNwcAkocmV2aXNpb24gMjY1NjM3KQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDMyXzY0LmNwcAko
d29ya2luZyBjb3B5KQpAQCAtMjM2Niw3ICsyMzY2LDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6
Y29tcGlsZShOb2RlKiBub2RlKQogICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgR1BSVGVt
cG9yYXJ5IHJlc3VsdFBheWxvYWQodGhpcyk7CiAgICAgICAgICAgICAgICAgaWYgKG5vZGUtPmFy
cmF5TW9kZSgpLnR5cGUoKSA9PSBBcnJheTo6SW50MzIpIHsKLSAgICAgICAgICAgICAgICAgICAg
QVNTRVJUKCFub2RlLT5hcnJheU1vZGUoKS5pc1NhbmVDaGFpbigpKTsKKyAgICAgICAgICAgICAg
ICAgICAgQVNTRVJUKCFub2RlLT5hcnJheU1vZGUoKS5pc0luQm91bmRzU2FuZUNoYWluKCkpOwog
ICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgc3BlY3VsYXRpb25DaGVj
aygKICAgICAgICAgICAgICAgICAgICAgICAgIE91dE9mQm91bmRzLCBKU1ZhbHVlUmVncygpLCAw
LApAQCAtMjM5Miw3ICsyMzkyLDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShOb2Rl
KiBub2RlKQogICAgICAgICAgICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6QmFzZUluZGV4KAog
ICAgICAgICAgICAgICAgICAgICAgICAgc3RvcmFnZVJlZywgcHJvcGVydHlSZWcsIE1hY3JvQXNz
ZW1ibGVyOjpUaW1lc0VpZ2h0LCBQYXlsb2FkT2Zmc2V0KSwKICAgICAgICAgICAgICAgICAgICAg
cmVzdWx0UGF5bG9hZC5ncHIoKSk7Ci0gICAgICAgICAgICAgICAgaWYgKG5vZGUtPmFycmF5TW9k
ZSgpLmlzU2FuZUNoYWluKCkpIHsKKyAgICAgICAgICAgICAgICBpZiAobm9kZS0+YXJyYXlNb2Rl
KCkuaXNJbkJvdW5kc1NhbmVDaGFpbigpKSB7CiAgICAgICAgICAgICAgICAgICAgIEpJVENvbXBp
bGVyOjpKdW1wIG5vdEhvbGUgPSBtX2ppdC5icmFuY2hJZk5vdEVtcHR5KHJlc3VsdFRhZy5ncHIo
KSk7CiAgICAgICAgICAgICAgICAgICAgIG1faml0Lm1vdmUoVHJ1c3RlZEltbTMyKEpTVmFsdWU6
OlVuZGVmaW5lZFRhZyksIHJlc3VsdFRhZy5ncHIoKSk7CiAgICAgICAgICAgICAgICAgICAgIG1f
aml0Lm1vdmUoVHJ1c3RlZEltbTMyKDApLCByZXN1bHRQYXlsb2FkLmdwcigpKTsKQEAgLTI0NTMs
NyArMjQ1Myw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSogbm9kZSkKICAg
ICAgICAgICAgIAogICAgICAgICAgICAgICAgIEZQUlRlbXBvcmFyeSByZXN1bHQodGhpcyk7CiAg
ICAgICAgICAgICAgICAgbV9qaXQubG9hZERvdWJsZShNYWNyb0Fzc2VtYmxlcjo6QmFzZUluZGV4
KHN0b3JhZ2VSZWcsIHByb3BlcnR5UmVnLCBNYWNyb0Fzc2VtYmxlcjo6VGltZXNFaWdodCksIHJl
c3VsdC5mcHIoKSk7Ci0gICAgICAgICAgICAgICAgaWYgKCFub2RlLT5hcnJheU1vZGUoKS5pc1Nh
bmVDaGFpbigpKQorICAgICAgICAgICAgICAgIGlmICghbm9kZS0+YXJyYXlNb2RlKCkuaXNJbkJv
dW5kc1NhbmVDaGFpbigpKQogICAgICAgICAgICAgICAgICAgICBzcGVjdWxhdGlvbkNoZWNrKExv
YWRGcm9tSG9sZSwgSlNWYWx1ZVJlZ3MoKSwgMCwgbV9qaXQuYnJhbmNoSWZOYU4ocmVzdWx0LmZw
cigpKSk7CiAgICAgICAgICAgICAgICAgZG91YmxlUmVzdWx0KHJlc3VsdC5mcHIoKSwgbm9kZSk7
CiAgICAgICAgICAgICAgICAgYnJlYWs7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR1NwZWN1bGF0aXZlSklUNjQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHAJKHJldmlzaW9uIDI2NTYzNykKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTI3MzYsNyArMjczNiw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUo
Tm9kZSogbm9kZSkKICAgICAgICAgICAgICAgICBHUFJUZW1wb3JhcnkgcmVzdWx0KHRoaXMpOwog
CiAgICAgICAgICAgICAgICAgbV9qaXQubG9hZDY0KE1hY3JvQXNzZW1ibGVyOjpCYXNlSW5kZXgo
c3RvcmFnZVJlZywgcHJvcGVydHlSZWcsIE1hY3JvQXNzZW1ibGVyOjpUaW1lc0VpZ2h0KSwgcmVz
dWx0LmdwcigpKTsKLSAgICAgICAgICAgICAgICBpZiAobm9kZS0+YXJyYXlNb2RlKCkuaXNTYW5l
Q2hhaW4oKSkgeworICAgICAgICAgICAgICAgIGlmIChub2RlLT5hcnJheU1vZGUoKS5pc0luQm91
bmRzU2FuZUNoYWluKCkpIHsKICAgICAgICAgICAgICAgICAgICAgQVNTRVJUKG5vZGUtPmFycmF5
TW9kZSgpLnR5cGUoKSA9PSBBcnJheTo6Q29udGlndW91cyk7CiAgICAgICAgICAgICAgICAgICAg
IEpJVENvbXBpbGVyOjpKdW1wIG5vdEhvbGUgPSBtX2ppdC5icmFuY2hJZk5vdEVtcHR5KHJlc3Vs
dC5ncHIoKSk7CiAgICAgICAgICAgICAgICAgICAgIG1faml0Lm1vdmUoVHJ1c3RlZEltbTY0KEpT
VmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKSksIHJlc3VsdC5ncHIoKSk7CkBAIC0yNzY5LDEy
ICsyNzY5LDIxIEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSogbm9kZSkKICAg
ICAgICAgICAgIHNsb3dDYXNlcy5hcHBlbmQobV9qaXQuYnJhbmNoMzIoTWFjcm9Bc3NlbWJsZXI6
OkFib3ZlT3JFcXVhbCwgcHJvcGVydHlSZWcsIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKHN0b3Jh
Z2VSZWcsIEJ1dHRlcmZseTo6b2Zmc2V0T2ZQdWJsaWNMZW5ndGgoKSkpKTsKIAogICAgICAgICAg
ICAgbV9qaXQubG9hZDY0KE1hY3JvQXNzZW1ibGVyOjpCYXNlSW5kZXgoc3RvcmFnZVJlZywgcHJv
cGVydHlSZWcsIE1hY3JvQXNzZW1ibGVyOjpUaW1lc0VpZ2h0KSwgcmVzdWx0UmVnKTsKLSAgICAg
ICAgICAgIHNsb3dDYXNlcy5hcHBlbmQobV9qaXQuYnJhbmNoSWZFbXB0eShyZXN1bHRSZWcpKTsK
KworICAgICAgICAgICAgaWYgKG5vZGUtPmFycmF5TW9kZSgpLmlzT3V0T2ZCb3VuZHNTYW5lQ2hh
aW4oKSkgeworICAgICAgICAgICAgICAgIGF1dG8gZG9uZSA9IG1faml0LmJyYW5jaElmTm90RW1w
dHkocmVzdWx0UmVnKTsKKyAgICAgICAgICAgICAgICBzbG93Q2FzZXMubGluaygmbV9qaXQpOwor
ICAgICAgICAgICAgICAgIHNwZWN1bGF0aW9uQ2hlY2soTmVnYXRpdmVJbmRleCwgSlNWYWx1ZVJl
Z3MoKSwgbnVsbHB0ciwgbV9qaXQuYnJhbmNoMzIoTWFjcm9Bc3NlbWJsZXI6Okxlc3NUaGFuLCBw
cm9wZXJ0eVJlZywgQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tMzIoMCkpKTsKKyAgICAgICAgICAg
ICAgICBtX2ppdC5tb3ZlKENDYWxsSGVscGVyczo6VHJ1c3RlZEltbTY0KEpTVmFsdWU6OmVuY29k
ZShqc1VuZGVmaW5lZCgpKSksIHJlc3VsdFJlZyk7CisgICAgICAgICAgICAgICAgZG9uZS5saW5r
KCZtX2ppdCk7CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIHNsb3dDYXNl
cy5hcHBlbmQobV9qaXQuYnJhbmNoSWZFbXB0eShyZXN1bHRSZWcpKTsKKyAgICAgICAgICAgICAg
ICBhZGRTbG93UGF0aEdlbmVyYXRvcigKKyAgICAgICAgICAgICAgICAgICAgc2xvd1BhdGhDYWxs
KAorICAgICAgICAgICAgICAgICAgICAgICAgc2xvd0Nhc2VzLCB0aGlzLCBvcGVyYXRpb25HZXRC
eVZhbE9iamVjdEludCwKKyAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdC5ncHIoKSwgVHJ1
c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Io
bm9kZS0+b3JpZ2luLnNlbWFudGljKSksIGJhc2VSZWcsIHByb3BlcnR5UmVnKSk7CisgICAgICAg
ICAgICB9CiAgICAgICAgICAgICAKLSAgICAgICAgICAgIGFkZFNsb3dQYXRoR2VuZXJhdG9yKAot
ICAgICAgICAgICAgICAgIHNsb3dQYXRoQ2FsbCgKLSAgICAgICAgICAgICAgICAgICAgc2xvd0Nh
c2VzLCB0aGlzLCBvcGVyYXRpb25HZXRCeVZhbE9iamVjdEludCwKLSAgICAgICAgICAgICAgICAg
ICAgcmVzdWx0LmdwcigpLCBUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRlcihtX2dyYXBoLCBtX2dy
YXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpKSwgYmFzZVJlZywgcHJv
cGVydHlSZWcpKTsKICAgICAgICAgICAgIAogICAgICAgICAgICAganNWYWx1ZVJlc3VsdChyZXN1
bHRSZWcsIG5vZGUpOwogICAgICAgICAgICAgYnJlYWs7CkBAIC0yNzk3LDEyICsyODA2LDE0IEBA
IHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSogbm9kZSkKICAgICAgICAgICAgICAg
ICBzcGVjdWxhdGlvbkNoZWNrKE91dE9mQm91bmRzLCBKU1ZhbHVlUmVncygpLCBudWxscHRyLCBt
X2ppdC5icmFuY2gzMihNYWNyb0Fzc2VtYmxlcjo6QWJvdmVPckVxdWFsLCBwcm9wZXJ0eVJlZywg
TWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3Moc3RvcmFnZVJlZywgQnV0dGVyZmx5OjpvZmZzZXRPZlB1
YmxpY0xlbmd0aCgpKSkpOwogCiAgICAgICAgICAgICAgICAgbV9qaXQubG9hZERvdWJsZShNYWNy
b0Fzc2VtYmxlcjo6QmFzZUluZGV4KHN0b3JhZ2VSZWcsIHByb3BlcnR5UmVnLCBNYWNyb0Fzc2Vt
Ymxlcjo6VGltZXNFaWdodCksIHJlc3VsdFJlZyk7Ci0gICAgICAgICAgICAgICAgaWYgKCFub2Rl
LT5hcnJheU1vZGUoKS5pc1NhbmVDaGFpbigpKQorICAgICAgICAgICAgICAgIGlmICghbm9kZS0+
YXJyYXlNb2RlKCkuaXNJbkJvdW5kc1NhbmVDaGFpbigpKQogICAgICAgICAgICAgICAgICAgICBz
cGVjdWxhdGlvbkNoZWNrKExvYWRGcm9tSG9sZSwgSlNWYWx1ZVJlZ3MoKSwgbnVsbHB0ciwgbV9q
aXQuYnJhbmNoSWZOYU4ocmVzdWx0UmVnKSk7CiAgICAgICAgICAgICAgICAgZG91YmxlUmVzdWx0
KHJlc3VsdFJlZywgbm9kZSk7CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICB9
CiAKKyAgICAgICAgICAgIGJvb2wgcmVzdWx0SXNVbmJveGVkID0gbm9kZS0+YXJyYXlNb2RlKCku
aXNPdXRPZkJvdW5kc1NhbmVDaGFpbigpICYmICEobm9kZS0+ZmxhZ3MoKSAmIE5vZGVCeXRlY29k
ZVVzZXNBc090aGVyKTsKKwogICAgICAgICAgICAgU3BlY3VsYXRlQ2VsbE9wZXJhbmQgYmFzZSh0
aGlzLCBtX2dyYXBoLnZhckFyZ0NoaWxkKG5vZGUsIDApKTsKICAgICAgICAgICAgIFNwZWN1bGF0
ZVN0cmljdEludDMyT3BlcmFuZCBwcm9wZXJ0eSh0aGlzLCBtX2dyYXBoLnZhckFyZ0NoaWxkKG5v
ZGUsIDEpKTsKICAgICAgICAgICAgIFN0b3JhZ2VPcGVyYW5kIHN0b3JhZ2UodGhpcywgbV9ncmFw
aC52YXJBcmdDaGlsZChub2RlLCAyKSk7CkBAIC0yODE0LDkgKzI4MjUsMTMgQEAgdm9pZCBTcGVj
dWxhdGl2ZUpJVDo6Y29tcGlsZShOb2RlKiBub2RlKQogICAgICAgICAgICAgaWYgKCFtX2NvbXBp
bGVPa2F5KQogICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgIAotICAgICAgICAg
ICAgR1BSVGVtcG9yYXJ5IHJlc3VsdCh0aGlzKTsKKyAgICAgICAgICAgIE9wdGlvbmFsPEdQUlRl
bXBvcmFyeT4gcmVzdWx0OworICAgICAgICAgICAgT3B0aW9uYWw8R1BSUmVnPiByZXN1bHRSZWc7
CisgICAgICAgICAgICBpZiAoIXJlc3VsdElzVW5ib3hlZCkgeworICAgICAgICAgICAgICAgIHJl
c3VsdC5lbXBsYWNlKHRoaXMpOworICAgICAgICAgICAgICAgIHJlc3VsdFJlZyA9IHJlc3VsdC0+
Z3ByKCk7CisgICAgICAgICAgICB9CiAgICAgICAgICAgICBGUFJUZW1wb3JhcnkgdGVtcCh0aGlz
KTsKLSAgICAgICAgICAgIEdQUlJlZyByZXN1bHRSZWcgPSByZXN1bHQuZ3ByKCk7CiAgICAgICAg
ICAgICBGUFJSZWcgdGVtcFJlZyA9IHRlbXAuZnByKCk7CiAgICAgICAgICAgICAKICAgICAgICAg
ICAgIE1hY3JvQXNzZW1ibGVyOjpKdW1wTGlzdCBzbG93Q2FzZXM7CkBAIC0yODI0LDE1ICsyODM5
LDM1IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSogbm9kZSkKICAgICAgICAg
ICAgIHNsb3dDYXNlcy5hcHBlbmQobV9qaXQuYnJhbmNoMzIoTWFjcm9Bc3NlbWJsZXI6OkFib3Zl
T3JFcXVhbCwgcHJvcGVydHlSZWcsIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKHN0b3JhZ2VSZWcs
IEJ1dHRlcmZseTo6b2Zmc2V0T2ZQdWJsaWNMZW5ndGgoKSkpKTsKIAogICAgICAgICAgICAgbV9q
aXQubG9hZERvdWJsZShNYWNyb0Fzc2VtYmxlcjo6QmFzZUluZGV4KHN0b3JhZ2VSZWcsIHByb3Bl
cnR5UmVnLCBNYWNyb0Fzc2VtYmxlcjo6VGltZXNFaWdodCksIHRlbXBSZWcpOwotICAgICAgICAg
ICAgc2xvd0Nhc2VzLmFwcGVuZChtX2ppdC5icmFuY2hJZk5hTih0ZW1wUmVnKSk7Ci0gICAgICAg
ICAgICBib3hEb3VibGUodGVtcFJlZywgcmVzdWx0UmVnKTsKLSAgICAgICAgICAgIAotICAgICAg
ICAgICAgYWRkU2xvd1BhdGhHZW5lcmF0b3IoCi0gICAgICAgICAgICAgICAgc2xvd1BhdGhDYWxs
KAotICAgICAgICAgICAgICAgICAgICBzbG93Q2FzZXMsIHRoaXMsIG9wZXJhdGlvbkdldEJ5VmFs
T2JqZWN0SW50LAotICAgICAgICAgICAgICAgICAgICByZXN1bHQuZ3ByKCksIFRydXN0ZWRJbW1Q
dHI6OndlYWtQb2ludGVyKG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9y
aWdpbi5zZW1hbnRpYykpLCBiYXNlUmVnLCBwcm9wZXJ0eVJlZykpOwotICAgICAgICAgICAgCi0g
ICAgICAgICAgICBqc1ZhbHVlUmVzdWx0KHJlc3VsdFJlZywgbm9kZSk7CisgICAgICAgICAgICBp
ZiAobm9kZS0+YXJyYXlNb2RlKCkuaXNPdXRPZkJvdW5kc1NhbmVDaGFpbigpKSB7CisgICAgICAg
ICAgICAgICAgaWYgKHJlc3VsdElzVW5ib3hlZCkgeworICAgICAgICAgICAgICAgICAgICBhdXRv
IGRvbmUgPSBtX2ppdC5qdW1wKCk7CisgICAgICAgICAgICAgICAgICAgIHNsb3dDYXNlcy5saW5r
KCZtX2ppdCk7CisgICAgICAgICAgICAgICAgICAgIHNwZWN1bGF0aW9uQ2hlY2soTmVnYXRpdmVJ
bmRleCwgSlNWYWx1ZVJlZ3MoKSwgbnVsbHB0ciwgbV9qaXQuYnJhbmNoMzIoTWFjcm9Bc3NlbWJs
ZXI6Okxlc3NUaGFuLCBwcm9wZXJ0eVJlZywgQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tMzIoMCkp
KTsKKyAgICAgICAgICAgICAgICAgICAgc3RhdGljIGNvbnN0IGRvdWJsZSBOYU4gPSBQTmFOOwor
ICAgICAgICAgICAgICAgICAgICBtX2ppdC5sb2FkRG91YmxlKFRydXN0ZWRJbW1QdHIoJk5hTiks
IHRlbXBSZWcpOworICAgICAgICAgICAgICAgICAgICBkb25lLmxpbmsoJm1faml0KTsKKyAgICAg
ICAgICAgICAgICAgICAgZG91YmxlUmVzdWx0KHRlbXBSZWcsIG5vZGUpOworICAgICAgICAgICAg
ICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgICAgIHNsb3dDYXNlcy5hcHBlbmQobV9qaXQu
YnJhbmNoSWZOYU4odGVtcFJlZykpOworICAgICAgICAgICAgICAgICAgICBib3hEb3VibGUodGVt
cFJlZywgKnJlc3VsdFJlZyk7CisgICAgICAgICAgICAgICAgICAgIGF1dG8gZG9uZSA9IG1faml0
Lmp1bXAoKTsKKyAgICAgICAgICAgICAgICAgICAgc2xvd0Nhc2VzLmxpbmsoJm1faml0KTsKKyAg
ICAgICAgICAgICAgICAgICAgc3BlY3VsYXRpb25DaGVjayhOZWdhdGl2ZUluZGV4LCBKU1ZhbHVl
UmVncygpLCBudWxscHRyLCBtX2ppdC5icmFuY2gzMihNYWNyb0Fzc2VtYmxlcjo6TGVzc1RoYW4s
IHByb3BlcnR5UmVnLCBDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW0zMigwKSkpOworICAgICAgICAg
ICAgICAgICAgICBtX2ppdC5tb3ZlKENDYWxsSGVscGVyczo6VHJ1c3RlZEltbTY0KEpTVmFsdWU6
OmVuY29kZShqc1VuZGVmaW5lZCgpKSksICpyZXN1bHRSZWcpOworICAgICAgICAgICAgICAgICAg
ICBkb25lLmxpbmsoJm1faml0KTsKKyAgICAgICAgICAgICAgICAgICAganNWYWx1ZVJlc3VsdCgq
cmVzdWx0UmVnLCBub2RlKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9IGVsc2Ug
eworICAgICAgICAgICAgICAgIHNsb3dDYXNlcy5hcHBlbmQobV9qaXQuYnJhbmNoSWZOYU4odGVt
cFJlZykpOworICAgICAgICAgICAgICAgIGJveERvdWJsZSh0ZW1wUmVnLCAqcmVzdWx0UmVnKTsK
KyAgICAgICAgICAgICAgICBhZGRTbG93UGF0aEdlbmVyYXRvcigKKyAgICAgICAgICAgICAgICAg
ICAgc2xvd1BhdGhDYWxsKAorICAgICAgICAgICAgICAgICAgICAgICAgc2xvd0Nhc2VzLCB0aGlz
LCBvcGVyYXRpb25HZXRCeVZhbE9iamVjdEludCwKKyAgICAgICAgICAgICAgICAgICAgICAgICpy
ZXN1bHRSZWcsIFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1fZ3JhcGgsIG1fZ3JhcGguZ2xv
YmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBiYXNlUmVnLCBwcm9wZXJ0eVJl
ZykpOworICAgICAgICAgICAgICAgIGpzVmFsdWVSZXN1bHQoKnJlc3VsdFJlZywgbm9kZSk7Cisg
ICAgICAgICAgICB9CisKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAKSW5kZXg6IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwCShyZXZp
c2lvbiAyNjU2MzcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZl
SklULmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjQwOCw3ICsyNDA4LDcgQEAgdm9pZCBTcGVjdWxh
dGl2ZUpJVDo6Y29tcGlsZUdldEJ5VmFsT25TdAogCiAgICAgICAgIGlmIChnbG9iYWxPYmplY3Qt
PnN0cmluZ1Byb3RvdHlwZUNoYWluSXNTYW5lKCkpIHsKICAgICAgICAgICAgIC8vIEZJWE1FOiBU
aGlzIGNvdWxkIGJlIGNhcHR1cmVkIHVzaW5nIGEgU3BlY3VsYXRpb24gbW9kZSB0aGF0IG1lYW5z
ICJvdXQtb2YtYm91bmRzCi0gICAgICAgICAgICAvLyBsb2FkcyByZXR1cm4gYSB0cml2aWFsIHZh
bHVlIi4gU29tZXRoaW5nIGxpa2UgU2FuZUNoYWluT3V0T2ZCb3VuZHMuIFRoaXMgc2hvdWxkCisg
ICAgICAgICAgICAvLyBsb2FkcyByZXR1cm4gYSB0cml2aWFsIHZhbHVlIi4gU29tZXRoaW5nIGxp
a2UgT3V0T2ZCb3VuZHNTYW5lQ2hhaW4uIFRoaXMgc2hvdWxkCiAgICAgICAgICAgICAvLyBzcGVj
dWxhdGUgdGhhdCB3ZSBkb24ndCB0YWtlIG5lZ2F0aXZlIG91dC1vZi1ib3VuZHMsIG9yIGJldHRl
ciB5ZXQsIGl0IHNob3VsZCByZWx5CiAgICAgICAgICAgICAvLyBvbiBhIHN0cmluZ1Byb3RvdHlw
ZUNoYWluSXNTYW5lKCkgZ3VhcmFudGVlaW5nIHRoYXQgdGhlIHByb3RvdHlwZXMgaGF2ZSBubyBu
ZWdhdGl2ZQogICAgICAgICAgICAgLy8gaW5kZXhlZCBwcm9wZXJ0aWVzIGVpdGhlci4KQEAgLTE0
MTQ4LDcgKzE0MTQ4LDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUhhc0luZGV4ZWRQ
cgogICAgICAgICBtX2ppdC5sb2FkMzIoTWFjcm9Bc3NlbWJsZXI6OkJhc2VJbmRleChzdG9yYWdl
R1BSLCBpbmRleEdQUiwgTWFjcm9Bc3NlbWJsZXI6OlRpbWVzRWlnaHQsIE9CSkVDVF9PRkZTRVRP
RihKU1ZhbHVlLCB1LmFzQml0cy50YWcpKSwgc2NyYXRjaEdQUik7CiAjZW5kaWYKIAotICAgICAg
ICBpZiAobW9kZS5pc1NhbmVDaGFpbigpKSB7CisgICAgICAgIGlmIChtb2RlLmlzSW5Cb3VuZHNT
YW5lQ2hhaW4oKSkgewogICAgICAgICAgICAgbV9qaXQuaXNOb3RFbXB0eShzY3JhdGNoR1BSLCBy
ZXN1bHRHUFIpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KQEAgLTE0MTc3LDcgKzE0
MTc3LDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUhhc0luZGV4ZWRQcgogCiAgICAg
ICAgIG1faml0LmxvYWREb3VibGUoTWFjcm9Bc3NlbWJsZXI6OkJhc2VJbmRleChzdG9yYWdlR1BS
LCBpbmRleEdQUiwgTWFjcm9Bc3NlbWJsZXI6OlRpbWVzRWlnaHQpLCBzY3JhdGNoRlBSKTsKIAot
ICAgICAgICBpZiAobW9kZS5pc1NhbmVDaGFpbigpKSB7CisgICAgICAgIGlmIChtb2RlLmlzSW5C
b3VuZHNTYW5lQ2hhaW4oKSkgewogICAgICAgICAgICAgbV9qaXQuY29tcGFyZURvdWJsZShNYWNy
b0Fzc2VtYmxlcjo6RG91YmxlRXF1YWxBbmRPcmRlcmVkLCBzY3JhdGNoRlBSLCBzY3JhdGNoRlBS
LCByZXN1bHRHUFIpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KQEAgLTE0MjEwLDEz
ICsxNDIxMCwxMyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlSGFzSW5kZXhlZFByCiAg
ICAgICAgIG1faml0LmxvYWQzMihNYWNyb0Fzc2VtYmxlcjo6QmFzZUluZGV4KHN0b3JhZ2VHUFIs
IGluZGV4R1BSLCBNYWNyb0Fzc2VtYmxlcjo6VGltZXNFaWdodCwgQXJyYXlTdG9yYWdlOjp2ZWN0
b3JPZmZzZXQoKSArIE9CSkVDVF9PRkZTRVRPRihKU1ZhbHVlLCB1LmFzQml0cy50YWcpKSwgc2Ny
YXRjaEdQUik7CiAjZW5kaWYKIAotICAgICAgICBpZiAobW9kZS5pc1NhbmVDaGFpbigpKSB7Cisg
ICAgICAgIGlmIChtb2RlLmlzSW5Cb3VuZHNTYW5lQ2hhaW4oKSkgewogICAgICAgICAgICAgbV9q
aXQuaXNOb3RFbXB0eShzY3JhdGNoR1BSLCByZXN1bHRHUFIpOwogICAgICAgICAgICAgYnJlYWs7
CiAgICAgICAgIH0KIAogICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6SnVtcCBpc0hvbGUgPSBtX2pp
dC5icmFuY2hJZkVtcHR5KHNjcmF0Y2hHUFIpOwotICAgICAgICBpZiAoIW1vZGUuaXNJbkJvdW5k
cygpIHx8IG1vZGUuaXNTYW5lQ2hhaW4oKSkKKyAgICAgICAgaWYgKCFtb2RlLmlzSW5Cb3VuZHMo
KSB8fCBtb2RlLmlzSW5Cb3VuZHNTYW5lQ2hhaW4oKSkKICAgICAgICAgICAgIHNsb3dDYXNlcy5h
cHBlbmQoaXNIb2xlKTsKICAgICAgICAgZWxzZQogICAgICAgICAgICAgc3BlY3VsYXRpb25DaGVj
ayhMb2FkRnJvbUhvbGUsIEpTVmFsdWVSZWdzKCksIG51bGxwdHIsIGlzSG9sZSk7CkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1ZhbGlkYXRlLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1ZhbGlkYXRlLmNwcAkocmV2aXNpb24gMjY1NjM3
KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdWYWxpZGF0ZS5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTM3Niw2ICszNzYsMjAgQEAgcHVibGljOgogICAgICAgICAgICAgICAgIGNhc2Ug
TmV3QXJyYXlCdWZmZXI6CiAgICAgICAgICAgICAgICAgICAgIFZBTElEQVRFKChub2RlKSwgbm9k
ZS0+dmVjdG9yTGVuZ3RoSGludCgpID49IG5vZGUtPmNhc3RPcGVyYW5kPEpTSW1tdXRhYmxlQnV0
dGVyZmx5Kj4oKS0+bGVuZ3RoKCkpOwogICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAg
ICAgICAgICAgICBjYXNlIEdldEJ5VmFsOgorICAgICAgICAgICAgICAgICAgICBzd2l0Y2ggKG5v
ZGUtPmFycmF5TW9kZSgpLnR5cGUoKSkgeworICAgICAgICAgICAgICAgICAgICBjYXNlIEFycmF5
OjpJbnQzMjoKKyAgICAgICAgICAgICAgICAgICAgY2FzZSBBcnJheTo6RG91YmxlOgorICAgICAg
ICAgICAgICAgICAgICBjYXNlIEFycmF5OjpDb250aWd1b3VzOgorICAgICAgICAgICAgICAgICAg
ICAgICAgLy8gV2UgcmVseSBvbiBiZWluZyBhbiBvcmlnaW5hbCBhcnJheSBzdHJ1Y3R1cmUgYmVj
YXVzZSB3ZSBhcmUgU2FuZUNoYWluLCBhbmQgd2UgbmVlZCAKKyAgICAgICAgICAgICAgICAgICAg
ICAgIC8vIEFycmF5LnByb3RvdHlwZSB0byBiZSBvdXIgcHJvdG90eXBlLCBzbyB3ZSBjYW4gcmV0
dXJuIHVuZGVmaW5lZCB3aGVuIHdlIGdvIE9PQi4KKyAgICAgICAgICAgICAgICAgICAgICAgIGlm
IChub2RlLT5hcnJheU1vZGUoKS5pc091dE9mQm91bmRzU2FuZUNoYWluKCkpCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgVkFMSURBVEUoKG5vZGUpLCBub2RlLT5hcnJheU1vZGUoKS5pc0pT
QXJyYXlXaXRoT3JpZ2luYWxTdHJ1Y3R1cmUoKSk7CisgICAgICAgICAgICAgICAgICAgICAgICBi
cmVhazsKKyAgICAgICAgICAgICAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgICAgICAgICAg
ICAgIGJyZWFrOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIGJy
ZWFrOwogICAgICAgICAgICAgICAgIGRlZmF1bHQ6CiAgICAgICAgICAgICAgICAgICAgIGJyZWFr
OwogICAgICAgICAgICAgICAgIH0KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRM
TG93ZXJERkdUb0IzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRs
L0ZUTExvd2VyREZHVG9CMy5jcHAJKHJldmlzaW9uIDI2NTYzNykKKysrIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9mdGwvRlRMTG93ZXJERkdUb0IzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDYzMiw3
ICs0NjMyLDcgQEAgcHJpdmF0ZToKICAgICAgICAgICAgIGlmIChtX25vZGUtPmFycmF5TW9kZSgp
LmlzSW5Cb3VuZHMoKSkgewogICAgICAgICAgICAgICAgIExWYWx1ZSByZXN1bHQgPSBtX291dC5s
b2FkNjQoYmFzZUluZGV4KGhlYXAsIHN0b3JhZ2UsIGluZGV4LCBtX2dyYXBoLnZhckFyZ0NoaWxk
KG1fbm9kZSwgMSkpKTsKICAgICAgICAgICAgICAgICBMVmFsdWUgaXNIb2xlID0gbV9vdXQuaXNa
ZXJvNjQocmVzdWx0KTsKLSAgICAgICAgICAgICAgICBpZiAobV9ub2RlLT5hcnJheU1vZGUoKS5p
c1NhbmVDaGFpbigpKSB7CisgICAgICAgICAgICAgICAgaWYgKG1fbm9kZS0+YXJyYXlNb2RlKCku
aXNJbkJvdW5kc1NhbmVDaGFpbigpKSB7CiAgICAgICAgICAgICAgICAgICAgIERGR19BU1NFUlQo
CiAgICAgICAgICAgICAgICAgICAgICAgICBtX2dyYXBoLCBtX25vZGUsIG1fbm9kZS0+YXJyYXlN
b2RlKCkudHlwZSgpID09IEFycmF5OjpDb250aWd1b3VzLCBtX25vZGUtPmFycmF5TW9kZSgpLnR5
cGUoKSk7CiAgICAgICAgICAgICAgICAgICAgIHJlc3VsdCA9IG1fb3V0LnNlbGVjdCgKQEAgLTQ2
NDUsNyArNDY0NSw3IEBAIHByaXZhdGU6CiAgICAgICAgICAgICAgICAgc2V0SlNWYWx1ZShyZXN1
bHQpOwogICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgIH0KLSAgICAgICAgICAg
IAorCiAgICAgICAgICAgICBMQmFzaWNCbG9jayBmYXN0Q2FzZSA9IG1fb3V0Lm5ld0Jsb2NrKCk7
CiAgICAgICAgICAgICBMQmFzaWNCbG9jayBzbG93Q2FzZSA9IG1fb3V0Lm5ld0Jsb2NrKCk7CiAg
ICAgICAgICAgICBMQmFzaWNCbG9jayBjb250aW51YXRpb24gPSBtX291dC5uZXdCbG9jaygpOwpA
QCAtNDY2Myw3ICs0NjYzLDEyIEBAIHByaXZhdGU6CiAgICAgICAgICAgICAgICAgbV9vdXQuaXNa
ZXJvNjQoZmFzdFJlc3VsdFZhbHVlKSwgcmFyZWx5KHNsb3dDYXNlKSwgdXN1YWxseShjb250aW51
YXRpb24pKTsKICAgICAgICAgICAgIAogICAgICAgICAgICAgbV9vdXQuYXBwZW5kVG8oc2xvd0Nh
c2UsIGNvbnRpbnVhdGlvbik7Ci0gICAgICAgICAgICBWYWx1ZUZyb21CbG9jayBzbG93UmVzdWx0
ID0gbV9vdXQuYW5jaG9yKHZtQ2FsbChJbnQ2NCwgb3BlcmF0aW9uR2V0QnlWYWxPYmplY3RJbnQs
IHdlYWtQb2ludGVyKGdsb2JhbE9iamVjdCksIGJhc2UsIGluZGV4KSk7CisgICAgICAgICAgICBW
YWx1ZUZyb21CbG9jayBzbG93UmVzdWx0OworICAgICAgICAgICAgaWYgKG1fbm9kZS0+YXJyYXlN
b2RlKCkuaXNPdXRPZkJvdW5kc1NhbmVDaGFpbigpKSB7CisgICAgICAgICAgICAgICAgc3BlY3Vs
YXRlKE5lZ2F0aXZlSW5kZXgsIG5vVmFsdWUoKSwgbnVsbHB0ciwgbV9vdXQubGVzc1RoYW4oaW5k
ZXgsIG1fb3V0LmludDMyWmVybykpOworICAgICAgICAgICAgICAgIHNsb3dSZXN1bHQgPSBtX291
dC5hbmNob3IobV9vdXQuY29uc3RJbnQ2NChKU1ZhbHVlOjpWYWx1ZVVuZGVmaW5lZCkpOworICAg
ICAgICAgICAgfSBlbHNlCisgICAgICAgICAgICAgICAgc2xvd1Jlc3VsdCA9IG1fb3V0LmFuY2hv
cih2bUNhbGwoSW50NjQsIG9wZXJhdGlvbkdldEJ5VmFsT2JqZWN0SW50LCB3ZWFrUG9pbnRlcihn
bG9iYWxPYmplY3QpLCBiYXNlLCBpbmRleCkpOwogICAgICAgICAgICAgbV9vdXQuanVtcChjb250
aW51YXRpb24pOwogICAgICAgICAgICAgCiAgICAgICAgICAgICBtX291dC5hcHBlbmRUbyhjb250
aW51YXRpb24sIGxhc3ROZXh0KTsKQEAgLTQ2ODUsNyArNDY5MCw3IEBAIHByaXZhdGU6CiAgICAg
ICAgICAgICAgICAgTFZhbHVlIHJlc3VsdCA9IG1fb3V0LmxvYWREb3VibGUoCiAgICAgICAgICAg
ICAgICAgICAgIGJhc2VJbmRleChoZWFwLCBzdG9yYWdlLCBpbmRleCwgbV9ncmFwaC52YXJBcmdD
aGlsZChtX25vZGUsIDEpKSk7CiAgICAgICAgICAgICAgICAgCi0gICAgICAgICAgICAgICAgaWYg
KCFtX25vZGUtPmFycmF5TW9kZSgpLmlzU2FuZUNoYWluKCkpIHsKKyAgICAgICAgICAgICAgICBp
ZiAoIW1fbm9kZS0+YXJyYXlNb2RlKCkuaXNJbkJvdW5kc1NhbmVDaGFpbigpKSB7CiAgICAgICAg
ICAgICAgICAgICAgIHNwZWN1bGF0ZSgKICAgICAgICAgICAgICAgICAgICAgICAgIExvYWRGcm9t
SG9sZSwgbm9WYWx1ZSgpLCBudWxscHRyLAogICAgICAgICAgICAgICAgICAgICAgICAgbV9vdXQu
ZG91YmxlTm90RXF1YWxPclVub3JkZXJlZChyZXN1bHQsIHJlc3VsdCkpOwpAQCAtNDY5NCw2ICs0
Njk5LDggQEAgcHJpdmF0ZToKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIH0K
IAorICAgICAgICAgICAgYm9vbCByZXN1bHRJc1VuYm94ZWQgPSBtX25vZGUtPmFycmF5TW9kZSgp
LmlzT3V0T2ZCb3VuZHNTYW5lQ2hhaW4oKSAmJiAhKG1fbm9kZS0+ZmxhZ3MoKSAmIE5vZGVCeXRl
Y29kZVVzZXNBc090aGVyKTsKKwogICAgICAgICAgICAgTEJhc2ljQmxvY2sgaW5Cb3VuZHMgPSBt
X291dC5uZXdCbG9jaygpOwogICAgICAgICAgICAgTEJhc2ljQmxvY2sgYm94UGF0aCA9IG1fb3V0
Lm5ld0Jsb2NrKCk7CiAgICAgICAgICAgICBMQmFzaWNCbG9jayBzbG93Q2FzZSA9IG1fb3V0Lm5l
d0Jsb2NrKCk7CkBAIC00NzEyLDE1ICs0NzE5LDI2IEBAIHByaXZhdGU6CiAgICAgICAgICAgICAg
ICAgcmFyZWx5KHNsb3dDYXNlKSwgdXN1YWxseShib3hQYXRoKSk7CiAgICAgICAgICAgICAKICAg
ICAgICAgICAgIG1fb3V0LmFwcGVuZFRvKGJveFBhdGgsIHNsb3dDYXNlKTsKLSAgICAgICAgICAg
IFZhbHVlRnJvbUJsb2NrIGZhc3RSZXN1bHQgPSBtX291dC5hbmNob3IoYm94RG91YmxlKGRvdWJs
ZVZhbHVlKSk7CisgICAgICAgICAgICBWYWx1ZUZyb21CbG9jayBmYXN0UmVzdWx0ID0gbV9vdXQu
YW5jaG9yKHJlc3VsdElzVW5ib3hlZCA/IGRvdWJsZVZhbHVlIDogYm94RG91YmxlKGRvdWJsZVZh
bHVlKSk7CiAgICAgICAgICAgICBtX291dC5qdW1wKGNvbnRpbnVhdGlvbik7CiAgICAgICAgICAg
ICAKICAgICAgICAgICAgIG1fb3V0LmFwcGVuZFRvKHNsb3dDYXNlLCBjb250aW51YXRpb24pOwot
ICAgICAgICAgICAgVmFsdWVGcm9tQmxvY2sgc2xvd1Jlc3VsdCA9IG1fb3V0LmFuY2hvcih2bUNh
bGwoSW50NjQsIG9wZXJhdGlvbkdldEJ5VmFsT2JqZWN0SW50LCB3ZWFrUG9pbnRlcihnbG9iYWxP
YmplY3QpLCBiYXNlLCBpbmRleCkpOworICAgICAgICAgICAgVmFsdWVGcm9tQmxvY2sgc2xvd1Jl
c3VsdDsKKyAgICAgICAgICAgIGlmIChtX25vZGUtPmFycmF5TW9kZSgpLmlzT3V0T2ZCb3VuZHNT
YW5lQ2hhaW4oKSkgeworICAgICAgICAgICAgICAgIHNwZWN1bGF0ZShOZWdhdGl2ZUluZGV4LCBu
b1ZhbHVlKCksIG51bGxwdHIsIG1fb3V0Lmxlc3NUaGFuKGluZGV4LCBtX291dC5pbnQzMlplcm8p
KTsKKyAgICAgICAgICAgICAgICBpZiAocmVzdWx0SXNVbmJveGVkKQorICAgICAgICAgICAgICAg
ICAgICBzbG93UmVzdWx0ID0gbV9vdXQuYW5jaG9yKG1fb3V0LmNvbnN0RG91YmxlKFBOYU4pKTsK
KyAgICAgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgICAgIHNsb3dSZXN1bHQgPSBt
X291dC5hbmNob3IobV9vdXQuY29uc3RJbnQ2NChKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQo
KSkpKTsKKyAgICAgICAgICAgIH0gZWxzZQorICAgICAgICAgICAgICAgIHNsb3dSZXN1bHQgPSBt
X291dC5hbmNob3Iodm1DYWxsKEludDY0LCBvcGVyYXRpb25HZXRCeVZhbE9iamVjdEludCwgd2Vh
a1BvaW50ZXIoZ2xvYmFsT2JqZWN0KSwgYmFzZSwgaW5kZXgpKTsKICAgICAgICAgICAgIG1fb3V0
Lmp1bXAoY29udGludWF0aW9uKTsKICAgICAgICAgICAgIAogICAgICAgICAgICAgbV9vdXQuYXBw
ZW5kVG8oY29udGludWF0aW9uLCBsYXN0TmV4dCk7Ci0gICAgICAgICAgICBzZXRKU1ZhbHVlKG1f
b3V0LnBoaShJbnQ2NCwgZmFzdFJlc3VsdCwgc2xvd1Jlc3VsdCkpOworICAgICAgICAgICAgaWYg
KHJlc3VsdElzVW5ib3hlZCkKKyAgICAgICAgICAgICAgICBzZXREb3VibGUobV9vdXQucGhpKERv
dWJsZSwgZmFzdFJlc3VsdCwgc2xvd1Jlc3VsdCkpOworICAgICAgICAgICAgZWxzZQorICAgICAg
ICAgICAgICAgIHNldEpTVmFsdWUobV9vdXQucGhpKEludDY0LCBmYXN0UmVzdWx0LCBzbG93UmVz
dWx0KSk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KIApAQCAtODEzNSw3ICs4MTUz
LDcgQEAgcHJpdmF0ZToKICAgICAgICAgICAgIGlmIChnbG9iYWxPYmplY3QtPnN0cmluZ1Byb3Rv
dHlwZUNoYWluSXNTYW5lKCkpIHsKICAgICAgICAgICAgICAgICAvLyBGSVhNRTogVGhpcyBjb3Vs
ZCBiZSBjYXB0dXJlZCB1c2luZyBhIFNwZWN1bGF0aW9uIG1vZGUgdGhhdCBtZWFucwogICAgICAg
ICAgICAgICAgIC8vICJvdXQtb2YtYm91bmRzIGxvYWRzIHJldHVybiBhIHRyaXZpYWwgdmFsdWUi
LCBzb21ldGhpbmcgbGlrZQotICAgICAgICAgICAgICAgIC8vIFNhbmVDaGFpbk91dE9mQm91bmRz
LgorICAgICAgICAgICAgICAgIC8vIE91dE9mQm91bmRzU2FuZUNoYWluLgogICAgICAgICAgICAg
ICAgIC8vIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNDQ2NjgKICAg
ICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICBtX2dyYXBoLnJlZ2lzdGVyQW5kV2F0Y2hT
dHJ1Y3R1cmVUcmFuc2l0aW9uKHN0cmluZ1Byb3RvdHlwZVN0cnVjdHVyZSk7CkBAIC0xMjIyMCw3
ICsxMjIzOCw3IEBAIHByaXZhdGU6CiAgICAgICAgICAgICBMVmFsdWUgY2hlY2tIb2xlUmVzdWx0
VmFsdWUgPQogICAgICAgICAgICAgICAgIG1fb3V0Lm5vdFplcm82NChtX291dC5sb2FkNjQoYmFz
ZUluZGV4KGhlYXAsIHN0b3JhZ2UsIGluZGV4LCBtX2dyYXBoLnZhckFyZ0NoaWxkKG1fbm9kZSwg
MSkpKSk7CiAgICAgICAgICAgICBWYWx1ZUZyb21CbG9jayBjaGVja0hvbGVSZXN1bHQgPSBtX291
dC5hbmNob3IoY2hlY2tIb2xlUmVzdWx0VmFsdWUpOwotICAgICAgICAgICAgaWYgKG1vZGUuaXNT
YW5lQ2hhaW4oKSkKKyAgICAgICAgICAgIGlmIChtb2RlLmlzSW5Cb3VuZHNTYW5lQ2hhaW4oKSkK
ICAgICAgICAgICAgICAgICBtX291dC5qdW1wKGNvbnRpbnVhdGlvbik7CiAgICAgICAgICAgICBl
bHNlIGlmICghbW9kZS5pc0luQm91bmRzKCkpCiAgICAgICAgICAgICAgICAgbV9vdXQuYnJhbmNo
KGNoZWNrSG9sZVJlc3VsdFZhbHVlLCB1c3VhbGx5KGNvbnRpbnVhdGlvbiksIHJhcmVseShzbG93
Q2FzZSkpOwpAQCAtMTIyNTksNyArMTIyNzcsNyBAQCBwcml2YXRlOgogICAgICAgICAgICAgTFZh
bHVlIGRvdWJsZVZhbHVlID0gbV9vdXQubG9hZERvdWJsZShiYXNlSW5kZXgoaGVhcCwgc3RvcmFn
ZSwgaW5kZXgsIG1fZ3JhcGgudmFyQXJnQ2hpbGQobV9ub2RlLCAxKSkpOwogICAgICAgICAgICAg
TFZhbHVlIGNoZWNrSG9sZVJlc3VsdFZhbHVlID0gbV9vdXQuZG91YmxlRXF1YWwoZG91YmxlVmFs
dWUsIGRvdWJsZVZhbHVlKTsKICAgICAgICAgICAgIFZhbHVlRnJvbUJsb2NrIGNoZWNrSG9sZVJl
c3VsdCA9IG1fb3V0LmFuY2hvcihjaGVja0hvbGVSZXN1bHRWYWx1ZSk7Ci0gICAgICAgICAgICBp
ZiAobW9kZS5pc1NhbmVDaGFpbigpKQorICAgICAgICAgICAgaWYgKG1vZGUuaXNJbkJvdW5kc1Nh
bmVDaGFpbigpKQogICAgICAgICAgICAgICAgIG1fb3V0Lmp1bXAoY29udGludWF0aW9uKTsKICAg
ICAgICAgICAgIGVsc2UgaWYgKCFtb2RlLmlzSW5Cb3VuZHMoKSkKICAgICAgICAgICAgICAgICBt
X291dC5icmFuY2goY2hlY2tIb2xlUmVzdWx0VmFsdWUsIHVzdWFsbHkoY29udGludWF0aW9uKSwg
cmFyZWx5KHNsb3dDYXNlKSk7CkBAIC0xMjI5Nyw3ICsxMjMxNSw3IEBAIHByaXZhdGU6CiAgICAg
ICAgICAgICBMVmFsdWUgY2hlY2tIb2xlUmVzdWx0VmFsdWUgPQogICAgICAgICAgICAgICAgIG1f
b3V0Lm5vdFplcm82NChtX291dC5sb2FkNjQoYmFzZUluZGV4KG1faGVhcHMuQXJyYXlTdG9yYWdl
X3ZlY3Rvciwgc3RvcmFnZSwgaW5kZXgsIG1fZ3JhcGgudmFyQXJnQ2hpbGQobV9ub2RlLCAxKSkp
KTsKICAgICAgICAgICAgIFZhbHVlRnJvbUJsb2NrIGNoZWNrSG9sZVJlc3VsdCA9IG1fb3V0LmFu
Y2hvcihjaGVja0hvbGVSZXN1bHRWYWx1ZSk7Ci0gICAgICAgICAgICBpZiAobW9kZS5pc1NhbmVD
aGFpbigpKQorICAgICAgICAgICAgaWYgKG1vZGUuaXNJbkJvdW5kc1NhbmVDaGFpbigpKQogICAg
ICAgICAgICAgICAgIG1fb3V0Lmp1bXAoY29udGludWF0aW9uKTsKICAgICAgICAgICAgIGVsc2Ug
aWYgKCFtb2RlLmlzSW5Cb3VuZHMoKSkKICAgICAgICAgICAgICAgICBtX291dC5icmFuY2goY2hl
Y2tIb2xlUmVzdWx0VmFsdWUsIHVzdWFsbHkoY29udGludWF0aW9uKSwgcmFyZWx5KHNsb3dDYXNl
KSk7Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>