<?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>162692</bug_id>
          
          <creation_ts>2016-09-28 10:54:08 -0700</creation_ts>
          <short_desc>B3 opcodes should leave room for flags</short_desc>
          <delta_ts>2016-09-29 11:47:50 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>JavaScriptCore</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          <see_also>https://bugs.webkit.org/show_bug.cgi?id=162699</see_also>
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>162689</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Filip Pizlo">fpizlo</reporter>
          <assigned_to name="Filip Pizlo">fpizlo</assigned_to>
          <cc>commit-queue</cc>
    
    <cc>keith_miller</cc>
    
    <cc>mark.lam</cc>
    
    <cc>msaboff</cc>
    
    <cc>saam</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1234453</commentid>
    <comment_count>0</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2016-09-28 10:54:08 -0700</bug_when>
    <thetext>We want to be able to express variants of opcodes using some meta-data in the opcode itself.  This is great in B3 because then this meta-data could become part of the accepts() logic for dynamic casting Values.  This is great in Air because then we don&apos;t have to add more fields to Inst - the opcode field would simply expand to tell us this extra information, leading to hopefully a cleaner overall design.  For example a &quot;trapping&quot; flag is not meaningful for every opcode, so we don&apos;t want a trapping bit in Inst; we want a smart Opcode-like class that will reveal a trapping flag exactly when the opcode makes it meaningful, and intelligently reuses those bits for other things for opcodes that don&apos;t care about trapping but maybe care about other things.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1234473</commentid>
    <comment_count>1</comment_count>
      <attachid>290105</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2016-09-28 11:55:09 -0700</bug_when>
    <thetext>Created attachment 290105
turning chill into a kind bit

This is fun!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1234516</commentid>
    <comment_count>2</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2016-09-28 13:24:33 -0700</bug_when>
    <thetext>I&apos;m not convinced that Air should use the same Kind-based thing as B3.  Maybe Air should just have an extra flags field in Inst.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1234560</commentid>
    <comment_count>3</comment_count>
      <attachid>290123</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2016-09-28 14:41:58 -0700</bug_when>
    <thetext>Created attachment 290123
more</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1234665</commentid>
    <comment_count>4</comment_count>
      <attachid>290162</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2016-09-28 19:22:43 -0700</bug_when>
    <thetext>Created attachment 290162
the patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1234666</commentid>
    <comment_count>5</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-09-28 19:23:57 -0700</bug_when>
    <thetext>Attachment 290162 did not pass style-queue:


ERROR: Source/JavaScriptCore/b3/B3Value.h:424:  Wrong number of spaces before statement. (expected: 12)  [whitespace/indent] [4]
ERROR: Source/JavaScriptCore/b3/B3Value.h:430:  Wrong number of spaces before statement. (expected: 12)  [whitespace/indent] [4]
ERROR: Source/JavaScriptCore/b3/B3Value.h:436:  Wrong number of spaces before statement. (expected: 12)  [whitespace/indent] [4]
ERROR: Source/JavaScriptCore/b3/B3Value.h:442:  Wrong number of spaces before statement. (expected: 12)  [whitespace/indent] [4]
ERROR: Source/JavaScriptCore/b3/B3Value.h:448:  Wrong number of spaces before statement. (expected: 12)  [whitespace/indent] [4]
ERROR: Source/JavaScriptCore/b3/B3ValueKey.h:63:  The parameter name &quot;a&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Total errors found: 6 in 36 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1234701</commentid>
    <comment_count>6</comment_count>
      <attachid>290176</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2016-09-28 21:36:18 -0700</bug_when>
    <thetext>Created attachment 290176
the patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1234702</commentid>
    <comment_count>7</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-09-28 21:37:55 -0700</bug_when>
    <thetext>Attachment 290176 did not pass style-queue:


ERROR: Source/JavaScriptCore/b3/B3Value.h:424:  Wrong number of spaces before statement. (expected: 12)  [whitespace/indent] [4]
ERROR: Source/JavaScriptCore/b3/B3Value.h:430:  Wrong number of spaces before statement. (expected: 12)  [whitespace/indent] [4]
ERROR: Source/JavaScriptCore/b3/B3Value.h:436:  Wrong number of spaces before statement. (expected: 12)  [whitespace/indent] [4]
ERROR: Source/JavaScriptCore/b3/B3Value.h:442:  Wrong number of spaces before statement. (expected: 12)  [whitespace/indent] [4]
ERROR: Source/JavaScriptCore/b3/B3Value.h:448:  Wrong number of spaces before statement. (expected: 12)  [whitespace/indent] [4]
ERROR: Source/JavaScriptCore/b3/B3ValueKey.h:63:  The parameter name &quot;a&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Total errors found: 6 in 38 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1234711</commentid>
    <comment_count>8</comment_count>
      <attachid>290176</attachid>
    <who name="Keith Miller">keith_miller</who>
    <bug_when>2016-09-28 22:09:22 -0700</bug_when>
    <thetext>Comment on attachment 290176
the patch

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

r- for now until my question is answered.

&gt; Source/JavaScriptCore/ChangeLog:30
&gt; +        are only interested in the kind of arithmetic being done and not the chillness.

Is chillness the technical term? :)

&gt; Source/JavaScriptCore/ChangeLog:53
&gt; +        This change addresses this problem by making the compiler pass around Kinds rather than
&gt; +        Opcodes. A Kind contains an Opcode as well as any number of opcode-specific bits. This
&gt; +        change demonstrates how Kind should be used by converting chillness to it. Kind has
&gt; +        hasIsChill(), isChill(), and setIsChill() methods. hasIsChill() is true only for Div and
&gt; +        Mod. setIsChill() asserts if !hasIsChill(). If you want to create a Chill Div, you say
&gt; +        chill(Div). IR dumps will print it like this:

I feel like one downside to this API is that it can be hard to figure out which bits are supported by which opcodes. This is one of the most annoying things about the DFG, where one has no idea how many Edges or OpInfos a node has and even if you do its super hard to figure out what those Edges/OpInfos do. While I like that they are named here rather than the DFG system of trying to guess what child3() is, I&apos;m wondering if it might be better if there was a struct for each opcode that told you what the bits for that opcode are. Essentially, making Kinds more like an ADT. What do you think the pros and cons are?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1234714</commentid>
    <comment_count>9</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2016-09-28 22:22:22 -0700</bug_when>
    <thetext>(In reply to comment #8)
&gt; Comment on attachment 290176 [details]
&gt; the patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=290176&amp;action=review
&gt; 
&gt; r- for now until my question is answered.
&gt; 
&gt; &gt; Source/JavaScriptCore/ChangeLog:30
&gt; &gt; +        are only interested in the kind of arithmetic being done and not the chillness.
&gt; 
&gt; Is chillness the technical term? :)

It&apos;s become one.  It struck enough of a chord that it&apos;s referred to in wasm meetings.

&gt; 
&gt; &gt; Source/JavaScriptCore/ChangeLog:53
&gt; &gt; +        This change addresses this problem by making the compiler pass around Kinds rather than
&gt; &gt; +        Opcodes. A Kind contains an Opcode as well as any number of opcode-specific bits. This
&gt; &gt; +        change demonstrates how Kind should be used by converting chillness to it. Kind has
&gt; &gt; +        hasIsChill(), isChill(), and setIsChill() methods. hasIsChill() is true only for Div and
&gt; &gt; +        Mod. setIsChill() asserts if !hasIsChill(). If you want to create a Chill Div, you say
&gt; &gt; +        chill(Div). IR dumps will print it like this:
&gt; 
&gt; I feel like one downside to this API is that it can be hard to figure out
&gt; which bits are supported by which opcodes. 

The bit&apos;s hasBlah() method will tell you.

&gt; This is one of the most annoying
&gt; things about the DFG, where one has no idea how many Edges or OpInfos a node
&gt; has and even if you do its super hard to figure out what those Edges/OpInfos
&gt; do. While I like that they are named here rather than the DFG system of
&gt; trying to guess what child3() is, I&apos;m wondering if it might be better if
&gt; there was a struct for each opcode that told you what the bits for that
&gt; opcode are. Essentially, making Kinds more like an ADT. What do you think
&gt; the pros and cons are?

Can you be a lot more detailed about what you&apos;re proposing?

This is radically different than DFG children, which are numbered and not checked at all.  It&apos;s also not like DFG&apos;s OpInfo&apos;s, which are not checked during Node creation (though like Kind&apos;s members, they are checked on access). I&apos;m a strong proponent of Kind-style dynamic yet fixed-size objects, and they are widespread in B3 already.  ValueKey, ValueRep, and Air::Arg are three examples that immediately come to mind.  There are many more such things throughout JSC.  So, if that is a style you object to, then I think it&apos;s not fair to apply this objection just to this patch.  This patch uses a common JSC idiom.

To be clear, Kind has to be one fixed-size type.  We can&apos;t have subclasses of Kind.  B3::Value has a m_kind field and it uses this field as the type ID for determining which Value subclass you are.  That&apos;s how B3&apos;s dynamic casts work.  So, it&apos;s very important that Kind itself doesn&apos;t require a type hierarchy, since that would require a level of meta-circularity that I don&apos;t want to have to think about.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1234857</commentid>
    <comment_count>10</comment_count>
      <attachid>290176</attachid>
    <who name="Keith Miller">keith_miller</who>
    <bug_when>2016-09-29 10:48:38 -0700</bug_when>
    <thetext>Comment on attachment 290176
the patch

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

After online discussion I&apos;m withdrawing my previous objection since I think it&apos;s not mutually exclusive to the current API. 

So, r=me with a comment.

&gt; Source/JavaScriptCore/b3/B3Kind.h:150
&gt; +    bool operator&lt;(const Kind&amp; other) const
&gt; +    {
&gt; +        if (m_opcode == other.m_opcode)
&gt; +            return u.bits &lt; other.u.bits;
&gt; +        return m_opcode &lt; other.m_opcode;
&gt; +    }
&gt; +    
&gt; +    bool operator&gt;(const Kind&amp; other) const
&gt; +    {
&gt; +        return other &lt; *this;
&gt; +    }
&gt; +    
&gt; +    bool operator&lt;=(const Kind&amp; other) const
&gt; +    {
&gt; +        return !(*this &gt; other);
&gt; +    }
&gt; +    
&gt; +    bool operator&gt;=(const Kind&amp; other) const
&gt; +    {
&gt; +        return !(*this &lt; other);
&gt; +    }

What are these used for. If they aren&apos;t used maybe we should delete them?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1234860</commentid>
    <comment_count>11</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2016-09-29 10:52:12 -0700</bug_when>
    <thetext>(In reply to comment #10)
&gt; Comment on attachment 290176 [details]
&gt; the patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=290176&amp;action=review
&gt; 
&gt; After online discussion I&apos;m withdrawing my previous objection since I think
&gt; it&apos;s not mutually exclusive to the current API. 
&gt; 
&gt; So, r=me with a comment.
&gt; 
&gt; &gt; Source/JavaScriptCore/b3/B3Kind.h:150
&gt; &gt; +    bool operator&lt;(const Kind&amp; other) const
&gt; &gt; +    {
&gt; &gt; +        if (m_opcode == other.m_opcode)
&gt; &gt; +            return u.bits &lt; other.u.bits;
&gt; &gt; +        return m_opcode &lt; other.m_opcode;
&gt; &gt; +    }
&gt; &gt; +    
&gt; &gt; +    bool operator&gt;(const Kind&amp; other) const
&gt; &gt; +    {
&gt; &gt; +        return other &lt; *this;
&gt; &gt; +    }
&gt; &gt; +    
&gt; &gt; +    bool operator&lt;=(const Kind&amp; other) const
&gt; &gt; +    {
&gt; &gt; +        return !(*this &gt; other);
&gt; &gt; +    }
&gt; &gt; +    
&gt; &gt; +    bool operator&gt;=(const Kind&amp; other) const
&gt; &gt; +    {
&gt; &gt; +        return !(*this &lt; other);
&gt; &gt; +    }
&gt; 
&gt; What are these used for. If they aren&apos;t used maybe we should delete them?

I want it to be easy to sort on kind, just like you can sort on opcode.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1234862</commentid>
    <comment_count>12</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2016-09-29 10:55:32 -0700</bug_when>
    <thetext>(In reply to comment #11)
&gt; (In reply to comment #10)
&gt; &gt; Comment on attachment 290176 [details]
&gt; &gt; the patch
&gt; &gt; 
&gt; &gt; View in context:
&gt; &gt; https://bugs.webkit.org/attachment.cgi?id=290176&amp;action=review
&gt; &gt; 
&gt; &gt; After online discussion I&apos;m withdrawing my previous objection since I think
&gt; &gt; it&apos;s not mutually exclusive to the current API. 
&gt; &gt; 
&gt; &gt; So, r=me with a comment.
&gt; &gt; 
&gt; &gt; &gt; Source/JavaScriptCore/b3/B3Kind.h:150
&gt; &gt; &gt; +    bool operator&lt;(const Kind&amp; other) const
&gt; &gt; &gt; +    {
&gt; &gt; &gt; +        if (m_opcode == other.m_opcode)
&gt; &gt; &gt; +            return u.bits &lt; other.u.bits;
&gt; &gt; &gt; +        return m_opcode &lt; other.m_opcode;
&gt; &gt; &gt; +    }
&gt; &gt; &gt; +    
&gt; &gt; &gt; +    bool operator&gt;(const Kind&amp; other) const
&gt; &gt; &gt; +    {
&gt; &gt; &gt; +        return other &lt; *this;
&gt; &gt; &gt; +    }
&gt; &gt; &gt; +    
&gt; &gt; &gt; +    bool operator&lt;=(const Kind&amp; other) const
&gt; &gt; &gt; +    {
&gt; &gt; &gt; +        return !(*this &gt; other);
&gt; &gt; &gt; +    }
&gt; &gt; &gt; +    
&gt; &gt; &gt; +    bool operator&gt;=(const Kind&amp; other) const
&gt; &gt; &gt; +    {
&gt; &gt; &gt; +        return !(*this &lt; other);
&gt; &gt; &gt; +    }
&gt; &gt; 
&gt; &gt; What are these used for. If they aren&apos;t used maybe we should delete them?
&gt; 
&gt; I want it to be easy to sort on kind, just like you can sort on opcode.

Look like nobody does that.  I&apos;ll remove.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1234892</commentid>
    <comment_count>13</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2016-09-29 11:47:50 -0700</bug_when>
    <thetext>Landed in https://trac.webkit.org/changeset/206595</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>290105</attachid>
            <date>2016-09-28 11:55:09 -0700</date>
            <delta_ts>2016-09-28 14:41:58 -0700</delta_ts>
            <desc>turning chill into a kind bit</desc>
            <filename>blah.patch</filename>
            <type>text/plain</type>
            <size>29761</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM0xvd2VyTWFjcm9zLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNMb3dlck1hY3Jvcy5jcHAJKHJldmlz
aW9uIDIwNjUyNCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM0xvd2VyTWFjcm9zLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtODMsNiArODMsNDEgQEAgcHJpdmF0ZToKICAgICAgICAgICAg
IG1fb3JpZ2luID0gbV92YWx1ZS0+b3JpZ2luKCk7CiAgICAgICAgICAgICBzd2l0Y2ggKG1fdmFs
dWUtPm9wY29kZSgpKSB7CiAgICAgICAgICAgICBjYXNlIE1vZDogeworICAgICAgICAgICAgICAg
IGlmIChtX3ZhbHVlLT5pc0NoaWxsKCkpIHsKKyAgICAgICAgICAgICAgICAgICAgaWYgKGlzQVJN
NjQoKSkgeworICAgICAgICAgICAgICAgICAgICAgICAgQmFzaWNCbG9jayogYmVmb3JlID0gbV9i
bG9ja0luc2VydGlvblNldC5zcGxpdEZvcndhcmQobV9ibG9jaywgbV9pbmRleCwgJm1faW5zZXJ0
aW9uU2V0KTsKKyAgICAgICAgICAgICAgICAgICAgICAgIEJhc2ljQmxvY2sqIHplcm9EZW5DYXNl
ID0gbV9ibG9ja0luc2VydGlvblNldC5pbnNlcnRCZWZvcmUobV9ibG9jayk7CisgICAgICAgICAg
ICAgICAgICAgICAgICBCYXNpY0Jsb2NrKiBub3JtYWxNb2RDYXNlID0gbV9ibG9ja0luc2VydGlv
blNldC5pbnNlcnRCZWZvcmUobV9ibG9jayk7CisKKyAgICAgICAgICAgICAgICAgICAgICAgIGJl
Zm9yZS0+cmVwbGFjZUxhc3RXaXRoTmV3PFZhbHVlPihtX3Byb2MsIEJyYW5jaCwgbV9vcmlnaW4s
IG1fdmFsdWUtPmNoaWxkKDEpKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGJlZm9yZS0+c2V0
U3VjY2Vzc29ycygKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBGcmVxdWVudGVkQmxvY2so
bm9ybWFsTW9kQ2FzZSwgRnJlcXVlbmN5Q2xhc3M6Ok5vcm1hbCksCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgRnJlcXVlbnRlZEJsb2NrKHplcm9EZW5DYXNlLCBGcmVxdWVuY3lDbGFzczo6
UmFyZSkpOworCisgICAgICAgICAgICAgICAgICAgICAgICBWYWx1ZSogZGl2UmVzdWx0ID0gbm9y
bWFsTW9kQ2FzZS0+YXBwZW5kTmV3PFZhbHVlPihtX3Byb2MsIGNoaWxsKERpdiksIG1fb3JpZ2lu
LCBtX3ZhbHVlLT5jaGlsZCgwKSwgbV92YWx1ZS0+Y2hpbGQoMSkpOworICAgICAgICAgICAgICAg
ICAgICAgICAgVmFsdWUqIG11bHRpcGxpZWRCYWNrID0gbm9ybWFsTW9kQ2FzZS0+YXBwZW5kTmV3
PFZhbHVlPihtX3Byb2MsIE11bCwgbV9vcmlnaW4sIGRpdlJlc3VsdCwgbV92YWx1ZS0+Y2hpbGQo
MSkpOworICAgICAgICAgICAgICAgICAgICAgICAgVmFsdWUqIHJlc3VsdCA9IG5vcm1hbE1vZENh
c2UtPmFwcGVuZE5ldzxWYWx1ZT4obV9wcm9jLCBTdWIsIG1fb3JpZ2luLCBtX3ZhbHVlLT5jaGls
ZCgwKSwgbXVsdGlwbGllZEJhY2spOworICAgICAgICAgICAgICAgICAgICAgICAgVXBzaWxvblZh
bHVlKiBub3JtYWxSZXN1bHQgPSBub3JtYWxNb2RDYXNlLT5hcHBlbmROZXc8VXBzaWxvblZhbHVl
PihtX3Byb2MsIG1fb3JpZ2luLCByZXN1bHQpOworICAgICAgICAgICAgICAgICAgICAgICAgbm9y
bWFsTW9kQ2FzZS0+YXBwZW5kTmV3PFZhbHVlPihtX3Byb2MsIEp1bXAsIG1fb3JpZ2luKTsKKyAg
ICAgICAgICAgICAgICAgICAgICAgIG5vcm1hbE1vZENhc2UtPnNldFN1Y2Nlc3NvcnMoRnJlcXVl
bnRlZEJsb2NrKG1fYmxvY2spKTsKKworICAgICAgICAgICAgICAgICAgICAgICAgVXBzaWxvblZh
bHVlKiB6ZXJvUmVzdWx0ID0gemVyb0RlbkNhc2UtPmFwcGVuZE5ldzxVcHNpbG9uVmFsdWU+KAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1fcHJvYywgbV9vcmlnaW4sCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgemVyb0RlbkNhc2UtPmFwcGVuZEludENvbnN0YW50KG1fcHJvYywg
bV92YWx1ZSwgMCkpOworICAgICAgICAgICAgICAgICAgICAgICAgemVyb0RlbkNhc2UtPmFwcGVu
ZE5ldzxWYWx1ZT4obV9wcm9jLCBKdW1wLCBtX29yaWdpbik7CisgICAgICAgICAgICAgICAgICAg
ICAgICB6ZXJvRGVuQ2FzZS0+c2V0U3VjY2Vzc29ycyhGcmVxdWVudGVkQmxvY2sobV9ibG9jaykp
OworCisgICAgICAgICAgICAgICAgICAgICAgICBWYWx1ZSogcGhpID0gbV9pbnNlcnRpb25TZXQu
aW5zZXJ0PFZhbHVlPihtX2luZGV4LCBQaGksIG1fdmFsdWUtPnR5cGUoKSwgbV9vcmlnaW4pOwor
ICAgICAgICAgICAgICAgICAgICAgICAgbm9ybWFsUmVzdWx0LT5zZXRQaGkocGhpKTsKKyAgICAg
ICAgICAgICAgICAgICAgICAgIHplcm9SZXN1bHQtPnNldFBoaShwaGkpOworICAgICAgICAgICAg
ICAgICAgICAgICAgbV92YWx1ZS0+cmVwbGFjZVdpdGhJZGVudGl0eShwaGkpOworICAgICAgICAg
ICAgICAgICAgICAgICAgYmVmb3JlLT51cGRhdGVQcmVkZWNlc3NvcnNBZnRlcigpOworICAgICAg
ICAgICAgICAgICAgICAgICAgbV9jaGFuZ2VkID0gdHJ1ZTsKKyAgICAgICAgICAgICAgICAgICAg
fSBlbHNlCisgICAgICAgICAgICAgICAgICAgICAgICBtYWtlRGl2aXNpb25DaGlsbChNb2QpOwor
ICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAg
ICAgICAgCiAgICAgICAgICAgICAgICAgZG91YmxlICgqZm1vZERvdWJsZSkoZG91YmxlLCBkb3Vi
bGUpID0gZm1vZDsKICAgICAgICAgICAgICAgICBpZiAobV92YWx1ZS0+dHlwZSgpID09IERvdWJs
ZSkgewogICAgICAgICAgICAgICAgICAgICBWYWx1ZSogZnVuY3Rpb25BZGRyZXNzID0gbV9pbnNl
cnRpb25TZXQuaW5zZXJ0PENvbnN0UHRyVmFsdWU+KG1faW5kZXgsIG1fb3JpZ2luLCBmbW9kRG91
YmxlKTsKQEAgLTEwNiw3ICsxNDEsNyBAQCBwcml2YXRlOgogICAgICAgICAgICAgICAgICAgICBt
X3ZhbHVlLT5yZXBsYWNlV2l0aElkZW50aXR5KHJlc3VsdCk7CiAgICAgICAgICAgICAgICAgICAg
IG1fY2hhbmdlZCA9IHRydWU7CiAgICAgICAgICAgICAgICAgfSBlbHNlIGlmIChpc0FSTTY0KCkp
IHsKLSAgICAgICAgICAgICAgICAgICAgVmFsdWUqIGRpdlJlc3VsdCA9IG1faW5zZXJ0aW9uU2V0
Lmluc2VydDxWYWx1ZT4obV9pbmRleCwgQ2hpbGxEaXYsIG1fb3JpZ2luLCBtX3ZhbHVlLT5jaGls
ZCgwKSwgbV92YWx1ZS0+Y2hpbGQoMSkpOworICAgICAgICAgICAgICAgICAgICBWYWx1ZSogZGl2
UmVzdWx0ID0gbV9pbnNlcnRpb25TZXQuaW5zZXJ0PFZhbHVlPihtX2luZGV4LCBjaGlsbChEaXYp
LCBtX29yaWdpbiwgbV92YWx1ZS0+Y2hpbGQoMCksIG1fdmFsdWUtPmNoaWxkKDEpKTsKICAgICAg
ICAgICAgICAgICAgICAgVmFsdWUqIG11bHRpcGxpZWRCYWNrID0gbV9pbnNlcnRpb25TZXQuaW5z
ZXJ0PFZhbHVlPihtX2luZGV4LCBNdWwsIG1fb3JpZ2luLCBkaXZSZXN1bHQsIG1fdmFsdWUtPmNo
aWxkKDEpKTsKICAgICAgICAgICAgICAgICAgICAgVmFsdWUqIHJlc3VsdCA9IG1faW5zZXJ0aW9u
U2V0Lmluc2VydDxWYWx1ZT4obV9pbmRleCwgU3ViLCBtX29yaWdpbiwgbV92YWx1ZS0+Y2hpbGQo
MCksIG11bHRpcGxpZWRCYWNrKTsKICAgICAgICAgICAgICAgICAgICAgbV92YWx1ZS0+cmVwbGFj
ZVdpdGhJZGVudGl0eShyZXN1bHQpOwpAQCAtMTE0LDQzICsxNDksOSBAQCBwcml2YXRlOgogICAg
ICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIH0KLSAg
ICAgICAgICAgIGNhc2UgQ2hpbGxEaXY6IHsKLSAgICAgICAgICAgICAgICBtYWtlRGl2aXNpb25D
aGlsbChEaXYpOwotICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgfQotCi0gICAg
ICAgICAgICBjYXNlIENoaWxsTW9kOiB7Ci0gICAgICAgICAgICAgICAgaWYgKGlzQVJNNjQoKSkg
ewotICAgICAgICAgICAgICAgICAgICBCYXNpY0Jsb2NrKiBiZWZvcmUgPSBtX2Jsb2NrSW5zZXJ0
aW9uU2V0LnNwbGl0Rm9yd2FyZChtX2Jsb2NrLCBtX2luZGV4LCAmbV9pbnNlcnRpb25TZXQpOwot
ICAgICAgICAgICAgICAgICAgICBCYXNpY0Jsb2NrKiB6ZXJvRGVuQ2FzZSA9IG1fYmxvY2tJbnNl
cnRpb25TZXQuaW5zZXJ0QmVmb3JlKG1fYmxvY2spOwotICAgICAgICAgICAgICAgICAgICBCYXNp
Y0Jsb2NrKiBub3JtYWxNb2RDYXNlID0gbV9ibG9ja0luc2VydGlvblNldC5pbnNlcnRCZWZvcmUo
bV9ibG9jayk7Ci0KLSAgICAgICAgICAgICAgICAgICAgYmVmb3JlLT5yZXBsYWNlTGFzdFdpdGhO
ZXc8VmFsdWU+KG1fcHJvYywgQnJhbmNoLCBtX29yaWdpbiwgbV92YWx1ZS0+Y2hpbGQoMSkpOwot
ICAgICAgICAgICAgICAgICAgICBiZWZvcmUtPnNldFN1Y2Nlc3NvcnMoCi0gICAgICAgICAgICAg
ICAgICAgICAgICBGcmVxdWVudGVkQmxvY2sobm9ybWFsTW9kQ2FzZSwgRnJlcXVlbmN5Q2xhc3M6
Ok5vcm1hbCksCi0gICAgICAgICAgICAgICAgICAgICAgICBGcmVxdWVudGVkQmxvY2soemVyb0Rl
bkNhc2UsIEZyZXF1ZW5jeUNsYXNzOjpSYXJlKSk7Ci0KLSAgICAgICAgICAgICAgICAgICAgVmFs
dWUqIGRpdlJlc3VsdCA9IG5vcm1hbE1vZENhc2UtPmFwcGVuZE5ldzxWYWx1ZT4obV9wcm9jLCBD
aGlsbERpdiwgbV9vcmlnaW4sIG1fdmFsdWUtPmNoaWxkKDApLCBtX3ZhbHVlLT5jaGlsZCgxKSk7
Ci0gICAgICAgICAgICAgICAgICAgIFZhbHVlKiBtdWx0aXBsaWVkQmFjayA9IG5vcm1hbE1vZENh
c2UtPmFwcGVuZE5ldzxWYWx1ZT4obV9wcm9jLCBNdWwsIG1fb3JpZ2luLCBkaXZSZXN1bHQsIG1f
dmFsdWUtPmNoaWxkKDEpKTsKLSAgICAgICAgICAgICAgICAgICAgVmFsdWUqIHJlc3VsdCA9IG5v
cm1hbE1vZENhc2UtPmFwcGVuZE5ldzxWYWx1ZT4obV9wcm9jLCBTdWIsIG1fb3JpZ2luLCBtX3Zh
bHVlLT5jaGlsZCgwKSwgbXVsdGlwbGllZEJhY2spOwotICAgICAgICAgICAgICAgICAgICBVcHNp
bG9uVmFsdWUqIG5vcm1hbFJlc3VsdCA9IG5vcm1hbE1vZENhc2UtPmFwcGVuZE5ldzxVcHNpbG9u
VmFsdWU+KG1fcHJvYywgbV9vcmlnaW4sIHJlc3VsdCk7Ci0gICAgICAgICAgICAgICAgICAgIG5v
cm1hbE1vZENhc2UtPmFwcGVuZE5ldzxWYWx1ZT4obV9wcm9jLCBKdW1wLCBtX29yaWdpbik7Ci0g
ICAgICAgICAgICAgICAgICAgIG5vcm1hbE1vZENhc2UtPnNldFN1Y2Nlc3NvcnMoRnJlcXVlbnRl
ZEJsb2NrKG1fYmxvY2spKTsKLQotICAgICAgICAgICAgICAgICAgICBVcHNpbG9uVmFsdWUqIHpl
cm9SZXN1bHQgPSB6ZXJvRGVuQ2FzZS0+YXBwZW5kTmV3PFVwc2lsb25WYWx1ZT4oCi0gICAgICAg
ICAgICAgICAgICAgICAgICBtX3Byb2MsIG1fb3JpZ2luLAotICAgICAgICAgICAgICAgICAgICAg
ICAgemVyb0RlbkNhc2UtPmFwcGVuZEludENvbnN0YW50KG1fcHJvYywgbV92YWx1ZSwgMCkpOwot
ICAgICAgICAgICAgICAgICAgICB6ZXJvRGVuQ2FzZS0+YXBwZW5kTmV3PFZhbHVlPihtX3Byb2Ms
IEp1bXAsIG1fb3JpZ2luKTsKLSAgICAgICAgICAgICAgICAgICAgemVyb0RlbkNhc2UtPnNldFN1
Y2Nlc3NvcnMoRnJlcXVlbnRlZEJsb2NrKG1fYmxvY2spKTsKLQotICAgICAgICAgICAgICAgICAg
ICBWYWx1ZSogcGhpID0gbV9pbnNlcnRpb25TZXQuaW5zZXJ0PFZhbHVlPihtX2luZGV4LCBQaGks
IG1fdmFsdWUtPnR5cGUoKSwgbV9vcmlnaW4pOwotICAgICAgICAgICAgICAgICAgICBub3JtYWxS
ZXN1bHQtPnNldFBoaShwaGkpOwotICAgICAgICAgICAgICAgICAgICB6ZXJvUmVzdWx0LT5zZXRQ
aGkocGhpKTsKLSAgICAgICAgICAgICAgICAgICAgbV92YWx1ZS0+cmVwbGFjZVdpdGhJZGVudGl0
eShwaGkpOwotICAgICAgICAgICAgICAgICAgICBiZWZvcmUtPnVwZGF0ZVByZWRlY2Vzc29yc0Fm
dGVyKCk7Ci0gICAgICAgICAgICAgICAgICAgIG1fY2hhbmdlZCA9IHRydWU7Ci0gICAgICAgICAg
ICAgICAgfSBlbHNlCi0gICAgICAgICAgICAgICAgICAgIG1ha2VEaXZpc2lvbkNoaWxsKE1vZCk7
CisgICAgICAgICAgICBjYXNlIERpdjogeworICAgICAgICAgICAgICAgIGlmIChtX3ZhbHVlLT5p
c0NoaWxsKCkpCisgICAgICAgICAgICAgICAgICAgIG1ha2VEaXZpc2lvbkNoaWxsKERpdik7CiAg
ICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICB9CiAKQEAgLTE4OCw3ICsxODksNyBA
QCBwcml2YXRlOgogICAgICAgICBpZiAoaXNBUk02NCgpKQogICAgICAgICAgICAgcmV0dXJuOwog
Ci0gICAgICAgIC8vIFdlIGltcGxlbWVudCAicmVzID0gQ2hpbGxEaXYvQ2hpbGxNb2QobnVtLCBk
ZW4pIiBhcyBmb2xsb3dzOgorICAgICAgICAvLyBXZSBpbXBsZW1lbnQgInJlcyA9IERpdjxDaGls
bD4vTW9kPENoaWxsPihudW0sIGRlbikiIGFzIGZvbGxvd3M6CiAgICAgICAgIC8vCiAgICAgICAg
IC8vICAgICBpZiAoZGVuICsgMSA8PV91bnNpZ25lZCAxKSB7CiAgICAgICAgIC8vICAgICAgICAg
aWYgKCFkZW4pIHsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM09wY29kZS5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM09wY29kZS5oCShyZXZpc2lv
biAyMDY1MjQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNPcGNvZGUuaAkod29ya2lu
ZyBjb3B5KQpAQCAtODQsOCArODQsNiBAQCBlbnVtIE9wY29kZSA6IGludDE2X3QgewogICAgIE5l
ZywKIAogICAgIC8vIEludGVnZXIgbWF0aC4KLSAgICBDaGlsbERpdiwgLy8gZG9lc24ndCB0cmFw
IGV2ZXIsIGJlaGF2ZXMgbGlrZSBKUyAoeC95KXwwLgotICAgIENoaWxsTW9kLCAvLyBkb2Vzbid0
IHRyYXAgZXZlciwgYmVoYXZlcyBsaWtlIEpTICh4JXkpfDAuCiAgICAgQml0QW5kLAogICAgIEJp
dE9yLAogICAgIEJpdFhvciwKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM1JlZHVj
ZVN0cmVuZ3RoLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNS
ZWR1Y2VTdHJlbmd0aC5jcHAJKHJldmlzaW9uIDIwNjUyNCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9iMy9CM1JlZHVjZVN0cmVuZ3RoLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjQ4LDEwICs2
NDgsOSBAQCBwcml2YXRlOgogICAgICAgICAgICAgYnJlYWs7CiAKICAgICAgICAgY2FzZSBEaXY6
Ci0gICAgICAgIGNhc2UgQ2hpbGxEaXY6CiAgICAgICAgICAgICAvLyBUdXJuIHRoaXM6IERpdihj
b25zdGFudDEsIGNvbnN0YW50MikKICAgICAgICAgICAgIC8vIEludG8gdGhpczogY29uc3RhbnQx
IC8gY29uc3RhbnQyCi0gICAgICAgICAgICAvLyBOb3RlIHRoYXQgdGhpcyB1c2VzIENoaWxsRGl2
IHNlbWFudGljcy4gVGhhdCdzIGZpbmUsIGJlY2F1c2UgdGhlIHJ1bGVzIGZvciBEaXYKKyAgICAg
ICAgICAgIC8vIE5vdGUgdGhhdCB0aGlzIHVzZXMgRGl2PENoaWxsPiBzZW1hbnRpY3MuIFRoYXQn
cyBmaW5lLCBiZWNhdXNlIHRoZSBydWxlcyBmb3IgRGl2CiAgICAgICAgICAgICAvLyBhcmUgc3Ry
aWN0bHkgd2Vha2VyOiBpdCBoYXMgY29ybmVyIGNhc2VzIHdoZXJlIGl0J3MgYWxsb3dlZCB0byBk
byBhbnl0aGluZyBpdAogICAgICAgICAgICAgLy8gbGlrZXMuCiAgICAgICAgICAgICBpZiAocmVw
bGFjZVdpdGhOZXdWYWx1ZShtX3ZhbHVlLT5jaGlsZCgwKS0+ZGl2Q29uc3RhbnQobV9wcm9jLCBt
X3ZhbHVlLT5jaGlsZCgxKSkpKQpAQCAtNzM3LDEwICs3MzYsOSBAQCBwcml2YXRlOgogICAgICAg
ICAgICAgYnJlYWs7CiAKICAgICAgICAgY2FzZSBNb2Q6Ci0gICAgICAgIGNhc2UgQ2hpbGxNb2Q6
CiAgICAgICAgICAgICAvLyBUdXJuIHRoaXM6IE1vZChjb25zdGFudDEsIGNvbnN0YW50MikKICAg
ICAgICAgICAgIC8vIEludG8gdGhpczogY29uc3RhbnQxIC8gY29uc3RhbnQyCi0gICAgICAgICAg
ICAvLyBOb3RlIHRoYXQgdGhpcyB1c2VzIENoaWxsTW9kIHNlbWFudGljcy4KKyAgICAgICAgICAg
IC8vIE5vdGUgdGhhdCB0aGlzIHVzZXMgTW9kPENoaWxsPiBzZW1hbnRpY3MuCiAgICAgICAgICAg
ICBpZiAocmVwbGFjZVdpdGhOZXdWYWx1ZShtX3ZhbHVlLT5jaGlsZCgwKS0+bW9kQ29uc3RhbnQo
bV9wcm9jLCBtX3ZhbHVlLT5jaGlsZCgxKSkpKQogICAgICAgICAgICAgICAgIGJyZWFrOwogCkBA
IC03NzQsMTkgKzc3Miw4IEBAIHByaXZhdGU6CiAgICAgICAgICAgICAgICAgICAgIC8vICAgICAg
ICAgICAgICAgID0gLTJeMzEgLSAtMl4zMQogICAgICAgICAgICAgICAgICAgICAvLyAgICAgICAg
ICAgICAgICA9IDAKIAotICAgICAgICAgICAgICAgICAgICBPcGNvZGUgZGl2T3Bjb2RlOwotICAg
ICAgICAgICAgICAgICAgICBzd2l0Y2ggKG1fdmFsdWUtPm9wY29kZSgpKSB7Ci0gICAgICAgICAg
ICAgICAgICAgIGNhc2UgTW9kOgotICAgICAgICAgICAgICAgICAgICAgICAgZGl2T3Bjb2RlID0g
RGl2OwotICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgICAg
IGNhc2UgQ2hpbGxNb2Q6Ci0gICAgICAgICAgICAgICAgICAgICAgICBkaXZPcGNvZGUgPSBDaGls
bERpdjsKLSAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgICAgICAg
ICBkZWZhdWx0OgotICAgICAgICAgICAgICAgICAgICAgICAgZGl2T3Bjb2RlID0gT29wczsKLSAg
ICAgICAgICAgICAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAg
ICAgICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAgICAgICAgfQorICAgICAg
ICAgICAgICAgICAgICBLaW5kIGRpdktpbmQgPSBEaXY7CisgICAgICAgICAgICAgICAgICAgIGRp
dktpbmQuc2V0SXNDaGlsbChtX3ZhbHVlLT5pc0NoaWxsKCkpOwogCiAgICAgICAgICAgICAgICAg
ICAgIHJlcGxhY2VXaXRoSWRlbnRpdHkoCiAgICAgICAgICAgICAgICAgICAgICAgICBtX2luc2Vy
dGlvblNldC5pbnNlcnQ8VmFsdWU+KApAQCAtNzk1LDcgKzc4Miw3IEBAIHByaXZhdGU6CiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgbV9pbnNlcnRpb25TZXQuaW5zZXJ0PFZhbHVlPigKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbV9pbmRleCwgTXVsLCBtX3ZhbHVlLT5vcmln
aW4oKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbV9pbnNlcnRpb25TZXQuaW5z
ZXJ0PFZhbHVlPigKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1faW5kZXgs
IGRpdk9wY29kZSwgbV92YWx1ZS0+b3JpZ2luKCksCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBtX2luZGV4LCBkaXZLaW5kLCBtX3ZhbHVlLT5vcmlnaW4oKSwKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1fdmFsdWUtPmNoaWxkKDApLCBtX3ZhbHVlLT5j
aGlsZCgxKSksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1fdmFsdWUtPmNoaWxk
KDEpKSkpOwogICAgICAgICAgICAgICAgICAgICBicmVhazsKSW5kZXg6IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9iMy9CM1ZhbHVlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvYjMvQjNWYWx1ZS5jcHAJKHJldmlzaW9uIDIwNjUyNCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9iMy9CM1ZhbHVlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTc1LDcgKzE3NSw3IEBAIHZv
aWQgVmFsdWU6OmR1bXAoUHJpbnRTdHJlYW0mIG91dCkgY29uc3QKIHsKICAgICBib29sIGlzQ29u
c3RhbnQgPSBmYWxzZTsKIAotICAgIHN3aXRjaCAobV9vcGNvZGUpIHsKKyAgICBzd2l0Y2ggKG9w
Y29kZSgpKSB7CiAgICAgY2FzZSBDb25zdDMyOgogICAgICAgICBvdXQucHJpbnQoIiQiLCBhc0lu
dDMyKCksICIoIik7CiAgICAgICAgIGlzQ29uc3RhbnQgPSB0cnVlOwpAQCAtMjE1LDcgKzIxNSw3
IEBAIHZvaWQgVmFsdWU6OmR1bXBDaGlsZHJlbihDb21tYVByaW50ZXImIGMKIAogdm9pZCBWYWx1
ZTo6ZGVlcER1bXAoY29uc3QgUHJvY2VkdXJlKiBwcm9jLCBQcmludFN0cmVhbSYgb3V0KSBjb25z
dAogewotICAgIG91dC5wcmludChtX3R5cGUsICIgIiwgZHVtcFByZWZpeCwgbV9pbmRleCwgIiA9
ICIsIG1fb3Bjb2RlKTsKKyAgICBvdXQucHJpbnQobV90eXBlLCAiICIsIGR1bXBQcmVmaXgsIG1f
aW5kZXgsICIgPSAiLCBtX2tpbmQpOwogCiAgICAgb3V0LnByaW50KCIoIik7CiAgICAgQ29tbWFQ
cmludGVyIGNvbW1hOwpAQCAtNDM3LDggKzQzNywxMCBAQCBWYWx1ZSogVmFsdWU6OmludmVydGVk
Q29tcGFyZShQcm9jZWR1cmUmCiB7CiAgICAgaWYgKCFudW1DaGlsZHJlbigpKQogICAgICAgICBy
ZXR1cm4gbnVsbHB0cjsKLSAgICBpZiAoT3B0aW9uYWw8T3Bjb2RlPiBpbnZlcnRlZE9wY29kZSA9
IEIzOjppbnZlcnRlZENvbXBhcmUob3Bjb2RlKCksIGNoaWxkKDApLT50eXBlKCkpKQorICAgIGlm
IChPcHRpb25hbDxPcGNvZGU+IGludmVydGVkT3Bjb2RlID0gQjM6OmludmVydGVkQ29tcGFyZShv
cGNvZGUoKSwgY2hpbGQoMCktPnR5cGUoKSkpIHsKKyAgICAgICAgQVNTRVJUKCFraW5kKCkuaGFz
RXh0cmFCaXRzKCkpOwogICAgICAgICByZXR1cm4gcHJvYy5hZGQ8VmFsdWU+KCppbnZlcnRlZE9w
Y29kZSwgdHlwZSgpLCBvcmlnaW4oKSwgY2hpbGRyZW4oKSk7CisgICAgfQogICAgIHJldHVybiBu
dWxscHRyOwogfQogCkBAIC01MzIsOCArNTM0LDYgQEAgRWZmZWN0cyBWYWx1ZTo6ZWZmZWN0cygp
IGNvbnN0CiAgICAgY2FzZSBTdWI6CiAgICAgY2FzZSBNdWw6CiAgICAgY2FzZSBOZWc6Ci0gICAg
Y2FzZSBDaGlsbERpdjoKLSAgICBjYXNlIENoaWxsTW9kOgogICAgIGNhc2UgQml0QW5kOgogICAg
IGNhc2UgQml0T3I6CiAgICAgY2FzZSBCaXRYb3I6CkBAIC02NDIsNyArNjQyLDcgQEAgVmFsdWVL
ZXkgVmFsdWU6OmtleSgpIGNvbnN0CiB7CiAgICAgc3dpdGNoIChvcGNvZGUoKSkgewogICAgIGNh
c2UgRnJhbWVQb2ludGVyOgotICAgICAgICByZXR1cm4gVmFsdWVLZXkob3Bjb2RlKCksIHR5cGUo
KSk7CisgICAgICAgIHJldHVybiBWYWx1ZUtleShraW5kKCksIHR5cGUoKSk7CiAgICAgY2FzZSBJ
ZGVudGl0eToKICAgICBjYXNlIEFiczoKICAgICBjYXNlIENlaWw6CkBAIC02NjEsMTQgKzY2MSwx
MiBAQCBWYWx1ZUtleSBWYWx1ZTo6a2V5KCkgY29uc3QKICAgICBjYXNlIENoZWNrOgogICAgIGNh
c2UgQml0d2lzZUNhc3Q6CiAgICAgY2FzZSBOZWc6Ci0gICAgICAgIHJldHVybiBWYWx1ZUtleShv
cGNvZGUoKSwgdHlwZSgpLCBjaGlsZCgwKSk7CisgICAgICAgIHJldHVybiBWYWx1ZUtleShraW5k
KCksIHR5cGUoKSwgY2hpbGQoMCkpOwogICAgIGNhc2UgQWRkOgogICAgIGNhc2UgU3ViOgogICAg
IGNhc2UgTXVsOgogICAgIGNhc2UgRGl2OgogICAgIGNhc2UgTW9kOgotICAgIGNhc2UgQ2hpbGxE
aXY6Ci0gICAgY2FzZSBDaGlsbE1vZDoKICAgICBjYXNlIEJpdEFuZDoKICAgICBjYXNlIEJpdE9y
OgogICAgIGNhc2UgQml0WG9yOgpAQCAtNjg3LDkgKzY4NSw5IEBAIFZhbHVlS2V5IFZhbHVlOjpr
ZXkoKSBjb25zdAogICAgIGNhc2UgQ2hlY2tBZGQ6CiAgICAgY2FzZSBDaGVja1N1YjoKICAgICBj
YXNlIENoZWNrTXVsOgotICAgICAgICByZXR1cm4gVmFsdWVLZXkob3Bjb2RlKCksIHR5cGUoKSwg
Y2hpbGQoMCksIGNoaWxkKDEpKTsKKyAgICAgICAgcmV0dXJuIFZhbHVlS2V5KGtpbmQoKSwgdHlw
ZSgpLCBjaGlsZCgwKSwgY2hpbGQoMSkpOwogICAgIGNhc2UgU2VsZWN0OgotICAgICAgICByZXR1
cm4gVmFsdWVLZXkob3Bjb2RlKCksIHR5cGUoKSwgY2hpbGQoMCksIGNoaWxkKDEpLCBjaGlsZCgy
KSk7CisgICAgICAgIHJldHVybiBWYWx1ZUtleShraW5kKCksIHR5cGUoKSwgY2hpbGQoMCksIGNo
aWxkKDEpLCBjaGlsZCgyKSk7CiAgICAgY2FzZSBDb25zdDMyOgogICAgICAgICByZXR1cm4gVmFs
dWVLZXkoQ29uc3QzMiwgdHlwZSgpLCBzdGF0aWNfY2FzdDxpbnQ2NF90Pihhc0ludDMyKCkpKTsK
ICAgICBjYXNlIENvbnN0NjQ6CkBAIC03MzgsOSArNzM2LDkgQEAgdm9pZCBWYWx1ZTo6ZHVtcE1l
dGEoQ29tbWFQcmludGVyJiwgUHJpbgogewogfQogCi1UeXBlIFZhbHVlOjp0eXBlRm9yKE9wY29k
ZSBvcGNvZGUsIFZhbHVlKiBmaXJzdENoaWxkLCBWYWx1ZSogc2Vjb25kQ2hpbGQpCitUeXBlIFZh
bHVlOjp0eXBlRm9yKEtpbmQga2luZCwgVmFsdWUqIGZpcnN0Q2hpbGQsIFZhbHVlKiBzZWNvbmRD
aGlsZCkKIHsKLSAgICBzd2l0Y2ggKG9wY29kZSkgeworICAgIHN3aXRjaCAoa2luZC5vcGNvZGUo
KSkgewogICAgIGNhc2UgSWRlbnRpdHk6CiAgICAgY2FzZSBBZGQ6CiAgICAgY2FzZSBTdWI6CkBA
IC03NDgsOCArNzQ2LDYgQEAgVHlwZSBWYWx1ZTo6dHlwZUZvcihPcGNvZGUgb3Bjb2RlLCBWYWx1
ZQogICAgIGNhc2UgRGl2OgogICAgIGNhc2UgTW9kOgogICAgIGNhc2UgTmVnOgotICAgIGNhc2Ug
Q2hpbGxEaXY6Ci0gICAgY2FzZSBDaGlsbE1vZDoKICAgICBjYXNlIEJpdEFuZDoKICAgICBjYXNl
IEJpdE9yOgogICAgIGNhc2UgQml0WG9yOgpAQCAtODIwLDkgKzgxNiw5IEBAIFR5cGUgVmFsdWU6
OnR5cGVGb3IoT3Bjb2RlIG9wY29kZSwgVmFsdWUKICAgICB9CiB9CiAKLXZvaWQgVmFsdWU6OmJh
ZE9wY29kZShPcGNvZGUgb3Bjb2RlLCB1bnNpZ25lZCBudW1BcmdzKQordm9pZCBWYWx1ZTo6YmFk
S2luZChLaW5kIGtpbmQsIHVuc2lnbmVkIG51bUFyZ3MpCiB7Ci0gICAgZGF0YUxvZygiQmFkIG9w
Y29kZSAiLCBvcGNvZGUsICIgd2l0aCAiLCBudW1BcmdzLCAiIGFyZ3MuXG4iKTsKKyAgICBkYXRh
TG9nKCJCYWQga2luZCAiLCBraW5kLCAiIHdpdGggIiwgbnVtQXJncywgIiBhcmdzLlxuIik7CiAg
ICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKIH0KIApJbmRleDogU291cmNlL0phdmFT
Y3JpcHRDb3JlL2IzL0IzVmFsdWUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvYjMvQjNWYWx1ZS5oCShyZXZpc2lvbiAyMDY1MjQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvYjMvQjNWYWx1ZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMSw3ICszMSw3IEBACiAjaW5jbHVk
ZSAiQWlyQXJnLmgiCiAjaW5jbHVkZSAiQjNFZmZlY3RzLmgiCiAjaW5jbHVkZSAiQjNGcmVxdWVu
dGVkQmxvY2suaCIKLSNpbmNsdWRlICJCM09wY29kZS5oIgorI2luY2x1ZGUgIkIzS2luZC5oIgog
I2luY2x1ZGUgIkIzT3JpZ2luLmgiCiAjaW5jbHVkZSAiQjNTcGFyc2VDb2xsZWN0aW9uLmgiCiAj
aW5jbHVkZSAiQjNUeXBlLmgiCkBAIC01NSwxNSArNTUsMjMgQEAgcHVibGljOgogCiAgICAgc3Rh
dGljIGNvbnN0IGNoYXIqIGNvbnN0IGR1bXBQcmVmaXg7CiAKLSAgICBzdGF0aWMgYm9vbCBhY2Nl
cHRzKE9wY29kZSkgeyByZXR1cm4gdHJ1ZTsgfQorICAgIHN0YXRpYyBib29sIGFjY2VwdHMoS2lu
ZCkgeyByZXR1cm4gdHJ1ZTsgfQogCiAgICAgdmlydHVhbCB+VmFsdWUoKTsKIAogICAgIHVuc2ln
bmVkIGluZGV4KCkgY29uc3QgeyByZXR1cm4gbV9pbmRleDsgfQogICAgIAotICAgIC8vIE5vdGUg
dGhhdCB0aGUgb3Bjb2RlIGlzIGltbXV0YWJsZSwgZXhjZXB0IGZvciByZXBsYWNpbmcgdmFsdWVz
IHdpdGg6CisgICAgLy8gTm90ZSB0aGF0IHRoZSBraW5kIGlzIGltbXV0YWJsZSwgZXhjZXB0IGZv
ciByZXBsYWNpbmcgdmFsdWVzIHdpdGg6CiAgICAgLy8gSWRlbnRpdHksIE5vcCwgT29wcywgSnVt
cCwgYW5kIFBoaS4gU2VlIGJlbG93IGZvciByZXBsYWNlV2l0aFhYWCgpIG1ldGhvZHMuCi0gICAg
T3Bjb2RlIG9wY29kZSgpIGNvbnN0IHsgcmV0dXJuIG1fb3Bjb2RlOyB9CisgICAgS2luZCBraW5k
KCkgY29uc3QgeyByZXR1cm4gbV9raW5kOyB9CisgICAgCisgICAgT3Bjb2RlIG9wY29kZSgpIGNv
bnN0IHsgcmV0dXJuIGtpbmQoKS5vcGNvZGUoKTsgfQorICAgIAorICAgIC8vIEl0J3MgZ29vZCBw
cmFjdGljZSB0byBtaXJyb3IgS2luZCBtZXRob2RzIGhlcmUuIFJlbWVtYmVyLCB5b3UncmUgbW9y
ZSBsaWtlbHkgdG8gZ2V0IGNvbmZ1c2VkCisgICAgLy8gbG9va2luZyBhdCBjb2RlIGluIHBoYXNl
cyB0aGVuIHlvdSBhcmUgdG8gZ2V0IGNvbmZ1c2VkIGxvb2tpbmcgYXQgY29kZSBoZXJlLiBTbywg
ZG8gZXZlcnlvbmUKKyAgICAvLyBhIGZhdm9yIGFuIG1ha2luZCBpdCBwb3NzaWJsZSB0byBzYXkg
dmFsdWUtPmlzQmxhaCgpIGluIGFkZGl0aW9uIHRvIHNheWluZworICAgIC8vIHZhbHVlLT5raW5k
KCkuaXNCbGFoKCkuCisgICAgYm9vbCBpc0NoaWxsKCkgY29uc3QgeyByZXR1cm4ga2luZCgpLmlz
Q2hpbGwoKTsgfQogCiAgICAgT3JpZ2luIG9yaWdpbigpIGNvbnN0IHsgcmV0dXJuIG1fb3JpZ2lu
OyB9CiAgICAgdm9pZCBzZXRPcmlnaW4oT3JpZ2luIG9yaWdpbikgeyBtX29yaWdpbiA9IG9yaWdp
bjsgfQpAQCAtMTMyLDggKzE0MCw4IEBAIHB1YmxpYzoKICAgICAvLyAgICAgdGhpbmdzCiAgICAg
Ly8gfQogICAgIC8vCi0gICAgLy8gVGhpcyB3aWxsIHJldHVybiBudWxsIGlmIHRoaXMgb3Bjb2Rl
KCkgIT0gQXJndW1lbnRSZWcuIFRoaXMgd29ya3MgYmVjYXVzZSB0aGlzIHJldHVybnMgbnVsbHB0
cgotICAgIC8vIGlmIFQ6OmFjY2VwdHMob3Bjb2RlKCkpIHJldHVybnMgZmFsc2UuCisgICAgLy8g
VGhpcyB3aWxsIHJldHVybiBudWxsIGlmIHRoaXMga2luZCgpICE9IEFyZ3VtZW50UmVnLiBUaGlz
IHdvcmtzIGJlY2F1c2UgdGhpcyByZXR1cm5zIG51bGxwdHIKKyAgICAvLyBpZiBUOjphY2NlcHRz
KGtpbmQoKSkgcmV0dXJucyBmYWxzZS4KICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPgogICAgIFQq
IGFzKCk7CiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4KQEAgLTE0Miw3ICsxNTAsNyBAQCBwdWJs
aWM6CiAgICAgLy8gV2hhdCBmb2xsb3dzIGFyZSBhIGJ1bmNoIG9mIGhlbHBlcnMgZm9yIGluc3Bl
Y3RpbmcgYW5kIG1vZGlmeWluZyB2YWx1ZXMuIE5vdGUgdGhhdCB3ZSBoYXZlIGEKICAgICAvLyBi
dW5jaCBvZiBkaWZmZXJlbnQgaWRpb21zIGZvciBpbXBsZW1lbnRpbmcgc3VjaCBoZWxwZXJzLiBZ
b3UgY2FuIHVzZSB2aXJ0dWFsIG1ldGhvZHMsIGFuZAogICAgIC8vIG92ZXJyaWRlIGZyb20gdGhl
IHZhcmlvdXMgVmFsdWUgc3ViY2xhc3Nlcy4gWW91IGNhbiBwdXQgdGhlIG1ldGhvZCBpbnNpZGUg
VmFsdWUgYW5kIG1ha2UgaXQKLSAgICAvLyBub24tdmlydHVhbCwgYW5kIHRoZSBpbXBsZW1lbnRh
dGlvbiBjYW4gc3dpdGNoIG9uIG9wY29kZS4gVGhlIG1ldGhvZCBjb3VsZCBiZSBpbmxpbmUgb3Ig
bm90LgorICAgIC8vIG5vbi12aXJ0dWFsLCBhbmQgdGhlIGltcGxlbWVudGF0aW9uIGNhbiBzd2l0
Y2ggb24ga2luZC4gVGhlIG1ldGhvZCBjb3VsZCBiZSBpbmxpbmUgb3Igbm90LgogICAgIC8vIElm
IGEgbWV0aG9kIGlzIHNwZWNpZmljIHRvIHNvbWUgVmFsdWUgc3ViY2xhc3MsIHlvdSBjb3VsZCBw
dXQgaXQgaW4gdGhlIHN1YmNsYXNzLCBvciB5b3UgY291bGQKICAgICAvLyBwdXQgaXQgb24gVmFs
dWUgYW55d2F5LiBJdCdzIGZpbmUgdG8gcGljayB3aGF0ZXZlciBmZWVscyByaWdodCwgYW5kIHdl
IHNob3VsZG4ndCByZXN0cmljdAogICAgIC8vIG91cnNlbHZlcyB0byBhbnkgcGFydGljdWxhciBp
ZGlvbS4KQEAgLTI3NCwxMCArMjgyLDEwIEBAIHByaXZhdGU6CiAgICAgZnJpZW5kIGNsYXNzIFBy
b2NlZHVyZTsKICAgICBmcmllbmQgY2xhc3MgU3BhcnNlQ29sbGVjdGlvbjxWYWx1ZT47CiAKLSAg
ICAvLyBDaGVja3MgdGhhdCB0aGlzIG9wY29kZSBpcyB2YWxpZCBmb3IgdXNlIHdpdGggQjM6OlZh
bHVlLgotICAgIEFMV0FZU19JTkxJTkUgc3RhdGljIHZvaWQgY2hlY2tPcGNvZGUoT3Bjb2RlIG9w
Y29kZSwgdW5zaWduZWQgbnVtQXJncykKKyAgICAvLyBDaGVja3MgdGhhdCB0aGlzIGtpbmQgaXMg
dmFsaWQgZm9yIHVzZSB3aXRoIEIzOjpWYWx1ZS4KKyAgICBBTFdBWVNfSU5MSU5FIHN0YXRpYyB2
b2lkIGNoZWNrS2luZChLaW5kIGtpbmQsIHVuc2lnbmVkIG51bUFyZ3MpCiAgICAgewotICAgICAg
ICBzd2l0Y2ggKG9wY29kZSkgeworICAgICAgICBzd2l0Y2ggKGtpbmQub3Bjb2RlKCkpIHsKICAg
ICAgICAgY2FzZSBGcmFtZVBvaW50ZXI6CiAgICAgICAgIGNhc2UgTm9wOgogICAgICAgICBjYXNl
IFBoaToKQEAgLTI4NSwxMSArMjkzLDExIEBAIHByaXZhdGU6CiAgICAgICAgIGNhc2UgT29wczoK
ICAgICAgICAgY2FzZSBFbnRyeVN3aXRjaDoKICAgICAgICAgICAgIGlmIChVTkxJS0VMWShudW1B
cmdzKSkKLSAgICAgICAgICAgICAgICBiYWRPcGNvZGUob3Bjb2RlLCBudW1BcmdzKTsKKyAgICAg
ICAgICAgICAgICBiYWRLaW5kKGtpbmQsIG51bUFyZ3MpOwogICAgICAgICAgICAgYnJlYWs7CiAg
ICAgICAgIGNhc2UgUmV0dXJuOgogICAgICAgICAgICAgaWYgKFVOTElLRUxZKG51bUFyZ3MgPiAx
KSkKLSAgICAgICAgICAgICAgICBiYWRPcGNvZGUob3Bjb2RlLCBudW1BcmdzKTsKKyAgICAgICAg
ICAgICAgICBiYWRLaW5kKGtpbmQsIG51bUFyZ3MpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAg
ICAgIGNhc2UgSWRlbnRpdHk6CiAgICAgICAgIGNhc2UgTmVnOgpAQCAtMzEwLDcgKzMxOCw3IEBA
IHByaXZhdGU6CiAgICAgICAgIGNhc2UgQml0d2lzZUNhc3Q6CiAgICAgICAgIGNhc2UgQnJhbmNo
OgogICAgICAgICAgICAgaWYgKFVOTElLRUxZKG51bUFyZ3MgIT0gMSkpCi0gICAgICAgICAgICAg
ICAgYmFkT3Bjb2RlKG9wY29kZSwgbnVtQXJncyk7CisgICAgICAgICAgICAgICAgYmFkS2luZChr
aW5kLCBudW1BcmdzKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIEFkZDoKICAg
ICAgICAgY2FzZSBTdWI6CkBAIC0zMzcsMTQgKzM0NSwxNCBAQCBwcml2YXRlOgogICAgICAgICBj
YXNlIEJlbG93RXF1YWw6CiAgICAgICAgIGNhc2UgRXF1YWxPclVub3JkZXJlZDoKICAgICAgICAg
ICAgIGlmIChVTkxJS0VMWShudW1BcmdzICE9IDIpKQotICAgICAgICAgICAgICAgIGJhZE9wY29k
ZShvcGNvZGUsIG51bUFyZ3MpOworICAgICAgICAgICAgICAgIGJhZEtpbmQoa2luZCwgbnVtQXJn
cyk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBTZWxlY3Q6CiAgICAgICAgICAg
ICBpZiAoVU5MSUtFTFkobnVtQXJncyAhPSAzKSkKLSAgICAgICAgICAgICAgICBiYWRPcGNvZGUo
b3Bjb2RlLCBudW1BcmdzKTsKKyAgICAgICAgICAgICAgICBiYWRLaW5kKGtpbmQsIG51bUFyZ3Mp
OwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGRlZmF1bHQ6Ci0gICAgICAgICAgICBiYWRP
cGNvZGUob3Bjb2RlLCBudW1BcmdzKTsKKyAgICAgICAgICAgIGJhZEtpbmQoa2luZCwgbnVtQXJn
cyk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogICAgIH0KQEAgLTM1OCw1NiArMzY2
LDU2IEBAIHByb3RlY3RlZDoKICAgICAvLyBJbnN0YW50aWF0ZSB2YWx1ZXMgdmlhIFByb2NlZHVy
ZS4KICAgICAvLyBUaGlzIGZvcm0gcmVxdWlyZXMgc3BlY2lmeWluZyB0aGUgdHlwZSBleHBsaWNp
dGx5OgogICAgIHRlbXBsYXRlPHR5cGVuYW1lLi4uIEFyZ3VtZW50cz4KLSAgICBleHBsaWNpdCBW
YWx1ZShDaGVja2VkT3Bjb2RlVGFnLCBPcGNvZGUgb3Bjb2RlLCBUeXBlIHR5cGUsIE9yaWdpbiBv
cmlnaW4sIFZhbHVlKiBmaXJzdENoaWxkLCBBcmd1bWVudHMuLi4gYXJndW1lbnRzKQotICAgICAg
ICA6IG1fb3Bjb2RlKG9wY29kZSkKKyAgICBleHBsaWNpdCBWYWx1ZShDaGVja2VkT3Bjb2RlVGFn
LCBLaW5kIGtpbmQsIFR5cGUgdHlwZSwgT3JpZ2luIG9yaWdpbiwgVmFsdWUqIGZpcnN0Q2hpbGQs
IEFyZ3VtZW50cy4uLiBhcmd1bWVudHMpCisgICAgICAgIDogbV9raW5kKGtpbmQpCiAgICAgICAg
ICwgbV90eXBlKHR5cGUpCiAgICAgICAgICwgbV9vcmlnaW4ob3JpZ2luKQogICAgICAgICAsIG1f
Y2hpbGRyZW57IGZpcnN0Q2hpbGQsIGFyZ3VtZW50cy4uLiB9CiAgICAgewogICAgIH0KICAgICAv
LyBUaGlzIGZvcm0gaXMgZm9yIHNwZWNpZnlpbmcgdGhlIHR5cGUgZXhwbGljaXRseSB3aGVuIHRo
ZSBvcGNvZGUgaGFzIG5vIGNoaWxkcmVuOgotICAgIGV4cGxpY2l0IFZhbHVlKENoZWNrZWRPcGNv
ZGVUYWcsIE9wY29kZSBvcGNvZGUsIFR5cGUgdHlwZSwgT3JpZ2luIG9yaWdpbikKLSAgICAgICAg
OiBtX29wY29kZShvcGNvZGUpCisgICAgZXhwbGljaXQgVmFsdWUoQ2hlY2tlZE9wY29kZVRhZywg
S2luZCBraW5kLCBUeXBlIHR5cGUsIE9yaWdpbiBvcmlnaW4pCisgICAgICAgIDogbV9raW5kKGtp
bmQpCiAgICAgICAgICwgbV90eXBlKHR5cGUpCiAgICAgICAgICwgbV9vcmlnaW4ob3JpZ2luKQog
ICAgIHsKICAgICB9CiAgICAgLy8gVGhpcyBmb3JtIGlzIGZvciB0aG9zZSBvcGNvZGVzIHRoYXQg
Y2FuIGluZmVyIHRoZWlyIHR5cGUgZnJvbSB0aGUgb3Bjb2RlIGFuZCBmaXJzdCBjaGlsZDoKICAg
ICB0ZW1wbGF0ZTx0eXBlbmFtZS4uLiBBcmd1bWVudHM+Ci0gICAgZXhwbGljaXQgVmFsdWUoQ2hl
Y2tlZE9wY29kZVRhZywgT3Bjb2RlIG9wY29kZSwgT3JpZ2luIG9yaWdpbiwgVmFsdWUqIGZpcnN0
Q2hpbGQpCi0gICAgICAgIDogbV9vcGNvZGUob3Bjb2RlKQotICAgICAgICAsIG1fdHlwZSh0eXBl
Rm9yKG9wY29kZSwgZmlyc3RDaGlsZCkpCisgICAgZXhwbGljaXQgVmFsdWUoQ2hlY2tlZE9wY29k
ZVRhZywgS2luZCBraW5kLCBPcmlnaW4gb3JpZ2luLCBWYWx1ZSogZmlyc3RDaGlsZCkKKyAgICAg
ICAgOiBtX2tpbmQoa2luZCkKKyAgICAgICAgLCBtX3R5cGUodHlwZUZvcihraW5kLCBmaXJzdENo
aWxkKSkKICAgICAgICAgLCBtX29yaWdpbihvcmlnaW4pCiAgICAgICAgICwgbV9jaGlsZHJlbnsg
Zmlyc3RDaGlsZCB9CiAgICAgewogICAgIH0KICAgICAvLyBUaGlzIGZvcm0gaXMgZm9yIHRob3Nl
IG9wY29kZXMgdGhhdCBjYW4gaW5mZXIgdGhlaXIgdHlwZSBmcm9tIHRoZSBvcGNvZGUgYW5kIGZp
cnN0IGFuZCBzZWNvbmQgY2hpbGQ6CiAgICAgdGVtcGxhdGU8dHlwZW5hbWUuLi4gQXJndW1lbnRz
PgotICAgIGV4cGxpY2l0IFZhbHVlKENoZWNrZWRPcGNvZGVUYWcsIE9wY29kZSBvcGNvZGUsIE9y
aWdpbiBvcmlnaW4sIFZhbHVlKiBmaXJzdENoaWxkLCBWYWx1ZSogc2Vjb25kQ2hpbGQsIEFyZ3Vt
ZW50cy4uLiBhcmd1bWVudHMpCi0gICAgICAgIDogbV9vcGNvZGUob3Bjb2RlKQotICAgICAgICAs
IG1fdHlwZSh0eXBlRm9yKG9wY29kZSwgZmlyc3RDaGlsZCwgc2Vjb25kQ2hpbGQpKQorICAgIGV4
cGxpY2l0IFZhbHVlKENoZWNrZWRPcGNvZGVUYWcsIEtpbmQga2luZCwgT3JpZ2luIG9yaWdpbiwg
VmFsdWUqIGZpcnN0Q2hpbGQsIFZhbHVlKiBzZWNvbmRDaGlsZCwgQXJndW1lbnRzLi4uIGFyZ3Vt
ZW50cykKKyAgICAgICAgOiBtX2tpbmQoa2luZCkKKyAgICAgICAgLCBtX3R5cGUodHlwZUZvcihr
aW5kLCBmaXJzdENoaWxkLCBzZWNvbmRDaGlsZCkpCiAgICAgICAgICwgbV9vcmlnaW4ob3JpZ2lu
KQogICAgICAgICAsIG1fY2hpbGRyZW57IGZpcnN0Q2hpbGQsIHNlY29uZENoaWxkLCBhcmd1bWVu
dHMuLi4gfQogICAgIHsKICAgICB9CiAgICAgLy8gVGhpcyBmb3JtIGlzIGZvciB0aG9zZSBvcGNv
ZGVzIHRoYXQgY2FuIGluZmVyIHRoZWlyIHR5cGUgZnJvbSB0aGUgb3Bjb2RlIGFsb25lLCBhbmQg
dGhhdCBkb24ndAogICAgIC8vIHRha2UgYW55IGFyZ3VtZW50czoKLSAgICBleHBsaWNpdCBWYWx1
ZShDaGVja2VkT3Bjb2RlVGFnLCBPcGNvZGUgb3Bjb2RlLCBPcmlnaW4gb3JpZ2luKQotICAgICAg
ICA6IG1fb3Bjb2RlKG9wY29kZSkKLSAgICAgICAgLCBtX3R5cGUodHlwZUZvcihvcGNvZGUsIG51
bGxwdHIpKQorICAgIGV4cGxpY2l0IFZhbHVlKENoZWNrZWRPcGNvZGVUYWcsIEtpbmQga2luZCwg
T3JpZ2luIG9yaWdpbikKKyAgICAgICAgOiBtX2tpbmQoa2luZCkKKyAgICAgICAgLCBtX3R5cGUo
dHlwZUZvcihraW5kLCBudWxscHRyKSkKICAgICAgICAgLCBtX29yaWdpbihvcmlnaW4pCiAgICAg
ewogICAgIH0KICAgICAvLyBVc2UgdGhpcyBmb3JtIGZvciB2YXJhcmdzLgotICAgIGV4cGxpY2l0
IFZhbHVlKENoZWNrZWRPcGNvZGVUYWcsIE9wY29kZSBvcGNvZGUsIFR5cGUgdHlwZSwgT3JpZ2lu
IG9yaWdpbiwgY29uc3QgQWRqYWNlbmN5TGlzdCYgY2hpbGRyZW4pCi0gICAgICAgIDogbV9vcGNv
ZGUob3Bjb2RlKQorICAgIGV4cGxpY2l0IFZhbHVlKENoZWNrZWRPcGNvZGVUYWcsIEtpbmQga2lu
ZCwgVHlwZSB0eXBlLCBPcmlnaW4gb3JpZ2luLCBjb25zdCBBZGphY2VuY3lMaXN0JiBjaGlsZHJl
bikKKyAgICAgICAgOiBtX2tpbmQoa2luZCkKICAgICAgICAgLCBtX3R5cGUodHlwZSkKICAgICAg
ICAgLCBtX29yaWdpbihvcmlnaW4pCiAgICAgICAgICwgbV9jaGlsZHJlbihjaGlsZHJlbikKICAg
ICB7CiAgICAgfQotICAgIGV4cGxpY2l0IFZhbHVlKENoZWNrZWRPcGNvZGVUYWcsIE9wY29kZSBv
cGNvZGUsIFR5cGUgdHlwZSwgT3JpZ2luIG9yaWdpbiwgQWRqYWNlbmN5TGlzdCYmIGNoaWxkcmVu
KQotICAgICAgICA6IG1fb3Bjb2RlKG9wY29kZSkKKyAgICBleHBsaWNpdCBWYWx1ZShDaGVja2Vk
T3Bjb2RlVGFnLCBLaW5kIGtpbmQsIFR5cGUgdHlwZSwgT3JpZ2luIG9yaWdpbiwgQWRqYWNlbmN5
TGlzdCYmIGNoaWxkcmVuKQorICAgICAgICA6IG1fa2luZChraW5kKQogICAgICAgICAsIG1fdHlw
ZSh0eXBlKQogICAgICAgICAsIG1fb3JpZ2luKG9yaWdpbikKICAgICAgICAgLCBtX2NoaWxkcmVu
KFdURk1vdmUoY2hpbGRyZW4pKQpAQCAtNDE3LDQwICs0MjUsNDAgQEAgcHJvdGVjdGVkOgogICAg
IC8vIFRoaXMgaXMgdGhlIGNvbnN0cnVjdG9yIHlvdSBlbmQgdXAgYWN0dWFsbHkgY2FsbGluZywg
aWYgeW91J3JlIGluc3RhbnRpYXRpbmcgVmFsdWUKICAgICAvLyBkaXJlY3RseS4KICAgICB0ZW1w
bGF0ZTx0eXBlbmFtZS4uLiBBcmd1bWVudHM+Ci0gICAgICAgIGV4cGxpY2l0IFZhbHVlKE9wY29k
ZSBvcGNvZGUsIFR5cGUgdHlwZSwgT3JpZ2luIG9yaWdpbikKLSAgICAgICAgOiBWYWx1ZShDaGVj
a2VkT3Bjb2RlLCBvcGNvZGUsIHR5cGUsIG9yaWdpbikKKyAgICAgICAgZXhwbGljaXQgVmFsdWUo
S2luZCBraW5kLCBUeXBlIHR5cGUsIE9yaWdpbiBvcmlnaW4pCisgICAgICAgIDogVmFsdWUoQ2hl
Y2tlZE9wY29kZSwga2luZCwgdHlwZSwgb3JpZ2luKQogICAgIHsKLSAgICAgICAgY2hlY2tPcGNv
ZGUob3Bjb2RlLCAwKTsKKyAgICAgICAgY2hlY2tLaW5kKEtpbmQsIDApOwogICAgIH0KICAgICB0
ZW1wbGF0ZTx0eXBlbmFtZS4uLiBBcmd1bWVudHM+Ci0gICAgICAgIGV4cGxpY2l0IFZhbHVlKE9w
Y29kZSBvcGNvZGUsIFR5cGUgdHlwZSwgT3JpZ2luIG9yaWdpbiwgVmFsdWUqIGZpcnN0Q2hpbGQs
IEFyZ3VtZW50cyYmLi4uIGFyZ3VtZW50cykKLSAgICAgICAgOiBWYWx1ZShDaGVja2VkT3Bjb2Rl
LCBvcGNvZGUsIHR5cGUsIG9yaWdpbiwgZmlyc3RDaGlsZCwgc3RkOjpmb3J3YXJkPEFyZ3VtZW50
cz4oYXJndW1lbnRzKS4uLikKKyAgICAgICAgZXhwbGljaXQgVmFsdWUoS2luZCBraW5kLCBUeXBl
IHR5cGUsIE9yaWdpbiBvcmlnaW4sIFZhbHVlKiBmaXJzdENoaWxkLCBBcmd1bWVudHMmJi4uLiBh
cmd1bWVudHMpCisgICAgICAgIDogVmFsdWUoQ2hlY2tlZE9wY29kZSwga2luZCwgdHlwZSwgb3Jp
Z2luLCBmaXJzdENoaWxkLCBzdGQ6OmZvcndhcmQ8QXJndW1lbnRzPihhcmd1bWVudHMpLi4uKQog
ICAgIHsKLSAgICAgICAgY2hlY2tPcGNvZGUob3Bjb2RlLCAxICsgc2l6ZW9mLi4uKGFyZ3VtZW50
cykpOworICAgICAgICBjaGVja0tpbmQoa2luZCwgMSArIHNpemVvZi4uLihhcmd1bWVudHMpKTsK
ICAgICB9CiAgICAgdGVtcGxhdGU8dHlwZW5hbWUuLi4gQXJndW1lbnRzPgotICAgICAgICBleHBs
aWNpdCBWYWx1ZShPcGNvZGUgb3Bjb2RlLCBUeXBlIHR5cGUsIE9yaWdpbiBvcmlnaW4sIGNvbnN0
IEFkamFjZW5jeUxpc3QmIGNoaWxkcmVuKQotICAgICAgICA6IFZhbHVlKENoZWNrZWRPcGNvZGUs
IG9wY29kZSwgdHlwZSwgb3JpZ2luLCBjaGlsZHJlbikKKyAgICAgICAgZXhwbGljaXQgVmFsdWUo
S2luZCBraW5kLCBUeXBlIHR5cGUsIE9yaWdpbiBvcmlnaW4sIGNvbnN0IEFkamFjZW5jeUxpc3Qm
IGNoaWxkcmVuKQorICAgICAgICA6IFZhbHVlKENoZWNrZWRPcGNvZGUsIGtpbmQsIHR5cGUsIG9y
aWdpbiwgY2hpbGRyZW4pCiAgICAgewotICAgICAgICBjaGVja09wY29kZShvcGNvZGUsIGNoaWxk
cmVuLnNpemUoKSk7CisgICAgICAgIGNoZWNrS2luZChraW5kLCBjaGlsZHJlbi5zaXplKCkpOwog
ICAgIH0KICAgICB0ZW1wbGF0ZTx0eXBlbmFtZS4uLiBBcmd1bWVudHM+Ci0gICAgICAgIGV4cGxp
Y2l0IFZhbHVlKE9wY29kZSBvcGNvZGUsIFR5cGUgdHlwZSwgT3JpZ2luIG9yaWdpbiwgQWRqYWNl
bmN5TGlzdCYmIGNoaWxkcmVuKQotICAgICAgICA6IFZhbHVlKENoZWNrZWRPcGNvZGUsIG9wY29k
ZSwgdHlwZSwgb3JpZ2luLCBXVEZNb3ZlKGNoaWxkcmVuKSkKKyAgICAgICAgZXhwbGljaXQgVmFs
dWUoS2luZCBraW5kLCBUeXBlIHR5cGUsIE9yaWdpbiBvcmlnaW4sIEFkamFjZW5jeUxpc3QmJiBj
aGlsZHJlbikKKyAgICAgICAgOiBWYWx1ZShDaGVja2VkT3Bjb2RlLCBraW5kLCB0eXBlLCBvcmln
aW4sIFdURk1vdmUoY2hpbGRyZW4pKQogICAgIHsKLSAgICAgICAgY2hlY2tPcGNvZGUob3Bjb2Rl
LCBtX2NoaWxkcmVuLnNpemUoKSk7CisgICAgICAgIGNoZWNrS2luZChraW5kLCBtX2NoaWxkcmVu
LnNpemUoKSk7CiAgICAgfQogICAgIHRlbXBsYXRlPHR5cGVuYW1lLi4uIEFyZ3VtZW50cz4KLSAg
ICAgICAgZXhwbGljaXQgVmFsdWUoT3Bjb2RlIG9wY29kZSwgT3JpZ2luIG9yaWdpbiwgQXJndW1l
bnRzJiYuLi4gYXJndW1lbnRzKQotICAgICAgICA6IFZhbHVlKENoZWNrZWRPcGNvZGUsIG9wY29k
ZSwgb3JpZ2luLCBzdGQ6OmZvcndhcmQ8QXJndW1lbnRzPihhcmd1bWVudHMpLi4uKQorICAgICAg
ICBleHBsaWNpdCBWYWx1ZShLaW5kIGtpbmQsIE9yaWdpbiBvcmlnaW4sIEFyZ3VtZW50cyYmLi4u
IGFyZ3VtZW50cykKKyAgICAgICAgOiBWYWx1ZShDaGVja2VkT3Bjb2RlLCBraW5kLCBvcmlnaW4s
IHN0ZDo6Zm9yd2FyZDxBcmd1bWVudHM+KGFyZ3VtZW50cykuLi4pCiAgICAgewotICAgICAgICBj
aGVja09wY29kZShvcGNvZGUsIHNpemVvZi4uLihhcmd1bWVudHMpKTsKKyAgICAgICAgY2hlY2tL
aW5kKGtpbmQsIHNpemVvZi4uLihhcmd1bWVudHMpKTsKICAgICB9CiAKIHByaXZhdGU6CiAgICAg
ZnJpZW5kIGNsYXNzIENoZWNrVmFsdWU7IC8vIENoZWNrVmFsdWU6OmNvbnZlcnRUb0FkZCgpIG1v
ZGlmaWVzIG1fb3Bjb2RlLgogICAgIAotICAgIHN0YXRpYyBUeXBlIHR5cGVGb3IoT3Bjb2RlLCBW
YWx1ZSogZmlyc3RDaGlsZCwgVmFsdWUqIHNlY29uZENoaWxkID0gbnVsbHB0cik7CisgICAgc3Rh
dGljIFR5cGUgdHlwZUZvcihLaW5kLCBWYWx1ZSogZmlyc3RDaGlsZCwgVmFsdWUqIHNlY29uZENo
aWxkID0gbnVsbHB0cik7CiAKICAgICAvLyBUaGlzIGdyb3VwIG9mIGZpZWxkcyBpcyBhcnJhbmdl
ZCB0byBmaXQgaW4gNjQgYml0cy4KIHByb3RlY3RlZDoKQEAgLTQ2Miw3ICs0NzAsNyBAQCBwcml2
YXRlOgogICAgIE9yaWdpbiBtX29yaWdpbjsKICAgICBBZGphY2VuY3lMaXN0IG1fY2hpbGRyZW47
CiAKLSAgICBKU19FWFBPUlRfUFJJVkFURSBOT19SRVRVUk5fRFVFX1RPX0NSQVNIIHN0YXRpYyB2
b2lkIGJhZE9wY29kZShPcGNvZGUsIHVuc2lnbmVkKTsKKyAgICBKU19FWFBPUlRfUFJJVkFURSBO
T19SRVRVUk5fRFVFX1RPX0NSQVNIIHN0YXRpYyB2b2lkIGJhZEtpbmQoS2luZCwgdW5zaWduZWQp
OwogCiBwdWJsaWM6CiAgICAgQmFzaWNCbG9jayogb3duZXIgeyBudWxscHRyIH07IC8vIGNvbXB1
dGVkIGJ5IFByb2NlZHVyZTo6cmVzZXRWYWx1ZU93bmVycygpLgpJbmRleDogU291cmNlL0phdmFT
Y3JpcHRDb3JlL2IzL0IzVmFsdWVLZXkuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9iMy9CM1ZhbHVlS2V5LmNwcAkocmV2aXNpb24gMjA2NTI0KQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL2IzL0IzVmFsdWVLZXkuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01MSwxNCAr
NTEsMTQgQEAgVmFsdWVLZXkgVmFsdWVLZXk6OmludENvbnN0YW50KFR5cGUgdHlwZQogCiB2b2lk
IFZhbHVlS2V5OjpkdW1wKFByaW50U3RyZWFtJiBvdXQpIGNvbnN0CiB7Ci0gICAgb3V0LnByaW50
KG1fdHlwZSwgIiAiLCBtX29wY29kZSwgIigiLCB1LmluZGljZXNbMF0sICIsICIsIHUuaW5kaWNl
c1sxXSwgIiwgIiwgdS5pbmRpY2VzWzJdLCAiKSIpOworICAgIG91dC5wcmludChtX3R5cGUsICIg
IiwgbV9raW5kLCAiKCIsIHUuaW5kaWNlc1swXSwgIiwgIiwgdS5pbmRpY2VzWzFdLCAiLCAiLCB1
LmluZGljZXNbMl0sICIpIik7CiB9CiAKIFZhbHVlKiBWYWx1ZUtleTo6bWF0ZXJpYWxpemUoUHJv
Y2VkdXJlJiBwcm9jLCBPcmlnaW4gb3JpZ2luKSBjb25zdAogewogICAgIHN3aXRjaCAob3Bjb2Rl
KCkpIHsKICAgICBjYXNlIEZyYW1lUG9pbnRlcjoKLSAgICAgICAgcmV0dXJuIHByb2MuYWRkPFZh
bHVlPihvcGNvZGUoKSwgdHlwZSgpLCBvcmlnaW4pOworICAgICAgICByZXR1cm4gcHJvYy5hZGQ8
VmFsdWU+KGtpbmQoKSwgdHlwZSgpLCBvcmlnaW4pOwogICAgIGNhc2UgSWRlbnRpdHk6CiAgICAg
Y2FzZSBTcXJ0OgogICAgIGNhc2UgU0V4dDg6CkBAIC03MiwxMSArNzIsMTAgQEAgVmFsdWUqIFZh
bHVlS2V5OjptYXRlcmlhbGl6ZShQcm9jZWR1cmUmIAogICAgIGNhc2UgRmxvYXRUb0RvdWJsZToK
ICAgICBjYXNlIERvdWJsZVRvRmxvYXQ6CiAgICAgY2FzZSBDaGVjazoKLSAgICAgICAgcmV0dXJu
IHByb2MuYWRkPFZhbHVlPihvcGNvZGUoKSwgdHlwZSgpLCBvcmlnaW4sIGNoaWxkKHByb2MsIDAp
KTsKKyAgICAgICAgcmV0dXJuIHByb2MuYWRkPFZhbHVlPihraW5kKCksIHR5cGUoKSwgb3JpZ2lu
LCBjaGlsZChwcm9jLCAwKSk7CiAgICAgY2FzZSBBZGQ6CiAgICAgY2FzZSBTdWI6CiAgICAgY2Fz
ZSBNdWw6Ci0gICAgY2FzZSBDaGlsbERpdjoKICAgICBjYXNlIE1vZDoKICAgICBjYXNlIEJpdEFu
ZDoKICAgICBjYXNlIEJpdE9yOgpAQCAtOTMsOSArOTIsOSBAQCBWYWx1ZSogVmFsdWVLZXk6Om1h
dGVyaWFsaXplKFByb2NlZHVyZSYgCiAgICAgY2FzZSBBYm92ZUVxdWFsOgogICAgIGNhc2UgQmVs
b3dFcXVhbDoKICAgICBjYXNlIERpdjoKLSAgICAgICAgcmV0dXJuIHByb2MuYWRkPFZhbHVlPihv
cGNvZGUoKSwgdHlwZSgpLCBvcmlnaW4sIGNoaWxkKHByb2MsIDApLCBjaGlsZChwcm9jLCAxKSk7
CisgICAgICAgIHJldHVybiBwcm9jLmFkZDxWYWx1ZT4oa2luZCgpLCB0eXBlKCksIG9yaWdpbiwg
Y2hpbGQocHJvYywgMCksIGNoaWxkKHByb2MsIDEpKTsKICAgICBjYXNlIFNlbGVjdDoKLSAgICAg
ICAgcmV0dXJuIHByb2MuYWRkPFZhbHVlPihvcGNvZGUoKSwgdHlwZSgpLCBvcmlnaW4sIGNoaWxk
KHByb2MsIDApLCBjaGlsZChwcm9jLCAxKSwgY2hpbGQocHJvYywgMikpOworICAgICAgICByZXR1
cm4gcHJvYy5hZGQ8VmFsdWU+KGtpbmQoKSwgdHlwZSgpLCBvcmlnaW4sIGNoaWxkKHByb2MsIDAp
LCBjaGlsZChwcm9jLCAxKSwgY2hpbGQocHJvYywgMikpOwogICAgIGNhc2UgQ29uc3QzMjoKICAg
ICAgICAgcmV0dXJuIHByb2MuYWRkPENvbnN0MzJWYWx1ZT4ob3JpZ2luLCBzdGF0aWNfY2FzdDxp
bnQzMl90Pih2YWx1ZSgpKSk7CiAgICAgY2FzZSBDb25zdDY0OgpJbmRleDogU291cmNlL0phdmFT
Y3JpcHRDb3JlL2IzL0IzVmFsdWVLZXkuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvYjMvQjNWYWx1ZUtleS5oCShyZXZpc2lvbiAyMDY1MjQpCisrKyBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvYjMvQjNWYWx1ZUtleS5oCSh3b3JraW5nIGNvcHkpCkBAIC0yOSw3ICsyOSw3IEBA
CiAjaWYgRU5BQkxFKEIzX0pJVCkKIAogI2luY2x1ZGUgIkIzSGVhcFJhbmdlLmgiCi0jaW5jbHVk
ZSAiQjNPcGNvZGUuaCIKKyNpbmNsdWRlICJCM0tpbmQuaCIKICNpbmNsdWRlICJCM09yaWdpbi5o
IgogI2luY2x1ZGUgIkIzVHlwZS5oIgogI2luY2x1ZGUgPHd0Zi9IYXNoVGFibGUuaD4KQEAgLTUx
LDM0ICs1MSwzNCBAQCBwdWJsaWM6CiAgICAgewogICAgIH0KIAotICAgIFZhbHVlS2V5KE9wY29k
ZSBvcGNvZGUsIFR5cGUgdHlwZSkKLSAgICAgICAgOiBtX29wY29kZShvcGNvZGUpCisgICAgVmFs
dWVLZXkoS2luZCBraW5kLCBUeXBlIHR5cGUpCisgICAgICAgIDogbV9raW5kKGtpbmQpCiAgICAg
ICAgICwgbV90eXBlKHR5cGUpCiAgICAgewogICAgIH0KIAotICAgIFZhbHVlS2V5KE9wY29kZSwg
VHlwZSwgVmFsdWUqIGNoaWxkKTsKKyAgICBWYWx1ZUtleShLaW5kLCBUeXBlLCBWYWx1ZSogY2hp
bGQpOwogCi0gICAgVmFsdWVLZXkoT3Bjb2RlLCBUeXBlLCBWYWx1ZSogbGVmdCwgVmFsdWUqIHJp
Z2h0KTsKKyAgICBWYWx1ZUtleShLaW5kLCBUeXBlLCBWYWx1ZSogbGVmdCwgVmFsdWUqIHJpZ2h0
KTsKIAotICAgIFZhbHVlS2V5KE9wY29kZSwgVHlwZSwgVmFsdWUqIGEsIFZhbHVlKiBiLCBWYWx1
ZSogYyk7CisgICAgVmFsdWVLZXkoS2luZCwgVHlwZSwgVmFsdWUqIGEsIFZhbHVlKiBiLCBWYWx1
ZSogYyk7CiAKLSAgICBWYWx1ZUtleShPcGNvZGUgb3Bjb2RlLCBUeXBlIHR5cGUsIGludDY0X3Qg
dmFsdWUpCi0gICAgICAgIDogbV9vcGNvZGUob3Bjb2RlKQorICAgIFZhbHVlS2V5KEtpbmQga2lu
ZCwgVHlwZSB0eXBlLCBpbnQ2NF90IHZhbHVlKQorICAgICAgICA6IG1fa2luZChraW5kKQogICAg
ICAgICAsIG1fdHlwZSh0eXBlKQogICAgIHsKICAgICAgICAgdS52YWx1ZSA9IHZhbHVlOwogICAg
IH0KIAotICAgIFZhbHVlS2V5KE9wY29kZSBvcGNvZGUsIFR5cGUgdHlwZSwgZG91YmxlIHZhbHVl
KQotICAgICAgICA6IG1fb3Bjb2RlKG9wY29kZSkKKyAgICBWYWx1ZUtleShLaWRuIGtpbmQsIFR5
cGUgdHlwZSwgZG91YmxlIHZhbHVlKQorICAgICAgICA6IG1fa2luZChraW5kKQogICAgICAgICAs
IG1fdHlwZSh0eXBlKQogICAgIHsKICAgICAgICAgdS5kb3VibGVWYWx1ZSA9IHZhbHVlOwogICAg
IH0KIAotICAgIFZhbHVlS2V5KE9wY29kZSBvcGNvZGUsIFR5cGUgdHlwZSwgZmxvYXQgdmFsdWUp
Ci0gICAgICAgIDogbV9vcGNvZGUob3Bjb2RlKQorICAgIFZhbHVlS2V5KEtpbmQga2luZCwgVHlw
ZSB0eXBlLCBmbG9hdCB2YWx1ZSkKKyAgICAgICAgOiBtX2tpbmQoa2luZCkKICAgICAgICAgLCBt
X3R5cGUodHlwZSkKICAgICB7CiAgICAgICAgIHUuZmxvYXRWYWx1ZSA9IHZhbHVlOwpAQCAtODYs
NyArODYsOCBAQCBwdWJsaWM6CiAKICAgICBzdGF0aWMgVmFsdWVLZXkgaW50Q29uc3RhbnQoVHlw
ZSB0eXBlLCBpbnQ2NF90IHZhbHVlKTsKIAotICAgIE9wY29kZSBvcGNvZGUoKSBjb25zdCB7IHJl
dHVybiBtX29wY29kZTsgfQorICAgIEtpbmQga2luZCgpIGNvbnN0IHsgcmV0dXJuIG1fa2luZDsg
fQorICAgIE9wY29kZSBvcGNvZGUoKSBjb25zdCB7IHJldHVybiBraW5kKCkub3Bjb2RlKCk7IH0K
ICAgICBUeXBlIHR5cGUoKSBjb25zdCB7IHJldHVybiBtX3R5cGU7IH0KICAgICB1bnNpZ25lZCBj
aGlsZEluZGV4KHVuc2lnbmVkIGluZGV4KSBjb25zdCB7IHJldHVybiB1LmluZGljZXNbaW5kZXhd
OyB9CiAgICAgVmFsdWUqIGNoaWxkKFByb2NlZHVyZSYsIHVuc2lnbmVkIGluZGV4KSBjb25zdDsK
QEAgLTk2LDcgKzk3LDcgQEAgcHVibGljOgogCiAgICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IFZh
bHVlS2V5JiBvdGhlcikgY29uc3QKICAgICB7Ci0gICAgICAgIHJldHVybiBtX29wY29kZSA9PSBv
dGhlci5tX29wY29kZQorICAgICAgICByZXR1cm4gbV9raW5kID09IG90aGVyLm1fa2luZAogICAg
ICAgICAgICAgJiYgbV90eXBlID09IG90aGVyLm1fdHlwZQogICAgICAgICAgICAgJiYgdSA9PSBv
dGhlci51OwogICAgIH0KQEAgLTEwOCw3ICsxMDksNyBAQCBwdWJsaWM6CiAKICAgICB1bnNpZ25l
ZCBoYXNoKCkgY29uc3QKICAgICB7Ci0gICAgICAgIHJldHVybiBtX29wY29kZSArIG1fdHlwZSAr
IFdURjo6SW50SGFzaDxpbnQzMl90Pjo6aGFzaCh1LmluZGljZXNbMF0pICsgdS5pbmRpY2VzWzFd
ICsgdS5pbmRpY2VzWzJdOworICAgICAgICByZXR1cm4gbV9raW5kLmhhc2goKSArIG1fdHlwZSAr
IFdURjo6SW50SGFzaDxpbnQzMl90Pjo6aGFzaCh1LmluZGljZXNbMF0pICsgdS5pbmRpY2VzWzFd
ICsgdS5pbmRpY2VzWzJdOwogICAgIH0KIAogICAgIGV4cGxpY2l0IG9wZXJhdG9yIGJvb2woKSBj
b25zdCB7IHJldHVybiAqdGhpcyAhPSBWYWx1ZUtleSgpOyB9CkBAIC0xNTAsNyArMTUxLDcgQEAg
cHVibGljOgogICAgIH0KICAgICAgICAgCiBwcml2YXRlOgotICAgIE9wY29kZSBtX29wY29kZSB7
IE9vcHMgfTsKKyAgICBLaW5kIG1fa2luZDsKICAgICBUeXBlIG1fdHlwZSB7IFZvaWQgfTsKICAg
ICB1bmlvbiBVIHsKICAgICAgICAgdW5zaWduZWQgaW5kaWNlc1szXTsKSW5kZXg6IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9iMy9CM1ZhbHVlS2V5SW5saW5lcy5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9iMy9CM1ZhbHVlS2V5SW5saW5lcy5oCShyZXZpc2lvbiAyMDY1MjQp
CisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNWYWx1ZUtleUlubGluZXMuaAkod29ya2lu
ZyBjb3B5KQpAQCAtMzQsMjMgKzM0LDIzIEBACiAKIG5hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2Ug
QjMgewogCi1pbmxpbmUgVmFsdWVLZXk6OlZhbHVlS2V5KE9wY29kZSBvcGNvZGUsIFR5cGUgdHlw
ZSwgVmFsdWUqIGNoaWxkKQotICAgIDogbV9vcGNvZGUob3Bjb2RlKQoraW5saW5lIFZhbHVlS2V5
OjpWYWx1ZUtleShLaW5kIGtpbmQsIFR5cGUgdHlwZSwgVmFsdWUqIGNoaWxkKQorICAgIDogbV9r
aW5kKGtpbmQpCiAgICAgLCBtX3R5cGUodHlwZSkKIHsKICAgICB1LmluZGljZXNbMF0gPSBjaGls
ZC0+aW5kZXgoKTsKIH0KIAotaW5saW5lIFZhbHVlS2V5OjpWYWx1ZUtleShPcGNvZGUgb3Bjb2Rl
LCBUeXBlIHR5cGUsIFZhbHVlKiBsZWZ0LCBWYWx1ZSogcmlnaHQpCi0gICAgOiBtX29wY29kZShv
cGNvZGUpCitpbmxpbmUgVmFsdWVLZXk6OlZhbHVlS2V5KEtpbmQga2luZCwgVHlwZSB0eXBlLCBW
YWx1ZSogbGVmdCwgVmFsdWUqIHJpZ2h0KQorICAgIDogbV9raW5kKGtpbmQpCiAgICAgLCBtX3R5
cGUodHlwZSkKIHsKICAgICB1LmluZGljZXNbMF0gPSBsZWZ0LT5pbmRleCgpOwogICAgIHUuaW5k
aWNlc1sxXSA9IHJpZ2h0LT5pbmRleCgpOwogfQogCi1pbmxpbmUgVmFsdWVLZXk6OlZhbHVlS2V5
KE9wY29kZSBvcGNvZGUsIFR5cGUgdHlwZSwgVmFsdWUqIGEsIFZhbHVlKiBiLCBWYWx1ZSogYykK
LSAgICA6IG1fb3Bjb2RlKG9wY29kZSkKK2lubGluZSBWYWx1ZUtleTo6VmFsdWVLZXkoS2luZCBr
aW5kLCBUeXBlIHR5cGUsIFZhbHVlKiBhLCBWYWx1ZSogYiwgVmFsdWUqIGMpCisgICAgOiBtX2tp
bmQoa2luZCkKICAgICAsIG1fdHlwZSh0eXBlKQogewogICAgIHUuaW5kaWNlc1swXSA9IGEtPmlu
ZGV4KCk7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>290123</attachid>
            <date>2016-09-28 14:41:58 -0700</date>
            <delta_ts>2016-09-28 19:22:43 -0700</delta_ts>
            <desc>more</desc>
            <filename>blah.patch</filename>
            <type>text/plain</type>
            <size>65947</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2Ny
aXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCShyZXZpc2lvbiAyMDY1MjQpCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvagkod29ya2luZyBjb3B5KQpAQCAtNzIyLDYgKzcyMiw4IEBACiAJCTBGREIyQ0VBMTc0ODk2
QzcwMDdCM0MxQiAvKiBDb25jdXJyZW50SklUTG9jay5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEZEQjJDRTkxNzQ4OTZDNzAwN0IzQzFCIC8qIENvbmN1
cnJlbnRKSVRMb2NrLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsg
fTsgfTsKIAkJMEZEREJGQjUxNjY2RUVEODAwQzU1RkVGIC8qIERGR1ZhcmlhYmxlQWNjZXNzRGF0
YUR1bXAuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
MEZEREJGQjIxNjY2RUVENTAwQzU1RkVGIC8qIERGR1ZhcmlhYmxlQWNjZXNzRGF0YUR1bXAuY3Bw
ICovOyB9OwogCQkwRkREQkZCNjE2NjZFRURBMDBDNTVGRUYgLyogREZHVmFyaWFibGVBY2Nlc3NE
YXRhRHVtcC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
MEZEREJGQjMxNjY2RUVENTAwQzU1RkVGIC8qIERGR1ZhcmlhYmxlQWNjZXNzRGF0YUR1bXAuaCAq
LzsgfTsKKwkJMEZERjY3RDIxRDlDNkQyNzAwMUI5ODI1IC8qIEIzS2luZC5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEZERjY3RDExRDlDNjA4NjAwMUI5
ODI1IC8qIEIzS2luZC5oICovOyB9OworCQkwRkRGNjdEMzFEOUM2RDJBMDAxQjk4MjUgLyogQjNL
aW5kLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBG
REY2N0QwMUQ5QzYwODYwMDFCOTgyNSAvKiBCM0tpbmQuY3BwICovOyB9OwogCQkwRkRGNzA4NTFE
M0YyQzIyMDA5Mjc0NDkgLyogQWlyTG93ZXJFbnRyeVN3aXRjaC5jcHAgaW4gU291cmNlcyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRkRGNzA4MzFEM0YyQzFGMDA5Mjc0NDkg
LyogQWlyTG93ZXJFbnRyeVN3aXRjaC5jcHAgKi87IH07CiAJCTBGREY3MDg2MUQzRjJDMjUwMDky
NzQ0OSAvKiBBaXJMb3dlckVudHJ5U3dpdGNoLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSAwRkRGNzA4NDFEM0YyQzFGMDA5Mjc0NDkgLyogQWlyTG93ZXJF
bnRyeVN3aXRjaC5oICovOyB9OwogCQkwRkUwNTAxNDFBQTkwOTExMDBEMzNCMzMgLyogQXJndW1l
bnRzTW9kZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
MEZFMDUwMEMxQUE5MDkxMTAwRDMzQjMzIC8qIEFyZ3VtZW50c01vZGUuaCAqLzsgc2V0dGluZ3Mg
PSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwpAQCAtMjk3NSw2ICsyOTc3LDggQEAK
IAkJMEZEQjJDRTkxNzQ4OTZDNzAwN0IzQzFCIC8qIENvbmN1cnJlbnRKSVRMb2NrLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IENvbmN1cnJlbnRKSVRMb2NrLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGRERCRkIyMTY2NkVFRDUwMEM1NUZFRiAvKiBERkdWYXJp
YWJsZUFjY2Vzc0RhdGFEdW1wLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFt
ZSA9IERGR1ZhcmlhYmxlQWNjZXNzRGF0YUR1bXAuY3BwOyBwYXRoID0gZGZnL0RGR1ZhcmlhYmxl
QWNjZXNzRGF0YUR1bXAuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwRkREQkZC
MzE2NjZFRUQ1MDBDNTVGRUYgLyogREZHVmFyaWFibGVBY2Nlc3NEYXRhRHVtcC5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBERkdWYXJpYWJsZUFjY2Vzc0RhdGFEdW1wLmg7IHBh
dGggPSBkZmcvREZHVmFyaWFibGVBY2Nlc3NEYXRhRHVtcC5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OworCQkwRkRGNjdEMDFEOUM2MDg2MDAxQjk4MjUgLyogQjNLaW5kLmNwcCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IEIzS2luZC5jcHA7IHBhdGggPSBiMy9CM0tp
bmQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwRkRGNjdEMTFEOUM2MDg2MDAx
Qjk4MjUgLyogQjNLaW5kLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IEIzS2lu
ZC5oOyBwYXRoID0gYjMvQjNLaW5kLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBG
REY3MDgzMUQzRjJDMUYwMDkyNzQ0OSAvKiBBaXJMb3dlckVudHJ5U3dpdGNoLmNwcCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IEFpckxvd2VyRW50cnlTd2l0Y2guY3BwOyBw
YXRoID0gYjMvYWlyL0Fpckxvd2VyRW50cnlTd2l0Y2guY3BwOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQkwRkRGNzA4NDFEM0YyQzFGMDA5Mjc0NDkgLyogQWlyTG93ZXJFbnRyeVN3aXRj
aC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBBaXJMb3dlckVudHJ5U3dpdGNo
Lmg7IHBhdGggPSBiMy9haXIvQWlyTG93ZXJFbnRyeVN3aXRjaC5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQkwRkUwNTAwQzFBQTkwOTExMDBEMzNCMzMgLyogQXJndW1lbnRzTW9kZS5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBBcmd1bWVudHNNb2RlLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC00ODY5LDYgKzQ4NzMsOCBAQAogCQkJCTBGRUM4NUI0
MUJFMTQ2MkYwMDgwRkY3NCAvKiBCM0luc2VydGlvblNldC5jcHAgKi8sCiAJCQkJMEZFQzg1QjUx
QkUxNDYyRjAwODBGRjc0IC8qIEIzSW5zZXJ0aW9uU2V0LmggKi8sCiAJCQkJMEZFQzg1QjYxQkUx
NDYyRjAwODBGRjc0IC8qIEIzSW5zZXJ0aW9uU2V0SW5saW5lcy5oICovLAorCQkJCTBGREY2N0Qw
MUQ5QzYwODYwMDFCOTgyNSAvKiBCM0tpbmQuY3BwICovLAorCQkJCTBGREY2N0QxMUQ5QzYwODYw
MDFCOTgyNSAvKiBCM0tpbmQuaCAqLywKIAkJCQk0MzZFNTQ1MTFDNDY4RTVGMDBCNUFGNzMgLyog
QjNMZWdhbGl6ZU1lbW9yeU9mZnNldHMuY3BwICovLAogCQkJCTQzNkU1NDUyMUM0NjhFNUYwMEI1
QUY3MyAvKiBCM0xlZ2FsaXplTWVtb3J5T2Zmc2V0cy5oICovLAogCQkJCTBGMzM4RTE5MUJGMjg2
RUEwMDEzQzg4RiAvKiBCM0xvd2VyTWFjcm9zLmNwcCAqLywKQEAgLTc3MjgsNiArNzczNCw3IEBA
CiAJCQkJMEY2NEVBRjMxQzRFQ0QwNjAwNjIxRTlCIC8qIEFpckFyZ0lubGluZXMuaCBpbiBIZWFk
ZXJzICovLAogCQkJCUE1RUE3MTA1MTlGNkRFNzQwMDk4RjVFQyAvKiBnZW5lcmF0ZV9vYmpjX2Nv
bmZpZ3VyYXRpb25faGVhZGVyLnB5IGluIEhlYWRlcnMgKi8sCiAJCQkJREM2OUI5OUQxRDE1Rjkx
NDAwMkUzQzAwIC8qIEIzSW5mZXJTd2l0Y2hlcy5oIGluIEhlYWRlcnMgKi8sCisJCQkJMEZERjY3
RDIxRDlDNkQyNzAwMUI5ODI1IC8qIEIzS2luZC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTVFQTcx
MDYxOUY2REU3NjAwOThGNUVDIC8qIGdlbmVyYXRlX29iamNfY29uZmlndXJhdGlvbl9pbXBsZW1l
bnRhdGlvbi5weSBpbiBIZWFkZXJzICovLAogCQkJCTBGN0MzOUZGMUM5MEM1NUIwMDQ4MDE1MSAv
KiBERkdPcEluZm8uaCBpbiBIZWFkZXJzICovLAogCQkJCUE1RUE3MTA3MTlGNkRFNzgwMDk4RjVF
QyAvKiBnZW5lcmF0ZV9vYmpjX3Byb3RvY29sX3R5cGVfY29udmVyc2lvbnNfaGVhZGVyLnB5IGlu
IEhlYWRlcnMgKi8sCkBAIC05MDgwLDYgKzkwODcsNyBAQAogCQkJCTBGRkZDOTU5MTRFRjkwQTYw
MEM3MjUzMiAvKiBERkdDU0VQaGFzZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwRjJGQzc3MjE2
RTEyRjcxMDAzOEQ5NzYgLyogREZHRENFUGhhc2UuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMEYz
MzhFMTIxQkYwMjc2QzAwMTNDODhGIC8qIEIzT3BhcXVlQnlwcm9kdWN0cy5jcHAgaW4gU291cmNl
cyAqLywKKwkJCQkwRkRGNjdEMzFEOUM2RDJBMDAxQjk4MjUgLyogQjNLaW5kLmNwcCBpbiBTb3Vy
Y2VzICovLAogCQkJCTBGOEYyQjk5MTcyRjA0RkYwMDdEQkRBNSAvKiBERkdEZXNpcmVkSWRlbnRp
ZmllcnMuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQzJDMEY3Q0QxN0JCRkM1QjAwNDY0RkU0IC8q
IERGR0Rlc2lyZWRUcmFuc2l0aW9ucy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwRkU4NTM0QjE3
MjNDREE1MDBCNjE4RjUgLyogREZHRGVzaXJlZFdhdGNocG9pbnRzLmNwcCBpbiBTb3VyY2VzICov
LApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzQXJndW1lbnRSZWdWYWx1ZS5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM0FyZ3VtZW50UmVnVmFsdWUu
aAkocmV2aXNpb24gMjA2NTI0KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzQXJndW1l
bnRSZWdWYWx1ZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0zNSw3ICszNSw3IEBAIG5hbWVzcGFjZSBK
U0MgeyBuYW1lc3BhY2UgQjMgewogCiBjbGFzcyBKU19FWFBPUlRfUFJJVkFURSBBcmd1bWVudFJl
Z1ZhbHVlIDogcHVibGljIFZhbHVlIHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgYm9vbCBhY2NlcHRz
KE9wY29kZSBvcGNvZGUpIHsgcmV0dXJuIG9wY29kZSA9PSBBcmd1bWVudFJlZzsgfQorICAgIHN0
YXRpYyBib29sIGFjY2VwdHMoS2luZCBraW5kKSB7IHJldHVybiBraW5kID09IEFyZ3VtZW50UmVn
OyB9CiAgICAgCiAgICAgfkFyZ3VtZW50UmVnVmFsdWUoKTsKIApJbmRleDogU291cmNlL0phdmFT
Y3JpcHRDb3JlL2IzL0IzQ0NhbGxWYWx1ZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9iMy9CM0NDYWxsVmFsdWUuaAkocmV2aXNpb24gMjA2NTI0KQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL2IzL0IzQ0NhbGxWYWx1ZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0zNSw3ICsz
NSw3IEBAIG5hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgQjMgewogCiBjbGFzcyBKU19FWFBPUlRf
UFJJVkFURSBDQ2FsbFZhbHVlIDogcHVibGljIFZhbHVlIHsKIHB1YmxpYzoKLSAgICBzdGF0aWMg
Ym9vbCBhY2NlcHRzKE9wY29kZSBvcGNvZGUpIHsgcmV0dXJuIG9wY29kZSA9PSBDQ2FsbDsgfQor
ICAgIHN0YXRpYyBib29sIGFjY2VwdHMoS2luZCBraW5kKSB7IHJldHVybiBraW5kID09IENDYWxs
OyB9CiAKICAgICB+Q0NhbGxWYWx1ZSgpOwogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
YjMvQjNDaGVja1ZhbHVlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
YjMvQjNDaGVja1ZhbHVlLmNwcAkocmV2aXNpb24gMjA2NTI0KQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL2IzL0IzQ2hlY2tWYWx1ZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM3LDcgKzM3LDcg
QEAgQ2hlY2tWYWx1ZTo6fkNoZWNrVmFsdWUoKQogdm9pZCBDaGVja1ZhbHVlOjpjb252ZXJ0VG9B
ZGQoKQogewogICAgIFJFTEVBU0VfQVNTRVJUKG9wY29kZSgpID09IENoZWNrQWRkIHx8IG9wY29k
ZSgpID09IENoZWNrU3ViIHx8IG9wY29kZSgpID09IENoZWNrTXVsKTsKLSAgICBtX29wY29kZSA9
IENoZWNrQWRkOworICAgIG1fa2luZCA9IENoZWNrQWRkOwogfQogCiBWYWx1ZSogQ2hlY2tWYWx1
ZTo6Y2xvbmVJbXBsKCkgY29uc3QKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM0No
ZWNrVmFsdWUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNDaGVj
a1ZhbHVlLmgJKHJldmlzaW9uIDIwNjUyNCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9C
M0NoZWNrVmFsdWUuaAkod29ya2luZyBjb3B5KQpAQCAtMzQsOSArMzQsOSBAQCBuYW1lc3BhY2Ug
SlNDIHsgbmFtZXNwYWNlIEIzIHsKIAogY2xhc3MgQ2hlY2tWYWx1ZSA6IHB1YmxpYyBTdGFja21h
cFZhbHVlIHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgYm9vbCBhY2NlcHRzKE9wY29kZSBvcGNvZGUp
CisgICAgc3RhdGljIGJvb2wgYWNjZXB0cyhLaW5kIGtpbmQpCiAgICAgewotICAgICAgICBzd2l0
Y2ggKG9wY29kZSkgeworICAgICAgICBzd2l0Y2ggKGtpbmQub3Bjb2RlKCkpIHsKICAgICAgICAg
Y2FzZSBDaGVja0FkZDoKICAgICAgICAgY2FzZSBDaGVja1N1YjoKICAgICAgICAgY2FzZSBDaGVj
a011bDoKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM0NvbnN0MzJWYWx1ZS5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM0NvbnN0MzJWYWx1ZS5oCShy
ZXZpc2lvbiAyMDY1MjQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNDb25zdDMyVmFs
dWUuaAkod29ya2luZyBjb3B5KQpAQCAtMzQsNyArMzQsNyBAQCBuYW1lc3BhY2UgSlNDIHsgbmFt
ZXNwYWNlIEIzIHsKIAogY2xhc3MgSlNfRVhQT1JUX1BSSVZBVEUgQ29uc3QzMlZhbHVlIDogcHVi
bGljIFZhbHVlIHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgYm9vbCBhY2NlcHRzKE9wY29kZSBvcGNv
ZGUpIHsgcmV0dXJuIG9wY29kZSA9PSBDb25zdDMyOyB9CisgICAgc3RhdGljIGJvb2wgYWNjZXB0
cyhLaW5kIGtpbmQpIHsgcmV0dXJuIGtpbmQgPT0gQ29uc3QzMjsgfQogICAgIAogICAgIH5Db25z
dDMyVmFsdWUoKTsKICAgICAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM0NvbnN0
NjRWYWx1ZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM0NvbnN0
NjRWYWx1ZS5oCShyZXZpc2lvbiAyMDY1MjQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMv
QjNDb25zdDY0VmFsdWUuaAkod29ya2luZyBjb3B5KQpAQCAtMzQsNyArMzQsNyBAQCBuYW1lc3Bh
Y2UgSlNDIHsgbmFtZXNwYWNlIEIzIHsKIAogY2xhc3MgSlNfRVhQT1JUX1BSSVZBVEUgQ29uc3Q2
NFZhbHVlIDogcHVibGljIFZhbHVlIHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgYm9vbCBhY2NlcHRz
KE9wY29kZSBvcGNvZGUpIHsgcmV0dXJuIG9wY29kZSA9PSBDb25zdDY0OyB9CisgICAgc3RhdGlj
IGJvb2wgYWNjZXB0cyhLaW5kIGtpbmQpIHsgcmV0dXJuIGtpbmQgPT0gQ29uc3Q2NDsgfQogICAg
IAogICAgIH5Db25zdDY0VmFsdWUoKTsKICAgICAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9iMy9CM0NvbnN0RG91YmxlVmFsdWUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvYjMvQjNDb25zdERvdWJsZVZhbHVlLmgJKHJldmlzaW9uIDIwNjUyNCkKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9iMy9CM0NvbnN0RG91YmxlVmFsdWUuaAkod29ya2luZyBjb3B5KQpA
QCAtMzQsNyArMzQsNyBAQCBuYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIEIzIHsKIAogY2xhc3Mg
SlNfRVhQT1JUX1BSSVZBVEUgQ29uc3REb3VibGVWYWx1ZSA6IHB1YmxpYyBWYWx1ZSB7CiBwdWJs
aWM6Ci0gICAgc3RhdGljIGJvb2wgYWNjZXB0cyhPcGNvZGUgb3Bjb2RlKSB7IHJldHVybiBvcGNv
ZGUgPT0gQ29uc3REb3VibGU7IH0KKyAgICBzdGF0aWMgYm9vbCBhY2NlcHRzKEtpbmQga2luZCkg
eyByZXR1cm4ga2luZCA9PSBDb25zdERvdWJsZTsgfQogICAgIAogICAgIH5Db25zdERvdWJsZVZh
bHVlKCk7CiAgICAgCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNDb25zdEZsb2F0
VmFsdWUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNDb25zdEZs
b2F0VmFsdWUuaAkocmV2aXNpb24gMjA2NTI0KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2Iz
L0IzQ29uc3RGbG9hdFZhbHVlLmgJKHdvcmtpbmcgY29weSkKQEAgLTM0LDcgKzM0LDcgQEAgbmFt
ZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBCMyB7CiAKIGNsYXNzIEpTX0VYUE9SVF9QUklWQVRFIENv
bnN0RmxvYXRWYWx1ZSA6IHB1YmxpYyBWYWx1ZSB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIGJvb2wg
YWNjZXB0cyhPcGNvZGUgb3Bjb2RlKSB7IHJldHVybiBvcGNvZGUgPT0gQ29uc3RGbG9hdDsgfQor
ICAgIHN0YXRpYyBib29sIGFjY2VwdHMoS2luZCBraW5kKSB7IHJldHVybiBraW5kID09IENvbnN0
RmxvYXQ7IH0KIAogICAgIH5Db25zdEZsb2F0VmFsdWUoKTsKIApJbmRleDogU291cmNlL0phdmFT
Y3JpcHRDb3JlL2IzL0IzRmVuY2VWYWx1ZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9iMy9CM0ZlbmNlVmFsdWUuaAkocmV2aXNpb24gMjA2NTI0KQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL2IzL0IzRmVuY2VWYWx1ZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0zNCw3ICsz
NCw3IEBAIG5hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgQjMgewogCiBjbGFzcyBKU19FWFBPUlRf
UFJJVkFURSBGZW5jZVZhbHVlIDogcHVibGljIFZhbHVlIHsKIHB1YmxpYzoKLSAgICBzdGF0aWMg
Ym9vbCBhY2NlcHRzKE9wY29kZSBvcGNvZGUpIHsgcmV0dXJuIG9wY29kZSA9PSBGZW5jZTsgfQor
ICAgIHN0YXRpYyBib29sIGFjY2VwdHMoS2luZCBraW5kKSB7IHJldHVybiBraW5kID09IEZlbmNl
OyB9CiAgICAgCiAgICAgfkZlbmNlVmFsdWUoKTsKICAgICAKSW5kZXg6IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9iMy9CM0tpbmQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9iMy9CM0tpbmQuY3BwCShub25leGlzdGVudCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
My9CM0tpbmQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNTEgQEAKKy8qCisgKiBDb3B5
cmlnaHQgKEMpIDIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgor
ICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycg
QU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAor
ICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgor
I2luY2x1ZGUgIkIzS2luZC5oIgorCisjaWYgRU5BQkxFKEIzX0pJVCkKKworI2luY2x1ZGUgPHd0
Zi9Db21tYVByaW50ZXIuaD4KKworbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBCMyB7CisKK3Zv
aWQgS2luZDo6ZHVtcChQcmludFN0cmVhbSYgb3V0KSBjb25zdAoreworICAgIG91dC5wcmludCht
X29wY29kZSk7CisgICAgaWYgKCFoYXNFeHRyYUJpdHMoKSkKKyAgICAgICAgcmV0dXJuOworICAg
IAorICAgIENvbW1hUHJpbnRlciBjb21tYTsKKyAgICBvdXQucHJpbnQoIjwiKTsKKyAgICBpZiAo
aXNDaGlsbCgpKQorICAgICAgICBvdXQucHJpbnQoY29tbWEsICJDaGlsbCIpOworICAgIG91dC5w
cmludCgiPiIpOworfQorCit9IH0gLy8gbmFtZXNwYWNlIEpTQzo6QjMKKworI2VuZGlmIC8vIEVO
QUJMRShCM19KSVQpCisKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM0tpbmQuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNLaW5kLmgJKG5vbmV4aXN0
ZW50KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzS2luZC5oCSh3b3JraW5nIGNvcHkp
CkBAIC0wLDAgKzEsMTg4IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE2IEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICog
YXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJ
TVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBB
UFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVO
VElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVN
RU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBP
UgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
IAorICovCisKKyNpZm5kZWYgQjNLaW5kX2gKKyNkZWZpbmUgQjNLaW5kX2gKKworI2lmIEVOQUJM
RShCM19KSVQpCisKKyNpbmNsdWRlICJCM09wY29kZS5oIgorI2luY2x1ZGUgPHd0Zi9IYXNoVGFi
bGUuaD4KKyNpbmNsdWRlIDx3dGYvUHJpbnRTdHJlYW0uaD4KKworbmFtZXNwYWNlIEpTQyB7IG5h
bWVzcGFjZSBCMyB7CisKK2NsYXNzIEtpbmQgeworcHVibGljOgorICAgIEtpbmQoT3Bjb2RlIG9w
Y29kZSkKKyAgICAgICAgOiBtX29wY29kZShvcGNvZGUpCisgICAgeworICAgICAgICB1LmJpdHMg
PSAwOworICAgIH0KKyAgICAKKyAgICBLaW5kKCkKKyAgICAgICAgOiBLaW5kKE9vcHMpCisgICAg
eworICAgIH0KKyAgICAKKyAgICBPcGNvZGUgb3Bjb2RlKCkgY29uc3QgeyByZXR1cm4gbV9vcGNv
ZGU7IH0KKyAgICB2b2lkIHNldE9wY29kZShPcGNvZGUgb3Bjb2RlKSB7IG1fb3Bjb2RlID0gb3Bj
b2RlOyB9CisgICAgCisgICAgYm9vbCBoYXNFeHRyYUJpdHMoKSBjb25zdCB7IHJldHVybiAhIXUu
Yml0czsgfQorICAgIAorICAgIC8vIENoaWxsIGJpdC4gVGhpcyBhcHBsaWVzIHRvIGRpdmlzaW9u
LWJhc2VkIGFyaXRobWV0aWMgb3BzLCB3aGljaCBtYXkgdHJhcCBvbiBzb21lCisgICAgLy8gcGxh
dGZvcm1zIG9yIGV4aGliaXQgYml6YXJyZSBiZWhhdmlvciB3aGVuIHBhc3NlZCBjZXJ0YWluIGlu
cHV0cy4gVGhlIG5vbi1jaGlsbAorICAgIC8vIHZlcnNpb24gd2lsbCBiZWhhdmUgYXMgdW5wcmVk
aWN0YWJseSBhcyBpdCB3YW50cy4gRm9yIGV4YW1wbGUsIGl0J3MgbGVnYWwgdG8KKyAgICAvLyBj
b25zdGFudC1mb2xkIERpdih4LCAwKSB0byBhbnkgdmFsdWUgb3IgdG8gcmVwbGFjZSBpdCB3aXRo
IGFueSBlZmZlY3RmdWwgb3BlcmF0aW9uLgorICAgIC8vIEJ1dCB3aGVuIGl0J3MgY2hpbGwsIHRo
YXQgbWVhbnMgdGhhdCB0aGUgc2VtYW50aWNzIHdoZW4gaXQgd291bGQgaGF2ZSB0cmFwcGVkIGFy
ZQorICAgIC8vIHRoZSBKUyBzZW1hbnRpY3MuIEZvciBleGFtcGxlLCBEaXY8Q2hpbGw+KEBhLCBA
YikgbWVhbnM6CisgICAgLy8KKyAgICAvLyAgICAgKChhIHwgMCkgLyAoYiB8IDApKSB8IDAKKyAg
ICAvLworICAgIC8vIEFuZCBNb2Q8Q2hpbGw+KGEsIGIpIG1lYW5zOgorICAgIC8vCisgICAgLy8g
ICAgICgoYSB8IDApICUgKGIgfCAwKSkgfCAwCisgICAgLy8KKyAgICAvLyBOb3RlIHRoYXQgRGl2
PENoaWxsPiBtYXRjaGVzIGV4YWN0bHkgaG93IEFSTSBoYW5kbGVzIGludGVnZXIgZGl2aXNpb24u
CisgICAgYm9vbCBoYXNJc0NoaWxsKCkgY29uc3QKKyAgICB7CisgICAgICAgIHN3aXRjaCAobV9v
cGNvZGUpIHsKKyAgICAgICAgY2FzZSBEaXY6CisgICAgICAgIGNhc2UgTW9kOgorICAgICAgICAg
ICAgcmV0dXJuIHRydWU7CisgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICByZXR1cm4gZmFs
c2U7CisgICAgICAgIH0KKyAgICB9CisgICAgYm9vbCBpc0NoaWxsKCkgY29uc3QKKyAgICB7Cisg
ICAgICAgIHJldHVybiBoYXNJc0NoaWxsKCkgJiYgdS5pc0NoaWxsOworICAgIH0KKyAgICB2b2lk
IHNldElzQ2hpbGwoYm9vbCBpc0NoaWxsKQorICAgIHsKKyAgICAgICAgQVNTRVJUKGhhc0lzQ2hp
bGwoKSk7CisgICAgICAgIHUuaXNDaGlsbCA9IGlzQ2hpbGw7CisgICAgfQorICAgIAorICAgIGJv
b2wgb3BlcmF0b3I9PShjb25zdCBLaW5kJiBvdGhlcikgY29uc3QKKyAgICB7CisgICAgICAgIHJl
dHVybiBtX29wY29kZSA9PSBvdGhlci5tX29wY29kZQorICAgICAgICAgICAgJiYgdS5iaXRzID09
IG90aGVyLnUuYml0czsKKyAgICB9CisgICAgCisgICAgYm9vbCBvcGVyYXRvciE9KGNvbnN0IEtp
bmQmIG90aGVyKSBjb25zdAorICAgIHsKKyAgICAgICAgcmV0dXJuICEoKnRoaXMgPT0gb3RoZXIp
OworICAgIH0KKyAgICAKKyAgICBib29sIG9wZXJhdG9yPChjb25zdCBLaW5kJiBvdGhlcikgY29u
c3QKKyAgICB7CisgICAgICAgIGlmIChtX29wY29kZSA9PSBvdGhlci5tX29wY29kZSkKKyAgICAg
ICAgICAgIHJldHVybiB1LmJpdHMgPCBvdGhlci51LmJpdHM7CisgICAgICAgIHJldHVybiBtX29w
Y29kZSA8IG90aGVyLm1fb3Bjb2RlOworICAgIH0KKyAgICAKKyAgICBib29sIG9wZXJhdG9yPihj
b25zdCBLaW5kJiBvdGhlcikgY29uc3QKKyAgICB7CisgICAgICAgIHJldHVybiBvdGhlciA8ICp0
aGlzOworICAgIH0KKyAgICAKKyAgICBib29sIG9wZXJhdG9yPD0oY29uc3QgS2luZCYgb3RoZXIp
IGNvbnN0CisgICAgeworICAgICAgICByZXR1cm4gISgqdGhpcyA+IG90aGVyKTsKKyAgICB9Cisg
ICAgCisgICAgYm9vbCBvcGVyYXRvcj49KGNvbnN0IEtpbmQmIG90aGVyKSBjb25zdAorICAgIHsK
KyAgICAgICAgcmV0dXJuICEoKnRoaXMgPCBvdGhlcik7CisgICAgfQorICAgIAorICAgIHZvaWQg
ZHVtcChQcmludFN0cmVhbSYpIGNvbnN0OworICAgIAorICAgIHVuc2lnbmVkIGhhc2goKSBjb25z
dAorICAgIHsKKyAgICAgICAgLy8gSXQncyBhbG1vc3QgY2VydGFpbmx5IG1vcmUgaW1wb3J0YW50
IHRoYXQgdGhpcyBoYXNoIGZ1bmN0aW9uIGlzIGNoZWFwIHRvIGNvbXB1dGUgdGhhbgorICAgICAg
ICAvLyBhbnl0aGluZyBlbHNlLiBXZSBjYW4gbGl2ZSB3aXRoIHNvbWUga2luZCBoYXNoIGNvbGxp
c2lvbnMuCisgICAgICAgIHJldHVybiBtX29wY29kZSArIHUuYml0cyAqIDExMTsKKyAgICB9Cisg
ICAgCisgICAgS2luZChXVEY6Okhhc2hUYWJsZURlbGV0ZWRWYWx1ZVR5cGUpCisgICAgICAgIDog
bV9vcGNvZGUoT29wcykKKyAgICB7CisgICAgICAgIHUuYml0cyA9IDE7CisgICAgfQorICAgIAor
ICAgIGJvb2wgaXNIYXNoVGFibGVEZWxldGVkVmFsdWUoKSBjb25zdAorICAgIHsKKyAgICAgICAg
cmV0dXJuICp0aGlzID09IEtpbmQoV1RGOjpIYXNoVGFibGVEZWxldGVkVmFsdWUpOworICAgIH0K
KyAgICAKK3ByaXZhdGU6CisgICAgT3Bjb2RlIG1fb3Bjb2RlOworICAgIHVuaW9uIHsKKyAgICAg
ICAgYm9vbCBpc0NoaWxsOworICAgICAgICB1aW50MTZfdCBiaXRzOworICAgIH0gdTsKK307CisK
Ky8vIEZvciBldmVyeSBmbGFnICdmb28nIHlvdSBhZGQsIGl0J3MgY3VzdG9tYXJ5IHRvIGNyZWF0
ZSBhIEtpbmQgQjM6OmZvbyhLaW5kKSBmdW5jdGlvbiB0aGF0IG1ha2VzCisvLyBhIGtpbmQgd2l0
aCB0aGUgZmxhZyBzZXQuIEZvciBleGFtcGxlLCBmb3IgY2hpbGwsIHRoaXMgbGV0cyB1cyBzYXk6
CisvLworLy8gICAgIGJsb2NrLT5hcHBlbmROZXc8VmFsdWU+KG1fcHJvYywgY2hpbGwoTW9kKSwg
T3JpZ2luKCksIGEsIGIpOworLy8KKy8vIFRoYXQgbG9va3MgcHJldHR5IHNsaWNrLiBMZXQncyBr
ZWVwIGl0IHRoYXQgd2F5LgorCitpbmxpbmUgS2luZCBjaGlsbChLaW5kIGtpbmQpCit7CisgICAg
a2luZC5zZXRJc0NoaWxsKHRydWUpOworICAgIHJldHVybiBraW5kOworfQorCitzdHJ1Y3QgS2lu
ZEhhc2ggeworICAgIHN0YXRpYyB1bnNpZ25lZCBoYXNoKGNvbnN0IEtpbmQmIGtleSkgeyByZXR1
cm4ga2V5Lmhhc2goKTsgfQorICAgIHN0YXRpYyBib29sIGVxdWFsKGNvbnN0IEtpbmQmIGEsIGNv
bnN0IEtpbmQmIGIpIHsgcmV0dXJuIGEgPT0gYjsgfQorICAgIHN0YXRpYyBjb25zdCBib29sIHNh
ZmVUb0NvbXBhcmVUb0VtcHR5T3JEZWxldGVkID0gdHJ1ZTsKK307CisKK30gfSAvLyBuYW1lc3Bh
Y2UgSlNDOjpCMworCituYW1lc3BhY2UgV1RGIHsKKwordGVtcGxhdGU8dHlwZW5hbWUgVD4gc3Ry
dWN0IERlZmF1bHRIYXNoOwordGVtcGxhdGU8PiBzdHJ1Y3QgRGVmYXVsdEhhc2g8SlNDOjpCMzo6
S2luZD4geworICAgIHR5cGVkZWYgSlNDOjpCMzo6S2luZEhhc2ggSGFzaDsKK307CisKK3RlbXBs
YXRlPHR5cGVuYW1lIFQ+IHN0cnVjdCBIYXNoVHJhaXRzOwordGVtcGxhdGU8PiBzdHJ1Y3QgSGFz
aFRyYWl0czxKU0M6OkIzOjpLaW5kPiA6IHB1YmxpYyBTaW1wbGVDbGFzc0hhc2hUcmFpdHM8SlND
OjpCMzo6S2luZD4geworICAgIHN0YXRpYyBjb25zdCBib29sIGVtcHR5VmFsdWVJc1plcm8gPSBm
YWxzZTsKK307CisKK30gLy8gbmFtZXNwYWNlIFdURgorCisjZW5kaWYgLy8gRU5BQkxFKEIzX0pJ
VCkKKworI2VuZGlmIC8vIEIzS2luZF9oCisKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
My9CM0xvd2VyTWFjcm9zLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
YjMvQjNMb3dlck1hY3Jvcy5jcHAJKHJldmlzaW9uIDIwNjUyNCkKKysrIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9iMy9CM0xvd2VyTWFjcm9zLmNwcAkod29ya2luZyBjb3B5KQpAQCAtODMsNiArODMs
NDEgQEAgcHJpdmF0ZToKICAgICAgICAgICAgIG1fb3JpZ2luID0gbV92YWx1ZS0+b3JpZ2luKCk7
CiAgICAgICAgICAgICBzd2l0Y2ggKG1fdmFsdWUtPm9wY29kZSgpKSB7CiAgICAgICAgICAgICBj
YXNlIE1vZDogeworICAgICAgICAgICAgICAgIGlmIChtX3ZhbHVlLT5pc0NoaWxsKCkpIHsKKyAg
ICAgICAgICAgICAgICAgICAgaWYgKGlzQVJNNjQoKSkgeworICAgICAgICAgICAgICAgICAgICAg
ICAgQmFzaWNCbG9jayogYmVmb3JlID0gbV9ibG9ja0luc2VydGlvblNldC5zcGxpdEZvcndhcmQo
bV9ibG9jaywgbV9pbmRleCwgJm1faW5zZXJ0aW9uU2V0KTsKKyAgICAgICAgICAgICAgICAgICAg
ICAgIEJhc2ljQmxvY2sqIHplcm9EZW5DYXNlID0gbV9ibG9ja0luc2VydGlvblNldC5pbnNlcnRC
ZWZvcmUobV9ibG9jayk7CisgICAgICAgICAgICAgICAgICAgICAgICBCYXNpY0Jsb2NrKiBub3Jt
YWxNb2RDYXNlID0gbV9ibG9ja0luc2VydGlvblNldC5pbnNlcnRCZWZvcmUobV9ibG9jayk7CisK
KyAgICAgICAgICAgICAgICAgICAgICAgIGJlZm9yZS0+cmVwbGFjZUxhc3RXaXRoTmV3PFZhbHVl
PihtX3Byb2MsIEJyYW5jaCwgbV9vcmlnaW4sIG1fdmFsdWUtPmNoaWxkKDEpKTsKKyAgICAgICAg
ICAgICAgICAgICAgICAgIGJlZm9yZS0+c2V0U3VjY2Vzc29ycygKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBGcmVxdWVudGVkQmxvY2sobm9ybWFsTW9kQ2FzZSwgRnJlcXVlbmN5Q2xhc3M6
Ok5vcm1hbCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgRnJlcXVlbnRlZEJsb2NrKHpl
cm9EZW5DYXNlLCBGcmVxdWVuY3lDbGFzczo6UmFyZSkpOworCisgICAgICAgICAgICAgICAgICAg
ICAgICBWYWx1ZSogZGl2UmVzdWx0ID0gbm9ybWFsTW9kQ2FzZS0+YXBwZW5kTmV3PFZhbHVlPiht
X3Byb2MsIGNoaWxsKERpdiksIG1fb3JpZ2luLCBtX3ZhbHVlLT5jaGlsZCgwKSwgbV92YWx1ZS0+
Y2hpbGQoMSkpOworICAgICAgICAgICAgICAgICAgICAgICAgVmFsdWUqIG11bHRpcGxpZWRCYWNr
ID0gbm9ybWFsTW9kQ2FzZS0+YXBwZW5kTmV3PFZhbHVlPihtX3Byb2MsIE11bCwgbV9vcmlnaW4s
IGRpdlJlc3VsdCwgbV92YWx1ZS0+Y2hpbGQoMSkpOworICAgICAgICAgICAgICAgICAgICAgICAg
VmFsdWUqIHJlc3VsdCA9IG5vcm1hbE1vZENhc2UtPmFwcGVuZE5ldzxWYWx1ZT4obV9wcm9jLCBT
dWIsIG1fb3JpZ2luLCBtX3ZhbHVlLT5jaGlsZCgwKSwgbXVsdGlwbGllZEJhY2spOworICAgICAg
ICAgICAgICAgICAgICAgICAgVXBzaWxvblZhbHVlKiBub3JtYWxSZXN1bHQgPSBub3JtYWxNb2RD
YXNlLT5hcHBlbmROZXc8VXBzaWxvblZhbHVlPihtX3Byb2MsIG1fb3JpZ2luLCByZXN1bHQpOwor
ICAgICAgICAgICAgICAgICAgICAgICAgbm9ybWFsTW9kQ2FzZS0+YXBwZW5kTmV3PFZhbHVlPiht
X3Byb2MsIEp1bXAsIG1fb3JpZ2luKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIG5vcm1hbE1v
ZENhc2UtPnNldFN1Y2Nlc3NvcnMoRnJlcXVlbnRlZEJsb2NrKG1fYmxvY2spKTsKKworICAgICAg
ICAgICAgICAgICAgICAgICAgVXBzaWxvblZhbHVlKiB6ZXJvUmVzdWx0ID0gemVyb0RlbkNhc2Ut
PmFwcGVuZE5ldzxVcHNpbG9uVmFsdWU+KAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1f
cHJvYywgbV9vcmlnaW4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgemVyb0RlbkNhc2Ut
PmFwcGVuZEludENvbnN0YW50KG1fcHJvYywgbV92YWx1ZSwgMCkpOworICAgICAgICAgICAgICAg
ICAgICAgICAgemVyb0RlbkNhc2UtPmFwcGVuZE5ldzxWYWx1ZT4obV9wcm9jLCBKdW1wLCBtX29y
aWdpbik7CisgICAgICAgICAgICAgICAgICAgICAgICB6ZXJvRGVuQ2FzZS0+c2V0U3VjY2Vzc29y
cyhGcmVxdWVudGVkQmxvY2sobV9ibG9jaykpOworCisgICAgICAgICAgICAgICAgICAgICAgICBW
YWx1ZSogcGhpID0gbV9pbnNlcnRpb25TZXQuaW5zZXJ0PFZhbHVlPihtX2luZGV4LCBQaGksIG1f
dmFsdWUtPnR5cGUoKSwgbV9vcmlnaW4pOworICAgICAgICAgICAgICAgICAgICAgICAgbm9ybWFs
UmVzdWx0LT5zZXRQaGkocGhpKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIHplcm9SZXN1bHQt
PnNldFBoaShwaGkpOworICAgICAgICAgICAgICAgICAgICAgICAgbV92YWx1ZS0+cmVwbGFjZVdp
dGhJZGVudGl0eShwaGkpOworICAgICAgICAgICAgICAgICAgICAgICAgYmVmb3JlLT51cGRhdGVQ
cmVkZWNlc3NvcnNBZnRlcigpOworICAgICAgICAgICAgICAgICAgICAgICAgbV9jaGFuZ2VkID0g
dHJ1ZTsKKyAgICAgICAgICAgICAgICAgICAgfSBlbHNlCisgICAgICAgICAgICAgICAgICAgICAg
ICBtYWtlRGl2aXNpb25DaGlsbChNb2QpOworICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAg
ICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgZG91Ymxl
ICgqZm1vZERvdWJsZSkoZG91YmxlLCBkb3VibGUpID0gZm1vZDsKICAgICAgICAgICAgICAgICBp
ZiAobV92YWx1ZS0+dHlwZSgpID09IERvdWJsZSkgewogICAgICAgICAgICAgICAgICAgICBWYWx1
ZSogZnVuY3Rpb25BZGRyZXNzID0gbV9pbnNlcnRpb25TZXQuaW5zZXJ0PENvbnN0UHRyVmFsdWU+
KG1faW5kZXgsIG1fb3JpZ2luLCBmbW9kRG91YmxlKTsKQEAgLTEwNiw3ICsxNDEsNyBAQCBwcml2
YXRlOgogICAgICAgICAgICAgICAgICAgICBtX3ZhbHVlLT5yZXBsYWNlV2l0aElkZW50aXR5KHJl
c3VsdCk7CiAgICAgICAgICAgICAgICAgICAgIG1fY2hhbmdlZCA9IHRydWU7CiAgICAgICAgICAg
ICAgICAgfSBlbHNlIGlmIChpc0FSTTY0KCkpIHsKLSAgICAgICAgICAgICAgICAgICAgVmFsdWUq
IGRpdlJlc3VsdCA9IG1faW5zZXJ0aW9uU2V0Lmluc2VydDxWYWx1ZT4obV9pbmRleCwgQ2hpbGxE
aXYsIG1fb3JpZ2luLCBtX3ZhbHVlLT5jaGlsZCgwKSwgbV92YWx1ZS0+Y2hpbGQoMSkpOworICAg
ICAgICAgICAgICAgICAgICBWYWx1ZSogZGl2UmVzdWx0ID0gbV9pbnNlcnRpb25TZXQuaW5zZXJ0
PFZhbHVlPihtX2luZGV4LCBjaGlsbChEaXYpLCBtX29yaWdpbiwgbV92YWx1ZS0+Y2hpbGQoMCks
IG1fdmFsdWUtPmNoaWxkKDEpKTsKICAgICAgICAgICAgICAgICAgICAgVmFsdWUqIG11bHRpcGxp
ZWRCYWNrID0gbV9pbnNlcnRpb25TZXQuaW5zZXJ0PFZhbHVlPihtX2luZGV4LCBNdWwsIG1fb3Jp
Z2luLCBkaXZSZXN1bHQsIG1fdmFsdWUtPmNoaWxkKDEpKTsKICAgICAgICAgICAgICAgICAgICAg
VmFsdWUqIHJlc3VsdCA9IG1faW5zZXJ0aW9uU2V0Lmluc2VydDxWYWx1ZT4obV9pbmRleCwgU3Vi
LCBtX29yaWdpbiwgbV92YWx1ZS0+Y2hpbGQoMCksIG11bHRpcGxpZWRCYWNrKTsKICAgICAgICAg
ICAgICAgICAgICAgbV92YWx1ZS0+cmVwbGFjZVdpdGhJZGVudGl0eShyZXN1bHQpOwpAQCAtMTE0
LDQzICsxNDksOSBAQCBwcml2YXRlOgogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAg
ICBicmVhazsKICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGNhc2UgQ2hpbGxEaXY6IHsKLSAg
ICAgICAgICAgICAgICBtYWtlRGl2aXNpb25DaGlsbChEaXYpOwotICAgICAgICAgICAgICAgIGJy
ZWFrOwotICAgICAgICAgICAgfQotCi0gICAgICAgICAgICBjYXNlIENoaWxsTW9kOiB7Ci0gICAg
ICAgICAgICAgICAgaWYgKGlzQVJNNjQoKSkgewotICAgICAgICAgICAgICAgICAgICBCYXNpY0Js
b2NrKiBiZWZvcmUgPSBtX2Jsb2NrSW5zZXJ0aW9uU2V0LnNwbGl0Rm9yd2FyZChtX2Jsb2NrLCBt
X2luZGV4LCAmbV9pbnNlcnRpb25TZXQpOwotICAgICAgICAgICAgICAgICAgICBCYXNpY0Jsb2Nr
KiB6ZXJvRGVuQ2FzZSA9IG1fYmxvY2tJbnNlcnRpb25TZXQuaW5zZXJ0QmVmb3JlKG1fYmxvY2sp
OwotICAgICAgICAgICAgICAgICAgICBCYXNpY0Jsb2NrKiBub3JtYWxNb2RDYXNlID0gbV9ibG9j
a0luc2VydGlvblNldC5pbnNlcnRCZWZvcmUobV9ibG9jayk7Ci0KLSAgICAgICAgICAgICAgICAg
ICAgYmVmb3JlLT5yZXBsYWNlTGFzdFdpdGhOZXc8VmFsdWU+KG1fcHJvYywgQnJhbmNoLCBtX29y
aWdpbiwgbV92YWx1ZS0+Y2hpbGQoMSkpOwotICAgICAgICAgICAgICAgICAgICBiZWZvcmUtPnNl
dFN1Y2Nlc3NvcnMoCi0gICAgICAgICAgICAgICAgICAgICAgICBGcmVxdWVudGVkQmxvY2sobm9y
bWFsTW9kQ2FzZSwgRnJlcXVlbmN5Q2xhc3M6Ok5vcm1hbCksCi0gICAgICAgICAgICAgICAgICAg
ICAgICBGcmVxdWVudGVkQmxvY2soemVyb0RlbkNhc2UsIEZyZXF1ZW5jeUNsYXNzOjpSYXJlKSk7
Ci0KLSAgICAgICAgICAgICAgICAgICAgVmFsdWUqIGRpdlJlc3VsdCA9IG5vcm1hbE1vZENhc2Ut
PmFwcGVuZE5ldzxWYWx1ZT4obV9wcm9jLCBDaGlsbERpdiwgbV9vcmlnaW4sIG1fdmFsdWUtPmNo
aWxkKDApLCBtX3ZhbHVlLT5jaGlsZCgxKSk7Ci0gICAgICAgICAgICAgICAgICAgIFZhbHVlKiBt
dWx0aXBsaWVkQmFjayA9IG5vcm1hbE1vZENhc2UtPmFwcGVuZE5ldzxWYWx1ZT4obV9wcm9jLCBN
dWwsIG1fb3JpZ2luLCBkaXZSZXN1bHQsIG1fdmFsdWUtPmNoaWxkKDEpKTsKLSAgICAgICAgICAg
ICAgICAgICAgVmFsdWUqIHJlc3VsdCA9IG5vcm1hbE1vZENhc2UtPmFwcGVuZE5ldzxWYWx1ZT4o
bV9wcm9jLCBTdWIsIG1fb3JpZ2luLCBtX3ZhbHVlLT5jaGlsZCgwKSwgbXVsdGlwbGllZEJhY2sp
OwotICAgICAgICAgICAgICAgICAgICBVcHNpbG9uVmFsdWUqIG5vcm1hbFJlc3VsdCA9IG5vcm1h
bE1vZENhc2UtPmFwcGVuZE5ldzxVcHNpbG9uVmFsdWU+KG1fcHJvYywgbV9vcmlnaW4sIHJlc3Vs
dCk7Ci0gICAgICAgICAgICAgICAgICAgIG5vcm1hbE1vZENhc2UtPmFwcGVuZE5ldzxWYWx1ZT4o
bV9wcm9jLCBKdW1wLCBtX29yaWdpbik7Ci0gICAgICAgICAgICAgICAgICAgIG5vcm1hbE1vZENh
c2UtPnNldFN1Y2Nlc3NvcnMoRnJlcXVlbnRlZEJsb2NrKG1fYmxvY2spKTsKLQotICAgICAgICAg
ICAgICAgICAgICBVcHNpbG9uVmFsdWUqIHplcm9SZXN1bHQgPSB6ZXJvRGVuQ2FzZS0+YXBwZW5k
TmV3PFVwc2lsb25WYWx1ZT4oCi0gICAgICAgICAgICAgICAgICAgICAgICBtX3Byb2MsIG1fb3Jp
Z2luLAotICAgICAgICAgICAgICAgICAgICAgICAgemVyb0RlbkNhc2UtPmFwcGVuZEludENvbnN0
YW50KG1fcHJvYywgbV92YWx1ZSwgMCkpOwotICAgICAgICAgICAgICAgICAgICB6ZXJvRGVuQ2Fz
ZS0+YXBwZW5kTmV3PFZhbHVlPihtX3Byb2MsIEp1bXAsIG1fb3JpZ2luKTsKLSAgICAgICAgICAg
ICAgICAgICAgemVyb0RlbkNhc2UtPnNldFN1Y2Nlc3NvcnMoRnJlcXVlbnRlZEJsb2NrKG1fYmxv
Y2spKTsKLQotICAgICAgICAgICAgICAgICAgICBWYWx1ZSogcGhpID0gbV9pbnNlcnRpb25TZXQu
aW5zZXJ0PFZhbHVlPihtX2luZGV4LCBQaGksIG1fdmFsdWUtPnR5cGUoKSwgbV9vcmlnaW4pOwot
ICAgICAgICAgICAgICAgICAgICBub3JtYWxSZXN1bHQtPnNldFBoaShwaGkpOwotICAgICAgICAg
ICAgICAgICAgICB6ZXJvUmVzdWx0LT5zZXRQaGkocGhpKTsKLSAgICAgICAgICAgICAgICAgICAg
bV92YWx1ZS0+cmVwbGFjZVdpdGhJZGVudGl0eShwaGkpOwotICAgICAgICAgICAgICAgICAgICBi
ZWZvcmUtPnVwZGF0ZVByZWRlY2Vzc29yc0FmdGVyKCk7Ci0gICAgICAgICAgICAgICAgICAgIG1f
Y2hhbmdlZCA9IHRydWU7Ci0gICAgICAgICAgICAgICAgfSBlbHNlCi0gICAgICAgICAgICAgICAg
ICAgIG1ha2VEaXZpc2lvbkNoaWxsKE1vZCk7CisgICAgICAgICAgICBjYXNlIERpdjogeworICAg
ICAgICAgICAgICAgIGlmIChtX3ZhbHVlLT5pc0NoaWxsKCkpCisgICAgICAgICAgICAgICAgICAg
IG1ha2VEaXZpc2lvbkNoaWxsKERpdik7CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAg
ICAgICB9CiAKQEAgLTE4OCw3ICsxODksNyBAQCBwcml2YXRlOgogICAgICAgICBpZiAoaXNBUk02
NCgpKQogICAgICAgICAgICAgcmV0dXJuOwogCi0gICAgICAgIC8vIFdlIGltcGxlbWVudCAicmVz
ID0gQ2hpbGxEaXYvQ2hpbGxNb2QobnVtLCBkZW4pIiBhcyBmb2xsb3dzOgorICAgICAgICAvLyBX
ZSBpbXBsZW1lbnQgInJlcyA9IERpdjxDaGlsbD4vTW9kPENoaWxsPihudW0sIGRlbikiIGFzIGZv
bGxvd3M6CiAgICAgICAgIC8vCiAgICAgICAgIC8vICAgICBpZiAoZGVuICsgMSA8PV91bnNpZ25l
ZCAxKSB7CiAgICAgICAgIC8vICAgICAgICAgaWYgKCFkZW4pIHsKSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9iMy9CM0xvd2VyVG9BaXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9iMy9CM0xvd2VyVG9BaXIuY3BwCShyZXZpc2lvbiAyMDY1MjQpCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYjMvQjNMb3dlclRvQWlyLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
MTg0NiwxMCArMTg0Niw5IEBAIHByaXZhdGU6CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAg
IH0KIAotICAgICAgICBjYXNlIENoaWxsRGl2OgotICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlQo
aXNBUk02NCgpKTsKLSAgICAgICAgICAgIEZBTExUSFJPVUdIOwogICAgICAgICBjYXNlIERpdjog
eworICAgICAgICAgICAgaWYgKG1fdmFsdWUtPmlzQ2hpbGwoKSkKKyAgICAgICAgICAgICAgICBS
RUxFQVNFX0FTU0VSVChpc0FSTTY0KCkpOwogI2lmIENQVShYODYpIHx8IENQVShYODZfNjQpCiAg
ICAgICAgICAgICBpZiAoaXNJbnQobV92YWx1ZS0+dHlwZSgpKSkgewogICAgICAgICAgICAgICAg
IGxvd2VyWDg2RGl2KCk7CkBAIC0xODY1LDYgKzE4NjQsNyBAQCBwcml2YXRlOgogCiAgICAgICAg
IGNhc2UgTW9kOiB7CiAgICAgICAgICAgICBSRUxFQVNFX0FTU0VSVChpc1g4NigpKTsKKyAgICAg
ICAgICAgIFJFTEVBU0VfQVNTRVJUKCFtX3ZhbHVlLT5pc0NoaWxsKCkpOwogI2lmIENQVShYODYp
IHx8IENQVShYODZfNjQpCiAgICAgICAgICAgICBsb3dlclg4NkRpdigpOwogICAgICAgICAgICAg
YXBwZW5kKE1vdmUsIFRtcChYODZSZWdpc3RlcnM6OmVkeCksIHRtcChtX3ZhbHVlKSk7CkluZGV4
OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNNZW1vcnlWYWx1ZS5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM01lbW9yeVZhbHVlLmgJKHJldmlzaW9uIDIwNjUy
NCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM01lbW9yeVZhbHVlLmgJKHdvcmtpbmcg
Y29weSkKQEAgLTM4LDkgKzM4LDkgQEAgbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBCMyB7CiAK
IGNsYXNzIEpTX0VYUE9SVF9QUklWQVRFIE1lbW9yeVZhbHVlIDogcHVibGljIFZhbHVlIHsKIHB1
YmxpYzoKLSAgICBzdGF0aWMgYm9vbCBhY2NlcHRzKE9wY29kZSBvcGNvZGUpCisgICAgc3RhdGlj
IGJvb2wgYWNjZXB0cyhLaW5kIGtpbmQpCiAgICAgewotICAgICAgICBzd2l0Y2ggKG9wY29kZSkg
eworICAgICAgICBzd2l0Y2ggKGtpbmQub3Bjb2RlKCkpIHsKICAgICAgICAgY2FzZSBMb2FkOFo6
CiAgICAgICAgIGNhc2UgTG9hZDhTOgogICAgICAgICBjYXNlIExvYWQxNlo6CkluZGV4OiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYjMvQjNPcGNvZGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9iMy9CM09wY29kZS5jcHAJKHJldmlzaW9uIDIwNjUyNCkKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9iMy9CM09wY29kZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEyOCwx
MiArMTI4LDYgQEAgdm9pZCBwcmludEludGVybmFsKFByaW50U3RyZWFtJiBvdXQsIE9wYwogICAg
IGNhc2UgTmVnOgogICAgICAgICBvdXQucHJpbnQoIk5lZyIpOwogICAgICAgICByZXR1cm47Ci0g
ICAgY2FzZSBDaGlsbERpdjoKLSAgICAgICAgb3V0LnByaW50KCJDaGlsbERpdiIpOwotICAgICAg
ICByZXR1cm47Ci0gICAgY2FzZSBDaGlsbE1vZDoKLSAgICAgICAgb3V0LnByaW50KCJDaGlsbE1v
ZCIpOwotICAgICAgICByZXR1cm47CiAgICAgY2FzZSBCaXRBbmQ6CiAgICAgICAgIG91dC5wcmlu
dCgiQml0QW5kIik7CiAgICAgICAgIHJldHVybjsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9iMy9CM09wY29kZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9C
M09wY29kZS5oCShyZXZpc2lvbiAyMDY1MjQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMv
QjNPcGNvZGUuaAkod29ya2luZyBjb3B5KQpAQCAtODQsOCArODQsNiBAQCBlbnVtIE9wY29kZSA6
IGludDE2X3QgewogICAgIE5lZywKIAogICAgIC8vIEludGVnZXIgbWF0aC4KLSAgICBDaGlsbERp
diwgLy8gZG9lc24ndCB0cmFwIGV2ZXIsIGJlaGF2ZXMgbGlrZSBKUyAoeC95KXwwLgotICAgIENo
aWxsTW9kLCAvLyBkb2Vzbid0IHRyYXAgZXZlciwgYmVoYXZlcyBsaWtlIEpTICh4JXkpfDAuCiAg
ICAgQml0QW5kLAogICAgIEJpdE9yLAogICAgIEJpdFhvciwKSW5kZXg6IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9iMy9CM1BhdGNocG9pbnRWYWx1ZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9iMy9CM1BhdGNocG9pbnRWYWx1ZS5oCShyZXZpc2lvbiAyMDY1MjQpCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNQYXRjaHBvaW50VmFsdWUuaAkod29ya2luZyBjb3B5
KQpAQCAtMzgsNyArMzgsNyBAQCBjbGFzcyBQYXRjaHBvaW50VmFsdWUgOiBwdWJsaWMgU3RhY2tt
YXBWCiBwdWJsaWM6CiAgICAgdHlwZWRlZiBTdGFja21hcFZhbHVlIEJhc2U7CiAgICAgCi0gICAg
c3RhdGljIGJvb2wgYWNjZXB0cyhPcGNvZGUgb3Bjb2RlKSB7IHJldHVybiBvcGNvZGUgPT0gUGF0
Y2hwb2ludDsgfQorICAgIHN0YXRpYyBib29sIGFjY2VwdHMoS2luZCBraW5kKSB7IHJldHVybiBr
aW5kID09IFBhdGNocG9pbnQ7IH0KIAogICAgIH5QYXRjaHBvaW50VmFsdWUoKTsKIApJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzUmVkdWNlU3RyZW5ndGguY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM1JlZHVjZVN0cmVuZ3RoLmNwcAkocmV2aXNp
b24gMjA2NTI0KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzUmVkdWNlU3RyZW5ndGgu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC02NDgsMTAgKzY0OCw5IEBAIHByaXZhdGU6CiAgICAgICAg
ICAgICBicmVhazsKIAogICAgICAgICBjYXNlIERpdjoKLSAgICAgICAgY2FzZSBDaGlsbERpdjoK
ICAgICAgICAgICAgIC8vIFR1cm4gdGhpczogRGl2KGNvbnN0YW50MSwgY29uc3RhbnQyKQogICAg
ICAgICAgICAgLy8gSW50byB0aGlzOiBjb25zdGFudDEgLyBjb25zdGFudDIKLSAgICAgICAgICAg
IC8vIE5vdGUgdGhhdCB0aGlzIHVzZXMgQ2hpbGxEaXYgc2VtYW50aWNzLiBUaGF0J3MgZmluZSwg
YmVjYXVzZSB0aGUgcnVsZXMgZm9yIERpdgorICAgICAgICAgICAgLy8gTm90ZSB0aGF0IHRoaXMg
dXNlcyBEaXY8Q2hpbGw+IHNlbWFudGljcy4gVGhhdCdzIGZpbmUsIGJlY2F1c2UgdGhlIHJ1bGVz
IGZvciBEaXYKICAgICAgICAgICAgIC8vIGFyZSBzdHJpY3RseSB3ZWFrZXI6IGl0IGhhcyBjb3Ju
ZXIgY2FzZXMgd2hlcmUgaXQncyBhbGxvd2VkIHRvIGRvIGFueXRoaW5nIGl0CiAgICAgICAgICAg
ICAvLyBsaWtlcy4KICAgICAgICAgICAgIGlmIChyZXBsYWNlV2l0aE5ld1ZhbHVlKG1fdmFsdWUt
PmNoaWxkKDApLT5kaXZDb25zdGFudChtX3Byb2MsIG1fdmFsdWUtPmNoaWxkKDEpKSkpCkBAIC03
MzcsMTAgKzczNiw5IEBAIHByaXZhdGU6CiAgICAgICAgICAgICBicmVhazsKIAogICAgICAgICBj
YXNlIE1vZDoKLSAgICAgICAgY2FzZSBDaGlsbE1vZDoKICAgICAgICAgICAgIC8vIFR1cm4gdGhp
czogTW9kKGNvbnN0YW50MSwgY29uc3RhbnQyKQogICAgICAgICAgICAgLy8gSW50byB0aGlzOiBj
b25zdGFudDEgLyBjb25zdGFudDIKLSAgICAgICAgICAgIC8vIE5vdGUgdGhhdCB0aGlzIHVzZXMg
Q2hpbGxNb2Qgc2VtYW50aWNzLgorICAgICAgICAgICAgLy8gTm90ZSB0aGF0IHRoaXMgdXNlcyBN
b2Q8Q2hpbGw+IHNlbWFudGljcy4KICAgICAgICAgICAgIGlmIChyZXBsYWNlV2l0aE5ld1ZhbHVl
KG1fdmFsdWUtPmNoaWxkKDApLT5tb2RDb25zdGFudChtX3Byb2MsIG1fdmFsdWUtPmNoaWxkKDEp
KSkpCiAgICAgICAgICAgICAgICAgYnJlYWs7CiAKQEAgLTc3NCwxOSArNzcyLDggQEAgcHJpdmF0
ZToKICAgICAgICAgICAgICAgICAgICAgLy8gICAgICAgICAgICAgICAgPSAtMl4zMSAtIC0yXjMx
CiAgICAgICAgICAgICAgICAgICAgIC8vICAgICAgICAgICAgICAgID0gMAogCi0gICAgICAgICAg
ICAgICAgICAgIE9wY29kZSBkaXZPcGNvZGU7Ci0gICAgICAgICAgICAgICAgICAgIHN3aXRjaCAo
bV92YWx1ZS0+b3Bjb2RlKCkpIHsKLSAgICAgICAgICAgICAgICAgICAgY2FzZSBNb2Q6Ci0gICAg
ICAgICAgICAgICAgICAgICAgICBkaXZPcGNvZGUgPSBEaXY7Ci0gICAgICAgICAgICAgICAgICAg
ICAgICBicmVhazsKLSAgICAgICAgICAgICAgICAgICAgY2FzZSBDaGlsbE1vZDoKLSAgICAgICAg
ICAgICAgICAgICAgICAgIGRpdk9wY29kZSA9IENoaWxsRGl2OwotICAgICAgICAgICAgICAgICAg
ICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgICAgIGRlZmF1bHQ6Ci0gICAgICAgICAgICAg
ICAgICAgICAgICBkaXZPcGNvZGUgPSBPb3BzOwotICAgICAgICAgICAgICAgICAgICAgICAgUkVM
RUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFr
OwotICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIEtpbmQgZGl2S2lu
ZCA9IERpdjsKKyAgICAgICAgICAgICAgICAgICAgZGl2S2luZC5zZXRJc0NoaWxsKG1fdmFsdWUt
PmlzQ2hpbGwoKSk7CiAKICAgICAgICAgICAgICAgICAgICAgcmVwbGFjZVdpdGhJZGVudGl0eSgK
ICAgICAgICAgICAgICAgICAgICAgICAgIG1faW5zZXJ0aW9uU2V0Lmluc2VydDxWYWx1ZT4oCkBA
IC03OTUsNyArNzgyLDcgQEAgcHJpdmF0ZToKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBt
X2luc2VydGlvblNldC5pbnNlcnQ8VmFsdWU+KAogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBtX2luZGV4LCBNdWwsIG1fdmFsdWUtPm9yaWdpbigpLAogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBtX2luc2VydGlvblNldC5pbnNlcnQ8VmFsdWU+KAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgbV9pbmRleCwgZGl2T3Bjb2RlLCBtX3ZhbHVlLT5vcmln
aW4oKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1faW5kZXgsIGRpdktp
bmQsIG1fdmFsdWUtPm9yaWdpbigpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgbV92YWx1ZS0+Y2hpbGQoMCksIG1fdmFsdWUtPmNoaWxkKDEpKSwKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgbV92YWx1ZS0+Y2hpbGQoMSkpKSk7CiAgICAgICAgICAgICAgICAg
ICAgIGJyZWFrOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzVXBzaWxvblZhbHVl
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzVXBzaWxvblZhbHVl
LmgJKHJldmlzaW9uIDIwNjUyNCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM1Vwc2ls
b25WYWx1ZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0zNCw3ICszNCw3IEBAIG5hbWVzcGFjZSBKU0Mg
eyBuYW1lc3BhY2UgQjMgewogCiBjbGFzcyBKU19FWFBPUlRfUFJJVkFURSBVcHNpbG9uVmFsdWUg
OiBwdWJsaWMgVmFsdWUgewogcHVibGljOgotICAgIHN0YXRpYyBib29sIGFjY2VwdHMoT3Bjb2Rl
IG9wY29kZSkgeyByZXR1cm4gb3Bjb2RlID09IFVwc2lsb247IH0KKyAgICBzdGF0aWMgYm9vbCBh
Y2NlcHRzKEtpbmQga2luZCkgeyByZXR1cm4ga2luZCA9PSBVcHNpbG9uOyB9CiAKICAgICB+VXBz
aWxvblZhbHVlKCk7CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM1ZhbGlkYXRl
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNWYWxpZGF0ZS5j
cHAJKHJldmlzaW9uIDIwNjUyNCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM1ZhbGlk
YXRlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTgxLDYgKzE4MSwxMCBAQCBwdWJsaWM6CiAgICAg
ICAgICAgICBjYXNlIE1vZDoKICAgICAgICAgICAgIGNhc2UgQml0QW5kOgogICAgICAgICAgICAg
Y2FzZSBCaXRYb3I6CisgICAgICAgICAgICAgICAgaWYgKHZhbHVlLT5pc0NoaWxsKCkpIHsKKyAg
ICAgICAgICAgICAgICAgICAgVkFMSURBVEUodmFsdWUtPm9wY29kZSgpID09IERpdiB8fCB2YWx1
ZS0+b3Bjb2RlKCkgPT0gTW9kLCAoIkF0ICIsICp2YWx1ZSkpOworICAgICAgICAgICAgICAgICAg
ICBWQUxJREFURShpc0ludCh2YWx1ZS0+dHlwZSgpKSwgKCJBdCAiLCAqdmFsdWUpKTsKKyAgICAg
ICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgVkFMSURBVEUodmFsdWUtPm51bUNoaWxkcmVu
KCkgPT0gMiwgKCJBdCAiLCAqdmFsdWUpKTsKICAgICAgICAgICAgICAgICBWQUxJREFURSh2YWx1
ZS0+dHlwZSgpID09IHZhbHVlLT5jaGlsZCgwKS0+dHlwZSgpLCAoIkF0ICIsICp2YWx1ZSkpOwog
ICAgICAgICAgICAgICAgIFZBTElEQVRFKHZhbHVlLT50eXBlKCkgPT0gdmFsdWUtPmNoaWxkKDEp
LT50eXBlKCksICgiQXQgIiwgKnZhbHVlKSk7CkBAIC0xOTEsOCArMTk1LDYgQEAgcHVibGljOgog
ICAgICAgICAgICAgICAgIFZBTElEQVRFKHZhbHVlLT50eXBlKCkgPT0gdmFsdWUtPmNoaWxkKDAp
LT50eXBlKCksICgiQXQgIiwgKnZhbHVlKSk7CiAgICAgICAgICAgICAgICAgVkFMSURBVEUodmFs
dWUtPnR5cGUoKSAhPSBWb2lkLCAoIkF0ICIsICp2YWx1ZSkpOwogICAgICAgICAgICAgICAgIGJy
ZWFrOwotICAgICAgICAgICAgY2FzZSBDaGlsbERpdjoKLSAgICAgICAgICAgIGNhc2UgQ2hpbGxN
b2Q6CiAgICAgICAgICAgICBjYXNlIEJpdE9yOgogICAgICAgICAgICAgICAgIFZBTElEQVRFKHZh
bHVlLT5udW1DaGlsZHJlbigpID09IDIsICgiQXQgIiwgKnZhbHVlKSk7CiAgICAgICAgICAgICAg
ICAgVkFMSURBVEUodmFsdWUtPnR5cGUoKSA9PSB2YWx1ZS0+Y2hpbGQoMCktPnR5cGUoKSwgKCJB
dCAiLCAqdmFsdWUpKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM1ZhbHVlLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNWYWx1ZS5jcHAJKHJl
dmlzaW9uIDIwNjUyNCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM1ZhbHVlLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtMTc1LDcgKzE3NSw3IEBAIHZvaWQgVmFsdWU6OmR1bXAoUHJpbnRT
dHJlYW0mIG91dCkgY29uc3QKIHsKICAgICBib29sIGlzQ29uc3RhbnQgPSBmYWxzZTsKIAotICAg
IHN3aXRjaCAobV9vcGNvZGUpIHsKKyAgICBzd2l0Y2ggKG9wY29kZSgpKSB7CiAgICAgY2FzZSBD
b25zdDMyOgogICAgICAgICBvdXQucHJpbnQoIiQiLCBhc0ludDMyKCksICIoIik7CiAgICAgICAg
IGlzQ29uc3RhbnQgPSB0cnVlOwpAQCAtMjE1LDcgKzIxNSw3IEBAIHZvaWQgVmFsdWU6OmR1bXBD
aGlsZHJlbihDb21tYVByaW50ZXImIGMKIAogdm9pZCBWYWx1ZTo6ZGVlcER1bXAoY29uc3QgUHJv
Y2VkdXJlKiBwcm9jLCBQcmludFN0cmVhbSYgb3V0KSBjb25zdAogewotICAgIG91dC5wcmludCht
X3R5cGUsICIgIiwgZHVtcFByZWZpeCwgbV9pbmRleCwgIiA9ICIsIG1fb3Bjb2RlKTsKKyAgICBv
dXQucHJpbnQobV90eXBlLCAiICIsIGR1bXBQcmVmaXgsIG1faW5kZXgsICIgPSAiLCBtX2tpbmQp
OwogCiAgICAgb3V0LnByaW50KCIoIik7CiAgICAgQ29tbWFQcmludGVyIGNvbW1hOwpAQCAtNDM3
LDggKzQzNywxMCBAQCBWYWx1ZSogVmFsdWU6OmludmVydGVkQ29tcGFyZShQcm9jZWR1cmUmCiB7
CiAgICAgaWYgKCFudW1DaGlsZHJlbigpKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKLSAgICBp
ZiAoT3B0aW9uYWw8T3Bjb2RlPiBpbnZlcnRlZE9wY29kZSA9IEIzOjppbnZlcnRlZENvbXBhcmUo
b3Bjb2RlKCksIGNoaWxkKDApLT50eXBlKCkpKQorICAgIGlmIChPcHRpb25hbDxPcGNvZGU+IGlu
dmVydGVkT3Bjb2RlID0gQjM6OmludmVydGVkQ29tcGFyZShvcGNvZGUoKSwgY2hpbGQoMCktPnR5
cGUoKSkpIHsKKyAgICAgICAgQVNTRVJUKCFraW5kKCkuaGFzRXh0cmFCaXRzKCkpOwogICAgICAg
ICByZXR1cm4gcHJvYy5hZGQ8VmFsdWU+KCppbnZlcnRlZE9wY29kZSwgdHlwZSgpLCBvcmlnaW4o
KSwgY2hpbGRyZW4oKSk7CisgICAgfQogICAgIHJldHVybiBudWxscHRyOwogfQogCkBAIC01MzIs
OCArNTM0LDYgQEAgRWZmZWN0cyBWYWx1ZTo6ZWZmZWN0cygpIGNvbnN0CiAgICAgY2FzZSBTdWI6
CiAgICAgY2FzZSBNdWw6CiAgICAgY2FzZSBOZWc6Ci0gICAgY2FzZSBDaGlsbERpdjoKLSAgICBj
YXNlIENoaWxsTW9kOgogICAgIGNhc2UgQml0QW5kOgogICAgIGNhc2UgQml0T3I6CiAgICAgY2Fz
ZSBCaXRYb3I6CkBAIC02NDIsNyArNjQyLDcgQEAgVmFsdWVLZXkgVmFsdWU6OmtleSgpIGNvbnN0
CiB7CiAgICAgc3dpdGNoIChvcGNvZGUoKSkgewogICAgIGNhc2UgRnJhbWVQb2ludGVyOgotICAg
ICAgICByZXR1cm4gVmFsdWVLZXkob3Bjb2RlKCksIHR5cGUoKSk7CisgICAgICAgIHJldHVybiBW
YWx1ZUtleShraW5kKCksIHR5cGUoKSk7CiAgICAgY2FzZSBJZGVudGl0eToKICAgICBjYXNlIEFi
czoKICAgICBjYXNlIENlaWw6CkBAIC02NjEsMTQgKzY2MSwxMiBAQCBWYWx1ZUtleSBWYWx1ZTo6
a2V5KCkgY29uc3QKICAgICBjYXNlIENoZWNrOgogICAgIGNhc2UgQml0d2lzZUNhc3Q6CiAgICAg
Y2FzZSBOZWc6Ci0gICAgICAgIHJldHVybiBWYWx1ZUtleShvcGNvZGUoKSwgdHlwZSgpLCBjaGls
ZCgwKSk7CisgICAgICAgIHJldHVybiBWYWx1ZUtleShraW5kKCksIHR5cGUoKSwgY2hpbGQoMCkp
OwogICAgIGNhc2UgQWRkOgogICAgIGNhc2UgU3ViOgogICAgIGNhc2UgTXVsOgogICAgIGNhc2Ug
RGl2OgogICAgIGNhc2UgTW9kOgotICAgIGNhc2UgQ2hpbGxEaXY6Ci0gICAgY2FzZSBDaGlsbE1v
ZDoKICAgICBjYXNlIEJpdEFuZDoKICAgICBjYXNlIEJpdE9yOgogICAgIGNhc2UgQml0WG9yOgpA
QCAtNjg3LDkgKzY4NSw5IEBAIFZhbHVlS2V5IFZhbHVlOjprZXkoKSBjb25zdAogICAgIGNhc2Ug
Q2hlY2tBZGQ6CiAgICAgY2FzZSBDaGVja1N1YjoKICAgICBjYXNlIENoZWNrTXVsOgotICAgICAg
ICByZXR1cm4gVmFsdWVLZXkob3Bjb2RlKCksIHR5cGUoKSwgY2hpbGQoMCksIGNoaWxkKDEpKTsK
KyAgICAgICAgcmV0dXJuIFZhbHVlS2V5KGtpbmQoKSwgdHlwZSgpLCBjaGlsZCgwKSwgY2hpbGQo
MSkpOwogICAgIGNhc2UgU2VsZWN0OgotICAgICAgICByZXR1cm4gVmFsdWVLZXkob3Bjb2RlKCks
IHR5cGUoKSwgY2hpbGQoMCksIGNoaWxkKDEpLCBjaGlsZCgyKSk7CisgICAgICAgIHJldHVybiBW
YWx1ZUtleShraW5kKCksIHR5cGUoKSwgY2hpbGQoMCksIGNoaWxkKDEpLCBjaGlsZCgyKSk7CiAg
ICAgY2FzZSBDb25zdDMyOgogICAgICAgICByZXR1cm4gVmFsdWVLZXkoQ29uc3QzMiwgdHlwZSgp
LCBzdGF0aWNfY2FzdDxpbnQ2NF90Pihhc0ludDMyKCkpKTsKICAgICBjYXNlIENvbnN0NjQ6CkBA
IC03MzgsOSArNzM2LDkgQEAgdm9pZCBWYWx1ZTo6ZHVtcE1ldGEoQ29tbWFQcmludGVyJiwgUHJp
bgogewogfQogCi1UeXBlIFZhbHVlOjp0eXBlRm9yKE9wY29kZSBvcGNvZGUsIFZhbHVlKiBmaXJz
dENoaWxkLCBWYWx1ZSogc2Vjb25kQ2hpbGQpCitUeXBlIFZhbHVlOjp0eXBlRm9yKEtpbmQga2lu
ZCwgVmFsdWUqIGZpcnN0Q2hpbGQsIFZhbHVlKiBzZWNvbmRDaGlsZCkKIHsKLSAgICBzd2l0Y2gg
KG9wY29kZSkgeworICAgIHN3aXRjaCAoa2luZC5vcGNvZGUoKSkgewogICAgIGNhc2UgSWRlbnRp
dHk6CiAgICAgY2FzZSBBZGQ6CiAgICAgY2FzZSBTdWI6CkBAIC03NDgsOCArNzQ2LDYgQEAgVHlw
ZSBWYWx1ZTo6dHlwZUZvcihPcGNvZGUgb3Bjb2RlLCBWYWx1ZQogICAgIGNhc2UgRGl2OgogICAg
IGNhc2UgTW9kOgogICAgIGNhc2UgTmVnOgotICAgIGNhc2UgQ2hpbGxEaXY6Ci0gICAgY2FzZSBD
aGlsbE1vZDoKICAgICBjYXNlIEJpdEFuZDoKICAgICBjYXNlIEJpdE9yOgogICAgIGNhc2UgQml0
WG9yOgpAQCAtODIwLDkgKzgxNiw5IEBAIFR5cGUgVmFsdWU6OnR5cGVGb3IoT3Bjb2RlIG9wY29k
ZSwgVmFsdWUKICAgICB9CiB9CiAKLXZvaWQgVmFsdWU6OmJhZE9wY29kZShPcGNvZGUgb3Bjb2Rl
LCB1bnNpZ25lZCBudW1BcmdzKQordm9pZCBWYWx1ZTo6YmFkS2luZChLaW5kIGtpbmQsIHVuc2ln
bmVkIG51bUFyZ3MpCiB7Ci0gICAgZGF0YUxvZygiQmFkIG9wY29kZSAiLCBvcGNvZGUsICIgd2l0
aCAiLCBudW1BcmdzLCAiIGFyZ3MuXG4iKTsKKyAgICBkYXRhTG9nKCJCYWQga2luZCAiLCBraW5k
LCAiIHdpdGggIiwgbnVtQXJncywgIiBhcmdzLlxuIik7CiAgICAgUkVMRUFTRV9BU1NFUlRfTk9U
X1JFQUNIRUQoKTsKIH0KIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzVmFsdWUu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNWYWx1ZS5oCShyZXZp
c2lvbiAyMDY1MjQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNWYWx1ZS5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC0zMSw3ICszMSw3IEBACiAjaW5jbHVkZSAiQWlyQXJnLmgiCiAjaW5jbHVk
ZSAiQjNFZmZlY3RzLmgiCiAjaW5jbHVkZSAiQjNGcmVxdWVudGVkQmxvY2suaCIKLSNpbmNsdWRl
ICJCM09wY29kZS5oIgorI2luY2x1ZGUgIkIzS2luZC5oIgogI2luY2x1ZGUgIkIzT3JpZ2luLmgi
CiAjaW5jbHVkZSAiQjNTcGFyc2VDb2xsZWN0aW9uLmgiCiAjaW5jbHVkZSAiQjNUeXBlLmgiCkBA
IC01NSwxNSArNTUsMjMgQEAgcHVibGljOgogCiAgICAgc3RhdGljIGNvbnN0IGNoYXIqIGNvbnN0
IGR1bXBQcmVmaXg7CiAKLSAgICBzdGF0aWMgYm9vbCBhY2NlcHRzKE9wY29kZSkgeyByZXR1cm4g
dHJ1ZTsgfQorICAgIHN0YXRpYyBib29sIGFjY2VwdHMoS2luZCkgeyByZXR1cm4gdHJ1ZTsgfQog
CiAgICAgdmlydHVhbCB+VmFsdWUoKTsKIAogICAgIHVuc2lnbmVkIGluZGV4KCkgY29uc3QgeyBy
ZXR1cm4gbV9pbmRleDsgfQogICAgIAotICAgIC8vIE5vdGUgdGhhdCB0aGUgb3Bjb2RlIGlzIGlt
bXV0YWJsZSwgZXhjZXB0IGZvciByZXBsYWNpbmcgdmFsdWVzIHdpdGg6CisgICAgLy8gTm90ZSB0
aGF0IHRoZSBraW5kIGlzIGltbXV0YWJsZSwgZXhjZXB0IGZvciByZXBsYWNpbmcgdmFsdWVzIHdp
dGg6CiAgICAgLy8gSWRlbnRpdHksIE5vcCwgT29wcywgSnVtcCwgYW5kIFBoaS4gU2VlIGJlbG93
IGZvciByZXBsYWNlV2l0aFhYWCgpIG1ldGhvZHMuCi0gICAgT3Bjb2RlIG9wY29kZSgpIGNvbnN0
IHsgcmV0dXJuIG1fb3Bjb2RlOyB9CisgICAgS2luZCBraW5kKCkgY29uc3QgeyByZXR1cm4gbV9r
aW5kOyB9CisgICAgCisgICAgT3Bjb2RlIG9wY29kZSgpIGNvbnN0IHsgcmV0dXJuIGtpbmQoKS5v
cGNvZGUoKTsgfQorICAgIAorICAgIC8vIEl0J3MgZ29vZCBwcmFjdGljZSB0byBtaXJyb3IgS2lu
ZCBtZXRob2RzIGhlcmUuIFJlbWVtYmVyLCB5b3UncmUgbW9yZSBsaWtlbHkgdG8gZ2V0IGNvbmZ1
c2VkCisgICAgLy8gbG9va2luZyBhdCBjb2RlIGluIHBoYXNlcyB0aGVuIHlvdSBhcmUgdG8gZ2V0
IGNvbmZ1c2VkIGxvb2tpbmcgYXQgY29kZSBoZXJlLiBTbywgZG8gZXZlcnlvbmUKKyAgICAvLyBh
IGZhdm9yIGFuIG1ha2luZCBpdCBwb3NzaWJsZSB0byBzYXkgdmFsdWUtPmlzQmxhaCgpIGluIGFk
ZGl0aW9uIHRvIHNheWluZworICAgIC8vIHZhbHVlLT5raW5kKCkuaXNCbGFoKCkuCisgICAgYm9v
bCBpc0NoaWxsKCkgY29uc3QgeyByZXR1cm4ga2luZCgpLmlzQ2hpbGwoKTsgfQogCiAgICAgT3Jp
Z2luIG9yaWdpbigpIGNvbnN0IHsgcmV0dXJuIG1fb3JpZ2luOyB9CiAgICAgdm9pZCBzZXRPcmln
aW4oT3JpZ2luIG9yaWdpbikgeyBtX29yaWdpbiA9IG9yaWdpbjsgfQpAQCAtMTMyLDggKzE0MCw4
IEBAIHB1YmxpYzoKICAgICAvLyAgICAgdGhpbmdzCiAgICAgLy8gfQogICAgIC8vCi0gICAgLy8g
VGhpcyB3aWxsIHJldHVybiBudWxsIGlmIHRoaXMgb3Bjb2RlKCkgIT0gQXJndW1lbnRSZWcuIFRo
aXMgd29ya3MgYmVjYXVzZSB0aGlzIHJldHVybnMgbnVsbHB0cgotICAgIC8vIGlmIFQ6OmFjY2Vw
dHMob3Bjb2RlKCkpIHJldHVybnMgZmFsc2UuCisgICAgLy8gVGhpcyB3aWxsIHJldHVybiBudWxs
IGlmIHRoaXMga2luZCgpICE9IEFyZ3VtZW50UmVnLiBUaGlzIHdvcmtzIGJlY2F1c2UgdGhpcyBy
ZXR1cm5zIG51bGxwdHIKKyAgICAvLyBpZiBUOjphY2NlcHRzKGtpbmQoKSkgcmV0dXJucyBmYWxz
ZS4KICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPgogICAgIFQqIGFzKCk7CiAgICAgdGVtcGxhdGU8
dHlwZW5hbWUgVD4KQEAgLTE0Miw3ICsxNTAsNyBAQCBwdWJsaWM6CiAgICAgLy8gV2hhdCBmb2xs
b3dzIGFyZSBhIGJ1bmNoIG9mIGhlbHBlcnMgZm9yIGluc3BlY3RpbmcgYW5kIG1vZGlmeWluZyB2
YWx1ZXMuIE5vdGUgdGhhdCB3ZSBoYXZlIGEKICAgICAvLyBidW5jaCBvZiBkaWZmZXJlbnQgaWRp
b21zIGZvciBpbXBsZW1lbnRpbmcgc3VjaCBoZWxwZXJzLiBZb3UgY2FuIHVzZSB2aXJ0dWFsIG1l
dGhvZHMsIGFuZAogICAgIC8vIG92ZXJyaWRlIGZyb20gdGhlIHZhcmlvdXMgVmFsdWUgc3ViY2xh
c3Nlcy4gWW91IGNhbiBwdXQgdGhlIG1ldGhvZCBpbnNpZGUgVmFsdWUgYW5kIG1ha2UgaXQKLSAg
ICAvLyBub24tdmlydHVhbCwgYW5kIHRoZSBpbXBsZW1lbnRhdGlvbiBjYW4gc3dpdGNoIG9uIG9w
Y29kZS4gVGhlIG1ldGhvZCBjb3VsZCBiZSBpbmxpbmUgb3Igbm90LgorICAgIC8vIG5vbi12aXJ0
dWFsLCBhbmQgdGhlIGltcGxlbWVudGF0aW9uIGNhbiBzd2l0Y2ggb24ga2luZC4gVGhlIG1ldGhv
ZCBjb3VsZCBiZSBpbmxpbmUgb3Igbm90LgogICAgIC8vIElmIGEgbWV0aG9kIGlzIHNwZWNpZmlj
IHRvIHNvbWUgVmFsdWUgc3ViY2xhc3MsIHlvdSBjb3VsZCBwdXQgaXQgaW4gdGhlIHN1YmNsYXNz
LCBvciB5b3UgY291bGQKICAgICAvLyBwdXQgaXQgb24gVmFsdWUgYW55d2F5LiBJdCdzIGZpbmUg
dG8gcGljayB3aGF0ZXZlciBmZWVscyByaWdodCwgYW5kIHdlIHNob3VsZG4ndCByZXN0cmljdAog
ICAgIC8vIG91cnNlbHZlcyB0byBhbnkgcGFydGljdWxhciBpZGlvbS4KQEAgLTE1OSw4ICsxNjcs
OCBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBWYWx1ZSogY2hlY2tTdWJDb25zdGFudChQcm9jZWR1
cmUmLCBjb25zdCBWYWx1ZSogb3RoZXIpIGNvbnN0OwogICAgIHZpcnR1YWwgVmFsdWUqIGNoZWNr
TXVsQ29uc3RhbnQoUHJvY2VkdXJlJiwgY29uc3QgVmFsdWUqIG90aGVyKSBjb25zdDsKICAgICB2
aXJ0dWFsIFZhbHVlKiBjaGVja05lZ0NvbnN0YW50KFByb2NlZHVyZSYpIGNvbnN0OwotICAgIHZp
cnR1YWwgVmFsdWUqIGRpdkNvbnN0YW50KFByb2NlZHVyZSYsIGNvbnN0IFZhbHVlKiBvdGhlcikg
Y29uc3Q7IC8vIFRoaXMgY2hvb3NlcyBDaGlsbERpdiBzZW1hbnRpY3MgZm9yIGludGVnZXJzLgot
ICAgIHZpcnR1YWwgVmFsdWUqIG1vZENvbnN0YW50KFByb2NlZHVyZSYsIGNvbnN0IFZhbHVlKiBv
dGhlcikgY29uc3Q7IC8vIFRoaXMgY2hvb3NlcyBDaGlsbE1vZCBzZW1hbnRpY3MuCisgICAgdmly
dHVhbCBWYWx1ZSogZGl2Q29uc3RhbnQoUHJvY2VkdXJlJiwgY29uc3QgVmFsdWUqIG90aGVyKSBj
b25zdDsgLy8gVGhpcyBjaG9vc2VzIERpdjxDaGlsbD4gc2VtYW50aWNzIGZvciBpbnRlZ2Vycy4K
KyAgICB2aXJ0dWFsIFZhbHVlKiBtb2RDb25zdGFudChQcm9jZWR1cmUmLCBjb25zdCBWYWx1ZSog
b3RoZXIpIGNvbnN0OyAvLyBUaGlzIGNob29zZXMgTW9kPENoaWxsPiBzZW1hbnRpY3MuCiAgICAg
dmlydHVhbCBWYWx1ZSogYml0QW5kQ29uc3RhbnQoUHJvY2VkdXJlJiwgY29uc3QgVmFsdWUqIG90
aGVyKSBjb25zdDsKICAgICB2aXJ0dWFsIFZhbHVlKiBiaXRPckNvbnN0YW50KFByb2NlZHVyZSYs
IGNvbnN0IFZhbHVlKiBvdGhlcikgY29uc3Q7CiAgICAgdmlydHVhbCBWYWx1ZSogYml0WG9yQ29u
c3RhbnQoUHJvY2VkdXJlJiwgY29uc3QgVmFsdWUqIG90aGVyKSBjb25zdDsKQEAgLTI3NCwxMCAr
MjgyLDEwIEBAIHByaXZhdGU6CiAgICAgZnJpZW5kIGNsYXNzIFByb2NlZHVyZTsKICAgICBmcmll
bmQgY2xhc3MgU3BhcnNlQ29sbGVjdGlvbjxWYWx1ZT47CiAKLSAgICAvLyBDaGVja3MgdGhhdCB0
aGlzIG9wY29kZSBpcyB2YWxpZCBmb3IgdXNlIHdpdGggQjM6OlZhbHVlLgotICAgIEFMV0FZU19J
TkxJTkUgc3RhdGljIHZvaWQgY2hlY2tPcGNvZGUoT3Bjb2RlIG9wY29kZSwgdW5zaWduZWQgbnVt
QXJncykKKyAgICAvLyBDaGVja3MgdGhhdCB0aGlzIGtpbmQgaXMgdmFsaWQgZm9yIHVzZSB3aXRo
IEIzOjpWYWx1ZS4KKyAgICBBTFdBWVNfSU5MSU5FIHN0YXRpYyB2b2lkIGNoZWNrS2luZChLaW5k
IGtpbmQsIHVuc2lnbmVkIG51bUFyZ3MpCiAgICAgewotICAgICAgICBzd2l0Y2ggKG9wY29kZSkg
eworICAgICAgICBzd2l0Y2ggKGtpbmQub3Bjb2RlKCkpIHsKICAgICAgICAgY2FzZSBGcmFtZVBv
aW50ZXI6CiAgICAgICAgIGNhc2UgTm9wOgogICAgICAgICBjYXNlIFBoaToKQEAgLTI4NSwxMSAr
MjkzLDExIEBAIHByaXZhdGU6CiAgICAgICAgIGNhc2UgT29wczoKICAgICAgICAgY2FzZSBFbnRy
eVN3aXRjaDoKICAgICAgICAgICAgIGlmIChVTkxJS0VMWShudW1BcmdzKSkKLSAgICAgICAgICAg
ICAgICBiYWRPcGNvZGUob3Bjb2RlLCBudW1BcmdzKTsKKyAgICAgICAgICAgICAgICBiYWRLaW5k
KGtpbmQsIG51bUFyZ3MpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgUmV0dXJu
OgogICAgICAgICAgICAgaWYgKFVOTElLRUxZKG51bUFyZ3MgPiAxKSkKLSAgICAgICAgICAgICAg
ICBiYWRPcGNvZGUob3Bjb2RlLCBudW1BcmdzKTsKKyAgICAgICAgICAgICAgICBiYWRLaW5kKGtp
bmQsIG51bUFyZ3MpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgSWRlbnRpdHk6
CiAgICAgICAgIGNhc2UgTmVnOgpAQCAtMzEwLDE1ICszMTgsMTMgQEAgcHJpdmF0ZToKICAgICAg
ICAgY2FzZSBCaXR3aXNlQ2FzdDoKICAgICAgICAgY2FzZSBCcmFuY2g6CiAgICAgICAgICAgICBp
ZiAoVU5MSUtFTFkobnVtQXJncyAhPSAxKSkKLSAgICAgICAgICAgICAgICBiYWRPcGNvZGUob3Bj
b2RlLCBudW1BcmdzKTsKKyAgICAgICAgICAgICAgICBiYWRLaW5kKGtpbmQsIG51bUFyZ3MpOwog
ICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgQWRkOgogICAgICAgICBjYXNlIFN1YjoK
ICAgICAgICAgY2FzZSBNdWw6CiAgICAgICAgIGNhc2UgRGl2OgogICAgICAgICBjYXNlIE1vZDoK
LSAgICAgICAgY2FzZSBDaGlsbERpdjoKLSAgICAgICAgY2FzZSBDaGlsbE1vZDoKICAgICAgICAg
Y2FzZSBCaXRBbmQ6CiAgICAgICAgIGNhc2UgQml0T3I6CiAgICAgICAgIGNhc2UgQml0WG9yOgpA
QCAtMzM3LDE0ICszNDMsMTQgQEAgcHJpdmF0ZToKICAgICAgICAgY2FzZSBCZWxvd0VxdWFsOgog
ICAgICAgICBjYXNlIEVxdWFsT3JVbm9yZGVyZWQ6CiAgICAgICAgICAgICBpZiAoVU5MSUtFTFko
bnVtQXJncyAhPSAyKSkKLSAgICAgICAgICAgICAgICBiYWRPcGNvZGUob3Bjb2RlLCBudW1Bcmdz
KTsKKyAgICAgICAgICAgICAgICBiYWRLaW5kKGtpbmQsIG51bUFyZ3MpOwogICAgICAgICAgICAg
YnJlYWs7CiAgICAgICAgIGNhc2UgU2VsZWN0OgogICAgICAgICAgICAgaWYgKFVOTElLRUxZKG51
bUFyZ3MgIT0gMykpCi0gICAgICAgICAgICAgICAgYmFkT3Bjb2RlKG9wY29kZSwgbnVtQXJncyk7
CisgICAgICAgICAgICAgICAgYmFkS2luZChraW5kLCBudW1BcmdzKTsKICAgICAgICAgICAgIGJy
ZWFrOwogICAgICAgICBkZWZhdWx0OgotICAgICAgICAgICAgYmFkT3Bjb2RlKG9wY29kZSwgbnVt
QXJncyk7CisgICAgICAgICAgICBiYWRLaW5kKGtpbmQsIG51bUFyZ3MpOwogICAgICAgICAgICAg
YnJlYWs7CiAgICAgICAgIH0KICAgICB9CkBAIC0zNTgsNTYgKzM2NCw1NiBAQCBwcm90ZWN0ZWQ6
CiAgICAgLy8gSW5zdGFudGlhdGUgdmFsdWVzIHZpYSBQcm9jZWR1cmUuCiAgICAgLy8gVGhpcyBm
b3JtIHJlcXVpcmVzIHNwZWNpZnlpbmcgdGhlIHR5cGUgZXhwbGljaXRseToKICAgICB0ZW1wbGF0
ZTx0eXBlbmFtZS4uLiBBcmd1bWVudHM+Ci0gICAgZXhwbGljaXQgVmFsdWUoQ2hlY2tlZE9wY29k
ZVRhZywgT3Bjb2RlIG9wY29kZSwgVHlwZSB0eXBlLCBPcmlnaW4gb3JpZ2luLCBWYWx1ZSogZmly
c3RDaGlsZCwgQXJndW1lbnRzLi4uIGFyZ3VtZW50cykKLSAgICAgICAgOiBtX29wY29kZShvcGNv
ZGUpCisgICAgZXhwbGljaXQgVmFsdWUoQ2hlY2tlZE9wY29kZVRhZywgS2luZCBraW5kLCBUeXBl
IHR5cGUsIE9yaWdpbiBvcmlnaW4sIFZhbHVlKiBmaXJzdENoaWxkLCBBcmd1bWVudHMuLi4gYXJn
dW1lbnRzKQorICAgICAgICA6IG1fa2luZChraW5kKQogICAgICAgICAsIG1fdHlwZSh0eXBlKQog
ICAgICAgICAsIG1fb3JpZ2luKG9yaWdpbikKICAgICAgICAgLCBtX2NoaWxkcmVueyBmaXJzdENo
aWxkLCBhcmd1bWVudHMuLi4gfQogICAgIHsKICAgICB9CiAgICAgLy8gVGhpcyBmb3JtIGlzIGZv
ciBzcGVjaWZ5aW5nIHRoZSB0eXBlIGV4cGxpY2l0bHkgd2hlbiB0aGUgb3Bjb2RlIGhhcyBubyBj
aGlsZHJlbjoKLSAgICBleHBsaWNpdCBWYWx1ZShDaGVja2VkT3Bjb2RlVGFnLCBPcGNvZGUgb3Bj
b2RlLCBUeXBlIHR5cGUsIE9yaWdpbiBvcmlnaW4pCi0gICAgICAgIDogbV9vcGNvZGUob3Bjb2Rl
KQorICAgIGV4cGxpY2l0IFZhbHVlKENoZWNrZWRPcGNvZGVUYWcsIEtpbmQga2luZCwgVHlwZSB0
eXBlLCBPcmlnaW4gb3JpZ2luKQorICAgICAgICA6IG1fa2luZChraW5kKQogICAgICAgICAsIG1f
dHlwZSh0eXBlKQogICAgICAgICAsIG1fb3JpZ2luKG9yaWdpbikKICAgICB7CiAgICAgfQogICAg
IC8vIFRoaXMgZm9ybSBpcyBmb3IgdGhvc2Ugb3Bjb2RlcyB0aGF0IGNhbiBpbmZlciB0aGVpciB0
eXBlIGZyb20gdGhlIG9wY29kZSBhbmQgZmlyc3QgY2hpbGQ6CiAgICAgdGVtcGxhdGU8dHlwZW5h
bWUuLi4gQXJndW1lbnRzPgotICAgIGV4cGxpY2l0IFZhbHVlKENoZWNrZWRPcGNvZGVUYWcsIE9w
Y29kZSBvcGNvZGUsIE9yaWdpbiBvcmlnaW4sIFZhbHVlKiBmaXJzdENoaWxkKQotICAgICAgICA6
IG1fb3Bjb2RlKG9wY29kZSkKLSAgICAgICAgLCBtX3R5cGUodHlwZUZvcihvcGNvZGUsIGZpcnN0
Q2hpbGQpKQorICAgIGV4cGxpY2l0IFZhbHVlKENoZWNrZWRPcGNvZGVUYWcsIEtpbmQga2luZCwg
T3JpZ2luIG9yaWdpbiwgVmFsdWUqIGZpcnN0Q2hpbGQpCisgICAgICAgIDogbV9raW5kKGtpbmQp
CisgICAgICAgICwgbV90eXBlKHR5cGVGb3Ioa2luZCwgZmlyc3RDaGlsZCkpCiAgICAgICAgICwg
bV9vcmlnaW4ob3JpZ2luKQogICAgICAgICAsIG1fY2hpbGRyZW57IGZpcnN0Q2hpbGQgfQogICAg
IHsKICAgICB9CiAgICAgLy8gVGhpcyBmb3JtIGlzIGZvciB0aG9zZSBvcGNvZGVzIHRoYXQgY2Fu
IGluZmVyIHRoZWlyIHR5cGUgZnJvbSB0aGUgb3Bjb2RlIGFuZCBmaXJzdCBhbmQgc2Vjb25kIGNo
aWxkOgogICAgIHRlbXBsYXRlPHR5cGVuYW1lLi4uIEFyZ3VtZW50cz4KLSAgICBleHBsaWNpdCBW
YWx1ZShDaGVja2VkT3Bjb2RlVGFnLCBPcGNvZGUgb3Bjb2RlLCBPcmlnaW4gb3JpZ2luLCBWYWx1
ZSogZmlyc3RDaGlsZCwgVmFsdWUqIHNlY29uZENoaWxkLCBBcmd1bWVudHMuLi4gYXJndW1lbnRz
KQotICAgICAgICA6IG1fb3Bjb2RlKG9wY29kZSkKLSAgICAgICAgLCBtX3R5cGUodHlwZUZvcihv
cGNvZGUsIGZpcnN0Q2hpbGQsIHNlY29uZENoaWxkKSkKKyAgICBleHBsaWNpdCBWYWx1ZShDaGVj
a2VkT3Bjb2RlVGFnLCBLaW5kIGtpbmQsIE9yaWdpbiBvcmlnaW4sIFZhbHVlKiBmaXJzdENoaWxk
LCBWYWx1ZSogc2Vjb25kQ2hpbGQsIEFyZ3VtZW50cy4uLiBhcmd1bWVudHMpCisgICAgICAgIDog
bV9raW5kKGtpbmQpCisgICAgICAgICwgbV90eXBlKHR5cGVGb3Ioa2luZCwgZmlyc3RDaGlsZCwg
c2Vjb25kQ2hpbGQpKQogICAgICAgICAsIG1fb3JpZ2luKG9yaWdpbikKICAgICAgICAgLCBtX2No
aWxkcmVueyBmaXJzdENoaWxkLCBzZWNvbmRDaGlsZCwgYXJndW1lbnRzLi4uIH0KICAgICB7CiAg
ICAgfQogICAgIC8vIFRoaXMgZm9ybSBpcyBmb3IgdGhvc2Ugb3Bjb2RlcyB0aGF0IGNhbiBpbmZl
ciB0aGVpciB0eXBlIGZyb20gdGhlIG9wY29kZSBhbG9uZSwgYW5kIHRoYXQgZG9uJ3QKICAgICAv
LyB0YWtlIGFueSBhcmd1bWVudHM6Ci0gICAgZXhwbGljaXQgVmFsdWUoQ2hlY2tlZE9wY29kZVRh
ZywgT3Bjb2RlIG9wY29kZSwgT3JpZ2luIG9yaWdpbikKLSAgICAgICAgOiBtX29wY29kZShvcGNv
ZGUpCi0gICAgICAgICwgbV90eXBlKHR5cGVGb3Iob3Bjb2RlLCBudWxscHRyKSkKKyAgICBleHBs
aWNpdCBWYWx1ZShDaGVja2VkT3Bjb2RlVGFnLCBLaW5kIGtpbmQsIE9yaWdpbiBvcmlnaW4pCisg
ICAgICAgIDogbV9raW5kKGtpbmQpCisgICAgICAgICwgbV90eXBlKHR5cGVGb3Ioa2luZCwgbnVs
bHB0cikpCiAgICAgICAgICwgbV9vcmlnaW4ob3JpZ2luKQogICAgIHsKICAgICB9CiAgICAgLy8g
VXNlIHRoaXMgZm9ybSBmb3IgdmFyYXJncy4KLSAgICBleHBsaWNpdCBWYWx1ZShDaGVja2VkT3Bj
b2RlVGFnLCBPcGNvZGUgb3Bjb2RlLCBUeXBlIHR5cGUsIE9yaWdpbiBvcmlnaW4sIGNvbnN0IEFk
amFjZW5jeUxpc3QmIGNoaWxkcmVuKQotICAgICAgICA6IG1fb3Bjb2RlKG9wY29kZSkKKyAgICBl
eHBsaWNpdCBWYWx1ZShDaGVja2VkT3Bjb2RlVGFnLCBLaW5kIGtpbmQsIFR5cGUgdHlwZSwgT3Jp
Z2luIG9yaWdpbiwgY29uc3QgQWRqYWNlbmN5TGlzdCYgY2hpbGRyZW4pCisgICAgICAgIDogbV9r
aW5kKGtpbmQpCiAgICAgICAgICwgbV90eXBlKHR5cGUpCiAgICAgICAgICwgbV9vcmlnaW4ob3Jp
Z2luKQogICAgICAgICAsIG1fY2hpbGRyZW4oY2hpbGRyZW4pCiAgICAgewogICAgIH0KLSAgICBl
eHBsaWNpdCBWYWx1ZShDaGVja2VkT3Bjb2RlVGFnLCBPcGNvZGUgb3Bjb2RlLCBUeXBlIHR5cGUs
IE9yaWdpbiBvcmlnaW4sIEFkamFjZW5jeUxpc3QmJiBjaGlsZHJlbikKLSAgICAgICAgOiBtX29w
Y29kZShvcGNvZGUpCisgICAgZXhwbGljaXQgVmFsdWUoQ2hlY2tlZE9wY29kZVRhZywgS2luZCBr
aW5kLCBUeXBlIHR5cGUsIE9yaWdpbiBvcmlnaW4sIEFkamFjZW5jeUxpc3QmJiBjaGlsZHJlbikK
KyAgICAgICAgOiBtX2tpbmQoa2luZCkKICAgICAgICAgLCBtX3R5cGUodHlwZSkKICAgICAgICAg
LCBtX29yaWdpbihvcmlnaW4pCiAgICAgICAgICwgbV9jaGlsZHJlbihXVEZNb3ZlKGNoaWxkcmVu
KSkKQEAgLTQxNyw1MiArNDIzLDUyIEBAIHByb3RlY3RlZDoKICAgICAvLyBUaGlzIGlzIHRoZSBj
b25zdHJ1Y3RvciB5b3UgZW5kIHVwIGFjdHVhbGx5IGNhbGxpbmcsIGlmIHlvdSdyZSBpbnN0YW50
aWF0aW5nIFZhbHVlCiAgICAgLy8gZGlyZWN0bHkuCiAgICAgdGVtcGxhdGU8dHlwZW5hbWUuLi4g
QXJndW1lbnRzPgotICAgICAgICBleHBsaWNpdCBWYWx1ZShPcGNvZGUgb3Bjb2RlLCBUeXBlIHR5
cGUsIE9yaWdpbiBvcmlnaW4pCi0gICAgICAgIDogVmFsdWUoQ2hlY2tlZE9wY29kZSwgb3Bjb2Rl
LCB0eXBlLCBvcmlnaW4pCisgICAgICAgIGV4cGxpY2l0IFZhbHVlKEtpbmQga2luZCwgVHlwZSB0
eXBlLCBPcmlnaW4gb3JpZ2luKQorICAgICAgICA6IFZhbHVlKENoZWNrZWRPcGNvZGUsIGtpbmQs
IHR5cGUsIG9yaWdpbikKICAgICB7Ci0gICAgICAgIGNoZWNrT3Bjb2RlKG9wY29kZSwgMCk7Cisg
ICAgICAgIGNoZWNrS2luZChraW5kLCAwKTsKICAgICB9CiAgICAgdGVtcGxhdGU8dHlwZW5hbWUu
Li4gQXJndW1lbnRzPgotICAgICAgICBleHBsaWNpdCBWYWx1ZShPcGNvZGUgb3Bjb2RlLCBUeXBl
IHR5cGUsIE9yaWdpbiBvcmlnaW4sIFZhbHVlKiBmaXJzdENoaWxkLCBBcmd1bWVudHMmJi4uLiBh
cmd1bWVudHMpCi0gICAgICAgIDogVmFsdWUoQ2hlY2tlZE9wY29kZSwgb3Bjb2RlLCB0eXBlLCBv
cmlnaW4sIGZpcnN0Q2hpbGQsIHN0ZDo6Zm9yd2FyZDxBcmd1bWVudHM+KGFyZ3VtZW50cykuLi4p
CisgICAgICAgIGV4cGxpY2l0IFZhbHVlKEtpbmQga2luZCwgVHlwZSB0eXBlLCBPcmlnaW4gb3Jp
Z2luLCBWYWx1ZSogZmlyc3RDaGlsZCwgQXJndW1lbnRzJiYuLi4gYXJndW1lbnRzKQorICAgICAg
ICA6IFZhbHVlKENoZWNrZWRPcGNvZGUsIGtpbmQsIHR5cGUsIG9yaWdpbiwgZmlyc3RDaGlsZCwg
c3RkOjpmb3J3YXJkPEFyZ3VtZW50cz4oYXJndW1lbnRzKS4uLikKICAgICB7Ci0gICAgICAgIGNo
ZWNrT3Bjb2RlKG9wY29kZSwgMSArIHNpemVvZi4uLihhcmd1bWVudHMpKTsKKyAgICAgICAgY2hl
Y2tLaW5kKGtpbmQsIDEgKyBzaXplb2YuLi4oYXJndW1lbnRzKSk7CiAgICAgfQogICAgIHRlbXBs
YXRlPHR5cGVuYW1lLi4uIEFyZ3VtZW50cz4KLSAgICAgICAgZXhwbGljaXQgVmFsdWUoT3Bjb2Rl
IG9wY29kZSwgVHlwZSB0eXBlLCBPcmlnaW4gb3JpZ2luLCBjb25zdCBBZGphY2VuY3lMaXN0JiBj
aGlsZHJlbikKLSAgICAgICAgOiBWYWx1ZShDaGVja2VkT3Bjb2RlLCBvcGNvZGUsIHR5cGUsIG9y
aWdpbiwgY2hpbGRyZW4pCisgICAgICAgIGV4cGxpY2l0IFZhbHVlKEtpbmQga2luZCwgVHlwZSB0
eXBlLCBPcmlnaW4gb3JpZ2luLCBjb25zdCBBZGphY2VuY3lMaXN0JiBjaGlsZHJlbikKKyAgICAg
ICAgOiBWYWx1ZShDaGVja2VkT3Bjb2RlLCBraW5kLCB0eXBlLCBvcmlnaW4sIGNoaWxkcmVuKQog
ICAgIHsKLSAgICAgICAgY2hlY2tPcGNvZGUob3Bjb2RlLCBjaGlsZHJlbi5zaXplKCkpOworICAg
ICAgICBjaGVja0tpbmQoa2luZCwgY2hpbGRyZW4uc2l6ZSgpKTsKICAgICB9CiAgICAgdGVtcGxh
dGU8dHlwZW5hbWUuLi4gQXJndW1lbnRzPgotICAgICAgICBleHBsaWNpdCBWYWx1ZShPcGNvZGUg
b3Bjb2RlLCBUeXBlIHR5cGUsIE9yaWdpbiBvcmlnaW4sIEFkamFjZW5jeUxpc3QmJiBjaGlsZHJl
bikKLSAgICAgICAgOiBWYWx1ZShDaGVja2VkT3Bjb2RlLCBvcGNvZGUsIHR5cGUsIG9yaWdpbiwg
V1RGTW92ZShjaGlsZHJlbikpCisgICAgICAgIGV4cGxpY2l0IFZhbHVlKEtpbmQga2luZCwgVHlw
ZSB0eXBlLCBPcmlnaW4gb3JpZ2luLCBBZGphY2VuY3lMaXN0JiYgY2hpbGRyZW4pCisgICAgICAg
IDogVmFsdWUoQ2hlY2tlZE9wY29kZSwga2luZCwgdHlwZSwgb3JpZ2luLCBXVEZNb3ZlKGNoaWxk
cmVuKSkKICAgICB7Ci0gICAgICAgIGNoZWNrT3Bjb2RlKG9wY29kZSwgbV9jaGlsZHJlbi5zaXpl
KCkpOworICAgICAgICBjaGVja0tpbmQoa2luZCwgbV9jaGlsZHJlbi5zaXplKCkpOwogICAgIH0K
ICAgICB0ZW1wbGF0ZTx0eXBlbmFtZS4uLiBBcmd1bWVudHM+Ci0gICAgICAgIGV4cGxpY2l0IFZh
bHVlKE9wY29kZSBvcGNvZGUsIE9yaWdpbiBvcmlnaW4sIEFyZ3VtZW50cyYmLi4uIGFyZ3VtZW50
cykKLSAgICAgICAgOiBWYWx1ZShDaGVja2VkT3Bjb2RlLCBvcGNvZGUsIG9yaWdpbiwgc3RkOjpm
b3J3YXJkPEFyZ3VtZW50cz4oYXJndW1lbnRzKS4uLikKKyAgICAgICAgZXhwbGljaXQgVmFsdWUo
S2luZCBraW5kLCBPcmlnaW4gb3JpZ2luLCBBcmd1bWVudHMmJi4uLiBhcmd1bWVudHMpCisgICAg
ICAgIDogVmFsdWUoQ2hlY2tlZE9wY29kZSwga2luZCwgb3JpZ2luLCBzdGQ6OmZvcndhcmQ8QXJn
dW1lbnRzPihhcmd1bWVudHMpLi4uKQogICAgIHsKLSAgICAgICAgY2hlY2tPcGNvZGUob3Bjb2Rl
LCBzaXplb2YuLi4oYXJndW1lbnRzKSk7CisgICAgICAgIGNoZWNrS2luZChraW5kLCBzaXplb2Yu
Li4oYXJndW1lbnRzKSk7CiAgICAgfQogCiBwcml2YXRlOgotICAgIGZyaWVuZCBjbGFzcyBDaGVj
a1ZhbHVlOyAvLyBDaGVja1ZhbHVlOjpjb252ZXJ0VG9BZGQoKSBtb2RpZmllcyBtX29wY29kZS4K
KyAgICBmcmllbmQgY2xhc3MgQ2hlY2tWYWx1ZTsgLy8gQ2hlY2tWYWx1ZTo6Y29udmVydFRvQWRk
KCkgbW9kaWZpZXMgbV9raW5kLgogICAgIAotICAgIHN0YXRpYyBUeXBlIHR5cGVGb3IoT3Bjb2Rl
LCBWYWx1ZSogZmlyc3RDaGlsZCwgVmFsdWUqIHNlY29uZENoaWxkID0gbnVsbHB0cik7CisgICAg
c3RhdGljIFR5cGUgdHlwZUZvcihLaW5kLCBWYWx1ZSogZmlyc3RDaGlsZCwgVmFsdWUqIHNlY29u
ZENoaWxkID0gbnVsbHB0cik7CiAKICAgICAvLyBUaGlzIGdyb3VwIG9mIGZpZWxkcyBpcyBhcnJh
bmdlZCB0byBmaXQgaW4gNjQgYml0cy4KIHByb3RlY3RlZDoKICAgICB1bnNpZ25lZCBtX2luZGV4
IHsgVUlOVF9NQVggfTsKIHByaXZhdGU6Ci0gICAgT3Bjb2RlIG1fb3Bjb2RlOworICAgIEtpbmQg
bV9raW5kOwogICAgIFR5cGUgbV90eXBlOwogICAgIAogICAgIE9yaWdpbiBtX29yaWdpbjsKICAg
ICBBZGphY2VuY3lMaXN0IG1fY2hpbGRyZW47CiAKLSAgICBKU19FWFBPUlRfUFJJVkFURSBOT19S
RVRVUk5fRFVFX1RPX0NSQVNIIHN0YXRpYyB2b2lkIGJhZE9wY29kZShPcGNvZGUsIHVuc2lnbmVk
KTsKKyAgICBKU19FWFBPUlRfUFJJVkFURSBOT19SRVRVUk5fRFVFX1RPX0NSQVNIIHN0YXRpYyB2
b2lkIGJhZEtpbmQoS2luZCwgdW5zaWduZWQpOwogCiBwdWJsaWM6CiAgICAgQmFzaWNCbG9jayog
b3duZXIgeyBudWxscHRyIH07IC8vIGNvbXB1dGVkIGJ5IFByb2NlZHVyZTo6cmVzZXRWYWx1ZU93
bmVycygpLgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzVmFsdWVJbmxpbmVzLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzVmFsdWVJbmxpbmVzLmgJ
KHJldmlzaW9uIDIwNjUyNCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM1ZhbHVlSW5s
aW5lcy5oCSh3b3JraW5nIGNvcHkpCkBAIC01OCw3ICs1OCw3IEBAIHZvaWQgVmFsdWU6OnJlcGxh
Y2VXaXRoQm90dG9tKGNvbnN0IEJvdHQKIHRlbXBsYXRlPHR5cGVuYW1lIFQ+CiBpbmxpbmUgVCog
VmFsdWU6OmFzKCkKIHsKLSAgICBpZiAoVDo6YWNjZXB0cyhvcGNvZGUoKSkpCisgICAgaWYgKFQ6
OmFjY2VwdHMoa2luZCgpKSkKICAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PFQqPih0aGlzKTsK
ICAgICByZXR1cm4gbnVsbHB0cjsKIH0KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9C
M1ZhbHVlS2V5LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNW
YWx1ZUtleS5jcHAJKHJldmlzaW9uIDIwNjUyNCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
My9CM1ZhbHVlS2V5LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTEsMTQgKzUxLDE0IEBAIFZhbHVl
S2V5IFZhbHVlS2V5OjppbnRDb25zdGFudChUeXBlIHR5cGUKIAogdm9pZCBWYWx1ZUtleTo6ZHVt
cChQcmludFN0cmVhbSYgb3V0KSBjb25zdAogewotICAgIG91dC5wcmludChtX3R5cGUsICIgIiwg
bV9vcGNvZGUsICIoIiwgdS5pbmRpY2VzWzBdLCAiLCAiLCB1LmluZGljZXNbMV0sICIsICIsIHUu
aW5kaWNlc1syXSwgIikiKTsKKyAgICBvdXQucHJpbnQobV90eXBlLCAiICIsIG1fa2luZCwgIigi
LCB1LmluZGljZXNbMF0sICIsICIsIHUuaW5kaWNlc1sxXSwgIiwgIiwgdS5pbmRpY2VzWzJdLCAi
KSIpOwogfQogCiBWYWx1ZSogVmFsdWVLZXk6Om1hdGVyaWFsaXplKFByb2NlZHVyZSYgcHJvYywg
T3JpZ2luIG9yaWdpbikgY29uc3QKIHsKICAgICBzd2l0Y2ggKG9wY29kZSgpKSB7CiAgICAgY2Fz
ZSBGcmFtZVBvaW50ZXI6Ci0gICAgICAgIHJldHVybiBwcm9jLmFkZDxWYWx1ZT4ob3Bjb2RlKCks
IHR5cGUoKSwgb3JpZ2luKTsKKyAgICAgICAgcmV0dXJuIHByb2MuYWRkPFZhbHVlPihraW5kKCks
IHR5cGUoKSwgb3JpZ2luKTsKICAgICBjYXNlIElkZW50aXR5OgogICAgIGNhc2UgU3FydDoKICAg
ICBjYXNlIFNFeHQ4OgpAQCAtNzIsMTEgKzcyLDEwIEBAIFZhbHVlKiBWYWx1ZUtleTo6bWF0ZXJp
YWxpemUoUHJvY2VkdXJlJiAKICAgICBjYXNlIEZsb2F0VG9Eb3VibGU6CiAgICAgY2FzZSBEb3Vi
bGVUb0Zsb2F0OgogICAgIGNhc2UgQ2hlY2s6Ci0gICAgICAgIHJldHVybiBwcm9jLmFkZDxWYWx1
ZT4ob3Bjb2RlKCksIHR5cGUoKSwgb3JpZ2luLCBjaGlsZChwcm9jLCAwKSk7CisgICAgICAgIHJl
dHVybiBwcm9jLmFkZDxWYWx1ZT4oa2luZCgpLCB0eXBlKCksIG9yaWdpbiwgY2hpbGQocHJvYywg
MCkpOwogICAgIGNhc2UgQWRkOgogICAgIGNhc2UgU3ViOgogICAgIGNhc2UgTXVsOgotICAgIGNh
c2UgQ2hpbGxEaXY6CiAgICAgY2FzZSBNb2Q6CiAgICAgY2FzZSBCaXRBbmQ6CiAgICAgY2FzZSBC
aXRPcjoKQEAgLTkzLDkgKzkyLDkgQEAgVmFsdWUqIFZhbHVlS2V5OjptYXRlcmlhbGl6ZShQcm9j
ZWR1cmUmIAogICAgIGNhc2UgQWJvdmVFcXVhbDoKICAgICBjYXNlIEJlbG93RXF1YWw6CiAgICAg
Y2FzZSBEaXY6Ci0gICAgICAgIHJldHVybiBwcm9jLmFkZDxWYWx1ZT4ob3Bjb2RlKCksIHR5cGUo
KSwgb3JpZ2luLCBjaGlsZChwcm9jLCAwKSwgY2hpbGQocHJvYywgMSkpOworICAgICAgICByZXR1
cm4gcHJvYy5hZGQ8VmFsdWU+KGtpbmQoKSwgdHlwZSgpLCBvcmlnaW4sIGNoaWxkKHByb2MsIDAp
LCBjaGlsZChwcm9jLCAxKSk7CiAgICAgY2FzZSBTZWxlY3Q6Ci0gICAgICAgIHJldHVybiBwcm9j
LmFkZDxWYWx1ZT4ob3Bjb2RlKCksIHR5cGUoKSwgb3JpZ2luLCBjaGlsZChwcm9jLCAwKSwgY2hp
bGQocHJvYywgMSksIGNoaWxkKHByb2MsIDIpKTsKKyAgICAgICAgcmV0dXJuIHByb2MuYWRkPFZh
bHVlPihraW5kKCksIHR5cGUoKSwgb3JpZ2luLCBjaGlsZChwcm9jLCAwKSwgY2hpbGQocHJvYywg
MSksIGNoaWxkKHByb2MsIDIpKTsKICAgICBjYXNlIENvbnN0MzI6CiAgICAgICAgIHJldHVybiBw
cm9jLmFkZDxDb25zdDMyVmFsdWU+KG9yaWdpbiwgc3RhdGljX2Nhc3Q8aW50MzJfdD4odmFsdWUo
KSkpOwogICAgIGNhc2UgQ29uc3Q2NDoKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9C
M1ZhbHVlS2V5LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzVmFs
dWVLZXkuaAkocmV2aXNpb24gMjA2NTI0KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0Iz
VmFsdWVLZXkuaAkod29ya2luZyBjb3B5KQpAQCAtMjksNyArMjksNyBAQAogI2lmIEVOQUJMRShC
M19KSVQpCiAKICNpbmNsdWRlICJCM0hlYXBSYW5nZS5oIgotI2luY2x1ZGUgIkIzT3Bjb2RlLmgi
CisjaW5jbHVkZSAiQjNLaW5kLmgiCiAjaW5jbHVkZSAiQjNPcmlnaW4uaCIKICNpbmNsdWRlICJC
M1R5cGUuaCIKICNpbmNsdWRlIDx3dGYvSGFzaFRhYmxlLmg+CkBAIC01MSwzNCArNTEsMzQgQEAg
cHVibGljOgogICAgIHsKICAgICB9CiAKLSAgICBWYWx1ZUtleShPcGNvZGUgb3Bjb2RlLCBUeXBl
IHR5cGUpCi0gICAgICAgIDogbV9vcGNvZGUob3Bjb2RlKQorICAgIFZhbHVlS2V5KEtpbmQga2lu
ZCwgVHlwZSB0eXBlKQorICAgICAgICA6IG1fa2luZChraW5kKQogICAgICAgICAsIG1fdHlwZSh0
eXBlKQogICAgIHsKICAgICB9CiAKLSAgICBWYWx1ZUtleShPcGNvZGUsIFR5cGUsIFZhbHVlKiBj
aGlsZCk7CisgICAgVmFsdWVLZXkoS2luZCwgVHlwZSwgVmFsdWUqIGNoaWxkKTsKIAotICAgIFZh
bHVlS2V5KE9wY29kZSwgVHlwZSwgVmFsdWUqIGxlZnQsIFZhbHVlKiByaWdodCk7CisgICAgVmFs
dWVLZXkoS2luZCwgVHlwZSwgVmFsdWUqIGxlZnQsIFZhbHVlKiByaWdodCk7CiAKLSAgICBWYWx1
ZUtleShPcGNvZGUsIFR5cGUsIFZhbHVlKiBhLCBWYWx1ZSogYiwgVmFsdWUqIGMpOworICAgIFZh
bHVlS2V5KEtpbmQsIFR5cGUsIFZhbHVlKiBhLCBWYWx1ZSogYiwgVmFsdWUqIGMpOwogCi0gICAg
VmFsdWVLZXkoT3Bjb2RlIG9wY29kZSwgVHlwZSB0eXBlLCBpbnQ2NF90IHZhbHVlKQotICAgICAg
ICA6IG1fb3Bjb2RlKG9wY29kZSkKKyAgICBWYWx1ZUtleShLaW5kIGtpbmQsIFR5cGUgdHlwZSwg
aW50NjRfdCB2YWx1ZSkKKyAgICAgICAgOiBtX2tpbmQoa2luZCkKICAgICAgICAgLCBtX3R5cGUo
dHlwZSkKICAgICB7CiAgICAgICAgIHUudmFsdWUgPSB2YWx1ZTsKICAgICB9CiAKLSAgICBWYWx1
ZUtleShPcGNvZGUgb3Bjb2RlLCBUeXBlIHR5cGUsIGRvdWJsZSB2YWx1ZSkKLSAgICAgICAgOiBt
X29wY29kZShvcGNvZGUpCisgICAgVmFsdWVLZXkoS2luZCBraW5kLCBUeXBlIHR5cGUsIGRvdWJs
ZSB2YWx1ZSkKKyAgICAgICAgOiBtX2tpbmQoa2luZCkKICAgICAgICAgLCBtX3R5cGUodHlwZSkK
ICAgICB7CiAgICAgICAgIHUuZG91YmxlVmFsdWUgPSB2YWx1ZTsKICAgICB9CiAKLSAgICBWYWx1
ZUtleShPcGNvZGUgb3Bjb2RlLCBUeXBlIHR5cGUsIGZsb2F0IHZhbHVlKQotICAgICAgICA6IG1f
b3Bjb2RlKG9wY29kZSkKKyAgICBWYWx1ZUtleShLaW5kIGtpbmQsIFR5cGUgdHlwZSwgZmxvYXQg
dmFsdWUpCisgICAgICAgIDogbV9raW5kKGtpbmQpCiAgICAgICAgICwgbV90eXBlKHR5cGUpCiAg
ICAgewogICAgICAgICB1LmZsb2F0VmFsdWUgPSB2YWx1ZTsKQEAgLTg2LDcgKzg2LDggQEAgcHVi
bGljOgogCiAgICAgc3RhdGljIFZhbHVlS2V5IGludENvbnN0YW50KFR5cGUgdHlwZSwgaW50NjRf
dCB2YWx1ZSk7CiAKLSAgICBPcGNvZGUgb3Bjb2RlKCkgY29uc3QgeyByZXR1cm4gbV9vcGNvZGU7
IH0KKyAgICBLaW5kIGtpbmQoKSBjb25zdCB7IHJldHVybiBtX2tpbmQ7IH0KKyAgICBPcGNvZGUg
b3Bjb2RlKCkgY29uc3QgeyByZXR1cm4ga2luZCgpLm9wY29kZSgpOyB9CiAgICAgVHlwZSB0eXBl
KCkgY29uc3QgeyByZXR1cm4gbV90eXBlOyB9CiAgICAgdW5zaWduZWQgY2hpbGRJbmRleCh1bnNp
Z25lZCBpbmRleCkgY29uc3QgeyByZXR1cm4gdS5pbmRpY2VzW2luZGV4XTsgfQogICAgIFZhbHVl
KiBjaGlsZChQcm9jZWR1cmUmLCB1bnNpZ25lZCBpbmRleCkgY29uc3Q7CkBAIC05Niw3ICs5Nyw3
IEBAIHB1YmxpYzoKIAogICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBWYWx1ZUtleSYgb3RoZXIp
IGNvbnN0CiAgICAgewotICAgICAgICByZXR1cm4gbV9vcGNvZGUgPT0gb3RoZXIubV9vcGNvZGUK
KyAgICAgICAgcmV0dXJuIG1fa2luZCA9PSBvdGhlci5tX2tpbmQKICAgICAgICAgICAgICYmIG1f
dHlwZSA9PSBvdGhlci5tX3R5cGUKICAgICAgICAgICAgICYmIHUgPT0gb3RoZXIudTsKICAgICB9
CkBAIC0xMDgsNyArMTA5LDcgQEAgcHVibGljOgogCiAgICAgdW5zaWduZWQgaGFzaCgpIGNvbnN0
CiAgICAgewotICAgICAgICByZXR1cm4gbV9vcGNvZGUgKyBtX3R5cGUgKyBXVEY6OkludEhhc2g8
aW50MzJfdD46Omhhc2godS5pbmRpY2VzWzBdKSArIHUuaW5kaWNlc1sxXSArIHUuaW5kaWNlc1sy
XTsKKyAgICAgICAgcmV0dXJuIG1fa2luZC5oYXNoKCkgKyBtX3R5cGUgKyBXVEY6OkludEhhc2g8
aW50MzJfdD46Omhhc2godS5pbmRpY2VzWzBdKSArIHUuaW5kaWNlc1sxXSArIHUuaW5kaWNlc1sy
XTsKICAgICB9CiAKICAgICBleHBsaWNpdCBvcGVyYXRvciBib29sKCkgY29uc3QgeyByZXR1cm4g
KnRoaXMgIT0gVmFsdWVLZXkoKTsgfQpAQCAtMTUwLDcgKzE1MSw3IEBAIHB1YmxpYzoKICAgICB9
CiAgICAgICAgIAogcHJpdmF0ZToKLSAgICBPcGNvZGUgbV9vcGNvZGUgeyBPb3BzIH07CisgICAg
S2luZCBtX2tpbmQ7CiAgICAgVHlwZSBtX3R5cGUgeyBWb2lkIH07CiAgICAgdW5pb24gVSB7CiAg
ICAgICAgIHVuc2lnbmVkIGluZGljZXNbM107CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
YjMvQjNWYWx1ZUtleUlubGluZXMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvYjMvQjNWYWx1ZUtleUlubGluZXMuaAkocmV2aXNpb24gMjA2NTI0KQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL2IzL0IzVmFsdWVLZXlJbmxpbmVzLmgJKHdvcmtpbmcgY29weSkKQEAgLTM0
LDIzICszNCwyMyBAQAogCiBuYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIEIzIHsKIAotaW5saW5l
IFZhbHVlS2V5OjpWYWx1ZUtleShPcGNvZGUgb3Bjb2RlLCBUeXBlIHR5cGUsIFZhbHVlKiBjaGls
ZCkKLSAgICA6IG1fb3Bjb2RlKG9wY29kZSkKK2lubGluZSBWYWx1ZUtleTo6VmFsdWVLZXkoS2lu
ZCBraW5kLCBUeXBlIHR5cGUsIFZhbHVlKiBjaGlsZCkKKyAgICA6IG1fa2luZChraW5kKQogICAg
ICwgbV90eXBlKHR5cGUpCiB7CiAgICAgdS5pbmRpY2VzWzBdID0gY2hpbGQtPmluZGV4KCk7CiB9
CiAKLWlubGluZSBWYWx1ZUtleTo6VmFsdWVLZXkoT3Bjb2RlIG9wY29kZSwgVHlwZSB0eXBlLCBW
YWx1ZSogbGVmdCwgVmFsdWUqIHJpZ2h0KQotICAgIDogbV9vcGNvZGUob3Bjb2RlKQoraW5saW5l
IFZhbHVlS2V5OjpWYWx1ZUtleShLaW5kIGtpbmQsIFR5cGUgdHlwZSwgVmFsdWUqIGxlZnQsIFZh
bHVlKiByaWdodCkKKyAgICA6IG1fa2luZChraW5kKQogICAgICwgbV90eXBlKHR5cGUpCiB7CiAg
ICAgdS5pbmRpY2VzWzBdID0gbGVmdC0+aW5kZXgoKTsKICAgICB1LmluZGljZXNbMV0gPSByaWdo
dC0+aW5kZXgoKTsKIH0KIAotaW5saW5lIFZhbHVlS2V5OjpWYWx1ZUtleShPcGNvZGUgb3Bjb2Rl
LCBUeXBlIHR5cGUsIFZhbHVlKiBhLCBWYWx1ZSogYiwgVmFsdWUqIGMpCi0gICAgOiBtX29wY29k
ZShvcGNvZGUpCitpbmxpbmUgVmFsdWVLZXk6OlZhbHVlS2V5KEtpbmQga2luZCwgVHlwZSB0eXBl
LCBWYWx1ZSogYSwgVmFsdWUqIGIsIFZhbHVlKiBjKQorICAgIDogbV9raW5kKGtpbmQpCiAgICAg
LCBtX3R5cGUodHlwZSkKIHsKICAgICB1LmluZGljZXNbMF0gPSBhLT5pbmRleCgpOwpJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL2IzL3Rlc3RiMy5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL2IzL3Rlc3RiMy5jcHAJKHJldmlzaW9uIDIwNjUyNCkKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9iMy90ZXN0YjMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC05OTc2LDcg
Kzk5NzYsNyBAQCB2b2lkIHRlc3RDaGlsbERpdihpbnQgbnVtLCBpbnQgZGVuLCBpbnQgCiAgICAg
ICAgIHJvb3QtPmFwcGVuZE5ld0NvbnRyb2xWYWx1ZSgKICAgICAgICAgICAgIHByb2MsIFJldHVy
biwgT3JpZ2luKCksCiAgICAgICAgICAgICByb290LT5hcHBlbmROZXc8VmFsdWU+KAotICAgICAg
ICAgICAgICAgIHByb2MsIENoaWxsRGl2LCBPcmlnaW4oKSwKKyAgICAgICAgICAgICAgICBwcm9j
LCBjaGlsbChEaXYpLCBPcmlnaW4oKSwKICAgICAgICAgICAgICAgICByb290LT5hcHBlbmROZXc8
VmFsdWU+KAogICAgICAgICAgICAgICAgICAgICBwcm9jLCBUcnVuYywgT3JpZ2luKCksCiAgICAg
ICAgICAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBP
cmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIwKSksCkBAIC05OTk1LDcgKzk5OTUsNyBAQCB2
b2lkIHRlc3RDaGlsbERpdihpbnQgbnVtLCBpbnQgZGVuLCBpbnQgCiAgICAgICAgIHJvb3QtPmFw
cGVuZE5ld0NvbnRyb2xWYWx1ZSgKICAgICAgICAgICAgIHByb2MsIFJldHVybiwgT3JpZ2luKCks
CiAgICAgICAgICAgICByb290LT5hcHBlbmROZXc8VmFsdWU+KAotICAgICAgICAgICAgICAgIHBy
b2MsIENoaWxsRGl2LCBPcmlnaW4oKSwKKyAgICAgICAgICAgICAgICBwcm9jLCBjaGlsbChEaXYp
LCBPcmlnaW4oKSwKICAgICAgICAgICAgICAgICByb290LT5hcHBlbmROZXc8Q29uc3QzMlZhbHVl
Pihwcm9jLCBPcmlnaW4oKSwgbnVtKSwKICAgICAgICAgICAgICAgICByb290LT5hcHBlbmROZXc8
Q29uc3QzMlZhbHVlPihwcm9jLCBPcmlnaW4oKSwgZGVuKSkpOwogICAgICAgICAKQEAgLTEwMDEz
LDcgKzEwMDEzLDcgQEAgdm9pZCB0ZXN0Q2hpbGxEaXZUd2ljZShpbnQgbnVtMSwgaW50IGRlbgog
ICAgICAgICByb290LT5hcHBlbmROZXc8VmFsdWU+KAogICAgICAgICAgICAgcHJvYywgQWRkLCBP
cmlnaW4oKSwKICAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4oCi0gICAgICAgICAg
ICAgICAgcHJvYywgQ2hpbGxEaXYsIE9yaWdpbigpLAorICAgICAgICAgICAgICAgIHByb2MsIGNo
aWxsKERpdiksIE9yaWdpbigpLAogICAgICAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxWYWx1
ZT4oCiAgICAgICAgICAgICAgICAgICAgIHByb2MsIFRydW5jLCBPcmlnaW4oKSwKICAgICAgICAg
ICAgICAgICAgICAgcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdp
bigpLCBHUFJJbmZvOjphcmd1bWVudEdQUjApKSwKQEAgLTEwMDIxLDcgKzEwMDIxLDcgQEAgdm9p
ZCB0ZXN0Q2hpbGxEaXZUd2ljZShpbnQgbnVtMSwgaW50IGRlbgogICAgICAgICAgICAgICAgICAg
ICBwcm9jLCBUcnVuYywgT3JpZ2luKCksCiAgICAgICAgICAgICAgICAgICAgIHJvb3QtPmFwcGVu
ZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRH
UFIxKSkpLAogICAgICAgICAgICAgcm9vdC0+YXBwZW5kTmV3PFZhbHVlPigKLSAgICAgICAgICAg
ICAgICBwcm9jLCBDaGlsbERpdiwgT3JpZ2luKCksCisgICAgICAgICAgICAgICAgcHJvYywgY2hp
bGwoRGl2KSwgT3JpZ2luKCksCiAgICAgICAgICAgICAgICAgcm9vdC0+YXBwZW5kTmV3PFZhbHVl
PigKICAgICAgICAgICAgICAgICAgICAgcHJvYywgVHJ1bmMsIE9yaWdpbigpLAogICAgICAgICAg
ICAgICAgICAgICByb290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2lu
KCksIEdQUkluZm86OmFyZ3VtZW50R1BSMikpLApAQCAtMTAwNDUsNyArMTAwNDUsNyBAQCB2b2lk
IHRlc3RDaGlsbERpdjY0KGludDY0X3QgbnVtLCBpbnQ2NF90CiAgICAgICAgIHJvb3QtPmFwcGVu
ZE5ld0NvbnRyb2xWYWx1ZSgKICAgICAgICAgICAgIHByb2MsIFJldHVybiwgT3JpZ2luKCksCiAg
ICAgICAgICAgICByb290LT5hcHBlbmROZXc8VmFsdWU+KAotICAgICAgICAgICAgICAgIHByb2Ms
IENoaWxsRGl2LCBPcmlnaW4oKSwKKyAgICAgICAgICAgICAgICBwcm9jLCBjaGlsbChEaXYpLCBP
cmlnaW4oKSwKICAgICAgICAgICAgICAgICByb290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1
ZT4ocHJvYywgT3JpZ2luKCksIEdQUkluZm86OmFyZ3VtZW50R1BSMCksCiAgICAgICAgICAgICAg
ICAgcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBHUFJJ
bmZvOjphcmd1bWVudEdQUjEpKSk7CiAgICAgICAgIApAQCAtMTAwNjAsNyArMTAwNjAsNyBAQCB2
b2lkIHRlc3RDaGlsbERpdjY0KGludDY0X3QgbnVtLCBpbnQ2NF90CiAgICAgICAgIHJvb3QtPmFw
cGVuZE5ld0NvbnRyb2xWYWx1ZSgKICAgICAgICAgICAgIHByb2MsIFJldHVybiwgT3JpZ2luKCks
CiAgICAgICAgICAgICByb290LT5hcHBlbmROZXc8VmFsdWU+KAotICAgICAgICAgICAgICAgIHBy
b2MsIENoaWxsRGl2LCBPcmlnaW4oKSwKKyAgICAgICAgICAgICAgICBwcm9jLCBjaGlsbChEaXYp
LCBPcmlnaW4oKSwKICAgICAgICAgICAgICAgICByb290LT5hcHBlbmROZXc8Q29uc3Q2NFZhbHVl
Pihwcm9jLCBPcmlnaW4oKSwgbnVtKSwKICAgICAgICAgICAgICAgICByb290LT5hcHBlbmROZXc8
Q29uc3Q2NFZhbHVlPihwcm9jLCBPcmlnaW4oKSwgZGVuKSkpOwogICAgICAgICAKQEAgLTEwMTc5
LDcgKzEwMTc5LDcgQEAgdm9pZCB0ZXN0Q2hpbGxNb2RBcmcoaW50NjRfdCB2YWx1ZSkKICAgICBC
YXNpY0Jsb2NrKiByb290ID0gcHJvYy5hZGRCbG9jaygpOwogCiAgICAgVmFsdWUqIGFyZ3VtZW50
ID0gcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBHUFJJ
bmZvOjphcmd1bWVudEdQUjApOwotICAgIFZhbHVlKiByZXN1bHQgPSByb290LT5hcHBlbmROZXc8
VmFsdWU+KHByb2MsIENoaWxsTW9kLCBPcmlnaW4oKSwgYXJndW1lbnQsIGFyZ3VtZW50KTsKKyAg
ICBWYWx1ZSogcmVzdWx0ID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBjaGlsbChNb2Qp
LCBPcmlnaW4oKSwgYXJndW1lbnQsIGFyZ3VtZW50KTsKICAgICByb290LT5hcHBlbmROZXdDb250
cm9sVmFsdWUocHJvYywgUmV0dXJuLCBPcmlnaW4oKSwgcmVzdWx0KTsKIAogICAgIENIRUNLKCFj
b21waWxlQW5kUnVuPGludDY0X3Q+KHByb2MsIHZhbHVlKSk7CkBAIC0xMDE5Miw3ICsxMDE5Miw3
IEBAIHZvaWQgdGVzdENoaWxsTW9kQXJncyhpbnQ2NF90IG51bWVyYXRvciwKIAogICAgIFZhbHVl
KiBhcmd1bWVudDEgPSByb290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3Jp
Z2luKCksIEdQUkluZm86OmFyZ3VtZW50R1BSMCk7CiAgICAgVmFsdWUqIGFyZ3VtZW50MiA9IHJv
b3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6
YXJndW1lbnRHUFIxKTsKLSAgICBWYWx1ZSogcmVzdWx0ID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVl
Pihwcm9jLCBDaGlsbE1vZCwgT3JpZ2luKCksIGFyZ3VtZW50MSwgYXJndW1lbnQyKTsKKyAgICBW
YWx1ZSogcmVzdWx0ID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBjaGlsbChNb2QpLCBP
cmlnaW4oKSwgYXJndW1lbnQxLCBhcmd1bWVudDIpOwogICAgIHJvb3QtPmFwcGVuZE5ld0NvbnRy
b2xWYWx1ZShwcm9jLCBSZXR1cm4sIE9yaWdpbigpLCByZXN1bHQpOwogCiAgICAgQ0hFQ0soY29t
cGlsZUFuZFJ1bjxpbnQ2NF90Pihwcm9jLCBudW1lcmF0b3IsIGRlbm9taW5hdG9yKSA9PSBjaGls
bE1vZChudW1lcmF0b3IsIGRlbm9taW5hdG9yKSk7CkBAIC0xMDIwNSw3ICsxMDIwNSw3IEBAIHZv
aWQgdGVzdENoaWxsTW9kSW1tcyhpbnQ2NF90IG51bWVyYXRvciwKIAogICAgIFZhbHVlKiBhcmd1
bWVudDEgPSByb290LT5hcHBlbmROZXc8Q29uc3Q2NFZhbHVlPihwcm9jLCBPcmlnaW4oKSwgbnVt
ZXJhdG9yKTsKICAgICBWYWx1ZSogYXJndW1lbnQyID0gcm9vdC0+YXBwZW5kTmV3PENvbnN0NjRW
YWx1ZT4ocHJvYywgT3JpZ2luKCksIGRlbm9taW5hdG9yKTsKLSAgICBWYWx1ZSogcmVzdWx0ID0g
cm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBDaGlsbE1vZCwgT3JpZ2luKCksIGFyZ3VtZW50
MSwgYXJndW1lbnQyKTsKKyAgICBWYWx1ZSogcmVzdWx0ID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVl
Pihwcm9jLCBjaGlsbChNb2QpLCBPcmlnaW4oKSwgYXJndW1lbnQxLCBhcmd1bWVudDIpOwogICAg
IHJvb3QtPmFwcGVuZE5ld0NvbnRyb2xWYWx1ZShwcm9jLCBSZXR1cm4sIE9yaWdpbigpLCByZXN1
bHQpOwogCiAgICAgQ0hFQ0soY29tcGlsZUFuZFJ1bjxpbnQ2NF90Pihwcm9jLCBudW1lcmF0b3Is
IGRlbm9taW5hdG9yKSA9PSBjaGlsbE1vZChudW1lcmF0b3IsIGRlbm9taW5hdG9yKSk7CkBAIC0x
MDIxOCw3ICsxMDIxOCw3IEBAIHZvaWQgdGVzdENoaWxsTW9kQXJnMzIoaW50MzJfdCB2YWx1ZSkK
IAogICAgIFZhbHVlKiBhcmd1bWVudCA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgVHJ1
bmMsIE9yaWdpbigpLAogICAgICAgICByb290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4o
cHJvYywgT3JpZ2luKCksIEdQUkluZm86OmFyZ3VtZW50R1BSMCkpOwotICAgIFZhbHVlKiByZXN1
bHQgPSByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIENoaWxsTW9kLCBPcmlnaW4oKSwgYXJn
dW1lbnQsIGFyZ3VtZW50KTsKKyAgICBWYWx1ZSogcmVzdWx0ID0gcm9vdC0+YXBwZW5kTmV3PFZh
bHVlPihwcm9jLCBjaGlsbChNb2QpLCBPcmlnaW4oKSwgYXJndW1lbnQsIGFyZ3VtZW50KTsKICAg
ICByb290LT5hcHBlbmROZXdDb250cm9sVmFsdWUocHJvYywgUmV0dXJuLCBPcmlnaW4oKSwgcmVz
dWx0KTsKIAogICAgIENIRUNLKCFjb21waWxlQW5kUnVuPGludDMyX3Q+KHByb2MsIHZhbHVlKSk7
CkBAIC0xMDIzMyw3ICsxMDIzMyw3IEBAIHZvaWQgdGVzdENoaWxsTW9kQXJnczMyKGludDMyX3Qg
bnVtZXJhdG8KICAgICAgICAgcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2Ms
IE9yaWdpbigpLCBHUFJJbmZvOjphcmd1bWVudEdQUjApKTsKICAgICBWYWx1ZSogYXJndW1lbnQy
ID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBUcnVuYywgT3JpZ2luKCksCiAgICAgICAg
IHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BSSW5m
bzo6YXJndW1lbnRHUFIxKSk7Ci0gICAgVmFsdWUqIHJlc3VsdCA9IHJvb3QtPmFwcGVuZE5ldzxW
YWx1ZT4ocHJvYywgQ2hpbGxNb2QsIE9yaWdpbigpLCBhcmd1bWVudDEsIGFyZ3VtZW50Mik7Cisg
ICAgVmFsdWUqIHJlc3VsdCA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgY2hpbGwoTW9k
KSwgT3JpZ2luKCksIGFyZ3VtZW50MSwgYXJndW1lbnQyKTsKICAgICByb290LT5hcHBlbmROZXdD
b250cm9sVmFsdWUocHJvYywgUmV0dXJuLCBPcmlnaW4oKSwgcmVzdWx0KTsKIAogICAgIENIRUNL
KGNvbXBpbGVBbmRSdW48aW50MzJfdD4ocHJvYywgbnVtZXJhdG9yLCBkZW5vbWluYXRvcikgPT0g
Y2hpbGxNb2QobnVtZXJhdG9yLCBkZW5vbWluYXRvcikpOwpAQCAtMTAyNDYsNyArMTAyNDYsNyBA
QCB2b2lkIHRlc3RDaGlsbE1vZEltbXMzMihpbnQzMl90IG51bWVyYXRvCiAKICAgICBWYWx1ZSog
YXJndW1lbnQxID0gcm9vdC0+YXBwZW5kTmV3PENvbnN0MzJWYWx1ZT4ocHJvYywgT3JpZ2luKCks
IG51bWVyYXRvcik7CiAgICAgVmFsdWUqIGFyZ3VtZW50MiA9IHJvb3QtPmFwcGVuZE5ldzxDb25z
dDMyVmFsdWU+KHByb2MsIE9yaWdpbigpLCBkZW5vbWluYXRvcik7Ci0gICAgVmFsdWUqIHJlc3Vs
dCA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgQ2hpbGxNb2QsIE9yaWdpbigpLCBhcmd1
bWVudDEsIGFyZ3VtZW50Mik7CisgICAgVmFsdWUqIHJlc3VsdCA9IHJvb3QtPmFwcGVuZE5ldzxW
YWx1ZT4ocHJvYywgY2hpbGwoTW9kKSwgT3JpZ2luKCksIGFyZ3VtZW50MSwgYXJndW1lbnQyKTsK
ICAgICByb290LT5hcHBlbmROZXdDb250cm9sVmFsdWUocHJvYywgUmV0dXJuLCBPcmlnaW4oKSwg
cmVzdWx0KTsKIAogICAgIENIRUNLKGNvbXBpbGVBbmRSdW48aW50MzJfdD4ocHJvYywgbnVtZXJh
dG9yLCBkZW5vbWluYXRvcikgPT0gY2hpbGxNb2QobnVtZXJhdG9yLCBkZW5vbWluYXRvcikpOwpA
QCAtMTAzMTMsNyArMTAzMTMsNyBAQCB2b2lkIHRlc3RTd2l0Y2hDaGlsbERpdih1bnNpZ25lZCBk
ZWdyZWUsCiAgICAgICAgIG5ld0Jsb2NrLT5hcHBlbmROZXdDb250cm9sVmFsdWUoCiAgICAgICAg
ICAgICBwcm9jLCBSZXR1cm4sIE9yaWdpbigpLAogICAgICAgICAgICAgbmV3QmxvY2stPmFwcGVu
ZE5ldzxWYWx1ZT4oCi0gICAgICAgICAgICAgICAgcHJvYywgQ2hpbGxEaXYsIE9yaWdpbigpLCAo
aSAmIDEpID8gcmlnaHQgOiBsZWZ0LCAoaSAmIDEpID8gbGVmdCA6IHJpZ2h0KSk7CisgICAgICAg
ICAgICAgICAgcHJvYywgY2hpbGwoRGl2KSwgT3JpZ2luKCksIChpICYgMSkgPyByaWdodCA6IGxl
ZnQsIChpICYgMSkgPyBsZWZ0IDogcmlnaHQpKTsKICAgICAgICAgCiAgICAgICAgIHN3aXRjaFZh
bHVlLT5hcHBlbmRDYXNlKFN3aXRjaENhc2UoZ2FwICogaSwgRnJlcXVlbnRlZEJsb2NrKG5ld0Js
b2NrKSkpOwogICAgIH0KQEAgLTEyNjc0LDcgKzEyNjc0LDcgQEAgdm9pZCB0ZXN0RW50cnlTd2l0
Y2hXaXRoQ29tbW9uUGF0aHMoKQogICAgIGVuZC0+YXBwZW5kTmV3PFZhbHVlPigKICAgICAgICAg
cHJvYywgUmV0dXJuLCBPcmlnaW4oKSwKICAgICAgICAgZW5kLT5hcHBlbmROZXc8VmFsdWU+KAot
ICAgICAgICAgICAgcHJvYywgQ2hpbGxNb2QsIE9yaWdpbigpLAorICAgICAgICAgICAgcHJvYywg
Y2hpbGwoTW9kKSwgT3JpZ2luKCksCiAgICAgICAgICAgICBwaGksIGVuZC0+YXBwZW5kTmV3PFZh
bHVlPigKICAgICAgICAgICAgICAgICBwcm9jLCBUcnVuYywgT3JpZ2luKCksCiAgICAgICAgICAg
ICAgICAgZW5kLT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQ
UkluZm86OmFyZ3VtZW50R1BSMikpKSk7CkBAIC0xMjc5MSw3ICsxMjc5MSw3IEBAIHZvaWQgdGVz
dEVudHJ5U3dpdGNoV2l0aENvbW1vblBhdGhzQW5kTm8KICAgICBlbmQtPmFwcGVuZE5ldzxWYWx1
ZT4oCiAgICAgICAgIHByb2MsIFJldHVybiwgT3JpZ2luKCksCiAgICAgICAgIGVuZC0+YXBwZW5k
TmV3PFZhbHVlPigKLSAgICAgICAgICAgIHByb2MsIENoaWxsTW9kLCBPcmlnaW4oKSwKKyAgICAg
ICAgICAgIHByb2MsIGNoaWxsKE1vZCksIE9yaWdpbigpLAogICAgICAgICAgICAgcGhpLCBlbmQt
PmFwcGVuZE5ldzxWYWx1ZT4oCiAgICAgICAgICAgICAgICAgcHJvYywgVHJ1bmMsIE9yaWdpbigp
LAogICAgICAgICAgICAgICAgIGVuZC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2Ms
IE9yaWdpbigpLCBHUFJJbmZvOjphcmd1bWVudEdQUjIpKSkpOwpJbmRleDogU291cmNlL0phdmFT
Y3JpcHRDb3JlL2Z0bC9GVExPdXRwdXQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9mdGwvRlRMT3V0cHV0LmNwcAkocmV2aXNpb24gMjA2NTI0KQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL2Z0bC9GVExPdXRwdXQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNTEsNyAr
MTUxLDcgQEAgTFZhbHVlIE91dHB1dDo6ZGl2KExWYWx1ZSBsZWZ0LCBMVmFsdWUgcgogCiBMVmFs
dWUgT3V0cHV0OjpjaGlsbERpdihMVmFsdWUgbGVmdCwgTFZhbHVlIHJpZ2h0KQogewotICAgIHJl
dHVybiBtX2Jsb2NrLT5hcHBlbmROZXc8QjM6OlZhbHVlPihtX3Byb2MsIEIzOjpDaGlsbERpdiwg
b3JpZ2luKCksIGxlZnQsIHJpZ2h0KTsKKyAgICByZXR1cm4gbV9ibG9jay0+YXBwZW5kTmV3PEIz
OjpWYWx1ZT4obV9wcm9jLCBjaGlsbChCMzo6RGl2KSwgb3JpZ2luKCksIGxlZnQsIHJpZ2h0KTsK
IH0KIAogTFZhbHVlIE91dHB1dDo6bW9kKExWYWx1ZSBsZWZ0LCBMVmFsdWUgcmlnaHQpCkBAIC0x
NjEsNyArMTYxLDcgQEAgTFZhbHVlIE91dHB1dDo6bW9kKExWYWx1ZSBsZWZ0LCBMVmFsdWUgcgog
CiBMVmFsdWUgT3V0cHV0OjpjaGlsbE1vZChMVmFsdWUgbGVmdCwgTFZhbHVlIHJpZ2h0KQogewot
ICAgIHJldHVybiBtX2Jsb2NrLT5hcHBlbmROZXc8QjM6OlZhbHVlPihtX3Byb2MsIEIzOjpDaGls
bE1vZCwgb3JpZ2luKCksIGxlZnQsIHJpZ2h0KTsKKyAgICByZXR1cm4gbV9ibG9jay0+YXBwZW5k
TmV3PEIzOjpWYWx1ZT4obV9wcm9jLCBjaGlsbChCMzo6TW9kKSwgb3JpZ2luKCksIGxlZnQsIHJp
Z2h0KTsKIH0KIAogTFZhbHVlIE91dHB1dDo6bmVnKExWYWx1ZSB2YWx1ZSkKSW5kZXg6IFdlYnNp
dGVzL3dlYmtpdC5vcmcvZG9jcy9iMy9pbnRlcm1lZGlhdGUtcmVwcmVzZW50YXRpb24uaHRtbAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBXZWJzaXRlcy93ZWJraXQub3JnL2RvY3MvYjMvaW50ZXJtZWRpYXRlLXJl
cHJlc2VudGF0aW9uLmh0bWwJKHJldmlzaW9uIDIwNjUyNCkKKysrIFdlYnNpdGVzL3dlYmtpdC5v
cmcvZG9jcy9iMy9pbnRlcm1lZGlhdGUtcmVwcmVzZW50YXRpb24uaHRtbAkod29ya2luZyBjb3B5
KQpAQCAtNzgsOSArNzgsMTQgQEAKICAgICA8aDI+VmFsdWVzPC9oMj4KIAogICAgIDxwPlZhcmlh
YmxlcywgYW5kIHRoZSBpbnN0cnVjdGlvbnMgdGhhdCBkZWZpbmUgdGhlbSwgYXJlIHJlcHJlc2Vu
dGVkIHVzaW5nIHRoZSBWYWx1ZSBvYmplY3QuCi0gICAgICBUaGUgVmFsdWUgb2JqZWN0IGhhcyBh
IHJldHVybiB0eXBlLCBhbiBvcGNvZGUsIGFuZCB6ZXJvIG9yIG1vcmUgY2hpbGRyZW4uICBDaGls
ZHJlbiBhcmUKKyAgICAgIFRoZSBWYWx1ZSBvYmplY3QgaGFzIGEgcmV0dXJuIHR5cGUsIGEga2lu
ZCwgYW5kIHplcm8gb3IgbW9yZSBjaGlsZHJlbi4gIENoaWxkcmVuIGFyZQogICAgICAgcmVmZXJl
bmNlcyB0byBvdGhlciBWYWx1ZXMuICBUaG9zZSB2YWx1ZXMgYXJlIHVzZWQgYXMgaW5wdXQgdG8g
dGhlIGluc3RydWN0aW9uIHRoYXQKICAgICAgIGNvbXB1dGVzIHRoaXMgdmFsdWUuPC9wPgorICAg
IAorICAgIDxwPlRoZSB2YWx1ZSBraW5kIGlzIGEgY29tYmluYXRpb24gb2YgYW4gb3Bjb2RlIGFu
ZCBvcHRpb25hbCBmbGFncy4gVGhlIGZsYWdzIGFsbG93IGEgc2luZ2xlCisgICAgICBvcGNvZGUg
dG8gaGF2ZSBtYW55IHZhcmlhbnRzLiBGb3IgZXhhbXBsZSwgRGl2IGFuZCBNb2QgbWF5IGhhdmUg
dGhlIENoaWxsIGZsYWcgc2V0IHRvIGluZGljYXRlCisgICAgICB0aGF0IHRoZXkgc2hvdWxkIG5v
dCB0cmFwIG9uIGNvcm5lciBjYXNlcy48L3A+CisgICAgCiAgICAgPHA+VmFsdWVzIGFsc28gaGF2
ZSBhIHVuaXF1ZSAzMi1iaXQgaW5kZXggdGhhdCBpcyB1c2VkIGFzIHRoZSBuYW1lLjwvcD4KICAg
ICAKICAgICA8cD5FeGFtcGxlOjwvcD4KQEAgLTIzMSwzMSArMjM2LDM2IEBACiAgICAgICAgIGFj
Y29yZGluZyB0byB0aGUgSUVFRSA4NTQgc3BlYy48L2RkPgogCiAgICAgICA8ZHQ+VCBEaXYoVCwg
VCk8L2R0PgotICAgICAgPGRkPldvcmtzIHdpdGggYW55IHR5cGUgZXhjZXB0IFZvaWQuICBGb3Ig
aW50ZWdlciB0eXBlcywgdGhpcyByZXByZXNlbnRzIHNpZ25lZCBkaXZpc2lvbgotICAgICAgICB3
aXRoIHJvdW5kLXRvLXplcm8uICBJdHMgYmVoYXZpb3IgaXMgdW5kZWZpbmVkIGZvciB4LzAgb3Ig
LTI8c3VwPjMxPC9zdXA+Ly0xLiAgRm9yIGZsb2F0aW5nCi0gICAgICAgIHBvaW50IHR5cGVzLCB0
aGlzIHJlcHJlc2VudHMgZGl2aXNpb24gYWNjb3JkaW5nIHRvIHRoZSBJRUVFIDg1NCBzcGVjLjwv
ZGQ+CisgICAgICA8ZGQ+CisgICAgICAgIDxwPldvcmtzIHdpdGggYW55IHR5cGUgZXhjZXB0IFZv
aWQuICBGb3IgaW50ZWdlciB0eXBlcywgdGhpcyByZXByZXNlbnRzIHNpZ25lZAorICAgICAgICAg
IGRpdmlzaW9uIHdpdGggcm91bmQtdG8temVyby4gIEJ5IGRlZmF1bHQsIGl0cyBiZWhhdmlvciBp
cyB1bmRlZmluZWQgZm9yIHgvMCBvcgorICAgICAgICAgIC0yPHN1cD4zMTwvc3VwPi8tMS4gIEZv
ciBmbG9hdGluZyBwb2ludCB0eXBlcywgdGhpcyByZXByZXNlbnRzIGRpdmlzaW9uIGFjY29yZGlu
ZworICAgICAgICAgIHRvIHRoZSBJRUVFIDg1NCBzcGVjLjwvcD4KKyAgICAgICAgPHA+SW50ZWdl
ciBEaXYgbWF5IGhhdmUgdGhlIENoaWxsIGZsYWcgc2V0LiBZb3UgY2FuIGNyZWF0ZSBhIENoaWxs
IERpdiBieSBzYXlpbmcKKyAgICAgICAgICA8Y29kZT5jaGlsbChEaXYpPC9jb2RlPiBpbnN0ZWFk
IG9mIDxjb2RlPkRpdjwvY29kZT47IHRoZSBmb3JtZXIgY3JlYXRlcyBhIEtpbmQKKyAgICAgICAg
ICB0aGF0IGhhcyBEaXYgYXMgdGhlIG9wY29kZSBhbmQgaGFzIHRoZSBDaGlsbCBiaXQgc2V0LiBB
biBvcGVyYXRpb24gaXMgc2FpZCB0byBiZQorICAgICAgICAgIGNoaWxsIGlmIGl0IHJldHVybnMg
YSBzZW5zaWJsZSB2YWx1ZSB3aGVuZXZlciBpdHMgbm9uLWNoaWxsIGZvcm0gd291bGQgaGF2ZSBo
YWQKKyAgICAgICAgICB1bmRlZmluZWQgYmVoYXZpb3IuIENoaWxsIERpdiB0dXJucyB4LzAgaW50
byAwIGFuZCAtMjxzdXA+MzE8L3N1cD4vLTEgaW50bworICAgICAgICAgIC0yPHN1cD4zMTwvc3Vw
Pi4gV2UgcmVjb2duaXplIHRoaXMgaW4gSVIgYmVjYXVzZSBpdCdzIGV4YWN0bHkgdGhlIHNlbWFu
dGljcyBvZgorICAgICAgICAgIGRpdmlzaW9uIG9uIEFSTTY0LCBhbmQgaXQncyBhbHNvIGV4YWN0
bHkgdGhlIHNlbWFudGljcyB0aGF0IEphdmFTY3JpcHQgd2FudHMgZm9yCisgICAgICAgICAgIih4
L3kpfDAiLjwvcD4KKyAgICAgIDwvZGQ+CiAKICAgICAgIDxkdD5UIE1vZChULCBUKTwvZHQ+Ci0g
ICAgICA8ZGQ+V29ya3Mgd2l0aCBhbnkgdHlwZSBleGNlcHQgVm9pZC4gIEZvciBpbnRlZ2VyIHR5
cGVzLCB0aGlzIHJlcHJlc2VudHMgc2lnbmVkIG1vZHVsby4KLSAgICAgICAgSXRzIGJlaGF2aW9y
IGlzIHVuZGVmaW5lZCBmb3IgeCUwIG9yIC0yPHN1cD4zMTwvc3VwPiUtMS4gIEZvciBmbG9hdGlu
ZyBwb2ludCB0eXBlcywgdGhpcwotICAgICAgICByZXByZXNlbnRzIG1vZHVsbyBhY2NvcmRpbmcg
dG8gImZtb2QoKSIuPC9kZD4KKyAgICAgIDxkZD4KKyAgICAgICAgPHA+V29ya3Mgd2l0aCBhbnkg
dHlwZSBleGNlcHQgVm9pZC4gIEZvciBpbnRlZ2VyIHR5cGVzLCB0aGlzIHJlcHJlc2VudHMgc2ln
bmVkCisgICAgICAgICAgbW9kdWxvLiBCeSBkZWZhdWx0LCBpdHMgYmVoYXZpb3IgaXMgdW5kZWZp
bmVkIGZvciB4JTAgb3IgLTI8c3VwPjMxPC9zdXA+JS0xLiAgRm9yCisgICAgICAgICAgZmxvYXRp
bmcgcG9pbnQgdHlwZXMsIHRoaXMgcmVwcmVzZW50cyBtb2R1bG8gYWNjb3JkaW5nIHRvICJmbW9k
KCkiLjwvcD4KKyAgICAgICAgPHA+SW50ZWdlciBNb2QgbWF5IGhhdmUgdGhlIENoaWxsIGZsYWcg
c2V0LiBZb3UgY2FuIGNyZWF0ZSBhIENoaWxsIE1vZCBieSBzYXlpbmcKKyAgICAgICAgICA8Y29k
ZT5jaGlsbChNb2QpPC9jb2RlPi4gQ2hpbGwgTW9kIHR1cm5zIHglMCBpbnRvIDAgYW5kIC0yPHN1
cD4zMTwvc3VwPiUtMSBpbnRvCisgICAgICAgICAgMC48L3A+CisgICAgICA8L2RkPgogCiAgICAg
ICA8ZHQ+VCBOZWcoVCk8L2R0PgogICAgICAgPGRkPldvcmtzIHdpdGggYW55IHR5cGUgZXhjZXB0
IFZvaWQuICBGb3IgaW50ZWdlciB0eXBlcywgdGhpcyByZXByZXNlbnRzIHR3b3MtY29tcGxlbWVu
dAogICAgICAgICBuZWdhdGlvbi4gIEZvciBmbG9hdGluZyBwb2ludCB0eXBlcywgdGhpcyByZXBy
ZXNlbnRzIG5lZ2F0aW9uIGFjY29yZGluZyB0byB0aGUgSUVFRQogICAgICAgICBzcGVjLjwvZGQ+
CiAKLSAgICAgIDxkdD5UIENoaWxsRGl2KFQsIFQpPC9kdD4KLSAgICAgIDxkZD5DaGlsbCBkaXZp
c2lvbi4gIFZhbGlkIGZvciBJbnQzMiBhbmQgSW50NjQuICBBbiBvcGVyYXRpb24gaXMgc2FpZCB0
byBiZSBjaGlsbCBpZiBpdAotICAgICAgICByZXR1cm5zIGEgc2Vuc2libGUgdmFsdWUgd2hlbmV2
ZXIgaXRzIG5vbi1jaGlsbCBmb3JtIHdvdWxkIGhhdmUgaGFkIHVuZGVmaW5lZCBiZWhhdmlvci4K
LSAgICAgICAgQ2hpbGxEaXYgdHVybnMgeC8wIGludG8gMCBhbmQgLTI8c3VwPjMxPC9zdXA+Ly0x
IGludG8gLTI8c3VwPjMxPC9zdXA+LiAgVGhpcyBpcyBhIHNlcGFyYXRlIG9wY29kZQotICAgICAg
ICBiZWNhdXNlIGl0J3MgZXhhY3RseSB0aGUgc2VtYW50aWNzIG9mIGRpdmlzaW9uIG9uIEFSTTY0
LCBhbmQgaXQncyBhbHNvIGV4YWN0bHkgdGhlCi0gICAgICAgIHNlbWFudGljcyB0aGF0IEphdmFT
Y3JpcHQgd2FudHMgZm9yICIoeC95KXwwIi48L2RkPgotCi0gICAgICA8ZHQ+VCBDaGlsbE1vZChU
LCBUKTwvZHQ+Ci0gICAgICA8ZGQ+Q2hpbGwgbW9kdWxvLiAgVmFsaWQgZm9yIEludDMyIGFuZCBJ
bnQ2NC4gIENobGxNb2QgdHVybnMgeCUwIGludG8gMCBhbmQKLSAgICAgICAgLTI8c3VwPjMxPC9z
dXA+JS0xIGludG8gMC48L2RkPgotCiAgICAgICA8ZHQ+VCBCaXRBbmQoVCwgVCk8L2R0PgogICAg
ICAgPGRkPkJpdHdpc2UgYW5kLiAgVmFsaWQgZm9yIEludDMyIGFuZCBJbnQ2NC48L2RkPgogCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>290162</attachid>
            <date>2016-09-28 19:22:43 -0700</date>
            <delta_ts>2016-09-28 21:36:18 -0700</delta_ts>
            <desc>the patch</desc>
            <filename>blah.patch</filename>
            <type>text/plain</type>
            <size>83434</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMjA2NTc0KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE2NSBA
QAorMjAxNi0wOS0yOCAgRmlsaXAgUGl6bG8gIDxmcGl6bG9AYXBwbGUuY29tPgorCisgICAgICAg
IEIzIG9wY29kZXMgc2hvdWxkIGxlYXZlIHJvb20gZm9yIGZsYWdzCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjI2OTIKKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBJdCB1c2VkIHRvIGJlIHRoYXQgdGhlIG1h
aW4gdGhpbmcgdGhhdCBkZXRlcm1pbmVkIHdoYXQgYSBWYWx1ZSBkaWQgd2FzIHRoZSBvcGNvZGUu
IFRoZQorICAgICAgICBPcGNvZGUgd2FzIGhvdyB5b3Uga25ldyB3aGF0IHN1YmNsYXNzIG9mIFZh
bHVlIHlvdSBoYWQuIFRoZSBvcGNvZGUgdG9sZCB5b3Ugd2hhdCB0aGUgVmFsdWUKKyAgICAgICAg
YWN0dWFsbHkgZGlkLiBUaGlzIGNoYW5nZSByZXBsYWNlcyBPcGNvZGUgd2l0aCBLaW5kLCB3aGlj
aCBpcyBhIHR1cGxlIG9mIG9wY29kZSBhbmQgb3RoZXIKKyAgICAgICAgc3R1ZmYuCisgICAgICAg
IAorICAgICAgICBPcGNvZGVzIGFyZSBncmVhdCwgYW5kIHRoYXQncyBob3cgbW9zdCBjb21waWxl
cnMgd29yay4gQnV0IG9wY29kZXMgYXJlIG9uZS1kaW1lbnNpb25hbC4gSGVyZQorICAgICAgICBp
cyBob3cgdGhpcyBtYW5pZmVzdHMuIFNheSB5b3UgaGF2ZSBhbiBvcGNvZGUsIGxpa2UgTG9hZC4g
WW91IHdpbGwgYmUgaGFwcHkgaWYgeW91ciBJUiBoYXMKKyAgICAgICAgb25lIExvYWQgb3Bjb2Rl
LiBCdXQgdGhlbiwgeW91IG1pZ2h0IGFkZCBMb2FkOFMvTG9hZDhaL0xvYWQxNlMvTG9hZDE2WiBv
cGNvZGVzLCBhcyB3ZSBoYXZlCisgICAgICAgIGRvbmUgaW4gQjMuIEIzIGhhcyBvbmUgZGltZW5z
aW9uIG9mIExvYWQgb3Bjb2Rlcywgd2hpY2ggZGV0ZXJtaW5lcyBzb21ldGhpbmcgbGlrZSB0aGUg
QyB0eXBlCisgICAgICAgIG9mIHRoZSBsb2FkLiBCdXQgaW4gdGhlIHZlcnkgbmVhciBmdXR1cmUs
IHdlIHdpbGwgd2FudCB0byBhZGQgdHdvIG1vcmUgZGltZW5zaW9ucyB0byBMb2FkczoKKyAgICAg
ICAgCisgICAgICAgIC0gQSBmbGFnIHRvIHNheSBpZiB0aGUgbG9hZCB0cmFwcy4KKyAgICAgICAg
LSBBIGZsYWcgdG8gc2F5IGlmIHRoZSBsb2FkIGhhcyBhY3F1aXJlIHNlbWFudGljcy4KKyAgICAg
ICAgCisgICAgICAgIE1hcHBpbmcgdGhlc2UgdGhyZWUgZGltZW5zaW9ucyAodHlwZSwgdHJhcCwg
YWNxdWlyZSkgb250byB0aGUgb25lLWRpbWVuc2lvbmFsIE9wY29kZSBzcGFjZQorICAgICAgICB3
b3VsZCBjcmVhdGUgbWF5aGFtOiBMb2FkOFMsIExvYWQ4U1RyYXAsIExvYWQ4U0FjcXVpcmUsIExv
YWQ4U1RyYXBBY3F1aXJlLCBMb2FkOFosCisgICAgICAgIExvYWQ4WlRyYXAsIGV0Yy4KKyAgICAg
ICAgCisgICAgICAgIFRoaXMgaGFwcGVucyBpbiBvdGhlciBwYXJ0cyBvZiB0aGUgSVIuIEZvciBl
eGFtcGxlLCB3ZSBoYXZlIGEgZGltZW5zaW9uIG9mIGFyaXRobWV0aWMKKyAgICAgICAgb3BlcmF0
aW9uczogYWRkLCBzdWIsIG11bCwgZGl2LCBtb2QsIGV0Yy4gVGhlbiB3ZSBoYXZlIHRoZSBjaGls
bCBmbGFnLiBCdXQgc2luY2Ugb3Bjb2RlcworICAgICAgICBhcmUgb25lLWRpbWVuc2lvbmFsLCB0
aGF0IG1lYW5zIGhhdmluZyBDaGlsbERpdiBhbmQgQ2hpbGxNb2QsIGFuZCB0b25zIG9mIHBsYWNl
cyBpbiB0aGUKKyAgICAgICAgY29tcGlsZXIgdGhhdCBjYXNlIG9uIGJvdGggRGl2IGFuZCBDaGls
bERpdiwgb3IgY2FzZSBvbiBib3RoIE1vZCBhbmQgQ2hpbGxNb2QsIHNpbmNlIHRoZXkKKyAgICAg
ICAgYXJlIG9ubHkgaW50ZXJlc3RlZCBpbiB0aGUga2luZCBvZiBhcml0aG1ldGljIGJlaW5nIGRv
bmUgYW5kIG5vdCB0aGUgY2hpbGxuZXNzLgorICAgICAgICAKKyAgICAgICAgVGhpcyBjaGFuZ2Ug
YWRkcmVzc2VzIHRoaXMgcHJvYmxlbSBieSBtYWtpbmcgdGhlIGNvbXBpbGVyIHBhc3MgYXJvdW5k
IEtpbmRzIHJhdGhlciB0aGFuCisgICAgICAgIE9wY29kZXMuIEEgS2luZCBjb250YWlucyBhbiBP
cGNvZGUgYXMgd2VsbCBhcyBhbnkgbnVtYmVyIG9mIG9wY29kZS1zcGVjaWZpYyBiaXRzLiBUaGlz
CisgICAgICAgIGNoYW5nZSBkZW1vbnN0cmF0ZXMgaG93IEtpbmQgc2hvdWxkIGJlIHVzZWQgYnkg
Y29udmVydGluZyBjaGlsbG5lc3MgdG8gaXQuIEtpbmQgaGFzCisgICAgICAgIGhhc0lzQ2hpbGwo
KSwgaXNDaGlsbCgpLCBhbmQgc2V0SXNDaGlsbCgpIG1ldGhvZHMuIGhhc0lzQ2hpbGwoKSBpcyB0
cnVlIG9ubHkgZm9yIERpdiBhbmQKKyAgICAgICAgTW9kLiBzZXRJc0NoaWxsKCkgYXNzZXJ0cyBp
ZiAhaGFzSXNDaGlsbCgpLiBJZiB5b3Ugd2FudCB0byBjcmVhdGUgYSBDaGlsbCBEaXYsIHlvdSBz
YXkKKyAgICAgICAgY2hpbGwoRGl2KS4gSVIgZHVtcHMgd2lsbCBwcmludCBpdCBsaWtlIHRoaXM6
CisKKyAgICAgICAgICAgIEludDMyIEAzOCA9IERpdjxDaGlsbD4oQDM2LCBAMzcsIERGRzpAMjQs
IENvbnRyb2xEZXBlbmRlbnQpCisgICAgICAgIAorICAgICAgICBJIHJlcGxhY2VkIG1hbnkgdXNl
cyBvZiBPcGNvZGUgd2l0aCBLaW5kLiBOZXcgY29kZSBoYXMgdG8gYmUgbWluZGZ1bCB0aGF0IE9w
Y29kZSBtYXkgbm90IGJlCisgICAgICAgIHRoZSByaWdodCB3YXkgdG8gc3VtbWFyaXplIHdoYXQg
YSB2YWx1ZSBkb2VzLCBhbmQgc28gaW4gbWFueSBjYXNlcyBpdCdzIGJldHRlciB0byBjYXJyeQor
ICAgICAgICBhcm91bmQgYSBLaW5kIGluc3RlYWQgLSBlc3BlY2lhbGx5IGlmIHlvdSB3aWxsIHVz
ZSBpdCB0byBzdGFtcCBvdXQgbmV3IFZhbHVlcy4gT3Bjb2RlIGlzIG5vCisgICAgICAgIGxvbmdl
ciBzdWZmaWNpZW50IHRvIHBlcmZvcm0gYSBkeW5hbWljIFZhbHVlIGNhc3QsIHNpbmNlIHRoYXQg
Y29kZSBub3cgdXNlcyBLaW5kLiBWYWx1ZUtleQorICAgICAgICBub3cgd2FudHMgYSBLaW5kIGlu
c3RlYWQgb2YgYW4gT3Bjb2RlLiBBbGwgVmFsdWUgY29uc3RydWN0b3JzIG5vdyB0YWtlIEtpbmQg
aW5zdGVhZCBvZgorICAgICAgICBPcGNvZGUuIEJ1dCBub3QgYWxsIE9wY29kZXMgd2lsbCBoYXZl
IG1ldGEtZGF0YSBpbiBLaW5kIChoYXZpbmcgbWV0YS1kYXRhIGlzIGNhbGxlZAorICAgICAgICBL
aW5kOjpoYXNFeHRyYUJpdHMoKSksIHNvIGl0IGlzIGZhaXIgdG8gb2JzZXJ2ZSB0aGF0IGFuIE9w
Y29kZSBoYXMgbm8gZXh0cmEgYml0cyBhbmQgc28gaXQKKyAgICAgICAgY2FuIGJlIGRlc2NyaWJl
ZCB1c2luZyBPcGNvZGUgYWxvbmUuIFRoaXMgaXMgYW4gaW1wb3J0YW50IHByb3BlcnR5IGFuZCBp
dCdzIHRoZSByZWFzb24gd2h5CisgICAgICAgIG1vc3Qgb2YgdGhlIGNvbXBpbGVyIGVtZXJnZXMg
dW5zY2F0aGVkIGZyb20gdGhpcyByZWZhY3RvcmluZzogaXQncyBzdGlsbCBjb3JyZWN0IHRvIHN3
aXRjaAorICAgICAgICBvbiBWYWx1ZTo6b3Bjb2RlKCkgKHdoaWNoIGlzIGEgaGVscGVyIGZvciB2
YWx1ZS0+a2luZCgpLm9wY29kZSgpKSBzaW5jZSB0aGUgb25seSBleHRyYSBiaXRzCisgICAgICAg
IGFyZSBmb3IgRGl2IGFuZCBNb2QsIGFuZCB0aGlzIHBhdGNoIGZpeGVzIHRoZSBoYW5kZnVsIG9m
IGZ1bmN0aW9ucyB0aGF0IGNhcmVkLgorICAgICAgICAKKyAgICAgICAgVGhpcyBwYXRjaCBlc3Rh
Ymxpc2hlcyBhIGZldyBjb252ZW50aW9ucyB0aGF0IEkgdGhpbmsgd2lsbCBtYWtlIHRoZSBleHRy
YSBiaXRzIGluIEtpbmQgdmVyeQorICAgICAgICBuYXR1cmFsIHRvIHVzZToKKyAgICAgICAgCisg
ICAgICAgIC0gQ3JlYXRpbmcgYSBLaW5kIHdpdGggYSBwYXJ0aWN1bGFyIGJpdCBzZXQgc2hvdWxk
IGJlIGRvbmUgdmlhIGFuIGlubGluZSBmdW5jdGlvbiBpbiB0aGUgQjMKKyAgICAgICAgICBuYW1l
c3BhY2UgdGhhdCBiZWFycyB0aGUgbmFtZSBvZiB0aGUgYml0LiBGb3IgZXhhbXBsZSwgY2hpbGwo
RGl2KSBvciB0cmFwcGluZyhMb2FkKS4KKyAgICAgICAgCisgICAgICAgIC0gVGhlIGJpdCBhY2Nl
c3NvciwgbGlrZSBLaW5kOjppc0NoaWxsKCksIHNob3VsZCByZXR1cm4gZmFsc2UgaWYgdGhlIGJp
dCBpcyBOL0EgZm9yIHRoZQorICAgICAgICAgIGdpdmVuIG9wY29kZS4gSSBmb3VuZCB0aGlzIHRv
IGJlIHVzZWZ1bCBiZWNhdXNlIG90aGVyd2lzZSB0aGVyZSB3ZXJlIGp1c3QgdG9vIG1hbnkgcGxh
Y2VzCisgICAgICAgICAgd2hlcmUgSSB3b3VsZCBzYXkgImlmIChraW5kLmhhc0lzQ2hpbGwoKSAm
JiBraW5kLmlzQ2hpbGwoKSkiLCBhbmQgSSBmaWd1cmVkIHRoYXQgdGhlcmUgaXMKKyAgICAgICAg
ICBubyBwZXJmIGJlbmVmaXQgdG8gbWFraW5nIGlzQ2hpbGwoKSB1bnNhZmUgdG8gY2FsbCBmb3Ig
bm9uLURpdi9Nb2Qgb3Bjb2Rlcy4gSXQncyBwcm9iYWJseQorICAgICAgICAgIGJlc3QgaWYgd2Ug
Y29udGludWUgdGhhdCBjb252ZW50aW9uLgorICAgICAgICAKKyAgICAgICAgLSBUaGUgYml0IGFj
Y2Vzc29yIHNob3VsZCBiZSBhbGlhc2VkIGluIFZhbHVlLCBzbyB5b3UgY2FuIHNheSB2YWx1ZS0+
aXNDaGlsbCgpIGFzIHNob3J0aGFuZAorICAgICAgICAgIGZvciB2YWx1ZS0+a2luZCgpLmlzQ2hp
bGwoKS4KKyAgICAgICAgCisgICAgICAgICogSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2pl
Y3QucGJ4cHJvajoKKyAgICAgICAgKiBiMy9CM0FyZ3VtZW50UmVnVmFsdWUuaDoKKyAgICAgICAg
KiBiMy9CM0NDYWxsVmFsdWUuaDoKKyAgICAgICAgKiBiMy9CM0NoZWNrVmFsdWUuY3BwOgorICAg
ICAgICAoSlNDOjpCMzo6Q2hlY2tWYWx1ZTo6Y29udmVydFRvQWRkKToKKyAgICAgICAgKEpTQzo6
QjM6OkNoZWNrVmFsdWU6OkNoZWNrVmFsdWUpOgorICAgICAgICAqIGIzL0IzQ2hlY2tWYWx1ZS5o
OgorICAgICAgICAoSlNDOjpCMzo6Q2hlY2tWYWx1ZTo6YWNjZXB0cyk6CisgICAgICAgICogYjMv
QjNDb25zdDMyVmFsdWUuaDoKKyAgICAgICAgKiBiMy9CM0NvbnN0NjRWYWx1ZS5oOgorICAgICAg
ICAqIGIzL0IzQ29uc3REb3VibGVWYWx1ZS5oOgorICAgICAgICAqIGIzL0IzQ29uc3RGbG9hdFZh
bHVlLmg6CisgICAgICAgICogYjMvQjNGZW5jZVZhbHVlLmg6CisgICAgICAgICogYjMvQjNLaW5k
LmNwcDogQWRkZWQuCisgICAgICAgIChKU0M6OkIzOjpLaW5kOjpkdW1wKToKKyAgICAgICAgKiBi
My9CM0tpbmQuaDogQWRkZWQuCisgICAgICAgIChKU0M6OkIzOjpLaW5kOjpLaW5kKToKKyAgICAg
ICAgKEpTQzo6QjM6OktpbmQ6Om9wY29kZSk6CisgICAgICAgIChKU0M6OkIzOjpLaW5kOjpzZXRP
cGNvZGUpOgorICAgICAgICAoSlNDOjpCMzo6S2luZDo6aGFzRXh0cmFCaXRzKToKKyAgICAgICAg
KEpTQzo6QjM6OktpbmQ6Omhhc0lzQ2hpbGwpOgorICAgICAgICAoSlNDOjpCMzo6S2luZDo6aXND
aGlsbCk6CisgICAgICAgIChKU0M6OkIzOjpLaW5kOjpzZXRJc0NoaWxsKToKKyAgICAgICAgKEpT
Qzo6QjM6OktpbmQ6Om9wZXJhdG9yPT0pOgorICAgICAgICAoSlNDOjpCMzo6S2luZDo6b3BlcmF0
b3IhPSk6CisgICAgICAgIChKU0M6OkIzOjpLaW5kOjpvcGVyYXRvcjwpOgorICAgICAgICAoSlND
OjpCMzo6S2luZDo6b3BlcmF0b3I+KToKKyAgICAgICAgKEpTQzo6QjM6OktpbmQ6Om9wZXJhdG9y
PD0pOgorICAgICAgICAoSlNDOjpCMzo6S2luZDo6b3BlcmF0b3I+PSk6CisgICAgICAgIChKU0M6
OkIzOjpLaW5kOjpoYXNoKToKKyAgICAgICAgKEpTQzo6QjM6OktpbmQ6OmlzSGFzaFRhYmxlRGVs
ZXRlZFZhbHVlKToKKyAgICAgICAgKEpTQzo6QjM6OmNoaWxsKToKKyAgICAgICAgKEpTQzo6QjM6
OktpbmRIYXNoOjpoYXNoKToKKyAgICAgICAgKEpTQzo6QjM6OktpbmRIYXNoOjplcXVhbCk6Cisg
ICAgICAgICogYjMvQjNMb3dlck1hY3Jvcy5jcHA6CisgICAgICAgICogYjMvQjNMb3dlclRvQWly
LmNwcDoKKyAgICAgICAgKEpTQzo6QjM6OkFpcjo6TG93ZXJUb0Fpcjo6bG93ZXIpOgorICAgICAg
ICAqIGIzL0IzTWVtb3J5VmFsdWUuaDoKKyAgICAgICAgKiBiMy9CM09wY29kZS5jcHA6CisgICAg
ICAgIChXVEY6OnByaW50SW50ZXJuYWwpOgorICAgICAgICAqIGIzL0IzT3Bjb2RlLmg6CisgICAg
ICAgICogYjMvQjNQYXRjaHBvaW50VmFsdWUuaDoKKyAgICAgICAgKEpTQzo6QjM6OlBhdGNocG9p
bnRWYWx1ZTo6YWNjZXB0cyk6CisgICAgICAgICogYjMvQjNSZWR1Y2VTdHJlbmd0aC5jcHA6Cisg
ICAgICAgICogYjMvQjNTbG90QmFzZVZhbHVlLmg6CisgICAgICAgICogYjMvQjNTdGFja21hcFZh
bHVlLmNwcDoKKyAgICAgICAgKEpTQzo6QjM6OlN0YWNrbWFwVmFsdWU6OlN0YWNrbWFwVmFsdWUp
OgorICAgICAgICAqIGIzL0IzU3RhY2ttYXBWYWx1ZS5oOgorICAgICAgICAqIGIzL0IzU3dpdGNo
VmFsdWUuaDoKKyAgICAgICAgKEpTQzo6QjM6OlN3aXRjaFZhbHVlOjphY2NlcHRzKToKKyAgICAg
ICAgKiBiMy9CM1Vwc2lsb25WYWx1ZS5oOgorICAgICAgICAqIGIzL0IzVmFsaWRhdGUuY3BwOgor
ICAgICAgICAqIGIzL0IzVmFsdWUuY3BwOgorICAgICAgICAoSlNDOjpCMzo6VmFsdWU6OmR1bXAp
OgorICAgICAgICAoSlNDOjpCMzo6VmFsdWU6OmRlZXBEdW1wKToKKyAgICAgICAgKEpTQzo6QjM6
OlZhbHVlOjppbnZlcnRlZENvbXBhcmUpOgorICAgICAgICAoSlNDOjpCMzo6VmFsdWU6OmVmZmVj
dHMpOgorICAgICAgICAoSlNDOjpCMzo6VmFsdWU6OmtleSk6CisgICAgICAgIChKU0M6OkIzOjpW
YWx1ZTo6dHlwZUZvcik6CisgICAgICAgIChKU0M6OkIzOjpWYWx1ZTo6YmFkS2luZCk6CisgICAg
ICAgIChKU0M6OkIzOjpWYWx1ZTo6YmFkT3Bjb2RlKTogRGVsZXRlZC4KKyAgICAgICAgKiBiMy9C
M1ZhbHVlLmg6CisgICAgICAgICogYjMvQjNWYWx1ZUlubGluZXMuaDoKKyAgICAgICAgKEpTQzo6
QjM6OlZhbHVlOjphcyk6CisgICAgICAgICogYjMvQjNWYWx1ZUtleS5jcHA6CisgICAgICAgIChK
U0M6OkIzOjpWYWx1ZUtleTo6ZHVtcCk6CisgICAgICAgIChKU0M6OkIzOjpWYWx1ZUtleTo6bWF0
ZXJpYWxpemUpOgorICAgICAgICAqIGIzL0IzVmFsdWVLZXkuaDoKKyAgICAgICAgKEpTQzo6QjM6
OlZhbHVlS2V5OjpWYWx1ZUtleSk6CisgICAgICAgIChKU0M6OkIzOjpWYWx1ZUtleTo6a2luZCk6
CisgICAgICAgIChKU0M6OkIzOjpWYWx1ZUtleTo6b3Bjb2RlKToKKyAgICAgICAgKEpTQzo6QjM6
OlZhbHVlS2V5OjpvcGVyYXRvcj09KToKKyAgICAgICAgKEpTQzo6QjM6OlZhbHVlS2V5OjpoYXNo
KToKKyAgICAgICAgKiBiMy9CM1ZhbHVlS2V5SW5saW5lcy5oOgorICAgICAgICAoSlNDOjpCMzo6
VmFsdWVLZXk6OlZhbHVlS2V5KToKKyAgICAgICAgKiBiMy9CM1ZhcmlhYmxlVmFsdWUuY3BwOgor
ICAgICAgICAoSlNDOjpCMzo6VmFyaWFibGVWYWx1ZTo6VmFyaWFibGVWYWx1ZSk6CisgICAgICAg
ICogYjMvQjNWYXJpYWJsZVZhbHVlLmg6CisgICAgICAgICogYjMvdGVzdGIzLmNwcDoKKyAgICAg
ICAgKEpTQzo6QjM6OnRlc3RDaGlsbERpdik6CisgICAgICAgIChKU0M6OkIzOjp0ZXN0Q2hpbGxE
aXZUd2ljZSk6CisgICAgICAgIChKU0M6OkIzOjp0ZXN0Q2hpbGxEaXY2NCk6CisgICAgICAgIChK
U0M6OkIzOjp0ZXN0Q2hpbGxNb2RBcmcpOgorICAgICAgICAoSlNDOjpCMzo6dGVzdENoaWxsTW9k
QXJncyk6CisgICAgICAgIChKU0M6OkIzOjp0ZXN0Q2hpbGxNb2RJbW1zKToKKyAgICAgICAgKEpT
Qzo6QjM6OnRlc3RDaGlsbE1vZEFyZzMyKToKKyAgICAgICAgKEpTQzo6QjM6OnRlc3RDaGlsbE1v
ZEFyZ3MzMik6CisgICAgICAgIChKU0M6OkIzOjp0ZXN0Q2hpbGxNb2RJbW1zMzIpOgorICAgICAg
ICAoSlNDOjpCMzo6dGVzdFN3aXRjaENoaWxsRGl2KToKKyAgICAgICAgKEpTQzo6QjM6OnRlc3RF
bnRyeVN3aXRjaFdpdGhDb21tb25QYXRocyk6CisgICAgICAgIChKU0M6OkIzOjp0ZXN0RW50cnlT
d2l0Y2hXaXRoQ29tbW9uUGF0aHNBbmROb25Ucml2aWFsRW50cnlwb2ludCk6CisgICAgICAgICog
ZnRsL0ZUTE91dHB1dC5jcHA6CisgICAgICAgIChKU0M6OkZUTDo6T3V0cHV0OjpjaGlsbERpdik6
CisgICAgICAgIChKU0M6OkZUTDo6T3V0cHV0OjpjaGlsbE1vZCk6CisKIDIwMTYtMDktMjggIFNh
YW0gQmFyYXRpICA8c2JhcmF0aUBhcHBsZS5jb20+CiAKICAgICAgICAgc3RyaW5nUHJvdG9GdW5j
UmVwZWF0Q2hhcmFjdGVyIHdpbGwgcmV0dXJuIGBudWxsYCB3aGVuIGl0IHNob3VsZCBub3QKSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVj
dC5wYnhwcm9qCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0
Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCShyZXZpc2lvbiAyMDY1MjQpCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJv
agkod29ya2luZyBjb3B5KQpAQCAtNzIyLDYgKzcyMiw4IEBACiAJCTBGREIyQ0VBMTc0ODk2Qzcw
MDdCM0MxQiAvKiBDb25jdXJyZW50SklUTG9jay5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gMEZEQjJDRTkxNzQ4OTZDNzAwN0IzQzFCIC8qIENvbmN1cnJl
bnRKSVRMb2NrLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsg
fTsKIAkJMEZEREJGQjUxNjY2RUVEODAwQzU1RkVGIC8qIERGR1ZhcmlhYmxlQWNjZXNzRGF0YUR1
bXAuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEZE
REJGQjIxNjY2RUVENTAwQzU1RkVGIC8qIERGR1ZhcmlhYmxlQWNjZXNzRGF0YUR1bXAuY3BwICov
OyB9OwogCQkwRkREQkZCNjE2NjZFRURBMDBDNTVGRUYgLyogREZHVmFyaWFibGVBY2Nlc3NEYXRh
RHVtcC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEZE
REJGQjMxNjY2RUVENTAwQzU1RkVGIC8qIERGR1ZhcmlhYmxlQWNjZXNzRGF0YUR1bXAuaCAqLzsg
fTsKKwkJMEZERjY3RDIxRDlDNkQyNzAwMUI5ODI1IC8qIEIzS2luZC5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEZERjY3RDExRDlDNjA4NjAwMUI5ODI1
IC8qIEIzS2luZC5oICovOyB9OworCQkwRkRGNjdEMzFEOUM2RDJBMDAxQjk4MjUgLyogQjNLaW5k
LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGREY2
N0QwMUQ5QzYwODYwMDFCOTgyNSAvKiBCM0tpbmQuY3BwICovOyB9OwogCQkwRkRGNzA4NTFEM0Yy
QzIyMDA5Mjc0NDkgLyogQWlyTG93ZXJFbnRyeVN3aXRjaC5jcHAgaW4gU291cmNlcyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRkRGNzA4MzFEM0YyQzFGMDA5Mjc0NDkgLyog
QWlyTG93ZXJFbnRyeVN3aXRjaC5jcHAgKi87IH07CiAJCTBGREY3MDg2MUQzRjJDMjUwMDkyNzQ0
OSAvKiBBaXJMb3dlckVudHJ5U3dpdGNoLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSAwRkRGNzA4NDFEM0YyQzFGMDA5Mjc0NDkgLyogQWlyTG93ZXJFbnRy
eVN3aXRjaC5oICovOyB9OwogCQkwRkUwNTAxNDFBQTkwOTExMDBEMzNCMzMgLyogQXJndW1lbnRz
TW9kZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEZF
MDUwMEMxQUE5MDkxMTAwRDMzQjMzIC8qIEFyZ3VtZW50c01vZGUuaCAqLzsgc2V0dGluZ3MgPSB7
QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwpAQCAtMjk3NSw2ICsyOTc3LDggQEAKIAkJ
MEZEQjJDRTkxNzQ4OTZDNzAwN0IzQzFCIC8qIENvbmN1cnJlbnRKSVRMb2NrLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IENvbmN1cnJlbnRKSVRMb2NrLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCTBGRERCRkIyMTY2NkVFRDUwMEM1NUZFRiAvKiBERkdWYXJpYWJs
ZUFjY2Vzc0RhdGFEdW1wLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9
IERGR1ZhcmlhYmxlQWNjZXNzRGF0YUR1bXAuY3BwOyBwYXRoID0gZGZnL0RGR1ZhcmlhYmxlQWNj
ZXNzRGF0YUR1bXAuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwRkREQkZCMzE2
NjZFRUQ1MDBDNTVGRUYgLyogREZHVmFyaWFibGVBY2Nlc3NEYXRhRHVtcC5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IG5hbWUgPSBERkdWYXJpYWJsZUFjY2Vzc0RhdGFEdW1wLmg7IHBhdGgg
PSBkZmcvREZHVmFyaWFibGVBY2Nlc3NEYXRhRHVtcC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OworCQkwRkRGNjdEMDFEOUM2MDg2MDAxQjk4MjUgLyogQjNLaW5kLmNwcCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IEIzS2luZC5jcHA7IHBhdGggPSBiMy9CM0tpbmQu
Y3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwRkRGNjdEMTFEOUM2MDg2MDAxQjk4
MjUgLyogQjNLaW5kLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IEIzS2luZC5o
OyBwYXRoID0gYjMvQjNLaW5kLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGREY3
MDgzMUQzRjJDMUYwMDkyNzQ0OSAvKiBBaXJMb3dlckVudHJ5U3dpdGNoLmNwcCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IEFpckxvd2VyRW50cnlTd2l0Y2guY3BwOyBwYXRo
ID0gYjMvYWlyL0Fpckxvd2VyRW50cnlTd2l0Y2guY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQkwRkRGNzA4NDFEM0YyQzFGMDA5Mjc0NDkgLyogQWlyTG93ZXJFbnRyeVN3aXRjaC5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBBaXJMb3dlckVudHJ5U3dpdGNoLmg7
IHBhdGggPSBiMy9haXIvQWlyTG93ZXJFbnRyeVN3aXRjaC5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQkwRkUwNTAwQzFBQTkwOTExMDBEMzNCMzMgLyogQXJndW1lbnRzTW9kZS5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBBcmd1bWVudHNNb2RlLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CkBAIC00ODY5LDYgKzQ4NzMsOCBAQAogCQkJCTBGRUM4NUI0MUJF
MTQ2MkYwMDgwRkY3NCAvKiBCM0luc2VydGlvblNldC5jcHAgKi8sCiAJCQkJMEZFQzg1QjUxQkUx
NDYyRjAwODBGRjc0IC8qIEIzSW5zZXJ0aW9uU2V0LmggKi8sCiAJCQkJMEZFQzg1QjYxQkUxNDYy
RjAwODBGRjc0IC8qIEIzSW5zZXJ0aW9uU2V0SW5saW5lcy5oICovLAorCQkJCTBGREY2N0QwMUQ5
QzYwODYwMDFCOTgyNSAvKiBCM0tpbmQuY3BwICovLAorCQkJCTBGREY2N0QxMUQ5QzYwODYwMDFC
OTgyNSAvKiBCM0tpbmQuaCAqLywKIAkJCQk0MzZFNTQ1MTFDNDY4RTVGMDBCNUFGNzMgLyogQjNM
ZWdhbGl6ZU1lbW9yeU9mZnNldHMuY3BwICovLAogCQkJCTQzNkU1NDUyMUM0NjhFNUYwMEI1QUY3
MyAvKiBCM0xlZ2FsaXplTWVtb3J5T2Zmc2V0cy5oICovLAogCQkJCTBGMzM4RTE5MUJGMjg2RUEw
MDEzQzg4RiAvKiBCM0xvd2VyTWFjcm9zLmNwcCAqLywKQEAgLTc3MjgsNiArNzczNCw3IEBACiAJ
CQkJMEY2NEVBRjMxQzRFQ0QwNjAwNjIxRTlCIC8qIEFpckFyZ0lubGluZXMuaCBpbiBIZWFkZXJz
ICovLAogCQkJCUE1RUE3MTA1MTlGNkRFNzQwMDk4RjVFQyAvKiBnZW5lcmF0ZV9vYmpjX2NvbmZp
Z3VyYXRpb25faGVhZGVyLnB5IGluIEhlYWRlcnMgKi8sCiAJCQkJREM2OUI5OUQxRDE1RjkxNDAw
MkUzQzAwIC8qIEIzSW5mZXJTd2l0Y2hlcy5oIGluIEhlYWRlcnMgKi8sCisJCQkJMEZERjY3RDIx
RDlDNkQyNzAwMUI5ODI1IC8qIEIzS2luZC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTVFQTcxMDYx
OUY2REU3NjAwOThGNUVDIC8qIGdlbmVyYXRlX29iamNfY29uZmlndXJhdGlvbl9pbXBsZW1lbnRh
dGlvbi5weSBpbiBIZWFkZXJzICovLAogCQkJCTBGN0MzOUZGMUM5MEM1NUIwMDQ4MDE1MSAvKiBE
RkdPcEluZm8uaCBpbiBIZWFkZXJzICovLAogCQkJCUE1RUE3MTA3MTlGNkRFNzgwMDk4RjVFQyAv
KiBnZW5lcmF0ZV9vYmpjX3Byb3RvY29sX3R5cGVfY29udmVyc2lvbnNfaGVhZGVyLnB5IGluIEhl
YWRlcnMgKi8sCkBAIC05MDgwLDYgKzkwODcsNyBAQAogCQkJCTBGRkZDOTU5MTRFRjkwQTYwMEM3
MjUzMiAvKiBERkdDU0VQaGFzZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwRjJGQzc3MjE2RTEy
RjcxMDAzOEQ5NzYgLyogREZHRENFUGhhc2UuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMEYzMzhF
MTIxQkYwMjc2QzAwMTNDODhGIC8qIEIzT3BhcXVlQnlwcm9kdWN0cy5jcHAgaW4gU291cmNlcyAq
LywKKwkJCQkwRkRGNjdEMzFEOUM2RDJBMDAxQjk4MjUgLyogQjNLaW5kLmNwcCBpbiBTb3VyY2Vz
ICovLAogCQkJCTBGOEYyQjk5MTcyRjA0RkYwMDdEQkRBNSAvKiBERkdEZXNpcmVkSWRlbnRpZmll
cnMuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQzJDMEY3Q0QxN0JCRkM1QjAwNDY0RkU0IC8qIERG
R0Rlc2lyZWRUcmFuc2l0aW9ucy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwRkU4NTM0QjE3MjND
REE1MDBCNjE4RjUgLyogREZHRGVzaXJlZFdhdGNocG9pbnRzLmNwcCBpbiBTb3VyY2VzICovLApJ
bmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzQXJndW1lbnRSZWdWYWx1ZS5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM0FyZ3VtZW50UmVnVmFsdWUuaAko
cmV2aXNpb24gMjA2NTI0KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzQXJndW1lbnRS
ZWdWYWx1ZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0zNSw3ICszNSw3IEBAIG5hbWVzcGFjZSBKU0Mg
eyBuYW1lc3BhY2UgQjMgewogCiBjbGFzcyBKU19FWFBPUlRfUFJJVkFURSBBcmd1bWVudFJlZ1Zh
bHVlIDogcHVibGljIFZhbHVlIHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgYm9vbCBhY2NlcHRzKE9w
Y29kZSBvcGNvZGUpIHsgcmV0dXJuIG9wY29kZSA9PSBBcmd1bWVudFJlZzsgfQorICAgIHN0YXRp
YyBib29sIGFjY2VwdHMoS2luZCBraW5kKSB7IHJldHVybiBraW5kID09IEFyZ3VtZW50UmVnOyB9
CiAgICAgCiAgICAgfkFyZ3VtZW50UmVnVmFsdWUoKTsKIApJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL2IzL0IzQ0NhbGxWYWx1ZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9iMy9CM0NDYWxsVmFsdWUuaAkocmV2aXNpb24gMjA2NTI0KQorKysgU291cmNlL0phdmFT
Y3JpcHRDb3JlL2IzL0IzQ0NhbGxWYWx1ZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0zNSw3ICszNSw3
IEBAIG5hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgQjMgewogCiBjbGFzcyBKU19FWFBPUlRfUFJJ
VkFURSBDQ2FsbFZhbHVlIDogcHVibGljIFZhbHVlIHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgYm9v
bCBhY2NlcHRzKE9wY29kZSBvcGNvZGUpIHsgcmV0dXJuIG9wY29kZSA9PSBDQ2FsbDsgfQorICAg
IHN0YXRpYyBib29sIGFjY2VwdHMoS2luZCBraW5kKSB7IHJldHVybiBraW5kID09IENDYWxsOyB9
CiAKICAgICB+Q0NhbGxWYWx1ZSgpOwogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMv
QjNDaGVja1ZhbHVlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMv
QjNDaGVja1ZhbHVlLmNwcAkocmV2aXNpb24gMjA2NTI0KQorKysgU291cmNlL0phdmFTY3JpcHRD
b3JlL2IzL0IzQ2hlY2tWYWx1ZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM3LDcgKzM3LDcgQEAg
Q2hlY2tWYWx1ZTo6fkNoZWNrVmFsdWUoKQogdm9pZCBDaGVja1ZhbHVlOjpjb252ZXJ0VG9BZGQo
KQogewogICAgIFJFTEVBU0VfQVNTRVJUKG9wY29kZSgpID09IENoZWNrQWRkIHx8IG9wY29kZSgp
ID09IENoZWNrU3ViIHx8IG9wY29kZSgpID09IENoZWNrTXVsKTsKLSAgICBtX29wY29kZSA9IENo
ZWNrQWRkOworICAgIG1fa2luZCA9IENoZWNrQWRkOwogfQogCiBWYWx1ZSogQ2hlY2tWYWx1ZTo6
Y2xvbmVJbXBsKCkgY29uc3QKQEAgLTQ2LDIxICs0NiwyMSBAQCBWYWx1ZSogQ2hlY2tWYWx1ZTo6
Y2xvbmVJbXBsKCkgY29uc3QKIH0KIAogLy8gVXNlIHRoaXMgZm9ybSBmb3IgQ2hlY2tBZGQsIENo
ZWNrU3ViLCBhbmQgQ2hlY2tNdWwuCi1DaGVja1ZhbHVlOjpDaGVja1ZhbHVlKE9wY29kZSBvcGNv
ZGUsIE9yaWdpbiBvcmlnaW4sIFZhbHVlKiBsZWZ0LCBWYWx1ZSogcmlnaHQpCi0gICAgOiBTdGFj
a21hcFZhbHVlKENoZWNrZWRPcGNvZGUsIG9wY29kZSwgbGVmdC0+dHlwZSgpLCBvcmlnaW4pCitD
aGVja1ZhbHVlOjpDaGVja1ZhbHVlKEtpbmQga2luZCwgT3JpZ2luIG9yaWdpbiwgVmFsdWUqIGxl
ZnQsIFZhbHVlKiByaWdodCkKKyAgICA6IFN0YWNrbWFwVmFsdWUoQ2hlY2tlZE9wY29kZSwga2lu
ZCwgbGVmdC0+dHlwZSgpLCBvcmlnaW4pCiB7CiAgICAgQVNTRVJUKEIzOjppc0ludCh0eXBlKCkp
KTsKICAgICBBU1NFUlQobGVmdC0+dHlwZSgpID09IHJpZ2h0LT50eXBlKCkpOwotICAgIEFTU0VS
VChvcGNvZGUgPT0gQ2hlY2tBZGQgfHwgb3Bjb2RlID09IENoZWNrU3ViIHx8IG9wY29kZSA9PSBD
aGVja011bCk7CisgICAgQVNTRVJUKGtpbmQgPT0gQ2hlY2tBZGQgfHwga2luZCA9PSBDaGVja1N1
YiB8fCBraW5kID09IENoZWNrTXVsKTsKICAgICBhcHBlbmQoQ29uc3RyYWluZWRWYWx1ZShsZWZ0
LCBWYWx1ZVJlcDo6V2FybUFueSkpOwogICAgIGFwcGVuZChDb25zdHJhaW5lZFZhbHVlKHJpZ2h0
LCBWYWx1ZVJlcDo6V2FybUFueSkpOwogfQogCiAvLyBVc2UgdGhpcyBmb3JtIGZvciBDaGVjay4K
LUNoZWNrVmFsdWU6OkNoZWNrVmFsdWUoT3Bjb2RlIG9wY29kZSwgT3JpZ2luIG9yaWdpbiwgVmFs
dWUqIHByZWRpY2F0ZSkKLSAgICA6IFN0YWNrbWFwVmFsdWUoQ2hlY2tlZE9wY29kZSwgb3Bjb2Rl
LCBWb2lkLCBvcmlnaW4pCitDaGVja1ZhbHVlOjpDaGVja1ZhbHVlKEtpbmQga2luZCwgT3JpZ2lu
IG9yaWdpbiwgVmFsdWUqIHByZWRpY2F0ZSkKKyAgICA6IFN0YWNrbWFwVmFsdWUoQ2hlY2tlZE9w
Y29kZSwga2luZCwgVm9pZCwgb3JpZ2luKQogewotICAgIEFTU0VSVChvcGNvZGUgPT0gQ2hlY2sp
OworICAgIEFTU0VSVChraW5kID09IENoZWNrKTsKICAgICBhcHBlbmQoQ29uc3RyYWluZWRWYWx1
ZShwcmVkaWNhdGUsIFZhbHVlUmVwOjpXYXJtQW55KSk7CiB9CiAKSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9iMy9CM0NoZWNrVmFsdWUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvYjMvQjNDaGVja1ZhbHVlLmgJKHJldmlzaW9uIDIwNjUyNCkKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9iMy9CM0NoZWNrVmFsdWUuaAkod29ya2luZyBjb3B5KQpAQCAtMzQsOSAr
MzQsOSBAQCBuYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIEIzIHsKIAogY2xhc3MgQ2hlY2tWYWx1
ZSA6IHB1YmxpYyBTdGFja21hcFZhbHVlIHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgYm9vbCBhY2Nl
cHRzKE9wY29kZSBvcGNvZGUpCisgICAgc3RhdGljIGJvb2wgYWNjZXB0cyhLaW5kIGtpbmQpCiAg
ICAgewotICAgICAgICBzd2l0Y2ggKG9wY29kZSkgeworICAgICAgICBzd2l0Y2ggKGtpbmQub3Bj
b2RlKCkpIHsKICAgICAgICAgY2FzZSBDaGVja0FkZDoKICAgICAgICAgY2FzZSBDaGVja1N1YjoK
ICAgICAgICAgY2FzZSBDaGVja011bDoKQEAgLTU4LDEwICs1OCwxMCBAQCBwcml2YXRlOgogICAg
IGZyaWVuZCBjbGFzcyBQcm9jZWR1cmU7CiAKICAgICAvLyBVc2UgdGhpcyBmb3JtIGZvciBDaGVj
a0FkZCwgQ2hlY2tTdWIsIGFuZCBDaGVja011bC4KLSAgICBKU19FWFBPUlRfUFJJVkFURSBDaGVj
a1ZhbHVlKE9wY29kZSwgT3JpZ2luLCBWYWx1ZSogbGVmdCwgVmFsdWUqIHJpZ2h0KTsKKyAgICBK
U19FWFBPUlRfUFJJVkFURSBDaGVja1ZhbHVlKEtpbmQsIE9yaWdpbiwgVmFsdWUqIGxlZnQsIFZh
bHVlKiByaWdodCk7CiAKICAgICAvLyBVc2UgdGhpcyBmb3JtIGZvciBDaGVjay4KLSAgICBKU19F
WFBPUlRfUFJJVkFURSBDaGVja1ZhbHVlKE9wY29kZSwgT3JpZ2luLCBWYWx1ZSogcHJlZGljYXRl
KTsKKyAgICBKU19FWFBPUlRfUFJJVkFURSBDaGVja1ZhbHVlKEtpbmQsIE9yaWdpbiwgVmFsdWUq
IHByZWRpY2F0ZSk7CiB9OwogCiB9IH0gLy8gbmFtZXNwYWNlIEpTQzo6QjMKSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9iMy9CM0NvbnN0MzJWYWx1ZS5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9iMy9CM0NvbnN0MzJWYWx1ZS5oCShyZXZpc2lvbiAyMDY1MjQpCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNDb25zdDMyVmFsdWUuaAkod29ya2luZyBjb3B5
KQpAQCAtMzQsNyArMzQsNyBAQCBuYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIEIzIHsKIAogY2xh
c3MgSlNfRVhQT1JUX1BSSVZBVEUgQ29uc3QzMlZhbHVlIDogcHVibGljIFZhbHVlIHsKIHB1Ymxp
YzoKLSAgICBzdGF0aWMgYm9vbCBhY2NlcHRzKE9wY29kZSBvcGNvZGUpIHsgcmV0dXJuIG9wY29k
ZSA9PSBDb25zdDMyOyB9CisgICAgc3RhdGljIGJvb2wgYWNjZXB0cyhLaW5kIGtpbmQpIHsgcmV0
dXJuIGtpbmQgPT0gQ29uc3QzMjsgfQogICAgIAogICAgIH5Db25zdDMyVmFsdWUoKTsKICAgICAK
SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM0NvbnN0NjRWYWx1ZS5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM0NvbnN0NjRWYWx1ZS5oCShyZXZpc2lv
biAyMDY1MjQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNDb25zdDY0VmFsdWUuaAko
d29ya2luZyBjb3B5KQpAQCAtMzQsNyArMzQsNyBAQCBuYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNl
IEIzIHsKIAogY2xhc3MgSlNfRVhQT1JUX1BSSVZBVEUgQ29uc3Q2NFZhbHVlIDogcHVibGljIFZh
bHVlIHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgYm9vbCBhY2NlcHRzKE9wY29kZSBvcGNvZGUpIHsg
cmV0dXJuIG9wY29kZSA9PSBDb25zdDY0OyB9CisgICAgc3RhdGljIGJvb2wgYWNjZXB0cyhLaW5k
IGtpbmQpIHsgcmV0dXJuIGtpbmQgPT0gQ29uc3Q2NDsgfQogICAgIAogICAgIH5Db25zdDY0VmFs
dWUoKTsKICAgICAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM0NvbnN0RG91Ymxl
VmFsdWUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNDb25zdERv
dWJsZVZhbHVlLmgJKHJldmlzaW9uIDIwNjUyNCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
My9CM0NvbnN0RG91YmxlVmFsdWUuaAkod29ya2luZyBjb3B5KQpAQCAtMzQsNyArMzQsNyBAQCBu
YW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIEIzIHsKIAogY2xhc3MgSlNfRVhQT1JUX1BSSVZBVEUg
Q29uc3REb3VibGVWYWx1ZSA6IHB1YmxpYyBWYWx1ZSB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIGJv
b2wgYWNjZXB0cyhPcGNvZGUgb3Bjb2RlKSB7IHJldHVybiBvcGNvZGUgPT0gQ29uc3REb3VibGU7
IH0KKyAgICBzdGF0aWMgYm9vbCBhY2NlcHRzKEtpbmQga2luZCkgeyByZXR1cm4ga2luZCA9PSBD
b25zdERvdWJsZTsgfQogICAgIAogICAgIH5Db25zdERvdWJsZVZhbHVlKCk7CiAgICAgCkluZGV4
OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNDb25zdEZsb2F0VmFsdWUuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNDb25zdEZsb2F0VmFsdWUuaAkocmV2aXNp
b24gMjA2NTI0KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzQ29uc3RGbG9hdFZhbHVl
LmgJKHdvcmtpbmcgY29weSkKQEAgLTM0LDcgKzM0LDcgQEAgbmFtZXNwYWNlIEpTQyB7IG5hbWVz
cGFjZSBCMyB7CiAKIGNsYXNzIEpTX0VYUE9SVF9QUklWQVRFIENvbnN0RmxvYXRWYWx1ZSA6IHB1
YmxpYyBWYWx1ZSB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIGJvb2wgYWNjZXB0cyhPcGNvZGUgb3Bj
b2RlKSB7IHJldHVybiBvcGNvZGUgPT0gQ29uc3RGbG9hdDsgfQorICAgIHN0YXRpYyBib29sIGFj
Y2VwdHMoS2luZCBraW5kKSB7IHJldHVybiBraW5kID09IENvbnN0RmxvYXQ7IH0KIAogICAgIH5D
b25zdEZsb2F0VmFsdWUoKTsKIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzRmVu
Y2VWYWx1ZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM0ZlbmNl
VmFsdWUuaAkocmV2aXNpb24gMjA2NTI0KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0Iz
RmVuY2VWYWx1ZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0zNCw3ICszNCw3IEBAIG5hbWVzcGFjZSBK
U0MgeyBuYW1lc3BhY2UgQjMgewogCiBjbGFzcyBKU19FWFBPUlRfUFJJVkFURSBGZW5jZVZhbHVl
IDogcHVibGljIFZhbHVlIHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgYm9vbCBhY2NlcHRzKE9wY29k
ZSBvcGNvZGUpIHsgcmV0dXJuIG9wY29kZSA9PSBGZW5jZTsgfQorICAgIHN0YXRpYyBib29sIGFj
Y2VwdHMoS2luZCBraW5kKSB7IHJldHVybiBraW5kID09IEZlbmNlOyB9CiAgICAgCiAgICAgfkZl
bmNlVmFsdWUoKTsKICAgICAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM0tpbmQu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM0tpbmQuY3BwCShu
b25leGlzdGVudCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM0tpbmQuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0wLDAgKzEsNTEgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTYgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBU
SEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5U
IFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICog
UFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
IERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4gCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkIzS2luZC5o
IgorCisjaWYgRU5BQkxFKEIzX0pJVCkKKworI2luY2x1ZGUgPHd0Zi9Db21tYVByaW50ZXIuaD4K
KworbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBCMyB7CisKK3ZvaWQgS2luZDo6ZHVtcChQcmlu
dFN0cmVhbSYgb3V0KSBjb25zdAoreworICAgIG91dC5wcmludChtX29wY29kZSk7CisgICAgaWYg
KCFoYXNFeHRyYUJpdHMoKSkKKyAgICAgICAgcmV0dXJuOworICAgIAorICAgIENvbW1hUHJpbnRl
ciBjb21tYTsKKyAgICBvdXQucHJpbnQoIjwiKTsKKyAgICBpZiAoaXNDaGlsbCgpKQorICAgICAg
ICBvdXQucHJpbnQoY29tbWEsICJDaGlsbCIpOworICAgIG91dC5wcmludCgiPiIpOworfQorCit9
IH0gLy8gbmFtZXNwYWNlIEpTQzo6QjMKKworI2VuZGlmIC8vIEVOQUJMRShCM19KSVQpCisKSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM0tpbmQuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYjMvQjNLaW5kLmgJKG5vbmV4aXN0ZW50KQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL2IzL0IzS2luZC5oCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMTg4IEBA
CisvKgorICogQ29weXJpZ2h0IChDKSAyMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElO
Qy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBP
U0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBD
T05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1Ig
QlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQor
ICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNpZm5kZWYg
QjNLaW5kX2gKKyNkZWZpbmUgQjNLaW5kX2gKKworI2lmIEVOQUJMRShCM19KSVQpCisKKyNpbmNs
dWRlICJCM09wY29kZS5oIgorI2luY2x1ZGUgPHd0Zi9IYXNoVGFibGUuaD4KKyNpbmNsdWRlIDx3
dGYvUHJpbnRTdHJlYW0uaD4KKworbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBCMyB7CisKK2Ns
YXNzIEtpbmQgeworcHVibGljOgorICAgIEtpbmQoT3Bjb2RlIG9wY29kZSkKKyAgICAgICAgOiBt
X29wY29kZShvcGNvZGUpCisgICAgeworICAgICAgICB1LmJpdHMgPSAwOworICAgIH0KKyAgICAK
KyAgICBLaW5kKCkKKyAgICAgICAgOiBLaW5kKE9vcHMpCisgICAgeworICAgIH0KKyAgICAKKyAg
ICBPcGNvZGUgb3Bjb2RlKCkgY29uc3QgeyByZXR1cm4gbV9vcGNvZGU7IH0KKyAgICB2b2lkIHNl
dE9wY29kZShPcGNvZGUgb3Bjb2RlKSB7IG1fb3Bjb2RlID0gb3Bjb2RlOyB9CisgICAgCisgICAg
Ym9vbCBoYXNFeHRyYUJpdHMoKSBjb25zdCB7IHJldHVybiAhIXUuYml0czsgfQorICAgIAorICAg
IC8vIENoaWxsIGJpdC4gVGhpcyBhcHBsaWVzIHRvIGRpdmlzaW9uLWJhc2VkIGFyaXRobWV0aWMg
b3BzLCB3aGljaCBtYXkgdHJhcCBvbiBzb21lCisgICAgLy8gcGxhdGZvcm1zIG9yIGV4aGliaXQg
Yml6YXJyZSBiZWhhdmlvciB3aGVuIHBhc3NlZCBjZXJ0YWluIGlucHV0cy4gVGhlIG5vbi1jaGls
bAorICAgIC8vIHZlcnNpb24gd2lsbCBiZWhhdmUgYXMgdW5wcmVkaWN0YWJseSBhcyBpdCB3YW50
cy4gRm9yIGV4YW1wbGUsIGl0J3MgbGVnYWwgdG8KKyAgICAvLyBjb25zdGFudC1mb2xkIERpdih4
LCAwKSB0byBhbnkgdmFsdWUgb3IgdG8gcmVwbGFjZSBpdCB3aXRoIGFueSBlZmZlY3RmdWwgb3Bl
cmF0aW9uLgorICAgIC8vIEJ1dCB3aGVuIGl0J3MgY2hpbGwsIHRoYXQgbWVhbnMgdGhhdCB0aGUg
c2VtYW50aWNzIHdoZW4gaXQgd291bGQgaGF2ZSB0cmFwcGVkIGFyZQorICAgIC8vIHRoZSBKUyBz
ZW1hbnRpY3MuIEZvciBleGFtcGxlLCBEaXY8Q2hpbGw+KEBhLCBAYikgbWVhbnM6CisgICAgLy8K
KyAgICAvLyAgICAgKChhIHwgMCkgLyAoYiB8IDApKSB8IDAKKyAgICAvLworICAgIC8vIEFuZCBN
b2Q8Q2hpbGw+KGEsIGIpIG1lYW5zOgorICAgIC8vCisgICAgLy8gICAgICgoYSB8IDApICUgKGIg
fCAwKSkgfCAwCisgICAgLy8KKyAgICAvLyBOb3RlIHRoYXQgRGl2PENoaWxsPiBtYXRjaGVzIGV4
YWN0bHkgaG93IEFSTSBoYW5kbGVzIGludGVnZXIgZGl2aXNpb24uCisgICAgYm9vbCBoYXNJc0No
aWxsKCkgY29uc3QKKyAgICB7CisgICAgICAgIHN3aXRjaCAobV9vcGNvZGUpIHsKKyAgICAgICAg
Y2FzZSBEaXY6CisgICAgICAgIGNhc2UgTW9kOgorICAgICAgICAgICAgcmV0dXJuIHRydWU7Cisg
ICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIH0KKyAg
ICB9CisgICAgYm9vbCBpc0NoaWxsKCkgY29uc3QKKyAgICB7CisgICAgICAgIHJldHVybiBoYXNJ
c0NoaWxsKCkgJiYgdS5pc0NoaWxsOworICAgIH0KKyAgICB2b2lkIHNldElzQ2hpbGwoYm9vbCBp
c0NoaWxsKQorICAgIHsKKyAgICAgICAgQVNTRVJUKGhhc0lzQ2hpbGwoKSk7CisgICAgICAgIHUu
aXNDaGlsbCA9IGlzQ2hpbGw7CisgICAgfQorICAgIAorICAgIGJvb2wgb3BlcmF0b3I9PShjb25z
dCBLaW5kJiBvdGhlcikgY29uc3QKKyAgICB7CisgICAgICAgIHJldHVybiBtX29wY29kZSA9PSBv
dGhlci5tX29wY29kZQorICAgICAgICAgICAgJiYgdS5iaXRzID09IG90aGVyLnUuYml0czsKKyAg
ICB9CisgICAgCisgICAgYm9vbCBvcGVyYXRvciE9KGNvbnN0IEtpbmQmIG90aGVyKSBjb25zdAor
ICAgIHsKKyAgICAgICAgcmV0dXJuICEoKnRoaXMgPT0gb3RoZXIpOworICAgIH0KKyAgICAKKyAg
ICBib29sIG9wZXJhdG9yPChjb25zdCBLaW5kJiBvdGhlcikgY29uc3QKKyAgICB7CisgICAgICAg
IGlmIChtX29wY29kZSA9PSBvdGhlci5tX29wY29kZSkKKyAgICAgICAgICAgIHJldHVybiB1LmJp
dHMgPCBvdGhlci51LmJpdHM7CisgICAgICAgIHJldHVybiBtX29wY29kZSA8IG90aGVyLm1fb3Bj
b2RlOworICAgIH0KKyAgICAKKyAgICBib29sIG9wZXJhdG9yPihjb25zdCBLaW5kJiBvdGhlcikg
Y29uc3QKKyAgICB7CisgICAgICAgIHJldHVybiBvdGhlciA8ICp0aGlzOworICAgIH0KKyAgICAK
KyAgICBib29sIG9wZXJhdG9yPD0oY29uc3QgS2luZCYgb3RoZXIpIGNvbnN0CisgICAgeworICAg
ICAgICByZXR1cm4gISgqdGhpcyA+IG90aGVyKTsKKyAgICB9CisgICAgCisgICAgYm9vbCBvcGVy
YXRvcj49KGNvbnN0IEtpbmQmIG90aGVyKSBjb25zdAorICAgIHsKKyAgICAgICAgcmV0dXJuICEo
KnRoaXMgPCBvdGhlcik7CisgICAgfQorICAgIAorICAgIHZvaWQgZHVtcChQcmludFN0cmVhbSYp
IGNvbnN0OworICAgIAorICAgIHVuc2lnbmVkIGhhc2goKSBjb25zdAorICAgIHsKKyAgICAgICAg
Ly8gSXQncyBhbG1vc3QgY2VydGFpbmx5IG1vcmUgaW1wb3J0YW50IHRoYXQgdGhpcyBoYXNoIGZ1
bmN0aW9uIGlzIGNoZWFwIHRvIGNvbXB1dGUgdGhhbgorICAgICAgICAvLyBhbnl0aGluZyBlbHNl
LiBXZSBjYW4gbGl2ZSB3aXRoIHNvbWUga2luZCBoYXNoIGNvbGxpc2lvbnMuCisgICAgICAgIHJl
dHVybiBtX29wY29kZSArIHUuYml0cyAqIDExMTsKKyAgICB9CisgICAgCisgICAgS2luZChXVEY6
Okhhc2hUYWJsZURlbGV0ZWRWYWx1ZVR5cGUpCisgICAgICAgIDogbV9vcGNvZGUoT29wcykKKyAg
ICB7CisgICAgICAgIHUuYml0cyA9IDE7CisgICAgfQorICAgIAorICAgIGJvb2wgaXNIYXNoVGFi
bGVEZWxldGVkVmFsdWUoKSBjb25zdAorICAgIHsKKyAgICAgICAgcmV0dXJuICp0aGlzID09IEtp
bmQoV1RGOjpIYXNoVGFibGVEZWxldGVkVmFsdWUpOworICAgIH0KKyAgICAKK3ByaXZhdGU6Cisg
ICAgT3Bjb2RlIG1fb3Bjb2RlOworICAgIHVuaW9uIHsKKyAgICAgICAgYm9vbCBpc0NoaWxsOwor
ICAgICAgICB1aW50MTZfdCBiaXRzOworICAgIH0gdTsKK307CisKKy8vIEZvciBldmVyeSBmbGFn
ICdmb28nIHlvdSBhZGQsIGl0J3MgY3VzdG9tYXJ5IHRvIGNyZWF0ZSBhIEtpbmQgQjM6OmZvbyhL
aW5kKSBmdW5jdGlvbiB0aGF0IG1ha2VzCisvLyBhIGtpbmQgd2l0aCB0aGUgZmxhZyBzZXQuIEZv
ciBleGFtcGxlLCBmb3IgY2hpbGwsIHRoaXMgbGV0cyB1cyBzYXk6CisvLworLy8gICAgIGJsb2Nr
LT5hcHBlbmROZXc8VmFsdWU+KG1fcHJvYywgY2hpbGwoTW9kKSwgT3JpZ2luKCksIGEsIGIpOwor
Ly8KKy8vIFRoYXQgbG9va3MgcHJldHR5IHNsaWNrLiBMZXQncyBrZWVwIGl0IHRoYXQgd2F5Lgor
CitpbmxpbmUgS2luZCBjaGlsbChLaW5kIGtpbmQpCit7CisgICAga2luZC5zZXRJc0NoaWxsKHRy
dWUpOworICAgIHJldHVybiBraW5kOworfQorCitzdHJ1Y3QgS2luZEhhc2ggeworICAgIHN0YXRp
YyB1bnNpZ25lZCBoYXNoKGNvbnN0IEtpbmQmIGtleSkgeyByZXR1cm4ga2V5Lmhhc2goKTsgfQor
ICAgIHN0YXRpYyBib29sIGVxdWFsKGNvbnN0IEtpbmQmIGEsIGNvbnN0IEtpbmQmIGIpIHsgcmV0
dXJuIGEgPT0gYjsgfQorICAgIHN0YXRpYyBjb25zdCBib29sIHNhZmVUb0NvbXBhcmVUb0VtcHR5
T3JEZWxldGVkID0gdHJ1ZTsKK307CisKK30gfSAvLyBuYW1lc3BhY2UgSlNDOjpCMworCituYW1l
c3BhY2UgV1RGIHsKKwordGVtcGxhdGU8dHlwZW5hbWUgVD4gc3RydWN0IERlZmF1bHRIYXNoOwor
dGVtcGxhdGU8PiBzdHJ1Y3QgRGVmYXVsdEhhc2g8SlNDOjpCMzo6S2luZD4geworICAgIHR5cGVk
ZWYgSlNDOjpCMzo6S2luZEhhc2ggSGFzaDsKK307CisKK3RlbXBsYXRlPHR5cGVuYW1lIFQ+IHN0
cnVjdCBIYXNoVHJhaXRzOwordGVtcGxhdGU8PiBzdHJ1Y3QgSGFzaFRyYWl0czxKU0M6OkIzOjpL
aW5kPiA6IHB1YmxpYyBTaW1wbGVDbGFzc0hhc2hUcmFpdHM8SlNDOjpCMzo6S2luZD4geworICAg
IHN0YXRpYyBjb25zdCBib29sIGVtcHR5VmFsdWVJc1plcm8gPSBmYWxzZTsKK307CisKK30gLy8g
bmFtZXNwYWNlIFdURgorCisjZW5kaWYgLy8gRU5BQkxFKEIzX0pJVCkKKworI2VuZGlmIC8vIEIz
S2luZF9oCisKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM0xvd2VyTWFjcm9zLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNMb3dlck1hY3Jvcy5j
cHAJKHJldmlzaW9uIDIwNjUyNCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM0xvd2Vy
TWFjcm9zLmNwcAkod29ya2luZyBjb3B5KQpAQCAtODMsNiArODMsNDEgQEAgcHJpdmF0ZToKICAg
ICAgICAgICAgIG1fb3JpZ2luID0gbV92YWx1ZS0+b3JpZ2luKCk7CiAgICAgICAgICAgICBzd2l0
Y2ggKG1fdmFsdWUtPm9wY29kZSgpKSB7CiAgICAgICAgICAgICBjYXNlIE1vZDogeworICAgICAg
ICAgICAgICAgIGlmIChtX3ZhbHVlLT5pc0NoaWxsKCkpIHsKKyAgICAgICAgICAgICAgICAgICAg
aWYgKGlzQVJNNjQoKSkgeworICAgICAgICAgICAgICAgICAgICAgICAgQmFzaWNCbG9jayogYmVm
b3JlID0gbV9ibG9ja0luc2VydGlvblNldC5zcGxpdEZvcndhcmQobV9ibG9jaywgbV9pbmRleCwg
Jm1faW5zZXJ0aW9uU2V0KTsKKyAgICAgICAgICAgICAgICAgICAgICAgIEJhc2ljQmxvY2sqIHpl
cm9EZW5DYXNlID0gbV9ibG9ja0luc2VydGlvblNldC5pbnNlcnRCZWZvcmUobV9ibG9jayk7Cisg
ICAgICAgICAgICAgICAgICAgICAgICBCYXNpY0Jsb2NrKiBub3JtYWxNb2RDYXNlID0gbV9ibG9j
a0luc2VydGlvblNldC5pbnNlcnRCZWZvcmUobV9ibG9jayk7CisKKyAgICAgICAgICAgICAgICAg
ICAgICAgIGJlZm9yZS0+cmVwbGFjZUxhc3RXaXRoTmV3PFZhbHVlPihtX3Byb2MsIEJyYW5jaCwg
bV9vcmlnaW4sIG1fdmFsdWUtPmNoaWxkKDEpKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGJl
Zm9yZS0+c2V0U3VjY2Vzc29ycygKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBGcmVxdWVu
dGVkQmxvY2sobm9ybWFsTW9kQ2FzZSwgRnJlcXVlbmN5Q2xhc3M6Ok5vcm1hbCksCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgRnJlcXVlbnRlZEJsb2NrKHplcm9EZW5DYXNlLCBGcmVxdWVu
Y3lDbGFzczo6UmFyZSkpOworCisgICAgICAgICAgICAgICAgICAgICAgICBWYWx1ZSogZGl2UmVz
dWx0ID0gbm9ybWFsTW9kQ2FzZS0+YXBwZW5kTmV3PFZhbHVlPihtX3Byb2MsIGNoaWxsKERpdiks
IG1fb3JpZ2luLCBtX3ZhbHVlLT5jaGlsZCgwKSwgbV92YWx1ZS0+Y2hpbGQoMSkpOworICAgICAg
ICAgICAgICAgICAgICAgICAgVmFsdWUqIG11bHRpcGxpZWRCYWNrID0gbm9ybWFsTW9kQ2FzZS0+
YXBwZW5kTmV3PFZhbHVlPihtX3Byb2MsIE11bCwgbV9vcmlnaW4sIGRpdlJlc3VsdCwgbV92YWx1
ZS0+Y2hpbGQoMSkpOworICAgICAgICAgICAgICAgICAgICAgICAgVmFsdWUqIHJlc3VsdCA9IG5v
cm1hbE1vZENhc2UtPmFwcGVuZE5ldzxWYWx1ZT4obV9wcm9jLCBTdWIsIG1fb3JpZ2luLCBtX3Zh
bHVlLT5jaGlsZCgwKSwgbXVsdGlwbGllZEJhY2spOworICAgICAgICAgICAgICAgICAgICAgICAg
VXBzaWxvblZhbHVlKiBub3JtYWxSZXN1bHQgPSBub3JtYWxNb2RDYXNlLT5hcHBlbmROZXc8VXBz
aWxvblZhbHVlPihtX3Byb2MsIG1fb3JpZ2luLCByZXN1bHQpOworICAgICAgICAgICAgICAgICAg
ICAgICAgbm9ybWFsTW9kQ2FzZS0+YXBwZW5kTmV3PFZhbHVlPihtX3Byb2MsIEp1bXAsIG1fb3Jp
Z2luKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIG5vcm1hbE1vZENhc2UtPnNldFN1Y2Nlc3Nv
cnMoRnJlcXVlbnRlZEJsb2NrKG1fYmxvY2spKTsKKworICAgICAgICAgICAgICAgICAgICAgICAg
VXBzaWxvblZhbHVlKiB6ZXJvUmVzdWx0ID0gemVyb0RlbkNhc2UtPmFwcGVuZE5ldzxVcHNpbG9u
VmFsdWU+KAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1fcHJvYywgbV9vcmlnaW4sCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgemVyb0RlbkNhc2UtPmFwcGVuZEludENvbnN0YW50
KG1fcHJvYywgbV92YWx1ZSwgMCkpOworICAgICAgICAgICAgICAgICAgICAgICAgemVyb0RlbkNh
c2UtPmFwcGVuZE5ldzxWYWx1ZT4obV9wcm9jLCBKdW1wLCBtX29yaWdpbik7CisgICAgICAgICAg
ICAgICAgICAgICAgICB6ZXJvRGVuQ2FzZS0+c2V0U3VjY2Vzc29ycyhGcmVxdWVudGVkQmxvY2so
bV9ibG9jaykpOworCisgICAgICAgICAgICAgICAgICAgICAgICBWYWx1ZSogcGhpID0gbV9pbnNl
cnRpb25TZXQuaW5zZXJ0PFZhbHVlPihtX2luZGV4LCBQaGksIG1fdmFsdWUtPnR5cGUoKSwgbV9v
cmlnaW4pOworICAgICAgICAgICAgICAgICAgICAgICAgbm9ybWFsUmVzdWx0LT5zZXRQaGkocGhp
KTsKKyAgICAgICAgICAgICAgICAgICAgICAgIHplcm9SZXN1bHQtPnNldFBoaShwaGkpOworICAg
ICAgICAgICAgICAgICAgICAgICAgbV92YWx1ZS0+cmVwbGFjZVdpdGhJZGVudGl0eShwaGkpOwor
ICAgICAgICAgICAgICAgICAgICAgICAgYmVmb3JlLT51cGRhdGVQcmVkZWNlc3NvcnNBZnRlcigp
OworICAgICAgICAgICAgICAgICAgICAgICAgbV9jaGFuZ2VkID0gdHJ1ZTsKKyAgICAgICAgICAg
ICAgICAgICAgfSBlbHNlCisgICAgICAgICAgICAgICAgICAgICAgICBtYWtlRGl2aXNpb25DaGls
bChNb2QpOworICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICB9Cisg
ICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgZG91YmxlICgqZm1vZERvdWJsZSkoZG91
YmxlLCBkb3VibGUpID0gZm1vZDsKICAgICAgICAgICAgICAgICBpZiAobV92YWx1ZS0+dHlwZSgp
ID09IERvdWJsZSkgewogICAgICAgICAgICAgICAgICAgICBWYWx1ZSogZnVuY3Rpb25BZGRyZXNz
ID0gbV9pbnNlcnRpb25TZXQuaW5zZXJ0PENvbnN0UHRyVmFsdWU+KG1faW5kZXgsIG1fb3JpZ2lu
LCBmbW9kRG91YmxlKTsKQEAgLTEwNiw3ICsxNDEsNyBAQCBwcml2YXRlOgogICAgICAgICAgICAg
ICAgICAgICBtX3ZhbHVlLT5yZXBsYWNlV2l0aElkZW50aXR5KHJlc3VsdCk7CiAgICAgICAgICAg
ICAgICAgICAgIG1fY2hhbmdlZCA9IHRydWU7CiAgICAgICAgICAgICAgICAgfSBlbHNlIGlmIChp
c0FSTTY0KCkpIHsKLSAgICAgICAgICAgICAgICAgICAgVmFsdWUqIGRpdlJlc3VsdCA9IG1faW5z
ZXJ0aW9uU2V0Lmluc2VydDxWYWx1ZT4obV9pbmRleCwgQ2hpbGxEaXYsIG1fb3JpZ2luLCBtX3Zh
bHVlLT5jaGlsZCgwKSwgbV92YWx1ZS0+Y2hpbGQoMSkpOworICAgICAgICAgICAgICAgICAgICBW
YWx1ZSogZGl2UmVzdWx0ID0gbV9pbnNlcnRpb25TZXQuaW5zZXJ0PFZhbHVlPihtX2luZGV4LCBj
aGlsbChEaXYpLCBtX29yaWdpbiwgbV92YWx1ZS0+Y2hpbGQoMCksIG1fdmFsdWUtPmNoaWxkKDEp
KTsKICAgICAgICAgICAgICAgICAgICAgVmFsdWUqIG11bHRpcGxpZWRCYWNrID0gbV9pbnNlcnRp
b25TZXQuaW5zZXJ0PFZhbHVlPihtX2luZGV4LCBNdWwsIG1fb3JpZ2luLCBkaXZSZXN1bHQsIG1f
dmFsdWUtPmNoaWxkKDEpKTsKICAgICAgICAgICAgICAgICAgICAgVmFsdWUqIHJlc3VsdCA9IG1f
aW5zZXJ0aW9uU2V0Lmluc2VydDxWYWx1ZT4obV9pbmRleCwgU3ViLCBtX29yaWdpbiwgbV92YWx1
ZS0+Y2hpbGQoMCksIG11bHRpcGxpZWRCYWNrKTsKICAgICAgICAgICAgICAgICAgICAgbV92YWx1
ZS0+cmVwbGFjZVdpdGhJZGVudGl0eShyZXN1bHQpOwpAQCAtMTE0LDQzICsxNDksOSBAQCBwcml2
YXRlOgogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAg
ICAgIH0KLSAgICAgICAgICAgIGNhc2UgQ2hpbGxEaXY6IHsKLSAgICAgICAgICAgICAgICBtYWtl
RGl2aXNpb25DaGlsbChEaXYpOwotICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAg
fQotCi0gICAgICAgICAgICBjYXNlIENoaWxsTW9kOiB7Ci0gICAgICAgICAgICAgICAgaWYgKGlz
QVJNNjQoKSkgewotICAgICAgICAgICAgICAgICAgICBCYXNpY0Jsb2NrKiBiZWZvcmUgPSBtX2Js
b2NrSW5zZXJ0aW9uU2V0LnNwbGl0Rm9yd2FyZChtX2Jsb2NrLCBtX2luZGV4LCAmbV9pbnNlcnRp
b25TZXQpOwotICAgICAgICAgICAgICAgICAgICBCYXNpY0Jsb2NrKiB6ZXJvRGVuQ2FzZSA9IG1f
YmxvY2tJbnNlcnRpb25TZXQuaW5zZXJ0QmVmb3JlKG1fYmxvY2spOwotICAgICAgICAgICAgICAg
ICAgICBCYXNpY0Jsb2NrKiBub3JtYWxNb2RDYXNlID0gbV9ibG9ja0luc2VydGlvblNldC5pbnNl
cnRCZWZvcmUobV9ibG9jayk7Ci0KLSAgICAgICAgICAgICAgICAgICAgYmVmb3JlLT5yZXBsYWNl
TGFzdFdpdGhOZXc8VmFsdWU+KG1fcHJvYywgQnJhbmNoLCBtX29yaWdpbiwgbV92YWx1ZS0+Y2hp
bGQoMSkpOwotICAgICAgICAgICAgICAgICAgICBiZWZvcmUtPnNldFN1Y2Nlc3NvcnMoCi0gICAg
ICAgICAgICAgICAgICAgICAgICBGcmVxdWVudGVkQmxvY2sobm9ybWFsTW9kQ2FzZSwgRnJlcXVl
bmN5Q2xhc3M6Ok5vcm1hbCksCi0gICAgICAgICAgICAgICAgICAgICAgICBGcmVxdWVudGVkQmxv
Y2soemVyb0RlbkNhc2UsIEZyZXF1ZW5jeUNsYXNzOjpSYXJlKSk7Ci0KLSAgICAgICAgICAgICAg
ICAgICAgVmFsdWUqIGRpdlJlc3VsdCA9IG5vcm1hbE1vZENhc2UtPmFwcGVuZE5ldzxWYWx1ZT4o
bV9wcm9jLCBDaGlsbERpdiwgbV9vcmlnaW4sIG1fdmFsdWUtPmNoaWxkKDApLCBtX3ZhbHVlLT5j
aGlsZCgxKSk7Ci0gICAgICAgICAgICAgICAgICAgIFZhbHVlKiBtdWx0aXBsaWVkQmFjayA9IG5v
cm1hbE1vZENhc2UtPmFwcGVuZE5ldzxWYWx1ZT4obV9wcm9jLCBNdWwsIG1fb3JpZ2luLCBkaXZS
ZXN1bHQsIG1fdmFsdWUtPmNoaWxkKDEpKTsKLSAgICAgICAgICAgICAgICAgICAgVmFsdWUqIHJl
c3VsdCA9IG5vcm1hbE1vZENhc2UtPmFwcGVuZE5ldzxWYWx1ZT4obV9wcm9jLCBTdWIsIG1fb3Jp
Z2luLCBtX3ZhbHVlLT5jaGlsZCgwKSwgbXVsdGlwbGllZEJhY2spOwotICAgICAgICAgICAgICAg
ICAgICBVcHNpbG9uVmFsdWUqIG5vcm1hbFJlc3VsdCA9IG5vcm1hbE1vZENhc2UtPmFwcGVuZE5l
dzxVcHNpbG9uVmFsdWU+KG1fcHJvYywgbV9vcmlnaW4sIHJlc3VsdCk7Ci0gICAgICAgICAgICAg
ICAgICAgIG5vcm1hbE1vZENhc2UtPmFwcGVuZE5ldzxWYWx1ZT4obV9wcm9jLCBKdW1wLCBtX29y
aWdpbik7Ci0gICAgICAgICAgICAgICAgICAgIG5vcm1hbE1vZENhc2UtPnNldFN1Y2Nlc3NvcnMo
RnJlcXVlbnRlZEJsb2NrKG1fYmxvY2spKTsKLQotICAgICAgICAgICAgICAgICAgICBVcHNpbG9u
VmFsdWUqIHplcm9SZXN1bHQgPSB6ZXJvRGVuQ2FzZS0+YXBwZW5kTmV3PFVwc2lsb25WYWx1ZT4o
Ci0gICAgICAgICAgICAgICAgICAgICAgICBtX3Byb2MsIG1fb3JpZ2luLAotICAgICAgICAgICAg
ICAgICAgICAgICAgemVyb0RlbkNhc2UtPmFwcGVuZEludENvbnN0YW50KG1fcHJvYywgbV92YWx1
ZSwgMCkpOwotICAgICAgICAgICAgICAgICAgICB6ZXJvRGVuQ2FzZS0+YXBwZW5kTmV3PFZhbHVl
PihtX3Byb2MsIEp1bXAsIG1fb3JpZ2luKTsKLSAgICAgICAgICAgICAgICAgICAgemVyb0RlbkNh
c2UtPnNldFN1Y2Nlc3NvcnMoRnJlcXVlbnRlZEJsb2NrKG1fYmxvY2spKTsKLQotICAgICAgICAg
ICAgICAgICAgICBWYWx1ZSogcGhpID0gbV9pbnNlcnRpb25TZXQuaW5zZXJ0PFZhbHVlPihtX2lu
ZGV4LCBQaGksIG1fdmFsdWUtPnR5cGUoKSwgbV9vcmlnaW4pOwotICAgICAgICAgICAgICAgICAg
ICBub3JtYWxSZXN1bHQtPnNldFBoaShwaGkpOwotICAgICAgICAgICAgICAgICAgICB6ZXJvUmVz
dWx0LT5zZXRQaGkocGhpKTsKLSAgICAgICAgICAgICAgICAgICAgbV92YWx1ZS0+cmVwbGFjZVdp
dGhJZGVudGl0eShwaGkpOwotICAgICAgICAgICAgICAgICAgICBiZWZvcmUtPnVwZGF0ZVByZWRl
Y2Vzc29yc0FmdGVyKCk7Ci0gICAgICAgICAgICAgICAgICAgIG1fY2hhbmdlZCA9IHRydWU7Ci0g
ICAgICAgICAgICAgICAgfSBlbHNlCi0gICAgICAgICAgICAgICAgICAgIG1ha2VEaXZpc2lvbkNo
aWxsKE1vZCk7CisgICAgICAgICAgICBjYXNlIERpdjogeworICAgICAgICAgICAgICAgIGlmICht
X3ZhbHVlLT5pc0NoaWxsKCkpCisgICAgICAgICAgICAgICAgICAgIG1ha2VEaXZpc2lvbkNoaWxs
KERpdik7CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICB9CiAKQEAgLTE4OCw3
ICsxODksNyBAQCBwcml2YXRlOgogICAgICAgICBpZiAoaXNBUk02NCgpKQogICAgICAgICAgICAg
cmV0dXJuOwogCi0gICAgICAgIC8vIFdlIGltcGxlbWVudCAicmVzID0gQ2hpbGxEaXYvQ2hpbGxN
b2QobnVtLCBkZW4pIiBhcyBmb2xsb3dzOgorICAgICAgICAvLyBXZSBpbXBsZW1lbnQgInJlcyA9
IERpdjxDaGlsbD4vTW9kPENoaWxsPihudW0sIGRlbikiIGFzIGZvbGxvd3M6CiAgICAgICAgIC8v
CiAgICAgICAgIC8vICAgICBpZiAoZGVuICsgMSA8PV91bnNpZ25lZCAxKSB7CiAgICAgICAgIC8v
ICAgICAgICAgaWYgKCFkZW4pIHsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM0xv
d2VyVG9BaXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM0xv
d2VyVG9BaXIuY3BwCShyZXZpc2lvbiAyMDY1MjQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
YjMvQjNMb3dlclRvQWlyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTg0NiwxMCArMTg0Niw5IEBA
IHByaXZhdGU6CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KIAotICAgICAgICBjYXNl
IENoaWxsRGl2OgotICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlQoaXNBUk02NCgpKTsKLSAgICAg
ICAgICAgIEZBTExUSFJPVUdIOwogICAgICAgICBjYXNlIERpdjogeworICAgICAgICAgICAgaWYg
KG1fdmFsdWUtPmlzQ2hpbGwoKSkKKyAgICAgICAgICAgICAgICBSRUxFQVNFX0FTU0VSVChpc0FS
TTY0KCkpOwogI2lmIENQVShYODYpIHx8IENQVShYODZfNjQpCiAgICAgICAgICAgICBpZiAoaXNJ
bnQobV92YWx1ZS0+dHlwZSgpKSkgewogICAgICAgICAgICAgICAgIGxvd2VyWDg2RGl2KCk7CkBA
IC0xODY1LDYgKzE4NjQsNyBAQCBwcml2YXRlOgogCiAgICAgICAgIGNhc2UgTW9kOiB7CiAgICAg
ICAgICAgICBSRUxFQVNFX0FTU0VSVChpc1g4NigpKTsKKyAgICAgICAgICAgIFJFTEVBU0VfQVNT
RVJUKCFtX3ZhbHVlLT5pc0NoaWxsKCkpOwogI2lmIENQVShYODYpIHx8IENQVShYODZfNjQpCiAg
ICAgICAgICAgICBsb3dlclg4NkRpdigpOwogICAgICAgICAgICAgYXBwZW5kKE1vdmUsIFRtcChY
ODZSZWdpc3RlcnM6OmVkeCksIHRtcChtX3ZhbHVlKSk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvYjMvQjNNZW1vcnlWYWx1ZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9iMy9CM01lbW9yeVZhbHVlLmgJKHJldmlzaW9uIDIwNjUyNCkKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9iMy9CM01lbW9yeVZhbHVlLmgJKHdvcmtpbmcgY29weSkKQEAgLTM4LDkgKzM4
LDkgQEAgbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBCMyB7CiAKIGNsYXNzIEpTX0VYUE9SVF9Q
UklWQVRFIE1lbW9yeVZhbHVlIDogcHVibGljIFZhbHVlIHsKIHB1YmxpYzoKLSAgICBzdGF0aWMg
Ym9vbCBhY2NlcHRzKE9wY29kZSBvcGNvZGUpCisgICAgc3RhdGljIGJvb2wgYWNjZXB0cyhLaW5k
IGtpbmQpCiAgICAgewotICAgICAgICBzd2l0Y2ggKG9wY29kZSkgeworICAgICAgICBzd2l0Y2gg
KGtpbmQub3Bjb2RlKCkpIHsKICAgICAgICAgY2FzZSBMb2FkOFo6CiAgICAgICAgIGNhc2UgTG9h
ZDhTOgogICAgICAgICBjYXNlIExvYWQxNlo6CkBAIC01NSw5ICs1NSw5IEBAIHB1YmxpYzoKICAg
ICAgICAgfQogICAgIH0KIAotICAgIHN0YXRpYyBib29sIGlzU3RvcmUoT3Bjb2RlIG9wY29kZSkK
KyAgICBzdGF0aWMgYm9vbCBpc1N0b3JlKEtpbmQga2luZCkKICAgICB7Ci0gICAgICAgIHN3aXRj
aCAob3Bjb2RlKSB7CisgICAgICAgIHN3aXRjaCAoa2luZC5vcGNvZGUoKSkgewogICAgICAgICBj
YXNlIFN0b3JlODoKICAgICAgICAgY2FzZSBTdG9yZTE2OgogICAgICAgICBjYXNlIFN0b3JlOgpA
QCAtNjcsOSArNjcsOSBAQCBwdWJsaWM6CiAgICAgICAgIH0KICAgICB9CiAKLSAgICBzdGF0aWMg
Ym9vbCBpc0xvYWQoT3Bjb2RlIG9wY29kZSkKKyAgICBzdGF0aWMgYm9vbCBpc0xvYWQoS2luZCBr
aW5kKQogICAgIHsKLSAgICAgICAgcmV0dXJuIGFjY2VwdHMob3Bjb2RlKSAmJiAhaXNTdG9yZShv
cGNvZGUpOworICAgICAgICByZXR1cm4gYWNjZXB0cyhraW5kKSAmJiAhaXNTdG9yZShraW5kKTsK
ICAgICB9CiAKICAgICB+TWVtb3J5VmFsdWUoKTsKQEAgLTk1LDEzICs5NSwxMyBAQCBwcml2YXRl
OgogCiAgICAgLy8gVXNlIHRoaXMgZm9ybSBmb3IgTG9hZCAoYnV0IG5vdCBMb2FkOFosIExvYWQ4
Uywgb3IgYW55IG9mIHRoZSBMb2FkcyB0aGF0IGhhdmUgYSBzdWZmaXggdGhhdAogICAgIC8vIGRl
c2NyaWJlcyB0aGUgcmV0dXJuZWQgdHlwZSkuCi0gICAgTWVtb3J5VmFsdWUoT3Bjb2RlIG9wY29k
ZSwgVHlwZSB0eXBlLCBPcmlnaW4gb3JpZ2luLCBWYWx1ZSogcG9pbnRlciwgaW50MzJfdCBvZmZz
ZXQgPSAwKQotICAgICAgICA6IFZhbHVlKENoZWNrZWRPcGNvZGUsIG9wY29kZSwgdHlwZSwgb3Jp
Z2luLCBwb2ludGVyKQorICAgIE1lbW9yeVZhbHVlKEtpbmQga2luZCwgVHlwZSB0eXBlLCBPcmln
aW4gb3JpZ2luLCBWYWx1ZSogcG9pbnRlciwgaW50MzJfdCBvZmZzZXQgPSAwKQorICAgICAgICA6
IFZhbHVlKENoZWNrZWRPcGNvZGUsIGtpbmQsIHR5cGUsIG9yaWdpbiwgcG9pbnRlcikKICAgICAg
ICAgLCBtX29mZnNldChvZmZzZXQpCiAgICAgICAgICwgbV9yYW5nZShIZWFwUmFuZ2U6OnRvcCgp
KQogICAgIHsKICAgICAgICAgaWYgKCFBU1NFUlRfRElTQUJMRUQpIHsKLSAgICAgICAgICAgIHN3
aXRjaCAob3Bjb2RlKSB7CisgICAgICAgICAgICBzd2l0Y2ggKGtpbmQub3Bjb2RlKCkpIHsKICAg
ICAgICAgICAgIGNhc2UgTG9hZDoKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAg
IGNhc2UgTG9hZDhaOgpAQCAtMTIyLDE5ICsxMjIsMTkgQEAgcHJpdmF0ZToKICAgICB9CiAKICAg
ICAvLyBVc2UgdGhpcyBmb3JtIGZvciBsb2FkcyB3aGVyZSB0aGUgcmV0dXJuIHR5cGUgaXMgaW1w
bGllZC4KLSAgICBNZW1vcnlWYWx1ZShPcGNvZGUgb3Bjb2RlLCBPcmlnaW4gb3JpZ2luLCBWYWx1
ZSogcG9pbnRlciwgaW50MzJfdCBvZmZzZXQgPSAwKQotICAgICAgICA6IE1lbW9yeVZhbHVlKG9w
Y29kZSwgSW50MzIsIG9yaWdpbiwgcG9pbnRlciwgb2Zmc2V0KQorICAgIE1lbW9yeVZhbHVlKEtp
bmQga2luZCwgT3JpZ2luIG9yaWdpbiwgVmFsdWUqIHBvaW50ZXIsIGludDMyX3Qgb2Zmc2V0ID0g
MCkKKyAgICAgICAgOiBNZW1vcnlWYWx1ZShraW5kLCBJbnQzMiwgb3JpZ2luLCBwb2ludGVyLCBv
ZmZzZXQpCiAgICAgewogICAgIH0KIAogICAgIC8vIFVzZSB0aGlzIGZvcm0gZm9yIHN0b3Jlcy4K
LSAgICBNZW1vcnlWYWx1ZShPcGNvZGUgb3Bjb2RlLCBPcmlnaW4gb3JpZ2luLCBWYWx1ZSogdmFs
dWUsIFZhbHVlKiBwb2ludGVyLCBpbnQzMl90IG9mZnNldCA9IDApCi0gICAgICAgIDogVmFsdWUo
Q2hlY2tlZE9wY29kZSwgb3Bjb2RlLCBWb2lkLCBvcmlnaW4sIHZhbHVlLCBwb2ludGVyKQorICAg
IE1lbW9yeVZhbHVlKEtpbmQga2luZCwgT3JpZ2luIG9yaWdpbiwgVmFsdWUqIHZhbHVlLCBWYWx1
ZSogcG9pbnRlciwgaW50MzJfdCBvZmZzZXQgPSAwKQorICAgICAgICA6IFZhbHVlKENoZWNrZWRP
cGNvZGUsIGtpbmQsIFZvaWQsIG9yaWdpbiwgdmFsdWUsIHBvaW50ZXIpCiAgICAgICAgICwgbV9v
ZmZzZXQob2Zmc2V0KQogICAgICAgICAsIG1fcmFuZ2UoSGVhcFJhbmdlOjp0b3AoKSkKICAgICB7
CiAgICAgICAgIGlmICghQVNTRVJUX0RJU0FCTEVEKSB7Ci0gICAgICAgICAgICBzd2l0Y2ggKG9w
Y29kZSkgeworICAgICAgICAgICAgc3dpdGNoIChraW5kLm9wY29kZSgpKSB7CiAgICAgICAgICAg
ICBjYXNlIFN0b3JlODoKICAgICAgICAgICAgIGNhc2UgU3RvcmUxNjoKICAgICAgICAgICAgIGNh
c2UgU3RvcmU6CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNPcGNvZGUuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM09wY29kZS5jcHAJKHJldmlz
aW9uIDIwNjUyNCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM09wY29kZS5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTEyOCwxMiArMTI4LDYgQEAgdm9pZCBwcmludEludGVybmFsKFByaW50
U3RyZWFtJiBvdXQsIE9wYwogICAgIGNhc2UgTmVnOgogICAgICAgICBvdXQucHJpbnQoIk5lZyIp
OwogICAgICAgICByZXR1cm47Ci0gICAgY2FzZSBDaGlsbERpdjoKLSAgICAgICAgb3V0LnByaW50
KCJDaGlsbERpdiIpOwotICAgICAgICByZXR1cm47Ci0gICAgY2FzZSBDaGlsbE1vZDoKLSAgICAg
ICAgb3V0LnByaW50KCJDaGlsbE1vZCIpOwotICAgICAgICByZXR1cm47CiAgICAgY2FzZSBCaXRB
bmQ6CiAgICAgICAgIG91dC5wcmludCgiQml0QW5kIik7CiAgICAgICAgIHJldHVybjsKSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM09wY29kZS5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9iMy9CM09wY29kZS5oCShyZXZpc2lvbiAyMDY1MjQpCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYjMvQjNPcGNvZGUuaAkod29ya2luZyBjb3B5KQpAQCAtODQsOCAr
ODQsNiBAQCBlbnVtIE9wY29kZSA6IGludDE2X3QgewogICAgIE5lZywKIAogICAgIC8vIEludGVn
ZXIgbWF0aC4KLSAgICBDaGlsbERpdiwgLy8gZG9lc24ndCB0cmFwIGV2ZXIsIGJlaGF2ZXMgbGlr
ZSBKUyAoeC95KXwwLgotICAgIENoaWxsTW9kLCAvLyBkb2Vzbid0IHRyYXAgZXZlciwgYmVoYXZl
cyBsaWtlIEpTICh4JXkpfDAuCiAgICAgQml0QW5kLAogICAgIEJpdE9yLAogICAgIEJpdFhvciwK
SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM1BhdGNocG9pbnRWYWx1ZS5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM1BhdGNocG9pbnRWYWx1ZS5oCShy
ZXZpc2lvbiAyMDY1MjQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNQYXRjaHBvaW50
VmFsdWUuaAkod29ya2luZyBjb3B5KQpAQCAtMzgsNyArMzgsNyBAQCBjbGFzcyBQYXRjaHBvaW50
VmFsdWUgOiBwdWJsaWMgU3RhY2ttYXBWCiBwdWJsaWM6CiAgICAgdHlwZWRlZiBTdGFja21hcFZh
bHVlIEJhc2U7CiAgICAgCi0gICAgc3RhdGljIGJvb2wgYWNjZXB0cyhPcGNvZGUgb3Bjb2RlKSB7
IHJldHVybiBvcGNvZGUgPT0gUGF0Y2hwb2ludDsgfQorICAgIHN0YXRpYyBib29sIGFjY2VwdHMo
S2luZCBraW5kKSB7IHJldHVybiBraW5kID09IFBhdGNocG9pbnQ7IH0KIAogICAgIH5QYXRjaHBv
aW50VmFsdWUoKTsKIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzUmVkdWNlU3Ry
ZW5ndGguY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM1JlZHVj
ZVN0cmVuZ3RoLmNwcAkocmV2aXNpb24gMjA2NTI0KQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L2IzL0IzUmVkdWNlU3RyZW5ndGguY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02NDgsMTAgKzY0OCw5
IEBAIHByaXZhdGU6CiAgICAgICAgICAgICBicmVhazsKIAogICAgICAgICBjYXNlIERpdjoKLSAg
ICAgICAgY2FzZSBDaGlsbERpdjoKICAgICAgICAgICAgIC8vIFR1cm4gdGhpczogRGl2KGNvbnN0
YW50MSwgY29uc3RhbnQyKQogICAgICAgICAgICAgLy8gSW50byB0aGlzOiBjb25zdGFudDEgLyBj
b25zdGFudDIKLSAgICAgICAgICAgIC8vIE5vdGUgdGhhdCB0aGlzIHVzZXMgQ2hpbGxEaXYgc2Vt
YW50aWNzLiBUaGF0J3MgZmluZSwgYmVjYXVzZSB0aGUgcnVsZXMgZm9yIERpdgorICAgICAgICAg
ICAgLy8gTm90ZSB0aGF0IHRoaXMgdXNlcyBEaXY8Q2hpbGw+IHNlbWFudGljcy4gVGhhdCdzIGZp
bmUsIGJlY2F1c2UgdGhlIHJ1bGVzIGZvciBEaXYKICAgICAgICAgICAgIC8vIGFyZSBzdHJpY3Rs
eSB3ZWFrZXI6IGl0IGhhcyBjb3JuZXIgY2FzZXMgd2hlcmUgaXQncyBhbGxvd2VkIHRvIGRvIGFu
eXRoaW5nIGl0CiAgICAgICAgICAgICAvLyBsaWtlcy4KICAgICAgICAgICAgIGlmIChyZXBsYWNl
V2l0aE5ld1ZhbHVlKG1fdmFsdWUtPmNoaWxkKDApLT5kaXZDb25zdGFudChtX3Byb2MsIG1fdmFs
dWUtPmNoaWxkKDEpKSkpCkBAIC03MzcsMTAgKzczNiw5IEBAIHByaXZhdGU6CiAgICAgICAgICAg
ICBicmVhazsKIAogICAgICAgICBjYXNlIE1vZDoKLSAgICAgICAgY2FzZSBDaGlsbE1vZDoKICAg
ICAgICAgICAgIC8vIFR1cm4gdGhpczogTW9kKGNvbnN0YW50MSwgY29uc3RhbnQyKQogICAgICAg
ICAgICAgLy8gSW50byB0aGlzOiBjb25zdGFudDEgLyBjb25zdGFudDIKLSAgICAgICAgICAgIC8v
IE5vdGUgdGhhdCB0aGlzIHVzZXMgQ2hpbGxNb2Qgc2VtYW50aWNzLgorICAgICAgICAgICAgLy8g
Tm90ZSB0aGF0IHRoaXMgdXNlcyBNb2Q8Q2hpbGw+IHNlbWFudGljcy4KICAgICAgICAgICAgIGlm
IChyZXBsYWNlV2l0aE5ld1ZhbHVlKG1fdmFsdWUtPmNoaWxkKDApLT5tb2RDb25zdGFudChtX3By
b2MsIG1fdmFsdWUtPmNoaWxkKDEpKSkpCiAgICAgICAgICAgICAgICAgYnJlYWs7CiAKQEAgLTc3
NCwxOSArNzcyLDggQEAgcHJpdmF0ZToKICAgICAgICAgICAgICAgICAgICAgLy8gICAgICAgICAg
ICAgICAgPSAtMl4zMSAtIC0yXjMxCiAgICAgICAgICAgICAgICAgICAgIC8vICAgICAgICAgICAg
ICAgID0gMAogCi0gICAgICAgICAgICAgICAgICAgIE9wY29kZSBkaXZPcGNvZGU7Ci0gICAgICAg
ICAgICAgICAgICAgIHN3aXRjaCAobV92YWx1ZS0+b3Bjb2RlKCkpIHsKLSAgICAgICAgICAgICAg
ICAgICAgY2FzZSBNb2Q6Ci0gICAgICAgICAgICAgICAgICAgICAgICBkaXZPcGNvZGUgPSBEaXY7
Ci0gICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAgICAgICAgY2Fz
ZSBDaGlsbE1vZDoKLSAgICAgICAgICAgICAgICAgICAgICAgIGRpdk9wY29kZSA9IENoaWxsRGl2
OwotICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgICAgIGRl
ZmF1bHQ6Ci0gICAgICAgICAgICAgICAgICAgICAgICBkaXZPcGNvZGUgPSBPb3BzOwotICAgICAg
ICAgICAgICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICAgICAg
ICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAg
ICAgICAgICAgIEtpbmQgZGl2S2luZCA9IERpdjsKKyAgICAgICAgICAgICAgICAgICAgZGl2S2lu
ZC5zZXRJc0NoaWxsKG1fdmFsdWUtPmlzQ2hpbGwoKSk7CiAKICAgICAgICAgICAgICAgICAgICAg
cmVwbGFjZVdpdGhJZGVudGl0eSgKICAgICAgICAgICAgICAgICAgICAgICAgIG1faW5zZXJ0aW9u
U2V0Lmluc2VydDxWYWx1ZT4oCkBAIC03OTUsNyArNzgyLDcgQEAgcHJpdmF0ZToKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBtX2luc2VydGlvblNldC5pbnNlcnQ8VmFsdWU+KAogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBtX2luZGV4LCBNdWwsIG1fdmFsdWUtPm9yaWdpbigp
LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtX2luc2VydGlvblNldC5pbnNlcnQ8
VmFsdWU+KAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbV9pbmRleCwgZGl2
T3Bjb2RlLCBtX3ZhbHVlLT5vcmlnaW4oKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIG1faW5kZXgsIGRpdktpbmQsIG1fdmFsdWUtPm9yaWdpbigpLAogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgbV92YWx1ZS0+Y2hpbGQoMCksIG1fdmFsdWUtPmNoaWxk
KDEpKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbV92YWx1ZS0+Y2hpbGQoMSkp
KSk7CiAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRD
b3JlL2IzL0IzU2xvdEJhc2VWYWx1ZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9iMy9CM1Nsb3RCYXNlVmFsdWUuaAkocmV2aXNpb24gMjA2NTI0KQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL2IzL0IzU2xvdEJhc2VWYWx1ZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0zNiw3
ICszNiw3IEBAIGNsYXNzIFN0YWNrU2xvdDsKIAogY2xhc3MgSlNfRVhQT1JUX1BSSVZBVEUgU2xv
dEJhc2VWYWx1ZSA6IHB1YmxpYyBWYWx1ZSB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIGJvb2wgYWNj
ZXB0cyhPcGNvZGUgb3Bjb2RlKSB7IHJldHVybiBvcGNvZGUgPT0gU2xvdEJhc2U7IH0KKyAgICBz
dGF0aWMgYm9vbCBhY2NlcHRzKEtpbmQga2luZCkgeyByZXR1cm4ga2luZCA9PSBTbG90QmFzZTsg
fQogCiAgICAgflNsb3RCYXNlVmFsdWUoKTsKIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L2IzL0IzU3RhY2ttYXBWYWx1ZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL2IzL0IzU3RhY2ttYXBWYWx1ZS5jcHAJKHJldmlzaW9uIDIwNjUyNCkKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9iMy9CM1N0YWNrbWFwVmFsdWUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC04
MywxMCArODMsMTAgQEAgdm9pZCBTdGFja21hcFZhbHVlOjpkdW1wTWV0YShDb21tYVByaW50ZQog
ICAgICAgICAiLCBsYXRlQ2xvYmJlcmVkID0gIiwgbV9sYXRlQ2xvYmJlcmVkLCAiLCB1c2VkUmVn
aXN0ZXJzID0gIiwgbV91c2VkUmVnaXN0ZXJzKTsKIH0KIAotU3RhY2ttYXBWYWx1ZTo6U3RhY2tt
YXBWYWx1ZShDaGVja2VkT3Bjb2RlVGFnLCBPcGNvZGUgb3Bjb2RlLCBUeXBlIHR5cGUsIE9yaWdp
biBvcmlnaW4pCi0gICAgOiBWYWx1ZShDaGVja2VkT3Bjb2RlLCBvcGNvZGUsIHR5cGUsIG9yaWdp
bikKK1N0YWNrbWFwVmFsdWU6OlN0YWNrbWFwVmFsdWUoQ2hlY2tlZE9wY29kZVRhZywgS2luZCBr
aW5kLCBUeXBlIHR5cGUsIE9yaWdpbiBvcmlnaW4pCisgICAgOiBWYWx1ZShDaGVja2VkT3Bjb2Rl
LCBraW5kLCB0eXBlLCBvcmlnaW4pCiB7Ci0gICAgQVNTRVJUKGFjY2VwdHMob3Bjb2RlKSk7Cisg
ICAgQVNTRVJUKGFjY2VwdHMoa2luZCkpOwogfQogCiB9IH0gLy8gbmFtZXNwYWNlIEpTQzo6QjMK
SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM1N0YWNrbWFwVmFsdWUuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNTdGFja21hcFZhbHVlLmgJKHJldmlz
aW9uIDIwNjUyNCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM1N0YWNrbWFwVmFsdWUu
aAkod29ya2luZyBjb3B5KQpAQCAtNDQsMTAgKzQ0LDEwIEBAIHR5cGVkZWYgU2hhcmVkVGFzazxT
dGFja21hcEdlbmVyYXRvckZ1bmMKIAogY2xhc3MgSlNfRVhQT1JUX1BSSVZBVEUgU3RhY2ttYXBW
YWx1ZSA6IHB1YmxpYyBWYWx1ZSB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIGJvb2wgYWNjZXB0cyhP
cGNvZGUgb3Bjb2RlKQorICAgIHN0YXRpYyBib29sIGFjY2VwdHMoS2luZCBraW5kKQogICAgIHsK
ICAgICAgICAgLy8gVGhpcyBuZWVkcyB0byBpbmNsdWRlIG9wY29kZXMgb2YgYWxsIHN1YmNsYXNz
ZXMuCi0gICAgICAgIHN3aXRjaCAob3Bjb2RlKSB7CisgICAgICAgIHN3aXRjaCAoa2luZC5vcGNv
ZGUoKSkgewogICAgICAgICBjYXNlIENoZWNrQWRkOgogICAgICAgICBjYXNlIENoZWNrU3ViOgog
ICAgICAgICBjYXNlIENoZWNrTXVsOgpAQCAtMjg5LDcgKzI4OSw3IEBAIHByb3RlY3RlZDoKICAg
ICB2b2lkIGR1bXBDaGlsZHJlbihDb21tYVByaW50ZXImLCBQcmludFN0cmVhbSYpIGNvbnN0IG92
ZXJyaWRlOwogICAgIHZvaWQgZHVtcE1ldGEoQ29tbWFQcmludGVyJiwgUHJpbnRTdHJlYW0mKSBj
b25zdCBvdmVycmlkZTsKIAotICAgIFN0YWNrbWFwVmFsdWUoQ2hlY2tlZE9wY29kZVRhZywgT3Bj
b2RlLCBUeXBlLCBPcmlnaW4pOworICAgIFN0YWNrbWFwVmFsdWUoQ2hlY2tlZE9wY29kZVRhZywg
S2luZCwgVHlwZSwgT3JpZ2luKTsKIAogcHJpdmF0ZToKICAgICBmcmllbmQgY2xhc3MgQ2hlY2tT
cGVjaWFsOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzU3dpdGNoVmFsdWUuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNTd2l0Y2hWYWx1ZS5oCShy
ZXZpc2lvbiAyMDY1MjQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNTd2l0Y2hWYWx1
ZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0zNiw3ICszNiw3IEBAIG5hbWVzcGFjZSBKU0MgeyBuYW1l
c3BhY2UgQjMgewogCiBjbGFzcyBTd2l0Y2hWYWx1ZSA6IHB1YmxpYyBWYWx1ZSB7CiBwdWJsaWM6
Ci0gICAgc3RhdGljIGJvb2wgYWNjZXB0cyhPcGNvZGUgb3Bjb2RlKSB7IHJldHVybiBvcGNvZGUg
PT0gU3dpdGNoOyB9CisgICAgc3RhdGljIGJvb2wgYWNjZXB0cyhLaW5kIGtpbmQpIHsgcmV0dXJu
IGtpbmQgPT0gU3dpdGNoOyB9CiAKICAgICB+U3dpdGNoVmFsdWUoKTsKIApJbmRleDogU291cmNl
L0phdmFTY3JpcHRDb3JlL2IzL0IzVXBzaWxvblZhbHVlLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL2IzL0IzVXBzaWxvblZhbHVlLmgJKHJldmlzaW9uIDIwNjUyNCkKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM1Vwc2lsb25WYWx1ZS5oCSh3b3JraW5nIGNvcHkp
CkBAIC0zNCw3ICszNCw3IEBAIG5hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgQjMgewogCiBjbGFz
cyBKU19FWFBPUlRfUFJJVkFURSBVcHNpbG9uVmFsdWUgOiBwdWJsaWMgVmFsdWUgewogcHVibGlj
OgotICAgIHN0YXRpYyBib29sIGFjY2VwdHMoT3Bjb2RlIG9wY29kZSkgeyByZXR1cm4gb3Bjb2Rl
ID09IFVwc2lsb247IH0KKyAgICBzdGF0aWMgYm9vbCBhY2NlcHRzKEtpbmQga2luZCkgeyByZXR1
cm4ga2luZCA9PSBVcHNpbG9uOyB9CiAKICAgICB+VXBzaWxvblZhbHVlKCk7CiAKSW5kZXg6IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM1ZhbGlkYXRlLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYjMvQjNWYWxpZGF0ZS5jcHAJKHJldmlzaW9uIDIwNjUyNCkKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM1ZhbGlkYXRlLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtMTgxLDYgKzE4MSwxMCBAQCBwdWJsaWM6CiAgICAgICAgICAgICBjYXNlIE1vZDoKICAgICAg
ICAgICAgIGNhc2UgQml0QW5kOgogICAgICAgICAgICAgY2FzZSBCaXRYb3I6CisgICAgICAgICAg
ICAgICAgaWYgKHZhbHVlLT5pc0NoaWxsKCkpIHsKKyAgICAgICAgICAgICAgICAgICAgVkFMSURB
VEUodmFsdWUtPm9wY29kZSgpID09IERpdiB8fCB2YWx1ZS0+b3Bjb2RlKCkgPT0gTW9kLCAoIkF0
ICIsICp2YWx1ZSkpOworICAgICAgICAgICAgICAgICAgICBWQUxJREFURShpc0ludCh2YWx1ZS0+
dHlwZSgpKSwgKCJBdCAiLCAqdmFsdWUpKTsKKyAgICAgICAgICAgICAgICB9CiAgICAgICAgICAg
ICAgICAgVkFMSURBVEUodmFsdWUtPm51bUNoaWxkcmVuKCkgPT0gMiwgKCJBdCAiLCAqdmFsdWUp
KTsKICAgICAgICAgICAgICAgICBWQUxJREFURSh2YWx1ZS0+dHlwZSgpID09IHZhbHVlLT5jaGls
ZCgwKS0+dHlwZSgpLCAoIkF0ICIsICp2YWx1ZSkpOwogICAgICAgICAgICAgICAgIFZBTElEQVRF
KHZhbHVlLT50eXBlKCkgPT0gdmFsdWUtPmNoaWxkKDEpLT50eXBlKCksICgiQXQgIiwgKnZhbHVl
KSk7CkBAIC0xOTEsOCArMTk1LDYgQEAgcHVibGljOgogICAgICAgICAgICAgICAgIFZBTElEQVRF
KHZhbHVlLT50eXBlKCkgPT0gdmFsdWUtPmNoaWxkKDApLT50eXBlKCksICgiQXQgIiwgKnZhbHVl
KSk7CiAgICAgICAgICAgICAgICAgVkFMSURBVEUodmFsdWUtPnR5cGUoKSAhPSBWb2lkLCAoIkF0
ICIsICp2YWx1ZSkpOwogICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgY2FzZSBD
aGlsbERpdjoKLSAgICAgICAgICAgIGNhc2UgQ2hpbGxNb2Q6CiAgICAgICAgICAgICBjYXNlIEJp
dE9yOgogICAgICAgICAgICAgICAgIFZBTElEQVRFKHZhbHVlLT5udW1DaGlsZHJlbigpID09IDIs
ICgiQXQgIiwgKnZhbHVlKSk7CiAgICAgICAgICAgICAgICAgVkFMSURBVEUodmFsdWUtPnR5cGUo
KSA9PSB2YWx1ZS0+Y2hpbGQoMCktPnR5cGUoKSwgKCJBdCAiLCAqdmFsdWUpKTsKSW5kZXg6IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM1ZhbHVlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYjMvQjNWYWx1ZS5jcHAJKHJldmlzaW9uIDIwNjUyNCkKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9iMy9CM1ZhbHVlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTc1LDcg
KzE3NSw3IEBAIHZvaWQgVmFsdWU6OmR1bXAoUHJpbnRTdHJlYW0mIG91dCkgY29uc3QKIHsKICAg
ICBib29sIGlzQ29uc3RhbnQgPSBmYWxzZTsKIAotICAgIHN3aXRjaCAobV9vcGNvZGUpIHsKKyAg
ICBzd2l0Y2ggKG9wY29kZSgpKSB7CiAgICAgY2FzZSBDb25zdDMyOgogICAgICAgICBvdXQucHJp
bnQoIiQiLCBhc0ludDMyKCksICIoIik7CiAgICAgICAgIGlzQ29uc3RhbnQgPSB0cnVlOwpAQCAt
MjE1LDcgKzIxNSw3IEBAIHZvaWQgVmFsdWU6OmR1bXBDaGlsZHJlbihDb21tYVByaW50ZXImIGMK
IAogdm9pZCBWYWx1ZTo6ZGVlcER1bXAoY29uc3QgUHJvY2VkdXJlKiBwcm9jLCBQcmludFN0cmVh
bSYgb3V0KSBjb25zdAogewotICAgIG91dC5wcmludChtX3R5cGUsICIgIiwgZHVtcFByZWZpeCwg
bV9pbmRleCwgIiA9ICIsIG1fb3Bjb2RlKTsKKyAgICBvdXQucHJpbnQobV90eXBlLCAiICIsIGR1
bXBQcmVmaXgsIG1faW5kZXgsICIgPSAiLCBtX2tpbmQpOwogCiAgICAgb3V0LnByaW50KCIoIik7
CiAgICAgQ29tbWFQcmludGVyIGNvbW1hOwpAQCAtNDM3LDggKzQzNywxMCBAQCBWYWx1ZSogVmFs
dWU6OmludmVydGVkQ29tcGFyZShQcm9jZWR1cmUmCiB7CiAgICAgaWYgKCFudW1DaGlsZHJlbigp
KQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKLSAgICBpZiAoT3B0aW9uYWw8T3Bjb2RlPiBpbnZl
cnRlZE9wY29kZSA9IEIzOjppbnZlcnRlZENvbXBhcmUob3Bjb2RlKCksIGNoaWxkKDApLT50eXBl
KCkpKQorICAgIGlmIChPcHRpb25hbDxPcGNvZGU+IGludmVydGVkT3Bjb2RlID0gQjM6OmludmVy
dGVkQ29tcGFyZShvcGNvZGUoKSwgY2hpbGQoMCktPnR5cGUoKSkpIHsKKyAgICAgICAgQVNTRVJU
KCFraW5kKCkuaGFzRXh0cmFCaXRzKCkpOwogICAgICAgICByZXR1cm4gcHJvYy5hZGQ8VmFsdWU+
KCppbnZlcnRlZE9wY29kZSwgdHlwZSgpLCBvcmlnaW4oKSwgY2hpbGRyZW4oKSk7CisgICAgfQog
ICAgIHJldHVybiBudWxscHRyOwogfQogCkBAIC01MzIsOCArNTM0LDYgQEAgRWZmZWN0cyBWYWx1
ZTo6ZWZmZWN0cygpIGNvbnN0CiAgICAgY2FzZSBTdWI6CiAgICAgY2FzZSBNdWw6CiAgICAgY2Fz
ZSBOZWc6Ci0gICAgY2FzZSBDaGlsbERpdjoKLSAgICBjYXNlIENoaWxsTW9kOgogICAgIGNhc2Ug
Qml0QW5kOgogICAgIGNhc2UgQml0T3I6CiAgICAgY2FzZSBCaXRYb3I6CkBAIC02NDIsNyArNjQy
LDcgQEAgVmFsdWVLZXkgVmFsdWU6OmtleSgpIGNvbnN0CiB7CiAgICAgc3dpdGNoIChvcGNvZGUo
KSkgewogICAgIGNhc2UgRnJhbWVQb2ludGVyOgotICAgICAgICByZXR1cm4gVmFsdWVLZXkob3Bj
b2RlKCksIHR5cGUoKSk7CisgICAgICAgIHJldHVybiBWYWx1ZUtleShraW5kKCksIHR5cGUoKSk7
CiAgICAgY2FzZSBJZGVudGl0eToKICAgICBjYXNlIEFiczoKICAgICBjYXNlIENlaWw6CkBAIC02
NjEsMTQgKzY2MSwxMiBAQCBWYWx1ZUtleSBWYWx1ZTo6a2V5KCkgY29uc3QKICAgICBjYXNlIENo
ZWNrOgogICAgIGNhc2UgQml0d2lzZUNhc3Q6CiAgICAgY2FzZSBOZWc6Ci0gICAgICAgIHJldHVy
biBWYWx1ZUtleShvcGNvZGUoKSwgdHlwZSgpLCBjaGlsZCgwKSk7CisgICAgICAgIHJldHVybiBW
YWx1ZUtleShraW5kKCksIHR5cGUoKSwgY2hpbGQoMCkpOwogICAgIGNhc2UgQWRkOgogICAgIGNh
c2UgU3ViOgogICAgIGNhc2UgTXVsOgogICAgIGNhc2UgRGl2OgogICAgIGNhc2UgTW9kOgotICAg
IGNhc2UgQ2hpbGxEaXY6Ci0gICAgY2FzZSBDaGlsbE1vZDoKICAgICBjYXNlIEJpdEFuZDoKICAg
ICBjYXNlIEJpdE9yOgogICAgIGNhc2UgQml0WG9yOgpAQCAtNjg3LDkgKzY4NSw5IEBAIFZhbHVl
S2V5IFZhbHVlOjprZXkoKSBjb25zdAogICAgIGNhc2UgQ2hlY2tBZGQ6CiAgICAgY2FzZSBDaGVj
a1N1YjoKICAgICBjYXNlIENoZWNrTXVsOgotICAgICAgICByZXR1cm4gVmFsdWVLZXkob3Bjb2Rl
KCksIHR5cGUoKSwgY2hpbGQoMCksIGNoaWxkKDEpKTsKKyAgICAgICAgcmV0dXJuIFZhbHVlS2V5
KGtpbmQoKSwgdHlwZSgpLCBjaGlsZCgwKSwgY2hpbGQoMSkpOwogICAgIGNhc2UgU2VsZWN0Ogot
ICAgICAgICByZXR1cm4gVmFsdWVLZXkob3Bjb2RlKCksIHR5cGUoKSwgY2hpbGQoMCksIGNoaWxk
KDEpLCBjaGlsZCgyKSk7CisgICAgICAgIHJldHVybiBWYWx1ZUtleShraW5kKCksIHR5cGUoKSwg
Y2hpbGQoMCksIGNoaWxkKDEpLCBjaGlsZCgyKSk7CiAgICAgY2FzZSBDb25zdDMyOgogICAgICAg
ICByZXR1cm4gVmFsdWVLZXkoQ29uc3QzMiwgdHlwZSgpLCBzdGF0aWNfY2FzdDxpbnQ2NF90Pihh
c0ludDMyKCkpKTsKICAgICBjYXNlIENvbnN0NjQ6CkBAIC03MzgsOSArNzM2LDkgQEAgdm9pZCBW
YWx1ZTo6ZHVtcE1ldGEoQ29tbWFQcmludGVyJiwgUHJpbgogewogfQogCi1UeXBlIFZhbHVlOjp0
eXBlRm9yKE9wY29kZSBvcGNvZGUsIFZhbHVlKiBmaXJzdENoaWxkLCBWYWx1ZSogc2Vjb25kQ2hp
bGQpCitUeXBlIFZhbHVlOjp0eXBlRm9yKEtpbmQga2luZCwgVmFsdWUqIGZpcnN0Q2hpbGQsIFZh
bHVlKiBzZWNvbmRDaGlsZCkKIHsKLSAgICBzd2l0Y2ggKG9wY29kZSkgeworICAgIHN3aXRjaCAo
a2luZC5vcGNvZGUoKSkgewogICAgIGNhc2UgSWRlbnRpdHk6CiAgICAgY2FzZSBBZGQ6CiAgICAg
Y2FzZSBTdWI6CkBAIC03NDgsOCArNzQ2LDYgQEAgVHlwZSBWYWx1ZTo6dHlwZUZvcihPcGNvZGUg
b3Bjb2RlLCBWYWx1ZQogICAgIGNhc2UgRGl2OgogICAgIGNhc2UgTW9kOgogICAgIGNhc2UgTmVn
OgotICAgIGNhc2UgQ2hpbGxEaXY6Ci0gICAgY2FzZSBDaGlsbE1vZDoKICAgICBjYXNlIEJpdEFu
ZDoKICAgICBjYXNlIEJpdE9yOgogICAgIGNhc2UgQml0WG9yOgpAQCAtODIwLDkgKzgxNiw5IEBA
IFR5cGUgVmFsdWU6OnR5cGVGb3IoT3Bjb2RlIG9wY29kZSwgVmFsdWUKICAgICB9CiB9CiAKLXZv
aWQgVmFsdWU6OmJhZE9wY29kZShPcGNvZGUgb3Bjb2RlLCB1bnNpZ25lZCBudW1BcmdzKQordm9p
ZCBWYWx1ZTo6YmFkS2luZChLaW5kIGtpbmQsIHVuc2lnbmVkIG51bUFyZ3MpCiB7Ci0gICAgZGF0
YUxvZygiQmFkIG9wY29kZSAiLCBvcGNvZGUsICIgd2l0aCAiLCBudW1BcmdzLCAiIGFyZ3MuXG4i
KTsKKyAgICBkYXRhTG9nKCJCYWQga2luZCAiLCBraW5kLCAiIHdpdGggIiwgbnVtQXJncywgIiBh
cmdzLlxuIik7CiAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKIH0KIApJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzVmFsdWUuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYjMvQjNWYWx1ZS5oCShyZXZpc2lvbiAyMDY1MjQpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYjMvQjNWYWx1ZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMSw3ICszMSw3
IEBACiAjaW5jbHVkZSAiQWlyQXJnLmgiCiAjaW5jbHVkZSAiQjNFZmZlY3RzLmgiCiAjaW5jbHVk
ZSAiQjNGcmVxdWVudGVkQmxvY2suaCIKLSNpbmNsdWRlICJCM09wY29kZS5oIgorI2luY2x1ZGUg
IkIzS2luZC5oIgogI2luY2x1ZGUgIkIzT3JpZ2luLmgiCiAjaW5jbHVkZSAiQjNTcGFyc2VDb2xs
ZWN0aW9uLmgiCiAjaW5jbHVkZSAiQjNUeXBlLmgiCkBAIC01NSwxNSArNTUsMjEgQEAgcHVibGlj
OgogCiAgICAgc3RhdGljIGNvbnN0IGNoYXIqIGNvbnN0IGR1bXBQcmVmaXg7CiAKLSAgICBzdGF0
aWMgYm9vbCBhY2NlcHRzKE9wY29kZSkgeyByZXR1cm4gdHJ1ZTsgfQorICAgIHN0YXRpYyBib29s
IGFjY2VwdHMoS2luZCkgeyByZXR1cm4gdHJ1ZTsgfQogCiAgICAgdmlydHVhbCB+VmFsdWUoKTsK
IAogICAgIHVuc2lnbmVkIGluZGV4KCkgY29uc3QgeyByZXR1cm4gbV9pbmRleDsgfQogICAgIAot
ICAgIC8vIE5vdGUgdGhhdCB0aGUgb3Bjb2RlIGlzIGltbXV0YWJsZSwgZXhjZXB0IGZvciByZXBs
YWNpbmcgdmFsdWVzIHdpdGg6CisgICAgLy8gTm90ZSB0aGF0IHRoZSBraW5kIGlzIGltbXV0YWJs
ZSwgZXhjZXB0IGZvciByZXBsYWNpbmcgdmFsdWVzIHdpdGg6CiAgICAgLy8gSWRlbnRpdHksIE5v
cCwgT29wcywgSnVtcCwgYW5kIFBoaS4gU2VlIGJlbG93IGZvciByZXBsYWNlV2l0aFhYWCgpIG1l
dGhvZHMuCi0gICAgT3Bjb2RlIG9wY29kZSgpIGNvbnN0IHsgcmV0dXJuIG1fb3Bjb2RlOyB9Cisg
ICAgS2luZCBraW5kKCkgY29uc3QgeyByZXR1cm4gbV9raW5kOyB9CisgICAgCisgICAgT3Bjb2Rl
IG9wY29kZSgpIGNvbnN0IHsgcmV0dXJuIGtpbmQoKS5vcGNvZGUoKTsgfQorICAgIAorICAgIC8v
IEl0J3MgZ29vZCBwcmFjdGljZSB0byBtaXJyb3IgS2luZCBtZXRob2RzIGhlcmUsIHNvIHlvdSBj
YW4gc2F5IHZhbHVlLT5pc0JsYWgoKQorICAgIC8vIGluc3RlYWQgb2YgdmFsdWUtPmtpbmQoKS5p
c0JsYWgoKS4KKyAgICBib29sIGlzQ2hpbGwoKSBjb25zdCB7IHJldHVybiBraW5kKCkuaXNDaGls
bCgpOyB9CiAKICAgICBPcmlnaW4gb3JpZ2luKCkgY29uc3QgeyByZXR1cm4gbV9vcmlnaW47IH0K
ICAgICB2b2lkIHNldE9yaWdpbihPcmlnaW4gb3JpZ2luKSB7IG1fb3JpZ2luID0gb3JpZ2luOyB9
CkBAIC0xMzIsOCArMTM4LDggQEAgcHVibGljOgogICAgIC8vICAgICB0aGluZ3MKICAgICAvLyB9
CiAgICAgLy8KLSAgICAvLyBUaGlzIHdpbGwgcmV0dXJuIG51bGwgaWYgdGhpcyBvcGNvZGUoKSAh
PSBBcmd1bWVudFJlZy4gVGhpcyB3b3JrcyBiZWNhdXNlIHRoaXMgcmV0dXJucyBudWxscHRyCi0g
ICAgLy8gaWYgVDo6YWNjZXB0cyhvcGNvZGUoKSkgcmV0dXJucyBmYWxzZS4KKyAgICAvLyBUaGlz
IHdpbGwgcmV0dXJuIG51bGwgaWYgdGhpcyBraW5kKCkgIT0gQXJndW1lbnRSZWcuIFRoaXMgd29y
a3MgYmVjYXVzZSB0aGlzIHJldHVybnMgbnVsbHB0cgorICAgIC8vIGlmIFQ6OmFjY2VwdHMoa2lu
ZCgpKSByZXR1cm5zIGZhbHNlLgogICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+CiAgICAgVCogYXMo
KTsKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPgpAQCAtMTQyLDcgKzE0OCw3IEBAIHB1YmxpYzoK
ICAgICAvLyBXaGF0IGZvbGxvd3MgYXJlIGEgYnVuY2ggb2YgaGVscGVycyBmb3IgaW5zcGVjdGlu
ZyBhbmQgbW9kaWZ5aW5nIHZhbHVlcy4gTm90ZSB0aGF0IHdlIGhhdmUgYQogICAgIC8vIGJ1bmNo
IG9mIGRpZmZlcmVudCBpZGlvbXMgZm9yIGltcGxlbWVudGluZyBzdWNoIGhlbHBlcnMuIFlvdSBj
YW4gdXNlIHZpcnR1YWwgbWV0aG9kcywgYW5kCiAgICAgLy8gb3ZlcnJpZGUgZnJvbSB0aGUgdmFy
aW91cyBWYWx1ZSBzdWJjbGFzc2VzLiBZb3UgY2FuIHB1dCB0aGUgbWV0aG9kIGluc2lkZSBWYWx1
ZSBhbmQgbWFrZSBpdAotICAgIC8vIG5vbi12aXJ0dWFsLCBhbmQgdGhlIGltcGxlbWVudGF0aW9u
IGNhbiBzd2l0Y2ggb24gb3Bjb2RlLiBUaGUgbWV0aG9kIGNvdWxkIGJlIGlubGluZSBvciBub3Qu
CisgICAgLy8gbm9uLXZpcnR1YWwsIGFuZCB0aGUgaW1wbGVtZW50YXRpb24gY2FuIHN3aXRjaCBv
biBraW5kLiBUaGUgbWV0aG9kIGNvdWxkIGJlIGlubGluZSBvciBub3QuCiAgICAgLy8gSWYgYSBt
ZXRob2QgaXMgc3BlY2lmaWMgdG8gc29tZSBWYWx1ZSBzdWJjbGFzcywgeW91IGNvdWxkIHB1dCBp
dCBpbiB0aGUgc3ViY2xhc3MsIG9yIHlvdSBjb3VsZAogICAgIC8vIHB1dCBpdCBvbiBWYWx1ZSBh
bnl3YXkuIEl0J3MgZmluZSB0byBwaWNrIHdoYXRldmVyIGZlZWxzIHJpZ2h0LCBhbmQgd2Ugc2hv
dWxkbid0IHJlc3RyaWN0CiAgICAgLy8gb3Vyc2VsdmVzIHRvIGFueSBwYXJ0aWN1bGFyIGlkaW9t
LgpAQCAtMTU5LDggKzE2NSw4IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIFZhbHVlKiBjaGVja1N1
YkNvbnN0YW50KFByb2NlZHVyZSYsIGNvbnN0IFZhbHVlKiBvdGhlcikgY29uc3Q7CiAgICAgdmly
dHVhbCBWYWx1ZSogY2hlY2tNdWxDb25zdGFudChQcm9jZWR1cmUmLCBjb25zdCBWYWx1ZSogb3Ro
ZXIpIGNvbnN0OwogICAgIHZpcnR1YWwgVmFsdWUqIGNoZWNrTmVnQ29uc3RhbnQoUHJvY2VkdXJl
JikgY29uc3Q7Ci0gICAgdmlydHVhbCBWYWx1ZSogZGl2Q29uc3RhbnQoUHJvY2VkdXJlJiwgY29u
c3QgVmFsdWUqIG90aGVyKSBjb25zdDsgLy8gVGhpcyBjaG9vc2VzIENoaWxsRGl2IHNlbWFudGlj
cyBmb3IgaW50ZWdlcnMuCi0gICAgdmlydHVhbCBWYWx1ZSogbW9kQ29uc3RhbnQoUHJvY2VkdXJl
JiwgY29uc3QgVmFsdWUqIG90aGVyKSBjb25zdDsgLy8gVGhpcyBjaG9vc2VzIENoaWxsTW9kIHNl
bWFudGljcy4KKyAgICB2aXJ0dWFsIFZhbHVlKiBkaXZDb25zdGFudChQcm9jZWR1cmUmLCBjb25z
dCBWYWx1ZSogb3RoZXIpIGNvbnN0OyAvLyBUaGlzIGNob29zZXMgRGl2PENoaWxsPiBzZW1hbnRp
Y3MgZm9yIGludGVnZXJzLgorICAgIHZpcnR1YWwgVmFsdWUqIG1vZENvbnN0YW50KFByb2NlZHVy
ZSYsIGNvbnN0IFZhbHVlKiBvdGhlcikgY29uc3Q7IC8vIFRoaXMgY2hvb3NlcyBNb2Q8Q2hpbGw+
IHNlbWFudGljcy4KICAgICB2aXJ0dWFsIFZhbHVlKiBiaXRBbmRDb25zdGFudChQcm9jZWR1cmUm
LCBjb25zdCBWYWx1ZSogb3RoZXIpIGNvbnN0OwogICAgIHZpcnR1YWwgVmFsdWUqIGJpdE9yQ29u
c3RhbnQoUHJvY2VkdXJlJiwgY29uc3QgVmFsdWUqIG90aGVyKSBjb25zdDsKICAgICB2aXJ0dWFs
IFZhbHVlKiBiaXRYb3JDb25zdGFudChQcm9jZWR1cmUmLCBjb25zdCBWYWx1ZSogb3RoZXIpIGNv
bnN0OwpAQCAtMjc0LDEwICsyODAsMTAgQEAgcHJpdmF0ZToKICAgICBmcmllbmQgY2xhc3MgUHJv
Y2VkdXJlOwogICAgIGZyaWVuZCBjbGFzcyBTcGFyc2VDb2xsZWN0aW9uPFZhbHVlPjsKIAotICAg
IC8vIENoZWNrcyB0aGF0IHRoaXMgb3Bjb2RlIGlzIHZhbGlkIGZvciB1c2Ugd2l0aCBCMzo6VmFs
dWUuCi0gICAgQUxXQVlTX0lOTElORSBzdGF0aWMgdm9pZCBjaGVja09wY29kZShPcGNvZGUgb3Bj
b2RlLCB1bnNpZ25lZCBudW1BcmdzKQorICAgIC8vIENoZWNrcyB0aGF0IHRoaXMga2luZCBpcyB2
YWxpZCBmb3IgdXNlIHdpdGggQjM6OlZhbHVlLgorICAgIEFMV0FZU19JTkxJTkUgc3RhdGljIHZv
aWQgY2hlY2tLaW5kKEtpbmQga2luZCwgdW5zaWduZWQgbnVtQXJncykKICAgICB7Ci0gICAgICAg
IHN3aXRjaCAob3Bjb2RlKSB7CisgICAgICAgIHN3aXRjaCAoa2luZC5vcGNvZGUoKSkgewogICAg
ICAgICBjYXNlIEZyYW1lUG9pbnRlcjoKICAgICAgICAgY2FzZSBOb3A6CiAgICAgICAgIGNhc2Ug
UGhpOgpAQCAtMjg1LDExICsyOTEsMTEgQEAgcHJpdmF0ZToKICAgICAgICAgY2FzZSBPb3BzOgog
ICAgICAgICBjYXNlIEVudHJ5U3dpdGNoOgogICAgICAgICAgICAgaWYgKFVOTElLRUxZKG51bUFy
Z3MpKQotICAgICAgICAgICAgICAgIGJhZE9wY29kZShvcGNvZGUsIG51bUFyZ3MpOworICAgICAg
ICAgICAgICAgIGJhZEtpbmQoa2luZCwgbnVtQXJncyk7CiAgICAgICAgICAgICBicmVhazsKICAg
ICAgICAgY2FzZSBSZXR1cm46CiAgICAgICAgICAgICBpZiAoVU5MSUtFTFkobnVtQXJncyA+IDEp
KQotICAgICAgICAgICAgICAgIGJhZE9wY29kZShvcGNvZGUsIG51bUFyZ3MpOworICAgICAgICAg
ICAgICAgIGJhZEtpbmQoa2luZCwgbnVtQXJncyk7CiAgICAgICAgICAgICBicmVhazsKICAgICAg
ICAgY2FzZSBJZGVudGl0eToKICAgICAgICAgY2FzZSBOZWc6CkBAIC0zMTAsMTUgKzMxNiwxMyBA
QCBwcml2YXRlOgogICAgICAgICBjYXNlIEJpdHdpc2VDYXN0OgogICAgICAgICBjYXNlIEJyYW5j
aDoKICAgICAgICAgICAgIGlmIChVTkxJS0VMWShudW1BcmdzICE9IDEpKQotICAgICAgICAgICAg
ICAgIGJhZE9wY29kZShvcGNvZGUsIG51bUFyZ3MpOworICAgICAgICAgICAgICAgIGJhZEtpbmQo
a2luZCwgbnVtQXJncyk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBBZGQ6CiAg
ICAgICAgIGNhc2UgU3ViOgogICAgICAgICBjYXNlIE11bDoKICAgICAgICAgY2FzZSBEaXY6CiAg
ICAgICAgIGNhc2UgTW9kOgotICAgICAgICBjYXNlIENoaWxsRGl2OgotICAgICAgICBjYXNlIENo
aWxsTW9kOgogICAgICAgICBjYXNlIEJpdEFuZDoKICAgICAgICAgY2FzZSBCaXRPcjoKICAgICAg
ICAgY2FzZSBCaXRYb3I6CkBAIC0zMzcsMTQgKzM0MSwxNCBAQCBwcml2YXRlOgogICAgICAgICBj
YXNlIEJlbG93RXF1YWw6CiAgICAgICAgIGNhc2UgRXF1YWxPclVub3JkZXJlZDoKICAgICAgICAg
ICAgIGlmIChVTkxJS0VMWShudW1BcmdzICE9IDIpKQotICAgICAgICAgICAgICAgIGJhZE9wY29k
ZShvcGNvZGUsIG51bUFyZ3MpOworICAgICAgICAgICAgICAgIGJhZEtpbmQoa2luZCwgbnVtQXJn
cyk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBTZWxlY3Q6CiAgICAgICAgICAg
ICBpZiAoVU5MSUtFTFkobnVtQXJncyAhPSAzKSkKLSAgICAgICAgICAgICAgICBiYWRPcGNvZGUo
b3Bjb2RlLCBudW1BcmdzKTsKKyAgICAgICAgICAgICAgICBiYWRLaW5kKGtpbmQsIG51bUFyZ3Mp
OwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGRlZmF1bHQ6Ci0gICAgICAgICAgICBiYWRP
cGNvZGUob3Bjb2RlLCBudW1BcmdzKTsKKyAgICAgICAgICAgIGJhZEtpbmQoa2luZCwgbnVtQXJn
cyk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogICAgIH0KQEAgLTM1OCw1NiArMzYy
LDU2IEBAIHByb3RlY3RlZDoKICAgICAvLyBJbnN0YW50aWF0ZSB2YWx1ZXMgdmlhIFByb2NlZHVy
ZS4KICAgICAvLyBUaGlzIGZvcm0gcmVxdWlyZXMgc3BlY2lmeWluZyB0aGUgdHlwZSBleHBsaWNp
dGx5OgogICAgIHRlbXBsYXRlPHR5cGVuYW1lLi4uIEFyZ3VtZW50cz4KLSAgICBleHBsaWNpdCBW
YWx1ZShDaGVja2VkT3Bjb2RlVGFnLCBPcGNvZGUgb3Bjb2RlLCBUeXBlIHR5cGUsIE9yaWdpbiBv
cmlnaW4sIFZhbHVlKiBmaXJzdENoaWxkLCBBcmd1bWVudHMuLi4gYXJndW1lbnRzKQotICAgICAg
ICA6IG1fb3Bjb2RlKG9wY29kZSkKKyAgICBleHBsaWNpdCBWYWx1ZShDaGVja2VkT3Bjb2RlVGFn
LCBLaW5kIGtpbmQsIFR5cGUgdHlwZSwgT3JpZ2luIG9yaWdpbiwgVmFsdWUqIGZpcnN0Q2hpbGQs
IEFyZ3VtZW50cy4uLiBhcmd1bWVudHMpCisgICAgICAgIDogbV9raW5kKGtpbmQpCiAgICAgICAg
ICwgbV90eXBlKHR5cGUpCiAgICAgICAgICwgbV9vcmlnaW4ob3JpZ2luKQogICAgICAgICAsIG1f
Y2hpbGRyZW57IGZpcnN0Q2hpbGQsIGFyZ3VtZW50cy4uLiB9CiAgICAgewogICAgIH0KICAgICAv
LyBUaGlzIGZvcm0gaXMgZm9yIHNwZWNpZnlpbmcgdGhlIHR5cGUgZXhwbGljaXRseSB3aGVuIHRo
ZSBvcGNvZGUgaGFzIG5vIGNoaWxkcmVuOgotICAgIGV4cGxpY2l0IFZhbHVlKENoZWNrZWRPcGNv
ZGVUYWcsIE9wY29kZSBvcGNvZGUsIFR5cGUgdHlwZSwgT3JpZ2luIG9yaWdpbikKLSAgICAgICAg
OiBtX29wY29kZShvcGNvZGUpCisgICAgZXhwbGljaXQgVmFsdWUoQ2hlY2tlZE9wY29kZVRhZywg
S2luZCBraW5kLCBUeXBlIHR5cGUsIE9yaWdpbiBvcmlnaW4pCisgICAgICAgIDogbV9raW5kKGtp
bmQpCiAgICAgICAgICwgbV90eXBlKHR5cGUpCiAgICAgICAgICwgbV9vcmlnaW4ob3JpZ2luKQog
ICAgIHsKICAgICB9CiAgICAgLy8gVGhpcyBmb3JtIGlzIGZvciB0aG9zZSBvcGNvZGVzIHRoYXQg
Y2FuIGluZmVyIHRoZWlyIHR5cGUgZnJvbSB0aGUgb3Bjb2RlIGFuZCBmaXJzdCBjaGlsZDoKICAg
ICB0ZW1wbGF0ZTx0eXBlbmFtZS4uLiBBcmd1bWVudHM+Ci0gICAgZXhwbGljaXQgVmFsdWUoQ2hl
Y2tlZE9wY29kZVRhZywgT3Bjb2RlIG9wY29kZSwgT3JpZ2luIG9yaWdpbiwgVmFsdWUqIGZpcnN0
Q2hpbGQpCi0gICAgICAgIDogbV9vcGNvZGUob3Bjb2RlKQotICAgICAgICAsIG1fdHlwZSh0eXBl
Rm9yKG9wY29kZSwgZmlyc3RDaGlsZCkpCisgICAgZXhwbGljaXQgVmFsdWUoQ2hlY2tlZE9wY29k
ZVRhZywgS2luZCBraW5kLCBPcmlnaW4gb3JpZ2luLCBWYWx1ZSogZmlyc3RDaGlsZCkKKyAgICAg
ICAgOiBtX2tpbmQoa2luZCkKKyAgICAgICAgLCBtX3R5cGUodHlwZUZvcihraW5kLCBmaXJzdENo
aWxkKSkKICAgICAgICAgLCBtX29yaWdpbihvcmlnaW4pCiAgICAgICAgICwgbV9jaGlsZHJlbnsg
Zmlyc3RDaGlsZCB9CiAgICAgewogICAgIH0KICAgICAvLyBUaGlzIGZvcm0gaXMgZm9yIHRob3Nl
IG9wY29kZXMgdGhhdCBjYW4gaW5mZXIgdGhlaXIgdHlwZSBmcm9tIHRoZSBvcGNvZGUgYW5kIGZp
cnN0IGFuZCBzZWNvbmQgY2hpbGQ6CiAgICAgdGVtcGxhdGU8dHlwZW5hbWUuLi4gQXJndW1lbnRz
PgotICAgIGV4cGxpY2l0IFZhbHVlKENoZWNrZWRPcGNvZGVUYWcsIE9wY29kZSBvcGNvZGUsIE9y
aWdpbiBvcmlnaW4sIFZhbHVlKiBmaXJzdENoaWxkLCBWYWx1ZSogc2Vjb25kQ2hpbGQsIEFyZ3Vt
ZW50cy4uLiBhcmd1bWVudHMpCi0gICAgICAgIDogbV9vcGNvZGUob3Bjb2RlKQotICAgICAgICAs
IG1fdHlwZSh0eXBlRm9yKG9wY29kZSwgZmlyc3RDaGlsZCwgc2Vjb25kQ2hpbGQpKQorICAgIGV4
cGxpY2l0IFZhbHVlKENoZWNrZWRPcGNvZGVUYWcsIEtpbmQga2luZCwgT3JpZ2luIG9yaWdpbiwg
VmFsdWUqIGZpcnN0Q2hpbGQsIFZhbHVlKiBzZWNvbmRDaGlsZCwgQXJndW1lbnRzLi4uIGFyZ3Vt
ZW50cykKKyAgICAgICAgOiBtX2tpbmQoa2luZCkKKyAgICAgICAgLCBtX3R5cGUodHlwZUZvcihr
aW5kLCBmaXJzdENoaWxkLCBzZWNvbmRDaGlsZCkpCiAgICAgICAgICwgbV9vcmlnaW4ob3JpZ2lu
KQogICAgICAgICAsIG1fY2hpbGRyZW57IGZpcnN0Q2hpbGQsIHNlY29uZENoaWxkLCBhcmd1bWVu
dHMuLi4gfQogICAgIHsKICAgICB9CiAgICAgLy8gVGhpcyBmb3JtIGlzIGZvciB0aG9zZSBvcGNv
ZGVzIHRoYXQgY2FuIGluZmVyIHRoZWlyIHR5cGUgZnJvbSB0aGUgb3Bjb2RlIGFsb25lLCBhbmQg
dGhhdCBkb24ndAogICAgIC8vIHRha2UgYW55IGFyZ3VtZW50czoKLSAgICBleHBsaWNpdCBWYWx1
ZShDaGVja2VkT3Bjb2RlVGFnLCBPcGNvZGUgb3Bjb2RlLCBPcmlnaW4gb3JpZ2luKQotICAgICAg
ICA6IG1fb3Bjb2RlKG9wY29kZSkKLSAgICAgICAgLCBtX3R5cGUodHlwZUZvcihvcGNvZGUsIG51
bGxwdHIpKQorICAgIGV4cGxpY2l0IFZhbHVlKENoZWNrZWRPcGNvZGVUYWcsIEtpbmQga2luZCwg
T3JpZ2luIG9yaWdpbikKKyAgICAgICAgOiBtX2tpbmQoa2luZCkKKyAgICAgICAgLCBtX3R5cGUo
dHlwZUZvcihraW5kLCBudWxscHRyKSkKICAgICAgICAgLCBtX29yaWdpbihvcmlnaW4pCiAgICAg
ewogICAgIH0KICAgICAvLyBVc2UgdGhpcyBmb3JtIGZvciB2YXJhcmdzLgotICAgIGV4cGxpY2l0
IFZhbHVlKENoZWNrZWRPcGNvZGVUYWcsIE9wY29kZSBvcGNvZGUsIFR5cGUgdHlwZSwgT3JpZ2lu
IG9yaWdpbiwgY29uc3QgQWRqYWNlbmN5TGlzdCYgY2hpbGRyZW4pCi0gICAgICAgIDogbV9vcGNv
ZGUob3Bjb2RlKQorICAgIGV4cGxpY2l0IFZhbHVlKENoZWNrZWRPcGNvZGVUYWcsIEtpbmQga2lu
ZCwgVHlwZSB0eXBlLCBPcmlnaW4gb3JpZ2luLCBjb25zdCBBZGphY2VuY3lMaXN0JiBjaGlsZHJl
bikKKyAgICAgICAgOiBtX2tpbmQoa2luZCkKICAgICAgICAgLCBtX3R5cGUodHlwZSkKICAgICAg
ICAgLCBtX29yaWdpbihvcmlnaW4pCiAgICAgICAgICwgbV9jaGlsZHJlbihjaGlsZHJlbikKICAg
ICB7CiAgICAgfQotICAgIGV4cGxpY2l0IFZhbHVlKENoZWNrZWRPcGNvZGVUYWcsIE9wY29kZSBv
cGNvZGUsIFR5cGUgdHlwZSwgT3JpZ2luIG9yaWdpbiwgQWRqYWNlbmN5TGlzdCYmIGNoaWxkcmVu
KQotICAgICAgICA6IG1fb3Bjb2RlKG9wY29kZSkKKyAgICBleHBsaWNpdCBWYWx1ZShDaGVja2Vk
T3Bjb2RlVGFnLCBLaW5kIGtpbmQsIFR5cGUgdHlwZSwgT3JpZ2luIG9yaWdpbiwgQWRqYWNlbmN5
TGlzdCYmIGNoaWxkcmVuKQorICAgICAgICA6IG1fa2luZChraW5kKQogICAgICAgICAsIG1fdHlw
ZSh0eXBlKQogICAgICAgICAsIG1fb3JpZ2luKG9yaWdpbikKICAgICAgICAgLCBtX2NoaWxkcmVu
KFdURk1vdmUoY2hpbGRyZW4pKQpAQCAtNDE3LDUyICs0MjEsNTIgQEAgcHJvdGVjdGVkOgogICAg
IC8vIFRoaXMgaXMgdGhlIGNvbnN0cnVjdG9yIHlvdSBlbmQgdXAgYWN0dWFsbHkgY2FsbGluZywg
aWYgeW91J3JlIGluc3RhbnRpYXRpbmcgVmFsdWUKICAgICAvLyBkaXJlY3RseS4KICAgICB0ZW1w
bGF0ZTx0eXBlbmFtZS4uLiBBcmd1bWVudHM+Ci0gICAgICAgIGV4cGxpY2l0IFZhbHVlKE9wY29k
ZSBvcGNvZGUsIFR5cGUgdHlwZSwgT3JpZ2luIG9yaWdpbikKLSAgICAgICAgOiBWYWx1ZShDaGVj
a2VkT3Bjb2RlLCBvcGNvZGUsIHR5cGUsIG9yaWdpbikKKyAgICAgICAgZXhwbGljaXQgVmFsdWUo
S2luZCBraW5kLCBUeXBlIHR5cGUsIE9yaWdpbiBvcmlnaW4pCisgICAgICAgIDogVmFsdWUoQ2hl
Y2tlZE9wY29kZSwga2luZCwgdHlwZSwgb3JpZ2luKQogICAgIHsKLSAgICAgICAgY2hlY2tPcGNv
ZGUob3Bjb2RlLCAwKTsKKyAgICAgICAgY2hlY2tLaW5kKGtpbmQsIDApOwogICAgIH0KICAgICB0
ZW1wbGF0ZTx0eXBlbmFtZS4uLiBBcmd1bWVudHM+Ci0gICAgICAgIGV4cGxpY2l0IFZhbHVlKE9w
Y29kZSBvcGNvZGUsIFR5cGUgdHlwZSwgT3JpZ2luIG9yaWdpbiwgVmFsdWUqIGZpcnN0Q2hpbGQs
IEFyZ3VtZW50cyYmLi4uIGFyZ3VtZW50cykKLSAgICAgICAgOiBWYWx1ZShDaGVja2VkT3Bjb2Rl
LCBvcGNvZGUsIHR5cGUsIG9yaWdpbiwgZmlyc3RDaGlsZCwgc3RkOjpmb3J3YXJkPEFyZ3VtZW50
cz4oYXJndW1lbnRzKS4uLikKKyAgICAgICAgZXhwbGljaXQgVmFsdWUoS2luZCBraW5kLCBUeXBl
IHR5cGUsIE9yaWdpbiBvcmlnaW4sIFZhbHVlKiBmaXJzdENoaWxkLCBBcmd1bWVudHMmJi4uLiBh
cmd1bWVudHMpCisgICAgICAgIDogVmFsdWUoQ2hlY2tlZE9wY29kZSwga2luZCwgdHlwZSwgb3Jp
Z2luLCBmaXJzdENoaWxkLCBzdGQ6OmZvcndhcmQ8QXJndW1lbnRzPihhcmd1bWVudHMpLi4uKQog
ICAgIHsKLSAgICAgICAgY2hlY2tPcGNvZGUob3Bjb2RlLCAxICsgc2l6ZW9mLi4uKGFyZ3VtZW50
cykpOworICAgICAgICBjaGVja0tpbmQoa2luZCwgMSArIHNpemVvZi4uLihhcmd1bWVudHMpKTsK
ICAgICB9CiAgICAgdGVtcGxhdGU8dHlwZW5hbWUuLi4gQXJndW1lbnRzPgotICAgICAgICBleHBs
aWNpdCBWYWx1ZShPcGNvZGUgb3Bjb2RlLCBUeXBlIHR5cGUsIE9yaWdpbiBvcmlnaW4sIGNvbnN0
IEFkamFjZW5jeUxpc3QmIGNoaWxkcmVuKQotICAgICAgICA6IFZhbHVlKENoZWNrZWRPcGNvZGUs
IG9wY29kZSwgdHlwZSwgb3JpZ2luLCBjaGlsZHJlbikKKyAgICAgICAgZXhwbGljaXQgVmFsdWUo
S2luZCBraW5kLCBUeXBlIHR5cGUsIE9yaWdpbiBvcmlnaW4sIGNvbnN0IEFkamFjZW5jeUxpc3Qm
IGNoaWxkcmVuKQorICAgICAgICA6IFZhbHVlKENoZWNrZWRPcGNvZGUsIGtpbmQsIHR5cGUsIG9y
aWdpbiwgY2hpbGRyZW4pCiAgICAgewotICAgICAgICBjaGVja09wY29kZShvcGNvZGUsIGNoaWxk
cmVuLnNpemUoKSk7CisgICAgICAgIGNoZWNrS2luZChraW5kLCBjaGlsZHJlbi5zaXplKCkpOwog
ICAgIH0KICAgICB0ZW1wbGF0ZTx0eXBlbmFtZS4uLiBBcmd1bWVudHM+Ci0gICAgICAgIGV4cGxp
Y2l0IFZhbHVlKE9wY29kZSBvcGNvZGUsIFR5cGUgdHlwZSwgT3JpZ2luIG9yaWdpbiwgQWRqYWNl
bmN5TGlzdCYmIGNoaWxkcmVuKQotICAgICAgICA6IFZhbHVlKENoZWNrZWRPcGNvZGUsIG9wY29k
ZSwgdHlwZSwgb3JpZ2luLCBXVEZNb3ZlKGNoaWxkcmVuKSkKKyAgICAgICAgZXhwbGljaXQgVmFs
dWUoS2luZCBraW5kLCBUeXBlIHR5cGUsIE9yaWdpbiBvcmlnaW4sIEFkamFjZW5jeUxpc3QmJiBj
aGlsZHJlbikKKyAgICAgICAgOiBWYWx1ZShDaGVja2VkT3Bjb2RlLCBraW5kLCB0eXBlLCBvcmln
aW4sIFdURk1vdmUoY2hpbGRyZW4pKQogICAgIHsKLSAgICAgICAgY2hlY2tPcGNvZGUob3Bjb2Rl
LCBtX2NoaWxkcmVuLnNpemUoKSk7CisgICAgICAgIGNoZWNrS2luZChraW5kLCBtX2NoaWxkcmVu
LnNpemUoKSk7CiAgICAgfQogICAgIHRlbXBsYXRlPHR5cGVuYW1lLi4uIEFyZ3VtZW50cz4KLSAg
ICAgICAgZXhwbGljaXQgVmFsdWUoT3Bjb2RlIG9wY29kZSwgT3JpZ2luIG9yaWdpbiwgQXJndW1l
bnRzJiYuLi4gYXJndW1lbnRzKQotICAgICAgICA6IFZhbHVlKENoZWNrZWRPcGNvZGUsIG9wY29k
ZSwgb3JpZ2luLCBzdGQ6OmZvcndhcmQ8QXJndW1lbnRzPihhcmd1bWVudHMpLi4uKQorICAgICAg
ICBleHBsaWNpdCBWYWx1ZShLaW5kIGtpbmQsIE9yaWdpbiBvcmlnaW4sIEFyZ3VtZW50cyYmLi4u
IGFyZ3VtZW50cykKKyAgICAgICAgOiBWYWx1ZShDaGVja2VkT3Bjb2RlLCBraW5kLCBvcmlnaW4s
IHN0ZDo6Zm9yd2FyZDxBcmd1bWVudHM+KGFyZ3VtZW50cykuLi4pCiAgICAgewotICAgICAgICBj
aGVja09wY29kZShvcGNvZGUsIHNpemVvZi4uLihhcmd1bWVudHMpKTsKKyAgICAgICAgY2hlY2tL
aW5kKGtpbmQsIHNpemVvZi4uLihhcmd1bWVudHMpKTsKICAgICB9CiAKIHByaXZhdGU6Ci0gICAg
ZnJpZW5kIGNsYXNzIENoZWNrVmFsdWU7IC8vIENoZWNrVmFsdWU6OmNvbnZlcnRUb0FkZCgpIG1v
ZGlmaWVzIG1fb3Bjb2RlLgorICAgIGZyaWVuZCBjbGFzcyBDaGVja1ZhbHVlOyAvLyBDaGVja1Zh
bHVlOjpjb252ZXJ0VG9BZGQoKSBtb2RpZmllcyBtX2tpbmQuCiAgICAgCi0gICAgc3RhdGljIFR5
cGUgdHlwZUZvcihPcGNvZGUsIFZhbHVlKiBmaXJzdENoaWxkLCBWYWx1ZSogc2Vjb25kQ2hpbGQg
PSBudWxscHRyKTsKKyAgICBzdGF0aWMgVHlwZSB0eXBlRm9yKEtpbmQsIFZhbHVlKiBmaXJzdENo
aWxkLCBWYWx1ZSogc2Vjb25kQ2hpbGQgPSBudWxscHRyKTsKIAogICAgIC8vIFRoaXMgZ3JvdXAg
b2YgZmllbGRzIGlzIGFycmFuZ2VkIHRvIGZpdCBpbiA2NCBiaXRzLgogcHJvdGVjdGVkOgogICAg
IHVuc2lnbmVkIG1faW5kZXggeyBVSU5UX01BWCB9OwogcHJpdmF0ZToKLSAgICBPcGNvZGUgbV9v
cGNvZGU7CisgICAgS2luZCBtX2tpbmQ7CiAgICAgVHlwZSBtX3R5cGU7CiAgICAgCiAgICAgT3Jp
Z2luIG1fb3JpZ2luOwogICAgIEFkamFjZW5jeUxpc3QgbV9jaGlsZHJlbjsKIAotICAgIEpTX0VY
UE9SVF9QUklWQVRFIE5PX1JFVFVSTl9EVUVfVE9fQ1JBU0ggc3RhdGljIHZvaWQgYmFkT3Bjb2Rl
KE9wY29kZSwgdW5zaWduZWQpOworICAgIEpTX0VYUE9SVF9QUklWQVRFIE5PX1JFVFVSTl9EVUVf
VE9fQ1JBU0ggc3RhdGljIHZvaWQgYmFkS2luZChLaW5kLCB1bnNpZ25lZCk7CiAKIHB1YmxpYzoK
ICAgICBCYXNpY0Jsb2NrKiBvd25lciB7IG51bGxwdHIgfTsgLy8gY29tcHV0ZWQgYnkgUHJvY2Vk
dXJlOjpyZXNldFZhbHVlT3duZXJzKCkuCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMv
QjNWYWx1ZUlubGluZXMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMv
QjNWYWx1ZUlubGluZXMuaAkocmV2aXNpb24gMjA2NTI0KQorKysgU291cmNlL0phdmFTY3JpcHRD
b3JlL2IzL0IzVmFsdWVJbmxpbmVzLmgJKHdvcmtpbmcgY29weSkKQEAgLTU4LDcgKzU4LDcgQEAg
dm9pZCBWYWx1ZTo6cmVwbGFjZVdpdGhCb3R0b20oY29uc3QgQm90dAogdGVtcGxhdGU8dHlwZW5h
bWUgVD4KIGlubGluZSBUKiBWYWx1ZTo6YXMoKQogewotICAgIGlmIChUOjphY2NlcHRzKG9wY29k
ZSgpKSkKKyAgICBpZiAoVDo6YWNjZXB0cyhraW5kKCkpKQogICAgICAgICByZXR1cm4gc3RhdGlj
X2Nhc3Q8VCo+KHRoaXMpOwogICAgIHJldHVybiBudWxscHRyOwogfQpJbmRleDogU291cmNlL0ph
dmFTY3JpcHRDb3JlL2IzL0IzVmFsdWVLZXkuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9iMy9CM1ZhbHVlS2V5LmNwcAkocmV2aXNpb24gMjA2NTI0KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL2IzL0IzVmFsdWVLZXkuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01MSwx
NCArNTEsMTQgQEAgVmFsdWVLZXkgVmFsdWVLZXk6OmludENvbnN0YW50KFR5cGUgdHlwZQogCiB2
b2lkIFZhbHVlS2V5OjpkdW1wKFByaW50U3RyZWFtJiBvdXQpIGNvbnN0CiB7Ci0gICAgb3V0LnBy
aW50KG1fdHlwZSwgIiAiLCBtX29wY29kZSwgIigiLCB1LmluZGljZXNbMF0sICIsICIsIHUuaW5k
aWNlc1sxXSwgIiwgIiwgdS5pbmRpY2VzWzJdLCAiKSIpOworICAgIG91dC5wcmludChtX3R5cGUs
ICIgIiwgbV9raW5kLCAiKCIsIHUuaW5kaWNlc1swXSwgIiwgIiwgdS5pbmRpY2VzWzFdLCAiLCAi
LCB1LmluZGljZXNbMl0sICIpIik7CiB9CiAKIFZhbHVlKiBWYWx1ZUtleTo6bWF0ZXJpYWxpemUo
UHJvY2VkdXJlJiBwcm9jLCBPcmlnaW4gb3JpZ2luKSBjb25zdAogewogICAgIHN3aXRjaCAob3Bj
b2RlKCkpIHsKICAgICBjYXNlIEZyYW1lUG9pbnRlcjoKLSAgICAgICAgcmV0dXJuIHByb2MuYWRk
PFZhbHVlPihvcGNvZGUoKSwgdHlwZSgpLCBvcmlnaW4pOworICAgICAgICByZXR1cm4gcHJvYy5h
ZGQ8VmFsdWU+KGtpbmQoKSwgdHlwZSgpLCBvcmlnaW4pOwogICAgIGNhc2UgSWRlbnRpdHk6CiAg
ICAgY2FzZSBTcXJ0OgogICAgIGNhc2UgU0V4dDg6CkBAIC03MiwxMSArNzIsMTAgQEAgVmFsdWUq
IFZhbHVlS2V5OjptYXRlcmlhbGl6ZShQcm9jZWR1cmUmIAogICAgIGNhc2UgRmxvYXRUb0RvdWJs
ZToKICAgICBjYXNlIERvdWJsZVRvRmxvYXQ6CiAgICAgY2FzZSBDaGVjazoKLSAgICAgICAgcmV0
dXJuIHByb2MuYWRkPFZhbHVlPihvcGNvZGUoKSwgdHlwZSgpLCBvcmlnaW4sIGNoaWxkKHByb2Ms
IDApKTsKKyAgICAgICAgcmV0dXJuIHByb2MuYWRkPFZhbHVlPihraW5kKCksIHR5cGUoKSwgb3Jp
Z2luLCBjaGlsZChwcm9jLCAwKSk7CiAgICAgY2FzZSBBZGQ6CiAgICAgY2FzZSBTdWI6CiAgICAg
Y2FzZSBNdWw6Ci0gICAgY2FzZSBDaGlsbERpdjoKICAgICBjYXNlIE1vZDoKICAgICBjYXNlIEJp
dEFuZDoKICAgICBjYXNlIEJpdE9yOgpAQCAtOTMsOSArOTIsOSBAQCBWYWx1ZSogVmFsdWVLZXk6
Om1hdGVyaWFsaXplKFByb2NlZHVyZSYgCiAgICAgY2FzZSBBYm92ZUVxdWFsOgogICAgIGNhc2Ug
QmVsb3dFcXVhbDoKICAgICBjYXNlIERpdjoKLSAgICAgICAgcmV0dXJuIHByb2MuYWRkPFZhbHVl
PihvcGNvZGUoKSwgdHlwZSgpLCBvcmlnaW4sIGNoaWxkKHByb2MsIDApLCBjaGlsZChwcm9jLCAx
KSk7CisgICAgICAgIHJldHVybiBwcm9jLmFkZDxWYWx1ZT4oa2luZCgpLCB0eXBlKCksIG9yaWdp
biwgY2hpbGQocHJvYywgMCksIGNoaWxkKHByb2MsIDEpKTsKICAgICBjYXNlIFNlbGVjdDoKLSAg
ICAgICAgcmV0dXJuIHByb2MuYWRkPFZhbHVlPihvcGNvZGUoKSwgdHlwZSgpLCBvcmlnaW4sIGNo
aWxkKHByb2MsIDApLCBjaGlsZChwcm9jLCAxKSwgY2hpbGQocHJvYywgMikpOworICAgICAgICBy
ZXR1cm4gcHJvYy5hZGQ8VmFsdWU+KGtpbmQoKSwgdHlwZSgpLCBvcmlnaW4sIGNoaWxkKHByb2Ms
IDApLCBjaGlsZChwcm9jLCAxKSwgY2hpbGQocHJvYywgMikpOwogICAgIGNhc2UgQ29uc3QzMjoK
ICAgICAgICAgcmV0dXJuIHByb2MuYWRkPENvbnN0MzJWYWx1ZT4ob3JpZ2luLCBzdGF0aWNfY2Fz
dDxpbnQzMl90Pih2YWx1ZSgpKSk7CiAgICAgY2FzZSBDb25zdDY0OgpJbmRleDogU291cmNlL0ph
dmFTY3JpcHRDb3JlL2IzL0IzVmFsdWVLZXkuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvYjMvQjNWYWx1ZUtleS5oCShyZXZpc2lvbiAyMDY1MjQpCisrKyBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvYjMvQjNWYWx1ZUtleS5oCSh3b3JraW5nIGNvcHkpCkBAIC0yOSw3ICsyOSw3
IEBACiAjaWYgRU5BQkxFKEIzX0pJVCkKIAogI2luY2x1ZGUgIkIzSGVhcFJhbmdlLmgiCi0jaW5j
bHVkZSAiQjNPcGNvZGUuaCIKKyNpbmNsdWRlICJCM0tpbmQuaCIKICNpbmNsdWRlICJCM09yaWdp
bi5oIgogI2luY2x1ZGUgIkIzVHlwZS5oIgogI2luY2x1ZGUgPHd0Zi9IYXNoVGFibGUuaD4KQEAg
LTUxLDM0ICs1MSwzNCBAQCBwdWJsaWM6CiAgICAgewogICAgIH0KIAotICAgIFZhbHVlS2V5KE9w
Y29kZSBvcGNvZGUsIFR5cGUgdHlwZSkKLSAgICAgICAgOiBtX29wY29kZShvcGNvZGUpCisgICAg
VmFsdWVLZXkoS2luZCBraW5kLCBUeXBlIHR5cGUpCisgICAgICAgIDogbV9raW5kKGtpbmQpCiAg
ICAgICAgICwgbV90eXBlKHR5cGUpCiAgICAgewogICAgIH0KIAotICAgIFZhbHVlS2V5KE9wY29k
ZSwgVHlwZSwgVmFsdWUqIGNoaWxkKTsKKyAgICBWYWx1ZUtleShLaW5kLCBUeXBlLCBWYWx1ZSog
Y2hpbGQpOwogCi0gICAgVmFsdWVLZXkoT3Bjb2RlLCBUeXBlLCBWYWx1ZSogbGVmdCwgVmFsdWUq
IHJpZ2h0KTsKKyAgICBWYWx1ZUtleShLaW5kLCBUeXBlLCBWYWx1ZSogbGVmdCwgVmFsdWUqIHJp
Z2h0KTsKIAotICAgIFZhbHVlS2V5KE9wY29kZSwgVHlwZSwgVmFsdWUqIGEsIFZhbHVlKiBiLCBW
YWx1ZSogYyk7CisgICAgVmFsdWVLZXkoS2luZCwgVHlwZSwgVmFsdWUqIGEsIFZhbHVlKiBiLCBW
YWx1ZSogYyk7CiAKLSAgICBWYWx1ZUtleShPcGNvZGUgb3Bjb2RlLCBUeXBlIHR5cGUsIGludDY0
X3QgdmFsdWUpCi0gICAgICAgIDogbV9vcGNvZGUob3Bjb2RlKQorICAgIFZhbHVlS2V5KEtpbmQg
a2luZCwgVHlwZSB0eXBlLCBpbnQ2NF90IHZhbHVlKQorICAgICAgICA6IG1fa2luZChraW5kKQog
ICAgICAgICAsIG1fdHlwZSh0eXBlKQogICAgIHsKICAgICAgICAgdS52YWx1ZSA9IHZhbHVlOwog
ICAgIH0KIAotICAgIFZhbHVlS2V5KE9wY29kZSBvcGNvZGUsIFR5cGUgdHlwZSwgZG91YmxlIHZh
bHVlKQotICAgICAgICA6IG1fb3Bjb2RlKG9wY29kZSkKKyAgICBWYWx1ZUtleShLaW5kIGtpbmQs
IFR5cGUgdHlwZSwgZG91YmxlIHZhbHVlKQorICAgICAgICA6IG1fa2luZChraW5kKQogICAgICAg
ICAsIG1fdHlwZSh0eXBlKQogICAgIHsKICAgICAgICAgdS5kb3VibGVWYWx1ZSA9IHZhbHVlOwog
ICAgIH0KIAotICAgIFZhbHVlS2V5KE9wY29kZSBvcGNvZGUsIFR5cGUgdHlwZSwgZmxvYXQgdmFs
dWUpCi0gICAgICAgIDogbV9vcGNvZGUob3Bjb2RlKQorICAgIFZhbHVlS2V5KEtpbmQga2luZCwg
VHlwZSB0eXBlLCBmbG9hdCB2YWx1ZSkKKyAgICAgICAgOiBtX2tpbmQoa2luZCkKICAgICAgICAg
LCBtX3R5cGUodHlwZSkKICAgICB7CiAgICAgICAgIHUuZmxvYXRWYWx1ZSA9IHZhbHVlOwpAQCAt
ODYsNyArODYsOCBAQCBwdWJsaWM6CiAKICAgICBzdGF0aWMgVmFsdWVLZXkgaW50Q29uc3RhbnQo
VHlwZSB0eXBlLCBpbnQ2NF90IHZhbHVlKTsKIAotICAgIE9wY29kZSBvcGNvZGUoKSBjb25zdCB7
IHJldHVybiBtX29wY29kZTsgfQorICAgIEtpbmQga2luZCgpIGNvbnN0IHsgcmV0dXJuIG1fa2lu
ZDsgfQorICAgIE9wY29kZSBvcGNvZGUoKSBjb25zdCB7IHJldHVybiBraW5kKCkub3Bjb2RlKCk7
IH0KICAgICBUeXBlIHR5cGUoKSBjb25zdCB7IHJldHVybiBtX3R5cGU7IH0KICAgICB1bnNpZ25l
ZCBjaGlsZEluZGV4KHVuc2lnbmVkIGluZGV4KSBjb25zdCB7IHJldHVybiB1LmluZGljZXNbaW5k
ZXhdOyB9CiAgICAgVmFsdWUqIGNoaWxkKFByb2NlZHVyZSYsIHVuc2lnbmVkIGluZGV4KSBjb25z
dDsKQEAgLTk2LDcgKzk3LDcgQEAgcHVibGljOgogCiAgICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0
IFZhbHVlS2V5JiBvdGhlcikgY29uc3QKICAgICB7Ci0gICAgICAgIHJldHVybiBtX29wY29kZSA9
PSBvdGhlci5tX29wY29kZQorICAgICAgICByZXR1cm4gbV9raW5kID09IG90aGVyLm1fa2luZAog
ICAgICAgICAgICAgJiYgbV90eXBlID09IG90aGVyLm1fdHlwZQogICAgICAgICAgICAgJiYgdSA9
PSBvdGhlci51OwogICAgIH0KQEAgLTEwOCw3ICsxMDksNyBAQCBwdWJsaWM6CiAKICAgICB1bnNp
Z25lZCBoYXNoKCkgY29uc3QKICAgICB7Ci0gICAgICAgIHJldHVybiBtX29wY29kZSArIG1fdHlw
ZSArIFdURjo6SW50SGFzaDxpbnQzMl90Pjo6aGFzaCh1LmluZGljZXNbMF0pICsgdS5pbmRpY2Vz
WzFdICsgdS5pbmRpY2VzWzJdOworICAgICAgICByZXR1cm4gbV9raW5kLmhhc2goKSArIG1fdHlw
ZSArIFdURjo6SW50SGFzaDxpbnQzMl90Pjo6aGFzaCh1LmluZGljZXNbMF0pICsgdS5pbmRpY2Vz
WzFdICsgdS5pbmRpY2VzWzJdOwogICAgIH0KIAogICAgIGV4cGxpY2l0IG9wZXJhdG9yIGJvb2wo
KSBjb25zdCB7IHJldHVybiAqdGhpcyAhPSBWYWx1ZUtleSgpOyB9CkBAIC0xNTAsNyArMTUxLDcg
QEAgcHVibGljOgogICAgIH0KICAgICAgICAgCiBwcml2YXRlOgotICAgIE9wY29kZSBtX29wY29k
ZSB7IE9vcHMgfTsKKyAgICBLaW5kIG1fa2luZDsKICAgICBUeXBlIG1fdHlwZSB7IFZvaWQgfTsK
ICAgICB1bmlvbiBVIHsKICAgICAgICAgdW5zaWduZWQgaW5kaWNlc1szXTsKSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9iMy9CM1ZhbHVlS2V5SW5saW5lcy5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM1ZhbHVlS2V5SW5saW5lcy5oCShyZXZpc2lvbiAyMDY1
MjQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNWYWx1ZUtleUlubGluZXMuaAkod29y
a2luZyBjb3B5KQpAQCAtMzQsMjMgKzM0LDIzIEBACiAKIG5hbWVzcGFjZSBKU0MgeyBuYW1lc3Bh
Y2UgQjMgewogCi1pbmxpbmUgVmFsdWVLZXk6OlZhbHVlS2V5KE9wY29kZSBvcGNvZGUsIFR5cGUg
dHlwZSwgVmFsdWUqIGNoaWxkKQotICAgIDogbV9vcGNvZGUob3Bjb2RlKQoraW5saW5lIFZhbHVl
S2V5OjpWYWx1ZUtleShLaW5kIGtpbmQsIFR5cGUgdHlwZSwgVmFsdWUqIGNoaWxkKQorICAgIDog
bV9raW5kKGtpbmQpCiAgICAgLCBtX3R5cGUodHlwZSkKIHsKICAgICB1LmluZGljZXNbMF0gPSBj
aGlsZC0+aW5kZXgoKTsKIH0KIAotaW5saW5lIFZhbHVlS2V5OjpWYWx1ZUtleShPcGNvZGUgb3Bj
b2RlLCBUeXBlIHR5cGUsIFZhbHVlKiBsZWZ0LCBWYWx1ZSogcmlnaHQpCi0gICAgOiBtX29wY29k
ZShvcGNvZGUpCitpbmxpbmUgVmFsdWVLZXk6OlZhbHVlS2V5KEtpbmQga2luZCwgVHlwZSB0eXBl
LCBWYWx1ZSogbGVmdCwgVmFsdWUqIHJpZ2h0KQorICAgIDogbV9raW5kKGtpbmQpCiAgICAgLCBt
X3R5cGUodHlwZSkKIHsKICAgICB1LmluZGljZXNbMF0gPSBsZWZ0LT5pbmRleCgpOwogICAgIHUu
aW5kaWNlc1sxXSA9IHJpZ2h0LT5pbmRleCgpOwogfQogCi1pbmxpbmUgVmFsdWVLZXk6OlZhbHVl
S2V5KE9wY29kZSBvcGNvZGUsIFR5cGUgdHlwZSwgVmFsdWUqIGEsIFZhbHVlKiBiLCBWYWx1ZSog
YykKLSAgICA6IG1fb3Bjb2RlKG9wY29kZSkKK2lubGluZSBWYWx1ZUtleTo6VmFsdWVLZXkoS2lu
ZCBraW5kLCBUeXBlIHR5cGUsIFZhbHVlKiBhLCBWYWx1ZSogYiwgVmFsdWUqIGMpCisgICAgOiBt
X2tpbmQoa2luZCkKICAgICAsIG1fdHlwZSh0eXBlKQogewogICAgIHUuaW5kaWNlc1swXSA9IGEt
PmluZGV4KCk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNWYXJpYWJsZVZhbHVl
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNWYXJpYWJsZVZh
bHVlLmNwcAkocmV2aXNpb24gMjA2NTI0KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0Iz
VmFyaWFibGVWYWx1ZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ2LDE4ICs0NiwxOCBAQCBWYWx1
ZSogVmFyaWFibGVWYWx1ZTo6Y2xvbmVJbXBsKCkgY29uc3QKICAgICByZXR1cm4gbmV3IFZhcmlh
YmxlVmFsdWUoKnRoaXMpOwogfQogCi1WYXJpYWJsZVZhbHVlOjpWYXJpYWJsZVZhbHVlKE9wY29k
ZSBvcGNvZGUsIE9yaWdpbiBvcmlnaW4sIFZhcmlhYmxlKiB2YXJpYWJsZSwgVmFsdWUqIHZhbHVl
KQotICAgIDogVmFsdWUoQ2hlY2tlZE9wY29kZSwgb3Bjb2RlLCBWb2lkLCBvcmlnaW4sIHZhbHVl
KQorVmFyaWFibGVWYWx1ZTo6VmFyaWFibGVWYWx1ZShLaW5kIGtpbmQsIE9yaWdpbiBvcmlnaW4s
IFZhcmlhYmxlKiB2YXJpYWJsZSwgVmFsdWUqIHZhbHVlKQorICAgIDogVmFsdWUoQ2hlY2tlZE9w
Y29kZSwga2luZCwgVm9pZCwgb3JpZ2luLCB2YWx1ZSkKICAgICAsIG1fdmFyaWFibGUodmFyaWFi
bGUpCiB7Ci0gICAgQVNTRVJUKG9wY29kZSA9PSBTZXQpOworICAgIEFTU0VSVChraW5kID09IFNl
dCk7CiB9CiAKLVZhcmlhYmxlVmFsdWU6OlZhcmlhYmxlVmFsdWUoT3Bjb2RlIG9wY29kZSwgT3Jp
Z2luIG9yaWdpbiwgVmFyaWFibGUqIHZhcmlhYmxlKQotICAgIDogVmFsdWUoQ2hlY2tlZE9wY29k
ZSwgb3Bjb2RlLCB2YXJpYWJsZS0+dHlwZSgpLCBvcmlnaW4pCitWYXJpYWJsZVZhbHVlOjpWYXJp
YWJsZVZhbHVlKEtpbmQga2luZCwgT3JpZ2luIG9yaWdpbiwgVmFyaWFibGUqIHZhcmlhYmxlKQor
ICAgIDogVmFsdWUoQ2hlY2tlZE9wY29kZSwga2luZCwgdmFyaWFibGUtPnR5cGUoKSwgb3JpZ2lu
KQogICAgICwgbV92YXJpYWJsZSh2YXJpYWJsZSkKIHsKLSAgICBBU1NFUlQob3Bjb2RlID09IEdl
dCk7CisgICAgQVNTRVJUKGtpbmQgPT0gR2V0KTsKIH0KIAogfSB9IC8vIG5hbWVzcGFjZSBKU0M6
OkIzCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNWYXJpYWJsZVZhbHVlLmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzVmFyaWFibGVWYWx1ZS5oCShy
ZXZpc2lvbiAyMDY1MjQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNWYXJpYWJsZVZh
bHVlLmgJKHdvcmtpbmcgY29weSkKQEAgLTM2LDcgKzM2LDcgQEAgY2xhc3MgVmFyaWFibGU7CiAK
IGNsYXNzIEpTX0VYUE9SVF9QUklWQVRFIFZhcmlhYmxlVmFsdWUgOiBwdWJsaWMgVmFsdWUgewog
cHVibGljOgotICAgIHN0YXRpYyBib29sIGFjY2VwdHMoT3Bjb2RlIG9wY29kZSkgeyByZXR1cm4g
b3Bjb2RlID09IEdldCB8fCBvcGNvZGUgPT0gU2V0OyB9CisgICAgc3RhdGljIGJvb2wgYWNjZXB0
cyhLaW5kIGtpbmQpIHsgcmV0dXJuIGtpbmQgPT0gR2V0IHx8IGtpbmQgPT0gU2V0OyB9CiAKICAg
ICB+VmFyaWFibGVWYWx1ZSgpOwogCkBAIC01MSwxMCArNTEsMTAgQEAgcHJpdmF0ZToKICAgICBm
cmllbmQgY2xhc3MgUHJvY2VkdXJlOwogCiAgICAgLy8gVXNlIHRoaXMgZm9yIFNldC4KLSAgICBW
YXJpYWJsZVZhbHVlKE9wY29kZSwgT3JpZ2luLCBWYXJpYWJsZSosIFZhbHVlKik7CisgICAgVmFy
aWFibGVWYWx1ZShLaW5kLCBPcmlnaW4sIFZhcmlhYmxlKiwgVmFsdWUqKTsKIAogICAgIC8vIFVz
ZSB0aGlzIGZvciBHZXQuCi0gICAgVmFyaWFibGVWYWx1ZShPcGNvZGUsIE9yaWdpbiwgVmFyaWFi
bGUqKTsKKyAgICBWYXJpYWJsZVZhbHVlKEtpbmQsIE9yaWdpbiwgVmFyaWFibGUqKTsKIAogICAg
IFZhcmlhYmxlKiBtX3ZhcmlhYmxlOwogfTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
My90ZXN0YjMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy90ZXN0
YjMuY3BwCShyZXZpc2lvbiAyMDY1MjQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvdGVz
dGIzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtOTk3Niw3ICs5OTc2LDcgQEAgdm9pZCB0ZXN0Q2hp
bGxEaXYoaW50IG51bSwgaW50IGRlbiwgaW50IAogICAgICAgICByb290LT5hcHBlbmROZXdDb250
cm9sVmFsdWUoCiAgICAgICAgICAgICBwcm9jLCBSZXR1cm4sIE9yaWdpbigpLAogICAgICAgICAg
ICAgcm9vdC0+YXBwZW5kTmV3PFZhbHVlPigKLSAgICAgICAgICAgICAgICBwcm9jLCBDaGlsbERp
diwgT3JpZ2luKCksCisgICAgICAgICAgICAgICAgcHJvYywgY2hpbGwoRGl2KSwgT3JpZ2luKCks
CiAgICAgICAgICAgICAgICAgcm9vdC0+YXBwZW5kTmV3PFZhbHVlPigKICAgICAgICAgICAgICAg
ICAgICAgcHJvYywgVHJ1bmMsIE9yaWdpbigpLAogICAgICAgICAgICAgICAgICAgICByb290LT5h
cHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQUkluZm86OmFyZ3Vt
ZW50R1BSMCkpLApAQCAtOTk5NSw3ICs5OTk1LDcgQEAgdm9pZCB0ZXN0Q2hpbGxEaXYoaW50IG51
bSwgaW50IGRlbiwgaW50IAogICAgICAgICByb290LT5hcHBlbmROZXdDb250cm9sVmFsdWUoCiAg
ICAgICAgICAgICBwcm9jLCBSZXR1cm4sIE9yaWdpbigpLAogICAgICAgICAgICAgcm9vdC0+YXBw
ZW5kTmV3PFZhbHVlPigKLSAgICAgICAgICAgICAgICBwcm9jLCBDaGlsbERpdiwgT3JpZ2luKCks
CisgICAgICAgICAgICAgICAgcHJvYywgY2hpbGwoRGl2KSwgT3JpZ2luKCksCiAgICAgICAgICAg
ICAgICAgcm9vdC0+YXBwZW5kTmV3PENvbnN0MzJWYWx1ZT4ocHJvYywgT3JpZ2luKCksIG51bSks
CiAgICAgICAgICAgICAgICAgcm9vdC0+YXBwZW5kTmV3PENvbnN0MzJWYWx1ZT4ocHJvYywgT3Jp
Z2luKCksIGRlbikpKTsKICAgICAgICAgCkBAIC0xMDAxMyw3ICsxMDAxMyw3IEBAIHZvaWQgdGVz
dENoaWxsRGl2VHdpY2UoaW50IG51bTEsIGludCBkZW4KICAgICAgICAgcm9vdC0+YXBwZW5kTmV3
PFZhbHVlPigKICAgICAgICAgICAgIHByb2MsIEFkZCwgT3JpZ2luKCksCiAgICAgICAgICAgICBy
b290LT5hcHBlbmROZXc8VmFsdWU+KAotICAgICAgICAgICAgICAgIHByb2MsIENoaWxsRGl2LCBP
cmlnaW4oKSwKKyAgICAgICAgICAgICAgICBwcm9jLCBjaGlsbChEaXYpLCBPcmlnaW4oKSwKICAg
ICAgICAgICAgICAgICByb290LT5hcHBlbmROZXc8VmFsdWU+KAogICAgICAgICAgICAgICAgICAg
ICBwcm9jLCBUcnVuYywgT3JpZ2luKCksCiAgICAgICAgICAgICAgICAgICAgIHJvb3QtPmFwcGVu
ZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRH
UFIwKSksCkBAIC0xMDAyMSw3ICsxMDAyMSw3IEBAIHZvaWQgdGVzdENoaWxsRGl2VHdpY2UoaW50
IG51bTEsIGludCBkZW4KICAgICAgICAgICAgICAgICAgICAgcHJvYywgVHJ1bmMsIE9yaWdpbigp
LAogICAgICAgICAgICAgICAgICAgICByb290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4o
cHJvYywgT3JpZ2luKCksIEdQUkluZm86OmFyZ3VtZW50R1BSMSkpKSwKICAgICAgICAgICAgIHJv
b3QtPmFwcGVuZE5ldzxWYWx1ZT4oCi0gICAgICAgICAgICAgICAgcHJvYywgQ2hpbGxEaXYsIE9y
aWdpbigpLAorICAgICAgICAgICAgICAgIHByb2MsIGNoaWxsKERpdiksIE9yaWdpbigpLAogICAg
ICAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4oCiAgICAgICAgICAgICAgICAgICAg
IHByb2MsIFRydW5jLCBPcmlnaW4oKSwKICAgICAgICAgICAgICAgICAgICAgcm9vdC0+YXBwZW5k
TmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBHUFJJbmZvOjphcmd1bWVudEdQ
UjIpKSwKQEAgLTEwMDQ1LDcgKzEwMDQ1LDcgQEAgdm9pZCB0ZXN0Q2hpbGxEaXY2NChpbnQ2NF90
IG51bSwgaW50NjRfdAogICAgICAgICByb290LT5hcHBlbmROZXdDb250cm9sVmFsdWUoCiAgICAg
ICAgICAgICBwcm9jLCBSZXR1cm4sIE9yaWdpbigpLAogICAgICAgICAgICAgcm9vdC0+YXBwZW5k
TmV3PFZhbHVlPigKLSAgICAgICAgICAgICAgICBwcm9jLCBDaGlsbERpdiwgT3JpZ2luKCksCisg
ICAgICAgICAgICAgICAgcHJvYywgY2hpbGwoRGl2KSwgT3JpZ2luKCksCiAgICAgICAgICAgICAg
ICAgcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBHUFJJ
bmZvOjphcmd1bWVudEdQUjApLAogICAgICAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxBcmd1
bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIxKSkpOwog
ICAgICAgICAKQEAgLTEwMDYwLDcgKzEwMDYwLDcgQEAgdm9pZCB0ZXN0Q2hpbGxEaXY2NChpbnQ2
NF90IG51bSwgaW50NjRfdAogICAgICAgICByb290LT5hcHBlbmROZXdDb250cm9sVmFsdWUoCiAg
ICAgICAgICAgICBwcm9jLCBSZXR1cm4sIE9yaWdpbigpLAogICAgICAgICAgICAgcm9vdC0+YXBw
ZW5kTmV3PFZhbHVlPigKLSAgICAgICAgICAgICAgICBwcm9jLCBDaGlsbERpdiwgT3JpZ2luKCks
CisgICAgICAgICAgICAgICAgcHJvYywgY2hpbGwoRGl2KSwgT3JpZ2luKCksCiAgICAgICAgICAg
ICAgICAgcm9vdC0+YXBwZW5kTmV3PENvbnN0NjRWYWx1ZT4ocHJvYywgT3JpZ2luKCksIG51bSks
CiAgICAgICAgICAgICAgICAgcm9vdC0+YXBwZW5kTmV3PENvbnN0NjRWYWx1ZT4ocHJvYywgT3Jp
Z2luKCksIGRlbikpKTsKICAgICAgICAgCkBAIC0xMDE3OSw3ICsxMDE3OSw3IEBAIHZvaWQgdGVz
dENoaWxsTW9kQXJnKGludDY0X3QgdmFsdWUpCiAgICAgQmFzaWNCbG9jayogcm9vdCA9IHByb2Mu
YWRkQmxvY2soKTsKIAogICAgIFZhbHVlKiBhcmd1bWVudCA9IHJvb3QtPmFwcGVuZE5ldzxBcmd1
bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIwKTsKLSAg
ICBWYWx1ZSogcmVzdWx0ID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBDaGlsbE1vZCwg
T3JpZ2luKCksIGFyZ3VtZW50LCBhcmd1bWVudCk7CisgICAgVmFsdWUqIHJlc3VsdCA9IHJvb3Qt
PmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgY2hpbGwoTW9kKSwgT3JpZ2luKCksIGFyZ3VtZW50LCBh
cmd1bWVudCk7CiAgICAgcm9vdC0+YXBwZW5kTmV3Q29udHJvbFZhbHVlKHByb2MsIFJldHVybiwg
T3JpZ2luKCksIHJlc3VsdCk7CiAKICAgICBDSEVDSyghY29tcGlsZUFuZFJ1bjxpbnQ2NF90Pihw
cm9jLCB2YWx1ZSkpOwpAQCAtMTAxOTIsNyArMTAxOTIsNyBAQCB2b2lkIHRlc3RDaGlsbE1vZEFy
Z3MoaW50NjRfdCBudW1lcmF0b3IsCiAKICAgICBWYWx1ZSogYXJndW1lbnQxID0gcm9vdC0+YXBw
ZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBHUFJJbmZvOjphcmd1bWVu
dEdQUjApOwogICAgIFZhbHVlKiBhcmd1bWVudDIgPSByb290LT5hcHBlbmROZXc8QXJndW1lbnRS
ZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQUkluZm86OmFyZ3VtZW50R1BSMSk7Ci0gICAgVmFs
dWUqIHJlc3VsdCA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgQ2hpbGxNb2QsIE9yaWdp
bigpLCBhcmd1bWVudDEsIGFyZ3VtZW50Mik7CisgICAgVmFsdWUqIHJlc3VsdCA9IHJvb3QtPmFw
cGVuZE5ldzxWYWx1ZT4ocHJvYywgY2hpbGwoTW9kKSwgT3JpZ2luKCksIGFyZ3VtZW50MSwgYXJn
dW1lbnQyKTsKICAgICByb290LT5hcHBlbmROZXdDb250cm9sVmFsdWUocHJvYywgUmV0dXJuLCBP
cmlnaW4oKSwgcmVzdWx0KTsKIAogICAgIENIRUNLKGNvbXBpbGVBbmRSdW48aW50NjRfdD4ocHJv
YywgbnVtZXJhdG9yLCBkZW5vbWluYXRvcikgPT0gY2hpbGxNb2QobnVtZXJhdG9yLCBkZW5vbWlu
YXRvcikpOwpAQCAtMTAyMDUsNyArMTAyMDUsNyBAQCB2b2lkIHRlc3RDaGlsbE1vZEltbXMoaW50
NjRfdCBudW1lcmF0b3IsCiAKICAgICBWYWx1ZSogYXJndW1lbnQxID0gcm9vdC0+YXBwZW5kTmV3
PENvbnN0NjRWYWx1ZT4ocHJvYywgT3JpZ2luKCksIG51bWVyYXRvcik7CiAgICAgVmFsdWUqIGFy
Z3VtZW50MiA9IHJvb3QtPmFwcGVuZE5ldzxDb25zdDY0VmFsdWU+KHByb2MsIE9yaWdpbigpLCBk
ZW5vbWluYXRvcik7Ci0gICAgVmFsdWUqIHJlc3VsdCA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4o
cHJvYywgQ2hpbGxNb2QsIE9yaWdpbigpLCBhcmd1bWVudDEsIGFyZ3VtZW50Mik7CisgICAgVmFs
dWUqIHJlc3VsdCA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgY2hpbGwoTW9kKSwgT3Jp
Z2luKCksIGFyZ3VtZW50MSwgYXJndW1lbnQyKTsKICAgICByb290LT5hcHBlbmROZXdDb250cm9s
VmFsdWUocHJvYywgUmV0dXJuLCBPcmlnaW4oKSwgcmVzdWx0KTsKIAogICAgIENIRUNLKGNvbXBp
bGVBbmRSdW48aW50NjRfdD4ocHJvYywgbnVtZXJhdG9yLCBkZW5vbWluYXRvcikgPT0gY2hpbGxN
b2QobnVtZXJhdG9yLCBkZW5vbWluYXRvcikpOwpAQCAtMTAyMTgsNyArMTAyMTgsNyBAQCB2b2lk
IHRlc3RDaGlsbE1vZEFyZzMyKGludDMyX3QgdmFsdWUpCiAKICAgICBWYWx1ZSogYXJndW1lbnQg
PSByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIFRydW5jLCBPcmlnaW4oKSwKICAgICAgICAg
cm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBHUFJJbmZv
Ojphcmd1bWVudEdQUjApKTsKLSAgICBWYWx1ZSogcmVzdWx0ID0gcm9vdC0+YXBwZW5kTmV3PFZh
bHVlPihwcm9jLCBDaGlsbE1vZCwgT3JpZ2luKCksIGFyZ3VtZW50LCBhcmd1bWVudCk7CisgICAg
VmFsdWUqIHJlc3VsdCA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgY2hpbGwoTW9kKSwg
T3JpZ2luKCksIGFyZ3VtZW50LCBhcmd1bWVudCk7CiAgICAgcm9vdC0+YXBwZW5kTmV3Q29udHJv
bFZhbHVlKHByb2MsIFJldHVybiwgT3JpZ2luKCksIHJlc3VsdCk7CiAKICAgICBDSEVDSyghY29t
cGlsZUFuZFJ1bjxpbnQzMl90Pihwcm9jLCB2YWx1ZSkpOwpAQCAtMTAyMzMsNyArMTAyMzMsNyBA
QCB2b2lkIHRlc3RDaGlsbE1vZEFyZ3MzMihpbnQzMl90IG51bWVyYXRvCiAgICAgICAgIHJvb3Qt
PmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJn
dW1lbnRHUFIwKSk7CiAgICAgVmFsdWUqIGFyZ3VtZW50MiA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1
ZT4ocHJvYywgVHJ1bmMsIE9yaWdpbigpLAogICAgICAgICByb290LT5hcHBlbmROZXc8QXJndW1l
bnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQUkluZm86OmFyZ3VtZW50R1BSMSkpOwotICAg
IFZhbHVlKiByZXN1bHQgPSByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIENoaWxsTW9kLCBP
cmlnaW4oKSwgYXJndW1lbnQxLCBhcmd1bWVudDIpOworICAgIFZhbHVlKiByZXN1bHQgPSByb290
LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIGNoaWxsKE1vZCksIE9yaWdpbigpLCBhcmd1bWVudDEs
IGFyZ3VtZW50Mik7CiAgICAgcm9vdC0+YXBwZW5kTmV3Q29udHJvbFZhbHVlKHByb2MsIFJldHVy
biwgT3JpZ2luKCksIHJlc3VsdCk7CiAKICAgICBDSEVDSyhjb21waWxlQW5kUnVuPGludDMyX3Q+
KHByb2MsIG51bWVyYXRvciwgZGVub21pbmF0b3IpID09IGNoaWxsTW9kKG51bWVyYXRvciwgZGVu
b21pbmF0b3IpKTsKQEAgLTEwMjQ2LDcgKzEwMjQ2LDcgQEAgdm9pZCB0ZXN0Q2hpbGxNb2RJbW1z
MzIoaW50MzJfdCBudW1lcmF0bwogCiAgICAgVmFsdWUqIGFyZ3VtZW50MSA9IHJvb3QtPmFwcGVu
ZE5ldzxDb25zdDMyVmFsdWU+KHByb2MsIE9yaWdpbigpLCBudW1lcmF0b3IpOwogICAgIFZhbHVl
KiBhcmd1bWVudDIgPSByb290LT5hcHBlbmROZXc8Q29uc3QzMlZhbHVlPihwcm9jLCBPcmlnaW4o
KSwgZGVub21pbmF0b3IpOwotICAgIFZhbHVlKiByZXN1bHQgPSByb290LT5hcHBlbmROZXc8VmFs
dWU+KHByb2MsIENoaWxsTW9kLCBPcmlnaW4oKSwgYXJndW1lbnQxLCBhcmd1bWVudDIpOworICAg
IFZhbHVlKiByZXN1bHQgPSByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIGNoaWxsKE1vZCks
IE9yaWdpbigpLCBhcmd1bWVudDEsIGFyZ3VtZW50Mik7CiAgICAgcm9vdC0+YXBwZW5kTmV3Q29u
dHJvbFZhbHVlKHByb2MsIFJldHVybiwgT3JpZ2luKCksIHJlc3VsdCk7CiAKICAgICBDSEVDSyhj
b21waWxlQW5kUnVuPGludDMyX3Q+KHByb2MsIG51bWVyYXRvciwgZGVub21pbmF0b3IpID09IGNo
aWxsTW9kKG51bWVyYXRvciwgZGVub21pbmF0b3IpKTsKQEAgLTEwMzEzLDcgKzEwMzEzLDcgQEAg
dm9pZCB0ZXN0U3dpdGNoQ2hpbGxEaXYodW5zaWduZWQgZGVncmVlLAogICAgICAgICBuZXdCbG9j
ay0+YXBwZW5kTmV3Q29udHJvbFZhbHVlKAogICAgICAgICAgICAgcHJvYywgUmV0dXJuLCBPcmln
aW4oKSwKICAgICAgICAgICAgIG5ld0Jsb2NrLT5hcHBlbmROZXc8VmFsdWU+KAotICAgICAgICAg
ICAgICAgIHByb2MsIENoaWxsRGl2LCBPcmlnaW4oKSwgKGkgJiAxKSA/IHJpZ2h0IDogbGVmdCwg
KGkgJiAxKSA/IGxlZnQgOiByaWdodCkpOworICAgICAgICAgICAgICAgIHByb2MsIGNoaWxsKERp
diksIE9yaWdpbigpLCAoaSAmIDEpID8gcmlnaHQgOiBsZWZ0LCAoaSAmIDEpID8gbGVmdCA6IHJp
Z2h0KSk7CiAgICAgICAgIAogICAgICAgICBzd2l0Y2hWYWx1ZS0+YXBwZW5kQ2FzZShTd2l0Y2hD
YXNlKGdhcCAqIGksIEZyZXF1ZW50ZWRCbG9jayhuZXdCbG9jaykpKTsKICAgICB9CkBAIC0xMjY3
NCw3ICsxMjY3NCw3IEBAIHZvaWQgdGVzdEVudHJ5U3dpdGNoV2l0aENvbW1vblBhdGhzKCkKICAg
ICBlbmQtPmFwcGVuZE5ldzxWYWx1ZT4oCiAgICAgICAgIHByb2MsIFJldHVybiwgT3JpZ2luKCks
CiAgICAgICAgIGVuZC0+YXBwZW5kTmV3PFZhbHVlPigKLSAgICAgICAgICAgIHByb2MsIENoaWxs
TW9kLCBPcmlnaW4oKSwKKyAgICAgICAgICAgIHByb2MsIGNoaWxsKE1vZCksIE9yaWdpbigpLAog
ICAgICAgICAgICAgcGhpLCBlbmQtPmFwcGVuZE5ldzxWYWx1ZT4oCiAgICAgICAgICAgICAgICAg
cHJvYywgVHJ1bmMsIE9yaWdpbigpLAogICAgICAgICAgICAgICAgIGVuZC0+YXBwZW5kTmV3PEFy
Z3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBHUFJJbmZvOjphcmd1bWVudEdQUjIpKSkp
OwpAQCAtMTI3OTEsNyArMTI3OTEsNyBAQCB2b2lkIHRlc3RFbnRyeVN3aXRjaFdpdGhDb21tb25Q
YXRoc0FuZE5vCiAgICAgZW5kLT5hcHBlbmROZXc8VmFsdWU+KAogICAgICAgICBwcm9jLCBSZXR1
cm4sIE9yaWdpbigpLAogICAgICAgICBlbmQtPmFwcGVuZE5ldzxWYWx1ZT4oCi0gICAgICAgICAg
ICBwcm9jLCBDaGlsbE1vZCwgT3JpZ2luKCksCisgICAgICAgICAgICBwcm9jLCBjaGlsbChNb2Qp
LCBPcmlnaW4oKSwKICAgICAgICAgICAgIHBoaSwgZW5kLT5hcHBlbmROZXc8VmFsdWU+KAogICAg
ICAgICAgICAgICAgIHByb2MsIFRydW5jLCBPcmlnaW4oKSwKICAgICAgICAgICAgICAgICBlbmQt
PmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJn
dW1lbnRHUFIyKSkpKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMT3V0cHV0
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTE91dHB1dC5j
cHAJKHJldmlzaW9uIDIwNjUyNCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMT3V0
cHV0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTUxLDcgKzE1MSw3IEBAIExWYWx1ZSBPdXRwdXQ6
OmRpdihMVmFsdWUgbGVmdCwgTFZhbHVlIHIKIAogTFZhbHVlIE91dHB1dDo6Y2hpbGxEaXYoTFZh
bHVlIGxlZnQsIExWYWx1ZSByaWdodCkKIHsKLSAgICByZXR1cm4gbV9ibG9jay0+YXBwZW5kTmV3
PEIzOjpWYWx1ZT4obV9wcm9jLCBCMzo6Q2hpbGxEaXYsIG9yaWdpbigpLCBsZWZ0LCByaWdodCk7
CisgICAgcmV0dXJuIG1fYmxvY2stPmFwcGVuZE5ldzxCMzo6VmFsdWU+KG1fcHJvYywgY2hpbGwo
QjM6OkRpdiksIG9yaWdpbigpLCBsZWZ0LCByaWdodCk7CiB9CiAKIExWYWx1ZSBPdXRwdXQ6Om1v
ZChMVmFsdWUgbGVmdCwgTFZhbHVlIHJpZ2h0KQpAQCAtMTYxLDcgKzE2MSw3IEBAIExWYWx1ZSBP
dXRwdXQ6Om1vZChMVmFsdWUgbGVmdCwgTFZhbHVlIHIKIAogTFZhbHVlIE91dHB1dDo6Y2hpbGxN
b2QoTFZhbHVlIGxlZnQsIExWYWx1ZSByaWdodCkKIHsKLSAgICByZXR1cm4gbV9ibG9jay0+YXBw
ZW5kTmV3PEIzOjpWYWx1ZT4obV9wcm9jLCBCMzo6Q2hpbGxNb2QsIG9yaWdpbigpLCBsZWZ0LCBy
aWdodCk7CisgICAgcmV0dXJuIG1fYmxvY2stPmFwcGVuZE5ldzxCMzo6VmFsdWU+KG1fcHJvYywg
Y2hpbGwoQjM6Ok1vZCksIG9yaWdpbigpLCBsZWZ0LCByaWdodCk7CiB9CiAKIExWYWx1ZSBPdXRw
dXQ6Om5lZyhMVmFsdWUgdmFsdWUpCkluZGV4OiBXZWJzaXRlcy93ZWJraXQub3JnL0NoYW5nZUxv
Zwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBXZWJzaXRlcy93ZWJraXQub3JnL0NoYW5nZUxvZwkocmV2aXNpb24g
MjA2NTI0KQorKysgV2Vic2l0ZXMvd2Via2l0Lm9yZy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkK
QEAgLTEsMyArMSwxNSBAQAorMjAxNi0wOS0yOCAgRmlsaXAgUGl6bG8gIDxmcGl6bG9AYXBwbGUu
Y29tPgorCisgICAgICAgIEIzIG9wY29kZXMgc2hvdWxkIGxlYXZlIHJvb20gZm9yIGZsYWdzCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjI2OTIKKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKyAgICAgICAgCisgICAgICAgIFVw
ZGF0ZWQgdGhlIGRvY3VtZW50YXRpb24gdG8gdGFsayBhYm91dCBLaW5kIGFuZCB0aGUgaXNDaGls
bCBiaXQsIGFuZCB0byByZW1vdmUKKyAgICAgICAgQ2hpbGxEaXYvQ2hpbGxNb2QuCisKKyAgICAg
ICAgKiBkb2NzL2IzL2ludGVybWVkaWF0ZS1yZXByZXNlbnRhdGlvbi5odG1sOgorCiAyMDE2LTA5
LTI3ICBKb3NlcGggUGVjb3Jhcm8gIDxwZWNvcmFyb0BhcHBsZS5jb20+CiAKICAgICAgICAgVXBk
YXRlIHN0eWxlIGd1aWRlIGZvciAjcHJhZ21hIG9uY2UKSW5kZXg6IFdlYnNpdGVzL3dlYmtpdC5v
cmcvZG9jcy9iMy9pbnRlcm1lZGlhdGUtcmVwcmVzZW50YXRpb24uaHRtbAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBXZWJzaXRlcy93ZWJraXQub3JnL2RvY3MvYjMvaW50ZXJtZWRpYXRlLXJlcHJlc2VudGF0aW9u
Lmh0bWwJKHJldmlzaW9uIDIwNjUyNCkKKysrIFdlYnNpdGVzL3dlYmtpdC5vcmcvZG9jcy9iMy9p
bnRlcm1lZGlhdGUtcmVwcmVzZW50YXRpb24uaHRtbAkod29ya2luZyBjb3B5KQpAQCAtNzgsOSAr
NzgsMTQgQEAKICAgICA8aDI+VmFsdWVzPC9oMj4KIAogICAgIDxwPlZhcmlhYmxlcywgYW5kIHRo
ZSBpbnN0cnVjdGlvbnMgdGhhdCBkZWZpbmUgdGhlbSwgYXJlIHJlcHJlc2VudGVkIHVzaW5nIHRo
ZSBWYWx1ZSBvYmplY3QuCi0gICAgICBUaGUgVmFsdWUgb2JqZWN0IGhhcyBhIHJldHVybiB0eXBl
LCBhbiBvcGNvZGUsIGFuZCB6ZXJvIG9yIG1vcmUgY2hpbGRyZW4uICBDaGlsZHJlbiBhcmUKKyAg
ICAgIFRoZSBWYWx1ZSBvYmplY3QgaGFzIGEgcmV0dXJuIHR5cGUsIGEga2luZCwgYW5kIHplcm8g
b3IgbW9yZSBjaGlsZHJlbi4gIENoaWxkcmVuIGFyZQogICAgICAgcmVmZXJlbmNlcyB0byBvdGhl
ciBWYWx1ZXMuICBUaG9zZSB2YWx1ZXMgYXJlIHVzZWQgYXMgaW5wdXQgdG8gdGhlIGluc3RydWN0
aW9uIHRoYXQKICAgICAgIGNvbXB1dGVzIHRoaXMgdmFsdWUuPC9wPgorICAgIAorICAgIDxwPlRo
ZSB2YWx1ZSBraW5kIGlzIGEgY29tYmluYXRpb24gb2YgYW4gb3Bjb2RlIGFuZCBvcHRpb25hbCBm
bGFncy4gVGhlIGZsYWdzIGFsbG93IGEgc2luZ2xlCisgICAgICBvcGNvZGUgdG8gaGF2ZSBtYW55
IHZhcmlhbnRzLiBGb3IgZXhhbXBsZSwgRGl2IGFuZCBNb2QgbWF5IGhhdmUgdGhlIENoaWxsIGZs
YWcgc2V0IHRvIGluZGljYXRlCisgICAgICB0aGF0IHRoZXkgc2hvdWxkIG5vdCB0cmFwIG9uIGNv
cm5lciBjYXNlcy48L3A+CisgICAgCiAgICAgPHA+VmFsdWVzIGFsc28gaGF2ZSBhIHVuaXF1ZSAz
Mi1iaXQgaW5kZXggdGhhdCBpcyB1c2VkIGFzIHRoZSBuYW1lLjwvcD4KICAgICAKICAgICA8cD5F
eGFtcGxlOjwvcD4KQEAgLTIzMSwzMSArMjM2LDM2IEBACiAgICAgICAgIGFjY29yZGluZyB0byB0
aGUgSUVFRSA4NTQgc3BlYy48L2RkPgogCiAgICAgICA8ZHQ+VCBEaXYoVCwgVCk8L2R0PgotICAg
ICAgPGRkPldvcmtzIHdpdGggYW55IHR5cGUgZXhjZXB0IFZvaWQuICBGb3IgaW50ZWdlciB0eXBl
cywgdGhpcyByZXByZXNlbnRzIHNpZ25lZCBkaXZpc2lvbgotICAgICAgICB3aXRoIHJvdW5kLXRv
LXplcm8uICBJdHMgYmVoYXZpb3IgaXMgdW5kZWZpbmVkIGZvciB4LzAgb3IgLTI8c3VwPjMxPC9z
dXA+Ly0xLiAgRm9yIGZsb2F0aW5nCi0gICAgICAgIHBvaW50IHR5cGVzLCB0aGlzIHJlcHJlc2Vu
dHMgZGl2aXNpb24gYWNjb3JkaW5nIHRvIHRoZSBJRUVFIDg1NCBzcGVjLjwvZGQ+CisgICAgICA8
ZGQ+CisgICAgICAgIDxwPldvcmtzIHdpdGggYW55IHR5cGUgZXhjZXB0IFZvaWQuICBGb3IgaW50
ZWdlciB0eXBlcywgdGhpcyByZXByZXNlbnRzIHNpZ25lZAorICAgICAgICAgIGRpdmlzaW9uIHdp
dGggcm91bmQtdG8temVyby4gIEJ5IGRlZmF1bHQsIGl0cyBiZWhhdmlvciBpcyB1bmRlZmluZWQg
Zm9yIHgvMCBvcgorICAgICAgICAgIC0yPHN1cD4zMTwvc3VwPi8tMS4gIEZvciBmbG9hdGluZyBw
b2ludCB0eXBlcywgdGhpcyByZXByZXNlbnRzIGRpdmlzaW9uIGFjY29yZGluZworICAgICAgICAg
IHRvIHRoZSBJRUVFIDg1NCBzcGVjLjwvcD4KKyAgICAgICAgPHA+SW50ZWdlciBEaXYgbWF5IGhh
dmUgdGhlIENoaWxsIGZsYWcgc2V0LiBZb3UgY2FuIGNyZWF0ZSBhIENoaWxsIERpdiBieSBzYXlp
bmcKKyAgICAgICAgICA8Y29kZT5jaGlsbChEaXYpPC9jb2RlPiBpbnN0ZWFkIG9mIDxjb2RlPkRp
djwvY29kZT47IHRoZSBmb3JtZXIgY3JlYXRlcyBhIEtpbmQKKyAgICAgICAgICB0aGF0IGhhcyBE
aXYgYXMgdGhlIG9wY29kZSBhbmQgaGFzIHRoZSBDaGlsbCBiaXQgc2V0LiBBbiBvcGVyYXRpb24g
aXMgc2FpZCB0byBiZQorICAgICAgICAgIGNoaWxsIGlmIGl0IHJldHVybnMgYSBzZW5zaWJsZSB2
YWx1ZSB3aGVuZXZlciBpdHMgbm9uLWNoaWxsIGZvcm0gd291bGQgaGF2ZSBoYWQKKyAgICAgICAg
ICB1bmRlZmluZWQgYmVoYXZpb3IuIENoaWxsIERpdiB0dXJucyB4LzAgaW50byAwIGFuZCAtMjxz
dXA+MzE8L3N1cD4vLTEgaW50bworICAgICAgICAgIC0yPHN1cD4zMTwvc3VwPi4gV2UgcmVjb2du
aXplIHRoaXMgaW4gSVIgYmVjYXVzZSBpdCdzIGV4YWN0bHkgdGhlIHNlbWFudGljcyBvZgorICAg
ICAgICAgIGRpdmlzaW9uIG9uIEFSTTY0LCBhbmQgaXQncyBhbHNvIGV4YWN0bHkgdGhlIHNlbWFu
dGljcyB0aGF0IEphdmFTY3JpcHQgd2FudHMgZm9yCisgICAgICAgICAgIih4L3kpfDAiLjwvcD4K
KyAgICAgIDwvZGQ+CiAKICAgICAgIDxkdD5UIE1vZChULCBUKTwvZHQ+Ci0gICAgICA8ZGQ+V29y
a3Mgd2l0aCBhbnkgdHlwZSBleGNlcHQgVm9pZC4gIEZvciBpbnRlZ2VyIHR5cGVzLCB0aGlzIHJl
cHJlc2VudHMgc2lnbmVkIG1vZHVsby4KLSAgICAgICAgSXRzIGJlaGF2aW9yIGlzIHVuZGVmaW5l
ZCBmb3IgeCUwIG9yIC0yPHN1cD4zMTwvc3VwPiUtMS4gIEZvciBmbG9hdGluZyBwb2ludCB0eXBl
cywgdGhpcwotICAgICAgICByZXByZXNlbnRzIG1vZHVsbyBhY2NvcmRpbmcgdG8gImZtb2QoKSIu
PC9kZD4KKyAgICAgIDxkZD4KKyAgICAgICAgPHA+V29ya3Mgd2l0aCBhbnkgdHlwZSBleGNlcHQg
Vm9pZC4gIEZvciBpbnRlZ2VyIHR5cGVzLCB0aGlzIHJlcHJlc2VudHMgc2lnbmVkCisgICAgICAg
ICAgbW9kdWxvLiBCeSBkZWZhdWx0LCBpdHMgYmVoYXZpb3IgaXMgdW5kZWZpbmVkIGZvciB4JTAg
b3IgLTI8c3VwPjMxPC9zdXA+JS0xLiAgRm9yCisgICAgICAgICAgZmxvYXRpbmcgcG9pbnQgdHlw
ZXMsIHRoaXMgcmVwcmVzZW50cyBtb2R1bG8gYWNjb3JkaW5nIHRvICJmbW9kKCkiLjwvcD4KKyAg
ICAgICAgPHA+SW50ZWdlciBNb2QgbWF5IGhhdmUgdGhlIENoaWxsIGZsYWcgc2V0LiBZb3UgY2Fu
IGNyZWF0ZSBhIENoaWxsIE1vZCBieSBzYXlpbmcKKyAgICAgICAgICA8Y29kZT5jaGlsbChNb2Qp
PC9jb2RlPi4gQ2hpbGwgTW9kIHR1cm5zIHglMCBpbnRvIDAgYW5kIC0yPHN1cD4zMTwvc3VwPiUt
MSBpbnRvCisgICAgICAgICAgMC48L3A+CisgICAgICA8L2RkPgogCiAgICAgICA8ZHQ+VCBOZWco
VCk8L2R0PgogICAgICAgPGRkPldvcmtzIHdpdGggYW55IHR5cGUgZXhjZXB0IFZvaWQuICBGb3Ig
aW50ZWdlciB0eXBlcywgdGhpcyByZXByZXNlbnRzIHR3b3MtY29tcGxlbWVudAogICAgICAgICBu
ZWdhdGlvbi4gIEZvciBmbG9hdGluZyBwb2ludCB0eXBlcywgdGhpcyByZXByZXNlbnRzIG5lZ2F0
aW9uIGFjY29yZGluZyB0byB0aGUgSUVFRQogICAgICAgICBzcGVjLjwvZGQ+CiAKLSAgICAgIDxk
dD5UIENoaWxsRGl2KFQsIFQpPC9kdD4KLSAgICAgIDxkZD5DaGlsbCBkaXZpc2lvbi4gIFZhbGlk
IGZvciBJbnQzMiBhbmQgSW50NjQuICBBbiBvcGVyYXRpb24gaXMgc2FpZCB0byBiZSBjaGlsbCBp
ZiBpdAotICAgICAgICByZXR1cm5zIGEgc2Vuc2libGUgdmFsdWUgd2hlbmV2ZXIgaXRzIG5vbi1j
aGlsbCBmb3JtIHdvdWxkIGhhdmUgaGFkIHVuZGVmaW5lZCBiZWhhdmlvci4KLSAgICAgICAgQ2hp
bGxEaXYgdHVybnMgeC8wIGludG8gMCBhbmQgLTI8c3VwPjMxPC9zdXA+Ly0xIGludG8gLTI8c3Vw
PjMxPC9zdXA+LiAgVGhpcyBpcyBhIHNlcGFyYXRlIG9wY29kZQotICAgICAgICBiZWNhdXNlIGl0
J3MgZXhhY3RseSB0aGUgc2VtYW50aWNzIG9mIGRpdmlzaW9uIG9uIEFSTTY0LCBhbmQgaXQncyBh
bHNvIGV4YWN0bHkgdGhlCi0gICAgICAgIHNlbWFudGljcyB0aGF0IEphdmFTY3JpcHQgd2FudHMg
Zm9yICIoeC95KXwwIi48L2RkPgotCi0gICAgICA8ZHQ+VCBDaGlsbE1vZChULCBUKTwvZHQ+Ci0g
ICAgICA8ZGQ+Q2hpbGwgbW9kdWxvLiAgVmFsaWQgZm9yIEludDMyIGFuZCBJbnQ2NC4gIENobGxN
b2QgdHVybnMgeCUwIGludG8gMCBhbmQKLSAgICAgICAgLTI8c3VwPjMxPC9zdXA+JS0xIGludG8g
MC48L2RkPgotCiAgICAgICA8ZHQ+VCBCaXRBbmQoVCwgVCk8L2R0PgogICAgICAgPGRkPkJpdHdp
c2UgYW5kLiAgVmFsaWQgZm9yIEludDMyIGFuZCBJbnQ2NC48L2RkPgogCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>290176</attachid>
            <date>2016-09-28 21:36:18 -0700</date>
            <delta_ts>2016-09-29 10:48:38 -0700</delta_ts>
            <desc>the patch</desc>
            <filename>blah.patch</filename>
            <type>text/plain</type>
            <size>101847</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMjA2NTc0KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE2NiBA
QAorMjAxNi0wOS0yOCAgRmlsaXAgUGl6bG8gIDxmcGl6bG9AYXBwbGUuY29tPgorCisgICAgICAg
IEIzIG9wY29kZXMgc2hvdWxkIGxlYXZlIHJvb20gZm9yIGZsYWdzCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjI2OTIKKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBJdCB1c2VkIHRvIGJlIHRoYXQgdGhlIG1h
aW4gdGhpbmcgdGhhdCBkZXRlcm1pbmVkIHdoYXQgYSBWYWx1ZSBkaWQgd2FzIHRoZSBvcGNvZGUu
IFRoZQorICAgICAgICBPcGNvZGUgd2FzIGhvdyB5b3Uga25ldyB3aGF0IHN1YmNsYXNzIG9mIFZh
bHVlIHlvdSBoYWQuIFRoZSBvcGNvZGUgdG9sZCB5b3Ugd2hhdCB0aGUgVmFsdWUKKyAgICAgICAg
YWN0dWFsbHkgZGlkLiBUaGlzIGNoYW5nZSByZXBsYWNlcyBPcGNvZGUgd2l0aCBLaW5kLCB3aGlj
aCBpcyBhIHR1cGxlIG9mIG9wY29kZSBhbmQgb3RoZXIKKyAgICAgICAgc3R1ZmYuCisgICAgICAg
IAorICAgICAgICBPcGNvZGVzIGFyZSBncmVhdCwgYW5kIHRoYXQncyBob3cgbW9zdCBjb21waWxl
cnMgd29yay4gQnV0IG9wY29kZXMgYXJlIG9uZS1kaW1lbnNpb25hbC4gSGVyZQorICAgICAgICBp
cyBob3cgdGhpcyBtYW5pZmVzdHMuIFNheSB5b3UgaGF2ZSBhbiBvcGNvZGUsIGxpa2UgTG9hZC4g
WW91IHdpbGwgYmUgaGFwcHkgaWYgeW91ciBJUiBoYXMKKyAgICAgICAgb25lIExvYWQgb3Bjb2Rl
LiBCdXQgdGhlbiwgeW91IG1pZ2h0IGFkZCBMb2FkOFMvTG9hZDhaL0xvYWQxNlMvTG9hZDE2WiBv
cGNvZGVzLCBhcyB3ZSBoYXZlCisgICAgICAgIGRvbmUgaW4gQjMuIEIzIGhhcyBvbmUgZGltZW5z
aW9uIG9mIExvYWQgb3Bjb2Rlcywgd2hpY2ggZGV0ZXJtaW5lcyBzb21ldGhpbmcgbGlrZSB0aGUg
QyB0eXBlCisgICAgICAgIG9mIHRoZSBsb2FkLiBCdXQgaW4gdGhlIHZlcnkgbmVhciBmdXR1cmUs
IHdlIHdpbGwgd2FudCB0byBhZGQgdHdvIG1vcmUgZGltZW5zaW9ucyB0byBMb2FkczoKKyAgICAg
ICAgCisgICAgICAgIC0gQSBmbGFnIHRvIHNheSBpZiB0aGUgbG9hZCB0cmFwcy4KKyAgICAgICAg
LSBBIGZsYWcgdG8gc2F5IGlmIHRoZSBsb2FkIGhhcyBhY3F1aXJlIHNlbWFudGljcy4KKyAgICAg
ICAgCisgICAgICAgIE1hcHBpbmcgdGhlc2UgdGhyZWUgZGltZW5zaW9ucyAodHlwZSwgdHJhcCwg
YWNxdWlyZSkgb250byB0aGUgb25lLWRpbWVuc2lvbmFsIE9wY29kZSBzcGFjZQorICAgICAgICB3
b3VsZCBjcmVhdGUgbWF5aGFtOiBMb2FkOFMsIExvYWQ4U1RyYXAsIExvYWQ4U0FjcXVpcmUsIExv
YWQ4U1RyYXBBY3F1aXJlLCBMb2FkOFosCisgICAgICAgIExvYWQ4WlRyYXAsIGV0Yy4KKyAgICAg
ICAgCisgICAgICAgIFRoaXMgaGFwcGVucyBpbiBvdGhlciBwYXJ0cyBvZiB0aGUgSVIuIEZvciBl
eGFtcGxlLCB3ZSBoYXZlIGEgZGltZW5zaW9uIG9mIGFyaXRobWV0aWMKKyAgICAgICAgb3BlcmF0
aW9uczogYWRkLCBzdWIsIG11bCwgZGl2LCBtb2QsIGV0Yy4gVGhlbiB3ZSBoYXZlIHRoZSBjaGls
bCBmbGFnLiBCdXQgc2luY2Ugb3Bjb2RlcworICAgICAgICBhcmUgb25lLWRpbWVuc2lvbmFsLCB0
aGF0IG1lYW5zIGhhdmluZyBDaGlsbERpdiBhbmQgQ2hpbGxNb2QsIGFuZCB0b25zIG9mIHBsYWNl
cyBpbiB0aGUKKyAgICAgICAgY29tcGlsZXIgdGhhdCBjYXNlIG9uIGJvdGggRGl2IGFuZCBDaGls
bERpdiwgb3IgY2FzZSBvbiBib3RoIE1vZCBhbmQgQ2hpbGxNb2QsIHNpbmNlIHRoZXkKKyAgICAg
ICAgYXJlIG9ubHkgaW50ZXJlc3RlZCBpbiB0aGUga2luZCBvZiBhcml0aG1ldGljIGJlaW5nIGRv
bmUgYW5kIG5vdCB0aGUgY2hpbGxuZXNzLgorICAgICAgICAKKyAgICAgICAgVGhvdWdoIHRoZSBl
eGFtcGxlcyBhbGwgaW52b2x2ZSBiaXRzIChjaGlsbCBvciBub3QsIHRyYXBwaW5nIG9yIG5vdCwg
ZXRjKSwgSSBjYW4gaW1hZ2luZQorICAgICAgICBvdGhlciBwcm9wZXJ0aWVzIHRoYXQgYmVoYXZl
IG1vcmUgbGlrZSBzbWFsbCBlbnVtcywgbGlrZSBpZiB3ZSBmaWxsIG91dCBtb3JlIG1lbW9yeSBv
cmRlcmluZworICAgICAgICBtb2RlcyBvdGhlciB0aGFuIGp1c3QgImFjcXVpcmU/IHllcy9ubyIu
IFRoZXJlIHdpbGwgZXZlbnR1YWxseSBoYXZlIHRvIGJlIHNvbWV0aGluZyBsaWtlIGEKKyAgICAg
ICAgc3RkOjptZW1vcnlfb3JkZXIgYXNzb2NpYXRlZCB3aXRoIG1lbW9yeSBhY2Nlc3Nlcy4KKyAg
ICAgICAgCisgICAgICAgIE9uZSBhcHByb2FjaCB0byB0aGlzIHByb2JsZW0gaXMgdG8gaGF2ZSBh
IFZhbHVlIHN1YmNsYXNzIHRoYXQgY29udGFpbnMgZmllbGRzIHdpdGggdGhlIG1ldGEKKyAgICAg
ICAgZGF0YS4gSSBkb24ndCBsaWtlIHRoaXMgZm9yIHR3byByZWFzb25zOgorICAgICAgICAKKyAg
ICAgICAgLSBJbiBidWcgMTYyNjg4LCBJIHdhbnQgdG8gbWFrZSB0cmFwcGluZyBtZW1vcnkgYWNj
ZXNzZXMgaGF2ZSBzdGFja21hcHMuIFRoaXMgbWVhbnMgdGhhdCBhCisgICAgICAgICAgdHJhcHBp
bmcgbWVtb3J5IGFjY2VzcyB3b3VsZCBoYXZlIGEgZGlmZmVyZW50IFZhbHVlIHN1YmNsYXNzIHRo
YW4gYSBub24tdHJhcHBpbmcgbWVtb3J5CisgICAgICAgICAgYWNjZXNzLiBTbywgdGhpcyBtZXRh
LWRhdGEgbmVlZHMgdG8gY2hhbm5lbCBpbnRvIFZhbHVlVHlwZTo6YWNjZXB0cygpLiBDdXJyZW50
bHkgdGhhdAorICAgICAgICAgIHRha2VzIE9wY29kZSBhbmQgbm90aGluZyBlbHNlLgorICAgICAg
ICAKKyAgICAgICAgLSBDb21waWxlciBJUnMgYXJlIGFsbCBhYm91dCBtYWtpbmcgY29tbW9uIHRh
c2tzIGVhc3kuIElmIGl0IGJlY29tZXMgY29tbW9ucGxhY2UgZm9yIG9wY29kZXMKKyAgICAgICAg
ICB0byByZXF1aXJlIGEgY3VzdG9tIFZhbHVlIHN1YmNsYXNzIGp1c3QgZm9yIGEgYml0IHRoZW4g
dGhhdCdzIG5vdCB2ZXJ5IGVhc3kuCisgICAgICAgIAorICAgICAgICBUaGlzIGNoYW5nZSBhZGRy
ZXNzZXMgdGhpcyBwcm9ibGVtIGJ5IG1ha2luZyB0aGUgY29tcGlsZXIgcGFzcyBhcm91bmQgS2lu
ZHMgcmF0aGVyIHRoYW4KKyAgICAgICAgT3Bjb2Rlcy4gQSBLaW5kIGNvbnRhaW5zIGFuIE9wY29k
ZSBhcyB3ZWxsIGFzIGFueSBudW1iZXIgb2Ygb3Bjb2RlLXNwZWNpZmljIGJpdHMuIFRoaXMKKyAg
ICAgICAgY2hhbmdlIGRlbW9uc3RyYXRlcyBob3cgS2luZCBzaG91bGQgYmUgdXNlZCBieSBjb252
ZXJ0aW5nIGNoaWxsbmVzcyB0byBpdC4gS2luZCBoYXMKKyAgICAgICAgaGFzSXNDaGlsbCgpLCBp
c0NoaWxsKCksIGFuZCBzZXRJc0NoaWxsKCkgbWV0aG9kcy4gaGFzSXNDaGlsbCgpIGlzIHRydWUg
b25seSBmb3IgRGl2IGFuZAorICAgICAgICBNb2QuIHNldElzQ2hpbGwoKSBhc3NlcnRzIGlmICFo
YXNJc0NoaWxsKCkuIElmIHlvdSB3YW50IHRvIGNyZWF0ZSBhIENoaWxsIERpdiwgeW91IHNheQor
ICAgICAgICBjaGlsbChEaXYpLiBJUiBkdW1wcyB3aWxsIHByaW50IGl0IGxpa2UgdGhpczoKKwor
ICAgICAgICAgICAgSW50MzIgQDM4ID0gRGl2PENoaWxsPihAMzYsIEAzNywgREZHOkAyNCwgQ29u
dHJvbERlcGVuZGVudCkKKyAgICAgICAgCisgICAgICAgIFdoZXJlICJEaXY8Q2hpbGw+IiBpcyBo
b3cgYSBLaW5kIHRoYXQgaGFzRXh0cmFCaXRzKCkgZHVtcHMgaXRzZWxmLiBJZiBhIEtpbmQgZG9l
cyBub3QKKyAgICAgICAgaGFzRXh0cmFCaXRzKCkgKHRoZSBub3JtYWwgY2FzZSkgdGhlbiBpdCBk
dW1wcyBsaWtlIGEgbm9ybWFsIE9wY29kZSAod2l0aG91dCB0aGUgIjw+IikuCisgICAgICAgIAor
ICAgICAgICBJIHJlcGxhY2VkIG1hbnkgdXNlcyBvZiBPcGNvZGUgd2l0aCBLaW5kLiBOZXcgY29k
ZSBoYXMgdG8gYmUgbWluZGZ1bCB0aGF0IE9wY29kZSBtYXkgbm90IGJlCisgICAgICAgIHRoZSBy
aWdodCB3YXkgdG8gc3VtbWFyaXplIHdoYXQgYSB2YWx1ZSBkb2VzLCBhbmQgc28gaW4gbWFueSBj
YXNlcyBpdCdzIGJldHRlciB0byBjYXJyeQorICAgICAgICBhcm91bmQgYSBLaW5kIGluc3RlYWQg
LSBlc3BlY2lhbGx5IGlmIHlvdSB3aWxsIHVzZSBpdCB0byBzdGFtcCBvdXQgbmV3IFZhbHVlcy4g
T3Bjb2RlIGlzIG5vCisgICAgICAgIGxvbmdlciBzdWZmaWNpZW50IHRvIHBlcmZvcm0gYSBkeW5h
bWljIFZhbHVlIGNhc3QsIHNpbmNlIHRoYXQgY29kZSBub3cgdXNlcyBLaW5kLiBWYWx1ZUtleQor
ICAgICAgICBub3cgd2FudHMgYSBLaW5kIGluc3RlYWQgb2YgYW4gT3Bjb2RlLiBBbGwgVmFsdWUg
Y29uc3RydWN0b3JzIG5vdyB0YWtlIEtpbmQgaW5zdGVhZCBvZgorICAgICAgICBPcGNvZGUuIEJ1
dCBtb3N0IG9wY29kZXMgZG9uJ3QgZ2V0IGFueSBleHRyYSBLaW5kIGJpdHMsIGFuZCBzbyB0aGUg
Y29kZSB0aGF0IG9wZXJhdGVzIG9uCisgICAgICAgIHRob3NlIG9wY29kZXMgaXMgbGFyZ2VseSB1
bmNoYW5nZWQuCisgICAgICAgIAorICAgICAgICAqIENNYWtlTGlzdHMudHh0OgorICAgICAgICAq
IEphdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogYjMv
QjNBcmd1bWVudFJlZ1ZhbHVlLmg6CisgICAgICAgICogYjMvQjNDQ2FsbFZhbHVlLmg6CisgICAg
ICAgICogYjMvQjNDaGVja1ZhbHVlLmNwcDoKKyAgICAgICAgKEpTQzo6QjM6OkNoZWNrVmFsdWU6
OmNvbnZlcnRUb0FkZCk6CisgICAgICAgIChKU0M6OkIzOjpDaGVja1ZhbHVlOjpDaGVja1ZhbHVl
KToKKyAgICAgICAgKiBiMy9CM0NoZWNrVmFsdWUuaDoKKyAgICAgICAgKEpTQzo6QjM6OkNoZWNr
VmFsdWU6OmFjY2VwdHMpOgorICAgICAgICAqIGIzL0IzQ29uc3QzMlZhbHVlLmg6CisgICAgICAg
ICogYjMvQjNDb25zdDY0VmFsdWUuaDoKKyAgICAgICAgKiBiMy9CM0NvbnN0RG91YmxlVmFsdWUu
aDoKKyAgICAgICAgKiBiMy9CM0NvbnN0RmxvYXRWYWx1ZS5oOgorICAgICAgICAqIGIzL0IzRmVu
Y2VWYWx1ZS5oOgorICAgICAgICAqIGIzL0IzS2luZC5jcHA6IEFkZGVkLgorICAgICAgICAoSlND
OjpCMzo6S2luZDo6ZHVtcCk6CisgICAgICAgICogYjMvQjNLaW5kLmg6IEFkZGVkLgorICAgICAg
ICAoSlNDOjpCMzo6S2luZDo6S2luZCk6CisgICAgICAgIChKU0M6OkIzOjpLaW5kOjpvcGNvZGUp
OgorICAgICAgICAoSlNDOjpCMzo6S2luZDo6c2V0T3Bjb2RlKToKKyAgICAgICAgKEpTQzo6QjM6
OktpbmQ6Omhhc0V4dHJhQml0cyk6CisgICAgICAgIChKU0M6OkIzOjpLaW5kOjpoYXNJc0NoaWxs
KToKKyAgICAgICAgKEpTQzo6QjM6OktpbmQ6OmlzQ2hpbGwpOgorICAgICAgICAoSlNDOjpCMzo6
S2luZDo6c2V0SXNDaGlsbCk6CisgICAgICAgIChKU0M6OkIzOjpLaW5kOjpvcGVyYXRvcj09KToK
KyAgICAgICAgKEpTQzo6QjM6OktpbmQ6Om9wZXJhdG9yIT0pOgorICAgICAgICAoSlNDOjpCMzo6
S2luZDo6b3BlcmF0b3I8KToKKyAgICAgICAgKEpTQzo6QjM6OktpbmQ6Om9wZXJhdG9yPik6Cisg
ICAgICAgIChKU0M6OkIzOjpLaW5kOjpvcGVyYXRvcjw9KToKKyAgICAgICAgKEpTQzo6QjM6Oktp
bmQ6Om9wZXJhdG9yPj0pOgorICAgICAgICAoSlNDOjpCMzo6S2luZDo6aGFzaCk6CisgICAgICAg
IChKU0M6OkIzOjpLaW5kOjppc0hhc2hUYWJsZURlbGV0ZWRWYWx1ZSk6CisgICAgICAgIChKU0M6
OkIzOjpjaGlsbCk6CisgICAgICAgIChKU0M6OkIzOjpLaW5kSGFzaDo6aGFzaCk6CisgICAgICAg
IChKU0M6OkIzOjpLaW5kSGFzaDo6ZXF1YWwpOgorICAgICAgICAqIGIzL0IzTG93ZXJNYWNyb3Mu
Y3BwOgorICAgICAgICAqIGIzL0IzTG93ZXJUb0Fpci5jcHA6CisgICAgICAgIChKU0M6OkIzOjpB
aXI6Okxvd2VyVG9BaXI6Omxvd2VyKToKKyAgICAgICAgKiBiMy9CM01lbW9yeVZhbHVlLmg6Cisg
ICAgICAgICogYjMvQjNPcGNvZGUuY3BwOgorICAgICAgICAoV1RGOjpwcmludEludGVybmFsKToK
KyAgICAgICAgKiBiMy9CM09wY29kZS5oOgorICAgICAgICAqIGIzL0IzUGF0Y2hwb2ludFZhbHVl
Lmg6CisgICAgICAgIChKU0M6OkIzOjpQYXRjaHBvaW50VmFsdWU6OmFjY2VwdHMpOgorICAgICAg
ICAqIGIzL0IzUmVkdWNlU3RyZW5ndGguY3BwOgorICAgICAgICAqIGIzL0IzU2xvdEJhc2VWYWx1
ZS5oOgorICAgICAgICAqIGIzL0IzU3RhY2ttYXBWYWx1ZS5jcHA6CisgICAgICAgIChKU0M6OkIz
OjpTdGFja21hcFZhbHVlOjpTdGFja21hcFZhbHVlKToKKyAgICAgICAgKiBiMy9CM1N0YWNrbWFw
VmFsdWUuaDoKKyAgICAgICAgKiBiMy9CM1N3aXRjaFZhbHVlLmg6CisgICAgICAgIChKU0M6OkIz
OjpTd2l0Y2hWYWx1ZTo6YWNjZXB0cyk6CisgICAgICAgICogYjMvQjNVcHNpbG9uVmFsdWUuaDoK
KyAgICAgICAgKiBiMy9CM1ZhbGlkYXRlLmNwcDoKKyAgICAgICAgKiBiMy9CM1ZhbHVlLmNwcDoK
KyAgICAgICAgKEpTQzo6QjM6OlZhbHVlOjpkdW1wKToKKyAgICAgICAgKEpTQzo6QjM6OlZhbHVl
OjpkZWVwRHVtcCk6CisgICAgICAgIChKU0M6OkIzOjpWYWx1ZTo6aW52ZXJ0ZWRDb21wYXJlKToK
KyAgICAgICAgKEpTQzo6QjM6OlZhbHVlOjplZmZlY3RzKToKKyAgICAgICAgKEpTQzo6QjM6OlZh
bHVlOjprZXkpOgorICAgICAgICAoSlNDOjpCMzo6VmFsdWU6OnR5cGVGb3IpOgorICAgICAgICAo
SlNDOjpCMzo6VmFsdWU6OmJhZEtpbmQpOgorICAgICAgICAoSlNDOjpCMzo6VmFsdWU6OmJhZE9w
Y29kZSk6IERlbGV0ZWQuCisgICAgICAgICogYjMvQjNWYWx1ZS5oOgorICAgICAgICAqIGIzL0Iz
VmFsdWVJbmxpbmVzLmg6CisgICAgICAgIChKU0M6OkIzOjpWYWx1ZTo6YXMpOgorICAgICAgICAq
IGIzL0IzVmFsdWVLZXkuY3BwOgorICAgICAgICAoSlNDOjpCMzo6VmFsdWVLZXk6OmR1bXApOgor
ICAgICAgICAoSlNDOjpCMzo6VmFsdWVLZXk6Om1hdGVyaWFsaXplKToKKyAgICAgICAgKiBiMy9C
M1ZhbHVlS2V5Lmg6CisgICAgICAgIChKU0M6OkIzOjpWYWx1ZUtleTo6VmFsdWVLZXkpOgorICAg
ICAgICAoSlNDOjpCMzo6VmFsdWVLZXk6OmtpbmQpOgorICAgICAgICAoSlNDOjpCMzo6VmFsdWVL
ZXk6Om9wY29kZSk6CisgICAgICAgIChKU0M6OkIzOjpWYWx1ZUtleTo6b3BlcmF0b3I9PSk6Cisg
ICAgICAgIChKU0M6OkIzOjpWYWx1ZUtleTo6aGFzaCk6CisgICAgICAgICogYjMvQjNWYWx1ZUtl
eUlubGluZXMuaDoKKyAgICAgICAgKEpTQzo6QjM6OlZhbHVlS2V5OjpWYWx1ZUtleSk6CisgICAg
ICAgICogYjMvQjNWYXJpYWJsZVZhbHVlLmNwcDoKKyAgICAgICAgKEpTQzo6QjM6OlZhcmlhYmxl
VmFsdWU6OlZhcmlhYmxlVmFsdWUpOgorICAgICAgICAqIGIzL0IzVmFyaWFibGVWYWx1ZS5oOgor
ICAgICAgICAqIGIzL3Rlc3RiMy5jcHA6CisgICAgICAgIChKU0M6OkIzOjp0ZXN0Q2hpbGxEaXYp
OgorICAgICAgICAoSlNDOjpCMzo6dGVzdENoaWxsRGl2VHdpY2UpOgorICAgICAgICAoSlNDOjpC
Mzo6dGVzdENoaWxsRGl2NjQpOgorICAgICAgICAoSlNDOjpCMzo6dGVzdENoaWxsTW9kQXJnKToK
KyAgICAgICAgKEpTQzo6QjM6OnRlc3RDaGlsbE1vZEFyZ3MpOgorICAgICAgICAoSlNDOjpCMzo6
dGVzdENoaWxsTW9kSW1tcyk6CisgICAgICAgIChKU0M6OkIzOjp0ZXN0Q2hpbGxNb2RBcmczMik6
CisgICAgICAgIChKU0M6OkIzOjp0ZXN0Q2hpbGxNb2RBcmdzMzIpOgorICAgICAgICAoSlNDOjpC
Mzo6dGVzdENoaWxsTW9kSW1tczMyKToKKyAgICAgICAgKEpTQzo6QjM6OnRlc3RTd2l0Y2hDaGls
bERpdik6CisgICAgICAgIChKU0M6OkIzOjp0ZXN0RW50cnlTd2l0Y2hXaXRoQ29tbW9uUGF0aHMp
OgorICAgICAgICAoSlNDOjpCMzo6dGVzdEVudHJ5U3dpdGNoV2l0aENvbW1vblBhdGhzQW5kTm9u
VHJpdmlhbEVudHJ5cG9pbnQpOgorICAgICAgICAqIGZ0bC9GVExPdXRwdXQuY3BwOgorICAgICAg
ICAoSlNDOjpGVEw6Ok91dHB1dDo6Y2hpbGxEaXYpOgorICAgICAgICAoSlNDOjpGVEw6Ok91dHB1
dDo6Y2hpbGxNb2QpOgorCiAyMDE2LTA5LTI4ICBTYWFtIEJhcmF0aSAgPHNiYXJhdGlAYXBwbGUu
Y29tPgogCiAgICAgICAgIHN0cmluZ1Byb3RvRnVuY1JlcGVhdENoYXJhY3RlciB3aWxsIHJldHVy
biBgbnVsbGAgd2hlbiBpdCBzaG91bGQgbm90CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
Q01ha2VMaXN0cy50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL0NNYWtl
TGlzdHMudHh0CShyZXZpc2lvbiAyMDY1MjQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQ01h
a2VMaXN0cy50eHQJKHdvcmtpbmcgY29weSkKQEAgLTEzMyw2ICsxMzMsNyBAQCBzZXQoSmF2YVNj
cmlwdENvcmVfU09VUkNFUwogICAgIGIzL0IzSGVhcFJhbmdlLmNwcAogICAgIGIzL0IzSW5mZXJT
d2l0Y2hlcy5jcHAKICAgICBiMy9CM0luc2VydGlvblNldC5jcHAKKyAgICBiMy9CM0tpbmQuY3Bw
CiAgICAgYjMvQjNMZWdhbGl6ZU1lbW9yeU9mZnNldHMuY3BwCiAgICAgYjMvQjNMb3dlck1hY3Jv
cy5jcHAKICAgICBiMy9CM0xvd2VyTWFjcm9zQWZ0ZXJPcHRpbWl6YXRpb25zLmNwcApJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2oKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3Jl
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHJldmlzaW9uIDIwNjUyNCkKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCSh3
b3JraW5nIGNvcHkpCkBAIC03MjIsNiArNzIyLDggQEAKIAkJMEZEQjJDRUExNzQ4OTZDNzAwN0Iz
QzFCIC8qIENvbmN1cnJlbnRKSVRMb2NrLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSAwRkRCMkNFOTE3NDg5NkM3MDA3QjNDMUIgLyogQ29uY3VycmVudEpJ
VExvY2suaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9Owog
CQkwRkREQkZCNTE2NjZFRUQ4MDBDNTVGRUYgLyogREZHVmFyaWFibGVBY2Nlc3NEYXRhRHVtcC5j
cHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRkREQkZC
MjE2NjZFRUQ1MDBDNTVGRUYgLyogREZHVmFyaWFibGVBY2Nlc3NEYXRhRHVtcC5jcHAgKi87IH07
CiAJCTBGRERCRkI2MTY2NkVFREEwMEM1NUZFRiAvKiBERkdWYXJpYWJsZUFjY2Vzc0RhdGFEdW1w
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRkREQkZC
MzE2NjZFRUQ1MDBDNTVGRUYgLyogREZHVmFyaWFibGVBY2Nlc3NEYXRhRHVtcC5oICovOyB9Owor
CQkwRkRGNjdEMjFEOUM2RDI3MDAxQjk4MjUgLyogQjNLaW5kLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRkRGNjdEMTFEOUM2MDg2MDAxQjk4MjUgLyog
QjNLaW5kLmggKi87IH07CisJCTBGREY2N0QzMUQ5QzZEMkEwMDFCOTgyNSAvKiBCM0tpbmQuY3Bw
IGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEZERjY3RDAx
RDlDNjA4NjAwMUI5ODI1IC8qIEIzS2luZC5jcHAgKi87IH07CiAJCTBGREY3MDg1MUQzRjJDMjIw
MDkyNzQ0OSAvKiBBaXJMb3dlckVudHJ5U3dpdGNoLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGREY3MDgzMUQzRjJDMUYwMDkyNzQ0OSAvKiBBaXJM
b3dlckVudHJ5U3dpdGNoLmNwcCAqLzsgfTsKIAkJMEZERjcwODYxRDNGMkMyNTAwOTI3NDQ5IC8q
IEFpckxvd2VyRW50cnlTd2l0Y2guaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDBGREY3MDg0MUQzRjJDMUYwMDkyNzQ0OSAvKiBBaXJMb3dlckVudHJ5U3dp
dGNoLmggKi87IH07CiAJCTBGRTA1MDE0MUFBOTA5MTEwMEQzM0IzMyAvKiBBcmd1bWVudHNNb2Rl
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRkUwNTAw
QzFBQTkwOTExMDBEMzNCMzMgLyogQXJndW1lbnRzTW9kZS5oICovOyBzZXR0aW5ncyA9IHtBVFRS
SUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CkBAIC0yOTc1LDYgKzI5NzcsOCBAQAogCQkwRkRC
MkNFOTE3NDg5NkM3MDA3QjNDMUIgLyogQ29uY3VycmVudEpJVExvY2suaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gQ29uY3VycmVudEpJVExvY2suaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJMEZEREJGQjIxNjY2RUVENTAwQzU1RkVGIC8qIERGR1ZhcmlhYmxlQWNj
ZXNzRGF0YUR1bXAuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gREZH
VmFyaWFibGVBY2Nlc3NEYXRhRHVtcC5jcHA7IHBhdGggPSBkZmcvREZHVmFyaWFibGVBY2Nlc3NE
YXRhRHVtcC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGRERCRkIzMTY2NkVF
RDUwMEM1NUZFRiAvKiBERkdWYXJpYWJsZUFjY2Vzc0RhdGFEdW1wLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgbmFtZSA9IERGR1ZhcmlhYmxlQWNjZXNzRGF0YUR1bXAuaDsgcGF0aCA9IGRm
Zy9ERkdWYXJpYWJsZUFjY2Vzc0RhdGFEdW1wLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CisJCTBGREY2N0QwMUQ5QzYwODYwMDFCOTgyNSAvKiBCM0tpbmQuY3BwICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gQjNLaW5kLmNwcDsgcGF0aCA9IGIzL0IzS2luZC5jcHA7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTBGREY2N0QxMUQ5QzYwODYwMDFCOTgyNSAv
KiBCM0tpbmQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gQjNLaW5kLmg7IHBh
dGggPSBiMy9CM0tpbmQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEZERjcwODMx
RDNGMkMxRjAwOTI3NDQ5IC8qIEFpckxvd2VyRW50cnlTd2l0Y2guY3BwICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gQWlyTG93ZXJFbnRyeVN3aXRjaC5jcHA7IHBhdGggPSBi
My9haXIvQWlyTG93ZXJFbnRyeVN3aXRjaC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCTBGREY3MDg0MUQzRjJDMUYwMDkyNzQ0OSAvKiBBaXJMb3dlckVudHJ5U3dpdGNoLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IEFpckxvd2VyRW50cnlTd2l0Y2guaDsgcGF0
aCA9IGIzL2Fpci9BaXJMb3dlckVudHJ5U3dpdGNoLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTBGRTA1MDBDMUFBOTA5MTEwMEQzM0IzMyAvKiBBcmd1bWVudHNNb2RlLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEFyZ3VtZW50c01vZGUuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKQEAgLTQ4NjksNiArNDg3Myw4IEBACiAJCQkJMEZFQzg1QjQxQkUxNDYy
RjAwODBGRjc0IC8qIEIzSW5zZXJ0aW9uU2V0LmNwcCAqLywKIAkJCQkwRkVDODVCNTFCRTE0NjJG
MDA4MEZGNzQgLyogQjNJbnNlcnRpb25TZXQuaCAqLywKIAkJCQkwRkVDODVCNjFCRTE0NjJGMDA4
MEZGNzQgLyogQjNJbnNlcnRpb25TZXRJbmxpbmVzLmggKi8sCisJCQkJMEZERjY3RDAxRDlDNjA4
NjAwMUI5ODI1IC8qIEIzS2luZC5jcHAgKi8sCisJCQkJMEZERjY3RDExRDlDNjA4NjAwMUI5ODI1
IC8qIEIzS2luZC5oICovLAogCQkJCTQzNkU1NDUxMUM0NjhFNUYwMEI1QUY3MyAvKiBCM0xlZ2Fs
aXplTWVtb3J5T2Zmc2V0cy5jcHAgKi8sCiAJCQkJNDM2RTU0NTIxQzQ2OEU1RjAwQjVBRjczIC8q
IEIzTGVnYWxpemVNZW1vcnlPZmZzZXRzLmggKi8sCiAJCQkJMEYzMzhFMTkxQkYyODZFQTAwMTND
ODhGIC8qIEIzTG93ZXJNYWNyb3MuY3BwICovLApAQCAtNzcyOCw2ICs3NzM0LDcgQEAKIAkJCQkw
RjY0RUFGMzFDNEVDRDA2MDA2MjFFOUIgLyogQWlyQXJnSW5saW5lcy5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJQTVFQTcxMDUxOUY2REU3NDAwOThGNUVDIC8qIGdlbmVyYXRlX29iamNfY29uZmlndXJh
dGlvbl9oZWFkZXIucHkgaW4gSGVhZGVycyAqLywKIAkJCQlEQzY5Qjk5RDFEMTVGOTE0MDAyRTND
MDAgLyogQjNJbmZlclN3aXRjaGVzLmggaW4gSGVhZGVycyAqLywKKwkJCQkwRkRGNjdEMjFEOUM2
RDI3MDAxQjk4MjUgLyogQjNLaW5kLmggaW4gSGVhZGVycyAqLywKIAkJCQlBNUVBNzEwNjE5RjZE
RTc2MDA5OEY1RUMgLyogZ2VuZXJhdGVfb2JqY19jb25maWd1cmF0aW9uX2ltcGxlbWVudGF0aW9u
LnB5IGluIEhlYWRlcnMgKi8sCiAJCQkJMEY3QzM5RkYxQzkwQzU1QjAwNDgwMTUxIC8qIERGR09w
SW5mby5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTVFQTcxMDcxOUY2REU3ODAwOThGNUVDIC8qIGdl
bmVyYXRlX29iamNfcHJvdG9jb2xfdHlwZV9jb252ZXJzaW9uc19oZWFkZXIucHkgaW4gSGVhZGVy
cyAqLywKQEAgLTkwODAsNiArOTA4Nyw3IEBACiAJCQkJMEZGRkM5NTkxNEVGOTBBNjAwQzcyNTMy
IC8qIERGR0NTRVBoYXNlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBGMkZDNzcyMTZFMTJGNzEw
MDM4RDk3NiAvKiBERkdEQ0VQaGFzZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwRjMzOEUxMjFC
RjAyNzZDMDAxM0M4OEYgLyogQjNPcGFxdWVCeXByb2R1Y3RzLmNwcCBpbiBTb3VyY2VzICovLAor
CQkJCTBGREY2N0QzMUQ5QzZEMkEwMDFCOTgyNSAvKiBCM0tpbmQuY3BwIGluIFNvdXJjZXMgKi8s
CiAJCQkJMEY4RjJCOTkxNzJGMDRGRjAwN0RCREE1IC8qIERGR0Rlc2lyZWRJZGVudGlmaWVycy5j
cHAgaW4gU291cmNlcyAqLywKIAkJCQlDMkMwRjdDRDE3QkJGQzVCMDA0NjRGRTQgLyogREZHRGVz
aXJlZFRyYW5zaXRpb25zLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBGRTg1MzRCMTcyM0NEQTUw
MEI2MThGNSAvKiBERkdEZXNpcmVkV2F0Y2hwb2ludHMuY3BwIGluIFNvdXJjZXMgKi8sCkluZGV4
OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNBcmd1bWVudFJlZ1ZhbHVlLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzQXJndW1lbnRSZWdWYWx1ZS5oCShyZXZp
c2lvbiAyMDY1MjQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNBcmd1bWVudFJlZ1Zh
bHVlLmgJKHdvcmtpbmcgY29weSkKQEAgLTM1LDcgKzM1LDcgQEAgbmFtZXNwYWNlIEpTQyB7IG5h
bWVzcGFjZSBCMyB7CiAKIGNsYXNzIEpTX0VYUE9SVF9QUklWQVRFIEFyZ3VtZW50UmVnVmFsdWUg
OiBwdWJsaWMgVmFsdWUgewogcHVibGljOgotICAgIHN0YXRpYyBib29sIGFjY2VwdHMoT3Bjb2Rl
IG9wY29kZSkgeyByZXR1cm4gb3Bjb2RlID09IEFyZ3VtZW50UmVnOyB9CisgICAgc3RhdGljIGJv
b2wgYWNjZXB0cyhLaW5kIGtpbmQpIHsgcmV0dXJuIGtpbmQgPT0gQXJndW1lbnRSZWc7IH0KICAg
ICAKICAgICB+QXJndW1lbnRSZWdWYWx1ZSgpOwogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvYjMvQjNDQ2FsbFZhbHVlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L2IzL0IzQ0NhbGxWYWx1ZS5oCShyZXZpc2lvbiAyMDY1MjQpCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvYjMvQjNDQ2FsbFZhbHVlLmgJKHdvcmtpbmcgY29weSkKQEAgLTM1LDcgKzM1LDcgQEAg
bmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBCMyB7CiAKIGNsYXNzIEpTX0VYUE9SVF9QUklWQVRF
IENDYWxsVmFsdWUgOiBwdWJsaWMgVmFsdWUgewogcHVibGljOgotICAgIHN0YXRpYyBib29sIGFj
Y2VwdHMoT3Bjb2RlIG9wY29kZSkgeyByZXR1cm4gb3Bjb2RlID09IENDYWxsOyB9CisgICAgc3Rh
dGljIGJvb2wgYWNjZXB0cyhLaW5kIGtpbmQpIHsgcmV0dXJuIGtpbmQgPT0gQ0NhbGw7IH0KIAog
ICAgIH5DQ2FsbFZhbHVlKCk7CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM0No
ZWNrVmFsdWUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM0No
ZWNrVmFsdWUuY3BwCShyZXZpc2lvbiAyMDY1MjQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
YjMvQjNDaGVja1ZhbHVlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzcsNyArMzcsNyBAQCBDaGVj
a1ZhbHVlOjp+Q2hlY2tWYWx1ZSgpCiB2b2lkIENoZWNrVmFsdWU6OmNvbnZlcnRUb0FkZCgpCiB7
CiAgICAgUkVMRUFTRV9BU1NFUlQob3Bjb2RlKCkgPT0gQ2hlY2tBZGQgfHwgb3Bjb2RlKCkgPT0g
Q2hlY2tTdWIgfHwgb3Bjb2RlKCkgPT0gQ2hlY2tNdWwpOwotICAgIG1fb3Bjb2RlID0gQ2hlY2tB
ZGQ7CisgICAgbV9raW5kID0gQ2hlY2tBZGQ7CiB9CiAKIFZhbHVlKiBDaGVja1ZhbHVlOjpjbG9u
ZUltcGwoKSBjb25zdApAQCAtNDYsMjEgKzQ2LDIxIEBAIFZhbHVlKiBDaGVja1ZhbHVlOjpjbG9u
ZUltcGwoKSBjb25zdAogfQogCiAvLyBVc2UgdGhpcyBmb3JtIGZvciBDaGVja0FkZCwgQ2hlY2tT
dWIsIGFuZCBDaGVja011bC4KLUNoZWNrVmFsdWU6OkNoZWNrVmFsdWUoT3Bjb2RlIG9wY29kZSwg
T3JpZ2luIG9yaWdpbiwgVmFsdWUqIGxlZnQsIFZhbHVlKiByaWdodCkKLSAgICA6IFN0YWNrbWFw
VmFsdWUoQ2hlY2tlZE9wY29kZSwgb3Bjb2RlLCBsZWZ0LT50eXBlKCksIG9yaWdpbikKK0NoZWNr
VmFsdWU6OkNoZWNrVmFsdWUoS2luZCBraW5kLCBPcmlnaW4gb3JpZ2luLCBWYWx1ZSogbGVmdCwg
VmFsdWUqIHJpZ2h0KQorICAgIDogU3RhY2ttYXBWYWx1ZShDaGVja2VkT3Bjb2RlLCBraW5kLCBs
ZWZ0LT50eXBlKCksIG9yaWdpbikKIHsKICAgICBBU1NFUlQoQjM6OmlzSW50KHR5cGUoKSkpOwog
ICAgIEFTU0VSVChsZWZ0LT50eXBlKCkgPT0gcmlnaHQtPnR5cGUoKSk7Ci0gICAgQVNTRVJUKG9w
Y29kZSA9PSBDaGVja0FkZCB8fCBvcGNvZGUgPT0gQ2hlY2tTdWIgfHwgb3Bjb2RlID09IENoZWNr
TXVsKTsKKyAgICBBU1NFUlQoa2luZCA9PSBDaGVja0FkZCB8fCBraW5kID09IENoZWNrU3ViIHx8
IGtpbmQgPT0gQ2hlY2tNdWwpOwogICAgIGFwcGVuZChDb25zdHJhaW5lZFZhbHVlKGxlZnQsIFZh
bHVlUmVwOjpXYXJtQW55KSk7CiAgICAgYXBwZW5kKENvbnN0cmFpbmVkVmFsdWUocmlnaHQsIFZh
bHVlUmVwOjpXYXJtQW55KSk7CiB9CiAKIC8vIFVzZSB0aGlzIGZvcm0gZm9yIENoZWNrLgotQ2hl
Y2tWYWx1ZTo6Q2hlY2tWYWx1ZShPcGNvZGUgb3Bjb2RlLCBPcmlnaW4gb3JpZ2luLCBWYWx1ZSog
cHJlZGljYXRlKQotICAgIDogU3RhY2ttYXBWYWx1ZShDaGVja2VkT3Bjb2RlLCBvcGNvZGUsIFZv
aWQsIG9yaWdpbikKK0NoZWNrVmFsdWU6OkNoZWNrVmFsdWUoS2luZCBraW5kLCBPcmlnaW4gb3Jp
Z2luLCBWYWx1ZSogcHJlZGljYXRlKQorICAgIDogU3RhY2ttYXBWYWx1ZShDaGVja2VkT3Bjb2Rl
LCBraW5kLCBWb2lkLCBvcmlnaW4pCiB7Ci0gICAgQVNTRVJUKG9wY29kZSA9PSBDaGVjayk7Cisg
ICAgQVNTRVJUKGtpbmQgPT0gQ2hlY2spOwogICAgIGFwcGVuZChDb25zdHJhaW5lZFZhbHVlKHBy
ZWRpY2F0ZSwgVmFsdWVSZXA6Oldhcm1BbnkpKTsKIH0KIApJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL2IzL0IzQ2hlY2tWYWx1ZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9iMy9CM0NoZWNrVmFsdWUuaAkocmV2aXNpb24gMjA2NTI0KQorKysgU291cmNlL0phdmFT
Y3JpcHRDb3JlL2IzL0IzQ2hlY2tWYWx1ZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0zNCw5ICszNCw5
IEBAIG5hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgQjMgewogCiBjbGFzcyBDaGVja1ZhbHVlIDog
cHVibGljIFN0YWNrbWFwVmFsdWUgewogcHVibGljOgotICAgIHN0YXRpYyBib29sIGFjY2VwdHMo
T3Bjb2RlIG9wY29kZSkKKyAgICBzdGF0aWMgYm9vbCBhY2NlcHRzKEtpbmQga2luZCkKICAgICB7
Ci0gICAgICAgIHN3aXRjaCAob3Bjb2RlKSB7CisgICAgICAgIHN3aXRjaCAoa2luZC5vcGNvZGUo
KSkgewogICAgICAgICBjYXNlIENoZWNrQWRkOgogICAgICAgICBjYXNlIENoZWNrU3ViOgogICAg
ICAgICBjYXNlIENoZWNrTXVsOgpAQCAtNTgsMTAgKzU4LDEwIEBAIHByaXZhdGU6CiAgICAgZnJp
ZW5kIGNsYXNzIFByb2NlZHVyZTsKIAogICAgIC8vIFVzZSB0aGlzIGZvcm0gZm9yIENoZWNrQWRk
LCBDaGVja1N1YiwgYW5kIENoZWNrTXVsLgotICAgIEpTX0VYUE9SVF9QUklWQVRFIENoZWNrVmFs
dWUoT3Bjb2RlLCBPcmlnaW4sIFZhbHVlKiBsZWZ0LCBWYWx1ZSogcmlnaHQpOworICAgIEpTX0VY
UE9SVF9QUklWQVRFIENoZWNrVmFsdWUoS2luZCwgT3JpZ2luLCBWYWx1ZSogbGVmdCwgVmFsdWUq
IHJpZ2h0KTsKIAogICAgIC8vIFVzZSB0aGlzIGZvcm0gZm9yIENoZWNrLgotICAgIEpTX0VYUE9S
VF9QUklWQVRFIENoZWNrVmFsdWUoT3Bjb2RlLCBPcmlnaW4sIFZhbHVlKiBwcmVkaWNhdGUpOwor
ICAgIEpTX0VYUE9SVF9QUklWQVRFIENoZWNrVmFsdWUoS2luZCwgT3JpZ2luLCBWYWx1ZSogcHJl
ZGljYXRlKTsKIH07CiAKIH0gfSAvLyBuYW1lc3BhY2UgSlNDOjpCMwpJbmRleDogU291cmNlL0ph
dmFTY3JpcHRDb3JlL2IzL0IzQ29uc3QzMlZhbHVlLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0ph
dmFTY3JpcHRDb3JlL2IzL0IzQ29uc3QzMlZhbHVlLmgJKHJldmlzaW9uIDIwNjUyNCkKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM0NvbnN0MzJWYWx1ZS5oCSh3b3JraW5nIGNvcHkpCkBA
IC0zNCw3ICszNCw3IEBAIG5hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgQjMgewogCiBjbGFzcyBK
U19FWFBPUlRfUFJJVkFURSBDb25zdDMyVmFsdWUgOiBwdWJsaWMgVmFsdWUgewogcHVibGljOgot
ICAgIHN0YXRpYyBib29sIGFjY2VwdHMoT3Bjb2RlIG9wY29kZSkgeyByZXR1cm4gb3Bjb2RlID09
IENvbnN0MzI7IH0KKyAgICBzdGF0aWMgYm9vbCBhY2NlcHRzKEtpbmQga2luZCkgeyByZXR1cm4g
a2luZCA9PSBDb25zdDMyOyB9CiAgICAgCiAgICAgfkNvbnN0MzJWYWx1ZSgpOwogICAgIApJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzQ29uc3Q2NFZhbHVlLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzQ29uc3Q2NFZhbHVlLmgJKHJldmlzaW9uIDIw
NjUyNCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM0NvbnN0NjRWYWx1ZS5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC0zNCw3ICszNCw3IEBAIG5hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgQjMg
ewogCiBjbGFzcyBKU19FWFBPUlRfUFJJVkFURSBDb25zdDY0VmFsdWUgOiBwdWJsaWMgVmFsdWUg
ewogcHVibGljOgotICAgIHN0YXRpYyBib29sIGFjY2VwdHMoT3Bjb2RlIG9wY29kZSkgeyByZXR1
cm4gb3Bjb2RlID09IENvbnN0NjQ7IH0KKyAgICBzdGF0aWMgYm9vbCBhY2NlcHRzKEtpbmQga2lu
ZCkgeyByZXR1cm4ga2luZCA9PSBDb25zdDY0OyB9CiAgICAgCiAgICAgfkNvbnN0NjRWYWx1ZSgp
OwogICAgIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzQ29uc3REb3VibGVWYWx1
ZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM0NvbnN0RG91Ymxl
VmFsdWUuaAkocmV2aXNpb24gMjA2NTI0KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0Iz
Q29uc3REb3VibGVWYWx1ZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0zNCw3ICszNCw3IEBAIG5hbWVz
cGFjZSBKU0MgeyBuYW1lc3BhY2UgQjMgewogCiBjbGFzcyBKU19FWFBPUlRfUFJJVkFURSBDb25z
dERvdWJsZVZhbHVlIDogcHVibGljIFZhbHVlIHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgYm9vbCBh
Y2NlcHRzKE9wY29kZSBvcGNvZGUpIHsgcmV0dXJuIG9wY29kZSA9PSBDb25zdERvdWJsZTsgfQor
ICAgIHN0YXRpYyBib29sIGFjY2VwdHMoS2luZCBraW5kKSB7IHJldHVybiBraW5kID09IENvbnN0
RG91YmxlOyB9CiAgICAgCiAgICAgfkNvbnN0RG91YmxlVmFsdWUoKTsKICAgICAKSW5kZXg6IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM0NvbnN0RmxvYXRWYWx1ZS5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM0NvbnN0RmxvYXRWYWx1ZS5oCShyZXZpc2lvbiAy
MDY1MjQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNDb25zdEZsb2F0VmFsdWUuaAko
d29ya2luZyBjb3B5KQpAQCAtMzQsNyArMzQsNyBAQCBuYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNl
IEIzIHsKIAogY2xhc3MgSlNfRVhQT1JUX1BSSVZBVEUgQ29uc3RGbG9hdFZhbHVlIDogcHVibGlj
IFZhbHVlIHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgYm9vbCBhY2NlcHRzKE9wY29kZSBvcGNvZGUp
IHsgcmV0dXJuIG9wY29kZSA9PSBDb25zdEZsb2F0OyB9CisgICAgc3RhdGljIGJvb2wgYWNjZXB0
cyhLaW5kIGtpbmQpIHsgcmV0dXJuIGtpbmQgPT0gQ29uc3RGbG9hdDsgfQogCiAgICAgfkNvbnN0
RmxvYXRWYWx1ZSgpOwogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNGZW5jZVZh
bHVlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzRmVuY2VWYWx1
ZS5oCShyZXZpc2lvbiAyMDY1MjQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNGZW5j
ZVZhbHVlLmgJKHdvcmtpbmcgY29weSkKQEAgLTM0LDcgKzM0LDcgQEAgbmFtZXNwYWNlIEpTQyB7
IG5hbWVzcGFjZSBCMyB7CiAKIGNsYXNzIEpTX0VYUE9SVF9QUklWQVRFIEZlbmNlVmFsdWUgOiBw
dWJsaWMgVmFsdWUgewogcHVibGljOgotICAgIHN0YXRpYyBib29sIGFjY2VwdHMoT3Bjb2RlIG9w
Y29kZSkgeyByZXR1cm4gb3Bjb2RlID09IEZlbmNlOyB9CisgICAgc3RhdGljIGJvb2wgYWNjZXB0
cyhLaW5kIGtpbmQpIHsgcmV0dXJuIGtpbmQgPT0gRmVuY2U7IH0KICAgICAKICAgICB+RmVuY2VW
YWx1ZSgpOwogICAgIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzS2luZC5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzS2luZC5jcHAJKG5vbmV4
aXN0ZW50KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzS2luZC5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTAsMCArMSw1MSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNiBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
KyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQor
ICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hB
TEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNF
UVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9D
VVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFU
QSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLiAKKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiQjNLaW5kLmgiCisK
KyNpZiBFTkFCTEUoQjNfSklUKQorCisjaW5jbHVkZSA8d3RmL0NvbW1hUHJpbnRlci5oPgorCitu
YW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIEIzIHsKKwordm9pZCBLaW5kOjpkdW1wKFByaW50U3Ry
ZWFtJiBvdXQpIGNvbnN0Cit7CisgICAgb3V0LnByaW50KG1fb3Bjb2RlKTsKKyAgICBpZiAoIWhh
c0V4dHJhQml0cygpKQorICAgICAgICByZXR1cm47CisgICAgCisgICAgQ29tbWFQcmludGVyIGNv
bW1hOworICAgIG91dC5wcmludCgiPCIpOworICAgIGlmIChpc0NoaWxsKCkpCisgICAgICAgIG91
dC5wcmludChjb21tYSwgIkNoaWxsIik7CisgICAgb3V0LnByaW50KCI+Iik7Cit9CisKK30gfSAv
LyBuYW1lc3BhY2UgSlNDOjpCMworCisjZW5kaWYgLy8gRU5BQkxFKEIzX0pJVCkKKwpJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzS2luZC5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9iMy9CM0tpbmQuaAkobm9uZXhpc3RlbnQpCisrKyBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvYjMvQjNLaW5kLmgJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwyMTggQEAKKy8q
CisgKiBDb3B5cmlnaHQgKEMpIDIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJp
YnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBg
YEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBB
UkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRS
SUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT
UEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworI2lmbmRlZiBCM0tp
bmRfaAorI2RlZmluZSBCM0tpbmRfaAorCisjaWYgRU5BQkxFKEIzX0pJVCkKKworI2luY2x1ZGUg
IkIzT3Bjb2RlLmgiCisjaW5jbHVkZSA8d3RmL0hhc2hUYWJsZS5oPgorI2luY2x1ZGUgPHd0Zi9Q
cmludFN0cmVhbS5oPgorCituYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIEIzIHsKKworLy8gQSBL
aW5kIGlzIGEgdGVyc2Ugc3VtbWFyeSBvZiB3aGF0IGEgVmFsdWUgZG9lcy4gVGhlcmUgaXMgYSBm
aXhlZCBudW1iZXIgb2YgcG9zc2libGUKKy8vIEtpbmRzLiBLaW5kIGlzIGEgdHVwbGUgb2YgT3Bj
b2RlIChzZWUgQjNPcGNvZGUuaCkgYW5kIHNvbWUgZXh0cmEgYml0cy4gTW9zdCBvcGNvZGVzIGRv
bid0CisvLyBnZXQgYW55IGV4dHJhIGJpdHMsIGFuZCB0aG9zZSBiaXRzIG11c3QgcmVtYWluIHpl
cm8gaWYgdGhlIEtpbmQncyBvcGNvZGUgZmllbGQgaXMgc2V0IHRvCisvLyBvbmUgb2YgdGhvc2Ug
b3Bjb2Rlcy4gVGhlIHB1cnBvc2Ugb2YgS2luZCBpcyB0byBiZSBsaWtlIGFuIG9wY29kZSBpbiBv
dGhlciBJUnMsIGJ1dCB0bworLy8gYmUgbXVsdGlkaW1lbnNpb25hbC4gRm9yIGV4YW1wbGUsIGEg
TG9hZCBoYXMgbWFueSBkaW1lbnNpb25zIG9mIGN1c3RvbWl6YXRpb24gdGhhdCB3ZSBtYXkKKy8v
IGV2ZW50dWFsbHkgaW1wbGVtZW50LiBBIExvYWQgY2FuIGhhdmUgZGlmZmVyZW50IGFsaWdubWVu
dHMsIGFsaWdubWVudCBmYWlsdXJlIG1vZGVzLAorLy8gdGVtcG9yYWxpdHkgbW9kZXMsIHRyYXBw
aW5nIG1vZGVzLCBvcmRlcmluZyBtb2RlcywgZXRjLiBJdCdzIGZpbmUgdG8gcHV0IHN1Y2ggZmxh
Z3MgaW50bworLy8gc3ViY2xhc3NlcyBvZiBWYWx1ZSwgYnV0IGluIHNvbWUgY2FzZXMgdGhhdCB3
b3VsZCBiZSBvdmVya2lsbCwgcGFydGljdWxhcmx5IHNpbmNlIGlmIHlvdQorLy8gZGlkIHRoYXQg
Zm9yIGEgcHVyZSB2YWx1ZSB0aGVuIHlvdSdkIGFsc28gaGF2ZSB0byB0aHJlYWQgaXQgdGhyb3Vn
aCBWYWx1ZUtleS4gSXQncyBtdWNoCisvLyBlYXNpZXIgdG8gcHV0IGl0IGluIEtpbmQsIGFuZCB0
aGVuIHlvdXIgZXh0cmEgYml0IHdpbGwgZ2V0IGNhcnJpZWQgYXJvdW5kIGJ5IGV2ZXJ5b25lIHdo
bworLy8ga25vd3MgaG93IHRvIGNhcnJ5IGFyb3VuZCBLaW5kcy4gTW9zdCBpbXBvcnRhbnRseSwg
cHV0dGluZyBmbGFncyBpbnRvIEtpbmQgYWxsb3dzIHlvdSB0bworLy8gdXNlIHRoZW0gYXMgcGFy
dCBvZiBCMzo6VmFsdWUncyBkeW5hbWljIGNhc3QgZmFjaWxpdHkuIEZvciBleGFtcGxlIHdlIGNv
dWxkIGhhdmUgYQorLy8gdHJhcHBpbmcgTG9hZCB0aGF0IHVzZXMgYSBWYWx1ZSBzdWJjbGFzcyB0
aGF0IGhhcyBhIHN0YWNrbWFwIHdoaWxlIG5vbi10cmFwcGluZyBMb2FkcworLy8gY29udGludWUg
dG8gdXNlIHRoZSBub3JtYWwgTWVtb3J5VmFsdWUuCisvLworLy8gTm90ZSB0aGF0IGFueSBjb2Rl
IGluIHRoZSBjb21waWxlciB0aGF0IHRyYW5zY3JpYmVzIElSIChsaWtlIGEgc3RyZW5ndGggcmVk
dWN0aW9uIHRoYXQKKy8vIHJlcGxhY2VzIGFuIEFkZCB3aXRoIGEgZGlmZmVyZW50IEFkZCwgb3Ig
ZXZlbiB3aXRoIGEgZGlmZmVyZW50IG9wY29kZSBlbnRpcmVseSkgd2lsbAorLy8gcHJvYmFibHkg
ZHJvcCB1bmtub3duIGJpdHMgYnkgZGVmYXVsdC4gVGhpcyBpcyBkZWZpbml0ZWx5IG5vdCBjb3Jy
ZWN0IGZvciBtYW55IGJpdHMgKGxpa2UKKy8vIGlzQ2hpbGwgZm9yIERpdi9Nb2QgYW5kIGFsbCBv
ZiB0aGUgZW52aXNpb25lZCBMb2FkL1N0b3JlIGZsYWdzKSwgc28gaWYgeW91IGFkZCBhIG5ldyBi
aXQKKy8vIHlvdSB3aWxsIHByb2JhYmx5IGhhdmUgdG8gYXVkaXQgdGhlIGNvbXBpbGVyIHRvIG1h
a2Ugc3VyZSB0aGF0IHBoYXNlcyB0aGF0IHRyYW5zY3JpYmUKKy8vIHlvdXIgb3Bjb2RlIGRvIHRo
ZSByaWdodCB0aGluZyB3aXRoIHlvdXIgYml0LgorCitjbGFzcyBLaW5kIHsKK3B1YmxpYzoKKyAg
ICBLaW5kKE9wY29kZSBvcGNvZGUpCisgICAgICAgIDogbV9vcGNvZGUob3Bjb2RlKQorICAgIHsK
KyAgICAgICAgdS5iaXRzID0gMDsKKyAgICB9CisgICAgCisgICAgS2luZCgpCisgICAgICAgIDog
S2luZChPb3BzKQorICAgIHsKKyAgICB9CisgICAgCisgICAgT3Bjb2RlIG9wY29kZSgpIGNvbnN0
IHsgcmV0dXJuIG1fb3Bjb2RlOyB9CisgICAgdm9pZCBzZXRPcGNvZGUoT3Bjb2RlIG9wY29kZSkg
eyBtX29wY29kZSA9IG9wY29kZTsgfQorICAgIAorICAgIGJvb2wgaGFzRXh0cmFCaXRzKCkgY29u
c3QgeyByZXR1cm4gISF1LmJpdHM7IH0KKyAgICAKKyAgICAvLyBDaGlsbCBiaXQuIFRoaXMgYXBw
bGllcyB0byBkaXZpc2lvbi1iYXNlZCBhcml0aG1ldGljIG9wcywgd2hpY2ggbWF5IHRyYXAgb24g
c29tZQorICAgIC8vIHBsYXRmb3JtcyBvciBleGhpYml0IGJpemFycmUgYmVoYXZpb3Igd2hlbiBw
YXNzZWQgY2VydGFpbiBpbnB1dHMuIFRoZSBub24tY2hpbGwKKyAgICAvLyB2ZXJzaW9uIHdpbGwg
YmVoYXZlIGFzIHVucHJlZGljdGFibHkgYXMgaXQgd2FudHMuIEZvciBleGFtcGxlLCBpdCdzIGxl
Z2FsIHRvCisgICAgLy8gY29uc3RhbnQtZm9sZCBEaXYoeCwgMCkgdG8gYW55IHZhbHVlIG9yIHRv
IHJlcGxhY2UgaXQgd2l0aCBhbnkgZWZmZWN0ZnVsIG9wZXJhdGlvbi4KKyAgICAvLyBCdXQgd2hl
biBpdCdzIGNoaWxsLCB0aGF0IG1lYW5zIHRoYXQgdGhlIHNlbWFudGljcyB3aGVuIGl0IHdvdWxk
IGhhdmUgdHJhcHBlZCBhcmUKKyAgICAvLyB0aGUgSlMgc2VtYW50aWNzLiBGb3IgZXhhbXBsZSwg
RGl2PENoaWxsPihAYSwgQGIpIG1lYW5zOgorICAgIC8vCisgICAgLy8gICAgICgoYSB8IDApIC8g
KGIgfCAwKSkgfCAwCisgICAgLy8KKyAgICAvLyBBbmQgTW9kPENoaWxsPihhLCBiKSBtZWFuczoK
KyAgICAvLworICAgIC8vICAgICAoKGEgfCAwKSAlIChiIHwgMCkpIHwgMAorICAgIC8vCisgICAg
Ly8gTm90ZSB0aGF0IERpdjxDaGlsbD4gbWF0Y2hlcyBleGFjdGx5IGhvdyBBUk0gaGFuZGxlcyBp
bnRlZ2VyIGRpdmlzaW9uLgorICAgIGJvb2wgaGFzSXNDaGlsbCgpIGNvbnN0CisgICAgeworICAg
ICAgICBzd2l0Y2ggKG1fb3Bjb2RlKSB7CisgICAgICAgIGNhc2UgRGl2OgorICAgICAgICBjYXNl
IE1vZDoKKyAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICBkZWZhdWx0OgorICAgICAg
ICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICB9CisgICAgfQorICAgIGJvb2wgaXNDaGlsbCgp
IGNvbnN0CisgICAgeworICAgICAgICByZXR1cm4gaGFzSXNDaGlsbCgpICYmIHUuaXNDaGlsbDsK
KyAgICB9CisgICAgdm9pZCBzZXRJc0NoaWxsKGJvb2wgaXNDaGlsbCkKKyAgICB7CisgICAgICAg
IEFTU0VSVChoYXNJc0NoaWxsKCkpOworICAgICAgICB1LmlzQ2hpbGwgPSBpc0NoaWxsOworICAg
IH0KKyAgICAKKyAgICAvLyBSdWxlcyBmb3IgYWRkaW5nIG5ldyBwcm9wZXJ0aWVzOgorICAgIC8v
IC0gUHV0IHRoZSBhY2Nlc3NvcnMgaGVyZS4KKyAgICAvLyAtIGhhc0JsYWgoKSBzaG91bGQgY2hl
Y2sgaWYgdGhlIG9wY29kZSBhbGxvd3MgZm9yIHlvdXIgcHJvcGVydHkuCisgICAgLy8gLSBibGFo
KCkgcmV0dXJucyBhIGRlZmF1bHQgdmFsdWUgaWYgIWhhc0JsYWgoKQorICAgIC8vIC0gc2V0Qmxh
aCgpIGFzc2VydHMgaWYgIWhhc0JsYWgoKQorICAgIC8vIC0gVHJ5IG5vdCB0byBpbmNyZWFzZSB0
aGUgc2l6ZSBvZiBLaW5kIHRvbyBtdWNoLiBCdXQgaXQgd291bGRuJ3QgYmUgdGhlIGVuZCBvZiB0
aGUKKyAgICAvLyAgIHdvcmxkIGlmIGl0IGJsb2F0ZWQgdG8gNjQgYml0cy4KKyAgICAKKyAgICBi
b29sIG9wZXJhdG9yPT0oY29uc3QgS2luZCYgb3RoZXIpIGNvbnN0CisgICAgeworICAgICAgICBy
ZXR1cm4gbV9vcGNvZGUgPT0gb3RoZXIubV9vcGNvZGUKKyAgICAgICAgICAgICYmIHUuYml0cyA9
PSBvdGhlci51LmJpdHM7CisgICAgfQorICAgIAorICAgIGJvb2wgb3BlcmF0b3IhPShjb25zdCBL
aW5kJiBvdGhlcikgY29uc3QKKyAgICB7CisgICAgICAgIHJldHVybiAhKCp0aGlzID09IG90aGVy
KTsKKyAgICB9CisgICAgCisgICAgYm9vbCBvcGVyYXRvcjwoY29uc3QgS2luZCYgb3RoZXIpIGNv
bnN0CisgICAgeworICAgICAgICBpZiAobV9vcGNvZGUgPT0gb3RoZXIubV9vcGNvZGUpCisgICAg
ICAgICAgICByZXR1cm4gdS5iaXRzIDwgb3RoZXIudS5iaXRzOworICAgICAgICByZXR1cm4gbV9v
cGNvZGUgPCBvdGhlci5tX29wY29kZTsKKyAgICB9CisgICAgCisgICAgYm9vbCBvcGVyYXRvcj4o
Y29uc3QgS2luZCYgb3RoZXIpIGNvbnN0CisgICAgeworICAgICAgICByZXR1cm4gb3RoZXIgPCAq
dGhpczsKKyAgICB9CisgICAgCisgICAgYm9vbCBvcGVyYXRvcjw9KGNvbnN0IEtpbmQmIG90aGVy
KSBjb25zdAorICAgIHsKKyAgICAgICAgcmV0dXJuICEoKnRoaXMgPiBvdGhlcik7CisgICAgfQor
ICAgIAorICAgIGJvb2wgb3BlcmF0b3I+PShjb25zdCBLaW5kJiBvdGhlcikgY29uc3QKKyAgICB7
CisgICAgICAgIHJldHVybiAhKCp0aGlzIDwgb3RoZXIpOworICAgIH0KKyAgICAKKyAgICB2b2lk
IGR1bXAoUHJpbnRTdHJlYW0mKSBjb25zdDsKKyAgICAKKyAgICB1bnNpZ25lZCBoYXNoKCkgY29u
c3QKKyAgICB7CisgICAgICAgIC8vIEl0J3MgYWxtb3N0IGNlcnRhaW5seSBtb3JlIGltcG9ydGFu
dCB0aGF0IHRoaXMgaGFzaCBmdW5jdGlvbiBpcyBjaGVhcCB0byBjb21wdXRlIHRoYW4KKyAgICAg
ICAgLy8gYW55dGhpbmcgZWxzZS4gV2UgY2FuIGxpdmUgd2l0aCBzb21lIGtpbmQgaGFzaCBjb2xs
aXNpb25zLgorICAgICAgICByZXR1cm4gbV9vcGNvZGUgKyB1LmJpdHMgKiAxMTE7CisgICAgfQor
ICAgIAorICAgIEtpbmQoV1RGOjpIYXNoVGFibGVEZWxldGVkVmFsdWVUeXBlKQorICAgICAgICA6
IG1fb3Bjb2RlKE9vcHMpCisgICAgeworICAgICAgICB1LmJpdHMgPSAxOworICAgIH0KKyAgICAK
KyAgICBib29sIGlzSGFzaFRhYmxlRGVsZXRlZFZhbHVlKCkgY29uc3QKKyAgICB7CisgICAgICAg
IHJldHVybiAqdGhpcyA9PSBLaW5kKFdURjo6SGFzaFRhYmxlRGVsZXRlZFZhbHVlKTsKKyAgICB9
CisgICAgCitwcml2YXRlOgorICAgIE9wY29kZSBtX29wY29kZTsKKyAgICB1bmlvbiB7CisgICAg
ICAgIGJvb2wgaXNDaGlsbDsKKyAgICAgICAgdWludDE2X3QgYml0czsKKyAgICB9IHU7Cit9Owor
CisvLyBGb3IgZXZlcnkgZmxhZyAnZm9vJyB5b3UgYWRkLCBpdCdzIGN1c3RvbWFyeSB0byBjcmVh
dGUgYSBLaW5kIEIzOjpmb28oS2luZCkgZnVuY3Rpb24gdGhhdCBtYWtlcworLy8gYSBraW5kIHdp
dGggdGhlIGZsYWcgc2V0LiBGb3IgZXhhbXBsZSwgZm9yIGNoaWxsLCB0aGlzIGxldHMgdXMgc2F5
OgorLy8KKy8vICAgICBibG9jay0+YXBwZW5kTmV3PFZhbHVlPihtX3Byb2MsIGNoaWxsKE1vZCks
IE9yaWdpbigpLCBhLCBiKTsKKy8vCisvLyBUaGF0IGxvb2tzIHByZXR0eSBzbGljay4gTGV0J3Mg
a2VlcCBpdCB0aGF0IHdheS4KKworaW5saW5lIEtpbmQgY2hpbGwoS2luZCBraW5kKQoreworICAg
IGtpbmQuc2V0SXNDaGlsbCh0cnVlKTsKKyAgICByZXR1cm4ga2luZDsKK30KKworc3RydWN0IEtp
bmRIYXNoIHsKKyAgICBzdGF0aWMgdW5zaWduZWQgaGFzaChjb25zdCBLaW5kJiBrZXkpIHsgcmV0
dXJuIGtleS5oYXNoKCk7IH0KKyAgICBzdGF0aWMgYm9vbCBlcXVhbChjb25zdCBLaW5kJiBhLCBj
b25zdCBLaW5kJiBiKSB7IHJldHVybiBhID09IGI7IH0KKyAgICBzdGF0aWMgY29uc3QgYm9vbCBz
YWZlVG9Db21wYXJlVG9FbXB0eU9yRGVsZXRlZCA9IHRydWU7Cit9OworCit9IH0gLy8gbmFtZXNw
YWNlIEpTQzo6QjMKKworbmFtZXNwYWNlIFdURiB7CisKK3RlbXBsYXRlPHR5cGVuYW1lIFQ+IHN0
cnVjdCBEZWZhdWx0SGFzaDsKK3RlbXBsYXRlPD4gc3RydWN0IERlZmF1bHRIYXNoPEpTQzo6QjM6
OktpbmQ+IHsKKyAgICB0eXBlZGVmIEpTQzo6QjM6OktpbmRIYXNoIEhhc2g7Cit9OworCit0ZW1w
bGF0ZTx0eXBlbmFtZSBUPiBzdHJ1Y3QgSGFzaFRyYWl0czsKK3RlbXBsYXRlPD4gc3RydWN0IEhh
c2hUcmFpdHM8SlNDOjpCMzo6S2luZD4gOiBwdWJsaWMgU2ltcGxlQ2xhc3NIYXNoVHJhaXRzPEpT
Qzo6QjM6OktpbmQ+IHsKKyAgICBzdGF0aWMgY29uc3QgYm9vbCBlbXB0eVZhbHVlSXNaZXJvID0g
ZmFsc2U7Cit9OworCit9IC8vIG5hbWVzcGFjZSBXVEYKKworI2VuZGlmIC8vIEVOQUJMRShCM19K
SVQpCisKKyNlbmRpZiAvLyBCM0tpbmRfaAorCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
YjMvQjNMb3dlck1hY3Jvcy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L2IzL0IzTG93ZXJNYWNyb3MuY3BwCShyZXZpc2lvbiAyMDY1MjQpCisrKyBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvYjMvQjNMb3dlck1hY3Jvcy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTgzLDYgKzgz
LDQxIEBAIHByaXZhdGU6CiAgICAgICAgICAgICBtX29yaWdpbiA9IG1fdmFsdWUtPm9yaWdpbigp
OwogICAgICAgICAgICAgc3dpdGNoIChtX3ZhbHVlLT5vcGNvZGUoKSkgewogICAgICAgICAgICAg
Y2FzZSBNb2Q6IHsKKyAgICAgICAgICAgICAgICBpZiAobV92YWx1ZS0+aXNDaGlsbCgpKSB7Cisg
ICAgICAgICAgICAgICAgICAgIGlmIChpc0FSTTY0KCkpIHsKKyAgICAgICAgICAgICAgICAgICAg
ICAgIEJhc2ljQmxvY2sqIGJlZm9yZSA9IG1fYmxvY2tJbnNlcnRpb25TZXQuc3BsaXRGb3J3YXJk
KG1fYmxvY2ssIG1faW5kZXgsICZtX2luc2VydGlvblNldCk7CisgICAgICAgICAgICAgICAgICAg
ICAgICBCYXNpY0Jsb2NrKiB6ZXJvRGVuQ2FzZSA9IG1fYmxvY2tJbnNlcnRpb25TZXQuaW5zZXJ0
QmVmb3JlKG1fYmxvY2spOworICAgICAgICAgICAgICAgICAgICAgICAgQmFzaWNCbG9jayogbm9y
bWFsTW9kQ2FzZSA9IG1fYmxvY2tJbnNlcnRpb25TZXQuaW5zZXJ0QmVmb3JlKG1fYmxvY2spOwor
CisgICAgICAgICAgICAgICAgICAgICAgICBiZWZvcmUtPnJlcGxhY2VMYXN0V2l0aE5ldzxWYWx1
ZT4obV9wcm9jLCBCcmFuY2gsIG1fb3JpZ2luLCBtX3ZhbHVlLT5jaGlsZCgxKSk7CisgICAgICAg
ICAgICAgICAgICAgICAgICBiZWZvcmUtPnNldFN1Y2Nlc3NvcnMoCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgRnJlcXVlbnRlZEJsb2NrKG5vcm1hbE1vZENhc2UsIEZyZXF1ZW5jeUNsYXNz
OjpOb3JtYWwpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZyZXF1ZW50ZWRCbG9jayh6
ZXJvRGVuQ2FzZSwgRnJlcXVlbmN5Q2xhc3M6OlJhcmUpKTsKKworICAgICAgICAgICAgICAgICAg
ICAgICAgVmFsdWUqIGRpdlJlc3VsdCA9IG5vcm1hbE1vZENhc2UtPmFwcGVuZE5ldzxWYWx1ZT4o
bV9wcm9jLCBjaGlsbChEaXYpLCBtX29yaWdpbiwgbV92YWx1ZS0+Y2hpbGQoMCksIG1fdmFsdWUt
PmNoaWxkKDEpKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIFZhbHVlKiBtdWx0aXBsaWVkQmFj
ayA9IG5vcm1hbE1vZENhc2UtPmFwcGVuZE5ldzxWYWx1ZT4obV9wcm9jLCBNdWwsIG1fb3JpZ2lu
LCBkaXZSZXN1bHQsIG1fdmFsdWUtPmNoaWxkKDEpKTsKKyAgICAgICAgICAgICAgICAgICAgICAg
IFZhbHVlKiByZXN1bHQgPSBub3JtYWxNb2RDYXNlLT5hcHBlbmROZXc8VmFsdWU+KG1fcHJvYywg
U3ViLCBtX29yaWdpbiwgbV92YWx1ZS0+Y2hpbGQoMCksIG11bHRpcGxpZWRCYWNrKTsKKyAgICAg
ICAgICAgICAgICAgICAgICAgIFVwc2lsb25WYWx1ZSogbm9ybWFsUmVzdWx0ID0gbm9ybWFsTW9k
Q2FzZS0+YXBwZW5kTmV3PFVwc2lsb25WYWx1ZT4obV9wcm9jLCBtX29yaWdpbiwgcmVzdWx0KTsK
KyAgICAgICAgICAgICAgICAgICAgICAgIG5vcm1hbE1vZENhc2UtPmFwcGVuZE5ldzxWYWx1ZT4o
bV9wcm9jLCBKdW1wLCBtX29yaWdpbik7CisgICAgICAgICAgICAgICAgICAgICAgICBub3JtYWxN
b2RDYXNlLT5zZXRTdWNjZXNzb3JzKEZyZXF1ZW50ZWRCbG9jayhtX2Jsb2NrKSk7CisKKyAgICAg
ICAgICAgICAgICAgICAgICAgIFVwc2lsb25WYWx1ZSogemVyb1Jlc3VsdCA9IHplcm9EZW5DYXNl
LT5hcHBlbmROZXc8VXBzaWxvblZhbHVlPigKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBt
X3Byb2MsIG1fb3JpZ2luLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHplcm9EZW5DYXNl
LT5hcHBlbmRJbnRDb25zdGFudChtX3Byb2MsIG1fdmFsdWUsIDApKTsKKyAgICAgICAgICAgICAg
ICAgICAgICAgIHplcm9EZW5DYXNlLT5hcHBlbmROZXc8VmFsdWU+KG1fcHJvYywgSnVtcCwgbV9v
cmlnaW4pOworICAgICAgICAgICAgICAgICAgICAgICAgemVyb0RlbkNhc2UtPnNldFN1Y2Nlc3Nv
cnMoRnJlcXVlbnRlZEJsb2NrKG1fYmxvY2spKTsKKworICAgICAgICAgICAgICAgICAgICAgICAg
VmFsdWUqIHBoaSA9IG1faW5zZXJ0aW9uU2V0Lmluc2VydDxWYWx1ZT4obV9pbmRleCwgUGhpLCBt
X3ZhbHVlLT50eXBlKCksIG1fb3JpZ2luKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIG5vcm1h
bFJlc3VsdC0+c2V0UGhpKHBoaSk7CisgICAgICAgICAgICAgICAgICAgICAgICB6ZXJvUmVzdWx0
LT5zZXRQaGkocGhpKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIG1fdmFsdWUtPnJlcGxhY2VX
aXRoSWRlbnRpdHkocGhpKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGJlZm9yZS0+dXBkYXRl
UHJlZGVjZXNzb3JzQWZ0ZXIoKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIG1fY2hhbmdlZCA9
IHRydWU7CisgICAgICAgICAgICAgICAgICAgIH0gZWxzZQorICAgICAgICAgICAgICAgICAgICAg
ICAgbWFrZURpdmlzaW9uQ2hpbGwoTW9kKTsKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7Cisg
ICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgIGRvdWJs
ZSAoKmZtb2REb3VibGUpKGRvdWJsZSwgZG91YmxlKSA9IGZtb2Q7CiAgICAgICAgICAgICAgICAg
aWYgKG1fdmFsdWUtPnR5cGUoKSA9PSBEb3VibGUpIHsKICAgICAgICAgICAgICAgICAgICAgVmFs
dWUqIGZ1bmN0aW9uQWRkcmVzcyA9IG1faW5zZXJ0aW9uU2V0Lmluc2VydDxDb25zdFB0clZhbHVl
PihtX2luZGV4LCBtX29yaWdpbiwgZm1vZERvdWJsZSk7CkBAIC0xMDYsNyArMTQxLDcgQEAgcHJp
dmF0ZToKICAgICAgICAgICAgICAgICAgICAgbV92YWx1ZS0+cmVwbGFjZVdpdGhJZGVudGl0eShy
ZXN1bHQpOwogICAgICAgICAgICAgICAgICAgICBtX2NoYW5nZWQgPSB0cnVlOwogICAgICAgICAg
ICAgICAgIH0gZWxzZSBpZiAoaXNBUk02NCgpKSB7Ci0gICAgICAgICAgICAgICAgICAgIFZhbHVl
KiBkaXZSZXN1bHQgPSBtX2luc2VydGlvblNldC5pbnNlcnQ8VmFsdWU+KG1faW5kZXgsIENoaWxs
RGl2LCBtX29yaWdpbiwgbV92YWx1ZS0+Y2hpbGQoMCksIG1fdmFsdWUtPmNoaWxkKDEpKTsKKyAg
ICAgICAgICAgICAgICAgICAgVmFsdWUqIGRpdlJlc3VsdCA9IG1faW5zZXJ0aW9uU2V0Lmluc2Vy
dDxWYWx1ZT4obV9pbmRleCwgY2hpbGwoRGl2KSwgbV9vcmlnaW4sIG1fdmFsdWUtPmNoaWxkKDAp
LCBtX3ZhbHVlLT5jaGlsZCgxKSk7CiAgICAgICAgICAgICAgICAgICAgIFZhbHVlKiBtdWx0aXBs
aWVkQmFjayA9IG1faW5zZXJ0aW9uU2V0Lmluc2VydDxWYWx1ZT4obV9pbmRleCwgTXVsLCBtX29y
aWdpbiwgZGl2UmVzdWx0LCBtX3ZhbHVlLT5jaGlsZCgxKSk7CiAgICAgICAgICAgICAgICAgICAg
IFZhbHVlKiByZXN1bHQgPSBtX2luc2VydGlvblNldC5pbnNlcnQ8VmFsdWU+KG1faW5kZXgsIFN1
YiwgbV9vcmlnaW4sIG1fdmFsdWUtPmNoaWxkKDApLCBtdWx0aXBsaWVkQmFjayk7CiAgICAgICAg
ICAgICAgICAgICAgIG1fdmFsdWUtPnJlcGxhY2VXaXRoSWRlbnRpdHkocmVzdWx0KTsKQEAgLTEx
NCw0MyArMTQ5LDkgQEAgcHJpdmF0ZToKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAg
ICAgYnJlYWs7CiAgICAgICAgICAgICB9Ci0gICAgICAgICAgICBjYXNlIENoaWxsRGl2OiB7Ci0g
ICAgICAgICAgICAgICAgbWFrZURpdmlzaW9uQ2hpbGwoRGl2KTsKLSAgICAgICAgICAgICAgICBi
cmVhazsKLSAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgY2FzZSBDaGlsbE1vZDogewotICAg
ICAgICAgICAgICAgIGlmIChpc0FSTTY0KCkpIHsKLSAgICAgICAgICAgICAgICAgICAgQmFzaWNC
bG9jayogYmVmb3JlID0gbV9ibG9ja0luc2VydGlvblNldC5zcGxpdEZvcndhcmQobV9ibG9jaywg
bV9pbmRleCwgJm1faW5zZXJ0aW9uU2V0KTsKLSAgICAgICAgICAgICAgICAgICAgQmFzaWNCbG9j
ayogemVyb0RlbkNhc2UgPSBtX2Jsb2NrSW5zZXJ0aW9uU2V0Lmluc2VydEJlZm9yZShtX2Jsb2Nr
KTsKLSAgICAgICAgICAgICAgICAgICAgQmFzaWNCbG9jayogbm9ybWFsTW9kQ2FzZSA9IG1fYmxv
Y2tJbnNlcnRpb25TZXQuaW5zZXJ0QmVmb3JlKG1fYmxvY2spOwotCi0gICAgICAgICAgICAgICAg
ICAgIGJlZm9yZS0+cmVwbGFjZUxhc3RXaXRoTmV3PFZhbHVlPihtX3Byb2MsIEJyYW5jaCwgbV9v
cmlnaW4sIG1fdmFsdWUtPmNoaWxkKDEpKTsKLSAgICAgICAgICAgICAgICAgICAgYmVmb3JlLT5z
ZXRTdWNjZXNzb3JzKAotICAgICAgICAgICAgICAgICAgICAgICAgRnJlcXVlbnRlZEJsb2NrKG5v
cm1hbE1vZENhc2UsIEZyZXF1ZW5jeUNsYXNzOjpOb3JtYWwpLAotICAgICAgICAgICAgICAgICAg
ICAgICAgRnJlcXVlbnRlZEJsb2NrKHplcm9EZW5DYXNlLCBGcmVxdWVuY3lDbGFzczo6UmFyZSkp
OwotCi0gICAgICAgICAgICAgICAgICAgIFZhbHVlKiBkaXZSZXN1bHQgPSBub3JtYWxNb2RDYXNl
LT5hcHBlbmROZXc8VmFsdWU+KG1fcHJvYywgQ2hpbGxEaXYsIG1fb3JpZ2luLCBtX3ZhbHVlLT5j
aGlsZCgwKSwgbV92YWx1ZS0+Y2hpbGQoMSkpOwotICAgICAgICAgICAgICAgICAgICBWYWx1ZSog
bXVsdGlwbGllZEJhY2sgPSBub3JtYWxNb2RDYXNlLT5hcHBlbmROZXc8VmFsdWU+KG1fcHJvYywg
TXVsLCBtX29yaWdpbiwgZGl2UmVzdWx0LCBtX3ZhbHVlLT5jaGlsZCgxKSk7Ci0gICAgICAgICAg
ICAgICAgICAgIFZhbHVlKiByZXN1bHQgPSBub3JtYWxNb2RDYXNlLT5hcHBlbmROZXc8VmFsdWU+
KG1fcHJvYywgU3ViLCBtX29yaWdpbiwgbV92YWx1ZS0+Y2hpbGQoMCksIG11bHRpcGxpZWRCYWNr
KTsKLSAgICAgICAgICAgICAgICAgICAgVXBzaWxvblZhbHVlKiBub3JtYWxSZXN1bHQgPSBub3Jt
YWxNb2RDYXNlLT5hcHBlbmROZXc8VXBzaWxvblZhbHVlPihtX3Byb2MsIG1fb3JpZ2luLCByZXN1
bHQpOwotICAgICAgICAgICAgICAgICAgICBub3JtYWxNb2RDYXNlLT5hcHBlbmROZXc8VmFsdWU+
KG1fcHJvYywgSnVtcCwgbV9vcmlnaW4pOwotICAgICAgICAgICAgICAgICAgICBub3JtYWxNb2RD
YXNlLT5zZXRTdWNjZXNzb3JzKEZyZXF1ZW50ZWRCbG9jayhtX2Jsb2NrKSk7Ci0KLSAgICAgICAg
ICAgICAgICAgICAgVXBzaWxvblZhbHVlKiB6ZXJvUmVzdWx0ID0gemVyb0RlbkNhc2UtPmFwcGVu
ZE5ldzxVcHNpbG9uVmFsdWU+KAotICAgICAgICAgICAgICAgICAgICAgICAgbV9wcm9jLCBtX29y
aWdpbiwKLSAgICAgICAgICAgICAgICAgICAgICAgIHplcm9EZW5DYXNlLT5hcHBlbmRJbnRDb25z
dGFudChtX3Byb2MsIG1fdmFsdWUsIDApKTsKLSAgICAgICAgICAgICAgICAgICAgemVyb0RlbkNh
c2UtPmFwcGVuZE5ldzxWYWx1ZT4obV9wcm9jLCBKdW1wLCBtX29yaWdpbik7Ci0gICAgICAgICAg
ICAgICAgICAgIHplcm9EZW5DYXNlLT5zZXRTdWNjZXNzb3JzKEZyZXF1ZW50ZWRCbG9jayhtX2Js
b2NrKSk7Ci0KLSAgICAgICAgICAgICAgICAgICAgVmFsdWUqIHBoaSA9IG1faW5zZXJ0aW9uU2V0
Lmluc2VydDxWYWx1ZT4obV9pbmRleCwgUGhpLCBtX3ZhbHVlLT50eXBlKCksIG1fb3JpZ2luKTsK
LSAgICAgICAgICAgICAgICAgICAgbm9ybWFsUmVzdWx0LT5zZXRQaGkocGhpKTsKLSAgICAgICAg
ICAgICAgICAgICAgemVyb1Jlc3VsdC0+c2V0UGhpKHBoaSk7Ci0gICAgICAgICAgICAgICAgICAg
IG1fdmFsdWUtPnJlcGxhY2VXaXRoSWRlbnRpdHkocGhpKTsKLSAgICAgICAgICAgICAgICAgICAg
YmVmb3JlLT51cGRhdGVQcmVkZWNlc3NvcnNBZnRlcigpOwotICAgICAgICAgICAgICAgICAgICBt
X2NoYW5nZWQgPSB0cnVlOwotICAgICAgICAgICAgICAgIH0gZWxzZQotICAgICAgICAgICAgICAg
ICAgICBtYWtlRGl2aXNpb25DaGlsbChNb2QpOworICAgICAgICAgICAgY2FzZSBEaXY6IHsKKyAg
ICAgICAgICAgICAgICBpZiAobV92YWx1ZS0+aXNDaGlsbCgpKQorICAgICAgICAgICAgICAgICAg
ICBtYWtlRGl2aXNpb25DaGlsbChEaXYpOwogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAg
ICAgICAgfQogCkBAIC0xODgsNyArMTg5LDcgQEAgcHJpdmF0ZToKICAgICAgICAgaWYgKGlzQVJN
NjQoKSkKICAgICAgICAgICAgIHJldHVybjsKIAotICAgICAgICAvLyBXZSBpbXBsZW1lbnQgInJl
cyA9IENoaWxsRGl2L0NoaWxsTW9kKG51bSwgZGVuKSIgYXMgZm9sbG93czoKKyAgICAgICAgLy8g
V2UgaW1wbGVtZW50ICJyZXMgPSBEaXY8Q2hpbGw+L01vZDxDaGlsbD4obnVtLCBkZW4pIiBhcyBm
b2xsb3dzOgogICAgICAgICAvLwogICAgICAgICAvLyAgICAgaWYgKGRlbiArIDEgPD1fdW5zaWdu
ZWQgMSkgewogICAgICAgICAvLyAgICAgICAgIGlmICghZGVuKSB7CkluZGV4OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvYjMvQjNMb3dlclRvQWlyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvYjMvQjNMb3dlclRvQWlyLmNwcAkocmV2aXNpb24gMjA2NTI0KQorKysgU291
cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzTG93ZXJUb0Fpci5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTE4NDYsMTAgKzE4NDYsOSBAQCBwcml2YXRlOgogICAgICAgICAgICAgcmV0dXJuOwogICAgICAg
ICB9CiAKLSAgICAgICAgY2FzZSBDaGlsbERpdjoKLSAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJU
KGlzQVJNNjQoKSk7Ci0gICAgICAgICAgICBGQUxMVEhST1VHSDsKICAgICAgICAgY2FzZSBEaXY6
IHsKKyAgICAgICAgICAgIGlmIChtX3ZhbHVlLT5pc0NoaWxsKCkpCisgICAgICAgICAgICAgICAg
UkVMRUFTRV9BU1NFUlQoaXNBUk02NCgpKTsKICNpZiBDUFUoWDg2KSB8fCBDUFUoWDg2XzY0KQog
ICAgICAgICAgICAgaWYgKGlzSW50KG1fdmFsdWUtPnR5cGUoKSkpIHsKICAgICAgICAgICAgICAg
ICBsb3dlclg4NkRpdigpOwpAQCAtMTg2NSw2ICsxODY0LDcgQEAgcHJpdmF0ZToKIAogICAgICAg
ICBjYXNlIE1vZDogewogICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlQoaXNYODYoKSk7CisgICAg
ICAgICAgICBSRUxFQVNFX0FTU0VSVCghbV92YWx1ZS0+aXNDaGlsbCgpKTsKICNpZiBDUFUoWDg2
KSB8fCBDUFUoWDg2XzY0KQogICAgICAgICAgICAgbG93ZXJYODZEaXYoKTsKICAgICAgICAgICAg
IGFwcGVuZChNb3ZlLCBUbXAoWDg2UmVnaXN0ZXJzOjplZHgpLCB0bXAobV92YWx1ZSkpOwpJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzTWVtb3J5VmFsdWUuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNNZW1vcnlWYWx1ZS5oCShyZXZpc2lvbiAyMDY1
MjQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNNZW1vcnlWYWx1ZS5oCSh3b3JraW5n
IGNvcHkpCkBAIC0zOCw5ICszOCw5IEBAIG5hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgQjMgewog
CiBjbGFzcyBKU19FWFBPUlRfUFJJVkFURSBNZW1vcnlWYWx1ZSA6IHB1YmxpYyBWYWx1ZSB7CiBw
dWJsaWM6Ci0gICAgc3RhdGljIGJvb2wgYWNjZXB0cyhPcGNvZGUgb3Bjb2RlKQorICAgIHN0YXRp
YyBib29sIGFjY2VwdHMoS2luZCBraW5kKQogICAgIHsKLSAgICAgICAgc3dpdGNoIChvcGNvZGUp
IHsKKyAgICAgICAgc3dpdGNoIChraW5kLm9wY29kZSgpKSB7CiAgICAgICAgIGNhc2UgTG9hZDha
OgogICAgICAgICBjYXNlIExvYWQ4UzoKICAgICAgICAgY2FzZSBMb2FkMTZaOgpAQCAtNTUsOSAr
NTUsOSBAQCBwdWJsaWM6CiAgICAgICAgIH0KICAgICB9CiAKLSAgICBzdGF0aWMgYm9vbCBpc1N0
b3JlKE9wY29kZSBvcGNvZGUpCisgICAgc3RhdGljIGJvb2wgaXNTdG9yZShLaW5kIGtpbmQpCiAg
ICAgewotICAgICAgICBzd2l0Y2ggKG9wY29kZSkgeworICAgICAgICBzd2l0Y2ggKGtpbmQub3Bj
b2RlKCkpIHsKICAgICAgICAgY2FzZSBTdG9yZTg6CiAgICAgICAgIGNhc2UgU3RvcmUxNjoKICAg
ICAgICAgY2FzZSBTdG9yZToKQEAgLTY3LDkgKzY3LDkgQEAgcHVibGljOgogICAgICAgICB9CiAg
ICAgfQogCi0gICAgc3RhdGljIGJvb2wgaXNMb2FkKE9wY29kZSBvcGNvZGUpCisgICAgc3RhdGlj
IGJvb2wgaXNMb2FkKEtpbmQga2luZCkKICAgICB7Ci0gICAgICAgIHJldHVybiBhY2NlcHRzKG9w
Y29kZSkgJiYgIWlzU3RvcmUob3Bjb2RlKTsKKyAgICAgICAgcmV0dXJuIGFjY2VwdHMoa2luZCkg
JiYgIWlzU3RvcmUoa2luZCk7CiAgICAgfQogCiAgICAgfk1lbW9yeVZhbHVlKCk7CkBAIC05NSwx
MyArOTUsMTMgQEAgcHJpdmF0ZToKIAogICAgIC8vIFVzZSB0aGlzIGZvcm0gZm9yIExvYWQgKGJ1
dCBub3QgTG9hZDhaLCBMb2FkOFMsIG9yIGFueSBvZiB0aGUgTG9hZHMgdGhhdCBoYXZlIGEgc3Vm
Zml4IHRoYXQKICAgICAvLyBkZXNjcmliZXMgdGhlIHJldHVybmVkIHR5cGUpLgotICAgIE1lbW9y
eVZhbHVlKE9wY29kZSBvcGNvZGUsIFR5cGUgdHlwZSwgT3JpZ2luIG9yaWdpbiwgVmFsdWUqIHBv
aW50ZXIsIGludDMyX3Qgb2Zmc2V0ID0gMCkKLSAgICAgICAgOiBWYWx1ZShDaGVja2VkT3Bjb2Rl
LCBvcGNvZGUsIHR5cGUsIG9yaWdpbiwgcG9pbnRlcikKKyAgICBNZW1vcnlWYWx1ZShLaW5kIGtp
bmQsIFR5cGUgdHlwZSwgT3JpZ2luIG9yaWdpbiwgVmFsdWUqIHBvaW50ZXIsIGludDMyX3Qgb2Zm
c2V0ID0gMCkKKyAgICAgICAgOiBWYWx1ZShDaGVja2VkT3Bjb2RlLCBraW5kLCB0eXBlLCBvcmln
aW4sIHBvaW50ZXIpCiAgICAgICAgICwgbV9vZmZzZXQob2Zmc2V0KQogICAgICAgICAsIG1fcmFu
Z2UoSGVhcFJhbmdlOjp0b3AoKSkKICAgICB7CiAgICAgICAgIGlmICghQVNTRVJUX0RJU0FCTEVE
KSB7Ci0gICAgICAgICAgICBzd2l0Y2ggKG9wY29kZSkgeworICAgICAgICAgICAgc3dpdGNoIChr
aW5kLm9wY29kZSgpKSB7CiAgICAgICAgICAgICBjYXNlIExvYWQ6CiAgICAgICAgICAgICAgICAg
YnJlYWs7CiAgICAgICAgICAgICBjYXNlIExvYWQ4WjoKQEAgLTEyMiwxOSArMTIyLDE5IEBAIHBy
aXZhdGU6CiAgICAgfQogCiAgICAgLy8gVXNlIHRoaXMgZm9ybSBmb3IgbG9hZHMgd2hlcmUgdGhl
IHJldHVybiB0eXBlIGlzIGltcGxpZWQuCi0gICAgTWVtb3J5VmFsdWUoT3Bjb2RlIG9wY29kZSwg
T3JpZ2luIG9yaWdpbiwgVmFsdWUqIHBvaW50ZXIsIGludDMyX3Qgb2Zmc2V0ID0gMCkKLSAgICAg
ICAgOiBNZW1vcnlWYWx1ZShvcGNvZGUsIEludDMyLCBvcmlnaW4sIHBvaW50ZXIsIG9mZnNldCkK
KyAgICBNZW1vcnlWYWx1ZShLaW5kIGtpbmQsIE9yaWdpbiBvcmlnaW4sIFZhbHVlKiBwb2ludGVy
LCBpbnQzMl90IG9mZnNldCA9IDApCisgICAgICAgIDogTWVtb3J5VmFsdWUoa2luZCwgSW50MzIs
IG9yaWdpbiwgcG9pbnRlciwgb2Zmc2V0KQogICAgIHsKICAgICB9CiAKICAgICAvLyBVc2UgdGhp
cyBmb3JtIGZvciBzdG9yZXMuCi0gICAgTWVtb3J5VmFsdWUoT3Bjb2RlIG9wY29kZSwgT3JpZ2lu
IG9yaWdpbiwgVmFsdWUqIHZhbHVlLCBWYWx1ZSogcG9pbnRlciwgaW50MzJfdCBvZmZzZXQgPSAw
KQotICAgICAgICA6IFZhbHVlKENoZWNrZWRPcGNvZGUsIG9wY29kZSwgVm9pZCwgb3JpZ2luLCB2
YWx1ZSwgcG9pbnRlcikKKyAgICBNZW1vcnlWYWx1ZShLaW5kIGtpbmQsIE9yaWdpbiBvcmlnaW4s
IFZhbHVlKiB2YWx1ZSwgVmFsdWUqIHBvaW50ZXIsIGludDMyX3Qgb2Zmc2V0ID0gMCkKKyAgICAg
ICAgOiBWYWx1ZShDaGVja2VkT3Bjb2RlLCBraW5kLCBWb2lkLCBvcmlnaW4sIHZhbHVlLCBwb2lu
dGVyKQogICAgICAgICAsIG1fb2Zmc2V0KG9mZnNldCkKICAgICAgICAgLCBtX3JhbmdlKEhlYXBS
YW5nZTo6dG9wKCkpCiAgICAgewogICAgICAgICBpZiAoIUFTU0VSVF9ESVNBQkxFRCkgewotICAg
ICAgICAgICAgc3dpdGNoIChvcGNvZGUpIHsKKyAgICAgICAgICAgIHN3aXRjaCAoa2luZC5vcGNv
ZGUoKSkgewogICAgICAgICAgICAgY2FzZSBTdG9yZTg6CiAgICAgICAgICAgICBjYXNlIFN0b3Jl
MTY6CiAgICAgICAgICAgICBjYXNlIFN0b3JlOgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L2IzL0IzT3Bjb2RlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMv
QjNPcGNvZGUuY3BwCShyZXZpc2lvbiAyMDY1MjQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
YjMvQjNPcGNvZGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMjgsMTIgKzEyOCw2IEBAIHZvaWQg
cHJpbnRJbnRlcm5hbChQcmludFN0cmVhbSYgb3V0LCBPcGMKICAgICBjYXNlIE5lZzoKICAgICAg
ICAgb3V0LnByaW50KCJOZWciKTsKICAgICAgICAgcmV0dXJuOwotICAgIGNhc2UgQ2hpbGxEaXY6
Ci0gICAgICAgIG91dC5wcmludCgiQ2hpbGxEaXYiKTsKLSAgICAgICAgcmV0dXJuOwotICAgIGNh
c2UgQ2hpbGxNb2Q6Ci0gICAgICAgIG91dC5wcmludCgiQ2hpbGxNb2QiKTsKLSAgICAgICAgcmV0
dXJuOwogICAgIGNhc2UgQml0QW5kOgogICAgICAgICBvdXQucHJpbnQoIkJpdEFuZCIpOwogICAg
ICAgICByZXR1cm47CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNPcGNvZGUuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNPcGNvZGUuaAkocmV2aXNp
b24gMjA2NTI0KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzT3Bjb2RlLmgJKHdvcmtp
bmcgY29weSkKQEAgLTM0LDYgKzM0LDkgQEAKIAogbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBC
MyB7CiAKKy8vIFdhcm5pbmc6IEluIEIzLCBhbiBPcGNvZGUgaXMganVzdCBvbmUgcGFydCBvZiBh
IEtpbmQuIEtpbmQgaXMgdXNlZCB0aGUgd2F5IHRoYXQgYW4gb3Bjb2RlCisvLyB3b3VsZCBiZSB1
c2VkIGluIHNpbXBsZSBJUnMuIFNlZSBCM0tpbmQuaC4KKwogZW51bSBPcGNvZGUgOiBpbnQxNl90
IHsKICAgICAvLyBBIG5vLW9wIHRoYXQgcmV0dXJucyBWb2lkLCB1c2VmdWwgZm9yIHdoZW4geW91
IHdhbnQgdG8gcmVtb3ZlIGEgdmFsdWUuCiAgICAgTm9wLApAQCAtODQsOCArODcsNiBAQCBlbnVt
IE9wY29kZSA6IGludDE2X3QgewogICAgIE5lZywKIAogICAgIC8vIEludGVnZXIgbWF0aC4KLSAg
ICBDaGlsbERpdiwgLy8gZG9lc24ndCB0cmFwIGV2ZXIsIGJlaGF2ZXMgbGlrZSBKUyAoeC95KXww
LgotICAgIENoaWxsTW9kLCAvLyBkb2Vzbid0IHRyYXAgZXZlciwgYmVoYXZlcyBsaWtlIEpTICh4
JXkpfDAuCiAgICAgQml0QW5kLAogICAgIEJpdE9yLAogICAgIEJpdFhvciwKSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9iMy9CM1BhdGNocG9pbnRWYWx1ZS5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM1BhdGNocG9pbnRWYWx1ZS5oCShyZXZpc2lvbiAyMDY1
MjQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNQYXRjaHBvaW50VmFsdWUuaAkod29y
a2luZyBjb3B5KQpAQCAtMzgsNyArMzgsNyBAQCBjbGFzcyBQYXRjaHBvaW50VmFsdWUgOiBwdWJs
aWMgU3RhY2ttYXBWCiBwdWJsaWM6CiAgICAgdHlwZWRlZiBTdGFja21hcFZhbHVlIEJhc2U7CiAg
ICAgCi0gICAgc3RhdGljIGJvb2wgYWNjZXB0cyhPcGNvZGUgb3Bjb2RlKSB7IHJldHVybiBvcGNv
ZGUgPT0gUGF0Y2hwb2ludDsgfQorICAgIHN0YXRpYyBib29sIGFjY2VwdHMoS2luZCBraW5kKSB7
IHJldHVybiBraW5kID09IFBhdGNocG9pbnQ7IH0KIAogICAgIH5QYXRjaHBvaW50VmFsdWUoKTsK
IApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzUmVkdWNlU3RyZW5ndGguY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM1JlZHVjZVN0cmVuZ3RoLmNw
cAkocmV2aXNpb24gMjA2NTI0KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzUmVkdWNl
U3RyZW5ndGguY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02NDgsMTAgKzY0OCw5IEBAIHByaXZhdGU6
CiAgICAgICAgICAgICBicmVhazsKIAogICAgICAgICBjYXNlIERpdjoKLSAgICAgICAgY2FzZSBD
aGlsbERpdjoKICAgICAgICAgICAgIC8vIFR1cm4gdGhpczogRGl2KGNvbnN0YW50MSwgY29uc3Rh
bnQyKQogICAgICAgICAgICAgLy8gSW50byB0aGlzOiBjb25zdGFudDEgLyBjb25zdGFudDIKLSAg
ICAgICAgICAgIC8vIE5vdGUgdGhhdCB0aGlzIHVzZXMgQ2hpbGxEaXYgc2VtYW50aWNzLiBUaGF0
J3MgZmluZSwgYmVjYXVzZSB0aGUgcnVsZXMgZm9yIERpdgorICAgICAgICAgICAgLy8gTm90ZSB0
aGF0IHRoaXMgdXNlcyBEaXY8Q2hpbGw+IHNlbWFudGljcy4gVGhhdCdzIGZpbmUsIGJlY2F1c2Ug
dGhlIHJ1bGVzIGZvciBEaXYKICAgICAgICAgICAgIC8vIGFyZSBzdHJpY3RseSB3ZWFrZXI6IGl0
IGhhcyBjb3JuZXIgY2FzZXMgd2hlcmUgaXQncyBhbGxvd2VkIHRvIGRvIGFueXRoaW5nIGl0CiAg
ICAgICAgICAgICAvLyBsaWtlcy4KICAgICAgICAgICAgIGlmIChyZXBsYWNlV2l0aE5ld1ZhbHVl
KG1fdmFsdWUtPmNoaWxkKDApLT5kaXZDb25zdGFudChtX3Byb2MsIG1fdmFsdWUtPmNoaWxkKDEp
KSkpCkBAIC03MzcsMTAgKzczNiw5IEBAIHByaXZhdGU6CiAgICAgICAgICAgICBicmVhazsKIAog
ICAgICAgICBjYXNlIE1vZDoKLSAgICAgICAgY2FzZSBDaGlsbE1vZDoKICAgICAgICAgICAgIC8v
IFR1cm4gdGhpczogTW9kKGNvbnN0YW50MSwgY29uc3RhbnQyKQogICAgICAgICAgICAgLy8gSW50
byB0aGlzOiBjb25zdGFudDEgLyBjb25zdGFudDIKLSAgICAgICAgICAgIC8vIE5vdGUgdGhhdCB0
aGlzIHVzZXMgQ2hpbGxNb2Qgc2VtYW50aWNzLgorICAgICAgICAgICAgLy8gTm90ZSB0aGF0IHRo
aXMgdXNlcyBNb2Q8Q2hpbGw+IHNlbWFudGljcy4KICAgICAgICAgICAgIGlmIChyZXBsYWNlV2l0
aE5ld1ZhbHVlKG1fdmFsdWUtPmNoaWxkKDApLT5tb2RDb25zdGFudChtX3Byb2MsIG1fdmFsdWUt
PmNoaWxkKDEpKSkpCiAgICAgICAgICAgICAgICAgYnJlYWs7CiAKQEAgLTc3NCwxOSArNzcyLDgg
QEAgcHJpdmF0ZToKICAgICAgICAgICAgICAgICAgICAgLy8gICAgICAgICAgICAgICAgPSAtMl4z
MSAtIC0yXjMxCiAgICAgICAgICAgICAgICAgICAgIC8vICAgICAgICAgICAgICAgID0gMAogCi0g
ICAgICAgICAgICAgICAgICAgIE9wY29kZSBkaXZPcGNvZGU7Ci0gICAgICAgICAgICAgICAgICAg
IHN3aXRjaCAobV92YWx1ZS0+b3Bjb2RlKCkpIHsKLSAgICAgICAgICAgICAgICAgICAgY2FzZSBN
b2Q6Ci0gICAgICAgICAgICAgICAgICAgICAgICBkaXZPcGNvZGUgPSBEaXY7Ci0gICAgICAgICAg
ICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAgICAgICAgY2FzZSBDaGlsbE1vZDoK
LSAgICAgICAgICAgICAgICAgICAgICAgIGRpdk9wY29kZSA9IENoaWxsRGl2OwotICAgICAgICAg
ICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgICAgIGRlZmF1bHQ6Ci0gICAg
ICAgICAgICAgICAgICAgICAgICBkaXZPcGNvZGUgPSBPb3BzOwotICAgICAgICAgICAgICAgICAg
ICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICAgICAgICAgICAgICAgICAg
ICAgIGJyZWFrOwotICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIEtp
bmQgZGl2S2luZCA9IERpdjsKKyAgICAgICAgICAgICAgICAgICAgZGl2S2luZC5zZXRJc0NoaWxs
KG1fdmFsdWUtPmlzQ2hpbGwoKSk7CiAKICAgICAgICAgICAgICAgICAgICAgcmVwbGFjZVdpdGhJ
ZGVudGl0eSgKICAgICAgICAgICAgICAgICAgICAgICAgIG1faW5zZXJ0aW9uU2V0Lmluc2VydDxW
YWx1ZT4oCkBAIC03OTUsNyArNzgyLDcgQEAgcHJpdmF0ZToKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBtX2luc2VydGlvblNldC5pbnNlcnQ8VmFsdWU+KAogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBtX2luZGV4LCBNdWwsIG1fdmFsdWUtPm9yaWdpbigpLAogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBtX2luc2VydGlvblNldC5pbnNlcnQ8VmFsdWU+KAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbV9pbmRleCwgZGl2T3Bjb2RlLCBtX3Zh
bHVlLT5vcmlnaW4oKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1faW5k
ZXgsIGRpdktpbmQsIG1fdmFsdWUtPm9yaWdpbigpLAogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgbV92YWx1ZS0+Y2hpbGQoMCksIG1fdmFsdWUtPmNoaWxkKDEpKSwKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgbV92YWx1ZS0+Y2hpbGQoMSkpKSk7CiAgICAgICAg
ICAgICAgICAgICAgIGJyZWFrOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzU2xv
dEJhc2VWYWx1ZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM1Ns
b3RCYXNlVmFsdWUuaAkocmV2aXNpb24gMjA2NTI0KQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L2IzL0IzU2xvdEJhc2VWYWx1ZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0zNiw3ICszNiw3IEBAIGNs
YXNzIFN0YWNrU2xvdDsKIAogY2xhc3MgSlNfRVhQT1JUX1BSSVZBVEUgU2xvdEJhc2VWYWx1ZSA6
IHB1YmxpYyBWYWx1ZSB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIGJvb2wgYWNjZXB0cyhPcGNvZGUg
b3Bjb2RlKSB7IHJldHVybiBvcGNvZGUgPT0gU2xvdEJhc2U7IH0KKyAgICBzdGF0aWMgYm9vbCBh
Y2NlcHRzKEtpbmQga2luZCkgeyByZXR1cm4ga2luZCA9PSBTbG90QmFzZTsgfQogCiAgICAgflNs
b3RCYXNlVmFsdWUoKTsKIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzU3RhY2tt
YXBWYWx1ZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzU3Rh
Y2ttYXBWYWx1ZS5jcHAJKHJldmlzaW9uIDIwNjUyNCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9iMy9CM1N0YWNrbWFwVmFsdWUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC04MywxMCArODMsMTAg
QEAgdm9pZCBTdGFja21hcFZhbHVlOjpkdW1wTWV0YShDb21tYVByaW50ZQogICAgICAgICAiLCBs
YXRlQ2xvYmJlcmVkID0gIiwgbV9sYXRlQ2xvYmJlcmVkLCAiLCB1c2VkUmVnaXN0ZXJzID0gIiwg
bV91c2VkUmVnaXN0ZXJzKTsKIH0KIAotU3RhY2ttYXBWYWx1ZTo6U3RhY2ttYXBWYWx1ZShDaGVj
a2VkT3Bjb2RlVGFnLCBPcGNvZGUgb3Bjb2RlLCBUeXBlIHR5cGUsIE9yaWdpbiBvcmlnaW4pCi0g
ICAgOiBWYWx1ZShDaGVja2VkT3Bjb2RlLCBvcGNvZGUsIHR5cGUsIG9yaWdpbikKK1N0YWNrbWFw
VmFsdWU6OlN0YWNrbWFwVmFsdWUoQ2hlY2tlZE9wY29kZVRhZywgS2luZCBraW5kLCBUeXBlIHR5
cGUsIE9yaWdpbiBvcmlnaW4pCisgICAgOiBWYWx1ZShDaGVja2VkT3Bjb2RlLCBraW5kLCB0eXBl
LCBvcmlnaW4pCiB7Ci0gICAgQVNTRVJUKGFjY2VwdHMob3Bjb2RlKSk7CisgICAgQVNTRVJUKGFj
Y2VwdHMoa2luZCkpOwogfQogCiB9IH0gLy8gbmFtZXNwYWNlIEpTQzo6QjMKSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9iMy9CM1N0YWNrbWFwVmFsdWUuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYjMvQjNTdGFja21hcFZhbHVlLmgJKHJldmlzaW9uIDIwNjUyNCkK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM1N0YWNrbWFwVmFsdWUuaAkod29ya2luZyBj
b3B5KQpAQCAtNDQsMTAgKzQ0LDEwIEBAIHR5cGVkZWYgU2hhcmVkVGFzazxTdGFja21hcEdlbmVy
YXRvckZ1bmMKIAogY2xhc3MgSlNfRVhQT1JUX1BSSVZBVEUgU3RhY2ttYXBWYWx1ZSA6IHB1Ymxp
YyBWYWx1ZSB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIGJvb2wgYWNjZXB0cyhPcGNvZGUgb3Bjb2Rl
KQorICAgIHN0YXRpYyBib29sIGFjY2VwdHMoS2luZCBraW5kKQogICAgIHsKICAgICAgICAgLy8g
VGhpcyBuZWVkcyB0byBpbmNsdWRlIG9wY29kZXMgb2YgYWxsIHN1YmNsYXNzZXMuCi0gICAgICAg
IHN3aXRjaCAob3Bjb2RlKSB7CisgICAgICAgIHN3aXRjaCAoa2luZC5vcGNvZGUoKSkgewogICAg
ICAgICBjYXNlIENoZWNrQWRkOgogICAgICAgICBjYXNlIENoZWNrU3ViOgogICAgICAgICBjYXNl
IENoZWNrTXVsOgpAQCAtMjg5LDcgKzI4OSw3IEBAIHByb3RlY3RlZDoKICAgICB2b2lkIGR1bXBD
aGlsZHJlbihDb21tYVByaW50ZXImLCBQcmludFN0cmVhbSYpIGNvbnN0IG92ZXJyaWRlOwogICAg
IHZvaWQgZHVtcE1ldGEoQ29tbWFQcmludGVyJiwgUHJpbnRTdHJlYW0mKSBjb25zdCBvdmVycmlk
ZTsKIAotICAgIFN0YWNrbWFwVmFsdWUoQ2hlY2tlZE9wY29kZVRhZywgT3Bjb2RlLCBUeXBlLCBP
cmlnaW4pOworICAgIFN0YWNrbWFwVmFsdWUoQ2hlY2tlZE9wY29kZVRhZywgS2luZCwgVHlwZSwg
T3JpZ2luKTsKIAogcHJpdmF0ZToKICAgICBmcmllbmQgY2xhc3MgQ2hlY2tTcGVjaWFsOwpJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzU3dpdGNoVmFsdWUuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNTd2l0Y2hWYWx1ZS5oCShyZXZpc2lvbiAyMDY1
MjQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNTd2l0Y2hWYWx1ZS5oCSh3b3JraW5n
IGNvcHkpCkBAIC0zNiw3ICszNiw3IEBAIG5hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgQjMgewog
CiBjbGFzcyBTd2l0Y2hWYWx1ZSA6IHB1YmxpYyBWYWx1ZSB7CiBwdWJsaWM6Ci0gICAgc3RhdGlj
IGJvb2wgYWNjZXB0cyhPcGNvZGUgb3Bjb2RlKSB7IHJldHVybiBvcGNvZGUgPT0gU3dpdGNoOyB9
CisgICAgc3RhdGljIGJvb2wgYWNjZXB0cyhLaW5kIGtpbmQpIHsgcmV0dXJuIGtpbmQgPT0gU3dp
dGNoOyB9CiAKICAgICB+U3dpdGNoVmFsdWUoKTsKIApJbmRleDogU291cmNlL0phdmFTY3JpcHRD
b3JlL2IzL0IzVXBzaWxvblZhbHVlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL2IzL0IzVXBzaWxvblZhbHVlLmgJKHJldmlzaW9uIDIwNjUyNCkKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9iMy9CM1Vwc2lsb25WYWx1ZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0zNCw3ICsz
NCw3IEBAIG5hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgQjMgewogCiBjbGFzcyBKU19FWFBPUlRf
UFJJVkFURSBVcHNpbG9uVmFsdWUgOiBwdWJsaWMgVmFsdWUgewogcHVibGljOgotICAgIHN0YXRp
YyBib29sIGFjY2VwdHMoT3Bjb2RlIG9wY29kZSkgeyByZXR1cm4gb3Bjb2RlID09IFVwc2lsb247
IH0KKyAgICBzdGF0aWMgYm9vbCBhY2NlcHRzKEtpbmQga2luZCkgeyByZXR1cm4ga2luZCA9PSBV
cHNpbG9uOyB9CiAKICAgICB+VXBzaWxvblZhbHVlKCk7CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9iMy9CM1ZhbGlkYXRlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvYjMvQjNWYWxpZGF0ZS5jcHAJKHJldmlzaW9uIDIwNjUyNCkKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9iMy9CM1ZhbGlkYXRlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTMxLDQ0ICsx
MzEsNTQgQEAgcHVibGljOgogICAgICAgICAgICAgc3dpdGNoICh2YWx1ZS0+b3Bjb2RlKCkpIHsK
ICAgICAgICAgICAgIGNhc2UgTm9wOgogICAgICAgICAgICAgY2FzZSBGZW5jZToKKyAgICAgICAg
ICAgICAgICBWQUxJREFURSghdmFsdWUtPmtpbmQoKS5oYXNFeHRyYUJpdHMoKSwgKCJBdCAiLCAq
dmFsdWUpKTsKICAgICAgICAgICAgICAgICBWQUxJREFURSghdmFsdWUtPm51bUNoaWxkcmVuKCks
ICgiQXQgIiwgKnZhbHVlKSk7CiAgICAgICAgICAgICAgICAgVkFMSURBVEUodmFsdWUtPnR5cGUo
KSA9PSBWb2lkLCAoIkF0ICIsICp2YWx1ZSkpOwogICAgICAgICAgICAgICAgIGJyZWFrOwogICAg
ICAgICAgICAgY2FzZSBJZGVudGl0eToKKyAgICAgICAgICAgICAgICBWQUxJREFURSghdmFsdWUt
PmtpbmQoKS5oYXNFeHRyYUJpdHMoKSwgKCJBdCAiLCAqdmFsdWUpKTsKICAgICAgICAgICAgICAg
ICBWQUxJREFURSh2YWx1ZS0+bnVtQ2hpbGRyZW4oKSA9PSAxLCAoIkF0ICIsICp2YWx1ZSkpOwog
ICAgICAgICAgICAgICAgIFZBTElEQVRFKHZhbHVlLT50eXBlKCkgPT0gdmFsdWUtPmNoaWxkKDAp
LT50eXBlKCksICgiQXQgIiwgKnZhbHVlKSk7CiAgICAgICAgICAgICAgICAgVkFMSURBVEUodmFs
dWUtPnR5cGUoKSAhPSBWb2lkLCAoIkF0ICIsICp2YWx1ZSkpOwogICAgICAgICAgICAgICAgIGJy
ZWFrOwogICAgICAgICAgICAgY2FzZSBDb25zdDMyOgorICAgICAgICAgICAgICAgIFZBTElEQVRF
KCF2YWx1ZS0+a2luZCgpLmhhc0V4dHJhQml0cygpLCAoIkF0ICIsICp2YWx1ZSkpOwogICAgICAg
ICAgICAgICAgIFZBTElEQVRFKCF2YWx1ZS0+bnVtQ2hpbGRyZW4oKSwgKCJBdCAiLCAqdmFsdWUp
KTsKICAgICAgICAgICAgICAgICBWQUxJREFURSh2YWx1ZS0+dHlwZSgpID09IEludDMyLCAoIkF0
ICIsICp2YWx1ZSkpOwogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgY2FzZSBD
b25zdDY0OgorICAgICAgICAgICAgICAgIFZBTElEQVRFKCF2YWx1ZS0+a2luZCgpLmhhc0V4dHJh
Qml0cygpLCAoIkF0ICIsICp2YWx1ZSkpOwogICAgICAgICAgICAgICAgIFZBTElEQVRFKCF2YWx1
ZS0+bnVtQ2hpbGRyZW4oKSwgKCJBdCAiLCAqdmFsdWUpKTsKICAgICAgICAgICAgICAgICBWQUxJ
REFURSh2YWx1ZS0+dHlwZSgpID09IEludDY0LCAoIkF0ICIsICp2YWx1ZSkpOwogICAgICAgICAg
ICAgICAgIGJyZWFrOwogICAgICAgICAgICAgY2FzZSBDb25zdERvdWJsZToKKyAgICAgICAgICAg
ICAgICBWQUxJREFURSghdmFsdWUtPmtpbmQoKS5oYXNFeHRyYUJpdHMoKSwgKCJBdCAiLCAqdmFs
dWUpKTsKICAgICAgICAgICAgICAgICBWQUxJREFURSghdmFsdWUtPm51bUNoaWxkcmVuKCksICgi
QXQgIiwgKnZhbHVlKSk7CiAgICAgICAgICAgICAgICAgVkFMSURBVEUodmFsdWUtPnR5cGUoKSA9
PSBEb3VibGUsICgiQXQgIiwgKnZhbHVlKSk7CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAg
ICAgICAgICBjYXNlIENvbnN0RmxvYXQ6CisgICAgICAgICAgICAgICAgVkFMSURBVEUoIXZhbHVl
LT5raW5kKCkuaGFzRXh0cmFCaXRzKCksICgiQXQgIiwgKnZhbHVlKSk7CiAgICAgICAgICAgICAg
ICAgVkFMSURBVEUoIXZhbHVlLT5udW1DaGlsZHJlbigpLCAoIkF0ICIsICp2YWx1ZSkpOwogICAg
ICAgICAgICAgICAgIFZBTElEQVRFKHZhbHVlLT50eXBlKCkgPT0gRmxvYXQsICgiQXQgIiwgKnZh
bHVlKSk7CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICBjYXNlIFNldDoKKyAg
ICAgICAgICAgICAgICBWQUxJREFURSghdmFsdWUtPmtpbmQoKS5oYXNFeHRyYUJpdHMoKSwgKCJB
dCAiLCAqdmFsdWUpKTsKICAgICAgICAgICAgICAgICBWQUxJREFURSh2YWx1ZS0+bnVtQ2hpbGRy
ZW4oKSA9PSAxLCAoIkF0ICIsICp2YWx1ZSkpOwogICAgICAgICAgICAgICAgIFZBTElEQVRFKHZh
bHVlLT5jaGlsZCgwKS0+dHlwZSgpID09IHZhbHVlLT5hczxWYXJpYWJsZVZhbHVlPigpLT52YXJp
YWJsZSgpLT50eXBlKCksICgiQXQgIiwgKnZhbHVlKSk7CiAgICAgICAgICAgICAgICAgYnJlYWs7
CiAgICAgICAgICAgICBjYXNlIEdldDoKKyAgICAgICAgICAgICAgICBWQUxJREFURSghdmFsdWUt
PmtpbmQoKS5oYXNFeHRyYUJpdHMoKSwgKCJBdCAiLCAqdmFsdWUpKTsKICAgICAgICAgICAgICAg
ICBWQUxJREFURSghdmFsdWUtPm51bUNoaWxkcmVuKCksICgiQXQgIiwgKnZhbHVlKSk7CiAgICAg
ICAgICAgICAgICAgVkFMSURBVEUodmFsdWUtPnR5cGUoKSA9PSB2YWx1ZS0+YXM8VmFyaWFibGVW
YWx1ZT4oKS0+dmFyaWFibGUoKS0+dHlwZSgpLCAoIkF0ICIsICp2YWx1ZSkpOwogICAgICAgICAg
ICAgICAgIGJyZWFrOwogICAgICAgICAgICAgY2FzZSBTbG90QmFzZToKICAgICAgICAgICAgIGNh
c2UgRnJhbWVQb2ludGVyOgorICAgICAgICAgICAgICAgIFZBTElEQVRFKCF2YWx1ZS0+a2luZCgp
Lmhhc0V4dHJhQml0cygpLCAoIkF0ICIsICp2YWx1ZSkpOwogICAgICAgICAgICAgICAgIFZBTElE
QVRFKCF2YWx1ZS0+bnVtQ2hpbGRyZW4oKSwgKCJBdCAiLCAqdmFsdWUpKTsKICAgICAgICAgICAg
ICAgICBWQUxJREFURSh2YWx1ZS0+dHlwZSgpID09IHBvaW50ZXJUeXBlKCksICgiQXQgIiwgKnZh
bHVlKSk7CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICBjYXNlIEFyZ3VtZW50
UmVnOgorICAgICAgICAgICAgICAgIFZBTElEQVRFKCF2YWx1ZS0+a2luZCgpLmhhc0V4dHJhQml0
cygpLCAoIkF0ICIsICp2YWx1ZSkpOwogICAgICAgICAgICAgICAgIFZBTElEQVRFKCF2YWx1ZS0+
bnVtQ2hpbGRyZW4oKSwgKCJBdCAiLCAqdmFsdWUpKTsKICAgICAgICAgICAgICAgICBWQUxJREFU
RSgKICAgICAgICAgICAgICAgICAgICAgKHZhbHVlLT5hczxBcmd1bWVudFJlZ1ZhbHVlPigpLT5h
cmd1bWVudFJlZygpLmlzR1BSKCkgPyBwb2ludGVyVHlwZSgpIDogRG91YmxlKQpAQCAtMTgxLDE5
ICsxOTEsMzEgQEAgcHVibGljOgogICAgICAgICAgICAgY2FzZSBNb2Q6CiAgICAgICAgICAgICBj
YXNlIEJpdEFuZDoKICAgICAgICAgICAgIGNhc2UgQml0WG9yOgorICAgICAgICAgICAgICAgIHN3
aXRjaCAodmFsdWUtPm9wY29kZSgpKSB7CisgICAgICAgICAgICAgICAgY2FzZSBEaXY6CisgICAg
ICAgICAgICAgICAgY2FzZSBNb2Q6CisgICAgICAgICAgICAgICAgICAgIGlmICh2YWx1ZS0+aXND
aGlsbCgpKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBWQUxJREFURSh2YWx1ZS0+b3Bjb2Rl
KCkgPT0gRGl2IHx8IHZhbHVlLT5vcGNvZGUoKSA9PSBNb2QsICgiQXQgIiwgKnZhbHVlKSk7Cisg
ICAgICAgICAgICAgICAgICAgICAgICBWQUxJREFURShpc0ludCh2YWx1ZS0+dHlwZSgpKSwgKCJB
dCAiLCAqdmFsdWUpKTsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAg
ICBicmVhazsKKyAgICAgICAgICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgICAgICAgICBW
QUxJREFURSghdmFsdWUtPmtpbmQoKS5oYXNFeHRyYUJpdHMoKSwgKCJBdCAiLCAqdmFsdWUpKTsK
KyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgfQogICAgICAgICAg
ICAgICAgIFZBTElEQVRFKHZhbHVlLT5udW1DaGlsZHJlbigpID09IDIsICgiQXQgIiwgKnZhbHVl
KSk7CiAgICAgICAgICAgICAgICAgVkFMSURBVEUodmFsdWUtPnR5cGUoKSA9PSB2YWx1ZS0+Y2hp
bGQoMCktPnR5cGUoKSwgKCJBdCAiLCAqdmFsdWUpKTsKICAgICAgICAgICAgICAgICBWQUxJREFU
RSh2YWx1ZS0+dHlwZSgpID09IHZhbHVlLT5jaGlsZCgxKS0+dHlwZSgpLCAoIkF0ICIsICp2YWx1
ZSkpOwogICAgICAgICAgICAgICAgIFZBTElEQVRFKHZhbHVlLT50eXBlKCkgIT0gVm9pZCwgKCJB
dCAiLCAqdmFsdWUpKTsKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIGNhc2Ug
TmVnOgorICAgICAgICAgICAgICAgIFZBTElEQVRFKCF2YWx1ZS0+a2luZCgpLmhhc0V4dHJhQml0
cygpLCAoIkF0ICIsICp2YWx1ZSkpOwogICAgICAgICAgICAgICAgIFZBTElEQVRFKHZhbHVlLT5u
dW1DaGlsZHJlbigpID09IDEsICgiQXQgIiwgKnZhbHVlKSk7CiAgICAgICAgICAgICAgICAgVkFM
SURBVEUodmFsdWUtPnR5cGUoKSA9PSB2YWx1ZS0+Y2hpbGQoMCktPnR5cGUoKSwgKCJBdCAiLCAq
dmFsdWUpKTsKICAgICAgICAgICAgICAgICBWQUxJREFURSh2YWx1ZS0+dHlwZSgpICE9IFZvaWQs
ICgiQXQgIiwgKnZhbHVlKSk7CiAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICBj
YXNlIENoaWxsRGl2OgotICAgICAgICAgICAgY2FzZSBDaGlsbE1vZDoKICAgICAgICAgICAgIGNh
c2UgQml0T3I6CisgICAgICAgICAgICAgICAgVkFMSURBVEUoIXZhbHVlLT5raW5kKCkuaGFzRXh0
cmFCaXRzKCksICgiQXQgIiwgKnZhbHVlKSk7CiAgICAgICAgICAgICAgICAgVkFMSURBVEUodmFs
dWUtPm51bUNoaWxkcmVuKCkgPT0gMiwgKCJBdCAiLCAqdmFsdWUpKTsKICAgICAgICAgICAgICAg
ICBWQUxJREFURSh2YWx1ZS0+dHlwZSgpID09IHZhbHVlLT5jaGlsZCgwKS0+dHlwZSgpLCAoIkF0
ICIsICp2YWx1ZSkpOwogICAgICAgICAgICAgICAgIFZBTElEQVRFKHZhbHVlLT50eXBlKCkgPT0g
dmFsdWUtPmNoaWxkKDEpLT50eXBlKCksICgiQXQgIiwgKnZhbHVlKSk7CkBAIC0yMDIsMTIgKzIy
NCwxNCBAQCBwdWJsaWM6CiAgICAgICAgICAgICBjYXNlIFNobDoKICAgICAgICAgICAgIGNhc2Ug
U1NocjoKICAgICAgICAgICAgIGNhc2UgWlNocjoKKyAgICAgICAgICAgICAgICBWQUxJREFURSgh
dmFsdWUtPmtpbmQoKS5oYXNFeHRyYUJpdHMoKSwgKCJBdCAiLCAqdmFsdWUpKTsKICAgICAgICAg
ICAgICAgICBWQUxJREFURSh2YWx1ZS0+bnVtQ2hpbGRyZW4oKSA9PSAyLCAoIkF0ICIsICp2YWx1
ZSkpOwogICAgICAgICAgICAgICAgIFZBTElEQVRFKHZhbHVlLT50eXBlKCkgPT0gdmFsdWUtPmNo
aWxkKDApLT50eXBlKCksICgiQXQgIiwgKnZhbHVlKSk7CiAgICAgICAgICAgICAgICAgVkFMSURB
VEUodmFsdWUtPmNoaWxkKDEpLT50eXBlKCkgPT0gSW50MzIsICgiQXQgIiwgKnZhbHVlKSk7CiAg
ICAgICAgICAgICAgICAgVkFMSURBVEUoaXNJbnQodmFsdWUtPnR5cGUoKSksICgiQXQgIiwgKnZh
bHVlKSk7CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICBjYXNlIEJpdHdpc2VD
YXN0OgorICAgICAgICAgICAgICAgIFZBTElEQVRFKCF2YWx1ZS0+a2luZCgpLmhhc0V4dHJhQml0
cygpLCAoIkF0ICIsICp2YWx1ZSkpOwogICAgICAgICAgICAgICAgIFZBTElEQVRFKHZhbHVlLT5u
dW1DaGlsZHJlbigpID09IDEsICgiQXQgIiwgKnZhbHVlKSk7CiAgICAgICAgICAgICAgICAgVkFM
SURBVEUodmFsdWUtPnR5cGUoKSAhPSB2YWx1ZS0+Y2hpbGQoMCktPnR5cGUoKSwgKCJBdCAiLCAq
dmFsdWUpKTsKICAgICAgICAgICAgICAgICBWQUxJREFURSgKQEAgLTIxOSwyMiArMjQzLDI2IEBA
IHB1YmxpYzoKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIGNhc2UgU0V4dDg6
CiAgICAgICAgICAgICBjYXNlIFNFeHQxNjoKKyAgICAgICAgICAgICAgICBWQUxJREFURSghdmFs
dWUtPmtpbmQoKS5oYXNFeHRyYUJpdHMoKSwgKCJBdCAiLCAqdmFsdWUpKTsKICAgICAgICAgICAg
ICAgICBWQUxJREFURSh2YWx1ZS0+bnVtQ2hpbGRyZW4oKSA9PSAxLCAoIkF0ICIsICp2YWx1ZSkp
OwogICAgICAgICAgICAgICAgIFZBTElEQVRFKHZhbHVlLT5jaGlsZCgwKS0+dHlwZSgpID09IElu
dDMyLCAoIkF0ICIsICp2YWx1ZSkpOwogICAgICAgICAgICAgICAgIFZBTElEQVRFKHZhbHVlLT50
eXBlKCkgPT0gSW50MzIsICgiQXQgIiwgKnZhbHVlKSk7CiAgICAgICAgICAgICAgICAgYnJlYWs7
CiAgICAgICAgICAgICBjYXNlIFNFeHQzMjoKICAgICAgICAgICAgIGNhc2UgWkV4dDMyOgorICAg
ICAgICAgICAgICAgIFZBTElEQVRFKCF2YWx1ZS0+a2luZCgpLmhhc0V4dHJhQml0cygpLCAoIkF0
ICIsICp2YWx1ZSkpOwogICAgICAgICAgICAgICAgIFZBTElEQVRFKHZhbHVlLT5udW1DaGlsZHJl
bigpID09IDEsICgiQXQgIiwgKnZhbHVlKSk7CiAgICAgICAgICAgICAgICAgVkFMSURBVEUodmFs
dWUtPmNoaWxkKDApLT50eXBlKCkgPT0gSW50MzIsICgiQXQgIiwgKnZhbHVlKSk7CiAgICAgICAg
ICAgICAgICAgVkFMSURBVEUodmFsdWUtPnR5cGUoKSA9PSBJbnQ2NCwgKCJBdCAiLCAqdmFsdWUp
KTsKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIGNhc2UgQ2x6OgorICAgICAg
ICAgICAgICAgIFZBTElEQVRFKCF2YWx1ZS0+a2luZCgpLmhhc0V4dHJhQml0cygpLCAoIkF0ICIs
ICp2YWx1ZSkpOwogICAgICAgICAgICAgICAgIFZBTElEQVRFKHZhbHVlLT5udW1DaGlsZHJlbigp
ID09IDEsICgiQXQgIiwgKnZhbHVlKSk7CiAgICAgICAgICAgICAgICAgVkFMSURBVEUoaXNJbnQo
dmFsdWUtPmNoaWxkKDApLT50eXBlKCkpLCAoIkF0ICIsICp2YWx1ZSkpOwogICAgICAgICAgICAg
ICAgIFZBTElEQVRFKGlzSW50KHZhbHVlLT50eXBlKCkpLCAoIkF0ICIsICp2YWx1ZSkpOwogICAg
ICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgY2FzZSBUcnVuYzoKKyAgICAgICAgICAg
ICAgICBWQUxJREFURSghdmFsdWUtPmtpbmQoKS5oYXNFeHRyYUJpdHMoKSwgKCJBdCAiLCAqdmFs
dWUpKTsKICAgICAgICAgICAgICAgICBWQUxJREFURSh2YWx1ZS0+bnVtQ2hpbGRyZW4oKSA9PSAx
LCAoIkF0ICIsICp2YWx1ZSkpOwogICAgICAgICAgICAgICAgIFZBTElEQVRFKHZhbHVlLT5jaGls
ZCgwKS0+dHlwZSgpID09IEludDY0LCAoIkF0ICIsICp2YWx1ZSkpOwogICAgICAgICAgICAgICAg
IFZBTElEQVRFKHZhbHVlLT50eXBlKCkgPT0gSW50MzIsICgiQXQgIiwgKnZhbHVlKSk7CkBAIC0y
NDMsMjYgKzI3MSwzMSBAQCBwdWJsaWM6CiAgICAgICAgICAgICBjYXNlIENlaWw6CiAgICAgICAg
ICAgICBjYXNlIEZsb29yOgogICAgICAgICAgICAgY2FzZSBTcXJ0OgorICAgICAgICAgICAgICAg
IFZBTElEQVRFKCF2YWx1ZS0+a2luZCgpLmhhc0V4dHJhQml0cygpLCAoIkF0ICIsICp2YWx1ZSkp
OwogICAgICAgICAgICAgICAgIFZBTElEQVRFKHZhbHVlLT5udW1DaGlsZHJlbigpID09IDEsICgi
QXQgIiwgKnZhbHVlKSk7CiAgICAgICAgICAgICAgICAgVkFMSURBVEUoaXNGbG9hdCh2YWx1ZS0+
Y2hpbGQoMCktPnR5cGUoKSksICgiQXQgIiwgKnZhbHVlKSk7CiAgICAgICAgICAgICAgICAgVkFM
SURBVEUoaXNGbG9hdCh2YWx1ZS0+dHlwZSgpKSwgKCJBdCAiLCAqdmFsdWUpKTsKICAgICAgICAg
ICAgICAgICBicmVhazsKICAgICAgICAgICAgIGNhc2UgSVRvRDoKKyAgICAgICAgICAgICAgICBW
QUxJREFURSghdmFsdWUtPmtpbmQoKS5oYXNFeHRyYUJpdHMoKSwgKCJBdCAiLCAqdmFsdWUpKTsK
ICAgICAgICAgICAgICAgICBWQUxJREFURSh2YWx1ZS0+bnVtQ2hpbGRyZW4oKSA9PSAxLCAoIkF0
ICIsICp2YWx1ZSkpOwogICAgICAgICAgICAgICAgIFZBTElEQVRFKGlzSW50KHZhbHVlLT5jaGls
ZCgwKS0+dHlwZSgpKSwgKCJBdCAiLCAqdmFsdWUpKTsKICAgICAgICAgICAgICAgICBWQUxJREFU
RSh2YWx1ZS0+dHlwZSgpID09IERvdWJsZSwgKCJBdCAiLCAqdmFsdWUpKTsKICAgICAgICAgICAg
ICAgICBicmVhazsKICAgICAgICAgICAgIGNhc2UgSVRvRjoKKyAgICAgICAgICAgICAgICBWQUxJ
REFURSghdmFsdWUtPmtpbmQoKS5oYXNFeHRyYUJpdHMoKSwgKCJBdCAiLCAqdmFsdWUpKTsKICAg
ICAgICAgICAgICAgICBWQUxJREFURSh2YWx1ZS0+bnVtQ2hpbGRyZW4oKSA9PSAxLCAoIkF0ICIs
ICp2YWx1ZSkpOwogICAgICAgICAgICAgICAgIFZBTElEQVRFKGlzSW50KHZhbHVlLT5jaGlsZCgw
KS0+dHlwZSgpKSwgKCJBdCAiLCAqdmFsdWUpKTsKICAgICAgICAgICAgICAgICBWQUxJREFURSh2
YWx1ZS0+dHlwZSgpID09IEZsb2F0LCAoIkF0ICIsICp2YWx1ZSkpOwogICAgICAgICAgICAgICAg
IGJyZWFrOwogICAgICAgICAgICAgY2FzZSBGbG9hdFRvRG91YmxlOgorICAgICAgICAgICAgICAg
IFZBTElEQVRFKCF2YWx1ZS0+a2luZCgpLmhhc0V4dHJhQml0cygpLCAoIkF0ICIsICp2YWx1ZSkp
OwogICAgICAgICAgICAgICAgIFZBTElEQVRFKHZhbHVlLT5udW1DaGlsZHJlbigpID09IDEsICgi
QXQgIiwgKnZhbHVlKSk7CiAgICAgICAgICAgICAgICAgVkFMSURBVEUodmFsdWUtPmNoaWxkKDAp
LT50eXBlKCkgPT0gRmxvYXQsICgiQXQgIiwgKnZhbHVlKSk7CiAgICAgICAgICAgICAgICAgVkFM
SURBVEUodmFsdWUtPnR5cGUoKSA9PSBEb3VibGUsICgiQXQgIiwgKnZhbHVlKSk7CiAgICAgICAg
ICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICBjYXNlIERvdWJsZVRvRmxvYXQ6CisgICAgICAg
ICAgICAgICAgVkFMSURBVEUoIXZhbHVlLT5raW5kKCkuaGFzRXh0cmFCaXRzKCksICgiQXQgIiwg
KnZhbHVlKSk7CiAgICAgICAgICAgICAgICAgVkFMSURBVEUodmFsdWUtPm51bUNoaWxkcmVuKCkg
PT0gMSwgKCJBdCAiLCAqdmFsdWUpKTsKICAgICAgICAgICAgICAgICBWQUxJREFURSh2YWx1ZS0+
Y2hpbGQoMCktPnR5cGUoKSA9PSBEb3VibGUsICgiQXQgIiwgKnZhbHVlKSk7CiAgICAgICAgICAg
ICAgICAgVkFMSURBVEUodmFsdWUtPnR5cGUoKSA9PSBGbG9hdCwgKCJBdCAiLCAqdmFsdWUpKTsK
QEAgLTI3Myw2ICszMDYsNyBAQCBwdWJsaWM6CiAgICAgICAgICAgICBjYXNlIEdyZWF0ZXJUaGFu
OgogICAgICAgICAgICAgY2FzZSBMZXNzRXF1YWw6CiAgICAgICAgICAgICBjYXNlIEdyZWF0ZXJF
cXVhbDoKKyAgICAgICAgICAgICAgICBWQUxJREFURSghdmFsdWUtPmtpbmQoKS5oYXNFeHRyYUJp
dHMoKSwgKCJBdCAiLCAqdmFsdWUpKTsKICAgICAgICAgICAgICAgICBWQUxJREFURSh2YWx1ZS0+
bnVtQ2hpbGRyZW4oKSA9PSAyLCAoIkF0ICIsICp2YWx1ZSkpOwogICAgICAgICAgICAgICAgIFZB
TElEQVRFKHZhbHVlLT5jaGlsZCgwKS0+dHlwZSgpID09IHZhbHVlLT5jaGlsZCgxKS0+dHlwZSgp
LCAoIkF0ICIsICp2YWx1ZSkpOwogICAgICAgICAgICAgICAgIFZBTElEQVRFKHZhbHVlLT50eXBl
KCkgPT0gSW50MzIsICgiQXQgIiwgKnZhbHVlKSk7CkBAIC0yODEsMTggKzMxNSwyMSBAQCBwdWJs
aWM6CiAgICAgICAgICAgICBjYXNlIEJlbG93OgogICAgICAgICAgICAgY2FzZSBBYm92ZUVxdWFs
OgogICAgICAgICAgICAgY2FzZSBCZWxvd0VxdWFsOgorICAgICAgICAgICAgICAgIFZBTElEQVRF
KCF2YWx1ZS0+a2luZCgpLmhhc0V4dHJhQml0cygpLCAoIkF0ICIsICp2YWx1ZSkpOwogICAgICAg
ICAgICAgICAgIFZBTElEQVRFKHZhbHVlLT5udW1DaGlsZHJlbigpID09IDIsICgiQXQgIiwgKnZh
bHVlKSk7CiAgICAgICAgICAgICAgICAgVkFMSURBVEUodmFsdWUtPmNoaWxkKDApLT50eXBlKCkg
PT0gdmFsdWUtPmNoaWxkKDEpLT50eXBlKCksICgiQXQgIiwgKnZhbHVlKSk7CiAgICAgICAgICAg
ICAgICAgVkFMSURBVEUoaXNJbnQodmFsdWUtPmNoaWxkKDApLT50eXBlKCkpLCAoIkF0ICIsICp2
YWx1ZSkpOwogICAgICAgICAgICAgICAgIFZBTElEQVRFKHZhbHVlLT50eXBlKCkgPT0gSW50MzIs
ICgiQXQgIiwgKnZhbHVlKSk7CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICBj
YXNlIEVxdWFsT3JVbm9yZGVyZWQ6CisgICAgICAgICAgICAgICAgVkFMSURBVEUoIXZhbHVlLT5r
aW5kKCkuaGFzRXh0cmFCaXRzKCksICgiQXQgIiwgKnZhbHVlKSk7CiAgICAgICAgICAgICAgICAg
VkFMSURBVEUodmFsdWUtPm51bUNoaWxkcmVuKCkgPT0gMiwgKCJBdCAiLCAqdmFsdWUpKTsKICAg
ICAgICAgICAgICAgICBWQUxJREFURSh2YWx1ZS0+Y2hpbGQoMCktPnR5cGUoKSA9PSB2YWx1ZS0+
Y2hpbGQoMSktPnR5cGUoKSwgKCJBdCAiLCAqdmFsdWUpKTsKICAgICAgICAgICAgICAgICBWQUxJ
REFURShpc0Zsb2F0KHZhbHVlLT5jaGlsZCgwKS0+dHlwZSgpKSwgKCJBdCAiLCAqdmFsdWUpKTsK
ICAgICAgICAgICAgICAgICBWQUxJREFURSh2YWx1ZS0+dHlwZSgpID09IEludDMyLCAoIkF0ICIs
ICp2YWx1ZSkpOwogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgY2FzZSBTZWxl
Y3Q6CisgICAgICAgICAgICAgICAgVkFMSURBVEUoIXZhbHVlLT5raW5kKCkuaGFzRXh0cmFCaXRz
KCksICgiQXQgIiwgKnZhbHVlKSk7CiAgICAgICAgICAgICAgICAgVkFMSURBVEUodmFsdWUtPm51
bUNoaWxkcmVuKCkgPT0gMywgKCJBdCAiLCAqdmFsdWUpKTsKICAgICAgICAgICAgICAgICBWQUxJ
REFURShpc0ludCh2YWx1ZS0+Y2hpbGQoMCktPnR5cGUoKSksICgiQXQgIiwgKnZhbHVlKSk7CiAg
ICAgICAgICAgICAgICAgVkFMSURBVEUodmFsdWUtPnR5cGUoKSA9PSB2YWx1ZS0+Y2hpbGQoMSkt
PnR5cGUoKSwgKCJBdCAiLCAqdmFsdWUpKTsKQEAgLTMwMiwxMiArMzM5LDE0IEBAIHB1YmxpYzoK
ICAgICAgICAgICAgIGNhc2UgTG9hZDhTOgogICAgICAgICAgICAgY2FzZSBMb2FkMTZaOgogICAg
ICAgICAgICAgY2FzZSBMb2FkMTZTOgorICAgICAgICAgICAgICAgIFZBTElEQVRFKCF2YWx1ZS0+
a2luZCgpLmhhc0V4dHJhQml0cygpLCAoIkF0ICIsICp2YWx1ZSkpOwogICAgICAgICAgICAgICAg
IFZBTElEQVRFKHZhbHVlLT5udW1DaGlsZHJlbigpID09IDEsICgiQXQgIiwgKnZhbHVlKSk7CiAg
ICAgICAgICAgICAgICAgVkFMSURBVEUodmFsdWUtPmNoaWxkKDApLT50eXBlKCkgPT0gcG9pbnRl
clR5cGUoKSwgKCJBdCAiLCAqdmFsdWUpKTsKICAgICAgICAgICAgICAgICBWQUxJREFURSh2YWx1
ZS0+dHlwZSgpID09IEludDMyLCAoIkF0ICIsICp2YWx1ZSkpOwogICAgICAgICAgICAgICAgIHZh
bGlkYXRlU3RhY2tBY2Nlc3ModmFsdWUpOwogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAg
ICAgICAgY2FzZSBMb2FkOgorICAgICAgICAgICAgICAgIFZBTElEQVRFKCF2YWx1ZS0+a2luZCgp
Lmhhc0V4dHJhQml0cygpLCAoIkF0ICIsICp2YWx1ZSkpOwogICAgICAgICAgICAgICAgIFZBTElE
QVRFKHZhbHVlLT5udW1DaGlsZHJlbigpID09IDEsICgiQXQgIiwgKnZhbHVlKSk7CiAgICAgICAg
ICAgICAgICAgVkFMSURBVEUodmFsdWUtPmNoaWxkKDApLT50eXBlKCkgPT0gcG9pbnRlclR5cGUo
KSwgKCJBdCAiLCAqdmFsdWUpKTsKICAgICAgICAgICAgICAgICBWQUxJREFURSh2YWx1ZS0+dHlw
ZSgpICE9IFZvaWQsICgiQXQgIiwgKnZhbHVlKSk7CkBAIC0zMTUsNiArMzU0LDcgQEAgcHVibGlj
OgogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgY2FzZSBTdG9yZTg6CiAgICAg
ICAgICAgICBjYXNlIFN0b3JlMTY6CisgICAgICAgICAgICAgICAgVkFMSURBVEUoIXZhbHVlLT5r
aW5kKCkuaGFzRXh0cmFCaXRzKCksICgiQXQgIiwgKnZhbHVlKSk7CiAgICAgICAgICAgICAgICAg
VkFMSURBVEUodmFsdWUtPm51bUNoaWxkcmVuKCkgPT0gMiwgKCJBdCAiLCAqdmFsdWUpKTsKICAg
ICAgICAgICAgICAgICBWQUxJREFURSh2YWx1ZS0+Y2hpbGQoMCktPnR5cGUoKSA9PSBJbnQzMiwg
KCJBdCAiLCAqdmFsdWUpKTsKICAgICAgICAgICAgICAgICBWQUxJREFURSh2YWx1ZS0+Y2hpbGQo
MSktPnR5cGUoKSA9PSBwb2ludGVyVHlwZSgpLCAoIkF0ICIsICp2YWx1ZSkpOwpAQCAtMzIyLDE2
ICszNjIsMTkgQEAgcHVibGljOgogICAgICAgICAgICAgICAgIHZhbGlkYXRlU3RhY2tBY2Nlc3Mo
dmFsdWUpOwogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgY2FzZSBTdG9yZToK
KyAgICAgICAgICAgICAgICBWQUxJREFURSghdmFsdWUtPmtpbmQoKS5oYXNFeHRyYUJpdHMoKSwg
KCJBdCAiLCAqdmFsdWUpKTsKICAgICAgICAgICAgICAgICBWQUxJREFURSh2YWx1ZS0+bnVtQ2hp
bGRyZW4oKSA9PSAyLCAoIkF0ICIsICp2YWx1ZSkpOwogICAgICAgICAgICAgICAgIFZBTElEQVRF
KHZhbHVlLT5jaGlsZCgxKS0+dHlwZSgpID09IHBvaW50ZXJUeXBlKCksICgiQXQgIiwgKnZhbHVl
KSk7CiAgICAgICAgICAgICAgICAgVkFMSURBVEUodmFsdWUtPnR5cGUoKSA9PSBWb2lkLCAoIkF0
ICIsICp2YWx1ZSkpOwogICAgICAgICAgICAgICAgIHZhbGlkYXRlU3RhY2tBY2Nlc3ModmFsdWUp
OwogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgY2FzZSBDQ2FsbDoKKyAgICAg
ICAgICAgICAgICBWQUxJREFURSghdmFsdWUtPmtpbmQoKS5oYXNFeHRyYUJpdHMoKSwgKCJBdCAi
LCAqdmFsdWUpKTsKICAgICAgICAgICAgICAgICBWQUxJREFURSh2YWx1ZS0+bnVtQ2hpbGRyZW4o
KSA+PSAxLCAoIkF0ICIsICp2YWx1ZSkpOwogICAgICAgICAgICAgICAgIFZBTElEQVRFKHZhbHVl
LT5jaGlsZCgwKS0+dHlwZSgpID09IHBvaW50ZXJUeXBlKCksICgiQXQgIiwgKnZhbHVlKSk7CiAg
ICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICBjYXNlIFBhdGNocG9pbnQ6CisgICAg
ICAgICAgICAgICAgVkFMSURBVEUoIXZhbHVlLT5raW5kKCkuaGFzRXh0cmFCaXRzKCksICgiQXQg
IiwgKnZhbHVlKSk7CiAgICAgICAgICAgICAgICAgaWYgKHZhbHVlLT50eXBlKCkgPT0gVm9pZCkK
ICAgICAgICAgICAgICAgICAgICAgVkFMSURBVEUodmFsdWUtPmFzPFBhdGNocG9pbnRWYWx1ZT4o
KS0+cmVzdWx0Q29uc3RyYWludCA9PSBWYWx1ZVJlcDo6V2FybUFueSwgKCJBdCAiLCAqdmFsdWUp
KTsKICAgICAgICAgICAgICAgICBlbHNlIHsKQEAgLTM1NCw2ICszOTcsNyBAQCBwdWJsaWM6CiAg
ICAgICAgICAgICBjYXNlIENoZWNrQWRkOgogICAgICAgICAgICAgY2FzZSBDaGVja1N1YjoKICAg
ICAgICAgICAgIGNhc2UgQ2hlY2tNdWw6CisgICAgICAgICAgICAgICAgVkFMSURBVEUoIXZhbHVl
LT5raW5kKCkuaGFzRXh0cmFCaXRzKCksICgiQXQgIiwgKnZhbHVlKSk7CiAgICAgICAgICAgICAg
ICAgVkFMSURBVEUodmFsdWUtPm51bUNoaWxkcmVuKCkgPj0gMiwgKCJBdCAiLCAqdmFsdWUpKTsK
ICAgICAgICAgICAgICAgICBWQUxJREFURShpc0ludCh2YWx1ZS0+Y2hpbGQoMCktPnR5cGUoKSks
ICgiQXQgIiwgKnZhbHVlKSk7CiAgICAgICAgICAgICAgICAgVkFMSURBVEUoaXNJbnQodmFsdWUt
PmNoaWxkKDEpLT50eXBlKCkpLCAoIkF0ICIsICp2YWx1ZSkpOwpAQCAtMzYyLDEyICs0MDYsMTQg
QEAgcHVibGljOgogICAgICAgICAgICAgICAgIHZhbGlkYXRlU3RhY2ttYXAodmFsdWUpOwogICAg
ICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgY2FzZSBDaGVjazoKKyAgICAgICAgICAg
ICAgICBWQUxJREFURSghdmFsdWUtPmtpbmQoKS5oYXNFeHRyYUJpdHMoKSwgKCJBdCAiLCAqdmFs
dWUpKTsKICAgICAgICAgICAgICAgICBWQUxJREFURSh2YWx1ZS0+bnVtQ2hpbGRyZW4oKSA+PSAx
LCAoIkF0ICIsICp2YWx1ZSkpOwogICAgICAgICAgICAgICAgIFZBTElEQVRFKGlzSW50KHZhbHVl
LT5jaGlsZCgwKS0+dHlwZSgpKSwgKCJBdCAiLCAqdmFsdWUpKTsKICAgICAgICAgICAgICAgICBW
QUxJREFURSh2YWx1ZS0+YXM8U3RhY2ttYXBWYWx1ZT4oKS0+Y29uc3RyYWluZWRDaGlsZCgwKS5y
ZXAoKSA9PSBWYWx1ZVJlcDo6V2FybUFueSwgKCJBdCAiLCAqdmFsdWUpKTsKICAgICAgICAgICAg
ICAgICB2YWxpZGF0ZVN0YWNrbWFwKHZhbHVlKTsKICAgICAgICAgICAgICAgICBicmVhazsKICAg
ICAgICAgICAgIGNhc2UgVXBzaWxvbjoKKyAgICAgICAgICAgICAgICBWQUxJREFURSghdmFsdWUt
PmtpbmQoKS5oYXNFeHRyYUJpdHMoKSwgKCJBdCAiLCAqdmFsdWUpKTsKICAgICAgICAgICAgICAg
ICBWQUxJREFURSh2YWx1ZS0+bnVtQ2hpbGRyZW4oKSA9PSAxLCAoIkF0ICIsICp2YWx1ZSkpOwog
ICAgICAgICAgICAgICAgIFZBTElEQVRFKHZhbHVlLT5hczxVcHNpbG9uVmFsdWU+KCktPnBoaSgp
LCAoIkF0ICIsICp2YWx1ZSkpOwogICAgICAgICAgICAgICAgIFZBTElEQVRFKHZhbHVlLT5hczxV
cHNpbG9uVmFsdWU+KCktPnBoaSgpLT5vcGNvZGUoKSA9PSBQaGksICgiQXQgIiwgKnZhbHVlKSk7
CkBAIC0zNzUsMzEgKzQyMSwzNyBAQCBwdWJsaWM6CiAgICAgICAgICAgICAgICAgVkFMSURBVEUo
dmFsdWVJblByb2MuY29udGFpbnModmFsdWUtPmFzPFVwc2lsb25WYWx1ZT4oKS0+cGhpKCkpLCAo
IkF0ICIsICp2YWx1ZSkpOwogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgY2Fz
ZSBQaGk6CisgICAgICAgICAgICAgICAgVkFMSURBVEUoIXZhbHVlLT5raW5kKCkuaGFzRXh0cmFC
aXRzKCksICgiQXQgIiwgKnZhbHVlKSk7CiAgICAgICAgICAgICAgICAgVkFMSURBVEUoIXZhbHVl
LT5udW1DaGlsZHJlbigpLCAoIkF0ICIsICp2YWx1ZSkpOwogICAgICAgICAgICAgICAgIFZBTElE
QVRFKHZhbHVlLT50eXBlKCkgIT0gVm9pZCwgKCJBdCAiLCAqdmFsdWUpKTsKICAgICAgICAgICAg
ICAgICBicmVhazsKICAgICAgICAgICAgIGNhc2UgSnVtcDoKKyAgICAgICAgICAgICAgICBWQUxJ
REFURSghdmFsdWUtPmtpbmQoKS5oYXNFeHRyYUJpdHMoKSwgKCJBdCAiLCAqdmFsdWUpKTsKICAg
ICAgICAgICAgICAgICBWQUxJREFURSghdmFsdWUtPm51bUNoaWxkcmVuKCksICgiQXQgIiwgKnZh
bHVlKSk7CiAgICAgICAgICAgICAgICAgVkFMSURBVEUodmFsdWUtPnR5cGUoKSA9PSBWb2lkLCAo
IkF0ICIsICp2YWx1ZSkpOwogICAgICAgICAgICAgICAgIFZBTElEQVRFKHZhbHVlT3duZXIuZ2V0
KHZhbHVlKS0+bnVtU3VjY2Vzc29ycygpID09IDEsICgiQXQgIiwgKnZhbHVlKSk7CiAgICAgICAg
ICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICBjYXNlIE9vcHM6CisgICAgICAgICAgICAgICAg
VkFMSURBVEUoIXZhbHVlLT5raW5kKCkuaGFzRXh0cmFCaXRzKCksICgiQXQgIiwgKnZhbHVlKSk7
CiAgICAgICAgICAgICAgICAgVkFMSURBVEUoIXZhbHVlLT5udW1DaGlsZHJlbigpLCAoIkF0ICIs
ICp2YWx1ZSkpOwogICAgICAgICAgICAgICAgIFZBTElEQVRFKHZhbHVlLT50eXBlKCkgPT0gVm9p
ZCwgKCJBdCAiLCAqdmFsdWUpKTsKICAgICAgICAgICAgICAgICBWQUxJREFURSghdmFsdWVPd25l
ci5nZXQodmFsdWUpLT5udW1TdWNjZXNzb3JzKCksICgiQXQgIiwgKnZhbHVlKSk7CiAgICAgICAg
ICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICBjYXNlIFJldHVybjoKKyAgICAgICAgICAgICAg
ICBWQUxJREFURSghdmFsdWUtPmtpbmQoKS5oYXNFeHRyYUJpdHMoKSwgKCJBdCAiLCAqdmFsdWUp
KTsKICAgICAgICAgICAgICAgICBWQUxJREFURSh2YWx1ZS0+bnVtQ2hpbGRyZW4oKSA8PSAxLCAo
IkF0ICIsICp2YWx1ZSkpOwogICAgICAgICAgICAgICAgIFZBTElEQVRFKHZhbHVlLT50eXBlKCkg
PT0gVm9pZCwgKCJBdCAiLCAqdmFsdWUpKTsKICAgICAgICAgICAgICAgICBWQUxJREFURSghdmFs
dWVPd25lci5nZXQodmFsdWUpLT5udW1TdWNjZXNzb3JzKCksICgiQXQgIiwgKnZhbHVlKSk7CiAg
ICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICBjYXNlIEJyYW5jaDoKKyAgICAgICAg
ICAgICAgICBWQUxJREFURSghdmFsdWUtPmtpbmQoKS5oYXNFeHRyYUJpdHMoKSwgKCJBdCAiLCAq
dmFsdWUpKTsKICAgICAgICAgICAgICAgICBWQUxJREFURSh2YWx1ZS0+bnVtQ2hpbGRyZW4oKSA9
PSAxLCAoIkF0ICIsICp2YWx1ZSkpOwogICAgICAgICAgICAgICAgIFZBTElEQVRFKGlzSW50KHZh
bHVlLT5jaGlsZCgwKS0+dHlwZSgpKSwgKCJBdCAiLCAqdmFsdWUpKTsKICAgICAgICAgICAgICAg
ICBWQUxJREFURSh2YWx1ZS0+dHlwZSgpID09IFZvaWQsICgiQXQgIiwgKnZhbHVlKSk7CiAgICAg
ICAgICAgICAgICAgVkFMSURBVEUodmFsdWVPd25lci5nZXQodmFsdWUpLT5udW1TdWNjZXNzb3Jz
KCkgPT0gMiwgKCJBdCAiLCAqdmFsdWUpKTsKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAg
ICAgICAgIGNhc2UgU3dpdGNoOiB7CisgICAgICAgICAgICAgICAgVkFMSURBVEUoIXZhbHVlLT5r
aW5kKCkuaGFzRXh0cmFCaXRzKCksICgiQXQgIiwgKnZhbHVlKSk7CiAgICAgICAgICAgICAgICAg
VkFMSURBVEUodmFsdWUtPm51bUNoaWxkcmVuKCkgPT0gMSwgKCJBdCAiLCAqdmFsdWUpKTsKICAg
ICAgICAgICAgICAgICBWQUxJREFURShpc0ludCh2YWx1ZS0+Y2hpbGQoMCktPnR5cGUoKSksICgi
QXQgIiwgKnZhbHVlKSk7CiAgICAgICAgICAgICAgICAgVkFMSURBVEUodmFsdWUtPnR5cGUoKSA9
PSBWb2lkLCAoIkF0ICIsICp2YWx1ZSkpOwpAQCAtNDE3LDYgKzQ2OSw3IEBAIHB1YmxpYzoKICAg
ICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIGNhc2UgRW50
cnlTd2l0Y2g6CisgICAgICAgICAgICAgICAgVkFMSURBVEUoIXZhbHVlLT5raW5kKCkuaGFzRXh0
cmFCaXRzKCksICgiQXQgIiwgKnZhbHVlKSk7CiAgICAgICAgICAgICAgICAgVkFMSURBVEUoIXZh
bHVlLT5udW1DaGlsZHJlbigpLCAoIkF0ICIsICp2YWx1ZSkpOwogICAgICAgICAgICAgICAgIFZB
TElEQVRFKHZhbHVlLT50eXBlKCkgPT0gVm9pZCwgKCJBdCAiLCAqdmFsdWUpKTsKICAgICAgICAg
ICAgICAgICBWQUxJREFURSh2YWx1ZU93bmVyLmdldCh2YWx1ZSktPm51bVN1Y2Nlc3NvcnMoKSA9
PSBtX3Byb2NlZHVyZS5udW1FbnRyeXBvaW50cygpLCAoIkF0ICIsICp2YWx1ZSkpOwpJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzVmFsdWUuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9iMy9CM1ZhbHVlLmNwcAkocmV2aXNpb24gMjA2NTI0KQorKysgU291
cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzVmFsdWUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNzUs
NyArMTc1LDcgQEAgdm9pZCBWYWx1ZTo6ZHVtcChQcmludFN0cmVhbSYgb3V0KSBjb25zdAogewog
ICAgIGJvb2wgaXNDb25zdGFudCA9IGZhbHNlOwogCi0gICAgc3dpdGNoIChtX29wY29kZSkgewor
ICAgIHN3aXRjaCAob3Bjb2RlKCkpIHsKICAgICBjYXNlIENvbnN0MzI6CiAgICAgICAgIG91dC5w
cmludCgiJCIsIGFzSW50MzIoKSwgIigiKTsKICAgICAgICAgaXNDb25zdGFudCA9IHRydWU7CkBA
IC0yMTUsNyArMjE1LDcgQEAgdm9pZCBWYWx1ZTo6ZHVtcENoaWxkcmVuKENvbW1hUHJpbnRlciYg
YwogCiB2b2lkIFZhbHVlOjpkZWVwRHVtcChjb25zdCBQcm9jZWR1cmUqIHByb2MsIFByaW50U3Ry
ZWFtJiBvdXQpIGNvbnN0CiB7Ci0gICAgb3V0LnByaW50KG1fdHlwZSwgIiAiLCBkdW1wUHJlZml4
LCBtX2luZGV4LCAiID0gIiwgbV9vcGNvZGUpOworICAgIG91dC5wcmludChtX3R5cGUsICIgIiwg
ZHVtcFByZWZpeCwgbV9pbmRleCwgIiA9ICIsIG1fa2luZCk7CiAKICAgICBvdXQucHJpbnQoIigi
KTsKICAgICBDb21tYVByaW50ZXIgY29tbWE7CkBAIC00MzcsOCArNDM3LDEwIEBAIFZhbHVlKiBW
YWx1ZTo6aW52ZXJ0ZWRDb21wYXJlKFByb2NlZHVyZSYKIHsKICAgICBpZiAoIW51bUNoaWxkcmVu
KCkpCiAgICAgICAgIHJldHVybiBudWxscHRyOwotICAgIGlmIChPcHRpb25hbDxPcGNvZGU+IGlu
dmVydGVkT3Bjb2RlID0gQjM6OmludmVydGVkQ29tcGFyZShvcGNvZGUoKSwgY2hpbGQoMCktPnR5
cGUoKSkpCisgICAgaWYgKE9wdGlvbmFsPE9wY29kZT4gaW52ZXJ0ZWRPcGNvZGUgPSBCMzo6aW52
ZXJ0ZWRDb21wYXJlKG9wY29kZSgpLCBjaGlsZCgwKS0+dHlwZSgpKSkgeworICAgICAgICBBU1NF
UlQoIWtpbmQoKS5oYXNFeHRyYUJpdHMoKSk7CiAgICAgICAgIHJldHVybiBwcm9jLmFkZDxWYWx1
ZT4oKmludmVydGVkT3Bjb2RlLCB0eXBlKCksIG9yaWdpbigpLCBjaGlsZHJlbigpKTsKKyAgICB9
CiAgICAgcmV0dXJuIG51bGxwdHI7CiB9CiAKQEAgLTUzMiw4ICs1MzQsNiBAQCBFZmZlY3RzIFZh
bHVlOjplZmZlY3RzKCkgY29uc3QKICAgICBjYXNlIFN1YjoKICAgICBjYXNlIE11bDoKICAgICBj
YXNlIE5lZzoKLSAgICBjYXNlIENoaWxsRGl2OgotICAgIGNhc2UgQ2hpbGxNb2Q6CiAgICAgY2Fz
ZSBCaXRBbmQ6CiAgICAgY2FzZSBCaXRPcjoKICAgICBjYXNlIEJpdFhvcjoKQEAgLTY0Miw3ICs2
NDIsNyBAQCBWYWx1ZUtleSBWYWx1ZTo6a2V5KCkgY29uc3QKIHsKICAgICBzd2l0Y2ggKG9wY29k
ZSgpKSB7CiAgICAgY2FzZSBGcmFtZVBvaW50ZXI6Ci0gICAgICAgIHJldHVybiBWYWx1ZUtleShv
cGNvZGUoKSwgdHlwZSgpKTsKKyAgICAgICAgcmV0dXJuIFZhbHVlS2V5KGtpbmQoKSwgdHlwZSgp
KTsKICAgICBjYXNlIElkZW50aXR5OgogICAgIGNhc2UgQWJzOgogICAgIGNhc2UgQ2VpbDoKQEAg
LTY2MSwxNCArNjYxLDEyIEBAIFZhbHVlS2V5IFZhbHVlOjprZXkoKSBjb25zdAogICAgIGNhc2Ug
Q2hlY2s6CiAgICAgY2FzZSBCaXR3aXNlQ2FzdDoKICAgICBjYXNlIE5lZzoKLSAgICAgICAgcmV0
dXJuIFZhbHVlS2V5KG9wY29kZSgpLCB0eXBlKCksIGNoaWxkKDApKTsKKyAgICAgICAgcmV0dXJu
IFZhbHVlS2V5KGtpbmQoKSwgdHlwZSgpLCBjaGlsZCgwKSk7CiAgICAgY2FzZSBBZGQ6CiAgICAg
Y2FzZSBTdWI6CiAgICAgY2FzZSBNdWw6CiAgICAgY2FzZSBEaXY6CiAgICAgY2FzZSBNb2Q6Ci0g
ICAgY2FzZSBDaGlsbERpdjoKLSAgICBjYXNlIENoaWxsTW9kOgogICAgIGNhc2UgQml0QW5kOgog
ICAgIGNhc2UgQml0T3I6CiAgICAgY2FzZSBCaXRYb3I6CkBAIC02ODcsOSArNjg1LDkgQEAgVmFs
dWVLZXkgVmFsdWU6OmtleSgpIGNvbnN0CiAgICAgY2FzZSBDaGVja0FkZDoKICAgICBjYXNlIENo
ZWNrU3ViOgogICAgIGNhc2UgQ2hlY2tNdWw6Ci0gICAgICAgIHJldHVybiBWYWx1ZUtleShvcGNv
ZGUoKSwgdHlwZSgpLCBjaGlsZCgwKSwgY2hpbGQoMSkpOworICAgICAgICByZXR1cm4gVmFsdWVL
ZXkoa2luZCgpLCB0eXBlKCksIGNoaWxkKDApLCBjaGlsZCgxKSk7CiAgICAgY2FzZSBTZWxlY3Q6
Ci0gICAgICAgIHJldHVybiBWYWx1ZUtleShvcGNvZGUoKSwgdHlwZSgpLCBjaGlsZCgwKSwgY2hp
bGQoMSksIGNoaWxkKDIpKTsKKyAgICAgICAgcmV0dXJuIFZhbHVlS2V5KGtpbmQoKSwgdHlwZSgp
LCBjaGlsZCgwKSwgY2hpbGQoMSksIGNoaWxkKDIpKTsKICAgICBjYXNlIENvbnN0MzI6CiAgICAg
ICAgIHJldHVybiBWYWx1ZUtleShDb25zdDMyLCB0eXBlKCksIHN0YXRpY19jYXN0PGludDY0X3Q+
KGFzSW50MzIoKSkpOwogICAgIGNhc2UgQ29uc3Q2NDoKQEAgLTczOCw5ICs3MzYsOSBAQCB2b2lk
IFZhbHVlOjpkdW1wTWV0YShDb21tYVByaW50ZXImLCBQcmluCiB7CiB9CiAKLVR5cGUgVmFsdWU6
OnR5cGVGb3IoT3Bjb2RlIG9wY29kZSwgVmFsdWUqIGZpcnN0Q2hpbGQsIFZhbHVlKiBzZWNvbmRD
aGlsZCkKK1R5cGUgVmFsdWU6OnR5cGVGb3IoS2luZCBraW5kLCBWYWx1ZSogZmlyc3RDaGlsZCwg
VmFsdWUqIHNlY29uZENoaWxkKQogewotICAgIHN3aXRjaCAob3Bjb2RlKSB7CisgICAgc3dpdGNo
IChraW5kLm9wY29kZSgpKSB7CiAgICAgY2FzZSBJZGVudGl0eToKICAgICBjYXNlIEFkZDoKICAg
ICBjYXNlIFN1YjoKQEAgLTc0OCw4ICs3NDYsNiBAQCBUeXBlIFZhbHVlOjp0eXBlRm9yKE9wY29k
ZSBvcGNvZGUsIFZhbHVlCiAgICAgY2FzZSBEaXY6CiAgICAgY2FzZSBNb2Q6CiAgICAgY2FzZSBO
ZWc6Ci0gICAgY2FzZSBDaGlsbERpdjoKLSAgICBjYXNlIENoaWxsTW9kOgogICAgIGNhc2UgQml0
QW5kOgogICAgIGNhc2UgQml0T3I6CiAgICAgY2FzZSBCaXRYb3I6CkBAIC04MjAsOSArODE2LDkg
QEAgVHlwZSBWYWx1ZTo6dHlwZUZvcihPcGNvZGUgb3Bjb2RlLCBWYWx1ZQogICAgIH0KIH0KIAot
dm9pZCBWYWx1ZTo6YmFkT3Bjb2RlKE9wY29kZSBvcGNvZGUsIHVuc2lnbmVkIG51bUFyZ3MpCit2
b2lkIFZhbHVlOjpiYWRLaW5kKEtpbmQga2luZCwgdW5zaWduZWQgbnVtQXJncykKIHsKLSAgICBk
YXRhTG9nKCJCYWQgb3Bjb2RlICIsIG9wY29kZSwgIiB3aXRoICIsIG51bUFyZ3MsICIgYXJncy5c
biIpOworICAgIGRhdGFMb2coIkJhZCBraW5kICIsIGtpbmQsICIgd2l0aCAiLCBudW1BcmdzLCAi
IGFyZ3MuXG4iKTsKICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOwogfQogCkluZGV4
OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNWYWx1ZS5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9iMy9CM1ZhbHVlLmgJKHJldmlzaW9uIDIwNjUyNCkKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9iMy9CM1ZhbHVlLmgJKHdvcmtpbmcgY29weSkKQEAgLTMxLDcgKzMx
LDcgQEAKICNpbmNsdWRlICJBaXJBcmcuaCIKICNpbmNsdWRlICJCM0VmZmVjdHMuaCIKICNpbmNs
dWRlICJCM0ZyZXF1ZW50ZWRCbG9jay5oIgotI2luY2x1ZGUgIkIzT3Bjb2RlLmgiCisjaW5jbHVk
ZSAiQjNLaW5kLmgiCiAjaW5jbHVkZSAiQjNPcmlnaW4uaCIKICNpbmNsdWRlICJCM1NwYXJzZUNv
bGxlY3Rpb24uaCIKICNpbmNsdWRlICJCM1R5cGUuaCIKQEAgLTU1LDE1ICs1NSwyMSBAQCBwdWJs
aWM6CiAKICAgICBzdGF0aWMgY29uc3QgY2hhciogY29uc3QgZHVtcFByZWZpeDsKIAotICAgIHN0
YXRpYyBib29sIGFjY2VwdHMoT3Bjb2RlKSB7IHJldHVybiB0cnVlOyB9CisgICAgc3RhdGljIGJv
b2wgYWNjZXB0cyhLaW5kKSB7IHJldHVybiB0cnVlOyB9CiAKICAgICB2aXJ0dWFsIH5WYWx1ZSgp
OwogCiAgICAgdW5zaWduZWQgaW5kZXgoKSBjb25zdCB7IHJldHVybiBtX2luZGV4OyB9CiAgICAg
Ci0gICAgLy8gTm90ZSB0aGF0IHRoZSBvcGNvZGUgaXMgaW1tdXRhYmxlLCBleGNlcHQgZm9yIHJl
cGxhY2luZyB2YWx1ZXMgd2l0aDoKKyAgICAvLyBOb3RlIHRoYXQgdGhlIGtpbmQgaXMgaW1tdXRh
YmxlLCBleGNlcHQgZm9yIHJlcGxhY2luZyB2YWx1ZXMgd2l0aDoKICAgICAvLyBJZGVudGl0eSwg
Tm9wLCBPb3BzLCBKdW1wLCBhbmQgUGhpLiBTZWUgYmVsb3cgZm9yIHJlcGxhY2VXaXRoWFhYKCkg
bWV0aG9kcy4KLSAgICBPcGNvZGUgb3Bjb2RlKCkgY29uc3QgeyByZXR1cm4gbV9vcGNvZGU7IH0K
KyAgICBLaW5kIGtpbmQoKSBjb25zdCB7IHJldHVybiBtX2tpbmQ7IH0KKyAgICAKKyAgICBPcGNv
ZGUgb3Bjb2RlKCkgY29uc3QgeyByZXR1cm4ga2luZCgpLm9wY29kZSgpOyB9CisgICAgCisgICAg
Ly8gSXQncyBnb29kIHByYWN0aWNlIHRvIG1pcnJvciBLaW5kIG1ldGhvZHMgaGVyZSwgc28geW91
IGNhbiBzYXkgdmFsdWUtPmlzQmxhaCgpCisgICAgLy8gaW5zdGVhZCBvZiB2YWx1ZS0+a2luZCgp
LmlzQmxhaCgpLgorICAgIGJvb2wgaXNDaGlsbCgpIGNvbnN0IHsgcmV0dXJuIGtpbmQoKS5pc0No
aWxsKCk7IH0KIAogICAgIE9yaWdpbiBvcmlnaW4oKSBjb25zdCB7IHJldHVybiBtX29yaWdpbjsg
fQogICAgIHZvaWQgc2V0T3JpZ2luKE9yaWdpbiBvcmlnaW4pIHsgbV9vcmlnaW4gPSBvcmlnaW47
IH0KQEAgLTEzMiw4ICsxMzgsOCBAQCBwdWJsaWM6CiAgICAgLy8gICAgIHRoaW5ncwogICAgIC8v
IH0KICAgICAvLwotICAgIC8vIFRoaXMgd2lsbCByZXR1cm4gbnVsbCBpZiB0aGlzIG9wY29kZSgp
ICE9IEFyZ3VtZW50UmVnLiBUaGlzIHdvcmtzIGJlY2F1c2UgdGhpcyByZXR1cm5zIG51bGxwdHIK
LSAgICAvLyBpZiBUOjphY2NlcHRzKG9wY29kZSgpKSByZXR1cm5zIGZhbHNlLgorICAgIC8vIFRo
aXMgd2lsbCByZXR1cm4gbnVsbCBpZiB0aGlzIGtpbmQoKSAhPSBBcmd1bWVudFJlZy4gVGhpcyB3
b3JrcyBiZWNhdXNlIHRoaXMgcmV0dXJucyBudWxscHRyCisgICAgLy8gaWYgVDo6YWNjZXB0cyhr
aW5kKCkpIHJldHVybnMgZmFsc2UuCiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4KICAgICBUKiBh
cygpOwogICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+CkBAIC0xNDIsNyArMTQ4LDcgQEAgcHVibGlj
OgogICAgIC8vIFdoYXQgZm9sbG93cyBhcmUgYSBidW5jaCBvZiBoZWxwZXJzIGZvciBpbnNwZWN0
aW5nIGFuZCBtb2RpZnlpbmcgdmFsdWVzLiBOb3RlIHRoYXQgd2UgaGF2ZSBhCiAgICAgLy8gYnVu
Y2ggb2YgZGlmZmVyZW50IGlkaW9tcyBmb3IgaW1wbGVtZW50aW5nIHN1Y2ggaGVscGVycy4gWW91
IGNhbiB1c2UgdmlydHVhbCBtZXRob2RzLCBhbmQKICAgICAvLyBvdmVycmlkZSBmcm9tIHRoZSB2
YXJpb3VzIFZhbHVlIHN1YmNsYXNzZXMuIFlvdSBjYW4gcHV0IHRoZSBtZXRob2QgaW5zaWRlIFZh
bHVlIGFuZCBtYWtlIGl0Ci0gICAgLy8gbm9uLXZpcnR1YWwsIGFuZCB0aGUgaW1wbGVtZW50YXRp
b24gY2FuIHN3aXRjaCBvbiBvcGNvZGUuIFRoZSBtZXRob2QgY291bGQgYmUgaW5saW5lIG9yIG5v
dC4KKyAgICAvLyBub24tdmlydHVhbCwgYW5kIHRoZSBpbXBsZW1lbnRhdGlvbiBjYW4gc3dpdGNo
IG9uIGtpbmQuIFRoZSBtZXRob2QgY291bGQgYmUgaW5saW5lIG9yIG5vdC4KICAgICAvLyBJZiBh
IG1ldGhvZCBpcyBzcGVjaWZpYyB0byBzb21lIFZhbHVlIHN1YmNsYXNzLCB5b3UgY291bGQgcHV0
IGl0IGluIHRoZSBzdWJjbGFzcywgb3IgeW91IGNvdWxkCiAgICAgLy8gcHV0IGl0IG9uIFZhbHVl
IGFueXdheS4gSXQncyBmaW5lIHRvIHBpY2sgd2hhdGV2ZXIgZmVlbHMgcmlnaHQsIGFuZCB3ZSBz
aG91bGRuJ3QgcmVzdHJpY3QKICAgICAvLyBvdXJzZWx2ZXMgdG8gYW55IHBhcnRpY3VsYXIgaWRp
b20uCkBAIC0xNTksOCArMTY1LDggQEAgcHVibGljOgogICAgIHZpcnR1YWwgVmFsdWUqIGNoZWNr
U3ViQ29uc3RhbnQoUHJvY2VkdXJlJiwgY29uc3QgVmFsdWUqIG90aGVyKSBjb25zdDsKICAgICB2
aXJ0dWFsIFZhbHVlKiBjaGVja011bENvbnN0YW50KFByb2NlZHVyZSYsIGNvbnN0IFZhbHVlKiBv
dGhlcikgY29uc3Q7CiAgICAgdmlydHVhbCBWYWx1ZSogY2hlY2tOZWdDb25zdGFudChQcm9jZWR1
cmUmKSBjb25zdDsKLSAgICB2aXJ0dWFsIFZhbHVlKiBkaXZDb25zdGFudChQcm9jZWR1cmUmLCBj
b25zdCBWYWx1ZSogb3RoZXIpIGNvbnN0OyAvLyBUaGlzIGNob29zZXMgQ2hpbGxEaXYgc2VtYW50
aWNzIGZvciBpbnRlZ2Vycy4KLSAgICB2aXJ0dWFsIFZhbHVlKiBtb2RDb25zdGFudChQcm9jZWR1
cmUmLCBjb25zdCBWYWx1ZSogb3RoZXIpIGNvbnN0OyAvLyBUaGlzIGNob29zZXMgQ2hpbGxNb2Qg
c2VtYW50aWNzLgorICAgIHZpcnR1YWwgVmFsdWUqIGRpdkNvbnN0YW50KFByb2NlZHVyZSYsIGNv
bnN0IFZhbHVlKiBvdGhlcikgY29uc3Q7IC8vIFRoaXMgY2hvb3NlcyBEaXY8Q2hpbGw+IHNlbWFu
dGljcyBmb3IgaW50ZWdlcnMuCisgICAgdmlydHVhbCBWYWx1ZSogbW9kQ29uc3RhbnQoUHJvY2Vk
dXJlJiwgY29uc3QgVmFsdWUqIG90aGVyKSBjb25zdDsgLy8gVGhpcyBjaG9vc2VzIE1vZDxDaGls
bD4gc2VtYW50aWNzLgogICAgIHZpcnR1YWwgVmFsdWUqIGJpdEFuZENvbnN0YW50KFByb2NlZHVy
ZSYsIGNvbnN0IFZhbHVlKiBvdGhlcikgY29uc3Q7CiAgICAgdmlydHVhbCBWYWx1ZSogYml0T3JD
b25zdGFudChQcm9jZWR1cmUmLCBjb25zdCBWYWx1ZSogb3RoZXIpIGNvbnN0OwogICAgIHZpcnR1
YWwgVmFsdWUqIGJpdFhvckNvbnN0YW50KFByb2NlZHVyZSYsIGNvbnN0IFZhbHVlKiBvdGhlcikg
Y29uc3Q7CkBAIC0yNzQsMTAgKzI4MCwxMCBAQCBwcml2YXRlOgogICAgIGZyaWVuZCBjbGFzcyBQ
cm9jZWR1cmU7CiAgICAgZnJpZW5kIGNsYXNzIFNwYXJzZUNvbGxlY3Rpb248VmFsdWU+OwogCi0g
ICAgLy8gQ2hlY2tzIHRoYXQgdGhpcyBvcGNvZGUgaXMgdmFsaWQgZm9yIHVzZSB3aXRoIEIzOjpW
YWx1ZS4KLSAgICBBTFdBWVNfSU5MSU5FIHN0YXRpYyB2b2lkIGNoZWNrT3Bjb2RlKE9wY29kZSBv
cGNvZGUsIHVuc2lnbmVkIG51bUFyZ3MpCisgICAgLy8gQ2hlY2tzIHRoYXQgdGhpcyBraW5kIGlz
IHZhbGlkIGZvciB1c2Ugd2l0aCBCMzo6VmFsdWUuCisgICAgQUxXQVlTX0lOTElORSBzdGF0aWMg
dm9pZCBjaGVja0tpbmQoS2luZCBraW5kLCB1bnNpZ25lZCBudW1BcmdzKQogICAgIHsKLSAgICAg
ICAgc3dpdGNoIChvcGNvZGUpIHsKKyAgICAgICAgc3dpdGNoIChraW5kLm9wY29kZSgpKSB7CiAg
ICAgICAgIGNhc2UgRnJhbWVQb2ludGVyOgogICAgICAgICBjYXNlIE5vcDoKICAgICAgICAgY2Fz
ZSBQaGk6CkBAIC0yODUsMTEgKzI5MSwxMSBAQCBwcml2YXRlOgogICAgICAgICBjYXNlIE9vcHM6
CiAgICAgICAgIGNhc2UgRW50cnlTd2l0Y2g6CiAgICAgICAgICAgICBpZiAoVU5MSUtFTFkobnVt
QXJncykpCi0gICAgICAgICAgICAgICAgYmFkT3Bjb2RlKG9wY29kZSwgbnVtQXJncyk7CisgICAg
ICAgICAgICAgICAgYmFkS2luZChraW5kLCBudW1BcmdzKTsKICAgICAgICAgICAgIGJyZWFrOwog
ICAgICAgICBjYXNlIFJldHVybjoKICAgICAgICAgICAgIGlmIChVTkxJS0VMWShudW1BcmdzID4g
MSkpCi0gICAgICAgICAgICAgICAgYmFkT3Bjb2RlKG9wY29kZSwgbnVtQXJncyk7CisgICAgICAg
ICAgICAgICAgYmFkS2luZChraW5kLCBudW1BcmdzKTsKICAgICAgICAgICAgIGJyZWFrOwogICAg
ICAgICBjYXNlIElkZW50aXR5OgogICAgICAgICBjYXNlIE5lZzoKQEAgLTMxMCwxNSArMzE2LDEz
IEBAIHByaXZhdGU6CiAgICAgICAgIGNhc2UgQml0d2lzZUNhc3Q6CiAgICAgICAgIGNhc2UgQnJh
bmNoOgogICAgICAgICAgICAgaWYgKFVOTElLRUxZKG51bUFyZ3MgIT0gMSkpCi0gICAgICAgICAg
ICAgICAgYmFkT3Bjb2RlKG9wY29kZSwgbnVtQXJncyk7CisgICAgICAgICAgICAgICAgYmFkS2lu
ZChraW5kLCBudW1BcmdzKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIEFkZDoK
ICAgICAgICAgY2FzZSBTdWI6CiAgICAgICAgIGNhc2UgTXVsOgogICAgICAgICBjYXNlIERpdjoK
ICAgICAgICAgY2FzZSBNb2Q6Ci0gICAgICAgIGNhc2UgQ2hpbGxEaXY6Ci0gICAgICAgIGNhc2Ug
Q2hpbGxNb2Q6CiAgICAgICAgIGNhc2UgQml0QW5kOgogICAgICAgICBjYXNlIEJpdE9yOgogICAg
ICAgICBjYXNlIEJpdFhvcjoKQEAgLTMzNywxNCArMzQxLDE0IEBAIHByaXZhdGU6CiAgICAgICAg
IGNhc2UgQmVsb3dFcXVhbDoKICAgICAgICAgY2FzZSBFcXVhbE9yVW5vcmRlcmVkOgogICAgICAg
ICAgICAgaWYgKFVOTElLRUxZKG51bUFyZ3MgIT0gMikpCi0gICAgICAgICAgICAgICAgYmFkT3Bj
b2RlKG9wY29kZSwgbnVtQXJncyk7CisgICAgICAgICAgICAgICAgYmFkS2luZChraW5kLCBudW1B
cmdzKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIFNlbGVjdDoKICAgICAgICAg
ICAgIGlmIChVTkxJS0VMWShudW1BcmdzICE9IDMpKQotICAgICAgICAgICAgICAgIGJhZE9wY29k
ZShvcGNvZGUsIG51bUFyZ3MpOworICAgICAgICAgICAgICAgIGJhZEtpbmQoa2luZCwgbnVtQXJn
cyk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgZGVmYXVsdDoKLSAgICAgICAgICAgIGJh
ZE9wY29kZShvcGNvZGUsIG51bUFyZ3MpOworICAgICAgICAgICAgYmFkS2luZChraW5kLCBudW1B
cmdzKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAgICAgfQpAQCAtMzU4LDU2ICsz
NjIsNTYgQEAgcHJvdGVjdGVkOgogICAgIC8vIEluc3RhbnRpYXRlIHZhbHVlcyB2aWEgUHJvY2Vk
dXJlLgogICAgIC8vIFRoaXMgZm9ybSByZXF1aXJlcyBzcGVjaWZ5aW5nIHRoZSB0eXBlIGV4cGxp
Y2l0bHk6CiAgICAgdGVtcGxhdGU8dHlwZW5hbWUuLi4gQXJndW1lbnRzPgotICAgIGV4cGxpY2l0
IFZhbHVlKENoZWNrZWRPcGNvZGVUYWcsIE9wY29kZSBvcGNvZGUsIFR5cGUgdHlwZSwgT3JpZ2lu
IG9yaWdpbiwgVmFsdWUqIGZpcnN0Q2hpbGQsIEFyZ3VtZW50cy4uLiBhcmd1bWVudHMpCi0gICAg
ICAgIDogbV9vcGNvZGUob3Bjb2RlKQorICAgIGV4cGxpY2l0IFZhbHVlKENoZWNrZWRPcGNvZGVU
YWcsIEtpbmQga2luZCwgVHlwZSB0eXBlLCBPcmlnaW4gb3JpZ2luLCBWYWx1ZSogZmlyc3RDaGls
ZCwgQXJndW1lbnRzLi4uIGFyZ3VtZW50cykKKyAgICAgICAgOiBtX2tpbmQoa2luZCkKICAgICAg
ICAgLCBtX3R5cGUodHlwZSkKICAgICAgICAgLCBtX29yaWdpbihvcmlnaW4pCiAgICAgICAgICwg
bV9jaGlsZHJlbnsgZmlyc3RDaGlsZCwgYXJndW1lbnRzLi4uIH0KICAgICB7CiAgICAgfQogICAg
IC8vIFRoaXMgZm9ybSBpcyBmb3Igc3BlY2lmeWluZyB0aGUgdHlwZSBleHBsaWNpdGx5IHdoZW4g
dGhlIG9wY29kZSBoYXMgbm8gY2hpbGRyZW46Ci0gICAgZXhwbGljaXQgVmFsdWUoQ2hlY2tlZE9w
Y29kZVRhZywgT3Bjb2RlIG9wY29kZSwgVHlwZSB0eXBlLCBPcmlnaW4gb3JpZ2luKQotICAgICAg
ICA6IG1fb3Bjb2RlKG9wY29kZSkKKyAgICBleHBsaWNpdCBWYWx1ZShDaGVja2VkT3Bjb2RlVGFn
LCBLaW5kIGtpbmQsIFR5cGUgdHlwZSwgT3JpZ2luIG9yaWdpbikKKyAgICAgICAgOiBtX2tpbmQo
a2luZCkKICAgICAgICAgLCBtX3R5cGUodHlwZSkKICAgICAgICAgLCBtX29yaWdpbihvcmlnaW4p
CiAgICAgewogICAgIH0KICAgICAvLyBUaGlzIGZvcm0gaXMgZm9yIHRob3NlIG9wY29kZXMgdGhh
dCBjYW4gaW5mZXIgdGhlaXIgdHlwZSBmcm9tIHRoZSBvcGNvZGUgYW5kIGZpcnN0IGNoaWxkOgog
ICAgIHRlbXBsYXRlPHR5cGVuYW1lLi4uIEFyZ3VtZW50cz4KLSAgICBleHBsaWNpdCBWYWx1ZShD
aGVja2VkT3Bjb2RlVGFnLCBPcGNvZGUgb3Bjb2RlLCBPcmlnaW4gb3JpZ2luLCBWYWx1ZSogZmly
c3RDaGlsZCkKLSAgICAgICAgOiBtX29wY29kZShvcGNvZGUpCi0gICAgICAgICwgbV90eXBlKHR5
cGVGb3Iob3Bjb2RlLCBmaXJzdENoaWxkKSkKKyAgICBleHBsaWNpdCBWYWx1ZShDaGVja2VkT3Bj
b2RlVGFnLCBLaW5kIGtpbmQsIE9yaWdpbiBvcmlnaW4sIFZhbHVlKiBmaXJzdENoaWxkKQorICAg
ICAgICA6IG1fa2luZChraW5kKQorICAgICAgICAsIG1fdHlwZSh0eXBlRm9yKGtpbmQsIGZpcnN0
Q2hpbGQpKQogICAgICAgICAsIG1fb3JpZ2luKG9yaWdpbikKICAgICAgICAgLCBtX2NoaWxkcmVu
eyBmaXJzdENoaWxkIH0KICAgICB7CiAgICAgfQogICAgIC8vIFRoaXMgZm9ybSBpcyBmb3IgdGhv
c2Ugb3Bjb2RlcyB0aGF0IGNhbiBpbmZlciB0aGVpciB0eXBlIGZyb20gdGhlIG9wY29kZSBhbmQg
Zmlyc3QgYW5kIHNlY29uZCBjaGlsZDoKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZS4uLiBBcmd1bWVu
dHM+Ci0gICAgZXhwbGljaXQgVmFsdWUoQ2hlY2tlZE9wY29kZVRhZywgT3Bjb2RlIG9wY29kZSwg
T3JpZ2luIG9yaWdpbiwgVmFsdWUqIGZpcnN0Q2hpbGQsIFZhbHVlKiBzZWNvbmRDaGlsZCwgQXJn
dW1lbnRzLi4uIGFyZ3VtZW50cykKLSAgICAgICAgOiBtX29wY29kZShvcGNvZGUpCi0gICAgICAg
ICwgbV90eXBlKHR5cGVGb3Iob3Bjb2RlLCBmaXJzdENoaWxkLCBzZWNvbmRDaGlsZCkpCisgICAg
ZXhwbGljaXQgVmFsdWUoQ2hlY2tlZE9wY29kZVRhZywgS2luZCBraW5kLCBPcmlnaW4gb3JpZ2lu
LCBWYWx1ZSogZmlyc3RDaGlsZCwgVmFsdWUqIHNlY29uZENoaWxkLCBBcmd1bWVudHMuLi4gYXJn
dW1lbnRzKQorICAgICAgICA6IG1fa2luZChraW5kKQorICAgICAgICAsIG1fdHlwZSh0eXBlRm9y
KGtpbmQsIGZpcnN0Q2hpbGQsIHNlY29uZENoaWxkKSkKICAgICAgICAgLCBtX29yaWdpbihvcmln
aW4pCiAgICAgICAgICwgbV9jaGlsZHJlbnsgZmlyc3RDaGlsZCwgc2Vjb25kQ2hpbGQsIGFyZ3Vt
ZW50cy4uLiB9CiAgICAgewogICAgIH0KICAgICAvLyBUaGlzIGZvcm0gaXMgZm9yIHRob3NlIG9w
Y29kZXMgdGhhdCBjYW4gaW5mZXIgdGhlaXIgdHlwZSBmcm9tIHRoZSBvcGNvZGUgYWxvbmUsIGFu
ZCB0aGF0IGRvbid0CiAgICAgLy8gdGFrZSBhbnkgYXJndW1lbnRzOgotICAgIGV4cGxpY2l0IFZh
bHVlKENoZWNrZWRPcGNvZGVUYWcsIE9wY29kZSBvcGNvZGUsIE9yaWdpbiBvcmlnaW4pCi0gICAg
ICAgIDogbV9vcGNvZGUob3Bjb2RlKQotICAgICAgICAsIG1fdHlwZSh0eXBlRm9yKG9wY29kZSwg
bnVsbHB0cikpCisgICAgZXhwbGljaXQgVmFsdWUoQ2hlY2tlZE9wY29kZVRhZywgS2luZCBraW5k
LCBPcmlnaW4gb3JpZ2luKQorICAgICAgICA6IG1fa2luZChraW5kKQorICAgICAgICAsIG1fdHlw
ZSh0eXBlRm9yKGtpbmQsIG51bGxwdHIpKQogICAgICAgICAsIG1fb3JpZ2luKG9yaWdpbikKICAg
ICB7CiAgICAgfQogICAgIC8vIFVzZSB0aGlzIGZvcm0gZm9yIHZhcmFyZ3MuCi0gICAgZXhwbGlj
aXQgVmFsdWUoQ2hlY2tlZE9wY29kZVRhZywgT3Bjb2RlIG9wY29kZSwgVHlwZSB0eXBlLCBPcmln
aW4gb3JpZ2luLCBjb25zdCBBZGphY2VuY3lMaXN0JiBjaGlsZHJlbikKLSAgICAgICAgOiBtX29w
Y29kZShvcGNvZGUpCisgICAgZXhwbGljaXQgVmFsdWUoQ2hlY2tlZE9wY29kZVRhZywgS2luZCBr
aW5kLCBUeXBlIHR5cGUsIE9yaWdpbiBvcmlnaW4sIGNvbnN0IEFkamFjZW5jeUxpc3QmIGNoaWxk
cmVuKQorICAgICAgICA6IG1fa2luZChraW5kKQogICAgICAgICAsIG1fdHlwZSh0eXBlKQogICAg
ICAgICAsIG1fb3JpZ2luKG9yaWdpbikKICAgICAgICAgLCBtX2NoaWxkcmVuKGNoaWxkcmVuKQog
ICAgIHsKICAgICB9Ci0gICAgZXhwbGljaXQgVmFsdWUoQ2hlY2tlZE9wY29kZVRhZywgT3Bjb2Rl
IG9wY29kZSwgVHlwZSB0eXBlLCBPcmlnaW4gb3JpZ2luLCBBZGphY2VuY3lMaXN0JiYgY2hpbGRy
ZW4pCi0gICAgICAgIDogbV9vcGNvZGUob3Bjb2RlKQorICAgIGV4cGxpY2l0IFZhbHVlKENoZWNr
ZWRPcGNvZGVUYWcsIEtpbmQga2luZCwgVHlwZSB0eXBlLCBPcmlnaW4gb3JpZ2luLCBBZGphY2Vu
Y3lMaXN0JiYgY2hpbGRyZW4pCisgICAgICAgIDogbV9raW5kKGtpbmQpCiAgICAgICAgICwgbV90
eXBlKHR5cGUpCiAgICAgICAgICwgbV9vcmlnaW4ob3JpZ2luKQogICAgICAgICAsIG1fY2hpbGRy
ZW4oV1RGTW92ZShjaGlsZHJlbikpCkBAIC00MTcsNTIgKzQyMSw1MiBAQCBwcm90ZWN0ZWQ6CiAg
ICAgLy8gVGhpcyBpcyB0aGUgY29uc3RydWN0b3IgeW91IGVuZCB1cCBhY3R1YWxseSBjYWxsaW5n
LCBpZiB5b3UncmUgaW5zdGFudGlhdGluZyBWYWx1ZQogICAgIC8vIGRpcmVjdGx5LgogICAgIHRl
bXBsYXRlPHR5cGVuYW1lLi4uIEFyZ3VtZW50cz4KLSAgICAgICAgZXhwbGljaXQgVmFsdWUoT3Bj
b2RlIG9wY29kZSwgVHlwZSB0eXBlLCBPcmlnaW4gb3JpZ2luKQotICAgICAgICA6IFZhbHVlKENo
ZWNrZWRPcGNvZGUsIG9wY29kZSwgdHlwZSwgb3JpZ2luKQorICAgICAgICBleHBsaWNpdCBWYWx1
ZShLaW5kIGtpbmQsIFR5cGUgdHlwZSwgT3JpZ2luIG9yaWdpbikKKyAgICAgICAgOiBWYWx1ZShD
aGVja2VkT3Bjb2RlLCBraW5kLCB0eXBlLCBvcmlnaW4pCiAgICAgewotICAgICAgICBjaGVja09w
Y29kZShvcGNvZGUsIDApOworICAgICAgICBjaGVja0tpbmQoa2luZCwgMCk7CiAgICAgfQogICAg
IHRlbXBsYXRlPHR5cGVuYW1lLi4uIEFyZ3VtZW50cz4KLSAgICAgICAgZXhwbGljaXQgVmFsdWUo
T3Bjb2RlIG9wY29kZSwgVHlwZSB0eXBlLCBPcmlnaW4gb3JpZ2luLCBWYWx1ZSogZmlyc3RDaGls
ZCwgQXJndW1lbnRzJiYuLi4gYXJndW1lbnRzKQotICAgICAgICA6IFZhbHVlKENoZWNrZWRPcGNv
ZGUsIG9wY29kZSwgdHlwZSwgb3JpZ2luLCBmaXJzdENoaWxkLCBzdGQ6OmZvcndhcmQ8QXJndW1l
bnRzPihhcmd1bWVudHMpLi4uKQorICAgICAgICBleHBsaWNpdCBWYWx1ZShLaW5kIGtpbmQsIFR5
cGUgdHlwZSwgT3JpZ2luIG9yaWdpbiwgVmFsdWUqIGZpcnN0Q2hpbGQsIEFyZ3VtZW50cyYmLi4u
IGFyZ3VtZW50cykKKyAgICAgICAgOiBWYWx1ZShDaGVja2VkT3Bjb2RlLCBraW5kLCB0eXBlLCBv
cmlnaW4sIGZpcnN0Q2hpbGQsIHN0ZDo6Zm9yd2FyZDxBcmd1bWVudHM+KGFyZ3VtZW50cykuLi4p
CiAgICAgewotICAgICAgICBjaGVja09wY29kZShvcGNvZGUsIDEgKyBzaXplb2YuLi4oYXJndW1l
bnRzKSk7CisgICAgICAgIGNoZWNrS2luZChraW5kLCAxICsgc2l6ZW9mLi4uKGFyZ3VtZW50cykp
OwogICAgIH0KICAgICB0ZW1wbGF0ZTx0eXBlbmFtZS4uLiBBcmd1bWVudHM+Ci0gICAgICAgIGV4
cGxpY2l0IFZhbHVlKE9wY29kZSBvcGNvZGUsIFR5cGUgdHlwZSwgT3JpZ2luIG9yaWdpbiwgY29u
c3QgQWRqYWNlbmN5TGlzdCYgY2hpbGRyZW4pCi0gICAgICAgIDogVmFsdWUoQ2hlY2tlZE9wY29k
ZSwgb3Bjb2RlLCB0eXBlLCBvcmlnaW4sIGNoaWxkcmVuKQorICAgICAgICBleHBsaWNpdCBWYWx1
ZShLaW5kIGtpbmQsIFR5cGUgdHlwZSwgT3JpZ2luIG9yaWdpbiwgY29uc3QgQWRqYWNlbmN5TGlz
dCYgY2hpbGRyZW4pCisgICAgICAgIDogVmFsdWUoQ2hlY2tlZE9wY29kZSwga2luZCwgdHlwZSwg
b3JpZ2luLCBjaGlsZHJlbikKICAgICB7Ci0gICAgICAgIGNoZWNrT3Bjb2RlKG9wY29kZSwgY2hp
bGRyZW4uc2l6ZSgpKTsKKyAgICAgICAgY2hlY2tLaW5kKGtpbmQsIGNoaWxkcmVuLnNpemUoKSk7
CiAgICAgfQogICAgIHRlbXBsYXRlPHR5cGVuYW1lLi4uIEFyZ3VtZW50cz4KLSAgICAgICAgZXhw
bGljaXQgVmFsdWUoT3Bjb2RlIG9wY29kZSwgVHlwZSB0eXBlLCBPcmlnaW4gb3JpZ2luLCBBZGph
Y2VuY3lMaXN0JiYgY2hpbGRyZW4pCi0gICAgICAgIDogVmFsdWUoQ2hlY2tlZE9wY29kZSwgb3Bj
b2RlLCB0eXBlLCBvcmlnaW4sIFdURk1vdmUoY2hpbGRyZW4pKQorICAgICAgICBleHBsaWNpdCBW
YWx1ZShLaW5kIGtpbmQsIFR5cGUgdHlwZSwgT3JpZ2luIG9yaWdpbiwgQWRqYWNlbmN5TGlzdCYm
IGNoaWxkcmVuKQorICAgICAgICA6IFZhbHVlKENoZWNrZWRPcGNvZGUsIGtpbmQsIHR5cGUsIG9y
aWdpbiwgV1RGTW92ZShjaGlsZHJlbikpCiAgICAgewotICAgICAgICBjaGVja09wY29kZShvcGNv
ZGUsIG1fY2hpbGRyZW4uc2l6ZSgpKTsKKyAgICAgICAgY2hlY2tLaW5kKGtpbmQsIG1fY2hpbGRy
ZW4uc2l6ZSgpKTsKICAgICB9CiAgICAgdGVtcGxhdGU8dHlwZW5hbWUuLi4gQXJndW1lbnRzPgot
ICAgICAgICBleHBsaWNpdCBWYWx1ZShPcGNvZGUgb3Bjb2RlLCBPcmlnaW4gb3JpZ2luLCBBcmd1
bWVudHMmJi4uLiBhcmd1bWVudHMpCi0gICAgICAgIDogVmFsdWUoQ2hlY2tlZE9wY29kZSwgb3Bj
b2RlLCBvcmlnaW4sIHN0ZDo6Zm9yd2FyZDxBcmd1bWVudHM+KGFyZ3VtZW50cykuLi4pCisgICAg
ICAgIGV4cGxpY2l0IFZhbHVlKEtpbmQga2luZCwgT3JpZ2luIG9yaWdpbiwgQXJndW1lbnRzJiYu
Li4gYXJndW1lbnRzKQorICAgICAgICA6IFZhbHVlKENoZWNrZWRPcGNvZGUsIGtpbmQsIG9yaWdp
biwgc3RkOjpmb3J3YXJkPEFyZ3VtZW50cz4oYXJndW1lbnRzKS4uLikKICAgICB7Ci0gICAgICAg
IGNoZWNrT3Bjb2RlKG9wY29kZSwgc2l6ZW9mLi4uKGFyZ3VtZW50cykpOworICAgICAgICBjaGVj
a0tpbmQoa2luZCwgc2l6ZW9mLi4uKGFyZ3VtZW50cykpOwogICAgIH0KIAogcHJpdmF0ZToKLSAg
ICBmcmllbmQgY2xhc3MgQ2hlY2tWYWx1ZTsgLy8gQ2hlY2tWYWx1ZTo6Y29udmVydFRvQWRkKCkg
bW9kaWZpZXMgbV9vcGNvZGUuCisgICAgZnJpZW5kIGNsYXNzIENoZWNrVmFsdWU7IC8vIENoZWNr
VmFsdWU6OmNvbnZlcnRUb0FkZCgpIG1vZGlmaWVzIG1fa2luZC4KICAgICAKLSAgICBzdGF0aWMg
VHlwZSB0eXBlRm9yKE9wY29kZSwgVmFsdWUqIGZpcnN0Q2hpbGQsIFZhbHVlKiBzZWNvbmRDaGls
ZCA9IG51bGxwdHIpOworICAgIHN0YXRpYyBUeXBlIHR5cGVGb3IoS2luZCwgVmFsdWUqIGZpcnN0
Q2hpbGQsIFZhbHVlKiBzZWNvbmRDaGlsZCA9IG51bGxwdHIpOwogCiAgICAgLy8gVGhpcyBncm91
cCBvZiBmaWVsZHMgaXMgYXJyYW5nZWQgdG8gZml0IGluIDY0IGJpdHMuCiBwcm90ZWN0ZWQ6CiAg
ICAgdW5zaWduZWQgbV9pbmRleCB7IFVJTlRfTUFYIH07CiBwcml2YXRlOgotICAgIE9wY29kZSBt
X29wY29kZTsKKyAgICBLaW5kIG1fa2luZDsKICAgICBUeXBlIG1fdHlwZTsKICAgICAKICAgICBP
cmlnaW4gbV9vcmlnaW47CiAgICAgQWRqYWNlbmN5TGlzdCBtX2NoaWxkcmVuOwogCi0gICAgSlNf
RVhQT1JUX1BSSVZBVEUgTk9fUkVUVVJOX0RVRV9UT19DUkFTSCBzdGF0aWMgdm9pZCBiYWRPcGNv
ZGUoT3Bjb2RlLCB1bnNpZ25lZCk7CisgICAgSlNfRVhQT1JUX1BSSVZBVEUgTk9fUkVUVVJOX0RV
RV9UT19DUkFTSCBzdGF0aWMgdm9pZCBiYWRLaW5kKEtpbmQsIHVuc2lnbmVkKTsKIAogcHVibGlj
OgogICAgIEJhc2ljQmxvY2sqIG93bmVyIHsgbnVsbHB0ciB9OyAvLyBjb21wdXRlZCBieSBQcm9j
ZWR1cmU6OnJlc2V0VmFsdWVPd25lcnMoKS4KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
My9CM1ZhbHVlSW5saW5lcy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
My9CM1ZhbHVlSW5saW5lcy5oCShyZXZpc2lvbiAyMDY1MjQpCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvYjMvQjNWYWx1ZUlubGluZXMuaAkod29ya2luZyBjb3B5KQpAQCAtNTgsNyArNTgsNyBA
QCB2b2lkIFZhbHVlOjpyZXBsYWNlV2l0aEJvdHRvbShjb25zdCBCb3R0CiB0ZW1wbGF0ZTx0eXBl
bmFtZSBUPgogaW5saW5lIFQqIFZhbHVlOjphcygpCiB7Ci0gICAgaWYgKFQ6OmFjY2VwdHMob3Bj
b2RlKCkpKQorICAgIGlmIChUOjphY2NlcHRzKGtpbmQoKSkpCiAgICAgICAgIHJldHVybiBzdGF0
aWNfY2FzdDxUKj4odGhpcyk7CiAgICAgcmV0dXJuIG51bGxwdHI7CiB9CkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYjMvQjNWYWx1ZUtleS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0ph
dmFTY3JpcHRDb3JlL2IzL0IzVmFsdWVLZXkuY3BwCShyZXZpc2lvbiAyMDY1MjQpCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYjMvQjNWYWx1ZUtleS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTUx
LDE0ICs1MSwxNCBAQCBWYWx1ZUtleSBWYWx1ZUtleTo6aW50Q29uc3RhbnQoVHlwZSB0eXBlCiAK
IHZvaWQgVmFsdWVLZXk6OmR1bXAoUHJpbnRTdHJlYW0mIG91dCkgY29uc3QKIHsKLSAgICBvdXQu
cHJpbnQobV90eXBlLCAiICIsIG1fb3Bjb2RlLCAiKCIsIHUuaW5kaWNlc1swXSwgIiwgIiwgdS5p
bmRpY2VzWzFdLCAiLCAiLCB1LmluZGljZXNbMl0sICIpIik7CisgICAgb3V0LnByaW50KG1fdHlw
ZSwgIiAiLCBtX2tpbmQsICIoIiwgdS5pbmRpY2VzWzBdLCAiLCAiLCB1LmluZGljZXNbMV0sICIs
ICIsIHUuaW5kaWNlc1syXSwgIikiKTsKIH0KIAogVmFsdWUqIFZhbHVlS2V5OjptYXRlcmlhbGl6
ZShQcm9jZWR1cmUmIHByb2MsIE9yaWdpbiBvcmlnaW4pIGNvbnN0CiB7CiAgICAgc3dpdGNoIChv
cGNvZGUoKSkgewogICAgIGNhc2UgRnJhbWVQb2ludGVyOgotICAgICAgICByZXR1cm4gcHJvYy5h
ZGQ8VmFsdWU+KG9wY29kZSgpLCB0eXBlKCksIG9yaWdpbik7CisgICAgICAgIHJldHVybiBwcm9j
LmFkZDxWYWx1ZT4oa2luZCgpLCB0eXBlKCksIG9yaWdpbik7CiAgICAgY2FzZSBJZGVudGl0eToK
ICAgICBjYXNlIFNxcnQ6CiAgICAgY2FzZSBTRXh0ODoKQEAgLTcyLDExICs3MiwxMCBAQCBWYWx1
ZSogVmFsdWVLZXk6Om1hdGVyaWFsaXplKFByb2NlZHVyZSYgCiAgICAgY2FzZSBGbG9hdFRvRG91
YmxlOgogICAgIGNhc2UgRG91YmxlVG9GbG9hdDoKICAgICBjYXNlIENoZWNrOgotICAgICAgICBy
ZXR1cm4gcHJvYy5hZGQ8VmFsdWU+KG9wY29kZSgpLCB0eXBlKCksIG9yaWdpbiwgY2hpbGQocHJv
YywgMCkpOworICAgICAgICByZXR1cm4gcHJvYy5hZGQ8VmFsdWU+KGtpbmQoKSwgdHlwZSgpLCBv
cmlnaW4sIGNoaWxkKHByb2MsIDApKTsKICAgICBjYXNlIEFkZDoKICAgICBjYXNlIFN1YjoKICAg
ICBjYXNlIE11bDoKLSAgICBjYXNlIENoaWxsRGl2OgogICAgIGNhc2UgTW9kOgogICAgIGNhc2Ug
Qml0QW5kOgogICAgIGNhc2UgQml0T3I6CkBAIC05Myw5ICs5Miw5IEBAIFZhbHVlKiBWYWx1ZUtl
eTo6bWF0ZXJpYWxpemUoUHJvY2VkdXJlJiAKICAgICBjYXNlIEFib3ZlRXF1YWw6CiAgICAgY2Fz
ZSBCZWxvd0VxdWFsOgogICAgIGNhc2UgRGl2OgotICAgICAgICByZXR1cm4gcHJvYy5hZGQ8VmFs
dWU+KG9wY29kZSgpLCB0eXBlKCksIG9yaWdpbiwgY2hpbGQocHJvYywgMCksIGNoaWxkKHByb2Ms
IDEpKTsKKyAgICAgICAgcmV0dXJuIHByb2MuYWRkPFZhbHVlPihraW5kKCksIHR5cGUoKSwgb3Jp
Z2luLCBjaGlsZChwcm9jLCAwKSwgY2hpbGQocHJvYywgMSkpOwogICAgIGNhc2UgU2VsZWN0Ogot
ICAgICAgICByZXR1cm4gcHJvYy5hZGQ8VmFsdWU+KG9wY29kZSgpLCB0eXBlKCksIG9yaWdpbiwg
Y2hpbGQocHJvYywgMCksIGNoaWxkKHByb2MsIDEpLCBjaGlsZChwcm9jLCAyKSk7CisgICAgICAg
IHJldHVybiBwcm9jLmFkZDxWYWx1ZT4oa2luZCgpLCB0eXBlKCksIG9yaWdpbiwgY2hpbGQocHJv
YywgMCksIGNoaWxkKHByb2MsIDEpLCBjaGlsZChwcm9jLCAyKSk7CiAgICAgY2FzZSBDb25zdDMy
OgogICAgICAgICByZXR1cm4gcHJvYy5hZGQ8Q29uc3QzMlZhbHVlPihvcmlnaW4sIHN0YXRpY19j
YXN0PGludDMyX3Q+KHZhbHVlKCkpKTsKICAgICBjYXNlIENvbnN0NjQ6CkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYjMvQjNWYWx1ZUtleS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9iMy9CM1ZhbHVlS2V5LmgJKHJldmlzaW9uIDIwNjUyNCkKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9iMy9CM1ZhbHVlS2V5LmgJKHdvcmtpbmcgY29weSkKQEAgLTI5LDcgKzI5
LDcgQEAKICNpZiBFTkFCTEUoQjNfSklUKQogCiAjaW5jbHVkZSAiQjNIZWFwUmFuZ2UuaCIKLSNp
bmNsdWRlICJCM09wY29kZS5oIgorI2luY2x1ZGUgIkIzS2luZC5oIgogI2luY2x1ZGUgIkIzT3Jp
Z2luLmgiCiAjaW5jbHVkZSAiQjNUeXBlLmgiCiAjaW5jbHVkZSA8d3RmL0hhc2hUYWJsZS5oPgpA
QCAtNTEsMzQgKzUxLDM0IEBAIHB1YmxpYzoKICAgICB7CiAgICAgfQogCi0gICAgVmFsdWVLZXko
T3Bjb2RlIG9wY29kZSwgVHlwZSB0eXBlKQotICAgICAgICA6IG1fb3Bjb2RlKG9wY29kZSkKKyAg
ICBWYWx1ZUtleShLaW5kIGtpbmQsIFR5cGUgdHlwZSkKKyAgICAgICAgOiBtX2tpbmQoa2luZCkK
ICAgICAgICAgLCBtX3R5cGUodHlwZSkKICAgICB7CiAgICAgfQogCi0gICAgVmFsdWVLZXkoT3Bj
b2RlLCBUeXBlLCBWYWx1ZSogY2hpbGQpOworICAgIFZhbHVlS2V5KEtpbmQsIFR5cGUsIFZhbHVl
KiBjaGlsZCk7CiAKLSAgICBWYWx1ZUtleShPcGNvZGUsIFR5cGUsIFZhbHVlKiBsZWZ0LCBWYWx1
ZSogcmlnaHQpOworICAgIFZhbHVlS2V5KEtpbmQsIFR5cGUsIFZhbHVlKiBsZWZ0LCBWYWx1ZSog
cmlnaHQpOwogCi0gICAgVmFsdWVLZXkoT3Bjb2RlLCBUeXBlLCBWYWx1ZSogYSwgVmFsdWUqIGIs
IFZhbHVlKiBjKTsKKyAgICBWYWx1ZUtleShLaW5kLCBUeXBlLCBWYWx1ZSogYSwgVmFsdWUqIGIs
IFZhbHVlKiBjKTsKIAotICAgIFZhbHVlS2V5KE9wY29kZSBvcGNvZGUsIFR5cGUgdHlwZSwgaW50
NjRfdCB2YWx1ZSkKLSAgICAgICAgOiBtX29wY29kZShvcGNvZGUpCisgICAgVmFsdWVLZXkoS2lu
ZCBraW5kLCBUeXBlIHR5cGUsIGludDY0X3QgdmFsdWUpCisgICAgICAgIDogbV9raW5kKGtpbmQp
CiAgICAgICAgICwgbV90eXBlKHR5cGUpCiAgICAgewogICAgICAgICB1LnZhbHVlID0gdmFsdWU7
CiAgICAgfQogCi0gICAgVmFsdWVLZXkoT3Bjb2RlIG9wY29kZSwgVHlwZSB0eXBlLCBkb3VibGUg
dmFsdWUpCi0gICAgICAgIDogbV9vcGNvZGUob3Bjb2RlKQorICAgIFZhbHVlS2V5KEtpbmQga2lu
ZCwgVHlwZSB0eXBlLCBkb3VibGUgdmFsdWUpCisgICAgICAgIDogbV9raW5kKGtpbmQpCiAgICAg
ICAgICwgbV90eXBlKHR5cGUpCiAgICAgewogICAgICAgICB1LmRvdWJsZVZhbHVlID0gdmFsdWU7
CiAgICAgfQogCi0gICAgVmFsdWVLZXkoT3Bjb2RlIG9wY29kZSwgVHlwZSB0eXBlLCBmbG9hdCB2
YWx1ZSkKLSAgICAgICAgOiBtX29wY29kZShvcGNvZGUpCisgICAgVmFsdWVLZXkoS2luZCBraW5k
LCBUeXBlIHR5cGUsIGZsb2F0IHZhbHVlKQorICAgICAgICA6IG1fa2luZChraW5kKQogICAgICAg
ICAsIG1fdHlwZSh0eXBlKQogICAgIHsKICAgICAgICAgdS5mbG9hdFZhbHVlID0gdmFsdWU7CkBA
IC04Niw3ICs4Niw4IEBAIHB1YmxpYzoKIAogICAgIHN0YXRpYyBWYWx1ZUtleSBpbnRDb25zdGFu
dChUeXBlIHR5cGUsIGludDY0X3QgdmFsdWUpOwogCi0gICAgT3Bjb2RlIG9wY29kZSgpIGNvbnN0
IHsgcmV0dXJuIG1fb3Bjb2RlOyB9CisgICAgS2luZCBraW5kKCkgY29uc3QgeyByZXR1cm4gbV9r
aW5kOyB9CisgICAgT3Bjb2RlIG9wY29kZSgpIGNvbnN0IHsgcmV0dXJuIGtpbmQoKS5vcGNvZGUo
KTsgfQogICAgIFR5cGUgdHlwZSgpIGNvbnN0IHsgcmV0dXJuIG1fdHlwZTsgfQogICAgIHVuc2ln
bmVkIGNoaWxkSW5kZXgodW5zaWduZWQgaW5kZXgpIGNvbnN0IHsgcmV0dXJuIHUuaW5kaWNlc1tp
bmRleF07IH0KICAgICBWYWx1ZSogY2hpbGQoUHJvY2VkdXJlJiwgdW5zaWduZWQgaW5kZXgpIGNv
bnN0OwpAQCAtOTYsNyArOTcsNyBAQCBwdWJsaWM6CiAKICAgICBib29sIG9wZXJhdG9yPT0oY29u
c3QgVmFsdWVLZXkmIG90aGVyKSBjb25zdAogICAgIHsKLSAgICAgICAgcmV0dXJuIG1fb3Bjb2Rl
ID09IG90aGVyLm1fb3Bjb2RlCisgICAgICAgIHJldHVybiBtX2tpbmQgPT0gb3RoZXIubV9raW5k
CiAgICAgICAgICAgICAmJiBtX3R5cGUgPT0gb3RoZXIubV90eXBlCiAgICAgICAgICAgICAmJiB1
ID09IG90aGVyLnU7CiAgICAgfQpAQCAtMTA4LDcgKzEwOSw3IEBAIHB1YmxpYzoKIAogICAgIHVu
c2lnbmVkIGhhc2goKSBjb25zdAogICAgIHsKLSAgICAgICAgcmV0dXJuIG1fb3Bjb2RlICsgbV90
eXBlICsgV1RGOjpJbnRIYXNoPGludDMyX3Q+OjpoYXNoKHUuaW5kaWNlc1swXSkgKyB1LmluZGlj
ZXNbMV0gKyB1LmluZGljZXNbMl07CisgICAgICAgIHJldHVybiBtX2tpbmQuaGFzaCgpICsgbV90
eXBlICsgV1RGOjpJbnRIYXNoPGludDMyX3Q+OjpoYXNoKHUuaW5kaWNlc1swXSkgKyB1LmluZGlj
ZXNbMV0gKyB1LmluZGljZXNbMl07CiAgICAgfQogCiAgICAgZXhwbGljaXQgb3BlcmF0b3IgYm9v
bCgpIGNvbnN0IHsgcmV0dXJuICp0aGlzICE9IFZhbHVlS2V5KCk7IH0KQEAgLTE1MCw3ICsxNTEs
NyBAQCBwdWJsaWM6CiAgICAgfQogICAgICAgICAKIHByaXZhdGU6Ci0gICAgT3Bjb2RlIG1fb3Bj
b2RlIHsgT29wcyB9OworICAgIEtpbmQgbV9raW5kOwogICAgIFR5cGUgbV90eXBlIHsgVm9pZCB9
OwogICAgIHVuaW9uIFUgewogICAgICAgICB1bnNpZ25lZCBpbmRpY2VzWzNdOwpJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzVmFsdWVLZXlJbmxpbmVzLmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzVmFsdWVLZXlJbmxpbmVzLmgJKHJldmlzaW9uIDIw
NjUyNCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM1ZhbHVlS2V5SW5saW5lcy5oCSh3
b3JraW5nIGNvcHkpCkBAIC0zNCwyMyArMzQsMjMgQEAKIAogbmFtZXNwYWNlIEpTQyB7IG5hbWVz
cGFjZSBCMyB7CiAKLWlubGluZSBWYWx1ZUtleTo6VmFsdWVLZXkoT3Bjb2RlIG9wY29kZSwgVHlw
ZSB0eXBlLCBWYWx1ZSogY2hpbGQpCi0gICAgOiBtX29wY29kZShvcGNvZGUpCitpbmxpbmUgVmFs
dWVLZXk6OlZhbHVlS2V5KEtpbmQga2luZCwgVHlwZSB0eXBlLCBWYWx1ZSogY2hpbGQpCisgICAg
OiBtX2tpbmQoa2luZCkKICAgICAsIG1fdHlwZSh0eXBlKQogewogICAgIHUuaW5kaWNlc1swXSA9
IGNoaWxkLT5pbmRleCgpOwogfQogCi1pbmxpbmUgVmFsdWVLZXk6OlZhbHVlS2V5KE9wY29kZSBv
cGNvZGUsIFR5cGUgdHlwZSwgVmFsdWUqIGxlZnQsIFZhbHVlKiByaWdodCkKLSAgICA6IG1fb3Bj
b2RlKG9wY29kZSkKK2lubGluZSBWYWx1ZUtleTo6VmFsdWVLZXkoS2luZCBraW5kLCBUeXBlIHR5
cGUsIFZhbHVlKiBsZWZ0LCBWYWx1ZSogcmlnaHQpCisgICAgOiBtX2tpbmQoa2luZCkKICAgICAs
IG1fdHlwZSh0eXBlKQogewogICAgIHUuaW5kaWNlc1swXSA9IGxlZnQtPmluZGV4KCk7CiAgICAg
dS5pbmRpY2VzWzFdID0gcmlnaHQtPmluZGV4KCk7CiB9CiAKLWlubGluZSBWYWx1ZUtleTo6VmFs
dWVLZXkoT3Bjb2RlIG9wY29kZSwgVHlwZSB0eXBlLCBWYWx1ZSogYSwgVmFsdWUqIGIsIFZhbHVl
KiBjKQotICAgIDogbV9vcGNvZGUob3Bjb2RlKQoraW5saW5lIFZhbHVlS2V5OjpWYWx1ZUtleShL
aW5kIGtpbmQsIFR5cGUgdHlwZSwgVmFsdWUqIGEsIFZhbHVlKiBiLCBWYWx1ZSogYykKKyAgICA6
IG1fa2luZChraW5kKQogICAgICwgbV90eXBlKHR5cGUpCiB7CiAgICAgdS5pbmRpY2VzWzBdID0g
YS0+aW5kZXgoKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM1ZhcmlhYmxlVmFs
dWUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM1ZhcmlhYmxl
VmFsdWUuY3BwCShyZXZpc2lvbiAyMDY1MjQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMv
QjNWYXJpYWJsZVZhbHVlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDYsMTggKzQ2LDE4IEBAIFZh
bHVlKiBWYXJpYWJsZVZhbHVlOjpjbG9uZUltcGwoKSBjb25zdAogICAgIHJldHVybiBuZXcgVmFy
aWFibGVWYWx1ZSgqdGhpcyk7CiB9CiAKLVZhcmlhYmxlVmFsdWU6OlZhcmlhYmxlVmFsdWUoT3Bj
b2RlIG9wY29kZSwgT3JpZ2luIG9yaWdpbiwgVmFyaWFibGUqIHZhcmlhYmxlLCBWYWx1ZSogdmFs
dWUpCi0gICAgOiBWYWx1ZShDaGVja2VkT3Bjb2RlLCBvcGNvZGUsIFZvaWQsIG9yaWdpbiwgdmFs
dWUpCitWYXJpYWJsZVZhbHVlOjpWYXJpYWJsZVZhbHVlKEtpbmQga2luZCwgT3JpZ2luIG9yaWdp
biwgVmFyaWFibGUqIHZhcmlhYmxlLCBWYWx1ZSogdmFsdWUpCisgICAgOiBWYWx1ZShDaGVja2Vk
T3Bjb2RlLCBraW5kLCBWb2lkLCBvcmlnaW4sIHZhbHVlKQogICAgICwgbV92YXJpYWJsZSh2YXJp
YWJsZSkKIHsKLSAgICBBU1NFUlQob3Bjb2RlID09IFNldCk7CisgICAgQVNTRVJUKGtpbmQgPT0g
U2V0KTsKIH0KIAotVmFyaWFibGVWYWx1ZTo6VmFyaWFibGVWYWx1ZShPcGNvZGUgb3Bjb2RlLCBP
cmlnaW4gb3JpZ2luLCBWYXJpYWJsZSogdmFyaWFibGUpCi0gICAgOiBWYWx1ZShDaGVja2VkT3Bj
b2RlLCBvcGNvZGUsIHZhcmlhYmxlLT50eXBlKCksIG9yaWdpbikKK1ZhcmlhYmxlVmFsdWU6OlZh
cmlhYmxlVmFsdWUoS2luZCBraW5kLCBPcmlnaW4gb3JpZ2luLCBWYXJpYWJsZSogdmFyaWFibGUp
CisgICAgOiBWYWx1ZShDaGVja2VkT3Bjb2RlLCBraW5kLCB2YXJpYWJsZS0+dHlwZSgpLCBvcmln
aW4pCiAgICAgLCBtX3ZhcmlhYmxlKHZhcmlhYmxlKQogewotICAgIEFTU0VSVChvcGNvZGUgPT0g
R2V0KTsKKyAgICBBU1NFUlQoa2luZCA9PSBHZXQpOwogfQogCiB9IH0gLy8gbmFtZXNwYWNlIEpT
Qzo6QjMKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM1ZhcmlhYmxlVmFsdWUuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNWYXJpYWJsZVZhbHVlLmgJ
KHJldmlzaW9uIDIwNjUyNCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM1ZhcmlhYmxl
VmFsdWUuaAkod29ya2luZyBjb3B5KQpAQCAtMzYsNyArMzYsNyBAQCBjbGFzcyBWYXJpYWJsZTsK
IAogY2xhc3MgSlNfRVhQT1JUX1BSSVZBVEUgVmFyaWFibGVWYWx1ZSA6IHB1YmxpYyBWYWx1ZSB7
CiBwdWJsaWM6Ci0gICAgc3RhdGljIGJvb2wgYWNjZXB0cyhPcGNvZGUgb3Bjb2RlKSB7IHJldHVy
biBvcGNvZGUgPT0gR2V0IHx8IG9wY29kZSA9PSBTZXQ7IH0KKyAgICBzdGF0aWMgYm9vbCBhY2Nl
cHRzKEtpbmQga2luZCkgeyByZXR1cm4ga2luZCA9PSBHZXQgfHwga2luZCA9PSBTZXQ7IH0KIAog
ICAgIH5WYXJpYWJsZVZhbHVlKCk7CiAKQEAgLTUxLDEwICs1MSwxMCBAQCBwcml2YXRlOgogICAg
IGZyaWVuZCBjbGFzcyBQcm9jZWR1cmU7CiAKICAgICAvLyBVc2UgdGhpcyBmb3IgU2V0LgotICAg
IFZhcmlhYmxlVmFsdWUoT3Bjb2RlLCBPcmlnaW4sIFZhcmlhYmxlKiwgVmFsdWUqKTsKKyAgICBW
YXJpYWJsZVZhbHVlKEtpbmQsIE9yaWdpbiwgVmFyaWFibGUqLCBWYWx1ZSopOwogCiAgICAgLy8g
VXNlIHRoaXMgZm9yIEdldC4KLSAgICBWYXJpYWJsZVZhbHVlKE9wY29kZSwgT3JpZ2luLCBWYXJp
YWJsZSopOworICAgIFZhcmlhYmxlVmFsdWUoS2luZCwgT3JpZ2luLCBWYXJpYWJsZSopOwogCiAg
ICAgVmFyaWFibGUqIG1fdmFyaWFibGU7CiB9OwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L2IzL3Rlc3RiMy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL3Rl
c3RiMy5jcHAJKHJldmlzaW9uIDIwNjUyNCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy90
ZXN0YjMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC05OTc2LDcgKzk5NzYsNyBAQCB2b2lkIHRlc3RD
aGlsbERpdihpbnQgbnVtLCBpbnQgZGVuLCBpbnQgCiAgICAgICAgIHJvb3QtPmFwcGVuZE5ld0Nv
bnRyb2xWYWx1ZSgKICAgICAgICAgICAgIHByb2MsIFJldHVybiwgT3JpZ2luKCksCiAgICAgICAg
ICAgICByb290LT5hcHBlbmROZXc8VmFsdWU+KAotICAgICAgICAgICAgICAgIHByb2MsIENoaWxs
RGl2LCBPcmlnaW4oKSwKKyAgICAgICAgICAgICAgICBwcm9jLCBjaGlsbChEaXYpLCBPcmlnaW4o
KSwKICAgICAgICAgICAgICAgICByb290LT5hcHBlbmROZXc8VmFsdWU+KAogICAgICAgICAgICAg
ICAgICAgICBwcm9jLCBUcnVuYywgT3JpZ2luKCksCiAgICAgICAgICAgICAgICAgICAgIHJvb3Qt
PmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJn
dW1lbnRHUFIwKSksCkBAIC05OTk1LDcgKzk5OTUsNyBAQCB2b2lkIHRlc3RDaGlsbERpdihpbnQg
bnVtLCBpbnQgZGVuLCBpbnQgCiAgICAgICAgIHJvb3QtPmFwcGVuZE5ld0NvbnRyb2xWYWx1ZSgK
ICAgICAgICAgICAgIHByb2MsIFJldHVybiwgT3JpZ2luKCksCiAgICAgICAgICAgICByb290LT5h
cHBlbmROZXc8VmFsdWU+KAotICAgICAgICAgICAgICAgIHByb2MsIENoaWxsRGl2LCBPcmlnaW4o
KSwKKyAgICAgICAgICAgICAgICBwcm9jLCBjaGlsbChEaXYpLCBPcmlnaW4oKSwKICAgICAgICAg
ICAgICAgICByb290LT5hcHBlbmROZXc8Q29uc3QzMlZhbHVlPihwcm9jLCBPcmlnaW4oKSwgbnVt
KSwKICAgICAgICAgICAgICAgICByb290LT5hcHBlbmROZXc8Q29uc3QzMlZhbHVlPihwcm9jLCBP
cmlnaW4oKSwgZGVuKSkpOwogICAgICAgICAKQEAgLTEwMDEzLDcgKzEwMDEzLDcgQEAgdm9pZCB0
ZXN0Q2hpbGxEaXZUd2ljZShpbnQgbnVtMSwgaW50IGRlbgogICAgICAgICByb290LT5hcHBlbmRO
ZXc8VmFsdWU+KAogICAgICAgICAgICAgcHJvYywgQWRkLCBPcmlnaW4oKSwKICAgICAgICAgICAg
IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4oCi0gICAgICAgICAgICAgICAgcHJvYywgQ2hpbGxEaXYs
IE9yaWdpbigpLAorICAgICAgICAgICAgICAgIHByb2MsIGNoaWxsKERpdiksIE9yaWdpbigpLAog
ICAgICAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4oCiAgICAgICAgICAgICAgICAg
ICAgIHByb2MsIFRydW5jLCBPcmlnaW4oKSwKICAgICAgICAgICAgICAgICAgICAgcm9vdC0+YXBw
ZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBHUFJJbmZvOjphcmd1bWVu
dEdQUjApKSwKQEAgLTEwMDIxLDcgKzEwMDIxLDcgQEAgdm9pZCB0ZXN0Q2hpbGxEaXZUd2ljZShp
bnQgbnVtMSwgaW50IGRlbgogICAgICAgICAgICAgICAgICAgICBwcm9jLCBUcnVuYywgT3JpZ2lu
KCksCiAgICAgICAgICAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVl
Pihwcm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIxKSkpLAogICAgICAgICAgICAg
cm9vdC0+YXBwZW5kTmV3PFZhbHVlPigKLSAgICAgICAgICAgICAgICBwcm9jLCBDaGlsbERpdiwg
T3JpZ2luKCksCisgICAgICAgICAgICAgICAgcHJvYywgY2hpbGwoRGl2KSwgT3JpZ2luKCksCiAg
ICAgICAgICAgICAgICAgcm9vdC0+YXBwZW5kTmV3PFZhbHVlPigKICAgICAgICAgICAgICAgICAg
ICAgcHJvYywgVHJ1bmMsIE9yaWdpbigpLAogICAgICAgICAgICAgICAgICAgICByb290LT5hcHBl
bmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQUkluZm86OmFyZ3VtZW50
R1BSMikpLApAQCAtMTAwNDUsNyArMTAwNDUsNyBAQCB2b2lkIHRlc3RDaGlsbERpdjY0KGludDY0
X3QgbnVtLCBpbnQ2NF90CiAgICAgICAgIHJvb3QtPmFwcGVuZE5ld0NvbnRyb2xWYWx1ZSgKICAg
ICAgICAgICAgIHByb2MsIFJldHVybiwgT3JpZ2luKCksCiAgICAgICAgICAgICByb290LT5hcHBl
bmROZXc8VmFsdWU+KAotICAgICAgICAgICAgICAgIHByb2MsIENoaWxsRGl2LCBPcmlnaW4oKSwK
KyAgICAgICAgICAgICAgICBwcm9jLCBjaGlsbChEaXYpLCBPcmlnaW4oKSwKICAgICAgICAgICAg
ICAgICByb290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQ
UkluZm86OmFyZ3VtZW50R1BSMCksCiAgICAgICAgICAgICAgICAgcm9vdC0+YXBwZW5kTmV3PEFy
Z3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBHUFJJbmZvOjphcmd1bWVudEdQUjEpKSk7
CiAgICAgICAgIApAQCAtMTAwNjAsNyArMTAwNjAsNyBAQCB2b2lkIHRlc3RDaGlsbERpdjY0KGlu
dDY0X3QgbnVtLCBpbnQ2NF90CiAgICAgICAgIHJvb3QtPmFwcGVuZE5ld0NvbnRyb2xWYWx1ZSgK
ICAgICAgICAgICAgIHByb2MsIFJldHVybiwgT3JpZ2luKCksCiAgICAgICAgICAgICByb290LT5h
cHBlbmROZXc8VmFsdWU+KAotICAgICAgICAgICAgICAgIHByb2MsIENoaWxsRGl2LCBPcmlnaW4o
KSwKKyAgICAgICAgICAgICAgICBwcm9jLCBjaGlsbChEaXYpLCBPcmlnaW4oKSwKICAgICAgICAg
ICAgICAgICByb290LT5hcHBlbmROZXc8Q29uc3Q2NFZhbHVlPihwcm9jLCBPcmlnaW4oKSwgbnVt
KSwKICAgICAgICAgICAgICAgICByb290LT5hcHBlbmROZXc8Q29uc3Q2NFZhbHVlPihwcm9jLCBP
cmlnaW4oKSwgZGVuKSkpOwogICAgICAgICAKQEAgLTEwMTc5LDcgKzEwMTc5LDcgQEAgdm9pZCB0
ZXN0Q2hpbGxNb2RBcmcoaW50NjRfdCB2YWx1ZSkKICAgICBCYXNpY0Jsb2NrKiByb290ID0gcHJv
Yy5hZGRCbG9jaygpOwogCiAgICAgVmFsdWUqIGFyZ3VtZW50ID0gcm9vdC0+YXBwZW5kTmV3PEFy
Z3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBHUFJJbmZvOjphcmd1bWVudEdQUjApOwot
ICAgIFZhbHVlKiByZXN1bHQgPSByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIENoaWxsTW9k
LCBPcmlnaW4oKSwgYXJndW1lbnQsIGFyZ3VtZW50KTsKKyAgICBWYWx1ZSogcmVzdWx0ID0gcm9v
dC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBjaGlsbChNb2QpLCBPcmlnaW4oKSwgYXJndW1lbnQs
IGFyZ3VtZW50KTsKICAgICByb290LT5hcHBlbmROZXdDb250cm9sVmFsdWUocHJvYywgUmV0dXJu
LCBPcmlnaW4oKSwgcmVzdWx0KTsKIAogICAgIENIRUNLKCFjb21waWxlQW5kUnVuPGludDY0X3Q+
KHByb2MsIHZhbHVlKSk7CkBAIC0xMDE5Miw3ICsxMDE5Miw3IEBAIHZvaWQgdGVzdENoaWxsTW9k
QXJncyhpbnQ2NF90IG51bWVyYXRvciwKIAogICAgIFZhbHVlKiBhcmd1bWVudDEgPSByb290LT5h
cHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQUkluZm86OmFyZ3Vt
ZW50R1BSMCk7CiAgICAgVmFsdWUqIGFyZ3VtZW50MiA9IHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVu
dFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIxKTsKLSAgICBW
YWx1ZSogcmVzdWx0ID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBDaGlsbE1vZCwgT3Jp
Z2luKCksIGFyZ3VtZW50MSwgYXJndW1lbnQyKTsKKyAgICBWYWx1ZSogcmVzdWx0ID0gcm9vdC0+
YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBjaGlsbChNb2QpLCBPcmlnaW4oKSwgYXJndW1lbnQxLCBh
cmd1bWVudDIpOwogICAgIHJvb3QtPmFwcGVuZE5ld0NvbnRyb2xWYWx1ZShwcm9jLCBSZXR1cm4s
IE9yaWdpbigpLCByZXN1bHQpOwogCiAgICAgQ0hFQ0soY29tcGlsZUFuZFJ1bjxpbnQ2NF90Pihw
cm9jLCBudW1lcmF0b3IsIGRlbm9taW5hdG9yKSA9PSBjaGlsbE1vZChudW1lcmF0b3IsIGRlbm9t
aW5hdG9yKSk7CkBAIC0xMDIwNSw3ICsxMDIwNSw3IEBAIHZvaWQgdGVzdENoaWxsTW9kSW1tcyhp
bnQ2NF90IG51bWVyYXRvciwKIAogICAgIFZhbHVlKiBhcmd1bWVudDEgPSByb290LT5hcHBlbmRO
ZXc8Q29uc3Q2NFZhbHVlPihwcm9jLCBPcmlnaW4oKSwgbnVtZXJhdG9yKTsKICAgICBWYWx1ZSog
YXJndW1lbnQyID0gcm9vdC0+YXBwZW5kTmV3PENvbnN0NjRWYWx1ZT4ocHJvYywgT3JpZ2luKCks
IGRlbm9taW5hdG9yKTsKLSAgICBWYWx1ZSogcmVzdWx0ID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVl
Pihwcm9jLCBDaGlsbE1vZCwgT3JpZ2luKCksIGFyZ3VtZW50MSwgYXJndW1lbnQyKTsKKyAgICBW
YWx1ZSogcmVzdWx0ID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBjaGlsbChNb2QpLCBP
cmlnaW4oKSwgYXJndW1lbnQxLCBhcmd1bWVudDIpOwogICAgIHJvb3QtPmFwcGVuZE5ld0NvbnRy
b2xWYWx1ZShwcm9jLCBSZXR1cm4sIE9yaWdpbigpLCByZXN1bHQpOwogCiAgICAgQ0hFQ0soY29t
cGlsZUFuZFJ1bjxpbnQ2NF90Pihwcm9jLCBudW1lcmF0b3IsIGRlbm9taW5hdG9yKSA9PSBjaGls
bE1vZChudW1lcmF0b3IsIGRlbm9taW5hdG9yKSk7CkBAIC0xMDIxOCw3ICsxMDIxOCw3IEBAIHZv
aWQgdGVzdENoaWxsTW9kQXJnMzIoaW50MzJfdCB2YWx1ZSkKIAogICAgIFZhbHVlKiBhcmd1bWVu
dCA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgVHJ1bmMsIE9yaWdpbigpLAogICAgICAg
ICByb290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQUklu
Zm86OmFyZ3VtZW50R1BSMCkpOwotICAgIFZhbHVlKiByZXN1bHQgPSByb290LT5hcHBlbmROZXc8
VmFsdWU+KHByb2MsIENoaWxsTW9kLCBPcmlnaW4oKSwgYXJndW1lbnQsIGFyZ3VtZW50KTsKKyAg
ICBWYWx1ZSogcmVzdWx0ID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBjaGlsbChNb2Qp
LCBPcmlnaW4oKSwgYXJndW1lbnQsIGFyZ3VtZW50KTsKICAgICByb290LT5hcHBlbmROZXdDb250
cm9sVmFsdWUocHJvYywgUmV0dXJuLCBPcmlnaW4oKSwgcmVzdWx0KTsKIAogICAgIENIRUNLKCFj
b21waWxlQW5kUnVuPGludDMyX3Q+KHByb2MsIHZhbHVlKSk7CkBAIC0xMDIzMyw3ICsxMDIzMyw3
IEBAIHZvaWQgdGVzdENoaWxsTW9kQXJnczMyKGludDMyX3QgbnVtZXJhdG8KICAgICAgICAgcm9v
dC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBHUFJJbmZvOjph
cmd1bWVudEdQUjApKTsKICAgICBWYWx1ZSogYXJndW1lbnQyID0gcm9vdC0+YXBwZW5kTmV3PFZh
bHVlPihwcm9jLCBUcnVuYywgT3JpZ2luKCksCiAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxBcmd1
bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIxKSk7Ci0g
ICAgVmFsdWUqIHJlc3VsdCA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgQ2hpbGxNb2Qs
IE9yaWdpbigpLCBhcmd1bWVudDEsIGFyZ3VtZW50Mik7CisgICAgVmFsdWUqIHJlc3VsdCA9IHJv
b3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgY2hpbGwoTW9kKSwgT3JpZ2luKCksIGFyZ3VtZW50
MSwgYXJndW1lbnQyKTsKICAgICByb290LT5hcHBlbmROZXdDb250cm9sVmFsdWUocHJvYywgUmV0
dXJuLCBPcmlnaW4oKSwgcmVzdWx0KTsKIAogICAgIENIRUNLKGNvbXBpbGVBbmRSdW48aW50MzJf
dD4ocHJvYywgbnVtZXJhdG9yLCBkZW5vbWluYXRvcikgPT0gY2hpbGxNb2QobnVtZXJhdG9yLCBk
ZW5vbWluYXRvcikpOwpAQCAtMTAyNDYsNyArMTAyNDYsNyBAQCB2b2lkIHRlc3RDaGlsbE1vZElt
bXMzMihpbnQzMl90IG51bWVyYXRvCiAKICAgICBWYWx1ZSogYXJndW1lbnQxID0gcm9vdC0+YXBw
ZW5kTmV3PENvbnN0MzJWYWx1ZT4ocHJvYywgT3JpZ2luKCksIG51bWVyYXRvcik7CiAgICAgVmFs
dWUqIGFyZ3VtZW50MiA9IHJvb3QtPmFwcGVuZE5ldzxDb25zdDMyVmFsdWU+KHByb2MsIE9yaWdp
bigpLCBkZW5vbWluYXRvcik7Ci0gICAgVmFsdWUqIHJlc3VsdCA9IHJvb3QtPmFwcGVuZE5ldzxW
YWx1ZT4ocHJvYywgQ2hpbGxNb2QsIE9yaWdpbigpLCBhcmd1bWVudDEsIGFyZ3VtZW50Mik7Cisg
ICAgVmFsdWUqIHJlc3VsdCA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgY2hpbGwoTW9k
KSwgT3JpZ2luKCksIGFyZ3VtZW50MSwgYXJndW1lbnQyKTsKICAgICByb290LT5hcHBlbmROZXdD
b250cm9sVmFsdWUocHJvYywgUmV0dXJuLCBPcmlnaW4oKSwgcmVzdWx0KTsKIAogICAgIENIRUNL
KGNvbXBpbGVBbmRSdW48aW50MzJfdD4ocHJvYywgbnVtZXJhdG9yLCBkZW5vbWluYXRvcikgPT0g
Y2hpbGxNb2QobnVtZXJhdG9yLCBkZW5vbWluYXRvcikpOwpAQCAtMTAzMTMsNyArMTAzMTMsNyBA
QCB2b2lkIHRlc3RTd2l0Y2hDaGlsbERpdih1bnNpZ25lZCBkZWdyZWUsCiAgICAgICAgIG5ld0Js
b2NrLT5hcHBlbmROZXdDb250cm9sVmFsdWUoCiAgICAgICAgICAgICBwcm9jLCBSZXR1cm4sIE9y
aWdpbigpLAogICAgICAgICAgICAgbmV3QmxvY2stPmFwcGVuZE5ldzxWYWx1ZT4oCi0gICAgICAg
ICAgICAgICAgcHJvYywgQ2hpbGxEaXYsIE9yaWdpbigpLCAoaSAmIDEpID8gcmlnaHQgOiBsZWZ0
LCAoaSAmIDEpID8gbGVmdCA6IHJpZ2h0KSk7CisgICAgICAgICAgICAgICAgcHJvYywgY2hpbGwo
RGl2KSwgT3JpZ2luKCksIChpICYgMSkgPyByaWdodCA6IGxlZnQsIChpICYgMSkgPyBsZWZ0IDog
cmlnaHQpKTsKICAgICAgICAgCiAgICAgICAgIHN3aXRjaFZhbHVlLT5hcHBlbmRDYXNlKFN3aXRj
aENhc2UoZ2FwICogaSwgRnJlcXVlbnRlZEJsb2NrKG5ld0Jsb2NrKSkpOwogICAgIH0KQEAgLTEy
Njc0LDcgKzEyNjc0LDcgQEAgdm9pZCB0ZXN0RW50cnlTd2l0Y2hXaXRoQ29tbW9uUGF0aHMoKQog
ICAgIGVuZC0+YXBwZW5kTmV3PFZhbHVlPigKICAgICAgICAgcHJvYywgUmV0dXJuLCBPcmlnaW4o
KSwKICAgICAgICAgZW5kLT5hcHBlbmROZXc8VmFsdWU+KAotICAgICAgICAgICAgcHJvYywgQ2hp
bGxNb2QsIE9yaWdpbigpLAorICAgICAgICAgICAgcHJvYywgY2hpbGwoTW9kKSwgT3JpZ2luKCks
CiAgICAgICAgICAgICBwaGksIGVuZC0+YXBwZW5kTmV3PFZhbHVlPigKICAgICAgICAgICAgICAg
ICBwcm9jLCBUcnVuYywgT3JpZ2luKCksCiAgICAgICAgICAgICAgICAgZW5kLT5hcHBlbmROZXc8
QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQUkluZm86OmFyZ3VtZW50R1BSMikp
KSk7CkBAIC0xMjc5MSw3ICsxMjc5MSw3IEBAIHZvaWQgdGVzdEVudHJ5U3dpdGNoV2l0aENvbW1v
blBhdGhzQW5kTm8KICAgICBlbmQtPmFwcGVuZE5ldzxWYWx1ZT4oCiAgICAgICAgIHByb2MsIFJl
dHVybiwgT3JpZ2luKCksCiAgICAgICAgIGVuZC0+YXBwZW5kTmV3PFZhbHVlPigKLSAgICAgICAg
ICAgIHByb2MsIENoaWxsTW9kLCBPcmlnaW4oKSwKKyAgICAgICAgICAgIHByb2MsIGNoaWxsKE1v
ZCksIE9yaWdpbigpLAogICAgICAgICAgICAgcGhpLCBlbmQtPmFwcGVuZE5ldzxWYWx1ZT4oCiAg
ICAgICAgICAgICAgICAgcHJvYywgVHJ1bmMsIE9yaWdpbigpLAogICAgICAgICAgICAgICAgIGVu
ZC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBHUFJJbmZvOjph
cmd1bWVudEdQUjIpKSkpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExPdXRw
dXQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMT3V0cHV0
LmNwcAkocmV2aXNpb24gMjA2NTI0KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExP
dXRwdXQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNTEsNyArMTUxLDcgQEAgTFZhbHVlIE91dHB1
dDo6ZGl2KExWYWx1ZSBsZWZ0LCBMVmFsdWUgcgogCiBMVmFsdWUgT3V0cHV0OjpjaGlsbERpdihM
VmFsdWUgbGVmdCwgTFZhbHVlIHJpZ2h0KQogewotICAgIHJldHVybiBtX2Jsb2NrLT5hcHBlbmRO
ZXc8QjM6OlZhbHVlPihtX3Byb2MsIEIzOjpDaGlsbERpdiwgb3JpZ2luKCksIGxlZnQsIHJpZ2h0
KTsKKyAgICByZXR1cm4gbV9ibG9jay0+YXBwZW5kTmV3PEIzOjpWYWx1ZT4obV9wcm9jLCBjaGls
bChCMzo6RGl2KSwgb3JpZ2luKCksIGxlZnQsIHJpZ2h0KTsKIH0KIAogTFZhbHVlIE91dHB1dDo6
bW9kKExWYWx1ZSBsZWZ0LCBMVmFsdWUgcmlnaHQpCkBAIC0xNjEsNyArMTYxLDcgQEAgTFZhbHVl
IE91dHB1dDo6bW9kKExWYWx1ZSBsZWZ0LCBMVmFsdWUgcgogCiBMVmFsdWUgT3V0cHV0OjpjaGls
bE1vZChMVmFsdWUgbGVmdCwgTFZhbHVlIHJpZ2h0KQogewotICAgIHJldHVybiBtX2Jsb2NrLT5h
cHBlbmROZXc8QjM6OlZhbHVlPihtX3Byb2MsIEIzOjpDaGlsbE1vZCwgb3JpZ2luKCksIGxlZnQs
IHJpZ2h0KTsKKyAgICByZXR1cm4gbV9ibG9jay0+YXBwZW5kTmV3PEIzOjpWYWx1ZT4obV9wcm9j
LCBjaGlsbChCMzo6TW9kKSwgb3JpZ2luKCksIGxlZnQsIHJpZ2h0KTsKIH0KIAogTFZhbHVlIE91
dHB1dDo6bmVnKExWYWx1ZSB2YWx1ZSkKSW5kZXg6IFdlYnNpdGVzL3dlYmtpdC5vcmcvQ2hhbmdl
TG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFdlYnNpdGVzL3dlYmtpdC5vcmcvQ2hhbmdlTG9nCShyZXZpc2lv
biAyMDY1MjQpCisrKyBXZWJzaXRlcy93ZWJraXQub3JnL0NoYW5nZUxvZwkod29ya2luZyBjb3B5
KQpAQCAtMSwzICsxLDE1IEBACisyMDE2LTA5LTI4ICBGaWxpcCBQaXpsbyAgPGZwaXpsb0BhcHBs
ZS5jb20+CisKKyAgICAgICAgQjMgb3Bjb2RlcyBzaG91bGQgbGVhdmUgcm9vbSBmb3IgZmxhZ3MK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE2MjY5Mgor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorICAgICAgICAKKyAgICAgICAg
VXBkYXRlZCB0aGUgZG9jdW1lbnRhdGlvbiB0byB0YWxrIGFib3V0IEtpbmQgYW5kIHRoZSBpc0No
aWxsIGJpdCwgYW5kIHRvIHJlbW92ZQorICAgICAgICBDaGlsbERpdi9DaGlsbE1vZC4KKworICAg
ICAgICAqIGRvY3MvYjMvaW50ZXJtZWRpYXRlLXJlcHJlc2VudGF0aW9uLmh0bWw6CisKIDIwMTYt
MDktMjcgIEpvc2VwaCBQZWNvcmFybyAgPHBlY29yYXJvQGFwcGxlLmNvbT4KIAogICAgICAgICBV
cGRhdGUgc3R5bGUgZ3VpZGUgZm9yICNwcmFnbWEgb25jZQpJbmRleDogV2Vic2l0ZXMvd2Via2l0
Lm9yZy9kb2NzL2IzL2ludGVybWVkaWF0ZS1yZXByZXNlbnRhdGlvbi5odG1sCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFdlYnNpdGVzL3dlYmtpdC5vcmcvZG9jcy9iMy9pbnRlcm1lZGlhdGUtcmVwcmVzZW50YXRp
b24uaHRtbAkocmV2aXNpb24gMjA2NTI0KQorKysgV2Vic2l0ZXMvd2Via2l0Lm9yZy9kb2NzL2Iz
L2ludGVybWVkaWF0ZS1yZXByZXNlbnRhdGlvbi5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC03OCw5
ICs3OCwxNCBAQAogICAgIDxoMj5WYWx1ZXM8L2gyPgogCiAgICAgPHA+VmFyaWFibGVzLCBhbmQg
dGhlIGluc3RydWN0aW9ucyB0aGF0IGRlZmluZSB0aGVtLCBhcmUgcmVwcmVzZW50ZWQgdXNpbmcg
dGhlIFZhbHVlIG9iamVjdC4KLSAgICAgIFRoZSBWYWx1ZSBvYmplY3QgaGFzIGEgcmV0dXJuIHR5
cGUsIGFuIG9wY29kZSwgYW5kIHplcm8gb3IgbW9yZSBjaGlsZHJlbi4gIENoaWxkcmVuIGFyZQor
ICAgICAgVGhlIFZhbHVlIG9iamVjdCBoYXMgYSByZXR1cm4gdHlwZSwgYSBraW5kLCBhbmQgemVy
byBvciBtb3JlIGNoaWxkcmVuLiAgQ2hpbGRyZW4gYXJlCiAgICAgICByZWZlcmVuY2VzIHRvIG90
aGVyIFZhbHVlcy4gIFRob3NlIHZhbHVlcyBhcmUgdXNlZCBhcyBpbnB1dCB0byB0aGUgaW5zdHJ1
Y3Rpb24gdGhhdAogICAgICAgY29tcHV0ZXMgdGhpcyB2YWx1ZS48L3A+CisgICAgCisgICAgPHA+
VGhlIHZhbHVlIGtpbmQgaXMgYSBjb21iaW5hdGlvbiBvZiBhbiBvcGNvZGUgYW5kIG9wdGlvbmFs
IGZsYWdzLiBUaGUgZmxhZ3MgYWxsb3cgYSBzaW5nbGUKKyAgICAgIG9wY29kZSB0byBoYXZlIG1h
bnkgdmFyaWFudHMuIEZvciBleGFtcGxlLCBEaXYgYW5kIE1vZCBtYXkgaGF2ZSB0aGUgQ2hpbGwg
ZmxhZyBzZXQgdG8gaW5kaWNhdGUKKyAgICAgIHRoYXQgdGhleSBzaG91bGQgbm90IHRyYXAgb24g
Y29ybmVyIGNhc2VzLjwvcD4KKyAgICAKICAgICA8cD5WYWx1ZXMgYWxzbyBoYXZlIGEgdW5pcXVl
IDMyLWJpdCBpbmRleCB0aGF0IGlzIHVzZWQgYXMgdGhlIG5hbWUuPC9wPgogICAgIAogICAgIDxw
PkV4YW1wbGU6PC9wPgpAQCAtMjMxLDMxICsyMzYsMzYgQEAKICAgICAgICAgYWNjb3JkaW5nIHRv
IHRoZSBJRUVFIDg1NCBzcGVjLjwvZGQ+CiAKICAgICAgIDxkdD5UIERpdihULCBUKTwvZHQ+Ci0g
ICAgICA8ZGQ+V29ya3Mgd2l0aCBhbnkgdHlwZSBleGNlcHQgVm9pZC4gIEZvciBpbnRlZ2VyIHR5
cGVzLCB0aGlzIHJlcHJlc2VudHMgc2lnbmVkIGRpdmlzaW9uCi0gICAgICAgIHdpdGggcm91bmQt
dG8temVyby4gIEl0cyBiZWhhdmlvciBpcyB1bmRlZmluZWQgZm9yIHgvMCBvciAtMjxzdXA+MzE8
L3N1cD4vLTEuICBGb3IgZmxvYXRpbmcKLSAgICAgICAgcG9pbnQgdHlwZXMsIHRoaXMgcmVwcmVz
ZW50cyBkaXZpc2lvbiBhY2NvcmRpbmcgdG8gdGhlIElFRUUgODU0IHNwZWMuPC9kZD4KKyAgICAg
IDxkZD4KKyAgICAgICAgPHA+V29ya3Mgd2l0aCBhbnkgdHlwZSBleGNlcHQgVm9pZC4gIEZvciBp
bnRlZ2VyIHR5cGVzLCB0aGlzIHJlcHJlc2VudHMgc2lnbmVkCisgICAgICAgICAgZGl2aXNpb24g
d2l0aCByb3VuZC10by16ZXJvLiAgQnkgZGVmYXVsdCwgaXRzIGJlaGF2aW9yIGlzIHVuZGVmaW5l
ZCBmb3IgeC8wIG9yCisgICAgICAgICAgLTI8c3VwPjMxPC9zdXA+Ly0xLiAgRm9yIGZsb2F0aW5n
IHBvaW50IHR5cGVzLCB0aGlzIHJlcHJlc2VudHMgZGl2aXNpb24gYWNjb3JkaW5nCisgICAgICAg
ICAgdG8gdGhlIElFRUUgODU0IHNwZWMuPC9wPgorICAgICAgICA8cD5JbnRlZ2VyIERpdiBtYXkg
aGF2ZSB0aGUgQ2hpbGwgZmxhZyBzZXQuIFlvdSBjYW4gY3JlYXRlIGEgQ2hpbGwgRGl2IGJ5IHNh
eWluZworICAgICAgICAgIDxjb2RlPmNoaWxsKERpdik8L2NvZGU+IGluc3RlYWQgb2YgPGNvZGU+
RGl2PC9jb2RlPjsgdGhlIGZvcm1lciBjcmVhdGVzIGEgS2luZAorICAgICAgICAgIHRoYXQgaGFz
IERpdiBhcyB0aGUgb3Bjb2RlIGFuZCBoYXMgdGhlIENoaWxsIGJpdCBzZXQuIEFuIG9wZXJhdGlv
biBpcyBzYWlkIHRvIGJlCisgICAgICAgICAgY2hpbGwgaWYgaXQgcmV0dXJucyBhIHNlbnNpYmxl
IHZhbHVlIHdoZW5ldmVyIGl0cyBub24tY2hpbGwgZm9ybSB3b3VsZCBoYXZlIGhhZAorICAgICAg
ICAgIHVuZGVmaW5lZCBiZWhhdmlvci4gQ2hpbGwgRGl2IHR1cm5zIHgvMCBpbnRvIDAgYW5kIC0y
PHN1cD4zMTwvc3VwPi8tMSBpbnRvCisgICAgICAgICAgLTI8c3VwPjMxPC9zdXA+LiBXZSByZWNv
Z25pemUgdGhpcyBpbiBJUiBiZWNhdXNlIGl0J3MgZXhhY3RseSB0aGUgc2VtYW50aWNzIG9mCisg
ICAgICAgICAgZGl2aXNpb24gb24gQVJNNjQsIGFuZCBpdCdzIGFsc28gZXhhY3RseSB0aGUgc2Vt
YW50aWNzIHRoYXQgSmF2YVNjcmlwdCB3YW50cyBmb3IKKyAgICAgICAgICAiKHgveSl8MCIuPC9w
PgorICAgICAgPC9kZD4KIAogICAgICAgPGR0PlQgTW9kKFQsIFQpPC9kdD4KLSAgICAgIDxkZD5X
b3JrcyB3aXRoIGFueSB0eXBlIGV4Y2VwdCBWb2lkLiAgRm9yIGludGVnZXIgdHlwZXMsIHRoaXMg
cmVwcmVzZW50cyBzaWduZWQgbW9kdWxvLgotICAgICAgICBJdHMgYmVoYXZpb3IgaXMgdW5kZWZp
bmVkIGZvciB4JTAgb3IgLTI8c3VwPjMxPC9zdXA+JS0xLiAgRm9yIGZsb2F0aW5nIHBvaW50IHR5
cGVzLCB0aGlzCi0gICAgICAgIHJlcHJlc2VudHMgbW9kdWxvIGFjY29yZGluZyB0byAiZm1vZCgp
Ii48L2RkPgorICAgICAgPGRkPgorICAgICAgICA8cD5Xb3JrcyB3aXRoIGFueSB0eXBlIGV4Y2Vw
dCBWb2lkLiAgRm9yIGludGVnZXIgdHlwZXMsIHRoaXMgcmVwcmVzZW50cyBzaWduZWQKKyAgICAg
ICAgICBtb2R1bG8uIEJ5IGRlZmF1bHQsIGl0cyBiZWhhdmlvciBpcyB1bmRlZmluZWQgZm9yIHgl
MCBvciAtMjxzdXA+MzE8L3N1cD4lLTEuICBGb3IKKyAgICAgICAgICBmbG9hdGluZyBwb2ludCB0
eXBlcywgdGhpcyByZXByZXNlbnRzIG1vZHVsbyBhY2NvcmRpbmcgdG8gImZtb2QoKSIuPC9wPgor
ICAgICAgICA8cD5JbnRlZ2VyIE1vZCBtYXkgaGF2ZSB0aGUgQ2hpbGwgZmxhZyBzZXQuIFlvdSBj
YW4gY3JlYXRlIGEgQ2hpbGwgTW9kIGJ5IHNheWluZworICAgICAgICAgIDxjb2RlPmNoaWxsKE1v
ZCk8L2NvZGU+LiBDaGlsbCBNb2QgdHVybnMgeCUwIGludG8gMCBhbmQgLTI8c3VwPjMxPC9zdXA+
JS0xIGludG8KKyAgICAgICAgICAwLjwvcD4KKyAgICAgIDwvZGQ+CiAKICAgICAgIDxkdD5UIE5l
ZyhUKTwvZHQ+CiAgICAgICA8ZGQ+V29ya3Mgd2l0aCBhbnkgdHlwZSBleGNlcHQgVm9pZC4gIEZv
ciBpbnRlZ2VyIHR5cGVzLCB0aGlzIHJlcHJlc2VudHMgdHdvcy1jb21wbGVtZW50CiAgICAgICAg
IG5lZ2F0aW9uLiAgRm9yIGZsb2F0aW5nIHBvaW50IHR5cGVzLCB0aGlzIHJlcHJlc2VudHMgbmVn
YXRpb24gYWNjb3JkaW5nIHRvIHRoZSBJRUVFCiAgICAgICAgIHNwZWMuPC9kZD4KIAotICAgICAg
PGR0PlQgQ2hpbGxEaXYoVCwgVCk8L2R0PgotICAgICAgPGRkPkNoaWxsIGRpdmlzaW9uLiAgVmFs
aWQgZm9yIEludDMyIGFuZCBJbnQ2NC4gIEFuIG9wZXJhdGlvbiBpcyBzYWlkIHRvIGJlIGNoaWxs
IGlmIGl0Ci0gICAgICAgIHJldHVybnMgYSBzZW5zaWJsZSB2YWx1ZSB3aGVuZXZlciBpdHMgbm9u
LWNoaWxsIGZvcm0gd291bGQgaGF2ZSBoYWQgdW5kZWZpbmVkIGJlaGF2aW9yLgotICAgICAgICBD
aGlsbERpdiB0dXJucyB4LzAgaW50byAwIGFuZCAtMjxzdXA+MzE8L3N1cD4vLTEgaW50byAtMjxz
dXA+MzE8L3N1cD4uICBUaGlzIGlzIGEgc2VwYXJhdGUgb3Bjb2RlCi0gICAgICAgIGJlY2F1c2Ug
aXQncyBleGFjdGx5IHRoZSBzZW1hbnRpY3Mgb2YgZGl2aXNpb24gb24gQVJNNjQsIGFuZCBpdCdz
IGFsc28gZXhhY3RseSB0aGUKLSAgICAgICAgc2VtYW50aWNzIHRoYXQgSmF2YVNjcmlwdCB3YW50
cyBmb3IgIih4L3kpfDAiLjwvZGQ+Ci0KLSAgICAgIDxkdD5UIENoaWxsTW9kKFQsIFQpPC9kdD4K
LSAgICAgIDxkZD5DaGlsbCBtb2R1bG8uICBWYWxpZCBmb3IgSW50MzIgYW5kIEludDY0LiAgQ2hs
bE1vZCB0dXJucyB4JTAgaW50byAwIGFuZAotICAgICAgICAtMjxzdXA+MzE8L3N1cD4lLTEgaW50
byAwLjwvZGQ+Ci0KICAgICAgIDxkdD5UIEJpdEFuZChULCBUKTwvZHQ+CiAgICAgICA8ZGQ+Qml0
d2lzZSBhbmQuICBWYWxpZCBmb3IgSW50MzIgYW5kIEludDY0LjwvZGQ+CiAK
</data>
<flag name="review"
          id="313373"
          type_id="1"
          status="+"
          setter="keith_miller"
    />
          </attachment>
      

    </bug>

</bugzilla>