<?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>50916</bug_id>
          
          <creation_ts>2010-12-13 04:40:15 -0800</creation_ts>
          <short_desc>Add support for dir=auto</short_desc>
          <delta_ts>2011-02-18 13:29:44 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>DOM</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>OS X 10.5</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc>http://dev.w3.org/html5/spec/Overview.html#the-dir-attribute</bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>53791</dependson>
          <blocked>50910</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Jeremy Moskovich">playmobil</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>aharon</cc>
    
    <cc>dglazkov</cc>
    
    <cc>hyatt</cc>
    
    <cc>mitz</cc>
    
    <cc>rniwa</cc>
    
    <cc>webkit.review.bot</cc>
    
    <cc>xji</cc>
    
    <cc>yael</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>321047</commentid>
    <comment_count>0</comment_count>
    <who name="Jeremy Moskovich">playmobil</who>
    <bug_when>2010-12-13 04:40:15 -0800</bug_when>
    <thetext>From http://dev.w3.org/html5/spec/Overview.html#the-dir-attribute:

The auto keyword, which maps to the auto state
Indicates that the contents of the element are explicitly embedded text, but that the direction is to be determined programmatically using the contents of the element (as described below).

The heuristic used by this state is very crude (it just looks at the first character with a strong directionality, in a manner analogous to the Paragraph Level determination in the bidirectional algorithm). Authors are urged to only use this value as a last resort when the direction of the text is truly unknown and no better server-side heuristic can be applied.

...

If the element&apos;s dir attribute is in the auto state
If the element is a bdi element and the dir attribute is not in a defined state (i.e. it is not present or has an invalid value)
Find the first character in tree order that matches the following criteria:

The character is from a text node that is a descendant of the element whose directionality is being determined.

The character is of bidirectional character type L, AL, or R. [BIDI]

The character is not in a text node that has an ancestor element that is a descendant of the element whose directionality is being determined and that is either:

A bdi element.
A script element.
A style element.
An element with a dir attribute in a defined state.
If such a character is found and it is of bidirectional character type AL or R, the directionality of the element is &apos;rtl&apos;.

Otherwise, the directionality of the element is &apos;ltr&apos;.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>342925</commentid>
    <comment_count>1</comment_count>
      <attachid>80700</attachid>
    <who name="Yael">yael</who>
    <bug_when>2011-01-31 17:14:04 -0800</bug_when>
    <thetext>Created attachment 80700
Patch.

This patch adds support for dir=&quot;auto&quot; by calling defaultWritingMode when we encounter an element with dir=&quot;auto&quot;.
A flag was added to indicate that a node or one of its ancestors has this attribute and value, so that we can detect DOM changes quickly and adjust the directionality accordingly.
The flag is one bit in an existing flag, so it does not consume extra memory.

This patch will fail to build on Windows, I will fix that in a future version of the patch.

This patch will fail the style check. I don&apos;t think we should fix these style errors.
(one error for consistency with the rest of the file, and the second error is wrong).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>343166</commentid>
    <comment_count>2</comment_count>
    <who name="Yael">yael</who>
    <bug_when>2011-02-01 05:27:52 -0800</bug_when>
    <thetext>(In reply to comment #1)
&gt; Created an attachment (id=80700) [details]
&gt; Patch.
&gt; 
&gt; This patch will fail to build on Windows, I will fix that in a future version of the patch.
&gt; 
I thought I needed to update Windows&apos; def files but I guess not :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>343336</commentid>
    <comment_count>3</comment_count>
      <attachid>80700</attachid>
    <who name="">mitz</who>
    <bug_when>2011-02-01 10:43:32 -0800</bug_when>
    <thetext>Comment on attachment 80700
Patch.

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

&gt; Source/WebCore/html/HTMLElement.cpp:162
&gt; +        if (equalIgnoringCase(attr-&gt;value(), &quot;auto&quot;))
&gt; +            setHasDirAutoFlagRecursively(true);
&gt; +        else 
&gt; +            setHasDirAutoFlagRecursively(false);

It’s not clear to me how this won’t result in clearing the flag on descendants that have dir=&quot;auto&quot; specified when the ancestor changes from &quot;auto&quot; to non-&quot;auto&quot;.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>343371</commentid>
    <comment_count>4</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-02-01 11:23:16 -0800</bug_when>
    <thetext>Attachment 80700 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;LayoutTests/ChangeLog&apos;, u&apos;LayoutTests/fast...&quot; exit_code: 1

Source/WebCore/dom/Node.cpp:2998:  Extra space after ( in if  [whitespace/parens] [5]
Source/WebCore/css/CSSStyleSelector.cpp:3382:  One line control clauses should not use braces.  [whitespace/braces] [4]
Source/WebCore/dom/Node.h:711:  The parameter name &quot;flag&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/WebCore/css/CSSParser.cpp:734:  One space before end of line comments  [whitespace/comments] [5]
Total errors found: 4 in 24 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>343412</commentid>
    <comment_count>5</comment_count>
    <who name="Yael">yael</who>
    <bug_when>2011-02-01 12:20:11 -0800</bug_when>
    <thetext>(In reply to comment #3)
&gt; (From update of attachment 80700 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=80700&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/html/HTMLElement.cpp:162
&gt; &gt; +        if (equalIgnoringCase(attr-&gt;value(), &quot;auto&quot;))
&gt; &gt; +            setHasDirAutoFlagRecursively(true);
&gt; &gt; +        else 
&gt; &gt; +            setHasDirAutoFlagRecursively(false);
&gt; 
&gt; It’s not clear to me how this won’t result in clearing the flag on descendants that have dir=&quot;auto&quot; specified when the ancestor changes from &quot;auto&quot; to non-&quot;auto&quot;.

You are right, we will lose the flag in that case. I&apos;ll update the patch to correct that.
thanks!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>343584</commentid>
    <comment_count>6</comment_count>
      <attachid>80835</attachid>
    <who name="Yael">yael</who>
    <bug_when>2011-02-01 15:14:52 -0800</bug_when>
    <thetext>Created attachment 80835
Patch.

Address comment #3. Make sure not to clear the flag if a descendant element also has dir=auto attribute.
Modified one of the new layout tests to test for this situation.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>343586</commentid>
    <comment_count>7</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-02-01 15:17:59 -0800</bug_when>
    <thetext>Attachment 80835 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;LayoutTests/ChangeLog&apos;, u&apos;LayoutTests/fast...&quot; exit_code: 1

Source/WebCore/css/CSSStyleSelector.cpp:3384:  One line control clauses should not use braces.  [whitespace/braces] [4]
Source/WebCore/css/CSSParser.cpp:734:  One space before end of line comments  [whitespace/comments] [5]
Total errors found: 2 in 24 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>343618</commentid>
    <comment_count>8</comment_count>
    <who name="Yael">yael</who>
    <bug_when>2011-02-01 15:53:21 -0800</bug_when>
    <thetext>(In reply to comment #7)
&gt; Attachment 80835 [details] did not pass style-queue:
&gt; 
&gt; Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;LayoutTests/ChangeLog&apos;, u&apos;LayoutTests/fast...&quot; exit_code: 1
&gt; 
&gt; Source/WebCore/css/CSSStyleSelector.cpp:3384:  One line control clauses should not use braces.  [whitespace/braces] [4]
&gt; Source/WebCore/css/CSSParser.cpp:734:  One space before end of line comments  [whitespace/comments] [5]
&gt; Total errors found: 2 in 24 files
&gt; 
&gt; 
&gt; If any of these errors are false positives, please file a bug against check-webkit-style.

Filed https://bugs.webkit.org/show_bug.cgi?id=53544.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>343895</commentid>
    <comment_count>9</comment_count>
    <who name="">mitz</who>
    <bug_when>2011-02-02 00:08:58 -0800</bug_when>
    <thetext>Further thoughts: I don’t think using the style system in this manner is appropriate. You are allowing CSS to specify &apos;direction: auto&apos;, which will get resolved to &apos;ltr&apos; or &apos;rtl&apos; at (an) arbitrary time(s). We shouldn’t expose this ability through CSS, and definitely not via a standard value like &apos;auto&apos;. (Of course, a CSS value of &apos;auto&apos; for the &apos;direction&apos; property might be useful, and unlike this HTML construct, could take generated content into account when resolving and ignore non-rendered content, but that’s outside the scope of this bug).

The way you use setHasDirAutoFlagRecursively() is inconsistent: when &apos;dir&apos; is changed from &apos;auto&apos; to &apos;ltr&apos;, the element will lose its “self or ancestor has dir=auto” flag even if it does in fact have a dir=auto ancestor. Maybe that’s okay (and the flag is just poorly named), but then again, at other times, the flag could be set on that element. Is this a good idea?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>344139</commentid>
    <comment_count>10</comment_count>
      <attachid>80951</attachid>
    <who name="Yael">yael</who>
    <bug_when>2011-02-02 12:29:18 -0800</bug_when>
    <thetext>Created attachment 80951
Patch.

Address comment #9.
dir=auto is resolved in the dom now, not in the css, and more checks were added when removing the flag SelfOrAncestorHasDirAutoFlag.
If you think the flag&apos;s name is inappropriate, could you please suggest how to change it ? thanks.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>344155</commentid>
    <comment_count>11</comment_count>
      <attachid>80951</attachid>
    <who name="Dave Hyatt">hyatt</who>
    <bug_when>2011-02-02 12:54:54 -0800</bug_when>
    <thetext>Comment on attachment 80951
Patch.

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

&gt; Source/WebCore/css/CSSValueKeywords.in:371
&gt; +# auto

You don&apos;t need this any longer.

&gt; Source/WebCore/html/HTMLElement.h:112
&gt; +    TextDirection directionality();

This can be const, right?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>344222</commentid>
    <comment_count>12</comment_count>
    <who name="Yael">yael</who>
    <bug_when>2011-02-02 13:58:42 -0800</bug_when>
    <thetext>(In reply to comment #11)
thanks for reviewing,
&gt; (From update of attachment 80951 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=80951&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/css/CSSValueKeywords.in:371
&gt; &gt; +# auto
&gt; 
&gt; You don&apos;t need this any longer.
&gt; 
Right, I forgot to remove it.

&gt; &gt; Source/WebCore/html/HTMLElement.h:112
&gt; &gt; +    TextDirection directionality();
&gt; 
&gt; This can be const, right?
right, it should be const.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>344243</commentid>
    <comment_count>13</comment_count>
      <attachid>80968</attachid>
    <who name="Yael">yael</who>
    <bug_when>2011-02-02 14:15:39 -0800</bug_when>
    <thetext>Created attachment 80968
Patch.

Address comment #11.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>344281</commentid>
    <comment_count>14</comment_count>
      <attachid>80968</attachid>
    <who name="">mitz</who>
    <bug_when>2011-02-02 14:48:43 -0800</bug_when>
    <thetext>Comment on attachment 80968
Patch.

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

&gt; Source/JavaScriptCore/ChangeLog:14
&gt; +        * JavaScriptCore.exp:
&gt; +        * JavaScriptCore.order:
&gt; +        * wtf/text/StringImpl.cpp:
&gt; +        (WTF::StringImpl::defaultWritingDirection):
&gt; +        * wtf/text/StringImpl.h:
&gt; +        * wtf/text/WTFString.h:
&gt; +        (WTF::String::defaultWritingDirection):

What happened to the change log comments?

&gt; Source/WebCore/ChangeLog:29
&gt; +        * css/CSSStyleSelector.cpp:
&gt; +        (WebCore::CSSStyleSelector::canShareStyleWithElement):
&gt; +        * dom/Element.cpp:
&gt; +        (WebCore::Element::adjustElementDirectionalityIfNeededAfterChildrenChanged):
&gt; +        (WebCore::Element::childrenChanged):
&gt; +        * dom/Element.h:
&gt; +        * dom/Node.cpp:
&gt; +        (WebCore::Node::attach):
&gt; +        (WebCore::Node::setHasDirAutoFlagRecursively):
&gt; +        * dom/Node.h:
&gt; +        (WebCore::Node::selfOrAncestorHasDirAutoAttribute):
&gt; +        * html/HTMLElement.cpp:
&gt; +        (WebCore::HTMLElement::mapToEntry):
&gt; +        (WebCore::HTMLElement::parseMappedAttribute):
&gt; +        (WebCore::HTMLElement::directionality):
&gt; +        (WebCore::HTMLElement::adjustDirectionalityAfterChildrenChanged):
&gt; +        * html/HTMLElement.h:

Same here.

&gt; Source/WebCore/dom/Node.cpp:1255
&gt; +    if (parentNode() &amp;&amp; parentNode()-&gt;getFlag(SelfOrAncestorHasDirAutoFlag))
&gt; +        setFlag(SelfOrAncestorHasDirAutoFlag);
&gt; +

It’s strange that inheriting this bit from the parent happens in attach() and not when actually being added to the parent in the DOM tree. It is also not cleared when attaching under a parent that doesn’t have the flag set, so it seems as if you can move a subtree from under a dir=&quot;auto&quot; parent to a dir=&quot;ltr&quot; parent and the subtree will maintain the flag.

I am still fuzzy on whether this patch (a) handles all dynamic cases correctly and (b) does not scan descendants multiple times as the tree is constructed. I guess that depends on when childrenChanged() is called during parsing.

&gt; Source/WebCore/html/HTMLElement.cpp:905
&gt; +    setAttribute(dirAttr, textDirection == LTR ? &quot;ltr&quot; : &quot; rtl&quot;);

Did you mean to set the attribute here?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>344479</commentid>
    <comment_count>15</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-02-02 18:36:10 -0800</bug_when>
    <thetext>Attachment 80968 did not build on chromium:
Build output: http://queues.webkit.org/results/7687739</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>344520</commentid>
    <comment_count>16</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-02-02 21:12:22 -0800</bug_when>
    <thetext>Attachment 80968 did not build on mac:
Build output: http://queues.webkit.org/results/7689411</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>344592</commentid>
    <comment_count>17</comment_count>
      <attachid>80968</attachid>
    <who name="Jeremy Moskovich">playmobil</who>
    <bug_when>2011-02-03 01:39:05 -0800</bug_when>
    <thetext>Comment on attachment 80968
Patch.

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

Disclaimer: I&apos;m not a WebKit reviewer, feel free to ignore my comments.

My comments are mainly targeted at making things a little easier to understand for non-native language speakers

&gt; Source/WebCore/html/HTMLElement.cpp:868
&gt; +    ASSERT(equalIgnoringCase(fastGetAttribute(dirAttr), &quot;auto&quot;));

It&apos;s only legal to call this method on an element which has dir=auto set?
Could you add a comment on why that is?

&gt; Source/WebCore/html/HTMLElement.cpp:895
&gt; +    return direction;

It looks like you don&apos;t modify direction in the function body, can you just return LTR here?

&gt; LayoutTests/fast/dom/HTMLElement/attr-dir-auto-change-child-node.html:19
&gt; +description(&apos;Test that when an element has dir attribute with value &quot;auto&quot;, if its first child changes, the element\&apos;s directionality is re-evaluated.&apos;);

How about:
Test that directionality is re-evaluated when an element with dir=auto set, has it&apos;s first child modified.

The current description was a little hard for me to parse :) , same comment for other tests below.

&gt; LayoutTests/fast/dom/HTMLElement/attr-dir-auto.html:17
&gt; +&lt;div id=&quot;ltr&quot; dir=&quot;auto&quot; class=&quot;testDiv&quot;&gt;Test test test&lt;/div&gt;

Perhaps give this an id of left-to-right or similar so someone looking at the test doesn&apos;t get confused with the dir attribute?

&gt; LayoutTests/fast/dom/HTMLElement/attr-dir-auto.html:19
&gt; +&lt;div id=&quot;rtl1&quot; dir=&quot;auto&quot; class=&quot;testDiv&quot;&gt;××§××¨ ××©× ×¢××¨××ª&lt;/div&gt;

How about putting an &quot;!&quot; at the end of the string e.g. 
FOO!

For RTL the ! will be on the right side and for LTR it&apos;ll be on the left side.

This way you can phrase the pass/fail text above as:
&quot;!&quot; should be on the right side of the string.

This makes it easier for non-RTL speakers to tell that the test is passing when doing a visual inspection.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>344677</commentid>
    <comment_count>18</comment_count>
    <who name="Yael">yael</who>
    <bug_when>2011-02-03 06:40:48 -0800</bug_when>
    <thetext>(In reply to comment #14)
Thank you for your review,
&gt; (From update of attachment 80968 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=80968&amp;action=review
&gt; 
&gt; What happened to the change log comments?
&gt; 
Sorry, forgot to add them back after re-genrating the changelog :(

&gt; &gt; Source/WebCore/ChangeLog:29
&gt; 
&gt; Same here.
&gt; 
Yup, forgot them here too :(

&gt; &gt; Source/WebCore/dom/Node.cpp:1255
&gt; &gt; +    if (parentNode() &amp;&amp; parentNode()-&gt;getFlag(SelfOrAncestorHasDirAutoFlag))
&gt; &gt; +        setFlag(SelfOrAncestorHasDirAutoFlag);
&gt; &gt; +
&gt; 
&gt; It’s strange that inheriting this bit from the parent happens in attach() and not when actually being added to the parent in the DOM tree. It is also not cleared when attaching under a parent that doesn’t have the flag set, so it seems as if you can move a subtree from under a dir=&quot;auto&quot; parent to a dir=&quot;ltr&quot; parent and the subtree will maintain the flag.
&gt; 
I am not sure I understand the difference between &quot;Node::attach&quot; and adding to the parent in the DOM tree? I was wondering if I should do something in detach(), and I guess I should. However, is detach() not the same as removing a node from the DOM ?

&gt; I am still fuzzy on whether this patch (a) handles all dynamic cases correctly and (b) does not scan descendants multiple times as the tree is constructed. I guess that depends on when childrenChanged() is called during parsing.
&gt; 
You are right, there are multiple scanning during construction. I&apos;ll see if I can mark only the part of the tree up to the first relevant text node.

&gt; &gt; Source/WebCore/html/HTMLElement.cpp:905
&gt; &gt; +    setAttribute(dirAttr, textDirection == LTR ? &quot;ltr&quot; : &quot; rtl&quot;);
&gt; 
&gt; Did you mean to set the attribute here?
No, I wanted to change the css direction on the existing attribute. sorry about that.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>344689</commentid>
    <comment_count>19</comment_count>
    <who name="Yael">yael</who>
    <bug_when>2011-02-03 07:03:46 -0800</bug_when>
    <thetext>(In reply to comment #17)
Thanks for your comments,
&gt; (From update of attachment 80968 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=80968&amp;action=review
&gt; &gt; Source/WebCore/html/HTMLElement.cpp:868
&gt; &gt; +    ASSERT(equalIgnoringCase(fastGetAttribute(dirAttr), &quot;auto&quot;));
&gt; 
&gt; It&apos;s only legal to call this method on an element which has dir=auto set?
&gt; Could you add a comment on why that is?
&gt; 
I am not sure what is the use for calling this function unless the element has the attribute dir=&quot;auto&quot; ?

&gt; &gt; Source/WebCore/html/HTMLElement.cpp:895
&gt; &gt; +    return direction;
&gt; 
&gt; It looks like you don&apos;t modify direction in the function body, can you just return LTR here?
&gt; 
True, direction is redundant here and can be removed.

&gt; &gt; LayoutTests/fast/dom/HTMLElement/attr-dir-auto-change-child-node.html:19
&gt; &gt; +description(&apos;Test that when an element has dir attribute with value &quot;auto&quot;, if its first child changes, the element\&apos;s directionality is re-evaluated.&apos;);
&gt; 
&gt; How about:
&gt; Test that directionality is re-evaluated when an element with dir=auto set, has it&apos;s first child modified.
&gt; 
ok

&gt; The current description was a little hard for me to parse :) , same comment for other tests below.
&gt; 
&gt; &gt; LayoutTests/fast/dom/HTMLElement/attr-dir-auto.html:17
&gt; &gt; +&lt;div id=&quot;ltr&quot; dir=&quot;auto&quot; class=&quot;testDiv&quot;&gt;Test test test&lt;/div&gt;
&gt; 
&gt; Perhaps give this an id of left-to-right or similar so someone looking at the test doesn&apos;t get confused with the dir attribute?
&gt; 
ok

&gt; &gt; LayoutTests/fast/dom/HTMLElement/attr-dir-auto.html:19
&gt; &gt; +&lt;div id=&quot;rtl1&quot; dir=&quot;auto&quot; class=&quot;testDiv&quot;&gt;××§××¨ ××©× ×¢××¨××ª&lt;/div&gt;
&gt; 
&gt; How about putting an &quot;!&quot; at the end of the string e.g. 
&gt; FOO!
&gt; 
&gt; For RTL the ! will be on the right side and for LTR it&apos;ll be on the left side.
&gt; 
&gt; This way you can phrase the pass/fail text above as:
&gt; &quot;!&quot; should be on the right side of the string.
&gt; 
&gt; This makes it easier for non-RTL speakers to tell that the test is passing when doing a visual inspection.
The Hebrew text looks like garbage in the &quot;expected results&quot; text file, so I would not want to keep it in the expected results. Other tests that I saw also remove the text  from the expected results. 
How about if I add a comment explaining that a green border indicates right-to-left and red border indicates left-to-right ?
Of course, if there is a convention for right to left testing, I will be happy to follow that.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>346202</commentid>
    <comment_count>20</comment_count>
      <attachid>81377</attachid>
    <who name="Yael">yael</who>
    <bug_when>2011-02-05 15:04:58 -0800</bug_when>
    <thetext>Created attachment 81377
Patch.

When an element has dir attribute with value &quot;auto&quot;, call defaultWritingMode to find its directionality.
Added a flag SelfOrAncestorHasDirAutoFlag, and added hooks in the DOM to set and check this flag. This flag is set on every node between an element with dir=auto attribute and its first text node. Changes in the DOM between those elements will trigger re-evaluating the directionality, but changed not between those element do not need to be concerned.
The DOM hooks were added to childrenChanged, and to parseMappedAttribute. The directionality is evaluated when children are added, but not when they are removed. Once they are re-added, the directionality will be evaluated.

Added 2 static CSSMutableStyleDeclarations to be used for elements with dir=auto.
We cannot use the mapped declaration, because it can take only one value.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>346220</commentid>
    <comment_count>21</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-02-05 17:52:59 -0800</bug_when>
    <thetext>Attachment 81377 did not build on mac:
Build output: http://queues.webkit.org/results/7702455</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>346251</commentid>
    <comment_count>22</comment_count>
    <who name="Jeremy Moskovich">playmobil</who>
    <bug_when>2011-02-06 01:26:40 -0800</bug_when>
    <thetext>(In reply to comment #19)
&gt; (In reply to comment #17)
&gt; Thanks for your comments,
&gt; &gt; (From update of attachment 80968 [details] [details])
&gt; &gt; View in context: https://bugs.webkit.org/attachment.cgi?id=80968&amp;action=review
&gt; &gt; &gt; Source/WebCore/html/HTMLElement.cpp:868
&gt; &gt; &gt; +    ASSERT(equalIgnoringCase(fastGetAttribute(dirAttr), &quot;auto&quot;));
&gt; &gt; 
&gt; &gt; It&apos;s only legal to call this method on an element which has dir=auto set?
&gt; &gt; Could you add a comment on why that is?
&gt; &gt; 
&gt; I am not sure what is the use for calling this function unless the element has the attribute dir=&quot;auto&quot; ?

My thinking is that to someone reading this code without the context of this bug, the reason for the assert isn&apos;t clear.  If you could add a comment as to why or change the name of the function [e.g. resolveDirectionality()] it may be easier to understand this.

The point I find confusing is that it looks like this is the canonical way to get the directionality of an HTMLElement, whereas it&apos;s only useful for dir=auto.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>346272</commentid>
    <comment_count>23</comment_count>
    <who name="Yael">yael</who>
    <bug_when>2011-02-06 05:54:30 -0800</bug_when>
    <thetext>(In reply to comment #22)
&gt; (In reply to comment #19)
&gt; My thinking is that to someone reading this code without the context of this bug, the reason for the assert isn&apos;t clear.  If you could add a comment as to why or change the name of the function [e.g. resolveDirectionality()] it may be easier to understand this.
&gt; 
&gt; The point I find confusing is that it looks like this is the canonical way to get the directionality of an HTMLElement, whereas it&apos;s only useful for dir=auto.

You are right:) I renamed this method in the latest patch so it is more clear that it only handles dir=auto.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>346282</commentid>
    <comment_count>24</comment_count>
      <attachid>81401</attachid>
    <who name="Yael">yael</who>
    <bug_when>2011-02-06 07:24:08 -0800</bug_when>
    <thetext>Created attachment 81401
Patch.

Fix the mac build.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>346284</commentid>
    <comment_count>25</comment_count>
    <who name="Yael">yael</who>
    <bug_when>2011-02-06 07:27:40 -0800</bug_when>
    <thetext>Hyatt, Dan, I noticed that HTMLTableElement creates additionalAttributeStyleDecls.
Would you prefer if I add the direction declaration there over the way I am doing it as a static declaration in CSSStyleSelector?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>347702</commentid>
    <comment_count>26</comment_count>
      <attachid>81401</attachid>
    <who name="Dave Hyatt">hyatt</who>
    <bug_when>2011-02-08 14:43:51 -0800</bug_when>
    <thetext>Comment on attachment 81401
Patch.

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

&gt; Source/WebCore/dom/Element.cpp:1226
&gt; +    if (isHTMLElement())
&gt; +        adjustDirectionalityIfNeededAfterChildrenChanged(beforeChange, childCountDelta);

You should just make HTMLElement::childrenChanged and put this code there.  That way non-HTML elements don&apos;t have to test this.

&gt; Source/WebCore/dom/Element.cpp:1827
&gt; +TextDirection Element::directionalityIfhasDirAutoAttribute(bool&amp; isAuto) const

Shouldn&apos;t the next 130 lines of code (all these functions) be in HTMLElement?  dir only applies to HTML, right, so it seems weird to have all this code sitting in Element.

&gt; Source/WebCore/dom/Element.h:367
&gt; +    void setHasDirAutoFlagRecursively(bool, Node* = 0);
&gt; +    void dirAttributeChanged(Attribute*);
&gt; +    void adjustDirectionalityIfNeededAfterChildAttributeChanged(Element* child);
&gt; +    void calculateAndAdjustDirectionality();
&gt; +    void adjustDirectionalityIfNeededAfterChildrenChanged(Node* beforeChange, int childCountDelta);

See my previous comment.  Why is all this in Element?  If auto is an HTML-specific feature only, does this have to be here?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>348170</commentid>
    <comment_count>27</comment_count>
      <attachid>81792</attachid>
    <who name="Yael">yael</who>
    <bug_when>2011-02-09 05:42:34 -0800</bug_when>
    <thetext>Created attachment 81792
Patch.

Move the functionality to HTMLElement.cpp, as suggested in comment #26.
Created a static helper for setHasDirAutoFlagRecursively(), as suggested on IRC.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>348412</commentid>
    <comment_count>28</comment_count>
      <attachid>81841</attachid>
    <who name="Yael">yael</who>
    <bug_when>2011-02-09 11:37:17 -0800</bug_when>
    <thetext>Created attachment 81841
Patch.

Replaced casting to HTMLElement with toHTMLElement() .</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>350630</commentid>
    <comment_count>29</comment_count>
    <who name="Yael">yael</who>
    <bug_when>2011-02-14 06:24:31 -0800</bug_when>
    <thetext>(In reply to comment #14)
&gt; (From update of attachment 80968 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=80968&amp;action=review
&gt;
&gt; I am still fuzzy on whether this patch (a) handles all dynamic cases correctly and (b) does not scan descendants multiple times as the tree is constructed. I guess that depends on when childrenChanged() is called during parsing.
&gt; 
a) Initially, I did not address nested levels of dir=&quot;auto&quot;, but this is fixed now.
When adding a subtree to the tree, I adjust both the parent of the node that was added (and ancestors if needed) and the node itself (and descendants if needed) to reflect the change.
b) I changed the logic to mark children only between the element with dir=&quot;auto&quot; and its first text node. This should limit the scanning to only a small number of nodes.

Could you please review this patch? thanks:)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>352209</commentid>
    <comment_count>30</comment_count>
      <attachid>81841</attachid>
    <who name="Dave Hyatt">hyatt</who>
    <bug_when>2011-02-16 11:16:13 -0800</bug_when>
    <thetext>Comment on attachment 81841
Patch.

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

Much better in HTMLElement.  Just one concern:

&gt; Source/WebCore/html/HTMLElement.cpp:1005
&gt; +    if (childCountDelta &gt; 0) {
&gt; +        Node* node = beforeChange ? beforeChange-&gt;traverseNextSibling() : 0;
&gt; +        for (int counter = 0; node &amp;&amp; counter &lt; childCountDelta; counter++, node = node-&gt;traverseNextSibling()) {
&gt; +            if (node-&gt;isElementNode() &amp;&amp; toElement(node)-&gt;hasAttribute(dirAttr))
&gt; +                continue;
&gt; +
&gt; +            setHasDirAutoFlagRecursively(node, false);
&gt; +        }
&gt; +    }

This code concerns me.  It seems like it&apos;s going to run on every childrenChanged call?  This seems like an obvious performance hit.  Does this code really have to run all the time, or did you mean to put it below the if check?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>352816</commentid>
    <comment_count>31</comment_count>
      <attachid>82795</attachid>
    <who name="Yael">yael</who>
    <bug_when>2011-02-17 06:45:23 -0800</bug_when>
    <thetext>Created attachment 82795
Patch.

Clear the directionality flag when nodes are removed, not when they are re-added.
The flag is not cleared if the document does not have a renderer, which indicates that the document is being destroyed.
The flag is also cleared on nodes that previously had the flag, if a new text node is added before those nodes. After the addition, those nodes no longer participate in determining the  directionality.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>353740</commentid>
    <comment_count>32</comment_count>
      <attachid>82795</attachid>
    <who name="Dave Hyatt">hyatt</who>
    <bug_when>2011-02-18 12:18:01 -0800</bug_when>
    <thetext>Comment on attachment 82795
Patch.

r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>353799</commentid>
    <comment_count>33</comment_count>
    <who name="Yael">yael</who>
    <bug_when>2011-02-18 13:29:44 -0800</bug_when>
    <thetext>Committed r79024.  &lt;http://trac.webkit.org/changeset/79024&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>80700</attachid>
            <date>2011-01-31 17:14:04 -0800</date>
            <delta_ts>2011-02-01 15:14:52 -0800</delta_ts>
            <desc>Patch.</desc>
            <filename>50916.patch</filename>
            <type>text/plain</type>
            <size>27131</size>
            <attacher name="Yael">yael</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gNzcxNjUpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMjAgQEAK
KzIwMTEtMDEtMzEgIFlhZWwgQWhhcm9uICA8eWFlbC5haGFyb25Abm9raWEuY29tPgorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZCBzdXBwb3J0IGZv
ciBkaXI9YXV0bworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9NTA5MTYKKworICAgICAgICBDaGFuZ2UgZGVmYXVsdFdyaXRpbmdEaXJlY3Rpb24oKSB0byBy
ZXR1cm4gaWYgdGhlIHdyaXRpbmcgZGlyZWN0aW9uIHdhcyBkZXRlcm1pbmVkIGZyb20gYSBsZXR0
ZXIgd2l0aCBzdHJvbmcgZGlyZWN0aW9uYWxpdHkgb3Igbm90LgorCisgICAgICAgICogSmF2YVNj
cmlwdENvcmUuZXhwOgorICAgICAgICAqIEphdmFTY3JpcHRDb3JlLm9yZGVyOgorICAgICAgICAq
IHd0Zi90ZXh0L1N0cmluZ0ltcGwuY3BwOgorICAgICAgICAoV1RGOjpTdHJpbmdJbXBsOjpkZWZh
dWx0V3JpdGluZ0RpcmVjdGlvbik6CisgICAgICAgICogd3RmL3RleHQvU3RyaW5nSW1wbC5oOgor
ICAgICAgICAqIHd0Zi90ZXh0L1dURlN0cmluZy5oOgorICAgICAgICAoV1RGOjpTdHJpbmc6OmRl
ZmF1bHRXcml0aW5nRGlyZWN0aW9uKToKKwogMjAxMS0wMS0zMSAgT2xpdmVyIEh1bnQgIDxvbGl2
ZXJAYXBwbGUuY29tPgogCiAgICAgICAgIFJldmlld2VkIGJ5IFNhbSBXZWluaWcuCkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUuZXhwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS5leHAJKHJldmlzaW9uIDc3MDk5KQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLmV4cAkod29ya2luZyBjb3B5
KQpAQCAtMzM0LDcgKzMzNCw3IEBAIF9fWk4zV1RGMTBTdHJpbmdJbXBsMThzaW1wbGlmeVdoaXRl
U3BhY2UKIF9fWk4zV1RGMTBTdHJpbmdJbXBsMTljaGFyYWN0ZXJTdGFydGluZ0F0RWoKIF9fWk4z
V1RGMTBTdHJpbmdJbXBsMTljcmVhdGVVbmluaXRpYWxpemVkRWpSUHQKIF9fWk4zV1RGMTBTdHJp
bmdJbXBsMjJjb250YWluc09ubHlXaGl0ZXNwYWNlRXYKLV9fWk4zV1RGMTBTdHJpbmdJbXBsMjNk
ZWZhdWx0V3JpdGluZ0RpcmVjdGlvbkV2CitfX1pOM1dURjEwU3RyaW5nSW1wbDIzZGVmYXVsdFdy
aXRpbmdEaXJlY3Rpb25FUGIKIF9fWk4zV1RGMTBTdHJpbmdJbXBsMjNyZXZlcnNlRmluZElnbm9y
aW5nQ2FzZUVQUzBfagogX19aTjNXVEYxMFN0cmluZ0ltcGwzN2NyZWF0ZVN0cmlwcGluZ051bGxD
aGFyYWN0ZXJzU2xvd0Nhc2VFUEt0agogX19aTjNXVEYxMFN0cmluZ0ltcGw0ZmluZEVQRmJ0RWoK
SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS5vcmRlcgo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUub3JkZXIJKHJldmlz
aW9uIDc3MDk5KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLm9yZGVy
CSh3b3JraW5nIGNvcHkpCkBAIC0xNDI3LDcgKzE0MjcsNyBAQCBfX1pON1dlYkNvcmUxMFN0cmlu
Z0ltcGwxMXJldmVyc2VGaW5kRXRpCiBfX1pOM1dURjIzd2FpdEZvclRocmVhZENvbXBsZXRpb25F
alBQdgogX19aTjNXVEYxNEZhc3RNYWxsb2Nab25lMTBzdGF0aXN0aWNzRVAxNF9tYWxsb2Nfem9u
ZV90UDE5bWFsbG9jX3N0YXRpc3RpY3NfdAogX19aTks3V2ViQ29yZTZTdHJpbmcxOHNpbXBsaWZ5
V2hpdGVTcGFjZUV2Ci1fX1pON1dlYkNvcmUxMFN0cmluZ0ltcGwyM2RlZmF1bHRXcml0aW5nRGly
ZWN0aW9uRXYKK19fWk4zV1RGMTBTdHJpbmdJbXBsMjNkZWZhdWx0V3JpdGluZ0RpcmVjdGlvbkVQ
YgogX19aTjNKU0NMMjBkYXRlUHJvdG9GdW5jU2V0VGltZUVQTlNfOUV4ZWNTdGF0ZUVQTlNfOEpT
T2JqZWN0RU5TXzdKU1ZhbHVlRVJLTlNfN0FyZ0xpc3RFCiBfX1pOM0pTQ0wyMWRhdGVQcm90b0Z1
bmNHZXRNb250aEVQTlNfOUV4ZWNTdGF0ZUVQTlNfOEpTT2JqZWN0RU5TXzdKU1ZhbHVlRVJLTlNf
N0FyZ0xpc3RFCiBfX1pOSzNKU0MxMkRhdGVJbnN0YW5jZTI2Y2FsY3VsYXRlR3JlZ29yaWFuRGF0
ZVRpbWVFUE5TXzlFeGVjU3RhdGVFCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvd3RmL3Rl
eHQvU3RyaW5nSW1wbC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3d0
Zi90ZXh0L1N0cmluZ0ltcGwuY3BwCShyZXZpc2lvbiA3NzA5OSkKKysrIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS93dGYvdGV4dC9TdHJpbmdJbXBsLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTAwNSwx
NSArMTAwNSwyMyBAQCBib29sIGVxdWFsSWdub3JpbmdOdWxsaXR5KFN0cmluZ0ltcGwqIGEsCiAg
ICAgcmV0dXJuIGZhbHNlOwogfQogCi1XVEY6OlVuaWNvZGU6OkRpcmVjdGlvbiBTdHJpbmdJbXBs
OjpkZWZhdWx0V3JpdGluZ0RpcmVjdGlvbigpCitXVEY6OlVuaWNvZGU6OkRpcmVjdGlvbiBTdHJp
bmdJbXBsOjpkZWZhdWx0V3JpdGluZ0RpcmVjdGlvbihib29sKiBoYXNTdHJvbmdEaXJlY3Rpb25h
bGl0eSkKIHsKICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbV9sZW5ndGg7ICsraSkgewog
ICAgICAgICBXVEY6OlVuaWNvZGU6OkRpcmVjdGlvbiBjaGFyRGlyZWN0aW9uID0gV1RGOjpVbmlj
b2RlOjpkaXJlY3Rpb24obV9kYXRhW2ldKTsKLSAgICAgICAgaWYgKGNoYXJEaXJlY3Rpb24gPT0g
V1RGOjpVbmljb2RlOjpMZWZ0VG9SaWdodCkKKyAgICAgICAgaWYgKGNoYXJEaXJlY3Rpb24gPT0g
V1RGOjpVbmljb2RlOjpMZWZ0VG9SaWdodCkgeworICAgICAgICAgICAgaWYgKGhhc1N0cm9uZ0Rp
cmVjdGlvbmFsaXR5KQorICAgICAgICAgICAgICAgICpoYXNTdHJvbmdEaXJlY3Rpb25hbGl0eSA9
IHRydWU7CiAgICAgICAgICAgICByZXR1cm4gV1RGOjpVbmljb2RlOjpMZWZ0VG9SaWdodDsKLSAg
ICAgICAgaWYgKGNoYXJEaXJlY3Rpb24gPT0gV1RGOjpVbmljb2RlOjpSaWdodFRvTGVmdCB8fCBj
aGFyRGlyZWN0aW9uID09IFdURjo6VW5pY29kZTo6UmlnaHRUb0xlZnRBcmFiaWMpCisgICAgICAg
IH0KKyAgICAgICAgaWYgKGNoYXJEaXJlY3Rpb24gPT0gV1RGOjpVbmljb2RlOjpSaWdodFRvTGVm
dCB8fCBjaGFyRGlyZWN0aW9uID09IFdURjo6VW5pY29kZTo6UmlnaHRUb0xlZnRBcmFiaWMpIHsK
KyAgICAgICAgICAgIGlmIChoYXNTdHJvbmdEaXJlY3Rpb25hbGl0eSkKKyAgICAgICAgICAgICAg
ICAqaGFzU3Ryb25nRGlyZWN0aW9uYWxpdHkgPSB0cnVlOwogICAgICAgICAgICAgcmV0dXJuIFdU
Rjo6VW5pY29kZTo6UmlnaHRUb0xlZnQ7CisgICAgICAgIH0KICAgICB9CisgICAgaWYgKGhhc1N0
cm9uZ0RpcmVjdGlvbmFsaXR5KQorICAgICAgICAqaGFzU3Ryb25nRGlyZWN0aW9uYWxpdHkgPSBm
YWxzZTsKICAgICByZXR1cm4gV1RGOjpVbmljb2RlOjpMZWZ0VG9SaWdodDsKIH0KIApJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL3d0Zi90ZXh0L1N0cmluZ0ltcGwuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvd3RmL3RleHQvU3RyaW5nSW1wbC5oCShyZXZpc2lvbiA3
NzA5OSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS93dGYvdGV4dC9TdHJpbmdJbXBsLmgJKHdv
cmtpbmcgY29weSkKQEAgLTMxNiw3ICszMTYsNyBAQCBwdWJsaWM6CiAgICAgUGFzc1JlZlB0cjxT
dHJpbmdJbXBsPiByZXBsYWNlKFN0cmluZ0ltcGwqLCBTdHJpbmdJbXBsKik7CiAgICAgUGFzc1Jl
ZlB0cjxTdHJpbmdJbXBsPiByZXBsYWNlKHVuc2lnbmVkIGluZGV4LCB1bnNpZ25lZCBsZW4sIFN0
cmluZ0ltcGwqKTsKIAotICAgIFdURjo6VW5pY29kZTo6RGlyZWN0aW9uIGRlZmF1bHRXcml0aW5n
RGlyZWN0aW9uKCk7CisgICAgV1RGOjpVbmljb2RlOjpEaXJlY3Rpb24gZGVmYXVsdFdyaXRpbmdE
aXJlY3Rpb24oYm9vbCogaGFzU3Ryb25nRGlyZWN0aW9uYWxpdHkgPSAwKTsKIAogI2lmIFBMQVRG
T1JNKENGKQogICAgIENGU3RyaW5nUmVmIGNyZWF0ZUNGU3RyaW5nKCk7CkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvd3RmL3RleHQvV1RGU3RyaW5nLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL3d0Zi90ZXh0L1dURlN0cmluZy5oCShyZXZpc2lvbiA3NzA5OSkKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS93dGYvdGV4dC9XVEZTdHJpbmcuaAkod29ya2luZyBjb3B5
KQpAQCAtMzI2LDcgKzMyNiwxNCBAQCBwdWJsaWM6CiAgICAgc3RhdGljIFN0cmluZyBmcm9tVVRG
OFdpdGhMYXRpbjFGYWxsYmFjayhjb25zdCBjaGFyKiwgc2l6ZV90KTsKICAgICAKICAgICAvLyBE
ZXRlcm1pbmVzIHRoZSB3cml0aW5nIGRpcmVjdGlvbiB1c2luZyB0aGUgVW5pY29kZSBCaWRpIEFs
Z29yaXRobSBydWxlcyBQMiBhbmQgUDMuCi0gICAgV1RGOjpVbmljb2RlOjpEaXJlY3Rpb24gZGVm
YXVsdFdyaXRpbmdEaXJlY3Rpb24oKSBjb25zdCB7IHJldHVybiBtX2ltcGwgPyBtX2ltcGwtPmRl
ZmF1bHRXcml0aW5nRGlyZWN0aW9uKCkgOiBXVEY6OlVuaWNvZGU6OkxlZnRUb1JpZ2h0OyB9Cisg
ICAgV1RGOjpVbmljb2RlOjpEaXJlY3Rpb24gZGVmYXVsdFdyaXRpbmdEaXJlY3Rpb24oYm9vbCog
aGFzU3Ryb25nRGlyZWN0aW9uYWxpdHkgPSAwKSBjb25zdAorICAgIHsKKyAgICAgICAgaWYgKG1f
aW1wbCkKKyAgICAgICAgICAgIHJldHVybiBtX2ltcGwtPmRlZmF1bHRXcml0aW5nRGlyZWN0aW9u
KGhhc1N0cm9uZ0RpcmVjdGlvbmFsaXR5KTsKKyAgICAgICAgaWYgKGhhc1N0cm9uZ0RpcmVjdGlv
bmFsaXR5KQorICAgICAgICAgICAgKmhhc1N0cm9uZ0RpcmVjdGlvbmFsaXR5ID0gZmFsc2U7Cisg
ICAgICAgIHJldHVybiBXVEY6OlVuaWNvZGU6OkxlZnRUb1JpZ2h0OworICAgIH0KIAogICAgIGJv
b2wgY29udGFpbnNPbmx5QVNDSUkoKSBjb25zdCB7IHJldHVybiBjaGFyYWN0ZXJzQXJlQWxsQVND
SUkoY2hhcmFjdGVycygpLCBsZW5ndGgoKSk7IH0KICAgICBib29sIGNvbnRhaW5zT25seUxhdGlu
MSgpIGNvbnN0IHsgcmV0dXJuIGNoYXJhY3RlcnNBcmVBbGxMYXRpbjEoY2hhcmFjdGVycygpLCBs
ZW5ndGgoKSk7IH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDc3MTY1KQorKysgU291cmNlL1dl
YkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsNDAgQEAKKzIwMTEtMDEt
MzEgIFlhZWwgQWhhcm9uICA8eWFlbC5haGFyb25Abm9raWEuY29tPgorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZCBzdXBwb3J0IGZvciBkaXI9YXV0
bworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NTA5MTYK
KworICAgICAgICBUZXN0czogZmFzdC9kb20vSFRNTEVsZW1lbnQvYXR0ci1kaXItYXV0by1jaGFu
Z2UtY2hpbGQtbm9kZS5odG1sCisgICAgICAgICAgICAgICBmYXN0L2RvbS9IVE1MRWxlbWVudC9h
dHRyLWRpci1hdXRvLWNoYW5nZS10ZXh0Lmh0bWwKKyAgICAgICAgICAgICAgIGZhc3QvZG9tL0hU
TUxFbGVtZW50L2F0dHItZGlyLXZhbHVlLWNoYW5nZS5odG1sCisgICAgICAgICAgICAgICBmYXN0
L2RvbS9IVE1MRWxlbWVudC9hdHRyLWRpci1hdXRvLmh0bWwKKworICAgICAgICBXaGVuIGFuIGVs
ZW1lbnQgaGFzIGRpciBhdHRyaWJ1dGUgd2l0aCB2YWx1ZSAiYXV0byIsIGNhbGwgZGVmYXVsdFdy
aXRpbmdNb2RlIHRvIGZpbmQgaXRzIGRpcmVjdGlvbmFsaXR5LgorICAgICAgICBBZGRlZCBhIGZs
YWcgU2VsZk9yQW5jZXN0b3JIYXNEaXJBdXRvRmxhZywgYW5kIGFkZGVkIGhvb2tzIGluIHRoZSBE
T00gdG8gc2V0IGFuZCBjaGVjayB0aGlzIGZsYWcuCisgICAgICAgIFdoZW4gYSBub2RlIGlzIGFk
ZGVkLCBpZiBpdHMgcGFyZW50IGhhcyB0aGlzIGZsYWcsIHRoZSBub2RlIHdpbGwgZ2V0IGl0IHRv
by4KKyAgICAgICAgV2hlbiBhIG5vZGUgaXMgYWRkZWQgb3IgcmVtb3ZlZCwgaWYgaXQgaGFzIHRo
aXMgZmxhZywgd2UgdHJhdmVyc2UgaXRzIGFuY2VzdG9ycyB1bnRpbCB3ZSBmaW5kIHRoZSBmaXJz
dCBub2RlIHdpdGggdGhlIGZsYWcuCisgICAgICAgIFdlIHRoZW4gYWRqdXN0IHRoZSBkaXJlY3Rp
b25hbGl0eSBvZiB0aGF0IG5vZGUuCisKKyAgICAgICAgKiBjc3MvQ1NTUGFyc2VyLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkNTU1BhcnNlcjo6cGFyc2VWYWx1ZSk6CisgICAgICAgICogY3NzL0NT
U1N0eWxlU2VsZWN0b3IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q1NTU3R5bGVTZWxlY3Rvcjo6
Y2FuU2hhcmVTdHlsZVdpdGhFbGVtZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1N0eWxlU2Vs
ZWN0b3I6OmFwcGx5UHJvcGVydHkpOgorICAgICAgICAqIGNzcy9DU1NWYWx1ZUtleXdvcmRzLmlu
OgorICAgICAgICAqIGRvbS9FbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkVsZW1lbnQ6
OmNoaWxkcmVuQ2hhbmdlZCk6CisgICAgICAgIChXZWJDb3JlOjpFbGVtZW50OjpkaXJlY3Rpb25h
bGl0eSk6CisgICAgICAgICogZG9tL0VsZW1lbnQuaDoKKyAgICAgICAgKiBkb20vTm9kZS5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpOb2RlOjphdHRhY2gpOgorICAgICAgICAoV2ViQ29yZTo6Tm9k
ZTo6YWRqdXN0RWxlbWVudERpcmVjdGlvbmFsaXR5SWZOZWVkZWQpOgorICAgICAgICAqIGRvbS9O
b2RlLmg6CisgICAgICAgIChXZWJDb3JlOjpOb2RlOjpzZXRIYXNEaXJBdXRvRmxhZyk6CisgICAg
ICAgICogaHRtbC9IVE1MRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MRWxlbWVu
dDo6bWFwVG9FbnRyeSk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MRWxlbWVudDo6cGFyc2VNYXBw
ZWRBdHRyaWJ1dGUpOgorCiAyMDExLTAxLTMxICBNaWNoYWVsIFNhYm9mZiAgPG1zYWJvZmZAYXBw
bGUuY29tPgogCiAgICAgICAgIFJldmlld2VkIGJ5IEdlb2ZmcmV5IEdhcmVuLgpJbmRleDogU291
cmNlL1dlYkNvcmUvY3NzL0NTU1BhcnNlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvY3NzL0NTU1BhcnNlci5jcHAJKHJldmlzaW9uIDc3MDk5KQorKysgU291cmNlL1dlYkNvcmUv
Y3NzL0NTU1BhcnNlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTczMSw4ICs3MzEsOCBAQCBib29s
IENTU1BhcnNlcjo6cGFyc2VWYWx1ZShpbnQgcHJvcElkLCBiCiAgICAgICAgICAgICB2YWxpZFBy
aW1pdGl2ZSA9IHRydWU7CiAgICAgICAgIGJyZWFrOwogCi0gICAgY2FzZSBDU1NQcm9wZXJ0eURp
cmVjdGlvbjogICAgICAgICAgICAvLyBsdHIgfCBydGwgfCBpbmhlcml0Ci0gICAgICAgIGlmIChp
ZCA9PSBDU1NWYWx1ZUx0ciB8fCBpZCA9PSBDU1NWYWx1ZVJ0bCkKKyAgICBjYXNlIENTU1Byb3Bl
cnR5RGlyZWN0aW9uOiAgICAgICAgICAgIC8vIGx0ciB8IHJ0bCB8IGF1dG8gfCBpbmhlcml0Cisg
ICAgICAgIGlmIChpZCA9PSBDU1NWYWx1ZUx0ciB8fCBpZCA9PSBDU1NWYWx1ZVJ0bCB8fCBpZCA9
PSBDU1NWYWx1ZUF1dG8pCiAgICAgICAgICAgICB2YWxpZFByaW1pdGl2ZSA9IHRydWU7CiAgICAg
ICAgIGJyZWFrOwogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9jc3MvQ1NTU3R5bGVTZWxlY3Rvci5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvY3NzL0NTU1N0eWxlU2VsZWN0b3IuY3Bw
CShyZXZpc2lvbiA3NzA5OSkKKysrIFNvdXJjZS9XZWJDb3JlL2Nzcy9DU1NTdHlsZVNlbGVjdG9y
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTA5Miw2ICsxMDkyLDkgQEAgYm9vbCBDU1NTdHlsZVNl
bGVjdG9yOjpjYW5TaGFyZVN0eWxlV2l0aAogICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsK
ICNlbmRpZgogCisgICAgICAgICAgICBpZiAoZXF1YWxJZ25vcmluZ0Nhc2Uocy0+ZmFzdEdldEF0
dHJpYnV0ZShkaXJBdHRyKSwgImF1dG8iKSB8fCBlcXVhbElnbm9yaW5nQ2FzZShtX2VsZW1lbnQt
PmZhc3RHZXRBdHRyaWJ1dGUoZGlyQXR0ciksICJhdXRvIikpCisgICAgICAgICAgICAgICAgcmV0
dXJuIGZhbHNlOworCiAgICAgICAgICAgICBib29sIGNsYXNzZXNNYXRjaCA9IHRydWU7CiAgICAg
ICAgICAgICBpZiAocy0+aGFzQ2xhc3MoKSkgewogICAgICAgICAgICAgICAgIGNvbnN0IEF0b21p
Y1N0cmluZyYgY2xhc3MxID0gbV9lbGVtZW50LT5mYXN0R2V0QXR0cmlidXRlKGNsYXNzQXR0cik7
CkBAIC0zMzc0LDcgKzMzNzcsMTEgQEAgdm9pZCBDU1NTdHlsZVNlbGVjdG9yOjphcHBseVByb3Bl
cnR5KGludAogICAgICAgICBIQU5ETEVfSU5IRVJJVF9BTkRfSU5JVElBTF9BTkRfUFJJTUlUSVZF
KGNsZWFyLCBDbGVhcikKICAgICAgICAgcmV0dXJuOwogICAgIGNhc2UgQ1NTUHJvcGVydHlEaXJl
Y3Rpb246Ci0gICAgICAgIEhBTkRMRV9JTkhFUklUX0FORF9JTklUSUFMX0FORF9QUklNSVRJVkUo
ZGlyZWN0aW9uLCBEaXJlY3Rpb24pCisgICAgICAgIGlmIChwcmltaXRpdmVWYWx1ZSAmJiBwcmlt
aXRpdmVWYWx1ZS0+Z2V0SWRlbnQoKSA9PSBDU1NWYWx1ZUF1dG8pIHsKKyAgICAgICAgICAgIG1f
c3R5bGUtPnNldERpcmVjdGlvbihtX2VsZW1lbnQtPmRpcmVjdGlvbmFsaXR5KCkpOworICAgICAg
ICB9IGVsc2UgeworICAgICAgICAgICAgSEFORExFX0lOSEVSSVRfQU5EX0lOSVRJQUxfQU5EX1BS
SU1JVElWRShkaXJlY3Rpb24sIERpcmVjdGlvbikKKyAgICAgICAgfQogICAgICAgICBpZiAoIWlz
SW5oZXJpdCAmJiAhaXNJbml0aWFsICYmIG1fZWxlbWVudCAmJiBtX2VsZW1lbnQgPT0gbV9lbGVt
ZW50LT5kb2N1bWVudCgpLT5kb2N1bWVudEVsZW1lbnQoKSkKICAgICAgICAgICAgIG1fZWxlbWVu
dC0+ZG9jdW1lbnQoKS0+c2V0RGlyZWN0aW9uU2V0T25Eb2N1bWVudEVsZW1lbnQodHJ1ZSk7CiAg
ICAgICAgIHJldHVybjsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2Nzcy9DU1NWYWx1ZUtleXdvcmRz
LmluCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2Nzcy9DU1NWYWx1ZUtleXdvcmRzLmlu
CShyZXZpc2lvbiA3NzA5OSkKKysrIFNvdXJjZS9XZWJDb3JlL2Nzcy9DU1NWYWx1ZUtleXdvcmRz
LmluCSh3b3JraW5nIGNvcHkpCkBAIC0zNjgsNiArMzY4LDcgQEAgYWxsLXNjcm9sbAogIwogbHRy
CiBydGwKKyMgYXV0bwogIwogIyBDU1NfUFJPUF9URVhUX1RSQU5TRk9STToKICMKSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9kb20vRWxlbWVudC5jcHAJKHJldmlzaW9uIDc3MDk5KQorKysgU291cmNlL1dlYkNvcmUvZG9t
L0VsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMjIxLDYgKzEyMjEsNyBAQCB2b2lkIEVs
ZW1lbnQ6OmNoaWxkcmVuQ2hhbmdlZChib29sIGNoYW5nCiAgICAgQ29udGFpbmVyTm9kZTo6Y2hp
bGRyZW5DaGFuZ2VkKGNoYW5nZWRCeVBhcnNlciwgYmVmb3JlQ2hhbmdlLCBhZnRlckNoYW5nZSwg
Y2hpbGRDb3VudERlbHRhKTsKICAgICBpZiAoIWNoYW5nZWRCeVBhcnNlcikKICAgICAgICAgY2hl
Y2tGb3JTaWJsaW5nU3R5bGVDaGFuZ2VzKHRoaXMsIHJlbmRlclN0eWxlKCksIGZhbHNlLCBiZWZv
cmVDaGFuZ2UsIGFmdGVyQ2hhbmdlLCBjaGlsZENvdW50RGVsdGEpOworICAgIGFkanVzdEVsZW1l
bnREaXJlY3Rpb25hbGl0eUlmTmVlZGVkKCk7CiB9CiAKIHZvaWQgRWxlbWVudDo6ZmluaXNoUGFy
c2luZ0NoaWxkcmVuKCkKQEAgLTE2OTAsNiArMTY5MSwzOSBAQCBib29sIEVsZW1lbnQ6OndlYmtp
dE1hdGNoZXNTZWxlY3Rvcihjb25zCiAgICAgcmV0dXJuIGZhbHNlOwogfQogCitUZXh0RGlyZWN0
aW9uIEVsZW1lbnQ6OmRpcmVjdGlvbmFsaXR5KCkKK3sKKyAgICBUZXh0RGlyZWN0aW9uIGRpcmVj
dGlvbiA9IExUUjsKKyAgICBBU1NFUlQoZXF1YWxJZ25vcmluZ0Nhc2UoZmFzdEdldEF0dHJpYnV0
ZShkaXJBdHRyKSwgImF1dG8iKSk7CisKKyAgICBOb2RlKiBub2RlID0gZmlyc3RDaGlsZCgpOwor
ICAgIHdoaWxlIChub2RlKSB7CisgICAgICAgIC8vIFNraXAgYmRpLCBzY3JpcHQgYW5kIHN0eWxl
IGVsZW1lbnRzCisgICAgICAgIGlmIChlcXVhbElnbm9yaW5nQ2FzZShub2RlLT5ub2RlTmFtZSgp
LCAiYmRpIikgfHwgbm9kZS0+aGFzVGFnTmFtZShzY3JpcHRUYWcpIHx8IG5vZGUtPmhhc1RhZ05h
bWUoc3R5bGVUYWcpKSB7CisgICAgICAgICAgICBub2RlID0gbm9kZS0+dHJhdmVyc2VOZXh0U2li
bGluZyh0aGlzKTsKKyAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICB9CisKKyAgICAgICAg
Ly8gU2tpcCBlbGVtZW50cyB3aXRoIHZhbGlkIGRpciBhdHRyaWJ1dGUKKyAgICAgICAgaWYgKG5v
ZGUtPmlzRWxlbWVudE5vZGUoKSkgeworICAgICAgICAgICAgQXRvbWljU3RyaW5nIGRpckF0dHJp
YnV0ZVZhbHVlID0gdG9FbGVtZW50KG5vZGUpLT5mYXN0R2V0QXR0cmlidXRlKGRpckF0dHIpOwor
ICAgICAgICAgICAgaWYgKGVxdWFsSWdub3JpbmdDYXNlKGRpckF0dHJpYnV0ZVZhbHVlLCAicnRs
IikgfHwgZXF1YWxJZ25vcmluZ0Nhc2UoZGlyQXR0cmlidXRlVmFsdWUsICJsdHIiKSB8fCBlcXVh
bElnbm9yaW5nQ2FzZShkaXJBdHRyaWJ1dGVWYWx1ZSwgImF1dG8iKSkgeworICAgICAgICAgICAg
ICAgIG5vZGUgPSBub2RlLT50cmF2ZXJzZU5leHRTaWJsaW5nKHRoaXMpOworICAgICAgICAgICAg
ICAgIGNvbnRpbnVlOworICAgICAgICAgICAgfQorICAgICAgICB9CisKKyAgICAgICAgaWYgKG5v
ZGUtPmlzVGV4dE5vZGUoKSkgeworICAgICAgICAgICAgYm9vbCBoYXNTdHJvbmdEaXJlY3Rpb25h
bGl0eTsKKyAgICAgICAgICAgIFdURjo6VW5pY29kZTo6RGlyZWN0aW9uIHRleHREaXJlY3Rpb24g
PSBub2RlLT50ZXh0Q29udGVudCh0cnVlKS5kZWZhdWx0V3JpdGluZ0RpcmVjdGlvbigmaGFzU3Ry
b25nRGlyZWN0aW9uYWxpdHkpOworICAgICAgICAgICAgaWYgKGhhc1N0cm9uZ0RpcmVjdGlvbmFs
aXR5KQorICAgICAgICAgICAgICAgIHJldHVybiAodGV4dERpcmVjdGlvbiA9PSBXVEY6OlVuaWNv
ZGU6OkxlZnRUb1JpZ2h0KSA/IExUUiA6IFJUTDsKKyAgICAgICAgfQorICAgICAgICBub2RlID0g
bm9kZS0+dHJhdmVyc2VOZXh0Tm9kZSh0aGlzKTsKKyAgICB9CisgICAgcmV0dXJuIGRpcmVjdGlv
bjsKK30KKwogRE9NVG9rZW5MaXN0KiBFbGVtZW50OjpjbGFzc0xpc3QoKQogewogICAgIEVsZW1l
bnRSYXJlRGF0YSogZGF0YSA9IGVuc3VyZVJhcmVEYXRhKCk7CkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9kb20vRWxlbWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50
LmgJKHJldmlzaW9uIDc3MDk5KQorKysgU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuaAkod29y
a2luZyBjb3B5KQpAQCAtMjg3LDYgKzI4Nyw4IEBAIHB1YmxpYzoKIAogICAgIGJvb2wgd2Via2l0
TWF0Y2hlc1NlbGVjdG9yKGNvbnN0IFN0cmluZyYgc2VsZWN0b3JzLCBFeGNlcHRpb25Db2RlJik7
CiAKKyAgICBUZXh0RGlyZWN0aW9uIGRpcmVjdGlvbmFsaXR5KCk7CisKICAgICBET01Ub2tlbkxp
c3QqIGNsYXNzTGlzdCgpOwogICAgIERPTVRva2VuTGlzdCogb3B0aW9uYWxDbGFzc0xpc3QoKSBj
b25zdDsKIApJbmRleDogU291cmNlL1dlYkNvcmUvZG9tL05vZGUuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlLmNwcAkocmV2aXNpb24gNzcwOTkpCisrKyBTb3VyY2Uv
V2ViQ29yZS9kb20vTm9kZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEyNTAsNiArMTI1MCw5IEBA
IHZvaWQgTm9kZTo6YXR0YWNoKCkKICAgICAgICAgfQogICAgIH0KIAorICAgIGlmIChwYXJlbnRO
b2RlKCkgJiYgcGFyZW50Tm9kZSgpLT5nZXRGbGFnKFNlbGZPckFuY2VzdG9ySGFzRGlyQXV0b0Zs
YWcpKQorICAgICAgICBzZXRGbGFnKFNlbGZPckFuY2VzdG9ySGFzRGlyQXV0b0ZsYWcpOworCiAg
ICAgc2V0QXR0YWNoZWQoKTsKICAgICBjbGVhck5lZWRzU3R5bGVSZWNhbGMoKTsKIH0KQEAgLTI5
NzksNiArMjk4MiwyNyBAQCBib29sIE5vZGU6OmRpc2FibGVkKCkgY29uc3QKICAgICByZXR1cm4g
ZmFsc2U7CiB9CiAKK3ZvaWQgTm9kZTo6YWRqdXN0RWxlbWVudERpcmVjdGlvbmFsaXR5SWZOZWVk
ZWQoKQoreworICAgIGlmIChnZXRGbGFnKFNlbGZPckFuY2VzdG9ySGFzRGlyQXV0b0ZsYWcpKSB7
CisgICAgICAgIEVsZW1lbnQqIGVsZW1lbnQgPSBpc0VsZW1lbnROb2RlKCkgPyB0b0VsZW1lbnQo
dGhpcykgOiBhbmNlc3RvckVsZW1lbnQoKTsKKyAgICAgICAgd2hpbGUgKGVsZW1lbnQgJiYgZWxl
bWVudC0+cGFyZW50RWxlbWVudCgpICYmIGVsZW1lbnQtPnBhcmVudEVsZW1lbnQoKS0+Z2V0Rmxh
ZyhTZWxmT3JBbmNlc3Rvckhhc0RpckF1dG9GbGFnKSkKKyAgICAgICAgICAgIGVsZW1lbnQgPSBl
bGVtZW50LT5wYXJlbnRFbGVtZW50KCk7CisgICAgICAgIGlmIChlbGVtZW50KQorICAgICAgICAg
ICAgZWxlbWVudC0+c2V0TmVlZHNTdHlsZVJlY2FsYygpOworICAgIH0KK30KKwordm9pZCBOb2Rl
OjpzZXRIYXNEaXJBdXRvRmxhZ1JlY3Vyc2l2ZWx5KGJvb2wgZmxhZykKK3sKKyAgICBpZiAoIGdl
dEZsYWcoU2VsZk9yQW5jZXN0b3JIYXNEaXJBdXRvRmxhZykgPT0gZmxhZykKKyAgICAgICAgcmV0
dXJuOworICAgIAorICAgIE5vZGUqIG5vZGUgPSB0aGlzOworICAgIGZvciAoOyBub2RlOyBub2Rl
ID0gbm9kZS0+dHJhdmVyc2VOZXh0Tm9kZSh0aGlzKSkKKyAgICAgICAgbm9kZS0+c2V0RmxhZyhm
bGFnLCBTZWxmT3JBbmNlc3Rvckhhc0RpckF1dG9GbGFnKTsKK30KKyAgICAKIHZvaWQgTm9kZTo6
ZGVmYXVsdEV2ZW50SGFuZGxlcihFdmVudCogZXZlbnQpCiB7CiAgICAgaWYgKGV2ZW50LT50YXJn
ZXQoKSAhPSB0aGlzKQpJbmRleDogU291cmNlL1dlYkNvcmUvZG9tL05vZGUuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9kb20vTm9kZS5oCShyZXZpc2lvbiA3NzA5OSkKKysrIFNvdXJj
ZS9XZWJDb3JlL2RvbS9Ob2RlLmgJKHdvcmtpbmcgY29weSkKQEAgLTYwMyw2ICs2MDMsOCBAQCBw
cml2YXRlOgogCiAgICAgICAgIFN0eWxlQ2hhbmdlTWFzayA9IDEgPDwgbm9kZVN0eWxlQ2hhbmdl
U2hpZnQgfCAxIDw8IChub2RlU3R5bGVDaGFuZ2VTaGlmdCArIDEpLAogCisgICAgICAgIFNlbGZP
ckFuY2VzdG9ySGFzRGlyQXV0b0ZsYWcgPSAxIDw8IDI3LAorCiAjaWYgRU5BQkxFKFNWRykKICAg
ICAgICAgRGVmYXVsdE5vZGVGbGFncyA9IElzUGFyc2luZ0NoaWxkcmVuRmluaXNoZWRGbGFnIHwg
SXNTdHlsZUF0dHJpYnV0ZVZhbGlkRmxhZyB8IEFyZVNWR0F0dHJpYnV0ZXNWYWxpZEZsYWcKICNl
bHNlCkBAIC03MDQsNiArNzA2LDEwIEBAIHByb3RlY3RlZDoKICAgICB2b2lkIHNldEhhc1JhcmVT
VkdEYXRhKCkgeyBzZXRGbGFnKEhhc1NWR1JhcmVEYXRhRmxhZyk7IH0KICAgICB2b2lkIGNsZWFy
SGFzUmFyZVNWR0RhdGEoKSB7IGNsZWFyRmxhZyhIYXNTVkdSYXJlRGF0YUZsYWcpOyB9CiAjZW5k
aWYKKworICAgIHZvaWQgYWRqdXN0RWxlbWVudERpcmVjdGlvbmFsaXR5SWZOZWVkZWQoKTsKKyAg
ICB2b2lkIHNldEhhc0RpckF1dG9GbGFnUmVjdXJzaXZlbHkoYm9vbCBmbGFnKTsKKwogfTsKIAog
Ly8gVXNlZCBpbiBOb2RlOjphZGRTdWJyZXNvdXJjZUF0dHJpYnV0ZVVSTHMoKSBhbmQgaW4gYWRk
U3VicmVzb3VyY2VTdHlsZVVSTHMoKQpJbmRleDogU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRWxl
bWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRWxlbWVudC5j
cHAJKHJldmlzaW9uIDc3MDk5KQorKysgU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRWxlbWVudC5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTEyNCw3ICsxMjQsNyBAQCBib29sIEhUTUxFbGVtZW50Ojpt
YXBUb0VudHJ5KGNvbnN0IFF1YWxpCiAgICAgfQogICAgIGlmIChhdHRyTmFtZSA9PSBkaXJBdHRy
KSB7CiAgICAgICAgIHJlc3VsdCA9IGhhc0xvY2FsTmFtZShiZG9UYWcpID8gZUJETyA6IGVVbml2
ZXJzYWw7Ci0gICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgcmV0dXJuIHRydWU7CiAgICAg
fQogCiAgICAgcmV0dXJuIFN0eWxlZEVsZW1lbnQ6Om1hcFRvRW50cnkoYXR0ck5hbWUsIHJlc3Vs
dCk7CkBAIC0xNTYsNiArMTU2LDExIEBAIHZvaWQgSFRNTEVsZW1lbnQ6OnBhcnNlTWFwcGVkQXR0
cmlidXRlKEEKICAgICAgICAgLy8gRklYTUU6IEltcGxlbWVudAogICAgIH0gZWxzZSBpZiAoYXR0
ci0+bmFtZSgpID09IGRpckF0dHIpIHsKICAgICAgICAgYWRkQ1NTUHJvcGVydHkoYXR0ciwgQ1NT
UHJvcGVydHlEaXJlY3Rpb24sIGF0dHItPnZhbHVlKCkpOworICAgICAgICBpZiAoZXF1YWxJZ25v
cmluZ0Nhc2UoYXR0ci0+dmFsdWUoKSwgImF1dG8iKSkKKyAgICAgICAgICAgIHNldEhhc0RpckF1
dG9GbGFnUmVjdXJzaXZlbHkodHJ1ZSk7CisgICAgICAgIGVsc2UgCisgICAgICAgICAgICBzZXRI
YXNEaXJBdXRvRmxhZ1JlY3Vyc2l2ZWx5KGZhbHNlKTsKKyAgICAgICAgICAgIAogICAgICAgICBh
ZGRDU1NQcm9wZXJ0eShhdHRyLCBDU1NQcm9wZXJ0eVVuaWNvZGVCaWRpLCBoYXNMb2NhbE5hbWUo
YmRvVGFnKSA/IENTU1ZhbHVlQmlkaU92ZXJyaWRlIDogQ1NTVmFsdWVFbWJlZCk7CiAgICAgfSBl
bHNlIGlmIChhdHRyLT5uYW1lKCkgPT0gZHJhZ2dhYmxlQXR0cikgewogICAgICAgICBjb25zdCBB
dG9taWNTdHJpbmcmIHZhbHVlID0gYXR0ci0+dmFsdWUoKTsKSW5kZXg6IExheW91dFRlc3RzL0No
YW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cJKHJldmlzaW9uIDc3
MTY1KQorKysgTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEs
MTkgQEAKKzIwMTEtMDEtMzEgIFlhZWwgQWhhcm9uICA8eWFlbC5haGFyb25Abm9raWEuY29tPgor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZCBzdXBw
b3J0IGZvciBkaXI9YXV0bworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9NTA5MTYKKworICAgICAgICAqIGZhc3QvZG9tL0hUTUxFbGVtZW50L2F0dHItZGly
LWF1dG8tY2hhbmdlLWNoaWxkLW5vZGUtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBm
YXN0L2RvbS9IVE1MRWxlbWVudC9hdHRyLWRpci1hdXRvLWNoYW5nZS1jaGlsZC1ub2RlLmh0bWw6
IEFkZGVkLgorICAgICAgICAqIGZhc3QvZG9tL0hUTUxFbGVtZW50L2F0dHItZGlyLWF1dG8tY2hh
bmdlLXRleHQtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2RvbS9IVE1MRWxl
bWVudC9hdHRyLWRpci1hdXRvLWNoYW5nZS10ZXh0Lmh0bWw6IEFkZGVkLgorICAgICAgICAqIGZh
c3QvZG9tL0hUTUxFbGVtZW50L2F0dHItZGlyLXZhbHVlLWNoYW5nZS1leHBlY3RlZC50eHQ6IEFk
ZGVkLgorICAgICAgICAqIGZhc3QvZG9tL0hUTUxFbGVtZW50L2F0dHItZGlyLXZhbHVlLWNoYW5n
ZS5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2RvbS9IVE1MRWxlbWVudC9hdHRyLWRpci1h
dXRvLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogZmFzdC9kb20vSFRNTEVsZW1lbnQv
YXR0ci1kaXItYXV0by5odG1sOiBBZGRlZC4KKwogMjAxMS0wMS0zMSAgT2xpdmVyIEh1bnQgIDxv
bGl2ZXJAYXBwbGUuY29tPgogCiAgICAgICAgIFJldmlld2VkIGJ5IFNhbSBXZWluaWcuCkluZGV4
OiBMYXlvdXRUZXN0cy9mYXN0L2RvbS9IVE1MRWxlbWVudC9hdHRyLWRpci1hdXRvLWNoYW5nZS1j
aGlsZC1ub2RlLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2Rv
bS9IVE1MRWxlbWVudC9hdHRyLWRpci1hdXRvLWNoYW5nZS1jaGlsZC1ub2RlLWV4cGVjdGVkLnR4
dAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2Zhc3QvZG9tL0hUTUxFbGVtZW50L2F0dHIt
ZGlyLWF1dG8tY2hhbmdlLWNoaWxkLW5vZGUtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQpAQCAt
MCwwICsxLDE5IEBACitUZXN0IHRoYXQgd2hlbiBhbiBlbGVtZW50IGhhcyBkaXIgYXR0cmlidXRl
IHdpdGggdmFsdWUgImF1dG8iLCBpZiBpdHMgZmlyc3QgY2hpbGQgY2hhbmdlcywgdGhlIGVsZW1l
bnQncyBkaXJlY3Rpb25hbGl0eSBpcyByZS1ldmFsdWF0ZWQuCisKK09uIHN1Y2Nlc3MsIHlvdSB3
aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENP
TVBMRVRFIi4KKworCisKKworCisKK1BBU1MgZG9jdW1lbnQuZGVmYXVsdFZpZXcuZ2V0Q29tcHV0
ZWRTdHlsZShlbCwgbnVsbCkuZ2V0UHJvcGVydHlWYWx1ZSgnYm9yZGVyLXJpZ2h0LWNvbG9yJykg
aXMgJ3JnYigyNTUsIDAsIDApJworUEFTUyBkb2N1bWVudC5kZWZhdWx0Vmlldy5nZXRDb21wdXRl
ZFN0eWxlKGVsLCBudWxsKS5nZXRQcm9wZXJ0eVZhbHVlKCdib3JkZXItcmlnaHQtY29sb3InKSBp
cyAncmdiKDAsIDEyOCwgMCknCisKK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKwor
VEVTVCBDT01QTEVURQorCisKKworCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2RvbS9IVE1MRWxl
bWVudC9hdHRyLWRpci1hdXRvLWNoYW5nZS1jaGlsZC1ub2RlLmh0bWwKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
TGF5b3V0VGVzdHMvZmFzdC9kb20vSFRNTEVsZW1lbnQvYXR0ci1kaXItYXV0by1jaGFuZ2UtY2hp
bGQtbm9kZS5odG1sCShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvZmFzdC9kb20vSFRNTEVs
ZW1lbnQvYXR0ci1kaXItYXV0by1jaGFuZ2UtY2hpbGQtbm9kZS5odG1sCShyZXZpc2lvbiAwKQpA
QCAtMCwwICsxLDM3IEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8bWV0YSBo
dHRwLWVxdWl2PSJDb250ZW50LVR5cGUiIGNvbnRlbnQ9InRleHQvaHRtbDsgY2hhcnNldD11dGYt
OCI+Cis8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4uLy4uL2pzL3Jlc291cmNlcy9qcy10
ZXN0LXN0eWxlLmNzcyI+Cis8c2NyaXB0IHNyYz0iLi4vLi4vanMvcmVzb3VyY2VzL2pzLXRlc3Qt
cHJlLmpzIj48L3NjcmlwdD4KKzxzdHlsZT4KKy50ZXN0RGl2IHstd2Via2l0LWJvcmRlci1zdGFy
dDogNXB4IHNvbGlkIGdyZWVuOyAtd2Via2l0LWJvcmRlci1lbmQ6IDVweCBzb2xpZCByZWQ7IH0K
Kzwvc3R5bGU+Cis8L2hlYWQ+Cis8Ym9keT4KKzxwIGlkPSJkZXNjcmlwdGlvbiI+PC9wPgorPGRp
diBpZD0iY29uc29sZSI+PC9wPgorPGRpdiBpZD0icmVzdWx0Ij48L2Rpdj4KKworPGRpdiBpZD0i
dGVzdCIgZGlyPSJhdXRvIiBjbGFzcz0idGVzdERpdiI+PC9kaXY+Cis8c2NyaXB0PgorCitkZXNj
cmlwdGlvbignVGVzdCB0aGF0IHdoZW4gYW4gZWxlbWVudCBoYXMgZGlyIGF0dHJpYnV0ZSB3aXRo
IHZhbHVlICJhdXRvIiwgaWYgaXRzIGZpcnN0IGNoaWxkIGNoYW5nZXMsIHRoZSBlbGVtZW50XCdz
IGRpcmVjdGlvbmFsaXR5IGlzIHJlLWV2YWx1YXRlZC4nKTsKKwordmFyIGVsID0gZG9jdW1lbnQu
Z2V0RWxlbWVudEJ5SWQoInRlc3QiKTsKK3ZhciBjaGlsZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1l
bnQoImRpdiIpOworY2hpbGQuaW5uZXJIVE1MPSJ0ZXN0IjsKK2VsLmFwcGVuZENoaWxkKGNoaWxk
KTsKK3Nob3VsZEJlKCJkb2N1bWVudC5kZWZhdWx0Vmlldy5nZXRDb21wdXRlZFN0eWxlKGVsLCBu
dWxsKS5nZXRQcm9wZXJ0eVZhbHVlKCdib3JkZXItcmlnaHQtY29sb3InKSIsICIncmdiKDI1NSwg
MCwgMCknIik7CisKK3ZhciBjaGlsZDIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKTsK
K2NoaWxkMi5pbm5lckhUTUw9Itee16fXldeoINeU16nXnSDXoteR16jXmdeqIjsKK2VsLmluc2Vy
dEJlZm9yZShjaGlsZDIsIGNoaWxkKTsKK3Nob3VsZEJlKCJkb2N1bWVudC5kZWZhdWx0Vmlldy5n
ZXRDb21wdXRlZFN0eWxlKGVsLCBudWxsKS5nZXRQcm9wZXJ0eVZhbHVlKCdib3JkZXItcmlnaHQt
Y29sb3InKSIsICIncmdiKDAsIDEyOCwgMCknIik7CitlbC5zdHlsZS5kaXNwbGF5ID0gIm5vbmUi
OworCit3aW5kb3cuc3VjY2Vzc2Z1bGx5UGFyc2VkID0gdHJ1ZTsKKzwvc2NyaXB0PgorPHNjcmlw
dCBzcmM9Ii4uLy4uL2pzL3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgorPC9i
b2R5PgorPC9odG1sPgpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9kb20vSFRNTEVsZW1lbnQvYXR0
ci1kaXItYXV0by1jaGFuZ2UtdGV4dC1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0
VGVzdHMvZmFzdC9kb20vSFRNTEVsZW1lbnQvYXR0ci1kaXItYXV0by1jaGFuZ2UtdGV4dC1leHBl
Y3RlZC50eHQJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9mYXN0L2RvbS9IVE1MRWxlbWVu
dC9hdHRyLWRpci1hdXRvLWNoYW5nZS10ZXh0LWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKQEAg
LTAsMCArMSwxOSBAQAorVGVzdCB0aGF0IHdoZW4gYW4gZWxlbWVudCBoYXMgZGlyIGF0dHJpYnV0
ZSB3aXRoIHZhbHVlICJhdXRvIiwgaWYgaXRzIGZpcnN0IGNoaWxkIHRleHQgbm9kZSBjaGFuZ2Vz
LCB0aGUgZWxlbWVudCdzIGRpcmVjdGlvbmFsaXR5IGlzIHJlLWV2YWx1YXRlZC4KKworT24gc3Vj
Y2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQg
YnkgIlRFU1QgQ09NUExFVEUiLgorCisKKworCisKKworUEFTUyBkb2N1bWVudC5kZWZhdWx0Vmll
dy5nZXRDb21wdXRlZFN0eWxlKGVsLCBudWxsKS5nZXRQcm9wZXJ0eVZhbHVlKCdib3JkZXItcmln
aHQtY29sb3InKSBpcyAncmdiKDI1NSwgMCwgMCknCitQQVNTIGRvY3VtZW50LmRlZmF1bHRWaWV3
LmdldENvbXB1dGVkU3R5bGUoZWwsIG51bGwpLmdldFByb3BlcnR5VmFsdWUoJ2JvcmRlci1yaWdo
dC1jb2xvcicpIGlzICdyZ2IoMCwgMTI4LCAwKScKKworUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQg
aXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisKKworCisKSW5kZXg6IExheW91dFRlc3RzL2Zhc3Qv
ZG9tL0hUTUxFbGVtZW50L2F0dHItZGlyLWF1dG8tY2hhbmdlLXRleHQuaHRtbAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2RvbS9IVE1MRWxlbWVudC9hdHRyLWRpci1hdXRvLWNoYW5n
ZS10ZXh0Lmh0bWwJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9mYXN0L2RvbS9IVE1MRWxl
bWVudC9hdHRyLWRpci1hdXRvLWNoYW5nZS10ZXh0Lmh0bWwJKHJldmlzaW9uIDApCkBAIC0wLDAg
KzEsMzAgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKzxtZXRhIGh0dHAtZXF1
aXY9IkNvbnRlbnQtVHlwZSIgY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PXV0Zi04Ij4KKzxs
aW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iLi4vLi4vanMvcmVzb3VyY2VzL2pzLXRlc3Qtc3R5
bGUuY3NzIj4KKzxzY3JpcHQgc3JjPSIuLi8uLi9qcy9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMi
Pjwvc2NyaXB0PgorPHN0eWxlPgorLnRlc3REaXYgey13ZWJraXQtYm9yZGVyLXN0YXJ0OiA1cHgg
c29saWQgZ3JlZW47IC13ZWJraXQtYm9yZGVyLWVuZDogNXB4IHNvbGlkIHJlZDsgfQorPC9zdHls
ZT4KKzwvaGVhZD4KKzxib2R5PgorPHAgaWQ9ImRlc2NyaXB0aW9uIj48L3A+Cis8ZGl2IGlkPSJj
b25zb2xlIj48L3A+Cis8ZGl2IGlkPSJyZXN1bHQiPjwvZGl2PgorCis8ZGl2IGlkPSJ0ZXN0IiBk
aXI9ImF1dG8iIGNsYXNzPSJ0ZXN0RGl2Ij5UZXN0IHRlc3QgdGVzdDwvZGl2PgorPHNjcmlwdD4K
KworZGVzY3JpcHRpb24oJ1Rlc3QgdGhhdCB3aGVuIGFuIGVsZW1lbnQgaGFzIGRpciBhdHRyaWJ1
dGUgd2l0aCB2YWx1ZSAiYXV0byIsIGlmIGl0cyBmaXJzdCBjaGlsZCB0ZXh0IG5vZGUgY2hhbmdl
cywgdGhlIGVsZW1lbnRcJ3MgZGlyZWN0aW9uYWxpdHkgaXMgcmUtZXZhbHVhdGVkLicpOworCit2
YXIgZWwgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgidGVzdCIpOworc2hvdWxkQmUoImRvY3Vt
ZW50LmRlZmF1bHRWaWV3LmdldENvbXB1dGVkU3R5bGUoZWwsIG51bGwpLmdldFByb3BlcnR5VmFs
dWUoJ2JvcmRlci1yaWdodC1jb2xvcicpIiwgIidyZ2IoMjU1LCAwLCAwKSciKTsKK2VsLmlubmVy
SFRNTCA9ICLXnten15XXqCDXlNep150g16LXkdeo15nXqiI7CitzaG91bGRCZSgiZG9jdW1lbnQu
ZGVmYXVsdFZpZXcuZ2V0Q29tcHV0ZWRTdHlsZShlbCwgbnVsbCkuZ2V0UHJvcGVydHlWYWx1ZSgn
Ym9yZGVyLXJpZ2h0LWNvbG9yJykiLCAiJ3JnYigwLCAxMjgsIDApJyIpOworZWwuc3R5bGUuZGlz
cGxheSA9ICJub25lIjsKK3dpbmRvdy5zdWNjZXNzZnVsbHlQYXJzZWQgPSB0cnVlOworPC9zY3Jp
cHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vanMvcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9z
Y3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2RvbS9IVE1M
RWxlbWVudC9hdHRyLWRpci1hdXRvLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRU
ZXN0cy9mYXN0L2RvbS9IVE1MRWxlbWVudC9hdHRyLWRpci1hdXRvLWV4cGVjdGVkLnR4dAkocmV2
aXNpb24gMCkKKysrIExheW91dFRlc3RzL2Zhc3QvZG9tL0hUTUxFbGVtZW50L2F0dHItZGlyLWF1
dG8tZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDE5IEBACitUZXN0IHRoYXQg
d2hlbiBhbiBlbGVtZW50IGhhcyBhIGRpciBhdHRyaWJ1dGUgd2l0aCB2YWx1ZSAiYXV0byIsIHRo
ZSBkaXJlY3Rpb25hbGl0eSBvZiB0aGUgZWxlbWVudCBpcyBkZXRlcm1pbmVkIGJ5IHRoZSBmaXJz
dCBjaGlsZCB0ZXh0IG5vZGUgb2YgdGhhdCBlbGVtZW50LgorCitPbiBzdWNjZXNzLCB5b3Ugd2ls
bCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01Q
TEVURSIuCisKKworCisKKworUEFTUyBkb2N1bWVudC5kZWZhdWx0Vmlldy5nZXRDb21wdXRlZFN0
eWxlKGVsLCBudWxsKS5nZXRQcm9wZXJ0eVZhbHVlKCdib3JkZXItcmlnaHQtY29sb3InKSBpcyAn
cmdiKDI1NSwgMCwgMCknCitQQVNTIGRvY3VtZW50LmRlZmF1bHRWaWV3LmdldENvbXB1dGVkU3R5
bGUoZWwsIG51bGwpLmdldFByb3BlcnR5VmFsdWUoJ2JvcmRlci1yaWdodC1jb2xvcicpIGlzICdy
Z2IoMCwgMTI4LCAwKScKK1BBU1MgZG9jdW1lbnQuZGVmYXVsdFZpZXcuZ2V0Q29tcHV0ZWRTdHls
ZShlbCwgbnVsbCkuZ2V0UHJvcGVydHlWYWx1ZSgnYm9yZGVyLXJpZ2h0LWNvbG9yJykgaXMgJ3Jn
YigwLCAxMjgsIDApJworCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1Qg
Q09NUExFVEUKKworCisKKwpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9kb20vSFRNTEVsZW1lbnQv
YXR0ci1kaXItYXV0by5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZG9tL0hU
TUxFbGVtZW50L2F0dHItZGlyLWF1dG8uaHRtbAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3Rz
L2Zhc3QvZG9tL0hUTUxFbGVtZW50L2F0dHItZGlyLWF1dG8uaHRtbAkocmV2aXNpb24gMCkKQEAg
LTAsMCArMSwzOCBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorPG1ldGEgaHR0
cC1lcXVpdj0iQ29udGVudC1UeXBlIiBjb250ZW50PSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9dXRmLTgi
PgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIuLi8uLi9qcy9yZXNvdXJjZXMvanMtdGVz
dC1zdHlsZS5jc3MiPgorPHNjcmlwdCBzcmM9Ii4uLy4uL2pzL3Jlc291cmNlcy9qcy10ZXN0LXBy
ZS5qcyI+PC9zY3JpcHQ+Cis8c3R5bGU+CisudGVzdERpdiB7LXdlYmtpdC1ib3JkZXItc3RhcnQ6
IDVweCBzb2xpZCBncmVlbjsgLXdlYmtpdC1ib3JkZXItZW5kOiA1cHggc29saWQgcmVkOyB9Cis8
L3N0eWxlPgorPC9oZWFkPgorPGJvZHk+Cis8cCBpZD0iZGVzY3JpcHRpb24iPjwvcD4KKzxkaXYg
aWQ9ImNvbnNvbGUiPjwvcD4KKzxkaXYgaWQ9InJlc3VsdCI+PC9kaXY+Cis8ZGl2IGlkPSJwYXJl
bnREaXYiPgorVGVzdCB0aGF0IHRoZSBkaXJlY3Rpb24gb2YgZW5nbGlzaCB0ZXh0IGlzIGxlZnQt
dG8tcmlnaHQuCis8ZGl2IGlkPSJsdHIiIGRpcj0iYXV0byIgY2xhc3M9InRlc3REaXYiPlRlc3Qg
dGVzdCB0ZXN0PC9kaXY+CitUZXN0IHRoYXQgdGhlIGRpcmVjdGlvbiBvZiBoZWJyZXcgdGV4dCBp
cyByaWdodC10by1sZWZ0LgorPGRpdiBpZD0icnRsMSIgZGlyPSJhdXRvIiBjbGFzcz0idGVzdERp
diI+157Xp9eV16gg15TXqdedINei15HXqNeZ16o8L2Rpdj4KK1Rlc3QgdGhhdCAnPycgZG9lcyBu
b3QgYWZmZWN0IHRoZSBkaXJlY3Rpb25hbGl0eS4KKzxkaXYgaWQ9InJ0bDIiIGRpcj0iYXV0byIg
Y2xhc3M9InRlc3REaXYiPjxzcGFuPj8/PC9zcGFuPtee16fXldeoINeU16nXnSDXoteR16jXmdeq
PHNwYW4+Pz88L3NwYW4+PC9kaXY+Cis8L2Rpdj4KKzxzY3JpcHQ+CisKK2Rlc2NyaXB0aW9uKCdU
ZXN0IHRoYXQgd2hlbiBhbiBlbGVtZW50IGhhcyBhIGRpciBhdHRyaWJ1dGUgd2l0aCB2YWx1ZSAi
YXV0byIsIHRoZSBkaXJlY3Rpb25hbGl0eSBvZiB0aGUgZWxlbWVudCBpcyBkZXRlcm1pbmVkIGJ5
IHRoZSBmaXJzdCBjaGlsZCB0ZXh0IG5vZGUgb2YgdGhhdCBlbGVtZW50LicpOworCit2YXIgZWwg
PSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgibHRyIik7CitzaG91bGRCZSgiZG9jdW1lbnQuZGVm
YXVsdFZpZXcuZ2V0Q29tcHV0ZWRTdHlsZShlbCwgbnVsbCkuZ2V0UHJvcGVydHlWYWx1ZSgnYm9y
ZGVyLXJpZ2h0LWNvbG9yJykiLCAiJ3JnYigyNTUsIDAsIDApJyIpOworZWwgPSBkb2N1bWVudC5n
ZXRFbGVtZW50QnlJZCgicnRsMSIpOworc2hvdWxkQmUoImRvY3VtZW50LmRlZmF1bHRWaWV3Lmdl
dENvbXB1dGVkU3R5bGUoZWwsIG51bGwpLmdldFByb3BlcnR5VmFsdWUoJ2JvcmRlci1yaWdodC1j
b2xvcicpIiwgIidyZ2IoMCwgMTI4LCAwKSciKTsKK2VsID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5
SWQoInJ0bDIiKTsKK3Nob3VsZEJlKCJkb2N1bWVudC5kZWZhdWx0Vmlldy5nZXRDb21wdXRlZFN0
eWxlKGVsLCBudWxsKS5nZXRQcm9wZXJ0eVZhbHVlKCdib3JkZXItcmlnaHQtY29sb3InKSIsICIn
cmdiKDAsIDEyOCwgMCknIik7Citkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgicGFyZW50RGl2Iiku
c3R5bGUuZGlzcGxheSA9ICJub25lIjsKK3dpbmRvdy5zdWNjZXNzZnVsbHlQYXJzZWQgPSB0cnVl
OworPC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vanMvcmVzb3VyY2VzL2pzLXRlc3QtcG9z
dC5qcyI+PC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0
L2RvbS9IVE1MRWxlbWVudC9hdHRyLWRpci12YWx1ZS1jaGFuZ2UtZXhwZWN0ZWQudHh0Cj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZG9tL0hUTUxFbGVtZW50L2F0dHItZGlyLXZhbHVl
LWNoYW5nZS1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9mYXN0L2Rv
bS9IVE1MRWxlbWVudC9hdHRyLWRpci12YWx1ZS1jaGFuZ2UtZXhwZWN0ZWQudHh0CShyZXZpc2lv
biAwKQpAQCAtMCwwICsxLDIwIEBACitUZXN0IHRoYXQgd2hlbiBhbiBlbGVtZW50J3MgZGlyIGF0
dHJpYnV0ZSBjaGFuZ2VzLCB0aGUgZWxlbWVudCdzIGRpcmVjdGlvbmFsaXR5IGlzIHJlLWV2YWx1
YXRlZC4KKworT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNz
YWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgorCisKKworCisKKworUEFTUyBkb2N1
bWVudC5kZWZhdWx0Vmlldy5nZXRDb21wdXRlZFN0eWxlKGVsLCBudWxsKS5nZXRQcm9wZXJ0eVZh
bHVlKCdib3JkZXItcmlnaHQtY29sb3InKSBpcyAncmdiKDAsIDEyOCwgMCknCitQQVNTIGRvY3Vt
ZW50LmRlZmF1bHRWaWV3LmdldENvbXB1dGVkU3R5bGUoZWwsIG51bGwpLmdldFByb3BlcnR5VmFs
dWUoJ2JvcmRlci1yaWdodC1jb2xvcicpIGlzICdyZ2IoMjU1LCAwLCAwKScKK1BBU1MgZG9jdW1l
bnQuZGVmYXVsdFZpZXcuZ2V0Q29tcHV0ZWRTdHlsZShlbCwgbnVsbCkuZ2V0UHJvcGVydHlWYWx1
ZSgnYm9yZGVyLXJpZ2h0LWNvbG9yJykgaXMgJ3JnYigwLCAxMjgsIDApJworCitQQVNTIHN1Y2Nl
c3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKworCisKKwpJbmRleDogTGF5
b3V0VGVzdHMvZmFzdC9kb20vSFRNTEVsZW1lbnQvYXR0ci1kaXItdmFsdWUtY2hhbmdlLmh0bWwK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9kb20vSFRNTEVsZW1lbnQvYXR0ci1kaXIt
dmFsdWUtY2hhbmdlLmh0bWwJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9mYXN0L2RvbS9I
VE1MRWxlbWVudC9hdHRyLWRpci12YWx1ZS1jaGFuZ2UuaHRtbAkocmV2aXNpb24gMCkKQEAgLTAs
MCArMSwzOSBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorPG1ldGEgaHR0cC1l
cXVpdj0iQ29udGVudC1UeXBlIiBjb250ZW50PSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9dXRmLTgiPgor
PGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIuLi8uLi9qcy9yZXNvdXJjZXMvanMtdGVzdC1z
dHlsZS5jc3MiPgorPHNjcmlwdCBzcmM9Ii4uLy4uL2pzL3Jlc291cmNlcy9qcy10ZXN0LXByZS5q
cyI+PC9zY3JpcHQ+Cis8c3R5bGU+CisudGVzdERpdiB7LXdlYmtpdC1ib3JkZXItc3RhcnQ6IDVw
eCBzb2xpZCBncmVlbjsgLXdlYmtpdC1ib3JkZXItZW5kOiA1cHggc29saWQgcmVkOyB9Cis8L3N0
eWxlPgorPC9oZWFkPgorPGJvZHk+Cis8cCBpZD0iZGVzY3JpcHRpb24iPjwvcD4KKzxkaXYgaWQ9
ImNvbnNvbGUiPjwvcD4KKzxkaXYgaWQ9InJlc3VsdCI+PC9kaXY+CisKKzxkaXYgaWQ9InRlc3Qi
IGRpcj0iYXV0byIgY2xhc3M9InRlc3REaXYiPjwvZGl2PgorPHNjcmlwdD4KKworZGVzY3JpcHRp
b24oJ1Rlc3QgdGhhdCB3aGVuIGFuIGVsZW1lbnRcJ3MgZGlyIGF0dHJpYnV0ZSBjaGFuZ2VzLCB0
aGUgZWxlbWVudFwncyBkaXJlY3Rpb25hbGl0eSBpcyByZS1ldmFsdWF0ZWQuJyk7CisKK3ZhciBl
bCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJ0ZXN0Iik7Cit2YXIgY2hpbGQgPSBkb2N1bWVu
dC5jcmVhdGVFbGVtZW50KCJkaXYiKTsKK2NoaWxkLmlubmVySFRNTD0i157Xp9eV16gg15TXqded
INei15HXqNeZ16oiOworZWwuYXBwZW5kQ2hpbGQoY2hpbGQpOworc2hvdWxkQmUoImRvY3VtZW50
LmRlZmF1bHRWaWV3LmdldENvbXB1dGVkU3R5bGUoZWwsIG51bGwpLmdldFByb3BlcnR5VmFsdWUo
J2JvcmRlci1yaWdodC1jb2xvcicpIiwgIidyZ2IoMCwgMTI4LCAwKSciKTsKKworZWwuc2V0QXR0
cmlidXRlKCJkaXIiLCAibHRyIik7CitzaG91bGRCZSgiZG9jdW1lbnQuZGVmYXVsdFZpZXcuZ2V0
Q29tcHV0ZWRTdHlsZShlbCwgbnVsbCkuZ2V0UHJvcGVydHlWYWx1ZSgnYm9yZGVyLXJpZ2h0LWNv
bG9yJykiLCAiJ3JnYigyNTUsIDAsIDApJyIpOworCitlbC5zZXRBdHRyaWJ1dGUoImRpciIsICJh
dXRvIik7CitzaG91bGRCZSgiZG9jdW1lbnQuZGVmYXVsdFZpZXcuZ2V0Q29tcHV0ZWRTdHlsZShl
bCwgbnVsbCkuZ2V0UHJvcGVydHlWYWx1ZSgnYm9yZGVyLXJpZ2h0LWNvbG9yJykiLCAiJ3JnYigw
LCAxMjgsIDApJyIpOworCitlbC5zdHlsZS5kaXNwbGF5ID0gIm5vbmUiOworCit3aW5kb3cuc3Vj
Y2Vzc2Z1bGx5UGFyc2VkID0gdHJ1ZTsKKzwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uL2pz
L3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>80835</attachid>
            <date>2011-02-01 15:14:52 -0800</date>
            <delta_ts>2011-02-02 12:29:18 -0800</delta_ts>
            <desc>Patch.</desc>
            <filename>50916.patch</filename>
            <type>text/plain</type>
            <size>28742</size>
            <attacher name="Yael">yael</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gNzcxODApCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMjAgQEAK
KzIwMTEtMDEtMzEgIFlhZWwgQWhhcm9uICA8eWFlbC5haGFyb25Abm9raWEuY29tPgorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZCBzdXBwb3J0IGZv
ciBkaXI9YXV0bworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9NTA5MTYKKworICAgICAgICBDaGFuZ2UgZGVmYXVsdFdyaXRpbmdEaXJlY3Rpb24oKSB0byBy
ZXR1cm4gaWYgdGhlIHdyaXRpbmcgZGlyZWN0aW9uIHdhcyBkZXRlcm1pbmVkIGZyb20gYSBsZXR0
ZXIgd2l0aCBzdHJvbmcgZGlyZWN0aW9uYWxpdHkgb3Igbm90LgorCisgICAgICAgICogSmF2YVNj
cmlwdENvcmUuZXhwOgorICAgICAgICAqIEphdmFTY3JpcHRDb3JlLm9yZGVyOgorICAgICAgICAq
IHd0Zi90ZXh0L1N0cmluZ0ltcGwuY3BwOgorICAgICAgICAoV1RGOjpTdHJpbmdJbXBsOjpkZWZh
dWx0V3JpdGluZ0RpcmVjdGlvbik6CisgICAgICAgICogd3RmL3RleHQvU3RyaW5nSW1wbC5oOgor
ICAgICAgICAqIHd0Zi90ZXh0L1dURlN0cmluZy5oOgorICAgICAgICAoV1RGOjpTdHJpbmc6OmRl
ZmF1bHRXcml0aW5nRGlyZWN0aW9uKToKKwogMjAxMS0wMS0zMSAgT2xpdmVyIEh1bnQgIDxvbGl2
ZXJAYXBwbGUuY29tPgogCiAgICAgICAgIFJldmlld2VkIGJ5IFNhbSBXZWluaWcuCkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUuZXhwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS5leHAJKHJldmlzaW9uIDc3MTgwKQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLmV4cAkod29ya2luZyBjb3B5
KQpAQCAtMzM0LDcgKzMzNCw3IEBAIF9fWk4zV1RGMTBTdHJpbmdJbXBsMThzaW1wbGlmeVdoaXRl
U3BhY2UKIF9fWk4zV1RGMTBTdHJpbmdJbXBsMTljaGFyYWN0ZXJTdGFydGluZ0F0RWoKIF9fWk4z
V1RGMTBTdHJpbmdJbXBsMTljcmVhdGVVbmluaXRpYWxpemVkRWpSUHQKIF9fWk4zV1RGMTBTdHJp
bmdJbXBsMjJjb250YWluc09ubHlXaGl0ZXNwYWNlRXYKLV9fWk4zV1RGMTBTdHJpbmdJbXBsMjNk
ZWZhdWx0V3JpdGluZ0RpcmVjdGlvbkV2CitfX1pOM1dURjEwU3RyaW5nSW1wbDIzZGVmYXVsdFdy
aXRpbmdEaXJlY3Rpb25FUGIKIF9fWk4zV1RGMTBTdHJpbmdJbXBsMjNyZXZlcnNlRmluZElnbm9y
aW5nQ2FzZUVQUzBfagogX19aTjNXVEYxMFN0cmluZ0ltcGwzN2NyZWF0ZVN0cmlwcGluZ051bGxD
aGFyYWN0ZXJzU2xvd0Nhc2VFUEt0agogX19aTjNXVEYxMFN0cmluZ0ltcGw0ZmluZEVQRmJ0RWoK
SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS5vcmRlcgo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUub3JkZXIJKHJldmlz
aW9uIDc3MTgwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLm9yZGVy
CSh3b3JraW5nIGNvcHkpCkBAIC0xNDI3LDcgKzE0MjcsNyBAQCBfX1pON1dlYkNvcmUxMFN0cmlu
Z0ltcGwxMXJldmVyc2VGaW5kRXRpCiBfX1pOM1dURjIzd2FpdEZvclRocmVhZENvbXBsZXRpb25F
alBQdgogX19aTjNXVEYxNEZhc3RNYWxsb2Nab25lMTBzdGF0aXN0aWNzRVAxNF9tYWxsb2Nfem9u
ZV90UDE5bWFsbG9jX3N0YXRpc3RpY3NfdAogX19aTks3V2ViQ29yZTZTdHJpbmcxOHNpbXBsaWZ5
V2hpdGVTcGFjZUV2Ci1fX1pON1dlYkNvcmUxMFN0cmluZ0ltcGwyM2RlZmF1bHRXcml0aW5nRGly
ZWN0aW9uRXYKK19fWk4zV1RGMTBTdHJpbmdJbXBsMjNkZWZhdWx0V3JpdGluZ0RpcmVjdGlvbkVQ
YgogX19aTjNKU0NMMjBkYXRlUHJvdG9GdW5jU2V0VGltZUVQTlNfOUV4ZWNTdGF0ZUVQTlNfOEpT
T2JqZWN0RU5TXzdKU1ZhbHVlRVJLTlNfN0FyZ0xpc3RFCiBfX1pOM0pTQ0wyMWRhdGVQcm90b0Z1
bmNHZXRNb250aEVQTlNfOUV4ZWNTdGF0ZUVQTlNfOEpTT2JqZWN0RU5TXzdKU1ZhbHVlRVJLTlNf
N0FyZ0xpc3RFCiBfX1pOSzNKU0MxMkRhdGVJbnN0YW5jZTI2Y2FsY3VsYXRlR3JlZ29yaWFuRGF0
ZVRpbWVFUE5TXzlFeGVjU3RhdGVFCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvd3RmL3Rl
eHQvU3RyaW5nSW1wbC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3d0
Zi90ZXh0L1N0cmluZ0ltcGwuY3BwCShyZXZpc2lvbiA3NzE4MCkKKysrIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS93dGYvdGV4dC9TdHJpbmdJbXBsLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTAwNSwx
NSArMTAwNSwyMyBAQCBib29sIGVxdWFsSWdub3JpbmdOdWxsaXR5KFN0cmluZ0ltcGwqIGEsCiAg
ICAgcmV0dXJuIGZhbHNlOwogfQogCi1XVEY6OlVuaWNvZGU6OkRpcmVjdGlvbiBTdHJpbmdJbXBs
OjpkZWZhdWx0V3JpdGluZ0RpcmVjdGlvbigpCitXVEY6OlVuaWNvZGU6OkRpcmVjdGlvbiBTdHJp
bmdJbXBsOjpkZWZhdWx0V3JpdGluZ0RpcmVjdGlvbihib29sKiBoYXNTdHJvbmdEaXJlY3Rpb25h
bGl0eSkKIHsKICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbV9sZW5ndGg7ICsraSkgewog
ICAgICAgICBXVEY6OlVuaWNvZGU6OkRpcmVjdGlvbiBjaGFyRGlyZWN0aW9uID0gV1RGOjpVbmlj
b2RlOjpkaXJlY3Rpb24obV9kYXRhW2ldKTsKLSAgICAgICAgaWYgKGNoYXJEaXJlY3Rpb24gPT0g
V1RGOjpVbmljb2RlOjpMZWZ0VG9SaWdodCkKKyAgICAgICAgaWYgKGNoYXJEaXJlY3Rpb24gPT0g
V1RGOjpVbmljb2RlOjpMZWZ0VG9SaWdodCkgeworICAgICAgICAgICAgaWYgKGhhc1N0cm9uZ0Rp
cmVjdGlvbmFsaXR5KQorICAgICAgICAgICAgICAgICpoYXNTdHJvbmdEaXJlY3Rpb25hbGl0eSA9
IHRydWU7CiAgICAgICAgICAgICByZXR1cm4gV1RGOjpVbmljb2RlOjpMZWZ0VG9SaWdodDsKLSAg
ICAgICAgaWYgKGNoYXJEaXJlY3Rpb24gPT0gV1RGOjpVbmljb2RlOjpSaWdodFRvTGVmdCB8fCBj
aGFyRGlyZWN0aW9uID09IFdURjo6VW5pY29kZTo6UmlnaHRUb0xlZnRBcmFiaWMpCisgICAgICAg
IH0KKyAgICAgICAgaWYgKGNoYXJEaXJlY3Rpb24gPT0gV1RGOjpVbmljb2RlOjpSaWdodFRvTGVm
dCB8fCBjaGFyRGlyZWN0aW9uID09IFdURjo6VW5pY29kZTo6UmlnaHRUb0xlZnRBcmFiaWMpIHsK
KyAgICAgICAgICAgIGlmIChoYXNTdHJvbmdEaXJlY3Rpb25hbGl0eSkKKyAgICAgICAgICAgICAg
ICAqaGFzU3Ryb25nRGlyZWN0aW9uYWxpdHkgPSB0cnVlOwogICAgICAgICAgICAgcmV0dXJuIFdU
Rjo6VW5pY29kZTo6UmlnaHRUb0xlZnQ7CisgICAgICAgIH0KICAgICB9CisgICAgaWYgKGhhc1N0
cm9uZ0RpcmVjdGlvbmFsaXR5KQorICAgICAgICAqaGFzU3Ryb25nRGlyZWN0aW9uYWxpdHkgPSBm
YWxzZTsKICAgICByZXR1cm4gV1RGOjpVbmljb2RlOjpMZWZ0VG9SaWdodDsKIH0KIApJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL3d0Zi90ZXh0L1N0cmluZ0ltcGwuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvd3RmL3RleHQvU3RyaW5nSW1wbC5oCShyZXZpc2lvbiA3
NzE4MCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS93dGYvdGV4dC9TdHJpbmdJbXBsLmgJKHdv
cmtpbmcgY29weSkKQEAgLTMxNiw3ICszMTYsNyBAQCBwdWJsaWM6CiAgICAgUGFzc1JlZlB0cjxT
dHJpbmdJbXBsPiByZXBsYWNlKFN0cmluZ0ltcGwqLCBTdHJpbmdJbXBsKik7CiAgICAgUGFzc1Jl
ZlB0cjxTdHJpbmdJbXBsPiByZXBsYWNlKHVuc2lnbmVkIGluZGV4LCB1bnNpZ25lZCBsZW4sIFN0
cmluZ0ltcGwqKTsKIAotICAgIFdURjo6VW5pY29kZTo6RGlyZWN0aW9uIGRlZmF1bHRXcml0aW5n
RGlyZWN0aW9uKCk7CisgICAgV1RGOjpVbmljb2RlOjpEaXJlY3Rpb24gZGVmYXVsdFdyaXRpbmdE
aXJlY3Rpb24oYm9vbCogaGFzU3Ryb25nRGlyZWN0aW9uYWxpdHkgPSAwKTsKIAogI2lmIFBMQVRG
T1JNKENGKQogICAgIENGU3RyaW5nUmVmIGNyZWF0ZUNGU3RyaW5nKCk7CkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvd3RmL3RleHQvV1RGU3RyaW5nLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL3d0Zi90ZXh0L1dURlN0cmluZy5oCShyZXZpc2lvbiA3NzE4MCkKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS93dGYvdGV4dC9XVEZTdHJpbmcuaAkod29ya2luZyBjb3B5
KQpAQCAtMzI2LDcgKzMyNiwxNCBAQCBwdWJsaWM6CiAgICAgc3RhdGljIFN0cmluZyBmcm9tVVRG
OFdpdGhMYXRpbjFGYWxsYmFjayhjb25zdCBjaGFyKiwgc2l6ZV90KTsKICAgICAKICAgICAvLyBE
ZXRlcm1pbmVzIHRoZSB3cml0aW5nIGRpcmVjdGlvbiB1c2luZyB0aGUgVW5pY29kZSBCaWRpIEFs
Z29yaXRobSBydWxlcyBQMiBhbmQgUDMuCi0gICAgV1RGOjpVbmljb2RlOjpEaXJlY3Rpb24gZGVm
YXVsdFdyaXRpbmdEaXJlY3Rpb24oKSBjb25zdCB7IHJldHVybiBtX2ltcGwgPyBtX2ltcGwtPmRl
ZmF1bHRXcml0aW5nRGlyZWN0aW9uKCkgOiBXVEY6OlVuaWNvZGU6OkxlZnRUb1JpZ2h0OyB9Cisg
ICAgV1RGOjpVbmljb2RlOjpEaXJlY3Rpb24gZGVmYXVsdFdyaXRpbmdEaXJlY3Rpb24oYm9vbCog
aGFzU3Ryb25nRGlyZWN0aW9uYWxpdHkgPSAwKSBjb25zdAorICAgIHsKKyAgICAgICAgaWYgKG1f
aW1wbCkKKyAgICAgICAgICAgIHJldHVybiBtX2ltcGwtPmRlZmF1bHRXcml0aW5nRGlyZWN0aW9u
KGhhc1N0cm9uZ0RpcmVjdGlvbmFsaXR5KTsKKyAgICAgICAgaWYgKGhhc1N0cm9uZ0RpcmVjdGlv
bmFsaXR5KQorICAgICAgICAgICAgKmhhc1N0cm9uZ0RpcmVjdGlvbmFsaXR5ID0gZmFsc2U7Cisg
ICAgICAgIHJldHVybiBXVEY6OlVuaWNvZGU6OkxlZnRUb1JpZ2h0OworICAgIH0KIAogICAgIGJv
b2wgY29udGFpbnNPbmx5QVNDSUkoKSBjb25zdCB7IHJldHVybiBjaGFyYWN0ZXJzQXJlQWxsQVND
SUkoY2hhcmFjdGVycygpLCBsZW5ndGgoKSk7IH0KICAgICBib29sIGNvbnRhaW5zT25seUxhdGlu
MSgpIGNvbnN0IHsgcmV0dXJuIGNoYXJhY3RlcnNBcmVBbGxMYXRpbjEoY2hhcmFjdGVycygpLCBs
ZW5ndGgoKSk7IH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDc3MTgwKQorKysgU291cmNlL1dl
YkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsNDAgQEAKKzIwMTEtMDEt
MzEgIFlhZWwgQWhhcm9uICA8eWFlbC5haGFyb25Abm9raWEuY29tPgorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZCBzdXBwb3J0IGZvciBkaXI9YXV0
bworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NTA5MTYK
KworICAgICAgICBUZXN0czogZmFzdC9kb20vSFRNTEVsZW1lbnQvYXR0ci1kaXItYXV0by1jaGFu
Z2UtY2hpbGQtbm9kZS5odG1sCisgICAgICAgICAgICAgICBmYXN0L2RvbS9IVE1MRWxlbWVudC9h
dHRyLWRpci1hdXRvLWNoYW5nZS10ZXh0Lmh0bWwKKyAgICAgICAgICAgICAgIGZhc3QvZG9tL0hU
TUxFbGVtZW50L2F0dHItZGlyLXZhbHVlLWNoYW5nZS5odG1sCisgICAgICAgICAgICAgICBmYXN0
L2RvbS9IVE1MRWxlbWVudC9hdHRyLWRpci1hdXRvLmh0bWwKKworICAgICAgICBXaGVuIGFuIGVs
ZW1lbnQgaGFzIGRpciBhdHRyaWJ1dGUgd2l0aCB2YWx1ZSAiYXV0byIsIGNhbGwgZGVmYXVsdFdy
aXRpbmdNb2RlIHRvIGZpbmQgaXRzIGRpcmVjdGlvbmFsaXR5LgorICAgICAgICBBZGRlZCBhIGZs
YWcgU2VsZk9yQW5jZXN0b3JIYXNEaXJBdXRvRmxhZywgYW5kIGFkZGVkIGhvb2tzIGluIHRoZSBE
T00gdG8gc2V0IGFuZCBjaGVjayB0aGlzIGZsYWcuCisgICAgICAgIFdoZW4gYSBub2RlIGlzIGFk
ZGVkLCBpZiBpdHMgcGFyZW50IGhhcyB0aGlzIGZsYWcsIHRoZSBub2RlIHdpbGwgZ2V0IGl0IHRv
by4KKyAgICAgICAgV2hlbiBhIG5vZGUgaXMgYWRkZWQgb3IgcmVtb3ZlZCwgaWYgaXQgaGFzIHRo
aXMgZmxhZywgd2UgdHJhdmVyc2UgaXRzIGFuY2VzdG9ycyB1bnRpbCB3ZSBmaW5kIHRoZSBmaXJz
dCBub2RlIHdpdGggdGhlIGZsYWcuCisgICAgICAgIFdlIHRoZW4gYWRqdXN0IHRoZSBkaXJlY3Rp
b25hbGl0eSBvZiB0aGF0IG5vZGUuCisKKyAgICAgICAgKiBjc3MvQ1NTUGFyc2VyLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkNTU1BhcnNlcjo6cGFyc2VWYWx1ZSk6CisgICAgICAgICogY3NzL0NT
U1N0eWxlU2VsZWN0b3IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q1NTU3R5bGVTZWxlY3Rvcjo6
Y2FuU2hhcmVTdHlsZVdpdGhFbGVtZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1N0eWxlU2Vs
ZWN0b3I6OmFwcGx5UHJvcGVydHkpOgorICAgICAgICAqIGNzcy9DU1NWYWx1ZUtleXdvcmRzLmlu
OgorICAgICAgICAqIGRvbS9FbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkVsZW1lbnQ6
OmNoaWxkcmVuQ2hhbmdlZCk6CisgICAgICAgIChXZWJDb3JlOjpFbGVtZW50OjpkaXJlY3Rpb25h
bGl0eSk6CisgICAgICAgICogZG9tL0VsZW1lbnQuaDoKKyAgICAgICAgKiBkb20vTm9kZS5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpOb2RlOjphdHRhY2gpOgorICAgICAgICAoV2ViQ29yZTo6Tm9k
ZTo6YWRqdXN0RWxlbWVudERpcmVjdGlvbmFsaXR5SWZOZWVkZWQpOgorICAgICAgICAqIGRvbS9O
b2RlLmg6CisgICAgICAgIChXZWJDb3JlOjpOb2RlOjpzZXRIYXNEaXJBdXRvRmxhZyk6CisgICAg
ICAgICogaHRtbC9IVE1MRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MRWxlbWVu
dDo6bWFwVG9FbnRyeSk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MRWxlbWVudDo6cGFyc2VNYXBw
ZWRBdHRyaWJ1dGUpOgorCiAyMDExLTAxLTMxICBEYW4gQmVybnN0ZWluICA8bWl0ekBhcHBsZS5j
b20+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgQWRlbGUgUGV0ZXJzb24uCkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9jc3MvQ1NTUGFyc2VyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9j
c3MvQ1NTUGFyc2VyLmNwcAkocmV2aXNpb24gNzcxODApCisrKyBTb3VyY2UvV2ViQ29yZS9jc3Mv
Q1NTUGFyc2VyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNzMxLDggKzczMSw4IEBAIGJvb2wgQ1NT
UGFyc2VyOjpwYXJzZVZhbHVlKGludCBwcm9wSWQsIGIKICAgICAgICAgICAgIHZhbGlkUHJpbWl0
aXZlID0gdHJ1ZTsKICAgICAgICAgYnJlYWs7CiAKLSAgICBjYXNlIENTU1Byb3BlcnR5RGlyZWN0
aW9uOiAgICAgICAgICAgIC8vIGx0ciB8IHJ0bCB8IGluaGVyaXQKLSAgICAgICAgaWYgKGlkID09
IENTU1ZhbHVlTHRyIHx8IGlkID09IENTU1ZhbHVlUnRsKQorICAgIGNhc2UgQ1NTUHJvcGVydHlE
aXJlY3Rpb246ICAgICAgICAgICAgLy8gbHRyIHwgcnRsIHwgYXV0byB8IGluaGVyaXQKKyAgICAg
ICAgaWYgKGlkID09IENTU1ZhbHVlTHRyIHx8IGlkID09IENTU1ZhbHVlUnRsIHx8IGlkID09IENT
U1ZhbHVlQXV0bykKICAgICAgICAgICAgIHZhbGlkUHJpbWl0aXZlID0gdHJ1ZTsKICAgICAgICAg
YnJlYWs7CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2Nzcy9DU1NTdHlsZVNlbGVjdG9yLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9jc3MvQ1NTU3R5bGVTZWxlY3Rvci5jcHAJKHJl
dmlzaW9uIDc3MTgwKQorKysgU291cmNlL1dlYkNvcmUvY3NzL0NTU1N0eWxlU2VsZWN0b3IuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0xMDkyLDYgKzEwOTIsOSBAQCBib29sIENTU1N0eWxlU2VsZWN0
b3I6OmNhblNoYXJlU3R5bGVXaXRoCiAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogI2Vu
ZGlmCiAKKyAgICAgICAgICAgIGlmIChlcXVhbElnbm9yaW5nQ2FzZShzLT5mYXN0R2V0QXR0cmli
dXRlKGRpckF0dHIpLCAiYXV0byIpIHx8IGVxdWFsSWdub3JpbmdDYXNlKG1fZWxlbWVudC0+ZmFz
dEdldEF0dHJpYnV0ZShkaXJBdHRyKSwgImF1dG8iKSkKKyAgICAgICAgICAgICAgICByZXR1cm4g
ZmFsc2U7CisKICAgICAgICAgICAgIGJvb2wgY2xhc3Nlc01hdGNoID0gdHJ1ZTsKICAgICAgICAg
ICAgIGlmIChzLT5oYXNDbGFzcygpKSB7CiAgICAgICAgICAgICAgICAgY29uc3QgQXRvbWljU3Ry
aW5nJiBjbGFzczEgPSBtX2VsZW1lbnQtPmZhc3RHZXRBdHRyaWJ1dGUoY2xhc3NBdHRyKTsKQEAg
LTMzNzQsNyArMzM3NywxMSBAQCB2b2lkIENTU1N0eWxlU2VsZWN0b3I6OmFwcGx5UHJvcGVydHko
aW50CiAgICAgICAgIEhBTkRMRV9JTkhFUklUX0FORF9JTklUSUFMX0FORF9QUklNSVRJVkUoY2xl
YXIsIENsZWFyKQogICAgICAgICByZXR1cm47CiAgICAgY2FzZSBDU1NQcm9wZXJ0eURpcmVjdGlv
bjoKLSAgICAgICAgSEFORExFX0lOSEVSSVRfQU5EX0lOSVRJQUxfQU5EX1BSSU1JVElWRShkaXJl
Y3Rpb24sIERpcmVjdGlvbikKKyAgICAgICAgaWYgKHByaW1pdGl2ZVZhbHVlICYmIHByaW1pdGl2
ZVZhbHVlLT5nZXRJZGVudCgpID09IENTU1ZhbHVlQXV0bykKKyAgICAgICAgICAgIG1fc3R5bGUt
PnNldERpcmVjdGlvbihtX2VsZW1lbnQtPmRpcmVjdGlvbmFsaXR5KCkpOworICAgICAgICBlbHNl
IHsKKyAgICAgICAgICAgIEhBTkRMRV9JTkhFUklUX0FORF9JTklUSUFMX0FORF9QUklNSVRJVkUo
ZGlyZWN0aW9uLCBEaXJlY3Rpb24pCisgICAgICAgIH0KICAgICAgICAgaWYgKCFpc0luaGVyaXQg
JiYgIWlzSW5pdGlhbCAmJiBtX2VsZW1lbnQgJiYgbV9lbGVtZW50ID09IG1fZWxlbWVudC0+ZG9j
dW1lbnQoKS0+ZG9jdW1lbnRFbGVtZW50KCkpCiAgICAgICAgICAgICBtX2VsZW1lbnQtPmRvY3Vt
ZW50KCktPnNldERpcmVjdGlvblNldE9uRG9jdW1lbnRFbGVtZW50KHRydWUpOwogICAgICAgICBy
ZXR1cm47CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9jc3MvQ1NTVmFsdWVLZXl3b3Jkcy5pbgo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9jc3MvQ1NTVmFsdWVLZXl3b3Jkcy5pbgkocmV2aXNp
b24gNzcxODApCisrKyBTb3VyY2UvV2ViQ29yZS9jc3MvQ1NTVmFsdWVLZXl3b3Jkcy5pbgkod29y
a2luZyBjb3B5KQpAQCAtMzY4LDYgKzM2OCw3IEBAIGFsbC1zY3JvbGwKICMKIGx0cgogcnRsCisj
IGF1dG8KICMKICMgQ1NTX1BST1BfVEVYVF9UUkFOU0ZPUk06CiAjCkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9kb20vRWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvZG9tL0Vs
ZW1lbnQuY3BwCShyZXZpc2lvbiA3NzE4MCkKKysrIFNvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTIyMSw2ICsxMjIxLDcgQEAgdm9pZCBFbGVtZW50Ojpj
aGlsZHJlbkNoYW5nZWQoYm9vbCBjaGFuZwogICAgIENvbnRhaW5lck5vZGU6OmNoaWxkcmVuQ2hh
bmdlZChjaGFuZ2VkQnlQYXJzZXIsIGJlZm9yZUNoYW5nZSwgYWZ0ZXJDaGFuZ2UsIGNoaWxkQ291
bnREZWx0YSk7CiAgICAgaWYgKCFjaGFuZ2VkQnlQYXJzZXIpCiAgICAgICAgIGNoZWNrRm9yU2li
bGluZ1N0eWxlQ2hhbmdlcyh0aGlzLCByZW5kZXJTdHlsZSgpLCBmYWxzZSwgYmVmb3JlQ2hhbmdl
LCBhZnRlckNoYW5nZSwgY2hpbGRDb3VudERlbHRhKTsKKyAgICBhZGp1c3RFbGVtZW50RGlyZWN0
aW9uYWxpdHlJZk5lZWRlZCgpOwogfQogCiB2b2lkIEVsZW1lbnQ6OmZpbmlzaFBhcnNpbmdDaGls
ZHJlbigpCkBAIC0xNjkwLDYgKzE2OTEsMzkgQEAgYm9vbCBFbGVtZW50Ojp3ZWJraXRNYXRjaGVz
U2VsZWN0b3IoY29ucwogICAgIHJldHVybiBmYWxzZTsKIH0KIAorVGV4dERpcmVjdGlvbiBFbGVt
ZW50OjpkaXJlY3Rpb25hbGl0eSgpCit7CisgICAgVGV4dERpcmVjdGlvbiBkaXJlY3Rpb24gPSBM
VFI7CisgICAgQVNTRVJUKGVxdWFsSWdub3JpbmdDYXNlKGZhc3RHZXRBdHRyaWJ1dGUoZGlyQXR0
ciksICJhdXRvIikpOworCisgICAgTm9kZSogbm9kZSA9IGZpcnN0Q2hpbGQoKTsKKyAgICB3aGls
ZSAobm9kZSkgeworICAgICAgICAvLyBTa2lwIGJkaSwgc2NyaXB0IGFuZCBzdHlsZSBlbGVtZW50
cworICAgICAgICBpZiAoZXF1YWxJZ25vcmluZ0Nhc2Uobm9kZS0+bm9kZU5hbWUoKSwgImJkaSIp
IHx8IG5vZGUtPmhhc1RhZ05hbWUoc2NyaXB0VGFnKSB8fCBub2RlLT5oYXNUYWdOYW1lKHN0eWxl
VGFnKSkgeworICAgICAgICAgICAgbm9kZSA9IG5vZGUtPnRyYXZlcnNlTmV4dFNpYmxpbmcodGhp
cyk7CisgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgfQorCisgICAgICAgIC8vIFNraXAg
ZWxlbWVudHMgd2l0aCB2YWxpZCBkaXIgYXR0cmlidXRlCisgICAgICAgIGlmIChub2RlLT5pc0Vs
ZW1lbnROb2RlKCkpIHsKKyAgICAgICAgICAgIEF0b21pY1N0cmluZyBkaXJBdHRyaWJ1dGVWYWx1
ZSA9IHRvRWxlbWVudChub2RlKS0+ZmFzdEdldEF0dHJpYnV0ZShkaXJBdHRyKTsKKyAgICAgICAg
ICAgIGlmIChlcXVhbElnbm9yaW5nQ2FzZShkaXJBdHRyaWJ1dGVWYWx1ZSwgInJ0bCIpIHx8IGVx
dWFsSWdub3JpbmdDYXNlKGRpckF0dHJpYnV0ZVZhbHVlLCAibHRyIikgfHwgZXF1YWxJZ25vcmlu
Z0Nhc2UoZGlyQXR0cmlidXRlVmFsdWUsICJhdXRvIikpIHsKKyAgICAgICAgICAgICAgICBub2Rl
ID0gbm9kZS0+dHJhdmVyc2VOZXh0U2libGluZyh0aGlzKTsKKyAgICAgICAgICAgICAgICBjb250
aW51ZTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorCisgICAgICAgIGlmIChub2RlLT5pc1Rl
eHROb2RlKCkpIHsKKyAgICAgICAgICAgIGJvb2wgaGFzU3Ryb25nRGlyZWN0aW9uYWxpdHk7Cisg
ICAgICAgICAgICBXVEY6OlVuaWNvZGU6OkRpcmVjdGlvbiB0ZXh0RGlyZWN0aW9uID0gbm9kZS0+
dGV4dENvbnRlbnQodHJ1ZSkuZGVmYXVsdFdyaXRpbmdEaXJlY3Rpb24oJmhhc1N0cm9uZ0RpcmVj
dGlvbmFsaXR5KTsKKyAgICAgICAgICAgIGlmIChoYXNTdHJvbmdEaXJlY3Rpb25hbGl0eSkKKyAg
ICAgICAgICAgICAgICByZXR1cm4gKHRleHREaXJlY3Rpb24gPT0gV1RGOjpVbmljb2RlOjpMZWZ0
VG9SaWdodCkgPyBMVFIgOiBSVEw7CisgICAgICAgIH0KKyAgICAgICAgbm9kZSA9IG5vZGUtPnRy
YXZlcnNlTmV4dE5vZGUodGhpcyk7CisgICAgfQorICAgIHJldHVybiBkaXJlY3Rpb247Cit9CisK
IERPTVRva2VuTGlzdCogRWxlbWVudDo6Y2xhc3NMaXN0KCkKIHsKICAgICBFbGVtZW50UmFyZURh
dGEqIGRhdGEgPSBlbnN1cmVSYXJlRGF0YSgpOwpJbmRleDogU291cmNlL1dlYkNvcmUvZG9tL0Vs
ZW1lbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5oCShyZXZp
c2lvbiA3NzE4MCkKKysrIFNvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmgJKHdvcmtpbmcgY29w
eSkKQEAgLTI4Nyw2ICsyODcsOCBAQCBwdWJsaWM6CiAKICAgICBib29sIHdlYmtpdE1hdGNoZXNT
ZWxlY3Rvcihjb25zdCBTdHJpbmcmIHNlbGVjdG9ycywgRXhjZXB0aW9uQ29kZSYpOwogCisgICAg
VGV4dERpcmVjdGlvbiBkaXJlY3Rpb25hbGl0eSgpOworCiAgICAgRE9NVG9rZW5MaXN0KiBjbGFz
c0xpc3QoKTsKICAgICBET01Ub2tlbkxpc3QqIG9wdGlvbmFsQ2xhc3NMaXN0KCkgY29uc3Q7CiAK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9kb20vTm9kZS5jcHAJKHJldmlzaW9uIDc3MTgwKQorKysgU291cmNlL1dlYkNvcmUv
ZG9tL05vZGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMjUwLDYgKzEyNTAsOSBAQCB2b2lkIE5v
ZGU6OmF0dGFjaCgpCiAgICAgICAgIH0KICAgICB9CiAKKyAgICBpZiAocGFyZW50Tm9kZSgpICYm
IHBhcmVudE5vZGUoKS0+Z2V0RmxhZyhTZWxmT3JBbmNlc3Rvckhhc0RpckF1dG9GbGFnKSkKKyAg
ICAgICAgc2V0RmxhZyhTZWxmT3JBbmNlc3Rvckhhc0RpckF1dG9GbGFnKTsKKwogICAgIHNldEF0
dGFjaGVkKCk7CiAgICAgY2xlYXJOZWVkc1N0eWxlUmVjYWxjKCk7CiB9CkBAIC0yOTc5LDYgKzI5
ODIsNDAgQEAgYm9vbCBOb2RlOjpkaXNhYmxlZCgpIGNvbnN0CiAgICAgcmV0dXJuIGZhbHNlOwog
fQogCit2b2lkIE5vZGU6OmFkanVzdEVsZW1lbnREaXJlY3Rpb25hbGl0eUlmTmVlZGVkKCkKK3sK
KyAgICBpZiAoZ2V0RmxhZyhTZWxmT3JBbmNlc3Rvckhhc0RpckF1dG9GbGFnKSkgeworICAgICAg
ICBFbGVtZW50KiBlbGVtZW50ID0gaXNFbGVtZW50Tm9kZSgpID8gdG9FbGVtZW50KHRoaXMpIDog
YW5jZXN0b3JFbGVtZW50KCk7CisgICAgICAgIHdoaWxlIChlbGVtZW50ICYmIGVsZW1lbnQtPnBh
cmVudEVsZW1lbnQoKSAmJiBlbGVtZW50LT5wYXJlbnRFbGVtZW50KCktPmdldEZsYWcoU2VsZk9y
QW5jZXN0b3JIYXNEaXJBdXRvRmxhZykpCisgICAgICAgICAgICBlbGVtZW50ID0gZWxlbWVudC0+
cGFyZW50RWxlbWVudCgpOworICAgICAgICBpZiAoZWxlbWVudCkKKyAgICAgICAgICAgIGVsZW1l
bnQtPnNldE5lZWRzU3R5bGVSZWNhbGMoKTsKKyAgICB9Cit9CisKK3ZvaWQgTm9kZTo6c2V0SGFz
RGlyQXV0b0ZsYWdSZWN1cnNpdmVseShib29sIGZsYWcpCit7CisgICAgaWYgKGdldEZsYWcoU2Vs
Zk9yQW5jZXN0b3JIYXNEaXJBdXRvRmxhZykgPT0gZmxhZykKKyAgICAgICAgcmV0dXJuOworICAg
IAorICAgIE5vZGUqIG5vZGUgPSB0aGlzOworICAgIGlmIChmbGFnKSB7CisgICAgICAgIGZvciAo
OyBub2RlOyBub2RlID0gbm9kZS0+dHJhdmVyc2VOZXh0Tm9kZSh0aGlzKSkKKyAgICAgICAgICAg
IG5vZGUtPnNldEZsYWcodHJ1ZSwgU2VsZk9yQW5jZXN0b3JIYXNEaXJBdXRvRmxhZyk7CisgICAg
ICAgIHJldHVybjsKKyAgICB9CisgICAgd2hpbGUgKG5vZGUpIHsKKyAgICAgICAgaWYgKG5vZGUt
PmlzSFRNTEVsZW1lbnQoKSkgeworICAgICAgICAgICAgaWYgKGVxdWFsSWdub3JpbmdDYXNlKHRv
RWxlbWVudChub2RlKS0+ZmFzdEdldEF0dHJpYnV0ZShkaXJBdHRyKSwgImF1dG8iKSkgeworICAg
ICAgICAgICAgICAgIG5vZGUgPSBub2RlLT50cmF2ZXJzZU5leHRTaWJsaW5nKHRoaXMpOworICAg
ICAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAg
IG5vZGUtPnNldEZsYWcoZmFsc2UsIFNlbGZPckFuY2VzdG9ySGFzRGlyQXV0b0ZsYWcpOworICAg
ICAgICBub2RlID0gbm9kZS0+dHJhdmVyc2VOZXh0Tm9kZSh0aGlzKTsKKyAgICB9Cit9CisgICAg
CiB2b2lkIE5vZGU6OmRlZmF1bHRFdmVudEhhbmRsZXIoRXZlbnQqIGV2ZW50KQogewogICAgIGlm
IChldmVudC0+dGFyZ2V0KCkgIT0gdGhpcykKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2RvbS9Ob2Rl
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvZG9tL05vZGUuaAkocmV2aXNpb24gNzcx
ODApCisrKyBTb3VyY2UvV2ViQ29yZS9kb20vTm9kZS5oCSh3b3JraW5nIGNvcHkpCkBAIC02MDMs
NiArNjAzLDggQEAgcHJpdmF0ZToKIAogICAgICAgICBTdHlsZUNoYW5nZU1hc2sgPSAxIDw8IG5v
ZGVTdHlsZUNoYW5nZVNoaWZ0IHwgMSA8PCAobm9kZVN0eWxlQ2hhbmdlU2hpZnQgKyAxKSwKIAor
ICAgICAgICBTZWxmT3JBbmNlc3Rvckhhc0RpckF1dG9GbGFnID0gMSA8PCAyNywKKwogI2lmIEVO
QUJMRShTVkcpCiAgICAgICAgIERlZmF1bHROb2RlRmxhZ3MgPSBJc1BhcnNpbmdDaGlsZHJlbkZp
bmlzaGVkRmxhZyB8IElzU3R5bGVBdHRyaWJ1dGVWYWxpZEZsYWcgfCBBcmVTVkdBdHRyaWJ1dGVz
VmFsaWRGbGFnCiAjZWxzZQpAQCAtNzA0LDYgKzcwNiwxMCBAQCBwcm90ZWN0ZWQ6CiAgICAgdm9p
ZCBzZXRIYXNSYXJlU1ZHRGF0YSgpIHsgc2V0RmxhZyhIYXNTVkdSYXJlRGF0YUZsYWcpOyB9CiAg
ICAgdm9pZCBjbGVhckhhc1JhcmVTVkdEYXRhKCkgeyBjbGVhckZsYWcoSGFzU1ZHUmFyZURhdGFG
bGFnKTsgfQogI2VuZGlmCisKKyAgICB2b2lkIGFkanVzdEVsZW1lbnREaXJlY3Rpb25hbGl0eUlm
TmVlZGVkKCk7CisgICAgdm9pZCBzZXRIYXNEaXJBdXRvRmxhZ1JlY3Vyc2l2ZWx5KGJvb2wpOwor
CiB9OwogCiAvLyBVc2VkIGluIE5vZGU6OmFkZFN1YnJlc291cmNlQXR0cmlidXRlVVJMcygpIGFu
ZCBpbiBhZGRTdWJyZXNvdXJjZVN0eWxlVVJMcygpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1s
L0hUTUxFbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxF
bGVtZW50LmNwcAkocmV2aXNpb24gNzcxODApCisrKyBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxF
bGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTI0LDcgKzEyNCw3IEBAIGJvb2wgSFRNTEVs
ZW1lbnQ6Om1hcFRvRW50cnkoY29uc3QgUXVhbGkKICAgICB9CiAgICAgaWYgKGF0dHJOYW1lID09
IGRpckF0dHIpIHsKICAgICAgICAgcmVzdWx0ID0gaGFzTG9jYWxOYW1lKGJkb1RhZykgPyBlQkRP
IDogZVVuaXZlcnNhbDsKLSAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICByZXR1cm4gdHJ1
ZTsKICAgICB9CiAKICAgICByZXR1cm4gU3R5bGVkRWxlbWVudDo6bWFwVG9FbnRyeShhdHRyTmFt
ZSwgcmVzdWx0KTsKQEAgLTE1Niw2ICsxNTYsMTEgQEAgdm9pZCBIVE1MRWxlbWVudDo6cGFyc2VN
YXBwZWRBdHRyaWJ1dGUoQQogICAgICAgICAvLyBGSVhNRTogSW1wbGVtZW50CiAgICAgfSBlbHNl
IGlmIChhdHRyLT5uYW1lKCkgPT0gZGlyQXR0cikgewogICAgICAgICBhZGRDU1NQcm9wZXJ0eShh
dHRyLCBDU1NQcm9wZXJ0eURpcmVjdGlvbiwgYXR0ci0+dmFsdWUoKSk7CisgICAgICAgIGlmIChl
cXVhbElnbm9yaW5nQ2FzZShhdHRyLT52YWx1ZSgpLCAiYXV0byIpKQorICAgICAgICAgICAgc2V0
SGFzRGlyQXV0b0ZsYWdSZWN1cnNpdmVseSh0cnVlKTsKKyAgICAgICAgZWxzZSAKKyAgICAgICAg
ICAgIHNldEhhc0RpckF1dG9GbGFnUmVjdXJzaXZlbHkoZmFsc2UpOworICAgICAgICAgICAgCiAg
ICAgICAgIGFkZENTU1Byb3BlcnR5KGF0dHIsIENTU1Byb3BlcnR5VW5pY29kZUJpZGksIGhhc0xv
Y2FsTmFtZShiZG9UYWcpID8gQ1NTVmFsdWVCaWRpT3ZlcnJpZGUgOiBDU1NWYWx1ZUVtYmVkKTsK
ICAgICB9IGVsc2UgaWYgKGF0dHItPm5hbWUoKSA9PSBkcmFnZ2FibGVBdHRyKSB7CiAgICAgICAg
IGNvbnN0IEF0b21pY1N0cmluZyYgdmFsdWUgPSBhdHRyLT52YWx1ZSgpOwpJbmRleDogTGF5b3V0
VGVzdHMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL0NoYW5nZUxvZwkocmV2
aXNpb24gNzcxODApCisrKyBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAg
LTEsMyArMSwxOSBAQAorMjAxMS0wMS0zMSAgWWFlbCBBaGFyb24gIDx5YWVsLmFoYXJvbkBub2tp
YS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
QWRkIHN1cHBvcnQgZm9yIGRpcj1hdXRvCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD01MDkxNgorCisgICAgICAgICogZmFzdC9kb20vSFRNTEVsZW1lbnQv
YXR0ci1kaXItYXV0by1jaGFuZ2UtY2hpbGQtbm9kZS1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAg
ICAgICAqIGZhc3QvZG9tL0hUTUxFbGVtZW50L2F0dHItZGlyLWF1dG8tY2hhbmdlLWNoaWxkLW5v
ZGUuaHRtbDogQWRkZWQuCisgICAgICAgICogZmFzdC9kb20vSFRNTEVsZW1lbnQvYXR0ci1kaXIt
YXV0by1jaGFuZ2UtdGV4dC1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGZhc3QvZG9t
L0hUTUxFbGVtZW50L2F0dHItZGlyLWF1dG8tY2hhbmdlLXRleHQuaHRtbDogQWRkZWQuCisgICAg
ICAgICogZmFzdC9kb20vSFRNTEVsZW1lbnQvYXR0ci1kaXItdmFsdWUtY2hhbmdlLWV4cGVjdGVk
LnR4dDogQWRkZWQuCisgICAgICAgICogZmFzdC9kb20vSFRNTEVsZW1lbnQvYXR0ci1kaXItdmFs
dWUtY2hhbmdlLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGZhc3QvZG9tL0hUTUxFbGVtZW50L2F0
dHItZGlyLWF1dG8tZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2RvbS9IVE1M
RWxlbWVudC9hdHRyLWRpci1hdXRvLmh0bWw6IEFkZGVkLgorCiAyMDExLTAxLTMxICBEYW4gQmVy
bnN0ZWluICA8bWl0ekBhcHBsZS5jb20+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgQWRlbGUgUGV0
ZXJzb24uCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2RvbS9IVE1MRWxlbWVudC9hdHRyLWRpci1h
dXRvLWNoYW5nZS1jaGlsZC1ub2RlLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRU
ZXN0cy9mYXN0L2RvbS9IVE1MRWxlbWVudC9hdHRyLWRpci1hdXRvLWNoYW5nZS1jaGlsZC1ub2Rl
LWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2Zhc3QvZG9tL0hUTUxF
bGVtZW50L2F0dHItZGlyLWF1dG8tY2hhbmdlLWNoaWxkLW5vZGUtZXhwZWN0ZWQudHh0CShyZXZp
c2lvbiAwKQpAQCAtMCwwICsxLDE5IEBACitUZXN0IHRoYXQgd2hlbiBhbiBlbGVtZW50IGhhcyBk
aXIgYXR0cmlidXRlIHdpdGggdmFsdWUgImF1dG8iLCBpZiBpdHMgZmlyc3QgY2hpbGQgY2hhbmdl
cywgdGhlIGVsZW1lbnQncyBkaXJlY3Rpb25hbGl0eSBpcyByZS1ldmFsdWF0ZWQuCisKK09uIHN1
Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2Vk
IGJ5ICJURVNUIENPTVBMRVRFIi4KKworCisKKworCisKK1BBU1MgZG9jdW1lbnQuZGVmYXVsdFZp
ZXcuZ2V0Q29tcHV0ZWRTdHlsZShlbCwgbnVsbCkuZ2V0UHJvcGVydHlWYWx1ZSgnYm9yZGVyLXJp
Z2h0LWNvbG9yJykgaXMgJ3JnYigyNTUsIDAsIDApJworUEFTUyBkb2N1bWVudC5kZWZhdWx0Vmll
dy5nZXRDb21wdXRlZFN0eWxlKGVsLCBudWxsKS5nZXRQcm9wZXJ0eVZhbHVlKCdib3JkZXItcmln
aHQtY29sb3InKSBpcyAncmdiKDAsIDEyOCwgMCknCisKK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2Vk
IGlzIHRydWUKKworVEVTVCBDT01QTEVURQorCisKKworCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0
L2RvbS9IVE1MRWxlbWVudC9hdHRyLWRpci1hdXRvLWNoYW5nZS1jaGlsZC1ub2RlLmh0bWwKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9kb20vSFRNTEVsZW1lbnQvYXR0ci1kaXItYXV0
by1jaGFuZ2UtY2hpbGQtbm9kZS5odG1sCShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvZmFz
dC9kb20vSFRNTEVsZW1lbnQvYXR0ci1kaXItYXV0by1jaGFuZ2UtY2hpbGQtbm9kZS5odG1sCShy
ZXZpc2lvbiAwKQpAQCAtMCwwICsxLDM3IEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhl
YWQ+Cis8bWV0YSBodHRwLWVxdWl2PSJDb250ZW50LVR5cGUiIGNvbnRlbnQ9InRleHQvaHRtbDsg
Y2hhcnNldD11dGYtOCI+Cis8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4uLy4uL2pzL3Jl
c291cmNlcy9qcy10ZXN0LXN0eWxlLmNzcyI+Cis8c2NyaXB0IHNyYz0iLi4vLi4vanMvcmVzb3Vy
Y2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzxzdHlsZT4KKy50ZXN0RGl2IHstd2Via2l0
LWJvcmRlci1zdGFydDogNXB4IHNvbGlkIGdyZWVuOyAtd2Via2l0LWJvcmRlci1lbmQ6IDVweCBz
b2xpZCByZWQ7IH0KKzwvc3R5bGU+Cis8L2hlYWQ+Cis8Ym9keT4KKzxwIGlkPSJkZXNjcmlwdGlv
biI+PC9wPgorPGRpdiBpZD0iY29uc29sZSI+PC9wPgorPGRpdiBpZD0icmVzdWx0Ij48L2Rpdj4K
KworPGRpdiBpZD0idGVzdCIgZGlyPSJhdXRvIiBjbGFzcz0idGVzdERpdiI+PC9kaXY+Cis8c2Ny
aXB0PgorCitkZXNjcmlwdGlvbignVGVzdCB0aGF0IHdoZW4gYW4gZWxlbWVudCBoYXMgZGlyIGF0
dHJpYnV0ZSB3aXRoIHZhbHVlICJhdXRvIiwgaWYgaXRzIGZpcnN0IGNoaWxkIGNoYW5nZXMsIHRo
ZSBlbGVtZW50XCdzIGRpcmVjdGlvbmFsaXR5IGlzIHJlLWV2YWx1YXRlZC4nKTsKKwordmFyIGVs
ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInRlc3QiKTsKK3ZhciBjaGlsZCA9IGRvY3VtZW50
LmNyZWF0ZUVsZW1lbnQoImRpdiIpOworY2hpbGQuaW5uZXJIVE1MPSJ0ZXN0IjsKK2VsLmFwcGVu
ZENoaWxkKGNoaWxkKTsKK3Nob3VsZEJlKCJkb2N1bWVudC5kZWZhdWx0Vmlldy5nZXRDb21wdXRl
ZFN0eWxlKGVsLCBudWxsKS5nZXRQcm9wZXJ0eVZhbHVlKCdib3JkZXItcmlnaHQtY29sb3InKSIs
ICIncmdiKDI1NSwgMCwgMCknIik7CisKK3ZhciBjaGlsZDIgPSBkb2N1bWVudC5jcmVhdGVFbGVt
ZW50KCJkaXYiKTsKK2NoaWxkMi5pbm5lckhUTUw9Itee16fXldeoINeU16nXnSDXoteR16jXmdeq
IjsKK2VsLmluc2VydEJlZm9yZShjaGlsZDIsIGNoaWxkKTsKK3Nob3VsZEJlKCJkb2N1bWVudC5k
ZWZhdWx0Vmlldy5nZXRDb21wdXRlZFN0eWxlKGVsLCBudWxsKS5nZXRQcm9wZXJ0eVZhbHVlKCdi
b3JkZXItcmlnaHQtY29sb3InKSIsICIncmdiKDAsIDEyOCwgMCknIik7CitlbC5zdHlsZS5kaXNw
bGF5ID0gIm5vbmUiOworCit3aW5kb3cuc3VjY2Vzc2Z1bGx5UGFyc2VkID0gdHJ1ZTsKKzwvc2Ny
aXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uL2pzL3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwv
c2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9kb20vSFRN
TEVsZW1lbnQvYXR0ci1kaXItYXV0by1jaGFuZ2UtdGV4dC1leHBlY3RlZC50eHQKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9kb20vSFRNTEVsZW1lbnQvYXR0ci1kaXItYXV0by1jaGFu
Z2UtdGV4dC1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9mYXN0L2Rv
bS9IVE1MRWxlbWVudC9hdHRyLWRpci1hdXRvLWNoYW5nZS10ZXh0LWV4cGVjdGVkLnR4dAkocmV2
aXNpb24gMCkKQEAgLTAsMCArMSwxOSBAQAorVGVzdCB0aGF0IHdoZW4gYW4gZWxlbWVudCBoYXMg
ZGlyIGF0dHJpYnV0ZSB3aXRoIHZhbHVlICJhdXRvIiwgaWYgaXRzIGZpcnN0IGNoaWxkIHRleHQg
bm9kZSBjaGFuZ2VzLCB0aGUgZWxlbWVudCdzIGRpcmVjdGlvbmFsaXR5IGlzIHJlLWV2YWx1YXRl
ZC4KKworT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdl
cywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgorCisKKworCisKKworUEFTUyBkb2N1bWVu
dC5kZWZhdWx0Vmlldy5nZXRDb21wdXRlZFN0eWxlKGVsLCBudWxsKS5nZXRQcm9wZXJ0eVZhbHVl
KCdib3JkZXItcmlnaHQtY29sb3InKSBpcyAncmdiKDI1NSwgMCwgMCknCitQQVNTIGRvY3VtZW50
LmRlZmF1bHRWaWV3LmdldENvbXB1dGVkU3R5bGUoZWwsIG51bGwpLmdldFByb3BlcnR5VmFsdWUo
J2JvcmRlci1yaWdodC1jb2xvcicpIGlzICdyZ2IoMCwgMTI4LCAwKScKKworUEFTUyBzdWNjZXNz
ZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisKKworCisKSW5kZXg6IExheW91
dFRlc3RzL2Zhc3QvZG9tL0hUTUxFbGVtZW50L2F0dHItZGlyLWF1dG8tY2hhbmdlLXRleHQuaHRt
bAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2RvbS9IVE1MRWxlbWVudC9hdHRyLWRp
ci1hdXRvLWNoYW5nZS10ZXh0Lmh0bWwJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9mYXN0
L2RvbS9IVE1MRWxlbWVudC9hdHRyLWRpci1hdXRvLWNoYW5nZS10ZXh0Lmh0bWwJKHJldmlzaW9u
IDApCkBAIC0wLDAgKzEsMzAgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKzxt
ZXRhIGh0dHAtZXF1aXY9IkNvbnRlbnQtVHlwZSIgY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0
PXV0Zi04Ij4KKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iLi4vLi4vanMvcmVzb3VyY2Vz
L2pzLXRlc3Qtc3R5bGUuY3NzIj4KKzxzY3JpcHQgc3JjPSIuLi8uLi9qcy9yZXNvdXJjZXMvanMt
dGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPHN0eWxlPgorLnRlc3REaXYgey13ZWJraXQtYm9yZGVy
LXN0YXJ0OiA1cHggc29saWQgZ3JlZW47IC13ZWJraXQtYm9yZGVyLWVuZDogNXB4IHNvbGlkIHJl
ZDsgfQorPC9zdHlsZT4KKzwvaGVhZD4KKzxib2R5PgorPHAgaWQ9ImRlc2NyaXB0aW9uIj48L3A+
Cis8ZGl2IGlkPSJjb25zb2xlIj48L3A+Cis8ZGl2IGlkPSJyZXN1bHQiPjwvZGl2PgorCis8ZGl2
IGlkPSJ0ZXN0IiBkaXI9ImF1dG8iIGNsYXNzPSJ0ZXN0RGl2Ij5UZXN0IHRlc3QgdGVzdDwvZGl2
PgorPHNjcmlwdD4KKworZGVzY3JpcHRpb24oJ1Rlc3QgdGhhdCB3aGVuIGFuIGVsZW1lbnQgaGFz
IGRpciBhdHRyaWJ1dGUgd2l0aCB2YWx1ZSAiYXV0byIsIGlmIGl0cyBmaXJzdCBjaGlsZCB0ZXh0
IG5vZGUgY2hhbmdlcywgdGhlIGVsZW1lbnRcJ3MgZGlyZWN0aW9uYWxpdHkgaXMgcmUtZXZhbHVh
dGVkLicpOworCit2YXIgZWwgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgidGVzdCIpOworc2hv
dWxkQmUoImRvY3VtZW50LmRlZmF1bHRWaWV3LmdldENvbXB1dGVkU3R5bGUoZWwsIG51bGwpLmdl
dFByb3BlcnR5VmFsdWUoJ2JvcmRlci1yaWdodC1jb2xvcicpIiwgIidyZ2IoMjU1LCAwLCAwKSci
KTsKK2VsLmlubmVySFRNTCA9ICLXnten15XXqCDXlNep150g16LXkdeo15nXqiI7CitzaG91bGRC
ZSgiZG9jdW1lbnQuZGVmYXVsdFZpZXcuZ2V0Q29tcHV0ZWRTdHlsZShlbCwgbnVsbCkuZ2V0UHJv
cGVydHlWYWx1ZSgnYm9yZGVyLXJpZ2h0LWNvbG9yJykiLCAiJ3JnYigwLCAxMjgsIDApJyIpOwor
ZWwuc3R5bGUuZGlzcGxheSA9ICJub25lIjsKK3dpbmRvdy5zdWNjZXNzZnVsbHlQYXJzZWQgPSB0
cnVlOworPC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vanMvcmVzb3VyY2VzL2pzLXRlc3Qt
cG9zdC5qcyI+PC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CkluZGV4OiBMYXlvdXRUZXN0cy9m
YXN0L2RvbS9IVE1MRWxlbWVudC9hdHRyLWRpci1hdXRvLWV4cGVjdGVkLnR4dAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2RvbS9IVE1MRWxlbWVudC9hdHRyLWRpci1hdXRvLWV4cGVj
dGVkLnR4dAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2Zhc3QvZG9tL0hUTUxFbGVtZW50
L2F0dHItZGlyLWF1dG8tZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDE5IEBA
CitUZXN0IHRoYXQgd2hlbiBhbiBlbGVtZW50IGhhcyBhIGRpciBhdHRyaWJ1dGUgd2l0aCB2YWx1
ZSAiYXV0byIsIHRoZSBkaXJlY3Rpb25hbGl0eSBvZiB0aGUgZWxlbWVudCBpcyBkZXRlcm1pbmVk
IGJ5IHRoZSBmaXJzdCBjaGlsZCB0ZXh0IG5vZGUgb2YgdGhhdCBlbGVtZW50LgorCitPbiBzdWNj
ZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBi
eSAiVEVTVCBDT01QTEVURSIuCisKKworCisKKworUEFTUyBkb2N1bWVudC5kZWZhdWx0Vmlldy5n
ZXRDb21wdXRlZFN0eWxlKGVsLCBudWxsKS5nZXRQcm9wZXJ0eVZhbHVlKCdib3JkZXItcmlnaHQt
Y29sb3InKSBpcyAncmdiKDI1NSwgMCwgMCknCitQQVNTIGRvY3VtZW50LmRlZmF1bHRWaWV3Lmdl
dENvbXB1dGVkU3R5bGUoZWwsIG51bGwpLmdldFByb3BlcnR5VmFsdWUoJ2JvcmRlci1yaWdodC1j
b2xvcicpIGlzICdyZ2IoMCwgMTI4LCAwKScKK1BBU1MgZG9jdW1lbnQuZGVmYXVsdFZpZXcuZ2V0
Q29tcHV0ZWRTdHlsZShlbCwgbnVsbCkuZ2V0UHJvcGVydHlWYWx1ZSgnYm9yZGVyLXJpZ2h0LWNv
bG9yJykgaXMgJ3JnYigwLCAxMjgsIDApJworCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0
cnVlCisKK1RFU1QgQ09NUExFVEUKKworCisKKwpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9kb20v
SFRNTEVsZW1lbnQvYXR0ci1kaXItYXV0by5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3Rz
L2Zhc3QvZG9tL0hUTUxFbGVtZW50L2F0dHItZGlyLWF1dG8uaHRtbAkocmV2aXNpb24gMCkKKysr
IExheW91dFRlc3RzL2Zhc3QvZG9tL0hUTUxFbGVtZW50L2F0dHItZGlyLWF1dG8uaHRtbAkocmV2
aXNpb24gMCkKQEAgLTAsMCArMSwzOCBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFk
PgorPG1ldGEgaHR0cC1lcXVpdj0iQ29udGVudC1UeXBlIiBjb250ZW50PSJ0ZXh0L2h0bWw7IGNo
YXJzZXQ9dXRmLTgiPgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIuLi8uLi9qcy9yZXNv
dXJjZXMvanMtdGVzdC1zdHlsZS5jc3MiPgorPHNjcmlwdCBzcmM9Ii4uLy4uL2pzL3Jlc291cmNl
cy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8c3R5bGU+CisudGVzdERpdiB7LXdlYmtpdC1i
b3JkZXItc3RhcnQ6IDVweCBzb2xpZCBncmVlbjsgLXdlYmtpdC1ib3JkZXItZW5kOiA1cHggc29s
aWQgcmVkOyB9Cis8L3N0eWxlPgorPC9oZWFkPgorPGJvZHk+Cis8cCBpZD0iZGVzY3JpcHRpb24i
PjwvcD4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwvcD4KKzxkaXYgaWQ9InJlc3VsdCI+PC9kaXY+Cis8
ZGl2IGlkPSJwYXJlbnREaXYiPgorVGVzdCB0aGF0IHRoZSBkaXJlY3Rpb24gb2YgZW5nbGlzaCB0
ZXh0IGlzIGxlZnQtdG8tcmlnaHQuCis8ZGl2IGlkPSJsdHIiIGRpcj0iYXV0byIgY2xhc3M9InRl
c3REaXYiPlRlc3QgdGVzdCB0ZXN0PC9kaXY+CitUZXN0IHRoYXQgdGhlIGRpcmVjdGlvbiBvZiBo
ZWJyZXcgdGV4dCBpcyByaWdodC10by1sZWZ0LgorPGRpdiBpZD0icnRsMSIgZGlyPSJhdXRvIiBj
bGFzcz0idGVzdERpdiI+157Xp9eV16gg15TXqdedINei15HXqNeZ16o8L2Rpdj4KK1Rlc3QgdGhh
dCAnPycgZG9lcyBub3QgYWZmZWN0IHRoZSBkaXJlY3Rpb25hbGl0eS4KKzxkaXYgaWQ9InJ0bDIi
IGRpcj0iYXV0byIgY2xhc3M9InRlc3REaXYiPjxzcGFuPj8/PC9zcGFuPtee16fXldeoINeU16nX
nSDXoteR16jXmdeqPHNwYW4+Pz88L3NwYW4+PC9kaXY+Cis8L2Rpdj4KKzxzY3JpcHQ+CisKK2Rl
c2NyaXB0aW9uKCdUZXN0IHRoYXQgd2hlbiBhbiBlbGVtZW50IGhhcyBhIGRpciBhdHRyaWJ1dGUg
d2l0aCB2YWx1ZSAiYXV0byIsIHRoZSBkaXJlY3Rpb25hbGl0eSBvZiB0aGUgZWxlbWVudCBpcyBk
ZXRlcm1pbmVkIGJ5IHRoZSBmaXJzdCBjaGlsZCB0ZXh0IG5vZGUgb2YgdGhhdCBlbGVtZW50Licp
OworCit2YXIgZWwgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgibHRyIik7CitzaG91bGRCZSgi
ZG9jdW1lbnQuZGVmYXVsdFZpZXcuZ2V0Q29tcHV0ZWRTdHlsZShlbCwgbnVsbCkuZ2V0UHJvcGVy
dHlWYWx1ZSgnYm9yZGVyLXJpZ2h0LWNvbG9yJykiLCAiJ3JnYigyNTUsIDAsIDApJyIpOworZWwg
PSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgicnRsMSIpOworc2hvdWxkQmUoImRvY3VtZW50LmRl
ZmF1bHRWaWV3LmdldENvbXB1dGVkU3R5bGUoZWwsIG51bGwpLmdldFByb3BlcnR5VmFsdWUoJ2Jv
cmRlci1yaWdodC1jb2xvcicpIiwgIidyZ2IoMCwgMTI4LCAwKSciKTsKK2VsID0gZG9jdW1lbnQu
Z2V0RWxlbWVudEJ5SWQoInJ0bDIiKTsKK3Nob3VsZEJlKCJkb2N1bWVudC5kZWZhdWx0Vmlldy5n
ZXRDb21wdXRlZFN0eWxlKGVsLCBudWxsKS5nZXRQcm9wZXJ0eVZhbHVlKCdib3JkZXItcmlnaHQt
Y29sb3InKSIsICIncmdiKDAsIDEyOCwgMCknIik7Citkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgi
cGFyZW50RGl2Iikuc3R5bGUuZGlzcGxheSA9ICJub25lIjsKK3dpbmRvdy5zdWNjZXNzZnVsbHlQ
YXJzZWQgPSB0cnVlOworPC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vanMvcmVzb3VyY2Vz
L2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CkluZGV4OiBMYXlv
dXRUZXN0cy9mYXN0L2RvbS9IVE1MRWxlbWVudC9hdHRyLWRpci12YWx1ZS1jaGFuZ2UtZXhwZWN0
ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZG9tL0hUTUxFbGVtZW50L2F0
dHItZGlyLXZhbHVlLWNoYW5nZS1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCisrKyBMYXlvdXRU
ZXN0cy9mYXN0L2RvbS9IVE1MRWxlbWVudC9hdHRyLWRpci12YWx1ZS1jaGFuZ2UtZXhwZWN0ZWQu
dHh0CShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDI0IEBACitUZXN0IHRoYXQgd2hlbiBhbiBlbGVt
ZW50J3MgZGlyIGF0dHJpYnV0ZSBjaGFuZ2VzLCB0aGUgZWxlbWVudCdzIGRpcmVjdGlvbmFsaXR5
IGlzIHJlLWV2YWx1YXRlZC4KKworT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9m
ICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgorCisKKworCisK
KworUEFTUyBkb2N1bWVudC5kZWZhdWx0Vmlldy5nZXRDb21wdXRlZFN0eWxlKGVsLCBudWxsKS5n
ZXRQcm9wZXJ0eVZhbHVlKCdib3JkZXItcmlnaHQtY29sb3InKSBpcyAncmdiKDAsIDEyOCwgMCkn
CitQQVNTIGRvY3VtZW50LmRlZmF1bHRWaWV3LmdldENvbXB1dGVkU3R5bGUoY2hpbGQyLCBudWxs
KS5nZXRQcm9wZXJ0eVZhbHVlKCdib3JkZXItcmlnaHQtY29sb3InKSBpcyAncmdiKDAsIDEyOCwg
MCknCitQQVNTIGRvY3VtZW50LmRlZmF1bHRWaWV3LmdldENvbXB1dGVkU3R5bGUoZWwsIG51bGwp
LmdldFByb3BlcnR5VmFsdWUoJ2JvcmRlci1yaWdodC1jb2xvcicpIGlzICdyZ2IoMjU1LCAwLCAw
KScKK1BBU1MgZG9jdW1lbnQuZGVmYXVsdFZpZXcuZ2V0Q29tcHV0ZWRTdHlsZShjaGlsZDIsIG51
bGwpLmdldFByb3BlcnR5VmFsdWUoJ2JvcmRlci1yaWdodC1jb2xvcicpIGlzICdyZ2IoMCwgMTI4
LCAwKScKK1BBU1MgZG9jdW1lbnQuZGVmYXVsdFZpZXcuZ2V0Q29tcHV0ZWRTdHlsZShjaGlsZDIs
IG51bGwpLmdldFByb3BlcnR5VmFsdWUoJ2JvcmRlci1yaWdodC1jb2xvcicpIGlzICdyZ2IoMjU1
LCAwLCAwKScKK1BBU1MgZG9jdW1lbnQuZGVmYXVsdFZpZXcuZ2V0Q29tcHV0ZWRTdHlsZShlbCwg
bnVsbCkuZ2V0UHJvcGVydHlWYWx1ZSgnYm9yZGVyLXJpZ2h0LWNvbG9yJykgaXMgJ3JnYigwLCAx
MjgsIDApJworUEFTUyBkb2N1bWVudC5kZWZhdWx0Vmlldy5nZXRDb21wdXRlZFN0eWxlKGNoaWxk
MiwgbnVsbCkuZ2V0UHJvcGVydHlWYWx1ZSgnYm9yZGVyLXJpZ2h0LWNvbG9yJykgaXMgJ3JnYigy
NTUsIDAsIDApJworCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09N
UExFVEUKKworCisKKwpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9kb20vSFRNTEVsZW1lbnQvYXR0
ci1kaXItdmFsdWUtY2hhbmdlLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9k
b20vSFRNTEVsZW1lbnQvYXR0ci1kaXItdmFsdWUtY2hhbmdlLmh0bWwJKHJldmlzaW9uIDApCisr
KyBMYXlvdXRUZXN0cy9mYXN0L2RvbS9IVE1MRWxlbWVudC9hdHRyLWRpci12YWx1ZS1jaGFuZ2Uu
aHRtbAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw1MCBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRt
bD4KKzxoZWFkPgorPG1ldGEgaHR0cC1lcXVpdj0iQ29udGVudC1UeXBlIiBjb250ZW50PSJ0ZXh0
L2h0bWw7IGNoYXJzZXQ9dXRmLTgiPgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIuLi8u
Li9qcy9yZXNvdXJjZXMvanMtdGVzdC1zdHlsZS5jc3MiPgorPHNjcmlwdCBzcmM9Ii4uLy4uL2pz
L3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8c3R5bGU+CisudGVzdERpdiB7
LXdlYmtpdC1ib3JkZXItc3RhcnQ6IDVweCBzb2xpZCBncmVlbjsgLXdlYmtpdC1ib3JkZXItZW5k
OiA1cHggc29saWQgcmVkOyB9Cis8L3N0eWxlPgorPC9oZWFkPgorPGJvZHk+Cis8cCBpZD0iZGVz
Y3JpcHRpb24iPjwvcD4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwvcD4KKzxkaXYgaWQ9InJlc3VsdCI+
PC9kaXY+CisKKzxkaXYgaWQ9InRlc3QiIGRpcj0iYXV0byIgY2xhc3M9InRlc3REaXYiPjwvZGl2
PgorPHNjcmlwdD4KKworZGVzY3JpcHRpb24oJ1Rlc3QgdGhhdCB3aGVuIGFuIGVsZW1lbnRcJ3Mg
ZGlyIGF0dHJpYnV0ZSBjaGFuZ2VzLCB0aGUgZWxlbWVudFwncyBkaXJlY3Rpb25hbGl0eSBpcyBy
ZS1ldmFsdWF0ZWQuJyk7CisKK3ZhciBlbCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJ0ZXN0
Iik7Cit2YXIgY2hpbGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKTsKK2NoaWxkLmlu
bmVySFRNTD0i157Xp9eV16gg15TXqdedINei15HXqNeZ16oiOworZWwuYXBwZW5kQ2hpbGQoY2hp
bGQpOwordmFyIGNoaWxkMiA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpOworY2hpbGQy
LmlubmVySFRNTCA9ICLXnten15XXqCDXlNep150g16LXkdeo15nXqiI7CitjaGlsZDIuc2V0QXR0
cmlidXRlKCJkaXIiLCAiYXV0byIpOworY2hpbGQyLnNldEF0dHJpYnV0ZSgiY2xhc3MiLCAidGVz
dERpdiIpOworY2hpbGQuYXBwZW5kQ2hpbGQoY2hpbGQyKTsKK3Nob3VsZEJlKCJkb2N1bWVudC5k
ZWZhdWx0Vmlldy5nZXRDb21wdXRlZFN0eWxlKGVsLCBudWxsKS5nZXRQcm9wZXJ0eVZhbHVlKCdi
b3JkZXItcmlnaHQtY29sb3InKSIsICIncmdiKDAsIDEyOCwgMCknIik7CitzaG91bGRCZSgiZG9j
dW1lbnQuZGVmYXVsdFZpZXcuZ2V0Q29tcHV0ZWRTdHlsZShjaGlsZDIsIG51bGwpLmdldFByb3Bl
cnR5VmFsdWUoJ2JvcmRlci1yaWdodC1jb2xvcicpIiwgIidyZ2IoMCwgMTI4LCAwKSciKTsKKwor
ZWwuc2V0QXR0cmlidXRlKCJkaXIiLCAibHRyIik7CitzaG91bGRCZSgiZG9jdW1lbnQuZGVmYXVs
dFZpZXcuZ2V0Q29tcHV0ZWRTdHlsZShlbCwgbnVsbCkuZ2V0UHJvcGVydHlWYWx1ZSgnYm9yZGVy
LXJpZ2h0LWNvbG9yJykiLCAiJ3JnYigyNTUsIDAsIDApJyIpOworc2hvdWxkQmUoImRvY3VtZW50
LmRlZmF1bHRWaWV3LmdldENvbXB1dGVkU3R5bGUoY2hpbGQyLCBudWxsKS5nZXRQcm9wZXJ0eVZh
bHVlKCdib3JkZXItcmlnaHQtY29sb3InKSIsICIncmdiKDAsIDEyOCwgMCknIik7CisKK2NoaWxk
Mi5pbm5lckhUTUwgPSAiVGVzdCI7CitzaG91bGRCZSgiZG9jdW1lbnQuZGVmYXVsdFZpZXcuZ2V0
Q29tcHV0ZWRTdHlsZShjaGlsZDIsIG51bGwpLmdldFByb3BlcnR5VmFsdWUoJ2JvcmRlci1yaWdo
dC1jb2xvcicpIiwgIidyZ2IoMjU1LCAwLCAwKSciKTsKKworZWwuc2V0QXR0cmlidXRlKCJkaXIi
LCAiYXV0byIpOworc2hvdWxkQmUoImRvY3VtZW50LmRlZmF1bHRWaWV3LmdldENvbXB1dGVkU3R5
bGUoZWwsIG51bGwpLmdldFByb3BlcnR5VmFsdWUoJ2JvcmRlci1yaWdodC1jb2xvcicpIiwgIidy
Z2IoMCwgMTI4LCAwKSciKTsKK3Nob3VsZEJlKCJkb2N1bWVudC5kZWZhdWx0Vmlldy5nZXRDb21w
dXRlZFN0eWxlKGNoaWxkMiwgbnVsbCkuZ2V0UHJvcGVydHlWYWx1ZSgnYm9yZGVyLXJpZ2h0LWNv
bG9yJykiLCAiJ3JnYigyNTUsIDAsIDApJyIpOworCitlbC5zdHlsZS5kaXNwbGF5ID0gIm5vbmUi
OworCit3aW5kb3cuc3VjY2Vzc2Z1bGx5UGFyc2VkID0gdHJ1ZTsKKzwvc2NyaXB0PgorPHNjcmlw
dCBzcmM9Ii4uLy4uL2pzL3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgorPC9i
b2R5PgorPC9odG1sPgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>80951</attachid>
            <date>2011-02-02 12:29:18 -0800</date>
            <delta_ts>2011-02-02 14:15:39 -0800</delta_ts>
            <desc>Patch.</desc>
            <filename>50916.patch</filename>
            <type>text/plain</type>
            <size>28598</size>
            <attacher name="Yael">yael</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gNzczOTYpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTggQEAK
KzIwMTEtMDItMDIgIFlhZWwgQWhhcm9uICA8eWFlbC5haGFyb25Abm9raWEuY29tPgorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZCBzdXBwb3J0IGZv
ciBkaXI9YXV0bworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9NTA5MTYKKworICAgICAgICAqIEphdmFTY3JpcHRDb3JlLmV4cDoKKyAgICAgICAgKiBKYXZh
U2NyaXB0Q29yZS5vcmRlcjoKKyAgICAgICAgKiB3dGYvdGV4dC9TdHJpbmdJbXBsLmNwcDoKKyAg
ICAgICAgKFdURjo6U3RyaW5nSW1wbDo6ZGVmYXVsdFdyaXRpbmdEaXJlY3Rpb24pOgorICAgICAg
ICAqIHd0Zi90ZXh0L1N0cmluZ0ltcGwuaDoKKyAgICAgICAgKiB3dGYvdGV4dC9XVEZTdHJpbmcu
aDoKKyAgICAgICAgKFdURjo6U3RyaW5nOjpkZWZhdWx0V3JpdGluZ0RpcmVjdGlvbik6CisKIDIw
MTEtMDItMDIgIFN0ZXZlIExhY2V5ICA8c2psQGNocm9taXVtLm9yZz4KIAogICAgICAgICBSZXZp
ZXdlZCBieSBFcmljIENhcmxzb24uCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNj
cmlwdENvcmUuZXhwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2Ny
aXB0Q29yZS5leHAJKHJldmlzaW9uIDc3MTgwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL0ph
dmFTY3JpcHRDb3JlLmV4cAkod29ya2luZyBjb3B5KQpAQCAtMzM0LDcgKzMzNCw3IEBAIF9fWk4z
V1RGMTBTdHJpbmdJbXBsMThzaW1wbGlmeVdoaXRlU3BhY2UKIF9fWk4zV1RGMTBTdHJpbmdJbXBs
MTljaGFyYWN0ZXJTdGFydGluZ0F0RWoKIF9fWk4zV1RGMTBTdHJpbmdJbXBsMTljcmVhdGVVbmlu
aXRpYWxpemVkRWpSUHQKIF9fWk4zV1RGMTBTdHJpbmdJbXBsMjJjb250YWluc09ubHlXaGl0ZXNw
YWNlRXYKLV9fWk4zV1RGMTBTdHJpbmdJbXBsMjNkZWZhdWx0V3JpdGluZ0RpcmVjdGlvbkV2Citf
X1pOM1dURjEwU3RyaW5nSW1wbDIzZGVmYXVsdFdyaXRpbmdEaXJlY3Rpb25FUGIKIF9fWk4zV1RG
MTBTdHJpbmdJbXBsMjNyZXZlcnNlRmluZElnbm9yaW5nQ2FzZUVQUzBfagogX19aTjNXVEYxMFN0
cmluZ0ltcGwzN2NyZWF0ZVN0cmlwcGluZ051bGxDaGFyYWN0ZXJzU2xvd0Nhc2VFUEt0agogX19a
TjNXVEYxMFN0cmluZ0ltcGw0ZmluZEVQRmJ0RWoKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9KYXZhU2NyaXB0Q29yZS5vcmRlcgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvSmF2YVNjcmlwdENvcmUub3JkZXIJKHJldmlzaW9uIDc3MTgwKQorKysgU291cmNlL0phdmFT
Y3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLm9yZGVyCSh3b3JraW5nIGNvcHkpCkBAIC0xNDI3LDcg
KzE0MjcsNyBAQCBfX1pON1dlYkNvcmUxMFN0cmluZ0ltcGwxMXJldmVyc2VGaW5kRXRpCiBfX1pO
M1dURjIzd2FpdEZvclRocmVhZENvbXBsZXRpb25FalBQdgogX19aTjNXVEYxNEZhc3RNYWxsb2Na
b25lMTBzdGF0aXN0aWNzRVAxNF9tYWxsb2Nfem9uZV90UDE5bWFsbG9jX3N0YXRpc3RpY3NfdAog
X19aTks3V2ViQ29yZTZTdHJpbmcxOHNpbXBsaWZ5V2hpdGVTcGFjZUV2Ci1fX1pON1dlYkNvcmUx
MFN0cmluZ0ltcGwyM2RlZmF1bHRXcml0aW5nRGlyZWN0aW9uRXYKK19fWk4zV1RGMTBTdHJpbmdJ
bXBsMjNkZWZhdWx0V3JpdGluZ0RpcmVjdGlvbkVQYgogX19aTjNKU0NMMjBkYXRlUHJvdG9GdW5j
U2V0VGltZUVQTlNfOUV4ZWNTdGF0ZUVQTlNfOEpTT2JqZWN0RU5TXzdKU1ZhbHVlRVJLTlNfN0Fy
Z0xpc3RFCiBfX1pOM0pTQ0wyMWRhdGVQcm90b0Z1bmNHZXRNb250aEVQTlNfOUV4ZWNTdGF0ZUVQ
TlNfOEpTT2JqZWN0RU5TXzdKU1ZhbHVlRVJLTlNfN0FyZ0xpc3RFCiBfX1pOSzNKU0MxMkRhdGVJ
bnN0YW5jZTI2Y2FsY3VsYXRlR3JlZ29yaWFuRGF0ZVRpbWVFUE5TXzlFeGVjU3RhdGVFCkluZGV4
OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvd3RmL3RleHQvU3RyaW5nSW1wbC5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3d0Zi90ZXh0L1N0cmluZ0ltcGwuY3BwCShyZXZp
c2lvbiA3NzE4MCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS93dGYvdGV4dC9TdHJpbmdJbXBs
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTAwNSwxNSArMTAwNSwyMyBAQCBib29sIGVxdWFsSWdu
b3JpbmdOdWxsaXR5KFN0cmluZ0ltcGwqIGEsCiAgICAgcmV0dXJuIGZhbHNlOwogfQogCi1XVEY6
OlVuaWNvZGU6OkRpcmVjdGlvbiBTdHJpbmdJbXBsOjpkZWZhdWx0V3JpdGluZ0RpcmVjdGlvbigp
CitXVEY6OlVuaWNvZGU6OkRpcmVjdGlvbiBTdHJpbmdJbXBsOjpkZWZhdWx0V3JpdGluZ0RpcmVj
dGlvbihib29sKiBoYXNTdHJvbmdEaXJlY3Rpb25hbGl0eSkKIHsKICAgICBmb3IgKHVuc2lnbmVk
IGkgPSAwOyBpIDwgbV9sZW5ndGg7ICsraSkgewogICAgICAgICBXVEY6OlVuaWNvZGU6OkRpcmVj
dGlvbiBjaGFyRGlyZWN0aW9uID0gV1RGOjpVbmljb2RlOjpkaXJlY3Rpb24obV9kYXRhW2ldKTsK
LSAgICAgICAgaWYgKGNoYXJEaXJlY3Rpb24gPT0gV1RGOjpVbmljb2RlOjpMZWZ0VG9SaWdodCkK
KyAgICAgICAgaWYgKGNoYXJEaXJlY3Rpb24gPT0gV1RGOjpVbmljb2RlOjpMZWZ0VG9SaWdodCkg
eworICAgICAgICAgICAgaWYgKGhhc1N0cm9uZ0RpcmVjdGlvbmFsaXR5KQorICAgICAgICAgICAg
ICAgICpoYXNTdHJvbmdEaXJlY3Rpb25hbGl0eSA9IHRydWU7CiAgICAgICAgICAgICByZXR1cm4g
V1RGOjpVbmljb2RlOjpMZWZ0VG9SaWdodDsKLSAgICAgICAgaWYgKGNoYXJEaXJlY3Rpb24gPT0g
V1RGOjpVbmljb2RlOjpSaWdodFRvTGVmdCB8fCBjaGFyRGlyZWN0aW9uID09IFdURjo6VW5pY29k
ZTo6UmlnaHRUb0xlZnRBcmFiaWMpCisgICAgICAgIH0KKyAgICAgICAgaWYgKGNoYXJEaXJlY3Rp
b24gPT0gV1RGOjpVbmljb2RlOjpSaWdodFRvTGVmdCB8fCBjaGFyRGlyZWN0aW9uID09IFdURjo6
VW5pY29kZTo6UmlnaHRUb0xlZnRBcmFiaWMpIHsKKyAgICAgICAgICAgIGlmIChoYXNTdHJvbmdE
aXJlY3Rpb25hbGl0eSkKKyAgICAgICAgICAgICAgICAqaGFzU3Ryb25nRGlyZWN0aW9uYWxpdHkg
PSB0cnVlOwogICAgICAgICAgICAgcmV0dXJuIFdURjo6VW5pY29kZTo6UmlnaHRUb0xlZnQ7Cisg
ICAgICAgIH0KICAgICB9CisgICAgaWYgKGhhc1N0cm9uZ0RpcmVjdGlvbmFsaXR5KQorICAgICAg
ICAqaGFzU3Ryb25nRGlyZWN0aW9uYWxpdHkgPSBmYWxzZTsKICAgICByZXR1cm4gV1RGOjpVbmlj
b2RlOjpMZWZ0VG9SaWdodDsKIH0KIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3d0Zi90
ZXh0L1N0cmluZ0ltcGwuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvd3Rm
L3RleHQvU3RyaW5nSW1wbC5oCShyZXZpc2lvbiA3NzE4MCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS93dGYvdGV4dC9TdHJpbmdJbXBsLmgJKHdvcmtpbmcgY29weSkKQEAgLTMxNiw3ICszMTYs
NyBAQCBwdWJsaWM6CiAgICAgUGFzc1JlZlB0cjxTdHJpbmdJbXBsPiByZXBsYWNlKFN0cmluZ0lt
cGwqLCBTdHJpbmdJbXBsKik7CiAgICAgUGFzc1JlZlB0cjxTdHJpbmdJbXBsPiByZXBsYWNlKHVu
c2lnbmVkIGluZGV4LCB1bnNpZ25lZCBsZW4sIFN0cmluZ0ltcGwqKTsKIAotICAgIFdURjo6VW5p
Y29kZTo6RGlyZWN0aW9uIGRlZmF1bHRXcml0aW5nRGlyZWN0aW9uKCk7CisgICAgV1RGOjpVbmlj
b2RlOjpEaXJlY3Rpb24gZGVmYXVsdFdyaXRpbmdEaXJlY3Rpb24oYm9vbCogaGFzU3Ryb25nRGly
ZWN0aW9uYWxpdHkgPSAwKTsKIAogI2lmIFBMQVRGT1JNKENGKQogICAgIENGU3RyaW5nUmVmIGNy
ZWF0ZUNGU3RyaW5nKCk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvd3RmL3RleHQvV1RG
U3RyaW5nLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3d0Zi90ZXh0L1dU
RlN0cmluZy5oCShyZXZpc2lvbiA3NzE4MCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS93dGYv
dGV4dC9XVEZTdHJpbmcuaAkod29ya2luZyBjb3B5KQpAQCAtMzI2LDcgKzMyNiwxNCBAQCBwdWJs
aWM6CiAgICAgc3RhdGljIFN0cmluZyBmcm9tVVRGOFdpdGhMYXRpbjFGYWxsYmFjayhjb25zdCBj
aGFyKiwgc2l6ZV90KTsKICAgICAKICAgICAvLyBEZXRlcm1pbmVzIHRoZSB3cml0aW5nIGRpcmVj
dGlvbiB1c2luZyB0aGUgVW5pY29kZSBCaWRpIEFsZ29yaXRobSBydWxlcyBQMiBhbmQgUDMuCi0g
ICAgV1RGOjpVbmljb2RlOjpEaXJlY3Rpb24gZGVmYXVsdFdyaXRpbmdEaXJlY3Rpb24oKSBjb25z
dCB7IHJldHVybiBtX2ltcGwgPyBtX2ltcGwtPmRlZmF1bHRXcml0aW5nRGlyZWN0aW9uKCkgOiBX
VEY6OlVuaWNvZGU6OkxlZnRUb1JpZ2h0OyB9CisgICAgV1RGOjpVbmljb2RlOjpEaXJlY3Rpb24g
ZGVmYXVsdFdyaXRpbmdEaXJlY3Rpb24oYm9vbCogaGFzU3Ryb25nRGlyZWN0aW9uYWxpdHkgPSAw
KSBjb25zdAorICAgIHsKKyAgICAgICAgaWYgKG1faW1wbCkKKyAgICAgICAgICAgIHJldHVybiBt
X2ltcGwtPmRlZmF1bHRXcml0aW5nRGlyZWN0aW9uKGhhc1N0cm9uZ0RpcmVjdGlvbmFsaXR5KTsK
KyAgICAgICAgaWYgKGhhc1N0cm9uZ0RpcmVjdGlvbmFsaXR5KQorICAgICAgICAgICAgKmhhc1N0
cm9uZ0RpcmVjdGlvbmFsaXR5ID0gZmFsc2U7CisgICAgICAgIHJldHVybiBXVEY6OlVuaWNvZGU6
OkxlZnRUb1JpZ2h0OworICAgIH0KIAogICAgIGJvb2wgY29udGFpbnNPbmx5QVNDSUkoKSBjb25z
dCB7IHJldHVybiBjaGFyYWN0ZXJzQXJlQWxsQVNDSUkoY2hhcmFjdGVycygpLCBsZW5ndGgoKSk7
IH0KICAgICBib29sIGNvbnRhaW5zT25seUxhdGluMSgpIGNvbnN0IHsgcmV0dXJuIGNoYXJhY3Rl
cnNBcmVBbGxMYXRpbjEoY2hhcmFjdGVycygpLCBsZW5ndGgoKSk7IH0KSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cJ
KHJldmlzaW9uIDc3Mzk2KQorKysgU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNv
cHkpCkBAIC0xLDMgKzEsMzQgQEAKKzIwMTEtMDItMDIgIFlhZWwgQWhhcm9uICA8eWFlbC5haGFy
b25Abm9raWEuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgIEFkZCBzdXBwb3J0IGZvciBkaXI9YXV0bworICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NTA5MTYKKworICAgICAgICBUZXN0czogZmFzdC9kb20v
SFRNTEVsZW1lbnQvYXR0ci1kaXItYXV0by1jaGFuZ2UtY2hpbGQtbm9kZS5odG1sCisgICAgICAg
ICAgICAgICBmYXN0L2RvbS9IVE1MRWxlbWVudC9hdHRyLWRpci1hdXRvLWNoYW5nZS10ZXh0Lmh0
bWwKKyAgICAgICAgICAgICAgIGZhc3QvZG9tL0hUTUxFbGVtZW50L2F0dHItZGlyLWF1dG8uaHRt
bAorICAgICAgICAgICAgICAgZmFzdC9kb20vSFRNTEVsZW1lbnQvYXR0ci1kaXItdmFsdWUtY2hh
bmdlLmh0bWwKKworICAgICAgICAqIGNzcy9DU1NTdHlsZVNlbGVjdG9yLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkNTU1N0eWxlU2VsZWN0b3I6OmNhblNoYXJlU3R5bGVXaXRoRWxlbWVudCk6Cisg
ICAgICAgICogY3NzL0NTU1ZhbHVlS2V5d29yZHMuaW46CisgICAgICAgICogZG9tL0VsZW1lbnQu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6RWxlbWVudDo6YWRqdXN0RWxlbWVudERpcmVjdGlvbmFs
aXR5SWZOZWVkZWRBZnRlckNoaWxkcmVuQ2hhbmdlZCk6CisgICAgICAgIChXZWJDb3JlOjpFbGVt
ZW50OjpjaGlsZHJlbkNoYW5nZWQpOgorICAgICAgICAqIGRvbS9FbGVtZW50Lmg6CisgICAgICAg
ICogZG9tL05vZGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Tm9kZTo6YXR0YWNoKToKKyAgICAg
ICAgKFdlYkNvcmU6Ok5vZGU6OnNldEhhc0RpckF1dG9GbGFnUmVjdXJzaXZlbHkpOgorICAgICAg
ICAqIGRvbS9Ob2RlLmg6CisgICAgICAgIChXZWJDb3JlOjpOb2RlOjpzZWxmT3JBbmNlc3Rvckhh
c0RpckF1dG9BdHRyaWJ1dGUpOgorICAgICAgICAqIGh0bWwvSFRNTEVsZW1lbnQuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6SFRNTEVsZW1lbnQ6Om1hcFRvRW50cnkpOgorICAgICAgICAoV2ViQ29y
ZTo6SFRNTEVsZW1lbnQ6OnBhcnNlTWFwcGVkQXR0cmlidXRlKToKKyAgICAgICAgKFdlYkNvcmU6
OkhUTUxFbGVtZW50OjpkaXJlY3Rpb25hbGl0eSk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MRWxl
bWVudDo6YWRqdXN0RGlyZWN0aW9uYWxpdHlBZnRlckNoaWxkcmVuQ2hhbmdlZCk6CisgICAgICAg
ICogaHRtbC9IVE1MRWxlbWVudC5oOgorCiAyMDExLTAyLTAyICBTdGV2ZSBMYWNleSAgPHNqbEBj
aHJvbWl1bS5vcmc+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgRXJpYyBDYXJsc29uLgpJbmRleDog
U291cmNlL1dlYkNvcmUvY3NzL0NTU1N0eWxlU2VsZWN0b3IuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL2Nzcy9DU1NTdHlsZVNlbGVjdG9yLmNwcAkocmV2aXNpb24gNzcxODApCisr
KyBTb3VyY2UvV2ViQ29yZS9jc3MvQ1NTU3R5bGVTZWxlY3Rvci5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTEwOTIsNiArMTA5Miw5IEBAIGJvb2wgQ1NTU3R5bGVTZWxlY3Rvcjo6Y2FuU2hhcmVTdHls
ZVdpdGgKICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAjZW5kaWYKIAorICAgICAgICAg
ICAgaWYgKGVxdWFsSWdub3JpbmdDYXNlKHMtPmZhc3RHZXRBdHRyaWJ1dGUoZGlyQXR0ciksICJh
dXRvIikgfHwgZXF1YWxJZ25vcmluZ0Nhc2UobV9lbGVtZW50LT5mYXN0R2V0QXR0cmlidXRlKGRp
ckF0dHIpLCAiYXV0byIpKQorICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKwogICAgICAg
ICAgICAgYm9vbCBjbGFzc2VzTWF0Y2ggPSB0cnVlOwogICAgICAgICAgICAgaWYgKHMtPmhhc0Ns
YXNzKCkpIHsKICAgICAgICAgICAgICAgICBjb25zdCBBdG9taWNTdHJpbmcmIGNsYXNzMSA9IG1f
ZWxlbWVudC0+ZmFzdEdldEF0dHJpYnV0ZShjbGFzc0F0dHIpOwpJbmRleDogU291cmNlL1dlYkNv
cmUvY3NzL0NTU1ZhbHVlS2V5d29yZHMuaW4KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
Y3NzL0NTU1ZhbHVlS2V5d29yZHMuaW4JKHJldmlzaW9uIDc3MTgwKQorKysgU291cmNlL1dlYkNv
cmUvY3NzL0NTU1ZhbHVlS2V5d29yZHMuaW4JKHdvcmtpbmcgY29weSkKQEAgLTM2OCw2ICszNjgs
NyBAQCBhbGwtc2Nyb2xsCiAjCiBsdHIKIHJ0bAorIyBhdXRvCiAjCiAjIENTU19QUk9QX1RFWFRf
VFJBTlNGT1JNOgogIwpJbmRleDogU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmNwcAkocmV2aXNpb24gNzcxODAp
CisrKyBTb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEx
MjAsNiArMTEyMCwxOCBAQCB2b2lkIEVsZW1lbnQ6OnJlbW92ZVNoYWRvd1Jvb3QoKQogICAgIH0K
IH0KIAordm9pZCBFbGVtZW50OjphZGp1c3RFbGVtZW50RGlyZWN0aW9uYWxpdHlJZk5lZWRlZEFm
dGVyQ2hpbGRyZW5DaGFuZ2VkKCkKK3sKKyAgICBpZiAoIXNlbGZPckFuY2VzdG9ySGFzRGlyQXV0
b0F0dHJpYnV0ZSgpKQorICAgICAgICByZXR1cm47CisKKyAgICBFbGVtZW50KiBlbGVtZW50ID0g
dGhpczsKKyAgICB3aGlsZSAoZWxlbWVudC0+cGFyZW50RWxlbWVudCgpICYmIGVsZW1lbnQtPnBh
cmVudEVsZW1lbnQoKS0+c2VsZk9yQW5jZXN0b3JIYXNEaXJBdXRvQXR0cmlidXRlKCkgJiYgIWVx
dWFsSWdub3JpbmdDYXNlKGVsZW1lbnQtPmZhc3RHZXRBdHRyaWJ1dGUoZGlyQXR0ciksICJhdXRv
IikpCisgICAgICAgIGVsZW1lbnQgPSBlbGVtZW50LT5wYXJlbnRFbGVtZW50KCk7CisgICAgaWYg
KGVsZW1lbnQtPmlzSFRNTEVsZW1lbnQoKSkKKyAgICAgICAgc3RhdGljX2Nhc3Q8SFRNTEVsZW1l
bnQqPihlbGVtZW50KS0+YWRqdXN0RGlyZWN0aW9uYWxpdHlBZnRlckNoaWxkcmVuQ2hhbmdlZCgp
OworfQorCiBib29sIEVsZW1lbnQ6OmNoaWxkVHlwZUFsbG93ZWQoTm9kZVR5cGUgdHlwZSkKIHsK
ICAgICBzd2l0Y2ggKHR5cGUpIHsKQEAgLTEyMjEsNiArMTIzMyw3IEBAIHZvaWQgRWxlbWVudDo6
Y2hpbGRyZW5DaGFuZ2VkKGJvb2wgY2hhbmcKICAgICBDb250YWluZXJOb2RlOjpjaGlsZHJlbkNo
YW5nZWQoY2hhbmdlZEJ5UGFyc2VyLCBiZWZvcmVDaGFuZ2UsIGFmdGVyQ2hhbmdlLCBjaGlsZENv
dW50RGVsdGEpOwogICAgIGlmICghY2hhbmdlZEJ5UGFyc2VyKQogICAgICAgICBjaGVja0ZvclNp
YmxpbmdTdHlsZUNoYW5nZXModGhpcywgcmVuZGVyU3R5bGUoKSwgZmFsc2UsIGJlZm9yZUNoYW5n
ZSwgYWZ0ZXJDaGFuZ2UsIGNoaWxkQ291bnREZWx0YSk7CisgICAgYWRqdXN0RWxlbWVudERpcmVj
dGlvbmFsaXR5SWZOZWVkZWRBZnRlckNoaWxkcmVuQ2hhbmdlZCgpOwogfQogCiB2b2lkIEVsZW1l
bnQ6OmZpbmlzaFBhcnNpbmdDaGlsZHJlbigpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9kb20vRWxl
bWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmgJKHJldmlz
aW9uIDc3MTgwKQorKysgU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuaAkod29ya2luZyBjb3B5
KQpAQCAtNDAxLDYgKzQwMSw4IEBAIHByaXZhdGU6CiAgICAgU3BlbGxjaGVja0F0dHJpYnV0ZVN0
YXRlIHNwZWxsY2hlY2tBdHRyaWJ1dGVTdGF0ZSgpIGNvbnN0OwogICAgIHZvaWQgcmVtb3ZlU2hh
ZG93Um9vdCgpOwogCisgICAgdm9pZCBhZGp1c3RFbGVtZW50RGlyZWN0aW9uYWxpdHlJZk5lZWRl
ZEFmdGVyQ2hpbGRyZW5DaGFuZ2VkKCk7CisKIHByaXZhdGU6CiAgICAgbXV0YWJsZSBSZWZQdHI8
TmFtZWROb2RlTWFwPiBtX2F0dHJpYnV0ZU1hcDsKIH07CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9k
b20vTm9kZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvZG9tL05vZGUuY3BwCShy
ZXZpc2lvbiA3NzE4MCkKKysrIFNvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtMTI1MCw2ICsxMjUwLDkgQEAgdm9pZCBOb2RlOjphdHRhY2goKQogICAgICAgICB9
CiAgICAgfQogCisgICAgaWYgKHBhcmVudE5vZGUoKSAmJiBwYXJlbnROb2RlKCktPmdldEZsYWco
U2VsZk9yQW5jZXN0b3JIYXNEaXJBdXRvRmxhZykpCisgICAgICAgIHNldEZsYWcoU2VsZk9yQW5j
ZXN0b3JIYXNEaXJBdXRvRmxhZyk7CisKICAgICBzZXRBdHRhY2hlZCgpOwogICAgIGNsZWFyTmVl
ZHNTdHlsZVJlY2FsYygpOwogfQpAQCAtMjk3OSw2ICsyOTgyLDMzIEBAIGJvb2wgTm9kZTo6ZGlz
YWJsZWQoKSBjb25zdAogICAgIHJldHVybiBmYWxzZTsKIH0KIAordm9pZCBOb2RlOjpzZXRIYXNE
aXJBdXRvRmxhZ1JlY3Vyc2l2ZWx5KGJvb2wgZmxhZykKK3sKKyAgICBpZiAoZ2V0RmxhZyhTZWxm
T3JBbmNlc3Rvckhhc0RpckF1dG9GbGFnKSA9PSBmbGFnKQorICAgICAgICByZXR1cm47CisgICAg
CisgICAgTm9kZSogbm9kZSA9IHRoaXM7CisgICAgaWYgKGZsYWcpIHsKKyAgICAgICAgZm9yICg7
IG5vZGU7IG5vZGUgPSBub2RlLT50cmF2ZXJzZU5leHROb2RlKHRoaXMpKQorICAgICAgICAgICAg
bm9kZS0+c2V0RmxhZyh0cnVlLCBTZWxmT3JBbmNlc3Rvckhhc0RpckF1dG9GbGFnKTsKKyAgICAg
ICAgcmV0dXJuOworICAgIH0KKworICAgIGlmIChwYXJlbnQoKSAmJiBwYXJlbnQoKS0+c2VsZk9y
QW5jZXN0b3JIYXNEaXJBdXRvQXR0cmlidXRlKCkpCisgICAgICAgIHJldHVybjsKKworICAgIHdo
aWxlIChub2RlKSB7CisgICAgICAgIGlmIChub2RlLT5pc0hUTUxFbGVtZW50KCkpIHsKKyAgICAg
ICAgICAgIGlmIChlcXVhbElnbm9yaW5nQ2FzZSh0b0VsZW1lbnQobm9kZSktPmZhc3RHZXRBdHRy
aWJ1dGUoZGlyQXR0ciksICJhdXRvIikpIHsKKyAgICAgICAgICAgICAgICBub2RlID0gbm9kZS0+
dHJhdmVyc2VOZXh0U2libGluZyh0aGlzKTsKKyAgICAgICAgICAgICAgICBjb250aW51ZTsKKyAg
ICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICBub2RlLT5zZXRGbGFnKGZhbHNlLCBTZWxm
T3JBbmNlc3Rvckhhc0RpckF1dG9GbGFnKTsKKyAgICAgICAgbm9kZSA9IG5vZGUtPnRyYXZlcnNl
TmV4dE5vZGUodGhpcyk7CisgICAgfQorfQorICAgIAogdm9pZCBOb2RlOjpkZWZhdWx0RXZlbnRI
YW5kbGVyKEV2ZW50KiBldmVudCkKIHsKICAgICBpZiAoZXZlbnQtPnRhcmdldCgpICE9IHRoaXMp
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9kb20vTm9kZS5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL2RvbS9Ob2RlLmgJKHJldmlzaW9uIDc3MTgwKQorKysgU291cmNlL1dlYkNvcmUvZG9t
L05vZGUuaAkod29ya2luZyBjb3B5KQpAQCAtNjAzLDYgKzYwMyw4IEBAIHByaXZhdGU6CiAKICAg
ICAgICAgU3R5bGVDaGFuZ2VNYXNrID0gMSA8PCBub2RlU3R5bGVDaGFuZ2VTaGlmdCB8IDEgPDwg
KG5vZGVTdHlsZUNoYW5nZVNoaWZ0ICsgMSksCiAKKyAgICAgICAgU2VsZk9yQW5jZXN0b3JIYXNE
aXJBdXRvRmxhZyA9IDEgPDwgMjcsCisKICNpZiBFTkFCTEUoU1ZHKQogICAgICAgICBEZWZhdWx0
Tm9kZUZsYWdzID0gSXNQYXJzaW5nQ2hpbGRyZW5GaW5pc2hlZEZsYWcgfCBJc1N0eWxlQXR0cmli
dXRlVmFsaWRGbGFnIHwgQXJlU1ZHQXR0cmlidXRlc1ZhbGlkRmxhZwogI2Vsc2UKQEAgLTcwNCw2
ICs3MDYsMTAgQEAgcHJvdGVjdGVkOgogICAgIHZvaWQgc2V0SGFzUmFyZVNWR0RhdGEoKSB7IHNl
dEZsYWcoSGFzU1ZHUmFyZURhdGFGbGFnKTsgfQogICAgIHZvaWQgY2xlYXJIYXNSYXJlU1ZHRGF0
YSgpIHsgY2xlYXJGbGFnKEhhc1NWR1JhcmVEYXRhRmxhZyk7IH0KICNlbmRpZgorCisgICAgYm9v
bCBzZWxmT3JBbmNlc3Rvckhhc0RpckF1dG9BdHRyaWJ1dGUoKSBjb25zdCB7IHJldHVybiBnZXRG
bGFnKFNlbGZPckFuY2VzdG9ySGFzRGlyQXV0b0ZsYWcpOyB9CisKKyAgICB2b2lkIHNldEhhc0Rp
ckF1dG9GbGFnUmVjdXJzaXZlbHkoYm9vbCk7CiB9OwogCiAvLyBVc2VkIGluIE5vZGU6OmFkZFN1
YnJlc291cmNlQXR0cmlidXRlVVJMcygpIGFuZCBpbiBhZGRTdWJyZXNvdXJjZVN0eWxlVVJMcygp
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxFbGVtZW50LmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxFbGVtZW50LmNwcAkocmV2aXNpb24gNzcxODApCisr
KyBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxFbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAt
MTI0LDcgKzEyNCw3IEBAIGJvb2wgSFRNTEVsZW1lbnQ6Om1hcFRvRW50cnkoY29uc3QgUXVhbGkK
ICAgICB9CiAgICAgaWYgKGF0dHJOYW1lID09IGRpckF0dHIpIHsKICAgICAgICAgcmVzdWx0ID0g
aGFzTG9jYWxOYW1lKGJkb1RhZykgPyBlQkRPIDogZVVuaXZlcnNhbDsKLSAgICAgICAgcmV0dXJu
IGZhbHNlOworICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CiAKICAgICByZXR1cm4gU3R5bGVk
RWxlbWVudDo6bWFwVG9FbnRyeShhdHRyTmFtZSwgcmVzdWx0KTsKQEAgLTE1NSw3ICsxNTUsMTMg
QEAgdm9pZCBIVE1MRWxlbWVudDo6cGFyc2VNYXBwZWRBdHRyaWJ1dGUoQQogICAgIH0gZWxzZSBp
ZiAoYXR0ci0+bmFtZSgpID09IGxhbmdBdHRyKSB7CiAgICAgICAgIC8vIEZJWE1FOiBJbXBsZW1l
bnQKICAgICB9IGVsc2UgaWYgKGF0dHItPm5hbWUoKSA9PSBkaXJBdHRyKSB7Ci0gICAgICAgIGFk
ZENTU1Byb3BlcnR5KGF0dHIsIENTU1Byb3BlcnR5RGlyZWN0aW9uLCBhdHRyLT52YWx1ZSgpKTsK
KyAgICAgICAgaWYgKGVxdWFsSWdub3JpbmdDYXNlKGF0dHItPnZhbHVlKCksICJhdXRvIikpIHsK
KyAgICAgICAgICAgIGFkZENTU1Byb3BlcnR5KGF0dHIsIENTU1Byb3BlcnR5RGlyZWN0aW9uLCBk
aXJlY3Rpb25hbGl0eSgpID09IExUUiA/ICJsdHIiIDogInJ0bCIpOworICAgICAgICAgICAgc2V0
SGFzRGlyQXV0b0ZsYWdSZWN1cnNpdmVseSh0cnVlKTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAg
ICAgICAgIGFkZENTU1Byb3BlcnR5KGF0dHIsIENTU1Byb3BlcnR5RGlyZWN0aW9uLCBhdHRyLT52
YWx1ZSgpKTsKKyAgICAgICAgICAgIHNldEhhc0RpckF1dG9GbGFnUmVjdXJzaXZlbHkoZmFsc2Up
OworICAgICAgICB9CiAgICAgICAgIGFkZENTU1Byb3BlcnR5KGF0dHIsIENTU1Byb3BlcnR5VW5p
Y29kZUJpZGksIGhhc0xvY2FsTmFtZShiZG9UYWcpID8gQ1NTVmFsdWVCaWRpT3ZlcnJpZGUgOiBD
U1NWYWx1ZUVtYmVkKTsKICAgICB9IGVsc2UgaWYgKGF0dHItPm5hbWUoKSA9PSBkcmFnZ2FibGVB
dHRyKSB7CiAgICAgICAgIGNvbnN0IEF0b21pY1N0cmluZyYgdmFsdWUgPSBhdHRyLT52YWx1ZSgp
OwpAQCAtODU2LDYgKzg2Miw1MCBAQCBIVE1MRm9ybUVsZW1lbnQqIEhUTUxFbGVtZW50OjpzaGFk
b3dBbmNlCiAgICAgcmV0dXJuIGFuY2VzdG9ySFRNTC0+Zm9ybSgpOwogfQogCitUZXh0RGlyZWN0
aW9uIEhUTUxFbGVtZW50OjpkaXJlY3Rpb25hbGl0eSgpCit7CisgICAgVGV4dERpcmVjdGlvbiBk
aXJlY3Rpb24gPSBMVFI7CisgICAgQVNTRVJUKGVxdWFsSWdub3JpbmdDYXNlKGZhc3RHZXRBdHRy
aWJ1dGUoZGlyQXR0ciksICJhdXRvIikpOworCisgICAgTm9kZSogbm9kZSA9IGZpcnN0Q2hpbGQo
KTsKKyAgICB3aGlsZSAobm9kZSkgeworICAgICAgICAvLyBTa2lwIGJkaSwgc2NyaXB0IGFuZCBz
dHlsZSBlbGVtZW50cworICAgICAgICBpZiAoZXF1YWxJZ25vcmluZ0Nhc2Uobm9kZS0+bm9kZU5h
bWUoKSwgImJkaSIpIHx8IG5vZGUtPmhhc1RhZ05hbWUoc2NyaXB0VGFnKSB8fCBub2RlLT5oYXNU
YWdOYW1lKHN0eWxlVGFnKSkgeworICAgICAgICAgICAgbm9kZSA9IG5vZGUtPnRyYXZlcnNlTmV4
dFNpYmxpbmcodGhpcyk7CisgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgfQorCisgICAg
ICAgIC8vIFNraXAgZWxlbWVudHMgd2l0aCB2YWxpZCBkaXIgYXR0cmlidXRlCisgICAgICAgIGlm
IChub2RlLT5pc0VsZW1lbnROb2RlKCkpIHsKKyAgICAgICAgICAgIEF0b21pY1N0cmluZyBkaXJB
dHRyaWJ1dGVWYWx1ZSA9IHRvRWxlbWVudChub2RlKS0+ZmFzdEdldEF0dHJpYnV0ZShkaXJBdHRy
KTsKKyAgICAgICAgICAgIGlmIChlcXVhbElnbm9yaW5nQ2FzZShkaXJBdHRyaWJ1dGVWYWx1ZSwg
InJ0bCIpIHx8IGVxdWFsSWdub3JpbmdDYXNlKGRpckF0dHJpYnV0ZVZhbHVlLCAibHRyIikgfHwg
ZXF1YWxJZ25vcmluZ0Nhc2UoZGlyQXR0cmlidXRlVmFsdWUsICJhdXRvIikpIHsKKyAgICAgICAg
ICAgICAgICBub2RlID0gbm9kZS0+dHJhdmVyc2VOZXh0U2libGluZyh0aGlzKTsKKyAgICAgICAg
ICAgICAgICBjb250aW51ZTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorCisgICAgICAgIGlm
IChub2RlLT5pc1RleHROb2RlKCkpIHsKKyAgICAgICAgICAgIGJvb2wgaGFzU3Ryb25nRGlyZWN0
aW9uYWxpdHk7CisgICAgICAgICAgICBXVEY6OlVuaWNvZGU6OkRpcmVjdGlvbiB0ZXh0RGlyZWN0
aW9uID0gbm9kZS0+dGV4dENvbnRlbnQodHJ1ZSkuZGVmYXVsdFdyaXRpbmdEaXJlY3Rpb24oJmhh
c1N0cm9uZ0RpcmVjdGlvbmFsaXR5KTsKKyAgICAgICAgICAgIGlmIChoYXNTdHJvbmdEaXJlY3Rp
b25hbGl0eSkKKyAgICAgICAgICAgICAgICByZXR1cm4gKHRleHREaXJlY3Rpb24gPT0gV1RGOjpV
bmljb2RlOjpMZWZ0VG9SaWdodCkgPyBMVFIgOiBSVEw7CisgICAgICAgIH0KKyAgICAgICAgbm9k
ZSA9IG5vZGUtPnRyYXZlcnNlTmV4dE5vZGUodGhpcyk7CisgICAgfQorICAgIHJldHVybiBkaXJl
Y3Rpb247Cit9CisKK3ZvaWQgSFRNTEVsZW1lbnQ6OmFkanVzdERpcmVjdGlvbmFsaXR5QWZ0ZXJD
aGlsZHJlbkNoYW5nZWQoKQoreworICAgIEFTU0VSVChzZWxmT3JBbmNlc3Rvckhhc0RpckF1dG9B
dHRyaWJ1dGUoKSk7CisgICAgVGV4dERpcmVjdGlvbiB0ZXh0RGlyZWN0aW9uID0gZGlyZWN0aW9u
YWxpdHkoKTsKKyAgICBpZiAocmVuZGVyU3R5bGUoKSAmJiByZW5kZXJTdHlsZSgpLT5kaXJlY3Rp
b24oKSA9PSB0ZXh0RGlyZWN0aW9uKQorICAgICAgICByZXR1cm47CisKKyAgICBzZXRBdHRyaWJ1
dGUoZGlyQXR0ciwgdGV4dERpcmVjdGlvbiA9PSBMVFIgPyAibHRyIiA6ICIgcnRsIik7CisgICAg
c2V0TmVlZHNTdHlsZVJlY2FsYygpOworfQorCiB2b2lkIEhUTUxFbGVtZW50OjpkaXNwYXRjaENo
YW5nZUV2ZW50cygpCiB7CiAgICAgUmVmUHRyPEhUTUxFbGVtZW50PiBwcm90ZWN0b3IodGhpcyk7
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxFbGVtZW50LmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRWxlbWVudC5oCShyZXZpc2lvbiA3NzE4MCkKKysrIFNv
dXJjZS9XZWJDb3JlL2h0bWwvSFRNTEVsZW1lbnQuaAkod29ya2luZyBjb3B5KQpAQCAtODcsNiAr
ODcsOCBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoQ2hhbmdlRXZlbnRzKCk7
CiAgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoSW5wdXRFdmVudHMoKTsKIAorICAgIHZvaWQgYWRq
dXN0RGlyZWN0aW9uYWxpdHlBZnRlckNoaWxkcmVuQ2hhbmdlZCgpOworCiBwcm90ZWN0ZWQ6CiAg
ICAgSFRNTEVsZW1lbnQoY29uc3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFtZSwgRG9jdW1lbnQqKTsK
IApAQCAtMTA2LDYgKzEwOCw4IEBAIHByaXZhdGU6CiAgICAgUGFzc1JlZlB0cjxEb2N1bWVudEZy
YWdtZW50PiB0ZXh0VG9GcmFnbWVudChjb25zdCBTdHJpbmcmLCBFeGNlcHRpb25Db2RlJik7CiAK
ICAgICBIVE1MRm9ybUVsZW1lbnQqIHNoYWRvd0FuY2VzdG9yT3duZXJGb3JtKCk7CisKKyAgICBU
ZXh0RGlyZWN0aW9uIGRpcmVjdGlvbmFsaXR5KCk7CiB9OwogCiBpbmxpbmUgSFRNTEVsZW1lbnQ6
OkhUTUxFbGVtZW50KGNvbnN0IFF1YWxpZmllZE5hbWUmIHRhZ05hbWUsIERvY3VtZW50KiBkb2N1
bWVudCkKSW5kZXg6IExheW91dFRlc3RzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRU
ZXN0cy9DaGFuZ2VMb2cJKHJldmlzaW9uIDc3Mzk2KQorKysgTGF5b3V0VGVzdHMvQ2hhbmdlTG9n
CSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTkgQEAKKzIwMTEtMDItMDIgIFlhZWwgQWhhcm9u
ICA8eWFlbC5haGFyb25Abm9raWEuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgIEFkZCBzdXBwb3J0IGZvciBkaXI9YXV0bworICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NTA5MTYKKworICAgICAgICAqIGZh
c3QvZG9tL0hUTUxFbGVtZW50L2F0dHItZGlyLWF1dG8tY2hhbmdlLWNoaWxkLW5vZGUtZXhwZWN0
ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2RvbS9IVE1MRWxlbWVudC9hdHRyLWRpci1h
dXRvLWNoYW5nZS1jaGlsZC1ub2RlLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGZhc3QvZG9tL0hU
TUxFbGVtZW50L2F0dHItZGlyLWF1dG8tY2hhbmdlLXRleHQtZXhwZWN0ZWQudHh0OiBBZGRlZC4K
KyAgICAgICAgKiBmYXN0L2RvbS9IVE1MRWxlbWVudC9hdHRyLWRpci1hdXRvLWNoYW5nZS10ZXh0
Lmh0bWw6IEFkZGVkLgorICAgICAgICAqIGZhc3QvZG9tL0hUTUxFbGVtZW50L2F0dHItZGlyLWF1
dG8tZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2RvbS9IVE1MRWxlbWVudC9h
dHRyLWRpci1hdXRvLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGZhc3QvZG9tL0hUTUxFbGVtZW50
L2F0dHItZGlyLXZhbHVlLWNoYW5nZS1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGZh
c3QvZG9tL0hUTUxFbGVtZW50L2F0dHItZGlyLXZhbHVlLWNoYW5nZS5odG1sOiBBZGRlZC4KKwog
MjAxMS0wMi0wMiAgRGltaXRyaSBHbGF6a292ICA8ZGdsYXprb3ZAY2hyb21pdW0ub3JnPgogCiAg
ICAgICAgIEFkZGVkIEdQVSBmYWlscyBmcm9tIGJvdHMuCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0
L2RvbS9IVE1MRWxlbWVudC9hdHRyLWRpci1hdXRvLWNoYW5nZS1jaGlsZC1ub2RlLWV4cGVjdGVk
LnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2RvbS9IVE1MRWxlbWVudC9hdHRy
LWRpci1hdXRvLWNoYW5nZS1jaGlsZC1ub2RlLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKKysr
IExheW91dFRlc3RzL2Zhc3QvZG9tL0hUTUxFbGVtZW50L2F0dHItZGlyLWF1dG8tY2hhbmdlLWNo
aWxkLW5vZGUtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDE5IEBACitUZXN0
IHRoYXQgd2hlbiBhbiBlbGVtZW50IGhhcyBkaXIgYXR0cmlidXRlIHdpdGggdmFsdWUgImF1dG8i
LCBpZiBpdHMgZmlyc3QgY2hpbGQgY2hhbmdlcywgdGhlIGVsZW1lbnQncyBkaXJlY3Rpb25hbGl0
eSBpcyByZS1ldmFsdWF0ZWQuCisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBv
ZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KKworCisKKwor
CisKK1BBU1MgZG9jdW1lbnQuZGVmYXVsdFZpZXcuZ2V0Q29tcHV0ZWRTdHlsZShlbCwgbnVsbCku
Z2V0UHJvcGVydHlWYWx1ZSgnYm9yZGVyLXJpZ2h0LWNvbG9yJykgaXMgJ3JnYigyNTUsIDAsIDAp
JworUEFTUyBkb2N1bWVudC5kZWZhdWx0Vmlldy5nZXRDb21wdXRlZFN0eWxlKGVsLCBudWxsKS5n
ZXRQcm9wZXJ0eVZhbHVlKCdib3JkZXItcmlnaHQtY29sb3InKSBpcyAncmdiKDAsIDEyOCwgMCkn
CisKK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQorCisK
KworCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2RvbS9IVE1MRWxlbWVudC9hdHRyLWRpci1hdXRv
LWNoYW5nZS1jaGlsZC1ub2RlLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9k
b20vSFRNTEVsZW1lbnQvYXR0ci1kaXItYXV0by1jaGFuZ2UtY2hpbGQtbm9kZS5odG1sCShyZXZp
c2lvbiAwKQorKysgTGF5b3V0VGVzdHMvZmFzdC9kb20vSFRNTEVsZW1lbnQvYXR0ci1kaXItYXV0
by1jaGFuZ2UtY2hpbGQtbm9kZS5odG1sCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDM3IEBACis8
IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8bWV0YSBodHRwLWVxdWl2PSJDb250ZW50
LVR5cGUiIGNvbnRlbnQ9InRleHQvaHRtbDsgY2hhcnNldD11dGYtOCI+Cis8bGluayByZWw9InN0
eWxlc2hlZXQiIGhyZWY9Ii4uLy4uL2pzL3Jlc291cmNlcy9qcy10ZXN0LXN0eWxlLmNzcyI+Cis8
c2NyaXB0IHNyYz0iLi4vLi4vanMvcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4K
KzxzdHlsZT4KKy50ZXN0RGl2IHstd2Via2l0LWJvcmRlci1zdGFydDogNXB4IHNvbGlkIGdyZWVu
OyAtd2Via2l0LWJvcmRlci1lbmQ6IDVweCBzb2xpZCByZWQ7IH0KKzwvc3R5bGU+Cis8L2hlYWQ+
Cis8Ym9keT4KKzxwIGlkPSJkZXNjcmlwdGlvbiI+PC9wPgorPGRpdiBpZD0iY29uc29sZSI+PC9w
PgorPGRpdiBpZD0icmVzdWx0Ij48L2Rpdj4KKworPGRpdiBpZD0idGVzdCIgZGlyPSJhdXRvIiBj
bGFzcz0idGVzdERpdiI+PC9kaXY+Cis8c2NyaXB0PgorCitkZXNjcmlwdGlvbignVGVzdCB0aGF0
IHdoZW4gYW4gZWxlbWVudCBoYXMgZGlyIGF0dHJpYnV0ZSB3aXRoIHZhbHVlICJhdXRvIiwgaWYg
aXRzIGZpcnN0IGNoaWxkIGNoYW5nZXMsIHRoZSBlbGVtZW50XCdzIGRpcmVjdGlvbmFsaXR5IGlz
IHJlLWV2YWx1YXRlZC4nKTsKKwordmFyIGVsID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInRl
c3QiKTsKK3ZhciBjaGlsZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpOworY2hpbGQu
aW5uZXJIVE1MPSJ0ZXN0IjsKK2VsLmFwcGVuZENoaWxkKGNoaWxkKTsKK3Nob3VsZEJlKCJkb2N1
bWVudC5kZWZhdWx0Vmlldy5nZXRDb21wdXRlZFN0eWxlKGVsLCBudWxsKS5nZXRQcm9wZXJ0eVZh
bHVlKCdib3JkZXItcmlnaHQtY29sb3InKSIsICIncmdiKDI1NSwgMCwgMCknIik7CisKK3ZhciBj
aGlsZDIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKTsKK2NoaWxkMi5pbm5lckhUTUw9
Itee16fXldeoINeU16nXnSDXoteR16jXmdeqIjsKK2VsLmluc2VydEJlZm9yZShjaGlsZDIsIGNo
aWxkKTsKK3Nob3VsZEJlKCJkb2N1bWVudC5kZWZhdWx0Vmlldy5nZXRDb21wdXRlZFN0eWxlKGVs
LCBudWxsKS5nZXRQcm9wZXJ0eVZhbHVlKCdib3JkZXItcmlnaHQtY29sb3InKSIsICIncmdiKDAs
IDEyOCwgMCknIik7CitlbC5zdHlsZS5kaXNwbGF5ID0gIm5vbmUiOworCit3aW5kb3cuc3VjY2Vz
c2Z1bGx5UGFyc2VkID0gdHJ1ZTsKKzwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uL2pzL3Jl
c291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpJbmRl
eDogTGF5b3V0VGVzdHMvZmFzdC9kb20vSFRNTEVsZW1lbnQvYXR0ci1kaXItYXV0by1jaGFuZ2Ut
dGV4dC1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9kb20vSFRN
TEVsZW1lbnQvYXR0ci1kaXItYXV0by1jaGFuZ2UtdGV4dC1leHBlY3RlZC50eHQJKHJldmlzaW9u
IDApCisrKyBMYXlvdXRUZXN0cy9mYXN0L2RvbS9IVE1MRWxlbWVudC9hdHRyLWRpci1hdXRvLWNo
YW5nZS10ZXh0LWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwxOSBAQAorVGVz
dCB0aGF0IHdoZW4gYW4gZWxlbWVudCBoYXMgZGlyIGF0dHJpYnV0ZSB3aXRoIHZhbHVlICJhdXRv
IiwgaWYgaXRzIGZpcnN0IGNoaWxkIHRleHQgbm9kZSBjaGFuZ2VzLCB0aGUgZWxlbWVudCdzIGRp
cmVjdGlvbmFsaXR5IGlzIHJlLWV2YWx1YXRlZC4KKworT24gc3VjY2VzcywgeW91IHdpbGwgc2Vl
IGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUi
LgorCisKKworCisKKworUEFTUyBkb2N1bWVudC5kZWZhdWx0Vmlldy5nZXRDb21wdXRlZFN0eWxl
KGVsLCBudWxsKS5nZXRQcm9wZXJ0eVZhbHVlKCdib3JkZXItcmlnaHQtY29sb3InKSBpcyAncmdi
KDI1NSwgMCwgMCknCitQQVNTIGRvY3VtZW50LmRlZmF1bHRWaWV3LmdldENvbXB1dGVkU3R5bGUo
ZWwsIG51bGwpLmdldFByb3BlcnR5VmFsdWUoJ2JvcmRlci1yaWdodC1jb2xvcicpIGlzICdyZ2Io
MCwgMTI4LCAwKScKKworUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENP
TVBMRVRFCisKKworCisKSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZG9tL0hUTUxFbGVtZW50L2F0
dHItZGlyLWF1dG8tY2hhbmdlLXRleHQuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9m
YXN0L2RvbS9IVE1MRWxlbWVudC9hdHRyLWRpci1hdXRvLWNoYW5nZS10ZXh0Lmh0bWwJKHJldmlz
aW9uIDApCisrKyBMYXlvdXRUZXN0cy9mYXN0L2RvbS9IVE1MRWxlbWVudC9hdHRyLWRpci1hdXRv
LWNoYW5nZS10ZXh0Lmh0bWwJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMzAgQEAKKzwhRE9DVFlQ
RSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKzxtZXRhIGh0dHAtZXF1aXY9IkNvbnRlbnQtVHlwZSIg
Y29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PXV0Zi04Ij4KKzxsaW5rIHJlbD0ic3R5bGVzaGVl
dCIgaHJlZj0iLi4vLi4vanMvcmVzb3VyY2VzL2pzLXRlc3Qtc3R5bGUuY3NzIj4KKzxzY3JpcHQg
c3JjPSIuLi8uLi9qcy9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPHN0eWxl
PgorLnRlc3REaXYgey13ZWJraXQtYm9yZGVyLXN0YXJ0OiA1cHggc29saWQgZ3JlZW47IC13ZWJr
aXQtYm9yZGVyLWVuZDogNXB4IHNvbGlkIHJlZDsgfQorPC9zdHlsZT4KKzwvaGVhZD4KKzxib2R5
PgorPHAgaWQ9ImRlc2NyaXB0aW9uIj48L3A+Cis8ZGl2IGlkPSJjb25zb2xlIj48L3A+Cis8ZGl2
IGlkPSJyZXN1bHQiPjwvZGl2PgorCis8ZGl2IGlkPSJ0ZXN0IiBkaXI9ImF1dG8iIGNsYXNzPSJ0
ZXN0RGl2Ij5UZXN0IHRlc3QgdGVzdDwvZGl2PgorPHNjcmlwdD4KKworZGVzY3JpcHRpb24oJ1Rl
c3QgdGhhdCB3aGVuIGFuIGVsZW1lbnQgaGFzIGRpciBhdHRyaWJ1dGUgd2l0aCB2YWx1ZSAiYXV0
byIsIGlmIGl0cyBmaXJzdCBjaGlsZCB0ZXh0IG5vZGUgY2hhbmdlcywgdGhlIGVsZW1lbnRcJ3Mg
ZGlyZWN0aW9uYWxpdHkgaXMgcmUtZXZhbHVhdGVkLicpOworCit2YXIgZWwgPSBkb2N1bWVudC5n
ZXRFbGVtZW50QnlJZCgidGVzdCIpOworc2hvdWxkQmUoImRvY3VtZW50LmRlZmF1bHRWaWV3Lmdl
dENvbXB1dGVkU3R5bGUoZWwsIG51bGwpLmdldFByb3BlcnR5VmFsdWUoJ2JvcmRlci1yaWdodC1j
b2xvcicpIiwgIidyZ2IoMjU1LCAwLCAwKSciKTsKK2VsLmlubmVySFRNTCA9ICLXnten15XXqCDX
lNep150g16LXkdeo15nXqiI7CitzaG91bGRCZSgiZG9jdW1lbnQuZGVmYXVsdFZpZXcuZ2V0Q29t
cHV0ZWRTdHlsZShlbCwgbnVsbCkuZ2V0UHJvcGVydHlWYWx1ZSgnYm9yZGVyLXJpZ2h0LWNvbG9y
JykiLCAiJ3JnYigwLCAxMjgsIDApJyIpOworZWwuc3R5bGUuZGlzcGxheSA9ICJub25lIjsKK3dp
bmRvdy5zdWNjZXNzZnVsbHlQYXJzZWQgPSB0cnVlOworPC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0i
Li4vLi4vanMvcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+Cis8L2JvZHk+Cis8
L2h0bWw+CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2RvbS9IVE1MRWxlbWVudC9hdHRyLWRpci1h
dXRvLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2RvbS9IVE1M
RWxlbWVudC9hdHRyLWRpci1hdXRvLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKKysrIExheW91
dFRlc3RzL2Zhc3QvZG9tL0hUTUxFbGVtZW50L2F0dHItZGlyLWF1dG8tZXhwZWN0ZWQudHh0CShy
ZXZpc2lvbiAwKQpAQCAtMCwwICsxLDE5IEBACitUZXN0IHRoYXQgd2hlbiBhbiBlbGVtZW50IGhh
cyBhIGRpciBhdHRyaWJ1dGUgd2l0aCB2YWx1ZSAiYXV0byIsIHRoZSBkaXJlY3Rpb25hbGl0eSBv
ZiB0aGUgZWxlbWVudCBpcyBkZXRlcm1pbmVkIGJ5IHRoZSBmaXJzdCBjaGlsZCB0ZXh0IG5vZGUg
b2YgdGhhdCBlbGVtZW50LgorCitPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2Yg
IlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCisKKworCisKKwor
UEFTUyBkb2N1bWVudC5kZWZhdWx0Vmlldy5nZXRDb21wdXRlZFN0eWxlKGVsLCBudWxsKS5nZXRQ
cm9wZXJ0eVZhbHVlKCdib3JkZXItcmlnaHQtY29sb3InKSBpcyAncmdiKDI1NSwgMCwgMCknCitQ
QVNTIGRvY3VtZW50LmRlZmF1bHRWaWV3LmdldENvbXB1dGVkU3R5bGUoZWwsIG51bGwpLmdldFBy
b3BlcnR5VmFsdWUoJ2JvcmRlci1yaWdodC1jb2xvcicpIGlzICdyZ2IoMCwgMTI4LCAwKScKK1BB
U1MgZG9jdW1lbnQuZGVmYXVsdFZpZXcuZ2V0Q29tcHV0ZWRTdHlsZShlbCwgbnVsbCkuZ2V0UHJv
cGVydHlWYWx1ZSgnYm9yZGVyLXJpZ2h0LWNvbG9yJykgaXMgJ3JnYigwLCAxMjgsIDApJworCitQ
QVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKworCisKKwpJ
bmRleDogTGF5b3V0VGVzdHMvZmFzdC9kb20vSFRNTEVsZW1lbnQvYXR0ci1kaXItYXV0by5odG1s
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZG9tL0hUTUxFbGVtZW50L2F0dHItZGly
LWF1dG8uaHRtbAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2Zhc3QvZG9tL0hUTUxFbGVt
ZW50L2F0dHItZGlyLWF1dG8uaHRtbAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwzOCBAQAorPCFE
T0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorPG1ldGEgaHR0cC1lcXVpdj0iQ29udGVudC1U
eXBlIiBjb250ZW50PSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9dXRmLTgiPgorPGxpbmsgcmVsPSJzdHls
ZXNoZWV0IiBocmVmPSIuLi8uLi9qcy9yZXNvdXJjZXMvanMtdGVzdC1zdHlsZS5jc3MiPgorPHNj
cmlwdCBzcmM9Ii4uLy4uL2pzL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8
c3R5bGU+CisudGVzdERpdiB7LXdlYmtpdC1ib3JkZXItc3RhcnQ6IDVweCBzb2xpZCBncmVlbjsg
LXdlYmtpdC1ib3JkZXItZW5kOiA1cHggc29saWQgcmVkOyB9Cis8L3N0eWxlPgorPC9oZWFkPgor
PGJvZHk+Cis8cCBpZD0iZGVzY3JpcHRpb24iPjwvcD4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwvcD4K
KzxkaXYgaWQ9InJlc3VsdCI+PC9kaXY+Cis8ZGl2IGlkPSJwYXJlbnREaXYiPgorVGVzdCB0aGF0
IHRoZSBkaXJlY3Rpb24gb2YgZW5nbGlzaCB0ZXh0IGlzIGxlZnQtdG8tcmlnaHQuCis8ZGl2IGlk
PSJsdHIiIGRpcj0iYXV0byIgY2xhc3M9InRlc3REaXYiPlRlc3QgdGVzdCB0ZXN0PC9kaXY+CitU
ZXN0IHRoYXQgdGhlIGRpcmVjdGlvbiBvZiBoZWJyZXcgdGV4dCBpcyByaWdodC10by1sZWZ0Lgor
PGRpdiBpZD0icnRsMSIgZGlyPSJhdXRvIiBjbGFzcz0idGVzdERpdiI+157Xp9eV16gg15TXqded
INei15HXqNeZ16o8L2Rpdj4KK1Rlc3QgdGhhdCAnPycgZG9lcyBub3QgYWZmZWN0IHRoZSBkaXJl
Y3Rpb25hbGl0eS4KKzxkaXYgaWQ9InJ0bDIiIGRpcj0iYXV0byIgY2xhc3M9InRlc3REaXYiPjxz
cGFuPj8/PC9zcGFuPtee16fXldeoINeU16nXnSDXoteR16jXmdeqPHNwYW4+Pz88L3NwYW4+PC9k
aXY+Cis8L2Rpdj4KKzxzY3JpcHQ+CisKK2Rlc2NyaXB0aW9uKCdUZXN0IHRoYXQgd2hlbiBhbiBl
bGVtZW50IGhhcyBhIGRpciBhdHRyaWJ1dGUgd2l0aCB2YWx1ZSAiYXV0byIsIHRoZSBkaXJlY3Rp
b25hbGl0eSBvZiB0aGUgZWxlbWVudCBpcyBkZXRlcm1pbmVkIGJ5IHRoZSBmaXJzdCBjaGlsZCB0
ZXh0IG5vZGUgb2YgdGhhdCBlbGVtZW50LicpOworCit2YXIgZWwgPSBkb2N1bWVudC5nZXRFbGVt
ZW50QnlJZCgibHRyIik7CitzaG91bGRCZSgiZG9jdW1lbnQuZGVmYXVsdFZpZXcuZ2V0Q29tcHV0
ZWRTdHlsZShlbCwgbnVsbCkuZ2V0UHJvcGVydHlWYWx1ZSgnYm9yZGVyLXJpZ2h0LWNvbG9yJyki
LCAiJ3JnYigyNTUsIDAsIDApJyIpOworZWwgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgicnRs
MSIpOworc2hvdWxkQmUoImRvY3VtZW50LmRlZmF1bHRWaWV3LmdldENvbXB1dGVkU3R5bGUoZWws
IG51bGwpLmdldFByb3BlcnR5VmFsdWUoJ2JvcmRlci1yaWdodC1jb2xvcicpIiwgIidyZ2IoMCwg
MTI4LCAwKSciKTsKK2VsID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInJ0bDIiKTsKK3Nob3Vs
ZEJlKCJkb2N1bWVudC5kZWZhdWx0Vmlldy5nZXRDb21wdXRlZFN0eWxlKGVsLCBudWxsKS5nZXRQ
cm9wZXJ0eVZhbHVlKCdib3JkZXItcmlnaHQtY29sb3InKSIsICIncmdiKDAsIDEyOCwgMCknIik7
Citkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgicGFyZW50RGl2Iikuc3R5bGUuZGlzcGxheSA9ICJu
b25lIjsKK3dpbmRvdy5zdWNjZXNzZnVsbHlQYXJzZWQgPSB0cnVlOworPC9zY3JpcHQ+Cis8c2Ny
aXB0IHNyYz0iLi4vLi4vanMvcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+Cis8
L2JvZHk+Cis8L2h0bWw+CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2RvbS9IVE1MRWxlbWVudC9h
dHRyLWRpci12YWx1ZS1jaGFuZ2UtZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRl
c3RzL2Zhc3QvZG9tL0hUTUxFbGVtZW50L2F0dHItZGlyLXZhbHVlLWNoYW5nZS1leHBlY3RlZC50
eHQJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9mYXN0L2RvbS9IVE1MRWxlbWVudC9hdHRy
LWRpci12YWx1ZS1jaGFuZ2UtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDI0
IEBACitUZXN0IHRoYXQgd2hlbiBhbiBlbGVtZW50J3MgZGlyIGF0dHJpYnV0ZSBjaGFuZ2VzLCB0
aGUgZWxlbWVudCdzIGRpcmVjdGlvbmFsaXR5IGlzIHJlLWV2YWx1YXRlZC4KKworT24gc3VjY2Vz
cywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkg
IlRFU1QgQ09NUExFVEUiLgorCisKKworCisKKworUEFTUyBkb2N1bWVudC5kZWZhdWx0Vmlldy5n
ZXRDb21wdXRlZFN0eWxlKGVsLCBudWxsKS5nZXRQcm9wZXJ0eVZhbHVlKCdib3JkZXItcmlnaHQt
Y29sb3InKSBpcyAncmdiKDAsIDEyOCwgMCknCitQQVNTIGRvY3VtZW50LmRlZmF1bHRWaWV3Lmdl
dENvbXB1dGVkU3R5bGUoY2hpbGQyLCBudWxsKS5nZXRQcm9wZXJ0eVZhbHVlKCdib3JkZXItcmln
aHQtY29sb3InKSBpcyAncmdiKDAsIDEyOCwgMCknCitQQVNTIGRvY3VtZW50LmRlZmF1bHRWaWV3
LmdldENvbXB1dGVkU3R5bGUoZWwsIG51bGwpLmdldFByb3BlcnR5VmFsdWUoJ2JvcmRlci1yaWdo
dC1jb2xvcicpIGlzICdyZ2IoMjU1LCAwLCAwKScKK1BBU1MgZG9jdW1lbnQuZGVmYXVsdFZpZXcu
Z2V0Q29tcHV0ZWRTdHlsZShjaGlsZDIsIG51bGwpLmdldFByb3BlcnR5VmFsdWUoJ2JvcmRlci1y
aWdodC1jb2xvcicpIGlzICdyZ2IoMCwgMTI4LCAwKScKK1BBU1MgZG9jdW1lbnQuZGVmYXVsdFZp
ZXcuZ2V0Q29tcHV0ZWRTdHlsZShjaGlsZDIsIG51bGwpLmdldFByb3BlcnR5VmFsdWUoJ2JvcmRl
ci1yaWdodC1jb2xvcicpIGlzICdyZ2IoMjU1LCAwLCAwKScKK1BBU1MgZG9jdW1lbnQuZGVmYXVs
dFZpZXcuZ2V0Q29tcHV0ZWRTdHlsZShlbCwgbnVsbCkuZ2V0UHJvcGVydHlWYWx1ZSgnYm9yZGVy
LXJpZ2h0LWNvbG9yJykgaXMgJ3JnYigwLCAxMjgsIDApJworUEFTUyBkb2N1bWVudC5kZWZhdWx0
Vmlldy5nZXRDb21wdXRlZFN0eWxlKGNoaWxkMiwgbnVsbCkuZ2V0UHJvcGVydHlWYWx1ZSgnYm9y
ZGVyLXJpZ2h0LWNvbG9yJykgaXMgJ3JnYigyNTUsIDAsIDApJworCitQQVNTIHN1Y2Nlc3NmdWxs
eVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKworCisKKwpJbmRleDogTGF5b3V0VGVz
dHMvZmFzdC9kb20vSFRNTEVsZW1lbnQvYXR0ci1kaXItdmFsdWUtY2hhbmdlLmh0bWwKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9kb20vSFRNTEVsZW1lbnQvYXR0ci1kaXItdmFsdWUt
Y2hhbmdlLmh0bWwJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9mYXN0L2RvbS9IVE1MRWxl
bWVudC9hdHRyLWRpci12YWx1ZS1jaGFuZ2UuaHRtbAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw1
MCBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorPG1ldGEgaHR0cC1lcXVpdj0i
Q29udGVudC1UeXBlIiBjb250ZW50PSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9dXRmLTgiPgorPGxpbmsg
cmVsPSJzdHlsZXNoZWV0IiBocmVmPSIuLi8uLi9qcy9yZXNvdXJjZXMvanMtdGVzdC1zdHlsZS5j
c3MiPgorPHNjcmlwdCBzcmM9Ii4uLy4uL2pzL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9z
Y3JpcHQ+Cis8c3R5bGU+CisudGVzdERpdiB7LXdlYmtpdC1ib3JkZXItc3RhcnQ6IDVweCBzb2xp
ZCBncmVlbjsgLXdlYmtpdC1ib3JkZXItZW5kOiA1cHggc29saWQgcmVkOyB9Cis8L3N0eWxlPgor
PC9oZWFkPgorPGJvZHk+Cis8cCBpZD0iZGVzY3JpcHRpb24iPjwvcD4KKzxkaXYgaWQ9ImNvbnNv
bGUiPjwvcD4KKzxkaXYgaWQ9InJlc3VsdCI+PC9kaXY+CisKKzxkaXYgaWQ9InRlc3QiIGRpcj0i
YXV0byIgY2xhc3M9InRlc3REaXYiPjwvZGl2PgorPHNjcmlwdD4KKworZGVzY3JpcHRpb24oJ1Rl
c3QgdGhhdCB3aGVuIGFuIGVsZW1lbnRcJ3MgZGlyIGF0dHJpYnV0ZSBjaGFuZ2VzLCB0aGUgZWxl
bWVudFwncyBkaXJlY3Rpb25hbGl0eSBpcyByZS1ldmFsdWF0ZWQuJyk7CisKK3ZhciBlbCA9IGRv
Y3VtZW50LmdldEVsZW1lbnRCeUlkKCJ0ZXN0Iik7Cit2YXIgY2hpbGQgPSBkb2N1bWVudC5jcmVh
dGVFbGVtZW50KCJkaXYiKTsKK2NoaWxkLmlubmVySFRNTD0i157Xp9eV16gg15TXqdedINei15HX
qNeZ16oiOworZWwuYXBwZW5kQ2hpbGQoY2hpbGQpOwordmFyIGNoaWxkMiA9IGRvY3VtZW50LmNy
ZWF0ZUVsZW1lbnQoImRpdiIpOworY2hpbGQyLmlubmVySFRNTCA9ICLXnten15XXqCDXlNep150g
16LXkdeo15nXqiI7CitjaGlsZDIuc2V0QXR0cmlidXRlKCJkaXIiLCAiYXV0byIpOworY2hpbGQy
LnNldEF0dHJpYnV0ZSgiY2xhc3MiLCAidGVzdERpdiIpOworY2hpbGQuYXBwZW5kQ2hpbGQoY2hp
bGQyKTsKK3Nob3VsZEJlKCJkb2N1bWVudC5kZWZhdWx0Vmlldy5nZXRDb21wdXRlZFN0eWxlKGVs
LCBudWxsKS5nZXRQcm9wZXJ0eVZhbHVlKCdib3JkZXItcmlnaHQtY29sb3InKSIsICIncmdiKDAs
IDEyOCwgMCknIik7CitzaG91bGRCZSgiZG9jdW1lbnQuZGVmYXVsdFZpZXcuZ2V0Q29tcHV0ZWRT
dHlsZShjaGlsZDIsIG51bGwpLmdldFByb3BlcnR5VmFsdWUoJ2JvcmRlci1yaWdodC1jb2xvcicp
IiwgIidyZ2IoMCwgMTI4LCAwKSciKTsKKworZWwuc2V0QXR0cmlidXRlKCJkaXIiLCAibHRyIik7
CitzaG91bGRCZSgiZG9jdW1lbnQuZGVmYXVsdFZpZXcuZ2V0Q29tcHV0ZWRTdHlsZShlbCwgbnVs
bCkuZ2V0UHJvcGVydHlWYWx1ZSgnYm9yZGVyLXJpZ2h0LWNvbG9yJykiLCAiJ3JnYigyNTUsIDAs
IDApJyIpOworc2hvdWxkQmUoImRvY3VtZW50LmRlZmF1bHRWaWV3LmdldENvbXB1dGVkU3R5bGUo
Y2hpbGQyLCBudWxsKS5nZXRQcm9wZXJ0eVZhbHVlKCdib3JkZXItcmlnaHQtY29sb3InKSIsICIn
cmdiKDAsIDEyOCwgMCknIik7CisKK2NoaWxkMi5pbm5lckhUTUwgPSAiVGVzdCI7CitzaG91bGRC
ZSgiZG9jdW1lbnQuZGVmYXVsdFZpZXcuZ2V0Q29tcHV0ZWRTdHlsZShjaGlsZDIsIG51bGwpLmdl
dFByb3BlcnR5VmFsdWUoJ2JvcmRlci1yaWdodC1jb2xvcicpIiwgIidyZ2IoMjU1LCAwLCAwKSci
KTsKKworZWwuc2V0QXR0cmlidXRlKCJkaXIiLCAiYXV0byIpOworc2hvdWxkQmUoImRvY3VtZW50
LmRlZmF1bHRWaWV3LmdldENvbXB1dGVkU3R5bGUoZWwsIG51bGwpLmdldFByb3BlcnR5VmFsdWUo
J2JvcmRlci1yaWdodC1jb2xvcicpIiwgIidyZ2IoMCwgMTI4LCAwKSciKTsKK3Nob3VsZEJlKCJk
b2N1bWVudC5kZWZhdWx0Vmlldy5nZXRDb21wdXRlZFN0eWxlKGNoaWxkMiwgbnVsbCkuZ2V0UHJv
cGVydHlWYWx1ZSgnYm9yZGVyLXJpZ2h0LWNvbG9yJykiLCAiJ3JnYigyNTUsIDAsIDApJyIpOwor
CitlbC5zdHlsZS5kaXNwbGF5ID0gIm5vbmUiOworCit3aW5kb3cuc3VjY2Vzc2Z1bGx5UGFyc2Vk
ID0gdHJ1ZTsKKzwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uL2pzL3Jlc291cmNlcy9qcy10
ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>80968</attachid>
            <date>2011-02-02 14:15:39 -0800</date>
            <delta_ts>2011-02-05 15:04:58 -0800</delta_ts>
            <desc>Patch.</desc>
            <filename>50916.patch</filename>
            <type>text/plain</type>
            <size>28256</size>
            <attacher name="Yael">yael</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gNzczOTYpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTggQEAK
KzIwMTEtMDItMDIgIFlhZWwgQWhhcm9uICA8eWFlbC5haGFyb25Abm9raWEuY29tPgorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZCBzdXBwb3J0IGZv
ciBkaXI9YXV0bworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9NTA5MTYKKworICAgICAgICAqIEphdmFTY3JpcHRDb3JlLmV4cDoKKyAgICAgICAgKiBKYXZh
U2NyaXB0Q29yZS5vcmRlcjoKKyAgICAgICAgKiB3dGYvdGV4dC9TdHJpbmdJbXBsLmNwcDoKKyAg
ICAgICAgKFdURjo6U3RyaW5nSW1wbDo6ZGVmYXVsdFdyaXRpbmdEaXJlY3Rpb24pOgorICAgICAg
ICAqIHd0Zi90ZXh0L1N0cmluZ0ltcGwuaDoKKyAgICAgICAgKiB3dGYvdGV4dC9XVEZTdHJpbmcu
aDoKKyAgICAgICAgKFdURjo6U3RyaW5nOjpkZWZhdWx0V3JpdGluZ0RpcmVjdGlvbik6CisKIDIw
MTEtMDItMDIgIFN0ZXZlIExhY2V5ICA8c2psQGNocm9taXVtLm9yZz4KIAogICAgICAgICBSZXZp
ZXdlZCBieSBFcmljIENhcmxzb24uCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNj
cmlwdENvcmUuZXhwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2Ny
aXB0Q29yZS5leHAJKHJldmlzaW9uIDc3MTgwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL0ph
dmFTY3JpcHRDb3JlLmV4cAkod29ya2luZyBjb3B5KQpAQCAtMzM0LDcgKzMzNCw3IEBAIF9fWk4z
V1RGMTBTdHJpbmdJbXBsMThzaW1wbGlmeVdoaXRlU3BhY2UKIF9fWk4zV1RGMTBTdHJpbmdJbXBs
MTljaGFyYWN0ZXJTdGFydGluZ0F0RWoKIF9fWk4zV1RGMTBTdHJpbmdJbXBsMTljcmVhdGVVbmlu
aXRpYWxpemVkRWpSUHQKIF9fWk4zV1RGMTBTdHJpbmdJbXBsMjJjb250YWluc09ubHlXaGl0ZXNw
YWNlRXYKLV9fWk4zV1RGMTBTdHJpbmdJbXBsMjNkZWZhdWx0V3JpdGluZ0RpcmVjdGlvbkV2Citf
X1pOM1dURjEwU3RyaW5nSW1wbDIzZGVmYXVsdFdyaXRpbmdEaXJlY3Rpb25FUGIKIF9fWk4zV1RG
MTBTdHJpbmdJbXBsMjNyZXZlcnNlRmluZElnbm9yaW5nQ2FzZUVQUzBfagogX19aTjNXVEYxMFN0
cmluZ0ltcGwzN2NyZWF0ZVN0cmlwcGluZ051bGxDaGFyYWN0ZXJzU2xvd0Nhc2VFUEt0agogX19a
TjNXVEYxMFN0cmluZ0ltcGw0ZmluZEVQRmJ0RWoKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9KYXZhU2NyaXB0Q29yZS5vcmRlcgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvSmF2YVNjcmlwdENvcmUub3JkZXIJKHJldmlzaW9uIDc3MTgwKQorKysgU291cmNlL0phdmFT
Y3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLm9yZGVyCSh3b3JraW5nIGNvcHkpCkBAIC0xNDI3LDcg
KzE0MjcsNyBAQCBfX1pON1dlYkNvcmUxMFN0cmluZ0ltcGwxMXJldmVyc2VGaW5kRXRpCiBfX1pO
M1dURjIzd2FpdEZvclRocmVhZENvbXBsZXRpb25FalBQdgogX19aTjNXVEYxNEZhc3RNYWxsb2Na
b25lMTBzdGF0aXN0aWNzRVAxNF9tYWxsb2Nfem9uZV90UDE5bWFsbG9jX3N0YXRpc3RpY3NfdAog
X19aTks3V2ViQ29yZTZTdHJpbmcxOHNpbXBsaWZ5V2hpdGVTcGFjZUV2Ci1fX1pON1dlYkNvcmUx
MFN0cmluZ0ltcGwyM2RlZmF1bHRXcml0aW5nRGlyZWN0aW9uRXYKK19fWk4zV1RGMTBTdHJpbmdJ
bXBsMjNkZWZhdWx0V3JpdGluZ0RpcmVjdGlvbkVQYgogX19aTjNKU0NMMjBkYXRlUHJvdG9GdW5j
U2V0VGltZUVQTlNfOUV4ZWNTdGF0ZUVQTlNfOEpTT2JqZWN0RU5TXzdKU1ZhbHVlRVJLTlNfN0Fy
Z0xpc3RFCiBfX1pOM0pTQ0wyMWRhdGVQcm90b0Z1bmNHZXRNb250aEVQTlNfOUV4ZWNTdGF0ZUVQ
TlNfOEpTT2JqZWN0RU5TXzdKU1ZhbHVlRVJLTlNfN0FyZ0xpc3RFCiBfX1pOSzNKU0MxMkRhdGVJ
bnN0YW5jZTI2Y2FsY3VsYXRlR3JlZ29yaWFuRGF0ZVRpbWVFUE5TXzlFeGVjU3RhdGVFCkluZGV4
OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvd3RmL3RleHQvU3RyaW5nSW1wbC5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3d0Zi90ZXh0L1N0cmluZ0ltcGwuY3BwCShyZXZp
c2lvbiA3NzE4MCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS93dGYvdGV4dC9TdHJpbmdJbXBs
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTAwNSwxNSArMTAwNSwyMyBAQCBib29sIGVxdWFsSWdu
b3JpbmdOdWxsaXR5KFN0cmluZ0ltcGwqIGEsCiAgICAgcmV0dXJuIGZhbHNlOwogfQogCi1XVEY6
OlVuaWNvZGU6OkRpcmVjdGlvbiBTdHJpbmdJbXBsOjpkZWZhdWx0V3JpdGluZ0RpcmVjdGlvbigp
CitXVEY6OlVuaWNvZGU6OkRpcmVjdGlvbiBTdHJpbmdJbXBsOjpkZWZhdWx0V3JpdGluZ0RpcmVj
dGlvbihib29sKiBoYXNTdHJvbmdEaXJlY3Rpb25hbGl0eSkKIHsKICAgICBmb3IgKHVuc2lnbmVk
IGkgPSAwOyBpIDwgbV9sZW5ndGg7ICsraSkgewogICAgICAgICBXVEY6OlVuaWNvZGU6OkRpcmVj
dGlvbiBjaGFyRGlyZWN0aW9uID0gV1RGOjpVbmljb2RlOjpkaXJlY3Rpb24obV9kYXRhW2ldKTsK
LSAgICAgICAgaWYgKGNoYXJEaXJlY3Rpb24gPT0gV1RGOjpVbmljb2RlOjpMZWZ0VG9SaWdodCkK
KyAgICAgICAgaWYgKGNoYXJEaXJlY3Rpb24gPT0gV1RGOjpVbmljb2RlOjpMZWZ0VG9SaWdodCkg
eworICAgICAgICAgICAgaWYgKGhhc1N0cm9uZ0RpcmVjdGlvbmFsaXR5KQorICAgICAgICAgICAg
ICAgICpoYXNTdHJvbmdEaXJlY3Rpb25hbGl0eSA9IHRydWU7CiAgICAgICAgICAgICByZXR1cm4g
V1RGOjpVbmljb2RlOjpMZWZ0VG9SaWdodDsKLSAgICAgICAgaWYgKGNoYXJEaXJlY3Rpb24gPT0g
V1RGOjpVbmljb2RlOjpSaWdodFRvTGVmdCB8fCBjaGFyRGlyZWN0aW9uID09IFdURjo6VW5pY29k
ZTo6UmlnaHRUb0xlZnRBcmFiaWMpCisgICAgICAgIH0KKyAgICAgICAgaWYgKGNoYXJEaXJlY3Rp
b24gPT0gV1RGOjpVbmljb2RlOjpSaWdodFRvTGVmdCB8fCBjaGFyRGlyZWN0aW9uID09IFdURjo6
VW5pY29kZTo6UmlnaHRUb0xlZnRBcmFiaWMpIHsKKyAgICAgICAgICAgIGlmIChoYXNTdHJvbmdE
aXJlY3Rpb25hbGl0eSkKKyAgICAgICAgICAgICAgICAqaGFzU3Ryb25nRGlyZWN0aW9uYWxpdHkg
PSB0cnVlOwogICAgICAgICAgICAgcmV0dXJuIFdURjo6VW5pY29kZTo6UmlnaHRUb0xlZnQ7Cisg
ICAgICAgIH0KICAgICB9CisgICAgaWYgKGhhc1N0cm9uZ0RpcmVjdGlvbmFsaXR5KQorICAgICAg
ICAqaGFzU3Ryb25nRGlyZWN0aW9uYWxpdHkgPSBmYWxzZTsKICAgICByZXR1cm4gV1RGOjpVbmlj
b2RlOjpMZWZ0VG9SaWdodDsKIH0KIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3d0Zi90
ZXh0L1N0cmluZ0ltcGwuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvd3Rm
L3RleHQvU3RyaW5nSW1wbC5oCShyZXZpc2lvbiA3NzE4MCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS93dGYvdGV4dC9TdHJpbmdJbXBsLmgJKHdvcmtpbmcgY29weSkKQEAgLTMxNiw3ICszMTYs
NyBAQCBwdWJsaWM6CiAgICAgUGFzc1JlZlB0cjxTdHJpbmdJbXBsPiByZXBsYWNlKFN0cmluZ0lt
cGwqLCBTdHJpbmdJbXBsKik7CiAgICAgUGFzc1JlZlB0cjxTdHJpbmdJbXBsPiByZXBsYWNlKHVu
c2lnbmVkIGluZGV4LCB1bnNpZ25lZCBsZW4sIFN0cmluZ0ltcGwqKTsKIAotICAgIFdURjo6VW5p
Y29kZTo6RGlyZWN0aW9uIGRlZmF1bHRXcml0aW5nRGlyZWN0aW9uKCk7CisgICAgV1RGOjpVbmlj
b2RlOjpEaXJlY3Rpb24gZGVmYXVsdFdyaXRpbmdEaXJlY3Rpb24oYm9vbCogaGFzU3Ryb25nRGly
ZWN0aW9uYWxpdHkgPSAwKTsKIAogI2lmIFBMQVRGT1JNKENGKQogICAgIENGU3RyaW5nUmVmIGNy
ZWF0ZUNGU3RyaW5nKCk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvd3RmL3RleHQvV1RG
U3RyaW5nLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3d0Zi90ZXh0L1dU
RlN0cmluZy5oCShyZXZpc2lvbiA3NzE4MCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS93dGYv
dGV4dC9XVEZTdHJpbmcuaAkod29ya2luZyBjb3B5KQpAQCAtMzI2LDcgKzMyNiwxNCBAQCBwdWJs
aWM6CiAgICAgc3RhdGljIFN0cmluZyBmcm9tVVRGOFdpdGhMYXRpbjFGYWxsYmFjayhjb25zdCBj
aGFyKiwgc2l6ZV90KTsKICAgICAKICAgICAvLyBEZXRlcm1pbmVzIHRoZSB3cml0aW5nIGRpcmVj
dGlvbiB1c2luZyB0aGUgVW5pY29kZSBCaWRpIEFsZ29yaXRobSBydWxlcyBQMiBhbmQgUDMuCi0g
ICAgV1RGOjpVbmljb2RlOjpEaXJlY3Rpb24gZGVmYXVsdFdyaXRpbmdEaXJlY3Rpb24oKSBjb25z
dCB7IHJldHVybiBtX2ltcGwgPyBtX2ltcGwtPmRlZmF1bHRXcml0aW5nRGlyZWN0aW9uKCkgOiBX
VEY6OlVuaWNvZGU6OkxlZnRUb1JpZ2h0OyB9CisgICAgV1RGOjpVbmljb2RlOjpEaXJlY3Rpb24g
ZGVmYXVsdFdyaXRpbmdEaXJlY3Rpb24oYm9vbCogaGFzU3Ryb25nRGlyZWN0aW9uYWxpdHkgPSAw
KSBjb25zdAorICAgIHsKKyAgICAgICAgaWYgKG1faW1wbCkKKyAgICAgICAgICAgIHJldHVybiBt
X2ltcGwtPmRlZmF1bHRXcml0aW5nRGlyZWN0aW9uKGhhc1N0cm9uZ0RpcmVjdGlvbmFsaXR5KTsK
KyAgICAgICAgaWYgKGhhc1N0cm9uZ0RpcmVjdGlvbmFsaXR5KQorICAgICAgICAgICAgKmhhc1N0
cm9uZ0RpcmVjdGlvbmFsaXR5ID0gZmFsc2U7CisgICAgICAgIHJldHVybiBXVEY6OlVuaWNvZGU6
OkxlZnRUb1JpZ2h0OworICAgIH0KIAogICAgIGJvb2wgY29udGFpbnNPbmx5QVNDSUkoKSBjb25z
dCB7IHJldHVybiBjaGFyYWN0ZXJzQXJlQWxsQVNDSUkoY2hhcmFjdGVycygpLCBsZW5ndGgoKSk7
IH0KICAgICBib29sIGNvbnRhaW5zT25seUxhdGluMSgpIGNvbnN0IHsgcmV0dXJuIGNoYXJhY3Rl
cnNBcmVBbGxMYXRpbjEoY2hhcmFjdGVycygpLCBsZW5ndGgoKSk7IH0KSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cJ
KHJldmlzaW9uIDc3Mzk2KQorKysgU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNv
cHkpCkBAIC0xLDMgKzEsMzMgQEAKKzIwMTEtMDItMDIgIFlhZWwgQWhhcm9uICA8eWFlbC5haGFy
b25Abm9raWEuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgIEFkZCBzdXBwb3J0IGZvciBkaXI9YXV0bworICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NTA5MTYKKworICAgICAgICBUZXN0czogZmFzdC9kb20v
SFRNTEVsZW1lbnQvYXR0ci1kaXItYXV0by1jaGFuZ2UtY2hpbGQtbm9kZS5odG1sCisgICAgICAg
ICAgICAgICBmYXN0L2RvbS9IVE1MRWxlbWVudC9hdHRyLWRpci1hdXRvLWNoYW5nZS10ZXh0Lmh0
bWwKKyAgICAgICAgICAgICAgIGZhc3QvZG9tL0hUTUxFbGVtZW50L2F0dHItZGlyLWF1dG8uaHRt
bAorICAgICAgICAgICAgICAgZmFzdC9kb20vSFRNTEVsZW1lbnQvYXR0ci1kaXItdmFsdWUtY2hh
bmdlLmh0bWwKKworICAgICAgICAqIGNzcy9DU1NTdHlsZVNlbGVjdG9yLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkNTU1N0eWxlU2VsZWN0b3I6OmNhblNoYXJlU3R5bGVXaXRoRWxlbWVudCk6Cisg
ICAgICAgICogZG9tL0VsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RWxlbWVudDo6YWRq
dXN0RWxlbWVudERpcmVjdGlvbmFsaXR5SWZOZWVkZWRBZnRlckNoaWxkcmVuQ2hhbmdlZCk6Cisg
ICAgICAgIChXZWJDb3JlOjpFbGVtZW50OjpjaGlsZHJlbkNoYW5nZWQpOgorICAgICAgICAqIGRv
bS9FbGVtZW50Lmg6CisgICAgICAgICogZG9tL05vZGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
Tm9kZTo6YXR0YWNoKToKKyAgICAgICAgKFdlYkNvcmU6Ok5vZGU6OnNldEhhc0RpckF1dG9GbGFn
UmVjdXJzaXZlbHkpOgorICAgICAgICAqIGRvbS9Ob2RlLmg6CisgICAgICAgIChXZWJDb3JlOjpO
b2RlOjpzZWxmT3JBbmNlc3Rvckhhc0RpckF1dG9BdHRyaWJ1dGUpOgorICAgICAgICAqIGh0bWwv
SFRNTEVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTEVsZW1lbnQ6Om1hcFRvRW50
cnkpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTEVsZW1lbnQ6OnBhcnNlTWFwcGVkQXR0cmlidXRl
KToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxFbGVtZW50OjpkaXJlY3Rpb25hbGl0eSk6CisgICAg
ICAgIChXZWJDb3JlOjpIVE1MRWxlbWVudDo6YWRqdXN0RGlyZWN0aW9uYWxpdHlBZnRlckNoaWxk
cmVuQ2hhbmdlZCk6CisgICAgICAgICogaHRtbC9IVE1MRWxlbWVudC5oOgorCiAyMDExLTAyLTAy
ICBTdGV2ZSBMYWNleSAgPHNqbEBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkg
RXJpYyBDYXJsc29uLgpJbmRleDogU291cmNlL1dlYkNvcmUvY3NzL0NTU1N0eWxlU2VsZWN0b3Iu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2Nzcy9DU1NTdHlsZVNlbGVjdG9yLmNw
cAkocmV2aXNpb24gNzcxODApCisrKyBTb3VyY2UvV2ViQ29yZS9jc3MvQ1NTU3R5bGVTZWxlY3Rv
ci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEwOTIsNiArMTA5Miw5IEBAIGJvb2wgQ1NTU3R5bGVT
ZWxlY3Rvcjo6Y2FuU2hhcmVTdHlsZVdpdGgKICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7
CiAjZW5kaWYKIAorICAgICAgICAgICAgaWYgKGVxdWFsSWdub3JpbmdDYXNlKHMtPmZhc3RHZXRB
dHRyaWJ1dGUoZGlyQXR0ciksICJhdXRvIikgfHwgZXF1YWxJZ25vcmluZ0Nhc2UobV9lbGVtZW50
LT5mYXN0R2V0QXR0cmlidXRlKGRpckF0dHIpLCAiYXV0byIpKQorICAgICAgICAgICAgICAgIHJl
dHVybiBmYWxzZTsKKwogICAgICAgICAgICAgYm9vbCBjbGFzc2VzTWF0Y2ggPSB0cnVlOwogICAg
ICAgICAgICAgaWYgKHMtPmhhc0NsYXNzKCkpIHsKICAgICAgICAgICAgICAgICBjb25zdCBBdG9t
aWNTdHJpbmcmIGNsYXNzMSA9IG1fZWxlbWVudC0+ZmFzdEdldEF0dHJpYnV0ZShjbGFzc0F0dHIp
OwpJbmRleDogU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmNwcAkocmV2aXNpb24gNzcxODApCisrKyBTb3VyY2Uv
V2ViQ29yZS9kb20vRWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTExMjAsNiArMTEyMCwx
OCBAQCB2b2lkIEVsZW1lbnQ6OnJlbW92ZVNoYWRvd1Jvb3QoKQogICAgIH0KIH0KIAordm9pZCBF
bGVtZW50OjphZGp1c3RFbGVtZW50RGlyZWN0aW9uYWxpdHlJZk5lZWRlZEFmdGVyQ2hpbGRyZW5D
aGFuZ2VkKCkKK3sKKyAgICBpZiAoIXNlbGZPckFuY2VzdG9ySGFzRGlyQXV0b0F0dHJpYnV0ZSgp
KQorICAgICAgICByZXR1cm47CisKKyAgICBFbGVtZW50KiBlbGVtZW50ID0gdGhpczsKKyAgICB3
aGlsZSAoZWxlbWVudC0+cGFyZW50RWxlbWVudCgpICYmIGVsZW1lbnQtPnBhcmVudEVsZW1lbnQo
KS0+c2VsZk9yQW5jZXN0b3JIYXNEaXJBdXRvQXR0cmlidXRlKCkgJiYgIWVxdWFsSWdub3JpbmdD
YXNlKGVsZW1lbnQtPmZhc3RHZXRBdHRyaWJ1dGUoZGlyQXR0ciksICJhdXRvIikpCisgICAgICAg
IGVsZW1lbnQgPSBlbGVtZW50LT5wYXJlbnRFbGVtZW50KCk7CisgICAgaWYgKGVsZW1lbnQtPmlz
SFRNTEVsZW1lbnQoKSkKKyAgICAgICAgc3RhdGljX2Nhc3Q8SFRNTEVsZW1lbnQqPihlbGVtZW50
KS0+YWRqdXN0RGlyZWN0aW9uYWxpdHlBZnRlckNoaWxkcmVuQ2hhbmdlZCgpOworfQorCiBib29s
IEVsZW1lbnQ6OmNoaWxkVHlwZUFsbG93ZWQoTm9kZVR5cGUgdHlwZSkKIHsKICAgICBzd2l0Y2gg
KHR5cGUpIHsKQEAgLTEyMjEsNiArMTIzMyw3IEBAIHZvaWQgRWxlbWVudDo6Y2hpbGRyZW5DaGFu
Z2VkKGJvb2wgY2hhbmcKICAgICBDb250YWluZXJOb2RlOjpjaGlsZHJlbkNoYW5nZWQoY2hhbmdl
ZEJ5UGFyc2VyLCBiZWZvcmVDaGFuZ2UsIGFmdGVyQ2hhbmdlLCBjaGlsZENvdW50RGVsdGEpOwog
ICAgIGlmICghY2hhbmdlZEJ5UGFyc2VyKQogICAgICAgICBjaGVja0ZvclNpYmxpbmdTdHlsZUNo
YW5nZXModGhpcywgcmVuZGVyU3R5bGUoKSwgZmFsc2UsIGJlZm9yZUNoYW5nZSwgYWZ0ZXJDaGFu
Z2UsIGNoaWxkQ291bnREZWx0YSk7CisgICAgYWRqdXN0RWxlbWVudERpcmVjdGlvbmFsaXR5SWZO
ZWVkZWRBZnRlckNoaWxkcmVuQ2hhbmdlZCgpOwogfQogCiB2b2lkIEVsZW1lbnQ6OmZpbmlzaFBh
cnNpbmdDaGlsZHJlbigpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmgJKHJldmlzaW9uIDc3MTgwKQor
KysgU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuaAkod29ya2luZyBjb3B5KQpAQCAtNDAxLDYg
KzQwMSw4IEBAIHByaXZhdGU6CiAgICAgU3BlbGxjaGVja0F0dHJpYnV0ZVN0YXRlIHNwZWxsY2hl
Y2tBdHRyaWJ1dGVTdGF0ZSgpIGNvbnN0OwogICAgIHZvaWQgcmVtb3ZlU2hhZG93Um9vdCgpOwog
CisgICAgdm9pZCBhZGp1c3RFbGVtZW50RGlyZWN0aW9uYWxpdHlJZk5lZWRlZEFmdGVyQ2hpbGRy
ZW5DaGFuZ2VkKCk7CisKIHByaXZhdGU6CiAgICAgbXV0YWJsZSBSZWZQdHI8TmFtZWROb2RlTWFw
PiBtX2F0dHJpYnV0ZU1hcDsKIH07CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9kb20vTm9kZS5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvZG9tL05vZGUuY3BwCShyZXZpc2lvbiA3NzE4
MCkKKysrIFNvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTI1
MCw2ICsxMjUwLDkgQEAgdm9pZCBOb2RlOjphdHRhY2goKQogICAgICAgICB9CiAgICAgfQogCisg
ICAgaWYgKHBhcmVudE5vZGUoKSAmJiBwYXJlbnROb2RlKCktPmdldEZsYWcoU2VsZk9yQW5jZXN0
b3JIYXNEaXJBdXRvRmxhZykpCisgICAgICAgIHNldEZsYWcoU2VsZk9yQW5jZXN0b3JIYXNEaXJB
dXRvRmxhZyk7CisKICAgICBzZXRBdHRhY2hlZCgpOwogICAgIGNsZWFyTmVlZHNTdHlsZVJlY2Fs
YygpOwogfQpAQCAtMjk3OSw2ICsyOTgyLDMzIEBAIGJvb2wgTm9kZTo6ZGlzYWJsZWQoKSBjb25z
dAogICAgIHJldHVybiBmYWxzZTsKIH0KIAordm9pZCBOb2RlOjpzZXRIYXNEaXJBdXRvRmxhZ1Jl
Y3Vyc2l2ZWx5KGJvb2wgZmxhZykKK3sKKyAgICBpZiAoZ2V0RmxhZyhTZWxmT3JBbmNlc3Rvckhh
c0RpckF1dG9GbGFnKSA9PSBmbGFnKQorICAgICAgICByZXR1cm47CisgICAgCisgICAgTm9kZSog
bm9kZSA9IHRoaXM7CisgICAgaWYgKGZsYWcpIHsKKyAgICAgICAgZm9yICg7IG5vZGU7IG5vZGUg
PSBub2RlLT50cmF2ZXJzZU5leHROb2RlKHRoaXMpKQorICAgICAgICAgICAgbm9kZS0+c2V0Rmxh
Zyh0cnVlLCBTZWxmT3JBbmNlc3Rvckhhc0RpckF1dG9GbGFnKTsKKyAgICAgICAgcmV0dXJuOwor
ICAgIH0KKworICAgIGlmIChwYXJlbnQoKSAmJiBwYXJlbnQoKS0+c2VsZk9yQW5jZXN0b3JIYXNE
aXJBdXRvQXR0cmlidXRlKCkpCisgICAgICAgIHJldHVybjsKKworICAgIHdoaWxlIChub2RlKSB7
CisgICAgICAgIGlmIChub2RlLT5pc0hUTUxFbGVtZW50KCkpIHsKKyAgICAgICAgICAgIGlmIChl
cXVhbElnbm9yaW5nQ2FzZSh0b0VsZW1lbnQobm9kZSktPmZhc3RHZXRBdHRyaWJ1dGUoZGlyQXR0
ciksICJhdXRvIikpIHsKKyAgICAgICAgICAgICAgICBub2RlID0gbm9kZS0+dHJhdmVyc2VOZXh0
U2libGluZyh0aGlzKTsKKyAgICAgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgICAgIH0K
KyAgICAgICAgfQorICAgICAgICBub2RlLT5zZXRGbGFnKGZhbHNlLCBTZWxmT3JBbmNlc3Rvckhh
c0RpckF1dG9GbGFnKTsKKyAgICAgICAgbm9kZSA9IG5vZGUtPnRyYXZlcnNlTmV4dE5vZGUodGhp
cyk7CisgICAgfQorfQorICAgIAogdm9pZCBOb2RlOjpkZWZhdWx0RXZlbnRIYW5kbGVyKEV2ZW50
KiBldmVudCkKIHsKICAgICBpZiAoZXZlbnQtPnRhcmdldCgpICE9IHRoaXMpCkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9kb20vTm9kZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2RvbS9O
b2RlLmgJKHJldmlzaW9uIDc3MTgwKQorKysgU291cmNlL1dlYkNvcmUvZG9tL05vZGUuaAkod29y
a2luZyBjb3B5KQpAQCAtNjAzLDYgKzYwMyw4IEBAIHByaXZhdGU6CiAKICAgICAgICAgU3R5bGVD
aGFuZ2VNYXNrID0gMSA8PCBub2RlU3R5bGVDaGFuZ2VTaGlmdCB8IDEgPDwgKG5vZGVTdHlsZUNo
YW5nZVNoaWZ0ICsgMSksCiAKKyAgICAgICAgU2VsZk9yQW5jZXN0b3JIYXNEaXJBdXRvRmxhZyA9
IDEgPDwgMjcsCisKICNpZiBFTkFCTEUoU1ZHKQogICAgICAgICBEZWZhdWx0Tm9kZUZsYWdzID0g
SXNQYXJzaW5nQ2hpbGRyZW5GaW5pc2hlZEZsYWcgfCBJc1N0eWxlQXR0cmlidXRlVmFsaWRGbGFn
IHwgQXJlU1ZHQXR0cmlidXRlc1ZhbGlkRmxhZwogI2Vsc2UKQEAgLTcwNCw2ICs3MDYsMTAgQEAg
cHJvdGVjdGVkOgogICAgIHZvaWQgc2V0SGFzUmFyZVNWR0RhdGEoKSB7IHNldEZsYWcoSGFzU1ZH
UmFyZURhdGFGbGFnKTsgfQogICAgIHZvaWQgY2xlYXJIYXNSYXJlU1ZHRGF0YSgpIHsgY2xlYXJG
bGFnKEhhc1NWR1JhcmVEYXRhRmxhZyk7IH0KICNlbmRpZgorCisgICAgYm9vbCBzZWxmT3JBbmNl
c3Rvckhhc0RpckF1dG9BdHRyaWJ1dGUoKSBjb25zdCB7IHJldHVybiBnZXRGbGFnKFNlbGZPckFu
Y2VzdG9ySGFzRGlyQXV0b0ZsYWcpOyB9CisKKyAgICB2b2lkIHNldEhhc0RpckF1dG9GbGFnUmVj
dXJzaXZlbHkoYm9vbCk7CiB9OwogCiAvLyBVc2VkIGluIE5vZGU6OmFkZFN1YnJlc291cmNlQXR0
cmlidXRlVVJMcygpIGFuZCBpbiBhZGRTdWJyZXNvdXJjZVN0eWxlVVJMcygpCkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9odG1sL0hUTUxFbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9odG1sL0hUTUxFbGVtZW50LmNwcAkocmV2aXNpb24gNzcxODApCisrKyBTb3VyY2UvV2Vi
Q29yZS9odG1sL0hUTUxFbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTI0LDcgKzEyNCw3
IEBAIGJvb2wgSFRNTEVsZW1lbnQ6Om1hcFRvRW50cnkoY29uc3QgUXVhbGkKICAgICB9CiAgICAg
aWYgKGF0dHJOYW1lID09IGRpckF0dHIpIHsKICAgICAgICAgcmVzdWx0ID0gaGFzTG9jYWxOYW1l
KGJkb1RhZykgPyBlQkRPIDogZVVuaXZlcnNhbDsKLSAgICAgICAgcmV0dXJuIGZhbHNlOworICAg
ICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CiAKICAgICByZXR1cm4gU3R5bGVkRWxlbWVudDo6bWFw
VG9FbnRyeShhdHRyTmFtZSwgcmVzdWx0KTsKQEAgLTE1NSw3ICsxNTUsMTMgQEAgdm9pZCBIVE1M
RWxlbWVudDo6cGFyc2VNYXBwZWRBdHRyaWJ1dGUoQQogICAgIH0gZWxzZSBpZiAoYXR0ci0+bmFt
ZSgpID09IGxhbmdBdHRyKSB7CiAgICAgICAgIC8vIEZJWE1FOiBJbXBsZW1lbnQKICAgICB9IGVs
c2UgaWYgKGF0dHItPm5hbWUoKSA9PSBkaXJBdHRyKSB7Ci0gICAgICAgIGFkZENTU1Byb3BlcnR5
KGF0dHIsIENTU1Byb3BlcnR5RGlyZWN0aW9uLCBhdHRyLT52YWx1ZSgpKTsKKyAgICAgICAgaWYg
KGVxdWFsSWdub3JpbmdDYXNlKGF0dHItPnZhbHVlKCksICJhdXRvIikpIHsKKyAgICAgICAgICAg
IGFkZENTU1Byb3BlcnR5KGF0dHIsIENTU1Byb3BlcnR5RGlyZWN0aW9uLCBkaXJlY3Rpb25hbGl0
eSgpID09IExUUiA/ICJsdHIiIDogInJ0bCIpOworICAgICAgICAgICAgc2V0SGFzRGlyQXV0b0Zs
YWdSZWN1cnNpdmVseSh0cnVlKTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIGFkZENT
U1Byb3BlcnR5KGF0dHIsIENTU1Byb3BlcnR5RGlyZWN0aW9uLCBhdHRyLT52YWx1ZSgpKTsKKyAg
ICAgICAgICAgIHNldEhhc0RpckF1dG9GbGFnUmVjdXJzaXZlbHkoZmFsc2UpOworICAgICAgICB9
CiAgICAgICAgIGFkZENTU1Byb3BlcnR5KGF0dHIsIENTU1Byb3BlcnR5VW5pY29kZUJpZGksIGhh
c0xvY2FsTmFtZShiZG9UYWcpID8gQ1NTVmFsdWVCaWRpT3ZlcnJpZGUgOiBDU1NWYWx1ZUVtYmVk
KTsKICAgICB9IGVsc2UgaWYgKGF0dHItPm5hbWUoKSA9PSBkcmFnZ2FibGVBdHRyKSB7CiAgICAg
ICAgIGNvbnN0IEF0b21pY1N0cmluZyYgdmFsdWUgPSBhdHRyLT52YWx1ZSgpOwpAQCAtODU2LDYg
Kzg2Miw1MCBAQCBIVE1MRm9ybUVsZW1lbnQqIEhUTUxFbGVtZW50OjpzaGFkb3dBbmNlCiAgICAg
cmV0dXJuIGFuY2VzdG9ySFRNTC0+Zm9ybSgpOwogfQogCitUZXh0RGlyZWN0aW9uIEhUTUxFbGVt
ZW50OjpkaXJlY3Rpb25hbGl0eSgpIGNvbnN0Cit7CisgICAgVGV4dERpcmVjdGlvbiBkaXJlY3Rp
b24gPSBMVFI7CisgICAgQVNTRVJUKGVxdWFsSWdub3JpbmdDYXNlKGZhc3RHZXRBdHRyaWJ1dGUo
ZGlyQXR0ciksICJhdXRvIikpOworCisgICAgTm9kZSogbm9kZSA9IGZpcnN0Q2hpbGQoKTsKKyAg
ICB3aGlsZSAobm9kZSkgeworICAgICAgICAvLyBTa2lwIGJkaSwgc2NyaXB0IGFuZCBzdHlsZSBl
bGVtZW50cworICAgICAgICBpZiAoZXF1YWxJZ25vcmluZ0Nhc2Uobm9kZS0+bm9kZU5hbWUoKSwg
ImJkaSIpIHx8IG5vZGUtPmhhc1RhZ05hbWUoc2NyaXB0VGFnKSB8fCBub2RlLT5oYXNUYWdOYW1l
KHN0eWxlVGFnKSkgeworICAgICAgICAgICAgbm9kZSA9IG5vZGUtPnRyYXZlcnNlTmV4dFNpYmxp
bmcodGhpcyk7CisgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgfQorCisgICAgICAgIC8v
IFNraXAgZWxlbWVudHMgd2l0aCB2YWxpZCBkaXIgYXR0cmlidXRlCisgICAgICAgIGlmIChub2Rl
LT5pc0VsZW1lbnROb2RlKCkpIHsKKyAgICAgICAgICAgIEF0b21pY1N0cmluZyBkaXJBdHRyaWJ1
dGVWYWx1ZSA9IHRvRWxlbWVudChub2RlKS0+ZmFzdEdldEF0dHJpYnV0ZShkaXJBdHRyKTsKKyAg
ICAgICAgICAgIGlmIChlcXVhbElnbm9yaW5nQ2FzZShkaXJBdHRyaWJ1dGVWYWx1ZSwgInJ0bCIp
IHx8IGVxdWFsSWdub3JpbmdDYXNlKGRpckF0dHJpYnV0ZVZhbHVlLCAibHRyIikgfHwgZXF1YWxJ
Z25vcmluZ0Nhc2UoZGlyQXR0cmlidXRlVmFsdWUsICJhdXRvIikpIHsKKyAgICAgICAgICAgICAg
ICBub2RlID0gbm9kZS0+dHJhdmVyc2VOZXh0U2libGluZyh0aGlzKTsKKyAgICAgICAgICAgICAg
ICBjb250aW51ZTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorCisgICAgICAgIGlmIChub2Rl
LT5pc1RleHROb2RlKCkpIHsKKyAgICAgICAgICAgIGJvb2wgaGFzU3Ryb25nRGlyZWN0aW9uYWxp
dHk7CisgICAgICAgICAgICBXVEY6OlVuaWNvZGU6OkRpcmVjdGlvbiB0ZXh0RGlyZWN0aW9uID0g
bm9kZS0+dGV4dENvbnRlbnQodHJ1ZSkuZGVmYXVsdFdyaXRpbmdEaXJlY3Rpb24oJmhhc1N0cm9u
Z0RpcmVjdGlvbmFsaXR5KTsKKyAgICAgICAgICAgIGlmIChoYXNTdHJvbmdEaXJlY3Rpb25hbGl0
eSkKKyAgICAgICAgICAgICAgICByZXR1cm4gKHRleHREaXJlY3Rpb24gPT0gV1RGOjpVbmljb2Rl
OjpMZWZ0VG9SaWdodCkgPyBMVFIgOiBSVEw7CisgICAgICAgIH0KKyAgICAgICAgbm9kZSA9IG5v
ZGUtPnRyYXZlcnNlTmV4dE5vZGUodGhpcyk7CisgICAgfQorICAgIHJldHVybiBkaXJlY3Rpb247
Cit9CisKK3ZvaWQgSFRNTEVsZW1lbnQ6OmFkanVzdERpcmVjdGlvbmFsaXR5QWZ0ZXJDaGlsZHJl
bkNoYW5nZWQoKQoreworICAgIEFTU0VSVChzZWxmT3JBbmNlc3Rvckhhc0RpckF1dG9BdHRyaWJ1
dGUoKSk7CisgICAgVGV4dERpcmVjdGlvbiB0ZXh0RGlyZWN0aW9uID0gZGlyZWN0aW9uYWxpdHko
KTsKKyAgICBpZiAocmVuZGVyU3R5bGUoKSAmJiByZW5kZXJTdHlsZSgpLT5kaXJlY3Rpb24oKSA9
PSB0ZXh0RGlyZWN0aW9uKQorICAgICAgICByZXR1cm47CisKKyAgICBzZXRBdHRyaWJ1dGUoZGly
QXR0ciwgdGV4dERpcmVjdGlvbiA9PSBMVFIgPyAibHRyIiA6ICIgcnRsIik7CisgICAgc2V0TmVl
ZHNTdHlsZVJlY2FsYygpOworfQorCiB2b2lkIEhUTUxFbGVtZW50OjpkaXNwYXRjaENoYW5nZUV2
ZW50cygpCiB7CiAgICAgUmVmUHRyPEhUTUxFbGVtZW50PiBwcm90ZWN0b3IodGhpcyk7CkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxFbGVtZW50LmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvaHRtbC9IVE1MRWxlbWVudC5oCShyZXZpc2lvbiA3NzE4MCkKKysrIFNvdXJjZS9X
ZWJDb3JlL2h0bWwvSFRNTEVsZW1lbnQuaAkod29ya2luZyBjb3B5KQpAQCAtODcsNiArODcsOCBA
QCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoQ2hhbmdlRXZlbnRzKCk7CiAgICAg
dmlydHVhbCB2b2lkIGRpc3BhdGNoSW5wdXRFdmVudHMoKTsKIAorICAgIHZvaWQgYWRqdXN0RGly
ZWN0aW9uYWxpdHlBZnRlckNoaWxkcmVuQ2hhbmdlZCgpOworCiBwcm90ZWN0ZWQ6CiAgICAgSFRN
TEVsZW1lbnQoY29uc3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFtZSwgRG9jdW1lbnQqKTsKIApAQCAt
MTA2LDYgKzEwOCw4IEBAIHByaXZhdGU6CiAgICAgUGFzc1JlZlB0cjxEb2N1bWVudEZyYWdtZW50
PiB0ZXh0VG9GcmFnbWVudChjb25zdCBTdHJpbmcmLCBFeGNlcHRpb25Db2RlJik7CiAKICAgICBI
VE1MRm9ybUVsZW1lbnQqIHNoYWRvd0FuY2VzdG9yT3duZXJGb3JtKCk7CisKKyAgICBUZXh0RGly
ZWN0aW9uIGRpcmVjdGlvbmFsaXR5KCkgY29uc3Q7CiB9OwogCiBpbmxpbmUgSFRNTEVsZW1lbnQ6
OkhUTUxFbGVtZW50KGNvbnN0IFF1YWxpZmllZE5hbWUmIHRhZ05hbWUsIERvY3VtZW50KiBkb2N1
bWVudCkKSW5kZXg6IExheW91dFRlc3RzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRU
ZXN0cy9DaGFuZ2VMb2cJKHJldmlzaW9uIDc3Mzk2KQorKysgTGF5b3V0VGVzdHMvQ2hhbmdlTG9n
CSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTkgQEAKKzIwMTEtMDItMDIgIFlhZWwgQWhhcm9u
ICA8eWFlbC5haGFyb25Abm9raWEuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgIEFkZCBzdXBwb3J0IGZvciBkaXI9YXV0bworICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NTA5MTYKKworICAgICAgICAqIGZh
c3QvZG9tL0hUTUxFbGVtZW50L2F0dHItZGlyLWF1dG8tY2hhbmdlLWNoaWxkLW5vZGUtZXhwZWN0
ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2RvbS9IVE1MRWxlbWVudC9hdHRyLWRpci1h
dXRvLWNoYW5nZS1jaGlsZC1ub2RlLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGZhc3QvZG9tL0hU
TUxFbGVtZW50L2F0dHItZGlyLWF1dG8tY2hhbmdlLXRleHQtZXhwZWN0ZWQudHh0OiBBZGRlZC4K
KyAgICAgICAgKiBmYXN0L2RvbS9IVE1MRWxlbWVudC9hdHRyLWRpci1hdXRvLWNoYW5nZS10ZXh0
Lmh0bWw6IEFkZGVkLgorICAgICAgICAqIGZhc3QvZG9tL0hUTUxFbGVtZW50L2F0dHItZGlyLWF1
dG8tZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2RvbS9IVE1MRWxlbWVudC9h
dHRyLWRpci1hdXRvLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGZhc3QvZG9tL0hUTUxFbGVtZW50
L2F0dHItZGlyLXZhbHVlLWNoYW5nZS1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGZh
c3QvZG9tL0hUTUxFbGVtZW50L2F0dHItZGlyLXZhbHVlLWNoYW5nZS5odG1sOiBBZGRlZC4KKwog
MjAxMS0wMi0wMiAgRGltaXRyaSBHbGF6a292ICA8ZGdsYXprb3ZAY2hyb21pdW0ub3JnPgogCiAg
ICAgICAgIEFkZGVkIEdQVSBmYWlscyBmcm9tIGJvdHMuCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0
L2RvbS9IVE1MRWxlbWVudC9hdHRyLWRpci1hdXRvLWNoYW5nZS1jaGlsZC1ub2RlLWV4cGVjdGVk
LnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2RvbS9IVE1MRWxlbWVudC9hdHRy
LWRpci1hdXRvLWNoYW5nZS1jaGlsZC1ub2RlLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKKysr
IExheW91dFRlc3RzL2Zhc3QvZG9tL0hUTUxFbGVtZW50L2F0dHItZGlyLWF1dG8tY2hhbmdlLWNo
aWxkLW5vZGUtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDE5IEBACitUZXN0
IHRoYXQgd2hlbiBhbiBlbGVtZW50IGhhcyBkaXIgYXR0cmlidXRlIHdpdGggdmFsdWUgImF1dG8i
LCBpZiBpdHMgZmlyc3QgY2hpbGQgY2hhbmdlcywgdGhlIGVsZW1lbnQncyBkaXJlY3Rpb25hbGl0
eSBpcyByZS1ldmFsdWF0ZWQuCisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBv
ZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KKworCisKKwor
CisKK1BBU1MgZG9jdW1lbnQuZGVmYXVsdFZpZXcuZ2V0Q29tcHV0ZWRTdHlsZShlbCwgbnVsbCku
Z2V0UHJvcGVydHlWYWx1ZSgnYm9yZGVyLXJpZ2h0LWNvbG9yJykgaXMgJ3JnYigyNTUsIDAsIDAp
JworUEFTUyBkb2N1bWVudC5kZWZhdWx0Vmlldy5nZXRDb21wdXRlZFN0eWxlKGVsLCBudWxsKS5n
ZXRQcm9wZXJ0eVZhbHVlKCdib3JkZXItcmlnaHQtY29sb3InKSBpcyAncmdiKDAsIDEyOCwgMCkn
CisKK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQorCisK
KworCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2RvbS9IVE1MRWxlbWVudC9hdHRyLWRpci1hdXRv
LWNoYW5nZS1jaGlsZC1ub2RlLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9k
b20vSFRNTEVsZW1lbnQvYXR0ci1kaXItYXV0by1jaGFuZ2UtY2hpbGQtbm9kZS5odG1sCShyZXZp
c2lvbiAwKQorKysgTGF5b3V0VGVzdHMvZmFzdC9kb20vSFRNTEVsZW1lbnQvYXR0ci1kaXItYXV0
by1jaGFuZ2UtY2hpbGQtbm9kZS5odG1sCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDM3IEBACis8
IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8bWV0YSBodHRwLWVxdWl2PSJDb250ZW50
LVR5cGUiIGNvbnRlbnQ9InRleHQvaHRtbDsgY2hhcnNldD11dGYtOCI+Cis8bGluayByZWw9InN0
eWxlc2hlZXQiIGhyZWY9Ii4uLy4uL2pzL3Jlc291cmNlcy9qcy10ZXN0LXN0eWxlLmNzcyI+Cis8
c2NyaXB0IHNyYz0iLi4vLi4vanMvcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4K
KzxzdHlsZT4KKy50ZXN0RGl2IHstd2Via2l0LWJvcmRlci1zdGFydDogNXB4IHNvbGlkIGdyZWVu
OyAtd2Via2l0LWJvcmRlci1lbmQ6IDVweCBzb2xpZCByZWQ7IH0KKzwvc3R5bGU+Cis8L2hlYWQ+
Cis8Ym9keT4KKzxwIGlkPSJkZXNjcmlwdGlvbiI+PC9wPgorPGRpdiBpZD0iY29uc29sZSI+PC9w
PgorPGRpdiBpZD0icmVzdWx0Ij48L2Rpdj4KKworPGRpdiBpZD0idGVzdCIgZGlyPSJhdXRvIiBj
bGFzcz0idGVzdERpdiI+PC9kaXY+Cis8c2NyaXB0PgorCitkZXNjcmlwdGlvbignVGVzdCB0aGF0
IHdoZW4gYW4gZWxlbWVudCBoYXMgZGlyIGF0dHJpYnV0ZSB3aXRoIHZhbHVlICJhdXRvIiwgaWYg
aXRzIGZpcnN0IGNoaWxkIGNoYW5nZXMsIHRoZSBlbGVtZW50XCdzIGRpcmVjdGlvbmFsaXR5IGlz
IHJlLWV2YWx1YXRlZC4nKTsKKwordmFyIGVsID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInRl
c3QiKTsKK3ZhciBjaGlsZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpOworY2hpbGQu
aW5uZXJIVE1MPSJ0ZXN0IjsKK2VsLmFwcGVuZENoaWxkKGNoaWxkKTsKK3Nob3VsZEJlKCJkb2N1
bWVudC5kZWZhdWx0Vmlldy5nZXRDb21wdXRlZFN0eWxlKGVsLCBudWxsKS5nZXRQcm9wZXJ0eVZh
bHVlKCdib3JkZXItcmlnaHQtY29sb3InKSIsICIncmdiKDI1NSwgMCwgMCknIik7CisKK3ZhciBj
aGlsZDIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKTsKK2NoaWxkMi5pbm5lckhUTUw9
Itee16fXldeoINeU16nXnSDXoteR16jXmdeqIjsKK2VsLmluc2VydEJlZm9yZShjaGlsZDIsIGNo
aWxkKTsKK3Nob3VsZEJlKCJkb2N1bWVudC5kZWZhdWx0Vmlldy5nZXRDb21wdXRlZFN0eWxlKGVs
LCBudWxsKS5nZXRQcm9wZXJ0eVZhbHVlKCdib3JkZXItcmlnaHQtY29sb3InKSIsICIncmdiKDAs
IDEyOCwgMCknIik7CitlbC5zdHlsZS5kaXNwbGF5ID0gIm5vbmUiOworCit3aW5kb3cuc3VjY2Vz
c2Z1bGx5UGFyc2VkID0gdHJ1ZTsKKzwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uL2pzL3Jl
c291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpJbmRl
eDogTGF5b3V0VGVzdHMvZmFzdC9kb20vSFRNTEVsZW1lbnQvYXR0ci1kaXItYXV0by1jaGFuZ2Ut
dGV4dC1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9kb20vSFRN
TEVsZW1lbnQvYXR0ci1kaXItYXV0by1jaGFuZ2UtdGV4dC1leHBlY3RlZC50eHQJKHJldmlzaW9u
IDApCisrKyBMYXlvdXRUZXN0cy9mYXN0L2RvbS9IVE1MRWxlbWVudC9hdHRyLWRpci1hdXRvLWNo
YW5nZS10ZXh0LWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwxOSBAQAorVGVz
dCB0aGF0IHdoZW4gYW4gZWxlbWVudCBoYXMgZGlyIGF0dHJpYnV0ZSB3aXRoIHZhbHVlICJhdXRv
IiwgaWYgaXRzIGZpcnN0IGNoaWxkIHRleHQgbm9kZSBjaGFuZ2VzLCB0aGUgZWxlbWVudCdzIGRp
cmVjdGlvbmFsaXR5IGlzIHJlLWV2YWx1YXRlZC4KKworT24gc3VjY2VzcywgeW91IHdpbGwgc2Vl
IGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUi
LgorCisKKworCisKKworUEFTUyBkb2N1bWVudC5kZWZhdWx0Vmlldy5nZXRDb21wdXRlZFN0eWxl
KGVsLCBudWxsKS5nZXRQcm9wZXJ0eVZhbHVlKCdib3JkZXItcmlnaHQtY29sb3InKSBpcyAncmdi
KDI1NSwgMCwgMCknCitQQVNTIGRvY3VtZW50LmRlZmF1bHRWaWV3LmdldENvbXB1dGVkU3R5bGUo
ZWwsIG51bGwpLmdldFByb3BlcnR5VmFsdWUoJ2JvcmRlci1yaWdodC1jb2xvcicpIGlzICdyZ2Io
MCwgMTI4LCAwKScKKworUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENP
TVBMRVRFCisKKworCisKSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZG9tL0hUTUxFbGVtZW50L2F0
dHItZGlyLWF1dG8tY2hhbmdlLXRleHQuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9m
YXN0L2RvbS9IVE1MRWxlbWVudC9hdHRyLWRpci1hdXRvLWNoYW5nZS10ZXh0Lmh0bWwJKHJldmlz
aW9uIDApCisrKyBMYXlvdXRUZXN0cy9mYXN0L2RvbS9IVE1MRWxlbWVudC9hdHRyLWRpci1hdXRv
LWNoYW5nZS10ZXh0Lmh0bWwJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMzAgQEAKKzwhRE9DVFlQ
RSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKzxtZXRhIGh0dHAtZXF1aXY9IkNvbnRlbnQtVHlwZSIg
Y29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PXV0Zi04Ij4KKzxsaW5rIHJlbD0ic3R5bGVzaGVl
dCIgaHJlZj0iLi4vLi4vanMvcmVzb3VyY2VzL2pzLXRlc3Qtc3R5bGUuY3NzIj4KKzxzY3JpcHQg
c3JjPSIuLi8uLi9qcy9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPHN0eWxl
PgorLnRlc3REaXYgey13ZWJraXQtYm9yZGVyLXN0YXJ0OiA1cHggc29saWQgZ3JlZW47IC13ZWJr
aXQtYm9yZGVyLWVuZDogNXB4IHNvbGlkIHJlZDsgfQorPC9zdHlsZT4KKzwvaGVhZD4KKzxib2R5
PgorPHAgaWQ9ImRlc2NyaXB0aW9uIj48L3A+Cis8ZGl2IGlkPSJjb25zb2xlIj48L3A+Cis8ZGl2
IGlkPSJyZXN1bHQiPjwvZGl2PgorCis8ZGl2IGlkPSJ0ZXN0IiBkaXI9ImF1dG8iIGNsYXNzPSJ0
ZXN0RGl2Ij5UZXN0IHRlc3QgdGVzdDwvZGl2PgorPHNjcmlwdD4KKworZGVzY3JpcHRpb24oJ1Rl
c3QgdGhhdCB3aGVuIGFuIGVsZW1lbnQgaGFzIGRpciBhdHRyaWJ1dGUgd2l0aCB2YWx1ZSAiYXV0
byIsIGlmIGl0cyBmaXJzdCBjaGlsZCB0ZXh0IG5vZGUgY2hhbmdlcywgdGhlIGVsZW1lbnRcJ3Mg
ZGlyZWN0aW9uYWxpdHkgaXMgcmUtZXZhbHVhdGVkLicpOworCit2YXIgZWwgPSBkb2N1bWVudC5n
ZXRFbGVtZW50QnlJZCgidGVzdCIpOworc2hvdWxkQmUoImRvY3VtZW50LmRlZmF1bHRWaWV3Lmdl
dENvbXB1dGVkU3R5bGUoZWwsIG51bGwpLmdldFByb3BlcnR5VmFsdWUoJ2JvcmRlci1yaWdodC1j
b2xvcicpIiwgIidyZ2IoMjU1LCAwLCAwKSciKTsKK2VsLmlubmVySFRNTCA9ICLXnten15XXqCDX
lNep150g16LXkdeo15nXqiI7CitzaG91bGRCZSgiZG9jdW1lbnQuZGVmYXVsdFZpZXcuZ2V0Q29t
cHV0ZWRTdHlsZShlbCwgbnVsbCkuZ2V0UHJvcGVydHlWYWx1ZSgnYm9yZGVyLXJpZ2h0LWNvbG9y
JykiLCAiJ3JnYigwLCAxMjgsIDApJyIpOworZWwuc3R5bGUuZGlzcGxheSA9ICJub25lIjsKK3dp
bmRvdy5zdWNjZXNzZnVsbHlQYXJzZWQgPSB0cnVlOworPC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0i
Li4vLi4vanMvcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+Cis8L2JvZHk+Cis8
L2h0bWw+CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2RvbS9IVE1MRWxlbWVudC9hdHRyLWRpci1h
dXRvLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2RvbS9IVE1M
RWxlbWVudC9hdHRyLWRpci1hdXRvLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKKysrIExheW91
dFRlc3RzL2Zhc3QvZG9tL0hUTUxFbGVtZW50L2F0dHItZGlyLWF1dG8tZXhwZWN0ZWQudHh0CShy
ZXZpc2lvbiAwKQpAQCAtMCwwICsxLDE5IEBACitUZXN0IHRoYXQgd2hlbiBhbiBlbGVtZW50IGhh
cyBhIGRpciBhdHRyaWJ1dGUgd2l0aCB2YWx1ZSAiYXV0byIsIHRoZSBkaXJlY3Rpb25hbGl0eSBv
ZiB0aGUgZWxlbWVudCBpcyBkZXRlcm1pbmVkIGJ5IHRoZSBmaXJzdCBjaGlsZCB0ZXh0IG5vZGUg
b2YgdGhhdCBlbGVtZW50LgorCitPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2Yg
IlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCisKKworCisKKwor
UEFTUyBkb2N1bWVudC5kZWZhdWx0Vmlldy5nZXRDb21wdXRlZFN0eWxlKGVsLCBudWxsKS5nZXRQ
cm9wZXJ0eVZhbHVlKCdib3JkZXItcmlnaHQtY29sb3InKSBpcyAncmdiKDI1NSwgMCwgMCknCitQ
QVNTIGRvY3VtZW50LmRlZmF1bHRWaWV3LmdldENvbXB1dGVkU3R5bGUoZWwsIG51bGwpLmdldFBy
b3BlcnR5VmFsdWUoJ2JvcmRlci1yaWdodC1jb2xvcicpIGlzICdyZ2IoMCwgMTI4LCAwKScKK1BB
U1MgZG9jdW1lbnQuZGVmYXVsdFZpZXcuZ2V0Q29tcHV0ZWRTdHlsZShlbCwgbnVsbCkuZ2V0UHJv
cGVydHlWYWx1ZSgnYm9yZGVyLXJpZ2h0LWNvbG9yJykgaXMgJ3JnYigwLCAxMjgsIDApJworCitQ
QVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKworCisKKwpJ
bmRleDogTGF5b3V0VGVzdHMvZmFzdC9kb20vSFRNTEVsZW1lbnQvYXR0ci1kaXItYXV0by5odG1s
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZG9tL0hUTUxFbGVtZW50L2F0dHItZGly
LWF1dG8uaHRtbAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2Zhc3QvZG9tL0hUTUxFbGVt
ZW50L2F0dHItZGlyLWF1dG8uaHRtbAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwzOCBAQAorPCFE
T0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorPG1ldGEgaHR0cC1lcXVpdj0iQ29udGVudC1U
eXBlIiBjb250ZW50PSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9dXRmLTgiPgorPGxpbmsgcmVsPSJzdHls
ZXNoZWV0IiBocmVmPSIuLi8uLi9qcy9yZXNvdXJjZXMvanMtdGVzdC1zdHlsZS5jc3MiPgorPHNj
cmlwdCBzcmM9Ii4uLy4uL2pzL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8
c3R5bGU+CisudGVzdERpdiB7LXdlYmtpdC1ib3JkZXItc3RhcnQ6IDVweCBzb2xpZCBncmVlbjsg
LXdlYmtpdC1ib3JkZXItZW5kOiA1cHggc29saWQgcmVkOyB9Cis8L3N0eWxlPgorPC9oZWFkPgor
PGJvZHk+Cis8cCBpZD0iZGVzY3JpcHRpb24iPjwvcD4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwvcD4K
KzxkaXYgaWQ9InJlc3VsdCI+PC9kaXY+Cis8ZGl2IGlkPSJwYXJlbnREaXYiPgorVGVzdCB0aGF0
IHRoZSBkaXJlY3Rpb24gb2YgZW5nbGlzaCB0ZXh0IGlzIGxlZnQtdG8tcmlnaHQuCis8ZGl2IGlk
PSJsdHIiIGRpcj0iYXV0byIgY2xhc3M9InRlc3REaXYiPlRlc3QgdGVzdCB0ZXN0PC9kaXY+CitU
ZXN0IHRoYXQgdGhlIGRpcmVjdGlvbiBvZiBoZWJyZXcgdGV4dCBpcyByaWdodC10by1sZWZ0Lgor
PGRpdiBpZD0icnRsMSIgZGlyPSJhdXRvIiBjbGFzcz0idGVzdERpdiI+157Xp9eV16gg15TXqded
INei15HXqNeZ16o8L2Rpdj4KK1Rlc3QgdGhhdCAnPycgZG9lcyBub3QgYWZmZWN0IHRoZSBkaXJl
Y3Rpb25hbGl0eS4KKzxkaXYgaWQ9InJ0bDIiIGRpcj0iYXV0byIgY2xhc3M9InRlc3REaXYiPjxz
cGFuPj8/PC9zcGFuPtee16fXldeoINeU16nXnSDXoteR16jXmdeqPHNwYW4+Pz88L3NwYW4+PC9k
aXY+Cis8L2Rpdj4KKzxzY3JpcHQ+CisKK2Rlc2NyaXB0aW9uKCdUZXN0IHRoYXQgd2hlbiBhbiBl
bGVtZW50IGhhcyBhIGRpciBhdHRyaWJ1dGUgd2l0aCB2YWx1ZSAiYXV0byIsIHRoZSBkaXJlY3Rp
b25hbGl0eSBvZiB0aGUgZWxlbWVudCBpcyBkZXRlcm1pbmVkIGJ5IHRoZSBmaXJzdCBjaGlsZCB0
ZXh0IG5vZGUgb2YgdGhhdCBlbGVtZW50LicpOworCit2YXIgZWwgPSBkb2N1bWVudC5nZXRFbGVt
ZW50QnlJZCgibHRyIik7CitzaG91bGRCZSgiZG9jdW1lbnQuZGVmYXVsdFZpZXcuZ2V0Q29tcHV0
ZWRTdHlsZShlbCwgbnVsbCkuZ2V0UHJvcGVydHlWYWx1ZSgnYm9yZGVyLXJpZ2h0LWNvbG9yJyki
LCAiJ3JnYigyNTUsIDAsIDApJyIpOworZWwgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgicnRs
MSIpOworc2hvdWxkQmUoImRvY3VtZW50LmRlZmF1bHRWaWV3LmdldENvbXB1dGVkU3R5bGUoZWws
IG51bGwpLmdldFByb3BlcnR5VmFsdWUoJ2JvcmRlci1yaWdodC1jb2xvcicpIiwgIidyZ2IoMCwg
MTI4LCAwKSciKTsKK2VsID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInJ0bDIiKTsKK3Nob3Vs
ZEJlKCJkb2N1bWVudC5kZWZhdWx0Vmlldy5nZXRDb21wdXRlZFN0eWxlKGVsLCBudWxsKS5nZXRQ
cm9wZXJ0eVZhbHVlKCdib3JkZXItcmlnaHQtY29sb3InKSIsICIncmdiKDAsIDEyOCwgMCknIik7
Citkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgicGFyZW50RGl2Iikuc3R5bGUuZGlzcGxheSA9ICJu
b25lIjsKK3dpbmRvdy5zdWNjZXNzZnVsbHlQYXJzZWQgPSB0cnVlOworPC9zY3JpcHQ+Cis8c2Ny
aXB0IHNyYz0iLi4vLi4vanMvcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+Cis8
L2JvZHk+Cis8L2h0bWw+CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2RvbS9IVE1MRWxlbWVudC9h
dHRyLWRpci12YWx1ZS1jaGFuZ2UtZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRl
c3RzL2Zhc3QvZG9tL0hUTUxFbGVtZW50L2F0dHItZGlyLXZhbHVlLWNoYW5nZS1leHBlY3RlZC50
eHQJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9mYXN0L2RvbS9IVE1MRWxlbWVudC9hdHRy
LWRpci12YWx1ZS1jaGFuZ2UtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDI0
IEBACitUZXN0IHRoYXQgd2hlbiBhbiBlbGVtZW50J3MgZGlyIGF0dHJpYnV0ZSBjaGFuZ2VzLCB0
aGUgZWxlbWVudCdzIGRpcmVjdGlvbmFsaXR5IGlzIHJlLWV2YWx1YXRlZC4KKworT24gc3VjY2Vz
cywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkg
IlRFU1QgQ09NUExFVEUiLgorCisKKworCisKKworUEFTUyBkb2N1bWVudC5kZWZhdWx0Vmlldy5n
ZXRDb21wdXRlZFN0eWxlKGVsLCBudWxsKS5nZXRQcm9wZXJ0eVZhbHVlKCdib3JkZXItcmlnaHQt
Y29sb3InKSBpcyAncmdiKDAsIDEyOCwgMCknCitQQVNTIGRvY3VtZW50LmRlZmF1bHRWaWV3Lmdl
dENvbXB1dGVkU3R5bGUoY2hpbGQyLCBudWxsKS5nZXRQcm9wZXJ0eVZhbHVlKCdib3JkZXItcmln
aHQtY29sb3InKSBpcyAncmdiKDAsIDEyOCwgMCknCitQQVNTIGRvY3VtZW50LmRlZmF1bHRWaWV3
LmdldENvbXB1dGVkU3R5bGUoZWwsIG51bGwpLmdldFByb3BlcnR5VmFsdWUoJ2JvcmRlci1yaWdo
dC1jb2xvcicpIGlzICdyZ2IoMjU1LCAwLCAwKScKK1BBU1MgZG9jdW1lbnQuZGVmYXVsdFZpZXcu
Z2V0Q29tcHV0ZWRTdHlsZShjaGlsZDIsIG51bGwpLmdldFByb3BlcnR5VmFsdWUoJ2JvcmRlci1y
aWdodC1jb2xvcicpIGlzICdyZ2IoMCwgMTI4LCAwKScKK1BBU1MgZG9jdW1lbnQuZGVmYXVsdFZp
ZXcuZ2V0Q29tcHV0ZWRTdHlsZShjaGlsZDIsIG51bGwpLmdldFByb3BlcnR5VmFsdWUoJ2JvcmRl
ci1yaWdodC1jb2xvcicpIGlzICdyZ2IoMjU1LCAwLCAwKScKK1BBU1MgZG9jdW1lbnQuZGVmYXVs
dFZpZXcuZ2V0Q29tcHV0ZWRTdHlsZShlbCwgbnVsbCkuZ2V0UHJvcGVydHlWYWx1ZSgnYm9yZGVy
LXJpZ2h0LWNvbG9yJykgaXMgJ3JnYigwLCAxMjgsIDApJworUEFTUyBkb2N1bWVudC5kZWZhdWx0
Vmlldy5nZXRDb21wdXRlZFN0eWxlKGNoaWxkMiwgbnVsbCkuZ2V0UHJvcGVydHlWYWx1ZSgnYm9y
ZGVyLXJpZ2h0LWNvbG9yJykgaXMgJ3JnYigyNTUsIDAsIDApJworCitQQVNTIHN1Y2Nlc3NmdWxs
eVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKworCisKKwpJbmRleDogTGF5b3V0VGVz
dHMvZmFzdC9kb20vSFRNTEVsZW1lbnQvYXR0ci1kaXItdmFsdWUtY2hhbmdlLmh0bWwKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9kb20vSFRNTEVsZW1lbnQvYXR0ci1kaXItdmFsdWUt
Y2hhbmdlLmh0bWwJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9mYXN0L2RvbS9IVE1MRWxl
bWVudC9hdHRyLWRpci12YWx1ZS1jaGFuZ2UuaHRtbAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw1
MCBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorPG1ldGEgaHR0cC1lcXVpdj0i
Q29udGVudC1UeXBlIiBjb250ZW50PSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9dXRmLTgiPgorPGxpbmsg
cmVsPSJzdHlsZXNoZWV0IiBocmVmPSIuLi8uLi9qcy9yZXNvdXJjZXMvanMtdGVzdC1zdHlsZS5j
c3MiPgorPHNjcmlwdCBzcmM9Ii4uLy4uL2pzL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9z
Y3JpcHQ+Cis8c3R5bGU+CisudGVzdERpdiB7LXdlYmtpdC1ib3JkZXItc3RhcnQ6IDVweCBzb2xp
ZCBncmVlbjsgLXdlYmtpdC1ib3JkZXItZW5kOiA1cHggc29saWQgcmVkOyB9Cis8L3N0eWxlPgor
PC9oZWFkPgorPGJvZHk+Cis8cCBpZD0iZGVzY3JpcHRpb24iPjwvcD4KKzxkaXYgaWQ9ImNvbnNv
bGUiPjwvcD4KKzxkaXYgaWQ9InJlc3VsdCI+PC9kaXY+CisKKzxkaXYgaWQ9InRlc3QiIGRpcj0i
YXV0byIgY2xhc3M9InRlc3REaXYiPjwvZGl2PgorPHNjcmlwdD4KKworZGVzY3JpcHRpb24oJ1Rl
c3QgdGhhdCB3aGVuIGFuIGVsZW1lbnRcJ3MgZGlyIGF0dHJpYnV0ZSBjaGFuZ2VzLCB0aGUgZWxl
bWVudFwncyBkaXJlY3Rpb25hbGl0eSBpcyByZS1ldmFsdWF0ZWQuJyk7CisKK3ZhciBlbCA9IGRv
Y3VtZW50LmdldEVsZW1lbnRCeUlkKCJ0ZXN0Iik7Cit2YXIgY2hpbGQgPSBkb2N1bWVudC5jcmVh
dGVFbGVtZW50KCJkaXYiKTsKK2NoaWxkLmlubmVySFRNTD0i157Xp9eV16gg15TXqdedINei15HX
qNeZ16oiOworZWwuYXBwZW5kQ2hpbGQoY2hpbGQpOwordmFyIGNoaWxkMiA9IGRvY3VtZW50LmNy
ZWF0ZUVsZW1lbnQoImRpdiIpOworY2hpbGQyLmlubmVySFRNTCA9ICLXnten15XXqCDXlNep150g
16LXkdeo15nXqiI7CitjaGlsZDIuc2V0QXR0cmlidXRlKCJkaXIiLCAiYXV0byIpOworY2hpbGQy
LnNldEF0dHJpYnV0ZSgiY2xhc3MiLCAidGVzdERpdiIpOworY2hpbGQuYXBwZW5kQ2hpbGQoY2hp
bGQyKTsKK3Nob3VsZEJlKCJkb2N1bWVudC5kZWZhdWx0Vmlldy5nZXRDb21wdXRlZFN0eWxlKGVs
LCBudWxsKS5nZXRQcm9wZXJ0eVZhbHVlKCdib3JkZXItcmlnaHQtY29sb3InKSIsICIncmdiKDAs
IDEyOCwgMCknIik7CitzaG91bGRCZSgiZG9jdW1lbnQuZGVmYXVsdFZpZXcuZ2V0Q29tcHV0ZWRT
dHlsZShjaGlsZDIsIG51bGwpLmdldFByb3BlcnR5VmFsdWUoJ2JvcmRlci1yaWdodC1jb2xvcicp
IiwgIidyZ2IoMCwgMTI4LCAwKSciKTsKKworZWwuc2V0QXR0cmlidXRlKCJkaXIiLCAibHRyIik7
CitzaG91bGRCZSgiZG9jdW1lbnQuZGVmYXVsdFZpZXcuZ2V0Q29tcHV0ZWRTdHlsZShlbCwgbnVs
bCkuZ2V0UHJvcGVydHlWYWx1ZSgnYm9yZGVyLXJpZ2h0LWNvbG9yJykiLCAiJ3JnYigyNTUsIDAs
IDApJyIpOworc2hvdWxkQmUoImRvY3VtZW50LmRlZmF1bHRWaWV3LmdldENvbXB1dGVkU3R5bGUo
Y2hpbGQyLCBudWxsKS5nZXRQcm9wZXJ0eVZhbHVlKCdib3JkZXItcmlnaHQtY29sb3InKSIsICIn
cmdiKDAsIDEyOCwgMCknIik7CisKK2NoaWxkMi5pbm5lckhUTUwgPSAiVGVzdCI7CitzaG91bGRC
ZSgiZG9jdW1lbnQuZGVmYXVsdFZpZXcuZ2V0Q29tcHV0ZWRTdHlsZShjaGlsZDIsIG51bGwpLmdl
dFByb3BlcnR5VmFsdWUoJ2JvcmRlci1yaWdodC1jb2xvcicpIiwgIidyZ2IoMjU1LCAwLCAwKSci
KTsKKworZWwuc2V0QXR0cmlidXRlKCJkaXIiLCAiYXV0byIpOworc2hvdWxkQmUoImRvY3VtZW50
LmRlZmF1bHRWaWV3LmdldENvbXB1dGVkU3R5bGUoZWwsIG51bGwpLmdldFByb3BlcnR5VmFsdWUo
J2JvcmRlci1yaWdodC1jb2xvcicpIiwgIidyZ2IoMCwgMTI4LCAwKSciKTsKK3Nob3VsZEJlKCJk
b2N1bWVudC5kZWZhdWx0Vmlldy5nZXRDb21wdXRlZFN0eWxlKGNoaWxkMiwgbnVsbCkuZ2V0UHJv
cGVydHlWYWx1ZSgnYm9yZGVyLXJpZ2h0LWNvbG9yJykiLCAiJ3JnYigyNTUsIDAsIDApJyIpOwor
CitlbC5zdHlsZS5kaXNwbGF5ID0gIm5vbmUiOworCit3aW5kb3cuc3VjY2Vzc2Z1bGx5UGFyc2Vk
ID0gdHJ1ZTsKKzwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uL2pzL3Jlc291cmNlcy9qcy10
ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>81377</attachid>
            <date>2011-02-05 15:04:58 -0800</date>
            <delta_ts>2011-02-06 07:24:08 -0800</delta_ts>
            <desc>Patch.</desc>
            <filename>50916.patch</filename>
            <type>text/plain</type>
            <size>39731</size>
            <attacher name="Yael">yael</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gNzc3NTEpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMjEgQEAK
KzIwMTEtMDItMDUgIFlhZWwgQWhhcm9uICA8eWFlbC5haGFyb25Abm9raWEuY29tPgorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZCBzdXBwb3J0IGZv
ciBkaXI9YXV0bworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9NTA5MTYKKworICAgICAgICBDaGFuZ2UgZGVmYXVsdFdyaXRpbmdEaXJlY3Rpb24oKSB0byBy
ZXR1cm4gaWYgdGhlIHdyaXRpbmcgZGlyZWN0aW9uCisgICAgICAgIHdhcyBkZXRlcm1pbmVkIGZy
b20gYSBsZXR0ZXIgd2l0aCBzdHJvbmcgZGlyZWN0aW9uYWxpdHkgb3Igbm90LgorCisgICAgICAg
ICogSmF2YVNjcmlwdENvcmUuZXhwOgorICAgICAgICAqIEphdmFTY3JpcHRDb3JlLm9yZGVyOgor
ICAgICAgICAqIHd0Zi90ZXh0L1N0cmluZ0ltcGwuY3BwOgorICAgICAgICAoV1RGOjpTdHJpbmdJ
bXBsOjpkZWZhdWx0V3JpdGluZ0RpcmVjdGlvbik6CisgICAgICAgICogd3RmL3RleHQvU3RyaW5n
SW1wbC5oOgorICAgICAgICAqIHd0Zi90ZXh0L1dURlN0cmluZy5oOgorICAgICAgICAoV1RGOjpT
dHJpbmc6OmRlZmF1bHRXcml0aW5nRGlyZWN0aW9uKToKKwogMjAxMS0wMi0wNCAgR2VvZmZyZXkg
R2FyZW4gIDxnZ2FyZW5AYXBwbGUuY29tPgogCiAgICAgICAgIFJldmlld2VkIGJ5IE9saXZlciBI
dW50LgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLmV4cAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUuZXhwCShyZXZp
c2lvbiA3NzQ4MykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS5leHAJ
KHdvcmtpbmcgY29weSkKQEAgLTMzNSw3ICszMzUsNyBAQCBfX1pOM1dURjEwU3RyaW5nSW1wbDE4
c2ltcGxpZnlXaGl0ZVNwYWNlCiBfX1pOM1dURjEwU3RyaW5nSW1wbDE5Y2hhcmFjdGVyU3RhcnRp
bmdBdEVqCiBfX1pOM1dURjEwU3RyaW5nSW1wbDE5Y3JlYXRlVW5pbml0aWFsaXplZEVqUlB0CiBf
X1pOM1dURjEwU3RyaW5nSW1wbDIyY29udGFpbnNPbmx5V2hpdGVzcGFjZUV2Ci1fX1pOM1dURjEw
U3RyaW5nSW1wbDIzZGVmYXVsdFdyaXRpbmdEaXJlY3Rpb25FdgorX19aTjNXVEYxMFN0cmluZ0lt
cGwyM2RlZmF1bHRXcml0aW5nRGlyZWN0aW9uRVBiCiBfX1pOM1dURjEwU3RyaW5nSW1wbDIzcmV2
ZXJzZUZpbmRJZ25vcmluZ0Nhc2VFUFMwX2oKIF9fWk4zV1RGMTBTdHJpbmdJbXBsMzdjcmVhdGVT
dHJpcHBpbmdOdWxsQ2hhcmFjdGVyc1Nsb3dDYXNlRVBLdGoKIF9fWk4zV1RGMTBTdHJpbmdJbXBs
NGZpbmRFUEZidEVqCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUu
b3JkZXIKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3Jl
Lm9yZGVyCShyZXZpc2lvbiA3NzQ4MykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2Ny
aXB0Q29yZS5vcmRlcgkod29ya2luZyBjb3B5KQpAQCAtMTQyNyw3ICsxNDI3LDcgQEAgX19aTjdX
ZWJDb3JlMTBTdHJpbmdJbXBsMTFyZXZlcnNlRmluZEV0aQogX19aTjNXVEYyM3dhaXRGb3JUaHJl
YWRDb21wbGV0aW9uRWpQUHYKIF9fWk4zV1RGMTRGYXN0TWFsbG9jWm9uZTEwc3RhdGlzdGljc0VQ
MTRfbWFsbG9jX3pvbmVfdFAxOW1hbGxvY19zdGF0aXN0aWNzX3QKIF9fWk5LN1dlYkNvcmU2U3Ry
aW5nMThzaW1wbGlmeVdoaXRlU3BhY2VFdgotX19aTjdXZWJDb3JlMTBTdHJpbmdJbXBsMjNkZWZh
dWx0V3JpdGluZ0RpcmVjdGlvbkV2CitfX1pOM1dURjEwU3RyaW5nSW1wbDIzZGVmYXVsdFdyaXRp
bmdEaXJlY3Rpb25FUGIKIF9fWk4zSlNDTDIwZGF0ZVByb3RvRnVuY1NldFRpbWVFUE5TXzlFeGVj
U3RhdGVFUE5TXzhKU09iamVjdEVOU183SlNWYWx1ZUVSS05TXzdBcmdMaXN0RQogX19aTjNKU0NM
MjFkYXRlUHJvdG9GdW5jR2V0TW9udGhFUE5TXzlFeGVjU3RhdGVFUE5TXzhKU09iamVjdEVOU183
SlNWYWx1ZUVSS05TXzdBcmdMaXN0RQogX19aTkszSlNDMTJEYXRlSW5zdGFuY2UyNmNhbGN1bGF0
ZUdyZWdvcmlhbkRhdGVUaW1lRVBOU185RXhlY1N0YXRlRQpJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL3d0Zi90ZXh0L1N0cmluZ0ltcGwuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS93dGYvdGV4dC9TdHJpbmdJbXBsLmNwcAkocmV2aXNpb24gNzc0ODMpCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvd3RmL3RleHQvU3RyaW5nSW1wbC5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTEwMDUsMTUgKzEwMDUsMjMgQEAgYm9vbCBlcXVhbElnbm9yaW5nTnVsbGl0eShTdHJp
bmdJbXBsKiBhLAogICAgIHJldHVybiBmYWxzZTsKIH0KIAotV1RGOjpVbmljb2RlOjpEaXJlY3Rp
b24gU3RyaW5nSW1wbDo6ZGVmYXVsdFdyaXRpbmdEaXJlY3Rpb24oKQorV1RGOjpVbmljb2RlOjpE
aXJlY3Rpb24gU3RyaW5nSW1wbDo6ZGVmYXVsdFdyaXRpbmdEaXJlY3Rpb24oYm9vbCogaGFzU3Ry
b25nRGlyZWN0aW9uYWxpdHkpCiB7CiAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IG1fbGVu
Z3RoOyArK2kpIHsKICAgICAgICAgV1RGOjpVbmljb2RlOjpEaXJlY3Rpb24gY2hhckRpcmVjdGlv
biA9IFdURjo6VW5pY29kZTo6ZGlyZWN0aW9uKG1fZGF0YVtpXSk7Ci0gICAgICAgIGlmIChjaGFy
RGlyZWN0aW9uID09IFdURjo6VW5pY29kZTo6TGVmdFRvUmlnaHQpCisgICAgICAgIGlmIChjaGFy
RGlyZWN0aW9uID09IFdURjo6VW5pY29kZTo6TGVmdFRvUmlnaHQpIHsKKyAgICAgICAgICAgIGlm
IChoYXNTdHJvbmdEaXJlY3Rpb25hbGl0eSkKKyAgICAgICAgICAgICAgICAqaGFzU3Ryb25nRGly
ZWN0aW9uYWxpdHkgPSB0cnVlOwogICAgICAgICAgICAgcmV0dXJuIFdURjo6VW5pY29kZTo6TGVm
dFRvUmlnaHQ7Ci0gICAgICAgIGlmIChjaGFyRGlyZWN0aW9uID09IFdURjo6VW5pY29kZTo6Umln
aHRUb0xlZnQgfHwgY2hhckRpcmVjdGlvbiA9PSBXVEY6OlVuaWNvZGU6OlJpZ2h0VG9MZWZ0QXJh
YmljKQorICAgICAgICB9CisgICAgICAgIGlmIChjaGFyRGlyZWN0aW9uID09IFdURjo6VW5pY29k
ZTo6UmlnaHRUb0xlZnQgfHwgY2hhckRpcmVjdGlvbiA9PSBXVEY6OlVuaWNvZGU6OlJpZ2h0VG9M
ZWZ0QXJhYmljKSB7CisgICAgICAgICAgICBpZiAoaGFzU3Ryb25nRGlyZWN0aW9uYWxpdHkpCisg
ICAgICAgICAgICAgICAgKmhhc1N0cm9uZ0RpcmVjdGlvbmFsaXR5ID0gdHJ1ZTsKICAgICAgICAg
ICAgIHJldHVybiBXVEY6OlVuaWNvZGU6OlJpZ2h0VG9MZWZ0OworICAgICAgICB9CiAgICAgfQor
ICAgIGlmIChoYXNTdHJvbmdEaXJlY3Rpb25hbGl0eSkKKyAgICAgICAgKmhhc1N0cm9uZ0RpcmVj
dGlvbmFsaXR5ID0gZmFsc2U7CiAgICAgcmV0dXJuIFdURjo6VW5pY29kZTo6TGVmdFRvUmlnaHQ7
CiB9CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS93dGYvdGV4dC9TdHJpbmdJbXBsLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3d0Zi90ZXh0L1N0cmluZ0ltcGwu
aAkocmV2aXNpb24gNzc0ODMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvd3RmL3RleHQvU3Ry
aW5nSW1wbC5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMTYsNyArMzE2LDcgQEAgcHVibGljOgogICAg
IFBhc3NSZWZQdHI8U3RyaW5nSW1wbD4gcmVwbGFjZShTdHJpbmdJbXBsKiwgU3RyaW5nSW1wbCop
OwogICAgIFBhc3NSZWZQdHI8U3RyaW5nSW1wbD4gcmVwbGFjZSh1bnNpZ25lZCBpbmRleCwgdW5z
aWduZWQgbGVuLCBTdHJpbmdJbXBsKik7CiAKLSAgICBXVEY6OlVuaWNvZGU6OkRpcmVjdGlvbiBk
ZWZhdWx0V3JpdGluZ0RpcmVjdGlvbigpOworICAgIFdURjo6VW5pY29kZTo6RGlyZWN0aW9uIGRl
ZmF1bHRXcml0aW5nRGlyZWN0aW9uKGJvb2wqIGhhc1N0cm9uZ0RpcmVjdGlvbmFsaXR5ID0gMCk7
CiAKICNpZiBQTEFURk9STShDRikKICAgICBDRlN0cmluZ1JlZiBjcmVhdGVDRlN0cmluZygpOwpJ
bmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3d0Zi90ZXh0L1dURlN0cmluZy5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS93dGYvdGV4dC9XVEZTdHJpbmcuaAkocmV2aXNp
b24gNzc0ODMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvd3RmL3RleHQvV1RGU3RyaW5nLmgJ
KHdvcmtpbmcgY29weSkKQEAgLTMyNiw3ICszMjYsMTQgQEAgcHVibGljOgogICAgIHN0YXRpYyBT
dHJpbmcgZnJvbVVURjhXaXRoTGF0aW4xRmFsbGJhY2soY29uc3QgY2hhciosIHNpemVfdCk7CiAg
ICAgCiAgICAgLy8gRGV0ZXJtaW5lcyB0aGUgd3JpdGluZyBkaXJlY3Rpb24gdXNpbmcgdGhlIFVu
aWNvZGUgQmlkaSBBbGdvcml0aG0gcnVsZXMgUDIgYW5kIFAzLgotICAgIFdURjo6VW5pY29kZTo6
RGlyZWN0aW9uIGRlZmF1bHRXcml0aW5nRGlyZWN0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9pbXBs
ID8gbV9pbXBsLT5kZWZhdWx0V3JpdGluZ0RpcmVjdGlvbigpIDogV1RGOjpVbmljb2RlOjpMZWZ0
VG9SaWdodDsgfQorICAgIFdURjo6VW5pY29kZTo6RGlyZWN0aW9uIGRlZmF1bHRXcml0aW5nRGly
ZWN0aW9uKGJvb2wqIGhhc1N0cm9uZ0RpcmVjdGlvbmFsaXR5ID0gMCkgY29uc3QKKyAgICB7Cisg
ICAgICAgIGlmIChtX2ltcGwpCisgICAgICAgICAgICByZXR1cm4gbV9pbXBsLT5kZWZhdWx0V3Jp
dGluZ0RpcmVjdGlvbihoYXNTdHJvbmdEaXJlY3Rpb25hbGl0eSk7CisgICAgICAgIGlmIChoYXNT
dHJvbmdEaXJlY3Rpb25hbGl0eSkKKyAgICAgICAgICAgICpoYXNTdHJvbmdEaXJlY3Rpb25hbGl0
eSA9IGZhbHNlOworICAgICAgICByZXR1cm4gV1RGOjpVbmljb2RlOjpMZWZ0VG9SaWdodDsKKyAg
ICB9CiAKICAgICBib29sIGNvbnRhaW5zT25seUFTQ0lJKCkgY29uc3QgeyByZXR1cm4gY2hhcmFj
dGVyc0FyZUFsbEFTQ0lJKGNoYXJhY3RlcnMoKSwgbGVuZ3RoKCkpOyB9CiAgICAgYm9vbCBjb250
YWluc09ubHlMYXRpbjEoKSBjb25zdCB7IHJldHVybiBjaGFyYWN0ZXJzQXJlQWxsTGF0aW4xKGNo
YXJhY3RlcnMoKSwgbGVuZ3RoKCkpOyB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCShyZXZpc2lvbiA3Nzc1MSkK
KysrIFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDUz
IEBACisyMDExLTAyLTA1ICBZYWVsIEFoYXJvbiAgPHlhZWwuYWhhcm9uQG5va2lhLmNvbT4KKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGQgc3VwcG9y
dCBmb3IgZGlyPWF1dG8KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTUwOTE2CisKKyAgICAgICAgV2hlbiBhbiBlbGVtZW50IGhhcyBkaXIgYXR0cmlidXRl
IHdpdGggdmFsdWUgImF1dG8iLCBjYWxsIGRlZmF1bHRXcml0aW5nTW9kZQorICAgICAgICB0byBm
aW5kIGl0cyBkaXJlY3Rpb25hbGl0eS4KKyAgICAgICAgQWRkZWQgYSBmbGFnIFNlbGZPckFuY2Vz
dG9ySGFzRGlyQXV0b0ZsYWcsIGFuZCBhZGRlZCBob29rcyBpbiB0aGUgRE9NIHRvIHNldAorICAg
ICAgICBhbmQgY2hlY2sgdGhpcyBmbGFnLiBUaGlzIGZsYWcgaXMgc2V0IG9uIGV2ZXJ5IG5vZGUg
YmV0d2VlbiBhbiBlbGVtZW50IHdpdGgKKyAgICAgICAgZGlyPWF1dG8gYXR0cmlidXRlIGFuZCBp
dHMgZmlyc3QgdGV4dCBub2RlLiBDaGFuZ2VzIGluIHRoZSBET00gYmV0d2VlbiB0aG9zZQorICAg
ICAgICBlbGVtZW50cyB3aWxsIHRyaWdnZXIgcmUtZXZhbHVhdGluZyB0aGUgZGlyZWN0aW9uYWxp
dHksIGJ1dCBjaGFuZ2VkIG5vdAorICAgICAgICBiZXR3ZWVuIHRob3NlIGVsZW1lbnQgZG8gbm90
IG5lZWQgdG8gYmUgY29uY2VybmVkLgorICAgICAgICBUaGUgRE9NIGhvb2tzIHdlcmUgYWRkZWQg
dG8gY2hpbGRyZW5DaGFuZ2VkLCBhbmQgdG8gcGFyc2VNYXBwZWRBdHRyaWJ1dGUuCisgICAgICAg
IFRoZSBkaXJlY3Rpb25hbGl0eSBpcyBldmFsdWF0ZWQgd2hlbiBjaGlsZHJlbiBhcmUgYWRkZWQs
IGJ1dCBub3Qgd2hlbiB0aGV5IGFyZQorICAgICAgICByZW1vdmVkLiBPbmNlIHRoZXkgYXJlIHJl
LWFkZGVkLCB0aGUgZGlyZWN0aW9uYWxpdHkgd2lsbCBiZSBldmFsdWF0ZWQuCisKKyAgICAgICAg
QWRkZWQgMiBzdGF0aWMgQ1NTTXV0YWJsZVN0eWxlRGVjbGFyYXRpb25zIHRvIGJlIHVzZWQgZm9y
IGVsZW1lbnRzIHdpdGggZGlyPWF1dG8uCisgICAgICAgIFdlIGNhbm5vdCB1c2UgdGhlIG1hcHBl
ZCBkZWNsYXJhdGlvbiwgYmVjYXVzZSBpdCBjYW4gdGFrZSBvbmx5IG9uZSB2YWx1ZS4KKworICAg
ICAgICBUZXN0czogZmFzdC9kb20vSFRNTEVsZW1lbnQvYXR0ci1kaXItYXV0by1jaGFuZ2UtY2hp
bGQtbm9kZS5odG1sCisgICAgICAgICAgICAgICBmYXN0L2RvbS9IVE1MRWxlbWVudC9hdHRyLWRp
ci1hdXRvLWNoYW5nZS10ZXh0Lmh0bWwKKyAgICAgICAgICAgICAgIGZhc3QvZG9tL0hUTUxFbGVt
ZW50L2F0dHItZGlyLWF1dG8tY2hpbGRyZW4uaHRtbAorICAgICAgICAgICAgICAgZmFzdC9kb20v
SFRNTEVsZW1lbnQvYXR0ci1kaXItYXV0by1yZW1vdmUtYWRkLWNoaWxkcmVuLmh0bWwKKyAgICAg
ICAgICAgICAgIGZhc3QvZG9tL0hUTUxFbGVtZW50L2F0dHItZGlyLWF1dG8uaHRtbAorICAgICAg
ICAgICAgICAgZmFzdC9kb20vSFRNTEVsZW1lbnQvYXR0ci1kaXItdmFsdWUtY2hhbmdlLmh0bWwK
KworICAgICAgICAqIGNzcy9DU1NTdHlsZVNlbGVjdG9yLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OmxlZnRUb1JpZ2h0RGVjbGFyYXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6cmlnaHRUb0xlZnRE
ZWNsYXJhdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpDU1NTdHlsZVNlbGVjdG9yOjpjYW5TaGFy
ZVN0eWxlV2l0aEVsZW1lbnQpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTU3R5bGVTZWxlY3Rvcjo6
c3R5bGVGb3JFbGVtZW50KToKKyAgICAgICAgKiBkb20vRWxlbWVudC5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpFbGVtZW50OjpjaGlsZHJlbkNoYW5nZWQpOgorICAgICAgICAoV2ViQ29yZTo6RWxl
bWVudDo6ZGlyZWN0aW9uYWxpdHlJZmhhc0RpckF1dG9BdHRyaWJ1dGUpOgorICAgICAgICAoV2Vi
Q29yZTo6RWxlbWVudDo6ZGlyZWN0aW9uYWxpdHkpOgorICAgICAgICAoV2ViQ29yZTo6RWxlbWVu
dDo6c2V0SGFzRGlyQXV0b0ZsYWdSZWN1cnNpdmVseSk6CisgICAgICAgIChXZWJDb3JlOjpFbGVt
ZW50OjpkaXJBdHRyaWJ1dGVDaGFuZ2VkKToKKyAgICAgICAgKFdlYkNvcmU6OkVsZW1lbnQ6OmFk
anVzdERpcmVjdGlvbmFsaXR5SWZOZWVkZWRBZnRlckNoaWxkQXR0cmlidXRlQ2hhbmdlZCk6Cisg
ICAgICAgIChXZWJDb3JlOjpFbGVtZW50OjpjYWxjdWxhdGVBbmRBZGp1c3REaXJlY3Rpb25hbGl0
eSk6CisgICAgICAgIChXZWJDb3JlOjpFbGVtZW50OjphZGp1c3REaXJlY3Rpb25hbGl0eUlmTmVl
ZGVkQWZ0ZXJDaGlsZHJlbkNoYW5nZWQpOgorICAgICAgICAqIGRvbS9FbGVtZW50Lmg6CisgICAg
ICAgICogZG9tL05vZGUuaDoKKyAgICAgICAgKFdlYkNvcmU6Ok5vZGU6OnNlbGZPckFuY2VzdG9y
SGFzRGlyQXV0b0F0dHJpYnV0ZSk6CisgICAgICAgIChXZWJDb3JlOjpOb2RlOjpzZXRTZWxmT3JB
bmNlc3Rvckhhc0RpckF1dG9BdHRyaWJ1dGUpOgorICAgICAgICAqIGh0bWwvSFRNTEVsZW1lbnQu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTEVsZW1lbnQ6Om1hcFRvRW50cnkpOgorICAgICAg
ICAoV2ViQ29yZTo6SFRNTEVsZW1lbnQ6OnBhcnNlTWFwcGVkQXR0cmlidXRlKToKKwogMjAxMS0w
Mi0wNSAgQW5kZXJzIENhcmxzc29uICA8YW5kZXJzY2FAYXBwbGUuY29tPgogCiAgICAgICAgIFJl
dmlld2VkIGJ5IERhcmluIEFkbGVyLgpJbmRleDogU291cmNlL1dlYkNvcmUvY3NzL0NTU1N0eWxl
U2VsZWN0b3IuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2Nzcy9DU1NTdHlsZVNl
bGVjdG9yLmNwcAkocmV2aXNpb24gNzc0ODMpCisrKyBTb3VyY2UvV2ViQ29yZS9jc3MvQ1NTU3R5
bGVTZWxlY3Rvci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ2Myw2ICs0NjMsMjggQEAgc3RhdGlj
IGNvbnN0IE1lZGlhUXVlcnlFdmFsdWF0b3ImIHByaW50RQogICAgIHJldHVybiBzdGF0aWNQcmlu
dEV2YWw7CiB9CiAKK3N0YXRpYyBDU1NNdXRhYmxlU3R5bGVEZWNsYXJhdGlvbiogbGVmdFRvUmln
aHREZWNsYXJhdGlvbigpCit7CisgICAgc3RhdGljIFJlZlB0cjxDU1NNdXRhYmxlU3R5bGVEZWNs
YXJhdGlvbj4gbGVmdFRvUmlnaHREZWNsID0gMDsKKyAgICBpZiAoIWxlZnRUb1JpZ2h0RGVjbCkg
eworICAgICAgICBsZWZ0VG9SaWdodERlY2wgPSBDU1NNdXRhYmxlU3R5bGVEZWNsYXJhdGlvbjo6
Y3JlYXRlKCk7CisgICAgICAgIGxlZnRUb1JpZ2h0RGVjbC0+c2V0UHJvcGVydHkoQ1NTUHJvcGVy
dHlEaXJlY3Rpb24sICJsdHIiLCBmYWxzZSwgZmFsc2UpOworICAgICAgICBsZWZ0VG9SaWdodERl
Y2wtPnNldFN0cmljdFBhcnNpbmcoZmFsc2UpOworICAgIH0KKyAgICByZXR1cm4gbGVmdFRvUmln
aHREZWNsLmdldCgpOworfQorCitzdGF0aWMgQ1NTTXV0YWJsZVN0eWxlRGVjbGFyYXRpb24qIHJp
Z2h0VG9MZWZ0RGVjbGFyYXRpb24oKQoreworICAgIHN0YXRpYyBSZWZQdHI8Q1NTTXV0YWJsZVN0
eWxlRGVjbGFyYXRpb24+IHJpZ2h0VG9MZWZ0RGVjbCA9IDA7CisgICAgaWYgKCFyaWdodFRvTGVm
dERlY2wpIHsKKyAgICAgICAgcmlnaHRUb0xlZnREZWNsID0gQ1NTTXV0YWJsZVN0eWxlRGVjbGFy
YXRpb246OmNyZWF0ZSgpOworICAgICAgICByaWdodFRvTGVmdERlY2wtPnNldFByb3BlcnR5KENT
U1Byb3BlcnR5RGlyZWN0aW9uLCAicnRsIiwgZmFsc2UsIGZhbHNlKTsKKyAgICAgICAgcmlnaHRU
b0xlZnREZWNsLT5zZXRTdHJpY3RQYXJzaW5nKGZhbHNlKTsKKyAgICB9CisgICAgcmV0dXJuIHJp
Z2h0VG9MZWZ0RGVjbC5nZXQoKTsKK30KKwogQ1NTU3R5bGVTZWxlY3Rvcjo6Q1NTU3R5bGVTZWxl
Y3RvcihEb2N1bWVudCogZG9jdW1lbnQsIFN0eWxlU2hlZXRMaXN0KiBzdHlsZVNoZWV0cywgQ1NT
U3R5bGVTaGVldCogbWFwcGVkRWxlbWVudFNoZWV0LAogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBDU1NTdHlsZVNoZWV0KiBwYWdlVXNlclNoZWV0LCBjb25zdCBWZWN0b3I8UmVm
UHRyPENTU1N0eWxlU2hlZXQ+ID4qIHBhZ2VHcm91cFVzZXJTaGVldHMsCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGJvb2wgc3RyaWN0UGFyc2luZywgYm9vbCBtYXRjaEF1dGhv
ckFuZFVzZXJTdHlsZXMpCkBAIC0xMDU4LDYgKzEwODAsOSBAQCBib29sIENTU1N0eWxlU2VsZWN0
b3I6OmNhblNoYXJlU3R5bGVXaXRoCiAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogI2Vu
ZGlmCiAKKyAgICAgICAgICAgIGlmIChlcXVhbElnbm9yaW5nQ2FzZShzLT5mYXN0R2V0QXR0cmli
dXRlKGRpckF0dHIpLCAiYXV0byIpIHx8IGVxdWFsSWdub3JpbmdDYXNlKG1fZWxlbWVudC0+ZmFz
dEdldEF0dHJpYnV0ZShkaXJBdHRyKSwgImF1dG8iKSkKKyAgICAgICAgICAgICAgICByZXR1cm4g
ZmFsc2U7CisKICAgICAgICAgICAgIGJvb2wgY2xhc3Nlc01hdGNoID0gdHJ1ZTsKICAgICAgICAg
ICAgIGlmIChzLT5oYXNDbGFzcygpKSB7CiAgICAgICAgICAgICAgICAgY29uc3QgQXRvbWljU3Ry
aW5nJiBjbGFzczEgPSBtX2VsZW1lbnQtPmZhc3RHZXRBdHRyaWJ1dGUoY2xhc3NBdHRyKTsKQEAg
LTEzNTUsNiArMTM4MCwxMCBAQCBQYXNzUmVmUHRyPFJlbmRlclN0eWxlPiBDU1NTdHlsZVNlbGVj
dG9yCiAgICAgICAgICAgICAgICAgICAgICAgICBhZGRNYXRjaGVkRGVjbGFyYXRpb24obV9hZGRp
dGlvbmFsQXR0cmlidXRlU3R5bGVEZWNsc1tpXSk7CiAgICAgICAgICAgICAgICAgfQogICAgICAg
ICAgICAgfQorICAgICAgICAgICAgYm9vbCBpc0F1dG87CisgICAgICAgICAgICBUZXh0RGlyZWN0
aW9uIHRleHREaXJlY3Rpb24gPSBtX3N0eWxlZEVsZW1lbnQtPmRpcmVjdGlvbmFsaXR5SWZoYXNE
aXJBdXRvQXR0cmlidXRlKGlzQXV0byk7CisgICAgICAgICAgICBpZiAoaXNBdXRvKQorICAgICAg
ICAgICAgICAgIGFkZE1hdGNoZWREZWNsYXJhdGlvbih0ZXh0RGlyZWN0aW9uID09IExUUiA/IGxl
ZnRUb1JpZ2h0RGVjbGFyYXRpb24oKSA6IHJpZ2h0VG9MZWZ0RGVjbGFyYXRpb24oKSk7CiAgICAg
ICAgIH0KICAgICAKICAgICAgICAgLy8gNi4gQ2hlY2sgdGhlIHJ1bGVzIGluIGF1dGhvciBzaGVl
dHMgbmV4dC4KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5jcHAJKHJldmlzaW9uIDc3NDgzKQorKysg
U291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMjIxLDYg
KzEyMjEsOSBAQCB2b2lkIEVsZW1lbnQ6OmNoaWxkcmVuQ2hhbmdlZChib29sIGNoYW5nCiAgICAg
Q29udGFpbmVyTm9kZTo6Y2hpbGRyZW5DaGFuZ2VkKGNoYW5nZWRCeVBhcnNlciwgYmVmb3JlQ2hh
bmdlLCBhZnRlckNoYW5nZSwgY2hpbGRDb3VudERlbHRhKTsKICAgICBpZiAoIWNoYW5nZWRCeVBh
cnNlcikKICAgICAgICAgY2hlY2tGb3JTaWJsaW5nU3R5bGVDaGFuZ2VzKHRoaXMsIHJlbmRlclN0
eWxlKCksIGZhbHNlLCBiZWZvcmVDaGFuZ2UsIGFmdGVyQ2hhbmdlLCBjaGlsZENvdW50RGVsdGEp
OworCisgICAgaWYgKGlzSFRNTEVsZW1lbnQoKSkKKyAgICAgICAgYWRqdXN0RGlyZWN0aW9uYWxp
dHlJZk5lZWRlZEFmdGVyQ2hpbGRyZW5DaGFuZ2VkKGJlZm9yZUNoYW5nZSwgY2hpbGRDb3VudERl
bHRhKTsKIH0KIAogdm9pZCBFbGVtZW50OjpmaW5pc2hQYXJzaW5nQ2hpbGRyZW4oKQpAQCAtMTgy
MSw0ICsxODI0LDEzNyBAQCBib29sIEVsZW1lbnQ6OmlzU3BlbGxDaGVja2luZ0VuYWJsZWQoKSBj
CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKK1RleHREaXJlY3Rpb24gRWxlbWVudDo6ZGlyZWN0aW9u
YWxpdHlJZmhhc0RpckF1dG9BdHRyaWJ1dGUoYm9vbCYgaXNBdXRvKSBjb25zdAoreworICAgIGlm
ICghKHNlbGZPckFuY2VzdG9ySGFzRGlyQXV0b0F0dHJpYnV0ZSgpICYmIGVxdWFsSWdub3JpbmdD
YXNlKGdldEF0dHJpYnV0ZShkaXJBdHRyKSwgImF1dG8iKSkpIHsKKyAgICAgICAgaXNBdXRvID0g
ZmFsc2U7CisgICAgICAgIHJldHVybiBMVFI7CisgICAgfQorCisgICAgaXNBdXRvID0gdHJ1ZTsK
KyAgICByZXR1cm4gZGlyZWN0aW9uYWxpdHkoKTsKK30KKworVGV4dERpcmVjdGlvbiBFbGVtZW50
OjpkaXJlY3Rpb25hbGl0eShOb2RlKiogc3Ryb25nRGlyZWN0aW9uYWxpdHlUZXh0Tm9kZSkgY29u
c3QKK3sKKyAgICBOb2RlKiBub2RlID0gZmlyc3RDaGlsZCgpOworICAgIHdoaWxlIChub2RlKSB7
CisgICAgICAgIC8vIFNraXAgYmRpLCBzY3JpcHQgYW5kIHN0eWxlIGVsZW1lbnRzCisgICAgICAg
IGlmIChlcXVhbElnbm9yaW5nQ2FzZShub2RlLT5ub2RlTmFtZSgpLCAiYmRpIikgfHwgbm9kZS0+
aGFzVGFnTmFtZShzY3JpcHRUYWcpIHx8IG5vZGUtPmhhc1RhZ05hbWUoc3R5bGVUYWcpKSB7Cisg
ICAgICAgICAgICBub2RlID0gbm9kZS0+dHJhdmVyc2VOZXh0U2libGluZyh0aGlzKTsKKyAgICAg
ICAgICAgIGNvbnRpbnVlOworICAgICAgICB9CisKKyAgICAgICAgLy8gU2tpcCBlbGVtZW50cyB3
aXRoIHZhbGlkIGRpciBhdHRyaWJ1dGUKKyAgICAgICAgaWYgKG5vZGUtPmlzRWxlbWVudE5vZGUo
KSkgeworICAgICAgICAgICAgQXRvbWljU3RyaW5nIGRpckF0dHJpYnV0ZVZhbHVlID0gdG9FbGVt
ZW50KG5vZGUpLT5mYXN0R2V0QXR0cmlidXRlKGRpckF0dHIpOworICAgICAgICAgICAgaWYgKGVx
dWFsSWdub3JpbmdDYXNlKGRpckF0dHJpYnV0ZVZhbHVlLCAicnRsIikgfHwgZXF1YWxJZ25vcmlu
Z0Nhc2UoZGlyQXR0cmlidXRlVmFsdWUsICJsdHIiKSB8fCBlcXVhbElnbm9yaW5nQ2FzZShkaXJB
dHRyaWJ1dGVWYWx1ZSwgImF1dG8iKSkgeworICAgICAgICAgICAgICAgIG5vZGUgPSBub2RlLT50
cmF2ZXJzZU5leHRTaWJsaW5nKHRoaXMpOworICAgICAgICAgICAgICAgIGNvbnRpbnVlOworICAg
ICAgICAgICAgfQorICAgICAgICB9CisKKyAgICAgICAgaWYgKG5vZGUtPmlzVGV4dE5vZGUoKSkg
eworICAgICAgICAgICAgYm9vbCBoYXNTdHJvbmdEaXJlY3Rpb25hbGl0eTsKKyAgICAgICAgICAg
IFdURjo6VW5pY29kZTo6RGlyZWN0aW9uIHRleHREaXJlY3Rpb24gPSBub2RlLT50ZXh0Q29udGVu
dCh0cnVlKS5kZWZhdWx0V3JpdGluZ0RpcmVjdGlvbigmaGFzU3Ryb25nRGlyZWN0aW9uYWxpdHkp
OworICAgICAgICAgICAgaWYgKGhhc1N0cm9uZ0RpcmVjdGlvbmFsaXR5KSB7CisgICAgICAgICAg
ICAgICAgaWYgKHN0cm9uZ0RpcmVjdGlvbmFsaXR5VGV4dE5vZGUpCisgICAgICAgICAgICAgICAg
ICAgICpzdHJvbmdEaXJlY3Rpb25hbGl0eVRleHROb2RlID0gbm9kZTsKKyAgICAgICAgICAgICAg
ICByZXR1cm4gKHRleHREaXJlY3Rpb24gPT0gV1RGOjpVbmljb2RlOjpMZWZ0VG9SaWdodCkgPyBM
VFIgOiBSVEw7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgbm9kZSA9IG5vZGUt
PnRyYXZlcnNlTmV4dE5vZGUodGhpcyk7CisgICAgfQorICAgIGlmIChzdHJvbmdEaXJlY3Rpb25h
bGl0eVRleHROb2RlKQorICAgICAgICAqc3Ryb25nRGlyZWN0aW9uYWxpdHlUZXh0Tm9kZSA9IDA7
CisgICAgcmV0dXJuIExUUjsKK30KKwordm9pZCBFbGVtZW50OjpzZXRIYXNEaXJBdXRvRmxhZ1Jl
Y3Vyc2l2ZWx5KGJvb2wgZmxhZywgTm9kZSogbGFzdE5vZGUpCit7CisgICAgc2V0U2VsZk9yQW5j
ZXN0b3JIYXNEaXJBdXRvQXR0cmlidXRlKGZsYWcpOworCisgICAgTm9kZSogbm9kZSA9IGZpcnN0
Q2hpbGQoKTsKKworICAgIHdoaWxlIChub2RlKSB7CisgICAgICAgIGlmIChub2RlLT5zZWxmT3JB
bmNlc3Rvckhhc0RpckF1dG9BdHRyaWJ1dGUoKSA9PSBmbGFnKQorICAgICAgICAgICAgcmV0dXJu
OworCisgICAgICAgIGlmIChub2RlLT5pc0hUTUxFbGVtZW50KCkgJiYgdG9FbGVtZW50KG5vZGUp
LT5oYXNBdHRyaWJ1dGUoZGlyQXR0cikpIHsKKyAgICAgICAgICAgIGlmIChub2RlID09IGxhc3RO
b2RlKQorICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgIG5vZGUgPSBub2RlLT50
cmF2ZXJzZU5leHRTaWJsaW5nKHRoaXMpOworICAgICAgICAgICAgY29udGludWU7CisgICAgICAg
IH0KKyAgICAgICAgbm9kZS0+c2V0U2VsZk9yQW5jZXN0b3JIYXNEaXJBdXRvQXR0cmlidXRlKGZs
YWcpOworICAgICAgICBpZiAobm9kZSA9PSBsYXN0Tm9kZSkKKyAgICAgICAgICAgIHJldHVybjsK
KyAgICAgICAgbm9kZSA9IG5vZGUtPnRyYXZlcnNlTmV4dE5vZGUodGhpcyk7CisgICAgfQorfQor
Cit2b2lkIEVsZW1lbnQ6OmRpckF0dHJpYnV0ZUNoYW5nZWQoQXR0cmlidXRlKiBhdHRyaWJ1dGUp
Cit7CisgICAgRWxlbWVudCogcGFyZW50ID0gcGFyZW50RWxlbWVudCgpOworCisgICAgaWYgKHBh
cmVudCAmJiBwYXJlbnQtPnNlbGZPckFuY2VzdG9ySGFzRGlyQXV0b0F0dHJpYnV0ZSgpKQorICAg
ICAgICBwYXJlbnQtPmFkanVzdERpcmVjdGlvbmFsaXR5SWZOZWVkZWRBZnRlckNoaWxkQXR0cmli
dXRlQ2hhbmdlZCh0aGlzKTsKKworICAgIGlmIChlcXVhbElnbm9yaW5nQ2FzZShhdHRyaWJ1dGUt
PnZhbHVlKCksICJhdXRvIikpCisgICAgICAgIGNhbGN1bGF0ZUFuZEFkanVzdERpcmVjdGlvbmFs
aXR5KCk7Cit9CisKK3ZvaWQgRWxlbWVudDo6YWRqdXN0RGlyZWN0aW9uYWxpdHlJZk5lZWRlZEFm
dGVyQ2hpbGRBdHRyaWJ1dGVDaGFuZ2VkKEVsZW1lbnQqIGNoaWxkKQoreworICAgIEFTU0VSVChz
ZWxmT3JBbmNlc3Rvckhhc0RpckF1dG9BdHRyaWJ1dGUoKSk7CisgICAgTm9kZSogc3Ryb25nRGly
ZWN0aW9uYWxpdHlUZXh0Tm9kZTsKKyAgICBUZXh0RGlyZWN0aW9uIHRleHREaXJlY3Rpb24gPSBk
aXJlY3Rpb25hbGl0eSgmc3Ryb25nRGlyZWN0aW9uYWxpdHlUZXh0Tm9kZSk7CisgICAgY2hpbGQt
PnNldEhhc0RpckF1dG9GbGFnUmVjdXJzaXZlbHkoZmFsc2UpOworICAgIGlmIChyZW5kZXJlcigp
ICYmIHJlbmRlcmVyKCktPnN0eWxlKCkgJiYgcmVuZGVyZXIoKS0+c3R5bGUoKS0+ZGlyZWN0aW9u
KCkgIT0gdGV4dERpcmVjdGlvbikgeworICAgICAgICBFbGVtZW50KiBlbGVtZW50VG9BZGp1c3Qg
PSB0aGlzOworICAgICAgICBmb3IgKDsgZWxlbWVudFRvQWRqdXN0OyBlbGVtZW50VG9BZGp1c3Qg
PSBlbGVtZW50VG9BZGp1c3QtPnBhcmVudEVsZW1lbnQoKSkgeworICAgICAgICAgICAgaWYgKGVs
ZW1lbnRUb0FkanVzdC0+aGFzQXR0cmlidXRlKGRpckF0dHIpKSB7CisgICAgICAgICAgICAgICAg
ZWxlbWVudFRvQWRqdXN0LT5zZXROZWVkc1N0eWxlUmVjYWxjKCk7CisgICAgICAgICAgICAgICAg
cmV0dXJuOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfQorfQorCit2b2lkIEVsZW1l
bnQ6OmNhbGN1bGF0ZUFuZEFkanVzdERpcmVjdGlvbmFsaXR5KCkKK3sKKyAgICBOb2RlKiBzdHJv
bmdEaXJlY3Rpb25hbGl0eVRleHROb2RlOworICAgIFRleHREaXJlY3Rpb24gdGV4dERpcmVjdGlv
biA9IGRpcmVjdGlvbmFsaXR5KCZzdHJvbmdEaXJlY3Rpb25hbGl0eVRleHROb2RlKTsKKyAgICBz
ZXRIYXNEaXJBdXRvRmxhZ1JlY3Vyc2l2ZWx5KHRydWUsIHN0cm9uZ0RpcmVjdGlvbmFsaXR5VGV4
dE5vZGUpOworICAgIGlmIChyZW5kZXJlcigpICYmIHJlbmRlcmVyKCktPnN0eWxlKCkgJiYgcmVu
ZGVyZXIoKS0+c3R5bGUoKS0+ZGlyZWN0aW9uKCkgIT0gdGV4dERpcmVjdGlvbikKKyAgICAgICAg
c2V0TmVlZHNTdHlsZVJlY2FsYygpOworfQorCit2b2lkIEVsZW1lbnQ6OmFkanVzdERpcmVjdGlv
bmFsaXR5SWZOZWVkZWRBZnRlckNoaWxkcmVuQ2hhbmdlZChOb2RlKiBiZWZvcmVDaGFuZ2UsIGlu
dCBjaGlsZENvdW50RGVsdGEpCit7CisgICAgaWYgKGNoaWxkQ291bnREZWx0YSA+IDApIHsKKyAg
ICAgICAgTm9kZSogbm9kZSA9IGJlZm9yZUNoYW5nZSA/IGJlZm9yZUNoYW5nZS0+dHJhdmVyc2VO
ZXh0U2libGluZygpIDogMDsKKyAgICAgICAgZm9yIChpbnQgY291bnRlciA9IDA7IG5vZGUgJiYg
Y291bnRlciA8IGNoaWxkQ291bnREZWx0YTsgY291bnRlcisrLCBub2RlID0gbm9kZS0+dHJhdmVy
c2VOZXh0U2libGluZygpKSB7CisgICAgICAgICAgICBpZiAobm9kZS0+aXNFbGVtZW50Tm9kZSgp
ICYmIHRvRWxlbWVudChub2RlKS0+aGFzQXR0cmlidXRlKGRpckF0dHIpKQorICAgICAgICAgICAg
ICAgIGNvbnRpbnVlOworCisgICAgICAgICAgICBpZiAobm9kZS0+aXNFbGVtZW50Tm9kZSgpKQor
ICAgICAgICAgICAgICAgIHRvRWxlbWVudChub2RlKS0+c2V0SGFzRGlyQXV0b0ZsYWdSZWN1cnNp
dmVseShmYWxzZSk7CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgbm9kZS0+c2V0
U2VsZk9yQW5jZXN0b3JIYXNEaXJBdXRvQXR0cmlidXRlKGZhbHNlKTsKKyAgICAgICAgfQorICAg
IH0KKworICAgIGlmICghc2VsZk9yQW5jZXN0b3JIYXNEaXJBdXRvQXR0cmlidXRlKCkpCisgICAg
ICAgIHJldHVybjsKKworICAgIGZvciAoRWxlbWVudCogZWxlbWVudFRvQWRqdXN0ID0gdGhpczsg
ZWxlbWVudFRvQWRqdXN0OyBlbGVtZW50VG9BZGp1c3QgPSBlbGVtZW50VG9BZGp1c3QtPnBhcmVu
dEVsZW1lbnQoKSkgeworICAgICAgICBpZiAoZWxlbWVudFRvQWRqdXN0LT5oYXNBdHRyaWJ1dGUo
ZGlyQXR0cikpIHsKKyAgICAgICAgICAgIGVsZW1lbnRUb0FkanVzdC0+Y2FsY3VsYXRlQW5kQWRq
dXN0RGlyZWN0aW9uYWxpdHkoKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorICAg
IH0KK30KKworCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9k
b20vRWxlbWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmgJ
KHJldmlzaW9uIDc3NDgzKQorKysgU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuaAkod29ya2lu
ZyBjb3B5KQpAQCAtMzM5LDYgKzMzOSw4IEBAIHB1YmxpYzoKIAogICAgIHZpcnR1YWwgYm9vbCBp
c1NwZWxsQ2hlY2tpbmdFbmFibGVkKCkgY29uc3Q7CiAKKyAgICBUZXh0RGlyZWN0aW9uIGRpcmVj
dGlvbmFsaXR5SWZoYXNEaXJBdXRvQXR0cmlidXRlKGJvb2wmIGlzQXV0bykgY29uc3Q7CisKIHBy
b3RlY3RlZDoKICAgICBFbGVtZW50KGNvbnN0IFF1YWxpZmllZE5hbWUmIHRhZ05hbWUsIERvY3Vt
ZW50KiBkb2N1bWVudCwgQ29uc3RydWN0aW9uVHlwZSB0eXBlKQogICAgICAgICA6IENvbnRhaW5l
ck5vZGUoZG9jdW1lbnQsIHR5cGUpCkBAIC0zNTcsNiArMzU5LDEzIEBAIHByb3RlY3RlZDoKICAg
ICB2b2lkIHJlY2FsY1N0eWxlSWZOZWVkZWRBZnRlckF0dHJpYnV0ZUNoYW5nZWQoQXR0cmlidXRl
Kik7CiAgICAgdm9pZCB1cGRhdGVBZnRlckF0dHJpYnV0ZUNoYW5nZWQoQXR0cmlidXRlKik7CiAK
K3Byb3RlY3RlZDoKKyAgICB2b2lkIHNldEhhc0RpckF1dG9GbGFnUmVjdXJzaXZlbHkoYm9vbCwg
Tm9kZSogPSAwKTsKKyAgICB2b2lkIGRpckF0dHJpYnV0ZUNoYW5nZWQoQXR0cmlidXRlKik7Cisg
ICAgdm9pZCBhZGp1c3REaXJlY3Rpb25hbGl0eUlmTmVlZGVkQWZ0ZXJDaGlsZEF0dHJpYnV0ZUNo
YW5nZWQoRWxlbWVudCogY2hpbGQpOworICAgIHZvaWQgY2FsY3VsYXRlQW5kQWRqdXN0RGlyZWN0
aW9uYWxpdHkoKTsKKyAgICB2b2lkIGFkanVzdERpcmVjdGlvbmFsaXR5SWZOZWVkZWRBZnRlckNo
aWxkcmVuQ2hhbmdlZChOb2RlKiBiZWZvcmVDaGFuZ2UsIGludCBjaGlsZENvdW50RGVsdGEpOwor
CiBwcml2YXRlOgogICAgIHZvaWQgc2Nyb2xsQnlVbml0cyhpbnQgdW5pdHMsIFNjcm9sbEdyYW51
bGFyaXR5KTsKIApAQCAtNDAxLDYgKzQxMCw4IEBAIHByaXZhdGU6CiAgICAgU3BlbGxjaGVja0F0
dHJpYnV0ZVN0YXRlIHNwZWxsY2hlY2tBdHRyaWJ1dGVTdGF0ZSgpIGNvbnN0OwogICAgIHZvaWQg
cmVtb3ZlU2hhZG93Um9vdCgpOwogCisgICAgVGV4dERpcmVjdGlvbiBkaXJlY3Rpb25hbGl0eShO
b2RlKiogPSAwKSBjb25zdDsKKwogcHJpdmF0ZToKICAgICBtdXRhYmxlIFJlZlB0cjxOYW1lZE5v
ZGVNYXA+IG1fYXR0cmlidXRlTWFwOwogfTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2RvbS9Ob2Rl
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvZG9tL05vZGUuaAkocmV2aXNpb24gNzc0
ODMpCisrKyBTb3VyY2UvV2ViQ29yZS9kb20vTm9kZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0yMTcs
NiArMjE3LDkgQEAgcHVibGljOgogICAgIEVsZW1lbnQqIHNoYWRvd0hvc3QoKSBjb25zdDsKICAg
ICB2b2lkIHNldFNoYWRvd0hvc3QoRWxlbWVudCopOwogCisgICAgYm9vbCBzZWxmT3JBbmNlc3Rv
ckhhc0RpckF1dG9BdHRyaWJ1dGUoKSBjb25zdCB7IHJldHVybiBnZXRGbGFnKFNlbGZPckFuY2Vz
dG9ySGFzRGlyQXV0b0ZsYWcpOyB9CisgICAgdm9pZCBzZXRTZWxmT3JBbmNlc3Rvckhhc0RpckF1
dG9BdHRyaWJ1dGUoYm9vbCBmbGFnKSB7IHNldEZsYWcoZmxhZywgU2VsZk9yQW5jZXN0b3JIYXNE
aXJBdXRvRmxhZyk7IH0KKwogICAgIC8vIFJldHVybnMgdGhlIGVuY2xvc2luZyBldmVudCBwYXJl
bnQgbm9kZSAob3Igc2VsZikgdGhhdCwgd2hlbiBjbGlja2VkLCB3b3VsZCB0cmlnZ2VyIGEgbmF2
aWdhdGlvbi4KICAgICBOb2RlKiBlbmNsb3NpbmdMaW5rRXZlbnRQYXJlbnRPclNlbGYoKTsKIApA
QCAtNjAzLDYgKzYwNiw4IEBAIHByaXZhdGU6CiAKICAgICAgICAgU3R5bGVDaGFuZ2VNYXNrID0g
MSA8PCBub2RlU3R5bGVDaGFuZ2VTaGlmdCB8IDEgPDwgKG5vZGVTdHlsZUNoYW5nZVNoaWZ0ICsg
MSksCiAKKyAgICAgICAgU2VsZk9yQW5jZXN0b3JIYXNEaXJBdXRvRmxhZyA9IDEgPDwgMjcsCisK
ICNpZiBFTkFCTEUoU1ZHKQogICAgICAgICBEZWZhdWx0Tm9kZUZsYWdzID0gSXNQYXJzaW5nQ2hp
bGRyZW5GaW5pc2hlZEZsYWcgfCBJc1N0eWxlQXR0cmlidXRlVmFsaWRGbGFnIHwgQXJlU1ZHQXR0
cmlidXRlc1ZhbGlkRmxhZwogI2Vsc2UKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEVs
ZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEVsZW1lbnQu
Y3BwCShyZXZpc2lvbiA3NzQ4MykKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEVsZW1lbnQu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMjQsNyArMTI0LDcgQEAgYm9vbCBIVE1MRWxlbWVudDo6
bWFwVG9FbnRyeShjb25zdCBRdWFsaQogICAgIH0KICAgICBpZiAoYXR0ck5hbWUgPT0gZGlyQXR0
cikgewogICAgICAgICByZXN1bHQgPSBoYXNMb2NhbE5hbWUoYmRvVGFnKSA/IGVCRE8gOiBlVW5p
dmVyc2FsOwotICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIHJldHVybiB0cnVlOwogICAg
IH0KIAogICAgIHJldHVybiBTdHlsZWRFbGVtZW50OjptYXBUb0VudHJ5KGF0dHJOYW1lLCByZXN1
bHQpOwpAQCAtMTU1LDcgKzE1NSw5IEBAIHZvaWQgSFRNTEVsZW1lbnQ6OnBhcnNlTWFwcGVkQXR0
cmlidXRlKEEKICAgICB9IGVsc2UgaWYgKGF0dHItPm5hbWUoKSA9PSBsYW5nQXR0cikgewogICAg
ICAgICAvLyBGSVhNRTogSW1wbGVtZW50CiAgICAgfSBlbHNlIGlmIChhdHRyLT5uYW1lKCkgPT0g
ZGlyQXR0cikgewotICAgICAgICBhZGRDU1NQcm9wZXJ0eShhdHRyLCBDU1NQcm9wZXJ0eURpcmVj
dGlvbiwgYXR0ci0+dmFsdWUoKSk7CisgICAgICAgIGlmICghZXF1YWxJZ25vcmluZ0Nhc2UoYXR0
ci0+dmFsdWUoKSwgImF1dG8iKSkKKyAgICAgICAgICAgIGFkZENTU1Byb3BlcnR5KGF0dHIsIENT
U1Byb3BlcnR5RGlyZWN0aW9uLCBhdHRyLT52YWx1ZSgpKTsKKyAgICAgICAgZGlyQXR0cmlidXRl
Q2hhbmdlZChhdHRyKTsKICAgICAgICAgYWRkQ1NTUHJvcGVydHkoYXR0ciwgQ1NTUHJvcGVydHlV
bmljb2RlQmlkaSwgaGFzTG9jYWxOYW1lKGJkb1RhZykgPyBDU1NWYWx1ZUJpZGlPdmVycmlkZSA6
IENTU1ZhbHVlRW1iZWQpOwogICAgIH0gZWxzZSBpZiAoYXR0ci0+bmFtZSgpID09IGRyYWdnYWJs
ZUF0dHIpIHsKICAgICAgICAgY29uc3QgQXRvbWljU3RyaW5nJiB2YWx1ZSA9IGF0dHItPnZhbHVl
KCk7CkluZGV4OiBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVz
dHMvQ2hhbmdlTG9nCShyZXZpc2lvbiA3Nzc1MSkKKysrIExheW91dFRlc3RzL0NoYW5nZUxvZwko
d29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDIzIEBACisyMDExLTAyLTA1ICBZYWVsIEFoYXJvbiAg
PHlhZWwuYWhhcm9uQG5va2lhLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICBBZGQgc3VwcG9ydCBmb3IgZGlyPWF1dG8KKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTUwOTE2CisKKyAgICAgICAgKiBmYXN0
L2RvbS9IVE1MRWxlbWVudC9hdHRyLWRpci1hdXRvLWNoYW5nZS1jaGlsZC1ub2RlLWV4cGVjdGVk
LnR4dDogQWRkZWQuCisgICAgICAgICogZmFzdC9kb20vSFRNTEVsZW1lbnQvYXR0ci1kaXItYXV0
by1jaGFuZ2UtY2hpbGQtbm9kZS5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2RvbS9IVE1M
RWxlbWVudC9hdHRyLWRpci1hdXRvLWNoYW5nZS10ZXh0LWV4cGVjdGVkLnR4dDogQWRkZWQuCisg
ICAgICAgICogZmFzdC9kb20vSFRNTEVsZW1lbnQvYXR0ci1kaXItYXV0by1jaGFuZ2UtdGV4dC5o
dG1sOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2RvbS9IVE1MRWxlbWVudC9hdHRyLWRpci1hdXRv
LWNoaWxkcmVuLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogZmFzdC9kb20vSFRNTEVs
ZW1lbnQvYXR0ci1kaXItYXV0by1jaGlsZHJlbi5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0
L2RvbS9IVE1MRWxlbWVudC9hdHRyLWRpci1hdXRvLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAg
ICAgICogZmFzdC9kb20vSFRNTEVsZW1lbnQvYXR0ci1kaXItYXV0by1yZW1vdmUtYWRkLWNoaWxk
cmVuLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogZmFzdC9kb20vSFRNTEVsZW1lbnQv
YXR0ci1kaXItYXV0by1yZW1vdmUtYWRkLWNoaWxkcmVuLmh0bWw6IEFkZGVkLgorICAgICAgICAq
IGZhc3QvZG9tL0hUTUxFbGVtZW50L2F0dHItZGlyLWF1dG8uaHRtbDogQWRkZWQuCisgICAgICAg
ICogZmFzdC9kb20vSFRNTEVsZW1lbnQvYXR0ci1kaXItdmFsdWUtY2hhbmdlLWV4cGVjdGVkLnR4
dDogQWRkZWQuCisgICAgICAgICogZmFzdC9kb20vSFRNTEVsZW1lbnQvYXR0ci1kaXItdmFsdWUt
Y2hhbmdlLmh0bWw6IEFkZGVkLgorCiAyMDExLTAyLTA1ICBQYXRyaWNrIEdhbnN0ZXJlciAgPHBh
cm9nYUB3ZWJraXQub3JnPgogCiAgICAgICAgIFJldmlld2VkIGJ5IEFsZXhleSBQcm9za3VyeWFr
b3YuCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2RvbS9IVE1MRWxlbWVudC9hdHRyLWRpci1hdXRv
LWNoYW5nZS1jaGlsZC1ub2RlLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0
cy9mYXN0L2RvbS9IVE1MRWxlbWVudC9hdHRyLWRpci1hdXRvLWNoYW5nZS1jaGlsZC1ub2RlLWV4
cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2Zhc3QvZG9tL0hUTUxFbGVt
ZW50L2F0dHItZGlyLWF1dG8tY2hhbmdlLWNoaWxkLW5vZGUtZXhwZWN0ZWQudHh0CShyZXZpc2lv
biAwKQpAQCAtMCwwICsxLDE5IEBACitUZXN0IHRoYXQgZGlyZWN0aW9uYWxpdHkgaXMgcmUtZXZh
bHVhdGVkIHdoZW4gYW4gZWxlbWVudCB3aXRoIGRpcj1hdXRvIHNldCwgaGFzIGl0J3MgZmlyc3Qg
Y2hpbGQgbW9kaWZpZWQuCisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAi
UEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KKworCisKKworCisK
K1BBU1MgZG9jdW1lbnQuZGVmYXVsdFZpZXcuZ2V0Q29tcHV0ZWRTdHlsZShlbCwgbnVsbCkuZ2V0
UHJvcGVydHlWYWx1ZSgnYm9yZGVyLXJpZ2h0LWNvbG9yJykgaXMgJ3JnYigyNTUsIDAsIDApJwor
UEFTUyBkb2N1bWVudC5kZWZhdWx0Vmlldy5nZXRDb21wdXRlZFN0eWxlKGVsLCBudWxsKS5nZXRQ
cm9wZXJ0eVZhbHVlKCdib3JkZXItcmlnaHQtY29sb3InKSBpcyAncmdiKDAsIDEyOCwgMCknCisK
K1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQorCisKKwor
CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2RvbS9IVE1MRWxlbWVudC9hdHRyLWRpci1hdXRvLWNo
YW5nZS1jaGlsZC1ub2RlLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9kb20v
SFRNTEVsZW1lbnQvYXR0ci1kaXItYXV0by1jaGFuZ2UtY2hpbGQtbm9kZS5odG1sCShyZXZpc2lv
biAwKQorKysgTGF5b3V0VGVzdHMvZmFzdC9kb20vSFRNTEVsZW1lbnQvYXR0ci1kaXItYXV0by1j
aGFuZ2UtY2hpbGQtbm9kZS5odG1sCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDM3IEBACis8IURP
Q1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8bWV0YSBodHRwLWVxdWl2PSJDb250ZW50LVR5
cGUiIGNvbnRlbnQ9InRleHQvaHRtbDsgY2hhcnNldD11dGYtOCI+Cis8bGluayByZWw9InN0eWxl
c2hlZXQiIGhyZWY9Ii4uLy4uL2pzL3Jlc291cmNlcy9qcy10ZXN0LXN0eWxlLmNzcyI+Cis8c2Ny
aXB0IHNyYz0iLi4vLi4vanMvcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzxz
dHlsZT4KKy50ZXN0RGl2IHstd2Via2l0LWJvcmRlci1zdGFydDogNXB4IHNvbGlkIGdyZWVuOyAt
d2Via2l0LWJvcmRlci1lbmQ6IDVweCBzb2xpZCByZWQ7IH0KKzwvc3R5bGU+Cis8L2hlYWQ+Cis8
Ym9keT4KKzxwIGlkPSJkZXNjcmlwdGlvbiI+PC9wPgorPGRpdiBpZD0iY29uc29sZSI+PC9wPgor
PGRpdiBpZD0icmVzdWx0Ij48L2Rpdj4KKworPGRpdiBpZD0idGVzdCIgZGlyPSJhdXRvIiBjbGFz
cz0idGVzdERpdiI+PC9kaXY+Cis8c2NyaXB0PgorCitkZXNjcmlwdGlvbignVGVzdCB0aGF0IGRp
cmVjdGlvbmFsaXR5IGlzIHJlLWV2YWx1YXRlZCB3aGVuIGFuIGVsZW1lbnQgd2l0aCBkaXI9YXV0
byBzZXQsIGhhcyBpdFwncyBmaXJzdCBjaGlsZCBtb2RpZmllZC4nKTsKKwordmFyIGVsID0gZG9j
dW1lbnQuZ2V0RWxlbWVudEJ5SWQoInRlc3QiKTsKK3ZhciBjaGlsZCA9IGRvY3VtZW50LmNyZWF0
ZUVsZW1lbnQoImRpdiIpOworY2hpbGQuaW5uZXJIVE1MPSJ0ZXN0IjsKK2VsLmFwcGVuZENoaWxk
KGNoaWxkKTsKK3Nob3VsZEJlKCJkb2N1bWVudC5kZWZhdWx0Vmlldy5nZXRDb21wdXRlZFN0eWxl
KGVsLCBudWxsKS5nZXRQcm9wZXJ0eVZhbHVlKCdib3JkZXItcmlnaHQtY29sb3InKSIsICIncmdi
KDI1NSwgMCwgMCknIik7CisKK3ZhciBjaGlsZDIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJk
aXYiKTsKK2NoaWxkMi5pbm5lckhUTUw9Itee16fXldeoINeU16nXnSDXoteR16jXmdeqIjsKK2Vs
Lmluc2VydEJlZm9yZShjaGlsZDIsIGNoaWxkKTsKK3Nob3VsZEJlKCJkb2N1bWVudC5kZWZhdWx0
Vmlldy5nZXRDb21wdXRlZFN0eWxlKGVsLCBudWxsKS5nZXRQcm9wZXJ0eVZhbHVlKCdib3JkZXIt
cmlnaHQtY29sb3InKSIsICIncmdiKDAsIDEyOCwgMCknIik7CitlbC5zdHlsZS5kaXNwbGF5ID0g
Im5vbmUiOworCit3aW5kb3cuc3VjY2Vzc2Z1bGx5UGFyc2VkID0gdHJ1ZTsKKzwvc2NyaXB0Pgor
PHNjcmlwdCBzcmM9Ii4uLy4uL2pzL3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0
PgorPC9ib2R5PgorPC9odG1sPgpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9kb20vSFRNTEVsZW1l
bnQvYXR0ci1kaXItYXV0by1jaGFuZ2UtdGV4dC1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
TGF5b3V0VGVzdHMvZmFzdC9kb20vSFRNTEVsZW1lbnQvYXR0ci1kaXItYXV0by1jaGFuZ2UtdGV4
dC1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9mYXN0L2RvbS9IVE1M
RWxlbWVudC9hdHRyLWRpci1hdXRvLWNoYW5nZS10ZXh0LWV4cGVjdGVkLnR4dAkocmV2aXNpb24g
MCkKQEAgLTAsMCArMSwxOSBAQAorVGVzdCB0aGF0IGRpcmVjdGlvbmFsaXR5IGlzIHJlLWV2YWx1
YXRlZCB3aGVuIGFuIGVsZW1lbnQgd2l0aCBkaXI9YXV0byBzZXQsIGhhcyB0aGUgdGV4dCBvZiBp
dHMgZmlyc3QgY2hpbGQgY2hhbmdlZC4KKworT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2Vy
aWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgorCisK
KworCisKKworUEFTUyBkb2N1bWVudC5kZWZhdWx0Vmlldy5nZXRDb21wdXRlZFN0eWxlKGVsLCBu
dWxsKS5nZXRQcm9wZXJ0eVZhbHVlKCdib3JkZXItcmlnaHQtY29sb3InKSBpcyAncmdiKDI1NSwg
MCwgMCknCitQQVNTIGRvY3VtZW50LmRlZmF1bHRWaWV3LmdldENvbXB1dGVkU3R5bGUoZWwsIG51
bGwpLmdldFByb3BlcnR5VmFsdWUoJ2JvcmRlci1yaWdodC1jb2xvcicpIGlzICdyZ2IoMCwgMTI4
LCAwKScKKworUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRF
CisKKworCisKSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZG9tL0hUTUxFbGVtZW50L2F0dHItZGly
LWF1dG8tY2hhbmdlLXRleHQuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2Rv
bS9IVE1MRWxlbWVudC9hdHRyLWRpci1hdXRvLWNoYW5nZS10ZXh0Lmh0bWwJKHJldmlzaW9uIDAp
CisrKyBMYXlvdXRUZXN0cy9mYXN0L2RvbS9IVE1MRWxlbWVudC9hdHRyLWRpci1hdXRvLWNoYW5n
ZS10ZXh0Lmh0bWwJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMzAgQEAKKzwhRE9DVFlQRSBodG1s
PgorPGh0bWw+Cis8aGVhZD4KKzxtZXRhIGh0dHAtZXF1aXY9IkNvbnRlbnQtVHlwZSIgY29udGVu
dD0idGV4dC9odG1sOyBjaGFyc2V0PXV0Zi04Ij4KKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJl
Zj0iLi4vLi4vanMvcmVzb3VyY2VzL2pzLXRlc3Qtc3R5bGUuY3NzIj4KKzxzY3JpcHQgc3JjPSIu
Li8uLi9qcy9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPHN0eWxlPgorLnRl
c3REaXYgey13ZWJraXQtYm9yZGVyLXN0YXJ0OiA1cHggc29saWQgZ3JlZW47IC13ZWJraXQtYm9y
ZGVyLWVuZDogNXB4IHNvbGlkIHJlZDsgfQorPC9zdHlsZT4KKzwvaGVhZD4KKzxib2R5PgorPHAg
aWQ9ImRlc2NyaXB0aW9uIj48L3A+Cis8ZGl2IGlkPSJjb25zb2xlIj48L3A+Cis8ZGl2IGlkPSJy
ZXN1bHQiPjwvZGl2PgorCis8ZGl2IGlkPSJ0ZXN0IiBkaXI9ImF1dG8iIGNsYXNzPSJ0ZXN0RGl2
Ij5UZXN0IHRlc3QgdGVzdDwvZGl2PgorPHNjcmlwdD4KKworZGVzY3JpcHRpb24oJ1Rlc3QgdGhh
dCBkaXJlY3Rpb25hbGl0eSBpcyByZS1ldmFsdWF0ZWQgd2hlbiBhbiBlbGVtZW50IHdpdGggZGly
PWF1dG8gc2V0LCBoYXMgdGhlIHRleHQgb2YgaXRzIGZpcnN0IGNoaWxkIGNoYW5nZWQuJyk7CisK
K3ZhciBlbCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJ0ZXN0Iik7CitzaG91bGRCZSgiZG9j
dW1lbnQuZGVmYXVsdFZpZXcuZ2V0Q29tcHV0ZWRTdHlsZShlbCwgbnVsbCkuZ2V0UHJvcGVydHlW
YWx1ZSgnYm9yZGVyLXJpZ2h0LWNvbG9yJykiLCAiJ3JnYigyNTUsIDAsIDApJyIpOworZWwuaW5u
ZXJIVE1MID0gItee16fXldeoINeU16nXnSDXoteR16jXmdeqIjsKK3Nob3VsZEJlKCJkb2N1bWVu
dC5kZWZhdWx0Vmlldy5nZXRDb21wdXRlZFN0eWxlKGVsLCBudWxsKS5nZXRQcm9wZXJ0eVZhbHVl
KCdib3JkZXItcmlnaHQtY29sb3InKSIsICIncmdiKDAsIDEyOCwgMCknIik7CitlbC5zdHlsZS5k
aXNwbGF5ID0gIm5vbmUiOword2luZG93LnN1Y2Nlc3NmdWxseVBhcnNlZCA9IHRydWU7Cis8L3Nj
cmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9qcy9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48
L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZG9tL0hU
TUxFbGVtZW50L2F0dHItZGlyLWF1dG8tY2hpbGRyZW4tZXhwZWN0ZWQudHh0Cj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIExheW91dFRlc3RzL2Zhc3QvZG9tL0hUTUxFbGVtZW50L2F0dHItZGlyLWF1dG8tY2hpbGRy
ZW4tZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvZmFzdC9kb20vSFRN
TEVsZW1lbnQvYXR0ci1kaXItYXV0by1jaGlsZHJlbi1leHBlY3RlZC50eHQJKHJldmlzaW9uIDAp
CkBAIC0wLDAgKzEsMTMgQEAKK1Rlc3QgdGhhdCBkaXJlY3Rpb25hbGl0eSBvZiBhbiBlbGVtZW50
IHdpdGggZGlyPWF1dG8gaXMgbm90IGFmZmVjdGVkIGJ5IGNoaWxkcmVuIHRoYXQgYWxzbyBoYXZl
IHRoZSBkaXIgYXR0cmlidXRlLgorCitPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMg
b2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCisKKworCisK
K1BBU1MgZG9jdW1lbnQuZGVmYXVsdFZpZXcuZ2V0Q29tcHV0ZWRTdHlsZShlbCwgbnVsbCkuZ2V0
UHJvcGVydHlWYWx1ZSgnYm9yZGVyLXJpZ2h0LWNvbG9yJykgaXMgJ3JnYigyNTUsIDAsIDApJwor
UEFTUyBkb2N1bWVudC5kZWZhdWx0Vmlldy5nZXRDb21wdXRlZFN0eWxlKGVsLCBudWxsKS5nZXRQ
cm9wZXJ0eVZhbHVlKCdib3JkZXItcmlnaHQtY29sb3InKSBpcyAncmdiKDAsIDEyOCwgMCknCitQ
QVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKwpJbmRleDog
TGF5b3V0VGVzdHMvZmFzdC9kb20vSFRNTEVsZW1lbnQvYXR0ci1kaXItYXV0by1jaGlsZHJlbi5o
dG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZG9tL0hUTUxFbGVtZW50L2F0dHIt
ZGlyLWF1dG8tY2hpbGRyZW4uaHRtbAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2Zhc3Qv
ZG9tL0hUTUxFbGVtZW50L2F0dHItZGlyLWF1dG8tY2hpbGRyZW4uaHRtbAkocmV2aXNpb24gMCkK
QEAgLTAsMCArMSwzMyBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorPG1ldGEg
aHR0cC1lcXVpdj0iQ29udGVudC1UeXBlIiBjb250ZW50PSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9dXRm
LTgiPgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIuLi8uLi9qcy9yZXNvdXJjZXMvanMt
dGVzdC1zdHlsZS5jc3MiPgorPHNjcmlwdCBzcmM9Ii4uLy4uL2pzL3Jlc291cmNlcy9qcy10ZXN0
LXByZS5qcyI+PC9zY3JpcHQ+Cis8c3R5bGU+CisudGVzdERpdiB7LXdlYmtpdC1ib3JkZXItc3Rh
cnQ6IDVweCBzb2xpZCBncmVlbjsgLXdlYmtpdC1ib3JkZXItZW5kOiA1cHggc29saWQgcmVkOyB9
Cis8L3N0eWxlPgorPC9oZWFkPgorPGJvZHk+Cis8cCBpZD0iZGVzY3JpcHRpb24iPjwvcD4KKzxk
aXYgaWQ9ImNvbnNvbGUiPjwvcD4KKzxkaXYgaWQ9InJlc3VsdCI+PC9kaXY+Cis8ZGl2IGlkPSJw
YXJlbnREaXYiPgorPGRpdiBpZD0iaGFzLWRpci1hdXRvIiBkaXI9ImF1dG8iIGNsYXNzPSJ0ZXN0
RGl2Ij4KKzxkaXYgaWQ9Imhhcy1kaXItcnRsIiBkaXI9InJ0bCIgY2xhc3M9InRlc3REaXYiPtee
16fXldeoINeU16nXnSDXoteR16jXmdeqPC9kaXY+CitUZXN0IHRlc3QgdGVzdDwvZGl2PgorCis8
c2NyaXB0PgorCitkZXNjcmlwdGlvbignVGVzdCB0aGF0IGRpcmVjdGlvbmFsaXR5IG9mIGFuIGVs
ZW1lbnQgd2l0aCBkaXI9YXV0byBpcyBub3QgYWZmZWN0ZWQgYnkgY2hpbGRyZW4gdGhhdCBhbHNv
IGhhdmUgdGhlIGRpciBhdHRyaWJ1dGUuJyk7CisKK3ZhciBlbCA9IGRvY3VtZW50LmdldEVsZW1l
bnRCeUlkKCJoYXMtZGlyLWF1dG8iKTsKK3Nob3VsZEJlKCJkb2N1bWVudC5kZWZhdWx0Vmlldy5n
ZXRDb21wdXRlZFN0eWxlKGVsLCBudWxsKS5nZXRQcm9wZXJ0eVZhbHVlKCdib3JkZXItcmlnaHQt
Y29sb3InKSIsICIncmdiKDI1NSwgMCwgMCknIik7CitlbCA9IGRvY3VtZW50LmdldEVsZW1lbnRC
eUlkKCJoYXMtZGlyLXJ0bCIpOworc2hvdWxkQmUoImRvY3VtZW50LmRlZmF1bHRWaWV3LmdldENv
bXB1dGVkU3R5bGUoZWwsIG51bGwpLmdldFByb3BlcnR5VmFsdWUoJ2JvcmRlci1yaWdodC1jb2xv
cicpIiwgIidyZ2IoMCwgMTI4LCAwKSciKTsKK2RvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJwYXJl
bnREaXYiKS5zdHlsZS5kaXNwbGF5ID0gIm5vbmUiOword2luZG93LnN1Y2Nlc3NmdWxseVBhcnNl
ZCA9IHRydWU7Cis8L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9qcy9yZXNvdXJjZXMvanMt
dGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KSW5kZXg6IExheW91dFRl
c3RzL2Zhc3QvZG9tL0hUTUxFbGVtZW50L2F0dHItZGlyLWF1dG8tZXhwZWN0ZWQudHh0Cj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZG9tL0hUTUxFbGVtZW50L2F0dHItZGlyLWF1dG8t
ZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvZmFzdC9kb20vSFRNTEVs
ZW1lbnQvYXR0ci1kaXItYXV0by1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEs
MTkgQEAKK1Rlc3QgdGhhdCBkaXJlY3Rpb25hbGl0eSBvZiBhbiBlbGVtZW50IHdpdGggZGlyPWF1
dG8gc2V0IGlzIGRldGVybWluZWQgYnkgdGhlIGZpcnN0IGNoaWxkIHRleHQgbm9kZSBvZiB0aGF0
IGVsZW1lbnQuCisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIg
bWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KKworCisKKworCitQQVNTIGRv
Y3VtZW50LmRlZmF1bHRWaWV3LmdldENvbXB1dGVkU3R5bGUoZWwsIG51bGwpLmdldFByb3BlcnR5
VmFsdWUoJ2JvcmRlci1yaWdodC1jb2xvcicpIGlzICdyZ2IoMjU1LCAwLCAwKScKK1BBU1MgZG9j
dW1lbnQuZGVmYXVsdFZpZXcuZ2V0Q29tcHV0ZWRTdHlsZShlbCwgbnVsbCkuZ2V0UHJvcGVydHlW
YWx1ZSgnYm9yZGVyLXJpZ2h0LWNvbG9yJykgaXMgJ3JnYigwLCAxMjgsIDApJworUEFTUyBkb2N1
bWVudC5kZWZhdWx0Vmlldy5nZXRDb21wdXRlZFN0eWxlKGVsLCBudWxsKS5nZXRQcm9wZXJ0eVZh
bHVlKCdib3JkZXItcmlnaHQtY29sb3InKSBpcyAncmdiKDAsIDEyOCwgMCknCisKK1BBU1Mgc3Vj
Y2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQorCisKKworCkluZGV4OiBM
YXlvdXRUZXN0cy9mYXN0L2RvbS9IVE1MRWxlbWVudC9hdHRyLWRpci1hdXRvLXJlbW92ZS1hZGQt
Y2hpbGRyZW4tZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZG9t
L0hUTUxFbGVtZW50L2F0dHItZGlyLWF1dG8tcmVtb3ZlLWFkZC1jaGlsZHJlbi1leHBlY3RlZC50
eHQJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9mYXN0L2RvbS9IVE1MRWxlbWVudC9hdHRy
LWRpci1hdXRvLXJlbW92ZS1hZGQtY2hpbGRyZW4tZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQpA
QCAtMCwwICsxLDIzIEBACitUZXN0IHRoYXQgZGlyZWN0aW9uYWxpdHkgb2YgYW4gZWxlbWVudCB3
aXRoIGRpcj1hdXRvIHNldCBpcyByZS1ldmFsdWF0ZWQgd2hlbiB0aGUgZmlyc3QgY2hpbGQgdGV4
dCBub2RlIG9mIHRoYXQgZWxlbWVudCBpcyBhZGRlZCBvciByZW1vdmVkLiBBbHNvIHRlc3QgdGhh
dCBkaXJlY3Rpb25hbGl0eSBkb2VzIG5vdCBjaGFuZ2UgaWYgdGhlIGVsZW1lbnQgZG9lcyBub3Qg
aGF2ZSB0aGUgYXR0cmlidXRlIGRpcj1hdXRvLgorCitPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUg
YSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIu
CisKKworCisKKworUEFTUyBkb2N1bWVudC5kZWZhdWx0Vmlldy5nZXRDb21wdXRlZFN0eWxlKHBh
cmVudDEsIG51bGwpLmdldFByb3BlcnR5VmFsdWUoJ2JvcmRlci1yaWdodC1jb2xvcicpIGlzICdy
Z2IoMCwgMTI4LCAwKScKK1BBU1MgZG9jdW1lbnQuZGVmYXVsdFZpZXcuZ2V0Q29tcHV0ZWRTdHls
ZShwYXJlbnQyLCBudWxsKS5nZXRQcm9wZXJ0eVZhbHVlKCdib3JkZXItcmlnaHQtY29sb3InKSBp
cyAncmdiKDI1NSwgMCwgMCknCitQQVNTIGRvY3VtZW50LmRlZmF1bHRWaWV3LmdldENvbXB1dGVk
U3R5bGUocGFyZW50MywgbnVsbCkuZ2V0UHJvcGVydHlWYWx1ZSgnYm9yZGVyLXJpZ2h0LWNvbG9y
JykgaXMgJ3JnYigyNTUsIDAsIDApJworUEFTUyBkb2N1bWVudC5kZWZhdWx0Vmlldy5nZXRDb21w
dXRlZFN0eWxlKHBhcmVudDEsIG51bGwpLmdldFByb3BlcnR5VmFsdWUoJ2JvcmRlci1yaWdodC1j
b2xvcicpIGlzICdyZ2IoMjU1LCAwLCAwKScKK1BBU1MgZG9jdW1lbnQuZGVmYXVsdFZpZXcuZ2V0
Q29tcHV0ZWRTdHlsZShwYXJlbnQyLCBudWxsKS5nZXRQcm9wZXJ0eVZhbHVlKCdib3JkZXItcmln
aHQtY29sb3InKSBpcyAncmdiKDAsIDEyOCwgMCknCitQQVNTIGRvY3VtZW50LmRlZmF1bHRWaWV3
LmdldENvbXB1dGVkU3R5bGUocGFyZW50MiwgbnVsbCkuZ2V0UHJvcGVydHlWYWx1ZSgnYm9yZGVy
LXJpZ2h0LWNvbG9yJykgaXMgJ3JnYigyNTUsIDAsIDApJworUEFTUyBkb2N1bWVudC5kZWZhdWx0
Vmlldy5nZXRDb21wdXRlZFN0eWxlKHBhcmVudDMsIG51bGwpLmdldFByb3BlcnR5VmFsdWUoJ2Jv
cmRlci1yaWdodC1jb2xvcicpIGlzICdyZ2IoMjU1LCAwLCAwKScKKworUEFTUyBzdWNjZXNzZnVs
bHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisKKworCisKSW5kZXg6IExheW91dFRl
c3RzL2Zhc3QvZG9tL0hUTUxFbGVtZW50L2F0dHItZGlyLWF1dG8tcmVtb3ZlLWFkZC1jaGlsZHJl
bi5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZG9tL0hUTUxFbGVtZW50L2F0
dHItZGlyLWF1dG8tcmVtb3ZlLWFkZC1jaGlsZHJlbi5odG1sCShyZXZpc2lvbiAwKQorKysgTGF5
b3V0VGVzdHMvZmFzdC9kb20vSFRNTEVsZW1lbnQvYXR0ci1kaXItYXV0by1yZW1vdmUtYWRkLWNo
aWxkcmVuLmh0bWwJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNjAgQEAKKzwhRE9DVFlQRSBodG1s
PgorPGh0bWw+Cis8aGVhZD4KKzxtZXRhIGh0dHAtZXF1aXY9IkNvbnRlbnQtVHlwZSIgY29udGVu
dD0idGV4dC9odG1sOyBjaGFyc2V0PXV0Zi04Ij4KKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJl
Zj0iLi4vLi4vanMvcmVzb3VyY2VzL2pzLXRlc3Qtc3R5bGUuY3NzIj4KKzxzY3JpcHQgc3JjPSIu
Li8uLi9qcy9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPHN0eWxlPgorLnRl
c3REaXYgey13ZWJraXQtYm9yZGVyLXN0YXJ0OiA1cHggc29saWQgZ3JlZW47IC13ZWJraXQtYm9y
ZGVyLWVuZDogNXB4IHNvbGlkIHJlZDsgfQorPC9zdHlsZT4KKzwvaGVhZD4KKzxib2R5PgorPHAg
aWQ9ImRlc2NyaXB0aW9uIj48L3A+Cis8ZGl2IGlkPSJjb25zb2xlIj48L3A+Cis8ZGl2IGlkPSJy
ZXN1bHQiPjwvZGl2PgorPGRpdiBpZD0icGFyZW50RGl2Ij4KKzxkaXYgaWQ9InBhcmVudDEiIGRp
cj0iYXV0byIgY2xhc3M9InRlc3REaXYiPgorPGRpdiBpZD0iY2hpbGQxIj7Xnten15XXqCDXlNep
150g16LXkdeo15nXqjwvZGl2PgorPGRpdiBpZD0iY2hpbGQyIj5UZXN0PC9kaXY+Cis8L2Rpdj4K
KzxkaXYgaWQ9InBhcmVudDIiIGRpcj0iYXV0byIgY2xhc3M9InRlc3REaXYiPgorPGRpdiBpZD0i
Y2hpbGQzIj5UZXN0PC9kaXY+Cis8L2Rpdj4KKzxkaXYgaWQ9InBhcmVudDMiIGNsYXNzPSJ0ZXN0
RGl2Ij4KKzxkaXYgaWQ9ImNoaWxkNCI+157Xp9eV16gg15TXqdedINei15HXqNeZ16o8L2Rpdj4K
KzwvZGl2PgorPC9kaXY+Cis8c2NyaXB0PgorCitkZXNjcmlwdGlvbignVGVzdCB0aGF0IGRpcmVj
dGlvbmFsaXR5IG9mIGFuIGVsZW1lbnQgd2l0aCBkaXI9YXV0byBzZXQgaXMgcmUtZXZhbHVhdGVk
IHdoZW4gdGhlIGZpcnN0IGNoaWxkIHRleHQgbm9kZSBvZiB0aGF0IGVsZW1lbnQgaXMgYWRkZWQg
b3IgcmVtb3ZlZC4gQWxzbyB0ZXN0IHRoYXQgZGlyZWN0aW9uYWxpdHkgZG9lcyBub3QgY2hhbmdl
IGlmIHRoZSBlbGVtZW50IGRvZXMgbm90IGhhdmUgdGhlIGF0dHJpYnV0ZSBkaXI9YXV0by4nKTsK
KwordmFyIHBhcmVudDEgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgicGFyZW50MSIpOwordmFy
IHBhcmVudDIgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgicGFyZW50MiIpOwordmFyIHBhcmVu
dDMgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgicGFyZW50MyIpOworCit2YXIgY2hpbGQxID0g
ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImNoaWxkMSIpOwordmFyIGNoaWxkMyA9IGRvY3VtZW50
LmdldEVsZW1lbnRCeUlkKCJjaGlsZDMiKTsKK3ZhciBjaGlsZDQgPSBkb2N1bWVudC5nZXRFbGVt
ZW50QnlJZCgiY2hpbGQ0Iik7CisKK3Nob3VsZEJlKCJkb2N1bWVudC5kZWZhdWx0Vmlldy5nZXRD
b21wdXRlZFN0eWxlKHBhcmVudDEsIG51bGwpLmdldFByb3BlcnR5VmFsdWUoJ2JvcmRlci1yaWdo
dC1jb2xvcicpIiwgIidyZ2IoMCwgMTI4LCAwKSciKTsKK3Nob3VsZEJlKCJkb2N1bWVudC5kZWZh
dWx0Vmlldy5nZXRDb21wdXRlZFN0eWxlKHBhcmVudDIsIG51bGwpLmdldFByb3BlcnR5VmFsdWUo
J2JvcmRlci1yaWdodC1jb2xvcicpIiwgIidyZ2IoMjU1LCAwLCAwKSciKTsKK3Nob3VsZEJlKCJk
b2N1bWVudC5kZWZhdWx0Vmlldy5nZXRDb21wdXRlZFN0eWxlKHBhcmVudDMsIG51bGwpLmdldFBy
b3BlcnR5VmFsdWUoJ2JvcmRlci1yaWdodC1jb2xvcicpIiwgIidyZ2IoMjU1LCAwLCAwKSciKTsK
KworcGFyZW50MS5yZW1vdmVDaGlsZChjaGlsZDEpCitzaG91bGRCZSgiZG9jdW1lbnQuZGVmYXVs
dFZpZXcuZ2V0Q29tcHV0ZWRTdHlsZShwYXJlbnQxLCBudWxsKS5nZXRQcm9wZXJ0eVZhbHVlKCdi
b3JkZXItcmlnaHQtY29sb3InKSIsICIncmdiKDI1NSwgMCwgMCknIik7CisKK3BhcmVudDIuaW5z
ZXJ0QmVmb3JlKGNoaWxkMSwgY2hpbGQzKTsKK3Nob3VsZEJlKCJkb2N1bWVudC5kZWZhdWx0Vmll
dy5nZXRDb21wdXRlZFN0eWxlKHBhcmVudDIsIG51bGwpLmdldFByb3BlcnR5VmFsdWUoJ2JvcmRl
ci1yaWdodC1jb2xvcicpIiwgIidyZ2IoMCwgMTI4LCAwKSciKTsKKworcGFyZW50Mi5yZW1vdmVD
aGlsZChjaGlsZDEpCitzaG91bGRCZSgiZG9jdW1lbnQuZGVmYXVsdFZpZXcuZ2V0Q29tcHV0ZWRT
dHlsZShwYXJlbnQyLCBudWxsKS5nZXRQcm9wZXJ0eVZhbHVlKCdib3JkZXItcmlnaHQtY29sb3In
KSIsICIncmdiKDI1NSwgMCwgMCknIik7CisKK3BhcmVudDMuaW5zZXJ0QmVmb3JlKGNoaWxkMSwg
Y2hpbGQ0KTsKK3Nob3VsZEJlKCJkb2N1bWVudC5kZWZhdWx0Vmlldy5nZXRDb21wdXRlZFN0eWxl
KHBhcmVudDMsIG51bGwpLmdldFByb3BlcnR5VmFsdWUoJ2JvcmRlci1yaWdodC1jb2xvcicpIiwg
IidyZ2IoMjU1LCAwLCAwKSciKTsKKworZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInBhcmVudERp
diIpLnN0eWxlLmRpc3BsYXkgPSAibm9uZSI7Cit3aW5kb3cuc3VjY2Vzc2Z1bGx5UGFyc2VkID0g
dHJ1ZTsKKzwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uL2pzL3Jlc291cmNlcy9qcy10ZXN0
LXBvc3QuanMiPjwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpJbmRleDogTGF5b3V0VGVzdHMv
ZmFzdC9kb20vSFRNTEVsZW1lbnQvYXR0ci1kaXItYXV0by5odG1sCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExh
eW91dFRlc3RzL2Zhc3QvZG9tL0hUTUxFbGVtZW50L2F0dHItZGlyLWF1dG8uaHRtbAkocmV2aXNp
b24gMCkKKysrIExheW91dFRlc3RzL2Zhc3QvZG9tL0hUTUxFbGVtZW50L2F0dHItZGlyLWF1dG8u
aHRtbAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwzOCBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRt
bD4KKzxoZWFkPgorPG1ldGEgaHR0cC1lcXVpdj0iQ29udGVudC1UeXBlIiBjb250ZW50PSJ0ZXh0
L2h0bWw7IGNoYXJzZXQ9dXRmLTgiPgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIuLi8u
Li9qcy9yZXNvdXJjZXMvanMtdGVzdC1zdHlsZS5jc3MiPgorPHNjcmlwdCBzcmM9Ii4uLy4uL2pz
L3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8c3R5bGU+CisudGVzdERpdiB7
LXdlYmtpdC1ib3JkZXItc3RhcnQ6IDVweCBzb2xpZCBncmVlbjsgLXdlYmtpdC1ib3JkZXItZW5k
OiA1cHggc29saWQgcmVkOyB9Cis8L3N0eWxlPgorPC9oZWFkPgorPGJvZHk+Cis8cCBpZD0iZGVz
Y3JpcHRpb24iPjwvcD4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwvcD4KKzxkaXYgaWQ9InJlc3VsdCI+
PC9kaXY+Cis8ZGl2IGlkPSJwYXJlbnREaXYiPgorVGVzdCB0aGF0IHRoZSBkaXJlY3Rpb24gb2Yg
ZW5nbGlzaCB0ZXh0IGlzIGxlZnQtdG8tcmlnaHQuCis8ZGl2IGlkPSJsZWZ0LXRvLXJpZ2h0IiBk
aXI9ImF1dG8iIGNsYXNzPSJ0ZXN0RGl2Ij5UZXN0IHRlc3QgdGVzdDwvZGl2PgorVGVzdCB0aGF0
IHRoZSBkaXJlY3Rpb24gb2YgaGVicmV3IHRleHQgaXMgcmlnaHQtdG8tbGVmdC4KKzxkaXYgaWQ9
InJpZ2h0LXRvLWxlZnQxIiBkaXI9ImF1dG8iIGNsYXNzPSJ0ZXN0RGl2Ij7Xnten15XXqCDXlNep
150g16LXkdeo15nXqjwvZGl2PgorVGVzdCB0aGF0ICc/JyBkb2VzIG5vdCBhZmZlY3QgdGhlIGRp
cmVjdGlvbmFsaXR5LgorPGRpdiBpZD0icmlnaHQtdG8tbGVmdDIiIGRpcj0iYXV0byIgY2xhc3M9
InRlc3REaXYiPjxzcGFuPj8/PC9zcGFuPtee16fXldeoINeU16nXnSDXoteR16jXmdeqPHNwYW4+
Pz88L3NwYW4+PC9kaXY+Cis8L2Rpdj4KKzxzY3JpcHQ+CisKK2Rlc2NyaXB0aW9uKCdUZXN0IHRo
YXQgZGlyZWN0aW9uYWxpdHkgb2YgYW4gZWxlbWVudCB3aXRoIGRpcj1hdXRvIHNldCBpcyBkZXRl
cm1pbmVkIGJ5IHRoZSBmaXJzdCBjaGlsZCB0ZXh0IG5vZGUgb2YgdGhhdCBlbGVtZW50LicpOwor
Cit2YXIgZWwgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgibGVmdC10by1yaWdodCIpOworc2hv
dWxkQmUoImRvY3VtZW50LmRlZmF1bHRWaWV3LmdldENvbXB1dGVkU3R5bGUoZWwsIG51bGwpLmdl
dFByb3BlcnR5VmFsdWUoJ2JvcmRlci1yaWdodC1jb2xvcicpIiwgIidyZ2IoMjU1LCAwLCAwKSci
KTsKK2VsID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInJpZ2h0LXRvLWxlZnQxIik7CitzaG91
bGRCZSgiZG9jdW1lbnQuZGVmYXVsdFZpZXcuZ2V0Q29tcHV0ZWRTdHlsZShlbCwgbnVsbCkuZ2V0
UHJvcGVydHlWYWx1ZSgnYm9yZGVyLXJpZ2h0LWNvbG9yJykiLCAiJ3JnYigwLCAxMjgsIDApJyIp
OworZWwgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgicmlnaHQtdG8tbGVmdDIiKTsKK3Nob3Vs
ZEJlKCJkb2N1bWVudC5kZWZhdWx0Vmlldy5nZXRDb21wdXRlZFN0eWxlKGVsLCBudWxsKS5nZXRQ
cm9wZXJ0eVZhbHVlKCdib3JkZXItcmlnaHQtY29sb3InKSIsICIncmdiKDAsIDEyOCwgMCknIik7
Citkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgicGFyZW50RGl2Iikuc3R5bGUuZGlzcGxheSA9ICJu
b25lIjsKK3dpbmRvdy5zdWNjZXNzZnVsbHlQYXJzZWQgPSB0cnVlOworPC9zY3JpcHQ+Cis8c2Ny
aXB0IHNyYz0iLi4vLi4vanMvcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+Cis8
L2JvZHk+Cis8L2h0bWw+CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2RvbS9IVE1MRWxlbWVudC9h
dHRyLWRpci12YWx1ZS1jaGFuZ2UtZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRl
c3RzL2Zhc3QvZG9tL0hUTUxFbGVtZW50L2F0dHItZGlyLXZhbHVlLWNoYW5nZS1leHBlY3RlZC50
eHQJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9mYXN0L2RvbS9IVE1MRWxlbWVudC9hdHRy
LWRpci12YWx1ZS1jaGFuZ2UtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDI0
IEBACitUZXN0IHRoYXQgZGlyZWN0aW9uYWxpdHkgaXMgcmUtZXZhbHVhdGVkIHdoZW4gYW4gZWxl
bWVudCB3aXRoIGRpcj1hdXRvIHNldCwgaGFzIGl0cyBkaXIgYXR0cmlidXRlIGNoYW5nZWQuCisK
K09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZv
bGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KKworCisKKworCisKK1BBU1MgZG9jdW1lbnQuZGVm
YXVsdFZpZXcuZ2V0Q29tcHV0ZWRTdHlsZShlbCwgbnVsbCkuZ2V0UHJvcGVydHlWYWx1ZSgnYm9y
ZGVyLXJpZ2h0LWNvbG9yJykgaXMgJ3JnYigwLCAxMjgsIDApJworUEFTUyBkb2N1bWVudC5kZWZh
dWx0Vmlldy5nZXRDb21wdXRlZFN0eWxlKGNoaWxkMiwgbnVsbCkuZ2V0UHJvcGVydHlWYWx1ZSgn
Ym9yZGVyLXJpZ2h0LWNvbG9yJykgaXMgJ3JnYigwLCAxMjgsIDApJworUEFTUyBkb2N1bWVudC5k
ZWZhdWx0Vmlldy5nZXRDb21wdXRlZFN0eWxlKGVsLCBudWxsKS5nZXRQcm9wZXJ0eVZhbHVlKCdi
b3JkZXItcmlnaHQtY29sb3InKSBpcyAncmdiKDI1NSwgMCwgMCknCitQQVNTIGRvY3VtZW50LmRl
ZmF1bHRWaWV3LmdldENvbXB1dGVkU3R5bGUoY2hpbGQyLCBudWxsKS5nZXRQcm9wZXJ0eVZhbHVl
KCdib3JkZXItcmlnaHQtY29sb3InKSBpcyAncmdiKDAsIDEyOCwgMCknCitQQVNTIGRvY3VtZW50
LmRlZmF1bHRWaWV3LmdldENvbXB1dGVkU3R5bGUoY2hpbGQyLCBudWxsKS5nZXRQcm9wZXJ0eVZh
bHVlKCdib3JkZXItcmlnaHQtY29sb3InKSBpcyAncmdiKDI1NSwgMCwgMCknCitQQVNTIGRvY3Vt
ZW50LmRlZmF1bHRWaWV3LmdldENvbXB1dGVkU3R5bGUoZWwsIG51bGwpLmdldFByb3BlcnR5VmFs
dWUoJ2JvcmRlci1yaWdodC1jb2xvcicpIGlzICdyZ2IoMCwgMTI4LCAwKScKK1BBU1MgZG9jdW1l
bnQuZGVmYXVsdFZpZXcuZ2V0Q29tcHV0ZWRTdHlsZShjaGlsZDIsIG51bGwpLmdldFByb3BlcnR5
VmFsdWUoJ2JvcmRlci1yaWdodC1jb2xvcicpIGlzICdyZ2IoMjU1LCAwLCAwKScKKworUEFTUyBz
dWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisKKworCisKSW5kZXg6
IExheW91dFRlc3RzL2Zhc3QvZG9tL0hUTUxFbGVtZW50L2F0dHItZGlyLXZhbHVlLWNoYW5nZS5o
dG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZG9tL0hUTUxFbGVtZW50L2F0dHIt
ZGlyLXZhbHVlLWNoYW5nZS5odG1sCShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvZmFzdC9k
b20vSFRNTEVsZW1lbnQvYXR0ci1kaXItdmFsdWUtY2hhbmdlLmh0bWwJKHJldmlzaW9uIDApCkBA
IC0wLDAgKzEsNTAgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKzxtZXRhIGh0
dHAtZXF1aXY9IkNvbnRlbnQtVHlwZSIgY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PXV0Zi04
Ij4KKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iLi4vLi4vanMvcmVzb3VyY2VzL2pzLXRl
c3Qtc3R5bGUuY3NzIj4KKzxzY3JpcHQgc3JjPSIuLi8uLi9qcy9yZXNvdXJjZXMvanMtdGVzdC1w
cmUuanMiPjwvc2NyaXB0PgorPHN0eWxlPgorLnRlc3REaXYgey13ZWJraXQtYm9yZGVyLXN0YXJ0
OiA1cHggc29saWQgZ3JlZW47IC13ZWJraXQtYm9yZGVyLWVuZDogNXB4IHNvbGlkIHJlZDsgfQor
PC9zdHlsZT4KKzwvaGVhZD4KKzxib2R5PgorPHAgaWQ9ImRlc2NyaXB0aW9uIj48L3A+Cis8ZGl2
IGlkPSJjb25zb2xlIj48L3A+Cis8ZGl2IGlkPSJyZXN1bHQiPjwvZGl2PgorCis8ZGl2IGlkPSJ0
ZXN0IiBkaXI9ImF1dG8iIGNsYXNzPSJ0ZXN0RGl2Ij48L2Rpdj4KKzxzY3JpcHQ+CisKK2Rlc2Ny
aXB0aW9uKCdUZXN0IHRoYXQgZGlyZWN0aW9uYWxpdHkgaXMgcmUtZXZhbHVhdGVkIHdoZW4gYW4g
ZWxlbWVudCB3aXRoIGRpcj1hdXRvIHNldCwgaGFzIGl0cyBkaXIgYXR0cmlidXRlIGNoYW5nZWQu
Jyk7CisKK3ZhciBlbCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJ0ZXN0Iik7Cit2YXIgY2hp
bGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKTsKK2NoaWxkLmlubmVySFRNTD0i157X
p9eV16gg15TXqdedINei15HXqNeZ16oiOworZWwuYXBwZW5kQ2hpbGQoY2hpbGQpOwordmFyIGNo
aWxkMiA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpOworY2hpbGQyLmlubmVySFRNTCA9
ICLXnten15XXqCDXlNep150g16LXkdeo15nXqiI7CitjaGlsZDIuc2V0QXR0cmlidXRlKCJkaXIi
LCAiYXV0byIpOworY2hpbGQyLnNldEF0dHJpYnV0ZSgiY2xhc3MiLCAidGVzdERpdiIpOworY2hp
bGQuYXBwZW5kQ2hpbGQoY2hpbGQyKTsKK3Nob3VsZEJlKCJkb2N1bWVudC5kZWZhdWx0Vmlldy5n
ZXRDb21wdXRlZFN0eWxlKGVsLCBudWxsKS5nZXRQcm9wZXJ0eVZhbHVlKCdib3JkZXItcmlnaHQt
Y29sb3InKSIsICIncmdiKDAsIDEyOCwgMCknIik7CitzaG91bGRCZSgiZG9jdW1lbnQuZGVmYXVs
dFZpZXcuZ2V0Q29tcHV0ZWRTdHlsZShjaGlsZDIsIG51bGwpLmdldFByb3BlcnR5VmFsdWUoJ2Jv
cmRlci1yaWdodC1jb2xvcicpIiwgIidyZ2IoMCwgMTI4LCAwKSciKTsKKworZWwuc2V0QXR0cmli
dXRlKCJkaXIiLCAibHRyIik7CitzaG91bGRCZSgiZG9jdW1lbnQuZGVmYXVsdFZpZXcuZ2V0Q29t
cHV0ZWRTdHlsZShlbCwgbnVsbCkuZ2V0UHJvcGVydHlWYWx1ZSgnYm9yZGVyLXJpZ2h0LWNvbG9y
JykiLCAiJ3JnYigyNTUsIDAsIDApJyIpOworc2hvdWxkQmUoImRvY3VtZW50LmRlZmF1bHRWaWV3
LmdldENvbXB1dGVkU3R5bGUoY2hpbGQyLCBudWxsKS5nZXRQcm9wZXJ0eVZhbHVlKCdib3JkZXIt
cmlnaHQtY29sb3InKSIsICIncmdiKDAsIDEyOCwgMCknIik7CisKK2NoaWxkMi5pbm5lckhUTUwg
PSAiVGVzdCI7CitzaG91bGRCZSgiZG9jdW1lbnQuZGVmYXVsdFZpZXcuZ2V0Q29tcHV0ZWRTdHls
ZShjaGlsZDIsIG51bGwpLmdldFByb3BlcnR5VmFsdWUoJ2JvcmRlci1yaWdodC1jb2xvcicpIiwg
IidyZ2IoMjU1LCAwLCAwKSciKTsKKworZWwuc2V0QXR0cmlidXRlKCJkaXIiLCAiYXV0byIpOwor
c2hvdWxkQmUoImRvY3VtZW50LmRlZmF1bHRWaWV3LmdldENvbXB1dGVkU3R5bGUoZWwsIG51bGwp
LmdldFByb3BlcnR5VmFsdWUoJ2JvcmRlci1yaWdodC1jb2xvcicpIiwgIidyZ2IoMCwgMTI4LCAw
KSciKTsKK3Nob3VsZEJlKCJkb2N1bWVudC5kZWZhdWx0Vmlldy5nZXRDb21wdXRlZFN0eWxlKGNo
aWxkMiwgbnVsbCkuZ2V0UHJvcGVydHlWYWx1ZSgnYm9yZGVyLXJpZ2h0LWNvbG9yJykiLCAiJ3Jn
YigyNTUsIDAsIDApJyIpOworCitlbC5zdHlsZS5kaXNwbGF5ID0gIm5vbmUiOworCit3aW5kb3cu
c3VjY2Vzc2Z1bGx5UGFyc2VkID0gdHJ1ZTsKKzwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4u
L2pzL3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1s
Pgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>81401</attachid>
            <date>2011-02-06 07:24:08 -0800</date>
            <delta_ts>2011-02-09 05:42:34 -0800</delta_ts>
            <desc>Patch.</desc>
            <filename>50916.patch</filename>
            <type>text/plain</type>
            <size>39724</size>
            <attacher name="Yael">yael</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gNzc3NTEpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMjEgQEAK
KzIwMTEtMDItMDUgIFlhZWwgQWhhcm9uICA8eWFlbC5haGFyb25Abm9raWEuY29tPgorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZCBzdXBwb3J0IGZv
ciBkaXI9YXV0bworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9NTA5MTYKKworICAgICAgICBDaGFuZ2UgZGVmYXVsdFdyaXRpbmdEaXJlY3Rpb24oKSB0byBy
ZXR1cm4gaWYgdGhlIHdyaXRpbmcgZGlyZWN0aW9uCisgICAgICAgIHdhcyBkZXRlcm1pbmVkIGZy
b20gYSBsZXR0ZXIgd2l0aCBzdHJvbmcgZGlyZWN0aW9uYWxpdHkgb3Igbm90LgorCisgICAgICAg
ICogSmF2YVNjcmlwdENvcmUuZXhwOgorICAgICAgICAqIEphdmFTY3JpcHRDb3JlLm9yZGVyOgor
ICAgICAgICAqIHd0Zi90ZXh0L1N0cmluZ0ltcGwuY3BwOgorICAgICAgICAoV1RGOjpTdHJpbmdJ
bXBsOjpkZWZhdWx0V3JpdGluZ0RpcmVjdGlvbik6CisgICAgICAgICogd3RmL3RleHQvU3RyaW5n
SW1wbC5oOgorICAgICAgICAqIHd0Zi90ZXh0L1dURlN0cmluZy5oOgorICAgICAgICAoV1RGOjpT
dHJpbmc6OmRlZmF1bHRXcml0aW5nRGlyZWN0aW9uKToKKwogMjAxMS0wMi0wNCAgR2VvZmZyZXkg
R2FyZW4gIDxnZ2FyZW5AYXBwbGUuY29tPgogCiAgICAgICAgIFJldmlld2VkIGJ5IE9saXZlciBI
dW50LgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLmV4cAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUuZXhwCShyZXZp
c2lvbiA3NzQ4MykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS5leHAJ
KHdvcmtpbmcgY29weSkKQEAgLTMzNSw3ICszMzUsNyBAQCBfX1pOM1dURjEwU3RyaW5nSW1wbDE4
c2ltcGxpZnlXaGl0ZVNwYWNlCiBfX1pOM1dURjEwU3RyaW5nSW1wbDE5Y2hhcmFjdGVyU3RhcnRp
bmdBdEVqCiBfX1pOM1dURjEwU3RyaW5nSW1wbDE5Y3JlYXRlVW5pbml0aWFsaXplZEVqUlB0CiBf
X1pOM1dURjEwU3RyaW5nSW1wbDIyY29udGFpbnNPbmx5V2hpdGVzcGFjZUV2Ci1fX1pOM1dURjEw
U3RyaW5nSW1wbDIzZGVmYXVsdFdyaXRpbmdEaXJlY3Rpb25FdgorX19aTjNXVEYxMFN0cmluZ0lt
cGwyM2RlZmF1bHRXcml0aW5nRGlyZWN0aW9uRVBiCiBfX1pOM1dURjEwU3RyaW5nSW1wbDIzcmV2
ZXJzZUZpbmRJZ25vcmluZ0Nhc2VFUFMwX2oKIF9fWk4zV1RGMTBTdHJpbmdJbXBsMzdjcmVhdGVT
dHJpcHBpbmdOdWxsQ2hhcmFjdGVyc1Nsb3dDYXNlRVBLdGoKIF9fWk4zV1RGMTBTdHJpbmdJbXBs
NGZpbmRFUEZidEVqCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUu
b3JkZXIKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3Jl
Lm9yZGVyCShyZXZpc2lvbiA3NzQ4MykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2Ny
aXB0Q29yZS5vcmRlcgkod29ya2luZyBjb3B5KQpAQCAtMTQyNyw3ICsxNDI3LDcgQEAgX19aTjdX
ZWJDb3JlMTBTdHJpbmdJbXBsMTFyZXZlcnNlRmluZEV0aQogX19aTjNXVEYyM3dhaXRGb3JUaHJl
YWRDb21wbGV0aW9uRWpQUHYKIF9fWk4zV1RGMTRGYXN0TWFsbG9jWm9uZTEwc3RhdGlzdGljc0VQ
MTRfbWFsbG9jX3pvbmVfdFAxOW1hbGxvY19zdGF0aXN0aWNzX3QKIF9fWk5LN1dlYkNvcmU2U3Ry
aW5nMThzaW1wbGlmeVdoaXRlU3BhY2VFdgotX19aTjdXZWJDb3JlMTBTdHJpbmdJbXBsMjNkZWZh
dWx0V3JpdGluZ0RpcmVjdGlvbkV2CitfX1pOM1dURjEwU3RyaW5nSW1wbDIzZGVmYXVsdFdyaXRp
bmdEaXJlY3Rpb25FUGIKIF9fWk4zSlNDTDIwZGF0ZVByb3RvRnVuY1NldFRpbWVFUE5TXzlFeGVj
U3RhdGVFUE5TXzhKU09iamVjdEVOU183SlNWYWx1ZUVSS05TXzdBcmdMaXN0RQogX19aTjNKU0NM
MjFkYXRlUHJvdG9GdW5jR2V0TW9udGhFUE5TXzlFeGVjU3RhdGVFUE5TXzhKU09iamVjdEVOU183
SlNWYWx1ZUVSS05TXzdBcmdMaXN0RQogX19aTkszSlNDMTJEYXRlSW5zdGFuY2UyNmNhbGN1bGF0
ZUdyZWdvcmlhbkRhdGVUaW1lRVBOU185RXhlY1N0YXRlRQpJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL3d0Zi90ZXh0L1N0cmluZ0ltcGwuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS93dGYvdGV4dC9TdHJpbmdJbXBsLmNwcAkocmV2aXNpb24gNzc0ODMpCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvd3RmL3RleHQvU3RyaW5nSW1wbC5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTEwMDUsMTUgKzEwMDUsMjMgQEAgYm9vbCBlcXVhbElnbm9yaW5nTnVsbGl0eShTdHJp
bmdJbXBsKiBhLAogICAgIHJldHVybiBmYWxzZTsKIH0KIAotV1RGOjpVbmljb2RlOjpEaXJlY3Rp
b24gU3RyaW5nSW1wbDo6ZGVmYXVsdFdyaXRpbmdEaXJlY3Rpb24oKQorV1RGOjpVbmljb2RlOjpE
aXJlY3Rpb24gU3RyaW5nSW1wbDo6ZGVmYXVsdFdyaXRpbmdEaXJlY3Rpb24oYm9vbCogaGFzU3Ry
b25nRGlyZWN0aW9uYWxpdHkpCiB7CiAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IG1fbGVu
Z3RoOyArK2kpIHsKICAgICAgICAgV1RGOjpVbmljb2RlOjpEaXJlY3Rpb24gY2hhckRpcmVjdGlv
biA9IFdURjo6VW5pY29kZTo6ZGlyZWN0aW9uKG1fZGF0YVtpXSk7Ci0gICAgICAgIGlmIChjaGFy
RGlyZWN0aW9uID09IFdURjo6VW5pY29kZTo6TGVmdFRvUmlnaHQpCisgICAgICAgIGlmIChjaGFy
RGlyZWN0aW9uID09IFdURjo6VW5pY29kZTo6TGVmdFRvUmlnaHQpIHsKKyAgICAgICAgICAgIGlm
IChoYXNTdHJvbmdEaXJlY3Rpb25hbGl0eSkKKyAgICAgICAgICAgICAgICAqaGFzU3Ryb25nRGly
ZWN0aW9uYWxpdHkgPSB0cnVlOwogICAgICAgICAgICAgcmV0dXJuIFdURjo6VW5pY29kZTo6TGVm
dFRvUmlnaHQ7Ci0gICAgICAgIGlmIChjaGFyRGlyZWN0aW9uID09IFdURjo6VW5pY29kZTo6Umln
aHRUb0xlZnQgfHwgY2hhckRpcmVjdGlvbiA9PSBXVEY6OlVuaWNvZGU6OlJpZ2h0VG9MZWZ0QXJh
YmljKQorICAgICAgICB9CisgICAgICAgIGlmIChjaGFyRGlyZWN0aW9uID09IFdURjo6VW5pY29k
ZTo6UmlnaHRUb0xlZnQgfHwgY2hhckRpcmVjdGlvbiA9PSBXVEY6OlVuaWNvZGU6OlJpZ2h0VG9M
ZWZ0QXJhYmljKSB7CisgICAgICAgICAgICBpZiAoaGFzU3Ryb25nRGlyZWN0aW9uYWxpdHkpCisg
ICAgICAgICAgICAgICAgKmhhc1N0cm9uZ0RpcmVjdGlvbmFsaXR5ID0gdHJ1ZTsKICAgICAgICAg
ICAgIHJldHVybiBXVEY6OlVuaWNvZGU6OlJpZ2h0VG9MZWZ0OworICAgICAgICB9CiAgICAgfQor
ICAgIGlmIChoYXNTdHJvbmdEaXJlY3Rpb25hbGl0eSkKKyAgICAgICAgKmhhc1N0cm9uZ0RpcmVj
dGlvbmFsaXR5ID0gZmFsc2U7CiAgICAgcmV0dXJuIFdURjo6VW5pY29kZTo6TGVmdFRvUmlnaHQ7
CiB9CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS93dGYvdGV4dC9TdHJpbmdJbXBsLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3d0Zi90ZXh0L1N0cmluZ0ltcGwu
aAkocmV2aXNpb24gNzc0ODMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvd3RmL3RleHQvU3Ry
aW5nSW1wbC5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMTYsNyArMzE2LDcgQEAgcHVibGljOgogICAg
IFBhc3NSZWZQdHI8U3RyaW5nSW1wbD4gcmVwbGFjZShTdHJpbmdJbXBsKiwgU3RyaW5nSW1wbCop
OwogICAgIFBhc3NSZWZQdHI8U3RyaW5nSW1wbD4gcmVwbGFjZSh1bnNpZ25lZCBpbmRleCwgdW5z
aWduZWQgbGVuLCBTdHJpbmdJbXBsKik7CiAKLSAgICBXVEY6OlVuaWNvZGU6OkRpcmVjdGlvbiBk
ZWZhdWx0V3JpdGluZ0RpcmVjdGlvbigpOworICAgIFdURjo6VW5pY29kZTo6RGlyZWN0aW9uIGRl
ZmF1bHRXcml0aW5nRGlyZWN0aW9uKGJvb2wqIGhhc1N0cm9uZ0RpcmVjdGlvbmFsaXR5ID0gMCk7
CiAKICNpZiBQTEFURk9STShDRikKICAgICBDRlN0cmluZ1JlZiBjcmVhdGVDRlN0cmluZygpOwpJ
bmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3d0Zi90ZXh0L1dURlN0cmluZy5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS93dGYvdGV4dC9XVEZTdHJpbmcuaAkocmV2aXNp
b24gNzc0ODMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvd3RmL3RleHQvV1RGU3RyaW5nLmgJ
KHdvcmtpbmcgY29weSkKQEAgLTMyNiw3ICszMjYsMTQgQEAgcHVibGljOgogICAgIHN0YXRpYyBT
dHJpbmcgZnJvbVVURjhXaXRoTGF0aW4xRmFsbGJhY2soY29uc3QgY2hhciosIHNpemVfdCk7CiAg
ICAgCiAgICAgLy8gRGV0ZXJtaW5lcyB0aGUgd3JpdGluZyBkaXJlY3Rpb24gdXNpbmcgdGhlIFVu
aWNvZGUgQmlkaSBBbGdvcml0aG0gcnVsZXMgUDIgYW5kIFAzLgotICAgIFdURjo6VW5pY29kZTo6
RGlyZWN0aW9uIGRlZmF1bHRXcml0aW5nRGlyZWN0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9pbXBs
ID8gbV9pbXBsLT5kZWZhdWx0V3JpdGluZ0RpcmVjdGlvbigpIDogV1RGOjpVbmljb2RlOjpMZWZ0
VG9SaWdodDsgfQorICAgIFdURjo6VW5pY29kZTo6RGlyZWN0aW9uIGRlZmF1bHRXcml0aW5nRGly
ZWN0aW9uKGJvb2wqIGhhc1N0cm9uZ0RpcmVjdGlvbmFsaXR5ID0gMCkgY29uc3QKKyAgICB7Cisg
ICAgICAgIGlmIChtX2ltcGwpCisgICAgICAgICAgICByZXR1cm4gbV9pbXBsLT5kZWZhdWx0V3Jp
dGluZ0RpcmVjdGlvbihoYXNTdHJvbmdEaXJlY3Rpb25hbGl0eSk7CisgICAgICAgIGlmIChoYXNT
dHJvbmdEaXJlY3Rpb25hbGl0eSkKKyAgICAgICAgICAgICpoYXNTdHJvbmdEaXJlY3Rpb25hbGl0
eSA9IGZhbHNlOworICAgICAgICByZXR1cm4gV1RGOjpVbmljb2RlOjpMZWZ0VG9SaWdodDsKKyAg
ICB9CiAKICAgICBib29sIGNvbnRhaW5zT25seUFTQ0lJKCkgY29uc3QgeyByZXR1cm4gY2hhcmFj
dGVyc0FyZUFsbEFTQ0lJKGNoYXJhY3RlcnMoKSwgbGVuZ3RoKCkpOyB9CiAgICAgYm9vbCBjb250
YWluc09ubHlMYXRpbjEoKSBjb25zdCB7IHJldHVybiBjaGFyYWN0ZXJzQXJlQWxsTGF0aW4xKGNo
YXJhY3RlcnMoKSwgbGVuZ3RoKCkpOyB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCShyZXZpc2lvbiA3Nzc1MSkK
KysrIFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDUz
IEBACisyMDExLTAyLTA1ICBZYWVsIEFoYXJvbiAgPHlhZWwuYWhhcm9uQG5va2lhLmNvbT4KKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGQgc3VwcG9y
dCBmb3IgZGlyPWF1dG8KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTUwOTE2CisKKyAgICAgICAgV2hlbiBhbiBlbGVtZW50IGhhcyBkaXIgYXR0cmlidXRl
IHdpdGggdmFsdWUgImF1dG8iLCBjYWxsIGRlZmF1bHRXcml0aW5nTW9kZQorICAgICAgICB0byBm
aW5kIGl0cyBkaXJlY3Rpb25hbGl0eS4KKyAgICAgICAgQWRkZWQgYSBmbGFnIFNlbGZPckFuY2Vz
dG9ySGFzRGlyQXV0b0ZsYWcsIGFuZCBhZGRlZCBob29rcyBpbiB0aGUgRE9NIHRvIHNldAorICAg
ICAgICBhbmQgY2hlY2sgdGhpcyBmbGFnLiBUaGlzIGZsYWcgaXMgc2V0IG9uIGV2ZXJ5IG5vZGUg
YmV0d2VlbiBhbiBlbGVtZW50IHdpdGgKKyAgICAgICAgZGlyPWF1dG8gYXR0cmlidXRlIGFuZCBp
dHMgZmlyc3QgdGV4dCBub2RlLiBDaGFuZ2VzIGluIHRoZSBET00gYmV0d2VlbiB0aG9zZQorICAg
ICAgICBlbGVtZW50cyB3aWxsIHRyaWdnZXIgcmUtZXZhbHVhdGluZyB0aGUgZGlyZWN0aW9uYWxp
dHksIGJ1dCBjaGFuZ2VkIG5vdAorICAgICAgICBiZXR3ZWVuIHRob3NlIGVsZW1lbnQgZG8gbm90
IG5lZWQgdG8gYmUgY29uY2VybmVkLgorICAgICAgICBUaGUgRE9NIGhvb2tzIHdlcmUgYWRkZWQg
dG8gY2hpbGRyZW5DaGFuZ2VkLCBhbmQgdG8gcGFyc2VNYXBwZWRBdHRyaWJ1dGUuCisgICAgICAg
IFRoZSBkaXJlY3Rpb25hbGl0eSBpcyBldmFsdWF0ZWQgd2hlbiBjaGlsZHJlbiBhcmUgYWRkZWQs
IGJ1dCBub3Qgd2hlbiB0aGV5IGFyZQorICAgICAgICByZW1vdmVkLiBPbmNlIHRoZXkgYXJlIHJl
LWFkZGVkLCB0aGUgZGlyZWN0aW9uYWxpdHkgd2lsbCBiZSBldmFsdWF0ZWQuCisKKyAgICAgICAg
QWRkZWQgMiBzdGF0aWMgQ1NTTXV0YWJsZVN0eWxlRGVjbGFyYXRpb25zIHRvIGJlIHVzZWQgZm9y
IGVsZW1lbnRzIHdpdGggZGlyPWF1dG8uCisgICAgICAgIFdlIGNhbm5vdCB1c2VkIHRoZSBtYXBw
ZWQgZGVjbGFyYXRpb24sIGJlY2F1c2UgaXQgY2FuIHRha2Ugb25seSBvbmUgdmFsdWUuCisKKyAg
ICAgICAgVGVzdHM6IGZhc3QvZG9tL0hUTUxFbGVtZW50L2F0dHItZGlyLWF1dG8tY2hhbmdlLWNo
aWxkLW5vZGUuaHRtbAorICAgICAgICAgICAgICAgZmFzdC9kb20vSFRNTEVsZW1lbnQvYXR0ci1k
aXItYXV0by1jaGFuZ2UtdGV4dC5odG1sCisgICAgICAgICAgICAgICBmYXN0L2RvbS9IVE1MRWxl
bWVudC9hdHRyLWRpci1hdXRvLWNoaWxkcmVuLmh0bWwKKyAgICAgICAgICAgICAgIGZhc3QvZG9t
L0hUTUxFbGVtZW50L2F0dHItZGlyLWF1dG8tcmVtb3ZlLWFkZC1jaGlsZHJlbi5odG1sCisgICAg
ICAgICAgICAgICBmYXN0L2RvbS9IVE1MRWxlbWVudC9hdHRyLWRpci1hdXRvLmh0bWwKKyAgICAg
ICAgICAgICAgIGZhc3QvZG9tL0hUTUxFbGVtZW50L2F0dHItZGlyLXZhbHVlLWNoYW5nZS5odG1s
CisKKyAgICAgICAgKiBjc3MvQ1NTU3R5bGVTZWxlY3Rvci5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpsZWZ0VG9SaWdodERlY2xhcmF0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OnJpZ2h0VG9MZWZ0
RGVjbGFyYXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6Q1NTU3R5bGVTZWxlY3Rvcjo6Y2FuU2hh
cmVTdHlsZVdpdGhFbGVtZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1N0eWxlU2VsZWN0b3I6
OnN0eWxlRm9yRWxlbWVudCk6CisgICAgICAgICogZG9tL0VsZW1lbnQuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6RWxlbWVudDo6Y2hpbGRyZW5DaGFuZ2VkKToKKyAgICAgICAgKFdlYkNvcmU6OkVs
ZW1lbnQ6OmRpcmVjdGlvbmFsaXR5SWZoYXNEaXJBdXRvQXR0cmlidXRlKToKKyAgICAgICAgKFdl
YkNvcmU6OkVsZW1lbnQ6OmRpcmVjdGlvbmFsaXR5KToKKyAgICAgICAgKFdlYkNvcmU6OkVsZW1l
bnQ6OnNldEhhc0RpckF1dG9GbGFnUmVjdXJzaXZlbHkpOgorICAgICAgICAoV2ViQ29yZTo6RWxl
bWVudDo6ZGlyQXR0cmlidXRlQ2hhbmdlZCk6CisgICAgICAgIChXZWJDb3JlOjpFbGVtZW50Ojph
ZGp1c3REaXJlY3Rpb25hbGl0eUlmTmVlZGVkQWZ0ZXJDaGlsZEF0dHJpYnV0ZUNoYW5nZWQpOgor
ICAgICAgICAoV2ViQ29yZTo6RWxlbWVudDo6Y2FsY3VsYXRlQW5kQWRqdXN0RGlyZWN0aW9uYWxp
dHkpOgorICAgICAgICAoV2ViQ29yZTo6RWxlbWVudDo6YWRqdXN0RGlyZWN0aW9uYWxpdHlJZk5l
ZWRlZEFmdGVyQ2hpbGRyZW5DaGFuZ2VkKToKKyAgICAgICAgKiBkb20vRWxlbWVudC5oOgorICAg
ICAgICAqIGRvbS9Ob2RlLmg6CisgICAgICAgIChXZWJDb3JlOjpOb2RlOjpzZWxmT3JBbmNlc3Rv
ckhhc0RpckF1dG9BdHRyaWJ1dGUpOgorICAgICAgICAoV2ViQ29yZTo6Tm9kZTo6c2V0U2VsZk9y
QW5jZXN0b3JIYXNEaXJBdXRvQXR0cmlidXRlKToKKyAgICAgICAgKiBodG1sL0hUTUxFbGVtZW50
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxFbGVtZW50OjptYXBUb0VudHJ5KToKKyAgICAg
ICAgKFdlYkNvcmU6OkhUTUxFbGVtZW50OjpwYXJzZU1hcHBlZEF0dHJpYnV0ZSk6CisKIDIwMTEt
MDItMDUgIEFuZGVycyBDYXJsc3NvbiAgPGFuZGVyc2NhQGFwcGxlLmNvbT4KIAogICAgICAgICBS
ZXZpZXdlZCBieSBEYXJpbiBBZGxlci4KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2Nzcy9DU1NTdHls
ZVNlbGVjdG9yLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9jc3MvQ1NTU3R5bGVT
ZWxlY3Rvci5jcHAJKHJldmlzaW9uIDc3NDgzKQorKysgU291cmNlL1dlYkNvcmUvY3NzL0NTU1N0
eWxlU2VsZWN0b3IuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00NjMsNiArNDYzLDI2IEBAIHN0YXRp
YyBjb25zdCBNZWRpYVF1ZXJ5RXZhbHVhdG9yJiBwcmludEUKICAgICByZXR1cm4gc3RhdGljUHJp
bnRFdmFsOwogfQogCitzdGF0aWMgQ1NTTXV0YWJsZVN0eWxlRGVjbGFyYXRpb24qIGxlZnRUb1Jp
Z2h0RGVjbGFyYXRpb24oKQoreworICAgIERFRklORV9TVEFUSUNfTE9DQUwoUmVmUHRyPENTU011
dGFibGVTdHlsZURlY2xhcmF0aW9uPiwgbGVmdFRvUmlnaHREZWNsLCAoQ1NTTXV0YWJsZVN0eWxl
RGVjbGFyYXRpb246OmNyZWF0ZSgpKSk7CisgICAgaWYgKCFsZWZ0VG9SaWdodERlY2wtPmxlbmd0
aCgpKSB7CisgICAgICAgIGxlZnRUb1JpZ2h0RGVjbC0+c2V0UHJvcGVydHkoQ1NTUHJvcGVydHlE
aXJlY3Rpb24sICJsdHIiLCBmYWxzZSwgZmFsc2UpOworICAgICAgICBsZWZ0VG9SaWdodERlY2wt
PnNldFN0cmljdFBhcnNpbmcoZmFsc2UpOworICAgIH0KKyAgICByZXR1cm4gbGVmdFRvUmlnaHRE
ZWNsLmdldCgpOworfQorCitzdGF0aWMgQ1NTTXV0YWJsZVN0eWxlRGVjbGFyYXRpb24qIHJpZ2h0
VG9MZWZ0RGVjbGFyYXRpb24oKQoreworICAgIERFRklORV9TVEFUSUNfTE9DQUwoUmVmUHRyPENT
U011dGFibGVTdHlsZURlY2xhcmF0aW9uPiwgcmlnaHRUb0xlZnREZWNsLCAoQ1NTTXV0YWJsZVN0
eWxlRGVjbGFyYXRpb246OmNyZWF0ZSgpKSk7CisgICAgaWYgKCFyaWdodFRvTGVmdERlY2wtPmxl
bmd0aCgpKSB7CisgICAgICAgIHJpZ2h0VG9MZWZ0RGVjbC0+c2V0UHJvcGVydHkoQ1NTUHJvcGVy
dHlEaXJlY3Rpb24sICJydGwiLCBmYWxzZSwgZmFsc2UpOworICAgICAgICByaWdodFRvTGVmdERl
Y2wtPnNldFN0cmljdFBhcnNpbmcoZmFsc2UpOworICAgIH0KKyAgICByZXR1cm4gcmlnaHRUb0xl
ZnREZWNsLmdldCgpOworfQorCiBDU1NTdHlsZVNlbGVjdG9yOjpDU1NTdHlsZVNlbGVjdG9yKERv
Y3VtZW50KiBkb2N1bWVudCwgU3R5bGVTaGVldExpc3QqIHN0eWxlU2hlZXRzLCBDU1NTdHlsZVNo
ZWV0KiBtYXBwZWRFbGVtZW50U2hlZXQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIENTU1N0eWxlU2hlZXQqIHBhZ2VVc2VyU2hlZXQsIGNvbnN0IFZlY3RvcjxSZWZQdHI8Q1NT
U3R5bGVTaGVldD4gPiogcGFnZUdyb3VwVXNlclNoZWV0cywKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgYm9vbCBzdHJpY3RQYXJzaW5nLCBib29sIG1hdGNoQXV0aG9yQW5kVXNl
clN0eWxlcykKQEAgLTEwNTgsNiArMTA3OCw5IEBAIGJvb2wgQ1NTU3R5bGVTZWxlY3Rvcjo6Y2Fu
U2hhcmVTdHlsZVdpdGgKICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAjZW5kaWYKIAor
ICAgICAgICAgICAgaWYgKGVxdWFsSWdub3JpbmdDYXNlKHMtPmZhc3RHZXRBdHRyaWJ1dGUoZGly
QXR0ciksICJhdXRvIikgfHwgZXF1YWxJZ25vcmluZ0Nhc2UobV9lbGVtZW50LT5mYXN0R2V0QXR0
cmlidXRlKGRpckF0dHIpLCAiYXV0byIpKQorICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsK
KwogICAgICAgICAgICAgYm9vbCBjbGFzc2VzTWF0Y2ggPSB0cnVlOwogICAgICAgICAgICAgaWYg
KHMtPmhhc0NsYXNzKCkpIHsKICAgICAgICAgICAgICAgICBjb25zdCBBdG9taWNTdHJpbmcmIGNs
YXNzMSA9IG1fZWxlbWVudC0+ZmFzdEdldEF0dHJpYnV0ZShjbGFzc0F0dHIpOwpAQCAtMTM1NSw2
ICsxMzc4LDEwIEBAIFBhc3NSZWZQdHI8UmVuZGVyU3R5bGU+IENTU1N0eWxlU2VsZWN0b3IKICAg
ICAgICAgICAgICAgICAgICAgICAgIGFkZE1hdGNoZWREZWNsYXJhdGlvbihtX2FkZGl0aW9uYWxB
dHRyaWJ1dGVTdHlsZURlY2xzW2ldKTsKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICB9
CisgICAgICAgICAgICBib29sIGlzQXV0bzsKKyAgICAgICAgICAgIFRleHREaXJlY3Rpb24gdGV4
dERpcmVjdGlvbiA9IG1fc3R5bGVkRWxlbWVudC0+ZGlyZWN0aW9uYWxpdHlJZmhhc0RpckF1dG9B
dHRyaWJ1dGUoaXNBdXRvKTsKKyAgICAgICAgICAgIGlmIChpc0F1dG8pCisgICAgICAgICAgICAg
ICAgYWRkTWF0Y2hlZERlY2xhcmF0aW9uKHRleHREaXJlY3Rpb24gPT0gTFRSID8gbGVmdFRvUmln
aHREZWNsYXJhdGlvbigpIDogcmlnaHRUb0xlZnREZWNsYXJhdGlvbigpKTsKICAgICAgICAgfQog
ICAgIAogICAgICAgICAvLyA2LiBDaGVjayB0aGUgcnVsZXMgaW4gYXV0aG9yIHNoZWV0cyBuZXh0
LgpJbmRleDogU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmNwcAkocmV2aXNpb24gNzc0ODMpCisrKyBTb3VyY2Uv
V2ViQ29yZS9kb20vRWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEyMjEsNiArMTIyMSw5
IEBAIHZvaWQgRWxlbWVudDo6Y2hpbGRyZW5DaGFuZ2VkKGJvb2wgY2hhbmcKICAgICBDb250YWlu
ZXJOb2RlOjpjaGlsZHJlbkNoYW5nZWQoY2hhbmdlZEJ5UGFyc2VyLCBiZWZvcmVDaGFuZ2UsIGFm
dGVyQ2hhbmdlLCBjaGlsZENvdW50RGVsdGEpOwogICAgIGlmICghY2hhbmdlZEJ5UGFyc2VyKQog
ICAgICAgICBjaGVja0ZvclNpYmxpbmdTdHlsZUNoYW5nZXModGhpcywgcmVuZGVyU3R5bGUoKSwg
ZmFsc2UsIGJlZm9yZUNoYW5nZSwgYWZ0ZXJDaGFuZ2UsIGNoaWxkQ291bnREZWx0YSk7CisKKyAg
ICBpZiAoaXNIVE1MRWxlbWVudCgpKQorICAgICAgICBhZGp1c3REaXJlY3Rpb25hbGl0eUlmTmVl
ZGVkQWZ0ZXJDaGlsZHJlbkNoYW5nZWQoYmVmb3JlQ2hhbmdlLCBjaGlsZENvdW50RGVsdGEpOwog
fQogCiB2b2lkIEVsZW1lbnQ6OmZpbmlzaFBhcnNpbmdDaGlsZHJlbigpCkBAIC0xODIxLDQgKzE4
MjQsMTM3IEBAIGJvb2wgRWxlbWVudDo6aXNTcGVsbENoZWNraW5nRW5hYmxlZCgpIGMKICAgICBy
ZXR1cm4gdHJ1ZTsKIH0KIAorVGV4dERpcmVjdGlvbiBFbGVtZW50OjpkaXJlY3Rpb25hbGl0eUlm
aGFzRGlyQXV0b0F0dHJpYnV0ZShib29sJiBpc0F1dG8pIGNvbnN0Cit7CisgICAgaWYgKCEoc2Vs
Zk9yQW5jZXN0b3JIYXNEaXJBdXRvQXR0cmlidXRlKCkgJiYgZXF1YWxJZ25vcmluZ0Nhc2UoZ2V0
QXR0cmlidXRlKGRpckF0dHIpLCAiYXV0byIpKSkgeworICAgICAgICBpc0F1dG8gPSBmYWxzZTsK
KyAgICAgICAgcmV0dXJuIExUUjsKKyAgICB9CisKKyAgICBpc0F1dG8gPSB0cnVlOworICAgIHJl
dHVybiBkaXJlY3Rpb25hbGl0eSgpOworfQorCitUZXh0RGlyZWN0aW9uIEVsZW1lbnQ6OmRpcmVj
dGlvbmFsaXR5KE5vZGUqKiBzdHJvbmdEaXJlY3Rpb25hbGl0eVRleHROb2RlKSBjb25zdAorewor
ICAgIE5vZGUqIG5vZGUgPSBmaXJzdENoaWxkKCk7CisgICAgd2hpbGUgKG5vZGUpIHsKKyAgICAg
ICAgLy8gU2tpcCBiZGksIHNjcmlwdCBhbmQgc3R5bGUgZWxlbWVudHMKKyAgICAgICAgaWYgKGVx
dWFsSWdub3JpbmdDYXNlKG5vZGUtPm5vZGVOYW1lKCksICJiZGkiKSB8fCBub2RlLT5oYXNUYWdO
YW1lKHNjcmlwdFRhZykgfHwgbm9kZS0+aGFzVGFnTmFtZShzdHlsZVRhZykpIHsKKyAgICAgICAg
ICAgIG5vZGUgPSBub2RlLT50cmF2ZXJzZU5leHRTaWJsaW5nKHRoaXMpOworICAgICAgICAgICAg
Y29udGludWU7CisgICAgICAgIH0KKworICAgICAgICAvLyBTa2lwIGVsZW1lbnRzIHdpdGggdmFs
aWQgZGlyIGF0dHJpYnV0ZQorICAgICAgICBpZiAobm9kZS0+aXNFbGVtZW50Tm9kZSgpKSB7Cisg
ICAgICAgICAgICBBdG9taWNTdHJpbmcgZGlyQXR0cmlidXRlVmFsdWUgPSB0b0VsZW1lbnQobm9k
ZSktPmZhc3RHZXRBdHRyaWJ1dGUoZGlyQXR0cik7CisgICAgICAgICAgICBpZiAoZXF1YWxJZ25v
cmluZ0Nhc2UoZGlyQXR0cmlidXRlVmFsdWUsICJydGwiKSB8fCBlcXVhbElnbm9yaW5nQ2FzZShk
aXJBdHRyaWJ1dGVWYWx1ZSwgImx0ciIpIHx8IGVxdWFsSWdub3JpbmdDYXNlKGRpckF0dHJpYnV0
ZVZhbHVlLCAiYXV0byIpKSB7CisgICAgICAgICAgICAgICAgbm9kZSA9IG5vZGUtPnRyYXZlcnNl
TmV4dFNpYmxpbmcodGhpcyk7CisgICAgICAgICAgICAgICAgY29udGludWU7CisgICAgICAgICAg
ICB9CisgICAgICAgIH0KKworICAgICAgICBpZiAobm9kZS0+aXNUZXh0Tm9kZSgpKSB7CisgICAg
ICAgICAgICBib29sIGhhc1N0cm9uZ0RpcmVjdGlvbmFsaXR5OworICAgICAgICAgICAgV1RGOjpV
bmljb2RlOjpEaXJlY3Rpb24gdGV4dERpcmVjdGlvbiA9IG5vZGUtPnRleHRDb250ZW50KHRydWUp
LmRlZmF1bHRXcml0aW5nRGlyZWN0aW9uKCZoYXNTdHJvbmdEaXJlY3Rpb25hbGl0eSk7CisgICAg
ICAgICAgICBpZiAoaGFzU3Ryb25nRGlyZWN0aW9uYWxpdHkpIHsKKyAgICAgICAgICAgICAgICBp
ZiAoc3Ryb25nRGlyZWN0aW9uYWxpdHlUZXh0Tm9kZSkKKyAgICAgICAgICAgICAgICAgICAgKnN0
cm9uZ0RpcmVjdGlvbmFsaXR5VGV4dE5vZGUgPSBub2RlOworICAgICAgICAgICAgICAgIHJldHVy
biAodGV4dERpcmVjdGlvbiA9PSBXVEY6OlVuaWNvZGU6OkxlZnRUb1JpZ2h0KSA/IExUUiA6IFJU
TDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICBub2RlID0gbm9kZS0+dHJhdmVy
c2VOZXh0Tm9kZSh0aGlzKTsKKyAgICB9CisgICAgaWYgKHN0cm9uZ0RpcmVjdGlvbmFsaXR5VGV4
dE5vZGUpCisgICAgICAgICpzdHJvbmdEaXJlY3Rpb25hbGl0eVRleHROb2RlID0gMDsKKyAgICBy
ZXR1cm4gTFRSOworfQorCit2b2lkIEVsZW1lbnQ6OnNldEhhc0RpckF1dG9GbGFnUmVjdXJzaXZl
bHkoYm9vbCBmbGFnLCBOb2RlKiBsYXN0Tm9kZSkKK3sKKyAgICBzZXRTZWxmT3JBbmNlc3Rvckhh
c0RpckF1dG9BdHRyaWJ1dGUoZmxhZyk7CisKKyAgICBOb2RlKiBub2RlID0gZmlyc3RDaGlsZCgp
OworCisgICAgd2hpbGUgKG5vZGUpIHsKKyAgICAgICAgaWYgKG5vZGUtPnNlbGZPckFuY2VzdG9y
SGFzRGlyQXV0b0F0dHJpYnV0ZSgpID09IGZsYWcpCisgICAgICAgICAgICByZXR1cm47CisKKyAg
ICAgICAgaWYgKG5vZGUtPmlzSFRNTEVsZW1lbnQoKSAmJiB0b0VsZW1lbnQobm9kZSktPmhhc0F0
dHJpYnV0ZShkaXJBdHRyKSkgeworICAgICAgICAgICAgaWYgKG5vZGUgPT0gbGFzdE5vZGUpCisg
ICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgbm9kZSA9IG5vZGUtPnRyYXZlcnNl
TmV4dFNpYmxpbmcodGhpcyk7CisgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgfQorICAg
ICAgICBub2RlLT5zZXRTZWxmT3JBbmNlc3Rvckhhc0RpckF1dG9BdHRyaWJ1dGUoZmxhZyk7Cisg
ICAgICAgIGlmIChub2RlID09IGxhc3ROb2RlKQorICAgICAgICAgICAgcmV0dXJuOworICAgICAg
ICBub2RlID0gbm9kZS0+dHJhdmVyc2VOZXh0Tm9kZSh0aGlzKTsKKyAgICB9Cit9CisKK3ZvaWQg
RWxlbWVudDo6ZGlyQXR0cmlidXRlQ2hhbmdlZChBdHRyaWJ1dGUqIGF0dHJpYnV0ZSkKK3sKKyAg
ICBFbGVtZW50KiBwYXJlbnQgPSBwYXJlbnRFbGVtZW50KCk7CisKKyAgICBpZiAocGFyZW50ICYm
IHBhcmVudC0+c2VsZk9yQW5jZXN0b3JIYXNEaXJBdXRvQXR0cmlidXRlKCkpCisgICAgICAgIHBh
cmVudC0+YWRqdXN0RGlyZWN0aW9uYWxpdHlJZk5lZWRlZEFmdGVyQ2hpbGRBdHRyaWJ1dGVDaGFu
Z2VkKHRoaXMpOworCisgICAgaWYgKGVxdWFsSWdub3JpbmdDYXNlKGF0dHJpYnV0ZS0+dmFsdWUo
KSwgImF1dG8iKSkKKyAgICAgICAgY2FsY3VsYXRlQW5kQWRqdXN0RGlyZWN0aW9uYWxpdHkoKTsK
K30KKwordm9pZCBFbGVtZW50OjphZGp1c3REaXJlY3Rpb25hbGl0eUlmTmVlZGVkQWZ0ZXJDaGls
ZEF0dHJpYnV0ZUNoYW5nZWQoRWxlbWVudCogY2hpbGQpCit7CisgICAgQVNTRVJUKHNlbGZPckFu
Y2VzdG9ySGFzRGlyQXV0b0F0dHJpYnV0ZSgpKTsKKyAgICBOb2RlKiBzdHJvbmdEaXJlY3Rpb25h
bGl0eVRleHROb2RlOworICAgIFRleHREaXJlY3Rpb24gdGV4dERpcmVjdGlvbiA9IGRpcmVjdGlv
bmFsaXR5KCZzdHJvbmdEaXJlY3Rpb25hbGl0eVRleHROb2RlKTsKKyAgICBjaGlsZC0+c2V0SGFz
RGlyQXV0b0ZsYWdSZWN1cnNpdmVseShmYWxzZSk7CisgICAgaWYgKHJlbmRlcmVyKCkgJiYgcmVu
ZGVyZXIoKS0+c3R5bGUoKSAmJiByZW5kZXJlcigpLT5zdHlsZSgpLT5kaXJlY3Rpb24oKSAhPSB0
ZXh0RGlyZWN0aW9uKSB7CisgICAgICAgIEVsZW1lbnQqIGVsZW1lbnRUb0FkanVzdCA9IHRoaXM7
CisgICAgICAgIGZvciAoOyBlbGVtZW50VG9BZGp1c3Q7IGVsZW1lbnRUb0FkanVzdCA9IGVsZW1l
bnRUb0FkanVzdC0+cGFyZW50RWxlbWVudCgpKSB7CisgICAgICAgICAgICBpZiAoZWxlbWVudFRv
QWRqdXN0LT5oYXNBdHRyaWJ1dGUoZGlyQXR0cikpIHsKKyAgICAgICAgICAgICAgICBlbGVtZW50
VG9BZGp1c3QtPnNldE5lZWRzU3R5bGVSZWNhbGMoKTsKKyAgICAgICAgICAgICAgICByZXR1cm47
CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9Cit9CisKK3ZvaWQgRWxlbWVudDo6Y2Fs
Y3VsYXRlQW5kQWRqdXN0RGlyZWN0aW9uYWxpdHkoKQoreworICAgIE5vZGUqIHN0cm9uZ0RpcmVj
dGlvbmFsaXR5VGV4dE5vZGU7CisgICAgVGV4dERpcmVjdGlvbiB0ZXh0RGlyZWN0aW9uID0gZGly
ZWN0aW9uYWxpdHkoJnN0cm9uZ0RpcmVjdGlvbmFsaXR5VGV4dE5vZGUpOworICAgIHNldEhhc0Rp
ckF1dG9GbGFnUmVjdXJzaXZlbHkodHJ1ZSwgc3Ryb25nRGlyZWN0aW9uYWxpdHlUZXh0Tm9kZSk7
CisgICAgaWYgKHJlbmRlcmVyKCkgJiYgcmVuZGVyZXIoKS0+c3R5bGUoKSAmJiByZW5kZXJlcigp
LT5zdHlsZSgpLT5kaXJlY3Rpb24oKSAhPSB0ZXh0RGlyZWN0aW9uKQorICAgICAgICBzZXROZWVk
c1N0eWxlUmVjYWxjKCk7Cit9CisKK3ZvaWQgRWxlbWVudDo6YWRqdXN0RGlyZWN0aW9uYWxpdHlJ
Zk5lZWRlZEFmdGVyQ2hpbGRyZW5DaGFuZ2VkKE5vZGUqIGJlZm9yZUNoYW5nZSwgaW50IGNoaWxk
Q291bnREZWx0YSkKK3sKKyAgICBpZiAoY2hpbGRDb3VudERlbHRhID4gMCkgeworICAgICAgICBO
b2RlKiBub2RlID0gYmVmb3JlQ2hhbmdlID8gYmVmb3JlQ2hhbmdlLT50cmF2ZXJzZU5leHRTaWJs
aW5nKCkgOiAwOworICAgICAgICBmb3IgKGludCBjb3VudGVyID0gMDsgbm9kZSAmJiBjb3VudGVy
IDwgY2hpbGRDb3VudERlbHRhOyBjb3VudGVyKyssIG5vZGUgPSBub2RlLT50cmF2ZXJzZU5leHRT
aWJsaW5nKCkpIHsKKyAgICAgICAgICAgIGlmIChub2RlLT5pc0VsZW1lbnROb2RlKCkgJiYgdG9F
bGVtZW50KG5vZGUpLT5oYXNBdHRyaWJ1dGUoZGlyQXR0cikpCisgICAgICAgICAgICAgICAgY29u
dGludWU7CisKKyAgICAgICAgICAgIGlmIChub2RlLT5pc0VsZW1lbnROb2RlKCkpCisgICAgICAg
ICAgICAgICAgdG9FbGVtZW50KG5vZGUpLT5zZXRIYXNEaXJBdXRvRmxhZ1JlY3Vyc2l2ZWx5KGZh
bHNlKTsKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICBub2RlLT5zZXRTZWxmT3JB
bmNlc3Rvckhhc0RpckF1dG9BdHRyaWJ1dGUoZmFsc2UpOworICAgICAgICB9CisgICAgfQorCisg
ICAgaWYgKCFzZWxmT3JBbmNlc3Rvckhhc0RpckF1dG9BdHRyaWJ1dGUoKSkKKyAgICAgICAgcmV0
dXJuOworCisgICAgZm9yIChFbGVtZW50KiBlbGVtZW50VG9BZGp1c3QgPSB0aGlzOyBlbGVtZW50
VG9BZGp1c3Q7IGVsZW1lbnRUb0FkanVzdCA9IGVsZW1lbnRUb0FkanVzdC0+cGFyZW50RWxlbWVu
dCgpKSB7CisgICAgICAgIGlmIChlbGVtZW50VG9BZGp1c3QtPmhhc0F0dHJpYnV0ZShkaXJBdHRy
KSkgeworICAgICAgICAgICAgZWxlbWVudFRvQWRqdXN0LT5jYWxjdWxhdGVBbmRBZGp1c3REaXJl
Y3Rpb25hbGl0eSgpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisgICAgfQorfQor
CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2RvbS9FbGVt
ZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuaAkocmV2aXNp
b24gNzc0ODMpCisrKyBTb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5oCSh3b3JraW5nIGNvcHkp
CkBAIC0zMzksNiArMzM5LDggQEAgcHVibGljOgogCiAgICAgdmlydHVhbCBib29sIGlzU3BlbGxD
aGVja2luZ0VuYWJsZWQoKSBjb25zdDsKIAorICAgIFRleHREaXJlY3Rpb24gZGlyZWN0aW9uYWxp
dHlJZmhhc0RpckF1dG9BdHRyaWJ1dGUoYm9vbCYgaXNBdXRvKSBjb25zdDsKKwogcHJvdGVjdGVk
OgogICAgIEVsZW1lbnQoY29uc3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFtZSwgRG9jdW1lbnQqIGRv
Y3VtZW50LCBDb25zdHJ1Y3Rpb25UeXBlIHR5cGUpCiAgICAgICAgIDogQ29udGFpbmVyTm9kZShk
b2N1bWVudCwgdHlwZSkKQEAgLTM1Nyw2ICszNTksMTMgQEAgcHJvdGVjdGVkOgogICAgIHZvaWQg
cmVjYWxjU3R5bGVJZk5lZWRlZEFmdGVyQXR0cmlidXRlQ2hhbmdlZChBdHRyaWJ1dGUqKTsKICAg
ICB2b2lkIHVwZGF0ZUFmdGVyQXR0cmlidXRlQ2hhbmdlZChBdHRyaWJ1dGUqKTsKIAorcHJvdGVj
dGVkOgorICAgIHZvaWQgc2V0SGFzRGlyQXV0b0ZsYWdSZWN1cnNpdmVseShib29sLCBOb2RlKiA9
IDApOworICAgIHZvaWQgZGlyQXR0cmlidXRlQ2hhbmdlZChBdHRyaWJ1dGUqKTsKKyAgICB2b2lk
IGFkanVzdERpcmVjdGlvbmFsaXR5SWZOZWVkZWRBZnRlckNoaWxkQXR0cmlidXRlQ2hhbmdlZChF
bGVtZW50KiBjaGlsZCk7CisgICAgdm9pZCBjYWxjdWxhdGVBbmRBZGp1c3REaXJlY3Rpb25hbGl0
eSgpOworICAgIHZvaWQgYWRqdXN0RGlyZWN0aW9uYWxpdHlJZk5lZWRlZEFmdGVyQ2hpbGRyZW5D
aGFuZ2VkKE5vZGUqIGJlZm9yZUNoYW5nZSwgaW50IGNoaWxkQ291bnREZWx0YSk7CisKIHByaXZh
dGU6CiAgICAgdm9pZCBzY3JvbGxCeVVuaXRzKGludCB1bml0cywgU2Nyb2xsR3JhbnVsYXJpdHkp
OwogCkBAIC00MDEsNiArNDEwLDggQEAgcHJpdmF0ZToKICAgICBTcGVsbGNoZWNrQXR0cmlidXRl
U3RhdGUgc3BlbGxjaGVja0F0dHJpYnV0ZVN0YXRlKCkgY29uc3Q7CiAgICAgdm9pZCByZW1vdmVT
aGFkb3dSb290KCk7CiAKKyAgICBUZXh0RGlyZWN0aW9uIGRpcmVjdGlvbmFsaXR5KE5vZGUqKiA9
IDApIGNvbnN0OworCiBwcml2YXRlOgogICAgIG11dGFibGUgUmVmUHRyPE5hbWVkTm9kZU1hcD4g
bV9hdHRyaWJ1dGVNYXA7CiB9OwpJbmRleDogU291cmNlL1dlYkNvcmUvZG9tL05vZGUuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9kb20vTm9kZS5oCShyZXZpc2lvbiA3NzQ4MykKKysr
IFNvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlLmgJKHdvcmtpbmcgY29weSkKQEAgLTIxNyw2ICsyMTcs
OSBAQCBwdWJsaWM6CiAgICAgRWxlbWVudCogc2hhZG93SG9zdCgpIGNvbnN0OwogICAgIHZvaWQg
c2V0U2hhZG93SG9zdChFbGVtZW50Kik7CiAKKyAgICBib29sIHNlbGZPckFuY2VzdG9ySGFzRGly
QXV0b0F0dHJpYnV0ZSgpIGNvbnN0IHsgcmV0dXJuIGdldEZsYWcoU2VsZk9yQW5jZXN0b3JIYXNE
aXJBdXRvRmxhZyk7IH0KKyAgICB2b2lkIHNldFNlbGZPckFuY2VzdG9ySGFzRGlyQXV0b0F0dHJp
YnV0ZShib29sIGZsYWcpIHsgc2V0RmxhZyhmbGFnLCBTZWxmT3JBbmNlc3Rvckhhc0RpckF1dG9G
bGFnKTsgfQorCiAgICAgLy8gUmV0dXJucyB0aGUgZW5jbG9zaW5nIGV2ZW50IHBhcmVudCBub2Rl
IChvciBzZWxmKSB0aGF0LCB3aGVuIGNsaWNrZWQsIHdvdWxkIHRyaWdnZXIgYSBuYXZpZ2F0aW9u
LgogICAgIE5vZGUqIGVuY2xvc2luZ0xpbmtFdmVudFBhcmVudE9yU2VsZigpOwogCkBAIC02MDMs
NiArNjA2LDggQEAgcHJpdmF0ZToKIAogICAgICAgICBTdHlsZUNoYW5nZU1hc2sgPSAxIDw8IG5v
ZGVTdHlsZUNoYW5nZVNoaWZ0IHwgMSA8PCAobm9kZVN0eWxlQ2hhbmdlU2hpZnQgKyAxKSwKIAor
ICAgICAgICBTZWxmT3JBbmNlc3Rvckhhc0RpckF1dG9GbGFnID0gMSA8PCAyNywKKwogI2lmIEVO
QUJMRShTVkcpCiAgICAgICAgIERlZmF1bHROb2RlRmxhZ3MgPSBJc1BhcnNpbmdDaGlsZHJlbkZp
bmlzaGVkRmxhZyB8IElzU3R5bGVBdHRyaWJ1dGVWYWxpZEZsYWcgfCBBcmVTVkdBdHRyaWJ1dGVz
VmFsaWRGbGFnCiAjZWxzZQpJbmRleDogU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRWxlbWVudC5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRWxlbWVudC5jcHAJKHJl
dmlzaW9uIDc3NDgzKQorKysgU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRWxlbWVudC5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTEyNCw3ICsxMjQsNyBAQCBib29sIEhUTUxFbGVtZW50OjptYXBUb0Vu
dHJ5KGNvbnN0IFF1YWxpCiAgICAgfQogICAgIGlmIChhdHRyTmFtZSA9PSBkaXJBdHRyKSB7CiAg
ICAgICAgIHJlc3VsdCA9IGhhc0xvY2FsTmFtZShiZG9UYWcpID8gZUJETyA6IGVVbml2ZXJzYWw7
Ci0gICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQogCiAg
ICAgcmV0dXJuIFN0eWxlZEVsZW1lbnQ6Om1hcFRvRW50cnkoYXR0ck5hbWUsIHJlc3VsdCk7CkBA
IC0xNTUsNyArMTU1LDkgQEAgdm9pZCBIVE1MRWxlbWVudDo6cGFyc2VNYXBwZWRBdHRyaWJ1dGUo
QQogICAgIH0gZWxzZSBpZiAoYXR0ci0+bmFtZSgpID09IGxhbmdBdHRyKSB7CiAgICAgICAgIC8v
IEZJWE1FOiBJbXBsZW1lbnQKICAgICB9IGVsc2UgaWYgKGF0dHItPm5hbWUoKSA9PSBkaXJBdHRy
KSB7Ci0gICAgICAgIGFkZENTU1Byb3BlcnR5KGF0dHIsIENTU1Byb3BlcnR5RGlyZWN0aW9uLCBh
dHRyLT52YWx1ZSgpKTsKKyAgICAgICAgaWYgKCFlcXVhbElnbm9yaW5nQ2FzZShhdHRyLT52YWx1
ZSgpLCAiYXV0byIpKQorICAgICAgICAgICAgYWRkQ1NTUHJvcGVydHkoYXR0ciwgQ1NTUHJvcGVy
dHlEaXJlY3Rpb24sIGF0dHItPnZhbHVlKCkpOworICAgICAgICBkaXJBdHRyaWJ1dGVDaGFuZ2Vk
KGF0dHIpOwogICAgICAgICBhZGRDU1NQcm9wZXJ0eShhdHRyLCBDU1NQcm9wZXJ0eVVuaWNvZGVC
aWRpLCBoYXNMb2NhbE5hbWUoYmRvVGFnKSA/IENTU1ZhbHVlQmlkaU92ZXJyaWRlIDogQ1NTVmFs
dWVFbWJlZCk7CiAgICAgfSBlbHNlIGlmIChhdHRyLT5uYW1lKCkgPT0gZHJhZ2dhYmxlQXR0cikg
ewogICAgICAgICBjb25zdCBBdG9taWNTdHJpbmcmIHZhbHVlID0gYXR0ci0+dmFsdWUoKTsKSW5k
ZXg6IExheW91dFRlc3RzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9DaGFu
Z2VMb2cJKHJldmlzaW9uIDc3NzUxKQorKysgTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCSh3b3JraW5n
IGNvcHkpCkBAIC0xLDMgKzEsMjMgQEAKKzIwMTEtMDItMDUgIFlhZWwgQWhhcm9uICA8eWFlbC5h
aGFyb25Abm9raWEuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgIEFkZCBzdXBwb3J0IGZvciBkaXI9YXV0bworICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NTA5MTYKKworICAgICAgICAqIGZhc3QvZG9tL0hU
TUxFbGVtZW50L2F0dHItZGlyLWF1dG8tY2hhbmdlLWNoaWxkLW5vZGUtZXhwZWN0ZWQudHh0OiBB
ZGRlZC4KKyAgICAgICAgKiBmYXN0L2RvbS9IVE1MRWxlbWVudC9hdHRyLWRpci1hdXRvLWNoYW5n
ZS1jaGlsZC1ub2RlLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGZhc3QvZG9tL0hUTUxFbGVtZW50
L2F0dHItZGlyLWF1dG8tY2hhbmdlLXRleHQtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAg
KiBmYXN0L2RvbS9IVE1MRWxlbWVudC9hdHRyLWRpci1hdXRvLWNoYW5nZS10ZXh0Lmh0bWw6IEFk
ZGVkLgorICAgICAgICAqIGZhc3QvZG9tL0hUTUxFbGVtZW50L2F0dHItZGlyLWF1dG8tY2hpbGRy
ZW4tZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2RvbS9IVE1MRWxlbWVudC9h
dHRyLWRpci1hdXRvLWNoaWxkcmVuLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGZhc3QvZG9tL0hU
TUxFbGVtZW50L2F0dHItZGlyLWF1dG8tZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBm
YXN0L2RvbS9IVE1MRWxlbWVudC9hdHRyLWRpci1hdXRvLXJlbW92ZS1hZGQtY2hpbGRyZW4tZXhw
ZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2RvbS9IVE1MRWxlbWVudC9hdHRyLWRp
ci1hdXRvLXJlbW92ZS1hZGQtY2hpbGRyZW4uaHRtbDogQWRkZWQuCisgICAgICAgICogZmFzdC9k
b20vSFRNTEVsZW1lbnQvYXR0ci1kaXItYXV0by5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0
L2RvbS9IVE1MRWxlbWVudC9hdHRyLWRpci12YWx1ZS1jaGFuZ2UtZXhwZWN0ZWQudHh0OiBBZGRl
ZC4KKyAgICAgICAgKiBmYXN0L2RvbS9IVE1MRWxlbWVudC9hdHRyLWRpci12YWx1ZS1jaGFuZ2Uu
aHRtbDogQWRkZWQuCisKIDIwMTEtMDItMDUgIFBhdHJpY2sgR2Fuc3RlcmVyICA8cGFyb2dhQHdl
YmtpdC5vcmc+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgQWxleGV5IFByb3NrdXJ5YWtvdi4KSW5k
ZXg6IExheW91dFRlc3RzL2Zhc3QvZG9tL0hUTUxFbGVtZW50L2F0dHItZGlyLWF1dG8tY2hhbmdl
LWNoaWxkLW5vZGUtZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3Qv
ZG9tL0hUTUxFbGVtZW50L2F0dHItZGlyLWF1dG8tY2hhbmdlLWNoaWxkLW5vZGUtZXhwZWN0ZWQu
dHh0CShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvZmFzdC9kb20vSFRNTEVsZW1lbnQvYXR0
ci1kaXItYXV0by1jaGFuZ2UtY2hpbGQtbm9kZS1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCkBA
IC0wLDAgKzEsMTkgQEAKK1Rlc3QgdGhhdCBkaXJlY3Rpb25hbGl0eSBpcyByZS1ldmFsdWF0ZWQg
d2hlbiBhbiBlbGVtZW50IHdpdGggZGlyPWF1dG8gc2V0LCBoYXMgaXQncyBmaXJzdCBjaGlsZCBt
b2RpZmllZC4KKworT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBt
ZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgorCisKKworCisKKworUEFTUyBk
b2N1bWVudC5kZWZhdWx0Vmlldy5nZXRDb21wdXRlZFN0eWxlKGVsLCBudWxsKS5nZXRQcm9wZXJ0
eVZhbHVlKCdib3JkZXItcmlnaHQtY29sb3InKSBpcyAncmdiKDI1NSwgMCwgMCknCitQQVNTIGRv
Y3VtZW50LmRlZmF1bHRWaWV3LmdldENvbXB1dGVkU3R5bGUoZWwsIG51bGwpLmdldFByb3BlcnR5
VmFsdWUoJ2JvcmRlci1yaWdodC1jb2xvcicpIGlzICdyZ2IoMCwgMTI4LCAwKScKKworUEFTUyBz
dWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisKKworCisKSW5kZXg6
IExheW91dFRlc3RzL2Zhc3QvZG9tL0hUTUxFbGVtZW50L2F0dHItZGlyLWF1dG8tY2hhbmdlLWNo
aWxkLW5vZGUuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2RvbS9IVE1MRWxl
bWVudC9hdHRyLWRpci1hdXRvLWNoYW5nZS1jaGlsZC1ub2RlLmh0bWwJKHJldmlzaW9uIDApCisr
KyBMYXlvdXRUZXN0cy9mYXN0L2RvbS9IVE1MRWxlbWVudC9hdHRyLWRpci1hdXRvLWNoYW5nZS1j
aGlsZC1ub2RlLmh0bWwJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMzcgQEAKKzwhRE9DVFlQRSBo
dG1sPgorPGh0bWw+Cis8aGVhZD4KKzxtZXRhIGh0dHAtZXF1aXY9IkNvbnRlbnQtVHlwZSIgY29u
dGVudD0idGV4dC9odG1sOyBjaGFyc2V0PXV0Zi04Ij4KKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIg
aHJlZj0iLi4vLi4vanMvcmVzb3VyY2VzL2pzLXRlc3Qtc3R5bGUuY3NzIj4KKzxzY3JpcHQgc3Jj
PSIuLi8uLi9qcy9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPHN0eWxlPgor
LnRlc3REaXYgey13ZWJraXQtYm9yZGVyLXN0YXJ0OiA1cHggc29saWQgZ3JlZW47IC13ZWJraXQt
Ym9yZGVyLWVuZDogNXB4IHNvbGlkIHJlZDsgfQorPC9zdHlsZT4KKzwvaGVhZD4KKzxib2R5Pgor
PHAgaWQ9ImRlc2NyaXB0aW9uIj48L3A+Cis8ZGl2IGlkPSJjb25zb2xlIj48L3A+Cis8ZGl2IGlk
PSJyZXN1bHQiPjwvZGl2PgorCis8ZGl2IGlkPSJ0ZXN0IiBkaXI9ImF1dG8iIGNsYXNzPSJ0ZXN0
RGl2Ij48L2Rpdj4KKzxzY3JpcHQ+CisKK2Rlc2NyaXB0aW9uKCdUZXN0IHRoYXQgZGlyZWN0aW9u
YWxpdHkgaXMgcmUtZXZhbHVhdGVkIHdoZW4gYW4gZWxlbWVudCB3aXRoIGRpcj1hdXRvIHNldCwg
aGFzIGl0XCdzIGZpcnN0IGNoaWxkIG1vZGlmaWVkLicpOworCit2YXIgZWwgPSBkb2N1bWVudC5n
ZXRFbGVtZW50QnlJZCgidGVzdCIpOwordmFyIGNoaWxkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVu
dCgiZGl2Iik7CitjaGlsZC5pbm5lckhUTUw9InRlc3QiOworZWwuYXBwZW5kQ2hpbGQoY2hpbGQp
Oworc2hvdWxkQmUoImRvY3VtZW50LmRlZmF1bHRWaWV3LmdldENvbXB1dGVkU3R5bGUoZWwsIG51
bGwpLmdldFByb3BlcnR5VmFsdWUoJ2JvcmRlci1yaWdodC1jb2xvcicpIiwgIidyZ2IoMjU1LCAw
LCAwKSciKTsKKwordmFyIGNoaWxkMiA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpOwor
Y2hpbGQyLmlubmVySFRNTD0i157Xp9eV16gg15TXqdedINei15HXqNeZ16oiOworZWwuaW5zZXJ0
QmVmb3JlKGNoaWxkMiwgY2hpbGQpOworc2hvdWxkQmUoImRvY3VtZW50LmRlZmF1bHRWaWV3Lmdl
dENvbXB1dGVkU3R5bGUoZWwsIG51bGwpLmdldFByb3BlcnR5VmFsdWUoJ2JvcmRlci1yaWdodC1j
b2xvcicpIiwgIidyZ2IoMCwgMTI4LCAwKSciKTsKK2VsLnN0eWxlLmRpc3BsYXkgPSAibm9uZSI7
CisKK3dpbmRvdy5zdWNjZXNzZnVsbHlQYXJzZWQgPSB0cnVlOworPC9zY3JpcHQ+Cis8c2NyaXB0
IHNyYz0iLi4vLi4vanMvcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+Cis8L2Jv
ZHk+Cis8L2h0bWw+CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2RvbS9IVE1MRWxlbWVudC9hdHRy
LWRpci1hdXRvLWNoYW5nZS10ZXh0LWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRU
ZXN0cy9mYXN0L2RvbS9IVE1MRWxlbWVudC9hdHRyLWRpci1hdXRvLWNoYW5nZS10ZXh0LWV4cGVj
dGVkLnR4dAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2Zhc3QvZG9tL0hUTUxFbGVtZW50
L2F0dHItZGlyLWF1dG8tY2hhbmdlLXRleHQtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQpAQCAt
MCwwICsxLDE5IEBACitUZXN0IHRoYXQgZGlyZWN0aW9uYWxpdHkgaXMgcmUtZXZhbHVhdGVkIHdo
ZW4gYW4gZWxlbWVudCB3aXRoIGRpcj1hdXRvIHNldCwgaGFzIHRoZSB0ZXh0IG9mIGl0cyBmaXJz
dCBjaGlsZCBjaGFuZ2VkLgorCitPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2Yg
IlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCisKKworCisKKwor
CitQQVNTIGRvY3VtZW50LmRlZmF1bHRWaWV3LmdldENvbXB1dGVkU3R5bGUoZWwsIG51bGwpLmdl
dFByb3BlcnR5VmFsdWUoJ2JvcmRlci1yaWdodC1jb2xvcicpIGlzICdyZ2IoMjU1LCAwLCAwKScK
K1BBU1MgZG9jdW1lbnQuZGVmYXVsdFZpZXcuZ2V0Q29tcHV0ZWRTdHlsZShlbCwgbnVsbCkuZ2V0
UHJvcGVydHlWYWx1ZSgnYm9yZGVyLXJpZ2h0LWNvbG9yJykgaXMgJ3JnYigwLCAxMjgsIDApJwor
CitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKworCisK
KwpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9kb20vSFRNTEVsZW1lbnQvYXR0ci1kaXItYXV0by1j
aGFuZ2UtdGV4dC5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZG9tL0hUTUxF
bGVtZW50L2F0dHItZGlyLWF1dG8tY2hhbmdlLXRleHQuaHRtbAkocmV2aXNpb24gMCkKKysrIExh
eW91dFRlc3RzL2Zhc3QvZG9tL0hUTUxFbGVtZW50L2F0dHItZGlyLWF1dG8tY2hhbmdlLXRleHQu
aHRtbAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwzMCBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRt
bD4KKzxoZWFkPgorPG1ldGEgaHR0cC1lcXVpdj0iQ29udGVudC1UeXBlIiBjb250ZW50PSJ0ZXh0
L2h0bWw7IGNoYXJzZXQ9dXRmLTgiPgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIuLi8u
Li9qcy9yZXNvdXJjZXMvanMtdGVzdC1zdHlsZS5jc3MiPgorPHNjcmlwdCBzcmM9Ii4uLy4uL2pz
L3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8c3R5bGU+CisudGVzdERpdiB7
LXdlYmtpdC1ib3JkZXItc3RhcnQ6IDVweCBzb2xpZCBncmVlbjsgLXdlYmtpdC1ib3JkZXItZW5k
OiA1cHggc29saWQgcmVkOyB9Cis8L3N0eWxlPgorPC9oZWFkPgorPGJvZHk+Cis8cCBpZD0iZGVz
Y3JpcHRpb24iPjwvcD4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwvcD4KKzxkaXYgaWQ9InJlc3VsdCI+
PC9kaXY+CisKKzxkaXYgaWQ9InRlc3QiIGRpcj0iYXV0byIgY2xhc3M9InRlc3REaXYiPlRlc3Qg
dGVzdCB0ZXN0PC9kaXY+Cis8c2NyaXB0PgorCitkZXNjcmlwdGlvbignVGVzdCB0aGF0IGRpcmVj
dGlvbmFsaXR5IGlzIHJlLWV2YWx1YXRlZCB3aGVuIGFuIGVsZW1lbnQgd2l0aCBkaXI9YXV0byBz
ZXQsIGhhcyB0aGUgdGV4dCBvZiBpdHMgZmlyc3QgY2hpbGQgY2hhbmdlZC4nKTsKKwordmFyIGVs
ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInRlc3QiKTsKK3Nob3VsZEJlKCJkb2N1bWVudC5k
ZWZhdWx0Vmlldy5nZXRDb21wdXRlZFN0eWxlKGVsLCBudWxsKS5nZXRQcm9wZXJ0eVZhbHVlKCdi
b3JkZXItcmlnaHQtY29sb3InKSIsICIncmdiKDI1NSwgMCwgMCknIik7CitlbC5pbm5lckhUTUwg
PSAi157Xp9eV16gg15TXqdedINei15HXqNeZ16oiOworc2hvdWxkQmUoImRvY3VtZW50LmRlZmF1
bHRWaWV3LmdldENvbXB1dGVkU3R5bGUoZWwsIG51bGwpLmdldFByb3BlcnR5VmFsdWUoJ2JvcmRl
ci1yaWdodC1jb2xvcicpIiwgIidyZ2IoMCwgMTI4LCAwKSciKTsKK2VsLnN0eWxlLmRpc3BsYXkg
PSAibm9uZSI7Cit3aW5kb3cuc3VjY2Vzc2Z1bGx5UGFyc2VkID0gdHJ1ZTsKKzwvc2NyaXB0Pgor
PHNjcmlwdCBzcmM9Ii4uLy4uL2pzL3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0
PgorPC9ib2R5PgorPC9odG1sPgpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9kb20vSFRNTEVsZW1l
bnQvYXR0ci1kaXItYXV0by1jaGlsZHJlbi1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5
b3V0VGVzdHMvZmFzdC9kb20vSFRNTEVsZW1lbnQvYXR0ci1kaXItYXV0by1jaGlsZHJlbi1leHBl
Y3RlZC50eHQJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9mYXN0L2RvbS9IVE1MRWxlbWVu
dC9hdHRyLWRpci1hdXRvLWNoaWxkcmVuLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKQEAgLTAs
MCArMSwxMyBAQAorVGVzdCB0aGF0IGRpcmVjdGlvbmFsaXR5IG9mIGFuIGVsZW1lbnQgd2l0aCBk
aXI9YXV0byBpcyBub3QgYWZmZWN0ZWQgYnkgY2hpbGRyZW4gdGhhdCBhbHNvIGhhdmUgdGhlIGRp
ciBhdHRyaWJ1dGUuCisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFT
UyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KKworCisKKworUEFTUyBk
b2N1bWVudC5kZWZhdWx0Vmlldy5nZXRDb21wdXRlZFN0eWxlKGVsLCBudWxsKS5nZXRQcm9wZXJ0
eVZhbHVlKCdib3JkZXItcmlnaHQtY29sb3InKSBpcyAncmdiKDI1NSwgMCwgMCknCitQQVNTIGRv
Y3VtZW50LmRlZmF1bHRWaWV3LmdldENvbXB1dGVkU3R5bGUoZWwsIG51bGwpLmdldFByb3BlcnR5
VmFsdWUoJ2JvcmRlci1yaWdodC1jb2xvcicpIGlzICdyZ2IoMCwgMTI4LCAwKScKK1BBU1Mgc3Vj
Y2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQorCkluZGV4OiBMYXlvdXRU
ZXN0cy9mYXN0L2RvbS9IVE1MRWxlbWVudC9hdHRyLWRpci1hdXRvLWNoaWxkcmVuLmh0bWwKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9kb20vSFRNTEVsZW1lbnQvYXR0ci1kaXItYXV0
by1jaGlsZHJlbi5odG1sCShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvZmFzdC9kb20vSFRN
TEVsZW1lbnQvYXR0ci1kaXItYXV0by1jaGlsZHJlbi5odG1sCShyZXZpc2lvbiAwKQpAQCAtMCww
ICsxLDMzIEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8bWV0YSBodHRwLWVx
dWl2PSJDb250ZW50LVR5cGUiIGNvbnRlbnQ9InRleHQvaHRtbDsgY2hhcnNldD11dGYtOCI+Cis8
bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4uLy4uL2pzL3Jlc291cmNlcy9qcy10ZXN0LXN0
eWxlLmNzcyI+Cis8c2NyaXB0IHNyYz0iLi4vLi4vanMvcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpz
Ij48L3NjcmlwdD4KKzxzdHlsZT4KKy50ZXN0RGl2IHstd2Via2l0LWJvcmRlci1zdGFydDogNXB4
IHNvbGlkIGdyZWVuOyAtd2Via2l0LWJvcmRlci1lbmQ6IDVweCBzb2xpZCByZWQ7IH0KKzwvc3R5
bGU+Cis8L2hlYWQ+Cis8Ym9keT4KKzxwIGlkPSJkZXNjcmlwdGlvbiI+PC9wPgorPGRpdiBpZD0i
Y29uc29sZSI+PC9wPgorPGRpdiBpZD0icmVzdWx0Ij48L2Rpdj4KKzxkaXYgaWQ9InBhcmVudERp
diI+Cis8ZGl2IGlkPSJoYXMtZGlyLWF1dG8iIGRpcj0iYXV0byIgY2xhc3M9InRlc3REaXYiPgor
PGRpdiBpZD0iaGFzLWRpci1ydGwiIGRpcj0icnRsIiBjbGFzcz0idGVzdERpdiI+157Xp9eV16gg
15TXqdedINei15HXqNeZ16o8L2Rpdj4KK1Rlc3QgdGVzdCB0ZXN0PC9kaXY+CisKKzxzY3JpcHQ+
CisKK2Rlc2NyaXB0aW9uKCdUZXN0IHRoYXQgZGlyZWN0aW9uYWxpdHkgb2YgYW4gZWxlbWVudCB3
aXRoIGRpcj1hdXRvIGlzIG5vdCBhZmZlY3RlZCBieSBjaGlsZHJlbiB0aGF0IGFsc28gaGF2ZSB0
aGUgZGlyIGF0dHJpYnV0ZS4nKTsKKwordmFyIGVsID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQo
Imhhcy1kaXItYXV0byIpOworc2hvdWxkQmUoImRvY3VtZW50LmRlZmF1bHRWaWV3LmdldENvbXB1
dGVkU3R5bGUoZWwsIG51bGwpLmdldFByb3BlcnR5VmFsdWUoJ2JvcmRlci1yaWdodC1jb2xvcicp
IiwgIidyZ2IoMjU1LCAwLCAwKSciKTsKK2VsID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImhh
cy1kaXItcnRsIik7CitzaG91bGRCZSgiZG9jdW1lbnQuZGVmYXVsdFZpZXcuZ2V0Q29tcHV0ZWRT
dHlsZShlbCwgbnVsbCkuZ2V0UHJvcGVydHlWYWx1ZSgnYm9yZGVyLXJpZ2h0LWNvbG9yJykiLCAi
J3JnYigwLCAxMjgsIDApJyIpOworZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInBhcmVudERpdiIp
LnN0eWxlLmRpc3BsYXkgPSAibm9uZSI7Cit3aW5kb3cuc3VjY2Vzc2Z1bGx5UGFyc2VkID0gdHJ1
ZTsKKzwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uL2pzL3Jlc291cmNlcy9qcy10ZXN0LXBv
c3QuanMiPjwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpJbmRleDogTGF5b3V0VGVzdHMvZmFz
dC9kb20vSFRNTEVsZW1lbnQvYXR0ci1kaXItYXV0by1leHBlY3RlZC50eHQKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gTGF5b3V0VGVzdHMvZmFzdC9kb20vSFRNTEVsZW1lbnQvYXR0ci1kaXItYXV0by1leHBlY3Rl
ZC50eHQJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9mYXN0L2RvbS9IVE1MRWxlbWVudC9h
dHRyLWRpci1hdXRvLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwxOSBAQAor
VGVzdCB0aGF0IGRpcmVjdGlvbmFsaXR5IG9mIGFuIGVsZW1lbnQgd2l0aCBkaXI9YXV0byBzZXQg
aXMgZGV0ZXJtaW5lZCBieSB0aGUgZmlyc3QgY2hpbGQgdGV4dCBub2RlIG9mIHRoYXQgZWxlbWVu
dC4KKworT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdl
cywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgorCisKKworCisKK1BBU1MgZG9jdW1lbnQu
ZGVmYXVsdFZpZXcuZ2V0Q29tcHV0ZWRTdHlsZShlbCwgbnVsbCkuZ2V0UHJvcGVydHlWYWx1ZSgn
Ym9yZGVyLXJpZ2h0LWNvbG9yJykgaXMgJ3JnYigyNTUsIDAsIDApJworUEFTUyBkb2N1bWVudC5k
ZWZhdWx0Vmlldy5nZXRDb21wdXRlZFN0eWxlKGVsLCBudWxsKS5nZXRQcm9wZXJ0eVZhbHVlKCdi
b3JkZXItcmlnaHQtY29sb3InKSBpcyAncmdiKDAsIDEyOCwgMCknCitQQVNTIGRvY3VtZW50LmRl
ZmF1bHRWaWV3LmdldENvbXB1dGVkU3R5bGUoZWwsIG51bGwpLmdldFByb3BlcnR5VmFsdWUoJ2Jv
cmRlci1yaWdodC1jb2xvcicpIGlzICdyZ2IoMCwgMTI4LCAwKScKKworUEFTUyBzdWNjZXNzZnVs
bHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisKKworCisKSW5kZXg6IExheW91dFRl
c3RzL2Zhc3QvZG9tL0hUTUxFbGVtZW50L2F0dHItZGlyLWF1dG8tcmVtb3ZlLWFkZC1jaGlsZHJl
bi1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9kb20vSFRNTEVs
ZW1lbnQvYXR0ci1kaXItYXV0by1yZW1vdmUtYWRkLWNoaWxkcmVuLWV4cGVjdGVkLnR4dAkocmV2
aXNpb24gMCkKKysrIExheW91dFRlc3RzL2Zhc3QvZG9tL0hUTUxFbGVtZW50L2F0dHItZGlyLWF1
dG8tcmVtb3ZlLWFkZC1jaGlsZHJlbi1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCkBAIC0wLDAg
KzEsMjMgQEAKK1Rlc3QgdGhhdCBkaXJlY3Rpb25hbGl0eSBvZiBhbiBlbGVtZW50IHdpdGggZGly
PWF1dG8gc2V0IGlzIHJlLWV2YWx1YXRlZCB3aGVuIHRoZSBmaXJzdCBjaGlsZCB0ZXh0IG5vZGUg
b2YgdGhhdCBlbGVtZW50IGlzIGFkZGVkIG9yIHJlbW92ZWQuIEFsc28gdGVzdCB0aGF0IGRpcmVj
dGlvbmFsaXR5IGRvZXMgbm90IGNoYW5nZSBpZiB0aGUgZWxlbWVudCBkb2VzIG5vdCBoYXZlIHRo
ZSBhdHRyaWJ1dGUgZGlyPWF1dG8uCisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmll
cyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KKworCisK
KworCitQQVNTIGRvY3VtZW50LmRlZmF1bHRWaWV3LmdldENvbXB1dGVkU3R5bGUocGFyZW50MSwg
bnVsbCkuZ2V0UHJvcGVydHlWYWx1ZSgnYm9yZGVyLXJpZ2h0LWNvbG9yJykgaXMgJ3JnYigwLCAx
MjgsIDApJworUEFTUyBkb2N1bWVudC5kZWZhdWx0Vmlldy5nZXRDb21wdXRlZFN0eWxlKHBhcmVu
dDIsIG51bGwpLmdldFByb3BlcnR5VmFsdWUoJ2JvcmRlci1yaWdodC1jb2xvcicpIGlzICdyZ2Io
MjU1LCAwLCAwKScKK1BBU1MgZG9jdW1lbnQuZGVmYXVsdFZpZXcuZ2V0Q29tcHV0ZWRTdHlsZShw
YXJlbnQzLCBudWxsKS5nZXRQcm9wZXJ0eVZhbHVlKCdib3JkZXItcmlnaHQtY29sb3InKSBpcyAn
cmdiKDI1NSwgMCwgMCknCitQQVNTIGRvY3VtZW50LmRlZmF1bHRWaWV3LmdldENvbXB1dGVkU3R5
bGUocGFyZW50MSwgbnVsbCkuZ2V0UHJvcGVydHlWYWx1ZSgnYm9yZGVyLXJpZ2h0LWNvbG9yJykg
aXMgJ3JnYigyNTUsIDAsIDApJworUEFTUyBkb2N1bWVudC5kZWZhdWx0Vmlldy5nZXRDb21wdXRl
ZFN0eWxlKHBhcmVudDIsIG51bGwpLmdldFByb3BlcnR5VmFsdWUoJ2JvcmRlci1yaWdodC1jb2xv
cicpIGlzICdyZ2IoMCwgMTI4LCAwKScKK1BBU1MgZG9jdW1lbnQuZGVmYXVsdFZpZXcuZ2V0Q29t
cHV0ZWRTdHlsZShwYXJlbnQyLCBudWxsKS5nZXRQcm9wZXJ0eVZhbHVlKCdib3JkZXItcmlnaHQt
Y29sb3InKSBpcyAncmdiKDI1NSwgMCwgMCknCitQQVNTIGRvY3VtZW50LmRlZmF1bHRWaWV3Lmdl
dENvbXB1dGVkU3R5bGUocGFyZW50MywgbnVsbCkuZ2V0UHJvcGVydHlWYWx1ZSgnYm9yZGVyLXJp
Z2h0LWNvbG9yJykgaXMgJ3JnYigyNTUsIDAsIDApJworCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNl
ZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKworCisKKwpJbmRleDogTGF5b3V0VGVzdHMvZmFz
dC9kb20vSFRNTEVsZW1lbnQvYXR0ci1kaXItYXV0by1yZW1vdmUtYWRkLWNoaWxkcmVuLmh0bWwK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9kb20vSFRNTEVsZW1lbnQvYXR0ci1kaXIt
YXV0by1yZW1vdmUtYWRkLWNoaWxkcmVuLmh0bWwJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0
cy9mYXN0L2RvbS9IVE1MRWxlbWVudC9hdHRyLWRpci1hdXRvLXJlbW92ZS1hZGQtY2hpbGRyZW4u
aHRtbAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw2MCBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRt
bD4KKzxoZWFkPgorPG1ldGEgaHR0cC1lcXVpdj0iQ29udGVudC1UeXBlIiBjb250ZW50PSJ0ZXh0
L2h0bWw7IGNoYXJzZXQ9dXRmLTgiPgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIuLi8u
Li9qcy9yZXNvdXJjZXMvanMtdGVzdC1zdHlsZS5jc3MiPgorPHNjcmlwdCBzcmM9Ii4uLy4uL2pz
L3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8c3R5bGU+CisudGVzdERpdiB7
LXdlYmtpdC1ib3JkZXItc3RhcnQ6IDVweCBzb2xpZCBncmVlbjsgLXdlYmtpdC1ib3JkZXItZW5k
OiA1cHggc29saWQgcmVkOyB9Cis8L3N0eWxlPgorPC9oZWFkPgorPGJvZHk+Cis8cCBpZD0iZGVz
Y3JpcHRpb24iPjwvcD4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwvcD4KKzxkaXYgaWQ9InJlc3VsdCI+
PC9kaXY+Cis8ZGl2IGlkPSJwYXJlbnREaXYiPgorPGRpdiBpZD0icGFyZW50MSIgZGlyPSJhdXRv
IiBjbGFzcz0idGVzdERpdiI+Cis8ZGl2IGlkPSJjaGlsZDEiPtee16fXldeoINeU16nXnSDXoteR
16jXmdeqPC9kaXY+Cis8ZGl2IGlkPSJjaGlsZDIiPlRlc3Q8L2Rpdj4KKzwvZGl2PgorPGRpdiBp
ZD0icGFyZW50MiIgZGlyPSJhdXRvIiBjbGFzcz0idGVzdERpdiI+Cis8ZGl2IGlkPSJjaGlsZDMi
PlRlc3Q8L2Rpdj4KKzwvZGl2PgorPGRpdiBpZD0icGFyZW50MyIgY2xhc3M9InRlc3REaXYiPgor
PGRpdiBpZD0iY2hpbGQ0Ij7Xnten15XXqCDXlNep150g16LXkdeo15nXqjwvZGl2PgorPC9kaXY+
Cis8L2Rpdj4KKzxzY3JpcHQ+CisKK2Rlc2NyaXB0aW9uKCdUZXN0IHRoYXQgZGlyZWN0aW9uYWxp
dHkgb2YgYW4gZWxlbWVudCB3aXRoIGRpcj1hdXRvIHNldCBpcyByZS1ldmFsdWF0ZWQgd2hlbiB0
aGUgZmlyc3QgY2hpbGQgdGV4dCBub2RlIG9mIHRoYXQgZWxlbWVudCBpcyBhZGRlZCBvciByZW1v
dmVkLiBBbHNvIHRlc3QgdGhhdCBkaXJlY3Rpb25hbGl0eSBkb2VzIG5vdCBjaGFuZ2UgaWYgdGhl
IGVsZW1lbnQgZG9lcyBub3QgaGF2ZSB0aGUgYXR0cmlidXRlIGRpcj1hdXRvLicpOworCit2YXIg
cGFyZW50MSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJwYXJlbnQxIik7Cit2YXIgcGFyZW50
MiA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJwYXJlbnQyIik7Cit2YXIgcGFyZW50MyA9IGRv
Y3VtZW50LmdldEVsZW1lbnRCeUlkKCJwYXJlbnQzIik7CisKK3ZhciBjaGlsZDEgPSBkb2N1bWVu
dC5nZXRFbGVtZW50QnlJZCgiY2hpbGQxIik7Cit2YXIgY2hpbGQzID0gZG9jdW1lbnQuZ2V0RWxl
bWVudEJ5SWQoImNoaWxkMyIpOwordmFyIGNoaWxkNCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlk
KCJjaGlsZDQiKTsKKworc2hvdWxkQmUoImRvY3VtZW50LmRlZmF1bHRWaWV3LmdldENvbXB1dGVk
U3R5bGUocGFyZW50MSwgbnVsbCkuZ2V0UHJvcGVydHlWYWx1ZSgnYm9yZGVyLXJpZ2h0LWNvbG9y
JykiLCAiJ3JnYigwLCAxMjgsIDApJyIpOworc2hvdWxkQmUoImRvY3VtZW50LmRlZmF1bHRWaWV3
LmdldENvbXB1dGVkU3R5bGUocGFyZW50MiwgbnVsbCkuZ2V0UHJvcGVydHlWYWx1ZSgnYm9yZGVy
LXJpZ2h0LWNvbG9yJykiLCAiJ3JnYigyNTUsIDAsIDApJyIpOworc2hvdWxkQmUoImRvY3VtZW50
LmRlZmF1bHRWaWV3LmdldENvbXB1dGVkU3R5bGUocGFyZW50MywgbnVsbCkuZ2V0UHJvcGVydHlW
YWx1ZSgnYm9yZGVyLXJpZ2h0LWNvbG9yJykiLCAiJ3JnYigyNTUsIDAsIDApJyIpOworCitwYXJl
bnQxLnJlbW92ZUNoaWxkKGNoaWxkMSkKK3Nob3VsZEJlKCJkb2N1bWVudC5kZWZhdWx0Vmlldy5n
ZXRDb21wdXRlZFN0eWxlKHBhcmVudDEsIG51bGwpLmdldFByb3BlcnR5VmFsdWUoJ2JvcmRlci1y
aWdodC1jb2xvcicpIiwgIidyZ2IoMjU1LCAwLCAwKSciKTsKKworcGFyZW50Mi5pbnNlcnRCZWZv
cmUoY2hpbGQxLCBjaGlsZDMpOworc2hvdWxkQmUoImRvY3VtZW50LmRlZmF1bHRWaWV3LmdldENv
bXB1dGVkU3R5bGUocGFyZW50MiwgbnVsbCkuZ2V0UHJvcGVydHlWYWx1ZSgnYm9yZGVyLXJpZ2h0
LWNvbG9yJykiLCAiJ3JnYigwLCAxMjgsIDApJyIpOworCitwYXJlbnQyLnJlbW92ZUNoaWxkKGNo
aWxkMSkKK3Nob3VsZEJlKCJkb2N1bWVudC5kZWZhdWx0Vmlldy5nZXRDb21wdXRlZFN0eWxlKHBh
cmVudDIsIG51bGwpLmdldFByb3BlcnR5VmFsdWUoJ2JvcmRlci1yaWdodC1jb2xvcicpIiwgIidy
Z2IoMjU1LCAwLCAwKSciKTsKKworcGFyZW50My5pbnNlcnRCZWZvcmUoY2hpbGQxLCBjaGlsZDQp
Oworc2hvdWxkQmUoImRvY3VtZW50LmRlZmF1bHRWaWV3LmdldENvbXB1dGVkU3R5bGUocGFyZW50
MywgbnVsbCkuZ2V0UHJvcGVydHlWYWx1ZSgnYm9yZGVyLXJpZ2h0LWNvbG9yJykiLCAiJ3JnYigy
NTUsIDAsIDApJyIpOworCitkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgicGFyZW50RGl2Iikuc3R5
bGUuZGlzcGxheSA9ICJub25lIjsKK3dpbmRvdy5zdWNjZXNzZnVsbHlQYXJzZWQgPSB0cnVlOwor
PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vanMvcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5q
cyI+PC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2Rv
bS9IVE1MRWxlbWVudC9hdHRyLWRpci1hdXRvLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVz
dHMvZmFzdC9kb20vSFRNTEVsZW1lbnQvYXR0ci1kaXItYXV0by5odG1sCShyZXZpc2lvbiAwKQor
KysgTGF5b3V0VGVzdHMvZmFzdC9kb20vSFRNTEVsZW1lbnQvYXR0ci1kaXItYXV0by5odG1sCShy
ZXZpc2lvbiAwKQpAQCAtMCwwICsxLDM4IEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhl
YWQ+Cis8bWV0YSBodHRwLWVxdWl2PSJDb250ZW50LVR5cGUiIGNvbnRlbnQ9InRleHQvaHRtbDsg
Y2hhcnNldD11dGYtOCI+Cis8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4uLy4uL2pzL3Jl
c291cmNlcy9qcy10ZXN0LXN0eWxlLmNzcyI+Cis8c2NyaXB0IHNyYz0iLi4vLi4vanMvcmVzb3Vy
Y2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzxzdHlsZT4KKy50ZXN0RGl2IHstd2Via2l0
LWJvcmRlci1zdGFydDogNXB4IHNvbGlkIGdyZWVuOyAtd2Via2l0LWJvcmRlci1lbmQ6IDVweCBz
b2xpZCByZWQ7IH0KKzwvc3R5bGU+Cis8L2hlYWQ+Cis8Ym9keT4KKzxwIGlkPSJkZXNjcmlwdGlv
biI+PC9wPgorPGRpdiBpZD0iY29uc29sZSI+PC9wPgorPGRpdiBpZD0icmVzdWx0Ij48L2Rpdj4K
KzxkaXYgaWQ9InBhcmVudERpdiI+CitUZXN0IHRoYXQgdGhlIGRpcmVjdGlvbiBvZiBlbmdsaXNo
IHRleHQgaXMgbGVmdC10by1yaWdodC4KKzxkaXYgaWQ9ImxlZnQtdG8tcmlnaHQiIGRpcj0iYXV0
byIgY2xhc3M9InRlc3REaXYiPlRlc3QgdGVzdCB0ZXN0PC9kaXY+CitUZXN0IHRoYXQgdGhlIGRp
cmVjdGlvbiBvZiBoZWJyZXcgdGV4dCBpcyByaWdodC10by1sZWZ0LgorPGRpdiBpZD0icmlnaHQt
dG8tbGVmdDEiIGRpcj0iYXV0byIgY2xhc3M9InRlc3REaXYiPtee16fXldeoINeU16nXnSDXoteR
16jXmdeqPC9kaXY+CitUZXN0IHRoYXQgJz8nIGRvZXMgbm90IGFmZmVjdCB0aGUgZGlyZWN0aW9u
YWxpdHkuCis8ZGl2IGlkPSJyaWdodC10by1sZWZ0MiIgZGlyPSJhdXRvIiBjbGFzcz0idGVzdERp
diI+PHNwYW4+Pz88L3NwYW4+157Xp9eV16gg15TXqdedINei15HXqNeZ16o8c3Bhbj4/Pzwvc3Bh
bj48L2Rpdj4KKzwvZGl2PgorPHNjcmlwdD4KKworZGVzY3JpcHRpb24oJ1Rlc3QgdGhhdCBkaXJl
Y3Rpb25hbGl0eSBvZiBhbiBlbGVtZW50IHdpdGggZGlyPWF1dG8gc2V0IGlzIGRldGVybWluZWQg
YnkgdGhlIGZpcnN0IGNoaWxkIHRleHQgbm9kZSBvZiB0aGF0IGVsZW1lbnQuJyk7CisKK3ZhciBl
bCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJsZWZ0LXRvLXJpZ2h0Iik7CitzaG91bGRCZSgi
ZG9jdW1lbnQuZGVmYXVsdFZpZXcuZ2V0Q29tcHV0ZWRTdHlsZShlbCwgbnVsbCkuZ2V0UHJvcGVy
dHlWYWx1ZSgnYm9yZGVyLXJpZ2h0LWNvbG9yJykiLCAiJ3JnYigyNTUsIDAsIDApJyIpOworZWwg
PSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgicmlnaHQtdG8tbGVmdDEiKTsKK3Nob3VsZEJlKCJk
b2N1bWVudC5kZWZhdWx0Vmlldy5nZXRDb21wdXRlZFN0eWxlKGVsLCBudWxsKS5nZXRQcm9wZXJ0
eVZhbHVlKCdib3JkZXItcmlnaHQtY29sb3InKSIsICIncmdiKDAsIDEyOCwgMCknIik7CitlbCA9
IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJyaWdodC10by1sZWZ0MiIpOworc2hvdWxkQmUoImRv
Y3VtZW50LmRlZmF1bHRWaWV3LmdldENvbXB1dGVkU3R5bGUoZWwsIG51bGwpLmdldFByb3BlcnR5
VmFsdWUoJ2JvcmRlci1yaWdodC1jb2xvcicpIiwgIidyZ2IoMCwgMTI4LCAwKSciKTsKK2RvY3Vt
ZW50LmdldEVsZW1lbnRCeUlkKCJwYXJlbnREaXYiKS5zdHlsZS5kaXNwbGF5ID0gIm5vbmUiOwor
d2luZG93LnN1Y2Nlc3NmdWxseVBhcnNlZCA9IHRydWU7Cis8L3NjcmlwdD4KKzxzY3JpcHQgc3Jj
PSIuLi8uLi9qcy9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KKzwvYm9keT4K
KzwvaHRtbD4KSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZG9tL0hUTUxFbGVtZW50L2F0dHItZGly
LXZhbHVlLWNoYW5nZS1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFz
dC9kb20vSFRNTEVsZW1lbnQvYXR0ci1kaXItdmFsdWUtY2hhbmdlLWV4cGVjdGVkLnR4dAkocmV2
aXNpb24gMCkKKysrIExheW91dFRlc3RzL2Zhc3QvZG9tL0hUTUxFbGVtZW50L2F0dHItZGlyLXZh
bHVlLWNoYW5nZS1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMjQgQEAKK1Rl
c3QgdGhhdCBkaXJlY3Rpb25hbGl0eSBpcyByZS1ldmFsdWF0ZWQgd2hlbiBhbiBlbGVtZW50IHdp
dGggZGlyPWF1dG8gc2V0LCBoYXMgaXRzIGRpciBhdHRyaWJ1dGUgY2hhbmdlZC4KKworT24gc3Vj
Y2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQg
YnkgIlRFU1QgQ09NUExFVEUiLgorCisKKworCisKKworUEFTUyBkb2N1bWVudC5kZWZhdWx0Vmll
dy5nZXRDb21wdXRlZFN0eWxlKGVsLCBudWxsKS5nZXRQcm9wZXJ0eVZhbHVlKCdib3JkZXItcmln
aHQtY29sb3InKSBpcyAncmdiKDAsIDEyOCwgMCknCitQQVNTIGRvY3VtZW50LmRlZmF1bHRWaWV3
LmdldENvbXB1dGVkU3R5bGUoY2hpbGQyLCBudWxsKS5nZXRQcm9wZXJ0eVZhbHVlKCdib3JkZXIt
cmlnaHQtY29sb3InKSBpcyAncmdiKDAsIDEyOCwgMCknCitQQVNTIGRvY3VtZW50LmRlZmF1bHRW
aWV3LmdldENvbXB1dGVkU3R5bGUoZWwsIG51bGwpLmdldFByb3BlcnR5VmFsdWUoJ2JvcmRlci1y
aWdodC1jb2xvcicpIGlzICdyZ2IoMjU1LCAwLCAwKScKK1BBU1MgZG9jdW1lbnQuZGVmYXVsdFZp
ZXcuZ2V0Q29tcHV0ZWRTdHlsZShjaGlsZDIsIG51bGwpLmdldFByb3BlcnR5VmFsdWUoJ2JvcmRl
ci1yaWdodC1jb2xvcicpIGlzICdyZ2IoMCwgMTI4LCAwKScKK1BBU1MgZG9jdW1lbnQuZGVmYXVs
dFZpZXcuZ2V0Q29tcHV0ZWRTdHlsZShjaGlsZDIsIG51bGwpLmdldFByb3BlcnR5VmFsdWUoJ2Jv
cmRlci1yaWdodC1jb2xvcicpIGlzICdyZ2IoMjU1LCAwLCAwKScKK1BBU1MgZG9jdW1lbnQuZGVm
YXVsdFZpZXcuZ2V0Q29tcHV0ZWRTdHlsZShlbCwgbnVsbCkuZ2V0UHJvcGVydHlWYWx1ZSgnYm9y
ZGVyLXJpZ2h0LWNvbG9yJykgaXMgJ3JnYigwLCAxMjgsIDApJworUEFTUyBkb2N1bWVudC5kZWZh
dWx0Vmlldy5nZXRDb21wdXRlZFN0eWxlKGNoaWxkMiwgbnVsbCkuZ2V0UHJvcGVydHlWYWx1ZSgn
Ym9yZGVyLXJpZ2h0LWNvbG9yJykgaXMgJ3JnYigyNTUsIDAsIDApJworCitQQVNTIHN1Y2Nlc3Nm
dWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKworCisKKwpJbmRleDogTGF5b3V0
VGVzdHMvZmFzdC9kb20vSFRNTEVsZW1lbnQvYXR0ci1kaXItdmFsdWUtY2hhbmdlLmh0bWwKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9kb20vSFRNTEVsZW1lbnQvYXR0ci1kaXItdmFs
dWUtY2hhbmdlLmh0bWwJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9mYXN0L2RvbS9IVE1M
RWxlbWVudC9hdHRyLWRpci12YWx1ZS1jaGFuZ2UuaHRtbAkocmV2aXNpb24gMCkKQEAgLTAsMCAr
MSw1MCBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorPG1ldGEgaHR0cC1lcXVp
dj0iQ29udGVudC1UeXBlIiBjb250ZW50PSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9dXRmLTgiPgorPGxp
bmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIuLi8uLi9qcy9yZXNvdXJjZXMvanMtdGVzdC1zdHls
ZS5jc3MiPgorPHNjcmlwdCBzcmM9Ii4uLy4uL2pzL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+
PC9zY3JpcHQ+Cis8c3R5bGU+CisudGVzdERpdiB7LXdlYmtpdC1ib3JkZXItc3RhcnQ6IDVweCBz
b2xpZCBncmVlbjsgLXdlYmtpdC1ib3JkZXItZW5kOiA1cHggc29saWQgcmVkOyB9Cis8L3N0eWxl
PgorPC9oZWFkPgorPGJvZHk+Cis8cCBpZD0iZGVzY3JpcHRpb24iPjwvcD4KKzxkaXYgaWQ9ImNv
bnNvbGUiPjwvcD4KKzxkaXYgaWQ9InJlc3VsdCI+PC9kaXY+CisKKzxkaXYgaWQ9InRlc3QiIGRp
cj0iYXV0byIgY2xhc3M9InRlc3REaXYiPjwvZGl2PgorPHNjcmlwdD4KKworZGVzY3JpcHRpb24o
J1Rlc3QgdGhhdCBkaXJlY3Rpb25hbGl0eSBpcyByZS1ldmFsdWF0ZWQgd2hlbiBhbiBlbGVtZW50
IHdpdGggZGlyPWF1dG8gc2V0LCBoYXMgaXRzIGRpciBhdHRyaWJ1dGUgY2hhbmdlZC4nKTsKKwor
dmFyIGVsID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInRlc3QiKTsKK3ZhciBjaGlsZCA9IGRv
Y3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpOworY2hpbGQuaW5uZXJIVE1MPSLXnten15XXqCDX
lNep150g16LXkdeo15nXqiI7CitlbC5hcHBlbmRDaGlsZChjaGlsZCk7Cit2YXIgY2hpbGQyID0g
ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2Iik7CitjaGlsZDIuaW5uZXJIVE1MID0gItee16fX
ldeoINeU16nXnSDXoteR16jXmdeqIjsKK2NoaWxkMi5zZXRBdHRyaWJ1dGUoImRpciIsICJhdXRv
Iik7CitjaGlsZDIuc2V0QXR0cmlidXRlKCJjbGFzcyIsICJ0ZXN0RGl2Iik7CitjaGlsZC5hcHBl
bmRDaGlsZChjaGlsZDIpOworc2hvdWxkQmUoImRvY3VtZW50LmRlZmF1bHRWaWV3LmdldENvbXB1
dGVkU3R5bGUoZWwsIG51bGwpLmdldFByb3BlcnR5VmFsdWUoJ2JvcmRlci1yaWdodC1jb2xvcicp
IiwgIidyZ2IoMCwgMTI4LCAwKSciKTsKK3Nob3VsZEJlKCJkb2N1bWVudC5kZWZhdWx0Vmlldy5n
ZXRDb21wdXRlZFN0eWxlKGNoaWxkMiwgbnVsbCkuZ2V0UHJvcGVydHlWYWx1ZSgnYm9yZGVyLXJp
Z2h0LWNvbG9yJykiLCAiJ3JnYigwLCAxMjgsIDApJyIpOworCitlbC5zZXRBdHRyaWJ1dGUoImRp
ciIsICJsdHIiKTsKK3Nob3VsZEJlKCJkb2N1bWVudC5kZWZhdWx0Vmlldy5nZXRDb21wdXRlZFN0
eWxlKGVsLCBudWxsKS5nZXRQcm9wZXJ0eVZhbHVlKCdib3JkZXItcmlnaHQtY29sb3InKSIsICIn
cmdiKDI1NSwgMCwgMCknIik7CitzaG91bGRCZSgiZG9jdW1lbnQuZGVmYXVsdFZpZXcuZ2V0Q29t
cHV0ZWRTdHlsZShjaGlsZDIsIG51bGwpLmdldFByb3BlcnR5VmFsdWUoJ2JvcmRlci1yaWdodC1j
b2xvcicpIiwgIidyZ2IoMCwgMTI4LCAwKSciKTsKKworY2hpbGQyLmlubmVySFRNTCA9ICJUZXN0
IjsKK3Nob3VsZEJlKCJkb2N1bWVudC5kZWZhdWx0Vmlldy5nZXRDb21wdXRlZFN0eWxlKGNoaWxk
MiwgbnVsbCkuZ2V0UHJvcGVydHlWYWx1ZSgnYm9yZGVyLXJpZ2h0LWNvbG9yJykiLCAiJ3JnYigy
NTUsIDAsIDApJyIpOworCitlbC5zZXRBdHRyaWJ1dGUoImRpciIsICJhdXRvIik7CitzaG91bGRC
ZSgiZG9jdW1lbnQuZGVmYXVsdFZpZXcuZ2V0Q29tcHV0ZWRTdHlsZShlbCwgbnVsbCkuZ2V0UHJv
cGVydHlWYWx1ZSgnYm9yZGVyLXJpZ2h0LWNvbG9yJykiLCAiJ3JnYigwLCAxMjgsIDApJyIpOwor
c2hvdWxkQmUoImRvY3VtZW50LmRlZmF1bHRWaWV3LmdldENvbXB1dGVkU3R5bGUoY2hpbGQyLCBu
dWxsKS5nZXRQcm9wZXJ0eVZhbHVlKCdib3JkZXItcmlnaHQtY29sb3InKSIsICIncmdiKDI1NSwg
MCwgMCknIik7CisKK2VsLnN0eWxlLmRpc3BsYXkgPSAibm9uZSI7CisKK3dpbmRvdy5zdWNjZXNz
ZnVsbHlQYXJzZWQgPSB0cnVlOworPC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vanMvcmVz
b3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>81792</attachid>
            <date>2011-02-09 05:42:34 -0800</date>
            <delta_ts>2011-02-09 11:37:17 -0800</delta_ts>
            <desc>Patch.</desc>
            <filename>50916.patch</filename>
            <type>text/plain</type>
            <size>39751</size>
            <attacher name="Yael">yael</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gNzgwMDkpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMjEgQEAK
KzIwMTEtMDItMDggIFlhZWwgQWhhcm9uICA8eWFlbC5haGFyb25Abm9raWEuY29tPgorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZCBzdXBwb3J0IGZv
ciBkaXI9YXV0bworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9NTA5MTYKKworICAgICAgICBDaGFuZ2UgZGVmYXVsdFdyaXRpbmdEaXJlY3Rpb24oKSB0byBy
ZXR1cm4gaWYgdGhlIHdyaXRpbmcgZGlyZWN0aW9uCisgICAgICAgIHdhcyBkZXRlcm1pbmVkIGZy
b20gYSBsZXR0ZXIgd2l0aCBzdHJvbmcgZGlyZWN0aW9uYWxpdHkgb3Igbm90LgorCisgICAgICAg
ICogSmF2YVNjcmlwdENvcmUuZXhwOgorICAgICAgICAqIEphdmFTY3JpcHRDb3JlLm9yZGVyOgor
ICAgICAgICAqIHd0Zi90ZXh0L1N0cmluZ0ltcGwuY3BwOgorICAgICAgICAoV1RGOjpTdHJpbmdJ
bXBsOjpkZWZhdWx0V3JpdGluZ0RpcmVjdGlvbik6CisgICAgICAgICogd3RmL3RleHQvU3RyaW5n
SW1wbC5oOgorICAgICAgICAqIHd0Zi90ZXh0L1dURlN0cmluZy5oOgorICAgICAgICAoV1RGOjpT
dHJpbmc6OmRlZmF1bHRXcml0aW5nRGlyZWN0aW9uKToKKwogMjAxMS0wMi0wOCAgR2VvZmZyZXkg
R2FyZW4gIDxnZ2FyZW5AYXBwbGUuY29tPgogCiAgICAgICAgIFJldmlld2VkIGJ5IERhcmluIEFk
bGVyLgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLmV4cAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUuZXhwCShyZXZp
c2lvbiA3NzgwOCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS5leHAJ
KHdvcmtpbmcgY29weSkKQEAgLTMzNSw3ICszMzUsNyBAQCBfX1pOM1dURjEwU3RyaW5nSW1wbDE4
c2ltcGxpZnlXaGl0ZVNwYWNlCiBfX1pOM1dURjEwU3RyaW5nSW1wbDE5Y2hhcmFjdGVyU3RhcnRp
bmdBdEVqCiBfX1pOM1dURjEwU3RyaW5nSW1wbDE5Y3JlYXRlVW5pbml0aWFsaXplZEVqUlB0CiBf
X1pOM1dURjEwU3RyaW5nSW1wbDIyY29udGFpbnNPbmx5V2hpdGVzcGFjZUV2Ci1fX1pOM1dURjEw
U3RyaW5nSW1wbDIzZGVmYXVsdFdyaXRpbmdEaXJlY3Rpb25FdgorX19aTjNXVEYxMFN0cmluZ0lt
cGwyM2RlZmF1bHRXcml0aW5nRGlyZWN0aW9uRVBiCiBfX1pOM1dURjEwU3RyaW5nSW1wbDIzcmV2
ZXJzZUZpbmRJZ25vcmluZ0Nhc2VFUFMwX2oKIF9fWk4zV1RGMTBTdHJpbmdJbXBsMzdjcmVhdGVT
dHJpcHBpbmdOdWxsQ2hhcmFjdGVyc1Nsb3dDYXNlRVBLdGoKIF9fWk4zV1RGMTBTdHJpbmdJbXBs
NGZpbmRFUEZidEVqCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUu
b3JkZXIKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3Jl
Lm9yZGVyCShyZXZpc2lvbiA3NzgwOCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2Ny
aXB0Q29yZS5vcmRlcgkod29ya2luZyBjb3B5KQpAQCAtMTQyNyw3ICsxNDI3LDcgQEAgX19aTjdX
ZWJDb3JlMTBTdHJpbmdJbXBsMTFyZXZlcnNlRmluZEV0aQogX19aTjNXVEYyM3dhaXRGb3JUaHJl
YWRDb21wbGV0aW9uRWpQUHYKIF9fWk4zV1RGMTRGYXN0TWFsbG9jWm9uZTEwc3RhdGlzdGljc0VQ
MTRfbWFsbG9jX3pvbmVfdFAxOW1hbGxvY19zdGF0aXN0aWNzX3QKIF9fWk5LN1dlYkNvcmU2U3Ry
aW5nMThzaW1wbGlmeVdoaXRlU3BhY2VFdgotX19aTjdXZWJDb3JlMTBTdHJpbmdJbXBsMjNkZWZh
dWx0V3JpdGluZ0RpcmVjdGlvbkV2CitfX1pOM1dURjEwU3RyaW5nSW1wbDIzZGVmYXVsdFdyaXRp
bmdEaXJlY3Rpb25FUGIKIF9fWk4zSlNDTDIwZGF0ZVByb3RvRnVuY1NldFRpbWVFUE5TXzlFeGVj
U3RhdGVFUE5TXzhKU09iamVjdEVOU183SlNWYWx1ZUVSS05TXzdBcmdMaXN0RQogX19aTjNKU0NM
MjFkYXRlUHJvdG9GdW5jR2V0TW9udGhFUE5TXzlFeGVjU3RhdGVFUE5TXzhKU09iamVjdEVOU183
SlNWYWx1ZUVSS05TXzdBcmdMaXN0RQogX19aTkszSlNDMTJEYXRlSW5zdGFuY2UyNmNhbGN1bGF0
ZUdyZWdvcmlhbkRhdGVUaW1lRVBOU185RXhlY1N0YXRlRQpJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL3d0Zi90ZXh0L1N0cmluZ0ltcGwuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS93dGYvdGV4dC9TdHJpbmdJbXBsLmNwcAkocmV2aXNpb24gNzc4MDgpCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvd3RmL3RleHQvU3RyaW5nSW1wbC5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTEwMDUsMTUgKzEwMDUsMjMgQEAgYm9vbCBlcXVhbElnbm9yaW5nTnVsbGl0eShTdHJp
bmdJbXBsKiBhLAogICAgIHJldHVybiBmYWxzZTsKIH0KIAotV1RGOjpVbmljb2RlOjpEaXJlY3Rp
b24gU3RyaW5nSW1wbDo6ZGVmYXVsdFdyaXRpbmdEaXJlY3Rpb24oKQorV1RGOjpVbmljb2RlOjpE
aXJlY3Rpb24gU3RyaW5nSW1wbDo6ZGVmYXVsdFdyaXRpbmdEaXJlY3Rpb24oYm9vbCogaGFzU3Ry
b25nRGlyZWN0aW9uYWxpdHkpCiB7CiAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IG1fbGVu
Z3RoOyArK2kpIHsKICAgICAgICAgV1RGOjpVbmljb2RlOjpEaXJlY3Rpb24gY2hhckRpcmVjdGlv
biA9IFdURjo6VW5pY29kZTo6ZGlyZWN0aW9uKG1fZGF0YVtpXSk7Ci0gICAgICAgIGlmIChjaGFy
RGlyZWN0aW9uID09IFdURjo6VW5pY29kZTo6TGVmdFRvUmlnaHQpCisgICAgICAgIGlmIChjaGFy
RGlyZWN0aW9uID09IFdURjo6VW5pY29kZTo6TGVmdFRvUmlnaHQpIHsKKyAgICAgICAgICAgIGlm
IChoYXNTdHJvbmdEaXJlY3Rpb25hbGl0eSkKKyAgICAgICAgICAgICAgICAqaGFzU3Ryb25nRGly
ZWN0aW9uYWxpdHkgPSB0cnVlOwogICAgICAgICAgICAgcmV0dXJuIFdURjo6VW5pY29kZTo6TGVm
dFRvUmlnaHQ7Ci0gICAgICAgIGlmIChjaGFyRGlyZWN0aW9uID09IFdURjo6VW5pY29kZTo6Umln
aHRUb0xlZnQgfHwgY2hhckRpcmVjdGlvbiA9PSBXVEY6OlVuaWNvZGU6OlJpZ2h0VG9MZWZ0QXJh
YmljKQorICAgICAgICB9CisgICAgICAgIGlmIChjaGFyRGlyZWN0aW9uID09IFdURjo6VW5pY29k
ZTo6UmlnaHRUb0xlZnQgfHwgY2hhckRpcmVjdGlvbiA9PSBXVEY6OlVuaWNvZGU6OlJpZ2h0VG9M
ZWZ0QXJhYmljKSB7CisgICAgICAgICAgICBpZiAoaGFzU3Ryb25nRGlyZWN0aW9uYWxpdHkpCisg
ICAgICAgICAgICAgICAgKmhhc1N0cm9uZ0RpcmVjdGlvbmFsaXR5ID0gdHJ1ZTsKICAgICAgICAg
ICAgIHJldHVybiBXVEY6OlVuaWNvZGU6OlJpZ2h0VG9MZWZ0OworICAgICAgICB9CiAgICAgfQor
ICAgIGlmIChoYXNTdHJvbmdEaXJlY3Rpb25hbGl0eSkKKyAgICAgICAgKmhhc1N0cm9uZ0RpcmVj
dGlvbmFsaXR5ID0gZmFsc2U7CiAgICAgcmV0dXJuIFdURjo6VW5pY29kZTo6TGVmdFRvUmlnaHQ7
CiB9CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS93dGYvdGV4dC9TdHJpbmdJbXBsLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3d0Zi90ZXh0L1N0cmluZ0ltcGwu
aAkocmV2aXNpb24gNzc4MDgpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvd3RmL3RleHQvU3Ry
aW5nSW1wbC5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMTYsNyArMzE2LDcgQEAgcHVibGljOgogICAg
IFBhc3NSZWZQdHI8U3RyaW5nSW1wbD4gcmVwbGFjZShTdHJpbmdJbXBsKiwgU3RyaW5nSW1wbCop
OwogICAgIFBhc3NSZWZQdHI8U3RyaW5nSW1wbD4gcmVwbGFjZSh1bnNpZ25lZCBpbmRleCwgdW5z
aWduZWQgbGVuLCBTdHJpbmdJbXBsKik7CiAKLSAgICBXVEY6OlVuaWNvZGU6OkRpcmVjdGlvbiBk
ZWZhdWx0V3JpdGluZ0RpcmVjdGlvbigpOworICAgIFdURjo6VW5pY29kZTo6RGlyZWN0aW9uIGRl
ZmF1bHRXcml0aW5nRGlyZWN0aW9uKGJvb2wqIGhhc1N0cm9uZ0RpcmVjdGlvbmFsaXR5ID0gMCk7
CiAKICNpZiBQTEFURk9STShDRikKICAgICBDRlN0cmluZ1JlZiBjcmVhdGVDRlN0cmluZygpOwpJ
bmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3d0Zi90ZXh0L1dURlN0cmluZy5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS93dGYvdGV4dC9XVEZTdHJpbmcuaAkocmV2aXNp
b24gNzc4MDgpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvd3RmL3RleHQvV1RGU3RyaW5nLmgJ
KHdvcmtpbmcgY29weSkKQEAgLTMyNiw3ICszMjYsMTQgQEAgcHVibGljOgogICAgIHN0YXRpYyBT
dHJpbmcgZnJvbVVURjhXaXRoTGF0aW4xRmFsbGJhY2soY29uc3QgY2hhciosIHNpemVfdCk7CiAg
ICAgCiAgICAgLy8gRGV0ZXJtaW5lcyB0aGUgd3JpdGluZyBkaXJlY3Rpb24gdXNpbmcgdGhlIFVu
aWNvZGUgQmlkaSBBbGdvcml0aG0gcnVsZXMgUDIgYW5kIFAzLgotICAgIFdURjo6VW5pY29kZTo6
RGlyZWN0aW9uIGRlZmF1bHRXcml0aW5nRGlyZWN0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9pbXBs
ID8gbV9pbXBsLT5kZWZhdWx0V3JpdGluZ0RpcmVjdGlvbigpIDogV1RGOjpVbmljb2RlOjpMZWZ0
VG9SaWdodDsgfQorICAgIFdURjo6VW5pY29kZTo6RGlyZWN0aW9uIGRlZmF1bHRXcml0aW5nRGly
ZWN0aW9uKGJvb2wqIGhhc1N0cm9uZ0RpcmVjdGlvbmFsaXR5ID0gMCkgY29uc3QKKyAgICB7Cisg
ICAgICAgIGlmIChtX2ltcGwpCisgICAgICAgICAgICByZXR1cm4gbV9pbXBsLT5kZWZhdWx0V3Jp
dGluZ0RpcmVjdGlvbihoYXNTdHJvbmdEaXJlY3Rpb25hbGl0eSk7CisgICAgICAgIGlmIChoYXNT
dHJvbmdEaXJlY3Rpb25hbGl0eSkKKyAgICAgICAgICAgICpoYXNTdHJvbmdEaXJlY3Rpb25hbGl0
eSA9IGZhbHNlOworICAgICAgICByZXR1cm4gV1RGOjpVbmljb2RlOjpMZWZ0VG9SaWdodDsKKyAg
ICB9CiAKICAgICBib29sIGNvbnRhaW5zT25seUFTQ0lJKCkgY29uc3QgeyByZXR1cm4gY2hhcmFj
dGVyc0FyZUFsbEFTQ0lJKGNoYXJhY3RlcnMoKSwgbGVuZ3RoKCkpOyB9CiAgICAgYm9vbCBjb250
YWluc09ubHlMYXRpbjEoKSBjb25zdCB7IHJldHVybiBjaGFyYWN0ZXJzQXJlQWxsTGF0aW4xKGNo
YXJhY3RlcnMoKSwgbGVuZ3RoKCkpOyB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCShyZXZpc2lvbiA3ODAwOSkK
KysrIFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDUy
IEBACisyMDExLTAyLTA4ICBZYWVsIEFoYXJvbiAgPHlhZWwuYWhhcm9uQG5va2lhLmNvbT4KKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGQgc3VwcG9y
dCBmb3IgZGlyPWF1dG8KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTUwOTE2CisKKyAgICAgICAgV2hlbiBhbiBlbGVtZW50IGhhcyBkaXIgYXR0cmlidXRl
IHdpdGggdmFsdWUgImF1dG8iLCBjYWxsIGRlZmF1bHRXcml0aW5nTW9kZQorICAgICAgICB0byBm
aW5kIGl0cyBkaXJlY3Rpb25hbGl0eS4KKyAgICAgICAgQWRkZWQgYSBmbGFnIFNlbGZPckFuY2Vz
dG9ySGFzRGlyQXV0b0ZsYWcsIGFuZCBhZGRlZCBob29rcyBpbiB0aGUgRE9NIHRvIHNldAorICAg
ICAgICBhbmQgY2hlY2sgdGhpcyBmbGFnLiBUaGlzIGZsYWcgaXMgc2V0IG9uIGV2ZXJ5IG5vZGUg
YmV0d2VlbiBhbiBlbGVtZW50IHdpdGgKKyAgICAgICAgZGlyPWF1dG8gYXR0cmlidXRlIGFuZCBp
dHMgZmlyc3QgdGV4dCBub2RlLiBDaGFuZ2VzIGluIHRoZSBET00gYmV0d2VlbiB0aG9zZQorICAg
ICAgICBlbGVtZW50cyB3aWxsIHRyaWdnZXIgcmUtZXZhbHVhdGluZyB0aGUgZGlyZWN0aW9uYWxp
dHksIGJ1dCBjaGFuZ2VkIG5vdAorICAgICAgICBiZXR3ZWVuIHRob3NlIGVsZW1lbnQgZG8gbm90
IG5lZWQgdG8gYmUgY29uY2VybmVkLgorICAgICAgICBUaGUgRE9NIGhvb2tzIHdlcmUgYWRkZWQg
dG8gY2hpbGRyZW5DaGFuZ2VkLCBhbmQgdG8gcGFyc2VNYXBwZWRBdHRyaWJ1dGUuCisgICAgICAg
IFRoZSBkaXJlY3Rpb25hbGl0eSBpcyBldmFsdWF0ZWQgd2hlbiBjaGlsZHJlbiBhcmUgYWRkZWQs
IGJ1dCBub3Qgd2hlbiB0aGV5IGFyZQorICAgICAgICByZW1vdmVkLiBPbmNlIHRoZXkgYXJlIHJl
LWFkZGVkLCB0aGUgZGlyZWN0aW9uYWxpdHkgd2lsbCBiZSBldmFsdWF0ZWQuCisKKyAgICAgICAg
QWRkZWQgMiBzdGF0aWMgQ1NTTXV0YWJsZVN0eWxlRGVjbGFyYXRpb25zIHRvIGJlIHVzZWQgZm9y
IGVsZW1lbnRzIHdpdGggZGlyPWF1dG8uCisgICAgICAgIFdlIGNhbm5vdCB1c2VkIHRoZSBtYXBw
ZWQgZGVjbGFyYXRpb24sIGJlY2F1c2UgaXQgY2FuIHRha2Ugb25seSBvbmUgdmFsdWUuCisKKyAg
ICAgICAgVGVzdHM6IGZhc3QvZG9tL0hUTUxFbGVtZW50L2F0dHItZGlyLWF1dG8tY2hhbmdlLWNo
aWxkLW5vZGUuaHRtbAorICAgICAgICAgICAgICAgZmFzdC9kb20vSFRNTEVsZW1lbnQvYXR0ci1k
aXItYXV0by1jaGFuZ2UtdGV4dC5odG1sCisgICAgICAgICAgICAgICBmYXN0L2RvbS9IVE1MRWxl
bWVudC9hdHRyLWRpci1hdXRvLWNoaWxkcmVuLmh0bWwKKyAgICAgICAgICAgICAgIGZhc3QvZG9t
L0hUTUxFbGVtZW50L2F0dHItZGlyLWF1dG8tcmVtb3ZlLWFkZC1jaGlsZHJlbi5odG1sCisgICAg
ICAgICAgICAgICBmYXN0L2RvbS9IVE1MRWxlbWVudC9hdHRyLWRpci1hdXRvLmh0bWwKKyAgICAg
ICAgICAgICAgIGZhc3QvZG9tL0hUTUxFbGVtZW50L2F0dHItZGlyLXZhbHVlLWNoYW5nZS5odG1s
CisKKyAgICAgICAgKiBjc3MvQ1NTU3R5bGVTZWxlY3Rvci5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpsZWZ0VG9SaWdodERlY2xhcmF0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OnJpZ2h0VG9MZWZ0
RGVjbGFyYXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6Q1NTU3R5bGVTZWxlY3Rvcjo6Y2FuU2hh
cmVTdHlsZVdpdGhFbGVtZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1N0eWxlU2VsZWN0b3I6
OnN0eWxlRm9yRWxlbWVudCk6CisgICAgICAgICogZG9tL05vZGUuaDoKKyAgICAgICAgKFdlYkNv
cmU6Ok5vZGU6OnNlbGZPckFuY2VzdG9ySGFzRGlyQXV0b0F0dHJpYnV0ZSk6CisgICAgICAgIChX
ZWJDb3JlOjpOb2RlOjpzZXRTZWxmT3JBbmNlc3Rvckhhc0RpckF1dG9BdHRyaWJ1dGUpOgorICAg
ICAgICAqIGh0bWwvSFRNTEVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTEVsZW1l
bnQ6Om1hcFRvRW50cnkpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTEVsZW1lbnQ6OnBhcnNlTWFw
cGVkQXR0cmlidXRlKToKKyAgICAgICAgKFdlYkNvcmU6OnNldEhhc0RpckF1dG9GbGFnUmVjdXJz
aXZlbHkpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTEVsZW1lbnQ6OmNoaWxkcmVuQ2hhbmdlZCk6
CisgICAgICAgIChXZWJDb3JlOjpIVE1MRWxlbWVudDo6ZGlyZWN0aW9uYWxpdHlJZmhhc0RpckF1
dG9BdHRyaWJ1dGUpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTEVsZW1lbnQ6OmRpcmVjdGlvbmFs
aXR5KToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxFbGVtZW50OjpkaXJBdHRyaWJ1dGVDaGFuZ2Vk
KToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxFbGVtZW50OjphZGp1c3REaXJlY3Rpb25hbGl0eUlm
TmVlZGVkQWZ0ZXJDaGlsZEF0dHJpYnV0ZUNoYW5nZWQpOgorICAgICAgICAoV2ViQ29yZTo6SFRN
TEVsZW1lbnQ6OmNhbGN1bGF0ZUFuZEFkanVzdERpcmVjdGlvbmFsaXR5KToKKyAgICAgICAgKFdl
YkNvcmU6OkhUTUxFbGVtZW50OjphZGp1c3REaXJlY3Rpb25hbGl0eUlmTmVlZGVkQWZ0ZXJDaGls
ZHJlbkNoYW5nZWQpOgorICAgICAgICAqIGh0bWwvSFRNTEVsZW1lbnQuaDoKKwogMjAxMS0wMi0w
OCAgU2FtIFdlaW5pZyAgPHNhbUB3ZWJraXQub3JnPgogCiAgICAgICAgIFJldmlld2VkIGJ5IE1h
Y2llaiBTdGFjaG93aWFrLgpJbmRleDogU291cmNlL1dlYkNvcmUvY3NzL0NTU1N0eWxlU2VsZWN0
b3IuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2Nzcy9DU1NTdHlsZVNlbGVjdG9y
LmNwcAkocmV2aXNpb24gNzc4MDgpCisrKyBTb3VyY2UvV2ViQ29yZS9jc3MvQ1NTU3R5bGVTZWxl
Y3Rvci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ3MSw2ICs0NzEsMjYgQEAgc3RhdGljIGNvbnN0
IE1lZGlhUXVlcnlFdmFsdWF0b3ImIHByaW50RQogICAgIHJldHVybiBzdGF0aWNQcmludEV2YWw7
CiB9CiAKK3N0YXRpYyBDU1NNdXRhYmxlU3R5bGVEZWNsYXJhdGlvbiogbGVmdFRvUmlnaHREZWNs
YXJhdGlvbigpCit7CisgICAgREVGSU5FX1NUQVRJQ19MT0NBTChSZWZQdHI8Q1NTTXV0YWJsZVN0
eWxlRGVjbGFyYXRpb24+LCBsZWZ0VG9SaWdodERlY2wsIChDU1NNdXRhYmxlU3R5bGVEZWNsYXJh
dGlvbjo6Y3JlYXRlKCkpKTsKKyAgICBpZiAoIWxlZnRUb1JpZ2h0RGVjbC0+bGVuZ3RoKCkpIHsK
KyAgICAgICAgbGVmdFRvUmlnaHREZWNsLT5zZXRQcm9wZXJ0eShDU1NQcm9wZXJ0eURpcmVjdGlv
biwgImx0ciIsIGZhbHNlLCBmYWxzZSk7CisgICAgICAgIGxlZnRUb1JpZ2h0RGVjbC0+c2V0U3Ry
aWN0UGFyc2luZyhmYWxzZSk7CisgICAgfQorICAgIHJldHVybiBsZWZ0VG9SaWdodERlY2wuZ2V0
KCk7Cit9CisKK3N0YXRpYyBDU1NNdXRhYmxlU3R5bGVEZWNsYXJhdGlvbiogcmlnaHRUb0xlZnRE
ZWNsYXJhdGlvbigpCit7CisgICAgREVGSU5FX1NUQVRJQ19MT0NBTChSZWZQdHI8Q1NTTXV0YWJs
ZVN0eWxlRGVjbGFyYXRpb24+LCByaWdodFRvTGVmdERlY2wsIChDU1NNdXRhYmxlU3R5bGVEZWNs
YXJhdGlvbjo6Y3JlYXRlKCkpKTsKKyAgICBpZiAoIXJpZ2h0VG9MZWZ0RGVjbC0+bGVuZ3RoKCkp
IHsKKyAgICAgICAgcmlnaHRUb0xlZnREZWNsLT5zZXRQcm9wZXJ0eShDU1NQcm9wZXJ0eURpcmVj
dGlvbiwgInJ0bCIsIGZhbHNlLCBmYWxzZSk7CisgICAgICAgIHJpZ2h0VG9MZWZ0RGVjbC0+c2V0
U3RyaWN0UGFyc2luZyhmYWxzZSk7CisgICAgfQorICAgIHJldHVybiByaWdodFRvTGVmdERlY2wu
Z2V0KCk7Cit9CisKIENTU1N0eWxlU2VsZWN0b3I6OkNTU1N0eWxlU2VsZWN0b3IoRG9jdW1lbnQq
IGRvY3VtZW50LCBTdHlsZVNoZWV0TGlzdCogc3R5bGVTaGVldHMsIENTU1N0eWxlU2hlZXQqIG1h
cHBlZEVsZW1lbnRTaGVldCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ1NT
U3R5bGVTaGVldCogcGFnZVVzZXJTaGVldCwgY29uc3QgVmVjdG9yPFJlZlB0cjxDU1NTdHlsZVNo
ZWV0PiA+KiBwYWdlR3JvdXBVc2VyU2hlZXRzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBib29sIHN0cmljdFBhcnNpbmcsIGJvb2wgbWF0Y2hBdXRob3JBbmRVc2VyU3R5bGVz
KQpAQCAtMTE0MCw2ICsxMTYwLDkgQEAgYm9vbCBDU1NTdHlsZVNlbGVjdG9yOjpjYW5TaGFyZVN0
eWxlV2l0aAogICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICNlbmRpZgogCisgICAgICAg
ICAgICBpZiAoZXF1YWxJZ25vcmluZ0Nhc2Uocy0+ZmFzdEdldEF0dHJpYnV0ZShkaXJBdHRyKSwg
ImF1dG8iKSB8fCBlcXVhbElnbm9yaW5nQ2FzZShtX2VsZW1lbnQtPmZhc3RHZXRBdHRyaWJ1dGUo
ZGlyQXR0ciksICJhdXRvIikpCisgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworCiAgICAg
ICAgICAgICBib29sIGNsYXNzZXNNYXRjaCA9IHRydWU7CiAgICAgICAgICAgICBpZiAocy0+aGFz
Q2xhc3MoKSkgewogICAgICAgICAgICAgICAgIGNvbnN0IEF0b21pY1N0cmluZyYgY2xhc3MxID0g
bV9lbGVtZW50LT5mYXN0R2V0QXR0cmlidXRlKGNsYXNzQXR0cik7CkBAIC0xNDQ3LDYgKzE0NzAs
MTIgQEAgUGFzc1JlZlB0cjxSZW5kZXJTdHlsZT4gQ1NTU3R5bGVTZWxlY3RvcgogICAgICAgICAg
ICAgICAgICAgICAgICAgYWRkTWF0Y2hlZERlY2xhcmF0aW9uKG1fYWRkaXRpb25hbEF0dHJpYnV0
ZVN0eWxlRGVjbHNbaV0pOwogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgIH0KKyAgICAg
ICAgICAgIGlmIChtX3N0eWxlZEVsZW1lbnQtPmlzSFRNTEVsZW1lbnQoKSkgeworICAgICAgICAg
ICAgICAgIGJvb2wgaXNBdXRvOworICAgICAgICAgICAgICAgIFRleHREaXJlY3Rpb24gdGV4dERp
cmVjdGlvbiA9IHN0YXRpY19jYXN0PEhUTUxFbGVtZW50Kj4obV9zdHlsZWRFbGVtZW50KS0+ZGly
ZWN0aW9uYWxpdHlJZmhhc0RpckF1dG9BdHRyaWJ1dGUoaXNBdXRvKTsKKyAgICAgICAgICAgICAg
ICBpZiAoaXNBdXRvKQorICAgICAgICAgICAgICAgICAgICBhZGRNYXRjaGVkRGVjbGFyYXRpb24o
dGV4dERpcmVjdGlvbiA9PSBMVFIgPyBsZWZ0VG9SaWdodERlY2xhcmF0aW9uKCkgOiByaWdodFRv
TGVmdERlY2xhcmF0aW9uKCkpOworICAgICAgICAgICAgfQogICAgICAgICB9CiAgICAgCiAgICAg
ICAgIC8vIDYuIENoZWNrIHRoZSBydWxlcyBpbiBhdXRob3Igc2hlZXRzIG5leHQuCkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9kb20vTm9kZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2Rv
bS9Ob2RlLmgJKHJldmlzaW9uIDc3ODA4KQorKysgU291cmNlL1dlYkNvcmUvZG9tL05vZGUuaAko
d29ya2luZyBjb3B5KQpAQCAtMjE3LDYgKzIxNyw5IEBAIHB1YmxpYzoKICAgICBFbGVtZW50KiBz
aGFkb3dIb3N0KCkgY29uc3Q7CiAgICAgdm9pZCBzZXRTaGFkb3dIb3N0KEVsZW1lbnQqKTsKIAor
ICAgIGJvb2wgc2VsZk9yQW5jZXN0b3JIYXNEaXJBdXRvQXR0cmlidXRlKCkgY29uc3QgeyByZXR1
cm4gZ2V0RmxhZyhTZWxmT3JBbmNlc3Rvckhhc0RpckF1dG9GbGFnKTsgfQorICAgIHZvaWQgc2V0
U2VsZk9yQW5jZXN0b3JIYXNEaXJBdXRvQXR0cmlidXRlKGJvb2wgZmxhZykgeyBzZXRGbGFnKGZs
YWcsIFNlbGZPckFuY2VzdG9ySGFzRGlyQXV0b0ZsYWcpOyB9CisKICAgICAvLyBSZXR1cm5zIHRo
ZSBlbmNsb3NpbmcgZXZlbnQgcGFyZW50IG5vZGUgKG9yIHNlbGYpIHRoYXQsIHdoZW4gY2xpY2tl
ZCwgd291bGQgdHJpZ2dlciBhIG5hdmlnYXRpb24uCiAgICAgTm9kZSogZW5jbG9zaW5nTGlua0V2
ZW50UGFyZW50T3JTZWxmKCk7CiAKQEAgLTYwMyw2ICs2MDYsOCBAQCBwcml2YXRlOgogCiAgICAg
ICAgIFN0eWxlQ2hhbmdlTWFzayA9IDEgPDwgbm9kZVN0eWxlQ2hhbmdlU2hpZnQgfCAxIDw8IChu
b2RlU3R5bGVDaGFuZ2VTaGlmdCArIDEpLAogCisgICAgICAgIFNlbGZPckFuY2VzdG9ySGFzRGly
QXV0b0ZsYWcgPSAxIDw8IDI3LAorCiAjaWYgRU5BQkxFKFNWRykKICAgICAgICAgRGVmYXVsdE5v
ZGVGbGFncyA9IElzUGFyc2luZ0NoaWxkcmVuRmluaXNoZWRGbGFnIHwgSXNTdHlsZUF0dHJpYnV0
ZVZhbGlkRmxhZyB8IEFyZVNWR0F0dHJpYnV0ZXNWYWxpZEZsYWcKICNlbHNlCkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9odG1sL0hUTUxFbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9odG1sL0hUTUxFbGVtZW50LmNwcAkocmV2aXNpb24gNzc4MDgpCisrKyBTb3VyY2UvV2Vi
Q29yZS9odG1sL0hUTUxFbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTI0LDcgKzEyNCw3
IEBAIGJvb2wgSFRNTEVsZW1lbnQ6Om1hcFRvRW50cnkoY29uc3QgUXVhbGkKICAgICB9CiAgICAg
aWYgKGF0dHJOYW1lID09IGRpckF0dHIpIHsKICAgICAgICAgcmVzdWx0ID0gaGFzTG9jYWxOYW1l
KGJkb1RhZykgPyBlQkRPIDogZVVuaXZlcnNhbDsKLSAgICAgICAgcmV0dXJuIGZhbHNlOworICAg
ICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CiAKICAgICByZXR1cm4gU3R5bGVkRWxlbWVudDo6bWFw
VG9FbnRyeShhdHRyTmFtZSwgcmVzdWx0KTsKQEAgLTE1NSw3ICsxNTUsOSBAQCB2b2lkIEhUTUxF
bGVtZW50OjpwYXJzZU1hcHBlZEF0dHJpYnV0ZShBCiAgICAgfSBlbHNlIGlmIChhdHRyLT5uYW1l
KCkgPT0gbGFuZ0F0dHIpIHsKICAgICAgICAgLy8gRklYTUU6IEltcGxlbWVudAogICAgIH0gZWxz
ZSBpZiAoYXR0ci0+bmFtZSgpID09IGRpckF0dHIpIHsKLSAgICAgICAgYWRkQ1NTUHJvcGVydHko
YXR0ciwgQ1NTUHJvcGVydHlEaXJlY3Rpb24sIGF0dHItPnZhbHVlKCkpOworICAgICAgICBpZiAo
IWVxdWFsSWdub3JpbmdDYXNlKGF0dHItPnZhbHVlKCksICJhdXRvIikpCisgICAgICAgICAgICBh
ZGRDU1NQcm9wZXJ0eShhdHRyLCBDU1NQcm9wZXJ0eURpcmVjdGlvbiwgYXR0ci0+dmFsdWUoKSk7
CisgICAgICAgIGRpckF0dHJpYnV0ZUNoYW5nZWQoYXR0cik7CiAgICAgICAgIGFkZENTU1Byb3Bl
cnR5KGF0dHIsIENTU1Byb3BlcnR5VW5pY29kZUJpZGksIGhhc0xvY2FsTmFtZShiZG9UYWcpID8g
Q1NTVmFsdWVCaWRpT3ZlcnJpZGUgOiBDU1NWYWx1ZUVtYmVkKTsKICAgICB9IGVsc2UgaWYgKGF0
dHItPm5hbWUoKSA9PSBkcmFnZ2FibGVBdHRyKSB7CiAgICAgICAgIGNvbnN0IEF0b21pY1N0cmlu
ZyYgdmFsdWUgPSBhdHRyLT52YWx1ZSgpOwpAQCAtODc2LDYgKzg3OCwxNDEgQEAgdm9pZCBIVE1M
RWxlbWVudDo6ZGlzcGF0Y2hJbnB1dEV2ZW50cygpCiAgICAgICAgIG93bmVyRm9ybS0+ZGlzcGF0
Y2hGb3JtSW5wdXQoKTsKIH0KIAorc3RhdGljIHZvaWQgc2V0SGFzRGlyQXV0b0ZsYWdSZWN1cnNp
dmVseShOb2RlKiBmaXJzdE5vZGUsIGJvb2wgZmxhZywgTm9kZSogbGFzdE5vZGUgPSAwKQorewor
ICAgIGZpcnN0Tm9kZS0+c2V0U2VsZk9yQW5jZXN0b3JIYXNEaXJBdXRvQXR0cmlidXRlKGZsYWcp
OworCisgICAgTm9kZSogbm9kZSA9IGZpcnN0Tm9kZS0+Zmlyc3RDaGlsZCgpOworCisgICAgd2hp
bGUgKG5vZGUpIHsKKyAgICAgICAgaWYgKG5vZGUtPnNlbGZPckFuY2VzdG9ySGFzRGlyQXV0b0F0
dHJpYnV0ZSgpID09IGZsYWcpCisgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgaWYgKG5v
ZGUtPmlzSFRNTEVsZW1lbnQoKSAmJiB0b0VsZW1lbnQobm9kZSktPmhhc0F0dHJpYnV0ZShkaXJB
dHRyKSkgeworICAgICAgICAgICAgaWYgKG5vZGUgPT0gbGFzdE5vZGUpCisgICAgICAgICAgICAg
ICAgcmV0dXJuOworICAgICAgICAgICAgbm9kZSA9IG5vZGUtPnRyYXZlcnNlTmV4dFNpYmxpbmco
Zmlyc3ROb2RlKTsKKyAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICB9CisgICAgICAgIG5v
ZGUtPnNldFNlbGZPckFuY2VzdG9ySGFzRGlyQXV0b0F0dHJpYnV0ZShmbGFnKTsKKyAgICAgICAg
aWYgKG5vZGUgPT0gbGFzdE5vZGUpCisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIG5vZGUg
PSBub2RlLT50cmF2ZXJzZU5leHROb2RlKGZpcnN0Tm9kZSk7CisgICAgfQorfQorCit2b2lkIEhU
TUxFbGVtZW50OjpjaGlsZHJlbkNoYW5nZWQoYm9vbCBjaGFuZ2VkQnlQYXJzZXIsIE5vZGUqIGJl
Zm9yZUNoYW5nZSwgTm9kZSogYWZ0ZXJDaGFuZ2UsIGludCBjaGlsZENvdW50RGVsdGEpCit7Cisg
ICAgU3R5bGVkRWxlbWVudDo6Y2hpbGRyZW5DaGFuZ2VkKGNoYW5nZWRCeVBhcnNlciwgYmVmb3Jl
Q2hhbmdlLCBhZnRlckNoYW5nZSwgY2hpbGRDb3VudERlbHRhKTsKKyAgICBhZGp1c3REaXJlY3Rp
b25hbGl0eUlmTmVlZGVkQWZ0ZXJDaGlsZHJlbkNoYW5nZWQoYmVmb3JlQ2hhbmdlLCBjaGlsZENv
dW50RGVsdGEpOworfQorCitUZXh0RGlyZWN0aW9uIEhUTUxFbGVtZW50OjpkaXJlY3Rpb25hbGl0
eUlmaGFzRGlyQXV0b0F0dHJpYnV0ZShib29sJiBpc0F1dG8pIGNvbnN0Cit7CisgICAgaWYgKCEo
c2VsZk9yQW5jZXN0b3JIYXNEaXJBdXRvQXR0cmlidXRlKCkgJiYgZXF1YWxJZ25vcmluZ0Nhc2Uo
Z2V0QXR0cmlidXRlKGRpckF0dHIpLCAiYXV0byIpKSkgeworICAgICAgICBpc0F1dG8gPSBmYWxz
ZTsKKyAgICAgICAgcmV0dXJuIExUUjsKKyAgICB9CisKKyAgICBpc0F1dG8gPSB0cnVlOworICAg
IHJldHVybiBkaXJlY3Rpb25hbGl0eSgpOworfQorCitUZXh0RGlyZWN0aW9uIEhUTUxFbGVtZW50
OjpkaXJlY3Rpb25hbGl0eShOb2RlKiogc3Ryb25nRGlyZWN0aW9uYWxpdHlUZXh0Tm9kZSkgY29u
c3QKK3sKKyAgICBOb2RlKiBub2RlID0gZmlyc3RDaGlsZCgpOworICAgIHdoaWxlIChub2RlKSB7
CisgICAgICAgIC8vIFNraXAgYmRpLCBzY3JpcHQgYW5kIHN0eWxlIGVsZW1lbnRzCisgICAgICAg
IGlmIChlcXVhbElnbm9yaW5nQ2FzZShub2RlLT5ub2RlTmFtZSgpLCAiYmRpIikgfHwgbm9kZS0+
aGFzVGFnTmFtZShzY3JpcHRUYWcpIHx8IG5vZGUtPmhhc1RhZ05hbWUoc3R5bGVUYWcpKSB7Cisg
ICAgICAgICAgICBub2RlID0gbm9kZS0+dHJhdmVyc2VOZXh0U2libGluZyh0aGlzKTsKKyAgICAg
ICAgICAgIGNvbnRpbnVlOworICAgICAgICB9CisKKyAgICAgICAgLy8gU2tpcCBlbGVtZW50cyB3
aXRoIHZhbGlkIGRpciBhdHRyaWJ1dGUKKyAgICAgICAgaWYgKG5vZGUtPmlzRWxlbWVudE5vZGUo
KSkgeworICAgICAgICAgICAgQXRvbWljU3RyaW5nIGRpckF0dHJpYnV0ZVZhbHVlID0gdG9FbGVt
ZW50KG5vZGUpLT5mYXN0R2V0QXR0cmlidXRlKGRpckF0dHIpOworICAgICAgICAgICAgaWYgKGVx
dWFsSWdub3JpbmdDYXNlKGRpckF0dHJpYnV0ZVZhbHVlLCAicnRsIikgfHwgZXF1YWxJZ25vcmlu
Z0Nhc2UoZGlyQXR0cmlidXRlVmFsdWUsICJsdHIiKSB8fCBlcXVhbElnbm9yaW5nQ2FzZShkaXJB
dHRyaWJ1dGVWYWx1ZSwgImF1dG8iKSkgeworICAgICAgICAgICAgICAgIG5vZGUgPSBub2RlLT50
cmF2ZXJzZU5leHRTaWJsaW5nKHRoaXMpOworICAgICAgICAgICAgICAgIGNvbnRpbnVlOworICAg
ICAgICAgICAgfQorICAgICAgICB9CisKKyAgICAgICAgaWYgKG5vZGUtPmlzVGV4dE5vZGUoKSkg
eworICAgICAgICAgICAgYm9vbCBoYXNTdHJvbmdEaXJlY3Rpb25hbGl0eTsKKyAgICAgICAgICAg
IFdURjo6VW5pY29kZTo6RGlyZWN0aW9uIHRleHREaXJlY3Rpb24gPSBub2RlLT50ZXh0Q29udGVu
dCh0cnVlKS5kZWZhdWx0V3JpdGluZ0RpcmVjdGlvbigmaGFzU3Ryb25nRGlyZWN0aW9uYWxpdHkp
OworICAgICAgICAgICAgaWYgKGhhc1N0cm9uZ0RpcmVjdGlvbmFsaXR5KSB7CisgICAgICAgICAg
ICAgICAgaWYgKHN0cm9uZ0RpcmVjdGlvbmFsaXR5VGV4dE5vZGUpCisgICAgICAgICAgICAgICAg
ICAgICpzdHJvbmdEaXJlY3Rpb25hbGl0eVRleHROb2RlID0gbm9kZTsKKyAgICAgICAgICAgICAg
ICByZXR1cm4gKHRleHREaXJlY3Rpb24gPT0gV1RGOjpVbmljb2RlOjpMZWZ0VG9SaWdodCkgPyBM
VFIgOiBSVEw7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgbm9kZSA9IG5vZGUt
PnRyYXZlcnNlTmV4dE5vZGUodGhpcyk7CisgICAgfQorICAgIGlmIChzdHJvbmdEaXJlY3Rpb25h
bGl0eVRleHROb2RlKQorICAgICAgICAqc3Ryb25nRGlyZWN0aW9uYWxpdHlUZXh0Tm9kZSA9IDA7
CisgICAgcmV0dXJuIExUUjsKK30KKwordm9pZCBIVE1MRWxlbWVudDo6ZGlyQXR0cmlidXRlQ2hh
bmdlZChBdHRyaWJ1dGUqIGF0dHJpYnV0ZSkKK3sKKyAgICBFbGVtZW50KiBwYXJlbnQgPSBwYXJl
bnRFbGVtZW50KCk7CisKKyAgICBpZiAocGFyZW50ICYmIHBhcmVudC0+aXNIVE1MRWxlbWVudCgp
ICYmIHBhcmVudC0+c2VsZk9yQW5jZXN0b3JIYXNEaXJBdXRvQXR0cmlidXRlKCkpCisgICAgICAg
IHN0YXRpY19jYXN0PEhUTUxFbGVtZW50Kj4ocGFyZW50KS0+YWRqdXN0RGlyZWN0aW9uYWxpdHlJ
Zk5lZWRlZEFmdGVyQ2hpbGRBdHRyaWJ1dGVDaGFuZ2VkKHRoaXMpOworCisgICAgaWYgKGVxdWFs
SWdub3JpbmdDYXNlKGF0dHJpYnV0ZS0+dmFsdWUoKSwgImF1dG8iKSkKKyAgICAgICAgY2FsY3Vs
YXRlQW5kQWRqdXN0RGlyZWN0aW9uYWxpdHkoKTsKK30KKwordm9pZCBIVE1MRWxlbWVudDo6YWRq
dXN0RGlyZWN0aW9uYWxpdHlJZk5lZWRlZEFmdGVyQ2hpbGRBdHRyaWJ1dGVDaGFuZ2VkKEVsZW1l
bnQqIGNoaWxkKQoreworICAgIEFTU0VSVChzZWxmT3JBbmNlc3Rvckhhc0RpckF1dG9BdHRyaWJ1
dGUoKSk7CisgICAgTm9kZSogc3Ryb25nRGlyZWN0aW9uYWxpdHlUZXh0Tm9kZTsKKyAgICBUZXh0
RGlyZWN0aW9uIHRleHREaXJlY3Rpb24gPSBkaXJlY3Rpb25hbGl0eSgmc3Ryb25nRGlyZWN0aW9u
YWxpdHlUZXh0Tm9kZSk7CisgICAgc2V0SGFzRGlyQXV0b0ZsYWdSZWN1cnNpdmVseShjaGlsZCwg
ZmFsc2UpOworICAgIGlmIChyZW5kZXJlcigpICYmIHJlbmRlcmVyKCktPnN0eWxlKCkgJiYgcmVu
ZGVyZXIoKS0+c3R5bGUoKS0+ZGlyZWN0aW9uKCkgIT0gdGV4dERpcmVjdGlvbikgeworICAgICAg
ICBFbGVtZW50KiBlbGVtZW50VG9BZGp1c3QgPSB0aGlzOworICAgICAgICBmb3IgKDsgZWxlbWVu
dFRvQWRqdXN0OyBlbGVtZW50VG9BZGp1c3QgPSBlbGVtZW50VG9BZGp1c3QtPnBhcmVudEVsZW1l
bnQoKSkgeworICAgICAgICAgICAgaWYgKGVsZW1lbnRUb0FkanVzdC0+aGFzQXR0cmlidXRlKGRp
ckF0dHIpKSB7CisgICAgICAgICAgICAgICAgZWxlbWVudFRvQWRqdXN0LT5zZXROZWVkc1N0eWxl
UmVjYWxjKCk7CisgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgfQorICAgICAg
ICB9CisgICAgfQorfQorCit2b2lkIEhUTUxFbGVtZW50OjpjYWxjdWxhdGVBbmRBZGp1c3REaXJl
Y3Rpb25hbGl0eSgpCit7CisgICAgTm9kZSogc3Ryb25nRGlyZWN0aW9uYWxpdHlUZXh0Tm9kZTsK
KyAgICBUZXh0RGlyZWN0aW9uIHRleHREaXJlY3Rpb24gPSBkaXJlY3Rpb25hbGl0eSgmc3Ryb25n
RGlyZWN0aW9uYWxpdHlUZXh0Tm9kZSk7CisgICAgc2V0SGFzRGlyQXV0b0ZsYWdSZWN1cnNpdmVs
eSh0aGlzLCB0cnVlLCBzdHJvbmdEaXJlY3Rpb25hbGl0eVRleHROb2RlKTsKKyAgICBpZiAocmVu
ZGVyZXIoKSAmJiByZW5kZXJlcigpLT5zdHlsZSgpICYmIHJlbmRlcmVyKCktPnN0eWxlKCktPmRp
cmVjdGlvbigpICE9IHRleHREaXJlY3Rpb24pCisgICAgICAgIHNldE5lZWRzU3R5bGVSZWNhbGMo
KTsKK30KKwordm9pZCBIVE1MRWxlbWVudDo6YWRqdXN0RGlyZWN0aW9uYWxpdHlJZk5lZWRlZEFm
dGVyQ2hpbGRyZW5DaGFuZ2VkKE5vZGUqIGJlZm9yZUNoYW5nZSwgaW50IGNoaWxkQ291bnREZWx0
YSkKK3sKKyAgICBpZiAoY2hpbGRDb3VudERlbHRhID4gMCkgeworICAgICAgICBOb2RlKiBub2Rl
ID0gYmVmb3JlQ2hhbmdlID8gYmVmb3JlQ2hhbmdlLT50cmF2ZXJzZU5leHRTaWJsaW5nKCkgOiAw
OworICAgICAgICBmb3IgKGludCBjb3VudGVyID0gMDsgbm9kZSAmJiBjb3VudGVyIDwgY2hpbGRD
b3VudERlbHRhOyBjb3VudGVyKyssIG5vZGUgPSBub2RlLT50cmF2ZXJzZU5leHRTaWJsaW5nKCkp
IHsKKyAgICAgICAgICAgIGlmIChub2RlLT5pc0VsZW1lbnROb2RlKCkgJiYgdG9FbGVtZW50KG5v
ZGUpLT5oYXNBdHRyaWJ1dGUoZGlyQXR0cikpCisgICAgICAgICAgICAgICAgY29udGludWU7CisK
KyAgICAgICAgICAgIHNldEhhc0RpckF1dG9GbGFnUmVjdXJzaXZlbHkobm9kZSwgZmFsc2UpOwor
ICAgICAgICB9CisgICAgfQorCisgICAgaWYgKCFzZWxmT3JBbmNlc3Rvckhhc0RpckF1dG9BdHRy
aWJ1dGUoKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgZm9yIChFbGVtZW50KiBlbGVtZW50VG9B
ZGp1c3QgPSB0aGlzOyBlbGVtZW50VG9BZGp1c3Q7IGVsZW1lbnRUb0FkanVzdCA9IGVsZW1lbnRU
b0FkanVzdC0+cGFyZW50RWxlbWVudCgpKSB7CisgICAgICAgIGlmIChlbGVtZW50VG9BZGp1c3Qt
PmlzSFRNTEVsZW1lbnQoKSAmJiBlbGVtZW50VG9BZGp1c3QtPmhhc0F0dHJpYnV0ZShkaXJBdHRy
KSkgeworICAgICAgICAgICAgc3RhdGljX2Nhc3Q8SFRNTEVsZW1lbnQqPihlbGVtZW50VG9BZGp1
c3QpLT5jYWxjdWxhdGVBbmRBZGp1c3REaXJlY3Rpb25hbGl0eSgpOworICAgICAgICAgICAgcmV0
dXJuOworICAgICAgICB9CisgICAgfQorfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKICNp
Zm5kZWYgTkRFQlVHCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxFbGVtZW50LmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRWxlbWVudC5oCShyZXZpc2lvbiA3
NzgwOCkKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEVsZW1lbnQuaAkod29ya2luZyBjb3B5
KQpAQCAtODcsNiArODcsOCBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoQ2hh
bmdlRXZlbnRzKCk7CiAgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoSW5wdXRFdmVudHMoKTsKIAor
ICAgIFRleHREaXJlY3Rpb24gZGlyZWN0aW9uYWxpdHlJZmhhc0RpckF1dG9BdHRyaWJ1dGUoYm9v
bCYgaXNBdXRvKSBjb25zdDsKKwogcHJvdGVjdGVkOgogICAgIEhUTUxFbGVtZW50KGNvbnN0IFF1
YWxpZmllZE5hbWUmIHRhZ05hbWUsIERvY3VtZW50Kik7CiAKQEAgLTk1LDYgKzk3LDggQEAgcHJv
dGVjdGVkOgogICAgIHZpcnR1YWwgYm9vbCBtYXBUb0VudHJ5KGNvbnN0IFF1YWxpZmllZE5hbWUm
IGF0dHJOYW1lLCBNYXBwZWRBdHRyaWJ1dGVFbnRyeSYgcmVzdWx0KSBjb25zdDsKICAgICB2aXJ0
dWFsIHZvaWQgcGFyc2VNYXBwZWRBdHRyaWJ1dGUoQXR0cmlidXRlKik7CiAKKyAgICB2aXJ0dWFs
IHZvaWQgY2hpbGRyZW5DaGFuZ2VkKGJvb2wgY2hhbmdlZEJ5UGFyc2VyID0gZmFsc2UsIE5vZGUq
IGJlZm9yZUNoYW5nZSA9IDAsIE5vZGUqIGFmdGVyQ2hhbmdlID0gMCwgaW50IGNoaWxkQ291bnRE
ZWx0YSA9IDApOworCiBwcml2YXRlOgogICAgIHZpcnR1YWwgU3RyaW5nIG5vZGVOYW1lKCkgY29u
c3Q7CiAKQEAgLTEwNiw2ICsxMTAsMTIgQEAgcHJpdmF0ZToKICAgICBQYXNzUmVmUHRyPERvY3Vt
ZW50RnJhZ21lbnQ+IHRleHRUb0ZyYWdtZW50KGNvbnN0IFN0cmluZyYsIEV4Y2VwdGlvbkNvZGUm
KTsKIAogICAgIEhUTUxGb3JtRWxlbWVudCogc2hhZG93QW5jZXN0b3JPd25lckZvcm0oKTsKKwor
ICAgIHZvaWQgZGlyQXR0cmlidXRlQ2hhbmdlZChBdHRyaWJ1dGUqKTsKKyAgICB2b2lkIGFkanVz
dERpcmVjdGlvbmFsaXR5SWZOZWVkZWRBZnRlckNoaWxkQXR0cmlidXRlQ2hhbmdlZChFbGVtZW50
KiBjaGlsZCk7CisgICAgdm9pZCBjYWxjdWxhdGVBbmRBZGp1c3REaXJlY3Rpb25hbGl0eSgpOwor
ICAgIHZvaWQgYWRqdXN0RGlyZWN0aW9uYWxpdHlJZk5lZWRlZEFmdGVyQ2hpbGRyZW5DaGFuZ2Vk
KE5vZGUqIGJlZm9yZUNoYW5nZSwgaW50IGNoaWxkQ291bnREZWx0YSk7CisgICAgVGV4dERpcmVj
dGlvbiBkaXJlY3Rpb25hbGl0eShOb2RlKiogc3Ryb25nRGlyZWN0aW9uYWxpdHlUZXh0Tm9kZT0g
MCkgY29uc3Q7CiB9OwogCiBpbmxpbmUgSFRNTEVsZW1lbnQ6OkhUTUxFbGVtZW50KGNvbnN0IFF1
YWxpZmllZE5hbWUmIHRhZ05hbWUsIERvY3VtZW50KiBkb2N1bWVudCkKSW5kZXg6IExheW91dFRl
c3RzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cJKHJldmlz
aW9uIDc4MDA5KQorKysgTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0x
LDMgKzEsMjMgQEAKKzIwMTEtMDItMDggIFlhZWwgQWhhcm9uICA8eWFlbC5haGFyb25Abm9raWEu
Y29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFk
ZCBzdXBwb3J0IGZvciBkaXI9YXV0bworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9NTA5MTYKKworICAgICAgICAqIGZhc3QvZG9tL0hUTUxFbGVtZW50L2F0
dHItZGlyLWF1dG8tY2hhbmdlLWNoaWxkLW5vZGUtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAg
ICAgKiBmYXN0L2RvbS9IVE1MRWxlbWVudC9hdHRyLWRpci1hdXRvLWNoYW5nZS1jaGlsZC1ub2Rl
Lmh0bWw6IEFkZGVkLgorICAgICAgICAqIGZhc3QvZG9tL0hUTUxFbGVtZW50L2F0dHItZGlyLWF1
dG8tY2hhbmdlLXRleHQtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2RvbS9I
VE1MRWxlbWVudC9hdHRyLWRpci1hdXRvLWNoYW5nZS10ZXh0Lmh0bWw6IEFkZGVkLgorICAgICAg
ICAqIGZhc3QvZG9tL0hUTUxFbGVtZW50L2F0dHItZGlyLWF1dG8tY2hpbGRyZW4tZXhwZWN0ZWQu
dHh0OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2RvbS9IVE1MRWxlbWVudC9hdHRyLWRpci1hdXRv
LWNoaWxkcmVuLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGZhc3QvZG9tL0hUTUxFbGVtZW50L2F0
dHItZGlyLWF1dG8tZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2RvbS9IVE1M
RWxlbWVudC9hdHRyLWRpci1hdXRvLXJlbW92ZS1hZGQtY2hpbGRyZW4tZXhwZWN0ZWQudHh0OiBB
ZGRlZC4KKyAgICAgICAgKiBmYXN0L2RvbS9IVE1MRWxlbWVudC9hdHRyLWRpci1hdXRvLXJlbW92
ZS1hZGQtY2hpbGRyZW4uaHRtbDogQWRkZWQuCisgICAgICAgICogZmFzdC9kb20vSFRNTEVsZW1l
bnQvYXR0ci1kaXItYXV0by5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2RvbS9IVE1MRWxl
bWVudC9hdHRyLWRpci12YWx1ZS1jaGFuZ2UtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAg
KiBmYXN0L2RvbS9IVE1MRWxlbWVudC9hdHRyLWRpci12YWx1ZS1jaGFuZ2UuaHRtbDogQWRkZWQu
CisKIDIwMTEtMDItMDggIE1paGFpIFBhcnBhcml0YSAgPG1paGFpcEBjaHJvbWl1bS5vcmc+CiAK
ICAgICAgICAgVW5yZXZpZXdlZC4gUmVtb3ZlIGNocm9taXVtLWdwdS13aW4gYmFzZWxpbmUgdGhh
dCBoYXMgYSBmYWlsaW5nIHJlc3VsdCwKSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZG9tL0hUTUxF
bGVtZW50L2F0dHItZGlyLWF1dG8tY2hhbmdlLWNoaWxkLW5vZGUtZXhwZWN0ZWQudHh0Cj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZG9tL0hUTUxFbGVtZW50L2F0dHItZGlyLWF1dG8t
Y2hhbmdlLWNoaWxkLW5vZGUtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVz
dHMvZmFzdC9kb20vSFRNTEVsZW1lbnQvYXR0ci1kaXItYXV0by1jaGFuZ2UtY2hpbGQtbm9kZS1l
eHBlY3RlZC50eHQJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMTkgQEAKK1Rlc3QgdGhhdCBkaXJl
Y3Rpb25hbGl0eSBpcyByZS1ldmFsdWF0ZWQgd2hlbiBhbiBlbGVtZW50IHdpdGggZGlyPWF1dG8g
c2V0LCBoYXMgaXQncyBmaXJzdCBjaGlsZCBtb2RpZmllZC4KKworT24gc3VjY2VzcywgeW91IHdp
bGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09N
UExFVEUiLgorCisKKworCisKKworUEFTUyBkb2N1bWVudC5kZWZhdWx0Vmlldy5nZXRDb21wdXRl
ZFN0eWxlKGVsLCBudWxsKS5nZXRQcm9wZXJ0eVZhbHVlKCdib3JkZXItcmlnaHQtY29sb3InKSBp
cyAncmdiKDI1NSwgMCwgMCknCitQQVNTIGRvY3VtZW50LmRlZmF1bHRWaWV3LmdldENvbXB1dGVk
U3R5bGUoZWwsIG51bGwpLmdldFByb3BlcnR5VmFsdWUoJ2JvcmRlci1yaWdodC1jb2xvcicpIGlz
ICdyZ2IoMCwgMTI4LCAwKScKKworUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitU
RVNUIENPTVBMRVRFCisKKworCisKSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZG9tL0hUTUxFbGVt
ZW50L2F0dHItZGlyLWF1dG8tY2hhbmdlLWNoaWxkLW5vZGUuaHRtbAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBM
YXlvdXRUZXN0cy9mYXN0L2RvbS9IVE1MRWxlbWVudC9hdHRyLWRpci1hdXRvLWNoYW5nZS1jaGls
ZC1ub2RlLmh0bWwJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9mYXN0L2RvbS9IVE1MRWxl
bWVudC9hdHRyLWRpci1hdXRvLWNoYW5nZS1jaGlsZC1ub2RlLmh0bWwJKHJldmlzaW9uIDApCkBA
IC0wLDAgKzEsMzcgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKzxtZXRhIGh0
dHAtZXF1aXY9IkNvbnRlbnQtVHlwZSIgY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PXV0Zi04
Ij4KKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iLi4vLi4vanMvcmVzb3VyY2VzL2pzLXRl
c3Qtc3R5bGUuY3NzIj4KKzxzY3JpcHQgc3JjPSIuLi8uLi9qcy9yZXNvdXJjZXMvanMtdGVzdC1w
cmUuanMiPjwvc2NyaXB0PgorPHN0eWxlPgorLnRlc3REaXYgey13ZWJraXQtYm9yZGVyLXN0YXJ0
OiA1cHggc29saWQgZ3JlZW47IC13ZWJraXQtYm9yZGVyLWVuZDogNXB4IHNvbGlkIHJlZDsgfQor
PC9zdHlsZT4KKzwvaGVhZD4KKzxib2R5PgorPHAgaWQ9ImRlc2NyaXB0aW9uIj48L3A+Cis8ZGl2
IGlkPSJjb25zb2xlIj48L3A+Cis8ZGl2IGlkPSJyZXN1bHQiPjwvZGl2PgorCis8ZGl2IGlkPSJ0
ZXN0IiBkaXI9ImF1dG8iIGNsYXNzPSJ0ZXN0RGl2Ij48L2Rpdj4KKzxzY3JpcHQ+CisKK2Rlc2Ny
aXB0aW9uKCdUZXN0IHRoYXQgZGlyZWN0aW9uYWxpdHkgaXMgcmUtZXZhbHVhdGVkIHdoZW4gYW4g
ZWxlbWVudCB3aXRoIGRpcj1hdXRvIHNldCwgaGFzIGl0XCdzIGZpcnN0IGNoaWxkIG1vZGlmaWVk
LicpOworCit2YXIgZWwgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgidGVzdCIpOwordmFyIGNo
aWxkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2Iik7CitjaGlsZC5pbm5lckhUTUw9InRl
c3QiOworZWwuYXBwZW5kQ2hpbGQoY2hpbGQpOworc2hvdWxkQmUoImRvY3VtZW50LmRlZmF1bHRW
aWV3LmdldENvbXB1dGVkU3R5bGUoZWwsIG51bGwpLmdldFByb3BlcnR5VmFsdWUoJ2JvcmRlci1y
aWdodC1jb2xvcicpIiwgIidyZ2IoMjU1LCAwLCAwKSciKTsKKwordmFyIGNoaWxkMiA9IGRvY3Vt
ZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpOworY2hpbGQyLmlubmVySFRNTD0i157Xp9eV16gg15TX
qdedINei15HXqNeZ16oiOworZWwuaW5zZXJ0QmVmb3JlKGNoaWxkMiwgY2hpbGQpOworc2hvdWxk
QmUoImRvY3VtZW50LmRlZmF1bHRWaWV3LmdldENvbXB1dGVkU3R5bGUoZWwsIG51bGwpLmdldFBy
b3BlcnR5VmFsdWUoJ2JvcmRlci1yaWdodC1jb2xvcicpIiwgIidyZ2IoMCwgMTI4LCAwKSciKTsK
K2VsLnN0eWxlLmRpc3BsYXkgPSAibm9uZSI7CisKK3dpbmRvdy5zdWNjZXNzZnVsbHlQYXJzZWQg
PSB0cnVlOworPC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vanMvcmVzb3VyY2VzL2pzLXRl
c3QtcG9zdC5qcyI+PC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CkluZGV4OiBMYXlvdXRUZXN0
cy9mYXN0L2RvbS9IVE1MRWxlbWVudC9hdHRyLWRpci1hdXRvLWNoYW5nZS10ZXh0LWV4cGVjdGVk
LnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2RvbS9IVE1MRWxlbWVudC9hdHRy
LWRpci1hdXRvLWNoYW5nZS10ZXh0LWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKKysrIExheW91
dFRlc3RzL2Zhc3QvZG9tL0hUTUxFbGVtZW50L2F0dHItZGlyLWF1dG8tY2hhbmdlLXRleHQtZXhw
ZWN0ZWQudHh0CShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDE5IEBACitUZXN0IHRoYXQgZGlyZWN0
aW9uYWxpdHkgaXMgcmUtZXZhbHVhdGVkIHdoZW4gYW4gZWxlbWVudCB3aXRoIGRpcj1hdXRvIHNl
dCwgaGFzIHRoZSB0ZXh0IG9mIGl0cyBmaXJzdCBjaGlsZCBjaGFuZ2VkLgorCitPbiBzdWNjZXNz
LCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAi
VEVTVCBDT01QTEVURSIuCisKKworCisKKworCitQQVNTIGRvY3VtZW50LmRlZmF1bHRWaWV3Lmdl
dENvbXB1dGVkU3R5bGUoZWwsIG51bGwpLmdldFByb3BlcnR5VmFsdWUoJ2JvcmRlci1yaWdodC1j
b2xvcicpIGlzICdyZ2IoMjU1LCAwLCAwKScKK1BBU1MgZG9jdW1lbnQuZGVmYXVsdFZpZXcuZ2V0
Q29tcHV0ZWRTdHlsZShlbCwgbnVsbCkuZ2V0UHJvcGVydHlWYWx1ZSgnYm9yZGVyLXJpZ2h0LWNv
bG9yJykgaXMgJ3JnYigwLCAxMjgsIDApJworCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0
cnVlCisKK1RFU1QgQ09NUExFVEUKKworCisKKwpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9kb20v
SFRNTEVsZW1lbnQvYXR0ci1kaXItYXV0by1jaGFuZ2UtdGV4dC5odG1sCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IExheW91dFRlc3RzL2Zhc3QvZG9tL0hUTUxFbGVtZW50L2F0dHItZGlyLWF1dG8tY2hhbmdlLXRl
eHQuaHRtbAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2Zhc3QvZG9tL0hUTUxFbGVtZW50
L2F0dHItZGlyLWF1dG8tY2hhbmdlLXRleHQuaHRtbAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwz
MCBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorPG1ldGEgaHR0cC1lcXVpdj0i
Q29udGVudC1UeXBlIiBjb250ZW50PSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9dXRmLTgiPgorPGxpbmsg
cmVsPSJzdHlsZXNoZWV0IiBocmVmPSIuLi8uLi9qcy9yZXNvdXJjZXMvanMtdGVzdC1zdHlsZS5j
c3MiPgorPHNjcmlwdCBzcmM9Ii4uLy4uL2pzL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9z
Y3JpcHQ+Cis8c3R5bGU+CisudGVzdERpdiB7LXdlYmtpdC1ib3JkZXItc3RhcnQ6IDVweCBzb2xp
ZCBncmVlbjsgLXdlYmtpdC1ib3JkZXItZW5kOiA1cHggc29saWQgcmVkOyB9Cis8L3N0eWxlPgor
PC9oZWFkPgorPGJvZHk+Cis8cCBpZD0iZGVzY3JpcHRpb24iPjwvcD4KKzxkaXYgaWQ9ImNvbnNv
bGUiPjwvcD4KKzxkaXYgaWQ9InJlc3VsdCI+PC9kaXY+CisKKzxkaXYgaWQ9InRlc3QiIGRpcj0i
YXV0byIgY2xhc3M9InRlc3REaXYiPlRlc3QgdGVzdCB0ZXN0PC9kaXY+Cis8c2NyaXB0PgorCitk
ZXNjcmlwdGlvbignVGVzdCB0aGF0IGRpcmVjdGlvbmFsaXR5IGlzIHJlLWV2YWx1YXRlZCB3aGVu
IGFuIGVsZW1lbnQgd2l0aCBkaXI9YXV0byBzZXQsIGhhcyB0aGUgdGV4dCBvZiBpdHMgZmlyc3Qg
Y2hpbGQgY2hhbmdlZC4nKTsKKwordmFyIGVsID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInRl
c3QiKTsKK3Nob3VsZEJlKCJkb2N1bWVudC5kZWZhdWx0Vmlldy5nZXRDb21wdXRlZFN0eWxlKGVs
LCBudWxsKS5nZXRQcm9wZXJ0eVZhbHVlKCdib3JkZXItcmlnaHQtY29sb3InKSIsICIncmdiKDI1
NSwgMCwgMCknIik7CitlbC5pbm5lckhUTUwgPSAi157Xp9eV16gg15TXqdedINei15HXqNeZ16oi
Oworc2hvdWxkQmUoImRvY3VtZW50LmRlZmF1bHRWaWV3LmdldENvbXB1dGVkU3R5bGUoZWwsIG51
bGwpLmdldFByb3BlcnR5VmFsdWUoJ2JvcmRlci1yaWdodC1jb2xvcicpIiwgIidyZ2IoMCwgMTI4
LCAwKSciKTsKK2VsLnN0eWxlLmRpc3BsYXkgPSAibm9uZSI7Cit3aW5kb3cuc3VjY2Vzc2Z1bGx5
UGFyc2VkID0gdHJ1ZTsKKzwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uL2pzL3Jlc291cmNl
cy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpJbmRleDogTGF5
b3V0VGVzdHMvZmFzdC9kb20vSFRNTEVsZW1lbnQvYXR0ci1kaXItYXV0by1jaGlsZHJlbi1leHBl
Y3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9kb20vSFRNTEVsZW1lbnQv
YXR0ci1kaXItYXV0by1jaGlsZHJlbi1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCisrKyBMYXlv
dXRUZXN0cy9mYXN0L2RvbS9IVE1MRWxlbWVudC9hdHRyLWRpci1hdXRvLWNoaWxkcmVuLWV4cGVj
dGVkLnR4dAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwxMyBAQAorVGVzdCB0aGF0IGRpcmVjdGlv
bmFsaXR5IG9mIGFuIGVsZW1lbnQgd2l0aCBkaXI9YXV0byBpcyBub3QgYWZmZWN0ZWQgYnkgY2hp
bGRyZW4gdGhhdCBhbHNvIGhhdmUgdGhlIGRpciBhdHRyaWJ1dGUuCisKK09uIHN1Y2Nlc3MsIHlv
dSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNU
IENPTVBMRVRFIi4KKworCisKKworUEFTUyBkb2N1bWVudC5kZWZhdWx0Vmlldy5nZXRDb21wdXRl
ZFN0eWxlKGVsLCBudWxsKS5nZXRQcm9wZXJ0eVZhbHVlKCdib3JkZXItcmlnaHQtY29sb3InKSBp
cyAncmdiKDI1NSwgMCwgMCknCitQQVNTIGRvY3VtZW50LmRlZmF1bHRWaWV3LmdldENvbXB1dGVk
U3R5bGUoZWwsIG51bGwpLmdldFByb3BlcnR5VmFsdWUoJ2JvcmRlci1yaWdodC1jb2xvcicpIGlz
ICdyZ2IoMCwgMTI4LCAwKScKK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVT
VCBDT01QTEVURQorCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2RvbS9IVE1MRWxlbWVudC9hdHRy
LWRpci1hdXRvLWNoaWxkcmVuLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9k
b20vSFRNTEVsZW1lbnQvYXR0ci1kaXItYXV0by1jaGlsZHJlbi5odG1sCShyZXZpc2lvbiAwKQor
KysgTGF5b3V0VGVzdHMvZmFzdC9kb20vSFRNTEVsZW1lbnQvYXR0ci1kaXItYXV0by1jaGlsZHJl
bi5odG1sCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDMzIEBACis8IURPQ1RZUEUgaHRtbD4KKzxo
dG1sPgorPGhlYWQ+Cis8bWV0YSBodHRwLWVxdWl2PSJDb250ZW50LVR5cGUiIGNvbnRlbnQ9InRl
eHQvaHRtbDsgY2hhcnNldD11dGYtOCI+Cis8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4u
Ly4uL2pzL3Jlc291cmNlcy9qcy10ZXN0LXN0eWxlLmNzcyI+Cis8c2NyaXB0IHNyYz0iLi4vLi4v
anMvcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzxzdHlsZT4KKy50ZXN0RGl2
IHstd2Via2l0LWJvcmRlci1zdGFydDogNXB4IHNvbGlkIGdyZWVuOyAtd2Via2l0LWJvcmRlci1l
bmQ6IDVweCBzb2xpZCByZWQ7IH0KKzwvc3R5bGU+Cis8L2hlYWQ+Cis8Ym9keT4KKzxwIGlkPSJk
ZXNjcmlwdGlvbiI+PC9wPgorPGRpdiBpZD0iY29uc29sZSI+PC9wPgorPGRpdiBpZD0icmVzdWx0
Ij48L2Rpdj4KKzxkaXYgaWQ9InBhcmVudERpdiI+Cis8ZGl2IGlkPSJoYXMtZGlyLWF1dG8iIGRp
cj0iYXV0byIgY2xhc3M9InRlc3REaXYiPgorPGRpdiBpZD0iaGFzLWRpci1ydGwiIGRpcj0icnRs
IiBjbGFzcz0idGVzdERpdiI+157Xp9eV16gg15TXqdedINei15HXqNeZ16o8L2Rpdj4KK1Rlc3Qg
dGVzdCB0ZXN0PC9kaXY+CisKKzxzY3JpcHQ+CisKK2Rlc2NyaXB0aW9uKCdUZXN0IHRoYXQgZGly
ZWN0aW9uYWxpdHkgb2YgYW4gZWxlbWVudCB3aXRoIGRpcj1hdXRvIGlzIG5vdCBhZmZlY3RlZCBi
eSBjaGlsZHJlbiB0aGF0IGFsc28gaGF2ZSB0aGUgZGlyIGF0dHJpYnV0ZS4nKTsKKwordmFyIGVs
ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImhhcy1kaXItYXV0byIpOworc2hvdWxkQmUoImRv
Y3VtZW50LmRlZmF1bHRWaWV3LmdldENvbXB1dGVkU3R5bGUoZWwsIG51bGwpLmdldFByb3BlcnR5
VmFsdWUoJ2JvcmRlci1yaWdodC1jb2xvcicpIiwgIidyZ2IoMjU1LCAwLCAwKSciKTsKK2VsID0g
ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImhhcy1kaXItcnRsIik7CitzaG91bGRCZSgiZG9jdW1l
bnQuZGVmYXVsdFZpZXcuZ2V0Q29tcHV0ZWRTdHlsZShlbCwgbnVsbCkuZ2V0UHJvcGVydHlWYWx1
ZSgnYm9yZGVyLXJpZ2h0LWNvbG9yJykiLCAiJ3JnYigwLCAxMjgsIDApJyIpOworZG9jdW1lbnQu
Z2V0RWxlbWVudEJ5SWQoInBhcmVudERpdiIpLnN0eWxlLmRpc3BsYXkgPSAibm9uZSI7Cit3aW5k
b3cuc3VjY2Vzc2Z1bGx5UGFyc2VkID0gdHJ1ZTsKKzwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4u
Ly4uL2pzL3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgorPC9ib2R5PgorPC9o
dG1sPgpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9kb20vSFRNTEVsZW1lbnQvYXR0ci1kaXItYXV0
by1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9kb20vSFRNTEVs
ZW1lbnQvYXR0ci1kaXItYXV0by1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCisrKyBMYXlvdXRU
ZXN0cy9mYXN0L2RvbS9IVE1MRWxlbWVudC9hdHRyLWRpci1hdXRvLWV4cGVjdGVkLnR4dAkocmV2
aXNpb24gMCkKQEAgLTAsMCArMSwxOSBAQAorVGVzdCB0aGF0IGRpcmVjdGlvbmFsaXR5IG9mIGFu
IGVsZW1lbnQgd2l0aCBkaXI9YXV0byBzZXQgaXMgZGV0ZXJtaW5lZCBieSB0aGUgZmlyc3QgY2hp
bGQgdGV4dCBub2RlIG9mIHRoYXQgZWxlbWVudC4KKworT24gc3VjY2VzcywgeW91IHdpbGwgc2Vl
IGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUi
LgorCisKKworCisKK1BBU1MgZG9jdW1lbnQuZGVmYXVsdFZpZXcuZ2V0Q29tcHV0ZWRTdHlsZShl
bCwgbnVsbCkuZ2V0UHJvcGVydHlWYWx1ZSgnYm9yZGVyLXJpZ2h0LWNvbG9yJykgaXMgJ3JnYigy
NTUsIDAsIDApJworUEFTUyBkb2N1bWVudC5kZWZhdWx0Vmlldy5nZXRDb21wdXRlZFN0eWxlKGVs
LCBudWxsKS5nZXRQcm9wZXJ0eVZhbHVlKCdib3JkZXItcmlnaHQtY29sb3InKSBpcyAncmdiKDAs
IDEyOCwgMCknCitQQVNTIGRvY3VtZW50LmRlZmF1bHRWaWV3LmdldENvbXB1dGVkU3R5bGUoZWws
IG51bGwpLmdldFByb3BlcnR5VmFsdWUoJ2JvcmRlci1yaWdodC1jb2xvcicpIGlzICdyZ2IoMCwg
MTI4LCAwKScKKworUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBM
RVRFCisKKworCisKSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZG9tL0hUTUxFbGVtZW50L2F0dHIt
ZGlyLWF1dG8tcmVtb3ZlLWFkZC1jaGlsZHJlbi1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
TGF5b3V0VGVzdHMvZmFzdC9kb20vSFRNTEVsZW1lbnQvYXR0ci1kaXItYXV0by1yZW1vdmUtYWRk
LWNoaWxkcmVuLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2Zhc3Qv
ZG9tL0hUTUxFbGVtZW50L2F0dHItZGlyLWF1dG8tcmVtb3ZlLWFkZC1jaGlsZHJlbi1leHBlY3Rl
ZC50eHQJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMjMgQEAKK1Rlc3QgdGhhdCBkaXJlY3Rpb25h
bGl0eSBvZiBhbiBlbGVtZW50IHdpdGggZGlyPWF1dG8gc2V0IGlzIHJlLWV2YWx1YXRlZCB3aGVu
IHRoZSBmaXJzdCBjaGlsZCB0ZXh0IG5vZGUgb2YgdGhhdCBlbGVtZW50IGlzIGFkZGVkIG9yIHJl
bW92ZWQuIEFsc28gdGVzdCB0aGF0IGRpcmVjdGlvbmFsaXR5IGRvZXMgbm90IGNoYW5nZSBpZiB0
aGUgZWxlbWVudCBkb2VzIG5vdCBoYXZlIHRoZSBhdHRyaWJ1dGUgZGlyPWF1dG8uCisKK09uIHN1
Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2Vk
IGJ5ICJURVNUIENPTVBMRVRFIi4KKworCisKKworCitQQVNTIGRvY3VtZW50LmRlZmF1bHRWaWV3
LmdldENvbXB1dGVkU3R5bGUocGFyZW50MSwgbnVsbCkuZ2V0UHJvcGVydHlWYWx1ZSgnYm9yZGVy
LXJpZ2h0LWNvbG9yJykgaXMgJ3JnYigwLCAxMjgsIDApJworUEFTUyBkb2N1bWVudC5kZWZhdWx0
Vmlldy5nZXRDb21wdXRlZFN0eWxlKHBhcmVudDIsIG51bGwpLmdldFByb3BlcnR5VmFsdWUoJ2Jv
cmRlci1yaWdodC1jb2xvcicpIGlzICdyZ2IoMjU1LCAwLCAwKScKK1BBU1MgZG9jdW1lbnQuZGVm
YXVsdFZpZXcuZ2V0Q29tcHV0ZWRTdHlsZShwYXJlbnQzLCBudWxsKS5nZXRQcm9wZXJ0eVZhbHVl
KCdib3JkZXItcmlnaHQtY29sb3InKSBpcyAncmdiKDI1NSwgMCwgMCknCitQQVNTIGRvY3VtZW50
LmRlZmF1bHRWaWV3LmdldENvbXB1dGVkU3R5bGUocGFyZW50MSwgbnVsbCkuZ2V0UHJvcGVydHlW
YWx1ZSgnYm9yZGVyLXJpZ2h0LWNvbG9yJykgaXMgJ3JnYigyNTUsIDAsIDApJworUEFTUyBkb2N1
bWVudC5kZWZhdWx0Vmlldy5nZXRDb21wdXRlZFN0eWxlKHBhcmVudDIsIG51bGwpLmdldFByb3Bl
cnR5VmFsdWUoJ2JvcmRlci1yaWdodC1jb2xvcicpIGlzICdyZ2IoMCwgMTI4LCAwKScKK1BBU1Mg
ZG9jdW1lbnQuZGVmYXVsdFZpZXcuZ2V0Q29tcHV0ZWRTdHlsZShwYXJlbnQyLCBudWxsKS5nZXRQ
cm9wZXJ0eVZhbHVlKCdib3JkZXItcmlnaHQtY29sb3InKSBpcyAncmdiKDI1NSwgMCwgMCknCitQ
QVNTIGRvY3VtZW50LmRlZmF1bHRWaWV3LmdldENvbXB1dGVkU3R5bGUocGFyZW50MywgbnVsbCku
Z2V0UHJvcGVydHlWYWx1ZSgnYm9yZGVyLXJpZ2h0LWNvbG9yJykgaXMgJ3JnYigyNTUsIDAsIDAp
JworCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKwor
CisKKwpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9kb20vSFRNTEVsZW1lbnQvYXR0ci1kaXItYXV0
by1yZW1vdmUtYWRkLWNoaWxkcmVuLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFz
dC9kb20vSFRNTEVsZW1lbnQvYXR0ci1kaXItYXV0by1yZW1vdmUtYWRkLWNoaWxkcmVuLmh0bWwJ
KHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9mYXN0L2RvbS9IVE1MRWxlbWVudC9hdHRyLWRp
ci1hdXRvLXJlbW92ZS1hZGQtY2hpbGRyZW4uaHRtbAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw2
MCBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorPG1ldGEgaHR0cC1lcXVpdj0i
Q29udGVudC1UeXBlIiBjb250ZW50PSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9dXRmLTgiPgorPGxpbmsg
cmVsPSJzdHlsZXNoZWV0IiBocmVmPSIuLi8uLi9qcy9yZXNvdXJjZXMvanMtdGVzdC1zdHlsZS5j
c3MiPgorPHNjcmlwdCBzcmM9Ii4uLy4uL2pzL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9z
Y3JpcHQ+Cis8c3R5bGU+CisudGVzdERpdiB7LXdlYmtpdC1ib3JkZXItc3RhcnQ6IDVweCBzb2xp
ZCBncmVlbjsgLXdlYmtpdC1ib3JkZXItZW5kOiA1cHggc29saWQgcmVkOyB9Cis8L3N0eWxlPgor
PC9oZWFkPgorPGJvZHk+Cis8cCBpZD0iZGVzY3JpcHRpb24iPjwvcD4KKzxkaXYgaWQ9ImNvbnNv
bGUiPjwvcD4KKzxkaXYgaWQ9InJlc3VsdCI+PC9kaXY+Cis8ZGl2IGlkPSJwYXJlbnREaXYiPgor
PGRpdiBpZD0icGFyZW50MSIgZGlyPSJhdXRvIiBjbGFzcz0idGVzdERpdiI+Cis8ZGl2IGlkPSJj
aGlsZDEiPtee16fXldeoINeU16nXnSDXoteR16jXmdeqPC9kaXY+Cis8ZGl2IGlkPSJjaGlsZDIi
PlRlc3Q8L2Rpdj4KKzwvZGl2PgorPGRpdiBpZD0icGFyZW50MiIgZGlyPSJhdXRvIiBjbGFzcz0i
dGVzdERpdiI+Cis8ZGl2IGlkPSJjaGlsZDMiPlRlc3Q8L2Rpdj4KKzwvZGl2PgorPGRpdiBpZD0i
cGFyZW50MyIgY2xhc3M9InRlc3REaXYiPgorPGRpdiBpZD0iY2hpbGQ0Ij7Xnten15XXqCDXlNep
150g16LXkdeo15nXqjwvZGl2PgorPC9kaXY+Cis8L2Rpdj4KKzxzY3JpcHQ+CisKK2Rlc2NyaXB0
aW9uKCdUZXN0IHRoYXQgZGlyZWN0aW9uYWxpdHkgb2YgYW4gZWxlbWVudCB3aXRoIGRpcj1hdXRv
IHNldCBpcyByZS1ldmFsdWF0ZWQgd2hlbiB0aGUgZmlyc3QgY2hpbGQgdGV4dCBub2RlIG9mIHRo
YXQgZWxlbWVudCBpcyBhZGRlZCBvciByZW1vdmVkLiBBbHNvIHRlc3QgdGhhdCBkaXJlY3Rpb25h
bGl0eSBkb2VzIG5vdCBjaGFuZ2UgaWYgdGhlIGVsZW1lbnQgZG9lcyBub3QgaGF2ZSB0aGUgYXR0
cmlidXRlIGRpcj1hdXRvLicpOworCit2YXIgcGFyZW50MSA9IGRvY3VtZW50LmdldEVsZW1lbnRC
eUlkKCJwYXJlbnQxIik7Cit2YXIgcGFyZW50MiA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJw
YXJlbnQyIik7Cit2YXIgcGFyZW50MyA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJwYXJlbnQz
Iik7CisKK3ZhciBjaGlsZDEgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiY2hpbGQxIik7Cit2
YXIgY2hpbGQzID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImNoaWxkMyIpOwordmFyIGNoaWxk
NCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJjaGlsZDQiKTsKKworc2hvdWxkQmUoImRvY3Vt
ZW50LmRlZmF1bHRWaWV3LmdldENvbXB1dGVkU3R5bGUocGFyZW50MSwgbnVsbCkuZ2V0UHJvcGVy
dHlWYWx1ZSgnYm9yZGVyLXJpZ2h0LWNvbG9yJykiLCAiJ3JnYigwLCAxMjgsIDApJyIpOworc2hv
dWxkQmUoImRvY3VtZW50LmRlZmF1bHRWaWV3LmdldENvbXB1dGVkU3R5bGUocGFyZW50MiwgbnVs
bCkuZ2V0UHJvcGVydHlWYWx1ZSgnYm9yZGVyLXJpZ2h0LWNvbG9yJykiLCAiJ3JnYigyNTUsIDAs
IDApJyIpOworc2hvdWxkQmUoImRvY3VtZW50LmRlZmF1bHRWaWV3LmdldENvbXB1dGVkU3R5bGUo
cGFyZW50MywgbnVsbCkuZ2V0UHJvcGVydHlWYWx1ZSgnYm9yZGVyLXJpZ2h0LWNvbG9yJykiLCAi
J3JnYigyNTUsIDAsIDApJyIpOworCitwYXJlbnQxLnJlbW92ZUNoaWxkKGNoaWxkMSkKK3Nob3Vs
ZEJlKCJkb2N1bWVudC5kZWZhdWx0Vmlldy5nZXRDb21wdXRlZFN0eWxlKHBhcmVudDEsIG51bGwp
LmdldFByb3BlcnR5VmFsdWUoJ2JvcmRlci1yaWdodC1jb2xvcicpIiwgIidyZ2IoMjU1LCAwLCAw
KSciKTsKKworcGFyZW50Mi5pbnNlcnRCZWZvcmUoY2hpbGQxLCBjaGlsZDMpOworc2hvdWxkQmUo
ImRvY3VtZW50LmRlZmF1bHRWaWV3LmdldENvbXB1dGVkU3R5bGUocGFyZW50MiwgbnVsbCkuZ2V0
UHJvcGVydHlWYWx1ZSgnYm9yZGVyLXJpZ2h0LWNvbG9yJykiLCAiJ3JnYigwLCAxMjgsIDApJyIp
OworCitwYXJlbnQyLnJlbW92ZUNoaWxkKGNoaWxkMSkKK3Nob3VsZEJlKCJkb2N1bWVudC5kZWZh
dWx0Vmlldy5nZXRDb21wdXRlZFN0eWxlKHBhcmVudDIsIG51bGwpLmdldFByb3BlcnR5VmFsdWUo
J2JvcmRlci1yaWdodC1jb2xvcicpIiwgIidyZ2IoMjU1LCAwLCAwKSciKTsKKworcGFyZW50My5p
bnNlcnRCZWZvcmUoY2hpbGQxLCBjaGlsZDQpOworc2hvdWxkQmUoImRvY3VtZW50LmRlZmF1bHRW
aWV3LmdldENvbXB1dGVkU3R5bGUocGFyZW50MywgbnVsbCkuZ2V0UHJvcGVydHlWYWx1ZSgnYm9y
ZGVyLXJpZ2h0LWNvbG9yJykiLCAiJ3JnYigyNTUsIDAsIDApJyIpOworCitkb2N1bWVudC5nZXRF
bGVtZW50QnlJZCgicGFyZW50RGl2Iikuc3R5bGUuZGlzcGxheSA9ICJub25lIjsKK3dpbmRvdy5z
dWNjZXNzZnVsbHlQYXJzZWQgPSB0cnVlOworPC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4v
anMvcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+
CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2RvbS9IVE1MRWxlbWVudC9hdHRyLWRpci1hdXRvLmh0
bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9kb20vSFRNTEVsZW1lbnQvYXR0ci1k
aXItYXV0by5odG1sCShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvZmFzdC9kb20vSFRNTEVs
ZW1lbnQvYXR0ci1kaXItYXV0by5odG1sCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDM4IEBACis8
IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8bWV0YSBodHRwLWVxdWl2PSJDb250ZW50
LVR5cGUiIGNvbnRlbnQ9InRleHQvaHRtbDsgY2hhcnNldD11dGYtOCI+Cis8bGluayByZWw9InN0
eWxlc2hlZXQiIGhyZWY9Ii4uLy4uL2pzL3Jlc291cmNlcy9qcy10ZXN0LXN0eWxlLmNzcyI+Cis8
c2NyaXB0IHNyYz0iLi4vLi4vanMvcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4K
KzxzdHlsZT4KKy50ZXN0RGl2IHstd2Via2l0LWJvcmRlci1zdGFydDogNXB4IHNvbGlkIGdyZWVu
OyAtd2Via2l0LWJvcmRlci1lbmQ6IDVweCBzb2xpZCByZWQ7IH0KKzwvc3R5bGU+Cis8L2hlYWQ+
Cis8Ym9keT4KKzxwIGlkPSJkZXNjcmlwdGlvbiI+PC9wPgorPGRpdiBpZD0iY29uc29sZSI+PC9w
PgorPGRpdiBpZD0icmVzdWx0Ij48L2Rpdj4KKzxkaXYgaWQ9InBhcmVudERpdiI+CitUZXN0IHRo
YXQgdGhlIGRpcmVjdGlvbiBvZiBlbmdsaXNoIHRleHQgaXMgbGVmdC10by1yaWdodC4KKzxkaXYg
aWQ9ImxlZnQtdG8tcmlnaHQiIGRpcj0iYXV0byIgY2xhc3M9InRlc3REaXYiPlRlc3QgdGVzdCB0
ZXN0PC9kaXY+CitUZXN0IHRoYXQgdGhlIGRpcmVjdGlvbiBvZiBoZWJyZXcgdGV4dCBpcyByaWdo
dC10by1sZWZ0LgorPGRpdiBpZD0icmlnaHQtdG8tbGVmdDEiIGRpcj0iYXV0byIgY2xhc3M9InRl
c3REaXYiPtee16fXldeoINeU16nXnSDXoteR16jXmdeqPC9kaXY+CitUZXN0IHRoYXQgJz8nIGRv
ZXMgbm90IGFmZmVjdCB0aGUgZGlyZWN0aW9uYWxpdHkuCis8ZGl2IGlkPSJyaWdodC10by1sZWZ0
MiIgZGlyPSJhdXRvIiBjbGFzcz0idGVzdERpdiI+PHNwYW4+Pz88L3NwYW4+157Xp9eV16gg15TX
qdedINei15HXqNeZ16o8c3Bhbj4/Pzwvc3Bhbj48L2Rpdj4KKzwvZGl2PgorPHNjcmlwdD4KKwor
ZGVzY3JpcHRpb24oJ1Rlc3QgdGhhdCBkaXJlY3Rpb25hbGl0eSBvZiBhbiBlbGVtZW50IHdpdGgg
ZGlyPWF1dG8gc2V0IGlzIGRldGVybWluZWQgYnkgdGhlIGZpcnN0IGNoaWxkIHRleHQgbm9kZSBv
ZiB0aGF0IGVsZW1lbnQuJyk7CisKK3ZhciBlbCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJs
ZWZ0LXRvLXJpZ2h0Iik7CitzaG91bGRCZSgiZG9jdW1lbnQuZGVmYXVsdFZpZXcuZ2V0Q29tcHV0
ZWRTdHlsZShlbCwgbnVsbCkuZ2V0UHJvcGVydHlWYWx1ZSgnYm9yZGVyLXJpZ2h0LWNvbG9yJyki
LCAiJ3JnYigyNTUsIDAsIDApJyIpOworZWwgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgicmln
aHQtdG8tbGVmdDEiKTsKK3Nob3VsZEJlKCJkb2N1bWVudC5kZWZhdWx0Vmlldy5nZXRDb21wdXRl
ZFN0eWxlKGVsLCBudWxsKS5nZXRQcm9wZXJ0eVZhbHVlKCdib3JkZXItcmlnaHQtY29sb3InKSIs
ICIncmdiKDAsIDEyOCwgMCknIik7CitlbCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJyaWdo
dC10by1sZWZ0MiIpOworc2hvdWxkQmUoImRvY3VtZW50LmRlZmF1bHRWaWV3LmdldENvbXB1dGVk
U3R5bGUoZWwsIG51bGwpLmdldFByb3BlcnR5VmFsdWUoJ2JvcmRlci1yaWdodC1jb2xvcicpIiwg
IidyZ2IoMCwgMTI4LCAwKSciKTsKK2RvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJwYXJlbnREaXYi
KS5zdHlsZS5kaXNwbGF5ID0gIm5vbmUiOword2luZG93LnN1Y2Nlc3NmdWxseVBhcnNlZCA9IHRy
dWU7Cis8L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9qcy9yZXNvdXJjZXMvanMtdGVzdC1w
b3N0LmpzIj48L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KSW5kZXg6IExheW91dFRlc3RzL2Zh
c3QvZG9tL0hUTUxFbGVtZW50L2F0dHItZGlyLXZhbHVlLWNoYW5nZS1leHBlY3RlZC50eHQKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9kb20vSFRNTEVsZW1lbnQvYXR0ci1kaXItdmFs
dWUtY2hhbmdlLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2Zhc3Qv
ZG9tL0hUTUxFbGVtZW50L2F0dHItZGlyLXZhbHVlLWNoYW5nZS1leHBlY3RlZC50eHQJKHJldmlz
aW9uIDApCkBAIC0wLDAgKzEsMjQgQEAKK1Rlc3QgdGhhdCBkaXJlY3Rpb25hbGl0eSBpcyByZS1l
dmFsdWF0ZWQgd2hlbiBhbiBlbGVtZW50IHdpdGggZGlyPWF1dG8gc2V0LCBoYXMgaXRzIGRpciBh
dHRyaWJ1dGUgY2hhbmdlZC4KKworT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9m
ICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgorCisKKworCisK
KworUEFTUyBkb2N1bWVudC5kZWZhdWx0Vmlldy5nZXRDb21wdXRlZFN0eWxlKGVsLCBudWxsKS5n
ZXRQcm9wZXJ0eVZhbHVlKCdib3JkZXItcmlnaHQtY29sb3InKSBpcyAncmdiKDAsIDEyOCwgMCkn
CitQQVNTIGRvY3VtZW50LmRlZmF1bHRWaWV3LmdldENvbXB1dGVkU3R5bGUoY2hpbGQyLCBudWxs
KS5nZXRQcm9wZXJ0eVZhbHVlKCdib3JkZXItcmlnaHQtY29sb3InKSBpcyAncmdiKDAsIDEyOCwg
MCknCitQQVNTIGRvY3VtZW50LmRlZmF1bHRWaWV3LmdldENvbXB1dGVkU3R5bGUoZWwsIG51bGwp
LmdldFByb3BlcnR5VmFsdWUoJ2JvcmRlci1yaWdodC1jb2xvcicpIGlzICdyZ2IoMjU1LCAwLCAw
KScKK1BBU1MgZG9jdW1lbnQuZGVmYXVsdFZpZXcuZ2V0Q29tcHV0ZWRTdHlsZShjaGlsZDIsIG51
bGwpLmdldFByb3BlcnR5VmFsdWUoJ2JvcmRlci1yaWdodC1jb2xvcicpIGlzICdyZ2IoMCwgMTI4
LCAwKScKK1BBU1MgZG9jdW1lbnQuZGVmYXVsdFZpZXcuZ2V0Q29tcHV0ZWRTdHlsZShjaGlsZDIs
IG51bGwpLmdldFByb3BlcnR5VmFsdWUoJ2JvcmRlci1yaWdodC1jb2xvcicpIGlzICdyZ2IoMjU1
LCAwLCAwKScKK1BBU1MgZG9jdW1lbnQuZGVmYXVsdFZpZXcuZ2V0Q29tcHV0ZWRTdHlsZShlbCwg
bnVsbCkuZ2V0UHJvcGVydHlWYWx1ZSgnYm9yZGVyLXJpZ2h0LWNvbG9yJykgaXMgJ3JnYigwLCAx
MjgsIDApJworUEFTUyBkb2N1bWVudC5kZWZhdWx0Vmlldy5nZXRDb21wdXRlZFN0eWxlKGNoaWxk
MiwgbnVsbCkuZ2V0UHJvcGVydHlWYWx1ZSgnYm9yZGVyLXJpZ2h0LWNvbG9yJykgaXMgJ3JnYigy
NTUsIDAsIDApJworCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09N
UExFVEUKKworCisKKwpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9kb20vSFRNTEVsZW1lbnQvYXR0
ci1kaXItdmFsdWUtY2hhbmdlLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9k
b20vSFRNTEVsZW1lbnQvYXR0ci1kaXItdmFsdWUtY2hhbmdlLmh0bWwJKHJldmlzaW9uIDApCisr
KyBMYXlvdXRUZXN0cy9mYXN0L2RvbS9IVE1MRWxlbWVudC9hdHRyLWRpci12YWx1ZS1jaGFuZ2Uu
aHRtbAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw1MCBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRt
bD4KKzxoZWFkPgorPG1ldGEgaHR0cC1lcXVpdj0iQ29udGVudC1UeXBlIiBjb250ZW50PSJ0ZXh0
L2h0bWw7IGNoYXJzZXQ9dXRmLTgiPgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIuLi8u
Li9qcy9yZXNvdXJjZXMvanMtdGVzdC1zdHlsZS5jc3MiPgorPHNjcmlwdCBzcmM9Ii4uLy4uL2pz
L3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8c3R5bGU+CisudGVzdERpdiB7
LXdlYmtpdC1ib3JkZXItc3RhcnQ6IDVweCBzb2xpZCBncmVlbjsgLXdlYmtpdC1ib3JkZXItZW5k
OiA1cHggc29saWQgcmVkOyB9Cis8L3N0eWxlPgorPC9oZWFkPgorPGJvZHk+Cis8cCBpZD0iZGVz
Y3JpcHRpb24iPjwvcD4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwvcD4KKzxkaXYgaWQ9InJlc3VsdCI+
PC9kaXY+CisKKzxkaXYgaWQ9InRlc3QiIGRpcj0iYXV0byIgY2xhc3M9InRlc3REaXYiPjwvZGl2
PgorPHNjcmlwdD4KKworZGVzY3JpcHRpb24oJ1Rlc3QgdGhhdCBkaXJlY3Rpb25hbGl0eSBpcyBy
ZS1ldmFsdWF0ZWQgd2hlbiBhbiBlbGVtZW50IHdpdGggZGlyPWF1dG8gc2V0LCBoYXMgaXRzIGRp
ciBhdHRyaWJ1dGUgY2hhbmdlZC4nKTsKKwordmFyIGVsID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5
SWQoInRlc3QiKTsKK3ZhciBjaGlsZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpOwor
Y2hpbGQuaW5uZXJIVE1MPSLXnten15XXqCDXlNep150g16LXkdeo15nXqiI7CitlbC5hcHBlbmRD
aGlsZChjaGlsZCk7Cit2YXIgY2hpbGQyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2Iik7
CitjaGlsZDIuaW5uZXJIVE1MID0gItee16fXldeoINeU16nXnSDXoteR16jXmdeqIjsKK2NoaWxk
Mi5zZXRBdHRyaWJ1dGUoImRpciIsICJhdXRvIik7CitjaGlsZDIuc2V0QXR0cmlidXRlKCJjbGFz
cyIsICJ0ZXN0RGl2Iik7CitjaGlsZC5hcHBlbmRDaGlsZChjaGlsZDIpOworc2hvdWxkQmUoImRv
Y3VtZW50LmRlZmF1bHRWaWV3LmdldENvbXB1dGVkU3R5bGUoZWwsIG51bGwpLmdldFByb3BlcnR5
VmFsdWUoJ2JvcmRlci1yaWdodC1jb2xvcicpIiwgIidyZ2IoMCwgMTI4LCAwKSciKTsKK3Nob3Vs
ZEJlKCJkb2N1bWVudC5kZWZhdWx0Vmlldy5nZXRDb21wdXRlZFN0eWxlKGNoaWxkMiwgbnVsbCku
Z2V0UHJvcGVydHlWYWx1ZSgnYm9yZGVyLXJpZ2h0LWNvbG9yJykiLCAiJ3JnYigwLCAxMjgsIDAp
JyIpOworCitlbC5zZXRBdHRyaWJ1dGUoImRpciIsICJsdHIiKTsKK3Nob3VsZEJlKCJkb2N1bWVu
dC5kZWZhdWx0Vmlldy5nZXRDb21wdXRlZFN0eWxlKGVsLCBudWxsKS5nZXRQcm9wZXJ0eVZhbHVl
KCdib3JkZXItcmlnaHQtY29sb3InKSIsICIncmdiKDI1NSwgMCwgMCknIik7CitzaG91bGRCZSgi
ZG9jdW1lbnQuZGVmYXVsdFZpZXcuZ2V0Q29tcHV0ZWRTdHlsZShjaGlsZDIsIG51bGwpLmdldFBy
b3BlcnR5VmFsdWUoJ2JvcmRlci1yaWdodC1jb2xvcicpIiwgIidyZ2IoMCwgMTI4LCAwKSciKTsK
KworY2hpbGQyLmlubmVySFRNTCA9ICJUZXN0IjsKK3Nob3VsZEJlKCJkb2N1bWVudC5kZWZhdWx0
Vmlldy5nZXRDb21wdXRlZFN0eWxlKGNoaWxkMiwgbnVsbCkuZ2V0UHJvcGVydHlWYWx1ZSgnYm9y
ZGVyLXJpZ2h0LWNvbG9yJykiLCAiJ3JnYigyNTUsIDAsIDApJyIpOworCitlbC5zZXRBdHRyaWJ1
dGUoImRpciIsICJhdXRvIik7CitzaG91bGRCZSgiZG9jdW1lbnQuZGVmYXVsdFZpZXcuZ2V0Q29t
cHV0ZWRTdHlsZShlbCwgbnVsbCkuZ2V0UHJvcGVydHlWYWx1ZSgnYm9yZGVyLXJpZ2h0LWNvbG9y
JykiLCAiJ3JnYigwLCAxMjgsIDApJyIpOworc2hvdWxkQmUoImRvY3VtZW50LmRlZmF1bHRWaWV3
LmdldENvbXB1dGVkU3R5bGUoY2hpbGQyLCBudWxsKS5nZXRQcm9wZXJ0eVZhbHVlKCdib3JkZXIt
cmlnaHQtY29sb3InKSIsICIncmdiKDI1NSwgMCwgMCknIik7CisKK2VsLnN0eWxlLmRpc3BsYXkg
PSAibm9uZSI7CisKK3dpbmRvdy5zdWNjZXNzZnVsbHlQYXJzZWQgPSB0cnVlOworPC9zY3JpcHQ+
Cis8c2NyaXB0IHNyYz0iLi4vLi4vanMvcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3Jp
cHQ+Cis8L2JvZHk+Cis8L2h0bWw+Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>81841</attachid>
            <date>2011-02-09 11:37:17 -0800</date>
            <delta_ts>2011-02-17 06:45:23 -0800</delta_ts>
            <desc>Patch.</desc>
            <filename>50916.patch</filename>
            <type>text/plain</type>
            <size>39644</size>
            <attacher name="Yael">yael</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gNzgwNzgpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMjEgQEAK
KzIwMTEtMDItMDggIFlhZWwgQWhhcm9uICA8eWFlbC5haGFyb25Abm9raWEuY29tPgorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZCBzdXBwb3J0IGZv
ciBkaXI9YXV0bworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9NTA5MTYKKworICAgICAgICBDaGFuZ2UgZGVmYXVsdFdyaXRpbmdEaXJlY3Rpb24oKSB0byBy
ZXR1cm4gaWYgdGhlIHdyaXRpbmcgZGlyZWN0aW9uCisgICAgICAgIHdhcyBkZXRlcm1pbmVkIGZy
b20gYSBsZXR0ZXIgd2l0aCBzdHJvbmcgZGlyZWN0aW9uYWxpdHkgb3Igbm90LgorCisgICAgICAg
ICogSmF2YVNjcmlwdENvcmUuZXhwOgorICAgICAgICAqIEphdmFTY3JpcHRDb3JlLm9yZGVyOgor
ICAgICAgICAqIHd0Zi90ZXh0L1N0cmluZ0ltcGwuY3BwOgorICAgICAgICAoV1RGOjpTdHJpbmdJ
bXBsOjpkZWZhdWx0V3JpdGluZ0RpcmVjdGlvbik6CisgICAgICAgICogd3RmL3RleHQvU3RyaW5n
SW1wbC5oOgorICAgICAgICAqIHd0Zi90ZXh0L1dURlN0cmluZy5oOgorICAgICAgICAoV1RGOjpT
dHJpbmc6OmRlZmF1bHRXcml0aW5nRGlyZWN0aW9uKToKKwogMjAxMS0wMi0wOSAgUGV0ZXIgVmFy
Z2EgIDxwdmFyZ2FAd2Via2l0Lm9yZz4KIAogICAgICAgICBSZXZpZXdlZCBieSBHYXZpbiBCYXJy
YWNsb3VnaC4KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS5leHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLmV4cAko
cmV2aXNpb24gNzgwNzgpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUu
ZXhwCSh3b3JraW5nIGNvcHkpCkBAIC0zMzUsNyArMzM1LDcgQEAgX19aTjNXVEYxMFN0cmluZ0lt
cGwxOHNpbXBsaWZ5V2hpdGVTcGFjZQogX19aTjNXVEYxMFN0cmluZ0ltcGwxOWNoYXJhY3RlclN0
YXJ0aW5nQXRFagogX19aTjNXVEYxMFN0cmluZ0ltcGwxOWNyZWF0ZVVuaW5pdGlhbGl6ZWRFalJQ
dAogX19aTjNXVEYxMFN0cmluZ0ltcGwyMmNvbnRhaW5zT25seVdoaXRlc3BhY2VFdgotX19aTjNX
VEYxMFN0cmluZ0ltcGwyM2RlZmF1bHRXcml0aW5nRGlyZWN0aW9uRXYKK19fWk4zV1RGMTBTdHJp
bmdJbXBsMjNkZWZhdWx0V3JpdGluZ0RpcmVjdGlvbkVQYgogX19aTjNXVEYxMFN0cmluZ0ltcGwy
M3JldmVyc2VGaW5kSWdub3JpbmdDYXNlRVBTMF9qCiBfX1pOM1dURjEwU3RyaW5nSW1wbDM3Y3Jl
YXRlU3RyaXBwaW5nTnVsbENoYXJhY3RlcnNTbG93Q2FzZUVQS3RqCiBfX1pOM1dURjEwU3RyaW5n
SW1wbDRmaW5kRVBGYnRFagpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRD
b3JlLm9yZGVyCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0
Q29yZS5vcmRlcgkocmV2aXNpb24gNzgwNzgpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2
YVNjcmlwdENvcmUub3JkZXIJKHdvcmtpbmcgY29weSkKQEAgLTE0MjcsNyArMTQyNyw3IEBAIF9f
Wk43V2ViQ29yZTEwU3RyaW5nSW1wbDExcmV2ZXJzZUZpbmRFdGkKIF9fWk4zV1RGMjN3YWl0Rm9y
VGhyZWFkQ29tcGxldGlvbkVqUFB2CiBfX1pOM1dURjE0RmFzdE1hbGxvY1pvbmUxMHN0YXRpc3Rp
Y3NFUDE0X21hbGxvY196b25lX3RQMTltYWxsb2Nfc3RhdGlzdGljc190CiBfX1pOSzdXZWJDb3Jl
NlN0cmluZzE4c2ltcGxpZnlXaGl0ZVNwYWNlRXYKLV9fWk43V2ViQ29yZTEwU3RyaW5nSW1wbDIz
ZGVmYXVsdFdyaXRpbmdEaXJlY3Rpb25FdgorX19aTjNXVEYxMFN0cmluZ0ltcGwyM2RlZmF1bHRX
cml0aW5nRGlyZWN0aW9uRVBiCiBfX1pOM0pTQ0wyMGRhdGVQcm90b0Z1bmNTZXRUaW1lRVBOU185
RXhlY1N0YXRlRVBOU184SlNPYmplY3RFTlNfN0pTVmFsdWVFUktOU183QXJnTGlzdEUKIF9fWk4z
SlNDTDIxZGF0ZVByb3RvRnVuY0dldE1vbnRoRVBOU185RXhlY1N0YXRlRVBOU184SlNPYmplY3RF
TlNfN0pTVmFsdWVFUktOU183QXJnTGlzdEUKIF9fWk5LM0pTQzEyRGF0ZUluc3RhbmNlMjZjYWxj
dWxhdGVHcmVnb3JpYW5EYXRlVGltZUVQTlNfOUV4ZWNTdGF0ZUUKSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS93dGYvdGV4dC9TdHJpbmdJbXBsLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvd3RmL3RleHQvU3RyaW5nSW1wbC5jcHAJKHJldmlzaW9uIDc4MDc4KQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL3d0Zi90ZXh0L1N0cmluZ0ltcGwuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0xMDA1LDE1ICsxMDA1LDIzIEBAIGJvb2wgZXF1YWxJZ25vcmluZ051bGxpdHko
U3RyaW5nSW1wbCogYSwKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKLVdURjo6VW5pY29kZTo6RGly
ZWN0aW9uIFN0cmluZ0ltcGw6OmRlZmF1bHRXcml0aW5nRGlyZWN0aW9uKCkKK1dURjo6VW5pY29k
ZTo6RGlyZWN0aW9uIFN0cmluZ0ltcGw6OmRlZmF1bHRXcml0aW5nRGlyZWN0aW9uKGJvb2wqIGhh
c1N0cm9uZ0RpcmVjdGlvbmFsaXR5KQogewogICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBt
X2xlbmd0aDsgKytpKSB7CiAgICAgICAgIFdURjo6VW5pY29kZTo6RGlyZWN0aW9uIGNoYXJEaXJl
Y3Rpb24gPSBXVEY6OlVuaWNvZGU6OmRpcmVjdGlvbihtX2RhdGFbaV0pOwotICAgICAgICBpZiAo
Y2hhckRpcmVjdGlvbiA9PSBXVEY6OlVuaWNvZGU6OkxlZnRUb1JpZ2h0KQorICAgICAgICBpZiAo
Y2hhckRpcmVjdGlvbiA9PSBXVEY6OlVuaWNvZGU6OkxlZnRUb1JpZ2h0KSB7CisgICAgICAgICAg
ICBpZiAoaGFzU3Ryb25nRGlyZWN0aW9uYWxpdHkpCisgICAgICAgICAgICAgICAgKmhhc1N0cm9u
Z0RpcmVjdGlvbmFsaXR5ID0gdHJ1ZTsKICAgICAgICAgICAgIHJldHVybiBXVEY6OlVuaWNvZGU6
OkxlZnRUb1JpZ2h0OwotICAgICAgICBpZiAoY2hhckRpcmVjdGlvbiA9PSBXVEY6OlVuaWNvZGU6
OlJpZ2h0VG9MZWZ0IHx8IGNoYXJEaXJlY3Rpb24gPT0gV1RGOjpVbmljb2RlOjpSaWdodFRvTGVm
dEFyYWJpYykKKyAgICAgICAgfQorICAgICAgICBpZiAoY2hhckRpcmVjdGlvbiA9PSBXVEY6OlVu
aWNvZGU6OlJpZ2h0VG9MZWZ0IHx8IGNoYXJEaXJlY3Rpb24gPT0gV1RGOjpVbmljb2RlOjpSaWdo
dFRvTGVmdEFyYWJpYykgeworICAgICAgICAgICAgaWYgKGhhc1N0cm9uZ0RpcmVjdGlvbmFsaXR5
KQorICAgICAgICAgICAgICAgICpoYXNTdHJvbmdEaXJlY3Rpb25hbGl0eSA9IHRydWU7CiAgICAg
ICAgICAgICByZXR1cm4gV1RGOjpVbmljb2RlOjpSaWdodFRvTGVmdDsKKyAgICAgICAgfQogICAg
IH0KKyAgICBpZiAoaGFzU3Ryb25nRGlyZWN0aW9uYWxpdHkpCisgICAgICAgICpoYXNTdHJvbmdE
aXJlY3Rpb25hbGl0eSA9IGZhbHNlOwogICAgIHJldHVybiBXVEY6OlVuaWNvZGU6OkxlZnRUb1Jp
Z2h0OwogfQogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvd3RmL3RleHQvU3RyaW5nSW1w
bC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS93dGYvdGV4dC9TdHJpbmdJ
bXBsLmgJKHJldmlzaW9uIDc4MDc4KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3d0Zi90ZXh0
L1N0cmluZ0ltcGwuaAkod29ya2luZyBjb3B5KQpAQCAtMzE2LDcgKzMxNiw3IEBAIHB1YmxpYzoK
ICAgICBQYXNzUmVmUHRyPFN0cmluZ0ltcGw+IHJlcGxhY2UoU3RyaW5nSW1wbCosIFN0cmluZ0lt
cGwqKTsKICAgICBQYXNzUmVmUHRyPFN0cmluZ0ltcGw+IHJlcGxhY2UodW5zaWduZWQgaW5kZXgs
IHVuc2lnbmVkIGxlbiwgU3RyaW5nSW1wbCopOwogCi0gICAgV1RGOjpVbmljb2RlOjpEaXJlY3Rp
b24gZGVmYXVsdFdyaXRpbmdEaXJlY3Rpb24oKTsKKyAgICBXVEY6OlVuaWNvZGU6OkRpcmVjdGlv
biBkZWZhdWx0V3JpdGluZ0RpcmVjdGlvbihib29sKiBoYXNTdHJvbmdEaXJlY3Rpb25hbGl0eSA9
IDApOwogCiAjaWYgUExBVEZPUk0oQ0YpCiAgICAgQ0ZTdHJpbmdSZWYgY3JlYXRlQ0ZTdHJpbmco
KTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS93dGYvdGV4dC9XVEZTdHJpbmcuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvd3RmL3RleHQvV1RGU3RyaW5nLmgJKHJl
dmlzaW9uIDc4MDc4KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3d0Zi90ZXh0L1dURlN0cmlu
Zy5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMjYsNyArMzI2LDE0IEBAIHB1YmxpYzoKICAgICBzdGF0
aWMgU3RyaW5nIGZyb21VVEY4V2l0aExhdGluMUZhbGxiYWNrKGNvbnN0IGNoYXIqLCBzaXplX3Qp
OwogICAgIAogICAgIC8vIERldGVybWluZXMgdGhlIHdyaXRpbmcgZGlyZWN0aW9uIHVzaW5nIHRo
ZSBVbmljb2RlIEJpZGkgQWxnb3JpdGhtIHJ1bGVzIFAyIGFuZCBQMy4KLSAgICBXVEY6OlVuaWNv
ZGU6OkRpcmVjdGlvbiBkZWZhdWx0V3JpdGluZ0RpcmVjdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1f
aW1wbCA/IG1faW1wbC0+ZGVmYXVsdFdyaXRpbmdEaXJlY3Rpb24oKSA6IFdURjo6VW5pY29kZTo6
TGVmdFRvUmlnaHQ7IH0KKyAgICBXVEY6OlVuaWNvZGU6OkRpcmVjdGlvbiBkZWZhdWx0V3JpdGlu
Z0RpcmVjdGlvbihib29sKiBoYXNTdHJvbmdEaXJlY3Rpb25hbGl0eSA9IDApIGNvbnN0CisgICAg
eworICAgICAgICBpZiAobV9pbXBsKQorICAgICAgICAgICAgcmV0dXJuIG1faW1wbC0+ZGVmYXVs
dFdyaXRpbmdEaXJlY3Rpb24oaGFzU3Ryb25nRGlyZWN0aW9uYWxpdHkpOworICAgICAgICBpZiAo
aGFzU3Ryb25nRGlyZWN0aW9uYWxpdHkpCisgICAgICAgICAgICAqaGFzU3Ryb25nRGlyZWN0aW9u
YWxpdHkgPSBmYWxzZTsKKyAgICAgICAgcmV0dXJuIFdURjo6VW5pY29kZTo6TGVmdFRvUmlnaHQ7
CisgICAgfQogCiAgICAgYm9vbCBjb250YWluc09ubHlBU0NJSSgpIGNvbnN0IHsgcmV0dXJuIGNo
YXJhY3RlcnNBcmVBbGxBU0NJSShjaGFyYWN0ZXJzKCksIGxlbmd0aCgpKTsgfQogICAgIGJvb2wg
Y29udGFpbnNPbmx5TGF0aW4xKCkgY29uc3QgeyByZXR1cm4gY2hhcmFjdGVyc0FyZUFsbExhdGlu
MShjaGFyYWN0ZXJzKCksIGxlbmd0aCgpKTsgfQpJbmRleDogU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gNzgw
NzgpCisrKyBTb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyAr
MSw1MiBAQAorMjAxMS0wMi0wOCAgWWFlbCBBaGFyb24gIDx5YWVsLmFoYXJvbkBub2tpYS5jb20+
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkIHN1
cHBvcnQgZm9yIGRpcj1hdXRvCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD01MDkxNgorCisgICAgICAgIFdoZW4gYW4gZWxlbWVudCBoYXMgZGlyIGF0dHJp
YnV0ZSB3aXRoIHZhbHVlICJhdXRvIiwgY2FsbCBkZWZhdWx0V3JpdGluZ01vZGUKKyAgICAgICAg
dG8gZmluZCBpdHMgZGlyZWN0aW9uYWxpdHkuCisgICAgICAgIEFkZGVkIGEgZmxhZyBTZWxmT3JB
bmNlc3Rvckhhc0RpckF1dG9GbGFnLCBhbmQgYWRkZWQgaG9va3MgaW4gdGhlIERPTSB0byBzZXQK
KyAgICAgICAgYW5kIGNoZWNrIHRoaXMgZmxhZy4gVGhpcyBmbGFnIGlzIHNldCBvbiBldmVyeSBu
b2RlIGJldHdlZW4gYW4gZWxlbWVudCB3aXRoCisgICAgICAgIGRpcj1hdXRvIGF0dHJpYnV0ZSBh
bmQgaXRzIGZpcnN0IHRleHQgbm9kZS4gQ2hhbmdlcyBpbiB0aGUgRE9NIGJldHdlZW4gdGhvc2UK
KyAgICAgICAgZWxlbWVudHMgd2lsbCB0cmlnZ2VyIHJlLWV2YWx1YXRpbmcgdGhlIGRpcmVjdGlv
bmFsaXR5LCBidXQgY2hhbmdlZCBub3QKKyAgICAgICAgYmV0d2VlbiB0aG9zZSBlbGVtZW50IGRv
IG5vdCBuZWVkIHRvIGJlIGNvbmNlcm5lZC4KKyAgICAgICAgVGhlIERPTSBob29rcyB3ZXJlIGFk
ZGVkIHRvIGNoaWxkcmVuQ2hhbmdlZCwgYW5kIHRvIHBhcnNlTWFwcGVkQXR0cmlidXRlLgorICAg
ICAgICBUaGUgZGlyZWN0aW9uYWxpdHkgaXMgZXZhbHVhdGVkIHdoZW4gY2hpbGRyZW4gYXJlIGFk
ZGVkLCBidXQgbm90IHdoZW4gdGhleSBhcmUKKyAgICAgICAgcmVtb3ZlZC4gT25jZSB0aGV5IGFy
ZSByZS1hZGRlZCwgdGhlIGRpcmVjdGlvbmFsaXR5IHdpbGwgYmUgZXZhbHVhdGVkLgorCisgICAg
ICAgIEFkZGVkIDIgc3RhdGljIENTU011dGFibGVTdHlsZURlY2xhcmF0aW9ucyB0byBiZSB1c2Vk
IGZvciBlbGVtZW50cyB3aXRoIGRpcj1hdXRvLgorICAgICAgICBXZSBjYW5ub3QgdXNlZCB0aGUg
bWFwcGVkIGRlY2xhcmF0aW9uLCBiZWNhdXNlIGl0IGNhbiB0YWtlIG9ubHkgb25lIHZhbHVlLgor
CisgICAgICAgIFRlc3RzOiBmYXN0L2RvbS9IVE1MRWxlbWVudC9hdHRyLWRpci1hdXRvLWNoYW5n
ZS1jaGlsZC1ub2RlLmh0bWwKKyAgICAgICAgICAgICAgIGZhc3QvZG9tL0hUTUxFbGVtZW50L2F0
dHItZGlyLWF1dG8tY2hhbmdlLXRleHQuaHRtbAorICAgICAgICAgICAgICAgZmFzdC9kb20vSFRN
TEVsZW1lbnQvYXR0ci1kaXItYXV0by1jaGlsZHJlbi5odG1sCisgICAgICAgICAgICAgICBmYXN0
L2RvbS9IVE1MRWxlbWVudC9hdHRyLWRpci1hdXRvLXJlbW92ZS1hZGQtY2hpbGRyZW4uaHRtbAor
ICAgICAgICAgICAgICAgZmFzdC9kb20vSFRNTEVsZW1lbnQvYXR0ci1kaXItYXV0by5odG1sCisg
ICAgICAgICAgICAgICBmYXN0L2RvbS9IVE1MRWxlbWVudC9hdHRyLWRpci12YWx1ZS1jaGFuZ2Uu
aHRtbAorCisgICAgICAgICogY3NzL0NTU1N0eWxlU2VsZWN0b3IuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6bGVmdFRvUmlnaHREZWNsYXJhdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpyaWdodFRv
TGVmdERlY2xhcmF0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1N0eWxlU2VsZWN0b3I6OmNh
blNoYXJlU3R5bGVXaXRoRWxlbWVudCk6CisgICAgICAgIChXZWJDb3JlOjpDU1NTdHlsZVNlbGVj
dG9yOjpzdHlsZUZvckVsZW1lbnQpOgorICAgICAgICAqIGRvbS9Ob2RlLmg6CisgICAgICAgIChX
ZWJDb3JlOjpOb2RlOjpzZWxmT3JBbmNlc3Rvckhhc0RpckF1dG9BdHRyaWJ1dGUpOgorICAgICAg
ICAoV2ViQ29yZTo6Tm9kZTo6c2V0U2VsZk9yQW5jZXN0b3JIYXNEaXJBdXRvQXR0cmlidXRlKToK
KyAgICAgICAgKiBodG1sL0hUTUxFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxF
bGVtZW50OjptYXBUb0VudHJ5KToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxFbGVtZW50OjpwYXJz
ZU1hcHBlZEF0dHJpYnV0ZSk6CisgICAgICAgIChXZWJDb3JlOjpzZXRIYXNEaXJBdXRvRmxhZ1Jl
Y3Vyc2l2ZWx5KToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxFbGVtZW50OjpjaGlsZHJlbkNoYW5n
ZWQpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTEVsZW1lbnQ6OmRpcmVjdGlvbmFsaXR5SWZoYXNE
aXJBdXRvQXR0cmlidXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxFbGVtZW50OjpkaXJlY3Rp
b25hbGl0eSk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MRWxlbWVudDo6ZGlyQXR0cmlidXRlQ2hh
bmdlZCk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MRWxlbWVudDo6YWRqdXN0RGlyZWN0aW9uYWxp
dHlJZk5lZWRlZEFmdGVyQ2hpbGRBdHRyaWJ1dGVDaGFuZ2VkKToKKyAgICAgICAgKFdlYkNvcmU6
OkhUTUxFbGVtZW50OjpjYWxjdWxhdGVBbmRBZGp1c3REaXJlY3Rpb25hbGl0eSk6CisgICAgICAg
IChXZWJDb3JlOjpIVE1MRWxlbWVudDo6YWRqdXN0RGlyZWN0aW9uYWxpdHlJZk5lZWRlZEFmdGVy
Q2hpbGRyZW5DaGFuZ2VkKToKKyAgICAgICAgKiBodG1sL0hUTUxFbGVtZW50Lmg6CisKIDIwMTEt
MDItMDggIERpbWl0cmkgR2xhemtvdiAgPGRnbGF6a292QGNocm9taXVtLm9yZz4KIAogICAgICAg
ICBSZXZpZXdlZCBieSBEYXJpbiBBZGxlci4KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2Nzcy9DU1NT
dHlsZVNlbGVjdG9yLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9jc3MvQ1NTU3R5
bGVTZWxlY3Rvci5jcHAJKHJldmlzaW9uIDc4MDc4KQorKysgU291cmNlL1dlYkNvcmUvY3NzL0NT
U1N0eWxlU2VsZWN0b3IuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00NzMsNiArNDczLDI2IEBAIHN0
YXRpYyBjb25zdCBNZWRpYVF1ZXJ5RXZhbHVhdG9yJiBwcmludEUKICAgICByZXR1cm4gc3RhdGlj
UHJpbnRFdmFsOwogfQogCitzdGF0aWMgQ1NTTXV0YWJsZVN0eWxlRGVjbGFyYXRpb24qIGxlZnRU
b1JpZ2h0RGVjbGFyYXRpb24oKQoreworICAgIERFRklORV9TVEFUSUNfTE9DQUwoUmVmUHRyPENT
U011dGFibGVTdHlsZURlY2xhcmF0aW9uPiwgbGVmdFRvUmlnaHREZWNsLCAoQ1NTTXV0YWJsZVN0
eWxlRGVjbGFyYXRpb246OmNyZWF0ZSgpKSk7CisgICAgaWYgKCFsZWZ0VG9SaWdodERlY2wtPmxl
bmd0aCgpKSB7CisgICAgICAgIGxlZnRUb1JpZ2h0RGVjbC0+c2V0UHJvcGVydHkoQ1NTUHJvcGVy
dHlEaXJlY3Rpb24sICJsdHIiLCBmYWxzZSwgZmFsc2UpOworICAgICAgICBsZWZ0VG9SaWdodERl
Y2wtPnNldFN0cmljdFBhcnNpbmcoZmFsc2UpOworICAgIH0KKyAgICByZXR1cm4gbGVmdFRvUmln
aHREZWNsLmdldCgpOworfQorCitzdGF0aWMgQ1NTTXV0YWJsZVN0eWxlRGVjbGFyYXRpb24qIHJp
Z2h0VG9MZWZ0RGVjbGFyYXRpb24oKQoreworICAgIERFRklORV9TVEFUSUNfTE9DQUwoUmVmUHRy
PENTU011dGFibGVTdHlsZURlY2xhcmF0aW9uPiwgcmlnaHRUb0xlZnREZWNsLCAoQ1NTTXV0YWJs
ZVN0eWxlRGVjbGFyYXRpb246OmNyZWF0ZSgpKSk7CisgICAgaWYgKCFyaWdodFRvTGVmdERlY2wt
Pmxlbmd0aCgpKSB7CisgICAgICAgIHJpZ2h0VG9MZWZ0RGVjbC0+c2V0UHJvcGVydHkoQ1NTUHJv
cGVydHlEaXJlY3Rpb24sICJydGwiLCBmYWxzZSwgZmFsc2UpOworICAgICAgICByaWdodFRvTGVm
dERlY2wtPnNldFN0cmljdFBhcnNpbmcoZmFsc2UpOworICAgIH0KKyAgICByZXR1cm4gcmlnaHRU
b0xlZnREZWNsLmdldCgpOworfQorCiBDU1NTdHlsZVNlbGVjdG9yOjpDU1NTdHlsZVNlbGVjdG9y
KERvY3VtZW50KiBkb2N1bWVudCwgU3R5bGVTaGVldExpc3QqIHN0eWxlU2hlZXRzLCBDU1NTdHls
ZVNoZWV0KiBtYXBwZWRFbGVtZW50U2hlZXQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIENTU1N0eWxlU2hlZXQqIHBhZ2VVc2VyU2hlZXQsIGNvbnN0IFZlY3RvcjxSZWZQdHI8
Q1NTU3R5bGVTaGVldD4gPiogcGFnZUdyb3VwVXNlclNoZWV0cywKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgYm9vbCBzdHJpY3RQYXJzaW5nLCBib29sIG1hdGNoQXV0aG9yQW5k
VXNlclN0eWxlcykKQEAgLTExNDIsNiArMTE2Miw5IEBAIGJvb2wgQ1NTU3R5bGVTZWxlY3Rvcjo6
Y2FuU2hhcmVTdHlsZVdpdGgKICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAjZW5kaWYK
IAorICAgICAgICAgICAgaWYgKGVxdWFsSWdub3JpbmdDYXNlKHMtPmZhc3RHZXRBdHRyaWJ1dGUo
ZGlyQXR0ciksICJhdXRvIikgfHwgZXF1YWxJZ25vcmluZ0Nhc2UobV9lbGVtZW50LT5mYXN0R2V0
QXR0cmlidXRlKGRpckF0dHIpLCAiYXV0byIpKQorICAgICAgICAgICAgICAgIHJldHVybiBmYWxz
ZTsKKwogICAgICAgICAgICAgYm9vbCBjbGFzc2VzTWF0Y2ggPSB0cnVlOwogICAgICAgICAgICAg
aWYgKHMtPmhhc0NsYXNzKCkpIHsKICAgICAgICAgICAgICAgICBjb25zdCBBdG9taWNTdHJpbmcm
IGNsYXNzMSA9IG1fZWxlbWVudC0+ZmFzdEdldEF0dHJpYnV0ZShjbGFzc0F0dHIpOwpAQCAtMTQ0
OSw2ICsxNDcyLDEyIEBAIFBhc3NSZWZQdHI8UmVuZGVyU3R5bGU+IENTU1N0eWxlU2VsZWN0b3IK
ICAgICAgICAgICAgICAgICAgICAgICAgIGFkZE1hdGNoZWREZWNsYXJhdGlvbihtX2FkZGl0aW9u
YWxBdHRyaWJ1dGVTdHlsZURlY2xzW2ldKTsKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAg
ICB9CisgICAgICAgICAgICBpZiAobV9zdHlsZWRFbGVtZW50LT5pc0hUTUxFbGVtZW50KCkpIHsK
KyAgICAgICAgICAgICAgICBib29sIGlzQXV0bzsKKyAgICAgICAgICAgICAgICBUZXh0RGlyZWN0
aW9uIHRleHREaXJlY3Rpb24gPSB0b0hUTUxFbGVtZW50KG1fc3R5bGVkRWxlbWVudCktPmRpcmVj
dGlvbmFsaXR5SWZoYXNEaXJBdXRvQXR0cmlidXRlKGlzQXV0byk7CisgICAgICAgICAgICAgICAg
aWYgKGlzQXV0bykKKyAgICAgICAgICAgICAgICAgICAgYWRkTWF0Y2hlZERlY2xhcmF0aW9uKHRl
eHREaXJlY3Rpb24gPT0gTFRSID8gbGVmdFRvUmlnaHREZWNsYXJhdGlvbigpIDogcmlnaHRUb0xl
ZnREZWNsYXJhdGlvbigpKTsKKyAgICAgICAgICAgIH0KICAgICAgICAgfQogICAgIAogICAgICAg
ICAvLyA2LiBDaGVjayB0aGUgcnVsZXMgaW4gYXV0aG9yIHNoZWV0cyBuZXh0LgpJbmRleDogU291
cmNlL1dlYkNvcmUvZG9tL05vZGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9kb20v
Tm9kZS5oCShyZXZpc2lvbiA3ODA3OCkKKysrIFNvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlLmgJKHdv
cmtpbmcgY29weSkKQEAgLTIxNyw2ICsyMTcsOSBAQCBwdWJsaWM6CiAgICAgRWxlbWVudCogc2hh
ZG93SG9zdCgpIGNvbnN0OwogICAgIHZvaWQgc2V0U2hhZG93SG9zdChFbGVtZW50Kik7CiAKKyAg
ICBib29sIHNlbGZPckFuY2VzdG9ySGFzRGlyQXV0b0F0dHJpYnV0ZSgpIGNvbnN0IHsgcmV0dXJu
IGdldEZsYWcoU2VsZk9yQW5jZXN0b3JIYXNEaXJBdXRvRmxhZyk7IH0KKyAgICB2b2lkIHNldFNl
bGZPckFuY2VzdG9ySGFzRGlyQXV0b0F0dHJpYnV0ZShib29sIGZsYWcpIHsgc2V0RmxhZyhmbGFn
LCBTZWxmT3JBbmNlc3Rvckhhc0RpckF1dG9GbGFnKTsgfQorCiAgICAgLy8gUmV0dXJucyB0aGUg
ZW5jbG9zaW5nIGV2ZW50IHBhcmVudCBub2RlIChvciBzZWxmKSB0aGF0LCB3aGVuIGNsaWNrZWQs
IHdvdWxkIHRyaWdnZXIgYSBuYXZpZ2F0aW9uLgogICAgIE5vZGUqIGVuY2xvc2luZ0xpbmtFdmVu
dFBhcmVudE9yU2VsZigpOwogCkBAIC02MDMsNiArNjA2LDggQEAgcHJpdmF0ZToKIAogICAgICAg
ICBTdHlsZUNoYW5nZU1hc2sgPSAxIDw8IG5vZGVTdHlsZUNoYW5nZVNoaWZ0IHwgMSA8PCAobm9k
ZVN0eWxlQ2hhbmdlU2hpZnQgKyAxKSwKIAorICAgICAgICBTZWxmT3JBbmNlc3Rvckhhc0RpckF1
dG9GbGFnID0gMSA8PCAyNywKKwogI2lmIEVOQUJMRShTVkcpCiAgICAgICAgIERlZmF1bHROb2Rl
RmxhZ3MgPSBJc1BhcnNpbmdDaGlsZHJlbkZpbmlzaGVkRmxhZyB8IElzU3R5bGVBdHRyaWJ1dGVW
YWxpZEZsYWcgfCBBcmVTVkdBdHRyaWJ1dGVzVmFsaWRGbGFnCiAjZWxzZQpJbmRleDogU291cmNl
L1dlYkNvcmUvaHRtbC9IVE1MRWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvaHRtbC9IVE1MRWxlbWVudC5jcHAJKHJldmlzaW9uIDc4MDc4KQorKysgU291cmNlL1dlYkNv
cmUvaHRtbC9IVE1MRWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEyNCw3ICsxMjQsNyBA
QCBib29sIEhUTUxFbGVtZW50OjptYXBUb0VudHJ5KGNvbnN0IFF1YWxpCiAgICAgfQogICAgIGlm
IChhdHRyTmFtZSA9PSBkaXJBdHRyKSB7CiAgICAgICAgIHJlc3VsdCA9IGhhc0xvY2FsTmFtZShi
ZG9UYWcpID8gZUJETyA6IGVVbml2ZXJzYWw7Ci0gICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAg
ICAgcmV0dXJuIHRydWU7CiAgICAgfQogCiAgICAgcmV0dXJuIFN0eWxlZEVsZW1lbnQ6Om1hcFRv
RW50cnkoYXR0ck5hbWUsIHJlc3VsdCk7CkBAIC0xNTUsNyArMTU1LDkgQEAgdm9pZCBIVE1MRWxl
bWVudDo6cGFyc2VNYXBwZWRBdHRyaWJ1dGUoQQogICAgIH0gZWxzZSBpZiAoYXR0ci0+bmFtZSgp
ID09IGxhbmdBdHRyKSB7CiAgICAgICAgIC8vIEZJWE1FOiBJbXBsZW1lbnQKICAgICB9IGVsc2Ug
aWYgKGF0dHItPm5hbWUoKSA9PSBkaXJBdHRyKSB7Ci0gICAgICAgIGFkZENTU1Byb3BlcnR5KGF0
dHIsIENTU1Byb3BlcnR5RGlyZWN0aW9uLCBhdHRyLT52YWx1ZSgpKTsKKyAgICAgICAgaWYgKCFl
cXVhbElnbm9yaW5nQ2FzZShhdHRyLT52YWx1ZSgpLCAiYXV0byIpKQorICAgICAgICAgICAgYWRk
Q1NTUHJvcGVydHkoYXR0ciwgQ1NTUHJvcGVydHlEaXJlY3Rpb24sIGF0dHItPnZhbHVlKCkpOwor
ICAgICAgICBkaXJBdHRyaWJ1dGVDaGFuZ2VkKGF0dHIpOwogICAgICAgICBhZGRDU1NQcm9wZXJ0
eShhdHRyLCBDU1NQcm9wZXJ0eVVuaWNvZGVCaWRpLCBoYXNMb2NhbE5hbWUoYmRvVGFnKSA/IENT
U1ZhbHVlQmlkaU92ZXJyaWRlIDogQ1NTVmFsdWVFbWJlZCk7CiAgICAgfSBlbHNlIGlmIChhdHRy
LT5uYW1lKCkgPT0gZHJhZ2dhYmxlQXR0cikgewogICAgICAgICBjb25zdCBBdG9taWNTdHJpbmcm
IHZhbHVlID0gYXR0ci0+dmFsdWUoKTsKQEAgLTg3OCw2ICs4ODAsMTQxIEBAIHZvaWQgSFRNTEVs
ZW1lbnQ6OmRpc3BhdGNoSW5wdXRFdmVudHMoKQogICAgICAgICBvd25lckZvcm0tPmRpc3BhdGNo
Rm9ybUlucHV0KCk7CiB9CiAKK3N0YXRpYyB2b2lkIHNldEhhc0RpckF1dG9GbGFnUmVjdXJzaXZl
bHkoTm9kZSogZmlyc3ROb2RlLCBib29sIGZsYWcsIE5vZGUqIGxhc3ROb2RlID0gMCkKK3sKKyAg
ICBmaXJzdE5vZGUtPnNldFNlbGZPckFuY2VzdG9ySGFzRGlyQXV0b0F0dHJpYnV0ZShmbGFnKTsK
KworICAgIE5vZGUqIG5vZGUgPSBmaXJzdE5vZGUtPmZpcnN0Q2hpbGQoKTsKKworICAgIHdoaWxl
IChub2RlKSB7CisgICAgICAgIGlmIChub2RlLT5zZWxmT3JBbmNlc3Rvckhhc0RpckF1dG9BdHRy
aWJ1dGUoKSA9PSBmbGFnKQorICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAgIGlmIChub2Rl
LT5pc0hUTUxFbGVtZW50KCkgJiYgdG9FbGVtZW50KG5vZGUpLT5oYXNBdHRyaWJ1dGUoZGlyQXR0
cikpIHsKKyAgICAgICAgICAgIGlmIChub2RlID09IGxhc3ROb2RlKQorICAgICAgICAgICAgICAg
IHJldHVybjsKKyAgICAgICAgICAgIG5vZGUgPSBub2RlLT50cmF2ZXJzZU5leHRTaWJsaW5nKGZp
cnN0Tm9kZSk7CisgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgfQorICAgICAgICBub2Rl
LT5zZXRTZWxmT3JBbmNlc3Rvckhhc0RpckF1dG9BdHRyaWJ1dGUoZmxhZyk7CisgICAgICAgIGlm
IChub2RlID09IGxhc3ROb2RlKQorICAgICAgICAgICAgcmV0dXJuOworICAgICAgICBub2RlID0g
bm9kZS0+dHJhdmVyc2VOZXh0Tm9kZShmaXJzdE5vZGUpOworICAgIH0KK30KKwordm9pZCBIVE1M
RWxlbWVudDo6Y2hpbGRyZW5DaGFuZ2VkKGJvb2wgY2hhbmdlZEJ5UGFyc2VyLCBOb2RlKiBiZWZv
cmVDaGFuZ2UsIE5vZGUqIGFmdGVyQ2hhbmdlLCBpbnQgY2hpbGRDb3VudERlbHRhKQoreworICAg
IFN0eWxlZEVsZW1lbnQ6OmNoaWxkcmVuQ2hhbmdlZChjaGFuZ2VkQnlQYXJzZXIsIGJlZm9yZUNo
YW5nZSwgYWZ0ZXJDaGFuZ2UsIGNoaWxkQ291bnREZWx0YSk7CisgICAgYWRqdXN0RGlyZWN0aW9u
YWxpdHlJZk5lZWRlZEFmdGVyQ2hpbGRyZW5DaGFuZ2VkKGJlZm9yZUNoYW5nZSwgY2hpbGRDb3Vu
dERlbHRhKTsKK30KKworVGV4dERpcmVjdGlvbiBIVE1MRWxlbWVudDo6ZGlyZWN0aW9uYWxpdHlJ
Zmhhc0RpckF1dG9BdHRyaWJ1dGUoYm9vbCYgaXNBdXRvKSBjb25zdAoreworICAgIGlmICghKHNl
bGZPckFuY2VzdG9ySGFzRGlyQXV0b0F0dHJpYnV0ZSgpICYmIGVxdWFsSWdub3JpbmdDYXNlKGdl
dEF0dHJpYnV0ZShkaXJBdHRyKSwgImF1dG8iKSkpIHsKKyAgICAgICAgaXNBdXRvID0gZmFsc2U7
CisgICAgICAgIHJldHVybiBMVFI7CisgICAgfQorCisgICAgaXNBdXRvID0gdHJ1ZTsKKyAgICBy
ZXR1cm4gZGlyZWN0aW9uYWxpdHkoKTsKK30KKworVGV4dERpcmVjdGlvbiBIVE1MRWxlbWVudDo6
ZGlyZWN0aW9uYWxpdHkoTm9kZSoqIHN0cm9uZ0RpcmVjdGlvbmFsaXR5VGV4dE5vZGUpIGNvbnN0
Cit7CisgICAgTm9kZSogbm9kZSA9IGZpcnN0Q2hpbGQoKTsKKyAgICB3aGlsZSAobm9kZSkgewor
ICAgICAgICAvLyBTa2lwIGJkaSwgc2NyaXB0IGFuZCBzdHlsZSBlbGVtZW50cworICAgICAgICBp
ZiAoZXF1YWxJZ25vcmluZ0Nhc2Uobm9kZS0+bm9kZU5hbWUoKSwgImJkaSIpIHx8IG5vZGUtPmhh
c1RhZ05hbWUoc2NyaXB0VGFnKSB8fCBub2RlLT5oYXNUYWdOYW1lKHN0eWxlVGFnKSkgeworICAg
ICAgICAgICAgbm9kZSA9IG5vZGUtPnRyYXZlcnNlTmV4dFNpYmxpbmcodGhpcyk7CisgICAgICAg
ICAgICBjb250aW51ZTsKKyAgICAgICAgfQorCisgICAgICAgIC8vIFNraXAgZWxlbWVudHMgd2l0
aCB2YWxpZCBkaXIgYXR0cmlidXRlCisgICAgICAgIGlmIChub2RlLT5pc0VsZW1lbnROb2RlKCkp
IHsKKyAgICAgICAgICAgIEF0b21pY1N0cmluZyBkaXJBdHRyaWJ1dGVWYWx1ZSA9IHRvRWxlbWVu
dChub2RlKS0+ZmFzdEdldEF0dHJpYnV0ZShkaXJBdHRyKTsKKyAgICAgICAgICAgIGlmIChlcXVh
bElnbm9yaW5nQ2FzZShkaXJBdHRyaWJ1dGVWYWx1ZSwgInJ0bCIpIHx8IGVxdWFsSWdub3JpbmdD
YXNlKGRpckF0dHJpYnV0ZVZhbHVlLCAibHRyIikgfHwgZXF1YWxJZ25vcmluZ0Nhc2UoZGlyQXR0
cmlidXRlVmFsdWUsICJhdXRvIikpIHsKKyAgICAgICAgICAgICAgICBub2RlID0gbm9kZS0+dHJh
dmVyc2VOZXh0U2libGluZyh0aGlzKTsKKyAgICAgICAgICAgICAgICBjb250aW51ZTsKKyAgICAg
ICAgICAgIH0KKyAgICAgICAgfQorCisgICAgICAgIGlmIChub2RlLT5pc1RleHROb2RlKCkpIHsK
KyAgICAgICAgICAgIGJvb2wgaGFzU3Ryb25nRGlyZWN0aW9uYWxpdHk7CisgICAgICAgICAgICBX
VEY6OlVuaWNvZGU6OkRpcmVjdGlvbiB0ZXh0RGlyZWN0aW9uID0gbm9kZS0+dGV4dENvbnRlbnQo
dHJ1ZSkuZGVmYXVsdFdyaXRpbmdEaXJlY3Rpb24oJmhhc1N0cm9uZ0RpcmVjdGlvbmFsaXR5KTsK
KyAgICAgICAgICAgIGlmIChoYXNTdHJvbmdEaXJlY3Rpb25hbGl0eSkgeworICAgICAgICAgICAg
ICAgIGlmIChzdHJvbmdEaXJlY3Rpb25hbGl0eVRleHROb2RlKQorICAgICAgICAgICAgICAgICAg
ICAqc3Ryb25nRGlyZWN0aW9uYWxpdHlUZXh0Tm9kZSA9IG5vZGU7CisgICAgICAgICAgICAgICAg
cmV0dXJuICh0ZXh0RGlyZWN0aW9uID09IFdURjo6VW5pY29kZTo6TGVmdFRvUmlnaHQpID8gTFRS
IDogUlRMOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIG5vZGUgPSBub2RlLT50
cmF2ZXJzZU5leHROb2RlKHRoaXMpOworICAgIH0KKyAgICBpZiAoc3Ryb25nRGlyZWN0aW9uYWxp
dHlUZXh0Tm9kZSkKKyAgICAgICAgKnN0cm9uZ0RpcmVjdGlvbmFsaXR5VGV4dE5vZGUgPSAwOwor
ICAgIHJldHVybiBMVFI7Cit9CisKK3ZvaWQgSFRNTEVsZW1lbnQ6OmRpckF0dHJpYnV0ZUNoYW5n
ZWQoQXR0cmlidXRlKiBhdHRyaWJ1dGUpCit7CisgICAgRWxlbWVudCogcGFyZW50ID0gcGFyZW50
RWxlbWVudCgpOworCisgICAgaWYgKHBhcmVudCAmJiBwYXJlbnQtPmlzSFRNTEVsZW1lbnQoKSAm
JiBwYXJlbnQtPnNlbGZPckFuY2VzdG9ySGFzRGlyQXV0b0F0dHJpYnV0ZSgpKQorICAgICAgICB0
b0hUTUxFbGVtZW50KHBhcmVudCktPmFkanVzdERpcmVjdGlvbmFsaXR5SWZOZWVkZWRBZnRlckNo
aWxkQXR0cmlidXRlQ2hhbmdlZCh0aGlzKTsKKworICAgIGlmIChlcXVhbElnbm9yaW5nQ2FzZShh
dHRyaWJ1dGUtPnZhbHVlKCksICJhdXRvIikpCisgICAgICAgIGNhbGN1bGF0ZUFuZEFkanVzdERp
cmVjdGlvbmFsaXR5KCk7Cit9CisKK3ZvaWQgSFRNTEVsZW1lbnQ6OmFkanVzdERpcmVjdGlvbmFs
aXR5SWZOZWVkZWRBZnRlckNoaWxkQXR0cmlidXRlQ2hhbmdlZChFbGVtZW50KiBjaGlsZCkKK3sK
KyAgICBBU1NFUlQoc2VsZk9yQW5jZXN0b3JIYXNEaXJBdXRvQXR0cmlidXRlKCkpOworICAgIE5v
ZGUqIHN0cm9uZ0RpcmVjdGlvbmFsaXR5VGV4dE5vZGU7CisgICAgVGV4dERpcmVjdGlvbiB0ZXh0
RGlyZWN0aW9uID0gZGlyZWN0aW9uYWxpdHkoJnN0cm9uZ0RpcmVjdGlvbmFsaXR5VGV4dE5vZGUp
OworICAgIHNldEhhc0RpckF1dG9GbGFnUmVjdXJzaXZlbHkoY2hpbGQsIGZhbHNlKTsKKyAgICBp
ZiAocmVuZGVyZXIoKSAmJiByZW5kZXJlcigpLT5zdHlsZSgpICYmIHJlbmRlcmVyKCktPnN0eWxl
KCktPmRpcmVjdGlvbigpICE9IHRleHREaXJlY3Rpb24pIHsKKyAgICAgICAgRWxlbWVudCogZWxl
bWVudFRvQWRqdXN0ID0gdGhpczsKKyAgICAgICAgZm9yICg7IGVsZW1lbnRUb0FkanVzdDsgZWxl
bWVudFRvQWRqdXN0ID0gZWxlbWVudFRvQWRqdXN0LT5wYXJlbnRFbGVtZW50KCkpIHsKKyAgICAg
ICAgICAgIGlmIChlbGVtZW50VG9BZGp1c3QtPmhhc0F0dHJpYnV0ZShkaXJBdHRyKSkgeworICAg
ICAgICAgICAgICAgIGVsZW1lbnRUb0FkanVzdC0+c2V0TmVlZHNTdHlsZVJlY2FsYygpOworICAg
ICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KK30K
Kwordm9pZCBIVE1MRWxlbWVudDo6Y2FsY3VsYXRlQW5kQWRqdXN0RGlyZWN0aW9uYWxpdHkoKQor
eworICAgIE5vZGUqIHN0cm9uZ0RpcmVjdGlvbmFsaXR5VGV4dE5vZGU7CisgICAgVGV4dERpcmVj
dGlvbiB0ZXh0RGlyZWN0aW9uID0gZGlyZWN0aW9uYWxpdHkoJnN0cm9uZ0RpcmVjdGlvbmFsaXR5
VGV4dE5vZGUpOworICAgIHNldEhhc0RpckF1dG9GbGFnUmVjdXJzaXZlbHkodGhpcywgdHJ1ZSwg
c3Ryb25nRGlyZWN0aW9uYWxpdHlUZXh0Tm9kZSk7CisgICAgaWYgKHJlbmRlcmVyKCkgJiYgcmVu
ZGVyZXIoKS0+c3R5bGUoKSAmJiByZW5kZXJlcigpLT5zdHlsZSgpLT5kaXJlY3Rpb24oKSAhPSB0
ZXh0RGlyZWN0aW9uKQorICAgICAgICBzZXROZWVkc1N0eWxlUmVjYWxjKCk7Cit9CisKK3ZvaWQg
SFRNTEVsZW1lbnQ6OmFkanVzdERpcmVjdGlvbmFsaXR5SWZOZWVkZWRBZnRlckNoaWxkcmVuQ2hh
bmdlZChOb2RlKiBiZWZvcmVDaGFuZ2UsIGludCBjaGlsZENvdW50RGVsdGEpCit7CisgICAgaWYg
KGNoaWxkQ291bnREZWx0YSA+IDApIHsKKyAgICAgICAgTm9kZSogbm9kZSA9IGJlZm9yZUNoYW5n
ZSA/IGJlZm9yZUNoYW5nZS0+dHJhdmVyc2VOZXh0U2libGluZygpIDogMDsKKyAgICAgICAgZm9y
IChpbnQgY291bnRlciA9IDA7IG5vZGUgJiYgY291bnRlciA8IGNoaWxkQ291bnREZWx0YTsgY291
bnRlcisrLCBub2RlID0gbm9kZS0+dHJhdmVyc2VOZXh0U2libGluZygpKSB7CisgICAgICAgICAg
ICBpZiAobm9kZS0+aXNFbGVtZW50Tm9kZSgpICYmIHRvRWxlbWVudChub2RlKS0+aGFzQXR0cmli
dXRlKGRpckF0dHIpKQorICAgICAgICAgICAgICAgIGNvbnRpbnVlOworCisgICAgICAgICAgICBz
ZXRIYXNEaXJBdXRvRmxhZ1JlY3Vyc2l2ZWx5KG5vZGUsIGZhbHNlKTsKKyAgICAgICAgfQorICAg
IH0KKworICAgIGlmICghc2VsZk9yQW5jZXN0b3JIYXNEaXJBdXRvQXR0cmlidXRlKCkpCisgICAg
ICAgIHJldHVybjsKKworICAgIGZvciAoRWxlbWVudCogZWxlbWVudFRvQWRqdXN0ID0gdGhpczsg
ZWxlbWVudFRvQWRqdXN0OyBlbGVtZW50VG9BZGp1c3QgPSBlbGVtZW50VG9BZGp1c3QtPnBhcmVu
dEVsZW1lbnQoKSkgeworICAgICAgICBpZiAoZWxlbWVudFRvQWRqdXN0LT5pc0hUTUxFbGVtZW50
KCkgJiYgZWxlbWVudFRvQWRqdXN0LT5oYXNBdHRyaWJ1dGUoZGlyQXR0cikpIHsKKyAgICAgICAg
ICAgIHRvSFRNTEVsZW1lbnQoZWxlbWVudFRvQWRqdXN0KS0+Y2FsY3VsYXRlQW5kQWRqdXN0RGly
ZWN0aW9uYWxpdHkoKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorICAgIH0KK30K
KwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCiAjaWZuZGVmIE5ERUJVRwpJbmRleDogU291cmNl
L1dlYkNvcmUvaHRtbC9IVE1MRWxlbWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L2h0bWwvSFRNTEVsZW1lbnQuaAkocmV2aXNpb24gNzgwNzgpCisrKyBTb3VyY2UvV2ViQ29yZS9o
dG1sL0hUTUxFbGVtZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTg3LDYgKzg3LDggQEAgcHVibGlj
OgogICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaENoYW5nZUV2ZW50cygpOwogICAgIHZpcnR1YWwg
dm9pZCBkaXNwYXRjaElucHV0RXZlbnRzKCk7CiAKKyAgICBUZXh0RGlyZWN0aW9uIGRpcmVjdGlv
bmFsaXR5SWZoYXNEaXJBdXRvQXR0cmlidXRlKGJvb2wmIGlzQXV0bykgY29uc3Q7CisKIHByb3Rl
Y3RlZDoKICAgICBIVE1MRWxlbWVudChjb25zdCBRdWFsaWZpZWROYW1lJiB0YWdOYW1lLCBEb2N1
bWVudCopOwogCkBAIC05NSw2ICs5Nyw4IEBAIHByb3RlY3RlZDoKICAgICB2aXJ0dWFsIGJvb2wg
bWFwVG9FbnRyeShjb25zdCBRdWFsaWZpZWROYW1lJiBhdHRyTmFtZSwgTWFwcGVkQXR0cmlidXRl
RW50cnkmIHJlc3VsdCkgY29uc3Q7CiAgICAgdmlydHVhbCB2b2lkIHBhcnNlTWFwcGVkQXR0cmli
dXRlKEF0dHJpYnV0ZSopOwogCisgICAgdmlydHVhbCB2b2lkIGNoaWxkcmVuQ2hhbmdlZChib29s
IGNoYW5nZWRCeVBhcnNlciA9IGZhbHNlLCBOb2RlKiBiZWZvcmVDaGFuZ2UgPSAwLCBOb2RlKiBh
ZnRlckNoYW5nZSA9IDAsIGludCBjaGlsZENvdW50RGVsdGEgPSAwKTsKKwogcHJpdmF0ZToKICAg
ICB2aXJ0dWFsIFN0cmluZyBub2RlTmFtZSgpIGNvbnN0OwogCkBAIC0xMDYsNiArMTEwLDEyIEBA
IHByaXZhdGU6CiAgICAgUGFzc1JlZlB0cjxEb2N1bWVudEZyYWdtZW50PiB0ZXh0VG9GcmFnbWVu
dChjb25zdCBTdHJpbmcmLCBFeGNlcHRpb25Db2RlJik7CiAKICAgICBIVE1MRm9ybUVsZW1lbnQq
IHNoYWRvd0FuY2VzdG9yT3duZXJGb3JtKCk7CisKKyAgICB2b2lkIGRpckF0dHJpYnV0ZUNoYW5n
ZWQoQXR0cmlidXRlKik7CisgICAgdm9pZCBhZGp1c3REaXJlY3Rpb25hbGl0eUlmTmVlZGVkQWZ0
ZXJDaGlsZEF0dHJpYnV0ZUNoYW5nZWQoRWxlbWVudCogY2hpbGQpOworICAgIHZvaWQgY2FsY3Vs
YXRlQW5kQWRqdXN0RGlyZWN0aW9uYWxpdHkoKTsKKyAgICB2b2lkIGFkanVzdERpcmVjdGlvbmFs
aXR5SWZOZWVkZWRBZnRlckNoaWxkcmVuQ2hhbmdlZChOb2RlKiBiZWZvcmVDaGFuZ2UsIGludCBj
aGlsZENvdW50RGVsdGEpOworICAgIFRleHREaXJlY3Rpb24gZGlyZWN0aW9uYWxpdHkoTm9kZSoq
IHN0cm9uZ0RpcmVjdGlvbmFsaXR5VGV4dE5vZGU9IDApIGNvbnN0OwogfTsKIAogaW5saW5lIEhU
TUxFbGVtZW50KiB0b0hUTUxFbGVtZW50KE5vZGUqIG5vZGUpCkluZGV4OiBMYXlvdXRUZXN0cy9D
aGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCShyZXZpc2lvbiA3
ODA3OCkKKysrIExheW91dFRlc3RzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsx
LDIzIEBACisyMDExLTAyLTA4ICBZYWVsIEFoYXJvbiAgPHlhZWwuYWhhcm9uQG5va2lhLmNvbT4K
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGQgc3Vw
cG9ydCBmb3IgZGlyPWF1dG8KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTUwOTE2CisKKyAgICAgICAgKiBmYXN0L2RvbS9IVE1MRWxlbWVudC9hdHRyLWRp
ci1hdXRvLWNoYW5nZS1jaGlsZC1ub2RlLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICog
ZmFzdC9kb20vSFRNTEVsZW1lbnQvYXR0ci1kaXItYXV0by1jaGFuZ2UtY2hpbGQtbm9kZS5odG1s
OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2RvbS9IVE1MRWxlbWVudC9hdHRyLWRpci1hdXRvLWNo
YW5nZS10ZXh0LWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogZmFzdC9kb20vSFRNTEVs
ZW1lbnQvYXR0ci1kaXItYXV0by1jaGFuZ2UtdGV4dC5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBm
YXN0L2RvbS9IVE1MRWxlbWVudC9hdHRyLWRpci1hdXRvLWNoaWxkcmVuLWV4cGVjdGVkLnR4dDog
QWRkZWQuCisgICAgICAgICogZmFzdC9kb20vSFRNTEVsZW1lbnQvYXR0ci1kaXItYXV0by1jaGls
ZHJlbi5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2RvbS9IVE1MRWxlbWVudC9hdHRyLWRp
ci1hdXRvLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogZmFzdC9kb20vSFRNTEVsZW1l
bnQvYXR0ci1kaXItYXV0by1yZW1vdmUtYWRkLWNoaWxkcmVuLWV4cGVjdGVkLnR4dDogQWRkZWQu
CisgICAgICAgICogZmFzdC9kb20vSFRNTEVsZW1lbnQvYXR0ci1kaXItYXV0by1yZW1vdmUtYWRk
LWNoaWxkcmVuLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGZhc3QvZG9tL0hUTUxFbGVtZW50L2F0
dHItZGlyLWF1dG8uaHRtbDogQWRkZWQuCisgICAgICAgICogZmFzdC9kb20vSFRNTEVsZW1lbnQv
YXR0ci1kaXItdmFsdWUtY2hhbmdlLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogZmFz
dC9kb20vSFRNTEVsZW1lbnQvYXR0ci1kaXItdmFsdWUtY2hhbmdlLmh0bWw6IEFkZGVkLgorCiAy
MDExLTAyLTA4ICBEaW1pdHJpIEdsYXprb3YgIDxkZ2xhemtvdkBjaHJvbWl1bS5vcmc+CiAKICAg
ICAgICAgUmV2aWV3ZWQgYnkgRGFyaW4gQWRsZXIuCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2Rv
bS9IVE1MRWxlbWVudC9hdHRyLWRpci1hdXRvLWNoYW5nZS1jaGlsZC1ub2RlLWV4cGVjdGVkLnR4
dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2RvbS9IVE1MRWxlbWVudC9hdHRyLWRp
ci1hdXRvLWNoYW5nZS1jaGlsZC1ub2RlLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKKysrIExh
eW91dFRlc3RzL2Zhc3QvZG9tL0hUTUxFbGVtZW50L2F0dHItZGlyLWF1dG8tY2hhbmdlLWNoaWxk
LW5vZGUtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDE5IEBACitUZXN0IHRo
YXQgZGlyZWN0aW9uYWxpdHkgaXMgcmUtZXZhbHVhdGVkIHdoZW4gYW4gZWxlbWVudCB3aXRoIGRp
cj1hdXRvIHNldCwgaGFzIGl0J3MgZmlyc3QgY2hpbGQgbW9kaWZpZWQuCisKK09uIHN1Y2Nlc3Ms
IHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJU
RVNUIENPTVBMRVRFIi4KKworCisKKworCisKK1BBU1MgZG9jdW1lbnQuZGVmYXVsdFZpZXcuZ2V0
Q29tcHV0ZWRTdHlsZShlbCwgbnVsbCkuZ2V0UHJvcGVydHlWYWx1ZSgnYm9yZGVyLXJpZ2h0LWNv
bG9yJykgaXMgJ3JnYigyNTUsIDAsIDApJworUEFTUyBkb2N1bWVudC5kZWZhdWx0Vmlldy5nZXRD
b21wdXRlZFN0eWxlKGVsLCBudWxsKS5nZXRQcm9wZXJ0eVZhbHVlKCdib3JkZXItcmlnaHQtY29s
b3InKSBpcyAncmdiKDAsIDEyOCwgMCknCisKK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRy
dWUKKworVEVTVCBDT01QTEVURQorCisKKworCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2RvbS9I
VE1MRWxlbWVudC9hdHRyLWRpci1hdXRvLWNoYW5nZS1jaGlsZC1ub2RlLmh0bWwKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9kb20vSFRNTEVsZW1lbnQvYXR0ci1kaXItYXV0by1jaGFu
Z2UtY2hpbGQtbm9kZS5odG1sCShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvZmFzdC9kb20v
SFRNTEVsZW1lbnQvYXR0ci1kaXItYXV0by1jaGFuZ2UtY2hpbGQtbm9kZS5odG1sCShyZXZpc2lv
biAwKQpAQCAtMCwwICsxLDM3IEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8
bWV0YSBodHRwLWVxdWl2PSJDb250ZW50LVR5cGUiIGNvbnRlbnQ9InRleHQvaHRtbDsgY2hhcnNl
dD11dGYtOCI+Cis8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4uLy4uL2pzL3Jlc291cmNl
cy9qcy10ZXN0LXN0eWxlLmNzcyI+Cis8c2NyaXB0IHNyYz0iLi4vLi4vanMvcmVzb3VyY2VzL2pz
LXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzxzdHlsZT4KKy50ZXN0RGl2IHstd2Via2l0LWJvcmRl
ci1zdGFydDogNXB4IHNvbGlkIGdyZWVuOyAtd2Via2l0LWJvcmRlci1lbmQ6IDVweCBzb2xpZCBy
ZWQ7IH0KKzwvc3R5bGU+Cis8L2hlYWQ+Cis8Ym9keT4KKzxwIGlkPSJkZXNjcmlwdGlvbiI+PC9w
PgorPGRpdiBpZD0iY29uc29sZSI+PC9wPgorPGRpdiBpZD0icmVzdWx0Ij48L2Rpdj4KKworPGRp
diBpZD0idGVzdCIgZGlyPSJhdXRvIiBjbGFzcz0idGVzdERpdiI+PC9kaXY+Cis8c2NyaXB0Pgor
CitkZXNjcmlwdGlvbignVGVzdCB0aGF0IGRpcmVjdGlvbmFsaXR5IGlzIHJlLWV2YWx1YXRlZCB3
aGVuIGFuIGVsZW1lbnQgd2l0aCBkaXI9YXV0byBzZXQsIGhhcyBpdFwncyBmaXJzdCBjaGlsZCBt
b2RpZmllZC4nKTsKKwordmFyIGVsID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInRlc3QiKTsK
K3ZhciBjaGlsZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpOworY2hpbGQuaW5uZXJI
VE1MPSJ0ZXN0IjsKK2VsLmFwcGVuZENoaWxkKGNoaWxkKTsKK3Nob3VsZEJlKCJkb2N1bWVudC5k
ZWZhdWx0Vmlldy5nZXRDb21wdXRlZFN0eWxlKGVsLCBudWxsKS5nZXRQcm9wZXJ0eVZhbHVlKCdi
b3JkZXItcmlnaHQtY29sb3InKSIsICIncmdiKDI1NSwgMCwgMCknIik7CisKK3ZhciBjaGlsZDIg
PSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKTsKK2NoaWxkMi5pbm5lckhUTUw9Itee16fX
ldeoINeU16nXnSDXoteR16jXmdeqIjsKK2VsLmluc2VydEJlZm9yZShjaGlsZDIsIGNoaWxkKTsK
K3Nob3VsZEJlKCJkb2N1bWVudC5kZWZhdWx0Vmlldy5nZXRDb21wdXRlZFN0eWxlKGVsLCBudWxs
KS5nZXRQcm9wZXJ0eVZhbHVlKCdib3JkZXItcmlnaHQtY29sb3InKSIsICIncmdiKDAsIDEyOCwg
MCknIik7CitlbC5zdHlsZS5kaXNwbGF5ID0gIm5vbmUiOworCit3aW5kb3cuc3VjY2Vzc2Z1bGx5
UGFyc2VkID0gdHJ1ZTsKKzwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uL2pzL3Jlc291cmNl
cy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpJbmRleDogTGF5
b3V0VGVzdHMvZmFzdC9kb20vSFRNTEVsZW1lbnQvYXR0ci1kaXItYXV0by1jaGFuZ2UtdGV4dC1l
eHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9kb20vSFRNTEVsZW1l
bnQvYXR0ci1kaXItYXV0by1jaGFuZ2UtdGV4dC1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCisr
KyBMYXlvdXRUZXN0cy9mYXN0L2RvbS9IVE1MRWxlbWVudC9hdHRyLWRpci1hdXRvLWNoYW5nZS10
ZXh0LWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwxOSBAQAorVGVzdCB0aGF0
IGRpcmVjdGlvbmFsaXR5IGlzIHJlLWV2YWx1YXRlZCB3aGVuIGFuIGVsZW1lbnQgd2l0aCBkaXI9
YXV0byBzZXQsIGhhcyB0aGUgdGV4dCBvZiBpdHMgZmlyc3QgY2hpbGQgY2hhbmdlZC4KKworT24g
c3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93
ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgorCisKKworCisKKworUEFTUyBkb2N1bWVudC5kZWZhdWx0
Vmlldy5nZXRDb21wdXRlZFN0eWxlKGVsLCBudWxsKS5nZXRQcm9wZXJ0eVZhbHVlKCdib3JkZXIt
cmlnaHQtY29sb3InKSBpcyAncmdiKDI1NSwgMCwgMCknCitQQVNTIGRvY3VtZW50LmRlZmF1bHRW
aWV3LmdldENvbXB1dGVkU3R5bGUoZWwsIG51bGwpLmdldFByb3BlcnR5VmFsdWUoJ2JvcmRlci1y
aWdodC1jb2xvcicpIGlzICdyZ2IoMCwgMTI4LCAwKScKKworUEFTUyBzdWNjZXNzZnVsbHlQYXJz
ZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisKKworCisKSW5kZXg6IExheW91dFRlc3RzL2Zh
c3QvZG9tL0hUTUxFbGVtZW50L2F0dHItZGlyLWF1dG8tY2hhbmdlLXRleHQuaHRtbAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2RvbS9IVE1MRWxlbWVudC9hdHRyLWRpci1hdXRvLWNo
YW5nZS10ZXh0Lmh0bWwJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9mYXN0L2RvbS9IVE1M
RWxlbWVudC9hdHRyLWRpci1hdXRvLWNoYW5nZS10ZXh0Lmh0bWwJKHJldmlzaW9uIDApCkBAIC0w
LDAgKzEsMzAgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKzxtZXRhIGh0dHAt
ZXF1aXY9IkNvbnRlbnQtVHlwZSIgY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PXV0Zi04Ij4K
KzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iLi4vLi4vanMvcmVzb3VyY2VzL2pzLXRlc3Qt
c3R5bGUuY3NzIj4KKzxzY3JpcHQgc3JjPSIuLi8uLi9qcy9yZXNvdXJjZXMvanMtdGVzdC1wcmUu
anMiPjwvc2NyaXB0PgorPHN0eWxlPgorLnRlc3REaXYgey13ZWJraXQtYm9yZGVyLXN0YXJ0OiA1
cHggc29saWQgZ3JlZW47IC13ZWJraXQtYm9yZGVyLWVuZDogNXB4IHNvbGlkIHJlZDsgfQorPC9z
dHlsZT4KKzwvaGVhZD4KKzxib2R5PgorPHAgaWQ9ImRlc2NyaXB0aW9uIj48L3A+Cis8ZGl2IGlk
PSJjb25zb2xlIj48L3A+Cis8ZGl2IGlkPSJyZXN1bHQiPjwvZGl2PgorCis8ZGl2IGlkPSJ0ZXN0
IiBkaXI9ImF1dG8iIGNsYXNzPSJ0ZXN0RGl2Ij5UZXN0IHRlc3QgdGVzdDwvZGl2PgorPHNjcmlw
dD4KKworZGVzY3JpcHRpb24oJ1Rlc3QgdGhhdCBkaXJlY3Rpb25hbGl0eSBpcyByZS1ldmFsdWF0
ZWQgd2hlbiBhbiBlbGVtZW50IHdpdGggZGlyPWF1dG8gc2V0LCBoYXMgdGhlIHRleHQgb2YgaXRz
IGZpcnN0IGNoaWxkIGNoYW5nZWQuJyk7CisKK3ZhciBlbCA9IGRvY3VtZW50LmdldEVsZW1lbnRC
eUlkKCJ0ZXN0Iik7CitzaG91bGRCZSgiZG9jdW1lbnQuZGVmYXVsdFZpZXcuZ2V0Q29tcHV0ZWRT
dHlsZShlbCwgbnVsbCkuZ2V0UHJvcGVydHlWYWx1ZSgnYm9yZGVyLXJpZ2h0LWNvbG9yJykiLCAi
J3JnYigyNTUsIDAsIDApJyIpOworZWwuaW5uZXJIVE1MID0gItee16fXldeoINeU16nXnSDXoteR
16jXmdeqIjsKK3Nob3VsZEJlKCJkb2N1bWVudC5kZWZhdWx0Vmlldy5nZXRDb21wdXRlZFN0eWxl
KGVsLCBudWxsKS5nZXRQcm9wZXJ0eVZhbHVlKCdib3JkZXItcmlnaHQtY29sb3InKSIsICIncmdi
KDAsIDEyOCwgMCknIik7CitlbC5zdHlsZS5kaXNwbGF5ID0gIm5vbmUiOword2luZG93LnN1Y2Nl
c3NmdWxseVBhcnNlZCA9IHRydWU7Cis8L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9qcy9y
ZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KSW5k
ZXg6IExheW91dFRlc3RzL2Zhc3QvZG9tL0hUTUxFbGVtZW50L2F0dHItZGlyLWF1dG8tY2hpbGRy
ZW4tZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZG9tL0hUTUxF
bGVtZW50L2F0dHItZGlyLWF1dG8tY2hpbGRyZW4tZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQor
KysgTGF5b3V0VGVzdHMvZmFzdC9kb20vSFRNTEVsZW1lbnQvYXR0ci1kaXItYXV0by1jaGlsZHJl
bi1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMTMgQEAKK1Rlc3QgdGhhdCBk
aXJlY3Rpb25hbGl0eSBvZiBhbiBlbGVtZW50IHdpdGggZGlyPWF1dG8gaXMgbm90IGFmZmVjdGVk
IGJ5IGNoaWxkcmVuIHRoYXQgYWxzbyBoYXZlIHRoZSBkaXIgYXR0cmlidXRlLgorCitPbiBzdWNj
ZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBi
eSAiVEVTVCBDT01QTEVURSIuCisKKworCisKK1BBU1MgZG9jdW1lbnQuZGVmYXVsdFZpZXcuZ2V0
Q29tcHV0ZWRTdHlsZShlbCwgbnVsbCkuZ2V0UHJvcGVydHlWYWx1ZSgnYm9yZGVyLXJpZ2h0LWNv
bG9yJykgaXMgJ3JnYigyNTUsIDAsIDApJworUEFTUyBkb2N1bWVudC5kZWZhdWx0Vmlldy5nZXRD
b21wdXRlZFN0eWxlKGVsLCBudWxsKS5nZXRQcm9wZXJ0eVZhbHVlKCdib3JkZXItcmlnaHQtY29s
b3InKSBpcyAncmdiKDAsIDEyOCwgMCknCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVl
CisKK1RFU1QgQ09NUExFVEUKKwpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9kb20vSFRNTEVsZW1l
bnQvYXR0ci1kaXItYXV0by1jaGlsZHJlbi5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3Rz
L2Zhc3QvZG9tL0hUTUxFbGVtZW50L2F0dHItZGlyLWF1dG8tY2hpbGRyZW4uaHRtbAkocmV2aXNp
b24gMCkKKysrIExheW91dFRlc3RzL2Zhc3QvZG9tL0hUTUxFbGVtZW50L2F0dHItZGlyLWF1dG8t
Y2hpbGRyZW4uaHRtbAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwzMyBAQAorPCFET0NUWVBFIGh0
bWw+Cis8aHRtbD4KKzxoZWFkPgorPG1ldGEgaHR0cC1lcXVpdj0iQ29udGVudC1UeXBlIiBjb250
ZW50PSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9dXRmLTgiPgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBo
cmVmPSIuLi8uLi9qcy9yZXNvdXJjZXMvanMtdGVzdC1zdHlsZS5jc3MiPgorPHNjcmlwdCBzcmM9
Ii4uLy4uL2pzL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8c3R5bGU+Cisu
dGVzdERpdiB7LXdlYmtpdC1ib3JkZXItc3RhcnQ6IDVweCBzb2xpZCBncmVlbjsgLXdlYmtpdC1i
b3JkZXItZW5kOiA1cHggc29saWQgcmVkOyB9Cis8L3N0eWxlPgorPC9oZWFkPgorPGJvZHk+Cis8
cCBpZD0iZGVzY3JpcHRpb24iPjwvcD4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwvcD4KKzxkaXYgaWQ9
InJlc3VsdCI+PC9kaXY+Cis8ZGl2IGlkPSJwYXJlbnREaXYiPgorPGRpdiBpZD0iaGFzLWRpci1h
dXRvIiBkaXI9ImF1dG8iIGNsYXNzPSJ0ZXN0RGl2Ij4KKzxkaXYgaWQ9Imhhcy1kaXItcnRsIiBk
aXI9InJ0bCIgY2xhc3M9InRlc3REaXYiPtee16fXldeoINeU16nXnSDXoteR16jXmdeqPC9kaXY+
CitUZXN0IHRlc3QgdGVzdDwvZGl2PgorCis8c2NyaXB0PgorCitkZXNjcmlwdGlvbignVGVzdCB0
aGF0IGRpcmVjdGlvbmFsaXR5IG9mIGFuIGVsZW1lbnQgd2l0aCBkaXI9YXV0byBpcyBub3QgYWZm
ZWN0ZWQgYnkgY2hpbGRyZW4gdGhhdCBhbHNvIGhhdmUgdGhlIGRpciBhdHRyaWJ1dGUuJyk7CisK
K3ZhciBlbCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJoYXMtZGlyLWF1dG8iKTsKK3Nob3Vs
ZEJlKCJkb2N1bWVudC5kZWZhdWx0Vmlldy5nZXRDb21wdXRlZFN0eWxlKGVsLCBudWxsKS5nZXRQ
cm9wZXJ0eVZhbHVlKCdib3JkZXItcmlnaHQtY29sb3InKSIsICIncmdiKDI1NSwgMCwgMCknIik7
CitlbCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJoYXMtZGlyLXJ0bCIpOworc2hvdWxkQmUo
ImRvY3VtZW50LmRlZmF1bHRWaWV3LmdldENvbXB1dGVkU3R5bGUoZWwsIG51bGwpLmdldFByb3Bl
cnR5VmFsdWUoJ2JvcmRlci1yaWdodC1jb2xvcicpIiwgIidyZ2IoMCwgMTI4LCAwKSciKTsKK2Rv
Y3VtZW50LmdldEVsZW1lbnRCeUlkKCJwYXJlbnREaXYiKS5zdHlsZS5kaXNwbGF5ID0gIm5vbmUi
Oword2luZG93LnN1Y2Nlc3NmdWxseVBhcnNlZCA9IHRydWU7Cis8L3NjcmlwdD4KKzxzY3JpcHQg
c3JjPSIuLi8uLi9qcy9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KKzwvYm9k
eT4KKzwvaHRtbD4KSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZG9tL0hUTUxFbGVtZW50L2F0dHIt
ZGlyLWF1dG8tZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZG9t
L0hUTUxFbGVtZW50L2F0dHItZGlyLWF1dG8tZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQorKysg
TGF5b3V0VGVzdHMvZmFzdC9kb20vSFRNTEVsZW1lbnQvYXR0ci1kaXItYXV0by1leHBlY3RlZC50
eHQJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMTkgQEAKK1Rlc3QgdGhhdCBkaXJlY3Rpb25hbGl0
eSBvZiBhbiBlbGVtZW50IHdpdGggZGlyPWF1dG8gc2V0IGlzIGRldGVybWluZWQgYnkgdGhlIGZp
cnN0IGNoaWxkIHRleHQgbm9kZSBvZiB0aGF0IGVsZW1lbnQuCisKK09uIHN1Y2Nlc3MsIHlvdSB3
aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENP
TVBMRVRFIi4KKworCisKKworCitQQVNTIGRvY3VtZW50LmRlZmF1bHRWaWV3LmdldENvbXB1dGVk
U3R5bGUoZWwsIG51bGwpLmdldFByb3BlcnR5VmFsdWUoJ2JvcmRlci1yaWdodC1jb2xvcicpIGlz
ICdyZ2IoMjU1LCAwLCAwKScKK1BBU1MgZG9jdW1lbnQuZGVmYXVsdFZpZXcuZ2V0Q29tcHV0ZWRT
dHlsZShlbCwgbnVsbCkuZ2V0UHJvcGVydHlWYWx1ZSgnYm9yZGVyLXJpZ2h0LWNvbG9yJykgaXMg
J3JnYigwLCAxMjgsIDApJworUEFTUyBkb2N1bWVudC5kZWZhdWx0Vmlldy5nZXRDb21wdXRlZFN0
eWxlKGVsLCBudWxsKS5nZXRQcm9wZXJ0eVZhbHVlKCdib3JkZXItcmlnaHQtY29sb3InKSBpcyAn
cmdiKDAsIDEyOCwgMCknCisKK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVT
VCBDT01QTEVURQorCisKKworCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2RvbS9IVE1MRWxlbWVu
dC9hdHRyLWRpci1hdXRvLXJlbW92ZS1hZGQtY2hpbGRyZW4tZXhwZWN0ZWQudHh0Cj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZG9tL0hUTUxFbGVtZW50L2F0dHItZGlyLWF1dG8tcmVt
b3ZlLWFkZC1jaGlsZHJlbi1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0
cy9mYXN0L2RvbS9IVE1MRWxlbWVudC9hdHRyLWRpci1hdXRvLXJlbW92ZS1hZGQtY2hpbGRyZW4t
ZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDIzIEBACitUZXN0IHRoYXQgZGly
ZWN0aW9uYWxpdHkgb2YgYW4gZWxlbWVudCB3aXRoIGRpcj1hdXRvIHNldCBpcyByZS1ldmFsdWF0
ZWQgd2hlbiB0aGUgZmlyc3QgY2hpbGQgdGV4dCBub2RlIG9mIHRoYXQgZWxlbWVudCBpcyBhZGRl
ZCBvciByZW1vdmVkLiBBbHNvIHRlc3QgdGhhdCBkaXJlY3Rpb25hbGl0eSBkb2VzIG5vdCBjaGFu
Z2UgaWYgdGhlIGVsZW1lbnQgZG9lcyBub3QgaGF2ZSB0aGUgYXR0cmlidXRlIGRpcj1hdXRvLgor
CitPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBm
b2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCisKKworCisKKworUEFTUyBkb2N1bWVudC5kZWZh
dWx0Vmlldy5nZXRDb21wdXRlZFN0eWxlKHBhcmVudDEsIG51bGwpLmdldFByb3BlcnR5VmFsdWUo
J2JvcmRlci1yaWdodC1jb2xvcicpIGlzICdyZ2IoMCwgMTI4LCAwKScKK1BBU1MgZG9jdW1lbnQu
ZGVmYXVsdFZpZXcuZ2V0Q29tcHV0ZWRTdHlsZShwYXJlbnQyLCBudWxsKS5nZXRQcm9wZXJ0eVZh
bHVlKCdib3JkZXItcmlnaHQtY29sb3InKSBpcyAncmdiKDI1NSwgMCwgMCknCitQQVNTIGRvY3Vt
ZW50LmRlZmF1bHRWaWV3LmdldENvbXB1dGVkU3R5bGUocGFyZW50MywgbnVsbCkuZ2V0UHJvcGVy
dHlWYWx1ZSgnYm9yZGVyLXJpZ2h0LWNvbG9yJykgaXMgJ3JnYigyNTUsIDAsIDApJworUEFTUyBk
b2N1bWVudC5kZWZhdWx0Vmlldy5nZXRDb21wdXRlZFN0eWxlKHBhcmVudDEsIG51bGwpLmdldFBy
b3BlcnR5VmFsdWUoJ2JvcmRlci1yaWdodC1jb2xvcicpIGlzICdyZ2IoMjU1LCAwLCAwKScKK1BB
U1MgZG9jdW1lbnQuZGVmYXVsdFZpZXcuZ2V0Q29tcHV0ZWRTdHlsZShwYXJlbnQyLCBudWxsKS5n
ZXRQcm9wZXJ0eVZhbHVlKCdib3JkZXItcmlnaHQtY29sb3InKSBpcyAncmdiKDAsIDEyOCwgMCkn
CitQQVNTIGRvY3VtZW50LmRlZmF1bHRWaWV3LmdldENvbXB1dGVkU3R5bGUocGFyZW50MiwgbnVs
bCkuZ2V0UHJvcGVydHlWYWx1ZSgnYm9yZGVyLXJpZ2h0LWNvbG9yJykgaXMgJ3JnYigyNTUsIDAs
IDApJworUEFTUyBkb2N1bWVudC5kZWZhdWx0Vmlldy5nZXRDb21wdXRlZFN0eWxlKHBhcmVudDMs
IG51bGwpLmdldFByb3BlcnR5VmFsdWUoJ2JvcmRlci1yaWdodC1jb2xvcicpIGlzICdyZ2IoMjU1
LCAwLCAwKScKKworUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBM
RVRFCisKKworCisKSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZG9tL0hUTUxFbGVtZW50L2F0dHIt
ZGlyLWF1dG8tcmVtb3ZlLWFkZC1jaGlsZHJlbi5odG1sCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRl
c3RzL2Zhc3QvZG9tL0hUTUxFbGVtZW50L2F0dHItZGlyLWF1dG8tcmVtb3ZlLWFkZC1jaGlsZHJl
bi5odG1sCShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvZmFzdC9kb20vSFRNTEVsZW1lbnQv
YXR0ci1kaXItYXV0by1yZW1vdmUtYWRkLWNoaWxkcmVuLmh0bWwJKHJldmlzaW9uIDApCkBAIC0w
LDAgKzEsNjAgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKzxtZXRhIGh0dHAt
ZXF1aXY9IkNvbnRlbnQtVHlwZSIgY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PXV0Zi04Ij4K
KzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iLi4vLi4vanMvcmVzb3VyY2VzL2pzLXRlc3Qt
c3R5bGUuY3NzIj4KKzxzY3JpcHQgc3JjPSIuLi8uLi9qcy9yZXNvdXJjZXMvanMtdGVzdC1wcmUu
anMiPjwvc2NyaXB0PgorPHN0eWxlPgorLnRlc3REaXYgey13ZWJraXQtYm9yZGVyLXN0YXJ0OiA1
cHggc29saWQgZ3JlZW47IC13ZWJraXQtYm9yZGVyLWVuZDogNXB4IHNvbGlkIHJlZDsgfQorPC9z
dHlsZT4KKzwvaGVhZD4KKzxib2R5PgorPHAgaWQ9ImRlc2NyaXB0aW9uIj48L3A+Cis8ZGl2IGlk
PSJjb25zb2xlIj48L3A+Cis8ZGl2IGlkPSJyZXN1bHQiPjwvZGl2PgorPGRpdiBpZD0icGFyZW50
RGl2Ij4KKzxkaXYgaWQ9InBhcmVudDEiIGRpcj0iYXV0byIgY2xhc3M9InRlc3REaXYiPgorPGRp
diBpZD0iY2hpbGQxIj7Xnten15XXqCDXlNep150g16LXkdeo15nXqjwvZGl2PgorPGRpdiBpZD0i
Y2hpbGQyIj5UZXN0PC9kaXY+Cis8L2Rpdj4KKzxkaXYgaWQ9InBhcmVudDIiIGRpcj0iYXV0byIg
Y2xhc3M9InRlc3REaXYiPgorPGRpdiBpZD0iY2hpbGQzIj5UZXN0PC9kaXY+Cis8L2Rpdj4KKzxk
aXYgaWQ9InBhcmVudDMiIGNsYXNzPSJ0ZXN0RGl2Ij4KKzxkaXYgaWQ9ImNoaWxkNCI+157Xp9eV
16gg15TXqdedINei15HXqNeZ16o8L2Rpdj4KKzwvZGl2PgorPC9kaXY+Cis8c2NyaXB0PgorCitk
ZXNjcmlwdGlvbignVGVzdCB0aGF0IGRpcmVjdGlvbmFsaXR5IG9mIGFuIGVsZW1lbnQgd2l0aCBk
aXI9YXV0byBzZXQgaXMgcmUtZXZhbHVhdGVkIHdoZW4gdGhlIGZpcnN0IGNoaWxkIHRleHQgbm9k
ZSBvZiB0aGF0IGVsZW1lbnQgaXMgYWRkZWQgb3IgcmVtb3ZlZC4gQWxzbyB0ZXN0IHRoYXQgZGly
ZWN0aW9uYWxpdHkgZG9lcyBub3QgY2hhbmdlIGlmIHRoZSBlbGVtZW50IGRvZXMgbm90IGhhdmUg
dGhlIGF0dHJpYnV0ZSBkaXI9YXV0by4nKTsKKwordmFyIHBhcmVudDEgPSBkb2N1bWVudC5nZXRF
bGVtZW50QnlJZCgicGFyZW50MSIpOwordmFyIHBhcmVudDIgPSBkb2N1bWVudC5nZXRFbGVtZW50
QnlJZCgicGFyZW50MiIpOwordmFyIHBhcmVudDMgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgi
cGFyZW50MyIpOworCit2YXIgY2hpbGQxID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImNoaWxk
MSIpOwordmFyIGNoaWxkMyA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJjaGlsZDMiKTsKK3Zh
ciBjaGlsZDQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiY2hpbGQ0Iik7CisKK3Nob3VsZEJl
KCJkb2N1bWVudC5kZWZhdWx0Vmlldy5nZXRDb21wdXRlZFN0eWxlKHBhcmVudDEsIG51bGwpLmdl
dFByb3BlcnR5VmFsdWUoJ2JvcmRlci1yaWdodC1jb2xvcicpIiwgIidyZ2IoMCwgMTI4LCAwKSci
KTsKK3Nob3VsZEJlKCJkb2N1bWVudC5kZWZhdWx0Vmlldy5nZXRDb21wdXRlZFN0eWxlKHBhcmVu
dDIsIG51bGwpLmdldFByb3BlcnR5VmFsdWUoJ2JvcmRlci1yaWdodC1jb2xvcicpIiwgIidyZ2Io
MjU1LCAwLCAwKSciKTsKK3Nob3VsZEJlKCJkb2N1bWVudC5kZWZhdWx0Vmlldy5nZXRDb21wdXRl
ZFN0eWxlKHBhcmVudDMsIG51bGwpLmdldFByb3BlcnR5VmFsdWUoJ2JvcmRlci1yaWdodC1jb2xv
cicpIiwgIidyZ2IoMjU1LCAwLCAwKSciKTsKKworcGFyZW50MS5yZW1vdmVDaGlsZChjaGlsZDEp
CitzaG91bGRCZSgiZG9jdW1lbnQuZGVmYXVsdFZpZXcuZ2V0Q29tcHV0ZWRTdHlsZShwYXJlbnQx
LCBudWxsKS5nZXRQcm9wZXJ0eVZhbHVlKCdib3JkZXItcmlnaHQtY29sb3InKSIsICIncmdiKDI1
NSwgMCwgMCknIik7CisKK3BhcmVudDIuaW5zZXJ0QmVmb3JlKGNoaWxkMSwgY2hpbGQzKTsKK3No
b3VsZEJlKCJkb2N1bWVudC5kZWZhdWx0Vmlldy5nZXRDb21wdXRlZFN0eWxlKHBhcmVudDIsIG51
bGwpLmdldFByb3BlcnR5VmFsdWUoJ2JvcmRlci1yaWdodC1jb2xvcicpIiwgIidyZ2IoMCwgMTI4
LCAwKSciKTsKKworcGFyZW50Mi5yZW1vdmVDaGlsZChjaGlsZDEpCitzaG91bGRCZSgiZG9jdW1l
bnQuZGVmYXVsdFZpZXcuZ2V0Q29tcHV0ZWRTdHlsZShwYXJlbnQyLCBudWxsKS5nZXRQcm9wZXJ0
eVZhbHVlKCdib3JkZXItcmlnaHQtY29sb3InKSIsICIncmdiKDI1NSwgMCwgMCknIik7CisKK3Bh
cmVudDMuaW5zZXJ0QmVmb3JlKGNoaWxkMSwgY2hpbGQ0KTsKK3Nob3VsZEJlKCJkb2N1bWVudC5k
ZWZhdWx0Vmlldy5nZXRDb21wdXRlZFN0eWxlKHBhcmVudDMsIG51bGwpLmdldFByb3BlcnR5VmFs
dWUoJ2JvcmRlci1yaWdodC1jb2xvcicpIiwgIidyZ2IoMjU1LCAwLCAwKSciKTsKKworZG9jdW1l
bnQuZ2V0RWxlbWVudEJ5SWQoInBhcmVudERpdiIpLnN0eWxlLmRpc3BsYXkgPSAibm9uZSI7Cit3
aW5kb3cuc3VjY2Vzc2Z1bGx5UGFyc2VkID0gdHJ1ZTsKKzwvc2NyaXB0PgorPHNjcmlwdCBzcmM9
Ii4uLy4uL2pzL3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgorPC9ib2R5Pgor
PC9odG1sPgpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9kb20vSFRNTEVsZW1lbnQvYXR0ci1kaXIt
YXV0by5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZG9tL0hUTUxFbGVtZW50
L2F0dHItZGlyLWF1dG8uaHRtbAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2Zhc3QvZG9t
L0hUTUxFbGVtZW50L2F0dHItZGlyLWF1dG8uaHRtbAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwz
OCBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorPG1ldGEgaHR0cC1lcXVpdj0i
Q29udGVudC1UeXBlIiBjb250ZW50PSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9dXRmLTgiPgorPGxpbmsg
cmVsPSJzdHlsZXNoZWV0IiBocmVmPSIuLi8uLi9qcy9yZXNvdXJjZXMvanMtdGVzdC1zdHlsZS5j
c3MiPgorPHNjcmlwdCBzcmM9Ii4uLy4uL2pzL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9z
Y3JpcHQ+Cis8c3R5bGU+CisudGVzdERpdiB7LXdlYmtpdC1ib3JkZXItc3RhcnQ6IDVweCBzb2xp
ZCBncmVlbjsgLXdlYmtpdC1ib3JkZXItZW5kOiA1cHggc29saWQgcmVkOyB9Cis8L3N0eWxlPgor
PC9oZWFkPgorPGJvZHk+Cis8cCBpZD0iZGVzY3JpcHRpb24iPjwvcD4KKzxkaXYgaWQ9ImNvbnNv
bGUiPjwvcD4KKzxkaXYgaWQ9InJlc3VsdCI+PC9kaXY+Cis8ZGl2IGlkPSJwYXJlbnREaXYiPgor
VGVzdCB0aGF0IHRoZSBkaXJlY3Rpb24gb2YgZW5nbGlzaCB0ZXh0IGlzIGxlZnQtdG8tcmlnaHQu
Cis8ZGl2IGlkPSJsZWZ0LXRvLXJpZ2h0IiBkaXI9ImF1dG8iIGNsYXNzPSJ0ZXN0RGl2Ij5UZXN0
IHRlc3QgdGVzdDwvZGl2PgorVGVzdCB0aGF0IHRoZSBkaXJlY3Rpb24gb2YgaGVicmV3IHRleHQg
aXMgcmlnaHQtdG8tbGVmdC4KKzxkaXYgaWQ9InJpZ2h0LXRvLWxlZnQxIiBkaXI9ImF1dG8iIGNs
YXNzPSJ0ZXN0RGl2Ij7Xnten15XXqCDXlNep150g16LXkdeo15nXqjwvZGl2PgorVGVzdCB0aGF0
ICc/JyBkb2VzIG5vdCBhZmZlY3QgdGhlIGRpcmVjdGlvbmFsaXR5LgorPGRpdiBpZD0icmlnaHQt
dG8tbGVmdDIiIGRpcj0iYXV0byIgY2xhc3M9InRlc3REaXYiPjxzcGFuPj8/PC9zcGFuPtee16fX
ldeoINeU16nXnSDXoteR16jXmdeqPHNwYW4+Pz88L3NwYW4+PC9kaXY+Cis8L2Rpdj4KKzxzY3Jp
cHQ+CisKK2Rlc2NyaXB0aW9uKCdUZXN0IHRoYXQgZGlyZWN0aW9uYWxpdHkgb2YgYW4gZWxlbWVu
dCB3aXRoIGRpcj1hdXRvIHNldCBpcyBkZXRlcm1pbmVkIGJ5IHRoZSBmaXJzdCBjaGlsZCB0ZXh0
IG5vZGUgb2YgdGhhdCBlbGVtZW50LicpOworCit2YXIgZWwgPSBkb2N1bWVudC5nZXRFbGVtZW50
QnlJZCgibGVmdC10by1yaWdodCIpOworc2hvdWxkQmUoImRvY3VtZW50LmRlZmF1bHRWaWV3Lmdl
dENvbXB1dGVkU3R5bGUoZWwsIG51bGwpLmdldFByb3BlcnR5VmFsdWUoJ2JvcmRlci1yaWdodC1j
b2xvcicpIiwgIidyZ2IoMjU1LCAwLCAwKSciKTsKK2VsID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5
SWQoInJpZ2h0LXRvLWxlZnQxIik7CitzaG91bGRCZSgiZG9jdW1lbnQuZGVmYXVsdFZpZXcuZ2V0
Q29tcHV0ZWRTdHlsZShlbCwgbnVsbCkuZ2V0UHJvcGVydHlWYWx1ZSgnYm9yZGVyLXJpZ2h0LWNv
bG9yJykiLCAiJ3JnYigwLCAxMjgsIDApJyIpOworZWwgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJ
ZCgicmlnaHQtdG8tbGVmdDIiKTsKK3Nob3VsZEJlKCJkb2N1bWVudC5kZWZhdWx0Vmlldy5nZXRD
b21wdXRlZFN0eWxlKGVsLCBudWxsKS5nZXRQcm9wZXJ0eVZhbHVlKCdib3JkZXItcmlnaHQtY29s
b3InKSIsICIncmdiKDAsIDEyOCwgMCknIik7Citkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgicGFy
ZW50RGl2Iikuc3R5bGUuZGlzcGxheSA9ICJub25lIjsKK3dpbmRvdy5zdWNjZXNzZnVsbHlQYXJz
ZWQgPSB0cnVlOworPC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vanMvcmVzb3VyY2VzL2pz
LXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CkluZGV4OiBMYXlvdXRU
ZXN0cy9mYXN0L2RvbS9IVE1MRWxlbWVudC9hdHRyLWRpci12YWx1ZS1jaGFuZ2UtZXhwZWN0ZWQu
dHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZG9tL0hUTUxFbGVtZW50L2F0dHIt
ZGlyLXZhbHVlLWNoYW5nZS1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0
cy9mYXN0L2RvbS9IVE1MRWxlbWVudC9hdHRyLWRpci12YWx1ZS1jaGFuZ2UtZXhwZWN0ZWQudHh0
CShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDI0IEBACitUZXN0IHRoYXQgZGlyZWN0aW9uYWxpdHkg
aXMgcmUtZXZhbHVhdGVkIHdoZW4gYW4gZWxlbWVudCB3aXRoIGRpcj1hdXRvIHNldCwgaGFzIGl0
cyBkaXIgYXR0cmlidXRlIGNoYW5nZWQuCisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNl
cmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KKwor
CisKKworCisKK1BBU1MgZG9jdW1lbnQuZGVmYXVsdFZpZXcuZ2V0Q29tcHV0ZWRTdHlsZShlbCwg
bnVsbCkuZ2V0UHJvcGVydHlWYWx1ZSgnYm9yZGVyLXJpZ2h0LWNvbG9yJykgaXMgJ3JnYigwLCAx
MjgsIDApJworUEFTUyBkb2N1bWVudC5kZWZhdWx0Vmlldy5nZXRDb21wdXRlZFN0eWxlKGNoaWxk
MiwgbnVsbCkuZ2V0UHJvcGVydHlWYWx1ZSgnYm9yZGVyLXJpZ2h0LWNvbG9yJykgaXMgJ3JnYigw
LCAxMjgsIDApJworUEFTUyBkb2N1bWVudC5kZWZhdWx0Vmlldy5nZXRDb21wdXRlZFN0eWxlKGVs
LCBudWxsKS5nZXRQcm9wZXJ0eVZhbHVlKCdib3JkZXItcmlnaHQtY29sb3InKSBpcyAncmdiKDI1
NSwgMCwgMCknCitQQVNTIGRvY3VtZW50LmRlZmF1bHRWaWV3LmdldENvbXB1dGVkU3R5bGUoY2hp
bGQyLCBudWxsKS5nZXRQcm9wZXJ0eVZhbHVlKCdib3JkZXItcmlnaHQtY29sb3InKSBpcyAncmdi
KDAsIDEyOCwgMCknCitQQVNTIGRvY3VtZW50LmRlZmF1bHRWaWV3LmdldENvbXB1dGVkU3R5bGUo
Y2hpbGQyLCBudWxsKS5nZXRQcm9wZXJ0eVZhbHVlKCdib3JkZXItcmlnaHQtY29sb3InKSBpcyAn
cmdiKDI1NSwgMCwgMCknCitQQVNTIGRvY3VtZW50LmRlZmF1bHRWaWV3LmdldENvbXB1dGVkU3R5
bGUoZWwsIG51bGwpLmdldFByb3BlcnR5VmFsdWUoJ2JvcmRlci1yaWdodC1jb2xvcicpIGlzICdy
Z2IoMCwgMTI4LCAwKScKK1BBU1MgZG9jdW1lbnQuZGVmYXVsdFZpZXcuZ2V0Q29tcHV0ZWRTdHls
ZShjaGlsZDIsIG51bGwpLmdldFByb3BlcnR5VmFsdWUoJ2JvcmRlci1yaWdodC1jb2xvcicpIGlz
ICdyZ2IoMjU1LCAwLCAwKScKKworUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitU
RVNUIENPTVBMRVRFCisKKworCisKSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZG9tL0hUTUxFbGVt
ZW50L2F0dHItZGlyLXZhbHVlLWNoYW5nZS5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3Rz
L2Zhc3QvZG9tL0hUTUxFbGVtZW50L2F0dHItZGlyLXZhbHVlLWNoYW5nZS5odG1sCShyZXZpc2lv
biAwKQorKysgTGF5b3V0VGVzdHMvZmFzdC9kb20vSFRNTEVsZW1lbnQvYXR0ci1kaXItdmFsdWUt
Y2hhbmdlLmh0bWwJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNTAgQEAKKzwhRE9DVFlQRSBodG1s
PgorPGh0bWw+Cis8aGVhZD4KKzxtZXRhIGh0dHAtZXF1aXY9IkNvbnRlbnQtVHlwZSIgY29udGVu
dD0idGV4dC9odG1sOyBjaGFyc2V0PXV0Zi04Ij4KKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJl
Zj0iLi4vLi4vanMvcmVzb3VyY2VzL2pzLXRlc3Qtc3R5bGUuY3NzIj4KKzxzY3JpcHQgc3JjPSIu
Li8uLi9qcy9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPHN0eWxlPgorLnRl
c3REaXYgey13ZWJraXQtYm9yZGVyLXN0YXJ0OiA1cHggc29saWQgZ3JlZW47IC13ZWJraXQtYm9y
ZGVyLWVuZDogNXB4IHNvbGlkIHJlZDsgfQorPC9zdHlsZT4KKzwvaGVhZD4KKzxib2R5PgorPHAg
aWQ9ImRlc2NyaXB0aW9uIj48L3A+Cis8ZGl2IGlkPSJjb25zb2xlIj48L3A+Cis8ZGl2IGlkPSJy
ZXN1bHQiPjwvZGl2PgorCis8ZGl2IGlkPSJ0ZXN0IiBkaXI9ImF1dG8iIGNsYXNzPSJ0ZXN0RGl2
Ij48L2Rpdj4KKzxzY3JpcHQ+CisKK2Rlc2NyaXB0aW9uKCdUZXN0IHRoYXQgZGlyZWN0aW9uYWxp
dHkgaXMgcmUtZXZhbHVhdGVkIHdoZW4gYW4gZWxlbWVudCB3aXRoIGRpcj1hdXRvIHNldCwgaGFz
IGl0cyBkaXIgYXR0cmlidXRlIGNoYW5nZWQuJyk7CisKK3ZhciBlbCA9IGRvY3VtZW50LmdldEVs
ZW1lbnRCeUlkKCJ0ZXN0Iik7Cit2YXIgY2hpbGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJk
aXYiKTsKK2NoaWxkLmlubmVySFRNTD0i157Xp9eV16gg15TXqdedINei15HXqNeZ16oiOworZWwu
YXBwZW5kQ2hpbGQoY2hpbGQpOwordmFyIGNoaWxkMiA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQo
ImRpdiIpOworY2hpbGQyLmlubmVySFRNTCA9ICLXnten15XXqCDXlNep150g16LXkdeo15nXqiI7
CitjaGlsZDIuc2V0QXR0cmlidXRlKCJkaXIiLCAiYXV0byIpOworY2hpbGQyLnNldEF0dHJpYnV0
ZSgiY2xhc3MiLCAidGVzdERpdiIpOworY2hpbGQuYXBwZW5kQ2hpbGQoY2hpbGQyKTsKK3Nob3Vs
ZEJlKCJkb2N1bWVudC5kZWZhdWx0Vmlldy5nZXRDb21wdXRlZFN0eWxlKGVsLCBudWxsKS5nZXRQ
cm9wZXJ0eVZhbHVlKCdib3JkZXItcmlnaHQtY29sb3InKSIsICIncmdiKDAsIDEyOCwgMCknIik7
CitzaG91bGRCZSgiZG9jdW1lbnQuZGVmYXVsdFZpZXcuZ2V0Q29tcHV0ZWRTdHlsZShjaGlsZDIs
IG51bGwpLmdldFByb3BlcnR5VmFsdWUoJ2JvcmRlci1yaWdodC1jb2xvcicpIiwgIidyZ2IoMCwg
MTI4LCAwKSciKTsKKworZWwuc2V0QXR0cmlidXRlKCJkaXIiLCAibHRyIik7CitzaG91bGRCZSgi
ZG9jdW1lbnQuZGVmYXVsdFZpZXcuZ2V0Q29tcHV0ZWRTdHlsZShlbCwgbnVsbCkuZ2V0UHJvcGVy
dHlWYWx1ZSgnYm9yZGVyLXJpZ2h0LWNvbG9yJykiLCAiJ3JnYigyNTUsIDAsIDApJyIpOworc2hv
dWxkQmUoImRvY3VtZW50LmRlZmF1bHRWaWV3LmdldENvbXB1dGVkU3R5bGUoY2hpbGQyLCBudWxs
KS5nZXRQcm9wZXJ0eVZhbHVlKCdib3JkZXItcmlnaHQtY29sb3InKSIsICIncmdiKDAsIDEyOCwg
MCknIik7CisKK2NoaWxkMi5pbm5lckhUTUwgPSAiVGVzdCI7CitzaG91bGRCZSgiZG9jdW1lbnQu
ZGVmYXVsdFZpZXcuZ2V0Q29tcHV0ZWRTdHlsZShjaGlsZDIsIG51bGwpLmdldFByb3BlcnR5VmFs
dWUoJ2JvcmRlci1yaWdodC1jb2xvcicpIiwgIidyZ2IoMjU1LCAwLCAwKSciKTsKKworZWwuc2V0
QXR0cmlidXRlKCJkaXIiLCAiYXV0byIpOworc2hvdWxkQmUoImRvY3VtZW50LmRlZmF1bHRWaWV3
LmdldENvbXB1dGVkU3R5bGUoZWwsIG51bGwpLmdldFByb3BlcnR5VmFsdWUoJ2JvcmRlci1yaWdo
dC1jb2xvcicpIiwgIidyZ2IoMCwgMTI4LCAwKSciKTsKK3Nob3VsZEJlKCJkb2N1bWVudC5kZWZh
dWx0Vmlldy5nZXRDb21wdXRlZFN0eWxlKGNoaWxkMiwgbnVsbCkuZ2V0UHJvcGVydHlWYWx1ZSgn
Ym9yZGVyLXJpZ2h0LWNvbG9yJykiLCAiJ3JnYigyNTUsIDAsIDApJyIpOworCitlbC5zdHlsZS5k
aXNwbGF5ID0gIm5vbmUiOworCit3aW5kb3cuc3VjY2Vzc2Z1bGx5UGFyc2VkID0gdHJ1ZTsKKzwv
c2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uL2pzL3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMi
Pjwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgo=
</data>
<flag name="review"
          id="73452"
          type_id="1"
          status="-"
          setter="hyatt"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>82795</attachid>
            <date>2011-02-17 06:45:23 -0800</date>
            <delta_ts>2011-02-18 12:18:00 -0800</delta_ts>
            <desc>Patch.</desc>
            <filename>50916.patch</filename>
            <type>text/plain</type>
            <size>43476</size>
            <attacher name="Yael">yael</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gNzg3NTcpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xICsxLDE5IEBACisy
MDExLTAyLTE3ICBZYWVsIEFoYXJvbiAgPHlhZWwuYWhhcm9uQG5va2lhLmNvbT4KKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGQgc3VwcG9ydCBmb3Ig
ZGlyPWF1dG8KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTUwOTE2CisKKyAgICAgICAgQ2hhbmdlIGRlZmF1bHRXcml0aW5nRGlyZWN0aW9uKCkgdG8gcmV0
dXJuIGlmIHRoZSB3cml0aW5nIGRpcmVjdGlvbgorICAgICAgICB3YXMgZGV0ZXJtaW5lZCBmcm9t
IGEgbGV0dGVyIHdpdGggc3Ryb25nIGRpcmVjdGlvbmFsaXR5IG9yIG5vdC4KKworICAgICAgICAq
IEphdmFTY3JpcHRDb3JlLmV4cDoKKyAgICAgICAgKiBKYXZhU2NyaXB0Q29yZS5vcmRlcjoKKyAg
ICAgICAgKiB3dGYvdGV4dC9TdHJpbmdJbXBsLmNwcDoKKyAgICAgICAgKFdURjo6U3RyaW5nSW1w
bDo6ZGVmYXVsdFdyaXRpbmdEaXJlY3Rpb24pOgorICAgICAgICAqIHd0Zi90ZXh0L1N0cmluZ0lt
cGwuaDoKKyAgICAgICAgKiB3dGYvdGV4dC9XVEZTdHJpbmcuaDoKKyAgICAgICAgKFdURjo6U3Ry
aW5nOjpkZWZhdWx0V3JpdGluZ0RpcmVjdGlvbik6CisKID09IFJvbGxlZCBvdmVyIHRvIENoYW5n
ZUxvZy0yMDExLTAyLTE2ID09CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlw
dENvcmUuZXhwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0
Q29yZS5leHAJKHJldmlzaW9uIDc4NzU3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFT
Y3JpcHRDb3JlLmV4cAkod29ya2luZyBjb3B5KQpAQCAtMzMzLDcgKzMzMyw3IEBAIF9fWk4zV1RG
MTBTdHJpbmdJbXBsMThzaW1wbGlmeVdoaXRlU3BhY2UKIF9fWk4zV1RGMTBTdHJpbmdJbXBsMTlj
aGFyYWN0ZXJTdGFydGluZ0F0RWoKIF9fWk4zV1RGMTBTdHJpbmdJbXBsMTljcmVhdGVVbmluaXRp
YWxpemVkRWpSUHQKIF9fWk4zV1RGMTBTdHJpbmdJbXBsMjJjb250YWluc09ubHlXaGl0ZXNwYWNl
RXYKLV9fWk4zV1RGMTBTdHJpbmdJbXBsMjNkZWZhdWx0V3JpdGluZ0RpcmVjdGlvbkV2CitfX1pO
M1dURjEwU3RyaW5nSW1wbDIzZGVmYXVsdFdyaXRpbmdEaXJlY3Rpb25FUGIKIF9fWk4zV1RGMTBT
dHJpbmdJbXBsMjNyZXZlcnNlRmluZElnbm9yaW5nQ2FzZUVQUzBfagogX19aTjNXVEYxMFN0cmlu
Z0ltcGwzN2NyZWF0ZVN0cmlwcGluZ051bGxDaGFyYWN0ZXJzU2xvd0Nhc2VFUEt0agogX19aTjNX
VEYxMFN0cmluZ0ltcGw0ZmluZEVQRmJ0RWoKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9K
YXZhU2NyaXB0Q29yZS5vcmRlcgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
SmF2YVNjcmlwdENvcmUub3JkZXIJKHJldmlzaW9uIDc4NzU3KQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL0phdmFTY3JpcHRDb3JlLm9yZGVyCSh3b3JraW5nIGNvcHkpCkBAIC0xNDI1LDcgKzE0
MjUsNyBAQCBfX1pON1dlYkNvcmUxMFN0cmluZ0ltcGwxMXJldmVyc2VGaW5kRXRpCiBfX1pOM1dU
RjIzd2FpdEZvclRocmVhZENvbXBsZXRpb25FalBQdgogX19aTjNXVEYxNEZhc3RNYWxsb2Nab25l
MTBzdGF0aXN0aWNzRVAxNF9tYWxsb2Nfem9uZV90UDE5bWFsbG9jX3N0YXRpc3RpY3NfdAogX19a
Tks3V2ViQ29yZTZTdHJpbmcxOHNpbXBsaWZ5V2hpdGVTcGFjZUV2Ci1fX1pON1dlYkNvcmUxMFN0
cmluZ0ltcGwyM2RlZmF1bHRXcml0aW5nRGlyZWN0aW9uRXYKK19fWk4zV1RGMTBTdHJpbmdJbXBs
MjNkZWZhdWx0V3JpdGluZ0RpcmVjdGlvbkVQYgogX19aTjNKU0NMMjBkYXRlUHJvdG9GdW5jU2V0
VGltZUVQTlNfOUV4ZWNTdGF0ZUVQTlNfOEpTT2JqZWN0RU5TXzdKU1ZhbHVlRVJLTlNfN0FyZ0xp
c3RFCiBfX1pOM0pTQ0wyMWRhdGVQcm90b0Z1bmNHZXRNb250aEVQTlNfOUV4ZWNTdGF0ZUVQTlNf
OEpTT2JqZWN0RU5TXzdKU1ZhbHVlRVJLTlNfN0FyZ0xpc3RFCiBfX1pOSzNKU0MxMkRhdGVJbnN0
YW5jZTI2Y2FsY3VsYXRlR3JlZ29yaWFuRGF0ZVRpbWVFUE5TXzlFeGVjU3RhdGVFCkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvd3RmL3RleHQvU3RyaW5nSW1wbC5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3d0Zi90ZXh0L1N0cmluZ0ltcGwuY3BwCShyZXZpc2lv
biA3ODc1NykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS93dGYvdGV4dC9TdHJpbmdJbXBsLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtMTAwNSwxNSArMTAwNSwyMyBAQCBib29sIGVxdWFsSWdub3Jp
bmdOdWxsaXR5KFN0cmluZ0ltcGwqIGEsCiAgICAgcmV0dXJuIGZhbHNlOwogfQogCi1XVEY6OlVu
aWNvZGU6OkRpcmVjdGlvbiBTdHJpbmdJbXBsOjpkZWZhdWx0V3JpdGluZ0RpcmVjdGlvbigpCitX
VEY6OlVuaWNvZGU6OkRpcmVjdGlvbiBTdHJpbmdJbXBsOjpkZWZhdWx0V3JpdGluZ0RpcmVjdGlv
bihib29sKiBoYXNTdHJvbmdEaXJlY3Rpb25hbGl0eSkKIHsKICAgICBmb3IgKHVuc2lnbmVkIGkg
PSAwOyBpIDwgbV9sZW5ndGg7ICsraSkgewogICAgICAgICBXVEY6OlVuaWNvZGU6OkRpcmVjdGlv
biBjaGFyRGlyZWN0aW9uID0gV1RGOjpVbmljb2RlOjpkaXJlY3Rpb24obV9kYXRhW2ldKTsKLSAg
ICAgICAgaWYgKGNoYXJEaXJlY3Rpb24gPT0gV1RGOjpVbmljb2RlOjpMZWZ0VG9SaWdodCkKKyAg
ICAgICAgaWYgKGNoYXJEaXJlY3Rpb24gPT0gV1RGOjpVbmljb2RlOjpMZWZ0VG9SaWdodCkgewor
ICAgICAgICAgICAgaWYgKGhhc1N0cm9uZ0RpcmVjdGlvbmFsaXR5KQorICAgICAgICAgICAgICAg
ICpoYXNTdHJvbmdEaXJlY3Rpb25hbGl0eSA9IHRydWU7CiAgICAgICAgICAgICByZXR1cm4gV1RG
OjpVbmljb2RlOjpMZWZ0VG9SaWdodDsKLSAgICAgICAgaWYgKGNoYXJEaXJlY3Rpb24gPT0gV1RG
OjpVbmljb2RlOjpSaWdodFRvTGVmdCB8fCBjaGFyRGlyZWN0aW9uID09IFdURjo6VW5pY29kZTo6
UmlnaHRUb0xlZnRBcmFiaWMpCisgICAgICAgIH0KKyAgICAgICAgaWYgKGNoYXJEaXJlY3Rpb24g
PT0gV1RGOjpVbmljb2RlOjpSaWdodFRvTGVmdCB8fCBjaGFyRGlyZWN0aW9uID09IFdURjo6VW5p
Y29kZTo6UmlnaHRUb0xlZnRBcmFiaWMpIHsKKyAgICAgICAgICAgIGlmIChoYXNTdHJvbmdEaXJl
Y3Rpb25hbGl0eSkKKyAgICAgICAgICAgICAgICAqaGFzU3Ryb25nRGlyZWN0aW9uYWxpdHkgPSB0
cnVlOwogICAgICAgICAgICAgcmV0dXJuIFdURjo6VW5pY29kZTo6UmlnaHRUb0xlZnQ7CisgICAg
ICAgIH0KICAgICB9CisgICAgaWYgKGhhc1N0cm9uZ0RpcmVjdGlvbmFsaXR5KQorICAgICAgICAq
aGFzU3Ryb25nRGlyZWN0aW9uYWxpdHkgPSBmYWxzZTsKICAgICByZXR1cm4gV1RGOjpVbmljb2Rl
OjpMZWZ0VG9SaWdodDsKIH0KIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3d0Zi90ZXh0
L1N0cmluZ0ltcGwuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvd3RmL3Rl
eHQvU3RyaW5nSW1wbC5oCShyZXZpc2lvbiA3ODc1NykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS93dGYvdGV4dC9TdHJpbmdJbXBsLmgJKHdvcmtpbmcgY29weSkKQEAgLTMxNiw3ICszMTYsNyBA
QCBwdWJsaWM6CiAgICAgUGFzc1JlZlB0cjxTdHJpbmdJbXBsPiByZXBsYWNlKFN0cmluZ0ltcGwq
LCBTdHJpbmdJbXBsKik7CiAgICAgUGFzc1JlZlB0cjxTdHJpbmdJbXBsPiByZXBsYWNlKHVuc2ln
bmVkIGluZGV4LCB1bnNpZ25lZCBsZW4sIFN0cmluZ0ltcGwqKTsKIAotICAgIFdURjo6VW5pY29k
ZTo6RGlyZWN0aW9uIGRlZmF1bHRXcml0aW5nRGlyZWN0aW9uKCk7CisgICAgV1RGOjpVbmljb2Rl
OjpEaXJlY3Rpb24gZGVmYXVsdFdyaXRpbmdEaXJlY3Rpb24oYm9vbCogaGFzU3Ryb25nRGlyZWN0
aW9uYWxpdHkgPSAwKTsKIAogI2lmIFBMQVRGT1JNKENGKQogICAgIENGU3RyaW5nUmVmIGNyZWF0
ZUNGU3RyaW5nKCk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvd3RmL3RleHQvV1RGU3Ry
aW5nLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3d0Zi90ZXh0L1dURlN0
cmluZy5oCShyZXZpc2lvbiA3ODc1NykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS93dGYvdGV4
dC9XVEZTdHJpbmcuaAkod29ya2luZyBjb3B5KQpAQCAtMzMxLDcgKzMzMSwxNCBAQCBwdWJsaWM6
CiAgICAgc3RhdGljIFN0cmluZyBmcm9tVVRGOFdpdGhMYXRpbjFGYWxsYmFjayhjb25zdCBjaGFy
Kiwgc2l6ZV90KTsKICAgICAKICAgICAvLyBEZXRlcm1pbmVzIHRoZSB3cml0aW5nIGRpcmVjdGlv
biB1c2luZyB0aGUgVW5pY29kZSBCaWRpIEFsZ29yaXRobSBydWxlcyBQMiBhbmQgUDMuCi0gICAg
V1RGOjpVbmljb2RlOjpEaXJlY3Rpb24gZGVmYXVsdFdyaXRpbmdEaXJlY3Rpb24oKSBjb25zdCB7
IHJldHVybiBtX2ltcGwgPyBtX2ltcGwtPmRlZmF1bHRXcml0aW5nRGlyZWN0aW9uKCkgOiBXVEY6
OlVuaWNvZGU6OkxlZnRUb1JpZ2h0OyB9CisgICAgV1RGOjpVbmljb2RlOjpEaXJlY3Rpb24gZGVm
YXVsdFdyaXRpbmdEaXJlY3Rpb24oYm9vbCogaGFzU3Ryb25nRGlyZWN0aW9uYWxpdHkgPSAwKSBj
b25zdAorICAgIHsKKyAgICAgICAgaWYgKG1faW1wbCkKKyAgICAgICAgICAgIHJldHVybiBtX2lt
cGwtPmRlZmF1bHRXcml0aW5nRGlyZWN0aW9uKGhhc1N0cm9uZ0RpcmVjdGlvbmFsaXR5KTsKKyAg
ICAgICAgaWYgKGhhc1N0cm9uZ0RpcmVjdGlvbmFsaXR5KQorICAgICAgICAgICAgKmhhc1N0cm9u
Z0RpcmVjdGlvbmFsaXR5ID0gZmFsc2U7CisgICAgICAgIHJldHVybiBXVEY6OlVuaWNvZGU6Okxl
ZnRUb1JpZ2h0OworICAgIH0KIAogICAgIGJvb2wgY29udGFpbnNPbmx5QVNDSUkoKSBjb25zdCB7
IHJldHVybiBjaGFyYWN0ZXJzQXJlQWxsQVNDSUkoY2hhcmFjdGVycygpLCBsZW5ndGgoKSk7IH0K
ICAgICBib29sIGNvbnRhaW5zT25seUxhdGluMSgpIGNvbnN0IHsgcmV0dXJuIGNoYXJhY3RlcnNB
cmVBbGxMYXRpbjEoY2hhcmFjdGVycygpLCBsZW5ndGgoKSk7IH0KSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cJKHJl
dmlzaW9uIDc4NzU3KQorKysgU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkp
CkBAIC0xLDMgKzEsNTQgQEAKKzIwMTEtMDItMTcgIFlhZWwgQWhhcm9uICA8eWFlbC5haGFyb25A
bm9raWEuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgIEFkZCBzdXBwb3J0IGZvciBkaXI9YXV0bworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NTA5MTYKKworICAgICAgICBXaGVuIGFuIGVsZW1lbnQgaGFz
IGRpciBhdHRyaWJ1dGUgd2l0aCB2YWx1ZSAiYXV0byIsIGNhbGwgZGVmYXVsdFdyaXRpbmdNb2Rl
CisgICAgICAgIHRvIGZpbmQgaXRzIGRpcmVjdGlvbmFsaXR5LgorICAgICAgICBBZGRlZCBhIGZs
YWcgU2VsZk9yQW5jZXN0b3JIYXNEaXJBdXRvRmxhZywgYW5kIGFkZGVkIGhvb2tzIGluIHRoZSBE
T00gdG8gc2V0CisgICAgICAgIGFuZCBjaGVjayB0aGlzIGZsYWcuIFRoaXMgZmxhZyBpcyBzZXQg
b24gZXZlcnkgbm9kZSBiZXR3ZWVuIGFuIGVsZW1lbnQgd2l0aAorICAgICAgICBkaXI9YXV0byBh
dHRyaWJ1dGUgYW5kIGl0cyBmaXJzdCB0ZXh0IG5vZGUuIENoYW5nZXMgaW4gdGhlIERPTSBiZXR3
ZWVuIHRob3NlCisgICAgICAgIGVsZW1lbnRzIHdpbGwgdHJpZ2dlciByZS1ldmFsdWF0aW5nIHRo
ZSBkaXJlY3Rpb25hbGl0eSwgYnV0IGNoYW5nZXMgbm90CisgICAgICAgIGJldHdlZW4gdGhvc2Ug
ZWxlbWVudCBkbyBub3QgbmVlZCB0byBiZSBjb25jZXJuZWQuCisgICAgICAgIFRoZSBET00gaG9v
a3Mgd2VyZSBhZGRlZCB0byBjaGlsZHJlbkNoYW5nZWQsIGFuZCB0byBwYXJzZU1hcHBlZEF0dHJp
YnV0ZS4KKyAgICAgICAgVGhlIGRpcmVjdGlvbmFsaXR5IGlzIGV2YWx1YXRlZCB3aGVuIGNoaWxk
cmVuIGFyZSBhZGRlZCwgYW5kIGNsZWFyZWQgd2hlbiB0aGV5IGFyZQorICAgICAgICByZW1vdmVk
LiBEaXJlY3Rpb25hbGl0eSBmbGFnIGlzIGFsc28gY2xlYXJlZCBvbiBhIGNoaWxkIHRoYXQgaXMg
bm8gbG9uZ2VyIGRldGVybWluaW5nCisgICAgICAgIHRoZSBkaXJlY3Rpb25hbGl0eSBkdWUgdG8g
YSBzaWJsaW5nIGJlaW5nIGFkZGVkIGJlZm9yZSB0aGF0IGNoaWxkLgorCisgICAgICAgIEFkZGVk
IDIgc3RhdGljIENTU011dGFibGVTdHlsZURlY2xhcmF0aW9ucyB0byBiZSB1c2VkIGZvciBlbGVt
ZW50cyB3aXRoIGRpcj1hdXRvLgorICAgICAgICBXZSBjYW5ub3QgdXNlZCB0aGUgbWFwcGVkIGRl
Y2xhcmF0aW9uLCBiZWNhdXNlIGl0IGNhbiB0YWtlIG9ubHkgb25lIHZhbHVlLgorCisgICAgICAg
IFRlc3RzOiBmYXN0L2RvbS9IVE1MRWxlbWVudC9hdHRyLWRpci1hdXRvLWNoYW5nZS1iZWZvcmUt
dGV4dC1ub2RlLmh0bWwKKyAgICAgICAgICAgICAgIGZhc3QvZG9tL0hUTUxFbGVtZW50L2F0dHIt
ZGlyLWF1dG8tY2hhbmdlLWNoaWxkLW5vZGUuaHRtbAorICAgICAgICAgICAgICAgZmFzdC9kb20v
SFRNTEVsZW1lbnQvYXR0ci1kaXItYXV0by1jaGFuZ2UtdGV4dC5odG1sCisgICAgICAgICAgICAg
ICBmYXN0L2RvbS9IVE1MRWxlbWVudC9hdHRyLWRpci1hdXRvLWNoaWxkcmVuLmh0bWwKKyAgICAg
ICAgICAgICAgIGZhc3QvZG9tL0hUTUxFbGVtZW50L2F0dHItZGlyLWF1dG8tcmVtb3ZlLWFkZC1j
aGlsZHJlbi5odG1sCisgICAgICAgICAgICAgICBmYXN0L2RvbS9IVE1MRWxlbWVudC9hdHRyLWRp
ci1hdXRvLmh0bWwKKyAgICAgICAgICAgICAgIGZhc3QvZG9tL0hUTUxFbGVtZW50L2F0dHItZGly
LXZhbHVlLWNoYW5nZS5odG1sCisKKyAgICAgICAgKiBjc3MvQ1NTU3R5bGVTZWxlY3Rvci5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpsZWZ0VG9SaWdodERlY2xhcmF0aW9uKToKKyAgICAgICAgKFdl
YkNvcmU6OnJpZ2h0VG9MZWZ0RGVjbGFyYXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6Q1NTU3R5
bGVTZWxlY3Rvcjo6Y2FuU2hhcmVTdHlsZVdpdGhFbGVtZW50KToKKyAgICAgICAgKFdlYkNvcmU6
OkNTU1N0eWxlU2VsZWN0b3I6OnN0eWxlRm9yRWxlbWVudCk6CisgICAgICAgICogZG9tL05vZGUu
aDoKKyAgICAgICAgKFdlYkNvcmU6Ok5vZGU6OnNlbGZPckFuY2VzdG9ySGFzRGlyQXV0b0F0dHJp
YnV0ZSk6CisgICAgICAgIChXZWJDb3JlOjpOb2RlOjpzZXRTZWxmT3JBbmNlc3Rvckhhc0RpckF1
dG9BdHRyaWJ1dGUpOgorICAgICAgICAqIGh0bWwvSFRNTEVsZW1lbnQuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6SFRNTEVsZW1lbnQ6Om1hcFRvRW50cnkpOgorICAgICAgICAoV2ViQ29yZTo6SFRN
TEVsZW1lbnQ6OnBhcnNlTWFwcGVkQXR0cmlidXRlKToKKyAgICAgICAgKFdlYkNvcmU6OnNldEhh
c0RpckF1dG9GbGFnUmVjdXJzaXZlbHkpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTEVsZW1lbnQ6
OmNoaWxkcmVuQ2hhbmdlZCk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MRWxlbWVudDo6ZGlyZWN0
aW9uYWxpdHlJZmhhc0RpckF1dG9BdHRyaWJ1dGUpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTEVs
ZW1lbnQ6OmRpcmVjdGlvbmFsaXR5KToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxFbGVtZW50Ojpk
aXJBdHRyaWJ1dGVDaGFuZ2VkKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxFbGVtZW50OjphZGp1
c3REaXJlY3Rpb25hbGl0eUlmTmVlZGVkQWZ0ZXJDaGlsZEF0dHJpYnV0ZUNoYW5nZWQpOgorICAg
ICAgICAoV2ViQ29yZTo6SFRNTEVsZW1lbnQ6OmNhbGN1bGF0ZUFuZEFkanVzdERpcmVjdGlvbmFs
aXR5KToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxFbGVtZW50OjphZGp1c3REaXJlY3Rpb25hbGl0
eUlmTmVlZGVkQWZ0ZXJDaGlsZHJlbkNoYW5nZWQpOgorICAgICAgICAqIGh0bWwvSFRNTEVsZW1l
bnQuaDoKKwogMjAxMS0wMi0xNiAgQnJpYW4gU2Fsb21vbiAgPGJzYWxvbW9uQGdvb2dsZS5jb20+
CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgSmFtZXMgUm9iaW5zb24uCkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9jc3MvQ1NTU3R5bGVTZWxlY3Rvci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvY3NzL0NTU1N0eWxlU2VsZWN0b3IuY3BwCShyZXZpc2lvbiA3ODc1NykKKysrIFNvdXJjZS9X
ZWJDb3JlL2Nzcy9DU1NTdHlsZVNlbGVjdG9yLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDc3LDYg
KzQ3NywyNiBAQCBzdGF0aWMgY29uc3QgTWVkaWFRdWVyeUV2YWx1YXRvciYgcHJpbnRFCiAgICAg
cmV0dXJuIHN0YXRpY1ByaW50RXZhbDsKIH0KIAorc3RhdGljIENTU011dGFibGVTdHlsZURlY2xh
cmF0aW9uKiBsZWZ0VG9SaWdodERlY2xhcmF0aW9uKCkKK3sKKyAgICBERUZJTkVfU1RBVElDX0xP
Q0FMKFJlZlB0cjxDU1NNdXRhYmxlU3R5bGVEZWNsYXJhdGlvbj4sIGxlZnRUb1JpZ2h0RGVjbCwg
KENTU011dGFibGVTdHlsZURlY2xhcmF0aW9uOjpjcmVhdGUoKSkpOworICAgIGlmICghbGVmdFRv
UmlnaHREZWNsLT5sZW5ndGgoKSkgeworICAgICAgICBsZWZ0VG9SaWdodERlY2wtPnNldFByb3Bl
cnR5KENTU1Byb3BlcnR5RGlyZWN0aW9uLCAibHRyIiwgZmFsc2UsIGZhbHNlKTsKKyAgICAgICAg
bGVmdFRvUmlnaHREZWNsLT5zZXRTdHJpY3RQYXJzaW5nKGZhbHNlKTsKKyAgICB9CisgICAgcmV0
dXJuIGxlZnRUb1JpZ2h0RGVjbC5nZXQoKTsKK30KKworc3RhdGljIENTU011dGFibGVTdHlsZURl
Y2xhcmF0aW9uKiByaWdodFRvTGVmdERlY2xhcmF0aW9uKCkKK3sKKyAgICBERUZJTkVfU1RBVElD
X0xPQ0FMKFJlZlB0cjxDU1NNdXRhYmxlU3R5bGVEZWNsYXJhdGlvbj4sIHJpZ2h0VG9MZWZ0RGVj
bCwgKENTU011dGFibGVTdHlsZURlY2xhcmF0aW9uOjpjcmVhdGUoKSkpOworICAgIGlmICghcmln
aHRUb0xlZnREZWNsLT5sZW5ndGgoKSkgeworICAgICAgICByaWdodFRvTGVmdERlY2wtPnNldFBy
b3BlcnR5KENTU1Byb3BlcnR5RGlyZWN0aW9uLCAicnRsIiwgZmFsc2UsIGZhbHNlKTsKKyAgICAg
ICAgcmlnaHRUb0xlZnREZWNsLT5zZXRTdHJpY3RQYXJzaW5nKGZhbHNlKTsKKyAgICB9CisgICAg
cmV0dXJuIHJpZ2h0VG9MZWZ0RGVjbC5nZXQoKTsKK30KKwogQ1NTU3R5bGVTZWxlY3Rvcjo6Q1NT
U3R5bGVTZWxlY3RvcihEb2N1bWVudCogZG9jdW1lbnQsIFN0eWxlU2hlZXRMaXN0KiBzdHlsZVNo
ZWV0cywgQ1NTU3R5bGVTaGVldCogbWFwcGVkRWxlbWVudFNoZWV0LAogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBDU1NTdHlsZVNoZWV0KiBwYWdlVXNlclNoZWV0LCBjb25zdCBW
ZWN0b3I8UmVmUHRyPENTU1N0eWxlU2hlZXQ+ID4qIHBhZ2VHcm91cFVzZXJTaGVldHMsCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wgc3RyaWN0UGFyc2luZywgYm9vbCBt
YXRjaEF1dGhvckFuZFVzZXJTdHlsZXMpCkBAIC0xMTA2LDYgKzExMjYsOSBAQCBib29sIENTU1N0
eWxlU2VsZWN0b3I6OmNhblNoYXJlU3R5bGVXaXRoCiAgICAgICAgICAgICAgICAgcmV0dXJuIGZh
bHNlOwogI2VuZGlmCiAKKyAgICAgICAgICAgIGlmIChlcXVhbElnbm9yaW5nQ2FzZShzLT5mYXN0
R2V0QXR0cmlidXRlKGRpckF0dHIpLCAiYXV0byIpIHx8IGVxdWFsSWdub3JpbmdDYXNlKG1fZWxl
bWVudC0+ZmFzdEdldEF0dHJpYnV0ZShkaXJBdHRyKSwgImF1dG8iKSkKKyAgICAgICAgICAgICAg
ICByZXR1cm4gZmFsc2U7CisKICAgICAgICAgICAgIGJvb2wgY2xhc3Nlc01hdGNoID0gdHJ1ZTsK
ICAgICAgICAgICAgIGlmIChzLT5oYXNDbGFzcygpKSB7CiAgICAgICAgICAgICAgICAgY29uc3Qg
QXRvbWljU3RyaW5nJiBjbGFzczEgPSBtX2VsZW1lbnQtPmZhc3RHZXRBdHRyaWJ1dGUoY2xhc3NB
dHRyKTsKQEAgLTE0MTMsNiArMTQzNiwxMiBAQCBQYXNzUmVmUHRyPFJlbmRlclN0eWxlPiBDU1NT
dHlsZVNlbGVjdG9yCiAgICAgICAgICAgICAgICAgICAgICAgICBhZGRNYXRjaGVkRGVjbGFyYXRp
b24obV9hZGRpdGlvbmFsQXR0cmlidXRlU3R5bGVEZWNsc1tpXSk7CiAgICAgICAgICAgICAgICAg
fQogICAgICAgICAgICAgfQorICAgICAgICAgICAgaWYgKG1fc3R5bGVkRWxlbWVudC0+aXNIVE1M
RWxlbWVudCgpKSB7CisgICAgICAgICAgICAgICAgYm9vbCBpc0F1dG87CisgICAgICAgICAgICAg
ICAgVGV4dERpcmVjdGlvbiB0ZXh0RGlyZWN0aW9uID0gdG9IVE1MRWxlbWVudChtX3N0eWxlZEVs
ZW1lbnQpLT5kaXJlY3Rpb25hbGl0eUlmaGFzRGlyQXV0b0F0dHJpYnV0ZShpc0F1dG8pOworICAg
ICAgICAgICAgICAgIGlmIChpc0F1dG8pCisgICAgICAgICAgICAgICAgICAgIGFkZE1hdGNoZWRE
ZWNsYXJhdGlvbih0ZXh0RGlyZWN0aW9uID09IExUUiA/IGxlZnRUb1JpZ2h0RGVjbGFyYXRpb24o
KSA6IHJpZ2h0VG9MZWZ0RGVjbGFyYXRpb24oKSk7CisgICAgICAgICAgICB9CiAgICAgICAgIH0K
ICAgICAKICAgICAgICAgLy8gNi4gQ2hlY2sgdGhlIHJ1bGVzIGluIGF1dGhvciBzaGVldHMgbmV4
dC4KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvZG9tL05vZGUuaAkocmV2aXNpb24gNzg3NTcpCisrKyBTb3VyY2UvV2ViQ29yZS9k
b20vTm9kZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0yMTcsNiArMjE3LDkgQEAgcHVibGljOgogICAg
IEVsZW1lbnQqIHNoYWRvd0hvc3QoKSBjb25zdDsKICAgICB2b2lkIHNldFNoYWRvd0hvc3QoRWxl
bWVudCopOwogCisgICAgYm9vbCBzZWxmT3JBbmNlc3Rvckhhc0RpckF1dG9BdHRyaWJ1dGUoKSBj
b25zdCB7IHJldHVybiBnZXRGbGFnKFNlbGZPckFuY2VzdG9ySGFzRGlyQXV0b0ZsYWcpOyB9Cisg
ICAgdm9pZCBzZXRTZWxmT3JBbmNlc3Rvckhhc0RpckF1dG9BdHRyaWJ1dGUoYm9vbCBmbGFnKSB7
IHNldEZsYWcoZmxhZywgU2VsZk9yQW5jZXN0b3JIYXNEaXJBdXRvRmxhZyk7IH0KKwogICAgIC8v
IFJldHVybnMgdGhlIGVuY2xvc2luZyBldmVudCBwYXJlbnQgbm9kZSAob3Igc2VsZikgdGhhdCwg
d2hlbiBjbGlja2VkLCB3b3VsZCB0cmlnZ2VyIGEgbmF2aWdhdGlvbi4KICAgICBOb2RlKiBlbmNs
b3NpbmdMaW5rRXZlbnRQYXJlbnRPclNlbGYoKTsKIApAQCAtNjAzLDYgKzYwNiw4IEBAIHByaXZh
dGU6CiAKICAgICAgICAgU3R5bGVDaGFuZ2VNYXNrID0gMSA8PCBub2RlU3R5bGVDaGFuZ2VTaGlm
dCB8IDEgPDwgKG5vZGVTdHlsZUNoYW5nZVNoaWZ0ICsgMSksCiAKKyAgICAgICAgU2VsZk9yQW5j
ZXN0b3JIYXNEaXJBdXRvRmxhZyA9IDEgPDwgMjcsCisKICNpZiBFTkFCTEUoU1ZHKQogICAgICAg
ICBEZWZhdWx0Tm9kZUZsYWdzID0gSXNQYXJzaW5nQ2hpbGRyZW5GaW5pc2hlZEZsYWcgfCBJc1N0
eWxlQXR0cmlidXRlVmFsaWRGbGFnIHwgQXJlU1ZHQXR0cmlidXRlc1ZhbGlkRmxhZwogI2Vsc2UK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEVsZW1lbnQuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEVsZW1lbnQuY3BwCShyZXZpc2lvbiA3ODc1NykKKysr
IFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEVsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0x
MjQsNyArMTI0LDcgQEAgYm9vbCBIVE1MRWxlbWVudDo6bWFwVG9FbnRyeShjb25zdCBRdWFsaQog
ICAgIH0KICAgICBpZiAoYXR0ck5hbWUgPT0gZGlyQXR0cikgewogICAgICAgICByZXN1bHQgPSBo
YXNMb2NhbE5hbWUoYmRvVGFnKSA/IGVCRE8gOiBlVW5pdmVyc2FsOwotICAgICAgICByZXR1cm4g
ZmFsc2U7CisgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KIAogICAgIHJldHVybiBTdHlsZWRF
bGVtZW50OjptYXBUb0VudHJ5KGF0dHJOYW1lLCByZXN1bHQpOwpAQCAtMTU1LDcgKzE1NSw5IEBA
IHZvaWQgSFRNTEVsZW1lbnQ6OnBhcnNlTWFwcGVkQXR0cmlidXRlKEEKICAgICB9IGVsc2UgaWYg
KGF0dHItPm5hbWUoKSA9PSBsYW5nQXR0cikgewogICAgICAgICAvLyBGSVhNRTogSW1wbGVtZW50
CiAgICAgfSBlbHNlIGlmIChhdHRyLT5uYW1lKCkgPT0gZGlyQXR0cikgewotICAgICAgICBhZGRD
U1NQcm9wZXJ0eShhdHRyLCBDU1NQcm9wZXJ0eURpcmVjdGlvbiwgYXR0ci0+dmFsdWUoKSk7Cisg
ICAgICAgIGlmICghZXF1YWxJZ25vcmluZ0Nhc2UoYXR0ci0+dmFsdWUoKSwgImF1dG8iKSkKKyAg
ICAgICAgICAgIGFkZENTU1Byb3BlcnR5KGF0dHIsIENTU1Byb3BlcnR5RGlyZWN0aW9uLCBhdHRy
LT52YWx1ZSgpKTsKKyAgICAgICAgZGlyQXR0cmlidXRlQ2hhbmdlZChhdHRyKTsKICAgICAgICAg
YWRkQ1NTUHJvcGVydHkoYXR0ciwgQ1NTUHJvcGVydHlVbmljb2RlQmlkaSwgaGFzTG9jYWxOYW1l
KGJkb1RhZykgPyBDU1NWYWx1ZUJpZGlPdmVycmlkZSA6IENTU1ZhbHVlRW1iZWQpOwogICAgIH0g
ZWxzZSBpZiAoYXR0ci0+bmFtZSgpID09IGRyYWdnYWJsZUF0dHIpIHsKICAgICAgICAgY29uc3Qg
QXRvbWljU3RyaW5nJiB2YWx1ZSA9IGF0dHItPnZhbHVlKCk7CkBAIC04NzgsNiArODgwLDE0NyBA
QCB2b2lkIEhUTUxFbGVtZW50OjpkaXNwYXRjaElucHV0RXZlbnRzKCkKICAgICAgICAgb3duZXJG
b3JtLT5kaXNwYXRjaEZvcm1JbnB1dCgpOwogfQogCitzdGF0aWMgdm9pZCBzZXRIYXNEaXJBdXRv
RmxhZ1JlY3Vyc2l2ZWx5KE5vZGUqIGZpcnN0Tm9kZSwgYm9vbCBmbGFnLCBOb2RlKiBsYXN0Tm9k
ZSA9IDApCit7CisgICAgZmlyc3ROb2RlLT5zZXRTZWxmT3JBbmNlc3Rvckhhc0RpckF1dG9BdHRy
aWJ1dGUoZmxhZyk7CisKKyAgICBOb2RlKiBub2RlID0gZmlyc3ROb2RlLT5maXJzdENoaWxkKCk7
CisKKyAgICB3aGlsZSAobm9kZSkgeworICAgICAgICBpZiAobm9kZS0+c2VsZk9yQW5jZXN0b3JI
YXNEaXJBdXRvQXR0cmlidXRlKCkgPT0gZmxhZykKKyAgICAgICAgICAgIHJldHVybjsKKworICAg
ICAgICBpZiAobm9kZS0+aXNIVE1MRWxlbWVudCgpICYmIHRvRWxlbWVudChub2RlKS0+aGFzQXR0
cmlidXRlKGRpckF0dHIpKSB7CisgICAgICAgICAgICBpZiAobm9kZSA9PSBsYXN0Tm9kZSkKKyAg
ICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICBub2RlID0gbm9kZS0+dHJhdmVyc2VO
ZXh0U2libGluZyhmaXJzdE5vZGUpOworICAgICAgICAgICAgY29udGludWU7CisgICAgICAgIH0K
KyAgICAgICAgbm9kZS0+c2V0U2VsZk9yQW5jZXN0b3JIYXNEaXJBdXRvQXR0cmlidXRlKGZsYWcp
OworICAgICAgICBpZiAobm9kZSA9PSBsYXN0Tm9kZSkKKyAgICAgICAgICAgIHJldHVybjsKKyAg
ICAgICAgbm9kZSA9IG5vZGUtPnRyYXZlcnNlTmV4dE5vZGUoZmlyc3ROb2RlKTsKKyAgICB9Cit9
CisKK3ZvaWQgSFRNTEVsZW1lbnQ6OmNoaWxkcmVuQ2hhbmdlZChib29sIGNoYW5nZWRCeVBhcnNl
ciwgTm9kZSogYmVmb3JlQ2hhbmdlLCBOb2RlKiBhZnRlckNoYW5nZSwgaW50IGNoaWxkQ291bnRE
ZWx0YSkKK3sKKyAgICBTdHlsZWRFbGVtZW50OjpjaGlsZHJlbkNoYW5nZWQoY2hhbmdlZEJ5UGFy
c2VyLCBiZWZvcmVDaGFuZ2UsIGFmdGVyQ2hhbmdlLCBjaGlsZENvdW50RGVsdGEpOworICAgIGFk
anVzdERpcmVjdGlvbmFsaXR5SWZOZWVkZWRBZnRlckNoaWxkcmVuQ2hhbmdlZChiZWZvcmVDaGFu
Z2UsIGNoaWxkQ291bnREZWx0YSk7Cit9CisKK1RleHREaXJlY3Rpb24gSFRNTEVsZW1lbnQ6OmRp
cmVjdGlvbmFsaXR5SWZoYXNEaXJBdXRvQXR0cmlidXRlKGJvb2wmIGlzQXV0bykgY29uc3QKK3sK
KyAgICBpZiAoIShzZWxmT3JBbmNlc3Rvckhhc0RpckF1dG9BdHRyaWJ1dGUoKSAmJiBlcXVhbEln
bm9yaW5nQ2FzZShnZXRBdHRyaWJ1dGUoZGlyQXR0ciksICJhdXRvIikpKSB7CisgICAgICAgIGlz
QXV0byA9IGZhbHNlOworICAgICAgICByZXR1cm4gTFRSOworICAgIH0KKworICAgIGlzQXV0byA9
IHRydWU7CisgICAgcmV0dXJuIGRpcmVjdGlvbmFsaXR5KCk7Cit9CisKK1RleHREaXJlY3Rpb24g
SFRNTEVsZW1lbnQ6OmRpcmVjdGlvbmFsaXR5KE5vZGUqKiBzdHJvbmdEaXJlY3Rpb25hbGl0eVRl
eHROb2RlKSBjb25zdAoreworICAgIE5vZGUqIG5vZGUgPSBmaXJzdENoaWxkKCk7CisgICAgd2hp
bGUgKG5vZGUpIHsKKyAgICAgICAgLy8gU2tpcCBiZGksIHNjcmlwdCBhbmQgc3R5bGUgZWxlbWVu
dHMKKyAgICAgICAgaWYgKGVxdWFsSWdub3JpbmdDYXNlKG5vZGUtPm5vZGVOYW1lKCksICJiZGki
KSB8fCBub2RlLT5oYXNUYWdOYW1lKHNjcmlwdFRhZykgfHwgbm9kZS0+aGFzVGFnTmFtZShzdHls
ZVRhZykpIHsKKyAgICAgICAgICAgIG5vZGUgPSBub2RlLT50cmF2ZXJzZU5leHRTaWJsaW5nKHRo
aXMpOworICAgICAgICAgICAgY29udGludWU7CisgICAgICAgIH0KKworICAgICAgICAvLyBTa2lw
IGVsZW1lbnRzIHdpdGggdmFsaWQgZGlyIGF0dHJpYnV0ZQorICAgICAgICBpZiAobm9kZS0+aXNF
bGVtZW50Tm9kZSgpKSB7CisgICAgICAgICAgICBBdG9taWNTdHJpbmcgZGlyQXR0cmlidXRlVmFs
dWUgPSB0b0VsZW1lbnQobm9kZSktPmZhc3RHZXRBdHRyaWJ1dGUoZGlyQXR0cik7CisgICAgICAg
ICAgICBpZiAoZXF1YWxJZ25vcmluZ0Nhc2UoZGlyQXR0cmlidXRlVmFsdWUsICJydGwiKSB8fCBl
cXVhbElnbm9yaW5nQ2FzZShkaXJBdHRyaWJ1dGVWYWx1ZSwgImx0ciIpIHx8IGVxdWFsSWdub3Jp
bmdDYXNlKGRpckF0dHJpYnV0ZVZhbHVlLCAiYXV0byIpKSB7CisgICAgICAgICAgICAgICAgbm9k
ZSA9IG5vZGUtPnRyYXZlcnNlTmV4dFNpYmxpbmcodGhpcyk7CisgICAgICAgICAgICAgICAgY29u
dGludWU7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKworICAgICAgICBpZiAobm9kZS0+aXNU
ZXh0Tm9kZSgpKSB7CisgICAgICAgICAgICBib29sIGhhc1N0cm9uZ0RpcmVjdGlvbmFsaXR5Owor
ICAgICAgICAgICAgV1RGOjpVbmljb2RlOjpEaXJlY3Rpb24gdGV4dERpcmVjdGlvbiA9IG5vZGUt
PnRleHRDb250ZW50KHRydWUpLmRlZmF1bHRXcml0aW5nRGlyZWN0aW9uKCZoYXNTdHJvbmdEaXJl
Y3Rpb25hbGl0eSk7CisgICAgICAgICAgICBpZiAoaGFzU3Ryb25nRGlyZWN0aW9uYWxpdHkpIHsK
KyAgICAgICAgICAgICAgICBpZiAoc3Ryb25nRGlyZWN0aW9uYWxpdHlUZXh0Tm9kZSkKKyAgICAg
ICAgICAgICAgICAgICAgKnN0cm9uZ0RpcmVjdGlvbmFsaXR5VGV4dE5vZGUgPSBub2RlOworICAg
ICAgICAgICAgICAgIHJldHVybiAodGV4dERpcmVjdGlvbiA9PSBXVEY6OlVuaWNvZGU6OkxlZnRU
b1JpZ2h0KSA/IExUUiA6IFJUTDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICBu
b2RlID0gbm9kZS0+dHJhdmVyc2VOZXh0Tm9kZSh0aGlzKTsKKyAgICB9CisgICAgaWYgKHN0cm9u
Z0RpcmVjdGlvbmFsaXR5VGV4dE5vZGUpCisgICAgICAgICpzdHJvbmdEaXJlY3Rpb25hbGl0eVRl
eHROb2RlID0gMDsKKyAgICByZXR1cm4gTFRSOworfQorCit2b2lkIEhUTUxFbGVtZW50OjpkaXJB
dHRyaWJ1dGVDaGFuZ2VkKEF0dHJpYnV0ZSogYXR0cmlidXRlKQoreworICAgIEVsZW1lbnQqIHBh
cmVudCA9IHBhcmVudEVsZW1lbnQoKTsKKworICAgIGlmIChwYXJlbnQgJiYgcGFyZW50LT5pc0hU
TUxFbGVtZW50KCkgJiYgcGFyZW50LT5zZWxmT3JBbmNlc3Rvckhhc0RpckF1dG9BdHRyaWJ1dGUo
KSkKKyAgICAgICAgdG9IVE1MRWxlbWVudChwYXJlbnQpLT5hZGp1c3REaXJlY3Rpb25hbGl0eUlm
TmVlZGVkQWZ0ZXJDaGlsZEF0dHJpYnV0ZUNoYW5nZWQodGhpcyk7CisKKyAgICBpZiAoZXF1YWxJ
Z25vcmluZ0Nhc2UoYXR0cmlidXRlLT52YWx1ZSgpLCAiYXV0byIpKQorICAgICAgICBjYWxjdWxh
dGVBbmRBZGp1c3REaXJlY3Rpb25hbGl0eSgpOworfQorCit2b2lkIEhUTUxFbGVtZW50OjphZGp1
c3REaXJlY3Rpb25hbGl0eUlmTmVlZGVkQWZ0ZXJDaGlsZEF0dHJpYnV0ZUNoYW5nZWQoRWxlbWVu
dCogY2hpbGQpCit7CisgICAgQVNTRVJUKHNlbGZPckFuY2VzdG9ySGFzRGlyQXV0b0F0dHJpYnV0
ZSgpKTsKKyAgICBOb2RlKiBzdHJvbmdEaXJlY3Rpb25hbGl0eVRleHROb2RlOworICAgIFRleHRE
aXJlY3Rpb24gdGV4dERpcmVjdGlvbiA9IGRpcmVjdGlvbmFsaXR5KCZzdHJvbmdEaXJlY3Rpb25h
bGl0eVRleHROb2RlKTsKKyAgICBzZXRIYXNEaXJBdXRvRmxhZ1JlY3Vyc2l2ZWx5KGNoaWxkLCBm
YWxzZSk7CisgICAgaWYgKHJlbmRlcmVyKCkgJiYgcmVuZGVyZXIoKS0+c3R5bGUoKSAmJiByZW5k
ZXJlcigpLT5zdHlsZSgpLT5kaXJlY3Rpb24oKSAhPSB0ZXh0RGlyZWN0aW9uKSB7CisgICAgICAg
IEVsZW1lbnQqIGVsZW1lbnRUb0FkanVzdCA9IHRoaXM7CisgICAgICAgIGZvciAoOyBlbGVtZW50
VG9BZGp1c3Q7IGVsZW1lbnRUb0FkanVzdCA9IGVsZW1lbnRUb0FkanVzdC0+cGFyZW50RWxlbWVu
dCgpKSB7CisgICAgICAgICAgICBpZiAoZWxlbWVudFRvQWRqdXN0LT5oYXNBdHRyaWJ1dGUoZGly
QXR0cikpIHsKKyAgICAgICAgICAgICAgICBlbGVtZW50VG9BZGp1c3QtPnNldE5lZWRzU3R5bGVS
ZWNhbGMoKTsKKyAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICB9CisgICAgICAg
IH0KKyAgICB9Cit9CisKK3ZvaWQgSFRNTEVsZW1lbnQ6OmNhbGN1bGF0ZUFuZEFkanVzdERpcmVj
dGlvbmFsaXR5KCkKK3sKKyAgICBOb2RlKiBzdHJvbmdEaXJlY3Rpb25hbGl0eVRleHROb2RlOwor
ICAgIFRleHREaXJlY3Rpb24gdGV4dERpcmVjdGlvbiA9IGRpcmVjdGlvbmFsaXR5KCZzdHJvbmdE
aXJlY3Rpb25hbGl0eVRleHROb2RlKTsKKyAgICBzZXRIYXNEaXJBdXRvRmxhZ1JlY3Vyc2l2ZWx5
KHRoaXMsIHRydWUsIHN0cm9uZ0RpcmVjdGlvbmFsaXR5VGV4dE5vZGUpOworICAgIGlmIChyZW5k
ZXJlcigpICYmIHJlbmRlcmVyKCktPnN0eWxlKCkgJiYgcmVuZGVyZXIoKS0+c3R5bGUoKS0+ZGly
ZWN0aW9uKCkgIT0gdGV4dERpcmVjdGlvbikKKyAgICAgICAgc2V0TmVlZHNTdHlsZVJlY2FsYygp
OworfQorCit2b2lkIEhUTUxFbGVtZW50OjphZGp1c3REaXJlY3Rpb25hbGl0eUlmTmVlZGVkQWZ0
ZXJDaGlsZHJlbkNoYW5nZWQoTm9kZSogYmVmb3JlQ2hhbmdlLCBpbnQgY2hpbGRDb3VudERlbHRh
KQoreworICAgIGlmICgoIWRvY3VtZW50KCkgfHwgZG9jdW1lbnQoKS0+cmVuZGVyZXIoKSkgJiYg
Y2hpbGRDb3VudERlbHRhIDwgMCkgeworICAgICAgICBOb2RlKiBub2RlID0gYmVmb3JlQ2hhbmdl
ID8gYmVmb3JlQ2hhbmdlLT50cmF2ZXJzZU5leHRTaWJsaW5nKCkgOiAwOworICAgICAgICBmb3Ig
KGludCBjb3VudGVyID0gMDsgbm9kZSAmJiBjb3VudGVyIDwgY2hpbGRDb3VudERlbHRhOyBjb3Vu
dGVyKyssIG5vZGUgPSBub2RlLT50cmF2ZXJzZU5leHRTaWJsaW5nKCkpIHsKKyAgICAgICAgICAg
IGlmIChub2RlLT5pc0VsZW1lbnROb2RlKCkgJiYgdG9FbGVtZW50KG5vZGUpLT5oYXNBdHRyaWJ1
dGUoZGlyQXR0cikpCisgICAgICAgICAgICAgICAgY29udGludWU7CisKKyAgICAgICAgICAgIHNl
dEhhc0RpckF1dG9GbGFnUmVjdXJzaXZlbHkobm9kZSwgZmFsc2UpOworICAgICAgICB9CisgICAg
fQorCisgICAgaWYgKCFzZWxmT3JBbmNlc3Rvckhhc0RpckF1dG9BdHRyaWJ1dGUoKSkKKyAgICAg
ICAgcmV0dXJuOworCisgICAgTm9kZSogb2xkTWFya2VkTm9kZSA9IGJlZm9yZUNoYW5nZSA/IGJl
Zm9yZUNoYW5nZS0+dHJhdmVyc2VOZXh0U2libGluZygpIDogMDsKKyAgICB3aGlsZSAob2xkTWFy
a2VkTm9kZSAmJiBvbGRNYXJrZWROb2RlLT5pc0hUTUxFbGVtZW50KCkgJiYgdG9IVE1MRWxlbWVu
dChvbGRNYXJrZWROb2RlKS0+aGFzQXR0cmlidXRlKGRpckF0dHIpKQorICAgICAgICBvbGRNYXJr
ZWROb2RlID0gb2xkTWFya2VkTm9kZS0+dHJhdmVyc2VOZXh0U2libGluZyh0aGlzKTsKKyAgICBp
ZiAob2xkTWFya2VkTm9kZSkKKyAgICAgICAgc2V0SGFzRGlyQXV0b0ZsYWdSZWN1cnNpdmVseShv
bGRNYXJrZWROb2RlLCBmYWxzZSk7CisKKyAgICBmb3IgKEVsZW1lbnQqIGVsZW1lbnRUb0FkanVz
dCA9IHRoaXM7IGVsZW1lbnRUb0FkanVzdDsgZWxlbWVudFRvQWRqdXN0ID0gZWxlbWVudFRvQWRq
dXN0LT5wYXJlbnRFbGVtZW50KCkpIHsKKyAgICAgICAgaWYgKGVsZW1lbnRUb0FkanVzdC0+aXNI
VE1MRWxlbWVudCgpICYmIGVsZW1lbnRUb0FkanVzdC0+aGFzQXR0cmlidXRlKGRpckF0dHIpKSB7
CisgICAgICAgICAgICB0b0hUTUxFbGVtZW50KGVsZW1lbnRUb0FkanVzdCktPmNhbGN1bGF0ZUFu
ZEFkanVzdERpcmVjdGlvbmFsaXR5KCk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0K
KyAgICB9Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAogI2lmbmRlZiBOREVCVUcKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEVsZW1lbnQuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9odG1sL0hUTUxFbGVtZW50LmgJKHJldmlzaW9uIDc4NzU3KQorKysgU291cmNl
L1dlYkNvcmUvaHRtbC9IVE1MRWxlbWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC04Nyw2ICs4Nyw4
IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hDaGFuZ2VFdmVudHMoKTsKICAg
ICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hJbnB1dEV2ZW50cygpOwogCisgICAgVGV4dERpcmVjdGlv
biBkaXJlY3Rpb25hbGl0eUlmaGFzRGlyQXV0b0F0dHJpYnV0ZShib29sJiBpc0F1dG8pIGNvbnN0
OworCiBwcm90ZWN0ZWQ6CiAgICAgSFRNTEVsZW1lbnQoY29uc3QgUXVhbGlmaWVkTmFtZSYgdGFn
TmFtZSwgRG9jdW1lbnQqKTsKIApAQCAtOTUsNiArOTcsOCBAQCBwcm90ZWN0ZWQ6CiAgICAgdmly
dHVhbCBib29sIG1hcFRvRW50cnkoY29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0ck5hbWUsIE1hcHBl
ZEF0dHJpYnV0ZUVudHJ5JiByZXN1bHQpIGNvbnN0OwogICAgIHZpcnR1YWwgdm9pZCBwYXJzZU1h
cHBlZEF0dHJpYnV0ZShBdHRyaWJ1dGUqKTsKIAorICAgIHZpcnR1YWwgdm9pZCBjaGlsZHJlbkNo
YW5nZWQoYm9vbCBjaGFuZ2VkQnlQYXJzZXIgPSBmYWxzZSwgTm9kZSogYmVmb3JlQ2hhbmdlID0g
MCwgTm9kZSogYWZ0ZXJDaGFuZ2UgPSAwLCBpbnQgY2hpbGRDb3VudERlbHRhID0gMCk7CisKIHBy
aXZhdGU6CiAgICAgdmlydHVhbCBTdHJpbmcgbm9kZU5hbWUoKSBjb25zdDsKIApAQCAtMTA2LDYg
KzExMCwxMiBAQCBwcml2YXRlOgogICAgIFBhc3NSZWZQdHI8RG9jdW1lbnRGcmFnbWVudD4gdGV4
dFRvRnJhZ21lbnQoY29uc3QgU3RyaW5nJiwgRXhjZXB0aW9uQ29kZSYpOwogCiAgICAgSFRNTEZv
cm1FbGVtZW50KiBzaGFkb3dBbmNlc3Rvck93bmVyRm9ybSgpOworCisgICAgdm9pZCBkaXJBdHRy
aWJ1dGVDaGFuZ2VkKEF0dHJpYnV0ZSopOworICAgIHZvaWQgYWRqdXN0RGlyZWN0aW9uYWxpdHlJ
Zk5lZWRlZEFmdGVyQ2hpbGRBdHRyaWJ1dGVDaGFuZ2VkKEVsZW1lbnQqIGNoaWxkKTsKKyAgICB2
b2lkIGNhbGN1bGF0ZUFuZEFkanVzdERpcmVjdGlvbmFsaXR5KCk7CisgICAgdm9pZCBhZGp1c3RE
aXJlY3Rpb25hbGl0eUlmTmVlZGVkQWZ0ZXJDaGlsZHJlbkNoYW5nZWQoTm9kZSogYmVmb3JlQ2hh
bmdlLCBpbnQgY2hpbGRDb3VudERlbHRhKTsKKyAgICBUZXh0RGlyZWN0aW9uIGRpcmVjdGlvbmFs
aXR5KE5vZGUqKiBzdHJvbmdEaXJlY3Rpb25hbGl0eVRleHROb2RlPSAwKSBjb25zdDsKIH07CiAK
IGlubGluZSBIVE1MRWxlbWVudCogdG9IVE1MRWxlbWVudChOb2RlKiBub2RlKQpJbmRleDogTGF5
b3V0VGVzdHMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL0NoYW5nZUxvZwko
cmV2aXNpb24gNzg3NTcpCisrKyBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkK
QEAgLTEsMyArMSwyNSBAQAorMjAxMS0wMi0xNyAgWWFlbCBBaGFyb24gIDx5YWVsLmFoYXJvbkBu
b2tpYS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgQWRkIHN1cHBvcnQgZm9yIGRpcj1hdXRvCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD01MDkxNgorCisgICAgICAgICogZmFzdC9kb20vSFRNTEVsZW1l
bnQvYXR0ci1kaXItYXV0by1jaGFuZ2UtYmVmb3JlLXRleHQtbm9kZS5odG1sOiBBZGRlZC4KKyAg
ICAgICAgKiBmYXN0L2RvbS9IVE1MRWxlbWVudC9hdHRyLWRpci1hdXRvLWNoYW5nZS1iZWZvcmUt
dGV4dC1ub2RlLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogZmFzdC9kb20vSFRNTEVs
ZW1lbnQvYXR0ci1kaXItYXV0by1jaGFuZ2UtY2hpbGQtbm9kZS1leHBlY3RlZC50eHQ6IEFkZGVk
LgorICAgICAgICAqIGZhc3QvZG9tL0hUTUxFbGVtZW50L2F0dHItZGlyLWF1dG8tY2hhbmdlLWNo
aWxkLW5vZGUuaHRtbDogQWRkZWQuCisgICAgICAgICogZmFzdC9kb20vSFRNTEVsZW1lbnQvYXR0
ci1kaXItYXV0by1jaGFuZ2UtdGV4dC1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGZh
c3QvZG9tL0hUTUxFbGVtZW50L2F0dHItZGlyLWF1dG8tY2hhbmdlLXRleHQuaHRtbDogQWRkZWQu
CisgICAgICAgICogZmFzdC9kb20vSFRNTEVsZW1lbnQvYXR0ci1kaXItYXV0by1jaGlsZHJlbi1l
eHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGZhc3QvZG9tL0hUTUxFbGVtZW50L2F0dHIt
ZGlyLWF1dG8tY2hpbGRyZW4uaHRtbDogQWRkZWQuCisgICAgICAgICogZmFzdC9kb20vSFRNTEVs
ZW1lbnQvYXR0ci1kaXItYXV0by1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGZhc3Qv
ZG9tL0hUTUxFbGVtZW50L2F0dHItZGlyLWF1dG8tcmVtb3ZlLWFkZC1jaGlsZHJlbi1leHBlY3Rl
ZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGZhc3QvZG9tL0hUTUxFbGVtZW50L2F0dHItZGlyLWF1
dG8tcmVtb3ZlLWFkZC1jaGlsZHJlbi5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2RvbS9I
VE1MRWxlbWVudC9hdHRyLWRpci1hdXRvLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGZhc3QvZG9t
L0hUTUxFbGVtZW50L2F0dHItZGlyLXZhbHVlLWNoYW5nZS1leHBlY3RlZC50eHQ6IEFkZGVkLgor
ICAgICAgICAqIGZhc3QvZG9tL0hUTUxFbGVtZW50L2F0dHItZGlyLXZhbHVlLWNoYW5nZS5odG1s
OiBBZGRlZC4KKwogMjAxMS0wMi0xNiAgS2VubmV0aCBSdXNzZWxsICA8a2JyQGdvb2dsZS5jb20+
CiAKICAgICAgICAgVW5yZXZpZXdlZC4gU2tpcCByZWNlbnRseSBhZGRlZCB0ZXN0cyBmb3IgYWRq
dXN0aW5nIG1pbmltdW0gdGltZXIKSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZG9tL0hUTUxFbGVt
ZW50L2F0dHItZGlyLWF1dG8tY2hhbmdlLWJlZm9yZS10ZXh0LW5vZGUtZXhwZWN0ZWQudHh0Cj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZG9tL0hUTUxFbGVtZW50L2F0dHItZGlyLWF1
dG8tY2hhbmdlLWJlZm9yZS10ZXh0LW5vZGUtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQorKysg
TGF5b3V0VGVzdHMvZmFzdC9kb20vSFRNTEVsZW1lbnQvYXR0ci1kaXItYXV0by1jaGFuZ2UtYmVm
b3JlLXRleHQtbm9kZS1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMjEgQEAK
K1Rlc3QgdGhhdCBkaXJlY3Rpb25hbGl0eSBpcyByZS1ldmFsdWF0ZWQgd2hlbiBhbiBlbGVtZW50
IHdpdGggZGlyPWF1dG8gc2V0LCBnZXRzIGEgbmV3IG5vZGUgYmVmb3JlIHRoZSBub2RlIHRoYXQg
d2FzIHVzZWQgdG8gZGV0ZXJtaW5lIGl0cyBkaXJlY3Rpb25hbGl0eS4KKworT24gc3VjY2Vzcywg
eW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRF
U1QgQ09NUExFVEUiLgorCisKKworCisKKworUEFTUyBkb2N1bWVudC5kZWZhdWx0Vmlldy5nZXRD
b21wdXRlZFN0eWxlKGVsLCBudWxsKS5nZXRQcm9wZXJ0eVZhbHVlKCdib3JkZXItcmlnaHQtY29s
b3InKSBpcyAncmdiKDI1NSwgMCwgMCknCitQQVNTIGRvY3VtZW50LmRlZmF1bHRWaWV3LmdldENv
bXB1dGVkU3R5bGUoZWwsIG51bGwpLmdldFByb3BlcnR5VmFsdWUoJ2JvcmRlci1yaWdodC1jb2xv
cicpIGlzICdyZ2IoMCwgMTI4LCAwKScKK1BBU1MgZG9jdW1lbnQuZGVmYXVsdFZpZXcuZ2V0Q29t
cHV0ZWRTdHlsZShlbCwgbnVsbCkuZ2V0UHJvcGVydHlWYWx1ZSgnYm9yZGVyLXJpZ2h0LWNvbG9y
JykgaXMgJ3JnYigyNTUsIDAsIDApJworUEFTUyBkb2N1bWVudC5kZWZhdWx0Vmlldy5nZXRDb21w
dXRlZFN0eWxlKGVsLCBudWxsKS5nZXRQcm9wZXJ0eVZhbHVlKCdib3JkZXItcmlnaHQtY29sb3In
KSBpcyAncmdiKDAsIDEyOCwgMCknCisKK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUK
KworVEVTVCBDT01QTEVURQorCisKKworCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2RvbS9IVE1M
RWxlbWVudC9hdHRyLWRpci1hdXRvLWNoYW5nZS1iZWZvcmUtdGV4dC1ub2RlLmh0bWwKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9kb20vSFRNTEVsZW1lbnQvYXR0ci1kaXItYXV0by1j
aGFuZ2UtYmVmb3JlLXRleHQtbm9kZS5odG1sCShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMv
ZmFzdC9kb20vSFRNTEVsZW1lbnQvYXR0ci1kaXItYXV0by1jaGFuZ2UtYmVmb3JlLXRleHQtbm9k
ZS5odG1sCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDQxIEBACis8IURPQ1RZUEUgaHRtbD4KKzxo
dG1sPgorPGhlYWQ+Cis8bWV0YSBodHRwLWVxdWl2PSJDb250ZW50LVR5cGUiIGNvbnRlbnQ9InRl
eHQvaHRtbDsgY2hhcnNldD11dGYtOCI+Cis8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4u
Ly4uL2pzL3Jlc291cmNlcy9qcy10ZXN0LXN0eWxlLmNzcyI+Cis8c2NyaXB0IHNyYz0iLi4vLi4v
anMvcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzxzdHlsZT4KKy50ZXN0RGl2
IHstd2Via2l0LWJvcmRlci1zdGFydDogNXB4IHNvbGlkIGdyZWVuOyAtd2Via2l0LWJvcmRlci1l
bmQ6IDVweCBzb2xpZCByZWQ7IH0KKzwvc3R5bGU+Cis8L2hlYWQ+Cis8Ym9keT4KKzxwIGlkPSJk
ZXNjcmlwdGlvbiI+PC9wPgorPGRpdiBpZD0iY29uc29sZSI+PC9wPgorPGRpdiBpZD0icmVzdWx0
Ij48L2Rpdj4KKworPGRpdiBpZD0idGVzdCIgZGlyPSJhdXRvIiBjbGFzcz0idGVzdERpdiI+PC9k
aXY+Cis8c2NyaXB0PgorCitkZXNjcmlwdGlvbignVGVzdCB0aGF0IGRpcmVjdGlvbmFsaXR5IGlz
IHJlLWV2YWx1YXRlZCB3aGVuIGFuIGVsZW1lbnQgd2l0aCBkaXI9YXV0byBzZXQsIGdldHMgYSBu
ZXcgbm9kZSBiZWZvcmUgdGhlIG5vZGUgdGhhdCB3YXMgdXNlZCB0byBkZXRlcm1pbmUgaXRzIGRp
cmVjdGlvbmFsaXR5LicpOworCit2YXIgZWwgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgidGVz
dCIpOworc2hvdWxkQmUoImRvY3VtZW50LmRlZmF1bHRWaWV3LmdldENvbXB1dGVkU3R5bGUoZWws
IG51bGwpLmdldFByb3BlcnR5VmFsdWUoJ2JvcmRlci1yaWdodC1jb2xvcicpIiwgIidyZ2IoMjU1
LCAwLCAwKSciKTsKK3ZhciBjaGlsZDEgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKTsK
K2NoaWxkMS5pbm5lckhUTUwgPSAi157Xp9eV16gg15TXqdedINei15HXqNeZ16oiOworZWwuYXBw
ZW5kQ2hpbGQoY2hpbGQxKTsKK3Nob3VsZEJlKCJkb2N1bWVudC5kZWZhdWx0Vmlldy5nZXRDb21w
dXRlZFN0eWxlKGVsLCBudWxsKS5nZXRQcm9wZXJ0eVZhbHVlKCdib3JkZXItcmlnaHQtY29sb3In
KSIsICIncmdiKDAsIDEyOCwgMCknIik7CisKK3ZhciBjaGlsZDIgPSBkb2N1bWVudC5jcmVhdGVF
bGVtZW50KCJkaXYiKTsKK2NoaWxkMi5pbm5lckhUTUwgPSAidGVzdCI7CitlbC5pbnNlcnRCZWZv
cmUoY2hpbGQyLCBjaGlsZDEpOworc2hvdWxkQmUoImRvY3VtZW50LmRlZmF1bHRWaWV3LmdldENv
bXB1dGVkU3R5bGUoZWwsIG51bGwpLmdldFByb3BlcnR5VmFsdWUoJ2JvcmRlci1yaWdodC1jb2xv
cicpIiwgIidyZ2IoMjU1LCAwLCAwKSciKTsKKworZWwucmVtb3ZlQ2hpbGQoY2hpbGQyKTsKK3No
b3VsZEJlKCJkb2N1bWVudC5kZWZhdWx0Vmlldy5nZXRDb21wdXRlZFN0eWxlKGVsLCBudWxsKS5n
ZXRQcm9wZXJ0eVZhbHVlKCdib3JkZXItcmlnaHQtY29sb3InKSIsICIncmdiKDAsIDEyOCwgMCkn
Iik7CisKK2VsLnN0eWxlLmRpc3BsYXkgPSAibm9uZSI7Cit3aW5kb3cuc3VjY2Vzc2Z1bGx5UGFy
c2VkID0gdHJ1ZTsKKzwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uL2pzL3Jlc291cmNlcy9q
cy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpJbmRleDogTGF5b3V0
VGVzdHMvZmFzdC9kb20vSFRNTEVsZW1lbnQvYXR0ci1kaXItYXV0by1jaGFuZ2UtY2hpbGQtbm9k
ZS1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9kb20vSFRNTEVs
ZW1lbnQvYXR0ci1kaXItYXV0by1jaGFuZ2UtY2hpbGQtbm9kZS1leHBlY3RlZC50eHQJKHJldmlz
aW9uIDApCisrKyBMYXlvdXRUZXN0cy9mYXN0L2RvbS9IVE1MRWxlbWVudC9hdHRyLWRpci1hdXRv
LWNoYW5nZS1jaGlsZC1ub2RlLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwx
OSBAQAorVGVzdCB0aGF0IGRpcmVjdGlvbmFsaXR5IGlzIHJlLWV2YWx1YXRlZCB3aGVuIGFuIGVs
ZW1lbnQgd2l0aCBkaXI9YXV0byBzZXQsIGhhcyBpdCdzIGZpcnN0IGNoaWxkIG1vZGlmaWVkLgor
CitPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBm
b2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCisKKworCisKKworCitQQVNTIGRvY3VtZW50LmRl
ZmF1bHRWaWV3LmdldENvbXB1dGVkU3R5bGUoZWwsIG51bGwpLmdldFByb3BlcnR5VmFsdWUoJ2Jv
cmRlci1yaWdodC1jb2xvcicpIGlzICdyZ2IoMjU1LCAwLCAwKScKK1BBU1MgZG9jdW1lbnQuZGVm
YXVsdFZpZXcuZ2V0Q29tcHV0ZWRTdHlsZShlbCwgbnVsbCkuZ2V0UHJvcGVydHlWYWx1ZSgnYm9y
ZGVyLXJpZ2h0LWNvbG9yJykgaXMgJ3JnYigwLCAxMjgsIDApJworCitQQVNTIHN1Y2Nlc3NmdWxs
eVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKworCisKKwpJbmRleDogTGF5b3V0VGVz
dHMvZmFzdC9kb20vSFRNTEVsZW1lbnQvYXR0ci1kaXItYXV0by1jaGFuZ2UtY2hpbGQtbm9kZS5o
dG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZG9tL0hUTUxFbGVtZW50L2F0dHIt
ZGlyLWF1dG8tY2hhbmdlLWNoaWxkLW5vZGUuaHRtbAkocmV2aXNpb24gMCkKKysrIExheW91dFRl
c3RzL2Zhc3QvZG9tL0hUTUxFbGVtZW50L2F0dHItZGlyLWF1dG8tY2hhbmdlLWNoaWxkLW5vZGUu
aHRtbAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwzNyBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRt
bD4KKzxoZWFkPgorPG1ldGEgaHR0cC1lcXVpdj0iQ29udGVudC1UeXBlIiBjb250ZW50PSJ0ZXh0
L2h0bWw7IGNoYXJzZXQ9dXRmLTgiPgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIuLi8u
Li9qcy9yZXNvdXJjZXMvanMtdGVzdC1zdHlsZS5jc3MiPgorPHNjcmlwdCBzcmM9Ii4uLy4uL2pz
L3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8c3R5bGU+CisudGVzdERpdiB7
LXdlYmtpdC1ib3JkZXItc3RhcnQ6IDVweCBzb2xpZCBncmVlbjsgLXdlYmtpdC1ib3JkZXItZW5k
OiA1cHggc29saWQgcmVkOyB9Cis8L3N0eWxlPgorPC9oZWFkPgorPGJvZHk+Cis8cCBpZD0iZGVz
Y3JpcHRpb24iPjwvcD4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwvcD4KKzxkaXYgaWQ9InJlc3VsdCI+
PC9kaXY+CisKKzxkaXYgaWQ9InRlc3QiIGRpcj0iYXV0byIgY2xhc3M9InRlc3REaXYiPjwvZGl2
PgorPHNjcmlwdD4KKworZGVzY3JpcHRpb24oJ1Rlc3QgdGhhdCBkaXJlY3Rpb25hbGl0eSBpcyBy
ZS1ldmFsdWF0ZWQgd2hlbiBhbiBlbGVtZW50IHdpdGggZGlyPWF1dG8gc2V0LCBoYXMgaXRcJ3Mg
Zmlyc3QgY2hpbGQgbW9kaWZpZWQuJyk7CisKK3ZhciBlbCA9IGRvY3VtZW50LmdldEVsZW1lbnRC
eUlkKCJ0ZXN0Iik7Cit2YXIgY2hpbGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKTsK
K2NoaWxkLmlubmVySFRNTD0idGVzdCI7CitlbC5hcHBlbmRDaGlsZChjaGlsZCk7CitzaG91bGRC
ZSgiZG9jdW1lbnQuZGVmYXVsdFZpZXcuZ2V0Q29tcHV0ZWRTdHlsZShlbCwgbnVsbCkuZ2V0UHJv
cGVydHlWYWx1ZSgnYm9yZGVyLXJpZ2h0LWNvbG9yJykiLCAiJ3JnYigyNTUsIDAsIDApJyIpOwor
Cit2YXIgY2hpbGQyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2Iik7CitjaGlsZDIuaW5u
ZXJIVE1MPSLXnten15XXqCDXlNep150g16LXkdeo15nXqiI7CitlbC5pbnNlcnRCZWZvcmUoY2hp
bGQyLCBjaGlsZCk7CitzaG91bGRCZSgiZG9jdW1lbnQuZGVmYXVsdFZpZXcuZ2V0Q29tcHV0ZWRT
dHlsZShlbCwgbnVsbCkuZ2V0UHJvcGVydHlWYWx1ZSgnYm9yZGVyLXJpZ2h0LWNvbG9yJykiLCAi
J3JnYigwLCAxMjgsIDApJyIpOworZWwuc3R5bGUuZGlzcGxheSA9ICJub25lIjsKKword2luZG93
LnN1Y2Nlc3NmdWxseVBhcnNlZCA9IHRydWU7Cis8L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8u
Li9qcy9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRt
bD4KSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZG9tL0hUTUxFbGVtZW50L2F0dHItZGlyLWF1dG8t
Y2hhbmdlLXRleHQtZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3Qv
ZG9tL0hUTUxFbGVtZW50L2F0dHItZGlyLWF1dG8tY2hhbmdlLXRleHQtZXhwZWN0ZWQudHh0CShy
ZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvZmFzdC9kb20vSFRNTEVsZW1lbnQvYXR0ci1kaXIt
YXV0by1jaGFuZ2UtdGV4dC1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMTkg
QEAKK1Rlc3QgdGhhdCBkaXJlY3Rpb25hbGl0eSBpcyByZS1ldmFsdWF0ZWQgd2hlbiBhbiBlbGVt
ZW50IHdpdGggZGlyPWF1dG8gc2V0LCBoYXMgdGhlIHRleHQgb2YgaXRzIGZpcnN0IGNoaWxkIGNo
YW5nZWQuCisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVz
c2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KKworCisKKworCisKK1BBU1MgZG9j
dW1lbnQuZGVmYXVsdFZpZXcuZ2V0Q29tcHV0ZWRTdHlsZShlbCwgbnVsbCkuZ2V0UHJvcGVydHlW
YWx1ZSgnYm9yZGVyLXJpZ2h0LWNvbG9yJykgaXMgJ3JnYigyNTUsIDAsIDApJworUEFTUyBkb2N1
bWVudC5kZWZhdWx0Vmlldy5nZXRDb21wdXRlZFN0eWxlKGVsLCBudWxsKS5nZXRQcm9wZXJ0eVZh
bHVlKCdib3JkZXItcmlnaHQtY29sb3InKSBpcyAncmdiKDAsIDEyOCwgMCknCisKK1BBU1Mgc3Vj
Y2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQorCisKKworCkluZGV4OiBM
YXlvdXRUZXN0cy9mYXN0L2RvbS9IVE1MRWxlbWVudC9hdHRyLWRpci1hdXRvLWNoYW5nZS10ZXh0
Lmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9kb20vSFRNTEVsZW1lbnQvYXR0
ci1kaXItYXV0by1jaGFuZ2UtdGV4dC5odG1sCShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMv
ZmFzdC9kb20vSFRNTEVsZW1lbnQvYXR0ci1kaXItYXV0by1jaGFuZ2UtdGV4dC5odG1sCShyZXZp
c2lvbiAwKQpAQCAtMCwwICsxLDMwIEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+
Cis8bWV0YSBodHRwLWVxdWl2PSJDb250ZW50LVR5cGUiIGNvbnRlbnQ9InRleHQvaHRtbDsgY2hh
cnNldD11dGYtOCI+Cis8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4uLy4uL2pzL3Jlc291
cmNlcy9qcy10ZXN0LXN0eWxlLmNzcyI+Cis8c2NyaXB0IHNyYz0iLi4vLi4vanMvcmVzb3VyY2Vz
L2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzxzdHlsZT4KKy50ZXN0RGl2IHstd2Via2l0LWJv
cmRlci1zdGFydDogNXB4IHNvbGlkIGdyZWVuOyAtd2Via2l0LWJvcmRlci1lbmQ6IDVweCBzb2xp
ZCByZWQ7IH0KKzwvc3R5bGU+Cis8L2hlYWQ+Cis8Ym9keT4KKzxwIGlkPSJkZXNjcmlwdGlvbiI+
PC9wPgorPGRpdiBpZD0iY29uc29sZSI+PC9wPgorPGRpdiBpZD0icmVzdWx0Ij48L2Rpdj4KKwor
PGRpdiBpZD0idGVzdCIgZGlyPSJhdXRvIiBjbGFzcz0idGVzdERpdiI+VGVzdCB0ZXN0IHRlc3Q8
L2Rpdj4KKzxzY3JpcHQ+CisKK2Rlc2NyaXB0aW9uKCdUZXN0IHRoYXQgZGlyZWN0aW9uYWxpdHkg
aXMgcmUtZXZhbHVhdGVkIHdoZW4gYW4gZWxlbWVudCB3aXRoIGRpcj1hdXRvIHNldCwgaGFzIHRo
ZSB0ZXh0IG9mIGl0cyBmaXJzdCBjaGlsZCBjaGFuZ2VkLicpOworCit2YXIgZWwgPSBkb2N1bWVu
dC5nZXRFbGVtZW50QnlJZCgidGVzdCIpOworc2hvdWxkQmUoImRvY3VtZW50LmRlZmF1bHRWaWV3
LmdldENvbXB1dGVkU3R5bGUoZWwsIG51bGwpLmdldFByb3BlcnR5VmFsdWUoJ2JvcmRlci1yaWdo
dC1jb2xvcicpIiwgIidyZ2IoMjU1LCAwLCAwKSciKTsKK2VsLmlubmVySFRNTCA9ICLXnten15XX
qCDXlNep150g16LXkdeo15nXqiI7CitzaG91bGRCZSgiZG9jdW1lbnQuZGVmYXVsdFZpZXcuZ2V0
Q29tcHV0ZWRTdHlsZShlbCwgbnVsbCkuZ2V0UHJvcGVydHlWYWx1ZSgnYm9yZGVyLXJpZ2h0LWNv
bG9yJykiLCAiJ3JnYigwLCAxMjgsIDApJyIpOworZWwuc3R5bGUuZGlzcGxheSA9ICJub25lIjsK
K3dpbmRvdy5zdWNjZXNzZnVsbHlQYXJzZWQgPSB0cnVlOworPC9zY3JpcHQ+Cis8c2NyaXB0IHNy
Yz0iLi4vLi4vanMvcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+Cis8L2JvZHk+
Cis8L2h0bWw+CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2RvbS9IVE1MRWxlbWVudC9hdHRyLWRp
ci1hdXRvLWNoaWxkcmVuLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9m
YXN0L2RvbS9IVE1MRWxlbWVudC9hdHRyLWRpci1hdXRvLWNoaWxkcmVuLWV4cGVjdGVkLnR4dAko
cmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2Zhc3QvZG9tL0hUTUxFbGVtZW50L2F0dHItZGly
LWF1dG8tY2hpbGRyZW4tZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDEzIEBA
CitUZXN0IHRoYXQgZGlyZWN0aW9uYWxpdHkgb2YgYW4gZWxlbWVudCB3aXRoIGRpcj1hdXRvIGlz
IG5vdCBhZmZlY3RlZCBieSBjaGlsZHJlbiB0aGF0IGFsc28gaGF2ZSB0aGUgZGlyIGF0dHJpYnV0
ZS4KKworT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdl
cywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgorCisKKworCitQQVNTIGRvY3VtZW50LmRl
ZmF1bHRWaWV3LmdldENvbXB1dGVkU3R5bGUoZWwsIG51bGwpLmdldFByb3BlcnR5VmFsdWUoJ2Jv
cmRlci1yaWdodC1jb2xvcicpIGlzICdyZ2IoMjU1LCAwLCAwKScKK1BBU1MgZG9jdW1lbnQuZGVm
YXVsdFZpZXcuZ2V0Q29tcHV0ZWRTdHlsZShlbCwgbnVsbCkuZ2V0UHJvcGVydHlWYWx1ZSgnYm9y
ZGVyLXJpZ2h0LWNvbG9yJykgaXMgJ3JnYigwLCAxMjgsIDApJworUEFTUyBzdWNjZXNzZnVsbHlQ
YXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisKSW5kZXg6IExheW91dFRlc3RzL2Zhc3Qv
ZG9tL0hUTUxFbGVtZW50L2F0dHItZGlyLWF1dG8tY2hpbGRyZW4uaHRtbAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBMYXlvdXRUZXN0cy9mYXN0L2RvbS9IVE1MRWxlbWVudC9hdHRyLWRpci1hdXRvLWNoaWxkcmVu
Lmh0bWwJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9mYXN0L2RvbS9IVE1MRWxlbWVudC9h
dHRyLWRpci1hdXRvLWNoaWxkcmVuLmh0bWwJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMzMgQEAK
KzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKzxtZXRhIGh0dHAtZXF1aXY9IkNvbnRl
bnQtVHlwZSIgY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PXV0Zi04Ij4KKzxsaW5rIHJlbD0i
c3R5bGVzaGVldCIgaHJlZj0iLi4vLi4vanMvcmVzb3VyY2VzL2pzLXRlc3Qtc3R5bGUuY3NzIj4K
KzxzY3JpcHQgc3JjPSIuLi8uLi9qcy9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0
PgorPHN0eWxlPgorLnRlc3REaXYgey13ZWJraXQtYm9yZGVyLXN0YXJ0OiA1cHggc29saWQgZ3Jl
ZW47IC13ZWJraXQtYm9yZGVyLWVuZDogNXB4IHNvbGlkIHJlZDsgfQorPC9zdHlsZT4KKzwvaGVh
ZD4KKzxib2R5PgorPHAgaWQ9ImRlc2NyaXB0aW9uIj48L3A+Cis8ZGl2IGlkPSJjb25zb2xlIj48
L3A+Cis8ZGl2IGlkPSJyZXN1bHQiPjwvZGl2PgorPGRpdiBpZD0icGFyZW50RGl2Ij4KKzxkaXYg
aWQ9Imhhcy1kaXItYXV0byIgZGlyPSJhdXRvIiBjbGFzcz0idGVzdERpdiI+Cis8ZGl2IGlkPSJo
YXMtZGlyLXJ0bCIgZGlyPSJydGwiIGNsYXNzPSJ0ZXN0RGl2Ij7Xnten15XXqCDXlNep150g16LX
kdeo15nXqjwvZGl2PgorVGVzdCB0ZXN0IHRlc3Q8L2Rpdj4KKworPHNjcmlwdD4KKworZGVzY3Jp
cHRpb24oJ1Rlc3QgdGhhdCBkaXJlY3Rpb25hbGl0eSBvZiBhbiBlbGVtZW50IHdpdGggZGlyPWF1
dG8gaXMgbm90IGFmZmVjdGVkIGJ5IGNoaWxkcmVuIHRoYXQgYWxzbyBoYXZlIHRoZSBkaXIgYXR0
cmlidXRlLicpOworCit2YXIgZWwgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiaGFzLWRpci1h
dXRvIik7CitzaG91bGRCZSgiZG9jdW1lbnQuZGVmYXVsdFZpZXcuZ2V0Q29tcHV0ZWRTdHlsZShl
bCwgbnVsbCkuZ2V0UHJvcGVydHlWYWx1ZSgnYm9yZGVyLXJpZ2h0LWNvbG9yJykiLCAiJ3JnYigy
NTUsIDAsIDApJyIpOworZWwgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiaGFzLWRpci1ydGwi
KTsKK3Nob3VsZEJlKCJkb2N1bWVudC5kZWZhdWx0Vmlldy5nZXRDb21wdXRlZFN0eWxlKGVsLCBu
dWxsKS5nZXRQcm9wZXJ0eVZhbHVlKCdib3JkZXItcmlnaHQtY29sb3InKSIsICIncmdiKDAsIDEy
OCwgMCknIik7Citkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgicGFyZW50RGl2Iikuc3R5bGUuZGlz
cGxheSA9ICJub25lIjsKK3dpbmRvdy5zdWNjZXNzZnVsbHlQYXJzZWQgPSB0cnVlOworPC9zY3Jp
cHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vanMvcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9z
Y3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2RvbS9IVE1M
RWxlbWVudC9hdHRyLWRpci1hdXRvLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRU
ZXN0cy9mYXN0L2RvbS9IVE1MRWxlbWVudC9hdHRyLWRpci1hdXRvLWV4cGVjdGVkLnR4dAkocmV2
aXNpb24gMCkKKysrIExheW91dFRlc3RzL2Zhc3QvZG9tL0hUTUxFbGVtZW50L2F0dHItZGlyLWF1
dG8tZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDE5IEBACitUZXN0IHRoYXQg
ZGlyZWN0aW9uYWxpdHkgb2YgYW4gZWxlbWVudCB3aXRoIGRpcj1hdXRvIHNldCBpcyBkZXRlcm1p
bmVkIGJ5IHRoZSBmaXJzdCBjaGlsZCB0ZXh0IG5vZGUgb2YgdGhhdCBlbGVtZW50LgorCitPbiBz
dWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dl
ZCBieSAiVEVTVCBDT01QTEVURSIuCisKKworCisKKworUEFTUyBkb2N1bWVudC5kZWZhdWx0Vmll
dy5nZXRDb21wdXRlZFN0eWxlKGVsLCBudWxsKS5nZXRQcm9wZXJ0eVZhbHVlKCdib3JkZXItcmln
aHQtY29sb3InKSBpcyAncmdiKDI1NSwgMCwgMCknCitQQVNTIGRvY3VtZW50LmRlZmF1bHRWaWV3
LmdldENvbXB1dGVkU3R5bGUoZWwsIG51bGwpLmdldFByb3BlcnR5VmFsdWUoJ2JvcmRlci1yaWdo
dC1jb2xvcicpIGlzICdyZ2IoMCwgMTI4LCAwKScKK1BBU1MgZG9jdW1lbnQuZGVmYXVsdFZpZXcu
Z2V0Q29tcHV0ZWRTdHlsZShlbCwgbnVsbCkuZ2V0UHJvcGVydHlWYWx1ZSgnYm9yZGVyLXJpZ2h0
LWNvbG9yJykgaXMgJ3JnYigwLCAxMjgsIDApJworCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBp
cyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKworCisKKwpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9k
b20vSFRNTEVsZW1lbnQvYXR0ci1kaXItYXV0by1yZW1vdmUtYWRkLWNoaWxkcmVuLWV4cGVjdGVk
LnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2RvbS9IVE1MRWxlbWVudC9hdHRy
LWRpci1hdXRvLXJlbW92ZS1hZGQtY2hpbGRyZW4tZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQor
KysgTGF5b3V0VGVzdHMvZmFzdC9kb20vSFRNTEVsZW1lbnQvYXR0ci1kaXItYXV0by1yZW1vdmUt
YWRkLWNoaWxkcmVuLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwyMyBAQAor
VGVzdCB0aGF0IGRpcmVjdGlvbmFsaXR5IG9mIGFuIGVsZW1lbnQgd2l0aCBkaXI9YXV0byBzZXQg
aXMgcmUtZXZhbHVhdGVkIHdoZW4gdGhlIGZpcnN0IGNoaWxkIHRleHQgbm9kZSBvZiB0aGF0IGVs
ZW1lbnQgaXMgYWRkZWQgb3IgcmVtb3ZlZC4gQWxzbyB0ZXN0IHRoYXQgZGlyZWN0aW9uYWxpdHkg
ZG9lcyBub3QgY2hhbmdlIGlmIHRoZSBlbGVtZW50IGRvZXMgbm90IGhhdmUgdGhlIGF0dHJpYnV0
ZSBkaXI9YXV0by4KKworT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNT
IiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgorCisKKworCisKK1BBU1Mg
ZG9jdW1lbnQuZGVmYXVsdFZpZXcuZ2V0Q29tcHV0ZWRTdHlsZShwYXJlbnQxLCBudWxsKS5nZXRQ
cm9wZXJ0eVZhbHVlKCdib3JkZXItcmlnaHQtY29sb3InKSBpcyAncmdiKDAsIDEyOCwgMCknCitQ
QVNTIGRvY3VtZW50LmRlZmF1bHRWaWV3LmdldENvbXB1dGVkU3R5bGUocGFyZW50MiwgbnVsbCku
Z2V0UHJvcGVydHlWYWx1ZSgnYm9yZGVyLXJpZ2h0LWNvbG9yJykgaXMgJ3JnYigyNTUsIDAsIDAp
JworUEFTUyBkb2N1bWVudC5kZWZhdWx0Vmlldy5nZXRDb21wdXRlZFN0eWxlKHBhcmVudDMsIG51
bGwpLmdldFByb3BlcnR5VmFsdWUoJ2JvcmRlci1yaWdodC1jb2xvcicpIGlzICdyZ2IoMjU1LCAw
LCAwKScKK1BBU1MgZG9jdW1lbnQuZGVmYXVsdFZpZXcuZ2V0Q29tcHV0ZWRTdHlsZShwYXJlbnQx
LCBudWxsKS5nZXRQcm9wZXJ0eVZhbHVlKCdib3JkZXItcmlnaHQtY29sb3InKSBpcyAncmdiKDI1
NSwgMCwgMCknCitQQVNTIGRvY3VtZW50LmRlZmF1bHRWaWV3LmdldENvbXB1dGVkU3R5bGUocGFy
ZW50MiwgbnVsbCkuZ2V0UHJvcGVydHlWYWx1ZSgnYm9yZGVyLXJpZ2h0LWNvbG9yJykgaXMgJ3Jn
YigwLCAxMjgsIDApJworUEFTUyBkb2N1bWVudC5kZWZhdWx0Vmlldy5nZXRDb21wdXRlZFN0eWxl
KHBhcmVudDIsIG51bGwpLmdldFByb3BlcnR5VmFsdWUoJ2JvcmRlci1yaWdodC1jb2xvcicpIGlz
ICdyZ2IoMjU1LCAwLCAwKScKK1BBU1MgZG9jdW1lbnQuZGVmYXVsdFZpZXcuZ2V0Q29tcHV0ZWRT
dHlsZShwYXJlbnQzLCBudWxsKS5nZXRQcm9wZXJ0eVZhbHVlKCdib3JkZXItcmlnaHQtY29sb3In
KSBpcyAncmdiKDI1NSwgMCwgMCknCisKK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUK
KworVEVTVCBDT01QTEVURQorCisKKworCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2RvbS9IVE1M
RWxlbWVudC9hdHRyLWRpci1hdXRvLXJlbW92ZS1hZGQtY2hpbGRyZW4uaHRtbAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2RvbS9IVE1MRWxlbWVudC9hdHRyLWRpci1hdXRvLXJlbW92
ZS1hZGQtY2hpbGRyZW4uaHRtbAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2Zhc3QvZG9t
L0hUTUxFbGVtZW50L2F0dHItZGlyLWF1dG8tcmVtb3ZlLWFkZC1jaGlsZHJlbi5odG1sCShyZXZp
c2lvbiAwKQpAQCAtMCwwICsxLDYwIEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+
Cis8bWV0YSBodHRwLWVxdWl2PSJDb250ZW50LVR5cGUiIGNvbnRlbnQ9InRleHQvaHRtbDsgY2hh
cnNldD11dGYtOCI+Cis8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4uLy4uL2pzL3Jlc291
cmNlcy9qcy10ZXN0LXN0eWxlLmNzcyI+Cis8c2NyaXB0IHNyYz0iLi4vLi4vanMvcmVzb3VyY2Vz
L2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzxzdHlsZT4KKy50ZXN0RGl2IHstd2Via2l0LWJv
cmRlci1zdGFydDogNXB4IHNvbGlkIGdyZWVuOyAtd2Via2l0LWJvcmRlci1lbmQ6IDVweCBzb2xp
ZCByZWQ7IH0KKzwvc3R5bGU+Cis8L2hlYWQ+Cis8Ym9keT4KKzxwIGlkPSJkZXNjcmlwdGlvbiI+
PC9wPgorPGRpdiBpZD0iY29uc29sZSI+PC9wPgorPGRpdiBpZD0icmVzdWx0Ij48L2Rpdj4KKzxk
aXYgaWQ9InBhcmVudERpdiI+Cis8ZGl2IGlkPSJwYXJlbnQxIiBkaXI9ImF1dG8iIGNsYXNzPSJ0
ZXN0RGl2Ij4KKzxkaXYgaWQ9ImNoaWxkMSI+157Xp9eV16gg15TXqdedINei15HXqNeZ16o8L2Rp
dj4KKzxkaXYgaWQ9ImNoaWxkMiI+VGVzdDwvZGl2PgorPC9kaXY+Cis8ZGl2IGlkPSJwYXJlbnQy
IiBkaXI9ImF1dG8iIGNsYXNzPSJ0ZXN0RGl2Ij4KKzxkaXYgaWQ9ImNoaWxkMyI+VGVzdDwvZGl2
PgorPC9kaXY+Cis8ZGl2IGlkPSJwYXJlbnQzIiBjbGFzcz0idGVzdERpdiI+Cis8ZGl2IGlkPSJj
aGlsZDQiPtee16fXldeoINeU16nXnSDXoteR16jXmdeqPC9kaXY+Cis8L2Rpdj4KKzwvZGl2Pgor
PHNjcmlwdD4KKworZGVzY3JpcHRpb24oJ1Rlc3QgdGhhdCBkaXJlY3Rpb25hbGl0eSBvZiBhbiBl
bGVtZW50IHdpdGggZGlyPWF1dG8gc2V0IGlzIHJlLWV2YWx1YXRlZCB3aGVuIHRoZSBmaXJzdCBj
aGlsZCB0ZXh0IG5vZGUgb2YgdGhhdCBlbGVtZW50IGlzIGFkZGVkIG9yIHJlbW92ZWQuIEFsc28g
dGVzdCB0aGF0IGRpcmVjdGlvbmFsaXR5IGRvZXMgbm90IGNoYW5nZSBpZiB0aGUgZWxlbWVudCBk
b2VzIG5vdCBoYXZlIHRoZSBhdHRyaWJ1dGUgZGlyPWF1dG8uJyk7CisKK3ZhciBwYXJlbnQxID0g
ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInBhcmVudDEiKTsKK3ZhciBwYXJlbnQyID0gZG9jdW1l
bnQuZ2V0RWxlbWVudEJ5SWQoInBhcmVudDIiKTsKK3ZhciBwYXJlbnQzID0gZG9jdW1lbnQuZ2V0
RWxlbWVudEJ5SWQoInBhcmVudDMiKTsKKwordmFyIGNoaWxkMSA9IGRvY3VtZW50LmdldEVsZW1l
bnRCeUlkKCJjaGlsZDEiKTsKK3ZhciBjaGlsZDMgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgi
Y2hpbGQzIik7Cit2YXIgY2hpbGQ0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImNoaWxkNCIp
OworCitzaG91bGRCZSgiZG9jdW1lbnQuZGVmYXVsdFZpZXcuZ2V0Q29tcHV0ZWRTdHlsZShwYXJl
bnQxLCBudWxsKS5nZXRQcm9wZXJ0eVZhbHVlKCdib3JkZXItcmlnaHQtY29sb3InKSIsICIncmdi
KDAsIDEyOCwgMCknIik7CitzaG91bGRCZSgiZG9jdW1lbnQuZGVmYXVsdFZpZXcuZ2V0Q29tcHV0
ZWRTdHlsZShwYXJlbnQyLCBudWxsKS5nZXRQcm9wZXJ0eVZhbHVlKCdib3JkZXItcmlnaHQtY29s
b3InKSIsICIncmdiKDI1NSwgMCwgMCknIik7CitzaG91bGRCZSgiZG9jdW1lbnQuZGVmYXVsdFZp
ZXcuZ2V0Q29tcHV0ZWRTdHlsZShwYXJlbnQzLCBudWxsKS5nZXRQcm9wZXJ0eVZhbHVlKCdib3Jk
ZXItcmlnaHQtY29sb3InKSIsICIncmdiKDI1NSwgMCwgMCknIik7CisKK3BhcmVudDEucmVtb3Zl
Q2hpbGQoY2hpbGQxKQorc2hvdWxkQmUoImRvY3VtZW50LmRlZmF1bHRWaWV3LmdldENvbXB1dGVk
U3R5bGUocGFyZW50MSwgbnVsbCkuZ2V0UHJvcGVydHlWYWx1ZSgnYm9yZGVyLXJpZ2h0LWNvbG9y
JykiLCAiJ3JnYigyNTUsIDAsIDApJyIpOworCitwYXJlbnQyLmluc2VydEJlZm9yZShjaGlsZDEs
IGNoaWxkMyk7CitzaG91bGRCZSgiZG9jdW1lbnQuZGVmYXVsdFZpZXcuZ2V0Q29tcHV0ZWRTdHls
ZShwYXJlbnQyLCBudWxsKS5nZXRQcm9wZXJ0eVZhbHVlKCdib3JkZXItcmlnaHQtY29sb3InKSIs
ICIncmdiKDAsIDEyOCwgMCknIik7CisKK3BhcmVudDIucmVtb3ZlQ2hpbGQoY2hpbGQxKQorc2hv
dWxkQmUoImRvY3VtZW50LmRlZmF1bHRWaWV3LmdldENvbXB1dGVkU3R5bGUocGFyZW50MiwgbnVs
bCkuZ2V0UHJvcGVydHlWYWx1ZSgnYm9yZGVyLXJpZ2h0LWNvbG9yJykiLCAiJ3JnYigyNTUsIDAs
IDApJyIpOworCitwYXJlbnQzLmluc2VydEJlZm9yZShjaGlsZDEsIGNoaWxkNCk7CitzaG91bGRC
ZSgiZG9jdW1lbnQuZGVmYXVsdFZpZXcuZ2V0Q29tcHV0ZWRTdHlsZShwYXJlbnQzLCBudWxsKS5n
ZXRQcm9wZXJ0eVZhbHVlKCdib3JkZXItcmlnaHQtY29sb3InKSIsICIncmdiKDI1NSwgMCwgMCkn
Iik7CisKK2RvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJwYXJlbnREaXYiKS5zdHlsZS5kaXNwbGF5
ID0gIm5vbmUiOword2luZG93LnN1Y2Nlc3NmdWxseVBhcnNlZCA9IHRydWU7Cis8L3NjcmlwdD4K
KzxzY3JpcHQgc3JjPSIuLi8uLi9qcy9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3Njcmlw
dD4KKzwvYm9keT4KKzwvaHRtbD4KSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZG9tL0hUTUxFbGVt
ZW50L2F0dHItZGlyLWF1dG8uaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2Rv
bS9IVE1MRWxlbWVudC9hdHRyLWRpci1hdXRvLmh0bWwJKHJldmlzaW9uIDApCisrKyBMYXlvdXRU
ZXN0cy9mYXN0L2RvbS9IVE1MRWxlbWVudC9hdHRyLWRpci1hdXRvLmh0bWwJKHJldmlzaW9uIDAp
CkBAIC0wLDAgKzEsMzggQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKzxtZXRh
IGh0dHAtZXF1aXY9IkNvbnRlbnQtVHlwZSIgY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PXV0
Zi04Ij4KKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iLi4vLi4vanMvcmVzb3VyY2VzL2pz
LXRlc3Qtc3R5bGUuY3NzIj4KKzxzY3JpcHQgc3JjPSIuLi8uLi9qcy9yZXNvdXJjZXMvanMtdGVz
dC1wcmUuanMiPjwvc2NyaXB0PgorPHN0eWxlPgorLnRlc3REaXYgey13ZWJraXQtYm9yZGVyLXN0
YXJ0OiA1cHggc29saWQgZ3JlZW47IC13ZWJraXQtYm9yZGVyLWVuZDogNXB4IHNvbGlkIHJlZDsg
fQorPC9zdHlsZT4KKzwvaGVhZD4KKzxib2R5PgorPHAgaWQ9ImRlc2NyaXB0aW9uIj48L3A+Cis8
ZGl2IGlkPSJjb25zb2xlIj48L3A+Cis8ZGl2IGlkPSJyZXN1bHQiPjwvZGl2PgorPGRpdiBpZD0i
cGFyZW50RGl2Ij4KK1Rlc3QgdGhhdCB0aGUgZGlyZWN0aW9uIG9mIGVuZ2xpc2ggdGV4dCBpcyBs
ZWZ0LXRvLXJpZ2h0LgorPGRpdiBpZD0ibGVmdC10by1yaWdodCIgZGlyPSJhdXRvIiBjbGFzcz0i
dGVzdERpdiI+VGVzdCB0ZXN0IHRlc3Q8L2Rpdj4KK1Rlc3QgdGhhdCB0aGUgZGlyZWN0aW9uIG9m
IGhlYnJldyB0ZXh0IGlzIHJpZ2h0LXRvLWxlZnQuCis8ZGl2IGlkPSJyaWdodC10by1sZWZ0MSIg
ZGlyPSJhdXRvIiBjbGFzcz0idGVzdERpdiI+157Xp9eV16gg15TXqdedINei15HXqNeZ16o8L2Rp
dj4KK1Rlc3QgdGhhdCAnPycgZG9lcyBub3QgYWZmZWN0IHRoZSBkaXJlY3Rpb25hbGl0eS4KKzxk
aXYgaWQ9InJpZ2h0LXRvLWxlZnQyIiBkaXI9ImF1dG8iIGNsYXNzPSJ0ZXN0RGl2Ij48c3Bhbj4/
Pzwvc3Bhbj7Xnten15XXqCDXlNep150g16LXkdeo15nXqjxzcGFuPj8/PC9zcGFuPjwvZGl2Pgor
PC9kaXY+Cis8c2NyaXB0PgorCitkZXNjcmlwdGlvbignVGVzdCB0aGF0IGRpcmVjdGlvbmFsaXR5
IG9mIGFuIGVsZW1lbnQgd2l0aCBkaXI9YXV0byBzZXQgaXMgZGV0ZXJtaW5lZCBieSB0aGUgZmly
c3QgY2hpbGQgdGV4dCBub2RlIG9mIHRoYXQgZWxlbWVudC4nKTsKKwordmFyIGVsID0gZG9jdW1l
bnQuZ2V0RWxlbWVudEJ5SWQoImxlZnQtdG8tcmlnaHQiKTsKK3Nob3VsZEJlKCJkb2N1bWVudC5k
ZWZhdWx0Vmlldy5nZXRDb21wdXRlZFN0eWxlKGVsLCBudWxsKS5nZXRQcm9wZXJ0eVZhbHVlKCdi
b3JkZXItcmlnaHQtY29sb3InKSIsICIncmdiKDI1NSwgMCwgMCknIik7CitlbCA9IGRvY3VtZW50
LmdldEVsZW1lbnRCeUlkKCJyaWdodC10by1sZWZ0MSIpOworc2hvdWxkQmUoImRvY3VtZW50LmRl
ZmF1bHRWaWV3LmdldENvbXB1dGVkU3R5bGUoZWwsIG51bGwpLmdldFByb3BlcnR5VmFsdWUoJ2Jv
cmRlci1yaWdodC1jb2xvcicpIiwgIidyZ2IoMCwgMTI4LCAwKSciKTsKK2VsID0gZG9jdW1lbnQu
Z2V0RWxlbWVudEJ5SWQoInJpZ2h0LXRvLWxlZnQyIik7CitzaG91bGRCZSgiZG9jdW1lbnQuZGVm
YXVsdFZpZXcuZ2V0Q29tcHV0ZWRTdHlsZShlbCwgbnVsbCkuZ2V0UHJvcGVydHlWYWx1ZSgnYm9y
ZGVyLXJpZ2h0LWNvbG9yJykiLCAiJ3JnYigwLCAxMjgsIDApJyIpOworZG9jdW1lbnQuZ2V0RWxl
bWVudEJ5SWQoInBhcmVudERpdiIpLnN0eWxlLmRpc3BsYXkgPSAibm9uZSI7Cit3aW5kb3cuc3Vj
Y2Vzc2Z1bGx5UGFyc2VkID0gdHJ1ZTsKKzwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uL2pz
L3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpJ
bmRleDogTGF5b3V0VGVzdHMvZmFzdC9kb20vSFRNTEVsZW1lbnQvYXR0ci1kaXItdmFsdWUtY2hh
bmdlLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2RvbS9IVE1M
RWxlbWVudC9hdHRyLWRpci12YWx1ZS1jaGFuZ2UtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQor
KysgTGF5b3V0VGVzdHMvZmFzdC9kb20vSFRNTEVsZW1lbnQvYXR0ci1kaXItdmFsdWUtY2hhbmdl
LWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwyNCBAQAorVGVzdCB0aGF0IGRp
cmVjdGlvbmFsaXR5IGlzIHJlLWV2YWx1YXRlZCB3aGVuIGFuIGVsZW1lbnQgd2l0aCBkaXI9YXV0
byBzZXQsIGhhcyBpdHMgZGlyIGF0dHJpYnV0ZSBjaGFuZ2VkLgorCitPbiBzdWNjZXNzLCB5b3Ug
d2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBD
T01QTEVURSIuCisKKworCisKKworCitQQVNTIGRvY3VtZW50LmRlZmF1bHRWaWV3LmdldENvbXB1
dGVkU3R5bGUoZWwsIG51bGwpLmdldFByb3BlcnR5VmFsdWUoJ2JvcmRlci1yaWdodC1jb2xvcicp
IGlzICdyZ2IoMCwgMTI4LCAwKScKK1BBU1MgZG9jdW1lbnQuZGVmYXVsdFZpZXcuZ2V0Q29tcHV0
ZWRTdHlsZShjaGlsZDIsIG51bGwpLmdldFByb3BlcnR5VmFsdWUoJ2JvcmRlci1yaWdodC1jb2xv
cicpIGlzICdyZ2IoMCwgMTI4LCAwKScKK1BBU1MgZG9jdW1lbnQuZGVmYXVsdFZpZXcuZ2V0Q29t
cHV0ZWRTdHlsZShlbCwgbnVsbCkuZ2V0UHJvcGVydHlWYWx1ZSgnYm9yZGVyLXJpZ2h0LWNvbG9y
JykgaXMgJ3JnYigyNTUsIDAsIDApJworUEFTUyBkb2N1bWVudC5kZWZhdWx0Vmlldy5nZXRDb21w
dXRlZFN0eWxlKGNoaWxkMiwgbnVsbCkuZ2V0UHJvcGVydHlWYWx1ZSgnYm9yZGVyLXJpZ2h0LWNv
bG9yJykgaXMgJ3JnYigwLCAxMjgsIDApJworUEFTUyBkb2N1bWVudC5kZWZhdWx0Vmlldy5nZXRD
b21wdXRlZFN0eWxlKGNoaWxkMiwgbnVsbCkuZ2V0UHJvcGVydHlWYWx1ZSgnYm9yZGVyLXJpZ2h0
LWNvbG9yJykgaXMgJ3JnYigyNTUsIDAsIDApJworUEFTUyBkb2N1bWVudC5kZWZhdWx0Vmlldy5n
ZXRDb21wdXRlZFN0eWxlKGVsLCBudWxsKS5nZXRQcm9wZXJ0eVZhbHVlKCdib3JkZXItcmlnaHQt
Y29sb3InKSBpcyAncmdiKDAsIDEyOCwgMCknCitQQVNTIGRvY3VtZW50LmRlZmF1bHRWaWV3Lmdl
dENvbXB1dGVkU3R5bGUoY2hpbGQyLCBudWxsKS5nZXRQcm9wZXJ0eVZhbHVlKCdib3JkZXItcmln
aHQtY29sb3InKSBpcyAncmdiKDI1NSwgMCwgMCknCisKK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2Vk
IGlzIHRydWUKKworVEVTVCBDT01QTEVURQorCisKKworCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0
L2RvbS9IVE1MRWxlbWVudC9hdHRyLWRpci12YWx1ZS1jaGFuZ2UuaHRtbAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBMYXlvdXRUZXN0cy9mYXN0L2RvbS9IVE1MRWxlbWVudC9hdHRyLWRpci12YWx1ZS1jaGFuZ2Uu
aHRtbAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2Zhc3QvZG9tL0hUTUxFbGVtZW50L2F0
dHItZGlyLXZhbHVlLWNoYW5nZS5odG1sCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDUwIEBACis8
IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8bWV0YSBodHRwLWVxdWl2PSJDb250ZW50
LVR5cGUiIGNvbnRlbnQ9InRleHQvaHRtbDsgY2hhcnNldD11dGYtOCI+Cis8bGluayByZWw9InN0
eWxlc2hlZXQiIGhyZWY9Ii4uLy4uL2pzL3Jlc291cmNlcy9qcy10ZXN0LXN0eWxlLmNzcyI+Cis8
c2NyaXB0IHNyYz0iLi4vLi4vanMvcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4K
KzxzdHlsZT4KKy50ZXN0RGl2IHstd2Via2l0LWJvcmRlci1zdGFydDogNXB4IHNvbGlkIGdyZWVu
OyAtd2Via2l0LWJvcmRlci1lbmQ6IDVweCBzb2xpZCByZWQ7IH0KKzwvc3R5bGU+Cis8L2hlYWQ+
Cis8Ym9keT4KKzxwIGlkPSJkZXNjcmlwdGlvbiI+PC9wPgorPGRpdiBpZD0iY29uc29sZSI+PC9w
PgorPGRpdiBpZD0icmVzdWx0Ij48L2Rpdj4KKworPGRpdiBpZD0idGVzdCIgZGlyPSJhdXRvIiBj
bGFzcz0idGVzdERpdiI+PC9kaXY+Cis8c2NyaXB0PgorCitkZXNjcmlwdGlvbignVGVzdCB0aGF0
IGRpcmVjdGlvbmFsaXR5IGlzIHJlLWV2YWx1YXRlZCB3aGVuIGFuIGVsZW1lbnQgd2l0aCBkaXI9
YXV0byBzZXQsIGhhcyBpdHMgZGlyIGF0dHJpYnV0ZSBjaGFuZ2VkLicpOworCit2YXIgZWwgPSBk
b2N1bWVudC5nZXRFbGVtZW50QnlJZCgidGVzdCIpOwordmFyIGNoaWxkID0gZG9jdW1lbnQuY3Jl
YXRlRWxlbWVudCgiZGl2Iik7CitjaGlsZC5pbm5lckhUTUw9Itee16fXldeoINeU16nXnSDXoteR
16jXmdeqIjsKK2VsLmFwcGVuZENoaWxkKGNoaWxkKTsKK3ZhciBjaGlsZDIgPSBkb2N1bWVudC5j
cmVhdGVFbGVtZW50KCJkaXYiKTsKK2NoaWxkMi5pbm5lckhUTUwgPSAi157Xp9eV16gg15TXqded
INei15HXqNeZ16oiOworY2hpbGQyLnNldEF0dHJpYnV0ZSgiZGlyIiwgImF1dG8iKTsKK2NoaWxk
Mi5zZXRBdHRyaWJ1dGUoImNsYXNzIiwgInRlc3REaXYiKTsKK2NoaWxkLmFwcGVuZENoaWxkKGNo
aWxkMik7CitzaG91bGRCZSgiZG9jdW1lbnQuZGVmYXVsdFZpZXcuZ2V0Q29tcHV0ZWRTdHlsZShl
bCwgbnVsbCkuZ2V0UHJvcGVydHlWYWx1ZSgnYm9yZGVyLXJpZ2h0LWNvbG9yJykiLCAiJ3JnYigw
LCAxMjgsIDApJyIpOworc2hvdWxkQmUoImRvY3VtZW50LmRlZmF1bHRWaWV3LmdldENvbXB1dGVk
U3R5bGUoY2hpbGQyLCBudWxsKS5nZXRQcm9wZXJ0eVZhbHVlKCdib3JkZXItcmlnaHQtY29sb3In
KSIsICIncmdiKDAsIDEyOCwgMCknIik7CisKK2VsLnNldEF0dHJpYnV0ZSgiZGlyIiwgImx0ciIp
Oworc2hvdWxkQmUoImRvY3VtZW50LmRlZmF1bHRWaWV3LmdldENvbXB1dGVkU3R5bGUoZWwsIG51
bGwpLmdldFByb3BlcnR5VmFsdWUoJ2JvcmRlci1yaWdodC1jb2xvcicpIiwgIidyZ2IoMjU1LCAw
LCAwKSciKTsKK3Nob3VsZEJlKCJkb2N1bWVudC5kZWZhdWx0Vmlldy5nZXRDb21wdXRlZFN0eWxl
KGNoaWxkMiwgbnVsbCkuZ2V0UHJvcGVydHlWYWx1ZSgnYm9yZGVyLXJpZ2h0LWNvbG9yJykiLCAi
J3JnYigwLCAxMjgsIDApJyIpOworCitjaGlsZDIuaW5uZXJIVE1MID0gIlRlc3QiOworc2hvdWxk
QmUoImRvY3VtZW50LmRlZmF1bHRWaWV3LmdldENvbXB1dGVkU3R5bGUoY2hpbGQyLCBudWxsKS5n
ZXRQcm9wZXJ0eVZhbHVlKCdib3JkZXItcmlnaHQtY29sb3InKSIsICIncmdiKDI1NSwgMCwgMCkn
Iik7CisKK2VsLnNldEF0dHJpYnV0ZSgiZGlyIiwgImF1dG8iKTsKK3Nob3VsZEJlKCJkb2N1bWVu
dC5kZWZhdWx0Vmlldy5nZXRDb21wdXRlZFN0eWxlKGVsLCBudWxsKS5nZXRQcm9wZXJ0eVZhbHVl
KCdib3JkZXItcmlnaHQtY29sb3InKSIsICIncmdiKDAsIDEyOCwgMCknIik7CitzaG91bGRCZSgi
ZG9jdW1lbnQuZGVmYXVsdFZpZXcuZ2V0Q29tcHV0ZWRTdHlsZShjaGlsZDIsIG51bGwpLmdldFBy
b3BlcnR5VmFsdWUoJ2JvcmRlci1yaWdodC1jb2xvcicpIiwgIidyZ2IoMjU1LCAwLCAwKSciKTsK
KworZWwuc3R5bGUuZGlzcGxheSA9ICJub25lIjsKKword2luZG93LnN1Y2Nlc3NmdWxseVBhcnNl
ZCA9IHRydWU7Cis8L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9qcy9yZXNvdXJjZXMvanMt
dGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4K
</data>
<flag name="review"
          id="74490"
          type_id="1"
          status="+"
          setter="hyatt"
    />
          </attachment>
      

    </bug>

</bugzilla>