<?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>80874</bug_id>
          
          <creation_ts>2012-03-12 13:05:55 -0700</creation_ts>
          <short_desc>Implement a fast path when setting CSS properties with keywords from JS.</short_desc>
          <delta_ts>2012-03-20 07:46:53 -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>New Bugs</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Alexis Menard (darktears)">menard</reporter>
          <assigned_to name="Alexis Menard (darktears)">menard</assigned_to>
          <cc>benjamin</cc>
    
    <cc>darin</cc>
    
    <cc>dglazkov</cc>
    
    <cc>kling</cc>
    
    <cc>koivisto</cc>
    
    <cc>macpherson</cc>
    
    <cc>tonikitoo</cc>
    
    <cc>tony</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>576429</commentid>
    <comment_count>0</comment_count>
    <who name="Alexis Menard (darktears)">menard</who>
    <bug_when>2012-03-12 13:05:55 -0700</bug_when>
    <thetext>Implement a fast path when setting CSS properties with keywords from JS.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>576438</commentid>
    <comment_count>1</comment_count>
      <attachid>131388</attachid>
    <who name="Alexis Menard (darktears)">menard</who>
    <bug_when>2012-03-12 13:09:42 -0700</bug_when>
    <thetext>Created attachment 131388
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>576447</commentid>
    <comment_count>2</comment_count>
    <who name="Alexis Menard (darktears)">menard</who>
    <bug_when>2012-03-12 13:16:04 -0700</bug_when>
    <thetext>Consider this benchmark :

&lt;html&gt;
&lt;head&gt;
&lt;script src=&quot;../resources/runner.js&quot;&gt;&lt;/script&gt;
&lt;style&gt;
#test {
    background: green;
    height: 200px;
    width: 200px;
    border: 20px solid blue;
    padding-top: 10px;
    color: yellow;
    position: static;
}
&lt;/style&gt;
&lt;/head&gt;
&lt;body&gt;
&lt;div id=&quot;test&quot;&gt;&lt;/div&gt;
&lt;/body&gt;
&lt;script&gt;
var div = document.getElementById(&quot;test&quot;);
PerfTestRunner.run(function() {
    div.style.border = &quot;&quot;;
    div.style.border = &quot;20px dotted red&quot;;
    div.style.paddingTop = &quot;&quot;;
    div.style.paddingTop = &quot;30px&quot;;
    div.style.position = &quot;&quot;;
    div.style.position = &quot;static&quot;;
}, 100000);
&lt;/script&gt;
&lt;/html&gt;


On my machine without the patch it executes with an average of 670.

On my machine with the patch it executes with an average of 542.

For comparison :
Opera 11.61 average 877
Firefox 10 average 1936
IE10 (Win 8 consumer preview) 2824

I think the patch is worth it. Feel free to provide feedback (I&apos;m sure the classes/variable names suck for example).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>576493</commentid>
    <comment_count>3</comment_count>
      <attachid>131388</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-03-12 14:06:17 -0700</bug_when>
    <thetext>Comment on attachment 131388
Patch

Attachment 131388 did not pass chromium-ews (chromium-xvfb):
Output: http://queues.webkit.org/results/11947063

New failing tests:
fast/text/international/text-combine-parser-test.html
fast/text/international/spaces-combined-in-vertical-text.html
fast/dynamic/text-combine.html</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>576525</commentid>
    <comment_count>4</comment_count>
      <attachid>131412</attachid>
    <who name="Alexis Menard (darktears)">menard</who>
    <bug_when>2012-03-12 14:27:17 -0700</bug_when>
    <thetext>Created attachment 131412
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>576530</commentid>
    <comment_count>5</comment_count>
    <who name="Alexis Menard (darktears)">menard</who>
    <bug_when>2012-03-12 14:28:20 -0700</bug_when>
    <thetext>(In reply to comment #4)
&gt; Created an attachment (id=131412) [details]
&gt; Patch

Should fix the regressions.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>576535</commentid>
    <comment_count>6</comment_count>
      <attachid>131388</attachid>
    <who name="Andreas Kling">kling</who>
    <bug_when>2012-03-12 14:31:27 -0700</bug_when>
    <thetext>Comment on attachment 131388
Patch

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

Dumping comments.

&gt; Source/WebCore/css/CSSParser.cpp:575
&gt; +class CSSPropertyParser {

CSSPropertyParser is not an appropriate name for this class, as it&apos;s really only an information container.
KeywordPropertyMapEntry or similar would be more descriptive.

&gt; Source/WebCore/css/CSSParser.cpp:579
&gt; +    CSSPropertyParser()
&gt; +        : m_acceptedKeywords(0)
&gt; +        , m_length(0)

Missing member initializations in this constructor.

&gt; Source/WebCore/css/CSSParser.cpp:593
&gt; +    void setRange(int min, int max) { m_hasRange = true; m_minKeyword = min; m_maxKeyword = max; }

This should be done via a constructor rather than a function call.

&gt; Source/WebCore/css/CSSParser.cpp:611
&gt; +typedef HashMap&lt;int, CSSPropertyParser&gt; propertiesMap;

&apos;propertiesMap&apos; is not an appropriate type name. I would suggest something like &quot;KeywordPropertyMap&quot;

&gt; Source/WebCore/css/CSSParser.cpp:617
&gt; +        static const int positionKeywords[] = { CSSValueStatic, CSSValueRelative, CSSValueAbsolute, CSSValueFixed };
&gt; +        SET_PROPERTY_PARSER_MAP_ENTRY(map, CSSPropertyPosition, positionKeywords);

This blob of code is very ugly.
We are trading readability for performance in this patch, so we need to make sure the new code is as understandable as possible.
For starters, these should be a single line only, it should be possible with a template.

&gt; Source/WebCore/css/CSSParser.cpp:815
&gt; +    cssString.characters = const_cast&lt;UChar*&gt;(string.characters());

It&apos;s unfortunate that we have to call characters() here, as that may trigger 8-to-16-bit string conversion.
Not specific to this patch, just noting it.

&gt; Source/WebCore/css/CSSParser.cpp:824
&gt; +    RefPtr&lt;CSSValuePool&gt; cssValuePool = document ? document-&gt;cssValuePool() : 0;

There&apos;s no need to ref the CSSValuePool here.

&gt; Source/WebCore/css/CSSParser.cpp:850
&gt; +    for (unsigned i = 0 ; !validPrimitive &amp;&amp; i &lt; property.length(); ++i) {

Style, space after 0.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>576562</commentid>
    <comment_count>7</comment_count>
    <who name="Andreas Kling">kling</who>
    <bug_when>2012-03-12 14:49:53 -0700</bug_when>
    <thetext>Is this affecting real-world web pages? I&apos;m surprised that these types of property assignments would be a bottle neck.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>576586</commentid>
    <comment_count>8</comment_count>
    <who name="Alexis Menard (darktears)">menard</who>
    <bug_when>2012-03-12 15:03:26 -0700</bug_when>
    <thetext>(In reply to comment #7)
&gt; Is this affecting real-world web pages? I&apos;m surprised that these types of property assignments would be a bottle neck.

Google maps is setting a lot properties(CSSPropertyDisplay, CSSPropertyPosition, CSSPropertyVisibility) from JS everytime you zoom or move the mouse to move the map.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>576736</commentid>
    <comment_count>9</comment_count>
    <who name="Benjamin Poulain">benjamin</who>
    <bug_when>2012-03-12 16:57:46 -0700</bug_when>
    <thetext>I suspect this might also help on Dromaeo, that is worth testing.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>576849</commentid>
    <comment_count>10</comment_count>
      <attachid>131412</attachid>
    <who name="Luke Macpherson">macpherson</who>
    <bug_when>2012-03-12 18:19:34 -0700</bug_when>
    <thetext>Comment on attachment 131412
Patch

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

&gt; Source/WebCore/css/CSSParser.cpp:576
&gt; +class CSSPropertyParser {

I would re-write this class along the lines of CSSStyleApplyProperty&apos;s ApplyPropertyExpanding. It&apos;s more verbose, but you can loose all the member variables, and produce optimal code for each case.

&gt; Source/WebCore/css/CSSParser.cpp:599
&gt; +    unsigned length() const { return m_length; }

Can loose all these getters and wrap the range checking logic into this class. This interface leaks all the internals unnecessarily.

&gt; Source/WebCore/css/CSSParser.cpp:609
&gt; +#define SET_PROPERTY_PARSER_MAP_ENTRY(map, propID, array) \

Drop the macro, it&apos;s cleaner. :)

&gt; Source/WebCore/css/CSSParser.cpp:856
&gt; +    }

This section (846-856) should be a function on CSSPropertyParser, and the acceptedKeywords, minKeyword and maxKeyword functions should go away.
Then 843-856 becomes: if (!propertyForID(propertyId)-&gt;testId(valueID)) return false; // or similar

&gt; Source/WebCore/css/CSSParser.cpp:1335
&gt; +        }

Oh look, that code is repeated here. All the more reason to factor it out.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>576865</commentid>
    <comment_count>11</comment_count>
    <who name="Alexis Menard (darktears)">menard</who>
    <bug_when>2012-03-12 18:29:13 -0700</bug_when>
    <thetext>Dromaeo perf tests : https://gist.github.com/2025940

green is with the patch.

jslib-modify-jquery and cssquery-jquery seems to improve (they seem to hit the new code path according to my quick debug).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>577581</commentid>
    <comment_count>12</comment_count>
    <who name="Alexis Menard (darktears)">menard</who>
    <bug_when>2012-03-13 11:20:28 -0700</bug_when>
    <thetext>(In reply to comment #11)
&gt; Dromaeo perf tests : https://gist.github.com/2025940
&gt; 
&gt; green is with the patch.
&gt; 
&gt; jslib-modify-jquery and cssquery-jquery seems to improve (they seem to hit the new code path according to my quick debug).

https://gist.github.com/2030135

with the chromium port. Dromaeo/jslib-modify-jquery.html shows up as an improvement.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>577588</commentid>
    <comment_count>13</comment_count>
      <attachid>131677</attachid>
    <who name="Alexis Menard (darktears)">menard</who>
    <bug_when>2012-03-13 11:22:45 -0700</bug_when>
    <thetext>Created attachment 131677
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>577603</commentid>
    <comment_count>14</comment_count>
      <attachid>131683</attachid>
    <who name="Alexis Menard (darktears)">menard</who>
    <bug_when>2012-03-13 11:33:33 -0700</bug_when>
    <thetext>Created attachment 131683
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>577670</commentid>
    <comment_count>15</comment_count>
      <attachid>131694</attachid>
    <who name="Alexis Menard (darktears)">menard</who>
    <bug_when>2012-03-13 12:33:59 -0700</bug_when>
    <thetext>Created attachment 131694
CPU Monitor while browsing Google Maps...

Attached a screenshot of Instruments showing the CPU usage while browsing Google Maps. I did the same manipulation (zooming and panning) with and without the patch. The RUN1 (bottom in the image) is with the patch. It seems that the CPU usage is slightly better.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>578026</commentid>
    <comment_count>16</comment_count>
      <attachid>131683</attachid>
    <who name="Luke Macpherson">macpherson</who>
    <bug_when>2012-03-13 17:19:30 -0700</bug_when>
    <thetext>Comment on attachment 131683
Patch

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

&gt; Source/WebCore/css/CSSParser.cpp:482
&gt; +static inline bool isKeywordPropertyID(int propertyId)

Would be better to ditch this switch completely and just call map.contains(propertyId). Then you don&apos;t have to keep both functions up-to-date. (I am assuming the set of properties listed is identical).

&gt; Source/WebCore/css/CSSParser.cpp:608
&gt; +};

Looks much better, thanks.

&gt; Source/WebCore/css/CSSParser.cpp:610
&gt; +typedef HashMap&lt;int, PropertyMapEntry&gt; KeywordPropertyMap;

I assume that since PropertyMapEntry is non-virtual, this is equivalent to a function pointer now, so this should be fine.

&gt; Source/WebCore/css/CSSParser.cpp:614
&gt; +    if (map.isEmpty()) {

It would probably make sense to initialize this map in a separate function rather than the lookup code, and even better if you can guarantee the map is initialized before propertyForID is called.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>578036</commentid>
    <comment_count>17</comment_count>
      <attachid>131759</attachid>
    <who name="Alexis Menard (darktears)">menard</who>
    <bug_when>2012-03-13 17:30:22 -0700</bug_when>
    <thetext>Created attachment 131759
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>578039</commentid>
    <comment_count>18</comment_count>
    <who name="Alexis Menard (darktears)">menard</who>
    <bug_when>2012-03-13 17:31:12 -0700</bug_when>
    <thetext>(In reply to comment #16)
&gt; (From update of attachment 131683 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=131683&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/css/CSSParser.cpp:482
&gt; &gt; +static inline bool isKeywordPropertyID(int propertyId)
&gt; 
&gt; Would be better to ditch this switch completely and just call map.contains(propertyId). Then you don&apos;t have to keep both functions up-to-date. (I am assuming the set of properties listed is identical).

I thought the same, uploaded it already :).

&gt; 
&gt; &gt; Source/WebCore/css/CSSParser.cpp:608
&gt; &gt; +};
&gt; 
&gt; Looks much better, thanks.
&gt; 
&gt; &gt; Source/WebCore/css/CSSParser.cpp:610
&gt; &gt; +typedef HashMap&lt;int, PropertyMapEntry&gt; KeywordPropertyMap;
&gt; 
&gt; I assume that since PropertyMapEntry is non-virtual, this is equivalent to a function pointer now, so this should be fine.
&gt; 
&gt; &gt; Source/WebCore/css/CSSParser.cpp:614
&gt; &gt; +    if (map.isEmpty()) {
&gt; 
&gt; It would probably make sense to initialize this map in a separate function rather than the lookup code, and even better if you can guarantee the map is initialized before propertyForID is called.

Will look into that.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>578165</commentid>
    <comment_count>19</comment_count>
      <attachid>131759</attachid>
    <who name="Benjamin Poulain">benjamin</who>
    <bug_when>2012-03-13 22:20:44 -0700</bug_when>
    <thetext>Comment on attachment 131759
Patch

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

I really like the idea.

&gt; Source/WebCore/css/CSSParser.cpp:491
&gt; +class PropertyMapEntry {
&gt; +public:
&gt; +    typedef bool (*MatchFunction)(int);
&gt; +    PropertyMapEntry() : m_match(0) { }
&gt; +    bool isValid() const { return m_match; }
&gt; +    PropertyMapEntry(MatchFunction match) : m_match(match) { }
&gt; +    bool match(int id) const { ASSERT(m_match); return (*m_match)(id); }
&gt; +private:
&gt; +    MatchFunction m_match;
&gt; +};

Let&apos;s add some spaces in here to improve readability.
Please also put the two constructor together.

&gt; Source/WebCore/css/CSSParser.cpp:517
&gt; +typedef HashMap&lt;int, PropertyMapEntry&gt; KeywordPropertyMap;

I am tempted to ask you to replace this and KeywordPropertyMapEntry by a switch(). :)
It could be easier to read, and does not need any initialization.

I would also enjoy seeing MatchFunction go away because function pointers are a bit harder to debug.


Maybe as a separate patch, you could add a benchmark for CSSStyleProperty? Setting every CSS property to a valid value.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>578332</commentid>
    <comment_count>20</comment_count>
    <who name="Alexis Menard (darktears)">menard</who>
    <bug_when>2012-03-14 05:44:20 -0700</bug_when>
    <thetext>(In reply to comment #19)
&gt; (From update of attachment 131759 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=131759&amp;action=review
&gt; 
&gt; I really like the idea.
&gt; 
&gt; &gt; Source/WebCore/css/CSSParser.cpp:491
&gt; &gt; +class PropertyMapEntry {
&gt; &gt; +public:
&gt; &gt; +    typedef bool (*MatchFunction)(int);
&gt; &gt; +    PropertyMapEntry() : m_match(0) { }
&gt; &gt; +    bool isValid() const { return m_match; }
&gt; &gt; +    PropertyMapEntry(MatchFunction match) : m_match(match) { }
&gt; &gt; +    bool match(int id) const { ASSERT(m_match); return (*m_match)(id); }
&gt; &gt; +private:
&gt; &gt; +    MatchFunction m_match;
&gt; &gt; +};
&gt; 
&gt; Let&apos;s add some spaces in here to improve readability.
&gt; Please also put the two constructor together.
&gt; 
&gt; &gt; Source/WebCore/css/CSSParser.cpp:517
&gt; &gt; +typedef HashMap&lt;int, PropertyMapEntry&gt; KeywordPropertyMap;
&gt; 
&gt; I am tempted to ask you to replace this and KeywordPropertyMapEntry by a switch(). :)
&gt; It could be easier to read, and does not need any initialization.
&gt; 

It appears that https://gist.github.com/2036206 is slower than this implementation :(.

&gt; I would also enjoy seeing MatchFunction go away because function pointers are a bit harder to debug.

Well the problem is that I have to use PropertyMapEntry as a base class so I can put any template variants in the map. I tried to put the match function as virtual but I&apos;m not allocating the entries in the map on the heap and I couldn&apos;t make it work.

&gt; 
&gt; 
&gt; Maybe as a separate patch, you could add a benchmark for CSSStyleProperty? Setting every CSS property to a valid value.

I will add a benchmark which read and write css properties from JS (so we&apos;re covered). Separate patch though.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>578333</commentid>
    <comment_count>21</comment_count>
    <who name="Alexis Menard (darktears)">menard</who>
    <bug_when>2012-03-14 05:53:06 -0700</bug_when>
    <thetext>(In reply to comment #18)
&gt; (In reply to comment #16)
&gt; &gt; (From update of attachment 131683 [details] [details])
&gt; &gt; View in context: https://bugs.webkit.org/attachment.cgi?id=131683&amp;action=review
&gt; &gt; 
&gt; &gt; &gt; Source/WebCore/css/CSSParser.cpp:482
&gt; &gt; &gt; +static inline bool isKeywordPropertyID(int propertyId)
&gt; &gt; 
&gt; &gt; Would be better to ditch this switch completely and just call map.contains(propertyId). Then you don&apos;t have to keep both functions up-to-date. (I am assuming the set of properties listed is identical).
&gt; 
&gt; I thought the same, uploaded it already :).
&gt; 
&gt; &gt; 
&gt; &gt; &gt; Source/WebCore/css/CSSParser.cpp:608
&gt; &gt; &gt; +};
&gt; &gt; 
&gt; &gt; Looks much better, thanks.
&gt; &gt; 
&gt; &gt; &gt; Source/WebCore/css/CSSParser.cpp:610
&gt; &gt; &gt; +typedef HashMap&lt;int, PropertyMapEntry&gt; KeywordPropertyMap;
&gt; &gt; 
&gt; &gt; I assume that since PropertyMapEntry is non-virtual, this is equivalent to a function pointer now, so this should be fine.
&gt; &gt; 
&gt; &gt; &gt; Source/WebCore/css/CSSParser.cpp:614
&gt; &gt; &gt; +    if (map.isEmpty()) {
&gt; &gt; 
&gt; &gt; It would probably make sense to initialize this map in a separate function rather than the lookup code, and even better if you can guarantee the map is initialized before propertyForID is called.
&gt; 
&gt; Will look into that.

The problem is that the lookup functions are static so the only solution I see is to fill that map when the first CSSParser instance is created...</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>578336</commentid>
    <comment_count>22</comment_count>
    <who name="Alexis Menard (darktears)">menard</who>
    <bug_when>2012-03-14 06:01:12 -0700</bug_when>
    <thetext>(In reply to comment #21)
&gt; (In reply to comment #18)
&gt; &gt; (In reply to comment #16)
&gt; &gt; &gt; (From update of attachment 131683 [details] [details] [details])
&gt; &gt; &gt; View in context: https://bugs.webkit.org/attachment.cgi?id=131683&amp;action=review
&gt; &gt; &gt; 
&gt; &gt; &gt; &gt; Source/WebCore/css/CSSParser.cpp:482
&gt; &gt; &gt; &gt; +static inline bool isKeywordPropertyID(int propertyId)
&gt; &gt; &gt; 
&gt; &gt; &gt; Would be better to ditch this switch completely and just call map.contains(propertyId). Then you don&apos;t have to keep both functions up-to-date. (I am assuming the set of properties listed is identical).
&gt; &gt; 
&gt; &gt; I thought the same, uploaded it already :).
&gt; &gt; 
&gt; &gt; &gt; 
&gt; &gt; &gt; &gt; Source/WebCore/css/CSSParser.cpp:608
&gt; &gt; &gt; &gt; +};
&gt; &gt; &gt; 
&gt; &gt; &gt; Looks much better, thanks.
&gt; &gt; &gt; 
&gt; &gt; &gt; &gt; Source/WebCore/css/CSSParser.cpp:610
&gt; &gt; &gt; &gt; +typedef HashMap&lt;int, PropertyMapEntry&gt; KeywordPropertyMap;
&gt; &gt; &gt; 
&gt; &gt; &gt; I assume that since PropertyMapEntry is non-virtual, this is equivalent to a function pointer now, so this should be fine.
&gt; &gt; &gt; 
&gt; &gt; &gt; &gt; Source/WebCore/css/CSSParser.cpp:614
&gt; &gt; &gt; &gt; +    if (map.isEmpty()) {
&gt; &gt; &gt; 
&gt; &gt; &gt; It would probably make sense to initialize this map in a separate function rather than the lookup code, and even better if you can guarantee the map is initialized before propertyForID is called.
&gt; &gt; 
&gt; &gt; Will look into that.
&gt; 
&gt; The problem is that the lookup functions are static so the only solution I see is to fill that map when the first CSSParser instance is created...

which will be the case as bool parseValue(int propId, bool important); is using it and is called whenever a CSSParser instance is created and the parsing started. I think it&apos;s fine the way it is today.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>578337</commentid>
    <comment_count>23</comment_count>
      <attachid>131832</attachid>
    <who name="Alexis Menard (darktears)">menard</who>
    <bug_when>2012-03-14 06:03:06 -0700</bug_when>
    <thetext>Created attachment 131832
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>578826</commentid>
    <comment_count>24</comment_count>
      <attachid>131832</attachid>
    <who name="Tony Chang">tony</who>
    <bug_when>2012-03-14 15:05:51 -0700</bug_when>
    <thetext>Comment on attachment 131832
Patch

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

&gt; Source/WebCore/css/CSSParser.cpp:487
&gt; +    PropertyMapEntry(MatchFunction match) : m_match(match) { }

explicit

&gt; Source/WebCore/css/CSSParser.cpp:512
&gt; +        if (behavior == MatchRange &amp;&amp; id &gt;= one &amp;&amp; id &lt;= two)
&gt; +                return true;

indent is weird

&gt; Source/WebCore/css/CSSParser.cpp:539
&gt; +        map.set(CSSPropertyDisplay, KeywordPropertyMapEntry&lt;MatchRange, CSSValueInline, CSSValueWebkitInlineFlexbox, CSSValueNone, CSSValueWebkitGrid, CSSValueWebkitInlineGrid&gt;());

WebkitGrid and WebkitInlineGrid come after WebkitInlineFlexbox, so you could just extend the range to WebkitInlineGrid.

&gt; Source/WebCore/css/CSSParser.cpp:541
&gt; +       map.set(CSSPropertyDisplay, KeywordPropertyMapEntry&lt;MatchRange, CSSValueInline, CSSValueWebkitInlineFlexbox, CSSValueNone&gt;());

indent is weird

&gt; Source/WebCore/css/CSSParser.cpp:627
&gt; +    if (!string.length())

isEmpty()

&gt; Source/WebCore/css/CSSParser.cpp:649
&gt; +        if (cssValuePool)
&gt; +            value = cssValuePool-&gt;createInheritedValue();
&gt; +        else
&gt; +            value = CSSInheritedValue::create();

Nit: Use a ternary operator?

&gt; Source/WebCore/css/CSSParser.cpp:657
&gt; +        if (cssValuePool)
&gt; +            value = cssValuePool-&gt;createExplicitInitialValue();
&gt; +        else
&gt; +            value = CSSInitialValue::createExplicit();

Nit: Use a ternary operator?

&gt; Source/WebCore/css/CSSParser.cpp:668
&gt; +    if (document)
&gt; +        value = cssValuePool-&gt;createIdentifierValue(valueID);
&gt; +    else
&gt; +        value = CSSPrimitiveValue::createIdentifier(valueID);

Nit: Use a ternary operator?

&gt; Source/WebCore/css/CSSParser.cpp:-1008
&gt; -    case CSSPropertyEmptyCells:          // show | hide | inherit
&gt; -        if (id == CSSValueShow

Does the switch statement compile if SVG is not enabled?  I think clang will complain about a switch with missing values.  You probably need to add these with an ASSERT_NOT_REACHED().</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>578861</commentid>
    <comment_count>25</comment_count>
      <attachid>131940</attachid>
    <who name="Alexis Menard (darktears)">menard</who>
    <bug_when>2012-03-14 15:35:47 -0700</bug_when>
    <thetext>Created attachment 131940
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>578886</commentid>
    <comment_count>26</comment_count>
    <who name="Benjamin Poulain">benjamin</who>
    <bug_when>2012-03-14 16:01:24 -0700</bug_when>
    <thetext>I tried on a quick hand made benchmark:
-Before patch: 552.5 
-After patch: 369

I wish you could also do a shortcut for -webkit-transform after this patch :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>578980</commentid>
    <comment_count>27</comment_count>
    <who name="Tony Chang">tony</who>
    <bug_when>2012-03-14 17:38:52 -0700</bug_when>
    <thetext>This looks good to me, but I defer the final review to Antti or someone else.

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

&gt; Source/WebCore/css/CSSParser.cpp:2232
&gt;  #if ENABLE(SVG)
&gt;      default:
&gt;          return parseSVGValue(propId, important);
&gt; +#else
&gt; +    default:
&gt; +        ASSERT_NOT_REACHED();
&gt; +        return false;

Nit: I would pull the default: out of the #if.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>582001</commentid>
    <comment_count>28</comment_count>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2012-03-19 11:45:40 -0700</bug_when>
    <thetext>Why does this use complex and borderline unreadable HashMap/template/function pointer setup instead of a simple and readable switch statement?

Presumably the performance gains are from skipping the css parser construction and cssyyparse, not from these tricks.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>582150</commentid>
    <comment_count>29</comment_count>
      <attachid>132649</attachid>
    <who name="Alexis Menard (darktears)">menard</who>
    <bug_when>2012-03-19 13:30:54 -0700</bug_when>
    <thetext>Created attachment 132649
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>582218</commentid>
    <comment_count>30</comment_count>
      <attachid>132649</attachid>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2012-03-19 14:08:43 -0700</bug_when>
    <thetext>Comment on attachment 132649
Patch

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

Looking better but r- for various style and other issues.

&gt; Source/WebCore/css/CSSParser.cpp:484
&gt; +static inline bool propertyMatchKeyword(int propertyId, int id)
&gt; +{

The name here is not great. Maybe isValidKeywordPropertyAndValue() or similar?

What &apos;id&apos;? It should be called &apos;valueID&apos;. I think we generally capitalize ID so &apos;propertyID&apos;.

&gt; Source/WebCore/css/CSSParser.cpp:489
&gt; +    case CSSPropertyBorderCollapse: // collapse | separate | inherit
&gt; +            if (id == CSSValueCollapse || id == CSSValueSeparate)
&gt; +                return true;
&gt; +            break;

Double indentation in this switch

&gt; Source/WebCore/css/CSSParser.cpp:899
&gt; +    CSSParserString cssString;
&gt; +    cssString.characters = const_cast&lt;UChar*&gt;(string.characters());
&gt; +    cssString.length = string.length();
&gt; +    int valueID = cssValueKeywordID(cssString);

This could be an inline function. Surprised that there is not one already.

&gt; Source/WebCore/css/CSSParser.cpp:909
&gt; +        if (cssValuePool)
&gt; +        value = cssValuePool ? cssValuePool-&gt;createInheritedValue() : CSSInheritedValue::create();

did you forget that if() there?

&gt; Source/WebCore/css/CSSParser.cpp:924
&gt; +        declaration-&gt;addParsedProperty(CSSProperty(propertyId, value.release(), important));
&gt; +        return true;
&gt; +    }
&gt; +    if (valueID == CSSValueInitial) {
&gt; +        value = cssValuePool ? cssValuePool-&gt;createExplicitInitialValue() : CSSInitialValue::createExplicit();
&gt; +        declaration-&gt;addParsedProperty(CSSProperty(propertyId, value.release(), important));
&gt; +        return true;
&gt; +    }
&gt; +
&gt; +    if (!propertyMatchKeyword(propertyId, valueID))
&gt; +        return false;
&gt; +
&gt; +    value = document ? cssValuePool-&gt;createIdentifierValue(valueID) : CSSPrimitiveValue::createIdentifier(valueID);
&gt; +    declaration-&gt;addParsedProperty(CSSProperty(propertyId, value.release(), important));
&gt; +    return true;

The code might look nicer and be shorter if factored to create CSSValues in branches and then do declaration-&gt;addParsedProperty() once at the end. Basically not using early returns for inherit and initial.

&gt; Source/WebCore/css/CSSParser.cpp:1381
&gt;      bool validPrimitive = false;
&gt;      RefPtr&lt;CSSValue&gt; parsedValue;
&gt;  
&gt; +    if (id &amp;&amp; isKeywordPropertyID(propId)) {
&gt; +            if (!propertyMatchKeyword(propId, id))

You don&apos;t need to invoke isKeywordPropertyID() here at all, propertyMatchKeyword() returns false for non-keyword properties.

if() here should be before the initialization of those variables. They are not needed if the branch is taken.

Indentation.

&gt; Source/WebCore/css/CSSParser.cpp:1383
&gt; +                return false;
&gt; +            parsedValue = parseValidPrimitive(id, value);

Why does this call to parseValidPrimitive? You know it is an identifier value, you can just do cssValuePool()-&gt;createIdentifierValue(id).

&gt; Source/WebCore/css/CSSParser.cpp:1390
&gt; +            if (!m_valueList-&gt;current() || inShorthand()) {
&gt; +                addProperty(propId, parsedValue.release(), important);
&gt; +                return true;
&gt; +            }
&gt; +            return false;

Would be nicer to switch these branches around as you won&apos;t need the block at all.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>582360</commentid>
    <comment_count>31</comment_count>
      <attachid>132693</attachid>
    <who name="Alexis Menard (darktears)">menard</who>
    <bug_when>2012-03-19 15:53:47 -0700</bug_when>
    <thetext>Created attachment 132693
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>582381</commentid>
    <comment_count>32</comment_count>
    <who name="Alexis Menard (darktears)">menard</who>
    <bug_when>2012-03-19 16:04:26 -0700</bug_when>
    <thetext>(In reply to comment #30)
&gt; (From update of attachment 132649 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=132649&amp;action=review
&gt; 
&gt; Looking better but r- for various style and other issues.
&gt; 
&gt; &gt; Source/WebCore/css/CSSParser.cpp:484
&gt; &gt; +static inline bool propertyMatchKeyword(int propertyId, int id)
&gt; &gt; +{
&gt; 
&gt; The name here is not great. Maybe isValidKeywordPropertyAndValue() or similar?
&gt; 
&gt; What &apos;id&apos;? It should be called &apos;valueID&apos;. I think we generally capitalize ID so &apos;propertyID&apos;.
&gt; 
&gt; &gt; Source/WebCore/css/CSSParser.cpp:489
&gt; &gt; +    case CSSPropertyBorderCollapse: // collapse | separate | inherit
&gt; &gt; +            if (id == CSSValueCollapse || id == CSSValueSeparate)
&gt; &gt; +                return true;
&gt; &gt; +            break;
&gt; 
&gt; Double indentation in this switch
&gt; 
&gt; &gt; Source/WebCore/css/CSSParser.cpp:899
&gt; &gt; +    CSSParserString cssString;
&gt; &gt; +    cssString.characters = const_cast&lt;UChar*&gt;(string.characters());
&gt; &gt; +    cssString.length = string.length();
&gt; &gt; +    int valueID = cssValueKeywordID(cssString);
&gt; 
&gt; This could be an inline function. Surprised that there is not one already.

I will do a separate patch, there are some other candidates.

&gt; 
&gt; &gt; Source/WebCore/css/CSSParser.cpp:909
&gt; &gt; +        if (cssValuePool)
&gt; &gt; +        value = cssValuePool ? cssValuePool-&gt;createInheritedValue() : CSSInheritedValue::create();
&gt; 
&gt; did you forget that if() there?
&gt; 
&gt; &gt; Source/WebCore/css/CSSParser.cpp:924
&gt; &gt; +        declaration-&gt;addParsedProperty(CSSProperty(propertyId, value.release(), important));
&gt; &gt; +        return true;
&gt; &gt; +    }
&gt; &gt; +    if (valueID == CSSValueInitial) {
&gt; &gt; +        value = cssValuePool ? cssValuePool-&gt;createExplicitInitialValue() : CSSInitialValue::createExplicit();
&gt; &gt; +        declaration-&gt;addParsedProperty(CSSProperty(propertyId, value.release(), important));
&gt; &gt; +        return true;
&gt; &gt; +    }
&gt; &gt; +
&gt; &gt; +    if (!propertyMatchKeyword(propertyId, valueID))
&gt; &gt; +        return false;
&gt; &gt; +
&gt; &gt; +    value = document ? cssValuePool-&gt;createIdentifierValue(valueID) : CSSPrimitiveValue::createIdentifier(valueID);
&gt; &gt; +    declaration-&gt;addParsedProperty(CSSProperty(propertyId, value.release(), important));
&gt; &gt; +    return true;
&gt; 
&gt; The code might look nicer and be shorter if factored to create CSSValues in branches and then do declaration-&gt;addParsedProperty() once at the end. Basically not using early returns for inherit and initial.
&gt; 
&gt; &gt; Source/WebCore/css/CSSParser.cpp:1381
&gt; &gt;      bool validPrimitive = false;
&gt; &gt;      RefPtr&lt;CSSValue&gt; parsedValue;
&gt; &gt;  
&gt; &gt; +    if (id &amp;&amp; isKeywordPropertyID(propId)) {
&gt; &gt; +            if (!propertyMatchKeyword(propId, id))
&gt; 
&gt; You don&apos;t need to invoke isKeywordPropertyID() here at all, propertyMatchKeyword() returns false for non-keyword properties.

Well yes but then a case like display: circle will continue to the switch case.

&gt; 
&gt; if() here should be before the initialization of those variables. They are not needed if the branch is taken.
&gt; 
&gt; Indentation.
&gt; 
&gt; &gt; Source/WebCore/css/CSSParser.cpp:1383
&gt; &gt; +                return false;
&gt; &gt; +            parsedValue = parseValidPrimitive(id, value);
&gt; 
&gt; Why does this call to parseValidPrimitive? You know it is an identifier value, you can just do cssValuePool()-&gt;createIdentifierValue(id).
&gt; 
&gt; &gt; Source/WebCore/css/CSSParser.cpp:1390
&gt; &gt; +            if (!m_valueList-&gt;current() || inShorthand()) {
&gt; &gt; +                addProperty(propId, parsedValue.release(), important);
&gt; &gt; +                return true;
&gt; &gt; +            }
&gt; &gt; +            return false;
&gt; 
&gt; Would be nicer to switch these branches around as you won&apos;t need the block at all.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>582865</commentid>
    <comment_count>33</comment_count>
      <attachid>132693</attachid>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2012-03-20 01:57:09 -0700</bug_when>
    <thetext>Comment on attachment 132693
Patch

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

r=me, with a few minor comments

&gt; Source/WebCore/css/CSSParser.cpp:792
&gt; +    case CSSPropertyWordWrap: // normal | break-word
&gt; +        if (valueID == CSSValueNormal || valueID == CSSValueBreakWord)
&gt; +            return true;
&gt; +        break;
&gt; +    default:
&gt; +        return false;
&gt; +    }

You should ASSERT_NOT_REACHED() in default case.

&gt; Source/WebCore/css/CSSParser.cpp:919
&gt; +    if (valueID == CSSValueInherit)
&gt; +        value = cssValuePool ? cssValuePool-&gt;createInheritedValue() : CSSInheritedValue::create();
&gt; +    if (valueID == CSSValueInitial)
&gt; +        value = cssValuePool ? cssValuePool-&gt;createExplicitInitialValue() : CSSInitialValue::createExplicit();
&gt; +
&gt; +    if (!value &amp;&amp; !isValidKeywordPropertyAndValue(propertyId, valueID))
&gt; +        return false;
&gt; +
&gt; +    if (!value)
&gt; +        value = document ? cssValuePool-&gt;createIdentifierValue(valueID) : CSSPrimitiveValue::createIdentifier(valueID);

This can be still improved. Use &apos;else if&apos;s. You won&apos;t need the !value tests.

&gt; Source/WebCore/css/CSSParser.cpp:1374
&gt; +    if (id &amp;&amp; isKeywordPropertyID(propId)) {

Can the id really be 0? ASSERT(id) perhaps?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>582874</commentid>
    <comment_count>34</comment_count>
      <attachid>132693</attachid>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2012-03-20 02:21:50 -0700</bug_when>
    <thetext>Comment on attachment 132693
Patch

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

Switched to r- for concerns over invalid value handling and breaking the no-svg build.

&gt;&gt; Source/WebCore/css/CSSParser.cpp:1374
&gt;&gt; +    if (id &amp;&amp; isKeywordPropertyID(propId)) {
&gt; 
&gt; Can the id really be 0? ASSERT(id) perhaps?

Actually the id test is wrong. You will end up in the main switch which won&apos;t know how to handle the propId. If id==CSSValueInvalid can actually happen then it needs to be handled within isKeywordPropertyID() branch maybe by having isValidKeywordPropertyAndValue() test it.

&gt; Source/WebCore/css/CSSParser.cpp:-979
&gt; -    case CSSPropertyPosition:             // static | relative | absolute | fixed | inherit
&gt; -        if (id == CSSValueStatic

In non-SVG build the switch won&apos;t have default: case so it won&apos;t build after your change.

I think you should keep these properties in the main switch, together without implementation, and ASSERT_NOT_REACHED.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>582924</commentid>
    <comment_count>35</comment_count>
      <attachid>132795</attachid>
    <who name="Alexis Menard (darktears)">menard</who>
    <bug_when>2012-03-20 04:20:59 -0700</bug_when>
    <thetext>Created attachment 132795
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>582928</commentid>
    <comment_count>36</comment_count>
      <attachid>132795</attachid>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2012-03-20 04:23:37 -0700</bug_when>
    <thetext>Comment on attachment 132795
Patch

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

&gt; Source/WebCore/css/CSSParser.cpp:1387
&gt; +        addProperty(propId,  cssValuePool()-&gt;createIdentifierValue(id), important);

two spaces here</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>582930</commentid>
    <comment_count>37</comment_count>
      <attachid>132797</attachid>
    <who name="Alexis Menard (darktears)">menard</who>
    <bug_when>2012-03-20 04:27:54 -0700</bug_when>
    <thetext>Created attachment 132797
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>582950</commentid>
    <comment_count>38</comment_count>
      <attachid>132797</attachid>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2012-03-20 04:50:41 -0700</bug_when>
    <thetext>Comment on attachment 132797
Patch for landing

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

&gt; Source/WebCore/css/CSSParser.cpp:924
&gt; +        value = cssValuePool ? cssValuePool-&gt;createExplicitInitialValue() : CSSInitialValue::createExplicit();
&gt; +    else if (isValidKeywordPropertyAndValue(propertyId, valueID))
&gt; +        value = document ? cssValuePool-&gt;createIdentifierValue(valueID) : CSSPrimitiveValue::createIdentifier(valueID);

Should be cssValuePool instead of document here.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>583032</commentid>
    <comment_count>39</comment_count>
      <attachid>132821</attachid>
    <who name="Alexis Menard (darktears)">menard</who>
    <bug_when>2012-03-20 07:04:14 -0700</bug_when>
    <thetext>Created attachment 132821
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>583063</commentid>
    <comment_count>40</comment_count>
      <attachid>132821</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-03-20 07:46:44 -0700</bug_when>
    <thetext>Comment on attachment 132821
Patch for landing

Clearing flags on attachment: 132821

Committed r111394: &lt;http://trac.webkit.org/changeset/111394&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>583064</commentid>
    <comment_count>41</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-03-20 07:46:53 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>131388</attachid>
            <date>2012-03-12 13:09:42 -0700</date>
            <delta_ts>2012-03-12 14:31:26 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-80874-20120312170925.patch</filename>
            <type>text/plain</type>
            <size>52630</size>
            <attacher name="Alexis Menard (darktears)">menard</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTEwNDIwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNjA2MmNkNDRmMTE2OWQ3
ZGRmZTk3ZTRlYmMyMWEwY2Y3MzFiMjlhZC4uYTc0MTRiNmM4MDAzMTk0OGVjN2MwYjIwNjkwYTVm
MjlkOWVmMDczMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM1IEBACisyMDEyLTAzLTEyICBBbGV4
aXMgTWVuYXJkICA8YWxleGlzLm1lbmFyZEBvcGVuYm9zc2Eub3JnPgorCisgICAgICAgIEltcGxl
bWVudCBhIGZhc3QgcGF0aCB3aGVuIHNldHRpbmcgQ1NTIHByb3BlcnRpZXMgd2l0aCBrZXl3b3Jk
cyBmcm9tIEpTLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9ODA4NzQKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICBJbXBsZW1lbnQgYSBmYXN0IHBhdGggZm9yIHByb3BlcnRpZXMgd2l0aCBrZXl3b3Jkcy4gVGhl
IGlkZWEgaXMgdG8gYXZvaWQKKyAgICAgICAgY3JlYXRpbmcgdGhlIENTUyBwYXJzZXIgYW5kIHJ1
biBhbGwgdGhlIG1hY2hpbmVyeSBmb3IgaXQuIFRoaXMgcGF0Y2gKKyAgICAgICAgYWRkcyBhIHN0
YXRpYyBtYXAgd2hlcmUgYWxsIHRoZSBwcm9wZXJ0aWVzIGFjY2VwdGluZyBrZXl3b3JkcyBhcyB2
YWx1ZSBhcmUKKyAgICAgICAgZGVzY3JpYmVkIChlLmcuIHBvc3Rpb24gOiBmaXhlZCkuIFdoZW4g
SlMgY2FsbCBwYXJzZVZhbHVlIHdlIGNoZWNrIGlmIHdlCisgICAgICAgIGNhbiB1c2UgdGhlIGZh
c3QgcGF0aCB0byBhZGQgdGhlIGNyZWF0ZWQgcHJvcGVydHkgZGlyZWN0bHkgaW4gdGhlIGRlY2xh
cmF0aW9uLgorICAgICAgICBGb3IgdGhlIHNha2Ugb2YgbWFpbnRlbmFuY2UgdGhlIHBhcnNlVmFs
dWUgZnVudGlvbiB1c2VkIGJ5IENTU0dyYW1tYXIueSBpcyB1c2luZworICAgICAgICB0aGlzIG1h
cC4KKworICAgICAgICBObyBuZXcgdGVzdHMgOiBleGlzdGluZ3Mgb25lcyBzaG91bGQgY292ZXIu
CisKKyAgICAgICAgKiBjc3MvQ1NTUGFyc2VyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmlzS2V5
d29yZFByb3BlcnR5SUQpOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChDU1NQcm9wZXJ0
eVBhcnNlcik6CisgICAgICAgIChXZWJDb3JlOjpDU1NQcm9wZXJ0eVBhcnNlcjo6Q1NTUHJvcGVy
dHlQYXJzZXIpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTUHJvcGVydHlQYXJzZXI6Omhhc1Jhbmdl
KToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1Byb3BlcnR5UGFyc2VyOjpzZXRSYW5nZSk6CisgICAg
ICAgIChXZWJDb3JlOjpDU1NQcm9wZXJ0eVBhcnNlcjo6bWluS2V5d29yZCk6CisgICAgICAgIChX
ZWJDb3JlOjpDU1NQcm9wZXJ0eVBhcnNlcjo6bWF4S2V5d29yZCk6CisgICAgICAgIChXZWJDb3Jl
OjpDU1NQcm9wZXJ0eVBhcnNlcjo6YWNjZXB0ZWRLZXl3b3Jkcyk6CisgICAgICAgIChXZWJDb3Jl
OjpDU1NQcm9wZXJ0eVBhcnNlcjo6bGVuZ3RoKToKKyAgICAgICAgKFdlYkNvcmU6OnByb3BlcnR5
Rm9ySUQpOgorICAgICAgICAoV2ViQ29yZTo6cGFyc2VLZXl3b3JkVmFsdWUpOgorICAgICAgICAo
V2ViQ29yZTo6Q1NTUGFyc2VyOjpwYXJzZVZhbHVlKToKKwogMjAxMi0wMy0xMiAgSGFucyBXZW5u
Ym9yZyAgPGhhbnNAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFNwZWVjaCBKYXZhU2NyaXB0IEFQ
STogU3BlZWNoUmVjb2duaXRpb25FdmVudApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3Nz
L0NTU1BhcnNlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUGFyc2VyLmNwcAppbmRleCAz
ZGM0YmM5MTIwMjU1MmI2Njc1NGZiOWU0NzZhZDQwZDcwMGQxOGYwLi44NDAwNTJmOWNlODZmMTVi
YmFlMzQ0ZWYwYjYyZTJhNGQ3MTRjYThkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3Mv
Q1NTUGFyc2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUGFyc2VyLmNwcApAQCAt
NDc5LDYgKzQ3OSwzOTIgQEAgc3RhdGljIGJvb2wgcGFyc2VTaW1wbGVMZW5ndGhWYWx1ZShTdHls
ZVByb3BlcnR5U2V0KiBkZWNsYXJhdGlvbiwgaW50IHByb3BlcnR5SWQKICAgICByZXR1cm4gdHJ1
ZTsKIH0KIAorc3RhdGljIGlubGluZSBib29sIGlzS2V5d29yZFByb3BlcnR5SUQoaW50IHByb3Bl
cnR5SWQpCit7CisgICAgc3dpdGNoIChwcm9wZXJ0eUlkKSB7CisgICAgY2FzZSBDU1NQcm9wZXJ0
eVBvc2l0aW9uOgorICAgIGNhc2UgQ1NTUHJvcGVydHlFbXB0eUNlbGxzOgorICAgIGNhc2UgQ1NT
UHJvcGVydHlXaGl0ZVNwYWNlOgorICAgIGNhc2UgQ1NTUHJvcGVydHlDYXB0aW9uU2lkZToKKyAg
ICBjYXNlIENTU1Byb3BlcnR5Qm9yZGVyQ29sbGFwc2U6CisgICAgY2FzZSBDU1NQcm9wZXJ0eVZp
c2liaWxpdHk6CisgICAgY2FzZSBDU1NQcm9wZXJ0eU92ZXJmbG93WDoKKyAgICBjYXNlIENTU1By
b3BlcnR5T3ZlcmZsb3dZOgorICAgIGNhc2UgQ1NTUHJvcGVydHlMaXN0U3R5bGVQb3NpdGlvbjoK
KyAgICBjYXNlIENTU1Byb3BlcnR5RGlyZWN0aW9uOgorICAgIGNhc2UgQ1NTUHJvcGVydHlGbG9h
dDoKKyAgICBjYXNlIENTU1Byb3BlcnR5Q2xlYXI6CisgICAgY2FzZSBDU1NQcm9wZXJ0eVdvcmRC
cmVhazoKKyAgICBjYXNlIENTU1Byb3BlcnR5V29yZFdyYXA6CisgICAgY2FzZSBDU1NQcm9wZXJ0
eVNwZWFrOgorICAgIGNhc2UgQ1NTUHJvcGVydHlGb250U3R5bGU6CisgICAgY2FzZSBDU1NQcm9w
ZXJ0eVRhYmxlTGF5b3V0OgorICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRCb3hBbGlnbjoKKyAg
ICBjYXNlIENTU1Byb3BlcnR5V2Via2l0Qm94RGlyZWN0aW9uOgorICAgIGNhc2UgQ1NTUHJvcGVy
dHlXZWJraXRCb3hMaW5lczoKKyAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0Qm94T3JpZW50Ogor
ICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRCb3hQYWNrOgorICAgIGNhc2UgQ1NTUHJvcGVydHlC
b3hTaXppbmc6CisgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdENvbG9yQ29ycmVjdGlvbjoKKyAg
ICBjYXNlIENTU1Byb3BlcnR5V2Via2l0RmxleFBhY2s6CisgICAgY2FzZSBDU1NQcm9wZXJ0eVdl
YmtpdEZsZXhBbGlnbjoKKyAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0RmxleEl0ZW1BbGlnbjoK
KyAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0RmxleERpcmVjdGlvbjoKKyAgICBjYXNlIENTU1By
b3BlcnR5V2Via2l0TWFycXVlZURpcmVjdGlvbjoKKyAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0
TWFycXVlZVN0eWxlOgorICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRVc2VyRHJhZzoKKyAgICBj
YXNlIENTU1Byb3BlcnR5V2Via2l0VXNlck1vZGlmeToKKyAgICBjYXNlIENTU1Byb3BlcnR5V2Vi
a2l0VXNlclNlbGVjdDoKKyAgICBjYXNlIENTU1Byb3BlcnR5VGV4dE92ZXJmbG93OgorICAgIGNh
c2UgQ1NTUHJvcGVydHlXZWJraXRUcmFuc2Zvcm1TdHlsZToKKyAgICBjYXNlIENTU1Byb3BlcnR5
V2Via2l0QmFja2ZhY2VWaXNpYmlsaXR5OgorICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRQcmlu
dENvbG9yQWRqdXN0OgorICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRNYXJnaW5CZWZvcmVDb2xs
YXBzZToKKyAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0TWFyZ2luQWZ0ZXJDb2xsYXBzZToKKyAg
ICBjYXNlIENTU1Byb3BlcnR5V2Via2l0TWFyZ2luVG9wQ29sbGFwc2U6CisgICAgY2FzZSBDU1NQ
cm9wZXJ0eVdlYmtpdE1hcmdpbkJvdHRvbUNvbGxhcHNlOgorICAgIGNhc2UgQ1NTUHJvcGVydHlU
ZXh0TGluZVRocm91Z2hNb2RlOgorICAgIGNhc2UgQ1NTUHJvcGVydHlUZXh0T3ZlcmxpbmVNb2Rl
OgorICAgIGNhc2UgQ1NTUHJvcGVydHlUZXh0VW5kZXJsaW5lTW9kZToKKyAgICBjYXNlIENTU1By
b3BlcnR5VGV4dExpbmVUaHJvdWdoU3R5bGU6CisgICAgY2FzZSBDU1NQcm9wZXJ0eVRleHRPdmVy
bGluZVN0eWxlOgorICAgIGNhc2UgQ1NTUHJvcGVydHlUZXh0VW5kZXJsaW5lU3R5bGU6CisgICAg
Y2FzZSBDU1NQcm9wZXJ0eVRleHRSZW5kZXJpbmc6CisgICAgY2FzZSBDU1NQcm9wZXJ0eVJlc2l6
ZToKKyAgICBjYXNlIENTU1Byb3BlcnR5SW1hZ2VSZW5kZXJpbmc6CisgICAgY2FzZSBDU1NQcm9w
ZXJ0eVdlYmtpdFRleHRTaXplQWRqdXN0OgorICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRSdGxP
cmRlcmluZzoKKyAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0TmJzcE1vZGU6CisgICAgY2FzZSBD
U1NQcm9wZXJ0eVdlYmtpdExpbmVCcmVhazoKKyAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0TWF0
Y2hOZWFyZXN0TWFpbEJsb2NrcXVvdGVDb2xvcjoKKyAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0
SHlwaGVuczoKKyAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0TGluZVNuYXA6CisgICAgY2FzZSBD
U1NQcm9wZXJ0eVdlYmtpdExpbmVBbGlnbjoKKyAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0Qm9y
ZGVyRml0OgorICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRUZXh0U2VjdXJpdHk6CisgICAgY2Fz
ZSBDU1NQcm9wZXJ0eVdlYmtpdEZvbnRTbW9vdGhpbmc6CisjaWYgRU5BQkxFKE9WRVJGTE9XX1ND
Uk9MTElORykKKyAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0T3ZlcmZsb3dTY3JvbGxpbmc6Cisj
ZW5kaWYKKyAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0VGV4dEVtcGhhc2lzUG9zaXRpb246Cisg
ICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdEZvbnRLZXJuaW5nOgorICAgIGNhc2UgQ1NTUHJvcGVy
dHlXZWJraXRXcmFwRmxvdzoKKyAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0V3JhcFRocm91Z2g6
CisgICAgY2FzZSBDU1NQcm9wZXJ0eUJvcmRlclRvcFN0eWxlOgorICAgIGNhc2UgQ1NTUHJvcGVy
dHlCb3JkZXJSaWdodFN0eWxlOgorICAgIGNhc2UgQ1NTUHJvcGVydHlCb3JkZXJCb3R0b21TdHls
ZToKKyAgICBjYXNlIENTU1Byb3BlcnR5Qm9yZGVyTGVmdFN0eWxlOgorICAgIGNhc2UgQ1NTUHJv
cGVydHlXZWJraXRCb3JkZXJTdGFydFN0eWxlOgorICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRC
b3JkZXJFbmRTdHlsZToKKyAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0Qm9yZGVyQmVmb3JlU3R5
bGU6CisgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdEJvcmRlckFmdGVyU3R5bGU6CisgICAgY2Fz
ZSBDU1NQcm9wZXJ0eVdlYmtpdENvbHVtblJ1bGVTdHlsZToKKyAgICBjYXNlIENTU1Byb3BlcnR5
TGlzdFN0eWxlVHlwZToKKyAgICBjYXNlIENTU1Byb3BlcnR5RGlzcGxheToKKyAgICBjYXNlIENT
U1Byb3BlcnR5VGV4dFRyYW5zZm9ybToKKyAgICBjYXNlIENTU1Byb3BlcnR5T3V0bGluZVN0eWxl
OgorICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRBcHBlYXJhbmNlOgorICAgIGNhc2UgQ1NTUHJv
cGVydHlQb2ludGVyRXZlbnRzOgorICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRXcml0aW5nTW9k
ZToKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgZGVmYXVsdDoKKyAgICAgICAgcmV0dXJuIGZh
bHNlOworICAgIH0KK30KKworY2xhc3MgQ1NTUHJvcGVydHlQYXJzZXIgeworcHVibGljOgorICAg
IENTU1Byb3BlcnR5UGFyc2VyKCkKKyAgICAgICAgOiBtX2FjY2VwdGVkS2V5d29yZHMoMCkKKyAg
ICAgICAgLCBtX2xlbmd0aCgwKQorICAgIHsKKyAgICB9CisKKyAgICBDU1NQcm9wZXJ0eVBhcnNl
cihjb25zdCBpbnQqIGFjY2VwdGVkS2V5d29yZHMsIHVuc2lnbmVkIG51bVByb3BlcnRpZXMpCisg
ICAgICAgIDogbV9hY2NlcHRlZEtleXdvcmRzKGFjY2VwdGVkS2V5d29yZHMpCisgICAgICAgICwg
bV9sZW5ndGgobnVtUHJvcGVydGllcykKKyAgICAgICAgLCBtX2hhc1JhbmdlKGZhbHNlKQorICAg
ICAgICAsIG1fbWluS2V5d29yZCgwKQorICAgICAgICAsIG1fbWF4S2V5d29yZCgwKQorICAgIHsK
KyAgICB9CisKKyAgICBib29sIGhhc1JhbmdlKCkgeyByZXR1cm4gbV9oYXNSYW5nZTsgfQorICAg
IHZvaWQgc2V0UmFuZ2UoaW50IG1pbiwgaW50IG1heCkgeyBtX2hhc1JhbmdlID0gdHJ1ZTsgbV9t
aW5LZXl3b3JkID0gbWluOyBtX21heEtleXdvcmQgPSBtYXg7IH0KKyAgICBpbnQgbWluS2V5d29y
ZCgpIHsgcmV0dXJuIG1fbWluS2V5d29yZDsgfQorICAgIGludCBtYXhLZXl3b3JkKCkgeyByZXR1
cm4gbV9tYXhLZXl3b3JkOyB9CisKKyAgICBjb25zdCBpbnQqIGFjY2VwdGVkS2V5d29yZHMoKSBj
b25zdCB7IHJldHVybiBtX2FjY2VwdGVkS2V5d29yZHM7IH0KKyAgICB1bnNpZ25lZCBsZW5ndGgo
KSBjb25zdCB7IHJldHVybiBtX2xlbmd0aDsgfQorCitwcml2YXRlOgorICAgIGNvbnN0IGludCog
bV9hY2NlcHRlZEtleXdvcmRzOworICAgIHVuc2lnbmVkIG1fbGVuZ3RoOworICAgIGJvb2wgbV9o
YXNSYW5nZTsKKyAgICBpbnQgbV9taW5LZXl3b3JkOworICAgIGludCBtX21heEtleXdvcmQ7Cit9
OworCisjZGVmaW5lIFNFVF9QUk9QRVJUWV9QQVJTRVJfTUFQX0VOVFJZKG1hcCwgcHJvcElELCBh
cnJheSkgXAorICAgIG1hcC5zZXQocHJvcElELCBDU1NQcm9wZXJ0eVBhcnNlcihhcnJheSwgV1RG
X0FSUkFZX0xFTkdUSChhcnJheSkpKQorCit0eXBlZGVmIEhhc2hNYXA8aW50LCBDU1NQcm9wZXJ0
eVBhcnNlcj4gcHJvcGVydGllc01hcDsKK3N0YXRpYyBDU1NQcm9wZXJ0eVBhcnNlciBwcm9wZXJ0
eUZvcklEKGludCBwcm9wZXJ0eUlkKQoreworICAgIERFRklORV9TVEFUSUNfTE9DQUwocHJvcGVy
dGllc01hcCwgbWFwLCAoKSk7CisgICAgaWYgKG1hcC5pc0VtcHR5KCkpIHsKKyAgICAgICAgc3Rh
dGljIGNvbnN0IGludCBwb3NpdGlvbktleXdvcmRzW10gPSB7IENTU1ZhbHVlU3RhdGljLCBDU1NW
YWx1ZVJlbGF0aXZlLCBDU1NWYWx1ZUFic29sdXRlLCBDU1NWYWx1ZUZpeGVkIH07CisgICAgICAg
IFNFVF9QUk9QRVJUWV9QQVJTRVJfTUFQX0VOVFJZKG1hcCwgQ1NTUHJvcGVydHlQb3NpdGlvbiwg
cG9zaXRpb25LZXl3b3Jkcyk7CisgICAgICAgIHN0YXRpYyBjb25zdCBpbnQgZW1wdHlDZWxsc0tl
eXdvcmRzW10gPSB7IENTU1ZhbHVlU2hvdywgQ1NTVmFsdWVIaWRlIH07IC8vIHNob3cgfCBoaWRl
IHwgaW5oZXJpdAorICAgICAgICBTRVRfUFJPUEVSVFlfUEFSU0VSX01BUF9FTlRSWShtYXAsIENT
U1Byb3BlcnR5RW1wdHlDZWxscywgZW1wdHlDZWxsc0tleXdvcmRzKTsKKyAgICAgICAgc3RhdGlj
IGNvbnN0IGludCB3aGl0ZVNwYWNlS2V5d29yZHNbXSA9IHsgQ1NTVmFsdWVOb3JtYWwsIENTU1Zh
bHVlUHJlLCBDU1NWYWx1ZVByZVdyYXAsIENTU1ZhbHVlUHJlTGluZSwgQ1NTVmFsdWVOb3dyYXB9
OyAvLyBub3JtYWwgfCBwcmUgfCBub3dyYXAgfCBpbmhlcml0CisgICAgICAgIFNFVF9QUk9QRVJU
WV9QQVJTRVJfTUFQX0VOVFJZKG1hcCwgQ1NTUHJvcGVydHlXaGl0ZVNwYWNlLCB3aGl0ZVNwYWNl
S2V5d29yZHMpOworICAgICAgICBzdGF0aWMgY29uc3QgaW50IGNhcHRpb25TaWRlS2V5d29yZHNb
XSA9IHsgQ1NTVmFsdWVMZWZ0LCBDU1NWYWx1ZVJpZ2h0LCBDU1NWYWx1ZVRvcCwgQ1NTVmFsdWVC
b3R0b20gfTsgLy8gdG9wIHwgYm90dG9tIHwgbGVmdCB8IHJpZ2h0IHwgaW5oZXJpdAorICAgICAg
ICBTRVRfUFJPUEVSVFlfUEFSU0VSX01BUF9FTlRSWShtYXAsIENTU1Byb3BlcnR5Q2FwdGlvblNp
ZGUsIGNhcHRpb25TaWRlS2V5d29yZHMpOworICAgICAgICBzdGF0aWMgY29uc3QgaW50IGJvcmRl
ckNvbGxhcHNlS2V5d29yZHNbXSA9IHsgQ1NTVmFsdWVDb2xsYXBzZSwgQ1NTVmFsdWVTZXBhcmF0
ZSB9OyAvLyBjb2xsYXBzZSB8IHNlcGFyYXRlIHwgaW5oZXJpdAorICAgICAgICBTRVRfUFJPUEVS
VFlfUEFSU0VSX01BUF9FTlRSWShtYXAsIENTU1Byb3BlcnR5Qm9yZGVyQ29sbGFwc2UsIGJvcmRl
ckNvbGxhcHNlS2V5d29yZHMpOworICAgICAgICBzdGF0aWMgY29uc3QgaW50IHZpc2liaWxpdHlL
ZXl3b3Jkc1tdID0geyBDU1NWYWx1ZVZpc2libGUsIENTU1ZhbHVlSGlkZGVuLCBDU1NWYWx1ZUNv
bGxhcHNlIH07IC8vIHZpc2libGUgfCBoaWRkZW4gfCBjb2xsYXBzZSB8IGluaGVyaXQKKyAgICAg
ICAgU0VUX1BST1BFUlRZX1BBUlNFUl9NQVBfRU5UUlkobWFwLCBDU1NQcm9wZXJ0eVZpc2liaWxp
dHksIHZpc2liaWxpdHlLZXl3b3Jkcyk7CisgICAgICAgIHN0YXRpYyBjb25zdCBpbnQgb3ZlcmZs
b3dLZXl3b3Jkc1tdID0geyBDU1NWYWx1ZVZpc2libGUsIENTU1ZhbHVlSGlkZGVuLCBDU1NWYWx1
ZVNjcm9sbCwgQ1NTVmFsdWVBdXRvLCBDU1NWYWx1ZU92ZXJsYXksIENTU1ZhbHVlV2Via2l0TWFy
cXVlZX07IC8vIHZpc2libGUgfCBoaWRkZW4gfCBzY3JvbGwgfCBhdXRvIHwgbWFycXVlZSB8IG92
ZXJsYXkgfCBpbmhlcml0CisgICAgICAgIFNFVF9QUk9QRVJUWV9QQVJTRVJfTUFQX0VOVFJZKG1h
cCwgQ1NTUHJvcGVydHlPdmVyZmxvd1gsIG92ZXJmbG93S2V5d29yZHMpOworICAgICAgICBTRVRf
UFJPUEVSVFlfUEFSU0VSX01BUF9FTlRSWShtYXAsIENTU1Byb3BlcnR5T3ZlcmZsb3dZLCBvdmVy
Zmxvd0tleXdvcmRzKTsKKyAgICAgICAgc3RhdGljIGNvbnN0IGludCBsaXN0U3R5bGVQb3NpdGlv
bktleXdvcmRzW10gPSB7IENTU1ZhbHVlSW5zaWRlLCBDU1NWYWx1ZU91dHNpZGUgfTsgLy8gaW5z
aWRlIHwgb3V0c2lkZSB8IGluaGVyaXQKKyAgICAgICAgU0VUX1BST1BFUlRZX1BBUlNFUl9NQVBf
RU5UUlkobWFwLCBDU1NQcm9wZXJ0eUxpc3RTdHlsZVBvc2l0aW9uLCBsaXN0U3R5bGVQb3NpdGlv
bktleXdvcmRzKTsKKyAgICAgICAgc3RhdGljIGNvbnN0IGludCBkaXJlY3Rpb25LZXl3b3Jkc1td
ID0geyBDU1NWYWx1ZUx0ciwgQ1NTVmFsdWVSdGwgfTsgLy8gbHRyIHwgcnRsIHwgaW5oZXJpdAor
ICAgICAgICBTRVRfUFJPUEVSVFlfUEFSU0VSX01BUF9FTlRSWShtYXAsIENTU1Byb3BlcnR5RGly
ZWN0aW9uLCBkaXJlY3Rpb25LZXl3b3Jkcyk7CisgICAgICAgIHN0YXRpYyBjb25zdCBpbnQgZmxv
YXRLZXl3b3Jkc1tdID0geyBDU1NWYWx1ZUxlZnQsIENTU1ZhbHVlUmlnaHQsIENTU1ZhbHVlTm9u
ZSwgQ1NTVmFsdWVDZW50ZXIsIENTU1ZhbHVlV2Via2l0UG9zaXRpb25lZCB9OyAvLyBsZWZ0IHwg
cmlnaHQgfCBub25lIHwgcG9zaXRpb25lZCB8IGNlbnRlciAoZm9yIGJ1Z2d5IENTUywgbWFwcyB0
byBub25lKQorICAgICAgICBTRVRfUFJPUEVSVFlfUEFSU0VSX01BUF9FTlRSWShtYXAsIENTU1By
b3BlcnR5RmxvYXQsIGZsb2F0S2V5d29yZHMpOworICAgICAgICBzdGF0aWMgY29uc3QgaW50IGNs
ZWFyS2V5d29yZHNbXSA9IHsgQ1NTVmFsdWVOb25lLCBDU1NWYWx1ZUxlZnQsIENTU1ZhbHVlUmln
aHQsIENTU1ZhbHVlQm90aCB9OyAvLyBub25lIHwgbGVmdCB8IHJpZ2h0IHwgYm90aCB8IGluaGVy
aXQKKyAgICAgICAgU0VUX1BST1BFUlRZX1BBUlNFUl9NQVBfRU5UUlkobWFwLCBDU1NQcm9wZXJ0
eUNsZWFyLCBjbGVhcktleXdvcmRzKTsKKyAgICAgICAgc3RhdGljIGNvbnN0IGludCB3b3JkQnJl
YWtLZXl3b3Jkc1tdID0geyBDU1NWYWx1ZU5vcm1hbCwgQ1NTVmFsdWVCcmVha0FsbCwgQ1NTVmFs
dWVCcmVha1dvcmQgfTsgLy8gbm9ybWFsIHwgYnJlYWstYWxsIHwgYnJlYWstd29yZCAodGhpcyBp
cyBhIGN1c3RvbSBleHRlbnNpb24pCisgICAgICAgIFNFVF9QUk9QRVJUWV9QQVJTRVJfTUFQX0VO
VFJZKG1hcCwgQ1NTUHJvcGVydHlXb3JkQnJlYWssIHdvcmRCcmVha0tleXdvcmRzKTsKKyAgICAg
ICAgc3RhdGljIGNvbnN0IGludCB3b3JkV3JhcEtleXdvcmRzW10gPSB7IENTU1ZhbHVlTm9ybWFs
LCBDU1NWYWx1ZUJyZWFrV29yZCB9OyAvLyBub3JtYWwgfCBicmVhay13b3JkCisgICAgICAgIFNF
VF9QUk9QRVJUWV9QQVJTRVJfTUFQX0VOVFJZKG1hcCwgQ1NTUHJvcGVydHlXb3JkV3JhcCwgd29y
ZFdyYXBLZXl3b3Jkcyk7CisgICAgICAgIHN0YXRpYyBjb25zdCBpbnQgc3BlYWtLZXl3b3Jkc1td
ID0geyBDU1NWYWx1ZU5vbmUsIENTU1ZhbHVlTm9ybWFsLCBDU1NWYWx1ZVNwZWxsT3V0LCBDU1NW
YWx1ZURpZ2l0cywgQ1NTVmFsdWVMaXRlcmFsUHVuY3R1YXRpb24sIENTU1ZhbHVlTm9QdW5jdHVh
dGlvbiB9OyAvLyBub25lIHwgbm9ybWFsIHwgc3BlbGwtb3V0IHwgZGlnaXRzIHwgbGl0ZXJhbC1w
dW5jdHVhdGlvbiB8IG5vLXB1bmN0dWF0aW9uIHwgaW5oZXJpdAorICAgICAgICBTRVRfUFJPUEVS
VFlfUEFSU0VSX01BUF9FTlRSWShtYXAsIENTU1Byb3BlcnR5U3BlYWssIHNwZWFrS2V5d29yZHMp
OworICAgICAgICBzdGF0aWMgY29uc3QgaW50IGZvbnRTdHlsZUtleXdvcmRzW10gPSB7IENTU1Zh
bHVlTm9ybWFsLCBDU1NWYWx1ZUl0YWxpYywgQ1NTVmFsdWVPYmxpcXVlIH07IC8vIG5vcm1hbCB8
IGl0YWxpYyB8IG9ibGlxdWUgfCBpbmhlcml0CisgICAgICAgIFNFVF9QUk9QRVJUWV9QQVJTRVJf
TUFQX0VOVFJZKG1hcCwgQ1NTUHJvcGVydHlGb250U3R5bGUsIGZvbnRTdHlsZUtleXdvcmRzKTsK
KyAgICAgICAgc3RhdGljIGNvbnN0IGludCB0YWJsZUxheW91dEtleXdvcmRzW10gPSB7IENTU1Zh
bHVlQXV0bywgQ1NTVmFsdWVGaXhlZCB9OyAvLyBhdXRvIHwgZml4ZWQgfCBpbmhlcml0CisgICAg
ICAgIFNFVF9QUk9QRVJUWV9QQVJTRVJfTUFQX0VOVFJZKG1hcCwgQ1NTUHJvcGVydHlUYWJsZUxh
eW91dCwgdGFibGVMYXlvdXRLZXl3b3Jkcyk7CisgICAgICAgIHN0YXRpYyBjb25zdCBpbnQgYm94
QWxpZ25LZXl3b3Jkc1tdID0geyBDU1NWYWx1ZVN0cmV0Y2gsIENTU1ZhbHVlU3RhcnQsIENTU1Zh
bHVlRW5kLCBDU1NWYWx1ZUNlbnRlciwgQ1NTVmFsdWVCYXNlbGluZSB9OworICAgICAgICBTRVRf
UFJPUEVSVFlfUEFSU0VSX01BUF9FTlRSWShtYXAsIENTU1Byb3BlcnR5V2Via2l0Qm94QWxpZ24s
IGJveEFsaWduS2V5d29yZHMpOworICAgICAgICBzdGF0aWMgY29uc3QgaW50IGJveERpcmVjdGlv
bktleXdvcmRzW10gPSB7IENTU1ZhbHVlTm9ybWFsLCBDU1NWYWx1ZVJldmVyc2UgfTsKKyAgICAg
ICAgU0VUX1BST1BFUlRZX1BBUlNFUl9NQVBfRU5UUlkobWFwLCBDU1NQcm9wZXJ0eVdlYmtpdEJv
eERpcmVjdGlvbiwgYm94RGlyZWN0aW9uS2V5d29yZHMpOworICAgICAgICBzdGF0aWMgY29uc3Qg
aW50IGJveExpbmVzS2V5d29yZHNbXSA9IHsgQ1NTVmFsdWVTaW5nbGUsIENTU1ZhbHVlTXVsdGlw
bGUgfTsKKyAgICAgICAgU0VUX1BST1BFUlRZX1BBUlNFUl9NQVBfRU5UUlkobWFwLCBDU1NQcm9w
ZXJ0eVdlYmtpdEJveExpbmVzLCBib3hMaW5lc0tleXdvcmRzKTsKKyAgICAgICAgc3RhdGljIGNv
bnN0IGludCBib3hPcmllbnRLZXl3b3Jkc1tdID0geyBDU1NWYWx1ZUhvcml6b250YWwsIENTU1Zh
bHVlVmVydGljYWwsIENTU1ZhbHVlSW5saW5lQXhpcywgQ1NTVmFsdWVCbG9ja0F4aXMgfTsKKyAg
ICAgICAgU0VUX1BST1BFUlRZX1BBUlNFUl9NQVBfRU5UUlkobWFwLCBDU1NQcm9wZXJ0eVdlYmtp
dEJveE9yaWVudCwgYm94T3JpZW50S2V5d29yZHMpOworICAgICAgICBzdGF0aWMgY29uc3QgaW50
IGJveFBhY2tLZXl3b3Jkc1tdID0geyBDU1NWYWx1ZVN0YXJ0LCBDU1NWYWx1ZUVuZCwgQ1NTVmFs
dWVDZW50ZXIsIENTU1ZhbHVlSnVzdGlmeSB9OworICAgICAgICBTRVRfUFJPUEVSVFlfUEFSU0VS
X01BUF9FTlRSWShtYXAsIENTU1Byb3BlcnR5V2Via2l0Qm94UGFjaywgYm94UGFja0tleXdvcmRz
KTsKKyAgICAgICAgc3RhdGljIGNvbnN0IGludCBib3hTaXppbmdLZXl3b3Jkc1tdID0geyBDU1NW
YWx1ZUJvcmRlckJveCwgQ1NTVmFsdWVDb250ZW50Qm94IH07CisgICAgICAgIFNFVF9QUk9QRVJU
WV9QQVJTRVJfTUFQX0VOVFJZKG1hcCwgQ1NTUHJvcGVydHlCb3hTaXppbmcsIGJveFNpemluZ0tl
eXdvcmRzKTsKKyAgICAgICAgc3RhdGljIGNvbnN0IGludCBjb2xvckNvcnJlY3Rpb25LZXl3b3Jk
c1tdID0geyBDU1NWYWx1ZVNyZ2IsIENTU1ZhbHVlRGVmYXVsdCB9OworICAgICAgICBTRVRfUFJP
UEVSVFlfUEFSU0VSX01BUF9FTlRSWShtYXAsIENTU1Byb3BlcnR5V2Via2l0Q29sb3JDb3JyZWN0
aW9uLCBjb2xvckNvcnJlY3Rpb25LZXl3b3Jkcyk7CisgICAgICAgIHN0YXRpYyBjb25zdCBpbnQg
ZmxleFBhY2tLZXl3b3Jkc1tdID0geyBDU1NWYWx1ZVN0YXJ0LCBDU1NWYWx1ZUVuZCwgQ1NTVmFs
dWVDZW50ZXIsIENTU1ZhbHVlSnVzdGlmeSwgQ1NTVmFsdWVEaXN0cmlidXRlIH07CisgICAgICAg
IFNFVF9QUk9QRVJUWV9QQVJTRVJfTUFQX0VOVFJZKG1hcCwgQ1NTUHJvcGVydHlXZWJraXRGbGV4
UGFjaywgZmxleFBhY2tLZXl3b3Jkcyk7CisgICAgICAgIHN0YXRpYyBjb25zdCBpbnQgZmxleEFs
aWduS2V5d29yZHNbXSA9IHsgQ1NTVmFsdWVTdGFydCwgQ1NTVmFsdWVFbmQsIENTU1ZhbHVlQ2Vu
dGVyLCBDU1NWYWx1ZUJhc2VsaW5lLCBDU1NWYWx1ZVN0cmV0Y2ggfTsKKyAgICAgICAgU0VUX1BS
T1BFUlRZX1BBUlNFUl9NQVBfRU5UUlkobWFwLCBDU1NQcm9wZXJ0eVdlYmtpdEZsZXhBbGlnbiwg
ZmxleEFsaWduS2V5d29yZHMpOworICAgICAgICBzdGF0aWMgY29uc3QgaW50IGZsZXhJdGVtQWxp
Z25LZXl3b3Jkc1tdID0geyBDU1NWYWx1ZUF1dG8sIENTU1ZhbHVlU3RhcnQsIENTU1ZhbHVlRW5k
LCBDU1NWYWx1ZUNlbnRlciwgQ1NTVmFsdWVTdHJldGNoLCBDU1NWYWx1ZUJhc2VsaW5lLCBDU1NW
YWx1ZVN0cmV0Y2ggfTsKKyAgICAgICAgU0VUX1BST1BFUlRZX1BBUlNFUl9NQVBfRU5UUlkobWFw
LCBDU1NQcm9wZXJ0eVdlYmtpdEZsZXhJdGVtQWxpZ24sIGZsZXhJdGVtQWxpZ25LZXl3b3Jkcyk7
CisgICAgICAgIHN0YXRpYyBjb25zdCBpbnQgZmxleERpcmVjdGlvbktleXdvcmRzW10gPSB7IENT
U1ZhbHVlUm93LCBDU1NWYWx1ZVJvd1JldmVyc2UsIENTU1ZhbHVlQ29sdW1uLCBDU1NWYWx1ZUNv
bHVtblJldmVyc2UgfTsKKyAgICAgICAgU0VUX1BST1BFUlRZX1BBUlNFUl9NQVBfRU5UUlkobWFw
LCBDU1NQcm9wZXJ0eVdlYmtpdEZsZXhEaXJlY3Rpb24sIGZsZXhEaXJlY3Rpb25LZXl3b3Jkcyk7
CisgICAgICAgIHN0YXRpYyBjb25zdCBpbnQgZmxleFdyYXBLZXl3b3Jkc1tdID0geyBDU1NWYWx1
ZU5vbmUsIENTU1ZhbHVlV3JhcCwgQ1NTVmFsdWVXcmFwUmV2ZXJzZSB9OworICAgICAgICBTRVRf
UFJPUEVSVFlfUEFSU0VSX01BUF9FTlRSWShtYXAsIENTU1Byb3BlcnR5V2Via2l0RmxleFdyYXAs
IGZsZXhXcmFwS2V5d29yZHMpOworICAgICAgICBzdGF0aWMgY29uc3QgaW50IG1hcnF1ZWVEaXJl
Y3Rpb25LZXl3b3Jkc1tdID0geyBDU1NWYWx1ZUZvcndhcmRzLCBDU1NWYWx1ZUJhY2t3YXJkcywg
Q1NTVmFsdWVBaGVhZCwgQ1NTVmFsdWVSZXZlcnNlLCBDU1NWYWx1ZUxlZnQsIENTU1ZhbHVlUmln
aHQsIENTU1ZhbHVlRG93biwgQ1NTVmFsdWVVcCwgQ1NTVmFsdWVBdXRvIH07CisgICAgICAgIFNF
VF9QUk9QRVJUWV9QQVJTRVJfTUFQX0VOVFJZKG1hcCwgQ1NTUHJvcGVydHlXZWJraXRNYXJxdWVl
RGlyZWN0aW9uLCBtYXJxdWVlRGlyZWN0aW9uS2V5d29yZHMpOworICAgICAgICBzdGF0aWMgY29u
c3QgaW50IG1hcnF1ZWVTdHlsZUtleXdvcmRzW10gPSB7IENTU1ZhbHVlTm9uZSwgQ1NTVmFsdWVT
bGlkZSwgQ1NTVmFsdWVTY3JvbGwsIENTU1ZhbHVlQWx0ZXJuYXRlIH07CisgICAgICAgIFNFVF9Q
Uk9QRVJUWV9QQVJTRVJfTUFQX0VOVFJZKG1hcCwgQ1NTUHJvcGVydHlXZWJraXRNYXJxdWVlU3R5
bGUsIG1hcnF1ZWVTdHlsZUtleXdvcmRzKTsKKyAgICAgICAgc3RhdGljIGNvbnN0IGludCB1c2Vy
RHJhZ0tleXdvcmRzW10gPSB7IENTU1ZhbHVlQXV0bywgQ1NTVmFsdWVOb25lLCBDU1NWYWx1ZUVs
ZW1lbnQgfTsgLy8gYXV0byB8IG5vbmUgfCBlbGVtZW50CisgICAgICAgIFNFVF9QUk9QRVJUWV9Q
QVJTRVJfTUFQX0VOVFJZKG1hcCwgQ1NTUHJvcGVydHlXZWJraXRVc2VyRHJhZywgdXNlckRyYWdL
ZXl3b3Jkcyk7CisgICAgICAgIHN0YXRpYyBjb25zdCBpbnQgdXNlck1vZGlmeUtleXdvcmRzW10g
PSB7IENTU1ZhbHVlUmVhZE9ubHksIENTU1ZhbHVlUmVhZFdyaXRlLCBDU1NWYWx1ZVJlYWRXcml0
ZVBsYWludGV4dE9ubHkgfTsgLy8gcmVhZC1vbmx5IHwgcmVhZC13cml0ZQorICAgICAgICBTRVRf
UFJPUEVSVFlfUEFSU0VSX01BUF9FTlRSWShtYXAsIENTU1Byb3BlcnR5V2Via2l0VXNlck1vZGlm
eSwgdXNlck1vZGlmeUtleXdvcmRzKTsKKyAgICAgICAgc3RhdGljIGNvbnN0IGludCB1c2VyU2Vs
ZWN0S2V5d29yZHNbXSA9IHsgQ1NTVmFsdWVBdXRvLCBDU1NWYWx1ZU5vbmUsIENTU1ZhbHVlVGV4
dCB9OyAvLyBhdXRvIHwgbm9uZSB8IHRleHQKKyAgICAgICAgU0VUX1BST1BFUlRZX1BBUlNFUl9N
QVBfRU5UUlkobWFwLCBDU1NQcm9wZXJ0eVdlYmtpdFVzZXJTZWxlY3QsIHVzZXJTZWxlY3RLZXl3
b3Jkcyk7CisgICAgICAgIHN0YXRpYyBjb25zdCBpbnQgdGV4dE92ZXJmbG93S2V5d29yZHNbXSA9
IHsgQ1NTVmFsdWVDbGlwLCBDU1NWYWx1ZUVsbGlwc2lzIH07IC8vIGNsaXAgfCBlbGxpcHNpcwor
ICAgICAgICBTRVRfUFJPUEVSVFlfUEFSU0VSX01BUF9FTlRSWShtYXAsIENTU1Byb3BlcnR5VGV4
dE92ZXJmbG93LCB0ZXh0T3ZlcmZsb3dLZXl3b3Jkcyk7CisgICAgICAgIHN0YXRpYyBjb25zdCBp
bnQgdHJhbnNmb3JtU3R5bGVLZXl3b3Jkc1tdID0geyBDU1NWYWx1ZUZsYXQsIENTU1ZhbHVlUHJl
c2VydmUzZCB9OworICAgICAgICBTRVRfUFJPUEVSVFlfUEFSU0VSX01BUF9FTlRSWShtYXAsIENT
U1Byb3BlcnR5V2Via2l0VHJhbnNmb3JtU3R5bGUsIHRyYW5zZm9ybVN0eWxlS2V5d29yZHMpOwor
ICAgICAgICBzdGF0aWMgY29uc3QgaW50IGJhY2tmYWNlVmlzaWJpbGl0eUtleXdvcmRzW10gPSB7
IENTU1ZhbHVlVmlzaWJsZSwgQ1NTVmFsdWVIaWRkZW4gfTsKKyAgICAgICAgU0VUX1BST1BFUlRZ
X1BBUlNFUl9NQVBfRU5UUlkobWFwLCBDU1NQcm9wZXJ0eVdlYmtpdEJhY2tmYWNlVmlzaWJpbGl0
eSwgYmFja2ZhY2VWaXNpYmlsaXR5S2V5d29yZHMpOworICAgICAgICBzdGF0aWMgY29uc3QgaW50
IHByaW50Q29sb3JBZGp1c3RLZXl3b3Jkc1tdID0geyBDU1NWYWx1ZUV4YWN0LCBDU1NWYWx1ZUVj
b25vbXkgfTsKKyAgICAgICAgU0VUX1BST1BFUlRZX1BBUlNFUl9NQVBfRU5UUlkobWFwLCBDU1NQ
cm9wZXJ0eVdlYmtpdFByaW50Q29sb3JBZGp1c3QsIHByaW50Q29sb3JBZGp1c3RLZXl3b3Jkcyk7
CisgICAgICAgIHN0YXRpYyBjb25zdCBpbnQgbWFyZ2luQ29sbGFwc2VLZXl3b3Jkc1tdID0geyBD
U1NWYWx1ZUNvbGxhcHNlLCBDU1NWYWx1ZVNlcGFyYXRlLCBDU1NWYWx1ZURpc2NhcmQgfTsKKyAg
ICAgICAgU0VUX1BST1BFUlRZX1BBUlNFUl9NQVBfRU5UUlkobWFwLCBDU1NQcm9wZXJ0eVdlYmtp
dE1hcmdpbkJlZm9yZUNvbGxhcHNlLCBtYXJnaW5Db2xsYXBzZUtleXdvcmRzKTsKKyAgICAgICAg
U0VUX1BST1BFUlRZX1BBUlNFUl9NQVBfRU5UUlkobWFwLCBDU1NQcm9wZXJ0eVdlYmtpdE1hcmdp
bkFmdGVyQ29sbGFwc2UsIG1hcmdpbkNvbGxhcHNlS2V5d29yZHMpOworICAgICAgICBTRVRfUFJP
UEVSVFlfUEFSU0VSX01BUF9FTlRSWShtYXAsIENTU1Byb3BlcnR5V2Via2l0TWFyZ2luVG9wQ29s
bGFwc2UsIG1hcmdpbkNvbGxhcHNlS2V5d29yZHMpOworICAgICAgICBTRVRfUFJPUEVSVFlfUEFS
U0VSX01BUF9FTlRSWShtYXAsIENTU1Byb3BlcnR5V2Via2l0TWFyZ2luQm90dG9tQ29sbGFwc2Us
IG1hcmdpbkNvbGxhcHNlS2V5d29yZHMpOworICAgICAgICBzdGF0aWMgY29uc3QgaW50IHRleHRN
b2RlS2V5d29yZHNbXSA9IHsgQ1NTVmFsdWVDb250aW51b3VzLCBDU1NWYWx1ZVNraXBXaGl0ZVNw
YWNlIH07CisgICAgICAgIFNFVF9QUk9QRVJUWV9QQVJTRVJfTUFQX0VOVFJZKG1hcCwgQ1NTUHJv
cGVydHlUZXh0TGluZVRocm91Z2hNb2RlLCB0ZXh0TW9kZUtleXdvcmRzKTsKKyAgICAgICAgU0VU
X1BST1BFUlRZX1BBUlNFUl9NQVBfRU5UUlkobWFwLCBDU1NQcm9wZXJ0eVRleHRPdmVybGluZU1v
ZGUsIHRleHRNb2RlS2V5d29yZHMpOworICAgICAgICBTRVRfUFJPUEVSVFlfUEFSU0VSX01BUF9F
TlRSWShtYXAsIENTU1Byb3BlcnR5VGV4dFVuZGVybGluZU1vZGUsIHRleHRNb2RlS2V5d29yZHMp
OworICAgICAgICBzdGF0aWMgY29uc3QgaW50IHRleHRTdHlsZUtleXdvcmRzW10gPSB7IENTU1Zh
bHVlTm9uZSwgQ1NTVmFsdWVTb2xpZCwgQ1NTVmFsdWVEb3VibGUsIENTU1ZhbHVlRGFzaGVkLCBD
U1NWYWx1ZURvdERhc2gsIENTU1ZhbHVlRG90RG90RGFzaCwgQ1NTVmFsdWVXYXZlIH07CisgICAg
ICAgIFNFVF9QUk9QRVJUWV9QQVJTRVJfTUFQX0VOVFJZKG1hcCwgQ1NTUHJvcGVydHlUZXh0TGlu
ZVRocm91Z2hTdHlsZSwgdGV4dFN0eWxlS2V5d29yZHMpOworICAgICAgICBTRVRfUFJPUEVSVFlf
UEFSU0VSX01BUF9FTlRSWShtYXAsIENTU1Byb3BlcnR5VGV4dE92ZXJsaW5lU3R5bGUsIHRleHRT
dHlsZUtleXdvcmRzKTsKKyAgICAgICAgU0VUX1BST1BFUlRZX1BBUlNFUl9NQVBfRU5UUlkobWFw
LCBDU1NQcm9wZXJ0eVRleHRVbmRlcmxpbmVTdHlsZSwgdGV4dFN0eWxlS2V5d29yZHMpOworICAg
ICAgICBzdGF0aWMgY29uc3QgaW50IHRleHRSZW5kZXJpbmdLZXl3b3Jkc1tdID0geyBDU1NWYWx1
ZUF1dG8sIENTU1ZhbHVlT3B0aW1pemVzcGVlZCwgQ1NTVmFsdWVPcHRpbWl6ZWxlZ2liaWxpdHks
IENTU1ZhbHVlR2VvbWV0cmljcHJlY2lzaW9uIH07IC8vIGF1dG8gfCBvcHRpbWl6ZVNwZWVkIHwg
b3B0aW1pemVMZWdpYmlsaXR5IHwgZ2VvbWV0cmljUHJlY2lzaW9uCisgICAgICAgIFNFVF9QUk9Q
RVJUWV9QQVJTRVJfTUFQX0VOVFJZKG1hcCwgQ1NTUHJvcGVydHlUZXh0UmVuZGVyaW5nLCB0ZXh0
UmVuZGVyaW5nS2V5d29yZHMpOworICAgICAgICBzdGF0aWMgY29uc3QgaW50IHJlc2l6ZUtleXdv
cmRzW10gPSB7IENTU1ZhbHVlTm9uZSwgQ1NTVmFsdWVCb3RoLCBDU1NWYWx1ZUhvcml6b250YWws
IENTU1ZhbHVlVmVydGljYWwsIENTU1ZhbHVlQXV0byB9OyAvLyBub25lIHwgYm90aCB8IGhvcml6
b250YWwgfCB2ZXJ0aWNhbCB8IGF1dG8KKyAgICAgICAgU0VUX1BST1BFUlRZX1BBUlNFUl9NQVBf
RU5UUlkobWFwLCBDU1NQcm9wZXJ0eVJlc2l6ZSwgcmVzaXplS2V5d29yZHMpOworICAgICAgICBz
dGF0aWMgY29uc3QgaW50IGltYWdlUmVuZGVyaW5nS2V5d29yZHNbXSA9IHsgQ1NTVmFsdWVBdXRv
LCBDU1NWYWx1ZVdlYmtpdE9wdGltaXplQ29udHJhc3QgfTsgLy8gYXV0byB8IG9wdGltaXplQ29u
dHJhc3QKKyAgICAgICAgU0VUX1BST1BFUlRZX1BBUlNFUl9NQVBfRU5UUlkobWFwLCBDU1NQcm9w
ZXJ0eUltYWdlUmVuZGVyaW5nLCBpbWFnZVJlbmRlcmluZ0tleXdvcmRzKTsKKyAgICAgICAgc3Rh
dGljIGNvbnN0IGludCB0ZXh0U2l6ZUFkanVzdEtleXdvcmRzW10gPSB7IENTU1ZhbHVlQXV0bywg
Q1NTVmFsdWVOb25lIH07CisgICAgICAgIFNFVF9QUk9QRVJUWV9QQVJTRVJfTUFQX0VOVFJZKG1h
cCwgQ1NTUHJvcGVydHlXZWJraXRUZXh0U2l6ZUFkanVzdCwgdGV4dFNpemVBZGp1c3RLZXl3b3Jk
cyk7CisgICAgICAgIHN0YXRpYyBjb25zdCBpbnQgcnRsT3JkZXJpbmdLZXl3b3Jkc1tdID0geyBD
U1NWYWx1ZUxvZ2ljYWwsIENTU1ZhbHVlVmlzdWFsIH07CisgICAgICAgIFNFVF9QUk9QRVJUWV9Q
QVJTRVJfTUFQX0VOVFJZKG1hcCwgQ1NTUHJvcGVydHlXZWJraXRSdGxPcmRlcmluZywgcnRsT3Jk
ZXJpbmdLZXl3b3Jkcyk7CisgICAgICAgIHN0YXRpYyBjb25zdCBpbnQgbmJzcE1vZGVLZXl3b3Jk
c1tdID0geyBDU1NWYWx1ZU5vcm1hbCwgQ1NTVmFsdWVTcGFjZSB9OyAvLyBub3JtYWwgfCBzcGFj
ZQorICAgICAgICBTRVRfUFJPUEVSVFlfUEFSU0VSX01BUF9FTlRSWShtYXAsIENTU1Byb3BlcnR5
V2Via2l0TmJzcE1vZGUsIG5ic3BNb2RlS2V5d29yZHMpOworICAgICAgICBzdGF0aWMgY29uc3Qg
aW50IGxpbmVCcmVha0tleXdvcmRzW10gPSB7IENTU1ZhbHVlTm9ybWFsLCBDU1NWYWx1ZUFmdGVy
V2hpdGVTcGFjZSB9OyAvLyBub3JtYWwgfCBhZnRlci13aGl0ZS1zcGFjZQorICAgICAgICBTRVRf
UFJPUEVSVFlfUEFSU0VSX01BUF9FTlRSWShtYXAsIENTU1Byb3BlcnR5V2Via2l0TGluZUJyZWFr
LCBsaW5lQnJlYWtLZXl3b3Jkcyk7CisgICAgICAgIHN0YXRpYyBjb25zdCBpbnQgbWF0Y2hOZWFy
ZXN0TWFpbEJsb2NrcXVvdGVDb2xvcktleXdvcmRzW10gPSB7IENTU1ZhbHVlTm9ybWFsLCBDU1NW
YWx1ZU1hdGNoIH07IC8vIG5vcm1hbCB8IG1hdGNoCisgICAgICAgIFNFVF9QUk9QRVJUWV9QQVJT
RVJfTUFQX0VOVFJZKG1hcCwgQ1NTUHJvcGVydHlXZWJraXRNYXRjaE5lYXJlc3RNYWlsQmxvY2tx
dW90ZUNvbG9yLCBtYXRjaE5lYXJlc3RNYWlsQmxvY2txdW90ZUNvbG9yS2V5d29yZHMpOworICAg
ICAgICBzdGF0aWMgY29uc3QgaW50IGh5cGhlbnNLZXl3b3Jkc1tdID0geyBDU1NWYWx1ZU5vbmUs
IENTU1ZhbHVlTWFudWFsLCBDU1NWYWx1ZUF1dG8gfTsKKyAgICAgICAgU0VUX1BST1BFUlRZX1BB
UlNFUl9NQVBfRU5UUlkobWFwLCBDU1NQcm9wZXJ0eVdlYmtpdEh5cGhlbnMsIGh5cGhlbnNLZXl3
b3Jkcyk7CisgICAgICAgIHN0YXRpYyBjb25zdCBpbnQgbGluZVNuYXBLZXl3b3Jkc1tdID0geyBD
U1NWYWx1ZU5vbmUsIENTU1ZhbHVlQmFzZWxpbmUsIENTU1ZhbHVlQ29udGFpbiB9OworICAgICAg
ICBTRVRfUFJPUEVSVFlfUEFSU0VSX01BUF9FTlRSWShtYXAsIENTU1Byb3BlcnR5V2Via2l0TGlu
ZVNuYXAsIGxpbmVTbmFwS2V5d29yZHMpOworICAgICAgICBzdGF0aWMgY29uc3QgaW50IGxpbmVB
bGlnbktleXdvcmRzW10gPSB7IENTU1ZhbHVlTm9uZSwgQ1NTVmFsdWVFZGdlcyB9OworICAgICAg
ICBTRVRfUFJPUEVSVFlfUEFSU0VSX01BUF9FTlRSWShtYXAsIENTU1Byb3BlcnR5V2Via2l0TGlu
ZUFsaWduLCBsaW5lQWxpZ25LZXl3b3Jkcyk7CisgICAgICAgIHN0YXRpYyBjb25zdCBpbnQgYm9y
ZGVyRml0S2V5d29yZHNbXSA9IHsgQ1NTVmFsdWVCb3JkZXIsIENTU1ZhbHVlTGluZXMgfTsKKyAg
ICAgICAgU0VUX1BST1BFUlRZX1BBUlNFUl9NQVBfRU5UUlkobWFwLCBDU1NQcm9wZXJ0eVdlYmtp
dEJvcmRlckZpdCwgYm9yZGVyRml0S2V5d29yZHMpOworICAgICAgICBzdGF0aWMgY29uc3QgaW50
IHRleHRTZWN1cml0eUtleXdvcmRzW10gPSB7IENTU1ZhbHVlRGlzYywgQ1NTVmFsdWVDaXJjbGUs
IENTU1ZhbHVlU3F1YXJlLCBDU1NWYWx1ZU5vbmUgfTsgLy8gZGlzYyB8IGNpcmNsZSB8IHNxdWFy
ZSB8IG5vbmUgfCBpbmhlcml0CisgICAgICAgIFNFVF9QUk9QRVJUWV9QQVJTRVJfTUFQX0VOVFJZ
KG1hcCwgQ1NTUHJvcGVydHlXZWJraXRUZXh0U2VjdXJpdHksIHRleHRTZWN1cml0eUtleXdvcmRz
KTsKKyAgICAgICAgc3RhdGljIGNvbnN0IGludCBmb250U21vb3RoaW5nS2V5d29yZHNbXSA9IHsg
Q1NTVmFsdWVBdXRvLCBDU1NWYWx1ZU5vbmUsIENTU1ZhbHVlQW50aWFsaWFzZWQsIENTU1ZhbHVl
U3VicGl4ZWxBbnRpYWxpYXNlZCB9OworICAgICAgICBTRVRfUFJPUEVSVFlfUEFSU0VSX01BUF9F
TlRSWShtYXAsIENTU1Byb3BlcnR5V2Via2l0Rm9udFNtb290aGluZywgZm9udFNtb290aGluZ0tl
eXdvcmRzKTsKKyNpZiBFTkFCTEUoT1ZFUkZMT1dfU0NST0xMSU5HKQorICAgICAgICBzdGF0aWMg
Y29uc3QgaW50IG92ZXJmbG93U3Jjb2xsaW5nS2V5d29yZHNbXSA9IHsgQ1NTVmFsdWVBdXRvLCBD
U1NWYWx1ZVRvdWNoIH07CisgICAgICAgIFNFVF9QUk9QRVJUWV9QQVJTRVJfTUFQX0VOVFJZKG1h
cCwgQ1NTUHJvcGVydHlXZWJraXRPdmVyZmxvd1Njcm9sbGluZywgb3ZlcmZsb3dTcmNvbGxpbmdL
ZXl3b3Jkcyk7CisjZW5kaWYKKyAgICAgICAgc3RhdGljIGNvbnN0IGludCB0ZXh0Q29tYmluZUtl
eXdvcmRzW10gPSB7IENTU1ZhbHVlTm9uZSwgQ1NTVmFsdWVIb3Jpem9udGFsIH07CisgICAgICAg
IFNFVF9QUk9QRVJUWV9QQVJTRVJfTUFQX0VOVFJZKG1hcCwgQ1NTUHJvcGVydHlXZWJraXRUZXh0
Q29tYmluZSwgdGV4dENvbWJpbmVLZXl3b3Jkcyk7CisgICAgICAgIHN0YXRpYyBjb25zdCBpbnQg
ZW1waGFzaXNQb3NpdGlvbktleXdvcmRzW10gPSB7IENTU1ZhbHVlT3ZlciwgQ1NTVmFsdWVVbmRl
ciB9OworICAgICAgICBTRVRfUFJPUEVSVFlfUEFSU0VSX01BUF9FTlRSWShtYXAsIENTU1Byb3Bl
cnR5V2Via2l0VGV4dEVtcGhhc2lzUG9zaXRpb24sIGVtcGhhc2lzUG9zaXRpb25LZXl3b3Jkcyk7
CisgICAgICAgIHN0YXRpYyBjb25zdCBpbnQgZm9udEtlcm5pbmdLZXl3b3Jkc1tdID0geyBDU1NW
YWx1ZUF1dG8sIENTU1ZhbHVlTm9ybWFsLCBDU1NWYWx1ZU5vbmUgfTsKKyAgICAgICAgU0VUX1BS
T1BFUlRZX1BBUlNFUl9NQVBfRU5UUlkobWFwLCBDU1NQcm9wZXJ0eVdlYmtpdEZvbnRLZXJuaW5n
LCBmb250S2VybmluZ0tleXdvcmRzKTsKKyAgICAgICAgc3RhdGljIGNvbnN0IGludCB3cmFwRmxv
d0tleXdvcmRzW10gPSB7IENTU1ZhbHVlQXV0bywgQ1NTVmFsdWVCb3RoLCBDU1NWYWx1ZUxlZnQs
IENTU1ZhbHVlUmlnaHQsIENTU1ZhbHVlTWF4aW11bSwgQ1NTVmFsdWVDbGVhciB9OworICAgICAg
ICBTRVRfUFJPUEVSVFlfUEFSU0VSX01BUF9FTlRSWShtYXAsIENTU1Byb3BlcnR5V2Via2l0V3Jh
cEZsb3csIHdyYXBGbG93S2V5d29yZHMpOworICAgICAgICBzdGF0aWMgY29uc3QgaW50IHdyYXBU
aHJvdWdoS2V5d29yZHNbXSA9IHsgQ1NTVmFsdWVXcmFwLCBDU1NWYWx1ZU5vbmUgfTsKKyAgICAg
ICAgU0VUX1BST1BFUlRZX1BBUlNFUl9NQVBfRU5UUlkobWFwLCBDU1NQcm9wZXJ0eVdlYmtpdFdy
YXBUaHJvdWdoLCB3cmFwVGhyb3VnaEtleXdvcmRzKTsKKyAgICAgICAgQ1NTUHJvcGVydHlQYXJz
ZXIgcHJvcGVydHlCb3JkZXJTdHlsZTsKKyAgICAgICAgcHJvcGVydHlCb3JkZXJTdHlsZS5zZXRS
YW5nZShDU1NWYWx1ZU5vbmUsIENTU1ZhbHVlRG91YmxlKTsgLy8gbm9uZSB8IGhpZGRlbiB8IGRv
dHRlZCB8IGRhc2hlZCB8IHNvbGlkIHwgZG91YmxlIHwgZ3Jvb3ZlIHwgcmlkZ2UgfCBpbnNldCB8
IG91dHNldAorICAgICAgICBtYXAuc2V0KENTU1Byb3BlcnR5Qm9yZGVyVG9wU3R5bGUsIHByb3Bl
cnR5Qm9yZGVyU3R5bGUpOworICAgICAgICBtYXAuc2V0KENTU1Byb3BlcnR5Qm9yZGVyUmlnaHRT
dHlsZSwgcHJvcGVydHlCb3JkZXJTdHlsZSk7CisgICAgICAgIG1hcC5zZXQoQ1NTUHJvcGVydHlC
b3JkZXJCb3R0b21TdHlsZSwgcHJvcGVydHlCb3JkZXJTdHlsZSk7CisgICAgICAgIG1hcC5zZXQo
Q1NTUHJvcGVydHlCb3JkZXJMZWZ0U3R5bGUsIHByb3BlcnR5Qm9yZGVyU3R5bGUpOworICAgICAg
ICBtYXAuc2V0KENTU1Byb3BlcnR5V2Via2l0Qm9yZGVyU3RhcnRTdHlsZSwgcHJvcGVydHlCb3Jk
ZXJTdHlsZSk7CisgICAgICAgIG1hcC5zZXQoQ1NTUHJvcGVydHlXZWJraXRCb3JkZXJFbmRTdHls
ZSwgcHJvcGVydHlCb3JkZXJTdHlsZSk7CisgICAgICAgIG1hcC5zZXQoQ1NTUHJvcGVydHlXZWJr
aXRCb3JkZXJCZWZvcmVTdHlsZSwgcHJvcGVydHlCb3JkZXJTdHlsZSk7CisgICAgICAgIG1hcC5z
ZXQoQ1NTUHJvcGVydHlXZWJraXRCb3JkZXJBZnRlclN0eWxlLCBwcm9wZXJ0eUJvcmRlclN0eWxl
KTsKKyAgICAgICAgbWFwLnNldChDU1NQcm9wZXJ0eVdlYmtpdENvbHVtblJ1bGVTdHlsZSwgcHJv
cGVydHlCb3JkZXJTdHlsZSk7CisKKyAgICAgICAgc3RhdGljIGNvbnN0IGludCBsaXN0U3R5bGVU
eXBlS2V5d29yZHNbXSA9IHsgQ1NTVmFsdWVOb25lIH07CisgICAgICAgIENTU1Byb3BlcnR5UGFy
c2VyIHByb3BlcnR5TGlzdFN0eWxlVHlwZShsaXN0U3R5bGVUeXBlS2V5d29yZHMsIFdURl9BUlJB
WV9MRU5HVEgobGlzdFN0eWxlVHlwZUtleXdvcmRzKSk7CisgICAgICAgIHByb3BlcnR5TGlzdFN0
eWxlVHlwZS5zZXRSYW5nZShDU1NWYWx1ZURpc2MsIENTU1ZhbHVlS2F0YWthbmFJcm9oYSk7Cisg
ICAgICAgIG1hcC5zZXQoQ1NTUHJvcGVydHlMaXN0U3R5bGVUeXBlLCBwcm9wZXJ0eUxpc3RTdHls
ZVR5cGUpOworCisjaWYgRU5BQkxFKENTU19HUklEX0xBWU9VVCkKKyAgICAgICAgc3RhdGljIGNv
bnN0IGludCBkaXNwbGF5S2V5d29yZHNbXSA9IHsgQ1NTVmFsdWVOb25lLCBDU1NWYWx1ZVdlYmtp
dEdyaWQsIENTU1ZhbHVlV2Via2l0SW5saW5lR3JpZCB9OworI2Vsc2UKKyAgICAgICAgc3RhdGlj
IGNvbnN0IGludCBkaXNwbGF5S2V5d29yZHNbXSA9IHsgQ1NTVmFsdWVOb25lIH07CisjZW5kaWYK
KyAgICAgICAgLy8gaW5saW5lIHwgYmxvY2sgfCBsaXN0LWl0ZW0gfCBydW4taW4gfCBpbmxpbmUt
YmxvY2sgfCB0YWJsZSB8CisgICAgICAgIC8vIGlubGluZS10YWJsZSB8IHRhYmxlLXJvdy1ncm91
cCB8IHRhYmxlLWhlYWRlci1ncm91cCB8IHRhYmxlLWZvb3Rlci1ncm91cCB8IHRhYmxlLXJvdyB8
CisgICAgICAgIC8vIHRhYmxlLWNvbHVtbi1ncm91cCB8IHRhYmxlLWNvbHVtbiB8IHRhYmxlLWNl
bGwgfCB0YWJsZS1jYXB0aW9uIHwgLXdlYmtpdC1ib3ggfCAtd2Via2l0LWlubGluZS1ib3ggfCBu
b25lIHwgaW5oZXJpdAorICAgICAgICAvLyAtd2Via2l0LWZsZXhib3ggfCAtd2Via2l0LWlubGlu
ZS1mbGV4Ym94IHwgLXdlYmtpdC1ncmlkIHwgLXdlYmtpdC1pbmxpbmUtZ3JpZAorICAgICAgICBD
U1NQcm9wZXJ0eVBhcnNlciBwcm9wZXJ0eURpc3BsYXkoZGlzcGxheUtleXdvcmRzLCBXVEZfQVJS
QVlfTEVOR1RIKGRpc3BsYXlLZXl3b3JkcykpOworICAgICAgICBwcm9wZXJ0eURpc3BsYXkuc2V0
UmFuZ2UoQ1NTVmFsdWVJbmxpbmUsIENTU1ZhbHVlV2Via2l0SW5saW5lRmxleGJveCk7CisgICAg
ICAgIG1hcC5zZXQoQ1NTUHJvcGVydHlEaXNwbGF5LCBwcm9wZXJ0eURpc3BsYXkpOworCisgICAg
ICAgIHN0YXRpYyBjb25zdCBpbnQgdGV4dFRyYW5zZm9ybUtleXdvcmRzW10gPSB7IENTU1ZhbHVl
Tm9uZSB9OworICAgICAgICBDU1NQcm9wZXJ0eVBhcnNlciBwcm9wZXJ0eVRleHRUcmFuc2Zvcm0o
dGV4dFRyYW5zZm9ybUtleXdvcmRzLCBXVEZfQVJSQVlfTEVOR1RIKHRleHRUcmFuc2Zvcm1LZXl3
b3JkcykpOworICAgICAgICBwcm9wZXJ0eVRleHRUcmFuc2Zvcm0uc2V0UmFuZ2UoQ1NTVmFsdWVD
YXBpdGFsaXplLCBDU1NWYWx1ZUxvd2VyY2FzZSk7IC8vIGNhcGl0YWxpemUgfCB1cHBlcmNhc2Ug
fCBsb3dlcmNhc2UgfCBub25lIHwgaW5oZXJpdAorICAgICAgICBtYXAuc2V0KENTU1Byb3BlcnR5
VGV4dFRyYW5zZm9ybSwgcHJvcGVydHlUZXh0VHJhbnNmb3JtKTsKKworICAgICAgICBzdGF0aWMg
Y29uc3QgaW50IG91dGxpbmVTdHlsZUtleXdvcmRzW10gPSB7IENTU1ZhbHVlTm9uZSwgQ1NTVmFs
dWVBdXRvIH07CisgICAgICAgIENTU1Byb3BlcnR5UGFyc2VyIHByb3BlcnR5T3V0bGluZVN0eWxl
KG91dGxpbmVTdHlsZUtleXdvcmRzLCBXVEZfQVJSQVlfTEVOR1RIKG91dGxpbmVTdHlsZUtleXdv
cmRzKSk7CisgICAgICAgIHByb3BlcnR5T3V0bGluZVN0eWxlLnNldFJhbmdlKENTU1ZhbHVlSW5z
ZXQsIENTU1ZhbHVlRG91YmxlKTsgLy8gKDxib3JkZXItc3R5bGU+IGV4Y2VwdCBoaWRkZW4pIHwg
YXV0byB8IGluaGVyaXQKKyAgICAgICAgbWFwLnNldChDU1NQcm9wZXJ0eU91dGxpbmVTdHlsZSwg
cHJvcGVydHlPdXRsaW5lU3R5bGUpOworCisgICAgICAgIHN0YXRpYyBjb25zdCBpbnQgYXBwZWFy
YW5jZUtleXdvcmRzW10gPSB7IENTU1ZhbHVlTm9uZSB9OworICAgICAgICBDU1NQcm9wZXJ0eVBh
cnNlciBwcm9wZXJ0eUFwcGVhcmFuY2UoYXBwZWFyYW5jZUtleXdvcmRzLCBXVEZfQVJSQVlfTEVO
R1RIKGFwcGVhcmFuY2VLZXl3b3JkcykpOworICAgICAgICBwcm9wZXJ0eUFwcGVhcmFuY2Uuc2V0
UmFuZ2UoQ1NTVmFsdWVDaGVja2JveCwgQ1NTVmFsdWVUZXh0YXJlYSk7CisgICAgICAgIG1hcC5z
ZXQoQ1NTUHJvcGVydHlXZWJraXRBcHBlYXJhbmNlLCBwcm9wZXJ0eUFwcGVhcmFuY2UpOworCisg
ICAgICAgIC8vIG5vbmUgfCB2aXNpYmxlUGFpbnRlZCB8IHZpc2libGVGaWxsIHwgdmlzaWJsZVN0
cm9rZSB8IHZpc2libGUgfAorICAgICAgICAvLyBwYWludGVkIHwgZmlsbCB8IHN0cm9rZSB8IGF1
dG8gfCBhbGwgfCBpbmhlcml0CisgICAgICAgIHN0YXRpYyBjb25zdCBpbnQgcG9pbnRlckV2ZW50
c0tleXdvcmRzW10gPSB7IENTU1ZhbHVlVmlzaWJsZSwgQ1NTVmFsdWVOb25lLCBDU1NWYWx1ZUFs
bCwgQ1NTVmFsdWVBdXRvIH07CisgICAgICAgIENTU1Byb3BlcnR5UGFyc2VyIHByb3BlcnR5UG9p
bnRlckV2ZW50cyhwb2ludGVyRXZlbnRzS2V5d29yZHMsIFdURl9BUlJBWV9MRU5HVEgocG9pbnRl
ckV2ZW50c0tleXdvcmRzKSk7CisgICAgICAgIHByb3BlcnR5UG9pbnRlckV2ZW50cy5zZXRSYW5n
ZShDU1NWYWx1ZVZpc2libGVwYWludGVkLCBDU1NWYWx1ZVN0cm9rZSk7CisgICAgICAgIG1hcC5z
ZXQoQ1NTUHJvcGVydHlQb2ludGVyRXZlbnRzLCBwcm9wZXJ0eVBvaW50ZXJFdmVudHMpOworCisg
ICAgICAgIENTU1Byb3BlcnR5UGFyc2VyIHByb3BlcnR5V3JpdGluZ01vZGU7CisgICAgICAgIHBy
b3BlcnR5V3JpdGluZ01vZGUuc2V0UmFuZ2UoQ1NTVmFsdWVIb3Jpem9udGFsVGIsIENTU1ZhbHVl
SG9yaXpvbnRhbEJ0KTsKKyAgICAgICAgbWFwLnNldChDU1NQcm9wZXJ0eVdlYmtpdFdyaXRpbmdN
b2RlLCBwcm9wZXJ0eVdyaXRpbmdNb2RlKTsKKworICAgIH0KKyAgICByZXR1cm4gbWFwLmdldChw
cm9wZXJ0eUlkKTsKK30KKworc3RhdGljIGJvb2wgcGFyc2VLZXl3b3JkVmFsdWUoU3R5bGVQcm9w
ZXJ0eVNldCogZGVjbGFyYXRpb24sIGludCBwcm9wZXJ0eUlkLCBjb25zdCBTdHJpbmcmIHN0cmlu
ZywgYm9vbCBpbXBvcnRhbnQsIENTU1N0eWxlU2hlZXQqIGNvbnRleHRTdHlsZVNoZWV0KQorewor
ICAgIGlmICghc3RyaW5nLmxlbmd0aCgpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBp
ZiAoIWlzS2V5d29yZFByb3BlcnR5SUQocHJvcGVydHlJZCkpCisgICAgICAgIHJldHVybiBmYWxz
ZTsKKworICAgIENTU1BhcnNlclN0cmluZyBjc3NTdHJpbmc7CisgICAgY3NzU3RyaW5nLmNoYXJh
Y3RlcnMgPSBjb25zdF9jYXN0PFVDaGFyKj4oc3RyaW5nLmNoYXJhY3RlcnMoKSk7CisgICAgY3Nz
U3RyaW5nLmxlbmd0aCA9IHN0cmluZy5sZW5ndGgoKTsKKyAgICBpbnQgdmFsdWVJRCA9IGNzc1Zh
bHVlS2V5d29yZElEKGNzc1N0cmluZyk7CisKKyAgICBpZiAoIXZhbHVlSUQpCisgICAgICAgIHJl
dHVybiBmYWxzZTsKKworICAgIERvY3VtZW50KiBkb2N1bWVudCA9IGNvbnRleHRTdHlsZVNoZWV0
LT5maW5kRG9jdW1lbnQoKTsKKyAgICBSZWZQdHI8Q1NTVmFsdWU+IHZhbHVlOworICAgIFJlZlB0
cjxDU1NWYWx1ZVBvb2w+IGNzc1ZhbHVlUG9vbCA9IGRvY3VtZW50ID8gZG9jdW1lbnQtPmNzc1Zh
bHVlUG9vbCgpIDogMDsKKyAgICBpZiAodmFsdWVJRCA9PSBDU1NWYWx1ZUluaGVyaXQpIHsKKyAg
ICAgICAgaWYgKGNzc1ZhbHVlUG9vbCkKKyAgICAgICAgICAgIHZhbHVlID0gY3NzVmFsdWVQb29s
LT5jcmVhdGVJbmhlcml0ZWRWYWx1ZSgpOworICAgICAgICBlbHNlCisgICAgICAgICAgICB2YWx1
ZSA9IENTU0luaGVyaXRlZFZhbHVlOjpjcmVhdGUoKTsKKyAgICAgICAgZGVjbGFyYXRpb24tPmFk
ZFBhcnNlZFByb3BlcnR5KENTU1Byb3BlcnR5KHByb3BlcnR5SWQsIHZhbHVlLnJlbGVhc2UoKSwg
aW1wb3J0YW50KSk7CisgICAgICAgIHJldHVybiB0cnVlOworICAgIH0KKyAgICBpZiAodmFsdWVJ
RCA9PSBDU1NWYWx1ZUluaXRpYWwpIHsKKyAgICAgICAgaWYgKGNzc1ZhbHVlUG9vbCkKKyAgICAg
ICAgICAgIHZhbHVlID0gY3NzVmFsdWVQb29sLT5jcmVhdGVFeHBsaWNpdEluaXRpYWxWYWx1ZSgp
OworICAgICAgICBlbHNlCisgICAgICAgICAgICB2YWx1ZSA9IENTU0luaXRpYWxWYWx1ZTo6Y3Jl
YXRlRXhwbGljaXQoKTsKKyAgICAgICAgZGVjbGFyYXRpb24tPmFkZFBhcnNlZFByb3BlcnR5KENT
U1Byb3BlcnR5KHByb3BlcnR5SWQsIHZhbHVlLnJlbGVhc2UoKSwgaW1wb3J0YW50KSk7CisgICAg
ICAgIHJldHVybiB0cnVlOworICAgIH0KKworICAgIGJvb2wgdmFsaWRQcmltaXRpdmUgPSBmYWxz
ZTsKKyAgICBDU1NQcm9wZXJ0eVBhcnNlciBwcm9wZXJ0eSA9IHByb3BlcnR5Rm9ySUQocHJvcGVy
dHlJZCk7CisgICAgLy8gVGhlIHByb3BlcnR5IGhhcyBhIHJhbmdlIG9mIGtleXdvcmRzIGxldCdz
IGNoZWNrIGZpcnN0LgorICAgIGlmIChwcm9wZXJ0eS5oYXNSYW5nZSgpKSB7CisgICAgICAgIGlm
ICh2YWx1ZUlEID49IHByb3BlcnR5Lm1pbktleXdvcmQoKSAmJiB2YWx1ZUlEIDw9IHByb3BlcnR5
Lm1heEtleXdvcmQoKSkKKyAgICAgICAgICAgIHZhbGlkUHJpbWl0aXZlID0gdHJ1ZTsKKyAgICB9
CisKKyAgICBmb3IgKHVuc2lnbmVkIGkgPSAwIDsgIXZhbGlkUHJpbWl0aXZlICYmIGkgPCBwcm9w
ZXJ0eS5sZW5ndGgoKTsgKytpKSB7CisgICAgICAgIGlmIChwcm9wZXJ0eS5hY2NlcHRlZEtleXdv
cmRzKClbaV0gPT0gdmFsdWVJRCkgeworICAgICAgICAgICAgdmFsaWRQcmltaXRpdmUgPSB0cnVl
OworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBpZiAoIXZhbGlk
UHJpbWl0aXZlKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBpZiAoZG9jdW1lbnQpCisg
ICAgICAgIHZhbHVlID0gY3NzVmFsdWVQb29sLT5jcmVhdGVJZGVudGlmaWVyVmFsdWUodmFsdWVJ
RCk7CisgICAgZWxzZQorICAgICAgICB2YWx1ZSA9IENTU1ByaW1pdGl2ZVZhbHVlOjpjcmVhdGVJ
ZGVudGlmaWVyKHZhbHVlSUQpOworICAgIGRlY2xhcmF0aW9uLT5hZGRQYXJzZWRQcm9wZXJ0eShD
U1NQcm9wZXJ0eShwcm9wZXJ0eUlkLCB2YWx1ZS5yZWxlYXNlKCksIGltcG9ydGFudCkpOworICAg
IHJldHVybiB0cnVlOworfQorCiBQYXNzUmVmUHRyPENTU1ZhbHVlTGlzdD4gQ1NTUGFyc2VyOjpw
YXJzZUZvbnRGYWNlVmFsdWUoY29uc3QgQXRvbWljU3RyaW5nJiBzdHJpbmcsIENTU1N0eWxlU2hl
ZXQqIGNvbnRleHRTdHlsZVNoZWV0KQogewogICAgIFJlZlB0cjxTdHlsZVByb3BlcnR5U2V0PiBk
dW1teVN0eWxlID0gU3R5bGVQcm9wZXJ0eVNldDo6Y3JlYXRlKCk7CkBAIC00OTMsNiArODc5LDgg
QEAgYm9vbCBDU1NQYXJzZXI6OnBhcnNlVmFsdWUoU3R5bGVQcm9wZXJ0eVNldCogZGVjbGFyYXRp
b24sIGludCBwcm9wZXJ0eUlkLCBjb25zdAogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICBpZiAo
cGFyc2VDb2xvclZhbHVlKGRlY2xhcmF0aW9uLCBwcm9wZXJ0eUlkLCBzdHJpbmcsIGltcG9ydGFu
dCwgc3RyaWN0LCBjb250ZXh0U3R5bGVTaGVldCkpCiAgICAgICAgIHJldHVybiB0cnVlOworICAg
IGlmIChwYXJzZUtleXdvcmRWYWx1ZShkZWNsYXJhdGlvbiwgcHJvcGVydHlJZCwgc3RyaW5nLCBp
bXBvcnRhbnQsIGNvbnRleHRTdHlsZVNoZWV0KSkKKyAgICAgICAgcmV0dXJuIHRydWU7CiAgICAg
Q1NTUGFyc2VyIHBhcnNlcihzdHJpY3QpOwogICAgIHJldHVybiBwYXJzZXIucGFyc2VWYWx1ZShk
ZWNsYXJhdGlvbiwgcHJvcGVydHlJZCwgc3RyaW5nLCBpbXBvcnRhbnQsIGNvbnRleHRTdHlsZVNo
ZWV0KTsKIH0KQEAgLTkzMCw2ICsxMzE4LDM1IEBAIGJvb2wgQ1NTUGFyc2VyOjpwYXJzZVZhbHVl
KGludCBwcm9wSWQsIGJvb2wgaW1wb3J0YW50KQogICAgIGJvb2wgdmFsaWRQcmltaXRpdmUgPSBm
YWxzZTsKICAgICBSZWZQdHI8Q1NTVmFsdWU+IHBhcnNlZFZhbHVlOwogCisgICAgaWYgKGlkICYm
IGlzS2V5d29yZFByb3BlcnR5SUQocHJvcElkKSkgeworICAgICAgICBDU1NQcm9wZXJ0eVBhcnNl
ciBwcm9wZXJ0eSA9IHByb3BlcnR5Rm9ySUQocHJvcElkKTsKKyAgICAgICAgLy8gVGhlIHByb3Bl
cnR5IGhhcyBhIHJhbmdlIG9mIGtleXdvcmRzIGxldCdzIGNoZWNrIGZpcnN0LgorICAgICAgICBp
ZiAocHJvcGVydHkuaGFzUmFuZ2UoKSkgeworICAgICAgICAgICAgaWYgKGlkID49IHByb3BlcnR5
Lm1pbktleXdvcmQoKSAmJiBpZCA8PSBwcm9wZXJ0eS5tYXhLZXl3b3JkKCkpCisgICAgICAgICAg
ICAgICAgdmFsaWRQcmltaXRpdmUgPSB0cnVlOworICAgICAgICB9CisKKyAgICAgICAgZm9yICh1
bnNpZ25lZCBpID0gMCA7ICF2YWxpZFByaW1pdGl2ZSAmJiBpIDwgcHJvcGVydHkubGVuZ3RoKCk7
ICsraSkgeworICAgICAgICAgICAgaWYgKHByb3BlcnR5LmFjY2VwdGVkS2V5d29yZHMoKVtpXSA9
PSBpZCkgeworICAgICAgICAgICAgICAgIHZhbGlkUHJpbWl0aXZlID0gdHJ1ZTsKKyAgICAgICAg
ICAgICAgICBicmVhazsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorCisgICAgICAgIGlmICh2
YWxpZFByaW1pdGl2ZSkgeworICAgICAgICAgICAgcGFyc2VkVmFsdWUgPSBwYXJzZVZhbGlkUHJp
bWl0aXZlKGlkLCB2YWx1ZSk7CisgICAgICAgICAgICBtX3ZhbHVlTGlzdC0+bmV4dCgpOworICAg
ICAgICB9CisgICAgICAgIEFTU0VSVCghbV9wYXJzZWRDYWxjdWxhdGlvbik7CisgICAgICAgIGlm
IChwYXJzZWRWYWx1ZSkgeworICAgICAgICAgICAgaWYgKCFtX3ZhbHVlTGlzdC0+Y3VycmVudCgp
IHx8IGluU2hvcnRoYW5kKCkpIHsKKyAgICAgICAgICAgICAgICBhZGRQcm9wZXJ0eShwcm9wSWQs
IHBhcnNlZFZhbHVlLnJlbGVhc2UoKSwgaW1wb3J0YW50KTsKKyAgICAgICAgICAgICAgICByZXR1
cm4gdHJ1ZTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICByZXR1cm4gZmFsc2U7
CisgICAgfQorCiAgICAgc3dpdGNoIChzdGF0aWNfY2FzdDxDU1NQcm9wZXJ0eUlEPihwcm9wSWQp
KSB7CiAgICAgICAgIC8qIFRoZSBjb21tZW50IHRvIHRoZSBsZWZ0IGRlZmluZXMgYWxsIHZhbGlk
IHZhbHVlIG9mIHRoaXMgcHJvcGVydGllcyBhcyBkZWZpbmVkCiAgICAgICAgICAqIGluIENTUyAy
LCBBcHBlbmRpeCBGLiBQcm9wZXJ0eSBpbmRleApAQCAtMTAwNCwyNSArMTQyMSwxMCBAQCBib29s
IENTU1BhcnNlcjo6cGFyc2VWYWx1ZShpbnQgcHJvcElkLCBib29sIGltcG9ydGFudCkKICAgICAg
ICAgICAgIHZhbGlkUHJpbWl0aXZlID0gKHByb3BJZCA9PSBDU1NQcm9wZXJ0eVdlYmtpdFJlZ2lv
bkJyZWFrSW5zaWRlKSA/IGNzc1JlZ2lvbnNFbmFibGVkKCkgOiB0cnVlOwogICAgICAgICBicmVh
azsKIAotICAgIGNhc2UgQ1NTUHJvcGVydHlFbXB0eUNlbGxzOiAgICAgICAgICAvLyBzaG93IHwg
aGlkZSB8IGluaGVyaXQKLSAgICAgICAgaWYgKGlkID09IENTU1ZhbHVlU2hvdwotICAgICAgICAg
ICAgfHwgaWQgPT0gQ1NTVmFsdWVIaWRlKQotICAgICAgICAgICAgdmFsaWRQcmltaXRpdmUgPSB0
cnVlOwotICAgICAgICBicmVhazsKLQogICAgIGNhc2UgQ1NTUHJvcGVydHlDb250ZW50OiAgICAg
ICAgICAgICAgLy8gWyA8c3RyaW5nPiB8IDx1cmk+IHwgPGNvdW50ZXI+IHwgYXR0cihYKSB8IG9w
ZW4tcXVvdGUgfAogICAgICAgICAvLyBjbG9zZS1xdW90ZSB8IG5vLW9wZW4tcXVvdGUgfCBuby1j
bG9zZS1xdW90ZSBdKyB8IGluaGVyaXQKICAgICAgICAgcmV0dXJuIHBhcnNlQ29udGVudChwcm9w
SWQsIGltcG9ydGFudCk7CiAKLSAgICBjYXNlIENTU1Byb3BlcnR5V2hpdGVTcGFjZTogICAgICAg
ICAgLy8gbm9ybWFsIHwgcHJlIHwgbm93cmFwIHwgaW5oZXJpdAotICAgICAgICBpZiAoaWQgPT0g
Q1NTVmFsdWVOb3JtYWwKLSAgICAgICAgICAgIHx8IGlkID09IENTU1ZhbHVlUHJlCi0gICAgICAg
ICAgICB8fCBpZCA9PSBDU1NWYWx1ZVByZVdyYXAKLSAgICAgICAgICAgIHx8IGlkID09IENTU1Zh
bHVlUHJlTGluZQotICAgICAgICAgICAgfHwgaWQgPT0gQ1NTVmFsdWVOb3dyYXApCi0gICAgICAg
ICAgICB2YWxpZFByaW1pdGl2ZSA9IHRydWU7Ci0gICAgICAgIGJyZWFrOwotCiAgICAgY2FzZSBD
U1NQcm9wZXJ0eUNsaXA6ICAgICAgICAgICAgICAgICAvLyA8c2hhcGU+IHwgYXV0byB8IGluaGVy
aXQKICAgICAgICAgaWYgKGlkID09IENTU1ZhbHVlQXV0bykKICAgICAgICAgICAgIHZhbGlkUHJp
bWl0aXZlID0gdHJ1ZTsKQEAgLTEwMzMsMjIgKzE0MzUsNiBAQCBib29sIENTU1BhcnNlcjo6cGFy
c2VWYWx1ZShpbnQgcHJvcElkLCBib29sIGltcG9ydGFudCkKICAgICAvKiBTdGFydCBvZiBzdXBw
b3J0ZWQgQ1NTIHByb3BlcnRpZXMgd2l0aCB2YWxpZGF0aW9uLiBUaGlzIGlzIG5lZWRlZCBmb3Ig
cGFyc2VTaG9ydGhhbmQgdG8gd29yawogICAgICAqIGNvcnJlY3RseSBhbmQgYWxsb3dzIG9wdGlt
aXphdGlvbiBpbiBXZWJDb3JlOjphcHBseVJ1bGUoLi4pCiAgICAgICovCi0gICAgY2FzZSBDU1NQ
cm9wZXJ0eUNhcHRpb25TaWRlOiAgICAgICAgIC8vIHRvcCB8IGJvdHRvbSB8IGxlZnQgfCByaWdo
dCB8IGluaGVyaXQKLSAgICAgICAgaWYgKGlkID09IENTU1ZhbHVlTGVmdCB8fCBpZCA9PSBDU1NW
YWx1ZVJpZ2h0IHx8Ci0gICAgICAgICAgICBpZCA9PSBDU1NWYWx1ZVRvcCB8fCBpZCA9PSBDU1NW
YWx1ZUJvdHRvbSkKLSAgICAgICAgICAgIHZhbGlkUHJpbWl0aXZlID0gdHJ1ZTsKLSAgICAgICAg
YnJlYWs7Ci0KLSAgICBjYXNlIENTU1Byb3BlcnR5Qm9yZGVyQ29sbGFwc2U6ICAgICAgLy8gY29s
bGFwc2UgfCBzZXBhcmF0ZSB8IGluaGVyaXQKLSAgICAgICAgaWYgKGlkID09IENTU1ZhbHVlQ29s
bGFwc2UgfHwgaWQgPT0gQ1NTVmFsdWVTZXBhcmF0ZSkKLSAgICAgICAgICAgIHZhbGlkUHJpbWl0
aXZlID0gdHJ1ZTsKLSAgICAgICAgYnJlYWs7Ci0KLSAgICBjYXNlIENTU1Byb3BlcnR5VmlzaWJp
bGl0eTogICAgICAgICAgIC8vIHZpc2libGUgfCBoaWRkZW4gfCBjb2xsYXBzZSB8IGluaGVyaXQK
LSAgICAgICAgaWYgKGlkID09IENTU1ZhbHVlVmlzaWJsZSB8fCBpZCA9PSBDU1NWYWx1ZUhpZGRl
biB8fCBpZCA9PSBDU1NWYWx1ZUNvbGxhcHNlKQotICAgICAgICAgICAgdmFsaWRQcmltaXRpdmUg
PSB0cnVlOwotICAgICAgICBicmVhazsKLQogICAgIGNhc2UgQ1NTUHJvcGVydHlPdmVyZmxvdzog
ewogICAgICAgICBTaG9ydGhhbmRTY29wZSBzY29wZSh0aGlzLCBwcm9wSWQpOwogICAgICAgICBp
ZiAobnVtICE9IDEgfHwgIXBhcnNlVmFsdWUoQ1NTUHJvcGVydHlPdmVyZmxvd1gsIGltcG9ydGFu
dCkpCkBAIC0xMDU3LDU5ICsxNDQzLDYgQEAgYm9vbCBDU1NQYXJzZXI6OnBhcnNlVmFsdWUoaW50
IHByb3BJZCwgYm9vbCBpbXBvcnRhbnQpCiAgICAgICAgIGFkZFByb3BlcnR5KENTU1Byb3BlcnR5
T3ZlcmZsb3dZLCB2YWx1ZSwgaW1wb3J0YW50KTsKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAg
fQotICAgIGNhc2UgQ1NTUHJvcGVydHlPdmVyZmxvd1g6Ci0gICAgY2FzZSBDU1NQcm9wZXJ0eU92
ZXJmbG93WTogICAgICAgICAgIC8vIHZpc2libGUgfCBoaWRkZW4gfCBzY3JvbGwgfCBhdXRvIHwg
bWFycXVlZSB8IG92ZXJsYXkgfCBpbmhlcml0Ci0gICAgICAgIGlmIChpZCA9PSBDU1NWYWx1ZVZp
c2libGUgfHwgaWQgPT0gQ1NTVmFsdWVIaWRkZW4gfHwgaWQgPT0gQ1NTVmFsdWVTY3JvbGwgfHwg
aWQgPT0gQ1NTVmFsdWVBdXRvIHx8Ci0gICAgICAgICAgICBpZCA9PSBDU1NWYWx1ZU92ZXJsYXkg
fHwgaWQgPT0gQ1NTVmFsdWVXZWJraXRNYXJxdWVlKQotICAgICAgICAgICAgdmFsaWRQcmltaXRp
dmUgPSB0cnVlOwotICAgICAgICBicmVhazsKLQotICAgIGNhc2UgQ1NTUHJvcGVydHlMaXN0U3R5
bGVQb3NpdGlvbjogIC8vIGluc2lkZSB8IG91dHNpZGUgfCBpbmhlcml0Ci0gICAgICAgIGlmIChp
ZCA9PSBDU1NWYWx1ZUluc2lkZSB8fCBpZCA9PSBDU1NWYWx1ZU91dHNpZGUpCi0gICAgICAgICAg
ICB2YWxpZFByaW1pdGl2ZSA9IHRydWU7Ci0gICAgICAgIGJyZWFrOwotCi0gICAgY2FzZSBDU1NQ
cm9wZXJ0eUxpc3RTdHlsZVR5cGU6Ci0gICAgICAgIC8vIFNlZSBzZWN0aW9uIENTU19QUk9QX0xJ
U1RfU1RZTEVfVFlQRSBvZiBmaWxlIENTU1ZhbHVlS2V5d29yZHMuaW4KLSAgICAgICAgLy8gZm9y
IHRoZSBsaXN0IG9mIHN1cHBvcnRlZCBsaXN0LXN0eWxlLXR5cGVzLgotICAgICAgICBpZiAoKGlk
ID49IENTU1ZhbHVlRGlzYyAmJiBpZCA8PSBDU1NWYWx1ZUthdGFrYW5hSXJvaGEpIHx8IGlkID09
IENTU1ZhbHVlTm9uZSkKLSAgICAgICAgICAgIHZhbGlkUHJpbWl0aXZlID0gdHJ1ZTsKLSAgICAg
ICAgYnJlYWs7Ci0KLSAgICBjYXNlIENTU1Byb3BlcnR5RGlzcGxheToKLSAgICAgICAgLy8gaW5s
aW5lIHwgYmxvY2sgfCBsaXN0LWl0ZW0gfCBydW4taW4gfCBpbmxpbmUtYmxvY2sgfCB0YWJsZSB8
Ci0gICAgICAgIC8vIGlubGluZS10YWJsZSB8IHRhYmxlLXJvdy1ncm91cCB8IHRhYmxlLWhlYWRl
ci1ncm91cCB8IHRhYmxlLWZvb3Rlci1ncm91cCB8IHRhYmxlLXJvdyB8Ci0gICAgICAgIC8vIHRh
YmxlLWNvbHVtbi1ncm91cCB8IHRhYmxlLWNvbHVtbiB8IHRhYmxlLWNlbGwgfCB0YWJsZS1jYXB0
aW9uIHwgLXdlYmtpdC1ib3ggfCAtd2Via2l0LWlubGluZS1ib3ggfCBub25lIHwgaW5oZXJpdAot
ICAgICAgICAvLyAtd2Via2l0LWZsZXhib3ggfCAtd2Via2l0LWlubGluZS1mbGV4Ym94IHwgLXdl
YmtpdC1ncmlkIHwgLXdlYmtpdC1pbmxpbmUtZ3JpZAotICAgICAgICBpZiAoKGlkID49IENTU1Zh
bHVlSW5saW5lICYmIGlkIDw9IENTU1ZhbHVlV2Via2l0SW5saW5lRmxleGJveCkgfHwgaWQgPT0g
Q1NTVmFsdWVOb25lKQotICAgICAgICAgICAgdmFsaWRQcmltaXRpdmUgPSB0cnVlOwotI2lmIEVO
QUJMRShDU1NfR1JJRF9MQVlPVVQpCi0gICAgICAgIGlmIChpZCA9PSBDU1NWYWx1ZVdlYmtpdEdy
aWQgfHwgaWQgPT0gQ1NTVmFsdWVXZWJraXRJbmxpbmVHcmlkKQotICAgICAgICAgICAgdmFsaWRQ
cmltaXRpdmUgPSB0cnVlOwotI2VuZGlmCi0gICAgICAgIGJyZWFrOwotCi0gICAgY2FzZSBDU1NQ
cm9wZXJ0eURpcmVjdGlvbjogICAgICAgICAgICAvLyBsdHIgfCBydGwgfCBpbmhlcml0Ci0gICAg
ICAgIGlmIChpZCA9PSBDU1NWYWx1ZUx0ciB8fCBpZCA9PSBDU1NWYWx1ZVJ0bCkKLSAgICAgICAg
ICAgIHZhbGlkUHJpbWl0aXZlID0gdHJ1ZTsKLSAgICAgICAgYnJlYWs7Ci0KLSAgICBjYXNlIENT
U1Byb3BlcnR5VGV4dFRyYW5zZm9ybTogICAgICAgLy8gY2FwaXRhbGl6ZSB8IHVwcGVyY2FzZSB8
IGxvd2VyY2FzZSB8IG5vbmUgfCBpbmhlcml0Ci0gICAgICAgIGlmICgoaWQgPj0gQ1NTVmFsdWVD
YXBpdGFsaXplICYmIGlkIDw9IENTU1ZhbHVlTG93ZXJjYXNlKSB8fCBpZCA9PSBDU1NWYWx1ZU5v
bmUpCi0gICAgICAgICAgICB2YWxpZFByaW1pdGl2ZSA9IHRydWU7Ci0gICAgICAgIGJyZWFrOwot
Ci0gICAgY2FzZSBDU1NQcm9wZXJ0eUZsb2F0OiAgICAgICAgICAgICAgICAvLyBsZWZ0IHwgcmln
aHQgfCBub25lIHwgcG9zaXRpb25lZCB8IGNlbnRlciAoZm9yIGJ1Z2d5IENTUywgbWFwcyB0byBu
b25lKQotICAgICAgICBpZiAoaWQgPT0gQ1NTVmFsdWVMZWZ0IHx8IGlkID09IENTU1ZhbHVlUmln
aHQKLSAgICAgICAgICAgIHx8IGlkID09IENTU1ZhbHVlTm9uZSB8fCBpZCA9PSBDU1NWYWx1ZUNl
bnRlciB8fCBpZCA9PSBDU1NWYWx1ZVdlYmtpdFBvc2l0aW9uZWQpCi0gICAgICAgICAgICB2YWxp
ZFByaW1pdGl2ZSA9IHRydWU7Ci0gICAgICAgIGJyZWFrOwotCi0gICAgY2FzZSBDU1NQcm9wZXJ0
eUNsZWFyOiAgICAgICAgICAgICAgICAvLyBub25lIHwgbGVmdCB8IHJpZ2h0IHwgYm90aCB8IGlu
aGVyaXQKLSAgICAgICAgaWYgKGlkID09IENTU1ZhbHVlTm9uZSB8fCBpZCA9PSBDU1NWYWx1ZUxl
ZnQKLSAgICAgICAgICAgIHx8IGlkID09IENTU1ZhbHVlUmlnaHQgfHwgaWQgPT0gQ1NTVmFsdWVC
b3RoKQotICAgICAgICAgICAgdmFsaWRQcmltaXRpdmUgPSB0cnVlOwotICAgICAgICBicmVhazsK
IAogICAgIGNhc2UgQ1NTUHJvcGVydHlUZXh0QWxpZ246CiAgICAgICAgIC8vIGxlZnQgfCByaWdo
dCB8IGNlbnRlciB8IGp1c3RpZnkgfCB3ZWJraXRfbGVmdCB8IHdlYmtpdF9yaWdodCB8IHdlYmtp
dF9jZW50ZXIgfCB3ZWJraXRfbWF0Y2hfcGFyZW50IHwKQEAgLTExMTksMjQgKzE0NTIsNiBAQCBi
b29sIENTU1BhcnNlcjo6cGFyc2VWYWx1ZShpbnQgcHJvcElkLCBib29sIGltcG9ydGFudCkKICAg
ICAgICAgICAgIHZhbGlkUHJpbWl0aXZlID0gdHJ1ZTsKICAgICAgICAgYnJlYWs7CiAKLSAgICBj
YXNlIENTU1Byb3BlcnR5T3V0bGluZVN0eWxlOiAgICAgICAgLy8gKDxib3JkZXItc3R5bGU+IGV4
Y2VwdCBoaWRkZW4pIHwgYXV0byB8IGluaGVyaXQKLSAgICAgICAgaWYgKGlkID09IENTU1ZhbHVl
QXV0byB8fCBpZCA9PSBDU1NWYWx1ZU5vbmUgfHwgKGlkID49IENTU1ZhbHVlSW5zZXQgJiYgaWQg
PD0gQ1NTVmFsdWVEb3VibGUpKQotICAgICAgICAgICAgdmFsaWRQcmltaXRpdmUgPSB0cnVlOwot
ICAgICAgICBicmVhazsKLQotICAgIGNhc2UgQ1NTUHJvcGVydHlCb3JkZXJUb3BTdHlsZTogICAg
IC8vLy8gPGJvcmRlci1zdHlsZT4gfCBpbmhlcml0Ci0gICAgY2FzZSBDU1NQcm9wZXJ0eUJvcmRl
clJpZ2h0U3R5bGU6ICAgLy8gICBEZWZpbmVkIGFzOiAgICBub25lIHwgaGlkZGVuIHwgZG90dGVk
IHwgZGFzaGVkIHwKLSAgICBjYXNlIENTU1Byb3BlcnR5Qm9yZGVyQm90dG9tU3R5bGU6ICAvLyAg
IHNvbGlkIHwgZG91YmxlIHwgZ3Jvb3ZlIHwgcmlkZ2UgfCBpbnNldCB8IG91dHNldAotICAgIGNh
c2UgQ1NTUHJvcGVydHlCb3JkZXJMZWZ0U3R5bGU6Ci0gICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtp
dEJvcmRlclN0YXJ0U3R5bGU6Ci0gICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdEJvcmRlckVuZFN0
eWxlOgotICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRCb3JkZXJCZWZvcmVTdHlsZToKLSAgICBj
YXNlIENTU1Byb3BlcnR5V2Via2l0Qm9yZGVyQWZ0ZXJTdHlsZToKLSAgICBjYXNlIENTU1Byb3Bl
cnR5V2Via2l0Q29sdW1uUnVsZVN0eWxlOgotICAgICAgICBpZiAoaWQgPj0gQ1NTVmFsdWVOb25l
ICYmIGlkIDw9IENTU1ZhbHVlRG91YmxlKQotICAgICAgICAgICAgdmFsaWRQcmltaXRpdmUgPSB0
cnVlOwotICAgICAgICBicmVhazsKLQogICAgIGNhc2UgQ1NTUHJvcGVydHlGb250V2VpZ2h0OiAg
Ly8gbm9ybWFsIHwgYm9sZCB8IGJvbGRlciB8IGxpZ2h0ZXIgfCAxMDAgfCAyMDAgfCAzMDAgfCA0
MDAgfCA1MDAgfCA2MDAgfCA3MDAgfCA4MDAgfCA5MDAgfCBpbmhlcml0CiAgICAgICAgIHJldHVy
biBwYXJzZUZvbnRXZWlnaHQoaW1wb3J0YW50KTsKIApAQCAtMTM1MSwyMSArMTY2Niw2IEBAIGJv
b2wgQ1NTUGFyc2VyOjpwYXJzZVZhbHVlKGludCBwcm9wSWQsIGJvb2wgaW1wb3J0YW50KQogICAg
ICAgICAgICAgdmFsaWRQcmltaXRpdmUgPSB2YWxpZFVuaXQodmFsdWUsIEZMZW5ndGgsIG1fc3Ry
aWN0KTsKICAgICAgICAgYnJlYWs7CiAKLSAgICBjYXNlIENTU1Byb3BlcnR5V29yZEJyZWFrOiAg
ICAgICAgICAvLyBub3JtYWwgfCBicmVhay1hbGwgfCBicmVhay13b3JkICh0aGlzIGlzIGEgY3Vz
dG9tIGV4dGVuc2lvbikKLSAgICAgICAgaWYgKGlkID09IENTU1ZhbHVlTm9ybWFsIHx8IGlkID09
IENTU1ZhbHVlQnJlYWtBbGwgfHwgaWQgPT0gQ1NTVmFsdWVCcmVha1dvcmQpCi0gICAgICAgICAg
ICB2YWxpZFByaW1pdGl2ZSA9IHRydWU7Ci0gICAgICAgIGJyZWFrOwotCi0gICAgY2FzZSBDU1NQ
cm9wZXJ0eVdvcmRXcmFwOiAgICAgICAgICAgLy8gbm9ybWFsIHwgYnJlYWstd29yZAotICAgICAg
ICBpZiAoaWQgPT0gQ1NTVmFsdWVOb3JtYWwgfHwgaWQgPT0gQ1NTVmFsdWVCcmVha1dvcmQpCi0g
ICAgICAgICAgICB2YWxpZFByaW1pdGl2ZSA9IHRydWU7Ci0gICAgICAgIGJyZWFrOwotICAgIGNh
c2UgQ1NTUHJvcGVydHlTcGVhazogICAgICAgICAgIC8vIG5vbmUgfCBub3JtYWwgfCBzcGVsbC1v
dXQgfCBkaWdpdHMgfCBsaXRlcmFsLXB1bmN0dWF0aW9uIHwgbm8tcHVuY3R1YXRpb24gfCBpbmhl
cml0Ci0gICAgICAgIGlmIChpZCA9PSBDU1NWYWx1ZU5vbmUgfHwgaWQgPT0gQ1NTVmFsdWVOb3Jt
YWwgfHwgaWQgPT0gQ1NTVmFsdWVTcGVsbE91dCB8fCBpZCA9PSBDU1NWYWx1ZURpZ2l0cwotICAg
ICAgICAgICAgfHwgaWQgPT0gQ1NTVmFsdWVMaXRlcmFsUHVuY3R1YXRpb24gfHwgaWQgPT0gQ1NT
VmFsdWVOb1B1bmN0dWF0aW9uKQotICAgICAgICAgICAgdmFsaWRQcmltaXRpdmUgPSB0cnVlOwot
ICAgICAgICBicmVhazsKLQogICAgIGNhc2UgQ1NTUHJvcGVydHlUZXh0SW5kZW50OiAgICAgICAg
ICAvLyA8bGVuZ3RoPiB8IDxwZXJjZW50YWdlPiB8IGluaGVyaXQKICAgICAgICAgdmFsaWRQcmlt
aXRpdmUgPSAoIWlkICYmIHZhbGlkVW5pdCh2YWx1ZSwgRkxlbmd0aCB8IEZQZXJjZW50LCBtX3N0
cmljdCkpOwogICAgICAgICBicmVhazsKQEAgLTE0MDgsMTEgKzE3MDgsNiBAQCBib29sIENTU1Bh
cnNlcjo6cGFyc2VWYWx1ZShpbnQgcHJvcElkLCBib29sIGltcG9ydGFudCkKICAgICAgICAgICAg
IHZhbGlkUHJpbWl0aXZlID0gKHZhbGlkVW5pdCh2YWx1ZSwgRkxlbmd0aCB8IEZQZXJjZW50IHwg
Rk5vbk5lZywgbV9zdHJpY3QpKTsKICAgICAgICAgYnJlYWs7CiAKLSAgICBjYXNlIENTU1Byb3Bl
cnR5Rm9udFN0eWxlOiAgICAgICAgICAgLy8gbm9ybWFsIHwgaXRhbGljIHwgb2JsaXF1ZSB8IGlu
aGVyaXQKLSAgICAgICAgaWYgKGlkID09IENTU1ZhbHVlTm9ybWFsIHx8IGlkID09IENTU1ZhbHVl
SXRhbGljIHx8IGlkID09IENTU1ZhbHVlT2JsaXF1ZSkKLSAgICAgICAgICAgIHZhbGlkUHJpbWl0
aXZlID0gdHJ1ZTsKLSAgICAgICAgYnJlYWs7Ci0KICAgICBjYXNlIENTU1Byb3BlcnR5Rm9udFZh
cmlhbnQ6ICAgICAgICAgLy8gbm9ybWFsIHwgc21hbGwtY2FwcyB8IGluaGVyaXQKICAgICAgICAg
cmV0dXJuIHBhcnNlRm9udFZhcmlhbnQoaW1wb3J0YW50KTsKIApAQCAtMTUyOCwxMSArMTgyMyw2
IEBAIGJvb2wgQ1NTUGFyc2VyOjpwYXJzZVZhbHVlKGludCBwcm9wSWQsIGJvb2wgaW1wb3J0YW50
KQogICAgICAgICAgICAgdmFsaWRQcmltaXRpdmUgPSAoIWlkICYmIHZhbGlkVW5pdCh2YWx1ZSwg
Rk51bWJlciB8IEZQZXJjZW50IHwgRk5vbk5lZywgdHJ1ZSkpOwogICAgICAgICBicmVhazsKIAot
ICAgIGNhc2UgQ1NTUHJvcGVydHlUYWJsZUxheW91dDogICAgICAgICAvLyBhdXRvIHwgZml4ZWQg
fCBpbmhlcml0Ci0gICAgICAgIGlmIChpZCA9PSBDU1NWYWx1ZUF1dG8gfHwgaWQgPT0gQ1NTVmFs
dWVGaXhlZCkKLSAgICAgICAgICAgIHZhbGlkUHJpbWl0aXZlID0gdHJ1ZTsKLSAgICAgICAgYnJl
YWs7Ci0KICAgICBjYXNlIENTU1Byb3BlcnR5U3JjOiAgLy8gT25seSB1c2VkIHdpdGhpbiBAZm9u
dC1mYWNlLCBzbyBjYW5ub3QgdXNlIGluaGVyaXQgfCBpbml0aWFsIG9yIGJlICFpbXBvcnRhbnQu
ICBUaGlzIGlzIGEgbGlzdCBvZiB1cmxzIG9yIGxvY2FsIHJlZmVyZW5jZXMuCiAgICAgICAgIHJl
dHVybiBwYXJzZUZvbnRGYWNlU3JjKCk7CiAKQEAgLTE1NDAsMTAgKzE4MzAsNiBAQCBib29sIENT
U1BhcnNlcjo6cGFyc2VWYWx1ZShpbnQgcHJvcElkLCBib29sIGltcG9ydGFudCkKICAgICAgICAg
cmV0dXJuIHBhcnNlRm9udEZhY2VVbmljb2RlUmFuZ2UoKTsKIAogICAgIC8qIENTUzMgcHJvcGVy
dGllcyAqLwotICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRBcHBlYXJhbmNlOgotICAgICAgICBp
ZiAoKGlkID49IENTU1ZhbHVlQ2hlY2tib3ggJiYgaWQgPD0gQ1NTVmFsdWVUZXh0YXJlYSkgfHwg
aWQgPT0gQ1NTVmFsdWVOb25lKQotICAgICAgICAgICAgdmFsaWRQcmltaXRpdmUgPSB0cnVlOwot
ICAgICAgICBicmVhazsKIAogICAgIGNhc2UgQ1NTUHJvcGVydHlCb3JkZXJJbWFnZTogewogICAg
ICAgICBSZWZQdHI8Q1NTVmFsdWU+IHJlc3VsdDsKQEAgLTE2NTEsMjkgKzE5MzcsNiBAQCBib29s
IENTU1BhcnNlcjo6cGFyc2VWYWx1ZShpbnQgcHJvcElkLCBib29sIGltcG9ydGFudCkKICAgICBj
YXNlIENTU1Byb3BlcnR5T3BhY2l0eToKICAgICAgICAgdmFsaWRQcmltaXRpdmUgPSB2YWxpZFVu
aXQodmFsdWUsIEZOdW1iZXIsIG1fc3RyaWN0KTsKICAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBD
U1NQcm9wZXJ0eVdlYmtpdEJveEFsaWduOgotICAgICAgICBpZiAoaWQgPT0gQ1NTVmFsdWVTdHJl
dGNoIHx8IGlkID09IENTU1ZhbHVlU3RhcnQgfHwgaWQgPT0gQ1NTVmFsdWVFbmQgfHwKLSAgICAg
ICAgICAgIGlkID09IENTU1ZhbHVlQ2VudGVyIHx8IGlkID09IENTU1ZhbHVlQmFzZWxpbmUpCi0g
ICAgICAgICAgICB2YWxpZFByaW1pdGl2ZSA9IHRydWU7Ci0gICAgICAgIGJyZWFrOwotICAgIGNh
c2UgQ1NTUHJvcGVydHlXZWJraXRCb3hEaXJlY3Rpb246Ci0gICAgICAgIGlmIChpZCA9PSBDU1NW
YWx1ZU5vcm1hbCB8fCBpZCA9PSBDU1NWYWx1ZVJldmVyc2UpCi0gICAgICAgICAgICB2YWxpZFBy
aW1pdGl2ZSA9IHRydWU7Ci0gICAgICAgIGJyZWFrOwotICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJr
aXRCb3hMaW5lczoKLSAgICAgICAgaWYgKGlkID09IENTU1ZhbHVlU2luZ2xlIHx8IGlkID09IENT
U1ZhbHVlTXVsdGlwbGUpCi0gICAgICAgICAgICB2YWxpZFByaW1pdGl2ZSA9IHRydWU7Ci0gICAg
ICAgIGJyZWFrOwotICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRCb3hPcmllbnQ6Ci0gICAgICAg
IGlmIChpZCA9PSBDU1NWYWx1ZUhvcml6b250YWwgfHwgaWQgPT0gQ1NTVmFsdWVWZXJ0aWNhbCB8
fAotICAgICAgICAgICAgaWQgPT0gQ1NTVmFsdWVJbmxpbmVBeGlzIHx8IGlkID09IENTU1ZhbHVl
QmxvY2tBeGlzKQotICAgICAgICAgICAgdmFsaWRQcmltaXRpdmUgPSB0cnVlOwotICAgICAgICBi
cmVhazsKLSAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0Qm94UGFjazoKLSAgICAgICAgaWYgKGlk
ID09IENTU1ZhbHVlU3RhcnQgfHwgaWQgPT0gQ1NTVmFsdWVFbmQgfHwKLSAgICAgICAgICAgIGlk
ID09IENTU1ZhbHVlQ2VudGVyIHx8IGlkID09IENTU1ZhbHVlSnVzdGlmeSkKLSAgICAgICAgICAg
IHZhbGlkUHJpbWl0aXZlID0gdHJ1ZTsKLSAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBDU1NQcm9w
ZXJ0eVdlYmtpdEJveEZsZXg6CiAgICAgICAgIHZhbGlkUHJpbWl0aXZlID0gdmFsaWRVbml0KHZh
bHVlLCBGTnVtYmVyLCBtX3N0cmljdCk7CiAgICAgICAgIGJyZWFrOwpAQCAtMTY4MSwxMiArMTk0
NCw2IEBAIGJvb2wgQ1NTUGFyc2VyOjpwYXJzZVZhbHVlKGludCBwcm9wSWQsIGJvb2wgaW1wb3J0
YW50KQogICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRCb3hPcmRpbmFsR3JvdXA6CiAgICAgICAg
IHZhbGlkUHJpbWl0aXZlID0gdmFsaWRVbml0KHZhbHVlLCBGSW50ZWdlciB8IEZOb25OZWcsIHRy
dWUpOwogICAgICAgICBicmVhazsKLSAgICBjYXNlIENTU1Byb3BlcnR5Qm94U2l6aW5nOgotICAg
ICAgICB2YWxpZFByaW1pdGl2ZSA9IGlkID09IENTU1ZhbHVlQm9yZGVyQm94IHx8IGlkID09IENT
U1ZhbHVlQ29udGVudEJveDsKLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBDU1NQcm9wZXJ0eVdl
YmtpdENvbG9yQ29ycmVjdGlvbjoKLSAgICAgICAgdmFsaWRQcmltaXRpdmUgPSBpZCA9PSBDU1NW
YWx1ZVNyZ2IgfHwgaWQgPT0gQ1NTVmFsdWVEZWZhdWx0OwotICAgICAgICBicmVhazsKICNpZiBF
TkFCTEUoQ1NTX0ZJTFRFUlMpCiAgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdEZpbHRlcjoKICAg
ICAgICAgaWYgKGlkID09IENTU1ZhbHVlTm9uZSkKQEAgLTE3MDksMTggKzE5NjYsNiBAQCBib29s
IENTU1BhcnNlcjo6cGFyc2VWYWx1ZShpbnQgcHJvcElkLCBib29sIGltcG9ydGFudCkKICAgICAg
ICAgICAgIG1fdmFsdWVMaXN0LT5uZXh0KCk7CiAgICAgICAgIH0KICAgICAgICAgYnJlYWs7Ci0g
ICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdEZsZXhQYWNrOgotICAgICAgICB2YWxpZFByaW1pdGl2
ZSA9IGlkID09IENTU1ZhbHVlU3RhcnQgfHwgaWQgPT0gQ1NTVmFsdWVFbmQgfHwgaWQgPT0gQ1NT
VmFsdWVDZW50ZXIgfHwgaWQgPT0gQ1NTVmFsdWVKdXN0aWZ5IHx8IGlkID09IENTU1ZhbHVlRGlz
dHJpYnV0ZTsKLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdEZsZXhB
bGlnbjoKLSAgICAgICAgdmFsaWRQcmltaXRpdmUgPSBpZCA9PSBDU1NWYWx1ZVN0YXJ0IHx8IGlk
ID09IENTU1ZhbHVlRW5kIHx8IGlkID09IENTU1ZhbHVlQ2VudGVyIHx8IGlkID09IENTU1ZhbHVl
QmFzZWxpbmUgfHwgaWQgPT0gQ1NTVmFsdWVTdHJldGNoOwotICAgICAgICBicmVhazsKLSAgICBj
YXNlIENTU1Byb3BlcnR5V2Via2l0RmxleEl0ZW1BbGlnbjoKLSAgICAgICAgdmFsaWRQcmltaXRp
dmUgPSBpZCA9PSBDU1NWYWx1ZUF1dG8gfHwgaWQgPT0gQ1NTVmFsdWVTdGFydCB8fCBpZCA9PSBD
U1NWYWx1ZUVuZCB8fCBpZCA9PSBDU1NWYWx1ZUNlbnRlciB8fCBpZCA9PSBDU1NWYWx1ZUJhc2Vs
aW5lIHx8IGlkID09IENTU1ZhbHVlU3RyZXRjaDsKLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBD
U1NQcm9wZXJ0eVdlYmtpdEZsZXhEaXJlY3Rpb246Ci0gICAgICAgIHZhbGlkUHJpbWl0aXZlID0g
aWQgPT0gQ1NTVmFsdWVSb3cgfHwgaWQgPT0gQ1NTVmFsdWVSb3dSZXZlcnNlIHx8IGlkID09IENT
U1ZhbHVlQ29sdW1uIHx8IGlkID09IENTU1ZhbHVlQ29sdW1uUmV2ZXJzZTsKLSAgICAgICAgYnJl
YWs7CiAgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdEZsZXhXcmFwOgogICAgICAgICB2YWxpZFBy
aW1pdGl2ZSA9IGlkID09IENTU1ZhbHVlTm9uZSB8fCBpZCA9PSBDU1NWYWx1ZVdyYXAgfHwgaWQg
PT0gQ1NTVmFsdWVXcmFwUmV2ZXJzZTsKICAgICAgICAgYnJlYWs7CkBAIC0xNzMwLDIyICsxOTc1
LDEyIEBAIGJvb2wgQ1NTUGFyc2VyOjpwYXJzZVZhbHVlKGludCBwcm9wSWQsIGJvb2wgaW1wb3J0
YW50KQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ1NTUHJvcGVydHlXZWJr
aXRNYXJxdWVlU3R5bGUsIENTU1Byb3BlcnR5V2Via2l0TWFycXVlZVNwZWVkIH07CiAgICAgICAg
IHJldHVybiBwYXJzZVNob3J0aGFuZChwcm9wSWQsIHByb3BlcnRpZXMsIDUsIGltcG9ydGFudCk7
CiAgICAgfQotICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRNYXJxdWVlRGlyZWN0aW9uOgotICAg
ICAgICBpZiAoaWQgPT0gQ1NTVmFsdWVGb3J3YXJkcyB8fCBpZCA9PSBDU1NWYWx1ZUJhY2t3YXJk
cyB8fCBpZCA9PSBDU1NWYWx1ZUFoZWFkIHx8Ci0gICAgICAgICAgICBpZCA9PSBDU1NWYWx1ZVJl
dmVyc2UgfHwgaWQgPT0gQ1NTVmFsdWVMZWZ0IHx8IGlkID09IENTU1ZhbHVlUmlnaHQgfHwgaWQg
PT0gQ1NTVmFsdWVEb3duIHx8Ci0gICAgICAgICAgICBpZCA9PSBDU1NWYWx1ZVVwIHx8IGlkID09
IENTU1ZhbHVlQXV0bykKLSAgICAgICAgICAgIHZhbGlkUHJpbWl0aXZlID0gdHJ1ZTsKLSAgICAg
ICAgYnJlYWs7CiAgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdE1hcnF1ZWVJbmNyZW1lbnQ6CiAg
ICAgICAgIGlmIChpZCA9PSBDU1NWYWx1ZVNtYWxsIHx8IGlkID09IENTU1ZhbHVlTGFyZ2UgfHwg
aWQgPT0gQ1NTVmFsdWVNZWRpdW0pCiAgICAgICAgICAgICB2YWxpZFByaW1pdGl2ZSA9IHRydWU7
CiAgICAgICAgIGVsc2UKICAgICAgICAgICAgIHZhbGlkUHJpbWl0aXZlID0gdmFsaWRVbml0KHZh
bHVlLCBGTGVuZ3RoIHwgRlBlcmNlbnQsIG1fc3RyaWN0KTsKICAgICAgICAgYnJlYWs7Ci0gICAg
Y2FzZSBDU1NQcm9wZXJ0eVdlYmtpdE1hcnF1ZWVTdHlsZToKLSAgICAgICAgaWYgKGlkID09IENT
U1ZhbHVlTm9uZSB8fCBpZCA9PSBDU1NWYWx1ZVNsaWRlIHx8IGlkID09IENTU1ZhbHVlU2Nyb2xs
IHx8IGlkID09IENTU1ZhbHVlQWx0ZXJuYXRlKQotICAgICAgICAgICAgdmFsaWRQcmltaXRpdmUg
PSB0cnVlOwotICAgICAgICBicmVhazsKICAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0TWFycXVl
ZVJlcGV0aXRpb246CiAgICAgICAgIGlmIChpZCA9PSBDU1NWYWx1ZUluZmluaXRlKQogICAgICAg
ICAgICAgdmFsaWRQcmltaXRpdmUgPSB0cnVlOwpAQCAtMTc3MCwyMyArMjAwNSw2IEBAIGJvb2wg
Q1NTUGFyc2VyOjpwYXJzZVZhbHVlKGludCBwcm9wSWQsIGJvb2wgaW1wb3J0YW50KQogICAgICAg
ICBpZiAoY3NzUmVnaW9uc0VuYWJsZWQoKSAmJiAoaWQgPT0gQ1NTVmFsdWVBdXRvIHx8IGlkID09
IENTU1ZhbHVlQnJlYWspKQogICAgICAgICAgICAgdmFsaWRQcmltaXRpdmUgPSB0cnVlOwogICAg
ICAgICBicmVhazsKLQotICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRVc2VyRHJhZzogLy8gYXV0
byB8IG5vbmUgfCBlbGVtZW50Ci0gICAgICAgIGlmIChpZCA9PSBDU1NWYWx1ZUF1dG8gfHwgaWQg
PT0gQ1NTVmFsdWVOb25lIHx8IGlkID09IENTU1ZhbHVlRWxlbWVudCkKLSAgICAgICAgICAgIHZh
bGlkUHJpbWl0aXZlID0gdHJ1ZTsKLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBDU1NQcm9wZXJ0
eVdlYmtpdFVzZXJNb2RpZnk6IC8vIHJlYWQtb25seSB8IHJlYWQtd3JpdGUKLSAgICAgICAgaWYg
KGlkID09IENTU1ZhbHVlUmVhZE9ubHkgfHwgaWQgPT0gQ1NTVmFsdWVSZWFkV3JpdGUgfHwgaWQg
PT0gQ1NTVmFsdWVSZWFkV3JpdGVQbGFpbnRleHRPbmx5KQotICAgICAgICAgICAgdmFsaWRQcmlt
aXRpdmUgPSB0cnVlOwotICAgICAgICBicmVhazsKLSAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0
VXNlclNlbGVjdDogLy8gYXV0byB8IG5vbmUgfCB0ZXh0Ci0gICAgICAgIGlmIChpZCA9PSBDU1NW
YWx1ZUF1dG8gfHwgaWQgPT0gQ1NTVmFsdWVOb25lIHx8IGlkID09IENTU1ZhbHVlVGV4dCkKLSAg
ICAgICAgICAgIHZhbGlkUHJpbWl0aXZlID0gdHJ1ZTsKLSAgICAgICAgYnJlYWs7Ci0gICAgY2Fz
ZSBDU1NQcm9wZXJ0eVRleHRPdmVyZmxvdzogLy8gY2xpcCB8IGVsbGlwc2lzCi0gICAgICAgIGlm
IChpZCA9PSBDU1NWYWx1ZUNsaXAgfHwgaWQgPT0gQ1NTVmFsdWVFbGxpcHNpcykKLSAgICAgICAg
ICAgIHZhbGlkUHJpbWl0aXZlID0gdHJ1ZTsKLSAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBDU1NQ
cm9wZXJ0eVdlYmtpdFRyYW5zZm9ybToKICAgICAgICAgaWYgKGlkID09IENTU1ZhbHVlTm9uZSkK
ICAgICAgICAgICAgIHZhbGlkUHJpbWl0aXZlID0gdHJ1ZTsKQEAgLTE4MTcsMTggKzIwMzUsNiBA
QCBib29sIENTU1BhcnNlcjo6cGFyc2VWYWx1ZShpbnQgcHJvcElkLCBib29sIGltcG9ydGFudCkK
ICAgICAgICAgfQogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQotICAgIGNhc2UgQ1NTUHJv
cGVydHlXZWJraXRUcmFuc2Zvcm1TdHlsZToKLSAgICAgICAgaWYgKHZhbHVlLT5pZCA9PSBDU1NW
YWx1ZUZsYXQgfHwgdmFsdWUtPmlkID09IENTU1ZhbHVlUHJlc2VydmUzZCkKLSAgICAgICAgICAg
IHZhbGlkUHJpbWl0aXZlID0gdHJ1ZTsKLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBDU1NQcm9w
ZXJ0eVdlYmtpdEJhY2tmYWNlVmlzaWJpbGl0eToKLSAgICAgICAgaWYgKHZhbHVlLT5pZCA9PSBD
U1NWYWx1ZVZpc2libGUgfHwgdmFsdWUtPmlkID09IENTU1ZhbHVlSGlkZGVuKQotICAgICAgICAg
ICAgdmFsaWRQcmltaXRpdmUgPSB0cnVlOwotICAgICAgICBicmVhazsKLSAgICBjYXNlIENTU1By
b3BlcnR5V2Via2l0UHJpbnRDb2xvckFkanVzdDoKLSAgICAgICAgaWYgKHZhbHVlLT5pZCA9PSBD
U1NWYWx1ZUV4YWN0IHx8IHZhbHVlLT5pZCA9PSBDU1NWYWx1ZUVjb25vbXkpCi0gICAgICAgICAg
ICB2YWxpZFByaW1pdGl2ZSA9IHRydWU7Ci0gICAgICAgIGJyZWFrOwogICAgIGNhc2UgQ1NTUHJv
cGVydHlXZWJraXRQZXJzcGVjdGl2ZToKICAgICAgICAgaWYgKGlkID09IENTU1ZhbHVlTm9uZSkK
ICAgICAgICAgICAgIHZhbGlkUHJpbWl0aXZlID0gdHJ1ZTsKQEAgLTE5MDYsMzIgKzIxMTIsNiBA
QCBib29sIENTU1BhcnNlcjo6cGFyc2VWYWx1ZShpbnQgcHJvcElkLCBib29sIGltcG9ydGFudCkK
ICAgICAgICAgfQogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQotICAgIGNhc2UgQ1NTUHJv
cGVydHlXZWJraXRNYXJnaW5CZWZvcmVDb2xsYXBzZToKLSAgICBjYXNlIENTU1Byb3BlcnR5V2Vi
a2l0TWFyZ2luQWZ0ZXJDb2xsYXBzZToKLSAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0TWFyZ2lu
VG9wQ29sbGFwc2U6Ci0gICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdE1hcmdpbkJvdHRvbUNvbGxh
cHNlOgotICAgICAgICBpZiAoaWQgPT0gQ1NTVmFsdWVDb2xsYXBzZSB8fCBpZCA9PSBDU1NWYWx1
ZVNlcGFyYXRlIHx8IGlkID09IENTU1ZhbHVlRGlzY2FyZCkKLSAgICAgICAgICAgIHZhbGlkUHJp
bWl0aXZlID0gdHJ1ZTsKLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBDU1NQcm9wZXJ0eVRleHRM
aW5lVGhyb3VnaE1vZGU6Ci0gICAgY2FzZSBDU1NQcm9wZXJ0eVRleHRPdmVybGluZU1vZGU6Ci0g
ICAgY2FzZSBDU1NQcm9wZXJ0eVRleHRVbmRlcmxpbmVNb2RlOgotICAgICAgICBpZiAoaWQgPT0g
Q1NTVmFsdWVDb250aW51b3VzIHx8IGlkID09IENTU1ZhbHVlU2tpcFdoaXRlU3BhY2UpCi0gICAg
ICAgICAgICB2YWxpZFByaW1pdGl2ZSA9IHRydWU7Ci0gICAgICAgIGJyZWFrOwotICAgIGNhc2Ug
Q1NTUHJvcGVydHlUZXh0TGluZVRocm91Z2hTdHlsZToKLSAgICBjYXNlIENTU1Byb3BlcnR5VGV4
dE92ZXJsaW5lU3R5bGU6Ci0gICAgY2FzZSBDU1NQcm9wZXJ0eVRleHRVbmRlcmxpbmVTdHlsZToK
LSAgICAgICAgaWYgKGlkID09IENTU1ZhbHVlTm9uZSB8fCBpZCA9PSBDU1NWYWx1ZVNvbGlkIHx8
IGlkID09IENTU1ZhbHVlRG91YmxlIHx8Ci0gICAgICAgICAgICBpZCA9PSBDU1NWYWx1ZURhc2hl
ZCB8fCBpZCA9PSBDU1NWYWx1ZURvdERhc2ggfHwgaWQgPT0gQ1NTVmFsdWVEb3REb3REYXNoIHx8
Ci0gICAgICAgICAgICBpZCA9PSBDU1NWYWx1ZVdhdmUpCi0gICAgICAgICAgICB2YWxpZFByaW1p
dGl2ZSA9IHRydWU7Ci0gICAgICAgIGJyZWFrOwotICAgIGNhc2UgQ1NTUHJvcGVydHlUZXh0UmVu
ZGVyaW5nOiAvLyBhdXRvIHwgb3B0aW1pemVTcGVlZCB8IG9wdGltaXplTGVnaWJpbGl0eSB8IGdl
b21ldHJpY1ByZWNpc2lvbgotICAgICAgICBpZiAoaWQgPT0gQ1NTVmFsdWVBdXRvIHx8IGlkID09
IENTU1ZhbHVlT3B0aW1pemVzcGVlZCB8fCBpZCA9PSBDU1NWYWx1ZU9wdGltaXplbGVnaWJpbGl0
eQotICAgICAgICAgICAgfHwgaWQgPT0gQ1NTVmFsdWVHZW9tZXRyaWNwcmVjaXNpb24pCi0gICAg
ICAgICAgICB2YWxpZFByaW1pdGl2ZSA9IHRydWU7Ci0gICAgICAgIGJyZWFrOwogICAgIGNhc2Ug
Q1NTUHJvcGVydHlUZXh0TGluZVRocm91Z2hXaWR0aDoKICAgICBjYXNlIENTU1Byb3BlcnR5VGV4
dE92ZXJsaW5lV2lkdGg6CiAgICAgY2FzZSBDU1NQcm9wZXJ0eVRleHRVbmRlcmxpbmVXaWR0aDoK
QEAgLTE5NDEsMTAgKzIxMjEsNiBAQCBib29sIENTU1BhcnNlcjo6cGFyc2VWYWx1ZShpbnQgcHJv
cElkLCBib29sIGltcG9ydGFudCkKICAgICAgICAgZWxzZQogICAgICAgICAgICAgdmFsaWRQcmlt
aXRpdmUgPSAhaWQgJiYgdmFsaWRVbml0KHZhbHVlLCBGTnVtYmVyIHwgRkxlbmd0aCB8IEZQZXJj
ZW50LCBtX3N0cmljdCk7CiAgICAgICAgIGJyZWFrOwotICAgIGNhc2UgQ1NTUHJvcGVydHlSZXNp
emU6IC8vIG5vbmUgfCBib3RoIHwgaG9yaXpvbnRhbCB8IHZlcnRpY2FsIHwgYXV0bwotICAgICAg
ICBpZiAoaWQgPT0gQ1NTVmFsdWVOb25lIHx8IGlkID09IENTU1ZhbHVlQm90aCB8fCBpZCA9PSBD
U1NWYWx1ZUhvcml6b250YWwgfHwgaWQgPT0gQ1NTVmFsdWVWZXJ0aWNhbCB8fCBpZCA9PSBDU1NW
YWx1ZUF1dG8pCi0gICAgICAgICAgICB2YWxpZFByaW1pdGl2ZSA9IHRydWU7Ci0gICAgICAgIGJy
ZWFrOwogICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRDb2x1bW5Db3VudDoKICAgICAgICAgaWYg
KGlkID09IENTU1ZhbHVlQXV0bykKICAgICAgICAgICAgIHZhbGlkUHJpbWl0aXZlID0gdHJ1ZTsK
QEAgLTE5NzMsMTcgKzIxNDksNiBAQCBib29sIENTU1BhcnNlcjo6cGFyc2VWYWx1ZShpbnQgcHJv
cElkLCBib29sIGltcG9ydGFudCkKICAgICAgICAgZWxzZSAvLyBBbHdheXMgcGFyc2UgdGhpcyBw
cm9wZXJ0eSBpbiBzdHJpY3QgbW9kZSwgc2luY2UgaXQgd291bGQgYmUgYW1iaWd1b3VzIG90aGVy
d2lzZSB3aGVuIHVzZWQgaW4gdGhlICdjb2x1bW5zJyBzaG9ydGhhbmQgcHJvcGVydHkuCiAgICAg
ICAgICAgICB2YWxpZFByaW1pdGl2ZSA9IHZhbGlkVW5pdCh2YWx1ZSwgRkxlbmd0aCwgdHJ1ZSk7
CiAgICAgICAgIGJyZWFrOwotICAgIGNhc2UgQ1NTUHJvcGVydHlQb2ludGVyRXZlbnRzOgotICAg
ICAgICAvLyBub25lIHwgdmlzaWJsZVBhaW50ZWQgfCB2aXNpYmxlRmlsbCB8IHZpc2libGVTdHJv
a2UgfCB2aXNpYmxlIHwKLSAgICAgICAgLy8gcGFpbnRlZCB8IGZpbGwgfCBzdHJva2UgfCBhdXRv
IHwgYWxsIHwgaW5oZXJpdAotICAgICAgICBpZiAoaWQgPT0gQ1NTVmFsdWVWaXNpYmxlIHx8IGlk
ID09IENTU1ZhbHVlTm9uZSB8fCBpZCA9PSBDU1NWYWx1ZUFsbCB8fCBpZCA9PSBDU1NWYWx1ZUF1
dG8gfHwKLSAgICAgICAgICAgIChpZCA+PSBDU1NWYWx1ZVZpc2libGVwYWludGVkICYmIGlkIDw9
IENTU1ZhbHVlU3Ryb2tlKSkKLSAgICAgICAgICAgIHZhbGlkUHJpbWl0aXZlID0gdHJ1ZTsKLSAg
ICAgICAgYnJlYWs7Ci0gICAgY2FzZSBDU1NQcm9wZXJ0eUltYWdlUmVuZGVyaW5nOiAvLyBhdXRv
IHwgb3B0aW1pemVDb250cmFzdAotICAgICAgICBpZiAoaWQgPT0gQ1NTVmFsdWVBdXRvIHx8IGlk
ID09IENTU1ZhbHVlV2Via2l0T3B0aW1pemVDb250cmFzdCkKLSAgICAgICAgICAgIHZhbGlkUHJp
bWl0aXZlID0gdHJ1ZTsKLSAgICAgICAgYnJlYWs7CiAgICAgLy8gRW5kIG9mIENTUzMgcHJvcGVy
dGllcwogCiAgICAgLy8gQXBwbGUgc3BlY2lmaWMgcHJvcGVydGllcy4gIFRoZXNlIHdpbGwgbmV2
ZXIgYmUgc3RhbmRhcmRpemVkIGFuZCBhcmUgcHVyZWx5IHRvCkBAIC0xOTkzLDQ0ICsyMTU4LDE2
IEBAIGJvb2wgQ1NTUGFyc2VyOjpwYXJzZVZhbHVlKGludCBwcm9wSWQsIGJvb2wgaW1wb3J0YW50
KQogICAgICAgICAvLyBXaGVuIHNwZWNpZnlpbmcgZWl0aGVyIHR5cGUgb2YgdW5pdCwgcmVxdWly
ZSBub24tbmVnYXRpdmUgaW50ZWdlcnMKICAgICAgICAgdmFsaWRQcmltaXRpdmUgPSAoIWlkICYm
ICh2YWx1ZS0+dW5pdCA9PSBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX1BFUkNFTlRBR0UgfHwgdmFs
dWUtPmZWYWx1ZSkgJiYgdmFsaWRVbml0KHZhbHVlLCBGSW50ZWdlciB8IEZQZXJjZW50IHwgRk5v
bk5lZywgZmFsc2UpKTsKICAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtp
dFRleHRTaXplQWRqdXN0OgotICAgICAgICBpZiAoaWQgPT0gQ1NTVmFsdWVBdXRvIHx8IGlkID09
IENTU1ZhbHVlTm9uZSkKLSAgICAgICAgICAgIHZhbGlkUHJpbWl0aXZlID0gdHJ1ZTsKLSAgICAg
ICAgYnJlYWs7Ci0gICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdFJ0bE9yZGVyaW5nOgotICAgICAg
ICBpZiAoaWQgPT0gQ1NTVmFsdWVMb2dpY2FsIHx8IGlkID09IENTU1ZhbHVlVmlzdWFsKQotICAg
ICAgICAgICAgdmFsaWRQcmltaXRpdmUgPSB0cnVlOwotICAgICAgICBicmVhazsKIAogICAgIGNh
c2UgQ1NTUHJvcGVydHlXZWJraXRGb250U2l6ZURlbHRhOiAgICAgICAgICAgLy8gPGxlbmd0aD4K
ICAgICAgICAgdmFsaWRQcmltaXRpdmUgPSB2YWxpZFVuaXQodmFsdWUsIEZMZW5ndGgsIG1fc3Ry
aWN0KTsKICAgICAgICAgYnJlYWs7CiAKLSAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0TmJzcE1v
ZGU6ICAgICAvLyBub3JtYWwgfCBzcGFjZQotICAgICAgICBpZiAoaWQgPT0gQ1NTVmFsdWVOb3Jt
YWwgfHwgaWQgPT0gQ1NTVmFsdWVTcGFjZSkKLSAgICAgICAgICAgIHZhbGlkUHJpbWl0aXZlID0g
dHJ1ZTsKLSAgICAgICAgYnJlYWs7Ci0KLSAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0TGluZUJy
ZWFrOiAgIC8vIG5vcm1hbCB8IGFmdGVyLXdoaXRlLXNwYWNlCi0gICAgICAgIGlmIChpZCA9PSBD
U1NWYWx1ZU5vcm1hbCB8fCBpZCA9PSBDU1NWYWx1ZUFmdGVyV2hpdGVTcGFjZSkKLSAgICAgICAg
ICAgIHZhbGlkUHJpbWl0aXZlID0gdHJ1ZTsKLSAgICAgICAgYnJlYWs7Ci0KLSAgICBjYXNlIENT
U1Byb3BlcnR5V2Via2l0TWF0Y2hOZWFyZXN0TWFpbEJsb2NrcXVvdGVDb2xvcjogICAvLyBub3Jt
YWwgfCBtYXRjaAotICAgICAgICBpZiAoaWQgPT0gQ1NTVmFsdWVOb3JtYWwgfHwgaWQgPT0gQ1NT
VmFsdWVNYXRjaCkKLSAgICAgICAgICAgIHZhbGlkUHJpbWl0aXZlID0gdHJ1ZTsKLSAgICAgICAg
YnJlYWs7Ci0KICAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0SGlnaGxpZ2h0OgogICAgICAgICBp
ZiAoaWQgPT0gQ1NTVmFsdWVOb25lIHx8IHZhbHVlLT51bml0ID09IENTU1ByaW1pdGl2ZVZhbHVl
OjpDU1NfU1RSSU5HKQogICAgICAgICAgICAgdmFsaWRQcmltaXRpdmUgPSB0cnVlOwogICAgICAg
ICBicmVhazsKIAotICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRIeXBoZW5zOgotICAgICAgICBp
ZiAoaWQgPT0gQ1NTVmFsdWVOb25lIHx8IGlkID09IENTU1ZhbHVlTWFudWFsIHx8IGlkID09IENT
U1ZhbHVlQXV0bykKLSAgICAgICAgICAgIHZhbGlkUHJpbWl0aXZlID0gdHJ1ZTsKLSAgICAgICAg
YnJlYWs7Ci0KICAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0SHlwaGVuYXRlQ2hhcmFjdGVyOgog
ICAgICAgICBpZiAoaWQgPT0gQ1NTVmFsdWVBdXRvIHx8IHZhbHVlLT51bml0ID09IENTU1ByaW1p
dGl2ZVZhbHVlOjpDU1NfU1RSSU5HKQogICAgICAgICAgICAgdmFsaWRQcmltaXRpdmUgPSB0cnVl
OwpAQCAtMjA1OCwzNiArMjE5NSwxMSBAQCBib29sIENTU1BhcnNlcjo6cGFyc2VWYWx1ZShpbnQg
cHJvcElkLCBib29sIGltcG9ydGFudCkKICAgICAgICAgICAgIH0KICAgICAgICAgfQogICAgICAg
ICBicmVhazsKLSAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0TGluZVNuYXA6Ci0gICAgICAgIGlm
IChpZCA9PSBDU1NWYWx1ZU5vbmUgfHwgaWQgPT0gQ1NTVmFsdWVCYXNlbGluZSB8fCBpZCA9PSBD
U1NWYWx1ZUNvbnRhaW4pCi0gICAgICAgICAgICB2YWxpZFByaW1pdGl2ZSA9IHRydWU7Ci0gICAg
ICAgIGJyZWFrOwotICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRMaW5lQWxpZ246Ci0gICAgICAg
IGlmIChpZCA9PSBDU1NWYWx1ZU5vbmUgfHwgaWQgPT0gQ1NTVmFsdWVFZGdlcykKLSAgICAgICAg
ICAgIHZhbGlkUHJpbWl0aXZlID0gdHJ1ZTsKLSAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBDU1NQ
cm9wZXJ0eVdlYmtpdExvY2FsZToKICAgICAgICAgaWYgKGlkID09IENTU1ZhbHVlQXV0byB8fCB2
YWx1ZS0+dW5pdCA9PSBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX1NUUklORykKICAgICAgICAgICAg
IHZhbGlkUHJpbWl0aXZlID0gdHJ1ZTsKICAgICAgICAgYnJlYWs7CiAKLSAgICBjYXNlIENTU1By
b3BlcnR5V2Via2l0Qm9yZGVyRml0OgotICAgICAgICBpZiAoaWQgPT0gQ1NTVmFsdWVCb3JkZXIg
fHwgaWQgPT0gQ1NTVmFsdWVMaW5lcykKLSAgICAgICAgICAgIHZhbGlkUHJpbWl0aXZlID0gdHJ1
ZTsKLSAgICAgICAgYnJlYWs7Ci0KLSAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0VGV4dFNlY3Vy
aXR5OgotICAgICAgICAvLyBkaXNjIHwgY2lyY2xlIHwgc3F1YXJlIHwgbm9uZSB8IGluaGVyaXQK
LSAgICAgICAgaWYgKGlkID09IENTU1ZhbHVlRGlzYyB8fCBpZCA9PSBDU1NWYWx1ZUNpcmNsZSB8
fCBpZCA9PSBDU1NWYWx1ZVNxdWFyZXx8IGlkID09IENTU1ZhbHVlTm9uZSkKLSAgICAgICAgICAg
IHZhbGlkUHJpbWl0aXZlID0gdHJ1ZTsKLSAgICAgICAgYnJlYWs7Ci0KLSAgICBjYXNlIENTU1By
b3BlcnR5V2Via2l0Rm9udFNtb290aGluZzoKLSAgICAgICAgaWYgKGlkID09IENTU1ZhbHVlQXV0
byB8fCBpZCA9PSBDU1NWYWx1ZU5vbmUKLSAgICAgICAgICAgIHx8IGlkID09IENTU1ZhbHVlQW50
aWFsaWFzZWQgfHwgaWQgPT0gQ1NTVmFsdWVTdWJwaXhlbEFudGlhbGlhc2VkKQotICAgICAgICAg
ICAgdmFsaWRQcmltaXRpdmUgPSB0cnVlOwotICAgICAgICBicmVhazsKLQogI2lmIEVOQUJMRShE
QVNIQk9BUkRfU1VQUE9SVCkKICAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0RGFzaGJvYXJkUmVn
aW9uOiAvLyA8ZGFzaGJvYXJkLXJlZ2lvbj4gfCA8ZGFzaGJvYXJkLXJlZ2lvbj4KICAgICAgICAg
aWYgKHZhbHVlLT51bml0ID09IENTU1BhcnNlclZhbHVlOjpGdW5jdGlvbiB8fCBpZCA9PSBDU1NW
YWx1ZU5vbmUpCkBAIC0yMTA5LDEzICsyMjIxLDYgQEAgYm9vbCBDU1NQYXJzZXI6OnBhcnNlVmFs
dWUoaW50IHByb3BJZCwgYm9vbCBpbXBvcnRhbnQpCiAgICAgICAgIGJyZWFrOwogI2VuZGlmCiAK
LSNpZiBFTkFCTEUoT1ZFUkZMT1dfU0NST0xMSU5HKQotICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJr
aXRPdmVyZmxvd1Njcm9sbGluZzoKLSAgICAgICAgaWYgKGlkID09IENTU1ZhbHVlQXV0byB8fCBp
ZCA9PSBDU1NWYWx1ZVRvdWNoKQotICAgICAgICAgICAgdmFsaWRQcmltaXRpdmUgPSB0cnVlOwot
ICAgICAgICBicmVhazsKLSNlbmRpZgotCiAgICAgICAgIC8qIHNob3J0aGFuZCBwcm9wZXJ0aWVz
ICovCiAgICAgY2FzZSBDU1NQcm9wZXJ0eUJhY2tncm91bmQ6IHsKICAgICAgICAgLy8gUG9zaXRp
b24gbXVzdCBjb21lIGJlZm9yZSBjb2xvciBpbiB0aGlzIGFycmF5IGJlY2F1c2UgYSBwbGFpbiBv
bGQgIjAiIGlzIGEgbGVnYWwgY29sb3IKQEAgLTIyODUsMjYgKzIzOTAsMTEgQEAgYm9vbCBDU1NQ
YXJzZXI6OnBhcnNlVmFsdWUoaW50IHByb3BJZCwgYm9vbCBpbXBvcnRhbnQpCiAgICAgY2FzZSBD
U1NQcm9wZXJ0eVRleHRVbmRlcmxpbmU6CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAvLyBD
U1MgVGV4dCBMYXlvdXQgTW9kdWxlIExldmVsIDM6IFZlcnRpY2FsIHdyaXRpbmcgc3VwcG9ydAot
ICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRXcml0aW5nTW9kZToKLSAgICAgICAgaWYgKGlkID49
IENTU1ZhbHVlSG9yaXpvbnRhbFRiICYmIGlkIDw9IENTU1ZhbHVlSG9yaXpvbnRhbEJ0KQotICAg
ICAgICAgICAgdmFsaWRQcmltaXRpdmUgPSB0cnVlOwotICAgICAgICBicmVhazsKLQotICAgIGNh
c2UgQ1NTUHJvcGVydHlXZWJraXRUZXh0Q29tYmluZToKLSAgICAgICAgaWYgKGlkID09IENTU1Zh
bHVlTm9uZSB8fCBpZCA9PSBDU1NWYWx1ZUhvcml6b250YWwpCi0gICAgICAgICAgICB2YWxpZFBy
aW1pdGl2ZSA9IHRydWU7Ci0gICAgICAgIGJyZWFrOwotCiAgICAgY2FzZSBDU1NQcm9wZXJ0eVdl
YmtpdFRleHRFbXBoYXNpczogewogICAgICAgICBjb25zdCBpbnQgcHJvcGVydGllc1tdID0geyBD
U1NQcm9wZXJ0eVdlYmtpdFRleHRFbXBoYXNpc1N0eWxlLCBDU1NQcm9wZXJ0eVdlYmtpdFRleHRF
bXBoYXNpc0NvbG9yIH07CiAgICAgICAgIHJldHVybiBwYXJzZVNob3J0aGFuZChwcm9wSWQsIHBy
b3BlcnRpZXMsIFdURl9BUlJBWV9MRU5HVEgocHJvcGVydGllcyksIGltcG9ydGFudCk7CiAgICAg
fQogCi0gICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdFRleHRFbXBoYXNpc1Bvc2l0aW9uOgotICAg
ICAgICBpZiAoaWQgPT0gQ1NTVmFsdWVPdmVyIHx8IGlkID09IENTU1ZhbHVlVW5kZXIpCi0gICAg
ICAgICAgICB2YWxpZFByaW1pdGl2ZSA9IHRydWU7Ci0gICAgICAgIGJyZWFrOwotCiAgICAgY2Fz
ZSBDU1NQcm9wZXJ0eVdlYmtpdFRleHRFbXBoYXNpc1N0eWxlOgogICAgICAgICByZXR1cm4gcGFy
c2VUZXh0RW1waGFzaXNTdHlsZShpbXBvcnRhbnQpOwogCkBAIC0yMzI3LDExICsyNDE3LDYgQEAg
Ym9vbCBDU1NQYXJzZXI6OnBhcnNlVmFsdWUoaW50IHByb3BJZCwgYm9vbCBpbXBvcnRhbnQpCiAg
ICAgICAgICAgICByZXR1cm4gcGFyc2VGb250RmVhdHVyZVNldHRpbmdzKGltcG9ydGFudCk7CiAg
ICAgICAgIGJyZWFrOwogCi0gICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdEZvbnRLZXJuaW5nOgot
ICAgICAgICBpZiAoaWQgPT0gQ1NTVmFsdWVBdXRvIHx8IGlkID09IENTU1ZhbHVlTm9ybWFsIHx8
IGlkID09IENTU1ZhbHVlTm9uZSkKLSAgICAgICAgICAgIHZhbGlkUHJpbWl0aXZlID0gdHJ1ZTsK
LSAgICAgICAgYnJlYWs7Ci0KICAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0Rm9udFZhcmlhbnRM
aWdhdHVyZXM6CiAgICAgICAgIGlmIChpZCA9PSBDU1NWYWx1ZU5vcm1hbCkKICAgICAgICAgICAg
IHZhbGlkUHJpbWl0aXZlID0gdHJ1ZTsKQEAgLTIzNDYsMTUgKzI0MzEsNiBAQCBib29sIENTU1Bh
cnNlcjo6cGFyc2VWYWx1ZShpbnQgcHJvcElkLCBib29sIGltcG9ydGFudCkKICAgICAgICAgZWxz
ZSBpZiAodmFsdWUtPnVuaXQgPT0gQ1NTUGFyc2VyVmFsdWU6OkZ1bmN0aW9uKQogICAgICAgICAg
ICAgcmV0dXJuIHBhcnNlV3JhcFNoYXBlKChwcm9wSWQgPT0gQ1NTUHJvcGVydHlXZWJraXRXcmFw
U2hhcGVJbnNpZGUpLCBpbXBvcnRhbnQpOwogICAgICAgICBicmVhazsKLSAgICBjYXNlIENTU1By
b3BlcnR5V2Via2l0V3JhcEZsb3c6Ci0gICAgICAgIGlmIChpZCA9PSBDU1NWYWx1ZUF1dG8gfHwg
aWQgPT0gQ1NTVmFsdWVCb3RoIHx8IGlkID09IENTU1ZhbHVlTGVmdCB8fCBpZCA9PSBDU1NWYWx1
ZVJpZ2h0IHx8IGlkID09IENTU1ZhbHVlTWF4aW11bSB8fCBpZCA9PSBDU1NWYWx1ZUNsZWFyKQot
ICAgICAgICAgICAgdmFsaWRQcmltaXRpdmUgPSB0cnVlOwotICAgICAgICBicmVhazsKLQotICAg
IGNhc2UgQ1NTUHJvcGVydHlXZWJraXRXcmFwVGhyb3VnaDoKLSAgICAgICAgaWYgKGlkID09IENT
U1ZhbHVlV3JhcCB8fCBpZCA9PSBDU1NWYWx1ZU5vbmUpCi0gICAgICAgICAgICB2YWxpZFByaW1p
dGl2ZSA9IHRydWU7Ci0gICAgICAgIGJyZWFrOwogICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRX
cmFwTWFyZ2luOgogICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRXcmFwUGFkZGluZzoKICAgICAg
ICAgdmFsaWRQcmltaXRpdmUgPSAoIWlkICYmIHZhbGlkVW5pdCh2YWx1ZSwgRkxlbmd0aCB8IEZO
b25OZWcsIG1fc3RyaWN0KSk7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>131412</attachid>
            <date>2012-03-12 14:27:17 -0700</date>
            <delta_ts>2012-03-13 11:22:33 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-80874-20120312182659.patch</filename>
            <type>text/plain</type>
            <size>52697</size>
            <attacher name="Alexis Menard (darktears)">menard</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTEwNDcyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNjBlYjA1MmZmMjkzZTJm
MTIzNDQxNGRiNTM5MzgxYjdmMmVjYzkyYS4uYWM5OWZiN2ZjYzM1NmEwZjZhYjlmOGIzNjNmN2Rj
OWNkOTIzNmYzYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM1IEBACisyMDEyLTAzLTEyICBBbGV4
aXMgTWVuYXJkICA8YWxleGlzLm1lbmFyZEBvcGVuYm9zc2Eub3JnPgorCisgICAgICAgIEltcGxl
bWVudCBhIGZhc3QgcGF0aCB3aGVuIHNldHRpbmcgQ1NTIHByb3BlcnRpZXMgd2l0aCBrZXl3b3Jk
cyBmcm9tIEpTLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9ODA4NzQKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICBJbXBsZW1lbnQgYSBmYXN0IHBhdGggZm9yIHByb3BlcnRpZXMgd2l0aCBrZXl3b3Jkcy4gVGhl
IGlkZWEgaXMgdG8gYXZvaWQKKyAgICAgICAgY3JlYXRpbmcgdGhlIENTUyBwYXJzZXIgYW5kIHJ1
biBhbGwgdGhlIG1hY2hpbmVyeSBmb3IgaXQuIFRoaXMgcGF0Y2gKKyAgICAgICAgYWRkcyBhIHN0
YXRpYyBtYXAgd2hlcmUgYWxsIHRoZSBwcm9wZXJ0aWVzIGFjY2VwdGluZyBrZXl3b3JkcyBhcyB2
YWx1ZSBhcmUKKyAgICAgICAgZGVzY3JpYmVkIChlLmcuIHBvc3Rpb24gOiBmaXhlZCkuIFdoZW4g
SlMgY2FsbCBwYXJzZVZhbHVlIHdlIGNoZWNrIGlmIHdlCisgICAgICAgIGNhbiB1c2UgdGhlIGZh
c3QgcGF0aCB0byBhZGQgdGhlIGNyZWF0ZWQgcHJvcGVydHkgZGlyZWN0bHkgaW4gdGhlIGRlY2xh
cmF0aW9uLgorICAgICAgICBGb3IgdGhlIHNha2Ugb2YgbWFpbnRlbmFuY2UgdGhlIHBhcnNlVmFs
dWUgZnVudGlvbiB1c2VkIGJ5IENTU0dyYW1tYXIueSBpcyB1c2luZworICAgICAgICB0aGlzIG1h
cC4KKworICAgICAgICBObyBuZXcgdGVzdHMgOiBleGlzdGluZ3Mgb25lcyBzaG91bGQgY292ZXIu
CisKKyAgICAgICAgKiBjc3MvQ1NTUGFyc2VyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmlzS2V5
d29yZFByb3BlcnR5SUQpOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChDU1NQcm9wZXJ0
eVBhcnNlcik6CisgICAgICAgIChXZWJDb3JlOjpDU1NQcm9wZXJ0eVBhcnNlcjo6Q1NTUHJvcGVy
dHlQYXJzZXIpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTUHJvcGVydHlQYXJzZXI6Omhhc1Jhbmdl
KToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1Byb3BlcnR5UGFyc2VyOjpzZXRSYW5nZSk6CisgICAg
ICAgIChXZWJDb3JlOjpDU1NQcm9wZXJ0eVBhcnNlcjo6bWluS2V5d29yZCk6CisgICAgICAgIChX
ZWJDb3JlOjpDU1NQcm9wZXJ0eVBhcnNlcjo6bWF4S2V5d29yZCk6CisgICAgICAgIChXZWJDb3Jl
OjpDU1NQcm9wZXJ0eVBhcnNlcjo6YWNjZXB0ZWRLZXl3b3Jkcyk6CisgICAgICAgIChXZWJDb3Jl
OjpDU1NQcm9wZXJ0eVBhcnNlcjo6bGVuZ3RoKToKKyAgICAgICAgKFdlYkNvcmU6OnByb3BlcnR5
Rm9ySUQpOgorICAgICAgICAoV2ViQ29yZTo6cGFyc2VLZXl3b3JkVmFsdWUpOgorICAgICAgICAo
V2ViQ29yZTo6Q1NTUGFyc2VyOjpwYXJzZVZhbHVlKToKKwogMjAxMi0wMy0xMiAgVGltIEhvcnRv
biAgPHRpbW90aHlfaG9ydG9uQGFwcGxlLmNvbT4KIAogICAgICAgICBJbmZpbml0ZSByZXBhaW50
IGxvb3Agd2l0aCBTVkdJbWFnZUNhY2hlIGFuZCBkZWZlcnJlZCByZXBhaW50IHRpbWVycwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU1BhcnNlci5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9jc3MvQ1NTUGFyc2VyLmNwcAppbmRleCAzZGM0YmM5MTIwMjU1MmI2Njc1NGZiOWU0NzZhZDQw
ZDcwMGQxOGYwLi41MTdiZjg2YjVlNjhhNTk0NzM5NmZlY2VlNmEwM2U4NmJiZjdhZjY1IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUGFyc2VyLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9jc3MvQ1NTUGFyc2VyLmNwcApAQCAtNDc5LDYgKzQ3OSwzOTMgQEAgc3RhdGljIGJvb2wg
cGFyc2VTaW1wbGVMZW5ndGhWYWx1ZShTdHlsZVByb3BlcnR5U2V0KiBkZWNsYXJhdGlvbiwgaW50
IHByb3BlcnR5SWQKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAorc3RhdGljIGlubGluZSBib29sIGlz
S2V5d29yZFByb3BlcnR5SUQoaW50IHByb3BlcnR5SWQpCit7CisgICAgc3dpdGNoIChwcm9wZXJ0
eUlkKSB7CisgICAgY2FzZSBDU1NQcm9wZXJ0eVBvc2l0aW9uOgorICAgIGNhc2UgQ1NTUHJvcGVy
dHlFbXB0eUNlbGxzOgorICAgIGNhc2UgQ1NTUHJvcGVydHlXaGl0ZVNwYWNlOgorICAgIGNhc2Ug
Q1NTUHJvcGVydHlDYXB0aW9uU2lkZToKKyAgICBjYXNlIENTU1Byb3BlcnR5Qm9yZGVyQ29sbGFw
c2U6CisgICAgY2FzZSBDU1NQcm9wZXJ0eVZpc2liaWxpdHk6CisgICAgY2FzZSBDU1NQcm9wZXJ0
eU92ZXJmbG93WDoKKyAgICBjYXNlIENTU1Byb3BlcnR5T3ZlcmZsb3dZOgorICAgIGNhc2UgQ1NT
UHJvcGVydHlMaXN0U3R5bGVQb3NpdGlvbjoKKyAgICBjYXNlIENTU1Byb3BlcnR5RGlyZWN0aW9u
OgorICAgIGNhc2UgQ1NTUHJvcGVydHlGbG9hdDoKKyAgICBjYXNlIENTU1Byb3BlcnR5Q2xlYXI6
CisgICAgY2FzZSBDU1NQcm9wZXJ0eVdvcmRCcmVhazoKKyAgICBjYXNlIENTU1Byb3BlcnR5V29y
ZFdyYXA6CisgICAgY2FzZSBDU1NQcm9wZXJ0eVNwZWFrOgorICAgIGNhc2UgQ1NTUHJvcGVydHlG
b250U3R5bGU6CisgICAgY2FzZSBDU1NQcm9wZXJ0eVRhYmxlTGF5b3V0OgorICAgIGNhc2UgQ1NT
UHJvcGVydHlXZWJraXRCb3hBbGlnbjoKKyAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0Qm94RGly
ZWN0aW9uOgorICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRCb3hMaW5lczoKKyAgICBjYXNlIENT
U1Byb3BlcnR5V2Via2l0Qm94T3JpZW50OgorICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRCb3hQ
YWNrOgorICAgIGNhc2UgQ1NTUHJvcGVydHlCb3hTaXppbmc6CisgICAgY2FzZSBDU1NQcm9wZXJ0
eVdlYmtpdENvbG9yQ29ycmVjdGlvbjoKKyAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0RmxleFBh
Y2s6CisgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdEZsZXhBbGlnbjoKKyAgICBjYXNlIENTU1By
b3BlcnR5V2Via2l0RmxleEl0ZW1BbGlnbjoKKyAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0Rmxl
eERpcmVjdGlvbjoKKyAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0TWFycXVlZURpcmVjdGlvbjoK
KyAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0TWFycXVlZVN0eWxlOgorICAgIGNhc2UgQ1NTUHJv
cGVydHlXZWJraXRVc2VyRHJhZzoKKyAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0VXNlck1vZGlm
eToKKyAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0VXNlclNlbGVjdDoKKyAgICBjYXNlIENTU1By
b3BlcnR5VGV4dE92ZXJmbG93OgorICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRUcmFuc2Zvcm1T
dHlsZToKKyAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0QmFja2ZhY2VWaXNpYmlsaXR5OgorICAg
IGNhc2UgQ1NTUHJvcGVydHlXZWJraXRQcmludENvbG9yQWRqdXN0OgorICAgIGNhc2UgQ1NTUHJv
cGVydHlXZWJraXRNYXJnaW5CZWZvcmVDb2xsYXBzZToKKyAgICBjYXNlIENTU1Byb3BlcnR5V2Vi
a2l0TWFyZ2luQWZ0ZXJDb2xsYXBzZToKKyAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0TWFyZ2lu
VG9wQ29sbGFwc2U6CisgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdE1hcmdpbkJvdHRvbUNvbGxh
cHNlOgorICAgIGNhc2UgQ1NTUHJvcGVydHlUZXh0TGluZVRocm91Z2hNb2RlOgorICAgIGNhc2Ug
Q1NTUHJvcGVydHlUZXh0T3ZlcmxpbmVNb2RlOgorICAgIGNhc2UgQ1NTUHJvcGVydHlUZXh0VW5k
ZXJsaW5lTW9kZToKKyAgICBjYXNlIENTU1Byb3BlcnR5VGV4dExpbmVUaHJvdWdoU3R5bGU6Cisg
ICAgY2FzZSBDU1NQcm9wZXJ0eVRleHRPdmVybGluZVN0eWxlOgorICAgIGNhc2UgQ1NTUHJvcGVy
dHlUZXh0VW5kZXJsaW5lU3R5bGU6CisgICAgY2FzZSBDU1NQcm9wZXJ0eVRleHRSZW5kZXJpbmc6
CisgICAgY2FzZSBDU1NQcm9wZXJ0eVJlc2l6ZToKKyAgICBjYXNlIENTU1Byb3BlcnR5SW1hZ2VS
ZW5kZXJpbmc6CisgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdFRleHRTaXplQWRqdXN0OgorICAg
IGNhc2UgQ1NTUHJvcGVydHlXZWJraXRSdGxPcmRlcmluZzoKKyAgICBjYXNlIENTU1Byb3BlcnR5
V2Via2l0TmJzcE1vZGU6CisgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdExpbmVCcmVhazoKKyAg
ICBjYXNlIENTU1Byb3BlcnR5V2Via2l0TWF0Y2hOZWFyZXN0TWFpbEJsb2NrcXVvdGVDb2xvcjoK
KyAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0SHlwaGVuczoKKyAgICBjYXNlIENTU1Byb3BlcnR5
V2Via2l0TGluZVNuYXA6CisgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdExpbmVBbGlnbjoKKyAg
ICBjYXNlIENTU1Byb3BlcnR5V2Via2l0Qm9yZGVyRml0OgorICAgIGNhc2UgQ1NTUHJvcGVydHlX
ZWJraXRUZXh0U2VjdXJpdHk6CisgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdEZvbnRTbW9vdGhp
bmc6CisjaWYgRU5BQkxFKE9WRVJGTE9XX1NDUk9MTElORykKKyAgICBjYXNlIENTU1Byb3BlcnR5
V2Via2l0T3ZlcmZsb3dTY3JvbGxpbmc6CisjZW5kaWYKKyAgICBjYXNlIENTU1Byb3BlcnR5V2Vi
a2l0VGV4dENvbWJpbmU6CisgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdFRleHRFbXBoYXNpc1Bv
c2l0aW9uOgorICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRGb250S2VybmluZzoKKyAgICBjYXNl
IENTU1Byb3BlcnR5V2Via2l0V3JhcEZsb3c6CisgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdFdy
YXBUaHJvdWdoOgorICAgIGNhc2UgQ1NTUHJvcGVydHlCb3JkZXJUb3BTdHlsZToKKyAgICBjYXNl
IENTU1Byb3BlcnR5Qm9yZGVyUmlnaHRTdHlsZToKKyAgICBjYXNlIENTU1Byb3BlcnR5Qm9yZGVy
Qm90dG9tU3R5bGU6CisgICAgY2FzZSBDU1NQcm9wZXJ0eUJvcmRlckxlZnRTdHlsZToKKyAgICBj
YXNlIENTU1Byb3BlcnR5V2Via2l0Qm9yZGVyU3RhcnRTdHlsZToKKyAgICBjYXNlIENTU1Byb3Bl
cnR5V2Via2l0Qm9yZGVyRW5kU3R5bGU6CisgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdEJvcmRl
ckJlZm9yZVN0eWxlOgorICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRCb3JkZXJBZnRlclN0eWxl
OgorICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRDb2x1bW5SdWxlU3R5bGU6CisgICAgY2FzZSBD
U1NQcm9wZXJ0eUxpc3RTdHlsZVR5cGU6CisgICAgY2FzZSBDU1NQcm9wZXJ0eURpc3BsYXk6Cisg
ICAgY2FzZSBDU1NQcm9wZXJ0eVRleHRUcmFuc2Zvcm06CisgICAgY2FzZSBDU1NQcm9wZXJ0eU91
dGxpbmVTdHlsZToKKyAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0QXBwZWFyYW5jZToKKyAgICBj
YXNlIENTU1Byb3BlcnR5UG9pbnRlckV2ZW50czoKKyAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0
V3JpdGluZ01vZGU6CisgICAgICAgIHJldHVybiB0cnVlOworICAgIGRlZmF1bHQ6CisgICAgICAg
IHJldHVybiBmYWxzZTsKKyAgICB9Cit9CisKK2NsYXNzIENTU1Byb3BlcnR5UGFyc2VyIHsKK3B1
YmxpYzoKKyAgICBDU1NQcm9wZXJ0eVBhcnNlcigpCisgICAgICAgIDogbV9hY2NlcHRlZEtleXdv
cmRzKDApCisgICAgICAgICwgbV9sZW5ndGgoMCkKKyAgICB7CisgICAgfQorCisgICAgQ1NTUHJv
cGVydHlQYXJzZXIoY29uc3QgaW50KiBhY2NlcHRlZEtleXdvcmRzLCB1bnNpZ25lZCBudW1Qcm9w
ZXJ0aWVzKQorICAgICAgICA6IG1fYWNjZXB0ZWRLZXl3b3JkcyhhY2NlcHRlZEtleXdvcmRzKQor
ICAgICAgICAsIG1fbGVuZ3RoKG51bVByb3BlcnRpZXMpCisgICAgICAgICwgbV9oYXNSYW5nZShm
YWxzZSkKKyAgICAgICAgLCBtX21pbktleXdvcmQoMCkKKyAgICAgICAgLCBtX21heEtleXdvcmQo
MCkKKyAgICB7CisgICAgfQorCisgICAgYm9vbCBoYXNSYW5nZSgpIHsgcmV0dXJuIG1faGFzUmFu
Z2U7IH0KKyAgICB2b2lkIHNldFJhbmdlKGludCBtaW4sIGludCBtYXgpIHsgbV9oYXNSYW5nZSA9
IHRydWU7IG1fbWluS2V5d29yZCA9IG1pbjsgbV9tYXhLZXl3b3JkID0gbWF4OyB9CisgICAgaW50
IG1pbktleXdvcmQoKSB7IHJldHVybiBtX21pbktleXdvcmQ7IH0KKyAgICBpbnQgbWF4S2V5d29y
ZCgpIHsgcmV0dXJuIG1fbWF4S2V5d29yZDsgfQorCisgICAgY29uc3QgaW50KiBhY2NlcHRlZEtl
eXdvcmRzKCkgY29uc3QgeyByZXR1cm4gbV9hY2NlcHRlZEtleXdvcmRzOyB9CisgICAgdW5zaWdu
ZWQgbGVuZ3RoKCkgY29uc3QgeyByZXR1cm4gbV9sZW5ndGg7IH0KKworcHJpdmF0ZToKKyAgICBj
b25zdCBpbnQqIG1fYWNjZXB0ZWRLZXl3b3JkczsKKyAgICB1bnNpZ25lZCBtX2xlbmd0aDsKKyAg
ICBib29sIG1faGFzUmFuZ2U7CisgICAgaW50IG1fbWluS2V5d29yZDsKKyAgICBpbnQgbV9tYXhL
ZXl3b3JkOworfTsKKworI2RlZmluZSBTRVRfUFJPUEVSVFlfUEFSU0VSX01BUF9FTlRSWShtYXAs
IHByb3BJRCwgYXJyYXkpIFwKKyAgICBtYXAuc2V0KHByb3BJRCwgQ1NTUHJvcGVydHlQYXJzZXIo
YXJyYXksIFdURl9BUlJBWV9MRU5HVEgoYXJyYXkpKSkKKwordHlwZWRlZiBIYXNoTWFwPGludCwg
Q1NTUHJvcGVydHlQYXJzZXI+IHByb3BlcnRpZXNNYXA7CitzdGF0aWMgQ1NTUHJvcGVydHlQYXJz
ZXIgcHJvcGVydHlGb3JJRChpbnQgcHJvcGVydHlJZCkKK3sKKyAgICBERUZJTkVfU1RBVElDX0xP
Q0FMKHByb3BlcnRpZXNNYXAsIG1hcCwgKCkpOworICAgIGlmIChtYXAuaXNFbXB0eSgpKSB7Cisg
ICAgICAgIHN0YXRpYyBjb25zdCBpbnQgcG9zaXRpb25LZXl3b3Jkc1tdID0geyBDU1NWYWx1ZVN0
YXRpYywgQ1NTVmFsdWVSZWxhdGl2ZSwgQ1NTVmFsdWVBYnNvbHV0ZSwgQ1NTVmFsdWVGaXhlZCB9
OworICAgICAgICBTRVRfUFJPUEVSVFlfUEFSU0VSX01BUF9FTlRSWShtYXAsIENTU1Byb3BlcnR5
UG9zaXRpb24sIHBvc2l0aW9uS2V5d29yZHMpOworICAgICAgICBzdGF0aWMgY29uc3QgaW50IGVt
cHR5Q2VsbHNLZXl3b3Jkc1tdID0geyBDU1NWYWx1ZVNob3csIENTU1ZhbHVlSGlkZSB9OyAvLyBz
aG93IHwgaGlkZSB8IGluaGVyaXQKKyAgICAgICAgU0VUX1BST1BFUlRZX1BBUlNFUl9NQVBfRU5U
UlkobWFwLCBDU1NQcm9wZXJ0eUVtcHR5Q2VsbHMsIGVtcHR5Q2VsbHNLZXl3b3Jkcyk7CisgICAg
ICAgIHN0YXRpYyBjb25zdCBpbnQgd2hpdGVTcGFjZUtleXdvcmRzW10gPSB7IENTU1ZhbHVlTm9y
bWFsLCBDU1NWYWx1ZVByZSwgQ1NTVmFsdWVQcmVXcmFwLCBDU1NWYWx1ZVByZUxpbmUsIENTU1Zh
bHVlTm93cmFwfTsgLy8gbm9ybWFsIHwgcHJlIHwgbm93cmFwIHwgaW5oZXJpdAorICAgICAgICBT
RVRfUFJPUEVSVFlfUEFSU0VSX01BUF9FTlRSWShtYXAsIENTU1Byb3BlcnR5V2hpdGVTcGFjZSwg
d2hpdGVTcGFjZUtleXdvcmRzKTsKKyAgICAgICAgc3RhdGljIGNvbnN0IGludCBjYXB0aW9uU2lk
ZUtleXdvcmRzW10gPSB7IENTU1ZhbHVlTGVmdCwgQ1NTVmFsdWVSaWdodCwgQ1NTVmFsdWVUb3As
IENTU1ZhbHVlQm90dG9tIH07IC8vIHRvcCB8IGJvdHRvbSB8IGxlZnQgfCByaWdodCB8IGluaGVy
aXQKKyAgICAgICAgU0VUX1BST1BFUlRZX1BBUlNFUl9NQVBfRU5UUlkobWFwLCBDU1NQcm9wZXJ0
eUNhcHRpb25TaWRlLCBjYXB0aW9uU2lkZUtleXdvcmRzKTsKKyAgICAgICAgc3RhdGljIGNvbnN0
IGludCBib3JkZXJDb2xsYXBzZUtleXdvcmRzW10gPSB7IENTU1ZhbHVlQ29sbGFwc2UsIENTU1Zh
bHVlU2VwYXJhdGUgfTsgLy8gY29sbGFwc2UgfCBzZXBhcmF0ZSB8IGluaGVyaXQKKyAgICAgICAg
U0VUX1BST1BFUlRZX1BBUlNFUl9NQVBfRU5UUlkobWFwLCBDU1NQcm9wZXJ0eUJvcmRlckNvbGxh
cHNlLCBib3JkZXJDb2xsYXBzZUtleXdvcmRzKTsKKyAgICAgICAgc3RhdGljIGNvbnN0IGludCB2
aXNpYmlsaXR5S2V5d29yZHNbXSA9IHsgQ1NTVmFsdWVWaXNpYmxlLCBDU1NWYWx1ZUhpZGRlbiwg
Q1NTVmFsdWVDb2xsYXBzZSB9OyAvLyB2aXNpYmxlIHwgaGlkZGVuIHwgY29sbGFwc2UgfCBpbmhl
cml0CisgICAgICAgIFNFVF9QUk9QRVJUWV9QQVJTRVJfTUFQX0VOVFJZKG1hcCwgQ1NTUHJvcGVy
dHlWaXNpYmlsaXR5LCB2aXNpYmlsaXR5S2V5d29yZHMpOworICAgICAgICBzdGF0aWMgY29uc3Qg
aW50IG92ZXJmbG93S2V5d29yZHNbXSA9IHsgQ1NTVmFsdWVWaXNpYmxlLCBDU1NWYWx1ZUhpZGRl
biwgQ1NTVmFsdWVTY3JvbGwsIENTU1ZhbHVlQXV0bywgQ1NTVmFsdWVPdmVybGF5LCBDU1NWYWx1
ZVdlYmtpdE1hcnF1ZWV9OyAvLyB2aXNpYmxlIHwgaGlkZGVuIHwgc2Nyb2xsIHwgYXV0byB8IG1h
cnF1ZWUgfCBvdmVybGF5IHwgaW5oZXJpdAorICAgICAgICBTRVRfUFJPUEVSVFlfUEFSU0VSX01B
UF9FTlRSWShtYXAsIENTU1Byb3BlcnR5T3ZlcmZsb3dYLCBvdmVyZmxvd0tleXdvcmRzKTsKKyAg
ICAgICAgU0VUX1BST1BFUlRZX1BBUlNFUl9NQVBfRU5UUlkobWFwLCBDU1NQcm9wZXJ0eU92ZXJm
bG93WSwgb3ZlcmZsb3dLZXl3b3Jkcyk7CisgICAgICAgIHN0YXRpYyBjb25zdCBpbnQgbGlzdFN0
eWxlUG9zaXRpb25LZXl3b3Jkc1tdID0geyBDU1NWYWx1ZUluc2lkZSwgQ1NTVmFsdWVPdXRzaWRl
IH07IC8vIGluc2lkZSB8IG91dHNpZGUgfCBpbmhlcml0CisgICAgICAgIFNFVF9QUk9QRVJUWV9Q
QVJTRVJfTUFQX0VOVFJZKG1hcCwgQ1NTUHJvcGVydHlMaXN0U3R5bGVQb3NpdGlvbiwgbGlzdFN0
eWxlUG9zaXRpb25LZXl3b3Jkcyk7CisgICAgICAgIHN0YXRpYyBjb25zdCBpbnQgZGlyZWN0aW9u
S2V5d29yZHNbXSA9IHsgQ1NTVmFsdWVMdHIsIENTU1ZhbHVlUnRsIH07IC8vIGx0ciB8IHJ0bCB8
IGluaGVyaXQKKyAgICAgICAgU0VUX1BST1BFUlRZX1BBUlNFUl9NQVBfRU5UUlkobWFwLCBDU1NQ
cm9wZXJ0eURpcmVjdGlvbiwgZGlyZWN0aW9uS2V5d29yZHMpOworICAgICAgICBzdGF0aWMgY29u
c3QgaW50IGZsb2F0S2V5d29yZHNbXSA9IHsgQ1NTVmFsdWVMZWZ0LCBDU1NWYWx1ZVJpZ2h0LCBD
U1NWYWx1ZU5vbmUsIENTU1ZhbHVlQ2VudGVyLCBDU1NWYWx1ZVdlYmtpdFBvc2l0aW9uZWQgfTsg
Ly8gbGVmdCB8IHJpZ2h0IHwgbm9uZSB8IHBvc2l0aW9uZWQgfCBjZW50ZXIgKGZvciBidWdneSBD
U1MsIG1hcHMgdG8gbm9uZSkKKyAgICAgICAgU0VUX1BST1BFUlRZX1BBUlNFUl9NQVBfRU5UUlko
bWFwLCBDU1NQcm9wZXJ0eUZsb2F0LCBmbG9hdEtleXdvcmRzKTsKKyAgICAgICAgc3RhdGljIGNv
bnN0IGludCBjbGVhcktleXdvcmRzW10gPSB7IENTU1ZhbHVlTm9uZSwgQ1NTVmFsdWVMZWZ0LCBD
U1NWYWx1ZVJpZ2h0LCBDU1NWYWx1ZUJvdGggfTsgLy8gbm9uZSB8IGxlZnQgfCByaWdodCB8IGJv
dGggfCBpbmhlcml0CisgICAgICAgIFNFVF9QUk9QRVJUWV9QQVJTRVJfTUFQX0VOVFJZKG1hcCwg
Q1NTUHJvcGVydHlDbGVhciwgY2xlYXJLZXl3b3Jkcyk7CisgICAgICAgIHN0YXRpYyBjb25zdCBp
bnQgd29yZEJyZWFrS2V5d29yZHNbXSA9IHsgQ1NTVmFsdWVOb3JtYWwsIENTU1ZhbHVlQnJlYWtB
bGwsIENTU1ZhbHVlQnJlYWtXb3JkIH07IC8vIG5vcm1hbCB8IGJyZWFrLWFsbCB8IGJyZWFrLXdv
cmQgKHRoaXMgaXMgYSBjdXN0b20gZXh0ZW5zaW9uKQorICAgICAgICBTRVRfUFJPUEVSVFlfUEFS
U0VSX01BUF9FTlRSWShtYXAsIENTU1Byb3BlcnR5V29yZEJyZWFrLCB3b3JkQnJlYWtLZXl3b3Jk
cyk7CisgICAgICAgIHN0YXRpYyBjb25zdCBpbnQgd29yZFdyYXBLZXl3b3Jkc1tdID0geyBDU1NW
YWx1ZU5vcm1hbCwgQ1NTVmFsdWVCcmVha1dvcmQgfTsgLy8gbm9ybWFsIHwgYnJlYWstd29yZAor
ICAgICAgICBTRVRfUFJPUEVSVFlfUEFSU0VSX01BUF9FTlRSWShtYXAsIENTU1Byb3BlcnR5V29y
ZFdyYXAsIHdvcmRXcmFwS2V5d29yZHMpOworICAgICAgICBzdGF0aWMgY29uc3QgaW50IHNwZWFr
S2V5d29yZHNbXSA9IHsgQ1NTVmFsdWVOb25lLCBDU1NWYWx1ZU5vcm1hbCwgQ1NTVmFsdWVTcGVs
bE91dCwgQ1NTVmFsdWVEaWdpdHMsIENTU1ZhbHVlTGl0ZXJhbFB1bmN0dWF0aW9uLCBDU1NWYWx1
ZU5vUHVuY3R1YXRpb24gfTsgLy8gbm9uZSB8IG5vcm1hbCB8IHNwZWxsLW91dCB8IGRpZ2l0cyB8
IGxpdGVyYWwtcHVuY3R1YXRpb24gfCBuby1wdW5jdHVhdGlvbiB8IGluaGVyaXQKKyAgICAgICAg
U0VUX1BST1BFUlRZX1BBUlNFUl9NQVBfRU5UUlkobWFwLCBDU1NQcm9wZXJ0eVNwZWFrLCBzcGVh
a0tleXdvcmRzKTsKKyAgICAgICAgc3RhdGljIGNvbnN0IGludCBmb250U3R5bGVLZXl3b3Jkc1td
ID0geyBDU1NWYWx1ZU5vcm1hbCwgQ1NTVmFsdWVJdGFsaWMsIENTU1ZhbHVlT2JsaXF1ZSB9OyAv
LyBub3JtYWwgfCBpdGFsaWMgfCBvYmxpcXVlIHwgaW5oZXJpdAorICAgICAgICBTRVRfUFJPUEVS
VFlfUEFSU0VSX01BUF9FTlRSWShtYXAsIENTU1Byb3BlcnR5Rm9udFN0eWxlLCBmb250U3R5bGVL
ZXl3b3Jkcyk7CisgICAgICAgIHN0YXRpYyBjb25zdCBpbnQgdGFibGVMYXlvdXRLZXl3b3Jkc1td
ID0geyBDU1NWYWx1ZUF1dG8sIENTU1ZhbHVlRml4ZWQgfTsgLy8gYXV0byB8IGZpeGVkIHwgaW5o
ZXJpdAorICAgICAgICBTRVRfUFJPUEVSVFlfUEFSU0VSX01BUF9FTlRSWShtYXAsIENTU1Byb3Bl
cnR5VGFibGVMYXlvdXQsIHRhYmxlTGF5b3V0S2V5d29yZHMpOworICAgICAgICBzdGF0aWMgY29u
c3QgaW50IGJveEFsaWduS2V5d29yZHNbXSA9IHsgQ1NTVmFsdWVTdHJldGNoLCBDU1NWYWx1ZVN0
YXJ0LCBDU1NWYWx1ZUVuZCwgQ1NTVmFsdWVDZW50ZXIsIENTU1ZhbHVlQmFzZWxpbmUgfTsKKyAg
ICAgICAgU0VUX1BST1BFUlRZX1BBUlNFUl9NQVBfRU5UUlkobWFwLCBDU1NQcm9wZXJ0eVdlYmtp
dEJveEFsaWduLCBib3hBbGlnbktleXdvcmRzKTsKKyAgICAgICAgc3RhdGljIGNvbnN0IGludCBi
b3hEaXJlY3Rpb25LZXl3b3Jkc1tdID0geyBDU1NWYWx1ZU5vcm1hbCwgQ1NTVmFsdWVSZXZlcnNl
IH07CisgICAgICAgIFNFVF9QUk9QRVJUWV9QQVJTRVJfTUFQX0VOVFJZKG1hcCwgQ1NTUHJvcGVy
dHlXZWJraXRCb3hEaXJlY3Rpb24sIGJveERpcmVjdGlvbktleXdvcmRzKTsKKyAgICAgICAgc3Rh
dGljIGNvbnN0IGludCBib3hMaW5lc0tleXdvcmRzW10gPSB7IENTU1ZhbHVlU2luZ2xlLCBDU1NW
YWx1ZU11bHRpcGxlIH07CisgICAgICAgIFNFVF9QUk9QRVJUWV9QQVJTRVJfTUFQX0VOVFJZKG1h
cCwgQ1NTUHJvcGVydHlXZWJraXRCb3hMaW5lcywgYm94TGluZXNLZXl3b3Jkcyk7CisgICAgICAg
IHN0YXRpYyBjb25zdCBpbnQgYm94T3JpZW50S2V5d29yZHNbXSA9IHsgQ1NTVmFsdWVIb3Jpem9u
dGFsLCBDU1NWYWx1ZVZlcnRpY2FsLCBDU1NWYWx1ZUlubGluZUF4aXMsIENTU1ZhbHVlQmxvY2tB
eGlzIH07CisgICAgICAgIFNFVF9QUk9QRVJUWV9QQVJTRVJfTUFQX0VOVFJZKG1hcCwgQ1NTUHJv
cGVydHlXZWJraXRCb3hPcmllbnQsIGJveE9yaWVudEtleXdvcmRzKTsKKyAgICAgICAgc3RhdGlj
IGNvbnN0IGludCBib3hQYWNrS2V5d29yZHNbXSA9IHsgQ1NTVmFsdWVTdGFydCwgQ1NTVmFsdWVF
bmQsIENTU1ZhbHVlQ2VudGVyLCBDU1NWYWx1ZUp1c3RpZnkgfTsKKyAgICAgICAgU0VUX1BST1BF
UlRZX1BBUlNFUl9NQVBfRU5UUlkobWFwLCBDU1NQcm9wZXJ0eVdlYmtpdEJveFBhY2ssIGJveFBh
Y2tLZXl3b3Jkcyk7CisgICAgICAgIHN0YXRpYyBjb25zdCBpbnQgYm94U2l6aW5nS2V5d29yZHNb
XSA9IHsgQ1NTVmFsdWVCb3JkZXJCb3gsIENTU1ZhbHVlQ29udGVudEJveCB9OworICAgICAgICBT
RVRfUFJPUEVSVFlfUEFSU0VSX01BUF9FTlRSWShtYXAsIENTU1Byb3BlcnR5Qm94U2l6aW5nLCBi
b3hTaXppbmdLZXl3b3Jkcyk7CisgICAgICAgIHN0YXRpYyBjb25zdCBpbnQgY29sb3JDb3JyZWN0
aW9uS2V5d29yZHNbXSA9IHsgQ1NTVmFsdWVTcmdiLCBDU1NWYWx1ZURlZmF1bHQgfTsKKyAgICAg
ICAgU0VUX1BST1BFUlRZX1BBUlNFUl9NQVBfRU5UUlkobWFwLCBDU1NQcm9wZXJ0eVdlYmtpdENv
bG9yQ29ycmVjdGlvbiwgY29sb3JDb3JyZWN0aW9uS2V5d29yZHMpOworICAgICAgICBzdGF0aWMg
Y29uc3QgaW50IGZsZXhQYWNrS2V5d29yZHNbXSA9IHsgQ1NTVmFsdWVTdGFydCwgQ1NTVmFsdWVF
bmQsIENTU1ZhbHVlQ2VudGVyLCBDU1NWYWx1ZUp1c3RpZnksIENTU1ZhbHVlRGlzdHJpYnV0ZSB9
OworICAgICAgICBTRVRfUFJPUEVSVFlfUEFSU0VSX01BUF9FTlRSWShtYXAsIENTU1Byb3BlcnR5
V2Via2l0RmxleFBhY2ssIGZsZXhQYWNrS2V5d29yZHMpOworICAgICAgICBzdGF0aWMgY29uc3Qg
aW50IGZsZXhBbGlnbktleXdvcmRzW10gPSB7IENTU1ZhbHVlU3RhcnQsIENTU1ZhbHVlRW5kLCBD
U1NWYWx1ZUNlbnRlciwgQ1NTVmFsdWVCYXNlbGluZSwgQ1NTVmFsdWVTdHJldGNoIH07CisgICAg
ICAgIFNFVF9QUk9QRVJUWV9QQVJTRVJfTUFQX0VOVFJZKG1hcCwgQ1NTUHJvcGVydHlXZWJraXRG
bGV4QWxpZ24sIGZsZXhBbGlnbktleXdvcmRzKTsKKyAgICAgICAgc3RhdGljIGNvbnN0IGludCBm
bGV4SXRlbUFsaWduS2V5d29yZHNbXSA9IHsgQ1NTVmFsdWVBdXRvLCBDU1NWYWx1ZVN0YXJ0LCBD
U1NWYWx1ZUVuZCwgQ1NTVmFsdWVDZW50ZXIsIENTU1ZhbHVlU3RyZXRjaCwgQ1NTVmFsdWVCYXNl
bGluZSwgQ1NTVmFsdWVTdHJldGNoIH07CisgICAgICAgIFNFVF9QUk9QRVJUWV9QQVJTRVJfTUFQ
X0VOVFJZKG1hcCwgQ1NTUHJvcGVydHlXZWJraXRGbGV4SXRlbUFsaWduLCBmbGV4SXRlbUFsaWdu
S2V5d29yZHMpOworICAgICAgICBzdGF0aWMgY29uc3QgaW50IGZsZXhEaXJlY3Rpb25LZXl3b3Jk
c1tdID0geyBDU1NWYWx1ZVJvdywgQ1NTVmFsdWVSb3dSZXZlcnNlLCBDU1NWYWx1ZUNvbHVtbiwg
Q1NTVmFsdWVDb2x1bW5SZXZlcnNlIH07CisgICAgICAgIFNFVF9QUk9QRVJUWV9QQVJTRVJfTUFQ
X0VOVFJZKG1hcCwgQ1NTUHJvcGVydHlXZWJraXRGbGV4RGlyZWN0aW9uLCBmbGV4RGlyZWN0aW9u
S2V5d29yZHMpOworICAgICAgICBzdGF0aWMgY29uc3QgaW50IGZsZXhXcmFwS2V5d29yZHNbXSA9
IHsgQ1NTVmFsdWVOb25lLCBDU1NWYWx1ZVdyYXAsIENTU1ZhbHVlV3JhcFJldmVyc2UgfTsKKyAg
ICAgICAgU0VUX1BST1BFUlRZX1BBUlNFUl9NQVBfRU5UUlkobWFwLCBDU1NQcm9wZXJ0eVdlYmtp
dEZsZXhXcmFwLCBmbGV4V3JhcEtleXdvcmRzKTsKKyAgICAgICAgc3RhdGljIGNvbnN0IGludCBt
YXJxdWVlRGlyZWN0aW9uS2V5d29yZHNbXSA9IHsgQ1NTVmFsdWVGb3J3YXJkcywgQ1NTVmFsdWVC
YWNrd2FyZHMsIENTU1ZhbHVlQWhlYWQsIENTU1ZhbHVlUmV2ZXJzZSwgQ1NTVmFsdWVMZWZ0LCBD
U1NWYWx1ZVJpZ2h0LCBDU1NWYWx1ZURvd24sIENTU1ZhbHVlVXAsIENTU1ZhbHVlQXV0byB9Owor
ICAgICAgICBTRVRfUFJPUEVSVFlfUEFSU0VSX01BUF9FTlRSWShtYXAsIENTU1Byb3BlcnR5V2Vi
a2l0TWFycXVlZURpcmVjdGlvbiwgbWFycXVlZURpcmVjdGlvbktleXdvcmRzKTsKKyAgICAgICAg
c3RhdGljIGNvbnN0IGludCBtYXJxdWVlU3R5bGVLZXl3b3Jkc1tdID0geyBDU1NWYWx1ZU5vbmUs
IENTU1ZhbHVlU2xpZGUsIENTU1ZhbHVlU2Nyb2xsLCBDU1NWYWx1ZUFsdGVybmF0ZSB9OworICAg
ICAgICBTRVRfUFJPUEVSVFlfUEFSU0VSX01BUF9FTlRSWShtYXAsIENTU1Byb3BlcnR5V2Via2l0
TWFycXVlZVN0eWxlLCBtYXJxdWVlU3R5bGVLZXl3b3Jkcyk7CisgICAgICAgIHN0YXRpYyBjb25z
dCBpbnQgdXNlckRyYWdLZXl3b3Jkc1tdID0geyBDU1NWYWx1ZUF1dG8sIENTU1ZhbHVlTm9uZSwg
Q1NTVmFsdWVFbGVtZW50IH07IC8vIGF1dG8gfCBub25lIHwgZWxlbWVudAorICAgICAgICBTRVRf
UFJPUEVSVFlfUEFSU0VSX01BUF9FTlRSWShtYXAsIENTU1Byb3BlcnR5V2Via2l0VXNlckRyYWcs
IHVzZXJEcmFnS2V5d29yZHMpOworICAgICAgICBzdGF0aWMgY29uc3QgaW50IHVzZXJNb2RpZnlL
ZXl3b3Jkc1tdID0geyBDU1NWYWx1ZVJlYWRPbmx5LCBDU1NWYWx1ZVJlYWRXcml0ZSwgQ1NTVmFs
dWVSZWFkV3JpdGVQbGFpbnRleHRPbmx5IH07IC8vIHJlYWQtb25seSB8IHJlYWQtd3JpdGUKKyAg
ICAgICAgU0VUX1BST1BFUlRZX1BBUlNFUl9NQVBfRU5UUlkobWFwLCBDU1NQcm9wZXJ0eVdlYmtp
dFVzZXJNb2RpZnksIHVzZXJNb2RpZnlLZXl3b3Jkcyk7CisgICAgICAgIHN0YXRpYyBjb25zdCBp
bnQgdXNlclNlbGVjdEtleXdvcmRzW10gPSB7IENTU1ZhbHVlQXV0bywgQ1NTVmFsdWVOb25lLCBD
U1NWYWx1ZVRleHQgfTsgLy8gYXV0byB8IG5vbmUgfCB0ZXh0CisgICAgICAgIFNFVF9QUk9QRVJU
WV9QQVJTRVJfTUFQX0VOVFJZKG1hcCwgQ1NTUHJvcGVydHlXZWJraXRVc2VyU2VsZWN0LCB1c2Vy
U2VsZWN0S2V5d29yZHMpOworICAgICAgICBzdGF0aWMgY29uc3QgaW50IHRleHRPdmVyZmxvd0tl
eXdvcmRzW10gPSB7IENTU1ZhbHVlQ2xpcCwgQ1NTVmFsdWVFbGxpcHNpcyB9OyAvLyBjbGlwIHwg
ZWxsaXBzaXMKKyAgICAgICAgU0VUX1BST1BFUlRZX1BBUlNFUl9NQVBfRU5UUlkobWFwLCBDU1NQ
cm9wZXJ0eVRleHRPdmVyZmxvdywgdGV4dE92ZXJmbG93S2V5d29yZHMpOworICAgICAgICBzdGF0
aWMgY29uc3QgaW50IHRyYW5zZm9ybVN0eWxlS2V5d29yZHNbXSA9IHsgQ1NTVmFsdWVGbGF0LCBD
U1NWYWx1ZVByZXNlcnZlM2QgfTsKKyAgICAgICAgU0VUX1BST1BFUlRZX1BBUlNFUl9NQVBfRU5U
UlkobWFwLCBDU1NQcm9wZXJ0eVdlYmtpdFRyYW5zZm9ybVN0eWxlLCB0cmFuc2Zvcm1TdHlsZUtl
eXdvcmRzKTsKKyAgICAgICAgc3RhdGljIGNvbnN0IGludCBiYWNrZmFjZVZpc2liaWxpdHlLZXl3
b3Jkc1tdID0geyBDU1NWYWx1ZVZpc2libGUsIENTU1ZhbHVlSGlkZGVuIH07CisgICAgICAgIFNF
VF9QUk9QRVJUWV9QQVJTRVJfTUFQX0VOVFJZKG1hcCwgQ1NTUHJvcGVydHlXZWJraXRCYWNrZmFj
ZVZpc2liaWxpdHksIGJhY2tmYWNlVmlzaWJpbGl0eUtleXdvcmRzKTsKKyAgICAgICAgc3RhdGlj
IGNvbnN0IGludCBwcmludENvbG9yQWRqdXN0S2V5d29yZHNbXSA9IHsgQ1NTVmFsdWVFeGFjdCwg
Q1NTVmFsdWVFY29ub215IH07CisgICAgICAgIFNFVF9QUk9QRVJUWV9QQVJTRVJfTUFQX0VOVFJZ
KG1hcCwgQ1NTUHJvcGVydHlXZWJraXRQcmludENvbG9yQWRqdXN0LCBwcmludENvbG9yQWRqdXN0
S2V5d29yZHMpOworICAgICAgICBzdGF0aWMgY29uc3QgaW50IG1hcmdpbkNvbGxhcHNlS2V5d29y
ZHNbXSA9IHsgQ1NTVmFsdWVDb2xsYXBzZSwgQ1NTVmFsdWVTZXBhcmF0ZSwgQ1NTVmFsdWVEaXNj
YXJkIH07CisgICAgICAgIFNFVF9QUk9QRVJUWV9QQVJTRVJfTUFQX0VOVFJZKG1hcCwgQ1NTUHJv
cGVydHlXZWJraXRNYXJnaW5CZWZvcmVDb2xsYXBzZSwgbWFyZ2luQ29sbGFwc2VLZXl3b3Jkcyk7
CisgICAgICAgIFNFVF9QUk9QRVJUWV9QQVJTRVJfTUFQX0VOVFJZKG1hcCwgQ1NTUHJvcGVydHlX
ZWJraXRNYXJnaW5BZnRlckNvbGxhcHNlLCBtYXJnaW5Db2xsYXBzZUtleXdvcmRzKTsKKyAgICAg
ICAgU0VUX1BST1BFUlRZX1BBUlNFUl9NQVBfRU5UUlkobWFwLCBDU1NQcm9wZXJ0eVdlYmtpdE1h
cmdpblRvcENvbGxhcHNlLCBtYXJnaW5Db2xsYXBzZUtleXdvcmRzKTsKKyAgICAgICAgU0VUX1BS
T1BFUlRZX1BBUlNFUl9NQVBfRU5UUlkobWFwLCBDU1NQcm9wZXJ0eVdlYmtpdE1hcmdpbkJvdHRv
bUNvbGxhcHNlLCBtYXJnaW5Db2xsYXBzZUtleXdvcmRzKTsKKyAgICAgICAgc3RhdGljIGNvbnN0
IGludCB0ZXh0TW9kZUtleXdvcmRzW10gPSB7IENTU1ZhbHVlQ29udGludW91cywgQ1NTVmFsdWVT
a2lwV2hpdGVTcGFjZSB9OworICAgICAgICBTRVRfUFJPUEVSVFlfUEFSU0VSX01BUF9FTlRSWSht
YXAsIENTU1Byb3BlcnR5VGV4dExpbmVUaHJvdWdoTW9kZSwgdGV4dE1vZGVLZXl3b3Jkcyk7Cisg
ICAgICAgIFNFVF9QUk9QRVJUWV9QQVJTRVJfTUFQX0VOVFJZKG1hcCwgQ1NTUHJvcGVydHlUZXh0
T3ZlcmxpbmVNb2RlLCB0ZXh0TW9kZUtleXdvcmRzKTsKKyAgICAgICAgU0VUX1BST1BFUlRZX1BB
UlNFUl9NQVBfRU5UUlkobWFwLCBDU1NQcm9wZXJ0eVRleHRVbmRlcmxpbmVNb2RlLCB0ZXh0TW9k
ZUtleXdvcmRzKTsKKyAgICAgICAgc3RhdGljIGNvbnN0IGludCB0ZXh0U3R5bGVLZXl3b3Jkc1td
ID0geyBDU1NWYWx1ZU5vbmUsIENTU1ZhbHVlU29saWQsIENTU1ZhbHVlRG91YmxlLCBDU1NWYWx1
ZURhc2hlZCwgQ1NTVmFsdWVEb3REYXNoLCBDU1NWYWx1ZURvdERvdERhc2gsIENTU1ZhbHVlV2F2
ZSB9OworICAgICAgICBTRVRfUFJPUEVSVFlfUEFSU0VSX01BUF9FTlRSWShtYXAsIENTU1Byb3Bl
cnR5VGV4dExpbmVUaHJvdWdoU3R5bGUsIHRleHRTdHlsZUtleXdvcmRzKTsKKyAgICAgICAgU0VU
X1BST1BFUlRZX1BBUlNFUl9NQVBfRU5UUlkobWFwLCBDU1NQcm9wZXJ0eVRleHRPdmVybGluZVN0
eWxlLCB0ZXh0U3R5bGVLZXl3b3Jkcyk7CisgICAgICAgIFNFVF9QUk9QRVJUWV9QQVJTRVJfTUFQ
X0VOVFJZKG1hcCwgQ1NTUHJvcGVydHlUZXh0VW5kZXJsaW5lU3R5bGUsIHRleHRTdHlsZUtleXdv
cmRzKTsKKyAgICAgICAgc3RhdGljIGNvbnN0IGludCB0ZXh0UmVuZGVyaW5nS2V5d29yZHNbXSA9
IHsgQ1NTVmFsdWVBdXRvLCBDU1NWYWx1ZU9wdGltaXplc3BlZWQsIENTU1ZhbHVlT3B0aW1pemVs
ZWdpYmlsaXR5LCBDU1NWYWx1ZUdlb21ldHJpY3ByZWNpc2lvbiB9OyAvLyBhdXRvIHwgb3B0aW1p
emVTcGVlZCB8IG9wdGltaXplTGVnaWJpbGl0eSB8IGdlb21ldHJpY1ByZWNpc2lvbgorICAgICAg
ICBTRVRfUFJPUEVSVFlfUEFSU0VSX01BUF9FTlRSWShtYXAsIENTU1Byb3BlcnR5VGV4dFJlbmRl
cmluZywgdGV4dFJlbmRlcmluZ0tleXdvcmRzKTsKKyAgICAgICAgc3RhdGljIGNvbnN0IGludCBy
ZXNpemVLZXl3b3Jkc1tdID0geyBDU1NWYWx1ZU5vbmUsIENTU1ZhbHVlQm90aCwgQ1NTVmFsdWVI
b3Jpem9udGFsLCBDU1NWYWx1ZVZlcnRpY2FsLCBDU1NWYWx1ZUF1dG8gfTsgLy8gbm9uZSB8IGJv
dGggfCBob3Jpem9udGFsIHwgdmVydGljYWwgfCBhdXRvCisgICAgICAgIFNFVF9QUk9QRVJUWV9Q
QVJTRVJfTUFQX0VOVFJZKG1hcCwgQ1NTUHJvcGVydHlSZXNpemUsIHJlc2l6ZUtleXdvcmRzKTsK
KyAgICAgICAgc3RhdGljIGNvbnN0IGludCBpbWFnZVJlbmRlcmluZ0tleXdvcmRzW10gPSB7IENT
U1ZhbHVlQXV0bywgQ1NTVmFsdWVXZWJraXRPcHRpbWl6ZUNvbnRyYXN0IH07IC8vIGF1dG8gfCBv
cHRpbWl6ZUNvbnRyYXN0CisgICAgICAgIFNFVF9QUk9QRVJUWV9QQVJTRVJfTUFQX0VOVFJZKG1h
cCwgQ1NTUHJvcGVydHlJbWFnZVJlbmRlcmluZywgaW1hZ2VSZW5kZXJpbmdLZXl3b3Jkcyk7Cisg
ICAgICAgIHN0YXRpYyBjb25zdCBpbnQgdGV4dFNpemVBZGp1c3RLZXl3b3Jkc1tdID0geyBDU1NW
YWx1ZUF1dG8sIENTU1ZhbHVlTm9uZSB9OworICAgICAgICBTRVRfUFJPUEVSVFlfUEFSU0VSX01B
UF9FTlRSWShtYXAsIENTU1Byb3BlcnR5V2Via2l0VGV4dFNpemVBZGp1c3QsIHRleHRTaXplQWRq
dXN0S2V5d29yZHMpOworICAgICAgICBzdGF0aWMgY29uc3QgaW50IHJ0bE9yZGVyaW5nS2V5d29y
ZHNbXSA9IHsgQ1NTVmFsdWVMb2dpY2FsLCBDU1NWYWx1ZVZpc3VhbCB9OworICAgICAgICBTRVRf
UFJPUEVSVFlfUEFSU0VSX01BUF9FTlRSWShtYXAsIENTU1Byb3BlcnR5V2Via2l0UnRsT3JkZXJp
bmcsIHJ0bE9yZGVyaW5nS2V5d29yZHMpOworICAgICAgICBzdGF0aWMgY29uc3QgaW50IG5ic3BN
b2RlS2V5d29yZHNbXSA9IHsgQ1NTVmFsdWVOb3JtYWwsIENTU1ZhbHVlU3BhY2UgfTsgLy8gbm9y
bWFsIHwgc3BhY2UKKyAgICAgICAgU0VUX1BST1BFUlRZX1BBUlNFUl9NQVBfRU5UUlkobWFwLCBD
U1NQcm9wZXJ0eVdlYmtpdE5ic3BNb2RlLCBuYnNwTW9kZUtleXdvcmRzKTsKKyAgICAgICAgc3Rh
dGljIGNvbnN0IGludCBsaW5lQnJlYWtLZXl3b3Jkc1tdID0geyBDU1NWYWx1ZU5vcm1hbCwgQ1NT
VmFsdWVBZnRlcldoaXRlU3BhY2UgfTsgLy8gbm9ybWFsIHwgYWZ0ZXItd2hpdGUtc3BhY2UKKyAg
ICAgICAgU0VUX1BST1BFUlRZX1BBUlNFUl9NQVBfRU5UUlkobWFwLCBDU1NQcm9wZXJ0eVdlYmtp
dExpbmVCcmVhaywgbGluZUJyZWFrS2V5d29yZHMpOworICAgICAgICBzdGF0aWMgY29uc3QgaW50
IG1hdGNoTmVhcmVzdE1haWxCbG9ja3F1b3RlQ29sb3JLZXl3b3Jkc1tdID0geyBDU1NWYWx1ZU5v
cm1hbCwgQ1NTVmFsdWVNYXRjaCB9OyAvLyBub3JtYWwgfCBtYXRjaAorICAgICAgICBTRVRfUFJP
UEVSVFlfUEFSU0VSX01BUF9FTlRSWShtYXAsIENTU1Byb3BlcnR5V2Via2l0TWF0Y2hOZWFyZXN0
TWFpbEJsb2NrcXVvdGVDb2xvciwgbWF0Y2hOZWFyZXN0TWFpbEJsb2NrcXVvdGVDb2xvcktleXdv
cmRzKTsKKyAgICAgICAgc3RhdGljIGNvbnN0IGludCBoeXBoZW5zS2V5d29yZHNbXSA9IHsgQ1NT
VmFsdWVOb25lLCBDU1NWYWx1ZU1hbnVhbCwgQ1NTVmFsdWVBdXRvIH07CisgICAgICAgIFNFVF9Q
Uk9QRVJUWV9QQVJTRVJfTUFQX0VOVFJZKG1hcCwgQ1NTUHJvcGVydHlXZWJraXRIeXBoZW5zLCBo
eXBoZW5zS2V5d29yZHMpOworICAgICAgICBzdGF0aWMgY29uc3QgaW50IGxpbmVTbmFwS2V5d29y
ZHNbXSA9IHsgQ1NTVmFsdWVOb25lLCBDU1NWYWx1ZUJhc2VsaW5lLCBDU1NWYWx1ZUNvbnRhaW4g
fTsKKyAgICAgICAgU0VUX1BST1BFUlRZX1BBUlNFUl9NQVBfRU5UUlkobWFwLCBDU1NQcm9wZXJ0
eVdlYmtpdExpbmVTbmFwLCBsaW5lU25hcEtleXdvcmRzKTsKKyAgICAgICAgc3RhdGljIGNvbnN0
IGludCBsaW5lQWxpZ25LZXl3b3Jkc1tdID0geyBDU1NWYWx1ZU5vbmUsIENTU1ZhbHVlRWRnZXMg
fTsKKyAgICAgICAgU0VUX1BST1BFUlRZX1BBUlNFUl9NQVBfRU5UUlkobWFwLCBDU1NQcm9wZXJ0
eVdlYmtpdExpbmVBbGlnbiwgbGluZUFsaWduS2V5d29yZHMpOworICAgICAgICBzdGF0aWMgY29u
c3QgaW50IGJvcmRlckZpdEtleXdvcmRzW10gPSB7IENTU1ZhbHVlQm9yZGVyLCBDU1NWYWx1ZUxp
bmVzIH07CisgICAgICAgIFNFVF9QUk9QRVJUWV9QQVJTRVJfTUFQX0VOVFJZKG1hcCwgQ1NTUHJv
cGVydHlXZWJraXRCb3JkZXJGaXQsIGJvcmRlckZpdEtleXdvcmRzKTsKKyAgICAgICAgc3RhdGlj
IGNvbnN0IGludCB0ZXh0U2VjdXJpdHlLZXl3b3Jkc1tdID0geyBDU1NWYWx1ZURpc2MsIENTU1Zh
bHVlQ2lyY2xlLCBDU1NWYWx1ZVNxdWFyZSwgQ1NTVmFsdWVOb25lIH07IC8vIGRpc2MgfCBjaXJj
bGUgfCBzcXVhcmUgfCBub25lIHwgaW5oZXJpdAorICAgICAgICBTRVRfUFJPUEVSVFlfUEFSU0VS
X01BUF9FTlRSWShtYXAsIENTU1Byb3BlcnR5V2Via2l0VGV4dFNlY3VyaXR5LCB0ZXh0U2VjdXJp
dHlLZXl3b3Jkcyk7CisgICAgICAgIHN0YXRpYyBjb25zdCBpbnQgZm9udFNtb290aGluZ0tleXdv
cmRzW10gPSB7IENTU1ZhbHVlQXV0bywgQ1NTVmFsdWVOb25lLCBDU1NWYWx1ZUFudGlhbGlhc2Vk
LCBDU1NWYWx1ZVN1YnBpeGVsQW50aWFsaWFzZWQgfTsKKyAgICAgICAgU0VUX1BST1BFUlRZX1BB
UlNFUl9NQVBfRU5UUlkobWFwLCBDU1NQcm9wZXJ0eVdlYmtpdEZvbnRTbW9vdGhpbmcsIGZvbnRT
bW9vdGhpbmdLZXl3b3Jkcyk7CisjaWYgRU5BQkxFKE9WRVJGTE9XX1NDUk9MTElORykKKyAgICAg
ICAgc3RhdGljIGNvbnN0IGludCBvdmVyZmxvd1NyY29sbGluZ0tleXdvcmRzW10gPSB7IENTU1Zh
bHVlQXV0bywgQ1NTVmFsdWVUb3VjaCB9OworICAgICAgICBTRVRfUFJPUEVSVFlfUEFSU0VSX01B
UF9FTlRSWShtYXAsIENTU1Byb3BlcnR5V2Via2l0T3ZlcmZsb3dTY3JvbGxpbmcsIG92ZXJmbG93
U3Jjb2xsaW5nS2V5d29yZHMpOworI2VuZGlmCisgICAgICAgIHN0YXRpYyBjb25zdCBpbnQgdGV4
dENvbWJpbmVLZXl3b3Jkc1tdID0geyBDU1NWYWx1ZU5vbmUsIENTU1ZhbHVlSG9yaXpvbnRhbCB9
OworICAgICAgICBTRVRfUFJPUEVSVFlfUEFSU0VSX01BUF9FTlRSWShtYXAsIENTU1Byb3BlcnR5
V2Via2l0VGV4dENvbWJpbmUsIHRleHRDb21iaW5lS2V5d29yZHMpOworICAgICAgICBzdGF0aWMg
Y29uc3QgaW50IGVtcGhhc2lzUG9zaXRpb25LZXl3b3Jkc1tdID0geyBDU1NWYWx1ZU92ZXIsIENT
U1ZhbHVlVW5kZXIgfTsKKyAgICAgICAgU0VUX1BST1BFUlRZX1BBUlNFUl9NQVBfRU5UUlkobWFw
LCBDU1NQcm9wZXJ0eVdlYmtpdFRleHRFbXBoYXNpc1Bvc2l0aW9uLCBlbXBoYXNpc1Bvc2l0aW9u
S2V5d29yZHMpOworICAgICAgICBzdGF0aWMgY29uc3QgaW50IGZvbnRLZXJuaW5nS2V5d29yZHNb
XSA9IHsgQ1NTVmFsdWVBdXRvLCBDU1NWYWx1ZU5vcm1hbCwgQ1NTVmFsdWVOb25lIH07CisgICAg
ICAgIFNFVF9QUk9QRVJUWV9QQVJTRVJfTUFQX0VOVFJZKG1hcCwgQ1NTUHJvcGVydHlXZWJraXRG
b250S2VybmluZywgZm9udEtlcm5pbmdLZXl3b3Jkcyk7CisgICAgICAgIHN0YXRpYyBjb25zdCBp
bnQgd3JhcEZsb3dLZXl3b3Jkc1tdID0geyBDU1NWYWx1ZUF1dG8sIENTU1ZhbHVlQm90aCwgQ1NT
VmFsdWVMZWZ0LCBDU1NWYWx1ZVJpZ2h0LCBDU1NWYWx1ZU1heGltdW0sIENTU1ZhbHVlQ2xlYXIg
fTsKKyAgICAgICAgU0VUX1BST1BFUlRZX1BBUlNFUl9NQVBfRU5UUlkobWFwLCBDU1NQcm9wZXJ0
eVdlYmtpdFdyYXBGbG93LCB3cmFwRmxvd0tleXdvcmRzKTsKKyAgICAgICAgc3RhdGljIGNvbnN0
IGludCB3cmFwVGhyb3VnaEtleXdvcmRzW10gPSB7IENTU1ZhbHVlV3JhcCwgQ1NTVmFsdWVOb25l
IH07CisgICAgICAgIFNFVF9QUk9QRVJUWV9QQVJTRVJfTUFQX0VOVFJZKG1hcCwgQ1NTUHJvcGVy
dHlXZWJraXRXcmFwVGhyb3VnaCwgd3JhcFRocm91Z2hLZXl3b3Jkcyk7CisgICAgICAgIENTU1By
b3BlcnR5UGFyc2VyIHByb3BlcnR5Qm9yZGVyU3R5bGU7CisgICAgICAgIHByb3BlcnR5Qm9yZGVy
U3R5bGUuc2V0UmFuZ2UoQ1NTVmFsdWVOb25lLCBDU1NWYWx1ZURvdWJsZSk7IC8vIG5vbmUgfCBo
aWRkZW4gfCBkb3R0ZWQgfCBkYXNoZWQgfCBzb2xpZCB8IGRvdWJsZSB8IGdyb292ZSB8IHJpZGdl
IHwgaW5zZXQgfCBvdXRzZXQKKyAgICAgICAgbWFwLnNldChDU1NQcm9wZXJ0eUJvcmRlclRvcFN0
eWxlLCBwcm9wZXJ0eUJvcmRlclN0eWxlKTsKKyAgICAgICAgbWFwLnNldChDU1NQcm9wZXJ0eUJv
cmRlclJpZ2h0U3R5bGUsIHByb3BlcnR5Qm9yZGVyU3R5bGUpOworICAgICAgICBtYXAuc2V0KENT
U1Byb3BlcnR5Qm9yZGVyQm90dG9tU3R5bGUsIHByb3BlcnR5Qm9yZGVyU3R5bGUpOworICAgICAg
ICBtYXAuc2V0KENTU1Byb3BlcnR5Qm9yZGVyTGVmdFN0eWxlLCBwcm9wZXJ0eUJvcmRlclN0eWxl
KTsKKyAgICAgICAgbWFwLnNldChDU1NQcm9wZXJ0eVdlYmtpdEJvcmRlclN0YXJ0U3R5bGUsIHBy
b3BlcnR5Qm9yZGVyU3R5bGUpOworICAgICAgICBtYXAuc2V0KENTU1Byb3BlcnR5V2Via2l0Qm9y
ZGVyRW5kU3R5bGUsIHByb3BlcnR5Qm9yZGVyU3R5bGUpOworICAgICAgICBtYXAuc2V0KENTU1By
b3BlcnR5V2Via2l0Qm9yZGVyQmVmb3JlU3R5bGUsIHByb3BlcnR5Qm9yZGVyU3R5bGUpOworICAg
ICAgICBtYXAuc2V0KENTU1Byb3BlcnR5V2Via2l0Qm9yZGVyQWZ0ZXJTdHlsZSwgcHJvcGVydHlC
b3JkZXJTdHlsZSk7CisgICAgICAgIG1hcC5zZXQoQ1NTUHJvcGVydHlXZWJraXRDb2x1bW5SdWxl
U3R5bGUsIHByb3BlcnR5Qm9yZGVyU3R5bGUpOworCisgICAgICAgIHN0YXRpYyBjb25zdCBpbnQg
bGlzdFN0eWxlVHlwZUtleXdvcmRzW10gPSB7IENTU1ZhbHVlTm9uZSB9OworICAgICAgICBDU1NQ
cm9wZXJ0eVBhcnNlciBwcm9wZXJ0eUxpc3RTdHlsZVR5cGUobGlzdFN0eWxlVHlwZUtleXdvcmRz
LCBXVEZfQVJSQVlfTEVOR1RIKGxpc3RTdHlsZVR5cGVLZXl3b3JkcykpOworICAgICAgICBwcm9w
ZXJ0eUxpc3RTdHlsZVR5cGUuc2V0UmFuZ2UoQ1NTVmFsdWVEaXNjLCBDU1NWYWx1ZUthdGFrYW5h
SXJvaGEpOworICAgICAgICBtYXAuc2V0KENTU1Byb3BlcnR5TGlzdFN0eWxlVHlwZSwgcHJvcGVy
dHlMaXN0U3R5bGVUeXBlKTsKKworI2lmIEVOQUJMRShDU1NfR1JJRF9MQVlPVVQpCisgICAgICAg
IHN0YXRpYyBjb25zdCBpbnQgZGlzcGxheUtleXdvcmRzW10gPSB7IENTU1ZhbHVlTm9uZSwgQ1NT
VmFsdWVXZWJraXRHcmlkLCBDU1NWYWx1ZVdlYmtpdElubGluZUdyaWQgfTsKKyNlbHNlCisgICAg
ICAgIHN0YXRpYyBjb25zdCBpbnQgZGlzcGxheUtleXdvcmRzW10gPSB7IENTU1ZhbHVlTm9uZSB9
OworI2VuZGlmCisgICAgICAgIC8vIGlubGluZSB8IGJsb2NrIHwgbGlzdC1pdGVtIHwgcnVuLWlu
IHwgaW5saW5lLWJsb2NrIHwgdGFibGUgfAorICAgICAgICAvLyBpbmxpbmUtdGFibGUgfCB0YWJs
ZS1yb3ctZ3JvdXAgfCB0YWJsZS1oZWFkZXItZ3JvdXAgfCB0YWJsZS1mb290ZXItZ3JvdXAgfCB0
YWJsZS1yb3cgfAorICAgICAgICAvLyB0YWJsZS1jb2x1bW4tZ3JvdXAgfCB0YWJsZS1jb2x1bW4g
fCB0YWJsZS1jZWxsIHwgdGFibGUtY2FwdGlvbiB8IC13ZWJraXQtYm94IHwgLXdlYmtpdC1pbmxp
bmUtYm94IHwgbm9uZSB8IGluaGVyaXQKKyAgICAgICAgLy8gLXdlYmtpdC1mbGV4Ym94IHwgLXdl
YmtpdC1pbmxpbmUtZmxleGJveCB8IC13ZWJraXQtZ3JpZCB8IC13ZWJraXQtaW5saW5lLWdyaWQK
KyAgICAgICAgQ1NTUHJvcGVydHlQYXJzZXIgcHJvcGVydHlEaXNwbGF5KGRpc3BsYXlLZXl3b3Jk
cywgV1RGX0FSUkFZX0xFTkdUSChkaXNwbGF5S2V5d29yZHMpKTsKKyAgICAgICAgcHJvcGVydHlE
aXNwbGF5LnNldFJhbmdlKENTU1ZhbHVlSW5saW5lLCBDU1NWYWx1ZVdlYmtpdElubGluZUZsZXhi
b3gpOworICAgICAgICBtYXAuc2V0KENTU1Byb3BlcnR5RGlzcGxheSwgcHJvcGVydHlEaXNwbGF5
KTsKKworICAgICAgICBzdGF0aWMgY29uc3QgaW50IHRleHRUcmFuc2Zvcm1LZXl3b3Jkc1tdID0g
eyBDU1NWYWx1ZU5vbmUgfTsKKyAgICAgICAgQ1NTUHJvcGVydHlQYXJzZXIgcHJvcGVydHlUZXh0
VHJhbnNmb3JtKHRleHRUcmFuc2Zvcm1LZXl3b3JkcywgV1RGX0FSUkFZX0xFTkdUSCh0ZXh0VHJh
bnNmb3JtS2V5d29yZHMpKTsKKyAgICAgICAgcHJvcGVydHlUZXh0VHJhbnNmb3JtLnNldFJhbmdl
KENTU1ZhbHVlQ2FwaXRhbGl6ZSwgQ1NTVmFsdWVMb3dlcmNhc2UpOyAvLyBjYXBpdGFsaXplIHwg
dXBwZXJjYXNlIHwgbG93ZXJjYXNlIHwgbm9uZSB8IGluaGVyaXQKKyAgICAgICAgbWFwLnNldChD
U1NQcm9wZXJ0eVRleHRUcmFuc2Zvcm0sIHByb3BlcnR5VGV4dFRyYW5zZm9ybSk7CisKKyAgICAg
ICAgc3RhdGljIGNvbnN0IGludCBvdXRsaW5lU3R5bGVLZXl3b3Jkc1tdID0geyBDU1NWYWx1ZU5v
bmUsIENTU1ZhbHVlQXV0byB9OworICAgICAgICBDU1NQcm9wZXJ0eVBhcnNlciBwcm9wZXJ0eU91
dGxpbmVTdHlsZShvdXRsaW5lU3R5bGVLZXl3b3JkcywgV1RGX0FSUkFZX0xFTkdUSChvdXRsaW5l
U3R5bGVLZXl3b3JkcykpOworICAgICAgICBwcm9wZXJ0eU91dGxpbmVTdHlsZS5zZXRSYW5nZShD
U1NWYWx1ZUluc2V0LCBDU1NWYWx1ZURvdWJsZSk7IC8vICg8Ym9yZGVyLXN0eWxlPiBleGNlcHQg
aGlkZGVuKSB8IGF1dG8gfCBpbmhlcml0CisgICAgICAgIG1hcC5zZXQoQ1NTUHJvcGVydHlPdXRs
aW5lU3R5bGUsIHByb3BlcnR5T3V0bGluZVN0eWxlKTsKKworICAgICAgICBzdGF0aWMgY29uc3Qg
aW50IGFwcGVhcmFuY2VLZXl3b3Jkc1tdID0geyBDU1NWYWx1ZU5vbmUgfTsKKyAgICAgICAgQ1NT
UHJvcGVydHlQYXJzZXIgcHJvcGVydHlBcHBlYXJhbmNlKGFwcGVhcmFuY2VLZXl3b3JkcywgV1RG
X0FSUkFZX0xFTkdUSChhcHBlYXJhbmNlS2V5d29yZHMpKTsKKyAgICAgICAgcHJvcGVydHlBcHBl
YXJhbmNlLnNldFJhbmdlKENTU1ZhbHVlQ2hlY2tib3gsIENTU1ZhbHVlVGV4dGFyZWEpOworICAg
ICAgICBtYXAuc2V0KENTU1Byb3BlcnR5V2Via2l0QXBwZWFyYW5jZSwgcHJvcGVydHlBcHBlYXJh
bmNlKTsKKworICAgICAgICAvLyBub25lIHwgdmlzaWJsZVBhaW50ZWQgfCB2aXNpYmxlRmlsbCB8
IHZpc2libGVTdHJva2UgfCB2aXNpYmxlIHwKKyAgICAgICAgLy8gcGFpbnRlZCB8IGZpbGwgfCBz
dHJva2UgfCBhdXRvIHwgYWxsIHwgaW5oZXJpdAorICAgICAgICBzdGF0aWMgY29uc3QgaW50IHBv
aW50ZXJFdmVudHNLZXl3b3Jkc1tdID0geyBDU1NWYWx1ZVZpc2libGUsIENTU1ZhbHVlTm9uZSwg
Q1NTVmFsdWVBbGwsIENTU1ZhbHVlQXV0byB9OworICAgICAgICBDU1NQcm9wZXJ0eVBhcnNlciBw
cm9wZXJ0eVBvaW50ZXJFdmVudHMocG9pbnRlckV2ZW50c0tleXdvcmRzLCBXVEZfQVJSQVlfTEVO
R1RIKHBvaW50ZXJFdmVudHNLZXl3b3JkcykpOworICAgICAgICBwcm9wZXJ0eVBvaW50ZXJFdmVu
dHMuc2V0UmFuZ2UoQ1NTVmFsdWVWaXNpYmxlcGFpbnRlZCwgQ1NTVmFsdWVTdHJva2UpOworICAg
ICAgICBtYXAuc2V0KENTU1Byb3BlcnR5UG9pbnRlckV2ZW50cywgcHJvcGVydHlQb2ludGVyRXZl
bnRzKTsKKworICAgICAgICBDU1NQcm9wZXJ0eVBhcnNlciBwcm9wZXJ0eVdyaXRpbmdNb2RlOwor
ICAgICAgICBwcm9wZXJ0eVdyaXRpbmdNb2RlLnNldFJhbmdlKENTU1ZhbHVlSG9yaXpvbnRhbFRi
LCBDU1NWYWx1ZUhvcml6b250YWxCdCk7CisgICAgICAgIG1hcC5zZXQoQ1NTUHJvcGVydHlXZWJr
aXRXcml0aW5nTW9kZSwgcHJvcGVydHlXcml0aW5nTW9kZSk7CisKKyAgICB9CisgICAgcmV0dXJu
IG1hcC5nZXQocHJvcGVydHlJZCk7Cit9CisKK3N0YXRpYyBib29sIHBhcnNlS2V5d29yZFZhbHVl
KFN0eWxlUHJvcGVydHlTZXQqIGRlY2xhcmF0aW9uLCBpbnQgcHJvcGVydHlJZCwgY29uc3QgU3Ry
aW5nJiBzdHJpbmcsIGJvb2wgaW1wb3J0YW50LCBDU1NTdHlsZVNoZWV0KiBjb250ZXh0U3R5bGVT
aGVldCkKK3sKKyAgICBpZiAoIXN0cmluZy5sZW5ndGgoKSkKKyAgICAgICAgcmV0dXJuIGZhbHNl
OworCisgICAgaWYgKCFpc0tleXdvcmRQcm9wZXJ0eUlEKHByb3BlcnR5SWQpKQorICAgICAgICBy
ZXR1cm4gZmFsc2U7CisKKyAgICBDU1NQYXJzZXJTdHJpbmcgY3NzU3RyaW5nOworICAgIGNzc1N0
cmluZy5jaGFyYWN0ZXJzID0gY29uc3RfY2FzdDxVQ2hhcio+KHN0cmluZy5jaGFyYWN0ZXJzKCkp
OworICAgIGNzc1N0cmluZy5sZW5ndGggPSBzdHJpbmcubGVuZ3RoKCk7CisgICAgaW50IHZhbHVl
SUQgPSBjc3NWYWx1ZUtleXdvcmRJRChjc3NTdHJpbmcpOworCisgICAgaWYgKCF2YWx1ZUlEKQor
ICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBEb2N1bWVudCogZG9jdW1lbnQgPSBjb250ZXh0
U3R5bGVTaGVldC0+ZmluZERvY3VtZW50KCk7CisgICAgUmVmUHRyPENTU1ZhbHVlPiB2YWx1ZTsK
KyAgICBSZWZQdHI8Q1NTVmFsdWVQb29sPiBjc3NWYWx1ZVBvb2wgPSBkb2N1bWVudCA/IGRvY3Vt
ZW50LT5jc3NWYWx1ZVBvb2woKSA6IDA7CisgICAgaWYgKHZhbHVlSUQgPT0gQ1NTVmFsdWVJbmhl
cml0KSB7CisgICAgICAgIGlmIChjc3NWYWx1ZVBvb2wpCisgICAgICAgICAgICB2YWx1ZSA9IGNz
c1ZhbHVlUG9vbC0+Y3JlYXRlSW5oZXJpdGVkVmFsdWUoKTsKKyAgICAgICAgZWxzZQorICAgICAg
ICAgICAgdmFsdWUgPSBDU1NJbmhlcml0ZWRWYWx1ZTo6Y3JlYXRlKCk7CisgICAgICAgIGRlY2xh
cmF0aW9uLT5hZGRQYXJzZWRQcm9wZXJ0eShDU1NQcm9wZXJ0eShwcm9wZXJ0eUlkLCB2YWx1ZS5y
ZWxlYXNlKCksIGltcG9ydGFudCkpOworICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9CisgICAg
aWYgKHZhbHVlSUQgPT0gQ1NTVmFsdWVJbml0aWFsKSB7CisgICAgICAgIGlmIChjc3NWYWx1ZVBv
b2wpCisgICAgICAgICAgICB2YWx1ZSA9IGNzc1ZhbHVlUG9vbC0+Y3JlYXRlRXhwbGljaXRJbml0
aWFsVmFsdWUoKTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgdmFsdWUgPSBDU1NJbml0aWFs
VmFsdWU6OmNyZWF0ZUV4cGxpY2l0KCk7CisgICAgICAgIGRlY2xhcmF0aW9uLT5hZGRQYXJzZWRQ
cm9wZXJ0eShDU1NQcm9wZXJ0eShwcm9wZXJ0eUlkLCB2YWx1ZS5yZWxlYXNlKCksIGltcG9ydGFu
dCkpOworICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9CisKKyAgICBib29sIHZhbGlkUHJpbWl0
aXZlID0gZmFsc2U7CisgICAgQ1NTUHJvcGVydHlQYXJzZXIgcHJvcGVydHkgPSBwcm9wZXJ0eUZv
cklEKHByb3BlcnR5SWQpOworICAgIC8vIFRoZSBwcm9wZXJ0eSBoYXMgYSByYW5nZSBvZiBrZXl3
b3JkcyBsZXQncyBjaGVjayBmaXJzdC4KKyAgICBpZiAocHJvcGVydHkuaGFzUmFuZ2UoKSkgewor
ICAgICAgICBpZiAodmFsdWVJRCA+PSBwcm9wZXJ0eS5taW5LZXl3b3JkKCkgJiYgdmFsdWVJRCA8
PSBwcm9wZXJ0eS5tYXhLZXl3b3JkKCkpCisgICAgICAgICAgICB2YWxpZFByaW1pdGl2ZSA9IHRy
dWU7CisgICAgfQorCisgICAgZm9yICh1bnNpZ25lZCBpID0gMCA7ICF2YWxpZFByaW1pdGl2ZSAm
JiBpIDwgcHJvcGVydHkubGVuZ3RoKCk7ICsraSkgeworICAgICAgICBpZiAocHJvcGVydHkuYWNj
ZXB0ZWRLZXl3b3JkcygpW2ldID09IHZhbHVlSUQpIHsKKyAgICAgICAgICAgIHZhbGlkUHJpbWl0
aXZlID0gdHJ1ZTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAgfQorCisgICAg
aWYgKCF2YWxpZFByaW1pdGl2ZSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgaWYgKGRv
Y3VtZW50KQorICAgICAgICB2YWx1ZSA9IGNzc1ZhbHVlUG9vbC0+Y3JlYXRlSWRlbnRpZmllclZh
bHVlKHZhbHVlSUQpOworICAgIGVsc2UKKyAgICAgICAgdmFsdWUgPSBDU1NQcmltaXRpdmVWYWx1
ZTo6Y3JlYXRlSWRlbnRpZmllcih2YWx1ZUlEKTsKKyAgICBkZWNsYXJhdGlvbi0+YWRkUGFyc2Vk
UHJvcGVydHkoQ1NTUHJvcGVydHkocHJvcGVydHlJZCwgdmFsdWUucmVsZWFzZSgpLCBpbXBvcnRh
bnQpKTsKKyAgICByZXR1cm4gdHJ1ZTsKK30KKwogUGFzc1JlZlB0cjxDU1NWYWx1ZUxpc3Q+IENT
U1BhcnNlcjo6cGFyc2VGb250RmFjZVZhbHVlKGNvbnN0IEF0b21pY1N0cmluZyYgc3RyaW5nLCBD
U1NTdHlsZVNoZWV0KiBjb250ZXh0U3R5bGVTaGVldCkKIHsKICAgICBSZWZQdHI8U3R5bGVQcm9w
ZXJ0eVNldD4gZHVtbXlTdHlsZSA9IFN0eWxlUHJvcGVydHlTZXQ6OmNyZWF0ZSgpOwpAQCAtNDkz
LDYgKzg4MCw4IEBAIGJvb2wgQ1NTUGFyc2VyOjpwYXJzZVZhbHVlKFN0eWxlUHJvcGVydHlTZXQq
IGRlY2xhcmF0aW9uLCBpbnQgcHJvcGVydHlJZCwgY29uc3QKICAgICAgICAgcmV0dXJuIHRydWU7
CiAgICAgaWYgKHBhcnNlQ29sb3JWYWx1ZShkZWNsYXJhdGlvbiwgcHJvcGVydHlJZCwgc3RyaW5n
LCBpbXBvcnRhbnQsIHN0cmljdCwgY29udGV4dFN0eWxlU2hlZXQpKQogICAgICAgICByZXR1cm4g
dHJ1ZTsKKyAgICBpZiAocGFyc2VLZXl3b3JkVmFsdWUoZGVjbGFyYXRpb24sIHByb3BlcnR5SWQs
IHN0cmluZywgaW1wb3J0YW50LCBjb250ZXh0U3R5bGVTaGVldCkpCisgICAgICAgIHJldHVybiB0
cnVlOwogICAgIENTU1BhcnNlciBwYXJzZXIoc3RyaWN0KTsKICAgICByZXR1cm4gcGFyc2VyLnBh
cnNlVmFsdWUoZGVjbGFyYXRpb24sIHByb3BlcnR5SWQsIHN0cmluZywgaW1wb3J0YW50LCBjb250
ZXh0U3R5bGVTaGVldCk7CiB9CkBAIC05MzAsNiArMTMxOSwzNSBAQCBib29sIENTU1BhcnNlcjo6
cGFyc2VWYWx1ZShpbnQgcHJvcElkLCBib29sIGltcG9ydGFudCkKICAgICBib29sIHZhbGlkUHJp
bWl0aXZlID0gZmFsc2U7CiAgICAgUmVmUHRyPENTU1ZhbHVlPiBwYXJzZWRWYWx1ZTsKIAorICAg
IGlmIChpZCAmJiBpc0tleXdvcmRQcm9wZXJ0eUlEKHByb3BJZCkpIHsKKyAgICAgICAgQ1NTUHJv
cGVydHlQYXJzZXIgcHJvcGVydHkgPSBwcm9wZXJ0eUZvcklEKHByb3BJZCk7CisgICAgICAgIC8v
IFRoZSBwcm9wZXJ0eSBoYXMgYSByYW5nZSBvZiBrZXl3b3JkcyBsZXQncyBjaGVjayBmaXJzdC4K
KyAgICAgICAgaWYgKHByb3BlcnR5Lmhhc1JhbmdlKCkpIHsKKyAgICAgICAgICAgIGlmIChpZCA+
PSBwcm9wZXJ0eS5taW5LZXl3b3JkKCkgJiYgaWQgPD0gcHJvcGVydHkubWF4S2V5d29yZCgpKQor
ICAgICAgICAgICAgICAgIHZhbGlkUHJpbWl0aXZlID0gdHJ1ZTsKKyAgICAgICAgfQorCisgICAg
ICAgIGZvciAodW5zaWduZWQgaSA9IDAgOyAhdmFsaWRQcmltaXRpdmUgJiYgaSA8IHByb3BlcnR5
Lmxlbmd0aCgpOyArK2kpIHsKKyAgICAgICAgICAgIGlmIChwcm9wZXJ0eS5hY2NlcHRlZEtleXdv
cmRzKClbaV0gPT0gaWQpIHsKKyAgICAgICAgICAgICAgICB2YWxpZFByaW1pdGl2ZSA9IHRydWU7
CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKworICAg
ICAgICBpZiAodmFsaWRQcmltaXRpdmUpIHsKKyAgICAgICAgICAgIHBhcnNlZFZhbHVlID0gcGFy
c2VWYWxpZFByaW1pdGl2ZShpZCwgdmFsdWUpOworICAgICAgICAgICAgbV92YWx1ZUxpc3QtPm5l
eHQoKTsKKyAgICAgICAgfQorICAgICAgICBBU1NFUlQoIW1fcGFyc2VkQ2FsY3VsYXRpb24pOwor
ICAgICAgICBpZiAocGFyc2VkVmFsdWUpIHsKKyAgICAgICAgICAgIGlmICghbV92YWx1ZUxpc3Qt
PmN1cnJlbnQoKSB8fCBpblNob3J0aGFuZCgpKSB7CisgICAgICAgICAgICAgICAgYWRkUHJvcGVy
dHkocHJvcElkLCBwYXJzZWRWYWx1ZS5yZWxlYXNlKCksIGltcG9ydGFudCk7CisgICAgICAgICAg
ICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgcmV0
dXJuIGZhbHNlOworICAgIH0KKwogICAgIHN3aXRjaCAoc3RhdGljX2Nhc3Q8Q1NTUHJvcGVydHlJ
RD4ocHJvcElkKSkgewogICAgICAgICAvKiBUaGUgY29tbWVudCB0byB0aGUgbGVmdCBkZWZpbmVz
IGFsbCB2YWxpZCB2YWx1ZSBvZiB0aGlzIHByb3BlcnRpZXMgYXMgZGVmaW5lZAogICAgICAgICAg
KiBpbiBDU1MgMiwgQXBwZW5kaXggRi4gUHJvcGVydHkgaW5kZXgKQEAgLTEwMDQsMjUgKzE0MjIs
MTAgQEAgYm9vbCBDU1NQYXJzZXI6OnBhcnNlVmFsdWUoaW50IHByb3BJZCwgYm9vbCBpbXBvcnRh
bnQpCiAgICAgICAgICAgICB2YWxpZFByaW1pdGl2ZSA9IChwcm9wSWQgPT0gQ1NTUHJvcGVydHlX
ZWJraXRSZWdpb25CcmVha0luc2lkZSkgPyBjc3NSZWdpb25zRW5hYmxlZCgpIDogdHJ1ZTsKICAg
ICAgICAgYnJlYWs7CiAKLSAgICBjYXNlIENTU1Byb3BlcnR5RW1wdHlDZWxsczogICAgICAgICAg
Ly8gc2hvdyB8IGhpZGUgfCBpbmhlcml0Ci0gICAgICAgIGlmIChpZCA9PSBDU1NWYWx1ZVNob3cK
LSAgICAgICAgICAgIHx8IGlkID09IENTU1ZhbHVlSGlkZSkKLSAgICAgICAgICAgIHZhbGlkUHJp
bWl0aXZlID0gdHJ1ZTsKLSAgICAgICAgYnJlYWs7Ci0KICAgICBjYXNlIENTU1Byb3BlcnR5Q29u
dGVudDogICAgICAgICAgICAgIC8vIFsgPHN0cmluZz4gfCA8dXJpPiB8IDxjb3VudGVyPiB8IGF0
dHIoWCkgfCBvcGVuLXF1b3RlIHwKICAgICAgICAgLy8gY2xvc2UtcXVvdGUgfCBuby1vcGVuLXF1
b3RlIHwgbm8tY2xvc2UtcXVvdGUgXSsgfCBpbmhlcml0CiAgICAgICAgIHJldHVybiBwYXJzZUNv
bnRlbnQocHJvcElkLCBpbXBvcnRhbnQpOwogCi0gICAgY2FzZSBDU1NQcm9wZXJ0eVdoaXRlU3Bh
Y2U6ICAgICAgICAgIC8vIG5vcm1hbCB8IHByZSB8IG5vd3JhcCB8IGluaGVyaXQKLSAgICAgICAg
aWYgKGlkID09IENTU1ZhbHVlTm9ybWFsCi0gICAgICAgICAgICB8fCBpZCA9PSBDU1NWYWx1ZVBy
ZQotICAgICAgICAgICAgfHwgaWQgPT0gQ1NTVmFsdWVQcmVXcmFwCi0gICAgICAgICAgICB8fCBp
ZCA9PSBDU1NWYWx1ZVByZUxpbmUKLSAgICAgICAgICAgIHx8IGlkID09IENTU1ZhbHVlTm93cmFw
KQotICAgICAgICAgICAgdmFsaWRQcmltaXRpdmUgPSB0cnVlOwotICAgICAgICBicmVhazsKLQog
ICAgIGNhc2UgQ1NTUHJvcGVydHlDbGlwOiAgICAgICAgICAgICAgICAgLy8gPHNoYXBlPiB8IGF1
dG8gfCBpbmhlcml0CiAgICAgICAgIGlmIChpZCA9PSBDU1NWYWx1ZUF1dG8pCiAgICAgICAgICAg
ICB2YWxpZFByaW1pdGl2ZSA9IHRydWU7CkBAIC0xMDMzLDIyICsxNDM2LDYgQEAgYm9vbCBDU1NQ
YXJzZXI6OnBhcnNlVmFsdWUoaW50IHByb3BJZCwgYm9vbCBpbXBvcnRhbnQpCiAgICAgLyogU3Rh
cnQgb2Ygc3VwcG9ydGVkIENTUyBwcm9wZXJ0aWVzIHdpdGggdmFsaWRhdGlvbi4gVGhpcyBpcyBu
ZWVkZWQgZm9yIHBhcnNlU2hvcnRoYW5kIHRvIHdvcmsKICAgICAgKiBjb3JyZWN0bHkgYW5kIGFs
bG93cyBvcHRpbWl6YXRpb24gaW4gV2ViQ29yZTo6YXBwbHlSdWxlKC4uKQogICAgICAqLwotICAg
IGNhc2UgQ1NTUHJvcGVydHlDYXB0aW9uU2lkZTogICAgICAgICAvLyB0b3AgfCBib3R0b20gfCBs
ZWZ0IHwgcmlnaHQgfCBpbmhlcml0Ci0gICAgICAgIGlmIChpZCA9PSBDU1NWYWx1ZUxlZnQgfHwg
aWQgPT0gQ1NTVmFsdWVSaWdodCB8fAotICAgICAgICAgICAgaWQgPT0gQ1NTVmFsdWVUb3AgfHwg
aWQgPT0gQ1NTVmFsdWVCb3R0b20pCi0gICAgICAgICAgICB2YWxpZFByaW1pdGl2ZSA9IHRydWU7
Ci0gICAgICAgIGJyZWFrOwotCi0gICAgY2FzZSBDU1NQcm9wZXJ0eUJvcmRlckNvbGxhcHNlOiAg
ICAgIC8vIGNvbGxhcHNlIHwgc2VwYXJhdGUgfCBpbmhlcml0Ci0gICAgICAgIGlmIChpZCA9PSBD
U1NWYWx1ZUNvbGxhcHNlIHx8IGlkID09IENTU1ZhbHVlU2VwYXJhdGUpCi0gICAgICAgICAgICB2
YWxpZFByaW1pdGl2ZSA9IHRydWU7Ci0gICAgICAgIGJyZWFrOwotCi0gICAgY2FzZSBDU1NQcm9w
ZXJ0eVZpc2liaWxpdHk6ICAgICAgICAgICAvLyB2aXNpYmxlIHwgaGlkZGVuIHwgY29sbGFwc2Ug
fCBpbmhlcml0Ci0gICAgICAgIGlmIChpZCA9PSBDU1NWYWx1ZVZpc2libGUgfHwgaWQgPT0gQ1NT
VmFsdWVIaWRkZW4gfHwgaWQgPT0gQ1NTVmFsdWVDb2xsYXBzZSkKLSAgICAgICAgICAgIHZhbGlk
UHJpbWl0aXZlID0gdHJ1ZTsKLSAgICAgICAgYnJlYWs7Ci0KICAgICBjYXNlIENTU1Byb3BlcnR5
T3ZlcmZsb3c6IHsKICAgICAgICAgU2hvcnRoYW5kU2NvcGUgc2NvcGUodGhpcywgcHJvcElkKTsK
ICAgICAgICAgaWYgKG51bSAhPSAxIHx8ICFwYXJzZVZhbHVlKENTU1Byb3BlcnR5T3ZlcmZsb3dY
LCBpbXBvcnRhbnQpKQpAQCAtMTA1Nyw1OSArMTQ0NCw2IEBAIGJvb2wgQ1NTUGFyc2VyOjpwYXJz
ZVZhbHVlKGludCBwcm9wSWQsIGJvb2wgaW1wb3J0YW50KQogICAgICAgICBhZGRQcm9wZXJ0eShD
U1NQcm9wZXJ0eU92ZXJmbG93WSwgdmFsdWUsIGltcG9ydGFudCk7CiAgICAgICAgIHJldHVybiB0
cnVlOwogICAgIH0KLSAgICBjYXNlIENTU1Byb3BlcnR5T3ZlcmZsb3dYOgotICAgIGNhc2UgQ1NT
UHJvcGVydHlPdmVyZmxvd1k6ICAgICAgICAgICAvLyB2aXNpYmxlIHwgaGlkZGVuIHwgc2Nyb2xs
IHwgYXV0byB8IG1hcnF1ZWUgfCBvdmVybGF5IHwgaW5oZXJpdAotICAgICAgICBpZiAoaWQgPT0g
Q1NTVmFsdWVWaXNpYmxlIHx8IGlkID09IENTU1ZhbHVlSGlkZGVuIHx8IGlkID09IENTU1ZhbHVl
U2Nyb2xsIHx8IGlkID09IENTU1ZhbHVlQXV0byB8fAotICAgICAgICAgICAgaWQgPT0gQ1NTVmFs
dWVPdmVybGF5IHx8IGlkID09IENTU1ZhbHVlV2Via2l0TWFycXVlZSkKLSAgICAgICAgICAgIHZh
bGlkUHJpbWl0aXZlID0gdHJ1ZTsKLSAgICAgICAgYnJlYWs7Ci0KLSAgICBjYXNlIENTU1Byb3Bl
cnR5TGlzdFN0eWxlUG9zaXRpb246ICAvLyBpbnNpZGUgfCBvdXRzaWRlIHwgaW5oZXJpdAotICAg
ICAgICBpZiAoaWQgPT0gQ1NTVmFsdWVJbnNpZGUgfHwgaWQgPT0gQ1NTVmFsdWVPdXRzaWRlKQot
ICAgICAgICAgICAgdmFsaWRQcmltaXRpdmUgPSB0cnVlOwotICAgICAgICBicmVhazsKLQotICAg
IGNhc2UgQ1NTUHJvcGVydHlMaXN0U3R5bGVUeXBlOgotICAgICAgICAvLyBTZWUgc2VjdGlvbiBD
U1NfUFJPUF9MSVNUX1NUWUxFX1RZUEUgb2YgZmlsZSBDU1NWYWx1ZUtleXdvcmRzLmluCi0gICAg
ICAgIC8vIGZvciB0aGUgbGlzdCBvZiBzdXBwb3J0ZWQgbGlzdC1zdHlsZS10eXBlcy4KLSAgICAg
ICAgaWYgKChpZCA+PSBDU1NWYWx1ZURpc2MgJiYgaWQgPD0gQ1NTVmFsdWVLYXRha2FuYUlyb2hh
KSB8fCBpZCA9PSBDU1NWYWx1ZU5vbmUpCi0gICAgICAgICAgICB2YWxpZFByaW1pdGl2ZSA9IHRy
dWU7Ci0gICAgICAgIGJyZWFrOwotCi0gICAgY2FzZSBDU1NQcm9wZXJ0eURpc3BsYXk6Ci0gICAg
ICAgIC8vIGlubGluZSB8IGJsb2NrIHwgbGlzdC1pdGVtIHwgcnVuLWluIHwgaW5saW5lLWJsb2Nr
IHwgdGFibGUgfAotICAgICAgICAvLyBpbmxpbmUtdGFibGUgfCB0YWJsZS1yb3ctZ3JvdXAgfCB0
YWJsZS1oZWFkZXItZ3JvdXAgfCB0YWJsZS1mb290ZXItZ3JvdXAgfCB0YWJsZS1yb3cgfAotICAg
ICAgICAvLyB0YWJsZS1jb2x1bW4tZ3JvdXAgfCB0YWJsZS1jb2x1bW4gfCB0YWJsZS1jZWxsIHwg
dGFibGUtY2FwdGlvbiB8IC13ZWJraXQtYm94IHwgLXdlYmtpdC1pbmxpbmUtYm94IHwgbm9uZSB8
IGluaGVyaXQKLSAgICAgICAgLy8gLXdlYmtpdC1mbGV4Ym94IHwgLXdlYmtpdC1pbmxpbmUtZmxl
eGJveCB8IC13ZWJraXQtZ3JpZCB8IC13ZWJraXQtaW5saW5lLWdyaWQKLSAgICAgICAgaWYgKChp
ZCA+PSBDU1NWYWx1ZUlubGluZSAmJiBpZCA8PSBDU1NWYWx1ZVdlYmtpdElubGluZUZsZXhib3gp
IHx8IGlkID09IENTU1ZhbHVlTm9uZSkKLSAgICAgICAgICAgIHZhbGlkUHJpbWl0aXZlID0gdHJ1
ZTsKLSNpZiBFTkFCTEUoQ1NTX0dSSURfTEFZT1VUKQotICAgICAgICBpZiAoaWQgPT0gQ1NTVmFs
dWVXZWJraXRHcmlkIHx8IGlkID09IENTU1ZhbHVlV2Via2l0SW5saW5lR3JpZCkKLSAgICAgICAg
ICAgIHZhbGlkUHJpbWl0aXZlID0gdHJ1ZTsKLSNlbmRpZgotICAgICAgICBicmVhazsKLQotICAg
IGNhc2UgQ1NTUHJvcGVydHlEaXJlY3Rpb246ICAgICAgICAgICAgLy8gbHRyIHwgcnRsIHwgaW5o
ZXJpdAotICAgICAgICBpZiAoaWQgPT0gQ1NTVmFsdWVMdHIgfHwgaWQgPT0gQ1NTVmFsdWVSdGwp
Ci0gICAgICAgICAgICB2YWxpZFByaW1pdGl2ZSA9IHRydWU7Ci0gICAgICAgIGJyZWFrOwotCi0g
ICAgY2FzZSBDU1NQcm9wZXJ0eVRleHRUcmFuc2Zvcm06ICAgICAgIC8vIGNhcGl0YWxpemUgfCB1
cHBlcmNhc2UgfCBsb3dlcmNhc2UgfCBub25lIHwgaW5oZXJpdAotICAgICAgICBpZiAoKGlkID49
IENTU1ZhbHVlQ2FwaXRhbGl6ZSAmJiBpZCA8PSBDU1NWYWx1ZUxvd2VyY2FzZSkgfHwgaWQgPT0g
Q1NTVmFsdWVOb25lKQotICAgICAgICAgICAgdmFsaWRQcmltaXRpdmUgPSB0cnVlOwotICAgICAg
ICBicmVhazsKLQotICAgIGNhc2UgQ1NTUHJvcGVydHlGbG9hdDogICAgICAgICAgICAgICAgLy8g
bGVmdCB8IHJpZ2h0IHwgbm9uZSB8IHBvc2l0aW9uZWQgfCBjZW50ZXIgKGZvciBidWdneSBDU1Ms
IG1hcHMgdG8gbm9uZSkKLSAgICAgICAgaWYgKGlkID09IENTU1ZhbHVlTGVmdCB8fCBpZCA9PSBD
U1NWYWx1ZVJpZ2h0Ci0gICAgICAgICAgICB8fCBpZCA9PSBDU1NWYWx1ZU5vbmUgfHwgaWQgPT0g
Q1NTVmFsdWVDZW50ZXIgfHwgaWQgPT0gQ1NTVmFsdWVXZWJraXRQb3NpdGlvbmVkKQotICAgICAg
ICAgICAgdmFsaWRQcmltaXRpdmUgPSB0cnVlOwotICAgICAgICBicmVhazsKLQotICAgIGNhc2Ug
Q1NTUHJvcGVydHlDbGVhcjogICAgICAgICAgICAgICAgLy8gbm9uZSB8IGxlZnQgfCByaWdodCB8
IGJvdGggfCBpbmhlcml0Ci0gICAgICAgIGlmIChpZCA9PSBDU1NWYWx1ZU5vbmUgfHwgaWQgPT0g
Q1NTVmFsdWVMZWZ0Ci0gICAgICAgICAgICB8fCBpZCA9PSBDU1NWYWx1ZVJpZ2h0IHx8IGlkID09
IENTU1ZhbHVlQm90aCkKLSAgICAgICAgICAgIHZhbGlkUHJpbWl0aXZlID0gdHJ1ZTsKLSAgICAg
ICAgYnJlYWs7CiAKICAgICBjYXNlIENTU1Byb3BlcnR5VGV4dEFsaWduOgogICAgICAgICAvLyBs
ZWZ0IHwgcmlnaHQgfCBjZW50ZXIgfCBqdXN0aWZ5IHwgd2Via2l0X2xlZnQgfCB3ZWJraXRfcmln
aHQgfCB3ZWJraXRfY2VudGVyIHwgd2Via2l0X21hdGNoX3BhcmVudCB8CkBAIC0xMTE5LDI0ICsx
NDUzLDYgQEAgYm9vbCBDU1NQYXJzZXI6OnBhcnNlVmFsdWUoaW50IHByb3BJZCwgYm9vbCBpbXBv
cnRhbnQpCiAgICAgICAgICAgICB2YWxpZFByaW1pdGl2ZSA9IHRydWU7CiAgICAgICAgIGJyZWFr
OwogCi0gICAgY2FzZSBDU1NQcm9wZXJ0eU91dGxpbmVTdHlsZTogICAgICAgIC8vICg8Ym9yZGVy
LXN0eWxlPiBleGNlcHQgaGlkZGVuKSB8IGF1dG8gfCBpbmhlcml0Ci0gICAgICAgIGlmIChpZCA9
PSBDU1NWYWx1ZUF1dG8gfHwgaWQgPT0gQ1NTVmFsdWVOb25lIHx8IChpZCA+PSBDU1NWYWx1ZUlu
c2V0ICYmIGlkIDw9IENTU1ZhbHVlRG91YmxlKSkKLSAgICAgICAgICAgIHZhbGlkUHJpbWl0aXZl
ID0gdHJ1ZTsKLSAgICAgICAgYnJlYWs7Ci0KLSAgICBjYXNlIENTU1Byb3BlcnR5Qm9yZGVyVG9w
U3R5bGU6ICAgICAvLy8vIDxib3JkZXItc3R5bGU+IHwgaW5oZXJpdAotICAgIGNhc2UgQ1NTUHJv
cGVydHlCb3JkZXJSaWdodFN0eWxlOiAgIC8vICAgRGVmaW5lZCBhczogICAgbm9uZSB8IGhpZGRl
biB8IGRvdHRlZCB8IGRhc2hlZCB8Ci0gICAgY2FzZSBDU1NQcm9wZXJ0eUJvcmRlckJvdHRvbVN0
eWxlOiAgLy8gICBzb2xpZCB8IGRvdWJsZSB8IGdyb292ZSB8IHJpZGdlIHwgaW5zZXQgfCBvdXRz
ZXQKLSAgICBjYXNlIENTU1Byb3BlcnR5Qm9yZGVyTGVmdFN0eWxlOgotICAgIGNhc2UgQ1NTUHJv
cGVydHlXZWJraXRCb3JkZXJTdGFydFN0eWxlOgotICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRC
b3JkZXJFbmRTdHlsZToKLSAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0Qm9yZGVyQmVmb3JlU3R5
bGU6Ci0gICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdEJvcmRlckFmdGVyU3R5bGU6Ci0gICAgY2Fz
ZSBDU1NQcm9wZXJ0eVdlYmtpdENvbHVtblJ1bGVTdHlsZToKLSAgICAgICAgaWYgKGlkID49IENT
U1ZhbHVlTm9uZSAmJiBpZCA8PSBDU1NWYWx1ZURvdWJsZSkKLSAgICAgICAgICAgIHZhbGlkUHJp
bWl0aXZlID0gdHJ1ZTsKLSAgICAgICAgYnJlYWs7Ci0KICAgICBjYXNlIENTU1Byb3BlcnR5Rm9u
dFdlaWdodDogIC8vIG5vcm1hbCB8IGJvbGQgfCBib2xkZXIgfCBsaWdodGVyIHwgMTAwIHwgMjAw
IHwgMzAwIHwgNDAwIHwgNTAwIHwgNjAwIHwgNzAwIHwgODAwIHwgOTAwIHwgaW5oZXJpdAogICAg
ICAgICByZXR1cm4gcGFyc2VGb250V2VpZ2h0KGltcG9ydGFudCk7CiAKQEAgLTEzNTEsMjEgKzE2
NjcsNiBAQCBib29sIENTU1BhcnNlcjo6cGFyc2VWYWx1ZShpbnQgcHJvcElkLCBib29sIGltcG9y
dGFudCkKICAgICAgICAgICAgIHZhbGlkUHJpbWl0aXZlID0gdmFsaWRVbml0KHZhbHVlLCBGTGVu
Z3RoLCBtX3N0cmljdCk7CiAgICAgICAgIGJyZWFrOwogCi0gICAgY2FzZSBDU1NQcm9wZXJ0eVdv
cmRCcmVhazogICAgICAgICAgLy8gbm9ybWFsIHwgYnJlYWstYWxsIHwgYnJlYWstd29yZCAodGhp
cyBpcyBhIGN1c3RvbSBleHRlbnNpb24pCi0gICAgICAgIGlmIChpZCA9PSBDU1NWYWx1ZU5vcm1h
bCB8fCBpZCA9PSBDU1NWYWx1ZUJyZWFrQWxsIHx8IGlkID09IENTU1ZhbHVlQnJlYWtXb3JkKQot
ICAgICAgICAgICAgdmFsaWRQcmltaXRpdmUgPSB0cnVlOwotICAgICAgICBicmVhazsKLQotICAg
IGNhc2UgQ1NTUHJvcGVydHlXb3JkV3JhcDogICAgICAgICAgIC8vIG5vcm1hbCB8IGJyZWFrLXdv
cmQKLSAgICAgICAgaWYgKGlkID09IENTU1ZhbHVlTm9ybWFsIHx8IGlkID09IENTU1ZhbHVlQnJl
YWtXb3JkKQotICAgICAgICAgICAgdmFsaWRQcmltaXRpdmUgPSB0cnVlOwotICAgICAgICBicmVh
azsKLSAgICBjYXNlIENTU1Byb3BlcnR5U3BlYWs6ICAgICAgICAgICAvLyBub25lIHwgbm9ybWFs
IHwgc3BlbGwtb3V0IHwgZGlnaXRzIHwgbGl0ZXJhbC1wdW5jdHVhdGlvbiB8IG5vLXB1bmN0dWF0
aW9uIHwgaW5oZXJpdAotICAgICAgICBpZiAoaWQgPT0gQ1NTVmFsdWVOb25lIHx8IGlkID09IENT
U1ZhbHVlTm9ybWFsIHx8IGlkID09IENTU1ZhbHVlU3BlbGxPdXQgfHwgaWQgPT0gQ1NTVmFsdWVE
aWdpdHMKLSAgICAgICAgICAgIHx8IGlkID09IENTU1ZhbHVlTGl0ZXJhbFB1bmN0dWF0aW9uIHx8
IGlkID09IENTU1ZhbHVlTm9QdW5jdHVhdGlvbikKLSAgICAgICAgICAgIHZhbGlkUHJpbWl0aXZl
ID0gdHJ1ZTsKLSAgICAgICAgYnJlYWs7Ci0KICAgICBjYXNlIENTU1Byb3BlcnR5VGV4dEluZGVu
dDogICAgICAgICAgLy8gPGxlbmd0aD4gfCA8cGVyY2VudGFnZT4gfCBpbmhlcml0CiAgICAgICAg
IHZhbGlkUHJpbWl0aXZlID0gKCFpZCAmJiB2YWxpZFVuaXQodmFsdWUsIEZMZW5ndGggfCBGUGVy
Y2VudCwgbV9zdHJpY3QpKTsKICAgICAgICAgYnJlYWs7CkBAIC0xNDA4LDExICsxNzA5LDYgQEAg
Ym9vbCBDU1NQYXJzZXI6OnBhcnNlVmFsdWUoaW50IHByb3BJZCwgYm9vbCBpbXBvcnRhbnQpCiAg
ICAgICAgICAgICB2YWxpZFByaW1pdGl2ZSA9ICh2YWxpZFVuaXQodmFsdWUsIEZMZW5ndGggfCBG
UGVyY2VudCB8IEZOb25OZWcsIG1fc3RyaWN0KSk7CiAgICAgICAgIGJyZWFrOwogCi0gICAgY2Fz
ZSBDU1NQcm9wZXJ0eUZvbnRTdHlsZTogICAgICAgICAgIC8vIG5vcm1hbCB8IGl0YWxpYyB8IG9i
bGlxdWUgfCBpbmhlcml0Ci0gICAgICAgIGlmIChpZCA9PSBDU1NWYWx1ZU5vcm1hbCB8fCBpZCA9
PSBDU1NWYWx1ZUl0YWxpYyB8fCBpZCA9PSBDU1NWYWx1ZU9ibGlxdWUpCi0gICAgICAgICAgICB2
YWxpZFByaW1pdGl2ZSA9IHRydWU7Ci0gICAgICAgIGJyZWFrOwotCiAgICAgY2FzZSBDU1NQcm9w
ZXJ0eUZvbnRWYXJpYW50OiAgICAgICAgIC8vIG5vcm1hbCB8IHNtYWxsLWNhcHMgfCBpbmhlcml0
CiAgICAgICAgIHJldHVybiBwYXJzZUZvbnRWYXJpYW50KGltcG9ydGFudCk7CiAKQEAgLTE1Mjgs
MTEgKzE4MjQsNiBAQCBib29sIENTU1BhcnNlcjo6cGFyc2VWYWx1ZShpbnQgcHJvcElkLCBib29s
IGltcG9ydGFudCkKICAgICAgICAgICAgIHZhbGlkUHJpbWl0aXZlID0gKCFpZCAmJiB2YWxpZFVu
aXQodmFsdWUsIEZOdW1iZXIgfCBGUGVyY2VudCB8IEZOb25OZWcsIHRydWUpKTsKICAgICAgICAg
YnJlYWs7CiAKLSAgICBjYXNlIENTU1Byb3BlcnR5VGFibGVMYXlvdXQ6ICAgICAgICAgLy8gYXV0
byB8IGZpeGVkIHwgaW5oZXJpdAotICAgICAgICBpZiAoaWQgPT0gQ1NTVmFsdWVBdXRvIHx8IGlk
ID09IENTU1ZhbHVlRml4ZWQpCi0gICAgICAgICAgICB2YWxpZFByaW1pdGl2ZSA9IHRydWU7Ci0g
ICAgICAgIGJyZWFrOwotCiAgICAgY2FzZSBDU1NQcm9wZXJ0eVNyYzogIC8vIE9ubHkgdXNlZCB3
aXRoaW4gQGZvbnQtZmFjZSwgc28gY2Fubm90IHVzZSBpbmhlcml0IHwgaW5pdGlhbCBvciBiZSAh
aW1wb3J0YW50LiAgVGhpcyBpcyBhIGxpc3Qgb2YgdXJscyBvciBsb2NhbCByZWZlcmVuY2VzLgog
ICAgICAgICByZXR1cm4gcGFyc2VGb250RmFjZVNyYygpOwogCkBAIC0xNTQwLDEwICsxODMxLDYg
QEAgYm9vbCBDU1NQYXJzZXI6OnBhcnNlVmFsdWUoaW50IHByb3BJZCwgYm9vbCBpbXBvcnRhbnQp
CiAgICAgICAgIHJldHVybiBwYXJzZUZvbnRGYWNlVW5pY29kZVJhbmdlKCk7CiAKICAgICAvKiBD
U1MzIHByb3BlcnRpZXMgKi8KLSAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0QXBwZWFyYW5jZToK
LSAgICAgICAgaWYgKChpZCA+PSBDU1NWYWx1ZUNoZWNrYm94ICYmIGlkIDw9IENTU1ZhbHVlVGV4
dGFyZWEpIHx8IGlkID09IENTU1ZhbHVlTm9uZSkKLSAgICAgICAgICAgIHZhbGlkUHJpbWl0aXZl
ID0gdHJ1ZTsKLSAgICAgICAgYnJlYWs7CiAKICAgICBjYXNlIENTU1Byb3BlcnR5Qm9yZGVySW1h
Z2U6IHsKICAgICAgICAgUmVmUHRyPENTU1ZhbHVlPiByZXN1bHQ7CkBAIC0xNjUxLDI5ICsxOTM4
LDYgQEAgYm9vbCBDU1NQYXJzZXI6OnBhcnNlVmFsdWUoaW50IHByb3BJZCwgYm9vbCBpbXBvcnRh
bnQpCiAgICAgY2FzZSBDU1NQcm9wZXJ0eU9wYWNpdHk6CiAgICAgICAgIHZhbGlkUHJpbWl0aXZl
ID0gdmFsaWRVbml0KHZhbHVlLCBGTnVtYmVyLCBtX3N0cmljdCk7CiAgICAgICAgIGJyZWFrOwot
ICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRCb3hBbGlnbjoKLSAgICAgICAgaWYgKGlkID09IENT
U1ZhbHVlU3RyZXRjaCB8fCBpZCA9PSBDU1NWYWx1ZVN0YXJ0IHx8IGlkID09IENTU1ZhbHVlRW5k
IHx8Ci0gICAgICAgICAgICBpZCA9PSBDU1NWYWx1ZUNlbnRlciB8fCBpZCA9PSBDU1NWYWx1ZUJh
c2VsaW5lKQotICAgICAgICAgICAgdmFsaWRQcmltaXRpdmUgPSB0cnVlOwotICAgICAgICBicmVh
azsKLSAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0Qm94RGlyZWN0aW9uOgotICAgICAgICBpZiAo
aWQgPT0gQ1NTVmFsdWVOb3JtYWwgfHwgaWQgPT0gQ1NTVmFsdWVSZXZlcnNlKQotICAgICAgICAg
ICAgdmFsaWRQcmltaXRpdmUgPSB0cnVlOwotICAgICAgICBicmVhazsKLSAgICBjYXNlIENTU1By
b3BlcnR5V2Via2l0Qm94TGluZXM6Ci0gICAgICAgIGlmIChpZCA9PSBDU1NWYWx1ZVNpbmdsZSB8
fCBpZCA9PSBDU1NWYWx1ZU11bHRpcGxlKQotICAgICAgICAgICAgdmFsaWRQcmltaXRpdmUgPSB0
cnVlOwotICAgICAgICBicmVhazsKLSAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0Qm94T3JpZW50
OgotICAgICAgICBpZiAoaWQgPT0gQ1NTVmFsdWVIb3Jpem9udGFsIHx8IGlkID09IENTU1ZhbHVl
VmVydGljYWwgfHwKLSAgICAgICAgICAgIGlkID09IENTU1ZhbHVlSW5saW5lQXhpcyB8fCBpZCA9
PSBDU1NWYWx1ZUJsb2NrQXhpcykKLSAgICAgICAgICAgIHZhbGlkUHJpbWl0aXZlID0gdHJ1ZTsK
LSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdEJveFBhY2s6Ci0gICAg
ICAgIGlmIChpZCA9PSBDU1NWYWx1ZVN0YXJ0IHx8IGlkID09IENTU1ZhbHVlRW5kIHx8Ci0gICAg
ICAgICAgICBpZCA9PSBDU1NWYWx1ZUNlbnRlciB8fCBpZCA9PSBDU1NWYWx1ZUp1c3RpZnkpCi0g
ICAgICAgICAgICB2YWxpZFByaW1pdGl2ZSA9IHRydWU7Ci0gICAgICAgIGJyZWFrOwogICAgIGNh
c2UgQ1NTUHJvcGVydHlXZWJraXRCb3hGbGV4OgogICAgICAgICB2YWxpZFByaW1pdGl2ZSA9IHZh
bGlkVW5pdCh2YWx1ZSwgRk51bWJlciwgbV9zdHJpY3QpOwogICAgICAgICBicmVhazsKQEAgLTE2
ODEsMTIgKzE5NDUsNiBAQCBib29sIENTU1BhcnNlcjo6cGFyc2VWYWx1ZShpbnQgcHJvcElkLCBi
b29sIGltcG9ydGFudCkKICAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0Qm94T3JkaW5hbEdyb3Vw
OgogICAgICAgICB2YWxpZFByaW1pdGl2ZSA9IHZhbGlkVW5pdCh2YWx1ZSwgRkludGVnZXIgfCBG
Tm9uTmVnLCB0cnVlKTsKICAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBDU1NQcm9wZXJ0eUJveFNp
emluZzoKLSAgICAgICAgdmFsaWRQcmltaXRpdmUgPSBpZCA9PSBDU1NWYWx1ZUJvcmRlckJveCB8
fCBpZCA9PSBDU1NWYWx1ZUNvbnRlbnRCb3g7Ci0gICAgICAgIGJyZWFrOwotICAgIGNhc2UgQ1NT
UHJvcGVydHlXZWJraXRDb2xvckNvcnJlY3Rpb246Ci0gICAgICAgIHZhbGlkUHJpbWl0aXZlID0g
aWQgPT0gQ1NTVmFsdWVTcmdiIHx8IGlkID09IENTU1ZhbHVlRGVmYXVsdDsKLSAgICAgICAgYnJl
YWs7CiAjaWYgRU5BQkxFKENTU19GSUxURVJTKQogICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRG
aWx0ZXI6CiAgICAgICAgIGlmIChpZCA9PSBDU1NWYWx1ZU5vbmUpCkBAIC0xNzA5LDE4ICsxOTY3
LDYgQEAgYm9vbCBDU1NQYXJzZXI6OnBhcnNlVmFsdWUoaW50IHByb3BJZCwgYm9vbCBpbXBvcnRh
bnQpCiAgICAgICAgICAgICBtX3ZhbHVlTGlzdC0+bmV4dCgpOwogICAgICAgICB9CiAgICAgICAg
IGJyZWFrOwotICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRGbGV4UGFjazoKLSAgICAgICAgdmFs
aWRQcmltaXRpdmUgPSBpZCA9PSBDU1NWYWx1ZVN0YXJ0IHx8IGlkID09IENTU1ZhbHVlRW5kIHx8
IGlkID09IENTU1ZhbHVlQ2VudGVyIHx8IGlkID09IENTU1ZhbHVlSnVzdGlmeSB8fCBpZCA9PSBD
U1NWYWx1ZURpc3RyaWJ1dGU7Ci0gICAgICAgIGJyZWFrOwotICAgIGNhc2UgQ1NTUHJvcGVydHlX
ZWJraXRGbGV4QWxpZ246Ci0gICAgICAgIHZhbGlkUHJpbWl0aXZlID0gaWQgPT0gQ1NTVmFsdWVT
dGFydCB8fCBpZCA9PSBDU1NWYWx1ZUVuZCB8fCBpZCA9PSBDU1NWYWx1ZUNlbnRlciB8fCBpZCA9
PSBDU1NWYWx1ZUJhc2VsaW5lIHx8IGlkID09IENTU1ZhbHVlU3RyZXRjaDsKLSAgICAgICAgYnJl
YWs7Ci0gICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdEZsZXhJdGVtQWxpZ246Ci0gICAgICAgIHZh
bGlkUHJpbWl0aXZlID0gaWQgPT0gQ1NTVmFsdWVBdXRvIHx8IGlkID09IENTU1ZhbHVlU3RhcnQg
fHwgaWQgPT0gQ1NTVmFsdWVFbmQgfHwgaWQgPT0gQ1NTVmFsdWVDZW50ZXIgfHwgaWQgPT0gQ1NT
VmFsdWVCYXNlbGluZSB8fCBpZCA9PSBDU1NWYWx1ZVN0cmV0Y2g7Ci0gICAgICAgIGJyZWFrOwot
ICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRGbGV4RGlyZWN0aW9uOgotICAgICAgICB2YWxpZFBy
aW1pdGl2ZSA9IGlkID09IENTU1ZhbHVlUm93IHx8IGlkID09IENTU1ZhbHVlUm93UmV2ZXJzZSB8
fCBpZCA9PSBDU1NWYWx1ZUNvbHVtbiB8fCBpZCA9PSBDU1NWYWx1ZUNvbHVtblJldmVyc2U7Ci0g
ICAgICAgIGJyZWFrOwogICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRGbGV4V3JhcDoKICAgICAg
ICAgdmFsaWRQcmltaXRpdmUgPSBpZCA9PSBDU1NWYWx1ZU5vbmUgfHwgaWQgPT0gQ1NTVmFsdWVX
cmFwIHx8IGlkID09IENTU1ZhbHVlV3JhcFJldmVyc2U7CiAgICAgICAgIGJyZWFrOwpAQCAtMTcz
MCwyMiArMTk3NiwxMiBAQCBib29sIENTU1BhcnNlcjo6cGFyc2VWYWx1ZShpbnQgcHJvcElkLCBi
b29sIGltcG9ydGFudCkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENTU1By
b3BlcnR5V2Via2l0TWFycXVlZVN0eWxlLCBDU1NQcm9wZXJ0eVdlYmtpdE1hcnF1ZWVTcGVlZCB9
OwogICAgICAgICByZXR1cm4gcGFyc2VTaG9ydGhhbmQocHJvcElkLCBwcm9wZXJ0aWVzLCA1LCBp
bXBvcnRhbnQpOwogICAgIH0KLSAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0TWFycXVlZURpcmVj
dGlvbjoKLSAgICAgICAgaWYgKGlkID09IENTU1ZhbHVlRm9yd2FyZHMgfHwgaWQgPT0gQ1NTVmFs
dWVCYWNrd2FyZHMgfHwgaWQgPT0gQ1NTVmFsdWVBaGVhZCB8fAotICAgICAgICAgICAgaWQgPT0g
Q1NTVmFsdWVSZXZlcnNlIHx8IGlkID09IENTU1ZhbHVlTGVmdCB8fCBpZCA9PSBDU1NWYWx1ZVJp
Z2h0IHx8IGlkID09IENTU1ZhbHVlRG93biB8fAotICAgICAgICAgICAgaWQgPT0gQ1NTVmFsdWVV
cCB8fCBpZCA9PSBDU1NWYWx1ZUF1dG8pCi0gICAgICAgICAgICB2YWxpZFByaW1pdGl2ZSA9IHRy
dWU7Ci0gICAgICAgIGJyZWFrOwogICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRNYXJxdWVlSW5j
cmVtZW50OgogICAgICAgICBpZiAoaWQgPT0gQ1NTVmFsdWVTbWFsbCB8fCBpZCA9PSBDU1NWYWx1
ZUxhcmdlIHx8IGlkID09IENTU1ZhbHVlTWVkaXVtKQogICAgICAgICAgICAgdmFsaWRQcmltaXRp
dmUgPSB0cnVlOwogICAgICAgICBlbHNlCiAgICAgICAgICAgICB2YWxpZFByaW1pdGl2ZSA9IHZh
bGlkVW5pdCh2YWx1ZSwgRkxlbmd0aCB8IEZQZXJjZW50LCBtX3N0cmljdCk7CiAgICAgICAgIGJy
ZWFrOwotICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRNYXJxdWVlU3R5bGU6Ci0gICAgICAgIGlm
IChpZCA9PSBDU1NWYWx1ZU5vbmUgfHwgaWQgPT0gQ1NTVmFsdWVTbGlkZSB8fCBpZCA9PSBDU1NW
YWx1ZVNjcm9sbCB8fCBpZCA9PSBDU1NWYWx1ZUFsdGVybmF0ZSkKLSAgICAgICAgICAgIHZhbGlk
UHJpbWl0aXZlID0gdHJ1ZTsKLSAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBDU1NQcm9wZXJ0eVdl
YmtpdE1hcnF1ZWVSZXBldGl0aW9uOgogICAgICAgICBpZiAoaWQgPT0gQ1NTVmFsdWVJbmZpbml0
ZSkKICAgICAgICAgICAgIHZhbGlkUHJpbWl0aXZlID0gdHJ1ZTsKQEAgLTE3NzAsMjMgKzIwMDYs
NiBAQCBib29sIENTU1BhcnNlcjo6cGFyc2VWYWx1ZShpbnQgcHJvcElkLCBib29sIGltcG9ydGFu
dCkKICAgICAgICAgaWYgKGNzc1JlZ2lvbnNFbmFibGVkKCkgJiYgKGlkID09IENTU1ZhbHVlQXV0
byB8fCBpZCA9PSBDU1NWYWx1ZUJyZWFrKSkKICAgICAgICAgICAgIHZhbGlkUHJpbWl0aXZlID0g
dHJ1ZTsKICAgICAgICAgYnJlYWs7Ci0KLSAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0VXNlckRy
YWc6IC8vIGF1dG8gfCBub25lIHwgZWxlbWVudAotICAgICAgICBpZiAoaWQgPT0gQ1NTVmFsdWVB
dXRvIHx8IGlkID09IENTU1ZhbHVlTm9uZSB8fCBpZCA9PSBDU1NWYWx1ZUVsZW1lbnQpCi0gICAg
ICAgICAgICB2YWxpZFByaW1pdGl2ZSA9IHRydWU7Ci0gICAgICAgIGJyZWFrOwotICAgIGNhc2Ug
Q1NTUHJvcGVydHlXZWJraXRVc2VyTW9kaWZ5OiAvLyByZWFkLW9ubHkgfCByZWFkLXdyaXRlCi0g
ICAgICAgIGlmIChpZCA9PSBDU1NWYWx1ZVJlYWRPbmx5IHx8IGlkID09IENTU1ZhbHVlUmVhZFdy
aXRlIHx8IGlkID09IENTU1ZhbHVlUmVhZFdyaXRlUGxhaW50ZXh0T25seSkKLSAgICAgICAgICAg
IHZhbGlkUHJpbWl0aXZlID0gdHJ1ZTsKLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBDU1NQcm9w
ZXJ0eVdlYmtpdFVzZXJTZWxlY3Q6IC8vIGF1dG8gfCBub25lIHwgdGV4dAotICAgICAgICBpZiAo
aWQgPT0gQ1NTVmFsdWVBdXRvIHx8IGlkID09IENTU1ZhbHVlTm9uZSB8fCBpZCA9PSBDU1NWYWx1
ZVRleHQpCi0gICAgICAgICAgICB2YWxpZFByaW1pdGl2ZSA9IHRydWU7Ci0gICAgICAgIGJyZWFr
OwotICAgIGNhc2UgQ1NTUHJvcGVydHlUZXh0T3ZlcmZsb3c6IC8vIGNsaXAgfCBlbGxpcHNpcwot
ICAgICAgICBpZiAoaWQgPT0gQ1NTVmFsdWVDbGlwIHx8IGlkID09IENTU1ZhbHVlRWxsaXBzaXMp
Ci0gICAgICAgICAgICB2YWxpZFByaW1pdGl2ZSA9IHRydWU7Ci0gICAgICAgIGJyZWFrOwogICAg
IGNhc2UgQ1NTUHJvcGVydHlXZWJraXRUcmFuc2Zvcm06CiAgICAgICAgIGlmIChpZCA9PSBDU1NW
YWx1ZU5vbmUpCiAgICAgICAgICAgICB2YWxpZFByaW1pdGl2ZSA9IHRydWU7CkBAIC0xODE3LDE4
ICsyMDM2LDYgQEAgYm9vbCBDU1NQYXJzZXI6OnBhcnNlVmFsdWUoaW50IHByb3BJZCwgYm9vbCBp
bXBvcnRhbnQpCiAgICAgICAgIH0KICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KLSAgICBj
YXNlIENTU1Byb3BlcnR5V2Via2l0VHJhbnNmb3JtU3R5bGU6Ci0gICAgICAgIGlmICh2YWx1ZS0+
aWQgPT0gQ1NTVmFsdWVGbGF0IHx8IHZhbHVlLT5pZCA9PSBDU1NWYWx1ZVByZXNlcnZlM2QpCi0g
ICAgICAgICAgICB2YWxpZFByaW1pdGl2ZSA9IHRydWU7Ci0gICAgICAgIGJyZWFrOwotICAgIGNh
c2UgQ1NTUHJvcGVydHlXZWJraXRCYWNrZmFjZVZpc2liaWxpdHk6Ci0gICAgICAgIGlmICh2YWx1
ZS0+aWQgPT0gQ1NTVmFsdWVWaXNpYmxlIHx8IHZhbHVlLT5pZCA9PSBDU1NWYWx1ZUhpZGRlbikK
LSAgICAgICAgICAgIHZhbGlkUHJpbWl0aXZlID0gdHJ1ZTsKLSAgICAgICAgYnJlYWs7Ci0gICAg
Y2FzZSBDU1NQcm9wZXJ0eVdlYmtpdFByaW50Q29sb3JBZGp1c3Q6Ci0gICAgICAgIGlmICh2YWx1
ZS0+aWQgPT0gQ1NTVmFsdWVFeGFjdCB8fCB2YWx1ZS0+aWQgPT0gQ1NTVmFsdWVFY29ub215KQot
ICAgICAgICAgICAgdmFsaWRQcmltaXRpdmUgPSB0cnVlOwotICAgICAgICBicmVhazsKICAgICBj
YXNlIENTU1Byb3BlcnR5V2Via2l0UGVyc3BlY3RpdmU6CiAgICAgICAgIGlmIChpZCA9PSBDU1NW
YWx1ZU5vbmUpCiAgICAgICAgICAgICB2YWxpZFByaW1pdGl2ZSA9IHRydWU7CkBAIC0xOTA2LDMy
ICsyMTEzLDYgQEAgYm9vbCBDU1NQYXJzZXI6OnBhcnNlVmFsdWUoaW50IHByb3BJZCwgYm9vbCBp
bXBvcnRhbnQpCiAgICAgICAgIH0KICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KLSAgICBj
YXNlIENTU1Byb3BlcnR5V2Via2l0TWFyZ2luQmVmb3JlQ29sbGFwc2U6Ci0gICAgY2FzZSBDU1NQ
cm9wZXJ0eVdlYmtpdE1hcmdpbkFmdGVyQ29sbGFwc2U6Ci0gICAgY2FzZSBDU1NQcm9wZXJ0eVdl
YmtpdE1hcmdpblRvcENvbGxhcHNlOgotICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRNYXJnaW5C
b3R0b21Db2xsYXBzZToKLSAgICAgICAgaWYgKGlkID09IENTU1ZhbHVlQ29sbGFwc2UgfHwgaWQg
PT0gQ1NTVmFsdWVTZXBhcmF0ZSB8fCBpZCA9PSBDU1NWYWx1ZURpc2NhcmQpCi0gICAgICAgICAg
ICB2YWxpZFByaW1pdGl2ZSA9IHRydWU7Ci0gICAgICAgIGJyZWFrOwotICAgIGNhc2UgQ1NTUHJv
cGVydHlUZXh0TGluZVRocm91Z2hNb2RlOgotICAgIGNhc2UgQ1NTUHJvcGVydHlUZXh0T3Zlcmxp
bmVNb2RlOgotICAgIGNhc2UgQ1NTUHJvcGVydHlUZXh0VW5kZXJsaW5lTW9kZToKLSAgICAgICAg
aWYgKGlkID09IENTU1ZhbHVlQ29udGludW91cyB8fCBpZCA9PSBDU1NWYWx1ZVNraXBXaGl0ZVNw
YWNlKQotICAgICAgICAgICAgdmFsaWRQcmltaXRpdmUgPSB0cnVlOwotICAgICAgICBicmVhazsK
LSAgICBjYXNlIENTU1Byb3BlcnR5VGV4dExpbmVUaHJvdWdoU3R5bGU6Ci0gICAgY2FzZSBDU1NQ
cm9wZXJ0eVRleHRPdmVybGluZVN0eWxlOgotICAgIGNhc2UgQ1NTUHJvcGVydHlUZXh0VW5kZXJs
aW5lU3R5bGU6Ci0gICAgICAgIGlmIChpZCA9PSBDU1NWYWx1ZU5vbmUgfHwgaWQgPT0gQ1NTVmFs
dWVTb2xpZCB8fCBpZCA9PSBDU1NWYWx1ZURvdWJsZSB8fAotICAgICAgICAgICAgaWQgPT0gQ1NT
VmFsdWVEYXNoZWQgfHwgaWQgPT0gQ1NTVmFsdWVEb3REYXNoIHx8IGlkID09IENTU1ZhbHVlRG90
RG90RGFzaCB8fAotICAgICAgICAgICAgaWQgPT0gQ1NTVmFsdWVXYXZlKQotICAgICAgICAgICAg
dmFsaWRQcmltaXRpdmUgPSB0cnVlOwotICAgICAgICBicmVhazsKLSAgICBjYXNlIENTU1Byb3Bl
cnR5VGV4dFJlbmRlcmluZzogLy8gYXV0byB8IG9wdGltaXplU3BlZWQgfCBvcHRpbWl6ZUxlZ2li
aWxpdHkgfCBnZW9tZXRyaWNQcmVjaXNpb24KLSAgICAgICAgaWYgKGlkID09IENTU1ZhbHVlQXV0
byB8fCBpZCA9PSBDU1NWYWx1ZU9wdGltaXplc3BlZWQgfHwgaWQgPT0gQ1NTVmFsdWVPcHRpbWl6
ZWxlZ2liaWxpdHkKLSAgICAgICAgICAgIHx8IGlkID09IENTU1ZhbHVlR2VvbWV0cmljcHJlY2lz
aW9uKQotICAgICAgICAgICAgdmFsaWRQcmltaXRpdmUgPSB0cnVlOwotICAgICAgICBicmVhazsK
ICAgICBjYXNlIENTU1Byb3BlcnR5VGV4dExpbmVUaHJvdWdoV2lkdGg6CiAgICAgY2FzZSBDU1NQ
cm9wZXJ0eVRleHRPdmVybGluZVdpZHRoOgogICAgIGNhc2UgQ1NTUHJvcGVydHlUZXh0VW5kZXJs
aW5lV2lkdGg6CkBAIC0xOTQxLDEwICsyMTIyLDYgQEAgYm9vbCBDU1NQYXJzZXI6OnBhcnNlVmFs
dWUoaW50IHByb3BJZCwgYm9vbCBpbXBvcnRhbnQpCiAgICAgICAgIGVsc2UKICAgICAgICAgICAg
IHZhbGlkUHJpbWl0aXZlID0gIWlkICYmIHZhbGlkVW5pdCh2YWx1ZSwgRk51bWJlciB8IEZMZW5n
dGggfCBGUGVyY2VudCwgbV9zdHJpY3QpOwogICAgICAgICBicmVhazsKLSAgICBjYXNlIENTU1By
b3BlcnR5UmVzaXplOiAvLyBub25lIHwgYm90aCB8IGhvcml6b250YWwgfCB2ZXJ0aWNhbCB8IGF1
dG8KLSAgICAgICAgaWYgKGlkID09IENTU1ZhbHVlTm9uZSB8fCBpZCA9PSBDU1NWYWx1ZUJvdGgg
fHwgaWQgPT0gQ1NTVmFsdWVIb3Jpem9udGFsIHx8IGlkID09IENTU1ZhbHVlVmVydGljYWwgfHwg
aWQgPT0gQ1NTVmFsdWVBdXRvKQotICAgICAgICAgICAgdmFsaWRQcmltaXRpdmUgPSB0cnVlOwot
ICAgICAgICBicmVhazsKICAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0Q29sdW1uQ291bnQ6CiAg
ICAgICAgIGlmIChpZCA9PSBDU1NWYWx1ZUF1dG8pCiAgICAgICAgICAgICB2YWxpZFByaW1pdGl2
ZSA9IHRydWU7CkBAIC0xOTczLDE3ICsyMTUwLDYgQEAgYm9vbCBDU1NQYXJzZXI6OnBhcnNlVmFs
dWUoaW50IHByb3BJZCwgYm9vbCBpbXBvcnRhbnQpCiAgICAgICAgIGVsc2UgLy8gQWx3YXlzIHBh
cnNlIHRoaXMgcHJvcGVydHkgaW4gc3RyaWN0IG1vZGUsIHNpbmNlIGl0IHdvdWxkIGJlIGFtYmln
dW91cyBvdGhlcndpc2Ugd2hlbiB1c2VkIGluIHRoZSAnY29sdW1ucycgc2hvcnRoYW5kIHByb3Bl
cnR5LgogICAgICAgICAgICAgdmFsaWRQcmltaXRpdmUgPSB2YWxpZFVuaXQodmFsdWUsIEZMZW5n
dGgsIHRydWUpOwogICAgICAgICBicmVhazsKLSAgICBjYXNlIENTU1Byb3BlcnR5UG9pbnRlckV2
ZW50czoKLSAgICAgICAgLy8gbm9uZSB8IHZpc2libGVQYWludGVkIHwgdmlzaWJsZUZpbGwgfCB2
aXNpYmxlU3Ryb2tlIHwgdmlzaWJsZSB8Ci0gICAgICAgIC8vIHBhaW50ZWQgfCBmaWxsIHwgc3Ry
b2tlIHwgYXV0byB8IGFsbCB8IGluaGVyaXQKLSAgICAgICAgaWYgKGlkID09IENTU1ZhbHVlVmlz
aWJsZSB8fCBpZCA9PSBDU1NWYWx1ZU5vbmUgfHwgaWQgPT0gQ1NTVmFsdWVBbGwgfHwgaWQgPT0g
Q1NTVmFsdWVBdXRvIHx8Ci0gICAgICAgICAgICAoaWQgPj0gQ1NTVmFsdWVWaXNpYmxlcGFpbnRl
ZCAmJiBpZCA8PSBDU1NWYWx1ZVN0cm9rZSkpCi0gICAgICAgICAgICB2YWxpZFByaW1pdGl2ZSA9
IHRydWU7Ci0gICAgICAgIGJyZWFrOwotICAgIGNhc2UgQ1NTUHJvcGVydHlJbWFnZVJlbmRlcmlu
ZzogLy8gYXV0byB8IG9wdGltaXplQ29udHJhc3QKLSAgICAgICAgaWYgKGlkID09IENTU1ZhbHVl
QXV0byB8fCBpZCA9PSBDU1NWYWx1ZVdlYmtpdE9wdGltaXplQ29udHJhc3QpCi0gICAgICAgICAg
ICB2YWxpZFByaW1pdGl2ZSA9IHRydWU7Ci0gICAgICAgIGJyZWFrOwogICAgIC8vIEVuZCBvZiBD
U1MzIHByb3BlcnRpZXMKIAogICAgIC8vIEFwcGxlIHNwZWNpZmljIHByb3BlcnRpZXMuICBUaGVz
ZSB3aWxsIG5ldmVyIGJlIHN0YW5kYXJkaXplZCBhbmQgYXJlIHB1cmVseSB0bwpAQCAtMTk5Myw0
NCArMjE1OSwxNiBAQCBib29sIENTU1BhcnNlcjo6cGFyc2VWYWx1ZShpbnQgcHJvcElkLCBib29s
IGltcG9ydGFudCkKICAgICAgICAgLy8gV2hlbiBzcGVjaWZ5aW5nIGVpdGhlciB0eXBlIG9mIHVu
aXQsIHJlcXVpcmUgbm9uLW5lZ2F0aXZlIGludGVnZXJzCiAgICAgICAgIHZhbGlkUHJpbWl0aXZl
ID0gKCFpZCAmJiAodmFsdWUtPnVuaXQgPT0gQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19QRVJDRU5U
QUdFIHx8IHZhbHVlLT5mVmFsdWUpICYmIHZhbGlkVW5pdCh2YWx1ZSwgRkludGVnZXIgfCBGUGVy
Y2VudCB8IEZOb25OZWcsIGZhbHNlKSk7CiAgICAgICAgIGJyZWFrOwotICAgIGNhc2UgQ1NTUHJv
cGVydHlXZWJraXRUZXh0U2l6ZUFkanVzdDoKLSAgICAgICAgaWYgKGlkID09IENTU1ZhbHVlQXV0
byB8fCBpZCA9PSBDU1NWYWx1ZU5vbmUpCi0gICAgICAgICAgICB2YWxpZFByaW1pdGl2ZSA9IHRy
dWU7Ci0gICAgICAgIGJyZWFrOwotICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRSdGxPcmRlcmlu
ZzoKLSAgICAgICAgaWYgKGlkID09IENTU1ZhbHVlTG9naWNhbCB8fCBpZCA9PSBDU1NWYWx1ZVZp
c3VhbCkKLSAgICAgICAgICAgIHZhbGlkUHJpbWl0aXZlID0gdHJ1ZTsKLSAgICAgICAgYnJlYWs7
CiAKICAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0Rm9udFNpemVEZWx0YTogICAgICAgICAgIC8v
IDxsZW5ndGg+CiAgICAgICAgIHZhbGlkUHJpbWl0aXZlID0gdmFsaWRVbml0KHZhbHVlLCBGTGVu
Z3RoLCBtX3N0cmljdCk7CiAgICAgICAgIGJyZWFrOwogCi0gICAgY2FzZSBDU1NQcm9wZXJ0eVdl
YmtpdE5ic3BNb2RlOiAgICAgLy8gbm9ybWFsIHwgc3BhY2UKLSAgICAgICAgaWYgKGlkID09IENT
U1ZhbHVlTm9ybWFsIHx8IGlkID09IENTU1ZhbHVlU3BhY2UpCi0gICAgICAgICAgICB2YWxpZFBy
aW1pdGl2ZSA9IHRydWU7Ci0gICAgICAgIGJyZWFrOwotCi0gICAgY2FzZSBDU1NQcm9wZXJ0eVdl
YmtpdExpbmVCcmVhazogICAvLyBub3JtYWwgfCBhZnRlci13aGl0ZS1zcGFjZQotICAgICAgICBp
ZiAoaWQgPT0gQ1NTVmFsdWVOb3JtYWwgfHwgaWQgPT0gQ1NTVmFsdWVBZnRlcldoaXRlU3BhY2Up
Ci0gICAgICAgICAgICB2YWxpZFByaW1pdGl2ZSA9IHRydWU7Ci0gICAgICAgIGJyZWFrOwotCi0g
ICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdE1hdGNoTmVhcmVzdE1haWxCbG9ja3F1b3RlQ29sb3I6
ICAgLy8gbm9ybWFsIHwgbWF0Y2gKLSAgICAgICAgaWYgKGlkID09IENTU1ZhbHVlTm9ybWFsIHx8
IGlkID09IENTU1ZhbHVlTWF0Y2gpCi0gICAgICAgICAgICB2YWxpZFByaW1pdGl2ZSA9IHRydWU7
Ci0gICAgICAgIGJyZWFrOwotCiAgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdEhpZ2hsaWdodDoK
ICAgICAgICAgaWYgKGlkID09IENTU1ZhbHVlTm9uZSB8fCB2YWx1ZS0+dW5pdCA9PSBDU1NQcmlt
aXRpdmVWYWx1ZTo6Q1NTX1NUUklORykKICAgICAgICAgICAgIHZhbGlkUHJpbWl0aXZlID0gdHJ1
ZTsKICAgICAgICAgYnJlYWs7CiAKLSAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0SHlwaGVuczoK
LSAgICAgICAgaWYgKGlkID09IENTU1ZhbHVlTm9uZSB8fCBpZCA9PSBDU1NWYWx1ZU1hbnVhbCB8
fCBpZCA9PSBDU1NWYWx1ZUF1dG8pCi0gICAgICAgICAgICB2YWxpZFByaW1pdGl2ZSA9IHRydWU7
Ci0gICAgICAgIGJyZWFrOwotCiAgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdEh5cGhlbmF0ZUNo
YXJhY3RlcjoKICAgICAgICAgaWYgKGlkID09IENTU1ZhbHVlQXV0byB8fCB2YWx1ZS0+dW5pdCA9
PSBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX1NUUklORykKICAgICAgICAgICAgIHZhbGlkUHJpbWl0
aXZlID0gdHJ1ZTsKQEAgLTIwNTgsMzYgKzIxOTYsMTEgQEAgYm9vbCBDU1NQYXJzZXI6OnBhcnNl
VmFsdWUoaW50IHByb3BJZCwgYm9vbCBpbXBvcnRhbnQpCiAgICAgICAgICAgICB9CiAgICAgICAg
IH0KICAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdExpbmVTbmFwOgot
ICAgICAgICBpZiAoaWQgPT0gQ1NTVmFsdWVOb25lIHx8IGlkID09IENTU1ZhbHVlQmFzZWxpbmUg
fHwgaWQgPT0gQ1NTVmFsdWVDb250YWluKQotICAgICAgICAgICAgdmFsaWRQcmltaXRpdmUgPSB0
cnVlOwotICAgICAgICBicmVhazsKLSAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0TGluZUFsaWdu
OgotICAgICAgICBpZiAoaWQgPT0gQ1NTVmFsdWVOb25lIHx8IGlkID09IENTU1ZhbHVlRWRnZXMp
Ci0gICAgICAgICAgICB2YWxpZFByaW1pdGl2ZSA9IHRydWU7Ci0gICAgICAgIGJyZWFrOwogICAg
IGNhc2UgQ1NTUHJvcGVydHlXZWJraXRMb2NhbGU6CiAgICAgICAgIGlmIChpZCA9PSBDU1NWYWx1
ZUF1dG8gfHwgdmFsdWUtPnVuaXQgPT0gQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19TVFJJTkcpCiAg
ICAgICAgICAgICB2YWxpZFByaW1pdGl2ZSA9IHRydWU7CiAgICAgICAgIGJyZWFrOwogCi0gICAg
Y2FzZSBDU1NQcm9wZXJ0eVdlYmtpdEJvcmRlckZpdDoKLSAgICAgICAgaWYgKGlkID09IENTU1Zh
bHVlQm9yZGVyIHx8IGlkID09IENTU1ZhbHVlTGluZXMpCi0gICAgICAgICAgICB2YWxpZFByaW1p
dGl2ZSA9IHRydWU7Ci0gICAgICAgIGJyZWFrOwotCi0gICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtp
dFRleHRTZWN1cml0eToKLSAgICAgICAgLy8gZGlzYyB8IGNpcmNsZSB8IHNxdWFyZSB8IG5vbmUg
fCBpbmhlcml0Ci0gICAgICAgIGlmIChpZCA9PSBDU1NWYWx1ZURpc2MgfHwgaWQgPT0gQ1NTVmFs
dWVDaXJjbGUgfHwgaWQgPT0gQ1NTVmFsdWVTcXVhcmV8fCBpZCA9PSBDU1NWYWx1ZU5vbmUpCi0g
ICAgICAgICAgICB2YWxpZFByaW1pdGl2ZSA9IHRydWU7Ci0gICAgICAgIGJyZWFrOwotCi0gICAg
Y2FzZSBDU1NQcm9wZXJ0eVdlYmtpdEZvbnRTbW9vdGhpbmc6Ci0gICAgICAgIGlmIChpZCA9PSBD
U1NWYWx1ZUF1dG8gfHwgaWQgPT0gQ1NTVmFsdWVOb25lCi0gICAgICAgICAgICB8fCBpZCA9PSBD
U1NWYWx1ZUFudGlhbGlhc2VkIHx8IGlkID09IENTU1ZhbHVlU3VicGl4ZWxBbnRpYWxpYXNlZCkK
LSAgICAgICAgICAgIHZhbGlkUHJpbWl0aXZlID0gdHJ1ZTsKLSAgICAgICAgYnJlYWs7Ci0KICNp
ZiBFTkFCTEUoREFTSEJPQVJEX1NVUFBPUlQpCiAgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdERh
c2hib2FyZFJlZ2lvbjogLy8gPGRhc2hib2FyZC1yZWdpb24+IHwgPGRhc2hib2FyZC1yZWdpb24+
CiAgICAgICAgIGlmICh2YWx1ZS0+dW5pdCA9PSBDU1NQYXJzZXJWYWx1ZTo6RnVuY3Rpb24gfHwg
aWQgPT0gQ1NTVmFsdWVOb25lKQpAQCAtMjEwOSwxMyArMjIyMiw2IEBAIGJvb2wgQ1NTUGFyc2Vy
OjpwYXJzZVZhbHVlKGludCBwcm9wSWQsIGJvb2wgaW1wb3J0YW50KQogICAgICAgICBicmVhazsK
ICNlbmRpZgogCi0jaWYgRU5BQkxFKE9WRVJGTE9XX1NDUk9MTElORykKLSAgICBjYXNlIENTU1By
b3BlcnR5V2Via2l0T3ZlcmZsb3dTY3JvbGxpbmc6Ci0gICAgICAgIGlmIChpZCA9PSBDU1NWYWx1
ZUF1dG8gfHwgaWQgPT0gQ1NTVmFsdWVUb3VjaCkKLSAgICAgICAgICAgIHZhbGlkUHJpbWl0aXZl
ID0gdHJ1ZTsKLSAgICAgICAgYnJlYWs7Ci0jZW5kaWYKLQogICAgICAgICAvKiBzaG9ydGhhbmQg
cHJvcGVydGllcyAqLwogICAgIGNhc2UgQ1NTUHJvcGVydHlCYWNrZ3JvdW5kOiB7CiAgICAgICAg
IC8vIFBvc2l0aW9uIG11c3QgY29tZSBiZWZvcmUgY29sb3IgaW4gdGhpcyBhcnJheSBiZWNhdXNl
IGEgcGxhaW4gb2xkICIwIiBpcyBhIGxlZ2FsIGNvbG9yCkBAIC0yMjg1LDI2ICsyMzkxLDExIEBA
IGJvb2wgQ1NTUGFyc2VyOjpwYXJzZVZhbHVlKGludCBwcm9wSWQsIGJvb2wgaW1wb3J0YW50KQog
ICAgIGNhc2UgQ1NTUHJvcGVydHlUZXh0VW5kZXJsaW5lOgogICAgICAgICByZXR1cm4gZmFsc2U7
CiAgICAgLy8gQ1NTIFRleHQgTGF5b3V0IE1vZHVsZSBMZXZlbCAzOiBWZXJ0aWNhbCB3cml0aW5n
IHN1cHBvcnQKLSAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0V3JpdGluZ01vZGU6Ci0gICAgICAg
IGlmIChpZCA+PSBDU1NWYWx1ZUhvcml6b250YWxUYiAmJiBpZCA8PSBDU1NWYWx1ZUhvcml6b250
YWxCdCkKLSAgICAgICAgICAgIHZhbGlkUHJpbWl0aXZlID0gdHJ1ZTsKLSAgICAgICAgYnJlYWs7
Ci0KLSAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0VGV4dENvbWJpbmU6Ci0gICAgICAgIGlmIChp
ZCA9PSBDU1NWYWx1ZU5vbmUgfHwgaWQgPT0gQ1NTVmFsdWVIb3Jpem9udGFsKQotICAgICAgICAg
ICAgdmFsaWRQcmltaXRpdmUgPSB0cnVlOwotICAgICAgICBicmVhazsKLQogICAgIGNhc2UgQ1NT
UHJvcGVydHlXZWJraXRUZXh0RW1waGFzaXM6IHsKICAgICAgICAgY29uc3QgaW50IHByb3BlcnRp
ZXNbXSA9IHsgQ1NTUHJvcGVydHlXZWJraXRUZXh0RW1waGFzaXNTdHlsZSwgQ1NTUHJvcGVydHlX
ZWJraXRUZXh0RW1waGFzaXNDb2xvciB9OwogICAgICAgICByZXR1cm4gcGFyc2VTaG9ydGhhbmQo
cHJvcElkLCBwcm9wZXJ0aWVzLCBXVEZfQVJSQVlfTEVOR1RIKHByb3BlcnRpZXMpLCBpbXBvcnRh
bnQpOwogICAgIH0KIAotICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRUZXh0RW1waGFzaXNQb3Np
dGlvbjoKLSAgICAgICAgaWYgKGlkID09IENTU1ZhbHVlT3ZlciB8fCBpZCA9PSBDU1NWYWx1ZVVu
ZGVyKQotICAgICAgICAgICAgdmFsaWRQcmltaXRpdmUgPSB0cnVlOwotICAgICAgICBicmVhazsK
LQogICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRUZXh0RW1waGFzaXNTdHlsZToKICAgICAgICAg
cmV0dXJuIHBhcnNlVGV4dEVtcGhhc2lzU3R5bGUoaW1wb3J0YW50KTsKIApAQCAtMjMyNywxMSAr
MjQxOCw2IEBAIGJvb2wgQ1NTUGFyc2VyOjpwYXJzZVZhbHVlKGludCBwcm9wSWQsIGJvb2wgaW1w
b3J0YW50KQogICAgICAgICAgICAgcmV0dXJuIHBhcnNlRm9udEZlYXR1cmVTZXR0aW5ncyhpbXBv
cnRhbnQpOwogICAgICAgICBicmVhazsKIAotICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRGb250
S2VybmluZzoKLSAgICAgICAgaWYgKGlkID09IENTU1ZhbHVlQXV0byB8fCBpZCA9PSBDU1NWYWx1
ZU5vcm1hbCB8fCBpZCA9PSBDU1NWYWx1ZU5vbmUpCi0gICAgICAgICAgICB2YWxpZFByaW1pdGl2
ZSA9IHRydWU7Ci0gICAgICAgIGJyZWFrOwotCiAgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdEZv
bnRWYXJpYW50TGlnYXR1cmVzOgogICAgICAgICBpZiAoaWQgPT0gQ1NTVmFsdWVOb3JtYWwpCiAg
ICAgICAgICAgICB2YWxpZFByaW1pdGl2ZSA9IHRydWU7CkBAIC0yMzQ2LDE1ICsyNDMyLDYgQEAg
Ym9vbCBDU1NQYXJzZXI6OnBhcnNlVmFsdWUoaW50IHByb3BJZCwgYm9vbCBpbXBvcnRhbnQpCiAg
ICAgICAgIGVsc2UgaWYgKHZhbHVlLT51bml0ID09IENTU1BhcnNlclZhbHVlOjpGdW5jdGlvbikK
ICAgICAgICAgICAgIHJldHVybiBwYXJzZVdyYXBTaGFwZSgocHJvcElkID09IENTU1Byb3BlcnR5
V2Via2l0V3JhcFNoYXBlSW5zaWRlKSwgaW1wb3J0YW50KTsKICAgICAgICAgYnJlYWs7Ci0gICAg
Y2FzZSBDU1NQcm9wZXJ0eVdlYmtpdFdyYXBGbG93OgotICAgICAgICBpZiAoaWQgPT0gQ1NTVmFs
dWVBdXRvIHx8IGlkID09IENTU1ZhbHVlQm90aCB8fCBpZCA9PSBDU1NWYWx1ZUxlZnQgfHwgaWQg
PT0gQ1NTVmFsdWVSaWdodCB8fCBpZCA9PSBDU1NWYWx1ZU1heGltdW0gfHwgaWQgPT0gQ1NTVmFs
dWVDbGVhcikKLSAgICAgICAgICAgIHZhbGlkUHJpbWl0aXZlID0gdHJ1ZTsKLSAgICAgICAgYnJl
YWs7Ci0KLSAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0V3JhcFRocm91Z2g6Ci0gICAgICAgIGlm
IChpZCA9PSBDU1NWYWx1ZVdyYXAgfHwgaWQgPT0gQ1NTVmFsdWVOb25lKQotICAgICAgICAgICAg
dmFsaWRQcmltaXRpdmUgPSB0cnVlOwotICAgICAgICBicmVhazsKICAgICBjYXNlIENTU1Byb3Bl
cnR5V2Via2l0V3JhcE1hcmdpbjoKICAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0V3JhcFBhZGRp
bmc6CiAgICAgICAgIHZhbGlkUHJpbWl0aXZlID0gKCFpZCAmJiB2YWxpZFVuaXQodmFsdWUsIEZM
ZW5ndGggfCBGTm9uTmVnLCBtX3N0cmljdCkpOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>131677</attachid>
            <date>2012-03-13 11:22:45 -0700</date>
            <delta_ts>2012-03-13 11:33:24 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-80874-20120313152228.patch</filename>
            <type>text/plain</type>
            <size>48723</size>
            <attacher name="Alexis Menard (darktears)">menard</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTEwNDcyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNjBlYjA1MmZmMjkzZTJm
MTIzNDQxNGRiNTM5MzgxYjdmMmVjYzkyYS4uMzk0OTk1ZjI3MDE2OGQxNTIyMzhmZGFlMjczNTQ0
Y2Q4NGM4NDEwNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMzIEBACisyMDEyLTAzLTEzICBBbGV4
aXMgTWVuYXJkICA8YWxleGlzLm1lbmFyZEBvcGVuYm9zc2Eub3JnPgorCisgICAgICAgIEltcGxl
bWVudCBhIGZhc3QgcGF0aCB3aGVuIHNldHRpbmcgQ1NTIHByb3BlcnRpZXMgd2l0aCBrZXl3b3Jk
cyBmcm9tIEpTLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9ODA4NzQKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICBJbXBsZW1lbnQgYSBmYXN0IHBhdGggZm9yIHByb3BlcnRpZXMgd2l0aCBrZXl3b3Jkcy4gVGhl
IGlkZWEgaXMgdG8gYXZvaWQKKyAgICAgICAgY3JlYXRpbmcgdGhlIENTUyBwYXJzZXIgYW5kIHJ1
biBhbGwgdGhlIG1hY2hpbmVyeSBmb3IgaXQuIFRoaXMgcGF0Y2gKKyAgICAgICAgYWRkcyBhIHN0
YXRpYyBtYXAgd2hlcmUgYWxsIHRoZSBwcm9wZXJ0aWVzIGFjY2VwdGluZyBrZXl3b3JkcyBhcyB2
YWx1ZSBhcmUKKyAgICAgICAgZGVzY3JpYmVkIChlLmcuIHBvc3Rpb24gOiBmaXhlZCkuIFdoZW4g
SlMgY2FsbHMgcGFyc2VWYWx1ZSB3ZSBjaGVjayBpZiB3ZQorICAgICAgICBjYW4gdXNlIHRoZSBm
YXN0IHBhdGggdG8gYWRkIHRoZSBjcmVhdGVkIHByb3BlcnR5IGRpcmVjdGx5IGluIHRoZSBkZWNs
YXJhdGlvbi4KKyAgICAgICAgRm9yIHRoZSBzYWtlIG9mIG1haW50ZW5hbmNlIHRoZSBwYXJzZVZh
bHVlIGZ1bnRpb24gdXNlZCBieSBDU1NHcmFtbWFyLnkgaXMgdXNpbmcKKyAgICAgICAgdGhpcyBt
YXAuCisKKyAgICAgICAgTm8gbmV3IHRlc3RzIDogZXhpc3RpbmdzIG9uZXMgc2hvdWxkIGNvdmVy
LgorCisgICAgICAgICogY3NzL0NTU1BhcnNlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjppc0tl
eXdvcmRQcm9wZXJ0eUlEKToKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoUHJvcGVydHlN
YXBFbnRyeSk6CisgICAgICAgIChXZWJDb3JlOjpQcm9wZXJ0eU1hcEVudHJ5OjpQcm9wZXJ0eU1h
cEVudHJ5KToKKyAgICAgICAgKFdlYkNvcmU6OlByb3BlcnR5TWFwRW50cnk6Om1hdGNoKToKKyAg
ICAgICAgKEtleXdvcmRQcm9wZXJ0eU1hcEVudHJ5KToKKyAgICAgICAgKFdlYkNvcmU6OktleXdv
cmRQcm9wZXJ0eU1hcEVudHJ5OjpLZXl3b3JkUHJvcGVydHlNYXBFbnRyeSk6CisgICAgICAgIChX
ZWJDb3JlOjpLZXl3b3JkUHJvcGVydHlNYXBFbnRyeTo6bWF0Y2gpOgorICAgICAgICAoV2ViQ29y
ZTo6cHJvcGVydHlGb3JJRCk6CisgICAgICAgIChXZWJDb3JlOjpwYXJzZUtleXdvcmRWYWx1ZSk6
CisgICAgICAgIChXZWJDb3JlOjpDU1NQYXJzZXI6OnBhcnNlVmFsdWUpOgorCiAyMDEyLTAzLTEy
ICBUaW0gSG9ydG9uICA8dGltb3RoeV9ob3J0b25AYXBwbGUuY29tPgogCiAgICAgICAgIEluZmlu
aXRlIHJlcGFpbnQgbG9vcCB3aXRoIFNWR0ltYWdlQ2FjaGUgYW5kIGRlZmVycmVkIHJlcGFpbnQg
dGltZXJzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUGFyc2VyLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2Nzcy9DU1NQYXJzZXIuY3BwCmluZGV4IDNkYzRiYzkxMjAyNTUyYjY2NzU0
ZmI5ZTQ3NmFkNDBkNzAwZDE4ZjAuLjQ0NDcyODA4M2ZlNmVlOTYzY2Q5MmQ5NjU4YjVmYmEzYzA4
ODk0ODIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQYXJzZXIuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQYXJzZXIuY3BwCkBAIC00NzksNiArNDc5LDI5MiBAQCBz
dGF0aWMgYm9vbCBwYXJzZVNpbXBsZUxlbmd0aFZhbHVlKFN0eWxlUHJvcGVydHlTZXQqIGRlY2xh
cmF0aW9uLCBpbnQgcHJvcGVydHlJZAogICAgIHJldHVybiB0cnVlOwogfQogCitzdGF0aWMgaW5s
aW5lIGJvb2wgaXNLZXl3b3JkUHJvcGVydHlJRChpbnQgcHJvcGVydHlJZCkKK3sKKyAgICBzd2l0
Y2ggKHByb3BlcnR5SWQpIHsKKyAgICBjYXNlIENTU1Byb3BlcnR5UG9zaXRpb246CisgICAgY2Fz
ZSBDU1NQcm9wZXJ0eUVtcHR5Q2VsbHM6CisgICAgY2FzZSBDU1NQcm9wZXJ0eVdoaXRlU3BhY2U6
CisgICAgY2FzZSBDU1NQcm9wZXJ0eUNhcHRpb25TaWRlOgorICAgIGNhc2UgQ1NTUHJvcGVydHlC
b3JkZXJDb2xsYXBzZToKKyAgICBjYXNlIENTU1Byb3BlcnR5VmlzaWJpbGl0eToKKyAgICBjYXNl
IENTU1Byb3BlcnR5T3ZlcmZsb3dYOgorICAgIGNhc2UgQ1NTUHJvcGVydHlPdmVyZmxvd1k6Cisg
ICAgY2FzZSBDU1NQcm9wZXJ0eUxpc3RTdHlsZVBvc2l0aW9uOgorICAgIGNhc2UgQ1NTUHJvcGVy
dHlEaXJlY3Rpb246CisgICAgY2FzZSBDU1NQcm9wZXJ0eUZsb2F0OgorICAgIGNhc2UgQ1NTUHJv
cGVydHlDbGVhcjoKKyAgICBjYXNlIENTU1Byb3BlcnR5V29yZEJyZWFrOgorICAgIGNhc2UgQ1NT
UHJvcGVydHlXb3JkV3JhcDoKKyAgICBjYXNlIENTU1Byb3BlcnR5U3BlYWs6CisgICAgY2FzZSBD
U1NQcm9wZXJ0eUZvbnRTdHlsZToKKyAgICBjYXNlIENTU1Byb3BlcnR5VGFibGVMYXlvdXQ6Cisg
ICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdEJveEFsaWduOgorICAgIGNhc2UgQ1NTUHJvcGVydHlX
ZWJraXRCb3hEaXJlY3Rpb246CisgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdEJveExpbmVzOgor
ICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRCb3hPcmllbnQ6CisgICAgY2FzZSBDU1NQcm9wZXJ0
eVdlYmtpdEJveFBhY2s6CisgICAgY2FzZSBDU1NQcm9wZXJ0eUJveFNpemluZzoKKyAgICBjYXNl
IENTU1Byb3BlcnR5V2Via2l0Q29sb3JDb3JyZWN0aW9uOgorICAgIGNhc2UgQ1NTUHJvcGVydHlX
ZWJraXRGbGV4UGFjazoKKyAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0RmxleEFsaWduOgorICAg
IGNhc2UgQ1NTUHJvcGVydHlXZWJraXRGbGV4SXRlbUFsaWduOgorICAgIGNhc2UgQ1NTUHJvcGVy
dHlXZWJraXRGbGV4RGlyZWN0aW9uOgorICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRNYXJxdWVl
RGlyZWN0aW9uOgorICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRNYXJxdWVlU3R5bGU6CisgICAg
Y2FzZSBDU1NQcm9wZXJ0eVdlYmtpdFVzZXJEcmFnOgorICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJr
aXRVc2VyTW9kaWZ5OgorICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRVc2VyU2VsZWN0OgorICAg
IGNhc2UgQ1NTUHJvcGVydHlUZXh0T3ZlcmZsb3c6CisgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtp
dFRyYW5zZm9ybVN0eWxlOgorICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRCYWNrZmFjZVZpc2li
aWxpdHk6CisgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdFByaW50Q29sb3JBZGp1c3Q6CisgICAg
Y2FzZSBDU1NQcm9wZXJ0eVdlYmtpdE1hcmdpbkJlZm9yZUNvbGxhcHNlOgorICAgIGNhc2UgQ1NT
UHJvcGVydHlXZWJraXRNYXJnaW5BZnRlckNvbGxhcHNlOgorICAgIGNhc2UgQ1NTUHJvcGVydHlX
ZWJraXRNYXJnaW5Ub3BDb2xsYXBzZToKKyAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0TWFyZ2lu
Qm90dG9tQ29sbGFwc2U6CisgICAgY2FzZSBDU1NQcm9wZXJ0eVRleHRMaW5lVGhyb3VnaE1vZGU6
CisgICAgY2FzZSBDU1NQcm9wZXJ0eVRleHRPdmVybGluZU1vZGU6CisgICAgY2FzZSBDU1NQcm9w
ZXJ0eVRleHRVbmRlcmxpbmVNb2RlOgorICAgIGNhc2UgQ1NTUHJvcGVydHlUZXh0TGluZVRocm91
Z2hTdHlsZToKKyAgICBjYXNlIENTU1Byb3BlcnR5VGV4dE92ZXJsaW5lU3R5bGU6CisgICAgY2Fz
ZSBDU1NQcm9wZXJ0eVRleHRVbmRlcmxpbmVTdHlsZToKKyAgICBjYXNlIENTU1Byb3BlcnR5VGV4
dFJlbmRlcmluZzoKKyAgICBjYXNlIENTU1Byb3BlcnR5UmVzaXplOgorICAgIGNhc2UgQ1NTUHJv
cGVydHlJbWFnZVJlbmRlcmluZzoKKyAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0VGV4dFNpemVB
ZGp1c3Q6CisgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdFJ0bE9yZGVyaW5nOgorICAgIGNhc2Ug
Q1NTUHJvcGVydHlXZWJraXROYnNwTW9kZToKKyAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0TGlu
ZUJyZWFrOgorICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRNYXRjaE5lYXJlc3RNYWlsQmxvY2tx
dW90ZUNvbG9yOgorICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRIeXBoZW5zOgorICAgIGNhc2Ug
Q1NTUHJvcGVydHlXZWJraXRMaW5lU25hcDoKKyAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0TGlu
ZUFsaWduOgorICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRCb3JkZXJGaXQ6CisgICAgY2FzZSBD
U1NQcm9wZXJ0eVdlYmtpdFRleHRTZWN1cml0eToKKyAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0
Rm9udFNtb290aGluZzoKKyNpZiBFTkFCTEUoT1ZFUkZMT1dfU0NST0xMSU5HKQorICAgIGNhc2Ug
Q1NTUHJvcGVydHlXZWJraXRPdmVyZmxvd1Njcm9sbGluZzoKKyNlbmRpZgorICAgIGNhc2UgQ1NT
UHJvcGVydHlXZWJraXRUZXh0Q29tYmluZToKKyAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0VGV4
dEVtcGhhc2lzUG9zaXRpb246CisgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdEZvbnRLZXJuaW5n
OgorICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRXcmFwRmxvdzoKKyAgICBjYXNlIENTU1Byb3Bl
cnR5V2Via2l0V3JhcFRocm91Z2g6CisgICAgY2FzZSBDU1NQcm9wZXJ0eUJvcmRlclRvcFN0eWxl
OgorICAgIGNhc2UgQ1NTUHJvcGVydHlCb3JkZXJSaWdodFN0eWxlOgorICAgIGNhc2UgQ1NTUHJv
cGVydHlCb3JkZXJCb3R0b21TdHlsZToKKyAgICBjYXNlIENTU1Byb3BlcnR5Qm9yZGVyTGVmdFN0
eWxlOgorICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRCb3JkZXJTdGFydFN0eWxlOgorICAgIGNh
c2UgQ1NTUHJvcGVydHlXZWJraXRCb3JkZXJFbmRTdHlsZToKKyAgICBjYXNlIENTU1Byb3BlcnR5
V2Via2l0Qm9yZGVyQmVmb3JlU3R5bGU6CisgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdEJvcmRl
ckFmdGVyU3R5bGU6CisgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdENvbHVtblJ1bGVTdHlsZToK
KyAgICBjYXNlIENTU1Byb3BlcnR5TGlzdFN0eWxlVHlwZToKKyAgICBjYXNlIENTU1Byb3BlcnR5
RGlzcGxheToKKyAgICBjYXNlIENTU1Byb3BlcnR5VGV4dFRyYW5zZm9ybToKKyAgICBjYXNlIENT
U1Byb3BlcnR5T3V0bGluZVN0eWxlOgorICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRBcHBlYXJh
bmNlOgorICAgIGNhc2UgQ1NTUHJvcGVydHlQb2ludGVyRXZlbnRzOgorICAgIGNhc2UgQ1NTUHJv
cGVydHlXZWJraXRXcml0aW5nTW9kZToKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgZGVmYXVs
dDoKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KK30KKworY2xhc3MgUHJvcGVydHlNYXBF
bnRyeSB7CitwdWJsaWM6CisgICAgdHlwZWRlZiBib29sICgqTWF0Y2hGdW5jdGlvbikoaW50KTsK
KyAgICBQcm9wZXJ0eU1hcEVudHJ5KCkgOiBtX21hdGNoKDApIHsgfQorICAgIFByb3BlcnR5TWFw
RW50cnkoTWF0Y2hGdW5jdGlvbiBtYXRjaCkgOiBtX21hdGNoKG1hdGNoKSB7IH0KKyAgICBib29s
IG1hdGNoKGludCBpZCkgY29uc3QgeyBBU1NFUlQobV9tYXRjaCk7IHJldHVybiAoKm1fbWF0Y2gp
KGlkKTsgfQorcHJpdmF0ZToKKyAgICBNYXRjaEZ1bmN0aW9uIG1fbWF0Y2g7Cit9OworCitlbnVt
IE1hdGNoS2V5d29yZEJlaGF2aW9yIHtNYXRjaFZhbHVlcyA9IDAsIE1hdGNoUmFuZ2V9OwordGVt
cGxhdGUgPE1hdGNoS2V5d29yZEJlaGF2aW9yIGJlaGF2aW9yLCBpbnQgb25lID0gQ1NTVmFsdWVJ
bnZhbGlkLCBpbnQgdHdvID0gQ1NTVmFsdWVJbnZhbGlkLCBpbnQgdGhyZWUgPSBDU1NWYWx1ZUlu
dmFsaWQsIGludCBmb3VyID0gQ1NTVmFsdWVJbnZhbGlkLCBpbnQgZml2ZSA9IENTU1ZhbHVlSW52
YWxpZCwKKyAgICAgICAgICBpbnQgc2l4ID0gQ1NTVmFsdWVJbnZhbGlkLCBpbnQgc2V2ZW4gPSBD
U1NWYWx1ZUludmFsaWQsIGludCBlaWdodCA9IENTU1ZhbHVlSW52YWxpZCwgaW50IG5pbmUgPSBD
U1NWYWx1ZUludmFsaWQ+CitjbGFzcyBLZXl3b3JkUHJvcGVydHlNYXBFbnRyeSA6IHB1YmxpYyBQ
cm9wZXJ0eU1hcEVudHJ5IHsKK3B1YmxpYzoKKyAgICBLZXl3b3JkUHJvcGVydHlNYXBFbnRyeSgp
CisgICAgICAgIDogUHJvcGVydHlNYXBFbnRyeSgmbWF0Y2gpCisgICAgeworICAgIH0KKworICAg
IEtleXdvcmRQcm9wZXJ0eU1hcEVudHJ5KGludCBtaW5LZXl3b3JkLCBpbnQgbWF4S2V5d29yZCkK
KyAgICAgICAgOiBQcm9wZXJ0eU1hcEVudHJ5KCZtYXRjaCkKKyAgICB7CisgICAgfQorCisgICAg
c3RhdGljIGJvb2wgbWF0Y2goaW50IGlkKQorICAgIHsKKyAgICAgICAgaWYgKCFpZCB8fCBpZCA9
PSBDU1NWYWx1ZUludmFsaWQpCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICAgICAg
aWYgKGJlaGF2aW9yID09IE1hdGNoUmFuZ2UgJiYgaWQgPj0gb25lICYmIGlkIDw9IHR3bykKKyAg
ICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKworICAgICAgICBpZiAoaWQgPT0gb25lIHx8IGlk
ID09IHR3byB8fCBpZCA9PSB0aHJlZSB8fCBpZCA9PSBmb3VyIHx8IGlkID09IGZpdmUgfHwgaWQg
PT0gc2l4IHx8IGlkID09IHNldmVuIHx8IGlkID09IGVpZ2h0IHx8IGlkID09IG5pbmUpCisgICAg
ICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KK307CisK
K3R5cGVkZWYgSGFzaE1hcDxpbnQsIFByb3BlcnR5TWFwRW50cnk+IEtleXdvcmRQcm9wZXJ0eU1h
cDsKK3N0YXRpYyBjb25zdCBQcm9wZXJ0eU1hcEVudHJ5IHByb3BlcnR5Rm9ySUQoaW50IHByb3Bl
cnR5SWQpCit7CisgICAgREVGSU5FX1NUQVRJQ19MT0NBTChLZXl3b3JkUHJvcGVydHlNYXAsIG1h
cCwgKCkpOworICAgIGlmIChtYXAuaXNFbXB0eSgpKSB7CisgICAgICAgIG1hcC5zZXQoQ1NTUHJv
cGVydHlCb3JkZXJCb3R0b21TdHlsZSwgS2V5d29yZFByb3BlcnR5TWFwRW50cnk8TWF0Y2hSYW5n
ZSwgQ1NTVmFsdWVOb25lLCBDU1NWYWx1ZURvdWJsZT4oKSk7IC8vIG5vbmUgfCBoaWRkZW4gfCBk
b3R0ZWQgfCBkYXNoZWQgfCBzb2xpZCB8IGRvdWJsZSB8IGdyb292ZSB8IHJpZGdlIHwgaW5zZXQg
fCBvdXRzZXQKKyAgICAgICAgbWFwLnNldChDU1NQcm9wZXJ0eUJvcmRlckNvbGxhcHNlLCBLZXl3
b3JkUHJvcGVydHlNYXBFbnRyeTxNYXRjaFZhbHVlcywgQ1NTVmFsdWVDb2xsYXBzZSwgQ1NTVmFs
dWVTZXBhcmF0ZT4oKSk7IC8vIGNvbGxhcHNlIHwgc2VwYXJhdGUgfCBpbmhlcml0CisgICAgICAg
IG1hcC5zZXQoQ1NTUHJvcGVydHlCb3JkZXJMZWZ0U3R5bGUsIEtleXdvcmRQcm9wZXJ0eU1hcEVu
dHJ5PE1hdGNoUmFuZ2UsIENTU1ZhbHVlTm9uZSwgQ1NTVmFsdWVEb3VibGU+KCkpOyAvLyBub25l
IHwgaGlkZGVuIHwgZG90dGVkIHwgZGFzaGVkIHwgc29saWQgfCBkb3VibGUgfCBncm9vdmUgfCBy
aWRnZSB8IGluc2V0IHwgb3V0c2V0CisgICAgICAgIG1hcC5zZXQoQ1NTUHJvcGVydHlCb3JkZXJS
aWdodFN0eWxlLCBLZXl3b3JkUHJvcGVydHlNYXBFbnRyeTxNYXRjaFJhbmdlLCBDU1NWYWx1ZU5v
bmUsIENTU1ZhbHVlRG91YmxlPigpKTsgLy8gbm9uZSB8IGhpZGRlbiB8IGRvdHRlZCB8IGRhc2hl
ZCB8IHNvbGlkIHwgZG91YmxlIHwgZ3Jvb3ZlIHwgcmlkZ2UgfCBpbnNldCB8IG91dHNldAorICAg
ICAgICBtYXAuc2V0KENTU1Byb3BlcnR5Qm9yZGVyVG9wU3R5bGUsIEtleXdvcmRQcm9wZXJ0eU1h
cEVudHJ5PE1hdGNoUmFuZ2UsIENTU1ZhbHVlTm9uZSwgQ1NTVmFsdWVEb3VibGU+KCkpOyAvLyBu
b25lIHwgaGlkZGVuIHwgZG90dGVkIHwgZGFzaGVkIHwgc29saWQgfCBkb3VibGUgfCBncm9vdmUg
fCByaWRnZSB8IGluc2V0IHwgb3V0c2V0CisgICAgICAgIG1hcC5zZXQoQ1NTUHJvcGVydHlCb3hT
aXppbmcsIEtleXdvcmRQcm9wZXJ0eU1hcEVudHJ5PE1hdGNoVmFsdWVzLCBDU1NWYWx1ZUJvcmRl
ckJveCwgQ1NTVmFsdWVDb250ZW50Qm94PigpKTsKKyAgICAgICAgbWFwLnNldChDU1NQcm9wZXJ0
eUNhcHRpb25TaWRlLCBLZXl3b3JkUHJvcGVydHlNYXBFbnRyeTxNYXRjaFZhbHVlcywgQ1NTVmFs
dWVMZWZ0LCBDU1NWYWx1ZVJpZ2h0LCBDU1NWYWx1ZVRvcCwgQ1NTVmFsdWVCb3R0b20+KCkpOyAv
LyB0b3AgfCBib3R0b20gfCBsZWZ0IHwgcmlnaHQgfCBpbmhlcml0CisgICAgICAgIG1hcC5zZXQo
Q1NTUHJvcGVydHlDbGVhciwgS2V5d29yZFByb3BlcnR5TWFwRW50cnk8TWF0Y2hWYWx1ZXMsIENT
U1ZhbHVlTm9uZSwgQ1NTVmFsdWVMZWZ0LCBDU1NWYWx1ZVJpZ2h0LCBDU1NWYWx1ZUJvdGg+KCkp
OyAvLyBub25lIHwgbGVmdCB8IHJpZ2h0IHwgYm90aCB8IGluaGVyaXQKKyAgICAgICAgbWFwLnNl
dChDU1NQcm9wZXJ0eURpcmVjdGlvbiwgS2V5d29yZFByb3BlcnR5TWFwRW50cnk8TWF0Y2hWYWx1
ZXMsIENTU1ZhbHVlTHRyLCBDU1NWYWx1ZVJ0bD4oKSk7IC8vIGx0ciB8IHJ0bCB8IGluaGVyaXQK
KyAgICAgICAgLy8gaW5saW5lIHwgYmxvY2sgfCBsaXN0LWl0ZW0gfCBydW4taW4gfCBpbmxpbmUt
YmxvY2sgfCB0YWJsZSB8CisgICAgICAgIC8vIGlubGluZS10YWJsZSB8IHRhYmxlLXJvdy1ncm91
cCB8IHRhYmxlLWhlYWRlci1ncm91cCB8IHRhYmxlLWZvb3Rlci1ncm91cCB8IHRhYmxlLXJvdyB8
CisgICAgICAgIC8vIHRhYmxlLWNvbHVtbi1ncm91cCB8IHRhYmxlLWNvbHVtbiB8IHRhYmxlLWNl
bGwgfCB0YWJsZS1jYXB0aW9uIHwgLXdlYmtpdC1ib3ggfCAtd2Via2l0LWlubGluZS1ib3ggfCBu
b25lIHwgaW5oZXJpdAorICAgICAgICAvLyAtd2Via2l0LWZsZXhib3ggfCAtd2Via2l0LWlubGlu
ZS1mbGV4Ym94IHwgLXdlYmtpdC1ncmlkIHwgLXdlYmtpdC1pbmxpbmUtZ3JpZAorI2lmIEVOQUJM
RShDU1NfR1JJRF9MQVlPVVQpCisgICAgICAgIG1hcC5zZXQoQ1NTUHJvcGVydHlEaXNwbGF5LCBL
ZXl3b3JkUHJvcGVydHlNYXBFbnRyeTxNYXRjaFJhbmdlLCBDU1NWYWx1ZUlubGluZSwgQ1NTVmFs
dWVXZWJraXRJbmxpbmVGbGV4Ym94LCBDU1NWYWx1ZU5vbmUsIENTU1ZhbHVlV2Via2l0R3JpZCwg
Q1NTVmFsdWVXZWJraXRJbmxpbmVHcmlkPigpKTsKKyNlbHNlCisgICAgICAgbWFwLnNldChDU1NQ
cm9wZXJ0eURpc3BsYXksIEtleXdvcmRQcm9wZXJ0eU1hcEVudHJ5PE1hdGNoUmFuZ2UsIENTU1Zh
bHVlSW5saW5lLCBDU1NWYWx1ZVdlYmtpdElubGluZUZsZXhib3gsIENTU1ZhbHVlTm9uZT4oKSk7
CisjZW5kaWYKKyAgICAgICAgbWFwLnNldChDU1NQcm9wZXJ0eUVtcHR5Q2VsbHMsIEtleXdvcmRQ
cm9wZXJ0eU1hcEVudHJ5PE1hdGNoVmFsdWVzLCBDU1NWYWx1ZVNob3csIENTU1ZhbHVlSGlkZT4o
KSk7IC8vIHNob3cgfCBoaWRlIHwgaW5oZXJpdAorICAgICAgICBtYXAuc2V0KENTU1Byb3BlcnR5
RmxvYXQsIEtleXdvcmRQcm9wZXJ0eU1hcEVudHJ5PE1hdGNoVmFsdWVzLCBDU1NWYWx1ZUxlZnQs
IENTU1ZhbHVlUmlnaHQsIENTU1ZhbHVlTm9uZSwgQ1NTVmFsdWVDZW50ZXIsIENTU1ZhbHVlV2Vi
a2l0UG9zaXRpb25lZD4oKSk7IC8vIGxlZnQgfCByaWdodCB8IG5vbmUgfCBwb3NpdGlvbmVkIHwg
Y2VudGVyIChmb3IgYnVnZ3kgQ1NTLCBtYXBzIHRvIG5vbmUpCisgICAgICAgIG1hcC5zZXQoQ1NT
UHJvcGVydHlGb250U3R5bGUsIEtleXdvcmRQcm9wZXJ0eU1hcEVudHJ5PE1hdGNoVmFsdWVzLCBD
U1NWYWx1ZU5vcm1hbCwgQ1NTVmFsdWVJdGFsaWMsIENTU1ZhbHVlT2JsaXF1ZT4oKSk7IC8vIG5v
cm1hbCB8IGl0YWxpYyB8IG9ibGlxdWUgfCBpbmhlcml0CisgICAgICAgIG1hcC5zZXQoQ1NTUHJv
cGVydHlJbWFnZVJlbmRlcmluZywgS2V5d29yZFByb3BlcnR5TWFwRW50cnk8TWF0Y2hWYWx1ZXMs
IENTU1ZhbHVlQXV0bywgQ1NTVmFsdWVXZWJraXRPcHRpbWl6ZUNvbnRyYXN0PigpKTsgLy8gYXV0
byB8IG9wdGltaXplQ29udHJhc3QKKyAgICAgICAgbWFwLnNldChDU1NQcm9wZXJ0eUxpc3RTdHls
ZVBvc2l0aW9uLCBLZXl3b3JkUHJvcGVydHlNYXBFbnRyeTxNYXRjaFZhbHVlcywgQ1NTVmFsdWVJ
bnNpZGUsIENTU1ZhbHVlT3V0c2lkZT4oKSk7IC8vIGluc2lkZSB8IG91dHNpZGUgfCBpbmhlcml0
CisgICAgICAgIG1hcC5zZXQoQ1NTUHJvcGVydHlMaXN0U3R5bGVUeXBlLCBLZXl3b3JkUHJvcGVy
dHlNYXBFbnRyeTxNYXRjaFJhbmdlLCBDU1NWYWx1ZURpc2MsIENTU1ZhbHVlS2F0YWthbmFJcm9o
YSwgQ1NTVmFsdWVOb25lPigpKTsKKyAgICAgICAgbWFwLnNldChDU1NQcm9wZXJ0eU91dGxpbmVT
dHlsZSwgS2V5d29yZFByb3BlcnR5TWFwRW50cnk8TWF0Y2hSYW5nZSwgQ1NTVmFsdWVJbnNldCwg
Q1NTVmFsdWVEb3VibGUsIENTU1ZhbHVlTm9uZSwgQ1NTVmFsdWVBdXRvPigpKTsgLy8gKDxib3Jk
ZXItc3R5bGU+IGV4Y2VwdCBoaWRkZW4pIHwgYXV0byB8IGluaGVyaXQKKyAgICAgICAgbWFwLnNl
dChDU1NQcm9wZXJ0eU92ZXJmbG93WCwgS2V5d29yZFByb3BlcnR5TWFwRW50cnk8TWF0Y2hWYWx1
ZXMsIENTU1ZhbHVlVmlzaWJsZSwgQ1NTVmFsdWVIaWRkZW4sIENTU1ZhbHVlU2Nyb2xsLCBDU1NW
YWx1ZUF1dG8sIENTU1ZhbHVlT3ZlcmxheSwgQ1NTVmFsdWVXZWJraXRNYXJxdWVlPigpKTsgLy8g
dmlzaWJsZSB8IGhpZGRlbiB8IHNjcm9sbCB8IGF1dG8gfCBtYXJxdWVlIHwgb3ZlcmxheSB8IGlu
aGVyaXQKKyAgICAgICAgbWFwLnNldChDU1NQcm9wZXJ0eU92ZXJmbG93WSwgS2V5d29yZFByb3Bl
cnR5TWFwRW50cnk8TWF0Y2hWYWx1ZXMsIENTU1ZhbHVlVmlzaWJsZSwgQ1NTVmFsdWVIaWRkZW4s
IENTU1ZhbHVlU2Nyb2xsLCBDU1NWYWx1ZUF1dG8sIENTU1ZhbHVlT3ZlcmxheSwgQ1NTVmFsdWVX
ZWJraXRNYXJxdWVlPigpKTsgLy8gdmlzaWJsZSB8IGhpZGRlbiB8IHNjcm9sbCB8IGF1dG8gfCBt
YXJxdWVlIHwgb3ZlcmxheSB8IGluaGVyaXQKKyAgICAgICAgLy8gbm9uZSB8IHZpc2libGVQYWlu
dGVkIHwgdmlzaWJsZUZpbGwgfCB2aXNpYmxlU3Ryb2tlIHwgdmlzaWJsZSB8CisgICAgICAgIC8v
IHBhaW50ZWQgfCBmaWxsIHwgc3Ryb2tlIHwgYXV0byB8IGFsbCB8IGluaGVyaXQKKyAgICAgICAg
bWFwLnNldChDU1NQcm9wZXJ0eVBvaW50ZXJFdmVudHMsIEtleXdvcmRQcm9wZXJ0eU1hcEVudHJ5
PE1hdGNoUmFuZ2UsIENTU1ZhbHVlVmlzaWJsZXBhaW50ZWQsIENTU1ZhbHVlU3Ryb2tlLCBDU1NW
YWx1ZVZpc2libGUsIENTU1ZhbHVlTm9uZSwgQ1NTVmFsdWVBbGwsIENTU1ZhbHVlQXV0bz4oKSk7
CisgICAgICAgIG1hcC5zZXQoQ1NTUHJvcGVydHlQb3NpdGlvbiwgS2V5d29yZFByb3BlcnR5TWFw
RW50cnk8TWF0Y2hWYWx1ZXMsIENTU1ZhbHVlU3RhdGljLCBDU1NWYWx1ZVJlbGF0aXZlLCBDU1NW
YWx1ZUFic29sdXRlLCBDU1NWYWx1ZUZpeGVkPigpKTsKKyAgICAgICAgbWFwLnNldChDU1NQcm9w
ZXJ0eVJlc2l6ZSwgS2V5d29yZFByb3BlcnR5TWFwRW50cnk8TWF0Y2hWYWx1ZXMsIENTU1ZhbHVl
Tm9uZSwgQ1NTVmFsdWVCb3RoLCBDU1NWYWx1ZUhvcml6b250YWwsIENTU1ZhbHVlVmVydGljYWws
IENTU1ZhbHVlQXV0bz4oKSk7IC8vIG5vbmUgfCBib3RoIHwgaG9yaXpvbnRhbCB8IHZlcnRpY2Fs
IHwgYXV0bworICAgICAgICBtYXAuc2V0KENTU1Byb3BlcnR5U3BlYWssIEtleXdvcmRQcm9wZXJ0
eU1hcEVudHJ5PE1hdGNoVmFsdWVzLCBDU1NWYWx1ZU5vbmUsIENTU1ZhbHVlTm9ybWFsLCBDU1NW
YWx1ZVNwZWxsT3V0LCBDU1NWYWx1ZURpZ2l0cywgQ1NTVmFsdWVMaXRlcmFsUHVuY3R1YXRpb24s
IENTU1ZhbHVlTm9QdW5jdHVhdGlvbj4oKSk7IC8vIG5vbmUgfCBub3JtYWwgfCBzcGVsbC1vdXQg
fCBkaWdpdHMgfCBsaXRlcmFsLXB1bmN0dWF0aW9uIHwgbm8tcHVuY3R1YXRpb24gfCBpbmhlcml0
CisgICAgICAgIG1hcC5zZXQoQ1NTUHJvcGVydHlUYWJsZUxheW91dCwgS2V5d29yZFByb3BlcnR5
TWFwRW50cnk8TWF0Y2hWYWx1ZXMsIENTU1ZhbHVlQXV0bywgQ1NTVmFsdWVGaXhlZD4oKSk7IC8v
IGF1dG8gfCBmaXhlZCB8IGluaGVyaXQKKyAgICAgICAgbWFwLnNldChDU1NQcm9wZXJ0eVRleHRM
aW5lVGhyb3VnaE1vZGUsIEtleXdvcmRQcm9wZXJ0eU1hcEVudHJ5PE1hdGNoVmFsdWVzLCBDU1NW
YWx1ZUNvbnRpbnVvdXMsIENTU1ZhbHVlU2tpcFdoaXRlU3BhY2U+KCkpOworICAgICAgICBtYXAu
c2V0KENTU1Byb3BlcnR5VGV4dExpbmVUaHJvdWdoU3R5bGUsIEtleXdvcmRQcm9wZXJ0eU1hcEVu
dHJ5PE1hdGNoVmFsdWVzLCBDU1NWYWx1ZU5vbmUsIENTU1ZhbHVlU29saWQsIENTU1ZhbHVlRG91
YmxlLCBDU1NWYWx1ZURhc2hlZCwgQ1NTVmFsdWVEb3REYXNoLCBDU1NWYWx1ZURvdERvdERhc2gs
IENTU1ZhbHVlV2F2ZT4oKSk7CisgICAgICAgIG1hcC5zZXQoQ1NTUHJvcGVydHlUZXh0T3ZlcmZs
b3csIEtleXdvcmRQcm9wZXJ0eU1hcEVudHJ5PE1hdGNoVmFsdWVzLCBDU1NWYWx1ZUNsaXAsIENT
U1ZhbHVlRWxsaXBzaXM+KCkpOyAvLyBjbGlwIHwgZWxsaXBzaXMKKyAgICAgICAgbWFwLnNldChD
U1NQcm9wZXJ0eVRleHRPdmVybGluZU1vZGUsIEtleXdvcmRQcm9wZXJ0eU1hcEVudHJ5PE1hdGNo
VmFsdWVzLCBDU1NWYWx1ZUNvbnRpbnVvdXMsIENTU1ZhbHVlU2tpcFdoaXRlU3BhY2U+KCkpOwor
ICAgICAgICBtYXAuc2V0KENTU1Byb3BlcnR5VGV4dE92ZXJsaW5lU3R5bGUsIEtleXdvcmRQcm9w
ZXJ0eU1hcEVudHJ5PE1hdGNoVmFsdWVzLCBDU1NWYWx1ZU5vbmUsIENTU1ZhbHVlU29saWQsIENT
U1ZhbHVlRG91YmxlLCBDU1NWYWx1ZURhc2hlZCwgQ1NTVmFsdWVEb3REYXNoLCBDU1NWYWx1ZURv
dERvdERhc2gsIENTU1ZhbHVlV2F2ZT4oKSk7CisgICAgICAgIG1hcC5zZXQoQ1NTUHJvcGVydHlU
ZXh0UmVuZGVyaW5nLCBLZXl3b3JkUHJvcGVydHlNYXBFbnRyeTxNYXRjaFZhbHVlcywgQ1NTVmFs
dWVBdXRvLCBDU1NWYWx1ZU9wdGltaXplc3BlZWQsIENTU1ZhbHVlT3B0aW1pemVsZWdpYmlsaXR5
LCBDU1NWYWx1ZUdlb21ldHJpY3ByZWNpc2lvbj4oKSk7IC8vIGF1dG8gfCBvcHRpbWl6ZVNwZWVk
IHwgb3B0aW1pemVMZWdpYmlsaXR5IHwgZ2VvbWV0cmljUHJlY2lzaW9uCisgICAgICAgIG1hcC5z
ZXQoQ1NTUHJvcGVydHlUZXh0VHJhbnNmb3JtLCBLZXl3b3JkUHJvcGVydHlNYXBFbnRyeTxNYXRj
aFJhbmdlLCBDU1NWYWx1ZUNhcGl0YWxpemUsIENTU1ZhbHVlTG93ZXJjYXNlLCBDU1NWYWx1ZU5v
bmU+KCkpOyAvLyBjYXBpdGFsaXplIHwgdXBwZXJjYXNlIHwgbG93ZXJjYXNlIHwgbm9uZSB8IGlu
aGVyaXQKKyAgICAgICAgbWFwLnNldChDU1NQcm9wZXJ0eVRleHRVbmRlcmxpbmVNb2RlLCBLZXl3
b3JkUHJvcGVydHlNYXBFbnRyeTxNYXRjaFZhbHVlcywgQ1NTVmFsdWVDb250aW51b3VzLCBDU1NW
YWx1ZVNraXBXaGl0ZVNwYWNlPigpKTsKKyAgICAgICAgbWFwLnNldChDU1NQcm9wZXJ0eVRleHRV
bmRlcmxpbmVTdHlsZSwgS2V5d29yZFByb3BlcnR5TWFwRW50cnk8TWF0Y2hWYWx1ZXMsIENTU1Zh
bHVlTm9uZSwgQ1NTVmFsdWVTb2xpZCwgQ1NTVmFsdWVEb3VibGUsIENTU1ZhbHVlRGFzaGVkLCBD
U1NWYWx1ZURvdERhc2gsIENTU1ZhbHVlRG90RG90RGFzaCwgQ1NTVmFsdWVXYXZlPigpKTsKKyAg
ICAgICAgbWFwLnNldChDU1NQcm9wZXJ0eVZpc2liaWxpdHksIEtleXdvcmRQcm9wZXJ0eU1hcEVu
dHJ5PE1hdGNoVmFsdWVzLCBDU1NWYWx1ZVZpc2libGUsIENTU1ZhbHVlSGlkZGVuLCBDU1NWYWx1
ZUNvbGxhcHNlPigpKTsgLy8gdmlzaWJsZSB8IGhpZGRlbiB8IGNvbGxhcHNlIHwgaW5oZXJpdAor
ICAgICAgICBtYXAuc2V0KENTU1Byb3BlcnR5V2Via2l0QXBwZWFyYW5jZSwgS2V5d29yZFByb3Bl
cnR5TWFwRW50cnk8TWF0Y2hSYW5nZSwgQ1NTVmFsdWVDaGVja2JveCwgQ1NTVmFsdWVUZXh0YXJl
YSwgQ1NTVmFsdWVOb25lPigpKTsKKyAgICAgICAgbWFwLnNldChDU1NQcm9wZXJ0eVdlYmtpdEJh
Y2tmYWNlVmlzaWJpbGl0eSwgS2V5d29yZFByb3BlcnR5TWFwRW50cnk8TWF0Y2hWYWx1ZXMsIENT
U1ZhbHVlVmlzaWJsZSwgQ1NTVmFsdWVIaWRkZW4+KCkpOworICAgICAgICBtYXAuc2V0KENTU1By
b3BlcnR5V2Via2l0Qm9yZGVyQWZ0ZXJTdHlsZSwgS2V5d29yZFByb3BlcnR5TWFwRW50cnk8TWF0
Y2hSYW5nZSwgQ1NTVmFsdWVOb25lLCBDU1NWYWx1ZURvdWJsZT4oKSk7IC8vIG5vbmUgfCBoaWRk
ZW4gfCBkb3R0ZWQgfCBkYXNoZWQgfCBzb2xpZCB8IGRvdWJsZSB8IGdyb292ZSB8IHJpZGdlIHwg
aW5zZXQgfCBvdXRzZXQKKyAgICAgICAgbWFwLnNldChDU1NQcm9wZXJ0eVdlYmtpdEJvcmRlckJl
Zm9yZVN0eWxlLCBLZXl3b3JkUHJvcGVydHlNYXBFbnRyeTxNYXRjaFJhbmdlLCBDU1NWYWx1ZU5v
bmUsIENTU1ZhbHVlRG91YmxlPigpKTsgLy8gbm9uZSB8IGhpZGRlbiB8IGRvdHRlZCB8IGRhc2hl
ZCB8IHNvbGlkIHwgZG91YmxlIHwgZ3Jvb3ZlIHwgcmlkZ2UgfCBpbnNldCB8IG91dHNldAorICAg
ICAgICBtYXAuc2V0KENTU1Byb3BlcnR5V2Via2l0Qm9yZGVyRW5kU3R5bGUsIEtleXdvcmRQcm9w
ZXJ0eU1hcEVudHJ5PE1hdGNoUmFuZ2UsIENTU1ZhbHVlTm9uZSwgQ1NTVmFsdWVEb3VibGU+KCkp
OyAvLyBub25lIHwgaGlkZGVuIHwgZG90dGVkIHwgZGFzaGVkIHwgc29saWQgfCBkb3VibGUgfCBn
cm9vdmUgfCByaWRnZSB8IGluc2V0IHwgb3V0c2V0CisgICAgICAgIG1hcC5zZXQoQ1NTUHJvcGVy
dHlXZWJraXRCb3JkZXJGaXQsIEtleXdvcmRQcm9wZXJ0eU1hcEVudHJ5PE1hdGNoVmFsdWVzLCBD
U1NWYWx1ZUJvcmRlciwgQ1NTVmFsdWVMaW5lcz4oKSk7CisgICAgICAgIG1hcC5zZXQoQ1NTUHJv
cGVydHlXZWJraXRCb3JkZXJTdGFydFN0eWxlLCBLZXl3b3JkUHJvcGVydHlNYXBFbnRyeTxNYXRj
aFJhbmdlLCBDU1NWYWx1ZU5vbmUsIENTU1ZhbHVlRG91YmxlPigpKTsgLy8gbm9uZSB8IGhpZGRl
biB8IGRvdHRlZCB8IGRhc2hlZCB8IHNvbGlkIHwgZG91YmxlIHwgZ3Jvb3ZlIHwgcmlkZ2UgfCBp
bnNldCB8IG91dHNldAorICAgICAgICBtYXAuc2V0KENTU1Byb3BlcnR5V2Via2l0Qm94QWxpZ24s
IEtleXdvcmRQcm9wZXJ0eU1hcEVudHJ5PE1hdGNoVmFsdWVzLCBDU1NWYWx1ZVN0cmV0Y2gsIENT
U1ZhbHVlU3RhcnQsIENTU1ZhbHVlRW5kLCBDU1NWYWx1ZUNlbnRlciwgQ1NTVmFsdWVCYXNlbGlu
ZT4oKSk7CisgICAgICAgIG1hcC5zZXQoQ1NTUHJvcGVydHlXZWJraXRCb3hEaXJlY3Rpb24sIEtl
eXdvcmRQcm9wZXJ0eU1hcEVudHJ5PE1hdGNoVmFsdWVzLCBDU1NWYWx1ZU5vcm1hbCwgQ1NTVmFs
dWVSZXZlcnNlPigpKTsKKyAgICAgICAgbWFwLnNldChDU1NQcm9wZXJ0eVdlYmtpdEJveExpbmVz
LCBLZXl3b3JkUHJvcGVydHlNYXBFbnRyeTxNYXRjaFZhbHVlcywgQ1NTVmFsdWVTaW5nbGUsIENT
U1ZhbHVlTXVsdGlwbGU+KCkpOworICAgICAgICBtYXAuc2V0KENTU1Byb3BlcnR5V2Via2l0Qm94
T3JpZW50LCBLZXl3b3JkUHJvcGVydHlNYXBFbnRyeTxNYXRjaFZhbHVlcywgQ1NTVmFsdWVIb3Jp
em9udGFsLCBDU1NWYWx1ZVZlcnRpY2FsLCBDU1NWYWx1ZUlubGluZUF4aXMsIENTU1ZhbHVlQmxv
Y2tBeGlzPigpKTsKKyAgICAgICAgbWFwLnNldChDU1NQcm9wZXJ0eVdlYmtpdEJveFBhY2ssIEtl
eXdvcmRQcm9wZXJ0eU1hcEVudHJ5PE1hdGNoVmFsdWVzLCBDU1NWYWx1ZVN0YXJ0LCBDU1NWYWx1
ZUVuZCwgQ1NTVmFsdWVDZW50ZXIsIENTU1ZhbHVlSnVzdGlmeT4oKSk7CisgICAgICAgIG1hcC5z
ZXQoQ1NTUHJvcGVydHlXZWJraXRDb2xvckNvcnJlY3Rpb24sIEtleXdvcmRQcm9wZXJ0eU1hcEVu
dHJ5PE1hdGNoVmFsdWVzLCBDU1NWYWx1ZVNyZ2IsIENTU1ZhbHVlRGVmYXVsdD4oKSk7CisgICAg
ICAgIG1hcC5zZXQoQ1NTUHJvcGVydHlXZWJraXRDb2x1bW5SdWxlU3R5bGUsIEtleXdvcmRQcm9w
ZXJ0eU1hcEVudHJ5PE1hdGNoUmFuZ2UsIENTU1ZhbHVlTm9uZSwgQ1NTVmFsdWVEb3VibGU+KCkp
OyAvLyBub25lIHwgaGlkZGVuIHwgZG90dGVkIHwgZGFzaGVkIHwgc29saWQgfCBkb3VibGUgfCBn
cm9vdmUgfCByaWRnZSB8IGluc2V0IHwgb3V0c2V0CisgICAgICAgIG1hcC5zZXQoQ1NTUHJvcGVy
dHlXZWJraXRGbGV4QWxpZ24sIEtleXdvcmRQcm9wZXJ0eU1hcEVudHJ5PE1hdGNoVmFsdWVzLCBD
U1NWYWx1ZVN0YXJ0LCBDU1NWYWx1ZUVuZCwgQ1NTVmFsdWVDZW50ZXIsIENTU1ZhbHVlQmFzZWxp
bmUsIENTU1ZhbHVlU3RyZXRjaD4oKSk7CisgICAgICAgIG1hcC5zZXQoQ1NTUHJvcGVydHlXZWJr
aXRGbGV4RGlyZWN0aW9uLCBLZXl3b3JkUHJvcGVydHlNYXBFbnRyeTxNYXRjaFZhbHVlcywgQ1NT
VmFsdWVSb3csIENTU1ZhbHVlUm93UmV2ZXJzZSwgQ1NTVmFsdWVDb2x1bW4sIENTU1ZhbHVlQ29s
dW1uUmV2ZXJzZT4oKSk7CisgICAgICAgIG1hcC5zZXQoQ1NTUHJvcGVydHlXZWJraXRGbGV4SXRl
bUFsaWduLCBLZXl3b3JkUHJvcGVydHlNYXBFbnRyeTxNYXRjaFZhbHVlcywgQ1NTVmFsdWVBdXRv
LCBDU1NWYWx1ZVN0YXJ0LCBDU1NWYWx1ZUVuZCwgQ1NTVmFsdWVDZW50ZXIsIENTU1ZhbHVlU3Ry
ZXRjaCwgQ1NTVmFsdWVCYXNlbGluZSwgQ1NTVmFsdWVTdHJldGNoPigpKTsKKyAgICAgICAgbWFw
LnNldChDU1NQcm9wZXJ0eVdlYmtpdEZsZXhQYWNrLCBLZXl3b3JkUHJvcGVydHlNYXBFbnRyeTxN
YXRjaFZhbHVlcywgQ1NTVmFsdWVTdGFydCwgQ1NTVmFsdWVFbmQsIENTU1ZhbHVlQ2VudGVyLCBD
U1NWYWx1ZUp1c3RpZnksIENTU1ZhbHVlRGlzdHJpYnV0ZT4oKSk7CisgICAgICAgIG1hcC5zZXQo
Q1NTUHJvcGVydHlXZWJraXRGbGV4V3JhcCwgS2V5d29yZFByb3BlcnR5TWFwRW50cnk8TWF0Y2hW
YWx1ZXMsIENTU1ZhbHVlTm9uZSwgQ1NTVmFsdWVXcmFwLCBDU1NWYWx1ZVdyYXBSZXZlcnNlPigp
KTsKKyAgICAgICAgbWFwLnNldChDU1NQcm9wZXJ0eVdlYmtpdEZvbnRLZXJuaW5nLCBLZXl3b3Jk
UHJvcGVydHlNYXBFbnRyeTxNYXRjaFZhbHVlcywgQ1NTVmFsdWVBdXRvLCBDU1NWYWx1ZU5vcm1h
bCwgQ1NTVmFsdWVOb25lPigpKTsKKyAgICAgICAgbWFwLnNldChDU1NQcm9wZXJ0eVdlYmtpdEZv
bnRTbW9vdGhpbmcsIEtleXdvcmRQcm9wZXJ0eU1hcEVudHJ5PE1hdGNoVmFsdWVzLCBDU1NWYWx1
ZUF1dG8sIENTU1ZhbHVlTm9uZSwgQ1NTVmFsdWVBbnRpYWxpYXNlZCwgQ1NTVmFsdWVTdWJwaXhl
bEFudGlhbGlhc2VkPigpKTsKKyAgICAgICAgbWFwLnNldChDU1NQcm9wZXJ0eVdlYmtpdEh5cGhl
bnMsIEtleXdvcmRQcm9wZXJ0eU1hcEVudHJ5PE1hdGNoVmFsdWVzLCBDU1NWYWx1ZU5vbmUsIENT
U1ZhbHVlTWFudWFsLCBDU1NWYWx1ZUF1dG8+KCkpOworICAgICAgICBtYXAuc2V0KENTU1Byb3Bl
cnR5V2Via2l0TGluZUFsaWduLCBLZXl3b3JkUHJvcGVydHlNYXBFbnRyeTxNYXRjaFZhbHVlcywg
Q1NTVmFsdWVOb25lLCBDU1NWYWx1ZUVkZ2VzPigpKTsKKyAgICAgICAgbWFwLnNldChDU1NQcm9w
ZXJ0eVdlYmtpdExpbmVCcmVhaywgS2V5d29yZFByb3BlcnR5TWFwRW50cnk8TWF0Y2hWYWx1ZXMs
IENTU1ZhbHVlTm9ybWFsLCBDU1NWYWx1ZUFmdGVyV2hpdGVTcGFjZT4oKSk7IC8vIG5vcm1hbCB8
IGFmdGVyLXdoaXRlLXNwYWNlCisgICAgICAgIG1hcC5zZXQoQ1NTUHJvcGVydHlXZWJraXRMaW5l
U25hcCwgS2V5d29yZFByb3BlcnR5TWFwRW50cnk8TWF0Y2hWYWx1ZXMsIENTU1ZhbHVlTm9uZSwg
Q1NTVmFsdWVCYXNlbGluZSwgQ1NTVmFsdWVDb250YWluPigpKTsKKyAgICAgICAgbWFwLnNldChD
U1NQcm9wZXJ0eVdlYmtpdE1hcmdpbkFmdGVyQ29sbGFwc2UsIEtleXdvcmRQcm9wZXJ0eU1hcEVu
dHJ5PE1hdGNoVmFsdWVzLCBDU1NWYWx1ZUNvbGxhcHNlLCBDU1NWYWx1ZVNlcGFyYXRlLCBDU1NW
YWx1ZURpc2NhcmQ+KCkpOworICAgICAgICBtYXAuc2V0KENTU1Byb3BlcnR5V2Via2l0TWFyZ2lu
QmVmb3JlQ29sbGFwc2UsIEtleXdvcmRQcm9wZXJ0eU1hcEVudHJ5PE1hdGNoVmFsdWVzLCBDU1NW
YWx1ZUNvbGxhcHNlLCBDU1NWYWx1ZVNlcGFyYXRlLCBDU1NWYWx1ZURpc2NhcmQ+KCkpOworICAg
ICAgICBtYXAuc2V0KENTU1Byb3BlcnR5V2Via2l0TWFyZ2luQm90dG9tQ29sbGFwc2UsIEtleXdv
cmRQcm9wZXJ0eU1hcEVudHJ5PE1hdGNoVmFsdWVzLCBDU1NWYWx1ZUNvbGxhcHNlLCBDU1NWYWx1
ZVNlcGFyYXRlLCBDU1NWYWx1ZURpc2NhcmQ+KCkpOworICAgICAgICBtYXAuc2V0KENTU1Byb3Bl
cnR5V2Via2l0TWFyZ2luVG9wQ29sbGFwc2UsIEtleXdvcmRQcm9wZXJ0eU1hcEVudHJ5PE1hdGNo
VmFsdWVzLCBDU1NWYWx1ZUNvbGxhcHNlLCBDU1NWYWx1ZVNlcGFyYXRlLCBDU1NWYWx1ZURpc2Nh
cmQ+KCkpOworICAgICAgICBtYXAuc2V0KENTU1Byb3BlcnR5V2Via2l0TWFycXVlZURpcmVjdGlv
biwgS2V5d29yZFByb3BlcnR5TWFwRW50cnk8TWF0Y2hWYWx1ZXMsIENTU1ZhbHVlRm9yd2FyZHMs
IENTU1ZhbHVlQmFja3dhcmRzLCBDU1NWYWx1ZUFoZWFkLCBDU1NWYWx1ZVJldmVyc2UsIENTU1Zh
bHVlTGVmdCwgQ1NTVmFsdWVSaWdodCwgQ1NTVmFsdWVEb3duLCBDU1NWYWx1ZVVwLCBDU1NWYWx1
ZUF1dG8+KCkpOworICAgICAgICBtYXAuc2V0KENTU1Byb3BlcnR5V2Via2l0TWFycXVlZVN0eWxl
LCBLZXl3b3JkUHJvcGVydHlNYXBFbnRyeTxNYXRjaFZhbHVlcywgQ1NTVmFsdWVOb25lLCBDU1NW
YWx1ZVNsaWRlLCBDU1NWYWx1ZVNjcm9sbCwgQ1NTVmFsdWVBbHRlcm5hdGU+KCkpOworICAgICAg
ICBtYXAuc2V0KENTU1Byb3BlcnR5V2Via2l0TWF0Y2hOZWFyZXN0TWFpbEJsb2NrcXVvdGVDb2xv
ciwgS2V5d29yZFByb3BlcnR5TWFwRW50cnk8TWF0Y2hWYWx1ZXMsIENTU1ZhbHVlTm9ybWFsLCBD
U1NWYWx1ZU1hdGNoPigpKTsgLy8gbm9ybWFsIHwgbWF0Y2gKKyAgICAgICAgbWFwLnNldChDU1NQ
cm9wZXJ0eVdlYmtpdE5ic3BNb2RlLCBLZXl3b3JkUHJvcGVydHlNYXBFbnRyeTxNYXRjaFZhbHVl
cywgQ1NTVmFsdWVOb3JtYWwsIENTU1ZhbHVlU3BhY2U+KCkpOyAvLyBub3JtYWwgfCBzcGFjZQor
I2lmIEVOQUJMRShPVkVSRkxPV19TQ1JPTExJTkcpCisgICAgICAgIG1hcC5zZXQoQ1NTUHJvcGVy
dHlXZWJraXRPdmVyZmxvd1Njcm9sbGluZywgS2V5d29yZFByb3BlcnR5TWFwRW50cnk8TWF0Y2hW
YWx1ZXMsIENTU1ZhbHVlQXV0bywgQ1NTVmFsdWVUb3VjaD4oKSk7CisjZW5kaWYKKyAgICAgICAg
bWFwLnNldChDU1NQcm9wZXJ0eVdlYmtpdFByaW50Q29sb3JBZGp1c3QsIEtleXdvcmRQcm9wZXJ0
eU1hcEVudHJ5PE1hdGNoVmFsdWVzLCBDU1NWYWx1ZUV4YWN0LCBDU1NWYWx1ZUVjb25vbXk+KCkp
OworICAgICAgICBtYXAuc2V0KENTU1Byb3BlcnR5V2Via2l0UnRsT3JkZXJpbmcsIEtleXdvcmRQ
cm9wZXJ0eU1hcEVudHJ5PE1hdGNoVmFsdWVzLCBDU1NWYWx1ZUxvZ2ljYWwsIENTU1ZhbHVlVmlz
dWFsPigpKTsKKyAgICAgICAgbWFwLnNldChDU1NQcm9wZXJ0eVdlYmtpdFRleHRDb21iaW5lLCBL
ZXl3b3JkUHJvcGVydHlNYXBFbnRyeTxNYXRjaFZhbHVlcywgQ1NTVmFsdWVOb25lLCBDU1NWYWx1
ZUhvcml6b250YWw+KCkpOworICAgICAgICBtYXAuc2V0KENTU1Byb3BlcnR5V2Via2l0VGV4dEVt
cGhhc2lzUG9zaXRpb24sIEtleXdvcmRQcm9wZXJ0eU1hcEVudHJ5PE1hdGNoVmFsdWVzLCBDU1NW
YWx1ZU92ZXIsIENTU1ZhbHVlVW5kZXI+KCkpOworICAgICAgICBtYXAuc2V0KENTU1Byb3BlcnR5
V2Via2l0VGV4dFNlY3VyaXR5LCBLZXl3b3JkUHJvcGVydHlNYXBFbnRyeTxNYXRjaFZhbHVlcywg
Q1NTVmFsdWVEaXNjLCBDU1NWYWx1ZUNpcmNsZSwgQ1NTVmFsdWVTcXVhcmUsIENTU1ZhbHVlTm9u
ZT4oKSk7IC8vIGRpc2MgfCBjaXJjbGUgfCBzcXVhcmUgfCBub25lIHwgaW5oZXJpdAorICAgICAg
ICBtYXAuc2V0KENTU1Byb3BlcnR5V2Via2l0VGV4dFNpemVBZGp1c3QsIEtleXdvcmRQcm9wZXJ0
eU1hcEVudHJ5PE1hdGNoVmFsdWVzLCBDU1NWYWx1ZUF1dG8sIENTU1ZhbHVlTm9uZT4oKSk7Cisg
ICAgICAgIG1hcC5zZXQoQ1NTUHJvcGVydHlXZWJraXRUcmFuc2Zvcm1TdHlsZSwgS2V5d29yZFBy
b3BlcnR5TWFwRW50cnk8TWF0Y2hWYWx1ZXMsIENTU1ZhbHVlRmxhdCwgQ1NTVmFsdWVQcmVzZXJ2
ZTNkPigpKTsgLy8gY2xpcCB8IGVsbGlwc2lzCisgICAgICAgIG1hcC5zZXQoQ1NTUHJvcGVydHlX
ZWJraXRVc2VyRHJhZywgS2V5d29yZFByb3BlcnR5TWFwRW50cnk8TWF0Y2hWYWx1ZXMsIENTU1Zh
bHVlQXV0bywgQ1NTVmFsdWVOb25lLCBDU1NWYWx1ZUVsZW1lbnQ+KCkpOyAvLyBhdXRvIHwgbm9u
ZSB8IGVsZW1lbnQKKyAgICAgICAgbWFwLnNldChDU1NQcm9wZXJ0eVdlYmtpdFVzZXJNb2RpZnks
IEtleXdvcmRQcm9wZXJ0eU1hcEVudHJ5PE1hdGNoVmFsdWVzLCBDU1NWYWx1ZVJlYWRPbmx5LCBD
U1NWYWx1ZVJlYWRXcml0ZSwgQ1NTVmFsdWVSZWFkV3JpdGVQbGFpbnRleHRPbmx5PigpKTsgLy8g
cmVhZC1vbmx5IHwgcmVhZC13cml0ZQorICAgICAgICBtYXAuc2V0KENTU1Byb3BlcnR5V2Via2l0
VXNlclNlbGVjdCwgS2V5d29yZFByb3BlcnR5TWFwRW50cnk8TWF0Y2hWYWx1ZXMsIENTU1ZhbHVl
QXV0bywgQ1NTVmFsdWVOb25lLCBDU1NWYWx1ZVRleHQ+KCkpOyAvLyBhdXRvIHwgbm9uZSB8IHRl
eHQKKyAgICAgICAgbWFwLnNldChDU1NQcm9wZXJ0eVdlYmtpdFdyYXBGbG93LCBLZXl3b3JkUHJv
cGVydHlNYXBFbnRyeTxNYXRjaFZhbHVlcywgQ1NTVmFsdWVBdXRvLCBDU1NWYWx1ZUJvdGgsIENT
U1ZhbHVlTGVmdCwgQ1NTVmFsdWVSaWdodCwgQ1NTVmFsdWVNYXhpbXVtLCBDU1NWYWx1ZUNsZWFy
PigpKTsKKyAgICAgICAgbWFwLnNldChDU1NQcm9wZXJ0eVdlYmtpdFdyYXBUaHJvdWdoLCBLZXl3
b3JkUHJvcGVydHlNYXBFbnRyeTxNYXRjaFZhbHVlcywgQ1NTVmFsdWVXcmFwLCBDU1NWYWx1ZU5v
bmU+KCkpOworICAgICAgICBtYXAuc2V0KENTU1Byb3BlcnR5V2Via2l0V3JpdGluZ01vZGUsIEtl
eXdvcmRQcm9wZXJ0eU1hcEVudHJ5PE1hdGNoUmFuZ2UsIENTU1ZhbHVlSG9yaXpvbnRhbFRiLCBD
U1NWYWx1ZUhvcml6b250YWxCdD4oKSk7CisgICAgICAgIG1hcC5zZXQoQ1NTUHJvcGVydHlXaGl0
ZVNwYWNlLCBLZXl3b3JkUHJvcGVydHlNYXBFbnRyeTxNYXRjaFZhbHVlcywgQ1NTVmFsdWVOb3Jt
YWwsIENTU1ZhbHVlUHJlLCBDU1NWYWx1ZVByZVdyYXAsIENTU1ZhbHVlUHJlTGluZSwgQ1NTVmFs
dWVOb3dyYXA+KCkpOyAvLyBub3JtYWwgfCBwcmUgfCBub3dyYXAgfCBpbmhlcml0CisgICAgICAg
IG1hcC5zZXQoQ1NTUHJvcGVydHlXb3JkQnJlYWssIEtleXdvcmRQcm9wZXJ0eU1hcEVudHJ5PE1h
dGNoVmFsdWVzLCBDU1NWYWx1ZU5vcm1hbCwgQ1NTVmFsdWVCcmVha0FsbCwgQ1NTVmFsdWVCcmVh
a1dvcmQ+KCkpOyAvLyBub3JtYWwgfCBicmVhay1hbGwgfCBicmVhay13b3JkICh0aGlzIGlzIGEg
Y3VzdG9tIGV4dGVuc2lvbikKKyAgICAgICAgbWFwLnNldChDU1NQcm9wZXJ0eVdvcmRXcmFwLCBL
ZXl3b3JkUHJvcGVydHlNYXBFbnRyeTxNYXRjaFZhbHVlcywgQ1NTVmFsdWVOb3JtYWwsIENTU1Zh
bHVlQnJlYWtXb3JkPigpKTsgLy8gbm9ybWFsIHwgYnJlYWstd29yZAorICAgIH0KKyAgICByZXR1
cm4gbWFwLmdldChwcm9wZXJ0eUlkKTsKK30KKworc3RhdGljIGJvb2wgcGFyc2VLZXl3b3JkVmFs
dWUoU3R5bGVQcm9wZXJ0eVNldCogZGVjbGFyYXRpb24sIGludCBwcm9wZXJ0eUlkLCBjb25zdCBT
dHJpbmcmIHN0cmluZywgYm9vbCBpbXBvcnRhbnQsIENTU1N0eWxlU2hlZXQqIGNvbnRleHRTdHls
ZVNoZWV0KQoreworICAgIGlmICghc3RyaW5nLmxlbmd0aCgpKQorICAgICAgICByZXR1cm4gZmFs
c2U7CisKKyAgICBpZiAoIWlzS2V5d29yZFByb3BlcnR5SUQocHJvcGVydHlJZCkpCisgICAgICAg
IHJldHVybiBmYWxzZTsKKworICAgIENTU1BhcnNlclN0cmluZyBjc3NTdHJpbmc7CisgICAgY3Nz
U3RyaW5nLmNoYXJhY3RlcnMgPSBjb25zdF9jYXN0PFVDaGFyKj4oc3RyaW5nLmNoYXJhY3RlcnMo
KSk7CisgICAgY3NzU3RyaW5nLmxlbmd0aCA9IHN0cmluZy5sZW5ndGgoKTsKKyAgICBpbnQgdmFs
dWVJRCA9IGNzc1ZhbHVlS2V5d29yZElEKGNzc1N0cmluZyk7CisKKyAgICBpZiAoIXZhbHVlSUQp
CisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIERvY3VtZW50KiBkb2N1bWVudCA9IGNvbnRl
eHRTdHlsZVNoZWV0LT5maW5kRG9jdW1lbnQoKTsKKyAgICBSZWZQdHI8Q1NTVmFsdWU+IHZhbHVl
OworICAgIENTU1ZhbHVlUG9vbCogY3NzVmFsdWVQb29sID0gZG9jdW1lbnQgPyBkb2N1bWVudC0+
Y3NzVmFsdWVQb29sKCkuZ2V0KCkgOiAwOworICAgIGlmICh2YWx1ZUlEID09IENTU1ZhbHVlSW5o
ZXJpdCkgeworICAgICAgICBpZiAoY3NzVmFsdWVQb29sKQorICAgICAgICAgICAgdmFsdWUgPSBj
c3NWYWx1ZVBvb2wtPmNyZWF0ZUluaGVyaXRlZFZhbHVlKCk7CisgICAgICAgIGVsc2UKKyAgICAg
ICAgICAgIHZhbHVlID0gQ1NTSW5oZXJpdGVkVmFsdWU6OmNyZWF0ZSgpOworICAgICAgICBkZWNs
YXJhdGlvbi0+YWRkUGFyc2VkUHJvcGVydHkoQ1NTUHJvcGVydHkocHJvcGVydHlJZCwgdmFsdWUu
cmVsZWFzZSgpLCBpbXBvcnRhbnQpKTsKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfQorICAg
IGlmICh2YWx1ZUlEID09IENTU1ZhbHVlSW5pdGlhbCkgeworICAgICAgICBpZiAoY3NzVmFsdWVQ
b29sKQorICAgICAgICAgICAgdmFsdWUgPSBjc3NWYWx1ZVBvb2wtPmNyZWF0ZUV4cGxpY2l0SW5p
dGlhbFZhbHVlKCk7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIHZhbHVlID0gQ1NTSW5pdGlh
bFZhbHVlOjpjcmVhdGVFeHBsaWNpdCgpOworICAgICAgICBkZWNsYXJhdGlvbi0+YWRkUGFyc2Vk
UHJvcGVydHkoQ1NTUHJvcGVydHkocHJvcGVydHlJZCwgdmFsdWUucmVsZWFzZSgpLCBpbXBvcnRh
bnQpKTsKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfQorCisgICAgY29uc3QgUHJvcGVydHlN
YXBFbnRyeSBwcm9wZXJ0eSA9IHByb3BlcnR5Rm9ySUQocHJvcGVydHlJZCk7CisgICAgaWYgKCFw
cm9wZXJ0eS5tYXRjaCh2YWx1ZUlEKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgaWYg
KGRvY3VtZW50KQorICAgICAgICB2YWx1ZSA9IGNzc1ZhbHVlUG9vbC0+Y3JlYXRlSWRlbnRpZmll
clZhbHVlKHZhbHVlSUQpOworICAgIGVsc2UKKyAgICAgICAgdmFsdWUgPSBDU1NQcmltaXRpdmVW
YWx1ZTo6Y3JlYXRlSWRlbnRpZmllcih2YWx1ZUlEKTsKKyAgICBkZWNsYXJhdGlvbi0+YWRkUGFy
c2VkUHJvcGVydHkoQ1NTUHJvcGVydHkocHJvcGVydHlJZCwgdmFsdWUucmVsZWFzZSgpLCBpbXBv
cnRhbnQpKTsKKyAgICByZXR1cm4gdHJ1ZTsKK30KKwogUGFzc1JlZlB0cjxDU1NWYWx1ZUxpc3Q+
IENTU1BhcnNlcjo6cGFyc2VGb250RmFjZVZhbHVlKGNvbnN0IEF0b21pY1N0cmluZyYgc3RyaW5n
LCBDU1NTdHlsZVNoZWV0KiBjb250ZXh0U3R5bGVTaGVldCkKIHsKICAgICBSZWZQdHI8U3R5bGVQ
cm9wZXJ0eVNldD4gZHVtbXlTdHlsZSA9IFN0eWxlUHJvcGVydHlTZXQ6OmNyZWF0ZSgpOwpAQCAt
NDkzLDYgKzc3OSw4IEBAIGJvb2wgQ1NTUGFyc2VyOjpwYXJzZVZhbHVlKFN0eWxlUHJvcGVydHlT
ZXQqIGRlY2xhcmF0aW9uLCBpbnQgcHJvcGVydHlJZCwgY29uc3QKICAgICAgICAgcmV0dXJuIHRy
dWU7CiAgICAgaWYgKHBhcnNlQ29sb3JWYWx1ZShkZWNsYXJhdGlvbiwgcHJvcGVydHlJZCwgc3Ry
aW5nLCBpbXBvcnRhbnQsIHN0cmljdCwgY29udGV4dFN0eWxlU2hlZXQpKQogICAgICAgICByZXR1
cm4gdHJ1ZTsKKyAgICBpZiAocGFyc2VLZXl3b3JkVmFsdWUoZGVjbGFyYXRpb24sIHByb3BlcnR5
SWQsIHN0cmluZywgaW1wb3J0YW50LCBjb250ZXh0U3R5bGVTaGVldCkpCisgICAgICAgIHJldHVy
biB0cnVlOwogICAgIENTU1BhcnNlciBwYXJzZXIoc3RyaWN0KTsKICAgICByZXR1cm4gcGFyc2Vy
LnBhcnNlVmFsdWUoZGVjbGFyYXRpb24sIHByb3BlcnR5SWQsIHN0cmluZywgaW1wb3J0YW50LCBj
b250ZXh0U3R5bGVTaGVldCk7CiB9CkBAIC05MzAsNiArMTIxOCwyMSBAQCBib29sIENTU1BhcnNl
cjo6cGFyc2VWYWx1ZShpbnQgcHJvcElkLCBib29sIGltcG9ydGFudCkKICAgICBib29sIHZhbGlk
UHJpbWl0aXZlID0gZmFsc2U7CiAgICAgUmVmUHRyPENTU1ZhbHVlPiBwYXJzZWRWYWx1ZTsKIAor
ICAgIGlmIChpZCAmJiBpc0tleXdvcmRQcm9wZXJ0eUlEKHByb3BJZCkpIHsKKyAgICAgICAgY29u
c3QgUHJvcGVydHlNYXBFbnRyeSBwcm9wZXJ0eSA9IHByb3BlcnR5Rm9ySUQocHJvcElkKTsKKyAg
ICAgICAgaWYgKCFwcm9wZXJ0eS5tYXRjaChpZCkpCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7
CisKKyAgICAgICAgcGFyc2VkVmFsdWUgPSBwYXJzZVZhbGlkUHJpbWl0aXZlKGlkLCB2YWx1ZSk7
CisgICAgICAgIG1fdmFsdWVMaXN0LT5uZXh0KCk7CisgICAgICAgIEFTU0VSVCghbV9wYXJzZWRD
YWxjdWxhdGlvbik7CisgICAgICAgIGlmICghbV92YWx1ZUxpc3QtPmN1cnJlbnQoKSB8fCBpblNo
b3J0aGFuZCgpKSB7CisgICAgICAgICAgICBhZGRQcm9wZXJ0eShwcm9wSWQsIHBhcnNlZFZhbHVl
LnJlbGVhc2UoKSwgaW1wb3J0YW50KTsKKyAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAg
ICB9CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisKICAgICBzd2l0Y2ggKHN0YXRpY19j
YXN0PENTU1Byb3BlcnR5SUQ+KHByb3BJZCkpIHsKICAgICAgICAgLyogVGhlIGNvbW1lbnQgdG8g
dGhlIGxlZnQgZGVmaW5lcyBhbGwgdmFsaWQgdmFsdWUgb2YgdGhpcyBwcm9wZXJ0aWVzIGFzIGRl
ZmluZWQKICAgICAgICAgICogaW4gQ1NTIDIsIEFwcGVuZGl4IEYuIFByb3BlcnR5IGluZGV4CkBA
IC0xMDA0LDI1ICsxMzA3LDEwIEBAIGJvb2wgQ1NTUGFyc2VyOjpwYXJzZVZhbHVlKGludCBwcm9w
SWQsIGJvb2wgaW1wb3J0YW50KQogICAgICAgICAgICAgdmFsaWRQcmltaXRpdmUgPSAocHJvcElk
ID09IENTU1Byb3BlcnR5V2Via2l0UmVnaW9uQnJlYWtJbnNpZGUpID8gY3NzUmVnaW9uc0VuYWJs
ZWQoKSA6IHRydWU7CiAgICAgICAgIGJyZWFrOwogCi0gICAgY2FzZSBDU1NQcm9wZXJ0eUVtcHR5
Q2VsbHM6ICAgICAgICAgIC8vIHNob3cgfCBoaWRlIHwgaW5oZXJpdAotICAgICAgICBpZiAoaWQg
PT0gQ1NTVmFsdWVTaG93Ci0gICAgICAgICAgICB8fCBpZCA9PSBDU1NWYWx1ZUhpZGUpCi0gICAg
ICAgICAgICB2YWxpZFByaW1pdGl2ZSA9IHRydWU7Ci0gICAgICAgIGJyZWFrOwotCiAgICAgY2Fz
ZSBDU1NQcm9wZXJ0eUNvbnRlbnQ6ICAgICAgICAgICAgICAvLyBbIDxzdHJpbmc+IHwgPHVyaT4g
fCA8Y291bnRlcj4gfCBhdHRyKFgpIHwgb3Blbi1xdW90ZSB8CiAgICAgICAgIC8vIGNsb3NlLXF1
b3RlIHwgbm8tb3Blbi1xdW90ZSB8IG5vLWNsb3NlLXF1b3RlIF0rIHwgaW5oZXJpdAogICAgICAg
ICByZXR1cm4gcGFyc2VDb250ZW50KHByb3BJZCwgaW1wb3J0YW50KTsKIAotICAgIGNhc2UgQ1NT
UHJvcGVydHlXaGl0ZVNwYWNlOiAgICAgICAgICAvLyBub3JtYWwgfCBwcmUgfCBub3dyYXAgfCBp
bmhlcml0Ci0gICAgICAgIGlmIChpZCA9PSBDU1NWYWx1ZU5vcm1hbAotICAgICAgICAgICAgfHwg
aWQgPT0gQ1NTVmFsdWVQcmUKLSAgICAgICAgICAgIHx8IGlkID09IENTU1ZhbHVlUHJlV3JhcAot
ICAgICAgICAgICAgfHwgaWQgPT0gQ1NTVmFsdWVQcmVMaW5lCi0gICAgICAgICAgICB8fCBpZCA9
PSBDU1NWYWx1ZU5vd3JhcCkKLSAgICAgICAgICAgIHZhbGlkUHJpbWl0aXZlID0gdHJ1ZTsKLSAg
ICAgICAgYnJlYWs7Ci0KICAgICBjYXNlIENTU1Byb3BlcnR5Q2xpcDogICAgICAgICAgICAgICAg
IC8vIDxzaGFwZT4gfCBhdXRvIHwgaW5oZXJpdAogICAgICAgICBpZiAoaWQgPT0gQ1NTVmFsdWVB
dXRvKQogICAgICAgICAgICAgdmFsaWRQcmltaXRpdmUgPSB0cnVlOwpAQCAtMTAzMywyMiArMTMy
MSw2IEBAIGJvb2wgQ1NTUGFyc2VyOjpwYXJzZVZhbHVlKGludCBwcm9wSWQsIGJvb2wgaW1wb3J0
YW50KQogICAgIC8qIFN0YXJ0IG9mIHN1cHBvcnRlZCBDU1MgcHJvcGVydGllcyB3aXRoIHZhbGlk
YXRpb24uIFRoaXMgaXMgbmVlZGVkIGZvciBwYXJzZVNob3J0aGFuZCB0byB3b3JrCiAgICAgICog
Y29ycmVjdGx5IGFuZCBhbGxvd3Mgb3B0aW1pemF0aW9uIGluIFdlYkNvcmU6OmFwcGx5UnVsZSgu
LikKICAgICAgKi8KLSAgICBjYXNlIENTU1Byb3BlcnR5Q2FwdGlvblNpZGU6ICAgICAgICAgLy8g
dG9wIHwgYm90dG9tIHwgbGVmdCB8IHJpZ2h0IHwgaW5oZXJpdAotICAgICAgICBpZiAoaWQgPT0g
Q1NTVmFsdWVMZWZ0IHx8IGlkID09IENTU1ZhbHVlUmlnaHQgfHwKLSAgICAgICAgICAgIGlkID09
IENTU1ZhbHVlVG9wIHx8IGlkID09IENTU1ZhbHVlQm90dG9tKQotICAgICAgICAgICAgdmFsaWRQ
cmltaXRpdmUgPSB0cnVlOwotICAgICAgICBicmVhazsKLQotICAgIGNhc2UgQ1NTUHJvcGVydHlC
b3JkZXJDb2xsYXBzZTogICAgICAvLyBjb2xsYXBzZSB8IHNlcGFyYXRlIHwgaW5oZXJpdAotICAg
ICAgICBpZiAoaWQgPT0gQ1NTVmFsdWVDb2xsYXBzZSB8fCBpZCA9PSBDU1NWYWx1ZVNlcGFyYXRl
KQotICAgICAgICAgICAgdmFsaWRQcmltaXRpdmUgPSB0cnVlOwotICAgICAgICBicmVhazsKLQot
ICAgIGNhc2UgQ1NTUHJvcGVydHlWaXNpYmlsaXR5OiAgICAgICAgICAgLy8gdmlzaWJsZSB8IGhp
ZGRlbiB8IGNvbGxhcHNlIHwgaW5oZXJpdAotICAgICAgICBpZiAoaWQgPT0gQ1NTVmFsdWVWaXNp
YmxlIHx8IGlkID09IENTU1ZhbHVlSGlkZGVuIHx8IGlkID09IENTU1ZhbHVlQ29sbGFwc2UpCi0g
ICAgICAgICAgICB2YWxpZFByaW1pdGl2ZSA9IHRydWU7Ci0gICAgICAgIGJyZWFrOwotCiAgICAg
Y2FzZSBDU1NQcm9wZXJ0eU92ZXJmbG93OiB7CiAgICAgICAgIFNob3J0aGFuZFNjb3BlIHNjb3Bl
KHRoaXMsIHByb3BJZCk7CiAgICAgICAgIGlmIChudW0gIT0gMSB8fCAhcGFyc2VWYWx1ZShDU1NQ
cm9wZXJ0eU92ZXJmbG93WCwgaW1wb3J0YW50KSkKQEAgLTEwNTcsNTkgKzEzMjksNiBAQCBib29s
IENTU1BhcnNlcjo6cGFyc2VWYWx1ZShpbnQgcHJvcElkLCBib29sIGltcG9ydGFudCkKICAgICAg
ICAgYWRkUHJvcGVydHkoQ1NTUHJvcGVydHlPdmVyZmxvd1ksIHZhbHVlLCBpbXBvcnRhbnQpOwog
ICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9Ci0gICAgY2FzZSBDU1NQcm9wZXJ0eU92ZXJmbG93
WDoKLSAgICBjYXNlIENTU1Byb3BlcnR5T3ZlcmZsb3dZOiAgICAgICAgICAgLy8gdmlzaWJsZSB8
IGhpZGRlbiB8IHNjcm9sbCB8IGF1dG8gfCBtYXJxdWVlIHwgb3ZlcmxheSB8IGluaGVyaXQKLSAg
ICAgICAgaWYgKGlkID09IENTU1ZhbHVlVmlzaWJsZSB8fCBpZCA9PSBDU1NWYWx1ZUhpZGRlbiB8
fCBpZCA9PSBDU1NWYWx1ZVNjcm9sbCB8fCBpZCA9PSBDU1NWYWx1ZUF1dG8gfHwKLSAgICAgICAg
ICAgIGlkID09IENTU1ZhbHVlT3ZlcmxheSB8fCBpZCA9PSBDU1NWYWx1ZVdlYmtpdE1hcnF1ZWUp
Ci0gICAgICAgICAgICB2YWxpZFByaW1pdGl2ZSA9IHRydWU7Ci0gICAgICAgIGJyZWFrOwotCi0g
ICAgY2FzZSBDU1NQcm9wZXJ0eUxpc3RTdHlsZVBvc2l0aW9uOiAgLy8gaW5zaWRlIHwgb3V0c2lk
ZSB8IGluaGVyaXQKLSAgICAgICAgaWYgKGlkID09IENTU1ZhbHVlSW5zaWRlIHx8IGlkID09IENT
U1ZhbHVlT3V0c2lkZSkKLSAgICAgICAgICAgIHZhbGlkUHJpbWl0aXZlID0gdHJ1ZTsKLSAgICAg
ICAgYnJlYWs7Ci0KLSAgICBjYXNlIENTU1Byb3BlcnR5TGlzdFN0eWxlVHlwZToKLSAgICAgICAg
Ly8gU2VlIHNlY3Rpb24gQ1NTX1BST1BfTElTVF9TVFlMRV9UWVBFIG9mIGZpbGUgQ1NTVmFsdWVL
ZXl3b3Jkcy5pbgotICAgICAgICAvLyBmb3IgdGhlIGxpc3Qgb2Ygc3VwcG9ydGVkIGxpc3Qtc3R5
bGUtdHlwZXMuCi0gICAgICAgIGlmICgoaWQgPj0gQ1NTVmFsdWVEaXNjICYmIGlkIDw9IENTU1Zh
bHVlS2F0YWthbmFJcm9oYSkgfHwgaWQgPT0gQ1NTVmFsdWVOb25lKQotICAgICAgICAgICAgdmFs
aWRQcmltaXRpdmUgPSB0cnVlOwotICAgICAgICBicmVhazsKLQotICAgIGNhc2UgQ1NTUHJvcGVy
dHlEaXNwbGF5OgotICAgICAgICAvLyBpbmxpbmUgfCBibG9jayB8IGxpc3QtaXRlbSB8IHJ1bi1p
biB8IGlubGluZS1ibG9jayB8IHRhYmxlIHwKLSAgICAgICAgLy8gaW5saW5lLXRhYmxlIHwgdGFi
bGUtcm93LWdyb3VwIHwgdGFibGUtaGVhZGVyLWdyb3VwIHwgdGFibGUtZm9vdGVyLWdyb3VwIHwg
dGFibGUtcm93IHwKLSAgICAgICAgLy8gdGFibGUtY29sdW1uLWdyb3VwIHwgdGFibGUtY29sdW1u
IHwgdGFibGUtY2VsbCB8IHRhYmxlLWNhcHRpb24gfCAtd2Via2l0LWJveCB8IC13ZWJraXQtaW5s
aW5lLWJveCB8IG5vbmUgfCBpbmhlcml0Ci0gICAgICAgIC8vIC13ZWJraXQtZmxleGJveCB8IC13
ZWJraXQtaW5saW5lLWZsZXhib3ggfCAtd2Via2l0LWdyaWQgfCAtd2Via2l0LWlubGluZS1ncmlk
Ci0gICAgICAgIGlmICgoaWQgPj0gQ1NTVmFsdWVJbmxpbmUgJiYgaWQgPD0gQ1NTVmFsdWVXZWJr
aXRJbmxpbmVGbGV4Ym94KSB8fCBpZCA9PSBDU1NWYWx1ZU5vbmUpCi0gICAgICAgICAgICB2YWxp
ZFByaW1pdGl2ZSA9IHRydWU7Ci0jaWYgRU5BQkxFKENTU19HUklEX0xBWU9VVCkKLSAgICAgICAg
aWYgKGlkID09IENTU1ZhbHVlV2Via2l0R3JpZCB8fCBpZCA9PSBDU1NWYWx1ZVdlYmtpdElubGlu
ZUdyaWQpCi0gICAgICAgICAgICB2YWxpZFByaW1pdGl2ZSA9IHRydWU7Ci0jZW5kaWYKLSAgICAg
ICAgYnJlYWs7Ci0KLSAgICBjYXNlIENTU1Byb3BlcnR5RGlyZWN0aW9uOiAgICAgICAgICAgIC8v
IGx0ciB8IHJ0bCB8IGluaGVyaXQKLSAgICAgICAgaWYgKGlkID09IENTU1ZhbHVlTHRyIHx8IGlk
ID09IENTU1ZhbHVlUnRsKQotICAgICAgICAgICAgdmFsaWRQcmltaXRpdmUgPSB0cnVlOwotICAg
ICAgICBicmVhazsKLQotICAgIGNhc2UgQ1NTUHJvcGVydHlUZXh0VHJhbnNmb3JtOiAgICAgICAv
LyBjYXBpdGFsaXplIHwgdXBwZXJjYXNlIHwgbG93ZXJjYXNlIHwgbm9uZSB8IGluaGVyaXQKLSAg
ICAgICAgaWYgKChpZCA+PSBDU1NWYWx1ZUNhcGl0YWxpemUgJiYgaWQgPD0gQ1NTVmFsdWVMb3dl
cmNhc2UpIHx8IGlkID09IENTU1ZhbHVlTm9uZSkKLSAgICAgICAgICAgIHZhbGlkUHJpbWl0aXZl
ID0gdHJ1ZTsKLSAgICAgICAgYnJlYWs7Ci0KLSAgICBjYXNlIENTU1Byb3BlcnR5RmxvYXQ6ICAg
ICAgICAgICAgICAgIC8vIGxlZnQgfCByaWdodCB8IG5vbmUgfCBwb3NpdGlvbmVkIHwgY2VudGVy
IChmb3IgYnVnZ3kgQ1NTLCBtYXBzIHRvIG5vbmUpCi0gICAgICAgIGlmIChpZCA9PSBDU1NWYWx1
ZUxlZnQgfHwgaWQgPT0gQ1NTVmFsdWVSaWdodAotICAgICAgICAgICAgfHwgaWQgPT0gQ1NTVmFs
dWVOb25lIHx8IGlkID09IENTU1ZhbHVlQ2VudGVyIHx8IGlkID09IENTU1ZhbHVlV2Via2l0UG9z
aXRpb25lZCkKLSAgICAgICAgICAgIHZhbGlkUHJpbWl0aXZlID0gdHJ1ZTsKLSAgICAgICAgYnJl
YWs7Ci0KLSAgICBjYXNlIENTU1Byb3BlcnR5Q2xlYXI6ICAgICAgICAgICAgICAgIC8vIG5vbmUg
fCBsZWZ0IHwgcmlnaHQgfCBib3RoIHwgaW5oZXJpdAotICAgICAgICBpZiAoaWQgPT0gQ1NTVmFs
dWVOb25lIHx8IGlkID09IENTU1ZhbHVlTGVmdAotICAgICAgICAgICAgfHwgaWQgPT0gQ1NTVmFs
dWVSaWdodCB8fCBpZCA9PSBDU1NWYWx1ZUJvdGgpCi0gICAgICAgICAgICB2YWxpZFByaW1pdGl2
ZSA9IHRydWU7Ci0gICAgICAgIGJyZWFrOwogCiAgICAgY2FzZSBDU1NQcm9wZXJ0eVRleHRBbGln
bjoKICAgICAgICAgLy8gbGVmdCB8IHJpZ2h0IHwgY2VudGVyIHwganVzdGlmeSB8IHdlYmtpdF9s
ZWZ0IHwgd2Via2l0X3JpZ2h0IHwgd2Via2l0X2NlbnRlciB8IHdlYmtpdF9tYXRjaF9wYXJlbnQg
fApAQCAtMTExOSwyNCArMTMzOCw2IEBAIGJvb2wgQ1NTUGFyc2VyOjpwYXJzZVZhbHVlKGludCBw
cm9wSWQsIGJvb2wgaW1wb3J0YW50KQogICAgICAgICAgICAgdmFsaWRQcmltaXRpdmUgPSB0cnVl
OwogICAgICAgICBicmVhazsKIAotICAgIGNhc2UgQ1NTUHJvcGVydHlPdXRsaW5lU3R5bGU6ICAg
ICAgICAvLyAoPGJvcmRlci1zdHlsZT4gZXhjZXB0IGhpZGRlbikgfCBhdXRvIHwgaW5oZXJpdAot
ICAgICAgICBpZiAoaWQgPT0gQ1NTVmFsdWVBdXRvIHx8IGlkID09IENTU1ZhbHVlTm9uZSB8fCAo
aWQgPj0gQ1NTVmFsdWVJbnNldCAmJiBpZCA8PSBDU1NWYWx1ZURvdWJsZSkpCi0gICAgICAgICAg
ICB2YWxpZFByaW1pdGl2ZSA9IHRydWU7Ci0gICAgICAgIGJyZWFrOwotCi0gICAgY2FzZSBDU1NQ
cm9wZXJ0eUJvcmRlclRvcFN0eWxlOiAgICAgLy8vLyA8Ym9yZGVyLXN0eWxlPiB8IGluaGVyaXQK
LSAgICBjYXNlIENTU1Byb3BlcnR5Qm9yZGVyUmlnaHRTdHlsZTogICAvLyAgIERlZmluZWQgYXM6
ICAgIG5vbmUgfCBoaWRkZW4gfCBkb3R0ZWQgfCBkYXNoZWQgfAotICAgIGNhc2UgQ1NTUHJvcGVy
dHlCb3JkZXJCb3R0b21TdHlsZTogIC8vICAgc29saWQgfCBkb3VibGUgfCBncm9vdmUgfCByaWRn
ZSB8IGluc2V0IHwgb3V0c2V0Ci0gICAgY2FzZSBDU1NQcm9wZXJ0eUJvcmRlckxlZnRTdHlsZToK
LSAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0Qm9yZGVyU3RhcnRTdHlsZToKLSAgICBjYXNlIENT
U1Byb3BlcnR5V2Via2l0Qm9yZGVyRW5kU3R5bGU6Ci0gICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtp
dEJvcmRlckJlZm9yZVN0eWxlOgotICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRCb3JkZXJBZnRl
clN0eWxlOgotICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRDb2x1bW5SdWxlU3R5bGU6Ci0gICAg
ICAgIGlmIChpZCA+PSBDU1NWYWx1ZU5vbmUgJiYgaWQgPD0gQ1NTVmFsdWVEb3VibGUpCi0gICAg
ICAgICAgICB2YWxpZFByaW1pdGl2ZSA9IHRydWU7Ci0gICAgICAgIGJyZWFrOwotCiAgICAgY2Fz
ZSBDU1NQcm9wZXJ0eUZvbnRXZWlnaHQ6ICAvLyBub3JtYWwgfCBib2xkIHwgYm9sZGVyIHwgbGln
aHRlciB8IDEwMCB8IDIwMCB8IDMwMCB8IDQwMCB8IDUwMCB8IDYwMCB8IDcwMCB8IDgwMCB8IDkw
MCB8IGluaGVyaXQKICAgICAgICAgcmV0dXJuIHBhcnNlRm9udFdlaWdodChpbXBvcnRhbnQpOwog
CkBAIC0xMzUxLDIxICsxNTUyLDYgQEAgYm9vbCBDU1NQYXJzZXI6OnBhcnNlVmFsdWUoaW50IHBy
b3BJZCwgYm9vbCBpbXBvcnRhbnQpCiAgICAgICAgICAgICB2YWxpZFByaW1pdGl2ZSA9IHZhbGlk
VW5pdCh2YWx1ZSwgRkxlbmd0aCwgbV9zdHJpY3QpOwogICAgICAgICBicmVhazsKIAotICAgIGNh
c2UgQ1NTUHJvcGVydHlXb3JkQnJlYWs6ICAgICAgICAgIC8vIG5vcm1hbCB8IGJyZWFrLWFsbCB8
IGJyZWFrLXdvcmQgKHRoaXMgaXMgYSBjdXN0b20gZXh0ZW5zaW9uKQotICAgICAgICBpZiAoaWQg
PT0gQ1NTVmFsdWVOb3JtYWwgfHwgaWQgPT0gQ1NTVmFsdWVCcmVha0FsbCB8fCBpZCA9PSBDU1NW
YWx1ZUJyZWFrV29yZCkKLSAgICAgICAgICAgIHZhbGlkUHJpbWl0aXZlID0gdHJ1ZTsKLSAgICAg
ICAgYnJlYWs7Ci0KLSAgICBjYXNlIENTU1Byb3BlcnR5V29yZFdyYXA6ICAgICAgICAgICAvLyBu
b3JtYWwgfCBicmVhay13b3JkCi0gICAgICAgIGlmIChpZCA9PSBDU1NWYWx1ZU5vcm1hbCB8fCBp
ZCA9PSBDU1NWYWx1ZUJyZWFrV29yZCkKLSAgICAgICAgICAgIHZhbGlkUHJpbWl0aXZlID0gdHJ1
ZTsKLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBDU1NQcm9wZXJ0eVNwZWFrOiAgICAgICAgICAg
Ly8gbm9uZSB8IG5vcm1hbCB8IHNwZWxsLW91dCB8IGRpZ2l0cyB8IGxpdGVyYWwtcHVuY3R1YXRp
b24gfCBuby1wdW5jdHVhdGlvbiB8IGluaGVyaXQKLSAgICAgICAgaWYgKGlkID09IENTU1ZhbHVl
Tm9uZSB8fCBpZCA9PSBDU1NWYWx1ZU5vcm1hbCB8fCBpZCA9PSBDU1NWYWx1ZVNwZWxsT3V0IHx8
IGlkID09IENTU1ZhbHVlRGlnaXRzCi0gICAgICAgICAgICB8fCBpZCA9PSBDU1NWYWx1ZUxpdGVy
YWxQdW5jdHVhdGlvbiB8fCBpZCA9PSBDU1NWYWx1ZU5vUHVuY3R1YXRpb24pCi0gICAgICAgICAg
ICB2YWxpZFByaW1pdGl2ZSA9IHRydWU7Ci0gICAgICAgIGJyZWFrOwotCiAgICAgY2FzZSBDU1NQ
cm9wZXJ0eVRleHRJbmRlbnQ6ICAgICAgICAgIC8vIDxsZW5ndGg+IHwgPHBlcmNlbnRhZ2U+IHwg
aW5oZXJpdAogICAgICAgICB2YWxpZFByaW1pdGl2ZSA9ICghaWQgJiYgdmFsaWRVbml0KHZhbHVl
LCBGTGVuZ3RoIHwgRlBlcmNlbnQsIG1fc3RyaWN0KSk7CiAgICAgICAgIGJyZWFrOwpAQCAtMTQw
OCwxMSArMTU5NCw2IEBAIGJvb2wgQ1NTUGFyc2VyOjpwYXJzZVZhbHVlKGludCBwcm9wSWQsIGJv
b2wgaW1wb3J0YW50KQogICAgICAgICAgICAgdmFsaWRQcmltaXRpdmUgPSAodmFsaWRVbml0KHZh
bHVlLCBGTGVuZ3RoIHwgRlBlcmNlbnQgfCBGTm9uTmVnLCBtX3N0cmljdCkpOwogICAgICAgICBi
cmVhazsKIAotICAgIGNhc2UgQ1NTUHJvcGVydHlGb250U3R5bGU6ICAgICAgICAgICAvLyBub3Jt
YWwgfCBpdGFsaWMgfCBvYmxpcXVlIHwgaW5oZXJpdAotICAgICAgICBpZiAoaWQgPT0gQ1NTVmFs
dWVOb3JtYWwgfHwgaWQgPT0gQ1NTVmFsdWVJdGFsaWMgfHwgaWQgPT0gQ1NTVmFsdWVPYmxpcXVl
KQotICAgICAgICAgICAgdmFsaWRQcmltaXRpdmUgPSB0cnVlOwotICAgICAgICBicmVhazsKLQog
ICAgIGNhc2UgQ1NTUHJvcGVydHlGb250VmFyaWFudDogICAgICAgICAvLyBub3JtYWwgfCBzbWFs
bC1jYXBzIHwgaW5oZXJpdAogICAgICAgICByZXR1cm4gcGFyc2VGb250VmFyaWFudChpbXBvcnRh
bnQpOwogCkBAIC0xNTI4LDExICsxNzA5LDYgQEAgYm9vbCBDU1NQYXJzZXI6OnBhcnNlVmFsdWUo
aW50IHByb3BJZCwgYm9vbCBpbXBvcnRhbnQpCiAgICAgICAgICAgICB2YWxpZFByaW1pdGl2ZSA9
ICghaWQgJiYgdmFsaWRVbml0KHZhbHVlLCBGTnVtYmVyIHwgRlBlcmNlbnQgfCBGTm9uTmVnLCB0
cnVlKSk7CiAgICAgICAgIGJyZWFrOwogCi0gICAgY2FzZSBDU1NQcm9wZXJ0eVRhYmxlTGF5b3V0
OiAgICAgICAgIC8vIGF1dG8gfCBmaXhlZCB8IGluaGVyaXQKLSAgICAgICAgaWYgKGlkID09IENT
U1ZhbHVlQXV0byB8fCBpZCA9PSBDU1NWYWx1ZUZpeGVkKQotICAgICAgICAgICAgdmFsaWRQcmlt
aXRpdmUgPSB0cnVlOwotICAgICAgICBicmVhazsKLQogICAgIGNhc2UgQ1NTUHJvcGVydHlTcmM6
ICAvLyBPbmx5IHVzZWQgd2l0aGluIEBmb250LWZhY2UsIHNvIGNhbm5vdCB1c2UgaW5oZXJpdCB8
IGluaXRpYWwgb3IgYmUgIWltcG9ydGFudC4gIFRoaXMgaXMgYSBsaXN0IG9mIHVybHMgb3IgbG9j
YWwgcmVmZXJlbmNlcy4KICAgICAgICAgcmV0dXJuIHBhcnNlRm9udEZhY2VTcmMoKTsKIApAQCAt
MTU0MCwxMCArMTcxNiw2IEBAIGJvb2wgQ1NTUGFyc2VyOjpwYXJzZVZhbHVlKGludCBwcm9wSWQs
IGJvb2wgaW1wb3J0YW50KQogICAgICAgICByZXR1cm4gcGFyc2VGb250RmFjZVVuaWNvZGVSYW5n
ZSgpOwogCiAgICAgLyogQ1NTMyBwcm9wZXJ0aWVzICovCi0gICAgY2FzZSBDU1NQcm9wZXJ0eVdl
YmtpdEFwcGVhcmFuY2U6Ci0gICAgICAgIGlmICgoaWQgPj0gQ1NTVmFsdWVDaGVja2JveCAmJiBp
ZCA8PSBDU1NWYWx1ZVRleHRhcmVhKSB8fCBpZCA9PSBDU1NWYWx1ZU5vbmUpCi0gICAgICAgICAg
ICB2YWxpZFByaW1pdGl2ZSA9IHRydWU7Ci0gICAgICAgIGJyZWFrOwogCiAgICAgY2FzZSBDU1NQ
cm9wZXJ0eUJvcmRlckltYWdlOiB7CiAgICAgICAgIFJlZlB0cjxDU1NWYWx1ZT4gcmVzdWx0OwpA
QCAtMTY1MSwyOSArMTgyMyw2IEBAIGJvb2wgQ1NTUGFyc2VyOjpwYXJzZVZhbHVlKGludCBwcm9w
SWQsIGJvb2wgaW1wb3J0YW50KQogICAgIGNhc2UgQ1NTUHJvcGVydHlPcGFjaXR5OgogICAgICAg
ICB2YWxpZFByaW1pdGl2ZSA9IHZhbGlkVW5pdCh2YWx1ZSwgRk51bWJlciwgbV9zdHJpY3QpOwog
ICAgICAgICBicmVhazsKLSAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0Qm94QWxpZ246Ci0gICAg
ICAgIGlmIChpZCA9PSBDU1NWYWx1ZVN0cmV0Y2ggfHwgaWQgPT0gQ1NTVmFsdWVTdGFydCB8fCBp
ZCA9PSBDU1NWYWx1ZUVuZCB8fAotICAgICAgICAgICAgaWQgPT0gQ1NTVmFsdWVDZW50ZXIgfHwg
aWQgPT0gQ1NTVmFsdWVCYXNlbGluZSkKLSAgICAgICAgICAgIHZhbGlkUHJpbWl0aXZlID0gdHJ1
ZTsKLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdEJveERpcmVjdGlv
bjoKLSAgICAgICAgaWYgKGlkID09IENTU1ZhbHVlTm9ybWFsIHx8IGlkID09IENTU1ZhbHVlUmV2
ZXJzZSkKLSAgICAgICAgICAgIHZhbGlkUHJpbWl0aXZlID0gdHJ1ZTsKLSAgICAgICAgYnJlYWs7
Ci0gICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdEJveExpbmVzOgotICAgICAgICBpZiAoaWQgPT0g
Q1NTVmFsdWVTaW5nbGUgfHwgaWQgPT0gQ1NTVmFsdWVNdWx0aXBsZSkKLSAgICAgICAgICAgIHZh
bGlkUHJpbWl0aXZlID0gdHJ1ZTsKLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBDU1NQcm9wZXJ0
eVdlYmtpdEJveE9yaWVudDoKLSAgICAgICAgaWYgKGlkID09IENTU1ZhbHVlSG9yaXpvbnRhbCB8
fCBpZCA9PSBDU1NWYWx1ZVZlcnRpY2FsIHx8Ci0gICAgICAgICAgICBpZCA9PSBDU1NWYWx1ZUlu
bGluZUF4aXMgfHwgaWQgPT0gQ1NTVmFsdWVCbG9ja0F4aXMpCi0gICAgICAgICAgICB2YWxpZFBy
aW1pdGl2ZSA9IHRydWU7Ci0gICAgICAgIGJyZWFrOwotICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJr
aXRCb3hQYWNrOgotICAgICAgICBpZiAoaWQgPT0gQ1NTVmFsdWVTdGFydCB8fCBpZCA9PSBDU1NW
YWx1ZUVuZCB8fAotICAgICAgICAgICAgaWQgPT0gQ1NTVmFsdWVDZW50ZXIgfHwgaWQgPT0gQ1NT
VmFsdWVKdXN0aWZ5KQotICAgICAgICAgICAgdmFsaWRQcmltaXRpdmUgPSB0cnVlOwotICAgICAg
ICBicmVhazsKICAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0Qm94RmxleDoKICAgICAgICAgdmFs
aWRQcmltaXRpdmUgPSB2YWxpZFVuaXQodmFsdWUsIEZOdW1iZXIsIG1fc3RyaWN0KTsKICAgICAg
ICAgYnJlYWs7CkBAIC0xNjgxLDEyICsxODMwLDYgQEAgYm9vbCBDU1NQYXJzZXI6OnBhcnNlVmFs
dWUoaW50IHByb3BJZCwgYm9vbCBpbXBvcnRhbnQpCiAgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtp
dEJveE9yZGluYWxHcm91cDoKICAgICAgICAgdmFsaWRQcmltaXRpdmUgPSB2YWxpZFVuaXQodmFs
dWUsIEZJbnRlZ2VyIHwgRk5vbk5lZywgdHJ1ZSk7CiAgICAgICAgIGJyZWFrOwotICAgIGNhc2Ug
Q1NTUHJvcGVydHlCb3hTaXppbmc6Ci0gICAgICAgIHZhbGlkUHJpbWl0aXZlID0gaWQgPT0gQ1NT
VmFsdWVCb3JkZXJCb3ggfHwgaWQgPT0gQ1NTVmFsdWVDb250ZW50Qm94OwotICAgICAgICBicmVh
azsKLSAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0Q29sb3JDb3JyZWN0aW9uOgotICAgICAgICB2
YWxpZFByaW1pdGl2ZSA9IGlkID09IENTU1ZhbHVlU3JnYiB8fCBpZCA9PSBDU1NWYWx1ZURlZmF1
bHQ7Ci0gICAgICAgIGJyZWFrOwogI2lmIEVOQUJMRShDU1NfRklMVEVSUykKICAgICBjYXNlIENT
U1Byb3BlcnR5V2Via2l0RmlsdGVyOgogICAgICAgICBpZiAoaWQgPT0gQ1NTVmFsdWVOb25lKQpA
QCAtMTcwOSwxOCArMTg1Miw2IEBAIGJvb2wgQ1NTUGFyc2VyOjpwYXJzZVZhbHVlKGludCBwcm9w
SWQsIGJvb2wgaW1wb3J0YW50KQogICAgICAgICAgICAgbV92YWx1ZUxpc3QtPm5leHQoKTsKICAg
ICAgICAgfQogICAgICAgICBicmVhazsKLSAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0RmxleFBh
Y2s6Ci0gICAgICAgIHZhbGlkUHJpbWl0aXZlID0gaWQgPT0gQ1NTVmFsdWVTdGFydCB8fCBpZCA9
PSBDU1NWYWx1ZUVuZCB8fCBpZCA9PSBDU1NWYWx1ZUNlbnRlciB8fCBpZCA9PSBDU1NWYWx1ZUp1
c3RpZnkgfHwgaWQgPT0gQ1NTVmFsdWVEaXN0cmlidXRlOwotICAgICAgICBicmVhazsKLSAgICBj
YXNlIENTU1Byb3BlcnR5V2Via2l0RmxleEFsaWduOgotICAgICAgICB2YWxpZFByaW1pdGl2ZSA9
IGlkID09IENTU1ZhbHVlU3RhcnQgfHwgaWQgPT0gQ1NTVmFsdWVFbmQgfHwgaWQgPT0gQ1NTVmFs
dWVDZW50ZXIgfHwgaWQgPT0gQ1NTVmFsdWVCYXNlbGluZSB8fCBpZCA9PSBDU1NWYWx1ZVN0cmV0
Y2g7Ci0gICAgICAgIGJyZWFrOwotICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRGbGV4SXRlbUFs
aWduOgotICAgICAgICB2YWxpZFByaW1pdGl2ZSA9IGlkID09IENTU1ZhbHVlQXV0byB8fCBpZCA9
PSBDU1NWYWx1ZVN0YXJ0IHx8IGlkID09IENTU1ZhbHVlRW5kIHx8IGlkID09IENTU1ZhbHVlQ2Vu
dGVyIHx8IGlkID09IENTU1ZhbHVlQmFzZWxpbmUgfHwgaWQgPT0gQ1NTVmFsdWVTdHJldGNoOwot
ICAgICAgICBicmVhazsKLSAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0RmxleERpcmVjdGlvbjoK
LSAgICAgICAgdmFsaWRQcmltaXRpdmUgPSBpZCA9PSBDU1NWYWx1ZVJvdyB8fCBpZCA9PSBDU1NW
YWx1ZVJvd1JldmVyc2UgfHwgaWQgPT0gQ1NTVmFsdWVDb2x1bW4gfHwgaWQgPT0gQ1NTVmFsdWVD
b2x1bW5SZXZlcnNlOwotICAgICAgICBicmVhazsKICAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0
RmxleFdyYXA6CiAgICAgICAgIHZhbGlkUHJpbWl0aXZlID0gaWQgPT0gQ1NTVmFsdWVOb25lIHx8
IGlkID09IENTU1ZhbHVlV3JhcCB8fCBpZCA9PSBDU1NWYWx1ZVdyYXBSZXZlcnNlOwogICAgICAg
ICBicmVhazsKQEAgLTE3MzAsMjIgKzE4NjEsMTIgQEAgYm9vbCBDU1NQYXJzZXI6OnBhcnNlVmFs
dWUoaW50IHByb3BJZCwgYm9vbCBpbXBvcnRhbnQpCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBDU1NQcm9wZXJ0eVdlYmtpdE1hcnF1ZWVTdHlsZSwgQ1NTUHJvcGVydHlXZWJr
aXRNYXJxdWVlU3BlZWQgfTsKICAgICAgICAgcmV0dXJuIHBhcnNlU2hvcnRoYW5kKHByb3BJZCwg
cHJvcGVydGllcywgNSwgaW1wb3J0YW50KTsKICAgICB9Ci0gICAgY2FzZSBDU1NQcm9wZXJ0eVdl
YmtpdE1hcnF1ZWVEaXJlY3Rpb246Ci0gICAgICAgIGlmIChpZCA9PSBDU1NWYWx1ZUZvcndhcmRz
IHx8IGlkID09IENTU1ZhbHVlQmFja3dhcmRzIHx8IGlkID09IENTU1ZhbHVlQWhlYWQgfHwKLSAg
ICAgICAgICAgIGlkID09IENTU1ZhbHVlUmV2ZXJzZSB8fCBpZCA9PSBDU1NWYWx1ZUxlZnQgfHwg
aWQgPT0gQ1NTVmFsdWVSaWdodCB8fCBpZCA9PSBDU1NWYWx1ZURvd24gfHwKLSAgICAgICAgICAg
IGlkID09IENTU1ZhbHVlVXAgfHwgaWQgPT0gQ1NTVmFsdWVBdXRvKQotICAgICAgICAgICAgdmFs
aWRQcmltaXRpdmUgPSB0cnVlOwotICAgICAgICBicmVhazsKICAgICBjYXNlIENTU1Byb3BlcnR5
V2Via2l0TWFycXVlZUluY3JlbWVudDoKICAgICAgICAgaWYgKGlkID09IENTU1ZhbHVlU21hbGwg
fHwgaWQgPT0gQ1NTVmFsdWVMYXJnZSB8fCBpZCA9PSBDU1NWYWx1ZU1lZGl1bSkKICAgICAgICAg
ICAgIHZhbGlkUHJpbWl0aXZlID0gdHJ1ZTsKICAgICAgICAgZWxzZQogICAgICAgICAgICAgdmFs
aWRQcmltaXRpdmUgPSB2YWxpZFVuaXQodmFsdWUsIEZMZW5ndGggfCBGUGVyY2VudCwgbV9zdHJp
Y3QpOwogICAgICAgICBicmVhazsKLSAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0TWFycXVlZVN0
eWxlOgotICAgICAgICBpZiAoaWQgPT0gQ1NTVmFsdWVOb25lIHx8IGlkID09IENTU1ZhbHVlU2xp
ZGUgfHwgaWQgPT0gQ1NTVmFsdWVTY3JvbGwgfHwgaWQgPT0gQ1NTVmFsdWVBbHRlcm5hdGUpCi0g
ICAgICAgICAgICB2YWxpZFByaW1pdGl2ZSA9IHRydWU7Ci0gICAgICAgIGJyZWFrOwogICAgIGNh
c2UgQ1NTUHJvcGVydHlXZWJraXRNYXJxdWVlUmVwZXRpdGlvbjoKICAgICAgICAgaWYgKGlkID09
IENTU1ZhbHVlSW5maW5pdGUpCiAgICAgICAgICAgICB2YWxpZFByaW1pdGl2ZSA9IHRydWU7CkBA
IC0xNzcwLDIzICsxODkxLDYgQEAgYm9vbCBDU1NQYXJzZXI6OnBhcnNlVmFsdWUoaW50IHByb3BJ
ZCwgYm9vbCBpbXBvcnRhbnQpCiAgICAgICAgIGlmIChjc3NSZWdpb25zRW5hYmxlZCgpICYmIChp
ZCA9PSBDU1NWYWx1ZUF1dG8gfHwgaWQgPT0gQ1NTVmFsdWVCcmVhaykpCiAgICAgICAgICAgICB2
YWxpZFByaW1pdGl2ZSA9IHRydWU7CiAgICAgICAgIGJyZWFrOwotCi0gICAgY2FzZSBDU1NQcm9w
ZXJ0eVdlYmtpdFVzZXJEcmFnOiAvLyBhdXRvIHwgbm9uZSB8IGVsZW1lbnQKLSAgICAgICAgaWYg
KGlkID09IENTU1ZhbHVlQXV0byB8fCBpZCA9PSBDU1NWYWx1ZU5vbmUgfHwgaWQgPT0gQ1NTVmFs
dWVFbGVtZW50KQotICAgICAgICAgICAgdmFsaWRQcmltaXRpdmUgPSB0cnVlOwotICAgICAgICBi
cmVhazsKLSAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0VXNlck1vZGlmeTogLy8gcmVhZC1vbmx5
IHwgcmVhZC13cml0ZQotICAgICAgICBpZiAoaWQgPT0gQ1NTVmFsdWVSZWFkT25seSB8fCBpZCA9
PSBDU1NWYWx1ZVJlYWRXcml0ZSB8fCBpZCA9PSBDU1NWYWx1ZVJlYWRXcml0ZVBsYWludGV4dE9u
bHkpCi0gICAgICAgICAgICB2YWxpZFByaW1pdGl2ZSA9IHRydWU7Ci0gICAgICAgIGJyZWFrOwot
ICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRVc2VyU2VsZWN0OiAvLyBhdXRvIHwgbm9uZSB8IHRl
eHQKLSAgICAgICAgaWYgKGlkID09IENTU1ZhbHVlQXV0byB8fCBpZCA9PSBDU1NWYWx1ZU5vbmUg
fHwgaWQgPT0gQ1NTVmFsdWVUZXh0KQotICAgICAgICAgICAgdmFsaWRQcmltaXRpdmUgPSB0cnVl
OwotICAgICAgICBicmVhazsKLSAgICBjYXNlIENTU1Byb3BlcnR5VGV4dE92ZXJmbG93OiAvLyBj
bGlwIHwgZWxsaXBzaXMKLSAgICAgICAgaWYgKGlkID09IENTU1ZhbHVlQ2xpcCB8fCBpZCA9PSBD
U1NWYWx1ZUVsbGlwc2lzKQotICAgICAgICAgICAgdmFsaWRQcmltaXRpdmUgPSB0cnVlOwotICAg
ICAgICBicmVhazsKICAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0VHJhbnNmb3JtOgogICAgICAg
ICBpZiAoaWQgPT0gQ1NTVmFsdWVOb25lKQogICAgICAgICAgICAgdmFsaWRQcmltaXRpdmUgPSB0
cnVlOwpAQCAtMTgxNywxOCArMTkyMSw2IEBAIGJvb2wgQ1NTUGFyc2VyOjpwYXJzZVZhbHVlKGlu
dCBwcm9wSWQsIGJvb2wgaW1wb3J0YW50KQogICAgICAgICB9CiAgICAgICAgIHJldHVybiBmYWxz
ZTsKICAgICB9Ci0gICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdFRyYW5zZm9ybVN0eWxlOgotICAg
ICAgICBpZiAodmFsdWUtPmlkID09IENTU1ZhbHVlRmxhdCB8fCB2YWx1ZS0+aWQgPT0gQ1NTVmFs
dWVQcmVzZXJ2ZTNkKQotICAgICAgICAgICAgdmFsaWRQcmltaXRpdmUgPSB0cnVlOwotICAgICAg
ICBicmVhazsKLSAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0QmFja2ZhY2VWaXNpYmlsaXR5Ogot
ICAgICAgICBpZiAodmFsdWUtPmlkID09IENTU1ZhbHVlVmlzaWJsZSB8fCB2YWx1ZS0+aWQgPT0g
Q1NTVmFsdWVIaWRkZW4pCi0gICAgICAgICAgICB2YWxpZFByaW1pdGl2ZSA9IHRydWU7Ci0gICAg
ICAgIGJyZWFrOwotICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRQcmludENvbG9yQWRqdXN0Ogot
ICAgICAgICBpZiAodmFsdWUtPmlkID09IENTU1ZhbHVlRXhhY3QgfHwgdmFsdWUtPmlkID09IENT
U1ZhbHVlRWNvbm9teSkKLSAgICAgICAgICAgIHZhbGlkUHJpbWl0aXZlID0gdHJ1ZTsKLSAgICAg
ICAgYnJlYWs7CiAgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdFBlcnNwZWN0aXZlOgogICAgICAg
ICBpZiAoaWQgPT0gQ1NTVmFsdWVOb25lKQogICAgICAgICAgICAgdmFsaWRQcmltaXRpdmUgPSB0
cnVlOwpAQCAtMTkwNiwzMiArMTk5OCw2IEBAIGJvb2wgQ1NTUGFyc2VyOjpwYXJzZVZhbHVlKGlu
dCBwcm9wSWQsIGJvb2wgaW1wb3J0YW50KQogICAgICAgICB9CiAgICAgICAgIHJldHVybiBmYWxz
ZTsKICAgICB9Ci0gICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdE1hcmdpbkJlZm9yZUNvbGxhcHNl
OgotICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRNYXJnaW5BZnRlckNvbGxhcHNlOgotICAgIGNh
c2UgQ1NTUHJvcGVydHlXZWJraXRNYXJnaW5Ub3BDb2xsYXBzZToKLSAgICBjYXNlIENTU1Byb3Bl
cnR5V2Via2l0TWFyZ2luQm90dG9tQ29sbGFwc2U6Ci0gICAgICAgIGlmIChpZCA9PSBDU1NWYWx1
ZUNvbGxhcHNlIHx8IGlkID09IENTU1ZhbHVlU2VwYXJhdGUgfHwgaWQgPT0gQ1NTVmFsdWVEaXNj
YXJkKQotICAgICAgICAgICAgdmFsaWRQcmltaXRpdmUgPSB0cnVlOwotICAgICAgICBicmVhazsK
LSAgICBjYXNlIENTU1Byb3BlcnR5VGV4dExpbmVUaHJvdWdoTW9kZToKLSAgICBjYXNlIENTU1By
b3BlcnR5VGV4dE92ZXJsaW5lTW9kZToKLSAgICBjYXNlIENTU1Byb3BlcnR5VGV4dFVuZGVybGlu
ZU1vZGU6Ci0gICAgICAgIGlmIChpZCA9PSBDU1NWYWx1ZUNvbnRpbnVvdXMgfHwgaWQgPT0gQ1NT
VmFsdWVTa2lwV2hpdGVTcGFjZSkKLSAgICAgICAgICAgIHZhbGlkUHJpbWl0aXZlID0gdHJ1ZTsK
LSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBDU1NQcm9wZXJ0eVRleHRMaW5lVGhyb3VnaFN0eWxl
OgotICAgIGNhc2UgQ1NTUHJvcGVydHlUZXh0T3ZlcmxpbmVTdHlsZToKLSAgICBjYXNlIENTU1By
b3BlcnR5VGV4dFVuZGVybGluZVN0eWxlOgotICAgICAgICBpZiAoaWQgPT0gQ1NTVmFsdWVOb25l
IHx8IGlkID09IENTU1ZhbHVlU29saWQgfHwgaWQgPT0gQ1NTVmFsdWVEb3VibGUgfHwKLSAgICAg
ICAgICAgIGlkID09IENTU1ZhbHVlRGFzaGVkIHx8IGlkID09IENTU1ZhbHVlRG90RGFzaCB8fCBp
ZCA9PSBDU1NWYWx1ZURvdERvdERhc2ggfHwKLSAgICAgICAgICAgIGlkID09IENTU1ZhbHVlV2F2
ZSkKLSAgICAgICAgICAgIHZhbGlkUHJpbWl0aXZlID0gdHJ1ZTsKLSAgICAgICAgYnJlYWs7Ci0g
ICAgY2FzZSBDU1NQcm9wZXJ0eVRleHRSZW5kZXJpbmc6IC8vIGF1dG8gfCBvcHRpbWl6ZVNwZWVk
IHwgb3B0aW1pemVMZWdpYmlsaXR5IHwgZ2VvbWV0cmljUHJlY2lzaW9uCi0gICAgICAgIGlmIChp
ZCA9PSBDU1NWYWx1ZUF1dG8gfHwgaWQgPT0gQ1NTVmFsdWVPcHRpbWl6ZXNwZWVkIHx8IGlkID09
IENTU1ZhbHVlT3B0aW1pemVsZWdpYmlsaXR5Ci0gICAgICAgICAgICB8fCBpZCA9PSBDU1NWYWx1
ZUdlb21ldHJpY3ByZWNpc2lvbikKLSAgICAgICAgICAgIHZhbGlkUHJpbWl0aXZlID0gdHJ1ZTsK
LSAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBDU1NQcm9wZXJ0eVRleHRMaW5lVGhyb3VnaFdpZHRo
OgogICAgIGNhc2UgQ1NTUHJvcGVydHlUZXh0T3ZlcmxpbmVXaWR0aDoKICAgICBjYXNlIENTU1By
b3BlcnR5VGV4dFVuZGVybGluZVdpZHRoOgpAQCAtMTk0MSwxMCArMjAwNyw2IEBAIGJvb2wgQ1NT
UGFyc2VyOjpwYXJzZVZhbHVlKGludCBwcm9wSWQsIGJvb2wgaW1wb3J0YW50KQogICAgICAgICBl
bHNlCiAgICAgICAgICAgICB2YWxpZFByaW1pdGl2ZSA9ICFpZCAmJiB2YWxpZFVuaXQodmFsdWUs
IEZOdW1iZXIgfCBGTGVuZ3RoIHwgRlBlcmNlbnQsIG1fc3RyaWN0KTsKICAgICAgICAgYnJlYWs7
Ci0gICAgY2FzZSBDU1NQcm9wZXJ0eVJlc2l6ZTogLy8gbm9uZSB8IGJvdGggfCBob3Jpem9udGFs
IHwgdmVydGljYWwgfCBhdXRvCi0gICAgICAgIGlmIChpZCA9PSBDU1NWYWx1ZU5vbmUgfHwgaWQg
PT0gQ1NTVmFsdWVCb3RoIHx8IGlkID09IENTU1ZhbHVlSG9yaXpvbnRhbCB8fCBpZCA9PSBDU1NW
YWx1ZVZlcnRpY2FsIHx8IGlkID09IENTU1ZhbHVlQXV0bykKLSAgICAgICAgICAgIHZhbGlkUHJp
bWl0aXZlID0gdHJ1ZTsKLSAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtp
dENvbHVtbkNvdW50OgogICAgICAgICBpZiAoaWQgPT0gQ1NTVmFsdWVBdXRvKQogICAgICAgICAg
ICAgdmFsaWRQcmltaXRpdmUgPSB0cnVlOwpAQCAtMTk3MywxNyArMjAzNSw2IEBAIGJvb2wgQ1NT
UGFyc2VyOjpwYXJzZVZhbHVlKGludCBwcm9wSWQsIGJvb2wgaW1wb3J0YW50KQogICAgICAgICBl
bHNlIC8vIEFsd2F5cyBwYXJzZSB0aGlzIHByb3BlcnR5IGluIHN0cmljdCBtb2RlLCBzaW5jZSBp
dCB3b3VsZCBiZSBhbWJpZ3VvdXMgb3RoZXJ3aXNlIHdoZW4gdXNlZCBpbiB0aGUgJ2NvbHVtbnMn
IHNob3J0aGFuZCBwcm9wZXJ0eS4KICAgICAgICAgICAgIHZhbGlkUHJpbWl0aXZlID0gdmFsaWRV
bml0KHZhbHVlLCBGTGVuZ3RoLCB0cnVlKTsKICAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBDU1NQ
cm9wZXJ0eVBvaW50ZXJFdmVudHM6Ci0gICAgICAgIC8vIG5vbmUgfCB2aXNpYmxlUGFpbnRlZCB8
IHZpc2libGVGaWxsIHwgdmlzaWJsZVN0cm9rZSB8IHZpc2libGUgfAotICAgICAgICAvLyBwYWlu
dGVkIHwgZmlsbCB8IHN0cm9rZSB8IGF1dG8gfCBhbGwgfCBpbmhlcml0Ci0gICAgICAgIGlmIChp
ZCA9PSBDU1NWYWx1ZVZpc2libGUgfHwgaWQgPT0gQ1NTVmFsdWVOb25lIHx8IGlkID09IENTU1Zh
bHVlQWxsIHx8IGlkID09IENTU1ZhbHVlQXV0byB8fAotICAgICAgICAgICAgKGlkID49IENTU1Zh
bHVlVmlzaWJsZXBhaW50ZWQgJiYgaWQgPD0gQ1NTVmFsdWVTdHJva2UpKQotICAgICAgICAgICAg
dmFsaWRQcmltaXRpdmUgPSB0cnVlOwotICAgICAgICBicmVhazsKLSAgICBjYXNlIENTU1Byb3Bl
cnR5SW1hZ2VSZW5kZXJpbmc6IC8vIGF1dG8gfCBvcHRpbWl6ZUNvbnRyYXN0Ci0gICAgICAgIGlm
IChpZCA9PSBDU1NWYWx1ZUF1dG8gfHwgaWQgPT0gQ1NTVmFsdWVXZWJraXRPcHRpbWl6ZUNvbnRy
YXN0KQotICAgICAgICAgICAgdmFsaWRQcmltaXRpdmUgPSB0cnVlOwotICAgICAgICBicmVhazsK
ICAgICAvLyBFbmQgb2YgQ1NTMyBwcm9wZXJ0aWVzCiAKICAgICAvLyBBcHBsZSBzcGVjaWZpYyBw
cm9wZXJ0aWVzLiAgVGhlc2Ugd2lsbCBuZXZlciBiZSBzdGFuZGFyZGl6ZWQgYW5kIGFyZSBwdXJl
bHkgdG8KQEAgLTE5OTMsNDQgKzIwNDQsMTYgQEAgYm9vbCBDU1NQYXJzZXI6OnBhcnNlVmFsdWUo
aW50IHByb3BJZCwgYm9vbCBpbXBvcnRhbnQpCiAgICAgICAgIC8vIFdoZW4gc3BlY2lmeWluZyBl
aXRoZXIgdHlwZSBvZiB1bml0LCByZXF1aXJlIG5vbi1uZWdhdGl2ZSBpbnRlZ2VycwogICAgICAg
ICB2YWxpZFByaW1pdGl2ZSA9ICghaWQgJiYgKHZhbHVlLT51bml0ID09IENTU1ByaW1pdGl2ZVZh
bHVlOjpDU1NfUEVSQ0VOVEFHRSB8fCB2YWx1ZS0+ZlZhbHVlKSAmJiB2YWxpZFVuaXQodmFsdWUs
IEZJbnRlZ2VyIHwgRlBlcmNlbnQgfCBGTm9uTmVnLCBmYWxzZSkpOwogICAgICAgICBicmVhazsK
LSAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0VGV4dFNpemVBZGp1c3Q6Ci0gICAgICAgIGlmIChp
ZCA9PSBDU1NWYWx1ZUF1dG8gfHwgaWQgPT0gQ1NTVmFsdWVOb25lKQotICAgICAgICAgICAgdmFs
aWRQcmltaXRpdmUgPSB0cnVlOwotICAgICAgICBicmVhazsKLSAgICBjYXNlIENTU1Byb3BlcnR5
V2Via2l0UnRsT3JkZXJpbmc6Ci0gICAgICAgIGlmIChpZCA9PSBDU1NWYWx1ZUxvZ2ljYWwgfHwg
aWQgPT0gQ1NTVmFsdWVWaXN1YWwpCi0gICAgICAgICAgICB2YWxpZFByaW1pdGl2ZSA9IHRydWU7
Ci0gICAgICAgIGJyZWFrOwogCiAgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdEZvbnRTaXplRGVs
dGE6ICAgICAgICAgICAvLyA8bGVuZ3RoPgogICAgICAgICB2YWxpZFByaW1pdGl2ZSA9IHZhbGlk
VW5pdCh2YWx1ZSwgRkxlbmd0aCwgbV9zdHJpY3QpOwogICAgICAgICBicmVhazsKIAotICAgIGNh
c2UgQ1NTUHJvcGVydHlXZWJraXROYnNwTW9kZTogICAgIC8vIG5vcm1hbCB8IHNwYWNlCi0gICAg
ICAgIGlmIChpZCA9PSBDU1NWYWx1ZU5vcm1hbCB8fCBpZCA9PSBDU1NWYWx1ZVNwYWNlKQotICAg
ICAgICAgICAgdmFsaWRQcmltaXRpdmUgPSB0cnVlOwotICAgICAgICBicmVhazsKLQotICAgIGNh
c2UgQ1NTUHJvcGVydHlXZWJraXRMaW5lQnJlYWs6ICAgLy8gbm9ybWFsIHwgYWZ0ZXItd2hpdGUt
c3BhY2UKLSAgICAgICAgaWYgKGlkID09IENTU1ZhbHVlTm9ybWFsIHx8IGlkID09IENTU1ZhbHVl
QWZ0ZXJXaGl0ZVNwYWNlKQotICAgICAgICAgICAgdmFsaWRQcmltaXRpdmUgPSB0cnVlOwotICAg
ICAgICBicmVhazsKLQotICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRNYXRjaE5lYXJlc3RNYWls
QmxvY2txdW90ZUNvbG9yOiAgIC8vIG5vcm1hbCB8IG1hdGNoCi0gICAgICAgIGlmIChpZCA9PSBD
U1NWYWx1ZU5vcm1hbCB8fCBpZCA9PSBDU1NWYWx1ZU1hdGNoKQotICAgICAgICAgICAgdmFsaWRQ
cmltaXRpdmUgPSB0cnVlOwotICAgICAgICBicmVhazsKLQogICAgIGNhc2UgQ1NTUHJvcGVydHlX
ZWJraXRIaWdobGlnaHQ6CiAgICAgICAgIGlmIChpZCA9PSBDU1NWYWx1ZU5vbmUgfHwgdmFsdWUt
PnVuaXQgPT0gQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19TVFJJTkcpCiAgICAgICAgICAgICB2YWxp
ZFByaW1pdGl2ZSA9IHRydWU7CiAgICAgICAgIGJyZWFrOwogCi0gICAgY2FzZSBDU1NQcm9wZXJ0
eVdlYmtpdEh5cGhlbnM6Ci0gICAgICAgIGlmIChpZCA9PSBDU1NWYWx1ZU5vbmUgfHwgaWQgPT0g
Q1NTVmFsdWVNYW51YWwgfHwgaWQgPT0gQ1NTVmFsdWVBdXRvKQotICAgICAgICAgICAgdmFsaWRQ
cmltaXRpdmUgPSB0cnVlOwotICAgICAgICBicmVhazsKLQogICAgIGNhc2UgQ1NTUHJvcGVydHlX
ZWJraXRIeXBoZW5hdGVDaGFyYWN0ZXI6CiAgICAgICAgIGlmIChpZCA9PSBDU1NWYWx1ZUF1dG8g
fHwgdmFsdWUtPnVuaXQgPT0gQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19TVFJJTkcpCiAgICAgICAg
ICAgICB2YWxpZFByaW1pdGl2ZSA9IHRydWU7CkBAIC0yMDU4LDM2ICsyMDgxLDExIEBAIGJvb2wg
Q1NTUGFyc2VyOjpwYXJzZVZhbHVlKGludCBwcm9wSWQsIGJvb2wgaW1wb3J0YW50KQogICAgICAg
ICAgICAgfQogICAgICAgICB9CiAgICAgICAgIGJyZWFrOwotICAgIGNhc2UgQ1NTUHJvcGVydHlX
ZWJraXRMaW5lU25hcDoKLSAgICAgICAgaWYgKGlkID09IENTU1ZhbHVlTm9uZSB8fCBpZCA9PSBD
U1NWYWx1ZUJhc2VsaW5lIHx8IGlkID09IENTU1ZhbHVlQ29udGFpbikKLSAgICAgICAgICAgIHZh
bGlkUHJpbWl0aXZlID0gdHJ1ZTsKLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBDU1NQcm9wZXJ0
eVdlYmtpdExpbmVBbGlnbjoKLSAgICAgICAgaWYgKGlkID09IENTU1ZhbHVlTm9uZSB8fCBpZCA9
PSBDU1NWYWx1ZUVkZ2VzKQotICAgICAgICAgICAgdmFsaWRQcmltaXRpdmUgPSB0cnVlOwotICAg
ICAgICBicmVhazsKICAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0TG9jYWxlOgogICAgICAgICBp
ZiAoaWQgPT0gQ1NTVmFsdWVBdXRvIHx8IHZhbHVlLT51bml0ID09IENTU1ByaW1pdGl2ZVZhbHVl
OjpDU1NfU1RSSU5HKQogICAgICAgICAgICAgdmFsaWRQcmltaXRpdmUgPSB0cnVlOwogICAgICAg
ICBicmVhazsKIAotICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRCb3JkZXJGaXQ6Ci0gICAgICAg
IGlmIChpZCA9PSBDU1NWYWx1ZUJvcmRlciB8fCBpZCA9PSBDU1NWYWx1ZUxpbmVzKQotICAgICAg
ICAgICAgdmFsaWRQcmltaXRpdmUgPSB0cnVlOwotICAgICAgICBicmVhazsKLQotICAgIGNhc2Ug
Q1NTUHJvcGVydHlXZWJraXRUZXh0U2VjdXJpdHk6Ci0gICAgICAgIC8vIGRpc2MgfCBjaXJjbGUg
fCBzcXVhcmUgfCBub25lIHwgaW5oZXJpdAotICAgICAgICBpZiAoaWQgPT0gQ1NTVmFsdWVEaXNj
IHx8IGlkID09IENTU1ZhbHVlQ2lyY2xlIHx8IGlkID09IENTU1ZhbHVlU3F1YXJlfHwgaWQgPT0g
Q1NTVmFsdWVOb25lKQotICAgICAgICAgICAgdmFsaWRQcmltaXRpdmUgPSB0cnVlOwotICAgICAg
ICBicmVhazsKLQotICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRGb250U21vb3RoaW5nOgotICAg
ICAgICBpZiAoaWQgPT0gQ1NTVmFsdWVBdXRvIHx8IGlkID09IENTU1ZhbHVlTm9uZQotICAgICAg
ICAgICAgfHwgaWQgPT0gQ1NTVmFsdWVBbnRpYWxpYXNlZCB8fCBpZCA9PSBDU1NWYWx1ZVN1YnBp
eGVsQW50aWFsaWFzZWQpCi0gICAgICAgICAgICB2YWxpZFByaW1pdGl2ZSA9IHRydWU7Ci0gICAg
ICAgIGJyZWFrOwotCiAjaWYgRU5BQkxFKERBU0hCT0FSRF9TVVBQT1JUKQogICAgIGNhc2UgQ1NT
UHJvcGVydHlXZWJraXREYXNoYm9hcmRSZWdpb246IC8vIDxkYXNoYm9hcmQtcmVnaW9uPiB8IDxk
YXNoYm9hcmQtcmVnaW9uPgogICAgICAgICBpZiAodmFsdWUtPnVuaXQgPT0gQ1NTUGFyc2VyVmFs
dWU6OkZ1bmN0aW9uIHx8IGlkID09IENTU1ZhbHVlTm9uZSkKQEAgLTIxMDksMTMgKzIxMDcsNiBA
QCBib29sIENTU1BhcnNlcjo6cGFyc2VWYWx1ZShpbnQgcHJvcElkLCBib29sIGltcG9ydGFudCkK
ICAgICAgICAgYnJlYWs7CiAjZW5kaWYKIAotI2lmIEVOQUJMRShPVkVSRkxPV19TQ1JPTExJTkcp
Ci0gICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdE92ZXJmbG93U2Nyb2xsaW5nOgotICAgICAgICBp
ZiAoaWQgPT0gQ1NTVmFsdWVBdXRvIHx8IGlkID09IENTU1ZhbHVlVG91Y2gpCi0gICAgICAgICAg
ICB2YWxpZFByaW1pdGl2ZSA9IHRydWU7Ci0gICAgICAgIGJyZWFrOwotI2VuZGlmCi0KICAgICAg
ICAgLyogc2hvcnRoYW5kIHByb3BlcnRpZXMgKi8KICAgICBjYXNlIENTU1Byb3BlcnR5QmFja2dy
b3VuZDogewogICAgICAgICAvLyBQb3NpdGlvbiBtdXN0IGNvbWUgYmVmb3JlIGNvbG9yIGluIHRo
aXMgYXJyYXkgYmVjYXVzZSBhIHBsYWluIG9sZCAiMCIgaXMgYSBsZWdhbCBjb2xvcgpAQCAtMjI4
NSwyNiArMjI3NiwxMSBAQCBib29sIENTU1BhcnNlcjo6cGFyc2VWYWx1ZShpbnQgcHJvcElkLCBi
b29sIGltcG9ydGFudCkKICAgICBjYXNlIENTU1Byb3BlcnR5VGV4dFVuZGVybGluZToKICAgICAg
ICAgcmV0dXJuIGZhbHNlOwogICAgIC8vIENTUyBUZXh0IExheW91dCBNb2R1bGUgTGV2ZWwgMzog
VmVydGljYWwgd3JpdGluZyBzdXBwb3J0Ci0gICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdFdyaXRp
bmdNb2RlOgotICAgICAgICBpZiAoaWQgPj0gQ1NTVmFsdWVIb3Jpem9udGFsVGIgJiYgaWQgPD0g
Q1NTVmFsdWVIb3Jpem9udGFsQnQpCi0gICAgICAgICAgICB2YWxpZFByaW1pdGl2ZSA9IHRydWU7
Ci0gICAgICAgIGJyZWFrOwotCi0gICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdFRleHRDb21iaW5l
OgotICAgICAgICBpZiAoaWQgPT0gQ1NTVmFsdWVOb25lIHx8IGlkID09IENTU1ZhbHVlSG9yaXpv
bnRhbCkKLSAgICAgICAgICAgIHZhbGlkUHJpbWl0aXZlID0gdHJ1ZTsKLSAgICAgICAgYnJlYWs7
Ci0KICAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0VGV4dEVtcGhhc2lzOiB7CiAgICAgICAgIGNv
bnN0IGludCBwcm9wZXJ0aWVzW10gPSB7IENTU1Byb3BlcnR5V2Via2l0VGV4dEVtcGhhc2lzU3R5
bGUsIENTU1Byb3BlcnR5V2Via2l0VGV4dEVtcGhhc2lzQ29sb3IgfTsKICAgICAgICAgcmV0dXJu
IHBhcnNlU2hvcnRoYW5kKHByb3BJZCwgcHJvcGVydGllcywgV1RGX0FSUkFZX0xFTkdUSChwcm9w
ZXJ0aWVzKSwgaW1wb3J0YW50KTsKICAgICB9CiAKLSAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0
VGV4dEVtcGhhc2lzUG9zaXRpb246Ci0gICAgICAgIGlmIChpZCA9PSBDU1NWYWx1ZU92ZXIgfHwg
aWQgPT0gQ1NTVmFsdWVVbmRlcikKLSAgICAgICAgICAgIHZhbGlkUHJpbWl0aXZlID0gdHJ1ZTsK
LSAgICAgICAgYnJlYWs7Ci0KICAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0VGV4dEVtcGhhc2lz
U3R5bGU6CiAgICAgICAgIHJldHVybiBwYXJzZVRleHRFbXBoYXNpc1N0eWxlKGltcG9ydGFudCk7
CiAKQEAgLTIzMjcsMTEgKzIzMDMsNiBAQCBib29sIENTU1BhcnNlcjo6cGFyc2VWYWx1ZShpbnQg
cHJvcElkLCBib29sIGltcG9ydGFudCkKICAgICAgICAgICAgIHJldHVybiBwYXJzZUZvbnRGZWF0
dXJlU2V0dGluZ3MoaW1wb3J0YW50KTsKICAgICAgICAgYnJlYWs7CiAKLSAgICBjYXNlIENTU1By
b3BlcnR5V2Via2l0Rm9udEtlcm5pbmc6Ci0gICAgICAgIGlmIChpZCA9PSBDU1NWYWx1ZUF1dG8g
fHwgaWQgPT0gQ1NTVmFsdWVOb3JtYWwgfHwgaWQgPT0gQ1NTVmFsdWVOb25lKQotICAgICAgICAg
ICAgdmFsaWRQcmltaXRpdmUgPSB0cnVlOwotICAgICAgICBicmVhazsKLQogICAgIGNhc2UgQ1NT
UHJvcGVydHlXZWJraXRGb250VmFyaWFudExpZ2F0dXJlczoKICAgICAgICAgaWYgKGlkID09IENT
U1ZhbHVlTm9ybWFsKQogICAgICAgICAgICAgdmFsaWRQcmltaXRpdmUgPSB0cnVlOwpAQCAtMjM0
NiwxNSArMjMxNyw2IEBAIGJvb2wgQ1NTUGFyc2VyOjpwYXJzZVZhbHVlKGludCBwcm9wSWQsIGJv
b2wgaW1wb3J0YW50KQogICAgICAgICBlbHNlIGlmICh2YWx1ZS0+dW5pdCA9PSBDU1NQYXJzZXJW
YWx1ZTo6RnVuY3Rpb24pCiAgICAgICAgICAgICByZXR1cm4gcGFyc2VXcmFwU2hhcGUoKHByb3BJ
ZCA9PSBDU1NQcm9wZXJ0eVdlYmtpdFdyYXBTaGFwZUluc2lkZSksIGltcG9ydGFudCk7CiAgICAg
ICAgIGJyZWFrOwotICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRXcmFwRmxvdzoKLSAgICAgICAg
aWYgKGlkID09IENTU1ZhbHVlQXV0byB8fCBpZCA9PSBDU1NWYWx1ZUJvdGggfHwgaWQgPT0gQ1NT
VmFsdWVMZWZ0IHx8IGlkID09IENTU1ZhbHVlUmlnaHQgfHwgaWQgPT0gQ1NTVmFsdWVNYXhpbXVt
IHx8IGlkID09IENTU1ZhbHVlQ2xlYXIpCi0gICAgICAgICAgICB2YWxpZFByaW1pdGl2ZSA9IHRy
dWU7Ci0gICAgICAgIGJyZWFrOwotCi0gICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdFdyYXBUaHJv
dWdoOgotICAgICAgICBpZiAoaWQgPT0gQ1NTVmFsdWVXcmFwIHx8IGlkID09IENTU1ZhbHVlTm9u
ZSkKLSAgICAgICAgICAgIHZhbGlkUHJpbWl0aXZlID0gdHJ1ZTsKLSAgICAgICAgYnJlYWs7CiAg
ICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdFdyYXBNYXJnaW46CiAgICAgY2FzZSBDU1NQcm9wZXJ0
eVdlYmtpdFdyYXBQYWRkaW5nOgogICAgICAgICB2YWxpZFByaW1pdGl2ZSA9ICghaWQgJiYgdmFs
aWRVbml0KHZhbHVlLCBGTGVuZ3RoIHwgRk5vbk5lZywgbV9zdHJpY3QpKTsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>131683</attachid>
            <date>2012-03-13 11:33:33 -0700</date>
            <delta_ts>2012-03-13 17:30:09 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-80874-20120313153316.patch</filename>
            <type>text/plain</type>
            <size>48610</size>
            <attacher name="Alexis Menard (darktears)">menard</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTEwNDcyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNjBlYjA1MmZmMjkzZTJm
MTIzNDQxNGRiNTM5MzgxYjdmMmVjYzkyYS4uMzk0OTk1ZjI3MDE2OGQxNTIyMzhmZGFlMjczNTQ0
Y2Q4NGM4NDEwNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMzIEBACisyMDEyLTAzLTEzICBBbGV4
aXMgTWVuYXJkICA8YWxleGlzLm1lbmFyZEBvcGVuYm9zc2Eub3JnPgorCisgICAgICAgIEltcGxl
bWVudCBhIGZhc3QgcGF0aCB3aGVuIHNldHRpbmcgQ1NTIHByb3BlcnRpZXMgd2l0aCBrZXl3b3Jk
cyBmcm9tIEpTLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9ODA4NzQKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICBJbXBsZW1lbnQgYSBmYXN0IHBhdGggZm9yIHByb3BlcnRpZXMgd2l0aCBrZXl3b3Jkcy4gVGhl
IGlkZWEgaXMgdG8gYXZvaWQKKyAgICAgICAgY3JlYXRpbmcgdGhlIENTUyBwYXJzZXIgYW5kIHJ1
biBhbGwgdGhlIG1hY2hpbmVyeSBmb3IgaXQuIFRoaXMgcGF0Y2gKKyAgICAgICAgYWRkcyBhIHN0
YXRpYyBtYXAgd2hlcmUgYWxsIHRoZSBwcm9wZXJ0aWVzIGFjY2VwdGluZyBrZXl3b3JkcyBhcyB2
YWx1ZSBhcmUKKyAgICAgICAgZGVzY3JpYmVkIChlLmcuIHBvc3Rpb24gOiBmaXhlZCkuIFdoZW4g
SlMgY2FsbHMgcGFyc2VWYWx1ZSB3ZSBjaGVjayBpZiB3ZQorICAgICAgICBjYW4gdXNlIHRoZSBm
YXN0IHBhdGggdG8gYWRkIHRoZSBjcmVhdGVkIHByb3BlcnR5IGRpcmVjdGx5IGluIHRoZSBkZWNs
YXJhdGlvbi4KKyAgICAgICAgRm9yIHRoZSBzYWtlIG9mIG1haW50ZW5hbmNlIHRoZSBwYXJzZVZh
bHVlIGZ1bnRpb24gdXNlZCBieSBDU1NHcmFtbWFyLnkgaXMgdXNpbmcKKyAgICAgICAgdGhpcyBt
YXAuCisKKyAgICAgICAgTm8gbmV3IHRlc3RzIDogZXhpc3RpbmdzIG9uZXMgc2hvdWxkIGNvdmVy
LgorCisgICAgICAgICogY3NzL0NTU1BhcnNlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjppc0tl
eXdvcmRQcm9wZXJ0eUlEKToKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoUHJvcGVydHlN
YXBFbnRyeSk6CisgICAgICAgIChXZWJDb3JlOjpQcm9wZXJ0eU1hcEVudHJ5OjpQcm9wZXJ0eU1h
cEVudHJ5KToKKyAgICAgICAgKFdlYkNvcmU6OlByb3BlcnR5TWFwRW50cnk6Om1hdGNoKToKKyAg
ICAgICAgKEtleXdvcmRQcm9wZXJ0eU1hcEVudHJ5KToKKyAgICAgICAgKFdlYkNvcmU6OktleXdv
cmRQcm9wZXJ0eU1hcEVudHJ5OjpLZXl3b3JkUHJvcGVydHlNYXBFbnRyeSk6CisgICAgICAgIChX
ZWJDb3JlOjpLZXl3b3JkUHJvcGVydHlNYXBFbnRyeTo6bWF0Y2gpOgorICAgICAgICAoV2ViQ29y
ZTo6cHJvcGVydHlGb3JJRCk6CisgICAgICAgIChXZWJDb3JlOjpwYXJzZUtleXdvcmRWYWx1ZSk6
CisgICAgICAgIChXZWJDb3JlOjpDU1NQYXJzZXI6OnBhcnNlVmFsdWUpOgorCiAyMDEyLTAzLTEy
ICBUaW0gSG9ydG9uICA8dGltb3RoeV9ob3J0b25AYXBwbGUuY29tPgogCiAgICAgICAgIEluZmlu
aXRlIHJlcGFpbnQgbG9vcCB3aXRoIFNWR0ltYWdlQ2FjaGUgYW5kIGRlZmVycmVkIHJlcGFpbnQg
dGltZXJzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUGFyc2VyLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2Nzcy9DU1NQYXJzZXIuY3BwCmluZGV4IDNkYzRiYzkxMjAyNTUyYjY2NzU0
ZmI5ZTQ3NmFkNDBkNzAwZDE4ZjAuLjY0YWM4ZjczZmIyZGJjODZlMmYxZTI1M2MwYzdhOTQ5NWNl
OTI4OGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQYXJzZXIuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQYXJzZXIuY3BwCkBAIC00NzksNiArNDc5LDI4NyBAQCBz
dGF0aWMgYm9vbCBwYXJzZVNpbXBsZUxlbmd0aFZhbHVlKFN0eWxlUHJvcGVydHlTZXQqIGRlY2xh
cmF0aW9uLCBpbnQgcHJvcGVydHlJZAogICAgIHJldHVybiB0cnVlOwogfQogCitzdGF0aWMgaW5s
aW5lIGJvb2wgaXNLZXl3b3JkUHJvcGVydHlJRChpbnQgcHJvcGVydHlJZCkKK3sKKyAgICBzd2l0
Y2ggKHByb3BlcnR5SWQpIHsKKyAgICBjYXNlIENTU1Byb3BlcnR5Qm9yZGVyQm90dG9tU3R5bGU6
CisgICAgY2FzZSBDU1NQcm9wZXJ0eUJvcmRlckNvbGxhcHNlOgorICAgIGNhc2UgQ1NTUHJvcGVy
dHlCb3JkZXJMZWZ0U3R5bGU6CisgICAgY2FzZSBDU1NQcm9wZXJ0eUJvcmRlclJpZ2h0U3R5bGU6
CisgICAgY2FzZSBDU1NQcm9wZXJ0eUJvcmRlclRvcFN0eWxlOgorICAgIGNhc2UgQ1NTUHJvcGVy
dHlCb3hTaXppbmc6CisgICAgY2FzZSBDU1NQcm9wZXJ0eUNhcHRpb25TaWRlOgorICAgIGNhc2Ug
Q1NTUHJvcGVydHlDbGVhcjoKKyAgICBjYXNlIENTU1Byb3BlcnR5RGlyZWN0aW9uOgorICAgIGNh
c2UgQ1NTUHJvcGVydHlEaXNwbGF5OgorICAgIGNhc2UgQ1NTUHJvcGVydHlFbXB0eUNlbGxzOgor
ICAgIGNhc2UgQ1NTUHJvcGVydHlGbG9hdDoKKyAgICBjYXNlIENTU1Byb3BlcnR5Rm9udFN0eWxl
OgorICAgIGNhc2UgQ1NTUHJvcGVydHlJbWFnZVJlbmRlcmluZzoKKyAgICBjYXNlIENTU1Byb3Bl
cnR5TGlzdFN0eWxlUG9zaXRpb246CisgICAgY2FzZSBDU1NQcm9wZXJ0eUxpc3RTdHlsZVR5cGU6
CisgICAgY2FzZSBDU1NQcm9wZXJ0eU91dGxpbmVTdHlsZToKKyAgICBjYXNlIENTU1Byb3BlcnR5
T3ZlcmZsb3dYOgorICAgIGNhc2UgQ1NTUHJvcGVydHlPdmVyZmxvd1k6CisgICAgY2FzZSBDU1NQ
cm9wZXJ0eVBvaW50ZXJFdmVudHM6CisgICAgY2FzZSBDU1NQcm9wZXJ0eVBvc2l0aW9uOgorICAg
IGNhc2UgQ1NTUHJvcGVydHlSZXNpemU6CisgICAgY2FzZSBDU1NQcm9wZXJ0eVNwZWFrOgorICAg
IGNhc2UgQ1NTUHJvcGVydHlUYWJsZUxheW91dDoKKyAgICBjYXNlIENTU1Byb3BlcnR5VGV4dExp
bmVUaHJvdWdoTW9kZToKKyAgICBjYXNlIENTU1Byb3BlcnR5VGV4dExpbmVUaHJvdWdoU3R5bGU6
CisgICAgY2FzZSBDU1NQcm9wZXJ0eVRleHRPdmVyZmxvdzoKKyAgICBjYXNlIENTU1Byb3BlcnR5
VGV4dE92ZXJsaW5lTW9kZToKKyAgICBjYXNlIENTU1Byb3BlcnR5VGV4dE92ZXJsaW5lU3R5bGU6
CisgICAgY2FzZSBDU1NQcm9wZXJ0eVRleHRSZW5kZXJpbmc6CisgICAgY2FzZSBDU1NQcm9wZXJ0
eVRleHRUcmFuc2Zvcm06CisgICAgY2FzZSBDU1NQcm9wZXJ0eVRleHRVbmRlcmxpbmVNb2RlOgor
ICAgIGNhc2UgQ1NTUHJvcGVydHlUZXh0VW5kZXJsaW5lU3R5bGU6CisgICAgY2FzZSBDU1NQcm9w
ZXJ0eVZpc2liaWxpdHk6CisgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdEFwcGVhcmFuY2U6Cisg
ICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdEJhY2tmYWNlVmlzaWJpbGl0eToKKyAgICBjYXNlIENT
U1Byb3BlcnR5V2Via2l0Qm9yZGVyQWZ0ZXJTdHlsZToKKyAgICBjYXNlIENTU1Byb3BlcnR5V2Vi
a2l0Qm9yZGVyQmVmb3JlU3R5bGU6CisgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdEJvcmRlckVu
ZFN0eWxlOgorICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRCb3JkZXJGaXQ6CisgICAgY2FzZSBD
U1NQcm9wZXJ0eVdlYmtpdEJvcmRlclN0YXJ0U3R5bGU6CisgICAgY2FzZSBDU1NQcm9wZXJ0eVdl
YmtpdEJveEFsaWduOgorICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRCb3hEaXJlY3Rpb246Cisg
ICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdEJveExpbmVzOgorICAgIGNhc2UgQ1NTUHJvcGVydHlX
ZWJraXRCb3hPcmllbnQ6CisgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdEJveFBhY2s6CisgICAg
Y2FzZSBDU1NQcm9wZXJ0eVdlYmtpdENvbG9yQ29ycmVjdGlvbjoKKyAgICBjYXNlIENTU1Byb3Bl
cnR5V2Via2l0Q29sdW1uUnVsZVN0eWxlOgorICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRGbGV4
QWxpZ246CisgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdEZsZXhEaXJlY3Rpb246CisgICAgY2Fz
ZSBDU1NQcm9wZXJ0eVdlYmtpdEZsZXhJdGVtQWxpZ246CisgICAgY2FzZSBDU1NQcm9wZXJ0eVdl
YmtpdEZsZXhQYWNrOgorICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRGb250S2VybmluZzoKKyAg
ICBjYXNlIENTU1Byb3BlcnR5V2Via2l0Rm9udFNtb290aGluZzoKKyAgICBjYXNlIENTU1Byb3Bl
cnR5V2Via2l0SHlwaGVuczoKKyAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0TGluZUFsaWduOgor
ICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRMaW5lQnJlYWs6CisgICAgY2FzZSBDU1NQcm9wZXJ0
eVdlYmtpdExpbmVTbmFwOgorICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRNYXJnaW5BZnRlckNv
bGxhcHNlOgorICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRNYXJnaW5CZWZvcmVDb2xsYXBzZToK
KyAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0TWFyZ2luQm90dG9tQ29sbGFwc2U6CisgICAgY2Fz
ZSBDU1NQcm9wZXJ0eVdlYmtpdE1hcmdpblRvcENvbGxhcHNlOgorICAgIGNhc2UgQ1NTUHJvcGVy
dHlXZWJraXRNYXJxdWVlRGlyZWN0aW9uOgorICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRNYXJx
dWVlU3R5bGU6CisgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdE1hdGNoTmVhcmVzdE1haWxCbG9j
a3F1b3RlQ29sb3I6CisgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdE5ic3BNb2RlOgorI2lmIEVO
QUJMRShPVkVSRkxPV19TQ1JPTExJTkcpCisgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdE92ZXJm
bG93U2Nyb2xsaW5nOgorI2VuZGlmCisgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdFByaW50Q29s
b3JBZGp1c3Q6CisgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdFJ0bE9yZGVyaW5nOgorICAgIGNh
c2UgQ1NTUHJvcGVydHlXZWJraXRUZXh0Q29tYmluZToKKyAgICBjYXNlIENTU1Byb3BlcnR5V2Vi
a2l0VGV4dEVtcGhhc2lzUG9zaXRpb246CisgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdFRleHRT
ZWN1cml0eToKKyAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0VGV4dFNpemVBZGp1c3Q6CisgICAg
Y2FzZSBDU1NQcm9wZXJ0eVdlYmtpdFRyYW5zZm9ybVN0eWxlOgorICAgIGNhc2UgQ1NTUHJvcGVy
dHlXZWJraXRVc2VyRHJhZzoKKyAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0VXNlck1vZGlmeToK
KyAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0VXNlclNlbGVjdDoKKyAgICBjYXNlIENTU1Byb3Bl
cnR5V2Via2l0V3JhcEZsb3c6CisgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdFdyYXBUaHJvdWdo
OgorICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRXcml0aW5nTW9kZToKKyAgICBjYXNlIENTU1By
b3BlcnR5V2hpdGVTcGFjZToKKyAgICBjYXNlIENTU1Byb3BlcnR5V29yZEJyZWFrOgorICAgIGNh
c2UgQ1NTUHJvcGVydHlXb3JkV3JhcDoKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgZGVmYXVs
dDoKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KK30KKworY2xhc3MgUHJvcGVydHlNYXBF
bnRyeSB7CitwdWJsaWM6CisgICAgdHlwZWRlZiBib29sICgqTWF0Y2hGdW5jdGlvbikoaW50KTsK
KyAgICBQcm9wZXJ0eU1hcEVudHJ5KCkgOiBtX21hdGNoKDApIHsgfQorICAgIFByb3BlcnR5TWFw
RW50cnkoTWF0Y2hGdW5jdGlvbiBtYXRjaCkgOiBtX21hdGNoKG1hdGNoKSB7IH0KKyAgICBib29s
IG1hdGNoKGludCBpZCkgY29uc3QgeyBBU1NFUlQobV9tYXRjaCk7IHJldHVybiAoKm1fbWF0Y2gp
KGlkKTsgfQorcHJpdmF0ZToKKyAgICBNYXRjaEZ1bmN0aW9uIG1fbWF0Y2g7Cit9OworCitlbnVt
IE1hdGNoS2V5d29yZEJlaGF2aW9yIHtNYXRjaFZhbHVlcyA9IDAsIE1hdGNoUmFuZ2V9OwordGVt
cGxhdGUgPE1hdGNoS2V5d29yZEJlaGF2aW9yIGJlaGF2aW9yLCBpbnQgb25lID0gQ1NTVmFsdWVJ
bnZhbGlkLCBpbnQgdHdvID0gQ1NTVmFsdWVJbnZhbGlkLCBpbnQgdGhyZWUgPSBDU1NWYWx1ZUlu
dmFsaWQsIGludCBmb3VyID0gQ1NTVmFsdWVJbnZhbGlkLCBpbnQgZml2ZSA9IENTU1ZhbHVlSW52
YWxpZCwKKyAgICAgICAgICBpbnQgc2l4ID0gQ1NTVmFsdWVJbnZhbGlkLCBpbnQgc2V2ZW4gPSBD
U1NWYWx1ZUludmFsaWQsIGludCBlaWdodCA9IENTU1ZhbHVlSW52YWxpZCwgaW50IG5pbmUgPSBD
U1NWYWx1ZUludmFsaWQ+CitjbGFzcyBLZXl3b3JkUHJvcGVydHlNYXBFbnRyeSA6IHB1YmxpYyBQ
cm9wZXJ0eU1hcEVudHJ5IHsKK3B1YmxpYzoKKyAgICBLZXl3b3JkUHJvcGVydHlNYXBFbnRyeSgp
CisgICAgICAgIDogUHJvcGVydHlNYXBFbnRyeSgmbWF0Y2gpCisgICAgeworICAgIH0KKworICAg
IHN0YXRpYyBib29sIG1hdGNoKGludCBpZCkKKyAgICB7CisgICAgICAgIGlmICghaWQgfHwgaWQg
PT0gQ1NTVmFsdWVJbnZhbGlkKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgICAg
IGlmIChiZWhhdmlvciA9PSBNYXRjaFJhbmdlICYmIGlkID49IG9uZSAmJiBpZCA8PSB0d28pCisg
ICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CisKKyAgICAgICAgaWYgKGlkID09IG9uZSB8fCBp
ZCA9PSB0d28gfHwgaWQgPT0gdGhyZWUgfHwgaWQgPT0gZm91ciB8fCBpZCA9PSBmaXZlIHx8IGlk
ID09IHNpeCB8fCBpZCA9PSBzZXZlbiB8fCBpZCA9PSBlaWdodCB8fCBpZCA9PSBuaW5lKQorICAg
ICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9Cit9Owor
Cit0eXBlZGVmIEhhc2hNYXA8aW50LCBQcm9wZXJ0eU1hcEVudHJ5PiBLZXl3b3JkUHJvcGVydHlN
YXA7CitzdGF0aWMgY29uc3QgUHJvcGVydHlNYXBFbnRyeSBwcm9wZXJ0eUZvcklEKGludCBwcm9w
ZXJ0eUlkKQoreworICAgIERFRklORV9TVEFUSUNfTE9DQUwoS2V5d29yZFByb3BlcnR5TWFwLCBt
YXAsICgpKTsKKyAgICBpZiAobWFwLmlzRW1wdHkoKSkgeworICAgICAgICBtYXAuc2V0KENTU1By
b3BlcnR5Qm9yZGVyQm90dG9tU3R5bGUsIEtleXdvcmRQcm9wZXJ0eU1hcEVudHJ5PE1hdGNoUmFu
Z2UsIENTU1ZhbHVlTm9uZSwgQ1NTVmFsdWVEb3VibGU+KCkpOyAvLyBub25lIHwgaGlkZGVuIHwg
ZG90dGVkIHwgZGFzaGVkIHwgc29saWQgfCBkb3VibGUgfCBncm9vdmUgfCByaWRnZSB8IGluc2V0
IHwgb3V0c2V0CisgICAgICAgIG1hcC5zZXQoQ1NTUHJvcGVydHlCb3JkZXJDb2xsYXBzZSwgS2V5
d29yZFByb3BlcnR5TWFwRW50cnk8TWF0Y2hWYWx1ZXMsIENTU1ZhbHVlQ29sbGFwc2UsIENTU1Zh
bHVlU2VwYXJhdGU+KCkpOyAvLyBjb2xsYXBzZSB8IHNlcGFyYXRlIHwgaW5oZXJpdAorICAgICAg
ICBtYXAuc2V0KENTU1Byb3BlcnR5Qm9yZGVyTGVmdFN0eWxlLCBLZXl3b3JkUHJvcGVydHlNYXBF
bnRyeTxNYXRjaFJhbmdlLCBDU1NWYWx1ZU5vbmUsIENTU1ZhbHVlRG91YmxlPigpKTsgLy8gbm9u
ZSB8IGhpZGRlbiB8IGRvdHRlZCB8IGRhc2hlZCB8IHNvbGlkIHwgZG91YmxlIHwgZ3Jvb3ZlIHwg
cmlkZ2UgfCBpbnNldCB8IG91dHNldAorICAgICAgICBtYXAuc2V0KENTU1Byb3BlcnR5Qm9yZGVy
UmlnaHRTdHlsZSwgS2V5d29yZFByb3BlcnR5TWFwRW50cnk8TWF0Y2hSYW5nZSwgQ1NTVmFsdWVO
b25lLCBDU1NWYWx1ZURvdWJsZT4oKSk7IC8vIG5vbmUgfCBoaWRkZW4gfCBkb3R0ZWQgfCBkYXNo
ZWQgfCBzb2xpZCB8IGRvdWJsZSB8IGdyb292ZSB8IHJpZGdlIHwgaW5zZXQgfCBvdXRzZXQKKyAg
ICAgICAgbWFwLnNldChDU1NQcm9wZXJ0eUJvcmRlclRvcFN0eWxlLCBLZXl3b3JkUHJvcGVydHlN
YXBFbnRyeTxNYXRjaFJhbmdlLCBDU1NWYWx1ZU5vbmUsIENTU1ZhbHVlRG91YmxlPigpKTsgLy8g
bm9uZSB8IGhpZGRlbiB8IGRvdHRlZCB8IGRhc2hlZCB8IHNvbGlkIHwgZG91YmxlIHwgZ3Jvb3Zl
IHwgcmlkZ2UgfCBpbnNldCB8IG91dHNldAorICAgICAgICBtYXAuc2V0KENTU1Byb3BlcnR5Qm94
U2l6aW5nLCBLZXl3b3JkUHJvcGVydHlNYXBFbnRyeTxNYXRjaFZhbHVlcywgQ1NTVmFsdWVCb3Jk
ZXJCb3gsIENTU1ZhbHVlQ29udGVudEJveD4oKSk7CisgICAgICAgIG1hcC5zZXQoQ1NTUHJvcGVy
dHlDYXB0aW9uU2lkZSwgS2V5d29yZFByb3BlcnR5TWFwRW50cnk8TWF0Y2hWYWx1ZXMsIENTU1Zh
bHVlTGVmdCwgQ1NTVmFsdWVSaWdodCwgQ1NTVmFsdWVUb3AsIENTU1ZhbHVlQm90dG9tPigpKTsg
Ly8gdG9wIHwgYm90dG9tIHwgbGVmdCB8IHJpZ2h0IHwgaW5oZXJpdAorICAgICAgICBtYXAuc2V0
KENTU1Byb3BlcnR5Q2xlYXIsIEtleXdvcmRQcm9wZXJ0eU1hcEVudHJ5PE1hdGNoVmFsdWVzLCBD
U1NWYWx1ZU5vbmUsIENTU1ZhbHVlTGVmdCwgQ1NTVmFsdWVSaWdodCwgQ1NTVmFsdWVCb3RoPigp
KTsgLy8gbm9uZSB8IGxlZnQgfCByaWdodCB8IGJvdGggfCBpbmhlcml0CisgICAgICAgIG1hcC5z
ZXQoQ1NTUHJvcGVydHlEaXJlY3Rpb24sIEtleXdvcmRQcm9wZXJ0eU1hcEVudHJ5PE1hdGNoVmFs
dWVzLCBDU1NWYWx1ZUx0ciwgQ1NTVmFsdWVSdGw+KCkpOyAvLyBsdHIgfCBydGwgfCBpbmhlcml0
CisgICAgICAgIC8vIGlubGluZSB8IGJsb2NrIHwgbGlzdC1pdGVtIHwgcnVuLWluIHwgaW5saW5l
LWJsb2NrIHwgdGFibGUgfAorICAgICAgICAvLyBpbmxpbmUtdGFibGUgfCB0YWJsZS1yb3ctZ3Jv
dXAgfCB0YWJsZS1oZWFkZXItZ3JvdXAgfCB0YWJsZS1mb290ZXItZ3JvdXAgfCB0YWJsZS1yb3cg
fAorICAgICAgICAvLyB0YWJsZS1jb2x1bW4tZ3JvdXAgfCB0YWJsZS1jb2x1bW4gfCB0YWJsZS1j
ZWxsIHwgdGFibGUtY2FwdGlvbiB8IC13ZWJraXQtYm94IHwgLXdlYmtpdC1pbmxpbmUtYm94IHwg
bm9uZSB8IGluaGVyaXQKKyAgICAgICAgLy8gLXdlYmtpdC1mbGV4Ym94IHwgLXdlYmtpdC1pbmxp
bmUtZmxleGJveCB8IC13ZWJraXQtZ3JpZCB8IC13ZWJraXQtaW5saW5lLWdyaWQKKyNpZiBFTkFC
TEUoQ1NTX0dSSURfTEFZT1VUKQorICAgICAgICBtYXAuc2V0KENTU1Byb3BlcnR5RGlzcGxheSwg
S2V5d29yZFByb3BlcnR5TWFwRW50cnk8TWF0Y2hSYW5nZSwgQ1NTVmFsdWVJbmxpbmUsIENTU1Zh
bHVlV2Via2l0SW5saW5lRmxleGJveCwgQ1NTVmFsdWVOb25lLCBDU1NWYWx1ZVdlYmtpdEdyaWQs
IENTU1ZhbHVlV2Via2l0SW5saW5lR3JpZD4oKSk7CisjZWxzZQorICAgICAgIG1hcC5zZXQoQ1NT
UHJvcGVydHlEaXNwbGF5LCBLZXl3b3JkUHJvcGVydHlNYXBFbnRyeTxNYXRjaFJhbmdlLCBDU1NW
YWx1ZUlubGluZSwgQ1NTVmFsdWVXZWJraXRJbmxpbmVGbGV4Ym94LCBDU1NWYWx1ZU5vbmU+KCkp
OworI2VuZGlmCisgICAgICAgIG1hcC5zZXQoQ1NTUHJvcGVydHlFbXB0eUNlbGxzLCBLZXl3b3Jk
UHJvcGVydHlNYXBFbnRyeTxNYXRjaFZhbHVlcywgQ1NTVmFsdWVTaG93LCBDU1NWYWx1ZUhpZGU+
KCkpOyAvLyBzaG93IHwgaGlkZSB8IGluaGVyaXQKKyAgICAgICAgbWFwLnNldChDU1NQcm9wZXJ0
eUZsb2F0LCBLZXl3b3JkUHJvcGVydHlNYXBFbnRyeTxNYXRjaFZhbHVlcywgQ1NTVmFsdWVMZWZ0
LCBDU1NWYWx1ZVJpZ2h0LCBDU1NWYWx1ZU5vbmUsIENTU1ZhbHVlQ2VudGVyLCBDU1NWYWx1ZVdl
YmtpdFBvc2l0aW9uZWQ+KCkpOyAvLyBsZWZ0IHwgcmlnaHQgfCBub25lIHwgcG9zaXRpb25lZCB8
IGNlbnRlciAoZm9yIGJ1Z2d5IENTUywgbWFwcyB0byBub25lKQorICAgICAgICBtYXAuc2V0KENT
U1Byb3BlcnR5Rm9udFN0eWxlLCBLZXl3b3JkUHJvcGVydHlNYXBFbnRyeTxNYXRjaFZhbHVlcywg
Q1NTVmFsdWVOb3JtYWwsIENTU1ZhbHVlSXRhbGljLCBDU1NWYWx1ZU9ibGlxdWU+KCkpOyAvLyBu
b3JtYWwgfCBpdGFsaWMgfCBvYmxpcXVlIHwgaW5oZXJpdAorICAgICAgICBtYXAuc2V0KENTU1By
b3BlcnR5SW1hZ2VSZW5kZXJpbmcsIEtleXdvcmRQcm9wZXJ0eU1hcEVudHJ5PE1hdGNoVmFsdWVz
LCBDU1NWYWx1ZUF1dG8sIENTU1ZhbHVlV2Via2l0T3B0aW1pemVDb250cmFzdD4oKSk7IC8vIGF1
dG8gfCBvcHRpbWl6ZUNvbnRyYXN0CisgICAgICAgIG1hcC5zZXQoQ1NTUHJvcGVydHlMaXN0U3R5
bGVQb3NpdGlvbiwgS2V5d29yZFByb3BlcnR5TWFwRW50cnk8TWF0Y2hWYWx1ZXMsIENTU1ZhbHVl
SW5zaWRlLCBDU1NWYWx1ZU91dHNpZGU+KCkpOyAvLyBpbnNpZGUgfCBvdXRzaWRlIHwgaW5oZXJp
dAorICAgICAgICBtYXAuc2V0KENTU1Byb3BlcnR5TGlzdFN0eWxlVHlwZSwgS2V5d29yZFByb3Bl
cnR5TWFwRW50cnk8TWF0Y2hSYW5nZSwgQ1NTVmFsdWVEaXNjLCBDU1NWYWx1ZUthdGFrYW5hSXJv
aGEsIENTU1ZhbHVlTm9uZT4oKSk7CisgICAgICAgIG1hcC5zZXQoQ1NTUHJvcGVydHlPdXRsaW5l
U3R5bGUsIEtleXdvcmRQcm9wZXJ0eU1hcEVudHJ5PE1hdGNoUmFuZ2UsIENTU1ZhbHVlSW5zZXQs
IENTU1ZhbHVlRG91YmxlLCBDU1NWYWx1ZU5vbmUsIENTU1ZhbHVlQXV0bz4oKSk7IC8vICg8Ym9y
ZGVyLXN0eWxlPiBleGNlcHQgaGlkZGVuKSB8IGF1dG8gfCBpbmhlcml0CisgICAgICAgIG1hcC5z
ZXQoQ1NTUHJvcGVydHlPdmVyZmxvd1gsIEtleXdvcmRQcm9wZXJ0eU1hcEVudHJ5PE1hdGNoVmFs
dWVzLCBDU1NWYWx1ZVZpc2libGUsIENTU1ZhbHVlSGlkZGVuLCBDU1NWYWx1ZVNjcm9sbCwgQ1NT
VmFsdWVBdXRvLCBDU1NWYWx1ZU92ZXJsYXksIENTU1ZhbHVlV2Via2l0TWFycXVlZT4oKSk7IC8v
IHZpc2libGUgfCBoaWRkZW4gfCBzY3JvbGwgfCBhdXRvIHwgbWFycXVlZSB8IG92ZXJsYXkgfCBp
bmhlcml0CisgICAgICAgIG1hcC5zZXQoQ1NTUHJvcGVydHlPdmVyZmxvd1ksIEtleXdvcmRQcm9w
ZXJ0eU1hcEVudHJ5PE1hdGNoVmFsdWVzLCBDU1NWYWx1ZVZpc2libGUsIENTU1ZhbHVlSGlkZGVu
LCBDU1NWYWx1ZVNjcm9sbCwgQ1NTVmFsdWVBdXRvLCBDU1NWYWx1ZU92ZXJsYXksIENTU1ZhbHVl
V2Via2l0TWFycXVlZT4oKSk7IC8vIHZpc2libGUgfCBoaWRkZW4gfCBzY3JvbGwgfCBhdXRvIHwg
bWFycXVlZSB8IG92ZXJsYXkgfCBpbmhlcml0CisgICAgICAgIC8vIG5vbmUgfCB2aXNpYmxlUGFp
bnRlZCB8IHZpc2libGVGaWxsIHwgdmlzaWJsZVN0cm9rZSB8IHZpc2libGUgfAorICAgICAgICAv
LyBwYWludGVkIHwgZmlsbCB8IHN0cm9rZSB8IGF1dG8gfCBhbGwgfCBpbmhlcml0CisgICAgICAg
IG1hcC5zZXQoQ1NTUHJvcGVydHlQb2ludGVyRXZlbnRzLCBLZXl3b3JkUHJvcGVydHlNYXBFbnRy
eTxNYXRjaFJhbmdlLCBDU1NWYWx1ZVZpc2libGVwYWludGVkLCBDU1NWYWx1ZVN0cm9rZSwgQ1NT
VmFsdWVWaXNpYmxlLCBDU1NWYWx1ZU5vbmUsIENTU1ZhbHVlQWxsLCBDU1NWYWx1ZUF1dG8+KCkp
OworICAgICAgICBtYXAuc2V0KENTU1Byb3BlcnR5UG9zaXRpb24sIEtleXdvcmRQcm9wZXJ0eU1h
cEVudHJ5PE1hdGNoVmFsdWVzLCBDU1NWYWx1ZVN0YXRpYywgQ1NTVmFsdWVSZWxhdGl2ZSwgQ1NT
VmFsdWVBYnNvbHV0ZSwgQ1NTVmFsdWVGaXhlZD4oKSk7CisgICAgICAgIG1hcC5zZXQoQ1NTUHJv
cGVydHlSZXNpemUsIEtleXdvcmRQcm9wZXJ0eU1hcEVudHJ5PE1hdGNoVmFsdWVzLCBDU1NWYWx1
ZU5vbmUsIENTU1ZhbHVlQm90aCwgQ1NTVmFsdWVIb3Jpem9udGFsLCBDU1NWYWx1ZVZlcnRpY2Fs
LCBDU1NWYWx1ZUF1dG8+KCkpOyAvLyBub25lIHwgYm90aCB8IGhvcml6b250YWwgfCB2ZXJ0aWNh
bCB8IGF1dG8KKyAgICAgICAgbWFwLnNldChDU1NQcm9wZXJ0eVNwZWFrLCBLZXl3b3JkUHJvcGVy
dHlNYXBFbnRyeTxNYXRjaFZhbHVlcywgQ1NTVmFsdWVOb25lLCBDU1NWYWx1ZU5vcm1hbCwgQ1NT
VmFsdWVTcGVsbE91dCwgQ1NTVmFsdWVEaWdpdHMsIENTU1ZhbHVlTGl0ZXJhbFB1bmN0dWF0aW9u
LCBDU1NWYWx1ZU5vUHVuY3R1YXRpb24+KCkpOyAvLyBub25lIHwgbm9ybWFsIHwgc3BlbGwtb3V0
IHwgZGlnaXRzIHwgbGl0ZXJhbC1wdW5jdHVhdGlvbiB8IG5vLXB1bmN0dWF0aW9uIHwgaW5oZXJp
dAorICAgICAgICBtYXAuc2V0KENTU1Byb3BlcnR5VGFibGVMYXlvdXQsIEtleXdvcmRQcm9wZXJ0
eU1hcEVudHJ5PE1hdGNoVmFsdWVzLCBDU1NWYWx1ZUF1dG8sIENTU1ZhbHVlRml4ZWQ+KCkpOyAv
LyBhdXRvIHwgZml4ZWQgfCBpbmhlcml0CisgICAgICAgIG1hcC5zZXQoQ1NTUHJvcGVydHlUZXh0
TGluZVRocm91Z2hNb2RlLCBLZXl3b3JkUHJvcGVydHlNYXBFbnRyeTxNYXRjaFZhbHVlcywgQ1NT
VmFsdWVDb250aW51b3VzLCBDU1NWYWx1ZVNraXBXaGl0ZVNwYWNlPigpKTsKKyAgICAgICAgbWFw
LnNldChDU1NQcm9wZXJ0eVRleHRMaW5lVGhyb3VnaFN0eWxlLCBLZXl3b3JkUHJvcGVydHlNYXBF
bnRyeTxNYXRjaFZhbHVlcywgQ1NTVmFsdWVOb25lLCBDU1NWYWx1ZVNvbGlkLCBDU1NWYWx1ZURv
dWJsZSwgQ1NTVmFsdWVEYXNoZWQsIENTU1ZhbHVlRG90RGFzaCwgQ1NTVmFsdWVEb3REb3REYXNo
LCBDU1NWYWx1ZVdhdmU+KCkpOworICAgICAgICBtYXAuc2V0KENTU1Byb3BlcnR5VGV4dE92ZXJm
bG93LCBLZXl3b3JkUHJvcGVydHlNYXBFbnRyeTxNYXRjaFZhbHVlcywgQ1NTVmFsdWVDbGlwLCBD
U1NWYWx1ZUVsbGlwc2lzPigpKTsgLy8gY2xpcCB8IGVsbGlwc2lzCisgICAgICAgIG1hcC5zZXQo
Q1NTUHJvcGVydHlUZXh0T3ZlcmxpbmVNb2RlLCBLZXl3b3JkUHJvcGVydHlNYXBFbnRyeTxNYXRj
aFZhbHVlcywgQ1NTVmFsdWVDb250aW51b3VzLCBDU1NWYWx1ZVNraXBXaGl0ZVNwYWNlPigpKTsK
KyAgICAgICAgbWFwLnNldChDU1NQcm9wZXJ0eVRleHRPdmVybGluZVN0eWxlLCBLZXl3b3JkUHJv
cGVydHlNYXBFbnRyeTxNYXRjaFZhbHVlcywgQ1NTVmFsdWVOb25lLCBDU1NWYWx1ZVNvbGlkLCBD
U1NWYWx1ZURvdWJsZSwgQ1NTVmFsdWVEYXNoZWQsIENTU1ZhbHVlRG90RGFzaCwgQ1NTVmFsdWVE
b3REb3REYXNoLCBDU1NWYWx1ZVdhdmU+KCkpOworICAgICAgICBtYXAuc2V0KENTU1Byb3BlcnR5
VGV4dFJlbmRlcmluZywgS2V5d29yZFByb3BlcnR5TWFwRW50cnk8TWF0Y2hWYWx1ZXMsIENTU1Zh
bHVlQXV0bywgQ1NTVmFsdWVPcHRpbWl6ZXNwZWVkLCBDU1NWYWx1ZU9wdGltaXplbGVnaWJpbGl0
eSwgQ1NTVmFsdWVHZW9tZXRyaWNwcmVjaXNpb24+KCkpOyAvLyBhdXRvIHwgb3B0aW1pemVTcGVl
ZCB8IG9wdGltaXplTGVnaWJpbGl0eSB8IGdlb21ldHJpY1ByZWNpc2lvbgorICAgICAgICBtYXAu
c2V0KENTU1Byb3BlcnR5VGV4dFRyYW5zZm9ybSwgS2V5d29yZFByb3BlcnR5TWFwRW50cnk8TWF0
Y2hSYW5nZSwgQ1NTVmFsdWVDYXBpdGFsaXplLCBDU1NWYWx1ZUxvd2VyY2FzZSwgQ1NTVmFsdWVO
b25lPigpKTsgLy8gY2FwaXRhbGl6ZSB8IHVwcGVyY2FzZSB8IGxvd2VyY2FzZSB8IG5vbmUgfCBp
bmhlcml0CisgICAgICAgIG1hcC5zZXQoQ1NTUHJvcGVydHlUZXh0VW5kZXJsaW5lTW9kZSwgS2V5
d29yZFByb3BlcnR5TWFwRW50cnk8TWF0Y2hWYWx1ZXMsIENTU1ZhbHVlQ29udGludW91cywgQ1NT
VmFsdWVTa2lwV2hpdGVTcGFjZT4oKSk7CisgICAgICAgIG1hcC5zZXQoQ1NTUHJvcGVydHlUZXh0
VW5kZXJsaW5lU3R5bGUsIEtleXdvcmRQcm9wZXJ0eU1hcEVudHJ5PE1hdGNoVmFsdWVzLCBDU1NW
YWx1ZU5vbmUsIENTU1ZhbHVlU29saWQsIENTU1ZhbHVlRG91YmxlLCBDU1NWYWx1ZURhc2hlZCwg
Q1NTVmFsdWVEb3REYXNoLCBDU1NWYWx1ZURvdERvdERhc2gsIENTU1ZhbHVlV2F2ZT4oKSk7Cisg
ICAgICAgIG1hcC5zZXQoQ1NTUHJvcGVydHlWaXNpYmlsaXR5LCBLZXl3b3JkUHJvcGVydHlNYXBF
bnRyeTxNYXRjaFZhbHVlcywgQ1NTVmFsdWVWaXNpYmxlLCBDU1NWYWx1ZUhpZGRlbiwgQ1NTVmFs
dWVDb2xsYXBzZT4oKSk7IC8vIHZpc2libGUgfCBoaWRkZW4gfCBjb2xsYXBzZSB8IGluaGVyaXQK
KyAgICAgICAgbWFwLnNldChDU1NQcm9wZXJ0eVdlYmtpdEFwcGVhcmFuY2UsIEtleXdvcmRQcm9w
ZXJ0eU1hcEVudHJ5PE1hdGNoUmFuZ2UsIENTU1ZhbHVlQ2hlY2tib3gsIENTU1ZhbHVlVGV4dGFy
ZWEsIENTU1ZhbHVlTm9uZT4oKSk7CisgICAgICAgIG1hcC5zZXQoQ1NTUHJvcGVydHlXZWJraXRC
YWNrZmFjZVZpc2liaWxpdHksIEtleXdvcmRQcm9wZXJ0eU1hcEVudHJ5PE1hdGNoVmFsdWVzLCBD
U1NWYWx1ZVZpc2libGUsIENTU1ZhbHVlSGlkZGVuPigpKTsKKyAgICAgICAgbWFwLnNldChDU1NQ
cm9wZXJ0eVdlYmtpdEJvcmRlckFmdGVyU3R5bGUsIEtleXdvcmRQcm9wZXJ0eU1hcEVudHJ5PE1h
dGNoUmFuZ2UsIENTU1ZhbHVlTm9uZSwgQ1NTVmFsdWVEb3VibGU+KCkpOyAvLyBub25lIHwgaGlk
ZGVuIHwgZG90dGVkIHwgZGFzaGVkIHwgc29saWQgfCBkb3VibGUgfCBncm9vdmUgfCByaWRnZSB8
IGluc2V0IHwgb3V0c2V0CisgICAgICAgIG1hcC5zZXQoQ1NTUHJvcGVydHlXZWJraXRCb3JkZXJC
ZWZvcmVTdHlsZSwgS2V5d29yZFByb3BlcnR5TWFwRW50cnk8TWF0Y2hSYW5nZSwgQ1NTVmFsdWVO
b25lLCBDU1NWYWx1ZURvdWJsZT4oKSk7IC8vIG5vbmUgfCBoaWRkZW4gfCBkb3R0ZWQgfCBkYXNo
ZWQgfCBzb2xpZCB8IGRvdWJsZSB8IGdyb292ZSB8IHJpZGdlIHwgaW5zZXQgfCBvdXRzZXQKKyAg
ICAgICAgbWFwLnNldChDU1NQcm9wZXJ0eVdlYmtpdEJvcmRlckVuZFN0eWxlLCBLZXl3b3JkUHJv
cGVydHlNYXBFbnRyeTxNYXRjaFJhbmdlLCBDU1NWYWx1ZU5vbmUsIENTU1ZhbHVlRG91YmxlPigp
KTsgLy8gbm9uZSB8IGhpZGRlbiB8IGRvdHRlZCB8IGRhc2hlZCB8IHNvbGlkIHwgZG91YmxlIHwg
Z3Jvb3ZlIHwgcmlkZ2UgfCBpbnNldCB8IG91dHNldAorICAgICAgICBtYXAuc2V0KENTU1Byb3Bl
cnR5V2Via2l0Qm9yZGVyRml0LCBLZXl3b3JkUHJvcGVydHlNYXBFbnRyeTxNYXRjaFZhbHVlcywg
Q1NTVmFsdWVCb3JkZXIsIENTU1ZhbHVlTGluZXM+KCkpOworICAgICAgICBtYXAuc2V0KENTU1By
b3BlcnR5V2Via2l0Qm9yZGVyU3RhcnRTdHlsZSwgS2V5d29yZFByb3BlcnR5TWFwRW50cnk8TWF0
Y2hSYW5nZSwgQ1NTVmFsdWVOb25lLCBDU1NWYWx1ZURvdWJsZT4oKSk7IC8vIG5vbmUgfCBoaWRk
ZW4gfCBkb3R0ZWQgfCBkYXNoZWQgfCBzb2xpZCB8IGRvdWJsZSB8IGdyb292ZSB8IHJpZGdlIHwg
aW5zZXQgfCBvdXRzZXQKKyAgICAgICAgbWFwLnNldChDU1NQcm9wZXJ0eVdlYmtpdEJveEFsaWdu
LCBLZXl3b3JkUHJvcGVydHlNYXBFbnRyeTxNYXRjaFZhbHVlcywgQ1NTVmFsdWVTdHJldGNoLCBD
U1NWYWx1ZVN0YXJ0LCBDU1NWYWx1ZUVuZCwgQ1NTVmFsdWVDZW50ZXIsIENTU1ZhbHVlQmFzZWxp
bmU+KCkpOworICAgICAgICBtYXAuc2V0KENTU1Byb3BlcnR5V2Via2l0Qm94RGlyZWN0aW9uLCBL
ZXl3b3JkUHJvcGVydHlNYXBFbnRyeTxNYXRjaFZhbHVlcywgQ1NTVmFsdWVOb3JtYWwsIENTU1Zh
bHVlUmV2ZXJzZT4oKSk7CisgICAgICAgIG1hcC5zZXQoQ1NTUHJvcGVydHlXZWJraXRCb3hMaW5l
cywgS2V5d29yZFByb3BlcnR5TWFwRW50cnk8TWF0Y2hWYWx1ZXMsIENTU1ZhbHVlU2luZ2xlLCBD
U1NWYWx1ZU11bHRpcGxlPigpKTsKKyAgICAgICAgbWFwLnNldChDU1NQcm9wZXJ0eVdlYmtpdEJv
eE9yaWVudCwgS2V5d29yZFByb3BlcnR5TWFwRW50cnk8TWF0Y2hWYWx1ZXMsIENTU1ZhbHVlSG9y
aXpvbnRhbCwgQ1NTVmFsdWVWZXJ0aWNhbCwgQ1NTVmFsdWVJbmxpbmVBeGlzLCBDU1NWYWx1ZUJs
b2NrQXhpcz4oKSk7CisgICAgICAgIG1hcC5zZXQoQ1NTUHJvcGVydHlXZWJraXRCb3hQYWNrLCBL
ZXl3b3JkUHJvcGVydHlNYXBFbnRyeTxNYXRjaFZhbHVlcywgQ1NTVmFsdWVTdGFydCwgQ1NTVmFs
dWVFbmQsIENTU1ZhbHVlQ2VudGVyLCBDU1NWYWx1ZUp1c3RpZnk+KCkpOworICAgICAgICBtYXAu
c2V0KENTU1Byb3BlcnR5V2Via2l0Q29sb3JDb3JyZWN0aW9uLCBLZXl3b3JkUHJvcGVydHlNYXBF
bnRyeTxNYXRjaFZhbHVlcywgQ1NTVmFsdWVTcmdiLCBDU1NWYWx1ZURlZmF1bHQ+KCkpOworICAg
ICAgICBtYXAuc2V0KENTU1Byb3BlcnR5V2Via2l0Q29sdW1uUnVsZVN0eWxlLCBLZXl3b3JkUHJv
cGVydHlNYXBFbnRyeTxNYXRjaFJhbmdlLCBDU1NWYWx1ZU5vbmUsIENTU1ZhbHVlRG91YmxlPigp
KTsgLy8gbm9uZSB8IGhpZGRlbiB8IGRvdHRlZCB8IGRhc2hlZCB8IHNvbGlkIHwgZG91YmxlIHwg
Z3Jvb3ZlIHwgcmlkZ2UgfCBpbnNldCB8IG91dHNldAorICAgICAgICBtYXAuc2V0KENTU1Byb3Bl
cnR5V2Via2l0RmxleEFsaWduLCBLZXl3b3JkUHJvcGVydHlNYXBFbnRyeTxNYXRjaFZhbHVlcywg
Q1NTVmFsdWVTdGFydCwgQ1NTVmFsdWVFbmQsIENTU1ZhbHVlQ2VudGVyLCBDU1NWYWx1ZUJhc2Vs
aW5lLCBDU1NWYWx1ZVN0cmV0Y2g+KCkpOworICAgICAgICBtYXAuc2V0KENTU1Byb3BlcnR5V2Vi
a2l0RmxleERpcmVjdGlvbiwgS2V5d29yZFByb3BlcnR5TWFwRW50cnk8TWF0Y2hWYWx1ZXMsIENT
U1ZhbHVlUm93LCBDU1NWYWx1ZVJvd1JldmVyc2UsIENTU1ZhbHVlQ29sdW1uLCBDU1NWYWx1ZUNv
bHVtblJldmVyc2U+KCkpOworICAgICAgICBtYXAuc2V0KENTU1Byb3BlcnR5V2Via2l0RmxleEl0
ZW1BbGlnbiwgS2V5d29yZFByb3BlcnR5TWFwRW50cnk8TWF0Y2hWYWx1ZXMsIENTU1ZhbHVlQXV0
bywgQ1NTVmFsdWVTdGFydCwgQ1NTVmFsdWVFbmQsIENTU1ZhbHVlQ2VudGVyLCBDU1NWYWx1ZVN0
cmV0Y2gsIENTU1ZhbHVlQmFzZWxpbmUsIENTU1ZhbHVlU3RyZXRjaD4oKSk7CisgICAgICAgIG1h
cC5zZXQoQ1NTUHJvcGVydHlXZWJraXRGbGV4UGFjaywgS2V5d29yZFByb3BlcnR5TWFwRW50cnk8
TWF0Y2hWYWx1ZXMsIENTU1ZhbHVlU3RhcnQsIENTU1ZhbHVlRW5kLCBDU1NWYWx1ZUNlbnRlciwg
Q1NTVmFsdWVKdXN0aWZ5LCBDU1NWYWx1ZURpc3RyaWJ1dGU+KCkpOworICAgICAgICBtYXAuc2V0
KENTU1Byb3BlcnR5V2Via2l0RmxleFdyYXAsIEtleXdvcmRQcm9wZXJ0eU1hcEVudHJ5PE1hdGNo
VmFsdWVzLCBDU1NWYWx1ZU5vbmUsIENTU1ZhbHVlV3JhcCwgQ1NTVmFsdWVXcmFwUmV2ZXJzZT4o
KSk7CisgICAgICAgIG1hcC5zZXQoQ1NTUHJvcGVydHlXZWJraXRGb250S2VybmluZywgS2V5d29y
ZFByb3BlcnR5TWFwRW50cnk8TWF0Y2hWYWx1ZXMsIENTU1ZhbHVlQXV0bywgQ1NTVmFsdWVOb3Jt
YWwsIENTU1ZhbHVlTm9uZT4oKSk7CisgICAgICAgIG1hcC5zZXQoQ1NTUHJvcGVydHlXZWJraXRG
b250U21vb3RoaW5nLCBLZXl3b3JkUHJvcGVydHlNYXBFbnRyeTxNYXRjaFZhbHVlcywgQ1NTVmFs
dWVBdXRvLCBDU1NWYWx1ZU5vbmUsIENTU1ZhbHVlQW50aWFsaWFzZWQsIENTU1ZhbHVlU3VicGl4
ZWxBbnRpYWxpYXNlZD4oKSk7CisgICAgICAgIG1hcC5zZXQoQ1NTUHJvcGVydHlXZWJraXRIeXBo
ZW5zLCBLZXl3b3JkUHJvcGVydHlNYXBFbnRyeTxNYXRjaFZhbHVlcywgQ1NTVmFsdWVOb25lLCBD
U1NWYWx1ZU1hbnVhbCwgQ1NTVmFsdWVBdXRvPigpKTsKKyAgICAgICAgbWFwLnNldChDU1NQcm9w
ZXJ0eVdlYmtpdExpbmVBbGlnbiwgS2V5d29yZFByb3BlcnR5TWFwRW50cnk8TWF0Y2hWYWx1ZXMs
IENTU1ZhbHVlTm9uZSwgQ1NTVmFsdWVFZGdlcz4oKSk7CisgICAgICAgIG1hcC5zZXQoQ1NTUHJv
cGVydHlXZWJraXRMaW5lQnJlYWssIEtleXdvcmRQcm9wZXJ0eU1hcEVudHJ5PE1hdGNoVmFsdWVz
LCBDU1NWYWx1ZU5vcm1hbCwgQ1NTVmFsdWVBZnRlcldoaXRlU3BhY2U+KCkpOyAvLyBub3JtYWwg
fCBhZnRlci13aGl0ZS1zcGFjZQorICAgICAgICBtYXAuc2V0KENTU1Byb3BlcnR5V2Via2l0TGlu
ZVNuYXAsIEtleXdvcmRQcm9wZXJ0eU1hcEVudHJ5PE1hdGNoVmFsdWVzLCBDU1NWYWx1ZU5vbmUs
IENTU1ZhbHVlQmFzZWxpbmUsIENTU1ZhbHVlQ29udGFpbj4oKSk7CisgICAgICAgIG1hcC5zZXQo
Q1NTUHJvcGVydHlXZWJraXRNYXJnaW5BZnRlckNvbGxhcHNlLCBLZXl3b3JkUHJvcGVydHlNYXBF
bnRyeTxNYXRjaFZhbHVlcywgQ1NTVmFsdWVDb2xsYXBzZSwgQ1NTVmFsdWVTZXBhcmF0ZSwgQ1NT
VmFsdWVEaXNjYXJkPigpKTsKKyAgICAgICAgbWFwLnNldChDU1NQcm9wZXJ0eVdlYmtpdE1hcmdp
bkJlZm9yZUNvbGxhcHNlLCBLZXl3b3JkUHJvcGVydHlNYXBFbnRyeTxNYXRjaFZhbHVlcywgQ1NT
VmFsdWVDb2xsYXBzZSwgQ1NTVmFsdWVTZXBhcmF0ZSwgQ1NTVmFsdWVEaXNjYXJkPigpKTsKKyAg
ICAgICAgbWFwLnNldChDU1NQcm9wZXJ0eVdlYmtpdE1hcmdpbkJvdHRvbUNvbGxhcHNlLCBLZXl3
b3JkUHJvcGVydHlNYXBFbnRyeTxNYXRjaFZhbHVlcywgQ1NTVmFsdWVDb2xsYXBzZSwgQ1NTVmFs
dWVTZXBhcmF0ZSwgQ1NTVmFsdWVEaXNjYXJkPigpKTsKKyAgICAgICAgbWFwLnNldChDU1NQcm9w
ZXJ0eVdlYmtpdE1hcmdpblRvcENvbGxhcHNlLCBLZXl3b3JkUHJvcGVydHlNYXBFbnRyeTxNYXRj
aFZhbHVlcywgQ1NTVmFsdWVDb2xsYXBzZSwgQ1NTVmFsdWVTZXBhcmF0ZSwgQ1NTVmFsdWVEaXNj
YXJkPigpKTsKKyAgICAgICAgbWFwLnNldChDU1NQcm9wZXJ0eVdlYmtpdE1hcnF1ZWVEaXJlY3Rp
b24sIEtleXdvcmRQcm9wZXJ0eU1hcEVudHJ5PE1hdGNoVmFsdWVzLCBDU1NWYWx1ZUZvcndhcmRz
LCBDU1NWYWx1ZUJhY2t3YXJkcywgQ1NTVmFsdWVBaGVhZCwgQ1NTVmFsdWVSZXZlcnNlLCBDU1NW
YWx1ZUxlZnQsIENTU1ZhbHVlUmlnaHQsIENTU1ZhbHVlRG93biwgQ1NTVmFsdWVVcCwgQ1NTVmFs
dWVBdXRvPigpKTsKKyAgICAgICAgbWFwLnNldChDU1NQcm9wZXJ0eVdlYmtpdE1hcnF1ZWVTdHls
ZSwgS2V5d29yZFByb3BlcnR5TWFwRW50cnk8TWF0Y2hWYWx1ZXMsIENTU1ZhbHVlTm9uZSwgQ1NT
VmFsdWVTbGlkZSwgQ1NTVmFsdWVTY3JvbGwsIENTU1ZhbHVlQWx0ZXJuYXRlPigpKTsKKyAgICAg
ICAgbWFwLnNldChDU1NQcm9wZXJ0eVdlYmtpdE1hdGNoTmVhcmVzdE1haWxCbG9ja3F1b3RlQ29s
b3IsIEtleXdvcmRQcm9wZXJ0eU1hcEVudHJ5PE1hdGNoVmFsdWVzLCBDU1NWYWx1ZU5vcm1hbCwg
Q1NTVmFsdWVNYXRjaD4oKSk7IC8vIG5vcm1hbCB8IG1hdGNoCisgICAgICAgIG1hcC5zZXQoQ1NT
UHJvcGVydHlXZWJraXROYnNwTW9kZSwgS2V5d29yZFByb3BlcnR5TWFwRW50cnk8TWF0Y2hWYWx1
ZXMsIENTU1ZhbHVlTm9ybWFsLCBDU1NWYWx1ZVNwYWNlPigpKTsgLy8gbm9ybWFsIHwgc3BhY2UK
KyNpZiBFTkFCTEUoT1ZFUkZMT1dfU0NST0xMSU5HKQorICAgICAgICBtYXAuc2V0KENTU1Byb3Bl
cnR5V2Via2l0T3ZlcmZsb3dTY3JvbGxpbmcsIEtleXdvcmRQcm9wZXJ0eU1hcEVudHJ5PE1hdGNo
VmFsdWVzLCBDU1NWYWx1ZUF1dG8sIENTU1ZhbHVlVG91Y2g+KCkpOworI2VuZGlmCisgICAgICAg
IG1hcC5zZXQoQ1NTUHJvcGVydHlXZWJraXRQcmludENvbG9yQWRqdXN0LCBLZXl3b3JkUHJvcGVy
dHlNYXBFbnRyeTxNYXRjaFZhbHVlcywgQ1NTVmFsdWVFeGFjdCwgQ1NTVmFsdWVFY29ub215Pigp
KTsKKyAgICAgICAgbWFwLnNldChDU1NQcm9wZXJ0eVdlYmtpdFJ0bE9yZGVyaW5nLCBLZXl3b3Jk
UHJvcGVydHlNYXBFbnRyeTxNYXRjaFZhbHVlcywgQ1NTVmFsdWVMb2dpY2FsLCBDU1NWYWx1ZVZp
c3VhbD4oKSk7CisgICAgICAgIG1hcC5zZXQoQ1NTUHJvcGVydHlXZWJraXRUZXh0Q29tYmluZSwg
S2V5d29yZFByb3BlcnR5TWFwRW50cnk8TWF0Y2hWYWx1ZXMsIENTU1ZhbHVlTm9uZSwgQ1NTVmFs
dWVIb3Jpem9udGFsPigpKTsKKyAgICAgICAgbWFwLnNldChDU1NQcm9wZXJ0eVdlYmtpdFRleHRF
bXBoYXNpc1Bvc2l0aW9uLCBLZXl3b3JkUHJvcGVydHlNYXBFbnRyeTxNYXRjaFZhbHVlcywgQ1NT
VmFsdWVPdmVyLCBDU1NWYWx1ZVVuZGVyPigpKTsKKyAgICAgICAgbWFwLnNldChDU1NQcm9wZXJ0
eVdlYmtpdFRleHRTZWN1cml0eSwgS2V5d29yZFByb3BlcnR5TWFwRW50cnk8TWF0Y2hWYWx1ZXMs
IENTU1ZhbHVlRGlzYywgQ1NTVmFsdWVDaXJjbGUsIENTU1ZhbHVlU3F1YXJlLCBDU1NWYWx1ZU5v
bmU+KCkpOyAvLyBkaXNjIHwgY2lyY2xlIHwgc3F1YXJlIHwgbm9uZSB8IGluaGVyaXQKKyAgICAg
ICAgbWFwLnNldChDU1NQcm9wZXJ0eVdlYmtpdFRleHRTaXplQWRqdXN0LCBLZXl3b3JkUHJvcGVy
dHlNYXBFbnRyeTxNYXRjaFZhbHVlcywgQ1NTVmFsdWVBdXRvLCBDU1NWYWx1ZU5vbmU+KCkpOwor
ICAgICAgICBtYXAuc2V0KENTU1Byb3BlcnR5V2Via2l0VHJhbnNmb3JtU3R5bGUsIEtleXdvcmRQ
cm9wZXJ0eU1hcEVudHJ5PE1hdGNoVmFsdWVzLCBDU1NWYWx1ZUZsYXQsIENTU1ZhbHVlUHJlc2Vy
dmUzZD4oKSk7IC8vIGNsaXAgfCBlbGxpcHNpcworICAgICAgICBtYXAuc2V0KENTU1Byb3BlcnR5
V2Via2l0VXNlckRyYWcsIEtleXdvcmRQcm9wZXJ0eU1hcEVudHJ5PE1hdGNoVmFsdWVzLCBDU1NW
YWx1ZUF1dG8sIENTU1ZhbHVlTm9uZSwgQ1NTVmFsdWVFbGVtZW50PigpKTsgLy8gYXV0byB8IG5v
bmUgfCBlbGVtZW50CisgICAgICAgIG1hcC5zZXQoQ1NTUHJvcGVydHlXZWJraXRVc2VyTW9kaWZ5
LCBLZXl3b3JkUHJvcGVydHlNYXBFbnRyeTxNYXRjaFZhbHVlcywgQ1NTVmFsdWVSZWFkT25seSwg
Q1NTVmFsdWVSZWFkV3JpdGUsIENTU1ZhbHVlUmVhZFdyaXRlUGxhaW50ZXh0T25seT4oKSk7IC8v
IHJlYWQtb25seSB8IHJlYWQtd3JpdGUKKyAgICAgICAgbWFwLnNldChDU1NQcm9wZXJ0eVdlYmtp
dFVzZXJTZWxlY3QsIEtleXdvcmRQcm9wZXJ0eU1hcEVudHJ5PE1hdGNoVmFsdWVzLCBDU1NWYWx1
ZUF1dG8sIENTU1ZhbHVlTm9uZSwgQ1NTVmFsdWVUZXh0PigpKTsgLy8gYXV0byB8IG5vbmUgfCB0
ZXh0CisgICAgICAgIG1hcC5zZXQoQ1NTUHJvcGVydHlXZWJraXRXcmFwRmxvdywgS2V5d29yZFBy
b3BlcnR5TWFwRW50cnk8TWF0Y2hWYWx1ZXMsIENTU1ZhbHVlQXV0bywgQ1NTVmFsdWVCb3RoLCBD
U1NWYWx1ZUxlZnQsIENTU1ZhbHVlUmlnaHQsIENTU1ZhbHVlTWF4aW11bSwgQ1NTVmFsdWVDbGVh
cj4oKSk7CisgICAgICAgIG1hcC5zZXQoQ1NTUHJvcGVydHlXZWJraXRXcmFwVGhyb3VnaCwgS2V5
d29yZFByb3BlcnR5TWFwRW50cnk8TWF0Y2hWYWx1ZXMsIENTU1ZhbHVlV3JhcCwgQ1NTVmFsdWVO
b25lPigpKTsKKyAgICAgICAgbWFwLnNldChDU1NQcm9wZXJ0eVdlYmtpdFdyaXRpbmdNb2RlLCBL
ZXl3b3JkUHJvcGVydHlNYXBFbnRyeTxNYXRjaFJhbmdlLCBDU1NWYWx1ZUhvcml6b250YWxUYiwg
Q1NTVmFsdWVIb3Jpem9udGFsQnQ+KCkpOworICAgICAgICBtYXAuc2V0KENTU1Byb3BlcnR5V2hp
dGVTcGFjZSwgS2V5d29yZFByb3BlcnR5TWFwRW50cnk8TWF0Y2hWYWx1ZXMsIENTU1ZhbHVlTm9y
bWFsLCBDU1NWYWx1ZVByZSwgQ1NTVmFsdWVQcmVXcmFwLCBDU1NWYWx1ZVByZUxpbmUsIENTU1Zh
bHVlTm93cmFwPigpKTsgLy8gbm9ybWFsIHwgcHJlIHwgbm93cmFwIHwgaW5oZXJpdAorICAgICAg
ICBtYXAuc2V0KENTU1Byb3BlcnR5V29yZEJyZWFrLCBLZXl3b3JkUHJvcGVydHlNYXBFbnRyeTxN
YXRjaFZhbHVlcywgQ1NTVmFsdWVOb3JtYWwsIENTU1ZhbHVlQnJlYWtBbGwsIENTU1ZhbHVlQnJl
YWtXb3JkPigpKTsgLy8gbm9ybWFsIHwgYnJlYWstYWxsIHwgYnJlYWstd29yZCAodGhpcyBpcyBh
IGN1c3RvbSBleHRlbnNpb24pCisgICAgICAgIG1hcC5zZXQoQ1NTUHJvcGVydHlXb3JkV3JhcCwg
S2V5d29yZFByb3BlcnR5TWFwRW50cnk8TWF0Y2hWYWx1ZXMsIENTU1ZhbHVlTm9ybWFsLCBDU1NW
YWx1ZUJyZWFrV29yZD4oKSk7IC8vIG5vcm1hbCB8IGJyZWFrLXdvcmQKKyAgICB9CisgICAgcmV0
dXJuIG1hcC5nZXQocHJvcGVydHlJZCk7Cit9CisKK3N0YXRpYyBib29sIHBhcnNlS2V5d29yZFZh
bHVlKFN0eWxlUHJvcGVydHlTZXQqIGRlY2xhcmF0aW9uLCBpbnQgcHJvcGVydHlJZCwgY29uc3Qg
U3RyaW5nJiBzdHJpbmcsIGJvb2wgaW1wb3J0YW50LCBDU1NTdHlsZVNoZWV0KiBjb250ZXh0U3R5
bGVTaGVldCkKK3sKKyAgICBpZiAoIXN0cmluZy5sZW5ndGgoKSkKKyAgICAgICAgcmV0dXJuIGZh
bHNlOworCisgICAgaWYgKCFpc0tleXdvcmRQcm9wZXJ0eUlEKHByb3BlcnR5SWQpKQorICAgICAg
ICByZXR1cm4gZmFsc2U7CisKKyAgICBDU1NQYXJzZXJTdHJpbmcgY3NzU3RyaW5nOworICAgIGNz
c1N0cmluZy5jaGFyYWN0ZXJzID0gY29uc3RfY2FzdDxVQ2hhcio+KHN0cmluZy5jaGFyYWN0ZXJz
KCkpOworICAgIGNzc1N0cmluZy5sZW5ndGggPSBzdHJpbmcubGVuZ3RoKCk7CisgICAgaW50IHZh
bHVlSUQgPSBjc3NWYWx1ZUtleXdvcmRJRChjc3NTdHJpbmcpOworCisgICAgaWYgKCF2YWx1ZUlE
KQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBEb2N1bWVudCogZG9jdW1lbnQgPSBjb250
ZXh0U3R5bGVTaGVldC0+ZmluZERvY3VtZW50KCk7CisgICAgUmVmUHRyPENTU1ZhbHVlPiB2YWx1
ZTsKKyAgICBDU1NWYWx1ZVBvb2wqIGNzc1ZhbHVlUG9vbCA9IGRvY3VtZW50ID8gZG9jdW1lbnQt
PmNzc1ZhbHVlUG9vbCgpLmdldCgpIDogMDsKKyAgICBpZiAodmFsdWVJRCA9PSBDU1NWYWx1ZUlu
aGVyaXQpIHsKKyAgICAgICAgaWYgKGNzc1ZhbHVlUG9vbCkKKyAgICAgICAgICAgIHZhbHVlID0g
Y3NzVmFsdWVQb29sLT5jcmVhdGVJbmhlcml0ZWRWYWx1ZSgpOworICAgICAgICBlbHNlCisgICAg
ICAgICAgICB2YWx1ZSA9IENTU0luaGVyaXRlZFZhbHVlOjpjcmVhdGUoKTsKKyAgICAgICAgZGVj
bGFyYXRpb24tPmFkZFBhcnNlZFByb3BlcnR5KENTU1Byb3BlcnR5KHByb3BlcnR5SWQsIHZhbHVl
LnJlbGVhc2UoKSwgaW1wb3J0YW50KSk7CisgICAgICAgIHJldHVybiB0cnVlOworICAgIH0KKyAg
ICBpZiAodmFsdWVJRCA9PSBDU1NWYWx1ZUluaXRpYWwpIHsKKyAgICAgICAgaWYgKGNzc1ZhbHVl
UG9vbCkKKyAgICAgICAgICAgIHZhbHVlID0gY3NzVmFsdWVQb29sLT5jcmVhdGVFeHBsaWNpdElu
aXRpYWxWYWx1ZSgpOworICAgICAgICBlbHNlCisgICAgICAgICAgICB2YWx1ZSA9IENTU0luaXRp
YWxWYWx1ZTo6Y3JlYXRlRXhwbGljaXQoKTsKKyAgICAgICAgZGVjbGFyYXRpb24tPmFkZFBhcnNl
ZFByb3BlcnR5KENTU1Byb3BlcnR5KHByb3BlcnR5SWQsIHZhbHVlLnJlbGVhc2UoKSwgaW1wb3J0
YW50KSk7CisgICAgICAgIHJldHVybiB0cnVlOworICAgIH0KKworICAgIGNvbnN0IFByb3BlcnR5
TWFwRW50cnkgcHJvcGVydHkgPSBwcm9wZXJ0eUZvcklEKHByb3BlcnR5SWQpOworICAgIGlmICgh
cHJvcGVydHkubWF0Y2godmFsdWVJRCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIGlm
IChkb2N1bWVudCkKKyAgICAgICAgdmFsdWUgPSBjc3NWYWx1ZVBvb2wtPmNyZWF0ZUlkZW50aWZp
ZXJWYWx1ZSh2YWx1ZUlEKTsKKyAgICBlbHNlCisgICAgICAgIHZhbHVlID0gQ1NTUHJpbWl0aXZl
VmFsdWU6OmNyZWF0ZUlkZW50aWZpZXIodmFsdWVJRCk7CisgICAgZGVjbGFyYXRpb24tPmFkZFBh
cnNlZFByb3BlcnR5KENTU1Byb3BlcnR5KHByb3BlcnR5SWQsIHZhbHVlLnJlbGVhc2UoKSwgaW1w
b3J0YW50KSk7CisgICAgcmV0dXJuIHRydWU7Cit9CisKIFBhc3NSZWZQdHI8Q1NTVmFsdWVMaXN0
PiBDU1NQYXJzZXI6OnBhcnNlRm9udEZhY2VWYWx1ZShjb25zdCBBdG9taWNTdHJpbmcmIHN0cmlu
ZywgQ1NTU3R5bGVTaGVldCogY29udGV4dFN0eWxlU2hlZXQpCiB7CiAgICAgUmVmUHRyPFN0eWxl
UHJvcGVydHlTZXQ+IGR1bW15U3R5bGUgPSBTdHlsZVByb3BlcnR5U2V0OjpjcmVhdGUoKTsKQEAg
LTQ5Myw2ICs3NzQsOCBAQCBib29sIENTU1BhcnNlcjo6cGFyc2VWYWx1ZShTdHlsZVByb3BlcnR5
U2V0KiBkZWNsYXJhdGlvbiwgaW50IHByb3BlcnR5SWQsIGNvbnN0CiAgICAgICAgIHJldHVybiB0
cnVlOwogICAgIGlmIChwYXJzZUNvbG9yVmFsdWUoZGVjbGFyYXRpb24sIHByb3BlcnR5SWQsIHN0
cmluZywgaW1wb3J0YW50LCBzdHJpY3QsIGNvbnRleHRTdHlsZVNoZWV0KSkKICAgICAgICAgcmV0
dXJuIHRydWU7CisgICAgaWYgKHBhcnNlS2V5d29yZFZhbHVlKGRlY2xhcmF0aW9uLCBwcm9wZXJ0
eUlkLCBzdHJpbmcsIGltcG9ydGFudCwgY29udGV4dFN0eWxlU2hlZXQpKQorICAgICAgICByZXR1
cm4gdHJ1ZTsKICAgICBDU1NQYXJzZXIgcGFyc2VyKHN0cmljdCk7CiAgICAgcmV0dXJuIHBhcnNl
ci5wYXJzZVZhbHVlKGRlY2xhcmF0aW9uLCBwcm9wZXJ0eUlkLCBzdHJpbmcsIGltcG9ydGFudCwg
Y29udGV4dFN0eWxlU2hlZXQpOwogfQpAQCAtOTMwLDYgKzEyMTMsMjEgQEAgYm9vbCBDU1NQYXJz
ZXI6OnBhcnNlVmFsdWUoaW50IHByb3BJZCwgYm9vbCBpbXBvcnRhbnQpCiAgICAgYm9vbCB2YWxp
ZFByaW1pdGl2ZSA9IGZhbHNlOwogICAgIFJlZlB0cjxDU1NWYWx1ZT4gcGFyc2VkVmFsdWU7CiAK
KyAgICBpZiAoaWQgJiYgaXNLZXl3b3JkUHJvcGVydHlJRChwcm9wSWQpKSB7CisgICAgICAgIGNv
bnN0IFByb3BlcnR5TWFwRW50cnkgcHJvcGVydHkgPSBwcm9wZXJ0eUZvcklEKHByb3BJZCk7Cisg
ICAgICAgIGlmICghcHJvcGVydHkubWF0Y2goaWQpKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNl
OworCisgICAgICAgIHBhcnNlZFZhbHVlID0gcGFyc2VWYWxpZFByaW1pdGl2ZShpZCwgdmFsdWUp
OworICAgICAgICBtX3ZhbHVlTGlzdC0+bmV4dCgpOworICAgICAgICBBU1NFUlQoIW1fcGFyc2Vk
Q2FsY3VsYXRpb24pOworICAgICAgICBpZiAoIW1fdmFsdWVMaXN0LT5jdXJyZW50KCkgfHwgaW5T
aG9ydGhhbmQoKSkgeworICAgICAgICAgICAgYWRkUHJvcGVydHkocHJvcElkLCBwYXJzZWRWYWx1
ZS5yZWxlYXNlKCksIGltcG9ydGFudCk7CisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAg
ICAgfQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorCiAgICAgc3dpdGNoIChzdGF0aWNf
Y2FzdDxDU1NQcm9wZXJ0eUlEPihwcm9wSWQpKSB7CiAgICAgICAgIC8qIFRoZSBjb21tZW50IHRv
IHRoZSBsZWZ0IGRlZmluZXMgYWxsIHZhbGlkIHZhbHVlIG9mIHRoaXMgcHJvcGVydGllcyBhcyBk
ZWZpbmVkCiAgICAgICAgICAqIGluIENTUyAyLCBBcHBlbmRpeCBGLiBQcm9wZXJ0eSBpbmRleApA
QCAtMTAwNCwyNSArMTMwMiwxMCBAQCBib29sIENTU1BhcnNlcjo6cGFyc2VWYWx1ZShpbnQgcHJv
cElkLCBib29sIGltcG9ydGFudCkKICAgICAgICAgICAgIHZhbGlkUHJpbWl0aXZlID0gKHByb3BJ
ZCA9PSBDU1NQcm9wZXJ0eVdlYmtpdFJlZ2lvbkJyZWFrSW5zaWRlKSA/IGNzc1JlZ2lvbnNFbmFi
bGVkKCkgOiB0cnVlOwogICAgICAgICBicmVhazsKIAotICAgIGNhc2UgQ1NTUHJvcGVydHlFbXB0
eUNlbGxzOiAgICAgICAgICAvLyBzaG93IHwgaGlkZSB8IGluaGVyaXQKLSAgICAgICAgaWYgKGlk
ID09IENTU1ZhbHVlU2hvdwotICAgICAgICAgICAgfHwgaWQgPT0gQ1NTVmFsdWVIaWRlKQotICAg
ICAgICAgICAgdmFsaWRQcmltaXRpdmUgPSB0cnVlOwotICAgICAgICBicmVhazsKLQogICAgIGNh
c2UgQ1NTUHJvcGVydHlDb250ZW50OiAgICAgICAgICAgICAgLy8gWyA8c3RyaW5nPiB8IDx1cmk+
IHwgPGNvdW50ZXI+IHwgYXR0cihYKSB8IG9wZW4tcXVvdGUgfAogICAgICAgICAvLyBjbG9zZS1x
dW90ZSB8IG5vLW9wZW4tcXVvdGUgfCBuby1jbG9zZS1xdW90ZSBdKyB8IGluaGVyaXQKICAgICAg
ICAgcmV0dXJuIHBhcnNlQ29udGVudChwcm9wSWQsIGltcG9ydGFudCk7CiAKLSAgICBjYXNlIENT
U1Byb3BlcnR5V2hpdGVTcGFjZTogICAgICAgICAgLy8gbm9ybWFsIHwgcHJlIHwgbm93cmFwIHwg
aW5oZXJpdAotICAgICAgICBpZiAoaWQgPT0gQ1NTVmFsdWVOb3JtYWwKLSAgICAgICAgICAgIHx8
IGlkID09IENTU1ZhbHVlUHJlCi0gICAgICAgICAgICB8fCBpZCA9PSBDU1NWYWx1ZVByZVdyYXAK
LSAgICAgICAgICAgIHx8IGlkID09IENTU1ZhbHVlUHJlTGluZQotICAgICAgICAgICAgfHwgaWQg
PT0gQ1NTVmFsdWVOb3dyYXApCi0gICAgICAgICAgICB2YWxpZFByaW1pdGl2ZSA9IHRydWU7Ci0g
ICAgICAgIGJyZWFrOwotCiAgICAgY2FzZSBDU1NQcm9wZXJ0eUNsaXA6ICAgICAgICAgICAgICAg
ICAvLyA8c2hhcGU+IHwgYXV0byB8IGluaGVyaXQKICAgICAgICAgaWYgKGlkID09IENTU1ZhbHVl
QXV0bykKICAgICAgICAgICAgIHZhbGlkUHJpbWl0aXZlID0gdHJ1ZTsKQEAgLTEwMzMsMjIgKzEz
MTYsNiBAQCBib29sIENTU1BhcnNlcjo6cGFyc2VWYWx1ZShpbnQgcHJvcElkLCBib29sIGltcG9y
dGFudCkKICAgICAvKiBTdGFydCBvZiBzdXBwb3J0ZWQgQ1NTIHByb3BlcnRpZXMgd2l0aCB2YWxp
ZGF0aW9uLiBUaGlzIGlzIG5lZWRlZCBmb3IgcGFyc2VTaG9ydGhhbmQgdG8gd29yawogICAgICAq
IGNvcnJlY3RseSBhbmQgYWxsb3dzIG9wdGltaXphdGlvbiBpbiBXZWJDb3JlOjphcHBseVJ1bGUo
Li4pCiAgICAgICovCi0gICAgY2FzZSBDU1NQcm9wZXJ0eUNhcHRpb25TaWRlOiAgICAgICAgIC8v
IHRvcCB8IGJvdHRvbSB8IGxlZnQgfCByaWdodCB8IGluaGVyaXQKLSAgICAgICAgaWYgKGlkID09
IENTU1ZhbHVlTGVmdCB8fCBpZCA9PSBDU1NWYWx1ZVJpZ2h0IHx8Ci0gICAgICAgICAgICBpZCA9
PSBDU1NWYWx1ZVRvcCB8fCBpZCA9PSBDU1NWYWx1ZUJvdHRvbSkKLSAgICAgICAgICAgIHZhbGlk
UHJpbWl0aXZlID0gdHJ1ZTsKLSAgICAgICAgYnJlYWs7Ci0KLSAgICBjYXNlIENTU1Byb3BlcnR5
Qm9yZGVyQ29sbGFwc2U6ICAgICAgLy8gY29sbGFwc2UgfCBzZXBhcmF0ZSB8IGluaGVyaXQKLSAg
ICAgICAgaWYgKGlkID09IENTU1ZhbHVlQ29sbGFwc2UgfHwgaWQgPT0gQ1NTVmFsdWVTZXBhcmF0
ZSkKLSAgICAgICAgICAgIHZhbGlkUHJpbWl0aXZlID0gdHJ1ZTsKLSAgICAgICAgYnJlYWs7Ci0K
LSAgICBjYXNlIENTU1Byb3BlcnR5VmlzaWJpbGl0eTogICAgICAgICAgIC8vIHZpc2libGUgfCBo
aWRkZW4gfCBjb2xsYXBzZSB8IGluaGVyaXQKLSAgICAgICAgaWYgKGlkID09IENTU1ZhbHVlVmlz
aWJsZSB8fCBpZCA9PSBDU1NWYWx1ZUhpZGRlbiB8fCBpZCA9PSBDU1NWYWx1ZUNvbGxhcHNlKQot
ICAgICAgICAgICAgdmFsaWRQcmltaXRpdmUgPSB0cnVlOwotICAgICAgICBicmVhazsKLQogICAg
IGNhc2UgQ1NTUHJvcGVydHlPdmVyZmxvdzogewogICAgICAgICBTaG9ydGhhbmRTY29wZSBzY29w
ZSh0aGlzLCBwcm9wSWQpOwogICAgICAgICBpZiAobnVtICE9IDEgfHwgIXBhcnNlVmFsdWUoQ1NT
UHJvcGVydHlPdmVyZmxvd1gsIGltcG9ydGFudCkpCkBAIC0xMDU3LDU5ICsxMzI0LDYgQEAgYm9v
bCBDU1NQYXJzZXI6OnBhcnNlVmFsdWUoaW50IHByb3BJZCwgYm9vbCBpbXBvcnRhbnQpCiAgICAg
ICAgIGFkZFByb3BlcnR5KENTU1Byb3BlcnR5T3ZlcmZsb3dZLCB2YWx1ZSwgaW1wb3J0YW50KTsK
ICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQotICAgIGNhc2UgQ1NTUHJvcGVydHlPdmVyZmxv
d1g6Ci0gICAgY2FzZSBDU1NQcm9wZXJ0eU92ZXJmbG93WTogICAgICAgICAgIC8vIHZpc2libGUg
fCBoaWRkZW4gfCBzY3JvbGwgfCBhdXRvIHwgbWFycXVlZSB8IG92ZXJsYXkgfCBpbmhlcml0Ci0g
ICAgICAgIGlmIChpZCA9PSBDU1NWYWx1ZVZpc2libGUgfHwgaWQgPT0gQ1NTVmFsdWVIaWRkZW4g
fHwgaWQgPT0gQ1NTVmFsdWVTY3JvbGwgfHwgaWQgPT0gQ1NTVmFsdWVBdXRvIHx8Ci0gICAgICAg
ICAgICBpZCA9PSBDU1NWYWx1ZU92ZXJsYXkgfHwgaWQgPT0gQ1NTVmFsdWVXZWJraXRNYXJxdWVl
KQotICAgICAgICAgICAgdmFsaWRQcmltaXRpdmUgPSB0cnVlOwotICAgICAgICBicmVhazsKLQot
ICAgIGNhc2UgQ1NTUHJvcGVydHlMaXN0U3R5bGVQb3NpdGlvbjogIC8vIGluc2lkZSB8IG91dHNp
ZGUgfCBpbmhlcml0Ci0gICAgICAgIGlmIChpZCA9PSBDU1NWYWx1ZUluc2lkZSB8fCBpZCA9PSBD
U1NWYWx1ZU91dHNpZGUpCi0gICAgICAgICAgICB2YWxpZFByaW1pdGl2ZSA9IHRydWU7Ci0gICAg
ICAgIGJyZWFrOwotCi0gICAgY2FzZSBDU1NQcm9wZXJ0eUxpc3RTdHlsZVR5cGU6Ci0gICAgICAg
IC8vIFNlZSBzZWN0aW9uIENTU19QUk9QX0xJU1RfU1RZTEVfVFlQRSBvZiBmaWxlIENTU1ZhbHVl
S2V5d29yZHMuaW4KLSAgICAgICAgLy8gZm9yIHRoZSBsaXN0IG9mIHN1cHBvcnRlZCBsaXN0LXN0
eWxlLXR5cGVzLgotICAgICAgICBpZiAoKGlkID49IENTU1ZhbHVlRGlzYyAmJiBpZCA8PSBDU1NW
YWx1ZUthdGFrYW5hSXJvaGEpIHx8IGlkID09IENTU1ZhbHVlTm9uZSkKLSAgICAgICAgICAgIHZh
bGlkUHJpbWl0aXZlID0gdHJ1ZTsKLSAgICAgICAgYnJlYWs7Ci0KLSAgICBjYXNlIENTU1Byb3Bl
cnR5RGlzcGxheToKLSAgICAgICAgLy8gaW5saW5lIHwgYmxvY2sgfCBsaXN0LWl0ZW0gfCBydW4t
aW4gfCBpbmxpbmUtYmxvY2sgfCB0YWJsZSB8Ci0gICAgICAgIC8vIGlubGluZS10YWJsZSB8IHRh
YmxlLXJvdy1ncm91cCB8IHRhYmxlLWhlYWRlci1ncm91cCB8IHRhYmxlLWZvb3Rlci1ncm91cCB8
IHRhYmxlLXJvdyB8Ci0gICAgICAgIC8vIHRhYmxlLWNvbHVtbi1ncm91cCB8IHRhYmxlLWNvbHVt
biB8IHRhYmxlLWNlbGwgfCB0YWJsZS1jYXB0aW9uIHwgLXdlYmtpdC1ib3ggfCAtd2Via2l0LWlu
bGluZS1ib3ggfCBub25lIHwgaW5oZXJpdAotICAgICAgICAvLyAtd2Via2l0LWZsZXhib3ggfCAt
d2Via2l0LWlubGluZS1mbGV4Ym94IHwgLXdlYmtpdC1ncmlkIHwgLXdlYmtpdC1pbmxpbmUtZ3Jp
ZAotICAgICAgICBpZiAoKGlkID49IENTU1ZhbHVlSW5saW5lICYmIGlkIDw9IENTU1ZhbHVlV2Vi
a2l0SW5saW5lRmxleGJveCkgfHwgaWQgPT0gQ1NTVmFsdWVOb25lKQotICAgICAgICAgICAgdmFs
aWRQcmltaXRpdmUgPSB0cnVlOwotI2lmIEVOQUJMRShDU1NfR1JJRF9MQVlPVVQpCi0gICAgICAg
IGlmIChpZCA9PSBDU1NWYWx1ZVdlYmtpdEdyaWQgfHwgaWQgPT0gQ1NTVmFsdWVXZWJraXRJbmxp
bmVHcmlkKQotICAgICAgICAgICAgdmFsaWRQcmltaXRpdmUgPSB0cnVlOwotI2VuZGlmCi0gICAg
ICAgIGJyZWFrOwotCi0gICAgY2FzZSBDU1NQcm9wZXJ0eURpcmVjdGlvbjogICAgICAgICAgICAv
LyBsdHIgfCBydGwgfCBpbmhlcml0Ci0gICAgICAgIGlmIChpZCA9PSBDU1NWYWx1ZUx0ciB8fCBp
ZCA9PSBDU1NWYWx1ZVJ0bCkKLSAgICAgICAgICAgIHZhbGlkUHJpbWl0aXZlID0gdHJ1ZTsKLSAg
ICAgICAgYnJlYWs7Ci0KLSAgICBjYXNlIENTU1Byb3BlcnR5VGV4dFRyYW5zZm9ybTogICAgICAg
Ly8gY2FwaXRhbGl6ZSB8IHVwcGVyY2FzZSB8IGxvd2VyY2FzZSB8IG5vbmUgfCBpbmhlcml0Ci0g
ICAgICAgIGlmICgoaWQgPj0gQ1NTVmFsdWVDYXBpdGFsaXplICYmIGlkIDw9IENTU1ZhbHVlTG93
ZXJjYXNlKSB8fCBpZCA9PSBDU1NWYWx1ZU5vbmUpCi0gICAgICAgICAgICB2YWxpZFByaW1pdGl2
ZSA9IHRydWU7Ci0gICAgICAgIGJyZWFrOwotCi0gICAgY2FzZSBDU1NQcm9wZXJ0eUZsb2F0OiAg
ICAgICAgICAgICAgICAvLyBsZWZ0IHwgcmlnaHQgfCBub25lIHwgcG9zaXRpb25lZCB8IGNlbnRl
ciAoZm9yIGJ1Z2d5IENTUywgbWFwcyB0byBub25lKQotICAgICAgICBpZiAoaWQgPT0gQ1NTVmFs
dWVMZWZ0IHx8IGlkID09IENTU1ZhbHVlUmlnaHQKLSAgICAgICAgICAgIHx8IGlkID09IENTU1Zh
bHVlTm9uZSB8fCBpZCA9PSBDU1NWYWx1ZUNlbnRlciB8fCBpZCA9PSBDU1NWYWx1ZVdlYmtpdFBv
c2l0aW9uZWQpCi0gICAgICAgICAgICB2YWxpZFByaW1pdGl2ZSA9IHRydWU7Ci0gICAgICAgIGJy
ZWFrOwotCi0gICAgY2FzZSBDU1NQcm9wZXJ0eUNsZWFyOiAgICAgICAgICAgICAgICAvLyBub25l
IHwgbGVmdCB8IHJpZ2h0IHwgYm90aCB8IGluaGVyaXQKLSAgICAgICAgaWYgKGlkID09IENTU1Zh
bHVlTm9uZSB8fCBpZCA9PSBDU1NWYWx1ZUxlZnQKLSAgICAgICAgICAgIHx8IGlkID09IENTU1Zh
bHVlUmlnaHQgfHwgaWQgPT0gQ1NTVmFsdWVCb3RoKQotICAgICAgICAgICAgdmFsaWRQcmltaXRp
dmUgPSB0cnVlOwotICAgICAgICBicmVhazsKIAogICAgIGNhc2UgQ1NTUHJvcGVydHlUZXh0QWxp
Z246CiAgICAgICAgIC8vIGxlZnQgfCByaWdodCB8IGNlbnRlciB8IGp1c3RpZnkgfCB3ZWJraXRf
bGVmdCB8IHdlYmtpdF9yaWdodCB8IHdlYmtpdF9jZW50ZXIgfCB3ZWJraXRfbWF0Y2hfcGFyZW50
IHwKQEAgLTExMTksMjQgKzEzMzMsNiBAQCBib29sIENTU1BhcnNlcjo6cGFyc2VWYWx1ZShpbnQg
cHJvcElkLCBib29sIGltcG9ydGFudCkKICAgICAgICAgICAgIHZhbGlkUHJpbWl0aXZlID0gdHJ1
ZTsKICAgICAgICAgYnJlYWs7CiAKLSAgICBjYXNlIENTU1Byb3BlcnR5T3V0bGluZVN0eWxlOiAg
ICAgICAgLy8gKDxib3JkZXItc3R5bGU+IGV4Y2VwdCBoaWRkZW4pIHwgYXV0byB8IGluaGVyaXQK
LSAgICAgICAgaWYgKGlkID09IENTU1ZhbHVlQXV0byB8fCBpZCA9PSBDU1NWYWx1ZU5vbmUgfHwg
KGlkID49IENTU1ZhbHVlSW5zZXQgJiYgaWQgPD0gQ1NTVmFsdWVEb3VibGUpKQotICAgICAgICAg
ICAgdmFsaWRQcmltaXRpdmUgPSB0cnVlOwotICAgICAgICBicmVhazsKLQotICAgIGNhc2UgQ1NT
UHJvcGVydHlCb3JkZXJUb3BTdHlsZTogICAgIC8vLy8gPGJvcmRlci1zdHlsZT4gfCBpbmhlcml0
Ci0gICAgY2FzZSBDU1NQcm9wZXJ0eUJvcmRlclJpZ2h0U3R5bGU6ICAgLy8gICBEZWZpbmVkIGFz
OiAgICBub25lIHwgaGlkZGVuIHwgZG90dGVkIHwgZGFzaGVkIHwKLSAgICBjYXNlIENTU1Byb3Bl
cnR5Qm9yZGVyQm90dG9tU3R5bGU6ICAvLyAgIHNvbGlkIHwgZG91YmxlIHwgZ3Jvb3ZlIHwgcmlk
Z2UgfCBpbnNldCB8IG91dHNldAotICAgIGNhc2UgQ1NTUHJvcGVydHlCb3JkZXJMZWZ0U3R5bGU6
Ci0gICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdEJvcmRlclN0YXJ0U3R5bGU6Ci0gICAgY2FzZSBD
U1NQcm9wZXJ0eVdlYmtpdEJvcmRlckVuZFN0eWxlOgotICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJr
aXRCb3JkZXJCZWZvcmVTdHlsZToKLSAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0Qm9yZGVyQWZ0
ZXJTdHlsZToKLSAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0Q29sdW1uUnVsZVN0eWxlOgotICAg
ICAgICBpZiAoaWQgPj0gQ1NTVmFsdWVOb25lICYmIGlkIDw9IENTU1ZhbHVlRG91YmxlKQotICAg
ICAgICAgICAgdmFsaWRQcmltaXRpdmUgPSB0cnVlOwotICAgICAgICBicmVhazsKLQogICAgIGNh
c2UgQ1NTUHJvcGVydHlGb250V2VpZ2h0OiAgLy8gbm9ybWFsIHwgYm9sZCB8IGJvbGRlciB8IGxp
Z2h0ZXIgfCAxMDAgfCAyMDAgfCAzMDAgfCA0MDAgfCA1MDAgfCA2MDAgfCA3MDAgfCA4MDAgfCA5
MDAgfCBpbmhlcml0CiAgICAgICAgIHJldHVybiBwYXJzZUZvbnRXZWlnaHQoaW1wb3J0YW50KTsK
IApAQCAtMTM1MSwyMSArMTU0Nyw2IEBAIGJvb2wgQ1NTUGFyc2VyOjpwYXJzZVZhbHVlKGludCBw
cm9wSWQsIGJvb2wgaW1wb3J0YW50KQogICAgICAgICAgICAgdmFsaWRQcmltaXRpdmUgPSB2YWxp
ZFVuaXQodmFsdWUsIEZMZW5ndGgsIG1fc3RyaWN0KTsKICAgICAgICAgYnJlYWs7CiAKLSAgICBj
YXNlIENTU1Byb3BlcnR5V29yZEJyZWFrOiAgICAgICAgICAvLyBub3JtYWwgfCBicmVhay1hbGwg
fCBicmVhay13b3JkICh0aGlzIGlzIGEgY3VzdG9tIGV4dGVuc2lvbikKLSAgICAgICAgaWYgKGlk
ID09IENTU1ZhbHVlTm9ybWFsIHx8IGlkID09IENTU1ZhbHVlQnJlYWtBbGwgfHwgaWQgPT0gQ1NT
VmFsdWVCcmVha1dvcmQpCi0gICAgICAgICAgICB2YWxpZFByaW1pdGl2ZSA9IHRydWU7Ci0gICAg
ICAgIGJyZWFrOwotCi0gICAgY2FzZSBDU1NQcm9wZXJ0eVdvcmRXcmFwOiAgICAgICAgICAgLy8g
bm9ybWFsIHwgYnJlYWstd29yZAotICAgICAgICBpZiAoaWQgPT0gQ1NTVmFsdWVOb3JtYWwgfHwg
aWQgPT0gQ1NTVmFsdWVCcmVha1dvcmQpCi0gICAgICAgICAgICB2YWxpZFByaW1pdGl2ZSA9IHRy
dWU7Ci0gICAgICAgIGJyZWFrOwotICAgIGNhc2UgQ1NTUHJvcGVydHlTcGVhazogICAgICAgICAg
IC8vIG5vbmUgfCBub3JtYWwgfCBzcGVsbC1vdXQgfCBkaWdpdHMgfCBsaXRlcmFsLXB1bmN0dWF0
aW9uIHwgbm8tcHVuY3R1YXRpb24gfCBpbmhlcml0Ci0gICAgICAgIGlmIChpZCA9PSBDU1NWYWx1
ZU5vbmUgfHwgaWQgPT0gQ1NTVmFsdWVOb3JtYWwgfHwgaWQgPT0gQ1NTVmFsdWVTcGVsbE91dCB8
fCBpZCA9PSBDU1NWYWx1ZURpZ2l0cwotICAgICAgICAgICAgfHwgaWQgPT0gQ1NTVmFsdWVMaXRl
cmFsUHVuY3R1YXRpb24gfHwgaWQgPT0gQ1NTVmFsdWVOb1B1bmN0dWF0aW9uKQotICAgICAgICAg
ICAgdmFsaWRQcmltaXRpdmUgPSB0cnVlOwotICAgICAgICBicmVhazsKLQogICAgIGNhc2UgQ1NT
UHJvcGVydHlUZXh0SW5kZW50OiAgICAgICAgICAvLyA8bGVuZ3RoPiB8IDxwZXJjZW50YWdlPiB8
IGluaGVyaXQKICAgICAgICAgdmFsaWRQcmltaXRpdmUgPSAoIWlkICYmIHZhbGlkVW5pdCh2YWx1
ZSwgRkxlbmd0aCB8IEZQZXJjZW50LCBtX3N0cmljdCkpOwogICAgICAgICBicmVhazsKQEAgLTE0
MDgsMTEgKzE1ODksNiBAQCBib29sIENTU1BhcnNlcjo6cGFyc2VWYWx1ZShpbnQgcHJvcElkLCBi
b29sIGltcG9ydGFudCkKICAgICAgICAgICAgIHZhbGlkUHJpbWl0aXZlID0gKHZhbGlkVW5pdCh2
YWx1ZSwgRkxlbmd0aCB8IEZQZXJjZW50IHwgRk5vbk5lZywgbV9zdHJpY3QpKTsKICAgICAgICAg
YnJlYWs7CiAKLSAgICBjYXNlIENTU1Byb3BlcnR5Rm9udFN0eWxlOiAgICAgICAgICAgLy8gbm9y
bWFsIHwgaXRhbGljIHwgb2JsaXF1ZSB8IGluaGVyaXQKLSAgICAgICAgaWYgKGlkID09IENTU1Zh
bHVlTm9ybWFsIHx8IGlkID09IENTU1ZhbHVlSXRhbGljIHx8IGlkID09IENTU1ZhbHVlT2JsaXF1
ZSkKLSAgICAgICAgICAgIHZhbGlkUHJpbWl0aXZlID0gdHJ1ZTsKLSAgICAgICAgYnJlYWs7Ci0K
ICAgICBjYXNlIENTU1Byb3BlcnR5Rm9udFZhcmlhbnQ6ICAgICAgICAgLy8gbm9ybWFsIHwgc21h
bGwtY2FwcyB8IGluaGVyaXQKICAgICAgICAgcmV0dXJuIHBhcnNlRm9udFZhcmlhbnQoaW1wb3J0
YW50KTsKIApAQCAtMTUyOCwxMSArMTcwNCw2IEBAIGJvb2wgQ1NTUGFyc2VyOjpwYXJzZVZhbHVl
KGludCBwcm9wSWQsIGJvb2wgaW1wb3J0YW50KQogICAgICAgICAgICAgdmFsaWRQcmltaXRpdmUg
PSAoIWlkICYmIHZhbGlkVW5pdCh2YWx1ZSwgRk51bWJlciB8IEZQZXJjZW50IHwgRk5vbk5lZywg
dHJ1ZSkpOwogICAgICAgICBicmVhazsKIAotICAgIGNhc2UgQ1NTUHJvcGVydHlUYWJsZUxheW91
dDogICAgICAgICAvLyBhdXRvIHwgZml4ZWQgfCBpbmhlcml0Ci0gICAgICAgIGlmIChpZCA9PSBD
U1NWYWx1ZUF1dG8gfHwgaWQgPT0gQ1NTVmFsdWVGaXhlZCkKLSAgICAgICAgICAgIHZhbGlkUHJp
bWl0aXZlID0gdHJ1ZTsKLSAgICAgICAgYnJlYWs7Ci0KICAgICBjYXNlIENTU1Byb3BlcnR5U3Jj
OiAgLy8gT25seSB1c2VkIHdpdGhpbiBAZm9udC1mYWNlLCBzbyBjYW5ub3QgdXNlIGluaGVyaXQg
fCBpbml0aWFsIG9yIGJlICFpbXBvcnRhbnQuICBUaGlzIGlzIGEgbGlzdCBvZiB1cmxzIG9yIGxv
Y2FsIHJlZmVyZW5jZXMuCiAgICAgICAgIHJldHVybiBwYXJzZUZvbnRGYWNlU3JjKCk7CiAKQEAg
LTE1NDAsMTAgKzE3MTEsNiBAQCBib29sIENTU1BhcnNlcjo6cGFyc2VWYWx1ZShpbnQgcHJvcElk
LCBib29sIGltcG9ydGFudCkKICAgICAgICAgcmV0dXJuIHBhcnNlRm9udEZhY2VVbmljb2RlUmFu
Z2UoKTsKIAogICAgIC8qIENTUzMgcHJvcGVydGllcyAqLwotICAgIGNhc2UgQ1NTUHJvcGVydHlX
ZWJraXRBcHBlYXJhbmNlOgotICAgICAgICBpZiAoKGlkID49IENTU1ZhbHVlQ2hlY2tib3ggJiYg
aWQgPD0gQ1NTVmFsdWVUZXh0YXJlYSkgfHwgaWQgPT0gQ1NTVmFsdWVOb25lKQotICAgICAgICAg
ICAgdmFsaWRQcmltaXRpdmUgPSB0cnVlOwotICAgICAgICBicmVhazsKIAogICAgIGNhc2UgQ1NT
UHJvcGVydHlCb3JkZXJJbWFnZTogewogICAgICAgICBSZWZQdHI8Q1NTVmFsdWU+IHJlc3VsdDsK
QEAgLTE2NTEsMjkgKzE4MTgsNiBAQCBib29sIENTU1BhcnNlcjo6cGFyc2VWYWx1ZShpbnQgcHJv
cElkLCBib29sIGltcG9ydGFudCkKICAgICBjYXNlIENTU1Byb3BlcnR5T3BhY2l0eToKICAgICAg
ICAgdmFsaWRQcmltaXRpdmUgPSB2YWxpZFVuaXQodmFsdWUsIEZOdW1iZXIsIG1fc3RyaWN0KTsK
ICAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdEJveEFsaWduOgotICAg
ICAgICBpZiAoaWQgPT0gQ1NTVmFsdWVTdHJldGNoIHx8IGlkID09IENTU1ZhbHVlU3RhcnQgfHwg
aWQgPT0gQ1NTVmFsdWVFbmQgfHwKLSAgICAgICAgICAgIGlkID09IENTU1ZhbHVlQ2VudGVyIHx8
IGlkID09IENTU1ZhbHVlQmFzZWxpbmUpCi0gICAgICAgICAgICB2YWxpZFByaW1pdGl2ZSA9IHRy
dWU7Ci0gICAgICAgIGJyZWFrOwotICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRCb3hEaXJlY3Rp
b246Ci0gICAgICAgIGlmIChpZCA9PSBDU1NWYWx1ZU5vcm1hbCB8fCBpZCA9PSBDU1NWYWx1ZVJl
dmVyc2UpCi0gICAgICAgICAgICB2YWxpZFByaW1pdGl2ZSA9IHRydWU7Ci0gICAgICAgIGJyZWFr
OwotICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRCb3hMaW5lczoKLSAgICAgICAgaWYgKGlkID09
IENTU1ZhbHVlU2luZ2xlIHx8IGlkID09IENTU1ZhbHVlTXVsdGlwbGUpCi0gICAgICAgICAgICB2
YWxpZFByaW1pdGl2ZSA9IHRydWU7Ci0gICAgICAgIGJyZWFrOwotICAgIGNhc2UgQ1NTUHJvcGVy
dHlXZWJraXRCb3hPcmllbnQ6Ci0gICAgICAgIGlmIChpZCA9PSBDU1NWYWx1ZUhvcml6b250YWwg
fHwgaWQgPT0gQ1NTVmFsdWVWZXJ0aWNhbCB8fAotICAgICAgICAgICAgaWQgPT0gQ1NTVmFsdWVJ
bmxpbmVBeGlzIHx8IGlkID09IENTU1ZhbHVlQmxvY2tBeGlzKQotICAgICAgICAgICAgdmFsaWRQ
cmltaXRpdmUgPSB0cnVlOwotICAgICAgICBicmVhazsKLSAgICBjYXNlIENTU1Byb3BlcnR5V2Vi
a2l0Qm94UGFjazoKLSAgICAgICAgaWYgKGlkID09IENTU1ZhbHVlU3RhcnQgfHwgaWQgPT0gQ1NT
VmFsdWVFbmQgfHwKLSAgICAgICAgICAgIGlkID09IENTU1ZhbHVlQ2VudGVyIHx8IGlkID09IENT
U1ZhbHVlSnVzdGlmeSkKLSAgICAgICAgICAgIHZhbGlkUHJpbWl0aXZlID0gdHJ1ZTsKLSAgICAg
ICAgYnJlYWs7CiAgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdEJveEZsZXg6CiAgICAgICAgIHZh
bGlkUHJpbWl0aXZlID0gdmFsaWRVbml0KHZhbHVlLCBGTnVtYmVyLCBtX3N0cmljdCk7CiAgICAg
ICAgIGJyZWFrOwpAQCAtMTY4MSwxMiArMTgyNSw2IEBAIGJvb2wgQ1NTUGFyc2VyOjpwYXJzZVZh
bHVlKGludCBwcm9wSWQsIGJvb2wgaW1wb3J0YW50KQogICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJr
aXRCb3hPcmRpbmFsR3JvdXA6CiAgICAgICAgIHZhbGlkUHJpbWl0aXZlID0gdmFsaWRVbml0KHZh
bHVlLCBGSW50ZWdlciB8IEZOb25OZWcsIHRydWUpOwogICAgICAgICBicmVhazsKLSAgICBjYXNl
IENTU1Byb3BlcnR5Qm94U2l6aW5nOgotICAgICAgICB2YWxpZFByaW1pdGl2ZSA9IGlkID09IENT
U1ZhbHVlQm9yZGVyQm94IHx8IGlkID09IENTU1ZhbHVlQ29udGVudEJveDsKLSAgICAgICAgYnJl
YWs7Ci0gICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdENvbG9yQ29ycmVjdGlvbjoKLSAgICAgICAg
dmFsaWRQcmltaXRpdmUgPSBpZCA9PSBDU1NWYWx1ZVNyZ2IgfHwgaWQgPT0gQ1NTVmFsdWVEZWZh
dWx0OwotICAgICAgICBicmVhazsKICNpZiBFTkFCTEUoQ1NTX0ZJTFRFUlMpCiAgICAgY2FzZSBD
U1NQcm9wZXJ0eVdlYmtpdEZpbHRlcjoKICAgICAgICAgaWYgKGlkID09IENTU1ZhbHVlTm9uZSkK
QEAgLTE3MDksMTggKzE4NDcsNiBAQCBib29sIENTU1BhcnNlcjo6cGFyc2VWYWx1ZShpbnQgcHJv
cElkLCBib29sIGltcG9ydGFudCkKICAgICAgICAgICAgIG1fdmFsdWVMaXN0LT5uZXh0KCk7CiAg
ICAgICAgIH0KICAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdEZsZXhQ
YWNrOgotICAgICAgICB2YWxpZFByaW1pdGl2ZSA9IGlkID09IENTU1ZhbHVlU3RhcnQgfHwgaWQg
PT0gQ1NTVmFsdWVFbmQgfHwgaWQgPT0gQ1NTVmFsdWVDZW50ZXIgfHwgaWQgPT0gQ1NTVmFsdWVK
dXN0aWZ5IHx8IGlkID09IENTU1ZhbHVlRGlzdHJpYnV0ZTsKLSAgICAgICAgYnJlYWs7Ci0gICAg
Y2FzZSBDU1NQcm9wZXJ0eVdlYmtpdEZsZXhBbGlnbjoKLSAgICAgICAgdmFsaWRQcmltaXRpdmUg
PSBpZCA9PSBDU1NWYWx1ZVN0YXJ0IHx8IGlkID09IENTU1ZhbHVlRW5kIHx8IGlkID09IENTU1Zh
bHVlQ2VudGVyIHx8IGlkID09IENTU1ZhbHVlQmFzZWxpbmUgfHwgaWQgPT0gQ1NTVmFsdWVTdHJl
dGNoOwotICAgICAgICBicmVhazsKLSAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0RmxleEl0ZW1B
bGlnbjoKLSAgICAgICAgdmFsaWRQcmltaXRpdmUgPSBpZCA9PSBDU1NWYWx1ZUF1dG8gfHwgaWQg
PT0gQ1NTVmFsdWVTdGFydCB8fCBpZCA9PSBDU1NWYWx1ZUVuZCB8fCBpZCA9PSBDU1NWYWx1ZUNl
bnRlciB8fCBpZCA9PSBDU1NWYWx1ZUJhc2VsaW5lIHx8IGlkID09IENTU1ZhbHVlU3RyZXRjaDsK
LSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdEZsZXhEaXJlY3Rpb246
Ci0gICAgICAgIHZhbGlkUHJpbWl0aXZlID0gaWQgPT0gQ1NTVmFsdWVSb3cgfHwgaWQgPT0gQ1NT
VmFsdWVSb3dSZXZlcnNlIHx8IGlkID09IENTU1ZhbHVlQ29sdW1uIHx8IGlkID09IENTU1ZhbHVl
Q29sdW1uUmV2ZXJzZTsKLSAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtp
dEZsZXhXcmFwOgogICAgICAgICB2YWxpZFByaW1pdGl2ZSA9IGlkID09IENTU1ZhbHVlTm9uZSB8
fCBpZCA9PSBDU1NWYWx1ZVdyYXAgfHwgaWQgPT0gQ1NTVmFsdWVXcmFwUmV2ZXJzZTsKICAgICAg
ICAgYnJlYWs7CkBAIC0xNzMwLDIyICsxODU2LDEyIEBAIGJvb2wgQ1NTUGFyc2VyOjpwYXJzZVZh
bHVlKGludCBwcm9wSWQsIGJvb2wgaW1wb3J0YW50KQogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgQ1NTUHJvcGVydHlXZWJraXRNYXJxdWVlU3R5bGUsIENTU1Byb3BlcnR5V2Vi
a2l0TWFycXVlZVNwZWVkIH07CiAgICAgICAgIHJldHVybiBwYXJzZVNob3J0aGFuZChwcm9wSWQs
IHByb3BlcnRpZXMsIDUsIGltcG9ydGFudCk7CiAgICAgfQotICAgIGNhc2UgQ1NTUHJvcGVydHlX
ZWJraXRNYXJxdWVlRGlyZWN0aW9uOgotICAgICAgICBpZiAoaWQgPT0gQ1NTVmFsdWVGb3J3YXJk
cyB8fCBpZCA9PSBDU1NWYWx1ZUJhY2t3YXJkcyB8fCBpZCA9PSBDU1NWYWx1ZUFoZWFkIHx8Ci0g
ICAgICAgICAgICBpZCA9PSBDU1NWYWx1ZVJldmVyc2UgfHwgaWQgPT0gQ1NTVmFsdWVMZWZ0IHx8
IGlkID09IENTU1ZhbHVlUmlnaHQgfHwgaWQgPT0gQ1NTVmFsdWVEb3duIHx8Ci0gICAgICAgICAg
ICBpZCA9PSBDU1NWYWx1ZVVwIHx8IGlkID09IENTU1ZhbHVlQXV0bykKLSAgICAgICAgICAgIHZh
bGlkUHJpbWl0aXZlID0gdHJ1ZTsKLSAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBDU1NQcm9wZXJ0
eVdlYmtpdE1hcnF1ZWVJbmNyZW1lbnQ6CiAgICAgICAgIGlmIChpZCA9PSBDU1NWYWx1ZVNtYWxs
IHx8IGlkID09IENTU1ZhbHVlTGFyZ2UgfHwgaWQgPT0gQ1NTVmFsdWVNZWRpdW0pCiAgICAgICAg
ICAgICB2YWxpZFByaW1pdGl2ZSA9IHRydWU7CiAgICAgICAgIGVsc2UKICAgICAgICAgICAgIHZh
bGlkUHJpbWl0aXZlID0gdmFsaWRVbml0KHZhbHVlLCBGTGVuZ3RoIHwgRlBlcmNlbnQsIG1fc3Ry
aWN0KTsKICAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdE1hcnF1ZWVT
dHlsZToKLSAgICAgICAgaWYgKGlkID09IENTU1ZhbHVlTm9uZSB8fCBpZCA9PSBDU1NWYWx1ZVNs
aWRlIHx8IGlkID09IENTU1ZhbHVlU2Nyb2xsIHx8IGlkID09IENTU1ZhbHVlQWx0ZXJuYXRlKQot
ICAgICAgICAgICAgdmFsaWRQcmltaXRpdmUgPSB0cnVlOwotICAgICAgICBicmVhazsKICAgICBj
YXNlIENTU1Byb3BlcnR5V2Via2l0TWFycXVlZVJlcGV0aXRpb246CiAgICAgICAgIGlmIChpZCA9
PSBDU1NWYWx1ZUluZmluaXRlKQogICAgICAgICAgICAgdmFsaWRQcmltaXRpdmUgPSB0cnVlOwpA
QCAtMTc3MCwyMyArMTg4Niw2IEBAIGJvb2wgQ1NTUGFyc2VyOjpwYXJzZVZhbHVlKGludCBwcm9w
SWQsIGJvb2wgaW1wb3J0YW50KQogICAgICAgICBpZiAoY3NzUmVnaW9uc0VuYWJsZWQoKSAmJiAo
aWQgPT0gQ1NTVmFsdWVBdXRvIHx8IGlkID09IENTU1ZhbHVlQnJlYWspKQogICAgICAgICAgICAg
dmFsaWRQcmltaXRpdmUgPSB0cnVlOwogICAgICAgICBicmVhazsKLQotICAgIGNhc2UgQ1NTUHJv
cGVydHlXZWJraXRVc2VyRHJhZzogLy8gYXV0byB8IG5vbmUgfCBlbGVtZW50Ci0gICAgICAgIGlm
IChpZCA9PSBDU1NWYWx1ZUF1dG8gfHwgaWQgPT0gQ1NTVmFsdWVOb25lIHx8IGlkID09IENTU1Zh
bHVlRWxlbWVudCkKLSAgICAgICAgICAgIHZhbGlkUHJpbWl0aXZlID0gdHJ1ZTsKLSAgICAgICAg
YnJlYWs7Ci0gICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdFVzZXJNb2RpZnk6IC8vIHJlYWQtb25s
eSB8IHJlYWQtd3JpdGUKLSAgICAgICAgaWYgKGlkID09IENTU1ZhbHVlUmVhZE9ubHkgfHwgaWQg
PT0gQ1NTVmFsdWVSZWFkV3JpdGUgfHwgaWQgPT0gQ1NTVmFsdWVSZWFkV3JpdGVQbGFpbnRleHRP
bmx5KQotICAgICAgICAgICAgdmFsaWRQcmltaXRpdmUgPSB0cnVlOwotICAgICAgICBicmVhazsK
LSAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0VXNlclNlbGVjdDogLy8gYXV0byB8IG5vbmUgfCB0
ZXh0Ci0gICAgICAgIGlmIChpZCA9PSBDU1NWYWx1ZUF1dG8gfHwgaWQgPT0gQ1NTVmFsdWVOb25l
IHx8IGlkID09IENTU1ZhbHVlVGV4dCkKLSAgICAgICAgICAgIHZhbGlkUHJpbWl0aXZlID0gdHJ1
ZTsKLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBDU1NQcm9wZXJ0eVRleHRPdmVyZmxvdzogLy8g
Y2xpcCB8IGVsbGlwc2lzCi0gICAgICAgIGlmIChpZCA9PSBDU1NWYWx1ZUNsaXAgfHwgaWQgPT0g
Q1NTVmFsdWVFbGxpcHNpcykKLSAgICAgICAgICAgIHZhbGlkUHJpbWl0aXZlID0gdHJ1ZTsKLSAg
ICAgICAgYnJlYWs7CiAgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdFRyYW5zZm9ybToKICAgICAg
ICAgaWYgKGlkID09IENTU1ZhbHVlTm9uZSkKICAgICAgICAgICAgIHZhbGlkUHJpbWl0aXZlID0g
dHJ1ZTsKQEAgLTE4MTcsMTggKzE5MTYsNiBAQCBib29sIENTU1BhcnNlcjo6cGFyc2VWYWx1ZShp
bnQgcHJvcElkLCBib29sIGltcG9ydGFudCkKICAgICAgICAgfQogICAgICAgICByZXR1cm4gZmFs
c2U7CiAgICAgfQotICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRUcmFuc2Zvcm1TdHlsZToKLSAg
ICAgICAgaWYgKHZhbHVlLT5pZCA9PSBDU1NWYWx1ZUZsYXQgfHwgdmFsdWUtPmlkID09IENTU1Zh
bHVlUHJlc2VydmUzZCkKLSAgICAgICAgICAgIHZhbGlkUHJpbWl0aXZlID0gdHJ1ZTsKLSAgICAg
ICAgYnJlYWs7Ci0gICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdEJhY2tmYWNlVmlzaWJpbGl0eToK
LSAgICAgICAgaWYgKHZhbHVlLT5pZCA9PSBDU1NWYWx1ZVZpc2libGUgfHwgdmFsdWUtPmlkID09
IENTU1ZhbHVlSGlkZGVuKQotICAgICAgICAgICAgdmFsaWRQcmltaXRpdmUgPSB0cnVlOwotICAg
ICAgICBicmVhazsKLSAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0UHJpbnRDb2xvckFkanVzdDoK
LSAgICAgICAgaWYgKHZhbHVlLT5pZCA9PSBDU1NWYWx1ZUV4YWN0IHx8IHZhbHVlLT5pZCA9PSBD
U1NWYWx1ZUVjb25vbXkpCi0gICAgICAgICAgICB2YWxpZFByaW1pdGl2ZSA9IHRydWU7Ci0gICAg
ICAgIGJyZWFrOwogICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRQZXJzcGVjdGl2ZToKICAgICAg
ICAgaWYgKGlkID09IENTU1ZhbHVlTm9uZSkKICAgICAgICAgICAgIHZhbGlkUHJpbWl0aXZlID0g
dHJ1ZTsKQEAgLTE5MDYsMzIgKzE5OTMsNiBAQCBib29sIENTU1BhcnNlcjo6cGFyc2VWYWx1ZShp
bnQgcHJvcElkLCBib29sIGltcG9ydGFudCkKICAgICAgICAgfQogICAgICAgICByZXR1cm4gZmFs
c2U7CiAgICAgfQotICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRNYXJnaW5CZWZvcmVDb2xsYXBz
ZToKLSAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0TWFyZ2luQWZ0ZXJDb2xsYXBzZToKLSAgICBj
YXNlIENTU1Byb3BlcnR5V2Via2l0TWFyZ2luVG9wQ29sbGFwc2U6Ci0gICAgY2FzZSBDU1NQcm9w
ZXJ0eVdlYmtpdE1hcmdpbkJvdHRvbUNvbGxhcHNlOgotICAgICAgICBpZiAoaWQgPT0gQ1NTVmFs
dWVDb2xsYXBzZSB8fCBpZCA9PSBDU1NWYWx1ZVNlcGFyYXRlIHx8IGlkID09IENTU1ZhbHVlRGlz
Y2FyZCkKLSAgICAgICAgICAgIHZhbGlkUHJpbWl0aXZlID0gdHJ1ZTsKLSAgICAgICAgYnJlYWs7
Ci0gICAgY2FzZSBDU1NQcm9wZXJ0eVRleHRMaW5lVGhyb3VnaE1vZGU6Ci0gICAgY2FzZSBDU1NQ
cm9wZXJ0eVRleHRPdmVybGluZU1vZGU6Ci0gICAgY2FzZSBDU1NQcm9wZXJ0eVRleHRVbmRlcmxp
bmVNb2RlOgotICAgICAgICBpZiAoaWQgPT0gQ1NTVmFsdWVDb250aW51b3VzIHx8IGlkID09IENT
U1ZhbHVlU2tpcFdoaXRlU3BhY2UpCi0gICAgICAgICAgICB2YWxpZFByaW1pdGl2ZSA9IHRydWU7
Ci0gICAgICAgIGJyZWFrOwotICAgIGNhc2UgQ1NTUHJvcGVydHlUZXh0TGluZVRocm91Z2hTdHls
ZToKLSAgICBjYXNlIENTU1Byb3BlcnR5VGV4dE92ZXJsaW5lU3R5bGU6Ci0gICAgY2FzZSBDU1NQ
cm9wZXJ0eVRleHRVbmRlcmxpbmVTdHlsZToKLSAgICAgICAgaWYgKGlkID09IENTU1ZhbHVlTm9u
ZSB8fCBpZCA9PSBDU1NWYWx1ZVNvbGlkIHx8IGlkID09IENTU1ZhbHVlRG91YmxlIHx8Ci0gICAg
ICAgICAgICBpZCA9PSBDU1NWYWx1ZURhc2hlZCB8fCBpZCA9PSBDU1NWYWx1ZURvdERhc2ggfHwg
aWQgPT0gQ1NTVmFsdWVEb3REb3REYXNoIHx8Ci0gICAgICAgICAgICBpZCA9PSBDU1NWYWx1ZVdh
dmUpCi0gICAgICAgICAgICB2YWxpZFByaW1pdGl2ZSA9IHRydWU7Ci0gICAgICAgIGJyZWFrOwot
ICAgIGNhc2UgQ1NTUHJvcGVydHlUZXh0UmVuZGVyaW5nOiAvLyBhdXRvIHwgb3B0aW1pemVTcGVl
ZCB8IG9wdGltaXplTGVnaWJpbGl0eSB8IGdlb21ldHJpY1ByZWNpc2lvbgotICAgICAgICBpZiAo
aWQgPT0gQ1NTVmFsdWVBdXRvIHx8IGlkID09IENTU1ZhbHVlT3B0aW1pemVzcGVlZCB8fCBpZCA9
PSBDU1NWYWx1ZU9wdGltaXplbGVnaWJpbGl0eQotICAgICAgICAgICAgfHwgaWQgPT0gQ1NTVmFs
dWVHZW9tZXRyaWNwcmVjaXNpb24pCi0gICAgICAgICAgICB2YWxpZFByaW1pdGl2ZSA9IHRydWU7
Ci0gICAgICAgIGJyZWFrOwogICAgIGNhc2UgQ1NTUHJvcGVydHlUZXh0TGluZVRocm91Z2hXaWR0
aDoKICAgICBjYXNlIENTU1Byb3BlcnR5VGV4dE92ZXJsaW5lV2lkdGg6CiAgICAgY2FzZSBDU1NQ
cm9wZXJ0eVRleHRVbmRlcmxpbmVXaWR0aDoKQEAgLTE5NDEsMTAgKzIwMDIsNiBAQCBib29sIENT
U1BhcnNlcjo6cGFyc2VWYWx1ZShpbnQgcHJvcElkLCBib29sIGltcG9ydGFudCkKICAgICAgICAg
ZWxzZQogICAgICAgICAgICAgdmFsaWRQcmltaXRpdmUgPSAhaWQgJiYgdmFsaWRVbml0KHZhbHVl
LCBGTnVtYmVyIHwgRkxlbmd0aCB8IEZQZXJjZW50LCBtX3N0cmljdCk7CiAgICAgICAgIGJyZWFr
OwotICAgIGNhc2UgQ1NTUHJvcGVydHlSZXNpemU6IC8vIG5vbmUgfCBib3RoIHwgaG9yaXpvbnRh
bCB8IHZlcnRpY2FsIHwgYXV0bwotICAgICAgICBpZiAoaWQgPT0gQ1NTVmFsdWVOb25lIHx8IGlk
ID09IENTU1ZhbHVlQm90aCB8fCBpZCA9PSBDU1NWYWx1ZUhvcml6b250YWwgfHwgaWQgPT0gQ1NT
VmFsdWVWZXJ0aWNhbCB8fCBpZCA9PSBDU1NWYWx1ZUF1dG8pCi0gICAgICAgICAgICB2YWxpZFBy
aW1pdGl2ZSA9IHRydWU7Ci0gICAgICAgIGJyZWFrOwogICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJr
aXRDb2x1bW5Db3VudDoKICAgICAgICAgaWYgKGlkID09IENTU1ZhbHVlQXV0bykKICAgICAgICAg
ICAgIHZhbGlkUHJpbWl0aXZlID0gdHJ1ZTsKQEAgLTE5NzMsMTcgKzIwMzAsNiBAQCBib29sIENT
U1BhcnNlcjo6cGFyc2VWYWx1ZShpbnQgcHJvcElkLCBib29sIGltcG9ydGFudCkKICAgICAgICAg
ZWxzZSAvLyBBbHdheXMgcGFyc2UgdGhpcyBwcm9wZXJ0eSBpbiBzdHJpY3QgbW9kZSwgc2luY2Ug
aXQgd291bGQgYmUgYW1iaWd1b3VzIG90aGVyd2lzZSB3aGVuIHVzZWQgaW4gdGhlICdjb2x1bW5z
JyBzaG9ydGhhbmQgcHJvcGVydHkuCiAgICAgICAgICAgICB2YWxpZFByaW1pdGl2ZSA9IHZhbGlk
VW5pdCh2YWx1ZSwgRkxlbmd0aCwgdHJ1ZSk7CiAgICAgICAgIGJyZWFrOwotICAgIGNhc2UgQ1NT
UHJvcGVydHlQb2ludGVyRXZlbnRzOgotICAgICAgICAvLyBub25lIHwgdmlzaWJsZVBhaW50ZWQg
fCB2aXNpYmxlRmlsbCB8IHZpc2libGVTdHJva2UgfCB2aXNpYmxlIHwKLSAgICAgICAgLy8gcGFp
bnRlZCB8IGZpbGwgfCBzdHJva2UgfCBhdXRvIHwgYWxsIHwgaW5oZXJpdAotICAgICAgICBpZiAo
aWQgPT0gQ1NTVmFsdWVWaXNpYmxlIHx8IGlkID09IENTU1ZhbHVlTm9uZSB8fCBpZCA9PSBDU1NW
YWx1ZUFsbCB8fCBpZCA9PSBDU1NWYWx1ZUF1dG8gfHwKLSAgICAgICAgICAgIChpZCA+PSBDU1NW
YWx1ZVZpc2libGVwYWludGVkICYmIGlkIDw9IENTU1ZhbHVlU3Ryb2tlKSkKLSAgICAgICAgICAg
IHZhbGlkUHJpbWl0aXZlID0gdHJ1ZTsKLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBDU1NQcm9w
ZXJ0eUltYWdlUmVuZGVyaW5nOiAvLyBhdXRvIHwgb3B0aW1pemVDb250cmFzdAotICAgICAgICBp
ZiAoaWQgPT0gQ1NTVmFsdWVBdXRvIHx8IGlkID09IENTU1ZhbHVlV2Via2l0T3B0aW1pemVDb250
cmFzdCkKLSAgICAgICAgICAgIHZhbGlkUHJpbWl0aXZlID0gdHJ1ZTsKLSAgICAgICAgYnJlYWs7
CiAgICAgLy8gRW5kIG9mIENTUzMgcHJvcGVydGllcwogCiAgICAgLy8gQXBwbGUgc3BlY2lmaWMg
cHJvcGVydGllcy4gIFRoZXNlIHdpbGwgbmV2ZXIgYmUgc3RhbmRhcmRpemVkIGFuZCBhcmUgcHVy
ZWx5IHRvCkBAIC0xOTkzLDQ0ICsyMDM5LDE2IEBAIGJvb2wgQ1NTUGFyc2VyOjpwYXJzZVZhbHVl
KGludCBwcm9wSWQsIGJvb2wgaW1wb3J0YW50KQogICAgICAgICAvLyBXaGVuIHNwZWNpZnlpbmcg
ZWl0aGVyIHR5cGUgb2YgdW5pdCwgcmVxdWlyZSBub24tbmVnYXRpdmUgaW50ZWdlcnMKICAgICAg
ICAgdmFsaWRQcmltaXRpdmUgPSAoIWlkICYmICh2YWx1ZS0+dW5pdCA9PSBDU1NQcmltaXRpdmVW
YWx1ZTo6Q1NTX1BFUkNFTlRBR0UgfHwgdmFsdWUtPmZWYWx1ZSkgJiYgdmFsaWRVbml0KHZhbHVl
LCBGSW50ZWdlciB8IEZQZXJjZW50IHwgRk5vbk5lZywgZmFsc2UpKTsKICAgICAgICAgYnJlYWs7
Ci0gICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdFRleHRTaXplQWRqdXN0OgotICAgICAgICBpZiAo
aWQgPT0gQ1NTVmFsdWVBdXRvIHx8IGlkID09IENTU1ZhbHVlTm9uZSkKLSAgICAgICAgICAgIHZh
bGlkUHJpbWl0aXZlID0gdHJ1ZTsKLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBDU1NQcm9wZXJ0
eVdlYmtpdFJ0bE9yZGVyaW5nOgotICAgICAgICBpZiAoaWQgPT0gQ1NTVmFsdWVMb2dpY2FsIHx8
IGlkID09IENTU1ZhbHVlVmlzdWFsKQotICAgICAgICAgICAgdmFsaWRQcmltaXRpdmUgPSB0cnVl
OwotICAgICAgICBicmVhazsKIAogICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRGb250U2l6ZURl
bHRhOiAgICAgICAgICAgLy8gPGxlbmd0aD4KICAgICAgICAgdmFsaWRQcmltaXRpdmUgPSB2YWxp
ZFVuaXQodmFsdWUsIEZMZW5ndGgsIG1fc3RyaWN0KTsKICAgICAgICAgYnJlYWs7CiAKLSAgICBj
YXNlIENTU1Byb3BlcnR5V2Via2l0TmJzcE1vZGU6ICAgICAvLyBub3JtYWwgfCBzcGFjZQotICAg
ICAgICBpZiAoaWQgPT0gQ1NTVmFsdWVOb3JtYWwgfHwgaWQgPT0gQ1NTVmFsdWVTcGFjZSkKLSAg
ICAgICAgICAgIHZhbGlkUHJpbWl0aXZlID0gdHJ1ZTsKLSAgICAgICAgYnJlYWs7Ci0KLSAgICBj
YXNlIENTU1Byb3BlcnR5V2Via2l0TGluZUJyZWFrOiAgIC8vIG5vcm1hbCB8IGFmdGVyLXdoaXRl
LXNwYWNlCi0gICAgICAgIGlmIChpZCA9PSBDU1NWYWx1ZU5vcm1hbCB8fCBpZCA9PSBDU1NWYWx1
ZUFmdGVyV2hpdGVTcGFjZSkKLSAgICAgICAgICAgIHZhbGlkUHJpbWl0aXZlID0gdHJ1ZTsKLSAg
ICAgICAgYnJlYWs7Ci0KLSAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0TWF0Y2hOZWFyZXN0TWFp
bEJsb2NrcXVvdGVDb2xvcjogICAvLyBub3JtYWwgfCBtYXRjaAotICAgICAgICBpZiAoaWQgPT0g
Q1NTVmFsdWVOb3JtYWwgfHwgaWQgPT0gQ1NTVmFsdWVNYXRjaCkKLSAgICAgICAgICAgIHZhbGlk
UHJpbWl0aXZlID0gdHJ1ZTsKLSAgICAgICAgYnJlYWs7Ci0KICAgICBjYXNlIENTU1Byb3BlcnR5
V2Via2l0SGlnaGxpZ2h0OgogICAgICAgICBpZiAoaWQgPT0gQ1NTVmFsdWVOb25lIHx8IHZhbHVl
LT51bml0ID09IENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfU1RSSU5HKQogICAgICAgICAgICAgdmFs
aWRQcmltaXRpdmUgPSB0cnVlOwogICAgICAgICBicmVhazsKIAotICAgIGNhc2UgQ1NTUHJvcGVy
dHlXZWJraXRIeXBoZW5zOgotICAgICAgICBpZiAoaWQgPT0gQ1NTVmFsdWVOb25lIHx8IGlkID09
IENTU1ZhbHVlTWFudWFsIHx8IGlkID09IENTU1ZhbHVlQXV0bykKLSAgICAgICAgICAgIHZhbGlk
UHJpbWl0aXZlID0gdHJ1ZTsKLSAgICAgICAgYnJlYWs7Ci0KICAgICBjYXNlIENTU1Byb3BlcnR5
V2Via2l0SHlwaGVuYXRlQ2hhcmFjdGVyOgogICAgICAgICBpZiAoaWQgPT0gQ1NTVmFsdWVBdXRv
IHx8IHZhbHVlLT51bml0ID09IENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfU1RSSU5HKQogICAgICAg
ICAgICAgdmFsaWRQcmltaXRpdmUgPSB0cnVlOwpAQCAtMjA1OCwzNiArMjA3NiwxMSBAQCBib29s
IENTU1BhcnNlcjo6cGFyc2VWYWx1ZShpbnQgcHJvcElkLCBib29sIGltcG9ydGFudCkKICAgICAg
ICAgICAgIH0KICAgICAgICAgfQogICAgICAgICBicmVhazsKLSAgICBjYXNlIENTU1Byb3BlcnR5
V2Via2l0TGluZVNuYXA6Ci0gICAgICAgIGlmIChpZCA9PSBDU1NWYWx1ZU5vbmUgfHwgaWQgPT0g
Q1NTVmFsdWVCYXNlbGluZSB8fCBpZCA9PSBDU1NWYWx1ZUNvbnRhaW4pCi0gICAgICAgICAgICB2
YWxpZFByaW1pdGl2ZSA9IHRydWU7Ci0gICAgICAgIGJyZWFrOwotICAgIGNhc2UgQ1NTUHJvcGVy
dHlXZWJraXRMaW5lQWxpZ246Ci0gICAgICAgIGlmIChpZCA9PSBDU1NWYWx1ZU5vbmUgfHwgaWQg
PT0gQ1NTVmFsdWVFZGdlcykKLSAgICAgICAgICAgIHZhbGlkUHJpbWl0aXZlID0gdHJ1ZTsKLSAg
ICAgICAgYnJlYWs7CiAgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdExvY2FsZToKICAgICAgICAg
aWYgKGlkID09IENTU1ZhbHVlQXV0byB8fCB2YWx1ZS0+dW5pdCA9PSBDU1NQcmltaXRpdmVWYWx1
ZTo6Q1NTX1NUUklORykKICAgICAgICAgICAgIHZhbGlkUHJpbWl0aXZlID0gdHJ1ZTsKICAgICAg
ICAgYnJlYWs7CiAKLSAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0Qm9yZGVyRml0OgotICAgICAg
ICBpZiAoaWQgPT0gQ1NTVmFsdWVCb3JkZXIgfHwgaWQgPT0gQ1NTVmFsdWVMaW5lcykKLSAgICAg
ICAgICAgIHZhbGlkUHJpbWl0aXZlID0gdHJ1ZTsKLSAgICAgICAgYnJlYWs7Ci0KLSAgICBjYXNl
IENTU1Byb3BlcnR5V2Via2l0VGV4dFNlY3VyaXR5OgotICAgICAgICAvLyBkaXNjIHwgY2lyY2xl
IHwgc3F1YXJlIHwgbm9uZSB8IGluaGVyaXQKLSAgICAgICAgaWYgKGlkID09IENTU1ZhbHVlRGlz
YyB8fCBpZCA9PSBDU1NWYWx1ZUNpcmNsZSB8fCBpZCA9PSBDU1NWYWx1ZVNxdWFyZXx8IGlkID09
IENTU1ZhbHVlTm9uZSkKLSAgICAgICAgICAgIHZhbGlkUHJpbWl0aXZlID0gdHJ1ZTsKLSAgICAg
ICAgYnJlYWs7Ci0KLSAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0Rm9udFNtb290aGluZzoKLSAg
ICAgICAgaWYgKGlkID09IENTU1ZhbHVlQXV0byB8fCBpZCA9PSBDU1NWYWx1ZU5vbmUKLSAgICAg
ICAgICAgIHx8IGlkID09IENTU1ZhbHVlQW50aWFsaWFzZWQgfHwgaWQgPT0gQ1NTVmFsdWVTdWJw
aXhlbEFudGlhbGlhc2VkKQotICAgICAgICAgICAgdmFsaWRQcmltaXRpdmUgPSB0cnVlOwotICAg
ICAgICBicmVhazsKLQogI2lmIEVOQUJMRShEQVNIQk9BUkRfU1VQUE9SVCkKICAgICBjYXNlIENT
U1Byb3BlcnR5V2Via2l0RGFzaGJvYXJkUmVnaW9uOiAvLyA8ZGFzaGJvYXJkLXJlZ2lvbj4gfCA8
ZGFzaGJvYXJkLXJlZ2lvbj4KICAgICAgICAgaWYgKHZhbHVlLT51bml0ID09IENTU1BhcnNlclZh
bHVlOjpGdW5jdGlvbiB8fCBpZCA9PSBDU1NWYWx1ZU5vbmUpCkBAIC0yMTA5LDEzICsyMTAyLDYg
QEAgYm9vbCBDU1NQYXJzZXI6OnBhcnNlVmFsdWUoaW50IHByb3BJZCwgYm9vbCBpbXBvcnRhbnQp
CiAgICAgICAgIGJyZWFrOwogI2VuZGlmCiAKLSNpZiBFTkFCTEUoT1ZFUkZMT1dfU0NST0xMSU5H
KQotICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRPdmVyZmxvd1Njcm9sbGluZzoKLSAgICAgICAg
aWYgKGlkID09IENTU1ZhbHVlQXV0byB8fCBpZCA9PSBDU1NWYWx1ZVRvdWNoKQotICAgICAgICAg
ICAgdmFsaWRQcmltaXRpdmUgPSB0cnVlOwotICAgICAgICBicmVhazsKLSNlbmRpZgotCiAgICAg
ICAgIC8qIHNob3J0aGFuZCBwcm9wZXJ0aWVzICovCiAgICAgY2FzZSBDU1NQcm9wZXJ0eUJhY2tn
cm91bmQ6IHsKICAgICAgICAgLy8gUG9zaXRpb24gbXVzdCBjb21lIGJlZm9yZSBjb2xvciBpbiB0
aGlzIGFycmF5IGJlY2F1c2UgYSBwbGFpbiBvbGQgIjAiIGlzIGEgbGVnYWwgY29sb3IKQEAgLTIy
ODUsMjYgKzIyNzEsMTEgQEAgYm9vbCBDU1NQYXJzZXI6OnBhcnNlVmFsdWUoaW50IHByb3BJZCwg
Ym9vbCBpbXBvcnRhbnQpCiAgICAgY2FzZSBDU1NQcm9wZXJ0eVRleHRVbmRlcmxpbmU6CiAgICAg
ICAgIHJldHVybiBmYWxzZTsKICAgICAvLyBDU1MgVGV4dCBMYXlvdXQgTW9kdWxlIExldmVsIDM6
IFZlcnRpY2FsIHdyaXRpbmcgc3VwcG9ydAotICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRXcml0
aW5nTW9kZToKLSAgICAgICAgaWYgKGlkID49IENTU1ZhbHVlSG9yaXpvbnRhbFRiICYmIGlkIDw9
IENTU1ZhbHVlSG9yaXpvbnRhbEJ0KQotICAgICAgICAgICAgdmFsaWRQcmltaXRpdmUgPSB0cnVl
OwotICAgICAgICBicmVhazsKLQotICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRUZXh0Q29tYmlu
ZToKLSAgICAgICAgaWYgKGlkID09IENTU1ZhbHVlTm9uZSB8fCBpZCA9PSBDU1NWYWx1ZUhvcml6
b250YWwpCi0gICAgICAgICAgICB2YWxpZFByaW1pdGl2ZSA9IHRydWU7Ci0gICAgICAgIGJyZWFr
OwotCiAgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdFRleHRFbXBoYXNpczogewogICAgICAgICBj
b25zdCBpbnQgcHJvcGVydGllc1tdID0geyBDU1NQcm9wZXJ0eVdlYmtpdFRleHRFbXBoYXNpc1N0
eWxlLCBDU1NQcm9wZXJ0eVdlYmtpdFRleHRFbXBoYXNpc0NvbG9yIH07CiAgICAgICAgIHJldHVy
biBwYXJzZVNob3J0aGFuZChwcm9wSWQsIHByb3BlcnRpZXMsIFdURl9BUlJBWV9MRU5HVEgocHJv
cGVydGllcyksIGltcG9ydGFudCk7CiAgICAgfQogCi0gICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtp
dFRleHRFbXBoYXNpc1Bvc2l0aW9uOgotICAgICAgICBpZiAoaWQgPT0gQ1NTVmFsdWVPdmVyIHx8
IGlkID09IENTU1ZhbHVlVW5kZXIpCi0gICAgICAgICAgICB2YWxpZFByaW1pdGl2ZSA9IHRydWU7
Ci0gICAgICAgIGJyZWFrOwotCiAgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdFRleHRFbXBoYXNp
c1N0eWxlOgogICAgICAgICByZXR1cm4gcGFyc2VUZXh0RW1waGFzaXNTdHlsZShpbXBvcnRhbnQp
OwogCkBAIC0yMzI3LDExICsyMjk4LDYgQEAgYm9vbCBDU1NQYXJzZXI6OnBhcnNlVmFsdWUoaW50
IHByb3BJZCwgYm9vbCBpbXBvcnRhbnQpCiAgICAgICAgICAgICByZXR1cm4gcGFyc2VGb250RmVh
dHVyZVNldHRpbmdzKGltcG9ydGFudCk7CiAgICAgICAgIGJyZWFrOwogCi0gICAgY2FzZSBDU1NQ
cm9wZXJ0eVdlYmtpdEZvbnRLZXJuaW5nOgotICAgICAgICBpZiAoaWQgPT0gQ1NTVmFsdWVBdXRv
IHx8IGlkID09IENTU1ZhbHVlTm9ybWFsIHx8IGlkID09IENTU1ZhbHVlTm9uZSkKLSAgICAgICAg
ICAgIHZhbGlkUHJpbWl0aXZlID0gdHJ1ZTsKLSAgICAgICAgYnJlYWs7Ci0KICAgICBjYXNlIENT
U1Byb3BlcnR5V2Via2l0Rm9udFZhcmlhbnRMaWdhdHVyZXM6CiAgICAgICAgIGlmIChpZCA9PSBD
U1NWYWx1ZU5vcm1hbCkKICAgICAgICAgICAgIHZhbGlkUHJpbWl0aXZlID0gdHJ1ZTsKQEAgLTIz
NDYsMTUgKzIzMTIsNiBAQCBib29sIENTU1BhcnNlcjo6cGFyc2VWYWx1ZShpbnQgcHJvcElkLCBi
b29sIGltcG9ydGFudCkKICAgICAgICAgZWxzZSBpZiAodmFsdWUtPnVuaXQgPT0gQ1NTUGFyc2Vy
VmFsdWU6OkZ1bmN0aW9uKQogICAgICAgICAgICAgcmV0dXJuIHBhcnNlV3JhcFNoYXBlKChwcm9w
SWQgPT0gQ1NTUHJvcGVydHlXZWJraXRXcmFwU2hhcGVJbnNpZGUpLCBpbXBvcnRhbnQpOwogICAg
ICAgICBicmVhazsKLSAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0V3JhcEZsb3c6Ci0gICAgICAg
IGlmIChpZCA9PSBDU1NWYWx1ZUF1dG8gfHwgaWQgPT0gQ1NTVmFsdWVCb3RoIHx8IGlkID09IENT
U1ZhbHVlTGVmdCB8fCBpZCA9PSBDU1NWYWx1ZVJpZ2h0IHx8IGlkID09IENTU1ZhbHVlTWF4aW11
bSB8fCBpZCA9PSBDU1NWYWx1ZUNsZWFyKQotICAgICAgICAgICAgdmFsaWRQcmltaXRpdmUgPSB0
cnVlOwotICAgICAgICBicmVhazsKLQotICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRXcmFwVGhy
b3VnaDoKLSAgICAgICAgaWYgKGlkID09IENTU1ZhbHVlV3JhcCB8fCBpZCA9PSBDU1NWYWx1ZU5v
bmUpCi0gICAgICAgICAgICB2YWxpZFByaW1pdGl2ZSA9IHRydWU7Ci0gICAgICAgIGJyZWFrOwog
ICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRXcmFwTWFyZ2luOgogICAgIGNhc2UgQ1NTUHJvcGVy
dHlXZWJraXRXcmFwUGFkZGluZzoKICAgICAgICAgdmFsaWRQcmltaXRpdmUgPSAoIWlkICYmIHZh
bGlkVW5pdCh2YWx1ZSwgRkxlbmd0aCB8IEZOb25OZWcsIG1fc3RyaWN0KSk7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="0"
              isprivate="0"
          >
            <attachid>131694</attachid>
            <date>2012-03-13 12:33:59 -0700</date>
            <delta_ts>2012-03-13 12:33:59 -0700</delta_ts>
            <desc>CPU Monitor while browsing Google Maps...</desc>
            <filename>trace.png</filename>
            <type>image/png</type>
            <size>145657</size>
            <attacher name="Alexis Menard (darktears)">menard</attacher>
            
              <data encoding="base64">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
/j9nSniSYnPkVAAAAABJRU5ErkJggg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>131759</attachid>
            <date>2012-03-13 17:30:22 -0700</date>
            <delta_ts>2012-03-14 06:02:53 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-80874-20120313213006.patch</filename>
            <type>text/plain</type>
            <size>45245</size>
            <attacher name="Alexis Menard (darktears)">menard</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTEwNDcyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNjBlYjA1MmZmMjkzZTJm
MTIzNDQxNGRiNTM5MzgxYjdmMmVjYzkyYS4uNmZiNjQ1MjM5ZjM0MDYxZTYxMmMyNDgzN2JjYjlk
Njg3ZTE4NjZiOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMyIEBACisyMDEyLTAzLTEzICBBbGV4
aXMgTWVuYXJkICA8YWxleGlzLm1lbmFyZEBvcGVuYm9zc2Eub3JnPgorCisgICAgICAgIEltcGxl
bWVudCBhIGZhc3QgcGF0aCB3aGVuIHNldHRpbmcgQ1NTIHByb3BlcnRpZXMgd2l0aCBrZXl3b3Jk
cyBmcm9tIEpTLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9ODA4NzQKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICBJbXBsZW1lbnQgYSBmYXN0IHBhdGggZm9yIHByb3BlcnRpZXMgd2l0aCBrZXl3b3Jkcy4gVGhl
IGlkZWEgaXMgdG8gYXZvaWQKKyAgICAgICAgY3JlYXRpbmcgdGhlIENTUyBwYXJzZXIgYW5kIHJ1
biBhbGwgdGhlIG1hY2hpbmVyeSBmb3IgaXQuIFRoaXMgcGF0Y2gKKyAgICAgICAgYWRkcyBhIHN0
YXRpYyBtYXAgd2hlcmUgYWxsIHRoZSBwcm9wZXJ0aWVzIGFjY2VwdGluZyBrZXl3b3JkcyBhcyB2
YWx1ZSBhcmUKKyAgICAgICAgZGVzY3JpYmVkIChlLmcuIHBvc3Rpb24gOiBmaXhlZCkuIFdoZW4g
SlMgY2FsbHMgcGFyc2VWYWx1ZSB3ZSBjaGVjayBpZiB3ZQorICAgICAgICBjYW4gdXNlIHRoZSBm
YXN0IHBhdGggdG8gYWRkIHRoZSBjcmVhdGVkIHByb3BlcnR5IGRpcmVjdGx5IGluIHRoZSBkZWNs
YXJhdGlvbi4KKyAgICAgICAgRm9yIHRoZSBzYWtlIG9mIG1haW50ZW5hbmNlIHRoZSBwYXJzZVZh
bHVlIGZ1bnRpb24gdXNlZCBieSBDU1NHcmFtbWFyLnkgaXMgdXNpbmcKKyAgICAgICAgdGhpcyBt
YXAuCisKKyAgICAgICAgTm8gbmV3IHRlc3RzIDogZXhpc3RpbmdzIG9uZXMgc2hvdWxkIGNvdmVy
LgorCisgICAgICAgICogY3NzL0NTU1BhcnNlci5jcHA6CisgICAgICAgIChXZWJDb3JlKToKKyAg
ICAgICAgKFByb3BlcnR5TWFwRW50cnkpOgorICAgICAgICAoV2ViQ29yZTo6UHJvcGVydHlNYXBF
bnRyeTo6UHJvcGVydHlNYXBFbnRyeSk6CisgICAgICAgIChXZWJDb3JlOjpQcm9wZXJ0eU1hcEVu
dHJ5OjptYXRjaCk6CisgICAgICAgIChLZXl3b3JkUHJvcGVydHlNYXBFbnRyeSk6CisgICAgICAg
IChXZWJDb3JlOjpLZXl3b3JkUHJvcGVydHlNYXBFbnRyeTo6S2V5d29yZFByb3BlcnR5TWFwRW50
cnkpOgorICAgICAgICAoV2ViQ29yZTo6S2V5d29yZFByb3BlcnR5TWFwRW50cnk6Om1hdGNoKToK
KyAgICAgICAgKFdlYkNvcmU6OnByb3BlcnR5Rm9ySUQpOgorICAgICAgICAoV2ViQ29yZTo6cGFy
c2VLZXl3b3JkVmFsdWUpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTUGFyc2VyOjpwYXJzZVZhbHVl
KToKKwogMjAxMi0wMy0xMiAgVGltIEhvcnRvbiAgPHRpbW90aHlfaG9ydG9uQGFwcGxlLmNvbT4K
IAogICAgICAgICBJbmZpbml0ZSByZXBhaW50IGxvb3Agd2l0aCBTVkdJbWFnZUNhY2hlIGFuZCBk
ZWZlcnJlZCByZXBhaW50IHRpbWVycwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NT
U1BhcnNlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUGFyc2VyLmNwcAppbmRleCAzZGM0
YmM5MTIwMjU1MmI2Njc1NGZiOWU0NzZhZDQwZDcwMGQxOGYwLi44ZTdhMmI2OGI1NjIzNDZkY2Vk
NmI2ODc3NWYzMzYzYzRjNmRkODc1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NT
UGFyc2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUGFyc2VyLmNwcApAQCAtNDc5
LDYgKzQ3OSwxOTQgQEAgc3RhdGljIGJvb2wgcGFyc2VTaW1wbGVMZW5ndGhWYWx1ZShTdHlsZVBy
b3BlcnR5U2V0KiBkZWNsYXJhdGlvbiwgaW50IHByb3BlcnR5SWQKICAgICByZXR1cm4gdHJ1ZTsK
IH0KIAorY2xhc3MgUHJvcGVydHlNYXBFbnRyeSB7CitwdWJsaWM6CisgICAgdHlwZWRlZiBib29s
ICgqTWF0Y2hGdW5jdGlvbikoaW50KTsKKyAgICBQcm9wZXJ0eU1hcEVudHJ5KCkgOiBtX21hdGNo
KDApIHsgfQorICAgIGJvb2wgaXNWYWxpZCgpIGNvbnN0IHsgcmV0dXJuIG1fbWF0Y2g7IH0KKyAg
ICBQcm9wZXJ0eU1hcEVudHJ5KE1hdGNoRnVuY3Rpb24gbWF0Y2gpIDogbV9tYXRjaChtYXRjaCkg
eyB9CisgICAgYm9vbCBtYXRjaChpbnQgaWQpIGNvbnN0IHsgQVNTRVJUKG1fbWF0Y2gpOyByZXR1
cm4gKCptX21hdGNoKShpZCk7IH0KK3ByaXZhdGU6CisgICAgTWF0Y2hGdW5jdGlvbiBtX21hdGNo
OworfTsKKworZW51bSBNYXRjaEtleXdvcmRCZWhhdmlvciB7TWF0Y2hWYWx1ZXMgPSAwLCBNYXRj
aFJhbmdlfTsKK3RlbXBsYXRlIDxNYXRjaEtleXdvcmRCZWhhdmlvciBiZWhhdmlvciwgaW50IG9u
ZSA9IENTU1ZhbHVlSW52YWxpZCwgaW50IHR3byA9IENTU1ZhbHVlSW52YWxpZCwgaW50IHRocmVl
ID0gQ1NTVmFsdWVJbnZhbGlkLCBpbnQgZm91ciA9IENTU1ZhbHVlSW52YWxpZCwgaW50IGZpdmUg
PSBDU1NWYWx1ZUludmFsaWQsCisgICAgICAgICAgaW50IHNpeCA9IENTU1ZhbHVlSW52YWxpZCwg
aW50IHNldmVuID0gQ1NTVmFsdWVJbnZhbGlkLCBpbnQgZWlnaHQgPSBDU1NWYWx1ZUludmFsaWQs
IGludCBuaW5lID0gQ1NTVmFsdWVJbnZhbGlkPgorY2xhc3MgS2V5d29yZFByb3BlcnR5TWFwRW50
cnkgOiBwdWJsaWMgUHJvcGVydHlNYXBFbnRyeSB7CitwdWJsaWM6CisgICAgS2V5d29yZFByb3Bl
cnR5TWFwRW50cnkoKQorICAgICAgICA6IFByb3BlcnR5TWFwRW50cnkoJm1hdGNoKQorICAgIHsK
KyAgICB9CisKKyAgICBzdGF0aWMgYm9vbCBtYXRjaChpbnQgaWQpCisgICAgeworICAgICAgICBp
ZiAoIWlkIHx8IGlkID09IENTU1ZhbHVlSW52YWxpZCkKKyAgICAgICAgICAgIHJldHVybiBmYWxz
ZTsKKworICAgICAgICBpZiAoYmVoYXZpb3IgPT0gTWF0Y2hSYW5nZSAmJiBpZCA+PSBvbmUgJiYg
aWQgPD0gdHdvKQorICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOworCisgICAgICAgIGlmIChp
ZCA9PSBvbmUgfHwgaWQgPT0gdHdvIHx8IGlkID09IHRocmVlIHx8IGlkID09IGZvdXIgfHwgaWQg
PT0gZml2ZSB8fCBpZCA9PSBzaXggfHwgaWQgPT0gc2V2ZW4gfHwgaWQgPT0gZWlnaHQgfHwgaWQg
PT0gbmluZSkKKyAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICByZXR1cm4gZmFsc2U7
CisgICAgfQorfTsKKwordHlwZWRlZiBIYXNoTWFwPGludCwgUHJvcGVydHlNYXBFbnRyeT4gS2V5
d29yZFByb3BlcnR5TWFwOworc3RhdGljIGNvbnN0IFByb3BlcnR5TWFwRW50cnkgcHJvcGVydHlG
b3JJRChpbnQgcHJvcGVydHlJZCkKK3sKKyAgICBERUZJTkVfU1RBVElDX0xPQ0FMKEtleXdvcmRQ
cm9wZXJ0eU1hcCwgbWFwLCAoKSk7CisgICAgaWYgKG1hcC5pc0VtcHR5KCkpIHsKKyAgICAgICAg
bWFwLnNldChDU1NQcm9wZXJ0eUJvcmRlckJvdHRvbVN0eWxlLCBLZXl3b3JkUHJvcGVydHlNYXBF
bnRyeTxNYXRjaFJhbmdlLCBDU1NWYWx1ZU5vbmUsIENTU1ZhbHVlRG91YmxlPigpKTsgLy8gbm9u
ZSB8IGhpZGRlbiB8IGRvdHRlZCB8IGRhc2hlZCB8IHNvbGlkIHwgZG91YmxlIHwgZ3Jvb3ZlIHwg
cmlkZ2UgfCBpbnNldCB8IG91dHNldAorICAgICAgICBtYXAuc2V0KENTU1Byb3BlcnR5Qm9yZGVy
Q29sbGFwc2UsIEtleXdvcmRQcm9wZXJ0eU1hcEVudHJ5PE1hdGNoVmFsdWVzLCBDU1NWYWx1ZUNv
bGxhcHNlLCBDU1NWYWx1ZVNlcGFyYXRlPigpKTsgLy8gY29sbGFwc2UgfCBzZXBhcmF0ZSB8IGlu
aGVyaXQKKyAgICAgICAgbWFwLnNldChDU1NQcm9wZXJ0eUJvcmRlckxlZnRTdHlsZSwgS2V5d29y
ZFByb3BlcnR5TWFwRW50cnk8TWF0Y2hSYW5nZSwgQ1NTVmFsdWVOb25lLCBDU1NWYWx1ZURvdWJs
ZT4oKSk7IC8vIG5vbmUgfCBoaWRkZW4gfCBkb3R0ZWQgfCBkYXNoZWQgfCBzb2xpZCB8IGRvdWJs
ZSB8IGdyb292ZSB8IHJpZGdlIHwgaW5zZXQgfCBvdXRzZXQKKyAgICAgICAgbWFwLnNldChDU1NQ
cm9wZXJ0eUJvcmRlclJpZ2h0U3R5bGUsIEtleXdvcmRQcm9wZXJ0eU1hcEVudHJ5PE1hdGNoUmFu
Z2UsIENTU1ZhbHVlTm9uZSwgQ1NTVmFsdWVEb3VibGU+KCkpOyAvLyBub25lIHwgaGlkZGVuIHwg
ZG90dGVkIHwgZGFzaGVkIHwgc29saWQgfCBkb3VibGUgfCBncm9vdmUgfCByaWRnZSB8IGluc2V0
IHwgb3V0c2V0CisgICAgICAgIG1hcC5zZXQoQ1NTUHJvcGVydHlCb3JkZXJUb3BTdHlsZSwgS2V5
d29yZFByb3BlcnR5TWFwRW50cnk8TWF0Y2hSYW5nZSwgQ1NTVmFsdWVOb25lLCBDU1NWYWx1ZURv
dWJsZT4oKSk7IC8vIG5vbmUgfCBoaWRkZW4gfCBkb3R0ZWQgfCBkYXNoZWQgfCBzb2xpZCB8IGRv
dWJsZSB8IGdyb292ZSB8IHJpZGdlIHwgaW5zZXQgfCBvdXRzZXQKKyAgICAgICAgbWFwLnNldChD
U1NQcm9wZXJ0eUJveFNpemluZywgS2V5d29yZFByb3BlcnR5TWFwRW50cnk8TWF0Y2hWYWx1ZXMs
IENTU1ZhbHVlQm9yZGVyQm94LCBDU1NWYWx1ZUNvbnRlbnRCb3g+KCkpOworICAgICAgICBtYXAu
c2V0KENTU1Byb3BlcnR5Q2FwdGlvblNpZGUsIEtleXdvcmRQcm9wZXJ0eU1hcEVudHJ5PE1hdGNo
VmFsdWVzLCBDU1NWYWx1ZUxlZnQsIENTU1ZhbHVlUmlnaHQsIENTU1ZhbHVlVG9wLCBDU1NWYWx1
ZUJvdHRvbT4oKSk7IC8vIHRvcCB8IGJvdHRvbSB8IGxlZnQgfCByaWdodCB8IGluaGVyaXQKKyAg
ICAgICAgbWFwLnNldChDU1NQcm9wZXJ0eUNsZWFyLCBLZXl3b3JkUHJvcGVydHlNYXBFbnRyeTxN
YXRjaFZhbHVlcywgQ1NTVmFsdWVOb25lLCBDU1NWYWx1ZUxlZnQsIENTU1ZhbHVlUmlnaHQsIENT
U1ZhbHVlQm90aD4oKSk7IC8vIG5vbmUgfCBsZWZ0IHwgcmlnaHQgfCBib3RoIHwgaW5oZXJpdAor
ICAgICAgICBtYXAuc2V0KENTU1Byb3BlcnR5RGlyZWN0aW9uLCBLZXl3b3JkUHJvcGVydHlNYXBF
bnRyeTxNYXRjaFZhbHVlcywgQ1NTVmFsdWVMdHIsIENTU1ZhbHVlUnRsPigpKTsgLy8gbHRyIHwg
cnRsIHwgaW5oZXJpdAorICAgICAgICAvLyBpbmxpbmUgfCBibG9jayB8IGxpc3QtaXRlbSB8IHJ1
bi1pbiB8IGlubGluZS1ibG9jayB8IHRhYmxlIHwKKyAgICAgICAgLy8gaW5saW5lLXRhYmxlIHwg
dGFibGUtcm93LWdyb3VwIHwgdGFibGUtaGVhZGVyLWdyb3VwIHwgdGFibGUtZm9vdGVyLWdyb3Vw
IHwgdGFibGUtcm93IHwKKyAgICAgICAgLy8gdGFibGUtY29sdW1uLWdyb3VwIHwgdGFibGUtY29s
dW1uIHwgdGFibGUtY2VsbCB8IHRhYmxlLWNhcHRpb24gfCAtd2Via2l0LWJveCB8IC13ZWJraXQt
aW5saW5lLWJveCB8IG5vbmUgfCBpbmhlcml0CisgICAgICAgIC8vIC13ZWJraXQtZmxleGJveCB8
IC13ZWJraXQtaW5saW5lLWZsZXhib3ggfCAtd2Via2l0LWdyaWQgfCAtd2Via2l0LWlubGluZS1n
cmlkCisjaWYgRU5BQkxFKENTU19HUklEX0xBWU9VVCkKKyAgICAgICAgbWFwLnNldChDU1NQcm9w
ZXJ0eURpc3BsYXksIEtleXdvcmRQcm9wZXJ0eU1hcEVudHJ5PE1hdGNoUmFuZ2UsIENTU1ZhbHVl
SW5saW5lLCBDU1NWYWx1ZVdlYmtpdElubGluZUZsZXhib3gsIENTU1ZhbHVlTm9uZSwgQ1NTVmFs
dWVXZWJraXRHcmlkLCBDU1NWYWx1ZVdlYmtpdElubGluZUdyaWQ+KCkpOworI2Vsc2UKKyAgICAg
ICBtYXAuc2V0KENTU1Byb3BlcnR5RGlzcGxheSwgS2V5d29yZFByb3BlcnR5TWFwRW50cnk8TWF0
Y2hSYW5nZSwgQ1NTVmFsdWVJbmxpbmUsIENTU1ZhbHVlV2Via2l0SW5saW5lRmxleGJveCwgQ1NT
VmFsdWVOb25lPigpKTsKKyNlbmRpZgorICAgICAgICBtYXAuc2V0KENTU1Byb3BlcnR5RW1wdHlD
ZWxscywgS2V5d29yZFByb3BlcnR5TWFwRW50cnk8TWF0Y2hWYWx1ZXMsIENTU1ZhbHVlU2hvdywg
Q1NTVmFsdWVIaWRlPigpKTsgLy8gc2hvdyB8IGhpZGUgfCBpbmhlcml0CisgICAgICAgIG1hcC5z
ZXQoQ1NTUHJvcGVydHlGbG9hdCwgS2V5d29yZFByb3BlcnR5TWFwRW50cnk8TWF0Y2hWYWx1ZXMs
IENTU1ZhbHVlTGVmdCwgQ1NTVmFsdWVSaWdodCwgQ1NTVmFsdWVOb25lLCBDU1NWYWx1ZUNlbnRl
ciwgQ1NTVmFsdWVXZWJraXRQb3NpdGlvbmVkPigpKTsgLy8gbGVmdCB8IHJpZ2h0IHwgbm9uZSB8
IHBvc2l0aW9uZWQgfCBjZW50ZXIgKGZvciBidWdneSBDU1MsIG1hcHMgdG8gbm9uZSkKKyAgICAg
ICAgbWFwLnNldChDU1NQcm9wZXJ0eUZvbnRTdHlsZSwgS2V5d29yZFByb3BlcnR5TWFwRW50cnk8
TWF0Y2hWYWx1ZXMsIENTU1ZhbHVlTm9ybWFsLCBDU1NWYWx1ZUl0YWxpYywgQ1NTVmFsdWVPYmxp
cXVlPigpKTsgLy8gbm9ybWFsIHwgaXRhbGljIHwgb2JsaXF1ZSB8IGluaGVyaXQKKyAgICAgICAg
bWFwLnNldChDU1NQcm9wZXJ0eUltYWdlUmVuZGVyaW5nLCBLZXl3b3JkUHJvcGVydHlNYXBFbnRy
eTxNYXRjaFZhbHVlcywgQ1NTVmFsdWVBdXRvLCBDU1NWYWx1ZVdlYmtpdE9wdGltaXplQ29udHJh
c3Q+KCkpOyAvLyBhdXRvIHwgb3B0aW1pemVDb250cmFzdAorICAgICAgICBtYXAuc2V0KENTU1By
b3BlcnR5TGlzdFN0eWxlUG9zaXRpb24sIEtleXdvcmRQcm9wZXJ0eU1hcEVudHJ5PE1hdGNoVmFs
dWVzLCBDU1NWYWx1ZUluc2lkZSwgQ1NTVmFsdWVPdXRzaWRlPigpKTsgLy8gaW5zaWRlIHwgb3V0
c2lkZSB8IGluaGVyaXQKKyAgICAgICAgbWFwLnNldChDU1NQcm9wZXJ0eUxpc3RTdHlsZVR5cGUs
IEtleXdvcmRQcm9wZXJ0eU1hcEVudHJ5PE1hdGNoUmFuZ2UsIENTU1ZhbHVlRGlzYywgQ1NTVmFs
dWVLYXRha2FuYUlyb2hhLCBDU1NWYWx1ZU5vbmU+KCkpOworICAgICAgICBtYXAuc2V0KENTU1By
b3BlcnR5T3V0bGluZVN0eWxlLCBLZXl3b3JkUHJvcGVydHlNYXBFbnRyeTxNYXRjaFJhbmdlLCBD
U1NWYWx1ZUluc2V0LCBDU1NWYWx1ZURvdWJsZSwgQ1NTVmFsdWVOb25lLCBDU1NWYWx1ZUF1dG8+
KCkpOyAvLyAoPGJvcmRlci1zdHlsZT4gZXhjZXB0IGhpZGRlbikgfCBhdXRvIHwgaW5oZXJpdAor
ICAgICAgICBtYXAuc2V0KENTU1Byb3BlcnR5T3ZlcmZsb3dYLCBLZXl3b3JkUHJvcGVydHlNYXBF
bnRyeTxNYXRjaFZhbHVlcywgQ1NTVmFsdWVWaXNpYmxlLCBDU1NWYWx1ZUhpZGRlbiwgQ1NTVmFs
dWVTY3JvbGwsIENTU1ZhbHVlQXV0bywgQ1NTVmFsdWVPdmVybGF5LCBDU1NWYWx1ZVdlYmtpdE1h
cnF1ZWU+KCkpOyAvLyB2aXNpYmxlIHwgaGlkZGVuIHwgc2Nyb2xsIHwgYXV0byB8IG1hcnF1ZWUg
fCBvdmVybGF5IHwgaW5oZXJpdAorICAgICAgICBtYXAuc2V0KENTU1Byb3BlcnR5T3ZlcmZsb3dZ
LCBLZXl3b3JkUHJvcGVydHlNYXBFbnRyeTxNYXRjaFZhbHVlcywgQ1NTVmFsdWVWaXNpYmxlLCBD
U1NWYWx1ZUhpZGRlbiwgQ1NTVmFsdWVTY3JvbGwsIENTU1ZhbHVlQXV0bywgQ1NTVmFsdWVPdmVy
bGF5LCBDU1NWYWx1ZVdlYmtpdE1hcnF1ZWU+KCkpOyAvLyB2aXNpYmxlIHwgaGlkZGVuIHwgc2Ny
b2xsIHwgYXV0byB8IG1hcnF1ZWUgfCBvdmVybGF5IHwgaW5oZXJpdAorICAgICAgICAvLyBub25l
IHwgdmlzaWJsZVBhaW50ZWQgfCB2aXNpYmxlRmlsbCB8IHZpc2libGVTdHJva2UgfCB2aXNpYmxl
IHwKKyAgICAgICAgLy8gcGFpbnRlZCB8IGZpbGwgfCBzdHJva2UgfCBhdXRvIHwgYWxsIHwgaW5o
ZXJpdAorICAgICAgICBtYXAuc2V0KENTU1Byb3BlcnR5UG9pbnRlckV2ZW50cywgS2V5d29yZFBy
b3BlcnR5TWFwRW50cnk8TWF0Y2hSYW5nZSwgQ1NTVmFsdWVWaXNpYmxlcGFpbnRlZCwgQ1NTVmFs
dWVTdHJva2UsIENTU1ZhbHVlVmlzaWJsZSwgQ1NTVmFsdWVOb25lLCBDU1NWYWx1ZUFsbCwgQ1NT
VmFsdWVBdXRvPigpKTsKKyAgICAgICAgbWFwLnNldChDU1NQcm9wZXJ0eVBvc2l0aW9uLCBLZXl3
b3JkUHJvcGVydHlNYXBFbnRyeTxNYXRjaFZhbHVlcywgQ1NTVmFsdWVTdGF0aWMsIENTU1ZhbHVl
UmVsYXRpdmUsIENTU1ZhbHVlQWJzb2x1dGUsIENTU1ZhbHVlRml4ZWQ+KCkpOworICAgICAgICBt
YXAuc2V0KENTU1Byb3BlcnR5UmVzaXplLCBLZXl3b3JkUHJvcGVydHlNYXBFbnRyeTxNYXRjaFZh
bHVlcywgQ1NTVmFsdWVOb25lLCBDU1NWYWx1ZUJvdGgsIENTU1ZhbHVlSG9yaXpvbnRhbCwgQ1NT
VmFsdWVWZXJ0aWNhbCwgQ1NTVmFsdWVBdXRvPigpKTsgLy8gbm9uZSB8IGJvdGggfCBob3Jpem9u
dGFsIHwgdmVydGljYWwgfCBhdXRvCisgICAgICAgIG1hcC5zZXQoQ1NTUHJvcGVydHlTcGVhaywg
S2V5d29yZFByb3BlcnR5TWFwRW50cnk8TWF0Y2hWYWx1ZXMsIENTU1ZhbHVlTm9uZSwgQ1NTVmFs
dWVOb3JtYWwsIENTU1ZhbHVlU3BlbGxPdXQsIENTU1ZhbHVlRGlnaXRzLCBDU1NWYWx1ZUxpdGVy
YWxQdW5jdHVhdGlvbiwgQ1NTVmFsdWVOb1B1bmN0dWF0aW9uPigpKTsgLy8gbm9uZSB8IG5vcm1h
bCB8IHNwZWxsLW91dCB8IGRpZ2l0cyB8IGxpdGVyYWwtcHVuY3R1YXRpb24gfCBuby1wdW5jdHVh
dGlvbiB8IGluaGVyaXQKKyAgICAgICAgbWFwLnNldChDU1NQcm9wZXJ0eVRhYmxlTGF5b3V0LCBL
ZXl3b3JkUHJvcGVydHlNYXBFbnRyeTxNYXRjaFZhbHVlcywgQ1NTVmFsdWVBdXRvLCBDU1NWYWx1
ZUZpeGVkPigpKTsgLy8gYXV0byB8IGZpeGVkIHwgaW5oZXJpdAorICAgICAgICBtYXAuc2V0KENT
U1Byb3BlcnR5VGV4dExpbmVUaHJvdWdoTW9kZSwgS2V5d29yZFByb3BlcnR5TWFwRW50cnk8TWF0
Y2hWYWx1ZXMsIENTU1ZhbHVlQ29udGludW91cywgQ1NTVmFsdWVTa2lwV2hpdGVTcGFjZT4oKSk7
CisgICAgICAgIG1hcC5zZXQoQ1NTUHJvcGVydHlUZXh0TGluZVRocm91Z2hTdHlsZSwgS2V5d29y
ZFByb3BlcnR5TWFwRW50cnk8TWF0Y2hWYWx1ZXMsIENTU1ZhbHVlTm9uZSwgQ1NTVmFsdWVTb2xp
ZCwgQ1NTVmFsdWVEb3VibGUsIENTU1ZhbHVlRGFzaGVkLCBDU1NWYWx1ZURvdERhc2gsIENTU1Zh
bHVlRG90RG90RGFzaCwgQ1NTVmFsdWVXYXZlPigpKTsKKyAgICAgICAgbWFwLnNldChDU1NQcm9w
ZXJ0eVRleHRPdmVyZmxvdywgS2V5d29yZFByb3BlcnR5TWFwRW50cnk8TWF0Y2hWYWx1ZXMsIENT
U1ZhbHVlQ2xpcCwgQ1NTVmFsdWVFbGxpcHNpcz4oKSk7IC8vIGNsaXAgfCBlbGxpcHNpcworICAg
ICAgICBtYXAuc2V0KENTU1Byb3BlcnR5VGV4dE92ZXJsaW5lTW9kZSwgS2V5d29yZFByb3BlcnR5
TWFwRW50cnk8TWF0Y2hWYWx1ZXMsIENTU1ZhbHVlQ29udGludW91cywgQ1NTVmFsdWVTa2lwV2hp
dGVTcGFjZT4oKSk7CisgICAgICAgIG1hcC5zZXQoQ1NTUHJvcGVydHlUZXh0T3ZlcmxpbmVTdHls
ZSwgS2V5d29yZFByb3BlcnR5TWFwRW50cnk8TWF0Y2hWYWx1ZXMsIENTU1ZhbHVlTm9uZSwgQ1NT
VmFsdWVTb2xpZCwgQ1NTVmFsdWVEb3VibGUsIENTU1ZhbHVlRGFzaGVkLCBDU1NWYWx1ZURvdERh
c2gsIENTU1ZhbHVlRG90RG90RGFzaCwgQ1NTVmFsdWVXYXZlPigpKTsKKyAgICAgICAgbWFwLnNl
dChDU1NQcm9wZXJ0eVRleHRSZW5kZXJpbmcsIEtleXdvcmRQcm9wZXJ0eU1hcEVudHJ5PE1hdGNo
VmFsdWVzLCBDU1NWYWx1ZUF1dG8sIENTU1ZhbHVlT3B0aW1pemVzcGVlZCwgQ1NTVmFsdWVPcHRp
bWl6ZWxlZ2liaWxpdHksIENTU1ZhbHVlR2VvbWV0cmljcHJlY2lzaW9uPigpKTsgLy8gYXV0byB8
IG9wdGltaXplU3BlZWQgfCBvcHRpbWl6ZUxlZ2liaWxpdHkgfCBnZW9tZXRyaWNQcmVjaXNpb24K
KyAgICAgICAgbWFwLnNldChDU1NQcm9wZXJ0eVRleHRUcmFuc2Zvcm0sIEtleXdvcmRQcm9wZXJ0
eU1hcEVudHJ5PE1hdGNoUmFuZ2UsIENTU1ZhbHVlQ2FwaXRhbGl6ZSwgQ1NTVmFsdWVMb3dlcmNh
c2UsIENTU1ZhbHVlTm9uZT4oKSk7IC8vIGNhcGl0YWxpemUgfCB1cHBlcmNhc2UgfCBsb3dlcmNh
c2UgfCBub25lIHwgaW5oZXJpdAorICAgICAgICBtYXAuc2V0KENTU1Byb3BlcnR5VGV4dFVuZGVy
bGluZU1vZGUsIEtleXdvcmRQcm9wZXJ0eU1hcEVudHJ5PE1hdGNoVmFsdWVzLCBDU1NWYWx1ZUNv
bnRpbnVvdXMsIENTU1ZhbHVlU2tpcFdoaXRlU3BhY2U+KCkpOworICAgICAgICBtYXAuc2V0KENT
U1Byb3BlcnR5VGV4dFVuZGVybGluZVN0eWxlLCBLZXl3b3JkUHJvcGVydHlNYXBFbnRyeTxNYXRj
aFZhbHVlcywgQ1NTVmFsdWVOb25lLCBDU1NWYWx1ZVNvbGlkLCBDU1NWYWx1ZURvdWJsZSwgQ1NT
VmFsdWVEYXNoZWQsIENTU1ZhbHVlRG90RGFzaCwgQ1NTVmFsdWVEb3REb3REYXNoLCBDU1NWYWx1
ZVdhdmU+KCkpOworICAgICAgICBtYXAuc2V0KENTU1Byb3BlcnR5VmlzaWJpbGl0eSwgS2V5d29y
ZFByb3BlcnR5TWFwRW50cnk8TWF0Y2hWYWx1ZXMsIENTU1ZhbHVlVmlzaWJsZSwgQ1NTVmFsdWVI
aWRkZW4sIENTU1ZhbHVlQ29sbGFwc2U+KCkpOyAvLyB2aXNpYmxlIHwgaGlkZGVuIHwgY29sbGFw
c2UgfCBpbmhlcml0CisgICAgICAgIG1hcC5zZXQoQ1NTUHJvcGVydHlXZWJraXRBcHBlYXJhbmNl
LCBLZXl3b3JkUHJvcGVydHlNYXBFbnRyeTxNYXRjaFJhbmdlLCBDU1NWYWx1ZUNoZWNrYm94LCBD
U1NWYWx1ZVRleHRhcmVhLCBDU1NWYWx1ZU5vbmU+KCkpOworICAgICAgICBtYXAuc2V0KENTU1By
b3BlcnR5V2Via2l0QmFja2ZhY2VWaXNpYmlsaXR5LCBLZXl3b3JkUHJvcGVydHlNYXBFbnRyeTxN
YXRjaFZhbHVlcywgQ1NTVmFsdWVWaXNpYmxlLCBDU1NWYWx1ZUhpZGRlbj4oKSk7CisgICAgICAg
IG1hcC5zZXQoQ1NTUHJvcGVydHlXZWJraXRCb3JkZXJBZnRlclN0eWxlLCBLZXl3b3JkUHJvcGVy
dHlNYXBFbnRyeTxNYXRjaFJhbmdlLCBDU1NWYWx1ZU5vbmUsIENTU1ZhbHVlRG91YmxlPigpKTsg
Ly8gbm9uZSB8IGhpZGRlbiB8IGRvdHRlZCB8IGRhc2hlZCB8IHNvbGlkIHwgZG91YmxlIHwgZ3Jv
b3ZlIHwgcmlkZ2UgfCBpbnNldCB8IG91dHNldAorICAgICAgICBtYXAuc2V0KENTU1Byb3BlcnR5
V2Via2l0Qm9yZGVyQmVmb3JlU3R5bGUsIEtleXdvcmRQcm9wZXJ0eU1hcEVudHJ5PE1hdGNoUmFu
Z2UsIENTU1ZhbHVlTm9uZSwgQ1NTVmFsdWVEb3VibGU+KCkpOyAvLyBub25lIHwgaGlkZGVuIHwg
ZG90dGVkIHwgZGFzaGVkIHwgc29saWQgfCBkb3VibGUgfCBncm9vdmUgfCByaWRnZSB8IGluc2V0
IHwgb3V0c2V0CisgICAgICAgIG1hcC5zZXQoQ1NTUHJvcGVydHlXZWJraXRCb3JkZXJFbmRTdHls
ZSwgS2V5d29yZFByb3BlcnR5TWFwRW50cnk8TWF0Y2hSYW5nZSwgQ1NTVmFsdWVOb25lLCBDU1NW
YWx1ZURvdWJsZT4oKSk7IC8vIG5vbmUgfCBoaWRkZW4gfCBkb3R0ZWQgfCBkYXNoZWQgfCBzb2xp
ZCB8IGRvdWJsZSB8IGdyb292ZSB8IHJpZGdlIHwgaW5zZXQgfCBvdXRzZXQKKyAgICAgICAgbWFw
LnNldChDU1NQcm9wZXJ0eVdlYmtpdEJvcmRlckZpdCwgS2V5d29yZFByb3BlcnR5TWFwRW50cnk8
TWF0Y2hWYWx1ZXMsIENTU1ZhbHVlQm9yZGVyLCBDU1NWYWx1ZUxpbmVzPigpKTsKKyAgICAgICAg
bWFwLnNldChDU1NQcm9wZXJ0eVdlYmtpdEJvcmRlclN0YXJ0U3R5bGUsIEtleXdvcmRQcm9wZXJ0
eU1hcEVudHJ5PE1hdGNoUmFuZ2UsIENTU1ZhbHVlTm9uZSwgQ1NTVmFsdWVEb3VibGU+KCkpOyAv
LyBub25lIHwgaGlkZGVuIHwgZG90dGVkIHwgZGFzaGVkIHwgc29saWQgfCBkb3VibGUgfCBncm9v
dmUgfCByaWRnZSB8IGluc2V0IHwgb3V0c2V0CisgICAgICAgIG1hcC5zZXQoQ1NTUHJvcGVydHlX
ZWJraXRCb3hBbGlnbiwgS2V5d29yZFByb3BlcnR5TWFwRW50cnk8TWF0Y2hWYWx1ZXMsIENTU1Zh
bHVlU3RyZXRjaCwgQ1NTVmFsdWVTdGFydCwgQ1NTVmFsdWVFbmQsIENTU1ZhbHVlQ2VudGVyLCBD
U1NWYWx1ZUJhc2VsaW5lPigpKTsKKyAgICAgICAgbWFwLnNldChDU1NQcm9wZXJ0eVdlYmtpdEJv
eERpcmVjdGlvbiwgS2V5d29yZFByb3BlcnR5TWFwRW50cnk8TWF0Y2hWYWx1ZXMsIENTU1ZhbHVl
Tm9ybWFsLCBDU1NWYWx1ZVJldmVyc2U+KCkpOworICAgICAgICBtYXAuc2V0KENTU1Byb3BlcnR5
V2Via2l0Qm94TGluZXMsIEtleXdvcmRQcm9wZXJ0eU1hcEVudHJ5PE1hdGNoVmFsdWVzLCBDU1NW
YWx1ZVNpbmdsZSwgQ1NTVmFsdWVNdWx0aXBsZT4oKSk7CisgICAgICAgIG1hcC5zZXQoQ1NTUHJv
cGVydHlXZWJraXRCb3hPcmllbnQsIEtleXdvcmRQcm9wZXJ0eU1hcEVudHJ5PE1hdGNoVmFsdWVz
LCBDU1NWYWx1ZUhvcml6b250YWwsIENTU1ZhbHVlVmVydGljYWwsIENTU1ZhbHVlSW5saW5lQXhp
cywgQ1NTVmFsdWVCbG9ja0F4aXM+KCkpOworICAgICAgICBtYXAuc2V0KENTU1Byb3BlcnR5V2Vi
a2l0Qm94UGFjaywgS2V5d29yZFByb3BlcnR5TWFwRW50cnk8TWF0Y2hWYWx1ZXMsIENTU1ZhbHVl
U3RhcnQsIENTU1ZhbHVlRW5kLCBDU1NWYWx1ZUNlbnRlciwgQ1NTVmFsdWVKdXN0aWZ5PigpKTsK
KyAgICAgICAgbWFwLnNldChDU1NQcm9wZXJ0eVdlYmtpdENvbG9yQ29ycmVjdGlvbiwgS2V5d29y
ZFByb3BlcnR5TWFwRW50cnk8TWF0Y2hWYWx1ZXMsIENTU1ZhbHVlU3JnYiwgQ1NTVmFsdWVEZWZh
dWx0PigpKTsKKyAgICAgICAgbWFwLnNldChDU1NQcm9wZXJ0eVdlYmtpdENvbHVtblJ1bGVTdHls
ZSwgS2V5d29yZFByb3BlcnR5TWFwRW50cnk8TWF0Y2hSYW5nZSwgQ1NTVmFsdWVOb25lLCBDU1NW
YWx1ZURvdWJsZT4oKSk7IC8vIG5vbmUgfCBoaWRkZW4gfCBkb3R0ZWQgfCBkYXNoZWQgfCBzb2xp
ZCB8IGRvdWJsZSB8IGdyb292ZSB8IHJpZGdlIHwgaW5zZXQgfCBvdXRzZXQKKyAgICAgICAgbWFw
LnNldChDU1NQcm9wZXJ0eVdlYmtpdEZsZXhBbGlnbiwgS2V5d29yZFByb3BlcnR5TWFwRW50cnk8
TWF0Y2hWYWx1ZXMsIENTU1ZhbHVlU3RhcnQsIENTU1ZhbHVlRW5kLCBDU1NWYWx1ZUNlbnRlciwg
Q1NTVmFsdWVCYXNlbGluZSwgQ1NTVmFsdWVTdHJldGNoPigpKTsKKyAgICAgICAgbWFwLnNldChD
U1NQcm9wZXJ0eVdlYmtpdEZsZXhEaXJlY3Rpb24sIEtleXdvcmRQcm9wZXJ0eU1hcEVudHJ5PE1h
dGNoVmFsdWVzLCBDU1NWYWx1ZVJvdywgQ1NTVmFsdWVSb3dSZXZlcnNlLCBDU1NWYWx1ZUNvbHVt
biwgQ1NTVmFsdWVDb2x1bW5SZXZlcnNlPigpKTsKKyAgICAgICAgbWFwLnNldChDU1NQcm9wZXJ0
eVdlYmtpdEZsZXhJdGVtQWxpZ24sIEtleXdvcmRQcm9wZXJ0eU1hcEVudHJ5PE1hdGNoVmFsdWVz
LCBDU1NWYWx1ZUF1dG8sIENTU1ZhbHVlU3RhcnQsIENTU1ZhbHVlRW5kLCBDU1NWYWx1ZUNlbnRl
ciwgQ1NTVmFsdWVTdHJldGNoLCBDU1NWYWx1ZUJhc2VsaW5lLCBDU1NWYWx1ZVN0cmV0Y2g+KCkp
OworICAgICAgICBtYXAuc2V0KENTU1Byb3BlcnR5V2Via2l0RmxleFBhY2ssIEtleXdvcmRQcm9w
ZXJ0eU1hcEVudHJ5PE1hdGNoVmFsdWVzLCBDU1NWYWx1ZVN0YXJ0LCBDU1NWYWx1ZUVuZCwgQ1NT
VmFsdWVDZW50ZXIsIENTU1ZhbHVlSnVzdGlmeSwgQ1NTVmFsdWVEaXN0cmlidXRlPigpKTsKKyAg
ICAgICAgbWFwLnNldChDU1NQcm9wZXJ0eVdlYmtpdEZsZXhXcmFwLCBLZXl3b3JkUHJvcGVydHlN
YXBFbnRyeTxNYXRjaFZhbHVlcywgQ1NTVmFsdWVOb25lLCBDU1NWYWx1ZVdyYXAsIENTU1ZhbHVl
V3JhcFJldmVyc2U+KCkpOworICAgICAgICBtYXAuc2V0KENTU1Byb3BlcnR5V2Via2l0Rm9udEtl
cm5pbmcsIEtleXdvcmRQcm9wZXJ0eU1hcEVudHJ5PE1hdGNoVmFsdWVzLCBDU1NWYWx1ZUF1dG8s
IENTU1ZhbHVlTm9ybWFsLCBDU1NWYWx1ZU5vbmU+KCkpOworICAgICAgICBtYXAuc2V0KENTU1By
b3BlcnR5V2Via2l0Rm9udFNtb290aGluZywgS2V5d29yZFByb3BlcnR5TWFwRW50cnk8TWF0Y2hW
YWx1ZXMsIENTU1ZhbHVlQXV0bywgQ1NTVmFsdWVOb25lLCBDU1NWYWx1ZUFudGlhbGlhc2VkLCBD
U1NWYWx1ZVN1YnBpeGVsQW50aWFsaWFzZWQ+KCkpOworICAgICAgICBtYXAuc2V0KENTU1Byb3Bl
cnR5V2Via2l0SHlwaGVucywgS2V5d29yZFByb3BlcnR5TWFwRW50cnk8TWF0Y2hWYWx1ZXMsIENT
U1ZhbHVlTm9uZSwgQ1NTVmFsdWVNYW51YWwsIENTU1ZhbHVlQXV0bz4oKSk7CisgICAgICAgIG1h
cC5zZXQoQ1NTUHJvcGVydHlXZWJraXRMaW5lQWxpZ24sIEtleXdvcmRQcm9wZXJ0eU1hcEVudHJ5
PE1hdGNoVmFsdWVzLCBDU1NWYWx1ZU5vbmUsIENTU1ZhbHVlRWRnZXM+KCkpOworICAgICAgICBt
YXAuc2V0KENTU1Byb3BlcnR5V2Via2l0TGluZUJyZWFrLCBLZXl3b3JkUHJvcGVydHlNYXBFbnRy
eTxNYXRjaFZhbHVlcywgQ1NTVmFsdWVOb3JtYWwsIENTU1ZhbHVlQWZ0ZXJXaGl0ZVNwYWNlPigp
KTsgLy8gbm9ybWFsIHwgYWZ0ZXItd2hpdGUtc3BhY2UKKyAgICAgICAgbWFwLnNldChDU1NQcm9w
ZXJ0eVdlYmtpdExpbmVTbmFwLCBLZXl3b3JkUHJvcGVydHlNYXBFbnRyeTxNYXRjaFZhbHVlcywg
Q1NTVmFsdWVOb25lLCBDU1NWYWx1ZUJhc2VsaW5lLCBDU1NWYWx1ZUNvbnRhaW4+KCkpOworICAg
ICAgICBtYXAuc2V0KENTU1Byb3BlcnR5V2Via2l0TWFyZ2luQWZ0ZXJDb2xsYXBzZSwgS2V5d29y
ZFByb3BlcnR5TWFwRW50cnk8TWF0Y2hWYWx1ZXMsIENTU1ZhbHVlQ29sbGFwc2UsIENTU1ZhbHVl
U2VwYXJhdGUsIENTU1ZhbHVlRGlzY2FyZD4oKSk7CisgICAgICAgIG1hcC5zZXQoQ1NTUHJvcGVy
dHlXZWJraXRNYXJnaW5CZWZvcmVDb2xsYXBzZSwgS2V5d29yZFByb3BlcnR5TWFwRW50cnk8TWF0
Y2hWYWx1ZXMsIENTU1ZhbHVlQ29sbGFwc2UsIENTU1ZhbHVlU2VwYXJhdGUsIENTU1ZhbHVlRGlz
Y2FyZD4oKSk7CisgICAgICAgIG1hcC5zZXQoQ1NTUHJvcGVydHlXZWJraXRNYXJnaW5Cb3R0b21D
b2xsYXBzZSwgS2V5d29yZFByb3BlcnR5TWFwRW50cnk8TWF0Y2hWYWx1ZXMsIENTU1ZhbHVlQ29s
bGFwc2UsIENTU1ZhbHVlU2VwYXJhdGUsIENTU1ZhbHVlRGlzY2FyZD4oKSk7CisgICAgICAgIG1h
cC5zZXQoQ1NTUHJvcGVydHlXZWJraXRNYXJnaW5Ub3BDb2xsYXBzZSwgS2V5d29yZFByb3BlcnR5
TWFwRW50cnk8TWF0Y2hWYWx1ZXMsIENTU1ZhbHVlQ29sbGFwc2UsIENTU1ZhbHVlU2VwYXJhdGUs
IENTU1ZhbHVlRGlzY2FyZD4oKSk7CisgICAgICAgIG1hcC5zZXQoQ1NTUHJvcGVydHlXZWJraXRN
YXJxdWVlRGlyZWN0aW9uLCBLZXl3b3JkUHJvcGVydHlNYXBFbnRyeTxNYXRjaFZhbHVlcywgQ1NT
VmFsdWVGb3J3YXJkcywgQ1NTVmFsdWVCYWNrd2FyZHMsIENTU1ZhbHVlQWhlYWQsIENTU1ZhbHVl
UmV2ZXJzZSwgQ1NTVmFsdWVMZWZ0LCBDU1NWYWx1ZVJpZ2h0LCBDU1NWYWx1ZURvd24sIENTU1Zh
bHVlVXAsIENTU1ZhbHVlQXV0bz4oKSk7CisgICAgICAgIG1hcC5zZXQoQ1NTUHJvcGVydHlXZWJr
aXRNYXJxdWVlU3R5bGUsIEtleXdvcmRQcm9wZXJ0eU1hcEVudHJ5PE1hdGNoVmFsdWVzLCBDU1NW
YWx1ZU5vbmUsIENTU1ZhbHVlU2xpZGUsIENTU1ZhbHVlU2Nyb2xsLCBDU1NWYWx1ZUFsdGVybmF0
ZT4oKSk7CisgICAgICAgIG1hcC5zZXQoQ1NTUHJvcGVydHlXZWJraXRNYXRjaE5lYXJlc3RNYWls
QmxvY2txdW90ZUNvbG9yLCBLZXl3b3JkUHJvcGVydHlNYXBFbnRyeTxNYXRjaFZhbHVlcywgQ1NT
VmFsdWVOb3JtYWwsIENTU1ZhbHVlTWF0Y2g+KCkpOyAvLyBub3JtYWwgfCBtYXRjaAorICAgICAg
ICBtYXAuc2V0KENTU1Byb3BlcnR5V2Via2l0TmJzcE1vZGUsIEtleXdvcmRQcm9wZXJ0eU1hcEVu
dHJ5PE1hdGNoVmFsdWVzLCBDU1NWYWx1ZU5vcm1hbCwgQ1NTVmFsdWVTcGFjZT4oKSk7IC8vIG5v
cm1hbCB8IHNwYWNlCisjaWYgRU5BQkxFKE9WRVJGTE9XX1NDUk9MTElORykKKyAgICAgICAgbWFw
LnNldChDU1NQcm9wZXJ0eVdlYmtpdE92ZXJmbG93U2Nyb2xsaW5nLCBLZXl3b3JkUHJvcGVydHlN
YXBFbnRyeTxNYXRjaFZhbHVlcywgQ1NTVmFsdWVBdXRvLCBDU1NWYWx1ZVRvdWNoPigpKTsKKyNl
bmRpZgorICAgICAgICBtYXAuc2V0KENTU1Byb3BlcnR5V2Via2l0UHJpbnRDb2xvckFkanVzdCwg
S2V5d29yZFByb3BlcnR5TWFwRW50cnk8TWF0Y2hWYWx1ZXMsIENTU1ZhbHVlRXhhY3QsIENTU1Zh
bHVlRWNvbm9teT4oKSk7CisgICAgICAgIG1hcC5zZXQoQ1NTUHJvcGVydHlXZWJraXRSdGxPcmRl
cmluZywgS2V5d29yZFByb3BlcnR5TWFwRW50cnk8TWF0Y2hWYWx1ZXMsIENTU1ZhbHVlTG9naWNh
bCwgQ1NTVmFsdWVWaXN1YWw+KCkpOworICAgICAgICBtYXAuc2V0KENTU1Byb3BlcnR5V2Via2l0
VGV4dENvbWJpbmUsIEtleXdvcmRQcm9wZXJ0eU1hcEVudHJ5PE1hdGNoVmFsdWVzLCBDU1NWYWx1
ZU5vbmUsIENTU1ZhbHVlSG9yaXpvbnRhbD4oKSk7CisgICAgICAgIG1hcC5zZXQoQ1NTUHJvcGVy
dHlXZWJraXRUZXh0RW1waGFzaXNQb3NpdGlvbiwgS2V5d29yZFByb3BlcnR5TWFwRW50cnk8TWF0
Y2hWYWx1ZXMsIENTU1ZhbHVlT3ZlciwgQ1NTVmFsdWVVbmRlcj4oKSk7CisgICAgICAgIG1hcC5z
ZXQoQ1NTUHJvcGVydHlXZWJraXRUZXh0U2VjdXJpdHksIEtleXdvcmRQcm9wZXJ0eU1hcEVudHJ5
PE1hdGNoVmFsdWVzLCBDU1NWYWx1ZURpc2MsIENTU1ZhbHVlQ2lyY2xlLCBDU1NWYWx1ZVNxdWFy
ZSwgQ1NTVmFsdWVOb25lPigpKTsgLy8gZGlzYyB8IGNpcmNsZSB8IHNxdWFyZSB8IG5vbmUgfCBp
bmhlcml0CisgICAgICAgIG1hcC5zZXQoQ1NTUHJvcGVydHlXZWJraXRUZXh0U2l6ZUFkanVzdCwg
S2V5d29yZFByb3BlcnR5TWFwRW50cnk8TWF0Y2hWYWx1ZXMsIENTU1ZhbHVlQXV0bywgQ1NTVmFs
dWVOb25lPigpKTsKKyAgICAgICAgbWFwLnNldChDU1NQcm9wZXJ0eVdlYmtpdFRyYW5zZm9ybVN0
eWxlLCBLZXl3b3JkUHJvcGVydHlNYXBFbnRyeTxNYXRjaFZhbHVlcywgQ1NTVmFsdWVGbGF0LCBD
U1NWYWx1ZVByZXNlcnZlM2Q+KCkpOyAvLyBjbGlwIHwgZWxsaXBzaXMKKyAgICAgICAgbWFwLnNl
dChDU1NQcm9wZXJ0eVdlYmtpdFVzZXJEcmFnLCBLZXl3b3JkUHJvcGVydHlNYXBFbnRyeTxNYXRj
aFZhbHVlcywgQ1NTVmFsdWVBdXRvLCBDU1NWYWx1ZU5vbmUsIENTU1ZhbHVlRWxlbWVudD4oKSk7
IC8vIGF1dG8gfCBub25lIHwgZWxlbWVudAorICAgICAgICBtYXAuc2V0KENTU1Byb3BlcnR5V2Vi
a2l0VXNlck1vZGlmeSwgS2V5d29yZFByb3BlcnR5TWFwRW50cnk8TWF0Y2hWYWx1ZXMsIENTU1Zh
bHVlUmVhZE9ubHksIENTU1ZhbHVlUmVhZFdyaXRlLCBDU1NWYWx1ZVJlYWRXcml0ZVBsYWludGV4
dE9ubHk+KCkpOyAvLyByZWFkLW9ubHkgfCByZWFkLXdyaXRlCisgICAgICAgIG1hcC5zZXQoQ1NT
UHJvcGVydHlXZWJraXRVc2VyU2VsZWN0LCBLZXl3b3JkUHJvcGVydHlNYXBFbnRyeTxNYXRjaFZh
bHVlcywgQ1NTVmFsdWVBdXRvLCBDU1NWYWx1ZU5vbmUsIENTU1ZhbHVlVGV4dD4oKSk7IC8vIGF1
dG8gfCBub25lIHwgdGV4dAorICAgICAgICBtYXAuc2V0KENTU1Byb3BlcnR5V2Via2l0V3JhcEZs
b3csIEtleXdvcmRQcm9wZXJ0eU1hcEVudHJ5PE1hdGNoVmFsdWVzLCBDU1NWYWx1ZUF1dG8sIENT
U1ZhbHVlQm90aCwgQ1NTVmFsdWVMZWZ0LCBDU1NWYWx1ZVJpZ2h0LCBDU1NWYWx1ZU1heGltdW0s
IENTU1ZhbHVlQ2xlYXI+KCkpOworICAgICAgICBtYXAuc2V0KENTU1Byb3BlcnR5V2Via2l0V3Jh
cFRocm91Z2gsIEtleXdvcmRQcm9wZXJ0eU1hcEVudHJ5PE1hdGNoVmFsdWVzLCBDU1NWYWx1ZVdy
YXAsIENTU1ZhbHVlTm9uZT4oKSk7CisgICAgICAgIG1hcC5zZXQoQ1NTUHJvcGVydHlXZWJraXRX
cml0aW5nTW9kZSwgS2V5d29yZFByb3BlcnR5TWFwRW50cnk8TWF0Y2hSYW5nZSwgQ1NTVmFsdWVI
b3Jpem9udGFsVGIsIENTU1ZhbHVlSG9yaXpvbnRhbEJ0PigpKTsKKyAgICAgICAgbWFwLnNldChD
U1NQcm9wZXJ0eVdoaXRlU3BhY2UsIEtleXdvcmRQcm9wZXJ0eU1hcEVudHJ5PE1hdGNoVmFsdWVz
LCBDU1NWYWx1ZU5vcm1hbCwgQ1NTVmFsdWVQcmUsIENTU1ZhbHVlUHJlV3JhcCwgQ1NTVmFsdWVQ
cmVMaW5lLCBDU1NWYWx1ZU5vd3JhcD4oKSk7IC8vIG5vcm1hbCB8IHByZSB8IG5vd3JhcCB8IGlu
aGVyaXQKKyAgICAgICAgbWFwLnNldChDU1NQcm9wZXJ0eVdvcmRCcmVhaywgS2V5d29yZFByb3Bl
cnR5TWFwRW50cnk8TWF0Y2hWYWx1ZXMsIENTU1ZhbHVlTm9ybWFsLCBDU1NWYWx1ZUJyZWFrQWxs
LCBDU1NWYWx1ZUJyZWFrV29yZD4oKSk7IC8vIG5vcm1hbCB8IGJyZWFrLWFsbCB8IGJyZWFrLXdv
cmQgKHRoaXMgaXMgYSBjdXN0b20gZXh0ZW5zaW9uKQorICAgICAgICBtYXAuc2V0KENTU1Byb3Bl
cnR5V29yZFdyYXAsIEtleXdvcmRQcm9wZXJ0eU1hcEVudHJ5PE1hdGNoVmFsdWVzLCBDU1NWYWx1
ZU5vcm1hbCwgQ1NTVmFsdWVCcmVha1dvcmQ+KCkpOyAvLyBub3JtYWwgfCBicmVhay13b3JkCisg
ICAgfQorICAgIHJldHVybiBtYXAuZ2V0KHByb3BlcnR5SWQpOworfQorCitzdGF0aWMgYm9vbCBw
YXJzZUtleXdvcmRWYWx1ZShTdHlsZVByb3BlcnR5U2V0KiBkZWNsYXJhdGlvbiwgaW50IHByb3Bl
cnR5SWQsIGNvbnN0IFN0cmluZyYgc3RyaW5nLCBib29sIGltcG9ydGFudCwgQ1NTU3R5bGVTaGVl
dCogY29udGV4dFN0eWxlU2hlZXQpCit7CisgICAgaWYgKCFzdHJpbmcubGVuZ3RoKCkpCisgICAg
ICAgIHJldHVybiBmYWxzZTsKKworICAgIGNvbnN0IFByb3BlcnR5TWFwRW50cnkgcHJvcGVydHkg
PSBwcm9wZXJ0eUZvcklEKHByb3BlcnR5SWQpOworICAgIGlmICghcHJvcGVydHkuaXNWYWxpZCgp
KQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBDU1NQYXJzZXJTdHJpbmcgY3NzU3RyaW5n
OworICAgIGNzc1N0cmluZy5jaGFyYWN0ZXJzID0gY29uc3RfY2FzdDxVQ2hhcio+KHN0cmluZy5j
aGFyYWN0ZXJzKCkpOworICAgIGNzc1N0cmluZy5sZW5ndGggPSBzdHJpbmcubGVuZ3RoKCk7Cisg
ICAgaW50IHZhbHVlSUQgPSBjc3NWYWx1ZUtleXdvcmRJRChjc3NTdHJpbmcpOworCisgICAgaWYg
KCF2YWx1ZUlEKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBEb2N1bWVudCogZG9jdW1l
bnQgPSBjb250ZXh0U3R5bGVTaGVldC0+ZmluZERvY3VtZW50KCk7CisgICAgUmVmUHRyPENTU1Zh
bHVlPiB2YWx1ZTsKKyAgICBDU1NWYWx1ZVBvb2wqIGNzc1ZhbHVlUG9vbCA9IGRvY3VtZW50ID8g
ZG9jdW1lbnQtPmNzc1ZhbHVlUG9vbCgpLmdldCgpIDogMDsKKyAgICBpZiAodmFsdWVJRCA9PSBD
U1NWYWx1ZUluaGVyaXQpIHsKKyAgICAgICAgaWYgKGNzc1ZhbHVlUG9vbCkKKyAgICAgICAgICAg
IHZhbHVlID0gY3NzVmFsdWVQb29sLT5jcmVhdGVJbmhlcml0ZWRWYWx1ZSgpOworICAgICAgICBl
bHNlCisgICAgICAgICAgICB2YWx1ZSA9IENTU0luaGVyaXRlZFZhbHVlOjpjcmVhdGUoKTsKKyAg
ICAgICAgZGVjbGFyYXRpb24tPmFkZFBhcnNlZFByb3BlcnR5KENTU1Byb3BlcnR5KHByb3BlcnR5
SWQsIHZhbHVlLnJlbGVhc2UoKSwgaW1wb3J0YW50KSk7CisgICAgICAgIHJldHVybiB0cnVlOwor
ICAgIH0KKyAgICBpZiAodmFsdWVJRCA9PSBDU1NWYWx1ZUluaXRpYWwpIHsKKyAgICAgICAgaWYg
KGNzc1ZhbHVlUG9vbCkKKyAgICAgICAgICAgIHZhbHVlID0gY3NzVmFsdWVQb29sLT5jcmVhdGVF
eHBsaWNpdEluaXRpYWxWYWx1ZSgpOworICAgICAgICBlbHNlCisgICAgICAgICAgICB2YWx1ZSA9
IENTU0luaXRpYWxWYWx1ZTo6Y3JlYXRlRXhwbGljaXQoKTsKKyAgICAgICAgZGVjbGFyYXRpb24t
PmFkZFBhcnNlZFByb3BlcnR5KENTU1Byb3BlcnR5KHByb3BlcnR5SWQsIHZhbHVlLnJlbGVhc2Uo
KSwgaW1wb3J0YW50KSk7CisgICAgICAgIHJldHVybiB0cnVlOworICAgIH0KKworICAgIGlmICgh
cHJvcGVydHkubWF0Y2godmFsdWVJRCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIGlm
IChkb2N1bWVudCkKKyAgICAgICAgdmFsdWUgPSBjc3NWYWx1ZVBvb2wtPmNyZWF0ZUlkZW50aWZp
ZXJWYWx1ZSh2YWx1ZUlEKTsKKyAgICBlbHNlCisgICAgICAgIHZhbHVlID0gQ1NTUHJpbWl0aXZl
VmFsdWU6OmNyZWF0ZUlkZW50aWZpZXIodmFsdWVJRCk7CisgICAgZGVjbGFyYXRpb24tPmFkZFBh
cnNlZFByb3BlcnR5KENTU1Byb3BlcnR5KHByb3BlcnR5SWQsIHZhbHVlLnJlbGVhc2UoKSwgaW1w
b3J0YW50KSk7CisgICAgcmV0dXJuIHRydWU7Cit9CisKIFBhc3NSZWZQdHI8Q1NTVmFsdWVMaXN0
PiBDU1NQYXJzZXI6OnBhcnNlRm9udEZhY2VWYWx1ZShjb25zdCBBdG9taWNTdHJpbmcmIHN0cmlu
ZywgQ1NTU3R5bGVTaGVldCogY29udGV4dFN0eWxlU2hlZXQpCiB7CiAgICAgUmVmUHRyPFN0eWxl
UHJvcGVydHlTZXQ+IGR1bW15U3R5bGUgPSBTdHlsZVByb3BlcnR5U2V0OjpjcmVhdGUoKTsKQEAg
LTQ5Myw2ICs2ODEsOCBAQCBib29sIENTU1BhcnNlcjo6cGFyc2VWYWx1ZShTdHlsZVByb3BlcnR5
U2V0KiBkZWNsYXJhdGlvbiwgaW50IHByb3BlcnR5SWQsIGNvbnN0CiAgICAgICAgIHJldHVybiB0
cnVlOwogICAgIGlmIChwYXJzZUNvbG9yVmFsdWUoZGVjbGFyYXRpb24sIHByb3BlcnR5SWQsIHN0
cmluZywgaW1wb3J0YW50LCBzdHJpY3QsIGNvbnRleHRTdHlsZVNoZWV0KSkKICAgICAgICAgcmV0
dXJuIHRydWU7CisgICAgaWYgKHBhcnNlS2V5d29yZFZhbHVlKGRlY2xhcmF0aW9uLCBwcm9wZXJ0
eUlkLCBzdHJpbmcsIGltcG9ydGFudCwgY29udGV4dFN0eWxlU2hlZXQpKQorICAgICAgICByZXR1
cm4gdHJ1ZTsKICAgICBDU1NQYXJzZXIgcGFyc2VyKHN0cmljdCk7CiAgICAgcmV0dXJuIHBhcnNl
ci5wYXJzZVZhbHVlKGRlY2xhcmF0aW9uLCBwcm9wZXJ0eUlkLCBzdHJpbmcsIGltcG9ydGFudCwg
Y29udGV4dFN0eWxlU2hlZXQpOwogfQpAQCAtOTMwLDYgKzExMjAsMjMgQEAgYm9vbCBDU1NQYXJz
ZXI6OnBhcnNlVmFsdWUoaW50IHByb3BJZCwgYm9vbCBpbXBvcnRhbnQpCiAgICAgYm9vbCB2YWxp
ZFByaW1pdGl2ZSA9IGZhbHNlOwogICAgIFJlZlB0cjxDU1NWYWx1ZT4gcGFyc2VkVmFsdWU7CiAK
KyAgICBpZiAoaWQpIHsKKyAgICAgICAgY29uc3QgUHJvcGVydHlNYXBFbnRyeSBwcm9wZXJ0eSA9
IHByb3BlcnR5Rm9ySUQocHJvcElkKTsKKyAgICAgICAgaWYgKHByb3BlcnR5LmlzVmFsaWQoKSkg
eworICAgICAgICAgICAgaWYgKCFwcm9wZXJ0eS5tYXRjaChpZCkpCisgICAgICAgICAgICAgICAg
cmV0dXJuIGZhbHNlOworCisgICAgICAgICAgICBwYXJzZWRWYWx1ZSA9IHBhcnNlVmFsaWRQcmlt
aXRpdmUoaWQsIHZhbHVlKTsKKyAgICAgICAgICAgIG1fdmFsdWVMaXN0LT5uZXh0KCk7CisgICAg
ICAgICAgICBBU1NFUlQoIW1fcGFyc2VkQ2FsY3VsYXRpb24pOworICAgICAgICAgICAgaWYgKCFt
X3ZhbHVlTGlzdC0+Y3VycmVudCgpIHx8IGluU2hvcnRoYW5kKCkpIHsKKyAgICAgICAgICAgICAg
ICBhZGRQcm9wZXJ0eShwcm9wSWQsIHBhcnNlZFZhbHVlLnJlbGVhc2UoKSwgaW1wb3J0YW50KTsK
KyAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAg
IHJldHVybiBmYWxzZTsKKyAgICAgICAgfQorICAgIH0KKwogICAgIHN3aXRjaCAoc3RhdGljX2Nh
c3Q8Q1NTUHJvcGVydHlJRD4ocHJvcElkKSkgewogICAgICAgICAvKiBUaGUgY29tbWVudCB0byB0
aGUgbGVmdCBkZWZpbmVzIGFsbCB2YWxpZCB2YWx1ZSBvZiB0aGlzIHByb3BlcnRpZXMgYXMgZGVm
aW5lZAogICAgICAgICAgKiBpbiBDU1MgMiwgQXBwZW5kaXggRi4gUHJvcGVydHkgaW5kZXgKQEAg
LTEwMDQsMjUgKzEyMTEsMTAgQEAgYm9vbCBDU1NQYXJzZXI6OnBhcnNlVmFsdWUoaW50IHByb3BJ
ZCwgYm9vbCBpbXBvcnRhbnQpCiAgICAgICAgICAgICB2YWxpZFByaW1pdGl2ZSA9IChwcm9wSWQg
PT0gQ1NTUHJvcGVydHlXZWJraXRSZWdpb25CcmVha0luc2lkZSkgPyBjc3NSZWdpb25zRW5hYmxl
ZCgpIDogdHJ1ZTsKICAgICAgICAgYnJlYWs7CiAKLSAgICBjYXNlIENTU1Byb3BlcnR5RW1wdHlD
ZWxsczogICAgICAgICAgLy8gc2hvdyB8IGhpZGUgfCBpbmhlcml0Ci0gICAgICAgIGlmIChpZCA9
PSBDU1NWYWx1ZVNob3cKLSAgICAgICAgICAgIHx8IGlkID09IENTU1ZhbHVlSGlkZSkKLSAgICAg
ICAgICAgIHZhbGlkUHJpbWl0aXZlID0gdHJ1ZTsKLSAgICAgICAgYnJlYWs7Ci0KICAgICBjYXNl
IENTU1Byb3BlcnR5Q29udGVudDogICAgICAgICAgICAgIC8vIFsgPHN0cmluZz4gfCA8dXJpPiB8
IDxjb3VudGVyPiB8IGF0dHIoWCkgfCBvcGVuLXF1b3RlIHwKICAgICAgICAgLy8gY2xvc2UtcXVv
dGUgfCBuby1vcGVuLXF1b3RlIHwgbm8tY2xvc2UtcXVvdGUgXSsgfCBpbmhlcml0CiAgICAgICAg
IHJldHVybiBwYXJzZUNvbnRlbnQocHJvcElkLCBpbXBvcnRhbnQpOwogCi0gICAgY2FzZSBDU1NQ
cm9wZXJ0eVdoaXRlU3BhY2U6ICAgICAgICAgIC8vIG5vcm1hbCB8IHByZSB8IG5vd3JhcCB8IGlu
aGVyaXQKLSAgICAgICAgaWYgKGlkID09IENTU1ZhbHVlTm9ybWFsCi0gICAgICAgICAgICB8fCBp
ZCA9PSBDU1NWYWx1ZVByZQotICAgICAgICAgICAgfHwgaWQgPT0gQ1NTVmFsdWVQcmVXcmFwCi0g
ICAgICAgICAgICB8fCBpZCA9PSBDU1NWYWx1ZVByZUxpbmUKLSAgICAgICAgICAgIHx8IGlkID09
IENTU1ZhbHVlTm93cmFwKQotICAgICAgICAgICAgdmFsaWRQcmltaXRpdmUgPSB0cnVlOwotICAg
ICAgICBicmVhazsKLQogICAgIGNhc2UgQ1NTUHJvcGVydHlDbGlwOiAgICAgICAgICAgICAgICAg
Ly8gPHNoYXBlPiB8IGF1dG8gfCBpbmhlcml0CiAgICAgICAgIGlmIChpZCA9PSBDU1NWYWx1ZUF1
dG8pCiAgICAgICAgICAgICB2YWxpZFByaW1pdGl2ZSA9IHRydWU7CkBAIC0xMDMzLDIyICsxMjI1
LDYgQEAgYm9vbCBDU1NQYXJzZXI6OnBhcnNlVmFsdWUoaW50IHByb3BJZCwgYm9vbCBpbXBvcnRh
bnQpCiAgICAgLyogU3RhcnQgb2Ygc3VwcG9ydGVkIENTUyBwcm9wZXJ0aWVzIHdpdGggdmFsaWRh
dGlvbi4gVGhpcyBpcyBuZWVkZWQgZm9yIHBhcnNlU2hvcnRoYW5kIHRvIHdvcmsKICAgICAgKiBj
b3JyZWN0bHkgYW5kIGFsbG93cyBvcHRpbWl6YXRpb24gaW4gV2ViQ29yZTo6YXBwbHlSdWxlKC4u
KQogICAgICAqLwotICAgIGNhc2UgQ1NTUHJvcGVydHlDYXB0aW9uU2lkZTogICAgICAgICAvLyB0
b3AgfCBib3R0b20gfCBsZWZ0IHwgcmlnaHQgfCBpbmhlcml0Ci0gICAgICAgIGlmIChpZCA9PSBD
U1NWYWx1ZUxlZnQgfHwgaWQgPT0gQ1NTVmFsdWVSaWdodCB8fAotICAgICAgICAgICAgaWQgPT0g
Q1NTVmFsdWVUb3AgfHwgaWQgPT0gQ1NTVmFsdWVCb3R0b20pCi0gICAgICAgICAgICB2YWxpZFBy
aW1pdGl2ZSA9IHRydWU7Ci0gICAgICAgIGJyZWFrOwotCi0gICAgY2FzZSBDU1NQcm9wZXJ0eUJv
cmRlckNvbGxhcHNlOiAgICAgIC8vIGNvbGxhcHNlIHwgc2VwYXJhdGUgfCBpbmhlcml0Ci0gICAg
ICAgIGlmIChpZCA9PSBDU1NWYWx1ZUNvbGxhcHNlIHx8IGlkID09IENTU1ZhbHVlU2VwYXJhdGUp
Ci0gICAgICAgICAgICB2YWxpZFByaW1pdGl2ZSA9IHRydWU7Ci0gICAgICAgIGJyZWFrOwotCi0g
ICAgY2FzZSBDU1NQcm9wZXJ0eVZpc2liaWxpdHk6ICAgICAgICAgICAvLyB2aXNpYmxlIHwgaGlk
ZGVuIHwgY29sbGFwc2UgfCBpbmhlcml0Ci0gICAgICAgIGlmIChpZCA9PSBDU1NWYWx1ZVZpc2li
bGUgfHwgaWQgPT0gQ1NTVmFsdWVIaWRkZW4gfHwgaWQgPT0gQ1NTVmFsdWVDb2xsYXBzZSkKLSAg
ICAgICAgICAgIHZhbGlkUHJpbWl0aXZlID0gdHJ1ZTsKLSAgICAgICAgYnJlYWs7Ci0KICAgICBj
YXNlIENTU1Byb3BlcnR5T3ZlcmZsb3c6IHsKICAgICAgICAgU2hvcnRoYW5kU2NvcGUgc2NvcGUo
dGhpcywgcHJvcElkKTsKICAgICAgICAgaWYgKG51bSAhPSAxIHx8ICFwYXJzZVZhbHVlKENTU1By
b3BlcnR5T3ZlcmZsb3dYLCBpbXBvcnRhbnQpKQpAQCAtMTA1Nyw1OSArMTIzMyw2IEBAIGJvb2wg
Q1NTUGFyc2VyOjpwYXJzZVZhbHVlKGludCBwcm9wSWQsIGJvb2wgaW1wb3J0YW50KQogICAgICAg
ICBhZGRQcm9wZXJ0eShDU1NQcm9wZXJ0eU92ZXJmbG93WSwgdmFsdWUsIGltcG9ydGFudCk7CiAg
ICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KLSAgICBjYXNlIENTU1Byb3BlcnR5T3ZlcmZsb3dY
OgotICAgIGNhc2UgQ1NTUHJvcGVydHlPdmVyZmxvd1k6ICAgICAgICAgICAvLyB2aXNpYmxlIHwg
aGlkZGVuIHwgc2Nyb2xsIHwgYXV0byB8IG1hcnF1ZWUgfCBvdmVybGF5IHwgaW5oZXJpdAotICAg
ICAgICBpZiAoaWQgPT0gQ1NTVmFsdWVWaXNpYmxlIHx8IGlkID09IENTU1ZhbHVlSGlkZGVuIHx8
IGlkID09IENTU1ZhbHVlU2Nyb2xsIHx8IGlkID09IENTU1ZhbHVlQXV0byB8fAotICAgICAgICAg
ICAgaWQgPT0gQ1NTVmFsdWVPdmVybGF5IHx8IGlkID09IENTU1ZhbHVlV2Via2l0TWFycXVlZSkK
LSAgICAgICAgICAgIHZhbGlkUHJpbWl0aXZlID0gdHJ1ZTsKLSAgICAgICAgYnJlYWs7Ci0KLSAg
ICBjYXNlIENTU1Byb3BlcnR5TGlzdFN0eWxlUG9zaXRpb246ICAvLyBpbnNpZGUgfCBvdXRzaWRl
IHwgaW5oZXJpdAotICAgICAgICBpZiAoaWQgPT0gQ1NTVmFsdWVJbnNpZGUgfHwgaWQgPT0gQ1NT
VmFsdWVPdXRzaWRlKQotICAgICAgICAgICAgdmFsaWRQcmltaXRpdmUgPSB0cnVlOwotICAgICAg
ICBicmVhazsKLQotICAgIGNhc2UgQ1NTUHJvcGVydHlMaXN0U3R5bGVUeXBlOgotICAgICAgICAv
LyBTZWUgc2VjdGlvbiBDU1NfUFJPUF9MSVNUX1NUWUxFX1RZUEUgb2YgZmlsZSBDU1NWYWx1ZUtl
eXdvcmRzLmluCi0gICAgICAgIC8vIGZvciB0aGUgbGlzdCBvZiBzdXBwb3J0ZWQgbGlzdC1zdHls
ZS10eXBlcy4KLSAgICAgICAgaWYgKChpZCA+PSBDU1NWYWx1ZURpc2MgJiYgaWQgPD0gQ1NTVmFs
dWVLYXRha2FuYUlyb2hhKSB8fCBpZCA9PSBDU1NWYWx1ZU5vbmUpCi0gICAgICAgICAgICB2YWxp
ZFByaW1pdGl2ZSA9IHRydWU7Ci0gICAgICAgIGJyZWFrOwotCi0gICAgY2FzZSBDU1NQcm9wZXJ0
eURpc3BsYXk6Ci0gICAgICAgIC8vIGlubGluZSB8IGJsb2NrIHwgbGlzdC1pdGVtIHwgcnVuLWlu
IHwgaW5saW5lLWJsb2NrIHwgdGFibGUgfAotICAgICAgICAvLyBpbmxpbmUtdGFibGUgfCB0YWJs
ZS1yb3ctZ3JvdXAgfCB0YWJsZS1oZWFkZXItZ3JvdXAgfCB0YWJsZS1mb290ZXItZ3JvdXAgfCB0
YWJsZS1yb3cgfAotICAgICAgICAvLyB0YWJsZS1jb2x1bW4tZ3JvdXAgfCB0YWJsZS1jb2x1bW4g
fCB0YWJsZS1jZWxsIHwgdGFibGUtY2FwdGlvbiB8IC13ZWJraXQtYm94IHwgLXdlYmtpdC1pbmxp
bmUtYm94IHwgbm9uZSB8IGluaGVyaXQKLSAgICAgICAgLy8gLXdlYmtpdC1mbGV4Ym94IHwgLXdl
YmtpdC1pbmxpbmUtZmxleGJveCB8IC13ZWJraXQtZ3JpZCB8IC13ZWJraXQtaW5saW5lLWdyaWQK
LSAgICAgICAgaWYgKChpZCA+PSBDU1NWYWx1ZUlubGluZSAmJiBpZCA8PSBDU1NWYWx1ZVdlYmtp
dElubGluZUZsZXhib3gpIHx8IGlkID09IENTU1ZhbHVlTm9uZSkKLSAgICAgICAgICAgIHZhbGlk
UHJpbWl0aXZlID0gdHJ1ZTsKLSNpZiBFTkFCTEUoQ1NTX0dSSURfTEFZT1VUKQotICAgICAgICBp
ZiAoaWQgPT0gQ1NTVmFsdWVXZWJraXRHcmlkIHx8IGlkID09IENTU1ZhbHVlV2Via2l0SW5saW5l
R3JpZCkKLSAgICAgICAgICAgIHZhbGlkUHJpbWl0aXZlID0gdHJ1ZTsKLSNlbmRpZgotICAgICAg
ICBicmVhazsKLQotICAgIGNhc2UgQ1NTUHJvcGVydHlEaXJlY3Rpb246ICAgICAgICAgICAgLy8g
bHRyIHwgcnRsIHwgaW5oZXJpdAotICAgICAgICBpZiAoaWQgPT0gQ1NTVmFsdWVMdHIgfHwgaWQg
PT0gQ1NTVmFsdWVSdGwpCi0gICAgICAgICAgICB2YWxpZFByaW1pdGl2ZSA9IHRydWU7Ci0gICAg
ICAgIGJyZWFrOwotCi0gICAgY2FzZSBDU1NQcm9wZXJ0eVRleHRUcmFuc2Zvcm06ICAgICAgIC8v
IGNhcGl0YWxpemUgfCB1cHBlcmNhc2UgfCBsb3dlcmNhc2UgfCBub25lIHwgaW5oZXJpdAotICAg
ICAgICBpZiAoKGlkID49IENTU1ZhbHVlQ2FwaXRhbGl6ZSAmJiBpZCA8PSBDU1NWYWx1ZUxvd2Vy
Y2FzZSkgfHwgaWQgPT0gQ1NTVmFsdWVOb25lKQotICAgICAgICAgICAgdmFsaWRQcmltaXRpdmUg
PSB0cnVlOwotICAgICAgICBicmVhazsKLQotICAgIGNhc2UgQ1NTUHJvcGVydHlGbG9hdDogICAg
ICAgICAgICAgICAgLy8gbGVmdCB8IHJpZ2h0IHwgbm9uZSB8IHBvc2l0aW9uZWQgfCBjZW50ZXIg
KGZvciBidWdneSBDU1MsIG1hcHMgdG8gbm9uZSkKLSAgICAgICAgaWYgKGlkID09IENTU1ZhbHVl
TGVmdCB8fCBpZCA9PSBDU1NWYWx1ZVJpZ2h0Ci0gICAgICAgICAgICB8fCBpZCA9PSBDU1NWYWx1
ZU5vbmUgfHwgaWQgPT0gQ1NTVmFsdWVDZW50ZXIgfHwgaWQgPT0gQ1NTVmFsdWVXZWJraXRQb3Np
dGlvbmVkKQotICAgICAgICAgICAgdmFsaWRQcmltaXRpdmUgPSB0cnVlOwotICAgICAgICBicmVh
azsKLQotICAgIGNhc2UgQ1NTUHJvcGVydHlDbGVhcjogICAgICAgICAgICAgICAgLy8gbm9uZSB8
IGxlZnQgfCByaWdodCB8IGJvdGggfCBpbmhlcml0Ci0gICAgICAgIGlmIChpZCA9PSBDU1NWYWx1
ZU5vbmUgfHwgaWQgPT0gQ1NTVmFsdWVMZWZ0Ci0gICAgICAgICAgICB8fCBpZCA9PSBDU1NWYWx1
ZVJpZ2h0IHx8IGlkID09IENTU1ZhbHVlQm90aCkKLSAgICAgICAgICAgIHZhbGlkUHJpbWl0aXZl
ID0gdHJ1ZTsKLSAgICAgICAgYnJlYWs7CiAKICAgICBjYXNlIENTU1Byb3BlcnR5VGV4dEFsaWdu
OgogICAgICAgICAvLyBsZWZ0IHwgcmlnaHQgfCBjZW50ZXIgfCBqdXN0aWZ5IHwgd2Via2l0X2xl
ZnQgfCB3ZWJraXRfcmlnaHQgfCB3ZWJraXRfY2VudGVyIHwgd2Via2l0X21hdGNoX3BhcmVudCB8
CkBAIC0xMTE5LDI0ICsxMjQyLDYgQEAgYm9vbCBDU1NQYXJzZXI6OnBhcnNlVmFsdWUoaW50IHBy
b3BJZCwgYm9vbCBpbXBvcnRhbnQpCiAgICAgICAgICAgICB2YWxpZFByaW1pdGl2ZSA9IHRydWU7
CiAgICAgICAgIGJyZWFrOwogCi0gICAgY2FzZSBDU1NQcm9wZXJ0eU91dGxpbmVTdHlsZTogICAg
ICAgIC8vICg8Ym9yZGVyLXN0eWxlPiBleGNlcHQgaGlkZGVuKSB8IGF1dG8gfCBpbmhlcml0Ci0g
ICAgICAgIGlmIChpZCA9PSBDU1NWYWx1ZUF1dG8gfHwgaWQgPT0gQ1NTVmFsdWVOb25lIHx8IChp
ZCA+PSBDU1NWYWx1ZUluc2V0ICYmIGlkIDw9IENTU1ZhbHVlRG91YmxlKSkKLSAgICAgICAgICAg
IHZhbGlkUHJpbWl0aXZlID0gdHJ1ZTsKLSAgICAgICAgYnJlYWs7Ci0KLSAgICBjYXNlIENTU1By
b3BlcnR5Qm9yZGVyVG9wU3R5bGU6ICAgICAvLy8vIDxib3JkZXItc3R5bGU+IHwgaW5oZXJpdAot
ICAgIGNhc2UgQ1NTUHJvcGVydHlCb3JkZXJSaWdodFN0eWxlOiAgIC8vICAgRGVmaW5lZCBhczog
ICAgbm9uZSB8IGhpZGRlbiB8IGRvdHRlZCB8IGRhc2hlZCB8Ci0gICAgY2FzZSBDU1NQcm9wZXJ0
eUJvcmRlckJvdHRvbVN0eWxlOiAgLy8gICBzb2xpZCB8IGRvdWJsZSB8IGdyb292ZSB8IHJpZGdl
IHwgaW5zZXQgfCBvdXRzZXQKLSAgICBjYXNlIENTU1Byb3BlcnR5Qm9yZGVyTGVmdFN0eWxlOgot
ICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRCb3JkZXJTdGFydFN0eWxlOgotICAgIGNhc2UgQ1NT
UHJvcGVydHlXZWJraXRCb3JkZXJFbmRTdHlsZToKLSAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0
Qm9yZGVyQmVmb3JlU3R5bGU6Ci0gICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdEJvcmRlckFmdGVy
U3R5bGU6Ci0gICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdENvbHVtblJ1bGVTdHlsZToKLSAgICAg
ICAgaWYgKGlkID49IENTU1ZhbHVlTm9uZSAmJiBpZCA8PSBDU1NWYWx1ZURvdWJsZSkKLSAgICAg
ICAgICAgIHZhbGlkUHJpbWl0aXZlID0gdHJ1ZTsKLSAgICAgICAgYnJlYWs7Ci0KICAgICBjYXNl
IENTU1Byb3BlcnR5Rm9udFdlaWdodDogIC8vIG5vcm1hbCB8IGJvbGQgfCBib2xkZXIgfCBsaWdo
dGVyIHwgMTAwIHwgMjAwIHwgMzAwIHwgNDAwIHwgNTAwIHwgNjAwIHwgNzAwIHwgODAwIHwgOTAw
IHwgaW5oZXJpdAogICAgICAgICByZXR1cm4gcGFyc2VGb250V2VpZ2h0KGltcG9ydGFudCk7CiAK
QEAgLTEzNTEsMjEgKzE0NTYsNiBAQCBib29sIENTU1BhcnNlcjo6cGFyc2VWYWx1ZShpbnQgcHJv
cElkLCBib29sIGltcG9ydGFudCkKICAgICAgICAgICAgIHZhbGlkUHJpbWl0aXZlID0gdmFsaWRV
bml0KHZhbHVlLCBGTGVuZ3RoLCBtX3N0cmljdCk7CiAgICAgICAgIGJyZWFrOwogCi0gICAgY2Fz
ZSBDU1NQcm9wZXJ0eVdvcmRCcmVhazogICAgICAgICAgLy8gbm9ybWFsIHwgYnJlYWstYWxsIHwg
YnJlYWstd29yZCAodGhpcyBpcyBhIGN1c3RvbSBleHRlbnNpb24pCi0gICAgICAgIGlmIChpZCA9
PSBDU1NWYWx1ZU5vcm1hbCB8fCBpZCA9PSBDU1NWYWx1ZUJyZWFrQWxsIHx8IGlkID09IENTU1Zh
bHVlQnJlYWtXb3JkKQotICAgICAgICAgICAgdmFsaWRQcmltaXRpdmUgPSB0cnVlOwotICAgICAg
ICBicmVhazsKLQotICAgIGNhc2UgQ1NTUHJvcGVydHlXb3JkV3JhcDogICAgICAgICAgIC8vIG5v
cm1hbCB8IGJyZWFrLXdvcmQKLSAgICAgICAgaWYgKGlkID09IENTU1ZhbHVlTm9ybWFsIHx8IGlk
ID09IENTU1ZhbHVlQnJlYWtXb3JkKQotICAgICAgICAgICAgdmFsaWRQcmltaXRpdmUgPSB0cnVl
OwotICAgICAgICBicmVhazsKLSAgICBjYXNlIENTU1Byb3BlcnR5U3BlYWs6ICAgICAgICAgICAv
LyBub25lIHwgbm9ybWFsIHwgc3BlbGwtb3V0IHwgZGlnaXRzIHwgbGl0ZXJhbC1wdW5jdHVhdGlv
biB8IG5vLXB1bmN0dWF0aW9uIHwgaW5oZXJpdAotICAgICAgICBpZiAoaWQgPT0gQ1NTVmFsdWVO
b25lIHx8IGlkID09IENTU1ZhbHVlTm9ybWFsIHx8IGlkID09IENTU1ZhbHVlU3BlbGxPdXQgfHwg
aWQgPT0gQ1NTVmFsdWVEaWdpdHMKLSAgICAgICAgICAgIHx8IGlkID09IENTU1ZhbHVlTGl0ZXJh
bFB1bmN0dWF0aW9uIHx8IGlkID09IENTU1ZhbHVlTm9QdW5jdHVhdGlvbikKLSAgICAgICAgICAg
IHZhbGlkUHJpbWl0aXZlID0gdHJ1ZTsKLSAgICAgICAgYnJlYWs7Ci0KICAgICBjYXNlIENTU1By
b3BlcnR5VGV4dEluZGVudDogICAgICAgICAgLy8gPGxlbmd0aD4gfCA8cGVyY2VudGFnZT4gfCBp
bmhlcml0CiAgICAgICAgIHZhbGlkUHJpbWl0aXZlID0gKCFpZCAmJiB2YWxpZFVuaXQodmFsdWUs
IEZMZW5ndGggfCBGUGVyY2VudCwgbV9zdHJpY3QpKTsKICAgICAgICAgYnJlYWs7CkBAIC0xNDA4
LDExICsxNDk4LDYgQEAgYm9vbCBDU1NQYXJzZXI6OnBhcnNlVmFsdWUoaW50IHByb3BJZCwgYm9v
bCBpbXBvcnRhbnQpCiAgICAgICAgICAgICB2YWxpZFByaW1pdGl2ZSA9ICh2YWxpZFVuaXQodmFs
dWUsIEZMZW5ndGggfCBGUGVyY2VudCB8IEZOb25OZWcsIG1fc3RyaWN0KSk7CiAgICAgICAgIGJy
ZWFrOwogCi0gICAgY2FzZSBDU1NQcm9wZXJ0eUZvbnRTdHlsZTogICAgICAgICAgIC8vIG5vcm1h
bCB8IGl0YWxpYyB8IG9ibGlxdWUgfCBpbmhlcml0Ci0gICAgICAgIGlmIChpZCA9PSBDU1NWYWx1
ZU5vcm1hbCB8fCBpZCA9PSBDU1NWYWx1ZUl0YWxpYyB8fCBpZCA9PSBDU1NWYWx1ZU9ibGlxdWUp
Ci0gICAgICAgICAgICB2YWxpZFByaW1pdGl2ZSA9IHRydWU7Ci0gICAgICAgIGJyZWFrOwotCiAg
ICAgY2FzZSBDU1NQcm9wZXJ0eUZvbnRWYXJpYW50OiAgICAgICAgIC8vIG5vcm1hbCB8IHNtYWxs
LWNhcHMgfCBpbmhlcml0CiAgICAgICAgIHJldHVybiBwYXJzZUZvbnRWYXJpYW50KGltcG9ydGFu
dCk7CiAKQEAgLTE1MjgsMTEgKzE2MTMsNiBAQCBib29sIENTU1BhcnNlcjo6cGFyc2VWYWx1ZShp
bnQgcHJvcElkLCBib29sIGltcG9ydGFudCkKICAgICAgICAgICAgIHZhbGlkUHJpbWl0aXZlID0g
KCFpZCAmJiB2YWxpZFVuaXQodmFsdWUsIEZOdW1iZXIgfCBGUGVyY2VudCB8IEZOb25OZWcsIHRy
dWUpKTsKICAgICAgICAgYnJlYWs7CiAKLSAgICBjYXNlIENTU1Byb3BlcnR5VGFibGVMYXlvdXQ6
ICAgICAgICAgLy8gYXV0byB8IGZpeGVkIHwgaW5oZXJpdAotICAgICAgICBpZiAoaWQgPT0gQ1NT
VmFsdWVBdXRvIHx8IGlkID09IENTU1ZhbHVlRml4ZWQpCi0gICAgICAgICAgICB2YWxpZFByaW1p
dGl2ZSA9IHRydWU7Ci0gICAgICAgIGJyZWFrOwotCiAgICAgY2FzZSBDU1NQcm9wZXJ0eVNyYzog
IC8vIE9ubHkgdXNlZCB3aXRoaW4gQGZvbnQtZmFjZSwgc28gY2Fubm90IHVzZSBpbmhlcml0IHwg
aW5pdGlhbCBvciBiZSAhaW1wb3J0YW50LiAgVGhpcyBpcyBhIGxpc3Qgb2YgdXJscyBvciBsb2Nh
bCByZWZlcmVuY2VzLgogICAgICAgICByZXR1cm4gcGFyc2VGb250RmFjZVNyYygpOwogCkBAIC0x
NTQwLDEwICsxNjIwLDYgQEAgYm9vbCBDU1NQYXJzZXI6OnBhcnNlVmFsdWUoaW50IHByb3BJZCwg
Ym9vbCBpbXBvcnRhbnQpCiAgICAgICAgIHJldHVybiBwYXJzZUZvbnRGYWNlVW5pY29kZVJhbmdl
KCk7CiAKICAgICAvKiBDU1MzIHByb3BlcnRpZXMgKi8KLSAgICBjYXNlIENTU1Byb3BlcnR5V2Vi
a2l0QXBwZWFyYW5jZToKLSAgICAgICAgaWYgKChpZCA+PSBDU1NWYWx1ZUNoZWNrYm94ICYmIGlk
IDw9IENTU1ZhbHVlVGV4dGFyZWEpIHx8IGlkID09IENTU1ZhbHVlTm9uZSkKLSAgICAgICAgICAg
IHZhbGlkUHJpbWl0aXZlID0gdHJ1ZTsKLSAgICAgICAgYnJlYWs7CiAKICAgICBjYXNlIENTU1By
b3BlcnR5Qm9yZGVySW1hZ2U6IHsKICAgICAgICAgUmVmUHRyPENTU1ZhbHVlPiByZXN1bHQ7CkBA
IC0xNjUxLDI5ICsxNzI3LDYgQEAgYm9vbCBDU1NQYXJzZXI6OnBhcnNlVmFsdWUoaW50IHByb3BJ
ZCwgYm9vbCBpbXBvcnRhbnQpCiAgICAgY2FzZSBDU1NQcm9wZXJ0eU9wYWNpdHk6CiAgICAgICAg
IHZhbGlkUHJpbWl0aXZlID0gdmFsaWRVbml0KHZhbHVlLCBGTnVtYmVyLCBtX3N0cmljdCk7CiAg
ICAgICAgIGJyZWFrOwotICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRCb3hBbGlnbjoKLSAgICAg
ICAgaWYgKGlkID09IENTU1ZhbHVlU3RyZXRjaCB8fCBpZCA9PSBDU1NWYWx1ZVN0YXJ0IHx8IGlk
ID09IENTU1ZhbHVlRW5kIHx8Ci0gICAgICAgICAgICBpZCA9PSBDU1NWYWx1ZUNlbnRlciB8fCBp
ZCA9PSBDU1NWYWx1ZUJhc2VsaW5lKQotICAgICAgICAgICAgdmFsaWRQcmltaXRpdmUgPSB0cnVl
OwotICAgICAgICBicmVhazsKLSAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0Qm94RGlyZWN0aW9u
OgotICAgICAgICBpZiAoaWQgPT0gQ1NTVmFsdWVOb3JtYWwgfHwgaWQgPT0gQ1NTVmFsdWVSZXZl
cnNlKQotICAgICAgICAgICAgdmFsaWRQcmltaXRpdmUgPSB0cnVlOwotICAgICAgICBicmVhazsK
LSAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0Qm94TGluZXM6Ci0gICAgICAgIGlmIChpZCA9PSBD
U1NWYWx1ZVNpbmdsZSB8fCBpZCA9PSBDU1NWYWx1ZU11bHRpcGxlKQotICAgICAgICAgICAgdmFs
aWRQcmltaXRpdmUgPSB0cnVlOwotICAgICAgICBicmVhazsKLSAgICBjYXNlIENTU1Byb3BlcnR5
V2Via2l0Qm94T3JpZW50OgotICAgICAgICBpZiAoaWQgPT0gQ1NTVmFsdWVIb3Jpem9udGFsIHx8
IGlkID09IENTU1ZhbHVlVmVydGljYWwgfHwKLSAgICAgICAgICAgIGlkID09IENTU1ZhbHVlSW5s
aW5lQXhpcyB8fCBpZCA9PSBDU1NWYWx1ZUJsb2NrQXhpcykKLSAgICAgICAgICAgIHZhbGlkUHJp
bWl0aXZlID0gdHJ1ZTsKLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtp
dEJveFBhY2s6Ci0gICAgICAgIGlmIChpZCA9PSBDU1NWYWx1ZVN0YXJ0IHx8IGlkID09IENTU1Zh
bHVlRW5kIHx8Ci0gICAgICAgICAgICBpZCA9PSBDU1NWYWx1ZUNlbnRlciB8fCBpZCA9PSBDU1NW
YWx1ZUp1c3RpZnkpCi0gICAgICAgICAgICB2YWxpZFByaW1pdGl2ZSA9IHRydWU7Ci0gICAgICAg
IGJyZWFrOwogICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRCb3hGbGV4OgogICAgICAgICB2YWxp
ZFByaW1pdGl2ZSA9IHZhbGlkVW5pdCh2YWx1ZSwgRk51bWJlciwgbV9zdHJpY3QpOwogICAgICAg
ICBicmVhazsKQEAgLTE2ODEsMTIgKzE3MzQsNiBAQCBib29sIENTU1BhcnNlcjo6cGFyc2VWYWx1
ZShpbnQgcHJvcElkLCBib29sIGltcG9ydGFudCkKICAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0
Qm94T3JkaW5hbEdyb3VwOgogICAgICAgICB2YWxpZFByaW1pdGl2ZSA9IHZhbGlkVW5pdCh2YWx1
ZSwgRkludGVnZXIgfCBGTm9uTmVnLCB0cnVlKTsKICAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBD
U1NQcm9wZXJ0eUJveFNpemluZzoKLSAgICAgICAgdmFsaWRQcmltaXRpdmUgPSBpZCA9PSBDU1NW
YWx1ZUJvcmRlckJveCB8fCBpZCA9PSBDU1NWYWx1ZUNvbnRlbnRCb3g7Ci0gICAgICAgIGJyZWFr
OwotICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRDb2xvckNvcnJlY3Rpb246Ci0gICAgICAgIHZh
bGlkUHJpbWl0aXZlID0gaWQgPT0gQ1NTVmFsdWVTcmdiIHx8IGlkID09IENTU1ZhbHVlRGVmYXVs
dDsKLSAgICAgICAgYnJlYWs7CiAjaWYgRU5BQkxFKENTU19GSUxURVJTKQogICAgIGNhc2UgQ1NT
UHJvcGVydHlXZWJraXRGaWx0ZXI6CiAgICAgICAgIGlmIChpZCA9PSBDU1NWYWx1ZU5vbmUpCkBA
IC0xNzA5LDE4ICsxNzU2LDYgQEAgYm9vbCBDU1NQYXJzZXI6OnBhcnNlVmFsdWUoaW50IHByb3BJ
ZCwgYm9vbCBpbXBvcnRhbnQpCiAgICAgICAgICAgICBtX3ZhbHVlTGlzdC0+bmV4dCgpOwogICAg
ICAgICB9CiAgICAgICAgIGJyZWFrOwotICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRGbGV4UGFj
azoKLSAgICAgICAgdmFsaWRQcmltaXRpdmUgPSBpZCA9PSBDU1NWYWx1ZVN0YXJ0IHx8IGlkID09
IENTU1ZhbHVlRW5kIHx8IGlkID09IENTU1ZhbHVlQ2VudGVyIHx8IGlkID09IENTU1ZhbHVlSnVz
dGlmeSB8fCBpZCA9PSBDU1NWYWx1ZURpc3RyaWJ1dGU7Ci0gICAgICAgIGJyZWFrOwotICAgIGNh
c2UgQ1NTUHJvcGVydHlXZWJraXRGbGV4QWxpZ246Ci0gICAgICAgIHZhbGlkUHJpbWl0aXZlID0g
aWQgPT0gQ1NTVmFsdWVTdGFydCB8fCBpZCA9PSBDU1NWYWx1ZUVuZCB8fCBpZCA9PSBDU1NWYWx1
ZUNlbnRlciB8fCBpZCA9PSBDU1NWYWx1ZUJhc2VsaW5lIHx8IGlkID09IENTU1ZhbHVlU3RyZXRj
aDsKLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdEZsZXhJdGVtQWxp
Z246Ci0gICAgICAgIHZhbGlkUHJpbWl0aXZlID0gaWQgPT0gQ1NTVmFsdWVBdXRvIHx8IGlkID09
IENTU1ZhbHVlU3RhcnQgfHwgaWQgPT0gQ1NTVmFsdWVFbmQgfHwgaWQgPT0gQ1NTVmFsdWVDZW50
ZXIgfHwgaWQgPT0gQ1NTVmFsdWVCYXNlbGluZSB8fCBpZCA9PSBDU1NWYWx1ZVN0cmV0Y2g7Ci0g
ICAgICAgIGJyZWFrOwotICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRGbGV4RGlyZWN0aW9uOgot
ICAgICAgICB2YWxpZFByaW1pdGl2ZSA9IGlkID09IENTU1ZhbHVlUm93IHx8IGlkID09IENTU1Zh
bHVlUm93UmV2ZXJzZSB8fCBpZCA9PSBDU1NWYWx1ZUNvbHVtbiB8fCBpZCA9PSBDU1NWYWx1ZUNv
bHVtblJldmVyc2U7Ci0gICAgICAgIGJyZWFrOwogICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRG
bGV4V3JhcDoKICAgICAgICAgdmFsaWRQcmltaXRpdmUgPSBpZCA9PSBDU1NWYWx1ZU5vbmUgfHwg
aWQgPT0gQ1NTVmFsdWVXcmFwIHx8IGlkID09IENTU1ZhbHVlV3JhcFJldmVyc2U7CiAgICAgICAg
IGJyZWFrOwpAQCAtMTczMCwyMiArMTc2NSwxMiBAQCBib29sIENTU1BhcnNlcjo6cGFyc2VWYWx1
ZShpbnQgcHJvcElkLCBib29sIGltcG9ydGFudCkKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIENTU1Byb3BlcnR5V2Via2l0TWFycXVlZVN0eWxlLCBDU1NQcm9wZXJ0eVdlYmtp
dE1hcnF1ZWVTcGVlZCB9OwogICAgICAgICByZXR1cm4gcGFyc2VTaG9ydGhhbmQocHJvcElkLCBw
cm9wZXJ0aWVzLCA1LCBpbXBvcnRhbnQpOwogICAgIH0KLSAgICBjYXNlIENTU1Byb3BlcnR5V2Vi
a2l0TWFycXVlZURpcmVjdGlvbjoKLSAgICAgICAgaWYgKGlkID09IENTU1ZhbHVlRm9yd2FyZHMg
fHwgaWQgPT0gQ1NTVmFsdWVCYWNrd2FyZHMgfHwgaWQgPT0gQ1NTVmFsdWVBaGVhZCB8fAotICAg
ICAgICAgICAgaWQgPT0gQ1NTVmFsdWVSZXZlcnNlIHx8IGlkID09IENTU1ZhbHVlTGVmdCB8fCBp
ZCA9PSBDU1NWYWx1ZVJpZ2h0IHx8IGlkID09IENTU1ZhbHVlRG93biB8fAotICAgICAgICAgICAg
aWQgPT0gQ1NTVmFsdWVVcCB8fCBpZCA9PSBDU1NWYWx1ZUF1dG8pCi0gICAgICAgICAgICB2YWxp
ZFByaW1pdGl2ZSA9IHRydWU7Ci0gICAgICAgIGJyZWFrOwogICAgIGNhc2UgQ1NTUHJvcGVydHlX
ZWJraXRNYXJxdWVlSW5jcmVtZW50OgogICAgICAgICBpZiAoaWQgPT0gQ1NTVmFsdWVTbWFsbCB8
fCBpZCA9PSBDU1NWYWx1ZUxhcmdlIHx8IGlkID09IENTU1ZhbHVlTWVkaXVtKQogICAgICAgICAg
ICAgdmFsaWRQcmltaXRpdmUgPSB0cnVlOwogICAgICAgICBlbHNlCiAgICAgICAgICAgICB2YWxp
ZFByaW1pdGl2ZSA9IHZhbGlkVW5pdCh2YWx1ZSwgRkxlbmd0aCB8IEZQZXJjZW50LCBtX3N0cmlj
dCk7CiAgICAgICAgIGJyZWFrOwotICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRNYXJxdWVlU3R5
bGU6Ci0gICAgICAgIGlmIChpZCA9PSBDU1NWYWx1ZU5vbmUgfHwgaWQgPT0gQ1NTVmFsdWVTbGlk
ZSB8fCBpZCA9PSBDU1NWYWx1ZVNjcm9sbCB8fCBpZCA9PSBDU1NWYWx1ZUFsdGVybmF0ZSkKLSAg
ICAgICAgICAgIHZhbGlkUHJpbWl0aXZlID0gdHJ1ZTsKLSAgICAgICAgYnJlYWs7CiAgICAgY2Fz
ZSBDU1NQcm9wZXJ0eVdlYmtpdE1hcnF1ZWVSZXBldGl0aW9uOgogICAgICAgICBpZiAoaWQgPT0g
Q1NTVmFsdWVJbmZpbml0ZSkKICAgICAgICAgICAgIHZhbGlkUHJpbWl0aXZlID0gdHJ1ZTsKQEAg
LTE3NzAsMjMgKzE3OTUsNiBAQCBib29sIENTU1BhcnNlcjo6cGFyc2VWYWx1ZShpbnQgcHJvcElk
LCBib29sIGltcG9ydGFudCkKICAgICAgICAgaWYgKGNzc1JlZ2lvbnNFbmFibGVkKCkgJiYgKGlk
ID09IENTU1ZhbHVlQXV0byB8fCBpZCA9PSBDU1NWYWx1ZUJyZWFrKSkKICAgICAgICAgICAgIHZh
bGlkUHJpbWl0aXZlID0gdHJ1ZTsKICAgICAgICAgYnJlYWs7Ci0KLSAgICBjYXNlIENTU1Byb3Bl
cnR5V2Via2l0VXNlckRyYWc6IC8vIGF1dG8gfCBub25lIHwgZWxlbWVudAotICAgICAgICBpZiAo
aWQgPT0gQ1NTVmFsdWVBdXRvIHx8IGlkID09IENTU1ZhbHVlTm9uZSB8fCBpZCA9PSBDU1NWYWx1
ZUVsZW1lbnQpCi0gICAgICAgICAgICB2YWxpZFByaW1pdGl2ZSA9IHRydWU7Ci0gICAgICAgIGJy
ZWFrOwotICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRVc2VyTW9kaWZ5OiAvLyByZWFkLW9ubHkg
fCByZWFkLXdyaXRlCi0gICAgICAgIGlmIChpZCA9PSBDU1NWYWx1ZVJlYWRPbmx5IHx8IGlkID09
IENTU1ZhbHVlUmVhZFdyaXRlIHx8IGlkID09IENTU1ZhbHVlUmVhZFdyaXRlUGxhaW50ZXh0T25s
eSkKLSAgICAgICAgICAgIHZhbGlkUHJpbWl0aXZlID0gdHJ1ZTsKLSAgICAgICAgYnJlYWs7Ci0g
ICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdFVzZXJTZWxlY3Q6IC8vIGF1dG8gfCBub25lIHwgdGV4
dAotICAgICAgICBpZiAoaWQgPT0gQ1NTVmFsdWVBdXRvIHx8IGlkID09IENTU1ZhbHVlTm9uZSB8
fCBpZCA9PSBDU1NWYWx1ZVRleHQpCi0gICAgICAgICAgICB2YWxpZFByaW1pdGl2ZSA9IHRydWU7
Ci0gICAgICAgIGJyZWFrOwotICAgIGNhc2UgQ1NTUHJvcGVydHlUZXh0T3ZlcmZsb3c6IC8vIGNs
aXAgfCBlbGxpcHNpcwotICAgICAgICBpZiAoaWQgPT0gQ1NTVmFsdWVDbGlwIHx8IGlkID09IENT
U1ZhbHVlRWxsaXBzaXMpCi0gICAgICAgICAgICB2YWxpZFByaW1pdGl2ZSA9IHRydWU7Ci0gICAg
ICAgIGJyZWFrOwogICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRUcmFuc2Zvcm06CiAgICAgICAg
IGlmIChpZCA9PSBDU1NWYWx1ZU5vbmUpCiAgICAgICAgICAgICB2YWxpZFByaW1pdGl2ZSA9IHRy
dWU7CkBAIC0xODE3LDE4ICsxODI1LDYgQEAgYm9vbCBDU1NQYXJzZXI6OnBhcnNlVmFsdWUoaW50
IHByb3BJZCwgYm9vbCBpbXBvcnRhbnQpCiAgICAgICAgIH0KICAgICAgICAgcmV0dXJuIGZhbHNl
OwogICAgIH0KLSAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0VHJhbnNmb3JtU3R5bGU6Ci0gICAg
ICAgIGlmICh2YWx1ZS0+aWQgPT0gQ1NTVmFsdWVGbGF0IHx8IHZhbHVlLT5pZCA9PSBDU1NWYWx1
ZVByZXNlcnZlM2QpCi0gICAgICAgICAgICB2YWxpZFByaW1pdGl2ZSA9IHRydWU7Ci0gICAgICAg
IGJyZWFrOwotICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRCYWNrZmFjZVZpc2liaWxpdHk6Ci0g
ICAgICAgIGlmICh2YWx1ZS0+aWQgPT0gQ1NTVmFsdWVWaXNpYmxlIHx8IHZhbHVlLT5pZCA9PSBD
U1NWYWx1ZUhpZGRlbikKLSAgICAgICAgICAgIHZhbGlkUHJpbWl0aXZlID0gdHJ1ZTsKLSAgICAg
ICAgYnJlYWs7Ci0gICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdFByaW50Q29sb3JBZGp1c3Q6Ci0g
ICAgICAgIGlmICh2YWx1ZS0+aWQgPT0gQ1NTVmFsdWVFeGFjdCB8fCB2YWx1ZS0+aWQgPT0gQ1NT
VmFsdWVFY29ub215KQotICAgICAgICAgICAgdmFsaWRQcmltaXRpdmUgPSB0cnVlOwotICAgICAg
ICBicmVhazsKICAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0UGVyc3BlY3RpdmU6CiAgICAgICAg
IGlmIChpZCA9PSBDU1NWYWx1ZU5vbmUpCiAgICAgICAgICAgICB2YWxpZFByaW1pdGl2ZSA9IHRy
dWU7CkBAIC0xOTA2LDMyICsxOTAyLDYgQEAgYm9vbCBDU1NQYXJzZXI6OnBhcnNlVmFsdWUoaW50
IHByb3BJZCwgYm9vbCBpbXBvcnRhbnQpCiAgICAgICAgIH0KICAgICAgICAgcmV0dXJuIGZhbHNl
OwogICAgIH0KLSAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0TWFyZ2luQmVmb3JlQ29sbGFwc2U6
Ci0gICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdE1hcmdpbkFmdGVyQ29sbGFwc2U6Ci0gICAgY2Fz
ZSBDU1NQcm9wZXJ0eVdlYmtpdE1hcmdpblRvcENvbGxhcHNlOgotICAgIGNhc2UgQ1NTUHJvcGVy
dHlXZWJraXRNYXJnaW5Cb3R0b21Db2xsYXBzZToKLSAgICAgICAgaWYgKGlkID09IENTU1ZhbHVl
Q29sbGFwc2UgfHwgaWQgPT0gQ1NTVmFsdWVTZXBhcmF0ZSB8fCBpZCA9PSBDU1NWYWx1ZURpc2Nh
cmQpCi0gICAgICAgICAgICB2YWxpZFByaW1pdGl2ZSA9IHRydWU7Ci0gICAgICAgIGJyZWFrOwot
ICAgIGNhc2UgQ1NTUHJvcGVydHlUZXh0TGluZVRocm91Z2hNb2RlOgotICAgIGNhc2UgQ1NTUHJv
cGVydHlUZXh0T3ZlcmxpbmVNb2RlOgotICAgIGNhc2UgQ1NTUHJvcGVydHlUZXh0VW5kZXJsaW5l
TW9kZToKLSAgICAgICAgaWYgKGlkID09IENTU1ZhbHVlQ29udGludW91cyB8fCBpZCA9PSBDU1NW
YWx1ZVNraXBXaGl0ZVNwYWNlKQotICAgICAgICAgICAgdmFsaWRQcmltaXRpdmUgPSB0cnVlOwot
ICAgICAgICBicmVhazsKLSAgICBjYXNlIENTU1Byb3BlcnR5VGV4dExpbmVUaHJvdWdoU3R5bGU6
Ci0gICAgY2FzZSBDU1NQcm9wZXJ0eVRleHRPdmVybGluZVN0eWxlOgotICAgIGNhc2UgQ1NTUHJv
cGVydHlUZXh0VW5kZXJsaW5lU3R5bGU6Ci0gICAgICAgIGlmIChpZCA9PSBDU1NWYWx1ZU5vbmUg
fHwgaWQgPT0gQ1NTVmFsdWVTb2xpZCB8fCBpZCA9PSBDU1NWYWx1ZURvdWJsZSB8fAotICAgICAg
ICAgICAgaWQgPT0gQ1NTVmFsdWVEYXNoZWQgfHwgaWQgPT0gQ1NTVmFsdWVEb3REYXNoIHx8IGlk
ID09IENTU1ZhbHVlRG90RG90RGFzaCB8fAotICAgICAgICAgICAgaWQgPT0gQ1NTVmFsdWVXYXZl
KQotICAgICAgICAgICAgdmFsaWRQcmltaXRpdmUgPSB0cnVlOwotICAgICAgICBicmVhazsKLSAg
ICBjYXNlIENTU1Byb3BlcnR5VGV4dFJlbmRlcmluZzogLy8gYXV0byB8IG9wdGltaXplU3BlZWQg
fCBvcHRpbWl6ZUxlZ2liaWxpdHkgfCBnZW9tZXRyaWNQcmVjaXNpb24KLSAgICAgICAgaWYgKGlk
ID09IENTU1ZhbHVlQXV0byB8fCBpZCA9PSBDU1NWYWx1ZU9wdGltaXplc3BlZWQgfHwgaWQgPT0g
Q1NTVmFsdWVPcHRpbWl6ZWxlZ2liaWxpdHkKLSAgICAgICAgICAgIHx8IGlkID09IENTU1ZhbHVl
R2VvbWV0cmljcHJlY2lzaW9uKQotICAgICAgICAgICAgdmFsaWRQcmltaXRpdmUgPSB0cnVlOwot
ICAgICAgICBicmVhazsKICAgICBjYXNlIENTU1Byb3BlcnR5VGV4dExpbmVUaHJvdWdoV2lkdGg6
CiAgICAgY2FzZSBDU1NQcm9wZXJ0eVRleHRPdmVybGluZVdpZHRoOgogICAgIGNhc2UgQ1NTUHJv
cGVydHlUZXh0VW5kZXJsaW5lV2lkdGg6CkBAIC0xOTQxLDEwICsxOTExLDYgQEAgYm9vbCBDU1NQ
YXJzZXI6OnBhcnNlVmFsdWUoaW50IHByb3BJZCwgYm9vbCBpbXBvcnRhbnQpCiAgICAgICAgIGVs
c2UKICAgICAgICAgICAgIHZhbGlkUHJpbWl0aXZlID0gIWlkICYmIHZhbGlkVW5pdCh2YWx1ZSwg
Rk51bWJlciB8IEZMZW5ndGggfCBGUGVyY2VudCwgbV9zdHJpY3QpOwogICAgICAgICBicmVhazsK
LSAgICBjYXNlIENTU1Byb3BlcnR5UmVzaXplOiAvLyBub25lIHwgYm90aCB8IGhvcml6b250YWwg
fCB2ZXJ0aWNhbCB8IGF1dG8KLSAgICAgICAgaWYgKGlkID09IENTU1ZhbHVlTm9uZSB8fCBpZCA9
PSBDU1NWYWx1ZUJvdGggfHwgaWQgPT0gQ1NTVmFsdWVIb3Jpem9udGFsIHx8IGlkID09IENTU1Zh
bHVlVmVydGljYWwgfHwgaWQgPT0gQ1NTVmFsdWVBdXRvKQotICAgICAgICAgICAgdmFsaWRQcmlt
aXRpdmUgPSB0cnVlOwotICAgICAgICBicmVhazsKICAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0
Q29sdW1uQ291bnQ6CiAgICAgICAgIGlmIChpZCA9PSBDU1NWYWx1ZUF1dG8pCiAgICAgICAgICAg
ICB2YWxpZFByaW1pdGl2ZSA9IHRydWU7CkBAIC0xOTczLDE3ICsxOTM5LDYgQEAgYm9vbCBDU1NQ
YXJzZXI6OnBhcnNlVmFsdWUoaW50IHByb3BJZCwgYm9vbCBpbXBvcnRhbnQpCiAgICAgICAgIGVs
c2UgLy8gQWx3YXlzIHBhcnNlIHRoaXMgcHJvcGVydHkgaW4gc3RyaWN0IG1vZGUsIHNpbmNlIGl0
IHdvdWxkIGJlIGFtYmlndW91cyBvdGhlcndpc2Ugd2hlbiB1c2VkIGluIHRoZSAnY29sdW1ucycg
c2hvcnRoYW5kIHByb3BlcnR5LgogICAgICAgICAgICAgdmFsaWRQcmltaXRpdmUgPSB2YWxpZFVu
aXQodmFsdWUsIEZMZW5ndGgsIHRydWUpOwogICAgICAgICBicmVhazsKLSAgICBjYXNlIENTU1By
b3BlcnR5UG9pbnRlckV2ZW50czoKLSAgICAgICAgLy8gbm9uZSB8IHZpc2libGVQYWludGVkIHwg
dmlzaWJsZUZpbGwgfCB2aXNpYmxlU3Ryb2tlIHwgdmlzaWJsZSB8Ci0gICAgICAgIC8vIHBhaW50
ZWQgfCBmaWxsIHwgc3Ryb2tlIHwgYXV0byB8IGFsbCB8IGluaGVyaXQKLSAgICAgICAgaWYgKGlk
ID09IENTU1ZhbHVlVmlzaWJsZSB8fCBpZCA9PSBDU1NWYWx1ZU5vbmUgfHwgaWQgPT0gQ1NTVmFs
dWVBbGwgfHwgaWQgPT0gQ1NTVmFsdWVBdXRvIHx8Ci0gICAgICAgICAgICAoaWQgPj0gQ1NTVmFs
dWVWaXNpYmxlcGFpbnRlZCAmJiBpZCA8PSBDU1NWYWx1ZVN0cm9rZSkpCi0gICAgICAgICAgICB2
YWxpZFByaW1pdGl2ZSA9IHRydWU7Ci0gICAgICAgIGJyZWFrOwotICAgIGNhc2UgQ1NTUHJvcGVy
dHlJbWFnZVJlbmRlcmluZzogLy8gYXV0byB8IG9wdGltaXplQ29udHJhc3QKLSAgICAgICAgaWYg
KGlkID09IENTU1ZhbHVlQXV0byB8fCBpZCA9PSBDU1NWYWx1ZVdlYmtpdE9wdGltaXplQ29udHJh
c3QpCi0gICAgICAgICAgICB2YWxpZFByaW1pdGl2ZSA9IHRydWU7Ci0gICAgICAgIGJyZWFrOwog
ICAgIC8vIEVuZCBvZiBDU1MzIHByb3BlcnRpZXMKIAogICAgIC8vIEFwcGxlIHNwZWNpZmljIHBy
b3BlcnRpZXMuICBUaGVzZSB3aWxsIG5ldmVyIGJlIHN0YW5kYXJkaXplZCBhbmQgYXJlIHB1cmVs
eSB0bwpAQCAtMTk5Myw0NCArMTk0OCwxNiBAQCBib29sIENTU1BhcnNlcjo6cGFyc2VWYWx1ZShp
bnQgcHJvcElkLCBib29sIGltcG9ydGFudCkKICAgICAgICAgLy8gV2hlbiBzcGVjaWZ5aW5nIGVp
dGhlciB0eXBlIG9mIHVuaXQsIHJlcXVpcmUgbm9uLW5lZ2F0aXZlIGludGVnZXJzCiAgICAgICAg
IHZhbGlkUHJpbWl0aXZlID0gKCFpZCAmJiAodmFsdWUtPnVuaXQgPT0gQ1NTUHJpbWl0aXZlVmFs
dWU6OkNTU19QRVJDRU5UQUdFIHx8IHZhbHVlLT5mVmFsdWUpICYmIHZhbGlkVW5pdCh2YWx1ZSwg
RkludGVnZXIgfCBGUGVyY2VudCB8IEZOb25OZWcsIGZhbHNlKSk7CiAgICAgICAgIGJyZWFrOwot
ICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRUZXh0U2l6ZUFkanVzdDoKLSAgICAgICAgaWYgKGlk
ID09IENTU1ZhbHVlQXV0byB8fCBpZCA9PSBDU1NWYWx1ZU5vbmUpCi0gICAgICAgICAgICB2YWxp
ZFByaW1pdGl2ZSA9IHRydWU7Ci0gICAgICAgIGJyZWFrOwotICAgIGNhc2UgQ1NTUHJvcGVydHlX
ZWJraXRSdGxPcmRlcmluZzoKLSAgICAgICAgaWYgKGlkID09IENTU1ZhbHVlTG9naWNhbCB8fCBp
ZCA9PSBDU1NWYWx1ZVZpc3VhbCkKLSAgICAgICAgICAgIHZhbGlkUHJpbWl0aXZlID0gdHJ1ZTsK
LSAgICAgICAgYnJlYWs7CiAKICAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0Rm9udFNpemVEZWx0
YTogICAgICAgICAgIC8vIDxsZW5ndGg+CiAgICAgICAgIHZhbGlkUHJpbWl0aXZlID0gdmFsaWRV
bml0KHZhbHVlLCBGTGVuZ3RoLCBtX3N0cmljdCk7CiAgICAgICAgIGJyZWFrOwogCi0gICAgY2Fz
ZSBDU1NQcm9wZXJ0eVdlYmtpdE5ic3BNb2RlOiAgICAgLy8gbm9ybWFsIHwgc3BhY2UKLSAgICAg
ICAgaWYgKGlkID09IENTU1ZhbHVlTm9ybWFsIHx8IGlkID09IENTU1ZhbHVlU3BhY2UpCi0gICAg
ICAgICAgICB2YWxpZFByaW1pdGl2ZSA9IHRydWU7Ci0gICAgICAgIGJyZWFrOwotCi0gICAgY2Fz
ZSBDU1NQcm9wZXJ0eVdlYmtpdExpbmVCcmVhazogICAvLyBub3JtYWwgfCBhZnRlci13aGl0ZS1z
cGFjZQotICAgICAgICBpZiAoaWQgPT0gQ1NTVmFsdWVOb3JtYWwgfHwgaWQgPT0gQ1NTVmFsdWVB
ZnRlcldoaXRlU3BhY2UpCi0gICAgICAgICAgICB2YWxpZFByaW1pdGl2ZSA9IHRydWU7Ci0gICAg
ICAgIGJyZWFrOwotCi0gICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdE1hdGNoTmVhcmVzdE1haWxC
bG9ja3F1b3RlQ29sb3I6ICAgLy8gbm9ybWFsIHwgbWF0Y2gKLSAgICAgICAgaWYgKGlkID09IENT
U1ZhbHVlTm9ybWFsIHx8IGlkID09IENTU1ZhbHVlTWF0Y2gpCi0gICAgICAgICAgICB2YWxpZFBy
aW1pdGl2ZSA9IHRydWU7Ci0gICAgICAgIGJyZWFrOwotCiAgICAgY2FzZSBDU1NQcm9wZXJ0eVdl
YmtpdEhpZ2hsaWdodDoKICAgICAgICAgaWYgKGlkID09IENTU1ZhbHVlTm9uZSB8fCB2YWx1ZS0+
dW5pdCA9PSBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX1NUUklORykKICAgICAgICAgICAgIHZhbGlk
UHJpbWl0aXZlID0gdHJ1ZTsKICAgICAgICAgYnJlYWs7CiAKLSAgICBjYXNlIENTU1Byb3BlcnR5
V2Via2l0SHlwaGVuczoKLSAgICAgICAgaWYgKGlkID09IENTU1ZhbHVlTm9uZSB8fCBpZCA9PSBD
U1NWYWx1ZU1hbnVhbCB8fCBpZCA9PSBDU1NWYWx1ZUF1dG8pCi0gICAgICAgICAgICB2YWxpZFBy
aW1pdGl2ZSA9IHRydWU7Ci0gICAgICAgIGJyZWFrOwotCiAgICAgY2FzZSBDU1NQcm9wZXJ0eVdl
YmtpdEh5cGhlbmF0ZUNoYXJhY3RlcjoKICAgICAgICAgaWYgKGlkID09IENTU1ZhbHVlQXV0byB8
fCB2YWx1ZS0+dW5pdCA9PSBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX1NUUklORykKICAgICAgICAg
ICAgIHZhbGlkUHJpbWl0aXZlID0gdHJ1ZTsKQEAgLTIwNTgsMzYgKzE5ODUsMTEgQEAgYm9vbCBD
U1NQYXJzZXI6OnBhcnNlVmFsdWUoaW50IHByb3BJZCwgYm9vbCBpbXBvcnRhbnQpCiAgICAgICAg
ICAgICB9CiAgICAgICAgIH0KICAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBDU1NQcm9wZXJ0eVdl
YmtpdExpbmVTbmFwOgotICAgICAgICBpZiAoaWQgPT0gQ1NTVmFsdWVOb25lIHx8IGlkID09IENT
U1ZhbHVlQmFzZWxpbmUgfHwgaWQgPT0gQ1NTVmFsdWVDb250YWluKQotICAgICAgICAgICAgdmFs
aWRQcmltaXRpdmUgPSB0cnVlOwotICAgICAgICBicmVhazsKLSAgICBjYXNlIENTU1Byb3BlcnR5
V2Via2l0TGluZUFsaWduOgotICAgICAgICBpZiAoaWQgPT0gQ1NTVmFsdWVOb25lIHx8IGlkID09
IENTU1ZhbHVlRWRnZXMpCi0gICAgICAgICAgICB2YWxpZFByaW1pdGl2ZSA9IHRydWU7Ci0gICAg
ICAgIGJyZWFrOwogICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRMb2NhbGU6CiAgICAgICAgIGlm
IChpZCA9PSBDU1NWYWx1ZUF1dG8gfHwgdmFsdWUtPnVuaXQgPT0gQ1NTUHJpbWl0aXZlVmFsdWU6
OkNTU19TVFJJTkcpCiAgICAgICAgICAgICB2YWxpZFByaW1pdGl2ZSA9IHRydWU7CiAgICAgICAg
IGJyZWFrOwogCi0gICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdEJvcmRlckZpdDoKLSAgICAgICAg
aWYgKGlkID09IENTU1ZhbHVlQm9yZGVyIHx8IGlkID09IENTU1ZhbHVlTGluZXMpCi0gICAgICAg
ICAgICB2YWxpZFByaW1pdGl2ZSA9IHRydWU7Ci0gICAgICAgIGJyZWFrOwotCi0gICAgY2FzZSBD
U1NQcm9wZXJ0eVdlYmtpdFRleHRTZWN1cml0eToKLSAgICAgICAgLy8gZGlzYyB8IGNpcmNsZSB8
IHNxdWFyZSB8IG5vbmUgfCBpbmhlcml0Ci0gICAgICAgIGlmIChpZCA9PSBDU1NWYWx1ZURpc2Mg
fHwgaWQgPT0gQ1NTVmFsdWVDaXJjbGUgfHwgaWQgPT0gQ1NTVmFsdWVTcXVhcmV8fCBpZCA9PSBD
U1NWYWx1ZU5vbmUpCi0gICAgICAgICAgICB2YWxpZFByaW1pdGl2ZSA9IHRydWU7Ci0gICAgICAg
IGJyZWFrOwotCi0gICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdEZvbnRTbW9vdGhpbmc6Ci0gICAg
ICAgIGlmIChpZCA9PSBDU1NWYWx1ZUF1dG8gfHwgaWQgPT0gQ1NTVmFsdWVOb25lCi0gICAgICAg
ICAgICB8fCBpZCA9PSBDU1NWYWx1ZUFudGlhbGlhc2VkIHx8IGlkID09IENTU1ZhbHVlU3VicGl4
ZWxBbnRpYWxpYXNlZCkKLSAgICAgICAgICAgIHZhbGlkUHJpbWl0aXZlID0gdHJ1ZTsKLSAgICAg
ICAgYnJlYWs7Ci0KICNpZiBFTkFCTEUoREFTSEJPQVJEX1NVUFBPUlQpCiAgICAgY2FzZSBDU1NQ
cm9wZXJ0eVdlYmtpdERhc2hib2FyZFJlZ2lvbjogLy8gPGRhc2hib2FyZC1yZWdpb24+IHwgPGRh
c2hib2FyZC1yZWdpb24+CiAgICAgICAgIGlmICh2YWx1ZS0+dW5pdCA9PSBDU1NQYXJzZXJWYWx1
ZTo6RnVuY3Rpb24gfHwgaWQgPT0gQ1NTVmFsdWVOb25lKQpAQCAtMjEwOSwxMyArMjAxMSw2IEBA
IGJvb2wgQ1NTUGFyc2VyOjpwYXJzZVZhbHVlKGludCBwcm9wSWQsIGJvb2wgaW1wb3J0YW50KQog
ICAgICAgICBicmVhazsKICNlbmRpZgogCi0jaWYgRU5BQkxFKE9WRVJGTE9XX1NDUk9MTElORykK
LSAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0T3ZlcmZsb3dTY3JvbGxpbmc6Ci0gICAgICAgIGlm
IChpZCA9PSBDU1NWYWx1ZUF1dG8gfHwgaWQgPT0gQ1NTVmFsdWVUb3VjaCkKLSAgICAgICAgICAg
IHZhbGlkUHJpbWl0aXZlID0gdHJ1ZTsKLSAgICAgICAgYnJlYWs7Ci0jZW5kaWYKLQogICAgICAg
ICAvKiBzaG9ydGhhbmQgcHJvcGVydGllcyAqLwogICAgIGNhc2UgQ1NTUHJvcGVydHlCYWNrZ3Jv
dW5kOiB7CiAgICAgICAgIC8vIFBvc2l0aW9uIG11c3QgY29tZSBiZWZvcmUgY29sb3IgaW4gdGhp
cyBhcnJheSBiZWNhdXNlIGEgcGxhaW4gb2xkICIwIiBpcyBhIGxlZ2FsIGNvbG9yCkBAIC0yMjg1
LDI2ICsyMTgwLDExIEBAIGJvb2wgQ1NTUGFyc2VyOjpwYXJzZVZhbHVlKGludCBwcm9wSWQsIGJv
b2wgaW1wb3J0YW50KQogICAgIGNhc2UgQ1NTUHJvcGVydHlUZXh0VW5kZXJsaW5lOgogICAgICAg
ICByZXR1cm4gZmFsc2U7CiAgICAgLy8gQ1NTIFRleHQgTGF5b3V0IE1vZHVsZSBMZXZlbCAzOiBW
ZXJ0aWNhbCB3cml0aW5nIHN1cHBvcnQKLSAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0V3JpdGlu
Z01vZGU6Ci0gICAgICAgIGlmIChpZCA+PSBDU1NWYWx1ZUhvcml6b250YWxUYiAmJiBpZCA8PSBD
U1NWYWx1ZUhvcml6b250YWxCdCkKLSAgICAgICAgICAgIHZhbGlkUHJpbWl0aXZlID0gdHJ1ZTsK
LSAgICAgICAgYnJlYWs7Ci0KLSAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0VGV4dENvbWJpbmU6
Ci0gICAgICAgIGlmIChpZCA9PSBDU1NWYWx1ZU5vbmUgfHwgaWQgPT0gQ1NTVmFsdWVIb3Jpem9u
dGFsKQotICAgICAgICAgICAgdmFsaWRQcmltaXRpdmUgPSB0cnVlOwotICAgICAgICBicmVhazsK
LQogICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRUZXh0RW1waGFzaXM6IHsKICAgICAgICAgY29u
c3QgaW50IHByb3BlcnRpZXNbXSA9IHsgQ1NTUHJvcGVydHlXZWJraXRUZXh0RW1waGFzaXNTdHls
ZSwgQ1NTUHJvcGVydHlXZWJraXRUZXh0RW1waGFzaXNDb2xvciB9OwogICAgICAgICByZXR1cm4g
cGFyc2VTaG9ydGhhbmQocHJvcElkLCBwcm9wZXJ0aWVzLCBXVEZfQVJSQVlfTEVOR1RIKHByb3Bl
cnRpZXMpLCBpbXBvcnRhbnQpOwogICAgIH0KIAotICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRU
ZXh0RW1waGFzaXNQb3NpdGlvbjoKLSAgICAgICAgaWYgKGlkID09IENTU1ZhbHVlT3ZlciB8fCBp
ZCA9PSBDU1NWYWx1ZVVuZGVyKQotICAgICAgICAgICAgdmFsaWRQcmltaXRpdmUgPSB0cnVlOwot
ICAgICAgICBicmVhazsKLQogICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRUZXh0RW1waGFzaXNT
dHlsZToKICAgICAgICAgcmV0dXJuIHBhcnNlVGV4dEVtcGhhc2lzU3R5bGUoaW1wb3J0YW50KTsK
IApAQCAtMjMyNywxMSArMjIwNyw2IEBAIGJvb2wgQ1NTUGFyc2VyOjpwYXJzZVZhbHVlKGludCBw
cm9wSWQsIGJvb2wgaW1wb3J0YW50KQogICAgICAgICAgICAgcmV0dXJuIHBhcnNlRm9udEZlYXR1
cmVTZXR0aW5ncyhpbXBvcnRhbnQpOwogICAgICAgICBicmVhazsKIAotICAgIGNhc2UgQ1NTUHJv
cGVydHlXZWJraXRGb250S2VybmluZzoKLSAgICAgICAgaWYgKGlkID09IENTU1ZhbHVlQXV0byB8
fCBpZCA9PSBDU1NWYWx1ZU5vcm1hbCB8fCBpZCA9PSBDU1NWYWx1ZU5vbmUpCi0gICAgICAgICAg
ICB2YWxpZFByaW1pdGl2ZSA9IHRydWU7Ci0gICAgICAgIGJyZWFrOwotCiAgICAgY2FzZSBDU1NQ
cm9wZXJ0eVdlYmtpdEZvbnRWYXJpYW50TGlnYXR1cmVzOgogICAgICAgICBpZiAoaWQgPT0gQ1NT
VmFsdWVOb3JtYWwpCiAgICAgICAgICAgICB2YWxpZFByaW1pdGl2ZSA9IHRydWU7CkBAIC0yMzQ2
LDE1ICsyMjIxLDYgQEAgYm9vbCBDU1NQYXJzZXI6OnBhcnNlVmFsdWUoaW50IHByb3BJZCwgYm9v
bCBpbXBvcnRhbnQpCiAgICAgICAgIGVsc2UgaWYgKHZhbHVlLT51bml0ID09IENTU1BhcnNlclZh
bHVlOjpGdW5jdGlvbikKICAgICAgICAgICAgIHJldHVybiBwYXJzZVdyYXBTaGFwZSgocHJvcElk
ID09IENTU1Byb3BlcnR5V2Via2l0V3JhcFNoYXBlSW5zaWRlKSwgaW1wb3J0YW50KTsKICAgICAg
ICAgYnJlYWs7Ci0gICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdFdyYXBGbG93OgotICAgICAgICBp
ZiAoaWQgPT0gQ1NTVmFsdWVBdXRvIHx8IGlkID09IENTU1ZhbHVlQm90aCB8fCBpZCA9PSBDU1NW
YWx1ZUxlZnQgfHwgaWQgPT0gQ1NTVmFsdWVSaWdodCB8fCBpZCA9PSBDU1NWYWx1ZU1heGltdW0g
fHwgaWQgPT0gQ1NTVmFsdWVDbGVhcikKLSAgICAgICAgICAgIHZhbGlkUHJpbWl0aXZlID0gdHJ1
ZTsKLSAgICAgICAgYnJlYWs7Ci0KLSAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0V3JhcFRocm91
Z2g6Ci0gICAgICAgIGlmIChpZCA9PSBDU1NWYWx1ZVdyYXAgfHwgaWQgPT0gQ1NTVmFsdWVOb25l
KQotICAgICAgICAgICAgdmFsaWRQcmltaXRpdmUgPSB0cnVlOwotICAgICAgICBicmVhazsKICAg
ICBjYXNlIENTU1Byb3BlcnR5V2Via2l0V3JhcE1hcmdpbjoKICAgICBjYXNlIENTU1Byb3BlcnR5
V2Via2l0V3JhcFBhZGRpbmc6CiAgICAgICAgIHZhbGlkUHJpbWl0aXZlID0gKCFpZCAmJiB2YWxp
ZFVuaXQodmFsdWUsIEZMZW5ndGggfCBGTm9uTmVnLCBtX3N0cmljdCkpOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>131832</attachid>
            <date>2012-03-14 06:03:06 -0700</date>
            <delta_ts>2012-03-14 15:35:33 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-80874-20120314100249.patch</filename>
            <type>text/plain</type>
            <size>45251</size>
            <attacher name="Alexis Menard (darktears)">menard</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTEwNDcyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNjBlYjA1MmZmMjkzZTJm
MTIzNDQxNGRiNTM5MzgxYjdmMmVjYzkyYS4uOWJhNDAwYzM4N2JmNmExOTY2OWVlZGVhMjY5YmE0
ZDAzNGUzZTdlOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMyIEBACisyMDEyLTAzLTE0ICBBbGV4
aXMgTWVuYXJkICA8YWxleGlzLm1lbmFyZEBvcGVuYm9zc2Eub3JnPgorCisgICAgICAgIEltcGxl
bWVudCBhIGZhc3QgcGF0aCB3aGVuIHNldHRpbmcgQ1NTIHByb3BlcnRpZXMgd2l0aCBrZXl3b3Jk
cyBmcm9tIEpTLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9ODA4NzQKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICBJbXBsZW1lbnQgYSBmYXN0IHBhdGggZm9yIHByb3BlcnRpZXMgd2l0aCBrZXl3b3Jkcy4gVGhl
IGlkZWEgaXMgdG8gYXZvaWQKKyAgICAgICAgY3JlYXRpbmcgdGhlIENTUyBwYXJzZXIgYW5kIHJ1
biBhbGwgdGhlIG1hY2hpbmVyeSBmb3IgaXQuIFRoaXMgcGF0Y2gKKyAgICAgICAgYWRkcyBhIHN0
YXRpYyBtYXAgd2hlcmUgYWxsIHRoZSBwcm9wZXJ0aWVzIGFjY2VwdGluZyBrZXl3b3JkcyBhcyB2
YWx1ZSBhcmUKKyAgICAgICAgZGVzY3JpYmVkIChlLmcuIHBvc3Rpb24gOiBmaXhlZCkuIFdoZW4g
SlMgY2FsbHMgcGFyc2VWYWx1ZSB3ZSBjaGVjayBpZiB3ZQorICAgICAgICBjYW4gdXNlIHRoZSBm
YXN0IHBhdGggdG8gYWRkIHRoZSBjcmVhdGVkIHByb3BlcnR5IGRpcmVjdGx5IGluIHRoZSBkZWNs
YXJhdGlvbi4KKyAgICAgICAgRm9yIHRoZSBzYWtlIG9mIG1haW50ZW5hbmNlIHRoZSBwYXJzZVZh
bHVlIGZ1bnRpb24gdXNlZCBieSBDU1NHcmFtbWFyLnkgaXMgdXNpbmcKKyAgICAgICAgdGhpcyBt
YXAuCisKKyAgICAgICAgTm8gbmV3IHRlc3RzIDogZXhpc3RpbmdzIG9uZXMgc2hvdWxkIGNvdmVy
LgorCisgICAgICAgICogY3NzL0NTU1BhcnNlci5jcHA6CisgICAgICAgIChXZWJDb3JlKToKKyAg
ICAgICAgKFByb3BlcnR5TWFwRW50cnkpOgorICAgICAgICAoV2ViQ29yZTo6UHJvcGVydHlNYXBF
bnRyeTo6UHJvcGVydHlNYXBFbnRyeSk6CisgICAgICAgIChXZWJDb3JlOjpQcm9wZXJ0eU1hcEVu
dHJ5OjptYXRjaCk6CisgICAgICAgIChLZXl3b3JkUHJvcGVydHlNYXBFbnRyeSk6CisgICAgICAg
IChXZWJDb3JlOjpLZXl3b3JkUHJvcGVydHlNYXBFbnRyeTo6S2V5d29yZFByb3BlcnR5TWFwRW50
cnkpOgorICAgICAgICAoV2ViQ29yZTo6S2V5d29yZFByb3BlcnR5TWFwRW50cnk6Om1hdGNoKToK
KyAgICAgICAgKFdlYkNvcmU6OnByb3BlcnR5Rm9ySUQpOgorICAgICAgICAoV2ViQ29yZTo6cGFy
c2VLZXl3b3JkVmFsdWUpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTUGFyc2VyOjpwYXJzZVZhbHVl
KToKKwogMjAxMi0wMy0xMiAgVGltIEhvcnRvbiAgPHRpbW90aHlfaG9ydG9uQGFwcGxlLmNvbT4K
IAogICAgICAgICBJbmZpbml0ZSByZXBhaW50IGxvb3Agd2l0aCBTVkdJbWFnZUNhY2hlIGFuZCBk
ZWZlcnJlZCByZXBhaW50IHRpbWVycwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NT
U1BhcnNlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUGFyc2VyLmNwcAppbmRleCAzZGM0
YmM5MTIwMjU1MmI2Njc1NGZiOWU0NzZhZDQwZDcwMGQxOGYwLi5mYjNhYmI1ZjFiZGQzODI1NmZi
ZTc3ZTMzM2U3ZjdlYmI4OTM2MGM5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NT
UGFyc2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUGFyc2VyLmNwcApAQCAtNDc5
LDYgKzQ3OSwxOTcgQEAgc3RhdGljIGJvb2wgcGFyc2VTaW1wbGVMZW5ndGhWYWx1ZShTdHlsZVBy
b3BlcnR5U2V0KiBkZWNsYXJhdGlvbiwgaW50IHByb3BlcnR5SWQKICAgICByZXR1cm4gdHJ1ZTsK
IH0KIAorY2xhc3MgUHJvcGVydHlNYXBFbnRyeSB7CitwdWJsaWM6CisgICAgdHlwZWRlZiBib29s
ICgqTWF0Y2hGdW5jdGlvbikoaW50KTsKKworICAgIFByb3BlcnR5TWFwRW50cnkoKSA6IG1fbWF0
Y2goMCkgeyB9CisgICAgUHJvcGVydHlNYXBFbnRyeShNYXRjaEZ1bmN0aW9uIG1hdGNoKSA6IG1f
bWF0Y2gobWF0Y2gpIHsgfQorCisgICAgYm9vbCBpc1ZhbGlkKCkgY29uc3QgeyByZXR1cm4gbV9t
YXRjaDsgfQorICAgIGJvb2wgbWF0Y2goaW50IGlkKSBjb25zdCB7IEFTU0VSVChtX21hdGNoKTsg
cmV0dXJuICgqbV9tYXRjaCkoaWQpOyB9CisKK3ByaXZhdGU6CisgICAgTWF0Y2hGdW5jdGlvbiBt
X21hdGNoOworfTsKKworZW51bSBNYXRjaEtleXdvcmRCZWhhdmlvciB7TWF0Y2hWYWx1ZXMgPSAw
LCBNYXRjaFJhbmdlfTsKK3RlbXBsYXRlIDxNYXRjaEtleXdvcmRCZWhhdmlvciBiZWhhdmlvciwg
aW50IG9uZSA9IENTU1ZhbHVlSW52YWxpZCwgaW50IHR3byA9IENTU1ZhbHVlSW52YWxpZCwgaW50
IHRocmVlID0gQ1NTVmFsdWVJbnZhbGlkLCBpbnQgZm91ciA9IENTU1ZhbHVlSW52YWxpZCwgaW50
IGZpdmUgPSBDU1NWYWx1ZUludmFsaWQsCisgICAgICAgICAgaW50IHNpeCA9IENTU1ZhbHVlSW52
YWxpZCwgaW50IHNldmVuID0gQ1NTVmFsdWVJbnZhbGlkLCBpbnQgZWlnaHQgPSBDU1NWYWx1ZUlu
dmFsaWQsIGludCBuaW5lID0gQ1NTVmFsdWVJbnZhbGlkPgorY2xhc3MgS2V5d29yZFByb3BlcnR5
TWFwRW50cnkgOiBwdWJsaWMgUHJvcGVydHlNYXBFbnRyeSB7CitwdWJsaWM6CisgICAgS2V5d29y
ZFByb3BlcnR5TWFwRW50cnkoKQorICAgICAgICA6IFByb3BlcnR5TWFwRW50cnkoJm1hdGNoKQor
ICAgIHsKKyAgICB9CisKKyAgICBzdGF0aWMgYm9vbCBtYXRjaChpbnQgaWQpCisgICAgeworICAg
ICAgICBpZiAoIWlkIHx8IGlkID09IENTU1ZhbHVlSW52YWxpZCkKKyAgICAgICAgICAgIHJldHVy
biBmYWxzZTsKKworICAgICAgICBpZiAoYmVoYXZpb3IgPT0gTWF0Y2hSYW5nZSAmJiBpZCA+PSBv
bmUgJiYgaWQgPD0gdHdvKQorICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOworCisgICAgICAg
IGlmIChpZCA9PSBvbmUgfHwgaWQgPT0gdHdvIHx8IGlkID09IHRocmVlIHx8IGlkID09IGZvdXIg
fHwgaWQgPT0gZml2ZSB8fCBpZCA9PSBzaXggfHwgaWQgPT0gc2V2ZW4gfHwgaWQgPT0gZWlnaHQg
fHwgaWQgPT0gbmluZSkKKyAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICByZXR1cm4g
ZmFsc2U7CisgICAgfQorfTsKKwordHlwZWRlZiBIYXNoTWFwPGludCwgUHJvcGVydHlNYXBFbnRy
eT4gS2V5d29yZFByb3BlcnR5TWFwOworc3RhdGljIGNvbnN0IFByb3BlcnR5TWFwRW50cnkgcHJv
cGVydHlGb3JJRChpbnQgcHJvcGVydHlJZCkKK3sKKyAgICBERUZJTkVfU1RBVElDX0xPQ0FMKEtl
eXdvcmRQcm9wZXJ0eU1hcCwgbWFwLCAoKSk7CisgICAgaWYgKG1hcC5pc0VtcHR5KCkpIHsKKyAg
ICAgICAgbWFwLnNldChDU1NQcm9wZXJ0eUJvcmRlckJvdHRvbVN0eWxlLCBLZXl3b3JkUHJvcGVy
dHlNYXBFbnRyeTxNYXRjaFJhbmdlLCBDU1NWYWx1ZU5vbmUsIENTU1ZhbHVlRG91YmxlPigpKTsg
Ly8gbm9uZSB8IGhpZGRlbiB8IGRvdHRlZCB8IGRhc2hlZCB8IHNvbGlkIHwgZG91YmxlIHwgZ3Jv
b3ZlIHwgcmlkZ2UgfCBpbnNldCB8IG91dHNldAorICAgICAgICBtYXAuc2V0KENTU1Byb3BlcnR5
Qm9yZGVyQ29sbGFwc2UsIEtleXdvcmRQcm9wZXJ0eU1hcEVudHJ5PE1hdGNoVmFsdWVzLCBDU1NW
YWx1ZUNvbGxhcHNlLCBDU1NWYWx1ZVNlcGFyYXRlPigpKTsgLy8gY29sbGFwc2UgfCBzZXBhcmF0
ZSB8IGluaGVyaXQKKyAgICAgICAgbWFwLnNldChDU1NQcm9wZXJ0eUJvcmRlckxlZnRTdHlsZSwg
S2V5d29yZFByb3BlcnR5TWFwRW50cnk8TWF0Y2hSYW5nZSwgQ1NTVmFsdWVOb25lLCBDU1NWYWx1
ZURvdWJsZT4oKSk7IC8vIG5vbmUgfCBoaWRkZW4gfCBkb3R0ZWQgfCBkYXNoZWQgfCBzb2xpZCB8
IGRvdWJsZSB8IGdyb292ZSB8IHJpZGdlIHwgaW5zZXQgfCBvdXRzZXQKKyAgICAgICAgbWFwLnNl
dChDU1NQcm9wZXJ0eUJvcmRlclJpZ2h0U3R5bGUsIEtleXdvcmRQcm9wZXJ0eU1hcEVudHJ5PE1h
dGNoUmFuZ2UsIENTU1ZhbHVlTm9uZSwgQ1NTVmFsdWVEb3VibGU+KCkpOyAvLyBub25lIHwgaGlk
ZGVuIHwgZG90dGVkIHwgZGFzaGVkIHwgc29saWQgfCBkb3VibGUgfCBncm9vdmUgfCByaWRnZSB8
IGluc2V0IHwgb3V0c2V0CisgICAgICAgIG1hcC5zZXQoQ1NTUHJvcGVydHlCb3JkZXJUb3BTdHls
ZSwgS2V5d29yZFByb3BlcnR5TWFwRW50cnk8TWF0Y2hSYW5nZSwgQ1NTVmFsdWVOb25lLCBDU1NW
YWx1ZURvdWJsZT4oKSk7IC8vIG5vbmUgfCBoaWRkZW4gfCBkb3R0ZWQgfCBkYXNoZWQgfCBzb2xp
ZCB8IGRvdWJsZSB8IGdyb292ZSB8IHJpZGdlIHwgaW5zZXQgfCBvdXRzZXQKKyAgICAgICAgbWFw
LnNldChDU1NQcm9wZXJ0eUJveFNpemluZywgS2V5d29yZFByb3BlcnR5TWFwRW50cnk8TWF0Y2hW
YWx1ZXMsIENTU1ZhbHVlQm9yZGVyQm94LCBDU1NWYWx1ZUNvbnRlbnRCb3g+KCkpOworICAgICAg
ICBtYXAuc2V0KENTU1Byb3BlcnR5Q2FwdGlvblNpZGUsIEtleXdvcmRQcm9wZXJ0eU1hcEVudHJ5
PE1hdGNoVmFsdWVzLCBDU1NWYWx1ZUxlZnQsIENTU1ZhbHVlUmlnaHQsIENTU1ZhbHVlVG9wLCBD
U1NWYWx1ZUJvdHRvbT4oKSk7IC8vIHRvcCB8IGJvdHRvbSB8IGxlZnQgfCByaWdodCB8IGluaGVy
aXQKKyAgICAgICAgbWFwLnNldChDU1NQcm9wZXJ0eUNsZWFyLCBLZXl3b3JkUHJvcGVydHlNYXBF
bnRyeTxNYXRjaFZhbHVlcywgQ1NTVmFsdWVOb25lLCBDU1NWYWx1ZUxlZnQsIENTU1ZhbHVlUmln
aHQsIENTU1ZhbHVlQm90aD4oKSk7IC8vIG5vbmUgfCBsZWZ0IHwgcmlnaHQgfCBib3RoIHwgaW5o
ZXJpdAorICAgICAgICBtYXAuc2V0KENTU1Byb3BlcnR5RGlyZWN0aW9uLCBLZXl3b3JkUHJvcGVy
dHlNYXBFbnRyeTxNYXRjaFZhbHVlcywgQ1NTVmFsdWVMdHIsIENTU1ZhbHVlUnRsPigpKTsgLy8g
bHRyIHwgcnRsIHwgaW5oZXJpdAorICAgICAgICAvLyBpbmxpbmUgfCBibG9jayB8IGxpc3QtaXRl
bSB8IHJ1bi1pbiB8IGlubGluZS1ibG9jayB8IHRhYmxlIHwKKyAgICAgICAgLy8gaW5saW5lLXRh
YmxlIHwgdGFibGUtcm93LWdyb3VwIHwgdGFibGUtaGVhZGVyLWdyb3VwIHwgdGFibGUtZm9vdGVy
LWdyb3VwIHwgdGFibGUtcm93IHwKKyAgICAgICAgLy8gdGFibGUtY29sdW1uLWdyb3VwIHwgdGFi
bGUtY29sdW1uIHwgdGFibGUtY2VsbCB8IHRhYmxlLWNhcHRpb24gfCAtd2Via2l0LWJveCB8IC13
ZWJraXQtaW5saW5lLWJveCB8IG5vbmUgfCBpbmhlcml0CisgICAgICAgIC8vIC13ZWJraXQtZmxl
eGJveCB8IC13ZWJraXQtaW5saW5lLWZsZXhib3ggfCAtd2Via2l0LWdyaWQgfCAtd2Via2l0LWlu
bGluZS1ncmlkCisjaWYgRU5BQkxFKENTU19HUklEX0xBWU9VVCkKKyAgICAgICAgbWFwLnNldChD
U1NQcm9wZXJ0eURpc3BsYXksIEtleXdvcmRQcm9wZXJ0eU1hcEVudHJ5PE1hdGNoUmFuZ2UsIENT
U1ZhbHVlSW5saW5lLCBDU1NWYWx1ZVdlYmtpdElubGluZUZsZXhib3gsIENTU1ZhbHVlTm9uZSwg
Q1NTVmFsdWVXZWJraXRHcmlkLCBDU1NWYWx1ZVdlYmtpdElubGluZUdyaWQ+KCkpOworI2Vsc2UK
KyAgICAgICBtYXAuc2V0KENTU1Byb3BlcnR5RGlzcGxheSwgS2V5d29yZFByb3BlcnR5TWFwRW50
cnk8TWF0Y2hSYW5nZSwgQ1NTVmFsdWVJbmxpbmUsIENTU1ZhbHVlV2Via2l0SW5saW5lRmxleGJv
eCwgQ1NTVmFsdWVOb25lPigpKTsKKyNlbmRpZgorICAgICAgICBtYXAuc2V0KENTU1Byb3BlcnR5
RW1wdHlDZWxscywgS2V5d29yZFByb3BlcnR5TWFwRW50cnk8TWF0Y2hWYWx1ZXMsIENTU1ZhbHVl
U2hvdywgQ1NTVmFsdWVIaWRlPigpKTsgLy8gc2hvdyB8IGhpZGUgfCBpbmhlcml0CisgICAgICAg
IG1hcC5zZXQoQ1NTUHJvcGVydHlGbG9hdCwgS2V5d29yZFByb3BlcnR5TWFwRW50cnk8TWF0Y2hW
YWx1ZXMsIENTU1ZhbHVlTGVmdCwgQ1NTVmFsdWVSaWdodCwgQ1NTVmFsdWVOb25lLCBDU1NWYWx1
ZUNlbnRlciwgQ1NTVmFsdWVXZWJraXRQb3NpdGlvbmVkPigpKTsgLy8gbGVmdCB8IHJpZ2h0IHwg
bm9uZSB8IHBvc2l0aW9uZWQgfCBjZW50ZXIgKGZvciBidWdneSBDU1MsIG1hcHMgdG8gbm9uZSkK
KyAgICAgICAgbWFwLnNldChDU1NQcm9wZXJ0eUZvbnRTdHlsZSwgS2V5d29yZFByb3BlcnR5TWFw
RW50cnk8TWF0Y2hWYWx1ZXMsIENTU1ZhbHVlTm9ybWFsLCBDU1NWYWx1ZUl0YWxpYywgQ1NTVmFs
dWVPYmxpcXVlPigpKTsgLy8gbm9ybWFsIHwgaXRhbGljIHwgb2JsaXF1ZSB8IGluaGVyaXQKKyAg
ICAgICAgbWFwLnNldChDU1NQcm9wZXJ0eUltYWdlUmVuZGVyaW5nLCBLZXl3b3JkUHJvcGVydHlN
YXBFbnRyeTxNYXRjaFZhbHVlcywgQ1NTVmFsdWVBdXRvLCBDU1NWYWx1ZVdlYmtpdE9wdGltaXpl
Q29udHJhc3Q+KCkpOyAvLyBhdXRvIHwgb3B0aW1pemVDb250cmFzdAorICAgICAgICBtYXAuc2V0
KENTU1Byb3BlcnR5TGlzdFN0eWxlUG9zaXRpb24sIEtleXdvcmRQcm9wZXJ0eU1hcEVudHJ5PE1h
dGNoVmFsdWVzLCBDU1NWYWx1ZUluc2lkZSwgQ1NTVmFsdWVPdXRzaWRlPigpKTsgLy8gaW5zaWRl
IHwgb3V0c2lkZSB8IGluaGVyaXQKKyAgICAgICAgbWFwLnNldChDU1NQcm9wZXJ0eUxpc3RTdHls
ZVR5cGUsIEtleXdvcmRQcm9wZXJ0eU1hcEVudHJ5PE1hdGNoUmFuZ2UsIENTU1ZhbHVlRGlzYywg
Q1NTVmFsdWVLYXRha2FuYUlyb2hhLCBDU1NWYWx1ZU5vbmU+KCkpOworICAgICAgICBtYXAuc2V0
KENTU1Byb3BlcnR5T3V0bGluZVN0eWxlLCBLZXl3b3JkUHJvcGVydHlNYXBFbnRyeTxNYXRjaFJh
bmdlLCBDU1NWYWx1ZUluc2V0LCBDU1NWYWx1ZURvdWJsZSwgQ1NTVmFsdWVOb25lLCBDU1NWYWx1
ZUF1dG8+KCkpOyAvLyAoPGJvcmRlci1zdHlsZT4gZXhjZXB0IGhpZGRlbikgfCBhdXRvIHwgaW5o
ZXJpdAorICAgICAgICBtYXAuc2V0KENTU1Byb3BlcnR5T3ZlcmZsb3dYLCBLZXl3b3JkUHJvcGVy
dHlNYXBFbnRyeTxNYXRjaFZhbHVlcywgQ1NTVmFsdWVWaXNpYmxlLCBDU1NWYWx1ZUhpZGRlbiwg
Q1NTVmFsdWVTY3JvbGwsIENTU1ZhbHVlQXV0bywgQ1NTVmFsdWVPdmVybGF5LCBDU1NWYWx1ZVdl
YmtpdE1hcnF1ZWU+KCkpOyAvLyB2aXNpYmxlIHwgaGlkZGVuIHwgc2Nyb2xsIHwgYXV0byB8IG1h
cnF1ZWUgfCBvdmVybGF5IHwgaW5oZXJpdAorICAgICAgICBtYXAuc2V0KENTU1Byb3BlcnR5T3Zl
cmZsb3dZLCBLZXl3b3JkUHJvcGVydHlNYXBFbnRyeTxNYXRjaFZhbHVlcywgQ1NTVmFsdWVWaXNp
YmxlLCBDU1NWYWx1ZUhpZGRlbiwgQ1NTVmFsdWVTY3JvbGwsIENTU1ZhbHVlQXV0bywgQ1NTVmFs
dWVPdmVybGF5LCBDU1NWYWx1ZVdlYmtpdE1hcnF1ZWU+KCkpOyAvLyB2aXNpYmxlIHwgaGlkZGVu
IHwgc2Nyb2xsIHwgYXV0byB8IG1hcnF1ZWUgfCBvdmVybGF5IHwgaW5oZXJpdAorICAgICAgICAv
LyBub25lIHwgdmlzaWJsZVBhaW50ZWQgfCB2aXNpYmxlRmlsbCB8IHZpc2libGVTdHJva2UgfCB2
aXNpYmxlIHwKKyAgICAgICAgLy8gcGFpbnRlZCB8IGZpbGwgfCBzdHJva2UgfCBhdXRvIHwgYWxs
IHwgaW5oZXJpdAorICAgICAgICBtYXAuc2V0KENTU1Byb3BlcnR5UG9pbnRlckV2ZW50cywgS2V5
d29yZFByb3BlcnR5TWFwRW50cnk8TWF0Y2hSYW5nZSwgQ1NTVmFsdWVWaXNpYmxlcGFpbnRlZCwg
Q1NTVmFsdWVTdHJva2UsIENTU1ZhbHVlVmlzaWJsZSwgQ1NTVmFsdWVOb25lLCBDU1NWYWx1ZUFs
bCwgQ1NTVmFsdWVBdXRvPigpKTsKKyAgICAgICAgbWFwLnNldChDU1NQcm9wZXJ0eVBvc2l0aW9u
LCBLZXl3b3JkUHJvcGVydHlNYXBFbnRyeTxNYXRjaFZhbHVlcywgQ1NTVmFsdWVTdGF0aWMsIENT
U1ZhbHVlUmVsYXRpdmUsIENTU1ZhbHVlQWJzb2x1dGUsIENTU1ZhbHVlRml4ZWQ+KCkpOworICAg
ICAgICBtYXAuc2V0KENTU1Byb3BlcnR5UmVzaXplLCBLZXl3b3JkUHJvcGVydHlNYXBFbnRyeTxN
YXRjaFZhbHVlcywgQ1NTVmFsdWVOb25lLCBDU1NWYWx1ZUJvdGgsIENTU1ZhbHVlSG9yaXpvbnRh
bCwgQ1NTVmFsdWVWZXJ0aWNhbCwgQ1NTVmFsdWVBdXRvPigpKTsgLy8gbm9uZSB8IGJvdGggfCBo
b3Jpem9udGFsIHwgdmVydGljYWwgfCBhdXRvCisgICAgICAgIG1hcC5zZXQoQ1NTUHJvcGVydHlT
cGVhaywgS2V5d29yZFByb3BlcnR5TWFwRW50cnk8TWF0Y2hWYWx1ZXMsIENTU1ZhbHVlTm9uZSwg
Q1NTVmFsdWVOb3JtYWwsIENTU1ZhbHVlU3BlbGxPdXQsIENTU1ZhbHVlRGlnaXRzLCBDU1NWYWx1
ZUxpdGVyYWxQdW5jdHVhdGlvbiwgQ1NTVmFsdWVOb1B1bmN0dWF0aW9uPigpKTsgLy8gbm9uZSB8
IG5vcm1hbCB8IHNwZWxsLW91dCB8IGRpZ2l0cyB8IGxpdGVyYWwtcHVuY3R1YXRpb24gfCBuby1w
dW5jdHVhdGlvbiB8IGluaGVyaXQKKyAgICAgICAgbWFwLnNldChDU1NQcm9wZXJ0eVRhYmxlTGF5
b3V0LCBLZXl3b3JkUHJvcGVydHlNYXBFbnRyeTxNYXRjaFZhbHVlcywgQ1NTVmFsdWVBdXRvLCBD
U1NWYWx1ZUZpeGVkPigpKTsgLy8gYXV0byB8IGZpeGVkIHwgaW5oZXJpdAorICAgICAgICBtYXAu
c2V0KENTU1Byb3BlcnR5VGV4dExpbmVUaHJvdWdoTW9kZSwgS2V5d29yZFByb3BlcnR5TWFwRW50
cnk8TWF0Y2hWYWx1ZXMsIENTU1ZhbHVlQ29udGludW91cywgQ1NTVmFsdWVTa2lwV2hpdGVTcGFj
ZT4oKSk7CisgICAgICAgIG1hcC5zZXQoQ1NTUHJvcGVydHlUZXh0TGluZVRocm91Z2hTdHlsZSwg
S2V5d29yZFByb3BlcnR5TWFwRW50cnk8TWF0Y2hWYWx1ZXMsIENTU1ZhbHVlTm9uZSwgQ1NTVmFs
dWVTb2xpZCwgQ1NTVmFsdWVEb3VibGUsIENTU1ZhbHVlRGFzaGVkLCBDU1NWYWx1ZURvdERhc2gs
IENTU1ZhbHVlRG90RG90RGFzaCwgQ1NTVmFsdWVXYXZlPigpKTsKKyAgICAgICAgbWFwLnNldChD
U1NQcm9wZXJ0eVRleHRPdmVyZmxvdywgS2V5d29yZFByb3BlcnR5TWFwRW50cnk8TWF0Y2hWYWx1
ZXMsIENTU1ZhbHVlQ2xpcCwgQ1NTVmFsdWVFbGxpcHNpcz4oKSk7IC8vIGNsaXAgfCBlbGxpcHNp
cworICAgICAgICBtYXAuc2V0KENTU1Byb3BlcnR5VGV4dE92ZXJsaW5lTW9kZSwgS2V5d29yZFBy
b3BlcnR5TWFwRW50cnk8TWF0Y2hWYWx1ZXMsIENTU1ZhbHVlQ29udGludW91cywgQ1NTVmFsdWVT
a2lwV2hpdGVTcGFjZT4oKSk7CisgICAgICAgIG1hcC5zZXQoQ1NTUHJvcGVydHlUZXh0T3Zlcmxp
bmVTdHlsZSwgS2V5d29yZFByb3BlcnR5TWFwRW50cnk8TWF0Y2hWYWx1ZXMsIENTU1ZhbHVlTm9u
ZSwgQ1NTVmFsdWVTb2xpZCwgQ1NTVmFsdWVEb3VibGUsIENTU1ZhbHVlRGFzaGVkLCBDU1NWYWx1
ZURvdERhc2gsIENTU1ZhbHVlRG90RG90RGFzaCwgQ1NTVmFsdWVXYXZlPigpKTsKKyAgICAgICAg
bWFwLnNldChDU1NQcm9wZXJ0eVRleHRSZW5kZXJpbmcsIEtleXdvcmRQcm9wZXJ0eU1hcEVudHJ5
PE1hdGNoVmFsdWVzLCBDU1NWYWx1ZUF1dG8sIENTU1ZhbHVlT3B0aW1pemVzcGVlZCwgQ1NTVmFs
dWVPcHRpbWl6ZWxlZ2liaWxpdHksIENTU1ZhbHVlR2VvbWV0cmljcHJlY2lzaW9uPigpKTsgLy8g
YXV0byB8IG9wdGltaXplU3BlZWQgfCBvcHRpbWl6ZUxlZ2liaWxpdHkgfCBnZW9tZXRyaWNQcmVj
aXNpb24KKyAgICAgICAgbWFwLnNldChDU1NQcm9wZXJ0eVRleHRUcmFuc2Zvcm0sIEtleXdvcmRQ
cm9wZXJ0eU1hcEVudHJ5PE1hdGNoUmFuZ2UsIENTU1ZhbHVlQ2FwaXRhbGl6ZSwgQ1NTVmFsdWVM
b3dlcmNhc2UsIENTU1ZhbHVlTm9uZT4oKSk7IC8vIGNhcGl0YWxpemUgfCB1cHBlcmNhc2UgfCBs
b3dlcmNhc2UgfCBub25lIHwgaW5oZXJpdAorICAgICAgICBtYXAuc2V0KENTU1Byb3BlcnR5VGV4
dFVuZGVybGluZU1vZGUsIEtleXdvcmRQcm9wZXJ0eU1hcEVudHJ5PE1hdGNoVmFsdWVzLCBDU1NW
YWx1ZUNvbnRpbnVvdXMsIENTU1ZhbHVlU2tpcFdoaXRlU3BhY2U+KCkpOworICAgICAgICBtYXAu
c2V0KENTU1Byb3BlcnR5VGV4dFVuZGVybGluZVN0eWxlLCBLZXl3b3JkUHJvcGVydHlNYXBFbnRy
eTxNYXRjaFZhbHVlcywgQ1NTVmFsdWVOb25lLCBDU1NWYWx1ZVNvbGlkLCBDU1NWYWx1ZURvdWJs
ZSwgQ1NTVmFsdWVEYXNoZWQsIENTU1ZhbHVlRG90RGFzaCwgQ1NTVmFsdWVEb3REb3REYXNoLCBD
U1NWYWx1ZVdhdmU+KCkpOworICAgICAgICBtYXAuc2V0KENTU1Byb3BlcnR5VmlzaWJpbGl0eSwg
S2V5d29yZFByb3BlcnR5TWFwRW50cnk8TWF0Y2hWYWx1ZXMsIENTU1ZhbHVlVmlzaWJsZSwgQ1NT
VmFsdWVIaWRkZW4sIENTU1ZhbHVlQ29sbGFwc2U+KCkpOyAvLyB2aXNpYmxlIHwgaGlkZGVuIHwg
Y29sbGFwc2UgfCBpbmhlcml0CisgICAgICAgIG1hcC5zZXQoQ1NTUHJvcGVydHlXZWJraXRBcHBl
YXJhbmNlLCBLZXl3b3JkUHJvcGVydHlNYXBFbnRyeTxNYXRjaFJhbmdlLCBDU1NWYWx1ZUNoZWNr
Ym94LCBDU1NWYWx1ZVRleHRhcmVhLCBDU1NWYWx1ZU5vbmU+KCkpOworICAgICAgICBtYXAuc2V0
KENTU1Byb3BlcnR5V2Via2l0QmFja2ZhY2VWaXNpYmlsaXR5LCBLZXl3b3JkUHJvcGVydHlNYXBF
bnRyeTxNYXRjaFZhbHVlcywgQ1NTVmFsdWVWaXNpYmxlLCBDU1NWYWx1ZUhpZGRlbj4oKSk7Cisg
ICAgICAgIG1hcC5zZXQoQ1NTUHJvcGVydHlXZWJraXRCb3JkZXJBZnRlclN0eWxlLCBLZXl3b3Jk
UHJvcGVydHlNYXBFbnRyeTxNYXRjaFJhbmdlLCBDU1NWYWx1ZU5vbmUsIENTU1ZhbHVlRG91Ymxl
PigpKTsgLy8gbm9uZSB8IGhpZGRlbiB8IGRvdHRlZCB8IGRhc2hlZCB8IHNvbGlkIHwgZG91Ymxl
IHwgZ3Jvb3ZlIHwgcmlkZ2UgfCBpbnNldCB8IG91dHNldAorICAgICAgICBtYXAuc2V0KENTU1By
b3BlcnR5V2Via2l0Qm9yZGVyQmVmb3JlU3R5bGUsIEtleXdvcmRQcm9wZXJ0eU1hcEVudHJ5PE1h
dGNoUmFuZ2UsIENTU1ZhbHVlTm9uZSwgQ1NTVmFsdWVEb3VibGU+KCkpOyAvLyBub25lIHwgaGlk
ZGVuIHwgZG90dGVkIHwgZGFzaGVkIHwgc29saWQgfCBkb3VibGUgfCBncm9vdmUgfCByaWRnZSB8
IGluc2V0IHwgb3V0c2V0CisgICAgICAgIG1hcC5zZXQoQ1NTUHJvcGVydHlXZWJraXRCb3JkZXJF
bmRTdHlsZSwgS2V5d29yZFByb3BlcnR5TWFwRW50cnk8TWF0Y2hSYW5nZSwgQ1NTVmFsdWVOb25l
LCBDU1NWYWx1ZURvdWJsZT4oKSk7IC8vIG5vbmUgfCBoaWRkZW4gfCBkb3R0ZWQgfCBkYXNoZWQg
fCBzb2xpZCB8IGRvdWJsZSB8IGdyb292ZSB8IHJpZGdlIHwgaW5zZXQgfCBvdXRzZXQKKyAgICAg
ICAgbWFwLnNldChDU1NQcm9wZXJ0eVdlYmtpdEJvcmRlckZpdCwgS2V5d29yZFByb3BlcnR5TWFw
RW50cnk8TWF0Y2hWYWx1ZXMsIENTU1ZhbHVlQm9yZGVyLCBDU1NWYWx1ZUxpbmVzPigpKTsKKyAg
ICAgICAgbWFwLnNldChDU1NQcm9wZXJ0eVdlYmtpdEJvcmRlclN0YXJ0U3R5bGUsIEtleXdvcmRQ
cm9wZXJ0eU1hcEVudHJ5PE1hdGNoUmFuZ2UsIENTU1ZhbHVlTm9uZSwgQ1NTVmFsdWVEb3VibGU+
KCkpOyAvLyBub25lIHwgaGlkZGVuIHwgZG90dGVkIHwgZGFzaGVkIHwgc29saWQgfCBkb3VibGUg
fCBncm9vdmUgfCByaWRnZSB8IGluc2V0IHwgb3V0c2V0CisgICAgICAgIG1hcC5zZXQoQ1NTUHJv
cGVydHlXZWJraXRCb3hBbGlnbiwgS2V5d29yZFByb3BlcnR5TWFwRW50cnk8TWF0Y2hWYWx1ZXMs
IENTU1ZhbHVlU3RyZXRjaCwgQ1NTVmFsdWVTdGFydCwgQ1NTVmFsdWVFbmQsIENTU1ZhbHVlQ2Vu
dGVyLCBDU1NWYWx1ZUJhc2VsaW5lPigpKTsKKyAgICAgICAgbWFwLnNldChDU1NQcm9wZXJ0eVdl
YmtpdEJveERpcmVjdGlvbiwgS2V5d29yZFByb3BlcnR5TWFwRW50cnk8TWF0Y2hWYWx1ZXMsIENT
U1ZhbHVlTm9ybWFsLCBDU1NWYWx1ZVJldmVyc2U+KCkpOworICAgICAgICBtYXAuc2V0KENTU1By
b3BlcnR5V2Via2l0Qm94TGluZXMsIEtleXdvcmRQcm9wZXJ0eU1hcEVudHJ5PE1hdGNoVmFsdWVz
LCBDU1NWYWx1ZVNpbmdsZSwgQ1NTVmFsdWVNdWx0aXBsZT4oKSk7CisgICAgICAgIG1hcC5zZXQo
Q1NTUHJvcGVydHlXZWJraXRCb3hPcmllbnQsIEtleXdvcmRQcm9wZXJ0eU1hcEVudHJ5PE1hdGNo
VmFsdWVzLCBDU1NWYWx1ZUhvcml6b250YWwsIENTU1ZhbHVlVmVydGljYWwsIENTU1ZhbHVlSW5s
aW5lQXhpcywgQ1NTVmFsdWVCbG9ja0F4aXM+KCkpOworICAgICAgICBtYXAuc2V0KENTU1Byb3Bl
cnR5V2Via2l0Qm94UGFjaywgS2V5d29yZFByb3BlcnR5TWFwRW50cnk8TWF0Y2hWYWx1ZXMsIENT
U1ZhbHVlU3RhcnQsIENTU1ZhbHVlRW5kLCBDU1NWYWx1ZUNlbnRlciwgQ1NTVmFsdWVKdXN0aWZ5
PigpKTsKKyAgICAgICAgbWFwLnNldChDU1NQcm9wZXJ0eVdlYmtpdENvbG9yQ29ycmVjdGlvbiwg
S2V5d29yZFByb3BlcnR5TWFwRW50cnk8TWF0Y2hWYWx1ZXMsIENTU1ZhbHVlU3JnYiwgQ1NTVmFs
dWVEZWZhdWx0PigpKTsKKyAgICAgICAgbWFwLnNldChDU1NQcm9wZXJ0eVdlYmtpdENvbHVtblJ1
bGVTdHlsZSwgS2V5d29yZFByb3BlcnR5TWFwRW50cnk8TWF0Y2hSYW5nZSwgQ1NTVmFsdWVOb25l
LCBDU1NWYWx1ZURvdWJsZT4oKSk7IC8vIG5vbmUgfCBoaWRkZW4gfCBkb3R0ZWQgfCBkYXNoZWQg
fCBzb2xpZCB8IGRvdWJsZSB8IGdyb292ZSB8IHJpZGdlIHwgaW5zZXQgfCBvdXRzZXQKKyAgICAg
ICAgbWFwLnNldChDU1NQcm9wZXJ0eVdlYmtpdEZsZXhBbGlnbiwgS2V5d29yZFByb3BlcnR5TWFw
RW50cnk8TWF0Y2hWYWx1ZXMsIENTU1ZhbHVlU3RhcnQsIENTU1ZhbHVlRW5kLCBDU1NWYWx1ZUNl
bnRlciwgQ1NTVmFsdWVCYXNlbGluZSwgQ1NTVmFsdWVTdHJldGNoPigpKTsKKyAgICAgICAgbWFw
LnNldChDU1NQcm9wZXJ0eVdlYmtpdEZsZXhEaXJlY3Rpb24sIEtleXdvcmRQcm9wZXJ0eU1hcEVu
dHJ5PE1hdGNoVmFsdWVzLCBDU1NWYWx1ZVJvdywgQ1NTVmFsdWVSb3dSZXZlcnNlLCBDU1NWYWx1
ZUNvbHVtbiwgQ1NTVmFsdWVDb2x1bW5SZXZlcnNlPigpKTsKKyAgICAgICAgbWFwLnNldChDU1NQ
cm9wZXJ0eVdlYmtpdEZsZXhJdGVtQWxpZ24sIEtleXdvcmRQcm9wZXJ0eU1hcEVudHJ5PE1hdGNo
VmFsdWVzLCBDU1NWYWx1ZUF1dG8sIENTU1ZhbHVlU3RhcnQsIENTU1ZhbHVlRW5kLCBDU1NWYWx1
ZUNlbnRlciwgQ1NTVmFsdWVTdHJldGNoLCBDU1NWYWx1ZUJhc2VsaW5lLCBDU1NWYWx1ZVN0cmV0
Y2g+KCkpOworICAgICAgICBtYXAuc2V0KENTU1Byb3BlcnR5V2Via2l0RmxleFBhY2ssIEtleXdv
cmRQcm9wZXJ0eU1hcEVudHJ5PE1hdGNoVmFsdWVzLCBDU1NWYWx1ZVN0YXJ0LCBDU1NWYWx1ZUVu
ZCwgQ1NTVmFsdWVDZW50ZXIsIENTU1ZhbHVlSnVzdGlmeSwgQ1NTVmFsdWVEaXN0cmlidXRlPigp
KTsKKyAgICAgICAgbWFwLnNldChDU1NQcm9wZXJ0eVdlYmtpdEZsZXhXcmFwLCBLZXl3b3JkUHJv
cGVydHlNYXBFbnRyeTxNYXRjaFZhbHVlcywgQ1NTVmFsdWVOb25lLCBDU1NWYWx1ZVdyYXAsIENT
U1ZhbHVlV3JhcFJldmVyc2U+KCkpOworICAgICAgICBtYXAuc2V0KENTU1Byb3BlcnR5V2Via2l0
Rm9udEtlcm5pbmcsIEtleXdvcmRQcm9wZXJ0eU1hcEVudHJ5PE1hdGNoVmFsdWVzLCBDU1NWYWx1
ZUF1dG8sIENTU1ZhbHVlTm9ybWFsLCBDU1NWYWx1ZU5vbmU+KCkpOworICAgICAgICBtYXAuc2V0
KENTU1Byb3BlcnR5V2Via2l0Rm9udFNtb290aGluZywgS2V5d29yZFByb3BlcnR5TWFwRW50cnk8
TWF0Y2hWYWx1ZXMsIENTU1ZhbHVlQXV0bywgQ1NTVmFsdWVOb25lLCBDU1NWYWx1ZUFudGlhbGlh
c2VkLCBDU1NWYWx1ZVN1YnBpeGVsQW50aWFsaWFzZWQ+KCkpOworICAgICAgICBtYXAuc2V0KENT
U1Byb3BlcnR5V2Via2l0SHlwaGVucywgS2V5d29yZFByb3BlcnR5TWFwRW50cnk8TWF0Y2hWYWx1
ZXMsIENTU1ZhbHVlTm9uZSwgQ1NTVmFsdWVNYW51YWwsIENTU1ZhbHVlQXV0bz4oKSk7CisgICAg
ICAgIG1hcC5zZXQoQ1NTUHJvcGVydHlXZWJraXRMaW5lQWxpZ24sIEtleXdvcmRQcm9wZXJ0eU1h
cEVudHJ5PE1hdGNoVmFsdWVzLCBDU1NWYWx1ZU5vbmUsIENTU1ZhbHVlRWRnZXM+KCkpOworICAg
ICAgICBtYXAuc2V0KENTU1Byb3BlcnR5V2Via2l0TGluZUJyZWFrLCBLZXl3b3JkUHJvcGVydHlN
YXBFbnRyeTxNYXRjaFZhbHVlcywgQ1NTVmFsdWVOb3JtYWwsIENTU1ZhbHVlQWZ0ZXJXaGl0ZVNw
YWNlPigpKTsgLy8gbm9ybWFsIHwgYWZ0ZXItd2hpdGUtc3BhY2UKKyAgICAgICAgbWFwLnNldChD
U1NQcm9wZXJ0eVdlYmtpdExpbmVTbmFwLCBLZXl3b3JkUHJvcGVydHlNYXBFbnRyeTxNYXRjaFZh
bHVlcywgQ1NTVmFsdWVOb25lLCBDU1NWYWx1ZUJhc2VsaW5lLCBDU1NWYWx1ZUNvbnRhaW4+KCkp
OworICAgICAgICBtYXAuc2V0KENTU1Byb3BlcnR5V2Via2l0TWFyZ2luQWZ0ZXJDb2xsYXBzZSwg
S2V5d29yZFByb3BlcnR5TWFwRW50cnk8TWF0Y2hWYWx1ZXMsIENTU1ZhbHVlQ29sbGFwc2UsIENT
U1ZhbHVlU2VwYXJhdGUsIENTU1ZhbHVlRGlzY2FyZD4oKSk7CisgICAgICAgIG1hcC5zZXQoQ1NT
UHJvcGVydHlXZWJraXRNYXJnaW5CZWZvcmVDb2xsYXBzZSwgS2V5d29yZFByb3BlcnR5TWFwRW50
cnk8TWF0Y2hWYWx1ZXMsIENTU1ZhbHVlQ29sbGFwc2UsIENTU1ZhbHVlU2VwYXJhdGUsIENTU1Zh
bHVlRGlzY2FyZD4oKSk7CisgICAgICAgIG1hcC5zZXQoQ1NTUHJvcGVydHlXZWJraXRNYXJnaW5C
b3R0b21Db2xsYXBzZSwgS2V5d29yZFByb3BlcnR5TWFwRW50cnk8TWF0Y2hWYWx1ZXMsIENTU1Zh
bHVlQ29sbGFwc2UsIENTU1ZhbHVlU2VwYXJhdGUsIENTU1ZhbHVlRGlzY2FyZD4oKSk7CisgICAg
ICAgIG1hcC5zZXQoQ1NTUHJvcGVydHlXZWJraXRNYXJnaW5Ub3BDb2xsYXBzZSwgS2V5d29yZFBy
b3BlcnR5TWFwRW50cnk8TWF0Y2hWYWx1ZXMsIENTU1ZhbHVlQ29sbGFwc2UsIENTU1ZhbHVlU2Vw
YXJhdGUsIENTU1ZhbHVlRGlzY2FyZD4oKSk7CisgICAgICAgIG1hcC5zZXQoQ1NTUHJvcGVydHlX
ZWJraXRNYXJxdWVlRGlyZWN0aW9uLCBLZXl3b3JkUHJvcGVydHlNYXBFbnRyeTxNYXRjaFZhbHVl
cywgQ1NTVmFsdWVGb3J3YXJkcywgQ1NTVmFsdWVCYWNrd2FyZHMsIENTU1ZhbHVlQWhlYWQsIENT
U1ZhbHVlUmV2ZXJzZSwgQ1NTVmFsdWVMZWZ0LCBDU1NWYWx1ZVJpZ2h0LCBDU1NWYWx1ZURvd24s
IENTU1ZhbHVlVXAsIENTU1ZhbHVlQXV0bz4oKSk7CisgICAgICAgIG1hcC5zZXQoQ1NTUHJvcGVy
dHlXZWJraXRNYXJxdWVlU3R5bGUsIEtleXdvcmRQcm9wZXJ0eU1hcEVudHJ5PE1hdGNoVmFsdWVz
LCBDU1NWYWx1ZU5vbmUsIENTU1ZhbHVlU2xpZGUsIENTU1ZhbHVlU2Nyb2xsLCBDU1NWYWx1ZUFs
dGVybmF0ZT4oKSk7CisgICAgICAgIG1hcC5zZXQoQ1NTUHJvcGVydHlXZWJraXRNYXRjaE5lYXJl
c3RNYWlsQmxvY2txdW90ZUNvbG9yLCBLZXl3b3JkUHJvcGVydHlNYXBFbnRyeTxNYXRjaFZhbHVl
cywgQ1NTVmFsdWVOb3JtYWwsIENTU1ZhbHVlTWF0Y2g+KCkpOyAvLyBub3JtYWwgfCBtYXRjaAor
ICAgICAgICBtYXAuc2V0KENTU1Byb3BlcnR5V2Via2l0TmJzcE1vZGUsIEtleXdvcmRQcm9wZXJ0
eU1hcEVudHJ5PE1hdGNoVmFsdWVzLCBDU1NWYWx1ZU5vcm1hbCwgQ1NTVmFsdWVTcGFjZT4oKSk7
IC8vIG5vcm1hbCB8IHNwYWNlCisjaWYgRU5BQkxFKE9WRVJGTE9XX1NDUk9MTElORykKKyAgICAg
ICAgbWFwLnNldChDU1NQcm9wZXJ0eVdlYmtpdE92ZXJmbG93U2Nyb2xsaW5nLCBLZXl3b3JkUHJv
cGVydHlNYXBFbnRyeTxNYXRjaFZhbHVlcywgQ1NTVmFsdWVBdXRvLCBDU1NWYWx1ZVRvdWNoPigp
KTsKKyNlbmRpZgorICAgICAgICBtYXAuc2V0KENTU1Byb3BlcnR5V2Via2l0UHJpbnRDb2xvckFk
anVzdCwgS2V5d29yZFByb3BlcnR5TWFwRW50cnk8TWF0Y2hWYWx1ZXMsIENTU1ZhbHVlRXhhY3Qs
IENTU1ZhbHVlRWNvbm9teT4oKSk7CisgICAgICAgIG1hcC5zZXQoQ1NTUHJvcGVydHlXZWJraXRS
dGxPcmRlcmluZywgS2V5d29yZFByb3BlcnR5TWFwRW50cnk8TWF0Y2hWYWx1ZXMsIENTU1ZhbHVl
TG9naWNhbCwgQ1NTVmFsdWVWaXN1YWw+KCkpOworICAgICAgICBtYXAuc2V0KENTU1Byb3BlcnR5
V2Via2l0VGV4dENvbWJpbmUsIEtleXdvcmRQcm9wZXJ0eU1hcEVudHJ5PE1hdGNoVmFsdWVzLCBD
U1NWYWx1ZU5vbmUsIENTU1ZhbHVlSG9yaXpvbnRhbD4oKSk7CisgICAgICAgIG1hcC5zZXQoQ1NT
UHJvcGVydHlXZWJraXRUZXh0RW1waGFzaXNQb3NpdGlvbiwgS2V5d29yZFByb3BlcnR5TWFwRW50
cnk8TWF0Y2hWYWx1ZXMsIENTU1ZhbHVlT3ZlciwgQ1NTVmFsdWVVbmRlcj4oKSk7CisgICAgICAg
IG1hcC5zZXQoQ1NTUHJvcGVydHlXZWJraXRUZXh0U2VjdXJpdHksIEtleXdvcmRQcm9wZXJ0eU1h
cEVudHJ5PE1hdGNoVmFsdWVzLCBDU1NWYWx1ZURpc2MsIENTU1ZhbHVlQ2lyY2xlLCBDU1NWYWx1
ZVNxdWFyZSwgQ1NTVmFsdWVOb25lPigpKTsgLy8gZGlzYyB8IGNpcmNsZSB8IHNxdWFyZSB8IG5v
bmUgfCBpbmhlcml0CisgICAgICAgIG1hcC5zZXQoQ1NTUHJvcGVydHlXZWJraXRUZXh0U2l6ZUFk
anVzdCwgS2V5d29yZFByb3BlcnR5TWFwRW50cnk8TWF0Y2hWYWx1ZXMsIENTU1ZhbHVlQXV0bywg
Q1NTVmFsdWVOb25lPigpKTsKKyAgICAgICAgbWFwLnNldChDU1NQcm9wZXJ0eVdlYmtpdFRyYW5z
Zm9ybVN0eWxlLCBLZXl3b3JkUHJvcGVydHlNYXBFbnRyeTxNYXRjaFZhbHVlcywgQ1NTVmFsdWVG
bGF0LCBDU1NWYWx1ZVByZXNlcnZlM2Q+KCkpOyAvLyBjbGlwIHwgZWxsaXBzaXMKKyAgICAgICAg
bWFwLnNldChDU1NQcm9wZXJ0eVdlYmtpdFVzZXJEcmFnLCBLZXl3b3JkUHJvcGVydHlNYXBFbnRy
eTxNYXRjaFZhbHVlcywgQ1NTVmFsdWVBdXRvLCBDU1NWYWx1ZU5vbmUsIENTU1ZhbHVlRWxlbWVu
dD4oKSk7IC8vIGF1dG8gfCBub25lIHwgZWxlbWVudAorICAgICAgICBtYXAuc2V0KENTU1Byb3Bl
cnR5V2Via2l0VXNlck1vZGlmeSwgS2V5d29yZFByb3BlcnR5TWFwRW50cnk8TWF0Y2hWYWx1ZXMs
IENTU1ZhbHVlUmVhZE9ubHksIENTU1ZhbHVlUmVhZFdyaXRlLCBDU1NWYWx1ZVJlYWRXcml0ZVBs
YWludGV4dE9ubHk+KCkpOyAvLyByZWFkLW9ubHkgfCByZWFkLXdyaXRlCisgICAgICAgIG1hcC5z
ZXQoQ1NTUHJvcGVydHlXZWJraXRVc2VyU2VsZWN0LCBLZXl3b3JkUHJvcGVydHlNYXBFbnRyeTxN
YXRjaFZhbHVlcywgQ1NTVmFsdWVBdXRvLCBDU1NWYWx1ZU5vbmUsIENTU1ZhbHVlVGV4dD4oKSk7
IC8vIGF1dG8gfCBub25lIHwgdGV4dAorICAgICAgICBtYXAuc2V0KENTU1Byb3BlcnR5V2Via2l0
V3JhcEZsb3csIEtleXdvcmRQcm9wZXJ0eU1hcEVudHJ5PE1hdGNoVmFsdWVzLCBDU1NWYWx1ZUF1
dG8sIENTU1ZhbHVlQm90aCwgQ1NTVmFsdWVMZWZ0LCBDU1NWYWx1ZVJpZ2h0LCBDU1NWYWx1ZU1h
eGltdW0sIENTU1ZhbHVlQ2xlYXI+KCkpOworICAgICAgICBtYXAuc2V0KENTU1Byb3BlcnR5V2Vi
a2l0V3JhcFRocm91Z2gsIEtleXdvcmRQcm9wZXJ0eU1hcEVudHJ5PE1hdGNoVmFsdWVzLCBDU1NW
YWx1ZVdyYXAsIENTU1ZhbHVlTm9uZT4oKSk7CisgICAgICAgIG1hcC5zZXQoQ1NTUHJvcGVydHlX
ZWJraXRXcml0aW5nTW9kZSwgS2V5d29yZFByb3BlcnR5TWFwRW50cnk8TWF0Y2hSYW5nZSwgQ1NT
VmFsdWVIb3Jpem9udGFsVGIsIENTU1ZhbHVlSG9yaXpvbnRhbEJ0PigpKTsKKyAgICAgICAgbWFw
LnNldChDU1NQcm9wZXJ0eVdoaXRlU3BhY2UsIEtleXdvcmRQcm9wZXJ0eU1hcEVudHJ5PE1hdGNo
VmFsdWVzLCBDU1NWYWx1ZU5vcm1hbCwgQ1NTVmFsdWVQcmUsIENTU1ZhbHVlUHJlV3JhcCwgQ1NT
VmFsdWVQcmVMaW5lLCBDU1NWYWx1ZU5vd3JhcD4oKSk7IC8vIG5vcm1hbCB8IHByZSB8IG5vd3Jh
cCB8IGluaGVyaXQKKyAgICAgICAgbWFwLnNldChDU1NQcm9wZXJ0eVdvcmRCcmVhaywgS2V5d29y
ZFByb3BlcnR5TWFwRW50cnk8TWF0Y2hWYWx1ZXMsIENTU1ZhbHVlTm9ybWFsLCBDU1NWYWx1ZUJy
ZWFrQWxsLCBDU1NWYWx1ZUJyZWFrV29yZD4oKSk7IC8vIG5vcm1hbCB8IGJyZWFrLWFsbCB8IGJy
ZWFrLXdvcmQgKHRoaXMgaXMgYSBjdXN0b20gZXh0ZW5zaW9uKQorICAgICAgICBtYXAuc2V0KENT
U1Byb3BlcnR5V29yZFdyYXAsIEtleXdvcmRQcm9wZXJ0eU1hcEVudHJ5PE1hdGNoVmFsdWVzLCBD
U1NWYWx1ZU5vcm1hbCwgQ1NTVmFsdWVCcmVha1dvcmQ+KCkpOyAvLyBub3JtYWwgfCBicmVhay13
b3JkCisgICAgfQorICAgIHJldHVybiBtYXAuZ2V0KHByb3BlcnR5SWQpOworfQorCitzdGF0aWMg
Ym9vbCBwYXJzZUtleXdvcmRWYWx1ZShTdHlsZVByb3BlcnR5U2V0KiBkZWNsYXJhdGlvbiwgaW50
IHByb3BlcnR5SWQsIGNvbnN0IFN0cmluZyYgc3RyaW5nLCBib29sIGltcG9ydGFudCwgQ1NTU3R5
bGVTaGVldCogY29udGV4dFN0eWxlU2hlZXQpCit7CisgICAgaWYgKCFzdHJpbmcubGVuZ3RoKCkp
CisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIGNvbnN0IFByb3BlcnR5TWFwRW50cnkgcHJv
cGVydHkgPSBwcm9wZXJ0eUZvcklEKHByb3BlcnR5SWQpOworICAgIGlmICghcHJvcGVydHkuaXNW
YWxpZCgpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBDU1NQYXJzZXJTdHJpbmcgY3Nz
U3RyaW5nOworICAgIGNzc1N0cmluZy5jaGFyYWN0ZXJzID0gY29uc3RfY2FzdDxVQ2hhcio+KHN0
cmluZy5jaGFyYWN0ZXJzKCkpOworICAgIGNzc1N0cmluZy5sZW5ndGggPSBzdHJpbmcubGVuZ3Ro
KCk7CisgICAgaW50IHZhbHVlSUQgPSBjc3NWYWx1ZUtleXdvcmRJRChjc3NTdHJpbmcpOworCisg
ICAgaWYgKCF2YWx1ZUlEKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBEb2N1bWVudCog
ZG9jdW1lbnQgPSBjb250ZXh0U3R5bGVTaGVldC0+ZmluZERvY3VtZW50KCk7CisgICAgUmVmUHRy
PENTU1ZhbHVlPiB2YWx1ZTsKKyAgICBDU1NWYWx1ZVBvb2wqIGNzc1ZhbHVlUG9vbCA9IGRvY3Vt
ZW50ID8gZG9jdW1lbnQtPmNzc1ZhbHVlUG9vbCgpLmdldCgpIDogMDsKKyAgICBpZiAodmFsdWVJ
RCA9PSBDU1NWYWx1ZUluaGVyaXQpIHsKKyAgICAgICAgaWYgKGNzc1ZhbHVlUG9vbCkKKyAgICAg
ICAgICAgIHZhbHVlID0gY3NzVmFsdWVQb29sLT5jcmVhdGVJbmhlcml0ZWRWYWx1ZSgpOworICAg
ICAgICBlbHNlCisgICAgICAgICAgICB2YWx1ZSA9IENTU0luaGVyaXRlZFZhbHVlOjpjcmVhdGUo
KTsKKyAgICAgICAgZGVjbGFyYXRpb24tPmFkZFBhcnNlZFByb3BlcnR5KENTU1Byb3BlcnR5KHBy
b3BlcnR5SWQsIHZhbHVlLnJlbGVhc2UoKSwgaW1wb3J0YW50KSk7CisgICAgICAgIHJldHVybiB0
cnVlOworICAgIH0KKyAgICBpZiAodmFsdWVJRCA9PSBDU1NWYWx1ZUluaXRpYWwpIHsKKyAgICAg
ICAgaWYgKGNzc1ZhbHVlUG9vbCkKKyAgICAgICAgICAgIHZhbHVlID0gY3NzVmFsdWVQb29sLT5j
cmVhdGVFeHBsaWNpdEluaXRpYWxWYWx1ZSgpOworICAgICAgICBlbHNlCisgICAgICAgICAgICB2
YWx1ZSA9IENTU0luaXRpYWxWYWx1ZTo6Y3JlYXRlRXhwbGljaXQoKTsKKyAgICAgICAgZGVjbGFy
YXRpb24tPmFkZFBhcnNlZFByb3BlcnR5KENTU1Byb3BlcnR5KHByb3BlcnR5SWQsIHZhbHVlLnJl
bGVhc2UoKSwgaW1wb3J0YW50KSk7CisgICAgICAgIHJldHVybiB0cnVlOworICAgIH0KKworICAg
IGlmICghcHJvcGVydHkubWF0Y2godmFsdWVJRCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKwor
ICAgIGlmIChkb2N1bWVudCkKKyAgICAgICAgdmFsdWUgPSBjc3NWYWx1ZVBvb2wtPmNyZWF0ZUlk
ZW50aWZpZXJWYWx1ZSh2YWx1ZUlEKTsKKyAgICBlbHNlCisgICAgICAgIHZhbHVlID0gQ1NTUHJp
bWl0aXZlVmFsdWU6OmNyZWF0ZUlkZW50aWZpZXIodmFsdWVJRCk7CisgICAgZGVjbGFyYXRpb24t
PmFkZFBhcnNlZFByb3BlcnR5KENTU1Byb3BlcnR5KHByb3BlcnR5SWQsIHZhbHVlLnJlbGVhc2Uo
KSwgaW1wb3J0YW50KSk7CisgICAgcmV0dXJuIHRydWU7Cit9CisKIFBhc3NSZWZQdHI8Q1NTVmFs
dWVMaXN0PiBDU1NQYXJzZXI6OnBhcnNlRm9udEZhY2VWYWx1ZShjb25zdCBBdG9taWNTdHJpbmcm
IHN0cmluZywgQ1NTU3R5bGVTaGVldCogY29udGV4dFN0eWxlU2hlZXQpCiB7CiAgICAgUmVmUHRy
PFN0eWxlUHJvcGVydHlTZXQ+IGR1bW15U3R5bGUgPSBTdHlsZVByb3BlcnR5U2V0OjpjcmVhdGUo
KTsKQEAgLTQ5Myw2ICs2ODQsOCBAQCBib29sIENTU1BhcnNlcjo6cGFyc2VWYWx1ZShTdHlsZVBy
b3BlcnR5U2V0KiBkZWNsYXJhdGlvbiwgaW50IHByb3BlcnR5SWQsIGNvbnN0CiAgICAgICAgIHJl
dHVybiB0cnVlOwogICAgIGlmIChwYXJzZUNvbG9yVmFsdWUoZGVjbGFyYXRpb24sIHByb3BlcnR5
SWQsIHN0cmluZywgaW1wb3J0YW50LCBzdHJpY3QsIGNvbnRleHRTdHlsZVNoZWV0KSkKICAgICAg
ICAgcmV0dXJuIHRydWU7CisgICAgaWYgKHBhcnNlS2V5d29yZFZhbHVlKGRlY2xhcmF0aW9uLCBw
cm9wZXJ0eUlkLCBzdHJpbmcsIGltcG9ydGFudCwgY29udGV4dFN0eWxlU2hlZXQpKQorICAgICAg
ICByZXR1cm4gdHJ1ZTsKICAgICBDU1NQYXJzZXIgcGFyc2VyKHN0cmljdCk7CiAgICAgcmV0dXJu
IHBhcnNlci5wYXJzZVZhbHVlKGRlY2xhcmF0aW9uLCBwcm9wZXJ0eUlkLCBzdHJpbmcsIGltcG9y
dGFudCwgY29udGV4dFN0eWxlU2hlZXQpOwogfQpAQCAtOTMwLDYgKzExMjMsMjMgQEAgYm9vbCBD
U1NQYXJzZXI6OnBhcnNlVmFsdWUoaW50IHByb3BJZCwgYm9vbCBpbXBvcnRhbnQpCiAgICAgYm9v
bCB2YWxpZFByaW1pdGl2ZSA9IGZhbHNlOwogICAgIFJlZlB0cjxDU1NWYWx1ZT4gcGFyc2VkVmFs
dWU7CiAKKyAgICBpZiAoaWQpIHsKKyAgICAgICAgY29uc3QgUHJvcGVydHlNYXBFbnRyeSBwcm9w
ZXJ0eSA9IHByb3BlcnR5Rm9ySUQocHJvcElkKTsKKyAgICAgICAgaWYgKHByb3BlcnR5LmlzVmFs
aWQoKSkgeworICAgICAgICAgICAgaWYgKCFwcm9wZXJ0eS5tYXRjaChpZCkpCisgICAgICAgICAg
ICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgICAgICAgICBwYXJzZWRWYWx1ZSA9IHBhcnNlVmFs
aWRQcmltaXRpdmUoaWQsIHZhbHVlKTsKKyAgICAgICAgICAgIG1fdmFsdWVMaXN0LT5uZXh0KCk7
CisgICAgICAgICAgICBBU1NFUlQoIW1fcGFyc2VkQ2FsY3VsYXRpb24pOworICAgICAgICAgICAg
aWYgKCFtX3ZhbHVlTGlzdC0+Y3VycmVudCgpIHx8IGluU2hvcnRoYW5kKCkpIHsKKyAgICAgICAg
ICAgICAgICBhZGRQcm9wZXJ0eShwcm9wSWQsIHBhcnNlZFZhbHVlLnJlbGVhc2UoKSwgaW1wb3J0
YW50KTsKKyAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgICAgIH0KKyAgICAg
ICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgfQorICAgIH0KKwogICAgIHN3aXRjaCAoc3Rh
dGljX2Nhc3Q8Q1NTUHJvcGVydHlJRD4ocHJvcElkKSkgewogICAgICAgICAvKiBUaGUgY29tbWVu
dCB0byB0aGUgbGVmdCBkZWZpbmVzIGFsbCB2YWxpZCB2YWx1ZSBvZiB0aGlzIHByb3BlcnRpZXMg
YXMgZGVmaW5lZAogICAgICAgICAgKiBpbiBDU1MgMiwgQXBwZW5kaXggRi4gUHJvcGVydHkgaW5k
ZXgKQEAgLTEwMDQsMjUgKzEyMTQsMTAgQEAgYm9vbCBDU1NQYXJzZXI6OnBhcnNlVmFsdWUoaW50
IHByb3BJZCwgYm9vbCBpbXBvcnRhbnQpCiAgICAgICAgICAgICB2YWxpZFByaW1pdGl2ZSA9IChw
cm9wSWQgPT0gQ1NTUHJvcGVydHlXZWJraXRSZWdpb25CcmVha0luc2lkZSkgPyBjc3NSZWdpb25z
RW5hYmxlZCgpIDogdHJ1ZTsKICAgICAgICAgYnJlYWs7CiAKLSAgICBjYXNlIENTU1Byb3BlcnR5
RW1wdHlDZWxsczogICAgICAgICAgLy8gc2hvdyB8IGhpZGUgfCBpbmhlcml0Ci0gICAgICAgIGlm
IChpZCA9PSBDU1NWYWx1ZVNob3cKLSAgICAgICAgICAgIHx8IGlkID09IENTU1ZhbHVlSGlkZSkK
LSAgICAgICAgICAgIHZhbGlkUHJpbWl0aXZlID0gdHJ1ZTsKLSAgICAgICAgYnJlYWs7Ci0KICAg
ICBjYXNlIENTU1Byb3BlcnR5Q29udGVudDogICAgICAgICAgICAgIC8vIFsgPHN0cmluZz4gfCA8
dXJpPiB8IDxjb3VudGVyPiB8IGF0dHIoWCkgfCBvcGVuLXF1b3RlIHwKICAgICAgICAgLy8gY2xv
c2UtcXVvdGUgfCBuby1vcGVuLXF1b3RlIHwgbm8tY2xvc2UtcXVvdGUgXSsgfCBpbmhlcml0CiAg
ICAgICAgIHJldHVybiBwYXJzZUNvbnRlbnQocHJvcElkLCBpbXBvcnRhbnQpOwogCi0gICAgY2Fz
ZSBDU1NQcm9wZXJ0eVdoaXRlU3BhY2U6ICAgICAgICAgIC8vIG5vcm1hbCB8IHByZSB8IG5vd3Jh
cCB8IGluaGVyaXQKLSAgICAgICAgaWYgKGlkID09IENTU1ZhbHVlTm9ybWFsCi0gICAgICAgICAg
ICB8fCBpZCA9PSBDU1NWYWx1ZVByZQotICAgICAgICAgICAgfHwgaWQgPT0gQ1NTVmFsdWVQcmVX
cmFwCi0gICAgICAgICAgICB8fCBpZCA9PSBDU1NWYWx1ZVByZUxpbmUKLSAgICAgICAgICAgIHx8
IGlkID09IENTU1ZhbHVlTm93cmFwKQotICAgICAgICAgICAgdmFsaWRQcmltaXRpdmUgPSB0cnVl
OwotICAgICAgICBicmVhazsKLQogICAgIGNhc2UgQ1NTUHJvcGVydHlDbGlwOiAgICAgICAgICAg
ICAgICAgLy8gPHNoYXBlPiB8IGF1dG8gfCBpbmhlcml0CiAgICAgICAgIGlmIChpZCA9PSBDU1NW
YWx1ZUF1dG8pCiAgICAgICAgICAgICB2YWxpZFByaW1pdGl2ZSA9IHRydWU7CkBAIC0xMDMzLDIy
ICsxMjI4LDYgQEAgYm9vbCBDU1NQYXJzZXI6OnBhcnNlVmFsdWUoaW50IHByb3BJZCwgYm9vbCBp
bXBvcnRhbnQpCiAgICAgLyogU3RhcnQgb2Ygc3VwcG9ydGVkIENTUyBwcm9wZXJ0aWVzIHdpdGgg
dmFsaWRhdGlvbi4gVGhpcyBpcyBuZWVkZWQgZm9yIHBhcnNlU2hvcnRoYW5kIHRvIHdvcmsKICAg
ICAgKiBjb3JyZWN0bHkgYW5kIGFsbG93cyBvcHRpbWl6YXRpb24gaW4gV2ViQ29yZTo6YXBwbHlS
dWxlKC4uKQogICAgICAqLwotICAgIGNhc2UgQ1NTUHJvcGVydHlDYXB0aW9uU2lkZTogICAgICAg
ICAvLyB0b3AgfCBib3R0b20gfCBsZWZ0IHwgcmlnaHQgfCBpbmhlcml0Ci0gICAgICAgIGlmIChp
ZCA9PSBDU1NWYWx1ZUxlZnQgfHwgaWQgPT0gQ1NTVmFsdWVSaWdodCB8fAotICAgICAgICAgICAg
aWQgPT0gQ1NTVmFsdWVUb3AgfHwgaWQgPT0gQ1NTVmFsdWVCb3R0b20pCi0gICAgICAgICAgICB2
YWxpZFByaW1pdGl2ZSA9IHRydWU7Ci0gICAgICAgIGJyZWFrOwotCi0gICAgY2FzZSBDU1NQcm9w
ZXJ0eUJvcmRlckNvbGxhcHNlOiAgICAgIC8vIGNvbGxhcHNlIHwgc2VwYXJhdGUgfCBpbmhlcml0
Ci0gICAgICAgIGlmIChpZCA9PSBDU1NWYWx1ZUNvbGxhcHNlIHx8IGlkID09IENTU1ZhbHVlU2Vw
YXJhdGUpCi0gICAgICAgICAgICB2YWxpZFByaW1pdGl2ZSA9IHRydWU7Ci0gICAgICAgIGJyZWFr
OwotCi0gICAgY2FzZSBDU1NQcm9wZXJ0eVZpc2liaWxpdHk6ICAgICAgICAgICAvLyB2aXNpYmxl
IHwgaGlkZGVuIHwgY29sbGFwc2UgfCBpbmhlcml0Ci0gICAgICAgIGlmIChpZCA9PSBDU1NWYWx1
ZVZpc2libGUgfHwgaWQgPT0gQ1NTVmFsdWVIaWRkZW4gfHwgaWQgPT0gQ1NTVmFsdWVDb2xsYXBz
ZSkKLSAgICAgICAgICAgIHZhbGlkUHJpbWl0aXZlID0gdHJ1ZTsKLSAgICAgICAgYnJlYWs7Ci0K
ICAgICBjYXNlIENTU1Byb3BlcnR5T3ZlcmZsb3c6IHsKICAgICAgICAgU2hvcnRoYW5kU2NvcGUg
c2NvcGUodGhpcywgcHJvcElkKTsKICAgICAgICAgaWYgKG51bSAhPSAxIHx8ICFwYXJzZVZhbHVl
KENTU1Byb3BlcnR5T3ZlcmZsb3dYLCBpbXBvcnRhbnQpKQpAQCAtMTA1Nyw1OSArMTIzNiw2IEBA
IGJvb2wgQ1NTUGFyc2VyOjpwYXJzZVZhbHVlKGludCBwcm9wSWQsIGJvb2wgaW1wb3J0YW50KQog
ICAgICAgICBhZGRQcm9wZXJ0eShDU1NQcm9wZXJ0eU92ZXJmbG93WSwgdmFsdWUsIGltcG9ydGFu
dCk7CiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KLSAgICBjYXNlIENTU1Byb3BlcnR5T3Zl
cmZsb3dYOgotICAgIGNhc2UgQ1NTUHJvcGVydHlPdmVyZmxvd1k6ICAgICAgICAgICAvLyB2aXNp
YmxlIHwgaGlkZGVuIHwgc2Nyb2xsIHwgYXV0byB8IG1hcnF1ZWUgfCBvdmVybGF5IHwgaW5oZXJp
dAotICAgICAgICBpZiAoaWQgPT0gQ1NTVmFsdWVWaXNpYmxlIHx8IGlkID09IENTU1ZhbHVlSGlk
ZGVuIHx8IGlkID09IENTU1ZhbHVlU2Nyb2xsIHx8IGlkID09IENTU1ZhbHVlQXV0byB8fAotICAg
ICAgICAgICAgaWQgPT0gQ1NTVmFsdWVPdmVybGF5IHx8IGlkID09IENTU1ZhbHVlV2Via2l0TWFy
cXVlZSkKLSAgICAgICAgICAgIHZhbGlkUHJpbWl0aXZlID0gdHJ1ZTsKLSAgICAgICAgYnJlYWs7
Ci0KLSAgICBjYXNlIENTU1Byb3BlcnR5TGlzdFN0eWxlUG9zaXRpb246ICAvLyBpbnNpZGUgfCBv
dXRzaWRlIHwgaW5oZXJpdAotICAgICAgICBpZiAoaWQgPT0gQ1NTVmFsdWVJbnNpZGUgfHwgaWQg
PT0gQ1NTVmFsdWVPdXRzaWRlKQotICAgICAgICAgICAgdmFsaWRQcmltaXRpdmUgPSB0cnVlOwot
ICAgICAgICBicmVhazsKLQotICAgIGNhc2UgQ1NTUHJvcGVydHlMaXN0U3R5bGVUeXBlOgotICAg
ICAgICAvLyBTZWUgc2VjdGlvbiBDU1NfUFJPUF9MSVNUX1NUWUxFX1RZUEUgb2YgZmlsZSBDU1NW
YWx1ZUtleXdvcmRzLmluCi0gICAgICAgIC8vIGZvciB0aGUgbGlzdCBvZiBzdXBwb3J0ZWQgbGlz
dC1zdHlsZS10eXBlcy4KLSAgICAgICAgaWYgKChpZCA+PSBDU1NWYWx1ZURpc2MgJiYgaWQgPD0g
Q1NTVmFsdWVLYXRha2FuYUlyb2hhKSB8fCBpZCA9PSBDU1NWYWx1ZU5vbmUpCi0gICAgICAgICAg
ICB2YWxpZFByaW1pdGl2ZSA9IHRydWU7Ci0gICAgICAgIGJyZWFrOwotCi0gICAgY2FzZSBDU1NQ
cm9wZXJ0eURpc3BsYXk6Ci0gICAgICAgIC8vIGlubGluZSB8IGJsb2NrIHwgbGlzdC1pdGVtIHwg
cnVuLWluIHwgaW5saW5lLWJsb2NrIHwgdGFibGUgfAotICAgICAgICAvLyBpbmxpbmUtdGFibGUg
fCB0YWJsZS1yb3ctZ3JvdXAgfCB0YWJsZS1oZWFkZXItZ3JvdXAgfCB0YWJsZS1mb290ZXItZ3Jv
dXAgfCB0YWJsZS1yb3cgfAotICAgICAgICAvLyB0YWJsZS1jb2x1bW4tZ3JvdXAgfCB0YWJsZS1j
b2x1bW4gfCB0YWJsZS1jZWxsIHwgdGFibGUtY2FwdGlvbiB8IC13ZWJraXQtYm94IHwgLXdlYmtp
dC1pbmxpbmUtYm94IHwgbm9uZSB8IGluaGVyaXQKLSAgICAgICAgLy8gLXdlYmtpdC1mbGV4Ym94
IHwgLXdlYmtpdC1pbmxpbmUtZmxleGJveCB8IC13ZWJraXQtZ3JpZCB8IC13ZWJraXQtaW5saW5l
LWdyaWQKLSAgICAgICAgaWYgKChpZCA+PSBDU1NWYWx1ZUlubGluZSAmJiBpZCA8PSBDU1NWYWx1
ZVdlYmtpdElubGluZUZsZXhib3gpIHx8IGlkID09IENTU1ZhbHVlTm9uZSkKLSAgICAgICAgICAg
IHZhbGlkUHJpbWl0aXZlID0gdHJ1ZTsKLSNpZiBFTkFCTEUoQ1NTX0dSSURfTEFZT1VUKQotICAg
ICAgICBpZiAoaWQgPT0gQ1NTVmFsdWVXZWJraXRHcmlkIHx8IGlkID09IENTU1ZhbHVlV2Via2l0
SW5saW5lR3JpZCkKLSAgICAgICAgICAgIHZhbGlkUHJpbWl0aXZlID0gdHJ1ZTsKLSNlbmRpZgot
ICAgICAgICBicmVhazsKLQotICAgIGNhc2UgQ1NTUHJvcGVydHlEaXJlY3Rpb246ICAgICAgICAg
ICAgLy8gbHRyIHwgcnRsIHwgaW5oZXJpdAotICAgICAgICBpZiAoaWQgPT0gQ1NTVmFsdWVMdHIg
fHwgaWQgPT0gQ1NTVmFsdWVSdGwpCi0gICAgICAgICAgICB2YWxpZFByaW1pdGl2ZSA9IHRydWU7
Ci0gICAgICAgIGJyZWFrOwotCi0gICAgY2FzZSBDU1NQcm9wZXJ0eVRleHRUcmFuc2Zvcm06ICAg
ICAgIC8vIGNhcGl0YWxpemUgfCB1cHBlcmNhc2UgfCBsb3dlcmNhc2UgfCBub25lIHwgaW5oZXJp
dAotICAgICAgICBpZiAoKGlkID49IENTU1ZhbHVlQ2FwaXRhbGl6ZSAmJiBpZCA8PSBDU1NWYWx1
ZUxvd2VyY2FzZSkgfHwgaWQgPT0gQ1NTVmFsdWVOb25lKQotICAgICAgICAgICAgdmFsaWRQcmlt
aXRpdmUgPSB0cnVlOwotICAgICAgICBicmVhazsKLQotICAgIGNhc2UgQ1NTUHJvcGVydHlGbG9h
dDogICAgICAgICAgICAgICAgLy8gbGVmdCB8IHJpZ2h0IHwgbm9uZSB8IHBvc2l0aW9uZWQgfCBj
ZW50ZXIgKGZvciBidWdneSBDU1MsIG1hcHMgdG8gbm9uZSkKLSAgICAgICAgaWYgKGlkID09IENT
U1ZhbHVlTGVmdCB8fCBpZCA9PSBDU1NWYWx1ZVJpZ2h0Ci0gICAgICAgICAgICB8fCBpZCA9PSBD
U1NWYWx1ZU5vbmUgfHwgaWQgPT0gQ1NTVmFsdWVDZW50ZXIgfHwgaWQgPT0gQ1NTVmFsdWVXZWJr
aXRQb3NpdGlvbmVkKQotICAgICAgICAgICAgdmFsaWRQcmltaXRpdmUgPSB0cnVlOwotICAgICAg
ICBicmVhazsKLQotICAgIGNhc2UgQ1NTUHJvcGVydHlDbGVhcjogICAgICAgICAgICAgICAgLy8g
bm9uZSB8IGxlZnQgfCByaWdodCB8IGJvdGggfCBpbmhlcml0Ci0gICAgICAgIGlmIChpZCA9PSBD
U1NWYWx1ZU5vbmUgfHwgaWQgPT0gQ1NTVmFsdWVMZWZ0Ci0gICAgICAgICAgICB8fCBpZCA9PSBD
U1NWYWx1ZVJpZ2h0IHx8IGlkID09IENTU1ZhbHVlQm90aCkKLSAgICAgICAgICAgIHZhbGlkUHJp
bWl0aXZlID0gdHJ1ZTsKLSAgICAgICAgYnJlYWs7CiAKICAgICBjYXNlIENTU1Byb3BlcnR5VGV4
dEFsaWduOgogICAgICAgICAvLyBsZWZ0IHwgcmlnaHQgfCBjZW50ZXIgfCBqdXN0aWZ5IHwgd2Vi
a2l0X2xlZnQgfCB3ZWJraXRfcmlnaHQgfCB3ZWJraXRfY2VudGVyIHwgd2Via2l0X21hdGNoX3Bh
cmVudCB8CkBAIC0xMTE5LDI0ICsxMjQ1LDYgQEAgYm9vbCBDU1NQYXJzZXI6OnBhcnNlVmFsdWUo
aW50IHByb3BJZCwgYm9vbCBpbXBvcnRhbnQpCiAgICAgICAgICAgICB2YWxpZFByaW1pdGl2ZSA9
IHRydWU7CiAgICAgICAgIGJyZWFrOwogCi0gICAgY2FzZSBDU1NQcm9wZXJ0eU91dGxpbmVTdHls
ZTogICAgICAgIC8vICg8Ym9yZGVyLXN0eWxlPiBleGNlcHQgaGlkZGVuKSB8IGF1dG8gfCBpbmhl
cml0Ci0gICAgICAgIGlmIChpZCA9PSBDU1NWYWx1ZUF1dG8gfHwgaWQgPT0gQ1NTVmFsdWVOb25l
IHx8IChpZCA+PSBDU1NWYWx1ZUluc2V0ICYmIGlkIDw9IENTU1ZhbHVlRG91YmxlKSkKLSAgICAg
ICAgICAgIHZhbGlkUHJpbWl0aXZlID0gdHJ1ZTsKLSAgICAgICAgYnJlYWs7Ci0KLSAgICBjYXNl
IENTU1Byb3BlcnR5Qm9yZGVyVG9wU3R5bGU6ICAgICAvLy8vIDxib3JkZXItc3R5bGU+IHwgaW5o
ZXJpdAotICAgIGNhc2UgQ1NTUHJvcGVydHlCb3JkZXJSaWdodFN0eWxlOiAgIC8vICAgRGVmaW5l
ZCBhczogICAgbm9uZSB8IGhpZGRlbiB8IGRvdHRlZCB8IGRhc2hlZCB8Ci0gICAgY2FzZSBDU1NQ
cm9wZXJ0eUJvcmRlckJvdHRvbVN0eWxlOiAgLy8gICBzb2xpZCB8IGRvdWJsZSB8IGdyb292ZSB8
IHJpZGdlIHwgaW5zZXQgfCBvdXRzZXQKLSAgICBjYXNlIENTU1Byb3BlcnR5Qm9yZGVyTGVmdFN0
eWxlOgotICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRCb3JkZXJTdGFydFN0eWxlOgotICAgIGNh
c2UgQ1NTUHJvcGVydHlXZWJraXRCb3JkZXJFbmRTdHlsZToKLSAgICBjYXNlIENTU1Byb3BlcnR5
V2Via2l0Qm9yZGVyQmVmb3JlU3R5bGU6Ci0gICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdEJvcmRl
ckFmdGVyU3R5bGU6Ci0gICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdENvbHVtblJ1bGVTdHlsZToK
LSAgICAgICAgaWYgKGlkID49IENTU1ZhbHVlTm9uZSAmJiBpZCA8PSBDU1NWYWx1ZURvdWJsZSkK
LSAgICAgICAgICAgIHZhbGlkUHJpbWl0aXZlID0gdHJ1ZTsKLSAgICAgICAgYnJlYWs7Ci0KICAg
ICBjYXNlIENTU1Byb3BlcnR5Rm9udFdlaWdodDogIC8vIG5vcm1hbCB8IGJvbGQgfCBib2xkZXIg
fCBsaWdodGVyIHwgMTAwIHwgMjAwIHwgMzAwIHwgNDAwIHwgNTAwIHwgNjAwIHwgNzAwIHwgODAw
IHwgOTAwIHwgaW5oZXJpdAogICAgICAgICByZXR1cm4gcGFyc2VGb250V2VpZ2h0KGltcG9ydGFu
dCk7CiAKQEAgLTEzNTEsMjEgKzE0NTksNiBAQCBib29sIENTU1BhcnNlcjo6cGFyc2VWYWx1ZShp
bnQgcHJvcElkLCBib29sIGltcG9ydGFudCkKICAgICAgICAgICAgIHZhbGlkUHJpbWl0aXZlID0g
dmFsaWRVbml0KHZhbHVlLCBGTGVuZ3RoLCBtX3N0cmljdCk7CiAgICAgICAgIGJyZWFrOwogCi0g
ICAgY2FzZSBDU1NQcm9wZXJ0eVdvcmRCcmVhazogICAgICAgICAgLy8gbm9ybWFsIHwgYnJlYWst
YWxsIHwgYnJlYWstd29yZCAodGhpcyBpcyBhIGN1c3RvbSBleHRlbnNpb24pCi0gICAgICAgIGlm
IChpZCA9PSBDU1NWYWx1ZU5vcm1hbCB8fCBpZCA9PSBDU1NWYWx1ZUJyZWFrQWxsIHx8IGlkID09
IENTU1ZhbHVlQnJlYWtXb3JkKQotICAgICAgICAgICAgdmFsaWRQcmltaXRpdmUgPSB0cnVlOwot
ICAgICAgICBicmVhazsKLQotICAgIGNhc2UgQ1NTUHJvcGVydHlXb3JkV3JhcDogICAgICAgICAg
IC8vIG5vcm1hbCB8IGJyZWFrLXdvcmQKLSAgICAgICAgaWYgKGlkID09IENTU1ZhbHVlTm9ybWFs
IHx8IGlkID09IENTU1ZhbHVlQnJlYWtXb3JkKQotICAgICAgICAgICAgdmFsaWRQcmltaXRpdmUg
PSB0cnVlOwotICAgICAgICBicmVhazsKLSAgICBjYXNlIENTU1Byb3BlcnR5U3BlYWs6ICAgICAg
ICAgICAvLyBub25lIHwgbm9ybWFsIHwgc3BlbGwtb3V0IHwgZGlnaXRzIHwgbGl0ZXJhbC1wdW5j
dHVhdGlvbiB8IG5vLXB1bmN0dWF0aW9uIHwgaW5oZXJpdAotICAgICAgICBpZiAoaWQgPT0gQ1NT
VmFsdWVOb25lIHx8IGlkID09IENTU1ZhbHVlTm9ybWFsIHx8IGlkID09IENTU1ZhbHVlU3BlbGxP
dXQgfHwgaWQgPT0gQ1NTVmFsdWVEaWdpdHMKLSAgICAgICAgICAgIHx8IGlkID09IENTU1ZhbHVl
TGl0ZXJhbFB1bmN0dWF0aW9uIHx8IGlkID09IENTU1ZhbHVlTm9QdW5jdHVhdGlvbikKLSAgICAg
ICAgICAgIHZhbGlkUHJpbWl0aXZlID0gdHJ1ZTsKLSAgICAgICAgYnJlYWs7Ci0KICAgICBjYXNl
IENTU1Byb3BlcnR5VGV4dEluZGVudDogICAgICAgICAgLy8gPGxlbmd0aD4gfCA8cGVyY2VudGFn
ZT4gfCBpbmhlcml0CiAgICAgICAgIHZhbGlkUHJpbWl0aXZlID0gKCFpZCAmJiB2YWxpZFVuaXQo
dmFsdWUsIEZMZW5ndGggfCBGUGVyY2VudCwgbV9zdHJpY3QpKTsKICAgICAgICAgYnJlYWs7CkBA
IC0xNDA4LDExICsxNTAxLDYgQEAgYm9vbCBDU1NQYXJzZXI6OnBhcnNlVmFsdWUoaW50IHByb3BJ
ZCwgYm9vbCBpbXBvcnRhbnQpCiAgICAgICAgICAgICB2YWxpZFByaW1pdGl2ZSA9ICh2YWxpZFVu
aXQodmFsdWUsIEZMZW5ndGggfCBGUGVyY2VudCB8IEZOb25OZWcsIG1fc3RyaWN0KSk7CiAgICAg
ICAgIGJyZWFrOwogCi0gICAgY2FzZSBDU1NQcm9wZXJ0eUZvbnRTdHlsZTogICAgICAgICAgIC8v
IG5vcm1hbCB8IGl0YWxpYyB8IG9ibGlxdWUgfCBpbmhlcml0Ci0gICAgICAgIGlmIChpZCA9PSBD
U1NWYWx1ZU5vcm1hbCB8fCBpZCA9PSBDU1NWYWx1ZUl0YWxpYyB8fCBpZCA9PSBDU1NWYWx1ZU9i
bGlxdWUpCi0gICAgICAgICAgICB2YWxpZFByaW1pdGl2ZSA9IHRydWU7Ci0gICAgICAgIGJyZWFr
OwotCiAgICAgY2FzZSBDU1NQcm9wZXJ0eUZvbnRWYXJpYW50OiAgICAgICAgIC8vIG5vcm1hbCB8
IHNtYWxsLWNhcHMgfCBpbmhlcml0CiAgICAgICAgIHJldHVybiBwYXJzZUZvbnRWYXJpYW50KGlt
cG9ydGFudCk7CiAKQEAgLTE1MjgsMTEgKzE2MTYsNiBAQCBib29sIENTU1BhcnNlcjo6cGFyc2VW
YWx1ZShpbnQgcHJvcElkLCBib29sIGltcG9ydGFudCkKICAgICAgICAgICAgIHZhbGlkUHJpbWl0
aXZlID0gKCFpZCAmJiB2YWxpZFVuaXQodmFsdWUsIEZOdW1iZXIgfCBGUGVyY2VudCB8IEZOb25O
ZWcsIHRydWUpKTsKICAgICAgICAgYnJlYWs7CiAKLSAgICBjYXNlIENTU1Byb3BlcnR5VGFibGVM
YXlvdXQ6ICAgICAgICAgLy8gYXV0byB8IGZpeGVkIHwgaW5oZXJpdAotICAgICAgICBpZiAoaWQg
PT0gQ1NTVmFsdWVBdXRvIHx8IGlkID09IENTU1ZhbHVlRml4ZWQpCi0gICAgICAgICAgICB2YWxp
ZFByaW1pdGl2ZSA9IHRydWU7Ci0gICAgICAgIGJyZWFrOwotCiAgICAgY2FzZSBDU1NQcm9wZXJ0
eVNyYzogIC8vIE9ubHkgdXNlZCB3aXRoaW4gQGZvbnQtZmFjZSwgc28gY2Fubm90IHVzZSBpbmhl
cml0IHwgaW5pdGlhbCBvciBiZSAhaW1wb3J0YW50LiAgVGhpcyBpcyBhIGxpc3Qgb2YgdXJscyBv
ciBsb2NhbCByZWZlcmVuY2VzLgogICAgICAgICByZXR1cm4gcGFyc2VGb250RmFjZVNyYygpOwog
CkBAIC0xNTQwLDEwICsxNjIzLDYgQEAgYm9vbCBDU1NQYXJzZXI6OnBhcnNlVmFsdWUoaW50IHBy
b3BJZCwgYm9vbCBpbXBvcnRhbnQpCiAgICAgICAgIHJldHVybiBwYXJzZUZvbnRGYWNlVW5pY29k
ZVJhbmdlKCk7CiAKICAgICAvKiBDU1MzIHByb3BlcnRpZXMgKi8KLSAgICBjYXNlIENTU1Byb3Bl
cnR5V2Via2l0QXBwZWFyYW5jZToKLSAgICAgICAgaWYgKChpZCA+PSBDU1NWYWx1ZUNoZWNrYm94
ICYmIGlkIDw9IENTU1ZhbHVlVGV4dGFyZWEpIHx8IGlkID09IENTU1ZhbHVlTm9uZSkKLSAgICAg
ICAgICAgIHZhbGlkUHJpbWl0aXZlID0gdHJ1ZTsKLSAgICAgICAgYnJlYWs7CiAKICAgICBjYXNl
IENTU1Byb3BlcnR5Qm9yZGVySW1hZ2U6IHsKICAgICAgICAgUmVmUHRyPENTU1ZhbHVlPiByZXN1
bHQ7CkBAIC0xNjUxLDI5ICsxNzMwLDYgQEAgYm9vbCBDU1NQYXJzZXI6OnBhcnNlVmFsdWUoaW50
IHByb3BJZCwgYm9vbCBpbXBvcnRhbnQpCiAgICAgY2FzZSBDU1NQcm9wZXJ0eU9wYWNpdHk6CiAg
ICAgICAgIHZhbGlkUHJpbWl0aXZlID0gdmFsaWRVbml0KHZhbHVlLCBGTnVtYmVyLCBtX3N0cmlj
dCk7CiAgICAgICAgIGJyZWFrOwotICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRCb3hBbGlnbjoK
LSAgICAgICAgaWYgKGlkID09IENTU1ZhbHVlU3RyZXRjaCB8fCBpZCA9PSBDU1NWYWx1ZVN0YXJ0
IHx8IGlkID09IENTU1ZhbHVlRW5kIHx8Ci0gICAgICAgICAgICBpZCA9PSBDU1NWYWx1ZUNlbnRl
ciB8fCBpZCA9PSBDU1NWYWx1ZUJhc2VsaW5lKQotICAgICAgICAgICAgdmFsaWRQcmltaXRpdmUg
PSB0cnVlOwotICAgICAgICBicmVhazsKLSAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0Qm94RGly
ZWN0aW9uOgotICAgICAgICBpZiAoaWQgPT0gQ1NTVmFsdWVOb3JtYWwgfHwgaWQgPT0gQ1NTVmFs
dWVSZXZlcnNlKQotICAgICAgICAgICAgdmFsaWRQcmltaXRpdmUgPSB0cnVlOwotICAgICAgICBi
cmVhazsKLSAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0Qm94TGluZXM6Ci0gICAgICAgIGlmIChp
ZCA9PSBDU1NWYWx1ZVNpbmdsZSB8fCBpZCA9PSBDU1NWYWx1ZU11bHRpcGxlKQotICAgICAgICAg
ICAgdmFsaWRQcmltaXRpdmUgPSB0cnVlOwotICAgICAgICBicmVhazsKLSAgICBjYXNlIENTU1By
b3BlcnR5V2Via2l0Qm94T3JpZW50OgotICAgICAgICBpZiAoaWQgPT0gQ1NTVmFsdWVIb3Jpem9u
dGFsIHx8IGlkID09IENTU1ZhbHVlVmVydGljYWwgfHwKLSAgICAgICAgICAgIGlkID09IENTU1Zh
bHVlSW5saW5lQXhpcyB8fCBpZCA9PSBDU1NWYWx1ZUJsb2NrQXhpcykKLSAgICAgICAgICAgIHZh
bGlkUHJpbWl0aXZlID0gdHJ1ZTsKLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBDU1NQcm9wZXJ0
eVdlYmtpdEJveFBhY2s6Ci0gICAgICAgIGlmIChpZCA9PSBDU1NWYWx1ZVN0YXJ0IHx8IGlkID09
IENTU1ZhbHVlRW5kIHx8Ci0gICAgICAgICAgICBpZCA9PSBDU1NWYWx1ZUNlbnRlciB8fCBpZCA9
PSBDU1NWYWx1ZUp1c3RpZnkpCi0gICAgICAgICAgICB2YWxpZFByaW1pdGl2ZSA9IHRydWU7Ci0g
ICAgICAgIGJyZWFrOwogICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRCb3hGbGV4OgogICAgICAg
ICB2YWxpZFByaW1pdGl2ZSA9IHZhbGlkVW5pdCh2YWx1ZSwgRk51bWJlciwgbV9zdHJpY3QpOwog
ICAgICAgICBicmVhazsKQEAgLTE2ODEsMTIgKzE3MzcsNiBAQCBib29sIENTU1BhcnNlcjo6cGFy
c2VWYWx1ZShpbnQgcHJvcElkLCBib29sIGltcG9ydGFudCkKICAgICBjYXNlIENTU1Byb3BlcnR5
V2Via2l0Qm94T3JkaW5hbEdyb3VwOgogICAgICAgICB2YWxpZFByaW1pdGl2ZSA9IHZhbGlkVW5p
dCh2YWx1ZSwgRkludGVnZXIgfCBGTm9uTmVnLCB0cnVlKTsKICAgICAgICAgYnJlYWs7Ci0gICAg
Y2FzZSBDU1NQcm9wZXJ0eUJveFNpemluZzoKLSAgICAgICAgdmFsaWRQcmltaXRpdmUgPSBpZCA9
PSBDU1NWYWx1ZUJvcmRlckJveCB8fCBpZCA9PSBDU1NWYWx1ZUNvbnRlbnRCb3g7Ci0gICAgICAg
IGJyZWFrOwotICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRDb2xvckNvcnJlY3Rpb246Ci0gICAg
ICAgIHZhbGlkUHJpbWl0aXZlID0gaWQgPT0gQ1NTVmFsdWVTcmdiIHx8IGlkID09IENTU1ZhbHVl
RGVmYXVsdDsKLSAgICAgICAgYnJlYWs7CiAjaWYgRU5BQkxFKENTU19GSUxURVJTKQogICAgIGNh
c2UgQ1NTUHJvcGVydHlXZWJraXRGaWx0ZXI6CiAgICAgICAgIGlmIChpZCA9PSBDU1NWYWx1ZU5v
bmUpCkBAIC0xNzA5LDE4ICsxNzU5LDYgQEAgYm9vbCBDU1NQYXJzZXI6OnBhcnNlVmFsdWUoaW50
IHByb3BJZCwgYm9vbCBpbXBvcnRhbnQpCiAgICAgICAgICAgICBtX3ZhbHVlTGlzdC0+bmV4dCgp
OwogICAgICAgICB9CiAgICAgICAgIGJyZWFrOwotICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRG
bGV4UGFjazoKLSAgICAgICAgdmFsaWRQcmltaXRpdmUgPSBpZCA9PSBDU1NWYWx1ZVN0YXJ0IHx8
IGlkID09IENTU1ZhbHVlRW5kIHx8IGlkID09IENTU1ZhbHVlQ2VudGVyIHx8IGlkID09IENTU1Zh
bHVlSnVzdGlmeSB8fCBpZCA9PSBDU1NWYWx1ZURpc3RyaWJ1dGU7Ci0gICAgICAgIGJyZWFrOwot
ICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRGbGV4QWxpZ246Ci0gICAgICAgIHZhbGlkUHJpbWl0
aXZlID0gaWQgPT0gQ1NTVmFsdWVTdGFydCB8fCBpZCA9PSBDU1NWYWx1ZUVuZCB8fCBpZCA9PSBD
U1NWYWx1ZUNlbnRlciB8fCBpZCA9PSBDU1NWYWx1ZUJhc2VsaW5lIHx8IGlkID09IENTU1ZhbHVl
U3RyZXRjaDsKLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdEZsZXhJ
dGVtQWxpZ246Ci0gICAgICAgIHZhbGlkUHJpbWl0aXZlID0gaWQgPT0gQ1NTVmFsdWVBdXRvIHx8
IGlkID09IENTU1ZhbHVlU3RhcnQgfHwgaWQgPT0gQ1NTVmFsdWVFbmQgfHwgaWQgPT0gQ1NTVmFs
dWVDZW50ZXIgfHwgaWQgPT0gQ1NTVmFsdWVCYXNlbGluZSB8fCBpZCA9PSBDU1NWYWx1ZVN0cmV0
Y2g7Ci0gICAgICAgIGJyZWFrOwotICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRGbGV4RGlyZWN0
aW9uOgotICAgICAgICB2YWxpZFByaW1pdGl2ZSA9IGlkID09IENTU1ZhbHVlUm93IHx8IGlkID09
IENTU1ZhbHVlUm93UmV2ZXJzZSB8fCBpZCA9PSBDU1NWYWx1ZUNvbHVtbiB8fCBpZCA9PSBDU1NW
YWx1ZUNvbHVtblJldmVyc2U7Ci0gICAgICAgIGJyZWFrOwogICAgIGNhc2UgQ1NTUHJvcGVydHlX
ZWJraXRGbGV4V3JhcDoKICAgICAgICAgdmFsaWRQcmltaXRpdmUgPSBpZCA9PSBDU1NWYWx1ZU5v
bmUgfHwgaWQgPT0gQ1NTVmFsdWVXcmFwIHx8IGlkID09IENTU1ZhbHVlV3JhcFJldmVyc2U7CiAg
ICAgICAgIGJyZWFrOwpAQCAtMTczMCwyMiArMTc2OCwxMiBAQCBib29sIENTU1BhcnNlcjo6cGFy
c2VWYWx1ZShpbnQgcHJvcElkLCBib29sIGltcG9ydGFudCkKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIENTU1Byb3BlcnR5V2Via2l0TWFycXVlZVN0eWxlLCBDU1NQcm9wZXJ0
eVdlYmtpdE1hcnF1ZWVTcGVlZCB9OwogICAgICAgICByZXR1cm4gcGFyc2VTaG9ydGhhbmQocHJv
cElkLCBwcm9wZXJ0aWVzLCA1LCBpbXBvcnRhbnQpOwogICAgIH0KLSAgICBjYXNlIENTU1Byb3Bl
cnR5V2Via2l0TWFycXVlZURpcmVjdGlvbjoKLSAgICAgICAgaWYgKGlkID09IENTU1ZhbHVlRm9y
d2FyZHMgfHwgaWQgPT0gQ1NTVmFsdWVCYWNrd2FyZHMgfHwgaWQgPT0gQ1NTVmFsdWVBaGVhZCB8
fAotICAgICAgICAgICAgaWQgPT0gQ1NTVmFsdWVSZXZlcnNlIHx8IGlkID09IENTU1ZhbHVlTGVm
dCB8fCBpZCA9PSBDU1NWYWx1ZVJpZ2h0IHx8IGlkID09IENTU1ZhbHVlRG93biB8fAotICAgICAg
ICAgICAgaWQgPT0gQ1NTVmFsdWVVcCB8fCBpZCA9PSBDU1NWYWx1ZUF1dG8pCi0gICAgICAgICAg
ICB2YWxpZFByaW1pdGl2ZSA9IHRydWU7Ci0gICAgICAgIGJyZWFrOwogICAgIGNhc2UgQ1NTUHJv
cGVydHlXZWJraXRNYXJxdWVlSW5jcmVtZW50OgogICAgICAgICBpZiAoaWQgPT0gQ1NTVmFsdWVT
bWFsbCB8fCBpZCA9PSBDU1NWYWx1ZUxhcmdlIHx8IGlkID09IENTU1ZhbHVlTWVkaXVtKQogICAg
ICAgICAgICAgdmFsaWRQcmltaXRpdmUgPSB0cnVlOwogICAgICAgICBlbHNlCiAgICAgICAgICAg
ICB2YWxpZFByaW1pdGl2ZSA9IHZhbGlkVW5pdCh2YWx1ZSwgRkxlbmd0aCB8IEZQZXJjZW50LCBt
X3N0cmljdCk7CiAgICAgICAgIGJyZWFrOwotICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRNYXJx
dWVlU3R5bGU6Ci0gICAgICAgIGlmIChpZCA9PSBDU1NWYWx1ZU5vbmUgfHwgaWQgPT0gQ1NTVmFs
dWVTbGlkZSB8fCBpZCA9PSBDU1NWYWx1ZVNjcm9sbCB8fCBpZCA9PSBDU1NWYWx1ZUFsdGVybmF0
ZSkKLSAgICAgICAgICAgIHZhbGlkUHJpbWl0aXZlID0gdHJ1ZTsKLSAgICAgICAgYnJlYWs7CiAg
ICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdE1hcnF1ZWVSZXBldGl0aW9uOgogICAgICAgICBpZiAo
aWQgPT0gQ1NTVmFsdWVJbmZpbml0ZSkKICAgICAgICAgICAgIHZhbGlkUHJpbWl0aXZlID0gdHJ1
ZTsKQEAgLTE3NzAsMjMgKzE3OTgsNiBAQCBib29sIENTU1BhcnNlcjo6cGFyc2VWYWx1ZShpbnQg
cHJvcElkLCBib29sIGltcG9ydGFudCkKICAgICAgICAgaWYgKGNzc1JlZ2lvbnNFbmFibGVkKCkg
JiYgKGlkID09IENTU1ZhbHVlQXV0byB8fCBpZCA9PSBDU1NWYWx1ZUJyZWFrKSkKICAgICAgICAg
ICAgIHZhbGlkUHJpbWl0aXZlID0gdHJ1ZTsKICAgICAgICAgYnJlYWs7Ci0KLSAgICBjYXNlIENT
U1Byb3BlcnR5V2Via2l0VXNlckRyYWc6IC8vIGF1dG8gfCBub25lIHwgZWxlbWVudAotICAgICAg
ICBpZiAoaWQgPT0gQ1NTVmFsdWVBdXRvIHx8IGlkID09IENTU1ZhbHVlTm9uZSB8fCBpZCA9PSBD
U1NWYWx1ZUVsZW1lbnQpCi0gICAgICAgICAgICB2YWxpZFByaW1pdGl2ZSA9IHRydWU7Ci0gICAg
ICAgIGJyZWFrOwotICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRVc2VyTW9kaWZ5OiAvLyByZWFk
LW9ubHkgfCByZWFkLXdyaXRlCi0gICAgICAgIGlmIChpZCA9PSBDU1NWYWx1ZVJlYWRPbmx5IHx8
IGlkID09IENTU1ZhbHVlUmVhZFdyaXRlIHx8IGlkID09IENTU1ZhbHVlUmVhZFdyaXRlUGxhaW50
ZXh0T25seSkKLSAgICAgICAgICAgIHZhbGlkUHJpbWl0aXZlID0gdHJ1ZTsKLSAgICAgICAgYnJl
YWs7Ci0gICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdFVzZXJTZWxlY3Q6IC8vIGF1dG8gfCBub25l
IHwgdGV4dAotICAgICAgICBpZiAoaWQgPT0gQ1NTVmFsdWVBdXRvIHx8IGlkID09IENTU1ZhbHVl
Tm9uZSB8fCBpZCA9PSBDU1NWYWx1ZVRleHQpCi0gICAgICAgICAgICB2YWxpZFByaW1pdGl2ZSA9
IHRydWU7Ci0gICAgICAgIGJyZWFrOwotICAgIGNhc2UgQ1NTUHJvcGVydHlUZXh0T3ZlcmZsb3c6
IC8vIGNsaXAgfCBlbGxpcHNpcwotICAgICAgICBpZiAoaWQgPT0gQ1NTVmFsdWVDbGlwIHx8IGlk
ID09IENTU1ZhbHVlRWxsaXBzaXMpCi0gICAgICAgICAgICB2YWxpZFByaW1pdGl2ZSA9IHRydWU7
Ci0gICAgICAgIGJyZWFrOwogICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRUcmFuc2Zvcm06CiAg
ICAgICAgIGlmIChpZCA9PSBDU1NWYWx1ZU5vbmUpCiAgICAgICAgICAgICB2YWxpZFByaW1pdGl2
ZSA9IHRydWU7CkBAIC0xODE3LDE4ICsxODI4LDYgQEAgYm9vbCBDU1NQYXJzZXI6OnBhcnNlVmFs
dWUoaW50IHByb3BJZCwgYm9vbCBpbXBvcnRhbnQpCiAgICAgICAgIH0KICAgICAgICAgcmV0dXJu
IGZhbHNlOwogICAgIH0KLSAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0VHJhbnNmb3JtU3R5bGU6
Ci0gICAgICAgIGlmICh2YWx1ZS0+aWQgPT0gQ1NTVmFsdWVGbGF0IHx8IHZhbHVlLT5pZCA9PSBD
U1NWYWx1ZVByZXNlcnZlM2QpCi0gICAgICAgICAgICB2YWxpZFByaW1pdGl2ZSA9IHRydWU7Ci0g
ICAgICAgIGJyZWFrOwotICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRCYWNrZmFjZVZpc2liaWxp
dHk6Ci0gICAgICAgIGlmICh2YWx1ZS0+aWQgPT0gQ1NTVmFsdWVWaXNpYmxlIHx8IHZhbHVlLT5p
ZCA9PSBDU1NWYWx1ZUhpZGRlbikKLSAgICAgICAgICAgIHZhbGlkUHJpbWl0aXZlID0gdHJ1ZTsK
LSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdFByaW50Q29sb3JBZGp1
c3Q6Ci0gICAgICAgIGlmICh2YWx1ZS0+aWQgPT0gQ1NTVmFsdWVFeGFjdCB8fCB2YWx1ZS0+aWQg
PT0gQ1NTVmFsdWVFY29ub215KQotICAgICAgICAgICAgdmFsaWRQcmltaXRpdmUgPSB0cnVlOwot
ICAgICAgICBicmVhazsKICAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0UGVyc3BlY3RpdmU6CiAg
ICAgICAgIGlmIChpZCA9PSBDU1NWYWx1ZU5vbmUpCiAgICAgICAgICAgICB2YWxpZFByaW1pdGl2
ZSA9IHRydWU7CkBAIC0xOTA2LDMyICsxOTA1LDYgQEAgYm9vbCBDU1NQYXJzZXI6OnBhcnNlVmFs
dWUoaW50IHByb3BJZCwgYm9vbCBpbXBvcnRhbnQpCiAgICAgICAgIH0KICAgICAgICAgcmV0dXJu
IGZhbHNlOwogICAgIH0KLSAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0TWFyZ2luQmVmb3JlQ29s
bGFwc2U6Ci0gICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdE1hcmdpbkFmdGVyQ29sbGFwc2U6Ci0g
ICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdE1hcmdpblRvcENvbGxhcHNlOgotICAgIGNhc2UgQ1NT
UHJvcGVydHlXZWJraXRNYXJnaW5Cb3R0b21Db2xsYXBzZToKLSAgICAgICAgaWYgKGlkID09IENT
U1ZhbHVlQ29sbGFwc2UgfHwgaWQgPT0gQ1NTVmFsdWVTZXBhcmF0ZSB8fCBpZCA9PSBDU1NWYWx1
ZURpc2NhcmQpCi0gICAgICAgICAgICB2YWxpZFByaW1pdGl2ZSA9IHRydWU7Ci0gICAgICAgIGJy
ZWFrOwotICAgIGNhc2UgQ1NTUHJvcGVydHlUZXh0TGluZVRocm91Z2hNb2RlOgotICAgIGNhc2Ug
Q1NTUHJvcGVydHlUZXh0T3ZlcmxpbmVNb2RlOgotICAgIGNhc2UgQ1NTUHJvcGVydHlUZXh0VW5k
ZXJsaW5lTW9kZToKLSAgICAgICAgaWYgKGlkID09IENTU1ZhbHVlQ29udGludW91cyB8fCBpZCA9
PSBDU1NWYWx1ZVNraXBXaGl0ZVNwYWNlKQotICAgICAgICAgICAgdmFsaWRQcmltaXRpdmUgPSB0
cnVlOwotICAgICAgICBicmVhazsKLSAgICBjYXNlIENTU1Byb3BlcnR5VGV4dExpbmVUaHJvdWdo
U3R5bGU6Ci0gICAgY2FzZSBDU1NQcm9wZXJ0eVRleHRPdmVybGluZVN0eWxlOgotICAgIGNhc2Ug
Q1NTUHJvcGVydHlUZXh0VW5kZXJsaW5lU3R5bGU6Ci0gICAgICAgIGlmIChpZCA9PSBDU1NWYWx1
ZU5vbmUgfHwgaWQgPT0gQ1NTVmFsdWVTb2xpZCB8fCBpZCA9PSBDU1NWYWx1ZURvdWJsZSB8fAot
ICAgICAgICAgICAgaWQgPT0gQ1NTVmFsdWVEYXNoZWQgfHwgaWQgPT0gQ1NTVmFsdWVEb3REYXNo
IHx8IGlkID09IENTU1ZhbHVlRG90RG90RGFzaCB8fAotICAgICAgICAgICAgaWQgPT0gQ1NTVmFs
dWVXYXZlKQotICAgICAgICAgICAgdmFsaWRQcmltaXRpdmUgPSB0cnVlOwotICAgICAgICBicmVh
azsKLSAgICBjYXNlIENTU1Byb3BlcnR5VGV4dFJlbmRlcmluZzogLy8gYXV0byB8IG9wdGltaXpl
U3BlZWQgfCBvcHRpbWl6ZUxlZ2liaWxpdHkgfCBnZW9tZXRyaWNQcmVjaXNpb24KLSAgICAgICAg
aWYgKGlkID09IENTU1ZhbHVlQXV0byB8fCBpZCA9PSBDU1NWYWx1ZU9wdGltaXplc3BlZWQgfHwg
aWQgPT0gQ1NTVmFsdWVPcHRpbWl6ZWxlZ2liaWxpdHkKLSAgICAgICAgICAgIHx8IGlkID09IENT
U1ZhbHVlR2VvbWV0cmljcHJlY2lzaW9uKQotICAgICAgICAgICAgdmFsaWRQcmltaXRpdmUgPSB0
cnVlOwotICAgICAgICBicmVhazsKICAgICBjYXNlIENTU1Byb3BlcnR5VGV4dExpbmVUaHJvdWdo
V2lkdGg6CiAgICAgY2FzZSBDU1NQcm9wZXJ0eVRleHRPdmVybGluZVdpZHRoOgogICAgIGNhc2Ug
Q1NTUHJvcGVydHlUZXh0VW5kZXJsaW5lV2lkdGg6CkBAIC0xOTQxLDEwICsxOTE0LDYgQEAgYm9v
bCBDU1NQYXJzZXI6OnBhcnNlVmFsdWUoaW50IHByb3BJZCwgYm9vbCBpbXBvcnRhbnQpCiAgICAg
ICAgIGVsc2UKICAgICAgICAgICAgIHZhbGlkUHJpbWl0aXZlID0gIWlkICYmIHZhbGlkVW5pdCh2
YWx1ZSwgRk51bWJlciB8IEZMZW5ndGggfCBGUGVyY2VudCwgbV9zdHJpY3QpOwogICAgICAgICBi
cmVhazsKLSAgICBjYXNlIENTU1Byb3BlcnR5UmVzaXplOiAvLyBub25lIHwgYm90aCB8IGhvcml6
b250YWwgfCB2ZXJ0aWNhbCB8IGF1dG8KLSAgICAgICAgaWYgKGlkID09IENTU1ZhbHVlTm9uZSB8
fCBpZCA9PSBDU1NWYWx1ZUJvdGggfHwgaWQgPT0gQ1NTVmFsdWVIb3Jpem9udGFsIHx8IGlkID09
IENTU1ZhbHVlVmVydGljYWwgfHwgaWQgPT0gQ1NTVmFsdWVBdXRvKQotICAgICAgICAgICAgdmFs
aWRQcmltaXRpdmUgPSB0cnVlOwotICAgICAgICBicmVhazsKICAgICBjYXNlIENTU1Byb3BlcnR5
V2Via2l0Q29sdW1uQ291bnQ6CiAgICAgICAgIGlmIChpZCA9PSBDU1NWYWx1ZUF1dG8pCiAgICAg
ICAgICAgICB2YWxpZFByaW1pdGl2ZSA9IHRydWU7CkBAIC0xOTczLDE3ICsxOTQyLDYgQEAgYm9v
bCBDU1NQYXJzZXI6OnBhcnNlVmFsdWUoaW50IHByb3BJZCwgYm9vbCBpbXBvcnRhbnQpCiAgICAg
ICAgIGVsc2UgLy8gQWx3YXlzIHBhcnNlIHRoaXMgcHJvcGVydHkgaW4gc3RyaWN0IG1vZGUsIHNp
bmNlIGl0IHdvdWxkIGJlIGFtYmlndW91cyBvdGhlcndpc2Ugd2hlbiB1c2VkIGluIHRoZSAnY29s
dW1ucycgc2hvcnRoYW5kIHByb3BlcnR5LgogICAgICAgICAgICAgdmFsaWRQcmltaXRpdmUgPSB2
YWxpZFVuaXQodmFsdWUsIEZMZW5ndGgsIHRydWUpOwogICAgICAgICBicmVhazsKLSAgICBjYXNl
IENTU1Byb3BlcnR5UG9pbnRlckV2ZW50czoKLSAgICAgICAgLy8gbm9uZSB8IHZpc2libGVQYWlu
dGVkIHwgdmlzaWJsZUZpbGwgfCB2aXNpYmxlU3Ryb2tlIHwgdmlzaWJsZSB8Ci0gICAgICAgIC8v
IHBhaW50ZWQgfCBmaWxsIHwgc3Ryb2tlIHwgYXV0byB8IGFsbCB8IGluaGVyaXQKLSAgICAgICAg
aWYgKGlkID09IENTU1ZhbHVlVmlzaWJsZSB8fCBpZCA9PSBDU1NWYWx1ZU5vbmUgfHwgaWQgPT0g
Q1NTVmFsdWVBbGwgfHwgaWQgPT0gQ1NTVmFsdWVBdXRvIHx8Ci0gICAgICAgICAgICAoaWQgPj0g
Q1NTVmFsdWVWaXNpYmxlcGFpbnRlZCAmJiBpZCA8PSBDU1NWYWx1ZVN0cm9rZSkpCi0gICAgICAg
ICAgICB2YWxpZFByaW1pdGl2ZSA9IHRydWU7Ci0gICAgICAgIGJyZWFrOwotICAgIGNhc2UgQ1NT
UHJvcGVydHlJbWFnZVJlbmRlcmluZzogLy8gYXV0byB8IG9wdGltaXplQ29udHJhc3QKLSAgICAg
ICAgaWYgKGlkID09IENTU1ZhbHVlQXV0byB8fCBpZCA9PSBDU1NWYWx1ZVdlYmtpdE9wdGltaXpl
Q29udHJhc3QpCi0gICAgICAgICAgICB2YWxpZFByaW1pdGl2ZSA9IHRydWU7Ci0gICAgICAgIGJy
ZWFrOwogICAgIC8vIEVuZCBvZiBDU1MzIHByb3BlcnRpZXMKIAogICAgIC8vIEFwcGxlIHNwZWNp
ZmljIHByb3BlcnRpZXMuICBUaGVzZSB3aWxsIG5ldmVyIGJlIHN0YW5kYXJkaXplZCBhbmQgYXJl
IHB1cmVseSB0bwpAQCAtMTk5Myw0NCArMTk1MSwxNiBAQCBib29sIENTU1BhcnNlcjo6cGFyc2VW
YWx1ZShpbnQgcHJvcElkLCBib29sIGltcG9ydGFudCkKICAgICAgICAgLy8gV2hlbiBzcGVjaWZ5
aW5nIGVpdGhlciB0eXBlIG9mIHVuaXQsIHJlcXVpcmUgbm9uLW5lZ2F0aXZlIGludGVnZXJzCiAg
ICAgICAgIHZhbGlkUHJpbWl0aXZlID0gKCFpZCAmJiAodmFsdWUtPnVuaXQgPT0gQ1NTUHJpbWl0
aXZlVmFsdWU6OkNTU19QRVJDRU5UQUdFIHx8IHZhbHVlLT5mVmFsdWUpICYmIHZhbGlkVW5pdCh2
YWx1ZSwgRkludGVnZXIgfCBGUGVyY2VudCB8IEZOb25OZWcsIGZhbHNlKSk7CiAgICAgICAgIGJy
ZWFrOwotICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRUZXh0U2l6ZUFkanVzdDoKLSAgICAgICAg
aWYgKGlkID09IENTU1ZhbHVlQXV0byB8fCBpZCA9PSBDU1NWYWx1ZU5vbmUpCi0gICAgICAgICAg
ICB2YWxpZFByaW1pdGl2ZSA9IHRydWU7Ci0gICAgICAgIGJyZWFrOwotICAgIGNhc2UgQ1NTUHJv
cGVydHlXZWJraXRSdGxPcmRlcmluZzoKLSAgICAgICAgaWYgKGlkID09IENTU1ZhbHVlTG9naWNh
bCB8fCBpZCA9PSBDU1NWYWx1ZVZpc3VhbCkKLSAgICAgICAgICAgIHZhbGlkUHJpbWl0aXZlID0g
dHJ1ZTsKLSAgICAgICAgYnJlYWs7CiAKICAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0Rm9udFNp
emVEZWx0YTogICAgICAgICAgIC8vIDxsZW5ndGg+CiAgICAgICAgIHZhbGlkUHJpbWl0aXZlID0g
dmFsaWRVbml0KHZhbHVlLCBGTGVuZ3RoLCBtX3N0cmljdCk7CiAgICAgICAgIGJyZWFrOwogCi0g
ICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdE5ic3BNb2RlOiAgICAgLy8gbm9ybWFsIHwgc3BhY2UK
LSAgICAgICAgaWYgKGlkID09IENTU1ZhbHVlTm9ybWFsIHx8IGlkID09IENTU1ZhbHVlU3BhY2Up
Ci0gICAgICAgICAgICB2YWxpZFByaW1pdGl2ZSA9IHRydWU7Ci0gICAgICAgIGJyZWFrOwotCi0g
ICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdExpbmVCcmVhazogICAvLyBub3JtYWwgfCBhZnRlci13
aGl0ZS1zcGFjZQotICAgICAgICBpZiAoaWQgPT0gQ1NTVmFsdWVOb3JtYWwgfHwgaWQgPT0gQ1NT
VmFsdWVBZnRlcldoaXRlU3BhY2UpCi0gICAgICAgICAgICB2YWxpZFByaW1pdGl2ZSA9IHRydWU7
Ci0gICAgICAgIGJyZWFrOwotCi0gICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdE1hdGNoTmVhcmVz
dE1haWxCbG9ja3F1b3RlQ29sb3I6ICAgLy8gbm9ybWFsIHwgbWF0Y2gKLSAgICAgICAgaWYgKGlk
ID09IENTU1ZhbHVlTm9ybWFsIHx8IGlkID09IENTU1ZhbHVlTWF0Y2gpCi0gICAgICAgICAgICB2
YWxpZFByaW1pdGl2ZSA9IHRydWU7Ci0gICAgICAgIGJyZWFrOwotCiAgICAgY2FzZSBDU1NQcm9w
ZXJ0eVdlYmtpdEhpZ2hsaWdodDoKICAgICAgICAgaWYgKGlkID09IENTU1ZhbHVlTm9uZSB8fCB2
YWx1ZS0+dW5pdCA9PSBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX1NUUklORykKICAgICAgICAgICAg
IHZhbGlkUHJpbWl0aXZlID0gdHJ1ZTsKICAgICAgICAgYnJlYWs7CiAKLSAgICBjYXNlIENTU1By
b3BlcnR5V2Via2l0SHlwaGVuczoKLSAgICAgICAgaWYgKGlkID09IENTU1ZhbHVlTm9uZSB8fCBp
ZCA9PSBDU1NWYWx1ZU1hbnVhbCB8fCBpZCA9PSBDU1NWYWx1ZUF1dG8pCi0gICAgICAgICAgICB2
YWxpZFByaW1pdGl2ZSA9IHRydWU7Ci0gICAgICAgIGJyZWFrOwotCiAgICAgY2FzZSBDU1NQcm9w
ZXJ0eVdlYmtpdEh5cGhlbmF0ZUNoYXJhY3RlcjoKICAgICAgICAgaWYgKGlkID09IENTU1ZhbHVl
QXV0byB8fCB2YWx1ZS0+dW5pdCA9PSBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX1NUUklORykKICAg
ICAgICAgICAgIHZhbGlkUHJpbWl0aXZlID0gdHJ1ZTsKQEAgLTIwNTgsMzYgKzE5ODgsMTEgQEAg
Ym9vbCBDU1NQYXJzZXI6OnBhcnNlVmFsdWUoaW50IHByb3BJZCwgYm9vbCBpbXBvcnRhbnQpCiAg
ICAgICAgICAgICB9CiAgICAgICAgIH0KICAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBDU1NQcm9w
ZXJ0eVdlYmtpdExpbmVTbmFwOgotICAgICAgICBpZiAoaWQgPT0gQ1NTVmFsdWVOb25lIHx8IGlk
ID09IENTU1ZhbHVlQmFzZWxpbmUgfHwgaWQgPT0gQ1NTVmFsdWVDb250YWluKQotICAgICAgICAg
ICAgdmFsaWRQcmltaXRpdmUgPSB0cnVlOwotICAgICAgICBicmVhazsKLSAgICBjYXNlIENTU1By
b3BlcnR5V2Via2l0TGluZUFsaWduOgotICAgICAgICBpZiAoaWQgPT0gQ1NTVmFsdWVOb25lIHx8
IGlkID09IENTU1ZhbHVlRWRnZXMpCi0gICAgICAgICAgICB2YWxpZFByaW1pdGl2ZSA9IHRydWU7
Ci0gICAgICAgIGJyZWFrOwogICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRMb2NhbGU6CiAgICAg
ICAgIGlmIChpZCA9PSBDU1NWYWx1ZUF1dG8gfHwgdmFsdWUtPnVuaXQgPT0gQ1NTUHJpbWl0aXZl
VmFsdWU6OkNTU19TVFJJTkcpCiAgICAgICAgICAgICB2YWxpZFByaW1pdGl2ZSA9IHRydWU7CiAg
ICAgICAgIGJyZWFrOwogCi0gICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdEJvcmRlckZpdDoKLSAg
ICAgICAgaWYgKGlkID09IENTU1ZhbHVlQm9yZGVyIHx8IGlkID09IENTU1ZhbHVlTGluZXMpCi0g
ICAgICAgICAgICB2YWxpZFByaW1pdGl2ZSA9IHRydWU7Ci0gICAgICAgIGJyZWFrOwotCi0gICAg
Y2FzZSBDU1NQcm9wZXJ0eVdlYmtpdFRleHRTZWN1cml0eToKLSAgICAgICAgLy8gZGlzYyB8IGNp
cmNsZSB8IHNxdWFyZSB8IG5vbmUgfCBpbmhlcml0Ci0gICAgICAgIGlmIChpZCA9PSBDU1NWYWx1
ZURpc2MgfHwgaWQgPT0gQ1NTVmFsdWVDaXJjbGUgfHwgaWQgPT0gQ1NTVmFsdWVTcXVhcmV8fCBp
ZCA9PSBDU1NWYWx1ZU5vbmUpCi0gICAgICAgICAgICB2YWxpZFByaW1pdGl2ZSA9IHRydWU7Ci0g
ICAgICAgIGJyZWFrOwotCi0gICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdEZvbnRTbW9vdGhpbmc6
Ci0gICAgICAgIGlmIChpZCA9PSBDU1NWYWx1ZUF1dG8gfHwgaWQgPT0gQ1NTVmFsdWVOb25lCi0g
ICAgICAgICAgICB8fCBpZCA9PSBDU1NWYWx1ZUFudGlhbGlhc2VkIHx8IGlkID09IENTU1ZhbHVl
U3VicGl4ZWxBbnRpYWxpYXNlZCkKLSAgICAgICAgICAgIHZhbGlkUHJpbWl0aXZlID0gdHJ1ZTsK
LSAgICAgICAgYnJlYWs7Ci0KICNpZiBFTkFCTEUoREFTSEJPQVJEX1NVUFBPUlQpCiAgICAgY2Fz
ZSBDU1NQcm9wZXJ0eVdlYmtpdERhc2hib2FyZFJlZ2lvbjogLy8gPGRhc2hib2FyZC1yZWdpb24+
IHwgPGRhc2hib2FyZC1yZWdpb24+CiAgICAgICAgIGlmICh2YWx1ZS0+dW5pdCA9PSBDU1NQYXJz
ZXJWYWx1ZTo6RnVuY3Rpb24gfHwgaWQgPT0gQ1NTVmFsdWVOb25lKQpAQCAtMjEwOSwxMyArMjAx
NCw2IEBAIGJvb2wgQ1NTUGFyc2VyOjpwYXJzZVZhbHVlKGludCBwcm9wSWQsIGJvb2wgaW1wb3J0
YW50KQogICAgICAgICBicmVhazsKICNlbmRpZgogCi0jaWYgRU5BQkxFKE9WRVJGTE9XX1NDUk9M
TElORykKLSAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0T3ZlcmZsb3dTY3JvbGxpbmc6Ci0gICAg
ICAgIGlmIChpZCA9PSBDU1NWYWx1ZUF1dG8gfHwgaWQgPT0gQ1NTVmFsdWVUb3VjaCkKLSAgICAg
ICAgICAgIHZhbGlkUHJpbWl0aXZlID0gdHJ1ZTsKLSAgICAgICAgYnJlYWs7Ci0jZW5kaWYKLQog
ICAgICAgICAvKiBzaG9ydGhhbmQgcHJvcGVydGllcyAqLwogICAgIGNhc2UgQ1NTUHJvcGVydHlC
YWNrZ3JvdW5kOiB7CiAgICAgICAgIC8vIFBvc2l0aW9uIG11c3QgY29tZSBiZWZvcmUgY29sb3Ig
aW4gdGhpcyBhcnJheSBiZWNhdXNlIGEgcGxhaW4gb2xkICIwIiBpcyBhIGxlZ2FsIGNvbG9yCkBA
IC0yMjg1LDI2ICsyMTgzLDExIEBAIGJvb2wgQ1NTUGFyc2VyOjpwYXJzZVZhbHVlKGludCBwcm9w
SWQsIGJvb2wgaW1wb3J0YW50KQogICAgIGNhc2UgQ1NTUHJvcGVydHlUZXh0VW5kZXJsaW5lOgog
ICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgLy8gQ1NTIFRleHQgTGF5b3V0IE1vZHVsZSBMZXZl
bCAzOiBWZXJ0aWNhbCB3cml0aW5nIHN1cHBvcnQKLSAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0
V3JpdGluZ01vZGU6Ci0gICAgICAgIGlmIChpZCA+PSBDU1NWYWx1ZUhvcml6b250YWxUYiAmJiBp
ZCA8PSBDU1NWYWx1ZUhvcml6b250YWxCdCkKLSAgICAgICAgICAgIHZhbGlkUHJpbWl0aXZlID0g
dHJ1ZTsKLSAgICAgICAgYnJlYWs7Ci0KLSAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0VGV4dENv
bWJpbmU6Ci0gICAgICAgIGlmIChpZCA9PSBDU1NWYWx1ZU5vbmUgfHwgaWQgPT0gQ1NTVmFsdWVI
b3Jpem9udGFsKQotICAgICAgICAgICAgdmFsaWRQcmltaXRpdmUgPSB0cnVlOwotICAgICAgICBi
cmVhazsKLQogICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRUZXh0RW1waGFzaXM6IHsKICAgICAg
ICAgY29uc3QgaW50IHByb3BlcnRpZXNbXSA9IHsgQ1NTUHJvcGVydHlXZWJraXRUZXh0RW1waGFz
aXNTdHlsZSwgQ1NTUHJvcGVydHlXZWJraXRUZXh0RW1waGFzaXNDb2xvciB9OwogICAgICAgICBy
ZXR1cm4gcGFyc2VTaG9ydGhhbmQocHJvcElkLCBwcm9wZXJ0aWVzLCBXVEZfQVJSQVlfTEVOR1RI
KHByb3BlcnRpZXMpLCBpbXBvcnRhbnQpOwogICAgIH0KIAotICAgIGNhc2UgQ1NTUHJvcGVydHlX
ZWJraXRUZXh0RW1waGFzaXNQb3NpdGlvbjoKLSAgICAgICAgaWYgKGlkID09IENTU1ZhbHVlT3Zl
ciB8fCBpZCA9PSBDU1NWYWx1ZVVuZGVyKQotICAgICAgICAgICAgdmFsaWRQcmltaXRpdmUgPSB0
cnVlOwotICAgICAgICBicmVhazsKLQogICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRUZXh0RW1w
aGFzaXNTdHlsZToKICAgICAgICAgcmV0dXJuIHBhcnNlVGV4dEVtcGhhc2lzU3R5bGUoaW1wb3J0
YW50KTsKIApAQCAtMjMyNywxMSArMjIxMCw2IEBAIGJvb2wgQ1NTUGFyc2VyOjpwYXJzZVZhbHVl
KGludCBwcm9wSWQsIGJvb2wgaW1wb3J0YW50KQogICAgICAgICAgICAgcmV0dXJuIHBhcnNlRm9u
dEZlYXR1cmVTZXR0aW5ncyhpbXBvcnRhbnQpOwogICAgICAgICBicmVhazsKIAotICAgIGNhc2Ug
Q1NTUHJvcGVydHlXZWJraXRGb250S2VybmluZzoKLSAgICAgICAgaWYgKGlkID09IENTU1ZhbHVl
QXV0byB8fCBpZCA9PSBDU1NWYWx1ZU5vcm1hbCB8fCBpZCA9PSBDU1NWYWx1ZU5vbmUpCi0gICAg
ICAgICAgICB2YWxpZFByaW1pdGl2ZSA9IHRydWU7Ci0gICAgICAgIGJyZWFrOwotCiAgICAgY2Fz
ZSBDU1NQcm9wZXJ0eVdlYmtpdEZvbnRWYXJpYW50TGlnYXR1cmVzOgogICAgICAgICBpZiAoaWQg
PT0gQ1NTVmFsdWVOb3JtYWwpCiAgICAgICAgICAgICB2YWxpZFByaW1pdGl2ZSA9IHRydWU7CkBA
IC0yMzQ2LDE1ICsyMjI0LDYgQEAgYm9vbCBDU1NQYXJzZXI6OnBhcnNlVmFsdWUoaW50IHByb3BJ
ZCwgYm9vbCBpbXBvcnRhbnQpCiAgICAgICAgIGVsc2UgaWYgKHZhbHVlLT51bml0ID09IENTU1Bh
cnNlclZhbHVlOjpGdW5jdGlvbikKICAgICAgICAgICAgIHJldHVybiBwYXJzZVdyYXBTaGFwZSgo
cHJvcElkID09IENTU1Byb3BlcnR5V2Via2l0V3JhcFNoYXBlSW5zaWRlKSwgaW1wb3J0YW50KTsK
ICAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdFdyYXBGbG93OgotICAg
ICAgICBpZiAoaWQgPT0gQ1NTVmFsdWVBdXRvIHx8IGlkID09IENTU1ZhbHVlQm90aCB8fCBpZCA9
PSBDU1NWYWx1ZUxlZnQgfHwgaWQgPT0gQ1NTVmFsdWVSaWdodCB8fCBpZCA9PSBDU1NWYWx1ZU1h
eGltdW0gfHwgaWQgPT0gQ1NTVmFsdWVDbGVhcikKLSAgICAgICAgICAgIHZhbGlkUHJpbWl0aXZl
ID0gdHJ1ZTsKLSAgICAgICAgYnJlYWs7Ci0KLSAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0V3Jh
cFRocm91Z2g6Ci0gICAgICAgIGlmIChpZCA9PSBDU1NWYWx1ZVdyYXAgfHwgaWQgPT0gQ1NTVmFs
dWVOb25lKQotICAgICAgICAgICAgdmFsaWRQcmltaXRpdmUgPSB0cnVlOwotICAgICAgICBicmVh
azsKICAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0V3JhcE1hcmdpbjoKICAgICBjYXNlIENTU1By
b3BlcnR5V2Via2l0V3JhcFBhZGRpbmc6CiAgICAgICAgIHZhbGlkUHJpbWl0aXZlID0gKCFpZCAm
JiB2YWxpZFVuaXQodmFsdWUsIEZMZW5ndGggfCBGTm9uTmVnLCBtX3N0cmljdCkpOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>131940</attachid>
            <date>2012-03-14 15:35:47 -0700</date>
            <delta_ts>2012-03-19 13:30:37 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-80874-20120314193530.patch</filename>
            <type>text/plain</type>
            <size>45321</size>
            <attacher name="Alexis Menard (darktears)">menard</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTEwNDcyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNjBlYjA1MmZmMjkzZTJm
MTIzNDQxNGRiNTM5MzgxYjdmMmVjYzkyYS4uOWJhNDAwYzM4N2JmNmExOTY2OWVlZGVhMjY5YmE0
ZDAzNGUzZTdlOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMyIEBACisyMDEyLTAzLTE0ICBBbGV4
aXMgTWVuYXJkICA8YWxleGlzLm1lbmFyZEBvcGVuYm9zc2Eub3JnPgorCisgICAgICAgIEltcGxl
bWVudCBhIGZhc3QgcGF0aCB3aGVuIHNldHRpbmcgQ1NTIHByb3BlcnRpZXMgd2l0aCBrZXl3b3Jk
cyBmcm9tIEpTLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9ODA4NzQKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICBJbXBsZW1lbnQgYSBmYXN0IHBhdGggZm9yIHByb3BlcnRpZXMgd2l0aCBrZXl3b3Jkcy4gVGhl
IGlkZWEgaXMgdG8gYXZvaWQKKyAgICAgICAgY3JlYXRpbmcgdGhlIENTUyBwYXJzZXIgYW5kIHJ1
biBhbGwgdGhlIG1hY2hpbmVyeSBmb3IgaXQuIFRoaXMgcGF0Y2gKKyAgICAgICAgYWRkcyBhIHN0
YXRpYyBtYXAgd2hlcmUgYWxsIHRoZSBwcm9wZXJ0aWVzIGFjY2VwdGluZyBrZXl3b3JkcyBhcyB2
YWx1ZSBhcmUKKyAgICAgICAgZGVzY3JpYmVkIChlLmcuIHBvc3Rpb24gOiBmaXhlZCkuIFdoZW4g
SlMgY2FsbHMgcGFyc2VWYWx1ZSB3ZSBjaGVjayBpZiB3ZQorICAgICAgICBjYW4gdXNlIHRoZSBm
YXN0IHBhdGggdG8gYWRkIHRoZSBjcmVhdGVkIHByb3BlcnR5IGRpcmVjdGx5IGluIHRoZSBkZWNs
YXJhdGlvbi4KKyAgICAgICAgRm9yIHRoZSBzYWtlIG9mIG1haW50ZW5hbmNlIHRoZSBwYXJzZVZh
bHVlIGZ1bnRpb24gdXNlZCBieSBDU1NHcmFtbWFyLnkgaXMgdXNpbmcKKyAgICAgICAgdGhpcyBt
YXAuCisKKyAgICAgICAgTm8gbmV3IHRlc3RzIDogZXhpc3RpbmdzIG9uZXMgc2hvdWxkIGNvdmVy
LgorCisgICAgICAgICogY3NzL0NTU1BhcnNlci5jcHA6CisgICAgICAgIChXZWJDb3JlKToKKyAg
ICAgICAgKFByb3BlcnR5TWFwRW50cnkpOgorICAgICAgICAoV2ViQ29yZTo6UHJvcGVydHlNYXBF
bnRyeTo6UHJvcGVydHlNYXBFbnRyeSk6CisgICAgICAgIChXZWJDb3JlOjpQcm9wZXJ0eU1hcEVu
dHJ5OjptYXRjaCk6CisgICAgICAgIChLZXl3b3JkUHJvcGVydHlNYXBFbnRyeSk6CisgICAgICAg
IChXZWJDb3JlOjpLZXl3b3JkUHJvcGVydHlNYXBFbnRyeTo6S2V5d29yZFByb3BlcnR5TWFwRW50
cnkpOgorICAgICAgICAoV2ViQ29yZTo6S2V5d29yZFByb3BlcnR5TWFwRW50cnk6Om1hdGNoKToK
KyAgICAgICAgKFdlYkNvcmU6OnByb3BlcnR5Rm9ySUQpOgorICAgICAgICAoV2ViQ29yZTo6cGFy
c2VLZXl3b3JkVmFsdWUpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTUGFyc2VyOjpwYXJzZVZhbHVl
KToKKwogMjAxMi0wMy0xMiAgVGltIEhvcnRvbiAgPHRpbW90aHlfaG9ydG9uQGFwcGxlLmNvbT4K
IAogICAgICAgICBJbmZpbml0ZSByZXBhaW50IGxvb3Agd2l0aCBTVkdJbWFnZUNhY2hlIGFuZCBk
ZWZlcnJlZCByZXBhaW50IHRpbWVycwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NT
U1BhcnNlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUGFyc2VyLmNwcAppbmRleCAzZGM0
YmM5MTIwMjU1MmI2Njc1NGZiOWU0NzZhZDQwZDcwMGQxOGYwLi4xODA0ZmUyNjZiOWFkOTcxOWZh
MjRhMmJmNmI2MjYxMzY0ZGJlMTI5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NT
UGFyc2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUGFyc2VyLmNwcApAQCAtNDc5
LDYgKzQ3OSwxODggQEAgc3RhdGljIGJvb2wgcGFyc2VTaW1wbGVMZW5ndGhWYWx1ZShTdHlsZVBy
b3BlcnR5U2V0KiBkZWNsYXJhdGlvbiwgaW50IHByb3BlcnR5SWQKICAgICByZXR1cm4gdHJ1ZTsK
IH0KIAorY2xhc3MgUHJvcGVydHlNYXBFbnRyeSB7CitwdWJsaWM6CisgICAgdHlwZWRlZiBib29s
ICgqTWF0Y2hGdW5jdGlvbikoaW50KTsKKworICAgIFByb3BlcnR5TWFwRW50cnkoKSA6IG1fbWF0
Y2goMCkgeyB9CisgICAgZXhwbGljaXQgUHJvcGVydHlNYXBFbnRyeShNYXRjaEZ1bmN0aW9uIG1h
dGNoKSA6IG1fbWF0Y2gobWF0Y2gpIHsgfQorCisgICAgYm9vbCBpc1ZhbGlkKCkgY29uc3QgeyBy
ZXR1cm4gbV9tYXRjaDsgfQorICAgIGJvb2wgbWF0Y2goaW50IGlkKSBjb25zdCB7IEFTU0VSVCht
X21hdGNoKTsgcmV0dXJuICgqbV9tYXRjaCkoaWQpOyB9CisKK3ByaXZhdGU6CisgICAgTWF0Y2hG
dW5jdGlvbiBtX21hdGNoOworfTsKKworZW51bSBNYXRjaEtleXdvcmRCZWhhdmlvciB7TWF0Y2hW
YWx1ZXMgPSAwLCBNYXRjaFJhbmdlfTsKK3RlbXBsYXRlIDxNYXRjaEtleXdvcmRCZWhhdmlvciBi
ZWhhdmlvciwgaW50IG9uZSA9IENTU1ZhbHVlSW52YWxpZCwgaW50IHR3byA9IENTU1ZhbHVlSW52
YWxpZCwgaW50IHRocmVlID0gQ1NTVmFsdWVJbnZhbGlkLCBpbnQgZm91ciA9IENTU1ZhbHVlSW52
YWxpZCwgaW50IGZpdmUgPSBDU1NWYWx1ZUludmFsaWQsCisgICAgICAgICAgaW50IHNpeCA9IENT
U1ZhbHVlSW52YWxpZCwgaW50IHNldmVuID0gQ1NTVmFsdWVJbnZhbGlkLCBpbnQgZWlnaHQgPSBD
U1NWYWx1ZUludmFsaWQsIGludCBuaW5lID0gQ1NTVmFsdWVJbnZhbGlkPgorY2xhc3MgS2V5d29y
ZFByb3BlcnR5TWFwRW50cnkgOiBwdWJsaWMgUHJvcGVydHlNYXBFbnRyeSB7CitwdWJsaWM6Cisg
ICAgS2V5d29yZFByb3BlcnR5TWFwRW50cnkoKQorICAgICAgICA6IFByb3BlcnR5TWFwRW50cnko
Jm1hdGNoKQorICAgIHsKKyAgICB9CisKKyAgICBzdGF0aWMgYm9vbCBtYXRjaChpbnQgaWQpCisg
ICAgeworICAgICAgICBpZiAoIWlkIHx8IGlkID09IENTU1ZhbHVlSW52YWxpZCkKKyAgICAgICAg
ICAgIHJldHVybiBmYWxzZTsKKworICAgICAgICBpZiAoYmVoYXZpb3IgPT0gTWF0Y2hSYW5nZSAm
JiBpZCA+PSBvbmUgJiYgaWQgPD0gdHdvKQorICAgICAgICAgICAgcmV0dXJuIHRydWU7CisKKyAg
ICAgICAgaWYgKGlkID09IG9uZSB8fCBpZCA9PSB0d28gfHwgaWQgPT0gdGhyZWUgfHwgaWQgPT0g
Zm91ciB8fCBpZCA9PSBmaXZlIHx8IGlkID09IHNpeCB8fCBpZCA9PSBzZXZlbiB8fCBpZCA9PSBl
aWdodCB8fCBpZCA9PSBuaW5lKQorICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgIHJl
dHVybiBmYWxzZTsKKyAgICB9Cit9OworCit0eXBlZGVmIEhhc2hNYXA8aW50LCBQcm9wZXJ0eU1h
cEVudHJ5PiBLZXl3b3JkUHJvcGVydHlNYXA7CitzdGF0aWMgY29uc3QgUHJvcGVydHlNYXBFbnRy
eSBwcm9wZXJ0eUZvcklEKGludCBwcm9wZXJ0eUlkKQoreworICAgIERFRklORV9TVEFUSUNfTE9D
QUwoS2V5d29yZFByb3BlcnR5TWFwLCBtYXAsICgpKTsKKyAgICBpZiAobWFwLmlzRW1wdHkoKSkg
eworICAgICAgICBtYXAuc2V0KENTU1Byb3BlcnR5Qm9yZGVyQm90dG9tU3R5bGUsIEtleXdvcmRQ
cm9wZXJ0eU1hcEVudHJ5PE1hdGNoUmFuZ2UsIENTU1ZhbHVlTm9uZSwgQ1NTVmFsdWVEb3VibGU+
KCkpOyAvLyBub25lIHwgaGlkZGVuIHwgZG90dGVkIHwgZGFzaGVkIHwgc29saWQgfCBkb3VibGUg
fCBncm9vdmUgfCByaWRnZSB8IGluc2V0IHwgb3V0c2V0CisgICAgICAgIG1hcC5zZXQoQ1NTUHJv
cGVydHlCb3JkZXJDb2xsYXBzZSwgS2V5d29yZFByb3BlcnR5TWFwRW50cnk8TWF0Y2hWYWx1ZXMs
IENTU1ZhbHVlQ29sbGFwc2UsIENTU1ZhbHVlU2VwYXJhdGU+KCkpOyAvLyBjb2xsYXBzZSB8IHNl
cGFyYXRlIHwgaW5oZXJpdAorICAgICAgICBtYXAuc2V0KENTU1Byb3BlcnR5Qm9yZGVyTGVmdFN0
eWxlLCBLZXl3b3JkUHJvcGVydHlNYXBFbnRyeTxNYXRjaFJhbmdlLCBDU1NWYWx1ZU5vbmUsIENT
U1ZhbHVlRG91YmxlPigpKTsgLy8gbm9uZSB8IGhpZGRlbiB8IGRvdHRlZCB8IGRhc2hlZCB8IHNv
bGlkIHwgZG91YmxlIHwgZ3Jvb3ZlIHwgcmlkZ2UgfCBpbnNldCB8IG91dHNldAorICAgICAgICBt
YXAuc2V0KENTU1Byb3BlcnR5Qm9yZGVyUmlnaHRTdHlsZSwgS2V5d29yZFByb3BlcnR5TWFwRW50
cnk8TWF0Y2hSYW5nZSwgQ1NTVmFsdWVOb25lLCBDU1NWYWx1ZURvdWJsZT4oKSk7IC8vIG5vbmUg
fCBoaWRkZW4gfCBkb3R0ZWQgfCBkYXNoZWQgfCBzb2xpZCB8IGRvdWJsZSB8IGdyb292ZSB8IHJp
ZGdlIHwgaW5zZXQgfCBvdXRzZXQKKyAgICAgICAgbWFwLnNldChDU1NQcm9wZXJ0eUJvcmRlclRv
cFN0eWxlLCBLZXl3b3JkUHJvcGVydHlNYXBFbnRyeTxNYXRjaFJhbmdlLCBDU1NWYWx1ZU5vbmUs
IENTU1ZhbHVlRG91YmxlPigpKTsgLy8gbm9uZSB8IGhpZGRlbiB8IGRvdHRlZCB8IGRhc2hlZCB8
IHNvbGlkIHwgZG91YmxlIHwgZ3Jvb3ZlIHwgcmlkZ2UgfCBpbnNldCB8IG91dHNldAorICAgICAg
ICBtYXAuc2V0KENTU1Byb3BlcnR5Qm94U2l6aW5nLCBLZXl3b3JkUHJvcGVydHlNYXBFbnRyeTxN
YXRjaFZhbHVlcywgQ1NTVmFsdWVCb3JkZXJCb3gsIENTU1ZhbHVlQ29udGVudEJveD4oKSk7Cisg
ICAgICAgIG1hcC5zZXQoQ1NTUHJvcGVydHlDYXB0aW9uU2lkZSwgS2V5d29yZFByb3BlcnR5TWFw
RW50cnk8TWF0Y2hWYWx1ZXMsIENTU1ZhbHVlTGVmdCwgQ1NTVmFsdWVSaWdodCwgQ1NTVmFsdWVU
b3AsIENTU1ZhbHVlQm90dG9tPigpKTsgLy8gdG9wIHwgYm90dG9tIHwgbGVmdCB8IHJpZ2h0IHwg
aW5oZXJpdAorICAgICAgICBtYXAuc2V0KENTU1Byb3BlcnR5Q2xlYXIsIEtleXdvcmRQcm9wZXJ0
eU1hcEVudHJ5PE1hdGNoVmFsdWVzLCBDU1NWYWx1ZU5vbmUsIENTU1ZhbHVlTGVmdCwgQ1NTVmFs
dWVSaWdodCwgQ1NTVmFsdWVCb3RoPigpKTsgLy8gbm9uZSB8IGxlZnQgfCByaWdodCB8IGJvdGgg
fCBpbmhlcml0CisgICAgICAgIG1hcC5zZXQoQ1NTUHJvcGVydHlEaXJlY3Rpb24sIEtleXdvcmRQ
cm9wZXJ0eU1hcEVudHJ5PE1hdGNoVmFsdWVzLCBDU1NWYWx1ZUx0ciwgQ1NTVmFsdWVSdGw+KCkp
OyAvLyBsdHIgfCBydGwgfCBpbmhlcml0CisgICAgICAgIC8vIGlubGluZSB8IGJsb2NrIHwgbGlz
dC1pdGVtIHwgcnVuLWluIHwgaW5saW5lLWJsb2NrIHwgdGFibGUgfAorICAgICAgICAvLyBpbmxp
bmUtdGFibGUgfCB0YWJsZS1yb3ctZ3JvdXAgfCB0YWJsZS1oZWFkZXItZ3JvdXAgfCB0YWJsZS1m
b290ZXItZ3JvdXAgfCB0YWJsZS1yb3cgfAorICAgICAgICAvLyB0YWJsZS1jb2x1bW4tZ3JvdXAg
fCB0YWJsZS1jb2x1bW4gfCB0YWJsZS1jZWxsIHwgdGFibGUtY2FwdGlvbiB8IC13ZWJraXQtYm94
IHwgLXdlYmtpdC1pbmxpbmUtYm94IHwgbm9uZSB8IGluaGVyaXQKKyAgICAgICAgLy8gLXdlYmtp
dC1mbGV4Ym94IHwgLXdlYmtpdC1pbmxpbmUtZmxleGJveCB8IC13ZWJraXQtZ3JpZCB8IC13ZWJr
aXQtaW5saW5lLWdyaWQKKyNpZiBFTkFCTEUoQ1NTX0dSSURfTEFZT1VUKQorICAgICAgICBtYXAu
c2V0KENTU1Byb3BlcnR5RGlzcGxheSwgS2V5d29yZFByb3BlcnR5TWFwRW50cnk8TWF0Y2hSYW5n
ZSwgQ1NTVmFsdWVJbmxpbmUsIENTU1ZhbHVlV2Via2l0SW5saW5lR3JpZCwgQ1NTVmFsdWVOb25l
PigpKTsKKyNlbHNlCisgICAgICAgIG1hcC5zZXQoQ1NTUHJvcGVydHlEaXNwbGF5LCBLZXl3b3Jk
UHJvcGVydHlNYXBFbnRyeTxNYXRjaFJhbmdlLCBDU1NWYWx1ZUlubGluZSwgQ1NTVmFsdWVXZWJr
aXRJbmxpbmVGbGV4Ym94LCBDU1NWYWx1ZU5vbmU+KCkpOworI2VuZGlmCisgICAgICAgIG1hcC5z
ZXQoQ1NTUHJvcGVydHlFbXB0eUNlbGxzLCBLZXl3b3JkUHJvcGVydHlNYXBFbnRyeTxNYXRjaFZh
bHVlcywgQ1NTVmFsdWVTaG93LCBDU1NWYWx1ZUhpZGU+KCkpOyAvLyBzaG93IHwgaGlkZSB8IGlu
aGVyaXQKKyAgICAgICAgbWFwLnNldChDU1NQcm9wZXJ0eUZsb2F0LCBLZXl3b3JkUHJvcGVydHlN
YXBFbnRyeTxNYXRjaFZhbHVlcywgQ1NTVmFsdWVMZWZ0LCBDU1NWYWx1ZVJpZ2h0LCBDU1NWYWx1
ZU5vbmUsIENTU1ZhbHVlQ2VudGVyLCBDU1NWYWx1ZVdlYmtpdFBvc2l0aW9uZWQ+KCkpOyAvLyBs
ZWZ0IHwgcmlnaHQgfCBub25lIHwgcG9zaXRpb25lZCB8IGNlbnRlciAoZm9yIGJ1Z2d5IENTUywg
bWFwcyB0byBub25lKQorICAgICAgICBtYXAuc2V0KENTU1Byb3BlcnR5Rm9udFN0eWxlLCBLZXl3
b3JkUHJvcGVydHlNYXBFbnRyeTxNYXRjaFZhbHVlcywgQ1NTVmFsdWVOb3JtYWwsIENTU1ZhbHVl
SXRhbGljLCBDU1NWYWx1ZU9ibGlxdWU+KCkpOyAvLyBub3JtYWwgfCBpdGFsaWMgfCBvYmxpcXVl
IHwgaW5oZXJpdAorICAgICAgICBtYXAuc2V0KENTU1Byb3BlcnR5SW1hZ2VSZW5kZXJpbmcsIEtl
eXdvcmRQcm9wZXJ0eU1hcEVudHJ5PE1hdGNoVmFsdWVzLCBDU1NWYWx1ZUF1dG8sIENTU1ZhbHVl
V2Via2l0T3B0aW1pemVDb250cmFzdD4oKSk7IC8vIGF1dG8gfCBvcHRpbWl6ZUNvbnRyYXN0Cisg
ICAgICAgIG1hcC5zZXQoQ1NTUHJvcGVydHlMaXN0U3R5bGVQb3NpdGlvbiwgS2V5d29yZFByb3Bl
cnR5TWFwRW50cnk8TWF0Y2hWYWx1ZXMsIENTU1ZhbHVlSW5zaWRlLCBDU1NWYWx1ZU91dHNpZGU+
KCkpOyAvLyBpbnNpZGUgfCBvdXRzaWRlIHwgaW5oZXJpdAorICAgICAgICBtYXAuc2V0KENTU1By
b3BlcnR5TGlzdFN0eWxlVHlwZSwgS2V5d29yZFByb3BlcnR5TWFwRW50cnk8TWF0Y2hSYW5nZSwg
Q1NTVmFsdWVEaXNjLCBDU1NWYWx1ZUthdGFrYW5hSXJvaGEsIENTU1ZhbHVlTm9uZT4oKSk7Cisg
ICAgICAgIG1hcC5zZXQoQ1NTUHJvcGVydHlPdXRsaW5lU3R5bGUsIEtleXdvcmRQcm9wZXJ0eU1h
cEVudHJ5PE1hdGNoUmFuZ2UsIENTU1ZhbHVlSW5zZXQsIENTU1ZhbHVlRG91YmxlLCBDU1NWYWx1
ZU5vbmUsIENTU1ZhbHVlQXV0bz4oKSk7IC8vICg8Ym9yZGVyLXN0eWxlPiBleGNlcHQgaGlkZGVu
KSB8IGF1dG8gfCBpbmhlcml0CisgICAgICAgIG1hcC5zZXQoQ1NTUHJvcGVydHlPdmVyZmxvd1gs
IEtleXdvcmRQcm9wZXJ0eU1hcEVudHJ5PE1hdGNoVmFsdWVzLCBDU1NWYWx1ZVZpc2libGUsIENT
U1ZhbHVlSGlkZGVuLCBDU1NWYWx1ZVNjcm9sbCwgQ1NTVmFsdWVBdXRvLCBDU1NWYWx1ZU92ZXJs
YXksIENTU1ZhbHVlV2Via2l0TWFycXVlZT4oKSk7IC8vIHZpc2libGUgfCBoaWRkZW4gfCBzY3Jv
bGwgfCBhdXRvIHwgbWFycXVlZSB8IG92ZXJsYXkgfCBpbmhlcml0CisgICAgICAgIG1hcC5zZXQo
Q1NTUHJvcGVydHlPdmVyZmxvd1ksIEtleXdvcmRQcm9wZXJ0eU1hcEVudHJ5PE1hdGNoVmFsdWVz
LCBDU1NWYWx1ZVZpc2libGUsIENTU1ZhbHVlSGlkZGVuLCBDU1NWYWx1ZVNjcm9sbCwgQ1NTVmFs
dWVBdXRvLCBDU1NWYWx1ZU92ZXJsYXksIENTU1ZhbHVlV2Via2l0TWFycXVlZT4oKSk7IC8vIHZp
c2libGUgfCBoaWRkZW4gfCBzY3JvbGwgfCBhdXRvIHwgbWFycXVlZSB8IG92ZXJsYXkgfCBpbmhl
cml0CisgICAgICAgIC8vIG5vbmUgfCB2aXNpYmxlUGFpbnRlZCB8IHZpc2libGVGaWxsIHwgdmlz
aWJsZVN0cm9rZSB8IHZpc2libGUgfAorICAgICAgICAvLyBwYWludGVkIHwgZmlsbCB8IHN0cm9r
ZSB8IGF1dG8gfCBhbGwgfCBpbmhlcml0CisgICAgICAgIG1hcC5zZXQoQ1NTUHJvcGVydHlQb2lu
dGVyRXZlbnRzLCBLZXl3b3JkUHJvcGVydHlNYXBFbnRyeTxNYXRjaFJhbmdlLCBDU1NWYWx1ZVZp
c2libGVwYWludGVkLCBDU1NWYWx1ZVN0cm9rZSwgQ1NTVmFsdWVWaXNpYmxlLCBDU1NWYWx1ZU5v
bmUsIENTU1ZhbHVlQWxsLCBDU1NWYWx1ZUF1dG8+KCkpOworICAgICAgICBtYXAuc2V0KENTU1By
b3BlcnR5UG9zaXRpb24sIEtleXdvcmRQcm9wZXJ0eU1hcEVudHJ5PE1hdGNoVmFsdWVzLCBDU1NW
YWx1ZVN0YXRpYywgQ1NTVmFsdWVSZWxhdGl2ZSwgQ1NTVmFsdWVBYnNvbHV0ZSwgQ1NTVmFsdWVG
aXhlZD4oKSk7CisgICAgICAgIG1hcC5zZXQoQ1NTUHJvcGVydHlSZXNpemUsIEtleXdvcmRQcm9w
ZXJ0eU1hcEVudHJ5PE1hdGNoVmFsdWVzLCBDU1NWYWx1ZU5vbmUsIENTU1ZhbHVlQm90aCwgQ1NT
VmFsdWVIb3Jpem9udGFsLCBDU1NWYWx1ZVZlcnRpY2FsLCBDU1NWYWx1ZUF1dG8+KCkpOyAvLyBu
b25lIHwgYm90aCB8IGhvcml6b250YWwgfCB2ZXJ0aWNhbCB8IGF1dG8KKyAgICAgICAgbWFwLnNl
dChDU1NQcm9wZXJ0eVNwZWFrLCBLZXl3b3JkUHJvcGVydHlNYXBFbnRyeTxNYXRjaFZhbHVlcywg
Q1NTVmFsdWVOb25lLCBDU1NWYWx1ZU5vcm1hbCwgQ1NTVmFsdWVTcGVsbE91dCwgQ1NTVmFsdWVE
aWdpdHMsIENTU1ZhbHVlTGl0ZXJhbFB1bmN0dWF0aW9uLCBDU1NWYWx1ZU5vUHVuY3R1YXRpb24+
KCkpOyAvLyBub25lIHwgbm9ybWFsIHwgc3BlbGwtb3V0IHwgZGlnaXRzIHwgbGl0ZXJhbC1wdW5j
dHVhdGlvbiB8IG5vLXB1bmN0dWF0aW9uIHwgaW5oZXJpdAorICAgICAgICBtYXAuc2V0KENTU1By
b3BlcnR5VGFibGVMYXlvdXQsIEtleXdvcmRQcm9wZXJ0eU1hcEVudHJ5PE1hdGNoVmFsdWVzLCBD
U1NWYWx1ZUF1dG8sIENTU1ZhbHVlRml4ZWQ+KCkpOyAvLyBhdXRvIHwgZml4ZWQgfCBpbmhlcml0
CisgICAgICAgIG1hcC5zZXQoQ1NTUHJvcGVydHlUZXh0TGluZVRocm91Z2hNb2RlLCBLZXl3b3Jk
UHJvcGVydHlNYXBFbnRyeTxNYXRjaFZhbHVlcywgQ1NTVmFsdWVDb250aW51b3VzLCBDU1NWYWx1
ZVNraXBXaGl0ZVNwYWNlPigpKTsKKyAgICAgICAgbWFwLnNldChDU1NQcm9wZXJ0eVRleHRMaW5l
VGhyb3VnaFN0eWxlLCBLZXl3b3JkUHJvcGVydHlNYXBFbnRyeTxNYXRjaFZhbHVlcywgQ1NTVmFs
dWVOb25lLCBDU1NWYWx1ZVNvbGlkLCBDU1NWYWx1ZURvdWJsZSwgQ1NTVmFsdWVEYXNoZWQsIENT
U1ZhbHVlRG90RGFzaCwgQ1NTVmFsdWVEb3REb3REYXNoLCBDU1NWYWx1ZVdhdmU+KCkpOworICAg
ICAgICBtYXAuc2V0KENTU1Byb3BlcnR5VGV4dE92ZXJmbG93LCBLZXl3b3JkUHJvcGVydHlNYXBF
bnRyeTxNYXRjaFZhbHVlcywgQ1NTVmFsdWVDbGlwLCBDU1NWYWx1ZUVsbGlwc2lzPigpKTsgLy8g
Y2xpcCB8IGVsbGlwc2lzCisgICAgICAgIG1hcC5zZXQoQ1NTUHJvcGVydHlUZXh0T3ZlcmxpbmVN
b2RlLCBLZXl3b3JkUHJvcGVydHlNYXBFbnRyeTxNYXRjaFZhbHVlcywgQ1NTVmFsdWVDb250aW51
b3VzLCBDU1NWYWx1ZVNraXBXaGl0ZVNwYWNlPigpKTsKKyAgICAgICAgbWFwLnNldChDU1NQcm9w
ZXJ0eVRleHRPdmVybGluZVN0eWxlLCBLZXl3b3JkUHJvcGVydHlNYXBFbnRyeTxNYXRjaFZhbHVl
cywgQ1NTVmFsdWVOb25lLCBDU1NWYWx1ZVNvbGlkLCBDU1NWYWx1ZURvdWJsZSwgQ1NTVmFsdWVE
YXNoZWQsIENTU1ZhbHVlRG90RGFzaCwgQ1NTVmFsdWVEb3REb3REYXNoLCBDU1NWYWx1ZVdhdmU+
KCkpOworICAgICAgICBtYXAuc2V0KENTU1Byb3BlcnR5VGV4dFJlbmRlcmluZywgS2V5d29yZFBy
b3BlcnR5TWFwRW50cnk8TWF0Y2hWYWx1ZXMsIENTU1ZhbHVlQXV0bywgQ1NTVmFsdWVPcHRpbWl6
ZXNwZWVkLCBDU1NWYWx1ZU9wdGltaXplbGVnaWJpbGl0eSwgQ1NTVmFsdWVHZW9tZXRyaWNwcmVj
aXNpb24+KCkpOyAvLyBhdXRvIHwgb3B0aW1pemVTcGVlZCB8IG9wdGltaXplTGVnaWJpbGl0eSB8
IGdlb21ldHJpY1ByZWNpc2lvbgorICAgICAgICBtYXAuc2V0KENTU1Byb3BlcnR5VGV4dFRyYW5z
Zm9ybSwgS2V5d29yZFByb3BlcnR5TWFwRW50cnk8TWF0Y2hSYW5nZSwgQ1NTVmFsdWVDYXBpdGFs
aXplLCBDU1NWYWx1ZUxvd2VyY2FzZSwgQ1NTVmFsdWVOb25lPigpKTsgLy8gY2FwaXRhbGl6ZSB8
IHVwcGVyY2FzZSB8IGxvd2VyY2FzZSB8IG5vbmUgfCBpbmhlcml0CisgICAgICAgIG1hcC5zZXQo
Q1NTUHJvcGVydHlUZXh0VW5kZXJsaW5lTW9kZSwgS2V5d29yZFByb3BlcnR5TWFwRW50cnk8TWF0
Y2hWYWx1ZXMsIENTU1ZhbHVlQ29udGludW91cywgQ1NTVmFsdWVTa2lwV2hpdGVTcGFjZT4oKSk7
CisgICAgICAgIG1hcC5zZXQoQ1NTUHJvcGVydHlUZXh0VW5kZXJsaW5lU3R5bGUsIEtleXdvcmRQ
cm9wZXJ0eU1hcEVudHJ5PE1hdGNoVmFsdWVzLCBDU1NWYWx1ZU5vbmUsIENTU1ZhbHVlU29saWQs
IENTU1ZhbHVlRG91YmxlLCBDU1NWYWx1ZURhc2hlZCwgQ1NTVmFsdWVEb3REYXNoLCBDU1NWYWx1
ZURvdERvdERhc2gsIENTU1ZhbHVlV2F2ZT4oKSk7CisgICAgICAgIG1hcC5zZXQoQ1NTUHJvcGVy
dHlWaXNpYmlsaXR5LCBLZXl3b3JkUHJvcGVydHlNYXBFbnRyeTxNYXRjaFZhbHVlcywgQ1NTVmFs
dWVWaXNpYmxlLCBDU1NWYWx1ZUhpZGRlbiwgQ1NTVmFsdWVDb2xsYXBzZT4oKSk7IC8vIHZpc2li
bGUgfCBoaWRkZW4gfCBjb2xsYXBzZSB8IGluaGVyaXQKKyAgICAgICAgbWFwLnNldChDU1NQcm9w
ZXJ0eVdlYmtpdEFwcGVhcmFuY2UsIEtleXdvcmRQcm9wZXJ0eU1hcEVudHJ5PE1hdGNoUmFuZ2Us
IENTU1ZhbHVlQ2hlY2tib3gsIENTU1ZhbHVlVGV4dGFyZWEsIENTU1ZhbHVlTm9uZT4oKSk7Cisg
ICAgICAgIG1hcC5zZXQoQ1NTUHJvcGVydHlXZWJraXRCYWNrZmFjZVZpc2liaWxpdHksIEtleXdv
cmRQcm9wZXJ0eU1hcEVudHJ5PE1hdGNoVmFsdWVzLCBDU1NWYWx1ZVZpc2libGUsIENTU1ZhbHVl
SGlkZGVuPigpKTsKKyAgICAgICAgbWFwLnNldChDU1NQcm9wZXJ0eVdlYmtpdEJvcmRlckFmdGVy
U3R5bGUsIEtleXdvcmRQcm9wZXJ0eU1hcEVudHJ5PE1hdGNoUmFuZ2UsIENTU1ZhbHVlTm9uZSwg
Q1NTVmFsdWVEb3VibGU+KCkpOyAvLyBub25lIHwgaGlkZGVuIHwgZG90dGVkIHwgZGFzaGVkIHwg
c29saWQgfCBkb3VibGUgfCBncm9vdmUgfCByaWRnZSB8IGluc2V0IHwgb3V0c2V0CisgICAgICAg
IG1hcC5zZXQoQ1NTUHJvcGVydHlXZWJraXRCb3JkZXJCZWZvcmVTdHlsZSwgS2V5d29yZFByb3Bl
cnR5TWFwRW50cnk8TWF0Y2hSYW5nZSwgQ1NTVmFsdWVOb25lLCBDU1NWYWx1ZURvdWJsZT4oKSk7
IC8vIG5vbmUgfCBoaWRkZW4gfCBkb3R0ZWQgfCBkYXNoZWQgfCBzb2xpZCB8IGRvdWJsZSB8IGdy
b292ZSB8IHJpZGdlIHwgaW5zZXQgfCBvdXRzZXQKKyAgICAgICAgbWFwLnNldChDU1NQcm9wZXJ0
eVdlYmtpdEJvcmRlckVuZFN0eWxlLCBLZXl3b3JkUHJvcGVydHlNYXBFbnRyeTxNYXRjaFJhbmdl
LCBDU1NWYWx1ZU5vbmUsIENTU1ZhbHVlRG91YmxlPigpKTsgLy8gbm9uZSB8IGhpZGRlbiB8IGRv
dHRlZCB8IGRhc2hlZCB8IHNvbGlkIHwgZG91YmxlIHwgZ3Jvb3ZlIHwgcmlkZ2UgfCBpbnNldCB8
IG91dHNldAorICAgICAgICBtYXAuc2V0KENTU1Byb3BlcnR5V2Via2l0Qm9yZGVyRml0LCBLZXl3
b3JkUHJvcGVydHlNYXBFbnRyeTxNYXRjaFZhbHVlcywgQ1NTVmFsdWVCb3JkZXIsIENTU1ZhbHVl
TGluZXM+KCkpOworICAgICAgICBtYXAuc2V0KENTU1Byb3BlcnR5V2Via2l0Qm9yZGVyU3RhcnRT
dHlsZSwgS2V5d29yZFByb3BlcnR5TWFwRW50cnk8TWF0Y2hSYW5nZSwgQ1NTVmFsdWVOb25lLCBD
U1NWYWx1ZURvdWJsZT4oKSk7IC8vIG5vbmUgfCBoaWRkZW4gfCBkb3R0ZWQgfCBkYXNoZWQgfCBz
b2xpZCB8IGRvdWJsZSB8IGdyb292ZSB8IHJpZGdlIHwgaW5zZXQgfCBvdXRzZXQKKyAgICAgICAg
bWFwLnNldChDU1NQcm9wZXJ0eVdlYmtpdEJveEFsaWduLCBLZXl3b3JkUHJvcGVydHlNYXBFbnRy
eTxNYXRjaFZhbHVlcywgQ1NTVmFsdWVTdHJldGNoLCBDU1NWYWx1ZVN0YXJ0LCBDU1NWYWx1ZUVu
ZCwgQ1NTVmFsdWVDZW50ZXIsIENTU1ZhbHVlQmFzZWxpbmU+KCkpOworICAgICAgICBtYXAuc2V0
KENTU1Byb3BlcnR5V2Via2l0Qm94RGlyZWN0aW9uLCBLZXl3b3JkUHJvcGVydHlNYXBFbnRyeTxN
YXRjaFZhbHVlcywgQ1NTVmFsdWVOb3JtYWwsIENTU1ZhbHVlUmV2ZXJzZT4oKSk7CisgICAgICAg
IG1hcC5zZXQoQ1NTUHJvcGVydHlXZWJraXRCb3hMaW5lcywgS2V5d29yZFByb3BlcnR5TWFwRW50
cnk8TWF0Y2hWYWx1ZXMsIENTU1ZhbHVlU2luZ2xlLCBDU1NWYWx1ZU11bHRpcGxlPigpKTsKKyAg
ICAgICAgbWFwLnNldChDU1NQcm9wZXJ0eVdlYmtpdEJveE9yaWVudCwgS2V5d29yZFByb3BlcnR5
TWFwRW50cnk8TWF0Y2hWYWx1ZXMsIENTU1ZhbHVlSG9yaXpvbnRhbCwgQ1NTVmFsdWVWZXJ0aWNh
bCwgQ1NTVmFsdWVJbmxpbmVBeGlzLCBDU1NWYWx1ZUJsb2NrQXhpcz4oKSk7CisgICAgICAgIG1h
cC5zZXQoQ1NTUHJvcGVydHlXZWJraXRCb3hQYWNrLCBLZXl3b3JkUHJvcGVydHlNYXBFbnRyeTxN
YXRjaFZhbHVlcywgQ1NTVmFsdWVTdGFydCwgQ1NTVmFsdWVFbmQsIENTU1ZhbHVlQ2VudGVyLCBD
U1NWYWx1ZUp1c3RpZnk+KCkpOworICAgICAgICBtYXAuc2V0KENTU1Byb3BlcnR5V2Via2l0Q29s
b3JDb3JyZWN0aW9uLCBLZXl3b3JkUHJvcGVydHlNYXBFbnRyeTxNYXRjaFZhbHVlcywgQ1NTVmFs
dWVTcmdiLCBDU1NWYWx1ZURlZmF1bHQ+KCkpOworICAgICAgICBtYXAuc2V0KENTU1Byb3BlcnR5
V2Via2l0Q29sdW1uUnVsZVN0eWxlLCBLZXl3b3JkUHJvcGVydHlNYXBFbnRyeTxNYXRjaFJhbmdl
LCBDU1NWYWx1ZU5vbmUsIENTU1ZhbHVlRG91YmxlPigpKTsgLy8gbm9uZSB8IGhpZGRlbiB8IGRv
dHRlZCB8IGRhc2hlZCB8IHNvbGlkIHwgZG91YmxlIHwgZ3Jvb3ZlIHwgcmlkZ2UgfCBpbnNldCB8
IG91dHNldAorICAgICAgICBtYXAuc2V0KENTU1Byb3BlcnR5V2Via2l0RmxleEFsaWduLCBLZXl3
b3JkUHJvcGVydHlNYXBFbnRyeTxNYXRjaFZhbHVlcywgQ1NTVmFsdWVTdGFydCwgQ1NTVmFsdWVF
bmQsIENTU1ZhbHVlQ2VudGVyLCBDU1NWYWx1ZUJhc2VsaW5lLCBDU1NWYWx1ZVN0cmV0Y2g+KCkp
OworICAgICAgICBtYXAuc2V0KENTU1Byb3BlcnR5V2Via2l0RmxleERpcmVjdGlvbiwgS2V5d29y
ZFByb3BlcnR5TWFwRW50cnk8TWF0Y2hWYWx1ZXMsIENTU1ZhbHVlUm93LCBDU1NWYWx1ZVJvd1Jl
dmVyc2UsIENTU1ZhbHVlQ29sdW1uLCBDU1NWYWx1ZUNvbHVtblJldmVyc2U+KCkpOworICAgICAg
ICBtYXAuc2V0KENTU1Byb3BlcnR5V2Via2l0RmxleEl0ZW1BbGlnbiwgS2V5d29yZFByb3BlcnR5
TWFwRW50cnk8TWF0Y2hWYWx1ZXMsIENTU1ZhbHVlQXV0bywgQ1NTVmFsdWVTdGFydCwgQ1NTVmFs
dWVFbmQsIENTU1ZhbHVlQ2VudGVyLCBDU1NWYWx1ZVN0cmV0Y2gsIENTU1ZhbHVlQmFzZWxpbmUs
IENTU1ZhbHVlU3RyZXRjaD4oKSk7CisgICAgICAgIG1hcC5zZXQoQ1NTUHJvcGVydHlXZWJraXRG
bGV4UGFjaywgS2V5d29yZFByb3BlcnR5TWFwRW50cnk8TWF0Y2hWYWx1ZXMsIENTU1ZhbHVlU3Rh
cnQsIENTU1ZhbHVlRW5kLCBDU1NWYWx1ZUNlbnRlciwgQ1NTVmFsdWVKdXN0aWZ5LCBDU1NWYWx1
ZURpc3RyaWJ1dGU+KCkpOworICAgICAgICBtYXAuc2V0KENTU1Byb3BlcnR5V2Via2l0RmxleFdy
YXAsIEtleXdvcmRQcm9wZXJ0eU1hcEVudHJ5PE1hdGNoVmFsdWVzLCBDU1NWYWx1ZU5vbmUsIENT
U1ZhbHVlV3JhcCwgQ1NTVmFsdWVXcmFwUmV2ZXJzZT4oKSk7CisgICAgICAgIG1hcC5zZXQoQ1NT
UHJvcGVydHlXZWJraXRGb250S2VybmluZywgS2V5d29yZFByb3BlcnR5TWFwRW50cnk8TWF0Y2hW
YWx1ZXMsIENTU1ZhbHVlQXV0bywgQ1NTVmFsdWVOb3JtYWwsIENTU1ZhbHVlTm9uZT4oKSk7Cisg
ICAgICAgIG1hcC5zZXQoQ1NTUHJvcGVydHlXZWJraXRGb250U21vb3RoaW5nLCBLZXl3b3JkUHJv
cGVydHlNYXBFbnRyeTxNYXRjaFZhbHVlcywgQ1NTVmFsdWVBdXRvLCBDU1NWYWx1ZU5vbmUsIENT
U1ZhbHVlQW50aWFsaWFzZWQsIENTU1ZhbHVlU3VicGl4ZWxBbnRpYWxpYXNlZD4oKSk7CisgICAg
ICAgIG1hcC5zZXQoQ1NTUHJvcGVydHlXZWJraXRIeXBoZW5zLCBLZXl3b3JkUHJvcGVydHlNYXBF
bnRyeTxNYXRjaFZhbHVlcywgQ1NTVmFsdWVOb25lLCBDU1NWYWx1ZU1hbnVhbCwgQ1NTVmFsdWVB
dXRvPigpKTsKKyAgICAgICAgbWFwLnNldChDU1NQcm9wZXJ0eVdlYmtpdExpbmVBbGlnbiwgS2V5
d29yZFByb3BlcnR5TWFwRW50cnk8TWF0Y2hWYWx1ZXMsIENTU1ZhbHVlTm9uZSwgQ1NTVmFsdWVF
ZGdlcz4oKSk7CisgICAgICAgIG1hcC5zZXQoQ1NTUHJvcGVydHlXZWJraXRMaW5lQnJlYWssIEtl
eXdvcmRQcm9wZXJ0eU1hcEVudHJ5PE1hdGNoVmFsdWVzLCBDU1NWYWx1ZU5vcm1hbCwgQ1NTVmFs
dWVBZnRlcldoaXRlU3BhY2U+KCkpOyAvLyBub3JtYWwgfCBhZnRlci13aGl0ZS1zcGFjZQorICAg
ICAgICBtYXAuc2V0KENTU1Byb3BlcnR5V2Via2l0TGluZVNuYXAsIEtleXdvcmRQcm9wZXJ0eU1h
cEVudHJ5PE1hdGNoVmFsdWVzLCBDU1NWYWx1ZU5vbmUsIENTU1ZhbHVlQmFzZWxpbmUsIENTU1Zh
bHVlQ29udGFpbj4oKSk7CisgICAgICAgIG1hcC5zZXQoQ1NTUHJvcGVydHlXZWJraXRNYXJnaW5B
ZnRlckNvbGxhcHNlLCBLZXl3b3JkUHJvcGVydHlNYXBFbnRyeTxNYXRjaFZhbHVlcywgQ1NTVmFs
dWVDb2xsYXBzZSwgQ1NTVmFsdWVTZXBhcmF0ZSwgQ1NTVmFsdWVEaXNjYXJkPigpKTsKKyAgICAg
ICAgbWFwLnNldChDU1NQcm9wZXJ0eVdlYmtpdE1hcmdpbkJlZm9yZUNvbGxhcHNlLCBLZXl3b3Jk
UHJvcGVydHlNYXBFbnRyeTxNYXRjaFZhbHVlcywgQ1NTVmFsdWVDb2xsYXBzZSwgQ1NTVmFsdWVT
ZXBhcmF0ZSwgQ1NTVmFsdWVEaXNjYXJkPigpKTsKKyAgICAgICAgbWFwLnNldChDU1NQcm9wZXJ0
eVdlYmtpdE1hcmdpbkJvdHRvbUNvbGxhcHNlLCBLZXl3b3JkUHJvcGVydHlNYXBFbnRyeTxNYXRj
aFZhbHVlcywgQ1NTVmFsdWVDb2xsYXBzZSwgQ1NTVmFsdWVTZXBhcmF0ZSwgQ1NTVmFsdWVEaXNj
YXJkPigpKTsKKyAgICAgICAgbWFwLnNldChDU1NQcm9wZXJ0eVdlYmtpdE1hcmdpblRvcENvbGxh
cHNlLCBLZXl3b3JkUHJvcGVydHlNYXBFbnRyeTxNYXRjaFZhbHVlcywgQ1NTVmFsdWVDb2xsYXBz
ZSwgQ1NTVmFsdWVTZXBhcmF0ZSwgQ1NTVmFsdWVEaXNjYXJkPigpKTsKKyAgICAgICAgbWFwLnNl
dChDU1NQcm9wZXJ0eVdlYmtpdE1hcnF1ZWVEaXJlY3Rpb24sIEtleXdvcmRQcm9wZXJ0eU1hcEVu
dHJ5PE1hdGNoVmFsdWVzLCBDU1NWYWx1ZUZvcndhcmRzLCBDU1NWYWx1ZUJhY2t3YXJkcywgQ1NT
VmFsdWVBaGVhZCwgQ1NTVmFsdWVSZXZlcnNlLCBDU1NWYWx1ZUxlZnQsIENTU1ZhbHVlUmlnaHQs
IENTU1ZhbHVlRG93biwgQ1NTVmFsdWVVcCwgQ1NTVmFsdWVBdXRvPigpKTsKKyAgICAgICAgbWFw
LnNldChDU1NQcm9wZXJ0eVdlYmtpdE1hcnF1ZWVTdHlsZSwgS2V5d29yZFByb3BlcnR5TWFwRW50
cnk8TWF0Y2hWYWx1ZXMsIENTU1ZhbHVlTm9uZSwgQ1NTVmFsdWVTbGlkZSwgQ1NTVmFsdWVTY3Jv
bGwsIENTU1ZhbHVlQWx0ZXJuYXRlPigpKTsKKyAgICAgICAgbWFwLnNldChDU1NQcm9wZXJ0eVdl
YmtpdE1hdGNoTmVhcmVzdE1haWxCbG9ja3F1b3RlQ29sb3IsIEtleXdvcmRQcm9wZXJ0eU1hcEVu
dHJ5PE1hdGNoVmFsdWVzLCBDU1NWYWx1ZU5vcm1hbCwgQ1NTVmFsdWVNYXRjaD4oKSk7IC8vIG5v
cm1hbCB8IG1hdGNoCisgICAgICAgIG1hcC5zZXQoQ1NTUHJvcGVydHlXZWJraXROYnNwTW9kZSwg
S2V5d29yZFByb3BlcnR5TWFwRW50cnk8TWF0Y2hWYWx1ZXMsIENTU1ZhbHVlTm9ybWFsLCBDU1NW
YWx1ZVNwYWNlPigpKTsgLy8gbm9ybWFsIHwgc3BhY2UKKyNpZiBFTkFCTEUoT1ZFUkZMT1dfU0NS
T0xMSU5HKQorICAgICAgICBtYXAuc2V0KENTU1Byb3BlcnR5V2Via2l0T3ZlcmZsb3dTY3JvbGxp
bmcsIEtleXdvcmRQcm9wZXJ0eU1hcEVudHJ5PE1hdGNoVmFsdWVzLCBDU1NWYWx1ZUF1dG8sIENT
U1ZhbHVlVG91Y2g+KCkpOworI2VuZGlmCisgICAgICAgIG1hcC5zZXQoQ1NTUHJvcGVydHlXZWJr
aXRQcmludENvbG9yQWRqdXN0LCBLZXl3b3JkUHJvcGVydHlNYXBFbnRyeTxNYXRjaFZhbHVlcywg
Q1NTVmFsdWVFeGFjdCwgQ1NTVmFsdWVFY29ub215PigpKTsKKyAgICAgICAgbWFwLnNldChDU1NQ
cm9wZXJ0eVdlYmtpdFJ0bE9yZGVyaW5nLCBLZXl3b3JkUHJvcGVydHlNYXBFbnRyeTxNYXRjaFZh
bHVlcywgQ1NTVmFsdWVMb2dpY2FsLCBDU1NWYWx1ZVZpc3VhbD4oKSk7CisgICAgICAgIG1hcC5z
ZXQoQ1NTUHJvcGVydHlXZWJraXRUZXh0Q29tYmluZSwgS2V5d29yZFByb3BlcnR5TWFwRW50cnk8
TWF0Y2hWYWx1ZXMsIENTU1ZhbHVlTm9uZSwgQ1NTVmFsdWVIb3Jpem9udGFsPigpKTsKKyAgICAg
ICAgbWFwLnNldChDU1NQcm9wZXJ0eVdlYmtpdFRleHRFbXBoYXNpc1Bvc2l0aW9uLCBLZXl3b3Jk
UHJvcGVydHlNYXBFbnRyeTxNYXRjaFZhbHVlcywgQ1NTVmFsdWVPdmVyLCBDU1NWYWx1ZVVuZGVy
PigpKTsKKyAgICAgICAgbWFwLnNldChDU1NQcm9wZXJ0eVdlYmtpdFRleHRTZWN1cml0eSwgS2V5
d29yZFByb3BlcnR5TWFwRW50cnk8TWF0Y2hWYWx1ZXMsIENTU1ZhbHVlRGlzYywgQ1NTVmFsdWVD
aXJjbGUsIENTU1ZhbHVlU3F1YXJlLCBDU1NWYWx1ZU5vbmU+KCkpOyAvLyBkaXNjIHwgY2lyY2xl
IHwgc3F1YXJlIHwgbm9uZSB8IGluaGVyaXQKKyAgICAgICAgbWFwLnNldChDU1NQcm9wZXJ0eVdl
YmtpdFRleHRTaXplQWRqdXN0LCBLZXl3b3JkUHJvcGVydHlNYXBFbnRyeTxNYXRjaFZhbHVlcywg
Q1NTVmFsdWVBdXRvLCBDU1NWYWx1ZU5vbmU+KCkpOworICAgICAgICBtYXAuc2V0KENTU1Byb3Bl
cnR5V2Via2l0VHJhbnNmb3JtU3R5bGUsIEtleXdvcmRQcm9wZXJ0eU1hcEVudHJ5PE1hdGNoVmFs
dWVzLCBDU1NWYWx1ZUZsYXQsIENTU1ZhbHVlUHJlc2VydmUzZD4oKSk7IC8vIGNsaXAgfCBlbGxp
cHNpcworICAgICAgICBtYXAuc2V0KENTU1Byb3BlcnR5V2Via2l0VXNlckRyYWcsIEtleXdvcmRQ
cm9wZXJ0eU1hcEVudHJ5PE1hdGNoVmFsdWVzLCBDU1NWYWx1ZUF1dG8sIENTU1ZhbHVlTm9uZSwg
Q1NTVmFsdWVFbGVtZW50PigpKTsgLy8gYXV0byB8IG5vbmUgfCBlbGVtZW50CisgICAgICAgIG1h
cC5zZXQoQ1NTUHJvcGVydHlXZWJraXRVc2VyTW9kaWZ5LCBLZXl3b3JkUHJvcGVydHlNYXBFbnRy
eTxNYXRjaFZhbHVlcywgQ1NTVmFsdWVSZWFkT25seSwgQ1NTVmFsdWVSZWFkV3JpdGUsIENTU1Zh
bHVlUmVhZFdyaXRlUGxhaW50ZXh0T25seT4oKSk7IC8vIHJlYWQtb25seSB8IHJlYWQtd3JpdGUK
KyAgICAgICAgbWFwLnNldChDU1NQcm9wZXJ0eVdlYmtpdFVzZXJTZWxlY3QsIEtleXdvcmRQcm9w
ZXJ0eU1hcEVudHJ5PE1hdGNoVmFsdWVzLCBDU1NWYWx1ZUF1dG8sIENTU1ZhbHVlTm9uZSwgQ1NT
VmFsdWVUZXh0PigpKTsgLy8gYXV0byB8IG5vbmUgfCB0ZXh0CisgICAgICAgIG1hcC5zZXQoQ1NT
UHJvcGVydHlXZWJraXRXcmFwRmxvdywgS2V5d29yZFByb3BlcnR5TWFwRW50cnk8TWF0Y2hWYWx1
ZXMsIENTU1ZhbHVlQXV0bywgQ1NTVmFsdWVCb3RoLCBDU1NWYWx1ZUxlZnQsIENTU1ZhbHVlUmln
aHQsIENTU1ZhbHVlTWF4aW11bSwgQ1NTVmFsdWVDbGVhcj4oKSk7CisgICAgICAgIG1hcC5zZXQo
Q1NTUHJvcGVydHlXZWJraXRXcmFwVGhyb3VnaCwgS2V5d29yZFByb3BlcnR5TWFwRW50cnk8TWF0
Y2hWYWx1ZXMsIENTU1ZhbHVlV3JhcCwgQ1NTVmFsdWVOb25lPigpKTsKKyAgICAgICAgbWFwLnNl
dChDU1NQcm9wZXJ0eVdlYmtpdFdyaXRpbmdNb2RlLCBLZXl3b3JkUHJvcGVydHlNYXBFbnRyeTxN
YXRjaFJhbmdlLCBDU1NWYWx1ZUhvcml6b250YWxUYiwgQ1NTVmFsdWVIb3Jpem9udGFsQnQ+KCkp
OworICAgICAgICBtYXAuc2V0KENTU1Byb3BlcnR5V2hpdGVTcGFjZSwgS2V5d29yZFByb3BlcnR5
TWFwRW50cnk8TWF0Y2hWYWx1ZXMsIENTU1ZhbHVlTm9ybWFsLCBDU1NWYWx1ZVByZSwgQ1NTVmFs
dWVQcmVXcmFwLCBDU1NWYWx1ZVByZUxpbmUsIENTU1ZhbHVlTm93cmFwPigpKTsgLy8gbm9ybWFs
IHwgcHJlIHwgbm93cmFwIHwgaW5oZXJpdAorICAgICAgICBtYXAuc2V0KENTU1Byb3BlcnR5V29y
ZEJyZWFrLCBLZXl3b3JkUHJvcGVydHlNYXBFbnRyeTxNYXRjaFZhbHVlcywgQ1NTVmFsdWVOb3Jt
YWwsIENTU1ZhbHVlQnJlYWtBbGwsIENTU1ZhbHVlQnJlYWtXb3JkPigpKTsgLy8gbm9ybWFsIHwg
YnJlYWstYWxsIHwgYnJlYWstd29yZCAodGhpcyBpcyBhIGN1c3RvbSBleHRlbnNpb24pCisgICAg
ICAgIG1hcC5zZXQoQ1NTUHJvcGVydHlXb3JkV3JhcCwgS2V5d29yZFByb3BlcnR5TWFwRW50cnk8
TWF0Y2hWYWx1ZXMsIENTU1ZhbHVlTm9ybWFsLCBDU1NWYWx1ZUJyZWFrV29yZD4oKSk7IC8vIG5v
cm1hbCB8IGJyZWFrLXdvcmQKKyAgICB9CisgICAgcmV0dXJuIG1hcC5nZXQocHJvcGVydHlJZCk7
Cit9CisKK3N0YXRpYyBib29sIHBhcnNlS2V5d29yZFZhbHVlKFN0eWxlUHJvcGVydHlTZXQqIGRl
Y2xhcmF0aW9uLCBpbnQgcHJvcGVydHlJZCwgY29uc3QgU3RyaW5nJiBzdHJpbmcsIGJvb2wgaW1w
b3J0YW50LCBDU1NTdHlsZVNoZWV0KiBjb250ZXh0U3R5bGVTaGVldCkKK3sKKyAgICBpZiAoc3Ry
aW5nLmlzRW1wdHkoKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgY29uc3QgUHJvcGVy
dHlNYXBFbnRyeSBwcm9wZXJ0eSA9IHByb3BlcnR5Rm9ySUQocHJvcGVydHlJZCk7CisgICAgaWYg
KCFwcm9wZXJ0eS5pc1ZhbGlkKCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIENTU1Bh
cnNlclN0cmluZyBjc3NTdHJpbmc7CisgICAgY3NzU3RyaW5nLmNoYXJhY3RlcnMgPSBjb25zdF9j
YXN0PFVDaGFyKj4oc3RyaW5nLmNoYXJhY3RlcnMoKSk7CisgICAgY3NzU3RyaW5nLmxlbmd0aCA9
IHN0cmluZy5sZW5ndGgoKTsKKyAgICBpbnQgdmFsdWVJRCA9IGNzc1ZhbHVlS2V5d29yZElEKGNz
c1N0cmluZyk7CisKKyAgICBpZiAoIXZhbHVlSUQpCisgICAgICAgIHJldHVybiBmYWxzZTsKKwor
ICAgIERvY3VtZW50KiBkb2N1bWVudCA9IGNvbnRleHRTdHlsZVNoZWV0LT5maW5kRG9jdW1lbnQo
KTsKKyAgICBSZWZQdHI8Q1NTVmFsdWU+IHZhbHVlOworICAgIENTU1ZhbHVlUG9vbCogY3NzVmFs
dWVQb29sID0gZG9jdW1lbnQgPyBkb2N1bWVudC0+Y3NzVmFsdWVQb29sKCkuZ2V0KCkgOiAwOwor
ICAgIGlmICh2YWx1ZUlEID09IENTU1ZhbHVlSW5oZXJpdCkgeworICAgICAgICB2YWx1ZSA9IGNz
c1ZhbHVlUG9vbCA/IGNzc1ZhbHVlUG9vbC0+Y3JlYXRlSW5oZXJpdGVkVmFsdWUoKSA6IENTU0lu
aGVyaXRlZFZhbHVlOjpjcmVhdGUoKTsKKyAgICAgICAgZGVjbGFyYXRpb24tPmFkZFBhcnNlZFBy
b3BlcnR5KENTU1Byb3BlcnR5KHByb3BlcnR5SWQsIHZhbHVlLnJlbGVhc2UoKSwgaW1wb3J0YW50
KSk7CisgICAgICAgIHJldHVybiB0cnVlOworICAgIH0KKyAgICBpZiAodmFsdWVJRCA9PSBDU1NW
YWx1ZUluaXRpYWwpIHsKKyAgICAgICAgdmFsdWUgPSBjc3NWYWx1ZVBvb2wgPyBjc3NWYWx1ZVBv
b2wtPmNyZWF0ZUV4cGxpY2l0SW5pdGlhbFZhbHVlKCkgOiBDU1NJbml0aWFsVmFsdWU6OmNyZWF0
ZUV4cGxpY2l0KCk7CisgICAgICAgIGRlY2xhcmF0aW9uLT5hZGRQYXJzZWRQcm9wZXJ0eShDU1NQ
cm9wZXJ0eShwcm9wZXJ0eUlkLCB2YWx1ZS5yZWxlYXNlKCksIGltcG9ydGFudCkpOworICAgICAg
ICByZXR1cm4gdHJ1ZTsKKyAgICB9CisKKyAgICBpZiAoIXByb3BlcnR5Lm1hdGNoKHZhbHVlSUQp
KQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICB2YWx1ZSA9IGRvY3VtZW50ID8gY3NzVmFs
dWVQb29sLT5jcmVhdGVJZGVudGlmaWVyVmFsdWUodmFsdWVJRCkgOiBDU1NQcmltaXRpdmVWYWx1
ZTo6Y3JlYXRlSWRlbnRpZmllcih2YWx1ZUlEKTsKKyAgICBkZWNsYXJhdGlvbi0+YWRkUGFyc2Vk
UHJvcGVydHkoQ1NTUHJvcGVydHkocHJvcGVydHlJZCwgdmFsdWUucmVsZWFzZSgpLCBpbXBvcnRh
bnQpKTsKKyAgICByZXR1cm4gdHJ1ZTsKK30KKwogUGFzc1JlZlB0cjxDU1NWYWx1ZUxpc3Q+IENT
U1BhcnNlcjo6cGFyc2VGb250RmFjZVZhbHVlKGNvbnN0IEF0b21pY1N0cmluZyYgc3RyaW5nLCBD
U1NTdHlsZVNoZWV0KiBjb250ZXh0U3R5bGVTaGVldCkKIHsKICAgICBSZWZQdHI8U3R5bGVQcm9w
ZXJ0eVNldD4gZHVtbXlTdHlsZSA9IFN0eWxlUHJvcGVydHlTZXQ6OmNyZWF0ZSgpOwpAQCAtNDkz
LDYgKzY3NSw4IEBAIGJvb2wgQ1NTUGFyc2VyOjpwYXJzZVZhbHVlKFN0eWxlUHJvcGVydHlTZXQq
IGRlY2xhcmF0aW9uLCBpbnQgcHJvcGVydHlJZCwgY29uc3QKICAgICAgICAgcmV0dXJuIHRydWU7
CiAgICAgaWYgKHBhcnNlQ29sb3JWYWx1ZShkZWNsYXJhdGlvbiwgcHJvcGVydHlJZCwgc3RyaW5n
LCBpbXBvcnRhbnQsIHN0cmljdCwgY29udGV4dFN0eWxlU2hlZXQpKQogICAgICAgICByZXR1cm4g
dHJ1ZTsKKyAgICBpZiAocGFyc2VLZXl3b3JkVmFsdWUoZGVjbGFyYXRpb24sIHByb3BlcnR5SWQs
IHN0cmluZywgaW1wb3J0YW50LCBjb250ZXh0U3R5bGVTaGVldCkpCisgICAgICAgIHJldHVybiB0
cnVlOwogICAgIENTU1BhcnNlciBwYXJzZXIoc3RyaWN0KTsKICAgICByZXR1cm4gcGFyc2VyLnBh
cnNlVmFsdWUoZGVjbGFyYXRpb24sIHByb3BlcnR5SWQsIHN0cmluZywgaW1wb3J0YW50LCBjb250
ZXh0U3R5bGVTaGVldCk7CiB9CkBAIC05MzAsNiArMTExNCwyMyBAQCBib29sIENTU1BhcnNlcjo6
cGFyc2VWYWx1ZShpbnQgcHJvcElkLCBib29sIGltcG9ydGFudCkKICAgICBib29sIHZhbGlkUHJp
bWl0aXZlID0gZmFsc2U7CiAgICAgUmVmUHRyPENTU1ZhbHVlPiBwYXJzZWRWYWx1ZTsKIAorICAg
IGlmIChpZCkgeworICAgICAgICBjb25zdCBQcm9wZXJ0eU1hcEVudHJ5IHByb3BlcnR5ID0gcHJv
cGVydHlGb3JJRChwcm9wSWQpOworICAgICAgICBpZiAocHJvcGVydHkuaXNWYWxpZCgpKSB7Cisg
ICAgICAgICAgICBpZiAoIXByb3BlcnR5Lm1hdGNoKGlkKSkKKyAgICAgICAgICAgICAgICByZXR1
cm4gZmFsc2U7CisKKyAgICAgICAgICAgIHBhcnNlZFZhbHVlID0gcGFyc2VWYWxpZFByaW1pdGl2
ZShpZCwgdmFsdWUpOworICAgICAgICAgICAgbV92YWx1ZUxpc3QtPm5leHQoKTsKKyAgICAgICAg
ICAgIEFTU0VSVCghbV9wYXJzZWRDYWxjdWxhdGlvbik7CisgICAgICAgICAgICBpZiAoIW1fdmFs
dWVMaXN0LT5jdXJyZW50KCkgfHwgaW5TaG9ydGhhbmQoKSkgeworICAgICAgICAgICAgICAgIGFk
ZFByb3BlcnR5KHByb3BJZCwgcGFyc2VkVmFsdWUucmVsZWFzZSgpLCBpbXBvcnRhbnQpOworICAg
ICAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICAgICAgfQorICAgICAgICAgICAgcmV0
dXJuIGZhbHNlOworICAgICAgICB9CisgICAgfQorCiAgICAgc3dpdGNoIChzdGF0aWNfY2FzdDxD
U1NQcm9wZXJ0eUlEPihwcm9wSWQpKSB7CiAgICAgICAgIC8qIFRoZSBjb21tZW50IHRvIHRoZSBs
ZWZ0IGRlZmluZXMgYWxsIHZhbGlkIHZhbHVlIG9mIHRoaXMgcHJvcGVydGllcyBhcyBkZWZpbmVk
CiAgICAgICAgICAqIGluIENTUyAyLCBBcHBlbmRpeCBGLiBQcm9wZXJ0eSBpbmRleApAQCAtMTAw
NCwyNSArMTIwNSwxMCBAQCBib29sIENTU1BhcnNlcjo6cGFyc2VWYWx1ZShpbnQgcHJvcElkLCBi
b29sIGltcG9ydGFudCkKICAgICAgICAgICAgIHZhbGlkUHJpbWl0aXZlID0gKHByb3BJZCA9PSBD
U1NQcm9wZXJ0eVdlYmtpdFJlZ2lvbkJyZWFrSW5zaWRlKSA/IGNzc1JlZ2lvbnNFbmFibGVkKCkg
OiB0cnVlOwogICAgICAgICBicmVhazsKIAotICAgIGNhc2UgQ1NTUHJvcGVydHlFbXB0eUNlbGxz
OiAgICAgICAgICAvLyBzaG93IHwgaGlkZSB8IGluaGVyaXQKLSAgICAgICAgaWYgKGlkID09IENT
U1ZhbHVlU2hvdwotICAgICAgICAgICAgfHwgaWQgPT0gQ1NTVmFsdWVIaWRlKQotICAgICAgICAg
ICAgdmFsaWRQcmltaXRpdmUgPSB0cnVlOwotICAgICAgICBicmVhazsKLQogICAgIGNhc2UgQ1NT
UHJvcGVydHlDb250ZW50OiAgICAgICAgICAgICAgLy8gWyA8c3RyaW5nPiB8IDx1cmk+IHwgPGNv
dW50ZXI+IHwgYXR0cihYKSB8IG9wZW4tcXVvdGUgfAogICAgICAgICAvLyBjbG9zZS1xdW90ZSB8
IG5vLW9wZW4tcXVvdGUgfCBuby1jbG9zZS1xdW90ZSBdKyB8IGluaGVyaXQKICAgICAgICAgcmV0
dXJuIHBhcnNlQ29udGVudChwcm9wSWQsIGltcG9ydGFudCk7CiAKLSAgICBjYXNlIENTU1Byb3Bl
cnR5V2hpdGVTcGFjZTogICAgICAgICAgLy8gbm9ybWFsIHwgcHJlIHwgbm93cmFwIHwgaW5oZXJp
dAotICAgICAgICBpZiAoaWQgPT0gQ1NTVmFsdWVOb3JtYWwKLSAgICAgICAgICAgIHx8IGlkID09
IENTU1ZhbHVlUHJlCi0gICAgICAgICAgICB8fCBpZCA9PSBDU1NWYWx1ZVByZVdyYXAKLSAgICAg
ICAgICAgIHx8IGlkID09IENTU1ZhbHVlUHJlTGluZQotICAgICAgICAgICAgfHwgaWQgPT0gQ1NT
VmFsdWVOb3dyYXApCi0gICAgICAgICAgICB2YWxpZFByaW1pdGl2ZSA9IHRydWU7Ci0gICAgICAg
IGJyZWFrOwotCiAgICAgY2FzZSBDU1NQcm9wZXJ0eUNsaXA6ICAgICAgICAgICAgICAgICAvLyA8
c2hhcGU+IHwgYXV0byB8IGluaGVyaXQKICAgICAgICAgaWYgKGlkID09IENTU1ZhbHVlQXV0bykK
ICAgICAgICAgICAgIHZhbGlkUHJpbWl0aXZlID0gdHJ1ZTsKQEAgLTEwMzMsMjIgKzEyMTksNiBA
QCBib29sIENTU1BhcnNlcjo6cGFyc2VWYWx1ZShpbnQgcHJvcElkLCBib29sIGltcG9ydGFudCkK
ICAgICAvKiBTdGFydCBvZiBzdXBwb3J0ZWQgQ1NTIHByb3BlcnRpZXMgd2l0aCB2YWxpZGF0aW9u
LiBUaGlzIGlzIG5lZWRlZCBmb3IgcGFyc2VTaG9ydGhhbmQgdG8gd29yawogICAgICAqIGNvcnJl
Y3RseSBhbmQgYWxsb3dzIG9wdGltaXphdGlvbiBpbiBXZWJDb3JlOjphcHBseVJ1bGUoLi4pCiAg
ICAgICovCi0gICAgY2FzZSBDU1NQcm9wZXJ0eUNhcHRpb25TaWRlOiAgICAgICAgIC8vIHRvcCB8
IGJvdHRvbSB8IGxlZnQgfCByaWdodCB8IGluaGVyaXQKLSAgICAgICAgaWYgKGlkID09IENTU1Zh
bHVlTGVmdCB8fCBpZCA9PSBDU1NWYWx1ZVJpZ2h0IHx8Ci0gICAgICAgICAgICBpZCA9PSBDU1NW
YWx1ZVRvcCB8fCBpZCA9PSBDU1NWYWx1ZUJvdHRvbSkKLSAgICAgICAgICAgIHZhbGlkUHJpbWl0
aXZlID0gdHJ1ZTsKLSAgICAgICAgYnJlYWs7Ci0KLSAgICBjYXNlIENTU1Byb3BlcnR5Qm9yZGVy
Q29sbGFwc2U6ICAgICAgLy8gY29sbGFwc2UgfCBzZXBhcmF0ZSB8IGluaGVyaXQKLSAgICAgICAg
aWYgKGlkID09IENTU1ZhbHVlQ29sbGFwc2UgfHwgaWQgPT0gQ1NTVmFsdWVTZXBhcmF0ZSkKLSAg
ICAgICAgICAgIHZhbGlkUHJpbWl0aXZlID0gdHJ1ZTsKLSAgICAgICAgYnJlYWs7Ci0KLSAgICBj
YXNlIENTU1Byb3BlcnR5VmlzaWJpbGl0eTogICAgICAgICAgIC8vIHZpc2libGUgfCBoaWRkZW4g
fCBjb2xsYXBzZSB8IGluaGVyaXQKLSAgICAgICAgaWYgKGlkID09IENTU1ZhbHVlVmlzaWJsZSB8
fCBpZCA9PSBDU1NWYWx1ZUhpZGRlbiB8fCBpZCA9PSBDU1NWYWx1ZUNvbGxhcHNlKQotICAgICAg
ICAgICAgdmFsaWRQcmltaXRpdmUgPSB0cnVlOwotICAgICAgICBicmVhazsKLQogICAgIGNhc2Ug
Q1NTUHJvcGVydHlPdmVyZmxvdzogewogICAgICAgICBTaG9ydGhhbmRTY29wZSBzY29wZSh0aGlz
LCBwcm9wSWQpOwogICAgICAgICBpZiAobnVtICE9IDEgfHwgIXBhcnNlVmFsdWUoQ1NTUHJvcGVy
dHlPdmVyZmxvd1gsIGltcG9ydGFudCkpCkBAIC0xMDU3LDU5ICsxMjI3LDYgQEAgYm9vbCBDU1NQ
YXJzZXI6OnBhcnNlVmFsdWUoaW50IHByb3BJZCwgYm9vbCBpbXBvcnRhbnQpCiAgICAgICAgIGFk
ZFByb3BlcnR5KENTU1Byb3BlcnR5T3ZlcmZsb3dZLCB2YWx1ZSwgaW1wb3J0YW50KTsKICAgICAg
ICAgcmV0dXJuIHRydWU7CiAgICAgfQotICAgIGNhc2UgQ1NTUHJvcGVydHlPdmVyZmxvd1g6Ci0g
ICAgY2FzZSBDU1NQcm9wZXJ0eU92ZXJmbG93WTogICAgICAgICAgIC8vIHZpc2libGUgfCBoaWRk
ZW4gfCBzY3JvbGwgfCBhdXRvIHwgbWFycXVlZSB8IG92ZXJsYXkgfCBpbmhlcml0Ci0gICAgICAg
IGlmIChpZCA9PSBDU1NWYWx1ZVZpc2libGUgfHwgaWQgPT0gQ1NTVmFsdWVIaWRkZW4gfHwgaWQg
PT0gQ1NTVmFsdWVTY3JvbGwgfHwgaWQgPT0gQ1NTVmFsdWVBdXRvIHx8Ci0gICAgICAgICAgICBp
ZCA9PSBDU1NWYWx1ZU92ZXJsYXkgfHwgaWQgPT0gQ1NTVmFsdWVXZWJraXRNYXJxdWVlKQotICAg
ICAgICAgICAgdmFsaWRQcmltaXRpdmUgPSB0cnVlOwotICAgICAgICBicmVhazsKLQotICAgIGNh
c2UgQ1NTUHJvcGVydHlMaXN0U3R5bGVQb3NpdGlvbjogIC8vIGluc2lkZSB8IG91dHNpZGUgfCBp
bmhlcml0Ci0gICAgICAgIGlmIChpZCA9PSBDU1NWYWx1ZUluc2lkZSB8fCBpZCA9PSBDU1NWYWx1
ZU91dHNpZGUpCi0gICAgICAgICAgICB2YWxpZFByaW1pdGl2ZSA9IHRydWU7Ci0gICAgICAgIGJy
ZWFrOwotCi0gICAgY2FzZSBDU1NQcm9wZXJ0eUxpc3RTdHlsZVR5cGU6Ci0gICAgICAgIC8vIFNl
ZSBzZWN0aW9uIENTU19QUk9QX0xJU1RfU1RZTEVfVFlQRSBvZiBmaWxlIENTU1ZhbHVlS2V5d29y
ZHMuaW4KLSAgICAgICAgLy8gZm9yIHRoZSBsaXN0IG9mIHN1cHBvcnRlZCBsaXN0LXN0eWxlLXR5
cGVzLgotICAgICAgICBpZiAoKGlkID49IENTU1ZhbHVlRGlzYyAmJiBpZCA8PSBDU1NWYWx1ZUth
dGFrYW5hSXJvaGEpIHx8IGlkID09IENTU1ZhbHVlTm9uZSkKLSAgICAgICAgICAgIHZhbGlkUHJp
bWl0aXZlID0gdHJ1ZTsKLSAgICAgICAgYnJlYWs7Ci0KLSAgICBjYXNlIENTU1Byb3BlcnR5RGlz
cGxheToKLSAgICAgICAgLy8gaW5saW5lIHwgYmxvY2sgfCBsaXN0LWl0ZW0gfCBydW4taW4gfCBp
bmxpbmUtYmxvY2sgfCB0YWJsZSB8Ci0gICAgICAgIC8vIGlubGluZS10YWJsZSB8IHRhYmxlLXJv
dy1ncm91cCB8IHRhYmxlLWhlYWRlci1ncm91cCB8IHRhYmxlLWZvb3Rlci1ncm91cCB8IHRhYmxl
LXJvdyB8Ci0gICAgICAgIC8vIHRhYmxlLWNvbHVtbi1ncm91cCB8IHRhYmxlLWNvbHVtbiB8IHRh
YmxlLWNlbGwgfCB0YWJsZS1jYXB0aW9uIHwgLXdlYmtpdC1ib3ggfCAtd2Via2l0LWlubGluZS1i
b3ggfCBub25lIHwgaW5oZXJpdAotICAgICAgICAvLyAtd2Via2l0LWZsZXhib3ggfCAtd2Via2l0
LWlubGluZS1mbGV4Ym94IHwgLXdlYmtpdC1ncmlkIHwgLXdlYmtpdC1pbmxpbmUtZ3JpZAotICAg
ICAgICBpZiAoKGlkID49IENTU1ZhbHVlSW5saW5lICYmIGlkIDw9IENTU1ZhbHVlV2Via2l0SW5s
aW5lRmxleGJveCkgfHwgaWQgPT0gQ1NTVmFsdWVOb25lKQotICAgICAgICAgICAgdmFsaWRQcmlt
aXRpdmUgPSB0cnVlOwotI2lmIEVOQUJMRShDU1NfR1JJRF9MQVlPVVQpCi0gICAgICAgIGlmIChp
ZCA9PSBDU1NWYWx1ZVdlYmtpdEdyaWQgfHwgaWQgPT0gQ1NTVmFsdWVXZWJraXRJbmxpbmVHcmlk
KQotICAgICAgICAgICAgdmFsaWRQcmltaXRpdmUgPSB0cnVlOwotI2VuZGlmCi0gICAgICAgIGJy
ZWFrOwotCi0gICAgY2FzZSBDU1NQcm9wZXJ0eURpcmVjdGlvbjogICAgICAgICAgICAvLyBsdHIg
fCBydGwgfCBpbmhlcml0Ci0gICAgICAgIGlmIChpZCA9PSBDU1NWYWx1ZUx0ciB8fCBpZCA9PSBD
U1NWYWx1ZVJ0bCkKLSAgICAgICAgICAgIHZhbGlkUHJpbWl0aXZlID0gdHJ1ZTsKLSAgICAgICAg
YnJlYWs7Ci0KLSAgICBjYXNlIENTU1Byb3BlcnR5VGV4dFRyYW5zZm9ybTogICAgICAgLy8gY2Fw
aXRhbGl6ZSB8IHVwcGVyY2FzZSB8IGxvd2VyY2FzZSB8IG5vbmUgfCBpbmhlcml0Ci0gICAgICAg
IGlmICgoaWQgPj0gQ1NTVmFsdWVDYXBpdGFsaXplICYmIGlkIDw9IENTU1ZhbHVlTG93ZXJjYXNl
KSB8fCBpZCA9PSBDU1NWYWx1ZU5vbmUpCi0gICAgICAgICAgICB2YWxpZFByaW1pdGl2ZSA9IHRy
dWU7Ci0gICAgICAgIGJyZWFrOwotCi0gICAgY2FzZSBDU1NQcm9wZXJ0eUZsb2F0OiAgICAgICAg
ICAgICAgICAvLyBsZWZ0IHwgcmlnaHQgfCBub25lIHwgcG9zaXRpb25lZCB8IGNlbnRlciAoZm9y
IGJ1Z2d5IENTUywgbWFwcyB0byBub25lKQotICAgICAgICBpZiAoaWQgPT0gQ1NTVmFsdWVMZWZ0
IHx8IGlkID09IENTU1ZhbHVlUmlnaHQKLSAgICAgICAgICAgIHx8IGlkID09IENTU1ZhbHVlTm9u
ZSB8fCBpZCA9PSBDU1NWYWx1ZUNlbnRlciB8fCBpZCA9PSBDU1NWYWx1ZVdlYmtpdFBvc2l0aW9u
ZWQpCi0gICAgICAgICAgICB2YWxpZFByaW1pdGl2ZSA9IHRydWU7Ci0gICAgICAgIGJyZWFrOwot
Ci0gICAgY2FzZSBDU1NQcm9wZXJ0eUNsZWFyOiAgICAgICAgICAgICAgICAvLyBub25lIHwgbGVm
dCB8IHJpZ2h0IHwgYm90aCB8IGluaGVyaXQKLSAgICAgICAgaWYgKGlkID09IENTU1ZhbHVlTm9u
ZSB8fCBpZCA9PSBDU1NWYWx1ZUxlZnQKLSAgICAgICAgICAgIHx8IGlkID09IENTU1ZhbHVlUmln
aHQgfHwgaWQgPT0gQ1NTVmFsdWVCb3RoKQotICAgICAgICAgICAgdmFsaWRQcmltaXRpdmUgPSB0
cnVlOwotICAgICAgICBicmVhazsKIAogICAgIGNhc2UgQ1NTUHJvcGVydHlUZXh0QWxpZ246CiAg
ICAgICAgIC8vIGxlZnQgfCByaWdodCB8IGNlbnRlciB8IGp1c3RpZnkgfCB3ZWJraXRfbGVmdCB8
IHdlYmtpdF9yaWdodCB8IHdlYmtpdF9jZW50ZXIgfCB3ZWJraXRfbWF0Y2hfcGFyZW50IHwKQEAg
LTExMTksMjQgKzEyMzYsNiBAQCBib29sIENTU1BhcnNlcjo6cGFyc2VWYWx1ZShpbnQgcHJvcElk
LCBib29sIGltcG9ydGFudCkKICAgICAgICAgICAgIHZhbGlkUHJpbWl0aXZlID0gdHJ1ZTsKICAg
ICAgICAgYnJlYWs7CiAKLSAgICBjYXNlIENTU1Byb3BlcnR5T3V0bGluZVN0eWxlOiAgICAgICAg
Ly8gKDxib3JkZXItc3R5bGU+IGV4Y2VwdCBoaWRkZW4pIHwgYXV0byB8IGluaGVyaXQKLSAgICAg
ICAgaWYgKGlkID09IENTU1ZhbHVlQXV0byB8fCBpZCA9PSBDU1NWYWx1ZU5vbmUgfHwgKGlkID49
IENTU1ZhbHVlSW5zZXQgJiYgaWQgPD0gQ1NTVmFsdWVEb3VibGUpKQotICAgICAgICAgICAgdmFs
aWRQcmltaXRpdmUgPSB0cnVlOwotICAgICAgICBicmVhazsKLQotICAgIGNhc2UgQ1NTUHJvcGVy
dHlCb3JkZXJUb3BTdHlsZTogICAgIC8vLy8gPGJvcmRlci1zdHlsZT4gfCBpbmhlcml0Ci0gICAg
Y2FzZSBDU1NQcm9wZXJ0eUJvcmRlclJpZ2h0U3R5bGU6ICAgLy8gICBEZWZpbmVkIGFzOiAgICBu
b25lIHwgaGlkZGVuIHwgZG90dGVkIHwgZGFzaGVkIHwKLSAgICBjYXNlIENTU1Byb3BlcnR5Qm9y
ZGVyQm90dG9tU3R5bGU6ICAvLyAgIHNvbGlkIHwgZG91YmxlIHwgZ3Jvb3ZlIHwgcmlkZ2UgfCBp
bnNldCB8IG91dHNldAotICAgIGNhc2UgQ1NTUHJvcGVydHlCb3JkZXJMZWZ0U3R5bGU6Ci0gICAg
Y2FzZSBDU1NQcm9wZXJ0eVdlYmtpdEJvcmRlclN0YXJ0U3R5bGU6Ci0gICAgY2FzZSBDU1NQcm9w
ZXJ0eVdlYmtpdEJvcmRlckVuZFN0eWxlOgotICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRCb3Jk
ZXJCZWZvcmVTdHlsZToKLSAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0Qm9yZGVyQWZ0ZXJTdHls
ZToKLSAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0Q29sdW1uUnVsZVN0eWxlOgotICAgICAgICBp
ZiAoaWQgPj0gQ1NTVmFsdWVOb25lICYmIGlkIDw9IENTU1ZhbHVlRG91YmxlKQotICAgICAgICAg
ICAgdmFsaWRQcmltaXRpdmUgPSB0cnVlOwotICAgICAgICBicmVhazsKLQogICAgIGNhc2UgQ1NT
UHJvcGVydHlGb250V2VpZ2h0OiAgLy8gbm9ybWFsIHwgYm9sZCB8IGJvbGRlciB8IGxpZ2h0ZXIg
fCAxMDAgfCAyMDAgfCAzMDAgfCA0MDAgfCA1MDAgfCA2MDAgfCA3MDAgfCA4MDAgfCA5MDAgfCBp
bmhlcml0CiAgICAgICAgIHJldHVybiBwYXJzZUZvbnRXZWlnaHQoaW1wb3J0YW50KTsKIApAQCAt
MTM1MSwyMSArMTQ1MCw2IEBAIGJvb2wgQ1NTUGFyc2VyOjpwYXJzZVZhbHVlKGludCBwcm9wSWQs
IGJvb2wgaW1wb3J0YW50KQogICAgICAgICAgICAgdmFsaWRQcmltaXRpdmUgPSB2YWxpZFVuaXQo
dmFsdWUsIEZMZW5ndGgsIG1fc3RyaWN0KTsKICAgICAgICAgYnJlYWs7CiAKLSAgICBjYXNlIENT
U1Byb3BlcnR5V29yZEJyZWFrOiAgICAgICAgICAvLyBub3JtYWwgfCBicmVhay1hbGwgfCBicmVh
ay13b3JkICh0aGlzIGlzIGEgY3VzdG9tIGV4dGVuc2lvbikKLSAgICAgICAgaWYgKGlkID09IENT
U1ZhbHVlTm9ybWFsIHx8IGlkID09IENTU1ZhbHVlQnJlYWtBbGwgfHwgaWQgPT0gQ1NTVmFsdWVC
cmVha1dvcmQpCi0gICAgICAgICAgICB2YWxpZFByaW1pdGl2ZSA9IHRydWU7Ci0gICAgICAgIGJy
ZWFrOwotCi0gICAgY2FzZSBDU1NQcm9wZXJ0eVdvcmRXcmFwOiAgICAgICAgICAgLy8gbm9ybWFs
IHwgYnJlYWstd29yZAotICAgICAgICBpZiAoaWQgPT0gQ1NTVmFsdWVOb3JtYWwgfHwgaWQgPT0g
Q1NTVmFsdWVCcmVha1dvcmQpCi0gICAgICAgICAgICB2YWxpZFByaW1pdGl2ZSA9IHRydWU7Ci0g
ICAgICAgIGJyZWFrOwotICAgIGNhc2UgQ1NTUHJvcGVydHlTcGVhazogICAgICAgICAgIC8vIG5v
bmUgfCBub3JtYWwgfCBzcGVsbC1vdXQgfCBkaWdpdHMgfCBsaXRlcmFsLXB1bmN0dWF0aW9uIHwg
bm8tcHVuY3R1YXRpb24gfCBpbmhlcml0Ci0gICAgICAgIGlmIChpZCA9PSBDU1NWYWx1ZU5vbmUg
fHwgaWQgPT0gQ1NTVmFsdWVOb3JtYWwgfHwgaWQgPT0gQ1NTVmFsdWVTcGVsbE91dCB8fCBpZCA9
PSBDU1NWYWx1ZURpZ2l0cwotICAgICAgICAgICAgfHwgaWQgPT0gQ1NTVmFsdWVMaXRlcmFsUHVu
Y3R1YXRpb24gfHwgaWQgPT0gQ1NTVmFsdWVOb1B1bmN0dWF0aW9uKQotICAgICAgICAgICAgdmFs
aWRQcmltaXRpdmUgPSB0cnVlOwotICAgICAgICBicmVhazsKLQogICAgIGNhc2UgQ1NTUHJvcGVy
dHlUZXh0SW5kZW50OiAgICAgICAgICAvLyA8bGVuZ3RoPiB8IDxwZXJjZW50YWdlPiB8IGluaGVy
aXQKICAgICAgICAgdmFsaWRQcmltaXRpdmUgPSAoIWlkICYmIHZhbGlkVW5pdCh2YWx1ZSwgRkxl
bmd0aCB8IEZQZXJjZW50LCBtX3N0cmljdCkpOwogICAgICAgICBicmVhazsKQEAgLTE0MDgsMTEg
KzE0OTIsNiBAQCBib29sIENTU1BhcnNlcjo6cGFyc2VWYWx1ZShpbnQgcHJvcElkLCBib29sIGlt
cG9ydGFudCkKICAgICAgICAgICAgIHZhbGlkUHJpbWl0aXZlID0gKHZhbGlkVW5pdCh2YWx1ZSwg
Rkxlbmd0aCB8IEZQZXJjZW50IHwgRk5vbk5lZywgbV9zdHJpY3QpKTsKICAgICAgICAgYnJlYWs7
CiAKLSAgICBjYXNlIENTU1Byb3BlcnR5Rm9udFN0eWxlOiAgICAgICAgICAgLy8gbm9ybWFsIHwg
aXRhbGljIHwgb2JsaXF1ZSB8IGluaGVyaXQKLSAgICAgICAgaWYgKGlkID09IENTU1ZhbHVlTm9y
bWFsIHx8IGlkID09IENTU1ZhbHVlSXRhbGljIHx8IGlkID09IENTU1ZhbHVlT2JsaXF1ZSkKLSAg
ICAgICAgICAgIHZhbGlkUHJpbWl0aXZlID0gdHJ1ZTsKLSAgICAgICAgYnJlYWs7Ci0KICAgICBj
YXNlIENTU1Byb3BlcnR5Rm9udFZhcmlhbnQ6ICAgICAgICAgLy8gbm9ybWFsIHwgc21hbGwtY2Fw
cyB8IGluaGVyaXQKICAgICAgICAgcmV0dXJuIHBhcnNlRm9udFZhcmlhbnQoaW1wb3J0YW50KTsK
IApAQCAtMTUyOCwxMSArMTYwNyw2IEBAIGJvb2wgQ1NTUGFyc2VyOjpwYXJzZVZhbHVlKGludCBw
cm9wSWQsIGJvb2wgaW1wb3J0YW50KQogICAgICAgICAgICAgdmFsaWRQcmltaXRpdmUgPSAoIWlk
ICYmIHZhbGlkVW5pdCh2YWx1ZSwgRk51bWJlciB8IEZQZXJjZW50IHwgRk5vbk5lZywgdHJ1ZSkp
OwogICAgICAgICBicmVhazsKIAotICAgIGNhc2UgQ1NTUHJvcGVydHlUYWJsZUxheW91dDogICAg
ICAgICAvLyBhdXRvIHwgZml4ZWQgfCBpbmhlcml0Ci0gICAgICAgIGlmIChpZCA9PSBDU1NWYWx1
ZUF1dG8gfHwgaWQgPT0gQ1NTVmFsdWVGaXhlZCkKLSAgICAgICAgICAgIHZhbGlkUHJpbWl0aXZl
ID0gdHJ1ZTsKLSAgICAgICAgYnJlYWs7Ci0KICAgICBjYXNlIENTU1Byb3BlcnR5U3JjOiAgLy8g
T25seSB1c2VkIHdpdGhpbiBAZm9udC1mYWNlLCBzbyBjYW5ub3QgdXNlIGluaGVyaXQgfCBpbml0
aWFsIG9yIGJlICFpbXBvcnRhbnQuICBUaGlzIGlzIGEgbGlzdCBvZiB1cmxzIG9yIGxvY2FsIHJl
ZmVyZW5jZXMuCiAgICAgICAgIHJldHVybiBwYXJzZUZvbnRGYWNlU3JjKCk7CiAKQEAgLTE1NDAs
MTAgKzE2MTQsNiBAQCBib29sIENTU1BhcnNlcjo6cGFyc2VWYWx1ZShpbnQgcHJvcElkLCBib29s
IGltcG9ydGFudCkKICAgICAgICAgcmV0dXJuIHBhcnNlRm9udEZhY2VVbmljb2RlUmFuZ2UoKTsK
IAogICAgIC8qIENTUzMgcHJvcGVydGllcyAqLwotICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRB
cHBlYXJhbmNlOgotICAgICAgICBpZiAoKGlkID49IENTU1ZhbHVlQ2hlY2tib3ggJiYgaWQgPD0g
Q1NTVmFsdWVUZXh0YXJlYSkgfHwgaWQgPT0gQ1NTVmFsdWVOb25lKQotICAgICAgICAgICAgdmFs
aWRQcmltaXRpdmUgPSB0cnVlOwotICAgICAgICBicmVhazsKIAogICAgIGNhc2UgQ1NTUHJvcGVy
dHlCb3JkZXJJbWFnZTogewogICAgICAgICBSZWZQdHI8Q1NTVmFsdWU+IHJlc3VsdDsKQEAgLTE2
NTEsMjkgKzE3MjEsNiBAQCBib29sIENTU1BhcnNlcjo6cGFyc2VWYWx1ZShpbnQgcHJvcElkLCBi
b29sIGltcG9ydGFudCkKICAgICBjYXNlIENTU1Byb3BlcnR5T3BhY2l0eToKICAgICAgICAgdmFs
aWRQcmltaXRpdmUgPSB2YWxpZFVuaXQodmFsdWUsIEZOdW1iZXIsIG1fc3RyaWN0KTsKICAgICAg
ICAgYnJlYWs7Ci0gICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdEJveEFsaWduOgotICAgICAgICBp
ZiAoaWQgPT0gQ1NTVmFsdWVTdHJldGNoIHx8IGlkID09IENTU1ZhbHVlU3RhcnQgfHwgaWQgPT0g
Q1NTVmFsdWVFbmQgfHwKLSAgICAgICAgICAgIGlkID09IENTU1ZhbHVlQ2VudGVyIHx8IGlkID09
IENTU1ZhbHVlQmFzZWxpbmUpCi0gICAgICAgICAgICB2YWxpZFByaW1pdGl2ZSA9IHRydWU7Ci0g
ICAgICAgIGJyZWFrOwotICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRCb3hEaXJlY3Rpb246Ci0g
ICAgICAgIGlmIChpZCA9PSBDU1NWYWx1ZU5vcm1hbCB8fCBpZCA9PSBDU1NWYWx1ZVJldmVyc2Up
Ci0gICAgICAgICAgICB2YWxpZFByaW1pdGl2ZSA9IHRydWU7Ci0gICAgICAgIGJyZWFrOwotICAg
IGNhc2UgQ1NTUHJvcGVydHlXZWJraXRCb3hMaW5lczoKLSAgICAgICAgaWYgKGlkID09IENTU1Zh
bHVlU2luZ2xlIHx8IGlkID09IENTU1ZhbHVlTXVsdGlwbGUpCi0gICAgICAgICAgICB2YWxpZFBy
aW1pdGl2ZSA9IHRydWU7Ci0gICAgICAgIGJyZWFrOwotICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJr
aXRCb3hPcmllbnQ6Ci0gICAgICAgIGlmIChpZCA9PSBDU1NWYWx1ZUhvcml6b250YWwgfHwgaWQg
PT0gQ1NTVmFsdWVWZXJ0aWNhbCB8fAotICAgICAgICAgICAgaWQgPT0gQ1NTVmFsdWVJbmxpbmVB
eGlzIHx8IGlkID09IENTU1ZhbHVlQmxvY2tBeGlzKQotICAgICAgICAgICAgdmFsaWRQcmltaXRp
dmUgPSB0cnVlOwotICAgICAgICBicmVhazsKLSAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0Qm94
UGFjazoKLSAgICAgICAgaWYgKGlkID09IENTU1ZhbHVlU3RhcnQgfHwgaWQgPT0gQ1NTVmFsdWVF
bmQgfHwKLSAgICAgICAgICAgIGlkID09IENTU1ZhbHVlQ2VudGVyIHx8IGlkID09IENTU1ZhbHVl
SnVzdGlmeSkKLSAgICAgICAgICAgIHZhbGlkUHJpbWl0aXZlID0gdHJ1ZTsKLSAgICAgICAgYnJl
YWs7CiAgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdEJveEZsZXg6CiAgICAgICAgIHZhbGlkUHJp
bWl0aXZlID0gdmFsaWRVbml0KHZhbHVlLCBGTnVtYmVyLCBtX3N0cmljdCk7CiAgICAgICAgIGJy
ZWFrOwpAQCAtMTY4MSwxMiArMTcyOCw2IEBAIGJvb2wgQ1NTUGFyc2VyOjpwYXJzZVZhbHVlKGlu
dCBwcm9wSWQsIGJvb2wgaW1wb3J0YW50KQogICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRCb3hP
cmRpbmFsR3JvdXA6CiAgICAgICAgIHZhbGlkUHJpbWl0aXZlID0gdmFsaWRVbml0KHZhbHVlLCBG
SW50ZWdlciB8IEZOb25OZWcsIHRydWUpOwogICAgICAgICBicmVhazsKLSAgICBjYXNlIENTU1By
b3BlcnR5Qm94U2l6aW5nOgotICAgICAgICB2YWxpZFByaW1pdGl2ZSA9IGlkID09IENTU1ZhbHVl
Qm9yZGVyQm94IHx8IGlkID09IENTU1ZhbHVlQ29udGVudEJveDsKLSAgICAgICAgYnJlYWs7Ci0g
ICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdENvbG9yQ29ycmVjdGlvbjoKLSAgICAgICAgdmFsaWRQ
cmltaXRpdmUgPSBpZCA9PSBDU1NWYWx1ZVNyZ2IgfHwgaWQgPT0gQ1NTVmFsdWVEZWZhdWx0Owot
ICAgICAgICBicmVhazsKICNpZiBFTkFCTEUoQ1NTX0ZJTFRFUlMpCiAgICAgY2FzZSBDU1NQcm9w
ZXJ0eVdlYmtpdEZpbHRlcjoKICAgICAgICAgaWYgKGlkID09IENTU1ZhbHVlTm9uZSkKQEAgLTE3
MDksMTggKzE3NTAsNiBAQCBib29sIENTU1BhcnNlcjo6cGFyc2VWYWx1ZShpbnQgcHJvcElkLCBi
b29sIGltcG9ydGFudCkKICAgICAgICAgICAgIG1fdmFsdWVMaXN0LT5uZXh0KCk7CiAgICAgICAg
IH0KICAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdEZsZXhQYWNrOgot
ICAgICAgICB2YWxpZFByaW1pdGl2ZSA9IGlkID09IENTU1ZhbHVlU3RhcnQgfHwgaWQgPT0gQ1NT
VmFsdWVFbmQgfHwgaWQgPT0gQ1NTVmFsdWVDZW50ZXIgfHwgaWQgPT0gQ1NTVmFsdWVKdXN0aWZ5
IHx8IGlkID09IENTU1ZhbHVlRGlzdHJpYnV0ZTsKLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBD
U1NQcm9wZXJ0eVdlYmtpdEZsZXhBbGlnbjoKLSAgICAgICAgdmFsaWRQcmltaXRpdmUgPSBpZCA9
PSBDU1NWYWx1ZVN0YXJ0IHx8IGlkID09IENTU1ZhbHVlRW5kIHx8IGlkID09IENTU1ZhbHVlQ2Vu
dGVyIHx8IGlkID09IENTU1ZhbHVlQmFzZWxpbmUgfHwgaWQgPT0gQ1NTVmFsdWVTdHJldGNoOwot
ICAgICAgICBicmVhazsKLSAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0RmxleEl0ZW1BbGlnbjoK
LSAgICAgICAgdmFsaWRQcmltaXRpdmUgPSBpZCA9PSBDU1NWYWx1ZUF1dG8gfHwgaWQgPT0gQ1NT
VmFsdWVTdGFydCB8fCBpZCA9PSBDU1NWYWx1ZUVuZCB8fCBpZCA9PSBDU1NWYWx1ZUNlbnRlciB8
fCBpZCA9PSBDU1NWYWx1ZUJhc2VsaW5lIHx8IGlkID09IENTU1ZhbHVlU3RyZXRjaDsKLSAgICAg
ICAgYnJlYWs7Ci0gICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdEZsZXhEaXJlY3Rpb246Ci0gICAg
ICAgIHZhbGlkUHJpbWl0aXZlID0gaWQgPT0gQ1NTVmFsdWVSb3cgfHwgaWQgPT0gQ1NTVmFsdWVS
b3dSZXZlcnNlIHx8IGlkID09IENTU1ZhbHVlQ29sdW1uIHx8IGlkID09IENTU1ZhbHVlQ29sdW1u
UmV2ZXJzZTsKLSAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdEZsZXhX
cmFwOgogICAgICAgICB2YWxpZFByaW1pdGl2ZSA9IGlkID09IENTU1ZhbHVlTm9uZSB8fCBpZCA9
PSBDU1NWYWx1ZVdyYXAgfHwgaWQgPT0gQ1NTVmFsdWVXcmFwUmV2ZXJzZTsKICAgICAgICAgYnJl
YWs7CkBAIC0xNzMwLDIyICsxNzU5LDEyIEBAIGJvb2wgQ1NTUGFyc2VyOjpwYXJzZVZhbHVlKGlu
dCBwcm9wSWQsIGJvb2wgaW1wb3J0YW50KQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgQ1NTUHJvcGVydHlXZWJraXRNYXJxdWVlU3R5bGUsIENTU1Byb3BlcnR5V2Via2l0TWFy
cXVlZVNwZWVkIH07CiAgICAgICAgIHJldHVybiBwYXJzZVNob3J0aGFuZChwcm9wSWQsIHByb3Bl
cnRpZXMsIDUsIGltcG9ydGFudCk7CiAgICAgfQotICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRN
YXJxdWVlRGlyZWN0aW9uOgotICAgICAgICBpZiAoaWQgPT0gQ1NTVmFsdWVGb3J3YXJkcyB8fCBp
ZCA9PSBDU1NWYWx1ZUJhY2t3YXJkcyB8fCBpZCA9PSBDU1NWYWx1ZUFoZWFkIHx8Ci0gICAgICAg
ICAgICBpZCA9PSBDU1NWYWx1ZVJldmVyc2UgfHwgaWQgPT0gQ1NTVmFsdWVMZWZ0IHx8IGlkID09
IENTU1ZhbHVlUmlnaHQgfHwgaWQgPT0gQ1NTVmFsdWVEb3duIHx8Ci0gICAgICAgICAgICBpZCA9
PSBDU1NWYWx1ZVVwIHx8IGlkID09IENTU1ZhbHVlQXV0bykKLSAgICAgICAgICAgIHZhbGlkUHJp
bWl0aXZlID0gdHJ1ZTsKLSAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtp
dE1hcnF1ZWVJbmNyZW1lbnQ6CiAgICAgICAgIGlmIChpZCA9PSBDU1NWYWx1ZVNtYWxsIHx8IGlk
ID09IENTU1ZhbHVlTGFyZ2UgfHwgaWQgPT0gQ1NTVmFsdWVNZWRpdW0pCiAgICAgICAgICAgICB2
YWxpZFByaW1pdGl2ZSA9IHRydWU7CiAgICAgICAgIGVsc2UKICAgICAgICAgICAgIHZhbGlkUHJp
bWl0aXZlID0gdmFsaWRVbml0KHZhbHVlLCBGTGVuZ3RoIHwgRlBlcmNlbnQsIG1fc3RyaWN0KTsK
ICAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdE1hcnF1ZWVTdHlsZToK
LSAgICAgICAgaWYgKGlkID09IENTU1ZhbHVlTm9uZSB8fCBpZCA9PSBDU1NWYWx1ZVNsaWRlIHx8
IGlkID09IENTU1ZhbHVlU2Nyb2xsIHx8IGlkID09IENTU1ZhbHVlQWx0ZXJuYXRlKQotICAgICAg
ICAgICAgdmFsaWRQcmltaXRpdmUgPSB0cnVlOwotICAgICAgICBicmVhazsKICAgICBjYXNlIENT
U1Byb3BlcnR5V2Via2l0TWFycXVlZVJlcGV0aXRpb246CiAgICAgICAgIGlmIChpZCA9PSBDU1NW
YWx1ZUluZmluaXRlKQogICAgICAgICAgICAgdmFsaWRQcmltaXRpdmUgPSB0cnVlOwpAQCAtMTc3
MCwyMyArMTc4OSw2IEBAIGJvb2wgQ1NTUGFyc2VyOjpwYXJzZVZhbHVlKGludCBwcm9wSWQsIGJv
b2wgaW1wb3J0YW50KQogICAgICAgICBpZiAoY3NzUmVnaW9uc0VuYWJsZWQoKSAmJiAoaWQgPT0g
Q1NTVmFsdWVBdXRvIHx8IGlkID09IENTU1ZhbHVlQnJlYWspKQogICAgICAgICAgICAgdmFsaWRQ
cmltaXRpdmUgPSB0cnVlOwogICAgICAgICBicmVhazsKLQotICAgIGNhc2UgQ1NTUHJvcGVydHlX
ZWJraXRVc2VyRHJhZzogLy8gYXV0byB8IG5vbmUgfCBlbGVtZW50Ci0gICAgICAgIGlmIChpZCA9
PSBDU1NWYWx1ZUF1dG8gfHwgaWQgPT0gQ1NTVmFsdWVOb25lIHx8IGlkID09IENTU1ZhbHVlRWxl
bWVudCkKLSAgICAgICAgICAgIHZhbGlkUHJpbWl0aXZlID0gdHJ1ZTsKLSAgICAgICAgYnJlYWs7
Ci0gICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdFVzZXJNb2RpZnk6IC8vIHJlYWQtb25seSB8IHJl
YWQtd3JpdGUKLSAgICAgICAgaWYgKGlkID09IENTU1ZhbHVlUmVhZE9ubHkgfHwgaWQgPT0gQ1NT
VmFsdWVSZWFkV3JpdGUgfHwgaWQgPT0gQ1NTVmFsdWVSZWFkV3JpdGVQbGFpbnRleHRPbmx5KQot
ICAgICAgICAgICAgdmFsaWRQcmltaXRpdmUgPSB0cnVlOwotICAgICAgICBicmVhazsKLSAgICBj
YXNlIENTU1Byb3BlcnR5V2Via2l0VXNlclNlbGVjdDogLy8gYXV0byB8IG5vbmUgfCB0ZXh0Ci0g
ICAgICAgIGlmIChpZCA9PSBDU1NWYWx1ZUF1dG8gfHwgaWQgPT0gQ1NTVmFsdWVOb25lIHx8IGlk
ID09IENTU1ZhbHVlVGV4dCkKLSAgICAgICAgICAgIHZhbGlkUHJpbWl0aXZlID0gdHJ1ZTsKLSAg
ICAgICAgYnJlYWs7Ci0gICAgY2FzZSBDU1NQcm9wZXJ0eVRleHRPdmVyZmxvdzogLy8gY2xpcCB8
IGVsbGlwc2lzCi0gICAgICAgIGlmIChpZCA9PSBDU1NWYWx1ZUNsaXAgfHwgaWQgPT0gQ1NTVmFs
dWVFbGxpcHNpcykKLSAgICAgICAgICAgIHZhbGlkUHJpbWl0aXZlID0gdHJ1ZTsKLSAgICAgICAg
YnJlYWs7CiAgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdFRyYW5zZm9ybToKICAgICAgICAgaWYg
KGlkID09IENTU1ZhbHVlTm9uZSkKICAgICAgICAgICAgIHZhbGlkUHJpbWl0aXZlID0gdHJ1ZTsK
QEAgLTE4MTcsMTggKzE4MTksNiBAQCBib29sIENTU1BhcnNlcjo6cGFyc2VWYWx1ZShpbnQgcHJv
cElkLCBib29sIGltcG9ydGFudCkKICAgICAgICAgfQogICAgICAgICByZXR1cm4gZmFsc2U7CiAg
ICAgfQotICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRUcmFuc2Zvcm1TdHlsZToKLSAgICAgICAg
aWYgKHZhbHVlLT5pZCA9PSBDU1NWYWx1ZUZsYXQgfHwgdmFsdWUtPmlkID09IENTU1ZhbHVlUHJl
c2VydmUzZCkKLSAgICAgICAgICAgIHZhbGlkUHJpbWl0aXZlID0gdHJ1ZTsKLSAgICAgICAgYnJl
YWs7Ci0gICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdEJhY2tmYWNlVmlzaWJpbGl0eToKLSAgICAg
ICAgaWYgKHZhbHVlLT5pZCA9PSBDU1NWYWx1ZVZpc2libGUgfHwgdmFsdWUtPmlkID09IENTU1Zh
bHVlSGlkZGVuKQotICAgICAgICAgICAgdmFsaWRQcmltaXRpdmUgPSB0cnVlOwotICAgICAgICBi
cmVhazsKLSAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0UHJpbnRDb2xvckFkanVzdDoKLSAgICAg
ICAgaWYgKHZhbHVlLT5pZCA9PSBDU1NWYWx1ZUV4YWN0IHx8IHZhbHVlLT5pZCA9PSBDU1NWYWx1
ZUVjb25vbXkpCi0gICAgICAgICAgICB2YWxpZFByaW1pdGl2ZSA9IHRydWU7Ci0gICAgICAgIGJy
ZWFrOwogICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRQZXJzcGVjdGl2ZToKICAgICAgICAgaWYg
KGlkID09IENTU1ZhbHVlTm9uZSkKICAgICAgICAgICAgIHZhbGlkUHJpbWl0aXZlID0gdHJ1ZTsK
QEAgLTE5MDYsMzIgKzE4OTYsNiBAQCBib29sIENTU1BhcnNlcjo6cGFyc2VWYWx1ZShpbnQgcHJv
cElkLCBib29sIGltcG9ydGFudCkKICAgICAgICAgfQogICAgICAgICByZXR1cm4gZmFsc2U7CiAg
ICAgfQotICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRNYXJnaW5CZWZvcmVDb2xsYXBzZToKLSAg
ICBjYXNlIENTU1Byb3BlcnR5V2Via2l0TWFyZ2luQWZ0ZXJDb2xsYXBzZToKLSAgICBjYXNlIENT
U1Byb3BlcnR5V2Via2l0TWFyZ2luVG9wQ29sbGFwc2U6Ci0gICAgY2FzZSBDU1NQcm9wZXJ0eVdl
YmtpdE1hcmdpbkJvdHRvbUNvbGxhcHNlOgotICAgICAgICBpZiAoaWQgPT0gQ1NTVmFsdWVDb2xs
YXBzZSB8fCBpZCA9PSBDU1NWYWx1ZVNlcGFyYXRlIHx8IGlkID09IENTU1ZhbHVlRGlzY2FyZCkK
LSAgICAgICAgICAgIHZhbGlkUHJpbWl0aXZlID0gdHJ1ZTsKLSAgICAgICAgYnJlYWs7Ci0gICAg
Y2FzZSBDU1NQcm9wZXJ0eVRleHRMaW5lVGhyb3VnaE1vZGU6Ci0gICAgY2FzZSBDU1NQcm9wZXJ0
eVRleHRPdmVybGluZU1vZGU6Ci0gICAgY2FzZSBDU1NQcm9wZXJ0eVRleHRVbmRlcmxpbmVNb2Rl
OgotICAgICAgICBpZiAoaWQgPT0gQ1NTVmFsdWVDb250aW51b3VzIHx8IGlkID09IENTU1ZhbHVl
U2tpcFdoaXRlU3BhY2UpCi0gICAgICAgICAgICB2YWxpZFByaW1pdGl2ZSA9IHRydWU7Ci0gICAg
ICAgIGJyZWFrOwotICAgIGNhc2UgQ1NTUHJvcGVydHlUZXh0TGluZVRocm91Z2hTdHlsZToKLSAg
ICBjYXNlIENTU1Byb3BlcnR5VGV4dE92ZXJsaW5lU3R5bGU6Ci0gICAgY2FzZSBDU1NQcm9wZXJ0
eVRleHRVbmRlcmxpbmVTdHlsZToKLSAgICAgICAgaWYgKGlkID09IENTU1ZhbHVlTm9uZSB8fCBp
ZCA9PSBDU1NWYWx1ZVNvbGlkIHx8IGlkID09IENTU1ZhbHVlRG91YmxlIHx8Ci0gICAgICAgICAg
ICBpZCA9PSBDU1NWYWx1ZURhc2hlZCB8fCBpZCA9PSBDU1NWYWx1ZURvdERhc2ggfHwgaWQgPT0g
Q1NTVmFsdWVEb3REb3REYXNoIHx8Ci0gICAgICAgICAgICBpZCA9PSBDU1NWYWx1ZVdhdmUpCi0g
ICAgICAgICAgICB2YWxpZFByaW1pdGl2ZSA9IHRydWU7Ci0gICAgICAgIGJyZWFrOwotICAgIGNh
c2UgQ1NTUHJvcGVydHlUZXh0UmVuZGVyaW5nOiAvLyBhdXRvIHwgb3B0aW1pemVTcGVlZCB8IG9w
dGltaXplTGVnaWJpbGl0eSB8IGdlb21ldHJpY1ByZWNpc2lvbgotICAgICAgICBpZiAoaWQgPT0g
Q1NTVmFsdWVBdXRvIHx8IGlkID09IENTU1ZhbHVlT3B0aW1pemVzcGVlZCB8fCBpZCA9PSBDU1NW
YWx1ZU9wdGltaXplbGVnaWJpbGl0eQotICAgICAgICAgICAgfHwgaWQgPT0gQ1NTVmFsdWVHZW9t
ZXRyaWNwcmVjaXNpb24pCi0gICAgICAgICAgICB2YWxpZFByaW1pdGl2ZSA9IHRydWU7Ci0gICAg
ICAgIGJyZWFrOwogICAgIGNhc2UgQ1NTUHJvcGVydHlUZXh0TGluZVRocm91Z2hXaWR0aDoKICAg
ICBjYXNlIENTU1Byb3BlcnR5VGV4dE92ZXJsaW5lV2lkdGg6CiAgICAgY2FzZSBDU1NQcm9wZXJ0
eVRleHRVbmRlcmxpbmVXaWR0aDoKQEAgLTE5NDEsMTAgKzE5MDUsNiBAQCBib29sIENTU1BhcnNl
cjo6cGFyc2VWYWx1ZShpbnQgcHJvcElkLCBib29sIGltcG9ydGFudCkKICAgICAgICAgZWxzZQog
ICAgICAgICAgICAgdmFsaWRQcmltaXRpdmUgPSAhaWQgJiYgdmFsaWRVbml0KHZhbHVlLCBGTnVt
YmVyIHwgRkxlbmd0aCB8IEZQZXJjZW50LCBtX3N0cmljdCk7CiAgICAgICAgIGJyZWFrOwotICAg
IGNhc2UgQ1NTUHJvcGVydHlSZXNpemU6IC8vIG5vbmUgfCBib3RoIHwgaG9yaXpvbnRhbCB8IHZl
cnRpY2FsIHwgYXV0bwotICAgICAgICBpZiAoaWQgPT0gQ1NTVmFsdWVOb25lIHx8IGlkID09IENT
U1ZhbHVlQm90aCB8fCBpZCA9PSBDU1NWYWx1ZUhvcml6b250YWwgfHwgaWQgPT0gQ1NTVmFsdWVW
ZXJ0aWNhbCB8fCBpZCA9PSBDU1NWYWx1ZUF1dG8pCi0gICAgICAgICAgICB2YWxpZFByaW1pdGl2
ZSA9IHRydWU7Ci0gICAgICAgIGJyZWFrOwogICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRDb2x1
bW5Db3VudDoKICAgICAgICAgaWYgKGlkID09IENTU1ZhbHVlQXV0bykKICAgICAgICAgICAgIHZh
bGlkUHJpbWl0aXZlID0gdHJ1ZTsKQEAgLTE5NzMsMTcgKzE5MzMsNiBAQCBib29sIENTU1BhcnNl
cjo6cGFyc2VWYWx1ZShpbnQgcHJvcElkLCBib29sIGltcG9ydGFudCkKICAgICAgICAgZWxzZSAv
LyBBbHdheXMgcGFyc2UgdGhpcyBwcm9wZXJ0eSBpbiBzdHJpY3QgbW9kZSwgc2luY2UgaXQgd291
bGQgYmUgYW1iaWd1b3VzIG90aGVyd2lzZSB3aGVuIHVzZWQgaW4gdGhlICdjb2x1bW5zJyBzaG9y
dGhhbmQgcHJvcGVydHkuCiAgICAgICAgICAgICB2YWxpZFByaW1pdGl2ZSA9IHZhbGlkVW5pdCh2
YWx1ZSwgRkxlbmd0aCwgdHJ1ZSk7CiAgICAgICAgIGJyZWFrOwotICAgIGNhc2UgQ1NTUHJvcGVy
dHlQb2ludGVyRXZlbnRzOgotICAgICAgICAvLyBub25lIHwgdmlzaWJsZVBhaW50ZWQgfCB2aXNp
YmxlRmlsbCB8IHZpc2libGVTdHJva2UgfCB2aXNpYmxlIHwKLSAgICAgICAgLy8gcGFpbnRlZCB8
IGZpbGwgfCBzdHJva2UgfCBhdXRvIHwgYWxsIHwgaW5oZXJpdAotICAgICAgICBpZiAoaWQgPT0g
Q1NTVmFsdWVWaXNpYmxlIHx8IGlkID09IENTU1ZhbHVlTm9uZSB8fCBpZCA9PSBDU1NWYWx1ZUFs
bCB8fCBpZCA9PSBDU1NWYWx1ZUF1dG8gfHwKLSAgICAgICAgICAgIChpZCA+PSBDU1NWYWx1ZVZp
c2libGVwYWludGVkICYmIGlkIDw9IENTU1ZhbHVlU3Ryb2tlKSkKLSAgICAgICAgICAgIHZhbGlk
UHJpbWl0aXZlID0gdHJ1ZTsKLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBDU1NQcm9wZXJ0eUlt
YWdlUmVuZGVyaW5nOiAvLyBhdXRvIHwgb3B0aW1pemVDb250cmFzdAotICAgICAgICBpZiAoaWQg
PT0gQ1NTVmFsdWVBdXRvIHx8IGlkID09IENTU1ZhbHVlV2Via2l0T3B0aW1pemVDb250cmFzdCkK
LSAgICAgICAgICAgIHZhbGlkUHJpbWl0aXZlID0gdHJ1ZTsKLSAgICAgICAgYnJlYWs7CiAgICAg
Ly8gRW5kIG9mIENTUzMgcHJvcGVydGllcwogCiAgICAgLy8gQXBwbGUgc3BlY2lmaWMgcHJvcGVy
dGllcy4gIFRoZXNlIHdpbGwgbmV2ZXIgYmUgc3RhbmRhcmRpemVkIGFuZCBhcmUgcHVyZWx5IHRv
CkBAIC0xOTkzLDQ0ICsxOTQyLDE2IEBAIGJvb2wgQ1NTUGFyc2VyOjpwYXJzZVZhbHVlKGludCBw
cm9wSWQsIGJvb2wgaW1wb3J0YW50KQogICAgICAgICAvLyBXaGVuIHNwZWNpZnlpbmcgZWl0aGVy
IHR5cGUgb2YgdW5pdCwgcmVxdWlyZSBub24tbmVnYXRpdmUgaW50ZWdlcnMKICAgICAgICAgdmFs
aWRQcmltaXRpdmUgPSAoIWlkICYmICh2YWx1ZS0+dW5pdCA9PSBDU1NQcmltaXRpdmVWYWx1ZTo6
Q1NTX1BFUkNFTlRBR0UgfHwgdmFsdWUtPmZWYWx1ZSkgJiYgdmFsaWRVbml0KHZhbHVlLCBGSW50
ZWdlciB8IEZQZXJjZW50IHwgRk5vbk5lZywgZmFsc2UpKTsKICAgICAgICAgYnJlYWs7Ci0gICAg
Y2FzZSBDU1NQcm9wZXJ0eVdlYmtpdFRleHRTaXplQWRqdXN0OgotICAgICAgICBpZiAoaWQgPT0g
Q1NTVmFsdWVBdXRvIHx8IGlkID09IENTU1ZhbHVlTm9uZSkKLSAgICAgICAgICAgIHZhbGlkUHJp
bWl0aXZlID0gdHJ1ZTsKLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtp
dFJ0bE9yZGVyaW5nOgotICAgICAgICBpZiAoaWQgPT0gQ1NTVmFsdWVMb2dpY2FsIHx8IGlkID09
IENTU1ZhbHVlVmlzdWFsKQotICAgICAgICAgICAgdmFsaWRQcmltaXRpdmUgPSB0cnVlOwotICAg
ICAgICBicmVhazsKIAogICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRGb250U2l6ZURlbHRhOiAg
ICAgICAgICAgLy8gPGxlbmd0aD4KICAgICAgICAgdmFsaWRQcmltaXRpdmUgPSB2YWxpZFVuaXQo
dmFsdWUsIEZMZW5ndGgsIG1fc3RyaWN0KTsKICAgICAgICAgYnJlYWs7CiAKLSAgICBjYXNlIENT
U1Byb3BlcnR5V2Via2l0TmJzcE1vZGU6ICAgICAvLyBub3JtYWwgfCBzcGFjZQotICAgICAgICBp
ZiAoaWQgPT0gQ1NTVmFsdWVOb3JtYWwgfHwgaWQgPT0gQ1NTVmFsdWVTcGFjZSkKLSAgICAgICAg
ICAgIHZhbGlkUHJpbWl0aXZlID0gdHJ1ZTsKLSAgICAgICAgYnJlYWs7Ci0KLSAgICBjYXNlIENT
U1Byb3BlcnR5V2Via2l0TGluZUJyZWFrOiAgIC8vIG5vcm1hbCB8IGFmdGVyLXdoaXRlLXNwYWNl
Ci0gICAgICAgIGlmIChpZCA9PSBDU1NWYWx1ZU5vcm1hbCB8fCBpZCA9PSBDU1NWYWx1ZUFmdGVy
V2hpdGVTcGFjZSkKLSAgICAgICAgICAgIHZhbGlkUHJpbWl0aXZlID0gdHJ1ZTsKLSAgICAgICAg
YnJlYWs7Ci0KLSAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0TWF0Y2hOZWFyZXN0TWFpbEJsb2Nr
cXVvdGVDb2xvcjogICAvLyBub3JtYWwgfCBtYXRjaAotICAgICAgICBpZiAoaWQgPT0gQ1NTVmFs
dWVOb3JtYWwgfHwgaWQgPT0gQ1NTVmFsdWVNYXRjaCkKLSAgICAgICAgICAgIHZhbGlkUHJpbWl0
aXZlID0gdHJ1ZTsKLSAgICAgICAgYnJlYWs7Ci0KICAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0
SGlnaGxpZ2h0OgogICAgICAgICBpZiAoaWQgPT0gQ1NTVmFsdWVOb25lIHx8IHZhbHVlLT51bml0
ID09IENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfU1RSSU5HKQogICAgICAgICAgICAgdmFsaWRQcmlt
aXRpdmUgPSB0cnVlOwogICAgICAgICBicmVhazsKIAotICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJr
aXRIeXBoZW5zOgotICAgICAgICBpZiAoaWQgPT0gQ1NTVmFsdWVOb25lIHx8IGlkID09IENTU1Zh
bHVlTWFudWFsIHx8IGlkID09IENTU1ZhbHVlQXV0bykKLSAgICAgICAgICAgIHZhbGlkUHJpbWl0
aXZlID0gdHJ1ZTsKLSAgICAgICAgYnJlYWs7Ci0KICAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0
SHlwaGVuYXRlQ2hhcmFjdGVyOgogICAgICAgICBpZiAoaWQgPT0gQ1NTVmFsdWVBdXRvIHx8IHZh
bHVlLT51bml0ID09IENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfU1RSSU5HKQogICAgICAgICAgICAg
dmFsaWRQcmltaXRpdmUgPSB0cnVlOwpAQCAtMjA1OCwzNiArMTk3OSwxMSBAQCBib29sIENTU1Bh
cnNlcjo6cGFyc2VWYWx1ZShpbnQgcHJvcElkLCBib29sIGltcG9ydGFudCkKICAgICAgICAgICAg
IH0KICAgICAgICAgfQogICAgICAgICBicmVhazsKLSAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0
TGluZVNuYXA6Ci0gICAgICAgIGlmIChpZCA9PSBDU1NWYWx1ZU5vbmUgfHwgaWQgPT0gQ1NTVmFs
dWVCYXNlbGluZSB8fCBpZCA9PSBDU1NWYWx1ZUNvbnRhaW4pCi0gICAgICAgICAgICB2YWxpZFBy
aW1pdGl2ZSA9IHRydWU7Ci0gICAgICAgIGJyZWFrOwotICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJr
aXRMaW5lQWxpZ246Ci0gICAgICAgIGlmIChpZCA9PSBDU1NWYWx1ZU5vbmUgfHwgaWQgPT0gQ1NT
VmFsdWVFZGdlcykKLSAgICAgICAgICAgIHZhbGlkUHJpbWl0aXZlID0gdHJ1ZTsKLSAgICAgICAg
YnJlYWs7CiAgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdExvY2FsZToKICAgICAgICAgaWYgKGlk
ID09IENTU1ZhbHVlQXV0byB8fCB2YWx1ZS0+dW5pdCA9PSBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NT
X1NUUklORykKICAgICAgICAgICAgIHZhbGlkUHJpbWl0aXZlID0gdHJ1ZTsKICAgICAgICAgYnJl
YWs7CiAKLSAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0Qm9yZGVyRml0OgotICAgICAgICBpZiAo
aWQgPT0gQ1NTVmFsdWVCb3JkZXIgfHwgaWQgPT0gQ1NTVmFsdWVMaW5lcykKLSAgICAgICAgICAg
IHZhbGlkUHJpbWl0aXZlID0gdHJ1ZTsKLSAgICAgICAgYnJlYWs7Ci0KLSAgICBjYXNlIENTU1By
b3BlcnR5V2Via2l0VGV4dFNlY3VyaXR5OgotICAgICAgICAvLyBkaXNjIHwgY2lyY2xlIHwgc3F1
YXJlIHwgbm9uZSB8IGluaGVyaXQKLSAgICAgICAgaWYgKGlkID09IENTU1ZhbHVlRGlzYyB8fCBp
ZCA9PSBDU1NWYWx1ZUNpcmNsZSB8fCBpZCA9PSBDU1NWYWx1ZVNxdWFyZXx8IGlkID09IENTU1Zh
bHVlTm9uZSkKLSAgICAgICAgICAgIHZhbGlkUHJpbWl0aXZlID0gdHJ1ZTsKLSAgICAgICAgYnJl
YWs7Ci0KLSAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0Rm9udFNtb290aGluZzoKLSAgICAgICAg
aWYgKGlkID09IENTU1ZhbHVlQXV0byB8fCBpZCA9PSBDU1NWYWx1ZU5vbmUKLSAgICAgICAgICAg
IHx8IGlkID09IENTU1ZhbHVlQW50aWFsaWFzZWQgfHwgaWQgPT0gQ1NTVmFsdWVTdWJwaXhlbEFu
dGlhbGlhc2VkKQotICAgICAgICAgICAgdmFsaWRQcmltaXRpdmUgPSB0cnVlOwotICAgICAgICBi
cmVhazsKLQogI2lmIEVOQUJMRShEQVNIQk9BUkRfU1VQUE9SVCkKICAgICBjYXNlIENTU1Byb3Bl
cnR5V2Via2l0RGFzaGJvYXJkUmVnaW9uOiAvLyA8ZGFzaGJvYXJkLXJlZ2lvbj4gfCA8ZGFzaGJv
YXJkLXJlZ2lvbj4KICAgICAgICAgaWYgKHZhbHVlLT51bml0ID09IENTU1BhcnNlclZhbHVlOjpG
dW5jdGlvbiB8fCBpZCA9PSBDU1NWYWx1ZU5vbmUpCkBAIC0yMTA5LDEzICsyMDA1LDYgQEAgYm9v
bCBDU1NQYXJzZXI6OnBhcnNlVmFsdWUoaW50IHByb3BJZCwgYm9vbCBpbXBvcnRhbnQpCiAgICAg
ICAgIGJyZWFrOwogI2VuZGlmCiAKLSNpZiBFTkFCTEUoT1ZFUkZMT1dfU0NST0xMSU5HKQotICAg
IGNhc2UgQ1NTUHJvcGVydHlXZWJraXRPdmVyZmxvd1Njcm9sbGluZzoKLSAgICAgICAgaWYgKGlk
ID09IENTU1ZhbHVlQXV0byB8fCBpZCA9PSBDU1NWYWx1ZVRvdWNoKQotICAgICAgICAgICAgdmFs
aWRQcmltaXRpdmUgPSB0cnVlOwotICAgICAgICBicmVhazsKLSNlbmRpZgotCiAgICAgICAgIC8q
IHNob3J0aGFuZCBwcm9wZXJ0aWVzICovCiAgICAgY2FzZSBDU1NQcm9wZXJ0eUJhY2tncm91bmQ6
IHsKICAgICAgICAgLy8gUG9zaXRpb24gbXVzdCBjb21lIGJlZm9yZSBjb2xvciBpbiB0aGlzIGFy
cmF5IGJlY2F1c2UgYSBwbGFpbiBvbGQgIjAiIGlzIGEgbGVnYWwgY29sb3IKQEAgLTIyODUsMjYg
KzIxNzQsMTEgQEAgYm9vbCBDU1NQYXJzZXI6OnBhcnNlVmFsdWUoaW50IHByb3BJZCwgYm9vbCBp
bXBvcnRhbnQpCiAgICAgY2FzZSBDU1NQcm9wZXJ0eVRleHRVbmRlcmxpbmU6CiAgICAgICAgIHJl
dHVybiBmYWxzZTsKICAgICAvLyBDU1MgVGV4dCBMYXlvdXQgTW9kdWxlIExldmVsIDM6IFZlcnRp
Y2FsIHdyaXRpbmcgc3VwcG9ydAotICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRXcml0aW5nTW9k
ZToKLSAgICAgICAgaWYgKGlkID49IENTU1ZhbHVlSG9yaXpvbnRhbFRiICYmIGlkIDw9IENTU1Zh
bHVlSG9yaXpvbnRhbEJ0KQotICAgICAgICAgICAgdmFsaWRQcmltaXRpdmUgPSB0cnVlOwotICAg
ICAgICBicmVhazsKLQotICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRUZXh0Q29tYmluZToKLSAg
ICAgICAgaWYgKGlkID09IENTU1ZhbHVlTm9uZSB8fCBpZCA9PSBDU1NWYWx1ZUhvcml6b250YWwp
Ci0gICAgICAgICAgICB2YWxpZFByaW1pdGl2ZSA9IHRydWU7Ci0gICAgICAgIGJyZWFrOwotCiAg
ICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdFRleHRFbXBoYXNpczogewogICAgICAgICBjb25zdCBp
bnQgcHJvcGVydGllc1tdID0geyBDU1NQcm9wZXJ0eVdlYmtpdFRleHRFbXBoYXNpc1N0eWxlLCBD
U1NQcm9wZXJ0eVdlYmtpdFRleHRFbXBoYXNpc0NvbG9yIH07CiAgICAgICAgIHJldHVybiBwYXJz
ZVNob3J0aGFuZChwcm9wSWQsIHByb3BlcnRpZXMsIFdURl9BUlJBWV9MRU5HVEgocHJvcGVydGll
cyksIGltcG9ydGFudCk7CiAgICAgfQogCi0gICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdFRleHRF
bXBoYXNpc1Bvc2l0aW9uOgotICAgICAgICBpZiAoaWQgPT0gQ1NTVmFsdWVPdmVyIHx8IGlkID09
IENTU1ZhbHVlVW5kZXIpCi0gICAgICAgICAgICB2YWxpZFByaW1pdGl2ZSA9IHRydWU7Ci0gICAg
ICAgIGJyZWFrOwotCiAgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdFRleHRFbXBoYXNpc1N0eWxl
OgogICAgICAgICByZXR1cm4gcGFyc2VUZXh0RW1waGFzaXNTdHlsZShpbXBvcnRhbnQpOwogCkBA
IC0yMzI3LDExICsyMjAxLDYgQEAgYm9vbCBDU1NQYXJzZXI6OnBhcnNlVmFsdWUoaW50IHByb3BJ
ZCwgYm9vbCBpbXBvcnRhbnQpCiAgICAgICAgICAgICByZXR1cm4gcGFyc2VGb250RmVhdHVyZVNl
dHRpbmdzKGltcG9ydGFudCk7CiAgICAgICAgIGJyZWFrOwogCi0gICAgY2FzZSBDU1NQcm9wZXJ0
eVdlYmtpdEZvbnRLZXJuaW5nOgotICAgICAgICBpZiAoaWQgPT0gQ1NTVmFsdWVBdXRvIHx8IGlk
ID09IENTU1ZhbHVlTm9ybWFsIHx8IGlkID09IENTU1ZhbHVlTm9uZSkKLSAgICAgICAgICAgIHZh
bGlkUHJpbWl0aXZlID0gdHJ1ZTsKLSAgICAgICAgYnJlYWs7Ci0KICAgICBjYXNlIENTU1Byb3Bl
cnR5V2Via2l0Rm9udFZhcmlhbnRMaWdhdHVyZXM6CiAgICAgICAgIGlmIChpZCA9PSBDU1NWYWx1
ZU5vcm1hbCkKICAgICAgICAgICAgIHZhbGlkUHJpbWl0aXZlID0gdHJ1ZTsKQEAgLTIzNDYsMTUg
KzIyMTUsNiBAQCBib29sIENTU1BhcnNlcjo6cGFyc2VWYWx1ZShpbnQgcHJvcElkLCBib29sIGlt
cG9ydGFudCkKICAgICAgICAgZWxzZSBpZiAodmFsdWUtPnVuaXQgPT0gQ1NTUGFyc2VyVmFsdWU6
OkZ1bmN0aW9uKQogICAgICAgICAgICAgcmV0dXJuIHBhcnNlV3JhcFNoYXBlKChwcm9wSWQgPT0g
Q1NTUHJvcGVydHlXZWJraXRXcmFwU2hhcGVJbnNpZGUpLCBpbXBvcnRhbnQpOwogICAgICAgICBi
cmVhazsKLSAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0V3JhcEZsb3c6Ci0gICAgICAgIGlmIChp
ZCA9PSBDU1NWYWx1ZUF1dG8gfHwgaWQgPT0gQ1NTVmFsdWVCb3RoIHx8IGlkID09IENTU1ZhbHVl
TGVmdCB8fCBpZCA9PSBDU1NWYWx1ZVJpZ2h0IHx8IGlkID09IENTU1ZhbHVlTWF4aW11bSB8fCBp
ZCA9PSBDU1NWYWx1ZUNsZWFyKQotICAgICAgICAgICAgdmFsaWRQcmltaXRpdmUgPSB0cnVlOwot
ICAgICAgICBicmVhazsKLQotICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRXcmFwVGhyb3VnaDoK
LSAgICAgICAgaWYgKGlkID09IENTU1ZhbHVlV3JhcCB8fCBpZCA9PSBDU1NWYWx1ZU5vbmUpCi0g
ICAgICAgICAgICB2YWxpZFByaW1pdGl2ZSA9IHRydWU7Ci0gICAgICAgIGJyZWFrOwogICAgIGNh
c2UgQ1NTUHJvcGVydHlXZWJraXRXcmFwTWFyZ2luOgogICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJr
aXRXcmFwUGFkZGluZzoKICAgICAgICAgdmFsaWRQcmltaXRpdmUgPSAoIWlkICYmIHZhbGlkVW5p
dCh2YWx1ZSwgRkxlbmd0aCB8IEZOb25OZWcsIG1fc3RyaWN0KSk7CkBAIC0yMzY2LDYgKzIyMjYs
MTAgQEAgYm9vbCBDU1NQYXJzZXI6OnBhcnNlVmFsdWUoaW50IHByb3BJZCwgYm9vbCBpbXBvcnRh
bnQpCiAjaWYgRU5BQkxFKFNWRykKICAgICBkZWZhdWx0OgogICAgICAgICByZXR1cm4gcGFyc2VT
VkdWYWx1ZShwcm9wSWQsIGltcG9ydGFudCk7CisjZWxzZQorICAgIGRlZmF1bHQ6CisgICAgICAg
IEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICByZXR1cm4gZmFsc2U7CiAjZW5kaWYKICAg
ICB9CiAK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>132649</attachid>
            <date>2012-03-19 13:30:54 -0700</date>
            <delta_ts>2012-03-19 15:53:31 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-80874-20120319173035.patch</filename>
            <type>text/plain</type>
            <size>48261</size>
            <attacher name="Alexis Menard (darktears)">menard</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTExMjIzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZDE2ODU4NmI2NDViN2Iy
YmVjMDMzZWNlYmYzM2NjNDdlNmQyZmYzOS4uNDFmZDNiMTM5MWYxM2FiYmE3ZWI0YzViNDhhMWQy
ZTRiYTY5ZTc5NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI4IEBACisyMDEyLTAzLTE5ICBBbGV4
aXMgTWVuYXJkICA8YWxleGlzLm1lbmFyZEBvcGVuYm9zc2Eub3JnPgorCisgICAgICAgIEltcGxl
bWVudCBhIGZhc3QgcGF0aCB3aGVuIHNldHRpbmcgQ1NTIHByb3BlcnRpZXMgd2l0aCBrZXl3b3Jk
cyBmcm9tIEpTLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9ODA4NzQKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICBUaGUgaWRlYSBpcyB0byBhdm9pZCB0aGUgY3JlYXRpb24gb2YgdGhlIENTU1BhcnNlciBpbnN0
YW5jZSBhbmQgdG8gcnVuIHRoZSBwYXJzZXIgb24KKyAgICAgICAgYSBzdHJpbmcgd2Uga25vdyBp
dCBzaG91bGQgYmUgYSBrZXl3b3JkLiBXaGVuIEpTIGNhbGxzIHBhcnNlVmFsdWUgd2UgdHJ5IHRv
IGNoZWNrIGlmIHdlIGNhbgorICAgICAgICB1c2UgdGhlIGZhc3QgcGF0aCBhbmQgaWYgdGhlIGtl
eXdvcmQgaXMgYWNjZXB0ZWQgdGhlbiB3ZSBqdXN0IGFkZCBpdCB0byB0aGUgZGVjbGFyYXRpb24g
ZGlyZWN0bHkuCisgICAgICAgIEZvciB0aGUgc2FrZSBvZiBtYWludGVuYW5jZSB0aGUgcGFyc2VW
YWx1ZSBmdW5jdGlvbiB1c2VkIGJ5IENTU0dyYW1tYXIueSBpcyBzaGFyaW5nIHNvbWUgY29kZSB3
aXRoCisgICAgICAgIHRoZSBmYXN0IHBhdGggKGtleXdvcmQgbWF0Y2hpbmcgbW9zdGx5KS4KKwor
ICAgICAgICBUaGlzIHBhdGNoIGltcHJvdmVzIHRoaXMgdXNlIGNhc2UgYnkgMjAlLiBTZXR0aW5n
IGtleXdvcmQgcHJvcGVydGllcyBmcm9tIEpTIGlzIHVzZWQgYSBsb3QgaW4KKyAgICAgICAgR29v
Z2xlIE1hcHMgZm9yIGV4YW1wbGUgKHdoZW4gem9vbWluZyBvciBwYW5uaW5nKS4KKworICAgICAg
ICBObyBuZXcgdGVzdHMgOiBpdCdzIGEgcGVyZm9ybWFuY2UgaW1wcm92ZW1lbnQsIHRoZXJlIHNo
b3VsZG4ndCBiZSBhbnkgYmVoYXZpb3IgY2hhbmdlLgorCisgICAgICAgICogY3NzL0NTU1BhcnNl
ci5jcHA6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6OnByb3BlcnR5TWF0
Y2hLZXl3b3JkKToKKyAgICAgICAgKFdlYkNvcmU6OmlzS2V5d29yZFByb3BlcnR5SUQpOgorICAg
ICAgICAoV2ViQ29yZTo6cGFyc2VLZXl3b3JkVmFsdWUpOgorICAgICAgICAoV2ViQ29yZTo6Q1NT
UGFyc2VyOjpwYXJzZVZhbHVlKToKKwogMjAxMi0wMy0xOSAgRGF2aWQgSHlhdHQgIDxoeWF0dEBh
cHBsZS5jb20+CiAKICAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTgxNTM0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUGFyc2VyLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQYXJzZXIuY3BwCmluZGV4IGZjNjE0ZjU5NzFjNzk4ZDc5
MDY5OThiMzA0ZjhhYmI2MjZlNDMyYmYuLmQ5ZDNjMTYxNDA0M2FlYzk0N2ZkNmM5MWViZDJjYzQz
M2ZjZmQ5MzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQYXJzZXIuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQYXJzZXIuY3BwCkBAIC00NzksNiArNDc5LDQ1MSBA
QCBzdGF0aWMgYm9vbCBwYXJzZVNpbXBsZUxlbmd0aFZhbHVlKFN0eWxlUHJvcGVydHlTZXQqIGRl
Y2xhcmF0aW9uLCBpbnQgcHJvcGVydHlJZAogICAgIHJldHVybiB0cnVlOwogfQogCisKK3N0YXRp
YyBpbmxpbmUgYm9vbCBwcm9wZXJ0eU1hdGNoS2V5d29yZChpbnQgcHJvcGVydHlJZCwgaW50IGlk
KQoreworICAgIHN3aXRjaCAocHJvcGVydHlJZCkgeworICAgIGNhc2UgQ1NTUHJvcGVydHlCb3Jk
ZXJDb2xsYXBzZTogLy8gY29sbGFwc2UgfCBzZXBhcmF0ZSB8IGluaGVyaXQKKyAgICAgICAgICAg
IGlmIChpZCA9PSBDU1NWYWx1ZUNvbGxhcHNlIHx8IGlkID09IENTU1ZhbHVlU2VwYXJhdGUpCisg
ICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgICAgICBicmVhazsKKyAgICBjYXNl
IENTU1Byb3BlcnR5Qm9yZGVyVG9wU3R5bGU6IC8vIDxib3JkZXItc3R5bGU+IHwgaW5oZXJpdAor
ICAgIGNhc2UgQ1NTUHJvcGVydHlCb3JkZXJSaWdodFN0eWxlOiAvLyBEZWZpbmVkIGFzOiBub25l
IHwgaGlkZGVuIHwgZG90dGVkIHwgZGFzaGVkIHwKKyAgICBjYXNlIENTU1Byb3BlcnR5Qm9yZGVy
Qm90dG9tU3R5bGU6IC8vIHNvbGlkIHwgZG91YmxlIHwgZ3Jvb3ZlIHwgcmlkZ2UgfCBpbnNldCB8
IG91dHNldAorICAgIGNhc2UgQ1NTUHJvcGVydHlCb3JkZXJMZWZ0U3R5bGU6CisgICAgY2FzZSBD
U1NQcm9wZXJ0eVdlYmtpdEJvcmRlckFmdGVyU3R5bGU6CisgICAgY2FzZSBDU1NQcm9wZXJ0eVdl
YmtpdEJvcmRlckJlZm9yZVN0eWxlOgorICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRCb3JkZXJF
bmRTdHlsZToKKyAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0Qm9yZGVyU3RhcnRTdHlsZToKKyAg
ICBjYXNlIENTU1Byb3BlcnR5V2Via2l0Q29sdW1uUnVsZVN0eWxlOgorICAgICAgICAgICAgaWYg
KGlkID49IENTU1ZhbHVlTm9uZSAmJiBpZCA8PSBDU1NWYWx1ZURvdWJsZSkKKyAgICAgICAgICAg
ICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgICAgIGJyZWFrOworICAgIGNhc2UgQ1NTUHJvcGVy
dHlCb3hTaXppbmc6CisgICAgICAgICAgICAgaWYgKGlkID09IENTU1ZhbHVlQm9yZGVyQm94IHx8
IGlkID09IENTU1ZhbHVlQ29udGVudEJveCkKKyAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7
CisgICAgICAgICAgICAgYnJlYWs7CisgICAgY2FzZSBDU1NQcm9wZXJ0eUNhcHRpb25TaWRlOiAv
LyB0b3AgfCBib3R0b20gfCBsZWZ0IHwgcmlnaHQgfCBpbmhlcml0CisgICAgICAgICAgICBpZiAo
aWQgPT0gQ1NTVmFsdWVMZWZ0IHx8IGlkID09IENTU1ZhbHVlUmlnaHQgfHwgaWQgPT0gQ1NTVmFs
dWVUb3AgfHwgaWQgPT0gQ1NTVmFsdWVCb3R0b20pCisgICAgICAgICAgICAgICAgcmV0dXJuIHRy
dWU7CisgICAgICAgICAgICBicmVhazsKKyAgICBjYXNlIENTU1Byb3BlcnR5Q2xlYXI6IC8vIG5v
bmUgfCBsZWZ0IHwgcmlnaHQgfCBib3RoIHwgaW5oZXJpdAorICAgICAgICAgICAgaWYgKGlkID09
IENTU1ZhbHVlTm9uZSB8fCBpZCA9PSBDU1NWYWx1ZUxlZnQgfHwgaWQgPT0gQ1NTVmFsdWVSaWdo
dCB8fCBpZCA9PSBDU1NWYWx1ZUJvdGgpCisgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7Cisg
ICAgICAgICAgICBicmVhazsKKyAgICBjYXNlIENTU1Byb3BlcnR5RGlyZWN0aW9uOiAvLyBsdHIg
fCBydGwgfCBpbmhlcml0CisgICAgICAgICAgICBpZiAoaWQgPT0gQ1NTVmFsdWVMdHIgfHwgaWQg
PT0gQ1NTVmFsdWVSdGwpCisgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgICAg
ICBicmVhazsKKyAgICBjYXNlIENTU1Byb3BlcnR5RGlzcGxheToKKyAgICAgICAgICAgIC8vIGlu
bGluZSB8IGJsb2NrIHwgbGlzdC1pdGVtIHwgcnVuLWluIHwgaW5saW5lLWJsb2NrIHwgdGFibGUg
fAorICAgICAgICAgICAgLy8gaW5saW5lLXRhYmxlIHwgdGFibGUtcm93LWdyb3VwIHwgdGFibGUt
aGVhZGVyLWdyb3VwIHwgdGFibGUtZm9vdGVyLWdyb3VwIHwgdGFibGUtcm93IHwKKyAgICAgICAg
ICAgIC8vIHRhYmxlLWNvbHVtbi1ncm91cCB8IHRhYmxlLWNvbHVtbiB8IHRhYmxlLWNlbGwgfCB0
YWJsZS1jYXB0aW9uIHwgLXdlYmtpdC1ib3ggfCAtd2Via2l0LWlubGluZS1ib3ggfCBub25lIHwg
aW5oZXJpdAorICAgICAgICAgICAgLy8gLXdlYmtpdC1mbGV4Ym94IHwgLXdlYmtpdC1pbmxpbmUt
ZmxleGJveCB8IC13ZWJraXQtZ3JpZCB8IC13ZWJraXQtaW5saW5lLWdyaWQKKyAgICAgICAgICAg
IGlmICgoaWQgPj0gQ1NTVmFsdWVJbmxpbmUgJiYgaWQgPD0gQ1NTVmFsdWVXZWJraXRJbmxpbmVG
bGV4Ym94KSB8fCBpZCA9PSBDU1NWYWx1ZU5vbmUpCisgICAgICAgICAgICAgICAgcmV0dXJuIHRy
dWU7CisjaWYgRU5BQkxFKENTU19HUklEX0xBWU9VVCkKKyAgICAgICAgICAgIGlmIChpZCA9PSBD
U1NWYWx1ZVdlYmtpdEdyaWQgfHwgaWQgPT0gQ1NTVmFsdWVXZWJraXRJbmxpbmVHcmlkKQorICAg
ICAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICAgICAgYnJlYWs7CisjZW5kaWYKKyAg
ICBjYXNlIENTU1Byb3BlcnR5RW1wdHlDZWxsczogLy8gc2hvdyB8IGhpZGUgfCBpbmhlcml0Cisg
ICAgICAgICAgICBpZiAoaWQgPT0gQ1NTVmFsdWVTaG93IHx8IGlkID09IENTU1ZhbHVlSGlkZSkK
KyAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgICAgIGJyZWFrOworICAgIGNh
c2UgQ1NTUHJvcGVydHlGbG9hdDogLy8gbGVmdCB8IHJpZ2h0IHwgbm9uZSB8IHBvc2l0aW9uZWQg
fCBjZW50ZXIgKGZvciBidWdneSBDU1MsIG1hcHMgdG8gbm9uZSkKKyAgICAgICAgICAgIGlmIChp
ZCA9PSBDU1NWYWx1ZUxlZnQgfHwgaWQgPT0gQ1NTVmFsdWVSaWdodCB8fCBpZCA9PSBDU1NWYWx1
ZU5vbmUgfHwgaWQgPT0gQ1NTVmFsdWVDZW50ZXIgfHwgaWQgPT0gQ1NTVmFsdWVXZWJraXRQb3Np
dGlvbmVkKQorICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICAgICAgYnJlYWs7
CisgICAgY2FzZSBDU1NQcm9wZXJ0eUZvbnRTdHlsZTogLy8gbm9ybWFsIHwgaXRhbGljIHwgb2Js
aXF1ZSB8IGluaGVyaXQKKyAgICAgICAgICAgIGlmIChpZCA9PSBDU1NWYWx1ZU5vcm1hbCB8fCBp
ZCA9PSBDU1NWYWx1ZUl0YWxpYyB8fCBpZCA9PSBDU1NWYWx1ZU9ibGlxdWUpCisgICAgICAgICAg
ICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgICAgICBicmVhazsKKyAgICBjYXNlIENTU1Byb3Bl
cnR5SW1hZ2VSZW5kZXJpbmc6IC8vIGF1dG8gfCBvcHRpbWl6ZUNvbnRyYXN0CisgICAgICAgICAg
ICBpZiAoaWQgPT0gQ1NTVmFsdWVBdXRvIHx8IGlkID09IENTU1ZhbHVlV2Via2l0T3B0aW1pemVD
b250cmFzdCkKKyAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgICAgIGJyZWFr
OworICAgIGNhc2UgQ1NTUHJvcGVydHlMaXN0U3R5bGVQb3NpdGlvbjogLy8gaW5zaWRlIHwgb3V0
c2lkZSB8IGluaGVyaXQKKyAgICAgICAgICAgIGlmIChpZCA9PSBDU1NWYWx1ZUluc2lkZSB8fCBp
ZCA9PSBDU1NWYWx1ZU91dHNpZGUpCisgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAg
ICAgICAgICBicmVhazsKKyAgICBjYXNlIENTU1Byb3BlcnR5TGlzdFN0eWxlVHlwZToKKyAgICAg
ICAgICAgIC8vIFNlZSBzZWN0aW9uIENTU19QUk9QX0xJU1RfU1RZTEVfVFlQRSBvZiBmaWxlIENT
U1ZhbHVlS2V5d29yZHMuaW4KKyAgICAgICAgICAgIC8vIGZvciB0aGUgbGlzdCBvZiBzdXBwb3J0
ZWQgbGlzdC1zdHlsZS10eXBlcy4KKyAgICAgICAgICAgIGlmICgoaWQgPj0gQ1NTVmFsdWVEaXNj
ICYmIGlkIDw9IENTU1ZhbHVlS2F0YWthbmFJcm9oYSkgfHwgaWQgPT0gQ1NTVmFsdWVOb25lKQor
ICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICAgICAgYnJlYWs7CisgICAgY2Fz
ZSBDU1NQcm9wZXJ0eU91dGxpbmVTdHlsZTogLy8gKDxib3JkZXItc3R5bGU+IGV4Y2VwdCBoaWRk
ZW4pIHwgYXV0byB8IGluaGVyaXQKKyAgICAgICAgICAgIGlmIChpZCA9PSBDU1NWYWx1ZUF1dG8g
fHwgaWQgPT0gQ1NTVmFsdWVOb25lIHx8IChpZCA+PSBDU1NWYWx1ZUluc2V0ICYmIGlkIDw9IENT
U1ZhbHVlRG91YmxlKSkKKyAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgICAg
IGJyZWFrOworICAgIGNhc2UgQ1NTUHJvcGVydHlPdmVyZmxvd1g6CisgICAgY2FzZSBDU1NQcm9w
ZXJ0eU92ZXJmbG93WTogLy8gdmlzaWJsZSB8IGhpZGRlbiB8IHNjcm9sbCB8IGF1dG8gfCBtYXJx
dWVlIHwgb3ZlcmxheSB8IGluaGVyaXQKKyAgICAgICAgICAgIGlmIChpZCA9PSBDU1NWYWx1ZVZp
c2libGUgfHwgaWQgPT0gQ1NTVmFsdWVIaWRkZW4gfHwgaWQgPT0gQ1NTVmFsdWVTY3JvbGwgfHwg
aWQgPT0gQ1NTVmFsdWVBdXRvIHx8IGlkID09IENTU1ZhbHVlT3ZlcmxheSB8fCBpZCA9PSBDU1NW
YWx1ZVdlYmtpdE1hcnF1ZWUpCisgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAg
ICAgICBicmVhazsKKyAgICBjYXNlIENTU1Byb3BlcnR5UG9pbnRlckV2ZW50czoKKyAgICAgICAg
ICAgIC8vIG5vbmUgfCB2aXNpYmxlUGFpbnRlZCB8IHZpc2libGVGaWxsIHwgdmlzaWJsZVN0cm9r
ZSB8IHZpc2libGUgfAorICAgICAgICAgICAgLy8gcGFpbnRlZCB8IGZpbGwgfCBzdHJva2UgfCBh
dXRvIHwgYWxsIHwgaW5oZXJpdAorICAgICAgICAgICAgaWYgKGlkID09IENTU1ZhbHVlVmlzaWJs
ZSB8fCBpZCA9PSBDU1NWYWx1ZU5vbmUgfHwgaWQgPT0gQ1NTVmFsdWVBbGwgfHwgaWQgPT0gQ1NT
VmFsdWVBdXRvIHx8IChpZCA+PSBDU1NWYWx1ZVZpc2libGVwYWludGVkICYmIGlkIDw9IENTU1Zh
bHVlU3Ryb2tlKSkKKyAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgICAgIGJy
ZWFrOworICAgIGNhc2UgQ1NTUHJvcGVydHlQb3NpdGlvbjoKKyAgICBjYXNlIENTU1Byb3BlcnR5
UmVzaXplOiAvLyBub25lIHwgYm90aCB8IGhvcml6b250YWwgfCB2ZXJ0aWNhbCB8IGF1dG8KKyAg
ICAgICAgICAgIGlmIChpZCA9PSBDU1NWYWx1ZU5vbmUgfHwgaWQgPT0gQ1NTVmFsdWVCb3RoIHx8
IGlkID09IENTU1ZhbHVlSG9yaXpvbnRhbCB8fCBpZCA9PSBDU1NWYWx1ZVZlcnRpY2FsIHx8IGlk
ID09IENTU1ZhbHVlQXV0bykKKyAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAg
ICAgIGJyZWFrOworICAgIGNhc2UgQ1NTUHJvcGVydHlTcGVhazogLy8gbm9uZSB8IG5vcm1hbCB8
IHNwZWxsLW91dCB8IGRpZ2l0cyB8IGxpdGVyYWwtcHVuY3R1YXRpb24gfCBuby1wdW5jdHVhdGlv
biB8IGluaGVyaXQKKyAgICAgICAgICAgIGlmIChpZCA9PSBDU1NWYWx1ZU5vbmUgfHwgaWQgPT0g
Q1NTVmFsdWVOb3JtYWwgfHwgaWQgPT0gQ1NTVmFsdWVTcGVsbE91dCB8fCBpZCA9PSBDU1NWYWx1
ZURpZ2l0cyB8fCBpZCA9PSBDU1NWYWx1ZUxpdGVyYWxQdW5jdHVhdGlvbiB8fCBpZCA9PSBDU1NW
YWx1ZU5vUHVuY3R1YXRpb24pCisgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAg
ICAgICBicmVhazsKKyAgICBjYXNlIENTU1Byb3BlcnR5VGFibGVMYXlvdXQ6IC8vIGF1dG8gfCBm
aXhlZCB8IGluaGVyaXQKKyAgICAgICAgICAgIGlmIChpZCA9PSBDU1NWYWx1ZUF1dG8gfHwgaWQg
PT0gQ1NTVmFsdWVGaXhlZCkKKyAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAg
ICAgIGJyZWFrOworICAgIGNhc2UgQ1NTUHJvcGVydHlUZXh0TGluZVRocm91Z2hNb2RlOgorICAg
IGNhc2UgQ1NTUHJvcGVydHlUZXh0T3ZlcmxpbmVNb2RlOgorICAgIGNhc2UgQ1NTUHJvcGVydHlU
ZXh0VW5kZXJsaW5lTW9kZToKKyAgICAgICAgICAgIGlmIChpZCA9PSBDU1NWYWx1ZUNvbnRpbnVv
dXMgfHwgaWQgPT0gQ1NTVmFsdWVTa2lwV2hpdGVTcGFjZSkKKyAgICAgICAgICAgICAgICByZXR1
cm4gdHJ1ZTsKKyAgICAgICAgICAgIGJyZWFrOworICAgIGNhc2UgQ1NTUHJvcGVydHlUZXh0TGlu
ZVRocm91Z2hTdHlsZToKKyAgICBjYXNlIENTU1Byb3BlcnR5VGV4dE92ZXJsaW5lU3R5bGU6Cisg
ICAgY2FzZSBDU1NQcm9wZXJ0eVRleHRVbmRlcmxpbmVTdHlsZToKKyAgICAgICAgICAgIGlmIChp
ZCA9PSBDU1NWYWx1ZU5vbmUgfHwgaWQgPT0gQ1NTVmFsdWVTb2xpZCB8fCBpZCA9PSBDU1NWYWx1
ZURvdWJsZSB8fCBpZCA9PSBDU1NWYWx1ZURhc2hlZCB8fCBpZCA9PSBDU1NWYWx1ZURvdERhc2gg
fHwgaWQgPT0gQ1NTVmFsdWVEb3REb3REYXNoIHx8IGlkID09IENTU1ZhbHVlV2F2ZSkKKyAgICAg
ICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgICAgIGJyZWFrOworICAgIGNhc2UgQ1NT
UHJvcGVydHlUZXh0T3ZlcmZsb3c6IC8vIGNsaXAgfCBlbGxpcHNpcworICAgICAgICAgICAgaWYg
KGlkID09IENTU1ZhbHVlQ2xpcCB8fCBpZCA9PSBDU1NWYWx1ZUVsbGlwc2lzKQorICAgICAgICAg
ICAgICAgIHJldHVybiB0cnVlOworICAgICAgICAgICAgYnJlYWs7CisgICAgY2FzZSBDU1NQcm9w
ZXJ0eVRleHRSZW5kZXJpbmc6IC8vIGF1dG8gfCBvcHRpbWl6ZVNwZWVkIHwgb3B0aW1pemVMZWdp
YmlsaXR5IHwgZ2VvbWV0cmljUHJlY2lzaW9uCisgICAgICAgICAgICBpZiAoaWQgPT0gQ1NTVmFs
dWVBdXRvIHx8IGlkID09IENTU1ZhbHVlT3B0aW1pemVzcGVlZCB8fCBpZCA9PSBDU1NWYWx1ZU9w
dGltaXplbGVnaWJpbGl0eSB8fCBpZCA9PSBDU1NWYWx1ZUdlb21ldHJpY3ByZWNpc2lvbikKKyAg
ICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgICAgIGJyZWFrOworICAgIGNhc2Ug
Q1NTUHJvcGVydHlUZXh0VHJhbnNmb3JtOiAvLyBjYXBpdGFsaXplIHwgdXBwZXJjYXNlIHwgbG93
ZXJjYXNlIHwgbm9uZSB8IGluaGVyaXQKKyAgICAgICAgICAgIGlmICgoaWQgPj0gQ1NTVmFsdWVD
YXBpdGFsaXplICYmIGlkIDw9IENTU1ZhbHVlTG93ZXJjYXNlKSB8fCBpZCA9PSBDU1NWYWx1ZU5v
bmUpCisgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgICAgICBicmVhazsKKyAg
ICBjYXNlIENTU1Byb3BlcnR5VmlzaWJpbGl0eTogLy8gdmlzaWJsZSB8IGhpZGRlbiB8IGNvbGxh
cHNlIHwgaW5oZXJpdAorICAgICAgICAgICAgaWYgKGlkID09IENTU1ZhbHVlVmlzaWJsZSB8fCBp
ZCA9PSBDU1NWYWx1ZUhpZGRlbiB8fCBpZCA9PSBDU1NWYWx1ZUNvbGxhcHNlKQorICAgICAgICAg
ICAgICAgIHJldHVybiB0cnVlOworICAgICAgICAgICAgYnJlYWs7CisgICAgY2FzZSBDU1NQcm9w
ZXJ0eVdlYmtpdEFwcGVhcmFuY2U6CisgICAgICAgICAgICBpZiAoKGlkID49IENTU1ZhbHVlQ2hl
Y2tib3ggJiYgaWQgPD0gQ1NTVmFsdWVUZXh0YXJlYSkgfHwgaWQgPT0gQ1NTVmFsdWVOb25lKQor
ICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICAgICAgYnJlYWs7CisgICAgY2Fz
ZSBDU1NQcm9wZXJ0eVdlYmtpdEJhY2tmYWNlVmlzaWJpbGl0eToKKyAgICAgICAgICAgIGlmIChp
ZCA9PSBDU1NWYWx1ZVZpc2libGUgfHwgaWQgPT0gQ1NTVmFsdWVIaWRkZW4pCisgICAgICAgICAg
ICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgICAgICBicmVhazsKKyAgICBjYXNlIENTU1Byb3Bl
cnR5V2Via2l0Qm9yZGVyRml0OgorICAgICAgICAgICAgaWYgKGlkID09IENTU1ZhbHVlQm9yZGVy
IHx8IGlkID09IENTU1ZhbHVlTGluZXMpCisgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7Cisg
ICAgICAgICAgICBicmVhazsKKyAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0Qm94QWxpZ246Cisg
ICAgICAgICAgICBpZiAoaWQgPT0gQ1NTVmFsdWVTdHJldGNoIHx8IGlkID09IENTU1ZhbHVlU3Rh
cnQgfHwgaWQgPT0gQ1NTVmFsdWVFbmQgfHwgaWQgPT0gQ1NTVmFsdWVDZW50ZXIgfHwgaWQgPT0g
Q1NTVmFsdWVCYXNlbGluZSkKKyAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAg
ICAgIGJyZWFrOworICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRCb3hEaXJlY3Rpb246CisgICAg
ICAgICAgICBpZiAoaWQgPT0gQ1NTVmFsdWVOb3JtYWwgfHwgaWQgPT0gQ1NTVmFsdWVSZXZlcnNl
KQorICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICAgICAgYnJlYWs7CisgICAg
Y2FzZSBDU1NQcm9wZXJ0eVdlYmtpdEJveExpbmVzOgorICAgICAgICAgICAgaWYgKGlkID09IENT
U1ZhbHVlU2luZ2xlIHx8IGlkID09IENTU1ZhbHVlTXVsdGlwbGUpCisgICAgICAgICAgICAgICAg
ICAgIHJldHVybiB0cnVlOworICAgICAgICAgICAgYnJlYWs7CisgICAgY2FzZSBDU1NQcm9wZXJ0
eVdlYmtpdEJveE9yaWVudDoKKyAgICAgICAgICAgIGlmIChpZCA9PSBDU1NWYWx1ZUhvcml6b250
YWwgfHwgaWQgPT0gQ1NTVmFsdWVWZXJ0aWNhbCB8fCBpZCA9PSBDU1NWYWx1ZUlubGluZUF4aXMg
fHwgaWQgPT0gQ1NTVmFsdWVCbG9ja0F4aXMpCisgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7
CisgICAgICAgICAgICBicmVhazsKKyAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0Qm94UGFjazoK
KyAgICAgICAgICAgIGlmIChpZCA9PSBDU1NWYWx1ZVN0YXJ0IHx8IGlkID09IENTU1ZhbHVlRW5k
IHx8IGlkID09IENTU1ZhbHVlQ2VudGVyIHx8IGlkID09IENTU1ZhbHVlSnVzdGlmeSkKKyAgICAg
ICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgICAgIGJyZWFrOworICAgIGNhc2UgQ1NT
UHJvcGVydHlXZWJraXRDb2xvckNvcnJlY3Rpb246CisgICAgICAgICAgICBpZiAoaWQgPT0gQ1NT
VmFsdWVTcmdiIHx8IGlkID09IENTU1ZhbHVlRGVmYXVsdCkKKyAgICAgICAgICAgICAgICByZXR1
cm4gdHJ1ZTsKKyAgICAgICAgICAgIGJyZWFrOworICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRG
bGV4QWxpZ246CisgICAgICAgICAgICBpZiAoaWQgPT0gQ1NTVmFsdWVTdGFydCB8fCBpZCA9PSBD
U1NWYWx1ZUVuZCB8fCBpZCA9PSBDU1NWYWx1ZUNlbnRlciB8fCBpZCA9PSBDU1NWYWx1ZUJhc2Vs
aW5lIHx8IGlkID09IENTU1ZhbHVlU3RyZXRjaCkKKyAgICAgICAgICAgICAgICByZXR1cm4gdHJ1
ZTsKKyAgICAgICAgICAgIGJyZWFrOworICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRGbGV4RGly
ZWN0aW9uOgorICAgICAgICAgICAgaWYgKGlkID09IENTU1ZhbHVlUm93IHx8IGlkID09IENTU1Zh
bHVlUm93UmV2ZXJzZSB8fCBpZCA9PSBDU1NWYWx1ZUNvbHVtbiB8fCBpZCA9PSBDU1NWYWx1ZUNv
bHVtblJldmVyc2UpCisgICAgICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICAg
ICAgYnJlYWs7CisgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdEZsZXhJdGVtQWxpZ246CisgICAg
ICAgICAgICBpZiAoaWQgPT0gQ1NTVmFsdWVBdXRvIHx8IGlkID09IENTU1ZhbHVlU3RhcnQgfHwg
aWQgPT0gQ1NTVmFsdWVFbmQgfHwgaWQgPT0gQ1NTVmFsdWVDZW50ZXIgfHwgaWQgPT0gQ1NTVmFs
dWVCYXNlbGluZSB8fCBpZCA9PSBDU1NWYWx1ZVN0cmV0Y2gpCisgICAgICAgICAgICAgICAgcmV0
dXJuIHRydWU7CisgICAgICAgICAgICBicmVhazsKKyAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0
RmxleFBhY2s6CisgICAgICAgICAgICBpZiAoaWQgPT0gQ1NTVmFsdWVTdGFydCB8fCBpZCA9PSBD
U1NWYWx1ZUVuZCB8fCBpZCA9PSBDU1NWYWx1ZUNlbnRlciB8fCBpZCA9PSBDU1NWYWx1ZUp1c3Rp
ZnkgfHwgaWQgPT0gQ1NTVmFsdWVEaXN0cmlidXRlKQorICAgICAgICAgICAgICAgIHJldHVybiB0
cnVlOworICAgICAgICAgICAgYnJlYWs7CisgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdEZsZXhX
cmFwOgorICAgICAgICAgICAgaWYgKGlkID09IENTU1ZhbHVlTm9uZSB8fCBpZCA9PSBDU1NWYWx1
ZVdyYXAgfHwgaWQgPT0gQ1NTVmFsdWVXcmFwUmV2ZXJzZSkKKyAgICAgICAgICAgICAgICAgcmV0
dXJuIHRydWU7CisgICAgICAgICAgICBicmVhazsKKyAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0
Rm9udEtlcm5pbmc6CisgICAgICAgICAgICBpZiAoaWQgPT0gQ1NTVmFsdWVBdXRvIHx8IGlkID09
IENTU1ZhbHVlTm9ybWFsIHx8IGlkID09IENTU1ZhbHVlTm9uZSkKKyAgICAgICAgICAgICAgICBy
ZXR1cm4gdHJ1ZTsKKyAgICAgICAgICAgIGJyZWFrOworICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJr
aXRGb250U21vb3RoaW5nOgorICAgICAgICAgICAgaWYgKGlkID09IENTU1ZhbHVlQXV0byB8fCBp
ZCA9PSBDU1NWYWx1ZU5vbmUgfHwgaWQgPT0gQ1NTVmFsdWVBbnRpYWxpYXNlZCB8fCBpZCA9PSBD
U1NWYWx1ZVN1YnBpeGVsQW50aWFsaWFzZWQpCisgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7
CisgICAgICAgICAgICBicmVhazsKKyAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0SHlwaGVuczoK
KyAgICAgICAgICAgIGlmIChpZCA9PSBDU1NWYWx1ZU5vbmUgfHwgaWQgPT0gQ1NTVmFsdWVNYW51
YWwgfHwgaWQgPT0gQ1NTVmFsdWVBdXRvKQorICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOwor
ICAgICAgICAgICAgYnJlYWs7CisgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdExpbmVBbGlnbjoK
KyAgICAgICAgICAgIGlmIChpZCA9PSBDU1NWYWx1ZU5vbmUgfHwgaWQgPT0gQ1NTVmFsdWVFZGdl
cykKKyAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgICAgIGJyZWFrOworICAg
IGNhc2UgQ1NTUHJvcGVydHlXZWJraXRMaW5lQnJlYWs6IC8vIG5vcm1hbCB8IGFmdGVyLXdoaXRl
LXNwYWNlCisgICAgICAgICAgICBpZiAoaWQgPT0gQ1NTVmFsdWVOb3JtYWwgfHwgaWQgPT0gQ1NT
VmFsdWVBZnRlcldoaXRlU3BhY2UpCisgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAg
ICAgICAgICBicmVhazsKKyAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0TGluZVNuYXA6CisgICAg
ICAgICAgICBpZiAoaWQgPT0gQ1NTVmFsdWVOb25lIHx8IGlkID09IENTU1ZhbHVlQmFzZWxpbmUg
fHwgaWQgPT0gQ1NTVmFsdWVDb250YWluKQorICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOwor
ICAgICAgICAgICAgYnJlYWs7CisgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdE1hcmdpbkFmdGVy
Q29sbGFwc2U6CisgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdE1hcmdpbkJlZm9yZUNvbGxhcHNl
OgorICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRNYXJnaW5Cb3R0b21Db2xsYXBzZToKKyAgICBj
YXNlIENTU1Byb3BlcnR5V2Via2l0TWFyZ2luVG9wQ29sbGFwc2U6CisgICAgICAgICAgICBpZiAo
aWQgPT0gQ1NTVmFsdWVDb2xsYXBzZSB8fCBpZCA9PSBDU1NWYWx1ZVNlcGFyYXRlIHx8IGlkID09
IENTU1ZhbHVlRGlzY2FyZCkKKyAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAg
ICAgIGJyZWFrOworICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRNYXJxdWVlRGlyZWN0aW9uOgor
ICAgICAgICAgICAgaWYgKGlkID09IENTU1ZhbHVlRm9yd2FyZHMgfHwgaWQgPT0gQ1NTVmFsdWVC
YWNrd2FyZHMgfHwgaWQgPT0gQ1NTVmFsdWVBaGVhZCB8fCBpZCA9PSBDU1NWYWx1ZVJldmVyc2Ug
fHwgaWQgPT0gQ1NTVmFsdWVMZWZ0IHx8IGlkID09IENTU1ZhbHVlUmlnaHQgfHwgaWQgPT0gQ1NT
VmFsdWVEb3duCisgICAgICAgICAgICAgICAgfHwgaWQgPT0gQ1NTVmFsdWVVcCB8fCBpZCA9PSBD
U1NWYWx1ZUF1dG8pCisgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgICAgICBi
cmVhazsKKyAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0TWFycXVlZVN0eWxlOgorICAgICAgICAg
ICAgaWYgKGlkID09IENTU1ZhbHVlTm9uZSB8fCBpZCA9PSBDU1NWYWx1ZVNsaWRlIHx8IGlkID09
IENTU1ZhbHVlU2Nyb2xsIHx8IGlkID09IENTU1ZhbHVlQWx0ZXJuYXRlKQorICAgICAgICAgICAg
ICAgIHJldHVybiB0cnVlOworICAgICAgICAgICAgYnJlYWs7CisgICAgY2FzZSBDU1NQcm9wZXJ0
eVdlYmtpdE1hdGNoTmVhcmVzdE1haWxCbG9ja3F1b3RlQ29sb3I6IC8vIG5vcm1hbCB8IG1hdGNo
CisgICAgICAgICAgICBpZiAoaWQgPT0gQ1NTVmFsdWVOb3JtYWwgfHwgaWQgPT0gQ1NTVmFsdWVN
YXRjaCkKKyAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgICAgIGJyZWFrOwor
ICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXROYnNwTW9kZTogLy8gbm9ybWFsIHwgc3BhY2UKKyAg
ICAgICAgICAgIGlmIChpZCA9PSBDU1NWYWx1ZU5vcm1hbCB8fCBpZCA9PSBDU1NWYWx1ZVNwYWNl
KQorICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICAgICAgYnJlYWs7CisjaWYg
RU5BQkxFKE9WRVJGTE9XX1NDUk9MTElORykKKyAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0T3Zl
cmZsb3dTY3JvbGxpbmc6CisgICAgICAgICAgICBpZiAoaWQgPT0gQ1NTVmFsdWVBdXRvIHx8IGlk
ID09IENTU1ZhbHVlVG91Y2gpCisgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAg
ICAgICBicmVhazsKKyNlbmRpZgorICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRQcmludENvbG9y
QWRqdXN0OgorICAgICAgICAgICAgaWYgKGlkID09IENTU1ZhbHVlRXhhY3QgfHwgaWQgPT0gQ1NT
VmFsdWVFY29ub215KQorICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICAgICAg
YnJlYWs7CisgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdFJ0bE9yZGVyaW5nOgorICAgICAgICAg
ICAgaWYgKGlkID09IENTU1ZhbHVlTG9naWNhbCB8fCBpZCA9PSBDU1NWYWx1ZVZpc3VhbCkKKyAg
ICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgICAgIGJyZWFrOworICAgIGNhc2Ug
Q1NTUHJvcGVydHlXZWJraXRUZXh0Q29tYmluZToKKyAgICAgICAgICAgIGlmIChpZCA9PSBDU1NW
YWx1ZU5vbmUgfHwgaWQgPT0gQ1NTVmFsdWVIb3Jpem9udGFsKQorICAgICAgICAgICAgICAgIHJl
dHVybiB0cnVlOworICAgICAgICAgICAgYnJlYWs7CisgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtp
dFRleHRFbXBoYXNpc1Bvc2l0aW9uOgorICAgICAgICAgICAgaWYgKGlkID09IENTU1ZhbHVlT3Zl
ciB8fCBpZCA9PSBDU1NWYWx1ZVVuZGVyKQorICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOwor
ICAgICAgICAgICAgYnJlYWs7CisgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdFRleHRTZWN1cml0
eToKKyAgICAgICAgICAgIC8vIGRpc2MgfCBjaXJjbGUgfCBzcXVhcmUgfCBub25lIHwgaW5oZXJp
dAorICAgICAgICAgICAgaWYgKGlkID09IENTU1ZhbHVlRGlzYyB8fCBpZCA9PSBDU1NWYWx1ZUNp
cmNsZSB8fCBpZCA9PSBDU1NWYWx1ZVNxdWFyZSB8fCBpZCA9PSBDU1NWYWx1ZU5vbmUpCisgICAg
ICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgICAgICBicmVhazsKKyAgICBjYXNlIENT
U1Byb3BlcnR5V2Via2l0VGV4dFNpemVBZGp1c3Q6CisgICAgICAgICAgICBpZiAoaWQgPT0gQ1NT
VmFsdWVBdXRvIHx8IGlkID09IENTU1ZhbHVlTm9uZSkKKyAgICAgICAgICAgICAgICByZXR1cm4g
dHJ1ZTsKKyAgICAgICAgICAgIGJyZWFrOworICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRUcmFu
c2Zvcm1TdHlsZToKKyAgICAgICAgICAgIGlmIChpZCA9PSBDU1NWYWx1ZUZsYXQgfHwgaWQgPT0g
Q1NTVmFsdWVQcmVzZXJ2ZTNkKQorICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAg
ICAgICAgYnJlYWs7CisgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdFVzZXJEcmFnOiAvLyBhdXRv
IHwgbm9uZSB8IGVsZW1lbnQKKyAgICAgICAgICAgIGlmIChpZCA9PSBDU1NWYWx1ZUF1dG8gfHwg
aWQgPT0gQ1NTVmFsdWVOb25lIHx8IGlkID09IENTU1ZhbHVlRWxlbWVudCkKKyAgICAgICAgICAg
ICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgICAgIGJyZWFrOworICAgIGNhc2UgQ1NTUHJvcGVy
dHlXZWJraXRVc2VyTW9kaWZ5OiAvLyByZWFkLW9ubHkgfCByZWFkLXdyaXRlCisgICAgICAgICAg
ICBpZiAoaWQgPT0gQ1NTVmFsdWVSZWFkT25seSB8fCBpZCA9PSBDU1NWYWx1ZVJlYWRXcml0ZSB8
fCBpZCA9PSBDU1NWYWx1ZVJlYWRXcml0ZVBsYWludGV4dE9ubHkpCisgICAgICAgICAgICAgICAg
cmV0dXJuIHRydWU7CisgICAgICAgICAgICBicmVhazsKKyAgICBjYXNlIENTU1Byb3BlcnR5V2Vi
a2l0VXNlclNlbGVjdDogLy8gYXV0byB8IG5vbmUgfCB0ZXh0CisgICAgICAgICAgICBpZiAoaWQg
PT0gQ1NTVmFsdWVBdXRvIHx8IGlkID09IENTU1ZhbHVlTm9uZSB8fCBpZCA9PSBDU1NWYWx1ZVRl
eHQpCisgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgICAgICBicmVhazsKKyAg
ICBjYXNlIENTU1Byb3BlcnR5V2Via2l0V3JhcEZsb3c6CisgICAgICAgICAgICBpZiAoaWQgPT0g
Q1NTVmFsdWVBdXRvIHx8IGlkID09IENTU1ZhbHVlQm90aCB8fCBpZCA9PSBDU1NWYWx1ZUxlZnQg
fHwgaWQgPT0gQ1NTVmFsdWVSaWdodCB8fCBpZCA9PSBDU1NWYWx1ZU1heGltdW0gfHwgaWQgPT0g
Q1NTVmFsdWVDbGVhcikKKyAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgICAg
IGJyZWFrOworICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRXcmFwVGhyb3VnaDoKKyAgICAgICAg
ICAgIGlmIChpZCA9PSBDU1NWYWx1ZVdyYXAgfHwgaWQgPT0gQ1NTVmFsdWVOb25lKQorICAgICAg
ICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICAgICAgYnJlYWs7CisgICAgY2FzZSBDU1NQ
cm9wZXJ0eVdlYmtpdFdyaXRpbmdNb2RlOgorICAgICAgICAgICAgaWYgKGlkID49IENTU1ZhbHVl
SG9yaXpvbnRhbFRiICYmIGlkIDw9IENTU1ZhbHVlSG9yaXpvbnRhbEJ0KQorICAgICAgICAgICAg
ICAgIHJldHVybiB0cnVlOworICAgICAgICAgICAgYnJlYWs7CisgICAgY2FzZSBDU1NQcm9wZXJ0
eVdoaXRlU3BhY2U6IC8vIG5vcm1hbCB8IHByZSB8IG5vd3JhcCB8IGluaGVyaXQKKyAgICAgICAg
ICAgIGlmIChpZCA9PSBDU1NWYWx1ZU5vcm1hbCB8fCBpZCA9PSBDU1NWYWx1ZVByZSB8fCBpZCA9
PSBDU1NWYWx1ZVByZVdyYXAgfHwgaWQgPT0gQ1NTVmFsdWVQcmVMaW5lIHx8IGlkID09IENTU1Zh
bHVlTm93cmFwKQorICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICAgICAgYnJl
YWs7CisgICAgY2FzZSBDU1NQcm9wZXJ0eVdvcmRCcmVhazogLy8gbm9ybWFsIHwgYnJlYWstYWxs
IHwgYnJlYWstd29yZCAodGhpcyBpcyBhIGN1c3RvbSBleHRlbnNpb24pCisgICAgICAgICAgICBp
ZiAoaWQgPT0gQ1NTVmFsdWVOb3JtYWwgfHwgaWQgPT0gQ1NTVmFsdWVCcmVha0FsbCB8fCBpZCA9
PSBDU1NWYWx1ZUJyZWFrV29yZCkKKyAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAg
ICAgICAgIGJyZWFrOworICAgIGNhc2UgQ1NTUHJvcGVydHlXb3JkV3JhcDogLy8gbm9ybWFsIHwg
YnJlYWstd29yZAorICAgICAgICAgICAgaWYgKGlkID09IENTU1ZhbHVlTm9ybWFsIHx8IGlkID09
IENTU1ZhbHVlQnJlYWtXb3JkKQorICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAg
ICAgICAgYnJlYWs7CisgICAgZGVmYXVsdDoKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0K
KyAgICByZXR1cm4gZmFsc2U7Cit9CisKK3N0YXRpYyBpbmxpbmUgYm9vbCBpc0tleXdvcmRQcm9w
ZXJ0eUlEKGludCBwcm9wZXJ0eUlkKQoreworICAgIHN3aXRjaCAocHJvcGVydHlJZCkgeworICAg
IGNhc2UgQ1NTUHJvcGVydHlCb3JkZXJCb3R0b21TdHlsZToKKyAgICBjYXNlIENTU1Byb3BlcnR5
Qm9yZGVyQ29sbGFwc2U6CisgICAgY2FzZSBDU1NQcm9wZXJ0eUJvcmRlckxlZnRTdHlsZToKKyAg
ICBjYXNlIENTU1Byb3BlcnR5Qm9yZGVyUmlnaHRTdHlsZToKKyAgICBjYXNlIENTU1Byb3BlcnR5
Qm9yZGVyVG9wU3R5bGU6CisgICAgY2FzZSBDU1NQcm9wZXJ0eUJveFNpemluZzoKKyAgICBjYXNl
IENTU1Byb3BlcnR5Q2FwdGlvblNpZGU6CisgICAgY2FzZSBDU1NQcm9wZXJ0eUNsZWFyOgorICAg
IGNhc2UgQ1NTUHJvcGVydHlEaXJlY3Rpb246CisgICAgY2FzZSBDU1NQcm9wZXJ0eURpc3BsYXk6
CisgICAgY2FzZSBDU1NQcm9wZXJ0eUVtcHR5Q2VsbHM6CisgICAgY2FzZSBDU1NQcm9wZXJ0eUZs
b2F0OgorICAgIGNhc2UgQ1NTUHJvcGVydHlGb250U3R5bGU6CisgICAgY2FzZSBDU1NQcm9wZXJ0
eUltYWdlUmVuZGVyaW5nOgorICAgIGNhc2UgQ1NTUHJvcGVydHlMaXN0U3R5bGVQb3NpdGlvbjoK
KyAgICBjYXNlIENTU1Byb3BlcnR5TGlzdFN0eWxlVHlwZToKKyAgICBjYXNlIENTU1Byb3BlcnR5
T3V0bGluZVN0eWxlOgorICAgIGNhc2UgQ1NTUHJvcGVydHlPdmVyZmxvd1g6CisgICAgY2FzZSBD
U1NQcm9wZXJ0eU92ZXJmbG93WToKKyAgICBjYXNlIENTU1Byb3BlcnR5UG9pbnRlckV2ZW50czoK
KyAgICBjYXNlIENTU1Byb3BlcnR5UG9zaXRpb246CisgICAgY2FzZSBDU1NQcm9wZXJ0eVJlc2l6
ZToKKyAgICBjYXNlIENTU1Byb3BlcnR5U3BlYWs6CisgICAgY2FzZSBDU1NQcm9wZXJ0eVRhYmxl
TGF5b3V0OgorICAgIGNhc2UgQ1NTUHJvcGVydHlUZXh0TGluZVRocm91Z2hNb2RlOgorICAgIGNh
c2UgQ1NTUHJvcGVydHlUZXh0TGluZVRocm91Z2hTdHlsZToKKyAgICBjYXNlIENTU1Byb3BlcnR5
VGV4dE92ZXJmbG93OgorICAgIGNhc2UgQ1NTUHJvcGVydHlUZXh0T3ZlcmxpbmVNb2RlOgorICAg
IGNhc2UgQ1NTUHJvcGVydHlUZXh0T3ZlcmxpbmVTdHlsZToKKyAgICBjYXNlIENTU1Byb3BlcnR5
VGV4dFJlbmRlcmluZzoKKyAgICBjYXNlIENTU1Byb3BlcnR5VGV4dFRyYW5zZm9ybToKKyAgICBj
YXNlIENTU1Byb3BlcnR5VGV4dFVuZGVybGluZU1vZGU6CisgICAgY2FzZSBDU1NQcm9wZXJ0eVRl
eHRVbmRlcmxpbmVTdHlsZToKKyAgICBjYXNlIENTU1Byb3BlcnR5VmlzaWJpbGl0eToKKyAgICBj
YXNlIENTU1Byb3BlcnR5V2Via2l0QXBwZWFyYW5jZToKKyAgICBjYXNlIENTU1Byb3BlcnR5V2Vi
a2l0QmFja2ZhY2VWaXNpYmlsaXR5OgorICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRCb3JkZXJB
ZnRlclN0eWxlOgorICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRCb3JkZXJCZWZvcmVTdHlsZToK
KyAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0Qm9yZGVyRW5kU3R5bGU6CisgICAgY2FzZSBDU1NQ
cm9wZXJ0eVdlYmtpdEJvcmRlckZpdDoKKyAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0Qm9yZGVy
U3RhcnRTdHlsZToKKyAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0Qm94QWxpZ246CisgICAgY2Fz
ZSBDU1NQcm9wZXJ0eVdlYmtpdEJveERpcmVjdGlvbjoKKyAgICBjYXNlIENTU1Byb3BlcnR5V2Vi
a2l0Qm94TGluZXM6CisgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdEJveE9yaWVudDoKKyAgICBj
YXNlIENTU1Byb3BlcnR5V2Via2l0Qm94UGFjazoKKyAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0
Q29sb3JDb3JyZWN0aW9uOgorICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRDb2x1bW5SdWxlU3R5
bGU6CisgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdEZsZXhBbGlnbjoKKyAgICBjYXNlIENTU1By
b3BlcnR5V2Via2l0RmxleERpcmVjdGlvbjoKKyAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0Rmxl
eEl0ZW1BbGlnbjoKKyAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0RmxleFBhY2s6CisgICAgY2Fz
ZSBDU1NQcm9wZXJ0eVdlYmtpdEZsZXhXcmFwOgorICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRG
b250S2VybmluZzoKKyAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0Rm9udFNtb290aGluZzoKKyAg
ICBjYXNlIENTU1Byb3BlcnR5V2Via2l0SHlwaGVuczoKKyAgICBjYXNlIENTU1Byb3BlcnR5V2Vi
a2l0TGluZUFsaWduOgorICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRMaW5lQnJlYWs6CisgICAg
Y2FzZSBDU1NQcm9wZXJ0eVdlYmtpdExpbmVTbmFwOgorICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJr
aXRNYXJnaW5BZnRlckNvbGxhcHNlOgorICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRNYXJnaW5C
ZWZvcmVDb2xsYXBzZToKKyAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0TWFyZ2luQm90dG9tQ29s
bGFwc2U6CisgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdE1hcmdpblRvcENvbGxhcHNlOgorICAg
IGNhc2UgQ1NTUHJvcGVydHlXZWJraXRNYXJxdWVlRGlyZWN0aW9uOgorICAgIGNhc2UgQ1NTUHJv
cGVydHlXZWJraXRNYXJxdWVlU3R5bGU6CisgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdE1hdGNo
TmVhcmVzdE1haWxCbG9ja3F1b3RlQ29sb3I6CisgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdE5i
c3BNb2RlOgorI2lmIEVOQUJMRShPVkVSRkxPV19TQ1JPTExJTkcpCisgICAgY2FzZSBDU1NQcm9w
ZXJ0eVdlYmtpdE92ZXJmbG93U2Nyb2xsaW5nOgorI2VuZGlmCisgICAgY2FzZSBDU1NQcm9wZXJ0
eVdlYmtpdFByaW50Q29sb3JBZGp1c3Q6CisgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdFJ0bE9y
ZGVyaW5nOgorICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRUZXh0Q29tYmluZToKKyAgICBjYXNl
IENTU1Byb3BlcnR5V2Via2l0VGV4dEVtcGhhc2lzUG9zaXRpb246CisgICAgY2FzZSBDU1NQcm9w
ZXJ0eVdlYmtpdFRleHRTZWN1cml0eToKKyAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0VGV4dFNp
emVBZGp1c3Q6CisgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdFRyYW5zZm9ybVN0eWxlOgorICAg
IGNhc2UgQ1NTUHJvcGVydHlXZWJraXRVc2VyRHJhZzoKKyAgICBjYXNlIENTU1Byb3BlcnR5V2Vi
a2l0VXNlck1vZGlmeToKKyAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0VXNlclNlbGVjdDoKKyAg
ICBjYXNlIENTU1Byb3BlcnR5V2Via2l0V3JhcEZsb3c6CisgICAgY2FzZSBDU1NQcm9wZXJ0eVdl
YmtpdFdyYXBUaHJvdWdoOgorICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRXcml0aW5nTW9kZToK
KyAgICBjYXNlIENTU1Byb3BlcnR5V2hpdGVTcGFjZToKKyAgICBjYXNlIENTU1Byb3BlcnR5V29y
ZEJyZWFrOgorICAgIGNhc2UgQ1NTUHJvcGVydHlXb3JkV3JhcDoKKyAgICAgICAgcmV0dXJuIHRy
dWU7CisgICAgZGVmYXVsdDoKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KK30KKworc3Rh
dGljIGJvb2wgcGFyc2VLZXl3b3JkVmFsdWUoU3R5bGVQcm9wZXJ0eVNldCogZGVjbGFyYXRpb24s
IGludCBwcm9wZXJ0eUlkLCBjb25zdCBTdHJpbmcmIHN0cmluZywgYm9vbCBpbXBvcnRhbnQsIENT
U1N0eWxlU2hlZXQqIGNvbnRleHRTdHlsZVNoZWV0KQoreworICAgIGlmIChzdHJpbmcuaXNFbXB0
eSgpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBpZiAoIWlzS2V5d29yZFByb3BlcnR5
SUQocHJvcGVydHlJZCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIENTU1BhcnNlclN0
cmluZyBjc3NTdHJpbmc7CisgICAgY3NzU3RyaW5nLmNoYXJhY3RlcnMgPSBjb25zdF9jYXN0PFVD
aGFyKj4oc3RyaW5nLmNoYXJhY3RlcnMoKSk7CisgICAgY3NzU3RyaW5nLmxlbmd0aCA9IHN0cmlu
Zy5sZW5ndGgoKTsKKyAgICBpbnQgdmFsdWVJRCA9IGNzc1ZhbHVlS2V5d29yZElEKGNzc1N0cmlu
Zyk7CisKKyAgICBpZiAoIXZhbHVlSUQpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIERv
Y3VtZW50KiBkb2N1bWVudCA9IGNvbnRleHRTdHlsZVNoZWV0LT5maW5kRG9jdW1lbnQoKTsKKyAg
ICBSZWZQdHI8Q1NTVmFsdWU+IHZhbHVlOworICAgIENTU1ZhbHVlUG9vbCogY3NzVmFsdWVQb29s
ID0gZG9jdW1lbnQgPyBkb2N1bWVudC0+Y3NzVmFsdWVQb29sKCkuZ2V0KCkgOiAwOworICAgIGlm
ICh2YWx1ZUlEID09IENTU1ZhbHVlSW5oZXJpdCkgeworICAgICAgICBpZiAoY3NzVmFsdWVQb29s
KQorICAgICAgICB2YWx1ZSA9IGNzc1ZhbHVlUG9vbCA/IGNzc1ZhbHVlUG9vbC0+Y3JlYXRlSW5o
ZXJpdGVkVmFsdWUoKSA6IENTU0luaGVyaXRlZFZhbHVlOjpjcmVhdGUoKTsKKyAgICAgICAgZGVj
bGFyYXRpb24tPmFkZFBhcnNlZFByb3BlcnR5KENTU1Byb3BlcnR5KHByb3BlcnR5SWQsIHZhbHVl
LnJlbGVhc2UoKSwgaW1wb3J0YW50KSk7CisgICAgICAgIHJldHVybiB0cnVlOworICAgIH0KKyAg
ICBpZiAodmFsdWVJRCA9PSBDU1NWYWx1ZUluaXRpYWwpIHsKKyAgICAgICAgdmFsdWUgPSBjc3NW
YWx1ZVBvb2wgPyBjc3NWYWx1ZVBvb2wtPmNyZWF0ZUV4cGxpY2l0SW5pdGlhbFZhbHVlKCkgOiBD
U1NJbml0aWFsVmFsdWU6OmNyZWF0ZUV4cGxpY2l0KCk7CisgICAgICAgIGRlY2xhcmF0aW9uLT5h
ZGRQYXJzZWRQcm9wZXJ0eShDU1NQcm9wZXJ0eShwcm9wZXJ0eUlkLCB2YWx1ZS5yZWxlYXNlKCks
IGltcG9ydGFudCkpOworICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9CisKKyAgICBpZiAoIXBy
b3BlcnR5TWF0Y2hLZXl3b3JkKHByb3BlcnR5SWQsIHZhbHVlSUQpKQorICAgICAgICByZXR1cm4g
ZmFsc2U7CisKKyAgICB2YWx1ZSA9IGRvY3VtZW50ID8gY3NzVmFsdWVQb29sLT5jcmVhdGVJZGVu
dGlmaWVyVmFsdWUodmFsdWVJRCkgOiBDU1NQcmltaXRpdmVWYWx1ZTo6Y3JlYXRlSWRlbnRpZmll
cih2YWx1ZUlEKTsKKyAgICBkZWNsYXJhdGlvbi0+YWRkUGFyc2VkUHJvcGVydHkoQ1NTUHJvcGVy
dHkocHJvcGVydHlJZCwgdmFsdWUucmVsZWFzZSgpLCBpbXBvcnRhbnQpKTsKKyAgICByZXR1cm4g
dHJ1ZTsKK30KKwogUGFzc1JlZlB0cjxDU1NWYWx1ZUxpc3Q+IENTU1BhcnNlcjo6cGFyc2VGb250
RmFjZVZhbHVlKGNvbnN0IEF0b21pY1N0cmluZyYgc3RyaW5nLCBDU1NTdHlsZVNoZWV0KiBjb250
ZXh0U3R5bGVTaGVldCkKIHsKICAgICBSZWZQdHI8U3R5bGVQcm9wZXJ0eVNldD4gZHVtbXlTdHls
ZSA9IFN0eWxlUHJvcGVydHlTZXQ6OmNyZWF0ZSgpOwpAQCAtNDkzLDYgKzkzOCw4IEBAIGJvb2wg
Q1NTUGFyc2VyOjpwYXJzZVZhbHVlKFN0eWxlUHJvcGVydHlTZXQqIGRlY2xhcmF0aW9uLCBpbnQg
cHJvcGVydHlJZCwgY29uc3QKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgaWYgKHBhcnNlQ29s
b3JWYWx1ZShkZWNsYXJhdGlvbiwgcHJvcGVydHlJZCwgc3RyaW5nLCBpbXBvcnRhbnQsIHN0cmlj
dCwgY29udGV4dFN0eWxlU2hlZXQpKQogICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICBpZiAocGFy
c2VLZXl3b3JkVmFsdWUoZGVjbGFyYXRpb24sIHByb3BlcnR5SWQsIHN0cmluZywgaW1wb3J0YW50
LCBjb250ZXh0U3R5bGVTaGVldCkpCisgICAgICAgIHJldHVybiB0cnVlOwogICAgIENTU1BhcnNl
ciBwYXJzZXIoc3RyaWN0KTsKICAgICByZXR1cm4gcGFyc2VyLnBhcnNlVmFsdWUoZGVjbGFyYXRp
b24sIHByb3BlcnR5SWQsIHN0cmluZywgaW1wb3J0YW50LCBjb250ZXh0U3R5bGVTaGVldCk7CiB9
CkBAIC05MzAsNiArMTM3NywxOSBAQCBib29sIENTU1BhcnNlcjo6cGFyc2VWYWx1ZShpbnQgcHJv
cElkLCBib29sIGltcG9ydGFudCkKICAgICBib29sIHZhbGlkUHJpbWl0aXZlID0gZmFsc2U7CiAg
ICAgUmVmUHRyPENTU1ZhbHVlPiBwYXJzZWRWYWx1ZTsKIAorICAgIGlmIChpZCAmJiBpc0tleXdv
cmRQcm9wZXJ0eUlEKHByb3BJZCkpIHsKKyAgICAgICAgICAgIGlmICghcHJvcGVydHlNYXRjaEtl
eXdvcmQocHJvcElkLCBpZCkpCisgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAg
ICAgICAgcGFyc2VkVmFsdWUgPSBwYXJzZVZhbGlkUHJpbWl0aXZlKGlkLCB2YWx1ZSk7CisgICAg
ICAgICAgICBtX3ZhbHVlTGlzdC0+bmV4dCgpOworICAgICAgICAgICAgQVNTRVJUKCFtX3BhcnNl
ZENhbGN1bGF0aW9uKTsKKyAgICAgICAgICAgIGlmICghbV92YWx1ZUxpc3QtPmN1cnJlbnQoKSB8
fCBpblNob3J0aGFuZCgpKSB7CisgICAgICAgICAgICAgICAgYWRkUHJvcGVydHkocHJvcElkLCBw
YXJzZWRWYWx1ZS5yZWxlYXNlKCksIGltcG9ydGFudCk7CisgICAgICAgICAgICAgICAgcmV0dXJu
IHRydWU7CisgICAgICAgICAgICB9CisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQor
CiAgICAgc3dpdGNoIChzdGF0aWNfY2FzdDxDU1NQcm9wZXJ0eUlEPihwcm9wSWQpKSB7CiAgICAg
ICAgIC8qIFRoZSBjb21tZW50IHRvIHRoZSBsZWZ0IGRlZmluZXMgYWxsIHZhbGlkIHZhbHVlIG9m
IHRoaXMgcHJvcGVydGllcyBhcyBkZWZpbmVkCiAgICAgICAgICAqIGluIENTUyAyLCBBcHBlbmRp
eCBGLiBQcm9wZXJ0eSBpbmRleApAQCAtMTAwNCwyNSArMTQ2NCwxMCBAQCBib29sIENTU1BhcnNl
cjo6cGFyc2VWYWx1ZShpbnQgcHJvcElkLCBib29sIGltcG9ydGFudCkKICAgICAgICAgICAgIHZh
bGlkUHJpbWl0aXZlID0gKHByb3BJZCA9PSBDU1NQcm9wZXJ0eVdlYmtpdFJlZ2lvbkJyZWFrSW5z
aWRlKSA/IGNzc1JlZ2lvbnNFbmFibGVkKCkgOiB0cnVlOwogICAgICAgICBicmVhazsKIAotICAg
IGNhc2UgQ1NTUHJvcGVydHlFbXB0eUNlbGxzOiAgICAgICAgICAvLyBzaG93IHwgaGlkZSB8IGlu
aGVyaXQKLSAgICAgICAgaWYgKGlkID09IENTU1ZhbHVlU2hvdwotICAgICAgICAgICAgfHwgaWQg
PT0gQ1NTVmFsdWVIaWRlKQotICAgICAgICAgICAgdmFsaWRQcmltaXRpdmUgPSB0cnVlOwotICAg
ICAgICBicmVhazsKLQogICAgIGNhc2UgQ1NTUHJvcGVydHlDb250ZW50OiAgICAgICAgICAgICAg
Ly8gWyA8c3RyaW5nPiB8IDx1cmk+IHwgPGNvdW50ZXI+IHwgYXR0cihYKSB8IG9wZW4tcXVvdGUg
fAogICAgICAgICAvLyBjbG9zZS1xdW90ZSB8IG5vLW9wZW4tcXVvdGUgfCBuby1jbG9zZS1xdW90
ZSBdKyB8IGluaGVyaXQKICAgICAgICAgcmV0dXJuIHBhcnNlQ29udGVudChwcm9wSWQsIGltcG9y
dGFudCk7CiAKLSAgICBjYXNlIENTU1Byb3BlcnR5V2hpdGVTcGFjZTogICAgICAgICAgLy8gbm9y
bWFsIHwgcHJlIHwgbm93cmFwIHwgaW5oZXJpdAotICAgICAgICBpZiAoaWQgPT0gQ1NTVmFsdWVO
b3JtYWwKLSAgICAgICAgICAgIHx8IGlkID09IENTU1ZhbHVlUHJlCi0gICAgICAgICAgICB8fCBp
ZCA9PSBDU1NWYWx1ZVByZVdyYXAKLSAgICAgICAgICAgIHx8IGlkID09IENTU1ZhbHVlUHJlTGlu
ZQotICAgICAgICAgICAgfHwgaWQgPT0gQ1NTVmFsdWVOb3dyYXApCi0gICAgICAgICAgICB2YWxp
ZFByaW1pdGl2ZSA9IHRydWU7Ci0gICAgICAgIGJyZWFrOwotCiAgICAgY2FzZSBDU1NQcm9wZXJ0
eUNsaXA6ICAgICAgICAgICAgICAgICAvLyA8c2hhcGU+IHwgYXV0byB8IGluaGVyaXQKICAgICAg
ICAgaWYgKGlkID09IENTU1ZhbHVlQXV0bykKICAgICAgICAgICAgIHZhbGlkUHJpbWl0aXZlID0g
dHJ1ZTsKQEAgLTEwMzMsMjIgKzE0NzgsNiBAQCBib29sIENTU1BhcnNlcjo6cGFyc2VWYWx1ZShp
bnQgcHJvcElkLCBib29sIGltcG9ydGFudCkKICAgICAvKiBTdGFydCBvZiBzdXBwb3J0ZWQgQ1NT
IHByb3BlcnRpZXMgd2l0aCB2YWxpZGF0aW9uLiBUaGlzIGlzIG5lZWRlZCBmb3IgcGFyc2VTaG9y
dGhhbmQgdG8gd29yawogICAgICAqIGNvcnJlY3RseSBhbmQgYWxsb3dzIG9wdGltaXphdGlvbiBp
biBXZWJDb3JlOjphcHBseVJ1bGUoLi4pCiAgICAgICovCi0gICAgY2FzZSBDU1NQcm9wZXJ0eUNh
cHRpb25TaWRlOiAgICAgICAgIC8vIHRvcCB8IGJvdHRvbSB8IGxlZnQgfCByaWdodCB8IGluaGVy
aXQKLSAgICAgICAgaWYgKGlkID09IENTU1ZhbHVlTGVmdCB8fCBpZCA9PSBDU1NWYWx1ZVJpZ2h0
IHx8Ci0gICAgICAgICAgICBpZCA9PSBDU1NWYWx1ZVRvcCB8fCBpZCA9PSBDU1NWYWx1ZUJvdHRv
bSkKLSAgICAgICAgICAgIHZhbGlkUHJpbWl0aXZlID0gdHJ1ZTsKLSAgICAgICAgYnJlYWs7Ci0K
LSAgICBjYXNlIENTU1Byb3BlcnR5Qm9yZGVyQ29sbGFwc2U6ICAgICAgLy8gY29sbGFwc2UgfCBz
ZXBhcmF0ZSB8IGluaGVyaXQKLSAgICAgICAgaWYgKGlkID09IENTU1ZhbHVlQ29sbGFwc2UgfHwg
aWQgPT0gQ1NTVmFsdWVTZXBhcmF0ZSkKLSAgICAgICAgICAgIHZhbGlkUHJpbWl0aXZlID0gdHJ1
ZTsKLSAgICAgICAgYnJlYWs7Ci0KLSAgICBjYXNlIENTU1Byb3BlcnR5VmlzaWJpbGl0eTogICAg
ICAgICAgIC8vIHZpc2libGUgfCBoaWRkZW4gfCBjb2xsYXBzZSB8IGluaGVyaXQKLSAgICAgICAg
aWYgKGlkID09IENTU1ZhbHVlVmlzaWJsZSB8fCBpZCA9PSBDU1NWYWx1ZUhpZGRlbiB8fCBpZCA9
PSBDU1NWYWx1ZUNvbGxhcHNlKQotICAgICAgICAgICAgdmFsaWRQcmltaXRpdmUgPSB0cnVlOwot
ICAgICAgICBicmVhazsKLQogICAgIGNhc2UgQ1NTUHJvcGVydHlPdmVyZmxvdzogewogICAgICAg
ICBTaG9ydGhhbmRTY29wZSBzY29wZSh0aGlzLCBwcm9wSWQpOwogICAgICAgICBpZiAobnVtICE9
IDEgfHwgIXBhcnNlVmFsdWUoQ1NTUHJvcGVydHlPdmVyZmxvd1gsIGltcG9ydGFudCkpCkBAIC0x
MDU3LDU5ICsxNDg2LDYgQEAgYm9vbCBDU1NQYXJzZXI6OnBhcnNlVmFsdWUoaW50IHByb3BJZCwg
Ym9vbCBpbXBvcnRhbnQpCiAgICAgICAgIGFkZFByb3BlcnR5KENTU1Byb3BlcnR5T3ZlcmZsb3dZ
LCB2YWx1ZSwgaW1wb3J0YW50KTsKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQotICAgIGNh
c2UgQ1NTUHJvcGVydHlPdmVyZmxvd1g6Ci0gICAgY2FzZSBDU1NQcm9wZXJ0eU92ZXJmbG93WTog
ICAgICAgICAgIC8vIHZpc2libGUgfCBoaWRkZW4gfCBzY3JvbGwgfCBhdXRvIHwgbWFycXVlZSB8
IG92ZXJsYXkgfCBpbmhlcml0Ci0gICAgICAgIGlmIChpZCA9PSBDU1NWYWx1ZVZpc2libGUgfHwg
aWQgPT0gQ1NTVmFsdWVIaWRkZW4gfHwgaWQgPT0gQ1NTVmFsdWVTY3JvbGwgfHwgaWQgPT0gQ1NT
VmFsdWVBdXRvIHx8Ci0gICAgICAgICAgICBpZCA9PSBDU1NWYWx1ZU92ZXJsYXkgfHwgaWQgPT0g
Q1NTVmFsdWVXZWJraXRNYXJxdWVlKQotICAgICAgICAgICAgdmFsaWRQcmltaXRpdmUgPSB0cnVl
OwotICAgICAgICBicmVhazsKLQotICAgIGNhc2UgQ1NTUHJvcGVydHlMaXN0U3R5bGVQb3NpdGlv
bjogIC8vIGluc2lkZSB8IG91dHNpZGUgfCBpbmhlcml0Ci0gICAgICAgIGlmIChpZCA9PSBDU1NW
YWx1ZUluc2lkZSB8fCBpZCA9PSBDU1NWYWx1ZU91dHNpZGUpCi0gICAgICAgICAgICB2YWxpZFBy
aW1pdGl2ZSA9IHRydWU7Ci0gICAgICAgIGJyZWFrOwotCi0gICAgY2FzZSBDU1NQcm9wZXJ0eUxp
c3RTdHlsZVR5cGU6Ci0gICAgICAgIC8vIFNlZSBzZWN0aW9uIENTU19QUk9QX0xJU1RfU1RZTEVf
VFlQRSBvZiBmaWxlIENTU1ZhbHVlS2V5d29yZHMuaW4KLSAgICAgICAgLy8gZm9yIHRoZSBsaXN0
IG9mIHN1cHBvcnRlZCBsaXN0LXN0eWxlLXR5cGVzLgotICAgICAgICBpZiAoKGlkID49IENTU1Zh
bHVlRGlzYyAmJiBpZCA8PSBDU1NWYWx1ZUthdGFrYW5hSXJvaGEpIHx8IGlkID09IENTU1ZhbHVl
Tm9uZSkKLSAgICAgICAgICAgIHZhbGlkUHJpbWl0aXZlID0gdHJ1ZTsKLSAgICAgICAgYnJlYWs7
Ci0KLSAgICBjYXNlIENTU1Byb3BlcnR5RGlzcGxheToKLSAgICAgICAgLy8gaW5saW5lIHwgYmxv
Y2sgfCBsaXN0LWl0ZW0gfCBydW4taW4gfCBpbmxpbmUtYmxvY2sgfCB0YWJsZSB8Ci0gICAgICAg
IC8vIGlubGluZS10YWJsZSB8IHRhYmxlLXJvdy1ncm91cCB8IHRhYmxlLWhlYWRlci1ncm91cCB8
IHRhYmxlLWZvb3Rlci1ncm91cCB8IHRhYmxlLXJvdyB8Ci0gICAgICAgIC8vIHRhYmxlLWNvbHVt
bi1ncm91cCB8IHRhYmxlLWNvbHVtbiB8IHRhYmxlLWNlbGwgfCB0YWJsZS1jYXB0aW9uIHwgLXdl
YmtpdC1ib3ggfCAtd2Via2l0LWlubGluZS1ib3ggfCBub25lIHwgaW5oZXJpdAotICAgICAgICAv
LyAtd2Via2l0LWZsZXhib3ggfCAtd2Via2l0LWlubGluZS1mbGV4Ym94IHwgLXdlYmtpdC1ncmlk
IHwgLXdlYmtpdC1pbmxpbmUtZ3JpZAotICAgICAgICBpZiAoKGlkID49IENTU1ZhbHVlSW5saW5l
ICYmIGlkIDw9IENTU1ZhbHVlV2Via2l0SW5saW5lRmxleGJveCkgfHwgaWQgPT0gQ1NTVmFsdWVO
b25lKQotICAgICAgICAgICAgdmFsaWRQcmltaXRpdmUgPSB0cnVlOwotI2lmIEVOQUJMRShDU1Nf
R1JJRF9MQVlPVVQpCi0gICAgICAgIGlmIChpZCA9PSBDU1NWYWx1ZVdlYmtpdEdyaWQgfHwgaWQg
PT0gQ1NTVmFsdWVXZWJraXRJbmxpbmVHcmlkKQotICAgICAgICAgICAgdmFsaWRQcmltaXRpdmUg
PSB0cnVlOwotI2VuZGlmCi0gICAgICAgIGJyZWFrOwotCi0gICAgY2FzZSBDU1NQcm9wZXJ0eURp
cmVjdGlvbjogICAgICAgICAgICAvLyBsdHIgfCBydGwgfCBpbmhlcml0Ci0gICAgICAgIGlmIChp
ZCA9PSBDU1NWYWx1ZUx0ciB8fCBpZCA9PSBDU1NWYWx1ZVJ0bCkKLSAgICAgICAgICAgIHZhbGlk
UHJpbWl0aXZlID0gdHJ1ZTsKLSAgICAgICAgYnJlYWs7Ci0KLSAgICBjYXNlIENTU1Byb3BlcnR5
VGV4dFRyYW5zZm9ybTogICAgICAgLy8gY2FwaXRhbGl6ZSB8IHVwcGVyY2FzZSB8IGxvd2VyY2Fz
ZSB8IG5vbmUgfCBpbmhlcml0Ci0gICAgICAgIGlmICgoaWQgPj0gQ1NTVmFsdWVDYXBpdGFsaXpl
ICYmIGlkIDw9IENTU1ZhbHVlTG93ZXJjYXNlKSB8fCBpZCA9PSBDU1NWYWx1ZU5vbmUpCi0gICAg
ICAgICAgICB2YWxpZFByaW1pdGl2ZSA9IHRydWU7Ci0gICAgICAgIGJyZWFrOwotCi0gICAgY2Fz
ZSBDU1NQcm9wZXJ0eUZsb2F0OiAgICAgICAgICAgICAgICAvLyBsZWZ0IHwgcmlnaHQgfCBub25l
IHwgcG9zaXRpb25lZCB8IGNlbnRlciAoZm9yIGJ1Z2d5IENTUywgbWFwcyB0byBub25lKQotICAg
ICAgICBpZiAoaWQgPT0gQ1NTVmFsdWVMZWZ0IHx8IGlkID09IENTU1ZhbHVlUmlnaHQKLSAgICAg
ICAgICAgIHx8IGlkID09IENTU1ZhbHVlTm9uZSB8fCBpZCA9PSBDU1NWYWx1ZUNlbnRlciB8fCBp
ZCA9PSBDU1NWYWx1ZVdlYmtpdFBvc2l0aW9uZWQpCi0gICAgICAgICAgICB2YWxpZFByaW1pdGl2
ZSA9IHRydWU7Ci0gICAgICAgIGJyZWFrOwotCi0gICAgY2FzZSBDU1NQcm9wZXJ0eUNsZWFyOiAg
ICAgICAgICAgICAgICAvLyBub25lIHwgbGVmdCB8IHJpZ2h0IHwgYm90aCB8IGluaGVyaXQKLSAg
ICAgICAgaWYgKGlkID09IENTU1ZhbHVlTm9uZSB8fCBpZCA9PSBDU1NWYWx1ZUxlZnQKLSAgICAg
ICAgICAgIHx8IGlkID09IENTU1ZhbHVlUmlnaHQgfHwgaWQgPT0gQ1NTVmFsdWVCb3RoKQotICAg
ICAgICAgICAgdmFsaWRQcmltaXRpdmUgPSB0cnVlOwotICAgICAgICBicmVhazsKIAogICAgIGNh
c2UgQ1NTUHJvcGVydHlUZXh0QWxpZ246CiAgICAgICAgIC8vIGxlZnQgfCByaWdodCB8IGNlbnRl
ciB8IGp1c3RpZnkgfCB3ZWJraXRfbGVmdCB8IHdlYmtpdF9yaWdodCB8IHdlYmtpdF9jZW50ZXIg
fCB3ZWJraXRfbWF0Y2hfcGFyZW50IHwKQEAgLTExMTksMjQgKzE0OTUsNiBAQCBib29sIENTU1Bh
cnNlcjo6cGFyc2VWYWx1ZShpbnQgcHJvcElkLCBib29sIGltcG9ydGFudCkKICAgICAgICAgICAg
IHZhbGlkUHJpbWl0aXZlID0gdHJ1ZTsKICAgICAgICAgYnJlYWs7CiAKLSAgICBjYXNlIENTU1By
b3BlcnR5T3V0bGluZVN0eWxlOiAgICAgICAgLy8gKDxib3JkZXItc3R5bGU+IGV4Y2VwdCBoaWRk
ZW4pIHwgYXV0byB8IGluaGVyaXQKLSAgICAgICAgaWYgKGlkID09IENTU1ZhbHVlQXV0byB8fCBp
ZCA9PSBDU1NWYWx1ZU5vbmUgfHwgKGlkID49IENTU1ZhbHVlSW5zZXQgJiYgaWQgPD0gQ1NTVmFs
dWVEb3VibGUpKQotICAgICAgICAgICAgdmFsaWRQcmltaXRpdmUgPSB0cnVlOwotICAgICAgICBi
cmVhazsKLQotICAgIGNhc2UgQ1NTUHJvcGVydHlCb3JkZXJUb3BTdHlsZTogICAgIC8vLy8gPGJv
cmRlci1zdHlsZT4gfCBpbmhlcml0Ci0gICAgY2FzZSBDU1NQcm9wZXJ0eUJvcmRlclJpZ2h0U3R5
bGU6ICAgLy8gICBEZWZpbmVkIGFzOiAgICBub25lIHwgaGlkZGVuIHwgZG90dGVkIHwgZGFzaGVk
IHwKLSAgICBjYXNlIENTU1Byb3BlcnR5Qm9yZGVyQm90dG9tU3R5bGU6ICAvLyAgIHNvbGlkIHwg
ZG91YmxlIHwgZ3Jvb3ZlIHwgcmlkZ2UgfCBpbnNldCB8IG91dHNldAotICAgIGNhc2UgQ1NTUHJv
cGVydHlCb3JkZXJMZWZ0U3R5bGU6Ci0gICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdEJvcmRlclN0
YXJ0U3R5bGU6Ci0gICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdEJvcmRlckVuZFN0eWxlOgotICAg
IGNhc2UgQ1NTUHJvcGVydHlXZWJraXRCb3JkZXJCZWZvcmVTdHlsZToKLSAgICBjYXNlIENTU1By
b3BlcnR5V2Via2l0Qm9yZGVyQWZ0ZXJTdHlsZToKLSAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0
Q29sdW1uUnVsZVN0eWxlOgotICAgICAgICBpZiAoaWQgPj0gQ1NTVmFsdWVOb25lICYmIGlkIDw9
IENTU1ZhbHVlRG91YmxlKQotICAgICAgICAgICAgdmFsaWRQcmltaXRpdmUgPSB0cnVlOwotICAg
ICAgICBicmVhazsKLQogICAgIGNhc2UgQ1NTUHJvcGVydHlGb250V2VpZ2h0OiAgLy8gbm9ybWFs
IHwgYm9sZCB8IGJvbGRlciB8IGxpZ2h0ZXIgfCAxMDAgfCAyMDAgfCAzMDAgfCA0MDAgfCA1MDAg
fCA2MDAgfCA3MDAgfCA4MDAgfCA5MDAgfCBpbmhlcml0CiAgICAgICAgIHJldHVybiBwYXJzZUZv
bnRXZWlnaHQoaW1wb3J0YW50KTsKIApAQCAtMTM1MSwyMSArMTcwOSw2IEBAIGJvb2wgQ1NTUGFy
c2VyOjpwYXJzZVZhbHVlKGludCBwcm9wSWQsIGJvb2wgaW1wb3J0YW50KQogICAgICAgICAgICAg
dmFsaWRQcmltaXRpdmUgPSB2YWxpZFVuaXQodmFsdWUsIEZMZW5ndGgsIG1fc3RyaWN0KTsKICAg
ICAgICAgYnJlYWs7CiAKLSAgICBjYXNlIENTU1Byb3BlcnR5V29yZEJyZWFrOiAgICAgICAgICAv
LyBub3JtYWwgfCBicmVhay1hbGwgfCBicmVhay13b3JkICh0aGlzIGlzIGEgY3VzdG9tIGV4dGVu
c2lvbikKLSAgICAgICAgaWYgKGlkID09IENTU1ZhbHVlTm9ybWFsIHx8IGlkID09IENTU1ZhbHVl
QnJlYWtBbGwgfHwgaWQgPT0gQ1NTVmFsdWVCcmVha1dvcmQpCi0gICAgICAgICAgICB2YWxpZFBy
aW1pdGl2ZSA9IHRydWU7Ci0gICAgICAgIGJyZWFrOwotCi0gICAgY2FzZSBDU1NQcm9wZXJ0eVdv
cmRXcmFwOiAgICAgICAgICAgLy8gbm9ybWFsIHwgYnJlYWstd29yZAotICAgICAgICBpZiAoaWQg
PT0gQ1NTVmFsdWVOb3JtYWwgfHwgaWQgPT0gQ1NTVmFsdWVCcmVha1dvcmQpCi0gICAgICAgICAg
ICB2YWxpZFByaW1pdGl2ZSA9IHRydWU7Ci0gICAgICAgIGJyZWFrOwotICAgIGNhc2UgQ1NTUHJv
cGVydHlTcGVhazogICAgICAgICAgIC8vIG5vbmUgfCBub3JtYWwgfCBzcGVsbC1vdXQgfCBkaWdp
dHMgfCBsaXRlcmFsLXB1bmN0dWF0aW9uIHwgbm8tcHVuY3R1YXRpb24gfCBpbmhlcml0Ci0gICAg
ICAgIGlmIChpZCA9PSBDU1NWYWx1ZU5vbmUgfHwgaWQgPT0gQ1NTVmFsdWVOb3JtYWwgfHwgaWQg
PT0gQ1NTVmFsdWVTcGVsbE91dCB8fCBpZCA9PSBDU1NWYWx1ZURpZ2l0cwotICAgICAgICAgICAg
fHwgaWQgPT0gQ1NTVmFsdWVMaXRlcmFsUHVuY3R1YXRpb24gfHwgaWQgPT0gQ1NTVmFsdWVOb1B1
bmN0dWF0aW9uKQotICAgICAgICAgICAgdmFsaWRQcmltaXRpdmUgPSB0cnVlOwotICAgICAgICBi
cmVhazsKLQogICAgIGNhc2UgQ1NTUHJvcGVydHlUZXh0SW5kZW50OiAgICAgICAgICAvLyA8bGVu
Z3RoPiB8IDxwZXJjZW50YWdlPiB8IGluaGVyaXQKICAgICAgICAgdmFsaWRQcmltaXRpdmUgPSAo
IWlkICYmIHZhbGlkVW5pdCh2YWx1ZSwgRkxlbmd0aCB8IEZQZXJjZW50LCBtX3N0cmljdCkpOwog
ICAgICAgICBicmVhazsKQEAgLTE0MDgsMTEgKzE3NTEsNiBAQCBib29sIENTU1BhcnNlcjo6cGFy
c2VWYWx1ZShpbnQgcHJvcElkLCBib29sIGltcG9ydGFudCkKICAgICAgICAgICAgIHZhbGlkUHJp
bWl0aXZlID0gKHZhbGlkVW5pdCh2YWx1ZSwgRkxlbmd0aCB8IEZQZXJjZW50IHwgRk5vbk5lZywg
bV9zdHJpY3QpKTsKICAgICAgICAgYnJlYWs7CiAKLSAgICBjYXNlIENTU1Byb3BlcnR5Rm9udFN0
eWxlOiAgICAgICAgICAgLy8gbm9ybWFsIHwgaXRhbGljIHwgb2JsaXF1ZSB8IGluaGVyaXQKLSAg
ICAgICAgaWYgKGlkID09IENTU1ZhbHVlTm9ybWFsIHx8IGlkID09IENTU1ZhbHVlSXRhbGljIHx8
IGlkID09IENTU1ZhbHVlT2JsaXF1ZSkKLSAgICAgICAgICAgIHZhbGlkUHJpbWl0aXZlID0gdHJ1
ZTsKLSAgICAgICAgYnJlYWs7Ci0KICAgICBjYXNlIENTU1Byb3BlcnR5Rm9udFZhcmlhbnQ6ICAg
ICAgICAgLy8gbm9ybWFsIHwgc21hbGwtY2FwcyB8IGluaGVyaXQKICAgICAgICAgcmV0dXJuIHBh
cnNlRm9udFZhcmlhbnQoaW1wb3J0YW50KTsKIApAQCAtMTUyOCwxMSArMTg2Niw2IEBAIGJvb2wg
Q1NTUGFyc2VyOjpwYXJzZVZhbHVlKGludCBwcm9wSWQsIGJvb2wgaW1wb3J0YW50KQogICAgICAg
ICAgICAgdmFsaWRQcmltaXRpdmUgPSAoIWlkICYmIHZhbGlkVW5pdCh2YWx1ZSwgRk51bWJlciB8
IEZQZXJjZW50IHwgRk5vbk5lZywgdHJ1ZSkpOwogICAgICAgICBicmVhazsKIAotICAgIGNhc2Ug
Q1NTUHJvcGVydHlUYWJsZUxheW91dDogICAgICAgICAvLyBhdXRvIHwgZml4ZWQgfCBpbmhlcml0
Ci0gICAgICAgIGlmIChpZCA9PSBDU1NWYWx1ZUF1dG8gfHwgaWQgPT0gQ1NTVmFsdWVGaXhlZCkK
LSAgICAgICAgICAgIHZhbGlkUHJpbWl0aXZlID0gdHJ1ZTsKLSAgICAgICAgYnJlYWs7Ci0KICAg
ICBjYXNlIENTU1Byb3BlcnR5U3JjOiAgLy8gT25seSB1c2VkIHdpdGhpbiBAZm9udC1mYWNlLCBz
byBjYW5ub3QgdXNlIGluaGVyaXQgfCBpbml0aWFsIG9yIGJlICFpbXBvcnRhbnQuICBUaGlzIGlz
IGEgbGlzdCBvZiB1cmxzIG9yIGxvY2FsIHJlZmVyZW5jZXMuCiAgICAgICAgIHJldHVybiBwYXJz
ZUZvbnRGYWNlU3JjKCk7CiAKQEAgLTE1NDAsMTAgKzE4NzMsNiBAQCBib29sIENTU1BhcnNlcjo6
cGFyc2VWYWx1ZShpbnQgcHJvcElkLCBib29sIGltcG9ydGFudCkKICAgICAgICAgcmV0dXJuIHBh
cnNlRm9udEZhY2VVbmljb2RlUmFuZ2UoKTsKIAogICAgIC8qIENTUzMgcHJvcGVydGllcyAqLwot
ICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRBcHBlYXJhbmNlOgotICAgICAgICBpZiAoKGlkID49
IENTU1ZhbHVlQ2hlY2tib3ggJiYgaWQgPD0gQ1NTVmFsdWVUZXh0YXJlYSkgfHwgaWQgPT0gQ1NT
VmFsdWVOb25lKQotICAgICAgICAgICAgdmFsaWRQcmltaXRpdmUgPSB0cnVlOwotICAgICAgICBi
cmVhazsKIAogICAgIGNhc2UgQ1NTUHJvcGVydHlCb3JkZXJJbWFnZTogewogICAgICAgICBSZWZQ
dHI8Q1NTVmFsdWU+IHJlc3VsdDsKQEAgLTE2NTEsMjkgKzE5ODAsNiBAQCBib29sIENTU1BhcnNl
cjo6cGFyc2VWYWx1ZShpbnQgcHJvcElkLCBib29sIGltcG9ydGFudCkKICAgICBjYXNlIENTU1By
b3BlcnR5T3BhY2l0eToKICAgICAgICAgdmFsaWRQcmltaXRpdmUgPSB2YWxpZFVuaXQodmFsdWUs
IEZOdW1iZXIsIG1fc3RyaWN0KTsKICAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBDU1NQcm9wZXJ0
eVdlYmtpdEJveEFsaWduOgotICAgICAgICBpZiAoaWQgPT0gQ1NTVmFsdWVTdHJldGNoIHx8IGlk
ID09IENTU1ZhbHVlU3RhcnQgfHwgaWQgPT0gQ1NTVmFsdWVFbmQgfHwKLSAgICAgICAgICAgIGlk
ID09IENTU1ZhbHVlQ2VudGVyIHx8IGlkID09IENTU1ZhbHVlQmFzZWxpbmUpCi0gICAgICAgICAg
ICB2YWxpZFByaW1pdGl2ZSA9IHRydWU7Ci0gICAgICAgIGJyZWFrOwotICAgIGNhc2UgQ1NTUHJv
cGVydHlXZWJraXRCb3hEaXJlY3Rpb246Ci0gICAgICAgIGlmIChpZCA9PSBDU1NWYWx1ZU5vcm1h
bCB8fCBpZCA9PSBDU1NWYWx1ZVJldmVyc2UpCi0gICAgICAgICAgICB2YWxpZFByaW1pdGl2ZSA9
IHRydWU7Ci0gICAgICAgIGJyZWFrOwotICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRCb3hMaW5l
czoKLSAgICAgICAgaWYgKGlkID09IENTU1ZhbHVlU2luZ2xlIHx8IGlkID09IENTU1ZhbHVlTXVs
dGlwbGUpCi0gICAgICAgICAgICB2YWxpZFByaW1pdGl2ZSA9IHRydWU7Ci0gICAgICAgIGJyZWFr
OwotICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRCb3hPcmllbnQ6Ci0gICAgICAgIGlmIChpZCA9
PSBDU1NWYWx1ZUhvcml6b250YWwgfHwgaWQgPT0gQ1NTVmFsdWVWZXJ0aWNhbCB8fAotICAgICAg
ICAgICAgaWQgPT0gQ1NTVmFsdWVJbmxpbmVBeGlzIHx8IGlkID09IENTU1ZhbHVlQmxvY2tBeGlz
KQotICAgICAgICAgICAgdmFsaWRQcmltaXRpdmUgPSB0cnVlOwotICAgICAgICBicmVhazsKLSAg
ICBjYXNlIENTU1Byb3BlcnR5V2Via2l0Qm94UGFjazoKLSAgICAgICAgaWYgKGlkID09IENTU1Zh
bHVlU3RhcnQgfHwgaWQgPT0gQ1NTVmFsdWVFbmQgfHwKLSAgICAgICAgICAgIGlkID09IENTU1Zh
bHVlQ2VudGVyIHx8IGlkID09IENTU1ZhbHVlSnVzdGlmeSkKLSAgICAgICAgICAgIHZhbGlkUHJp
bWl0aXZlID0gdHJ1ZTsKLSAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtp
dEJveEZsZXg6CiAgICAgICAgIHZhbGlkUHJpbWl0aXZlID0gdmFsaWRVbml0KHZhbHVlLCBGTnVt
YmVyLCBtX3N0cmljdCk7CiAgICAgICAgIGJyZWFrOwpAQCAtMTY4MSwxMiArMTk4Nyw2IEBAIGJv
b2wgQ1NTUGFyc2VyOjpwYXJzZVZhbHVlKGludCBwcm9wSWQsIGJvb2wgaW1wb3J0YW50KQogICAg
IGNhc2UgQ1NTUHJvcGVydHlXZWJraXRCb3hPcmRpbmFsR3JvdXA6CiAgICAgICAgIHZhbGlkUHJp
bWl0aXZlID0gdmFsaWRVbml0KHZhbHVlLCBGSW50ZWdlciB8IEZOb25OZWcsIHRydWUpOwogICAg
ICAgICBicmVhazsKLSAgICBjYXNlIENTU1Byb3BlcnR5Qm94U2l6aW5nOgotICAgICAgICB2YWxp
ZFByaW1pdGl2ZSA9IGlkID09IENTU1ZhbHVlQm9yZGVyQm94IHx8IGlkID09IENTU1ZhbHVlQ29u
dGVudEJveDsKLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdENvbG9y
Q29ycmVjdGlvbjoKLSAgICAgICAgdmFsaWRQcmltaXRpdmUgPSBpZCA9PSBDU1NWYWx1ZVNyZ2Ig
fHwgaWQgPT0gQ1NTVmFsdWVEZWZhdWx0OwotICAgICAgICBicmVhazsKICNpZiBFTkFCTEUoQ1NT
X0ZJTFRFUlMpCiAgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdEZpbHRlcjoKICAgICAgICAgaWYg
KGlkID09IENTU1ZhbHVlTm9uZSkKQEAgLTE3MDksNDMgKzIwMDksMTggQEAgYm9vbCBDU1NQYXJz
ZXI6OnBhcnNlVmFsdWUoaW50IHByb3BJZCwgYm9vbCBpbXBvcnRhbnQpCiAgICAgICAgICAgICBt
X3ZhbHVlTGlzdC0+bmV4dCgpOwogICAgICAgICB9CiAgICAgICAgIGJyZWFrOwotICAgIGNhc2Ug
Q1NTUHJvcGVydHlXZWJraXRGbGV4UGFjazoKLSAgICAgICAgdmFsaWRQcmltaXRpdmUgPSBpZCA9
PSBDU1NWYWx1ZVN0YXJ0IHx8IGlkID09IENTU1ZhbHVlRW5kIHx8IGlkID09IENTU1ZhbHVlQ2Vu
dGVyIHx8IGlkID09IENTU1ZhbHVlSnVzdGlmeSB8fCBpZCA9PSBDU1NWYWx1ZURpc3RyaWJ1dGU7
Ci0gICAgICAgIGJyZWFrOwotICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRGbGV4QWxpZ246Ci0g
ICAgICAgIHZhbGlkUHJpbWl0aXZlID0gaWQgPT0gQ1NTVmFsdWVTdGFydCB8fCBpZCA9PSBDU1NW
YWx1ZUVuZCB8fCBpZCA9PSBDU1NWYWx1ZUNlbnRlciB8fCBpZCA9PSBDU1NWYWx1ZUJhc2VsaW5l
IHx8IGlkID09IENTU1ZhbHVlU3RyZXRjaDsKLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBDU1NQ
cm9wZXJ0eVdlYmtpdEZsZXhJdGVtQWxpZ246Ci0gICAgICAgIHZhbGlkUHJpbWl0aXZlID0gaWQg
PT0gQ1NTVmFsdWVBdXRvIHx8IGlkID09IENTU1ZhbHVlU3RhcnQgfHwgaWQgPT0gQ1NTVmFsdWVF
bmQgfHwgaWQgPT0gQ1NTVmFsdWVDZW50ZXIgfHwgaWQgPT0gQ1NTVmFsdWVCYXNlbGluZSB8fCBp
ZCA9PSBDU1NWYWx1ZVN0cmV0Y2g7Ci0gICAgICAgIGJyZWFrOwotICAgIGNhc2UgQ1NTUHJvcGVy
dHlXZWJraXRGbGV4RGlyZWN0aW9uOgotICAgICAgICB2YWxpZFByaW1pdGl2ZSA9IGlkID09IENT
U1ZhbHVlUm93IHx8IGlkID09IENTU1ZhbHVlUm93UmV2ZXJzZSB8fCBpZCA9PSBDU1NWYWx1ZUNv
bHVtbiB8fCBpZCA9PSBDU1NWYWx1ZUNvbHVtblJldmVyc2U7Ci0gICAgICAgIGJyZWFrOwotICAg
IGNhc2UgQ1NTUHJvcGVydHlXZWJraXRGbGV4V3JhcDoKLSAgICAgICAgdmFsaWRQcmltaXRpdmUg
PSBpZCA9PSBDU1NWYWx1ZU5vbmUgfHwgaWQgPT0gQ1NTVmFsdWVXcmFwIHx8IGlkID09IENTU1Zh
bHVlV3JhcFJldmVyc2U7Ci0gICAgICAgIGJyZWFrOwogICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJr
aXRNYXJxdWVlOiB7CiAgICAgICAgIGNvbnN0IGludCBwcm9wZXJ0aWVzWzVdID0geyBDU1NQcm9w
ZXJ0eVdlYmtpdE1hcnF1ZWVEaXJlY3Rpb24sIENTU1Byb3BlcnR5V2Via2l0TWFycXVlZUluY3Jl
bWVudCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENTU1Byb3BlcnR5V2Vi
a2l0TWFycXVlZVJlcGV0aXRpb24sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBDU1NQcm9wZXJ0eVdlYmtpdE1hcnF1ZWVTdHlsZSwgQ1NTUHJvcGVydHlXZWJraXRNYXJxdWVl
U3BlZWQgfTsKICAgICAgICAgcmV0dXJuIHBhcnNlU2hvcnRoYW5kKHByb3BJZCwgcHJvcGVydGll
cywgNSwgaW1wb3J0YW50KTsKICAgICB9Ci0gICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdE1hcnF1
ZWVEaXJlY3Rpb246Ci0gICAgICAgIGlmIChpZCA9PSBDU1NWYWx1ZUZvcndhcmRzIHx8IGlkID09
IENTU1ZhbHVlQmFja3dhcmRzIHx8IGlkID09IENTU1ZhbHVlQWhlYWQgfHwKLSAgICAgICAgICAg
IGlkID09IENTU1ZhbHVlUmV2ZXJzZSB8fCBpZCA9PSBDU1NWYWx1ZUxlZnQgfHwgaWQgPT0gQ1NT
VmFsdWVSaWdodCB8fCBpZCA9PSBDU1NWYWx1ZURvd24gfHwKLSAgICAgICAgICAgIGlkID09IENT
U1ZhbHVlVXAgfHwgaWQgPT0gQ1NTVmFsdWVBdXRvKQotICAgICAgICAgICAgdmFsaWRQcmltaXRp
dmUgPSB0cnVlOwotICAgICAgICBicmVhazsKICAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0TWFy
cXVlZUluY3JlbWVudDoKICAgICAgICAgaWYgKGlkID09IENTU1ZhbHVlU21hbGwgfHwgaWQgPT0g
Q1NTVmFsdWVMYXJnZSB8fCBpZCA9PSBDU1NWYWx1ZU1lZGl1bSkKICAgICAgICAgICAgIHZhbGlk
UHJpbWl0aXZlID0gdHJ1ZTsKICAgICAgICAgZWxzZQogICAgICAgICAgICAgdmFsaWRQcmltaXRp
dmUgPSB2YWxpZFVuaXQodmFsdWUsIEZMZW5ndGggfCBGUGVyY2VudCwgbV9zdHJpY3QpOwogICAg
ICAgICBicmVhazsKLSAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0TWFycXVlZVN0eWxlOgotICAg
ICAgICBpZiAoaWQgPT0gQ1NTVmFsdWVOb25lIHx8IGlkID09IENTU1ZhbHVlU2xpZGUgfHwgaWQg
PT0gQ1NTVmFsdWVTY3JvbGwgfHwgaWQgPT0gQ1NTVmFsdWVBbHRlcm5hdGUpCi0gICAgICAgICAg
ICB2YWxpZFByaW1pdGl2ZSA9IHRydWU7Ci0gICAgICAgIGJyZWFrOwogICAgIGNhc2UgQ1NTUHJv
cGVydHlXZWJraXRNYXJxdWVlUmVwZXRpdGlvbjoKICAgICAgICAgaWYgKGlkID09IENTU1ZhbHVl
SW5maW5pdGUpCiAgICAgICAgICAgICB2YWxpZFByaW1pdGl2ZSA9IHRydWU7CkBAIC0xNzcwLDIz
ICsyMDQ1LDYgQEAgYm9vbCBDU1NQYXJzZXI6OnBhcnNlVmFsdWUoaW50IHByb3BJZCwgYm9vbCBp
bXBvcnRhbnQpCiAgICAgICAgIGlmIChjc3NSZWdpb25zRW5hYmxlZCgpICYmIChpZCA9PSBDU1NW
YWx1ZUF1dG8gfHwgaWQgPT0gQ1NTVmFsdWVCcmVhaykpCiAgICAgICAgICAgICB2YWxpZFByaW1p
dGl2ZSA9IHRydWU7CiAgICAgICAgIGJyZWFrOwotCi0gICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtp
dFVzZXJEcmFnOiAvLyBhdXRvIHwgbm9uZSB8IGVsZW1lbnQKLSAgICAgICAgaWYgKGlkID09IENT
U1ZhbHVlQXV0byB8fCBpZCA9PSBDU1NWYWx1ZU5vbmUgfHwgaWQgPT0gQ1NTVmFsdWVFbGVtZW50
KQotICAgICAgICAgICAgdmFsaWRQcmltaXRpdmUgPSB0cnVlOwotICAgICAgICBicmVhazsKLSAg
ICBjYXNlIENTU1Byb3BlcnR5V2Via2l0VXNlck1vZGlmeTogLy8gcmVhZC1vbmx5IHwgcmVhZC13
cml0ZQotICAgICAgICBpZiAoaWQgPT0gQ1NTVmFsdWVSZWFkT25seSB8fCBpZCA9PSBDU1NWYWx1
ZVJlYWRXcml0ZSB8fCBpZCA9PSBDU1NWYWx1ZVJlYWRXcml0ZVBsYWludGV4dE9ubHkpCi0gICAg
ICAgICAgICB2YWxpZFByaW1pdGl2ZSA9IHRydWU7Ci0gICAgICAgIGJyZWFrOwotICAgIGNhc2Ug
Q1NTUHJvcGVydHlXZWJraXRVc2VyU2VsZWN0OiAvLyBhdXRvIHwgbm9uZSB8IHRleHQKLSAgICAg
ICAgaWYgKGlkID09IENTU1ZhbHVlQXV0byB8fCBpZCA9PSBDU1NWYWx1ZU5vbmUgfHwgaWQgPT0g
Q1NTVmFsdWVUZXh0KQotICAgICAgICAgICAgdmFsaWRQcmltaXRpdmUgPSB0cnVlOwotICAgICAg
ICBicmVhazsKLSAgICBjYXNlIENTU1Byb3BlcnR5VGV4dE92ZXJmbG93OiAvLyBjbGlwIHwgZWxs
aXBzaXMKLSAgICAgICAgaWYgKGlkID09IENTU1ZhbHVlQ2xpcCB8fCBpZCA9PSBDU1NWYWx1ZUVs
bGlwc2lzKQotICAgICAgICAgICAgdmFsaWRQcmltaXRpdmUgPSB0cnVlOwotICAgICAgICBicmVh
azsKICAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0VHJhbnNmb3JtOgogICAgICAgICBpZiAoaWQg
PT0gQ1NTVmFsdWVOb25lKQogICAgICAgICAgICAgdmFsaWRQcmltaXRpdmUgPSB0cnVlOwpAQCAt
MTgxNywxOCArMjA3NSw2IEBAIGJvb2wgQ1NTUGFyc2VyOjpwYXJzZVZhbHVlKGludCBwcm9wSWQs
IGJvb2wgaW1wb3J0YW50KQogICAgICAgICB9CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9
Ci0gICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdFRyYW5zZm9ybVN0eWxlOgotICAgICAgICBpZiAo
dmFsdWUtPmlkID09IENTU1ZhbHVlRmxhdCB8fCB2YWx1ZS0+aWQgPT0gQ1NTVmFsdWVQcmVzZXJ2
ZTNkKQotICAgICAgICAgICAgdmFsaWRQcmltaXRpdmUgPSB0cnVlOwotICAgICAgICBicmVhazsK
LSAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0QmFja2ZhY2VWaXNpYmlsaXR5OgotICAgICAgICBp
ZiAodmFsdWUtPmlkID09IENTU1ZhbHVlVmlzaWJsZSB8fCB2YWx1ZS0+aWQgPT0gQ1NTVmFsdWVI
aWRkZW4pCi0gICAgICAgICAgICB2YWxpZFByaW1pdGl2ZSA9IHRydWU7Ci0gICAgICAgIGJyZWFr
OwotICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRQcmludENvbG9yQWRqdXN0OgotICAgICAgICBp
ZiAodmFsdWUtPmlkID09IENTU1ZhbHVlRXhhY3QgfHwgdmFsdWUtPmlkID09IENTU1ZhbHVlRWNv
bm9teSkKLSAgICAgICAgICAgIHZhbGlkUHJpbWl0aXZlID0gdHJ1ZTsKLSAgICAgICAgYnJlYWs7
CiAgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdFBlcnNwZWN0aXZlOgogICAgICAgICBpZiAoaWQg
PT0gQ1NTVmFsdWVOb25lKQogICAgICAgICAgICAgdmFsaWRQcmltaXRpdmUgPSB0cnVlOwpAQCAt
MTkwNiwzMiArMjE1Miw2IEBAIGJvb2wgQ1NTUGFyc2VyOjpwYXJzZVZhbHVlKGludCBwcm9wSWQs
IGJvb2wgaW1wb3J0YW50KQogICAgICAgICB9CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9
Ci0gICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdE1hcmdpbkJlZm9yZUNvbGxhcHNlOgotICAgIGNh
c2UgQ1NTUHJvcGVydHlXZWJraXRNYXJnaW5BZnRlckNvbGxhcHNlOgotICAgIGNhc2UgQ1NTUHJv
cGVydHlXZWJraXRNYXJnaW5Ub3BDb2xsYXBzZToKLSAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0
TWFyZ2luQm90dG9tQ29sbGFwc2U6Ci0gICAgICAgIGlmIChpZCA9PSBDU1NWYWx1ZUNvbGxhcHNl
IHx8IGlkID09IENTU1ZhbHVlU2VwYXJhdGUgfHwgaWQgPT0gQ1NTVmFsdWVEaXNjYXJkKQotICAg
ICAgICAgICAgdmFsaWRQcmltaXRpdmUgPSB0cnVlOwotICAgICAgICBicmVhazsKLSAgICBjYXNl
IENTU1Byb3BlcnR5VGV4dExpbmVUaHJvdWdoTW9kZToKLSAgICBjYXNlIENTU1Byb3BlcnR5VGV4
dE92ZXJsaW5lTW9kZToKLSAgICBjYXNlIENTU1Byb3BlcnR5VGV4dFVuZGVybGluZU1vZGU6Ci0g
ICAgICAgIGlmIChpZCA9PSBDU1NWYWx1ZUNvbnRpbnVvdXMgfHwgaWQgPT0gQ1NTVmFsdWVTa2lw
V2hpdGVTcGFjZSkKLSAgICAgICAgICAgIHZhbGlkUHJpbWl0aXZlID0gdHJ1ZTsKLSAgICAgICAg
YnJlYWs7Ci0gICAgY2FzZSBDU1NQcm9wZXJ0eVRleHRMaW5lVGhyb3VnaFN0eWxlOgotICAgIGNh
c2UgQ1NTUHJvcGVydHlUZXh0T3ZlcmxpbmVTdHlsZToKLSAgICBjYXNlIENTU1Byb3BlcnR5VGV4
dFVuZGVybGluZVN0eWxlOgotICAgICAgICBpZiAoaWQgPT0gQ1NTVmFsdWVOb25lIHx8IGlkID09
IENTU1ZhbHVlU29saWQgfHwgaWQgPT0gQ1NTVmFsdWVEb3VibGUgfHwKLSAgICAgICAgICAgIGlk
ID09IENTU1ZhbHVlRGFzaGVkIHx8IGlkID09IENTU1ZhbHVlRG90RGFzaCB8fCBpZCA9PSBDU1NW
YWx1ZURvdERvdERhc2ggfHwKLSAgICAgICAgICAgIGlkID09IENTU1ZhbHVlV2F2ZSkKLSAgICAg
ICAgICAgIHZhbGlkUHJpbWl0aXZlID0gdHJ1ZTsKLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBD
U1NQcm9wZXJ0eVRleHRSZW5kZXJpbmc6IC8vIGF1dG8gfCBvcHRpbWl6ZVNwZWVkIHwgb3B0aW1p
emVMZWdpYmlsaXR5IHwgZ2VvbWV0cmljUHJlY2lzaW9uCi0gICAgICAgIGlmIChpZCA9PSBDU1NW
YWx1ZUF1dG8gfHwgaWQgPT0gQ1NTVmFsdWVPcHRpbWl6ZXNwZWVkIHx8IGlkID09IENTU1ZhbHVl
T3B0aW1pemVsZWdpYmlsaXR5Ci0gICAgICAgICAgICB8fCBpZCA9PSBDU1NWYWx1ZUdlb21ldHJp
Y3ByZWNpc2lvbikKLSAgICAgICAgICAgIHZhbGlkUHJpbWl0aXZlID0gdHJ1ZTsKLSAgICAgICAg
YnJlYWs7CiAgICAgY2FzZSBDU1NQcm9wZXJ0eVRleHRMaW5lVGhyb3VnaFdpZHRoOgogICAgIGNh
c2UgQ1NTUHJvcGVydHlUZXh0T3ZlcmxpbmVXaWR0aDoKICAgICBjYXNlIENTU1Byb3BlcnR5VGV4
dFVuZGVybGluZVdpZHRoOgpAQCAtMTk0MSwxMCArMjE2MSw2IEBAIGJvb2wgQ1NTUGFyc2VyOjpw
YXJzZVZhbHVlKGludCBwcm9wSWQsIGJvb2wgaW1wb3J0YW50KQogICAgICAgICBlbHNlCiAgICAg
ICAgICAgICB2YWxpZFByaW1pdGl2ZSA9ICFpZCAmJiB2YWxpZFVuaXQodmFsdWUsIEZOdW1iZXIg
fCBGTGVuZ3RoIHwgRlBlcmNlbnQsIG1fc3RyaWN0KTsKICAgICAgICAgYnJlYWs7Ci0gICAgY2Fz
ZSBDU1NQcm9wZXJ0eVJlc2l6ZTogLy8gbm9uZSB8IGJvdGggfCBob3Jpem9udGFsIHwgdmVydGlj
YWwgfCBhdXRvCi0gICAgICAgIGlmIChpZCA9PSBDU1NWYWx1ZU5vbmUgfHwgaWQgPT0gQ1NTVmFs
dWVCb3RoIHx8IGlkID09IENTU1ZhbHVlSG9yaXpvbnRhbCB8fCBpZCA9PSBDU1NWYWx1ZVZlcnRp
Y2FsIHx8IGlkID09IENTU1ZhbHVlQXV0bykKLSAgICAgICAgICAgIHZhbGlkUHJpbWl0aXZlID0g
dHJ1ZTsKLSAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdENvbHVtbkNv
dW50OgogICAgICAgICBpZiAoaWQgPT0gQ1NTVmFsdWVBdXRvKQogICAgICAgICAgICAgdmFsaWRQ
cmltaXRpdmUgPSB0cnVlOwpAQCAtMTk3MywxNyArMjE4OSw2IEBAIGJvb2wgQ1NTUGFyc2VyOjpw
YXJzZVZhbHVlKGludCBwcm9wSWQsIGJvb2wgaW1wb3J0YW50KQogICAgICAgICBlbHNlIC8vIEFs
d2F5cyBwYXJzZSB0aGlzIHByb3BlcnR5IGluIHN0cmljdCBtb2RlLCBzaW5jZSBpdCB3b3VsZCBi
ZSBhbWJpZ3VvdXMgb3RoZXJ3aXNlIHdoZW4gdXNlZCBpbiB0aGUgJ2NvbHVtbnMnIHNob3J0aGFu
ZCBwcm9wZXJ0eS4KICAgICAgICAgICAgIHZhbGlkUHJpbWl0aXZlID0gdmFsaWRVbml0KHZhbHVl
LCBGTGVuZ3RoLCB0cnVlKTsKICAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBDU1NQcm9wZXJ0eVBv
aW50ZXJFdmVudHM6Ci0gICAgICAgIC8vIG5vbmUgfCB2aXNpYmxlUGFpbnRlZCB8IHZpc2libGVG
aWxsIHwgdmlzaWJsZVN0cm9rZSB8IHZpc2libGUgfAotICAgICAgICAvLyBwYWludGVkIHwgZmls
bCB8IHN0cm9rZSB8IGF1dG8gfCBhbGwgfCBpbmhlcml0Ci0gICAgICAgIGlmIChpZCA9PSBDU1NW
YWx1ZVZpc2libGUgfHwgaWQgPT0gQ1NTVmFsdWVOb25lIHx8IGlkID09IENTU1ZhbHVlQWxsIHx8
IGlkID09IENTU1ZhbHVlQXV0byB8fAotICAgICAgICAgICAgKGlkID49IENTU1ZhbHVlVmlzaWJs
ZXBhaW50ZWQgJiYgaWQgPD0gQ1NTVmFsdWVTdHJva2UpKQotICAgICAgICAgICAgdmFsaWRQcmlt
aXRpdmUgPSB0cnVlOwotICAgICAgICBicmVhazsKLSAgICBjYXNlIENTU1Byb3BlcnR5SW1hZ2VS
ZW5kZXJpbmc6IC8vIGF1dG8gfCBvcHRpbWl6ZUNvbnRyYXN0Ci0gICAgICAgIGlmIChpZCA9PSBD
U1NWYWx1ZUF1dG8gfHwgaWQgPT0gQ1NTVmFsdWVXZWJraXRPcHRpbWl6ZUNvbnRyYXN0KQotICAg
ICAgICAgICAgdmFsaWRQcmltaXRpdmUgPSB0cnVlOwotICAgICAgICBicmVhazsKICAgICAvLyBF
bmQgb2YgQ1NTMyBwcm9wZXJ0aWVzCiAKICAgICAvLyBBcHBsZSBzcGVjaWZpYyBwcm9wZXJ0aWVz
LiAgVGhlc2Ugd2lsbCBuZXZlciBiZSBzdGFuZGFyZGl6ZWQgYW5kIGFyZSBwdXJlbHkgdG8KQEAg
LTE5OTMsNDQgKzIxOTgsMTYgQEAgYm9vbCBDU1NQYXJzZXI6OnBhcnNlVmFsdWUoaW50IHByb3BJ
ZCwgYm9vbCBpbXBvcnRhbnQpCiAgICAgICAgIC8vIFdoZW4gc3BlY2lmeWluZyBlaXRoZXIgdHlw
ZSBvZiB1bml0LCByZXF1aXJlIG5vbi1uZWdhdGl2ZSBpbnRlZ2VycwogICAgICAgICB2YWxpZFBy
aW1pdGl2ZSA9ICghaWQgJiYgKHZhbHVlLT51bml0ID09IENTU1ByaW1pdGl2ZVZhbHVlOjpDU1Nf
UEVSQ0VOVEFHRSB8fCB2YWx1ZS0+ZlZhbHVlKSAmJiB2YWxpZFVuaXQodmFsdWUsIEZJbnRlZ2Vy
IHwgRlBlcmNlbnQgfCBGTm9uTmVnLCBmYWxzZSkpOwogICAgICAgICBicmVhazsKLSAgICBjYXNl
IENTU1Byb3BlcnR5V2Via2l0VGV4dFNpemVBZGp1c3Q6Ci0gICAgICAgIGlmIChpZCA9PSBDU1NW
YWx1ZUF1dG8gfHwgaWQgPT0gQ1NTVmFsdWVOb25lKQotICAgICAgICAgICAgdmFsaWRQcmltaXRp
dmUgPSB0cnVlOwotICAgICAgICBicmVhazsKLSAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0UnRs
T3JkZXJpbmc6Ci0gICAgICAgIGlmIChpZCA9PSBDU1NWYWx1ZUxvZ2ljYWwgfHwgaWQgPT0gQ1NT
VmFsdWVWaXN1YWwpCi0gICAgICAgICAgICB2YWxpZFByaW1pdGl2ZSA9IHRydWU7Ci0gICAgICAg
IGJyZWFrOwogCiAgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdEZvbnRTaXplRGVsdGE6ICAgICAg
ICAgICAvLyA8bGVuZ3RoPgogICAgICAgICB2YWxpZFByaW1pdGl2ZSA9IHZhbGlkVW5pdCh2YWx1
ZSwgRkxlbmd0aCwgbV9zdHJpY3QpOwogICAgICAgICBicmVhazsKIAotICAgIGNhc2UgQ1NTUHJv
cGVydHlXZWJraXROYnNwTW9kZTogICAgIC8vIG5vcm1hbCB8IHNwYWNlCi0gICAgICAgIGlmIChp
ZCA9PSBDU1NWYWx1ZU5vcm1hbCB8fCBpZCA9PSBDU1NWYWx1ZVNwYWNlKQotICAgICAgICAgICAg
dmFsaWRQcmltaXRpdmUgPSB0cnVlOwotICAgICAgICBicmVhazsKLQotICAgIGNhc2UgQ1NTUHJv
cGVydHlXZWJraXRMaW5lQnJlYWs6ICAgLy8gbm9ybWFsIHwgYWZ0ZXItd2hpdGUtc3BhY2UKLSAg
ICAgICAgaWYgKGlkID09IENTU1ZhbHVlTm9ybWFsIHx8IGlkID09IENTU1ZhbHVlQWZ0ZXJXaGl0
ZVNwYWNlKQotICAgICAgICAgICAgdmFsaWRQcmltaXRpdmUgPSB0cnVlOwotICAgICAgICBicmVh
azsKLQotICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRNYXRjaE5lYXJlc3RNYWlsQmxvY2txdW90
ZUNvbG9yOiAgIC8vIG5vcm1hbCB8IG1hdGNoCi0gICAgICAgIGlmIChpZCA9PSBDU1NWYWx1ZU5v
cm1hbCB8fCBpZCA9PSBDU1NWYWx1ZU1hdGNoKQotICAgICAgICAgICAgdmFsaWRQcmltaXRpdmUg
PSB0cnVlOwotICAgICAgICBicmVhazsKLQogICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRIaWdo
bGlnaHQ6CiAgICAgICAgIGlmIChpZCA9PSBDU1NWYWx1ZU5vbmUgfHwgdmFsdWUtPnVuaXQgPT0g
Q1NTUHJpbWl0aXZlVmFsdWU6OkNTU19TVFJJTkcpCiAgICAgICAgICAgICB2YWxpZFByaW1pdGl2
ZSA9IHRydWU7CiAgICAgICAgIGJyZWFrOwogCi0gICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdEh5
cGhlbnM6Ci0gICAgICAgIGlmIChpZCA9PSBDU1NWYWx1ZU5vbmUgfHwgaWQgPT0gQ1NTVmFsdWVN
YW51YWwgfHwgaWQgPT0gQ1NTVmFsdWVBdXRvKQotICAgICAgICAgICAgdmFsaWRQcmltaXRpdmUg
PSB0cnVlOwotICAgICAgICBicmVhazsKLQogICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRIeXBo
ZW5hdGVDaGFyYWN0ZXI6CiAgICAgICAgIGlmIChpZCA9PSBDU1NWYWx1ZUF1dG8gfHwgdmFsdWUt
PnVuaXQgPT0gQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19TVFJJTkcpCiAgICAgICAgICAgICB2YWxp
ZFByaW1pdGl2ZSA9IHRydWU7CkBAIC0yMDU4LDM2ICsyMjM1LDExIEBAIGJvb2wgQ1NTUGFyc2Vy
OjpwYXJzZVZhbHVlKGludCBwcm9wSWQsIGJvb2wgaW1wb3J0YW50KQogICAgICAgICAgICAgfQog
ICAgICAgICB9CiAgICAgICAgIGJyZWFrOwotICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRMaW5l
U25hcDoKLSAgICAgICAgaWYgKGlkID09IENTU1ZhbHVlTm9uZSB8fCBpZCA9PSBDU1NWYWx1ZUJh
c2VsaW5lIHx8IGlkID09IENTU1ZhbHVlQ29udGFpbikKLSAgICAgICAgICAgIHZhbGlkUHJpbWl0
aXZlID0gdHJ1ZTsKLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdExp
bmVBbGlnbjoKLSAgICAgICAgaWYgKGlkID09IENTU1ZhbHVlTm9uZSB8fCBpZCA9PSBDU1NWYWx1
ZUVkZ2VzKQotICAgICAgICAgICAgdmFsaWRQcmltaXRpdmUgPSB0cnVlOwotICAgICAgICBicmVh
azsKICAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0TG9jYWxlOgogICAgICAgICBpZiAoaWQgPT0g
Q1NTVmFsdWVBdXRvIHx8IHZhbHVlLT51bml0ID09IENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfU1RS
SU5HKQogICAgICAgICAgICAgdmFsaWRQcmltaXRpdmUgPSB0cnVlOwogICAgICAgICBicmVhazsK
IAotICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRCb3JkZXJGaXQ6Ci0gICAgICAgIGlmIChpZCA9
PSBDU1NWYWx1ZUJvcmRlciB8fCBpZCA9PSBDU1NWYWx1ZUxpbmVzKQotICAgICAgICAgICAgdmFs
aWRQcmltaXRpdmUgPSB0cnVlOwotICAgICAgICBicmVhazsKLQotICAgIGNhc2UgQ1NTUHJvcGVy
dHlXZWJraXRUZXh0U2VjdXJpdHk6Ci0gICAgICAgIC8vIGRpc2MgfCBjaXJjbGUgfCBzcXVhcmUg
fCBub25lIHwgaW5oZXJpdAotICAgICAgICBpZiAoaWQgPT0gQ1NTVmFsdWVEaXNjIHx8IGlkID09
IENTU1ZhbHVlQ2lyY2xlIHx8IGlkID09IENTU1ZhbHVlU3F1YXJlfHwgaWQgPT0gQ1NTVmFsdWVO
b25lKQotICAgICAgICAgICAgdmFsaWRQcmltaXRpdmUgPSB0cnVlOwotICAgICAgICBicmVhazsK
LQotICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRGb250U21vb3RoaW5nOgotICAgICAgICBpZiAo
aWQgPT0gQ1NTVmFsdWVBdXRvIHx8IGlkID09IENTU1ZhbHVlTm9uZQotICAgICAgICAgICAgfHwg
aWQgPT0gQ1NTVmFsdWVBbnRpYWxpYXNlZCB8fCBpZCA9PSBDU1NWYWx1ZVN1YnBpeGVsQW50aWFs
aWFzZWQpCi0gICAgICAgICAgICB2YWxpZFByaW1pdGl2ZSA9IHRydWU7Ci0gICAgICAgIGJyZWFr
OwotCiAjaWYgRU5BQkxFKERBU0hCT0FSRF9TVVBQT1JUKQogICAgIGNhc2UgQ1NTUHJvcGVydHlX
ZWJraXREYXNoYm9hcmRSZWdpb246IC8vIDxkYXNoYm9hcmQtcmVnaW9uPiB8IDxkYXNoYm9hcmQt
cmVnaW9uPgogICAgICAgICBpZiAodmFsdWUtPnVuaXQgPT0gQ1NTUGFyc2VyVmFsdWU6OkZ1bmN0
aW9uIHx8IGlkID09IENTU1ZhbHVlTm9uZSkKQEAgLTIxMDksMTMgKzIyNjEsNiBAQCBib29sIENT
U1BhcnNlcjo6cGFyc2VWYWx1ZShpbnQgcHJvcElkLCBib29sIGltcG9ydGFudCkKICAgICAgICAg
YnJlYWs7CiAjZW5kaWYKIAotI2lmIEVOQUJMRShPVkVSRkxPV19TQ1JPTExJTkcpCi0gICAgY2Fz
ZSBDU1NQcm9wZXJ0eVdlYmtpdE92ZXJmbG93U2Nyb2xsaW5nOgotICAgICAgICBpZiAoaWQgPT0g
Q1NTVmFsdWVBdXRvIHx8IGlkID09IENTU1ZhbHVlVG91Y2gpCi0gICAgICAgICAgICB2YWxpZFBy
aW1pdGl2ZSA9IHRydWU7Ci0gICAgICAgIGJyZWFrOwotI2VuZGlmCi0KICAgICAgICAgLyogc2hv
cnRoYW5kIHByb3BlcnRpZXMgKi8KICAgICBjYXNlIENTU1Byb3BlcnR5QmFja2dyb3VuZDogewog
ICAgICAgICAvLyBQb3NpdGlvbiBtdXN0IGNvbWUgYmVmb3JlIGNvbG9yIGluIHRoaXMgYXJyYXkg
YmVjYXVzZSBhIHBsYWluIG9sZCAiMCIgaXMgYSBsZWdhbCBjb2xvcgpAQCAtMjI4NSwyNiArMjQz
MCwxMSBAQCBib29sIENTU1BhcnNlcjo6cGFyc2VWYWx1ZShpbnQgcHJvcElkLCBib29sIGltcG9y
dGFudCkKICAgICBjYXNlIENTU1Byb3BlcnR5VGV4dFVuZGVybGluZToKICAgICAgICAgcmV0dXJu
IGZhbHNlOwogICAgIC8vIENTUyBUZXh0IExheW91dCBNb2R1bGUgTGV2ZWwgMzogVmVydGljYWwg
d3JpdGluZyBzdXBwb3J0Ci0gICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdFdyaXRpbmdNb2RlOgot
ICAgICAgICBpZiAoaWQgPj0gQ1NTVmFsdWVIb3Jpem9udGFsVGIgJiYgaWQgPD0gQ1NTVmFsdWVI
b3Jpem9udGFsQnQpCi0gICAgICAgICAgICB2YWxpZFByaW1pdGl2ZSA9IHRydWU7Ci0gICAgICAg
IGJyZWFrOwotCi0gICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdFRleHRDb21iaW5lOgotICAgICAg
ICBpZiAoaWQgPT0gQ1NTVmFsdWVOb25lIHx8IGlkID09IENTU1ZhbHVlSG9yaXpvbnRhbCkKLSAg
ICAgICAgICAgIHZhbGlkUHJpbWl0aXZlID0gdHJ1ZTsKLSAgICAgICAgYnJlYWs7Ci0KICAgICBj
YXNlIENTU1Byb3BlcnR5V2Via2l0VGV4dEVtcGhhc2lzOiB7CiAgICAgICAgIGNvbnN0IGludCBw
cm9wZXJ0aWVzW10gPSB7IENTU1Byb3BlcnR5V2Via2l0VGV4dEVtcGhhc2lzU3R5bGUsIENTU1By
b3BlcnR5V2Via2l0VGV4dEVtcGhhc2lzQ29sb3IgfTsKICAgICAgICAgcmV0dXJuIHBhcnNlU2hv
cnRoYW5kKHByb3BJZCwgcHJvcGVydGllcywgV1RGX0FSUkFZX0xFTkdUSChwcm9wZXJ0aWVzKSwg
aW1wb3J0YW50KTsKICAgICB9CiAKLSAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0VGV4dEVtcGhh
c2lzUG9zaXRpb246Ci0gICAgICAgIGlmIChpZCA9PSBDU1NWYWx1ZU92ZXIgfHwgaWQgPT0gQ1NT
VmFsdWVVbmRlcikKLSAgICAgICAgICAgIHZhbGlkUHJpbWl0aXZlID0gdHJ1ZTsKLSAgICAgICAg
YnJlYWs7Ci0KICAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0VGV4dEVtcGhhc2lzU3R5bGU6CiAg
ICAgICAgIHJldHVybiBwYXJzZVRleHRFbXBoYXNpc1N0eWxlKGltcG9ydGFudCk7CiAKQEAgLTIz
MjcsMTEgKzI0NTcsNiBAQCBib29sIENTU1BhcnNlcjo6cGFyc2VWYWx1ZShpbnQgcHJvcElkLCBi
b29sIGltcG9ydGFudCkKICAgICAgICAgICAgIHJldHVybiBwYXJzZUZvbnRGZWF0dXJlU2V0dGlu
Z3MoaW1wb3J0YW50KTsKICAgICAgICAgYnJlYWs7CiAKLSAgICBjYXNlIENTU1Byb3BlcnR5V2Vi
a2l0Rm9udEtlcm5pbmc6Ci0gICAgICAgIGlmIChpZCA9PSBDU1NWYWx1ZUF1dG8gfHwgaWQgPT0g
Q1NTVmFsdWVOb3JtYWwgfHwgaWQgPT0gQ1NTVmFsdWVOb25lKQotICAgICAgICAgICAgdmFsaWRQ
cmltaXRpdmUgPSB0cnVlOwotICAgICAgICBicmVhazsKLQogICAgIGNhc2UgQ1NTUHJvcGVydHlX
ZWJraXRGb250VmFyaWFudExpZ2F0dXJlczoKICAgICAgICAgaWYgKGlkID09IENTU1ZhbHVlTm9y
bWFsKQogICAgICAgICAgICAgdmFsaWRQcmltaXRpdmUgPSB0cnVlOwpAQCAtMjM0NiwxNSArMjQ3
MSw2IEBAIGJvb2wgQ1NTUGFyc2VyOjpwYXJzZVZhbHVlKGludCBwcm9wSWQsIGJvb2wgaW1wb3J0
YW50KQogICAgICAgICBlbHNlIGlmICh2YWx1ZS0+dW5pdCA9PSBDU1NQYXJzZXJWYWx1ZTo6RnVu
Y3Rpb24pCiAgICAgICAgICAgICByZXR1cm4gcGFyc2VXcmFwU2hhcGUoKHByb3BJZCA9PSBDU1NQ
cm9wZXJ0eVdlYmtpdFdyYXBTaGFwZUluc2lkZSksIGltcG9ydGFudCk7CiAgICAgICAgIGJyZWFr
OwotICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRXcmFwRmxvdzoKLSAgICAgICAgaWYgKGlkID09
IENTU1ZhbHVlQXV0byB8fCBpZCA9PSBDU1NWYWx1ZUJvdGggfHwgaWQgPT0gQ1NTVmFsdWVMZWZ0
IHx8IGlkID09IENTU1ZhbHVlUmlnaHQgfHwgaWQgPT0gQ1NTVmFsdWVNYXhpbXVtIHx8IGlkID09
IENTU1ZhbHVlQ2xlYXIpCi0gICAgICAgICAgICB2YWxpZFByaW1pdGl2ZSA9IHRydWU7Ci0gICAg
ICAgIGJyZWFrOwotCi0gICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdFdyYXBUaHJvdWdoOgotICAg
ICAgICBpZiAoaWQgPT0gQ1NTVmFsdWVXcmFwIHx8IGlkID09IENTU1ZhbHVlTm9uZSkKLSAgICAg
ICAgICAgIHZhbGlkUHJpbWl0aXZlID0gdHJ1ZTsKLSAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBD
U1NQcm9wZXJ0eVdlYmtpdFdyYXBNYXJnaW46CiAgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdFdy
YXBQYWRkaW5nOgogICAgICAgICB2YWxpZFByaW1pdGl2ZSA9ICghaWQgJiYgdmFsaWRVbml0KHZh
bHVlLCBGTGVuZ3RoIHwgRk5vbk5lZywgbV9zdHJpY3QpKTsKQEAgLTIzNjMsOSArMjQ3OSwxMiBA
QCBib29sIENTU1BhcnNlcjo6cGFyc2VWYWx1ZShpbnQgcHJvcElkLCBib29sIGltcG9ydGFudCkK
ICAgICAgICAgY29uc3QgaW50IHByb3BlcnRpZXNbXSA9IHsgQ1NTUHJvcGVydHlXZWJraXRXcmFw
RmxvdywgQ1NTUHJvcGVydHlXZWJraXRXcmFwTWFyZ2luLCBDU1NQcm9wZXJ0eVdlYmtpdFdyYXBQ
YWRkaW5nIH07CiAgICAgICAgIHJldHVybiBwYXJzZVNob3J0aGFuZChwcm9wSWQsIHByb3BlcnRp
ZXMsIFdURl9BUlJBWV9MRU5HVEgocHJvcGVydGllcyksIGltcG9ydGFudCk7CiAgICAgfQotI2lm
IEVOQUJMRShTVkcpCiAgICAgZGVmYXVsdDoKLSAgICAgICAgcmV0dXJuIHBhcnNlU1ZHVmFsdWUo
cHJvcElkLCBpbXBvcnRhbnQpOworI2lmIEVOQUJMRShTVkcpCisgICAgcmV0dXJuIHBhcnNlU1ZH
VmFsdWUocHJvcElkLCBpbXBvcnRhbnQpOworI2Vsc2UKKyAgICBBU1NFUlRfTk9UX1JFQUNIRUQo
KTsKKyAgICByZXR1cm4gZmFsc2U7CiAjZW5kaWYKICAgICB9CiAK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>132693</attachid>
            <date>2012-03-19 15:53:47 -0700</date>
            <delta_ts>2012-03-20 04:20:45 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-80874-20120319195330.patch</filename>
            <type>text/plain</type>
            <size>48793</size>
            <attacher name="Alexis Menard (darktears)">menard</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTExMjIzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZDE2ODU4NmI2NDViN2Iy
YmVjMDMzZWNlYmYzM2NjNDdlNmQyZmYzOS4uZGFjOGFlNWUyMDc1Y2NhMTQzNTIyMGQyNmNkYTFj
YjJkZmZhNjVlMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI5IEBACisyMDEyLTAzLTE5ICBBbGV4
aXMgTWVuYXJkICA8YWxleGlzLm1lbmFyZEBvcGVuYm9zc2Eub3JnPgorCisgICAgICAgIEltcGxl
bWVudCBhIGZhc3QgcGF0aCB3aGVuIHNldHRpbmcgQ1NTIHByb3BlcnRpZXMgd2l0aCBrZXl3b3Jk
cyBmcm9tIEpTLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9ODA4NzQKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICBUaGUgaWRlYSBpcyB0byBhdm9pZCB0aGUgY3JlYXRpb24gb2YgdGhlIENTU1BhcnNlciBpbnN0
YW5jZSBhbmQgdG8gcnVuIHRoZSBwYXJzZXIgb24KKyAgICAgICAgYSBzdHJpbmcgd2Uga25vdyBp
dCBzaG91bGQgYmUgYSBrZXl3b3JkLiBXaGVuIEpTIGNhbGxzIHBhcnNlVmFsdWUgd2UgdHJ5IHRv
IGNoZWNrIGlmIHdlIGNhbgorICAgICAgICB1c2UgdGhlIGZhc3QgcGF0aCBhbmQgaWYgdGhlIGtl
eXdvcmQgaXMgYWNjZXB0ZWQgdGhlbiB3ZSBqdXN0IGFkZCBpdCB0byB0aGUgZGVjbGFyYXRpb24g
ZGlyZWN0bHkuCisgICAgICAgIEZvciB0aGUgc2FrZSBvZiBtYWludGVuYW5jZSB0aGUgcGFyc2VW
YWx1ZSBmdW5jdGlvbiB1c2VkIGJ5IENTU0dyYW1tYXIueSBpcyBzaGFyaW5nIHNvbWUgY29kZSB3
aXRoCisgICAgICAgIHRoZSBmYXN0IHBhdGggKGtleXdvcmQgbWF0Y2hpbmcgbW9zdGx5KS4KKwor
ICAgICAgICBUaGlzIHBhdGNoIGltcHJvdmVzIHRoaXMgdXNlIGNhc2UgYnkgMjAlLiBTZXR0aW5n
IGtleXdvcmQgcHJvcGVydGllcyBmcm9tIEpTIGlzIHVzZWQgYSBsb3QgaW4KKyAgICAgICAgR29v
Z2xlIE1hcHMgZm9yIGV4YW1wbGUgKHdoZW4gem9vbWluZyBvciBwYW5uaW5nKS4KKworICAgICAg
ICBObyBuZXcgdGVzdHMgOiBpdCdzIGEgcGVyZm9ybWFuY2UgaW1wcm92ZW1lbnQsIHRoZXJlIHNo
b3VsZG4ndCBiZSBhbnkgYmVoYXZpb3IgY2hhbmdlLgorCisKKyAgICAgICAgKiBjc3MvQ1NTUGFy
c2VyLmNwcDoKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6aXNWYWxpZEtl
eXdvcmRQcm9wZXJ0eUFuZFZhbHVlKToKKyAgICAgICAgKFdlYkNvcmU6OmlzS2V5d29yZFByb3Bl
cnR5SUQpOgorICAgICAgICAoV2ViQ29yZTo6cGFyc2VLZXl3b3JkVmFsdWUpOgorICAgICAgICAo
V2ViQ29yZTo6Q1NTUGFyc2VyOjpwYXJzZVZhbHVlKToKKwogMjAxMi0wMy0xOSAgRGF2aWQgSHlh
dHQgIDxoeWF0dEBhcHBsZS5jb20+CiAKICAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTgxNTM0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NT
UGFyc2VyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQYXJzZXIuY3BwCmluZGV4IGZjNjE0
ZjU5NzFjNzk4ZDc5MDY5OThiMzA0ZjhhYmI2MjZlNDMyYmYuLjdkOTRhZWNmNWJkMGQwNzg3ODUy
ZWUwNDM2NGNhZDc5YzIzMDZjZDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQ
YXJzZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQYXJzZXIuY3BwCkBAIC00Nzks
NiArNDc5LDQ0OCBAQCBzdGF0aWMgYm9vbCBwYXJzZVNpbXBsZUxlbmd0aFZhbHVlKFN0eWxlUHJv
cGVydHlTZXQqIGRlY2xhcmF0aW9uLCBpbnQgcHJvcGVydHlJZAogICAgIHJldHVybiB0cnVlOwog
fQogCisKK3N0YXRpYyBpbmxpbmUgYm9vbCBpc1ZhbGlkS2V5d29yZFByb3BlcnR5QW5kVmFsdWUo
aW50IHByb3BlcnR5SWQsIGludCB2YWx1ZUlEKQoreworICAgIHN3aXRjaCAocHJvcGVydHlJZCkg
eworICAgIGNhc2UgQ1NTUHJvcGVydHlCb3JkZXJDb2xsYXBzZTogLy8gY29sbGFwc2UgfCBzZXBh
cmF0ZSB8IGluaGVyaXQKKyAgICAgICAgaWYgKHZhbHVlSUQgPT0gQ1NTVmFsdWVDb2xsYXBzZSB8
fCB2YWx1ZUlEID09IENTU1ZhbHVlU2VwYXJhdGUpCisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsK
KyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBDU1NQcm9wZXJ0eUJvcmRlclRvcFN0eWxlOiAvLyA8
Ym9yZGVyLXN0eWxlPiB8IGluaGVyaXQKKyAgICBjYXNlIENTU1Byb3BlcnR5Qm9yZGVyUmlnaHRT
dHlsZTogLy8gRGVmaW5lZCBhczogbm9uZSB8IGhpZGRlbiB8IGRvdHRlZCB8IGRhc2hlZCB8Cisg
ICAgY2FzZSBDU1NQcm9wZXJ0eUJvcmRlckJvdHRvbVN0eWxlOiAvLyBzb2xpZCB8IGRvdWJsZSB8
IGdyb292ZSB8IHJpZGdlIHwgaW5zZXQgfCBvdXRzZXQKKyAgICBjYXNlIENTU1Byb3BlcnR5Qm9y
ZGVyTGVmdFN0eWxlOgorICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRCb3JkZXJBZnRlclN0eWxl
OgorICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRCb3JkZXJCZWZvcmVTdHlsZToKKyAgICBjYXNl
IENTU1Byb3BlcnR5V2Via2l0Qm9yZGVyRW5kU3R5bGU6CisgICAgY2FzZSBDU1NQcm9wZXJ0eVdl
YmtpdEJvcmRlclN0YXJ0U3R5bGU6CisgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdENvbHVtblJ1
bGVTdHlsZToKKyAgICAgICAgaWYgKHZhbHVlSUQgPj0gQ1NTVmFsdWVOb25lICYmIHZhbHVlSUQg
PD0gQ1NTVmFsdWVEb3VibGUpCisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgYnJl
YWs7CisgICAgY2FzZSBDU1NQcm9wZXJ0eUJveFNpemluZzoKKyAgICAgICAgIGlmICh2YWx1ZUlE
ID09IENTU1ZhbHVlQm9yZGVyQm94IHx8IHZhbHVlSUQgPT0gQ1NTVmFsdWVDb250ZW50Qm94KQor
ICAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICAgYnJlYWs7CisgICAgY2FzZSBDU1NQ
cm9wZXJ0eUNhcHRpb25TaWRlOiAvLyB0b3AgfCBib3R0b20gfCBsZWZ0IHwgcmlnaHQgfCBpbmhl
cml0CisgICAgICAgIGlmICh2YWx1ZUlEID09IENTU1ZhbHVlTGVmdCB8fCB2YWx1ZUlEID09IENT
U1ZhbHVlUmlnaHQgfHwgdmFsdWVJRCA9PSBDU1NWYWx1ZVRvcCB8fCB2YWx1ZUlEID09IENTU1Zh
bHVlQm90dG9tKQorICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgIGJyZWFrOworICAg
IGNhc2UgQ1NTUHJvcGVydHlDbGVhcjogLy8gbm9uZSB8IGxlZnQgfCByaWdodCB8IGJvdGggfCBp
bmhlcml0CisgICAgICAgIGlmICh2YWx1ZUlEID09IENTU1ZhbHVlTm9uZSB8fCB2YWx1ZUlEID09
IENTU1ZhbHVlTGVmdCB8fCB2YWx1ZUlEID09IENTU1ZhbHVlUmlnaHQgfHwgdmFsdWVJRCA9PSBD
U1NWYWx1ZUJvdGgpCisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgYnJlYWs7Cisg
ICAgY2FzZSBDU1NQcm9wZXJ0eURpcmVjdGlvbjogLy8gbHRyIHwgcnRsIHwgaW5oZXJpdAorICAg
ICAgICBpZiAodmFsdWVJRCA9PSBDU1NWYWx1ZUx0ciB8fCB2YWx1ZUlEID09IENTU1ZhbHVlUnRs
KQorICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgQ1NT
UHJvcGVydHlEaXNwbGF5OgorICAgICAgICAvLyBpbmxpbmUgfCBibG9jayB8IGxpc3QtaXRlbSB8
IHJ1bi1pbiB8IGlubGluZS1ibG9jayB8IHRhYmxlIHwKKyAgICAgICAgLy8gaW5saW5lLXRhYmxl
IHwgdGFibGUtcm93LWdyb3VwIHwgdGFibGUtaGVhZGVyLWdyb3VwIHwgdGFibGUtZm9vdGVyLWdy
b3VwIHwgdGFibGUtcm93IHwKKyAgICAgICAgLy8gdGFibGUtY29sdW1uLWdyb3VwIHwgdGFibGUt
Y29sdW1uIHwgdGFibGUtY2VsbCB8IHRhYmxlLWNhcHRpb24gfCAtd2Via2l0LWJveCB8IC13ZWJr
aXQtaW5saW5lLWJveCB8IG5vbmUgfCBpbmhlcml0CisgICAgICAgIC8vIC13ZWJraXQtZmxleGJv
eCB8IC13ZWJraXQtaW5saW5lLWZsZXhib3ggfCAtd2Via2l0LWdyaWQgfCAtd2Via2l0LWlubGlu
ZS1ncmlkCisgICAgICAgIGlmICgodmFsdWVJRCA+PSBDU1NWYWx1ZUlubGluZSAmJiB2YWx1ZUlE
IDw9IENTU1ZhbHVlV2Via2l0SW5saW5lRmxleGJveCkgfHwgdmFsdWVJRCA9PSBDU1NWYWx1ZU5v
bmUpCisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyNpZiBFTkFCTEUoQ1NTX0dSSURfTEFZT1VU
KQorICAgICAgICBpZiAodmFsdWVJRCA9PSBDU1NWYWx1ZVdlYmtpdEdyaWQgfHwgdmFsdWVJRCA9
PSBDU1NWYWx1ZVdlYmtpdElubGluZUdyaWQpCisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAg
ICAgICAgYnJlYWs7CisjZW5kaWYKKyAgICBjYXNlIENTU1Byb3BlcnR5RW1wdHlDZWxsczogLy8g
c2hvdyB8IGhpZGUgfCBpbmhlcml0CisgICAgICAgIGlmICh2YWx1ZUlEID09IENTU1ZhbHVlU2hv
dyB8fCB2YWx1ZUlEID09IENTU1ZhbHVlSGlkZSkKKyAgICAgICAgICAgIHJldHVybiB0cnVlOwor
ICAgICAgICBicmVhazsKKyAgICBjYXNlIENTU1Byb3BlcnR5RmxvYXQ6IC8vIGxlZnQgfCByaWdo
dCB8IG5vbmUgfCBwb3NpdGlvbmVkIHwgY2VudGVyIChmb3IgYnVnZ3kgQ1NTLCBtYXBzIHRvIG5v
bmUpCisgICAgICAgIGlmICh2YWx1ZUlEID09IENTU1ZhbHVlTGVmdCB8fCB2YWx1ZUlEID09IENT
U1ZhbHVlUmlnaHQgfHwgdmFsdWVJRCA9PSBDU1NWYWx1ZU5vbmUgfHwgdmFsdWVJRCA9PSBDU1NW
YWx1ZUNlbnRlciB8fCB2YWx1ZUlEID09IENTU1ZhbHVlV2Via2l0UG9zaXRpb25lZCkKKyAgICAg
ICAgICAgIHJldHVybiB0cnVlOworICAgICAgICBicmVhazsKKyAgICBjYXNlIENTU1Byb3BlcnR5
Rm9udFN0eWxlOiAvLyBub3JtYWwgfCBpdGFsaWMgfCBvYmxpcXVlIHwgaW5oZXJpdAorICAgICAg
ICBpZiAodmFsdWVJRCA9PSBDU1NWYWx1ZU5vcm1hbCB8fCB2YWx1ZUlEID09IENTU1ZhbHVlSXRh
bGljIHx8IHZhbHVlSUQgPT0gQ1NTVmFsdWVPYmxpcXVlKQorICAgICAgICAgICAgcmV0dXJuIHRy
dWU7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgQ1NTUHJvcGVydHlJbWFnZVJlbmRlcmluZzog
Ly8gYXV0byB8IG9wdGltaXplQ29udHJhc3QKKyAgICAgICAgaWYgKHZhbHVlSUQgPT0gQ1NTVmFs
dWVBdXRvIHx8IHZhbHVlSUQgPT0gQ1NTVmFsdWVXZWJraXRPcHRpbWl6ZUNvbnRyYXN0KQorICAg
ICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgQ1NTUHJvcGVy
dHlMaXN0U3R5bGVQb3NpdGlvbjogLy8gaW5zaWRlIHwgb3V0c2lkZSB8IGluaGVyaXQKKyAgICAg
ICAgaWYgKHZhbHVlSUQgPT0gQ1NTVmFsdWVJbnNpZGUgfHwgdmFsdWVJRCA9PSBDU1NWYWx1ZU91
dHNpZGUpCisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgYnJlYWs7CisgICAgY2Fz
ZSBDU1NQcm9wZXJ0eUxpc3RTdHlsZVR5cGU6CisgICAgICAgIC8vIFNlZSBzZWN0aW9uIENTU19Q
Uk9QX0xJU1RfU1RZTEVfVFlQRSBvZiBmaWxlIENTU1ZhbHVlS2V5d29yZHMuaW4KKyAgICAgICAg
Ly8gZm9yIHRoZSBsaXN0IG9mIHN1cHBvcnRlZCBsaXN0LXN0eWxlLXR5cGVzLgorICAgICAgICBp
ZiAoKHZhbHVlSUQgPj0gQ1NTVmFsdWVEaXNjICYmIHZhbHVlSUQgPD0gQ1NTVmFsdWVLYXRha2Fu
YUlyb2hhKSB8fCB2YWx1ZUlEID09IENTU1ZhbHVlTm9uZSkKKyAgICAgICAgICAgIHJldHVybiB0
cnVlOworICAgICAgICBicmVhazsKKyAgICBjYXNlIENTU1Byb3BlcnR5T3V0bGluZVN0eWxlOiAv
LyAoPGJvcmRlci1zdHlsZT4gZXhjZXB0IGhpZGRlbikgfCBhdXRvIHwgaW5oZXJpdAorICAgICAg
ICBpZiAodmFsdWVJRCA9PSBDU1NWYWx1ZUF1dG8gfHwgdmFsdWVJRCA9PSBDU1NWYWx1ZU5vbmUg
fHwgKHZhbHVlSUQgPj0gQ1NTVmFsdWVJbnNldCAmJiB2YWx1ZUlEIDw9IENTU1ZhbHVlRG91Ymxl
KSkKKyAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICBicmVhazsKKyAgICBjYXNlIENT
U1Byb3BlcnR5T3ZlcmZsb3dYOgorICAgIGNhc2UgQ1NTUHJvcGVydHlPdmVyZmxvd1k6IC8vIHZp
c2libGUgfCBoaWRkZW4gfCBzY3JvbGwgfCBhdXRvIHwgbWFycXVlZSB8IG92ZXJsYXkgfCBpbmhl
cml0CisgICAgICAgIGlmICh2YWx1ZUlEID09IENTU1ZhbHVlVmlzaWJsZSB8fCB2YWx1ZUlEID09
IENTU1ZhbHVlSGlkZGVuIHx8IHZhbHVlSUQgPT0gQ1NTVmFsdWVTY3JvbGwgfHwgdmFsdWVJRCA9
PSBDU1NWYWx1ZUF1dG8gfHwgdmFsdWVJRCA9PSBDU1NWYWx1ZU92ZXJsYXkgfHwgdmFsdWVJRCA9
PSBDU1NWYWx1ZVdlYmtpdE1hcnF1ZWUpCisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAg
ICAgYnJlYWs7CisgICAgY2FzZSBDU1NQcm9wZXJ0eVBvaW50ZXJFdmVudHM6CisgICAgICAgIC8v
IG5vbmUgfCB2aXNpYmxlUGFpbnRlZCB8IHZpc2libGVGaWxsIHwgdmlzaWJsZVN0cm9rZSB8IHZp
c2libGUgfAorICAgICAgICAvLyBwYWludGVkIHwgZmlsbCB8IHN0cm9rZSB8IGF1dG8gfCBhbGwg
fCBpbmhlcml0CisgICAgICAgIGlmICh2YWx1ZUlEID09IENTU1ZhbHVlVmlzaWJsZSB8fCB2YWx1
ZUlEID09IENTU1ZhbHVlTm9uZSB8fCB2YWx1ZUlEID09IENTU1ZhbHVlQWxsIHx8IHZhbHVlSUQg
PT0gQ1NTVmFsdWVBdXRvIHx8ICh2YWx1ZUlEID49IENTU1ZhbHVlVmlzaWJsZXBhaW50ZWQgJiYg
dmFsdWVJRCA8PSBDU1NWYWx1ZVN0cm9rZSkpCisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAg
ICAgICAgYnJlYWs7CisgICAgY2FzZSBDU1NQcm9wZXJ0eVBvc2l0aW9uOiAvLyBzdGF0aWMgfCBy
ZWxhdGl2ZSB8IGFic29sdXRlIHwgZml4ZWQgfCBpbmhlcml0CisgICAgICAgIGlmICh2YWx1ZUlE
ID09IENTU1ZhbHVlU3RhdGljIHx8IHZhbHVlSUQgPT0gQ1NTVmFsdWVSZWxhdGl2ZSB8fCB2YWx1
ZUlEID09IENTU1ZhbHVlQWJzb2x1dGUgfHwgdmFsdWVJRCA9PSBDU1NWYWx1ZUZpeGVkKQorICAg
ICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgQ1NTUHJvcGVy
dHlSZXNpemU6IC8vIG5vbmUgfCBib3RoIHwgaG9yaXpvbnRhbCB8IHZlcnRpY2FsIHwgYXV0bwor
ICAgICAgICBpZiAodmFsdWVJRCA9PSBDU1NWYWx1ZU5vbmUgfHwgdmFsdWVJRCA9PSBDU1NWYWx1
ZUJvdGggfHwgdmFsdWVJRCA9PSBDU1NWYWx1ZUhvcml6b250YWwgfHwgdmFsdWVJRCA9PSBDU1NW
YWx1ZVZlcnRpY2FsIHx8IHZhbHVlSUQgPT0gQ1NTVmFsdWVBdXRvKQorICAgICAgICAgICAgcmV0
dXJuIHRydWU7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgQ1NTUHJvcGVydHlTcGVhazogLy8g
bm9uZSB8IG5vcm1hbCB8IHNwZWxsLW91dCB8IGRpZ2l0cyB8IGxpdGVyYWwtcHVuY3R1YXRpb24g
fCBuby1wdW5jdHVhdGlvbiB8IGluaGVyaXQKKyAgICAgICAgaWYgKHZhbHVlSUQgPT0gQ1NTVmFs
dWVOb25lIHx8IHZhbHVlSUQgPT0gQ1NTVmFsdWVOb3JtYWwgfHwgdmFsdWVJRCA9PSBDU1NWYWx1
ZVNwZWxsT3V0IHx8IHZhbHVlSUQgPT0gQ1NTVmFsdWVEaWdpdHMgfHwgdmFsdWVJRCA9PSBDU1NW
YWx1ZUxpdGVyYWxQdW5jdHVhdGlvbiB8fCB2YWx1ZUlEID09IENTU1ZhbHVlTm9QdW5jdHVhdGlv
bikKKyAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICBicmVhazsKKyAgICBjYXNlIENT
U1Byb3BlcnR5VGFibGVMYXlvdXQ6IC8vIGF1dG8gfCBmaXhlZCB8IGluaGVyaXQKKyAgICAgICAg
aWYgKHZhbHVlSUQgPT0gQ1NTVmFsdWVBdXRvIHx8IHZhbHVlSUQgPT0gQ1NTVmFsdWVGaXhlZCkK
KyAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICBicmVhazsKKyAgICBjYXNlIENTU1By
b3BlcnR5VGV4dExpbmVUaHJvdWdoTW9kZToKKyAgICBjYXNlIENTU1Byb3BlcnR5VGV4dE92ZXJs
aW5lTW9kZToKKyAgICBjYXNlIENTU1Byb3BlcnR5VGV4dFVuZGVybGluZU1vZGU6CisgICAgICAg
IGlmICh2YWx1ZUlEID09IENTU1ZhbHVlQ29udGludW91cyB8fCB2YWx1ZUlEID09IENTU1ZhbHVl
U2tpcFdoaXRlU3BhY2UpCisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgYnJlYWs7
CisgICAgY2FzZSBDU1NQcm9wZXJ0eVRleHRMaW5lVGhyb3VnaFN0eWxlOgorICAgIGNhc2UgQ1NT
UHJvcGVydHlUZXh0T3ZlcmxpbmVTdHlsZToKKyAgICBjYXNlIENTU1Byb3BlcnR5VGV4dFVuZGVy
bGluZVN0eWxlOgorICAgICAgICBpZiAodmFsdWVJRCA9PSBDU1NWYWx1ZU5vbmUgfHwgdmFsdWVJ
RCA9PSBDU1NWYWx1ZVNvbGlkIHx8IHZhbHVlSUQgPT0gQ1NTVmFsdWVEb3VibGUgfHwgdmFsdWVJ
RCA9PSBDU1NWYWx1ZURhc2hlZCB8fCB2YWx1ZUlEID09IENTU1ZhbHVlRG90RGFzaCB8fCB2YWx1
ZUlEID09IENTU1ZhbHVlRG90RG90RGFzaCB8fCB2YWx1ZUlEID09IENTU1ZhbHVlV2F2ZSkKKyAg
ICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICBicmVhazsKKyAgICBjYXNlIENTU1Byb3Bl
cnR5VGV4dE92ZXJmbG93OiAvLyBjbGlwIHwgZWxsaXBzaXMKKyAgICAgICAgaWYgKHZhbHVlSUQg
PT0gQ1NTVmFsdWVDbGlwIHx8IHZhbHVlSUQgPT0gQ1NTVmFsdWVFbGxpcHNpcykKKyAgICAgICAg
ICAgIHJldHVybiB0cnVlOworICAgICAgICBicmVhazsKKyAgICBjYXNlIENTU1Byb3BlcnR5VGV4
dFJlbmRlcmluZzogLy8gYXV0byB8IG9wdGltaXplU3BlZWQgfCBvcHRpbWl6ZUxlZ2liaWxpdHkg
fCBnZW9tZXRyaWNQcmVjaXNpb24KKyAgICAgICAgaWYgKHZhbHVlSUQgPT0gQ1NTVmFsdWVBdXRv
IHx8IHZhbHVlSUQgPT0gQ1NTVmFsdWVPcHRpbWl6ZXNwZWVkIHx8IHZhbHVlSUQgPT0gQ1NTVmFs
dWVPcHRpbWl6ZWxlZ2liaWxpdHkgfHwgdmFsdWVJRCA9PSBDU1NWYWx1ZUdlb21ldHJpY3ByZWNp
c2lvbikKKyAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICBicmVhazsKKyAgICBjYXNl
IENTU1Byb3BlcnR5VGV4dFRyYW5zZm9ybTogLy8gY2FwaXRhbGl6ZSB8IHVwcGVyY2FzZSB8IGxv
d2VyY2FzZSB8IG5vbmUgfCBpbmhlcml0CisgICAgICAgIGlmICgodmFsdWVJRCA+PSBDU1NWYWx1
ZUNhcGl0YWxpemUgJiYgdmFsdWVJRCA8PSBDU1NWYWx1ZUxvd2VyY2FzZSkgfHwgdmFsdWVJRCA9
PSBDU1NWYWx1ZU5vbmUpCisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgYnJlYWs7
CisgICAgY2FzZSBDU1NQcm9wZXJ0eVZpc2liaWxpdHk6IC8vIHZpc2libGUgfCBoaWRkZW4gfCBj
b2xsYXBzZSB8IGluaGVyaXQKKyAgICAgICAgaWYgKHZhbHVlSUQgPT0gQ1NTVmFsdWVWaXNpYmxl
IHx8IHZhbHVlSUQgPT0gQ1NTVmFsdWVIaWRkZW4gfHwgdmFsdWVJRCA9PSBDU1NWYWx1ZUNvbGxh
cHNlKQorICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgIGJyZWFrOworICAgIGNhc2Ug
Q1NTUHJvcGVydHlXZWJraXRBcHBlYXJhbmNlOgorICAgICAgICBpZiAoKHZhbHVlSUQgPj0gQ1NT
VmFsdWVDaGVja2JveCAmJiB2YWx1ZUlEIDw9IENTU1ZhbHVlVGV4dGFyZWEpIHx8IHZhbHVlSUQg
PT0gQ1NTVmFsdWVOb25lKQorICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgIGJyZWFr
OworICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRCYWNrZmFjZVZpc2liaWxpdHk6CisgICAgICAg
IGlmICh2YWx1ZUlEID09IENTU1ZhbHVlVmlzaWJsZSB8fCB2YWx1ZUlEID09IENTU1ZhbHVlSGlk
ZGVuKQorICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgIGJyZWFrOworICAgIGNhc2Ug
Q1NTUHJvcGVydHlXZWJraXRCb3JkZXJGaXQ6CisgICAgICAgIGlmICh2YWx1ZUlEID09IENTU1Zh
bHVlQm9yZGVyIHx8IHZhbHVlSUQgPT0gQ1NTVmFsdWVMaW5lcykKKyAgICAgICAgICAgIHJldHVy
biB0cnVlOworICAgICAgICBicmVhazsKKyAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0Qm94QWxp
Z246CisgICAgICAgIGlmICh2YWx1ZUlEID09IENTU1ZhbHVlU3RyZXRjaCB8fCB2YWx1ZUlEID09
IENTU1ZhbHVlU3RhcnQgfHwgdmFsdWVJRCA9PSBDU1NWYWx1ZUVuZCB8fCB2YWx1ZUlEID09IENT
U1ZhbHVlQ2VudGVyIHx8IHZhbHVlSUQgPT0gQ1NTVmFsdWVCYXNlbGluZSkKKyAgICAgICAgICAg
IHJldHVybiB0cnVlOworICAgICAgICBicmVhazsKKyAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0
Qm94RGlyZWN0aW9uOgorICAgICAgICBpZiAodmFsdWVJRCA9PSBDU1NWYWx1ZU5vcm1hbCB8fCB2
YWx1ZUlEID09IENTU1ZhbHVlUmV2ZXJzZSkKKyAgICAgICAgICAgIHJldHVybiB0cnVlOworICAg
ICAgICBicmVhazsKKyAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0Qm94TGluZXM6CisgICAgICAg
IGlmICh2YWx1ZUlEID09IENTU1ZhbHVlU2luZ2xlIHx8IHZhbHVlSUQgPT0gQ1NTVmFsdWVNdWx0
aXBsZSkKKyAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgYnJlYWs7CisgICAg
Y2FzZSBDU1NQcm9wZXJ0eVdlYmtpdEJveE9yaWVudDoKKyAgICAgICAgaWYgKHZhbHVlSUQgPT0g
Q1NTVmFsdWVIb3Jpem9udGFsIHx8IHZhbHVlSUQgPT0gQ1NTVmFsdWVWZXJ0aWNhbCB8fCB2YWx1
ZUlEID09IENTU1ZhbHVlSW5saW5lQXhpcyB8fCB2YWx1ZUlEID09IENTU1ZhbHVlQmxvY2tBeGlz
KQorICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgQ1NT
UHJvcGVydHlXZWJraXRCb3hQYWNrOgorICAgICAgICBpZiAodmFsdWVJRCA9PSBDU1NWYWx1ZVN0
YXJ0IHx8IHZhbHVlSUQgPT0gQ1NTVmFsdWVFbmQgfHwgdmFsdWVJRCA9PSBDU1NWYWx1ZUNlbnRl
ciB8fCB2YWx1ZUlEID09IENTU1ZhbHVlSnVzdGlmeSkKKyAgICAgICAgICAgIHJldHVybiB0cnVl
OworICAgICAgICBicmVhazsKKyAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0Q29sb3JDb3JyZWN0
aW9uOgorICAgICAgICBpZiAodmFsdWVJRCA9PSBDU1NWYWx1ZVNyZ2IgfHwgdmFsdWVJRCA9PSBD
U1NWYWx1ZURlZmF1bHQpCisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgYnJlYWs7
CisgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdEZsZXhBbGlnbjoKKyAgICAgICAgaWYgKHZhbHVl
SUQgPT0gQ1NTVmFsdWVTdGFydCB8fCB2YWx1ZUlEID09IENTU1ZhbHVlRW5kIHx8IHZhbHVlSUQg
PT0gQ1NTVmFsdWVDZW50ZXIgfHwgdmFsdWVJRCA9PSBDU1NWYWx1ZUJhc2VsaW5lIHx8IHZhbHVl
SUQgPT0gQ1NTVmFsdWVTdHJldGNoKQorICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAg
IGJyZWFrOworICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRGbGV4RGlyZWN0aW9uOgorICAgICAg
ICBpZiAodmFsdWVJRCA9PSBDU1NWYWx1ZVJvdyB8fCB2YWx1ZUlEID09IENTU1ZhbHVlUm93UmV2
ZXJzZSB8fCB2YWx1ZUlEID09IENTU1ZhbHVlQ29sdW1uIHx8IHZhbHVlSUQgPT0gQ1NTVmFsdWVD
b2x1bW5SZXZlcnNlKQorICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICBicmVh
azsKKyAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0RmxleEl0ZW1BbGlnbjoKKyAgICAgICAgaWYg
KHZhbHVlSUQgPT0gQ1NTVmFsdWVBdXRvIHx8IHZhbHVlSUQgPT0gQ1NTVmFsdWVTdGFydCB8fCB2
YWx1ZUlEID09IENTU1ZhbHVlRW5kIHx8IHZhbHVlSUQgPT0gQ1NTVmFsdWVDZW50ZXIgfHwgdmFs
dWVJRCA9PSBDU1NWYWx1ZUJhc2VsaW5lIHx8IHZhbHVlSUQgPT0gQ1NTVmFsdWVTdHJldGNoKQor
ICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgQ1NTUHJv
cGVydHlXZWJraXRGbGV4UGFjazoKKyAgICAgICAgaWYgKHZhbHVlSUQgPT0gQ1NTVmFsdWVTdGFy
dCB8fCB2YWx1ZUlEID09IENTU1ZhbHVlRW5kIHx8IHZhbHVlSUQgPT0gQ1NTVmFsdWVDZW50ZXIg
fHwgdmFsdWVJRCA9PSBDU1NWYWx1ZUp1c3RpZnkgfHwgdmFsdWVJRCA9PSBDU1NWYWx1ZURpc3Ry
aWJ1dGUpCisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgYnJlYWs7CisgICAgY2Fz
ZSBDU1NQcm9wZXJ0eVdlYmtpdEZsZXhXcmFwOgorICAgICAgICBpZiAodmFsdWVJRCA9PSBDU1NW
YWx1ZU5vbmUgfHwgdmFsdWVJRCA9PSBDU1NWYWx1ZVdyYXAgfHwgdmFsdWVJRCA9PSBDU1NWYWx1
ZVdyYXBSZXZlcnNlKQorICAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICBicmVhazsK
KyAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0Rm9udEtlcm5pbmc6CisgICAgICAgIGlmICh2YWx1
ZUlEID09IENTU1ZhbHVlQXV0byB8fCB2YWx1ZUlEID09IENTU1ZhbHVlTm9ybWFsIHx8IHZhbHVl
SUQgPT0gQ1NTVmFsdWVOb25lKQorICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgIGJy
ZWFrOworICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRGb250U21vb3RoaW5nOgorICAgICAgICBp
ZiAodmFsdWVJRCA9PSBDU1NWYWx1ZUF1dG8gfHwgdmFsdWVJRCA9PSBDU1NWYWx1ZU5vbmUgfHwg
dmFsdWVJRCA9PSBDU1NWYWx1ZUFudGlhbGlhc2VkIHx8IHZhbHVlSUQgPT0gQ1NTVmFsdWVTdWJw
aXhlbEFudGlhbGlhc2VkKQorICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgIGJyZWFr
OworICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRIeXBoZW5zOgorICAgICAgICBpZiAodmFsdWVJ
RCA9PSBDU1NWYWx1ZU5vbmUgfHwgdmFsdWVJRCA9PSBDU1NWYWx1ZU1hbnVhbCB8fCB2YWx1ZUlE
ID09IENTU1ZhbHVlQXV0bykKKyAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICBicmVh
azsKKyAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0TGluZUFsaWduOgorICAgICAgICBpZiAodmFs
dWVJRCA9PSBDU1NWYWx1ZU5vbmUgfHwgdmFsdWVJRCA9PSBDU1NWYWx1ZUVkZ2VzKQorICAgICAg
ICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgQ1NTUHJvcGVydHlX
ZWJraXRMaW5lQnJlYWs6IC8vIG5vcm1hbCB8IGFmdGVyLXdoaXRlLXNwYWNlCisgICAgICAgIGlm
ICh2YWx1ZUlEID09IENTU1ZhbHVlTm9ybWFsIHx8IHZhbHVlSUQgPT0gQ1NTVmFsdWVBZnRlcldo
aXRlU3BhY2UpCisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgYnJlYWs7CisgICAg
Y2FzZSBDU1NQcm9wZXJ0eVdlYmtpdExpbmVTbmFwOgorICAgICAgICBpZiAodmFsdWVJRCA9PSBD
U1NWYWx1ZU5vbmUgfHwgdmFsdWVJRCA9PSBDU1NWYWx1ZUJhc2VsaW5lIHx8IHZhbHVlSUQgPT0g
Q1NTVmFsdWVDb250YWluKQorICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgIGJyZWFr
OworICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRNYXJnaW5BZnRlckNvbGxhcHNlOgorICAgIGNh
c2UgQ1NTUHJvcGVydHlXZWJraXRNYXJnaW5CZWZvcmVDb2xsYXBzZToKKyAgICBjYXNlIENTU1By
b3BlcnR5V2Via2l0TWFyZ2luQm90dG9tQ29sbGFwc2U6CisgICAgY2FzZSBDU1NQcm9wZXJ0eVdl
YmtpdE1hcmdpblRvcENvbGxhcHNlOgorICAgICAgICBpZiAodmFsdWVJRCA9PSBDU1NWYWx1ZUNv
bGxhcHNlIHx8IHZhbHVlSUQgPT0gQ1NTVmFsdWVTZXBhcmF0ZSB8fCB2YWx1ZUlEID09IENTU1Zh
bHVlRGlzY2FyZCkKKyAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICBicmVhazsKKyAg
ICBjYXNlIENTU1Byb3BlcnR5V2Via2l0TWFycXVlZURpcmVjdGlvbjoKKyAgICAgICAgaWYgKHZh
bHVlSUQgPT0gQ1NTVmFsdWVGb3J3YXJkcyB8fCB2YWx1ZUlEID09IENTU1ZhbHVlQmFja3dhcmRz
IHx8IHZhbHVlSUQgPT0gQ1NTVmFsdWVBaGVhZCB8fCB2YWx1ZUlEID09IENTU1ZhbHVlUmV2ZXJz
ZSB8fCB2YWx1ZUlEID09IENTU1ZhbHVlTGVmdCB8fCB2YWx1ZUlEID09IENTU1ZhbHVlUmlnaHQg
fHwgdmFsdWVJRCA9PSBDU1NWYWx1ZURvd24KKyAgICAgICAgICAgIHx8IHZhbHVlSUQgPT0gQ1NT
VmFsdWVVcCB8fCB2YWx1ZUlEID09IENTU1ZhbHVlQXV0bykKKyAgICAgICAgICAgIHJldHVybiB0
cnVlOworICAgICAgICBicmVhazsKKyAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0TWFycXVlZVN0
eWxlOgorICAgICAgICBpZiAodmFsdWVJRCA9PSBDU1NWYWx1ZU5vbmUgfHwgdmFsdWVJRCA9PSBD
U1NWYWx1ZVNsaWRlIHx8IHZhbHVlSUQgPT0gQ1NTVmFsdWVTY3JvbGwgfHwgdmFsdWVJRCA9PSBD
U1NWYWx1ZUFsdGVybmF0ZSkKKyAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICBicmVh
azsKKyAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0TWF0Y2hOZWFyZXN0TWFpbEJsb2NrcXVvdGVD
b2xvcjogLy8gbm9ybWFsIHwgbWF0Y2gKKyAgICAgICAgaWYgKHZhbHVlSUQgPT0gQ1NTVmFsdWVO
b3JtYWwgfHwgdmFsdWVJRCA9PSBDU1NWYWx1ZU1hdGNoKQorICAgICAgICAgICAgcmV0dXJuIHRy
dWU7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXROYnNwTW9kZTog
Ly8gbm9ybWFsIHwgc3BhY2UKKyAgICAgICAgaWYgKHZhbHVlSUQgPT0gQ1NTVmFsdWVOb3JtYWwg
fHwgdmFsdWVJRCA9PSBDU1NWYWx1ZVNwYWNlKQorICAgICAgICAgICAgcmV0dXJuIHRydWU7Cisg
ICAgICAgIGJyZWFrOworI2lmIEVOQUJMRShPVkVSRkxPV19TQ1JPTExJTkcpCisgICAgY2FzZSBD
U1NQcm9wZXJ0eVdlYmtpdE92ZXJmbG93U2Nyb2xsaW5nOgorICAgICAgICBpZiAodmFsdWVJRCA9
PSBDU1NWYWx1ZUF1dG8gfHwgdmFsdWVJRCA9PSBDU1NWYWx1ZVRvdWNoKQorICAgICAgICAgICAg
cmV0dXJuIHRydWU7CisgICAgICAgIGJyZWFrOworI2VuZGlmCisgICAgY2FzZSBDU1NQcm9wZXJ0
eVdlYmtpdFByaW50Q29sb3JBZGp1c3Q6CisgICAgICAgIGlmICh2YWx1ZUlEID09IENTU1ZhbHVl
RXhhY3QgfHwgdmFsdWVJRCA9PSBDU1NWYWx1ZUVjb25vbXkpCisgICAgICAgICAgICByZXR1cm4g
dHJ1ZTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdFJ0bE9yZGVy
aW5nOgorICAgICAgICBpZiAodmFsdWVJRCA9PSBDU1NWYWx1ZUxvZ2ljYWwgfHwgdmFsdWVJRCA9
PSBDU1NWYWx1ZVZpc3VhbCkKKyAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICBicmVh
azsKKyAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0VGV4dENvbWJpbmU6CisgICAgICAgIGlmICh2
YWx1ZUlEID09IENTU1ZhbHVlTm9uZSB8fCB2YWx1ZUlEID09IENTU1ZhbHVlSG9yaXpvbnRhbCkK
KyAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICBicmVhazsKKyAgICBjYXNlIENTU1By
b3BlcnR5V2Via2l0VGV4dEVtcGhhc2lzUG9zaXRpb246CisgICAgICAgIGlmICh2YWx1ZUlEID09
IENTU1ZhbHVlT3ZlciB8fCB2YWx1ZUlEID09IENTU1ZhbHVlVW5kZXIpCisgICAgICAgICAgICBy
ZXR1cm4gdHJ1ZTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdFRl
eHRTZWN1cml0eToKKyAgICAgICAgLy8gZGlzYyB8IGNpcmNsZSB8IHNxdWFyZSB8IG5vbmUgfCBp
bmhlcml0CisgICAgICAgIGlmICh2YWx1ZUlEID09IENTU1ZhbHVlRGlzYyB8fCB2YWx1ZUlEID09
IENTU1ZhbHVlQ2lyY2xlIHx8IHZhbHVlSUQgPT0gQ1NTVmFsdWVTcXVhcmUgfHwgdmFsdWVJRCA9
PSBDU1NWYWx1ZU5vbmUpCisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgYnJlYWs7
CisgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdFRleHRTaXplQWRqdXN0OgorICAgICAgICBpZiAo
dmFsdWVJRCA9PSBDU1NWYWx1ZUF1dG8gfHwgdmFsdWVJRCA9PSBDU1NWYWx1ZU5vbmUpCisgICAg
ICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBDU1NQcm9wZXJ0
eVdlYmtpdFRyYW5zZm9ybVN0eWxlOgorICAgICAgICBpZiAodmFsdWVJRCA9PSBDU1NWYWx1ZUZs
YXQgfHwgdmFsdWVJRCA9PSBDU1NWYWx1ZVByZXNlcnZlM2QpCisgICAgICAgICAgICByZXR1cm4g
dHJ1ZTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdFVzZXJEcmFn
OiAvLyBhdXRvIHwgbm9uZSB8IGVsZW1lbnQKKyAgICAgICAgaWYgKHZhbHVlSUQgPT0gQ1NTVmFs
dWVBdXRvIHx8IHZhbHVlSUQgPT0gQ1NTVmFsdWVOb25lIHx8IHZhbHVlSUQgPT0gQ1NTVmFsdWVF
bGVtZW50KQorICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgIGJyZWFrOworICAgIGNh
c2UgQ1NTUHJvcGVydHlXZWJraXRVc2VyTW9kaWZ5OiAvLyByZWFkLW9ubHkgfCByZWFkLXdyaXRl
CisgICAgICAgIGlmICh2YWx1ZUlEID09IENTU1ZhbHVlUmVhZE9ubHkgfHwgdmFsdWVJRCA9PSBD
U1NWYWx1ZVJlYWRXcml0ZSB8fCB2YWx1ZUlEID09IENTU1ZhbHVlUmVhZFdyaXRlUGxhaW50ZXh0
T25seSkKKyAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICBicmVhazsKKyAgICBjYXNl
IENTU1Byb3BlcnR5V2Via2l0VXNlclNlbGVjdDogLy8gYXV0byB8IG5vbmUgfCB0ZXh0CisgICAg
ICAgIGlmICh2YWx1ZUlEID09IENTU1ZhbHVlQXV0byB8fCB2YWx1ZUlEID09IENTU1ZhbHVlTm9u
ZSB8fCB2YWx1ZUlEID09IENTU1ZhbHVlVGV4dCkKKyAgICAgICAgICAgIHJldHVybiB0cnVlOwor
ICAgICAgICBicmVhazsKKyAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0V3JhcEZsb3c6CisgICAg
ICAgIGlmICh2YWx1ZUlEID09IENTU1ZhbHVlQXV0byB8fCB2YWx1ZUlEID09IENTU1ZhbHVlQm90
aCB8fCB2YWx1ZUlEID09IENTU1ZhbHVlTGVmdCB8fCB2YWx1ZUlEID09IENTU1ZhbHVlUmlnaHQg
fHwgdmFsdWVJRCA9PSBDU1NWYWx1ZU1heGltdW0gfHwgdmFsdWVJRCA9PSBDU1NWYWx1ZUNsZWFy
KQorICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgQ1NT
UHJvcGVydHlXZWJraXRXcmFwVGhyb3VnaDoKKyAgICAgICAgaWYgKHZhbHVlSUQgPT0gQ1NTVmFs
dWVXcmFwIHx8IHZhbHVlSUQgPT0gQ1NTVmFsdWVOb25lKQorICAgICAgICAgICAgcmV0dXJuIHRy
dWU7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRXcml0aW5nTW9k
ZToKKyAgICAgICAgaWYgKHZhbHVlSUQgPj0gQ1NTVmFsdWVIb3Jpem9udGFsVGIgJiYgdmFsdWVJ
RCA8PSBDU1NWYWx1ZUhvcml6b250YWxCdCkKKyAgICAgICAgICAgIHJldHVybiB0cnVlOworICAg
ICAgICBicmVhazsKKyAgICBjYXNlIENTU1Byb3BlcnR5V2hpdGVTcGFjZTogLy8gbm9ybWFsIHwg
cHJlIHwgbm93cmFwIHwgaW5oZXJpdAorICAgICAgICBpZiAodmFsdWVJRCA9PSBDU1NWYWx1ZU5v
cm1hbCB8fCB2YWx1ZUlEID09IENTU1ZhbHVlUHJlIHx8IHZhbHVlSUQgPT0gQ1NTVmFsdWVQcmVX
cmFwIHx8IHZhbHVlSUQgPT0gQ1NTVmFsdWVQcmVMaW5lIHx8IHZhbHVlSUQgPT0gQ1NTVmFsdWVO
b3dyYXApCisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgYnJlYWs7CisgICAgY2Fz
ZSBDU1NQcm9wZXJ0eVdvcmRCcmVhazogLy8gbm9ybWFsIHwgYnJlYWstYWxsIHwgYnJlYWstd29y
ZCAodGhpcyBpcyBhIGN1c3RvbSBleHRlbnNpb24pCisgICAgICAgIGlmICh2YWx1ZUlEID09IENT
U1ZhbHVlTm9ybWFsIHx8IHZhbHVlSUQgPT0gQ1NTVmFsdWVCcmVha0FsbCB8fCB2YWx1ZUlEID09
IENTU1ZhbHVlQnJlYWtXb3JkKQorICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgIGJy
ZWFrOworICAgIGNhc2UgQ1NTUHJvcGVydHlXb3JkV3JhcDogLy8gbm9ybWFsIHwgYnJlYWstd29y
ZAorICAgICAgICBpZiAodmFsdWVJRCA9PSBDU1NWYWx1ZU5vcm1hbCB8fCB2YWx1ZUlEID09IENT
U1ZhbHVlQnJlYWtXb3JkKQorICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgIGJyZWFr
OworICAgIGRlZmF1bHQ6CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisgICAgcmV0dXJu
IGZhbHNlOworfQorCitzdGF0aWMgaW5saW5lIGJvb2wgaXNLZXl3b3JkUHJvcGVydHlJRChpbnQg
cHJvcGVydHlJZCkKK3sKKyAgICBzd2l0Y2ggKHByb3BlcnR5SWQpIHsKKyAgICBjYXNlIENTU1By
b3BlcnR5Qm9yZGVyQm90dG9tU3R5bGU6CisgICAgY2FzZSBDU1NQcm9wZXJ0eUJvcmRlckNvbGxh
cHNlOgorICAgIGNhc2UgQ1NTUHJvcGVydHlCb3JkZXJMZWZ0U3R5bGU6CisgICAgY2FzZSBDU1NQ
cm9wZXJ0eUJvcmRlclJpZ2h0U3R5bGU6CisgICAgY2FzZSBDU1NQcm9wZXJ0eUJvcmRlclRvcFN0
eWxlOgorICAgIGNhc2UgQ1NTUHJvcGVydHlCb3hTaXppbmc6CisgICAgY2FzZSBDU1NQcm9wZXJ0
eUNhcHRpb25TaWRlOgorICAgIGNhc2UgQ1NTUHJvcGVydHlDbGVhcjoKKyAgICBjYXNlIENTU1By
b3BlcnR5RGlyZWN0aW9uOgorICAgIGNhc2UgQ1NTUHJvcGVydHlEaXNwbGF5OgorICAgIGNhc2Ug
Q1NTUHJvcGVydHlFbXB0eUNlbGxzOgorICAgIGNhc2UgQ1NTUHJvcGVydHlGbG9hdDoKKyAgICBj
YXNlIENTU1Byb3BlcnR5Rm9udFN0eWxlOgorICAgIGNhc2UgQ1NTUHJvcGVydHlJbWFnZVJlbmRl
cmluZzoKKyAgICBjYXNlIENTU1Byb3BlcnR5TGlzdFN0eWxlUG9zaXRpb246CisgICAgY2FzZSBD
U1NQcm9wZXJ0eUxpc3RTdHlsZVR5cGU6CisgICAgY2FzZSBDU1NQcm9wZXJ0eU91dGxpbmVTdHls
ZToKKyAgICBjYXNlIENTU1Byb3BlcnR5T3ZlcmZsb3dYOgorICAgIGNhc2UgQ1NTUHJvcGVydHlP
dmVyZmxvd1k6CisgICAgY2FzZSBDU1NQcm9wZXJ0eVBvaW50ZXJFdmVudHM6CisgICAgY2FzZSBD
U1NQcm9wZXJ0eVBvc2l0aW9uOgorICAgIGNhc2UgQ1NTUHJvcGVydHlSZXNpemU6CisgICAgY2Fz
ZSBDU1NQcm9wZXJ0eVNwZWFrOgorICAgIGNhc2UgQ1NTUHJvcGVydHlUYWJsZUxheW91dDoKKyAg
ICBjYXNlIENTU1Byb3BlcnR5VGV4dExpbmVUaHJvdWdoTW9kZToKKyAgICBjYXNlIENTU1Byb3Bl
cnR5VGV4dExpbmVUaHJvdWdoU3R5bGU6CisgICAgY2FzZSBDU1NQcm9wZXJ0eVRleHRPdmVyZmxv
dzoKKyAgICBjYXNlIENTU1Byb3BlcnR5VGV4dE92ZXJsaW5lTW9kZToKKyAgICBjYXNlIENTU1By
b3BlcnR5VGV4dE92ZXJsaW5lU3R5bGU6CisgICAgY2FzZSBDU1NQcm9wZXJ0eVRleHRSZW5kZXJp
bmc6CisgICAgY2FzZSBDU1NQcm9wZXJ0eVRleHRUcmFuc2Zvcm06CisgICAgY2FzZSBDU1NQcm9w
ZXJ0eVRleHRVbmRlcmxpbmVNb2RlOgorICAgIGNhc2UgQ1NTUHJvcGVydHlUZXh0VW5kZXJsaW5l
U3R5bGU6CisgICAgY2FzZSBDU1NQcm9wZXJ0eVZpc2liaWxpdHk6CisgICAgY2FzZSBDU1NQcm9w
ZXJ0eVdlYmtpdEFwcGVhcmFuY2U6CisgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdEJhY2tmYWNl
VmlzaWJpbGl0eToKKyAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0Qm9yZGVyQWZ0ZXJTdHlsZToK
KyAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0Qm9yZGVyQmVmb3JlU3R5bGU6CisgICAgY2FzZSBD
U1NQcm9wZXJ0eVdlYmtpdEJvcmRlckVuZFN0eWxlOgorICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJr
aXRCb3JkZXJGaXQ6CisgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdEJvcmRlclN0YXJ0U3R5bGU6
CisgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdEJveEFsaWduOgorICAgIGNhc2UgQ1NTUHJvcGVy
dHlXZWJraXRCb3hEaXJlY3Rpb246CisgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdEJveExpbmVz
OgorICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRCb3hPcmllbnQ6CisgICAgY2FzZSBDU1NQcm9w
ZXJ0eVdlYmtpdEJveFBhY2s6CisgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdENvbG9yQ29ycmVj
dGlvbjoKKyAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0Q29sdW1uUnVsZVN0eWxlOgorICAgIGNh
c2UgQ1NTUHJvcGVydHlXZWJraXRGbGV4QWxpZ246CisgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtp
dEZsZXhEaXJlY3Rpb246CisgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdEZsZXhJdGVtQWxpZ246
CisgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdEZsZXhQYWNrOgorICAgIGNhc2UgQ1NTUHJvcGVy
dHlXZWJraXRGbGV4V3JhcDoKKyAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0Rm9udEtlcm5pbmc6
CisgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdEZvbnRTbW9vdGhpbmc6CisgICAgY2FzZSBDU1NQ
cm9wZXJ0eVdlYmtpdEh5cGhlbnM6CisgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdExpbmVBbGln
bjoKKyAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0TGluZUJyZWFrOgorICAgIGNhc2UgQ1NTUHJv
cGVydHlXZWJraXRMaW5lU25hcDoKKyAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0TWFyZ2luQWZ0
ZXJDb2xsYXBzZToKKyAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0TWFyZ2luQmVmb3JlQ29sbGFw
c2U6CisgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdE1hcmdpbkJvdHRvbUNvbGxhcHNlOgorICAg
IGNhc2UgQ1NTUHJvcGVydHlXZWJraXRNYXJnaW5Ub3BDb2xsYXBzZToKKyAgICBjYXNlIENTU1By
b3BlcnR5V2Via2l0TWFycXVlZURpcmVjdGlvbjoKKyAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0
TWFycXVlZVN0eWxlOgorICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRNYXRjaE5lYXJlc3RNYWls
QmxvY2txdW90ZUNvbG9yOgorICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXROYnNwTW9kZToKKyNp
ZiBFTkFCTEUoT1ZFUkZMT1dfU0NST0xMSU5HKQorICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRP
dmVyZmxvd1Njcm9sbGluZzoKKyNlbmRpZgorICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRQcmlu
dENvbG9yQWRqdXN0OgorICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRSdGxPcmRlcmluZzoKKyAg
ICBjYXNlIENTU1Byb3BlcnR5V2Via2l0VGV4dENvbWJpbmU6CisgICAgY2FzZSBDU1NQcm9wZXJ0
eVdlYmtpdFRleHRFbXBoYXNpc1Bvc2l0aW9uOgorICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRU
ZXh0U2VjdXJpdHk6CisgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdFRleHRTaXplQWRqdXN0Ogor
ICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRUcmFuc2Zvcm1TdHlsZToKKyAgICBjYXNlIENTU1By
b3BlcnR5V2Via2l0VXNlckRyYWc6CisgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdFVzZXJNb2Rp
Znk6CisgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdFVzZXJTZWxlY3Q6CisgICAgY2FzZSBDU1NQ
cm9wZXJ0eVdlYmtpdFdyYXBGbG93OgorICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRXcmFwVGhy
b3VnaDoKKyAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0V3JpdGluZ01vZGU6CisgICAgY2FzZSBD
U1NQcm9wZXJ0eVdoaXRlU3BhY2U6CisgICAgY2FzZSBDU1NQcm9wZXJ0eVdvcmRCcmVhazoKKyAg
ICBjYXNlIENTU1Byb3BlcnR5V29yZFdyYXA6CisgICAgICAgIHJldHVybiB0cnVlOworICAgIGRl
ZmF1bHQ6CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9Cit9CisKK3N0YXRpYyBib29sIHBh
cnNlS2V5d29yZFZhbHVlKFN0eWxlUHJvcGVydHlTZXQqIGRlY2xhcmF0aW9uLCBpbnQgcHJvcGVy
dHlJZCwgY29uc3QgU3RyaW5nJiBzdHJpbmcsIGJvb2wgaW1wb3J0YW50LCBDU1NTdHlsZVNoZWV0
KiBjb250ZXh0U3R5bGVTaGVldCkKK3sKKyAgICBpZiAoc3RyaW5nLmlzRW1wdHkoKSkKKyAgICAg
ICAgcmV0dXJuIGZhbHNlOworCisgICAgaWYgKCFpc0tleXdvcmRQcm9wZXJ0eUlEKHByb3BlcnR5
SWQpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBDU1NQYXJzZXJTdHJpbmcgY3NzU3Ry
aW5nOworICAgIGNzc1N0cmluZy5jaGFyYWN0ZXJzID0gY29uc3RfY2FzdDxVQ2hhcio+KHN0cmlu
Zy5jaGFyYWN0ZXJzKCkpOworICAgIGNzc1N0cmluZy5sZW5ndGggPSBzdHJpbmcubGVuZ3RoKCk7
CisgICAgaW50IHZhbHVlSUQgPSBjc3NWYWx1ZUtleXdvcmRJRChjc3NTdHJpbmcpOworCisgICAg
aWYgKCF2YWx1ZUlEKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBEb2N1bWVudCogZG9j
dW1lbnQgPSBjb250ZXh0U3R5bGVTaGVldC0+ZmluZERvY3VtZW50KCk7CisgICAgUmVmUHRyPENT
U1ZhbHVlPiB2YWx1ZTsKKyAgICBDU1NWYWx1ZVBvb2wqIGNzc1ZhbHVlUG9vbCA9IGRvY3VtZW50
ID8gZG9jdW1lbnQtPmNzc1ZhbHVlUG9vbCgpLmdldCgpIDogMDsKKyAgICBpZiAodmFsdWVJRCA9
PSBDU1NWYWx1ZUluaGVyaXQpCisgICAgICAgIHZhbHVlID0gY3NzVmFsdWVQb29sID8gY3NzVmFs
dWVQb29sLT5jcmVhdGVJbmhlcml0ZWRWYWx1ZSgpIDogQ1NTSW5oZXJpdGVkVmFsdWU6OmNyZWF0
ZSgpOworICAgIGlmICh2YWx1ZUlEID09IENTU1ZhbHVlSW5pdGlhbCkKKyAgICAgICAgdmFsdWUg
PSBjc3NWYWx1ZVBvb2wgPyBjc3NWYWx1ZVBvb2wtPmNyZWF0ZUV4cGxpY2l0SW5pdGlhbFZhbHVl
KCkgOiBDU1NJbml0aWFsVmFsdWU6OmNyZWF0ZUV4cGxpY2l0KCk7CisKKyAgICBpZiAoIXZhbHVl
ICYmICFpc1ZhbGlkS2V5d29yZFByb3BlcnR5QW5kVmFsdWUocHJvcGVydHlJZCwgdmFsdWVJRCkp
CisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIGlmICghdmFsdWUpCisgICAgICAgIHZhbHVl
ID0gZG9jdW1lbnQgPyBjc3NWYWx1ZVBvb2wtPmNyZWF0ZUlkZW50aWZpZXJWYWx1ZSh2YWx1ZUlE
KSA6IENTU1ByaW1pdGl2ZVZhbHVlOjpjcmVhdGVJZGVudGlmaWVyKHZhbHVlSUQpOworICAgIGRl
Y2xhcmF0aW9uLT5hZGRQYXJzZWRQcm9wZXJ0eShDU1NQcm9wZXJ0eShwcm9wZXJ0eUlkLCB2YWx1
ZS5yZWxlYXNlKCksIGltcG9ydGFudCkpOworICAgIHJldHVybiB0cnVlOworfQorCiBQYXNzUmVm
UHRyPENTU1ZhbHVlTGlzdD4gQ1NTUGFyc2VyOjpwYXJzZUZvbnRGYWNlVmFsdWUoY29uc3QgQXRv
bWljU3RyaW5nJiBzdHJpbmcsIENTU1N0eWxlU2hlZXQqIGNvbnRleHRTdHlsZVNoZWV0KQogewog
ICAgIFJlZlB0cjxTdHlsZVByb3BlcnR5U2V0PiBkdW1teVN0eWxlID0gU3R5bGVQcm9wZXJ0eVNl
dDo6Y3JlYXRlKCk7CkBAIC00OTMsNiArOTM1LDggQEAgYm9vbCBDU1NQYXJzZXI6OnBhcnNlVmFs
dWUoU3R5bGVQcm9wZXJ0eVNldCogZGVjbGFyYXRpb24sIGludCBwcm9wZXJ0eUlkLCBjb25zdAog
ICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICBpZiAocGFyc2VDb2xvclZhbHVlKGRlY2xhcmF0aW9u
LCBwcm9wZXJ0eUlkLCBzdHJpbmcsIGltcG9ydGFudCwgc3RyaWN0LCBjb250ZXh0U3R5bGVTaGVl
dCkpCiAgICAgICAgIHJldHVybiB0cnVlOworICAgIGlmIChwYXJzZUtleXdvcmRWYWx1ZShkZWNs
YXJhdGlvbiwgcHJvcGVydHlJZCwgc3RyaW5nLCBpbXBvcnRhbnQsIGNvbnRleHRTdHlsZVNoZWV0
KSkKKyAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgQ1NTUGFyc2VyIHBhcnNlcihzdHJpY3QpOwog
ICAgIHJldHVybiBwYXJzZXIucGFyc2VWYWx1ZShkZWNsYXJhdGlvbiwgcHJvcGVydHlJZCwgc3Ry
aW5nLCBpbXBvcnRhbnQsIGNvbnRleHRTdHlsZVNoZWV0KTsKIH0KQEAgLTkyNyw2ICsxMzcxLDE1
IEBAIGJvb2wgQ1NTUGFyc2VyOjpwYXJzZVZhbHVlKGludCBwcm9wSWQsIGJvb2wgaW1wb3J0YW50
KQogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CiAKKyAgICBpZiAoaWQgJiYgaXNLZXl3b3Jk
UHJvcGVydHlJRChwcm9wSWQpKSB7CisgICAgICAgIGlmICghaXNWYWxpZEtleXdvcmRQcm9wZXJ0
eUFuZFZhbHVlKHByb3BJZCwgaWQpKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAg
ICBpZiAobV92YWx1ZUxpc3QtPm5leHQoKSAmJiAhaW5TaG9ydGhhbmQoKSkKKyAgICAgICAgICAg
IHJldHVybiBmYWxzZTsKKyAgICAgICAgYWRkUHJvcGVydHkocHJvcElkLCAgY3NzVmFsdWVQb29s
KCktPmNyZWF0ZUlkZW50aWZpZXJWYWx1ZShpZCksIGltcG9ydGFudCk7CisgICAgICAgIHJldHVy
biB0cnVlOworICAgIH0KKwogICAgIGJvb2wgdmFsaWRQcmltaXRpdmUgPSBmYWxzZTsKICAgICBS
ZWZQdHI8Q1NTVmFsdWU+IHBhcnNlZFZhbHVlOwogCkBAIC05NzUsMTQgKzE0MjgsNiBAQCBib29s
IENTU1BhcnNlcjo6cGFyc2VWYWx1ZShpbnQgcHJvcElkLCBib29sIGltcG9ydGFudCkKICAgICAg
ICAgfQogICAgICAgICBicmVhazsKIAotICAgIGNhc2UgQ1NTUHJvcGVydHlQb3NpdGlvbjogICAg
ICAgICAgICAgLy8gc3RhdGljIHwgcmVsYXRpdmUgfCBhYnNvbHV0ZSB8IGZpeGVkIHwgaW5oZXJp
dAotICAgICAgICBpZiAoaWQgPT0gQ1NTVmFsdWVTdGF0aWMKLSAgICAgICAgICAgIHx8IGlkID09
IENTU1ZhbHVlUmVsYXRpdmUKLSAgICAgICAgICAgIHx8IGlkID09IENTU1ZhbHVlQWJzb2x1dGUK
LSAgICAgICAgICAgIHx8IGlkID09IENTU1ZhbHVlRml4ZWQpCi0gICAgICAgICAgICB2YWxpZFBy
aW1pdGl2ZSA9IHRydWU7Ci0gICAgICAgIGJyZWFrOwotCiAgICAgY2FzZSBDU1NQcm9wZXJ0eVBh
Z2VCcmVha0FmdGVyOiAgICAgICAvLyBhdXRvIHwgYWx3YXlzIHwgYXZvaWQgfCBsZWZ0IHwgcmln
aHQgfCBpbmhlcml0CiAgICAgY2FzZSBDU1NQcm9wZXJ0eVBhZ2VCcmVha0JlZm9yZToKICAgICBj
YXNlIENTU1Byb3BlcnR5V2Via2l0Q29sdW1uQnJlYWtBZnRlcjoKQEAgLTEwMDQsMjUgKzE0NDks
MTAgQEAgYm9vbCBDU1NQYXJzZXI6OnBhcnNlVmFsdWUoaW50IHByb3BJZCwgYm9vbCBpbXBvcnRh
bnQpCiAgICAgICAgICAgICB2YWxpZFByaW1pdGl2ZSA9IChwcm9wSWQgPT0gQ1NTUHJvcGVydHlX
ZWJraXRSZWdpb25CcmVha0luc2lkZSkgPyBjc3NSZWdpb25zRW5hYmxlZCgpIDogdHJ1ZTsKICAg
ICAgICAgYnJlYWs7CiAKLSAgICBjYXNlIENTU1Byb3BlcnR5RW1wdHlDZWxsczogICAgICAgICAg
Ly8gc2hvdyB8IGhpZGUgfCBpbmhlcml0Ci0gICAgICAgIGlmIChpZCA9PSBDU1NWYWx1ZVNob3cK
LSAgICAgICAgICAgIHx8IGlkID09IENTU1ZhbHVlSGlkZSkKLSAgICAgICAgICAgIHZhbGlkUHJp
bWl0aXZlID0gdHJ1ZTsKLSAgICAgICAgYnJlYWs7Ci0KICAgICBjYXNlIENTU1Byb3BlcnR5Q29u
dGVudDogICAgICAgICAgICAgIC8vIFsgPHN0cmluZz4gfCA8dXJpPiB8IDxjb3VudGVyPiB8IGF0
dHIoWCkgfCBvcGVuLXF1b3RlIHwKICAgICAgICAgLy8gY2xvc2UtcXVvdGUgfCBuby1vcGVuLXF1
b3RlIHwgbm8tY2xvc2UtcXVvdGUgXSsgfCBpbmhlcml0CiAgICAgICAgIHJldHVybiBwYXJzZUNv
bnRlbnQocHJvcElkLCBpbXBvcnRhbnQpOwogCi0gICAgY2FzZSBDU1NQcm9wZXJ0eVdoaXRlU3Bh
Y2U6ICAgICAgICAgIC8vIG5vcm1hbCB8IHByZSB8IG5vd3JhcCB8IGluaGVyaXQKLSAgICAgICAg
aWYgKGlkID09IENTU1ZhbHVlTm9ybWFsCi0gICAgICAgICAgICB8fCBpZCA9PSBDU1NWYWx1ZVBy
ZQotICAgICAgICAgICAgfHwgaWQgPT0gQ1NTVmFsdWVQcmVXcmFwCi0gICAgICAgICAgICB8fCBp
ZCA9PSBDU1NWYWx1ZVByZUxpbmUKLSAgICAgICAgICAgIHx8IGlkID09IENTU1ZhbHVlTm93cmFw
KQotICAgICAgICAgICAgdmFsaWRQcmltaXRpdmUgPSB0cnVlOwotICAgICAgICBicmVhazsKLQog
ICAgIGNhc2UgQ1NTUHJvcGVydHlDbGlwOiAgICAgICAgICAgICAgICAgLy8gPHNoYXBlPiB8IGF1
dG8gfCBpbmhlcml0CiAgICAgICAgIGlmIChpZCA9PSBDU1NWYWx1ZUF1dG8pCiAgICAgICAgICAg
ICB2YWxpZFByaW1pdGl2ZSA9IHRydWU7CkBAIC0xMDMzLDIyICsxNDYzLDYgQEAgYm9vbCBDU1NQ
YXJzZXI6OnBhcnNlVmFsdWUoaW50IHByb3BJZCwgYm9vbCBpbXBvcnRhbnQpCiAgICAgLyogU3Rh
cnQgb2Ygc3VwcG9ydGVkIENTUyBwcm9wZXJ0aWVzIHdpdGggdmFsaWRhdGlvbi4gVGhpcyBpcyBu
ZWVkZWQgZm9yIHBhcnNlU2hvcnRoYW5kIHRvIHdvcmsKICAgICAgKiBjb3JyZWN0bHkgYW5kIGFs
bG93cyBvcHRpbWl6YXRpb24gaW4gV2ViQ29yZTo6YXBwbHlSdWxlKC4uKQogICAgICAqLwotICAg
IGNhc2UgQ1NTUHJvcGVydHlDYXB0aW9uU2lkZTogICAgICAgICAvLyB0b3AgfCBib3R0b20gfCBs
ZWZ0IHwgcmlnaHQgfCBpbmhlcml0Ci0gICAgICAgIGlmIChpZCA9PSBDU1NWYWx1ZUxlZnQgfHwg
aWQgPT0gQ1NTVmFsdWVSaWdodCB8fAotICAgICAgICAgICAgaWQgPT0gQ1NTVmFsdWVUb3AgfHwg
aWQgPT0gQ1NTVmFsdWVCb3R0b20pCi0gICAgICAgICAgICB2YWxpZFByaW1pdGl2ZSA9IHRydWU7
Ci0gICAgICAgIGJyZWFrOwotCi0gICAgY2FzZSBDU1NQcm9wZXJ0eUJvcmRlckNvbGxhcHNlOiAg
ICAgIC8vIGNvbGxhcHNlIHwgc2VwYXJhdGUgfCBpbmhlcml0Ci0gICAgICAgIGlmIChpZCA9PSBD
U1NWYWx1ZUNvbGxhcHNlIHx8IGlkID09IENTU1ZhbHVlU2VwYXJhdGUpCi0gICAgICAgICAgICB2
YWxpZFByaW1pdGl2ZSA9IHRydWU7Ci0gICAgICAgIGJyZWFrOwotCi0gICAgY2FzZSBDU1NQcm9w
ZXJ0eVZpc2liaWxpdHk6ICAgICAgICAgICAvLyB2aXNpYmxlIHwgaGlkZGVuIHwgY29sbGFwc2Ug
fCBpbmhlcml0Ci0gICAgICAgIGlmIChpZCA9PSBDU1NWYWx1ZVZpc2libGUgfHwgaWQgPT0gQ1NT
VmFsdWVIaWRkZW4gfHwgaWQgPT0gQ1NTVmFsdWVDb2xsYXBzZSkKLSAgICAgICAgICAgIHZhbGlk
UHJpbWl0aXZlID0gdHJ1ZTsKLSAgICAgICAgYnJlYWs7Ci0KICAgICBjYXNlIENTU1Byb3BlcnR5
T3ZlcmZsb3c6IHsKICAgICAgICAgU2hvcnRoYW5kU2NvcGUgc2NvcGUodGhpcywgcHJvcElkKTsK
ICAgICAgICAgaWYgKG51bSAhPSAxIHx8ICFwYXJzZVZhbHVlKENTU1Byb3BlcnR5T3ZlcmZsb3dY
LCBpbXBvcnRhbnQpKQpAQCAtMTA1Nyw1OSArMTQ3MSw2IEBAIGJvb2wgQ1NTUGFyc2VyOjpwYXJz
ZVZhbHVlKGludCBwcm9wSWQsIGJvb2wgaW1wb3J0YW50KQogICAgICAgICBhZGRQcm9wZXJ0eShD
U1NQcm9wZXJ0eU92ZXJmbG93WSwgdmFsdWUsIGltcG9ydGFudCk7CiAgICAgICAgIHJldHVybiB0
cnVlOwogICAgIH0KLSAgICBjYXNlIENTU1Byb3BlcnR5T3ZlcmZsb3dYOgotICAgIGNhc2UgQ1NT
UHJvcGVydHlPdmVyZmxvd1k6ICAgICAgICAgICAvLyB2aXNpYmxlIHwgaGlkZGVuIHwgc2Nyb2xs
IHwgYXV0byB8IG1hcnF1ZWUgfCBvdmVybGF5IHwgaW5oZXJpdAotICAgICAgICBpZiAoaWQgPT0g
Q1NTVmFsdWVWaXNpYmxlIHx8IGlkID09IENTU1ZhbHVlSGlkZGVuIHx8IGlkID09IENTU1ZhbHVl
U2Nyb2xsIHx8IGlkID09IENTU1ZhbHVlQXV0byB8fAotICAgICAgICAgICAgaWQgPT0gQ1NTVmFs
dWVPdmVybGF5IHx8IGlkID09IENTU1ZhbHVlV2Via2l0TWFycXVlZSkKLSAgICAgICAgICAgIHZh
bGlkUHJpbWl0aXZlID0gdHJ1ZTsKLSAgICAgICAgYnJlYWs7Ci0KLSAgICBjYXNlIENTU1Byb3Bl
cnR5TGlzdFN0eWxlUG9zaXRpb246ICAvLyBpbnNpZGUgfCBvdXRzaWRlIHwgaW5oZXJpdAotICAg
ICAgICBpZiAoaWQgPT0gQ1NTVmFsdWVJbnNpZGUgfHwgaWQgPT0gQ1NTVmFsdWVPdXRzaWRlKQot
ICAgICAgICAgICAgdmFsaWRQcmltaXRpdmUgPSB0cnVlOwotICAgICAgICBicmVhazsKLQotICAg
IGNhc2UgQ1NTUHJvcGVydHlMaXN0U3R5bGVUeXBlOgotICAgICAgICAvLyBTZWUgc2VjdGlvbiBD
U1NfUFJPUF9MSVNUX1NUWUxFX1RZUEUgb2YgZmlsZSBDU1NWYWx1ZUtleXdvcmRzLmluCi0gICAg
ICAgIC8vIGZvciB0aGUgbGlzdCBvZiBzdXBwb3J0ZWQgbGlzdC1zdHlsZS10eXBlcy4KLSAgICAg
ICAgaWYgKChpZCA+PSBDU1NWYWx1ZURpc2MgJiYgaWQgPD0gQ1NTVmFsdWVLYXRha2FuYUlyb2hh
KSB8fCBpZCA9PSBDU1NWYWx1ZU5vbmUpCi0gICAgICAgICAgICB2YWxpZFByaW1pdGl2ZSA9IHRy
dWU7Ci0gICAgICAgIGJyZWFrOwotCi0gICAgY2FzZSBDU1NQcm9wZXJ0eURpc3BsYXk6Ci0gICAg
ICAgIC8vIGlubGluZSB8IGJsb2NrIHwgbGlzdC1pdGVtIHwgcnVuLWluIHwgaW5saW5lLWJsb2Nr
IHwgdGFibGUgfAotICAgICAgICAvLyBpbmxpbmUtdGFibGUgfCB0YWJsZS1yb3ctZ3JvdXAgfCB0
YWJsZS1oZWFkZXItZ3JvdXAgfCB0YWJsZS1mb290ZXItZ3JvdXAgfCB0YWJsZS1yb3cgfAotICAg
ICAgICAvLyB0YWJsZS1jb2x1bW4tZ3JvdXAgfCB0YWJsZS1jb2x1bW4gfCB0YWJsZS1jZWxsIHwg
dGFibGUtY2FwdGlvbiB8IC13ZWJraXQtYm94IHwgLXdlYmtpdC1pbmxpbmUtYm94IHwgbm9uZSB8
IGluaGVyaXQKLSAgICAgICAgLy8gLXdlYmtpdC1mbGV4Ym94IHwgLXdlYmtpdC1pbmxpbmUtZmxl
eGJveCB8IC13ZWJraXQtZ3JpZCB8IC13ZWJraXQtaW5saW5lLWdyaWQKLSAgICAgICAgaWYgKChp
ZCA+PSBDU1NWYWx1ZUlubGluZSAmJiBpZCA8PSBDU1NWYWx1ZVdlYmtpdElubGluZUZsZXhib3gp
IHx8IGlkID09IENTU1ZhbHVlTm9uZSkKLSAgICAgICAgICAgIHZhbGlkUHJpbWl0aXZlID0gdHJ1
ZTsKLSNpZiBFTkFCTEUoQ1NTX0dSSURfTEFZT1VUKQotICAgICAgICBpZiAoaWQgPT0gQ1NTVmFs
dWVXZWJraXRHcmlkIHx8IGlkID09IENTU1ZhbHVlV2Via2l0SW5saW5lR3JpZCkKLSAgICAgICAg
ICAgIHZhbGlkUHJpbWl0aXZlID0gdHJ1ZTsKLSNlbmRpZgotICAgICAgICBicmVhazsKLQotICAg
IGNhc2UgQ1NTUHJvcGVydHlEaXJlY3Rpb246ICAgICAgICAgICAgLy8gbHRyIHwgcnRsIHwgaW5o
ZXJpdAotICAgICAgICBpZiAoaWQgPT0gQ1NTVmFsdWVMdHIgfHwgaWQgPT0gQ1NTVmFsdWVSdGwp
Ci0gICAgICAgICAgICB2YWxpZFByaW1pdGl2ZSA9IHRydWU7Ci0gICAgICAgIGJyZWFrOwotCi0g
ICAgY2FzZSBDU1NQcm9wZXJ0eVRleHRUcmFuc2Zvcm06ICAgICAgIC8vIGNhcGl0YWxpemUgfCB1
cHBlcmNhc2UgfCBsb3dlcmNhc2UgfCBub25lIHwgaW5oZXJpdAotICAgICAgICBpZiAoKGlkID49
IENTU1ZhbHVlQ2FwaXRhbGl6ZSAmJiBpZCA8PSBDU1NWYWx1ZUxvd2VyY2FzZSkgfHwgaWQgPT0g
Q1NTVmFsdWVOb25lKQotICAgICAgICAgICAgdmFsaWRQcmltaXRpdmUgPSB0cnVlOwotICAgICAg
ICBicmVhazsKLQotICAgIGNhc2UgQ1NTUHJvcGVydHlGbG9hdDogICAgICAgICAgICAgICAgLy8g
bGVmdCB8IHJpZ2h0IHwgbm9uZSB8IHBvc2l0aW9uZWQgfCBjZW50ZXIgKGZvciBidWdneSBDU1Ms
IG1hcHMgdG8gbm9uZSkKLSAgICAgICAgaWYgKGlkID09IENTU1ZhbHVlTGVmdCB8fCBpZCA9PSBD
U1NWYWx1ZVJpZ2h0Ci0gICAgICAgICAgICB8fCBpZCA9PSBDU1NWYWx1ZU5vbmUgfHwgaWQgPT0g
Q1NTVmFsdWVDZW50ZXIgfHwgaWQgPT0gQ1NTVmFsdWVXZWJraXRQb3NpdGlvbmVkKQotICAgICAg
ICAgICAgdmFsaWRQcmltaXRpdmUgPSB0cnVlOwotICAgICAgICBicmVhazsKLQotICAgIGNhc2Ug
Q1NTUHJvcGVydHlDbGVhcjogICAgICAgICAgICAgICAgLy8gbm9uZSB8IGxlZnQgfCByaWdodCB8
IGJvdGggfCBpbmhlcml0Ci0gICAgICAgIGlmIChpZCA9PSBDU1NWYWx1ZU5vbmUgfHwgaWQgPT0g
Q1NTVmFsdWVMZWZ0Ci0gICAgICAgICAgICB8fCBpZCA9PSBDU1NWYWx1ZVJpZ2h0IHx8IGlkID09
IENTU1ZhbHVlQm90aCkKLSAgICAgICAgICAgIHZhbGlkUHJpbWl0aXZlID0gdHJ1ZTsKLSAgICAg
ICAgYnJlYWs7CiAKICAgICBjYXNlIENTU1Byb3BlcnR5VGV4dEFsaWduOgogICAgICAgICAvLyBs
ZWZ0IHwgcmlnaHQgfCBjZW50ZXIgfCBqdXN0aWZ5IHwgd2Via2l0X2xlZnQgfCB3ZWJraXRfcmln
aHQgfCB3ZWJraXRfY2VudGVyIHwgd2Via2l0X21hdGNoX3BhcmVudCB8CkBAIC0xMTE5LDI0ICsx
NDgwLDYgQEAgYm9vbCBDU1NQYXJzZXI6OnBhcnNlVmFsdWUoaW50IHByb3BJZCwgYm9vbCBpbXBv
cnRhbnQpCiAgICAgICAgICAgICB2YWxpZFByaW1pdGl2ZSA9IHRydWU7CiAgICAgICAgIGJyZWFr
OwogCi0gICAgY2FzZSBDU1NQcm9wZXJ0eU91dGxpbmVTdHlsZTogICAgICAgIC8vICg8Ym9yZGVy
LXN0eWxlPiBleGNlcHQgaGlkZGVuKSB8IGF1dG8gfCBpbmhlcml0Ci0gICAgICAgIGlmIChpZCA9
PSBDU1NWYWx1ZUF1dG8gfHwgaWQgPT0gQ1NTVmFsdWVOb25lIHx8IChpZCA+PSBDU1NWYWx1ZUlu
c2V0ICYmIGlkIDw9IENTU1ZhbHVlRG91YmxlKSkKLSAgICAgICAgICAgIHZhbGlkUHJpbWl0aXZl
ID0gdHJ1ZTsKLSAgICAgICAgYnJlYWs7Ci0KLSAgICBjYXNlIENTU1Byb3BlcnR5Qm9yZGVyVG9w
U3R5bGU6ICAgICAvLy8vIDxib3JkZXItc3R5bGU+IHwgaW5oZXJpdAotICAgIGNhc2UgQ1NTUHJv
cGVydHlCb3JkZXJSaWdodFN0eWxlOiAgIC8vICAgRGVmaW5lZCBhczogICAgbm9uZSB8IGhpZGRl
biB8IGRvdHRlZCB8IGRhc2hlZCB8Ci0gICAgY2FzZSBDU1NQcm9wZXJ0eUJvcmRlckJvdHRvbVN0
eWxlOiAgLy8gICBzb2xpZCB8IGRvdWJsZSB8IGdyb292ZSB8IHJpZGdlIHwgaW5zZXQgfCBvdXRz
ZXQKLSAgICBjYXNlIENTU1Byb3BlcnR5Qm9yZGVyTGVmdFN0eWxlOgotICAgIGNhc2UgQ1NTUHJv
cGVydHlXZWJraXRCb3JkZXJTdGFydFN0eWxlOgotICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRC
b3JkZXJFbmRTdHlsZToKLSAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0Qm9yZGVyQmVmb3JlU3R5
bGU6Ci0gICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdEJvcmRlckFmdGVyU3R5bGU6Ci0gICAgY2Fz
ZSBDU1NQcm9wZXJ0eVdlYmtpdENvbHVtblJ1bGVTdHlsZToKLSAgICAgICAgaWYgKGlkID49IENT
U1ZhbHVlTm9uZSAmJiBpZCA8PSBDU1NWYWx1ZURvdWJsZSkKLSAgICAgICAgICAgIHZhbGlkUHJp
bWl0aXZlID0gdHJ1ZTsKLSAgICAgICAgYnJlYWs7Ci0KICAgICBjYXNlIENTU1Byb3BlcnR5Rm9u
dFdlaWdodDogIC8vIG5vcm1hbCB8IGJvbGQgfCBib2xkZXIgfCBsaWdodGVyIHwgMTAwIHwgMjAw
IHwgMzAwIHwgNDAwIHwgNTAwIHwgNjAwIHwgNzAwIHwgODAwIHwgOTAwIHwgaW5oZXJpdAogICAg
ICAgICByZXR1cm4gcGFyc2VGb250V2VpZ2h0KGltcG9ydGFudCk7CiAKQEAgLTEzNTEsMjEgKzE2
OTQsNiBAQCBib29sIENTU1BhcnNlcjo6cGFyc2VWYWx1ZShpbnQgcHJvcElkLCBib29sIGltcG9y
dGFudCkKICAgICAgICAgICAgIHZhbGlkUHJpbWl0aXZlID0gdmFsaWRVbml0KHZhbHVlLCBGTGVu
Z3RoLCBtX3N0cmljdCk7CiAgICAgICAgIGJyZWFrOwogCi0gICAgY2FzZSBDU1NQcm9wZXJ0eVdv
cmRCcmVhazogICAgICAgICAgLy8gbm9ybWFsIHwgYnJlYWstYWxsIHwgYnJlYWstd29yZCAodGhp
cyBpcyBhIGN1c3RvbSBleHRlbnNpb24pCi0gICAgICAgIGlmIChpZCA9PSBDU1NWYWx1ZU5vcm1h
bCB8fCBpZCA9PSBDU1NWYWx1ZUJyZWFrQWxsIHx8IGlkID09IENTU1ZhbHVlQnJlYWtXb3JkKQot
ICAgICAgICAgICAgdmFsaWRQcmltaXRpdmUgPSB0cnVlOwotICAgICAgICBicmVhazsKLQotICAg
IGNhc2UgQ1NTUHJvcGVydHlXb3JkV3JhcDogICAgICAgICAgIC8vIG5vcm1hbCB8IGJyZWFrLXdv
cmQKLSAgICAgICAgaWYgKGlkID09IENTU1ZhbHVlTm9ybWFsIHx8IGlkID09IENTU1ZhbHVlQnJl
YWtXb3JkKQotICAgICAgICAgICAgdmFsaWRQcmltaXRpdmUgPSB0cnVlOwotICAgICAgICBicmVh
azsKLSAgICBjYXNlIENTU1Byb3BlcnR5U3BlYWs6ICAgICAgICAgICAvLyBub25lIHwgbm9ybWFs
IHwgc3BlbGwtb3V0IHwgZGlnaXRzIHwgbGl0ZXJhbC1wdW5jdHVhdGlvbiB8IG5vLXB1bmN0dWF0
aW9uIHwgaW5oZXJpdAotICAgICAgICBpZiAoaWQgPT0gQ1NTVmFsdWVOb25lIHx8IGlkID09IENT
U1ZhbHVlTm9ybWFsIHx8IGlkID09IENTU1ZhbHVlU3BlbGxPdXQgfHwgaWQgPT0gQ1NTVmFsdWVE
aWdpdHMKLSAgICAgICAgICAgIHx8IGlkID09IENTU1ZhbHVlTGl0ZXJhbFB1bmN0dWF0aW9uIHx8
IGlkID09IENTU1ZhbHVlTm9QdW5jdHVhdGlvbikKLSAgICAgICAgICAgIHZhbGlkUHJpbWl0aXZl
ID0gdHJ1ZTsKLSAgICAgICAgYnJlYWs7Ci0KICAgICBjYXNlIENTU1Byb3BlcnR5VGV4dEluZGVu
dDogICAgICAgICAgLy8gPGxlbmd0aD4gfCA8cGVyY2VudGFnZT4gfCBpbmhlcml0CiAgICAgICAg
IHZhbGlkUHJpbWl0aXZlID0gKCFpZCAmJiB2YWxpZFVuaXQodmFsdWUsIEZMZW5ndGggfCBGUGVy
Y2VudCwgbV9zdHJpY3QpKTsKICAgICAgICAgYnJlYWs7CkBAIC0xNDA4LDExICsxNzM2LDYgQEAg
Ym9vbCBDU1NQYXJzZXI6OnBhcnNlVmFsdWUoaW50IHByb3BJZCwgYm9vbCBpbXBvcnRhbnQpCiAg
ICAgICAgICAgICB2YWxpZFByaW1pdGl2ZSA9ICh2YWxpZFVuaXQodmFsdWUsIEZMZW5ndGggfCBG
UGVyY2VudCB8IEZOb25OZWcsIG1fc3RyaWN0KSk7CiAgICAgICAgIGJyZWFrOwogCi0gICAgY2Fz
ZSBDU1NQcm9wZXJ0eUZvbnRTdHlsZTogICAgICAgICAgIC8vIG5vcm1hbCB8IGl0YWxpYyB8IG9i
bGlxdWUgfCBpbmhlcml0Ci0gICAgICAgIGlmIChpZCA9PSBDU1NWYWx1ZU5vcm1hbCB8fCBpZCA9
PSBDU1NWYWx1ZUl0YWxpYyB8fCBpZCA9PSBDU1NWYWx1ZU9ibGlxdWUpCi0gICAgICAgICAgICB2
YWxpZFByaW1pdGl2ZSA9IHRydWU7Ci0gICAgICAgIGJyZWFrOwotCiAgICAgY2FzZSBDU1NQcm9w
ZXJ0eUZvbnRWYXJpYW50OiAgICAgICAgIC8vIG5vcm1hbCB8IHNtYWxsLWNhcHMgfCBpbmhlcml0
CiAgICAgICAgIHJldHVybiBwYXJzZUZvbnRWYXJpYW50KGltcG9ydGFudCk7CiAKQEAgLTE1Mjgs
MTEgKzE4NTEsNiBAQCBib29sIENTU1BhcnNlcjo6cGFyc2VWYWx1ZShpbnQgcHJvcElkLCBib29s
IGltcG9ydGFudCkKICAgICAgICAgICAgIHZhbGlkUHJpbWl0aXZlID0gKCFpZCAmJiB2YWxpZFVu
aXQodmFsdWUsIEZOdW1iZXIgfCBGUGVyY2VudCB8IEZOb25OZWcsIHRydWUpKTsKICAgICAgICAg
YnJlYWs7CiAKLSAgICBjYXNlIENTU1Byb3BlcnR5VGFibGVMYXlvdXQ6ICAgICAgICAgLy8gYXV0
byB8IGZpeGVkIHwgaW5oZXJpdAotICAgICAgICBpZiAoaWQgPT0gQ1NTVmFsdWVBdXRvIHx8IGlk
ID09IENTU1ZhbHVlRml4ZWQpCi0gICAgICAgICAgICB2YWxpZFByaW1pdGl2ZSA9IHRydWU7Ci0g
ICAgICAgIGJyZWFrOwotCiAgICAgY2FzZSBDU1NQcm9wZXJ0eVNyYzogIC8vIE9ubHkgdXNlZCB3
aXRoaW4gQGZvbnQtZmFjZSwgc28gY2Fubm90IHVzZSBpbmhlcml0IHwgaW5pdGlhbCBvciBiZSAh
aW1wb3J0YW50LiAgVGhpcyBpcyBhIGxpc3Qgb2YgdXJscyBvciBsb2NhbCByZWZlcmVuY2VzLgog
ICAgICAgICByZXR1cm4gcGFyc2VGb250RmFjZVNyYygpOwogCkBAIC0xNTQwLDEwICsxODU4LDYg
QEAgYm9vbCBDU1NQYXJzZXI6OnBhcnNlVmFsdWUoaW50IHByb3BJZCwgYm9vbCBpbXBvcnRhbnQp
CiAgICAgICAgIHJldHVybiBwYXJzZUZvbnRGYWNlVW5pY29kZVJhbmdlKCk7CiAKICAgICAvKiBD
U1MzIHByb3BlcnRpZXMgKi8KLSAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0QXBwZWFyYW5jZToK
LSAgICAgICAgaWYgKChpZCA+PSBDU1NWYWx1ZUNoZWNrYm94ICYmIGlkIDw9IENTU1ZhbHVlVGV4
dGFyZWEpIHx8IGlkID09IENTU1ZhbHVlTm9uZSkKLSAgICAgICAgICAgIHZhbGlkUHJpbWl0aXZl
ID0gdHJ1ZTsKLSAgICAgICAgYnJlYWs7CiAKICAgICBjYXNlIENTU1Byb3BlcnR5Qm9yZGVySW1h
Z2U6IHsKICAgICAgICAgUmVmUHRyPENTU1ZhbHVlPiByZXN1bHQ7CkBAIC0xNjUxLDI5ICsxOTY1
LDYgQEAgYm9vbCBDU1NQYXJzZXI6OnBhcnNlVmFsdWUoaW50IHByb3BJZCwgYm9vbCBpbXBvcnRh
bnQpCiAgICAgY2FzZSBDU1NQcm9wZXJ0eU9wYWNpdHk6CiAgICAgICAgIHZhbGlkUHJpbWl0aXZl
ID0gdmFsaWRVbml0KHZhbHVlLCBGTnVtYmVyLCBtX3N0cmljdCk7CiAgICAgICAgIGJyZWFrOwot
ICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRCb3hBbGlnbjoKLSAgICAgICAgaWYgKGlkID09IENT
U1ZhbHVlU3RyZXRjaCB8fCBpZCA9PSBDU1NWYWx1ZVN0YXJ0IHx8IGlkID09IENTU1ZhbHVlRW5k
IHx8Ci0gICAgICAgICAgICBpZCA9PSBDU1NWYWx1ZUNlbnRlciB8fCBpZCA9PSBDU1NWYWx1ZUJh
c2VsaW5lKQotICAgICAgICAgICAgdmFsaWRQcmltaXRpdmUgPSB0cnVlOwotICAgICAgICBicmVh
azsKLSAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0Qm94RGlyZWN0aW9uOgotICAgICAgICBpZiAo
aWQgPT0gQ1NTVmFsdWVOb3JtYWwgfHwgaWQgPT0gQ1NTVmFsdWVSZXZlcnNlKQotICAgICAgICAg
ICAgdmFsaWRQcmltaXRpdmUgPSB0cnVlOwotICAgICAgICBicmVhazsKLSAgICBjYXNlIENTU1By
b3BlcnR5V2Via2l0Qm94TGluZXM6Ci0gICAgICAgIGlmIChpZCA9PSBDU1NWYWx1ZVNpbmdsZSB8
fCBpZCA9PSBDU1NWYWx1ZU11bHRpcGxlKQotICAgICAgICAgICAgdmFsaWRQcmltaXRpdmUgPSB0
cnVlOwotICAgICAgICBicmVhazsKLSAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0Qm94T3JpZW50
OgotICAgICAgICBpZiAoaWQgPT0gQ1NTVmFsdWVIb3Jpem9udGFsIHx8IGlkID09IENTU1ZhbHVl
VmVydGljYWwgfHwKLSAgICAgICAgICAgIGlkID09IENTU1ZhbHVlSW5saW5lQXhpcyB8fCBpZCA9
PSBDU1NWYWx1ZUJsb2NrQXhpcykKLSAgICAgICAgICAgIHZhbGlkUHJpbWl0aXZlID0gdHJ1ZTsK
LSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdEJveFBhY2s6Ci0gICAg
ICAgIGlmIChpZCA9PSBDU1NWYWx1ZVN0YXJ0IHx8IGlkID09IENTU1ZhbHVlRW5kIHx8Ci0gICAg
ICAgICAgICBpZCA9PSBDU1NWYWx1ZUNlbnRlciB8fCBpZCA9PSBDU1NWYWx1ZUp1c3RpZnkpCi0g
ICAgICAgICAgICB2YWxpZFByaW1pdGl2ZSA9IHRydWU7Ci0gICAgICAgIGJyZWFrOwogICAgIGNh
c2UgQ1NTUHJvcGVydHlXZWJraXRCb3hGbGV4OgogICAgICAgICB2YWxpZFByaW1pdGl2ZSA9IHZh
bGlkVW5pdCh2YWx1ZSwgRk51bWJlciwgbV9zdHJpY3QpOwogICAgICAgICBicmVhazsKQEAgLTE2
ODEsMTIgKzE5NzIsNiBAQCBib29sIENTU1BhcnNlcjo6cGFyc2VWYWx1ZShpbnQgcHJvcElkLCBi
b29sIGltcG9ydGFudCkKICAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0Qm94T3JkaW5hbEdyb3Vw
OgogICAgICAgICB2YWxpZFByaW1pdGl2ZSA9IHZhbGlkVW5pdCh2YWx1ZSwgRkludGVnZXIgfCBG
Tm9uTmVnLCB0cnVlKTsKICAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBDU1NQcm9wZXJ0eUJveFNp
emluZzoKLSAgICAgICAgdmFsaWRQcmltaXRpdmUgPSBpZCA9PSBDU1NWYWx1ZUJvcmRlckJveCB8
fCBpZCA9PSBDU1NWYWx1ZUNvbnRlbnRCb3g7Ci0gICAgICAgIGJyZWFrOwotICAgIGNhc2UgQ1NT
UHJvcGVydHlXZWJraXRDb2xvckNvcnJlY3Rpb246Ci0gICAgICAgIHZhbGlkUHJpbWl0aXZlID0g
aWQgPT0gQ1NTVmFsdWVTcmdiIHx8IGlkID09IENTU1ZhbHVlRGVmYXVsdDsKLSAgICAgICAgYnJl
YWs7CiAjaWYgRU5BQkxFKENTU19GSUxURVJTKQogICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRG
aWx0ZXI6CiAgICAgICAgIGlmIChpZCA9PSBDU1NWYWx1ZU5vbmUpCkBAIC0xNzA5LDQzICsxOTk0
LDE4IEBAIGJvb2wgQ1NTUGFyc2VyOjpwYXJzZVZhbHVlKGludCBwcm9wSWQsIGJvb2wgaW1wb3J0
YW50KQogICAgICAgICAgICAgbV92YWx1ZUxpc3QtPm5leHQoKTsKICAgICAgICAgfQogICAgICAg
ICBicmVhazsKLSAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0RmxleFBhY2s6Ci0gICAgICAgIHZh
bGlkUHJpbWl0aXZlID0gaWQgPT0gQ1NTVmFsdWVTdGFydCB8fCBpZCA9PSBDU1NWYWx1ZUVuZCB8
fCBpZCA9PSBDU1NWYWx1ZUNlbnRlciB8fCBpZCA9PSBDU1NWYWx1ZUp1c3RpZnkgfHwgaWQgPT0g
Q1NTVmFsdWVEaXN0cmlidXRlOwotICAgICAgICBicmVhazsKLSAgICBjYXNlIENTU1Byb3BlcnR5
V2Via2l0RmxleEFsaWduOgotICAgICAgICB2YWxpZFByaW1pdGl2ZSA9IGlkID09IENTU1ZhbHVl
U3RhcnQgfHwgaWQgPT0gQ1NTVmFsdWVFbmQgfHwgaWQgPT0gQ1NTVmFsdWVDZW50ZXIgfHwgaWQg
PT0gQ1NTVmFsdWVCYXNlbGluZSB8fCBpZCA9PSBDU1NWYWx1ZVN0cmV0Y2g7Ci0gICAgICAgIGJy
ZWFrOwotICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRGbGV4SXRlbUFsaWduOgotICAgICAgICB2
YWxpZFByaW1pdGl2ZSA9IGlkID09IENTU1ZhbHVlQXV0byB8fCBpZCA9PSBDU1NWYWx1ZVN0YXJ0
IHx8IGlkID09IENTU1ZhbHVlRW5kIHx8IGlkID09IENTU1ZhbHVlQ2VudGVyIHx8IGlkID09IENT
U1ZhbHVlQmFzZWxpbmUgfHwgaWQgPT0gQ1NTVmFsdWVTdHJldGNoOwotICAgICAgICBicmVhazsK
LSAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0RmxleERpcmVjdGlvbjoKLSAgICAgICAgdmFsaWRQ
cmltaXRpdmUgPSBpZCA9PSBDU1NWYWx1ZVJvdyB8fCBpZCA9PSBDU1NWYWx1ZVJvd1JldmVyc2Ug
fHwgaWQgPT0gQ1NTVmFsdWVDb2x1bW4gfHwgaWQgPT0gQ1NTVmFsdWVDb2x1bW5SZXZlcnNlOwot
ICAgICAgICBicmVhazsKLSAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0RmxleFdyYXA6Ci0gICAg
ICAgIHZhbGlkUHJpbWl0aXZlID0gaWQgPT0gQ1NTVmFsdWVOb25lIHx8IGlkID09IENTU1ZhbHVl
V3JhcCB8fCBpZCA9PSBDU1NWYWx1ZVdyYXBSZXZlcnNlOwotICAgICAgICBicmVhazsKICAgICBj
YXNlIENTU1Byb3BlcnR5V2Via2l0TWFycXVlZTogewogICAgICAgICBjb25zdCBpbnQgcHJvcGVy
dGllc1s1XSA9IHsgQ1NTUHJvcGVydHlXZWJraXRNYXJxdWVlRGlyZWN0aW9uLCBDU1NQcm9wZXJ0
eVdlYmtpdE1hcnF1ZWVJbmNyZW1lbnQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBDU1NQcm9wZXJ0eVdlYmtpdE1hcnF1ZWVSZXBldGl0aW9uLAogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgQ1NTUHJvcGVydHlXZWJraXRNYXJxdWVlU3R5bGUsIENTU1By
b3BlcnR5V2Via2l0TWFycXVlZVNwZWVkIH07CiAgICAgICAgIHJldHVybiBwYXJzZVNob3J0aGFu
ZChwcm9wSWQsIHByb3BlcnRpZXMsIDUsIGltcG9ydGFudCk7CiAgICAgfQotICAgIGNhc2UgQ1NT
UHJvcGVydHlXZWJraXRNYXJxdWVlRGlyZWN0aW9uOgotICAgICAgICBpZiAoaWQgPT0gQ1NTVmFs
dWVGb3J3YXJkcyB8fCBpZCA9PSBDU1NWYWx1ZUJhY2t3YXJkcyB8fCBpZCA9PSBDU1NWYWx1ZUFo
ZWFkIHx8Ci0gICAgICAgICAgICBpZCA9PSBDU1NWYWx1ZVJldmVyc2UgfHwgaWQgPT0gQ1NTVmFs
dWVMZWZ0IHx8IGlkID09IENTU1ZhbHVlUmlnaHQgfHwgaWQgPT0gQ1NTVmFsdWVEb3duIHx8Ci0g
ICAgICAgICAgICBpZCA9PSBDU1NWYWx1ZVVwIHx8IGlkID09IENTU1ZhbHVlQXV0bykKLSAgICAg
ICAgICAgIHZhbGlkUHJpbWl0aXZlID0gdHJ1ZTsKLSAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBD
U1NQcm9wZXJ0eVdlYmtpdE1hcnF1ZWVJbmNyZW1lbnQ6CiAgICAgICAgIGlmIChpZCA9PSBDU1NW
YWx1ZVNtYWxsIHx8IGlkID09IENTU1ZhbHVlTGFyZ2UgfHwgaWQgPT0gQ1NTVmFsdWVNZWRpdW0p
CiAgICAgICAgICAgICB2YWxpZFByaW1pdGl2ZSA9IHRydWU7CiAgICAgICAgIGVsc2UKICAgICAg
ICAgICAgIHZhbGlkUHJpbWl0aXZlID0gdmFsaWRVbml0KHZhbHVlLCBGTGVuZ3RoIHwgRlBlcmNl
bnQsIG1fc3RyaWN0KTsKICAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtp
dE1hcnF1ZWVTdHlsZToKLSAgICAgICAgaWYgKGlkID09IENTU1ZhbHVlTm9uZSB8fCBpZCA9PSBD
U1NWYWx1ZVNsaWRlIHx8IGlkID09IENTU1ZhbHVlU2Nyb2xsIHx8IGlkID09IENTU1ZhbHVlQWx0
ZXJuYXRlKQotICAgICAgICAgICAgdmFsaWRQcmltaXRpdmUgPSB0cnVlOwotICAgICAgICBicmVh
azsKICAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0TWFycXVlZVJlcGV0aXRpb246CiAgICAgICAg
IGlmIChpZCA9PSBDU1NWYWx1ZUluZmluaXRlKQogICAgICAgICAgICAgdmFsaWRQcmltaXRpdmUg
PSB0cnVlOwpAQCAtMTc3MCwyMyArMjAzMCw2IEBAIGJvb2wgQ1NTUGFyc2VyOjpwYXJzZVZhbHVl
KGludCBwcm9wSWQsIGJvb2wgaW1wb3J0YW50KQogICAgICAgICBpZiAoY3NzUmVnaW9uc0VuYWJs
ZWQoKSAmJiAoaWQgPT0gQ1NTVmFsdWVBdXRvIHx8IGlkID09IENTU1ZhbHVlQnJlYWspKQogICAg
ICAgICAgICAgdmFsaWRQcmltaXRpdmUgPSB0cnVlOwogICAgICAgICBicmVhazsKLQotICAgIGNh
c2UgQ1NTUHJvcGVydHlXZWJraXRVc2VyRHJhZzogLy8gYXV0byB8IG5vbmUgfCBlbGVtZW50Ci0g
ICAgICAgIGlmIChpZCA9PSBDU1NWYWx1ZUF1dG8gfHwgaWQgPT0gQ1NTVmFsdWVOb25lIHx8IGlk
ID09IENTU1ZhbHVlRWxlbWVudCkKLSAgICAgICAgICAgIHZhbGlkUHJpbWl0aXZlID0gdHJ1ZTsK
LSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdFVzZXJNb2RpZnk6IC8v
IHJlYWQtb25seSB8IHJlYWQtd3JpdGUKLSAgICAgICAgaWYgKGlkID09IENTU1ZhbHVlUmVhZE9u
bHkgfHwgaWQgPT0gQ1NTVmFsdWVSZWFkV3JpdGUgfHwgaWQgPT0gQ1NTVmFsdWVSZWFkV3JpdGVQ
bGFpbnRleHRPbmx5KQotICAgICAgICAgICAgdmFsaWRQcmltaXRpdmUgPSB0cnVlOwotICAgICAg
ICBicmVhazsKLSAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0VXNlclNlbGVjdDogLy8gYXV0byB8
IG5vbmUgfCB0ZXh0Ci0gICAgICAgIGlmIChpZCA9PSBDU1NWYWx1ZUF1dG8gfHwgaWQgPT0gQ1NT
VmFsdWVOb25lIHx8IGlkID09IENTU1ZhbHVlVGV4dCkKLSAgICAgICAgICAgIHZhbGlkUHJpbWl0
aXZlID0gdHJ1ZTsKLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBDU1NQcm9wZXJ0eVRleHRPdmVy
ZmxvdzogLy8gY2xpcCB8IGVsbGlwc2lzCi0gICAgICAgIGlmIChpZCA9PSBDU1NWYWx1ZUNsaXAg
fHwgaWQgPT0gQ1NTVmFsdWVFbGxpcHNpcykKLSAgICAgICAgICAgIHZhbGlkUHJpbWl0aXZlID0g
dHJ1ZTsKLSAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdFRyYW5zZm9y
bToKICAgICAgICAgaWYgKGlkID09IENTU1ZhbHVlTm9uZSkKICAgICAgICAgICAgIHZhbGlkUHJp
bWl0aXZlID0gdHJ1ZTsKQEAgLTE4MTcsMTggKzIwNjAsNiBAQCBib29sIENTU1BhcnNlcjo6cGFy
c2VWYWx1ZShpbnQgcHJvcElkLCBib29sIGltcG9ydGFudCkKICAgICAgICAgfQogICAgICAgICBy
ZXR1cm4gZmFsc2U7CiAgICAgfQotICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRUcmFuc2Zvcm1T
dHlsZToKLSAgICAgICAgaWYgKHZhbHVlLT5pZCA9PSBDU1NWYWx1ZUZsYXQgfHwgdmFsdWUtPmlk
ID09IENTU1ZhbHVlUHJlc2VydmUzZCkKLSAgICAgICAgICAgIHZhbGlkUHJpbWl0aXZlID0gdHJ1
ZTsKLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdEJhY2tmYWNlVmlz
aWJpbGl0eToKLSAgICAgICAgaWYgKHZhbHVlLT5pZCA9PSBDU1NWYWx1ZVZpc2libGUgfHwgdmFs
dWUtPmlkID09IENTU1ZhbHVlSGlkZGVuKQotICAgICAgICAgICAgdmFsaWRQcmltaXRpdmUgPSB0
cnVlOwotICAgICAgICBicmVhazsKLSAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0UHJpbnRDb2xv
ckFkanVzdDoKLSAgICAgICAgaWYgKHZhbHVlLT5pZCA9PSBDU1NWYWx1ZUV4YWN0IHx8IHZhbHVl
LT5pZCA9PSBDU1NWYWx1ZUVjb25vbXkpCi0gICAgICAgICAgICB2YWxpZFByaW1pdGl2ZSA9IHRy
dWU7Ci0gICAgICAgIGJyZWFrOwogICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRQZXJzcGVjdGl2
ZToKICAgICAgICAgaWYgKGlkID09IENTU1ZhbHVlTm9uZSkKICAgICAgICAgICAgIHZhbGlkUHJp
bWl0aXZlID0gdHJ1ZTsKQEAgLTE5MDYsMzIgKzIxMzcsNiBAQCBib29sIENTU1BhcnNlcjo6cGFy
c2VWYWx1ZShpbnQgcHJvcElkLCBib29sIGltcG9ydGFudCkKICAgICAgICAgfQogICAgICAgICBy
ZXR1cm4gZmFsc2U7CiAgICAgfQotICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRNYXJnaW5CZWZv
cmVDb2xsYXBzZToKLSAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0TWFyZ2luQWZ0ZXJDb2xsYXBz
ZToKLSAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0TWFyZ2luVG9wQ29sbGFwc2U6Ci0gICAgY2Fz
ZSBDU1NQcm9wZXJ0eVdlYmtpdE1hcmdpbkJvdHRvbUNvbGxhcHNlOgotICAgICAgICBpZiAoaWQg
PT0gQ1NTVmFsdWVDb2xsYXBzZSB8fCBpZCA9PSBDU1NWYWx1ZVNlcGFyYXRlIHx8IGlkID09IENT
U1ZhbHVlRGlzY2FyZCkKLSAgICAgICAgICAgIHZhbGlkUHJpbWl0aXZlID0gdHJ1ZTsKLSAgICAg
ICAgYnJlYWs7Ci0gICAgY2FzZSBDU1NQcm9wZXJ0eVRleHRMaW5lVGhyb3VnaE1vZGU6Ci0gICAg
Y2FzZSBDU1NQcm9wZXJ0eVRleHRPdmVybGluZU1vZGU6Ci0gICAgY2FzZSBDU1NQcm9wZXJ0eVRl
eHRVbmRlcmxpbmVNb2RlOgotICAgICAgICBpZiAoaWQgPT0gQ1NTVmFsdWVDb250aW51b3VzIHx8
IGlkID09IENTU1ZhbHVlU2tpcFdoaXRlU3BhY2UpCi0gICAgICAgICAgICB2YWxpZFByaW1pdGl2
ZSA9IHRydWU7Ci0gICAgICAgIGJyZWFrOwotICAgIGNhc2UgQ1NTUHJvcGVydHlUZXh0TGluZVRo
cm91Z2hTdHlsZToKLSAgICBjYXNlIENTU1Byb3BlcnR5VGV4dE92ZXJsaW5lU3R5bGU6Ci0gICAg
Y2FzZSBDU1NQcm9wZXJ0eVRleHRVbmRlcmxpbmVTdHlsZToKLSAgICAgICAgaWYgKGlkID09IENT
U1ZhbHVlTm9uZSB8fCBpZCA9PSBDU1NWYWx1ZVNvbGlkIHx8IGlkID09IENTU1ZhbHVlRG91Ymxl
IHx8Ci0gICAgICAgICAgICBpZCA9PSBDU1NWYWx1ZURhc2hlZCB8fCBpZCA9PSBDU1NWYWx1ZURv
dERhc2ggfHwgaWQgPT0gQ1NTVmFsdWVEb3REb3REYXNoIHx8Ci0gICAgICAgICAgICBpZCA9PSBD
U1NWYWx1ZVdhdmUpCi0gICAgICAgICAgICB2YWxpZFByaW1pdGl2ZSA9IHRydWU7Ci0gICAgICAg
IGJyZWFrOwotICAgIGNhc2UgQ1NTUHJvcGVydHlUZXh0UmVuZGVyaW5nOiAvLyBhdXRvIHwgb3B0
aW1pemVTcGVlZCB8IG9wdGltaXplTGVnaWJpbGl0eSB8IGdlb21ldHJpY1ByZWNpc2lvbgotICAg
ICAgICBpZiAoaWQgPT0gQ1NTVmFsdWVBdXRvIHx8IGlkID09IENTU1ZhbHVlT3B0aW1pemVzcGVl
ZCB8fCBpZCA9PSBDU1NWYWx1ZU9wdGltaXplbGVnaWJpbGl0eQotICAgICAgICAgICAgfHwgaWQg
PT0gQ1NTVmFsdWVHZW9tZXRyaWNwcmVjaXNpb24pCi0gICAgICAgICAgICB2YWxpZFByaW1pdGl2
ZSA9IHRydWU7Ci0gICAgICAgIGJyZWFrOwogICAgIGNhc2UgQ1NTUHJvcGVydHlUZXh0TGluZVRo
cm91Z2hXaWR0aDoKICAgICBjYXNlIENTU1Byb3BlcnR5VGV4dE92ZXJsaW5lV2lkdGg6CiAgICAg
Y2FzZSBDU1NQcm9wZXJ0eVRleHRVbmRlcmxpbmVXaWR0aDoKQEAgLTE5NDEsMTAgKzIxNDYsNiBA
QCBib29sIENTU1BhcnNlcjo6cGFyc2VWYWx1ZShpbnQgcHJvcElkLCBib29sIGltcG9ydGFudCkK
ICAgICAgICAgZWxzZQogICAgICAgICAgICAgdmFsaWRQcmltaXRpdmUgPSAhaWQgJiYgdmFsaWRV
bml0KHZhbHVlLCBGTnVtYmVyIHwgRkxlbmd0aCB8IEZQZXJjZW50LCBtX3N0cmljdCk7CiAgICAg
ICAgIGJyZWFrOwotICAgIGNhc2UgQ1NTUHJvcGVydHlSZXNpemU6IC8vIG5vbmUgfCBib3RoIHwg
aG9yaXpvbnRhbCB8IHZlcnRpY2FsIHwgYXV0bwotICAgICAgICBpZiAoaWQgPT0gQ1NTVmFsdWVO
b25lIHx8IGlkID09IENTU1ZhbHVlQm90aCB8fCBpZCA9PSBDU1NWYWx1ZUhvcml6b250YWwgfHwg
aWQgPT0gQ1NTVmFsdWVWZXJ0aWNhbCB8fCBpZCA9PSBDU1NWYWx1ZUF1dG8pCi0gICAgICAgICAg
ICB2YWxpZFByaW1pdGl2ZSA9IHRydWU7Ci0gICAgICAgIGJyZWFrOwogICAgIGNhc2UgQ1NTUHJv
cGVydHlXZWJraXRDb2x1bW5Db3VudDoKICAgICAgICAgaWYgKGlkID09IENTU1ZhbHVlQXV0bykK
ICAgICAgICAgICAgIHZhbGlkUHJpbWl0aXZlID0gdHJ1ZTsKQEAgLTE5NzMsMTcgKzIxNzQsNiBA
QCBib29sIENTU1BhcnNlcjo6cGFyc2VWYWx1ZShpbnQgcHJvcElkLCBib29sIGltcG9ydGFudCkK
ICAgICAgICAgZWxzZSAvLyBBbHdheXMgcGFyc2UgdGhpcyBwcm9wZXJ0eSBpbiBzdHJpY3QgbW9k
ZSwgc2luY2UgaXQgd291bGQgYmUgYW1iaWd1b3VzIG90aGVyd2lzZSB3aGVuIHVzZWQgaW4gdGhl
ICdjb2x1bW5zJyBzaG9ydGhhbmQgcHJvcGVydHkuCiAgICAgICAgICAgICB2YWxpZFByaW1pdGl2
ZSA9IHZhbGlkVW5pdCh2YWx1ZSwgRkxlbmd0aCwgdHJ1ZSk7CiAgICAgICAgIGJyZWFrOwotICAg
IGNhc2UgQ1NTUHJvcGVydHlQb2ludGVyRXZlbnRzOgotICAgICAgICAvLyBub25lIHwgdmlzaWJs
ZVBhaW50ZWQgfCB2aXNpYmxlRmlsbCB8IHZpc2libGVTdHJva2UgfCB2aXNpYmxlIHwKLSAgICAg
ICAgLy8gcGFpbnRlZCB8IGZpbGwgfCBzdHJva2UgfCBhdXRvIHwgYWxsIHwgaW5oZXJpdAotICAg
ICAgICBpZiAoaWQgPT0gQ1NTVmFsdWVWaXNpYmxlIHx8IGlkID09IENTU1ZhbHVlTm9uZSB8fCBp
ZCA9PSBDU1NWYWx1ZUFsbCB8fCBpZCA9PSBDU1NWYWx1ZUF1dG8gfHwKLSAgICAgICAgICAgIChp
ZCA+PSBDU1NWYWx1ZVZpc2libGVwYWludGVkICYmIGlkIDw9IENTU1ZhbHVlU3Ryb2tlKSkKLSAg
ICAgICAgICAgIHZhbGlkUHJpbWl0aXZlID0gdHJ1ZTsKLSAgICAgICAgYnJlYWs7Ci0gICAgY2Fz
ZSBDU1NQcm9wZXJ0eUltYWdlUmVuZGVyaW5nOiAvLyBhdXRvIHwgb3B0aW1pemVDb250cmFzdAot
ICAgICAgICBpZiAoaWQgPT0gQ1NTVmFsdWVBdXRvIHx8IGlkID09IENTU1ZhbHVlV2Via2l0T3B0
aW1pemVDb250cmFzdCkKLSAgICAgICAgICAgIHZhbGlkUHJpbWl0aXZlID0gdHJ1ZTsKLSAgICAg
ICAgYnJlYWs7CiAgICAgLy8gRW5kIG9mIENTUzMgcHJvcGVydGllcwogCiAgICAgLy8gQXBwbGUg
c3BlY2lmaWMgcHJvcGVydGllcy4gIFRoZXNlIHdpbGwgbmV2ZXIgYmUgc3RhbmRhcmRpemVkIGFu
ZCBhcmUgcHVyZWx5IHRvCkBAIC0xOTkzLDQ0ICsyMTgzLDE2IEBAIGJvb2wgQ1NTUGFyc2VyOjpw
YXJzZVZhbHVlKGludCBwcm9wSWQsIGJvb2wgaW1wb3J0YW50KQogICAgICAgICAvLyBXaGVuIHNw
ZWNpZnlpbmcgZWl0aGVyIHR5cGUgb2YgdW5pdCwgcmVxdWlyZSBub24tbmVnYXRpdmUgaW50ZWdl
cnMKICAgICAgICAgdmFsaWRQcmltaXRpdmUgPSAoIWlkICYmICh2YWx1ZS0+dW5pdCA9PSBDU1NQ
cmltaXRpdmVWYWx1ZTo6Q1NTX1BFUkNFTlRBR0UgfHwgdmFsdWUtPmZWYWx1ZSkgJiYgdmFsaWRV
bml0KHZhbHVlLCBGSW50ZWdlciB8IEZQZXJjZW50IHwgRk5vbk5lZywgZmFsc2UpKTsKICAgICAg
ICAgYnJlYWs7Ci0gICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdFRleHRTaXplQWRqdXN0OgotICAg
ICAgICBpZiAoaWQgPT0gQ1NTVmFsdWVBdXRvIHx8IGlkID09IENTU1ZhbHVlTm9uZSkKLSAgICAg
ICAgICAgIHZhbGlkUHJpbWl0aXZlID0gdHJ1ZTsKLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBD
U1NQcm9wZXJ0eVdlYmtpdFJ0bE9yZGVyaW5nOgotICAgICAgICBpZiAoaWQgPT0gQ1NTVmFsdWVM
b2dpY2FsIHx8IGlkID09IENTU1ZhbHVlVmlzdWFsKQotICAgICAgICAgICAgdmFsaWRQcmltaXRp
dmUgPSB0cnVlOwotICAgICAgICBicmVhazsKIAogICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRG
b250U2l6ZURlbHRhOiAgICAgICAgICAgLy8gPGxlbmd0aD4KICAgICAgICAgdmFsaWRQcmltaXRp
dmUgPSB2YWxpZFVuaXQodmFsdWUsIEZMZW5ndGgsIG1fc3RyaWN0KTsKICAgICAgICAgYnJlYWs7
CiAKLSAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0TmJzcE1vZGU6ICAgICAvLyBub3JtYWwgfCBz
cGFjZQotICAgICAgICBpZiAoaWQgPT0gQ1NTVmFsdWVOb3JtYWwgfHwgaWQgPT0gQ1NTVmFsdWVT
cGFjZSkKLSAgICAgICAgICAgIHZhbGlkUHJpbWl0aXZlID0gdHJ1ZTsKLSAgICAgICAgYnJlYWs7
Ci0KLSAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0TGluZUJyZWFrOiAgIC8vIG5vcm1hbCB8IGFm
dGVyLXdoaXRlLXNwYWNlCi0gICAgICAgIGlmIChpZCA9PSBDU1NWYWx1ZU5vcm1hbCB8fCBpZCA9
PSBDU1NWYWx1ZUFmdGVyV2hpdGVTcGFjZSkKLSAgICAgICAgICAgIHZhbGlkUHJpbWl0aXZlID0g
dHJ1ZTsKLSAgICAgICAgYnJlYWs7Ci0KLSAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0TWF0Y2hO
ZWFyZXN0TWFpbEJsb2NrcXVvdGVDb2xvcjogICAvLyBub3JtYWwgfCBtYXRjaAotICAgICAgICBp
ZiAoaWQgPT0gQ1NTVmFsdWVOb3JtYWwgfHwgaWQgPT0gQ1NTVmFsdWVNYXRjaCkKLSAgICAgICAg
ICAgIHZhbGlkUHJpbWl0aXZlID0gdHJ1ZTsKLSAgICAgICAgYnJlYWs7Ci0KICAgICBjYXNlIENT
U1Byb3BlcnR5V2Via2l0SGlnaGxpZ2h0OgogICAgICAgICBpZiAoaWQgPT0gQ1NTVmFsdWVOb25l
IHx8IHZhbHVlLT51bml0ID09IENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfU1RSSU5HKQogICAgICAg
ICAgICAgdmFsaWRQcmltaXRpdmUgPSB0cnVlOwogICAgICAgICBicmVhazsKIAotICAgIGNhc2Ug
Q1NTUHJvcGVydHlXZWJraXRIeXBoZW5zOgotICAgICAgICBpZiAoaWQgPT0gQ1NTVmFsdWVOb25l
IHx8IGlkID09IENTU1ZhbHVlTWFudWFsIHx8IGlkID09IENTU1ZhbHVlQXV0bykKLSAgICAgICAg
ICAgIHZhbGlkUHJpbWl0aXZlID0gdHJ1ZTsKLSAgICAgICAgYnJlYWs7Ci0KICAgICBjYXNlIENT
U1Byb3BlcnR5V2Via2l0SHlwaGVuYXRlQ2hhcmFjdGVyOgogICAgICAgICBpZiAoaWQgPT0gQ1NT
VmFsdWVBdXRvIHx8IHZhbHVlLT51bml0ID09IENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfU1RSSU5H
KQogICAgICAgICAgICAgdmFsaWRQcmltaXRpdmUgPSB0cnVlOwpAQCAtMjA1OCwzNiArMjIyMCwx
MSBAQCBib29sIENTU1BhcnNlcjo6cGFyc2VWYWx1ZShpbnQgcHJvcElkLCBib29sIGltcG9ydGFu
dCkKICAgICAgICAgICAgIH0KICAgICAgICAgfQogICAgICAgICBicmVhazsKLSAgICBjYXNlIENT
U1Byb3BlcnR5V2Via2l0TGluZVNuYXA6Ci0gICAgICAgIGlmIChpZCA9PSBDU1NWYWx1ZU5vbmUg
fHwgaWQgPT0gQ1NTVmFsdWVCYXNlbGluZSB8fCBpZCA9PSBDU1NWYWx1ZUNvbnRhaW4pCi0gICAg
ICAgICAgICB2YWxpZFByaW1pdGl2ZSA9IHRydWU7Ci0gICAgICAgIGJyZWFrOwotICAgIGNhc2Ug
Q1NTUHJvcGVydHlXZWJraXRMaW5lQWxpZ246Ci0gICAgICAgIGlmIChpZCA9PSBDU1NWYWx1ZU5v
bmUgfHwgaWQgPT0gQ1NTVmFsdWVFZGdlcykKLSAgICAgICAgICAgIHZhbGlkUHJpbWl0aXZlID0g
dHJ1ZTsKLSAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdExvY2FsZToK
ICAgICAgICAgaWYgKGlkID09IENTU1ZhbHVlQXV0byB8fCB2YWx1ZS0+dW5pdCA9PSBDU1NQcmlt
aXRpdmVWYWx1ZTo6Q1NTX1NUUklORykKICAgICAgICAgICAgIHZhbGlkUHJpbWl0aXZlID0gdHJ1
ZTsKICAgICAgICAgYnJlYWs7CiAKLSAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0Qm9yZGVyRml0
OgotICAgICAgICBpZiAoaWQgPT0gQ1NTVmFsdWVCb3JkZXIgfHwgaWQgPT0gQ1NTVmFsdWVMaW5l
cykKLSAgICAgICAgICAgIHZhbGlkUHJpbWl0aXZlID0gdHJ1ZTsKLSAgICAgICAgYnJlYWs7Ci0K
LSAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0VGV4dFNlY3VyaXR5OgotICAgICAgICAvLyBkaXNj
IHwgY2lyY2xlIHwgc3F1YXJlIHwgbm9uZSB8IGluaGVyaXQKLSAgICAgICAgaWYgKGlkID09IENT
U1ZhbHVlRGlzYyB8fCBpZCA9PSBDU1NWYWx1ZUNpcmNsZSB8fCBpZCA9PSBDU1NWYWx1ZVNxdWFy
ZXx8IGlkID09IENTU1ZhbHVlTm9uZSkKLSAgICAgICAgICAgIHZhbGlkUHJpbWl0aXZlID0gdHJ1
ZTsKLSAgICAgICAgYnJlYWs7Ci0KLSAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0Rm9udFNtb290
aGluZzoKLSAgICAgICAgaWYgKGlkID09IENTU1ZhbHVlQXV0byB8fCBpZCA9PSBDU1NWYWx1ZU5v
bmUKLSAgICAgICAgICAgIHx8IGlkID09IENTU1ZhbHVlQW50aWFsaWFzZWQgfHwgaWQgPT0gQ1NT
VmFsdWVTdWJwaXhlbEFudGlhbGlhc2VkKQotICAgICAgICAgICAgdmFsaWRQcmltaXRpdmUgPSB0
cnVlOwotICAgICAgICBicmVhazsKLQogI2lmIEVOQUJMRShEQVNIQk9BUkRfU1VQUE9SVCkKICAg
ICBjYXNlIENTU1Byb3BlcnR5V2Via2l0RGFzaGJvYXJkUmVnaW9uOiAvLyA8ZGFzaGJvYXJkLXJl
Z2lvbj4gfCA8ZGFzaGJvYXJkLXJlZ2lvbj4KICAgICAgICAgaWYgKHZhbHVlLT51bml0ID09IENT
U1BhcnNlclZhbHVlOjpGdW5jdGlvbiB8fCBpZCA9PSBDU1NWYWx1ZU5vbmUpCkBAIC0yMTA5LDEz
ICsyMjQ2LDYgQEAgYm9vbCBDU1NQYXJzZXI6OnBhcnNlVmFsdWUoaW50IHByb3BJZCwgYm9vbCBp
bXBvcnRhbnQpCiAgICAgICAgIGJyZWFrOwogI2VuZGlmCiAKLSNpZiBFTkFCTEUoT1ZFUkZMT1df
U0NST0xMSU5HKQotICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRPdmVyZmxvd1Njcm9sbGluZzoK
LSAgICAgICAgaWYgKGlkID09IENTU1ZhbHVlQXV0byB8fCBpZCA9PSBDU1NWYWx1ZVRvdWNoKQot
ICAgICAgICAgICAgdmFsaWRQcmltaXRpdmUgPSB0cnVlOwotICAgICAgICBicmVhazsKLSNlbmRp
ZgotCiAgICAgICAgIC8qIHNob3J0aGFuZCBwcm9wZXJ0aWVzICovCiAgICAgY2FzZSBDU1NQcm9w
ZXJ0eUJhY2tncm91bmQ6IHsKICAgICAgICAgLy8gUG9zaXRpb24gbXVzdCBjb21lIGJlZm9yZSBj
b2xvciBpbiB0aGlzIGFycmF5IGJlY2F1c2UgYSBwbGFpbiBvbGQgIjAiIGlzIGEgbGVnYWwgY29s
b3IKQEAgLTIyODUsMjYgKzI0MTUsMTEgQEAgYm9vbCBDU1NQYXJzZXI6OnBhcnNlVmFsdWUoaW50
IHByb3BJZCwgYm9vbCBpbXBvcnRhbnQpCiAgICAgY2FzZSBDU1NQcm9wZXJ0eVRleHRVbmRlcmxp
bmU6CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAvLyBDU1MgVGV4dCBMYXlvdXQgTW9kdWxl
IExldmVsIDM6IFZlcnRpY2FsIHdyaXRpbmcgc3VwcG9ydAotICAgIGNhc2UgQ1NTUHJvcGVydHlX
ZWJraXRXcml0aW5nTW9kZToKLSAgICAgICAgaWYgKGlkID49IENTU1ZhbHVlSG9yaXpvbnRhbFRi
ICYmIGlkIDw9IENTU1ZhbHVlSG9yaXpvbnRhbEJ0KQotICAgICAgICAgICAgdmFsaWRQcmltaXRp
dmUgPSB0cnVlOwotICAgICAgICBicmVhazsKLQotICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRU
ZXh0Q29tYmluZToKLSAgICAgICAgaWYgKGlkID09IENTU1ZhbHVlTm9uZSB8fCBpZCA9PSBDU1NW
YWx1ZUhvcml6b250YWwpCi0gICAgICAgICAgICB2YWxpZFByaW1pdGl2ZSA9IHRydWU7Ci0gICAg
ICAgIGJyZWFrOwotCiAgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdFRleHRFbXBoYXNpczogewog
ICAgICAgICBjb25zdCBpbnQgcHJvcGVydGllc1tdID0geyBDU1NQcm9wZXJ0eVdlYmtpdFRleHRF
bXBoYXNpc1N0eWxlLCBDU1NQcm9wZXJ0eVdlYmtpdFRleHRFbXBoYXNpc0NvbG9yIH07CiAgICAg
ICAgIHJldHVybiBwYXJzZVNob3J0aGFuZChwcm9wSWQsIHByb3BlcnRpZXMsIFdURl9BUlJBWV9M
RU5HVEgocHJvcGVydGllcyksIGltcG9ydGFudCk7CiAgICAgfQogCi0gICAgY2FzZSBDU1NQcm9w
ZXJ0eVdlYmtpdFRleHRFbXBoYXNpc1Bvc2l0aW9uOgotICAgICAgICBpZiAoaWQgPT0gQ1NTVmFs
dWVPdmVyIHx8IGlkID09IENTU1ZhbHVlVW5kZXIpCi0gICAgICAgICAgICB2YWxpZFByaW1pdGl2
ZSA9IHRydWU7Ci0gICAgICAgIGJyZWFrOwotCiAgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdFRl
eHRFbXBoYXNpc1N0eWxlOgogICAgICAgICByZXR1cm4gcGFyc2VUZXh0RW1waGFzaXNTdHlsZShp
bXBvcnRhbnQpOwogCkBAIC0yMzI3LDExICsyNDQyLDYgQEAgYm9vbCBDU1NQYXJzZXI6OnBhcnNl
VmFsdWUoaW50IHByb3BJZCwgYm9vbCBpbXBvcnRhbnQpCiAgICAgICAgICAgICByZXR1cm4gcGFy
c2VGb250RmVhdHVyZVNldHRpbmdzKGltcG9ydGFudCk7CiAgICAgICAgIGJyZWFrOwogCi0gICAg
Y2FzZSBDU1NQcm9wZXJ0eVdlYmtpdEZvbnRLZXJuaW5nOgotICAgICAgICBpZiAoaWQgPT0gQ1NT
VmFsdWVBdXRvIHx8IGlkID09IENTU1ZhbHVlTm9ybWFsIHx8IGlkID09IENTU1ZhbHVlTm9uZSkK
LSAgICAgICAgICAgIHZhbGlkUHJpbWl0aXZlID0gdHJ1ZTsKLSAgICAgICAgYnJlYWs7Ci0KICAg
ICBjYXNlIENTU1Byb3BlcnR5V2Via2l0Rm9udFZhcmlhbnRMaWdhdHVyZXM6CiAgICAgICAgIGlm
IChpZCA9PSBDU1NWYWx1ZU5vcm1hbCkKICAgICAgICAgICAgIHZhbGlkUHJpbWl0aXZlID0gdHJ1
ZTsKQEAgLTIzNDYsMTUgKzI0NTYsNiBAQCBib29sIENTU1BhcnNlcjo6cGFyc2VWYWx1ZShpbnQg
cHJvcElkLCBib29sIGltcG9ydGFudCkKICAgICAgICAgZWxzZSBpZiAodmFsdWUtPnVuaXQgPT0g
Q1NTUGFyc2VyVmFsdWU6OkZ1bmN0aW9uKQogICAgICAgICAgICAgcmV0dXJuIHBhcnNlV3JhcFNo
YXBlKChwcm9wSWQgPT0gQ1NTUHJvcGVydHlXZWJraXRXcmFwU2hhcGVJbnNpZGUpLCBpbXBvcnRh
bnQpOwogICAgICAgICBicmVhazsKLSAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0V3JhcEZsb3c6
Ci0gICAgICAgIGlmIChpZCA9PSBDU1NWYWx1ZUF1dG8gfHwgaWQgPT0gQ1NTVmFsdWVCb3RoIHx8
IGlkID09IENTU1ZhbHVlTGVmdCB8fCBpZCA9PSBDU1NWYWx1ZVJpZ2h0IHx8IGlkID09IENTU1Zh
bHVlTWF4aW11bSB8fCBpZCA9PSBDU1NWYWx1ZUNsZWFyKQotICAgICAgICAgICAgdmFsaWRQcmlt
aXRpdmUgPSB0cnVlOwotICAgICAgICBicmVhazsKLQotICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJr
aXRXcmFwVGhyb3VnaDoKLSAgICAgICAgaWYgKGlkID09IENTU1ZhbHVlV3JhcCB8fCBpZCA9PSBD
U1NWYWx1ZU5vbmUpCi0gICAgICAgICAgICB2YWxpZFByaW1pdGl2ZSA9IHRydWU7Ci0gICAgICAg
IGJyZWFrOwogICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRXcmFwTWFyZ2luOgogICAgIGNhc2Ug
Q1NTUHJvcGVydHlXZWJraXRXcmFwUGFkZGluZzoKICAgICAgICAgdmFsaWRQcmltaXRpdmUgPSAo
IWlkICYmIHZhbGlkVW5pdCh2YWx1ZSwgRkxlbmd0aCB8IEZOb25OZWcsIG1fc3RyaWN0KSk7CkBA
IC0yMzYzLDkgKzI0NjQsMTIgQEAgYm9vbCBDU1NQYXJzZXI6OnBhcnNlVmFsdWUoaW50IHByb3BJ
ZCwgYm9vbCBpbXBvcnRhbnQpCiAgICAgICAgIGNvbnN0IGludCBwcm9wZXJ0aWVzW10gPSB7IENT
U1Byb3BlcnR5V2Via2l0V3JhcEZsb3csIENTU1Byb3BlcnR5V2Via2l0V3JhcE1hcmdpbiwgQ1NT
UHJvcGVydHlXZWJraXRXcmFwUGFkZGluZyB9OwogICAgICAgICByZXR1cm4gcGFyc2VTaG9ydGhh
bmQocHJvcElkLCBwcm9wZXJ0aWVzLCBXVEZfQVJSQVlfTEVOR1RIKHByb3BlcnRpZXMpLCBpbXBv
cnRhbnQpOwogICAgIH0KLSNpZiBFTkFCTEUoU1ZHKQogICAgIGRlZmF1bHQ6Ci0gICAgICAgIHJl
dHVybiBwYXJzZVNWR1ZhbHVlKHByb3BJZCwgaW1wb3J0YW50KTsKKyNpZiBFTkFCTEUoU1ZHKQor
ICAgIHJldHVybiBwYXJzZVNWR1ZhbHVlKHByb3BJZCwgaW1wb3J0YW50KTsKKyNlbHNlCisgICAg
QVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgcmV0dXJuIGZhbHNlOwogI2VuZGlmCiAgICAgfQog
Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>132795</attachid>
            <date>2012-03-20 04:20:59 -0700</date>
            <delta_ts>2012-03-20 04:27:30 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-80874-20120320082041.patch</filename>
            <type>text/plain</type>
            <size>53340</size>
            <attacher name="Alexis Menard (darktears)">menard</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTExMzc4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNzY5NTQ1YjQ1ODQwOTBk
MzVlNzE5MWM4OTMwYzBmZDQ3YWExMDYwOS4uMjNjZTBiYmE2N2RmY2Q4NzkxYWEzZDRkMGI3OWY4
M2NlOTk2ZTBiNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI4IEBACisyMDEyLTAzLTIwICBBbGV4
aXMgTWVuYXJkICA8YWxleGlzLm1lbmFyZEBvcGVuYm9zc2Eub3JnPgorCisgICAgICAgIEltcGxl
bWVudCBhIGZhc3QgcGF0aCB3aGVuIHNldHRpbmcgQ1NTIHByb3BlcnRpZXMgd2l0aCBrZXl3b3Jk
cyBmcm9tIEpTLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9ODA4NzQKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICBUaGUgaWRlYSBpcyB0byBhdm9pZCB0aGUgY3JlYXRpb24gb2YgdGhlIENTU1BhcnNlciBpbnN0
YW5jZSBhbmQgdG8gcnVuIHRoZSBwYXJzZXIgb24KKyAgICAgICAgYSBzdHJpbmcgd2Uga25vdyBp
dCBzaG91bGQgYmUgYSBrZXl3b3JkLiBXaGVuIEpTIGNhbGxzIHBhcnNlVmFsdWUgd2UgdHJ5IHRv
IGNoZWNrIGlmIHdlIGNhbgorICAgICAgICB1c2UgdGhlIGZhc3QgcGF0aCBhbmQgaWYgdGhlIGtl
eXdvcmQgaXMgYWNjZXB0ZWQgdGhlbiB3ZSBqdXN0IGFkZCBpdCB0byB0aGUgZGVjbGFyYXRpb24g
ZGlyZWN0bHkuCisgICAgICAgIEZvciB0aGUgc2FrZSBvZiBtYWludGVuYW5jZSB0aGUgcGFyc2VW
YWx1ZSBmdW5jdGlvbiB1c2VkIGJ5IENTU0dyYW1tYXIueSBpcyBzaGFyaW5nIHNvbWUgY29kZSB3
aXRoCisgICAgICAgIHRoZSBmYXN0IHBhdGggKGtleXdvcmQgbWF0Y2hpbmcgbW9zdGx5KS4KKwor
ICAgICAgICBUaGlzIHBhdGNoIGltcHJvdmVzIHRoaXMgdXNlIGNhc2UgYnkgMjAlLiBTZXR0aW5n
IGtleXdvcmQgcHJvcGVydGllcyBmcm9tIEpTIGlzIHVzZWQgYSBsb3QgaW4KKyAgICAgICAgR29v
Z2xlIE1hcHMgZm9yIGV4YW1wbGUgKHdoZW4gem9vbWluZyBvciBwYW5uaW5nKS4KKworICAgICAg
ICBObyBuZXcgdGVzdHMgOiBpdCdzIGEgcGVyZm9ybWFuY2UgaW1wcm92ZW1lbnQsIHRoZXJlIHNo
b3VsZG4ndCBiZSBhbnkgYmVoYXZpb3IgY2hhbmdlLgorCisgICAgICAgICogY3NzL0NTU1BhcnNl
ci5jcHA6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6OmlzVmFsaWRLZXl3
b3JkUHJvcGVydHlBbmRWYWx1ZSk6CisgICAgICAgIChXZWJDb3JlOjppc0tleXdvcmRQcm9wZXJ0
eUlEKToKKyAgICAgICAgKFdlYkNvcmU6OnBhcnNlS2V5d29yZFZhbHVlKToKKyAgICAgICAgKFdl
YkNvcmU6OkNTU1BhcnNlcjo6cGFyc2VWYWx1ZSk6CisKIDIwMTItMDMtMjAgIE1paG5lYSBPdmlk
ZW5pZSAgPG1paG5lYUBhZG9iZS5jb20+CiAKICAgICAgICAgW0NTU1JlZ2lvbnNdSW1wbGVtZW50
IE5hbWVkRmxvdzo6Z2V0UmVnaW9uc0J5Q29udGVudE5vZGUKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2Nzcy9DU1NQYXJzZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU1BhcnNlci5j
cHAKaW5kZXggY2FhMmM4ZTE1NTUyZTQ2YmZkNTcyODhhZjczOTExYTFjZDNiYTFkNi4uM2U3OGE4
ZTBhMzI0YmM3OThmN2ZhMjAyYTA5OTRhMTU2OTVkMzAxNyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvY3NzL0NTU1BhcnNlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU1BhcnNl
ci5jcHAKQEAgLTQ3OSw2ICs0NzksNDU2IEBAIHN0YXRpYyBib29sIHBhcnNlU2ltcGxlTGVuZ3Ro
VmFsdWUoU3R5bGVQcm9wZXJ0eVNldCogZGVjbGFyYXRpb24sIGludCBwcm9wZXJ0eUlkCiAgICAg
cmV0dXJuIHRydWU7CiB9CiAKKworc3RhdGljIGlubGluZSBib29sIGlzVmFsaWRLZXl3b3JkUHJv
cGVydHlBbmRWYWx1ZShpbnQgcHJvcGVydHlJZCwgaW50IHZhbHVlSUQpCit7CisgICAgaWYgKCF2
YWx1ZUlEKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBzd2l0Y2ggKHByb3BlcnR5SWQp
IHsKKyAgICBjYXNlIENTU1Byb3BlcnR5Qm9yZGVyQ29sbGFwc2U6IC8vIGNvbGxhcHNlIHwgc2Vw
YXJhdGUgfCBpbmhlcml0CisgICAgICAgIGlmICh2YWx1ZUlEID09IENTU1ZhbHVlQ29sbGFwc2Ug
fHwgdmFsdWVJRCA9PSBDU1NWYWx1ZVNlcGFyYXRlKQorICAgICAgICAgICAgcmV0dXJuIHRydWU7
CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgQ1NTUHJvcGVydHlCb3JkZXJUb3BTdHlsZTogLy8g
PGJvcmRlci1zdHlsZT4gfCBpbmhlcml0CisgICAgY2FzZSBDU1NQcm9wZXJ0eUJvcmRlclJpZ2h0
U3R5bGU6IC8vIERlZmluZWQgYXM6IG5vbmUgfCBoaWRkZW4gfCBkb3R0ZWQgfCBkYXNoZWQgfAor
ICAgIGNhc2UgQ1NTUHJvcGVydHlCb3JkZXJCb3R0b21TdHlsZTogLy8gc29saWQgfCBkb3VibGUg
fCBncm9vdmUgfCByaWRnZSB8IGluc2V0IHwgb3V0c2V0CisgICAgY2FzZSBDU1NQcm9wZXJ0eUJv
cmRlckxlZnRTdHlsZToKKyAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0Qm9yZGVyQWZ0ZXJTdHls
ZToKKyAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0Qm9yZGVyQmVmb3JlU3R5bGU6CisgICAgY2Fz
ZSBDU1NQcm9wZXJ0eVdlYmtpdEJvcmRlckVuZFN0eWxlOgorICAgIGNhc2UgQ1NTUHJvcGVydHlX
ZWJraXRCb3JkZXJTdGFydFN0eWxlOgorICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRDb2x1bW5S
dWxlU3R5bGU6CisgICAgICAgIGlmICh2YWx1ZUlEID49IENTU1ZhbHVlTm9uZSAmJiB2YWx1ZUlE
IDw9IENTU1ZhbHVlRG91YmxlKQorICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgIGJy
ZWFrOworICAgIGNhc2UgQ1NTUHJvcGVydHlCb3hTaXppbmc6CisgICAgICAgICBpZiAodmFsdWVJ
RCA9PSBDU1NWYWx1ZUJvcmRlckJveCB8fCB2YWx1ZUlEID09IENTU1ZhbHVlQ29udGVudEJveCkK
KyAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgIGJyZWFrOworICAgIGNhc2UgQ1NT
UHJvcGVydHlDYXB0aW9uU2lkZTogLy8gdG9wIHwgYm90dG9tIHwgbGVmdCB8IHJpZ2h0IHwgaW5o
ZXJpdAorICAgICAgICBpZiAodmFsdWVJRCA9PSBDU1NWYWx1ZUxlZnQgfHwgdmFsdWVJRCA9PSBD
U1NWYWx1ZVJpZ2h0IHx8IHZhbHVlSUQgPT0gQ1NTVmFsdWVUb3AgfHwgdmFsdWVJRCA9PSBDU1NW
YWx1ZUJvdHRvbSkKKyAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICBicmVhazsKKyAg
ICBjYXNlIENTU1Byb3BlcnR5Q2xlYXI6IC8vIG5vbmUgfCBsZWZ0IHwgcmlnaHQgfCBib3RoIHwg
aW5oZXJpdAorICAgICAgICBpZiAodmFsdWVJRCA9PSBDU1NWYWx1ZU5vbmUgfHwgdmFsdWVJRCA9
PSBDU1NWYWx1ZUxlZnQgfHwgdmFsdWVJRCA9PSBDU1NWYWx1ZVJpZ2h0IHx8IHZhbHVlSUQgPT0g
Q1NTVmFsdWVCb3RoKQorICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgIGJyZWFrOwor
ICAgIGNhc2UgQ1NTUHJvcGVydHlEaXJlY3Rpb246IC8vIGx0ciB8IHJ0bCB8IGluaGVyaXQKKyAg
ICAgICAgaWYgKHZhbHVlSUQgPT0gQ1NTVmFsdWVMdHIgfHwgdmFsdWVJRCA9PSBDU1NWYWx1ZVJ0
bCkKKyAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICBicmVhazsKKyAgICBjYXNlIENT
U1Byb3BlcnR5RGlzcGxheToKKyAgICAgICAgLy8gaW5saW5lIHwgYmxvY2sgfCBsaXN0LWl0ZW0g
fCBydW4taW4gfCBpbmxpbmUtYmxvY2sgfCB0YWJsZSB8CisgICAgICAgIC8vIGlubGluZS10YWJs
ZSB8IHRhYmxlLXJvdy1ncm91cCB8IHRhYmxlLWhlYWRlci1ncm91cCB8IHRhYmxlLWZvb3Rlci1n
cm91cCB8IHRhYmxlLXJvdyB8CisgICAgICAgIC8vIHRhYmxlLWNvbHVtbi1ncm91cCB8IHRhYmxl
LWNvbHVtbiB8IHRhYmxlLWNlbGwgfCB0YWJsZS1jYXB0aW9uIHwgLXdlYmtpdC1ib3ggfCAtd2Vi
a2l0LWlubGluZS1ib3ggfCBub25lIHwgaW5oZXJpdAorICAgICAgICAvLyAtd2Via2l0LWZsZXhi
b3ggfCAtd2Via2l0LWlubGluZS1mbGV4Ym94IHwgLXdlYmtpdC1ncmlkIHwgLXdlYmtpdC1pbmxp
bmUtZ3JpZAorICAgICAgICBpZiAoKHZhbHVlSUQgPj0gQ1NTVmFsdWVJbmxpbmUgJiYgdmFsdWVJ
RCA8PSBDU1NWYWx1ZVdlYmtpdElubGluZUZsZXhib3gpIHx8IHZhbHVlSUQgPT0gQ1NTVmFsdWVO
b25lKQorICAgICAgICAgICAgcmV0dXJuIHRydWU7CisjaWYgRU5BQkxFKENTU19HUklEX0xBWU9V
VCkKKyAgICAgICAgaWYgKHZhbHVlSUQgPT0gQ1NTVmFsdWVXZWJraXRHcmlkIHx8IHZhbHVlSUQg
PT0gQ1NTVmFsdWVXZWJraXRJbmxpbmVHcmlkKQorICAgICAgICAgICAgcmV0dXJuIHRydWU7Cisg
ICAgICAgIGJyZWFrOworI2VuZGlmCisgICAgY2FzZSBDU1NQcm9wZXJ0eUVtcHR5Q2VsbHM6IC8v
IHNob3cgfCBoaWRlIHwgaW5oZXJpdAorICAgICAgICBpZiAodmFsdWVJRCA9PSBDU1NWYWx1ZVNo
b3cgfHwgdmFsdWVJRCA9PSBDU1NWYWx1ZUhpZGUpCisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsK
KyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBDU1NQcm9wZXJ0eUZsb2F0OiAvLyBsZWZ0IHwgcmln
aHQgfCBub25lIHwgcG9zaXRpb25lZCB8IGNlbnRlciAoZm9yIGJ1Z2d5IENTUywgbWFwcyB0byBu
b25lKQorICAgICAgICBpZiAodmFsdWVJRCA9PSBDU1NWYWx1ZUxlZnQgfHwgdmFsdWVJRCA9PSBD
U1NWYWx1ZVJpZ2h0IHx8IHZhbHVlSUQgPT0gQ1NTVmFsdWVOb25lIHx8IHZhbHVlSUQgPT0gQ1NT
VmFsdWVDZW50ZXIgfHwgdmFsdWVJRCA9PSBDU1NWYWx1ZVdlYmtpdFBvc2l0aW9uZWQpCisgICAg
ICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBDU1NQcm9wZXJ0
eUZvbnRTdHlsZTogLy8gbm9ybWFsIHwgaXRhbGljIHwgb2JsaXF1ZSB8IGluaGVyaXQKKyAgICAg
ICAgaWYgKHZhbHVlSUQgPT0gQ1NTVmFsdWVOb3JtYWwgfHwgdmFsdWVJRCA9PSBDU1NWYWx1ZUl0
YWxpYyB8fCB2YWx1ZUlEID09IENTU1ZhbHVlT2JsaXF1ZSkKKyAgICAgICAgICAgIHJldHVybiB0
cnVlOworICAgICAgICBicmVhazsKKyAgICBjYXNlIENTU1Byb3BlcnR5SW1hZ2VSZW5kZXJpbmc6
IC8vIGF1dG8gfCBvcHRpbWl6ZUNvbnRyYXN0CisgICAgICAgIGlmICh2YWx1ZUlEID09IENTU1Zh
bHVlQXV0byB8fCB2YWx1ZUlEID09IENTU1ZhbHVlV2Via2l0T3B0aW1pemVDb250cmFzdCkKKyAg
ICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICBicmVhazsKKyAgICBjYXNlIENTU1Byb3Bl
cnR5TGlzdFN0eWxlUG9zaXRpb246IC8vIGluc2lkZSB8IG91dHNpZGUgfCBpbmhlcml0CisgICAg
ICAgIGlmICh2YWx1ZUlEID09IENTU1ZhbHVlSW5zaWRlIHx8IHZhbHVlSUQgPT0gQ1NTVmFsdWVP
dXRzaWRlKQorICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgIGJyZWFrOworICAgIGNh
c2UgQ1NTUHJvcGVydHlMaXN0U3R5bGVUeXBlOgorICAgICAgICAvLyBTZWUgc2VjdGlvbiBDU1Nf
UFJPUF9MSVNUX1NUWUxFX1RZUEUgb2YgZmlsZSBDU1NWYWx1ZUtleXdvcmRzLmluCisgICAgICAg
IC8vIGZvciB0aGUgbGlzdCBvZiBzdXBwb3J0ZWQgbGlzdC1zdHlsZS10eXBlcy4KKyAgICAgICAg
aWYgKCh2YWx1ZUlEID49IENTU1ZhbHVlRGlzYyAmJiB2YWx1ZUlEIDw9IENTU1ZhbHVlS2F0YWth
bmFJcm9oYSkgfHwgdmFsdWVJRCA9PSBDU1NWYWx1ZU5vbmUpCisgICAgICAgICAgICByZXR1cm4g
dHJ1ZTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBDU1NQcm9wZXJ0eU91dGxpbmVTdHlsZTog
Ly8gKDxib3JkZXItc3R5bGU+IGV4Y2VwdCBoaWRkZW4pIHwgYXV0byB8IGluaGVyaXQKKyAgICAg
ICAgaWYgKHZhbHVlSUQgPT0gQ1NTVmFsdWVBdXRvIHx8IHZhbHVlSUQgPT0gQ1NTVmFsdWVOb25l
IHx8ICh2YWx1ZUlEID49IENTU1ZhbHVlSW5zZXQgJiYgdmFsdWVJRCA8PSBDU1NWYWx1ZURvdWJs
ZSkpCisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBD
U1NQcm9wZXJ0eU92ZXJmbG93WDoKKyAgICBjYXNlIENTU1Byb3BlcnR5T3ZlcmZsb3dZOiAvLyB2
aXNpYmxlIHwgaGlkZGVuIHwgc2Nyb2xsIHwgYXV0byB8IG1hcnF1ZWUgfCBvdmVybGF5IHwgaW5o
ZXJpdAorICAgICAgICBpZiAodmFsdWVJRCA9PSBDU1NWYWx1ZVZpc2libGUgfHwgdmFsdWVJRCA9
PSBDU1NWYWx1ZUhpZGRlbiB8fCB2YWx1ZUlEID09IENTU1ZhbHVlU2Nyb2xsIHx8IHZhbHVlSUQg
PT0gQ1NTVmFsdWVBdXRvIHx8IHZhbHVlSUQgPT0gQ1NTVmFsdWVPdmVybGF5IHx8IHZhbHVlSUQg
PT0gQ1NTVmFsdWVXZWJraXRNYXJxdWVlKQorICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAg
ICAgIGJyZWFrOworICAgIGNhc2UgQ1NTUHJvcGVydHlQb2ludGVyRXZlbnRzOgorICAgICAgICAv
LyBub25lIHwgdmlzaWJsZVBhaW50ZWQgfCB2aXNpYmxlRmlsbCB8IHZpc2libGVTdHJva2UgfCB2
aXNpYmxlIHwKKyAgICAgICAgLy8gcGFpbnRlZCB8IGZpbGwgfCBzdHJva2UgfCBhdXRvIHwgYWxs
IHwgaW5oZXJpdAorICAgICAgICBpZiAodmFsdWVJRCA9PSBDU1NWYWx1ZVZpc2libGUgfHwgdmFs
dWVJRCA9PSBDU1NWYWx1ZU5vbmUgfHwgdmFsdWVJRCA9PSBDU1NWYWx1ZUFsbCB8fCB2YWx1ZUlE
ID09IENTU1ZhbHVlQXV0byB8fCAodmFsdWVJRCA+PSBDU1NWYWx1ZVZpc2libGVwYWludGVkICYm
IHZhbHVlSUQgPD0gQ1NTVmFsdWVTdHJva2UpKQorICAgICAgICAgICAgcmV0dXJuIHRydWU7Cisg
ICAgICAgIGJyZWFrOworICAgIGNhc2UgQ1NTUHJvcGVydHlQb3NpdGlvbjogLy8gc3RhdGljIHwg
cmVsYXRpdmUgfCBhYnNvbHV0ZSB8IGZpeGVkIHwgaW5oZXJpdAorICAgICAgICBpZiAodmFsdWVJ
RCA9PSBDU1NWYWx1ZVN0YXRpYyB8fCB2YWx1ZUlEID09IENTU1ZhbHVlUmVsYXRpdmUgfHwgdmFs
dWVJRCA9PSBDU1NWYWx1ZUFic29sdXRlIHx8IHZhbHVlSUQgPT0gQ1NTVmFsdWVGaXhlZCkKKyAg
ICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICBicmVhazsKKyAgICBjYXNlIENTU1Byb3Bl
cnR5UmVzaXplOiAvLyBub25lIHwgYm90aCB8IGhvcml6b250YWwgfCB2ZXJ0aWNhbCB8IGF1dG8K
KyAgICAgICAgaWYgKHZhbHVlSUQgPT0gQ1NTVmFsdWVOb25lIHx8IHZhbHVlSUQgPT0gQ1NTVmFs
dWVCb3RoIHx8IHZhbHVlSUQgPT0gQ1NTVmFsdWVIb3Jpem9udGFsIHx8IHZhbHVlSUQgPT0gQ1NT
VmFsdWVWZXJ0aWNhbCB8fCB2YWx1ZUlEID09IENTU1ZhbHVlQXV0bykKKyAgICAgICAgICAgIHJl
dHVybiB0cnVlOworICAgICAgICBicmVhazsKKyAgICBjYXNlIENTU1Byb3BlcnR5U3BlYWs6IC8v
IG5vbmUgfCBub3JtYWwgfCBzcGVsbC1vdXQgfCBkaWdpdHMgfCBsaXRlcmFsLXB1bmN0dWF0aW9u
IHwgbm8tcHVuY3R1YXRpb24gfCBpbmhlcml0CisgICAgICAgIGlmICh2YWx1ZUlEID09IENTU1Zh
bHVlTm9uZSB8fCB2YWx1ZUlEID09IENTU1ZhbHVlTm9ybWFsIHx8IHZhbHVlSUQgPT0gQ1NTVmFs
dWVTcGVsbE91dCB8fCB2YWx1ZUlEID09IENTU1ZhbHVlRGlnaXRzIHx8IHZhbHVlSUQgPT0gQ1NT
VmFsdWVMaXRlcmFsUHVuY3R1YXRpb24gfHwgdmFsdWVJRCA9PSBDU1NWYWx1ZU5vUHVuY3R1YXRp
b24pCisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBD
U1NQcm9wZXJ0eVRhYmxlTGF5b3V0OiAvLyBhdXRvIHwgZml4ZWQgfCBpbmhlcml0CisgICAgICAg
IGlmICh2YWx1ZUlEID09IENTU1ZhbHVlQXV0byB8fCB2YWx1ZUlEID09IENTU1ZhbHVlRml4ZWQp
CisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBDU1NQ
cm9wZXJ0eVRleHRMaW5lVGhyb3VnaE1vZGU6CisgICAgY2FzZSBDU1NQcm9wZXJ0eVRleHRPdmVy
bGluZU1vZGU6CisgICAgY2FzZSBDU1NQcm9wZXJ0eVRleHRVbmRlcmxpbmVNb2RlOgorICAgICAg
ICBpZiAodmFsdWVJRCA9PSBDU1NWYWx1ZUNvbnRpbnVvdXMgfHwgdmFsdWVJRCA9PSBDU1NWYWx1
ZVNraXBXaGl0ZVNwYWNlKQorICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgIGJyZWFr
OworICAgIGNhc2UgQ1NTUHJvcGVydHlUZXh0TGluZVRocm91Z2hTdHlsZToKKyAgICBjYXNlIENT
U1Byb3BlcnR5VGV4dE92ZXJsaW5lU3R5bGU6CisgICAgY2FzZSBDU1NQcm9wZXJ0eVRleHRVbmRl
cmxpbmVTdHlsZToKKyAgICAgICAgaWYgKHZhbHVlSUQgPT0gQ1NTVmFsdWVOb25lIHx8IHZhbHVl
SUQgPT0gQ1NTVmFsdWVTb2xpZCB8fCB2YWx1ZUlEID09IENTU1ZhbHVlRG91YmxlIHx8IHZhbHVl
SUQgPT0gQ1NTVmFsdWVEYXNoZWQgfHwgdmFsdWVJRCA9PSBDU1NWYWx1ZURvdERhc2ggfHwgdmFs
dWVJRCA9PSBDU1NWYWx1ZURvdERvdERhc2ggfHwgdmFsdWVJRCA9PSBDU1NWYWx1ZVdhdmUpCisg
ICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBDU1NQcm9w
ZXJ0eVRleHRPdmVyZmxvdzogLy8gY2xpcCB8IGVsbGlwc2lzCisgICAgICAgIGlmICh2YWx1ZUlE
ID09IENTU1ZhbHVlQ2xpcCB8fCB2YWx1ZUlEID09IENTU1ZhbHVlRWxsaXBzaXMpCisgICAgICAg
ICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBDU1NQcm9wZXJ0eVRl
eHRSZW5kZXJpbmc6IC8vIGF1dG8gfCBvcHRpbWl6ZVNwZWVkIHwgb3B0aW1pemVMZWdpYmlsaXR5
IHwgZ2VvbWV0cmljUHJlY2lzaW9uCisgICAgICAgIGlmICh2YWx1ZUlEID09IENTU1ZhbHVlQXV0
byB8fCB2YWx1ZUlEID09IENTU1ZhbHVlT3B0aW1pemVzcGVlZCB8fCB2YWx1ZUlEID09IENTU1Zh
bHVlT3B0aW1pemVsZWdpYmlsaXR5IHx8IHZhbHVlSUQgPT0gQ1NTVmFsdWVHZW9tZXRyaWNwcmVj
aXNpb24pCisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgYnJlYWs7CisgICAgY2Fz
ZSBDU1NQcm9wZXJ0eVRleHRUcmFuc2Zvcm06IC8vIGNhcGl0YWxpemUgfCB1cHBlcmNhc2UgfCBs
b3dlcmNhc2UgfCBub25lIHwgaW5oZXJpdAorICAgICAgICBpZiAoKHZhbHVlSUQgPj0gQ1NTVmFs
dWVDYXBpdGFsaXplICYmIHZhbHVlSUQgPD0gQ1NTVmFsdWVMb3dlcmNhc2UpIHx8IHZhbHVlSUQg
PT0gQ1NTVmFsdWVOb25lKQorICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgIGJyZWFr
OworICAgIGNhc2UgQ1NTUHJvcGVydHlWaXNpYmlsaXR5OiAvLyB2aXNpYmxlIHwgaGlkZGVuIHwg
Y29sbGFwc2UgfCBpbmhlcml0CisgICAgICAgIGlmICh2YWx1ZUlEID09IENTU1ZhbHVlVmlzaWJs
ZSB8fCB2YWx1ZUlEID09IENTU1ZhbHVlSGlkZGVuIHx8IHZhbHVlSUQgPT0gQ1NTVmFsdWVDb2xs
YXBzZSkKKyAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICBicmVhazsKKyAgICBjYXNl
IENTU1Byb3BlcnR5V2Via2l0QXBwZWFyYW5jZToKKyAgICAgICAgaWYgKCh2YWx1ZUlEID49IENT
U1ZhbHVlQ2hlY2tib3ggJiYgdmFsdWVJRCA8PSBDU1NWYWx1ZVRleHRhcmVhKSB8fCB2YWx1ZUlE
ID09IENTU1ZhbHVlTm9uZSkKKyAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICBicmVh
azsKKyAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0QmFja2ZhY2VWaXNpYmlsaXR5OgorICAgICAg
ICBpZiAodmFsdWVJRCA9PSBDU1NWYWx1ZVZpc2libGUgfHwgdmFsdWVJRCA9PSBDU1NWYWx1ZUhp
ZGRlbikKKyAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICBicmVhazsKKyAgICBjYXNl
IENTU1Byb3BlcnR5V2Via2l0Qm9yZGVyRml0OgorICAgICAgICBpZiAodmFsdWVJRCA9PSBDU1NW
YWx1ZUJvcmRlciB8fCB2YWx1ZUlEID09IENTU1ZhbHVlTGluZXMpCisgICAgICAgICAgICByZXR1
cm4gdHJ1ZTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdEJveEFs
aWduOgorICAgICAgICBpZiAodmFsdWVJRCA9PSBDU1NWYWx1ZVN0cmV0Y2ggfHwgdmFsdWVJRCA9
PSBDU1NWYWx1ZVN0YXJ0IHx8IHZhbHVlSUQgPT0gQ1NTVmFsdWVFbmQgfHwgdmFsdWVJRCA9PSBD
U1NWYWx1ZUNlbnRlciB8fCB2YWx1ZUlEID09IENTU1ZhbHVlQmFzZWxpbmUpCisgICAgICAgICAg
ICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtp
dEJveERpcmVjdGlvbjoKKyAgICAgICAgaWYgKHZhbHVlSUQgPT0gQ1NTVmFsdWVOb3JtYWwgfHwg
dmFsdWVJRCA9PSBDU1NWYWx1ZVJldmVyc2UpCisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAg
ICAgICAgYnJlYWs7CisgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdEJveExpbmVzOgorICAgICAg
ICBpZiAodmFsdWVJRCA9PSBDU1NWYWx1ZVNpbmdsZSB8fCB2YWx1ZUlEID09IENTU1ZhbHVlTXVs
dGlwbGUpCisgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgIGJyZWFrOworICAg
IGNhc2UgQ1NTUHJvcGVydHlXZWJraXRCb3hPcmllbnQ6CisgICAgICAgIGlmICh2YWx1ZUlEID09
IENTU1ZhbHVlSG9yaXpvbnRhbCB8fCB2YWx1ZUlEID09IENTU1ZhbHVlVmVydGljYWwgfHwgdmFs
dWVJRCA9PSBDU1NWYWx1ZUlubGluZUF4aXMgfHwgdmFsdWVJRCA9PSBDU1NWYWx1ZUJsb2NrQXhp
cykKKyAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICBicmVhazsKKyAgICBjYXNlIENT
U1Byb3BlcnR5V2Via2l0Qm94UGFjazoKKyAgICAgICAgaWYgKHZhbHVlSUQgPT0gQ1NTVmFsdWVT
dGFydCB8fCB2YWx1ZUlEID09IENTU1ZhbHVlRW5kIHx8IHZhbHVlSUQgPT0gQ1NTVmFsdWVDZW50
ZXIgfHwgdmFsdWVJRCA9PSBDU1NWYWx1ZUp1c3RpZnkpCisgICAgICAgICAgICByZXR1cm4gdHJ1
ZTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdENvbG9yQ29ycmVj
dGlvbjoKKyAgICAgICAgaWYgKHZhbHVlSUQgPT0gQ1NTVmFsdWVTcmdiIHx8IHZhbHVlSUQgPT0g
Q1NTVmFsdWVEZWZhdWx0KQorICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgIGJyZWFr
OworICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRGbGV4QWxpZ246CisgICAgICAgIGlmICh2YWx1
ZUlEID09IENTU1ZhbHVlU3RhcnQgfHwgdmFsdWVJRCA9PSBDU1NWYWx1ZUVuZCB8fCB2YWx1ZUlE
ID09IENTU1ZhbHVlQ2VudGVyIHx8IHZhbHVlSUQgPT0gQ1NTVmFsdWVCYXNlbGluZSB8fCB2YWx1
ZUlEID09IENTU1ZhbHVlU3RyZXRjaCkKKyAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAg
ICBicmVhazsKKyAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0RmxleERpcmVjdGlvbjoKKyAgICAg
ICAgaWYgKHZhbHVlSUQgPT0gQ1NTVmFsdWVSb3cgfHwgdmFsdWVJRCA9PSBDU1NWYWx1ZVJvd1Jl
dmVyc2UgfHwgdmFsdWVJRCA9PSBDU1NWYWx1ZUNvbHVtbiB8fCB2YWx1ZUlEID09IENTU1ZhbHVl
Q29sdW1uUmV2ZXJzZSkKKyAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgYnJl
YWs7CisgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdEZsZXhJdGVtQWxpZ246CisgICAgICAgIGlm
ICh2YWx1ZUlEID09IENTU1ZhbHVlQXV0byB8fCB2YWx1ZUlEID09IENTU1ZhbHVlU3RhcnQgfHwg
dmFsdWVJRCA9PSBDU1NWYWx1ZUVuZCB8fCB2YWx1ZUlEID09IENTU1ZhbHVlQ2VudGVyIHx8IHZh
bHVlSUQgPT0gQ1NTVmFsdWVCYXNlbGluZSB8fCB2YWx1ZUlEID09IENTU1ZhbHVlU3RyZXRjaCkK
KyAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICBicmVhazsKKyAgICBjYXNlIENTU1By
b3BlcnR5V2Via2l0RmxleExpbmVQYWNrOgorICAgICAgICAgaWYgKHZhbHVlSUQgPT0gQ1NTVmFs
dWVTdGFydCB8fCB2YWx1ZUlEID09IENTU1ZhbHVlRW5kIHx8IHZhbHVlSUQgPT0gQ1NTVmFsdWVD
ZW50ZXIgfHwgdmFsdWVJRCA9PSBDU1NWYWx1ZUp1c3RpZnkgfHwgdmFsdWVJRCA9PSBDU1NWYWx1
ZURpc3RyaWJ1dGUgfHwgdmFsdWVJRCA9PSBDU1NWYWx1ZVN0cmV0Y2gpCisgICAgICAgICAgICAg
cmV0dXJuIHRydWU7CisgICAgICAgICBicmVhazsKKyAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0
RmxleFBhY2s6CisgICAgICAgIGlmICh2YWx1ZUlEID09IENTU1ZhbHVlU3RhcnQgfHwgdmFsdWVJ
RCA9PSBDU1NWYWx1ZUVuZCB8fCB2YWx1ZUlEID09IENTU1ZhbHVlQ2VudGVyIHx8IHZhbHVlSUQg
PT0gQ1NTVmFsdWVKdXN0aWZ5IHx8IHZhbHVlSUQgPT0gQ1NTVmFsdWVEaXN0cmlidXRlKQorICAg
ICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgQ1NTUHJvcGVy
dHlXZWJraXRGbGV4V3JhcDoKKyAgICAgICAgaWYgKHZhbHVlSUQgPT0gQ1NTVmFsdWVOb25lIHx8
IHZhbHVlSUQgPT0gQ1NTVmFsdWVXcmFwIHx8IHZhbHVlSUQgPT0gQ1NTVmFsdWVXcmFwUmV2ZXJz
ZSkKKyAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBD
U1NQcm9wZXJ0eVdlYmtpdEZvbnRLZXJuaW5nOgorICAgICAgICBpZiAodmFsdWVJRCA9PSBDU1NW
YWx1ZUF1dG8gfHwgdmFsdWVJRCA9PSBDU1NWYWx1ZU5vcm1hbCB8fCB2YWx1ZUlEID09IENTU1Zh
bHVlTm9uZSkKKyAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICBicmVhazsKKyAgICBj
YXNlIENTU1Byb3BlcnR5V2Via2l0Rm9udFNtb290aGluZzoKKyAgICAgICAgaWYgKHZhbHVlSUQg
PT0gQ1NTVmFsdWVBdXRvIHx8IHZhbHVlSUQgPT0gQ1NTVmFsdWVOb25lIHx8IHZhbHVlSUQgPT0g
Q1NTVmFsdWVBbnRpYWxpYXNlZCB8fCB2YWx1ZUlEID09IENTU1ZhbHVlU3VicGl4ZWxBbnRpYWxp
YXNlZCkKKyAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICBicmVhazsKKyAgICBjYXNl
IENTU1Byb3BlcnR5V2Via2l0SHlwaGVuczoKKyAgICAgICAgaWYgKHZhbHVlSUQgPT0gQ1NTVmFs
dWVOb25lIHx8IHZhbHVlSUQgPT0gQ1NTVmFsdWVNYW51YWwgfHwgdmFsdWVJRCA9PSBDU1NWYWx1
ZUF1dG8pCisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgYnJlYWs7CisgICAgY2Fz
ZSBDU1NQcm9wZXJ0eVdlYmtpdExpbmVBbGlnbjoKKyAgICAgICAgaWYgKHZhbHVlSUQgPT0gQ1NT
VmFsdWVOb25lIHx8IHZhbHVlSUQgPT0gQ1NTVmFsdWVFZGdlcykKKyAgICAgICAgICAgIHJldHVy
biB0cnVlOworICAgICAgICBicmVhazsKKyAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0TGluZUJy
ZWFrOiAvLyBub3JtYWwgfCBhZnRlci13aGl0ZS1zcGFjZQorICAgICAgICBpZiAodmFsdWVJRCA9
PSBDU1NWYWx1ZU5vcm1hbCB8fCB2YWx1ZUlEID09IENTU1ZhbHVlQWZ0ZXJXaGl0ZVNwYWNlKQor
ICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgQ1NTUHJv
cGVydHlXZWJraXRMaW5lU25hcDoKKyAgICAgICAgaWYgKHZhbHVlSUQgPT0gQ1NTVmFsdWVOb25l
IHx8IHZhbHVlSUQgPT0gQ1NTVmFsdWVCYXNlbGluZSB8fCB2YWx1ZUlEID09IENTU1ZhbHVlQ29u
dGFpbikKKyAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICBicmVhazsKKyAgICBjYXNl
IENTU1Byb3BlcnR5V2Via2l0TWFyZ2luQWZ0ZXJDb2xsYXBzZToKKyAgICBjYXNlIENTU1Byb3Bl
cnR5V2Via2l0TWFyZ2luQmVmb3JlQ29sbGFwc2U6CisgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtp
dE1hcmdpbkJvdHRvbUNvbGxhcHNlOgorICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRNYXJnaW5U
b3BDb2xsYXBzZToKKyAgICAgICAgaWYgKHZhbHVlSUQgPT0gQ1NTVmFsdWVDb2xsYXBzZSB8fCB2
YWx1ZUlEID09IENTU1ZhbHVlU2VwYXJhdGUgfHwgdmFsdWVJRCA9PSBDU1NWYWx1ZURpc2NhcmQp
CisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBDU1NQ
cm9wZXJ0eVdlYmtpdE1hcnF1ZWVEaXJlY3Rpb246CisgICAgICAgIGlmICh2YWx1ZUlEID09IENT
U1ZhbHVlRm9yd2FyZHMgfHwgdmFsdWVJRCA9PSBDU1NWYWx1ZUJhY2t3YXJkcyB8fCB2YWx1ZUlE
ID09IENTU1ZhbHVlQWhlYWQgfHwgdmFsdWVJRCA9PSBDU1NWYWx1ZVJldmVyc2UgfHwgdmFsdWVJ
RCA9PSBDU1NWYWx1ZUxlZnQgfHwgdmFsdWVJRCA9PSBDU1NWYWx1ZVJpZ2h0IHx8IHZhbHVlSUQg
PT0gQ1NTVmFsdWVEb3duCisgICAgICAgICAgICB8fCB2YWx1ZUlEID09IENTU1ZhbHVlVXAgfHwg
dmFsdWVJRCA9PSBDU1NWYWx1ZUF1dG8pCisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAg
ICAgYnJlYWs7CisgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdE1hcnF1ZWVTdHlsZToKKyAgICAg
ICAgaWYgKHZhbHVlSUQgPT0gQ1NTVmFsdWVOb25lIHx8IHZhbHVlSUQgPT0gQ1NTVmFsdWVTbGlk
ZSB8fCB2YWx1ZUlEID09IENTU1ZhbHVlU2Nyb2xsIHx8IHZhbHVlSUQgPT0gQ1NTVmFsdWVBbHRl
cm5hdGUpCisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgYnJlYWs7CisgICAgY2Fz
ZSBDU1NQcm9wZXJ0eVdlYmtpdE1hdGNoTmVhcmVzdE1haWxCbG9ja3F1b3RlQ29sb3I6IC8vIG5v
cm1hbCB8IG1hdGNoCisgICAgICAgIGlmICh2YWx1ZUlEID09IENTU1ZhbHVlTm9ybWFsIHx8IHZh
bHVlSUQgPT0gQ1NTVmFsdWVNYXRjaCkKKyAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAg
ICBicmVhazsKKyAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0TmJzcE1vZGU6IC8vIG5vcm1hbCB8
IHNwYWNlCisgICAgICAgIGlmICh2YWx1ZUlEID09IENTU1ZhbHVlTm9ybWFsIHx8IHZhbHVlSUQg
PT0gQ1NTVmFsdWVTcGFjZSkKKyAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICBicmVh
azsKKyNpZiBFTkFCTEUoT1ZFUkZMT1dfU0NST0xMSU5HKQorICAgIGNhc2UgQ1NTUHJvcGVydHlX
ZWJraXRPdmVyZmxvd1Njcm9sbGluZzoKKyAgICAgICAgaWYgKHZhbHVlSUQgPT0gQ1NTVmFsdWVB
dXRvIHx8IHZhbHVlSUQgPT0gQ1NTVmFsdWVUb3VjaCkKKyAgICAgICAgICAgIHJldHVybiB0cnVl
OworICAgICAgICBicmVhazsKKyNlbmRpZgorICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRQcmlu
dENvbG9yQWRqdXN0OgorICAgICAgICBpZiAodmFsdWVJRCA9PSBDU1NWYWx1ZUV4YWN0IHx8IHZh
bHVlSUQgPT0gQ1NTVmFsdWVFY29ub215KQorICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAg
ICAgIGJyZWFrOworICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRSdGxPcmRlcmluZzoKKyAgICAg
ICAgaWYgKHZhbHVlSUQgPT0gQ1NTVmFsdWVMb2dpY2FsIHx8IHZhbHVlSUQgPT0gQ1NTVmFsdWVW
aXN1YWwpCisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgYnJlYWs7CisgICAgY2Fz
ZSBDU1NQcm9wZXJ0eVdlYmtpdFRleHRDb21iaW5lOgorICAgICAgICBpZiAodmFsdWVJRCA9PSBD
U1NWYWx1ZU5vbmUgfHwgdmFsdWVJRCA9PSBDU1NWYWx1ZUhvcml6b250YWwpCisgICAgICAgICAg
ICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtp
dFRleHRFbXBoYXNpc1Bvc2l0aW9uOgorICAgICAgICBpZiAodmFsdWVJRCA9PSBDU1NWYWx1ZU92
ZXIgfHwgdmFsdWVJRCA9PSBDU1NWYWx1ZVVuZGVyKQorICAgICAgICAgICAgcmV0dXJuIHRydWU7
CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRUZXh0U2VjdXJpdHk6
CisgICAgICAgIC8vIGRpc2MgfCBjaXJjbGUgfCBzcXVhcmUgfCBub25lIHwgaW5oZXJpdAorICAg
ICAgICBpZiAodmFsdWVJRCA9PSBDU1NWYWx1ZURpc2MgfHwgdmFsdWVJRCA9PSBDU1NWYWx1ZUNp
cmNsZSB8fCB2YWx1ZUlEID09IENTU1ZhbHVlU3F1YXJlIHx8IHZhbHVlSUQgPT0gQ1NTVmFsdWVO
b25lKQorICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgIGJyZWFrOworICAgIGNhc2Ug
Q1NTUHJvcGVydHlXZWJraXRUZXh0U2l6ZUFkanVzdDoKKyAgICAgICAgaWYgKHZhbHVlSUQgPT0g
Q1NTVmFsdWVBdXRvIHx8IHZhbHVlSUQgPT0gQ1NTVmFsdWVOb25lKQorICAgICAgICAgICAgcmV0
dXJuIHRydWU7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRUcmFu
c2Zvcm1TdHlsZToKKyAgICAgICAgaWYgKHZhbHVlSUQgPT0gQ1NTVmFsdWVGbGF0IHx8IHZhbHVl
SUQgPT0gQ1NTVmFsdWVQcmVzZXJ2ZTNkKQorICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAg
ICAgIGJyZWFrOworICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRVc2VyRHJhZzogLy8gYXV0byB8
IG5vbmUgfCBlbGVtZW50CisgICAgICAgIGlmICh2YWx1ZUlEID09IENTU1ZhbHVlQXV0byB8fCB2
YWx1ZUlEID09IENTU1ZhbHVlTm9uZSB8fCB2YWx1ZUlEID09IENTU1ZhbHVlRWxlbWVudCkKKyAg
ICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICBicmVhazsKKyAgICBjYXNlIENTU1Byb3Bl
cnR5V2Via2l0VXNlck1vZGlmeTogLy8gcmVhZC1vbmx5IHwgcmVhZC13cml0ZQorICAgICAgICBp
ZiAodmFsdWVJRCA9PSBDU1NWYWx1ZVJlYWRPbmx5IHx8IHZhbHVlSUQgPT0gQ1NTVmFsdWVSZWFk
V3JpdGUgfHwgdmFsdWVJRCA9PSBDU1NWYWx1ZVJlYWRXcml0ZVBsYWludGV4dE9ubHkpCisgICAg
ICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBDU1NQcm9wZXJ0
eVdlYmtpdFVzZXJTZWxlY3Q6IC8vIGF1dG8gfCBub25lIHwgdGV4dAorICAgICAgICBpZiAodmFs
dWVJRCA9PSBDU1NWYWx1ZUF1dG8gfHwgdmFsdWVJRCA9PSBDU1NWYWx1ZU5vbmUgfHwgdmFsdWVJ
RCA9PSBDU1NWYWx1ZVRleHQpCisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgYnJl
YWs7CisgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdFdyYXBGbG93OgorICAgICAgICBpZiAodmFs
dWVJRCA9PSBDU1NWYWx1ZUF1dG8gfHwgdmFsdWVJRCA9PSBDU1NWYWx1ZUJvdGggfHwgdmFsdWVJ
RCA9PSBDU1NWYWx1ZUxlZnQgfHwgdmFsdWVJRCA9PSBDU1NWYWx1ZVJpZ2h0IHx8IHZhbHVlSUQg
PT0gQ1NTVmFsdWVNYXhpbXVtIHx8IHZhbHVlSUQgPT0gQ1NTVmFsdWVDbGVhcikKKyAgICAgICAg
ICAgIHJldHVybiB0cnVlOworICAgICAgICBicmVhazsKKyAgICBjYXNlIENTU1Byb3BlcnR5V2Vi
a2l0V3JhcFRocm91Z2g6CisgICAgICAgIGlmICh2YWx1ZUlEID09IENTU1ZhbHVlV3JhcCB8fCB2
YWx1ZUlEID09IENTU1ZhbHVlTm9uZSkKKyAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAg
ICBicmVhazsKKyAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0V3JpdGluZ01vZGU6CisgICAgICAg
IGlmICh2YWx1ZUlEID49IENTU1ZhbHVlSG9yaXpvbnRhbFRiICYmIHZhbHVlSUQgPD0gQ1NTVmFs
dWVIb3Jpem9udGFsQnQpCisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgYnJlYWs7
CisgICAgY2FzZSBDU1NQcm9wZXJ0eVdoaXRlU3BhY2U6IC8vIG5vcm1hbCB8IHByZSB8IG5vd3Jh
cCB8IGluaGVyaXQKKyAgICAgICAgaWYgKHZhbHVlSUQgPT0gQ1NTVmFsdWVOb3JtYWwgfHwgdmFs
dWVJRCA9PSBDU1NWYWx1ZVByZSB8fCB2YWx1ZUlEID09IENTU1ZhbHVlUHJlV3JhcCB8fCB2YWx1
ZUlEID09IENTU1ZhbHVlUHJlTGluZSB8fCB2YWx1ZUlEID09IENTU1ZhbHVlTm93cmFwKQorICAg
ICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgQ1NTUHJvcGVy
dHlXb3JkQnJlYWs6IC8vIG5vcm1hbCB8IGJyZWFrLWFsbCB8IGJyZWFrLXdvcmQgKHRoaXMgaXMg
YSBjdXN0b20gZXh0ZW5zaW9uKQorICAgICAgICBpZiAodmFsdWVJRCA9PSBDU1NWYWx1ZU5vcm1h
bCB8fCB2YWx1ZUlEID09IENTU1ZhbHVlQnJlYWtBbGwgfHwgdmFsdWVJRCA9PSBDU1NWYWx1ZUJy
ZWFrV29yZCkKKyAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICBicmVhazsKKyAgICBj
YXNlIENTU1Byb3BlcnR5V29yZFdyYXA6IC8vIG5vcm1hbCB8IGJyZWFrLXdvcmQKKyAgICAgICAg
aWYgKHZhbHVlSUQgPT0gQ1NTVmFsdWVOb3JtYWwgfHwgdmFsdWVJRCA9PSBDU1NWYWx1ZUJyZWFr
V29yZCkKKyAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICBicmVhazsKKyAgICBkZWZh
dWx0OgorICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgcmV0dXJuIGZhbHNl
OworICAgIH0KKyAgICByZXR1cm4gZmFsc2U7Cit9CisKK3N0YXRpYyBpbmxpbmUgYm9vbCBpc0tl
eXdvcmRQcm9wZXJ0eUlEKGludCBwcm9wZXJ0eUlkKQoreworICAgIHN3aXRjaCAocHJvcGVydHlJ
ZCkgeworICAgIGNhc2UgQ1NTUHJvcGVydHlCb3JkZXJCb3R0b21TdHlsZToKKyAgICBjYXNlIENT
U1Byb3BlcnR5Qm9yZGVyQ29sbGFwc2U6CisgICAgY2FzZSBDU1NQcm9wZXJ0eUJvcmRlckxlZnRT
dHlsZToKKyAgICBjYXNlIENTU1Byb3BlcnR5Qm9yZGVyUmlnaHRTdHlsZToKKyAgICBjYXNlIENT
U1Byb3BlcnR5Qm9yZGVyVG9wU3R5bGU6CisgICAgY2FzZSBDU1NQcm9wZXJ0eUJveFNpemluZzoK
KyAgICBjYXNlIENTU1Byb3BlcnR5Q2FwdGlvblNpZGU6CisgICAgY2FzZSBDU1NQcm9wZXJ0eUNs
ZWFyOgorICAgIGNhc2UgQ1NTUHJvcGVydHlEaXJlY3Rpb246CisgICAgY2FzZSBDU1NQcm9wZXJ0
eURpc3BsYXk6CisgICAgY2FzZSBDU1NQcm9wZXJ0eUVtcHR5Q2VsbHM6CisgICAgY2FzZSBDU1NQ
cm9wZXJ0eUZsb2F0OgorICAgIGNhc2UgQ1NTUHJvcGVydHlGb250U3R5bGU6CisgICAgY2FzZSBD
U1NQcm9wZXJ0eUltYWdlUmVuZGVyaW5nOgorICAgIGNhc2UgQ1NTUHJvcGVydHlMaXN0U3R5bGVQ
b3NpdGlvbjoKKyAgICBjYXNlIENTU1Byb3BlcnR5TGlzdFN0eWxlVHlwZToKKyAgICBjYXNlIENT
U1Byb3BlcnR5T3V0bGluZVN0eWxlOgorICAgIGNhc2UgQ1NTUHJvcGVydHlPdmVyZmxvd1g6Cisg
ICAgY2FzZSBDU1NQcm9wZXJ0eU92ZXJmbG93WToKKyAgICBjYXNlIENTU1Byb3BlcnR5UG9pbnRl
ckV2ZW50czoKKyAgICBjYXNlIENTU1Byb3BlcnR5UG9zaXRpb246CisgICAgY2FzZSBDU1NQcm9w
ZXJ0eVJlc2l6ZToKKyAgICBjYXNlIENTU1Byb3BlcnR5U3BlYWs6CisgICAgY2FzZSBDU1NQcm9w
ZXJ0eVRhYmxlTGF5b3V0OgorICAgIGNhc2UgQ1NTUHJvcGVydHlUZXh0TGluZVRocm91Z2hNb2Rl
OgorICAgIGNhc2UgQ1NTUHJvcGVydHlUZXh0TGluZVRocm91Z2hTdHlsZToKKyAgICBjYXNlIENT
U1Byb3BlcnR5VGV4dE92ZXJmbG93OgorICAgIGNhc2UgQ1NTUHJvcGVydHlUZXh0T3ZlcmxpbmVN
b2RlOgorICAgIGNhc2UgQ1NTUHJvcGVydHlUZXh0T3ZlcmxpbmVTdHlsZToKKyAgICBjYXNlIENT
U1Byb3BlcnR5VGV4dFJlbmRlcmluZzoKKyAgICBjYXNlIENTU1Byb3BlcnR5VGV4dFRyYW5zZm9y
bToKKyAgICBjYXNlIENTU1Byb3BlcnR5VGV4dFVuZGVybGluZU1vZGU6CisgICAgY2FzZSBDU1NQ
cm9wZXJ0eVRleHRVbmRlcmxpbmVTdHlsZToKKyAgICBjYXNlIENTU1Byb3BlcnR5VmlzaWJpbGl0
eToKKyAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0QXBwZWFyYW5jZToKKyAgICBjYXNlIENTU1By
b3BlcnR5V2Via2l0QmFja2ZhY2VWaXNpYmlsaXR5OgorICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJr
aXRCb3JkZXJBZnRlclN0eWxlOgorICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRCb3JkZXJCZWZv
cmVTdHlsZToKKyAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0Qm9yZGVyRW5kU3R5bGU6CisgICAg
Y2FzZSBDU1NQcm9wZXJ0eVdlYmtpdEJvcmRlckZpdDoKKyAgICBjYXNlIENTU1Byb3BlcnR5V2Vi
a2l0Qm9yZGVyU3RhcnRTdHlsZToKKyAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0Qm94QWxpZ246
CisgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdEJveERpcmVjdGlvbjoKKyAgICBjYXNlIENTU1By
b3BlcnR5V2Via2l0Qm94TGluZXM6CisgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdEJveE9yaWVu
dDoKKyAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0Qm94UGFjazoKKyAgICBjYXNlIENTU1Byb3Bl
cnR5V2Via2l0Q29sb3JDb3JyZWN0aW9uOgorICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRDb2x1
bW5SdWxlU3R5bGU6CisgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdEZsZXhBbGlnbjoKKyAgICBj
YXNlIENTU1Byb3BlcnR5V2Via2l0RmxleERpcmVjdGlvbjoKKyAgICBjYXNlIENTU1Byb3BlcnR5
V2Via2l0RmxleEl0ZW1BbGlnbjoKKyAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0RmxleExpbmVQ
YWNrOgorICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRGbGV4UGFjazoKKyAgICBjYXNlIENTU1By
b3BlcnR5V2Via2l0RmxleFdyYXA6CisgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdEZvbnRLZXJu
aW5nOgorICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRGb250U21vb3RoaW5nOgorICAgIGNhc2Ug
Q1NTUHJvcGVydHlXZWJraXRIeXBoZW5zOgorICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRMaW5l
QWxpZ246CisgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdExpbmVCcmVhazoKKyAgICBjYXNlIENT
U1Byb3BlcnR5V2Via2l0TGluZVNuYXA6CisgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdE1hcmdp
bkFmdGVyQ29sbGFwc2U6CisgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdE1hcmdpbkJlZm9yZUNv
bGxhcHNlOgorICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRNYXJnaW5Cb3R0b21Db2xsYXBzZToK
KyAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0TWFyZ2luVG9wQ29sbGFwc2U6CisgICAgY2FzZSBD
U1NQcm9wZXJ0eVdlYmtpdE1hcnF1ZWVEaXJlY3Rpb246CisgICAgY2FzZSBDU1NQcm9wZXJ0eVdl
YmtpdE1hcnF1ZWVTdHlsZToKKyAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0TWF0Y2hOZWFyZXN0
TWFpbEJsb2NrcXVvdGVDb2xvcjoKKyAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0TmJzcE1vZGU6
CisjaWYgRU5BQkxFKE9WRVJGTE9XX1NDUk9MTElORykKKyAgICBjYXNlIENTU1Byb3BlcnR5V2Vi
a2l0T3ZlcmZsb3dTY3JvbGxpbmc6CisjZW5kaWYKKyAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0
UHJpbnRDb2xvckFkanVzdDoKKyAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0UnRsT3JkZXJpbmc6
CisgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdFRleHRDb21iaW5lOgorICAgIGNhc2UgQ1NTUHJv
cGVydHlXZWJraXRUZXh0RW1waGFzaXNQb3NpdGlvbjoKKyAgICBjYXNlIENTU1Byb3BlcnR5V2Vi
a2l0VGV4dFNlY3VyaXR5OgorICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRUZXh0U2l6ZUFkanVz
dDoKKyAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0VHJhbnNmb3JtU3R5bGU6CisgICAgY2FzZSBD
U1NQcm9wZXJ0eVdlYmtpdFVzZXJEcmFnOgorICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRVc2Vy
TW9kaWZ5OgorICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRVc2VyU2VsZWN0OgorICAgIGNhc2Ug
Q1NTUHJvcGVydHlXZWJraXRXcmFwRmxvdzoKKyAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0V3Jh
cFRocm91Z2g6CisgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdFdyaXRpbmdNb2RlOgorICAgIGNh
c2UgQ1NTUHJvcGVydHlXaGl0ZVNwYWNlOgorICAgIGNhc2UgQ1NTUHJvcGVydHlXb3JkQnJlYWs6
CisgICAgY2FzZSBDU1NQcm9wZXJ0eVdvcmRXcmFwOgorICAgICAgICByZXR1cm4gdHJ1ZTsKKyAg
ICBkZWZhdWx0OgorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorfQorCitzdGF0aWMgYm9v
bCBwYXJzZUtleXdvcmRWYWx1ZShTdHlsZVByb3BlcnR5U2V0KiBkZWNsYXJhdGlvbiwgaW50IHBy
b3BlcnR5SWQsIGNvbnN0IFN0cmluZyYgc3RyaW5nLCBib29sIGltcG9ydGFudCwgQ1NTU3R5bGVT
aGVldCogY29udGV4dFN0eWxlU2hlZXQpCit7CisgICAgaWYgKHN0cmluZy5pc0VtcHR5KCkpCisg
ICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIGlmICghaXNLZXl3b3JkUHJvcGVydHlJRChwcm9w
ZXJ0eUlkKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgQ1NTUGFyc2VyU3RyaW5nIGNz
c1N0cmluZzsKKyAgICBjc3NTdHJpbmcuY2hhcmFjdGVycyA9IGNvbnN0X2Nhc3Q8VUNoYXIqPihz
dHJpbmcuY2hhcmFjdGVycygpKTsKKyAgICBjc3NTdHJpbmcubGVuZ3RoID0gc3RyaW5nLmxlbmd0
aCgpOworICAgIGludCB2YWx1ZUlEID0gY3NzVmFsdWVLZXl3b3JkSUQoY3NzU3RyaW5nKTsKKwor
ICAgIGlmICghdmFsdWVJRCkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgRG9jdW1lbnQq
IGRvY3VtZW50ID0gY29udGV4dFN0eWxlU2hlZXQtPmZpbmREb2N1bWVudCgpOworICAgIFJlZlB0
cjxDU1NWYWx1ZT4gdmFsdWU7CisgICAgQ1NTVmFsdWVQb29sKiBjc3NWYWx1ZVBvb2wgPSBkb2N1
bWVudCA/IGRvY3VtZW50LT5jc3NWYWx1ZVBvb2woKS5nZXQoKSA6IDA7CisgICAgaWYgKHZhbHVl
SUQgPT0gQ1NTVmFsdWVJbmhlcml0KQorICAgICAgICB2YWx1ZSA9IGNzc1ZhbHVlUG9vbCA/IGNz
c1ZhbHVlUG9vbC0+Y3JlYXRlSW5oZXJpdGVkVmFsdWUoKSA6IENTU0luaGVyaXRlZFZhbHVlOjpj
cmVhdGUoKTsKKyAgICBlbHNlIGlmICh2YWx1ZUlEID09IENTU1ZhbHVlSW5pdGlhbCkKKyAgICAg
ICAgdmFsdWUgPSBjc3NWYWx1ZVBvb2wgPyBjc3NWYWx1ZVBvb2wtPmNyZWF0ZUV4cGxpY2l0SW5p
dGlhbFZhbHVlKCkgOiBDU1NJbml0aWFsVmFsdWU6OmNyZWF0ZUV4cGxpY2l0KCk7CisgICAgZWxz
ZSBpZiAoaXNWYWxpZEtleXdvcmRQcm9wZXJ0eUFuZFZhbHVlKHByb3BlcnR5SWQsIHZhbHVlSUQp
KQorICAgICAgICB2YWx1ZSA9IGRvY3VtZW50ID8gY3NzVmFsdWVQb29sLT5jcmVhdGVJZGVudGlm
aWVyVmFsdWUodmFsdWVJRCkgOiBDU1NQcmltaXRpdmVWYWx1ZTo6Y3JlYXRlSWRlbnRpZmllcih2
YWx1ZUlEKTsKKyAgICBlbHNlCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIGRlY2xhcmF0
aW9uLT5hZGRQYXJzZWRQcm9wZXJ0eShDU1NQcm9wZXJ0eShwcm9wZXJ0eUlkLCB2YWx1ZS5yZWxl
YXNlKCksIGltcG9ydGFudCkpOworICAgIHJldHVybiB0cnVlOworfQorCiBQYXNzUmVmUHRyPENT
U1ZhbHVlTGlzdD4gQ1NTUGFyc2VyOjpwYXJzZUZvbnRGYWNlVmFsdWUoY29uc3QgQXRvbWljU3Ry
aW5nJiBzdHJpbmcsIENTU1N0eWxlU2hlZXQqIGNvbnRleHRTdHlsZVNoZWV0KQogewogICAgIFJl
ZlB0cjxTdHlsZVByb3BlcnR5U2V0PiBkdW1teVN0eWxlID0gU3R5bGVQcm9wZXJ0eVNldDo6Y3Jl
YXRlKCk7CkBAIC00OTMsNiArOTQzLDggQEAgYm9vbCBDU1NQYXJzZXI6OnBhcnNlVmFsdWUoU3R5
bGVQcm9wZXJ0eVNldCogZGVjbGFyYXRpb24sIGludCBwcm9wZXJ0eUlkLCBjb25zdAogICAgICAg
ICByZXR1cm4gdHJ1ZTsKICAgICBpZiAocGFyc2VDb2xvclZhbHVlKGRlY2xhcmF0aW9uLCBwcm9w
ZXJ0eUlkLCBzdHJpbmcsIGltcG9ydGFudCwgc3RyaWN0LCBjb250ZXh0U3R5bGVTaGVldCkpCiAg
ICAgICAgIHJldHVybiB0cnVlOworICAgIGlmIChwYXJzZUtleXdvcmRWYWx1ZShkZWNsYXJhdGlv
biwgcHJvcGVydHlJZCwgc3RyaW5nLCBpbXBvcnRhbnQsIGNvbnRleHRTdHlsZVNoZWV0KSkKKyAg
ICAgICAgcmV0dXJuIHRydWU7CiAgICAgQ1NTUGFyc2VyIHBhcnNlcihzdHJpY3QpOwogICAgIHJl
dHVybiBwYXJzZXIucGFyc2VWYWx1ZShkZWNsYXJhdGlvbiwgcHJvcGVydHlJZCwgc3RyaW5nLCBp
bXBvcnRhbnQsIGNvbnRleHRTdHlsZVNoZWV0KTsKIH0KQEAgLTkyNyw2ICsxMzc5LDE1IEBAIGJv
b2wgQ1NTUGFyc2VyOjpwYXJzZVZhbHVlKGludCBwcm9wSWQsIGJvb2wgaW1wb3J0YW50KQogICAg
ICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CiAKKyAgICBpZiAoaXNLZXl3b3JkUHJvcGVydHlJRChw
cm9wSWQpKSB7CisgICAgICAgIGlmICghaXNWYWxpZEtleXdvcmRQcm9wZXJ0eUFuZFZhbHVlKHBy
b3BJZCwgaWQpKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICBpZiAobV92YWx1
ZUxpc3QtPm5leHQoKSAmJiAhaW5TaG9ydGhhbmQoKSkKKyAgICAgICAgICAgIHJldHVybiBmYWxz
ZTsKKyAgICAgICAgYWRkUHJvcGVydHkocHJvcElkLCAgY3NzVmFsdWVQb29sKCktPmNyZWF0ZUlk
ZW50aWZpZXJWYWx1ZShpZCksIGltcG9ydGFudCk7CisgICAgICAgIHJldHVybiB0cnVlOworICAg
IH0KKwogICAgIGJvb2wgdmFsaWRQcmltaXRpdmUgPSBmYWxzZTsKICAgICBSZWZQdHI8Q1NTVmFs
dWU+IHBhcnNlZFZhbHVlOwogCkBAIC05NzUsMTQgKzE0MzYsNiBAQCBib29sIENTU1BhcnNlcjo6
cGFyc2VWYWx1ZShpbnQgcHJvcElkLCBib29sIGltcG9ydGFudCkKICAgICAgICAgfQogICAgICAg
ICBicmVhazsKIAotICAgIGNhc2UgQ1NTUHJvcGVydHlQb3NpdGlvbjogICAgICAgICAgICAgLy8g
c3RhdGljIHwgcmVsYXRpdmUgfCBhYnNvbHV0ZSB8IGZpeGVkIHwgaW5oZXJpdAotICAgICAgICBp
ZiAoaWQgPT0gQ1NTVmFsdWVTdGF0aWMKLSAgICAgICAgICAgIHx8IGlkID09IENTU1ZhbHVlUmVs
YXRpdmUKLSAgICAgICAgICAgIHx8IGlkID09IENTU1ZhbHVlQWJzb2x1dGUKLSAgICAgICAgICAg
IHx8IGlkID09IENTU1ZhbHVlRml4ZWQpCi0gICAgICAgICAgICB2YWxpZFByaW1pdGl2ZSA9IHRy
dWU7Ci0gICAgICAgIGJyZWFrOwotCiAgICAgY2FzZSBDU1NQcm9wZXJ0eVBhZ2VCcmVha0FmdGVy
OiAgICAgICAvLyBhdXRvIHwgYWx3YXlzIHwgYXZvaWQgfCBsZWZ0IHwgcmlnaHQgfCBpbmhlcml0
CiAgICAgY2FzZSBDU1NQcm9wZXJ0eVBhZ2VCcmVha0JlZm9yZToKICAgICBjYXNlIENTU1Byb3Bl
cnR5V2Via2l0Q29sdW1uQnJlYWtBZnRlcjoKQEAgLTEwMDQsMjUgKzE0NTcsMTAgQEAgYm9vbCBD
U1NQYXJzZXI6OnBhcnNlVmFsdWUoaW50IHByb3BJZCwgYm9vbCBpbXBvcnRhbnQpCiAgICAgICAg
ICAgICB2YWxpZFByaW1pdGl2ZSA9IChwcm9wSWQgPT0gQ1NTUHJvcGVydHlXZWJraXRSZWdpb25C
cmVha0luc2lkZSkgPyBjc3NSZWdpb25zRW5hYmxlZCgpIDogdHJ1ZTsKICAgICAgICAgYnJlYWs7
CiAKLSAgICBjYXNlIENTU1Byb3BlcnR5RW1wdHlDZWxsczogICAgICAgICAgLy8gc2hvdyB8IGhp
ZGUgfCBpbmhlcml0Ci0gICAgICAgIGlmIChpZCA9PSBDU1NWYWx1ZVNob3cKLSAgICAgICAgICAg
IHx8IGlkID09IENTU1ZhbHVlSGlkZSkKLSAgICAgICAgICAgIHZhbGlkUHJpbWl0aXZlID0gdHJ1
ZTsKLSAgICAgICAgYnJlYWs7Ci0KICAgICBjYXNlIENTU1Byb3BlcnR5Q29udGVudDogICAgICAg
ICAgICAgIC8vIFsgPHN0cmluZz4gfCA8dXJpPiB8IDxjb3VudGVyPiB8IGF0dHIoWCkgfCBvcGVu
LXF1b3RlIHwKICAgICAgICAgLy8gY2xvc2UtcXVvdGUgfCBuby1vcGVuLXF1b3RlIHwgbm8tY2xv
c2UtcXVvdGUgXSsgfCBpbmhlcml0CiAgICAgICAgIHJldHVybiBwYXJzZUNvbnRlbnQocHJvcElk
LCBpbXBvcnRhbnQpOwogCi0gICAgY2FzZSBDU1NQcm9wZXJ0eVdoaXRlU3BhY2U6ICAgICAgICAg
IC8vIG5vcm1hbCB8IHByZSB8IG5vd3JhcCB8IGluaGVyaXQKLSAgICAgICAgaWYgKGlkID09IENT
U1ZhbHVlTm9ybWFsCi0gICAgICAgICAgICB8fCBpZCA9PSBDU1NWYWx1ZVByZQotICAgICAgICAg
ICAgfHwgaWQgPT0gQ1NTVmFsdWVQcmVXcmFwCi0gICAgICAgICAgICB8fCBpZCA9PSBDU1NWYWx1
ZVByZUxpbmUKLSAgICAgICAgICAgIHx8IGlkID09IENTU1ZhbHVlTm93cmFwKQotICAgICAgICAg
ICAgdmFsaWRQcmltaXRpdmUgPSB0cnVlOwotICAgICAgICBicmVhazsKLQogICAgIGNhc2UgQ1NT
UHJvcGVydHlDbGlwOiAgICAgICAgICAgICAgICAgLy8gPHNoYXBlPiB8IGF1dG8gfCBpbmhlcml0
CiAgICAgICAgIGlmIChpZCA9PSBDU1NWYWx1ZUF1dG8pCiAgICAgICAgICAgICB2YWxpZFByaW1p
dGl2ZSA9IHRydWU7CkBAIC0xMDMwLDg2ICsxNDY4LDE3IEBAIGJvb2wgQ1NTUGFyc2VyOjpwYXJz
ZVZhbHVlKGludCBwcm9wSWQsIGJvb2wgaW1wb3J0YW50KQogICAgICAgICAgICAgcmV0dXJuIHBh
cnNlU2hhcGUocHJvcElkLCBpbXBvcnRhbnQpOwogICAgICAgICBicmVhazsKIAotICAgIC8qIFN0
YXJ0IG9mIHN1cHBvcnRlZCBDU1MgcHJvcGVydGllcyB3aXRoIHZhbGlkYXRpb24uIFRoaXMgaXMg
bmVlZGVkIGZvciBwYXJzZVNob3J0aGFuZCB0byB3b3JrCi0gICAgICogY29ycmVjdGx5IGFuZCBh
bGxvd3Mgb3B0aW1pemF0aW9uIGluIFdlYkNvcmU6OmFwcGx5UnVsZSguLikKLSAgICAgKi8KLSAg
ICBjYXNlIENTU1Byb3BlcnR5Q2FwdGlvblNpZGU6ICAgICAgICAgLy8gdG9wIHwgYm90dG9tIHwg
bGVmdCB8IHJpZ2h0IHwgaW5oZXJpdAotICAgICAgICBpZiAoaWQgPT0gQ1NTVmFsdWVMZWZ0IHx8
IGlkID09IENTU1ZhbHVlUmlnaHQgfHwKLSAgICAgICAgICAgIGlkID09IENTU1ZhbHVlVG9wIHx8
IGlkID09IENTU1ZhbHVlQm90dG9tKQotICAgICAgICAgICAgdmFsaWRQcmltaXRpdmUgPSB0cnVl
OwotICAgICAgICBicmVhazsKLQotICAgIGNhc2UgQ1NTUHJvcGVydHlCb3JkZXJDb2xsYXBzZTog
ICAgICAvLyBjb2xsYXBzZSB8IHNlcGFyYXRlIHwgaW5oZXJpdAotICAgICAgICBpZiAoaWQgPT0g
Q1NTVmFsdWVDb2xsYXBzZSB8fCBpZCA9PSBDU1NWYWx1ZVNlcGFyYXRlKQotICAgICAgICAgICAg
dmFsaWRQcmltaXRpdmUgPSB0cnVlOwotICAgICAgICBicmVhazsKLQotICAgIGNhc2UgQ1NTUHJv
cGVydHlWaXNpYmlsaXR5OiAgICAgICAgICAgLy8gdmlzaWJsZSB8IGhpZGRlbiB8IGNvbGxhcHNl
IHwgaW5oZXJpdAotICAgICAgICBpZiAoaWQgPT0gQ1NTVmFsdWVWaXNpYmxlIHx8IGlkID09IENT
U1ZhbHVlSGlkZGVuIHx8IGlkID09IENTU1ZhbHVlQ29sbGFwc2UpCi0gICAgICAgICAgICB2YWxp
ZFByaW1pdGl2ZSA9IHRydWU7Ci0gICAgICAgIGJyZWFrOwotCi0gICAgY2FzZSBDU1NQcm9wZXJ0
eU92ZXJmbG93OiB7Ci0gICAgICAgIFNob3J0aGFuZFNjb3BlIHNjb3BlKHRoaXMsIHByb3BJZCk7
Ci0gICAgICAgIGlmIChudW0gIT0gMSB8fCAhcGFyc2VWYWx1ZShDU1NQcm9wZXJ0eU92ZXJmbG93
WCwgaW1wb3J0YW50KSkKLSAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgQ1NTVmFs
dWUqIHZhbHVlID0gbV9wYXJzZWRQcm9wZXJ0aWVzLmxhc3QoKS52YWx1ZSgpOwotICAgICAgICBh
ZGRQcm9wZXJ0eShDU1NQcm9wZXJ0eU92ZXJmbG93WSwgdmFsdWUsIGltcG9ydGFudCk7Ci0gICAg
ICAgIHJldHVybiB0cnVlOwotICAgIH0KLSAgICBjYXNlIENTU1Byb3BlcnR5T3ZlcmZsb3dYOgot
ICAgIGNhc2UgQ1NTUHJvcGVydHlPdmVyZmxvd1k6ICAgICAgICAgICAvLyB2aXNpYmxlIHwgaGlk
ZGVuIHwgc2Nyb2xsIHwgYXV0byB8IG1hcnF1ZWUgfCBvdmVybGF5IHwgaW5oZXJpdAotICAgICAg
ICBpZiAoaWQgPT0gQ1NTVmFsdWVWaXNpYmxlIHx8IGlkID09IENTU1ZhbHVlSGlkZGVuIHx8IGlk
ID09IENTU1ZhbHVlU2Nyb2xsIHx8IGlkID09IENTU1ZhbHVlQXV0byB8fAotICAgICAgICAgICAg
aWQgPT0gQ1NTVmFsdWVPdmVybGF5IHx8IGlkID09IENTU1ZhbHVlV2Via2l0TWFycXVlZSkKLSAg
ICAgICAgICAgIHZhbGlkUHJpbWl0aXZlID0gdHJ1ZTsKLSAgICAgICAgYnJlYWs7Ci0KLSAgICBj
YXNlIENTU1Byb3BlcnR5TGlzdFN0eWxlUG9zaXRpb246ICAvLyBpbnNpZGUgfCBvdXRzaWRlIHwg
aW5oZXJpdAotICAgICAgICBpZiAoaWQgPT0gQ1NTVmFsdWVJbnNpZGUgfHwgaWQgPT0gQ1NTVmFs
dWVPdXRzaWRlKQotICAgICAgICAgICAgdmFsaWRQcmltaXRpdmUgPSB0cnVlOwotICAgICAgICBi
cmVhazsKLQotICAgIGNhc2UgQ1NTUHJvcGVydHlMaXN0U3R5bGVUeXBlOgotICAgICAgICAvLyBT
ZWUgc2VjdGlvbiBDU1NfUFJPUF9MSVNUX1NUWUxFX1RZUEUgb2YgZmlsZSBDU1NWYWx1ZUtleXdv
cmRzLmluCi0gICAgICAgIC8vIGZvciB0aGUgbGlzdCBvZiBzdXBwb3J0ZWQgbGlzdC1zdHlsZS10
eXBlcy4KLSAgICAgICAgaWYgKChpZCA+PSBDU1NWYWx1ZURpc2MgJiYgaWQgPD0gQ1NTVmFsdWVL
YXRha2FuYUlyb2hhKSB8fCBpZCA9PSBDU1NWYWx1ZU5vbmUpCi0gICAgICAgICAgICB2YWxpZFBy
aW1pdGl2ZSA9IHRydWU7Ci0gICAgICAgIGJyZWFrOwotCi0gICAgY2FzZSBDU1NQcm9wZXJ0eURp
c3BsYXk6Ci0gICAgICAgIC8vIGlubGluZSB8IGJsb2NrIHwgbGlzdC1pdGVtIHwgcnVuLWluIHwg
aW5saW5lLWJsb2NrIHwgdGFibGUgfAotICAgICAgICAvLyBpbmxpbmUtdGFibGUgfCB0YWJsZS1y
b3ctZ3JvdXAgfCB0YWJsZS1oZWFkZXItZ3JvdXAgfCB0YWJsZS1mb290ZXItZ3JvdXAgfCB0YWJs
ZS1yb3cgfAotICAgICAgICAvLyB0YWJsZS1jb2x1bW4tZ3JvdXAgfCB0YWJsZS1jb2x1bW4gfCB0
YWJsZS1jZWxsIHwgdGFibGUtY2FwdGlvbiB8IC13ZWJraXQtYm94IHwgLXdlYmtpdC1pbmxpbmUt
Ym94IHwgbm9uZSB8IGluaGVyaXQKLSAgICAgICAgLy8gLXdlYmtpdC1mbGV4Ym94IHwgLXdlYmtp
dC1pbmxpbmUtZmxleGJveCB8IC13ZWJraXQtZ3JpZCB8IC13ZWJraXQtaW5saW5lLWdyaWQKLSAg
ICAgICAgaWYgKChpZCA+PSBDU1NWYWx1ZUlubGluZSAmJiBpZCA8PSBDU1NWYWx1ZVdlYmtpdElu
bGluZUZsZXhib3gpIHx8IGlkID09IENTU1ZhbHVlTm9uZSkKLSAgICAgICAgICAgIHZhbGlkUHJp
bWl0aXZlID0gdHJ1ZTsKLSNpZiBFTkFCTEUoQ1NTX0dSSURfTEFZT1VUKQotICAgICAgICBpZiAo
aWQgPT0gQ1NTVmFsdWVXZWJraXRHcmlkIHx8IGlkID09IENTU1ZhbHVlV2Via2l0SW5saW5lR3Jp
ZCkKLSAgICAgICAgICAgIHZhbGlkUHJpbWl0aXZlID0gdHJ1ZTsKLSNlbmRpZgotICAgICAgICBi
cmVhazsKLQotICAgIGNhc2UgQ1NTUHJvcGVydHlEaXJlY3Rpb246ICAgICAgICAgICAgLy8gbHRy
IHwgcnRsIHwgaW5oZXJpdAotICAgICAgICBpZiAoaWQgPT0gQ1NTVmFsdWVMdHIgfHwgaWQgPT0g
Q1NTVmFsdWVSdGwpCi0gICAgICAgICAgICB2YWxpZFByaW1pdGl2ZSA9IHRydWU7Ci0gICAgICAg
IGJyZWFrOwotCi0gICAgY2FzZSBDU1NQcm9wZXJ0eVRleHRUcmFuc2Zvcm06ICAgICAgIC8vIGNh
cGl0YWxpemUgfCB1cHBlcmNhc2UgfCBsb3dlcmNhc2UgfCBub25lIHwgaW5oZXJpdAotICAgICAg
ICBpZiAoKGlkID49IENTU1ZhbHVlQ2FwaXRhbGl6ZSAmJiBpZCA8PSBDU1NWYWx1ZUxvd2VyY2Fz
ZSkgfHwgaWQgPT0gQ1NTVmFsdWVOb25lKQotICAgICAgICAgICAgdmFsaWRQcmltaXRpdmUgPSB0
cnVlOwotICAgICAgICBicmVhazsKLQotICAgIGNhc2UgQ1NTUHJvcGVydHlGbG9hdDogICAgICAg
ICAgICAgICAgLy8gbGVmdCB8IHJpZ2h0IHwgbm9uZSB8IHBvc2l0aW9uZWQgfCBjZW50ZXIgKGZv
ciBidWdneSBDU1MsIG1hcHMgdG8gbm9uZSkKLSAgICAgICAgaWYgKGlkID09IENTU1ZhbHVlTGVm
dCB8fCBpZCA9PSBDU1NWYWx1ZVJpZ2h0Ci0gICAgICAgICAgICB8fCBpZCA9PSBDU1NWYWx1ZU5v
bmUgfHwgaWQgPT0gQ1NTVmFsdWVDZW50ZXIgfHwgaWQgPT0gQ1NTVmFsdWVXZWJraXRQb3NpdGlv
bmVkKQotICAgICAgICAgICAgdmFsaWRQcmltaXRpdmUgPSB0cnVlOwotICAgICAgICBicmVhazsK
LQotICAgIGNhc2UgQ1NTUHJvcGVydHlDbGVhcjogICAgICAgICAgICAgICAgLy8gbm9uZSB8IGxl
ZnQgfCByaWdodCB8IGJvdGggfCBpbmhlcml0Ci0gICAgICAgIGlmIChpZCA9PSBDU1NWYWx1ZU5v
bmUgfHwgaWQgPT0gQ1NTVmFsdWVMZWZ0Ci0gICAgICAgICAgICB8fCBpZCA9PSBDU1NWYWx1ZVJp
Z2h0IHx8IGlkID09IENTU1ZhbHVlQm90aCkKLSAgICAgICAgICAgIHZhbGlkUHJpbWl0aXZlID0g
dHJ1ZTsKLSAgICAgICAgYnJlYWs7CisgICAgLyogU3RhcnQgb2Ygc3VwcG9ydGVkIENTUyBwcm9w
ZXJ0aWVzIHdpdGggdmFsaWRhdGlvbi4gVGhpcyBpcyBuZWVkZWQgZm9yIHBhcnNlU2hvcnRoYW5k
IHRvIHdvcmsKKyAgICAgKiBjb3JyZWN0bHkgYW5kIGFsbG93cyBvcHRpbWl6YXRpb24gaW4gV2Vi
Q29yZTo6YXBwbHlSdWxlKC4uKQorICAgICAqLworICAgIGNhc2UgQ1NTUHJvcGVydHlPdmVyZmxv
dzogeworICAgICAgICBTaG9ydGhhbmRTY29wZSBzY29wZSh0aGlzLCBwcm9wSWQpOworICAgICAg
ICBpZiAobnVtICE9IDEgfHwgIXBhcnNlVmFsdWUoQ1NTUHJvcGVydHlPdmVyZmxvd1gsIGltcG9y
dGFudCkpCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIENTU1ZhbHVlKiB2YWx1
ZSA9IG1fcGFyc2VkUHJvcGVydGllcy5sYXN0KCkudmFsdWUoKTsKKyAgICAgICAgYWRkUHJvcGVy
dHkoQ1NTUHJvcGVydHlPdmVyZmxvd1ksIHZhbHVlLCBpbXBvcnRhbnQpOworICAgICAgICByZXR1
cm4gdHJ1ZTsKKyAgICB9CiAKICAgICBjYXNlIENTU1Byb3BlcnR5VGV4dEFsaWduOgogICAgICAg
ICAvLyBsZWZ0IHwgcmlnaHQgfCBjZW50ZXIgfCBqdXN0aWZ5IHwgd2Via2l0X2xlZnQgfCB3ZWJr
aXRfcmlnaHQgfCB3ZWJraXRfY2VudGVyIHwgd2Via2l0X21hdGNoX3BhcmVudCB8CkBAIC0xMTE5
LDI0ICsxNDg4LDYgQEAgYm9vbCBDU1NQYXJzZXI6OnBhcnNlVmFsdWUoaW50IHByb3BJZCwgYm9v
bCBpbXBvcnRhbnQpCiAgICAgICAgICAgICB2YWxpZFByaW1pdGl2ZSA9IHRydWU7CiAgICAgICAg
IGJyZWFrOwogCi0gICAgY2FzZSBDU1NQcm9wZXJ0eU91dGxpbmVTdHlsZTogICAgICAgIC8vICg8
Ym9yZGVyLXN0eWxlPiBleGNlcHQgaGlkZGVuKSB8IGF1dG8gfCBpbmhlcml0Ci0gICAgICAgIGlm
IChpZCA9PSBDU1NWYWx1ZUF1dG8gfHwgaWQgPT0gQ1NTVmFsdWVOb25lIHx8IChpZCA+PSBDU1NW
YWx1ZUluc2V0ICYmIGlkIDw9IENTU1ZhbHVlRG91YmxlKSkKLSAgICAgICAgICAgIHZhbGlkUHJp
bWl0aXZlID0gdHJ1ZTsKLSAgICAgICAgYnJlYWs7Ci0KLSAgICBjYXNlIENTU1Byb3BlcnR5Qm9y
ZGVyVG9wU3R5bGU6ICAgICAvLy8vIDxib3JkZXItc3R5bGU+IHwgaW5oZXJpdAotICAgIGNhc2Ug
Q1NTUHJvcGVydHlCb3JkZXJSaWdodFN0eWxlOiAgIC8vICAgRGVmaW5lZCBhczogICAgbm9uZSB8
IGhpZGRlbiB8IGRvdHRlZCB8IGRhc2hlZCB8Ci0gICAgY2FzZSBDU1NQcm9wZXJ0eUJvcmRlckJv
dHRvbVN0eWxlOiAgLy8gICBzb2xpZCB8IGRvdWJsZSB8IGdyb292ZSB8IHJpZGdlIHwgaW5zZXQg
fCBvdXRzZXQKLSAgICBjYXNlIENTU1Byb3BlcnR5Qm9yZGVyTGVmdFN0eWxlOgotICAgIGNhc2Ug
Q1NTUHJvcGVydHlXZWJraXRCb3JkZXJTdGFydFN0eWxlOgotICAgIGNhc2UgQ1NTUHJvcGVydHlX
ZWJraXRCb3JkZXJFbmRTdHlsZToKLSAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0Qm9yZGVyQmVm
b3JlU3R5bGU6Ci0gICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdEJvcmRlckFmdGVyU3R5bGU6Ci0g
ICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdENvbHVtblJ1bGVTdHlsZToKLSAgICAgICAgaWYgKGlk
ID49IENTU1ZhbHVlTm9uZSAmJiBpZCA8PSBDU1NWYWx1ZURvdWJsZSkKLSAgICAgICAgICAgIHZh
bGlkUHJpbWl0aXZlID0gdHJ1ZTsKLSAgICAgICAgYnJlYWs7Ci0KICAgICBjYXNlIENTU1Byb3Bl
cnR5Rm9udFdlaWdodDogIC8vIG5vcm1hbCB8IGJvbGQgfCBib2xkZXIgfCBsaWdodGVyIHwgMTAw
IHwgMjAwIHwgMzAwIHwgNDAwIHwgNTAwIHwgNjAwIHwgNzAwIHwgODAwIHwgOTAwIHwgaW5oZXJp
dAogICAgICAgICByZXR1cm4gcGFyc2VGb250V2VpZ2h0KGltcG9ydGFudCk7CiAKQEAgLTEzNTEs
MjEgKzE3MDIsNiBAQCBib29sIENTU1BhcnNlcjo6cGFyc2VWYWx1ZShpbnQgcHJvcElkLCBib29s
IGltcG9ydGFudCkKICAgICAgICAgICAgIHZhbGlkUHJpbWl0aXZlID0gdmFsaWRVbml0KHZhbHVl
LCBGTGVuZ3RoLCBtX3N0cmljdCk7CiAgICAgICAgIGJyZWFrOwogCi0gICAgY2FzZSBDU1NQcm9w
ZXJ0eVdvcmRCcmVhazogICAgICAgICAgLy8gbm9ybWFsIHwgYnJlYWstYWxsIHwgYnJlYWstd29y
ZCAodGhpcyBpcyBhIGN1c3RvbSBleHRlbnNpb24pCi0gICAgICAgIGlmIChpZCA9PSBDU1NWYWx1
ZU5vcm1hbCB8fCBpZCA9PSBDU1NWYWx1ZUJyZWFrQWxsIHx8IGlkID09IENTU1ZhbHVlQnJlYWtX
b3JkKQotICAgICAgICAgICAgdmFsaWRQcmltaXRpdmUgPSB0cnVlOwotICAgICAgICBicmVhazsK
LQotICAgIGNhc2UgQ1NTUHJvcGVydHlXb3JkV3JhcDogICAgICAgICAgIC8vIG5vcm1hbCB8IGJy
ZWFrLXdvcmQKLSAgICAgICAgaWYgKGlkID09IENTU1ZhbHVlTm9ybWFsIHx8IGlkID09IENTU1Zh
bHVlQnJlYWtXb3JkKQotICAgICAgICAgICAgdmFsaWRQcmltaXRpdmUgPSB0cnVlOwotICAgICAg
ICBicmVhazsKLSAgICBjYXNlIENTU1Byb3BlcnR5U3BlYWs6ICAgICAgICAgICAvLyBub25lIHwg
bm9ybWFsIHwgc3BlbGwtb3V0IHwgZGlnaXRzIHwgbGl0ZXJhbC1wdW5jdHVhdGlvbiB8IG5vLXB1
bmN0dWF0aW9uIHwgaW5oZXJpdAotICAgICAgICBpZiAoaWQgPT0gQ1NTVmFsdWVOb25lIHx8IGlk
ID09IENTU1ZhbHVlTm9ybWFsIHx8IGlkID09IENTU1ZhbHVlU3BlbGxPdXQgfHwgaWQgPT0gQ1NT
VmFsdWVEaWdpdHMKLSAgICAgICAgICAgIHx8IGlkID09IENTU1ZhbHVlTGl0ZXJhbFB1bmN0dWF0
aW9uIHx8IGlkID09IENTU1ZhbHVlTm9QdW5jdHVhdGlvbikKLSAgICAgICAgICAgIHZhbGlkUHJp
bWl0aXZlID0gdHJ1ZTsKLSAgICAgICAgYnJlYWs7Ci0KICAgICBjYXNlIENTU1Byb3BlcnR5VGV4
dEluZGVudDogICAgICAgICAgLy8gPGxlbmd0aD4gfCA8cGVyY2VudGFnZT4gfCBpbmhlcml0CiAg
ICAgICAgIHZhbGlkUHJpbWl0aXZlID0gKCFpZCAmJiB2YWxpZFVuaXQodmFsdWUsIEZMZW5ndGgg
fCBGUGVyY2VudCwgbV9zdHJpY3QpKTsKICAgICAgICAgYnJlYWs7CkBAIC0xNDA4LDExICsxNzQ0
LDYgQEAgYm9vbCBDU1NQYXJzZXI6OnBhcnNlVmFsdWUoaW50IHByb3BJZCwgYm9vbCBpbXBvcnRh
bnQpCiAgICAgICAgICAgICB2YWxpZFByaW1pdGl2ZSA9ICh2YWxpZFVuaXQodmFsdWUsIEZMZW5n
dGggfCBGUGVyY2VudCB8IEZOb25OZWcsIG1fc3RyaWN0KSk7CiAgICAgICAgIGJyZWFrOwogCi0g
ICAgY2FzZSBDU1NQcm9wZXJ0eUZvbnRTdHlsZTogICAgICAgICAgIC8vIG5vcm1hbCB8IGl0YWxp
YyB8IG9ibGlxdWUgfCBpbmhlcml0Ci0gICAgICAgIGlmIChpZCA9PSBDU1NWYWx1ZU5vcm1hbCB8
fCBpZCA9PSBDU1NWYWx1ZUl0YWxpYyB8fCBpZCA9PSBDU1NWYWx1ZU9ibGlxdWUpCi0gICAgICAg
ICAgICB2YWxpZFByaW1pdGl2ZSA9IHRydWU7Ci0gICAgICAgIGJyZWFrOwotCiAgICAgY2FzZSBD
U1NQcm9wZXJ0eUZvbnRWYXJpYW50OiAgICAgICAgIC8vIG5vcm1hbCB8IHNtYWxsLWNhcHMgfCBp
bmhlcml0CiAgICAgICAgIHJldHVybiBwYXJzZUZvbnRWYXJpYW50KGltcG9ydGFudCk7CiAKQEAg
LTE1MjgsMTEgKzE4NTksNiBAQCBib29sIENTU1BhcnNlcjo6cGFyc2VWYWx1ZShpbnQgcHJvcElk
LCBib29sIGltcG9ydGFudCkKICAgICAgICAgICAgIHZhbGlkUHJpbWl0aXZlID0gKCFpZCAmJiB2
YWxpZFVuaXQodmFsdWUsIEZOdW1iZXIgfCBGUGVyY2VudCB8IEZOb25OZWcsIHRydWUpKTsKICAg
ICAgICAgYnJlYWs7CiAKLSAgICBjYXNlIENTU1Byb3BlcnR5VGFibGVMYXlvdXQ6ICAgICAgICAg
Ly8gYXV0byB8IGZpeGVkIHwgaW5oZXJpdAotICAgICAgICBpZiAoaWQgPT0gQ1NTVmFsdWVBdXRv
IHx8IGlkID09IENTU1ZhbHVlRml4ZWQpCi0gICAgICAgICAgICB2YWxpZFByaW1pdGl2ZSA9IHRy
dWU7Ci0gICAgICAgIGJyZWFrOwotCiAgICAgY2FzZSBDU1NQcm9wZXJ0eVNyYzogIC8vIE9ubHkg
dXNlZCB3aXRoaW4gQGZvbnQtZmFjZSwgc28gY2Fubm90IHVzZSBpbmhlcml0IHwgaW5pdGlhbCBv
ciBiZSAhaW1wb3J0YW50LiAgVGhpcyBpcyBhIGxpc3Qgb2YgdXJscyBvciBsb2NhbCByZWZlcmVu
Y2VzLgogICAgICAgICByZXR1cm4gcGFyc2VGb250RmFjZVNyYygpOwogCkBAIC0xNTQwLDEwICsx
ODY2LDYgQEAgYm9vbCBDU1NQYXJzZXI6OnBhcnNlVmFsdWUoaW50IHByb3BJZCwgYm9vbCBpbXBv
cnRhbnQpCiAgICAgICAgIHJldHVybiBwYXJzZUZvbnRGYWNlVW5pY29kZVJhbmdlKCk7CiAKICAg
ICAvKiBDU1MzIHByb3BlcnRpZXMgKi8KLSAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0QXBwZWFy
YW5jZToKLSAgICAgICAgaWYgKChpZCA+PSBDU1NWYWx1ZUNoZWNrYm94ICYmIGlkIDw9IENTU1Zh
bHVlVGV4dGFyZWEpIHx8IGlkID09IENTU1ZhbHVlTm9uZSkKLSAgICAgICAgICAgIHZhbGlkUHJp
bWl0aXZlID0gdHJ1ZTsKLSAgICAgICAgYnJlYWs7CiAKICAgICBjYXNlIENTU1Byb3BlcnR5Qm9y
ZGVySW1hZ2U6IHsKICAgICAgICAgUmVmUHRyPENTU1ZhbHVlPiByZXN1bHQ7CkBAIC0xNjUxLDI5
ICsxOTczLDYgQEAgYm9vbCBDU1NQYXJzZXI6OnBhcnNlVmFsdWUoaW50IHByb3BJZCwgYm9vbCBp
bXBvcnRhbnQpCiAgICAgY2FzZSBDU1NQcm9wZXJ0eU9wYWNpdHk6CiAgICAgICAgIHZhbGlkUHJp
bWl0aXZlID0gdmFsaWRVbml0KHZhbHVlLCBGTnVtYmVyLCBtX3N0cmljdCk7CiAgICAgICAgIGJy
ZWFrOwotICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRCb3hBbGlnbjoKLSAgICAgICAgaWYgKGlk
ID09IENTU1ZhbHVlU3RyZXRjaCB8fCBpZCA9PSBDU1NWYWx1ZVN0YXJ0IHx8IGlkID09IENTU1Zh
bHVlRW5kIHx8Ci0gICAgICAgICAgICBpZCA9PSBDU1NWYWx1ZUNlbnRlciB8fCBpZCA9PSBDU1NW
YWx1ZUJhc2VsaW5lKQotICAgICAgICAgICAgdmFsaWRQcmltaXRpdmUgPSB0cnVlOwotICAgICAg
ICBicmVhazsKLSAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0Qm94RGlyZWN0aW9uOgotICAgICAg
ICBpZiAoaWQgPT0gQ1NTVmFsdWVOb3JtYWwgfHwgaWQgPT0gQ1NTVmFsdWVSZXZlcnNlKQotICAg
ICAgICAgICAgdmFsaWRQcmltaXRpdmUgPSB0cnVlOwotICAgICAgICBicmVhazsKLSAgICBjYXNl
IENTU1Byb3BlcnR5V2Via2l0Qm94TGluZXM6Ci0gICAgICAgIGlmIChpZCA9PSBDU1NWYWx1ZVNp
bmdsZSB8fCBpZCA9PSBDU1NWYWx1ZU11bHRpcGxlKQotICAgICAgICAgICAgdmFsaWRQcmltaXRp
dmUgPSB0cnVlOwotICAgICAgICBicmVhazsKLSAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0Qm94
T3JpZW50OgotICAgICAgICBpZiAoaWQgPT0gQ1NTVmFsdWVIb3Jpem9udGFsIHx8IGlkID09IENT
U1ZhbHVlVmVydGljYWwgfHwKLSAgICAgICAgICAgIGlkID09IENTU1ZhbHVlSW5saW5lQXhpcyB8
fCBpZCA9PSBDU1NWYWx1ZUJsb2NrQXhpcykKLSAgICAgICAgICAgIHZhbGlkUHJpbWl0aXZlID0g
dHJ1ZTsKLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdEJveFBhY2s6
Ci0gICAgICAgIGlmIChpZCA9PSBDU1NWYWx1ZVN0YXJ0IHx8IGlkID09IENTU1ZhbHVlRW5kIHx8
Ci0gICAgICAgICAgICBpZCA9PSBDU1NWYWx1ZUNlbnRlciB8fCBpZCA9PSBDU1NWYWx1ZUp1c3Rp
ZnkpCi0gICAgICAgICAgICB2YWxpZFByaW1pdGl2ZSA9IHRydWU7Ci0gICAgICAgIGJyZWFrOwog
ICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRCb3hGbGV4OgogICAgICAgICB2YWxpZFByaW1pdGl2
ZSA9IHZhbGlkVW5pdCh2YWx1ZSwgRk51bWJlciwgbV9zdHJpY3QpOwogICAgICAgICBicmVhazsK
QEAgLTE2ODEsMTIgKzE5ODAsNiBAQCBib29sIENTU1BhcnNlcjo6cGFyc2VWYWx1ZShpbnQgcHJv
cElkLCBib29sIGltcG9ydGFudCkKICAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0Qm94T3JkaW5h
bEdyb3VwOgogICAgICAgICB2YWxpZFByaW1pdGl2ZSA9IHZhbGlkVW5pdCh2YWx1ZSwgRkludGVn
ZXIgfCBGTm9uTmVnLCB0cnVlKTsKICAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBDU1NQcm9wZXJ0
eUJveFNpemluZzoKLSAgICAgICAgdmFsaWRQcmltaXRpdmUgPSBpZCA9PSBDU1NWYWx1ZUJvcmRl
ckJveCB8fCBpZCA9PSBDU1NWYWx1ZUNvbnRlbnRCb3g7Ci0gICAgICAgIGJyZWFrOwotICAgIGNh
c2UgQ1NTUHJvcGVydHlXZWJraXRDb2xvckNvcnJlY3Rpb246Ci0gICAgICAgIHZhbGlkUHJpbWl0
aXZlID0gaWQgPT0gQ1NTVmFsdWVTcmdiIHx8IGlkID09IENTU1ZhbHVlRGVmYXVsdDsKLSAgICAg
ICAgYnJlYWs7CiAjaWYgRU5BQkxFKENTU19GSUxURVJTKQogICAgIGNhc2UgQ1NTUHJvcGVydHlX
ZWJraXRGaWx0ZXI6CiAgICAgICAgIGlmIChpZCA9PSBDU1NWYWx1ZU5vbmUpCkBAIC0xNzA5LDQ2
ICsyMDAyLDE4IEBAIGJvb2wgQ1NTUGFyc2VyOjpwYXJzZVZhbHVlKGludCBwcm9wSWQsIGJvb2wg
aW1wb3J0YW50KQogICAgICAgICAgICAgbV92YWx1ZUxpc3QtPm5leHQoKTsKICAgICAgICAgfQog
ICAgICAgICBicmVhazsKLSAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0RmxleFBhY2s6Ci0gICAg
ICAgIHZhbGlkUHJpbWl0aXZlID0gaWQgPT0gQ1NTVmFsdWVTdGFydCB8fCBpZCA9PSBDU1NWYWx1
ZUVuZCB8fCBpZCA9PSBDU1NWYWx1ZUNlbnRlciB8fCBpZCA9PSBDU1NWYWx1ZUp1c3RpZnkgfHwg
aWQgPT0gQ1NTVmFsdWVEaXN0cmlidXRlOwotICAgICAgICBicmVhazsKLSAgICBjYXNlIENTU1By
b3BlcnR5V2Via2l0RmxleEFsaWduOgotICAgICAgICB2YWxpZFByaW1pdGl2ZSA9IGlkID09IENT
U1ZhbHVlU3RhcnQgfHwgaWQgPT0gQ1NTVmFsdWVFbmQgfHwgaWQgPT0gQ1NTVmFsdWVDZW50ZXIg
fHwgaWQgPT0gQ1NTVmFsdWVCYXNlbGluZSB8fCBpZCA9PSBDU1NWYWx1ZVN0cmV0Y2g7Ci0gICAg
ICAgIGJyZWFrOwotICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRGbGV4SXRlbUFsaWduOgotICAg
ICAgICB2YWxpZFByaW1pdGl2ZSA9IGlkID09IENTU1ZhbHVlQXV0byB8fCBpZCA9PSBDU1NWYWx1
ZVN0YXJ0IHx8IGlkID09IENTU1ZhbHVlRW5kIHx8IGlkID09IENTU1ZhbHVlQ2VudGVyIHx8IGlk
ID09IENTU1ZhbHVlQmFzZWxpbmUgfHwgaWQgPT0gQ1NTVmFsdWVTdHJldGNoOwotICAgICAgICBi
cmVhazsKLSAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0RmxleERpcmVjdGlvbjoKLSAgICAgICAg
dmFsaWRQcmltaXRpdmUgPSBpZCA9PSBDU1NWYWx1ZVJvdyB8fCBpZCA9PSBDU1NWYWx1ZVJvd1Jl
dmVyc2UgfHwgaWQgPT0gQ1NTVmFsdWVDb2x1bW4gfHwgaWQgPT0gQ1NTVmFsdWVDb2x1bW5SZXZl
cnNlOwotICAgICAgICBicmVhazsKLSAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0RmxleFdyYXA6
Ci0gICAgICAgIHZhbGlkUHJpbWl0aXZlID0gaWQgPT0gQ1NTVmFsdWVOb25lIHx8IGlkID09IENT
U1ZhbHVlV3JhcCB8fCBpZCA9PSBDU1NWYWx1ZVdyYXBSZXZlcnNlOwotICAgICAgICBicmVhazsK
LSAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0RmxleExpbmVQYWNrOgotICAgICAgICB2YWxpZFBy
aW1pdGl2ZSA9IGlkID09IENTU1ZhbHVlU3RhcnQgfHwgaWQgPT0gQ1NTVmFsdWVFbmQgfHwgaWQg
PT0gQ1NTVmFsdWVDZW50ZXIgfHwgaWQgPT0gQ1NTVmFsdWVKdXN0aWZ5IHx8IGlkID09IENTU1Zh
bHVlRGlzdHJpYnV0ZSB8fCBpZCA9PSBDU1NWYWx1ZVN0cmV0Y2g7Ci0gICAgICAgIGJyZWFrOwog
ICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRNYXJxdWVlOiB7CiAgICAgICAgIGNvbnN0IGludCBw
cm9wZXJ0aWVzWzVdID0geyBDU1NQcm9wZXJ0eVdlYmtpdE1hcnF1ZWVEaXJlY3Rpb24sIENTU1By
b3BlcnR5V2Via2l0TWFycXVlZUluY3JlbWVudCwKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIENTU1Byb3BlcnR5V2Via2l0TWFycXVlZVJlcGV0aXRpb24sCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBDU1NQcm9wZXJ0eVdlYmtpdE1hcnF1ZWVTdHlsZSwg
Q1NTUHJvcGVydHlXZWJraXRNYXJxdWVlU3BlZWQgfTsKICAgICAgICAgcmV0dXJuIHBhcnNlU2hv
cnRoYW5kKHByb3BJZCwgcHJvcGVydGllcywgNSwgaW1wb3J0YW50KTsKICAgICB9Ci0gICAgY2Fz
ZSBDU1NQcm9wZXJ0eVdlYmtpdE1hcnF1ZWVEaXJlY3Rpb246Ci0gICAgICAgIGlmIChpZCA9PSBD
U1NWYWx1ZUZvcndhcmRzIHx8IGlkID09IENTU1ZhbHVlQmFja3dhcmRzIHx8IGlkID09IENTU1Zh
bHVlQWhlYWQgfHwKLSAgICAgICAgICAgIGlkID09IENTU1ZhbHVlUmV2ZXJzZSB8fCBpZCA9PSBD
U1NWYWx1ZUxlZnQgfHwgaWQgPT0gQ1NTVmFsdWVSaWdodCB8fCBpZCA9PSBDU1NWYWx1ZURvd24g
fHwKLSAgICAgICAgICAgIGlkID09IENTU1ZhbHVlVXAgfHwgaWQgPT0gQ1NTVmFsdWVBdXRvKQot
ICAgICAgICAgICAgdmFsaWRQcmltaXRpdmUgPSB0cnVlOwotICAgICAgICBicmVhazsKICAgICBj
YXNlIENTU1Byb3BlcnR5V2Via2l0TWFycXVlZUluY3JlbWVudDoKICAgICAgICAgaWYgKGlkID09
IENTU1ZhbHVlU21hbGwgfHwgaWQgPT0gQ1NTVmFsdWVMYXJnZSB8fCBpZCA9PSBDU1NWYWx1ZU1l
ZGl1bSkKICAgICAgICAgICAgIHZhbGlkUHJpbWl0aXZlID0gdHJ1ZTsKICAgICAgICAgZWxzZQog
ICAgICAgICAgICAgdmFsaWRQcmltaXRpdmUgPSB2YWxpZFVuaXQodmFsdWUsIEZMZW5ndGggfCBG
UGVyY2VudCwgbV9zdHJpY3QpOwogICAgICAgICBicmVhazsKLSAgICBjYXNlIENTU1Byb3BlcnR5
V2Via2l0TWFycXVlZVN0eWxlOgotICAgICAgICBpZiAoaWQgPT0gQ1NTVmFsdWVOb25lIHx8IGlk
ID09IENTU1ZhbHVlU2xpZGUgfHwgaWQgPT0gQ1NTVmFsdWVTY3JvbGwgfHwgaWQgPT0gQ1NTVmFs
dWVBbHRlcm5hdGUpCi0gICAgICAgICAgICB2YWxpZFByaW1pdGl2ZSA9IHRydWU7Ci0gICAgICAg
IGJyZWFrOwogICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRNYXJxdWVlUmVwZXRpdGlvbjoKICAg
ICAgICAgaWYgKGlkID09IENTU1ZhbHVlSW5maW5pdGUpCiAgICAgICAgICAgICB2YWxpZFByaW1p
dGl2ZSA9IHRydWU7CkBAIC0xNzczLDIzICsyMDM4LDYgQEAgYm9vbCBDU1NQYXJzZXI6OnBhcnNl
VmFsdWUoaW50IHByb3BJZCwgYm9vbCBpbXBvcnRhbnQpCiAgICAgICAgIGlmIChjc3NSZWdpb25z
RW5hYmxlZCgpICYmIChpZCA9PSBDU1NWYWx1ZUF1dG8gfHwgaWQgPT0gQ1NTVmFsdWVCcmVhaykp
CiAgICAgICAgICAgICB2YWxpZFByaW1pdGl2ZSA9IHRydWU7CiAgICAgICAgIGJyZWFrOwotCi0g
ICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdFVzZXJEcmFnOiAvLyBhdXRvIHwgbm9uZSB8IGVsZW1l
bnQKLSAgICAgICAgaWYgKGlkID09IENTU1ZhbHVlQXV0byB8fCBpZCA9PSBDU1NWYWx1ZU5vbmUg
fHwgaWQgPT0gQ1NTVmFsdWVFbGVtZW50KQotICAgICAgICAgICAgdmFsaWRQcmltaXRpdmUgPSB0
cnVlOwotICAgICAgICBicmVhazsKLSAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0VXNlck1vZGlm
eTogLy8gcmVhZC1vbmx5IHwgcmVhZC13cml0ZQotICAgICAgICBpZiAoaWQgPT0gQ1NTVmFsdWVS
ZWFkT25seSB8fCBpZCA9PSBDU1NWYWx1ZVJlYWRXcml0ZSB8fCBpZCA9PSBDU1NWYWx1ZVJlYWRX
cml0ZVBsYWludGV4dE9ubHkpCi0gICAgICAgICAgICB2YWxpZFByaW1pdGl2ZSA9IHRydWU7Ci0g
ICAgICAgIGJyZWFrOwotICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRVc2VyU2VsZWN0OiAvLyBh
dXRvIHwgbm9uZSB8IHRleHQKLSAgICAgICAgaWYgKGlkID09IENTU1ZhbHVlQXV0byB8fCBpZCA9
PSBDU1NWYWx1ZU5vbmUgfHwgaWQgPT0gQ1NTVmFsdWVUZXh0KQotICAgICAgICAgICAgdmFsaWRQ
cmltaXRpdmUgPSB0cnVlOwotICAgICAgICBicmVhazsKLSAgICBjYXNlIENTU1Byb3BlcnR5VGV4
dE92ZXJmbG93OiAvLyBjbGlwIHwgZWxsaXBzaXMKLSAgICAgICAgaWYgKGlkID09IENTU1ZhbHVl
Q2xpcCB8fCBpZCA9PSBDU1NWYWx1ZUVsbGlwc2lzKQotICAgICAgICAgICAgdmFsaWRQcmltaXRp
dmUgPSB0cnVlOwotICAgICAgICBicmVhazsKICAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0VHJh
bnNmb3JtOgogICAgICAgICBpZiAoaWQgPT0gQ1NTVmFsdWVOb25lKQogICAgICAgICAgICAgdmFs
aWRQcmltaXRpdmUgPSB0cnVlOwpAQCAtMTgyMCwxOCArMjA2OCw2IEBAIGJvb2wgQ1NTUGFyc2Vy
OjpwYXJzZVZhbHVlKGludCBwcm9wSWQsIGJvb2wgaW1wb3J0YW50KQogICAgICAgICB9CiAgICAg
ICAgIHJldHVybiBmYWxzZTsKICAgICB9Ci0gICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdFRyYW5z
Zm9ybVN0eWxlOgotICAgICAgICBpZiAodmFsdWUtPmlkID09IENTU1ZhbHVlRmxhdCB8fCB2YWx1
ZS0+aWQgPT0gQ1NTVmFsdWVQcmVzZXJ2ZTNkKQotICAgICAgICAgICAgdmFsaWRQcmltaXRpdmUg
PSB0cnVlOwotICAgICAgICBicmVhazsKLSAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0QmFja2Zh
Y2VWaXNpYmlsaXR5OgotICAgICAgICBpZiAodmFsdWUtPmlkID09IENTU1ZhbHVlVmlzaWJsZSB8
fCB2YWx1ZS0+aWQgPT0gQ1NTVmFsdWVIaWRkZW4pCi0gICAgICAgICAgICB2YWxpZFByaW1pdGl2
ZSA9IHRydWU7Ci0gICAgICAgIGJyZWFrOwotICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRQcmlu
dENvbG9yQWRqdXN0OgotICAgICAgICBpZiAodmFsdWUtPmlkID09IENTU1ZhbHVlRXhhY3QgfHwg
dmFsdWUtPmlkID09IENTU1ZhbHVlRWNvbm9teSkKLSAgICAgICAgICAgIHZhbGlkUHJpbWl0aXZl
ID0gdHJ1ZTsKLSAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdFBlcnNw
ZWN0aXZlOgogICAgICAgICBpZiAoaWQgPT0gQ1NTVmFsdWVOb25lKQogICAgICAgICAgICAgdmFs
aWRQcmltaXRpdmUgPSB0cnVlOwpAQCAtMTkwOSwzMiArMjE0NSw2IEBAIGJvb2wgQ1NTUGFyc2Vy
OjpwYXJzZVZhbHVlKGludCBwcm9wSWQsIGJvb2wgaW1wb3J0YW50KQogICAgICAgICB9CiAgICAg
ICAgIHJldHVybiBmYWxzZTsKICAgICB9Ci0gICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdE1hcmdp
bkJlZm9yZUNvbGxhcHNlOgotICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRNYXJnaW5BZnRlckNv
bGxhcHNlOgotICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRNYXJnaW5Ub3BDb2xsYXBzZToKLSAg
ICBjYXNlIENTU1Byb3BlcnR5V2Via2l0TWFyZ2luQm90dG9tQ29sbGFwc2U6Ci0gICAgICAgIGlm
IChpZCA9PSBDU1NWYWx1ZUNvbGxhcHNlIHx8IGlkID09IENTU1ZhbHVlU2VwYXJhdGUgfHwgaWQg
PT0gQ1NTVmFsdWVEaXNjYXJkKQotICAgICAgICAgICAgdmFsaWRQcmltaXRpdmUgPSB0cnVlOwot
ICAgICAgICBicmVhazsKLSAgICBjYXNlIENTU1Byb3BlcnR5VGV4dExpbmVUaHJvdWdoTW9kZToK
LSAgICBjYXNlIENTU1Byb3BlcnR5VGV4dE92ZXJsaW5lTW9kZToKLSAgICBjYXNlIENTU1Byb3Bl
cnR5VGV4dFVuZGVybGluZU1vZGU6Ci0gICAgICAgIGlmIChpZCA9PSBDU1NWYWx1ZUNvbnRpbnVv
dXMgfHwgaWQgPT0gQ1NTVmFsdWVTa2lwV2hpdGVTcGFjZSkKLSAgICAgICAgICAgIHZhbGlkUHJp
bWl0aXZlID0gdHJ1ZTsKLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBDU1NQcm9wZXJ0eVRleHRM
aW5lVGhyb3VnaFN0eWxlOgotICAgIGNhc2UgQ1NTUHJvcGVydHlUZXh0T3ZlcmxpbmVTdHlsZToK
LSAgICBjYXNlIENTU1Byb3BlcnR5VGV4dFVuZGVybGluZVN0eWxlOgotICAgICAgICBpZiAoaWQg
PT0gQ1NTVmFsdWVOb25lIHx8IGlkID09IENTU1ZhbHVlU29saWQgfHwgaWQgPT0gQ1NTVmFsdWVE
b3VibGUgfHwKLSAgICAgICAgICAgIGlkID09IENTU1ZhbHVlRGFzaGVkIHx8IGlkID09IENTU1Zh
bHVlRG90RGFzaCB8fCBpZCA9PSBDU1NWYWx1ZURvdERvdERhc2ggfHwKLSAgICAgICAgICAgIGlk
ID09IENTU1ZhbHVlV2F2ZSkKLSAgICAgICAgICAgIHZhbGlkUHJpbWl0aXZlID0gdHJ1ZTsKLSAg
ICAgICAgYnJlYWs7Ci0gICAgY2FzZSBDU1NQcm9wZXJ0eVRleHRSZW5kZXJpbmc6IC8vIGF1dG8g
fCBvcHRpbWl6ZVNwZWVkIHwgb3B0aW1pemVMZWdpYmlsaXR5IHwgZ2VvbWV0cmljUHJlY2lzaW9u
Ci0gICAgICAgIGlmIChpZCA9PSBDU1NWYWx1ZUF1dG8gfHwgaWQgPT0gQ1NTVmFsdWVPcHRpbWl6
ZXNwZWVkIHx8IGlkID09IENTU1ZhbHVlT3B0aW1pemVsZWdpYmlsaXR5Ci0gICAgICAgICAgICB8
fCBpZCA9PSBDU1NWYWx1ZUdlb21ldHJpY3ByZWNpc2lvbikKLSAgICAgICAgICAgIHZhbGlkUHJp
bWl0aXZlID0gdHJ1ZTsKLSAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBDU1NQcm9wZXJ0eVRleHRM
aW5lVGhyb3VnaFdpZHRoOgogICAgIGNhc2UgQ1NTUHJvcGVydHlUZXh0T3ZlcmxpbmVXaWR0aDoK
ICAgICBjYXNlIENTU1Byb3BlcnR5VGV4dFVuZGVybGluZVdpZHRoOgpAQCAtMTk0NCwxMCArMjE1
NCw2IEBAIGJvb2wgQ1NTUGFyc2VyOjpwYXJzZVZhbHVlKGludCBwcm9wSWQsIGJvb2wgaW1wb3J0
YW50KQogICAgICAgICBlbHNlCiAgICAgICAgICAgICB2YWxpZFByaW1pdGl2ZSA9ICFpZCAmJiB2
YWxpZFVuaXQodmFsdWUsIEZOdW1iZXIgfCBGTGVuZ3RoIHwgRlBlcmNlbnQsIG1fc3RyaWN0KTsK
ICAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBDU1NQcm9wZXJ0eVJlc2l6ZTogLy8gbm9uZSB8IGJv
dGggfCBob3Jpem9udGFsIHwgdmVydGljYWwgfCBhdXRvCi0gICAgICAgIGlmIChpZCA9PSBDU1NW
YWx1ZU5vbmUgfHwgaWQgPT0gQ1NTVmFsdWVCb3RoIHx8IGlkID09IENTU1ZhbHVlSG9yaXpvbnRh
bCB8fCBpZCA9PSBDU1NWYWx1ZVZlcnRpY2FsIHx8IGlkID09IENTU1ZhbHVlQXV0bykKLSAgICAg
ICAgICAgIHZhbGlkUHJpbWl0aXZlID0gdHJ1ZTsKLSAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBD
U1NQcm9wZXJ0eVdlYmtpdENvbHVtbkNvdW50OgogICAgICAgICBpZiAoaWQgPT0gQ1NTVmFsdWVB
dXRvKQogICAgICAgICAgICAgdmFsaWRQcmltaXRpdmUgPSB0cnVlOwpAQCAtMTk3NiwxNyArMjE4
Miw2IEBAIGJvb2wgQ1NTUGFyc2VyOjpwYXJzZVZhbHVlKGludCBwcm9wSWQsIGJvb2wgaW1wb3J0
YW50KQogICAgICAgICBlbHNlIC8vIEFsd2F5cyBwYXJzZSB0aGlzIHByb3BlcnR5IGluIHN0cmlj
dCBtb2RlLCBzaW5jZSBpdCB3b3VsZCBiZSBhbWJpZ3VvdXMgb3RoZXJ3aXNlIHdoZW4gdXNlZCBp
biB0aGUgJ2NvbHVtbnMnIHNob3J0aGFuZCBwcm9wZXJ0eS4KICAgICAgICAgICAgIHZhbGlkUHJp
bWl0aXZlID0gdmFsaWRVbml0KHZhbHVlLCBGTGVuZ3RoLCB0cnVlKTsKICAgICAgICAgYnJlYWs7
Ci0gICAgY2FzZSBDU1NQcm9wZXJ0eVBvaW50ZXJFdmVudHM6Ci0gICAgICAgIC8vIG5vbmUgfCB2
aXNpYmxlUGFpbnRlZCB8IHZpc2libGVGaWxsIHwgdmlzaWJsZVN0cm9rZSB8IHZpc2libGUgfAot
ICAgICAgICAvLyBwYWludGVkIHwgZmlsbCB8IHN0cm9rZSB8IGF1dG8gfCBhbGwgfCBpbmhlcml0
Ci0gICAgICAgIGlmIChpZCA9PSBDU1NWYWx1ZVZpc2libGUgfHwgaWQgPT0gQ1NTVmFsdWVOb25l
IHx8IGlkID09IENTU1ZhbHVlQWxsIHx8IGlkID09IENTU1ZhbHVlQXV0byB8fAotICAgICAgICAg
ICAgKGlkID49IENTU1ZhbHVlVmlzaWJsZXBhaW50ZWQgJiYgaWQgPD0gQ1NTVmFsdWVTdHJva2Up
KQotICAgICAgICAgICAgdmFsaWRQcmltaXRpdmUgPSB0cnVlOwotICAgICAgICBicmVhazsKLSAg
ICBjYXNlIENTU1Byb3BlcnR5SW1hZ2VSZW5kZXJpbmc6IC8vIGF1dG8gfCBvcHRpbWl6ZUNvbnRy
YXN0Ci0gICAgICAgIGlmIChpZCA9PSBDU1NWYWx1ZUF1dG8gfHwgaWQgPT0gQ1NTVmFsdWVXZWJr
aXRPcHRpbWl6ZUNvbnRyYXN0KQotICAgICAgICAgICAgdmFsaWRQcmltaXRpdmUgPSB0cnVlOwot
ICAgICAgICBicmVhazsKICAgICAvLyBFbmQgb2YgQ1NTMyBwcm9wZXJ0aWVzCiAKICAgICAvLyBB
cHBsZSBzcGVjaWZpYyBwcm9wZXJ0aWVzLiAgVGhlc2Ugd2lsbCBuZXZlciBiZSBzdGFuZGFyZGl6
ZWQgYW5kIGFyZSBwdXJlbHkgdG8KQEAgLTE5OTYsNDQgKzIxOTEsMTYgQEAgYm9vbCBDU1NQYXJz
ZXI6OnBhcnNlVmFsdWUoaW50IHByb3BJZCwgYm9vbCBpbXBvcnRhbnQpCiAgICAgICAgIC8vIFdo
ZW4gc3BlY2lmeWluZyBlaXRoZXIgdHlwZSBvZiB1bml0LCByZXF1aXJlIG5vbi1uZWdhdGl2ZSBp
bnRlZ2VycwogICAgICAgICB2YWxpZFByaW1pdGl2ZSA9ICghaWQgJiYgKHZhbHVlLT51bml0ID09
IENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfUEVSQ0VOVEFHRSB8fCB2YWx1ZS0+ZlZhbHVlKSAmJiB2
YWxpZFVuaXQodmFsdWUsIEZJbnRlZ2VyIHwgRlBlcmNlbnQgfCBGTm9uTmVnLCBmYWxzZSkpOwog
ICAgICAgICBicmVhazsKLSAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0VGV4dFNpemVBZGp1c3Q6
Ci0gICAgICAgIGlmIChpZCA9PSBDU1NWYWx1ZUF1dG8gfHwgaWQgPT0gQ1NTVmFsdWVOb25lKQot
ICAgICAgICAgICAgdmFsaWRQcmltaXRpdmUgPSB0cnVlOwotICAgICAgICBicmVhazsKLSAgICBj
YXNlIENTU1Byb3BlcnR5V2Via2l0UnRsT3JkZXJpbmc6Ci0gICAgICAgIGlmIChpZCA9PSBDU1NW
YWx1ZUxvZ2ljYWwgfHwgaWQgPT0gQ1NTVmFsdWVWaXN1YWwpCi0gICAgICAgICAgICB2YWxpZFBy
aW1pdGl2ZSA9IHRydWU7Ci0gICAgICAgIGJyZWFrOwogCiAgICAgY2FzZSBDU1NQcm9wZXJ0eVdl
YmtpdEZvbnRTaXplRGVsdGE6ICAgICAgICAgICAvLyA8bGVuZ3RoPgogICAgICAgICB2YWxpZFBy
aW1pdGl2ZSA9IHZhbGlkVW5pdCh2YWx1ZSwgRkxlbmd0aCwgbV9zdHJpY3QpOwogICAgICAgICBi
cmVhazsKIAotICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXROYnNwTW9kZTogICAgIC8vIG5vcm1h
bCB8IHNwYWNlCi0gICAgICAgIGlmIChpZCA9PSBDU1NWYWx1ZU5vcm1hbCB8fCBpZCA9PSBDU1NW
YWx1ZVNwYWNlKQotICAgICAgICAgICAgdmFsaWRQcmltaXRpdmUgPSB0cnVlOwotICAgICAgICBi
cmVhazsKLQotICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRMaW5lQnJlYWs6ICAgLy8gbm9ybWFs
IHwgYWZ0ZXItd2hpdGUtc3BhY2UKLSAgICAgICAgaWYgKGlkID09IENTU1ZhbHVlTm9ybWFsIHx8
IGlkID09IENTU1ZhbHVlQWZ0ZXJXaGl0ZVNwYWNlKQotICAgICAgICAgICAgdmFsaWRQcmltaXRp
dmUgPSB0cnVlOwotICAgICAgICBicmVhazsKLQotICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRN
YXRjaE5lYXJlc3RNYWlsQmxvY2txdW90ZUNvbG9yOiAgIC8vIG5vcm1hbCB8IG1hdGNoCi0gICAg
ICAgIGlmIChpZCA9PSBDU1NWYWx1ZU5vcm1hbCB8fCBpZCA9PSBDU1NWYWx1ZU1hdGNoKQotICAg
ICAgICAgICAgdmFsaWRQcmltaXRpdmUgPSB0cnVlOwotICAgICAgICBicmVhazsKLQogICAgIGNh
c2UgQ1NTUHJvcGVydHlXZWJraXRIaWdobGlnaHQ6CiAgICAgICAgIGlmIChpZCA9PSBDU1NWYWx1
ZU5vbmUgfHwgdmFsdWUtPnVuaXQgPT0gQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19TVFJJTkcpCiAg
ICAgICAgICAgICB2YWxpZFByaW1pdGl2ZSA9IHRydWU7CiAgICAgICAgIGJyZWFrOwogCi0gICAg
Y2FzZSBDU1NQcm9wZXJ0eVdlYmtpdEh5cGhlbnM6Ci0gICAgICAgIGlmIChpZCA9PSBDU1NWYWx1
ZU5vbmUgfHwgaWQgPT0gQ1NTVmFsdWVNYW51YWwgfHwgaWQgPT0gQ1NTVmFsdWVBdXRvKQotICAg
ICAgICAgICAgdmFsaWRQcmltaXRpdmUgPSB0cnVlOwotICAgICAgICBicmVhazsKLQogICAgIGNh
c2UgQ1NTUHJvcGVydHlXZWJraXRIeXBoZW5hdGVDaGFyYWN0ZXI6CiAgICAgICAgIGlmIChpZCA9
PSBDU1NWYWx1ZUF1dG8gfHwgdmFsdWUtPnVuaXQgPT0gQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19T
VFJJTkcpCiAgICAgICAgICAgICB2YWxpZFByaW1pdGl2ZSA9IHRydWU7CkBAIC0yMDYxLDM2ICsy
MjI4LDExIEBAIGJvb2wgQ1NTUGFyc2VyOjpwYXJzZVZhbHVlKGludCBwcm9wSWQsIGJvb2wgaW1w
b3J0YW50KQogICAgICAgICAgICAgfQogICAgICAgICB9CiAgICAgICAgIGJyZWFrOwotICAgIGNh
c2UgQ1NTUHJvcGVydHlXZWJraXRMaW5lU25hcDoKLSAgICAgICAgaWYgKGlkID09IENTU1ZhbHVl
Tm9uZSB8fCBpZCA9PSBDU1NWYWx1ZUJhc2VsaW5lIHx8IGlkID09IENTU1ZhbHVlQ29udGFpbikK
LSAgICAgICAgICAgIHZhbGlkUHJpbWl0aXZlID0gdHJ1ZTsKLSAgICAgICAgYnJlYWs7Ci0gICAg
Y2FzZSBDU1NQcm9wZXJ0eVdlYmtpdExpbmVBbGlnbjoKLSAgICAgICAgaWYgKGlkID09IENTU1Zh
bHVlTm9uZSB8fCBpZCA9PSBDU1NWYWx1ZUVkZ2VzKQotICAgICAgICAgICAgdmFsaWRQcmltaXRp
dmUgPSB0cnVlOwotICAgICAgICBicmVhazsKICAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0TG9j
YWxlOgogICAgICAgICBpZiAoaWQgPT0gQ1NTVmFsdWVBdXRvIHx8IHZhbHVlLT51bml0ID09IENT
U1ByaW1pdGl2ZVZhbHVlOjpDU1NfU1RSSU5HKQogICAgICAgICAgICAgdmFsaWRQcmltaXRpdmUg
PSB0cnVlOwogICAgICAgICBicmVhazsKIAotICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRCb3Jk
ZXJGaXQ6Ci0gICAgICAgIGlmIChpZCA9PSBDU1NWYWx1ZUJvcmRlciB8fCBpZCA9PSBDU1NWYWx1
ZUxpbmVzKQotICAgICAgICAgICAgdmFsaWRQcmltaXRpdmUgPSB0cnVlOwotICAgICAgICBicmVh
azsKLQotICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRUZXh0U2VjdXJpdHk6Ci0gICAgICAgIC8v
IGRpc2MgfCBjaXJjbGUgfCBzcXVhcmUgfCBub25lIHwgaW5oZXJpdAotICAgICAgICBpZiAoaWQg
PT0gQ1NTVmFsdWVEaXNjIHx8IGlkID09IENTU1ZhbHVlQ2lyY2xlIHx8IGlkID09IENTU1ZhbHVl
U3F1YXJlfHwgaWQgPT0gQ1NTVmFsdWVOb25lKQotICAgICAgICAgICAgdmFsaWRQcmltaXRpdmUg
PSB0cnVlOwotICAgICAgICBicmVhazsKLQotICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRGb250
U21vb3RoaW5nOgotICAgICAgICBpZiAoaWQgPT0gQ1NTVmFsdWVBdXRvIHx8IGlkID09IENTU1Zh
bHVlTm9uZQotICAgICAgICAgICAgfHwgaWQgPT0gQ1NTVmFsdWVBbnRpYWxpYXNlZCB8fCBpZCA9
PSBDU1NWYWx1ZVN1YnBpeGVsQW50aWFsaWFzZWQpCi0gICAgICAgICAgICB2YWxpZFByaW1pdGl2
ZSA9IHRydWU7Ci0gICAgICAgIGJyZWFrOwotCiAjaWYgRU5BQkxFKERBU0hCT0FSRF9TVVBQT1JU
KQogICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXREYXNoYm9hcmRSZWdpb246IC8vIDxkYXNoYm9h
cmQtcmVnaW9uPiB8IDxkYXNoYm9hcmQtcmVnaW9uPgogICAgICAgICBpZiAodmFsdWUtPnVuaXQg
PT0gQ1NTUGFyc2VyVmFsdWU6OkZ1bmN0aW9uIHx8IGlkID09IENTU1ZhbHVlTm9uZSkKQEAgLTIx
MTIsMTMgKzIyNTQsNiBAQCBib29sIENTU1BhcnNlcjo6cGFyc2VWYWx1ZShpbnQgcHJvcElkLCBi
b29sIGltcG9ydGFudCkKICAgICAgICAgYnJlYWs7CiAjZW5kaWYKIAotI2lmIEVOQUJMRShPVkVS
RkxPV19TQ1JPTExJTkcpCi0gICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdE92ZXJmbG93U2Nyb2xs
aW5nOgotICAgICAgICBpZiAoaWQgPT0gQ1NTVmFsdWVBdXRvIHx8IGlkID09IENTU1ZhbHVlVG91
Y2gpCi0gICAgICAgICAgICB2YWxpZFByaW1pdGl2ZSA9IHRydWU7Ci0gICAgICAgIGJyZWFrOwot
I2VuZGlmCi0KICAgICAgICAgLyogc2hvcnRoYW5kIHByb3BlcnRpZXMgKi8KICAgICBjYXNlIENT
U1Byb3BlcnR5QmFja2dyb3VuZDogewogICAgICAgICAvLyBQb3NpdGlvbiBtdXN0IGNvbWUgYmVm
b3JlIGNvbG9yIGluIHRoaXMgYXJyYXkgYmVjYXVzZSBhIHBsYWluIG9sZCAiMCIgaXMgYSBsZWdh
bCBjb2xvcgpAQCAtMjI4OCwyNiArMjQyMywxMSBAQCBib29sIENTU1BhcnNlcjo6cGFyc2VWYWx1
ZShpbnQgcHJvcElkLCBib29sIGltcG9ydGFudCkKICAgICBjYXNlIENTU1Byb3BlcnR5VGV4dFVu
ZGVybGluZToKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIC8vIENTUyBUZXh0IExheW91dCBN
b2R1bGUgTGV2ZWwgMzogVmVydGljYWwgd3JpdGluZyBzdXBwb3J0Ci0gICAgY2FzZSBDU1NQcm9w
ZXJ0eVdlYmtpdFdyaXRpbmdNb2RlOgotICAgICAgICBpZiAoaWQgPj0gQ1NTVmFsdWVIb3Jpem9u
dGFsVGIgJiYgaWQgPD0gQ1NTVmFsdWVIb3Jpem9udGFsQnQpCi0gICAgICAgICAgICB2YWxpZFBy
aW1pdGl2ZSA9IHRydWU7Ci0gICAgICAgIGJyZWFrOwotCi0gICAgY2FzZSBDU1NQcm9wZXJ0eVdl
YmtpdFRleHRDb21iaW5lOgotICAgICAgICBpZiAoaWQgPT0gQ1NTVmFsdWVOb25lIHx8IGlkID09
IENTU1ZhbHVlSG9yaXpvbnRhbCkKLSAgICAgICAgICAgIHZhbGlkUHJpbWl0aXZlID0gdHJ1ZTsK
LSAgICAgICAgYnJlYWs7Ci0KICAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0VGV4dEVtcGhhc2lz
OiB7CiAgICAgICAgIGNvbnN0IGludCBwcm9wZXJ0aWVzW10gPSB7IENTU1Byb3BlcnR5V2Via2l0
VGV4dEVtcGhhc2lzU3R5bGUsIENTU1Byb3BlcnR5V2Via2l0VGV4dEVtcGhhc2lzQ29sb3IgfTsK
ICAgICAgICAgcmV0dXJuIHBhcnNlU2hvcnRoYW5kKHByb3BJZCwgcHJvcGVydGllcywgV1RGX0FS
UkFZX0xFTkdUSChwcm9wZXJ0aWVzKSwgaW1wb3J0YW50KTsKICAgICB9CiAKLSAgICBjYXNlIENT
U1Byb3BlcnR5V2Via2l0VGV4dEVtcGhhc2lzUG9zaXRpb246Ci0gICAgICAgIGlmIChpZCA9PSBD
U1NWYWx1ZU92ZXIgfHwgaWQgPT0gQ1NTVmFsdWVVbmRlcikKLSAgICAgICAgICAgIHZhbGlkUHJp
bWl0aXZlID0gdHJ1ZTsKLSAgICAgICAgYnJlYWs7Ci0KICAgICBjYXNlIENTU1Byb3BlcnR5V2Vi
a2l0VGV4dEVtcGhhc2lzU3R5bGU6CiAgICAgICAgIHJldHVybiBwYXJzZVRleHRFbXBoYXNpc1N0
eWxlKGltcG9ydGFudCk7CiAKQEAgLTIzMzAsMTEgKzI0NTAsNiBAQCBib29sIENTU1BhcnNlcjo6
cGFyc2VWYWx1ZShpbnQgcHJvcElkLCBib29sIGltcG9ydGFudCkKICAgICAgICAgICAgIHJldHVy
biBwYXJzZUZvbnRGZWF0dXJlU2V0dGluZ3MoaW1wb3J0YW50KTsKICAgICAgICAgYnJlYWs7CiAK
LSAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0Rm9udEtlcm5pbmc6Ci0gICAgICAgIGlmIChpZCA9
PSBDU1NWYWx1ZUF1dG8gfHwgaWQgPT0gQ1NTVmFsdWVOb3JtYWwgfHwgaWQgPT0gQ1NTVmFsdWVO
b25lKQotICAgICAgICAgICAgdmFsaWRQcmltaXRpdmUgPSB0cnVlOwotICAgICAgICBicmVhazsK
LQogICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRGb250VmFyaWFudExpZ2F0dXJlczoKICAgICAg
ICAgaWYgKGlkID09IENTU1ZhbHVlTm9ybWFsKQogICAgICAgICAgICAgdmFsaWRQcmltaXRpdmUg
PSB0cnVlOwpAQCAtMjM0OSwxNSArMjQ2NCw2IEBAIGJvb2wgQ1NTUGFyc2VyOjpwYXJzZVZhbHVl
KGludCBwcm9wSWQsIGJvb2wgaW1wb3J0YW50KQogICAgICAgICBlbHNlIGlmICh2YWx1ZS0+dW5p
dCA9PSBDU1NQYXJzZXJWYWx1ZTo6RnVuY3Rpb24pCiAgICAgICAgICAgICByZXR1cm4gcGFyc2VX
cmFwU2hhcGUoKHByb3BJZCA9PSBDU1NQcm9wZXJ0eVdlYmtpdFdyYXBTaGFwZUluc2lkZSksIGlt
cG9ydGFudCk7CiAgICAgICAgIGJyZWFrOwotICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRXcmFw
RmxvdzoKLSAgICAgICAgaWYgKGlkID09IENTU1ZhbHVlQXV0byB8fCBpZCA9PSBDU1NWYWx1ZUJv
dGggfHwgaWQgPT0gQ1NTVmFsdWVMZWZ0IHx8IGlkID09IENTU1ZhbHVlUmlnaHQgfHwgaWQgPT0g
Q1NTVmFsdWVNYXhpbXVtIHx8IGlkID09IENTU1ZhbHVlQ2xlYXIpCi0gICAgICAgICAgICB2YWxp
ZFByaW1pdGl2ZSA9IHRydWU7Ci0gICAgICAgIGJyZWFrOwotCi0gICAgY2FzZSBDU1NQcm9wZXJ0
eVdlYmtpdFdyYXBUaHJvdWdoOgotICAgICAgICBpZiAoaWQgPT0gQ1NTVmFsdWVXcmFwIHx8IGlk
ID09IENTU1ZhbHVlTm9uZSkKLSAgICAgICAgICAgIHZhbGlkUHJpbWl0aXZlID0gdHJ1ZTsKLSAg
ICAgICAgYnJlYWs7CiAgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdFdyYXBNYXJnaW46CiAgICAg
Y2FzZSBDU1NQcm9wZXJ0eVdlYmtpdFdyYXBQYWRkaW5nOgogICAgICAgICB2YWxpZFByaW1pdGl2
ZSA9ICghaWQgJiYgdmFsaWRVbml0KHZhbHVlLCBGTGVuZ3RoIHwgRk5vbk5lZywgbV9zdHJpY3Qp
KTsKQEAgLTIzNjYsNiArMjQ3Miw5NiBAQCBib29sIENTU1BhcnNlcjo6cGFyc2VWYWx1ZShpbnQg
cHJvcElkLCBib29sIGltcG9ydGFudCkKICAgICAgICAgY29uc3QgaW50IHByb3BlcnRpZXNbXSA9
IHsgQ1NTUHJvcGVydHlXZWJraXRXcmFwRmxvdywgQ1NTUHJvcGVydHlXZWJraXRXcmFwTWFyZ2lu
LCBDU1NQcm9wZXJ0eVdlYmtpdFdyYXBQYWRkaW5nIH07CiAgICAgICAgIHJldHVybiBwYXJzZVNo
b3J0aGFuZChwcm9wSWQsIHByb3BlcnRpZXMsIFdURl9BUlJBWV9MRU5HVEgocHJvcGVydGllcyks
IGltcG9ydGFudCk7CiAgICAgfQorICAgIGNhc2UgQ1NTUHJvcGVydHlCb3JkZXJCb3R0b21TdHls
ZToKKyAgICBjYXNlIENTU1Byb3BlcnR5Qm9yZGVyQ29sbGFwc2U6CisgICAgY2FzZSBDU1NQcm9w
ZXJ0eUJvcmRlckxlZnRTdHlsZToKKyAgICBjYXNlIENTU1Byb3BlcnR5Qm9yZGVyUmlnaHRTdHls
ZToKKyAgICBjYXNlIENTU1Byb3BlcnR5Qm9yZGVyVG9wU3R5bGU6CisgICAgY2FzZSBDU1NQcm9w
ZXJ0eUJveFNpemluZzoKKyAgICBjYXNlIENTU1Byb3BlcnR5Q2FwdGlvblNpZGU6CisgICAgY2Fz
ZSBDU1NQcm9wZXJ0eUNsZWFyOgorICAgIGNhc2UgQ1NTUHJvcGVydHlEaXJlY3Rpb246CisgICAg
Y2FzZSBDU1NQcm9wZXJ0eURpc3BsYXk6CisgICAgY2FzZSBDU1NQcm9wZXJ0eUVtcHR5Q2VsbHM6
CisgICAgY2FzZSBDU1NQcm9wZXJ0eUZsb2F0OgorICAgIGNhc2UgQ1NTUHJvcGVydHlGb250U3R5
bGU6CisgICAgY2FzZSBDU1NQcm9wZXJ0eUltYWdlUmVuZGVyaW5nOgorICAgIGNhc2UgQ1NTUHJv
cGVydHlMaXN0U3R5bGVQb3NpdGlvbjoKKyAgICBjYXNlIENTU1Byb3BlcnR5TGlzdFN0eWxlVHlw
ZToKKyAgICBjYXNlIENTU1Byb3BlcnR5T3V0bGluZVN0eWxlOgorICAgIGNhc2UgQ1NTUHJvcGVy
dHlPdmVyZmxvd1g6CisgICAgY2FzZSBDU1NQcm9wZXJ0eU92ZXJmbG93WToKKyAgICBjYXNlIENT
U1Byb3BlcnR5UG9pbnRlckV2ZW50czoKKyAgICBjYXNlIENTU1Byb3BlcnR5UG9zaXRpb246Cisg
ICAgY2FzZSBDU1NQcm9wZXJ0eVJlc2l6ZToKKyAgICBjYXNlIENTU1Byb3BlcnR5U3BlYWs6Cisg
ICAgY2FzZSBDU1NQcm9wZXJ0eVRhYmxlTGF5b3V0OgorICAgIGNhc2UgQ1NTUHJvcGVydHlUZXh0
TGluZVRocm91Z2hNb2RlOgorICAgIGNhc2UgQ1NTUHJvcGVydHlUZXh0TGluZVRocm91Z2hTdHls
ZToKKyAgICBjYXNlIENTU1Byb3BlcnR5VGV4dE92ZXJmbG93OgorICAgIGNhc2UgQ1NTUHJvcGVy
dHlUZXh0T3ZlcmxpbmVNb2RlOgorICAgIGNhc2UgQ1NTUHJvcGVydHlUZXh0T3ZlcmxpbmVTdHls
ZToKKyAgICBjYXNlIENTU1Byb3BlcnR5VGV4dFJlbmRlcmluZzoKKyAgICBjYXNlIENTU1Byb3Bl
cnR5VGV4dFRyYW5zZm9ybToKKyAgICBjYXNlIENTU1Byb3BlcnR5VGV4dFVuZGVybGluZU1vZGU6
CisgICAgY2FzZSBDU1NQcm9wZXJ0eVRleHRVbmRlcmxpbmVTdHlsZToKKyAgICBjYXNlIENTU1By
b3BlcnR5VmlzaWJpbGl0eToKKyAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0QXBwZWFyYW5jZToK
KyAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0QmFja2ZhY2VWaXNpYmlsaXR5OgorICAgIGNhc2Ug
Q1NTUHJvcGVydHlXZWJraXRCb3JkZXJBZnRlclN0eWxlOgorICAgIGNhc2UgQ1NTUHJvcGVydHlX
ZWJraXRCb3JkZXJCZWZvcmVTdHlsZToKKyAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0Qm9yZGVy
RW5kU3R5bGU6CisgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdEJvcmRlckZpdDoKKyAgICBjYXNl
IENTU1Byb3BlcnR5V2Via2l0Qm9yZGVyU3RhcnRTdHlsZToKKyAgICBjYXNlIENTU1Byb3BlcnR5
V2Via2l0Qm94QWxpZ246CisgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdEJveERpcmVjdGlvbjoK
KyAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0Qm94TGluZXM6CisgICAgY2FzZSBDU1NQcm9wZXJ0
eVdlYmtpdEJveE9yaWVudDoKKyAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0Qm94UGFjazoKKyAg
ICBjYXNlIENTU1Byb3BlcnR5V2Via2l0Q29sb3JDb3JyZWN0aW9uOgorICAgIGNhc2UgQ1NTUHJv
cGVydHlXZWJraXRDb2x1bW5SdWxlU3R5bGU6CisgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdEZs
ZXhBbGlnbjoKKyAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0RmxleERpcmVjdGlvbjoKKyAgICBj
YXNlIENTU1Byb3BlcnR5V2Via2l0RmxleEl0ZW1BbGlnbjoKKyAgICBjYXNlIENTU1Byb3BlcnR5
V2Via2l0RmxleExpbmVQYWNrOgorICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRGbGV4UGFjazoK
KyAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0RmxleFdyYXA6CisgICAgY2FzZSBDU1NQcm9wZXJ0
eVdlYmtpdEZvbnRLZXJuaW5nOgorICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRGb250U21vb3Ro
aW5nOgorICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRIeXBoZW5zOgorICAgIGNhc2UgQ1NTUHJv
cGVydHlXZWJraXRMaW5lQWxpZ246CisgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdExpbmVCcmVh
azoKKyAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0TGluZVNuYXA6CisgICAgY2FzZSBDU1NQcm9w
ZXJ0eVdlYmtpdE1hcmdpbkFmdGVyQ29sbGFwc2U6CisgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtp
dE1hcmdpbkJlZm9yZUNvbGxhcHNlOgorICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRNYXJnaW5C
b3R0b21Db2xsYXBzZToKKyAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0TWFyZ2luVG9wQ29sbGFw
c2U6CisgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdE1hcnF1ZWVEaXJlY3Rpb246CisgICAgY2Fz
ZSBDU1NQcm9wZXJ0eVdlYmtpdE1hcnF1ZWVTdHlsZToKKyAgICBjYXNlIENTU1Byb3BlcnR5V2Vi
a2l0TWF0Y2hOZWFyZXN0TWFpbEJsb2NrcXVvdGVDb2xvcjoKKyAgICBjYXNlIENTU1Byb3BlcnR5
V2Via2l0TmJzcE1vZGU6CisjaWYgRU5BQkxFKE9WRVJGTE9XX1NDUk9MTElORykKKyAgICBjYXNl
IENTU1Byb3BlcnR5V2Via2l0T3ZlcmZsb3dTY3JvbGxpbmc6CisjZW5kaWYKKyAgICBjYXNlIENT
U1Byb3BlcnR5V2Via2l0UHJpbnRDb2xvckFkanVzdDoKKyAgICBjYXNlIENTU1Byb3BlcnR5V2Vi
a2l0UnRsT3JkZXJpbmc6CisgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdFRleHRDb21iaW5lOgor
ICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRUZXh0RW1waGFzaXNQb3NpdGlvbjoKKyAgICBjYXNl
IENTU1Byb3BlcnR5V2Via2l0VGV4dFNlY3VyaXR5OgorICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJr
aXRUZXh0U2l6ZUFkanVzdDoKKyAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0VHJhbnNmb3JtU3R5
bGU6CisgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdFVzZXJEcmFnOgorICAgIGNhc2UgQ1NTUHJv
cGVydHlXZWJraXRVc2VyTW9kaWZ5OgorICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRVc2VyU2Vs
ZWN0OgorICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRXcmFwRmxvdzoKKyAgICBjYXNlIENTU1By
b3BlcnR5V2Via2l0V3JhcFRocm91Z2g6CisgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdFdyaXRp
bmdNb2RlOgorICAgIGNhc2UgQ1NTUHJvcGVydHlXaGl0ZVNwYWNlOgorICAgIGNhc2UgQ1NTUHJv
cGVydHlXb3JkQnJlYWs6CisgICAgY2FzZSBDU1NQcm9wZXJ0eVdvcmRXcmFwOgorICAgICAgICAv
LyBUaGVzZSBwcm9wZXJ0aWVzIHNob3VsZCBiZSBoYW5kbGVkIGJlZm9yZSBpbiBpc1ZhbGlkS2V5
d29yZFByb3BlcnR5QW5kVmFsdWUoKS4KKyAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Cisg
ICAgICAgIHJldHVybiBmYWxzZTsKICNpZiBFTkFCTEUoU1ZHKQogICAgIGRlZmF1bHQ6CiAgICAg
ICAgIHJldHVybiBwYXJzZVNWR1ZhbHVlKHByb3BJZCwgaW1wb3J0YW50KTsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>132797</attachid>
            <date>2012-03-20 04:27:54 -0700</date>
            <delta_ts>2012-03-20 07:03:59 -0700</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-80874-20120320082736.patch</filename>
            <type>text/plain</type>
            <size>53339</size>
            <attacher name="Alexis Menard (darktears)">menard</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTExMzc4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNzY5NTQ1YjQ1ODQwOTBk
MzVlNzE5MWM4OTMwYzBmZDQ3YWExMDYwOS4uYzJjZDk0M2JiZmNjZjcxZTYzMjhkM2Q0MDgxZGZi
NDgwMTUyZGRlZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI4IEBACisyMDEyLTAzLTIwICBBbGV4
aXMgTWVuYXJkICA8YWxleGlzLm1lbmFyZEBvcGVuYm9zc2Eub3JnPgorCisgICAgICAgIEltcGxl
bWVudCBhIGZhc3QgcGF0aCB3aGVuIHNldHRpbmcgQ1NTIHByb3BlcnRpZXMgd2l0aCBrZXl3b3Jk
cyBmcm9tIEpTLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9ODA4NzQKKworICAgICAgICBSZXZpZXdlZCBieSBBbnR0aSBLb2l2aXN0by4KKworICAgICAg
ICBUaGUgaWRlYSBpcyB0byBhdm9pZCB0aGUgY3JlYXRpb24gb2YgdGhlIENTU1BhcnNlciBpbnN0
YW5jZSBhbmQgdG8gcnVuIHRoZSBwYXJzZXIgb24KKyAgICAgICAgYSBzdHJpbmcgd2Uga25vdyBp
dCBzaG91bGQgYmUgYSBrZXl3b3JkLiBXaGVuIEpTIGNhbGxzIHBhcnNlVmFsdWUgd2UgdHJ5IHRv
IGNoZWNrIGlmIHdlIGNhbgorICAgICAgICB1c2UgdGhlIGZhc3QgcGF0aCBhbmQgaWYgdGhlIGtl
eXdvcmQgaXMgYWNjZXB0ZWQgdGhlbiB3ZSBqdXN0IGFkZCBpdCB0byB0aGUgZGVjbGFyYXRpb24g
ZGlyZWN0bHkuCisgICAgICAgIEZvciB0aGUgc2FrZSBvZiBtYWludGVuYW5jZSB0aGUgcGFyc2VW
YWx1ZSBmdW5jdGlvbiB1c2VkIGJ5IENTU0dyYW1tYXIueSBpcyBzaGFyaW5nIHNvbWUgY29kZSB3
aXRoCisgICAgICAgIHRoZSBmYXN0IHBhdGggKGtleXdvcmQgbWF0Y2hpbmcgbW9zdGx5KS4KKwor
ICAgICAgICBUaGlzIHBhdGNoIGltcHJvdmVzIHRoaXMgdXNlIGNhc2UgYnkgMjAlLiBTZXR0aW5n
IGtleXdvcmQgcHJvcGVydGllcyBmcm9tIEpTIGlzIHVzZWQgYSBsb3QgaW4KKyAgICAgICAgR29v
Z2xlIE1hcHMgZm9yIGV4YW1wbGUgKHdoZW4gem9vbWluZyBvciBwYW5uaW5nKS4KKworICAgICAg
ICBObyBuZXcgdGVzdHMgOiBpdCdzIGEgcGVyZm9ybWFuY2UgaW1wcm92ZW1lbnQsIHRoZXJlIHNo
b3VsZG4ndCBiZSBhbnkgYmVoYXZpb3IgY2hhbmdlLgorCisgICAgICAgICogY3NzL0NTU1BhcnNl
ci5jcHA6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6OmlzVmFsaWRLZXl3
b3JkUHJvcGVydHlBbmRWYWx1ZSk6CisgICAgICAgIChXZWJDb3JlOjppc0tleXdvcmRQcm9wZXJ0
eUlEKToKKyAgICAgICAgKFdlYkNvcmU6OnBhcnNlS2V5d29yZFZhbHVlKToKKyAgICAgICAgKFdl
YkNvcmU6OkNTU1BhcnNlcjo6cGFyc2VWYWx1ZSk6CisKIDIwMTItMDMtMjAgIE1paG5lYSBPdmlk
ZW5pZSAgPG1paG5lYUBhZG9iZS5jb20+CiAKICAgICAgICAgW0NTU1JlZ2lvbnNdSW1wbGVtZW50
IE5hbWVkRmxvdzo6Z2V0UmVnaW9uc0J5Q29udGVudE5vZGUKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2Nzcy9DU1NQYXJzZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU1BhcnNlci5j
cHAKaW5kZXggY2FhMmM4ZTE1NTUyZTQ2YmZkNTcyODhhZjczOTExYTFjZDNiYTFkNi4uNDBiNWU2
MzA4YTM1N2ZjMjQ0YmU4ZTViZjIyNWExNmQyZGZiOGNhNyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvY3NzL0NTU1BhcnNlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU1BhcnNl
ci5jcHAKQEAgLTQ3OSw2ICs0NzksNDU2IEBAIHN0YXRpYyBib29sIHBhcnNlU2ltcGxlTGVuZ3Ro
VmFsdWUoU3R5bGVQcm9wZXJ0eVNldCogZGVjbGFyYXRpb24sIGludCBwcm9wZXJ0eUlkCiAgICAg
cmV0dXJuIHRydWU7CiB9CiAKKworc3RhdGljIGlubGluZSBib29sIGlzVmFsaWRLZXl3b3JkUHJv
cGVydHlBbmRWYWx1ZShpbnQgcHJvcGVydHlJZCwgaW50IHZhbHVlSUQpCit7CisgICAgaWYgKCF2
YWx1ZUlEKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBzd2l0Y2ggKHByb3BlcnR5SWQp
IHsKKyAgICBjYXNlIENTU1Byb3BlcnR5Qm9yZGVyQ29sbGFwc2U6IC8vIGNvbGxhcHNlIHwgc2Vw
YXJhdGUgfCBpbmhlcml0CisgICAgICAgIGlmICh2YWx1ZUlEID09IENTU1ZhbHVlQ29sbGFwc2Ug
fHwgdmFsdWVJRCA9PSBDU1NWYWx1ZVNlcGFyYXRlKQorICAgICAgICAgICAgcmV0dXJuIHRydWU7
CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgQ1NTUHJvcGVydHlCb3JkZXJUb3BTdHlsZTogLy8g
PGJvcmRlci1zdHlsZT4gfCBpbmhlcml0CisgICAgY2FzZSBDU1NQcm9wZXJ0eUJvcmRlclJpZ2h0
U3R5bGU6IC8vIERlZmluZWQgYXM6IG5vbmUgfCBoaWRkZW4gfCBkb3R0ZWQgfCBkYXNoZWQgfAor
ICAgIGNhc2UgQ1NTUHJvcGVydHlCb3JkZXJCb3R0b21TdHlsZTogLy8gc29saWQgfCBkb3VibGUg
fCBncm9vdmUgfCByaWRnZSB8IGluc2V0IHwgb3V0c2V0CisgICAgY2FzZSBDU1NQcm9wZXJ0eUJv
cmRlckxlZnRTdHlsZToKKyAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0Qm9yZGVyQWZ0ZXJTdHls
ZToKKyAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0Qm9yZGVyQmVmb3JlU3R5bGU6CisgICAgY2Fz
ZSBDU1NQcm9wZXJ0eVdlYmtpdEJvcmRlckVuZFN0eWxlOgorICAgIGNhc2UgQ1NTUHJvcGVydHlX
ZWJraXRCb3JkZXJTdGFydFN0eWxlOgorICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRDb2x1bW5S
dWxlU3R5bGU6CisgICAgICAgIGlmICh2YWx1ZUlEID49IENTU1ZhbHVlTm9uZSAmJiB2YWx1ZUlE
IDw9IENTU1ZhbHVlRG91YmxlKQorICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgIGJy
ZWFrOworICAgIGNhc2UgQ1NTUHJvcGVydHlCb3hTaXppbmc6CisgICAgICAgICBpZiAodmFsdWVJ
RCA9PSBDU1NWYWx1ZUJvcmRlckJveCB8fCB2YWx1ZUlEID09IENTU1ZhbHVlQ29udGVudEJveCkK
KyAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgIGJyZWFrOworICAgIGNhc2UgQ1NT
UHJvcGVydHlDYXB0aW9uU2lkZTogLy8gdG9wIHwgYm90dG9tIHwgbGVmdCB8IHJpZ2h0IHwgaW5o
ZXJpdAorICAgICAgICBpZiAodmFsdWVJRCA9PSBDU1NWYWx1ZUxlZnQgfHwgdmFsdWVJRCA9PSBD
U1NWYWx1ZVJpZ2h0IHx8IHZhbHVlSUQgPT0gQ1NTVmFsdWVUb3AgfHwgdmFsdWVJRCA9PSBDU1NW
YWx1ZUJvdHRvbSkKKyAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICBicmVhazsKKyAg
ICBjYXNlIENTU1Byb3BlcnR5Q2xlYXI6IC8vIG5vbmUgfCBsZWZ0IHwgcmlnaHQgfCBib3RoIHwg
aW5oZXJpdAorICAgICAgICBpZiAodmFsdWVJRCA9PSBDU1NWYWx1ZU5vbmUgfHwgdmFsdWVJRCA9
PSBDU1NWYWx1ZUxlZnQgfHwgdmFsdWVJRCA9PSBDU1NWYWx1ZVJpZ2h0IHx8IHZhbHVlSUQgPT0g
Q1NTVmFsdWVCb3RoKQorICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgIGJyZWFrOwor
ICAgIGNhc2UgQ1NTUHJvcGVydHlEaXJlY3Rpb246IC8vIGx0ciB8IHJ0bCB8IGluaGVyaXQKKyAg
ICAgICAgaWYgKHZhbHVlSUQgPT0gQ1NTVmFsdWVMdHIgfHwgdmFsdWVJRCA9PSBDU1NWYWx1ZVJ0
bCkKKyAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICBicmVhazsKKyAgICBjYXNlIENT
U1Byb3BlcnR5RGlzcGxheToKKyAgICAgICAgLy8gaW5saW5lIHwgYmxvY2sgfCBsaXN0LWl0ZW0g
fCBydW4taW4gfCBpbmxpbmUtYmxvY2sgfCB0YWJsZSB8CisgICAgICAgIC8vIGlubGluZS10YWJs
ZSB8IHRhYmxlLXJvdy1ncm91cCB8IHRhYmxlLWhlYWRlci1ncm91cCB8IHRhYmxlLWZvb3Rlci1n
cm91cCB8IHRhYmxlLXJvdyB8CisgICAgICAgIC8vIHRhYmxlLWNvbHVtbi1ncm91cCB8IHRhYmxl
LWNvbHVtbiB8IHRhYmxlLWNlbGwgfCB0YWJsZS1jYXB0aW9uIHwgLXdlYmtpdC1ib3ggfCAtd2Vi
a2l0LWlubGluZS1ib3ggfCBub25lIHwgaW5oZXJpdAorICAgICAgICAvLyAtd2Via2l0LWZsZXhi
b3ggfCAtd2Via2l0LWlubGluZS1mbGV4Ym94IHwgLXdlYmtpdC1ncmlkIHwgLXdlYmtpdC1pbmxp
bmUtZ3JpZAorICAgICAgICBpZiAoKHZhbHVlSUQgPj0gQ1NTVmFsdWVJbmxpbmUgJiYgdmFsdWVJ
RCA8PSBDU1NWYWx1ZVdlYmtpdElubGluZUZsZXhib3gpIHx8IHZhbHVlSUQgPT0gQ1NTVmFsdWVO
b25lKQorICAgICAgICAgICAgcmV0dXJuIHRydWU7CisjaWYgRU5BQkxFKENTU19HUklEX0xBWU9V
VCkKKyAgICAgICAgaWYgKHZhbHVlSUQgPT0gQ1NTVmFsdWVXZWJraXRHcmlkIHx8IHZhbHVlSUQg
PT0gQ1NTVmFsdWVXZWJraXRJbmxpbmVHcmlkKQorICAgICAgICAgICAgcmV0dXJuIHRydWU7Cisg
ICAgICAgIGJyZWFrOworI2VuZGlmCisgICAgY2FzZSBDU1NQcm9wZXJ0eUVtcHR5Q2VsbHM6IC8v
IHNob3cgfCBoaWRlIHwgaW5oZXJpdAorICAgICAgICBpZiAodmFsdWVJRCA9PSBDU1NWYWx1ZVNo
b3cgfHwgdmFsdWVJRCA9PSBDU1NWYWx1ZUhpZGUpCisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsK
KyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBDU1NQcm9wZXJ0eUZsb2F0OiAvLyBsZWZ0IHwgcmln
aHQgfCBub25lIHwgcG9zaXRpb25lZCB8IGNlbnRlciAoZm9yIGJ1Z2d5IENTUywgbWFwcyB0byBu
b25lKQorICAgICAgICBpZiAodmFsdWVJRCA9PSBDU1NWYWx1ZUxlZnQgfHwgdmFsdWVJRCA9PSBD
U1NWYWx1ZVJpZ2h0IHx8IHZhbHVlSUQgPT0gQ1NTVmFsdWVOb25lIHx8IHZhbHVlSUQgPT0gQ1NT
VmFsdWVDZW50ZXIgfHwgdmFsdWVJRCA9PSBDU1NWYWx1ZVdlYmtpdFBvc2l0aW9uZWQpCisgICAg
ICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBDU1NQcm9wZXJ0
eUZvbnRTdHlsZTogLy8gbm9ybWFsIHwgaXRhbGljIHwgb2JsaXF1ZSB8IGluaGVyaXQKKyAgICAg
ICAgaWYgKHZhbHVlSUQgPT0gQ1NTVmFsdWVOb3JtYWwgfHwgdmFsdWVJRCA9PSBDU1NWYWx1ZUl0
YWxpYyB8fCB2YWx1ZUlEID09IENTU1ZhbHVlT2JsaXF1ZSkKKyAgICAgICAgICAgIHJldHVybiB0
cnVlOworICAgICAgICBicmVhazsKKyAgICBjYXNlIENTU1Byb3BlcnR5SW1hZ2VSZW5kZXJpbmc6
IC8vIGF1dG8gfCBvcHRpbWl6ZUNvbnRyYXN0CisgICAgICAgIGlmICh2YWx1ZUlEID09IENTU1Zh
bHVlQXV0byB8fCB2YWx1ZUlEID09IENTU1ZhbHVlV2Via2l0T3B0aW1pemVDb250cmFzdCkKKyAg
ICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICBicmVhazsKKyAgICBjYXNlIENTU1Byb3Bl
cnR5TGlzdFN0eWxlUG9zaXRpb246IC8vIGluc2lkZSB8IG91dHNpZGUgfCBpbmhlcml0CisgICAg
ICAgIGlmICh2YWx1ZUlEID09IENTU1ZhbHVlSW5zaWRlIHx8IHZhbHVlSUQgPT0gQ1NTVmFsdWVP
dXRzaWRlKQorICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgIGJyZWFrOworICAgIGNh
c2UgQ1NTUHJvcGVydHlMaXN0U3R5bGVUeXBlOgorICAgICAgICAvLyBTZWUgc2VjdGlvbiBDU1Nf
UFJPUF9MSVNUX1NUWUxFX1RZUEUgb2YgZmlsZSBDU1NWYWx1ZUtleXdvcmRzLmluCisgICAgICAg
IC8vIGZvciB0aGUgbGlzdCBvZiBzdXBwb3J0ZWQgbGlzdC1zdHlsZS10eXBlcy4KKyAgICAgICAg
aWYgKCh2YWx1ZUlEID49IENTU1ZhbHVlRGlzYyAmJiB2YWx1ZUlEIDw9IENTU1ZhbHVlS2F0YWth
bmFJcm9oYSkgfHwgdmFsdWVJRCA9PSBDU1NWYWx1ZU5vbmUpCisgICAgICAgICAgICByZXR1cm4g
dHJ1ZTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBDU1NQcm9wZXJ0eU91dGxpbmVTdHlsZTog
Ly8gKDxib3JkZXItc3R5bGU+IGV4Y2VwdCBoaWRkZW4pIHwgYXV0byB8IGluaGVyaXQKKyAgICAg
ICAgaWYgKHZhbHVlSUQgPT0gQ1NTVmFsdWVBdXRvIHx8IHZhbHVlSUQgPT0gQ1NTVmFsdWVOb25l
IHx8ICh2YWx1ZUlEID49IENTU1ZhbHVlSW5zZXQgJiYgdmFsdWVJRCA8PSBDU1NWYWx1ZURvdWJs
ZSkpCisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBD
U1NQcm9wZXJ0eU92ZXJmbG93WDoKKyAgICBjYXNlIENTU1Byb3BlcnR5T3ZlcmZsb3dZOiAvLyB2
aXNpYmxlIHwgaGlkZGVuIHwgc2Nyb2xsIHwgYXV0byB8IG1hcnF1ZWUgfCBvdmVybGF5IHwgaW5o
ZXJpdAorICAgICAgICBpZiAodmFsdWVJRCA9PSBDU1NWYWx1ZVZpc2libGUgfHwgdmFsdWVJRCA9
PSBDU1NWYWx1ZUhpZGRlbiB8fCB2YWx1ZUlEID09IENTU1ZhbHVlU2Nyb2xsIHx8IHZhbHVlSUQg
PT0gQ1NTVmFsdWVBdXRvIHx8IHZhbHVlSUQgPT0gQ1NTVmFsdWVPdmVybGF5IHx8IHZhbHVlSUQg
PT0gQ1NTVmFsdWVXZWJraXRNYXJxdWVlKQorICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAg
ICAgIGJyZWFrOworICAgIGNhc2UgQ1NTUHJvcGVydHlQb2ludGVyRXZlbnRzOgorICAgICAgICAv
LyBub25lIHwgdmlzaWJsZVBhaW50ZWQgfCB2aXNpYmxlRmlsbCB8IHZpc2libGVTdHJva2UgfCB2
aXNpYmxlIHwKKyAgICAgICAgLy8gcGFpbnRlZCB8IGZpbGwgfCBzdHJva2UgfCBhdXRvIHwgYWxs
IHwgaW5oZXJpdAorICAgICAgICBpZiAodmFsdWVJRCA9PSBDU1NWYWx1ZVZpc2libGUgfHwgdmFs
dWVJRCA9PSBDU1NWYWx1ZU5vbmUgfHwgdmFsdWVJRCA9PSBDU1NWYWx1ZUFsbCB8fCB2YWx1ZUlE
ID09IENTU1ZhbHVlQXV0byB8fCAodmFsdWVJRCA+PSBDU1NWYWx1ZVZpc2libGVwYWludGVkICYm
IHZhbHVlSUQgPD0gQ1NTVmFsdWVTdHJva2UpKQorICAgICAgICAgICAgcmV0dXJuIHRydWU7Cisg
ICAgICAgIGJyZWFrOworICAgIGNhc2UgQ1NTUHJvcGVydHlQb3NpdGlvbjogLy8gc3RhdGljIHwg
cmVsYXRpdmUgfCBhYnNvbHV0ZSB8IGZpeGVkIHwgaW5oZXJpdAorICAgICAgICBpZiAodmFsdWVJ
RCA9PSBDU1NWYWx1ZVN0YXRpYyB8fCB2YWx1ZUlEID09IENTU1ZhbHVlUmVsYXRpdmUgfHwgdmFs
dWVJRCA9PSBDU1NWYWx1ZUFic29sdXRlIHx8IHZhbHVlSUQgPT0gQ1NTVmFsdWVGaXhlZCkKKyAg
ICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICBicmVhazsKKyAgICBjYXNlIENTU1Byb3Bl
cnR5UmVzaXplOiAvLyBub25lIHwgYm90aCB8IGhvcml6b250YWwgfCB2ZXJ0aWNhbCB8IGF1dG8K
KyAgICAgICAgaWYgKHZhbHVlSUQgPT0gQ1NTVmFsdWVOb25lIHx8IHZhbHVlSUQgPT0gQ1NTVmFs
dWVCb3RoIHx8IHZhbHVlSUQgPT0gQ1NTVmFsdWVIb3Jpem9udGFsIHx8IHZhbHVlSUQgPT0gQ1NT
VmFsdWVWZXJ0aWNhbCB8fCB2YWx1ZUlEID09IENTU1ZhbHVlQXV0bykKKyAgICAgICAgICAgIHJl
dHVybiB0cnVlOworICAgICAgICBicmVhazsKKyAgICBjYXNlIENTU1Byb3BlcnR5U3BlYWs6IC8v
IG5vbmUgfCBub3JtYWwgfCBzcGVsbC1vdXQgfCBkaWdpdHMgfCBsaXRlcmFsLXB1bmN0dWF0aW9u
IHwgbm8tcHVuY3R1YXRpb24gfCBpbmhlcml0CisgICAgICAgIGlmICh2YWx1ZUlEID09IENTU1Zh
bHVlTm9uZSB8fCB2YWx1ZUlEID09IENTU1ZhbHVlTm9ybWFsIHx8IHZhbHVlSUQgPT0gQ1NTVmFs
dWVTcGVsbE91dCB8fCB2YWx1ZUlEID09IENTU1ZhbHVlRGlnaXRzIHx8IHZhbHVlSUQgPT0gQ1NT
VmFsdWVMaXRlcmFsUHVuY3R1YXRpb24gfHwgdmFsdWVJRCA9PSBDU1NWYWx1ZU5vUHVuY3R1YXRp
b24pCisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBD
U1NQcm9wZXJ0eVRhYmxlTGF5b3V0OiAvLyBhdXRvIHwgZml4ZWQgfCBpbmhlcml0CisgICAgICAg
IGlmICh2YWx1ZUlEID09IENTU1ZhbHVlQXV0byB8fCB2YWx1ZUlEID09IENTU1ZhbHVlRml4ZWQp
CisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBDU1NQ
cm9wZXJ0eVRleHRMaW5lVGhyb3VnaE1vZGU6CisgICAgY2FzZSBDU1NQcm9wZXJ0eVRleHRPdmVy
bGluZU1vZGU6CisgICAgY2FzZSBDU1NQcm9wZXJ0eVRleHRVbmRlcmxpbmVNb2RlOgorICAgICAg
ICBpZiAodmFsdWVJRCA9PSBDU1NWYWx1ZUNvbnRpbnVvdXMgfHwgdmFsdWVJRCA9PSBDU1NWYWx1
ZVNraXBXaGl0ZVNwYWNlKQorICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgIGJyZWFr
OworICAgIGNhc2UgQ1NTUHJvcGVydHlUZXh0TGluZVRocm91Z2hTdHlsZToKKyAgICBjYXNlIENT
U1Byb3BlcnR5VGV4dE92ZXJsaW5lU3R5bGU6CisgICAgY2FzZSBDU1NQcm9wZXJ0eVRleHRVbmRl
cmxpbmVTdHlsZToKKyAgICAgICAgaWYgKHZhbHVlSUQgPT0gQ1NTVmFsdWVOb25lIHx8IHZhbHVl
SUQgPT0gQ1NTVmFsdWVTb2xpZCB8fCB2YWx1ZUlEID09IENTU1ZhbHVlRG91YmxlIHx8IHZhbHVl
SUQgPT0gQ1NTVmFsdWVEYXNoZWQgfHwgdmFsdWVJRCA9PSBDU1NWYWx1ZURvdERhc2ggfHwgdmFs
dWVJRCA9PSBDU1NWYWx1ZURvdERvdERhc2ggfHwgdmFsdWVJRCA9PSBDU1NWYWx1ZVdhdmUpCisg
ICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBDU1NQcm9w
ZXJ0eVRleHRPdmVyZmxvdzogLy8gY2xpcCB8IGVsbGlwc2lzCisgICAgICAgIGlmICh2YWx1ZUlE
ID09IENTU1ZhbHVlQ2xpcCB8fCB2YWx1ZUlEID09IENTU1ZhbHVlRWxsaXBzaXMpCisgICAgICAg
ICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBDU1NQcm9wZXJ0eVRl
eHRSZW5kZXJpbmc6IC8vIGF1dG8gfCBvcHRpbWl6ZVNwZWVkIHwgb3B0aW1pemVMZWdpYmlsaXR5
IHwgZ2VvbWV0cmljUHJlY2lzaW9uCisgICAgICAgIGlmICh2YWx1ZUlEID09IENTU1ZhbHVlQXV0
byB8fCB2YWx1ZUlEID09IENTU1ZhbHVlT3B0aW1pemVzcGVlZCB8fCB2YWx1ZUlEID09IENTU1Zh
bHVlT3B0aW1pemVsZWdpYmlsaXR5IHx8IHZhbHVlSUQgPT0gQ1NTVmFsdWVHZW9tZXRyaWNwcmVj
aXNpb24pCisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgYnJlYWs7CisgICAgY2Fz
ZSBDU1NQcm9wZXJ0eVRleHRUcmFuc2Zvcm06IC8vIGNhcGl0YWxpemUgfCB1cHBlcmNhc2UgfCBs
b3dlcmNhc2UgfCBub25lIHwgaW5oZXJpdAorICAgICAgICBpZiAoKHZhbHVlSUQgPj0gQ1NTVmFs
dWVDYXBpdGFsaXplICYmIHZhbHVlSUQgPD0gQ1NTVmFsdWVMb3dlcmNhc2UpIHx8IHZhbHVlSUQg
PT0gQ1NTVmFsdWVOb25lKQorICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgIGJyZWFr
OworICAgIGNhc2UgQ1NTUHJvcGVydHlWaXNpYmlsaXR5OiAvLyB2aXNpYmxlIHwgaGlkZGVuIHwg
Y29sbGFwc2UgfCBpbmhlcml0CisgICAgICAgIGlmICh2YWx1ZUlEID09IENTU1ZhbHVlVmlzaWJs
ZSB8fCB2YWx1ZUlEID09IENTU1ZhbHVlSGlkZGVuIHx8IHZhbHVlSUQgPT0gQ1NTVmFsdWVDb2xs
YXBzZSkKKyAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICBicmVhazsKKyAgICBjYXNl
IENTU1Byb3BlcnR5V2Via2l0QXBwZWFyYW5jZToKKyAgICAgICAgaWYgKCh2YWx1ZUlEID49IENT
U1ZhbHVlQ2hlY2tib3ggJiYgdmFsdWVJRCA8PSBDU1NWYWx1ZVRleHRhcmVhKSB8fCB2YWx1ZUlE
ID09IENTU1ZhbHVlTm9uZSkKKyAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICBicmVh
azsKKyAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0QmFja2ZhY2VWaXNpYmlsaXR5OgorICAgICAg
ICBpZiAodmFsdWVJRCA9PSBDU1NWYWx1ZVZpc2libGUgfHwgdmFsdWVJRCA9PSBDU1NWYWx1ZUhp
ZGRlbikKKyAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICBicmVhazsKKyAgICBjYXNl
IENTU1Byb3BlcnR5V2Via2l0Qm9yZGVyRml0OgorICAgICAgICBpZiAodmFsdWVJRCA9PSBDU1NW
YWx1ZUJvcmRlciB8fCB2YWx1ZUlEID09IENTU1ZhbHVlTGluZXMpCisgICAgICAgICAgICByZXR1
cm4gdHJ1ZTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdEJveEFs
aWduOgorICAgICAgICBpZiAodmFsdWVJRCA9PSBDU1NWYWx1ZVN0cmV0Y2ggfHwgdmFsdWVJRCA9
PSBDU1NWYWx1ZVN0YXJ0IHx8IHZhbHVlSUQgPT0gQ1NTVmFsdWVFbmQgfHwgdmFsdWVJRCA9PSBD
U1NWYWx1ZUNlbnRlciB8fCB2YWx1ZUlEID09IENTU1ZhbHVlQmFzZWxpbmUpCisgICAgICAgICAg
ICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtp
dEJveERpcmVjdGlvbjoKKyAgICAgICAgaWYgKHZhbHVlSUQgPT0gQ1NTVmFsdWVOb3JtYWwgfHwg
dmFsdWVJRCA9PSBDU1NWYWx1ZVJldmVyc2UpCisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAg
ICAgICAgYnJlYWs7CisgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdEJveExpbmVzOgorICAgICAg
ICBpZiAodmFsdWVJRCA9PSBDU1NWYWx1ZVNpbmdsZSB8fCB2YWx1ZUlEID09IENTU1ZhbHVlTXVs
dGlwbGUpCisgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgIGJyZWFrOworICAg
IGNhc2UgQ1NTUHJvcGVydHlXZWJraXRCb3hPcmllbnQ6CisgICAgICAgIGlmICh2YWx1ZUlEID09
IENTU1ZhbHVlSG9yaXpvbnRhbCB8fCB2YWx1ZUlEID09IENTU1ZhbHVlVmVydGljYWwgfHwgdmFs
dWVJRCA9PSBDU1NWYWx1ZUlubGluZUF4aXMgfHwgdmFsdWVJRCA9PSBDU1NWYWx1ZUJsb2NrQXhp
cykKKyAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICBicmVhazsKKyAgICBjYXNlIENT
U1Byb3BlcnR5V2Via2l0Qm94UGFjazoKKyAgICAgICAgaWYgKHZhbHVlSUQgPT0gQ1NTVmFsdWVT
dGFydCB8fCB2YWx1ZUlEID09IENTU1ZhbHVlRW5kIHx8IHZhbHVlSUQgPT0gQ1NTVmFsdWVDZW50
ZXIgfHwgdmFsdWVJRCA9PSBDU1NWYWx1ZUp1c3RpZnkpCisgICAgICAgICAgICByZXR1cm4gdHJ1
ZTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdENvbG9yQ29ycmVj
dGlvbjoKKyAgICAgICAgaWYgKHZhbHVlSUQgPT0gQ1NTVmFsdWVTcmdiIHx8IHZhbHVlSUQgPT0g
Q1NTVmFsdWVEZWZhdWx0KQorICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgIGJyZWFr
OworICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRGbGV4QWxpZ246CisgICAgICAgIGlmICh2YWx1
ZUlEID09IENTU1ZhbHVlU3RhcnQgfHwgdmFsdWVJRCA9PSBDU1NWYWx1ZUVuZCB8fCB2YWx1ZUlE
ID09IENTU1ZhbHVlQ2VudGVyIHx8IHZhbHVlSUQgPT0gQ1NTVmFsdWVCYXNlbGluZSB8fCB2YWx1
ZUlEID09IENTU1ZhbHVlU3RyZXRjaCkKKyAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAg
ICBicmVhazsKKyAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0RmxleERpcmVjdGlvbjoKKyAgICAg
ICAgaWYgKHZhbHVlSUQgPT0gQ1NTVmFsdWVSb3cgfHwgdmFsdWVJRCA9PSBDU1NWYWx1ZVJvd1Jl
dmVyc2UgfHwgdmFsdWVJRCA9PSBDU1NWYWx1ZUNvbHVtbiB8fCB2YWx1ZUlEID09IENTU1ZhbHVl
Q29sdW1uUmV2ZXJzZSkKKyAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgYnJl
YWs7CisgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdEZsZXhJdGVtQWxpZ246CisgICAgICAgIGlm
ICh2YWx1ZUlEID09IENTU1ZhbHVlQXV0byB8fCB2YWx1ZUlEID09IENTU1ZhbHVlU3RhcnQgfHwg
dmFsdWVJRCA9PSBDU1NWYWx1ZUVuZCB8fCB2YWx1ZUlEID09IENTU1ZhbHVlQ2VudGVyIHx8IHZh
bHVlSUQgPT0gQ1NTVmFsdWVCYXNlbGluZSB8fCB2YWx1ZUlEID09IENTU1ZhbHVlU3RyZXRjaCkK
KyAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICBicmVhazsKKyAgICBjYXNlIENTU1By
b3BlcnR5V2Via2l0RmxleExpbmVQYWNrOgorICAgICAgICAgaWYgKHZhbHVlSUQgPT0gQ1NTVmFs
dWVTdGFydCB8fCB2YWx1ZUlEID09IENTU1ZhbHVlRW5kIHx8IHZhbHVlSUQgPT0gQ1NTVmFsdWVD
ZW50ZXIgfHwgdmFsdWVJRCA9PSBDU1NWYWx1ZUp1c3RpZnkgfHwgdmFsdWVJRCA9PSBDU1NWYWx1
ZURpc3RyaWJ1dGUgfHwgdmFsdWVJRCA9PSBDU1NWYWx1ZVN0cmV0Y2gpCisgICAgICAgICAgICAg
cmV0dXJuIHRydWU7CisgICAgICAgICBicmVhazsKKyAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0
RmxleFBhY2s6CisgICAgICAgIGlmICh2YWx1ZUlEID09IENTU1ZhbHVlU3RhcnQgfHwgdmFsdWVJ
RCA9PSBDU1NWYWx1ZUVuZCB8fCB2YWx1ZUlEID09IENTU1ZhbHVlQ2VudGVyIHx8IHZhbHVlSUQg
PT0gQ1NTVmFsdWVKdXN0aWZ5IHx8IHZhbHVlSUQgPT0gQ1NTVmFsdWVEaXN0cmlidXRlKQorICAg
ICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgQ1NTUHJvcGVy
dHlXZWJraXRGbGV4V3JhcDoKKyAgICAgICAgaWYgKHZhbHVlSUQgPT0gQ1NTVmFsdWVOb25lIHx8
IHZhbHVlSUQgPT0gQ1NTVmFsdWVXcmFwIHx8IHZhbHVlSUQgPT0gQ1NTVmFsdWVXcmFwUmV2ZXJz
ZSkKKyAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBD
U1NQcm9wZXJ0eVdlYmtpdEZvbnRLZXJuaW5nOgorICAgICAgICBpZiAodmFsdWVJRCA9PSBDU1NW
YWx1ZUF1dG8gfHwgdmFsdWVJRCA9PSBDU1NWYWx1ZU5vcm1hbCB8fCB2YWx1ZUlEID09IENTU1Zh
bHVlTm9uZSkKKyAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICBicmVhazsKKyAgICBj
YXNlIENTU1Byb3BlcnR5V2Via2l0Rm9udFNtb290aGluZzoKKyAgICAgICAgaWYgKHZhbHVlSUQg
PT0gQ1NTVmFsdWVBdXRvIHx8IHZhbHVlSUQgPT0gQ1NTVmFsdWVOb25lIHx8IHZhbHVlSUQgPT0g
Q1NTVmFsdWVBbnRpYWxpYXNlZCB8fCB2YWx1ZUlEID09IENTU1ZhbHVlU3VicGl4ZWxBbnRpYWxp
YXNlZCkKKyAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICBicmVhazsKKyAgICBjYXNl
IENTU1Byb3BlcnR5V2Via2l0SHlwaGVuczoKKyAgICAgICAgaWYgKHZhbHVlSUQgPT0gQ1NTVmFs
dWVOb25lIHx8IHZhbHVlSUQgPT0gQ1NTVmFsdWVNYW51YWwgfHwgdmFsdWVJRCA9PSBDU1NWYWx1
ZUF1dG8pCisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgYnJlYWs7CisgICAgY2Fz
ZSBDU1NQcm9wZXJ0eVdlYmtpdExpbmVBbGlnbjoKKyAgICAgICAgaWYgKHZhbHVlSUQgPT0gQ1NT
VmFsdWVOb25lIHx8IHZhbHVlSUQgPT0gQ1NTVmFsdWVFZGdlcykKKyAgICAgICAgICAgIHJldHVy
biB0cnVlOworICAgICAgICBicmVhazsKKyAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0TGluZUJy
ZWFrOiAvLyBub3JtYWwgfCBhZnRlci13aGl0ZS1zcGFjZQorICAgICAgICBpZiAodmFsdWVJRCA9
PSBDU1NWYWx1ZU5vcm1hbCB8fCB2YWx1ZUlEID09IENTU1ZhbHVlQWZ0ZXJXaGl0ZVNwYWNlKQor
ICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgQ1NTUHJv
cGVydHlXZWJraXRMaW5lU25hcDoKKyAgICAgICAgaWYgKHZhbHVlSUQgPT0gQ1NTVmFsdWVOb25l
IHx8IHZhbHVlSUQgPT0gQ1NTVmFsdWVCYXNlbGluZSB8fCB2YWx1ZUlEID09IENTU1ZhbHVlQ29u
dGFpbikKKyAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICBicmVhazsKKyAgICBjYXNl
IENTU1Byb3BlcnR5V2Via2l0TWFyZ2luQWZ0ZXJDb2xsYXBzZToKKyAgICBjYXNlIENTU1Byb3Bl
cnR5V2Via2l0TWFyZ2luQmVmb3JlQ29sbGFwc2U6CisgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtp
dE1hcmdpbkJvdHRvbUNvbGxhcHNlOgorICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRNYXJnaW5U
b3BDb2xsYXBzZToKKyAgICAgICAgaWYgKHZhbHVlSUQgPT0gQ1NTVmFsdWVDb2xsYXBzZSB8fCB2
YWx1ZUlEID09IENTU1ZhbHVlU2VwYXJhdGUgfHwgdmFsdWVJRCA9PSBDU1NWYWx1ZURpc2NhcmQp
CisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBDU1NQ
cm9wZXJ0eVdlYmtpdE1hcnF1ZWVEaXJlY3Rpb246CisgICAgICAgIGlmICh2YWx1ZUlEID09IENT
U1ZhbHVlRm9yd2FyZHMgfHwgdmFsdWVJRCA9PSBDU1NWYWx1ZUJhY2t3YXJkcyB8fCB2YWx1ZUlE
ID09IENTU1ZhbHVlQWhlYWQgfHwgdmFsdWVJRCA9PSBDU1NWYWx1ZVJldmVyc2UgfHwgdmFsdWVJ
RCA9PSBDU1NWYWx1ZUxlZnQgfHwgdmFsdWVJRCA9PSBDU1NWYWx1ZVJpZ2h0IHx8IHZhbHVlSUQg
PT0gQ1NTVmFsdWVEb3duCisgICAgICAgICAgICB8fCB2YWx1ZUlEID09IENTU1ZhbHVlVXAgfHwg
dmFsdWVJRCA9PSBDU1NWYWx1ZUF1dG8pCisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAg
ICAgYnJlYWs7CisgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdE1hcnF1ZWVTdHlsZToKKyAgICAg
ICAgaWYgKHZhbHVlSUQgPT0gQ1NTVmFsdWVOb25lIHx8IHZhbHVlSUQgPT0gQ1NTVmFsdWVTbGlk
ZSB8fCB2YWx1ZUlEID09IENTU1ZhbHVlU2Nyb2xsIHx8IHZhbHVlSUQgPT0gQ1NTVmFsdWVBbHRl
cm5hdGUpCisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgYnJlYWs7CisgICAgY2Fz
ZSBDU1NQcm9wZXJ0eVdlYmtpdE1hdGNoTmVhcmVzdE1haWxCbG9ja3F1b3RlQ29sb3I6IC8vIG5v
cm1hbCB8IG1hdGNoCisgICAgICAgIGlmICh2YWx1ZUlEID09IENTU1ZhbHVlTm9ybWFsIHx8IHZh
bHVlSUQgPT0gQ1NTVmFsdWVNYXRjaCkKKyAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAg
ICBicmVhazsKKyAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0TmJzcE1vZGU6IC8vIG5vcm1hbCB8
IHNwYWNlCisgICAgICAgIGlmICh2YWx1ZUlEID09IENTU1ZhbHVlTm9ybWFsIHx8IHZhbHVlSUQg
PT0gQ1NTVmFsdWVTcGFjZSkKKyAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICBicmVh
azsKKyNpZiBFTkFCTEUoT1ZFUkZMT1dfU0NST0xMSU5HKQorICAgIGNhc2UgQ1NTUHJvcGVydHlX
ZWJraXRPdmVyZmxvd1Njcm9sbGluZzoKKyAgICAgICAgaWYgKHZhbHVlSUQgPT0gQ1NTVmFsdWVB
dXRvIHx8IHZhbHVlSUQgPT0gQ1NTVmFsdWVUb3VjaCkKKyAgICAgICAgICAgIHJldHVybiB0cnVl
OworICAgICAgICBicmVhazsKKyNlbmRpZgorICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRQcmlu
dENvbG9yQWRqdXN0OgorICAgICAgICBpZiAodmFsdWVJRCA9PSBDU1NWYWx1ZUV4YWN0IHx8IHZh
bHVlSUQgPT0gQ1NTVmFsdWVFY29ub215KQorICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAg
ICAgIGJyZWFrOworICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRSdGxPcmRlcmluZzoKKyAgICAg
ICAgaWYgKHZhbHVlSUQgPT0gQ1NTVmFsdWVMb2dpY2FsIHx8IHZhbHVlSUQgPT0gQ1NTVmFsdWVW
aXN1YWwpCisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgYnJlYWs7CisgICAgY2Fz
ZSBDU1NQcm9wZXJ0eVdlYmtpdFRleHRDb21iaW5lOgorICAgICAgICBpZiAodmFsdWVJRCA9PSBD
U1NWYWx1ZU5vbmUgfHwgdmFsdWVJRCA9PSBDU1NWYWx1ZUhvcml6b250YWwpCisgICAgICAgICAg
ICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtp
dFRleHRFbXBoYXNpc1Bvc2l0aW9uOgorICAgICAgICBpZiAodmFsdWVJRCA9PSBDU1NWYWx1ZU92
ZXIgfHwgdmFsdWVJRCA9PSBDU1NWYWx1ZVVuZGVyKQorICAgICAgICAgICAgcmV0dXJuIHRydWU7
CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRUZXh0U2VjdXJpdHk6
CisgICAgICAgIC8vIGRpc2MgfCBjaXJjbGUgfCBzcXVhcmUgfCBub25lIHwgaW5oZXJpdAorICAg
ICAgICBpZiAodmFsdWVJRCA9PSBDU1NWYWx1ZURpc2MgfHwgdmFsdWVJRCA9PSBDU1NWYWx1ZUNp
cmNsZSB8fCB2YWx1ZUlEID09IENTU1ZhbHVlU3F1YXJlIHx8IHZhbHVlSUQgPT0gQ1NTVmFsdWVO
b25lKQorICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgIGJyZWFrOworICAgIGNhc2Ug
Q1NTUHJvcGVydHlXZWJraXRUZXh0U2l6ZUFkanVzdDoKKyAgICAgICAgaWYgKHZhbHVlSUQgPT0g
Q1NTVmFsdWVBdXRvIHx8IHZhbHVlSUQgPT0gQ1NTVmFsdWVOb25lKQorICAgICAgICAgICAgcmV0
dXJuIHRydWU7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRUcmFu
c2Zvcm1TdHlsZToKKyAgICAgICAgaWYgKHZhbHVlSUQgPT0gQ1NTVmFsdWVGbGF0IHx8IHZhbHVl
SUQgPT0gQ1NTVmFsdWVQcmVzZXJ2ZTNkKQorICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAg
ICAgIGJyZWFrOworICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRVc2VyRHJhZzogLy8gYXV0byB8
IG5vbmUgfCBlbGVtZW50CisgICAgICAgIGlmICh2YWx1ZUlEID09IENTU1ZhbHVlQXV0byB8fCB2
YWx1ZUlEID09IENTU1ZhbHVlTm9uZSB8fCB2YWx1ZUlEID09IENTU1ZhbHVlRWxlbWVudCkKKyAg
ICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICBicmVhazsKKyAgICBjYXNlIENTU1Byb3Bl
cnR5V2Via2l0VXNlck1vZGlmeTogLy8gcmVhZC1vbmx5IHwgcmVhZC13cml0ZQorICAgICAgICBp
ZiAodmFsdWVJRCA9PSBDU1NWYWx1ZVJlYWRPbmx5IHx8IHZhbHVlSUQgPT0gQ1NTVmFsdWVSZWFk
V3JpdGUgfHwgdmFsdWVJRCA9PSBDU1NWYWx1ZVJlYWRXcml0ZVBsYWludGV4dE9ubHkpCisgICAg
ICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBDU1NQcm9wZXJ0
eVdlYmtpdFVzZXJTZWxlY3Q6IC8vIGF1dG8gfCBub25lIHwgdGV4dAorICAgICAgICBpZiAodmFs
dWVJRCA9PSBDU1NWYWx1ZUF1dG8gfHwgdmFsdWVJRCA9PSBDU1NWYWx1ZU5vbmUgfHwgdmFsdWVJ
RCA9PSBDU1NWYWx1ZVRleHQpCisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgYnJl
YWs7CisgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdFdyYXBGbG93OgorICAgICAgICBpZiAodmFs
dWVJRCA9PSBDU1NWYWx1ZUF1dG8gfHwgdmFsdWVJRCA9PSBDU1NWYWx1ZUJvdGggfHwgdmFsdWVJ
RCA9PSBDU1NWYWx1ZUxlZnQgfHwgdmFsdWVJRCA9PSBDU1NWYWx1ZVJpZ2h0IHx8IHZhbHVlSUQg
PT0gQ1NTVmFsdWVNYXhpbXVtIHx8IHZhbHVlSUQgPT0gQ1NTVmFsdWVDbGVhcikKKyAgICAgICAg
ICAgIHJldHVybiB0cnVlOworICAgICAgICBicmVhazsKKyAgICBjYXNlIENTU1Byb3BlcnR5V2Vi
a2l0V3JhcFRocm91Z2g6CisgICAgICAgIGlmICh2YWx1ZUlEID09IENTU1ZhbHVlV3JhcCB8fCB2
YWx1ZUlEID09IENTU1ZhbHVlTm9uZSkKKyAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAg
ICBicmVhazsKKyAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0V3JpdGluZ01vZGU6CisgICAgICAg
IGlmICh2YWx1ZUlEID49IENTU1ZhbHVlSG9yaXpvbnRhbFRiICYmIHZhbHVlSUQgPD0gQ1NTVmFs
dWVIb3Jpem9udGFsQnQpCisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgYnJlYWs7
CisgICAgY2FzZSBDU1NQcm9wZXJ0eVdoaXRlU3BhY2U6IC8vIG5vcm1hbCB8IHByZSB8IG5vd3Jh
cCB8IGluaGVyaXQKKyAgICAgICAgaWYgKHZhbHVlSUQgPT0gQ1NTVmFsdWVOb3JtYWwgfHwgdmFs
dWVJRCA9PSBDU1NWYWx1ZVByZSB8fCB2YWx1ZUlEID09IENTU1ZhbHVlUHJlV3JhcCB8fCB2YWx1
ZUlEID09IENTU1ZhbHVlUHJlTGluZSB8fCB2YWx1ZUlEID09IENTU1ZhbHVlTm93cmFwKQorICAg
ICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgQ1NTUHJvcGVy
dHlXb3JkQnJlYWs6IC8vIG5vcm1hbCB8IGJyZWFrLWFsbCB8IGJyZWFrLXdvcmQgKHRoaXMgaXMg
YSBjdXN0b20gZXh0ZW5zaW9uKQorICAgICAgICBpZiAodmFsdWVJRCA9PSBDU1NWYWx1ZU5vcm1h
bCB8fCB2YWx1ZUlEID09IENTU1ZhbHVlQnJlYWtBbGwgfHwgdmFsdWVJRCA9PSBDU1NWYWx1ZUJy
ZWFrV29yZCkKKyAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICBicmVhazsKKyAgICBj
YXNlIENTU1Byb3BlcnR5V29yZFdyYXA6IC8vIG5vcm1hbCB8IGJyZWFrLXdvcmQKKyAgICAgICAg
aWYgKHZhbHVlSUQgPT0gQ1NTVmFsdWVOb3JtYWwgfHwgdmFsdWVJRCA9PSBDU1NWYWx1ZUJyZWFr
V29yZCkKKyAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICBicmVhazsKKyAgICBkZWZh
dWx0OgorICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgcmV0dXJuIGZhbHNl
OworICAgIH0KKyAgICByZXR1cm4gZmFsc2U7Cit9CisKK3N0YXRpYyBpbmxpbmUgYm9vbCBpc0tl
eXdvcmRQcm9wZXJ0eUlEKGludCBwcm9wZXJ0eUlkKQoreworICAgIHN3aXRjaCAocHJvcGVydHlJ
ZCkgeworICAgIGNhc2UgQ1NTUHJvcGVydHlCb3JkZXJCb3R0b21TdHlsZToKKyAgICBjYXNlIENT
U1Byb3BlcnR5Qm9yZGVyQ29sbGFwc2U6CisgICAgY2FzZSBDU1NQcm9wZXJ0eUJvcmRlckxlZnRT
dHlsZToKKyAgICBjYXNlIENTU1Byb3BlcnR5Qm9yZGVyUmlnaHRTdHlsZToKKyAgICBjYXNlIENT
U1Byb3BlcnR5Qm9yZGVyVG9wU3R5bGU6CisgICAgY2FzZSBDU1NQcm9wZXJ0eUJveFNpemluZzoK
KyAgICBjYXNlIENTU1Byb3BlcnR5Q2FwdGlvblNpZGU6CisgICAgY2FzZSBDU1NQcm9wZXJ0eUNs
ZWFyOgorICAgIGNhc2UgQ1NTUHJvcGVydHlEaXJlY3Rpb246CisgICAgY2FzZSBDU1NQcm9wZXJ0
eURpc3BsYXk6CisgICAgY2FzZSBDU1NQcm9wZXJ0eUVtcHR5Q2VsbHM6CisgICAgY2FzZSBDU1NQ
cm9wZXJ0eUZsb2F0OgorICAgIGNhc2UgQ1NTUHJvcGVydHlGb250U3R5bGU6CisgICAgY2FzZSBD
U1NQcm9wZXJ0eUltYWdlUmVuZGVyaW5nOgorICAgIGNhc2UgQ1NTUHJvcGVydHlMaXN0U3R5bGVQ
b3NpdGlvbjoKKyAgICBjYXNlIENTU1Byb3BlcnR5TGlzdFN0eWxlVHlwZToKKyAgICBjYXNlIENT
U1Byb3BlcnR5T3V0bGluZVN0eWxlOgorICAgIGNhc2UgQ1NTUHJvcGVydHlPdmVyZmxvd1g6Cisg
ICAgY2FzZSBDU1NQcm9wZXJ0eU92ZXJmbG93WToKKyAgICBjYXNlIENTU1Byb3BlcnR5UG9pbnRl
ckV2ZW50czoKKyAgICBjYXNlIENTU1Byb3BlcnR5UG9zaXRpb246CisgICAgY2FzZSBDU1NQcm9w
ZXJ0eVJlc2l6ZToKKyAgICBjYXNlIENTU1Byb3BlcnR5U3BlYWs6CisgICAgY2FzZSBDU1NQcm9w
ZXJ0eVRhYmxlTGF5b3V0OgorICAgIGNhc2UgQ1NTUHJvcGVydHlUZXh0TGluZVRocm91Z2hNb2Rl
OgorICAgIGNhc2UgQ1NTUHJvcGVydHlUZXh0TGluZVRocm91Z2hTdHlsZToKKyAgICBjYXNlIENT
U1Byb3BlcnR5VGV4dE92ZXJmbG93OgorICAgIGNhc2UgQ1NTUHJvcGVydHlUZXh0T3ZlcmxpbmVN
b2RlOgorICAgIGNhc2UgQ1NTUHJvcGVydHlUZXh0T3ZlcmxpbmVTdHlsZToKKyAgICBjYXNlIENT
U1Byb3BlcnR5VGV4dFJlbmRlcmluZzoKKyAgICBjYXNlIENTU1Byb3BlcnR5VGV4dFRyYW5zZm9y
bToKKyAgICBjYXNlIENTU1Byb3BlcnR5VGV4dFVuZGVybGluZU1vZGU6CisgICAgY2FzZSBDU1NQ
cm9wZXJ0eVRleHRVbmRlcmxpbmVTdHlsZToKKyAgICBjYXNlIENTU1Byb3BlcnR5VmlzaWJpbGl0
eToKKyAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0QXBwZWFyYW5jZToKKyAgICBjYXNlIENTU1By
b3BlcnR5V2Via2l0QmFja2ZhY2VWaXNpYmlsaXR5OgorICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJr
aXRCb3JkZXJBZnRlclN0eWxlOgorICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRCb3JkZXJCZWZv
cmVTdHlsZToKKyAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0Qm9yZGVyRW5kU3R5bGU6CisgICAg
Y2FzZSBDU1NQcm9wZXJ0eVdlYmtpdEJvcmRlckZpdDoKKyAgICBjYXNlIENTU1Byb3BlcnR5V2Vi
a2l0Qm9yZGVyU3RhcnRTdHlsZToKKyAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0Qm94QWxpZ246
CisgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdEJveERpcmVjdGlvbjoKKyAgICBjYXNlIENTU1By
b3BlcnR5V2Via2l0Qm94TGluZXM6CisgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdEJveE9yaWVu
dDoKKyAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0Qm94UGFjazoKKyAgICBjYXNlIENTU1Byb3Bl
cnR5V2Via2l0Q29sb3JDb3JyZWN0aW9uOgorICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRDb2x1
bW5SdWxlU3R5bGU6CisgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdEZsZXhBbGlnbjoKKyAgICBj
YXNlIENTU1Byb3BlcnR5V2Via2l0RmxleERpcmVjdGlvbjoKKyAgICBjYXNlIENTU1Byb3BlcnR5
V2Via2l0RmxleEl0ZW1BbGlnbjoKKyAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0RmxleExpbmVQ
YWNrOgorICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRGbGV4UGFjazoKKyAgICBjYXNlIENTU1By
b3BlcnR5V2Via2l0RmxleFdyYXA6CisgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdEZvbnRLZXJu
aW5nOgorICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRGb250U21vb3RoaW5nOgorICAgIGNhc2Ug
Q1NTUHJvcGVydHlXZWJraXRIeXBoZW5zOgorICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRMaW5l
QWxpZ246CisgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdExpbmVCcmVhazoKKyAgICBjYXNlIENT
U1Byb3BlcnR5V2Via2l0TGluZVNuYXA6CisgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdE1hcmdp
bkFmdGVyQ29sbGFwc2U6CisgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdE1hcmdpbkJlZm9yZUNv
bGxhcHNlOgorICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRNYXJnaW5Cb3R0b21Db2xsYXBzZToK
KyAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0TWFyZ2luVG9wQ29sbGFwc2U6CisgICAgY2FzZSBD
U1NQcm9wZXJ0eVdlYmtpdE1hcnF1ZWVEaXJlY3Rpb246CisgICAgY2FzZSBDU1NQcm9wZXJ0eVdl
YmtpdE1hcnF1ZWVTdHlsZToKKyAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0TWF0Y2hOZWFyZXN0
TWFpbEJsb2NrcXVvdGVDb2xvcjoKKyAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0TmJzcE1vZGU6
CisjaWYgRU5BQkxFKE9WRVJGTE9XX1NDUk9MTElORykKKyAgICBjYXNlIENTU1Byb3BlcnR5V2Vi
a2l0T3ZlcmZsb3dTY3JvbGxpbmc6CisjZW5kaWYKKyAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0
UHJpbnRDb2xvckFkanVzdDoKKyAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0UnRsT3JkZXJpbmc6
CisgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdFRleHRDb21iaW5lOgorICAgIGNhc2UgQ1NTUHJv
cGVydHlXZWJraXRUZXh0RW1waGFzaXNQb3NpdGlvbjoKKyAgICBjYXNlIENTU1Byb3BlcnR5V2Vi
a2l0VGV4dFNlY3VyaXR5OgorICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRUZXh0U2l6ZUFkanVz
dDoKKyAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0VHJhbnNmb3JtU3R5bGU6CisgICAgY2FzZSBD
U1NQcm9wZXJ0eVdlYmtpdFVzZXJEcmFnOgorICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRVc2Vy
TW9kaWZ5OgorICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRVc2VyU2VsZWN0OgorICAgIGNhc2Ug
Q1NTUHJvcGVydHlXZWJraXRXcmFwRmxvdzoKKyAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0V3Jh
cFRocm91Z2g6CisgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdFdyaXRpbmdNb2RlOgorICAgIGNh
c2UgQ1NTUHJvcGVydHlXaGl0ZVNwYWNlOgorICAgIGNhc2UgQ1NTUHJvcGVydHlXb3JkQnJlYWs6
CisgICAgY2FzZSBDU1NQcm9wZXJ0eVdvcmRXcmFwOgorICAgICAgICByZXR1cm4gdHJ1ZTsKKyAg
ICBkZWZhdWx0OgorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorfQorCitzdGF0aWMgYm9v
bCBwYXJzZUtleXdvcmRWYWx1ZShTdHlsZVByb3BlcnR5U2V0KiBkZWNsYXJhdGlvbiwgaW50IHBy
b3BlcnR5SWQsIGNvbnN0IFN0cmluZyYgc3RyaW5nLCBib29sIGltcG9ydGFudCwgQ1NTU3R5bGVT
aGVldCogY29udGV4dFN0eWxlU2hlZXQpCit7CisgICAgaWYgKHN0cmluZy5pc0VtcHR5KCkpCisg
ICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIGlmICghaXNLZXl3b3JkUHJvcGVydHlJRChwcm9w
ZXJ0eUlkKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgQ1NTUGFyc2VyU3RyaW5nIGNz
c1N0cmluZzsKKyAgICBjc3NTdHJpbmcuY2hhcmFjdGVycyA9IGNvbnN0X2Nhc3Q8VUNoYXIqPihz
dHJpbmcuY2hhcmFjdGVycygpKTsKKyAgICBjc3NTdHJpbmcubGVuZ3RoID0gc3RyaW5nLmxlbmd0
aCgpOworICAgIGludCB2YWx1ZUlEID0gY3NzVmFsdWVLZXl3b3JkSUQoY3NzU3RyaW5nKTsKKwor
ICAgIGlmICghdmFsdWVJRCkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgRG9jdW1lbnQq
IGRvY3VtZW50ID0gY29udGV4dFN0eWxlU2hlZXQtPmZpbmREb2N1bWVudCgpOworICAgIFJlZlB0
cjxDU1NWYWx1ZT4gdmFsdWU7CisgICAgQ1NTVmFsdWVQb29sKiBjc3NWYWx1ZVBvb2wgPSBkb2N1
bWVudCA/IGRvY3VtZW50LT5jc3NWYWx1ZVBvb2woKS5nZXQoKSA6IDA7CisgICAgaWYgKHZhbHVl
SUQgPT0gQ1NTVmFsdWVJbmhlcml0KQorICAgICAgICB2YWx1ZSA9IGNzc1ZhbHVlUG9vbCA/IGNz
c1ZhbHVlUG9vbC0+Y3JlYXRlSW5oZXJpdGVkVmFsdWUoKSA6IENTU0luaGVyaXRlZFZhbHVlOjpj
cmVhdGUoKTsKKyAgICBlbHNlIGlmICh2YWx1ZUlEID09IENTU1ZhbHVlSW5pdGlhbCkKKyAgICAg
ICAgdmFsdWUgPSBjc3NWYWx1ZVBvb2wgPyBjc3NWYWx1ZVBvb2wtPmNyZWF0ZUV4cGxpY2l0SW5p
dGlhbFZhbHVlKCkgOiBDU1NJbml0aWFsVmFsdWU6OmNyZWF0ZUV4cGxpY2l0KCk7CisgICAgZWxz
ZSBpZiAoaXNWYWxpZEtleXdvcmRQcm9wZXJ0eUFuZFZhbHVlKHByb3BlcnR5SWQsIHZhbHVlSUQp
KQorICAgICAgICB2YWx1ZSA9IGRvY3VtZW50ID8gY3NzVmFsdWVQb29sLT5jcmVhdGVJZGVudGlm
aWVyVmFsdWUodmFsdWVJRCkgOiBDU1NQcmltaXRpdmVWYWx1ZTo6Y3JlYXRlSWRlbnRpZmllcih2
YWx1ZUlEKTsKKyAgICBlbHNlCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIGRlY2xhcmF0
aW9uLT5hZGRQYXJzZWRQcm9wZXJ0eShDU1NQcm9wZXJ0eShwcm9wZXJ0eUlkLCB2YWx1ZS5yZWxl
YXNlKCksIGltcG9ydGFudCkpOworICAgIHJldHVybiB0cnVlOworfQorCiBQYXNzUmVmUHRyPENT
U1ZhbHVlTGlzdD4gQ1NTUGFyc2VyOjpwYXJzZUZvbnRGYWNlVmFsdWUoY29uc3QgQXRvbWljU3Ry
aW5nJiBzdHJpbmcsIENTU1N0eWxlU2hlZXQqIGNvbnRleHRTdHlsZVNoZWV0KQogewogICAgIFJl
ZlB0cjxTdHlsZVByb3BlcnR5U2V0PiBkdW1teVN0eWxlID0gU3R5bGVQcm9wZXJ0eVNldDo6Y3Jl
YXRlKCk7CkBAIC00OTMsNiArOTQzLDggQEAgYm9vbCBDU1NQYXJzZXI6OnBhcnNlVmFsdWUoU3R5
bGVQcm9wZXJ0eVNldCogZGVjbGFyYXRpb24sIGludCBwcm9wZXJ0eUlkLCBjb25zdAogICAgICAg
ICByZXR1cm4gdHJ1ZTsKICAgICBpZiAocGFyc2VDb2xvclZhbHVlKGRlY2xhcmF0aW9uLCBwcm9w
ZXJ0eUlkLCBzdHJpbmcsIGltcG9ydGFudCwgc3RyaWN0LCBjb250ZXh0U3R5bGVTaGVldCkpCiAg
ICAgICAgIHJldHVybiB0cnVlOworICAgIGlmIChwYXJzZUtleXdvcmRWYWx1ZShkZWNsYXJhdGlv
biwgcHJvcGVydHlJZCwgc3RyaW5nLCBpbXBvcnRhbnQsIGNvbnRleHRTdHlsZVNoZWV0KSkKKyAg
ICAgICAgcmV0dXJuIHRydWU7CiAgICAgQ1NTUGFyc2VyIHBhcnNlcihzdHJpY3QpOwogICAgIHJl
dHVybiBwYXJzZXIucGFyc2VWYWx1ZShkZWNsYXJhdGlvbiwgcHJvcGVydHlJZCwgc3RyaW5nLCBp
bXBvcnRhbnQsIGNvbnRleHRTdHlsZVNoZWV0KTsKIH0KQEAgLTkyNyw2ICsxMzc5LDE1IEBAIGJv
b2wgQ1NTUGFyc2VyOjpwYXJzZVZhbHVlKGludCBwcm9wSWQsIGJvb2wgaW1wb3J0YW50KQogICAg
ICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CiAKKyAgICBpZiAoaXNLZXl3b3JkUHJvcGVydHlJRChw
cm9wSWQpKSB7CisgICAgICAgIGlmICghaXNWYWxpZEtleXdvcmRQcm9wZXJ0eUFuZFZhbHVlKHBy
b3BJZCwgaWQpKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICBpZiAobV92YWx1
ZUxpc3QtPm5leHQoKSAmJiAhaW5TaG9ydGhhbmQoKSkKKyAgICAgICAgICAgIHJldHVybiBmYWxz
ZTsKKyAgICAgICAgYWRkUHJvcGVydHkocHJvcElkLCBjc3NWYWx1ZVBvb2woKS0+Y3JlYXRlSWRl
bnRpZmllclZhbHVlKGlkKSwgaW1wb3J0YW50KTsKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAg
fQorCiAgICAgYm9vbCB2YWxpZFByaW1pdGl2ZSA9IGZhbHNlOwogICAgIFJlZlB0cjxDU1NWYWx1
ZT4gcGFyc2VkVmFsdWU7CiAKQEAgLTk3NSwxNCArMTQzNiw2IEBAIGJvb2wgQ1NTUGFyc2VyOjpw
YXJzZVZhbHVlKGludCBwcm9wSWQsIGJvb2wgaW1wb3J0YW50KQogICAgICAgICB9CiAgICAgICAg
IGJyZWFrOwogCi0gICAgY2FzZSBDU1NQcm9wZXJ0eVBvc2l0aW9uOiAgICAgICAgICAgICAvLyBz
dGF0aWMgfCByZWxhdGl2ZSB8IGFic29sdXRlIHwgZml4ZWQgfCBpbmhlcml0Ci0gICAgICAgIGlm
IChpZCA9PSBDU1NWYWx1ZVN0YXRpYwotICAgICAgICAgICAgfHwgaWQgPT0gQ1NTVmFsdWVSZWxh
dGl2ZQotICAgICAgICAgICAgfHwgaWQgPT0gQ1NTVmFsdWVBYnNvbHV0ZQotICAgICAgICAgICAg
fHwgaWQgPT0gQ1NTVmFsdWVGaXhlZCkKLSAgICAgICAgICAgIHZhbGlkUHJpbWl0aXZlID0gdHJ1
ZTsKLSAgICAgICAgYnJlYWs7Ci0KICAgICBjYXNlIENTU1Byb3BlcnR5UGFnZUJyZWFrQWZ0ZXI6
ICAgICAgIC8vIGF1dG8gfCBhbHdheXMgfCBhdm9pZCB8IGxlZnQgfCByaWdodCB8IGluaGVyaXQK
ICAgICBjYXNlIENTU1Byb3BlcnR5UGFnZUJyZWFrQmVmb3JlOgogICAgIGNhc2UgQ1NTUHJvcGVy
dHlXZWJraXRDb2x1bW5CcmVha0FmdGVyOgpAQCAtMTAwNCwyNSArMTQ1NywxMCBAQCBib29sIENT
U1BhcnNlcjo6cGFyc2VWYWx1ZShpbnQgcHJvcElkLCBib29sIGltcG9ydGFudCkKICAgICAgICAg
ICAgIHZhbGlkUHJpbWl0aXZlID0gKHByb3BJZCA9PSBDU1NQcm9wZXJ0eVdlYmtpdFJlZ2lvbkJy
ZWFrSW5zaWRlKSA/IGNzc1JlZ2lvbnNFbmFibGVkKCkgOiB0cnVlOwogICAgICAgICBicmVhazsK
IAotICAgIGNhc2UgQ1NTUHJvcGVydHlFbXB0eUNlbGxzOiAgICAgICAgICAvLyBzaG93IHwgaGlk
ZSB8IGluaGVyaXQKLSAgICAgICAgaWYgKGlkID09IENTU1ZhbHVlU2hvdwotICAgICAgICAgICAg
fHwgaWQgPT0gQ1NTVmFsdWVIaWRlKQotICAgICAgICAgICAgdmFsaWRQcmltaXRpdmUgPSB0cnVl
OwotICAgICAgICBicmVhazsKLQogICAgIGNhc2UgQ1NTUHJvcGVydHlDb250ZW50OiAgICAgICAg
ICAgICAgLy8gWyA8c3RyaW5nPiB8IDx1cmk+IHwgPGNvdW50ZXI+IHwgYXR0cihYKSB8IG9wZW4t
cXVvdGUgfAogICAgICAgICAvLyBjbG9zZS1xdW90ZSB8IG5vLW9wZW4tcXVvdGUgfCBuby1jbG9z
ZS1xdW90ZSBdKyB8IGluaGVyaXQKICAgICAgICAgcmV0dXJuIHBhcnNlQ29udGVudChwcm9wSWQs
IGltcG9ydGFudCk7CiAKLSAgICBjYXNlIENTU1Byb3BlcnR5V2hpdGVTcGFjZTogICAgICAgICAg
Ly8gbm9ybWFsIHwgcHJlIHwgbm93cmFwIHwgaW5oZXJpdAotICAgICAgICBpZiAoaWQgPT0gQ1NT
VmFsdWVOb3JtYWwKLSAgICAgICAgICAgIHx8IGlkID09IENTU1ZhbHVlUHJlCi0gICAgICAgICAg
ICB8fCBpZCA9PSBDU1NWYWx1ZVByZVdyYXAKLSAgICAgICAgICAgIHx8IGlkID09IENTU1ZhbHVl
UHJlTGluZQotICAgICAgICAgICAgfHwgaWQgPT0gQ1NTVmFsdWVOb3dyYXApCi0gICAgICAgICAg
ICB2YWxpZFByaW1pdGl2ZSA9IHRydWU7Ci0gICAgICAgIGJyZWFrOwotCiAgICAgY2FzZSBDU1NQ
cm9wZXJ0eUNsaXA6ICAgICAgICAgICAgICAgICAvLyA8c2hhcGU+IHwgYXV0byB8IGluaGVyaXQK
ICAgICAgICAgaWYgKGlkID09IENTU1ZhbHVlQXV0bykKICAgICAgICAgICAgIHZhbGlkUHJpbWl0
aXZlID0gdHJ1ZTsKQEAgLTEwMzAsODYgKzE0NjgsMTcgQEAgYm9vbCBDU1NQYXJzZXI6OnBhcnNl
VmFsdWUoaW50IHByb3BJZCwgYm9vbCBpbXBvcnRhbnQpCiAgICAgICAgICAgICByZXR1cm4gcGFy
c2VTaGFwZShwcm9wSWQsIGltcG9ydGFudCk7CiAgICAgICAgIGJyZWFrOwogCi0gICAgLyogU3Rh
cnQgb2Ygc3VwcG9ydGVkIENTUyBwcm9wZXJ0aWVzIHdpdGggdmFsaWRhdGlvbi4gVGhpcyBpcyBu
ZWVkZWQgZm9yIHBhcnNlU2hvcnRoYW5kIHRvIHdvcmsKLSAgICAgKiBjb3JyZWN0bHkgYW5kIGFs
bG93cyBvcHRpbWl6YXRpb24gaW4gV2ViQ29yZTo6YXBwbHlSdWxlKC4uKQotICAgICAqLwotICAg
IGNhc2UgQ1NTUHJvcGVydHlDYXB0aW9uU2lkZTogICAgICAgICAvLyB0b3AgfCBib3R0b20gfCBs
ZWZ0IHwgcmlnaHQgfCBpbmhlcml0Ci0gICAgICAgIGlmIChpZCA9PSBDU1NWYWx1ZUxlZnQgfHwg
aWQgPT0gQ1NTVmFsdWVSaWdodCB8fAotICAgICAgICAgICAgaWQgPT0gQ1NTVmFsdWVUb3AgfHwg
aWQgPT0gQ1NTVmFsdWVCb3R0b20pCi0gICAgICAgICAgICB2YWxpZFByaW1pdGl2ZSA9IHRydWU7
Ci0gICAgICAgIGJyZWFrOwotCi0gICAgY2FzZSBDU1NQcm9wZXJ0eUJvcmRlckNvbGxhcHNlOiAg
ICAgIC8vIGNvbGxhcHNlIHwgc2VwYXJhdGUgfCBpbmhlcml0Ci0gICAgICAgIGlmIChpZCA9PSBD
U1NWYWx1ZUNvbGxhcHNlIHx8IGlkID09IENTU1ZhbHVlU2VwYXJhdGUpCi0gICAgICAgICAgICB2
YWxpZFByaW1pdGl2ZSA9IHRydWU7Ci0gICAgICAgIGJyZWFrOwotCi0gICAgY2FzZSBDU1NQcm9w
ZXJ0eVZpc2liaWxpdHk6ICAgICAgICAgICAvLyB2aXNpYmxlIHwgaGlkZGVuIHwgY29sbGFwc2Ug
fCBpbmhlcml0Ci0gICAgICAgIGlmIChpZCA9PSBDU1NWYWx1ZVZpc2libGUgfHwgaWQgPT0gQ1NT
VmFsdWVIaWRkZW4gfHwgaWQgPT0gQ1NTVmFsdWVDb2xsYXBzZSkKLSAgICAgICAgICAgIHZhbGlk
UHJpbWl0aXZlID0gdHJ1ZTsKLSAgICAgICAgYnJlYWs7Ci0KLSAgICBjYXNlIENTU1Byb3BlcnR5
T3ZlcmZsb3c6IHsKLSAgICAgICAgU2hvcnRoYW5kU2NvcGUgc2NvcGUodGhpcywgcHJvcElkKTsK
LSAgICAgICAgaWYgKG51bSAhPSAxIHx8ICFwYXJzZVZhbHVlKENTU1Byb3BlcnR5T3ZlcmZsb3dY
LCBpbXBvcnRhbnQpKQotICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICBDU1NWYWx1
ZSogdmFsdWUgPSBtX3BhcnNlZFByb3BlcnRpZXMubGFzdCgpLnZhbHVlKCk7Ci0gICAgICAgIGFk
ZFByb3BlcnR5KENTU1Byb3BlcnR5T3ZlcmZsb3dZLCB2YWx1ZSwgaW1wb3J0YW50KTsKLSAgICAg
ICAgcmV0dXJuIHRydWU7Ci0gICAgfQotICAgIGNhc2UgQ1NTUHJvcGVydHlPdmVyZmxvd1g6Ci0g
ICAgY2FzZSBDU1NQcm9wZXJ0eU92ZXJmbG93WTogICAgICAgICAgIC8vIHZpc2libGUgfCBoaWRk
ZW4gfCBzY3JvbGwgfCBhdXRvIHwgbWFycXVlZSB8IG92ZXJsYXkgfCBpbmhlcml0Ci0gICAgICAg
IGlmIChpZCA9PSBDU1NWYWx1ZVZpc2libGUgfHwgaWQgPT0gQ1NTVmFsdWVIaWRkZW4gfHwgaWQg
PT0gQ1NTVmFsdWVTY3JvbGwgfHwgaWQgPT0gQ1NTVmFsdWVBdXRvIHx8Ci0gICAgICAgICAgICBp
ZCA9PSBDU1NWYWx1ZU92ZXJsYXkgfHwgaWQgPT0gQ1NTVmFsdWVXZWJraXRNYXJxdWVlKQotICAg
ICAgICAgICAgdmFsaWRQcmltaXRpdmUgPSB0cnVlOwotICAgICAgICBicmVhazsKLQotICAgIGNh
c2UgQ1NTUHJvcGVydHlMaXN0U3R5bGVQb3NpdGlvbjogIC8vIGluc2lkZSB8IG91dHNpZGUgfCBp
bmhlcml0Ci0gICAgICAgIGlmIChpZCA9PSBDU1NWYWx1ZUluc2lkZSB8fCBpZCA9PSBDU1NWYWx1
ZU91dHNpZGUpCi0gICAgICAgICAgICB2YWxpZFByaW1pdGl2ZSA9IHRydWU7Ci0gICAgICAgIGJy
ZWFrOwotCi0gICAgY2FzZSBDU1NQcm9wZXJ0eUxpc3RTdHlsZVR5cGU6Ci0gICAgICAgIC8vIFNl
ZSBzZWN0aW9uIENTU19QUk9QX0xJU1RfU1RZTEVfVFlQRSBvZiBmaWxlIENTU1ZhbHVlS2V5d29y
ZHMuaW4KLSAgICAgICAgLy8gZm9yIHRoZSBsaXN0IG9mIHN1cHBvcnRlZCBsaXN0LXN0eWxlLXR5
cGVzLgotICAgICAgICBpZiAoKGlkID49IENTU1ZhbHVlRGlzYyAmJiBpZCA8PSBDU1NWYWx1ZUth
dGFrYW5hSXJvaGEpIHx8IGlkID09IENTU1ZhbHVlTm9uZSkKLSAgICAgICAgICAgIHZhbGlkUHJp
bWl0aXZlID0gdHJ1ZTsKLSAgICAgICAgYnJlYWs7Ci0KLSAgICBjYXNlIENTU1Byb3BlcnR5RGlz
cGxheToKLSAgICAgICAgLy8gaW5saW5lIHwgYmxvY2sgfCBsaXN0LWl0ZW0gfCBydW4taW4gfCBp
bmxpbmUtYmxvY2sgfCB0YWJsZSB8Ci0gICAgICAgIC8vIGlubGluZS10YWJsZSB8IHRhYmxlLXJv
dy1ncm91cCB8IHRhYmxlLWhlYWRlci1ncm91cCB8IHRhYmxlLWZvb3Rlci1ncm91cCB8IHRhYmxl
LXJvdyB8Ci0gICAgICAgIC8vIHRhYmxlLWNvbHVtbi1ncm91cCB8IHRhYmxlLWNvbHVtbiB8IHRh
YmxlLWNlbGwgfCB0YWJsZS1jYXB0aW9uIHwgLXdlYmtpdC1ib3ggfCAtd2Via2l0LWlubGluZS1i
b3ggfCBub25lIHwgaW5oZXJpdAotICAgICAgICAvLyAtd2Via2l0LWZsZXhib3ggfCAtd2Via2l0
LWlubGluZS1mbGV4Ym94IHwgLXdlYmtpdC1ncmlkIHwgLXdlYmtpdC1pbmxpbmUtZ3JpZAotICAg
ICAgICBpZiAoKGlkID49IENTU1ZhbHVlSW5saW5lICYmIGlkIDw9IENTU1ZhbHVlV2Via2l0SW5s
aW5lRmxleGJveCkgfHwgaWQgPT0gQ1NTVmFsdWVOb25lKQotICAgICAgICAgICAgdmFsaWRQcmlt
aXRpdmUgPSB0cnVlOwotI2lmIEVOQUJMRShDU1NfR1JJRF9MQVlPVVQpCi0gICAgICAgIGlmIChp
ZCA9PSBDU1NWYWx1ZVdlYmtpdEdyaWQgfHwgaWQgPT0gQ1NTVmFsdWVXZWJraXRJbmxpbmVHcmlk
KQotICAgICAgICAgICAgdmFsaWRQcmltaXRpdmUgPSB0cnVlOwotI2VuZGlmCi0gICAgICAgIGJy
ZWFrOwotCi0gICAgY2FzZSBDU1NQcm9wZXJ0eURpcmVjdGlvbjogICAgICAgICAgICAvLyBsdHIg
fCBydGwgfCBpbmhlcml0Ci0gICAgICAgIGlmIChpZCA9PSBDU1NWYWx1ZUx0ciB8fCBpZCA9PSBD
U1NWYWx1ZVJ0bCkKLSAgICAgICAgICAgIHZhbGlkUHJpbWl0aXZlID0gdHJ1ZTsKLSAgICAgICAg
YnJlYWs7Ci0KLSAgICBjYXNlIENTU1Byb3BlcnR5VGV4dFRyYW5zZm9ybTogICAgICAgLy8gY2Fw
aXRhbGl6ZSB8IHVwcGVyY2FzZSB8IGxvd2VyY2FzZSB8IG5vbmUgfCBpbmhlcml0Ci0gICAgICAg
IGlmICgoaWQgPj0gQ1NTVmFsdWVDYXBpdGFsaXplICYmIGlkIDw9IENTU1ZhbHVlTG93ZXJjYXNl
KSB8fCBpZCA9PSBDU1NWYWx1ZU5vbmUpCi0gICAgICAgICAgICB2YWxpZFByaW1pdGl2ZSA9IHRy
dWU7Ci0gICAgICAgIGJyZWFrOwotCi0gICAgY2FzZSBDU1NQcm9wZXJ0eUZsb2F0OiAgICAgICAg
ICAgICAgICAvLyBsZWZ0IHwgcmlnaHQgfCBub25lIHwgcG9zaXRpb25lZCB8IGNlbnRlciAoZm9y
IGJ1Z2d5IENTUywgbWFwcyB0byBub25lKQotICAgICAgICBpZiAoaWQgPT0gQ1NTVmFsdWVMZWZ0
IHx8IGlkID09IENTU1ZhbHVlUmlnaHQKLSAgICAgICAgICAgIHx8IGlkID09IENTU1ZhbHVlTm9u
ZSB8fCBpZCA9PSBDU1NWYWx1ZUNlbnRlciB8fCBpZCA9PSBDU1NWYWx1ZVdlYmtpdFBvc2l0aW9u
ZWQpCi0gICAgICAgICAgICB2YWxpZFByaW1pdGl2ZSA9IHRydWU7Ci0gICAgICAgIGJyZWFrOwot
Ci0gICAgY2FzZSBDU1NQcm9wZXJ0eUNsZWFyOiAgICAgICAgICAgICAgICAvLyBub25lIHwgbGVm
dCB8IHJpZ2h0IHwgYm90aCB8IGluaGVyaXQKLSAgICAgICAgaWYgKGlkID09IENTU1ZhbHVlTm9u
ZSB8fCBpZCA9PSBDU1NWYWx1ZUxlZnQKLSAgICAgICAgICAgIHx8IGlkID09IENTU1ZhbHVlUmln
aHQgfHwgaWQgPT0gQ1NTVmFsdWVCb3RoKQotICAgICAgICAgICAgdmFsaWRQcmltaXRpdmUgPSB0
cnVlOwotICAgICAgICBicmVhazsKKyAgICAvKiBTdGFydCBvZiBzdXBwb3J0ZWQgQ1NTIHByb3Bl
cnRpZXMgd2l0aCB2YWxpZGF0aW9uLiBUaGlzIGlzIG5lZWRlZCBmb3IgcGFyc2VTaG9ydGhhbmQg
dG8gd29yaworICAgICAqIGNvcnJlY3RseSBhbmQgYWxsb3dzIG9wdGltaXphdGlvbiBpbiBXZWJD
b3JlOjphcHBseVJ1bGUoLi4pCisgICAgICovCisgICAgY2FzZSBDU1NQcm9wZXJ0eU92ZXJmbG93
OiB7CisgICAgICAgIFNob3J0aGFuZFNjb3BlIHNjb3BlKHRoaXMsIHByb3BJZCk7CisgICAgICAg
IGlmIChudW0gIT0gMSB8fCAhcGFyc2VWYWx1ZShDU1NQcm9wZXJ0eU92ZXJmbG93WCwgaW1wb3J0
YW50KSkKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgQ1NTVmFsdWUqIHZhbHVl
ID0gbV9wYXJzZWRQcm9wZXJ0aWVzLmxhc3QoKS52YWx1ZSgpOworICAgICAgICBhZGRQcm9wZXJ0
eShDU1NQcm9wZXJ0eU92ZXJmbG93WSwgdmFsdWUsIGltcG9ydGFudCk7CisgICAgICAgIHJldHVy
biB0cnVlOworICAgIH0KIAogICAgIGNhc2UgQ1NTUHJvcGVydHlUZXh0QWxpZ246CiAgICAgICAg
IC8vIGxlZnQgfCByaWdodCB8IGNlbnRlciB8IGp1c3RpZnkgfCB3ZWJraXRfbGVmdCB8IHdlYmtp
dF9yaWdodCB8IHdlYmtpdF9jZW50ZXIgfCB3ZWJraXRfbWF0Y2hfcGFyZW50IHwKQEAgLTExMTks
MjQgKzE0ODgsNiBAQCBib29sIENTU1BhcnNlcjo6cGFyc2VWYWx1ZShpbnQgcHJvcElkLCBib29s
IGltcG9ydGFudCkKICAgICAgICAgICAgIHZhbGlkUHJpbWl0aXZlID0gdHJ1ZTsKICAgICAgICAg
YnJlYWs7CiAKLSAgICBjYXNlIENTU1Byb3BlcnR5T3V0bGluZVN0eWxlOiAgICAgICAgLy8gKDxi
b3JkZXItc3R5bGU+IGV4Y2VwdCBoaWRkZW4pIHwgYXV0byB8IGluaGVyaXQKLSAgICAgICAgaWYg
KGlkID09IENTU1ZhbHVlQXV0byB8fCBpZCA9PSBDU1NWYWx1ZU5vbmUgfHwgKGlkID49IENTU1Zh
bHVlSW5zZXQgJiYgaWQgPD0gQ1NTVmFsdWVEb3VibGUpKQotICAgICAgICAgICAgdmFsaWRQcmlt
aXRpdmUgPSB0cnVlOwotICAgICAgICBicmVhazsKLQotICAgIGNhc2UgQ1NTUHJvcGVydHlCb3Jk
ZXJUb3BTdHlsZTogICAgIC8vLy8gPGJvcmRlci1zdHlsZT4gfCBpbmhlcml0Ci0gICAgY2FzZSBD
U1NQcm9wZXJ0eUJvcmRlclJpZ2h0U3R5bGU6ICAgLy8gICBEZWZpbmVkIGFzOiAgICBub25lIHwg
aGlkZGVuIHwgZG90dGVkIHwgZGFzaGVkIHwKLSAgICBjYXNlIENTU1Byb3BlcnR5Qm9yZGVyQm90
dG9tU3R5bGU6ICAvLyAgIHNvbGlkIHwgZG91YmxlIHwgZ3Jvb3ZlIHwgcmlkZ2UgfCBpbnNldCB8
IG91dHNldAotICAgIGNhc2UgQ1NTUHJvcGVydHlCb3JkZXJMZWZ0U3R5bGU6Ci0gICAgY2FzZSBD
U1NQcm9wZXJ0eVdlYmtpdEJvcmRlclN0YXJ0U3R5bGU6Ci0gICAgY2FzZSBDU1NQcm9wZXJ0eVdl
YmtpdEJvcmRlckVuZFN0eWxlOgotICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRCb3JkZXJCZWZv
cmVTdHlsZToKLSAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0Qm9yZGVyQWZ0ZXJTdHlsZToKLSAg
ICBjYXNlIENTU1Byb3BlcnR5V2Via2l0Q29sdW1uUnVsZVN0eWxlOgotICAgICAgICBpZiAoaWQg
Pj0gQ1NTVmFsdWVOb25lICYmIGlkIDw9IENTU1ZhbHVlRG91YmxlKQotICAgICAgICAgICAgdmFs
aWRQcmltaXRpdmUgPSB0cnVlOwotICAgICAgICBicmVhazsKLQogICAgIGNhc2UgQ1NTUHJvcGVy
dHlGb250V2VpZ2h0OiAgLy8gbm9ybWFsIHwgYm9sZCB8IGJvbGRlciB8IGxpZ2h0ZXIgfCAxMDAg
fCAyMDAgfCAzMDAgfCA0MDAgfCA1MDAgfCA2MDAgfCA3MDAgfCA4MDAgfCA5MDAgfCBpbmhlcml0
CiAgICAgICAgIHJldHVybiBwYXJzZUZvbnRXZWlnaHQoaW1wb3J0YW50KTsKIApAQCAtMTM1MSwy
MSArMTcwMiw2IEBAIGJvb2wgQ1NTUGFyc2VyOjpwYXJzZVZhbHVlKGludCBwcm9wSWQsIGJvb2wg
aW1wb3J0YW50KQogICAgICAgICAgICAgdmFsaWRQcmltaXRpdmUgPSB2YWxpZFVuaXQodmFsdWUs
IEZMZW5ndGgsIG1fc3RyaWN0KTsKICAgICAgICAgYnJlYWs7CiAKLSAgICBjYXNlIENTU1Byb3Bl
cnR5V29yZEJyZWFrOiAgICAgICAgICAvLyBub3JtYWwgfCBicmVhay1hbGwgfCBicmVhay13b3Jk
ICh0aGlzIGlzIGEgY3VzdG9tIGV4dGVuc2lvbikKLSAgICAgICAgaWYgKGlkID09IENTU1ZhbHVl
Tm9ybWFsIHx8IGlkID09IENTU1ZhbHVlQnJlYWtBbGwgfHwgaWQgPT0gQ1NTVmFsdWVCcmVha1dv
cmQpCi0gICAgICAgICAgICB2YWxpZFByaW1pdGl2ZSA9IHRydWU7Ci0gICAgICAgIGJyZWFrOwot
Ci0gICAgY2FzZSBDU1NQcm9wZXJ0eVdvcmRXcmFwOiAgICAgICAgICAgLy8gbm9ybWFsIHwgYnJl
YWstd29yZAotICAgICAgICBpZiAoaWQgPT0gQ1NTVmFsdWVOb3JtYWwgfHwgaWQgPT0gQ1NTVmFs
dWVCcmVha1dvcmQpCi0gICAgICAgICAgICB2YWxpZFByaW1pdGl2ZSA9IHRydWU7Ci0gICAgICAg
IGJyZWFrOwotICAgIGNhc2UgQ1NTUHJvcGVydHlTcGVhazogICAgICAgICAgIC8vIG5vbmUgfCBu
b3JtYWwgfCBzcGVsbC1vdXQgfCBkaWdpdHMgfCBsaXRlcmFsLXB1bmN0dWF0aW9uIHwgbm8tcHVu
Y3R1YXRpb24gfCBpbmhlcml0Ci0gICAgICAgIGlmIChpZCA9PSBDU1NWYWx1ZU5vbmUgfHwgaWQg
PT0gQ1NTVmFsdWVOb3JtYWwgfHwgaWQgPT0gQ1NTVmFsdWVTcGVsbE91dCB8fCBpZCA9PSBDU1NW
YWx1ZURpZ2l0cwotICAgICAgICAgICAgfHwgaWQgPT0gQ1NTVmFsdWVMaXRlcmFsUHVuY3R1YXRp
b24gfHwgaWQgPT0gQ1NTVmFsdWVOb1B1bmN0dWF0aW9uKQotICAgICAgICAgICAgdmFsaWRQcmlt
aXRpdmUgPSB0cnVlOwotICAgICAgICBicmVhazsKLQogICAgIGNhc2UgQ1NTUHJvcGVydHlUZXh0
SW5kZW50OiAgICAgICAgICAvLyA8bGVuZ3RoPiB8IDxwZXJjZW50YWdlPiB8IGluaGVyaXQKICAg
ICAgICAgdmFsaWRQcmltaXRpdmUgPSAoIWlkICYmIHZhbGlkVW5pdCh2YWx1ZSwgRkxlbmd0aCB8
IEZQZXJjZW50LCBtX3N0cmljdCkpOwogICAgICAgICBicmVhazsKQEAgLTE0MDgsMTEgKzE3NDQs
NiBAQCBib29sIENTU1BhcnNlcjo6cGFyc2VWYWx1ZShpbnQgcHJvcElkLCBib29sIGltcG9ydGFu
dCkKICAgICAgICAgICAgIHZhbGlkUHJpbWl0aXZlID0gKHZhbGlkVW5pdCh2YWx1ZSwgRkxlbmd0
aCB8IEZQZXJjZW50IHwgRk5vbk5lZywgbV9zdHJpY3QpKTsKICAgICAgICAgYnJlYWs7CiAKLSAg
ICBjYXNlIENTU1Byb3BlcnR5Rm9udFN0eWxlOiAgICAgICAgICAgLy8gbm9ybWFsIHwgaXRhbGlj
IHwgb2JsaXF1ZSB8IGluaGVyaXQKLSAgICAgICAgaWYgKGlkID09IENTU1ZhbHVlTm9ybWFsIHx8
IGlkID09IENTU1ZhbHVlSXRhbGljIHx8IGlkID09IENTU1ZhbHVlT2JsaXF1ZSkKLSAgICAgICAg
ICAgIHZhbGlkUHJpbWl0aXZlID0gdHJ1ZTsKLSAgICAgICAgYnJlYWs7Ci0KICAgICBjYXNlIENT
U1Byb3BlcnR5Rm9udFZhcmlhbnQ6ICAgICAgICAgLy8gbm9ybWFsIHwgc21hbGwtY2FwcyB8IGlu
aGVyaXQKICAgICAgICAgcmV0dXJuIHBhcnNlRm9udFZhcmlhbnQoaW1wb3J0YW50KTsKIApAQCAt
MTUyOCwxMSArMTg1OSw2IEBAIGJvb2wgQ1NTUGFyc2VyOjpwYXJzZVZhbHVlKGludCBwcm9wSWQs
IGJvb2wgaW1wb3J0YW50KQogICAgICAgICAgICAgdmFsaWRQcmltaXRpdmUgPSAoIWlkICYmIHZh
bGlkVW5pdCh2YWx1ZSwgRk51bWJlciB8IEZQZXJjZW50IHwgRk5vbk5lZywgdHJ1ZSkpOwogICAg
ICAgICBicmVhazsKIAotICAgIGNhc2UgQ1NTUHJvcGVydHlUYWJsZUxheW91dDogICAgICAgICAv
LyBhdXRvIHwgZml4ZWQgfCBpbmhlcml0Ci0gICAgICAgIGlmIChpZCA9PSBDU1NWYWx1ZUF1dG8g
fHwgaWQgPT0gQ1NTVmFsdWVGaXhlZCkKLSAgICAgICAgICAgIHZhbGlkUHJpbWl0aXZlID0gdHJ1
ZTsKLSAgICAgICAgYnJlYWs7Ci0KICAgICBjYXNlIENTU1Byb3BlcnR5U3JjOiAgLy8gT25seSB1
c2VkIHdpdGhpbiBAZm9udC1mYWNlLCBzbyBjYW5ub3QgdXNlIGluaGVyaXQgfCBpbml0aWFsIG9y
IGJlICFpbXBvcnRhbnQuICBUaGlzIGlzIGEgbGlzdCBvZiB1cmxzIG9yIGxvY2FsIHJlZmVyZW5j
ZXMuCiAgICAgICAgIHJldHVybiBwYXJzZUZvbnRGYWNlU3JjKCk7CiAKQEAgLTE1NDAsMTAgKzE4
NjYsNiBAQCBib29sIENTU1BhcnNlcjo6cGFyc2VWYWx1ZShpbnQgcHJvcElkLCBib29sIGltcG9y
dGFudCkKICAgICAgICAgcmV0dXJuIHBhcnNlRm9udEZhY2VVbmljb2RlUmFuZ2UoKTsKIAogICAg
IC8qIENTUzMgcHJvcGVydGllcyAqLwotICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRBcHBlYXJh
bmNlOgotICAgICAgICBpZiAoKGlkID49IENTU1ZhbHVlQ2hlY2tib3ggJiYgaWQgPD0gQ1NTVmFs
dWVUZXh0YXJlYSkgfHwgaWQgPT0gQ1NTVmFsdWVOb25lKQotICAgICAgICAgICAgdmFsaWRQcmlt
aXRpdmUgPSB0cnVlOwotICAgICAgICBicmVhazsKIAogICAgIGNhc2UgQ1NTUHJvcGVydHlCb3Jk
ZXJJbWFnZTogewogICAgICAgICBSZWZQdHI8Q1NTVmFsdWU+IHJlc3VsdDsKQEAgLTE2NTEsMjkg
KzE5NzMsNiBAQCBib29sIENTU1BhcnNlcjo6cGFyc2VWYWx1ZShpbnQgcHJvcElkLCBib29sIGlt
cG9ydGFudCkKICAgICBjYXNlIENTU1Byb3BlcnR5T3BhY2l0eToKICAgICAgICAgdmFsaWRQcmlt
aXRpdmUgPSB2YWxpZFVuaXQodmFsdWUsIEZOdW1iZXIsIG1fc3RyaWN0KTsKICAgICAgICAgYnJl
YWs7Ci0gICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdEJveEFsaWduOgotICAgICAgICBpZiAoaWQg
PT0gQ1NTVmFsdWVTdHJldGNoIHx8IGlkID09IENTU1ZhbHVlU3RhcnQgfHwgaWQgPT0gQ1NTVmFs
dWVFbmQgfHwKLSAgICAgICAgICAgIGlkID09IENTU1ZhbHVlQ2VudGVyIHx8IGlkID09IENTU1Zh
bHVlQmFzZWxpbmUpCi0gICAgICAgICAgICB2YWxpZFByaW1pdGl2ZSA9IHRydWU7Ci0gICAgICAg
IGJyZWFrOwotICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRCb3hEaXJlY3Rpb246Ci0gICAgICAg
IGlmIChpZCA9PSBDU1NWYWx1ZU5vcm1hbCB8fCBpZCA9PSBDU1NWYWx1ZVJldmVyc2UpCi0gICAg
ICAgICAgICB2YWxpZFByaW1pdGl2ZSA9IHRydWU7Ci0gICAgICAgIGJyZWFrOwotICAgIGNhc2Ug
Q1NTUHJvcGVydHlXZWJraXRCb3hMaW5lczoKLSAgICAgICAgaWYgKGlkID09IENTU1ZhbHVlU2lu
Z2xlIHx8IGlkID09IENTU1ZhbHVlTXVsdGlwbGUpCi0gICAgICAgICAgICB2YWxpZFByaW1pdGl2
ZSA9IHRydWU7Ci0gICAgICAgIGJyZWFrOwotICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRCb3hP
cmllbnQ6Ci0gICAgICAgIGlmIChpZCA9PSBDU1NWYWx1ZUhvcml6b250YWwgfHwgaWQgPT0gQ1NT
VmFsdWVWZXJ0aWNhbCB8fAotICAgICAgICAgICAgaWQgPT0gQ1NTVmFsdWVJbmxpbmVBeGlzIHx8
IGlkID09IENTU1ZhbHVlQmxvY2tBeGlzKQotICAgICAgICAgICAgdmFsaWRQcmltaXRpdmUgPSB0
cnVlOwotICAgICAgICBicmVhazsKLSAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0Qm94UGFjazoK
LSAgICAgICAgaWYgKGlkID09IENTU1ZhbHVlU3RhcnQgfHwgaWQgPT0gQ1NTVmFsdWVFbmQgfHwK
LSAgICAgICAgICAgIGlkID09IENTU1ZhbHVlQ2VudGVyIHx8IGlkID09IENTU1ZhbHVlSnVzdGlm
eSkKLSAgICAgICAgICAgIHZhbGlkUHJpbWl0aXZlID0gdHJ1ZTsKLSAgICAgICAgYnJlYWs7CiAg
ICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdEJveEZsZXg6CiAgICAgICAgIHZhbGlkUHJpbWl0aXZl
ID0gdmFsaWRVbml0KHZhbHVlLCBGTnVtYmVyLCBtX3N0cmljdCk7CiAgICAgICAgIGJyZWFrOwpA
QCAtMTY4MSwxMiArMTk4MCw2IEBAIGJvb2wgQ1NTUGFyc2VyOjpwYXJzZVZhbHVlKGludCBwcm9w
SWQsIGJvb2wgaW1wb3J0YW50KQogICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRCb3hPcmRpbmFs
R3JvdXA6CiAgICAgICAgIHZhbGlkUHJpbWl0aXZlID0gdmFsaWRVbml0KHZhbHVlLCBGSW50ZWdl
ciB8IEZOb25OZWcsIHRydWUpOwogICAgICAgICBicmVhazsKLSAgICBjYXNlIENTU1Byb3BlcnR5
Qm94U2l6aW5nOgotICAgICAgICB2YWxpZFByaW1pdGl2ZSA9IGlkID09IENTU1ZhbHVlQm9yZGVy
Qm94IHx8IGlkID09IENTU1ZhbHVlQ29udGVudEJveDsKLSAgICAgICAgYnJlYWs7Ci0gICAgY2Fz
ZSBDU1NQcm9wZXJ0eVdlYmtpdENvbG9yQ29ycmVjdGlvbjoKLSAgICAgICAgdmFsaWRQcmltaXRp
dmUgPSBpZCA9PSBDU1NWYWx1ZVNyZ2IgfHwgaWQgPT0gQ1NTVmFsdWVEZWZhdWx0OwotICAgICAg
ICBicmVhazsKICNpZiBFTkFCTEUoQ1NTX0ZJTFRFUlMpCiAgICAgY2FzZSBDU1NQcm9wZXJ0eVdl
YmtpdEZpbHRlcjoKICAgICAgICAgaWYgKGlkID09IENTU1ZhbHVlTm9uZSkKQEAgLTE3MDksNDYg
KzIwMDIsMTggQEAgYm9vbCBDU1NQYXJzZXI6OnBhcnNlVmFsdWUoaW50IHByb3BJZCwgYm9vbCBp
bXBvcnRhbnQpCiAgICAgICAgICAgICBtX3ZhbHVlTGlzdC0+bmV4dCgpOwogICAgICAgICB9CiAg
ICAgICAgIGJyZWFrOwotICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRGbGV4UGFjazoKLSAgICAg
ICAgdmFsaWRQcmltaXRpdmUgPSBpZCA9PSBDU1NWYWx1ZVN0YXJ0IHx8IGlkID09IENTU1ZhbHVl
RW5kIHx8IGlkID09IENTU1ZhbHVlQ2VudGVyIHx8IGlkID09IENTU1ZhbHVlSnVzdGlmeSB8fCBp
ZCA9PSBDU1NWYWx1ZURpc3RyaWJ1dGU7Ci0gICAgICAgIGJyZWFrOwotICAgIGNhc2UgQ1NTUHJv
cGVydHlXZWJraXRGbGV4QWxpZ246Ci0gICAgICAgIHZhbGlkUHJpbWl0aXZlID0gaWQgPT0gQ1NT
VmFsdWVTdGFydCB8fCBpZCA9PSBDU1NWYWx1ZUVuZCB8fCBpZCA9PSBDU1NWYWx1ZUNlbnRlciB8
fCBpZCA9PSBDU1NWYWx1ZUJhc2VsaW5lIHx8IGlkID09IENTU1ZhbHVlU3RyZXRjaDsKLSAgICAg
ICAgYnJlYWs7Ci0gICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdEZsZXhJdGVtQWxpZ246Ci0gICAg
ICAgIHZhbGlkUHJpbWl0aXZlID0gaWQgPT0gQ1NTVmFsdWVBdXRvIHx8IGlkID09IENTU1ZhbHVl
U3RhcnQgfHwgaWQgPT0gQ1NTVmFsdWVFbmQgfHwgaWQgPT0gQ1NTVmFsdWVDZW50ZXIgfHwgaWQg
PT0gQ1NTVmFsdWVCYXNlbGluZSB8fCBpZCA9PSBDU1NWYWx1ZVN0cmV0Y2g7Ci0gICAgICAgIGJy
ZWFrOwotICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRGbGV4RGlyZWN0aW9uOgotICAgICAgICB2
YWxpZFByaW1pdGl2ZSA9IGlkID09IENTU1ZhbHVlUm93IHx8IGlkID09IENTU1ZhbHVlUm93UmV2
ZXJzZSB8fCBpZCA9PSBDU1NWYWx1ZUNvbHVtbiB8fCBpZCA9PSBDU1NWYWx1ZUNvbHVtblJldmVy
c2U7Ci0gICAgICAgIGJyZWFrOwotICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRGbGV4V3JhcDoK
LSAgICAgICAgdmFsaWRQcmltaXRpdmUgPSBpZCA9PSBDU1NWYWx1ZU5vbmUgfHwgaWQgPT0gQ1NT
VmFsdWVXcmFwIHx8IGlkID09IENTU1ZhbHVlV3JhcFJldmVyc2U7Ci0gICAgICAgIGJyZWFrOwot
ICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRGbGV4TGluZVBhY2s6Ci0gICAgICAgIHZhbGlkUHJp
bWl0aXZlID0gaWQgPT0gQ1NTVmFsdWVTdGFydCB8fCBpZCA9PSBDU1NWYWx1ZUVuZCB8fCBpZCA9
PSBDU1NWYWx1ZUNlbnRlciB8fCBpZCA9PSBDU1NWYWx1ZUp1c3RpZnkgfHwgaWQgPT0gQ1NTVmFs
dWVEaXN0cmlidXRlIHx8IGlkID09IENTU1ZhbHVlU3RyZXRjaDsKLSAgICAgICAgYnJlYWs7CiAg
ICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdE1hcnF1ZWU6IHsKICAgICAgICAgY29uc3QgaW50IHBy
b3BlcnRpZXNbNV0gPSB7IENTU1Byb3BlcnR5V2Via2l0TWFycXVlZURpcmVjdGlvbiwgQ1NTUHJv
cGVydHlXZWJraXRNYXJxdWVlSW5jcmVtZW50LAogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgQ1NTUHJvcGVydHlXZWJraXRNYXJxdWVlUmVwZXRpdGlvbiwKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIENTU1Byb3BlcnR5V2Via2l0TWFycXVlZVN0eWxlLCBD
U1NQcm9wZXJ0eVdlYmtpdE1hcnF1ZWVTcGVlZCB9OwogICAgICAgICByZXR1cm4gcGFyc2VTaG9y
dGhhbmQocHJvcElkLCBwcm9wZXJ0aWVzLCA1LCBpbXBvcnRhbnQpOwogICAgIH0KLSAgICBjYXNl
IENTU1Byb3BlcnR5V2Via2l0TWFycXVlZURpcmVjdGlvbjoKLSAgICAgICAgaWYgKGlkID09IENT
U1ZhbHVlRm9yd2FyZHMgfHwgaWQgPT0gQ1NTVmFsdWVCYWNrd2FyZHMgfHwgaWQgPT0gQ1NTVmFs
dWVBaGVhZCB8fAotICAgICAgICAgICAgaWQgPT0gQ1NTVmFsdWVSZXZlcnNlIHx8IGlkID09IENT
U1ZhbHVlTGVmdCB8fCBpZCA9PSBDU1NWYWx1ZVJpZ2h0IHx8IGlkID09IENTU1ZhbHVlRG93biB8
fAotICAgICAgICAgICAgaWQgPT0gQ1NTVmFsdWVVcCB8fCBpZCA9PSBDU1NWYWx1ZUF1dG8pCi0g
ICAgICAgICAgICB2YWxpZFByaW1pdGl2ZSA9IHRydWU7Ci0gICAgICAgIGJyZWFrOwogICAgIGNh
c2UgQ1NTUHJvcGVydHlXZWJraXRNYXJxdWVlSW5jcmVtZW50OgogICAgICAgICBpZiAoaWQgPT0g
Q1NTVmFsdWVTbWFsbCB8fCBpZCA9PSBDU1NWYWx1ZUxhcmdlIHx8IGlkID09IENTU1ZhbHVlTWVk
aXVtKQogICAgICAgICAgICAgdmFsaWRQcmltaXRpdmUgPSB0cnVlOwogICAgICAgICBlbHNlCiAg
ICAgICAgICAgICB2YWxpZFByaW1pdGl2ZSA9IHZhbGlkVW5pdCh2YWx1ZSwgRkxlbmd0aCB8IEZQ
ZXJjZW50LCBtX3N0cmljdCk7CiAgICAgICAgIGJyZWFrOwotICAgIGNhc2UgQ1NTUHJvcGVydHlX
ZWJraXRNYXJxdWVlU3R5bGU6Ci0gICAgICAgIGlmIChpZCA9PSBDU1NWYWx1ZU5vbmUgfHwgaWQg
PT0gQ1NTVmFsdWVTbGlkZSB8fCBpZCA9PSBDU1NWYWx1ZVNjcm9sbCB8fCBpZCA9PSBDU1NWYWx1
ZUFsdGVybmF0ZSkKLSAgICAgICAgICAgIHZhbGlkUHJpbWl0aXZlID0gdHJ1ZTsKLSAgICAgICAg
YnJlYWs7CiAgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdE1hcnF1ZWVSZXBldGl0aW9uOgogICAg
ICAgICBpZiAoaWQgPT0gQ1NTVmFsdWVJbmZpbml0ZSkKICAgICAgICAgICAgIHZhbGlkUHJpbWl0
aXZlID0gdHJ1ZTsKQEAgLTE3NzMsMjMgKzIwMzgsNiBAQCBib29sIENTU1BhcnNlcjo6cGFyc2VW
YWx1ZShpbnQgcHJvcElkLCBib29sIGltcG9ydGFudCkKICAgICAgICAgaWYgKGNzc1JlZ2lvbnNF
bmFibGVkKCkgJiYgKGlkID09IENTU1ZhbHVlQXV0byB8fCBpZCA9PSBDU1NWYWx1ZUJyZWFrKSkK
ICAgICAgICAgICAgIHZhbGlkUHJpbWl0aXZlID0gdHJ1ZTsKICAgICAgICAgYnJlYWs7Ci0KLSAg
ICBjYXNlIENTU1Byb3BlcnR5V2Via2l0VXNlckRyYWc6IC8vIGF1dG8gfCBub25lIHwgZWxlbWVu
dAotICAgICAgICBpZiAoaWQgPT0gQ1NTVmFsdWVBdXRvIHx8IGlkID09IENTU1ZhbHVlTm9uZSB8
fCBpZCA9PSBDU1NWYWx1ZUVsZW1lbnQpCi0gICAgICAgICAgICB2YWxpZFByaW1pdGl2ZSA9IHRy
dWU7Ci0gICAgICAgIGJyZWFrOwotICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRVc2VyTW9kaWZ5
OiAvLyByZWFkLW9ubHkgfCByZWFkLXdyaXRlCi0gICAgICAgIGlmIChpZCA9PSBDU1NWYWx1ZVJl
YWRPbmx5IHx8IGlkID09IENTU1ZhbHVlUmVhZFdyaXRlIHx8IGlkID09IENTU1ZhbHVlUmVhZFdy
aXRlUGxhaW50ZXh0T25seSkKLSAgICAgICAgICAgIHZhbGlkUHJpbWl0aXZlID0gdHJ1ZTsKLSAg
ICAgICAgYnJlYWs7Ci0gICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdFVzZXJTZWxlY3Q6IC8vIGF1
dG8gfCBub25lIHwgdGV4dAotICAgICAgICBpZiAoaWQgPT0gQ1NTVmFsdWVBdXRvIHx8IGlkID09
IENTU1ZhbHVlTm9uZSB8fCBpZCA9PSBDU1NWYWx1ZVRleHQpCi0gICAgICAgICAgICB2YWxpZFBy
aW1pdGl2ZSA9IHRydWU7Ci0gICAgICAgIGJyZWFrOwotICAgIGNhc2UgQ1NTUHJvcGVydHlUZXh0
T3ZlcmZsb3c6IC8vIGNsaXAgfCBlbGxpcHNpcwotICAgICAgICBpZiAoaWQgPT0gQ1NTVmFsdWVD
bGlwIHx8IGlkID09IENTU1ZhbHVlRWxsaXBzaXMpCi0gICAgICAgICAgICB2YWxpZFByaW1pdGl2
ZSA9IHRydWU7Ci0gICAgICAgIGJyZWFrOwogICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRUcmFu
c2Zvcm06CiAgICAgICAgIGlmIChpZCA9PSBDU1NWYWx1ZU5vbmUpCiAgICAgICAgICAgICB2YWxp
ZFByaW1pdGl2ZSA9IHRydWU7CkBAIC0xODIwLDE4ICsyMDY4LDYgQEAgYm9vbCBDU1NQYXJzZXI6
OnBhcnNlVmFsdWUoaW50IHByb3BJZCwgYm9vbCBpbXBvcnRhbnQpCiAgICAgICAgIH0KICAgICAg
ICAgcmV0dXJuIGZhbHNlOwogICAgIH0KLSAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0VHJhbnNm
b3JtU3R5bGU6Ci0gICAgICAgIGlmICh2YWx1ZS0+aWQgPT0gQ1NTVmFsdWVGbGF0IHx8IHZhbHVl
LT5pZCA9PSBDU1NWYWx1ZVByZXNlcnZlM2QpCi0gICAgICAgICAgICB2YWxpZFByaW1pdGl2ZSA9
IHRydWU7Ci0gICAgICAgIGJyZWFrOwotICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRCYWNrZmFj
ZVZpc2liaWxpdHk6Ci0gICAgICAgIGlmICh2YWx1ZS0+aWQgPT0gQ1NTVmFsdWVWaXNpYmxlIHx8
IHZhbHVlLT5pZCA9PSBDU1NWYWx1ZUhpZGRlbikKLSAgICAgICAgICAgIHZhbGlkUHJpbWl0aXZl
ID0gdHJ1ZTsKLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdFByaW50
Q29sb3JBZGp1c3Q6Ci0gICAgICAgIGlmICh2YWx1ZS0+aWQgPT0gQ1NTVmFsdWVFeGFjdCB8fCB2
YWx1ZS0+aWQgPT0gQ1NTVmFsdWVFY29ub215KQotICAgICAgICAgICAgdmFsaWRQcmltaXRpdmUg
PSB0cnVlOwotICAgICAgICBicmVhazsKICAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0UGVyc3Bl
Y3RpdmU6CiAgICAgICAgIGlmIChpZCA9PSBDU1NWYWx1ZU5vbmUpCiAgICAgICAgICAgICB2YWxp
ZFByaW1pdGl2ZSA9IHRydWU7CkBAIC0xOTA5LDMyICsyMTQ1LDYgQEAgYm9vbCBDU1NQYXJzZXI6
OnBhcnNlVmFsdWUoaW50IHByb3BJZCwgYm9vbCBpbXBvcnRhbnQpCiAgICAgICAgIH0KICAgICAg
ICAgcmV0dXJuIGZhbHNlOwogICAgIH0KLSAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0TWFyZ2lu
QmVmb3JlQ29sbGFwc2U6Ci0gICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdE1hcmdpbkFmdGVyQ29s
bGFwc2U6Ci0gICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdE1hcmdpblRvcENvbGxhcHNlOgotICAg
IGNhc2UgQ1NTUHJvcGVydHlXZWJraXRNYXJnaW5Cb3R0b21Db2xsYXBzZToKLSAgICAgICAgaWYg
KGlkID09IENTU1ZhbHVlQ29sbGFwc2UgfHwgaWQgPT0gQ1NTVmFsdWVTZXBhcmF0ZSB8fCBpZCA9
PSBDU1NWYWx1ZURpc2NhcmQpCi0gICAgICAgICAgICB2YWxpZFByaW1pdGl2ZSA9IHRydWU7Ci0g
ICAgICAgIGJyZWFrOwotICAgIGNhc2UgQ1NTUHJvcGVydHlUZXh0TGluZVRocm91Z2hNb2RlOgot
ICAgIGNhc2UgQ1NTUHJvcGVydHlUZXh0T3ZlcmxpbmVNb2RlOgotICAgIGNhc2UgQ1NTUHJvcGVy
dHlUZXh0VW5kZXJsaW5lTW9kZToKLSAgICAgICAgaWYgKGlkID09IENTU1ZhbHVlQ29udGludW91
cyB8fCBpZCA9PSBDU1NWYWx1ZVNraXBXaGl0ZVNwYWNlKQotICAgICAgICAgICAgdmFsaWRQcmlt
aXRpdmUgPSB0cnVlOwotICAgICAgICBicmVhazsKLSAgICBjYXNlIENTU1Byb3BlcnR5VGV4dExp
bmVUaHJvdWdoU3R5bGU6Ci0gICAgY2FzZSBDU1NQcm9wZXJ0eVRleHRPdmVybGluZVN0eWxlOgot
ICAgIGNhc2UgQ1NTUHJvcGVydHlUZXh0VW5kZXJsaW5lU3R5bGU6Ci0gICAgICAgIGlmIChpZCA9
PSBDU1NWYWx1ZU5vbmUgfHwgaWQgPT0gQ1NTVmFsdWVTb2xpZCB8fCBpZCA9PSBDU1NWYWx1ZURv
dWJsZSB8fAotICAgICAgICAgICAgaWQgPT0gQ1NTVmFsdWVEYXNoZWQgfHwgaWQgPT0gQ1NTVmFs
dWVEb3REYXNoIHx8IGlkID09IENTU1ZhbHVlRG90RG90RGFzaCB8fAotICAgICAgICAgICAgaWQg
PT0gQ1NTVmFsdWVXYXZlKQotICAgICAgICAgICAgdmFsaWRQcmltaXRpdmUgPSB0cnVlOwotICAg
ICAgICBicmVhazsKLSAgICBjYXNlIENTU1Byb3BlcnR5VGV4dFJlbmRlcmluZzogLy8gYXV0byB8
IG9wdGltaXplU3BlZWQgfCBvcHRpbWl6ZUxlZ2liaWxpdHkgfCBnZW9tZXRyaWNQcmVjaXNpb24K
LSAgICAgICAgaWYgKGlkID09IENTU1ZhbHVlQXV0byB8fCBpZCA9PSBDU1NWYWx1ZU9wdGltaXpl
c3BlZWQgfHwgaWQgPT0gQ1NTVmFsdWVPcHRpbWl6ZWxlZ2liaWxpdHkKLSAgICAgICAgICAgIHx8
IGlkID09IENTU1ZhbHVlR2VvbWV0cmljcHJlY2lzaW9uKQotICAgICAgICAgICAgdmFsaWRQcmlt
aXRpdmUgPSB0cnVlOwotICAgICAgICBicmVhazsKICAgICBjYXNlIENTU1Byb3BlcnR5VGV4dExp
bmVUaHJvdWdoV2lkdGg6CiAgICAgY2FzZSBDU1NQcm9wZXJ0eVRleHRPdmVybGluZVdpZHRoOgog
ICAgIGNhc2UgQ1NTUHJvcGVydHlUZXh0VW5kZXJsaW5lV2lkdGg6CkBAIC0xOTQ0LDEwICsyMTU0
LDYgQEAgYm9vbCBDU1NQYXJzZXI6OnBhcnNlVmFsdWUoaW50IHByb3BJZCwgYm9vbCBpbXBvcnRh
bnQpCiAgICAgICAgIGVsc2UKICAgICAgICAgICAgIHZhbGlkUHJpbWl0aXZlID0gIWlkICYmIHZh
bGlkVW5pdCh2YWx1ZSwgRk51bWJlciB8IEZMZW5ndGggfCBGUGVyY2VudCwgbV9zdHJpY3QpOwog
ICAgICAgICBicmVhazsKLSAgICBjYXNlIENTU1Byb3BlcnR5UmVzaXplOiAvLyBub25lIHwgYm90
aCB8IGhvcml6b250YWwgfCB2ZXJ0aWNhbCB8IGF1dG8KLSAgICAgICAgaWYgKGlkID09IENTU1Zh
bHVlTm9uZSB8fCBpZCA9PSBDU1NWYWx1ZUJvdGggfHwgaWQgPT0gQ1NTVmFsdWVIb3Jpem9udGFs
IHx8IGlkID09IENTU1ZhbHVlVmVydGljYWwgfHwgaWQgPT0gQ1NTVmFsdWVBdXRvKQotICAgICAg
ICAgICAgdmFsaWRQcmltaXRpdmUgPSB0cnVlOwotICAgICAgICBicmVhazsKICAgICBjYXNlIENT
U1Byb3BlcnR5V2Via2l0Q29sdW1uQ291bnQ6CiAgICAgICAgIGlmIChpZCA9PSBDU1NWYWx1ZUF1
dG8pCiAgICAgICAgICAgICB2YWxpZFByaW1pdGl2ZSA9IHRydWU7CkBAIC0xOTc2LDE3ICsyMTgy
LDYgQEAgYm9vbCBDU1NQYXJzZXI6OnBhcnNlVmFsdWUoaW50IHByb3BJZCwgYm9vbCBpbXBvcnRh
bnQpCiAgICAgICAgIGVsc2UgLy8gQWx3YXlzIHBhcnNlIHRoaXMgcHJvcGVydHkgaW4gc3RyaWN0
IG1vZGUsIHNpbmNlIGl0IHdvdWxkIGJlIGFtYmlndW91cyBvdGhlcndpc2Ugd2hlbiB1c2VkIGlu
IHRoZSAnY29sdW1ucycgc2hvcnRoYW5kIHByb3BlcnR5LgogICAgICAgICAgICAgdmFsaWRQcmlt
aXRpdmUgPSB2YWxpZFVuaXQodmFsdWUsIEZMZW5ndGgsIHRydWUpOwogICAgICAgICBicmVhazsK
LSAgICBjYXNlIENTU1Byb3BlcnR5UG9pbnRlckV2ZW50czoKLSAgICAgICAgLy8gbm9uZSB8IHZp
c2libGVQYWludGVkIHwgdmlzaWJsZUZpbGwgfCB2aXNpYmxlU3Ryb2tlIHwgdmlzaWJsZSB8Ci0g
ICAgICAgIC8vIHBhaW50ZWQgfCBmaWxsIHwgc3Ryb2tlIHwgYXV0byB8IGFsbCB8IGluaGVyaXQK
LSAgICAgICAgaWYgKGlkID09IENTU1ZhbHVlVmlzaWJsZSB8fCBpZCA9PSBDU1NWYWx1ZU5vbmUg
fHwgaWQgPT0gQ1NTVmFsdWVBbGwgfHwgaWQgPT0gQ1NTVmFsdWVBdXRvIHx8Ci0gICAgICAgICAg
ICAoaWQgPj0gQ1NTVmFsdWVWaXNpYmxlcGFpbnRlZCAmJiBpZCA8PSBDU1NWYWx1ZVN0cm9rZSkp
Ci0gICAgICAgICAgICB2YWxpZFByaW1pdGl2ZSA9IHRydWU7Ci0gICAgICAgIGJyZWFrOwotICAg
IGNhc2UgQ1NTUHJvcGVydHlJbWFnZVJlbmRlcmluZzogLy8gYXV0byB8IG9wdGltaXplQ29udHJh
c3QKLSAgICAgICAgaWYgKGlkID09IENTU1ZhbHVlQXV0byB8fCBpZCA9PSBDU1NWYWx1ZVdlYmtp
dE9wdGltaXplQ29udHJhc3QpCi0gICAgICAgICAgICB2YWxpZFByaW1pdGl2ZSA9IHRydWU7Ci0g
ICAgICAgIGJyZWFrOwogICAgIC8vIEVuZCBvZiBDU1MzIHByb3BlcnRpZXMKIAogICAgIC8vIEFw
cGxlIHNwZWNpZmljIHByb3BlcnRpZXMuICBUaGVzZSB3aWxsIG5ldmVyIGJlIHN0YW5kYXJkaXpl
ZCBhbmQgYXJlIHB1cmVseSB0bwpAQCAtMTk5Niw0NCArMjE5MSwxNiBAQCBib29sIENTU1BhcnNl
cjo6cGFyc2VWYWx1ZShpbnQgcHJvcElkLCBib29sIGltcG9ydGFudCkKICAgICAgICAgLy8gV2hl
biBzcGVjaWZ5aW5nIGVpdGhlciB0eXBlIG9mIHVuaXQsIHJlcXVpcmUgbm9uLW5lZ2F0aXZlIGlu
dGVnZXJzCiAgICAgICAgIHZhbGlkUHJpbWl0aXZlID0gKCFpZCAmJiAodmFsdWUtPnVuaXQgPT0g
Q1NTUHJpbWl0aXZlVmFsdWU6OkNTU19QRVJDRU5UQUdFIHx8IHZhbHVlLT5mVmFsdWUpICYmIHZh
bGlkVW5pdCh2YWx1ZSwgRkludGVnZXIgfCBGUGVyY2VudCB8IEZOb25OZWcsIGZhbHNlKSk7CiAg
ICAgICAgIGJyZWFrOwotICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRUZXh0U2l6ZUFkanVzdDoK
LSAgICAgICAgaWYgKGlkID09IENTU1ZhbHVlQXV0byB8fCBpZCA9PSBDU1NWYWx1ZU5vbmUpCi0g
ICAgICAgICAgICB2YWxpZFByaW1pdGl2ZSA9IHRydWU7Ci0gICAgICAgIGJyZWFrOwotICAgIGNh
c2UgQ1NTUHJvcGVydHlXZWJraXRSdGxPcmRlcmluZzoKLSAgICAgICAgaWYgKGlkID09IENTU1Zh
bHVlTG9naWNhbCB8fCBpZCA9PSBDU1NWYWx1ZVZpc3VhbCkKLSAgICAgICAgICAgIHZhbGlkUHJp
bWl0aXZlID0gdHJ1ZTsKLSAgICAgICAgYnJlYWs7CiAKICAgICBjYXNlIENTU1Byb3BlcnR5V2Vi
a2l0Rm9udFNpemVEZWx0YTogICAgICAgICAgIC8vIDxsZW5ndGg+CiAgICAgICAgIHZhbGlkUHJp
bWl0aXZlID0gdmFsaWRVbml0KHZhbHVlLCBGTGVuZ3RoLCBtX3N0cmljdCk7CiAgICAgICAgIGJy
ZWFrOwogCi0gICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdE5ic3BNb2RlOiAgICAgLy8gbm9ybWFs
IHwgc3BhY2UKLSAgICAgICAgaWYgKGlkID09IENTU1ZhbHVlTm9ybWFsIHx8IGlkID09IENTU1Zh
bHVlU3BhY2UpCi0gICAgICAgICAgICB2YWxpZFByaW1pdGl2ZSA9IHRydWU7Ci0gICAgICAgIGJy
ZWFrOwotCi0gICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdExpbmVCcmVhazogICAvLyBub3JtYWwg
fCBhZnRlci13aGl0ZS1zcGFjZQotICAgICAgICBpZiAoaWQgPT0gQ1NTVmFsdWVOb3JtYWwgfHwg
aWQgPT0gQ1NTVmFsdWVBZnRlcldoaXRlU3BhY2UpCi0gICAgICAgICAgICB2YWxpZFByaW1pdGl2
ZSA9IHRydWU7Ci0gICAgICAgIGJyZWFrOwotCi0gICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdE1h
dGNoTmVhcmVzdE1haWxCbG9ja3F1b3RlQ29sb3I6ICAgLy8gbm9ybWFsIHwgbWF0Y2gKLSAgICAg
ICAgaWYgKGlkID09IENTU1ZhbHVlTm9ybWFsIHx8IGlkID09IENTU1ZhbHVlTWF0Y2gpCi0gICAg
ICAgICAgICB2YWxpZFByaW1pdGl2ZSA9IHRydWU7Ci0gICAgICAgIGJyZWFrOwotCiAgICAgY2Fz
ZSBDU1NQcm9wZXJ0eVdlYmtpdEhpZ2hsaWdodDoKICAgICAgICAgaWYgKGlkID09IENTU1ZhbHVl
Tm9uZSB8fCB2YWx1ZS0+dW5pdCA9PSBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX1NUUklORykKICAg
ICAgICAgICAgIHZhbGlkUHJpbWl0aXZlID0gdHJ1ZTsKICAgICAgICAgYnJlYWs7CiAKLSAgICBj
YXNlIENTU1Byb3BlcnR5V2Via2l0SHlwaGVuczoKLSAgICAgICAgaWYgKGlkID09IENTU1ZhbHVl
Tm9uZSB8fCBpZCA9PSBDU1NWYWx1ZU1hbnVhbCB8fCBpZCA9PSBDU1NWYWx1ZUF1dG8pCi0gICAg
ICAgICAgICB2YWxpZFByaW1pdGl2ZSA9IHRydWU7Ci0gICAgICAgIGJyZWFrOwotCiAgICAgY2Fz
ZSBDU1NQcm9wZXJ0eVdlYmtpdEh5cGhlbmF0ZUNoYXJhY3RlcjoKICAgICAgICAgaWYgKGlkID09
IENTU1ZhbHVlQXV0byB8fCB2YWx1ZS0+dW5pdCA9PSBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX1NU
UklORykKICAgICAgICAgICAgIHZhbGlkUHJpbWl0aXZlID0gdHJ1ZTsKQEAgLTIwNjEsMzYgKzIy
MjgsMTEgQEAgYm9vbCBDU1NQYXJzZXI6OnBhcnNlVmFsdWUoaW50IHByb3BJZCwgYm9vbCBpbXBv
cnRhbnQpCiAgICAgICAgICAgICB9CiAgICAgICAgIH0KICAgICAgICAgYnJlYWs7Ci0gICAgY2Fz
ZSBDU1NQcm9wZXJ0eVdlYmtpdExpbmVTbmFwOgotICAgICAgICBpZiAoaWQgPT0gQ1NTVmFsdWVO
b25lIHx8IGlkID09IENTU1ZhbHVlQmFzZWxpbmUgfHwgaWQgPT0gQ1NTVmFsdWVDb250YWluKQot
ICAgICAgICAgICAgdmFsaWRQcmltaXRpdmUgPSB0cnVlOwotICAgICAgICBicmVhazsKLSAgICBj
YXNlIENTU1Byb3BlcnR5V2Via2l0TGluZUFsaWduOgotICAgICAgICBpZiAoaWQgPT0gQ1NTVmFs
dWVOb25lIHx8IGlkID09IENTU1ZhbHVlRWRnZXMpCi0gICAgICAgICAgICB2YWxpZFByaW1pdGl2
ZSA9IHRydWU7Ci0gICAgICAgIGJyZWFrOwogICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRMb2Nh
bGU6CiAgICAgICAgIGlmIChpZCA9PSBDU1NWYWx1ZUF1dG8gfHwgdmFsdWUtPnVuaXQgPT0gQ1NT
UHJpbWl0aXZlVmFsdWU6OkNTU19TVFJJTkcpCiAgICAgICAgICAgICB2YWxpZFByaW1pdGl2ZSA9
IHRydWU7CiAgICAgICAgIGJyZWFrOwogCi0gICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdEJvcmRl
ckZpdDoKLSAgICAgICAgaWYgKGlkID09IENTU1ZhbHVlQm9yZGVyIHx8IGlkID09IENTU1ZhbHVl
TGluZXMpCi0gICAgICAgICAgICB2YWxpZFByaW1pdGl2ZSA9IHRydWU7Ci0gICAgICAgIGJyZWFr
OwotCi0gICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdFRleHRTZWN1cml0eToKLSAgICAgICAgLy8g
ZGlzYyB8IGNpcmNsZSB8IHNxdWFyZSB8IG5vbmUgfCBpbmhlcml0Ci0gICAgICAgIGlmIChpZCA9
PSBDU1NWYWx1ZURpc2MgfHwgaWQgPT0gQ1NTVmFsdWVDaXJjbGUgfHwgaWQgPT0gQ1NTVmFsdWVT
cXVhcmV8fCBpZCA9PSBDU1NWYWx1ZU5vbmUpCi0gICAgICAgICAgICB2YWxpZFByaW1pdGl2ZSA9
IHRydWU7Ci0gICAgICAgIGJyZWFrOwotCi0gICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdEZvbnRT
bW9vdGhpbmc6Ci0gICAgICAgIGlmIChpZCA9PSBDU1NWYWx1ZUF1dG8gfHwgaWQgPT0gQ1NTVmFs
dWVOb25lCi0gICAgICAgICAgICB8fCBpZCA9PSBDU1NWYWx1ZUFudGlhbGlhc2VkIHx8IGlkID09
IENTU1ZhbHVlU3VicGl4ZWxBbnRpYWxpYXNlZCkKLSAgICAgICAgICAgIHZhbGlkUHJpbWl0aXZl
ID0gdHJ1ZTsKLSAgICAgICAgYnJlYWs7Ci0KICNpZiBFTkFCTEUoREFTSEJPQVJEX1NVUFBPUlQp
CiAgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdERhc2hib2FyZFJlZ2lvbjogLy8gPGRhc2hib2Fy
ZC1yZWdpb24+IHwgPGRhc2hib2FyZC1yZWdpb24+CiAgICAgICAgIGlmICh2YWx1ZS0+dW5pdCA9
PSBDU1NQYXJzZXJWYWx1ZTo6RnVuY3Rpb24gfHwgaWQgPT0gQ1NTVmFsdWVOb25lKQpAQCAtMjEx
MiwxMyArMjI1NCw2IEBAIGJvb2wgQ1NTUGFyc2VyOjpwYXJzZVZhbHVlKGludCBwcm9wSWQsIGJv
b2wgaW1wb3J0YW50KQogICAgICAgICBicmVhazsKICNlbmRpZgogCi0jaWYgRU5BQkxFKE9WRVJG
TE9XX1NDUk9MTElORykKLSAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0T3ZlcmZsb3dTY3JvbGxp
bmc6Ci0gICAgICAgIGlmIChpZCA9PSBDU1NWYWx1ZUF1dG8gfHwgaWQgPT0gQ1NTVmFsdWVUb3Vj
aCkKLSAgICAgICAgICAgIHZhbGlkUHJpbWl0aXZlID0gdHJ1ZTsKLSAgICAgICAgYnJlYWs7Ci0j
ZW5kaWYKLQogICAgICAgICAvKiBzaG9ydGhhbmQgcHJvcGVydGllcyAqLwogICAgIGNhc2UgQ1NT
UHJvcGVydHlCYWNrZ3JvdW5kOiB7CiAgICAgICAgIC8vIFBvc2l0aW9uIG11c3QgY29tZSBiZWZv
cmUgY29sb3IgaW4gdGhpcyBhcnJheSBiZWNhdXNlIGEgcGxhaW4gb2xkICIwIiBpcyBhIGxlZ2Fs
IGNvbG9yCkBAIC0yMjg4LDI2ICsyNDIzLDExIEBAIGJvb2wgQ1NTUGFyc2VyOjpwYXJzZVZhbHVl
KGludCBwcm9wSWQsIGJvb2wgaW1wb3J0YW50KQogICAgIGNhc2UgQ1NTUHJvcGVydHlUZXh0VW5k
ZXJsaW5lOgogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgLy8gQ1NTIFRleHQgTGF5b3V0IE1v
ZHVsZSBMZXZlbCAzOiBWZXJ0aWNhbCB3cml0aW5nIHN1cHBvcnQKLSAgICBjYXNlIENTU1Byb3Bl
cnR5V2Via2l0V3JpdGluZ01vZGU6Ci0gICAgICAgIGlmIChpZCA+PSBDU1NWYWx1ZUhvcml6b250
YWxUYiAmJiBpZCA8PSBDU1NWYWx1ZUhvcml6b250YWxCdCkKLSAgICAgICAgICAgIHZhbGlkUHJp
bWl0aXZlID0gdHJ1ZTsKLSAgICAgICAgYnJlYWs7Ci0KLSAgICBjYXNlIENTU1Byb3BlcnR5V2Vi
a2l0VGV4dENvbWJpbmU6Ci0gICAgICAgIGlmIChpZCA9PSBDU1NWYWx1ZU5vbmUgfHwgaWQgPT0g
Q1NTVmFsdWVIb3Jpem9udGFsKQotICAgICAgICAgICAgdmFsaWRQcmltaXRpdmUgPSB0cnVlOwot
ICAgICAgICBicmVhazsKLQogICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRUZXh0RW1waGFzaXM6
IHsKICAgICAgICAgY29uc3QgaW50IHByb3BlcnRpZXNbXSA9IHsgQ1NTUHJvcGVydHlXZWJraXRU
ZXh0RW1waGFzaXNTdHlsZSwgQ1NTUHJvcGVydHlXZWJraXRUZXh0RW1waGFzaXNDb2xvciB9Owog
ICAgICAgICByZXR1cm4gcGFyc2VTaG9ydGhhbmQocHJvcElkLCBwcm9wZXJ0aWVzLCBXVEZfQVJS
QVlfTEVOR1RIKHByb3BlcnRpZXMpLCBpbXBvcnRhbnQpOwogICAgIH0KIAotICAgIGNhc2UgQ1NT
UHJvcGVydHlXZWJraXRUZXh0RW1waGFzaXNQb3NpdGlvbjoKLSAgICAgICAgaWYgKGlkID09IENT
U1ZhbHVlT3ZlciB8fCBpZCA9PSBDU1NWYWx1ZVVuZGVyKQotICAgICAgICAgICAgdmFsaWRQcmlt
aXRpdmUgPSB0cnVlOwotICAgICAgICBicmVhazsKLQogICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJr
aXRUZXh0RW1waGFzaXNTdHlsZToKICAgICAgICAgcmV0dXJuIHBhcnNlVGV4dEVtcGhhc2lzU3R5
bGUoaW1wb3J0YW50KTsKIApAQCAtMjMzMCwxMSArMjQ1MCw2IEBAIGJvb2wgQ1NTUGFyc2VyOjpw
YXJzZVZhbHVlKGludCBwcm9wSWQsIGJvb2wgaW1wb3J0YW50KQogICAgICAgICAgICAgcmV0dXJu
IHBhcnNlRm9udEZlYXR1cmVTZXR0aW5ncyhpbXBvcnRhbnQpOwogICAgICAgICBicmVhazsKIAot
ICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRGb250S2VybmluZzoKLSAgICAgICAgaWYgKGlkID09
IENTU1ZhbHVlQXV0byB8fCBpZCA9PSBDU1NWYWx1ZU5vcm1hbCB8fCBpZCA9PSBDU1NWYWx1ZU5v
bmUpCi0gICAgICAgICAgICB2YWxpZFByaW1pdGl2ZSA9IHRydWU7Ci0gICAgICAgIGJyZWFrOwot
CiAgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdEZvbnRWYXJpYW50TGlnYXR1cmVzOgogICAgICAg
ICBpZiAoaWQgPT0gQ1NTVmFsdWVOb3JtYWwpCiAgICAgICAgICAgICB2YWxpZFByaW1pdGl2ZSA9
IHRydWU7CkBAIC0yMzQ5LDE1ICsyNDY0LDYgQEAgYm9vbCBDU1NQYXJzZXI6OnBhcnNlVmFsdWUo
aW50IHByb3BJZCwgYm9vbCBpbXBvcnRhbnQpCiAgICAgICAgIGVsc2UgaWYgKHZhbHVlLT51bml0
ID09IENTU1BhcnNlclZhbHVlOjpGdW5jdGlvbikKICAgICAgICAgICAgIHJldHVybiBwYXJzZVdy
YXBTaGFwZSgocHJvcElkID09IENTU1Byb3BlcnR5V2Via2l0V3JhcFNoYXBlSW5zaWRlKSwgaW1w
b3J0YW50KTsKICAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdFdyYXBG
bG93OgotICAgICAgICBpZiAoaWQgPT0gQ1NTVmFsdWVBdXRvIHx8IGlkID09IENTU1ZhbHVlQm90
aCB8fCBpZCA9PSBDU1NWYWx1ZUxlZnQgfHwgaWQgPT0gQ1NTVmFsdWVSaWdodCB8fCBpZCA9PSBD
U1NWYWx1ZU1heGltdW0gfHwgaWQgPT0gQ1NTVmFsdWVDbGVhcikKLSAgICAgICAgICAgIHZhbGlk
UHJpbWl0aXZlID0gdHJ1ZTsKLSAgICAgICAgYnJlYWs7Ci0KLSAgICBjYXNlIENTU1Byb3BlcnR5
V2Via2l0V3JhcFRocm91Z2g6Ci0gICAgICAgIGlmIChpZCA9PSBDU1NWYWx1ZVdyYXAgfHwgaWQg
PT0gQ1NTVmFsdWVOb25lKQotICAgICAgICAgICAgdmFsaWRQcmltaXRpdmUgPSB0cnVlOwotICAg
ICAgICBicmVhazsKICAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0V3JhcE1hcmdpbjoKICAgICBj
YXNlIENTU1Byb3BlcnR5V2Via2l0V3JhcFBhZGRpbmc6CiAgICAgICAgIHZhbGlkUHJpbWl0aXZl
ID0gKCFpZCAmJiB2YWxpZFVuaXQodmFsdWUsIEZMZW5ndGggfCBGTm9uTmVnLCBtX3N0cmljdCkp
OwpAQCAtMjM2Niw2ICsyNDcyLDk2IEBAIGJvb2wgQ1NTUGFyc2VyOjpwYXJzZVZhbHVlKGludCBw
cm9wSWQsIGJvb2wgaW1wb3J0YW50KQogICAgICAgICBjb25zdCBpbnQgcHJvcGVydGllc1tdID0g
eyBDU1NQcm9wZXJ0eVdlYmtpdFdyYXBGbG93LCBDU1NQcm9wZXJ0eVdlYmtpdFdyYXBNYXJnaW4s
IENTU1Byb3BlcnR5V2Via2l0V3JhcFBhZGRpbmcgfTsKICAgICAgICAgcmV0dXJuIHBhcnNlU2hv
cnRoYW5kKHByb3BJZCwgcHJvcGVydGllcywgV1RGX0FSUkFZX0xFTkdUSChwcm9wZXJ0aWVzKSwg
aW1wb3J0YW50KTsKICAgICB9CisgICAgY2FzZSBDU1NQcm9wZXJ0eUJvcmRlckJvdHRvbVN0eWxl
OgorICAgIGNhc2UgQ1NTUHJvcGVydHlCb3JkZXJDb2xsYXBzZToKKyAgICBjYXNlIENTU1Byb3Bl
cnR5Qm9yZGVyTGVmdFN0eWxlOgorICAgIGNhc2UgQ1NTUHJvcGVydHlCb3JkZXJSaWdodFN0eWxl
OgorICAgIGNhc2UgQ1NTUHJvcGVydHlCb3JkZXJUb3BTdHlsZToKKyAgICBjYXNlIENTU1Byb3Bl
cnR5Qm94U2l6aW5nOgorICAgIGNhc2UgQ1NTUHJvcGVydHlDYXB0aW9uU2lkZToKKyAgICBjYXNl
IENTU1Byb3BlcnR5Q2xlYXI6CisgICAgY2FzZSBDU1NQcm9wZXJ0eURpcmVjdGlvbjoKKyAgICBj
YXNlIENTU1Byb3BlcnR5RGlzcGxheToKKyAgICBjYXNlIENTU1Byb3BlcnR5RW1wdHlDZWxsczoK
KyAgICBjYXNlIENTU1Byb3BlcnR5RmxvYXQ6CisgICAgY2FzZSBDU1NQcm9wZXJ0eUZvbnRTdHls
ZToKKyAgICBjYXNlIENTU1Byb3BlcnR5SW1hZ2VSZW5kZXJpbmc6CisgICAgY2FzZSBDU1NQcm9w
ZXJ0eUxpc3RTdHlsZVBvc2l0aW9uOgorICAgIGNhc2UgQ1NTUHJvcGVydHlMaXN0U3R5bGVUeXBl
OgorICAgIGNhc2UgQ1NTUHJvcGVydHlPdXRsaW5lU3R5bGU6CisgICAgY2FzZSBDU1NQcm9wZXJ0
eU92ZXJmbG93WDoKKyAgICBjYXNlIENTU1Byb3BlcnR5T3ZlcmZsb3dZOgorICAgIGNhc2UgQ1NT
UHJvcGVydHlQb2ludGVyRXZlbnRzOgorICAgIGNhc2UgQ1NTUHJvcGVydHlQb3NpdGlvbjoKKyAg
ICBjYXNlIENTU1Byb3BlcnR5UmVzaXplOgorICAgIGNhc2UgQ1NTUHJvcGVydHlTcGVhazoKKyAg
ICBjYXNlIENTU1Byb3BlcnR5VGFibGVMYXlvdXQ6CisgICAgY2FzZSBDU1NQcm9wZXJ0eVRleHRM
aW5lVGhyb3VnaE1vZGU6CisgICAgY2FzZSBDU1NQcm9wZXJ0eVRleHRMaW5lVGhyb3VnaFN0eWxl
OgorICAgIGNhc2UgQ1NTUHJvcGVydHlUZXh0T3ZlcmZsb3c6CisgICAgY2FzZSBDU1NQcm9wZXJ0
eVRleHRPdmVybGluZU1vZGU6CisgICAgY2FzZSBDU1NQcm9wZXJ0eVRleHRPdmVybGluZVN0eWxl
OgorICAgIGNhc2UgQ1NTUHJvcGVydHlUZXh0UmVuZGVyaW5nOgorICAgIGNhc2UgQ1NTUHJvcGVy
dHlUZXh0VHJhbnNmb3JtOgorICAgIGNhc2UgQ1NTUHJvcGVydHlUZXh0VW5kZXJsaW5lTW9kZToK
KyAgICBjYXNlIENTU1Byb3BlcnR5VGV4dFVuZGVybGluZVN0eWxlOgorICAgIGNhc2UgQ1NTUHJv
cGVydHlWaXNpYmlsaXR5OgorICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRBcHBlYXJhbmNlOgor
ICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRCYWNrZmFjZVZpc2liaWxpdHk6CisgICAgY2FzZSBD
U1NQcm9wZXJ0eVdlYmtpdEJvcmRlckFmdGVyU3R5bGU6CisgICAgY2FzZSBDU1NQcm9wZXJ0eVdl
YmtpdEJvcmRlckJlZm9yZVN0eWxlOgorICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRCb3JkZXJF
bmRTdHlsZToKKyAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0Qm9yZGVyRml0OgorICAgIGNhc2Ug
Q1NTUHJvcGVydHlXZWJraXRCb3JkZXJTdGFydFN0eWxlOgorICAgIGNhc2UgQ1NTUHJvcGVydHlX
ZWJraXRCb3hBbGlnbjoKKyAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0Qm94RGlyZWN0aW9uOgor
ICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRCb3hMaW5lczoKKyAgICBjYXNlIENTU1Byb3BlcnR5
V2Via2l0Qm94T3JpZW50OgorICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRCb3hQYWNrOgorICAg
IGNhc2UgQ1NTUHJvcGVydHlXZWJraXRDb2xvckNvcnJlY3Rpb246CisgICAgY2FzZSBDU1NQcm9w
ZXJ0eVdlYmtpdENvbHVtblJ1bGVTdHlsZToKKyAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0Rmxl
eEFsaWduOgorICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRGbGV4RGlyZWN0aW9uOgorICAgIGNh
c2UgQ1NTUHJvcGVydHlXZWJraXRGbGV4SXRlbUFsaWduOgorICAgIGNhc2UgQ1NTUHJvcGVydHlX
ZWJraXRGbGV4TGluZVBhY2s6CisgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdEZsZXhQYWNrOgor
ICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRGbGV4V3JhcDoKKyAgICBjYXNlIENTU1Byb3BlcnR5
V2Via2l0Rm9udEtlcm5pbmc6CisgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdEZvbnRTbW9vdGhp
bmc6CisgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdEh5cGhlbnM6CisgICAgY2FzZSBDU1NQcm9w
ZXJ0eVdlYmtpdExpbmVBbGlnbjoKKyAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0TGluZUJyZWFr
OgorICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRMaW5lU25hcDoKKyAgICBjYXNlIENTU1Byb3Bl
cnR5V2Via2l0TWFyZ2luQWZ0ZXJDb2xsYXBzZToKKyAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0
TWFyZ2luQmVmb3JlQ29sbGFwc2U6CisgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdE1hcmdpbkJv
dHRvbUNvbGxhcHNlOgorICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRNYXJnaW5Ub3BDb2xsYXBz
ZToKKyAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0TWFycXVlZURpcmVjdGlvbjoKKyAgICBjYXNl
IENTU1Byb3BlcnR5V2Via2l0TWFycXVlZVN0eWxlOgorICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJr
aXRNYXRjaE5lYXJlc3RNYWlsQmxvY2txdW90ZUNvbG9yOgorICAgIGNhc2UgQ1NTUHJvcGVydHlX
ZWJraXROYnNwTW9kZToKKyNpZiBFTkFCTEUoT1ZFUkZMT1dfU0NST0xMSU5HKQorICAgIGNhc2Ug
Q1NTUHJvcGVydHlXZWJraXRPdmVyZmxvd1Njcm9sbGluZzoKKyNlbmRpZgorICAgIGNhc2UgQ1NT
UHJvcGVydHlXZWJraXRQcmludENvbG9yQWRqdXN0OgorICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJr
aXRSdGxPcmRlcmluZzoKKyAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0VGV4dENvbWJpbmU6Cisg
ICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdFRleHRFbXBoYXNpc1Bvc2l0aW9uOgorICAgIGNhc2Ug
Q1NTUHJvcGVydHlXZWJraXRUZXh0U2VjdXJpdHk6CisgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtp
dFRleHRTaXplQWRqdXN0OgorICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRUcmFuc2Zvcm1TdHls
ZToKKyAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0VXNlckRyYWc6CisgICAgY2FzZSBDU1NQcm9w
ZXJ0eVdlYmtpdFVzZXJNb2RpZnk6CisgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdFVzZXJTZWxl
Y3Q6CisgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdFdyYXBGbG93OgorICAgIGNhc2UgQ1NTUHJv
cGVydHlXZWJraXRXcmFwVGhyb3VnaDoKKyAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0V3JpdGlu
Z01vZGU6CisgICAgY2FzZSBDU1NQcm9wZXJ0eVdoaXRlU3BhY2U6CisgICAgY2FzZSBDU1NQcm9w
ZXJ0eVdvcmRCcmVhazoKKyAgICBjYXNlIENTU1Byb3BlcnR5V29yZFdyYXA6CisgICAgICAgIC8v
IFRoZXNlIHByb3BlcnRpZXMgc2hvdWxkIGJlIGhhbmRsZWQgYmVmb3JlIGluIGlzVmFsaWRLZXl3
b3JkUHJvcGVydHlBbmRWYWx1ZSgpLgorICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAg
ICAgICAgcmV0dXJuIGZhbHNlOwogI2lmIEVOQUJMRShTVkcpCiAgICAgZGVmYXVsdDoKICAgICAg
ICAgcmV0dXJuIHBhcnNlU1ZHVmFsdWUocHJvcElkLCBpbXBvcnRhbnQpOwo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>132821</attachid>
            <date>2012-03-20 07:04:14 -0700</date>
            <delta_ts>2012-03-20 07:46:44 -0700</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-80874-20120320080246.patch</filename>
            <type>text/plain</type>
            <size>53341</size>
            <attacher name="Alexis Menard (darktears)">menard</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTExMzc4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNzY5NTQ1YjQ1ODQwOTBk
MzVlNzE5MWM4OTMwYzBmZDQ3YWExMDYwOS4uYzJjZDk0M2JiZmNjZjcxZTYzMjhkM2Q0MDgxZGZi
NDgwMTUyZGRlZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI4IEBACisyMDEyLTAzLTIwICBBbGV4
aXMgTWVuYXJkICA8YWxleGlzLm1lbmFyZEBvcGVuYm9zc2Eub3JnPgorCisgICAgICAgIEltcGxl
bWVudCBhIGZhc3QgcGF0aCB3aGVuIHNldHRpbmcgQ1NTIHByb3BlcnRpZXMgd2l0aCBrZXl3b3Jk
cyBmcm9tIEpTLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9ODA4NzQKKworICAgICAgICBSZXZpZXdlZCBieSBBbnR0aSBLb2l2aXN0by4KKworICAgICAg
ICBUaGUgaWRlYSBpcyB0byBhdm9pZCB0aGUgY3JlYXRpb24gb2YgdGhlIENTU1BhcnNlciBpbnN0
YW5jZSBhbmQgdG8gcnVuIHRoZSBwYXJzZXIgb24KKyAgICAgICAgYSBzdHJpbmcgd2Uga25vdyBp
dCBzaG91bGQgYmUgYSBrZXl3b3JkLiBXaGVuIEpTIGNhbGxzIHBhcnNlVmFsdWUgd2UgdHJ5IHRv
IGNoZWNrIGlmIHdlIGNhbgorICAgICAgICB1c2UgdGhlIGZhc3QgcGF0aCBhbmQgaWYgdGhlIGtl
eXdvcmQgaXMgYWNjZXB0ZWQgdGhlbiB3ZSBqdXN0IGFkZCBpdCB0byB0aGUgZGVjbGFyYXRpb24g
ZGlyZWN0bHkuCisgICAgICAgIEZvciB0aGUgc2FrZSBvZiBtYWludGVuYW5jZSB0aGUgcGFyc2VW
YWx1ZSBmdW5jdGlvbiB1c2VkIGJ5IENTU0dyYW1tYXIueSBpcyBzaGFyaW5nIHNvbWUgY29kZSB3
aXRoCisgICAgICAgIHRoZSBmYXN0IHBhdGggKGtleXdvcmQgbWF0Y2hpbmcgbW9zdGx5KS4KKwor
ICAgICAgICBUaGlzIHBhdGNoIGltcHJvdmVzIHRoaXMgdXNlIGNhc2UgYnkgMjAlLiBTZXR0aW5n
IGtleXdvcmQgcHJvcGVydGllcyBmcm9tIEpTIGlzIHVzZWQgYSBsb3QgaW4KKyAgICAgICAgR29v
Z2xlIE1hcHMgZm9yIGV4YW1wbGUgKHdoZW4gem9vbWluZyBvciBwYW5uaW5nKS4KKworICAgICAg
ICBObyBuZXcgdGVzdHMgOiBpdCdzIGEgcGVyZm9ybWFuY2UgaW1wcm92ZW1lbnQsIHRoZXJlIHNo
b3VsZG4ndCBiZSBhbnkgYmVoYXZpb3IgY2hhbmdlLgorCisgICAgICAgICogY3NzL0NTU1BhcnNl
ci5jcHA6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6OmlzVmFsaWRLZXl3
b3JkUHJvcGVydHlBbmRWYWx1ZSk6CisgICAgICAgIChXZWJDb3JlOjppc0tleXdvcmRQcm9wZXJ0
eUlEKToKKyAgICAgICAgKFdlYkNvcmU6OnBhcnNlS2V5d29yZFZhbHVlKToKKyAgICAgICAgKFdl
YkNvcmU6OkNTU1BhcnNlcjo6cGFyc2VWYWx1ZSk6CisKIDIwMTItMDMtMjAgIE1paG5lYSBPdmlk
ZW5pZSAgPG1paG5lYUBhZG9iZS5jb20+CiAKICAgICAgICAgW0NTU1JlZ2lvbnNdSW1wbGVtZW50
IE5hbWVkRmxvdzo6Z2V0UmVnaW9uc0J5Q29udGVudE5vZGUKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2Nzcy9DU1NQYXJzZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU1BhcnNlci5j
cHAKaW5kZXggY2FhMmM4ZTE1NTUyZTQ2YmZkNTcyODhhZjczOTExYTFjZDNiYTFkNi4uOWZkNmE3
NjFhNTg4OGI3MjMxMjJiYmNhMTY5MDJlMGQxZTc0NzM0MyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvY3NzL0NTU1BhcnNlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU1BhcnNl
ci5jcHAKQEAgLTQ3OSw2ICs0NzksNDU1IEBAIHN0YXRpYyBib29sIHBhcnNlU2ltcGxlTGVuZ3Ro
VmFsdWUoU3R5bGVQcm9wZXJ0eVNldCogZGVjbGFyYXRpb24sIGludCBwcm9wZXJ0eUlkCiAgICAg
cmV0dXJuIHRydWU7CiB9CiAKK3N0YXRpYyBpbmxpbmUgYm9vbCBpc1ZhbGlkS2V5d29yZFByb3Bl
cnR5QW5kVmFsdWUoaW50IHByb3BlcnR5SWQsIGludCB2YWx1ZUlEKQoreworICAgIGlmICghdmFs
dWVJRCkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgc3dpdGNoIChwcm9wZXJ0eUlkKSB7
CisgICAgY2FzZSBDU1NQcm9wZXJ0eUJvcmRlckNvbGxhcHNlOiAvLyBjb2xsYXBzZSB8IHNlcGFy
YXRlIHwgaW5oZXJpdAorICAgICAgICBpZiAodmFsdWVJRCA9PSBDU1NWYWx1ZUNvbGxhcHNlIHx8
IHZhbHVlSUQgPT0gQ1NTVmFsdWVTZXBhcmF0ZSkKKyAgICAgICAgICAgIHJldHVybiB0cnVlOwor
ICAgICAgICBicmVhazsKKyAgICBjYXNlIENTU1Byb3BlcnR5Qm9yZGVyVG9wU3R5bGU6IC8vIDxi
b3JkZXItc3R5bGU+IHwgaW5oZXJpdAorICAgIGNhc2UgQ1NTUHJvcGVydHlCb3JkZXJSaWdodFN0
eWxlOiAvLyBEZWZpbmVkIGFzOiBub25lIHwgaGlkZGVuIHwgZG90dGVkIHwgZGFzaGVkIHwKKyAg
ICBjYXNlIENTU1Byb3BlcnR5Qm9yZGVyQm90dG9tU3R5bGU6IC8vIHNvbGlkIHwgZG91YmxlIHwg
Z3Jvb3ZlIHwgcmlkZ2UgfCBpbnNldCB8IG91dHNldAorICAgIGNhc2UgQ1NTUHJvcGVydHlCb3Jk
ZXJMZWZ0U3R5bGU6CisgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdEJvcmRlckFmdGVyU3R5bGU6
CisgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdEJvcmRlckJlZm9yZVN0eWxlOgorICAgIGNhc2Ug
Q1NTUHJvcGVydHlXZWJraXRCb3JkZXJFbmRTdHlsZToKKyAgICBjYXNlIENTU1Byb3BlcnR5V2Vi
a2l0Qm9yZGVyU3RhcnRTdHlsZToKKyAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0Q29sdW1uUnVs
ZVN0eWxlOgorICAgICAgICBpZiAodmFsdWVJRCA+PSBDU1NWYWx1ZU5vbmUgJiYgdmFsdWVJRCA8
PSBDU1NWYWx1ZURvdWJsZSkKKyAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICBicmVh
azsKKyAgICBjYXNlIENTU1Byb3BlcnR5Qm94U2l6aW5nOgorICAgICAgICAgaWYgKHZhbHVlSUQg
PT0gQ1NTVmFsdWVCb3JkZXJCb3ggfHwgdmFsdWVJRCA9PSBDU1NWYWx1ZUNvbnRlbnRCb3gpCisg
ICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgICBicmVhazsKKyAgICBjYXNlIENTU1By
b3BlcnR5Q2FwdGlvblNpZGU6IC8vIHRvcCB8IGJvdHRvbSB8IGxlZnQgfCByaWdodCB8IGluaGVy
aXQKKyAgICAgICAgaWYgKHZhbHVlSUQgPT0gQ1NTVmFsdWVMZWZ0IHx8IHZhbHVlSUQgPT0gQ1NT
VmFsdWVSaWdodCB8fCB2YWx1ZUlEID09IENTU1ZhbHVlVG9wIHx8IHZhbHVlSUQgPT0gQ1NTVmFs
dWVCb3R0b20pCisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgYnJlYWs7CisgICAg
Y2FzZSBDU1NQcm9wZXJ0eUNsZWFyOiAvLyBub25lIHwgbGVmdCB8IHJpZ2h0IHwgYm90aCB8IGlu
aGVyaXQKKyAgICAgICAgaWYgKHZhbHVlSUQgPT0gQ1NTVmFsdWVOb25lIHx8IHZhbHVlSUQgPT0g
Q1NTVmFsdWVMZWZ0IHx8IHZhbHVlSUQgPT0gQ1NTVmFsdWVSaWdodCB8fCB2YWx1ZUlEID09IENT
U1ZhbHVlQm90aCkKKyAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICBicmVhazsKKyAg
ICBjYXNlIENTU1Byb3BlcnR5RGlyZWN0aW9uOiAvLyBsdHIgfCBydGwgfCBpbmhlcml0CisgICAg
ICAgIGlmICh2YWx1ZUlEID09IENTU1ZhbHVlTHRyIHx8IHZhbHVlSUQgPT0gQ1NTVmFsdWVSdGwp
CisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBDU1NQ
cm9wZXJ0eURpc3BsYXk6CisgICAgICAgIC8vIGlubGluZSB8IGJsb2NrIHwgbGlzdC1pdGVtIHwg
cnVuLWluIHwgaW5saW5lLWJsb2NrIHwgdGFibGUgfAorICAgICAgICAvLyBpbmxpbmUtdGFibGUg
fCB0YWJsZS1yb3ctZ3JvdXAgfCB0YWJsZS1oZWFkZXItZ3JvdXAgfCB0YWJsZS1mb290ZXItZ3Jv
dXAgfCB0YWJsZS1yb3cgfAorICAgICAgICAvLyB0YWJsZS1jb2x1bW4tZ3JvdXAgfCB0YWJsZS1j
b2x1bW4gfCB0YWJsZS1jZWxsIHwgdGFibGUtY2FwdGlvbiB8IC13ZWJraXQtYm94IHwgLXdlYmtp
dC1pbmxpbmUtYm94IHwgbm9uZSB8IGluaGVyaXQKKyAgICAgICAgLy8gLXdlYmtpdC1mbGV4Ym94
IHwgLXdlYmtpdC1pbmxpbmUtZmxleGJveCB8IC13ZWJraXQtZ3JpZCB8IC13ZWJraXQtaW5saW5l
LWdyaWQKKyAgICAgICAgaWYgKCh2YWx1ZUlEID49IENTU1ZhbHVlSW5saW5lICYmIHZhbHVlSUQg
PD0gQ1NTVmFsdWVXZWJraXRJbmxpbmVGbGV4Ym94KSB8fCB2YWx1ZUlEID09IENTU1ZhbHVlTm9u
ZSkKKyAgICAgICAgICAgIHJldHVybiB0cnVlOworI2lmIEVOQUJMRShDU1NfR1JJRF9MQVlPVVQp
CisgICAgICAgIGlmICh2YWx1ZUlEID09IENTU1ZhbHVlV2Via2l0R3JpZCB8fCB2YWx1ZUlEID09
IENTU1ZhbHVlV2Via2l0SW5saW5lR3JpZCkKKyAgICAgICAgICAgIHJldHVybiB0cnVlOworICAg
ICAgICBicmVhazsKKyNlbmRpZgorICAgIGNhc2UgQ1NTUHJvcGVydHlFbXB0eUNlbGxzOiAvLyBz
aG93IHwgaGlkZSB8IGluaGVyaXQKKyAgICAgICAgaWYgKHZhbHVlSUQgPT0gQ1NTVmFsdWVTaG93
IHx8IHZhbHVlSUQgPT0gQ1NTVmFsdWVIaWRlKQorICAgICAgICAgICAgcmV0dXJuIHRydWU7Cisg
ICAgICAgIGJyZWFrOworICAgIGNhc2UgQ1NTUHJvcGVydHlGbG9hdDogLy8gbGVmdCB8IHJpZ2h0
IHwgbm9uZSB8IHBvc2l0aW9uZWQgfCBjZW50ZXIgKGZvciBidWdneSBDU1MsIG1hcHMgdG8gbm9u
ZSkKKyAgICAgICAgaWYgKHZhbHVlSUQgPT0gQ1NTVmFsdWVMZWZ0IHx8IHZhbHVlSUQgPT0gQ1NT
VmFsdWVSaWdodCB8fCB2YWx1ZUlEID09IENTU1ZhbHVlTm9uZSB8fCB2YWx1ZUlEID09IENTU1Zh
bHVlQ2VudGVyIHx8IHZhbHVlSUQgPT0gQ1NTVmFsdWVXZWJraXRQb3NpdGlvbmVkKQorICAgICAg
ICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgQ1NTUHJvcGVydHlG
b250U3R5bGU6IC8vIG5vcm1hbCB8IGl0YWxpYyB8IG9ibGlxdWUgfCBpbmhlcml0CisgICAgICAg
IGlmICh2YWx1ZUlEID09IENTU1ZhbHVlTm9ybWFsIHx8IHZhbHVlSUQgPT0gQ1NTVmFsdWVJdGFs
aWMgfHwgdmFsdWVJRCA9PSBDU1NWYWx1ZU9ibGlxdWUpCisgICAgICAgICAgICByZXR1cm4gdHJ1
ZTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBDU1NQcm9wZXJ0eUltYWdlUmVuZGVyaW5nOiAv
LyBhdXRvIHwgb3B0aW1pemVDb250cmFzdAorICAgICAgICBpZiAodmFsdWVJRCA9PSBDU1NWYWx1
ZUF1dG8gfHwgdmFsdWVJRCA9PSBDU1NWYWx1ZVdlYmtpdE9wdGltaXplQ29udHJhc3QpCisgICAg
ICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBDU1NQcm9wZXJ0
eUxpc3RTdHlsZVBvc2l0aW9uOiAvLyBpbnNpZGUgfCBvdXRzaWRlIHwgaW5oZXJpdAorICAgICAg
ICBpZiAodmFsdWVJRCA9PSBDU1NWYWx1ZUluc2lkZSB8fCB2YWx1ZUlEID09IENTU1ZhbHVlT3V0
c2lkZSkKKyAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICBicmVhazsKKyAgICBjYXNl
IENTU1Byb3BlcnR5TGlzdFN0eWxlVHlwZToKKyAgICAgICAgLy8gU2VlIHNlY3Rpb24gQ1NTX1BS
T1BfTElTVF9TVFlMRV9UWVBFIG9mIGZpbGUgQ1NTVmFsdWVLZXl3b3Jkcy5pbgorICAgICAgICAv
LyBmb3IgdGhlIGxpc3Qgb2Ygc3VwcG9ydGVkIGxpc3Qtc3R5bGUtdHlwZXMuCisgICAgICAgIGlm
ICgodmFsdWVJRCA+PSBDU1NWYWx1ZURpc2MgJiYgdmFsdWVJRCA8PSBDU1NWYWx1ZUthdGFrYW5h
SXJvaGEpIHx8IHZhbHVlSUQgPT0gQ1NTVmFsdWVOb25lKQorICAgICAgICAgICAgcmV0dXJuIHRy
dWU7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgQ1NTUHJvcGVydHlPdXRsaW5lU3R5bGU6IC8v
ICg8Ym9yZGVyLXN0eWxlPiBleGNlcHQgaGlkZGVuKSB8IGF1dG8gfCBpbmhlcml0CisgICAgICAg
IGlmICh2YWx1ZUlEID09IENTU1ZhbHVlQXV0byB8fCB2YWx1ZUlEID09IENTU1ZhbHVlTm9uZSB8
fCAodmFsdWVJRCA+PSBDU1NWYWx1ZUluc2V0ICYmIHZhbHVlSUQgPD0gQ1NTVmFsdWVEb3VibGUp
KQorICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgQ1NT
UHJvcGVydHlPdmVyZmxvd1g6CisgICAgY2FzZSBDU1NQcm9wZXJ0eU92ZXJmbG93WTogLy8gdmlz
aWJsZSB8IGhpZGRlbiB8IHNjcm9sbCB8IGF1dG8gfCBtYXJxdWVlIHwgb3ZlcmxheSB8IGluaGVy
aXQKKyAgICAgICAgaWYgKHZhbHVlSUQgPT0gQ1NTVmFsdWVWaXNpYmxlIHx8IHZhbHVlSUQgPT0g
Q1NTVmFsdWVIaWRkZW4gfHwgdmFsdWVJRCA9PSBDU1NWYWx1ZVNjcm9sbCB8fCB2YWx1ZUlEID09
IENTU1ZhbHVlQXV0byB8fCB2YWx1ZUlEID09IENTU1ZhbHVlT3ZlcmxheSB8fCB2YWx1ZUlEID09
IENTU1ZhbHVlV2Via2l0TWFycXVlZSkKKyAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAg
ICBicmVhazsKKyAgICBjYXNlIENTU1Byb3BlcnR5UG9pbnRlckV2ZW50czoKKyAgICAgICAgLy8g
bm9uZSB8IHZpc2libGVQYWludGVkIHwgdmlzaWJsZUZpbGwgfCB2aXNpYmxlU3Ryb2tlIHwgdmlz
aWJsZSB8CisgICAgICAgIC8vIHBhaW50ZWQgfCBmaWxsIHwgc3Ryb2tlIHwgYXV0byB8IGFsbCB8
IGluaGVyaXQKKyAgICAgICAgaWYgKHZhbHVlSUQgPT0gQ1NTVmFsdWVWaXNpYmxlIHx8IHZhbHVl
SUQgPT0gQ1NTVmFsdWVOb25lIHx8IHZhbHVlSUQgPT0gQ1NTVmFsdWVBbGwgfHwgdmFsdWVJRCA9
PSBDU1NWYWx1ZUF1dG8gfHwgKHZhbHVlSUQgPj0gQ1NTVmFsdWVWaXNpYmxlcGFpbnRlZCAmJiB2
YWx1ZUlEIDw9IENTU1ZhbHVlU3Ryb2tlKSkKKyAgICAgICAgICAgIHJldHVybiB0cnVlOworICAg
ICAgICBicmVhazsKKyAgICBjYXNlIENTU1Byb3BlcnR5UG9zaXRpb246IC8vIHN0YXRpYyB8IHJl
bGF0aXZlIHwgYWJzb2x1dGUgfCBmaXhlZCB8IGluaGVyaXQKKyAgICAgICAgaWYgKHZhbHVlSUQg
PT0gQ1NTVmFsdWVTdGF0aWMgfHwgdmFsdWVJRCA9PSBDU1NWYWx1ZVJlbGF0aXZlIHx8IHZhbHVl
SUQgPT0gQ1NTVmFsdWVBYnNvbHV0ZSB8fCB2YWx1ZUlEID09IENTU1ZhbHVlRml4ZWQpCisgICAg
ICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBDU1NQcm9wZXJ0
eVJlc2l6ZTogLy8gbm9uZSB8IGJvdGggfCBob3Jpem9udGFsIHwgdmVydGljYWwgfCBhdXRvCisg
ICAgICAgIGlmICh2YWx1ZUlEID09IENTU1ZhbHVlTm9uZSB8fCB2YWx1ZUlEID09IENTU1ZhbHVl
Qm90aCB8fCB2YWx1ZUlEID09IENTU1ZhbHVlSG9yaXpvbnRhbCB8fCB2YWx1ZUlEID09IENTU1Zh
bHVlVmVydGljYWwgfHwgdmFsdWVJRCA9PSBDU1NWYWx1ZUF1dG8pCisgICAgICAgICAgICByZXR1
cm4gdHJ1ZTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBDU1NQcm9wZXJ0eVNwZWFrOiAvLyBu
b25lIHwgbm9ybWFsIHwgc3BlbGwtb3V0IHwgZGlnaXRzIHwgbGl0ZXJhbC1wdW5jdHVhdGlvbiB8
IG5vLXB1bmN0dWF0aW9uIHwgaW5oZXJpdAorICAgICAgICBpZiAodmFsdWVJRCA9PSBDU1NWYWx1
ZU5vbmUgfHwgdmFsdWVJRCA9PSBDU1NWYWx1ZU5vcm1hbCB8fCB2YWx1ZUlEID09IENTU1ZhbHVl
U3BlbGxPdXQgfHwgdmFsdWVJRCA9PSBDU1NWYWx1ZURpZ2l0cyB8fCB2YWx1ZUlEID09IENTU1Zh
bHVlTGl0ZXJhbFB1bmN0dWF0aW9uIHx8IHZhbHVlSUQgPT0gQ1NTVmFsdWVOb1B1bmN0dWF0aW9u
KQorICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgQ1NT
UHJvcGVydHlUYWJsZUxheW91dDogLy8gYXV0byB8IGZpeGVkIHwgaW5oZXJpdAorICAgICAgICBp
ZiAodmFsdWVJRCA9PSBDU1NWYWx1ZUF1dG8gfHwgdmFsdWVJRCA9PSBDU1NWYWx1ZUZpeGVkKQor
ICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgQ1NTUHJv
cGVydHlUZXh0TGluZVRocm91Z2hNb2RlOgorICAgIGNhc2UgQ1NTUHJvcGVydHlUZXh0T3Zlcmxp
bmVNb2RlOgorICAgIGNhc2UgQ1NTUHJvcGVydHlUZXh0VW5kZXJsaW5lTW9kZToKKyAgICAgICAg
aWYgKHZhbHVlSUQgPT0gQ1NTVmFsdWVDb250aW51b3VzIHx8IHZhbHVlSUQgPT0gQ1NTVmFsdWVT
a2lwV2hpdGVTcGFjZSkKKyAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICBicmVhazsK
KyAgICBjYXNlIENTU1Byb3BlcnR5VGV4dExpbmVUaHJvdWdoU3R5bGU6CisgICAgY2FzZSBDU1NQ
cm9wZXJ0eVRleHRPdmVybGluZVN0eWxlOgorICAgIGNhc2UgQ1NTUHJvcGVydHlUZXh0VW5kZXJs
aW5lU3R5bGU6CisgICAgICAgIGlmICh2YWx1ZUlEID09IENTU1ZhbHVlTm9uZSB8fCB2YWx1ZUlE
ID09IENTU1ZhbHVlU29saWQgfHwgdmFsdWVJRCA9PSBDU1NWYWx1ZURvdWJsZSB8fCB2YWx1ZUlE
ID09IENTU1ZhbHVlRGFzaGVkIHx8IHZhbHVlSUQgPT0gQ1NTVmFsdWVEb3REYXNoIHx8IHZhbHVl
SUQgPT0gQ1NTVmFsdWVEb3REb3REYXNoIHx8IHZhbHVlSUQgPT0gQ1NTVmFsdWVXYXZlKQorICAg
ICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgQ1NTUHJvcGVy
dHlUZXh0T3ZlcmZsb3c6IC8vIGNsaXAgfCBlbGxpcHNpcworICAgICAgICBpZiAodmFsdWVJRCA9
PSBDU1NWYWx1ZUNsaXAgfHwgdmFsdWVJRCA9PSBDU1NWYWx1ZUVsbGlwc2lzKQorICAgICAgICAg
ICAgcmV0dXJuIHRydWU7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgQ1NTUHJvcGVydHlUZXh0
UmVuZGVyaW5nOiAvLyBhdXRvIHwgb3B0aW1pemVTcGVlZCB8IG9wdGltaXplTGVnaWJpbGl0eSB8
IGdlb21ldHJpY1ByZWNpc2lvbgorICAgICAgICBpZiAodmFsdWVJRCA9PSBDU1NWYWx1ZUF1dG8g
fHwgdmFsdWVJRCA9PSBDU1NWYWx1ZU9wdGltaXplc3BlZWQgfHwgdmFsdWVJRCA9PSBDU1NWYWx1
ZU9wdGltaXplbGVnaWJpbGl0eSB8fCB2YWx1ZUlEID09IENTU1ZhbHVlR2VvbWV0cmljcHJlY2lz
aW9uKQorICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgIGJyZWFrOworICAgIGNhc2Ug
Q1NTUHJvcGVydHlUZXh0VHJhbnNmb3JtOiAvLyBjYXBpdGFsaXplIHwgdXBwZXJjYXNlIHwgbG93
ZXJjYXNlIHwgbm9uZSB8IGluaGVyaXQKKyAgICAgICAgaWYgKCh2YWx1ZUlEID49IENTU1ZhbHVl
Q2FwaXRhbGl6ZSAmJiB2YWx1ZUlEIDw9IENTU1ZhbHVlTG93ZXJjYXNlKSB8fCB2YWx1ZUlEID09
IENTU1ZhbHVlTm9uZSkKKyAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICBicmVhazsK
KyAgICBjYXNlIENTU1Byb3BlcnR5VmlzaWJpbGl0eTogLy8gdmlzaWJsZSB8IGhpZGRlbiB8IGNv
bGxhcHNlIHwgaW5oZXJpdAorICAgICAgICBpZiAodmFsdWVJRCA9PSBDU1NWYWx1ZVZpc2libGUg
fHwgdmFsdWVJRCA9PSBDU1NWYWx1ZUhpZGRlbiB8fCB2YWx1ZUlEID09IENTU1ZhbHVlQ29sbGFw
c2UpCisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBD
U1NQcm9wZXJ0eVdlYmtpdEFwcGVhcmFuY2U6CisgICAgICAgIGlmICgodmFsdWVJRCA+PSBDU1NW
YWx1ZUNoZWNrYm94ICYmIHZhbHVlSUQgPD0gQ1NTVmFsdWVUZXh0YXJlYSkgfHwgdmFsdWVJRCA9
PSBDU1NWYWx1ZU5vbmUpCisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgYnJlYWs7
CisgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdEJhY2tmYWNlVmlzaWJpbGl0eToKKyAgICAgICAg
aWYgKHZhbHVlSUQgPT0gQ1NTVmFsdWVWaXNpYmxlIHx8IHZhbHVlSUQgPT0gQ1NTVmFsdWVIaWRk
ZW4pCisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBD
U1NQcm9wZXJ0eVdlYmtpdEJvcmRlckZpdDoKKyAgICAgICAgaWYgKHZhbHVlSUQgPT0gQ1NTVmFs
dWVCb3JkZXIgfHwgdmFsdWVJRCA9PSBDU1NWYWx1ZUxpbmVzKQorICAgICAgICAgICAgcmV0dXJu
IHRydWU7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRCb3hBbGln
bjoKKyAgICAgICAgaWYgKHZhbHVlSUQgPT0gQ1NTVmFsdWVTdHJldGNoIHx8IHZhbHVlSUQgPT0g
Q1NTVmFsdWVTdGFydCB8fCB2YWx1ZUlEID09IENTU1ZhbHVlRW5kIHx8IHZhbHVlSUQgPT0gQ1NT
VmFsdWVDZW50ZXIgfHwgdmFsdWVJRCA9PSBDU1NWYWx1ZUJhc2VsaW5lKQorICAgICAgICAgICAg
cmV0dXJuIHRydWU7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRC
b3hEaXJlY3Rpb246CisgICAgICAgIGlmICh2YWx1ZUlEID09IENTU1ZhbHVlTm9ybWFsIHx8IHZh
bHVlSUQgPT0gQ1NTVmFsdWVSZXZlcnNlKQorICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAg
ICAgIGJyZWFrOworICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRCb3hMaW5lczoKKyAgICAgICAg
aWYgKHZhbHVlSUQgPT0gQ1NTVmFsdWVTaW5nbGUgfHwgdmFsdWVJRCA9PSBDU1NWYWx1ZU11bHRp
cGxlKQorICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICBicmVhazsKKyAgICBj
YXNlIENTU1Byb3BlcnR5V2Via2l0Qm94T3JpZW50OgorICAgICAgICBpZiAodmFsdWVJRCA9PSBD
U1NWYWx1ZUhvcml6b250YWwgfHwgdmFsdWVJRCA9PSBDU1NWYWx1ZVZlcnRpY2FsIHx8IHZhbHVl
SUQgPT0gQ1NTVmFsdWVJbmxpbmVBeGlzIHx8IHZhbHVlSUQgPT0gQ1NTVmFsdWVCbG9ja0F4aXMp
CisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBDU1NQ
cm9wZXJ0eVdlYmtpdEJveFBhY2s6CisgICAgICAgIGlmICh2YWx1ZUlEID09IENTU1ZhbHVlU3Rh
cnQgfHwgdmFsdWVJRCA9PSBDU1NWYWx1ZUVuZCB8fCB2YWx1ZUlEID09IENTU1ZhbHVlQ2VudGVy
IHx8IHZhbHVlSUQgPT0gQ1NTVmFsdWVKdXN0aWZ5KQorICAgICAgICAgICAgcmV0dXJuIHRydWU7
CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRDb2xvckNvcnJlY3Rp
b246CisgICAgICAgIGlmICh2YWx1ZUlEID09IENTU1ZhbHVlU3JnYiB8fCB2YWx1ZUlEID09IENT
U1ZhbHVlRGVmYXVsdCkKKyAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICBicmVhazsK
KyAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0RmxleEFsaWduOgorICAgICAgICBpZiAodmFsdWVJ
RCA9PSBDU1NWYWx1ZVN0YXJ0IHx8IHZhbHVlSUQgPT0gQ1NTVmFsdWVFbmQgfHwgdmFsdWVJRCA9
PSBDU1NWYWx1ZUNlbnRlciB8fCB2YWx1ZUlEID09IENTU1ZhbHVlQmFzZWxpbmUgfHwgdmFsdWVJ
RCA9PSBDU1NWYWx1ZVN0cmV0Y2gpCisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAg
YnJlYWs7CisgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdEZsZXhEaXJlY3Rpb246CisgICAgICAg
IGlmICh2YWx1ZUlEID09IENTU1ZhbHVlUm93IHx8IHZhbHVlSUQgPT0gQ1NTVmFsdWVSb3dSZXZl
cnNlIHx8IHZhbHVlSUQgPT0gQ1NTVmFsdWVDb2x1bW4gfHwgdmFsdWVJRCA9PSBDU1NWYWx1ZUNv
bHVtblJldmVyc2UpCisgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgIGJyZWFr
OworICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRGbGV4SXRlbUFsaWduOgorICAgICAgICBpZiAo
dmFsdWVJRCA9PSBDU1NWYWx1ZUF1dG8gfHwgdmFsdWVJRCA9PSBDU1NWYWx1ZVN0YXJ0IHx8IHZh
bHVlSUQgPT0gQ1NTVmFsdWVFbmQgfHwgdmFsdWVJRCA9PSBDU1NWYWx1ZUNlbnRlciB8fCB2YWx1
ZUlEID09IENTU1ZhbHVlQmFzZWxpbmUgfHwgdmFsdWVJRCA9PSBDU1NWYWx1ZVN0cmV0Y2gpCisg
ICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBDU1NQcm9w
ZXJ0eVdlYmtpdEZsZXhMaW5lUGFjazoKKyAgICAgICAgIGlmICh2YWx1ZUlEID09IENTU1ZhbHVl
U3RhcnQgfHwgdmFsdWVJRCA9PSBDU1NWYWx1ZUVuZCB8fCB2YWx1ZUlEID09IENTU1ZhbHVlQ2Vu
dGVyIHx8IHZhbHVlSUQgPT0gQ1NTVmFsdWVKdXN0aWZ5IHx8IHZhbHVlSUQgPT0gQ1NTVmFsdWVE
aXN0cmlidXRlIHx8IHZhbHVlSUQgPT0gQ1NTVmFsdWVTdHJldGNoKQorICAgICAgICAgICAgIHJl
dHVybiB0cnVlOworICAgICAgICAgYnJlYWs7CisgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdEZs
ZXhQYWNrOgorICAgICAgICBpZiAodmFsdWVJRCA9PSBDU1NWYWx1ZVN0YXJ0IHx8IHZhbHVlSUQg
PT0gQ1NTVmFsdWVFbmQgfHwgdmFsdWVJRCA9PSBDU1NWYWx1ZUNlbnRlciB8fCB2YWx1ZUlEID09
IENTU1ZhbHVlSnVzdGlmeSB8fCB2YWx1ZUlEID09IENTU1ZhbHVlRGlzdHJpYnV0ZSkKKyAgICAg
ICAgICAgIHJldHVybiB0cnVlOworICAgICAgICBicmVhazsKKyAgICBjYXNlIENTU1Byb3BlcnR5
V2Via2l0RmxleFdyYXA6CisgICAgICAgIGlmICh2YWx1ZUlEID09IENTU1ZhbHVlTm9uZSB8fCB2
YWx1ZUlEID09IENTU1ZhbHVlV3JhcCB8fCB2YWx1ZUlEID09IENTU1ZhbHVlV3JhcFJldmVyc2Up
CisgICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgQ1NT
UHJvcGVydHlXZWJraXRGb250S2VybmluZzoKKyAgICAgICAgaWYgKHZhbHVlSUQgPT0gQ1NTVmFs
dWVBdXRvIHx8IHZhbHVlSUQgPT0gQ1NTVmFsdWVOb3JtYWwgfHwgdmFsdWVJRCA9PSBDU1NWYWx1
ZU5vbmUpCisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgYnJlYWs7CisgICAgY2Fz
ZSBDU1NQcm9wZXJ0eVdlYmtpdEZvbnRTbW9vdGhpbmc6CisgICAgICAgIGlmICh2YWx1ZUlEID09
IENTU1ZhbHVlQXV0byB8fCB2YWx1ZUlEID09IENTU1ZhbHVlTm9uZSB8fCB2YWx1ZUlEID09IENT
U1ZhbHVlQW50aWFsaWFzZWQgfHwgdmFsdWVJRCA9PSBDU1NWYWx1ZVN1YnBpeGVsQW50aWFsaWFz
ZWQpCisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBD
U1NQcm9wZXJ0eVdlYmtpdEh5cGhlbnM6CisgICAgICAgIGlmICh2YWx1ZUlEID09IENTU1ZhbHVl
Tm9uZSB8fCB2YWx1ZUlEID09IENTU1ZhbHVlTWFudWFsIHx8IHZhbHVlSUQgPT0gQ1NTVmFsdWVB
dXRvKQorICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgIGJyZWFrOworICAgIGNhc2Ug
Q1NTUHJvcGVydHlXZWJraXRMaW5lQWxpZ246CisgICAgICAgIGlmICh2YWx1ZUlEID09IENTU1Zh
bHVlTm9uZSB8fCB2YWx1ZUlEID09IENTU1ZhbHVlRWRnZXMpCisgICAgICAgICAgICByZXR1cm4g
dHJ1ZTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdExpbmVCcmVh
azogLy8gbm9ybWFsIHwgYWZ0ZXItd2hpdGUtc3BhY2UKKyAgICAgICAgaWYgKHZhbHVlSUQgPT0g
Q1NTVmFsdWVOb3JtYWwgfHwgdmFsdWVJRCA9PSBDU1NWYWx1ZUFmdGVyV2hpdGVTcGFjZSkKKyAg
ICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICBicmVhazsKKyAgICBjYXNlIENTU1Byb3Bl
cnR5V2Via2l0TGluZVNuYXA6CisgICAgICAgIGlmICh2YWx1ZUlEID09IENTU1ZhbHVlTm9uZSB8
fCB2YWx1ZUlEID09IENTU1ZhbHVlQmFzZWxpbmUgfHwgdmFsdWVJRCA9PSBDU1NWYWx1ZUNvbnRh
aW4pCisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBD
U1NQcm9wZXJ0eVdlYmtpdE1hcmdpbkFmdGVyQ29sbGFwc2U6CisgICAgY2FzZSBDU1NQcm9wZXJ0
eVdlYmtpdE1hcmdpbkJlZm9yZUNvbGxhcHNlOgorICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRN
YXJnaW5Cb3R0b21Db2xsYXBzZToKKyAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0TWFyZ2luVG9w
Q29sbGFwc2U6CisgICAgICAgIGlmICh2YWx1ZUlEID09IENTU1ZhbHVlQ29sbGFwc2UgfHwgdmFs
dWVJRCA9PSBDU1NWYWx1ZVNlcGFyYXRlIHx8IHZhbHVlSUQgPT0gQ1NTVmFsdWVEaXNjYXJkKQor
ICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgQ1NTUHJv
cGVydHlXZWJraXRNYXJxdWVlRGlyZWN0aW9uOgorICAgICAgICBpZiAodmFsdWVJRCA9PSBDU1NW
YWx1ZUZvcndhcmRzIHx8IHZhbHVlSUQgPT0gQ1NTVmFsdWVCYWNrd2FyZHMgfHwgdmFsdWVJRCA9
PSBDU1NWYWx1ZUFoZWFkIHx8IHZhbHVlSUQgPT0gQ1NTVmFsdWVSZXZlcnNlIHx8IHZhbHVlSUQg
PT0gQ1NTVmFsdWVMZWZ0IHx8IHZhbHVlSUQgPT0gQ1NTVmFsdWVSaWdodCB8fCB2YWx1ZUlEID09
IENTU1ZhbHVlRG93bgorICAgICAgICAgICAgfHwgdmFsdWVJRCA9PSBDU1NWYWx1ZVVwIHx8IHZh
bHVlSUQgPT0gQ1NTVmFsdWVBdXRvKQorICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAg
IGJyZWFrOworICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRNYXJxdWVlU3R5bGU6CisgICAgICAg
IGlmICh2YWx1ZUlEID09IENTU1ZhbHVlTm9uZSB8fCB2YWx1ZUlEID09IENTU1ZhbHVlU2xpZGUg
fHwgdmFsdWVJRCA9PSBDU1NWYWx1ZVNjcm9sbCB8fCB2YWx1ZUlEID09IENTU1ZhbHVlQWx0ZXJu
YXRlKQorICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgIGJyZWFrOworICAgIGNhc2Ug
Q1NTUHJvcGVydHlXZWJraXRNYXRjaE5lYXJlc3RNYWlsQmxvY2txdW90ZUNvbG9yOiAvLyBub3Jt
YWwgfCBtYXRjaAorICAgICAgICBpZiAodmFsdWVJRCA9PSBDU1NWYWx1ZU5vcm1hbCB8fCB2YWx1
ZUlEID09IENTU1ZhbHVlTWF0Y2gpCisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAg
YnJlYWs7CisgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdE5ic3BNb2RlOiAvLyBub3JtYWwgfCBz
cGFjZQorICAgICAgICBpZiAodmFsdWVJRCA9PSBDU1NWYWx1ZU5vcm1hbCB8fCB2YWx1ZUlEID09
IENTU1ZhbHVlU3BhY2UpCisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgYnJlYWs7
CisjaWYgRU5BQkxFKE9WRVJGTE9XX1NDUk9MTElORykKKyAgICBjYXNlIENTU1Byb3BlcnR5V2Vi
a2l0T3ZlcmZsb3dTY3JvbGxpbmc6CisgICAgICAgIGlmICh2YWx1ZUlEID09IENTU1ZhbHVlQXV0
byB8fCB2YWx1ZUlEID09IENTU1ZhbHVlVG91Y2gpCisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsK
KyAgICAgICAgYnJlYWs7CisjZW5kaWYKKyAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0UHJpbnRD
b2xvckFkanVzdDoKKyAgICAgICAgaWYgKHZhbHVlSUQgPT0gQ1NTVmFsdWVFeGFjdCB8fCB2YWx1
ZUlEID09IENTU1ZhbHVlRWNvbm9teSkKKyAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAg
ICBicmVhazsKKyAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0UnRsT3JkZXJpbmc6CisgICAgICAg
IGlmICh2YWx1ZUlEID09IENTU1ZhbHVlTG9naWNhbCB8fCB2YWx1ZUlEID09IENTU1ZhbHVlVmlz
dWFsKQorICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgIGJyZWFrOworICAgIGNhc2Ug
Q1NTUHJvcGVydHlXZWJraXRUZXh0Q29tYmluZToKKyAgICAgICAgaWYgKHZhbHVlSUQgPT0gQ1NT
VmFsdWVOb25lIHx8IHZhbHVlSUQgPT0gQ1NTVmFsdWVIb3Jpem9udGFsKQorICAgICAgICAgICAg
cmV0dXJuIHRydWU7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRU
ZXh0RW1waGFzaXNQb3NpdGlvbjoKKyAgICAgICAgaWYgKHZhbHVlSUQgPT0gQ1NTVmFsdWVPdmVy
IHx8IHZhbHVlSUQgPT0gQ1NTVmFsdWVVbmRlcikKKyAgICAgICAgICAgIHJldHVybiB0cnVlOwor
ICAgICAgICBicmVhazsKKyAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0VGV4dFNlY3VyaXR5Ogor
ICAgICAgICAvLyBkaXNjIHwgY2lyY2xlIHwgc3F1YXJlIHwgbm9uZSB8IGluaGVyaXQKKyAgICAg
ICAgaWYgKHZhbHVlSUQgPT0gQ1NTVmFsdWVEaXNjIHx8IHZhbHVlSUQgPT0gQ1NTVmFsdWVDaXJj
bGUgfHwgdmFsdWVJRCA9PSBDU1NWYWx1ZVNxdWFyZSB8fCB2YWx1ZUlEID09IENTU1ZhbHVlTm9u
ZSkKKyAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICBicmVhazsKKyAgICBjYXNlIENT
U1Byb3BlcnR5V2Via2l0VGV4dFNpemVBZGp1c3Q6CisgICAgICAgIGlmICh2YWx1ZUlEID09IENT
U1ZhbHVlQXV0byB8fCB2YWx1ZUlEID09IENTU1ZhbHVlTm9uZSkKKyAgICAgICAgICAgIHJldHVy
biB0cnVlOworICAgICAgICBicmVhazsKKyAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0VHJhbnNm
b3JtU3R5bGU6CisgICAgICAgIGlmICh2YWx1ZUlEID09IENTU1ZhbHVlRmxhdCB8fCB2YWx1ZUlE
ID09IENTU1ZhbHVlUHJlc2VydmUzZCkKKyAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAg
ICBicmVhazsKKyAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0VXNlckRyYWc6IC8vIGF1dG8gfCBu
b25lIHwgZWxlbWVudAorICAgICAgICBpZiAodmFsdWVJRCA9PSBDU1NWYWx1ZUF1dG8gfHwgdmFs
dWVJRCA9PSBDU1NWYWx1ZU5vbmUgfHwgdmFsdWVJRCA9PSBDU1NWYWx1ZUVsZW1lbnQpCisgICAg
ICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBDU1NQcm9wZXJ0
eVdlYmtpdFVzZXJNb2RpZnk6IC8vIHJlYWQtb25seSB8IHJlYWQtd3JpdGUKKyAgICAgICAgaWYg
KHZhbHVlSUQgPT0gQ1NTVmFsdWVSZWFkT25seSB8fCB2YWx1ZUlEID09IENTU1ZhbHVlUmVhZFdy
aXRlIHx8IHZhbHVlSUQgPT0gQ1NTVmFsdWVSZWFkV3JpdGVQbGFpbnRleHRPbmx5KQorICAgICAg
ICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgQ1NTUHJvcGVydHlX
ZWJraXRVc2VyU2VsZWN0OiAvLyBhdXRvIHwgbm9uZSB8IHRleHQKKyAgICAgICAgaWYgKHZhbHVl
SUQgPT0gQ1NTVmFsdWVBdXRvIHx8IHZhbHVlSUQgPT0gQ1NTVmFsdWVOb25lIHx8IHZhbHVlSUQg
PT0gQ1NTVmFsdWVUZXh0KQorICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgIGJyZWFr
OworICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRXcmFwRmxvdzoKKyAgICAgICAgaWYgKHZhbHVl
SUQgPT0gQ1NTVmFsdWVBdXRvIHx8IHZhbHVlSUQgPT0gQ1NTVmFsdWVCb3RoIHx8IHZhbHVlSUQg
PT0gQ1NTVmFsdWVMZWZ0IHx8IHZhbHVlSUQgPT0gQ1NTVmFsdWVSaWdodCB8fCB2YWx1ZUlEID09
IENTU1ZhbHVlTWF4aW11bSB8fCB2YWx1ZUlEID09IENTU1ZhbHVlQ2xlYXIpCisgICAgICAgICAg
ICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtp
dFdyYXBUaHJvdWdoOgorICAgICAgICBpZiAodmFsdWVJRCA9PSBDU1NWYWx1ZVdyYXAgfHwgdmFs
dWVJRCA9PSBDU1NWYWx1ZU5vbmUpCisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAg
YnJlYWs7CisgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdFdyaXRpbmdNb2RlOgorICAgICAgICBp
ZiAodmFsdWVJRCA+PSBDU1NWYWx1ZUhvcml6b250YWxUYiAmJiB2YWx1ZUlEIDw9IENTU1ZhbHVl
SG9yaXpvbnRhbEJ0KQorICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgIGJyZWFrOwor
ICAgIGNhc2UgQ1NTUHJvcGVydHlXaGl0ZVNwYWNlOiAvLyBub3JtYWwgfCBwcmUgfCBub3dyYXAg
fCBpbmhlcml0CisgICAgICAgIGlmICh2YWx1ZUlEID09IENTU1ZhbHVlTm9ybWFsIHx8IHZhbHVl
SUQgPT0gQ1NTVmFsdWVQcmUgfHwgdmFsdWVJRCA9PSBDU1NWYWx1ZVByZVdyYXAgfHwgdmFsdWVJ
RCA9PSBDU1NWYWx1ZVByZUxpbmUgfHwgdmFsdWVJRCA9PSBDU1NWYWx1ZU5vd3JhcCkKKyAgICAg
ICAgICAgIHJldHVybiB0cnVlOworICAgICAgICBicmVhazsKKyAgICBjYXNlIENTU1Byb3BlcnR5
V29yZEJyZWFrOiAvLyBub3JtYWwgfCBicmVhay1hbGwgfCBicmVhay13b3JkICh0aGlzIGlzIGEg
Y3VzdG9tIGV4dGVuc2lvbikKKyAgICAgICAgaWYgKHZhbHVlSUQgPT0gQ1NTVmFsdWVOb3JtYWwg
fHwgdmFsdWVJRCA9PSBDU1NWYWx1ZUJyZWFrQWxsIHx8IHZhbHVlSUQgPT0gQ1NTVmFsdWVCcmVh
a1dvcmQpCisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgYnJlYWs7CisgICAgY2Fz
ZSBDU1NQcm9wZXJ0eVdvcmRXcmFwOiAvLyBub3JtYWwgfCBicmVhay13b3JkCisgICAgICAgIGlm
ICh2YWx1ZUlEID09IENTU1ZhbHVlTm9ybWFsIHx8IHZhbHVlSUQgPT0gQ1NTVmFsdWVCcmVha1dv
cmQpCisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgYnJlYWs7CisgICAgZGVmYXVs
dDoKKyAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgIHJldHVybiBmYWxzZTsK
KyAgICB9CisgICAgcmV0dXJuIGZhbHNlOworfQorCitzdGF0aWMgaW5saW5lIGJvb2wgaXNLZXl3
b3JkUHJvcGVydHlJRChpbnQgcHJvcGVydHlJZCkKK3sKKyAgICBzd2l0Y2ggKHByb3BlcnR5SWQp
IHsKKyAgICBjYXNlIENTU1Byb3BlcnR5Qm9yZGVyQm90dG9tU3R5bGU6CisgICAgY2FzZSBDU1NQ
cm9wZXJ0eUJvcmRlckNvbGxhcHNlOgorICAgIGNhc2UgQ1NTUHJvcGVydHlCb3JkZXJMZWZ0U3R5
bGU6CisgICAgY2FzZSBDU1NQcm9wZXJ0eUJvcmRlclJpZ2h0U3R5bGU6CisgICAgY2FzZSBDU1NQ
cm9wZXJ0eUJvcmRlclRvcFN0eWxlOgorICAgIGNhc2UgQ1NTUHJvcGVydHlCb3hTaXppbmc6Cisg
ICAgY2FzZSBDU1NQcm9wZXJ0eUNhcHRpb25TaWRlOgorICAgIGNhc2UgQ1NTUHJvcGVydHlDbGVh
cjoKKyAgICBjYXNlIENTU1Byb3BlcnR5RGlyZWN0aW9uOgorICAgIGNhc2UgQ1NTUHJvcGVydHlE
aXNwbGF5OgorICAgIGNhc2UgQ1NTUHJvcGVydHlFbXB0eUNlbGxzOgorICAgIGNhc2UgQ1NTUHJv
cGVydHlGbG9hdDoKKyAgICBjYXNlIENTU1Byb3BlcnR5Rm9udFN0eWxlOgorICAgIGNhc2UgQ1NT
UHJvcGVydHlJbWFnZVJlbmRlcmluZzoKKyAgICBjYXNlIENTU1Byb3BlcnR5TGlzdFN0eWxlUG9z
aXRpb246CisgICAgY2FzZSBDU1NQcm9wZXJ0eUxpc3RTdHlsZVR5cGU6CisgICAgY2FzZSBDU1NQ
cm9wZXJ0eU91dGxpbmVTdHlsZToKKyAgICBjYXNlIENTU1Byb3BlcnR5T3ZlcmZsb3dYOgorICAg
IGNhc2UgQ1NTUHJvcGVydHlPdmVyZmxvd1k6CisgICAgY2FzZSBDU1NQcm9wZXJ0eVBvaW50ZXJF
dmVudHM6CisgICAgY2FzZSBDU1NQcm9wZXJ0eVBvc2l0aW9uOgorICAgIGNhc2UgQ1NTUHJvcGVy
dHlSZXNpemU6CisgICAgY2FzZSBDU1NQcm9wZXJ0eVNwZWFrOgorICAgIGNhc2UgQ1NTUHJvcGVy
dHlUYWJsZUxheW91dDoKKyAgICBjYXNlIENTU1Byb3BlcnR5VGV4dExpbmVUaHJvdWdoTW9kZToK
KyAgICBjYXNlIENTU1Byb3BlcnR5VGV4dExpbmVUaHJvdWdoU3R5bGU6CisgICAgY2FzZSBDU1NQ
cm9wZXJ0eVRleHRPdmVyZmxvdzoKKyAgICBjYXNlIENTU1Byb3BlcnR5VGV4dE92ZXJsaW5lTW9k
ZToKKyAgICBjYXNlIENTU1Byb3BlcnR5VGV4dE92ZXJsaW5lU3R5bGU6CisgICAgY2FzZSBDU1NQ
cm9wZXJ0eVRleHRSZW5kZXJpbmc6CisgICAgY2FzZSBDU1NQcm9wZXJ0eVRleHRUcmFuc2Zvcm06
CisgICAgY2FzZSBDU1NQcm9wZXJ0eVRleHRVbmRlcmxpbmVNb2RlOgorICAgIGNhc2UgQ1NTUHJv
cGVydHlUZXh0VW5kZXJsaW5lU3R5bGU6CisgICAgY2FzZSBDU1NQcm9wZXJ0eVZpc2liaWxpdHk6
CisgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdEFwcGVhcmFuY2U6CisgICAgY2FzZSBDU1NQcm9w
ZXJ0eVdlYmtpdEJhY2tmYWNlVmlzaWJpbGl0eToKKyAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0
Qm9yZGVyQWZ0ZXJTdHlsZToKKyAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0Qm9yZGVyQmVmb3Jl
U3R5bGU6CisgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdEJvcmRlckVuZFN0eWxlOgorICAgIGNh
c2UgQ1NTUHJvcGVydHlXZWJraXRCb3JkZXJGaXQ6CisgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtp
dEJvcmRlclN0YXJ0U3R5bGU6CisgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdEJveEFsaWduOgor
ICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRCb3hEaXJlY3Rpb246CisgICAgY2FzZSBDU1NQcm9w
ZXJ0eVdlYmtpdEJveExpbmVzOgorICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRCb3hPcmllbnQ6
CisgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdEJveFBhY2s6CisgICAgY2FzZSBDU1NQcm9wZXJ0
eVdlYmtpdENvbG9yQ29ycmVjdGlvbjoKKyAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0Q29sdW1u
UnVsZVN0eWxlOgorICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRGbGV4QWxpZ246CisgICAgY2Fz
ZSBDU1NQcm9wZXJ0eVdlYmtpdEZsZXhEaXJlY3Rpb246CisgICAgY2FzZSBDU1NQcm9wZXJ0eVdl
YmtpdEZsZXhJdGVtQWxpZ246CisgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdEZsZXhMaW5lUGFj
azoKKyAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0RmxleFBhY2s6CisgICAgY2FzZSBDU1NQcm9w
ZXJ0eVdlYmtpdEZsZXhXcmFwOgorICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRGb250S2Vybmlu
ZzoKKyAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0Rm9udFNtb290aGluZzoKKyAgICBjYXNlIENT
U1Byb3BlcnR5V2Via2l0SHlwaGVuczoKKyAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0TGluZUFs
aWduOgorICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRMaW5lQnJlYWs6CisgICAgY2FzZSBDU1NQ
cm9wZXJ0eVdlYmtpdExpbmVTbmFwOgorICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRNYXJnaW5B
ZnRlckNvbGxhcHNlOgorICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRNYXJnaW5CZWZvcmVDb2xs
YXBzZToKKyAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0TWFyZ2luQm90dG9tQ29sbGFwc2U6Cisg
ICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdE1hcmdpblRvcENvbGxhcHNlOgorICAgIGNhc2UgQ1NT
UHJvcGVydHlXZWJraXRNYXJxdWVlRGlyZWN0aW9uOgorICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJr
aXRNYXJxdWVlU3R5bGU6CisgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdE1hdGNoTmVhcmVzdE1h
aWxCbG9ja3F1b3RlQ29sb3I6CisgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdE5ic3BNb2RlOgor
I2lmIEVOQUJMRShPVkVSRkxPV19TQ1JPTExJTkcpCisgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtp
dE92ZXJmbG93U2Nyb2xsaW5nOgorI2VuZGlmCisgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdFBy
aW50Q29sb3JBZGp1c3Q6CisgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdFJ0bE9yZGVyaW5nOgor
ICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRUZXh0Q29tYmluZToKKyAgICBjYXNlIENTU1Byb3Bl
cnR5V2Via2l0VGV4dEVtcGhhc2lzUG9zaXRpb246CisgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtp
dFRleHRTZWN1cml0eToKKyAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0VGV4dFNpemVBZGp1c3Q6
CisgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdFRyYW5zZm9ybVN0eWxlOgorICAgIGNhc2UgQ1NT
UHJvcGVydHlXZWJraXRVc2VyRHJhZzoKKyAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0VXNlck1v
ZGlmeToKKyAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0VXNlclNlbGVjdDoKKyAgICBjYXNlIENT
U1Byb3BlcnR5V2Via2l0V3JhcEZsb3c6CisgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdFdyYXBU
aHJvdWdoOgorICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRXcml0aW5nTW9kZToKKyAgICBjYXNl
IENTU1Byb3BlcnR5V2hpdGVTcGFjZToKKyAgICBjYXNlIENTU1Byb3BlcnR5V29yZEJyZWFrOgor
ICAgIGNhc2UgQ1NTUHJvcGVydHlXb3JkV3JhcDoKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAg
ZGVmYXVsdDoKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KK30KKworc3RhdGljIGJvb2wg
cGFyc2VLZXl3b3JkVmFsdWUoU3R5bGVQcm9wZXJ0eVNldCogZGVjbGFyYXRpb24sIGludCBwcm9w
ZXJ0eUlkLCBjb25zdCBTdHJpbmcmIHN0cmluZywgYm9vbCBpbXBvcnRhbnQsIENTU1N0eWxlU2hl
ZXQqIGNvbnRleHRTdHlsZVNoZWV0KQoreworICAgIGlmIChzdHJpbmcuaXNFbXB0eSgpKQorICAg
ICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBpZiAoIWlzS2V5d29yZFByb3BlcnR5SUQocHJvcGVy
dHlJZCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIENTU1BhcnNlclN0cmluZyBjc3NT
dHJpbmc7CisgICAgY3NzU3RyaW5nLmNoYXJhY3RlcnMgPSBjb25zdF9jYXN0PFVDaGFyKj4oc3Ry
aW5nLmNoYXJhY3RlcnMoKSk7CisgICAgY3NzU3RyaW5nLmxlbmd0aCA9IHN0cmluZy5sZW5ndGgo
KTsKKyAgICBpbnQgdmFsdWVJRCA9IGNzc1ZhbHVlS2V5d29yZElEKGNzc1N0cmluZyk7CisKKyAg
ICBpZiAoIXZhbHVlSUQpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIERvY3VtZW50KiBk
b2N1bWVudCA9IGNvbnRleHRTdHlsZVNoZWV0LT5maW5kRG9jdW1lbnQoKTsKKyAgICBSZWZQdHI8
Q1NTVmFsdWU+IHZhbHVlOworICAgIENTU1ZhbHVlUG9vbCogY3NzVmFsdWVQb29sID0gZG9jdW1l
bnQgPyBkb2N1bWVudC0+Y3NzVmFsdWVQb29sKCkuZ2V0KCkgOiAwOworICAgIGlmICh2YWx1ZUlE
ID09IENTU1ZhbHVlSW5oZXJpdCkKKyAgICAgICAgdmFsdWUgPSBjc3NWYWx1ZVBvb2wgPyBjc3NW
YWx1ZVBvb2wtPmNyZWF0ZUluaGVyaXRlZFZhbHVlKCkgOiBDU1NJbmhlcml0ZWRWYWx1ZTo6Y3Jl
YXRlKCk7CisgICAgZWxzZSBpZiAodmFsdWVJRCA9PSBDU1NWYWx1ZUluaXRpYWwpCisgICAgICAg
IHZhbHVlID0gY3NzVmFsdWVQb29sID8gY3NzVmFsdWVQb29sLT5jcmVhdGVFeHBsaWNpdEluaXRp
YWxWYWx1ZSgpIDogQ1NTSW5pdGlhbFZhbHVlOjpjcmVhdGVFeHBsaWNpdCgpOworICAgIGVsc2Ug
aWYgKGlzVmFsaWRLZXl3b3JkUHJvcGVydHlBbmRWYWx1ZShwcm9wZXJ0eUlkLCB2YWx1ZUlEKSkK
KyAgICAgICAgdmFsdWUgPSBjc3NWYWx1ZVBvb2wgPyBjc3NWYWx1ZVBvb2wtPmNyZWF0ZUlkZW50
aWZpZXJWYWx1ZSh2YWx1ZUlEKSA6IENTU1ByaW1pdGl2ZVZhbHVlOjpjcmVhdGVJZGVudGlmaWVy
KHZhbHVlSUQpOworICAgIGVsc2UKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgZGVjbGFy
YXRpb24tPmFkZFBhcnNlZFByb3BlcnR5KENTU1Byb3BlcnR5KHByb3BlcnR5SWQsIHZhbHVlLnJl
bGVhc2UoKSwgaW1wb3J0YW50KSk7CisgICAgcmV0dXJuIHRydWU7Cit9CisKIFBhc3NSZWZQdHI8
Q1NTVmFsdWVMaXN0PiBDU1NQYXJzZXI6OnBhcnNlRm9udEZhY2VWYWx1ZShjb25zdCBBdG9taWNT
dHJpbmcmIHN0cmluZywgQ1NTU3R5bGVTaGVldCogY29udGV4dFN0eWxlU2hlZXQpCiB7CiAgICAg
UmVmUHRyPFN0eWxlUHJvcGVydHlTZXQ+IGR1bW15U3R5bGUgPSBTdHlsZVByb3BlcnR5U2V0Ojpj
cmVhdGUoKTsKQEAgLTQ5Myw2ICs5NDIsOCBAQCBib29sIENTU1BhcnNlcjo6cGFyc2VWYWx1ZShT
dHlsZVByb3BlcnR5U2V0KiBkZWNsYXJhdGlvbiwgaW50IHByb3BlcnR5SWQsIGNvbnN0CiAgICAg
ICAgIHJldHVybiB0cnVlOwogICAgIGlmIChwYXJzZUNvbG9yVmFsdWUoZGVjbGFyYXRpb24sIHBy
b3BlcnR5SWQsIHN0cmluZywgaW1wb3J0YW50LCBzdHJpY3QsIGNvbnRleHRTdHlsZVNoZWV0KSkK
ICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgaWYgKHBhcnNlS2V5d29yZFZhbHVlKGRlY2xhcmF0
aW9uLCBwcm9wZXJ0eUlkLCBzdHJpbmcsIGltcG9ydGFudCwgY29udGV4dFN0eWxlU2hlZXQpKQor
ICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICBDU1NQYXJzZXIgcGFyc2VyKHN0cmljdCk7CiAgICAg
cmV0dXJuIHBhcnNlci5wYXJzZVZhbHVlKGRlY2xhcmF0aW9uLCBwcm9wZXJ0eUlkLCBzdHJpbmcs
IGltcG9ydGFudCwgY29udGV4dFN0eWxlU2hlZXQpOwogfQpAQCAtOTI3LDYgKzEzNzgsMTUgQEAg
Ym9vbCBDU1NQYXJzZXI6OnBhcnNlVmFsdWUoaW50IHByb3BJZCwgYm9vbCBpbXBvcnRhbnQpCiAg
ICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KIAorICAgIGlmIChpc0tleXdvcmRQcm9wZXJ0eUlE
KHByb3BJZCkpIHsKKyAgICAgICAgaWYgKCFpc1ZhbGlkS2V5d29yZFByb3BlcnR5QW5kVmFsdWUo
cHJvcElkLCBpZCkpCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIGlmIChtX3Zh
bHVlTGlzdC0+bmV4dCgpICYmICFpblNob3J0aGFuZCgpKQorICAgICAgICAgICAgcmV0dXJuIGZh
bHNlOworICAgICAgICBhZGRQcm9wZXJ0eShwcm9wSWQsIGNzc1ZhbHVlUG9vbCgpLT5jcmVhdGVJ
ZGVudGlmaWVyVmFsdWUoaWQpLCBpbXBvcnRhbnQpOworICAgICAgICByZXR1cm4gdHJ1ZTsKKyAg
ICB9CisKICAgICBib29sIHZhbGlkUHJpbWl0aXZlID0gZmFsc2U7CiAgICAgUmVmUHRyPENTU1Zh
bHVlPiBwYXJzZWRWYWx1ZTsKIApAQCAtOTc1LDE0ICsxNDM1LDYgQEAgYm9vbCBDU1NQYXJzZXI6
OnBhcnNlVmFsdWUoaW50IHByb3BJZCwgYm9vbCBpbXBvcnRhbnQpCiAgICAgICAgIH0KICAgICAg
ICAgYnJlYWs7CiAKLSAgICBjYXNlIENTU1Byb3BlcnR5UG9zaXRpb246ICAgICAgICAgICAgIC8v
IHN0YXRpYyB8IHJlbGF0aXZlIHwgYWJzb2x1dGUgfCBmaXhlZCB8IGluaGVyaXQKLSAgICAgICAg
aWYgKGlkID09IENTU1ZhbHVlU3RhdGljCi0gICAgICAgICAgICB8fCBpZCA9PSBDU1NWYWx1ZVJl
bGF0aXZlCi0gICAgICAgICAgICB8fCBpZCA9PSBDU1NWYWx1ZUFic29sdXRlCi0gICAgICAgICAg
ICB8fCBpZCA9PSBDU1NWYWx1ZUZpeGVkKQotICAgICAgICAgICAgdmFsaWRQcmltaXRpdmUgPSB0
cnVlOwotICAgICAgICBicmVhazsKLQogICAgIGNhc2UgQ1NTUHJvcGVydHlQYWdlQnJlYWtBZnRl
cjogICAgICAgLy8gYXV0byB8IGFsd2F5cyB8IGF2b2lkIHwgbGVmdCB8IHJpZ2h0IHwgaW5oZXJp
dAogICAgIGNhc2UgQ1NTUHJvcGVydHlQYWdlQnJlYWtCZWZvcmU6CiAgICAgY2FzZSBDU1NQcm9w
ZXJ0eVdlYmtpdENvbHVtbkJyZWFrQWZ0ZXI6CkBAIC0xMDA0LDI1ICsxNDU2LDEwIEBAIGJvb2wg
Q1NTUGFyc2VyOjpwYXJzZVZhbHVlKGludCBwcm9wSWQsIGJvb2wgaW1wb3J0YW50KQogICAgICAg
ICAgICAgdmFsaWRQcmltaXRpdmUgPSAocHJvcElkID09IENTU1Byb3BlcnR5V2Via2l0UmVnaW9u
QnJlYWtJbnNpZGUpID8gY3NzUmVnaW9uc0VuYWJsZWQoKSA6IHRydWU7CiAgICAgICAgIGJyZWFr
OwogCi0gICAgY2FzZSBDU1NQcm9wZXJ0eUVtcHR5Q2VsbHM6ICAgICAgICAgIC8vIHNob3cgfCBo
aWRlIHwgaW5oZXJpdAotICAgICAgICBpZiAoaWQgPT0gQ1NTVmFsdWVTaG93Ci0gICAgICAgICAg
ICB8fCBpZCA9PSBDU1NWYWx1ZUhpZGUpCi0gICAgICAgICAgICB2YWxpZFByaW1pdGl2ZSA9IHRy
dWU7Ci0gICAgICAgIGJyZWFrOwotCiAgICAgY2FzZSBDU1NQcm9wZXJ0eUNvbnRlbnQ6ICAgICAg
ICAgICAgICAvLyBbIDxzdHJpbmc+IHwgPHVyaT4gfCA8Y291bnRlcj4gfCBhdHRyKFgpIHwgb3Bl
bi1xdW90ZSB8CiAgICAgICAgIC8vIGNsb3NlLXF1b3RlIHwgbm8tb3Blbi1xdW90ZSB8IG5vLWNs
b3NlLXF1b3RlIF0rIHwgaW5oZXJpdAogICAgICAgICByZXR1cm4gcGFyc2VDb250ZW50KHByb3BJ
ZCwgaW1wb3J0YW50KTsKIAotICAgIGNhc2UgQ1NTUHJvcGVydHlXaGl0ZVNwYWNlOiAgICAgICAg
ICAvLyBub3JtYWwgfCBwcmUgfCBub3dyYXAgfCBpbmhlcml0Ci0gICAgICAgIGlmIChpZCA9PSBD
U1NWYWx1ZU5vcm1hbAotICAgICAgICAgICAgfHwgaWQgPT0gQ1NTVmFsdWVQcmUKLSAgICAgICAg
ICAgIHx8IGlkID09IENTU1ZhbHVlUHJlV3JhcAotICAgICAgICAgICAgfHwgaWQgPT0gQ1NTVmFs
dWVQcmVMaW5lCi0gICAgICAgICAgICB8fCBpZCA9PSBDU1NWYWx1ZU5vd3JhcCkKLSAgICAgICAg
ICAgIHZhbGlkUHJpbWl0aXZlID0gdHJ1ZTsKLSAgICAgICAgYnJlYWs7Ci0KICAgICBjYXNlIENT
U1Byb3BlcnR5Q2xpcDogICAgICAgICAgICAgICAgIC8vIDxzaGFwZT4gfCBhdXRvIHwgaW5oZXJp
dAogICAgICAgICBpZiAoaWQgPT0gQ1NTVmFsdWVBdXRvKQogICAgICAgICAgICAgdmFsaWRQcmlt
aXRpdmUgPSB0cnVlOwpAQCAtMTAzMCw4NiArMTQ2NywxNyBAQCBib29sIENTU1BhcnNlcjo6cGFy
c2VWYWx1ZShpbnQgcHJvcElkLCBib29sIGltcG9ydGFudCkKICAgICAgICAgICAgIHJldHVybiBw
YXJzZVNoYXBlKHByb3BJZCwgaW1wb3J0YW50KTsKICAgICAgICAgYnJlYWs7CiAKLSAgICAvKiBT
dGFydCBvZiBzdXBwb3J0ZWQgQ1NTIHByb3BlcnRpZXMgd2l0aCB2YWxpZGF0aW9uLiBUaGlzIGlz
IG5lZWRlZCBmb3IgcGFyc2VTaG9ydGhhbmQgdG8gd29yawotICAgICAqIGNvcnJlY3RseSBhbmQg
YWxsb3dzIG9wdGltaXphdGlvbiBpbiBXZWJDb3JlOjphcHBseVJ1bGUoLi4pCi0gICAgICovCi0g
ICAgY2FzZSBDU1NQcm9wZXJ0eUNhcHRpb25TaWRlOiAgICAgICAgIC8vIHRvcCB8IGJvdHRvbSB8
IGxlZnQgfCByaWdodCB8IGluaGVyaXQKLSAgICAgICAgaWYgKGlkID09IENTU1ZhbHVlTGVmdCB8
fCBpZCA9PSBDU1NWYWx1ZVJpZ2h0IHx8Ci0gICAgICAgICAgICBpZCA9PSBDU1NWYWx1ZVRvcCB8
fCBpZCA9PSBDU1NWYWx1ZUJvdHRvbSkKLSAgICAgICAgICAgIHZhbGlkUHJpbWl0aXZlID0gdHJ1
ZTsKLSAgICAgICAgYnJlYWs7Ci0KLSAgICBjYXNlIENTU1Byb3BlcnR5Qm9yZGVyQ29sbGFwc2U6
ICAgICAgLy8gY29sbGFwc2UgfCBzZXBhcmF0ZSB8IGluaGVyaXQKLSAgICAgICAgaWYgKGlkID09
IENTU1ZhbHVlQ29sbGFwc2UgfHwgaWQgPT0gQ1NTVmFsdWVTZXBhcmF0ZSkKLSAgICAgICAgICAg
IHZhbGlkUHJpbWl0aXZlID0gdHJ1ZTsKLSAgICAgICAgYnJlYWs7Ci0KLSAgICBjYXNlIENTU1By
b3BlcnR5VmlzaWJpbGl0eTogICAgICAgICAgIC8vIHZpc2libGUgfCBoaWRkZW4gfCBjb2xsYXBz
ZSB8IGluaGVyaXQKLSAgICAgICAgaWYgKGlkID09IENTU1ZhbHVlVmlzaWJsZSB8fCBpZCA9PSBD
U1NWYWx1ZUhpZGRlbiB8fCBpZCA9PSBDU1NWYWx1ZUNvbGxhcHNlKQotICAgICAgICAgICAgdmFs
aWRQcmltaXRpdmUgPSB0cnVlOwotICAgICAgICBicmVhazsKLQotICAgIGNhc2UgQ1NTUHJvcGVy
dHlPdmVyZmxvdzogewotICAgICAgICBTaG9ydGhhbmRTY29wZSBzY29wZSh0aGlzLCBwcm9wSWQp
OwotICAgICAgICBpZiAobnVtICE9IDEgfHwgIXBhcnNlVmFsdWUoQ1NTUHJvcGVydHlPdmVyZmxv
d1gsIGltcG9ydGFudCkpCi0gICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgIENTU1Zh
bHVlKiB2YWx1ZSA9IG1fcGFyc2VkUHJvcGVydGllcy5sYXN0KCkudmFsdWUoKTsKLSAgICAgICAg
YWRkUHJvcGVydHkoQ1NTUHJvcGVydHlPdmVyZmxvd1ksIHZhbHVlLCBpbXBvcnRhbnQpOwotICAg
ICAgICByZXR1cm4gdHJ1ZTsKLSAgICB9Ci0gICAgY2FzZSBDU1NQcm9wZXJ0eU92ZXJmbG93WDoK
LSAgICBjYXNlIENTU1Byb3BlcnR5T3ZlcmZsb3dZOiAgICAgICAgICAgLy8gdmlzaWJsZSB8IGhp
ZGRlbiB8IHNjcm9sbCB8IGF1dG8gfCBtYXJxdWVlIHwgb3ZlcmxheSB8IGluaGVyaXQKLSAgICAg
ICAgaWYgKGlkID09IENTU1ZhbHVlVmlzaWJsZSB8fCBpZCA9PSBDU1NWYWx1ZUhpZGRlbiB8fCBp
ZCA9PSBDU1NWYWx1ZVNjcm9sbCB8fCBpZCA9PSBDU1NWYWx1ZUF1dG8gfHwKLSAgICAgICAgICAg
IGlkID09IENTU1ZhbHVlT3ZlcmxheSB8fCBpZCA9PSBDU1NWYWx1ZVdlYmtpdE1hcnF1ZWUpCi0g
ICAgICAgICAgICB2YWxpZFByaW1pdGl2ZSA9IHRydWU7Ci0gICAgICAgIGJyZWFrOwotCi0gICAg
Y2FzZSBDU1NQcm9wZXJ0eUxpc3RTdHlsZVBvc2l0aW9uOiAgLy8gaW5zaWRlIHwgb3V0c2lkZSB8
IGluaGVyaXQKLSAgICAgICAgaWYgKGlkID09IENTU1ZhbHVlSW5zaWRlIHx8IGlkID09IENTU1Zh
bHVlT3V0c2lkZSkKLSAgICAgICAgICAgIHZhbGlkUHJpbWl0aXZlID0gdHJ1ZTsKLSAgICAgICAg
YnJlYWs7Ci0KLSAgICBjYXNlIENTU1Byb3BlcnR5TGlzdFN0eWxlVHlwZToKLSAgICAgICAgLy8g
U2VlIHNlY3Rpb24gQ1NTX1BST1BfTElTVF9TVFlMRV9UWVBFIG9mIGZpbGUgQ1NTVmFsdWVLZXl3
b3Jkcy5pbgotICAgICAgICAvLyBmb3IgdGhlIGxpc3Qgb2Ygc3VwcG9ydGVkIGxpc3Qtc3R5bGUt
dHlwZXMuCi0gICAgICAgIGlmICgoaWQgPj0gQ1NTVmFsdWVEaXNjICYmIGlkIDw9IENTU1ZhbHVl
S2F0YWthbmFJcm9oYSkgfHwgaWQgPT0gQ1NTVmFsdWVOb25lKQotICAgICAgICAgICAgdmFsaWRQ
cmltaXRpdmUgPSB0cnVlOwotICAgICAgICBicmVhazsKLQotICAgIGNhc2UgQ1NTUHJvcGVydHlE
aXNwbGF5OgotICAgICAgICAvLyBpbmxpbmUgfCBibG9jayB8IGxpc3QtaXRlbSB8IHJ1bi1pbiB8
IGlubGluZS1ibG9jayB8IHRhYmxlIHwKLSAgICAgICAgLy8gaW5saW5lLXRhYmxlIHwgdGFibGUt
cm93LWdyb3VwIHwgdGFibGUtaGVhZGVyLWdyb3VwIHwgdGFibGUtZm9vdGVyLWdyb3VwIHwgdGFi
bGUtcm93IHwKLSAgICAgICAgLy8gdGFibGUtY29sdW1uLWdyb3VwIHwgdGFibGUtY29sdW1uIHwg
dGFibGUtY2VsbCB8IHRhYmxlLWNhcHRpb24gfCAtd2Via2l0LWJveCB8IC13ZWJraXQtaW5saW5l
LWJveCB8IG5vbmUgfCBpbmhlcml0Ci0gICAgICAgIC8vIC13ZWJraXQtZmxleGJveCB8IC13ZWJr
aXQtaW5saW5lLWZsZXhib3ggfCAtd2Via2l0LWdyaWQgfCAtd2Via2l0LWlubGluZS1ncmlkCi0g
ICAgICAgIGlmICgoaWQgPj0gQ1NTVmFsdWVJbmxpbmUgJiYgaWQgPD0gQ1NTVmFsdWVXZWJraXRJ
bmxpbmVGbGV4Ym94KSB8fCBpZCA9PSBDU1NWYWx1ZU5vbmUpCi0gICAgICAgICAgICB2YWxpZFBy
aW1pdGl2ZSA9IHRydWU7Ci0jaWYgRU5BQkxFKENTU19HUklEX0xBWU9VVCkKLSAgICAgICAgaWYg
KGlkID09IENTU1ZhbHVlV2Via2l0R3JpZCB8fCBpZCA9PSBDU1NWYWx1ZVdlYmtpdElubGluZUdy
aWQpCi0gICAgICAgICAgICB2YWxpZFByaW1pdGl2ZSA9IHRydWU7Ci0jZW5kaWYKLSAgICAgICAg
YnJlYWs7Ci0KLSAgICBjYXNlIENTU1Byb3BlcnR5RGlyZWN0aW9uOiAgICAgICAgICAgIC8vIGx0
ciB8IHJ0bCB8IGluaGVyaXQKLSAgICAgICAgaWYgKGlkID09IENTU1ZhbHVlTHRyIHx8IGlkID09
IENTU1ZhbHVlUnRsKQotICAgICAgICAgICAgdmFsaWRQcmltaXRpdmUgPSB0cnVlOwotICAgICAg
ICBicmVhazsKLQotICAgIGNhc2UgQ1NTUHJvcGVydHlUZXh0VHJhbnNmb3JtOiAgICAgICAvLyBj
YXBpdGFsaXplIHwgdXBwZXJjYXNlIHwgbG93ZXJjYXNlIHwgbm9uZSB8IGluaGVyaXQKLSAgICAg
ICAgaWYgKChpZCA+PSBDU1NWYWx1ZUNhcGl0YWxpemUgJiYgaWQgPD0gQ1NTVmFsdWVMb3dlcmNh
c2UpIHx8IGlkID09IENTU1ZhbHVlTm9uZSkKLSAgICAgICAgICAgIHZhbGlkUHJpbWl0aXZlID0g
dHJ1ZTsKLSAgICAgICAgYnJlYWs7Ci0KLSAgICBjYXNlIENTU1Byb3BlcnR5RmxvYXQ6ICAgICAg
ICAgICAgICAgIC8vIGxlZnQgfCByaWdodCB8IG5vbmUgfCBwb3NpdGlvbmVkIHwgY2VudGVyIChm
b3IgYnVnZ3kgQ1NTLCBtYXBzIHRvIG5vbmUpCi0gICAgICAgIGlmIChpZCA9PSBDU1NWYWx1ZUxl
ZnQgfHwgaWQgPT0gQ1NTVmFsdWVSaWdodAotICAgICAgICAgICAgfHwgaWQgPT0gQ1NTVmFsdWVO
b25lIHx8IGlkID09IENTU1ZhbHVlQ2VudGVyIHx8IGlkID09IENTU1ZhbHVlV2Via2l0UG9zaXRp
b25lZCkKLSAgICAgICAgICAgIHZhbGlkUHJpbWl0aXZlID0gdHJ1ZTsKLSAgICAgICAgYnJlYWs7
Ci0KLSAgICBjYXNlIENTU1Byb3BlcnR5Q2xlYXI6ICAgICAgICAgICAgICAgIC8vIG5vbmUgfCBs
ZWZ0IHwgcmlnaHQgfCBib3RoIHwgaW5oZXJpdAotICAgICAgICBpZiAoaWQgPT0gQ1NTVmFsdWVO
b25lIHx8IGlkID09IENTU1ZhbHVlTGVmdAotICAgICAgICAgICAgfHwgaWQgPT0gQ1NTVmFsdWVS
aWdodCB8fCBpZCA9PSBDU1NWYWx1ZUJvdGgpCi0gICAgICAgICAgICB2YWxpZFByaW1pdGl2ZSA9
IHRydWU7Ci0gICAgICAgIGJyZWFrOworICAgIC8qIFN0YXJ0IG9mIHN1cHBvcnRlZCBDU1MgcHJv
cGVydGllcyB3aXRoIHZhbGlkYXRpb24uIFRoaXMgaXMgbmVlZGVkIGZvciBwYXJzZVNob3J0aGFu
ZCB0byB3b3JrCisgICAgICogY29ycmVjdGx5IGFuZCBhbGxvd3Mgb3B0aW1pemF0aW9uIGluIFdl
YkNvcmU6OmFwcGx5UnVsZSguLikKKyAgICAgKi8KKyAgICBjYXNlIENTU1Byb3BlcnR5T3ZlcmZs
b3c6IHsKKyAgICAgICAgU2hvcnRoYW5kU2NvcGUgc2NvcGUodGhpcywgcHJvcElkKTsKKyAgICAg
ICAgaWYgKG51bSAhPSAxIHx8ICFwYXJzZVZhbHVlKENTU1Byb3BlcnR5T3ZlcmZsb3dYLCBpbXBv
cnRhbnQpKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICBDU1NWYWx1ZSogdmFs
dWUgPSBtX3BhcnNlZFByb3BlcnRpZXMubGFzdCgpLnZhbHVlKCk7CisgICAgICAgIGFkZFByb3Bl
cnR5KENTU1Byb3BlcnR5T3ZlcmZsb3dZLCB2YWx1ZSwgaW1wb3J0YW50KTsKKyAgICAgICAgcmV0
dXJuIHRydWU7CisgICAgfQogCiAgICAgY2FzZSBDU1NQcm9wZXJ0eVRleHRBbGlnbjoKICAgICAg
ICAgLy8gbGVmdCB8IHJpZ2h0IHwgY2VudGVyIHwganVzdGlmeSB8IHdlYmtpdF9sZWZ0IHwgd2Vi
a2l0X3JpZ2h0IHwgd2Via2l0X2NlbnRlciB8IHdlYmtpdF9tYXRjaF9wYXJlbnQgfApAQCAtMTEx
OSwyNCArMTQ4Nyw2IEBAIGJvb2wgQ1NTUGFyc2VyOjpwYXJzZVZhbHVlKGludCBwcm9wSWQsIGJv
b2wgaW1wb3J0YW50KQogICAgICAgICAgICAgdmFsaWRQcmltaXRpdmUgPSB0cnVlOwogICAgICAg
ICBicmVhazsKIAotICAgIGNhc2UgQ1NTUHJvcGVydHlPdXRsaW5lU3R5bGU6ICAgICAgICAvLyAo
PGJvcmRlci1zdHlsZT4gZXhjZXB0IGhpZGRlbikgfCBhdXRvIHwgaW5oZXJpdAotICAgICAgICBp
ZiAoaWQgPT0gQ1NTVmFsdWVBdXRvIHx8IGlkID09IENTU1ZhbHVlTm9uZSB8fCAoaWQgPj0gQ1NT
VmFsdWVJbnNldCAmJiBpZCA8PSBDU1NWYWx1ZURvdWJsZSkpCi0gICAgICAgICAgICB2YWxpZFBy
aW1pdGl2ZSA9IHRydWU7Ci0gICAgICAgIGJyZWFrOwotCi0gICAgY2FzZSBDU1NQcm9wZXJ0eUJv
cmRlclRvcFN0eWxlOiAgICAgLy8vLyA8Ym9yZGVyLXN0eWxlPiB8IGluaGVyaXQKLSAgICBjYXNl
IENTU1Byb3BlcnR5Qm9yZGVyUmlnaHRTdHlsZTogICAvLyAgIERlZmluZWQgYXM6ICAgIG5vbmUg
fCBoaWRkZW4gfCBkb3R0ZWQgfCBkYXNoZWQgfAotICAgIGNhc2UgQ1NTUHJvcGVydHlCb3JkZXJC
b3R0b21TdHlsZTogIC8vICAgc29saWQgfCBkb3VibGUgfCBncm9vdmUgfCByaWRnZSB8IGluc2V0
IHwgb3V0c2V0Ci0gICAgY2FzZSBDU1NQcm9wZXJ0eUJvcmRlckxlZnRTdHlsZToKLSAgICBjYXNl
IENTU1Byb3BlcnR5V2Via2l0Qm9yZGVyU3RhcnRTdHlsZToKLSAgICBjYXNlIENTU1Byb3BlcnR5
V2Via2l0Qm9yZGVyRW5kU3R5bGU6Ci0gICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdEJvcmRlckJl
Zm9yZVN0eWxlOgotICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRCb3JkZXJBZnRlclN0eWxlOgot
ICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRDb2x1bW5SdWxlU3R5bGU6Ci0gICAgICAgIGlmIChp
ZCA+PSBDU1NWYWx1ZU5vbmUgJiYgaWQgPD0gQ1NTVmFsdWVEb3VibGUpCi0gICAgICAgICAgICB2
YWxpZFByaW1pdGl2ZSA9IHRydWU7Ci0gICAgICAgIGJyZWFrOwotCiAgICAgY2FzZSBDU1NQcm9w
ZXJ0eUZvbnRXZWlnaHQ6ICAvLyBub3JtYWwgfCBib2xkIHwgYm9sZGVyIHwgbGlnaHRlciB8IDEw
MCB8IDIwMCB8IDMwMCB8IDQwMCB8IDUwMCB8IDYwMCB8IDcwMCB8IDgwMCB8IDkwMCB8IGluaGVy
aXQKICAgICAgICAgcmV0dXJuIHBhcnNlRm9udFdlaWdodChpbXBvcnRhbnQpOwogCkBAIC0xMzUx
LDIxICsxNzAxLDYgQEAgYm9vbCBDU1NQYXJzZXI6OnBhcnNlVmFsdWUoaW50IHByb3BJZCwgYm9v
bCBpbXBvcnRhbnQpCiAgICAgICAgICAgICB2YWxpZFByaW1pdGl2ZSA9IHZhbGlkVW5pdCh2YWx1
ZSwgRkxlbmd0aCwgbV9zdHJpY3QpOwogICAgICAgICBicmVhazsKIAotICAgIGNhc2UgQ1NTUHJv
cGVydHlXb3JkQnJlYWs6ICAgICAgICAgIC8vIG5vcm1hbCB8IGJyZWFrLWFsbCB8IGJyZWFrLXdv
cmQgKHRoaXMgaXMgYSBjdXN0b20gZXh0ZW5zaW9uKQotICAgICAgICBpZiAoaWQgPT0gQ1NTVmFs
dWVOb3JtYWwgfHwgaWQgPT0gQ1NTVmFsdWVCcmVha0FsbCB8fCBpZCA9PSBDU1NWYWx1ZUJyZWFr
V29yZCkKLSAgICAgICAgICAgIHZhbGlkUHJpbWl0aXZlID0gdHJ1ZTsKLSAgICAgICAgYnJlYWs7
Ci0KLSAgICBjYXNlIENTU1Byb3BlcnR5V29yZFdyYXA6ICAgICAgICAgICAvLyBub3JtYWwgfCBi
cmVhay13b3JkCi0gICAgICAgIGlmIChpZCA9PSBDU1NWYWx1ZU5vcm1hbCB8fCBpZCA9PSBDU1NW
YWx1ZUJyZWFrV29yZCkKLSAgICAgICAgICAgIHZhbGlkUHJpbWl0aXZlID0gdHJ1ZTsKLSAgICAg
ICAgYnJlYWs7Ci0gICAgY2FzZSBDU1NQcm9wZXJ0eVNwZWFrOiAgICAgICAgICAgLy8gbm9uZSB8
IG5vcm1hbCB8IHNwZWxsLW91dCB8IGRpZ2l0cyB8IGxpdGVyYWwtcHVuY3R1YXRpb24gfCBuby1w
dW5jdHVhdGlvbiB8IGluaGVyaXQKLSAgICAgICAgaWYgKGlkID09IENTU1ZhbHVlTm9uZSB8fCBp
ZCA9PSBDU1NWYWx1ZU5vcm1hbCB8fCBpZCA9PSBDU1NWYWx1ZVNwZWxsT3V0IHx8IGlkID09IENT
U1ZhbHVlRGlnaXRzCi0gICAgICAgICAgICB8fCBpZCA9PSBDU1NWYWx1ZUxpdGVyYWxQdW5jdHVh
dGlvbiB8fCBpZCA9PSBDU1NWYWx1ZU5vUHVuY3R1YXRpb24pCi0gICAgICAgICAgICB2YWxpZFBy
aW1pdGl2ZSA9IHRydWU7Ci0gICAgICAgIGJyZWFrOwotCiAgICAgY2FzZSBDU1NQcm9wZXJ0eVRl
eHRJbmRlbnQ6ICAgICAgICAgIC8vIDxsZW5ndGg+IHwgPHBlcmNlbnRhZ2U+IHwgaW5oZXJpdAog
ICAgICAgICB2YWxpZFByaW1pdGl2ZSA9ICghaWQgJiYgdmFsaWRVbml0KHZhbHVlLCBGTGVuZ3Ro
IHwgRlBlcmNlbnQsIG1fc3RyaWN0KSk7CiAgICAgICAgIGJyZWFrOwpAQCAtMTQwOCwxMSArMTc0
Myw2IEBAIGJvb2wgQ1NTUGFyc2VyOjpwYXJzZVZhbHVlKGludCBwcm9wSWQsIGJvb2wgaW1wb3J0
YW50KQogICAgICAgICAgICAgdmFsaWRQcmltaXRpdmUgPSAodmFsaWRVbml0KHZhbHVlLCBGTGVu
Z3RoIHwgRlBlcmNlbnQgfCBGTm9uTmVnLCBtX3N0cmljdCkpOwogICAgICAgICBicmVhazsKIAot
ICAgIGNhc2UgQ1NTUHJvcGVydHlGb250U3R5bGU6ICAgICAgICAgICAvLyBub3JtYWwgfCBpdGFs
aWMgfCBvYmxpcXVlIHwgaW5oZXJpdAotICAgICAgICBpZiAoaWQgPT0gQ1NTVmFsdWVOb3JtYWwg
fHwgaWQgPT0gQ1NTVmFsdWVJdGFsaWMgfHwgaWQgPT0gQ1NTVmFsdWVPYmxpcXVlKQotICAgICAg
ICAgICAgdmFsaWRQcmltaXRpdmUgPSB0cnVlOwotICAgICAgICBicmVhazsKLQogICAgIGNhc2Ug
Q1NTUHJvcGVydHlGb250VmFyaWFudDogICAgICAgICAvLyBub3JtYWwgfCBzbWFsbC1jYXBzIHwg
aW5oZXJpdAogICAgICAgICByZXR1cm4gcGFyc2VGb250VmFyaWFudChpbXBvcnRhbnQpOwogCkBA
IC0xNTI4LDExICsxODU4LDYgQEAgYm9vbCBDU1NQYXJzZXI6OnBhcnNlVmFsdWUoaW50IHByb3BJ
ZCwgYm9vbCBpbXBvcnRhbnQpCiAgICAgICAgICAgICB2YWxpZFByaW1pdGl2ZSA9ICghaWQgJiYg
dmFsaWRVbml0KHZhbHVlLCBGTnVtYmVyIHwgRlBlcmNlbnQgfCBGTm9uTmVnLCB0cnVlKSk7CiAg
ICAgICAgIGJyZWFrOwogCi0gICAgY2FzZSBDU1NQcm9wZXJ0eVRhYmxlTGF5b3V0OiAgICAgICAg
IC8vIGF1dG8gfCBmaXhlZCB8IGluaGVyaXQKLSAgICAgICAgaWYgKGlkID09IENTU1ZhbHVlQXV0
byB8fCBpZCA9PSBDU1NWYWx1ZUZpeGVkKQotICAgICAgICAgICAgdmFsaWRQcmltaXRpdmUgPSB0
cnVlOwotICAgICAgICBicmVhazsKLQogICAgIGNhc2UgQ1NTUHJvcGVydHlTcmM6ICAvLyBPbmx5
IHVzZWQgd2l0aGluIEBmb250LWZhY2UsIHNvIGNhbm5vdCB1c2UgaW5oZXJpdCB8IGluaXRpYWwg
b3IgYmUgIWltcG9ydGFudC4gIFRoaXMgaXMgYSBsaXN0IG9mIHVybHMgb3IgbG9jYWwgcmVmZXJl
bmNlcy4KICAgICAgICAgcmV0dXJuIHBhcnNlRm9udEZhY2VTcmMoKTsKIApAQCAtMTU0MCwxMCAr
MTg2NSw2IEBAIGJvb2wgQ1NTUGFyc2VyOjpwYXJzZVZhbHVlKGludCBwcm9wSWQsIGJvb2wgaW1w
b3J0YW50KQogICAgICAgICByZXR1cm4gcGFyc2VGb250RmFjZVVuaWNvZGVSYW5nZSgpOwogCiAg
ICAgLyogQ1NTMyBwcm9wZXJ0aWVzICovCi0gICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdEFwcGVh
cmFuY2U6Ci0gICAgICAgIGlmICgoaWQgPj0gQ1NTVmFsdWVDaGVja2JveCAmJiBpZCA8PSBDU1NW
YWx1ZVRleHRhcmVhKSB8fCBpZCA9PSBDU1NWYWx1ZU5vbmUpCi0gICAgICAgICAgICB2YWxpZFBy
aW1pdGl2ZSA9IHRydWU7Ci0gICAgICAgIGJyZWFrOwogCiAgICAgY2FzZSBDU1NQcm9wZXJ0eUJv
cmRlckltYWdlOiB7CiAgICAgICAgIFJlZlB0cjxDU1NWYWx1ZT4gcmVzdWx0OwpAQCAtMTY1MSwy
OSArMTk3Miw2IEBAIGJvb2wgQ1NTUGFyc2VyOjpwYXJzZVZhbHVlKGludCBwcm9wSWQsIGJvb2wg
aW1wb3J0YW50KQogICAgIGNhc2UgQ1NTUHJvcGVydHlPcGFjaXR5OgogICAgICAgICB2YWxpZFBy
aW1pdGl2ZSA9IHZhbGlkVW5pdCh2YWx1ZSwgRk51bWJlciwgbV9zdHJpY3QpOwogICAgICAgICBi
cmVhazsKLSAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0Qm94QWxpZ246Ci0gICAgICAgIGlmIChp
ZCA9PSBDU1NWYWx1ZVN0cmV0Y2ggfHwgaWQgPT0gQ1NTVmFsdWVTdGFydCB8fCBpZCA9PSBDU1NW
YWx1ZUVuZCB8fAotICAgICAgICAgICAgaWQgPT0gQ1NTVmFsdWVDZW50ZXIgfHwgaWQgPT0gQ1NT
VmFsdWVCYXNlbGluZSkKLSAgICAgICAgICAgIHZhbGlkUHJpbWl0aXZlID0gdHJ1ZTsKLSAgICAg
ICAgYnJlYWs7Ci0gICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdEJveERpcmVjdGlvbjoKLSAgICAg
ICAgaWYgKGlkID09IENTU1ZhbHVlTm9ybWFsIHx8IGlkID09IENTU1ZhbHVlUmV2ZXJzZSkKLSAg
ICAgICAgICAgIHZhbGlkUHJpbWl0aXZlID0gdHJ1ZTsKLSAgICAgICAgYnJlYWs7Ci0gICAgY2Fz
ZSBDU1NQcm9wZXJ0eVdlYmtpdEJveExpbmVzOgotICAgICAgICBpZiAoaWQgPT0gQ1NTVmFsdWVT
aW5nbGUgfHwgaWQgPT0gQ1NTVmFsdWVNdWx0aXBsZSkKLSAgICAgICAgICAgIHZhbGlkUHJpbWl0
aXZlID0gdHJ1ZTsKLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdEJv
eE9yaWVudDoKLSAgICAgICAgaWYgKGlkID09IENTU1ZhbHVlSG9yaXpvbnRhbCB8fCBpZCA9PSBD
U1NWYWx1ZVZlcnRpY2FsIHx8Ci0gICAgICAgICAgICBpZCA9PSBDU1NWYWx1ZUlubGluZUF4aXMg
fHwgaWQgPT0gQ1NTVmFsdWVCbG9ja0F4aXMpCi0gICAgICAgICAgICB2YWxpZFByaW1pdGl2ZSA9
IHRydWU7Ci0gICAgICAgIGJyZWFrOwotICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRCb3hQYWNr
OgotICAgICAgICBpZiAoaWQgPT0gQ1NTVmFsdWVTdGFydCB8fCBpZCA9PSBDU1NWYWx1ZUVuZCB8
fAotICAgICAgICAgICAgaWQgPT0gQ1NTVmFsdWVDZW50ZXIgfHwgaWQgPT0gQ1NTVmFsdWVKdXN0
aWZ5KQotICAgICAgICAgICAgdmFsaWRQcmltaXRpdmUgPSB0cnVlOwotICAgICAgICBicmVhazsK
ICAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0Qm94RmxleDoKICAgICAgICAgdmFsaWRQcmltaXRp
dmUgPSB2YWxpZFVuaXQodmFsdWUsIEZOdW1iZXIsIG1fc3RyaWN0KTsKICAgICAgICAgYnJlYWs7
CkBAIC0xNjgxLDEyICsxOTc5LDYgQEAgYm9vbCBDU1NQYXJzZXI6OnBhcnNlVmFsdWUoaW50IHBy
b3BJZCwgYm9vbCBpbXBvcnRhbnQpCiAgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdEJveE9yZGlu
YWxHcm91cDoKICAgICAgICAgdmFsaWRQcmltaXRpdmUgPSB2YWxpZFVuaXQodmFsdWUsIEZJbnRl
Z2VyIHwgRk5vbk5lZywgdHJ1ZSk7CiAgICAgICAgIGJyZWFrOwotICAgIGNhc2UgQ1NTUHJvcGVy
dHlCb3hTaXppbmc6Ci0gICAgICAgIHZhbGlkUHJpbWl0aXZlID0gaWQgPT0gQ1NTVmFsdWVCb3Jk
ZXJCb3ggfHwgaWQgPT0gQ1NTVmFsdWVDb250ZW50Qm94OwotICAgICAgICBicmVhazsKLSAgICBj
YXNlIENTU1Byb3BlcnR5V2Via2l0Q29sb3JDb3JyZWN0aW9uOgotICAgICAgICB2YWxpZFByaW1p
dGl2ZSA9IGlkID09IENTU1ZhbHVlU3JnYiB8fCBpZCA9PSBDU1NWYWx1ZURlZmF1bHQ7Ci0gICAg
ICAgIGJyZWFrOwogI2lmIEVOQUJMRShDU1NfRklMVEVSUykKICAgICBjYXNlIENTU1Byb3BlcnR5
V2Via2l0RmlsdGVyOgogICAgICAgICBpZiAoaWQgPT0gQ1NTVmFsdWVOb25lKQpAQCAtMTcwOSw0
NiArMjAwMSwxOCBAQCBib29sIENTU1BhcnNlcjo6cGFyc2VWYWx1ZShpbnQgcHJvcElkLCBib29s
IGltcG9ydGFudCkKICAgICAgICAgICAgIG1fdmFsdWVMaXN0LT5uZXh0KCk7CiAgICAgICAgIH0K
ICAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdEZsZXhQYWNrOgotICAg
ICAgICB2YWxpZFByaW1pdGl2ZSA9IGlkID09IENTU1ZhbHVlU3RhcnQgfHwgaWQgPT0gQ1NTVmFs
dWVFbmQgfHwgaWQgPT0gQ1NTVmFsdWVDZW50ZXIgfHwgaWQgPT0gQ1NTVmFsdWVKdXN0aWZ5IHx8
IGlkID09IENTU1ZhbHVlRGlzdHJpYnV0ZTsKLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBDU1NQ
cm9wZXJ0eVdlYmtpdEZsZXhBbGlnbjoKLSAgICAgICAgdmFsaWRQcmltaXRpdmUgPSBpZCA9PSBD
U1NWYWx1ZVN0YXJ0IHx8IGlkID09IENTU1ZhbHVlRW5kIHx8IGlkID09IENTU1ZhbHVlQ2VudGVy
IHx8IGlkID09IENTU1ZhbHVlQmFzZWxpbmUgfHwgaWQgPT0gQ1NTVmFsdWVTdHJldGNoOwotICAg
ICAgICBicmVhazsKLSAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0RmxleEl0ZW1BbGlnbjoKLSAg
ICAgICAgdmFsaWRQcmltaXRpdmUgPSBpZCA9PSBDU1NWYWx1ZUF1dG8gfHwgaWQgPT0gQ1NTVmFs
dWVTdGFydCB8fCBpZCA9PSBDU1NWYWx1ZUVuZCB8fCBpZCA9PSBDU1NWYWx1ZUNlbnRlciB8fCBp
ZCA9PSBDU1NWYWx1ZUJhc2VsaW5lIHx8IGlkID09IENTU1ZhbHVlU3RyZXRjaDsKLSAgICAgICAg
YnJlYWs7Ci0gICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdEZsZXhEaXJlY3Rpb246Ci0gICAgICAg
IHZhbGlkUHJpbWl0aXZlID0gaWQgPT0gQ1NTVmFsdWVSb3cgfHwgaWQgPT0gQ1NTVmFsdWVSb3dS
ZXZlcnNlIHx8IGlkID09IENTU1ZhbHVlQ29sdW1uIHx8IGlkID09IENTU1ZhbHVlQ29sdW1uUmV2
ZXJzZTsKLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdEZsZXhXcmFw
OgotICAgICAgICB2YWxpZFByaW1pdGl2ZSA9IGlkID09IENTU1ZhbHVlTm9uZSB8fCBpZCA9PSBD
U1NWYWx1ZVdyYXAgfHwgaWQgPT0gQ1NTVmFsdWVXcmFwUmV2ZXJzZTsKLSAgICAgICAgYnJlYWs7
Ci0gICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdEZsZXhMaW5lUGFjazoKLSAgICAgICAgdmFsaWRQ
cmltaXRpdmUgPSBpZCA9PSBDU1NWYWx1ZVN0YXJ0IHx8IGlkID09IENTU1ZhbHVlRW5kIHx8IGlk
ID09IENTU1ZhbHVlQ2VudGVyIHx8IGlkID09IENTU1ZhbHVlSnVzdGlmeSB8fCBpZCA9PSBDU1NW
YWx1ZURpc3RyaWJ1dGUgfHwgaWQgPT0gQ1NTVmFsdWVTdHJldGNoOwotICAgICAgICBicmVhazsK
ICAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0TWFycXVlZTogewogICAgICAgICBjb25zdCBpbnQg
cHJvcGVydGllc1s1XSA9IHsgQ1NTUHJvcGVydHlXZWJraXRNYXJxdWVlRGlyZWN0aW9uLCBDU1NQ
cm9wZXJ0eVdlYmtpdE1hcnF1ZWVJbmNyZW1lbnQsCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBDU1NQcm9wZXJ0eVdlYmtpdE1hcnF1ZWVSZXBldGl0aW9uLAogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgQ1NTUHJvcGVydHlXZWJraXRNYXJxdWVlU3R5bGUs
IENTU1Byb3BlcnR5V2Via2l0TWFycXVlZVNwZWVkIH07CiAgICAgICAgIHJldHVybiBwYXJzZVNo
b3J0aGFuZChwcm9wSWQsIHByb3BlcnRpZXMsIDUsIGltcG9ydGFudCk7CiAgICAgfQotICAgIGNh
c2UgQ1NTUHJvcGVydHlXZWJraXRNYXJxdWVlRGlyZWN0aW9uOgotICAgICAgICBpZiAoaWQgPT0g
Q1NTVmFsdWVGb3J3YXJkcyB8fCBpZCA9PSBDU1NWYWx1ZUJhY2t3YXJkcyB8fCBpZCA9PSBDU1NW
YWx1ZUFoZWFkIHx8Ci0gICAgICAgICAgICBpZCA9PSBDU1NWYWx1ZVJldmVyc2UgfHwgaWQgPT0g
Q1NTVmFsdWVMZWZ0IHx8IGlkID09IENTU1ZhbHVlUmlnaHQgfHwgaWQgPT0gQ1NTVmFsdWVEb3du
IHx8Ci0gICAgICAgICAgICBpZCA9PSBDU1NWYWx1ZVVwIHx8IGlkID09IENTU1ZhbHVlQXV0bykK
LSAgICAgICAgICAgIHZhbGlkUHJpbWl0aXZlID0gdHJ1ZTsKLSAgICAgICAgYnJlYWs7CiAgICAg
Y2FzZSBDU1NQcm9wZXJ0eVdlYmtpdE1hcnF1ZWVJbmNyZW1lbnQ6CiAgICAgICAgIGlmIChpZCA9
PSBDU1NWYWx1ZVNtYWxsIHx8IGlkID09IENTU1ZhbHVlTGFyZ2UgfHwgaWQgPT0gQ1NTVmFsdWVN
ZWRpdW0pCiAgICAgICAgICAgICB2YWxpZFByaW1pdGl2ZSA9IHRydWU7CiAgICAgICAgIGVsc2UK
ICAgICAgICAgICAgIHZhbGlkUHJpbWl0aXZlID0gdmFsaWRVbml0KHZhbHVlLCBGTGVuZ3RoIHwg
RlBlcmNlbnQsIG1fc3RyaWN0KTsKICAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBDU1NQcm9wZXJ0
eVdlYmtpdE1hcnF1ZWVTdHlsZToKLSAgICAgICAgaWYgKGlkID09IENTU1ZhbHVlTm9uZSB8fCBp
ZCA9PSBDU1NWYWx1ZVNsaWRlIHx8IGlkID09IENTU1ZhbHVlU2Nyb2xsIHx8IGlkID09IENTU1Zh
bHVlQWx0ZXJuYXRlKQotICAgICAgICAgICAgdmFsaWRQcmltaXRpdmUgPSB0cnVlOwotICAgICAg
ICBicmVhazsKICAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0TWFycXVlZVJlcGV0aXRpb246CiAg
ICAgICAgIGlmIChpZCA9PSBDU1NWYWx1ZUluZmluaXRlKQogICAgICAgICAgICAgdmFsaWRQcmlt
aXRpdmUgPSB0cnVlOwpAQCAtMTc3MywyMyArMjAzNyw2IEBAIGJvb2wgQ1NTUGFyc2VyOjpwYXJz
ZVZhbHVlKGludCBwcm9wSWQsIGJvb2wgaW1wb3J0YW50KQogICAgICAgICBpZiAoY3NzUmVnaW9u
c0VuYWJsZWQoKSAmJiAoaWQgPT0gQ1NTVmFsdWVBdXRvIHx8IGlkID09IENTU1ZhbHVlQnJlYWsp
KQogICAgICAgICAgICAgdmFsaWRQcmltaXRpdmUgPSB0cnVlOwogICAgICAgICBicmVhazsKLQot
ICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRVc2VyRHJhZzogLy8gYXV0byB8IG5vbmUgfCBlbGVt
ZW50Ci0gICAgICAgIGlmIChpZCA9PSBDU1NWYWx1ZUF1dG8gfHwgaWQgPT0gQ1NTVmFsdWVOb25l
IHx8IGlkID09IENTU1ZhbHVlRWxlbWVudCkKLSAgICAgICAgICAgIHZhbGlkUHJpbWl0aXZlID0g
dHJ1ZTsKLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdFVzZXJNb2Rp
Znk6IC8vIHJlYWQtb25seSB8IHJlYWQtd3JpdGUKLSAgICAgICAgaWYgKGlkID09IENTU1ZhbHVl
UmVhZE9ubHkgfHwgaWQgPT0gQ1NTVmFsdWVSZWFkV3JpdGUgfHwgaWQgPT0gQ1NTVmFsdWVSZWFk
V3JpdGVQbGFpbnRleHRPbmx5KQotICAgICAgICAgICAgdmFsaWRQcmltaXRpdmUgPSB0cnVlOwot
ICAgICAgICBicmVhazsKLSAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0VXNlclNlbGVjdDogLy8g
YXV0byB8IG5vbmUgfCB0ZXh0Ci0gICAgICAgIGlmIChpZCA9PSBDU1NWYWx1ZUF1dG8gfHwgaWQg
PT0gQ1NTVmFsdWVOb25lIHx8IGlkID09IENTU1ZhbHVlVGV4dCkKLSAgICAgICAgICAgIHZhbGlk
UHJpbWl0aXZlID0gdHJ1ZTsKLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBDU1NQcm9wZXJ0eVRl
eHRPdmVyZmxvdzogLy8gY2xpcCB8IGVsbGlwc2lzCi0gICAgICAgIGlmIChpZCA9PSBDU1NWYWx1
ZUNsaXAgfHwgaWQgPT0gQ1NTVmFsdWVFbGxpcHNpcykKLSAgICAgICAgICAgIHZhbGlkUHJpbWl0
aXZlID0gdHJ1ZTsKLSAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdFRy
YW5zZm9ybToKICAgICAgICAgaWYgKGlkID09IENTU1ZhbHVlTm9uZSkKICAgICAgICAgICAgIHZh
bGlkUHJpbWl0aXZlID0gdHJ1ZTsKQEAgLTE4MjAsMTggKzIwNjcsNiBAQCBib29sIENTU1BhcnNl
cjo6cGFyc2VWYWx1ZShpbnQgcHJvcElkLCBib29sIGltcG9ydGFudCkKICAgICAgICAgfQogICAg
ICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQotICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRUcmFu
c2Zvcm1TdHlsZToKLSAgICAgICAgaWYgKHZhbHVlLT5pZCA9PSBDU1NWYWx1ZUZsYXQgfHwgdmFs
dWUtPmlkID09IENTU1ZhbHVlUHJlc2VydmUzZCkKLSAgICAgICAgICAgIHZhbGlkUHJpbWl0aXZl
ID0gdHJ1ZTsKLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdEJhY2tm
YWNlVmlzaWJpbGl0eToKLSAgICAgICAgaWYgKHZhbHVlLT5pZCA9PSBDU1NWYWx1ZVZpc2libGUg
fHwgdmFsdWUtPmlkID09IENTU1ZhbHVlSGlkZGVuKQotICAgICAgICAgICAgdmFsaWRQcmltaXRp
dmUgPSB0cnVlOwotICAgICAgICBicmVhazsKLSAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0UHJp
bnRDb2xvckFkanVzdDoKLSAgICAgICAgaWYgKHZhbHVlLT5pZCA9PSBDU1NWYWx1ZUV4YWN0IHx8
IHZhbHVlLT5pZCA9PSBDU1NWYWx1ZUVjb25vbXkpCi0gICAgICAgICAgICB2YWxpZFByaW1pdGl2
ZSA9IHRydWU7Ci0gICAgICAgIGJyZWFrOwogICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRQZXJz
cGVjdGl2ZToKICAgICAgICAgaWYgKGlkID09IENTU1ZhbHVlTm9uZSkKICAgICAgICAgICAgIHZh
bGlkUHJpbWl0aXZlID0gdHJ1ZTsKQEAgLTE5MDksMzIgKzIxNDQsNiBAQCBib29sIENTU1BhcnNl
cjo6cGFyc2VWYWx1ZShpbnQgcHJvcElkLCBib29sIGltcG9ydGFudCkKICAgICAgICAgfQogICAg
ICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQotICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRNYXJn
aW5CZWZvcmVDb2xsYXBzZToKLSAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0TWFyZ2luQWZ0ZXJD
b2xsYXBzZToKLSAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0TWFyZ2luVG9wQ29sbGFwc2U6Ci0g
ICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdE1hcmdpbkJvdHRvbUNvbGxhcHNlOgotICAgICAgICBp
ZiAoaWQgPT0gQ1NTVmFsdWVDb2xsYXBzZSB8fCBpZCA9PSBDU1NWYWx1ZVNlcGFyYXRlIHx8IGlk
ID09IENTU1ZhbHVlRGlzY2FyZCkKLSAgICAgICAgICAgIHZhbGlkUHJpbWl0aXZlID0gdHJ1ZTsK
LSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBDU1NQcm9wZXJ0eVRleHRMaW5lVGhyb3VnaE1vZGU6
Ci0gICAgY2FzZSBDU1NQcm9wZXJ0eVRleHRPdmVybGluZU1vZGU6Ci0gICAgY2FzZSBDU1NQcm9w
ZXJ0eVRleHRVbmRlcmxpbmVNb2RlOgotICAgICAgICBpZiAoaWQgPT0gQ1NTVmFsdWVDb250aW51
b3VzIHx8IGlkID09IENTU1ZhbHVlU2tpcFdoaXRlU3BhY2UpCi0gICAgICAgICAgICB2YWxpZFBy
aW1pdGl2ZSA9IHRydWU7Ci0gICAgICAgIGJyZWFrOwotICAgIGNhc2UgQ1NTUHJvcGVydHlUZXh0
TGluZVRocm91Z2hTdHlsZToKLSAgICBjYXNlIENTU1Byb3BlcnR5VGV4dE92ZXJsaW5lU3R5bGU6
Ci0gICAgY2FzZSBDU1NQcm9wZXJ0eVRleHRVbmRlcmxpbmVTdHlsZToKLSAgICAgICAgaWYgKGlk
ID09IENTU1ZhbHVlTm9uZSB8fCBpZCA9PSBDU1NWYWx1ZVNvbGlkIHx8IGlkID09IENTU1ZhbHVl
RG91YmxlIHx8Ci0gICAgICAgICAgICBpZCA9PSBDU1NWYWx1ZURhc2hlZCB8fCBpZCA9PSBDU1NW
YWx1ZURvdERhc2ggfHwgaWQgPT0gQ1NTVmFsdWVEb3REb3REYXNoIHx8Ci0gICAgICAgICAgICBp
ZCA9PSBDU1NWYWx1ZVdhdmUpCi0gICAgICAgICAgICB2YWxpZFByaW1pdGl2ZSA9IHRydWU7Ci0g
ICAgICAgIGJyZWFrOwotICAgIGNhc2UgQ1NTUHJvcGVydHlUZXh0UmVuZGVyaW5nOiAvLyBhdXRv
IHwgb3B0aW1pemVTcGVlZCB8IG9wdGltaXplTGVnaWJpbGl0eSB8IGdlb21ldHJpY1ByZWNpc2lv
bgotICAgICAgICBpZiAoaWQgPT0gQ1NTVmFsdWVBdXRvIHx8IGlkID09IENTU1ZhbHVlT3B0aW1p
emVzcGVlZCB8fCBpZCA9PSBDU1NWYWx1ZU9wdGltaXplbGVnaWJpbGl0eQotICAgICAgICAgICAg
fHwgaWQgPT0gQ1NTVmFsdWVHZW9tZXRyaWNwcmVjaXNpb24pCi0gICAgICAgICAgICB2YWxpZFBy
aW1pdGl2ZSA9IHRydWU7Ci0gICAgICAgIGJyZWFrOwogICAgIGNhc2UgQ1NTUHJvcGVydHlUZXh0
TGluZVRocm91Z2hXaWR0aDoKICAgICBjYXNlIENTU1Byb3BlcnR5VGV4dE92ZXJsaW5lV2lkdGg6
CiAgICAgY2FzZSBDU1NQcm9wZXJ0eVRleHRVbmRlcmxpbmVXaWR0aDoKQEAgLTE5NDQsMTAgKzIx
NTMsNiBAQCBib29sIENTU1BhcnNlcjo6cGFyc2VWYWx1ZShpbnQgcHJvcElkLCBib29sIGltcG9y
dGFudCkKICAgICAgICAgZWxzZQogICAgICAgICAgICAgdmFsaWRQcmltaXRpdmUgPSAhaWQgJiYg
dmFsaWRVbml0KHZhbHVlLCBGTnVtYmVyIHwgRkxlbmd0aCB8IEZQZXJjZW50LCBtX3N0cmljdCk7
CiAgICAgICAgIGJyZWFrOwotICAgIGNhc2UgQ1NTUHJvcGVydHlSZXNpemU6IC8vIG5vbmUgfCBi
b3RoIHwgaG9yaXpvbnRhbCB8IHZlcnRpY2FsIHwgYXV0bwotICAgICAgICBpZiAoaWQgPT0gQ1NT
VmFsdWVOb25lIHx8IGlkID09IENTU1ZhbHVlQm90aCB8fCBpZCA9PSBDU1NWYWx1ZUhvcml6b250
YWwgfHwgaWQgPT0gQ1NTVmFsdWVWZXJ0aWNhbCB8fCBpZCA9PSBDU1NWYWx1ZUF1dG8pCi0gICAg
ICAgICAgICB2YWxpZFByaW1pdGl2ZSA9IHRydWU7Ci0gICAgICAgIGJyZWFrOwogICAgIGNhc2Ug
Q1NTUHJvcGVydHlXZWJraXRDb2x1bW5Db3VudDoKICAgICAgICAgaWYgKGlkID09IENTU1ZhbHVl
QXV0bykKICAgICAgICAgICAgIHZhbGlkUHJpbWl0aXZlID0gdHJ1ZTsKQEAgLTE5NzYsMTcgKzIx
ODEsNiBAQCBib29sIENTU1BhcnNlcjo6cGFyc2VWYWx1ZShpbnQgcHJvcElkLCBib29sIGltcG9y
dGFudCkKICAgICAgICAgZWxzZSAvLyBBbHdheXMgcGFyc2UgdGhpcyBwcm9wZXJ0eSBpbiBzdHJp
Y3QgbW9kZSwgc2luY2UgaXQgd291bGQgYmUgYW1iaWd1b3VzIG90aGVyd2lzZSB3aGVuIHVzZWQg
aW4gdGhlICdjb2x1bW5zJyBzaG9ydGhhbmQgcHJvcGVydHkuCiAgICAgICAgICAgICB2YWxpZFBy
aW1pdGl2ZSA9IHZhbGlkVW5pdCh2YWx1ZSwgRkxlbmd0aCwgdHJ1ZSk7CiAgICAgICAgIGJyZWFr
OwotICAgIGNhc2UgQ1NTUHJvcGVydHlQb2ludGVyRXZlbnRzOgotICAgICAgICAvLyBub25lIHwg
dmlzaWJsZVBhaW50ZWQgfCB2aXNpYmxlRmlsbCB8IHZpc2libGVTdHJva2UgfCB2aXNpYmxlIHwK
LSAgICAgICAgLy8gcGFpbnRlZCB8IGZpbGwgfCBzdHJva2UgfCBhdXRvIHwgYWxsIHwgaW5oZXJp
dAotICAgICAgICBpZiAoaWQgPT0gQ1NTVmFsdWVWaXNpYmxlIHx8IGlkID09IENTU1ZhbHVlTm9u
ZSB8fCBpZCA9PSBDU1NWYWx1ZUFsbCB8fCBpZCA9PSBDU1NWYWx1ZUF1dG8gfHwKLSAgICAgICAg
ICAgIChpZCA+PSBDU1NWYWx1ZVZpc2libGVwYWludGVkICYmIGlkIDw9IENTU1ZhbHVlU3Ryb2tl
KSkKLSAgICAgICAgICAgIHZhbGlkUHJpbWl0aXZlID0gdHJ1ZTsKLSAgICAgICAgYnJlYWs7Ci0g
ICAgY2FzZSBDU1NQcm9wZXJ0eUltYWdlUmVuZGVyaW5nOiAvLyBhdXRvIHwgb3B0aW1pemVDb250
cmFzdAotICAgICAgICBpZiAoaWQgPT0gQ1NTVmFsdWVBdXRvIHx8IGlkID09IENTU1ZhbHVlV2Vi
a2l0T3B0aW1pemVDb250cmFzdCkKLSAgICAgICAgICAgIHZhbGlkUHJpbWl0aXZlID0gdHJ1ZTsK
LSAgICAgICAgYnJlYWs7CiAgICAgLy8gRW5kIG9mIENTUzMgcHJvcGVydGllcwogCiAgICAgLy8g
QXBwbGUgc3BlY2lmaWMgcHJvcGVydGllcy4gIFRoZXNlIHdpbGwgbmV2ZXIgYmUgc3RhbmRhcmRp
emVkIGFuZCBhcmUgcHVyZWx5IHRvCkBAIC0xOTk2LDQ0ICsyMTkwLDE2IEBAIGJvb2wgQ1NTUGFy
c2VyOjpwYXJzZVZhbHVlKGludCBwcm9wSWQsIGJvb2wgaW1wb3J0YW50KQogICAgICAgICAvLyBX
aGVuIHNwZWNpZnlpbmcgZWl0aGVyIHR5cGUgb2YgdW5pdCwgcmVxdWlyZSBub24tbmVnYXRpdmUg
aW50ZWdlcnMKICAgICAgICAgdmFsaWRQcmltaXRpdmUgPSAoIWlkICYmICh2YWx1ZS0+dW5pdCA9
PSBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX1BFUkNFTlRBR0UgfHwgdmFsdWUtPmZWYWx1ZSkgJiYg
dmFsaWRVbml0KHZhbHVlLCBGSW50ZWdlciB8IEZQZXJjZW50IHwgRk5vbk5lZywgZmFsc2UpKTsK
ICAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdFRleHRTaXplQWRqdXN0
OgotICAgICAgICBpZiAoaWQgPT0gQ1NTVmFsdWVBdXRvIHx8IGlkID09IENTU1ZhbHVlTm9uZSkK
LSAgICAgICAgICAgIHZhbGlkUHJpbWl0aXZlID0gdHJ1ZTsKLSAgICAgICAgYnJlYWs7Ci0gICAg
Y2FzZSBDU1NQcm9wZXJ0eVdlYmtpdFJ0bE9yZGVyaW5nOgotICAgICAgICBpZiAoaWQgPT0gQ1NT
VmFsdWVMb2dpY2FsIHx8IGlkID09IENTU1ZhbHVlVmlzdWFsKQotICAgICAgICAgICAgdmFsaWRQ
cmltaXRpdmUgPSB0cnVlOwotICAgICAgICBicmVhazsKIAogICAgIGNhc2UgQ1NTUHJvcGVydHlX
ZWJraXRGb250U2l6ZURlbHRhOiAgICAgICAgICAgLy8gPGxlbmd0aD4KICAgICAgICAgdmFsaWRQ
cmltaXRpdmUgPSB2YWxpZFVuaXQodmFsdWUsIEZMZW5ndGgsIG1fc3RyaWN0KTsKICAgICAgICAg
YnJlYWs7CiAKLSAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0TmJzcE1vZGU6ICAgICAvLyBub3Jt
YWwgfCBzcGFjZQotICAgICAgICBpZiAoaWQgPT0gQ1NTVmFsdWVOb3JtYWwgfHwgaWQgPT0gQ1NT
VmFsdWVTcGFjZSkKLSAgICAgICAgICAgIHZhbGlkUHJpbWl0aXZlID0gdHJ1ZTsKLSAgICAgICAg
YnJlYWs7Ci0KLSAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0TGluZUJyZWFrOiAgIC8vIG5vcm1h
bCB8IGFmdGVyLXdoaXRlLXNwYWNlCi0gICAgICAgIGlmIChpZCA9PSBDU1NWYWx1ZU5vcm1hbCB8
fCBpZCA9PSBDU1NWYWx1ZUFmdGVyV2hpdGVTcGFjZSkKLSAgICAgICAgICAgIHZhbGlkUHJpbWl0
aXZlID0gdHJ1ZTsKLSAgICAgICAgYnJlYWs7Ci0KLSAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0
TWF0Y2hOZWFyZXN0TWFpbEJsb2NrcXVvdGVDb2xvcjogICAvLyBub3JtYWwgfCBtYXRjaAotICAg
ICAgICBpZiAoaWQgPT0gQ1NTVmFsdWVOb3JtYWwgfHwgaWQgPT0gQ1NTVmFsdWVNYXRjaCkKLSAg
ICAgICAgICAgIHZhbGlkUHJpbWl0aXZlID0gdHJ1ZTsKLSAgICAgICAgYnJlYWs7Ci0KICAgICBj
YXNlIENTU1Byb3BlcnR5V2Via2l0SGlnaGxpZ2h0OgogICAgICAgICBpZiAoaWQgPT0gQ1NTVmFs
dWVOb25lIHx8IHZhbHVlLT51bml0ID09IENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfU1RSSU5HKQog
ICAgICAgICAgICAgdmFsaWRQcmltaXRpdmUgPSB0cnVlOwogICAgICAgICBicmVhazsKIAotICAg
IGNhc2UgQ1NTUHJvcGVydHlXZWJraXRIeXBoZW5zOgotICAgICAgICBpZiAoaWQgPT0gQ1NTVmFs
dWVOb25lIHx8IGlkID09IENTU1ZhbHVlTWFudWFsIHx8IGlkID09IENTU1ZhbHVlQXV0bykKLSAg
ICAgICAgICAgIHZhbGlkUHJpbWl0aXZlID0gdHJ1ZTsKLSAgICAgICAgYnJlYWs7Ci0KICAgICBj
YXNlIENTU1Byb3BlcnR5V2Via2l0SHlwaGVuYXRlQ2hhcmFjdGVyOgogICAgICAgICBpZiAoaWQg
PT0gQ1NTVmFsdWVBdXRvIHx8IHZhbHVlLT51bml0ID09IENTU1ByaW1pdGl2ZVZhbHVlOjpDU1Nf
U1RSSU5HKQogICAgICAgICAgICAgdmFsaWRQcmltaXRpdmUgPSB0cnVlOwpAQCAtMjA2MSwzNiAr
MjIyNywxMSBAQCBib29sIENTU1BhcnNlcjo6cGFyc2VWYWx1ZShpbnQgcHJvcElkLCBib29sIGlt
cG9ydGFudCkKICAgICAgICAgICAgIH0KICAgICAgICAgfQogICAgICAgICBicmVhazsKLSAgICBj
YXNlIENTU1Byb3BlcnR5V2Via2l0TGluZVNuYXA6Ci0gICAgICAgIGlmIChpZCA9PSBDU1NWYWx1
ZU5vbmUgfHwgaWQgPT0gQ1NTVmFsdWVCYXNlbGluZSB8fCBpZCA9PSBDU1NWYWx1ZUNvbnRhaW4p
Ci0gICAgICAgICAgICB2YWxpZFByaW1pdGl2ZSA9IHRydWU7Ci0gICAgICAgIGJyZWFrOwotICAg
IGNhc2UgQ1NTUHJvcGVydHlXZWJraXRMaW5lQWxpZ246Ci0gICAgICAgIGlmIChpZCA9PSBDU1NW
YWx1ZU5vbmUgfHwgaWQgPT0gQ1NTVmFsdWVFZGdlcykKLSAgICAgICAgICAgIHZhbGlkUHJpbWl0
aXZlID0gdHJ1ZTsKLSAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdExv
Y2FsZToKICAgICAgICAgaWYgKGlkID09IENTU1ZhbHVlQXV0byB8fCB2YWx1ZS0+dW5pdCA9PSBD
U1NQcmltaXRpdmVWYWx1ZTo6Q1NTX1NUUklORykKICAgICAgICAgICAgIHZhbGlkUHJpbWl0aXZl
ID0gdHJ1ZTsKICAgICAgICAgYnJlYWs7CiAKLSAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0Qm9y
ZGVyRml0OgotICAgICAgICBpZiAoaWQgPT0gQ1NTVmFsdWVCb3JkZXIgfHwgaWQgPT0gQ1NTVmFs
dWVMaW5lcykKLSAgICAgICAgICAgIHZhbGlkUHJpbWl0aXZlID0gdHJ1ZTsKLSAgICAgICAgYnJl
YWs7Ci0KLSAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0VGV4dFNlY3VyaXR5OgotICAgICAgICAv
LyBkaXNjIHwgY2lyY2xlIHwgc3F1YXJlIHwgbm9uZSB8IGluaGVyaXQKLSAgICAgICAgaWYgKGlk
ID09IENTU1ZhbHVlRGlzYyB8fCBpZCA9PSBDU1NWYWx1ZUNpcmNsZSB8fCBpZCA9PSBDU1NWYWx1
ZVNxdWFyZXx8IGlkID09IENTU1ZhbHVlTm9uZSkKLSAgICAgICAgICAgIHZhbGlkUHJpbWl0aXZl
ID0gdHJ1ZTsKLSAgICAgICAgYnJlYWs7Ci0KLSAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0Rm9u
dFNtb290aGluZzoKLSAgICAgICAgaWYgKGlkID09IENTU1ZhbHVlQXV0byB8fCBpZCA9PSBDU1NW
YWx1ZU5vbmUKLSAgICAgICAgICAgIHx8IGlkID09IENTU1ZhbHVlQW50aWFsaWFzZWQgfHwgaWQg
PT0gQ1NTVmFsdWVTdWJwaXhlbEFudGlhbGlhc2VkKQotICAgICAgICAgICAgdmFsaWRQcmltaXRp
dmUgPSB0cnVlOwotICAgICAgICBicmVhazsKLQogI2lmIEVOQUJMRShEQVNIQk9BUkRfU1VQUE9S
VCkKICAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0RGFzaGJvYXJkUmVnaW9uOiAvLyA8ZGFzaGJv
YXJkLXJlZ2lvbj4gfCA8ZGFzaGJvYXJkLXJlZ2lvbj4KICAgICAgICAgaWYgKHZhbHVlLT51bml0
ID09IENTU1BhcnNlclZhbHVlOjpGdW5jdGlvbiB8fCBpZCA9PSBDU1NWYWx1ZU5vbmUpCkBAIC0y
MTEyLDEzICsyMjUzLDYgQEAgYm9vbCBDU1NQYXJzZXI6OnBhcnNlVmFsdWUoaW50IHByb3BJZCwg
Ym9vbCBpbXBvcnRhbnQpCiAgICAgICAgIGJyZWFrOwogI2VuZGlmCiAKLSNpZiBFTkFCTEUoT1ZF
UkZMT1dfU0NST0xMSU5HKQotICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRPdmVyZmxvd1Njcm9s
bGluZzoKLSAgICAgICAgaWYgKGlkID09IENTU1ZhbHVlQXV0byB8fCBpZCA9PSBDU1NWYWx1ZVRv
dWNoKQotICAgICAgICAgICAgdmFsaWRQcmltaXRpdmUgPSB0cnVlOwotICAgICAgICBicmVhazsK
LSNlbmRpZgotCiAgICAgICAgIC8qIHNob3J0aGFuZCBwcm9wZXJ0aWVzICovCiAgICAgY2FzZSBD
U1NQcm9wZXJ0eUJhY2tncm91bmQ6IHsKICAgICAgICAgLy8gUG9zaXRpb24gbXVzdCBjb21lIGJl
Zm9yZSBjb2xvciBpbiB0aGlzIGFycmF5IGJlY2F1c2UgYSBwbGFpbiBvbGQgIjAiIGlzIGEgbGVn
YWwgY29sb3IKQEAgLTIyODgsMjYgKzI0MjIsMTEgQEAgYm9vbCBDU1NQYXJzZXI6OnBhcnNlVmFs
dWUoaW50IHByb3BJZCwgYm9vbCBpbXBvcnRhbnQpCiAgICAgY2FzZSBDU1NQcm9wZXJ0eVRleHRV
bmRlcmxpbmU6CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAvLyBDU1MgVGV4dCBMYXlvdXQg
TW9kdWxlIExldmVsIDM6IFZlcnRpY2FsIHdyaXRpbmcgc3VwcG9ydAotICAgIGNhc2UgQ1NTUHJv
cGVydHlXZWJraXRXcml0aW5nTW9kZToKLSAgICAgICAgaWYgKGlkID49IENTU1ZhbHVlSG9yaXpv
bnRhbFRiICYmIGlkIDw9IENTU1ZhbHVlSG9yaXpvbnRhbEJ0KQotICAgICAgICAgICAgdmFsaWRQ
cmltaXRpdmUgPSB0cnVlOwotICAgICAgICBicmVhazsKLQotICAgIGNhc2UgQ1NTUHJvcGVydHlX
ZWJraXRUZXh0Q29tYmluZToKLSAgICAgICAgaWYgKGlkID09IENTU1ZhbHVlTm9uZSB8fCBpZCA9
PSBDU1NWYWx1ZUhvcml6b250YWwpCi0gICAgICAgICAgICB2YWxpZFByaW1pdGl2ZSA9IHRydWU7
Ci0gICAgICAgIGJyZWFrOwotCiAgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdFRleHRFbXBoYXNp
czogewogICAgICAgICBjb25zdCBpbnQgcHJvcGVydGllc1tdID0geyBDU1NQcm9wZXJ0eVdlYmtp
dFRleHRFbXBoYXNpc1N0eWxlLCBDU1NQcm9wZXJ0eVdlYmtpdFRleHRFbXBoYXNpc0NvbG9yIH07
CiAgICAgICAgIHJldHVybiBwYXJzZVNob3J0aGFuZChwcm9wSWQsIHByb3BlcnRpZXMsIFdURl9B
UlJBWV9MRU5HVEgocHJvcGVydGllcyksIGltcG9ydGFudCk7CiAgICAgfQogCi0gICAgY2FzZSBD
U1NQcm9wZXJ0eVdlYmtpdFRleHRFbXBoYXNpc1Bvc2l0aW9uOgotICAgICAgICBpZiAoaWQgPT0g
Q1NTVmFsdWVPdmVyIHx8IGlkID09IENTU1ZhbHVlVW5kZXIpCi0gICAgICAgICAgICB2YWxpZFBy
aW1pdGl2ZSA9IHRydWU7Ci0gICAgICAgIGJyZWFrOwotCiAgICAgY2FzZSBDU1NQcm9wZXJ0eVdl
YmtpdFRleHRFbXBoYXNpc1N0eWxlOgogICAgICAgICByZXR1cm4gcGFyc2VUZXh0RW1waGFzaXNT
dHlsZShpbXBvcnRhbnQpOwogCkBAIC0yMzMwLDExICsyNDQ5LDYgQEAgYm9vbCBDU1NQYXJzZXI6
OnBhcnNlVmFsdWUoaW50IHByb3BJZCwgYm9vbCBpbXBvcnRhbnQpCiAgICAgICAgICAgICByZXR1
cm4gcGFyc2VGb250RmVhdHVyZVNldHRpbmdzKGltcG9ydGFudCk7CiAgICAgICAgIGJyZWFrOwog
Ci0gICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdEZvbnRLZXJuaW5nOgotICAgICAgICBpZiAoaWQg
PT0gQ1NTVmFsdWVBdXRvIHx8IGlkID09IENTU1ZhbHVlTm9ybWFsIHx8IGlkID09IENTU1ZhbHVl
Tm9uZSkKLSAgICAgICAgICAgIHZhbGlkUHJpbWl0aXZlID0gdHJ1ZTsKLSAgICAgICAgYnJlYWs7
Ci0KICAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0Rm9udFZhcmlhbnRMaWdhdHVyZXM6CiAgICAg
ICAgIGlmIChpZCA9PSBDU1NWYWx1ZU5vcm1hbCkKICAgICAgICAgICAgIHZhbGlkUHJpbWl0aXZl
ID0gdHJ1ZTsKQEAgLTIzNDksMTUgKzI0NjMsNiBAQCBib29sIENTU1BhcnNlcjo6cGFyc2VWYWx1
ZShpbnQgcHJvcElkLCBib29sIGltcG9ydGFudCkKICAgICAgICAgZWxzZSBpZiAodmFsdWUtPnVu
aXQgPT0gQ1NTUGFyc2VyVmFsdWU6OkZ1bmN0aW9uKQogICAgICAgICAgICAgcmV0dXJuIHBhcnNl
V3JhcFNoYXBlKChwcm9wSWQgPT0gQ1NTUHJvcGVydHlXZWJraXRXcmFwU2hhcGVJbnNpZGUpLCBp
bXBvcnRhbnQpOwogICAgICAgICBicmVhazsKLSAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0V3Jh
cEZsb3c6Ci0gICAgICAgIGlmIChpZCA9PSBDU1NWYWx1ZUF1dG8gfHwgaWQgPT0gQ1NTVmFsdWVC
b3RoIHx8IGlkID09IENTU1ZhbHVlTGVmdCB8fCBpZCA9PSBDU1NWYWx1ZVJpZ2h0IHx8IGlkID09
IENTU1ZhbHVlTWF4aW11bSB8fCBpZCA9PSBDU1NWYWx1ZUNsZWFyKQotICAgICAgICAgICAgdmFs
aWRQcmltaXRpdmUgPSB0cnVlOwotICAgICAgICBicmVhazsKLQotICAgIGNhc2UgQ1NTUHJvcGVy
dHlXZWJraXRXcmFwVGhyb3VnaDoKLSAgICAgICAgaWYgKGlkID09IENTU1ZhbHVlV3JhcCB8fCBp
ZCA9PSBDU1NWYWx1ZU5vbmUpCi0gICAgICAgICAgICB2YWxpZFByaW1pdGl2ZSA9IHRydWU7Ci0g
ICAgICAgIGJyZWFrOwogICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRXcmFwTWFyZ2luOgogICAg
IGNhc2UgQ1NTUHJvcGVydHlXZWJraXRXcmFwUGFkZGluZzoKICAgICAgICAgdmFsaWRQcmltaXRp
dmUgPSAoIWlkICYmIHZhbGlkVW5pdCh2YWx1ZSwgRkxlbmd0aCB8IEZOb25OZWcsIG1fc3RyaWN0
KSk7CkBAIC0yMzY2LDYgKzI0NzEsOTYgQEAgYm9vbCBDU1NQYXJzZXI6OnBhcnNlVmFsdWUoaW50
IHByb3BJZCwgYm9vbCBpbXBvcnRhbnQpCiAgICAgICAgIGNvbnN0IGludCBwcm9wZXJ0aWVzW10g
PSB7IENTU1Byb3BlcnR5V2Via2l0V3JhcEZsb3csIENTU1Byb3BlcnR5V2Via2l0V3JhcE1hcmdp
biwgQ1NTUHJvcGVydHlXZWJraXRXcmFwUGFkZGluZyB9OwogICAgICAgICByZXR1cm4gcGFyc2VT
aG9ydGhhbmQocHJvcElkLCBwcm9wZXJ0aWVzLCBXVEZfQVJSQVlfTEVOR1RIKHByb3BlcnRpZXMp
LCBpbXBvcnRhbnQpOwogICAgIH0KKyAgICBjYXNlIENTU1Byb3BlcnR5Qm9yZGVyQm90dG9tU3R5
bGU6CisgICAgY2FzZSBDU1NQcm9wZXJ0eUJvcmRlckNvbGxhcHNlOgorICAgIGNhc2UgQ1NTUHJv
cGVydHlCb3JkZXJMZWZ0U3R5bGU6CisgICAgY2FzZSBDU1NQcm9wZXJ0eUJvcmRlclJpZ2h0U3R5
bGU6CisgICAgY2FzZSBDU1NQcm9wZXJ0eUJvcmRlclRvcFN0eWxlOgorICAgIGNhc2UgQ1NTUHJv
cGVydHlCb3hTaXppbmc6CisgICAgY2FzZSBDU1NQcm9wZXJ0eUNhcHRpb25TaWRlOgorICAgIGNh
c2UgQ1NTUHJvcGVydHlDbGVhcjoKKyAgICBjYXNlIENTU1Byb3BlcnR5RGlyZWN0aW9uOgorICAg
IGNhc2UgQ1NTUHJvcGVydHlEaXNwbGF5OgorICAgIGNhc2UgQ1NTUHJvcGVydHlFbXB0eUNlbGxz
OgorICAgIGNhc2UgQ1NTUHJvcGVydHlGbG9hdDoKKyAgICBjYXNlIENTU1Byb3BlcnR5Rm9udFN0
eWxlOgorICAgIGNhc2UgQ1NTUHJvcGVydHlJbWFnZVJlbmRlcmluZzoKKyAgICBjYXNlIENTU1By
b3BlcnR5TGlzdFN0eWxlUG9zaXRpb246CisgICAgY2FzZSBDU1NQcm9wZXJ0eUxpc3RTdHlsZVR5
cGU6CisgICAgY2FzZSBDU1NQcm9wZXJ0eU91dGxpbmVTdHlsZToKKyAgICBjYXNlIENTU1Byb3Bl
cnR5T3ZlcmZsb3dYOgorICAgIGNhc2UgQ1NTUHJvcGVydHlPdmVyZmxvd1k6CisgICAgY2FzZSBD
U1NQcm9wZXJ0eVBvaW50ZXJFdmVudHM6CisgICAgY2FzZSBDU1NQcm9wZXJ0eVBvc2l0aW9uOgor
ICAgIGNhc2UgQ1NTUHJvcGVydHlSZXNpemU6CisgICAgY2FzZSBDU1NQcm9wZXJ0eVNwZWFrOgor
ICAgIGNhc2UgQ1NTUHJvcGVydHlUYWJsZUxheW91dDoKKyAgICBjYXNlIENTU1Byb3BlcnR5VGV4
dExpbmVUaHJvdWdoTW9kZToKKyAgICBjYXNlIENTU1Byb3BlcnR5VGV4dExpbmVUaHJvdWdoU3R5
bGU6CisgICAgY2FzZSBDU1NQcm9wZXJ0eVRleHRPdmVyZmxvdzoKKyAgICBjYXNlIENTU1Byb3Bl
cnR5VGV4dE92ZXJsaW5lTW9kZToKKyAgICBjYXNlIENTU1Byb3BlcnR5VGV4dE92ZXJsaW5lU3R5
bGU6CisgICAgY2FzZSBDU1NQcm9wZXJ0eVRleHRSZW5kZXJpbmc6CisgICAgY2FzZSBDU1NQcm9w
ZXJ0eVRleHRUcmFuc2Zvcm06CisgICAgY2FzZSBDU1NQcm9wZXJ0eVRleHRVbmRlcmxpbmVNb2Rl
OgorICAgIGNhc2UgQ1NTUHJvcGVydHlUZXh0VW5kZXJsaW5lU3R5bGU6CisgICAgY2FzZSBDU1NQ
cm9wZXJ0eVZpc2liaWxpdHk6CisgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdEFwcGVhcmFuY2U6
CisgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdEJhY2tmYWNlVmlzaWJpbGl0eToKKyAgICBjYXNl
IENTU1Byb3BlcnR5V2Via2l0Qm9yZGVyQWZ0ZXJTdHlsZToKKyAgICBjYXNlIENTU1Byb3BlcnR5
V2Via2l0Qm9yZGVyQmVmb3JlU3R5bGU6CisgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdEJvcmRl
ckVuZFN0eWxlOgorICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRCb3JkZXJGaXQ6CisgICAgY2Fz
ZSBDU1NQcm9wZXJ0eVdlYmtpdEJvcmRlclN0YXJ0U3R5bGU6CisgICAgY2FzZSBDU1NQcm9wZXJ0
eVdlYmtpdEJveEFsaWduOgorICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRCb3hEaXJlY3Rpb246
CisgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdEJveExpbmVzOgorICAgIGNhc2UgQ1NTUHJvcGVy
dHlXZWJraXRCb3hPcmllbnQ6CisgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdEJveFBhY2s6Cisg
ICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdENvbG9yQ29ycmVjdGlvbjoKKyAgICBjYXNlIENTU1By
b3BlcnR5V2Via2l0Q29sdW1uUnVsZVN0eWxlOgorICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRG
bGV4QWxpZ246CisgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdEZsZXhEaXJlY3Rpb246CisgICAg
Y2FzZSBDU1NQcm9wZXJ0eVdlYmtpdEZsZXhJdGVtQWxpZ246CisgICAgY2FzZSBDU1NQcm9wZXJ0
eVdlYmtpdEZsZXhMaW5lUGFjazoKKyAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0RmxleFBhY2s6
CisgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdEZsZXhXcmFwOgorICAgIGNhc2UgQ1NTUHJvcGVy
dHlXZWJraXRGb250S2VybmluZzoKKyAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0Rm9udFNtb290
aGluZzoKKyAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0SHlwaGVuczoKKyAgICBjYXNlIENTU1By
b3BlcnR5V2Via2l0TGluZUFsaWduOgorICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRMaW5lQnJl
YWs6CisgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdExpbmVTbmFwOgorICAgIGNhc2UgQ1NTUHJv
cGVydHlXZWJraXRNYXJnaW5BZnRlckNvbGxhcHNlOgorICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJr
aXRNYXJnaW5CZWZvcmVDb2xsYXBzZToKKyAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0TWFyZ2lu
Qm90dG9tQ29sbGFwc2U6CisgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdE1hcmdpblRvcENvbGxh
cHNlOgorICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRNYXJxdWVlRGlyZWN0aW9uOgorICAgIGNh
c2UgQ1NTUHJvcGVydHlXZWJraXRNYXJxdWVlU3R5bGU6CisgICAgY2FzZSBDU1NQcm9wZXJ0eVdl
YmtpdE1hdGNoTmVhcmVzdE1haWxCbG9ja3F1b3RlQ29sb3I6CisgICAgY2FzZSBDU1NQcm9wZXJ0
eVdlYmtpdE5ic3BNb2RlOgorI2lmIEVOQUJMRShPVkVSRkxPV19TQ1JPTExJTkcpCisgICAgY2Fz
ZSBDU1NQcm9wZXJ0eVdlYmtpdE92ZXJmbG93U2Nyb2xsaW5nOgorI2VuZGlmCisgICAgY2FzZSBD
U1NQcm9wZXJ0eVdlYmtpdFByaW50Q29sb3JBZGp1c3Q6CisgICAgY2FzZSBDU1NQcm9wZXJ0eVdl
YmtpdFJ0bE9yZGVyaW5nOgorICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRUZXh0Q29tYmluZToK
KyAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0VGV4dEVtcGhhc2lzUG9zaXRpb246CisgICAgY2Fz
ZSBDU1NQcm9wZXJ0eVdlYmtpdFRleHRTZWN1cml0eToKKyAgICBjYXNlIENTU1Byb3BlcnR5V2Vi
a2l0VGV4dFNpemVBZGp1c3Q6CisgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdFRyYW5zZm9ybVN0
eWxlOgorICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRVc2VyRHJhZzoKKyAgICBjYXNlIENTU1By
b3BlcnR5V2Via2l0VXNlck1vZGlmeToKKyAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0VXNlclNl
bGVjdDoKKyAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0V3JhcEZsb3c6CisgICAgY2FzZSBDU1NQ
cm9wZXJ0eVdlYmtpdFdyYXBUaHJvdWdoOgorICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRXcml0
aW5nTW9kZToKKyAgICBjYXNlIENTU1Byb3BlcnR5V2hpdGVTcGFjZToKKyAgICBjYXNlIENTU1By
b3BlcnR5V29yZEJyZWFrOgorICAgIGNhc2UgQ1NTUHJvcGVydHlXb3JkV3JhcDoKKyAgICAgICAg
Ly8gVGhlc2UgcHJvcGVydGllcyBzaG91bGQgYmUgaGFuZGxlZCBiZWZvcmUgaW4gaXNWYWxpZEtl
eXdvcmRQcm9wZXJ0eUFuZFZhbHVlKCkuCisgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwor
ICAgICAgICByZXR1cm4gZmFsc2U7CiAjaWYgRU5BQkxFKFNWRykKICAgICBkZWZhdWx0OgogICAg
ICAgICByZXR1cm4gcGFyc2VTVkdWYWx1ZShwcm9wSWQsIGltcG9ydGFudCk7Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>