<?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>71406</bug_id>
          
          <creation_ts>2011-11-02 14:25:39 -0700</creation_ts>
          <short_desc>[CSS Shaders] Implement CSS Animations and Transitions for CSS Shaders</short_desc>
          <delta_ts>2012-07-19 12:18:18 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>CSS</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>71392</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Dean Jackson">dino</reporter>
          <assigned_to name="Alexandru Chiculita">achicu</assigned_to>
          <cc>achicu</cc>
    
    <cc>cmarrin</cc>
    
    <cc>dino</cc>
    
    <cc>jer.noble</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>494905</commentid>
    <comment_count>0</comment_count>
    <who name="Dean Jackson">dino</who>
    <bug_when>2011-11-02 14:25:39 -0700</bug_when>
    <thetext>We need a new PropertyWrapper to transition shader parameters</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>494906</commentid>
    <comment_count>1</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2011-11-02 14:26:08 -0700</bug_when>
    <thetext>&lt;rdar://problem/10386040&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>610262</commentid>
    <comment_count>2</comment_count>
      <attachid>138915</attachid>
    <who name="Alexandru Chiculita">achicu</who>
    <bug_when>2012-04-25 18:13:37 -0700</bug_when>
    <thetext>Created attachment 138915
Code

Saving current work on this bug. No tests yet and no code cleanup.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>611049</commentid>
    <comment_count>3</comment_count>
      <attachid>139088</attachid>
    <who name="Alexandru Chiculita">achicu</who>
    <bug_when>2012-04-26 15:56:38 -0700</bug_when>
    <thetext>Created attachment 139088
Patch V2</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>611066</commentid>
    <comment_count>4</comment_count>
      <attachid>139094</attachid>
    <who name="Alexandru Chiculita">achicu</who>
    <bug_when>2012-04-26 16:25:05 -0700</bug_when>
    <thetext>Created attachment 139094
Patch V3

Also added a test that checks that the mesh and other custom filter attribute cannot animate.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>611714</commentid>
    <comment_count>5</comment_count>
      <attachid>139094</attachid>
    <who name="Dean Jackson">dino</who>
    <bug_when>2012-04-27 11:21:49 -0700</bug_when>
    <thetext>Comment on attachment 139094
Patch V3

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

Minor comments.

&gt; LayoutTests/css3/filters/custom/custom-filter-animation.html:114
&gt; +            // CSS Shaders do not get good FPS in debug mode, so the tolerance needs to be higher.

I think we should have a bug open to reduce the tolerance in the future.

&gt; LayoutTests/css3/filters/resources/custom-filter-parser.js:2
&gt; +(function() {
&gt; +

We don&apos;t normally follow this style in WebKit, as far as I know. I understand it&apos;s common on the Web. This isn&apos;t a big deal to me.

In general I&apos;d like to see some comments in this file to explain what the various parts do. I expect other tests might want to copy this for their own use.

&gt; LayoutTests/css3/filters/resources/custom-filter-parser.js:127
&gt; +            else if (m.ahead().isA(&quot;,&quot;, endToken))
&gt; +                result.push({
&gt; +                    type: &quot;keyword&quot;, 
&gt; +                    value: m.skip().value
&gt; +                });

suggest {} here

&gt; Source/WebCore/ChangeLog:11
&gt; +         between the &quot;from&quot; and &quot;to&quot; states.

indentation.

&gt; Source/WebCore/platform/graphics/filters/CustomFilterOperation.cpp:43
&gt; +bool equalCustomFilterParameters(const CustomFilterParameterList&amp; listA, const CustomFilterParameterList&amp; listB)

I suggest customFilterParametersEqual

&gt; Source/WebCore/platform/graphics/filters/CustomFilterOperation.cpp:49
&gt; +        if (listA.at(i).get() != listB.at(i).get() 
&gt; +            &amp;&amp; !(*listA.at(i).get() == *listB.at(i).get()))

Any reason to not use != here?

&gt; Source/WebCore/platform/graphics/filters/CustomFilterOperation.cpp:62
&gt; +    for (unsigned i = 1; i &lt; parameters.size(); ++i) {
&gt; +        // Break for equal or not-sorted parameters.
&gt; +        if (!codePointCompareLessThan(parameters.at(i - i)-&gt;name(), parameters.at(i)-&gt;name()))
&gt; +            return false;
&gt; +    }

I&apos;m confused. at(i - i) ?

&gt; Source/WebCore/platform/graphics/filters/CustomFilterOperation.cpp:71
&gt; +    ASSERT(checkCustomFilterParametersOrder(fromList));
&gt; +    ASSERT(checkCustomFilterParametersOrder(toList));

Doesn&apos;t this need guarding? It&apos;s #ifndef above.

&gt; Source/WebCore/platform/graphics/filters/CustomFilterOperation.cpp:107
&gt; +    ASSERT(checkCustomFilterParametersOrder(m_parameters));

ditto

&gt; Source/WebCore/platform/graphics/filters/CustomFilterOperation.cpp:117
&gt; +    // FIXME: There&apos;s no way to decide what is the &quot;passthrough filter&quot; for shaders using the current CSS Syntax.
&gt; +    // https://bugs.webkit.org/show_bug.cgi?id=84903

Link to spec bug on w3.org too?

&gt; Source/WebCore/platform/graphics/filters/CustomFilterOperation.cpp:122
&gt; +    if (!(*m_program.get() == *fromOp-&gt;m_program.get())

Ditto on the != question

&gt; Source/WebCore/platform/graphics/filters/CustomFilterOperation.h:46
&gt; +bool equalCustomFilterParameters(const CustomFilterParameterList&amp; listA, const CustomFilterParameterList&amp; listB);

I guess we don&apos;t really need the parameter names here, following WK style.

&gt; Source/WebCore/rendering/style/StyleCustomFilterProgram.h:125
&gt; +        return cachedVertexShader() == other-&gt;cachedVertexShader()
&gt; +            &amp;&amp; cachedFragmentShader() == other-&gt;cachedFragmentShader();

Suggest just one line here.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>611730</commentid>
    <comment_count>6</comment_count>
    <who name="Alexandru Chiculita">achicu</who>
    <bug_when>2012-04-27 11:36:22 -0700</bug_when>
    <thetext>(In reply to comment #5)
&gt; (From update of attachment 139094 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=139094&amp;action=review
&gt; 
Thanks for reviewing this. I will post a new patch soon.

&gt; Minor comments.
&gt; 
&gt; &gt; LayoutTests/css3/filters/custom/custom-filter-animation.html:114
&gt; &gt; +            // CSS Shaders do not get good FPS in debug mode, so the tolerance needs to be higher.
&gt; 
&gt; I think we should have a bug open to reduce the tolerance in the future.
Ok. Will add one.

&gt; 
&gt; &gt; LayoutTests/css3/filters/resources/custom-filter-parser.js:2
&gt; &gt; +(function() {
&gt; &gt; +
&gt; 
&gt; We don&apos;t normally follow this style in WebKit, as far as I know. I understand it&apos;s common on the Web. This isn&apos;t a big deal to me.
Ok. I will remove it. I didn&apos;t want to pollute the &quot;window&quot; global object.

&gt; 
&gt; In general I&apos;d like to see some comments in this file to explain what the various parts do. I expect other tests might want to copy this for their own use.

I will add more comments.

&gt; 
&gt; &gt; LayoutTests/css3/filters/resources/custom-filter-parser.js:127
&gt; &gt; +            else if (m.ahead().isA(&quot;,&quot;, endToken))
&gt; &gt; +                result.push({
&gt; &gt; +                    type: &quot;keyword&quot;, 
&gt; &gt; +                    value: m.skip().value
&gt; &gt; +                });
&gt; 
&gt; suggest {} here
&gt; 
&gt; &gt; Source/WebCore/ChangeLog:11
&gt; &gt; +         between the &quot;from&quot; and &quot;to&quot; states.
&gt; 
&gt; indentation.
Ok.

&gt; 
&gt; &gt; Source/WebCore/platform/graphics/filters/CustomFilterOperation.cpp:43
&gt; &gt; +bool equalCustomFilterParameters(const CustomFilterParameterList&amp; listA, const CustomFilterParameterList&amp; listB)
&gt; 
&gt; I suggest customFilterParametersEqual
Ok.

&gt; 
&gt; &gt; Source/WebCore/platform/graphics/filters/CustomFilterOperation.cpp:49
&gt; &gt; +        if (listA.at(i).get() != listB.at(i).get() 
&gt; &gt; +            &amp;&amp; !(*listA.at(i).get() == *listB.at(i).get()))
&gt; 
&gt; Any reason to not use != here?
It complained about not having one. I guess I can implement the != based on the == operator.

&gt; 
&gt; &gt; Source/WebCore/platform/graphics/filters/CustomFilterOperation.cpp:62
&gt; &gt; +    for (unsigned i = 1; i &lt; parameters.size(); ++i) {
&gt; &gt; +        // Break for equal or not-sorted parameters.
&gt; &gt; +        if (!codePointCompareLessThan(parameters.at(i - i)-&gt;name(), parameters.at(i)-&gt;name()))
&gt; &gt; +            return false;
&gt; &gt; +    }
&gt; 
&gt; I&apos;m confused. at(i - i) ?
This is a typo. Sorry, it should be i - 1.
&gt; 
&gt; &gt; Source/WebCore/platform/graphics/filters/CustomFilterOperation.cpp:71
&gt; &gt; +    ASSERT(checkCustomFilterParametersOrder(fromList));
&gt; &gt; +    ASSERT(checkCustomFilterParametersOrder(toList));
&gt; 
&gt; Doesn&apos;t this need guarding? It&apos;s #ifndef above.
I thought that ASSERT will guard it by default. That&apos;s why I ifndef it, because otherwise there will be no reference to it.

&gt; 
&gt; &gt; Source/WebCore/platform/graphics/filters/CustomFilterOperation.cpp:107
&gt; &gt; +    ASSERT(checkCustomFilterParametersOrder(m_parameters));
&gt; 
&gt; ditto
&gt; 
&gt; &gt; Source/WebCore/platform/graphics/filters/CustomFilterOperation.cpp:117
&gt; &gt; +    // FIXME: There&apos;s no way to decide what is the &quot;passthrough filter&quot; for shaders using the current CSS Syntax.
&gt; &gt; +    // https://bugs.webkit.org/show_bug.cgi?id=84903
&gt; 
&gt; Link to spec bug on w3.org too?
Ok.

&gt; 
&gt; &gt; Source/WebCore/platform/graphics/filters/CustomFilterOperation.cpp:122
&gt; &gt; +    if (!(*m_program.get() == *fromOp-&gt;m_program.get())
&gt; 
&gt; Ditto on the != question
Ok.

&gt; 
&gt; &gt; Source/WebCore/platform/graphics/filters/CustomFilterOperation.h:46
&gt; &gt; +bool equalCustomFilterParameters(const CustomFilterParameterList&amp; listA, const CustomFilterParameterList&amp; listB);
&gt; 
&gt; I guess we don&apos;t really need the parameter names here, following WK style.
Ok.
&gt; 
&gt; &gt; Source/WebCore/rendering/style/StyleCustomFilterProgram.h:125
&gt; &gt; +        return cachedVertexShader() == other-&gt;cachedVertexShader()
&gt; &gt; +            &amp;&amp; cachedFragmentShader() == other-&gt;cachedFragmentShader();
&gt; 
&gt; Suggest just one line here.

Ok.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>611788</commentid>
    <comment_count>7</comment_count>
      <attachid>139250</attachid>
    <who name="Alexandru Chiculita">achicu</who>
    <bug_when>2012-04-27 12:44:00 -0700</bug_when>
    <thetext>Created attachment 139250
Patch V4</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>611804</commentid>
    <comment_count>8</comment_count>
      <attachid>139250</attachid>
    <who name="Dean Jackson">dino</who>
    <bug_when>2012-04-27 13:07:20 -0700</bug_when>
    <thetext>Comment on attachment 139250
Patch V4

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

&gt; LayoutTests/css3/filters/custom/custom-filter-animation.html:54
&gt; +    
&gt; +        #custom-from-no-params-box {
&gt; +            -webkit-animation: custom-from-no-params-anim 2s linear
&gt; +        }
&gt; +    
&gt; +        #custom-to-no-params-box {
&gt; +            -webkit-animation: custom-to-no-params-anim 2s linear
&gt; +        }
&gt; +        
&gt; +        #custom-mix-attributes-box {
&gt; +            -webkit-animation: custom-mix-attributes-anim 2s linear
&gt; +        }
&gt; +    
&gt; +        #custom-from-diff-params-box {
&gt; +            -webkit-animation: custom-from-diff-params-anim 2s linear
&gt; +        }
&gt; +    
&gt; +        #custom-to-diff-params-box {
&gt; +            -webkit-animation: custom-to-diff-params-anim 2s linear
&gt; +        }
&gt; +    
&gt; +        #custom-mix-params-box {
&gt; +            -webkit-animation: custom-mix-params-anim 2s linear
&gt; +        }
&gt; +        
&gt; +        #custom-mix-numbers-box {
&gt; +            -webkit-animation: custom-mix-numbers-anim 2s linear
&gt; +        }

Could you add semicolons to the end of the rules?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>611805</commentid>
    <comment_count>9</comment_count>
    <who name="Dean Jackson">dino</who>
    <bug_when>2012-04-27 13:08:22 -0700</bug_when>
    <thetext>(In reply to comment #6)

&gt; &gt; &gt; Source/WebCore/platform/graphics/filters/CustomFilterOperation.cpp:71
&gt; &gt; &gt; +    ASSERT(checkCustomFilterParametersOrder(fromList));
&gt; &gt; &gt; +    ASSERT(checkCustomFilterParametersOrder(toList));
&gt; &gt; 
&gt; &gt; Doesn&apos;t this need guarding? It&apos;s #ifndef above.
&gt; I thought that ASSERT will guard it by default. That&apos;s why I ifndef it, because otherwise there will be no reference to it.

Cool. I hadn&apos;t thought about that :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>611809</commentid>
    <comment_count>10</comment_count>
    <who name="Alexandru Chiculita">achicu</who>
    <bug_when>2012-04-27 13:09:19 -0700</bug_when>
    <thetext>(In reply to comment #9)
&gt; (In reply to comment #6)
&gt; 
&gt; &gt; &gt; &gt; Source/WebCore/platform/graphics/filters/CustomFilterOperation.cpp:71
&gt; &gt; &gt; &gt; +    ASSERT(checkCustomFilterParametersOrder(fromList));
&gt; &gt; &gt; &gt; +    ASSERT(checkCustomFilterParametersOrder(toList));
&gt; &gt; &gt; 
&gt; &gt; &gt; Doesn&apos;t this need guarding? It&apos;s #ifndef above.
&gt; &gt; I thought that ASSERT will guard it by default. That&apos;s why I ifndef it, because otherwise there will be no reference to it.
&gt; 
&gt; Cool. I hadn&apos;t thought about that :)

Yes, I found that others are using #if !ASSERT_DISABLED so I used that instead.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>611811</commentid>
    <comment_count>11</comment_count>
    <who name="Alexandru Chiculita">achicu</who>
    <bug_when>2012-04-27 13:09:38 -0700</bug_when>
    <thetext>(In reply to comment #8)
&gt; (From update of attachment 139250 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=139250&amp;action=review
&gt; 
&gt; &gt; LayoutTests/css3/filters/custom/custom-filter-animation.html:54
&gt; &gt; +    
&gt; &gt; +        #custom-from-no-params-box {
&gt; &gt; +            -webkit-animation: custom-from-no-params-anim 2s linear
&gt; &gt; +        }
&gt; &gt; +    
&gt; &gt; +        #custom-to-no-params-box {
&gt; &gt; +            -webkit-animation: custom-to-no-params-anim 2s linear
&gt; &gt; +        }
&gt; &gt; +        
&gt; &gt; +        #custom-mix-attributes-box {
&gt; &gt; +            -webkit-animation: custom-mix-attributes-anim 2s linear
&gt; &gt; +        }
&gt; &gt; +    
&gt; &gt; +        #custom-from-diff-params-box {
&gt; &gt; +            -webkit-animation: custom-from-diff-params-anim 2s linear
&gt; &gt; +        }
&gt; &gt; +    
&gt; &gt; +        #custom-to-diff-params-box {
&gt; &gt; +            -webkit-animation: custom-to-diff-params-anim 2s linear
&gt; &gt; +        }
&gt; &gt; +    
&gt; &gt; +        #custom-mix-params-box {
&gt; &gt; +            -webkit-animation: custom-mix-params-anim 2s linear
&gt; &gt; +        }
&gt; &gt; +        
&gt; &gt; +        #custom-mix-numbers-box {
&gt; &gt; +            -webkit-animation: custom-mix-numbers-anim 2s linear
&gt; &gt; +        }
&gt; 
&gt; Could you add semicolons to the end of the rules?

Sure, will add it before committing.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>611853</commentid>
    <comment_count>12</comment_count>
    <who name="Alexandru Chiculita">achicu</who>
    <bug_when>2012-04-27 13:35:48 -0700</bug_when>
    <thetext>Landed in http://trac.webkit.org/changeset/115487 .</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>673731</commentid>
    <comment_count>13</comment_count>
    <who name="Jer Noble">jer.noble</who>
    <bug_when>2012-07-19 11:36:40 -0700</bug_when>
    <thetext>(In reply to comment #12)
&gt; Landed in http://trac.webkit.org/changeset/115487 .

The test LayoutTests/css3/filters/custom/custom-filter-animation.html has been broken since it was added.  Bug #84813 was filed to track this error.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>673773</commentid>
    <comment_count>14</comment_count>
    <who name="Jer Noble">jer.noble</who>
    <bug_when>2012-07-19 12:18:18 -0700</bug_when>
    <thetext>(In reply to comment #13)
&gt; (In reply to comment #12)
&gt; &gt; Landed in http://trac.webkit.org/changeset/115487 .
&gt; 
&gt; The test LayoutTests/css3/filters/custom/custom-filter-animation.html has been broken since it was added.  Bug #84813 was filed to track this error.

Apologies, the correct bug is bug #91769.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>138915</attachid>
            <date>2012-04-25 18:13:37 -0700</date>
            <delta_ts>2012-04-26 15:56:38 -0700</delta_ts>
            <desc>Code</desc>
            <filename>bug71406.patch</filename>
            <type>text/plain</type>
            <size>10920</size>
            <attacher name="Alexandru Chiculita">achicu</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvQ3Vz
dG9tRmlsdGVyTnVtYmVyUGFyYW1ldGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9maWx0ZXJzL0N1c3RvbUZpbHRlck51bWJlclBhcmFtZXRlci5oCmluZGV4IDBhZGUxNzMu
LjI3NzBiNGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Zp
bHRlcnMvQ3VzdG9tRmlsdGVyTnVtYmVyUGFyYW1ldGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9DdXN0b21GaWx0ZXJOdW1iZXJQYXJhbWV0ZXIuaApA
QCAtNDgsNiArNDgsMjcgQEAgcHVibGljOgogCiAgICAgdm9pZCBhZGRWYWx1ZShkb3VibGUgdmFs
dWUpIHsgbV9kYXRhLmFwcGVuZCh2YWx1ZSk7IH0KICAgICAKKyAgICB2aXJ0dWFsIFBhc3NSZWZQ
dHI8Q3VzdG9tRmlsdGVyUGFyYW1ldGVyPiBibGVuZChjb25zdCBDdXN0b21GaWx0ZXJQYXJhbWV0
ZXIqIGZyb20sIGRvdWJsZSBwcm9ncmVzcykKKyAgICB7CisgICAgICAgIGlmICghZnJvbSB8fCAh
aXNTYW1lVHlwZSgqZnJvbSkpCisgICAgICAgICAgICByZXR1cm4gdGhpczsKKyAgICAgICAgY29u
c3QgQ3VzdG9tRmlsdGVyTnVtYmVyUGFyYW1ldGVyKiBmcm9tTnVtYmVyID0gc3RhdGljX2Nhc3Q8
Y29uc3QgQ3VzdG9tRmlsdGVyTnVtYmVyUGFyYW1ldGVyKj4oZnJvbSk7CisgICAgICAgIGlmIChz
aXplKCkgIT0gZnJvbU51bWJlci0+c2l6ZSgpKQorICAgICAgICAgICAgcmV0dXJuIHRoaXM7Cisg
ICAgICAgIFJlZlB0cjxDdXN0b21GaWx0ZXJOdW1iZXJQYXJhbWV0ZXI+IHJlc3VsdCA9IEN1c3Rv
bUZpbHRlck51bWJlclBhcmFtZXRlcjo6Y3JlYXRlKG5hbWUoKSk7CisgICAgICAgIGZvciAoc2l6
ZV90IGkgPSAwOyBpIDwgc2l6ZSgpOyArK2kpCisgICAgICAgICAgICByZXN1bHQtPmFkZFZhbHVl
KFdlYkNvcmU6OmJsZW5kKGZyb21OdW1iZXItPnZhbHVlQXQoaSksIHZhbHVlQXQoaSksIHByb2dy
ZXNzKSk7CisgICAgICAgIHJldHVybiByZXN1bHQucmVsZWFzZSgpOworICAgIH0KKyAgICAKKyAg
ICB2aXJ0dWFsIGJvb2wgb3BlcmF0b3I9PShjb25zdCBDdXN0b21GaWx0ZXJQYXJhbWV0ZXImIG8p
IGNvbnN0CisgICAgeworICAgICAgICBpZiAoIWlzU2FtZVR5cGUobykpCisgICAgICAgICAgICBy
ZXR1cm4gZmFsc2U7CisgICAgICAgIGNvbnN0IEN1c3RvbUZpbHRlck51bWJlclBhcmFtZXRlciog
b3RoZXIgPSBzdGF0aWNfY2FzdDxjb25zdCBDdXN0b21GaWx0ZXJOdW1iZXJQYXJhbWV0ZXIqPigm
byk7CisgICAgICAgIHJldHVybiBtX2RhdGEgPT0gb3RoZXItPm1fZGF0YTsKKyAgICB9CisgICAg
CiBwcml2YXRlOgogICAgIEN1c3RvbUZpbHRlck51bWJlclBhcmFtZXRlcihjb25zdCBTdHJpbmcm
IG5hbWUpCiAgICAgICAgIDogQ3VzdG9tRmlsdGVyUGFyYW1ldGVyKE5VTUJFUiwgbmFtZSkKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvQ3VzdG9t
RmlsdGVyT3BlcmF0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Zp
bHRlcnMvQ3VzdG9tRmlsdGVyT3BlcmF0aW9uLmNwcAppbmRleCBjMDVhNDBmLi43YTBjMmU3IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0N1c3Rv
bUZpbHRlck9wZXJhdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvZmlsdGVycy9DdXN0b21GaWx0ZXJPcGVyYXRpb24uY3BwCkBAIC00MCw2ICs0MCw2MCBAQAog
CiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKK2Jvb2wgZXF1YWxDdXN0b21GaWx0ZXJQYXJhbWV0ZXJz
KGNvbnN0IEN1c3RvbUZpbHRlclBhcmFtZXRlckxpc3QmIGxpc3RBLCBjb25zdCBDdXN0b21GaWx0
ZXJQYXJhbWV0ZXJMaXN0JiBsaXN0QikKK3sKKyAgICBpZiAobGlzdEEuc2l6ZSgpICE9IGxpc3RC
LnNpemUoKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIGZvciAoc2l6ZV90IGkgPSAwOyBp
IDwgbGlzdEEuc2l6ZSgpOyArK2kpIHsKKyAgICAgICAgaWYgKGxpc3RBLmF0KGkpLmdldCgpICE9
IGxpc3RCLmF0KGkpLmdldCgpIAorICAgICAgICAgICAgJiYgISgqbGlzdEEuYXQoaSkuZ2V0KCkg
PT0gKmxpc3RCLmF0KGkpLmdldCgpKSkKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9
CisgICAgcmV0dXJuIHRydWU7Cit9CisKKyNpZm5kZWYgTkRFQlVHCitzdGF0aWMgYm9vbCBjaGVj
a1NvcnRlZEN1c3RvbUZpbHRlclBhcmFtZXRlcnMoY29uc3QgQ3VzdG9tRmlsdGVyUGFyYW1ldGVy
TGlzdCYgcGFyYW1ldGVycykKK3sKKyAgICBmb3IgKHVuc2lnbmVkIGkgPSAxOyBpIDwgcGFyYW1l
dGVycy5zaXplKCk7ICsraSkgeworICAgICAgICAvLyBCcmVhayBmb3IgZXF1YWwgb3Igbm90LXNv
cnRlZCBwYXJhbWV0ZXJzLgorICAgICAgICBpZiAoIWNvZGVQb2ludENvbXBhcmVMZXNzVGhhbihw
YXJhbWV0ZXJzLmF0KGkgLSBpKS0+bmFtZSgpLCBwYXJhbWV0ZXJzLmF0KGkpLT5uYW1lKCkpKQor
ICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKyAgICByZXR1cm4gdHJ1ZTsKK30KKyNl
bmRpZgorCit2b2lkIGJsZW5kQ3VzdG9tRmlsdGVyUGFyYW1ldGVycyhjb25zdCBDdXN0b21GaWx0
ZXJQYXJhbWV0ZXJMaXN0JiBmcm9tTGlzdCwgY29uc3QgQ3VzdG9tRmlsdGVyUGFyYW1ldGVyTGlz
dCYgdG9MaXN0LCBkb3VibGUgcHJvZ3Jlc3MsIEN1c3RvbUZpbHRlclBhcmFtZXRlckxpc3QmIHJl
c3VsdExpc3QpCit7CisgICAgLy8gVGhpcyBtZXRob2QgZXhwZWN0cyBib3RoIGxpc3RzIHRvIGJl
IHNvcnRlZCBieSBwYXJhbWV0ZXIgbmFtZSBhbmQgdGhlIHJlc3VsdCBsaXN0IGlzIGFsc28gc29y
dGVkLgorICAgIEFTU0VSVChjaGVja1NvcnRlZEN1c3RvbUZpbHRlclBhcmFtZXRlcnMoZnJvbUxp
c3QpKTsKKyAgICBBU1NFUlQoY2hlY2tTb3J0ZWRDdXN0b21GaWx0ZXJQYXJhbWV0ZXJzKHRvTGlz
dCkpOworICAgIHNpemVfdCBmcm9tTGlzdEluZGV4ID0gMCwgdG9MaXN0SW5kZXggPSAwOworICAg
IHdoaWxlIChmcm9tTGlzdEluZGV4IDwgZnJvbUxpc3Quc2l6ZSgpICYmIHRvTGlzdEluZGV4IDwg
dG9MaXN0LnNpemUoKSkgeworICAgICAgICBDdXN0b21GaWx0ZXJQYXJhbWV0ZXIqIHBhcmFtRnJv
bSA9IGZyb21MaXN0LmF0KGZyb21MaXN0SW5kZXgpLmdldCgpOworICAgICAgICBDdXN0b21GaWx0
ZXJQYXJhbWV0ZXIqIHBhcmFtVG8gPSB0b0xpc3QuYXQodG9MaXN0SW5kZXgpLmdldCgpOworICAg
ICAgICBpZiAocGFyYW1Gcm9tLT5uYW1lKCkgPT0gcGFyYW1Uby0+bmFtZSgpKSB7CisgICAgICAg
ICAgICByZXN1bHRMaXN0LmFwcGVuZChwYXJhbVRvLT5ibGVuZChwYXJhbUZyb20sIHByb2dyZXNz
KSk7CisgICAgICAgICAgICArK2Zyb21MaXN0SW5kZXg7CisgICAgICAgICAgICArK3RvTGlzdElu
ZGV4OworICAgICAgICAgICAgY29udGludWU7CisgICAgICAgIH0KKyAgICAgICAgaWYgKGNvZGVQ
b2ludENvbXBhcmVMZXNzVGhhbihwYXJhbUZyb20tPm5hbWUoKSwgcGFyYW1Uby0+bmFtZSgpKSkg
eworICAgICAgICAgICAgcmVzdWx0TGlzdC5hcHBlbmQocGFyYW1Gcm9tKTsKKyAgICAgICAgICAg
ICsrZnJvbUxpc3RJbmRleDsKKyAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICB9CisgICAg
ICAgIHJlc3VsdExpc3QuYXBwZW5kKHBhcmFtVG8pOworICAgICAgICArK3RvTGlzdEluZGV4Owor
ICAgIH0KKyAgICBmb3IgKDsgZnJvbUxpc3RJbmRleCA8IGZyb21MaXN0LnNpemUoKTsgKytmcm9t
TGlzdEluZGV4KQorICAgICAgICByZXN1bHRMaXN0LmFwcGVuZChmcm9tTGlzdC5hdChmcm9tTGlz
dEluZGV4KSk7CisgICAgZm9yICg7IHRvTGlzdEluZGV4IDwgdG9MaXN0LnNpemUoKTsgKyt0b0xp
c3RJbmRleCkKKyAgICAgICAgcmVzdWx0TGlzdC5hcHBlbmQodG9MaXN0LmF0KHRvTGlzdEluZGV4
KSk7CisgICAgQVNTRVJUKGNoZWNrU29ydGVkQ3VzdG9tRmlsdGVyUGFyYW1ldGVycyhyZXN1bHRM
aXN0KSk7Cit9CisKIEN1c3RvbUZpbHRlck9wZXJhdGlvbjo6Q3VzdG9tRmlsdGVyT3BlcmF0aW9u
KFBhc3NSZWZQdHI8Q3VzdG9tRmlsdGVyUHJvZ3JhbT4gcHJvZ3JhbSwgY29uc3QgQ3VzdG9tRmls
dGVyUGFyYW1ldGVyTGlzdCYgc29ydGVkUGFyYW1ldGVycywgdW5zaWduZWQgbWVzaFJvd3MsIHVu
c2lnbmVkIG1lc2hDb2x1bW5zLCBNZXNoQm94VHlwZSBtZXNoQm94VHlwZSwgTWVzaFR5cGUgbWVz
aFR5cGUpCiAgICAgOiBGaWx0ZXJPcGVyYXRpb24oQ1VTVE9NKQogICAgICwgbV9wcm9ncmFtKHBy
b2dyYW0pCkBAIC01MCwyNCArMTA0LDMyIEBAIEN1c3RvbUZpbHRlck9wZXJhdGlvbjo6Q3VzdG9t
RmlsdGVyT3BlcmF0aW9uKFBhc3NSZWZQdHI8Q3VzdG9tRmlsdGVyUHJvZ3JhbT4gcHJvCiAgICAg
LCBtX21lc2hUeXBlKG1lc2hUeXBlKQogewogICAgIC8vIE1ha2Ugc3VyZSB0aGF0IHRoZSBwYXJh
bWV0ZXJzIGFyZSBhbHd5YXMgc29ydGVkIGJ5IG5hbWUuIFdlIHVzZSB0aGF0IHRvIG1lcmdlIHR3
byBDdXN0b21GaWx0ZXJPcGVyYXRpb25zIGluIGFuaW1hdGlvbnMuCi0gICAgQVNTRVJUKGhhc1Nv
cnRlZFBhcmFtZXRlckxpc3QoKSk7CisgICAgQVNTRVJUKGNoZWNrU29ydGVkQ3VzdG9tRmlsdGVy
UGFyYW1ldGVycyhtX3BhcmFtZXRlcnMpKTsKIH0KICAgICAKIEN1c3RvbUZpbHRlck9wZXJhdGlv
bjo6fkN1c3RvbUZpbHRlck9wZXJhdGlvbigpCiB7CiB9CiAKLSNpZm5kZWYgTkRFQlVHCi1ib29s
IEN1c3RvbUZpbHRlck9wZXJhdGlvbjo6aGFzU29ydGVkUGFyYW1ldGVyTGlzdCgpCitQYXNzUmVm
UHRyPEZpbHRlck9wZXJhdGlvbj4gQ3VzdG9tRmlsdGVyT3BlcmF0aW9uOjpibGVuZChjb25zdCBG
aWx0ZXJPcGVyYXRpb24qIGZyb20sIGRvdWJsZSBwcm9ncmVzcywgYm9vbCBibGVuZFRvUGFzc3Ro
cm91Z2gpCiB7Ci0gICAgZm9yICh1bnNpZ25lZCBpID0gMTsgaSA8IG1fcGFyYW1ldGVycy5zaXpl
KCk7ICsraSkgewotICAgICAgICAvLyBCcmVhayBmb3IgZXF1YWwgb3Igbm90LXNvcnRlZCBwYXJh
bWV0ZXJzLgotICAgICAgICBpZiAoIWNvZGVQb2ludENvbXBhcmVMZXNzVGhhbihtX3BhcmFtZXRl
cnMuYXQoaSAtIGkpLT5uYW1lKCksIG1fcGFyYW1ldGVycy5hdChpKS0+bmFtZSgpKSkKLSAgICAg
ICAgICAgIHJldHVybiBmYWxzZTsKLSAgICB9Ci0gICAgcmV0dXJuIHRydWU7CisgICAgLy8gRklY
TUU6IFRoZXJlJ3Mgbm8gd2F5IHRvIGRlY2lkZSB3aGF0IGlzIHRoZSAicGFzc3Rocm91Z2ggZmls
dGVyIiBmb3Igc2hhZGVycyB1c2luZyB0aGUgY3VycmVudCBDU1MgU3ludGF4LgorICAgIC8vIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD04NDkwMworICAgIGlmIChibGVu
ZFRvUGFzc3Rocm91Z2ggfHwgIWZyb20gfHwgIWZyb20tPmlzU2FtZVR5cGUoKnRoaXMpKQorICAg
ICAgICByZXR1cm4gdGhpczsKKyAgICAKKyAgICBjb25zdCBDdXN0b21GaWx0ZXJPcGVyYXRpb24q
IGZyb21PcCA9IHN0YXRpY19jYXN0PGNvbnN0IEN1c3RvbUZpbHRlck9wZXJhdGlvbio+KGZyb20p
OworICAgIGlmICghKCptX3Byb2dyYW0uZ2V0KCkgPT0gKmZyb21PcC0+bV9wcm9ncmFtLmdldCgp
KQorICAgICAgICB8fCBtX21lc2hSb3dzICE9IGZyb21PcC0+bV9tZXNoUm93cworICAgICAgICB8
fCBtX21lc2hDb2x1bW5zICE9IGZyb21PcC0+bV9tZXNoQ29sdW1ucworICAgICAgICB8fCBtX21l
c2hCb3hUeXBlICE9IGZyb21PcC0+bV9tZXNoQm94VHlwZQorICAgICAgICB8fCBtX21lc2hUeXBl
ICE9IGZyb21PcC0+bV9tZXNoVHlwZSkKKyAgICAgICAgcmV0dXJuIHRoaXM7CisgICAgCisgICAg
Q3VzdG9tRmlsdGVyUGFyYW1ldGVyTGlzdCBhbmltYXRlZFBhcmFtZXRlcnM7CisgICAgYmxlbmRD
dXN0b21GaWx0ZXJQYXJhbWV0ZXJzKGZyb21PcC0+bV9wYXJhbWV0ZXJzLCBtX3BhcmFtZXRlcnMs
IHByb2dyZXNzLCBhbmltYXRlZFBhcmFtZXRlcnMpOworICAgIHJldHVybiBDdXN0b21GaWx0ZXJP
cGVyYXRpb246OmNyZWF0ZShtX3Byb2dyYW0sIGFuaW1hdGVkUGFyYW1ldGVycywgbV9tZXNoUm93
cywgbV9tZXNoQ29sdW1ucywgbV9tZXNoQm94VHlwZSwgbV9tZXNoVHlwZSk7CiB9Ci0jZW5kaWYK
IAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0N1c3RvbUZpbHRlck9wZXJhdGlvbi5oIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9DdXN0b21GaWx0ZXJPcGVyYXRpb24u
aAppbmRleCAzNTJlMjcyLi5jM2JjOTkyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0N1c3RvbUZpbHRlck9wZXJhdGlvbi5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvQ3VzdG9tRmlsdGVyT3BlcmF0aW9u
LmgKQEAgLTQzLDYgKzQzLDkgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgQ3VzdG9tRmls
dGVyUGFyYW1ldGVyOwogdHlwZWRlZiBWZWN0b3I8UmVmUHRyPEN1c3RvbUZpbHRlclBhcmFtZXRl
cj4gPiBDdXN0b21GaWx0ZXJQYXJhbWV0ZXJMaXN0OwogCitib29sIGVxdWFsQ3VzdG9tRmlsdGVy
UGFyYW1ldGVycyhjb25zdCBDdXN0b21GaWx0ZXJQYXJhbWV0ZXJMaXN0JiBsaXN0QSwgY29uc3Qg
Q3VzdG9tRmlsdGVyUGFyYW1ldGVyTGlzdCYgbGlzdEIpOwordm9pZCBibGVuZEN1c3RvbUZpbHRl
clBhcmFtZXRlcnMoY29uc3QgQ3VzdG9tRmlsdGVyUGFyYW1ldGVyTGlzdCYgbGlzdEZyb20sIGNv
bnN0IEN1c3RvbUZpbHRlclBhcmFtZXRlckxpc3QmIGxpc3RUbywgZG91YmxlIHByb2dyZXNzLCBD
dXN0b21GaWx0ZXJQYXJhbWV0ZXJMaXN0JiByZXN1bHRMaXN0KTsKKwogY2xhc3MgQ3VzdG9tRmls
dGVyT3BlcmF0aW9uIDogcHVibGljIEZpbHRlck9wZXJhdGlvbiB7CiBwdWJsaWM6CiAgICAgZW51
bSBNZXNoQm94VHlwZSB7CkBAIC04Myw2ICs4Niw4IEBAIHB1YmxpYzoKICAgICAKICAgICB2aXJ0
dWFsIGJvb2wgYWZmZWN0c09wYWNpdHkoKSBjb25zdCB7IHJldHVybiB0cnVlOyB9CiAgICAgdmly
dHVhbCBib29sIG1vdmVzUGl4ZWxzKCkgY29uc3QgeyByZXR1cm4gdHJ1ZTsgfQorICAgIAorICAg
IHZpcnR1YWwgUGFzc1JlZlB0cjxGaWx0ZXJPcGVyYXRpb24+IGJsZW5kKGNvbnN0IEZpbHRlck9w
ZXJhdGlvbiogZnJvbSwgZG91YmxlIHByb2dyZXNzLCBib29sIGJsZW5kVG9QYXNzdGhyb3VnaCA9
IGZhbHNlKTsKIHByaXZhdGU6CiAgICAgdmlydHVhbCBib29sIG9wZXJhdG9yPT0oY29uc3QgRmls
dGVyT3BlcmF0aW9uJiBvKSBjb25zdAogICAgIHsKQEAgLTkwLDE4ICs5NSwxNSBAQCBwcml2YXRl
OgogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAgICAgIGNvbnN0IEN1c3RvbUZpbHRl
ck9wZXJhdGlvbiogb3RoZXIgPSBzdGF0aWNfY2FzdDxjb25zdCBDdXN0b21GaWx0ZXJPcGVyYXRp
b24qPigmbyk7Ci0gICAgICAgIHJldHVybiBtX3Byb2dyYW0uZ2V0KCkgPT0gb3RoZXItPm1fcHJv
Z3JhbS5nZXQoKQorICAgICAgICByZXR1cm4gKm1fcHJvZ3JhbS5nZXQoKSA9PSAqb3RoZXItPm1f
cHJvZ3JhbS5nZXQoKQogICAgICAgICAgICAgICAgJiYgbV9tZXNoUm93cyA9PSBvdGhlci0+bV9t
ZXNoUm93cwogICAgICAgICAgICAgICAgJiYgbV9tZXNoQ29sdW1ucyA9PSBvdGhlci0+bV9tZXNo
Q29sdW1ucwogICAgICAgICAgICAgICAgJiYgbV9tZXNoQm94VHlwZSA9PSBvdGhlci0+bV9tZXNo
Qm94VHlwZQotICAgICAgICAgICAgICAgJiYgbV9tZXNoVHlwZSA9PSBvdGhlci0+bV9tZXNoVHlw
ZTsKKyAgICAgICAgICAgICAgICYmIG1fbWVzaFR5cGUgPT0gb3RoZXItPm1fbWVzaFR5cGUKKyAg
ICAgICAgICAgICAgICYmIGVxdWFsQ3VzdG9tRmlsdGVyUGFyYW1ldGVycyhtX3BhcmFtZXRlcnMs
IG90aGVyLT5tX3BhcmFtZXRlcnMpOwogICAgIH0KICAgICAKICAgICBDdXN0b21GaWx0ZXJPcGVy
YXRpb24oUGFzc1JlZlB0cjxDdXN0b21GaWx0ZXJQcm9ncmFtPiwgY29uc3QgQ3VzdG9tRmlsdGVy
UGFyYW1ldGVyTGlzdCYsIHVuc2lnbmVkIG1lc2hSb3dzLCB1bnNpZ25lZCBtZXNoQ29sdW1ucywg
TWVzaEJveFR5cGUsIE1lc2hUeXBlKTsKLSAgICAKLSNpZm5kZWYgTkRFQlVHCi0gICAgYm9vbCBo
YXNTb3J0ZWRQYXJhbWV0ZXJMaXN0KCk7Ci0jZW5kaWYKIAogICAgIFJlZlB0cjxDdXN0b21GaWx0
ZXJQcm9ncmFtPiBtX3Byb2dyYW07CiAgICAgQ3VzdG9tRmlsdGVyUGFyYW1ldGVyTGlzdCBtX3Bh
cmFtZXRlcnM7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9m
aWx0ZXJzL0N1c3RvbUZpbHRlclBhcmFtZXRlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvZmlsdGVycy9DdXN0b21GaWx0ZXJQYXJhbWV0ZXIuaAppbmRleCBlOWMwNjI5Li5i
ZjM5MWQ3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0
ZXJzL0N1c3RvbUZpbHRlclBhcmFtZXRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2ZpbHRlcnMvQ3VzdG9tRmlsdGVyUGFyYW1ldGVyLmgKQEAgLTUyLDcgKzUyLDEx
IEBAIHB1YmxpYzoKICAgICAKICAgICBQYXJhbWV0ZXJUeXBlIHBhcmFtZXRlclR5cGUoKSBjb25z
dCB7IHJldHVybiBtX3R5cGU7IH0KICAgICBjb25zdCBTdHJpbmcmIG5hbWUoKSBjb25zdCB7IHJl
dHVybiBtX25hbWU7IH0KLQorICAgIAorICAgIGJvb2wgaXNTYW1lVHlwZShjb25zdCBDdXN0b21G
aWx0ZXJQYXJhbWV0ZXImIG90aGVyKSBjb25zdCB7IHJldHVybiBwYXJhbWV0ZXJUeXBlKCkgPT0g
b3RoZXIucGFyYW1ldGVyVHlwZSgpOyB9CisgICAgCisgICAgdmlydHVhbCBQYXNzUmVmUHRyPEN1
c3RvbUZpbHRlclBhcmFtZXRlcj4gYmxlbmQoY29uc3QgQ3VzdG9tRmlsdGVyUGFyYW1ldGVyKiwg
ZG91YmxlIHByb2dyZXNzKSA9IDA7CisgICAgdmlydHVhbCBib29sIG9wZXJhdG9yPT0oY29uc3Qg
Q3VzdG9tRmlsdGVyUGFyYW1ldGVyJikgY29uc3QgPSAwOwogcHJvdGVjdGVkOgogICAgIEN1c3Rv
bUZpbHRlclBhcmFtZXRlcihQYXJhbWV0ZXJUeXBlIHR5cGUsIGNvbnN0IFN0cmluZyYgbmFtZSkK
ICAgICAgICAgOiBtX25hbWUobmFtZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2ZpbHRlcnMvQ3VzdG9tRmlsdGVyUHJvZ3JhbS5oIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9DdXN0b21GaWx0ZXJQcm9ncmFtLmgKaW5kZXgg
MjQ0MWQyMy4uYTc3OTk3YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvZmlsdGVycy9DdXN0b21GaWx0ZXJQcm9ncmFtLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9DdXN0b21GaWx0ZXJQcm9ncmFtLmgKQEAgLTU3LDYg
KzU3LDcgQEAgcHVibGljOgogICAgIFBhc3NSZWZQdHI8Q3VzdG9tRmlsdGVyU2hhZGVyPiBjcmVh
dGVTaGFkZXJXaXRoQ29udGV4dChHcmFwaGljc0NvbnRleHQzRCopOwogI2VuZGlmCiAKKyAgICB2
aXJ0dWFsIGJvb2wgb3BlcmF0b3I9PShjb25zdCBDdXN0b21GaWx0ZXJQcm9ncmFtJikgY29uc3Qg
PSAwOwogcHJvdGVjdGVkOgogICAgIC8vIFN0eWxlQ3VzdG9tRmlsdGVyUHJvZ3JhbSBjYW4gbm90
aWZ5IHRoZSBjbGllbnRzIHRoYXQgdGhlIGNhY2hlZCByZXNvdXJjZXMgYXJlCiAgICAgLy8gbG9h
ZGVkIGFuZCBpdCBpcyByZWFkeSB0byBjcmVhdGUgQ3VzdG9tRmlsdGVyU2hhZGVyIG9iamVjdHMu
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU3R5bGVDdXN0b21G
aWx0ZXJQcm9ncmFtLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU3R5bGVDdXN0
b21GaWx0ZXJQcm9ncmFtLmgKaW5kZXggYjZlZWM3NC4uYTIzZjBjYiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1N0eWxlQ3VzdG9tRmlsdGVyUHJvZ3JhbS5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TdHlsZUN1c3RvbUZpbHRlclByb2dy
YW0uaApAQCAtMTEzLDYgKzExMywxNiBAQCBwdWJsaWM6CiAgICAgICAgIGlmIChpc0xvYWRlZCgp
KQogICAgICAgICAgICAgbm90aWZ5Q2xpZW50cygpOwogICAgIH0KKyAgICAKKyAgICBDYWNoZWRT
aGFkZXIqIGNhY2hlZFZlcnRleFNoYWRlcigpIGNvbnN0IHsgcmV0dXJuIG1fdmVydGV4U2hhZGVy
ID8gbV92ZXJ0ZXhTaGFkZXItPmNhY2hlZFNoYWRlcigpIDogMDsgfQorICAgIENhY2hlZFNoYWRl
ciogY2FjaGVkRnJhZ21lbnRTaGFkZXIoKSBjb25zdCB7IHJldHVybiBtX2ZyYWdtZW50U2hhZGVy
ID8gbV9mcmFnbWVudFNoYWRlci0+Y2FjaGVkU2hhZGVyKCkgOiAwOyB9CisgICAgCisgICAgdmly
dHVhbCBib29sIG9wZXJhdG9yPT0oY29uc3QgQ3VzdG9tRmlsdGVyUHJvZ3JhbSYgbykgY29uc3Qg
CisgICAgeworICAgICAgICBjb25zdCBTdHlsZUN1c3RvbUZpbHRlclByb2dyYW0qIG90aGVyID0g
c3RhdGljX2Nhc3Q8Y29uc3QgU3R5bGVDdXN0b21GaWx0ZXJQcm9ncmFtKj4oJm8pOworICAgICAg
ICByZXR1cm4gY2FjaGVkVmVydGV4U2hhZGVyKCkgPT0gb3RoZXItPmNhY2hlZFZlcnRleFNoYWRl
cigpCisgICAgICAgICAgICAmJiBjYWNoZWRGcmFnbWVudFNoYWRlcigpID09IG90aGVyLT5jYWNo
ZWRGcmFnbWVudFNoYWRlcigpOworICAgIH0KIAogcHJpdmF0ZToKICAgICBTdHlsZUN1c3RvbUZp
bHRlclByb2dyYW0oUGFzc1JlZlB0cjxTdHlsZVNoYWRlcj4gdmVydGV4U2hhZGVyLCBQYXNzUmVm
UHRyPFN0eWxlU2hhZGVyPiBmcmFnbWVudFNoYWRlcikK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>139088</attachid>
            <date>2012-04-26 15:56:38 -0700</date>
            <delta_ts>2012-04-26 16:25:05 -0700</delta_ts>
            <desc>Patch V2</desc>
            <filename>bug71406_1.patch</filename>
            <type>text/plain</type>
            <size>29068</size>
            <attacher name="Alexandru Chiculita">achicu</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCA3YzE5OGMwLi4wNzU2OTU2IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTcgQEAKKzIwMTItMDQt
MjYgIEFsZXhhbmRydSBDaGljdWxpdGEgIDxhY2hpY3VAYWRvYmUuY29tPgorCisgICAgICAgIFtD
U1MgU2hhZGVyc10gSW1wbGVtZW50IENTUyBBbmltYXRpb25zIGFuZCBUcmFuc2l0aW9ucyBmb3Ig
Q1NTIFNoYWRlcnMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTcxNDA2CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgKiBhbmltYXRpb25zL3Jlc291cmNlcy9hbmltYXRpb24tdGVzdC1oZWxwZXJzLmpzOiBBZGRl
ZCBhIGNoZWNrIGZvciB0aGUgImN1c3RvbSIgZnVuY3Rpb24gYW5kIHVzZWQgdGhlIHBhcnNlciBp
biBjdXN0b20tZmlsdGVyLXBhcnNlci5qcyBpbnN0ZWFkLgorICAgICAgICAoZ2V0RmlsdGVyUGFy
YW1ldGVycyk6CisgICAgICAgIChmaWx0ZXJQYXJhbWV0ZXJzTWF0Y2gpOgorICAgICAgICAqIGNz
czMvZmlsdGVycy9jdXN0b20vY3VzdG9tLWZpbHRlci1hbmltYXRpb24tZXhwZWN0ZWQudHh0OiBB
ZGRlZC4KKyAgICAgICAgKiBjc3MzL2ZpbHRlcnMvY3VzdG9tL2N1c3RvbS1maWx0ZXItYW5pbWF0
aW9uLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGNzczMvZmlsdGVycy9yZXNvdXJjZXMvY3VzdG9t
LWZpbHRlci1wYXJzZXIuanM6IEFkZGVkIGEgc2ltcGxlIHBhcnNlciBmb3IgdGhlICJjdXN0b20i
IGZ1bmN0aW9uLCBzbyB0aGF0IG11bHRpcGxlIHR5cGVzIGNhbiBiZSBjaGVja2VkIGNvcnJlY3Rs
eS4KKwogMjAxMi0wNC0yNSAgQWxwaGEgTGFtICA8aGNsYW1AY2hyb21pdW0ub3JnPgogCiAgICAg
ICAgIFVucmV2aWV3ZWQgdGVzdCBleHBlY3RhdGlvbnMgdXBkYXRlLgpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvYW5pbWF0aW9ucy9yZXNvdXJjZXMvYW5pbWF0aW9uLXRlc3QtaGVscGVycy5qcyBi
L0xheW91dFRlc3RzL2FuaW1hdGlvbnMvcmVzb3VyY2VzL2FuaW1hdGlvbi10ZXN0LWhlbHBlcnMu
anMKaW5kZXggODRhMjZiZS4uMmI0M2UxYiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvYW5pbWF0
aW9ucy9yZXNvdXJjZXMvYW5pbWF0aW9uLXRlc3QtaGVscGVycy5qcworKysgYi9MYXlvdXRUZXN0
cy9hbmltYXRpb25zL3Jlc291cmNlcy9hbmltYXRpb24tdGVzdC1oZWxwZXJzLmpzCkBAIC02Miw3
ICs2MiwxNSBAQCBmdW5jdGlvbiBwYXJzZUNyb3NzRmFkZShzKQogLy8gUmV0dXJuIGFuIGFycmF5
IG9mIG51bWVyaWMgZmlsdGVyIHBhcmFtcyBpbiAwLTEuCiBmdW5jdGlvbiBnZXRGaWx0ZXJQYXJh
bWV0ZXJzKHMpCiB7Ci0gICAgdmFyIGZpbHRlclBhcmFtcyA9IHMubWF0Y2goL1woKC4rKVwpLylb
MV07CisgICAgdmFyIGZpbHRlclJlc3VsdCA9IHMubWF0Y2goLyhcdyspXCgoLispXCkvKTsKKyAg
ICBpZiAoIWZpbHRlclJlc3VsdCkKKyAgICAgICAgdGhyb3cgbmV3IEVycm9yKCJUaGVyZSdzIG5v
IGZpbHRlciBpbiBcIiIgKyBzICsgIlwiIik7CisgICAgdmFyIGZpbHRlclBhcmFtcyA9IGZpbHRl
clJlc3VsdFsyXTsKKyAgICBpZiAoZmlsdGVyUmVzdWx0WzFdID09ICJjdXN0b20iKSB7CisgICAg
ICAgIGlmICghd2luZG93LmdldEN1c3RvbUZpbHRlclBhcmFtZXRlcnMpCisgICAgICAgICAgICB0
aHJvdyBuZXcgRXJyb3IoImdldEN1c3RvbUZpbHRlclBhcmFtZXRlcnMgbm90IGZvdW5kLiBEaWQg
eW91IGluY2x1ZGUgY3VzdG9tLWZpbHRlci1wYXJzZXIuanM/Iik7CisgICAgICAgIHJldHVybiBn
ZXRDdXN0b21GaWx0ZXJQYXJhbWV0ZXJzKGZpbHRlclBhcmFtcyk7CisgICAgfQogICAgIHZhciBw
YXJhbUxpc3QgPSBmaWx0ZXJQYXJhbXMuc3BsaXQoJyAnKTsgLy8gRklYTUU6IHRoZSBzcGVjIG1h
eSBhbGxvdyBjb21tYSBzZXBhcmF0aW9uIGF0IHNvbWUgcG9pbnQuCiAgICAgCiAgICAgLy8gTm9y
bWFsaXplIHBlcmNlbnRhZ2UgdmFsdWVzLgpAQCAtODAsOSArODgsMjIgQEAgZnVuY3Rpb24gZmls
dGVyUGFyYW1ldGVyc01hdGNoKHBhcmFtTGlzdDEsIHBhcmFtTGlzdDIsIHRvbGVyYW5jZSkKIHsK
ICAgICBpZiAocGFyYW1MaXN0MS5sZW5ndGggIT0gcGFyYW1MaXN0Mi5sZW5ndGgpCiAgICAgICAg
IHJldHVybiBmYWxzZTsKLQogICAgIGZvciAodmFyIGkgPSAwOyBpIDwgcGFyYW1MaXN0MS5sZW5n
dGg7ICsraSkgewotICAgICAgICB2YXIgbWF0Y2ggPSBpc0Nsb3NlRW5vdWdoKHBhcmFtTGlzdDFb
aV0sIHBhcmFtTGlzdDJbaV0sIHRvbGVyYW5jZSk7CisgICAgICAgIHZhciBwYXJhbTEgPSBwYXJh
bUxpc3QxW2ldLCAKKyAgICAgICAgICAgIHBhcmFtMiA9IHBhcmFtTGlzdDJbaV07CisgICAgICAg
IGlmICh0eXBlb2YgcGFyYW0xID09ICJvYmplY3QiKSB7CisgICAgICAgICAgICAvLyBUaGlzIGlz
IGEgY3VzdG9tIGZpbHRlciBwYXJhbWV0ZXIuCisgICAgICAgICAgICBpZiAocGFyYW0xLm5hbWUg
IT0gcGFyYW0yLm5hbWUKKyAgICAgICAgICAgICAgICB8fCBwYXJhbTEudmFsdWUubGVuZ3RoICE9
IHBhcmFtMi52YWx1ZS5sZW5ndGgpCisgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAg
ICAgICAgICAgLy8gRm9yIG5vdyB3ZSBvbmx5IHN1cHBvcnQgZmxvYXRzLgorICAgICAgICAgICAg
Zm9yICh2YXIgaiA9IDA7IGogPCBwYXJhbTEudmFsdWUubGVuZ3RoOyArK2opIHsKKyAgICAgICAg
ICAgICAgICBpZiAoIWlzQ2xvc2VFbm91Z2gocGFyYW0xLnZhbHVlW2pdLnZhbHVlLCBwYXJhbTIu
dmFsdWVbal0udmFsdWUsIHRvbGVyYW5jZSkpCisgICAgICAgICAgICAgICAgICAgIHJldHVybiBm
YWxzZTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICB9Cisg
ICAgICAgIHZhciBtYXRjaCA9IGlzQ2xvc2VFbm91Z2gocGFyYW0xLCBwYXJhbTIsIHRvbGVyYW5j
ZSk7CiAgICAgICAgIGlmICghbWF0Y2gpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAg
fQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvY3NzMy9maWx0ZXJzL2N1c3RvbS9jdXN0b20tZmls
dGVyLWFuaW1hdGlvbi1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9jc3MzL2ZpbHRlcnMvY3Vz
dG9tL2N1c3RvbS1maWx0ZXItYW5pbWF0aW9uLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwLi5lYTYyZDQ5Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVz
dHMvY3NzMy9maWx0ZXJzL2N1c3RvbS9jdXN0b20tZmlsdGVyLWFuaW1hdGlvbi1leHBlY3RlZC50
eHQKQEAgLTAsMCArMSwxMCBAQAorICAgICAgCitQQVNTIC0gIndlYmtpdEZpbHRlciIgcHJvcGVy
dHkgZm9yICJjdXN0b20tZnJvbS1ub25lLWJveCIgZWxlbWVudCBhdCAxcyBzYXcgc29tZXRoaW5n
IGNsb3NlIHRvOiBjdXN0b20ocm90YXRlQnkgMzAsIG9mZnNldCAwKQorUEFTUyAtICJ3ZWJraXRG
aWx0ZXIiIHByb3BlcnR5IGZvciAiY3VzdG9tLXRvLW5vbmUtYm94IiBlbGVtZW50IGF0IDFzIHNh
dyBzb21ldGhpbmcgY2xvc2UgdG86IGN1c3RvbShyb3RhdGVCeSAzMCwgb2Zmc2V0IDApCitQQVNT
IC0gIndlYmtpdEZpbHRlciIgcHJvcGVydHkgZm9yICJjdXN0b20tZnJvbS1uby1wYXJhbXMtYm94
IiBlbGVtZW50IGF0IDFzIHNhdyBzb21ldGhpbmcgY2xvc2UgdG86IGN1c3RvbShyb3RhdGVCeSAz
MCwgb2Zmc2V0IDApCitQQVNTIC0gIndlYmtpdEZpbHRlciIgcHJvcGVydHkgZm9yICJjdXN0b20t
dG8tbm8tcGFyYW1zLWJveCIgZWxlbWVudCBhdCAxcyBzYXcgc29tZXRoaW5nIGNsb3NlIHRvOiBj
dXN0b20ocm90YXRlQnkgMzAsIG9mZnNldCAwKQorUEFTUyAtICJ3ZWJraXRGaWx0ZXIiIHByb3Bl
cnR5IGZvciAiY3VzdG9tLWZyb20tZGlmZi1wYXJhbXMtYm94IiBlbGVtZW50IGF0IDFzIHNhdyBz
b21ldGhpbmcgY2xvc2UgdG86IGN1c3RvbShwYXJhbSAxMCwgcm90YXRlQnkgNjAsIG9mZnNldCAx
MCwgYW5vdGhlcl9wYXJhbSA1KQorUEFTUyAtICJ3ZWJraXRGaWx0ZXIiIHByb3BlcnR5IGZvciAi
Y3VzdG9tLXRvLWRpZmYtcGFyYW1zLWJveCIgZWxlbWVudCBhdCAxcyBzYXcgc29tZXRoaW5nIGNs
b3NlIHRvOiBjdXN0b20ocGFyYW0gMTAsIHJvdGF0ZUJ5IDYwLCBvZmZzZXQgMTAsIGFub3RoZXJf
cGFyYW0gNSkKK1BBU1MgLSAid2Via2l0RmlsdGVyIiBwcm9wZXJ0eSBmb3IgImN1c3RvbS1taXgt
cGFyYW1zLWJveCIgZWxlbWVudCBhdCAxcyBzYXcgc29tZXRoaW5nIGNsb3NlIHRvOiBjdXN0b20o
cGFyYW0gMTAsIGFub3RoZXJfcGFyYW0gNSwgZmlyc3RfcGFyYW0gNiwgcm90YXRlQnkgNjAsIG9m
ZnNldCAxMCwgbGFzdF9wYXJhbSA0KQorUEFTUyAtICJ3ZWJraXRGaWx0ZXIiIHByb3BlcnR5IGZv
ciAiY3VzdG9tLW1peC1udW1iZXJzLWJveCIgZWxlbWVudCBhdCAxcyBzYXcgc29tZXRoaW5nIGNs
b3NlIHRvOiBjdXN0b20ocm90YXRlQnkgNDUsIGEgNS41LCBiIDExIDE2LjUsIGMgMjIgMjcuNSAz
MywgZCAzOC41IDQ0IDQ5LjUpCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2NzczMvZmlsdGVy
cy9jdXN0b20vY3VzdG9tLWZpbHRlci1hbmltYXRpb24uaHRtbCBiL0xheW91dFRlc3RzL2NzczMv
ZmlsdGVycy9jdXN0b20vY3VzdG9tLWZpbHRlci1hbmltYXRpb24uaHRtbApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwLi5hYTc3MWY4Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0
VGVzdHMvY3NzMy9maWx0ZXJzL2N1c3RvbS9jdXN0b20tZmlsdGVyLWFuaW1hdGlvbi5odG1sCkBA
IC0wLDAgKzEsMTI2IEBACis8IURPQ1RZUEUgaHRtbD4KKworPGh0bWw+Cis8aGVhZD4KKyAgICA8
c2NyaXB0PgorICAgICAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKSB7CisgICAg
ICAgICAgICB3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIub3ZlcnJpZGVQcmVmZXJlbmNlKCJX
ZWJLaXRDU1NDdXN0b21GaWx0ZXJFbmFibGVkIiwgIjEiKTsKKyAgICAgICAgICAgIHdpbmRvdy5s
YXlvdXRUZXN0Q29udHJvbGxlci5vdmVycmlkZVByZWZlcmVuY2UoIldlYktpdFdlYkdMRW5hYmxl
ZCIsICIxIik7CisgICAgICAgIH0KKyAgICA8L3NjcmlwdD4KKyAgICA8c3R5bGU+CisgICAgICAg
IC5ib3ggeworICAgICAgICAgICAgaGVpZ2h0OiAxMDBweDsKKyAgICAgICAgICAgIHdpZHRoOiAx
MDBweDsKKyAgICAgICAgICAgIG1hcmdpbjogMTBweDsKKyAgICAgICAgICAgIGJhY2tncm91bmQt
Y29sb3I6IGJsdWU7CisgICAgICAgICAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7CisgICAgICAg
IH0KKyAgICAKKyAgICAgICAgI2N1c3RvbS1mcm9tLW5vbmUtYm94IHsKKyAgICAgICAgICAgIC13
ZWJraXQtYW5pbWF0aW9uOiBjdXN0b20tZnJvbS1ub25lLWFuaW0gMnMgbGluZWFyCisgICAgICAg
IH0KKyAgICAKKyAgICAgICAgI2N1c3RvbS10by1ub25lLWJveCB7CisgICAgICAgICAgICAtd2Vi
a2l0LWFuaW1hdGlvbjogY3VzdG9tLXRvLW5vbmUtYW5pbSAycyBsaW5lYXIKKyAgICAgICAgfQor
ICAgIAorICAgICAgICAjY3VzdG9tLWZyb20tbm8tcGFyYW1zLWJveCB7CisgICAgICAgICAgICAt
d2Via2l0LWFuaW1hdGlvbjogY3VzdG9tLWZyb20tbm8tcGFyYW1zLWFuaW0gMnMgbGluZWFyCisg
ICAgICAgIH0KKyAgICAKKyAgICAgICAgI2N1c3RvbS10by1uby1wYXJhbXMtYm94IHsKKyAgICAg
ICAgICAgIC13ZWJraXQtYW5pbWF0aW9uOiBjdXN0b20tdG8tbm8tcGFyYW1zLWFuaW0gMnMgbGlu
ZWFyCisgICAgICAgIH0KKyAgICAKKyAgICAgICAgI2N1c3RvbS1mcm9tLWRpZmYtcGFyYW1zLWJv
eCB7CisgICAgICAgICAgICAtd2Via2l0LWFuaW1hdGlvbjogY3VzdG9tLWZyb20tZGlmZi1wYXJh
bXMtYW5pbSAycyBsaW5lYXIKKyAgICAgICAgfQorICAgIAorICAgICAgICAjY3VzdG9tLXRvLWRp
ZmYtcGFyYW1zLWJveCB7CisgICAgICAgICAgICAtd2Via2l0LWFuaW1hdGlvbjogY3VzdG9tLXRv
LWRpZmYtcGFyYW1zLWFuaW0gMnMgbGluZWFyCisgICAgICAgIH0KKyAgICAKKyAgICAgICAgI2N1
c3RvbS1taXgtcGFyYW1zLWJveCB7CisgICAgICAgICAgICAtd2Via2l0LWFuaW1hdGlvbjogY3Vz
dG9tLW1peC1wYXJhbXMtYW5pbSAycyBsaW5lYXIKKyAgICAgICAgfQorICAgICAgICAKKyAgICAg
ICAgI2N1c3RvbS1taXgtbnVtYmVycy1ib3ggeworICAgICAgICAgICAgLXdlYmtpdC1hbmltYXRp
b246IGN1c3RvbS1taXgtbnVtYmVycy1hbmltIDJzIGxpbmVhcgorICAgICAgICB9CisgICAgCisg
ICAgICAgIEAtd2Via2l0LWtleWZyYW1lcyBjdXN0b20tZnJvbS1ub25lLWFuaW0geworICAgICAg
ICAgICAgZnJvbSB7IC13ZWJraXQtZmlsdGVyOiBub25lOyB9CisgICAgICAgICAgICB0byAgIHsg
LXdlYmtpdC1maWx0ZXI6IGN1c3RvbSh1cmwoLi4vcmVzb3VyY2VzL3ZlcnRleC1yb3RhdGUudnMp
LCByb3RhdGVCeSAzMCwgb2Zmc2V0IDApOyB9CisgICAgICAgIH0KKworICAgICAgICBALXdlYmtp
dC1rZXlmcmFtZXMgY3VzdG9tLXRvLW5vbmUtYW5pbSB7CisgICAgICAgICAgICBmcm9tIHsgLXdl
YmtpdC1maWx0ZXI6IGN1c3RvbSh1cmwoLi4vcmVzb3VyY2VzL3ZlcnRleC1yb3RhdGUudnMpLCBy
b3RhdGVCeSAzMCwgb2Zmc2V0IDApOyB9CisgICAgICAgICAgICB0byAgIHsgLXdlYmtpdC1maWx0
ZXI6IG5vbmU7IH0KKyAgICAgICAgfQorICAgIAorICAgICAgICBALXdlYmtpdC1rZXlmcmFtZXMg
Y3VzdG9tLWZyb20tbm8tcGFyYW1zLWFuaW0geworICAgICAgICAgICAgZnJvbSB7IC13ZWJraXQt
ZmlsdGVyOiBjdXN0b20odXJsKC4uL3Jlc291cmNlcy92ZXJ0ZXgtcm90YXRlLnZzKSk7IH0KKyAg
ICAgICAgICAgIHRvICAgeyAtd2Via2l0LWZpbHRlcjogY3VzdG9tKHVybCguLi9yZXNvdXJjZXMv
dmVydGV4LXJvdGF0ZS52cyksIHJvdGF0ZUJ5IDMwLCBvZmZzZXQgMCk7IH0KKyAgICAgICAgfQor
CisgICAgICAgIEAtd2Via2l0LWtleWZyYW1lcyBjdXN0b20tdG8tbm8tcGFyYW1zLWFuaW0gewor
ICAgICAgICAgICAgZnJvbSB7IC13ZWJraXQtZmlsdGVyOiBjdXN0b20odXJsKC4uL3Jlc291cmNl
cy92ZXJ0ZXgtcm90YXRlLnZzKSwgcm90YXRlQnkgMzAsIG9mZnNldCAwKTsgfQorICAgICAgICAg
ICAgdG8gICB7IC13ZWJraXQtZmlsdGVyOiBjdXN0b20odXJsKC4uL3Jlc291cmNlcy92ZXJ0ZXgt
cm90YXRlLnZzKSk7IH0KKyAgICAgICAgfQorICAgIAorICAgICAgICBALXdlYmtpdC1rZXlmcmFt
ZXMgY3VzdG9tLWZyb20tZGlmZi1wYXJhbXMtYW5pbSB7CisgICAgICAgICAgICBmcm9tIHsgLXdl
YmtpdC1maWx0ZXI6IGN1c3RvbSh1cmwoLi4vcmVzb3VyY2VzL3ZlcnRleC1yb3RhdGUudnMpLCBw
YXJhbSAxMCwgcm90YXRlQnkgMzAsIG9mZnNldCAwLCBhbm90aGVyX3BhcmFtIDUpOyB9CisgICAg
ICAgICAgICB0byAgIHsgLXdlYmtpdC1maWx0ZXI6IGN1c3RvbSh1cmwoLi4vcmVzb3VyY2VzL3Zl
cnRleC1yb3RhdGUudnMpLCByb3RhdGVCeSA5MCwgb2Zmc2V0IDIwKTsgfQorICAgICAgICB9CisK
KyAgICAgICAgQC13ZWJraXQta2V5ZnJhbWVzIGN1c3RvbS10by1kaWZmLXBhcmFtcy1hbmltIHsK
KyAgICAgICAgICAgIGZyb20geyAtd2Via2l0LWZpbHRlcjogY3VzdG9tKHVybCguLi9yZXNvdXJj
ZXMvdmVydGV4LXJvdGF0ZS52cyksIHJvdGF0ZUJ5IDkwLCBvZmZzZXQgMjApOyB9CisgICAgICAg
ICAgICB0byAgIHsgLXdlYmtpdC1maWx0ZXI6IGN1c3RvbSh1cmwoLi4vcmVzb3VyY2VzL3ZlcnRl
eC1yb3RhdGUudnMpLCBwYXJhbSAxMCwgcm90YXRlQnkgMzAsIG9mZnNldCAwLCBhbm90aGVyX3Bh
cmFtIDUpOyB9CisgICAgICAgIH0KKyAgICAKKyAgICAgICAgQC13ZWJraXQta2V5ZnJhbWVzIGN1
c3RvbS1taXgtcGFyYW1zLWFuaW0geworICAgICAgICAgICAgZnJvbSB7IC13ZWJraXQtZmlsdGVy
OiBjdXN0b20odXJsKC4uL3Jlc291cmNlcy92ZXJ0ZXgtcm90YXRlLnZzKSwgZmlyc3RfcGFyYW0g
Niwgcm90YXRlQnkgOTAsIG9mZnNldCAyMCwgbGFzdF9wYXJhbSA0KTsgfQorICAgICAgICAgICAg
dG8gICB7IC13ZWJraXQtZmlsdGVyOiBjdXN0b20odXJsKC4uL3Jlc291cmNlcy92ZXJ0ZXgtcm90
YXRlLnZzKSwgcGFyYW0gMTAsIHJvdGF0ZUJ5IDMwLCBvZmZzZXQgMCwgYW5vdGhlcl9wYXJhbSA1
KTsgfQorICAgICAgICB9CisgICAgICAgIAorICAgICAgICBALXdlYmtpdC1rZXlmcmFtZXMgY3Vz
dG9tLW1peC1udW1iZXJzLWFuaW0geworICAgICAgICAgICAgZnJvbSB7IC13ZWJraXQtZmlsdGVy
OiBjdXN0b20odXJsKC4uL3Jlc291cmNlcy92ZXJ0ZXgtcm90YXRlLnZzKSwgcm90YXRlQnkgMCwg
YSAxLCBiIDIgMywgYyA0IDUgNiwgZCA3IDggOSk7IH0KKyAgICAgICAgICAgIHRvICAgeyAtd2Vi
a2l0LWZpbHRlcjogY3VzdG9tKHVybCguLi9yZXNvdXJjZXMvdmVydGV4LXJvdGF0ZS52cyksIHJv
dGF0ZUJ5IDkwLCBhIDEwLCBiIDIwIDMwLCBjIDQwIDUwIDYwLCBkIDcwIDgwIDkwKTsgfQorICAg
ICAgICB9CisgICAgPC9zdHlsZT4KKyAgICA8c2NyaXB0IHNyYz0iLi4vcmVzb3VyY2VzL2N1c3Rv
bS1maWx0ZXItcGFyc2VyLmpzIj48L3NjcmlwdD4KKyAgICA8c2NyaXB0IHNyYz0iLi4vLi4vLi4v
YW5pbWF0aW9ucy9yZXNvdXJjZXMvYW5pbWF0aW9uLXRlc3QtaGVscGVycy5qcyI+PC9zY3JpcHQ+
CisgICAgPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgorICAgICAgICBjb25zdCBleHBl
Y3RlZFZhbHVlcyA9IFsKKyAgICAgICAgICAgIC8vIFthbmltYXRpb24tbmFtZSwgdGltZSwgZWxl
bWVudC1pZCwgcHJvcGVydHksIGV4cGVjdGVkLXZhbHVlLCB0b2xlcmFuY2VdCisgICAgICAgICAg
ICBbImN1c3RvbS1mcm9tLW5vbmUtYW5pbSIsICAxLCAiY3VzdG9tLWZyb20tbm9uZS1ib3giLCAi
d2Via2l0RmlsdGVyIiwgJ2N1c3RvbShyb3RhdGVCeSAzMCwgb2Zmc2V0IDApJywgMF0sCisgICAg
ICAgICAgICBbImN1c3RvbS10by1ub25lLWFuaW0iLCAgMSwgImN1c3RvbS10by1ub25lLWJveCIs
ICJ3ZWJraXRGaWx0ZXIiLCAnY3VzdG9tKHJvdGF0ZUJ5IDMwLCBvZmZzZXQgMCknLCAwXSwKKwor
ICAgICAgICAgICAgWyJjdXN0b20tZnJvbS1uby1wYXJhbXMtYW5pbSIsICAxLCAiY3VzdG9tLWZy
b20tbm8tcGFyYW1zLWJveCIsICJ3ZWJraXRGaWx0ZXIiLCAnY3VzdG9tKHJvdGF0ZUJ5IDMwLCBv
ZmZzZXQgMCknLCAwXSwKKyAgICAgICAgICAgIFsiY3VzdG9tLXRvLW5vLXBhcmFtcy1hbmltIiwg
IDEsICJjdXN0b20tdG8tbm8tcGFyYW1zLWJveCIsICJ3ZWJraXRGaWx0ZXIiLCAnY3VzdG9tKHJv
dGF0ZUJ5IDMwLCBvZmZzZXQgMCknLCAwXSwKKworICAgICAgICAgICAgLy8gQ1NTIFNoYWRlcnMg
ZG8gbm90IGdldCBnb29kIEZQUyBpbiBkZWJ1ZyBtb2RlLCBzbyB0aGUgdG9sZXJhbmNlIG5lZWRz
IHRvIGJlIGhpZ2hlci4KKyAgICAgICAgICAgIFsiY3VzdG9tLWZyb20tZGlmZi1wYXJhbXMtYW5p
bSIsICAxLCAiY3VzdG9tLWZyb20tZGlmZi1wYXJhbXMtYm94IiwgIndlYmtpdEZpbHRlciIsICdj
dXN0b20ocGFyYW0gMTAsIHJvdGF0ZUJ5IDYwLCBvZmZzZXQgMTAsIGFub3RoZXJfcGFyYW0gNSkn
LCA1XSwKKyAgICAgICAgICAgIFsiY3VzdG9tLXRvLWRpZmYtcGFyYW1zLWFuaW0iLCAgMSwgImN1
c3RvbS10by1kaWZmLXBhcmFtcy1ib3giLCAid2Via2l0RmlsdGVyIiwgJ2N1c3RvbShwYXJhbSAx
MCwgcm90YXRlQnkgNjAsIG9mZnNldCAxMCwgYW5vdGhlcl9wYXJhbSA1KScsIDVdLAorCisgICAg
ICAgICAgICBbImN1c3RvbS1taXgtcGFyYW1zLWFuaW0iLCAgMSwgImN1c3RvbS1taXgtcGFyYW1z
LWJveCIsICJ3ZWJraXRGaWx0ZXIiLCAnY3VzdG9tKHBhcmFtIDEwLCBhbm90aGVyX3BhcmFtIDUs
IGZpcnN0X3BhcmFtIDYsIHJvdGF0ZUJ5IDYwLCBvZmZzZXQgMTAsIGxhc3RfcGFyYW0gNCknLCA1
XSwKKyAgICAgICAgICAgIFsiY3VzdG9tLW1peC1udW1iZXJzLWFuaW0iLCAgMSwgImN1c3RvbS1t
aXgtbnVtYmVycy1ib3giLCAid2Via2l0RmlsdGVyIiwgJ2N1c3RvbShyb3RhdGVCeSA0NSwgYSA1
LjUsIGIgMTEgMTYuNSwgYyAyMiAyNy41IDMzLCBkIDM4LjUgNDQgNDkuNSknLCA1XQorICAgICAg
ICBdOworICAgICAgICBydW5BbmltYXRpb25UZXN0KGV4cGVjdGVkVmFsdWVzKTsKKyAgICA8L3Nj
cmlwdD4KKzwvaGVhZD4KKzxib2R5PgorICAgIDxkaXYgY2xhc3M9ImJveCIgaWQ9ImN1c3RvbS1m
cm9tLW5vbmUtYm94Ij48L2Rpdj4KKyAgICA8ZGl2IGNsYXNzPSJib3giIGlkPSJjdXN0b20tdG8t
bm9uZS1ib3giPjwvZGl2PgorICAgIDxkaXYgY2xhc3M9ImJveCIgaWQ9ImN1c3RvbS1mcm9tLW5v
LXBhcmFtcy1ib3giPjwvZGl2PgorICAgIDxkaXYgY2xhc3M9ImJveCIgaWQ9ImN1c3RvbS10by1u
by1wYXJhbXMtYm94Ij48L2Rpdj4KKyAgICA8ZGl2IGNsYXNzPSJib3giIGlkPSJjdXN0b20tZnJv
bS1kaWZmLXBhcmFtcy1ib3giPjwvZGl2PgorICAgIDxkaXYgY2xhc3M9ImJveCIgaWQ9ImN1c3Rv
bS10by1kaWZmLXBhcmFtcy1ib3giPjwvZGl2PgorICAgIDxkaXYgY2xhc3M9ImJveCIgaWQ9ImN1
c3RvbS1taXgtcGFyYW1zLWJveCI+PC9kaXY+CisgICAgPGRpdiBjbGFzcz0iYm94IiBpZD0iY3Vz
dG9tLW1peC1udW1iZXJzLWJveCI+PC9kaXY+CisKKyAgICA8ZGl2IGlkPSJyZXN1bHQiPgorICAg
IDwvZGl2PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvY3NzMy9m
aWx0ZXJzL3Jlc291cmNlcy9jdXN0b20tZmlsdGVyLXBhcnNlci5qcyBiL0xheW91dFRlc3RzL2Nz
czMvZmlsdGVycy9yZXNvdXJjZXMvY3VzdG9tLWZpbHRlci1wYXJzZXIuanMKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOWMwNTBhOQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91
dFRlc3RzL2NzczMvZmlsdGVycy9yZXNvdXJjZXMvY3VzdG9tLWZpbHRlci1wYXJzZXIuanMKQEAg
LTAsMCArMSwxNjYgQEAKKyhmdW5jdGlvbigpIHsKKworZnVuY3Rpb24gVG9rZW4odHlwZSkgCit7
CisgICAgdGhpcy50eXBlID0gdHlwZTsKK30KKworVG9rZW4ucHJvdG90eXBlLmlzQSA9IGZ1bmN0
aW9uKCkKK3sKKyAgICBmb3IgKHZhciBpID0gMDsgaSA8IGFyZ3VtZW50cy5sZW5ndGg7ICsraSkg
eworICAgICAgICB2YXIgdHlwZSA9IGFyZ3VtZW50c1tpXTsKKyAgICAgICAgaWYgKCh0eXBlb2Yg
dHlwZSA9PSAib2JqZWN0IiAmJiB0eXBlLmxlbmd0aCAmJiB0aGlzLmlzQS5hcHBseSh0aGlzLCB0
eXBlKSkKKyAgICAgICAgICAgIHx8ICh0eXBlb2YgdHlwZSA9PSAiZnVuY3Rpb24iICYmIHR5cGUo
dGhpcykpCisgICAgICAgICAgICB8fCB0eXBlID09IHRoaXMudHlwZSkKKyAgICAgICAgICAgIHJl
dHVybiB0cnVlOworICAgIH0KKyAgICByZXR1cm4gZmFsc2U7Cit9CisKK2Z1bmN0aW9uIGNyZWF0
ZVRva2VuKHR5cGUsIHZhbHVlKSB7CisgICAgdmFyIHRva2VuID0gbmV3IFRva2VuKHR5cGUpOwor
ICAgIGlmICh2YWx1ZSkgeworICAgICAgICBmb3IgKHZhciBpIGluIHZhbHVlKQorICAgICAgICAg
ICAgaWYgKHZhbHVlLmhhc093blByb3BlcnR5KGkpKQorICAgICAgICAgICAgICAgIHRva2VuW2ld
ID0gdmFsdWVbaV07CisgICAgfQorICAgIHJldHVybiB0b2tlbjsKK30KKworZnVuY3Rpb24gdG9r
ZW5pemVTdHJpbmcocykKK3sKKyAgICB2YXIgdG9rZW5pemVyID0gbmV3IFJlZ0V4cChbCisgICAg
ICAgICJ1cmxcXChcXHMqKC4qPylcXHMqXFwpIiwgLy8gdXJsKCkgLSAxCisgICAgICAgICIoKD86
W1xcKy1dPylcXGQqXFwuXFxkKykiLCAvLyBmbG9hdHMgLSAyCisgICAgICAgICIoKD86W1xcKy1d
PylcXGQrKSIsIC8vIGludGVnZXJzIC0gMworICAgICAgICAiKFtcXHctXVtcXHdcXGQtXSopIiwg
Ly8ga2V5d29yZHMgLSA0CisgICAgICAgICIoWyxcXC5cXChcXCldKSIgLy8gcHVuY3R1YXRpb24g
LSA1CisgICAgXS5qb2luKCJ8IiksICJnIik7CisKKyAgICB2YXIgbWF0Y2gsIHRva2VucyA9IFtd
OworICAgIHdoaWxlIChtYXRjaCA9IHRva2VuaXplci5leGVjKHMpKSB7CisgICAgICAgIGlmICht
YXRjaFsxXSAhPT0gdW5kZWZpbmVkKQorICAgICAgICAgICAgdG9rZW5zLnB1c2goY3JlYXRlVG9r
ZW4oInVybCIsIHt2YWx1ZTogbWF0Y2hbMV19KSk7CisgICAgICAgIGVsc2UgaWYgKG1hdGNoWzJd
ICE9PSB1bmRlZmluZWQpCisgICAgICAgICAgICB0b2tlbnMucHVzaChjcmVhdGVUb2tlbigiZmxv
YXQiLCB7dmFsdWU6IHBhcnNlRmxvYXQobWF0Y2hbMl0pfSkpOworICAgICAgICBlbHNlIGlmICht
YXRjaFszXSAhPT0gdW5kZWZpbmVkKQorICAgICAgICAgICAgdG9rZW5zLnB1c2goY3JlYXRlVG9r
ZW4oImludGVnZXIiLCB7dmFsdWU6IHBhcnNlSW50KG1hdGNoWzNdKX0pKTsKKyAgICAgICAgZWxz
ZSBpZiAobWF0Y2hbNF0gIT09IHVuZGVmaW5lZCkKKyAgICAgICAgICAgIHRva2Vucy5wdXNoKGNy
ZWF0ZVRva2VuKCJrZXl3b3JkIiwge3ZhbHVlOiBtYXRjaFs0XX0pKTsKKyAgICAgICAgZWxzZSBp
ZiAobWF0Y2hbNV0gIT09IHVuZGVmaW5lZCkKKyAgICAgICAgICAgIHRva2Vucy5wdXNoKGNyZWF0
ZVRva2VuKG1hdGNoWzVdKSk7CisgICAgfQorICAgIHJldHVybiB0b2tlbnM7Cit9CisKK2Z1bmN0
aW9uIG51bWJlcih0b2tlbikKK3sKKyAgICByZXR1cm4gdG9rZW4udHlwZSA9PSAiZmxvYXQiIHx8
IHRva2VuLnR5cGUgPT0gImludGVnZXIiOworfQorCitmdW5jdGlvbiBUb2tlblN0cmVhbSh0b2tl
bnMpIHsKKyAgICB0aGlzLnRva2VucyA9IHRva2VuczsKKyAgICB0aGlzLnRva2Vucy5wdXNoKG5l
dyBUb2tlbigiZW5kIikpOworICAgIHRoaXMudG9rZW5JbmRleCA9IDA7Cit9CisKK1Rva2VuU3Ry
ZWFtLnByb3RvdHlwZS5jdXJyZW50ID0gZnVuY3Rpb24oKSAKK3sgCisgICAgcmV0dXJuIHRoaXMu
dG9rZW5zW3RoaXMudG9rZW5JbmRleF07IAorfQorCitUb2tlblN0cmVhbS5wcm90b3R5cGUuYWhl
YWQgPSBmdW5jdGlvbigpIAoreworICAgIHJldHVybiB0aGlzLnRva2Vuc1t0aGlzLnRva2VuSW5k
ZXggKyAxXTsgCit9CisKK1Rva2VuU3RyZWFtLnByb3RvdHlwZS5za2lwID0gZnVuY3Rpb24odHlw
ZU1hdGNoZXIpCit7CisgICAgaWYgKCF0eXBlTWF0Y2hlciB8fCB0aGlzLmFoZWFkKCkuaXNBKHR5
cGVNYXRjaGVyKSkgeworICAgICAgICB2YXIgdG9rZW4gPSB0aGlzLmN1cnJlbnQoKTsKKyAgICAg
ICAgKyt0aGlzLnRva2VuSW5kZXg7CisgICAgICAgIHJldHVybiB0b2tlbjsKKyAgICB9CisgICAg
dGhyb3cgbmV3IEVycm9yKCJDYW5ub3QgdXNlICIgKyBKU09OLnN0cmluZ2lmeSh0eXBlTWF0Y2hl
cikgKyAiIHRvIHNraXAgb3ZlciAiICsgSlNPTi5zdHJpbmdpZnkodGhpcy5haGVhZCgpKSk7Cit9
CisKK1Rva2VuU3RyZWFtLnByb3RvdHlwZS5za2lwSWZOZWVkZWQgPSBmdW5jdGlvbih0eXBlTWF0
Y2hlcikKK3sKKyAgICBpZiAodGhpcy5haGVhZCgpICYmIHRoaXMuYWhlYWQoKS5pc0EodHlwZU1h
dGNoZXIpKQorICAgICAgICArK3RoaXMudG9rZW5JbmRleDsKK30KKworZnVuY3Rpb24gcGFyc2VG
dW5jdGlvbihtKQoreworICAgIHZhciBmdW5jdGlvbk9iamVjdCA9IHsKKyAgICAgICAgdHlwZTog
ImZ1bmN0aW9uIiwKKyAgICAgICAgbmFtZTogbS5za2lwKCkudmFsdWUKKyAgICB9OworICAgIG0u
c2tpcCgiKCIpOworICAgIGZ1bmN0aW9uT2JqZWN0LmFyZ3VtZW50cyA9IHBhcnNlTGlzdChtLCBb
IikiLCAiZW5kIl0pOworICAgIG0uc2tpcCgiKSIpOworICAgIHJldHVybiBmdW5jdGlvbk9iamVj
dDsKK30KKworZnVuY3Rpb24gcGFyc2VQYXJhbWV0ZXIobSkKK3sKKyAgICB2YXIgZnVuY3Rpb25P
YmplY3QgPSB7CisgICAgICAgIHR5cGU6ICJwYXJhbWV0ZXIiLAorICAgICAgICBuYW1lOiBtLnNr
aXAoKS52YWx1ZQorICAgIH07CisgICAgZnVuY3Rpb25PYmplY3QudmFsdWUgPSBwYXJzZUxpc3Qo
bSwgWyIsIiwgImVuZCJdKTsKKyAgICBtLnNraXBJZk5lZWRlZCgiLCIpOworICAgIHJldHVybiBm
dW5jdGlvbk9iamVjdDsKK30KKworZnVuY3Rpb24gcGFyc2VMaXN0KG0sIGVuZFRva2VuKQorewor
ICAgIHZhciByZXN1bHQgPSBbXSwgdG9rZW47CisgICAgd2hpbGUgKCh0b2tlbiA9IG0uY3VycmVu
dCgpKSAmJiAhdG9rZW4uaXNBKGVuZFRva2VuKSkgeworICAgICAgICBpZiAodG9rZW4uaXNBKCJr
ZXl3b3JkIikpIHsKKyAgICAgICAgICAgIGlmIChtLmFoZWFkKCkuaXNBKCIoIikpCisgICAgICAg
ICAgICAgICAgcmVzdWx0LnB1c2gocGFyc2VGdW5jdGlvbihtKSk7CisgICAgICAgICAgICBlbHNl
IGlmIChtLmFoZWFkKCkuaXNBKCIsIiwgZW5kVG9rZW4pKQorICAgICAgICAgICAgICAgIHJlc3Vs
dC5wdXNoKHsKKyAgICAgICAgICAgICAgICAgICAgdHlwZTogImtleXdvcmQiLCAKKyAgICAgICAg
ICAgICAgICAgICAgdmFsdWU6IG0uc2tpcCgpLnZhbHVlCisgICAgICAgICAgICAgICAgfSk7Cisg
ICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgcmVzdWx0LnB1c2gocGFyc2VQYXJhbWV0
ZXIobSkpOworICAgICAgICB9IGVsc2UgaWYgKHRva2VuLmlzQShudW1iZXIpKQorICAgICAgICAg
ICAgcmVzdWx0LnB1c2goeworICAgICAgICAgICAgICAgIHR5cGU6ICJudW1iZXIiLAorICAgICAg
ICAgICAgICAgIHZhbHVlOiBtLnNraXAoKS52YWx1ZQorICAgICAgICAgICAgfSk7CisgICAgICAg
IGVsc2UgaWYgKHRva2VuLmlzQSgidXJsIikpCisgICAgICAgICAgICByZXN1bHQucHVzaCh7Cisg
ICAgICAgICAgICAgICAgdHlwZTogInVybCIsCisgICAgICAgICAgICAgICAgdmFsdWU6IG0uc2tp
cCgpLnZhbHVlCisgICAgICAgICAgICB9KTsKKyAgICAgICAgZWxzZSBpZiAodG9rZW4uaXNBKCIs
IikpCisgICAgICAgICAgICBtLnNraXAoKTsKKyAgICAgICAgZWxzZSAKKyAgICAgICAgICAgIHRo
cm93ICJVbmV4cGVjdGVkIHRva2VuICIgKyBKU09OLnN0cmluZ2lmeSh0b2tlbikgKyAiIGluIGEg
bGlzdC4iOworICAgIH0KKyAgICByZXR1cm4gcmVzdWx0OworfQorCitmdW5jdGlvbiB0b2tlbnNU
b1ZhbHVlcyh0b2tlbnMpCit7CisgICAgdmFyIG0gPSBuZXcgVG9rZW5TdHJlYW0odG9rZW5zKTsK
KyAgICByZXR1cm4gcGFyc2VMaXN0KG0sICJlbmQiKTsKK30KKword2luZG93LnBhcnNlQ3VzdG9t
RmlsdGVyUGFyYW1ldGVycyA9IGZ1bmN0aW9uKHMpCit7CisgICAgcmV0dXJuIHRva2Vuc1RvVmFs
dWVzKHRva2VuaXplU3RyaW5nKHMpKTsKK30KKword2luZG93LmdldEN1c3RvbUZpbHRlclBhcmFt
ZXRlcnMgPSBmdW5jdGlvbihzKSAKK3sKKyAgICByZXR1cm4gcGFyc2VDdXN0b21GaWx0ZXJQYXJh
bWV0ZXJzKHMpCisgICAgICAgICAgICAuZmlsdGVyKGZ1bmN0aW9uKGEpIHsgcmV0dXJuIGEudHlw
ZSA9PSAicGFyYW1ldGVyIiB9KQorICAgICAgICAgICAgLnNvcnQoZnVuY3Rpb24oYSwgYikgeyBy
ZXR1cm4gYS5uYW1lLmxvY2FsZUNvbXBhcmUoYi5uYW1lKTsgfSk7Cit9CisKK30pKCk7ClwgTm8g
bmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IDUyZDNkODQuLjE0NTA2OTkgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cKQEAgLTEsMyArMSw0MiBAQAorMjAxMi0wNC0yNiAgQWxleGFuZHJ1IENoaWN1bGl0
YSAgPGFjaGljdUBhZG9iZS5jb20+CisKKyAgICAgICAgW0NTUyBTaGFkZXJzXSBJbXBsZW1lbnQg
Q1NTIEFuaW1hdGlvbnMgYW5kIFRyYW5zaXRpb25zIGZvciBDU1MgU2hhZGVycworICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzE0MDYKKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBJJ3ZlIGltcGxlbWVudGVkIHRo
ZSBibGVuZCBmdW5jdGlvbiBmb3IgdGhlIEN1c3RvbUZpbHRlck9wZXJhdGlvbi4gVGhpcyBzaG91
bGQgZW5hYmxlIGFuaW1hdGlvbnMgZm9yIENTUyBTaGFkZXJzLgorICAgICAgICBDdXJyZW50bHks
IGp1c3QgZmxvYXRzIGFyZSBpbXBsZW1lbnRlZC4gSWYgYW55IG9mIHRoZSBmaWx0ZXIgYXR0cmli
dXRlcyBsaWtlIHNoYWRlciwgbWVzaCBzaXplIG9yIGJveCBtb2RlIGFyZSBkaWZmZXJlbnQsIAor
ICAgICAgICB0aGUgZmFsbGJhY2sgaXMgdG8gdXNlIHRoZSAidG8iIHBhcnQgb2YgdGhlIGFuaW1h
dGlvbiBpbnN0ZWFkLiBJZiBvdGhlciBzaGFkZXIgcGFyYW1ldGVycyBkbyBub3QgbWF0Y2gsIGl0
IHdpbGwgbWVyZ2UgdGhlIHBhcmFtZXRlciB2YWx1ZXMKKyAgICAgICAgIGJldHdlZW4gdGhlICJm
cm9tIiBhbmQgInRvIiBzdGF0ZXMuCisKKyAgICAgICAgVGVzdDogY3NzMy9maWx0ZXJzL2N1c3Rv
bS9jdXN0b20tZmlsdGVyLWFuaW1hdGlvbi5odG1sCisKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9maWx0ZXJzL0N1c3RvbUZpbHRlck51bWJlclBhcmFtZXRlci5oOgorICAgICAgICAoV2Vi
Q29yZTo6Q3VzdG9tRmlsdGVyTnVtYmVyUGFyYW1ldGVyOjpibGVuZCk6CisgICAgICAgIChDdXN0
b21GaWx0ZXJOdW1iZXJQYXJhbWV0ZXIpOgorICAgICAgICAoV2ViQ29yZTo6Q3VzdG9tRmlsdGVy
TnVtYmVyUGFyYW1ldGVyOjpvcGVyYXRvcj09KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy9maWx0ZXJzL0N1c3RvbUZpbHRlck9wZXJhdGlvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpl
cXVhbEN1c3RvbUZpbHRlclBhcmFtZXRlcnMpOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAg
IChXZWJDb3JlOjpjaGVja0N1c3RvbUZpbHRlclBhcmFtZXRlcnNPcmRlcik6CisgICAgICAgIChX
ZWJDb3JlOjpibGVuZEN1c3RvbUZpbHRlclBhcmFtZXRlcnMpOgorICAgICAgICAoV2ViQ29yZTo6
Q3VzdG9tRmlsdGVyT3BlcmF0aW9uOjpDdXN0b21GaWx0ZXJPcGVyYXRpb24pOgorICAgICAgICAo
V2ViQ29yZTo6Q3VzdG9tRmlsdGVyT3BlcmF0aW9uOjpibGVuZCk6CisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvZmlsdGVycy9DdXN0b21GaWx0ZXJPcGVyYXRpb24uaDoKKyAgICAgICAgKFdl
YkNvcmUpOgorICAgICAgICAoQ3VzdG9tRmlsdGVyT3BlcmF0aW9uKToKKyAgICAgICAgKFdlYkNv
cmU6OkN1c3RvbUZpbHRlck9wZXJhdGlvbjo6b3BlcmF0b3I9PSk6CisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvZmlsdGVycy9DdXN0b21GaWx0ZXJQYXJhbWV0ZXIuaDoKKyAgICAgICAgKEN1
c3RvbUZpbHRlclBhcmFtZXRlcik6CisgICAgICAgIChXZWJDb3JlOjpDdXN0b21GaWx0ZXJQYXJh
bWV0ZXI6OmlzU2FtZVR5cGUpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMv
Q3VzdG9tRmlsdGVyUHJvZ3JhbS5oOgorICAgICAgICAqIHJlbmRlcmluZy9zdHlsZS9TdHlsZUN1
c3RvbUZpbHRlclByb2dyYW0uaDoKKyAgICAgICAgKFN0eWxlQ3VzdG9tRmlsdGVyUHJvZ3JhbSk6
CisgICAgICAgIChXZWJDb3JlOjpTdHlsZUN1c3RvbUZpbHRlclByb2dyYW06OmNhY2hlZFZlcnRl
eFNoYWRlcik6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZUN1c3RvbUZpbHRlclByb2dyYW06OmNh
Y2hlZEZyYWdtZW50U2hhZGVyKToKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlQ3VzdG9tRmlsdGVy
UHJvZ3JhbTo6b3BlcmF0b3I9PSk6CisKIDIwMTItMDQtMjUgIEFscGhhIExhbSAgPGhjbGFtQGNo
cm9taXVtLm9yZz4KIAogICAgICAgICBVbnJldmlld2VkIGJ1aWxkIGZpeC4KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvQ3VzdG9tRmlsdGVyTnVt
YmVyUGFyYW1ldGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJz
L0N1c3RvbUZpbHRlck51bWJlclBhcmFtZXRlci5oCmluZGV4IDBhZGUxNzMuLjI3NzBiNGMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvQ3VzdG9t
RmlsdGVyTnVtYmVyUGFyYW1ldGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvZmlsdGVycy9DdXN0b21GaWx0ZXJOdW1iZXJQYXJhbWV0ZXIuaApAQCAtNDgsNiArNDgs
MjcgQEAgcHVibGljOgogCiAgICAgdm9pZCBhZGRWYWx1ZShkb3VibGUgdmFsdWUpIHsgbV9kYXRh
LmFwcGVuZCh2YWx1ZSk7IH0KICAgICAKKyAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8Q3VzdG9tRmls
dGVyUGFyYW1ldGVyPiBibGVuZChjb25zdCBDdXN0b21GaWx0ZXJQYXJhbWV0ZXIqIGZyb20sIGRv
dWJsZSBwcm9ncmVzcykKKyAgICB7CisgICAgICAgIGlmICghZnJvbSB8fCAhaXNTYW1lVHlwZSgq
ZnJvbSkpCisgICAgICAgICAgICByZXR1cm4gdGhpczsKKyAgICAgICAgY29uc3QgQ3VzdG9tRmls
dGVyTnVtYmVyUGFyYW1ldGVyKiBmcm9tTnVtYmVyID0gc3RhdGljX2Nhc3Q8Y29uc3QgQ3VzdG9t
RmlsdGVyTnVtYmVyUGFyYW1ldGVyKj4oZnJvbSk7CisgICAgICAgIGlmIChzaXplKCkgIT0gZnJv
bU51bWJlci0+c2l6ZSgpKQorICAgICAgICAgICAgcmV0dXJuIHRoaXM7CisgICAgICAgIFJlZlB0
cjxDdXN0b21GaWx0ZXJOdW1iZXJQYXJhbWV0ZXI+IHJlc3VsdCA9IEN1c3RvbUZpbHRlck51bWJl
clBhcmFtZXRlcjo6Y3JlYXRlKG5hbWUoKSk7CisgICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBp
IDwgc2l6ZSgpOyArK2kpCisgICAgICAgICAgICByZXN1bHQtPmFkZFZhbHVlKFdlYkNvcmU6OmJs
ZW5kKGZyb21OdW1iZXItPnZhbHVlQXQoaSksIHZhbHVlQXQoaSksIHByb2dyZXNzKSk7CisgICAg
ICAgIHJldHVybiByZXN1bHQucmVsZWFzZSgpOworICAgIH0KKyAgICAKKyAgICB2aXJ0dWFsIGJv
b2wgb3BlcmF0b3I9PShjb25zdCBDdXN0b21GaWx0ZXJQYXJhbWV0ZXImIG8pIGNvbnN0CisgICAg
eworICAgICAgICBpZiAoIWlzU2FtZVR5cGUobykpCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7
CisgICAgICAgIGNvbnN0IEN1c3RvbUZpbHRlck51bWJlclBhcmFtZXRlciogb3RoZXIgPSBzdGF0
aWNfY2FzdDxjb25zdCBDdXN0b21GaWx0ZXJOdW1iZXJQYXJhbWV0ZXIqPigmbyk7CisgICAgICAg
IHJldHVybiBtX2RhdGEgPT0gb3RoZXItPm1fZGF0YTsKKyAgICB9CisgICAgCiBwcml2YXRlOgog
ICAgIEN1c3RvbUZpbHRlck51bWJlclBhcmFtZXRlcihjb25zdCBTdHJpbmcmIG5hbWUpCiAgICAg
ICAgIDogQ3VzdG9tRmlsdGVyUGFyYW1ldGVyKE5VTUJFUiwgbmFtZSkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvQ3VzdG9tRmlsdGVyT3BlcmF0
aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvQ3VzdG9t
RmlsdGVyT3BlcmF0aW9uLmNwcAppbmRleCBjMDVhNDBmLi4xZjZmMjRlIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0N1c3RvbUZpbHRlck9wZXJh
dGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9D
dXN0b21GaWx0ZXJPcGVyYXRpb24uY3BwCkBAIC00MCw2ICs0MCw2MCBAQAogCiBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAKK2Jvb2wgZXF1YWxDdXN0b21GaWx0ZXJQYXJhbWV0ZXJzKGNvbnN0IEN1c3Rv
bUZpbHRlclBhcmFtZXRlckxpc3QmIGxpc3RBLCBjb25zdCBDdXN0b21GaWx0ZXJQYXJhbWV0ZXJM
aXN0JiBsaXN0QikKK3sKKyAgICBpZiAobGlzdEEuc2l6ZSgpICE9IGxpc3RCLnNpemUoKSkKKyAg
ICAgICAgcmV0dXJuIGZhbHNlOworICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbGlzdEEuc2l6
ZSgpOyArK2kpIHsKKyAgICAgICAgaWYgKGxpc3RBLmF0KGkpLmdldCgpICE9IGxpc3RCLmF0KGkp
LmdldCgpIAorICAgICAgICAgICAgJiYgISgqbGlzdEEuYXQoaSkuZ2V0KCkgPT0gKmxpc3RCLmF0
KGkpLmdldCgpKSkKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisgICAgcmV0dXJu
IHRydWU7Cit9CisKKyNpZm5kZWYgTkRFQlVHCitzdGF0aWMgYm9vbCBjaGVja0N1c3RvbUZpbHRl
clBhcmFtZXRlcnNPcmRlcihjb25zdCBDdXN0b21GaWx0ZXJQYXJhbWV0ZXJMaXN0JiBwYXJhbWV0
ZXJzKQoreworICAgIGZvciAodW5zaWduZWQgaSA9IDE7IGkgPCBwYXJhbWV0ZXJzLnNpemUoKTsg
KytpKSB7CisgICAgICAgIC8vIEJyZWFrIGZvciBlcXVhbCBvciBub3Qtc29ydGVkIHBhcmFtZXRl
cnMuCisgICAgICAgIGlmICghY29kZVBvaW50Q29tcGFyZUxlc3NUaGFuKHBhcmFtZXRlcnMuYXQo
aSAtIGkpLT5uYW1lKCksIHBhcmFtZXRlcnMuYXQoaSktPm5hbWUoKSkpCisgICAgICAgICAgICBy
ZXR1cm4gZmFsc2U7CisgICAgfQorICAgIHJldHVybiB0cnVlOworfQorI2VuZGlmCisKK3ZvaWQg
YmxlbmRDdXN0b21GaWx0ZXJQYXJhbWV0ZXJzKGNvbnN0IEN1c3RvbUZpbHRlclBhcmFtZXRlckxp
c3QmIGZyb21MaXN0LCBjb25zdCBDdXN0b21GaWx0ZXJQYXJhbWV0ZXJMaXN0JiB0b0xpc3QsIGRv
dWJsZSBwcm9ncmVzcywgQ3VzdG9tRmlsdGVyUGFyYW1ldGVyTGlzdCYgcmVzdWx0TGlzdCkKK3sK
KyAgICAvLyBUaGlzIG1ldGhvZCBleHBlY3RzIGJvdGggbGlzdHMgdG8gYmUgc29ydGVkIGJ5IHBh
cmFtZXRlciBuYW1lIGFuZCB0aGUgcmVzdWx0IGxpc3QgaXMgYWxzbyBzb3J0ZWQuCisgICAgQVNT
RVJUKGNoZWNrQ3VzdG9tRmlsdGVyUGFyYW1ldGVyc09yZGVyKGZyb21MaXN0KSk7CisgICAgQVNT
RVJUKGNoZWNrQ3VzdG9tRmlsdGVyUGFyYW1ldGVyc09yZGVyKHRvTGlzdCkpOworICAgIHNpemVf
dCBmcm9tTGlzdEluZGV4ID0gMCwgdG9MaXN0SW5kZXggPSAwOworICAgIHdoaWxlIChmcm9tTGlz
dEluZGV4IDwgZnJvbUxpc3Quc2l6ZSgpICYmIHRvTGlzdEluZGV4IDwgdG9MaXN0LnNpemUoKSkg
eworICAgICAgICBDdXN0b21GaWx0ZXJQYXJhbWV0ZXIqIHBhcmFtRnJvbSA9IGZyb21MaXN0LmF0
KGZyb21MaXN0SW5kZXgpLmdldCgpOworICAgICAgICBDdXN0b21GaWx0ZXJQYXJhbWV0ZXIqIHBh
cmFtVG8gPSB0b0xpc3QuYXQodG9MaXN0SW5kZXgpLmdldCgpOworICAgICAgICBpZiAocGFyYW1G
cm9tLT5uYW1lKCkgPT0gcGFyYW1Uby0+bmFtZSgpKSB7CisgICAgICAgICAgICByZXN1bHRMaXN0
LmFwcGVuZChwYXJhbVRvLT5ibGVuZChwYXJhbUZyb20sIHByb2dyZXNzKSk7CisgICAgICAgICAg
ICArK2Zyb21MaXN0SW5kZXg7CisgICAgICAgICAgICArK3RvTGlzdEluZGV4OworICAgICAgICAg
ICAgY29udGludWU7CisgICAgICAgIH0KKyAgICAgICAgaWYgKGNvZGVQb2ludENvbXBhcmVMZXNz
VGhhbihwYXJhbUZyb20tPm5hbWUoKSwgcGFyYW1Uby0+bmFtZSgpKSkgeworICAgICAgICAgICAg
cmVzdWx0TGlzdC5hcHBlbmQocGFyYW1Gcm9tKTsKKyAgICAgICAgICAgICsrZnJvbUxpc3RJbmRl
eDsKKyAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICB9CisgICAgICAgIHJlc3VsdExpc3Qu
YXBwZW5kKHBhcmFtVG8pOworICAgICAgICArK3RvTGlzdEluZGV4OworICAgIH0KKyAgICBmb3Ig
KDsgZnJvbUxpc3RJbmRleCA8IGZyb21MaXN0LnNpemUoKTsgKytmcm9tTGlzdEluZGV4KQorICAg
ICAgICByZXN1bHRMaXN0LmFwcGVuZChmcm9tTGlzdC5hdChmcm9tTGlzdEluZGV4KSk7CisgICAg
Zm9yICg7IHRvTGlzdEluZGV4IDwgdG9MaXN0LnNpemUoKTsgKyt0b0xpc3RJbmRleCkKKyAgICAg
ICAgcmVzdWx0TGlzdC5hcHBlbmQodG9MaXN0LmF0KHRvTGlzdEluZGV4KSk7CisgICAgQVNTRVJU
KGNoZWNrQ3VzdG9tRmlsdGVyUGFyYW1ldGVyc09yZGVyKHJlc3VsdExpc3QpKTsKK30KKwogQ3Vz
dG9tRmlsdGVyT3BlcmF0aW9uOjpDdXN0b21GaWx0ZXJPcGVyYXRpb24oUGFzc1JlZlB0cjxDdXN0
b21GaWx0ZXJQcm9ncmFtPiBwcm9ncmFtLCBjb25zdCBDdXN0b21GaWx0ZXJQYXJhbWV0ZXJMaXN0
JiBzb3J0ZWRQYXJhbWV0ZXJzLCB1bnNpZ25lZCBtZXNoUm93cywgdW5zaWduZWQgbWVzaENvbHVt
bnMsIE1lc2hCb3hUeXBlIG1lc2hCb3hUeXBlLCBNZXNoVHlwZSBtZXNoVHlwZSkKICAgICA6IEZp
bHRlck9wZXJhdGlvbihDVVNUT00pCiAgICAgLCBtX3Byb2dyYW0ocHJvZ3JhbSkKQEAgLTUwLDI0
ICsxMDQsMzIgQEAgQ3VzdG9tRmlsdGVyT3BlcmF0aW9uOjpDdXN0b21GaWx0ZXJPcGVyYXRpb24o
UGFzc1JlZlB0cjxDdXN0b21GaWx0ZXJQcm9ncmFtPiBwcm8KICAgICAsIG1fbWVzaFR5cGUobWVz
aFR5cGUpCiB7CiAgICAgLy8gTWFrZSBzdXJlIHRoYXQgdGhlIHBhcmFtZXRlcnMgYXJlIGFsd3lh
cyBzb3J0ZWQgYnkgbmFtZS4gV2UgdXNlIHRoYXQgdG8gbWVyZ2UgdHdvIEN1c3RvbUZpbHRlck9w
ZXJhdGlvbnMgaW4gYW5pbWF0aW9ucy4KLSAgICBBU1NFUlQoaGFzU29ydGVkUGFyYW1ldGVyTGlz
dCgpKTsKKyAgICBBU1NFUlQoY2hlY2tDdXN0b21GaWx0ZXJQYXJhbWV0ZXJzT3JkZXIobV9wYXJh
bWV0ZXJzKSk7CiB9CiAgICAgCiBDdXN0b21GaWx0ZXJPcGVyYXRpb246On5DdXN0b21GaWx0ZXJP
cGVyYXRpb24oKQogewogfQogCi0jaWZuZGVmIE5ERUJVRwotYm9vbCBDdXN0b21GaWx0ZXJPcGVy
YXRpb246Omhhc1NvcnRlZFBhcmFtZXRlckxpc3QoKQorUGFzc1JlZlB0cjxGaWx0ZXJPcGVyYXRp
b24+IEN1c3RvbUZpbHRlck9wZXJhdGlvbjo6YmxlbmQoY29uc3QgRmlsdGVyT3BlcmF0aW9uKiBm
cm9tLCBkb3VibGUgcHJvZ3Jlc3MsIGJvb2wgYmxlbmRUb1Bhc3N0aHJvdWdoKQogewotICAgIGZv
ciAodW5zaWduZWQgaSA9IDE7IGkgPCBtX3BhcmFtZXRlcnMuc2l6ZSgpOyArK2kpIHsKLSAgICAg
ICAgLy8gQnJlYWsgZm9yIGVxdWFsIG9yIG5vdC1zb3J0ZWQgcGFyYW1ldGVycy4KLSAgICAgICAg
aWYgKCFjb2RlUG9pbnRDb21wYXJlTGVzc1RoYW4obV9wYXJhbWV0ZXJzLmF0KGkgLSBpKS0+bmFt
ZSgpLCBtX3BhcmFtZXRlcnMuYXQoaSktPm5hbWUoKSkpCi0gICAgICAgICAgICByZXR1cm4gZmFs
c2U7Ci0gICAgfQotICAgIHJldHVybiB0cnVlOworICAgIC8vIEZJWE1FOiBUaGVyZSdzIG5vIHdh
eSB0byBkZWNpZGUgd2hhdCBpcyB0aGUgInBhc3N0aHJvdWdoIGZpbHRlciIgZm9yIHNoYWRlcnMg
dXNpbmcgdGhlIGN1cnJlbnQgQ1NTIFN5bnRheC4KKyAgICAvLyBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9ODQ5MDMKKyAgICBpZiAoYmxlbmRUb1Bhc3N0aHJvdWdoIHx8
ICFmcm9tIHx8ICFmcm9tLT5pc1NhbWVUeXBlKCp0aGlzKSkKKyAgICAgICAgcmV0dXJuIHRoaXM7
CisgICAgCisgICAgY29uc3QgQ3VzdG9tRmlsdGVyT3BlcmF0aW9uKiBmcm9tT3AgPSBzdGF0aWNf
Y2FzdDxjb25zdCBDdXN0b21GaWx0ZXJPcGVyYXRpb24qPihmcm9tKTsKKyAgICBpZiAoISgqbV9w
cm9ncmFtLmdldCgpID09ICpmcm9tT3AtPm1fcHJvZ3JhbS5nZXQoKSkKKyAgICAgICAgfHwgbV9t
ZXNoUm93cyAhPSBmcm9tT3AtPm1fbWVzaFJvd3MKKyAgICAgICAgfHwgbV9tZXNoQ29sdW1ucyAh
PSBmcm9tT3AtPm1fbWVzaENvbHVtbnMKKyAgICAgICAgfHwgbV9tZXNoQm94VHlwZSAhPSBmcm9t
T3AtPm1fbWVzaEJveFR5cGUKKyAgICAgICAgfHwgbV9tZXNoVHlwZSAhPSBmcm9tT3AtPm1fbWVz
aFR5cGUpCisgICAgICAgIHJldHVybiB0aGlzOworICAgIAorICAgIEN1c3RvbUZpbHRlclBhcmFt
ZXRlckxpc3QgYW5pbWF0ZWRQYXJhbWV0ZXJzOworICAgIGJsZW5kQ3VzdG9tRmlsdGVyUGFyYW1l
dGVycyhmcm9tT3AtPm1fcGFyYW1ldGVycywgbV9wYXJhbWV0ZXJzLCBwcm9ncmVzcywgYW5pbWF0
ZWRQYXJhbWV0ZXJzKTsKKyAgICByZXR1cm4gQ3VzdG9tRmlsdGVyT3BlcmF0aW9uOjpjcmVhdGUo
bV9wcm9ncmFtLCBhbmltYXRlZFBhcmFtZXRlcnMsIG1fbWVzaFJvd3MsIG1fbWVzaENvbHVtbnMs
IG1fbWVzaEJveFR5cGUsIG1fbWVzaFR5cGUpOwogfQotI2VuZGlmCiAKIH0gLy8gbmFtZXNwYWNl
IFdlYkNvcmUKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
ZmlsdGVycy9DdXN0b21GaWx0ZXJPcGVyYXRpb24uaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2ZpbHRlcnMvQ3VzdG9tRmlsdGVyT3BlcmF0aW9uLmgKaW5kZXggMzUyZTI3Mi4u
YzNiYzk5MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmls
dGVycy9DdXN0b21GaWx0ZXJPcGVyYXRpb24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9maWx0ZXJzL0N1c3RvbUZpbHRlck9wZXJhdGlvbi5oCkBAIC00Myw2ICs0Myw5
IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNzIEN1c3RvbUZpbHRlclBhcmFtZXRlcjsKIHR5
cGVkZWYgVmVjdG9yPFJlZlB0cjxDdXN0b21GaWx0ZXJQYXJhbWV0ZXI+ID4gQ3VzdG9tRmlsdGVy
UGFyYW1ldGVyTGlzdDsKIAorYm9vbCBlcXVhbEN1c3RvbUZpbHRlclBhcmFtZXRlcnMoY29uc3Qg
Q3VzdG9tRmlsdGVyUGFyYW1ldGVyTGlzdCYgbGlzdEEsIGNvbnN0IEN1c3RvbUZpbHRlclBhcmFt
ZXRlckxpc3QmIGxpc3RCKTsKK3ZvaWQgYmxlbmRDdXN0b21GaWx0ZXJQYXJhbWV0ZXJzKGNvbnN0
IEN1c3RvbUZpbHRlclBhcmFtZXRlckxpc3QmIGxpc3RGcm9tLCBjb25zdCBDdXN0b21GaWx0ZXJQ
YXJhbWV0ZXJMaXN0JiBsaXN0VG8sIGRvdWJsZSBwcm9ncmVzcywgQ3VzdG9tRmlsdGVyUGFyYW1l
dGVyTGlzdCYgcmVzdWx0TGlzdCk7CisKIGNsYXNzIEN1c3RvbUZpbHRlck9wZXJhdGlvbiA6IHB1
YmxpYyBGaWx0ZXJPcGVyYXRpb24gewogcHVibGljOgogICAgIGVudW0gTWVzaEJveFR5cGUgewpA
QCAtODMsNiArODYsOCBAQCBwdWJsaWM6CiAgICAgCiAgICAgdmlydHVhbCBib29sIGFmZmVjdHNP
cGFjaXR5KCkgY29uc3QgeyByZXR1cm4gdHJ1ZTsgfQogICAgIHZpcnR1YWwgYm9vbCBtb3Zlc1Bp
eGVscygpIGNvbnN0IHsgcmV0dXJuIHRydWU7IH0KKyAgICAKKyAgICB2aXJ0dWFsIFBhc3NSZWZQ
dHI8RmlsdGVyT3BlcmF0aW9uPiBibGVuZChjb25zdCBGaWx0ZXJPcGVyYXRpb24qIGZyb20sIGRv
dWJsZSBwcm9ncmVzcywgYm9vbCBibGVuZFRvUGFzc3Rocm91Z2ggPSBmYWxzZSk7CiBwcml2YXRl
OgogICAgIHZpcnR1YWwgYm9vbCBvcGVyYXRvcj09KGNvbnN0IEZpbHRlck9wZXJhdGlvbiYgbykg
Y29uc3QKICAgICB7CkBAIC05MCwxOCArOTUsMTUgQEAgcHJpdmF0ZToKICAgICAgICAgICAgIHJl
dHVybiBmYWxzZTsKIAogICAgICAgICBjb25zdCBDdXN0b21GaWx0ZXJPcGVyYXRpb24qIG90aGVy
ID0gc3RhdGljX2Nhc3Q8Y29uc3QgQ3VzdG9tRmlsdGVyT3BlcmF0aW9uKj4oJm8pOwotICAgICAg
ICByZXR1cm4gbV9wcm9ncmFtLmdldCgpID09IG90aGVyLT5tX3Byb2dyYW0uZ2V0KCkKKyAgICAg
ICAgcmV0dXJuICptX3Byb2dyYW0uZ2V0KCkgPT0gKm90aGVyLT5tX3Byb2dyYW0uZ2V0KCkKICAg
ICAgICAgICAgICAgICYmIG1fbWVzaFJvd3MgPT0gb3RoZXItPm1fbWVzaFJvd3MKICAgICAgICAg
ICAgICAgICYmIG1fbWVzaENvbHVtbnMgPT0gb3RoZXItPm1fbWVzaENvbHVtbnMKICAgICAgICAg
ICAgICAgICYmIG1fbWVzaEJveFR5cGUgPT0gb3RoZXItPm1fbWVzaEJveFR5cGUKLSAgICAgICAg
ICAgICAgICYmIG1fbWVzaFR5cGUgPT0gb3RoZXItPm1fbWVzaFR5cGU7CisgICAgICAgICAgICAg
ICAmJiBtX21lc2hUeXBlID09IG90aGVyLT5tX21lc2hUeXBlCisgICAgICAgICAgICAgICAmJiBl
cXVhbEN1c3RvbUZpbHRlclBhcmFtZXRlcnMobV9wYXJhbWV0ZXJzLCBvdGhlci0+bV9wYXJhbWV0
ZXJzKTsKICAgICB9CiAgICAgCiAgICAgQ3VzdG9tRmlsdGVyT3BlcmF0aW9uKFBhc3NSZWZQdHI8
Q3VzdG9tRmlsdGVyUHJvZ3JhbT4sIGNvbnN0IEN1c3RvbUZpbHRlclBhcmFtZXRlckxpc3QmLCB1
bnNpZ25lZCBtZXNoUm93cywgdW5zaWduZWQgbWVzaENvbHVtbnMsIE1lc2hCb3hUeXBlLCBNZXNo
VHlwZSk7Ci0gICAgCi0jaWZuZGVmIE5ERUJVRwotICAgIGJvb2wgaGFzU29ydGVkUGFyYW1ldGVy
TGlzdCgpOwotI2VuZGlmCiAKICAgICBSZWZQdHI8Q3VzdG9tRmlsdGVyUHJvZ3JhbT4gbV9wcm9n
cmFtOwogICAgIEN1c3RvbUZpbHRlclBhcmFtZXRlckxpc3QgbV9wYXJhbWV0ZXJzOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9DdXN0b21GaWx0
ZXJQYXJhbWV0ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMv
Q3VzdG9tRmlsdGVyUGFyYW1ldGVyLmgKaW5kZXggZTljMDYyOS4uYmYzOTFkNyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9DdXN0b21GaWx0ZXJQ
YXJhbWV0ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJz
L0N1c3RvbUZpbHRlclBhcmFtZXRlci5oCkBAIC01Miw3ICs1MiwxMSBAQCBwdWJsaWM6CiAgICAg
CiAgICAgUGFyYW1ldGVyVHlwZSBwYXJhbWV0ZXJUeXBlKCkgY29uc3QgeyByZXR1cm4gbV90eXBl
OyB9CiAgICAgY29uc3QgU3RyaW5nJiBuYW1lKCkgY29uc3QgeyByZXR1cm4gbV9uYW1lOyB9Ci0K
KyAgICAKKyAgICBib29sIGlzU2FtZVR5cGUoY29uc3QgQ3VzdG9tRmlsdGVyUGFyYW1ldGVyJiBv
dGhlcikgY29uc3QgeyByZXR1cm4gcGFyYW1ldGVyVHlwZSgpID09IG90aGVyLnBhcmFtZXRlclR5
cGUoKTsgfQorICAgIAorICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxDdXN0b21GaWx0ZXJQYXJhbWV0
ZXI+IGJsZW5kKGNvbnN0IEN1c3RvbUZpbHRlclBhcmFtZXRlciosIGRvdWJsZSBwcm9ncmVzcykg
PSAwOworICAgIHZpcnR1YWwgYm9vbCBvcGVyYXRvcj09KGNvbnN0IEN1c3RvbUZpbHRlclBhcmFt
ZXRlciYpIGNvbnN0ID0gMDsKIHByb3RlY3RlZDoKICAgICBDdXN0b21GaWx0ZXJQYXJhbWV0ZXIo
UGFyYW1ldGVyVHlwZSB0eXBlLCBjb25zdCBTdHJpbmcmIG5hbWUpCiAgICAgICAgIDogbV9uYW1l
KG5hbWUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0
ZXJzL0N1c3RvbUZpbHRlclByb2dyYW0uaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2ZpbHRlcnMvQ3VzdG9tRmlsdGVyUHJvZ3JhbS5oCmluZGV4IDI0NDFkMjMuLmIyYWY0NWMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvQ3Vz
dG9tRmlsdGVyUHJvZ3JhbS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2ZpbHRlcnMvQ3VzdG9tRmlsdGVyUHJvZ3JhbS5oCkBAIC01Nyw2ICs1Nyw5IEBAIHB1YmxpYzoK
ICAgICBQYXNzUmVmUHRyPEN1c3RvbUZpbHRlclNoYWRlcj4gY3JlYXRlU2hhZGVyV2l0aENvbnRl
eHQoR3JhcGhpY3NDb250ZXh0M0QqKTsKICNlbmRpZgogCisgICAgLy8gU3R5bGVDdXN0b21GaWx0
ZXJQcm9ncmFtIGhhcyB0aGUgb25seSBpbXBsZW1lbnRhdGlvbiBmb3IgdGhlIGZvbGxvd2luZyBt
ZXRob2QuIFRoYXQgbWVhbnMsIGl0IGNhc3RzIHRvIFN0eWxlQ3VzdG9tRmlsdGVyUHJvZ3JhbQor
ICAgIC8vIHdpdGhvdXRoIGNoZWNraW5nIHRoZSB0eXBlLiBJZiB5b3UgYWRkIGFub3RoZXIgaW1w
bGVtZW50YXRpb24sIGFsc28gYWRkIGEgbWVjaGFuaXNtIHRvIGNoZWNrIGZvciB0aGUgY29ycmVj
dCB0eXBlLgorICAgIHZpcnR1YWwgYm9vbCBvcGVyYXRvcj09KGNvbnN0IEN1c3RvbUZpbHRlclBy
b2dyYW0mKSBjb25zdCA9IDA7CiBwcm90ZWN0ZWQ6CiAgICAgLy8gU3R5bGVDdXN0b21GaWx0ZXJQ
cm9ncmFtIGNhbiBub3RpZnkgdGhlIGNsaWVudHMgdGhhdCB0aGUgY2FjaGVkIHJlc291cmNlcyBh
cmUKICAgICAvLyBsb2FkZWQgYW5kIGl0IGlzIHJlYWR5IHRvIGNyZWF0ZSBDdXN0b21GaWx0ZXJT
aGFkZXIgb2JqZWN0cy4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHls
ZS9TdHlsZUN1c3RvbUZpbHRlclByb2dyYW0uaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9z
dHlsZS9TdHlsZUN1c3RvbUZpbHRlclByb2dyYW0uaAppbmRleCBiNmVlYzc0Li40MGNkNTM4IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU3R5bGVDdXN0b21GaWx0
ZXJQcm9ncmFtLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1N0eWxlQ3Vz
dG9tRmlsdGVyUHJvZ3JhbS5oCkBAIC0xMTMsNiArMTEzLDE3IEBAIHB1YmxpYzoKICAgICAgICAg
aWYgKGlzTG9hZGVkKCkpCiAgICAgICAgICAgICBub3RpZnlDbGllbnRzKCk7CiAgICAgfQorICAg
IAorICAgIENhY2hlZFNoYWRlciogY2FjaGVkVmVydGV4U2hhZGVyKCkgY29uc3QgeyByZXR1cm4g
bV92ZXJ0ZXhTaGFkZXIgPyBtX3ZlcnRleFNoYWRlci0+Y2FjaGVkU2hhZGVyKCkgOiAwOyB9Cisg
ICAgQ2FjaGVkU2hhZGVyKiBjYWNoZWRGcmFnbWVudFNoYWRlcigpIGNvbnN0IHsgcmV0dXJuIG1f
ZnJhZ21lbnRTaGFkZXIgPyBtX2ZyYWdtZW50U2hhZGVyLT5jYWNoZWRTaGFkZXIoKSA6IDA7IH0K
KyAgICAKKyAgICB2aXJ0dWFsIGJvb2wgb3BlcmF0b3I9PShjb25zdCBDdXN0b21GaWx0ZXJQcm9n
cmFtJiBvKSBjb25zdCAKKyAgICB7CisgICAgICAgIC8vIFRoZSBmb2xsb3dpbmcgY2FzdCBpcyB1
Z2x5LCBidXQgU3R5bGVDdXN0b21GaWx0ZXJQcm9ncmFtIGlzIHRoZSBzaW5nbGUgaW1wbGVtZW50
YXRpb24gb2YgQ3VzdG9tRmlsdGVyUHJvZ3JhbS4KKyAgICAgICAgY29uc3QgU3R5bGVDdXN0b21G
aWx0ZXJQcm9ncmFtKiBvdGhlciA9IHN0YXRpY19jYXN0PGNvbnN0IFN0eWxlQ3VzdG9tRmlsdGVy
UHJvZ3JhbSo+KCZvKTsKKyAgICAgICAgcmV0dXJuIGNhY2hlZFZlcnRleFNoYWRlcigpID09IG90
aGVyLT5jYWNoZWRWZXJ0ZXhTaGFkZXIoKQorICAgICAgICAgICAgJiYgY2FjaGVkRnJhZ21lbnRT
aGFkZXIoKSA9PSBvdGhlci0+Y2FjaGVkRnJhZ21lbnRTaGFkZXIoKTsKKyAgICB9CiAKIHByaXZh
dGU6CiAgICAgU3R5bGVDdXN0b21GaWx0ZXJQcm9ncmFtKFBhc3NSZWZQdHI8U3R5bGVTaGFkZXI+
IHZlcnRleFNoYWRlciwgUGFzc1JlZlB0cjxTdHlsZVNoYWRlcj4gZnJhZ21lbnRTaGFkZXIpCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>139094</attachid>
            <date>2012-04-26 16:25:05 -0700</date>
            <delta_ts>2012-04-27 12:44:00 -0700</delta_ts>
            <desc>Patch V3</desc>
            <filename>bug71406_2.patch</filename>
            <type>text/plain</type>
            <size>31398</size>
            <attacher name="Alexandru Chiculita">achicu</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCA3YzE5OGMwLi4wNzU2OTU2IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTcgQEAKKzIwMTItMDQt
MjYgIEFsZXhhbmRydSBDaGljdWxpdGEgIDxhY2hpY3VAYWRvYmUuY29tPgorCisgICAgICAgIFtD
U1MgU2hhZGVyc10gSW1wbGVtZW50IENTUyBBbmltYXRpb25zIGFuZCBUcmFuc2l0aW9ucyBmb3Ig
Q1NTIFNoYWRlcnMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTcxNDA2CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgKiBhbmltYXRpb25zL3Jlc291cmNlcy9hbmltYXRpb24tdGVzdC1oZWxwZXJzLmpzOiBBZGRl
ZCBhIGNoZWNrIGZvciB0aGUgImN1c3RvbSIgZnVuY3Rpb24gYW5kIHVzZWQgdGhlIHBhcnNlciBp
biBjdXN0b20tZmlsdGVyLXBhcnNlci5qcyBpbnN0ZWFkLgorICAgICAgICAoZ2V0RmlsdGVyUGFy
YW1ldGVycyk6CisgICAgICAgIChmaWx0ZXJQYXJhbWV0ZXJzTWF0Y2gpOgorICAgICAgICAqIGNz
czMvZmlsdGVycy9jdXN0b20vY3VzdG9tLWZpbHRlci1hbmltYXRpb24tZXhwZWN0ZWQudHh0OiBB
ZGRlZC4KKyAgICAgICAgKiBjc3MzL2ZpbHRlcnMvY3VzdG9tL2N1c3RvbS1maWx0ZXItYW5pbWF0
aW9uLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGNzczMvZmlsdGVycy9yZXNvdXJjZXMvY3VzdG9t
LWZpbHRlci1wYXJzZXIuanM6IEFkZGVkIGEgc2ltcGxlIHBhcnNlciBmb3IgdGhlICJjdXN0b20i
IGZ1bmN0aW9uLCBzbyB0aGF0IG11bHRpcGxlIHR5cGVzIGNhbiBiZSBjaGVja2VkIGNvcnJlY3Rs
eS4KKwogMjAxMi0wNC0yNSAgQWxwaGEgTGFtICA8aGNsYW1AY2hyb21pdW0ub3JnPgogCiAgICAg
ICAgIFVucmV2aWV3ZWQgdGVzdCBleHBlY3RhdGlvbnMgdXBkYXRlLgpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvYW5pbWF0aW9ucy9yZXNvdXJjZXMvYW5pbWF0aW9uLXRlc3QtaGVscGVycy5qcyBi
L0xheW91dFRlc3RzL2FuaW1hdGlvbnMvcmVzb3VyY2VzL2FuaW1hdGlvbi10ZXN0LWhlbHBlcnMu
anMKaW5kZXggODRhMjZiZS4uZTg5NzhlMSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvYW5pbWF0
aW9ucy9yZXNvdXJjZXMvYW5pbWF0aW9uLXRlc3QtaGVscGVycy5qcworKysgYi9MYXlvdXRUZXN0
cy9hbmltYXRpb25zL3Jlc291cmNlcy9hbmltYXRpb24tdGVzdC1oZWxwZXJzLmpzCkBAIC02Miw3
ICs2MiwxNSBAQCBmdW5jdGlvbiBwYXJzZUNyb3NzRmFkZShzKQogLy8gUmV0dXJuIGFuIGFycmF5
IG9mIG51bWVyaWMgZmlsdGVyIHBhcmFtcyBpbiAwLTEuCiBmdW5jdGlvbiBnZXRGaWx0ZXJQYXJh
bWV0ZXJzKHMpCiB7Ci0gICAgdmFyIGZpbHRlclBhcmFtcyA9IHMubWF0Y2goL1woKC4rKVwpLylb
MV07CisgICAgdmFyIGZpbHRlclJlc3VsdCA9IHMubWF0Y2goLyhcdyspXCgoLispXCkvKTsKKyAg
ICBpZiAoIWZpbHRlclJlc3VsdCkKKyAgICAgICAgdGhyb3cgbmV3IEVycm9yKCJUaGVyZSdzIG5v
IGZpbHRlciBpbiBcIiIgKyBzICsgIlwiIik7CisgICAgdmFyIGZpbHRlclBhcmFtcyA9IGZpbHRl
clJlc3VsdFsyXTsKKyAgICBpZiAoZmlsdGVyUmVzdWx0WzFdID09ICJjdXN0b20iKSB7CisgICAg
ICAgIGlmICghd2luZG93LmdldEN1c3RvbUZpbHRlclBhcmFtZXRlcnMpCisgICAgICAgICAgICB0
aHJvdyBuZXcgRXJyb3IoImdldEN1c3RvbUZpbHRlclBhcmFtZXRlcnMgbm90IGZvdW5kLiBEaWQg
eW91IGluY2x1ZGUgY3VzdG9tLWZpbHRlci1wYXJzZXIuanM/Iik7CisgICAgICAgIHJldHVybiBn
ZXRDdXN0b21GaWx0ZXJQYXJhbWV0ZXJzKGZpbHRlclBhcmFtcyk7CisgICAgfQogICAgIHZhciBw
YXJhbUxpc3QgPSBmaWx0ZXJQYXJhbXMuc3BsaXQoJyAnKTsgLy8gRklYTUU6IHRoZSBzcGVjIG1h
eSBhbGxvdyBjb21tYSBzZXBhcmF0aW9uIGF0IHNvbWUgcG9pbnQuCiAgICAgCiAgICAgLy8gTm9y
bWFsaXplIHBlcmNlbnRhZ2UgdmFsdWVzLgpAQCAtODAsOSArODgsMjkgQEAgZnVuY3Rpb24gZmls
dGVyUGFyYW1ldGVyc01hdGNoKHBhcmFtTGlzdDEsIHBhcmFtTGlzdDIsIHRvbGVyYW5jZSkKIHsK
ICAgICBpZiAocGFyYW1MaXN0MS5sZW5ndGggIT0gcGFyYW1MaXN0Mi5sZW5ndGgpCiAgICAgICAg
IHJldHVybiBmYWxzZTsKLQogICAgIGZvciAodmFyIGkgPSAwOyBpIDwgcGFyYW1MaXN0MS5sZW5n
dGg7ICsraSkgewotICAgICAgICB2YXIgbWF0Y2ggPSBpc0Nsb3NlRW5vdWdoKHBhcmFtTGlzdDFb
aV0sIHBhcmFtTGlzdDJbaV0sIHRvbGVyYW5jZSk7CisgICAgICAgIHZhciBwYXJhbTEgPSBwYXJh
bUxpc3QxW2ldLCAKKyAgICAgICAgICAgIHBhcmFtMiA9IHBhcmFtTGlzdDJbaV07CisgICAgICAg
IGlmICh0eXBlb2YgcGFyYW0xID09ICJvYmplY3QiKSB7CisgICAgICAgICAgICAvLyBUaGlzIGlz
IGEgY3VzdG9tIGZpbHRlciBwYXJhbWV0ZXIuCisgICAgICAgICAgICBpZiAocGFyYW0xLnR5cGUg
IT0gInBhcmFtZXRlciIpIHsKKyAgICAgICAgICAgICAgICAvLyBDaGVja2luZyBmb3Igc2hhZGVy
IHVyaXMgYW5kIG90aGVyIGtleXdvcmRzLiBUaGV5IG5lZWQgdG8gYmUgZXhhY3RseSB0aGUgc2Ft
ZS4KKyAgICAgICAgICAgICAgICBpZiAocGFyYW0xLnR5cGUgIT0gcGFyYW0yLnR5cGUKKyAgICAg
ICAgICAgICAgICAgICAgfHwgcGFyYW0xLnZhbHVlICE9IHBhcmFtMi52YWx1ZSkKKyAgICAgICAg
ICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICAgICAgICAgIGNvbnRpbnVlOworICAg
ICAgICAgICAgfQorICAgICAgICAgICAgaWYgKHBhcmFtMS5uYW1lICE9IHBhcmFtMi5uYW1lCisg
ICAgICAgICAgICAgICAgfHwgcGFyYW0xLnZhbHVlLmxlbmd0aCAhPSBwYXJhbTIudmFsdWUubGVu
Z3RoKQorICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgICAgIC8vIEZvciBu
b3cgd2Ugb25seSBzdXBwb3J0IGZsb2F0cy4KKyAgICAgICAgICAgIGZvciAodmFyIGogPSAwOyBq
IDwgcGFyYW0xLnZhbHVlLmxlbmd0aDsgKytqKSB7CisgICAgICAgICAgICAgICAgaWYgKCFpc0Ns
b3NlRW5vdWdoKHBhcmFtMS52YWx1ZVtqXS52YWx1ZSwgcGFyYW0yLnZhbHVlW2pdLnZhbHVlLCB0
b2xlcmFuY2UpKQorICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgICAg
ICB9CisgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgfQorICAgICAgICB2YXIgbWF0Y2gg
PSBpc0Nsb3NlRW5vdWdoKHBhcmFtMSwgcGFyYW0yLCB0b2xlcmFuY2UpOwogICAgICAgICBpZiAo
IW1hdGNoKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2NzczMvZmlsdGVycy9jdXN0b20vY3VzdG9tLWZpbHRlci1hbmltYXRpb24tZXhw
ZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvY3NzMy9maWx0ZXJzL2N1c3RvbS9jdXN0b20tZmlsdGVy
LWFuaW1hdGlvbi1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MC4uNmZkZTA3MQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2NzczMvZmlsdGVycy9j
dXN0b20vY3VzdG9tLWZpbHRlci1hbmltYXRpb24tZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMTEg
QEAKKyAgICAgICAKK1BBU1MgLSAid2Via2l0RmlsdGVyIiBwcm9wZXJ0eSBmb3IgImN1c3RvbS1m
cm9tLW5vbmUtYm94IiBlbGVtZW50IGF0IDFzIHNhdyBzb21ldGhpbmcgY2xvc2UgdG86IGN1c3Rv
bSh1cmwodmVydGV4LXJvdGF0ZS52cykgbm9uZSwgMSAxIGZpbHRlci1ib3gsIHJvdGF0ZUJ5IDMw
LCBvZmZzZXQgMCkKK1BBU1MgLSAid2Via2l0RmlsdGVyIiBwcm9wZXJ0eSBmb3IgImN1c3RvbS10
by1ub25lLWJveCIgZWxlbWVudCBhdCAxcyBzYXcgc29tZXRoaW5nIGNsb3NlIHRvOiBjdXN0b20o
dXJsKHZlcnRleC1yb3RhdGUudnMpIG5vbmUsIDEgMSBmaWx0ZXItYm94LCByb3RhdGVCeSAzMCwg
b2Zmc2V0IDApCitQQVNTIC0gIndlYmtpdEZpbHRlciIgcHJvcGVydHkgZm9yICJjdXN0b20tZnJv
bS1uby1wYXJhbXMtYm94IiBlbGVtZW50IGF0IDFzIHNhdyBzb21ldGhpbmcgY2xvc2UgdG86IGN1
c3RvbSh1cmwodmVydGV4LXJvdGF0ZS52cykgbm9uZSwgMSAxIGZpbHRlci1ib3gsIHJvdGF0ZUJ5
IDMwLCBvZmZzZXQgMCkKK1BBU1MgLSAid2Via2l0RmlsdGVyIiBwcm9wZXJ0eSBmb3IgImN1c3Rv
bS10by1uby1wYXJhbXMtYm94IiBlbGVtZW50IGF0IDFzIHNhdyBzb21ldGhpbmcgY2xvc2UgdG86
IGN1c3RvbSh1cmwodmVydGV4LXJvdGF0ZS52cykgbm9uZSwgMSAxIGZpbHRlci1ib3gsIHJvdGF0
ZUJ5IDMwLCBvZmZzZXQgMCkKK1BBU1MgLSAid2Via2l0RmlsdGVyIiBwcm9wZXJ0eSBmb3IgImN1
c3RvbS1taXgtYXR0cmlidXRlcy1ib3giIGVsZW1lbnQgYXQgMXMgc2F3IHNvbWV0aGluZyBjbG9z
ZSB0bzogY3VzdG9tKHVybCh2ZXJ0ZXgtcm90YXRlLnZzKSBub25lLCA1IDUgYm9yZGVyLWJveCwg
cm90YXRlQnkgMzAsIG9mZnNldCAwKQorUEFTUyAtICJ3ZWJraXRGaWx0ZXIiIHByb3BlcnR5IGZv
ciAiY3VzdG9tLWZyb20tZGlmZi1wYXJhbXMtYm94IiBlbGVtZW50IGF0IDFzIHNhdyBzb21ldGhp
bmcgY2xvc2UgdG86IGN1c3RvbSh1cmwodmVydGV4LXJvdGF0ZS52cykgbm9uZSwgMSAxIGZpbHRl
ci1ib3gsIHBhcmFtIDEwLCByb3RhdGVCeSA2MCwgb2Zmc2V0IDEwLCBhbm90aGVyX3BhcmFtIDUp
CitQQVNTIC0gIndlYmtpdEZpbHRlciIgcHJvcGVydHkgZm9yICJjdXN0b20tdG8tZGlmZi1wYXJh
bXMtYm94IiBlbGVtZW50IGF0IDFzIHNhdyBzb21ldGhpbmcgY2xvc2UgdG86IGN1c3RvbSh1cmwo
dmVydGV4LXJvdGF0ZS52cykgbm9uZSwgMSAxIGZpbHRlci1ib3gsIHBhcmFtIDEwLCByb3RhdGVC
eSA2MCwgb2Zmc2V0IDEwLCBhbm90aGVyX3BhcmFtIDUpCitQQVNTIC0gIndlYmtpdEZpbHRlciIg
cHJvcGVydHkgZm9yICJjdXN0b20tbWl4LXBhcmFtcy1ib3giIGVsZW1lbnQgYXQgMXMgc2F3IHNv
bWV0aGluZyBjbG9zZSB0bzogY3VzdG9tKHVybCh2ZXJ0ZXgtcm90YXRlLnZzKSBub25lLCAxIDEg
ZmlsdGVyLWJveCwgcGFyYW0gMTAsIGFub3RoZXJfcGFyYW0gNSwgZmlyc3RfcGFyYW0gNiwgcm90
YXRlQnkgNjAsIG9mZnNldCAxMCwgbGFzdF9wYXJhbSA0KQorUEFTUyAtICJ3ZWJraXRGaWx0ZXIi
IHByb3BlcnR5IGZvciAiY3VzdG9tLW1peC1udW1iZXJzLWJveCIgZWxlbWVudCBhdCAxcyBzYXcg
c29tZXRoaW5nIGNsb3NlIHRvOiBjdXN0b20odXJsKHZlcnRleC1yb3RhdGUudnMpIG5vbmUsIDEg
MSBmaWx0ZXItYm94LCByb3RhdGVCeSA0NSwgYSA1LjUsIGIgMTEgMTYuNSwgYyAyMiAyNy41IDMz
LCBkIDM4LjUgNDQgNDkuNSkKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvY3NzMy9maWx0ZXJz
L2N1c3RvbS9jdXN0b20tZmlsdGVyLWFuaW1hdGlvbi5odG1sIGIvTGF5b3V0VGVzdHMvY3NzMy9m
aWx0ZXJzL2N1c3RvbS9jdXN0b20tZmlsdGVyLWFuaW1hdGlvbi5odG1sCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAuLjYyZTMyMzgKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRU
ZXN0cy9jc3MzL2ZpbHRlcnMvY3VzdG9tL2N1c3RvbS1maWx0ZXItYW5pbWF0aW9uLmh0bWwKQEAg
LTAsMCArMSwxMzggQEAKKzwhRE9DVFlQRSBodG1sPgorCis8aHRtbD4KKzxoZWFkPgorICAgIDxz
Y3JpcHQ+CisgICAgICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpIHsKKyAgICAg
ICAgICAgIHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlci5vdmVycmlkZVByZWZlcmVuY2UoIldl
YktpdENTU0N1c3RvbUZpbHRlckVuYWJsZWQiLCAiMSIpOworICAgICAgICAgICAgd2luZG93Lmxh
eW91dFRlc3RDb250cm9sbGVyLm92ZXJyaWRlUHJlZmVyZW5jZSgiV2ViS2l0V2ViR0xFbmFibGVk
IiwgIjEiKTsKKyAgICAgICAgfQorICAgIDwvc2NyaXB0PgorICAgIDxzdHlsZT4KKyAgICAgICAg
LmJveCB7CisgICAgICAgICAgICBoZWlnaHQ6IDEwMHB4OworICAgICAgICAgICAgd2lkdGg6IDEw
MHB4OworICAgICAgICAgICAgbWFyZ2luOiAxMHB4OworICAgICAgICAgICAgYmFja2dyb3VuZC1j
b2xvcjogYmx1ZTsKKyAgICAgICAgICAgIGRpc3BsYXk6IGlubGluZS1ibG9jazsKKyAgICAgICAg
fQorICAgIAorICAgICAgICAjY3VzdG9tLWZyb20tbm9uZS1ib3ggeworICAgICAgICAgICAgLXdl
YmtpdC1hbmltYXRpb246IGN1c3RvbS1mcm9tLW5vbmUtYW5pbSAycyBsaW5lYXIKKyAgICAgICAg
fQorICAgIAorICAgICAgICAjY3VzdG9tLXRvLW5vbmUtYm94IHsKKyAgICAgICAgICAgIC13ZWJr
aXQtYW5pbWF0aW9uOiBjdXN0b20tdG8tbm9uZS1hbmltIDJzIGxpbmVhcgorICAgICAgICB9Cisg
ICAgCisgICAgICAgICNjdXN0b20tZnJvbS1uby1wYXJhbXMtYm94IHsKKyAgICAgICAgICAgIC13
ZWJraXQtYW5pbWF0aW9uOiBjdXN0b20tZnJvbS1uby1wYXJhbXMtYW5pbSAycyBsaW5lYXIKKyAg
ICAgICAgfQorICAgIAorICAgICAgICAjY3VzdG9tLXRvLW5vLXBhcmFtcy1ib3ggeworICAgICAg
ICAgICAgLXdlYmtpdC1hbmltYXRpb246IGN1c3RvbS10by1uby1wYXJhbXMtYW5pbSAycyBsaW5l
YXIKKyAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgI2N1c3RvbS1taXgtYXR0cmlidXRlcy1i
b3ggeworICAgICAgICAgICAgLXdlYmtpdC1hbmltYXRpb246IGN1c3RvbS1taXgtYXR0cmlidXRl
cy1hbmltIDJzIGxpbmVhcgorICAgICAgICB9CisgICAgCisgICAgICAgICNjdXN0b20tZnJvbS1k
aWZmLXBhcmFtcy1ib3ggeworICAgICAgICAgICAgLXdlYmtpdC1hbmltYXRpb246IGN1c3RvbS1m
cm9tLWRpZmYtcGFyYW1zLWFuaW0gMnMgbGluZWFyCisgICAgICAgIH0KKyAgICAKKyAgICAgICAg
I2N1c3RvbS10by1kaWZmLXBhcmFtcy1ib3ggeworICAgICAgICAgICAgLXdlYmtpdC1hbmltYXRp
b246IGN1c3RvbS10by1kaWZmLXBhcmFtcy1hbmltIDJzIGxpbmVhcgorICAgICAgICB9CisgICAg
CisgICAgICAgICNjdXN0b20tbWl4LXBhcmFtcy1ib3ggeworICAgICAgICAgICAgLXdlYmtpdC1h
bmltYXRpb246IGN1c3RvbS1taXgtcGFyYW1zLWFuaW0gMnMgbGluZWFyCisgICAgICAgIH0KKyAg
ICAgICAgCisgICAgICAgICNjdXN0b20tbWl4LW51bWJlcnMtYm94IHsKKyAgICAgICAgICAgIC13
ZWJraXQtYW5pbWF0aW9uOiBjdXN0b20tbWl4LW51bWJlcnMtYW5pbSAycyBsaW5lYXIKKyAgICAg
ICAgfQorICAgIAorICAgICAgICBALXdlYmtpdC1rZXlmcmFtZXMgY3VzdG9tLWZyb20tbm9uZS1h
bmltIHsKKyAgICAgICAgICAgIGZyb20geyAtd2Via2l0LWZpbHRlcjogbm9uZTsgfQorICAgICAg
ICAgICAgdG8gICB7IC13ZWJraXQtZmlsdGVyOiBjdXN0b20odXJsKC4uL3Jlc291cmNlcy92ZXJ0
ZXgtcm90YXRlLnZzKSwgcm90YXRlQnkgMzAsIG9mZnNldCAwKTsgfQorICAgICAgICB9CisKKyAg
ICAgICAgQC13ZWJraXQta2V5ZnJhbWVzIGN1c3RvbS10by1ub25lLWFuaW0geworICAgICAgICAg
ICAgZnJvbSB7IC13ZWJraXQtZmlsdGVyOiBjdXN0b20odXJsKC4uL3Jlc291cmNlcy92ZXJ0ZXgt
cm90YXRlLnZzKSwgcm90YXRlQnkgMzAsIG9mZnNldCAwKTsgfQorICAgICAgICAgICAgdG8gICB7
IC13ZWJraXQtZmlsdGVyOiBub25lOyB9CisgICAgICAgIH0KKyAgICAKKyAgICAgICAgQC13ZWJr
aXQta2V5ZnJhbWVzIGN1c3RvbS1mcm9tLW5vLXBhcmFtcy1hbmltIHsKKyAgICAgICAgICAgIGZy
b20geyAtd2Via2l0LWZpbHRlcjogY3VzdG9tKHVybCguLi9yZXNvdXJjZXMvdmVydGV4LXJvdGF0
ZS52cykpOyB9CisgICAgICAgICAgICB0byAgIHsgLXdlYmtpdC1maWx0ZXI6IGN1c3RvbSh1cmwo
Li4vcmVzb3VyY2VzL3ZlcnRleC1yb3RhdGUudnMpLCByb3RhdGVCeSAzMCwgb2Zmc2V0IDApOyB9
CisgICAgICAgIH0KKworICAgICAgICBALXdlYmtpdC1rZXlmcmFtZXMgY3VzdG9tLXRvLW5vLXBh
cmFtcy1hbmltIHsKKyAgICAgICAgICAgIGZyb20geyAtd2Via2l0LWZpbHRlcjogY3VzdG9tKHVy
bCguLi9yZXNvdXJjZXMvdmVydGV4LXJvdGF0ZS52cyksIHJvdGF0ZUJ5IDMwLCBvZmZzZXQgMCk7
IH0KKyAgICAgICAgICAgIHRvICAgeyAtd2Via2l0LWZpbHRlcjogY3VzdG9tKHVybCguLi9yZXNv
dXJjZXMvdmVydGV4LXJvdGF0ZS52cykpOyB9CisgICAgICAgIH0KKyAgICAgICAgCisgICAgICAg
IEAtd2Via2l0LWtleWZyYW1lcyBjdXN0b20tbWl4LWF0dHJpYnV0ZXMtYW5pbSB7CisgICAgICAg
ICAgICBmcm9tIHsgLXdlYmtpdC1maWx0ZXI6IGN1c3RvbSh1cmwoLi4vcmVzb3VyY2VzL3ZlcnRl
eC1vZmZzZXQudnMpLCByb3RhdGVCeV9hIDMwLCBvZmZzZXRfYSAwKTsgfQorICAgICAgICAgICAg
dG8gICB7IC13ZWJraXQtZmlsdGVyOiBjdXN0b20odXJsKC4uL3Jlc291cmNlcy92ZXJ0ZXgtcm90
YXRlLnZzKSwgNSA1IGJvcmRlci1ib3gsIHJvdGF0ZUJ5IDMwLCBvZmZzZXQgMCk7IH0KKyAgICAg
ICAgfQorICAgIAorICAgICAgICBALXdlYmtpdC1rZXlmcmFtZXMgY3VzdG9tLWZyb20tZGlmZi1w
YXJhbXMtYW5pbSB7CisgICAgICAgICAgICBmcm9tIHsgLXdlYmtpdC1maWx0ZXI6IGN1c3RvbSh1
cmwoLi4vcmVzb3VyY2VzL3ZlcnRleC1yb3RhdGUudnMpLCBwYXJhbSAxMCwgcm90YXRlQnkgMzAs
IG9mZnNldCAwLCBhbm90aGVyX3BhcmFtIDUpOyB9CisgICAgICAgICAgICB0byAgIHsgLXdlYmtp
dC1maWx0ZXI6IGN1c3RvbSh1cmwoLi4vcmVzb3VyY2VzL3ZlcnRleC1yb3RhdGUudnMpLCByb3Rh
dGVCeSA5MCwgb2Zmc2V0IDIwKTsgfQorICAgICAgICB9CisKKyAgICAgICAgQC13ZWJraXQta2V5
ZnJhbWVzIGN1c3RvbS10by1kaWZmLXBhcmFtcy1hbmltIHsKKyAgICAgICAgICAgIGZyb20geyAt
d2Via2l0LWZpbHRlcjogY3VzdG9tKHVybCguLi9yZXNvdXJjZXMvdmVydGV4LXJvdGF0ZS52cyks
IHJvdGF0ZUJ5IDkwLCBvZmZzZXQgMjApOyB9CisgICAgICAgICAgICB0byAgIHsgLXdlYmtpdC1m
aWx0ZXI6IGN1c3RvbSh1cmwoLi4vcmVzb3VyY2VzL3ZlcnRleC1yb3RhdGUudnMpLCBwYXJhbSAx
MCwgcm90YXRlQnkgMzAsIG9mZnNldCAwLCBhbm90aGVyX3BhcmFtIDUpOyB9CisgICAgICAgIH0K
KyAgICAKKyAgICAgICAgQC13ZWJraXQta2V5ZnJhbWVzIGN1c3RvbS1taXgtcGFyYW1zLWFuaW0g
eworICAgICAgICAgICAgZnJvbSB7IC13ZWJraXQtZmlsdGVyOiBjdXN0b20odXJsKC4uL3Jlc291
cmNlcy92ZXJ0ZXgtcm90YXRlLnZzKSwgZmlyc3RfcGFyYW0gNiwgcm90YXRlQnkgOTAsIG9mZnNl
dCAyMCwgbGFzdF9wYXJhbSA0KTsgfQorICAgICAgICAgICAgdG8gICB7IC13ZWJraXQtZmlsdGVy
OiBjdXN0b20odXJsKC4uL3Jlc291cmNlcy92ZXJ0ZXgtcm90YXRlLnZzKSwgcGFyYW0gMTAsIHJv
dGF0ZUJ5IDMwLCBvZmZzZXQgMCwgYW5vdGhlcl9wYXJhbSA1KTsgfQorICAgICAgICB9CisgICAg
ICAgIAorICAgICAgICBALXdlYmtpdC1rZXlmcmFtZXMgY3VzdG9tLW1peC1udW1iZXJzLWFuaW0g
eworICAgICAgICAgICAgZnJvbSB7IC13ZWJraXQtZmlsdGVyOiBjdXN0b20odXJsKC4uL3Jlc291
cmNlcy92ZXJ0ZXgtcm90YXRlLnZzKSwgcm90YXRlQnkgMCwgYSAxLCBiIDIgMywgYyA0IDUgNiwg
ZCA3IDggOSk7IH0KKyAgICAgICAgICAgIHRvICAgeyAtd2Via2l0LWZpbHRlcjogY3VzdG9tKHVy
bCguLi9yZXNvdXJjZXMvdmVydGV4LXJvdGF0ZS52cyksIHJvdGF0ZUJ5IDkwLCBhIDEwLCBiIDIw
IDMwLCBjIDQwIDUwIDYwLCBkIDcwIDgwIDkwKTsgfQorICAgICAgICB9CisgICAgPC9zdHlsZT4K
KyAgICA8c2NyaXB0IHNyYz0iLi4vcmVzb3VyY2VzL2N1c3RvbS1maWx0ZXItcGFyc2VyLmpzIj48
L3NjcmlwdD4KKyAgICA8c2NyaXB0IHNyYz0iLi4vLi4vLi4vYW5pbWF0aW9ucy9yZXNvdXJjZXMv
YW5pbWF0aW9uLXRlc3QtaGVscGVycy5qcyI+PC9zY3JpcHQ+CisgICAgPHNjcmlwdCB0eXBlPSJ0
ZXh0L2phdmFzY3JpcHQiPgorICAgICAgICBjb25zdCBleHBlY3RlZFZhbHVlcyA9IFsKKyAgICAg
ICAgICAgIC8vIFthbmltYXRpb24tbmFtZSwgdGltZSwgZWxlbWVudC1pZCwgcHJvcGVydHksIGV4
cGVjdGVkLXZhbHVlLCB0b2xlcmFuY2VdCisgICAgICAgICAgICBbImN1c3RvbS1mcm9tLW5vbmUt
YW5pbSIsICAxLCAiY3VzdG9tLWZyb20tbm9uZS1ib3giLCAid2Via2l0RmlsdGVyIiwgJ2N1c3Rv
bSh1cmwodmVydGV4LXJvdGF0ZS52cykgbm9uZSwgMSAxIGZpbHRlci1ib3gsIHJvdGF0ZUJ5IDMw
LCBvZmZzZXQgMCknLCAwXSwKKyAgICAgICAgICAgIFsiY3VzdG9tLXRvLW5vbmUtYW5pbSIsICAx
LCAiY3VzdG9tLXRvLW5vbmUtYm94IiwgIndlYmtpdEZpbHRlciIsICdjdXN0b20odXJsKHZlcnRl
eC1yb3RhdGUudnMpIG5vbmUsIDEgMSBmaWx0ZXItYm94LCByb3RhdGVCeSAzMCwgb2Zmc2V0IDAp
JywgMF0sCisKKyAgICAgICAgICAgIFsiY3VzdG9tLWZyb20tbm8tcGFyYW1zLWFuaW0iLCAgMSwg
ImN1c3RvbS1mcm9tLW5vLXBhcmFtcy1ib3giLCAid2Via2l0RmlsdGVyIiwgJ2N1c3RvbSh1cmwo
dmVydGV4LXJvdGF0ZS52cykgbm9uZSwgMSAxIGZpbHRlci1ib3gsIHJvdGF0ZUJ5IDMwLCBvZmZz
ZXQgMCknLCAwXSwKKyAgICAgICAgICAgIFsiY3VzdG9tLXRvLW5vLXBhcmFtcy1hbmltIiwgIDEs
ICJjdXN0b20tdG8tbm8tcGFyYW1zLWJveCIsICJ3ZWJraXRGaWx0ZXIiLCAnY3VzdG9tKHVybCh2
ZXJ0ZXgtcm90YXRlLnZzKSBub25lLCAxIDEgZmlsdGVyLWJveCwgcm90YXRlQnkgMzAsIG9mZnNl
dCAwKScsIDBdLAorICAgICAgICAgICAgCisgICAgICAgICAgICBbImN1c3RvbS1taXgtYXR0cmli
dXRlcy1hbmltIiwgIDEsICJjdXN0b20tbWl4LWF0dHJpYnV0ZXMtYm94IiwgIndlYmtpdEZpbHRl
ciIsICdjdXN0b20odXJsKHZlcnRleC1yb3RhdGUudnMpIG5vbmUsIDUgNSBib3JkZXItYm94LCBy
b3RhdGVCeSAzMCwgb2Zmc2V0IDApJywgMF0sCisKKyAgICAgICAgICAgIC8vIENTUyBTaGFkZXJz
IGRvIG5vdCBnZXQgZ29vZCBGUFMgaW4gZGVidWcgbW9kZSwgc28gdGhlIHRvbGVyYW5jZSBuZWVk
cyB0byBiZSBoaWdoZXIuCisgICAgICAgICAgICBbImN1c3RvbS1mcm9tLWRpZmYtcGFyYW1zLWFu
aW0iLCAgMSwgImN1c3RvbS1mcm9tLWRpZmYtcGFyYW1zLWJveCIsICJ3ZWJraXRGaWx0ZXIiLCAn
Y3VzdG9tKHVybCh2ZXJ0ZXgtcm90YXRlLnZzKSBub25lLCAxIDEgZmlsdGVyLWJveCwgcGFyYW0g
MTAsIHJvdGF0ZUJ5IDYwLCBvZmZzZXQgMTAsIGFub3RoZXJfcGFyYW0gNSknLCA1XSwKKyAgICAg
ICAgICAgIFsiY3VzdG9tLXRvLWRpZmYtcGFyYW1zLWFuaW0iLCAgMSwgImN1c3RvbS10by1kaWZm
LXBhcmFtcy1ib3giLCAid2Via2l0RmlsdGVyIiwgJ2N1c3RvbSh1cmwodmVydGV4LXJvdGF0ZS52
cykgbm9uZSwgMSAxIGZpbHRlci1ib3gsIHBhcmFtIDEwLCByb3RhdGVCeSA2MCwgb2Zmc2V0IDEw
LCBhbm90aGVyX3BhcmFtIDUpJywgNV0sCisKKyAgICAgICAgICAgIFsiY3VzdG9tLW1peC1wYXJh
bXMtYW5pbSIsICAxLCAiY3VzdG9tLW1peC1wYXJhbXMtYm94IiwgIndlYmtpdEZpbHRlciIsICdj
dXN0b20odXJsKHZlcnRleC1yb3RhdGUudnMpIG5vbmUsIDEgMSBmaWx0ZXItYm94LCBwYXJhbSAx
MCwgYW5vdGhlcl9wYXJhbSA1LCBmaXJzdF9wYXJhbSA2LCByb3RhdGVCeSA2MCwgb2Zmc2V0IDEw
LCBsYXN0X3BhcmFtIDQpJywgNV0sCisgICAgICAgICAgICBbImN1c3RvbS1taXgtbnVtYmVycy1h
bmltIiwgIDEsICJjdXN0b20tbWl4LW51bWJlcnMtYm94IiwgIndlYmtpdEZpbHRlciIsICdjdXN0
b20odXJsKHZlcnRleC1yb3RhdGUudnMpIG5vbmUsIDEgMSBmaWx0ZXItYm94LCByb3RhdGVCeSA0
NSwgYSA1LjUsIGIgMTEgMTYuNSwgYyAyMiAyNy41IDMzLCBkIDM4LjUgNDQgNDkuNSknLCAxMF0K
KyAgICAgICAgXTsKKyAgICAgICAgcnVuQW5pbWF0aW9uVGVzdChleHBlY3RlZFZhbHVlcyk7Cisg
ICAgPC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKyAgICA8ZGl2IGNsYXNzPSJib3giIGlkPSJj
dXN0b20tZnJvbS1ub25lLWJveCI+PC9kaXY+CisgICAgPGRpdiBjbGFzcz0iYm94IiBpZD0iY3Vz
dG9tLXRvLW5vbmUtYm94Ij48L2Rpdj4KKyAgICA8ZGl2IGNsYXNzPSJib3giIGlkPSJjdXN0b20t
ZnJvbS1uby1wYXJhbXMtYm94Ij48L2Rpdj4KKyAgICA8ZGl2IGNsYXNzPSJib3giIGlkPSJjdXN0
b20tdG8tbm8tcGFyYW1zLWJveCI+PC9kaXY+CisgICAgPGRpdiBjbGFzcz0iYm94IiBpZD0iY3Vz
dG9tLW1peC1hdHRyaWJ1dGVzLWJveCI+PC9kaXY+CisgICAgPGRpdiBjbGFzcz0iYm94IiBpZD0i
Y3VzdG9tLWZyb20tZGlmZi1wYXJhbXMtYm94Ij48L2Rpdj4KKyAgICA8ZGl2IGNsYXNzPSJib3gi
IGlkPSJjdXN0b20tdG8tZGlmZi1wYXJhbXMtYm94Ij48L2Rpdj4KKyAgICA8ZGl2IGNsYXNzPSJi
b3giIGlkPSJjdXN0b20tbWl4LXBhcmFtcy1ib3giPjwvZGl2PgorICAgIDxkaXYgY2xhc3M9ImJv
eCIgaWQ9ImN1c3RvbS1taXgtbnVtYmVycy1ib3giPjwvZGl2PgorCisgICAgPGRpdiBpZD0icmVz
dWx0Ij4KKyAgICA8L2Rpdj4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2NzczMvZmlsdGVycy9yZXNvdXJjZXMvY3VzdG9tLWZpbHRlci1wYXJzZXIuanMgYi9MYXlv
dXRUZXN0cy9jc3MzL2ZpbHRlcnMvcmVzb3VyY2VzL2N1c3RvbS1maWx0ZXItcGFyc2VyLmpzCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmI3NjdmMWMKLS0tIC9kZXYvbnVsbAor
KysgYi9MYXlvdXRUZXN0cy9jc3MzL2ZpbHRlcnMvcmVzb3VyY2VzL2N1c3RvbS1maWx0ZXItcGFy
c2VyLmpzCkBAIC0wLDAgKzEsMTc4IEBACisoZnVuY3Rpb24oKSB7CisKK2Z1bmN0aW9uIFRva2Vu
KHR5cGUpIAoreworICAgIHRoaXMudHlwZSA9IHR5cGU7Cit9CisKK1Rva2VuLnByb3RvdHlwZS5p
c0EgPSBmdW5jdGlvbigpCit7CisgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBhcmd1bWVudHMubGVu
Z3RoOyArK2kpIHsKKyAgICAgICAgdmFyIHR5cGUgPSBhcmd1bWVudHNbaV07CisgICAgICAgIGlm
ICgodHlwZW9mIHR5cGUgPT0gIm9iamVjdCIgJiYgdHlwZS5sZW5ndGggJiYgdGhpcy5pc0EuYXBw
bHkodGhpcywgdHlwZSkpCisgICAgICAgICAgICB8fCAodHlwZW9mIHR5cGUgPT0gImZ1bmN0aW9u
IiAmJiB0eXBlKHRoaXMpKQorICAgICAgICAgICAgfHwgdHlwZSA9PSB0aGlzLnR5cGUpCisgICAg
ICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9CisgICAgcmV0dXJuIGZhbHNlOworfQorCitmdW5j
dGlvbiBjcmVhdGVUb2tlbih0eXBlLCB2YWx1ZSkgeworICAgIHZhciB0b2tlbiA9IG5ldyBUb2tl
bih0eXBlKTsKKyAgICBpZiAodmFsdWUpIHsKKyAgICAgICAgZm9yICh2YXIgaSBpbiB2YWx1ZSkK
KyAgICAgICAgICAgIGlmICh2YWx1ZS5oYXNPd25Qcm9wZXJ0eShpKSkKKyAgICAgICAgICAgICAg
ICB0b2tlbltpXSA9IHZhbHVlW2ldOworICAgIH0KKyAgICByZXR1cm4gdG9rZW47Cit9CisKK2Z1
bmN0aW9uIHRva2VuaXplU3RyaW5nKHMpCit7CisgICAgdmFyIHRva2VuaXplciA9IG5ldyBSZWdF
eHAoWworICAgICAgICAidXJsXFwoXFxzKiguKj8pXFxzKlxcKSIsIC8vIHVybCgpIC0gMQorICAg
ICAgICAiKCg/OltcXCstXT8pXFxkKlxcLlxcZCspIiwgLy8gZmxvYXRzIC0gMgorICAgICAgICAi
KCg/OltcXCstXT8pXFxkKykiLCAvLyBpbnRlZ2VycyAtIDMKKyAgICAgICAgIihbXFx3LV1bXFx3
XFxkLV0qKSIsIC8vIGtleXdvcmRzIC0gNAorICAgICAgICAiKFssXFwuXFwoXFwpXSkiIC8vIHB1
bmN0dWF0aW9uIC0gNQorICAgIF0uam9pbigifCIpLCAiZyIpOworCisgICAgdmFyIG1hdGNoLCB0
b2tlbnMgPSBbXTsKKyAgICB3aGlsZSAobWF0Y2ggPSB0b2tlbml6ZXIuZXhlYyhzKSkgeworICAg
ICAgICBpZiAobWF0Y2hbMV0gIT09IHVuZGVmaW5lZCkKKyAgICAgICAgICAgIHRva2Vucy5wdXNo
KGNyZWF0ZVRva2VuKCJ1cmwiLCB7dmFsdWU6IG1hdGNoWzFdfSkpOworICAgICAgICBlbHNlIGlm
IChtYXRjaFsyXSAhPT0gdW5kZWZpbmVkKQorICAgICAgICAgICAgdG9rZW5zLnB1c2goY3JlYXRl
VG9rZW4oImZsb2F0Iiwge3ZhbHVlOiBwYXJzZUZsb2F0KG1hdGNoWzJdKX0pKTsKKyAgICAgICAg
ZWxzZSBpZiAobWF0Y2hbM10gIT09IHVuZGVmaW5lZCkKKyAgICAgICAgICAgIHRva2Vucy5wdXNo
KGNyZWF0ZVRva2VuKCJpbnRlZ2VyIiwge3ZhbHVlOiBwYXJzZUludChtYXRjaFszXSl9KSk7Cisg
ICAgICAgIGVsc2UgaWYgKG1hdGNoWzRdICE9PSB1bmRlZmluZWQpCisgICAgICAgICAgICB0b2tl
bnMucHVzaChjcmVhdGVUb2tlbigia2V5d29yZCIsIHt2YWx1ZTogbWF0Y2hbNF19KSk7CisgICAg
ICAgIGVsc2UgaWYgKG1hdGNoWzVdICE9PSB1bmRlZmluZWQpCisgICAgICAgICAgICB0b2tlbnMu
cHVzaChjcmVhdGVUb2tlbihtYXRjaFs1XSkpOworICAgIH0KKyAgICByZXR1cm4gdG9rZW5zOwor
fQorCitmdW5jdGlvbiBudW1iZXIodG9rZW4pCit7CisgICAgcmV0dXJuIHRva2VuLnR5cGUgPT0g
ImZsb2F0IiB8fCB0b2tlbi50eXBlID09ICJpbnRlZ2VyIjsKK30KKworZnVuY3Rpb24gVG9rZW5T
dHJlYW0odG9rZW5zKSB7CisgICAgdGhpcy50b2tlbnMgPSB0b2tlbnM7CisgICAgdGhpcy50b2tl
bnMucHVzaChuZXcgVG9rZW4oImVuZCIpKTsKKyAgICB0aGlzLnRva2VuSW5kZXggPSAwOworfQor
CitUb2tlblN0cmVhbS5wcm90b3R5cGUuY3VycmVudCA9IGZ1bmN0aW9uKCkgCit7IAorICAgIHJl
dHVybiB0aGlzLnRva2Vuc1t0aGlzLnRva2VuSW5kZXhdOyAKK30KKworVG9rZW5TdHJlYW0ucHJv
dG90eXBlLmFoZWFkID0gZnVuY3Rpb24oKSAKK3sKKyAgICByZXR1cm4gdGhpcy50b2tlbnNbdGhp
cy50b2tlbkluZGV4ICsgMV07IAorfQorCitUb2tlblN0cmVhbS5wcm90b3R5cGUuc2tpcCA9IGZ1
bmN0aW9uKHR5cGVNYXRjaGVyKQoreworICAgIGlmICghdHlwZU1hdGNoZXIgfHwgdGhpcy5haGVh
ZCgpLmlzQSh0eXBlTWF0Y2hlcikpIHsKKyAgICAgICAgdmFyIHRva2VuID0gdGhpcy5jdXJyZW50
KCk7CisgICAgICAgICsrdGhpcy50b2tlbkluZGV4OworICAgICAgICByZXR1cm4gdG9rZW47Cisg
ICAgfQorICAgIHRocm93IG5ldyBFcnJvcigiQ2Fubm90IHVzZSAiICsgSlNPTi5zdHJpbmdpZnko
dHlwZU1hdGNoZXIpICsgIiB0byBza2lwIG92ZXIgIiArIEpTT04uc3RyaW5naWZ5KHRoaXMuYWhl
YWQoKSkpOworfQorCitUb2tlblN0cmVhbS5wcm90b3R5cGUuc2tpcElmTmVlZGVkID0gZnVuY3Rp
b24odHlwZU1hdGNoZXIpCit7CisgICAgaWYgKHRoaXMuYWhlYWQoKSAmJiB0aGlzLmFoZWFkKCku
aXNBKHR5cGVNYXRjaGVyKSkKKyAgICAgICAgKyt0aGlzLnRva2VuSW5kZXg7Cit9CisKK2Z1bmN0
aW9uIHBhcnNlRnVuY3Rpb24obSkKK3sKKyAgICB2YXIgZnVuY3Rpb25PYmplY3QgPSB7CisgICAg
ICAgIHR5cGU6ICJmdW5jdGlvbiIsCisgICAgICAgIG5hbWU6IG0uc2tpcCgpLnZhbHVlCisgICAg
fTsKKyAgICBtLnNraXAoIigiKTsKKyAgICBmdW5jdGlvbk9iamVjdC5hcmd1bWVudHMgPSBwYXJz
ZUxpc3QobSwgWyIpIiwgImVuZCJdKTsKKyAgICBtLnNraXAoIikiKTsKKyAgICByZXR1cm4gZnVu
Y3Rpb25PYmplY3Q7Cit9CisKK2Z1bmN0aW9uIHBhcnNlUGFyYW1ldGVyKG0pCit7CisgICAgdmFy
IGZ1bmN0aW9uT2JqZWN0ID0geworICAgICAgICB0eXBlOiAicGFyYW1ldGVyIiwKKyAgICAgICAg
bmFtZTogbS5za2lwKCkudmFsdWUKKyAgICB9OworICAgIGZ1bmN0aW9uT2JqZWN0LnZhbHVlID0g
cGFyc2VMaXN0KG0sIFsiLCIsICJlbmQiXSk7CisgICAgbS5za2lwSWZOZWVkZWQoIiwiKTsKKyAg
ICByZXR1cm4gZnVuY3Rpb25PYmplY3Q7Cit9CisKK2Z1bmN0aW9uIHBhcnNlTGlzdChtLCBlbmRU
b2tlbikKK3sKKyAgICB2YXIgcmVzdWx0ID0gW10sIHRva2VuOworICAgIHdoaWxlICgodG9rZW4g
PSBtLmN1cnJlbnQoKSkgJiYgIXRva2VuLmlzQShlbmRUb2tlbikpIHsKKyAgICAgICAgaWYgKHRv
a2VuLmlzQSgia2V5d29yZCIpKSB7CisgICAgICAgICAgICBpZiAobS5haGVhZCgpLmlzQSgiKCIp
KQorICAgICAgICAgICAgICAgIHJlc3VsdC5wdXNoKHBhcnNlRnVuY3Rpb24obSkpOworICAgICAg
ICAgICAgZWxzZSBpZiAobS5haGVhZCgpLmlzQSgiLCIsIGVuZFRva2VuKSkKKyAgICAgICAgICAg
ICAgICByZXN1bHQucHVzaCh7CisgICAgICAgICAgICAgICAgICAgIHR5cGU6ICJrZXl3b3JkIiwg
CisgICAgICAgICAgICAgICAgICAgIHZhbHVlOiBtLnNraXAoKS52YWx1ZQorICAgICAgICAgICAg
ICAgIH0pOworICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIHJlc3VsdC5wdXNoKHBh
cnNlUGFyYW1ldGVyKG0pKTsKKyAgICAgICAgfSBlbHNlIGlmICh0b2tlbi5pc0EobnVtYmVyKSkK
KyAgICAgICAgICAgIHJlc3VsdC5wdXNoKHsKKyAgICAgICAgICAgICAgICB0eXBlOiAibnVtYmVy
IiwKKyAgICAgICAgICAgICAgICB2YWx1ZTogbS5za2lwKCkudmFsdWUKKyAgICAgICAgICAgIH0p
OworICAgICAgICBlbHNlIGlmICh0b2tlbi5pc0EoInVybCIpKQorICAgICAgICAgICAgcmVzdWx0
LnB1c2goeworICAgICAgICAgICAgICAgIHR5cGU6ICJ1cmwiLAorICAgICAgICAgICAgICAgIHZh
bHVlOiBtLnNraXAoKS52YWx1ZQorICAgICAgICAgICAgfSk7CisgICAgICAgIGVsc2UgaWYgKHRv
a2VuLmlzQSgiLCIpKQorICAgICAgICAgICAgbS5za2lwKCk7CisgICAgICAgIGVsc2UgCisgICAg
ICAgICAgICB0aHJvdyAiVW5leHBlY3RlZCB0b2tlbiAiICsgSlNPTi5zdHJpbmdpZnkodG9rZW4p
ICsgIiBpbiBhIGxpc3QuIjsKKyAgICB9CisgICAgcmV0dXJuIHJlc3VsdDsKK30KKworZnVuY3Rp
b24gdG9rZW5zVG9WYWx1ZXModG9rZW5zKQoreworICAgIHZhciBtID0gbmV3IFRva2VuU3RyZWFt
KHRva2Vucyk7CisgICAgcmV0dXJuIHBhcnNlTGlzdChtLCAiZW5kIik7Cit9CisKK3dpbmRvdy5w
YXJzZUN1c3RvbUZpbHRlclBhcmFtZXRlcnMgPSBmdW5jdGlvbihzKQoreworICAgIHJldHVybiB0
b2tlbnNUb1ZhbHVlcyh0b2tlbml6ZVN0cmluZyhzKSk7Cit9CisKKy8vIE5lZWQgdG8gcmVtb3Zl
IHRoZSBiYXNlIFVSTCB0byBhdm9pZCBoYXZpbmcgbG9jYWwgcGF0aHMgaW4gdGhlIGV4cGVjdGVk
IHJlc3VsdHMuCitmdW5jdGlvbiByZW1vdmVCYXNlVVJMKHNyYykgeworICAgIHZhciB1cmxSZWdl
eHAgPSAvdXJsXCgoW15cKV0qKVwpL2c7CisgICAgcmV0dXJuIHNyYy5yZXBsYWNlKHVybFJlZ2V4
cCwgZnVuY3Rpb24obWF0Y2gsIHVybCkgeworICAgICAgICByZXR1cm4gInVybCgiICsgdXJsLnN1
YnN0cih1cmwubGFzdEluZGV4T2YoIi8iKSArIDEpICsgIikiOworICAgIH0pOworfQorCit3aW5k
b3cuZ2V0Q3VzdG9tRmlsdGVyUGFyYW1ldGVycyA9IGZ1bmN0aW9uKHMpIAoreworICAgIHJldHVy
biBwYXJzZUN1c3RvbUZpbHRlclBhcmFtZXRlcnMocmVtb3ZlQmFzZVVSTChzKSkuc29ydChmdW5j
dGlvbihhLCBiKSB7IAorICAgICAgICBpZiAoYS50eXBlICE9IGIudHlwZSkgCisgICAgICAgICAg
ICByZXR1cm4gYS50eXBlLmxvY2FsZUNvbXBhcmUoYi50eXBlKTsKKyAgICAgICAgaWYgKGEudHlw
ZSA9PSAicGFyYW1ldGVyIikKKyAgICAgICAgICAgIHJldHVybiBhLm5hbWUubG9jYWxlQ29tcGFy
ZShiLm5hbWUpOworICAgICAgICByZXR1cm4gYS52YWx1ZS50b1N0cmluZygpLmxvY2FsZUNvbXBh
cmUoYi52YWx1ZS50b1N0cmluZygpKTsKKyAgICB9KTsKK30KKworfSkoKTsKXCBObyBuZXdsaW5l
IGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cgYi9T
b3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNTJkM2Q4NC4uMTQ1MDY5OSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxv
ZwpAQCAtMSwzICsxLDQyIEBACisyMDEyLTA0LTI2ICBBbGV4YW5kcnUgQ2hpY3VsaXRhICA8YWNo
aWN1QGFkb2JlLmNvbT4KKworICAgICAgICBbQ1NTIFNoYWRlcnNdIEltcGxlbWVudCBDU1MgQW5p
bWF0aW9ucyBhbmQgVHJhbnNpdGlvbnMgZm9yIENTUyBTaGFkZXJzCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03MTQwNgorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEkndmUgaW1wbGVtZW50ZWQgdGhlIGJsZW5k
IGZ1bmN0aW9uIGZvciB0aGUgQ3VzdG9tRmlsdGVyT3BlcmF0aW9uLiBUaGlzIHNob3VsZCBlbmFi
bGUgYW5pbWF0aW9ucyBmb3IgQ1NTIFNoYWRlcnMuCisgICAgICAgIEN1cnJlbnRseSwganVzdCBm
bG9hdHMgYXJlIGltcGxlbWVudGVkLiBJZiBhbnkgb2YgdGhlIGZpbHRlciBhdHRyaWJ1dGVzIGxp
a2Ugc2hhZGVyLCBtZXNoIHNpemUgb3IgYm94IG1vZGUgYXJlIGRpZmZlcmVudCwgCisgICAgICAg
IHRoZSBmYWxsYmFjayBpcyB0byB1c2UgdGhlICJ0byIgcGFydCBvZiB0aGUgYW5pbWF0aW9uIGlu
c3RlYWQuIElmIG90aGVyIHNoYWRlciBwYXJhbWV0ZXJzIGRvIG5vdCBtYXRjaCwgaXQgd2lsbCBt
ZXJnZSB0aGUgcGFyYW1ldGVyIHZhbHVlcworICAgICAgICAgYmV0d2VlbiB0aGUgImZyb20iIGFu
ZCAidG8iIHN0YXRlcy4KKworICAgICAgICBUZXN0OiBjc3MzL2ZpbHRlcnMvY3VzdG9tL2N1c3Rv
bS1maWx0ZXItYW5pbWF0aW9uLmh0bWwKKworICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Zp
bHRlcnMvQ3VzdG9tRmlsdGVyTnVtYmVyUGFyYW1ldGVyLmg6CisgICAgICAgIChXZWJDb3JlOjpD
dXN0b21GaWx0ZXJOdW1iZXJQYXJhbWV0ZXI6OmJsZW5kKToKKyAgICAgICAgKEN1c3RvbUZpbHRl
ck51bWJlclBhcmFtZXRlcik6CisgICAgICAgIChXZWJDb3JlOjpDdXN0b21GaWx0ZXJOdW1iZXJQ
YXJhbWV0ZXI6Om9wZXJhdG9yPT0pOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2ZpbHRl
cnMvQ3VzdG9tRmlsdGVyT3BlcmF0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmVxdWFsQ3Vz
dG9tRmlsdGVyUGFyYW1ldGVycyk6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNv
cmU6OmNoZWNrQ3VzdG9tRmlsdGVyUGFyYW1ldGVyc09yZGVyKToKKyAgICAgICAgKFdlYkNvcmU6
OmJsZW5kQ3VzdG9tRmlsdGVyUGFyYW1ldGVycyk6CisgICAgICAgIChXZWJDb3JlOjpDdXN0b21G
aWx0ZXJPcGVyYXRpb246OkN1c3RvbUZpbHRlck9wZXJhdGlvbik6CisgICAgICAgIChXZWJDb3Jl
OjpDdXN0b21GaWx0ZXJPcGVyYXRpb246OmJsZW5kKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9maWx0ZXJzL0N1c3RvbUZpbHRlck9wZXJhdGlvbi5oOgorICAgICAgICAoV2ViQ29yZSk6
CisgICAgICAgIChDdXN0b21GaWx0ZXJPcGVyYXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6Q3Vz
dG9tRmlsdGVyT3BlcmF0aW9uOjpvcGVyYXRvcj09KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9maWx0ZXJzL0N1c3RvbUZpbHRlclBhcmFtZXRlci5oOgorICAgICAgICAoQ3VzdG9tRmls
dGVyUGFyYW1ldGVyKToKKyAgICAgICAgKFdlYkNvcmU6OkN1c3RvbUZpbHRlclBhcmFtZXRlcjo6
aXNTYW1lVHlwZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9DdXN0b21G
aWx0ZXJQcm9ncmFtLmg6CisgICAgICAgICogcmVuZGVyaW5nL3N0eWxlL1N0eWxlQ3VzdG9tRmls
dGVyUHJvZ3JhbS5oOgorICAgICAgICAoU3R5bGVDdXN0b21GaWx0ZXJQcm9ncmFtKToKKyAgICAg
ICAgKFdlYkNvcmU6OlN0eWxlQ3VzdG9tRmlsdGVyUHJvZ3JhbTo6Y2FjaGVkVmVydGV4U2hhZGVy
KToKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlQ3VzdG9tRmlsdGVyUHJvZ3JhbTo6Y2FjaGVkRnJh
Z21lbnRTaGFkZXIpOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGVDdXN0b21GaWx0ZXJQcm9ncmFt
OjpvcGVyYXRvcj09KToKKwogMjAxMi0wNC0yNSAgQWxwaGEgTGFtICA8aGNsYW1AY2hyb21pdW0u
b3JnPgogCiAgICAgICAgIFVucmV2aWV3ZWQgYnVpbGQgZml4LgpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9DdXN0b21GaWx0ZXJOdW1iZXJQYXJh
bWV0ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvQ3VzdG9t
RmlsdGVyTnVtYmVyUGFyYW1ldGVyLmgKaW5kZXggMGFkZTE3My4uMjc3MGI0YyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9DdXN0b21GaWx0ZXJO
dW1iZXJQYXJhbWV0ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9m
aWx0ZXJzL0N1c3RvbUZpbHRlck51bWJlclBhcmFtZXRlci5oCkBAIC00OCw2ICs0OCwyNyBAQCBw
dWJsaWM6CiAKICAgICB2b2lkIGFkZFZhbHVlKGRvdWJsZSB2YWx1ZSkgeyBtX2RhdGEuYXBwZW5k
KHZhbHVlKTsgfQogICAgIAorICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxDdXN0b21GaWx0ZXJQYXJh
bWV0ZXI+IGJsZW5kKGNvbnN0IEN1c3RvbUZpbHRlclBhcmFtZXRlciogZnJvbSwgZG91YmxlIHBy
b2dyZXNzKQorICAgIHsKKyAgICAgICAgaWYgKCFmcm9tIHx8ICFpc1NhbWVUeXBlKCpmcm9tKSkK
KyAgICAgICAgICAgIHJldHVybiB0aGlzOworICAgICAgICBjb25zdCBDdXN0b21GaWx0ZXJOdW1i
ZXJQYXJhbWV0ZXIqIGZyb21OdW1iZXIgPSBzdGF0aWNfY2FzdDxjb25zdCBDdXN0b21GaWx0ZXJO
dW1iZXJQYXJhbWV0ZXIqPihmcm9tKTsKKyAgICAgICAgaWYgKHNpemUoKSAhPSBmcm9tTnVtYmVy
LT5zaXplKCkpCisgICAgICAgICAgICByZXR1cm4gdGhpczsKKyAgICAgICAgUmVmUHRyPEN1c3Rv
bUZpbHRlck51bWJlclBhcmFtZXRlcj4gcmVzdWx0ID0gQ3VzdG9tRmlsdGVyTnVtYmVyUGFyYW1l
dGVyOjpjcmVhdGUobmFtZSgpKTsKKyAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBzaXpl
KCk7ICsraSkKKyAgICAgICAgICAgIHJlc3VsdC0+YWRkVmFsdWUoV2ViQ29yZTo6YmxlbmQoZnJv
bU51bWJlci0+dmFsdWVBdChpKSwgdmFsdWVBdChpKSwgcHJvZ3Jlc3MpKTsKKyAgICAgICAgcmV0
dXJuIHJlc3VsdC5yZWxlYXNlKCk7CisgICAgfQorICAgIAorICAgIHZpcnR1YWwgYm9vbCBvcGVy
YXRvcj09KGNvbnN0IEN1c3RvbUZpbHRlclBhcmFtZXRlciYgbykgY29uc3QKKyAgICB7CisgICAg
ICAgIGlmICghaXNTYW1lVHlwZShvKSkKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAg
ICAgY29uc3QgQ3VzdG9tRmlsdGVyTnVtYmVyUGFyYW1ldGVyKiBvdGhlciA9IHN0YXRpY19jYXN0
PGNvbnN0IEN1c3RvbUZpbHRlck51bWJlclBhcmFtZXRlcio+KCZvKTsKKyAgICAgICAgcmV0dXJu
IG1fZGF0YSA9PSBvdGhlci0+bV9kYXRhOworICAgIH0KKyAgICAKIHByaXZhdGU6CiAgICAgQ3Vz
dG9tRmlsdGVyTnVtYmVyUGFyYW1ldGVyKGNvbnN0IFN0cmluZyYgbmFtZSkKICAgICAgICAgOiBD
dXN0b21GaWx0ZXJQYXJhbWV0ZXIoTlVNQkVSLCBuYW1lKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9DdXN0b21GaWx0ZXJPcGVyYXRpb24uY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9DdXN0b21GaWx0ZXJP
cGVyYXRpb24uY3BwCmluZGV4IGMwNWE0MGYuLjFmNmYyNGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvQ3VzdG9tRmlsdGVyT3BlcmF0aW9uLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0N1c3RvbUZp
bHRlck9wZXJhdGlvbi5jcHAKQEAgLTQwLDYgKzQwLDYwIEBACiAKIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIAorYm9vbCBlcXVhbEN1c3RvbUZpbHRlclBhcmFtZXRlcnMoY29uc3QgQ3VzdG9tRmlsdGVy
UGFyYW1ldGVyTGlzdCYgbGlzdEEsIGNvbnN0IEN1c3RvbUZpbHRlclBhcmFtZXRlckxpc3QmIGxp
c3RCKQoreworICAgIGlmIChsaXN0QS5zaXplKCkgIT0gbGlzdEIuc2l6ZSgpKQorICAgICAgICBy
ZXR1cm4gZmFsc2U7CisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBsaXN0QS5zaXplKCk7ICsr
aSkgeworICAgICAgICBpZiAobGlzdEEuYXQoaSkuZ2V0KCkgIT0gbGlzdEIuYXQoaSkuZ2V0KCkg
CisgICAgICAgICAgICAmJiAhKCpsaXN0QS5hdChpKS5nZXQoKSA9PSAqbGlzdEIuYXQoaSkuZ2V0
KCkpKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKyAgICByZXR1cm4gdHJ1ZTsK
K30KKworI2lmbmRlZiBOREVCVUcKK3N0YXRpYyBib29sIGNoZWNrQ3VzdG9tRmlsdGVyUGFyYW1l
dGVyc09yZGVyKGNvbnN0IEN1c3RvbUZpbHRlclBhcmFtZXRlckxpc3QmIHBhcmFtZXRlcnMpCit7
CisgICAgZm9yICh1bnNpZ25lZCBpID0gMTsgaSA8IHBhcmFtZXRlcnMuc2l6ZSgpOyArK2kpIHsK
KyAgICAgICAgLy8gQnJlYWsgZm9yIGVxdWFsIG9yIG5vdC1zb3J0ZWQgcGFyYW1ldGVycy4KKyAg
ICAgICAgaWYgKCFjb2RlUG9pbnRDb21wYXJlTGVzc1RoYW4ocGFyYW1ldGVycy5hdChpIC0gaSkt
Pm5hbWUoKSwgcGFyYW1ldGVycy5hdChpKS0+bmFtZSgpKSkKKyAgICAgICAgICAgIHJldHVybiBm
YWxzZTsKKyAgICB9CisgICAgcmV0dXJuIHRydWU7Cit9CisjZW5kaWYKKwordm9pZCBibGVuZEN1
c3RvbUZpbHRlclBhcmFtZXRlcnMoY29uc3QgQ3VzdG9tRmlsdGVyUGFyYW1ldGVyTGlzdCYgZnJv
bUxpc3QsIGNvbnN0IEN1c3RvbUZpbHRlclBhcmFtZXRlckxpc3QmIHRvTGlzdCwgZG91YmxlIHBy
b2dyZXNzLCBDdXN0b21GaWx0ZXJQYXJhbWV0ZXJMaXN0JiByZXN1bHRMaXN0KQoreworICAgIC8v
IFRoaXMgbWV0aG9kIGV4cGVjdHMgYm90aCBsaXN0cyB0byBiZSBzb3J0ZWQgYnkgcGFyYW1ldGVy
IG5hbWUgYW5kIHRoZSByZXN1bHQgbGlzdCBpcyBhbHNvIHNvcnRlZC4KKyAgICBBU1NFUlQoY2hl
Y2tDdXN0b21GaWx0ZXJQYXJhbWV0ZXJzT3JkZXIoZnJvbUxpc3QpKTsKKyAgICBBU1NFUlQoY2hl
Y2tDdXN0b21GaWx0ZXJQYXJhbWV0ZXJzT3JkZXIodG9MaXN0KSk7CisgICAgc2l6ZV90IGZyb21M
aXN0SW5kZXggPSAwLCB0b0xpc3RJbmRleCA9IDA7CisgICAgd2hpbGUgKGZyb21MaXN0SW5kZXgg
PCBmcm9tTGlzdC5zaXplKCkgJiYgdG9MaXN0SW5kZXggPCB0b0xpc3Quc2l6ZSgpKSB7CisgICAg
ICAgIEN1c3RvbUZpbHRlclBhcmFtZXRlciogcGFyYW1Gcm9tID0gZnJvbUxpc3QuYXQoZnJvbUxp
c3RJbmRleCkuZ2V0KCk7CisgICAgICAgIEN1c3RvbUZpbHRlclBhcmFtZXRlciogcGFyYW1UbyA9
IHRvTGlzdC5hdCh0b0xpc3RJbmRleCkuZ2V0KCk7CisgICAgICAgIGlmIChwYXJhbUZyb20tPm5h
bWUoKSA9PSBwYXJhbVRvLT5uYW1lKCkpIHsKKyAgICAgICAgICAgIHJlc3VsdExpc3QuYXBwZW5k
KHBhcmFtVG8tPmJsZW5kKHBhcmFtRnJvbSwgcHJvZ3Jlc3MpKTsKKyAgICAgICAgICAgICsrZnJv
bUxpc3RJbmRleDsKKyAgICAgICAgICAgICsrdG9MaXN0SW5kZXg7CisgICAgICAgICAgICBjb250
aW51ZTsKKyAgICAgICAgfQorICAgICAgICBpZiAoY29kZVBvaW50Q29tcGFyZUxlc3NUaGFuKHBh
cmFtRnJvbS0+bmFtZSgpLCBwYXJhbVRvLT5uYW1lKCkpKSB7CisgICAgICAgICAgICByZXN1bHRM
aXN0LmFwcGVuZChwYXJhbUZyb20pOworICAgICAgICAgICAgKytmcm9tTGlzdEluZGV4OworICAg
ICAgICAgICAgY29udGludWU7CisgICAgICAgIH0KKyAgICAgICAgcmVzdWx0TGlzdC5hcHBlbmQo
cGFyYW1Ubyk7CisgICAgICAgICsrdG9MaXN0SW5kZXg7CisgICAgfQorICAgIGZvciAoOyBmcm9t
TGlzdEluZGV4IDwgZnJvbUxpc3Quc2l6ZSgpOyArK2Zyb21MaXN0SW5kZXgpCisgICAgICAgIHJl
c3VsdExpc3QuYXBwZW5kKGZyb21MaXN0LmF0KGZyb21MaXN0SW5kZXgpKTsKKyAgICBmb3IgKDsg
dG9MaXN0SW5kZXggPCB0b0xpc3Quc2l6ZSgpOyArK3RvTGlzdEluZGV4KQorICAgICAgICByZXN1
bHRMaXN0LmFwcGVuZCh0b0xpc3QuYXQodG9MaXN0SW5kZXgpKTsKKyAgICBBU1NFUlQoY2hlY2tD
dXN0b21GaWx0ZXJQYXJhbWV0ZXJzT3JkZXIocmVzdWx0TGlzdCkpOworfQorCiBDdXN0b21GaWx0
ZXJPcGVyYXRpb246OkN1c3RvbUZpbHRlck9wZXJhdGlvbihQYXNzUmVmUHRyPEN1c3RvbUZpbHRl
clByb2dyYW0+IHByb2dyYW0sIGNvbnN0IEN1c3RvbUZpbHRlclBhcmFtZXRlckxpc3QmIHNvcnRl
ZFBhcmFtZXRlcnMsIHVuc2lnbmVkIG1lc2hSb3dzLCB1bnNpZ25lZCBtZXNoQ29sdW1ucywgTWVz
aEJveFR5cGUgbWVzaEJveFR5cGUsIE1lc2hUeXBlIG1lc2hUeXBlKQogICAgIDogRmlsdGVyT3Bl
cmF0aW9uKENVU1RPTSkKICAgICAsIG1fcHJvZ3JhbShwcm9ncmFtKQpAQCAtNTAsMjQgKzEwNCwz
MiBAQCBDdXN0b21GaWx0ZXJPcGVyYXRpb246OkN1c3RvbUZpbHRlck9wZXJhdGlvbihQYXNzUmVm
UHRyPEN1c3RvbUZpbHRlclByb2dyYW0+IHBybwogICAgICwgbV9tZXNoVHlwZShtZXNoVHlwZSkK
IHsKICAgICAvLyBNYWtlIHN1cmUgdGhhdCB0aGUgcGFyYW1ldGVycyBhcmUgYWx3eWFzIHNvcnRl
ZCBieSBuYW1lLiBXZSB1c2UgdGhhdCB0byBtZXJnZSB0d28gQ3VzdG9tRmlsdGVyT3BlcmF0aW9u
cyBpbiBhbmltYXRpb25zLgotICAgIEFTU0VSVChoYXNTb3J0ZWRQYXJhbWV0ZXJMaXN0KCkpOwor
ICAgIEFTU0VSVChjaGVja0N1c3RvbUZpbHRlclBhcmFtZXRlcnNPcmRlcihtX3BhcmFtZXRlcnMp
KTsKIH0KICAgICAKIEN1c3RvbUZpbHRlck9wZXJhdGlvbjo6fkN1c3RvbUZpbHRlck9wZXJhdGlv
bigpCiB7CiB9CiAKLSNpZm5kZWYgTkRFQlVHCi1ib29sIEN1c3RvbUZpbHRlck9wZXJhdGlvbjo6
aGFzU29ydGVkUGFyYW1ldGVyTGlzdCgpCitQYXNzUmVmUHRyPEZpbHRlck9wZXJhdGlvbj4gQ3Vz
dG9tRmlsdGVyT3BlcmF0aW9uOjpibGVuZChjb25zdCBGaWx0ZXJPcGVyYXRpb24qIGZyb20sIGRv
dWJsZSBwcm9ncmVzcywgYm9vbCBibGVuZFRvUGFzc3Rocm91Z2gpCiB7Ci0gICAgZm9yICh1bnNp
Z25lZCBpID0gMTsgaSA8IG1fcGFyYW1ldGVycy5zaXplKCk7ICsraSkgewotICAgICAgICAvLyBC
cmVhayBmb3IgZXF1YWwgb3Igbm90LXNvcnRlZCBwYXJhbWV0ZXJzLgotICAgICAgICBpZiAoIWNv
ZGVQb2ludENvbXBhcmVMZXNzVGhhbihtX3BhcmFtZXRlcnMuYXQoaSAtIGkpLT5uYW1lKCksIG1f
cGFyYW1ldGVycy5hdChpKS0+bmFtZSgpKSkKLSAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAg
ICB9Ci0gICAgcmV0dXJuIHRydWU7CisgICAgLy8gRklYTUU6IFRoZXJlJ3Mgbm8gd2F5IHRvIGRl
Y2lkZSB3aGF0IGlzIHRoZSAicGFzc3Rocm91Z2ggZmlsdGVyIiBmb3Igc2hhZGVycyB1c2luZyB0
aGUgY3VycmVudCBDU1MgU3ludGF4LgorICAgIC8vIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD04NDkwMworICAgIGlmIChibGVuZFRvUGFzc3Rocm91Z2ggfHwgIWZyb20g
fHwgIWZyb20tPmlzU2FtZVR5cGUoKnRoaXMpKQorICAgICAgICByZXR1cm4gdGhpczsKKyAgICAK
KyAgICBjb25zdCBDdXN0b21GaWx0ZXJPcGVyYXRpb24qIGZyb21PcCA9IHN0YXRpY19jYXN0PGNv
bnN0IEN1c3RvbUZpbHRlck9wZXJhdGlvbio+KGZyb20pOworICAgIGlmICghKCptX3Byb2dyYW0u
Z2V0KCkgPT0gKmZyb21PcC0+bV9wcm9ncmFtLmdldCgpKQorICAgICAgICB8fCBtX21lc2hSb3dz
ICE9IGZyb21PcC0+bV9tZXNoUm93cworICAgICAgICB8fCBtX21lc2hDb2x1bW5zICE9IGZyb21P
cC0+bV9tZXNoQ29sdW1ucworICAgICAgICB8fCBtX21lc2hCb3hUeXBlICE9IGZyb21PcC0+bV9t
ZXNoQm94VHlwZQorICAgICAgICB8fCBtX21lc2hUeXBlICE9IGZyb21PcC0+bV9tZXNoVHlwZSkK
KyAgICAgICAgcmV0dXJuIHRoaXM7CisgICAgCisgICAgQ3VzdG9tRmlsdGVyUGFyYW1ldGVyTGlz
dCBhbmltYXRlZFBhcmFtZXRlcnM7CisgICAgYmxlbmRDdXN0b21GaWx0ZXJQYXJhbWV0ZXJzKGZy
b21PcC0+bV9wYXJhbWV0ZXJzLCBtX3BhcmFtZXRlcnMsIHByb2dyZXNzLCBhbmltYXRlZFBhcmFt
ZXRlcnMpOworICAgIHJldHVybiBDdXN0b21GaWx0ZXJPcGVyYXRpb246OmNyZWF0ZShtX3Byb2dy
YW0sIGFuaW1hdGVkUGFyYW1ldGVycywgbV9tZXNoUm93cywgbV9tZXNoQ29sdW1ucywgbV9tZXNo
Qm94VHlwZSwgbV9tZXNoVHlwZSk7CiB9Ci0jZW5kaWYKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29y
ZQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJz
L0N1c3RvbUZpbHRlck9wZXJhdGlvbi5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvZmlsdGVycy9DdXN0b21GaWx0ZXJPcGVyYXRpb24uaAppbmRleCAzNTJlMjcyLi5jM2JjOTky
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0N1
c3RvbUZpbHRlck9wZXJhdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2ZpbHRlcnMvQ3VzdG9tRmlsdGVyT3BlcmF0aW9uLmgKQEAgLTQzLDYgKzQzLDkgQEAgbmFt
ZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgQ3VzdG9tRmlsdGVyUGFyYW1ldGVyOwogdHlwZWRlZiBW
ZWN0b3I8UmVmUHRyPEN1c3RvbUZpbHRlclBhcmFtZXRlcj4gPiBDdXN0b21GaWx0ZXJQYXJhbWV0
ZXJMaXN0OwogCitib29sIGVxdWFsQ3VzdG9tRmlsdGVyUGFyYW1ldGVycyhjb25zdCBDdXN0b21G
aWx0ZXJQYXJhbWV0ZXJMaXN0JiBsaXN0QSwgY29uc3QgQ3VzdG9tRmlsdGVyUGFyYW1ldGVyTGlz
dCYgbGlzdEIpOwordm9pZCBibGVuZEN1c3RvbUZpbHRlclBhcmFtZXRlcnMoY29uc3QgQ3VzdG9t
RmlsdGVyUGFyYW1ldGVyTGlzdCYgbGlzdEZyb20sIGNvbnN0IEN1c3RvbUZpbHRlclBhcmFtZXRl
ckxpc3QmIGxpc3RUbywgZG91YmxlIHByb2dyZXNzLCBDdXN0b21GaWx0ZXJQYXJhbWV0ZXJMaXN0
JiByZXN1bHRMaXN0KTsKKwogY2xhc3MgQ3VzdG9tRmlsdGVyT3BlcmF0aW9uIDogcHVibGljIEZp
bHRlck9wZXJhdGlvbiB7CiBwdWJsaWM6CiAgICAgZW51bSBNZXNoQm94VHlwZSB7CkBAIC04Myw2
ICs4Niw4IEBAIHB1YmxpYzoKICAgICAKICAgICB2aXJ0dWFsIGJvb2wgYWZmZWN0c09wYWNpdHko
KSBjb25zdCB7IHJldHVybiB0cnVlOyB9CiAgICAgdmlydHVhbCBib29sIG1vdmVzUGl4ZWxzKCkg
Y29uc3QgeyByZXR1cm4gdHJ1ZTsgfQorICAgIAorICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxGaWx0
ZXJPcGVyYXRpb24+IGJsZW5kKGNvbnN0IEZpbHRlck9wZXJhdGlvbiogZnJvbSwgZG91YmxlIHBy
b2dyZXNzLCBib29sIGJsZW5kVG9QYXNzdGhyb3VnaCA9IGZhbHNlKTsKIHByaXZhdGU6CiAgICAg
dmlydHVhbCBib29sIG9wZXJhdG9yPT0oY29uc3QgRmlsdGVyT3BlcmF0aW9uJiBvKSBjb25zdAog
ICAgIHsKQEAgLTkwLDE4ICs5NSwxNSBAQCBwcml2YXRlOgogICAgICAgICAgICAgcmV0dXJuIGZh
bHNlOwogCiAgICAgICAgIGNvbnN0IEN1c3RvbUZpbHRlck9wZXJhdGlvbiogb3RoZXIgPSBzdGF0
aWNfY2FzdDxjb25zdCBDdXN0b21GaWx0ZXJPcGVyYXRpb24qPigmbyk7Ci0gICAgICAgIHJldHVy
biBtX3Byb2dyYW0uZ2V0KCkgPT0gb3RoZXItPm1fcHJvZ3JhbS5nZXQoKQorICAgICAgICByZXR1
cm4gKm1fcHJvZ3JhbS5nZXQoKSA9PSAqb3RoZXItPm1fcHJvZ3JhbS5nZXQoKQogICAgICAgICAg
ICAgICAgJiYgbV9tZXNoUm93cyA9PSBvdGhlci0+bV9tZXNoUm93cwogICAgICAgICAgICAgICAg
JiYgbV9tZXNoQ29sdW1ucyA9PSBvdGhlci0+bV9tZXNoQ29sdW1ucwogICAgICAgICAgICAgICAg
JiYgbV9tZXNoQm94VHlwZSA9PSBvdGhlci0+bV9tZXNoQm94VHlwZQotICAgICAgICAgICAgICAg
JiYgbV9tZXNoVHlwZSA9PSBvdGhlci0+bV9tZXNoVHlwZTsKKyAgICAgICAgICAgICAgICYmIG1f
bWVzaFR5cGUgPT0gb3RoZXItPm1fbWVzaFR5cGUKKyAgICAgICAgICAgICAgICYmIGVxdWFsQ3Vz
dG9tRmlsdGVyUGFyYW1ldGVycyhtX3BhcmFtZXRlcnMsIG90aGVyLT5tX3BhcmFtZXRlcnMpOwog
ICAgIH0KICAgICAKICAgICBDdXN0b21GaWx0ZXJPcGVyYXRpb24oUGFzc1JlZlB0cjxDdXN0b21G
aWx0ZXJQcm9ncmFtPiwgY29uc3QgQ3VzdG9tRmlsdGVyUGFyYW1ldGVyTGlzdCYsIHVuc2lnbmVk
IG1lc2hSb3dzLCB1bnNpZ25lZCBtZXNoQ29sdW1ucywgTWVzaEJveFR5cGUsIE1lc2hUeXBlKTsK
LSAgICAKLSNpZm5kZWYgTkRFQlVHCi0gICAgYm9vbCBoYXNTb3J0ZWRQYXJhbWV0ZXJMaXN0KCk7
Ci0jZW5kaWYKIAogICAgIFJlZlB0cjxDdXN0b21GaWx0ZXJQcm9ncmFtPiBtX3Byb2dyYW07CiAg
ICAgQ3VzdG9tRmlsdGVyUGFyYW1ldGVyTGlzdCBtX3BhcmFtZXRlcnM7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0N1c3RvbUZpbHRlclBhcmFt
ZXRlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9DdXN0b21G
aWx0ZXJQYXJhbWV0ZXIuaAppbmRleCBlOWMwNjI5Li5iZjM5MWQ3IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0N1c3RvbUZpbHRlclBhcmFtZXRl
ci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvQ3VzdG9t
RmlsdGVyUGFyYW1ldGVyLmgKQEAgLTUyLDcgKzUyLDExIEBAIHB1YmxpYzoKICAgICAKICAgICBQ
YXJhbWV0ZXJUeXBlIHBhcmFtZXRlclR5cGUoKSBjb25zdCB7IHJldHVybiBtX3R5cGU7IH0KICAg
ICBjb25zdCBTdHJpbmcmIG5hbWUoKSBjb25zdCB7IHJldHVybiBtX25hbWU7IH0KLQorICAgIAor
ICAgIGJvb2wgaXNTYW1lVHlwZShjb25zdCBDdXN0b21GaWx0ZXJQYXJhbWV0ZXImIG90aGVyKSBj
b25zdCB7IHJldHVybiBwYXJhbWV0ZXJUeXBlKCkgPT0gb3RoZXIucGFyYW1ldGVyVHlwZSgpOyB9
CisgICAgCisgICAgdmlydHVhbCBQYXNzUmVmUHRyPEN1c3RvbUZpbHRlclBhcmFtZXRlcj4gYmxl
bmQoY29uc3QgQ3VzdG9tRmlsdGVyUGFyYW1ldGVyKiwgZG91YmxlIHByb2dyZXNzKSA9IDA7Cisg
ICAgdmlydHVhbCBib29sIG9wZXJhdG9yPT0oY29uc3QgQ3VzdG9tRmlsdGVyUGFyYW1ldGVyJikg
Y29uc3QgPSAwOwogcHJvdGVjdGVkOgogICAgIEN1c3RvbUZpbHRlclBhcmFtZXRlcihQYXJhbWV0
ZXJUeXBlIHR5cGUsIGNvbnN0IFN0cmluZyYgbmFtZSkKICAgICAgICAgOiBtX25hbWUobmFtZSkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvQ3Vz
dG9tRmlsdGVyUHJvZ3JhbS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmls
dGVycy9DdXN0b21GaWx0ZXJQcm9ncmFtLmgKaW5kZXggMjQ0MWQyMy4uYjJhZjQ1YyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9DdXN0b21GaWx0
ZXJQcm9ncmFtLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVy
cy9DdXN0b21GaWx0ZXJQcm9ncmFtLmgKQEAgLTU3LDYgKzU3LDkgQEAgcHVibGljOgogICAgIFBh
c3NSZWZQdHI8Q3VzdG9tRmlsdGVyU2hhZGVyPiBjcmVhdGVTaGFkZXJXaXRoQ29udGV4dChHcmFw
aGljc0NvbnRleHQzRCopOwogI2VuZGlmCiAKKyAgICAvLyBTdHlsZUN1c3RvbUZpbHRlclByb2dy
YW0gaGFzIHRoZSBvbmx5IGltcGxlbWVudGF0aW9uIGZvciB0aGUgZm9sbG93aW5nIG1ldGhvZC4g
VGhhdCBtZWFucywgaXQgY2FzdHMgdG8gU3R5bGVDdXN0b21GaWx0ZXJQcm9ncmFtCisgICAgLy8g
d2l0aG91dGggY2hlY2tpbmcgdGhlIHR5cGUuIElmIHlvdSBhZGQgYW5vdGhlciBpbXBsZW1lbnRh
dGlvbiwgYWxzbyBhZGQgYSBtZWNoYW5pc20gdG8gY2hlY2sgZm9yIHRoZSBjb3JyZWN0IHR5cGUu
CisgICAgdmlydHVhbCBib29sIG9wZXJhdG9yPT0oY29uc3QgQ3VzdG9tRmlsdGVyUHJvZ3JhbSYp
IGNvbnN0ID0gMDsKIHByb3RlY3RlZDoKICAgICAvLyBTdHlsZUN1c3RvbUZpbHRlclByb2dyYW0g
Y2FuIG5vdGlmeSB0aGUgY2xpZW50cyB0aGF0IHRoZSBjYWNoZWQgcmVzb3VyY2VzIGFyZQogICAg
IC8vIGxvYWRlZCBhbmQgaXQgaXMgcmVhZHkgdG8gY3JlYXRlIEN1c3RvbUZpbHRlclNoYWRlciBv
YmplY3RzLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1N0eWxl
Q3VzdG9tRmlsdGVyUHJvZ3JhbS5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1N0
eWxlQ3VzdG9tRmlsdGVyUHJvZ3JhbS5oCmluZGV4IGI2ZWVjNzQuLjQwY2Q1MzggMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TdHlsZUN1c3RvbUZpbHRlclByb2dy
YW0uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU3R5bGVDdXN0b21GaWx0
ZXJQcm9ncmFtLmgKQEAgLTExMyw2ICsxMTMsMTcgQEAgcHVibGljOgogICAgICAgICBpZiAoaXNM
b2FkZWQoKSkKICAgICAgICAgICAgIG5vdGlmeUNsaWVudHMoKTsKICAgICB9CisgICAgCisgICAg
Q2FjaGVkU2hhZGVyKiBjYWNoZWRWZXJ0ZXhTaGFkZXIoKSBjb25zdCB7IHJldHVybiBtX3ZlcnRl
eFNoYWRlciA/IG1fdmVydGV4U2hhZGVyLT5jYWNoZWRTaGFkZXIoKSA6IDA7IH0KKyAgICBDYWNo
ZWRTaGFkZXIqIGNhY2hlZEZyYWdtZW50U2hhZGVyKCkgY29uc3QgeyByZXR1cm4gbV9mcmFnbWVu
dFNoYWRlciA/IG1fZnJhZ21lbnRTaGFkZXItPmNhY2hlZFNoYWRlcigpIDogMDsgfQorICAgIAor
ICAgIHZpcnR1YWwgYm9vbCBvcGVyYXRvcj09KGNvbnN0IEN1c3RvbUZpbHRlclByb2dyYW0mIG8p
IGNvbnN0IAorICAgIHsKKyAgICAgICAgLy8gVGhlIGZvbGxvd2luZyBjYXN0IGlzIHVnbHksIGJ1
dCBTdHlsZUN1c3RvbUZpbHRlclByb2dyYW0gaXMgdGhlIHNpbmdsZSBpbXBsZW1lbnRhdGlvbiBv
ZiBDdXN0b21GaWx0ZXJQcm9ncmFtLgorICAgICAgICBjb25zdCBTdHlsZUN1c3RvbUZpbHRlclBy
b2dyYW0qIG90aGVyID0gc3RhdGljX2Nhc3Q8Y29uc3QgU3R5bGVDdXN0b21GaWx0ZXJQcm9ncmFt
Kj4oJm8pOworICAgICAgICByZXR1cm4gY2FjaGVkVmVydGV4U2hhZGVyKCkgPT0gb3RoZXItPmNh
Y2hlZFZlcnRleFNoYWRlcigpCisgICAgICAgICAgICAmJiBjYWNoZWRGcmFnbWVudFNoYWRlcigp
ID09IG90aGVyLT5jYWNoZWRGcmFnbWVudFNoYWRlcigpOworICAgIH0KIAogcHJpdmF0ZToKICAg
ICBTdHlsZUN1c3RvbUZpbHRlclByb2dyYW0oUGFzc1JlZlB0cjxTdHlsZVNoYWRlcj4gdmVydGV4
U2hhZGVyLCBQYXNzUmVmUHRyPFN0eWxlU2hhZGVyPiBmcmFnbWVudFNoYWRlcikK
</data>
<flag name="review"
          id="144650"
          type_id="1"
          status="-"
          setter="dino"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>139250</attachid>
            <date>2012-04-27 12:44:00 -0700</date>
            <delta_ts>2012-04-27 13:09:45 -0700</delta_ts>
            <desc>Patch V4</desc>
            <filename>bug71406_3.patch</filename>
            <type>text/plain</type>
            <size>34097</size>
            <attacher name="Alexandru Chiculita">achicu</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCA3YzE5OGMwLi45MzA2NDc2IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTcgQEAKKzIwMTItMDQt
MjcgIEFsZXhhbmRydSBDaGljdWxpdGEgIDxhY2hpY3VAYWRvYmUuY29tPgorCisgICAgICAgIFtD
U1MgU2hhZGVyc10gSW1wbGVtZW50IENTUyBBbmltYXRpb25zIGFuZCBUcmFuc2l0aW9ucyBmb3Ig
Q1NTIFNoYWRlcnMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTcxNDA2CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgKiBhbmltYXRpb25zL3Jlc291cmNlcy9hbmltYXRpb24tdGVzdC1oZWxwZXJzLmpzOiBBZGRl
ZCBhIGNoZWNrIGZvciB0aGUgImN1c3RvbSIgZnVuY3Rpb24gYW5kIHVzZWQgdGhlIHBhcnNlciBp
biBjdXN0b20tZmlsdGVyLXBhcnNlci5qcyBpbnN0ZWFkLgorICAgICAgICAoZ2V0RmlsdGVyUGFy
YW1ldGVycyk6CisgICAgICAgIChmaWx0ZXJQYXJhbWV0ZXJzTWF0Y2gpOgorICAgICAgICAqIGNz
czMvZmlsdGVycy9jdXN0b20vY3VzdG9tLWZpbHRlci1hbmltYXRpb24tZXhwZWN0ZWQudHh0OiBB
ZGRlZC4KKyAgICAgICAgKiBjc3MzL2ZpbHRlcnMvY3VzdG9tL2N1c3RvbS1maWx0ZXItYW5pbWF0
aW9uLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGNzczMvZmlsdGVycy9yZXNvdXJjZXMvY3VzdG9t
LWZpbHRlci1wYXJzZXIuanM6IEFkZGVkIGEgc2ltcGxlIHBhcnNlciBmb3IgdGhlICJjdXN0b20i
IGZ1bmN0aW9uLCBzbyB0aGF0IG11bHRpcGxlIHR5cGVzIGNhbiBiZSBjaGVja2VkIGNvcnJlY3Rs
eS4KKwogMjAxMi0wNC0yNSAgQWxwaGEgTGFtICA8aGNsYW1AY2hyb21pdW0ub3JnPgogCiAgICAg
ICAgIFVucmV2aWV3ZWQgdGVzdCBleHBlY3RhdGlvbnMgdXBkYXRlLgpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvYW5pbWF0aW9ucy9yZXNvdXJjZXMvYW5pbWF0aW9uLXRlc3QtaGVscGVycy5qcyBi
L0xheW91dFRlc3RzL2FuaW1hdGlvbnMvcmVzb3VyY2VzL2FuaW1hdGlvbi10ZXN0LWhlbHBlcnMu
anMKaW5kZXggODRhMjZiZS4uZTg5NzhlMSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvYW5pbWF0
aW9ucy9yZXNvdXJjZXMvYW5pbWF0aW9uLXRlc3QtaGVscGVycy5qcworKysgYi9MYXlvdXRUZXN0
cy9hbmltYXRpb25zL3Jlc291cmNlcy9hbmltYXRpb24tdGVzdC1oZWxwZXJzLmpzCkBAIC02Miw3
ICs2MiwxNSBAQCBmdW5jdGlvbiBwYXJzZUNyb3NzRmFkZShzKQogLy8gUmV0dXJuIGFuIGFycmF5
IG9mIG51bWVyaWMgZmlsdGVyIHBhcmFtcyBpbiAwLTEuCiBmdW5jdGlvbiBnZXRGaWx0ZXJQYXJh
bWV0ZXJzKHMpCiB7Ci0gICAgdmFyIGZpbHRlclBhcmFtcyA9IHMubWF0Y2goL1woKC4rKVwpLylb
MV07CisgICAgdmFyIGZpbHRlclJlc3VsdCA9IHMubWF0Y2goLyhcdyspXCgoLispXCkvKTsKKyAg
ICBpZiAoIWZpbHRlclJlc3VsdCkKKyAgICAgICAgdGhyb3cgbmV3IEVycm9yKCJUaGVyZSdzIG5v
IGZpbHRlciBpbiBcIiIgKyBzICsgIlwiIik7CisgICAgdmFyIGZpbHRlclBhcmFtcyA9IGZpbHRl
clJlc3VsdFsyXTsKKyAgICBpZiAoZmlsdGVyUmVzdWx0WzFdID09ICJjdXN0b20iKSB7CisgICAg
ICAgIGlmICghd2luZG93LmdldEN1c3RvbUZpbHRlclBhcmFtZXRlcnMpCisgICAgICAgICAgICB0
aHJvdyBuZXcgRXJyb3IoImdldEN1c3RvbUZpbHRlclBhcmFtZXRlcnMgbm90IGZvdW5kLiBEaWQg
eW91IGluY2x1ZGUgY3VzdG9tLWZpbHRlci1wYXJzZXIuanM/Iik7CisgICAgICAgIHJldHVybiBn
ZXRDdXN0b21GaWx0ZXJQYXJhbWV0ZXJzKGZpbHRlclBhcmFtcyk7CisgICAgfQogICAgIHZhciBw
YXJhbUxpc3QgPSBmaWx0ZXJQYXJhbXMuc3BsaXQoJyAnKTsgLy8gRklYTUU6IHRoZSBzcGVjIG1h
eSBhbGxvdyBjb21tYSBzZXBhcmF0aW9uIGF0IHNvbWUgcG9pbnQuCiAgICAgCiAgICAgLy8gTm9y
bWFsaXplIHBlcmNlbnRhZ2UgdmFsdWVzLgpAQCAtODAsOSArODgsMjkgQEAgZnVuY3Rpb24gZmls
dGVyUGFyYW1ldGVyc01hdGNoKHBhcmFtTGlzdDEsIHBhcmFtTGlzdDIsIHRvbGVyYW5jZSkKIHsK
ICAgICBpZiAocGFyYW1MaXN0MS5sZW5ndGggIT0gcGFyYW1MaXN0Mi5sZW5ndGgpCiAgICAgICAg
IHJldHVybiBmYWxzZTsKLQogICAgIGZvciAodmFyIGkgPSAwOyBpIDwgcGFyYW1MaXN0MS5sZW5n
dGg7ICsraSkgewotICAgICAgICB2YXIgbWF0Y2ggPSBpc0Nsb3NlRW5vdWdoKHBhcmFtTGlzdDFb
aV0sIHBhcmFtTGlzdDJbaV0sIHRvbGVyYW5jZSk7CisgICAgICAgIHZhciBwYXJhbTEgPSBwYXJh
bUxpc3QxW2ldLCAKKyAgICAgICAgICAgIHBhcmFtMiA9IHBhcmFtTGlzdDJbaV07CisgICAgICAg
IGlmICh0eXBlb2YgcGFyYW0xID09ICJvYmplY3QiKSB7CisgICAgICAgICAgICAvLyBUaGlzIGlz
IGEgY3VzdG9tIGZpbHRlciBwYXJhbWV0ZXIuCisgICAgICAgICAgICBpZiAocGFyYW0xLnR5cGUg
IT0gInBhcmFtZXRlciIpIHsKKyAgICAgICAgICAgICAgICAvLyBDaGVja2luZyBmb3Igc2hhZGVy
IHVyaXMgYW5kIG90aGVyIGtleXdvcmRzLiBUaGV5IG5lZWQgdG8gYmUgZXhhY3RseSB0aGUgc2Ft
ZS4KKyAgICAgICAgICAgICAgICBpZiAocGFyYW0xLnR5cGUgIT0gcGFyYW0yLnR5cGUKKyAgICAg
ICAgICAgICAgICAgICAgfHwgcGFyYW0xLnZhbHVlICE9IHBhcmFtMi52YWx1ZSkKKyAgICAgICAg
ICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICAgICAgICAgIGNvbnRpbnVlOworICAg
ICAgICAgICAgfQorICAgICAgICAgICAgaWYgKHBhcmFtMS5uYW1lICE9IHBhcmFtMi5uYW1lCisg
ICAgICAgICAgICAgICAgfHwgcGFyYW0xLnZhbHVlLmxlbmd0aCAhPSBwYXJhbTIudmFsdWUubGVu
Z3RoKQorICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgICAgIC8vIEZvciBu
b3cgd2Ugb25seSBzdXBwb3J0IGZsb2F0cy4KKyAgICAgICAgICAgIGZvciAodmFyIGogPSAwOyBq
IDwgcGFyYW0xLnZhbHVlLmxlbmd0aDsgKytqKSB7CisgICAgICAgICAgICAgICAgaWYgKCFpc0Ns
b3NlRW5vdWdoKHBhcmFtMS52YWx1ZVtqXS52YWx1ZSwgcGFyYW0yLnZhbHVlW2pdLnZhbHVlLCB0
b2xlcmFuY2UpKQorICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgICAg
ICB9CisgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgfQorICAgICAgICB2YXIgbWF0Y2gg
PSBpc0Nsb3NlRW5vdWdoKHBhcmFtMSwgcGFyYW0yLCB0b2xlcmFuY2UpOwogICAgICAgICBpZiAo
IW1hdGNoKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2NzczMvZmlsdGVycy9jdXN0b20vY3VzdG9tLWZpbHRlci1hbmltYXRpb24tZXhw
ZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvY3NzMy9maWx0ZXJzL2N1c3RvbS9jdXN0b20tZmlsdGVy
LWFuaW1hdGlvbi1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MC4uNmZkZTA3MQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2NzczMvZmlsdGVycy9j
dXN0b20vY3VzdG9tLWZpbHRlci1hbmltYXRpb24tZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMTEg
QEAKKyAgICAgICAKK1BBU1MgLSAid2Via2l0RmlsdGVyIiBwcm9wZXJ0eSBmb3IgImN1c3RvbS1m
cm9tLW5vbmUtYm94IiBlbGVtZW50IGF0IDFzIHNhdyBzb21ldGhpbmcgY2xvc2UgdG86IGN1c3Rv
bSh1cmwodmVydGV4LXJvdGF0ZS52cykgbm9uZSwgMSAxIGZpbHRlci1ib3gsIHJvdGF0ZUJ5IDMw
LCBvZmZzZXQgMCkKK1BBU1MgLSAid2Via2l0RmlsdGVyIiBwcm9wZXJ0eSBmb3IgImN1c3RvbS10
by1ub25lLWJveCIgZWxlbWVudCBhdCAxcyBzYXcgc29tZXRoaW5nIGNsb3NlIHRvOiBjdXN0b20o
dXJsKHZlcnRleC1yb3RhdGUudnMpIG5vbmUsIDEgMSBmaWx0ZXItYm94LCByb3RhdGVCeSAzMCwg
b2Zmc2V0IDApCitQQVNTIC0gIndlYmtpdEZpbHRlciIgcHJvcGVydHkgZm9yICJjdXN0b20tZnJv
bS1uby1wYXJhbXMtYm94IiBlbGVtZW50IGF0IDFzIHNhdyBzb21ldGhpbmcgY2xvc2UgdG86IGN1
c3RvbSh1cmwodmVydGV4LXJvdGF0ZS52cykgbm9uZSwgMSAxIGZpbHRlci1ib3gsIHJvdGF0ZUJ5
IDMwLCBvZmZzZXQgMCkKK1BBU1MgLSAid2Via2l0RmlsdGVyIiBwcm9wZXJ0eSBmb3IgImN1c3Rv
bS10by1uby1wYXJhbXMtYm94IiBlbGVtZW50IGF0IDFzIHNhdyBzb21ldGhpbmcgY2xvc2UgdG86
IGN1c3RvbSh1cmwodmVydGV4LXJvdGF0ZS52cykgbm9uZSwgMSAxIGZpbHRlci1ib3gsIHJvdGF0
ZUJ5IDMwLCBvZmZzZXQgMCkKK1BBU1MgLSAid2Via2l0RmlsdGVyIiBwcm9wZXJ0eSBmb3IgImN1
c3RvbS1taXgtYXR0cmlidXRlcy1ib3giIGVsZW1lbnQgYXQgMXMgc2F3IHNvbWV0aGluZyBjbG9z
ZSB0bzogY3VzdG9tKHVybCh2ZXJ0ZXgtcm90YXRlLnZzKSBub25lLCA1IDUgYm9yZGVyLWJveCwg
cm90YXRlQnkgMzAsIG9mZnNldCAwKQorUEFTUyAtICJ3ZWJraXRGaWx0ZXIiIHByb3BlcnR5IGZv
ciAiY3VzdG9tLWZyb20tZGlmZi1wYXJhbXMtYm94IiBlbGVtZW50IGF0IDFzIHNhdyBzb21ldGhp
bmcgY2xvc2UgdG86IGN1c3RvbSh1cmwodmVydGV4LXJvdGF0ZS52cykgbm9uZSwgMSAxIGZpbHRl
ci1ib3gsIHBhcmFtIDEwLCByb3RhdGVCeSA2MCwgb2Zmc2V0IDEwLCBhbm90aGVyX3BhcmFtIDUp
CitQQVNTIC0gIndlYmtpdEZpbHRlciIgcHJvcGVydHkgZm9yICJjdXN0b20tdG8tZGlmZi1wYXJh
bXMtYm94IiBlbGVtZW50IGF0IDFzIHNhdyBzb21ldGhpbmcgY2xvc2UgdG86IGN1c3RvbSh1cmwo
dmVydGV4LXJvdGF0ZS52cykgbm9uZSwgMSAxIGZpbHRlci1ib3gsIHBhcmFtIDEwLCByb3RhdGVC
eSA2MCwgb2Zmc2V0IDEwLCBhbm90aGVyX3BhcmFtIDUpCitQQVNTIC0gIndlYmtpdEZpbHRlciIg
cHJvcGVydHkgZm9yICJjdXN0b20tbWl4LXBhcmFtcy1ib3giIGVsZW1lbnQgYXQgMXMgc2F3IHNv
bWV0aGluZyBjbG9zZSB0bzogY3VzdG9tKHVybCh2ZXJ0ZXgtcm90YXRlLnZzKSBub25lLCAxIDEg
ZmlsdGVyLWJveCwgcGFyYW0gMTAsIGFub3RoZXJfcGFyYW0gNSwgZmlyc3RfcGFyYW0gNiwgcm90
YXRlQnkgNjAsIG9mZnNldCAxMCwgbGFzdF9wYXJhbSA0KQorUEFTUyAtICJ3ZWJraXRGaWx0ZXIi
IHByb3BlcnR5IGZvciAiY3VzdG9tLW1peC1udW1iZXJzLWJveCIgZWxlbWVudCBhdCAxcyBzYXcg
c29tZXRoaW5nIGNsb3NlIHRvOiBjdXN0b20odXJsKHZlcnRleC1yb3RhdGUudnMpIG5vbmUsIDEg
MSBmaWx0ZXItYm94LCByb3RhdGVCeSA0NSwgYSA1LjUsIGIgMTEgMTYuNSwgYyAyMiAyNy41IDMz
LCBkIDM4LjUgNDQgNDkuNSkKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvY3NzMy9maWx0ZXJz
L2N1c3RvbS9jdXN0b20tZmlsdGVyLWFuaW1hdGlvbi5odG1sIGIvTGF5b3V0VGVzdHMvY3NzMy9m
aWx0ZXJzL2N1c3RvbS9jdXN0b20tZmlsdGVyLWFuaW1hdGlvbi5odG1sCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAuLmFlNWUwNjcKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRU
ZXN0cy9jc3MzL2ZpbHRlcnMvY3VzdG9tL2N1c3RvbS1maWx0ZXItYW5pbWF0aW9uLmh0bWwKQEAg
LTAsMCArMSwxMzkgQEAKKzwhRE9DVFlQRSBodG1sPgorCis8aHRtbD4KKzxoZWFkPgorICAgIDxz
Y3JpcHQ+CisgICAgICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpIHsKKyAgICAg
ICAgICAgIHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlci5vdmVycmlkZVByZWZlcmVuY2UoIldl
YktpdENTU0N1c3RvbUZpbHRlckVuYWJsZWQiLCAiMSIpOworICAgICAgICAgICAgd2luZG93Lmxh
eW91dFRlc3RDb250cm9sbGVyLm92ZXJyaWRlUHJlZmVyZW5jZSgiV2ViS2l0V2ViR0xFbmFibGVk
IiwgIjEiKTsKKyAgICAgICAgfQorICAgIDwvc2NyaXB0PgorICAgIDxzdHlsZT4KKyAgICAgICAg
LmJveCB7CisgICAgICAgICAgICBoZWlnaHQ6IDEwMHB4OworICAgICAgICAgICAgd2lkdGg6IDEw
MHB4OworICAgICAgICAgICAgbWFyZ2luOiAxMHB4OworICAgICAgICAgICAgYmFja2dyb3VuZC1j
b2xvcjogYmx1ZTsKKyAgICAgICAgICAgIGRpc3BsYXk6IGlubGluZS1ibG9jazsKKyAgICAgICAg
fQorICAgIAorICAgICAgICAjY3VzdG9tLWZyb20tbm9uZS1ib3ggeworICAgICAgICAgICAgLXdl
YmtpdC1hbmltYXRpb246IGN1c3RvbS1mcm9tLW5vbmUtYW5pbSAycyBsaW5lYXIKKyAgICAgICAg
fQorICAgIAorICAgICAgICAjY3VzdG9tLXRvLW5vbmUtYm94IHsKKyAgICAgICAgICAgIC13ZWJr
aXQtYW5pbWF0aW9uOiBjdXN0b20tdG8tbm9uZS1hbmltIDJzIGxpbmVhcgorICAgICAgICB9Cisg
ICAgCisgICAgICAgICNjdXN0b20tZnJvbS1uby1wYXJhbXMtYm94IHsKKyAgICAgICAgICAgIC13
ZWJraXQtYW5pbWF0aW9uOiBjdXN0b20tZnJvbS1uby1wYXJhbXMtYW5pbSAycyBsaW5lYXIKKyAg
ICAgICAgfQorICAgIAorICAgICAgICAjY3VzdG9tLXRvLW5vLXBhcmFtcy1ib3ggeworICAgICAg
ICAgICAgLXdlYmtpdC1hbmltYXRpb246IGN1c3RvbS10by1uby1wYXJhbXMtYW5pbSAycyBsaW5l
YXIKKyAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgI2N1c3RvbS1taXgtYXR0cmlidXRlcy1i
b3ggeworICAgICAgICAgICAgLXdlYmtpdC1hbmltYXRpb246IGN1c3RvbS1taXgtYXR0cmlidXRl
cy1hbmltIDJzIGxpbmVhcgorICAgICAgICB9CisgICAgCisgICAgICAgICNjdXN0b20tZnJvbS1k
aWZmLXBhcmFtcy1ib3ggeworICAgICAgICAgICAgLXdlYmtpdC1hbmltYXRpb246IGN1c3RvbS1m
cm9tLWRpZmYtcGFyYW1zLWFuaW0gMnMgbGluZWFyCisgICAgICAgIH0KKyAgICAKKyAgICAgICAg
I2N1c3RvbS10by1kaWZmLXBhcmFtcy1ib3ggeworICAgICAgICAgICAgLXdlYmtpdC1hbmltYXRp
b246IGN1c3RvbS10by1kaWZmLXBhcmFtcy1hbmltIDJzIGxpbmVhcgorICAgICAgICB9CisgICAg
CisgICAgICAgICNjdXN0b20tbWl4LXBhcmFtcy1ib3ggeworICAgICAgICAgICAgLXdlYmtpdC1h
bmltYXRpb246IGN1c3RvbS1taXgtcGFyYW1zLWFuaW0gMnMgbGluZWFyCisgICAgICAgIH0KKyAg
ICAgICAgCisgICAgICAgICNjdXN0b20tbWl4LW51bWJlcnMtYm94IHsKKyAgICAgICAgICAgIC13
ZWJraXQtYW5pbWF0aW9uOiBjdXN0b20tbWl4LW51bWJlcnMtYW5pbSAycyBsaW5lYXIKKyAgICAg
ICAgfQorICAgIAorICAgICAgICBALXdlYmtpdC1rZXlmcmFtZXMgY3VzdG9tLWZyb20tbm9uZS1h
bmltIHsKKyAgICAgICAgICAgIGZyb20geyAtd2Via2l0LWZpbHRlcjogbm9uZTsgfQorICAgICAg
ICAgICAgdG8gICB7IC13ZWJraXQtZmlsdGVyOiBjdXN0b20odXJsKC4uL3Jlc291cmNlcy92ZXJ0
ZXgtcm90YXRlLnZzKSwgcm90YXRlQnkgMzAsIG9mZnNldCAwKTsgfQorICAgICAgICB9CisKKyAg
ICAgICAgQC13ZWJraXQta2V5ZnJhbWVzIGN1c3RvbS10by1ub25lLWFuaW0geworICAgICAgICAg
ICAgZnJvbSB7IC13ZWJraXQtZmlsdGVyOiBjdXN0b20odXJsKC4uL3Jlc291cmNlcy92ZXJ0ZXgt
cm90YXRlLnZzKSwgcm90YXRlQnkgMzAsIG9mZnNldCAwKTsgfQorICAgICAgICAgICAgdG8gICB7
IC13ZWJraXQtZmlsdGVyOiBub25lOyB9CisgICAgICAgIH0KKyAgICAKKyAgICAgICAgQC13ZWJr
aXQta2V5ZnJhbWVzIGN1c3RvbS1mcm9tLW5vLXBhcmFtcy1hbmltIHsKKyAgICAgICAgICAgIGZy
b20geyAtd2Via2l0LWZpbHRlcjogY3VzdG9tKHVybCguLi9yZXNvdXJjZXMvdmVydGV4LXJvdGF0
ZS52cykpOyB9CisgICAgICAgICAgICB0byAgIHsgLXdlYmtpdC1maWx0ZXI6IGN1c3RvbSh1cmwo
Li4vcmVzb3VyY2VzL3ZlcnRleC1yb3RhdGUudnMpLCByb3RhdGVCeSAzMCwgb2Zmc2V0IDApOyB9
CisgICAgICAgIH0KKworICAgICAgICBALXdlYmtpdC1rZXlmcmFtZXMgY3VzdG9tLXRvLW5vLXBh
cmFtcy1hbmltIHsKKyAgICAgICAgICAgIGZyb20geyAtd2Via2l0LWZpbHRlcjogY3VzdG9tKHVy
bCguLi9yZXNvdXJjZXMvdmVydGV4LXJvdGF0ZS52cyksIHJvdGF0ZUJ5IDMwLCBvZmZzZXQgMCk7
IH0KKyAgICAgICAgICAgIHRvICAgeyAtd2Via2l0LWZpbHRlcjogY3VzdG9tKHVybCguLi9yZXNv
dXJjZXMvdmVydGV4LXJvdGF0ZS52cykpOyB9CisgICAgICAgIH0KKyAgICAgICAgCisgICAgICAg
IEAtd2Via2l0LWtleWZyYW1lcyBjdXN0b20tbWl4LWF0dHJpYnV0ZXMtYW5pbSB7CisgICAgICAg
ICAgICBmcm9tIHsgLXdlYmtpdC1maWx0ZXI6IGN1c3RvbSh1cmwoLi4vcmVzb3VyY2VzL3ZlcnRl
eC1vZmZzZXQudnMpLCByb3RhdGVCeV9hIDMwLCBvZmZzZXRfYSAwKTsgfQorICAgICAgICAgICAg
dG8gICB7IC13ZWJraXQtZmlsdGVyOiBjdXN0b20odXJsKC4uL3Jlc291cmNlcy92ZXJ0ZXgtcm90
YXRlLnZzKSwgNSA1IGJvcmRlci1ib3gsIHJvdGF0ZUJ5IDMwLCBvZmZzZXQgMCk7IH0KKyAgICAg
ICAgfQorICAgIAorICAgICAgICBALXdlYmtpdC1rZXlmcmFtZXMgY3VzdG9tLWZyb20tZGlmZi1w
YXJhbXMtYW5pbSB7CisgICAgICAgICAgICBmcm9tIHsgLXdlYmtpdC1maWx0ZXI6IGN1c3RvbSh1
cmwoLi4vcmVzb3VyY2VzL3ZlcnRleC1yb3RhdGUudnMpLCBwYXJhbSAxMCwgcm90YXRlQnkgMzAs
IG9mZnNldCAwLCBhbm90aGVyX3BhcmFtIDUpOyB9CisgICAgICAgICAgICB0byAgIHsgLXdlYmtp
dC1maWx0ZXI6IGN1c3RvbSh1cmwoLi4vcmVzb3VyY2VzL3ZlcnRleC1yb3RhdGUudnMpLCByb3Rh
dGVCeSA5MCwgb2Zmc2V0IDIwKTsgfQorICAgICAgICB9CisKKyAgICAgICAgQC13ZWJraXQta2V5
ZnJhbWVzIGN1c3RvbS10by1kaWZmLXBhcmFtcy1hbmltIHsKKyAgICAgICAgICAgIGZyb20geyAt
d2Via2l0LWZpbHRlcjogY3VzdG9tKHVybCguLi9yZXNvdXJjZXMvdmVydGV4LXJvdGF0ZS52cyks
IHJvdGF0ZUJ5IDkwLCBvZmZzZXQgMjApOyB9CisgICAgICAgICAgICB0byAgIHsgLXdlYmtpdC1m
aWx0ZXI6IGN1c3RvbSh1cmwoLi4vcmVzb3VyY2VzL3ZlcnRleC1yb3RhdGUudnMpLCBwYXJhbSAx
MCwgcm90YXRlQnkgMzAsIG9mZnNldCAwLCBhbm90aGVyX3BhcmFtIDUpOyB9CisgICAgICAgIH0K
KyAgICAKKyAgICAgICAgQC13ZWJraXQta2V5ZnJhbWVzIGN1c3RvbS1taXgtcGFyYW1zLWFuaW0g
eworICAgICAgICAgICAgZnJvbSB7IC13ZWJraXQtZmlsdGVyOiBjdXN0b20odXJsKC4uL3Jlc291
cmNlcy92ZXJ0ZXgtcm90YXRlLnZzKSwgZmlyc3RfcGFyYW0gNiwgcm90YXRlQnkgOTAsIG9mZnNl
dCAyMCwgbGFzdF9wYXJhbSA0KTsgfQorICAgICAgICAgICAgdG8gICB7IC13ZWJraXQtZmlsdGVy
OiBjdXN0b20odXJsKC4uL3Jlc291cmNlcy92ZXJ0ZXgtcm90YXRlLnZzKSwgcGFyYW0gMTAsIHJv
dGF0ZUJ5IDMwLCBvZmZzZXQgMCwgYW5vdGhlcl9wYXJhbSA1KTsgfQorICAgICAgICB9CisgICAg
ICAgIAorICAgICAgICBALXdlYmtpdC1rZXlmcmFtZXMgY3VzdG9tLW1peC1udW1iZXJzLWFuaW0g
eworICAgICAgICAgICAgZnJvbSB7IC13ZWJraXQtZmlsdGVyOiBjdXN0b20odXJsKC4uL3Jlc291
cmNlcy92ZXJ0ZXgtcm90YXRlLnZzKSwgcm90YXRlQnkgMCwgYSAxLCBiIDIgMywgYyA0IDUgNiwg
ZCA3IDggOSk7IH0KKyAgICAgICAgICAgIHRvICAgeyAtd2Via2l0LWZpbHRlcjogY3VzdG9tKHVy
bCguLi9yZXNvdXJjZXMvdmVydGV4LXJvdGF0ZS52cyksIHJvdGF0ZUJ5IDkwLCBhIDEwLCBiIDIw
IDMwLCBjIDQwIDUwIDYwLCBkIDcwIDgwIDkwKTsgfQorICAgICAgICB9CisgICAgPC9zdHlsZT4K
KyAgICA8c2NyaXB0IHNyYz0iLi4vcmVzb3VyY2VzL2N1c3RvbS1maWx0ZXItcGFyc2VyLmpzIj48
L3NjcmlwdD4KKyAgICA8c2NyaXB0IHNyYz0iLi4vLi4vLi4vYW5pbWF0aW9ucy9yZXNvdXJjZXMv
YW5pbWF0aW9uLXRlc3QtaGVscGVycy5qcyI+PC9zY3JpcHQ+CisgICAgPHNjcmlwdCB0eXBlPSJ0
ZXh0L2phdmFzY3JpcHQiPgorICAgICAgICBjb25zdCBleHBlY3RlZFZhbHVlcyA9IFsKKyAgICAg
ICAgICAgIC8vIFthbmltYXRpb24tbmFtZSwgdGltZSwgZWxlbWVudC1pZCwgcHJvcGVydHksIGV4
cGVjdGVkLXZhbHVlLCB0b2xlcmFuY2VdCisgICAgICAgICAgICBbImN1c3RvbS1mcm9tLW5vbmUt
YW5pbSIsICAxLCAiY3VzdG9tLWZyb20tbm9uZS1ib3giLCAid2Via2l0RmlsdGVyIiwgJ2N1c3Rv
bSh1cmwodmVydGV4LXJvdGF0ZS52cykgbm9uZSwgMSAxIGZpbHRlci1ib3gsIHJvdGF0ZUJ5IDMw
LCBvZmZzZXQgMCknLCAwXSwKKyAgICAgICAgICAgIFsiY3VzdG9tLXRvLW5vbmUtYW5pbSIsICAx
LCAiY3VzdG9tLXRvLW5vbmUtYm94IiwgIndlYmtpdEZpbHRlciIsICdjdXN0b20odXJsKHZlcnRl
eC1yb3RhdGUudnMpIG5vbmUsIDEgMSBmaWx0ZXItYm94LCByb3RhdGVCeSAzMCwgb2Zmc2V0IDAp
JywgMF0sCisKKyAgICAgICAgICAgIFsiY3VzdG9tLWZyb20tbm8tcGFyYW1zLWFuaW0iLCAgMSwg
ImN1c3RvbS1mcm9tLW5vLXBhcmFtcy1ib3giLCAid2Via2l0RmlsdGVyIiwgJ2N1c3RvbSh1cmwo
dmVydGV4LXJvdGF0ZS52cykgbm9uZSwgMSAxIGZpbHRlci1ib3gsIHJvdGF0ZUJ5IDMwLCBvZmZz
ZXQgMCknLCAwXSwKKyAgICAgICAgICAgIFsiY3VzdG9tLXRvLW5vLXBhcmFtcy1hbmltIiwgIDEs
ICJjdXN0b20tdG8tbm8tcGFyYW1zLWJveCIsICJ3ZWJraXRGaWx0ZXIiLCAnY3VzdG9tKHVybCh2
ZXJ0ZXgtcm90YXRlLnZzKSBub25lLCAxIDEgZmlsdGVyLWJveCwgcm90YXRlQnkgMzAsIG9mZnNl
dCAwKScsIDBdLAorICAgICAgICAgICAgCisgICAgICAgICAgICBbImN1c3RvbS1taXgtYXR0cmli
dXRlcy1hbmltIiwgIDEsICJjdXN0b20tbWl4LWF0dHJpYnV0ZXMtYm94IiwgIndlYmtpdEZpbHRl
ciIsICdjdXN0b20odXJsKHZlcnRleC1yb3RhdGUudnMpIG5vbmUsIDUgNSBib3JkZXItYm94LCBy
b3RhdGVCeSAzMCwgb2Zmc2V0IDApJywgMF0sCisKKyAgICAgICAgICAgIC8vIEZJWE1FOiBDU1Mg
U2hhZGVycyBkbyBub3QgZ2V0IGdvb2QgRlBTIGluIGRlYnVnIG1vZGUsIHNvIHRoZSB0b2xlcmFu
Y2UgbmVlZHMgdG8gYmUgaGlnaGVyLgorICAgICAgICAgICAgLy8gaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTg1MDg2CisgICAgICAgICAgICBbImN1c3RvbS1mcm9tLWRp
ZmYtcGFyYW1zLWFuaW0iLCAgMSwgImN1c3RvbS1mcm9tLWRpZmYtcGFyYW1zLWJveCIsICJ3ZWJr
aXRGaWx0ZXIiLCAnY3VzdG9tKHVybCh2ZXJ0ZXgtcm90YXRlLnZzKSBub25lLCAxIDEgZmlsdGVy
LWJveCwgcGFyYW0gMTAsIHJvdGF0ZUJ5IDYwLCBvZmZzZXQgMTAsIGFub3RoZXJfcGFyYW0gNSkn
LCA1XSwKKyAgICAgICAgICAgIFsiY3VzdG9tLXRvLWRpZmYtcGFyYW1zLWFuaW0iLCAgMSwgImN1
c3RvbS10by1kaWZmLXBhcmFtcy1ib3giLCAid2Via2l0RmlsdGVyIiwgJ2N1c3RvbSh1cmwodmVy
dGV4LXJvdGF0ZS52cykgbm9uZSwgMSAxIGZpbHRlci1ib3gsIHBhcmFtIDEwLCByb3RhdGVCeSA2
MCwgb2Zmc2V0IDEwLCBhbm90aGVyX3BhcmFtIDUpJywgNV0sCisKKyAgICAgICAgICAgIFsiY3Vz
dG9tLW1peC1wYXJhbXMtYW5pbSIsICAxLCAiY3VzdG9tLW1peC1wYXJhbXMtYm94IiwgIndlYmtp
dEZpbHRlciIsICdjdXN0b20odXJsKHZlcnRleC1yb3RhdGUudnMpIG5vbmUsIDEgMSBmaWx0ZXIt
Ym94LCBwYXJhbSAxMCwgYW5vdGhlcl9wYXJhbSA1LCBmaXJzdF9wYXJhbSA2LCByb3RhdGVCeSA2
MCwgb2Zmc2V0IDEwLCBsYXN0X3BhcmFtIDQpJywgNV0sCisgICAgICAgICAgICBbImN1c3RvbS1t
aXgtbnVtYmVycy1hbmltIiwgIDEsICJjdXN0b20tbWl4LW51bWJlcnMtYm94IiwgIndlYmtpdEZp
bHRlciIsICdjdXN0b20odXJsKHZlcnRleC1yb3RhdGUudnMpIG5vbmUsIDEgMSBmaWx0ZXItYm94
LCByb3RhdGVCeSA0NSwgYSA1LjUsIGIgMTEgMTYuNSwgYyAyMiAyNy41IDMzLCBkIDM4LjUgNDQg
NDkuNSknLCAxMF0KKyAgICAgICAgXTsKKyAgICAgICAgcnVuQW5pbWF0aW9uVGVzdChleHBlY3Rl
ZFZhbHVlcyk7CisgICAgPC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKyAgICA8ZGl2IGNsYXNz
PSJib3giIGlkPSJjdXN0b20tZnJvbS1ub25lLWJveCI+PC9kaXY+CisgICAgPGRpdiBjbGFzcz0i
Ym94IiBpZD0iY3VzdG9tLXRvLW5vbmUtYm94Ij48L2Rpdj4KKyAgICA8ZGl2IGNsYXNzPSJib3gi
IGlkPSJjdXN0b20tZnJvbS1uby1wYXJhbXMtYm94Ij48L2Rpdj4KKyAgICA8ZGl2IGNsYXNzPSJi
b3giIGlkPSJjdXN0b20tdG8tbm8tcGFyYW1zLWJveCI+PC9kaXY+CisgICAgPGRpdiBjbGFzcz0i
Ym94IiBpZD0iY3VzdG9tLW1peC1hdHRyaWJ1dGVzLWJveCI+PC9kaXY+CisgICAgPGRpdiBjbGFz
cz0iYm94IiBpZD0iY3VzdG9tLWZyb20tZGlmZi1wYXJhbXMtYm94Ij48L2Rpdj4KKyAgICA8ZGl2
IGNsYXNzPSJib3giIGlkPSJjdXN0b20tdG8tZGlmZi1wYXJhbXMtYm94Ij48L2Rpdj4KKyAgICA8
ZGl2IGNsYXNzPSJib3giIGlkPSJjdXN0b20tbWl4LXBhcmFtcy1ib3giPjwvZGl2PgorICAgIDxk
aXYgY2xhc3M9ImJveCIgaWQ9ImN1c3RvbS1taXgtbnVtYmVycy1ib3giPjwvZGl2PgorCisgICAg
PGRpdiBpZD0icmVzdWx0Ij4KKyAgICA8L2Rpdj4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL2NzczMvZmlsdGVycy9yZXNvdXJjZXMvY3VzdG9tLWZpbHRlci1wYXJz
ZXIuanMgYi9MYXlvdXRUZXN0cy9jc3MzL2ZpbHRlcnMvcmVzb3VyY2VzL2N1c3RvbS1maWx0ZXIt
cGFyc2VyLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjhhMzBiNjIKLS0t
IC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9jc3MzL2ZpbHRlcnMvcmVzb3VyY2VzL2N1c3Rv
bS1maWx0ZXItcGFyc2VyLmpzCkBAIC0wLDAgKzEsMjAyIEBACisvLyBUaGlzIGlzIGEgaGVscGVy
IHNjcmlwdCBkZXNpZ25lZCB0byBwYXJzZSB0aGUgY29tcHV0ZWQgc3ludGF4IG9mIHRoZSBjdXN0
b20gZmlsdGVyLiAKKy8vIE5vdGUgdGhhdCBpdCBpcyBnZW5lcmljIGVub3VnaCBzbyB0aGF0IGl0
IGNhbiBiZSB1c2VkIGZvciBvdGhlciBwcm9wZXJ0aWVzIGluIHRoZSBmdXR1cmUuCisKK2Z1bmN0
aW9uIFRva2VuKHR5cGUpIAoreworICAgIHRoaXMudHlwZSA9IHR5cGU7Cit9CisKKy8vIENoZWNr
cyBpZiB0aGUgdHlwZSBvZiB0aGUgdG9rZW4gaXMgaW4gdGhlIGxpc3Qgb2YgYXJndW1lbnRzIHBh
c3NlZCB0byB0aGUgZnVuY3Rpb24uCisvLyBJdCBhbHNvIGFjY2VwdHMgYXJyYXlzIGFuZCBvdGhl
ciB0eXBlIGNoZWNraW5nIGZ1bmN0aW9ucy4KK1Rva2VuLnByb3RvdHlwZS5pc0EgPSBmdW5jdGlv
bigpCit7CisgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBhcmd1bWVudHMubGVuZ3RoOyArK2kpIHsK
KyAgICAgICAgdmFyIHR5cGUgPSBhcmd1bWVudHNbaV07CisgICAgICAgIGlmICgodHlwZW9mIHR5
cGUgPT0gIm9iamVjdCIgJiYgdHlwZS5sZW5ndGggJiYgdGhpcy5pc0EuYXBwbHkodGhpcywgdHlw
ZSkpCisgICAgICAgICAgICB8fCAodHlwZW9mIHR5cGUgPT0gImZ1bmN0aW9uIiAmJiB0eXBlKHRo
aXMpKQorICAgICAgICAgICAgfHwgdHlwZSA9PSB0aGlzLnR5cGUpCisgICAgICAgICAgICByZXR1
cm4gdHJ1ZTsKKyAgICB9CisgICAgcmV0dXJuIGZhbHNlOworfQorCisvLyBDcmVhdGVzIGEgbmV3
IHRva2VuIG9iamVjdCBhbmQgY29waWVzIGFsbCB0aGUgcHJvcGVydGllcyBpbiAidmFsdWUiIHRv
IHRoZSBuZXcgdG9rZW4uCitmdW5jdGlvbiBjcmVhdGVUb2tlbih0eXBlLCB2YWx1ZSkgeworICAg
IHZhciB0b2tlbiA9IG5ldyBUb2tlbih0eXBlKTsKKyAgICBpZiAodmFsdWUpIHsKKyAgICAgICAg
Zm9yICh2YXIgaSBpbiB2YWx1ZSkKKyAgICAgICAgICAgIGlmICh2YWx1ZS5oYXNPd25Qcm9wZXJ0
eShpKSkKKyAgICAgICAgICAgICAgICB0b2tlbltpXSA9IHZhbHVlW2ldOworICAgIH0KKyAgICBy
ZXR1cm4gdG9rZW47Cit9CisKKy8vIFRva2VuaXplcyB0aGUgc3RyaW5nIGludG8gVG9rZW5zIG9m
IHR5cGVzIFt1cmxzLCBmbG9hdHMsIGludGVnZXJzLCBrZXl3b3JkcywgIiwiLCAiKCIsICIpIiBh
bmQgIi4iXS4KK2Z1bmN0aW9uIHRva2VuaXplU3RyaW5nKHMpCit7CisgICAgdmFyIHRva2VuaXpl
ciA9IG5ldyBSZWdFeHAoWworICAgICAgICAidXJsXFwoXFxzKiguKj8pXFxzKlxcKSIsIC8vIHVy
bCgpIC0gMQorICAgICAgICAiKCg/OltcXCstXT8pXFxkKlxcLlxcZCspIiwgLy8gZmxvYXRzIC0g
MgorICAgICAgICAiKCg/OltcXCstXT8pXFxkKykiLCAvLyBpbnRlZ2VycyAtIDMKKyAgICAgICAg
IihbXFx3LV1bXFx3XFxkLV0qKSIsIC8vIGtleXdvcmRzIC0gNAorICAgICAgICAiKFssXFwuXFwo
XFwpXSkiIC8vIHB1bmN0dWF0aW9uIC0gNQorICAgIF0uam9pbigifCIpLCAiZyIpOworCisgICAg
dmFyIG1hdGNoLCB0b2tlbnMgPSBbXTsKKyAgICB3aGlsZSAobWF0Y2ggPSB0b2tlbml6ZXIuZXhl
YyhzKSkgeworICAgICAgICBpZiAobWF0Y2hbMV0gIT09IHVuZGVmaW5lZCkKKyAgICAgICAgICAg
IHRva2Vucy5wdXNoKGNyZWF0ZVRva2VuKCJ1cmwiLCB7dmFsdWU6IG1hdGNoWzFdfSkpOworICAg
ICAgICBlbHNlIGlmIChtYXRjaFsyXSAhPT0gdW5kZWZpbmVkKQorICAgICAgICAgICAgdG9rZW5z
LnB1c2goY3JlYXRlVG9rZW4oImZsb2F0Iiwge3ZhbHVlOiBwYXJzZUZsb2F0KG1hdGNoWzJdKX0p
KTsKKyAgICAgICAgZWxzZSBpZiAobWF0Y2hbM10gIT09IHVuZGVmaW5lZCkKKyAgICAgICAgICAg
IHRva2Vucy5wdXNoKGNyZWF0ZVRva2VuKCJpbnRlZ2VyIiwge3ZhbHVlOiBwYXJzZUludChtYXRj
aFszXSl9KSk7CisgICAgICAgIGVsc2UgaWYgKG1hdGNoWzRdICE9PSB1bmRlZmluZWQpCisgICAg
ICAgICAgICB0b2tlbnMucHVzaChjcmVhdGVUb2tlbigia2V5d29yZCIsIHt2YWx1ZTogbWF0Y2hb
NF19KSk7CisgICAgICAgIGVsc2UgaWYgKG1hdGNoWzVdICE9PSB1bmRlZmluZWQpCisgICAgICAg
ICAgICB0b2tlbnMucHVzaChjcmVhdGVUb2tlbihtYXRjaFs1XSkpOworICAgIH0KKyAgICByZXR1
cm4gdG9rZW5zOworfQorCisvLyBDaGVja3MgaWYgdGhlIHRva2VuIGlzIGEgbnVtYmVyLiBDYW4g
YmUgdXNlZCBpbiBjb21iaW5hdGlvbiB3aXRoIHRoZSAiVG9rZW4uaXNBIiBtZXRob2QuCitmdW5j
dGlvbiBudW1iZXIodG9rZW4pCit7CisgICAgcmV0dXJuIHRva2VuLnR5cGUgPT0gImZsb2F0IiB8
fCB0b2tlbi50eXBlID09ICJpbnRlZ2VyIjsKK30KKworLy8gSGVscGVyIGNsYXNzIHRvIGl0ZXJh
dGUgb24gdGhlIHRva2VuIHN0cmVhbS4gSXQgd2lsbCBhZGQgYW4gImVuZCIKKy8vIHRva2VuIGF0
IHRoZSBlbmQgdG8gbWFrZSBpdCBlYXNpZXIgdG8gdXNlIHRoZSAiYWhlYWQiIGZ1bmN0aW9uCisv
LyB3aXRob3V0IGNoZWNraW5nIGlmIGl0J3MgdGhlIGxhc3QgdG9rZW4gaW4gdGhlIHN0cmVhbS4K
K2Z1bmN0aW9uIFRva2VuU3RyZWFtKHRva2VucykgeworICAgIHRoaXMudG9rZW5zID0gdG9rZW5z
OworICAgIHRoaXMudG9rZW5zLnB1c2gobmV3IFRva2VuKCJlbmQiKSk7CisgICAgdGhpcy50b2tl
bkluZGV4ID0gMDsKK30KKworVG9rZW5TdHJlYW0ucHJvdG90eXBlLmN1cnJlbnQgPSBmdW5jdGlv
bigpIAoreyAKKyAgICByZXR1cm4gdGhpcy50b2tlbnNbdGhpcy50b2tlbkluZGV4XTsgCit9CisK
K1Rva2VuU3RyZWFtLnByb3RvdHlwZS5haGVhZCA9IGZ1bmN0aW9uKCkgCit7CisgICAgcmV0dXJu
IHRoaXMudG9rZW5zW3RoaXMudG9rZW5JbmRleCArIDFdOyAKK30KKworLy8gU2tpcHMgdGhlIGN1
cnJlbnQgdG9rZW4gb25seSBpZiBpdCBtYXRjaGVzIHRoZSAidHlwZU1hdGNoZXIiLiBPdGhlcndp
c2UgaXQgdGhyb3dzIGFuIGVycm9yLgorVG9rZW5TdHJlYW0ucHJvdG90eXBlLnNraXAgPSBmdW5j
dGlvbih0eXBlTWF0Y2hlcikKK3sKKyAgICBpZiAoIXR5cGVNYXRjaGVyIHx8IHRoaXMuYWhlYWQo
KS5pc0EodHlwZU1hdGNoZXIpKSB7CisgICAgICAgIHZhciB0b2tlbiA9IHRoaXMuY3VycmVudCgp
OworICAgICAgICArK3RoaXMudG9rZW5JbmRleDsKKyAgICAgICAgcmV0dXJuIHRva2VuOworICAg
IH0KKyAgICB0aHJvdyBuZXcgRXJyb3IoIkNhbm5vdCB1c2UgIiArIEpTT04uc3RyaW5naWZ5KHR5
cGVNYXRjaGVyKSArICIgdG8gc2tpcCBvdmVyICIgKyBKU09OLnN0cmluZ2lmeSh0aGlzLmFoZWFk
KCkpKTsKK30KKworLy8gU2tpcHMgdGhlIGN1cnJlbnQgdG9rZW4sIG9ubHkgaWYgaXQgbWF0Y2hl
cyB0aGUgInR5cGVNYXRjaGVyIi4gTWFrZXMgaXQgZWFzeSB0byBza2lwIG92ZXIgY29tbWEgdG9r
ZW5zLgorVG9rZW5TdHJlYW0ucHJvdG90eXBlLnNraXBJZk5lZWRlZCA9IGZ1bmN0aW9uKHR5cGVN
YXRjaGVyKQoreworICAgIGlmICh0aGlzLmFoZWFkKCkgJiYgdGhpcy5haGVhZCgpLmlzQSh0eXBl
TWF0Y2hlcikpCisgICAgICAgICsrdGhpcy50b2tlbkluZGV4OworfQorCisvLyBDcmVhdGVzIGEg
bmV3ICJmdW5jdGlvbiIgbm9kZS4gSXQgZXhwZWN0cyB0aGF0IHRoZSBjdXJyZW50IHRva2VuIGlz
IHRoZSBmdW5jdGlvbiBuYW1lLgorZnVuY3Rpb24gcGFyc2VGdW5jdGlvbihtKQoreworICAgIHZh
ciBmdW5jdGlvbk9iamVjdCA9IHsKKyAgICAgICAgdHlwZTogImZ1bmN0aW9uIiwKKyAgICAgICAg
bmFtZTogbS5za2lwKCkudmFsdWUKKyAgICB9OworICAgIG0uc2tpcCgiKCIpOworICAgIGZ1bmN0
aW9uT2JqZWN0LmFyZ3VtZW50cyA9IHBhcnNlTGlzdChtLCBbIikiLCAiZW5kIl0pOworICAgIG0u
c2tpcCgiKSIpOworICAgIHJldHVybiBmdW5jdGlvbk9iamVjdDsKK30KKworLy8gQ3JlYXRlcyBh
IG5ldyAicGFyYW1ldGVyIiBub2RlLiBJdCBleHBlY3RzIHRoYXQgdGhlIGN1cnJlbnQgdG9rZW4g
aXMgdGhlIHBhcmFtZXRlciBuYW1lLgorLy8gSXQgY29uc3VtZXMgZXZlcnl0aGluZyBiZWZvcmUg
dGhlIGZvbGxvd2luZyBjb21tYS4KK2Z1bmN0aW9uIHBhcnNlUGFyYW1ldGVyKG0pCit7CisgICAg
dmFyIGZ1bmN0aW9uT2JqZWN0ID0geworICAgICAgICB0eXBlOiAicGFyYW1ldGVyIiwKKyAgICAg
ICAgbmFtZTogbS5za2lwKCkudmFsdWUKKyAgICB9OworICAgIGZ1bmN0aW9uT2JqZWN0LnZhbHVl
ID0gcGFyc2VMaXN0KG0sIFsiLCIsICJlbmQiXSk7CisgICAgbS5za2lwSWZOZWVkZWQoIiwiKTsK
KyAgICByZXR1cm4gZnVuY3Rpb25PYmplY3Q7Cit9CisKKy8vIENvbnN1bWVzIGEgbGlzdCBvZiB0
b2tlbnMgYmVmb3JlIHJlYWNoaW5nIHRoZSAiZW5kVG9rZW4iIGFuZCByZXR1cm5zIGFuIGFycmF5
IHdpdGggYWxsIHRoZSBwYXJzZWQgaXRlbXMuCisvLyBNYWtlcyB0aGUgZm9sbG93aW5nIGFzc3Vt
cHRpb25zOgorLy8gLSBpZiBhIGtleXdvcmQgaXMgZm9sbG93ZWQgYnkgIigiIHRoZW4gaXQgaXMg
YSBzdGFydCBvZiBmdW5jdGlvbgorLy8gLSBpZiBhIGtleXdvcmQgaXMgbm90IGZvbGxvd2VkIGJ5
ICIsIiBpdCBpcyBhIHBhcmFtZXRlcgorLy8gS2V5d29yZHMgdGhhdCBkbyBub3QgbWF0Y2ggZWl0
aGVyIG9mIHRoZSBwcmV2aW91cyBydWxlcyBhbmQgdG9rZW5zIGxpa2UgbnVtYmVyIGFuZCB1cmwg
YXJlIGp1c3QgY2xvbmVkLgorZnVuY3Rpb24gcGFyc2VMaXN0KG0sIGVuZFRva2VuKQoreworICAg
IHZhciByZXN1bHQgPSBbXSwgdG9rZW47CisgICAgd2hpbGUgKCh0b2tlbiA9IG0uY3VycmVudCgp
KSAmJiAhdG9rZW4uaXNBKGVuZFRva2VuKSkgeworICAgICAgICBpZiAodG9rZW4uaXNBKCJrZXl3
b3JkIikpIHsKKyAgICAgICAgICAgIGlmIChtLmFoZWFkKCkuaXNBKCIoIikpCisgICAgICAgICAg
ICAgICAgcmVzdWx0LnB1c2gocGFyc2VGdW5jdGlvbihtKSk7CisgICAgICAgICAgICBlbHNlIGlm
IChtLmFoZWFkKCkuaXNBKCIsIiwgZW5kVG9rZW4pKSB7CisgICAgICAgICAgICAgICAgcmVzdWx0
LnB1c2goeworICAgICAgICAgICAgICAgICAgICB0eXBlOiAia2V5d29yZCIsIAorICAgICAgICAg
ICAgICAgICAgICB2YWx1ZTogbS5za2lwKCkudmFsdWUKKyAgICAgICAgICAgICAgICB9KTsKKyAg
ICAgICAgICAgIH0gZWxzZQorICAgICAgICAgICAgICAgIHJlc3VsdC5wdXNoKHBhcnNlUGFyYW1l
dGVyKG0pKTsKKyAgICAgICAgfSBlbHNlIGlmICh0b2tlbi5pc0EobnVtYmVyKSkgeworICAgICAg
ICAgICAgcmVzdWx0LnB1c2goeworICAgICAgICAgICAgICAgIHR5cGU6ICJudW1iZXIiLAorICAg
ICAgICAgICAgICAgIHZhbHVlOiBtLnNraXAoKS52YWx1ZQorICAgICAgICAgICAgfSk7CisgICAg
ICAgIH0gZWxzZSBpZiAodG9rZW4uaXNBKCJ1cmwiKSkgeworICAgICAgICAgICAgcmVzdWx0LnB1
c2goeworICAgICAgICAgICAgICAgIHR5cGU6ICJ1cmwiLAorICAgICAgICAgICAgICAgIHZhbHVl
OiBtLnNraXAoKS52YWx1ZQorICAgICAgICAgICAgfSk7CisgICAgICAgIH0gZWxzZSBpZiAodG9r
ZW4uaXNBKCIsIikpCisgICAgICAgICAgICBtLnNraXAoKTsKKyAgICAgICAgZWxzZSAKKyAgICAg
ICAgICAgIHRocm93ICJVbmV4cGVjdGVkIHRva2VuICIgKyBKU09OLnN0cmluZ2lmeSh0b2tlbikg
KyAiIGluIGEgbGlzdC4iOworICAgIH0KKyAgICByZXR1cm4gcmVzdWx0OworfQorCitmdW5jdGlv
biB0b2tlbnNUb1ZhbHVlcyh0b2tlbnMpCit7CisgICAgdmFyIG0gPSBuZXcgVG9rZW5TdHJlYW0o
dG9rZW5zKTsKKyAgICByZXR1cm4gcGFyc2VMaXN0KG0sICJlbmQiKTsKK30KKworLy8gRXh0cmFj
dHMgYSBwYXJhbWV0ZXJzIGFycmF5IGZyb20gdGhlIHBhcmFtZXRlcnMgc3RyaW5nIG9mIHRoZSBj
dXN0b20gZmlsdGVyIGZ1bmN0aW9uLgorZnVuY3Rpb24gcGFyc2VDdXN0b21GaWx0ZXJQYXJhbWV0
ZXJzKHMpCit7CisgICAgcmV0dXJuIHRva2Vuc1RvVmFsdWVzKHRva2VuaXplU3RyaW5nKHMpKTsK
K30KKworLy8gTmVlZCB0byByZW1vdmUgdGhlIGJhc2UgVVJMIHRvIGF2b2lkIGhhdmluZyBsb2Nh
bCBwYXRocyBpbiB0aGUgZXhwZWN0ZWQgcmVzdWx0cy4KK2Z1bmN0aW9uIHJlbW92ZUJhc2VVUkwo
c3JjKSB7CisgICAgdmFyIHVybFJlZ2V4cCA9IC91cmxcKChbXlwpXSopXCkvZzsKKyAgICByZXR1
cm4gc3JjLnJlcGxhY2UodXJsUmVnZXhwLCBmdW5jdGlvbihtYXRjaCwgdXJsKSB7CisgICAgICAg
IHJldHVybiAidXJsKCIgKyB1cmwuc3Vic3RyKHVybC5sYXN0SW5kZXhPZigiLyIpICsgMSkgKyAi
KSI7CisgICAgfSk7Cit9CisKKy8vIFBhcnNlcyB0aGUgcGFyYW1ldGVycyBvZiB0aGUgY3VzdG9t
IGZpbHRlciBmdW5jdGlvbiBhbmQgcmV0dXJucyBpdCB1c2luZyB0aGUgZm9sbG93aW5nIG9yZGVy
OgorLy8gLSBJZiBwYXJhbWV0ZXJzIGhhdmUgZGlmZmVyZW50IHR5cGVzIChpZS4gdXJsLCBudW1i
ZXIsIG5hbWVkIHBhcmFtZXRlciksIHRoZSBhbHBoYWJldGljYWwgb3JkZXIgb2YgdGhlICJ0eXBl
IiBpcyB1c2VkLgorLy8gLSBJZiBwYXJhbWV0ZXJzIGFyZSBvZiB0eXBlICJwYXJhbWV0ZXIiIHRo
ZSBhbHBoYWJldGljYWwgb3JkZXIgb2YgdGhlIHBhcmFtZXRlciBuYW1lcyBpcyB1c2VkLgorLy8g
LSBJZiBwYXJhbWV0ZXJzIGFyZSBvZiBvdGhlciB0eXBlcywgdGhlbiB0aGUgdmFsdWUgaXMgdXNl
ZCB0byBvcmRlciB0aGVtIGFscGhhYmV0aWNhbC4KKy8vIFRoZSBvcmRlciBpcyBpbXBvcnRhbnQg
dG8gbWFrZSBpdCBlYXN5IHRvIGNvbXBhcmUgdHdvIGN1c3RvbSBmaWx0ZXJzLCB0aGF0IGhhdmUg
ZXhhY3RseSB0aGUgc2FtZSBwYXJhbWV0ZXJzLCAKKy8vIGJ1dCB3aXRoIHBvdGVudGlhbGx5IGRp
ZmZlcmVudCAibmFtZWQgcGFyYW1ldGVyIiB2YWx1ZXMuCitmdW5jdGlvbiBnZXRDdXN0b21GaWx0
ZXJQYXJhbWV0ZXJzKHMpIAoreworICAgIHJldHVybiBwYXJzZUN1c3RvbUZpbHRlclBhcmFtZXRl
cnMocmVtb3ZlQmFzZVVSTChzKSkuc29ydChmdW5jdGlvbihhLCBiKSB7IAorICAgICAgICBpZiAo
YS50eXBlICE9IGIudHlwZSkgCisgICAgICAgICAgICByZXR1cm4gYS50eXBlLmxvY2FsZUNvbXBh
cmUoYi50eXBlKTsKKyAgICAgICAgaWYgKGEudHlwZSA9PSAicGFyYW1ldGVyIikKKyAgICAgICAg
ICAgIHJldHVybiBhLm5hbWUubG9jYWxlQ29tcGFyZShiLm5hbWUpOworICAgICAgICByZXR1cm4g
YS52YWx1ZS50b1N0cmluZygpLmxvY2FsZUNvbXBhcmUoYi52YWx1ZS50b1N0cmluZygpKTsKKyAg
ICB9KTsKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9X
ZWJDb3JlL0NoYW5nZUxvZwppbmRleCA1MmQzZDg0Li5lY2UwYzYwIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0x
LDMgKzEsNDUgQEAKKzIwMTItMDQtMjcgIEFsZXhhbmRydSBDaGljdWxpdGEgIDxhY2hpY3VAYWRv
YmUuY29tPgorCisgICAgICAgIFtDU1MgU2hhZGVyc10gSW1wbGVtZW50IENTUyBBbmltYXRpb25z
IGFuZCBUcmFuc2l0aW9ucyBmb3IgQ1NTIFNoYWRlcnMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTcxNDA2CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgSSd2ZSBpbXBsZW1lbnRlZCB0aGUgYmxlbmQgZnVuY3Rp
b24gZm9yIHRoZSBDdXN0b21GaWx0ZXJPcGVyYXRpb24uIFRoaXMgc2hvdWxkIGVuYWJsZSBhbmlt
YXRpb25zIGZvciBDU1MgU2hhZGVycy4KKyAgICAgICAgQ3VycmVudGx5LCBqdXN0IGZsb2F0cyBh
cmUgaW1wbGVtZW50ZWQuIElmIGFueSBvZiB0aGUgZmlsdGVyIGF0dHJpYnV0ZXMgbGlrZSBzaGFk
ZXIsIG1lc2ggc2l6ZSBvciBib3ggbW9kZSBhcmUgZGlmZmVyZW50LCAKKyAgICAgICAgdGhlIGZh
bGxiYWNrIGlzIHRvIHVzZSB0aGUgInRvIiBwYXJ0IG9mIHRoZSBhbmltYXRpb24gaW5zdGVhZC4g
SWYgb3RoZXIgc2hhZGVyIHBhcmFtZXRlcnMgZG8gbm90IG1hdGNoLCBpdCB3aWxsIG1lcmdlIHRo
ZSBwYXJhbWV0ZXIgdmFsdWVzCisgICAgICAgIGJldHdlZW4gdGhlICJmcm9tIiBhbmQgInRvIiBz
dGF0ZXMuCisKKyAgICAgICAgVGVzdDogY3NzMy9maWx0ZXJzL2N1c3RvbS9jdXN0b20tZmlsdGVy
LWFuaW1hdGlvbi5odG1sCisKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0N1
c3RvbUZpbHRlck51bWJlclBhcmFtZXRlci5oOgorICAgICAgICAoV2ViQ29yZTo6Q3VzdG9tRmls
dGVyTnVtYmVyUGFyYW1ldGVyOjpibGVuZCk6CisgICAgICAgIChDdXN0b21GaWx0ZXJOdW1iZXJQ
YXJhbWV0ZXIpOgorICAgICAgICAoV2ViQ29yZTo6Q3VzdG9tRmlsdGVyTnVtYmVyUGFyYW1ldGVy
OjpvcGVyYXRvcj09KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0N1c3Rv
bUZpbHRlck9wZXJhdGlvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjplcXVhbEN1c3RvbUZpbHRl
clBhcmFtZXRlcnMpOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb3JlOjpjaGVj
a0N1c3RvbUZpbHRlclBhcmFtZXRlcnNPcmRlcik6CisgICAgICAgIChXZWJDb3JlOjpibGVuZEN1
c3RvbUZpbHRlclBhcmFtZXRlcnMpOgorICAgICAgICAoV2ViQ29yZTo6Q3VzdG9tRmlsdGVyT3Bl
cmF0aW9uOjpDdXN0b21GaWx0ZXJPcGVyYXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6Q3VzdG9t
RmlsdGVyT3BlcmF0aW9uOjpibGVuZCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZmls
dGVycy9DdXN0b21GaWx0ZXJPcGVyYXRpb24uaDoKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAg
ICAoQ3VzdG9tRmlsdGVyT3BlcmF0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OkN1c3RvbUZpbHRl
ck9wZXJhdGlvbjo6b3BlcmF0b3I9PSk6CisgICAgICAgIChXZWJDb3JlOjpDdXN0b21GaWx0ZXJP
cGVyYXRpb246Om9wZXJhdG9yIT0pOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2ZpbHRl
cnMvQ3VzdG9tRmlsdGVyUGFyYW1ldGVyLmg6CisgICAgICAgIChDdXN0b21GaWx0ZXJQYXJhbWV0
ZXIpOgorICAgICAgICAoV2ViQ29yZTo6Q3VzdG9tRmlsdGVyUGFyYW1ldGVyOjppc1NhbWVUeXBl
KToKKyAgICAgICAgKFdlYkNvcmU6OkN1c3RvbUZpbHRlclBhcmFtZXRlcjo6b3BlcmF0b3I9PSk6
CisgICAgICAgIChXZWJDb3JlOjpDdXN0b21GaWx0ZXJQYXJhbWV0ZXI6Om9wZXJhdG9yIT0pOgor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvQ3VzdG9tRmlsdGVyUHJvZ3JhbS5o
OgorICAgICAgICAqIHJlbmRlcmluZy9zdHlsZS9TdHlsZUN1c3RvbUZpbHRlclByb2dyYW0uaDoK
KyAgICAgICAgKFN0eWxlQ3VzdG9tRmlsdGVyUHJvZ3JhbSk6CisgICAgICAgIChXZWJDb3JlOjpT
dHlsZUN1c3RvbUZpbHRlclByb2dyYW06OmNhY2hlZFZlcnRleFNoYWRlcik6CisgICAgICAgIChX
ZWJDb3JlOjpTdHlsZUN1c3RvbUZpbHRlclByb2dyYW06OmNhY2hlZEZyYWdtZW50U2hhZGVyKToK
KyAgICAgICAgKFdlYkNvcmU6OlN0eWxlQ3VzdG9tRmlsdGVyUHJvZ3JhbTo6b3BlcmF0b3I9PSk6
CisKIDIwMTItMDQtMjUgIEFscGhhIExhbSAgPGhjbGFtQGNocm9taXVtLm9yZz4KIAogICAgICAg
ICBVbnJldmlld2VkIGJ1aWxkIGZpeC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2ZpbHRlcnMvQ3VzdG9tRmlsdGVyTnVtYmVyUGFyYW1ldGVyLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0N1c3RvbUZpbHRlck51bWJlclBh
cmFtZXRlci5oCmluZGV4IDBhZGUxNzMuLjI3NzBiNGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvQ3VzdG9tRmlsdGVyTnVtYmVyUGFyYW1ldGVy
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9DdXN0b21G
aWx0ZXJOdW1iZXJQYXJhbWV0ZXIuaApAQCAtNDgsNiArNDgsMjcgQEAgcHVibGljOgogCiAgICAg
dm9pZCBhZGRWYWx1ZShkb3VibGUgdmFsdWUpIHsgbV9kYXRhLmFwcGVuZCh2YWx1ZSk7IH0KICAg
ICAKKyAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8Q3VzdG9tRmlsdGVyUGFyYW1ldGVyPiBibGVuZChj
b25zdCBDdXN0b21GaWx0ZXJQYXJhbWV0ZXIqIGZyb20sIGRvdWJsZSBwcm9ncmVzcykKKyAgICB7
CisgICAgICAgIGlmICghZnJvbSB8fCAhaXNTYW1lVHlwZSgqZnJvbSkpCisgICAgICAgICAgICBy
ZXR1cm4gdGhpczsKKyAgICAgICAgY29uc3QgQ3VzdG9tRmlsdGVyTnVtYmVyUGFyYW1ldGVyKiBm
cm9tTnVtYmVyID0gc3RhdGljX2Nhc3Q8Y29uc3QgQ3VzdG9tRmlsdGVyTnVtYmVyUGFyYW1ldGVy
Kj4oZnJvbSk7CisgICAgICAgIGlmIChzaXplKCkgIT0gZnJvbU51bWJlci0+c2l6ZSgpKQorICAg
ICAgICAgICAgcmV0dXJuIHRoaXM7CisgICAgICAgIFJlZlB0cjxDdXN0b21GaWx0ZXJOdW1iZXJQ
YXJhbWV0ZXI+IHJlc3VsdCA9IEN1c3RvbUZpbHRlck51bWJlclBhcmFtZXRlcjo6Y3JlYXRlKG5h
bWUoKSk7CisgICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgc2l6ZSgpOyArK2kpCisgICAg
ICAgICAgICByZXN1bHQtPmFkZFZhbHVlKFdlYkNvcmU6OmJsZW5kKGZyb21OdW1iZXItPnZhbHVl
QXQoaSksIHZhbHVlQXQoaSksIHByb2dyZXNzKSk7CisgICAgICAgIHJldHVybiByZXN1bHQucmVs
ZWFzZSgpOworICAgIH0KKyAgICAKKyAgICB2aXJ0dWFsIGJvb2wgb3BlcmF0b3I9PShjb25zdCBD
dXN0b21GaWx0ZXJQYXJhbWV0ZXImIG8pIGNvbnN0CisgICAgeworICAgICAgICBpZiAoIWlzU2Ft
ZVR5cGUobykpCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIGNvbnN0IEN1c3Rv
bUZpbHRlck51bWJlclBhcmFtZXRlciogb3RoZXIgPSBzdGF0aWNfY2FzdDxjb25zdCBDdXN0b21G
aWx0ZXJOdW1iZXJQYXJhbWV0ZXIqPigmbyk7CisgICAgICAgIHJldHVybiBtX2RhdGEgPT0gb3Ro
ZXItPm1fZGF0YTsKKyAgICB9CisgICAgCiBwcml2YXRlOgogICAgIEN1c3RvbUZpbHRlck51bWJl
clBhcmFtZXRlcihjb25zdCBTdHJpbmcmIG5hbWUpCiAgICAgICAgIDogQ3VzdG9tRmlsdGVyUGFy
YW1ldGVyKE5VTUJFUiwgbmFtZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2ZpbHRlcnMvQ3VzdG9tRmlsdGVyT3BlcmF0aW9uLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvQ3VzdG9tRmlsdGVyT3BlcmF0aW9uLmNwcApp
bmRleCBjMDVhNDBmLi5mNWM4MTcyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9maWx0ZXJzL0N1c3RvbUZpbHRlck9wZXJhdGlvbi5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9DdXN0b21GaWx0ZXJPcGVyYXRpb24u
Y3BwCkBAIC00MCw2ICs0MCw2MCBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKK2Jvb2wgY3Vz
dG9tRmlsdGVyUGFyYW1ldGVyc0VxdWFsKGNvbnN0IEN1c3RvbUZpbHRlclBhcmFtZXRlckxpc3Qm
IGxpc3RBLCBjb25zdCBDdXN0b21GaWx0ZXJQYXJhbWV0ZXJMaXN0JiBsaXN0QikKK3sKKyAgICBp
ZiAobGlzdEEuc2l6ZSgpICE9IGxpc3RCLnNpemUoKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOwor
ICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbGlzdEEuc2l6ZSgpOyArK2kpIHsKKyAgICAgICAg
aWYgKGxpc3RBLmF0KGkpLmdldCgpICE9IGxpc3RCLmF0KGkpLmdldCgpIAorICAgICAgICAgICAg
JiYgKmxpc3RBLmF0KGkpLmdldCgpICE9ICpsaXN0Qi5hdChpKS5nZXQoKSkKKyAgICAgICAgICAg
IHJldHVybiBmYWxzZTsKKyAgICB9CisgICAgcmV0dXJuIHRydWU7Cit9CisKKyNpZiAhQVNTRVJU
X0RJU0FCTEVECitzdGF0aWMgYm9vbCBjaGVja0N1c3RvbUZpbHRlclBhcmFtZXRlcnNPcmRlcihj
b25zdCBDdXN0b21GaWx0ZXJQYXJhbWV0ZXJMaXN0JiBwYXJhbWV0ZXJzKQoreworICAgIGZvciAo
dW5zaWduZWQgaSA9IDE7IGkgPCBwYXJhbWV0ZXJzLnNpemUoKTsgKytpKSB7CisgICAgICAgIC8v
IEJyZWFrIGZvciBlcXVhbCBvciBub3Qtc29ydGVkIHBhcmFtZXRlcnMuCisgICAgICAgIGlmICgh
Y29kZVBvaW50Q29tcGFyZUxlc3NUaGFuKHBhcmFtZXRlcnMuYXQoaSAtIDEpLT5uYW1lKCksIHBh
cmFtZXRlcnMuYXQoaSktPm5hbWUoKSkpCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAg
fQorICAgIHJldHVybiB0cnVlOworfQorI2VuZGlmCisKK3ZvaWQgYmxlbmRDdXN0b21GaWx0ZXJQ
YXJhbWV0ZXJzKGNvbnN0IEN1c3RvbUZpbHRlclBhcmFtZXRlckxpc3QmIGZyb21MaXN0LCBjb25z
dCBDdXN0b21GaWx0ZXJQYXJhbWV0ZXJMaXN0JiB0b0xpc3QsIGRvdWJsZSBwcm9ncmVzcywgQ3Vz
dG9tRmlsdGVyUGFyYW1ldGVyTGlzdCYgcmVzdWx0TGlzdCkKK3sKKyAgICAvLyBUaGlzIG1ldGhv
ZCBleHBlY3RzIGJvdGggbGlzdHMgdG8gYmUgc29ydGVkIGJ5IHBhcmFtZXRlciBuYW1lIGFuZCB0
aGUgcmVzdWx0IGxpc3QgaXMgYWxzbyBzb3J0ZWQuCisgICAgQVNTRVJUKGNoZWNrQ3VzdG9tRmls
dGVyUGFyYW1ldGVyc09yZGVyKGZyb21MaXN0KSk7CisgICAgQVNTRVJUKGNoZWNrQ3VzdG9tRmls
dGVyUGFyYW1ldGVyc09yZGVyKHRvTGlzdCkpOworICAgIHNpemVfdCBmcm9tTGlzdEluZGV4ID0g
MCwgdG9MaXN0SW5kZXggPSAwOworICAgIHdoaWxlIChmcm9tTGlzdEluZGV4IDwgZnJvbUxpc3Qu
c2l6ZSgpICYmIHRvTGlzdEluZGV4IDwgdG9MaXN0LnNpemUoKSkgeworICAgICAgICBDdXN0b21G
aWx0ZXJQYXJhbWV0ZXIqIHBhcmFtRnJvbSA9IGZyb21MaXN0LmF0KGZyb21MaXN0SW5kZXgpLmdl
dCgpOworICAgICAgICBDdXN0b21GaWx0ZXJQYXJhbWV0ZXIqIHBhcmFtVG8gPSB0b0xpc3QuYXQo
dG9MaXN0SW5kZXgpLmdldCgpOworICAgICAgICBpZiAocGFyYW1Gcm9tLT5uYW1lKCkgPT0gcGFy
YW1Uby0+bmFtZSgpKSB7CisgICAgICAgICAgICByZXN1bHRMaXN0LmFwcGVuZChwYXJhbVRvLT5i
bGVuZChwYXJhbUZyb20sIHByb2dyZXNzKSk7CisgICAgICAgICAgICArK2Zyb21MaXN0SW5kZXg7
CisgICAgICAgICAgICArK3RvTGlzdEluZGV4OworICAgICAgICAgICAgY29udGludWU7CisgICAg
ICAgIH0KKyAgICAgICAgaWYgKGNvZGVQb2ludENvbXBhcmVMZXNzVGhhbihwYXJhbUZyb20tPm5h
bWUoKSwgcGFyYW1Uby0+bmFtZSgpKSkgeworICAgICAgICAgICAgcmVzdWx0TGlzdC5hcHBlbmQo
cGFyYW1Gcm9tKTsKKyAgICAgICAgICAgICsrZnJvbUxpc3RJbmRleDsKKyAgICAgICAgICAgIGNv
bnRpbnVlOworICAgICAgICB9CisgICAgICAgIHJlc3VsdExpc3QuYXBwZW5kKHBhcmFtVG8pOwor
ICAgICAgICArK3RvTGlzdEluZGV4OworICAgIH0KKyAgICBmb3IgKDsgZnJvbUxpc3RJbmRleCA8
IGZyb21MaXN0LnNpemUoKTsgKytmcm9tTGlzdEluZGV4KQorICAgICAgICByZXN1bHRMaXN0LmFw
cGVuZChmcm9tTGlzdC5hdChmcm9tTGlzdEluZGV4KSk7CisgICAgZm9yICg7IHRvTGlzdEluZGV4
IDwgdG9MaXN0LnNpemUoKTsgKyt0b0xpc3RJbmRleCkKKyAgICAgICAgcmVzdWx0TGlzdC5hcHBl
bmQodG9MaXN0LmF0KHRvTGlzdEluZGV4KSk7CisgICAgQVNTRVJUKGNoZWNrQ3VzdG9tRmlsdGVy
UGFyYW1ldGVyc09yZGVyKHJlc3VsdExpc3QpKTsKK30KKwogQ3VzdG9tRmlsdGVyT3BlcmF0aW9u
OjpDdXN0b21GaWx0ZXJPcGVyYXRpb24oUGFzc1JlZlB0cjxDdXN0b21GaWx0ZXJQcm9ncmFtPiBw
cm9ncmFtLCBjb25zdCBDdXN0b21GaWx0ZXJQYXJhbWV0ZXJMaXN0JiBzb3J0ZWRQYXJhbWV0ZXJz
LCB1bnNpZ25lZCBtZXNoUm93cywgdW5zaWduZWQgbWVzaENvbHVtbnMsIE1lc2hCb3hUeXBlIG1l
c2hCb3hUeXBlLCBNZXNoVHlwZSBtZXNoVHlwZSkKICAgICA6IEZpbHRlck9wZXJhdGlvbihDVVNU
T00pCiAgICAgLCBtX3Byb2dyYW0ocHJvZ3JhbSkKQEAgLTUwLDI0ICsxMDQsMzMgQEAgQ3VzdG9t
RmlsdGVyT3BlcmF0aW9uOjpDdXN0b21GaWx0ZXJPcGVyYXRpb24oUGFzc1JlZlB0cjxDdXN0b21G
aWx0ZXJQcm9ncmFtPiBwcm8KICAgICAsIG1fbWVzaFR5cGUobWVzaFR5cGUpCiB7CiAgICAgLy8g
TWFrZSBzdXJlIHRoYXQgdGhlIHBhcmFtZXRlcnMgYXJlIGFsd3lhcyBzb3J0ZWQgYnkgbmFtZS4g
V2UgdXNlIHRoYXQgdG8gbWVyZ2UgdHdvIEN1c3RvbUZpbHRlck9wZXJhdGlvbnMgaW4gYW5pbWF0
aW9ucy4KLSAgICBBU1NFUlQoaGFzU29ydGVkUGFyYW1ldGVyTGlzdCgpKTsKKyAgICBBU1NFUlQo
Y2hlY2tDdXN0b21GaWx0ZXJQYXJhbWV0ZXJzT3JkZXIobV9wYXJhbWV0ZXJzKSk7CiB9CiAgICAg
CiBDdXN0b21GaWx0ZXJPcGVyYXRpb246On5DdXN0b21GaWx0ZXJPcGVyYXRpb24oKQogewogfQog
Ci0jaWZuZGVmIE5ERUJVRwotYm9vbCBDdXN0b21GaWx0ZXJPcGVyYXRpb246Omhhc1NvcnRlZFBh
cmFtZXRlckxpc3QoKQorUGFzc1JlZlB0cjxGaWx0ZXJPcGVyYXRpb24+IEN1c3RvbUZpbHRlck9w
ZXJhdGlvbjo6YmxlbmQoY29uc3QgRmlsdGVyT3BlcmF0aW9uKiBmcm9tLCBkb3VibGUgcHJvZ3Jl
c3MsIGJvb2wgYmxlbmRUb1Bhc3N0aHJvdWdoKQogewotICAgIGZvciAodW5zaWduZWQgaSA9IDE7
IGkgPCBtX3BhcmFtZXRlcnMuc2l6ZSgpOyArK2kpIHsKLSAgICAgICAgLy8gQnJlYWsgZm9yIGVx
dWFsIG9yIG5vdC1zb3J0ZWQgcGFyYW1ldGVycy4KLSAgICAgICAgaWYgKCFjb2RlUG9pbnRDb21w
YXJlTGVzc1RoYW4obV9wYXJhbWV0ZXJzLmF0KGkgLSBpKS0+bmFtZSgpLCBtX3BhcmFtZXRlcnMu
YXQoaSktPm5hbWUoKSkpCi0gICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgfQotICAgIHJl
dHVybiB0cnVlOworICAgIC8vIEZJWE1FOiBUaGVyZSdzIG5vIHdheSB0byBkZWNpZGUgd2hhdCBp
cyB0aGUgInBhc3N0aHJvdWdoIGZpbHRlciIgZm9yIHNoYWRlcnMgdXNpbmcgdGhlIGN1cnJlbnQg
Q1NTIFN5bnRheC4KKyAgICAvLyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9ODQ5MDMKKyAgICAvLyBodHRwczovL3d3dy53My5vcmcvQnVncy9QdWJsaWMvc2hvd19idWcu
Y2dpP2lkPTE2ODYxCisgICAgaWYgKGJsZW5kVG9QYXNzdGhyb3VnaCB8fCAhZnJvbSB8fCAhZnJv
bS0+aXNTYW1lVHlwZSgqdGhpcykpCisgICAgICAgIHJldHVybiB0aGlzOworICAgIAorICAgIGNv
bnN0IEN1c3RvbUZpbHRlck9wZXJhdGlvbiogZnJvbU9wID0gc3RhdGljX2Nhc3Q8Y29uc3QgQ3Vz
dG9tRmlsdGVyT3BlcmF0aW9uKj4oZnJvbSk7CisgICAgaWYgKCptX3Byb2dyYW0uZ2V0KCkgIT0g
KmZyb21PcC0+bV9wcm9ncmFtLmdldCgpCisgICAgICAgIHx8IG1fbWVzaFJvd3MgIT0gZnJvbU9w
LT5tX21lc2hSb3dzCisgICAgICAgIHx8IG1fbWVzaENvbHVtbnMgIT0gZnJvbU9wLT5tX21lc2hD
b2x1bW5zCisgICAgICAgIHx8IG1fbWVzaEJveFR5cGUgIT0gZnJvbU9wLT5tX21lc2hCb3hUeXBl
CisgICAgICAgIHx8IG1fbWVzaFR5cGUgIT0gZnJvbU9wLT5tX21lc2hUeXBlKQorICAgICAgICBy
ZXR1cm4gdGhpczsKKyAgICAKKyAgICBDdXN0b21GaWx0ZXJQYXJhbWV0ZXJMaXN0IGFuaW1hdGVk
UGFyYW1ldGVyczsKKyAgICBibGVuZEN1c3RvbUZpbHRlclBhcmFtZXRlcnMoZnJvbU9wLT5tX3Bh
cmFtZXRlcnMsIG1fcGFyYW1ldGVycywgcHJvZ3Jlc3MsIGFuaW1hdGVkUGFyYW1ldGVycyk7Cisg
ICAgcmV0dXJuIEN1c3RvbUZpbHRlck9wZXJhdGlvbjo6Y3JlYXRlKG1fcHJvZ3JhbSwgYW5pbWF0
ZWRQYXJhbWV0ZXJzLCBtX21lc2hSb3dzLCBtX21lc2hDb2x1bW5zLCBtX21lc2hCb3hUeXBlLCBt
X21lc2hUeXBlKTsKIH0KLSNlbmRpZgogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvQ3VzdG9tRmls
dGVyT3BlcmF0aW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJz
L0N1c3RvbUZpbHRlck9wZXJhdGlvbi5oCmluZGV4IDM1MmUyNzIuLjYzNTA3ZjUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvQ3VzdG9tRmlsdGVy
T3BlcmF0aW9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVy
cy9DdXN0b21GaWx0ZXJPcGVyYXRpb24uaApAQCAtNDMsNiArNDMsOSBAQCBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiBjbGFzcyBDdXN0b21GaWx0ZXJQYXJhbWV0ZXI7CiB0eXBlZGVmIFZlY3RvcjxSZWZQ
dHI8Q3VzdG9tRmlsdGVyUGFyYW1ldGVyPiA+IEN1c3RvbUZpbHRlclBhcmFtZXRlckxpc3Q7CiAK
K2Jvb2wgY3VzdG9tRmlsdGVyUGFyYW1ldGVyc0VxdWFsKGNvbnN0IEN1c3RvbUZpbHRlclBhcmFt
ZXRlckxpc3QmLCBjb25zdCBDdXN0b21GaWx0ZXJQYXJhbWV0ZXJMaXN0Jik7Cit2b2lkIGJsZW5k
Q3VzdG9tRmlsdGVyUGFyYW1ldGVycyhjb25zdCBDdXN0b21GaWx0ZXJQYXJhbWV0ZXJMaXN0JiBs
aXN0RnJvbSwgY29uc3QgQ3VzdG9tRmlsdGVyUGFyYW1ldGVyTGlzdCYgbGlzdFRvLCBkb3VibGUg
cHJvZ3Jlc3MsIEN1c3RvbUZpbHRlclBhcmFtZXRlckxpc3QmIHJlc3VsdExpc3QpOworCiBjbGFz
cyBDdXN0b21GaWx0ZXJPcGVyYXRpb24gOiBwdWJsaWMgRmlsdGVyT3BlcmF0aW9uIHsKIHB1Ymxp
YzoKICAgICBlbnVtIE1lc2hCb3hUeXBlIHsKQEAgLTgzLDYgKzg2LDggQEAgcHVibGljOgogICAg
IAogICAgIHZpcnR1YWwgYm9vbCBhZmZlY3RzT3BhY2l0eSgpIGNvbnN0IHsgcmV0dXJuIHRydWU7
IH0KICAgICB2aXJ0dWFsIGJvb2wgbW92ZXNQaXhlbHMoKSBjb25zdCB7IHJldHVybiB0cnVlOyB9
CisgICAgCisgICAgdmlydHVhbCBQYXNzUmVmUHRyPEZpbHRlck9wZXJhdGlvbj4gYmxlbmQoY29u
c3QgRmlsdGVyT3BlcmF0aW9uKiBmcm9tLCBkb3VibGUgcHJvZ3Jlc3MsIGJvb2wgYmxlbmRUb1Bh
c3N0aHJvdWdoID0gZmFsc2UpOwogcHJpdmF0ZToKICAgICB2aXJ0dWFsIGJvb2wgb3BlcmF0b3I9
PShjb25zdCBGaWx0ZXJPcGVyYXRpb24mIG8pIGNvbnN0CiAgICAgewpAQCAtOTAsMTggKzk1LDE1
IEBAIHByaXZhdGU6CiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAgICAgICAgY29uc3Qg
Q3VzdG9tRmlsdGVyT3BlcmF0aW9uKiBvdGhlciA9IHN0YXRpY19jYXN0PGNvbnN0IEN1c3RvbUZp
bHRlck9wZXJhdGlvbio+KCZvKTsKLSAgICAgICAgcmV0dXJuIG1fcHJvZ3JhbS5nZXQoKSA9PSBv
dGhlci0+bV9wcm9ncmFtLmdldCgpCisgICAgICAgIHJldHVybiAqbV9wcm9ncmFtLmdldCgpID09
ICpvdGhlci0+bV9wcm9ncmFtLmdldCgpCiAgICAgICAgICAgICAgICAmJiBtX21lc2hSb3dzID09
IG90aGVyLT5tX21lc2hSb3dzCiAgICAgICAgICAgICAgICAmJiBtX21lc2hDb2x1bW5zID09IG90
aGVyLT5tX21lc2hDb2x1bW5zCiAgICAgICAgICAgICAgICAmJiBtX21lc2hCb3hUeXBlID09IG90
aGVyLT5tX21lc2hCb3hUeXBlCi0gICAgICAgICAgICAgICAmJiBtX21lc2hUeXBlID09IG90aGVy
LT5tX21lc2hUeXBlOworICAgICAgICAgICAgICAgJiYgbV9tZXNoVHlwZSA9PSBvdGhlci0+bV9t
ZXNoVHlwZQorICAgICAgICAgICAgICAgJiYgY3VzdG9tRmlsdGVyUGFyYW1ldGVyc0VxdWFsKG1f
cGFyYW1ldGVycywgb3RoZXItPm1fcGFyYW1ldGVycyk7CiAgICAgfQogICAgIAogICAgIEN1c3Rv
bUZpbHRlck9wZXJhdGlvbihQYXNzUmVmUHRyPEN1c3RvbUZpbHRlclByb2dyYW0+LCBjb25zdCBD
dXN0b21GaWx0ZXJQYXJhbWV0ZXJMaXN0JiwgdW5zaWduZWQgbWVzaFJvd3MsIHVuc2lnbmVkIG1l
c2hDb2x1bW5zLCBNZXNoQm94VHlwZSwgTWVzaFR5cGUpOwotICAgIAotI2lmbmRlZiBOREVCVUcK
LSAgICBib29sIGhhc1NvcnRlZFBhcmFtZXRlckxpc3QoKTsKLSNlbmRpZgogCiAgICAgUmVmUHRy
PEN1c3RvbUZpbHRlclByb2dyYW0+IG1fcHJvZ3JhbTsKICAgICBDdXN0b21GaWx0ZXJQYXJhbWV0
ZXJMaXN0IG1fcGFyYW1ldGVyczsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2ZpbHRlcnMvQ3VzdG9tRmlsdGVyUGFyYW1ldGVyLmggYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0N1c3RvbUZpbHRlclBhcmFtZXRlci5oCmluZGV4
IGU5YzA2MjkuLmU2NmUyMjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2ZpbHRlcnMvQ3VzdG9tRmlsdGVyUGFyYW1ldGVyLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9DdXN0b21GaWx0ZXJQYXJhbWV0ZXIuaApAQCAt
NTIsNyArNTIsMTIgQEAgcHVibGljOgogICAgIAogICAgIFBhcmFtZXRlclR5cGUgcGFyYW1ldGVy
VHlwZSgpIGNvbnN0IHsgcmV0dXJuIG1fdHlwZTsgfQogICAgIGNvbnN0IFN0cmluZyYgbmFtZSgp
IGNvbnN0IHsgcmV0dXJuIG1fbmFtZTsgfQotCisgICAgCisgICAgYm9vbCBpc1NhbWVUeXBlKGNv
bnN0IEN1c3RvbUZpbHRlclBhcmFtZXRlciYgb3RoZXIpIGNvbnN0IHsgcmV0dXJuIHBhcmFtZXRl
clR5cGUoKSA9PSBvdGhlci5wYXJhbWV0ZXJUeXBlKCk7IH0KKyAgICAKKyAgICB2aXJ0dWFsIFBh
c3NSZWZQdHI8Q3VzdG9tRmlsdGVyUGFyYW1ldGVyPiBibGVuZChjb25zdCBDdXN0b21GaWx0ZXJQ
YXJhbWV0ZXIqLCBkb3VibGUgcHJvZ3Jlc3MpID0gMDsKKyAgICB2aXJ0dWFsIGJvb2wgb3BlcmF0
b3I9PShjb25zdCBDdXN0b21GaWx0ZXJQYXJhbWV0ZXImKSBjb25zdCA9IDA7CisgICAgYm9vbCBv
cGVyYXRvciE9KGNvbnN0IEN1c3RvbUZpbHRlclBhcmFtZXRlciYgbykgY29uc3QgeyByZXR1cm4g
ISgqdGhpcyA9PSBvKTsgfQogcHJvdGVjdGVkOgogICAgIEN1c3RvbUZpbHRlclBhcmFtZXRlcihQ
YXJhbWV0ZXJUeXBlIHR5cGUsIGNvbnN0IFN0cmluZyYgbmFtZSkKICAgICAgICAgOiBtX25hbWUo
bmFtZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRl
cnMvQ3VzdG9tRmlsdGVyUHJvZ3JhbS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvZmlsdGVycy9DdXN0b21GaWx0ZXJQcm9ncmFtLmgKaW5kZXggMjQ0MWQyMy4uZTA4Y2JiNyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9DdXN0
b21GaWx0ZXJQcm9ncmFtLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
ZmlsdGVycy9DdXN0b21GaWx0ZXJQcm9ncmFtLmgKQEAgLTU3LDYgKzU3LDEwIEBAIHB1YmxpYzoK
ICAgICBQYXNzUmVmUHRyPEN1c3RvbUZpbHRlclNoYWRlcj4gY3JlYXRlU2hhZGVyV2l0aENvbnRl
eHQoR3JhcGhpY3NDb250ZXh0M0QqKTsKICNlbmRpZgogCisgICAgLy8gU3R5bGVDdXN0b21GaWx0
ZXJQcm9ncmFtIGhhcyB0aGUgb25seSBpbXBsZW1lbnRhdGlvbiBmb3IgdGhlIGZvbGxvd2luZyBt
ZXRob2QuIFRoYXQgbWVhbnMsIGl0IGNhc3RzIHRvIFN0eWxlQ3VzdG9tRmlsdGVyUHJvZ3JhbQor
ICAgIC8vIHdpdGhvdXRoIGNoZWNraW5nIHRoZSB0eXBlLiBJZiB5b3UgYWRkIGFub3RoZXIgaW1w
bGVtZW50YXRpb24sIGFsc28gYWRkIGEgbWVjaGFuaXNtIHRvIGNoZWNrIGZvciB0aGUgY29ycmVj
dCB0eXBlLgorICAgIHZpcnR1YWwgYm9vbCBvcGVyYXRvcj09KGNvbnN0IEN1c3RvbUZpbHRlclBy
b2dyYW0mKSBjb25zdCA9IDA7CisgICAgYm9vbCBvcGVyYXRvciE9KGNvbnN0IEN1c3RvbUZpbHRl
clByb2dyYW0mIG8pIGNvbnN0IHsgcmV0dXJuICEoKnRoaXMgPT0gbyk7IH0KIHByb3RlY3RlZDoK
ICAgICAvLyBTdHlsZUN1c3RvbUZpbHRlclByb2dyYW0gY2FuIG5vdGlmeSB0aGUgY2xpZW50cyB0
aGF0IHRoZSBjYWNoZWQgcmVzb3VyY2VzIGFyZQogICAgIC8vIGxvYWRlZCBhbmQgaXQgaXMgcmVh
ZHkgdG8gY3JlYXRlIEN1c3RvbUZpbHRlclNoYWRlciBvYmplY3RzLgpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1N0eWxlQ3VzdG9tRmlsdGVyUHJvZ3JhbS5oIGIv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1N0eWxlQ3VzdG9tRmlsdGVyUHJvZ3JhbS5o
CmluZGV4IGI2ZWVjNzQuLmJmZjA5YTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9zdHlsZS9TdHlsZUN1c3RvbUZpbHRlclByb2dyYW0uaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvc3R5bGUvU3R5bGVDdXN0b21GaWx0ZXJQcm9ncmFtLmgKQEAgLTExMyw2ICsx
MTMsMTYgQEAgcHVibGljOgogICAgICAgICBpZiAoaXNMb2FkZWQoKSkKICAgICAgICAgICAgIG5v
dGlmeUNsaWVudHMoKTsKICAgICB9CisgICAgCisgICAgQ2FjaGVkU2hhZGVyKiBjYWNoZWRWZXJ0
ZXhTaGFkZXIoKSBjb25zdCB7IHJldHVybiBtX3ZlcnRleFNoYWRlciA/IG1fdmVydGV4U2hhZGVy
LT5jYWNoZWRTaGFkZXIoKSA6IDA7IH0KKyAgICBDYWNoZWRTaGFkZXIqIGNhY2hlZEZyYWdtZW50
U2hhZGVyKCkgY29uc3QgeyByZXR1cm4gbV9mcmFnbWVudFNoYWRlciA/IG1fZnJhZ21lbnRTaGFk
ZXItPmNhY2hlZFNoYWRlcigpIDogMDsgfQorICAgIAorICAgIHZpcnR1YWwgYm9vbCBvcGVyYXRv
cj09KGNvbnN0IEN1c3RvbUZpbHRlclByb2dyYW0mIG8pIGNvbnN0IAorICAgIHsKKyAgICAgICAg
Ly8gVGhlIGZvbGxvd2luZyBjYXN0IGlzIHVnbHksIGJ1dCBTdHlsZUN1c3RvbUZpbHRlclByb2dy
YW0gaXMgdGhlIHNpbmdsZSBpbXBsZW1lbnRhdGlvbiBvZiBDdXN0b21GaWx0ZXJQcm9ncmFtLgor
ICAgICAgICBjb25zdCBTdHlsZUN1c3RvbUZpbHRlclByb2dyYW0qIG90aGVyID0gc3RhdGljX2Nh
c3Q8Y29uc3QgU3R5bGVDdXN0b21GaWx0ZXJQcm9ncmFtKj4oJm8pOworICAgICAgICByZXR1cm4g
Y2FjaGVkVmVydGV4U2hhZGVyKCkgPT0gb3RoZXItPmNhY2hlZFZlcnRleFNoYWRlcigpICYmIGNh
Y2hlZEZyYWdtZW50U2hhZGVyKCkgPT0gb3RoZXItPmNhY2hlZEZyYWdtZW50U2hhZGVyKCk7Cisg
ICAgfQogCiBwcml2YXRlOgogICAgIFN0eWxlQ3VzdG9tRmlsdGVyUHJvZ3JhbShQYXNzUmVmUHRy
PFN0eWxlU2hhZGVyPiB2ZXJ0ZXhTaGFkZXIsIFBhc3NSZWZQdHI8U3R5bGVTaGFkZXI+IGZyYWdt
ZW50U2hhZGVyKQo=
</data>
<flag name="review"
          id="144835"
          type_id="1"
          status="+"
          setter="dino"
    />
          </attachment>
      

    </bug>

</bugzilla>