<?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>77931</bug_id>
          
          <creation_ts>2012-02-06 20:52:48 -0800</creation_ts>
          <short_desc>Element should be able to have multiple shadow roots.</short_desc>
          <delta_ts>2012-02-28 03:37:02 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>DOM</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>77935</dependson>
    
    <dependson>78069</dependson>
    
    <dependson>78313</dependson>
    
    <dependson>78453</dependson>
    
    <dependson>78465</dependson>
    
    <dependson>79071</dependson>
          <blocked>77503</blocked>
    
    <blocked>78474</blocked>
          <everconfirmed>0</everconfirmed>
          <reporter name="Shinya Kawanaka">shinyak</reporter>
          <assigned_to name="Shinya Kawanaka">shinyak</assigned_to>
          <cc>dglazkov</cc>
    
    <cc>dominicc</cc>
    
    <cc>gustavo</cc>
    
    <cc>hayato</cc>
    
    <cc>morrita</cc>
    
    <cc>pnormand</cc>
    
    <cc>rolandsteiner</cc>
    
    <cc>shinyak</cc>
    
    <cc>webkit.review.bot</cc>
    
    <cc>xan.lopez</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>550592</commentid>
    <comment_count>0</comment_count>
    <who name="Shinya Kawanaka">shinyak</who>
    <bug_when>2012-02-06 20:52:48 -0800</bug_when>
    <thetext>Before supporting multiple shadow subtrees in all elements, let&apos;s support it in the case an element doesn&apos;t have a built-in shadow root, because a built-in shadow root may be created dynamically.

After refactoring elements having a built-in shadow root, let&apos;s turn multiple shadow root ON for any elements.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>558796</commentid>
    <comment_count>1</comment_count>
      <attachid>127493</attachid>
    <who name="Shinya Kawanaka">shinyak</who>
    <bug_when>2012-02-16 18:42:59 -0800</bug_when>
    <thetext>Created attachment 127493
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>558805</commentid>
    <comment_count>2</comment_count>
      <attachid>127493</attachid>
    <who name="Philippe Normand">pnormand</who>
    <bug_when>2012-02-16 19:04:44 -0800</bug_when>
    <thetext>Comment on attachment 127493
Patch

Attachment 127493 did not pass gtk-ews (gtk):
Output: http://queues.webkit.org/results/11538318</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>558834</commentid>
    <comment_count>3</comment_count>
      <attachid>127493</attachid>
    <who name="Hajime Morrita">morrita</who>
    <bug_when>2012-02-16 19:51:16 -0800</bug_when>
    <thetext>Comment on attachment 127493
Patch

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

I think we should land rendering related changes at the same time even if the patch will be bigger.
Without rendering, I cannot see if the patch is correct or not.

&gt; LayoutTests/fast/dom/shadow/multiple-shadowroot.html:21
&gt; +shouldBe(&quot;internals.address(internals.shadowRoot(div))&quot;, &quot;internals.address(shadowRoot1)&quot;);

We should make &quot;===&quot; work for ShadowRoot instances instead of relying address(). Having address() on Internals object is OK because it&apos;s useful for trouble shooting.
But I don&apos;t think use it for testing is good idea.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>558840</commentid>
    <comment_count>4</comment_count>
      <attachid>127502</attachid>
    <who name="Shinya Kawanaka">shinyak</who>
    <bug_when>2012-02-16 20:05:46 -0800</bug_when>
    <thetext>Created attachment 127502
Test</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>558844</commentid>
    <comment_count>5</comment_count>
      <attachid>127502</attachid>
    <who name="Philippe Normand">pnormand</who>
    <bug_when>2012-02-16 20:12:21 -0800</bug_when>
    <thetext>Comment on attachment 127502
Test

Attachment 127502 did not pass gtk-ews (gtk):
Output: http://queues.webkit.org/results/11539342</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>558858</commentid>
    <comment_count>6</comment_count>
      <attachid>127507</attachid>
    <who name="Shinya Kawanaka">shinyak</who>
    <bug_when>2012-02-16 20:32:13 -0800</bug_when>
    <thetext>Created attachment 127507
Test</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>558966</commentid>
    <comment_count>7</comment_count>
      <attachid>127535</attachid>
    <who name="Shinya Kawanaka">shinyak</who>
    <bug_when>2012-02-16 23:48:14 -0800</bug_when>
    <thetext>Created attachment 127535
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>559098</commentid>
    <comment_count>8</comment_count>
      <attachid>127535</attachid>
    <who name="Hajime Morrita">morrita</who>
    <bug_when>2012-02-17 03:16:49 -0800</bug_when>
    <thetext>Comment on attachment 127535
Patch

We need some test to examine how multiple shadows are rendered/layouted.
It doesn&apos;t need to be Ultra-comprehensive. But it covers some basic patterns.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>559979</commentid>
    <comment_count>9</comment_count>
      <attachid>127748</attachid>
    <who name="Shinya Kawanaka">shinyak</who>
    <bug_when>2012-02-19 18:29:48 -0800</bug_when>
    <thetext>Created attachment 127748
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>559982</commentid>
    <comment_count>10</comment_count>
      <attachid>127748</attachid>
    <who name="Hajime Morrita">morrita</who>
    <bug_when>2012-02-19 18:51:45 -0800</bug_when>
    <thetext>Comment on attachment 127748
Patch

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

&gt; Source/WebCore/dom/Element.cpp:1204
&gt; +            root-&gt;detach();

It this order intentional? 
This means that newly added ShadowRoot is lazy-attached then detached.
Also, how we can ensure these shadow root attached? I&apos;m confusing.
Maybe we need some way to investite attach-ness using internals API.

&gt; LayoutTests/fast/dom/shadow/multiple-shadowroot-rendering.html:1
&gt; +&lt;!DOCTYPE html&gt;

This test is Good!
Could you add some dynamic attaching case?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>560011</commentid>
    <comment_count>11</comment_count>
    <who name="Shinya Kawanaka">shinyak</who>
    <bug_when>2012-02-19 21:21:08 -0800</bug_when>
    <thetext>It turned out that this patch does not work well if dynamically a new shadow root is attached...
Let me take time to fix.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>560109</commentid>
    <comment_count>12</comment_count>
    <who name="Shinya Kawanaka">shinyak</who>
    <bug_when>2012-02-20 01:38:50 -0800</bug_when>
    <thetext>(In reply to comment #10)
&gt; (From update of attachment 127748 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=127748&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/dom/Element.cpp:1204
&gt; &gt; +            root-&gt;detach();
&gt; 
&gt; It this order intentional? 
&gt; This means that newly added ShadowRoot is lazy-attached then detached.
&gt; Also, how we can ensure these shadow root attached? I&apos;m confusing.
&gt; Maybe we need some way to investite attach-ness using internals API.

Actually detach()-ing non youngest shadow roots.

&gt; &gt; LayoutTests/fast/dom/shadow/multiple-shadowroot-rendering.html:1
&gt; &gt; +&lt;!DOCTYPE html&gt;
&gt; 
&gt; This test is Good!
&gt; Could you add some dynamic attaching case?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>560123</commentid>
    <comment_count>13</comment_count>
      <attachid>127787</attachid>
    <who name="Shinya Kawanaka">shinyak</who>
    <bug_when>2012-02-20 02:32:18 -0800</bug_when>
    <thetext>Created attachment 127787
WIP</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>560205</commentid>
    <comment_count>14</comment_count>
      <attachid>127787</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-02-20 06:02:51 -0800</bug_when>
    <thetext>Comment on attachment 127787
WIP

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

New failing tests:
fast/html/details-remove-summary-5-and-click.html
fast/html/details-add-details-child-1.html
fast/html/details-remove-summary-5.html
fast/html/details-add-summary-5-and-click.html
fast/html/details-add-child-1.html
fast/html/details-add-summary-4.html
http/tests/inspector/inspect-element.html
fast/html/details-remove-summary-6.html
fast/html/details-remove-summary-3.html
fast/html/details-click-controls.html
fast/html/details-add-summary-5.html
css2.1/20110323/abspos-containing-block-initial-004d.htm
fast/html/details-remove-child-2.html
fast/html/details-add-summary-10.html
fast/html/details-add-summary-10-and-click.html
fast/html/details-add-summary-9.html
fast/html/details-remove-summary-2.html
fast/html/details-add-child-2.html
fast/html/details-remove-child-1.html
css2.1/20110323/abspos-containing-block-initial-004b.htm
fast/block/block-remove-child-delete-line-box-crash.html
fast/dom/shadow/multiple-shadowroot-rendering.html
accessibility/aria-describedby-on-input.html
fast/html/details-remove-summary-2-and-click.html
fast/html/details-replace-text.html
fast/html/details-remove-summary-6-and-click.html
fast/html/details-add-summary-9-and-click.html
fast/html/details-remove-summary-3-and-click.html
fast/html/details-add-summary-4-and-click.html</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>562961</commentid>
    <comment_count>15</comment_count>
      <attachid>128434</attachid>
    <who name="Shinya Kawanaka">shinyak</who>
    <bug_when>2012-02-23 01:50:26 -0800</bug_when>
    <thetext>Created attachment 128434
WIP</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>563933</commentid>
    <comment_count>16</comment_count>
      <attachid>128651</attachid>
    <who name="Shinya Kawanaka">shinyak</who>
    <bug_when>2012-02-23 22:22:12 -0800</bug_when>
    <thetext>Created attachment 128651
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>563965</commentid>
    <comment_count>17</comment_count>
      <attachid>128659</attachid>
    <who name="Shinya Kawanaka">shinyak</who>
    <bug_when>2012-02-23 23:03:31 -0800</bug_when>
    <thetext>Created attachment 128659
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>563990</commentid>
    <comment_count>18</comment_count>
      <attachid>128659</attachid>
    <who name="Hajime Morrita">morrita</who>
    <bug_when>2012-02-23 23:32:35 -0800</bug_when>
    <thetext>Comment on attachment 128659
Patch

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

&gt; Source/WebCore/dom/Element.cpp:79
&gt; +#if ENABLE(SHADOW_DOM)

Don&apos;t need this ENABLE because this file is always available and doesn&apos;t affect the behaviour.

&gt; Source/WebCore/dom/Element.cpp:1193
&gt; +#endif

This is pretty confusing - mysterious #ifdef and &quot;Add&quot;-ing a shadow results removal. 
Could you clarify around this somehow?

&gt; Source/WebCore/dom/Element.cpp:1202
&gt; +        for (ShadowRoot* root = shadowRootList()-&gt;youngestShadowRoot()-&gt;olderShadowRoot(); root; root = root-&gt;olderShadowRoot())

Looks like a method of ShadowRootList.

&gt; Source/WebCore/dom/Element.cpp:1231
&gt; +        oldRoot-&gt;setNext(0);

Could you make this series of call a method?

&gt; Source/WebCore/dom/NodeRenderingContext.cpp:62
&gt; +        if (toShadowRoot(parent)-&gt;youngerShadowRoot())

Why not isYoungest ?

&gt; Source/WebCore/dom/NodeRenderingContext.cpp:78
&gt; +                if (!toShadowRoot(m_insertionPoint-&gt;shadowTreeRootNode())-&gt;youngerShadowRoot()) {

Why not use isYoungestShadowRoot()?

&gt; Source/WebCore/dom/ShadowRoot.h:76
&gt; +    bool isYoungestShadowRoot() const { return !youngerShadowRoot(); }

Drop the &quot;ShadowRoot&quot;, just &quot;isYoungest&quot;. It&apos;s cleaner.

&gt; Source/WebCore/dom/ShadowRoot.h:77
&gt; +    bool isOldestShadowRoot() const { return !olderShadowRoot(); }

Ditto.

&gt; LayoutTests/fast/dom/shadow/multiple-shadowroot-rendering.html:160
&gt; +        document.getElementById(&apos;actual-container&apos;).appendChild(root);

Coud you force layout here to make the intention clearer?

&gt; LayoutTests/fast/dom/shadow/multiple-shadowroot-rendering.html:174
&gt; +&lt;/html&gt;

Could you add  dynamic removal case?
- Dynamic removal for the yougest tree
- Dynamic removel for non-youngest tree</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>564013</commentid>
    <comment_count>19</comment_count>
    <who name="Shinya Kawanaka">shinyak</who>
    <bug_when>2012-02-24 00:03:15 -0800</bug_when>
    <thetext>(In reply to comment #18)
&gt; (From update of attachment 128659 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=128659&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/dom/Element.cpp:79
&gt; &gt; +#if ENABLE(SHADOW_DOM)
&gt; 
&gt; Don&apos;t need this ENABLE because this file is always available and doesn&apos;t affect the behaviour.

Done.

&gt; 
&gt; &gt; Source/WebCore/dom/Element.cpp:1193
&gt; &gt; +#endif
&gt; 
&gt; This is pretty confusing - mysterious #ifdef and &quot;Add&quot;-ing a shadow results removal. 
&gt; Could you clarify around this somehow?

Hmm... I&apos;m now thinking just adding ASSERT is OK. It should be checked in ShadowRoot::create.

&gt; 
&gt; &gt; Source/WebCore/dom/Element.cpp:1202
&gt; &gt; +        for (ShadowRoot* root = shadowRootList()-&gt;youngestShadowRoot()-&gt;olderShadowRoot(); root; root = root-&gt;olderShadowRoot())
&gt; 
&gt; Looks like a method of ShadowRootList.

Yeah... We should have pushed a shadow root into the shadow root list after detaching older shadow roots.

&gt; 
&gt; &gt; Source/WebCore/dom/Element.cpp:1231
&gt; &gt; +        oldRoot-&gt;setNext(0);
&gt; 
&gt; Could you make this series of call a method?

We should have done it in ShadowRootList::popShadowRoot().

&gt; 
&gt; &gt; Source/WebCore/dom/NodeRenderingContext.cpp:62
&gt; &gt; +        if (toShadowRoot(parent)-&gt;youngerShadowRoot())
&gt; 
&gt; Why not isYoungest ?

Done.

&gt; 
&gt; &gt; Source/WebCore/dom/NodeRenderingContext.cpp:78
&gt; &gt; +                if (!toShadowRoot(m_insertionPoint-&gt;shadowTreeRootNode())-&gt;youngerShadowRoot()) {
&gt; 
&gt; Why not use isYoungestShadowRoot()?

Done.

&gt; 
&gt; &gt; Source/WebCore/dom/ShadowRoot.h:76
&gt; &gt; +    bool isYoungestShadowRoot() const { return !youngerShadowRoot(); }
&gt; 
&gt; Drop the &quot;ShadowRoot&quot;, just &quot;isYoungest&quot;. It&apos;s cleaner.

Done.

&gt; 
&gt; &gt; Source/WebCore/dom/ShadowRoot.h:77
&gt; &gt; +    bool isOldestShadowRoot() const { return !olderShadowRoot(); }
&gt; 
&gt; Ditto.

Done.

&gt; 
&gt; &gt; LayoutTests/fast/dom/shadow/multiple-shadowroot-rendering.html:160
&gt; &gt; +        document.getElementById(&apos;actual-container&apos;).appendChild(root);
&gt; 
&gt; Coud you force layout here to make the intention clearer?

Actually we force layout using setTImeout in callIdDone().

&gt; 
&gt; &gt; LayoutTests/fast/dom/shadow/multiple-shadowroot-rendering.html:174
&gt; &gt; +&lt;/html&gt;
&gt; 
&gt; Could you add  dynamic removal case?
&gt; - Dynamic removal for the yougest tree
&gt; - Dynamic removel for non-youngest tree

Actually we don&apos;t have a method to such removal methods. We only support removing all shadow subtrees, and it is used for testing.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>564018</commentid>
    <comment_count>20</comment_count>
      <attachid>128670</attachid>
    <who name="Shinya Kawanaka">shinyak</who>
    <bug_when>2012-02-24 00:08:39 -0800</bug_when>
    <thetext>Created attachment 128670
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>565417</commentid>
    <comment_count>21</comment_count>
    <who name="Shinya Kawanaka">shinyak</who>
    <bug_when>2012-02-26 23:57:09 -0800</bug_when>
    <thetext>*** Bug 78474 has been marked as a duplicate of this bug. ***</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>566481</commentid>
    <comment_count>22</comment_count>
      <attachid>129212</attachid>
    <who name="Shinya Kawanaka">shinyak</who>
    <bug_when>2012-02-28 01:01:17 -0800</bug_when>
    <thetext>Created attachment 129212
Rebased ToT</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>566560</commentid>
    <comment_count>23</comment_count>
      <attachid>129212</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-02-28 03:36:55 -0800</bug_when>
    <thetext>Comment on attachment 129212
Rebased ToT

Clearing flags on attachment: 129212

Committed r109096: &lt;http://trac.webkit.org/changeset/109096&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>566561</commentid>
    <comment_count>24</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-02-28 03:37:02 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>127493</attachid>
            <date>2012-02-16 18:42:59 -0800</date>
            <delta_ts>2012-02-16 20:05:40 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-77931-20120217114258.patch</filename>
            <type>text/plain</type>
            <size>17225</size>
            <attacher name="Shinya Kawanaka">shinyak</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTA4MDAzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOGVkNGVhMGY1MDlkMjY3
NmZjYTUzMDZjZmUzNzhiMDRiMWQ2NjhlZS4uZDAzNWY1OTU5YjVhNzI5MDFlODEwMmQ4YTIzNDA5
NDdjZWY3YmJmNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM0IEBACisyMDEyLTAyLTE2ICBTaGlu
eWEgS2F3YW5ha2EgIDxzaGlueWFrQGNocm9taXVtLm9yZz4KKworICAgICAgICBFbGVtZW50IHNo
b3VsZCBiZSBhYmxlIHRvIGhhdmUgbXVsdGlwbGUgc2hhZG93IHJvb3RzLgorICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9Nzc5MzEKKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGlzIHBhdGNoIGVuYWJsZXMgYWRk
aW5nIG11bHRpcGxlIHNoYWRvdyBzdWJ0cmVlcyBpbnRvIGVsZW1lbnRzLgorICAgICAgICBUaGlz
IHBhdGNoIGRvZXMgbm90IGNvbnNpZGVyIGhvdyB0aGV5IGFyZSByZW5kZXJlZC4gSXQgb25seSBj
b25zaWRlcnMgeW91bmdlci9vbGRlcgorICAgICAgICBzaGFkb3cgcm9vdHMgYXJlIGNvcnJlY3Qu
CisKKyAgICAgICAgVGVzdDogZmFzdC9kb20vc2hhZG93L211bHRpcGxlLXNoYWRvd3Jvb3QuaHRt
bAorCisgICAgICAgICogZG9tL0VsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RWxlbWVu
dDo6fkVsZW1lbnQpOgorICAgICAgICAoV2ViQ29yZTo6RWxlbWVudDo6YWRkU2hhZG93Um9vdCk6
CisgICAgICAgIChXZWJDb3JlOjpFbGVtZW50OjpyZW1vdmVTaGFkb3dSb290TGlzdCk6CisgICAg
ICAgICogZG9tL0VsZW1lbnQuaDoKKyAgICAgICAgKEVsZW1lbnQpOgorICAgICAgICAqIGRvbS9T
aGFkb3dSb290LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNoYWRvd1Jvb3Q6OmNyZWF0ZSk6Cisg
ICAgICAgICogdGVzdGluZy9JbnRlcm5hbHMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW50ZXJu
YWxzOjphZGRyZXNzKToKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6SW50
ZXJuYWxzOjp5b3VuZ2VyU2hhZG93Um9vdCk6CisgICAgICAgIChXZWJDb3JlOjpJbnRlcm5hbHM6
Om9sZGVyU2hhZG93Um9vdCk6CisgICAgICAgIChXZWJDb3JlOjpJbnRlcm5hbHM6OnJlbW92ZVNo
YWRvd1Jvb3QpOgorICAgICAgICAqIHRlc3RpbmcvSW50ZXJuYWxzLmg6CisgICAgICAgIChJbnRl
cm5hbHMpOgorICAgICAgICAqIHRlc3RpbmcvSW50ZXJuYWxzLmlkbDoKKwogMjAxMi0wMi0xNSAg
U2hpbnlhIEthd2FuYWthICA8c2hpbnlha0BjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgQWRkIGFu
IGludGVybmFsIGZsYWcgdG8gYWNjZXB0IG11bHRpcGxlIHNoYWRvdyByb290cyBmb3IgdGhlIHB1
cnBvc2Ugb2YgdGVzdHMuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5jcHAKaW5kZXggMWE0NjYyNDMwYTg5ZWI4
ZmVmYzY2OGZjMTYwNjVmNThkYTNmOTQxYy4uNDgzMzI3NWE4NWFmZGJlNGQxYjRjYzZiYzA1YjVi
MWQ2MmRlZTUxZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmNwcApAQCAtNzYsNiArNzYsMTAgQEAKICNp
bmNsdWRlICJTVkdOYW1lcy5oIgogI2VuZGlmCiAKKyNpZiBFTkFCTEUoU0hBRE9XX0RPTSkKKyNp
bmNsdWRlICJSdW50aW1lRW5hYmxlZEZlYXR1cmVzLmgiCisjZW5kaWYKKwogbmFtZXNwYWNlIFdl
YkNvcmUgewogCiB1c2luZyBuYW1lc3BhY2UgSFRNTE5hbWVzOwpAQCAtMTIyLDcgKzEyNiw3IEBA
IFBhc3NSZWZQdHI8RWxlbWVudD4gRWxlbWVudDo6Y3JlYXRlKGNvbnN0IFF1YWxpZmllZE5hbWUm
IHRhZ05hbWUsIERvY3VtZW50KiBkb2N1CiAKIEVsZW1lbnQ6On5FbGVtZW50KCkKIHsKLSAgICBy
ZW1vdmVTaGFkb3dSb290KCk7CisgICAgcmVtb3ZlU2hhZG93Um9vdExpc3QoKTsKICAgICBpZiAo
bV9hdHRyaWJ1dGVNYXApCiAgICAgICAgIG1fYXR0cmlidXRlTWFwLT5kZXRhY2hGcm9tRWxlbWVu
dCgpOwogfQpAQCAtMTE5MSw3ICsxMTk1LDcgQEAgc3RhdGljIGJvb2wgdmFsaWRhdGVTaGFkb3dS
b290KERvY3VtZW50KiBkb2N1bWVudCwgU2hhZG93Um9vdCogc2hhZG93Um9vdCwgRXhjZXAKICAg
ICByZXR1cm4gdHJ1ZTsKIH0KIAotdm9pZCBFbGVtZW50OjpzZXRTaGFkb3dSb290KFBhc3NSZWZQ
dHI8U2hhZG93Um9vdD4gc2hhZG93Um9vdCwgRXhjZXB0aW9uQ29kZSYgZWMpCit2b2lkIEVsZW1l
bnQ6OmFkZFNoYWRvd1Jvb3QoUGFzc1JlZlB0cjxTaGFkb3dSb290PiBzaGFkb3dSb290LCBFeGNl
cHRpb25Db2RlJiBlYykKIHsKICAgICBpZiAoIXZhbGlkYXRlU2hhZG93Um9vdChkb2N1bWVudCgp
LCBzaGFkb3dSb290LmdldCgpLCBlYykpCiAgICAgICAgIHJldHVybjsKQEAgLTExOTksNyArMTIw
MywxMyBAQCB2b2lkIEVsZW1lbnQ6OnNldFNoYWRvd1Jvb3QoUGFzc1JlZlB0cjxTaGFkb3dSb290
PiBzaGFkb3dSb290LCBFeGNlcHRpb25Db2RlJiBlYwogICAgIGlmICghaGFzUmFyZURhdGEoKSkK
ICAgICAgICAgZW5zdXJlUmFyZURhdGEoKTsKIAotICAgIHJlbW92ZVNoYWRvd1Jvb3QoKTsKKyNp
ZiBFTkFCTEUoU0hBRE9XX0RPTSkKKyAgICBpZiAoIVJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6Om11
bHRpcGxlU2hhZG93U3VidHJlZXNFbmFibGVkKCkpCisgICAgICAgIHJlbW92ZVNoYWRvd1Jvb3RM
aXN0KCk7CisjZWxzZQorICAgIHJlbW92ZVNoYWRvd1Jvb3RMaXN0KCk7CisjZW5kaWYKKwogCiAg
ICAgc2hhZG93Um9vdC0+c2V0U2hhZG93SG9zdCh0aGlzKTsKICAgICBzaGFkb3dSb290TGlzdCgp
LT5wdXNoU2hhZG93Um9vdChzaGFkb3dSb290LmdldCgpKTsKQEAgLTEyMjEsNyArMTIzMSw3IEBA
IFNoYWRvd1Jvb3QqIEVsZW1lbnQ6OmVuc3VyZVNoYWRvd1Jvb3QoKQogICAgIHJldHVybiBTaGFk
b3dSb290OjpjcmVhdGUodGhpcywgU2hhZG93Um9vdDo6Q3JlYXRpbmdVc2VyQWdlbnRTaGFkb3dS
b290KS5nZXQoKTsKIH0KIAotdm9pZCBFbGVtZW50OjpyZW1vdmVTaGFkb3dSb290KCkKK3ZvaWQg
RWxlbWVudDo6cmVtb3ZlU2hhZG93Um9vdExpc3QoKQogewogICAgIGlmICghaGFzU2hhZG93Um9v
dCgpKQogICAgICAgICByZXR1cm47CkBAIC0xMjMzLDE2ICsxMjQzLDE5IEBAIHZvaWQgRWxlbWVu
dDo6cmVtb3ZlU2hhZG93Um9vdCgpCiAgICAgICAgICAgICBvbGRSb290LT5kZXRhY2goKTsKIAog
ICAgICAgICBvbGRSb290LT5zZXRTaGFkb3dIb3N0KDApOworICAgICAgICBvbGRSb290LT5zZXRQ
cmV2KDApOworICAgICAgICBvbGRSb290LT5zZXROZXh0KDApOwogICAgICAgICBkb2N1bWVudCgp
LT5hZG9wdElmTmVlZGVkKG9sZFJvb3QuZ2V0KCkpOwogICAgICAgICBpZiAob2xkUm9vdC0+aW5E
b2N1bWVudCgpKQogICAgICAgICAgICAgb2xkUm9vdC0+cmVtb3ZlZEZyb21Eb2N1bWVudCgpOwog
ICAgICAgICBlbHNlCiAgICAgICAgICAgICBvbGRSb290LT5yZW1vdmVkRnJvbVRyZWUodHJ1ZSk7
Ci0gICAgICAgIGlmIChhdHRhY2hlZCgpKSB7Ci0gICAgICAgICAgICBmb3IgKE5vZGUqIGNoaWxk
ID0gZmlyc3RDaGlsZCgpOyBjaGlsZDsgY2hpbGQgPSBjaGlsZC0+bmV4dFNpYmxpbmcoKSkgewot
ICAgICAgICAgICAgICAgIGlmICghY2hpbGQtPmF0dGFjaGVkKCkpCi0gICAgICAgICAgICAgICAg
ICAgIGNoaWxkLT5sYXp5QXR0YWNoKCk7Ci0gICAgICAgICAgICB9CisgICAgfQorCisgICAgaWYg
KGF0dGFjaGVkKCkpIHsKKyAgICAgICAgZm9yIChOb2RlKiBjaGlsZCA9IGZpcnN0Q2hpbGQoKTsg
Y2hpbGQ7IGNoaWxkID0gY2hpbGQtPm5leHRTaWJsaW5nKCkpIHsKKyAgICAgICAgICAgIGlmICgh
Y2hpbGQtPmF0dGFjaGVkKCkpCisgICAgICAgICAgICAgICAgY2hpbGQtPmxhenlBdHRhY2goKTsK
ICAgICAgICAgfQogICAgIH0KIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVt
ZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5oCmluZGV4IDMyOGQyNjZhNjc0MTQx
NzI3YWI5NjM5NjFhZjY5MDRiNjc1ZjI5Y2MuLjkxOTRjZDIwZjY3NzQxZTM1ZTQzNmRmNjk0YzQx
NThiNjIzOTZiOGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmgKKysr
IGIvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuaApAQCAtMjU1LDEyICsyNTUsMTEgQEAgcHVi
bGljOgogCiAgICAgYm9vbCBoYXNTaGFkb3dSb290KCkgY29uc3Q7CiAgICAgU2hhZG93Um9vdExp
c3QqIHNoYWRvd1Jvb3RMaXN0KCkgY29uc3Q7Ci0KLSAgICAvLyBGSVhNRTogVGhlc2UgQVBJIHdp
bGwgYmUgbW92ZWQgdG8gU2hhZG93Um9vdExpc3QuCi0gICAgLy8gaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTc4MzEzCi0gICAgdm9pZCBzZXRTaGFkb3dSb290KFBhc3NS
ZWZQdHI8U2hhZG93Um9vdD4sIEV4Y2VwdGlvbkNvZGUmKTsKKyAgICB2b2lkIGFkZFNoYWRvd1Jv
b3QoUGFzc1JlZlB0cjxTaGFkb3dSb290PiwgRXhjZXB0aW9uQ29kZSYpOworICAgIHZvaWQgcmVt
b3ZlU2hhZG93Um9vdExpc3QoKTsKKyAgICAvLyBGSVhNRTogZW5zdXJlU2hhZG93Um9vdCgpIHdp
bGwgYmUgcmVtb3ZlZCBsYXRlci4KKyAgICAvLyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9Nzc2MDgKICAgICBTaGFkb3dSb290KiBlbnN1cmVTaGFkb3dSb290KCk7Ci0g
ICAgdm9pZCByZW1vdmVTaGFkb3dSb290KCk7CiAKICAgICB2aXJ0dWFsIGNvbnN0IEF0b21pY1N0
cmluZyYgc2hhZG93UHNldWRvSWQoKSBjb25zdDsKICAgICB2b2lkIHNldFNoYWRvd1BzZXVkb0lk
KGNvbnN0IEF0b21pY1N0cmluZyYsIEV4Y2VwdGlvbkNvZGUmID0gQVNTRVJUX05PX0VYQ0VQVElP
Tik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vU2hhZG93Um9vdC5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9kb20vU2hhZG93Um9vdC5jcHAKaW5kZXggZWQ5MGYwZmVjODBkNThiNzhkZjdi
YjcwMjRkMTE0MjBjZjZmNWZmMy4uOTIxNmExODQ3ZjFjMDc1MGVjMDU2MDZlYzA0ZjllYTkxZjdh
OTk4YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL1NoYWRvd1Jvb3QuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2RvbS9TaGFkb3dSb290LmNwcApAQCAtMTI0LDcgKzEyNCw3IEBAIFBh
c3NSZWZQdHI8U2hhZG93Um9vdD4gU2hhZG93Um9vdDo6Y3JlYXRlKEVsZW1lbnQqIGVsZW1lbnQs
IFNoYWRvd1Jvb3RDcmVhdGlvblB1CiAgICAgUmVmUHRyPFNoYWRvd1Jvb3Q+IHNoYWRvd1Jvb3Qg
PSBhZG9wdFJlZihuZXcgU2hhZG93Um9vdChlbGVtZW50LT5kb2N1bWVudCgpKSk7CiAKICAgICBl
YyA9IDA7Ci0gICAgZWxlbWVudC0+c2V0U2hhZG93Um9vdChzaGFkb3dSb290LCBlYyk7CisgICAg
ZWxlbWVudC0+YWRkU2hhZG93Um9vdChzaGFkb3dSb290LCBlYyk7CiAgICAgaWYgKGVjKQogICAg
ICAgICByZXR1cm4gMDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRl
cm5hbHMuY3BwIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuY3BwCmluZGV4IDE1
NjIwY2QwZGFiZWM2ZjllZTJiMDIxZmZmYTZiZWY5NWRhMzM3ZDUuLmZkMzc3ODZjNTU4OWFjMjI3
Y2ZjZTEyZDk1YzQ1ZGEzMjg5NTNlNTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Rlc3Rp
bmcvSW50ZXJuYWxzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5j
cHAKQEAgLTExOSw2ICsxMTksMTQgQEAgSW50ZXJuYWxzOjpJbnRlcm5hbHMoRG9jdW1lbnQqIGRv
Y3VtZW50KQogICAgIHJlc2V0KGRvY3VtZW50KTsKIH0KIAorU3RyaW5nIEludGVybmFsczo6YWRk
cmVzcyhOb2RlKiBub2RlKQoreworICAgIGNoYXIgYnVmWzMyXTsKKyAgICBzcHJpbnRmKGJ1Ziwg
IiVwIiwgbm9kZSk7CisKKyAgICByZXR1cm4gU3RyaW5nKGJ1Zik7Cit9CisKIGJvb2wgSW50ZXJu
YWxzOjppc1ByZWxvYWRlZChEb2N1bWVudCogZG9jdW1lbnQsIGNvbnN0IFN0cmluZyYgdXJsKQog
ewogICAgIGlmICghZG9jdW1lbnQpCkBAIC0yMzEsNiArMjM5LDI2IEBAIEludGVybmFsczo6U2hh
ZG93Um9vdElmU2hhZG93RE9NRW5hYmxlZE9yTm9kZSogSW50ZXJuYWxzOjpvbGRlc3RTaGFkb3dS
b290KEVsZW1lCiAgICAgcmV0dXJuIGhvc3QtPnNoYWRvd1Jvb3RMaXN0KCktPm9sZGVzdFNoYWRv
d1Jvb3QoKTsKIH0KIAorSW50ZXJuYWxzOjpTaGFkb3dSb290SWZTaGFkb3dET01FbmFibGVkT3JO
b2RlKiBJbnRlcm5hbHM6OnlvdW5nZXJTaGFkb3dSb290KE5vZGUqIHNoYWRvdywgRXhjZXB0aW9u
Q29kZSYgZWMpCit7CisgICAgaWYgKCFzaGFkb3cgfHwgIXNoYWRvdy0+aXNTaGFkb3dSb290KCkp
IHsKKyAgICAgICAgZWMgPSBJTlZBTElEX0FDQ0VTU19FUlI7CisgICAgICAgIHJldHVybiAwOwor
ICAgIH0KKworICAgIHJldHVybiB0b1NoYWRvd1Jvb3Qoc2hhZG93KS0+eW91bmdlclNoYWRvd1Jv
b3QoKTsKK30KKworSW50ZXJuYWxzOjpTaGFkb3dSb290SWZTaGFkb3dET01FbmFibGVkT3JOb2Rl
KiBJbnRlcm5hbHM6Om9sZGVyU2hhZG93Um9vdChOb2RlKiBzaGFkb3csIEV4Y2VwdGlvbkNvZGUm
IGVjKQoreworICAgIGlmICghc2hhZG93IHx8ICFzaGFkb3ctPmlzU2hhZG93Um9vdCgpKSB7Cisg
ICAgICAgIGVjID0gSU5WQUxJRF9BQ0NFU1NfRVJSOworICAgICAgICByZXR1cm4gMDsKKyAgICB9
CisKKyAgICByZXR1cm4gdG9TaGFkb3dSb290KHNoYWRvdyktPm9sZGVyU2hhZG93Um9vdCgpOwor
fQorCiB2b2lkIEludGVybmFsczo6cmVtb3ZlU2hhZG93Um9vdChFbGVtZW50KiBob3N0LCBFeGNl
cHRpb25Db2RlJiBlYykKIHsKICAgICBpZiAoIWhvc3QpIHsKQEAgLTIzOCw3ICsyNjYsNyBAQCB2
b2lkIEludGVybmFsczo6cmVtb3ZlU2hhZG93Um9vdChFbGVtZW50KiBob3N0LCBFeGNlcHRpb25D
b2RlJiBlYykKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIGhvc3QtPnJlbW92ZVNoYWRv
d1Jvb3QoKTsKKyAgICBob3N0LT5yZW1vdmVTaGFkb3dSb290TGlzdCgpOwogfQogCiB2b2lkIElu
dGVybmFsczo6c2V0TXVsdGlwbGVTaGFkb3dTdWJ0cmVlc0VuYWJsZWQoYm9vbCBlbmFibGVkKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuaCBiL1NvdXJjZS9X
ZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmgKaW5kZXggN2NkZWUxNzE3MzQ1NDJhNjA5MDJlMjlh
YzIwMzk1Zjg2NmM4ZjYyZC4uMTE4MzE4NTMxZTAwN2E2OGE1MzA1NjkzYWQ5Njk1YWUyODJiMTMx
MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5oCkBAIC01NSw2ICs1NSw4IEBAIHB1Ymxp
YzoKIAogICAgIFN0cmluZyBlbGVtZW50UmVuZGVyVHJlZUFzVGV4dChFbGVtZW50KiwgRXhjZXB0
aW9uQ29kZSYpOwogCisgICAgU3RyaW5nIGFkZHJlc3MoTm9kZSopOworCiAgICAgYm9vbCBpc1By
ZWxvYWRlZChEb2N1bWVudCosIGNvbnN0IFN0cmluZyYgdXJsKTsKIAogICAgIHNpemVfdCBudW1i
ZXJPZlNjb3BlZEhUTUxTdHlsZUNoaWxkcmVuKGNvbnN0IE5vZGUqLCBFeGNlcHRpb25Db2RlJikg
Y29uc3Q7CkBAIC02OCw2ICs3MCw4IEBAIHB1YmxpYzoKICAgICBTaGFkb3dSb290SWZTaGFkb3dE
T01FbmFibGVkT3JOb2RlKiBzaGFkb3dSb290KEVsZW1lbnQqIGhvc3QsIEV4Y2VwdGlvbkNvZGUm
KTsKICAgICBTaGFkb3dSb290SWZTaGFkb3dET01FbmFibGVkT3JOb2RlKiB5b3VuZ2VzdFNoYWRv
d1Jvb3QoRWxlbWVudCogaG9zdCwgRXhjZXB0aW9uQ29kZSYpOwogICAgIFNoYWRvd1Jvb3RJZlNo
YWRvd0RPTUVuYWJsZWRPck5vZGUqIG9sZGVzdFNoYWRvd1Jvb3QoRWxlbWVudCogaG9zdCwgRXhj
ZXB0aW9uQ29kZSYpOworICAgIFNoYWRvd1Jvb3RJZlNoYWRvd0RPTUVuYWJsZWRPck5vZGUqIHlv
dW5nZXJTaGFkb3dSb290KE5vZGUqIHNoYWRvdywgRXhjZXB0aW9uQ29kZSYpOworICAgIFNoYWRv
d1Jvb3RJZlNoYWRvd0RPTUVuYWJsZWRPck5vZGUqIG9sZGVyU2hhZG93Um9vdChOb2RlKiBzaGFk
b3csIEV4Y2VwdGlvbkNvZGUmKTsKICAgICB2b2lkIHJlbW92ZVNoYWRvd1Jvb3QoRWxlbWVudCog
aG9zdCwgRXhjZXB0aW9uQ29kZSYpOwogICAgIHZvaWQgc2V0TXVsdGlwbGVTaGFkb3dTdWJ0cmVl
c0VuYWJsZWQoYm9vbCk7CiAgICAgRWxlbWVudCogaW5jbHVkZXJGb3IoTm9kZSosIEV4Y2VwdGlv
bkNvZGUmKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmlk
bCBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmlkbAppbmRleCA2NWRhNjI5NmE1
OTRjYTJiOTRhZWVhYzc0OWJmZDAwY2E5Nzc5ZjUxLi5jODg5MjE0ZTM1MzVkMmRkMTE1NzIxZGZh
YmE5MDQ4NTUwNmMzMjlkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVy
bmFscy5pZGwKKysrIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuaWRsCkBAIC0y
Nyw2ICsyNyw4IEBAIG1vZHVsZSB3aW5kb3cgewogICAgIGludGVyZmFjZSBbCiAgICAgICAgIE9t
aXRDb25zdHJ1Y3RvcgogICAgIF0gSW50ZXJuYWxzIHsKKyAgICAgICAgRE9NU3RyaW5nIGFkZHJl
c3MoaW4gTm9kZSBub2RlKTsKKwogICAgICAgICBET01TdHJpbmcgZWxlbWVudFJlbmRlclRyZWVB
c1RleHQoaW4gRWxlbWVudCBlbGVtZW50KSByYWlzZXMoRE9NRXhjZXB0aW9uKTsKICAgICAgICAg
Ym9vbGVhbiBpc1ByZWxvYWRlZChpbiBEb2N1bWVudCBkb2N1bWVudCwgaW4gRE9NU3RyaW5nIHVy
bCk7CiAKQEAgLTM3LDExICszOSwxNSBAQCBtb2R1bGUgd2luZG93IHsKICAgICAgICAgU2hhZG93
Um9vdCBzaGFkb3dSb290KGluIEVsZW1lbnQgaG9zdCkgcmFpc2VzIChET01FeGNlcHRpb24pOwog
ICAgICAgICBTaGFkb3dSb290IHlvdW5nZXN0U2hhZG93Um9vdChpbiBFbGVtZW50IGhvc3QpIHJh
aXNlcyAoRE9NRXhjZXB0aW9uKTsKICAgICAgICAgU2hhZG93Um9vdCBvbGRlc3RTaGFkb3dSb290
KGluIEVsZW1lbnQgaG9zdCkgcmFpc2VzIChET01FeGNlcHRpb24pOworICAgICAgICBTaGFkb3dS
b290IHlvdW5nZXJTaGFkb3dSb290KGluIE5vZGUgcm9vdCkgcmFpc2VzIChET01FeGNlcHRpb24p
OworICAgICAgICBTaGFkb3dSb290IG9sZGVyU2hhZG93Um9vdChpbiBOb2RlIHJvb3QpIHJhaXNl
cyAoRE9NRXhjZXB0aW9uKTsKICNlbHNlCiAgICAgICAgIE5vZGUgZW5zdXJlU2hhZG93Um9vdChp
biBFbGVtZW50IGhvc3QpIHJhaXNlcyAoRE9NRXhjZXB0aW9uKTsKICAgICAgICAgTm9kZSBzaGFk
b3dSb290KGluIEVsZW1lbnQgaG9zdCkgcmFpc2VzIChET01FeGNlcHRpb24pOwogICAgICAgICBO
b2RlIHlvdW5nZXN0U2hhZG93Um9vdChpbiBFbGVtZW50IGhvc3QpIHJhaXNlcyAoRE9NRXhjZXB0
aW9uKTsKICAgICAgICAgTm9kZSBvbGRlc3RTaGFkb3dSb290KGluIEVsZW1lbnQgaG9zdCkgcmFp
c2VzIChET01FeGNlcHRpb24pOworICAgICAgICBOb2RlIHlvdW5nZXJTaGFkb3dSb290KGluIE5v
ZGUgcm9vdCkgcmFpc2VzIChET01FeGNlcHRpb24pOworICAgICAgICBOb2RlIHlvdW5nZXJTaGFk
b3dSb290KGluIE5vZGUgcm9vdCkgcmFpc2VzIChET01FeGNlcHRpb24pOwogI2VuZGlmCiAgICAg
ICAgIHZvaWQgc2V0TXVsdGlwbGVTaGFkb3dTdWJ0cmVlc0VuYWJsZWQoaW4gYm9vbGVhbiBlbmFi
bGVkKTsKICAgICAgICAgRWxlbWVudCBpbmNsdWRlckZvcihpbiBOb2RlIG5vZGUpIHJhaXNlcyAo
RE9NRXhjZXB0aW9uKTsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91
dFRlc3RzL0NoYW5nZUxvZwppbmRleCBhODBlODAzMmE3ZWQwZmU1MWNlYmRhY2M0YmY2NGUxOTVk
MmE2ODFkLi5hNGZjZWJhNTI4ZjZhZjZhZmU1N2JkMGIyNTNkMGY2MTY4NDBhNjI0IDEwMDY0NAot
LS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBA
IC0xLDMgKzEsMTkgQEAKKzIwMTItMDItMTYgIFNoaW55YSBLYXdhbmFrYSAgPHNoaW55YWtAY2hy
b21pdW0ub3JnPgorCisgICAgICAgIEVsZW1lbnQgc2hvdWxkIGJlIGFibGUgdG8gaGF2ZSBtdWx0
aXBsZSBzaGFkb3cgcm9vdHMuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD03NzkzMQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgICogZmFzdC9kb20vc2hhZG93L211bHRpcGxlLXNoYWRvd3Jvb3QtZXhwZWN0ZWQu
dHh0OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2RvbS9zaGFkb3cvbXVsdGlwbGUtc2hhZG93cm9v
dC5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9lZmwvU2tpcHBlZDoKKyAgICAgICAg
KiBwbGF0Zm9ybS9ndGsvU2tpcHBlZDoKKyAgICAgICAgKiBwbGF0Zm9ybS9tYWMvU2tpcHBlZDoK
KyAgICAgICAgKiBwbGF0Zm9ybS9xdC9Ta2lwcGVkOgorICAgICAgICAqIHBsYXRmb3JtL3dpbi9T
a2lwcGVkOgorICAgICAgICAqIHBsYXRmb3JtL3dpbmNhaXJvL1NraXBwZWQ6CisKIDIwMTItMDIt
MTUgIFNoaW55YSBLYXdhbmFrYSAgPHNoaW55YWtAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIE5l
ZWRzIGFuIGludGVybmFsIGZsYWcgdG8gYWNjZXB0IG11bHRpcGxlIHNoYWRvdyByb290cyBmb3Ig
dGhlIHB1cnBvc2Ugb2YgdGVzdHMKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZG9tL3No
YWRvdy9tdWx0aXBsZS1zaGFkb3dyb290LWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2Zhc3Qv
ZG9tL3NoYWRvdy9tdWx0aXBsZS1zaGFkb3dyb290LWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi45
MTVhNmZkMTY4YmYwNzNlZWYyMGU5Y2M2OGI0NzA0NmMwNTQ5YjhhCi0tLSAvZGV2L251bGwKKysr
IGIvTGF5b3V0VGVzdHMvZmFzdC9kb20vc2hhZG93L211bHRpcGxlLXNoYWRvd3Jvb3QtZXhwZWN0
ZWQudHh0CkBAIC0wLDAgKzEsMTcgQEAKK1RoaXMgdGVzdCBlbnN1cmUgdGhhdCB0aGUgbXVsdGlw
bGUgc2hhZG93IHJvb3QgaXMgYXZhaWxhYmxlLgorCitPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUg
YSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIu
CisKKworUEFTUyBpbnRlcm5hbHMuc2hhZG93Um9vdChkaXYpIGlzIG51bGwKK1BBU1MgaW50ZXJu
YWxzLmFkZHJlc3MoaW50ZXJuYWxzLnNoYWRvd1Jvb3QoZGl2KSkgaXMgaW50ZXJuYWxzLmFkZHJl
c3Moc2hhZG93Um9vdDEpCitQQVNTIGludGVybmFscy5vbGRlclNoYWRvd1Jvb3Qoc2hhZG93Um9v
dDEpIGlzIG51bGwKK1BBU1MgaW50ZXJuYWxzLmFkZHJlc3MoaW50ZXJuYWxzLnNoYWRvd1Jvb3Qo
ZGl2KSkgaXMgaW50ZXJuYWxzLmFkZHJlc3Moc2hhZG93Um9vdDIpCitQQVNTIGludGVybmFscy5h
ZGRyZXNzKGludGVybmFscy5vbGRlclNoYWRvd1Jvb3Qoc2hhZG93Um9vdDIpKSBpcyBpbnRlcm5h
bHMuYWRkcmVzcyhzaGFkb3dSb290MSkKK1BBU1MgaW50ZXJuYWxzLmFkZHJlc3MoaW50ZXJuYWxz
LnNoYWRvd1Jvb3QoZGl2KSkgaXMgaW50ZXJuYWxzLmFkZHJlc3Moc2hhZG93Um9vdDMpCitQQVNT
IGludGVybmFscy5hZGRyZXNzKGludGVybmFscy5vbGRlclNoYWRvd1Jvb3Qoc2hhZG93Um9vdDMp
KSBpcyBpbnRlcm5hbHMuYWRkcmVzcyhzaGFkb3dSb290MikKK1BBU1MgaW50ZXJuYWxzLnNoYWRv
d1Jvb3QoZGl2KSBpcyBudWxsCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RF
U1QgQ09NUExFVEUKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9kb20vc2hhZG93L211
bHRpcGxlLXNoYWRvd3Jvb3QuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvZG9tL3NoYWRvdy9tdWx0
aXBsZS1zaGFkb3dyb290Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZDExMmExMDU1YmYxODNkNGRiMTk1MjIz
NjIwNWQyM2E0MzMxMTdlOQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZG9t
L3NoYWRvdy9tdWx0aXBsZS1zaGFkb3dyb290Lmh0bWwKQEAgLTAsMCArMSw0MSBAQAorPCFET0NU
WVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorPHNjcmlwdCBzcmM9Ii4uLy4uL2pzL3Jlc291cmNl
cy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxkaXY+CisgIDxj
b250ZW50IGlkPSJjb250ZW50LXNpbXBsZXN0Ij48L2NvbnRlbnQ+Cis8L2Rpdj4KKzxzY3JpcHQ+
CitkZXNjcmlwdGlvbigiVGhpcyB0ZXN0IGVuc3VyZSB0aGF0IHRoZSBtdWx0aXBsZSBzaGFkb3cg
cm9vdCBpcyBhdmFpbGFibGUuIik7CisKK2ludGVybmFscy5zZXRNdWx0aXBsZVNoYWRvd1N1YnRy
ZWVzRW5hYmxlZCh0cnVlKTsKKwordmFyIGRpdiA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2Rp
dicpOworc2hvdWxkQmUoImludGVybmFscy5zaGFkb3dSb290KGRpdikiLCAibnVsbCIpOworLy8g
Q3VycmVudGx5IGludGVybmFscy5zaGFkb3dSb290KGRpdikgYW5kIHNoYWRvd1Jvb3QxIGFyZSBk
aWZmZXJlbnQgSlMgd3JhcHBlcnMsCisvLyBzbyBpbnRlcm5hbHMuc2hhZG93Um9vdChkaXYpID09
PSBzaGFkb3dSb290MSBkb2Vzbid0IGhvbGQuCisvLyBCdXQgYWN0dWFsbHkgdGhleSBjb250YWlu
IHRoZSBzYW1lIFNoYWRvd1Jvb3QuIFNvIHdlIGNvbXBhcmUgdGhlbSBieSBpbnRlcm5hbCBhZGRy
ZXNzIGhlcmUuCit2YXIgc2hhZG93Um9vdDEgPSBuZXcgV2ViS2l0U2hhZG93Um9vdChkaXYpOwor
c2hvdWxkQmUoImludGVybmFscy5hZGRyZXNzKGludGVybmFscy5zaGFkb3dSb290KGRpdikpIiwg
ImludGVybmFscy5hZGRyZXNzKHNoYWRvd1Jvb3QxKSIpOworc2hvdWxkQmUoImludGVybmFscy5v
bGRlclNoYWRvd1Jvb3Qoc2hhZG93Um9vdDEpIiwgIm51bGwiKTsKKwordmFyIHNoYWRvd1Jvb3Qy
ID0gbmV3IFdlYktpdFNoYWRvd1Jvb3QoZGl2KQorc2hvdWxkQmUoImludGVybmFscy5hZGRyZXNz
KGludGVybmFscy5zaGFkb3dSb290KGRpdikpIiwgImludGVybmFscy5hZGRyZXNzKHNoYWRvd1Jv
b3QyKSIpOworc2hvdWxkQmUoImludGVybmFscy5hZGRyZXNzKGludGVybmFscy5vbGRlclNoYWRv
d1Jvb3Qoc2hhZG93Um9vdDIpKSIsICJpbnRlcm5hbHMuYWRkcmVzcyhzaGFkb3dSb290MSkiKTsK
KwordmFyIHNoYWRvd1Jvb3QzID0gbmV3IFdlYktpdFNoYWRvd1Jvb3QoZGl2KTsKK3Nob3VsZEJl
KCJpbnRlcm5hbHMuYWRkcmVzcyhpbnRlcm5hbHMuc2hhZG93Um9vdChkaXYpKSIsICJpbnRlcm5h
bHMuYWRkcmVzcyhzaGFkb3dSb290MykiKTsKK3Nob3VsZEJlKCJpbnRlcm5hbHMuYWRkcmVzcyhp
bnRlcm5hbHMub2xkZXJTaGFkb3dSb290KHNoYWRvd1Jvb3QzKSkiLCAiaW50ZXJuYWxzLmFkZHJl
c3Moc2hhZG93Um9vdDIpIik7CisKK2ludGVybmFscy5yZW1vdmVTaGFkb3dSb290KGRpdik7Citz
aG91bGRCZSgiaW50ZXJuYWxzLnNoYWRvd1Jvb3QoZGl2KSIsICJudWxsIik7CisKK2ludGVybmFs
cy5zZXRNdWx0aXBsZVNoYWRvd1N1YnRyZWVzRW5hYmxlZChmYWxzZSk7CisKK3ZhciBzdWNjZXNz
ZnVsbHlQYXJzZWQgPSB0cnVlOworPC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vanMvcmVz
b3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9lZmwvU2tpcHBlZCBiL0xheW91dFRlc3RzL3Bs
YXRmb3JtL2VmbC9Ta2lwcGVkCmluZGV4IGM5ZWM0Nzk2MGQxYWIyOWZiN2NmYmM2ZDllYWNhOTU3
ZTM5NjAxYzIuLmRkOGE3YmZlNTVkYjc2ZDdjYmE2ZDc1OTZkMTYxYjAyZThlYmZiNWUgMTAwNjQ0
Ci0tLSBhL0xheW91dFRlc3RzL3BsYXRmb3JtL2VmbC9Ta2lwcGVkCisrKyBiL0xheW91dFRlc3Rz
L3BsYXRmb3JtL2VmbC9Ta2lwcGVkCkBAIC0xOTc0LDYgKzE5NzQsNyBAQCBmYXN0L2Nzcy9zdHls
ZS1zY29wZWQKICMgRU5BQkxFKFNIQURPV19ET00pIGlzIGRpc2FibGVkLgogZmFzdC9kb20vc2hh
ZG93L3NoYWRvdy1yb290LWpzLWFwaS5odG1sCiBmYXN0L2RvbS9zaGFkb3cvc2hhZG93LWRpc2Fi
bGUuaHRtbAorZmFzdC9kb20vc2hhZG93L211bHRpcGxlLXNoYWRvd3Jvb3QuaHRtbAogCiAjIENT
UyBGaWx0ZXJzIHN1cHBvcnQgbm90IHlldCBlbmFibGVkIChuZWVkcyBFTkFCTEVfQ1NTX0ZJTFRF
UlMpLgogIyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9Njg0NjkKZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL2d0ay9Ta2lwcGVkIGIvTGF5b3V0VGVzdHMv
cGxhdGZvcm0vZ3RrL1NraXBwZWQKaW5kZXggOTQyZmYyMjBiMjU2MjIzNTU3MTFkZGI1ZWU4N2Ux
MWIyZWFjMDU4Mi4uYTBiZDMwMmMyNjMyNGJmMDE2NWQzZDg4MGU0ZmYwMjQ2ODc2Mzc3NyAxMDA2
NDQKLS0tIGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vZ3RrL1NraXBwZWQKKysrIGIvTGF5b3V0VGVz
dHMvcGxhdGZvcm0vZ3RrL1NraXBwZWQKQEAgLTM1Nyw2ICszNTcsNyBAQCBmYXN0L2Nzcy9zdHls
ZS1zY29wZWQKICMgRU5BQkxFKFNIQURPV19ET00pIGlzIGRpc2FibGVkLgogZmFzdC9kb20vc2hh
ZG93L3NoYWRvdy1yb290LWpzLWFwaS5odG1sCiBmYXN0L2RvbS9zaGFkb3cvc2hhZG93LWRpc2Fi
bGUuaHRtbAorZmFzdC9kb20vc2hhZG93L211bHRpcGxlLXNoYWRvd3Jvb3QuaHRtbAogCiAjIENT
UyBSZWdpb25zIHN1cHBvcnQgbm90IHlldCBlbmFibGVkLiBodHRwOi8vd2Via2l0Lm9yZy9iLzU3
MzEyCiBmYXN0L3JlZ2lvbnMKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy9T
a2lwcGVkIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL1NraXBwZWQKaW5kZXggMzNmNDE5Yjlk
ZGM3YmY2OWRjYWE2YWE4MzgzMmRmNDEzODI3NTkxYi4uYjU4NjA4NDEyMTNkNmU3MzBkYTZlODY3
Y2QwZDY3MTMwMWNhZjMxOCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL1Nr
aXBwZWQKKysrIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL1NraXBwZWQKQEAgLTQxOCw2ICs0
MTgsNyBAQCBmYXN0L2Nzcy9zdHlsZS1zY29wZWQKICMgRU5BQkxFKFNIQURPV19ET00pIGlzIGRp
c2FibGVkLgogZmFzdC9kb20vc2hhZG93L3NoYWRvdy1yb290LWpzLWFwaS5odG1sCiBmYXN0L2Rv
bS9zaGFkb3cvc2hhZG93LWRpc2FibGUuaHRtbAorZmFzdC9kb20vc2hhZG93L211bHRpcGxlLXNo
YWRvd3Jvb3QuaHRtbAogCiAjIEpTQyBkb2VzIG5vdCBzdXBwb3J0IHNldElzb2xhdGVkV29ybGRT
ZWN1cml0eU9yaWdpbiAoaHR0cDovL3dlYmtpdC5vcmcvYi82MTU0MCkKIGh0dHAvdGVzdHMvc2Vj
dXJpdHkvaXNvbGF0ZWRXb3JsZC9jcm9zcy1vcmlnaW4teGhyLmh0bWwKZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL3BsYXRmb3JtL3F0L1NraXBwZWQgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9xdC9T
a2lwcGVkCmluZGV4IGViZThjYTc2OGY2MzA2MWEzNDEwOWFjOGIwMmUzNzViZTg4OGQzMjAuLmJi
NmViYzk5MmExMThmY2E0NzUxZGUyODliMDE0NjQzZThiMGZjYWUgMTAwNjQ0Ci0tLSBhL0xheW91
dFRlc3RzL3BsYXRmb3JtL3F0L1NraXBwZWQKKysrIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vcXQv
U2tpcHBlZApAQCAtMTYxLDYgKzE2MSw3IEBAIGZhc3QvY3NzL3N0eWxlLXNjb3BlZAogIyBFTkFC
TEUoU0hBRE9XX0RPTSkgaXMgZGlzYWJsZWQuCiBmYXN0L2RvbS9zaGFkb3cvc2hhZG93LXJvb3Qt
anMtYXBpLmh0bWwKIGZhc3QvZG9tL3NoYWRvdy9zaGFkb3ctZGlzYWJsZS5odG1sCitmYXN0L2Rv
bS9zaGFkb3cvbXVsdGlwbGUtc2hhZG93cm9vdC5odG1sCiAKICMgQ1NTIFJlZ2lvbnMgc3VwcG9y
dCBub3QgeWV0IGVuYWJsZWQuIGh0dHA6Ly93ZWJraXQub3JnL2IvNTczMTIKIGZhc3QvcmVnaW9u
cwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vd2luL1NraXBwZWQgYi9MYXlvdXRU
ZXN0cy9wbGF0Zm9ybS93aW4vU2tpcHBlZAppbmRleCA3MjJjZTYzYTkyNmU4Y2NmODkxYjM0M2Q2
OTc0ZmYwN2VkZTUwMWQyLi5iNmE0MTQxY2QwOTg2NDA0YzQwMjM0ZGE1Yzk2YjU2MTk0ZDhiMzdk
IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS93aW4vU2tpcHBlZAorKysgYi9MYXlv
dXRUZXN0cy9wbGF0Zm9ybS93aW4vU2tpcHBlZApAQCAtMTQ1MCw2ICsxNDUwLDcgQEAgZmFzdC9j
c3Mvc3R5bGUtc2NvcGVkCiAjIEVOQUJMRShTSEFET1dfRE9NKSBpcyBkaXNhYmxlZC4KIGZhc3Qv
ZG9tL3NoYWRvdy9zaGFkb3ctcm9vdC1qcy1hcGkuaHRtbAogZmFzdC9kb20vc2hhZG93L3NoYWRv
dy1kaXNhYmxlLmh0bWwKK2Zhc3QvZG9tL3NoYWRvdy9tdWx0aXBsZS1zaGFkb3dyb290Lmh0bWwK
IAogIyBDU1MgUmVnaW9ucyBzdXBwb3J0IG5vdCB5ZXQgZW5hYmxlZC4gaHR0cDovL3dlYmtpdC5v
cmcvYi81NzMxMgogZmFzdC9yZWdpb25zCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9y
bS93aW5jYWlyby9Ta2lwcGVkIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vd2luY2Fpcm8vU2tpcHBl
ZAppbmRleCA4NjI3OGRmZDdlMWY1ODZhYTdiMTgxZTM1MGUxZTUyOWNhNmYzODc4Li4zMzM2MmFm
Njk2YTMyMzdjYmU4NWYwNzg4NmY2MzZkZmIxN2U0YjZlIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0
cy9wbGF0Zm9ybS93aW5jYWlyby9Ta2lwcGVkCisrKyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL3dp
bmNhaXJvL1NraXBwZWQKQEAgLTE5NjUsNiArMTk2NSw3IEBAIGZhc3QvY3NzL3N0eWxlLXNjb3Bl
ZAogIyBFTkFCTEUoU0hBRE9XX0RPTSkgaXMgZGlzYWJsZWQuCiBmYXN0L2RvbS9zaGFkb3cvc2hh
ZG93LXJvb3QtanMtYXBpLmh0bWwKIGZhc3QvZG9tL3NoYWRvdy9zaGFkb3ctZGlzYWJsZS5odG1s
CitmYXN0L2RvbS9zaGFkb3cvbXVsdGlwbGUtc2hhZG93cm9vdC5odG1sCiAKICMgQ1NTIFJlZ2lv
bnMgc3VwcG9ydCBub3QgeWV0IGVuYWJsZWQuIGh0dHA6Ly93ZWJraXQub3JnL2IvNTczMTIKIGZh
c3QvcmVnaW9ucwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>127502</attachid>
            <date>2012-02-16 20:05:46 -0800</date>
            <delta_ts>2012-02-16 20:32:07 -0800</delta_ts>
            <desc>Test</desc>
            <filename>bug-77931-20120217130545.patch</filename>
            <type>text/plain</type>
            <size>20206</size>
            <attacher name="Shinya Kawanaka">shinyak</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTA4MDE5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMDg0YjNlODdkZDM5NDc2
ZTM3MDhhZWJkMjRmNTY5MmU1OTE4YWNlNy4uMTc4N2VkMTA5N2QyMTQzZjExMTg1Njg5MWQzZDAw
MGVkNjk4MDIyYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM0IEBACisyMDEyLTAyLTE2ICBTaGlu
eWEgS2F3YW5ha2EgIDxzaGlueWFrQGNocm9taXVtLm9yZz4KKworICAgICAgICBFbGVtZW50IHNo
b3VsZCBiZSBhYmxlIHRvIGhhdmUgbXVsdGlwbGUgc2hhZG93IHJvb3RzLgorICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9Nzc5MzEKKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGlzIHBhdGNoIGVuYWJsZXMgYWRk
aW5nIG11bHRpcGxlIHNoYWRvdyBzdWJ0cmVlcyBpbnRvIGVsZW1lbnRzLgorICAgICAgICBUaGlz
IHBhdGNoIGRvZXMgbm90IGNvbnNpZGVyIGhvdyB0aGV5IGFyZSByZW5kZXJlZC4gSXQgb25seSBj
b25zaWRlcnMgeW91bmdlci9vbGRlcgorICAgICAgICBzaGFkb3cgcm9vdHMgYXJlIGNvcnJlY3Qu
CisKKyAgICAgICAgVGVzdDogZmFzdC9kb20vc2hhZG93L211bHRpcGxlLXNoYWRvd3Jvb3QuaHRt
bAorCisgICAgICAgICogZG9tL0VsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RWxlbWVu
dDo6fkVsZW1lbnQpOgorICAgICAgICAoV2ViQ29yZTo6RWxlbWVudDo6YWRkU2hhZG93Um9vdCk6
CisgICAgICAgIChXZWJDb3JlOjpFbGVtZW50OjpyZW1vdmVTaGFkb3dSb290TGlzdCk6CisgICAg
ICAgICogZG9tL0VsZW1lbnQuaDoKKyAgICAgICAgKEVsZW1lbnQpOgorICAgICAgICAqIGRvbS9T
aGFkb3dSb290LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNoYWRvd1Jvb3Q6OmNyZWF0ZSk6Cisg
ICAgICAgICogdGVzdGluZy9JbnRlcm5hbHMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW50ZXJu
YWxzOjphZGRyZXNzKToKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6SW50
ZXJuYWxzOjp5b3VuZ2VyU2hhZG93Um9vdCk6CisgICAgICAgIChXZWJDb3JlOjpJbnRlcm5hbHM6
Om9sZGVyU2hhZG93Um9vdCk6CisgICAgICAgIChXZWJDb3JlOjpJbnRlcm5hbHM6OnJlbW92ZVNo
YWRvd1Jvb3QpOgorICAgICAgICAqIHRlc3RpbmcvSW50ZXJuYWxzLmg6CisgICAgICAgIChJbnRl
cm5hbHMpOgorICAgICAgICAqIHRlc3RpbmcvSW50ZXJuYWxzLmlkbDoKKwogMjAxMi0wMi0xNiAg
S2VudCBUYW11cmEgIDx0a2VudEBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgUnVuIHNvcnQtWGNv
ZGUtcHJvamVjdC1maWxlLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5leHAu
aW4gYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmV4cC5pbgppbmRleCBlNTJjZDI5YWE4MzZjODZj
YTUwNjQ5NzlhOTcwZDZiYWVkMWM1NTliLi41NDkzYTZhNGFkM2U2NmIxOTY4YmYwZmYyYjJjNGYy
ZDdmMmZmMjI0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmV4cC5pbgorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmV4cC5pbgpAQCAtOTEwLDcgKzkxMCw3IEBAIF9fWk43
V2ViQ29yZTZXaWRnZXREMkV2CiBfX1pON1dlYkNvcmU2dG9Ob2RlRU4zSlNDN0pTVmFsdWVFCiBf
X1pON1dlYkNvcmU3Q29uc29sZTIxc2hvdWxkUHJpbnRFeGNlcHRpb25zRXYKIF9fWk43V2ViQ29y
ZTdDb25zb2xlMjRzZXRTaG91bGRQcmludEV4Y2VwdGlvbnNFYgotX19aTjdXZWJDb3JlN0VsZW1l
bnQxNnJlbW92ZVNoYWRvd1Jvb3RFdgorX19aTjdXZWJDb3JlN0VsZW1lbnQyMHJlbW92ZVNoYWRv
d1Jvb3RMaXN0RXYKIF9fWk43V2ViQ29yZTdFbGVtZW50MjFib3VuZHNJblJvb3RWaWV3U3BhY2VF
dgogX19aTjdXZWJDb3JlN0VsZW1lbnQ5aW5uZXJUZXh0RXYKIF9fWk43V2ViQ29yZTdJbnRSZWN0
NXNjYWxlRWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmNwcAppbmRleCAxYTQ2NjI0MzBhODllYjhmZWZjNjY4
ZmMxNjA2NWY1OGRhM2Y5NDFjLi40ODMzMjc1YTg1YWZkYmU0ZDFiNGNjNmJjMDViNWIxZDYyZGVl
NTFmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuY3BwCkBAIC03Niw2ICs3NiwxMCBAQAogI2luY2x1ZGUg
IlNWR05hbWVzLmgiCiAjZW5kaWYKIAorI2lmIEVOQUJMRShTSEFET1dfRE9NKQorI2luY2x1ZGUg
IlJ1bnRpbWVFbmFibGVkRmVhdHVyZXMuaCIKKyNlbmRpZgorCiBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAKIHVzaW5nIG5hbWVzcGFjZSBIVE1MTmFtZXM7CkBAIC0xMjIsNyArMTI2LDcgQEAgUGFzc1Jl
ZlB0cjxFbGVtZW50PiBFbGVtZW50OjpjcmVhdGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFt
ZSwgRG9jdW1lbnQqIGRvY3UKIAogRWxlbWVudDo6fkVsZW1lbnQoKQogewotICAgIHJlbW92ZVNo
YWRvd1Jvb3QoKTsKKyAgICByZW1vdmVTaGFkb3dSb290TGlzdCgpOwogICAgIGlmIChtX2F0dHJp
YnV0ZU1hcCkKICAgICAgICAgbV9hdHRyaWJ1dGVNYXAtPmRldGFjaEZyb21FbGVtZW50KCk7CiB9
CkBAIC0xMTkxLDcgKzExOTUsNyBAQCBzdGF0aWMgYm9vbCB2YWxpZGF0ZVNoYWRvd1Jvb3QoRG9j
dW1lbnQqIGRvY3VtZW50LCBTaGFkb3dSb290KiBzaGFkb3dSb290LCBFeGNlcAogICAgIHJldHVy
biB0cnVlOwogfQogCi12b2lkIEVsZW1lbnQ6OnNldFNoYWRvd1Jvb3QoUGFzc1JlZlB0cjxTaGFk
b3dSb290PiBzaGFkb3dSb290LCBFeGNlcHRpb25Db2RlJiBlYykKK3ZvaWQgRWxlbWVudDo6YWRk
U2hhZG93Um9vdChQYXNzUmVmUHRyPFNoYWRvd1Jvb3Q+IHNoYWRvd1Jvb3QsIEV4Y2VwdGlvbkNv
ZGUmIGVjKQogewogICAgIGlmICghdmFsaWRhdGVTaGFkb3dSb290KGRvY3VtZW50KCksIHNoYWRv
d1Jvb3QuZ2V0KCksIGVjKSkKICAgICAgICAgcmV0dXJuOwpAQCAtMTE5OSw3ICsxMjAzLDEzIEBA
IHZvaWQgRWxlbWVudDo6c2V0U2hhZG93Um9vdChQYXNzUmVmUHRyPFNoYWRvd1Jvb3Q+IHNoYWRv
d1Jvb3QsIEV4Y2VwdGlvbkNvZGUmIGVjCiAgICAgaWYgKCFoYXNSYXJlRGF0YSgpKQogICAgICAg
ICBlbnN1cmVSYXJlRGF0YSgpOwogCi0gICAgcmVtb3ZlU2hhZG93Um9vdCgpOworI2lmIEVOQUJM
RShTSEFET1dfRE9NKQorICAgIGlmICghUnVudGltZUVuYWJsZWRGZWF0dXJlczo6bXVsdGlwbGVT
aGFkb3dTdWJ0cmVlc0VuYWJsZWQoKSkKKyAgICAgICAgcmVtb3ZlU2hhZG93Um9vdExpc3QoKTsK
KyNlbHNlCisgICAgcmVtb3ZlU2hhZG93Um9vdExpc3QoKTsKKyNlbmRpZgorCiAKICAgICBzaGFk
b3dSb290LT5zZXRTaGFkb3dIb3N0KHRoaXMpOwogICAgIHNoYWRvd1Jvb3RMaXN0KCktPnB1c2hT
aGFkb3dSb290KHNoYWRvd1Jvb3QuZ2V0KCkpOwpAQCAtMTIyMSw3ICsxMjMxLDcgQEAgU2hhZG93
Um9vdCogRWxlbWVudDo6ZW5zdXJlU2hhZG93Um9vdCgpCiAgICAgcmV0dXJuIFNoYWRvd1Jvb3Q6
OmNyZWF0ZSh0aGlzLCBTaGFkb3dSb290OjpDcmVhdGluZ1VzZXJBZ2VudFNoYWRvd1Jvb3QpLmdl
dCgpOwogfQogCi12b2lkIEVsZW1lbnQ6OnJlbW92ZVNoYWRvd1Jvb3QoKQordm9pZCBFbGVtZW50
OjpyZW1vdmVTaGFkb3dSb290TGlzdCgpCiB7CiAgICAgaWYgKCFoYXNTaGFkb3dSb290KCkpCiAg
ICAgICAgIHJldHVybjsKQEAgLTEyMzMsMTYgKzEyNDMsMTkgQEAgdm9pZCBFbGVtZW50OjpyZW1v
dmVTaGFkb3dSb290KCkKICAgICAgICAgICAgIG9sZFJvb3QtPmRldGFjaCgpOwogCiAgICAgICAg
IG9sZFJvb3QtPnNldFNoYWRvd0hvc3QoMCk7CisgICAgICAgIG9sZFJvb3QtPnNldFByZXYoMCk7
CisgICAgICAgIG9sZFJvb3QtPnNldE5leHQoMCk7CiAgICAgICAgIGRvY3VtZW50KCktPmFkb3B0
SWZOZWVkZWQob2xkUm9vdC5nZXQoKSk7CiAgICAgICAgIGlmIChvbGRSb290LT5pbkRvY3VtZW50
KCkpCiAgICAgICAgICAgICBvbGRSb290LT5yZW1vdmVkRnJvbURvY3VtZW50KCk7CiAgICAgICAg
IGVsc2UKICAgICAgICAgICAgIG9sZFJvb3QtPnJlbW92ZWRGcm9tVHJlZSh0cnVlKTsKLSAgICAg
ICAgaWYgKGF0dGFjaGVkKCkpIHsKLSAgICAgICAgICAgIGZvciAoTm9kZSogY2hpbGQgPSBmaXJz
dENoaWxkKCk7IGNoaWxkOyBjaGlsZCA9IGNoaWxkLT5uZXh0U2libGluZygpKSB7Ci0gICAgICAg
ICAgICAgICAgaWYgKCFjaGlsZC0+YXR0YWNoZWQoKSkKLSAgICAgICAgICAgICAgICAgICAgY2hp
bGQtPmxhenlBdHRhY2goKTsKLSAgICAgICAgICAgIH0KKyAgICB9CisKKyAgICBpZiAoYXR0YWNo
ZWQoKSkgeworICAgICAgICBmb3IgKE5vZGUqIGNoaWxkID0gZmlyc3RDaGlsZCgpOyBjaGlsZDsg
Y2hpbGQgPSBjaGlsZC0+bmV4dFNpYmxpbmcoKSkgeworICAgICAgICAgICAgaWYgKCFjaGlsZC0+
YXR0YWNoZWQoKSkKKyAgICAgICAgICAgICAgICBjaGlsZC0+bGF6eUF0dGFjaCgpOwogICAgICAg
ICB9CiAgICAgfQogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuaCBi
L1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmgKaW5kZXggMzI4ZDI2NmE2NzQxNDE3MjdhYjk2
Mzk2MWFmNjkwNGI2NzVmMjljYy4uOTE5NGNkMjBmNjc3NDFlMzVlNDM2ZGY2OTRjNDE1OGI2MjM5
NmI4YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9kb20vRWxlbWVudC5oCkBAIC0yNTUsMTIgKzI1NSwxMSBAQCBwdWJsaWM6CiAK
ICAgICBib29sIGhhc1NoYWRvd1Jvb3QoKSBjb25zdDsKICAgICBTaGFkb3dSb290TGlzdCogc2hh
ZG93Um9vdExpc3QoKSBjb25zdDsKLQotICAgIC8vIEZJWE1FOiBUaGVzZSBBUEkgd2lsbCBiZSBt
b3ZlZCB0byBTaGFkb3dSb290TGlzdC4KLSAgICAvLyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9NzgzMTMKLSAgICB2b2lkIHNldFNoYWRvd1Jvb3QoUGFzc1JlZlB0cjxT
aGFkb3dSb290PiwgRXhjZXB0aW9uQ29kZSYpOworICAgIHZvaWQgYWRkU2hhZG93Um9vdChQYXNz
UmVmUHRyPFNoYWRvd1Jvb3Q+LCBFeGNlcHRpb25Db2RlJik7CisgICAgdm9pZCByZW1vdmVTaGFk
b3dSb290TGlzdCgpOworICAgIC8vIEZJWE1FOiBlbnN1cmVTaGFkb3dSb290KCkgd2lsbCBiZSBy
ZW1vdmVkIGxhdGVyLgorICAgIC8vIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD03NzYwOAogICAgIFNoYWRvd1Jvb3QqIGVuc3VyZVNoYWRvd1Jvb3QoKTsKLSAgICB2b2lk
IHJlbW92ZVNoYWRvd1Jvb3QoKTsKIAogICAgIHZpcnR1YWwgY29uc3QgQXRvbWljU3RyaW5nJiBz
aGFkb3dQc2V1ZG9JZCgpIGNvbnN0OwogICAgIHZvaWQgc2V0U2hhZG93UHNldWRvSWQoY29uc3Qg
QXRvbWljU3RyaW5nJiwgRXhjZXB0aW9uQ29kZSYgPSBBU1NFUlRfTk9fRVhDRVBUSU9OKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9TaGFkb3dSb290LmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2RvbS9TaGFkb3dSb290LmNwcAppbmRleCBlZDkwZjBmZWM4MGQ1OGI3OGRmN2JiNzAyNGQx
MTQyMGNmNmY1ZmYzLi45MjE2YTE4NDdmMWMwNzUwZWMwNTYwNmVjMDRmOWVhOTFmN2E5OThiIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vU2hhZG93Um9vdC5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvZG9tL1NoYWRvd1Jvb3QuY3BwCkBAIC0xMjQsNyArMTI0LDcgQEAgUGFzc1JlZlB0
cjxTaGFkb3dSb290PiBTaGFkb3dSb290OjpjcmVhdGUoRWxlbWVudCogZWxlbWVudCwgU2hhZG93
Um9vdENyZWF0aW9uUHUKICAgICBSZWZQdHI8U2hhZG93Um9vdD4gc2hhZG93Um9vdCA9IGFkb3B0
UmVmKG5ldyBTaGFkb3dSb290KGVsZW1lbnQtPmRvY3VtZW50KCkpKTsKIAogICAgIGVjID0gMDsK
LSAgICBlbGVtZW50LT5zZXRTaGFkb3dSb290KHNoYWRvd1Jvb3QsIGVjKTsKKyAgICBlbGVtZW50
LT5hZGRTaGFkb3dSb290KHNoYWRvd1Jvb3QsIGVjKTsKICAgICBpZiAoZWMpCiAgICAgICAgIHJl
dHVybiAwOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5jcHAKaW5kZXggMTU2MjBjZDBk
YWJlYzZmOWVlMmIwMjFmZmZhNmJlZjk1ZGEzMzdkNS4uZmQzNzc4NmM1NTg5YWMyMjdjZmNlMTJk
OTVjNDVkYTMyODk1M2U1NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRl
cm5hbHMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNwcApAQCAt
MTE5LDYgKzExOSwxNCBAQCBJbnRlcm5hbHM6OkludGVybmFscyhEb2N1bWVudCogZG9jdW1lbnQp
CiAgICAgcmVzZXQoZG9jdW1lbnQpOwogfQogCitTdHJpbmcgSW50ZXJuYWxzOjphZGRyZXNzKE5v
ZGUqIG5vZGUpCit7CisgICAgY2hhciBidWZbMzJdOworICAgIHNwcmludGYoYnVmLCAiJXAiLCBu
b2RlKTsKKworICAgIHJldHVybiBTdHJpbmcoYnVmKTsKK30KKwogYm9vbCBJbnRlcm5hbHM6Omlz
UHJlbG9hZGVkKERvY3VtZW50KiBkb2N1bWVudCwgY29uc3QgU3RyaW5nJiB1cmwpCiB7CiAgICAg
aWYgKCFkb2N1bWVudCkKQEAgLTIzMSw2ICsyMzksMjYgQEAgSW50ZXJuYWxzOjpTaGFkb3dSb290
SWZTaGFkb3dET01FbmFibGVkT3JOb2RlKiBJbnRlcm5hbHM6Om9sZGVzdFNoYWRvd1Jvb3QoRWxl
bWUKICAgICByZXR1cm4gaG9zdC0+c2hhZG93Um9vdExpc3QoKS0+b2xkZXN0U2hhZG93Um9vdCgp
OwogfQogCitJbnRlcm5hbHM6OlNoYWRvd1Jvb3RJZlNoYWRvd0RPTUVuYWJsZWRPck5vZGUqIElu
dGVybmFsczo6eW91bmdlclNoYWRvd1Jvb3QoTm9kZSogc2hhZG93LCBFeGNlcHRpb25Db2RlJiBl
YykKK3sKKyAgICBpZiAoIXNoYWRvdyB8fCAhc2hhZG93LT5pc1NoYWRvd1Jvb3QoKSkgeworICAg
ICAgICBlYyA9IElOVkFMSURfQUNDRVNTX0VSUjsKKyAgICAgICAgcmV0dXJuIDA7CisgICAgfQor
CisgICAgcmV0dXJuIHRvU2hhZG93Um9vdChzaGFkb3cpLT55b3VuZ2VyU2hhZG93Um9vdCgpOwor
fQorCitJbnRlcm5hbHM6OlNoYWRvd1Jvb3RJZlNoYWRvd0RPTUVuYWJsZWRPck5vZGUqIEludGVy
bmFsczo6b2xkZXJTaGFkb3dSb290KE5vZGUqIHNoYWRvdywgRXhjZXB0aW9uQ29kZSYgZWMpCit7
CisgICAgaWYgKCFzaGFkb3cgfHwgIXNoYWRvdy0+aXNTaGFkb3dSb290KCkpIHsKKyAgICAgICAg
ZWMgPSBJTlZBTElEX0FDQ0VTU19FUlI7CisgICAgICAgIHJldHVybiAwOworICAgIH0KKworICAg
IHJldHVybiB0b1NoYWRvd1Jvb3Qoc2hhZG93KS0+b2xkZXJTaGFkb3dSb290KCk7Cit9CisKIHZv
aWQgSW50ZXJuYWxzOjpyZW1vdmVTaGFkb3dSb290KEVsZW1lbnQqIGhvc3QsIEV4Y2VwdGlvbkNv
ZGUmIGVjKQogewogICAgIGlmICghaG9zdCkgewpAQCAtMjM4LDcgKzI2Niw3IEBAIHZvaWQgSW50
ZXJuYWxzOjpyZW1vdmVTaGFkb3dSb290KEVsZW1lbnQqIGhvc3QsIEV4Y2VwdGlvbkNvZGUmIGVj
KQogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgaG9zdC0+cmVtb3ZlU2hhZG93Um9vdCgp
OworICAgIGhvc3QtPnJlbW92ZVNoYWRvd1Jvb3RMaXN0KCk7CiB9CiAKIHZvaWQgSW50ZXJuYWxz
OjpzZXRNdWx0aXBsZVNoYWRvd1N1YnRyZWVzRW5hYmxlZChib29sIGVuYWJsZWQpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5oIGIvU291cmNlL1dlYkNvcmUv
dGVzdGluZy9JbnRlcm5hbHMuaAppbmRleCA3Y2RlZTE3MTczNDU0MmE2MDkwMmUyOWFjMjAzOTVm
ODY2YzhmNjJkLi4xMTgzMTg1MzFlMDA3YTY4YTUzMDU2OTNhZDk2OTVhZTI4MmIxMzEzIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmgKQEAgLTU1LDYgKzU1LDggQEAgcHVibGljOgogCiAg
ICAgU3RyaW5nIGVsZW1lbnRSZW5kZXJUcmVlQXNUZXh0KEVsZW1lbnQqLCBFeGNlcHRpb25Db2Rl
Jik7CiAKKyAgICBTdHJpbmcgYWRkcmVzcyhOb2RlKik7CisKICAgICBib29sIGlzUHJlbG9hZGVk
KERvY3VtZW50KiwgY29uc3QgU3RyaW5nJiB1cmwpOwogCiAgICAgc2l6ZV90IG51bWJlck9mU2Nv
cGVkSFRNTFN0eWxlQ2hpbGRyZW4oY29uc3QgTm9kZSosIEV4Y2VwdGlvbkNvZGUmKSBjb25zdDsK
QEAgLTY4LDYgKzcwLDggQEAgcHVibGljOgogICAgIFNoYWRvd1Jvb3RJZlNoYWRvd0RPTUVuYWJs
ZWRPck5vZGUqIHNoYWRvd1Jvb3QoRWxlbWVudCogaG9zdCwgRXhjZXB0aW9uQ29kZSYpOwogICAg
IFNoYWRvd1Jvb3RJZlNoYWRvd0RPTUVuYWJsZWRPck5vZGUqIHlvdW5nZXN0U2hhZG93Um9vdChF
bGVtZW50KiBob3N0LCBFeGNlcHRpb25Db2RlJik7CiAgICAgU2hhZG93Um9vdElmU2hhZG93RE9N
RW5hYmxlZE9yTm9kZSogb2xkZXN0U2hhZG93Um9vdChFbGVtZW50KiBob3N0LCBFeGNlcHRpb25D
b2RlJik7CisgICAgU2hhZG93Um9vdElmU2hhZG93RE9NRW5hYmxlZE9yTm9kZSogeW91bmdlclNo
YWRvd1Jvb3QoTm9kZSogc2hhZG93LCBFeGNlcHRpb25Db2RlJik7CisgICAgU2hhZG93Um9vdElm
U2hhZG93RE9NRW5hYmxlZE9yTm9kZSogb2xkZXJTaGFkb3dSb290KE5vZGUqIHNoYWRvdywgRXhj
ZXB0aW9uQ29kZSYpOwogICAgIHZvaWQgcmVtb3ZlU2hhZG93Um9vdChFbGVtZW50KiBob3N0LCBF
eGNlcHRpb25Db2RlJik7CiAgICAgdm9pZCBzZXRNdWx0aXBsZVNoYWRvd1N1YnRyZWVzRW5hYmxl
ZChib29sKTsKICAgICBFbGVtZW50KiBpbmNsdWRlckZvcihOb2RlKiwgRXhjZXB0aW9uQ29kZSYp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuaWRsIGIvU291
cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuaWRsCmluZGV4IDY1ZGE2Mjk2YTU5NGNhMmI5
NGFlZWFjNzQ5YmZkMDBjYTk3NzlmNTEuLmM4ODkyMTRlMzUzNWQyZGQxMTU3MjFkZmFiYTkwNDg1
NTA2YzMyOWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmlk
bAorKysgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5pZGwKQEAgLTI3LDYgKzI3
LDggQEAgbW9kdWxlIHdpbmRvdyB7CiAgICAgaW50ZXJmYWNlIFsKICAgICAgICAgT21pdENvbnN0
cnVjdG9yCiAgICAgXSBJbnRlcm5hbHMgeworICAgICAgICBET01TdHJpbmcgYWRkcmVzcyhpbiBO
b2RlIG5vZGUpOworCiAgICAgICAgIERPTVN0cmluZyBlbGVtZW50UmVuZGVyVHJlZUFzVGV4dChp
biBFbGVtZW50IGVsZW1lbnQpIHJhaXNlcyhET01FeGNlcHRpb24pOwogICAgICAgICBib29sZWFu
IGlzUHJlbG9hZGVkKGluIERvY3VtZW50IGRvY3VtZW50LCBpbiBET01TdHJpbmcgdXJsKTsKIApA
QCAtMzcsMTEgKzM5LDE1IEBAIG1vZHVsZSB3aW5kb3cgewogICAgICAgICBTaGFkb3dSb290IHNo
YWRvd1Jvb3QoaW4gRWxlbWVudCBob3N0KSByYWlzZXMgKERPTUV4Y2VwdGlvbik7CiAgICAgICAg
IFNoYWRvd1Jvb3QgeW91bmdlc3RTaGFkb3dSb290KGluIEVsZW1lbnQgaG9zdCkgcmFpc2VzIChE
T01FeGNlcHRpb24pOwogICAgICAgICBTaGFkb3dSb290IG9sZGVzdFNoYWRvd1Jvb3QoaW4gRWxl
bWVudCBob3N0KSByYWlzZXMgKERPTUV4Y2VwdGlvbik7CisgICAgICAgIFNoYWRvd1Jvb3QgeW91
bmdlclNoYWRvd1Jvb3QoaW4gTm9kZSByb290KSByYWlzZXMgKERPTUV4Y2VwdGlvbik7CisgICAg
ICAgIFNoYWRvd1Jvb3Qgb2xkZXJTaGFkb3dSb290KGluIE5vZGUgcm9vdCkgcmFpc2VzIChET01F
eGNlcHRpb24pOwogI2Vsc2UKICAgICAgICAgTm9kZSBlbnN1cmVTaGFkb3dSb290KGluIEVsZW1l
bnQgaG9zdCkgcmFpc2VzIChET01FeGNlcHRpb24pOwogICAgICAgICBOb2RlIHNoYWRvd1Jvb3Qo
aW4gRWxlbWVudCBob3N0KSByYWlzZXMgKERPTUV4Y2VwdGlvbik7CiAgICAgICAgIE5vZGUgeW91
bmdlc3RTaGFkb3dSb290KGluIEVsZW1lbnQgaG9zdCkgcmFpc2VzIChET01FeGNlcHRpb24pOwog
ICAgICAgICBOb2RlIG9sZGVzdFNoYWRvd1Jvb3QoaW4gRWxlbWVudCBob3N0KSByYWlzZXMgKERP
TUV4Y2VwdGlvbik7CisgICAgICAgIE5vZGUgeW91bmdlclNoYWRvd1Jvb3QoaW4gTm9kZSByb290
KSByYWlzZXMgKERPTUV4Y2VwdGlvbik7CisgICAgICAgIE5vZGUgeW91bmdlclNoYWRvd1Jvb3Qo
aW4gTm9kZSByb290KSByYWlzZXMgKERPTUV4Y2VwdGlvbik7CiAjZW5kaWYKICAgICAgICAgdm9p
ZCBzZXRNdWx0aXBsZVNoYWRvd1N1YnRyZWVzRW5hYmxlZChpbiBib29sZWFuIGVuYWJsZWQpOwog
ICAgICAgICBFbGVtZW50IGluY2x1ZGVyRm9yKGluIE5vZGUgbm9kZSkgcmFpc2VzIChET01FeGNl
cHRpb24pOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvd2luL1dlYktpdDIuZGVmIGIvU291
cmNlL1dlYktpdDIvd2luL1dlYktpdDIuZGVmCmluZGV4IDhhNjAyM2FkOGJlOTBmZWJmNzQyYzlh
MjZlYzM1ZjRiYWNhZmIzYWIuLjkzNGYzMTZjZGIyYjA3MzNjNGJhYjM1MGVlOWFjOGRhODRlN2Vk
MmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL3dpbi9XZWJLaXQyLmRlZgorKysgYi9Tb3Vy
Y2UvV2ViS2l0Mi93aW4vV2ViS2l0Mi5kZWYKQEAgLTE3NCw3ICsxNzQsNyBAQCBFWFBPUlRTCiAg
ICAgICAgID9wYWdlQERvY3VtZW50QFdlYkNvcmVAQFFCRVBBVlBhZ2VAMkBYWgogICAgICAgICA/
cGFpbnRDb250cm9sVGludHNARnJhbWVWaWV3QFdlYkNvcmVAQEFBRVhYWgogICAgICAgICA/cmFu
Z2VGcm9tTG9jYXRpb25BbmRMZW5ndGhAVGV4dEl0ZXJhdG9yQFdlYkNvcmVAQFNBP0FWPyRQYXNz
UmVmUHRyQFZSYW5nZUBXZWJDb3JlQEBAV1RGQEBQQVZFbGVtZW50QDJASEhfTkBaCi0gICAgICAg
ID9yZW1vdmVTaGFkb3dSb290QEVsZW1lbnRAV2ViQ29yZUBAUUFFWFhaCisgICAgICAgID9yZW1v
dmVTaGFkb3dSb290TGlzdEBFbGVtZW50QFdlYkNvcmVAQFFBRVhYWgogICAgICAgICA/c2NyaXB0
RXhlY3V0aW9uQ29udGV4dEBKU0RPTUdsb2JhbE9iamVjdEBXZWJDb3JlQEBRQkVQQVZTY3JpcHRF
eGVjdXRpb25Db250ZXh0QDJAWFoKICAgICAgICAgP3Njcm9sbEVsZW1lbnRUb1JlY3RARnJhbWVW
aWV3QFdlYkNvcmVAQFFBRVhQQVZFbGVtZW50QDJAQUJWSW50UmVjdEAyQEBaCiAgICAgICAgID9z
ZXRET01FeGNlcHRpb25AV2ViQ29yZUBAWUFYUEFWRXhlY1N0YXRlQEpTQ0BASEBaCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0Mi93aW4vV2ViS2l0MkNGTGl0ZS5kZWYgYi9Tb3VyY2UvV2ViS2l0
Mi93aW4vV2ViS2l0MkNGTGl0ZS5kZWYKaW5kZXggMTQ5YjNhZjg2N2NhZDA1YzlkMjVjYmE1M2I5
MzMyMWNiYTY5NTJmNi4uMmQ4MmFiZDNjY2NiNDM5NTBlNzdmNTkyMTU5MDg3OTM0ODNmZWM4ZSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvd2luL1dlYktpdDJDRkxpdGUuZGVmCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL3dpbi9XZWJLaXQyQ0ZMaXRlLmRlZgpAQCAtMTY5LDcgKzE2OSw3IEBAIEVY
UE9SVFMKICAgICAgICAgP3BhZ2VARG9jdW1lbnRAV2ViQ29yZUBAUUJFUEFWUGFnZUAyQFhaCiAg
ICAgICAgID9wYWludENvbnRyb2xUaW50c0BGcmFtZVZpZXdAV2ViQ29yZUBAQUFFWFhaCiAgICAg
ICAgID9yYW5nZUZyb21Mb2NhdGlvbkFuZExlbmd0aEBUZXh0SXRlcmF0b3JAV2ViQ29yZUBAU0E/
QVY/JFBhc3NSZWZQdHJAVlJhbmdlQFdlYkNvcmVAQEBXVEZAQFBBVkVsZW1lbnRAMkBISF9OQFoK
LSAgICAgICAgP3JlbW92ZVNoYWRvd1Jvb3RARWxlbWVudEBXZWJDb3JlQEBRQUVYWFoKKyAgICAg
ICAgP3JlbW92ZVNoYWRvd1Jvb3RMaXN0QEVsZW1lbnRAV2ViQ29yZUBAUUFFWFhaCiAgICAgICAg
ID9zY3JpcHRFeGVjdXRpb25Db250ZXh0QEpTRE9NR2xvYmFsT2JqZWN0QFdlYkNvcmVAQFFCRVBB
VlNjcmlwdEV4ZWN1dGlvbkNvbnRleHRAMkBYWgogICAgICAgICA/c2Nyb2xsRWxlbWVudFRvUmVj
dEBGcmFtZVZpZXdAV2ViQ29yZUBAUUFFWFBBVkVsZW1lbnRAMkBBQlZJbnRSZWN0QDJAQFoKICAg
ICAgICAgP3NldERPTUV4Y2VwdGlvbkBXZWJDb3JlQEBZQVhQQVZFeGVjU3RhdGVASlNDQEBIQFoK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9hdXRvdG9vbHMvc3ltYm9scy5maWx0ZXIgYi9Tb3VyY2UvYXV0
b3Rvb2xzL3N5bWJvbHMuZmlsdGVyCmluZGV4IDFmNmI0MzNhMmE0ZmZkMjgzNjljZDU2MjM0ZjMy
MTdkYzJhMDIxZjguLjg5MzIxNjcwNzY4YzQwNWM1MjkwNGJjMTQzNTljYmJjNGMwYzc1ZjcgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9hdXRvdG9vbHMvc3ltYm9scy5maWx0ZXIKKysrIGIvU291cmNlL2F1
dG90b29scy9zeW1ib2xzLmZpbHRlcgpAQCAtNjYsNyArNjYsNyBAQCBfWk43V2ViQ29yZTZKU05v
ZGUxMHB1dFZpcnR1YWxFUE4zSlNDOUV4ZWNTdGF0ZUVSS05TMV8xMElkZW50aWZpZXJFTlMxXzdK
U1ZhbHVlRQogX1pON1dlYkNvcmU2SlNOb2RlMjB2aXNpdENoaWxkcmVuVmlydHVhbEVSTjNKU0Mx
MVNsb3RWaXNpdG9yRTsKIF9aTjdXZWJDb3JlNkpTTm9kZTZzX2luZm9FOwogX1pON1dlYkNvcmU2
dG9Ob2RlRU4zSlNDN0pTVmFsdWVFOwotX1pON1dlYkNvcmU3RWxlbWVudDE2cmVtb3ZlU2hhZG93
Um9vdEV2OworX1pON1dlYkNvcmU3RWxlbWVudDIwZW1vdmVTaGFkb3dSb290TGlzdEV2OwogX1pO
N1dlYkNvcmU3dG9SYW5nZUVOM0pTQzdKU1ZhbHVlRTsKIF9aTjdXZWJDb3JlOUpTRWxlbWVudDEw
cHV0VmlydHVhbEVQTjNKU0M5RXhlY1N0YXRlRVJLTlMxXzEwSWRlbnRpZmllckVOUzFfN0pTVmFs
dWVFUk5TMV8xNVB1dFByb3BlcnR5U2xvdEU7CiBfWk43V2ViQ29yZTlKU0VsZW1lbnQ2c19pbmZv
RTsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5n
ZUxvZwppbmRleCBjYzIyYWJlNWZiNmIxOWU1OWNmMmZiNmM2ZWQyNDVmNTUxOTAyNjIwLi41NTYz
MWUzODUwNTczZjcwNmMyZDgxODU1ZTUwYjUxZDM2MjY4OGNiIDEwMDY0NAotLS0gYS9MYXlvdXRU
ZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTkg
QEAKKzIwMTItMDItMTYgIFNoaW55YSBLYXdhbmFrYSAgPHNoaW55YWtAY2hyb21pdW0ub3JnPgor
CisgICAgICAgIEVsZW1lbnQgc2hvdWxkIGJlIGFibGUgdG8gaGF2ZSBtdWx0aXBsZSBzaGFkb3cg
cm9vdHMuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03
NzkzMQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICog
ZmFzdC9kb20vc2hhZG93L211bHRpcGxlLXNoYWRvd3Jvb3QtZXhwZWN0ZWQudHh0OiBBZGRlZC4K
KyAgICAgICAgKiBmYXN0L2RvbS9zaGFkb3cvbXVsdGlwbGUtc2hhZG93cm9vdC5odG1sOiBBZGRl
ZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9lZmwvU2tpcHBlZDoKKyAgICAgICAgKiBwbGF0Zm9ybS9n
dGsvU2tpcHBlZDoKKyAgICAgICAgKiBwbGF0Zm9ybS9tYWMvU2tpcHBlZDoKKyAgICAgICAgKiBw
bGF0Zm9ybS9xdC9Ta2lwcGVkOgorICAgICAgICAqIHBsYXRmb3JtL3dpbi9Ta2lwcGVkOgorICAg
ICAgICAqIHBsYXRmb3JtL3dpbmNhaXJvL1NraXBwZWQ6CisKIDIwMTItMDItMTYgIE5vZWwgR29y
ZG9uICA8bm9lbC5nb3Jkb25AZ21haWwuY29tPgogCiAgICAgICAgIFtjaHJvbWl1bV0gUmViYXNl
bGluZSBKUEVHIGltYWdlIHJlc3VsdHMgYWZ0ZXIgcjEwNzM4OQpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvZmFzdC9kb20vc2hhZG93L211bHRpcGxlLXNoYWRvd3Jvb3QtZXhwZWN0ZWQudHh0IGIv
TGF5b3V0VGVzdHMvZmFzdC9kb20vc2hhZG93L211bHRpcGxlLXNoYWRvd3Jvb3QtZXhwZWN0ZWQu
dHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjkxNWE2ZmQxNjhiZjA3M2VlZjIwZTljYzY4YjQ3MDQ2YzA1NDliOGEK
LS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2RvbS9zaGFkb3cvbXVsdGlwbGUt
c2hhZG93cm9vdC1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwxNyBAQAorVGhpcyB0ZXN0IGVuc3Vy
ZSB0aGF0IHRoZSBtdWx0aXBsZSBzaGFkb3cgcm9vdCBpcyBhdmFpbGFibGUuCisKK09uIHN1Y2Nl
c3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5
ICJURVNUIENPTVBMRVRFIi4KKworCitQQVNTIGludGVybmFscy5zaGFkb3dSb290KGRpdikgaXMg
bnVsbAorUEFTUyBpbnRlcm5hbHMuYWRkcmVzcyhpbnRlcm5hbHMuc2hhZG93Um9vdChkaXYpKSBp
cyBpbnRlcm5hbHMuYWRkcmVzcyhzaGFkb3dSb290MSkKK1BBU1MgaW50ZXJuYWxzLm9sZGVyU2hh
ZG93Um9vdChzaGFkb3dSb290MSkgaXMgbnVsbAorUEFTUyBpbnRlcm5hbHMuYWRkcmVzcyhpbnRl
cm5hbHMuc2hhZG93Um9vdChkaXYpKSBpcyBpbnRlcm5hbHMuYWRkcmVzcyhzaGFkb3dSb290MikK
K1BBU1MgaW50ZXJuYWxzLmFkZHJlc3MoaW50ZXJuYWxzLm9sZGVyU2hhZG93Um9vdChzaGFkb3dS
b290MikpIGlzIGludGVybmFscy5hZGRyZXNzKHNoYWRvd1Jvb3QxKQorUEFTUyBpbnRlcm5hbHMu
YWRkcmVzcyhpbnRlcm5hbHMuc2hhZG93Um9vdChkaXYpKSBpcyBpbnRlcm5hbHMuYWRkcmVzcyhz
aGFkb3dSb290MykKK1BBU1MgaW50ZXJuYWxzLmFkZHJlc3MoaW50ZXJuYWxzLm9sZGVyU2hhZG93
Um9vdChzaGFkb3dSb290MykpIGlzIGludGVybmFscy5hZGRyZXNzKHNoYWRvd1Jvb3QyKQorUEFT
UyBpbnRlcm5hbHMuc2hhZG93Um9vdChkaXYpIGlzIG51bGwKK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFy
c2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9m
YXN0L2RvbS9zaGFkb3cvbXVsdGlwbGUtc2hhZG93cm9vdC5odG1sIGIvTGF5b3V0VGVzdHMvZmFz
dC9kb20vc2hhZG93L211bHRpcGxlLXNoYWRvd3Jvb3QuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5kMTEyYTEw
NTViZjE4M2Q0ZGIxOTUyMjM2MjA1ZDIzYTQzMzExN2U5Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5
b3V0VGVzdHMvZmFzdC9kb20vc2hhZG93L211bHRpcGxlLXNoYWRvd3Jvb3QuaHRtbApAQCAtMCww
ICsxLDQxIEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8c2NyaXB0IHNyYz0i
Li4vLi4vanMvcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxi
b2R5PgorPGRpdj4KKyAgPGNvbnRlbnQgaWQ9ImNvbnRlbnQtc2ltcGxlc3QiPjwvY29udGVudD4K
KzwvZGl2PgorPHNjcmlwdD4KK2Rlc2NyaXB0aW9uKCJUaGlzIHRlc3QgZW5zdXJlIHRoYXQgdGhl
IG11bHRpcGxlIHNoYWRvdyByb290IGlzIGF2YWlsYWJsZS4iKTsKKworaW50ZXJuYWxzLnNldE11
bHRpcGxlU2hhZG93U3VidHJlZXNFbmFibGVkKHRydWUpOworCit2YXIgZGl2ID0gZG9jdW1lbnQu
Y3JlYXRlRWxlbWVudCgnZGl2Jyk7CitzaG91bGRCZSgiaW50ZXJuYWxzLnNoYWRvd1Jvb3QoZGl2
KSIsICJudWxsIik7CisvLyBDdXJyZW50bHkgaW50ZXJuYWxzLnNoYWRvd1Jvb3QoZGl2KSBhbmQg
c2hhZG93Um9vdDEgYXJlIGRpZmZlcmVudCBKUyB3cmFwcGVycywKKy8vIHNvIGludGVybmFscy5z
aGFkb3dSb290KGRpdikgPT09IHNoYWRvd1Jvb3QxIGRvZXNuJ3QgaG9sZC4KKy8vIEJ1dCBhY3R1
YWxseSB0aGV5IGNvbnRhaW4gdGhlIHNhbWUgU2hhZG93Um9vdC4gU28gd2UgY29tcGFyZSB0aGVt
IGJ5IGludGVybmFsIGFkZHJlc3MgaGVyZS4KK3ZhciBzaGFkb3dSb290MSA9IG5ldyBXZWJLaXRT
aGFkb3dSb290KGRpdik7CitzaG91bGRCZSgiaW50ZXJuYWxzLmFkZHJlc3MoaW50ZXJuYWxzLnNo
YWRvd1Jvb3QoZGl2KSkiLCAiaW50ZXJuYWxzLmFkZHJlc3Moc2hhZG93Um9vdDEpIik7CitzaG91
bGRCZSgiaW50ZXJuYWxzLm9sZGVyU2hhZG93Um9vdChzaGFkb3dSb290MSkiLCAibnVsbCIpOwor
Cit2YXIgc2hhZG93Um9vdDIgPSBuZXcgV2ViS2l0U2hhZG93Um9vdChkaXYpCitzaG91bGRCZSgi
aW50ZXJuYWxzLmFkZHJlc3MoaW50ZXJuYWxzLnNoYWRvd1Jvb3QoZGl2KSkiLCAiaW50ZXJuYWxz
LmFkZHJlc3Moc2hhZG93Um9vdDIpIik7CitzaG91bGRCZSgiaW50ZXJuYWxzLmFkZHJlc3MoaW50
ZXJuYWxzLm9sZGVyU2hhZG93Um9vdChzaGFkb3dSb290MikpIiwgImludGVybmFscy5hZGRyZXNz
KHNoYWRvd1Jvb3QxKSIpOworCit2YXIgc2hhZG93Um9vdDMgPSBuZXcgV2ViS2l0U2hhZG93Um9v
dChkaXYpOworc2hvdWxkQmUoImludGVybmFscy5hZGRyZXNzKGludGVybmFscy5zaGFkb3dSb290
KGRpdikpIiwgImludGVybmFscy5hZGRyZXNzKHNoYWRvd1Jvb3QzKSIpOworc2hvdWxkQmUoImlu
dGVybmFscy5hZGRyZXNzKGludGVybmFscy5vbGRlclNoYWRvd1Jvb3Qoc2hhZG93Um9vdDMpKSIs
ICJpbnRlcm5hbHMuYWRkcmVzcyhzaGFkb3dSb290MikiKTsKKworaW50ZXJuYWxzLnJlbW92ZVNo
YWRvd1Jvb3QoZGl2KTsKK3Nob3VsZEJlKCJpbnRlcm5hbHMuc2hhZG93Um9vdChkaXYpIiwgIm51
bGwiKTsKKworaW50ZXJuYWxzLnNldE11bHRpcGxlU2hhZG93U3VidHJlZXNFbmFibGVkKGZhbHNl
KTsKKwordmFyIHN1Y2Nlc3NmdWxseVBhcnNlZCA9IHRydWU7Cis8L3NjcmlwdD4KKzxzY3JpcHQg
c3JjPSIuLi8uLi9qcy9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KKzwvYm9k
eT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL2VmbC9Ta2lwcGVk
IGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vZWZsL1NraXBwZWQKaW5kZXggYzllYzQ3OTYwZDFhYjI5
ZmI3Y2ZiYzZkOWVhY2E5NTdlMzk2MDFjMi4uZGQ4YTdiZmU1NWRiNzZkN2NiYTZkNzU5NmQxNjFi
MDJlOGViZmI1ZSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vZWZsL1NraXBwZWQK
KysrIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vZWZsL1NraXBwZWQKQEAgLTE5NzQsNiArMTk3NCw3
IEBAIGZhc3QvY3NzL3N0eWxlLXNjb3BlZAogIyBFTkFCTEUoU0hBRE9XX0RPTSkgaXMgZGlzYWJs
ZWQuCiBmYXN0L2RvbS9zaGFkb3cvc2hhZG93LXJvb3QtanMtYXBpLmh0bWwKIGZhc3QvZG9tL3No
YWRvdy9zaGFkb3ctZGlzYWJsZS5odG1sCitmYXN0L2RvbS9zaGFkb3cvbXVsdGlwbGUtc2hhZG93
cm9vdC5odG1sCiAKICMgQ1NTIEZpbHRlcnMgc3VwcG9ydCBub3QgeWV0IGVuYWJsZWQgKG5lZWRz
IEVOQUJMRV9DU1NfRklMVEVSUykuCiAjIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD02ODQ2OQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vZ3RrL1NraXBw
ZWQgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9ndGsvU2tpcHBlZAppbmRleCA5NDJmZjIyMGIyNTYy
MjM1NTcxMWRkYjVlZTg3ZTExYjJlYWMwNTgyLi5hMGJkMzAyYzI2MzI0YmYwMTY1ZDNkODgwZTRm
ZjAyNDY4NzYzNzc3IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9ndGsvU2tpcHBl
ZAorKysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9ndGsvU2tpcHBlZApAQCAtMzU3LDYgKzM1Nyw3
IEBAIGZhc3QvY3NzL3N0eWxlLXNjb3BlZAogIyBFTkFCTEUoU0hBRE9XX0RPTSkgaXMgZGlzYWJs
ZWQuCiBmYXN0L2RvbS9zaGFkb3cvc2hhZG93LXJvb3QtanMtYXBpLmh0bWwKIGZhc3QvZG9tL3No
YWRvdy9zaGFkb3ctZGlzYWJsZS5odG1sCitmYXN0L2RvbS9zaGFkb3cvbXVsdGlwbGUtc2hhZG93
cm9vdC5odG1sCiAKICMgQ1NTIFJlZ2lvbnMgc3VwcG9ydCBub3QgeWV0IGVuYWJsZWQuIGh0dHA6
Ly93ZWJraXQub3JnL2IvNTczMTIKIGZhc3QvcmVnaW9ucwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvcGxhdGZvcm0vbWFjL1NraXBwZWQgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvU2tpcHBl
ZAppbmRleCAzM2Y0MTliOWRkYzdiZjY5ZGNhYTZhYTgzODMyZGY0MTM4Mjc1OTFiLi5iNTg2MDg0
MTIxM2Q2ZTczMGRhNmU4NjdjZDBkNjcxMzAxY2FmMzE4IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0
cy9wbGF0Zm9ybS9tYWMvU2tpcHBlZAorKysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvU2tp
cHBlZApAQCAtNDE4LDYgKzQxOCw3IEBAIGZhc3QvY3NzL3N0eWxlLXNjb3BlZAogIyBFTkFCTEUo
U0hBRE9XX0RPTSkgaXMgZGlzYWJsZWQuCiBmYXN0L2RvbS9zaGFkb3cvc2hhZG93LXJvb3QtanMt
YXBpLmh0bWwKIGZhc3QvZG9tL3NoYWRvdy9zaGFkb3ctZGlzYWJsZS5odG1sCitmYXN0L2RvbS9z
aGFkb3cvbXVsdGlwbGUtc2hhZG93cm9vdC5odG1sCiAKICMgSlNDIGRvZXMgbm90IHN1cHBvcnQg
c2V0SXNvbGF0ZWRXb3JsZFNlY3VyaXR5T3JpZ2luIChodHRwOi8vd2Via2l0Lm9yZy9iLzYxNTQw
KQogaHR0cC90ZXN0cy9zZWN1cml0eS9pc29sYXRlZFdvcmxkL2Nyb3NzLW9yaWdpbi14aHIuaHRt
bApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vcXQvU2tpcHBlZCBiL0xheW91dFRl
c3RzL3BsYXRmb3JtL3F0L1NraXBwZWQKaW5kZXggZWJlOGNhNzY4ZjYzMDYxYTM0MTA5YWM4YjAy
ZTM3NWJlODg4ZDMyMC4uYmI2ZWJjOTkyYTExOGZjYTQ3NTFkZTI4OWIwMTQ2NDNlOGIwZmNhZSAx
MDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vcXQvU2tpcHBlZAorKysgYi9MYXlvdXRU
ZXN0cy9wbGF0Zm9ybS9xdC9Ta2lwcGVkCkBAIC0xNjEsNiArMTYxLDcgQEAgZmFzdC9jc3Mvc3R5
bGUtc2NvcGVkCiAjIEVOQUJMRShTSEFET1dfRE9NKSBpcyBkaXNhYmxlZC4KIGZhc3QvZG9tL3No
YWRvdy9zaGFkb3ctcm9vdC1qcy1hcGkuaHRtbAogZmFzdC9kb20vc2hhZG93L3NoYWRvdy1kaXNh
YmxlLmh0bWwKK2Zhc3QvZG9tL3NoYWRvdy9tdWx0aXBsZS1zaGFkb3dyb290Lmh0bWwKIAogIyBD
U1MgUmVnaW9ucyBzdXBwb3J0IG5vdCB5ZXQgZW5hYmxlZC4gaHR0cDovL3dlYmtpdC5vcmcvYi81
NzMxMgogZmFzdC9yZWdpb25zCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS93aW4v
U2tpcHBlZCBiL0xheW91dFRlc3RzL3BsYXRmb3JtL3dpbi9Ta2lwcGVkCmluZGV4IDcyMmNlNjNh
OTI2ZThjY2Y4OTFiMzQzZDY5NzRmZjA3ZWRlNTAxZDIuLmI2YTQxNDFjZDA5ODY0MDRjNDAyMzRk
YTVjOTZiNTYxOTRkOGIzN2QgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3BsYXRmb3JtL3dpbi9T
a2lwcGVkCisrKyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL3dpbi9Ta2lwcGVkCkBAIC0xNDUwLDYg
KzE0NTAsNyBAQCBmYXN0L2Nzcy9zdHlsZS1zY29wZWQKICMgRU5BQkxFKFNIQURPV19ET00pIGlz
IGRpc2FibGVkLgogZmFzdC9kb20vc2hhZG93L3NoYWRvdy1yb290LWpzLWFwaS5odG1sCiBmYXN0
L2RvbS9zaGFkb3cvc2hhZG93LWRpc2FibGUuaHRtbAorZmFzdC9kb20vc2hhZG93L211bHRpcGxl
LXNoYWRvd3Jvb3QuaHRtbAogCiAjIENTUyBSZWdpb25zIHN1cHBvcnQgbm90IHlldCBlbmFibGVk
LiBodHRwOi8vd2Via2l0Lm9yZy9iLzU3MzEyCiBmYXN0L3JlZ2lvbnMKZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL3BsYXRmb3JtL3dpbmNhaXJvL1NraXBwZWQgYi9MYXlvdXRUZXN0cy9wbGF0Zm9y
bS93aW5jYWlyby9Ta2lwcGVkCmluZGV4IDg2Mjc4ZGZkN2UxZjU4NmFhN2IxODFlMzUwZTFlNTI5
Y2E2ZjM4NzguLjMzMzYyYWY2OTZhMzIzN2NiZTg1ZjA3ODg2ZjYzNmRmYjE3ZTRiNmUgMTAwNjQ0
Ci0tLSBhL0xheW91dFRlc3RzL3BsYXRmb3JtL3dpbmNhaXJvL1NraXBwZWQKKysrIGIvTGF5b3V0
VGVzdHMvcGxhdGZvcm0vd2luY2Fpcm8vU2tpcHBlZApAQCAtMTk2NSw2ICsxOTY1LDcgQEAgZmFz
dC9jc3Mvc3R5bGUtc2NvcGVkCiAjIEVOQUJMRShTSEFET1dfRE9NKSBpcyBkaXNhYmxlZC4KIGZh
c3QvZG9tL3NoYWRvdy9zaGFkb3ctcm9vdC1qcy1hcGkuaHRtbAogZmFzdC9kb20vc2hhZG93L3No
YWRvdy1kaXNhYmxlLmh0bWwKK2Zhc3QvZG9tL3NoYWRvdy9tdWx0aXBsZS1zaGFkb3dyb290Lmh0
bWwKIAogIyBDU1MgUmVnaW9ucyBzdXBwb3J0IG5vdCB5ZXQgZW5hYmxlZC4gaHR0cDovL3dlYmtp
dC5vcmcvYi81NzMxMgogZmFzdC9yZWdpb25zCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>127507</attachid>
            <date>2012-02-16 20:32:13 -0800</date>
            <delta_ts>2012-02-16 23:48:05 -0800</delta_ts>
            <desc>Test</desc>
            <filename>bug-77931-20120217133212.patch</filename>
            <type>text/plain</type>
            <size>20207</size>
            <attacher name="Shinya Kawanaka">shinyak</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTA4MDE5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMDg0YjNlODdkZDM5NDc2
ZTM3MDhhZWJkMjRmNTY5MmU1OTE4YWNlNy4uMTc4N2VkMTA5N2QyMTQzZjExMTg1Njg5MWQzZDAw
MGVkNjk4MDIyYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM0IEBACisyMDEyLTAyLTE2ICBTaGlu
eWEgS2F3YW5ha2EgIDxzaGlueWFrQGNocm9taXVtLm9yZz4KKworICAgICAgICBFbGVtZW50IHNo
b3VsZCBiZSBhYmxlIHRvIGhhdmUgbXVsdGlwbGUgc2hhZG93IHJvb3RzLgorICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9Nzc5MzEKKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGlzIHBhdGNoIGVuYWJsZXMgYWRk
aW5nIG11bHRpcGxlIHNoYWRvdyBzdWJ0cmVlcyBpbnRvIGVsZW1lbnRzLgorICAgICAgICBUaGlz
IHBhdGNoIGRvZXMgbm90IGNvbnNpZGVyIGhvdyB0aGV5IGFyZSByZW5kZXJlZC4gSXQgb25seSBj
b25zaWRlcnMgeW91bmdlci9vbGRlcgorICAgICAgICBzaGFkb3cgcm9vdHMgYXJlIGNvcnJlY3Qu
CisKKyAgICAgICAgVGVzdDogZmFzdC9kb20vc2hhZG93L211bHRpcGxlLXNoYWRvd3Jvb3QuaHRt
bAorCisgICAgICAgICogZG9tL0VsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RWxlbWVu
dDo6fkVsZW1lbnQpOgorICAgICAgICAoV2ViQ29yZTo6RWxlbWVudDo6YWRkU2hhZG93Um9vdCk6
CisgICAgICAgIChXZWJDb3JlOjpFbGVtZW50OjpyZW1vdmVTaGFkb3dSb290TGlzdCk6CisgICAg
ICAgICogZG9tL0VsZW1lbnQuaDoKKyAgICAgICAgKEVsZW1lbnQpOgorICAgICAgICAqIGRvbS9T
aGFkb3dSb290LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNoYWRvd1Jvb3Q6OmNyZWF0ZSk6Cisg
ICAgICAgICogdGVzdGluZy9JbnRlcm5hbHMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW50ZXJu
YWxzOjphZGRyZXNzKToKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6SW50
ZXJuYWxzOjp5b3VuZ2VyU2hhZG93Um9vdCk6CisgICAgICAgIChXZWJDb3JlOjpJbnRlcm5hbHM6
Om9sZGVyU2hhZG93Um9vdCk6CisgICAgICAgIChXZWJDb3JlOjpJbnRlcm5hbHM6OnJlbW92ZVNo
YWRvd1Jvb3QpOgorICAgICAgICAqIHRlc3RpbmcvSW50ZXJuYWxzLmg6CisgICAgICAgIChJbnRl
cm5hbHMpOgorICAgICAgICAqIHRlc3RpbmcvSW50ZXJuYWxzLmlkbDoKKwogMjAxMi0wMi0xNiAg
S2VudCBUYW11cmEgIDx0a2VudEBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgUnVuIHNvcnQtWGNv
ZGUtcHJvamVjdC1maWxlLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5leHAu
aW4gYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmV4cC5pbgppbmRleCBlNTJjZDI5YWE4MzZjODZj
YTUwNjQ5NzlhOTcwZDZiYWVkMWM1NTliLi41NDkzYTZhNGFkM2U2NmIxOTY4YmYwZmYyYjJjNGYy
ZDdmMmZmMjI0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmV4cC5pbgorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmV4cC5pbgpAQCAtOTEwLDcgKzkxMCw3IEBAIF9fWk43
V2ViQ29yZTZXaWRnZXREMkV2CiBfX1pON1dlYkNvcmU2dG9Ob2RlRU4zSlNDN0pTVmFsdWVFCiBf
X1pON1dlYkNvcmU3Q29uc29sZTIxc2hvdWxkUHJpbnRFeGNlcHRpb25zRXYKIF9fWk43V2ViQ29y
ZTdDb25zb2xlMjRzZXRTaG91bGRQcmludEV4Y2VwdGlvbnNFYgotX19aTjdXZWJDb3JlN0VsZW1l
bnQxNnJlbW92ZVNoYWRvd1Jvb3RFdgorX19aTjdXZWJDb3JlN0VsZW1lbnQyMHJlbW92ZVNoYWRv
d1Jvb3RMaXN0RXYKIF9fWk43V2ViQ29yZTdFbGVtZW50MjFib3VuZHNJblJvb3RWaWV3U3BhY2VF
dgogX19aTjdXZWJDb3JlN0VsZW1lbnQ5aW5uZXJUZXh0RXYKIF9fWk43V2ViQ29yZTdJbnRSZWN0
NXNjYWxlRWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmNwcAppbmRleCAxYTQ2NjI0MzBhODllYjhmZWZjNjY4
ZmMxNjA2NWY1OGRhM2Y5NDFjLi40ODMzMjc1YTg1YWZkYmU0ZDFiNGNjNmJjMDViNWIxZDYyZGVl
NTFmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuY3BwCkBAIC03Niw2ICs3NiwxMCBAQAogI2luY2x1ZGUg
IlNWR05hbWVzLmgiCiAjZW5kaWYKIAorI2lmIEVOQUJMRShTSEFET1dfRE9NKQorI2luY2x1ZGUg
IlJ1bnRpbWVFbmFibGVkRmVhdHVyZXMuaCIKKyNlbmRpZgorCiBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAKIHVzaW5nIG5hbWVzcGFjZSBIVE1MTmFtZXM7CkBAIC0xMjIsNyArMTI2LDcgQEAgUGFzc1Jl
ZlB0cjxFbGVtZW50PiBFbGVtZW50OjpjcmVhdGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFt
ZSwgRG9jdW1lbnQqIGRvY3UKIAogRWxlbWVudDo6fkVsZW1lbnQoKQogewotICAgIHJlbW92ZVNo
YWRvd1Jvb3QoKTsKKyAgICByZW1vdmVTaGFkb3dSb290TGlzdCgpOwogICAgIGlmIChtX2F0dHJp
YnV0ZU1hcCkKICAgICAgICAgbV9hdHRyaWJ1dGVNYXAtPmRldGFjaEZyb21FbGVtZW50KCk7CiB9
CkBAIC0xMTkxLDcgKzExOTUsNyBAQCBzdGF0aWMgYm9vbCB2YWxpZGF0ZVNoYWRvd1Jvb3QoRG9j
dW1lbnQqIGRvY3VtZW50LCBTaGFkb3dSb290KiBzaGFkb3dSb290LCBFeGNlcAogICAgIHJldHVy
biB0cnVlOwogfQogCi12b2lkIEVsZW1lbnQ6OnNldFNoYWRvd1Jvb3QoUGFzc1JlZlB0cjxTaGFk
b3dSb290PiBzaGFkb3dSb290LCBFeGNlcHRpb25Db2RlJiBlYykKK3ZvaWQgRWxlbWVudDo6YWRk
U2hhZG93Um9vdChQYXNzUmVmUHRyPFNoYWRvd1Jvb3Q+IHNoYWRvd1Jvb3QsIEV4Y2VwdGlvbkNv
ZGUmIGVjKQogewogICAgIGlmICghdmFsaWRhdGVTaGFkb3dSb290KGRvY3VtZW50KCksIHNoYWRv
d1Jvb3QuZ2V0KCksIGVjKSkKICAgICAgICAgcmV0dXJuOwpAQCAtMTE5OSw3ICsxMjAzLDEzIEBA
IHZvaWQgRWxlbWVudDo6c2V0U2hhZG93Um9vdChQYXNzUmVmUHRyPFNoYWRvd1Jvb3Q+IHNoYWRv
d1Jvb3QsIEV4Y2VwdGlvbkNvZGUmIGVjCiAgICAgaWYgKCFoYXNSYXJlRGF0YSgpKQogICAgICAg
ICBlbnN1cmVSYXJlRGF0YSgpOwogCi0gICAgcmVtb3ZlU2hhZG93Um9vdCgpOworI2lmIEVOQUJM
RShTSEFET1dfRE9NKQorICAgIGlmICghUnVudGltZUVuYWJsZWRGZWF0dXJlczo6bXVsdGlwbGVT
aGFkb3dTdWJ0cmVlc0VuYWJsZWQoKSkKKyAgICAgICAgcmVtb3ZlU2hhZG93Um9vdExpc3QoKTsK
KyNlbHNlCisgICAgcmVtb3ZlU2hhZG93Um9vdExpc3QoKTsKKyNlbmRpZgorCiAKICAgICBzaGFk
b3dSb290LT5zZXRTaGFkb3dIb3N0KHRoaXMpOwogICAgIHNoYWRvd1Jvb3RMaXN0KCktPnB1c2hT
aGFkb3dSb290KHNoYWRvd1Jvb3QuZ2V0KCkpOwpAQCAtMTIyMSw3ICsxMjMxLDcgQEAgU2hhZG93
Um9vdCogRWxlbWVudDo6ZW5zdXJlU2hhZG93Um9vdCgpCiAgICAgcmV0dXJuIFNoYWRvd1Jvb3Q6
OmNyZWF0ZSh0aGlzLCBTaGFkb3dSb290OjpDcmVhdGluZ1VzZXJBZ2VudFNoYWRvd1Jvb3QpLmdl
dCgpOwogfQogCi12b2lkIEVsZW1lbnQ6OnJlbW92ZVNoYWRvd1Jvb3QoKQordm9pZCBFbGVtZW50
OjpyZW1vdmVTaGFkb3dSb290TGlzdCgpCiB7CiAgICAgaWYgKCFoYXNTaGFkb3dSb290KCkpCiAg
ICAgICAgIHJldHVybjsKQEAgLTEyMzMsMTYgKzEyNDMsMTkgQEAgdm9pZCBFbGVtZW50OjpyZW1v
dmVTaGFkb3dSb290KCkKICAgICAgICAgICAgIG9sZFJvb3QtPmRldGFjaCgpOwogCiAgICAgICAg
IG9sZFJvb3QtPnNldFNoYWRvd0hvc3QoMCk7CisgICAgICAgIG9sZFJvb3QtPnNldFByZXYoMCk7
CisgICAgICAgIG9sZFJvb3QtPnNldE5leHQoMCk7CiAgICAgICAgIGRvY3VtZW50KCktPmFkb3B0
SWZOZWVkZWQob2xkUm9vdC5nZXQoKSk7CiAgICAgICAgIGlmIChvbGRSb290LT5pbkRvY3VtZW50
KCkpCiAgICAgICAgICAgICBvbGRSb290LT5yZW1vdmVkRnJvbURvY3VtZW50KCk7CiAgICAgICAg
IGVsc2UKICAgICAgICAgICAgIG9sZFJvb3QtPnJlbW92ZWRGcm9tVHJlZSh0cnVlKTsKLSAgICAg
ICAgaWYgKGF0dGFjaGVkKCkpIHsKLSAgICAgICAgICAgIGZvciAoTm9kZSogY2hpbGQgPSBmaXJz
dENoaWxkKCk7IGNoaWxkOyBjaGlsZCA9IGNoaWxkLT5uZXh0U2libGluZygpKSB7Ci0gICAgICAg
ICAgICAgICAgaWYgKCFjaGlsZC0+YXR0YWNoZWQoKSkKLSAgICAgICAgICAgICAgICAgICAgY2hp
bGQtPmxhenlBdHRhY2goKTsKLSAgICAgICAgICAgIH0KKyAgICB9CisKKyAgICBpZiAoYXR0YWNo
ZWQoKSkgeworICAgICAgICBmb3IgKE5vZGUqIGNoaWxkID0gZmlyc3RDaGlsZCgpOyBjaGlsZDsg
Y2hpbGQgPSBjaGlsZC0+bmV4dFNpYmxpbmcoKSkgeworICAgICAgICAgICAgaWYgKCFjaGlsZC0+
YXR0YWNoZWQoKSkKKyAgICAgICAgICAgICAgICBjaGlsZC0+bGF6eUF0dGFjaCgpOwogICAgICAg
ICB9CiAgICAgfQogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuaCBi
L1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmgKaW5kZXggMzI4ZDI2NmE2NzQxNDE3MjdhYjk2
Mzk2MWFmNjkwNGI2NzVmMjljYy4uOTE5NGNkMjBmNjc3NDFlMzVlNDM2ZGY2OTRjNDE1OGI2MjM5
NmI4YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9kb20vRWxlbWVudC5oCkBAIC0yNTUsMTIgKzI1NSwxMSBAQCBwdWJsaWM6CiAK
ICAgICBib29sIGhhc1NoYWRvd1Jvb3QoKSBjb25zdDsKICAgICBTaGFkb3dSb290TGlzdCogc2hh
ZG93Um9vdExpc3QoKSBjb25zdDsKLQotICAgIC8vIEZJWE1FOiBUaGVzZSBBUEkgd2lsbCBiZSBt
b3ZlZCB0byBTaGFkb3dSb290TGlzdC4KLSAgICAvLyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9NzgzMTMKLSAgICB2b2lkIHNldFNoYWRvd1Jvb3QoUGFzc1JlZlB0cjxT
aGFkb3dSb290PiwgRXhjZXB0aW9uQ29kZSYpOworICAgIHZvaWQgYWRkU2hhZG93Um9vdChQYXNz
UmVmUHRyPFNoYWRvd1Jvb3Q+LCBFeGNlcHRpb25Db2RlJik7CisgICAgdm9pZCByZW1vdmVTaGFk
b3dSb290TGlzdCgpOworICAgIC8vIEZJWE1FOiBlbnN1cmVTaGFkb3dSb290KCkgd2lsbCBiZSBy
ZW1vdmVkIGxhdGVyLgorICAgIC8vIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD03NzYwOAogICAgIFNoYWRvd1Jvb3QqIGVuc3VyZVNoYWRvd1Jvb3QoKTsKLSAgICB2b2lk
IHJlbW92ZVNoYWRvd1Jvb3QoKTsKIAogICAgIHZpcnR1YWwgY29uc3QgQXRvbWljU3RyaW5nJiBz
aGFkb3dQc2V1ZG9JZCgpIGNvbnN0OwogICAgIHZvaWQgc2V0U2hhZG93UHNldWRvSWQoY29uc3Qg
QXRvbWljU3RyaW5nJiwgRXhjZXB0aW9uQ29kZSYgPSBBU1NFUlRfTk9fRVhDRVBUSU9OKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9TaGFkb3dSb290LmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2RvbS9TaGFkb3dSb290LmNwcAppbmRleCBlZDkwZjBmZWM4MGQ1OGI3OGRmN2JiNzAyNGQx
MTQyMGNmNmY1ZmYzLi45MjE2YTE4NDdmMWMwNzUwZWMwNTYwNmVjMDRmOWVhOTFmN2E5OThiIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vU2hhZG93Um9vdC5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvZG9tL1NoYWRvd1Jvb3QuY3BwCkBAIC0xMjQsNyArMTI0LDcgQEAgUGFzc1JlZlB0
cjxTaGFkb3dSb290PiBTaGFkb3dSb290OjpjcmVhdGUoRWxlbWVudCogZWxlbWVudCwgU2hhZG93
Um9vdENyZWF0aW9uUHUKICAgICBSZWZQdHI8U2hhZG93Um9vdD4gc2hhZG93Um9vdCA9IGFkb3B0
UmVmKG5ldyBTaGFkb3dSb290KGVsZW1lbnQtPmRvY3VtZW50KCkpKTsKIAogICAgIGVjID0gMDsK
LSAgICBlbGVtZW50LT5zZXRTaGFkb3dSb290KHNoYWRvd1Jvb3QsIGVjKTsKKyAgICBlbGVtZW50
LT5hZGRTaGFkb3dSb290KHNoYWRvd1Jvb3QsIGVjKTsKICAgICBpZiAoZWMpCiAgICAgICAgIHJl
dHVybiAwOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5jcHAKaW5kZXggMTU2MjBjZDBk
YWJlYzZmOWVlMmIwMjFmZmZhNmJlZjk1ZGEzMzdkNS4uZmQzNzc4NmM1NTg5YWMyMjdjZmNlMTJk
OTVjNDVkYTMyODk1M2U1NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRl
cm5hbHMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNwcApAQCAt
MTE5LDYgKzExOSwxNCBAQCBJbnRlcm5hbHM6OkludGVybmFscyhEb2N1bWVudCogZG9jdW1lbnQp
CiAgICAgcmVzZXQoZG9jdW1lbnQpOwogfQogCitTdHJpbmcgSW50ZXJuYWxzOjphZGRyZXNzKE5v
ZGUqIG5vZGUpCit7CisgICAgY2hhciBidWZbMzJdOworICAgIHNwcmludGYoYnVmLCAiJXAiLCBu
b2RlKTsKKworICAgIHJldHVybiBTdHJpbmcoYnVmKTsKK30KKwogYm9vbCBJbnRlcm5hbHM6Omlz
UHJlbG9hZGVkKERvY3VtZW50KiBkb2N1bWVudCwgY29uc3QgU3RyaW5nJiB1cmwpCiB7CiAgICAg
aWYgKCFkb2N1bWVudCkKQEAgLTIzMSw2ICsyMzksMjYgQEAgSW50ZXJuYWxzOjpTaGFkb3dSb290
SWZTaGFkb3dET01FbmFibGVkT3JOb2RlKiBJbnRlcm5hbHM6Om9sZGVzdFNoYWRvd1Jvb3QoRWxl
bWUKICAgICByZXR1cm4gaG9zdC0+c2hhZG93Um9vdExpc3QoKS0+b2xkZXN0U2hhZG93Um9vdCgp
OwogfQogCitJbnRlcm5hbHM6OlNoYWRvd1Jvb3RJZlNoYWRvd0RPTUVuYWJsZWRPck5vZGUqIElu
dGVybmFsczo6eW91bmdlclNoYWRvd1Jvb3QoTm9kZSogc2hhZG93LCBFeGNlcHRpb25Db2RlJiBl
YykKK3sKKyAgICBpZiAoIXNoYWRvdyB8fCAhc2hhZG93LT5pc1NoYWRvd1Jvb3QoKSkgeworICAg
ICAgICBlYyA9IElOVkFMSURfQUNDRVNTX0VSUjsKKyAgICAgICAgcmV0dXJuIDA7CisgICAgfQor
CisgICAgcmV0dXJuIHRvU2hhZG93Um9vdChzaGFkb3cpLT55b3VuZ2VyU2hhZG93Um9vdCgpOwor
fQorCitJbnRlcm5hbHM6OlNoYWRvd1Jvb3RJZlNoYWRvd0RPTUVuYWJsZWRPck5vZGUqIEludGVy
bmFsczo6b2xkZXJTaGFkb3dSb290KE5vZGUqIHNoYWRvdywgRXhjZXB0aW9uQ29kZSYgZWMpCit7
CisgICAgaWYgKCFzaGFkb3cgfHwgIXNoYWRvdy0+aXNTaGFkb3dSb290KCkpIHsKKyAgICAgICAg
ZWMgPSBJTlZBTElEX0FDQ0VTU19FUlI7CisgICAgICAgIHJldHVybiAwOworICAgIH0KKworICAg
IHJldHVybiB0b1NoYWRvd1Jvb3Qoc2hhZG93KS0+b2xkZXJTaGFkb3dSb290KCk7Cit9CisKIHZv
aWQgSW50ZXJuYWxzOjpyZW1vdmVTaGFkb3dSb290KEVsZW1lbnQqIGhvc3QsIEV4Y2VwdGlvbkNv
ZGUmIGVjKQogewogICAgIGlmICghaG9zdCkgewpAQCAtMjM4LDcgKzI2Niw3IEBAIHZvaWQgSW50
ZXJuYWxzOjpyZW1vdmVTaGFkb3dSb290KEVsZW1lbnQqIGhvc3QsIEV4Y2VwdGlvbkNvZGUmIGVj
KQogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgaG9zdC0+cmVtb3ZlU2hhZG93Um9vdCgp
OworICAgIGhvc3QtPnJlbW92ZVNoYWRvd1Jvb3RMaXN0KCk7CiB9CiAKIHZvaWQgSW50ZXJuYWxz
OjpzZXRNdWx0aXBsZVNoYWRvd1N1YnRyZWVzRW5hYmxlZChib29sIGVuYWJsZWQpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5oIGIvU291cmNlL1dlYkNvcmUv
dGVzdGluZy9JbnRlcm5hbHMuaAppbmRleCA3Y2RlZTE3MTczNDU0MmE2MDkwMmUyOWFjMjAzOTVm
ODY2YzhmNjJkLi4xMTgzMTg1MzFlMDA3YTY4YTUzMDU2OTNhZDk2OTVhZTI4MmIxMzEzIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmgKQEAgLTU1LDYgKzU1LDggQEAgcHVibGljOgogCiAg
ICAgU3RyaW5nIGVsZW1lbnRSZW5kZXJUcmVlQXNUZXh0KEVsZW1lbnQqLCBFeGNlcHRpb25Db2Rl
Jik7CiAKKyAgICBTdHJpbmcgYWRkcmVzcyhOb2RlKik7CisKICAgICBib29sIGlzUHJlbG9hZGVk
KERvY3VtZW50KiwgY29uc3QgU3RyaW5nJiB1cmwpOwogCiAgICAgc2l6ZV90IG51bWJlck9mU2Nv
cGVkSFRNTFN0eWxlQ2hpbGRyZW4oY29uc3QgTm9kZSosIEV4Y2VwdGlvbkNvZGUmKSBjb25zdDsK
QEAgLTY4LDYgKzcwLDggQEAgcHVibGljOgogICAgIFNoYWRvd1Jvb3RJZlNoYWRvd0RPTUVuYWJs
ZWRPck5vZGUqIHNoYWRvd1Jvb3QoRWxlbWVudCogaG9zdCwgRXhjZXB0aW9uQ29kZSYpOwogICAg
IFNoYWRvd1Jvb3RJZlNoYWRvd0RPTUVuYWJsZWRPck5vZGUqIHlvdW5nZXN0U2hhZG93Um9vdChF
bGVtZW50KiBob3N0LCBFeGNlcHRpb25Db2RlJik7CiAgICAgU2hhZG93Um9vdElmU2hhZG93RE9N
RW5hYmxlZE9yTm9kZSogb2xkZXN0U2hhZG93Um9vdChFbGVtZW50KiBob3N0LCBFeGNlcHRpb25D
b2RlJik7CisgICAgU2hhZG93Um9vdElmU2hhZG93RE9NRW5hYmxlZE9yTm9kZSogeW91bmdlclNo
YWRvd1Jvb3QoTm9kZSogc2hhZG93LCBFeGNlcHRpb25Db2RlJik7CisgICAgU2hhZG93Um9vdElm
U2hhZG93RE9NRW5hYmxlZE9yTm9kZSogb2xkZXJTaGFkb3dSb290KE5vZGUqIHNoYWRvdywgRXhj
ZXB0aW9uQ29kZSYpOwogICAgIHZvaWQgcmVtb3ZlU2hhZG93Um9vdChFbGVtZW50KiBob3N0LCBF
eGNlcHRpb25Db2RlJik7CiAgICAgdm9pZCBzZXRNdWx0aXBsZVNoYWRvd1N1YnRyZWVzRW5hYmxl
ZChib29sKTsKICAgICBFbGVtZW50KiBpbmNsdWRlckZvcihOb2RlKiwgRXhjZXB0aW9uQ29kZSYp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuaWRsIGIvU291
cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuaWRsCmluZGV4IDY1ZGE2Mjk2YTU5NGNhMmI5
NGFlZWFjNzQ5YmZkMDBjYTk3NzlmNTEuLmM4ODkyMTRlMzUzNWQyZGQxMTU3MjFkZmFiYTkwNDg1
NTA2YzMyOWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmlk
bAorKysgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5pZGwKQEAgLTI3LDYgKzI3
LDggQEAgbW9kdWxlIHdpbmRvdyB7CiAgICAgaW50ZXJmYWNlIFsKICAgICAgICAgT21pdENvbnN0
cnVjdG9yCiAgICAgXSBJbnRlcm5hbHMgeworICAgICAgICBET01TdHJpbmcgYWRkcmVzcyhpbiBO
b2RlIG5vZGUpOworCiAgICAgICAgIERPTVN0cmluZyBlbGVtZW50UmVuZGVyVHJlZUFzVGV4dChp
biBFbGVtZW50IGVsZW1lbnQpIHJhaXNlcyhET01FeGNlcHRpb24pOwogICAgICAgICBib29sZWFu
IGlzUHJlbG9hZGVkKGluIERvY3VtZW50IGRvY3VtZW50LCBpbiBET01TdHJpbmcgdXJsKTsKIApA
QCAtMzcsMTEgKzM5LDE1IEBAIG1vZHVsZSB3aW5kb3cgewogICAgICAgICBTaGFkb3dSb290IHNo
YWRvd1Jvb3QoaW4gRWxlbWVudCBob3N0KSByYWlzZXMgKERPTUV4Y2VwdGlvbik7CiAgICAgICAg
IFNoYWRvd1Jvb3QgeW91bmdlc3RTaGFkb3dSb290KGluIEVsZW1lbnQgaG9zdCkgcmFpc2VzIChE
T01FeGNlcHRpb24pOwogICAgICAgICBTaGFkb3dSb290IG9sZGVzdFNoYWRvd1Jvb3QoaW4gRWxl
bWVudCBob3N0KSByYWlzZXMgKERPTUV4Y2VwdGlvbik7CisgICAgICAgIFNoYWRvd1Jvb3QgeW91
bmdlclNoYWRvd1Jvb3QoaW4gTm9kZSByb290KSByYWlzZXMgKERPTUV4Y2VwdGlvbik7CisgICAg
ICAgIFNoYWRvd1Jvb3Qgb2xkZXJTaGFkb3dSb290KGluIE5vZGUgcm9vdCkgcmFpc2VzIChET01F
eGNlcHRpb24pOwogI2Vsc2UKICAgICAgICAgTm9kZSBlbnN1cmVTaGFkb3dSb290KGluIEVsZW1l
bnQgaG9zdCkgcmFpc2VzIChET01FeGNlcHRpb24pOwogICAgICAgICBOb2RlIHNoYWRvd1Jvb3Qo
aW4gRWxlbWVudCBob3N0KSByYWlzZXMgKERPTUV4Y2VwdGlvbik7CiAgICAgICAgIE5vZGUgeW91
bmdlc3RTaGFkb3dSb290KGluIEVsZW1lbnQgaG9zdCkgcmFpc2VzIChET01FeGNlcHRpb24pOwog
ICAgICAgICBOb2RlIG9sZGVzdFNoYWRvd1Jvb3QoaW4gRWxlbWVudCBob3N0KSByYWlzZXMgKERP
TUV4Y2VwdGlvbik7CisgICAgICAgIE5vZGUgeW91bmdlclNoYWRvd1Jvb3QoaW4gTm9kZSByb290
KSByYWlzZXMgKERPTUV4Y2VwdGlvbik7CisgICAgICAgIE5vZGUgeW91bmdlclNoYWRvd1Jvb3Qo
aW4gTm9kZSByb290KSByYWlzZXMgKERPTUV4Y2VwdGlvbik7CiAjZW5kaWYKICAgICAgICAgdm9p
ZCBzZXRNdWx0aXBsZVNoYWRvd1N1YnRyZWVzRW5hYmxlZChpbiBib29sZWFuIGVuYWJsZWQpOwog
ICAgICAgICBFbGVtZW50IGluY2x1ZGVyRm9yKGluIE5vZGUgbm9kZSkgcmFpc2VzIChET01FeGNl
cHRpb24pOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvd2luL1dlYktpdDIuZGVmIGIvU291
cmNlL1dlYktpdDIvd2luL1dlYktpdDIuZGVmCmluZGV4IDhhNjAyM2FkOGJlOTBmZWJmNzQyYzlh
MjZlYzM1ZjRiYWNhZmIzYWIuLjkzNGYzMTZjZGIyYjA3MzNjNGJhYjM1MGVlOWFjOGRhODRlN2Vk
MmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL3dpbi9XZWJLaXQyLmRlZgorKysgYi9Tb3Vy
Y2UvV2ViS2l0Mi93aW4vV2ViS2l0Mi5kZWYKQEAgLTE3NCw3ICsxNzQsNyBAQCBFWFBPUlRTCiAg
ICAgICAgID9wYWdlQERvY3VtZW50QFdlYkNvcmVAQFFCRVBBVlBhZ2VAMkBYWgogICAgICAgICA/
cGFpbnRDb250cm9sVGludHNARnJhbWVWaWV3QFdlYkNvcmVAQEFBRVhYWgogICAgICAgICA/cmFu
Z2VGcm9tTG9jYXRpb25BbmRMZW5ndGhAVGV4dEl0ZXJhdG9yQFdlYkNvcmVAQFNBP0FWPyRQYXNz
UmVmUHRyQFZSYW5nZUBXZWJDb3JlQEBAV1RGQEBQQVZFbGVtZW50QDJASEhfTkBaCi0gICAgICAg
ID9yZW1vdmVTaGFkb3dSb290QEVsZW1lbnRAV2ViQ29yZUBAUUFFWFhaCisgICAgICAgID9yZW1v
dmVTaGFkb3dSb290TGlzdEBFbGVtZW50QFdlYkNvcmVAQFFBRVhYWgogICAgICAgICA/c2NyaXB0
RXhlY3V0aW9uQ29udGV4dEBKU0RPTUdsb2JhbE9iamVjdEBXZWJDb3JlQEBRQkVQQVZTY3JpcHRF
eGVjdXRpb25Db250ZXh0QDJAWFoKICAgICAgICAgP3Njcm9sbEVsZW1lbnRUb1JlY3RARnJhbWVW
aWV3QFdlYkNvcmVAQFFBRVhQQVZFbGVtZW50QDJAQUJWSW50UmVjdEAyQEBaCiAgICAgICAgID9z
ZXRET01FeGNlcHRpb25AV2ViQ29yZUBAWUFYUEFWRXhlY1N0YXRlQEpTQ0BASEBaCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0Mi93aW4vV2ViS2l0MkNGTGl0ZS5kZWYgYi9Tb3VyY2UvV2ViS2l0
Mi93aW4vV2ViS2l0MkNGTGl0ZS5kZWYKaW5kZXggMTQ5YjNhZjg2N2NhZDA1YzlkMjVjYmE1M2I5
MzMyMWNiYTY5NTJmNi4uMmQ4MmFiZDNjY2NiNDM5NTBlNzdmNTkyMTU5MDg3OTM0ODNmZWM4ZSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvd2luL1dlYktpdDJDRkxpdGUuZGVmCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL3dpbi9XZWJLaXQyQ0ZMaXRlLmRlZgpAQCAtMTY5LDcgKzE2OSw3IEBAIEVY
UE9SVFMKICAgICAgICAgP3BhZ2VARG9jdW1lbnRAV2ViQ29yZUBAUUJFUEFWUGFnZUAyQFhaCiAg
ICAgICAgID9wYWludENvbnRyb2xUaW50c0BGcmFtZVZpZXdAV2ViQ29yZUBAQUFFWFhaCiAgICAg
ICAgID9yYW5nZUZyb21Mb2NhdGlvbkFuZExlbmd0aEBUZXh0SXRlcmF0b3JAV2ViQ29yZUBAU0E/
QVY/JFBhc3NSZWZQdHJAVlJhbmdlQFdlYkNvcmVAQEBXVEZAQFBBVkVsZW1lbnRAMkBISF9OQFoK
LSAgICAgICAgP3JlbW92ZVNoYWRvd1Jvb3RARWxlbWVudEBXZWJDb3JlQEBRQUVYWFoKKyAgICAg
ICAgP3JlbW92ZVNoYWRvd1Jvb3RMaXN0QEVsZW1lbnRAV2ViQ29yZUBAUUFFWFhaCiAgICAgICAg
ID9zY3JpcHRFeGVjdXRpb25Db250ZXh0QEpTRE9NR2xvYmFsT2JqZWN0QFdlYkNvcmVAQFFCRVBB
VlNjcmlwdEV4ZWN1dGlvbkNvbnRleHRAMkBYWgogICAgICAgICA/c2Nyb2xsRWxlbWVudFRvUmVj
dEBGcmFtZVZpZXdAV2ViQ29yZUBAUUFFWFBBVkVsZW1lbnRAMkBBQlZJbnRSZWN0QDJAQFoKICAg
ICAgICAgP3NldERPTUV4Y2VwdGlvbkBXZWJDb3JlQEBZQVhQQVZFeGVjU3RhdGVASlNDQEBIQFoK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9hdXRvdG9vbHMvc3ltYm9scy5maWx0ZXIgYi9Tb3VyY2UvYXV0
b3Rvb2xzL3N5bWJvbHMuZmlsdGVyCmluZGV4IDFmNmI0MzNhMmE0ZmZkMjgzNjljZDU2MjM0ZjMy
MTdkYzJhMDIxZjguLmQ4ZGUzZmI1MmFmMzBjMDE5ZTFiMzg3NWE0NTA4ZGY1OWNmNGJjMjUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9hdXRvdG9vbHMvc3ltYm9scy5maWx0ZXIKKysrIGIvU291cmNlL2F1
dG90b29scy9zeW1ib2xzLmZpbHRlcgpAQCAtNjYsNyArNjYsNyBAQCBfWk43V2ViQ29yZTZKU05v
ZGUxMHB1dFZpcnR1YWxFUE4zSlNDOUV4ZWNTdGF0ZUVSS05TMV8xMElkZW50aWZpZXJFTlMxXzdK
U1ZhbHVlRQogX1pON1dlYkNvcmU2SlNOb2RlMjB2aXNpdENoaWxkcmVuVmlydHVhbEVSTjNKU0Mx
MVNsb3RWaXNpdG9yRTsKIF9aTjdXZWJDb3JlNkpTTm9kZTZzX2luZm9FOwogX1pON1dlYkNvcmU2
dG9Ob2RlRU4zSlNDN0pTVmFsdWVFOwotX1pON1dlYkNvcmU3RWxlbWVudDE2cmVtb3ZlU2hhZG93
Um9vdEV2OworX1pON1dlYkNvcmU3RWxlbWVudDIwcmVtb3ZlU2hhZG93Um9vdExpc3RFdjsKIF9a
TjdXZWJDb3JlN3RvUmFuZ2VFTjNKU0M3SlNWYWx1ZUU7CiBfWk43V2ViQ29yZTlKU0VsZW1lbnQx
MHB1dFZpcnR1YWxFUE4zSlNDOUV4ZWNTdGF0ZUVSS05TMV8xMElkZW50aWZpZXJFTlMxXzdKU1Zh
bHVlRVJOUzFfMTVQdXRQcm9wZXJ0eVNsb3RFOwogX1pON1dlYkNvcmU5SlNFbGVtZW50NnNfaW5m
b0U7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFu
Z2VMb2cKaW5kZXggY2MyMmFiZTVmYjZiMTllNTljZjJmYjZjNmVkMjQ1ZjU1MTkwMjYyMC4uNTU2
MzFlMzg1MDU3M2Y3MDZjMmQ4MTg1NWU1MGI1MWQzNjI2ODhjYiAxMDA2NDQKLS0tIGEvTGF5b3V0
VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE5
IEBACisyMDEyLTAyLTE2ICBTaGlueWEgS2F3YW5ha2EgIDxzaGlueWFrQGNocm9taXVtLm9yZz4K
KworICAgICAgICBFbGVtZW50IHNob3VsZCBiZSBhYmxlIHRvIGhhdmUgbXVsdGlwbGUgc2hhZG93
IHJvb3RzLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
Nzc5MzEKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAq
IGZhc3QvZG9tL3NoYWRvdy9tdWx0aXBsZS1zaGFkb3dyb290LWV4cGVjdGVkLnR4dDogQWRkZWQu
CisgICAgICAgICogZmFzdC9kb20vc2hhZG93L211bHRpcGxlLXNoYWRvd3Jvb3QuaHRtbDogQWRk
ZWQuCisgICAgICAgICogcGxhdGZvcm0vZWZsL1NraXBwZWQ6CisgICAgICAgICogcGxhdGZvcm0v
Z3RrL1NraXBwZWQ6CisgICAgICAgICogcGxhdGZvcm0vbWFjL1NraXBwZWQ6CisgICAgICAgICog
cGxhdGZvcm0vcXQvU2tpcHBlZDoKKyAgICAgICAgKiBwbGF0Zm9ybS93aW4vU2tpcHBlZDoKKyAg
ICAgICAgKiBwbGF0Zm9ybS93aW5jYWlyby9Ta2lwcGVkOgorCiAyMDEyLTAyLTE2ICBOb2VsIEdv
cmRvbiAgPG5vZWwuZ29yZG9uQGdtYWlsLmNvbT4KIAogICAgICAgICBbY2hyb21pdW1dIFJlYmFz
ZWxpbmUgSlBFRyBpbWFnZSByZXN1bHRzIGFmdGVyIHIxMDczODkKZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2Zhc3QvZG9tL3NoYWRvdy9tdWx0aXBsZS1zaGFkb3dyb290LWV4cGVjdGVkLnR4dCBi
L0xheW91dFRlc3RzL2Zhc3QvZG9tL3NoYWRvdy9tdWx0aXBsZS1zaGFkb3dyb290LWV4cGVjdGVk
LnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi45MTVhNmZkMTY4YmYwNzNlZWYyMGU5Y2M2OGI0NzA0NmMwNTQ5Yjhh
Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9kb20vc2hhZG93L211bHRpcGxl
LXNoYWRvd3Jvb3QtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMTcgQEAKK1RoaXMgdGVzdCBlbnN1
cmUgdGhhdCB0aGUgbXVsdGlwbGUgc2hhZG93IHJvb3QgaXMgYXZhaWxhYmxlLgorCitPbiBzdWNj
ZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBi
eSAiVEVTVCBDT01QTEVURSIuCisKKworUEFTUyBpbnRlcm5hbHMuc2hhZG93Um9vdChkaXYpIGlz
IG51bGwKK1BBU1MgaW50ZXJuYWxzLmFkZHJlc3MoaW50ZXJuYWxzLnNoYWRvd1Jvb3QoZGl2KSkg
aXMgaW50ZXJuYWxzLmFkZHJlc3Moc2hhZG93Um9vdDEpCitQQVNTIGludGVybmFscy5vbGRlclNo
YWRvd1Jvb3Qoc2hhZG93Um9vdDEpIGlzIG51bGwKK1BBU1MgaW50ZXJuYWxzLmFkZHJlc3MoaW50
ZXJuYWxzLnNoYWRvd1Jvb3QoZGl2KSkgaXMgaW50ZXJuYWxzLmFkZHJlc3Moc2hhZG93Um9vdDIp
CitQQVNTIGludGVybmFscy5hZGRyZXNzKGludGVybmFscy5vbGRlclNoYWRvd1Jvb3Qoc2hhZG93
Um9vdDIpKSBpcyBpbnRlcm5hbHMuYWRkcmVzcyhzaGFkb3dSb290MSkKK1BBU1MgaW50ZXJuYWxz
LmFkZHJlc3MoaW50ZXJuYWxzLnNoYWRvd1Jvb3QoZGl2KSkgaXMgaW50ZXJuYWxzLmFkZHJlc3Mo
c2hhZG93Um9vdDMpCitQQVNTIGludGVybmFscy5hZGRyZXNzKGludGVybmFscy5vbGRlclNoYWRv
d1Jvb3Qoc2hhZG93Um9vdDMpKSBpcyBpbnRlcm5hbHMuYWRkcmVzcyhzaGFkb3dSb290MikKK1BB
U1MgaW50ZXJuYWxzLnNoYWRvd1Jvb3QoZGl2KSBpcyBudWxsCitQQVNTIHN1Y2Nlc3NmdWxseVBh
cnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
ZmFzdC9kb20vc2hhZG93L211bHRpcGxlLXNoYWRvd3Jvb3QuaHRtbCBiL0xheW91dFRlc3RzL2Zh
c3QvZG9tL3NoYWRvdy9tdWx0aXBsZS1zaGFkb3dyb290Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZDExMmEx
MDU1YmYxODNkNGRiMTk1MjIzNjIwNWQyM2E0MzMxMTdlOQotLS0gL2Rldi9udWxsCisrKyBiL0xh
eW91dFRlc3RzL2Zhc3QvZG9tL3NoYWRvdy9tdWx0aXBsZS1zaGFkb3dyb290Lmh0bWwKQEAgLTAs
MCArMSw0MSBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorPHNjcmlwdCBzcmM9
Ii4uLy4uL2pzL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8
Ym9keT4KKzxkaXY+CisgIDxjb250ZW50IGlkPSJjb250ZW50LXNpbXBsZXN0Ij48L2NvbnRlbnQ+
Cis8L2Rpdj4KKzxzY3JpcHQ+CitkZXNjcmlwdGlvbigiVGhpcyB0ZXN0IGVuc3VyZSB0aGF0IHRo
ZSBtdWx0aXBsZSBzaGFkb3cgcm9vdCBpcyBhdmFpbGFibGUuIik7CisKK2ludGVybmFscy5zZXRN
dWx0aXBsZVNoYWRvd1N1YnRyZWVzRW5hYmxlZCh0cnVlKTsKKwordmFyIGRpdiA9IGRvY3VtZW50
LmNyZWF0ZUVsZW1lbnQoJ2RpdicpOworc2hvdWxkQmUoImludGVybmFscy5zaGFkb3dSb290KGRp
dikiLCAibnVsbCIpOworLy8gQ3VycmVudGx5IGludGVybmFscy5zaGFkb3dSb290KGRpdikgYW5k
IHNoYWRvd1Jvb3QxIGFyZSBkaWZmZXJlbnQgSlMgd3JhcHBlcnMsCisvLyBzbyBpbnRlcm5hbHMu
c2hhZG93Um9vdChkaXYpID09PSBzaGFkb3dSb290MSBkb2Vzbid0IGhvbGQuCisvLyBCdXQgYWN0
dWFsbHkgdGhleSBjb250YWluIHRoZSBzYW1lIFNoYWRvd1Jvb3QuIFNvIHdlIGNvbXBhcmUgdGhl
bSBieSBpbnRlcm5hbCBhZGRyZXNzIGhlcmUuCit2YXIgc2hhZG93Um9vdDEgPSBuZXcgV2ViS2l0
U2hhZG93Um9vdChkaXYpOworc2hvdWxkQmUoImludGVybmFscy5hZGRyZXNzKGludGVybmFscy5z
aGFkb3dSb290KGRpdikpIiwgImludGVybmFscy5hZGRyZXNzKHNoYWRvd1Jvb3QxKSIpOworc2hv
dWxkQmUoImludGVybmFscy5vbGRlclNoYWRvd1Jvb3Qoc2hhZG93Um9vdDEpIiwgIm51bGwiKTsK
KwordmFyIHNoYWRvd1Jvb3QyID0gbmV3IFdlYktpdFNoYWRvd1Jvb3QoZGl2KQorc2hvdWxkQmUo
ImludGVybmFscy5hZGRyZXNzKGludGVybmFscy5zaGFkb3dSb290KGRpdikpIiwgImludGVybmFs
cy5hZGRyZXNzKHNoYWRvd1Jvb3QyKSIpOworc2hvdWxkQmUoImludGVybmFscy5hZGRyZXNzKGlu
dGVybmFscy5vbGRlclNoYWRvd1Jvb3Qoc2hhZG93Um9vdDIpKSIsICJpbnRlcm5hbHMuYWRkcmVz
cyhzaGFkb3dSb290MSkiKTsKKwordmFyIHNoYWRvd1Jvb3QzID0gbmV3IFdlYktpdFNoYWRvd1Jv
b3QoZGl2KTsKK3Nob3VsZEJlKCJpbnRlcm5hbHMuYWRkcmVzcyhpbnRlcm5hbHMuc2hhZG93Um9v
dChkaXYpKSIsICJpbnRlcm5hbHMuYWRkcmVzcyhzaGFkb3dSb290MykiKTsKK3Nob3VsZEJlKCJp
bnRlcm5hbHMuYWRkcmVzcyhpbnRlcm5hbHMub2xkZXJTaGFkb3dSb290KHNoYWRvd1Jvb3QzKSki
LCAiaW50ZXJuYWxzLmFkZHJlc3Moc2hhZG93Um9vdDIpIik7CisKK2ludGVybmFscy5yZW1vdmVT
aGFkb3dSb290KGRpdik7CitzaG91bGRCZSgiaW50ZXJuYWxzLnNoYWRvd1Jvb3QoZGl2KSIsICJu
dWxsIik7CisKK2ludGVybmFscy5zZXRNdWx0aXBsZVNoYWRvd1N1YnRyZWVzRW5hYmxlZChmYWxz
ZSk7CisKK3ZhciBzdWNjZXNzZnVsbHlQYXJzZWQgPSB0cnVlOworPC9zY3JpcHQ+Cis8c2NyaXB0
IHNyYz0iLi4vLi4vanMvcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+Cis8L2Jv
ZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9lZmwvU2tpcHBl
ZCBiL0xheW91dFRlc3RzL3BsYXRmb3JtL2VmbC9Ta2lwcGVkCmluZGV4IGM5ZWM0Nzk2MGQxYWIy
OWZiN2NmYmM2ZDllYWNhOTU3ZTM5NjAxYzIuLmRkOGE3YmZlNTVkYjc2ZDdjYmE2ZDc1OTZkMTYx
YjAyZThlYmZiNWUgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3BsYXRmb3JtL2VmbC9Ta2lwcGVk
CisrKyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL2VmbC9Ta2lwcGVkCkBAIC0xOTc0LDYgKzE5NzQs
NyBAQCBmYXN0L2Nzcy9zdHlsZS1zY29wZWQKICMgRU5BQkxFKFNIQURPV19ET00pIGlzIGRpc2Fi
bGVkLgogZmFzdC9kb20vc2hhZG93L3NoYWRvdy1yb290LWpzLWFwaS5odG1sCiBmYXN0L2RvbS9z
aGFkb3cvc2hhZG93LWRpc2FibGUuaHRtbAorZmFzdC9kb20vc2hhZG93L211bHRpcGxlLXNoYWRv
d3Jvb3QuaHRtbAogCiAjIENTUyBGaWx0ZXJzIHN1cHBvcnQgbm90IHlldCBlbmFibGVkIChuZWVk
cyBFTkFCTEVfQ1NTX0ZJTFRFUlMpLgogIyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9Njg0NjkKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL2d0ay9Ta2lw
cGVkIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vZ3RrL1NraXBwZWQKaW5kZXggOTQyZmYyMjBiMjU2
MjIzNTU3MTFkZGI1ZWU4N2UxMWIyZWFjMDU4Mi4uYTBiZDMwMmMyNjMyNGJmMDE2NWQzZDg4MGU0
ZmYwMjQ2ODc2Mzc3NyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vZ3RrL1NraXBw
ZWQKKysrIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vZ3RrL1NraXBwZWQKQEAgLTM1Nyw2ICszNTcs
NyBAQCBmYXN0L2Nzcy9zdHlsZS1zY29wZWQKICMgRU5BQkxFKFNIQURPV19ET00pIGlzIGRpc2Fi
bGVkLgogZmFzdC9kb20vc2hhZG93L3NoYWRvdy1yb290LWpzLWFwaS5odG1sCiBmYXN0L2RvbS9z
aGFkb3cvc2hhZG93LWRpc2FibGUuaHRtbAorZmFzdC9kb20vc2hhZG93L211bHRpcGxlLXNoYWRv
d3Jvb3QuaHRtbAogCiAjIENTUyBSZWdpb25zIHN1cHBvcnQgbm90IHlldCBlbmFibGVkLiBodHRw
Oi8vd2Via2l0Lm9yZy9iLzU3MzEyCiBmYXN0L3JlZ2lvbnMKZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL3BsYXRmb3JtL21hYy9Ta2lwcGVkIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL1NraXBw
ZWQKaW5kZXggMzNmNDE5YjlkZGM3YmY2OWRjYWE2YWE4MzgzMmRmNDEzODI3NTkxYi4uYjU4NjA4
NDEyMTNkNmU3MzBkYTZlODY3Y2QwZDY3MTMwMWNhZjMxOCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVz
dHMvcGxhdGZvcm0vbWFjL1NraXBwZWQKKysrIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL1Nr
aXBwZWQKQEAgLTQxOCw2ICs0MTgsNyBAQCBmYXN0L2Nzcy9zdHlsZS1zY29wZWQKICMgRU5BQkxF
KFNIQURPV19ET00pIGlzIGRpc2FibGVkLgogZmFzdC9kb20vc2hhZG93L3NoYWRvdy1yb290LWpz
LWFwaS5odG1sCiBmYXN0L2RvbS9zaGFkb3cvc2hhZG93LWRpc2FibGUuaHRtbAorZmFzdC9kb20v
c2hhZG93L211bHRpcGxlLXNoYWRvd3Jvb3QuaHRtbAogCiAjIEpTQyBkb2VzIG5vdCBzdXBwb3J0
IHNldElzb2xhdGVkV29ybGRTZWN1cml0eU9yaWdpbiAoaHR0cDovL3dlYmtpdC5vcmcvYi82MTU0
MCkKIGh0dHAvdGVzdHMvc2VjdXJpdHkvaXNvbGF0ZWRXb3JsZC9jcm9zcy1vcmlnaW4teGhyLmh0
bWwKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL3F0L1NraXBwZWQgYi9MYXlvdXRU
ZXN0cy9wbGF0Zm9ybS9xdC9Ta2lwcGVkCmluZGV4IGViZThjYTc2OGY2MzA2MWEzNDEwOWFjOGIw
MmUzNzViZTg4OGQzMjAuLmJiNmViYzk5MmExMThmY2E0NzUxZGUyODliMDE0NjQzZThiMGZjYWUg
MTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3BsYXRmb3JtL3F0L1NraXBwZWQKKysrIGIvTGF5b3V0
VGVzdHMvcGxhdGZvcm0vcXQvU2tpcHBlZApAQCAtMTYxLDYgKzE2MSw3IEBAIGZhc3QvY3NzL3N0
eWxlLXNjb3BlZAogIyBFTkFCTEUoU0hBRE9XX0RPTSkgaXMgZGlzYWJsZWQuCiBmYXN0L2RvbS9z
aGFkb3cvc2hhZG93LXJvb3QtanMtYXBpLmh0bWwKIGZhc3QvZG9tL3NoYWRvdy9zaGFkb3ctZGlz
YWJsZS5odG1sCitmYXN0L2RvbS9zaGFkb3cvbXVsdGlwbGUtc2hhZG93cm9vdC5odG1sCiAKICMg
Q1NTIFJlZ2lvbnMgc3VwcG9ydCBub3QgeWV0IGVuYWJsZWQuIGh0dHA6Ly93ZWJraXQub3JnL2Iv
NTczMTIKIGZhc3QvcmVnaW9ucwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vd2lu
L1NraXBwZWQgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS93aW4vU2tpcHBlZAppbmRleCA3MjJjZTYz
YTkyNmU4Y2NmODkxYjM0M2Q2OTc0ZmYwN2VkZTUwMWQyLi5iNmE0MTQxY2QwOTg2NDA0YzQwMjM0
ZGE1Yzk2YjU2MTk0ZDhiMzdkIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS93aW4v
U2tpcHBlZAorKysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS93aW4vU2tpcHBlZApAQCAtMTQ1MCw2
ICsxNDUwLDcgQEAgZmFzdC9jc3Mvc3R5bGUtc2NvcGVkCiAjIEVOQUJMRShTSEFET1dfRE9NKSBp
cyBkaXNhYmxlZC4KIGZhc3QvZG9tL3NoYWRvdy9zaGFkb3ctcm9vdC1qcy1hcGkuaHRtbAogZmFz
dC9kb20vc2hhZG93L3NoYWRvdy1kaXNhYmxlLmh0bWwKK2Zhc3QvZG9tL3NoYWRvdy9tdWx0aXBs
ZS1zaGFkb3dyb290Lmh0bWwKIAogIyBDU1MgUmVnaW9ucyBzdXBwb3J0IG5vdCB5ZXQgZW5hYmxl
ZC4gaHR0cDovL3dlYmtpdC5vcmcvYi81NzMxMgogZmFzdC9yZWdpb25zCmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9wbGF0Zm9ybS93aW5jYWlyby9Ta2lwcGVkIGIvTGF5b3V0VGVzdHMvcGxhdGZv
cm0vd2luY2Fpcm8vU2tpcHBlZAppbmRleCA4NjI3OGRmZDdlMWY1ODZhYTdiMTgxZTM1MGUxZTUy
OWNhNmYzODc4Li4zMzM2MmFmNjk2YTMyMzdjYmU4NWYwNzg4NmY2MzZkZmIxN2U0YjZlIDEwMDY0
NAotLS0gYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS93aW5jYWlyby9Ta2lwcGVkCisrKyBiL0xheW91
dFRlc3RzL3BsYXRmb3JtL3dpbmNhaXJvL1NraXBwZWQKQEAgLTE5NjUsNiArMTk2NSw3IEBAIGZh
c3QvY3NzL3N0eWxlLXNjb3BlZAogIyBFTkFCTEUoU0hBRE9XX0RPTSkgaXMgZGlzYWJsZWQuCiBm
YXN0L2RvbS9zaGFkb3cvc2hhZG93LXJvb3QtanMtYXBpLmh0bWwKIGZhc3QvZG9tL3NoYWRvdy9z
aGFkb3ctZGlzYWJsZS5odG1sCitmYXN0L2RvbS9zaGFkb3cvbXVsdGlwbGUtc2hhZG93cm9vdC5o
dG1sCiAKICMgQ1NTIFJlZ2lvbnMgc3VwcG9ydCBub3QgeWV0IGVuYWJsZWQuIGh0dHA6Ly93ZWJr
aXQub3JnL2IvNTczMTIKIGZhc3QvcmVnaW9ucwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>127535</attachid>
            <date>2012-02-16 23:48:14 -0800</date>
            <delta_ts>2012-02-19 18:29:41 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-77931-20120217164812.patch</filename>
            <type>text/plain</type>
            <size>21520</size>
            <attacher name="Shinya Kawanaka">shinyak</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTA4MDM4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYmZlOTAyMTkwMjE3NDQz
NjZkZGZjOTlhOThkMmY2MGYwN2VlNWE2Yy4uNmE1NzNiNDg0Nzc4N2Y3NzM4MzI5YWU5NzBkMzY1
OTQzNDY1NTM2YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM1IEBACisyMDEyLTAyLTE2ICBTaGlu
eWEgS2F3YW5ha2EgIDxzaGlueWFrQGNocm9taXVtLm9yZz4KKworICAgICAgICBFbGVtZW50IHNo
b3VsZCBiZSBhYmxlIHRvIGhhdmUgbXVsdGlwbGUgc2hhZG93IHJvb3RzLgorICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9Nzc5MzEKKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGlzIHBhdGNoIGVuYWJsZXMgYWRk
aW5nIG11bHRpcGxlIHNoYWRvdyBzdWJ0cmVlcyBpbnRvIGVsZW1lbnRzLgorICAgICAgICBUaGlz
IHBhdGNoIGRvZXMgbm90IGNvbnNpZGVyIGhvdyB0aGV5IGFyZSByZW5kZXJlZC4gSXQgb25seSBj
b25zaWRlcnMgeW91bmdlci9vbGRlcgorICAgICAgICBzaGFkb3cgcm9vdHMgYXJlIGNvcnJlY3Qu
CisKKyAgICAgICAgVGVzdDogZmFzdC9kb20vc2hhZG93L211bHRpcGxlLXNoYWRvd3Jvb3QuaHRt
bAorCisgICAgICAgICogV2ViQ29yZS5leHAuaW46CisgICAgICAgICogZG9tL0VsZW1lbnQuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6RWxlbWVudDo6fkVsZW1lbnQpOgorICAgICAgICAoV2ViQ29y
ZTo6RWxlbWVudDo6YWRkU2hhZG93Um9vdCk6CisgICAgICAgIChXZWJDb3JlOjpFbGVtZW50Ojpy
ZW1vdmVTaGFkb3dSb290TGlzdCk6CisgICAgICAgICogZG9tL0VsZW1lbnQuaDoKKyAgICAgICAg
KEVsZW1lbnQpOgorICAgICAgICAqIGRvbS9TaGFkb3dSb290LmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OlNoYWRvd1Jvb3Q6OmNyZWF0ZSk6CisgICAgICAgICogdGVzdGluZy9JbnRlcm5hbHMuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6SW50ZXJuYWxzOjphZGRyZXNzKToKKyAgICAgICAgKFdlYkNv
cmUpOgorICAgICAgICAoV2ViQ29yZTo6SW50ZXJuYWxzOjp5b3VuZ2VyU2hhZG93Um9vdCk6Cisg
ICAgICAgIChXZWJDb3JlOjpJbnRlcm5hbHM6Om9sZGVyU2hhZG93Um9vdCk6CisgICAgICAgIChX
ZWJDb3JlOjpJbnRlcm5hbHM6OnJlbW92ZVNoYWRvd1Jvb3QpOgorICAgICAgICAqIHRlc3Rpbmcv
SW50ZXJuYWxzLmg6CisgICAgICAgIChJbnRlcm5hbHMpOgorICAgICAgICAqIHRlc3RpbmcvSW50
ZXJuYWxzLmlkbDoKKwogMjAxMi0wMi0xNiAgRGFuaWVsIEJhdGVzICA8ZGJhdGVzQHdlYmtpdC5v
cmc+CiAKICAgICAgICAgQWRkIEVOQUJMRShTVFlMRV9TQ09QRUQpIGFyb3VuZCBIVE1MU3R5bGVF
bGVtZW50OjptX2lzUmVnaXN0ZXJlZFdpdGhTY29waW5nTm9kZSAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQyL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwppbmRleCAyZDgx
MjJiYWVhY2M5YjgwNWM5MWJkZDJkZDRiNmM3Y2UwOGQ3ZWY4Li4zMDFiYjk4NmY2ZGNkOWUzNTM4
MzNlMjk4ZTZjYzdlZmRmMWVlODBkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VM
b2cKKysrIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTMgQEAKKzIwMTIt
MDItMTYgIFNoaW55YSBLYXdhbmFrYSAgPHNoaW55YWtAY2hyb21pdW0ub3JnPgorCisgICAgICAg
IEVsZW1lbnQgc2hvdWxkIGJlIGFibGUgdG8gaGF2ZSBtdWx0aXBsZSBzaGFkb3cgcm9vdHMuCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03NzkzMQorCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogd2luL1dlYktp
dDIuZGVmOgorICAgICAgICAqIHdpbi9XZWJLaXQyQ0ZMaXRlLmRlZjoKKwogMjAxMi0wMi0xNSAg
R2VvZmZyZXkgR2FyZW4gIDxnZ2FyZW5AYXBwbGUuY29tPgogCiAgICAgICAgIE1hZGUgV2VhazxU
PiBzaW5nbGUtb3duZXIsIGFkZGluZyBQYXNzV2VhazxUPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvV2ViQ29yZS5leHAuaW4gYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmV4cC5pbgppbmRl
eCBlNTJjZDI5YWE4MzZjODZjYTUwNjQ5NzlhOTcwZDZiYWVkMWM1NTliLi41NDkzYTZhNGFkM2U2
NmIxOTY4YmYwZmYyYjJjNGYyZDdmMmZmMjI0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9X
ZWJDb3JlLmV4cC5pbgorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmV4cC5pbgpAQCAtOTEw
LDcgKzkxMCw3IEBAIF9fWk43V2ViQ29yZTZXaWRnZXREMkV2CiBfX1pON1dlYkNvcmU2dG9Ob2Rl
RU4zSlNDN0pTVmFsdWVFCiBfX1pON1dlYkNvcmU3Q29uc29sZTIxc2hvdWxkUHJpbnRFeGNlcHRp
b25zRXYKIF9fWk43V2ViQ29yZTdDb25zb2xlMjRzZXRTaG91bGRQcmludEV4Y2VwdGlvbnNFYgot
X19aTjdXZWJDb3JlN0VsZW1lbnQxNnJlbW92ZVNoYWRvd1Jvb3RFdgorX19aTjdXZWJDb3JlN0Vs
ZW1lbnQyMHJlbW92ZVNoYWRvd1Jvb3RMaXN0RXYKIF9fWk43V2ViQ29yZTdFbGVtZW50MjFib3Vu
ZHNJblJvb3RWaWV3U3BhY2VFdgogX19aTjdXZWJDb3JlN0VsZW1lbnQ5aW5uZXJUZXh0RXYKIF9f
Wk43V2ViQ29yZTdJbnRSZWN0NXNjYWxlRWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Rv
bS9FbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmNwcAppbmRleCAxYTQ2
NjI0MzBhODllYjhmZWZjNjY4ZmMxNjA2NWY1OGRhM2Y5NDFjLi40ODMzMjc1YTg1YWZkYmU0ZDFi
NGNjNmJjMDViNWIxZDYyZGVlNTFmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRWxl
bWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuY3BwCkBAIC03Niw2ICs3
NiwxMCBAQAogI2luY2x1ZGUgIlNWR05hbWVzLmgiCiAjZW5kaWYKIAorI2lmIEVOQUJMRShTSEFE
T1dfRE9NKQorI2luY2x1ZGUgIlJ1bnRpbWVFbmFibGVkRmVhdHVyZXMuaCIKKyNlbmRpZgorCiBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAKIHVzaW5nIG5hbWVzcGFjZSBIVE1MTmFtZXM7CkBAIC0xMjIs
NyArMTI2LDcgQEAgUGFzc1JlZlB0cjxFbGVtZW50PiBFbGVtZW50OjpjcmVhdGUoY29uc3QgUXVh
bGlmaWVkTmFtZSYgdGFnTmFtZSwgRG9jdW1lbnQqIGRvY3UKIAogRWxlbWVudDo6fkVsZW1lbnQo
KQogewotICAgIHJlbW92ZVNoYWRvd1Jvb3QoKTsKKyAgICByZW1vdmVTaGFkb3dSb290TGlzdCgp
OwogICAgIGlmIChtX2F0dHJpYnV0ZU1hcCkKICAgICAgICAgbV9hdHRyaWJ1dGVNYXAtPmRldGFj
aEZyb21FbGVtZW50KCk7CiB9CkBAIC0xMTkxLDcgKzExOTUsNyBAQCBzdGF0aWMgYm9vbCB2YWxp
ZGF0ZVNoYWRvd1Jvb3QoRG9jdW1lbnQqIGRvY3VtZW50LCBTaGFkb3dSb290KiBzaGFkb3dSb290
LCBFeGNlcAogICAgIHJldHVybiB0cnVlOwogfQogCi12b2lkIEVsZW1lbnQ6OnNldFNoYWRvd1Jv
b3QoUGFzc1JlZlB0cjxTaGFkb3dSb290PiBzaGFkb3dSb290LCBFeGNlcHRpb25Db2RlJiBlYykK
K3ZvaWQgRWxlbWVudDo6YWRkU2hhZG93Um9vdChQYXNzUmVmUHRyPFNoYWRvd1Jvb3Q+IHNoYWRv
d1Jvb3QsIEV4Y2VwdGlvbkNvZGUmIGVjKQogewogICAgIGlmICghdmFsaWRhdGVTaGFkb3dSb290
KGRvY3VtZW50KCksIHNoYWRvd1Jvb3QuZ2V0KCksIGVjKSkKICAgICAgICAgcmV0dXJuOwpAQCAt
MTE5OSw3ICsxMjAzLDEzIEBAIHZvaWQgRWxlbWVudDo6c2V0U2hhZG93Um9vdChQYXNzUmVmUHRy
PFNoYWRvd1Jvb3Q+IHNoYWRvd1Jvb3QsIEV4Y2VwdGlvbkNvZGUmIGVjCiAgICAgaWYgKCFoYXNS
YXJlRGF0YSgpKQogICAgICAgICBlbnN1cmVSYXJlRGF0YSgpOwogCi0gICAgcmVtb3ZlU2hhZG93
Um9vdCgpOworI2lmIEVOQUJMRShTSEFET1dfRE9NKQorICAgIGlmICghUnVudGltZUVuYWJsZWRG
ZWF0dXJlczo6bXVsdGlwbGVTaGFkb3dTdWJ0cmVlc0VuYWJsZWQoKSkKKyAgICAgICAgcmVtb3Zl
U2hhZG93Um9vdExpc3QoKTsKKyNlbHNlCisgICAgcmVtb3ZlU2hhZG93Um9vdExpc3QoKTsKKyNl
bmRpZgorCiAKICAgICBzaGFkb3dSb290LT5zZXRTaGFkb3dIb3N0KHRoaXMpOwogICAgIHNoYWRv
d1Jvb3RMaXN0KCktPnB1c2hTaGFkb3dSb290KHNoYWRvd1Jvb3QuZ2V0KCkpOwpAQCAtMTIyMSw3
ICsxMjMxLDcgQEAgU2hhZG93Um9vdCogRWxlbWVudDo6ZW5zdXJlU2hhZG93Um9vdCgpCiAgICAg
cmV0dXJuIFNoYWRvd1Jvb3Q6OmNyZWF0ZSh0aGlzLCBTaGFkb3dSb290OjpDcmVhdGluZ1VzZXJB
Z2VudFNoYWRvd1Jvb3QpLmdldCgpOwogfQogCi12b2lkIEVsZW1lbnQ6OnJlbW92ZVNoYWRvd1Jv
b3QoKQordm9pZCBFbGVtZW50OjpyZW1vdmVTaGFkb3dSb290TGlzdCgpCiB7CiAgICAgaWYgKCFo
YXNTaGFkb3dSb290KCkpCiAgICAgICAgIHJldHVybjsKQEAgLTEyMzMsMTYgKzEyNDMsMTkgQEAg
dm9pZCBFbGVtZW50OjpyZW1vdmVTaGFkb3dSb290KCkKICAgICAgICAgICAgIG9sZFJvb3QtPmRl
dGFjaCgpOwogCiAgICAgICAgIG9sZFJvb3QtPnNldFNoYWRvd0hvc3QoMCk7CisgICAgICAgIG9s
ZFJvb3QtPnNldFByZXYoMCk7CisgICAgICAgIG9sZFJvb3QtPnNldE5leHQoMCk7CiAgICAgICAg
IGRvY3VtZW50KCktPmFkb3B0SWZOZWVkZWQob2xkUm9vdC5nZXQoKSk7CiAgICAgICAgIGlmIChv
bGRSb290LT5pbkRvY3VtZW50KCkpCiAgICAgICAgICAgICBvbGRSb290LT5yZW1vdmVkRnJvbURv
Y3VtZW50KCk7CiAgICAgICAgIGVsc2UKICAgICAgICAgICAgIG9sZFJvb3QtPnJlbW92ZWRGcm9t
VHJlZSh0cnVlKTsKLSAgICAgICAgaWYgKGF0dGFjaGVkKCkpIHsKLSAgICAgICAgICAgIGZvciAo
Tm9kZSogY2hpbGQgPSBmaXJzdENoaWxkKCk7IGNoaWxkOyBjaGlsZCA9IGNoaWxkLT5uZXh0U2li
bGluZygpKSB7Ci0gICAgICAgICAgICAgICAgaWYgKCFjaGlsZC0+YXR0YWNoZWQoKSkKLSAgICAg
ICAgICAgICAgICAgICAgY2hpbGQtPmxhenlBdHRhY2goKTsKLSAgICAgICAgICAgIH0KKyAgICB9
CisKKyAgICBpZiAoYXR0YWNoZWQoKSkgeworICAgICAgICBmb3IgKE5vZGUqIGNoaWxkID0gZmly
c3RDaGlsZCgpOyBjaGlsZDsgY2hpbGQgPSBjaGlsZC0+bmV4dFNpYmxpbmcoKSkgeworICAgICAg
ICAgICAgaWYgKCFjaGlsZC0+YXR0YWNoZWQoKSkKKyAgICAgICAgICAgICAgICBjaGlsZC0+bGF6
eUF0dGFjaCgpOwogICAgICAgICB9CiAgICAgfQogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvZG9tL0VsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmgKaW5kZXggMzI4
ZDI2NmE2NzQxNDE3MjdhYjk2Mzk2MWFmNjkwNGI2NzVmMjljYy4uOTE5NGNkMjBmNjc3NDFlMzVl
NDM2ZGY2OTRjNDE1OGI2MjM5NmI4YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0Vs
ZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5oCkBAIC0yNTUsMTIgKzI1
NSwxMSBAQCBwdWJsaWM6CiAKICAgICBib29sIGhhc1NoYWRvd1Jvb3QoKSBjb25zdDsKICAgICBT
aGFkb3dSb290TGlzdCogc2hhZG93Um9vdExpc3QoKSBjb25zdDsKLQotICAgIC8vIEZJWE1FOiBU
aGVzZSBBUEkgd2lsbCBiZSBtb3ZlZCB0byBTaGFkb3dSb290TGlzdC4KLSAgICAvLyBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzgzMTMKLSAgICB2b2lkIHNldFNoYWRv
d1Jvb3QoUGFzc1JlZlB0cjxTaGFkb3dSb290PiwgRXhjZXB0aW9uQ29kZSYpOworICAgIHZvaWQg
YWRkU2hhZG93Um9vdChQYXNzUmVmUHRyPFNoYWRvd1Jvb3Q+LCBFeGNlcHRpb25Db2RlJik7Cisg
ICAgdm9pZCByZW1vdmVTaGFkb3dSb290TGlzdCgpOworICAgIC8vIEZJWE1FOiBlbnN1cmVTaGFk
b3dSb290KCkgd2lsbCBiZSByZW1vdmVkIGxhdGVyLgorICAgIC8vIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD03NzYwOAogICAgIFNoYWRvd1Jvb3QqIGVuc3VyZVNoYWRv
d1Jvb3QoKTsKLSAgICB2b2lkIHJlbW92ZVNoYWRvd1Jvb3QoKTsKIAogICAgIHZpcnR1YWwgY29u
c3QgQXRvbWljU3RyaW5nJiBzaGFkb3dQc2V1ZG9JZCgpIGNvbnN0OwogICAgIHZvaWQgc2V0U2hh
ZG93UHNldWRvSWQoY29uc3QgQXRvbWljU3RyaW5nJiwgRXhjZXB0aW9uQ29kZSYgPSBBU1NFUlRf
Tk9fRVhDRVBUSU9OKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9TaGFkb3dSb290
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9TaGFkb3dSb290LmNwcAppbmRleCBlZDkwZjBmZWM4
MGQ1OGI3OGRmN2JiNzAyNGQxMTQyMGNmNmY1ZmYzLi45MjE2YTE4NDdmMWMwNzUwZWMwNTYwNmVj
MDRmOWVhOTFmN2E5OThiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vU2hhZG93Um9v
dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL1NoYWRvd1Jvb3QuY3BwCkBAIC0xMjQsNyAr
MTI0LDcgQEAgUGFzc1JlZlB0cjxTaGFkb3dSb290PiBTaGFkb3dSb290OjpjcmVhdGUoRWxlbWVu
dCogZWxlbWVudCwgU2hhZG93Um9vdENyZWF0aW9uUHUKICAgICBSZWZQdHI8U2hhZG93Um9vdD4g
c2hhZG93Um9vdCA9IGFkb3B0UmVmKG5ldyBTaGFkb3dSb290KGVsZW1lbnQtPmRvY3VtZW50KCkp
KTsKIAogICAgIGVjID0gMDsKLSAgICBlbGVtZW50LT5zZXRTaGFkb3dSb290KHNoYWRvd1Jvb3Qs
IGVjKTsKKyAgICBlbGVtZW50LT5hZGRTaGFkb3dSb290KHNoYWRvd1Jvb3QsIGVjKTsKICAgICBp
ZiAoZWMpCiAgICAgICAgIHJldHVybiAwOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS90
ZXN0aW5nL0ludGVybmFscy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5j
cHAKaW5kZXggMTU2MjBjZDBkYWJlYzZmOWVlMmIwMjFmZmZhNmJlZjk1ZGEzMzdkNS4uZmQzNzc4
NmM1NTg5YWMyMjdjZmNlMTJkOTVjNDVkYTMyODk1M2U1NyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Rlc3Rpbmcv
SW50ZXJuYWxzLmNwcApAQCAtMTE5LDYgKzExOSwxNCBAQCBJbnRlcm5hbHM6OkludGVybmFscyhE
b2N1bWVudCogZG9jdW1lbnQpCiAgICAgcmVzZXQoZG9jdW1lbnQpOwogfQogCitTdHJpbmcgSW50
ZXJuYWxzOjphZGRyZXNzKE5vZGUqIG5vZGUpCit7CisgICAgY2hhciBidWZbMzJdOworICAgIHNw
cmludGYoYnVmLCAiJXAiLCBub2RlKTsKKworICAgIHJldHVybiBTdHJpbmcoYnVmKTsKK30KKwog
Ym9vbCBJbnRlcm5hbHM6OmlzUHJlbG9hZGVkKERvY3VtZW50KiBkb2N1bWVudCwgY29uc3QgU3Ry
aW5nJiB1cmwpCiB7CiAgICAgaWYgKCFkb2N1bWVudCkKQEAgLTIzMSw2ICsyMzksMjYgQEAgSW50
ZXJuYWxzOjpTaGFkb3dSb290SWZTaGFkb3dET01FbmFibGVkT3JOb2RlKiBJbnRlcm5hbHM6Om9s
ZGVzdFNoYWRvd1Jvb3QoRWxlbWUKICAgICByZXR1cm4gaG9zdC0+c2hhZG93Um9vdExpc3QoKS0+
b2xkZXN0U2hhZG93Um9vdCgpOwogfQogCitJbnRlcm5hbHM6OlNoYWRvd1Jvb3RJZlNoYWRvd0RP
TUVuYWJsZWRPck5vZGUqIEludGVybmFsczo6eW91bmdlclNoYWRvd1Jvb3QoTm9kZSogc2hhZG93
LCBFeGNlcHRpb25Db2RlJiBlYykKK3sKKyAgICBpZiAoIXNoYWRvdyB8fCAhc2hhZG93LT5pc1No
YWRvd1Jvb3QoKSkgeworICAgICAgICBlYyA9IElOVkFMSURfQUNDRVNTX0VSUjsKKyAgICAgICAg
cmV0dXJuIDA7CisgICAgfQorCisgICAgcmV0dXJuIHRvU2hhZG93Um9vdChzaGFkb3cpLT55b3Vu
Z2VyU2hhZG93Um9vdCgpOworfQorCitJbnRlcm5hbHM6OlNoYWRvd1Jvb3RJZlNoYWRvd0RPTUVu
YWJsZWRPck5vZGUqIEludGVybmFsczo6b2xkZXJTaGFkb3dSb290KE5vZGUqIHNoYWRvdywgRXhj
ZXB0aW9uQ29kZSYgZWMpCit7CisgICAgaWYgKCFzaGFkb3cgfHwgIXNoYWRvdy0+aXNTaGFkb3dS
b290KCkpIHsKKyAgICAgICAgZWMgPSBJTlZBTElEX0FDQ0VTU19FUlI7CisgICAgICAgIHJldHVy
biAwOworICAgIH0KKworICAgIHJldHVybiB0b1NoYWRvd1Jvb3Qoc2hhZG93KS0+b2xkZXJTaGFk
b3dSb290KCk7Cit9CisKIHZvaWQgSW50ZXJuYWxzOjpyZW1vdmVTaGFkb3dSb290KEVsZW1lbnQq
IGhvc3QsIEV4Y2VwdGlvbkNvZGUmIGVjKQogewogICAgIGlmICghaG9zdCkgewpAQCAtMjM4LDcg
KzI2Niw3IEBAIHZvaWQgSW50ZXJuYWxzOjpyZW1vdmVTaGFkb3dSb290KEVsZW1lbnQqIGhvc3Qs
IEV4Y2VwdGlvbkNvZGUmIGVjKQogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgaG9zdC0+
cmVtb3ZlU2hhZG93Um9vdCgpOworICAgIGhvc3QtPnJlbW92ZVNoYWRvd1Jvb3RMaXN0KCk7CiB9
CiAKIHZvaWQgSW50ZXJuYWxzOjpzZXRNdWx0aXBsZVNoYWRvd1N1YnRyZWVzRW5hYmxlZChib29s
IGVuYWJsZWQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5o
IGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuaAppbmRleCA3Y2RlZTE3MTczNDU0
MmE2MDkwMmUyOWFjMjAzOTVmODY2YzhmNjJkLi4xMTgzMTg1MzFlMDA3YTY4YTUzMDU2OTNhZDk2
OTVhZTI4MmIxMzEzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFs
cy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmgKQEAgLTU1LDYgKzU1
LDggQEAgcHVibGljOgogCiAgICAgU3RyaW5nIGVsZW1lbnRSZW5kZXJUcmVlQXNUZXh0KEVsZW1l
bnQqLCBFeGNlcHRpb25Db2RlJik7CiAKKyAgICBTdHJpbmcgYWRkcmVzcyhOb2RlKik7CisKICAg
ICBib29sIGlzUHJlbG9hZGVkKERvY3VtZW50KiwgY29uc3QgU3RyaW5nJiB1cmwpOwogCiAgICAg
c2l6ZV90IG51bWJlck9mU2NvcGVkSFRNTFN0eWxlQ2hpbGRyZW4oY29uc3QgTm9kZSosIEV4Y2Vw
dGlvbkNvZGUmKSBjb25zdDsKQEAgLTY4LDYgKzcwLDggQEAgcHVibGljOgogICAgIFNoYWRvd1Jv
b3RJZlNoYWRvd0RPTUVuYWJsZWRPck5vZGUqIHNoYWRvd1Jvb3QoRWxlbWVudCogaG9zdCwgRXhj
ZXB0aW9uQ29kZSYpOwogICAgIFNoYWRvd1Jvb3RJZlNoYWRvd0RPTUVuYWJsZWRPck5vZGUqIHlv
dW5nZXN0U2hhZG93Um9vdChFbGVtZW50KiBob3N0LCBFeGNlcHRpb25Db2RlJik7CiAgICAgU2hh
ZG93Um9vdElmU2hhZG93RE9NRW5hYmxlZE9yTm9kZSogb2xkZXN0U2hhZG93Um9vdChFbGVtZW50
KiBob3N0LCBFeGNlcHRpb25Db2RlJik7CisgICAgU2hhZG93Um9vdElmU2hhZG93RE9NRW5hYmxl
ZE9yTm9kZSogeW91bmdlclNoYWRvd1Jvb3QoTm9kZSogc2hhZG93LCBFeGNlcHRpb25Db2RlJik7
CisgICAgU2hhZG93Um9vdElmU2hhZG93RE9NRW5hYmxlZE9yTm9kZSogb2xkZXJTaGFkb3dSb290
KE5vZGUqIHNoYWRvdywgRXhjZXB0aW9uQ29kZSYpOwogICAgIHZvaWQgcmVtb3ZlU2hhZG93Um9v
dChFbGVtZW50KiBob3N0LCBFeGNlcHRpb25Db2RlJik7CiAgICAgdm9pZCBzZXRNdWx0aXBsZVNo
YWRvd1N1YnRyZWVzRW5hYmxlZChib29sKTsKICAgICBFbGVtZW50KiBpbmNsdWRlckZvcihOb2Rl
KiwgRXhjZXB0aW9uQ29kZSYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9J
bnRlcm5hbHMuaWRsIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuaWRsCmluZGV4
IDY1ZGE2Mjk2YTU5NGNhMmI5NGFlZWFjNzQ5YmZkMDBjYTk3NzlmNTEuLmM4ODkyMTRlMzUzNWQy
ZGQxMTU3MjFkZmFiYTkwNDg1NTA2YzMyOWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Rl
c3RpbmcvSW50ZXJuYWxzLmlkbAorKysgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFs
cy5pZGwKQEAgLTI3LDYgKzI3LDggQEAgbW9kdWxlIHdpbmRvdyB7CiAgICAgaW50ZXJmYWNlIFsK
ICAgICAgICAgT21pdENvbnN0cnVjdG9yCiAgICAgXSBJbnRlcm5hbHMgeworICAgICAgICBET01T
dHJpbmcgYWRkcmVzcyhpbiBOb2RlIG5vZGUpOworCiAgICAgICAgIERPTVN0cmluZyBlbGVtZW50
UmVuZGVyVHJlZUFzVGV4dChpbiBFbGVtZW50IGVsZW1lbnQpIHJhaXNlcyhET01FeGNlcHRpb24p
OwogICAgICAgICBib29sZWFuIGlzUHJlbG9hZGVkKGluIERvY3VtZW50IGRvY3VtZW50LCBpbiBE
T01TdHJpbmcgdXJsKTsKIApAQCAtMzcsMTEgKzM5LDE1IEBAIG1vZHVsZSB3aW5kb3cgewogICAg
ICAgICBTaGFkb3dSb290IHNoYWRvd1Jvb3QoaW4gRWxlbWVudCBob3N0KSByYWlzZXMgKERPTUV4
Y2VwdGlvbik7CiAgICAgICAgIFNoYWRvd1Jvb3QgeW91bmdlc3RTaGFkb3dSb290KGluIEVsZW1l
bnQgaG9zdCkgcmFpc2VzIChET01FeGNlcHRpb24pOwogICAgICAgICBTaGFkb3dSb290IG9sZGVz
dFNoYWRvd1Jvb3QoaW4gRWxlbWVudCBob3N0KSByYWlzZXMgKERPTUV4Y2VwdGlvbik7CisgICAg
ICAgIFNoYWRvd1Jvb3QgeW91bmdlclNoYWRvd1Jvb3QoaW4gTm9kZSByb290KSByYWlzZXMgKERP
TUV4Y2VwdGlvbik7CisgICAgICAgIFNoYWRvd1Jvb3Qgb2xkZXJTaGFkb3dSb290KGluIE5vZGUg
cm9vdCkgcmFpc2VzIChET01FeGNlcHRpb24pOwogI2Vsc2UKICAgICAgICAgTm9kZSBlbnN1cmVT
aGFkb3dSb290KGluIEVsZW1lbnQgaG9zdCkgcmFpc2VzIChET01FeGNlcHRpb24pOwogICAgICAg
ICBOb2RlIHNoYWRvd1Jvb3QoaW4gRWxlbWVudCBob3N0KSByYWlzZXMgKERPTUV4Y2VwdGlvbik7
CiAgICAgICAgIE5vZGUgeW91bmdlc3RTaGFkb3dSb290KGluIEVsZW1lbnQgaG9zdCkgcmFpc2Vz
IChET01FeGNlcHRpb24pOwogICAgICAgICBOb2RlIG9sZGVzdFNoYWRvd1Jvb3QoaW4gRWxlbWVu
dCBob3N0KSByYWlzZXMgKERPTUV4Y2VwdGlvbik7CisgICAgICAgIE5vZGUgeW91bmdlclNoYWRv
d1Jvb3QoaW4gTm9kZSByb290KSByYWlzZXMgKERPTUV4Y2VwdGlvbik7CisgICAgICAgIE5vZGUg
eW91bmdlclNoYWRvd1Jvb3QoaW4gTm9kZSByb290KSByYWlzZXMgKERPTUV4Y2VwdGlvbik7CiAj
ZW5kaWYKICAgICAgICAgdm9pZCBzZXRNdWx0aXBsZVNoYWRvd1N1YnRyZWVzRW5hYmxlZChpbiBi
b29sZWFuIGVuYWJsZWQpOwogICAgICAgICBFbGVtZW50IGluY2x1ZGVyRm9yKGluIE5vZGUgbm9k
ZSkgcmFpc2VzIChET01FeGNlcHRpb24pOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvd2lu
L1dlYktpdDIuZGVmIGIvU291cmNlL1dlYktpdDIvd2luL1dlYktpdDIuZGVmCmluZGV4IDhhNjAy
M2FkOGJlOTBmZWJmNzQyYzlhMjZlYzM1ZjRiYWNhZmIzYWIuLjkzNGYzMTZjZGIyYjA3MzNjNGJh
YjM1MGVlOWFjOGRhODRlN2VkMmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL3dpbi9XZWJL
aXQyLmRlZgorKysgYi9Tb3VyY2UvV2ViS2l0Mi93aW4vV2ViS2l0Mi5kZWYKQEAgLTE3NCw3ICsx
NzQsNyBAQCBFWFBPUlRTCiAgICAgICAgID9wYWdlQERvY3VtZW50QFdlYkNvcmVAQFFCRVBBVlBh
Z2VAMkBYWgogICAgICAgICA/cGFpbnRDb250cm9sVGludHNARnJhbWVWaWV3QFdlYkNvcmVAQEFB
RVhYWgogICAgICAgICA/cmFuZ2VGcm9tTG9jYXRpb25BbmRMZW5ndGhAVGV4dEl0ZXJhdG9yQFdl
YkNvcmVAQFNBP0FWPyRQYXNzUmVmUHRyQFZSYW5nZUBXZWJDb3JlQEBAV1RGQEBQQVZFbGVtZW50
QDJASEhfTkBaCi0gICAgICAgID9yZW1vdmVTaGFkb3dSb290QEVsZW1lbnRAV2ViQ29yZUBAUUFF
WFhaCisgICAgICAgID9yZW1vdmVTaGFkb3dSb290TGlzdEBFbGVtZW50QFdlYkNvcmVAQFFBRVhY
WgogICAgICAgICA/c2NyaXB0RXhlY3V0aW9uQ29udGV4dEBKU0RPTUdsb2JhbE9iamVjdEBXZWJD
b3JlQEBRQkVQQVZTY3JpcHRFeGVjdXRpb25Db250ZXh0QDJAWFoKICAgICAgICAgP3Njcm9sbEVs
ZW1lbnRUb1JlY3RARnJhbWVWaWV3QFdlYkNvcmVAQFFBRVhQQVZFbGVtZW50QDJAQUJWSW50UmVj
dEAyQEBaCiAgICAgICAgID9zZXRET01FeGNlcHRpb25AV2ViQ29yZUBAWUFYUEFWRXhlY1N0YXRl
QEpTQ0BASEBaCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi93aW4vV2ViS2l0MkNGTGl0ZS5k
ZWYgYi9Tb3VyY2UvV2ViS2l0Mi93aW4vV2ViS2l0MkNGTGl0ZS5kZWYKaW5kZXggMTQ5YjNhZjg2
N2NhZDA1YzlkMjVjYmE1M2I5MzMyMWNiYTY5NTJmNi4uMmQ4MmFiZDNjY2NiNDM5NTBlNzdmNTky
MTU5MDg3OTM0ODNmZWM4ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvd2luL1dlYktpdDJD
RkxpdGUuZGVmCisrKyBiL1NvdXJjZS9XZWJLaXQyL3dpbi9XZWJLaXQyQ0ZMaXRlLmRlZgpAQCAt
MTY5LDcgKzE2OSw3IEBAIEVYUE9SVFMKICAgICAgICAgP3BhZ2VARG9jdW1lbnRAV2ViQ29yZUBA
UUJFUEFWUGFnZUAyQFhaCiAgICAgICAgID9wYWludENvbnRyb2xUaW50c0BGcmFtZVZpZXdAV2Vi
Q29yZUBAQUFFWFhaCiAgICAgICAgID9yYW5nZUZyb21Mb2NhdGlvbkFuZExlbmd0aEBUZXh0SXRl
cmF0b3JAV2ViQ29yZUBAU0E/QVY/JFBhc3NSZWZQdHJAVlJhbmdlQFdlYkNvcmVAQEBXVEZAQFBB
VkVsZW1lbnRAMkBISF9OQFoKLSAgICAgICAgP3JlbW92ZVNoYWRvd1Jvb3RARWxlbWVudEBXZWJD
b3JlQEBRQUVYWFoKKyAgICAgICAgP3JlbW92ZVNoYWRvd1Jvb3RMaXN0QEVsZW1lbnRAV2ViQ29y
ZUBAUUFFWFhaCiAgICAgICAgID9zY3JpcHRFeGVjdXRpb25Db250ZXh0QEpTRE9NR2xvYmFsT2Jq
ZWN0QFdlYkNvcmVAQFFCRVBBVlNjcmlwdEV4ZWN1dGlvbkNvbnRleHRAMkBYWgogICAgICAgICA/
c2Nyb2xsRWxlbWVudFRvUmVjdEBGcmFtZVZpZXdAV2ViQ29yZUBAUUFFWFBBVkVsZW1lbnRAMkBB
QlZJbnRSZWN0QDJAQFoKICAgICAgICAgP3NldERPTUV4Y2VwdGlvbkBXZWJDb3JlQEBZQVhQQVZF
eGVjU3RhdGVASlNDQEBIQFoKZGlmZiAtLWdpdCBhL1NvdXJjZS9hdXRvdG9vbHMvc3ltYm9scy5m
aWx0ZXIgYi9Tb3VyY2UvYXV0b3Rvb2xzL3N5bWJvbHMuZmlsdGVyCmluZGV4IDFmNmI0MzNhMmE0
ZmZkMjgzNjljZDU2MjM0ZjMyMTdkYzJhMDIxZjguLmQ4ZGUzZmI1MmFmMzBjMDE5ZTFiMzg3NWE0
NTA4ZGY1OWNmNGJjMjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9hdXRvdG9vbHMvc3ltYm9scy5maWx0
ZXIKKysrIGIvU291cmNlL2F1dG90b29scy9zeW1ib2xzLmZpbHRlcgpAQCAtNjYsNyArNjYsNyBA
QCBfWk43V2ViQ29yZTZKU05vZGUxMHB1dFZpcnR1YWxFUE4zSlNDOUV4ZWNTdGF0ZUVSS05TMV8x
MElkZW50aWZpZXJFTlMxXzdKU1ZhbHVlRQogX1pON1dlYkNvcmU2SlNOb2RlMjB2aXNpdENoaWxk
cmVuVmlydHVhbEVSTjNKU0MxMVNsb3RWaXNpdG9yRTsKIF9aTjdXZWJDb3JlNkpTTm9kZTZzX2lu
Zm9FOwogX1pON1dlYkNvcmU2dG9Ob2RlRU4zSlNDN0pTVmFsdWVFOwotX1pON1dlYkNvcmU3RWxl
bWVudDE2cmVtb3ZlU2hhZG93Um9vdEV2OworX1pON1dlYkNvcmU3RWxlbWVudDIwcmVtb3ZlU2hh
ZG93Um9vdExpc3RFdjsKIF9aTjdXZWJDb3JlN3RvUmFuZ2VFTjNKU0M3SlNWYWx1ZUU7CiBfWk43
V2ViQ29yZTlKU0VsZW1lbnQxMHB1dFZpcnR1YWxFUE4zSlNDOUV4ZWNTdGF0ZUVSS05TMV8xMElk
ZW50aWZpZXJFTlMxXzdKU1ZhbHVlRVJOUzFfMTVQdXRQcm9wZXJ0eVNsb3RFOwogX1pON1dlYkNv
cmU5SlNFbGVtZW50NnNfaW5mb0U7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cg
Yi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXggZmYzZTY0MDc4YjJhZDcwY2U3Yzc5MmNlZDVl
ODA1NmE5YzNjOTcyZC4uNzg5YTgwYTIyMGQ2YWJiODkyMDM1M2FiNjVhNzc0ZTU2YmI2OWE4ZCAx
MDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3RzL0NoYW5n
ZUxvZwpAQCAtMSwzICsxLDIwIEBACisyMDEyLTAyLTE2ICBTaGlueWEgS2F3YW5ha2EgIDxzaGlu
eWFrQGNocm9taXVtLm9yZz4KKworICAgICAgICBFbGVtZW50IHNob3VsZCBiZSBhYmxlIHRvIGhh
dmUgbXVsdGlwbGUgc2hhZG93IHJvb3RzLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9Nzc5MzEKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICAqIGZhc3QvZG9tL3NoYWRvdy9tdWx0aXBsZS1zaGFkb3dyb290LWV4
cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogZmFzdC9kb20vc2hhZG93L211bHRpcGxlLXNo
YWRvd3Jvb3QuaHRtbDogQWRkZWQuCisgICAgICAgICogcGxhdGZvcm0vZWZsL1NraXBwZWQ6Cisg
ICAgICAgICogcGxhdGZvcm0vZ3RrL1NraXBwZWQ6CisgICAgICAgICogcGxhdGZvcm0vbWFjL1Nr
aXBwZWQ6CisgICAgICAgICogcGxhdGZvcm0vcXQvU2tpcHBlZDoKKyAgICAgICAgKiBwbGF0Zm9y
bS93aW4vU2tpcHBlZDoKKyAgICAgICAgKiBwbGF0Zm9ybS93aW5jYWlyby9Ta2lwcGVkOgorICAg
ICAgICAqIHBsYXRmb3JtL3drMi9Ta2lwcGVkOgorCiAyMDEyLTAyLTE2ICBDc2FiYSBPc3p0cm9n
b27DoWMgIDxvc3N5QHdlYmtpdC5vcmc+CiAKICAgICAgICAgVW5yZXZpZXdlZC4gUm9sbGluZyBv
dXQgcjEwNzk4MCwgYmVjYXVzZSBpdCBicm9rZSAzMiBiaXQgcGxhdGZvcm1zLgpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvZmFzdC9kb20vc2hhZG93L211bHRpcGxlLXNoYWRvd3Jvb3QtZXhwZWN0
ZWQudHh0IGIvTGF5b3V0VGVzdHMvZmFzdC9kb20vc2hhZG93L211bHRpcGxlLXNoYWRvd3Jvb3Qt
ZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmFhM2RlZGRjODU1NmNkN2NlMmJkNzViNjE1NTNmYzUw
ZTU4Nzc1ZjMKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2RvbS9zaGFkb3cv
bXVsdGlwbGUtc2hhZG93cm9vdC1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwxNyBAQAorVGhpcyB0
ZXN0IGVuc3VyZSB0aGF0IHRoZSBtdWx0aXBsZSBzaGFkb3cgcm9vdCBpcyBhdmFpbGFibGUuCisK
K09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZv
bGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KKworCitQQVNTIGludGVybmFscy5zaGFkb3dSb290
KGRpdikgaXMgbnVsbAorUEFTUyBpbnRlcm5hbHMuc2hhZG93Um9vdChkaXYpIGlzIHNoYWRvd1Jv
b3QxCitQQVNTIGludGVybmFscy5vbGRlclNoYWRvd1Jvb3Qoc2hhZG93Um9vdDEpIGlzIG51bGwK
K1BBU1MgaW50ZXJuYWxzLnNoYWRvd1Jvb3QoZGl2KSBpcyBzaGFkb3dSb290MgorUEFTUyBpbnRl
cm5hbHMub2xkZXJTaGFkb3dSb290KHNoYWRvd1Jvb3QyKSBpcyBzaGFkb3dSb290MQorUEFTUyBp
bnRlcm5hbHMuc2hhZG93Um9vdChkaXYpIGlzIHNoYWRvd1Jvb3QzCitQQVNTIGludGVybmFscy5v
bGRlclNoYWRvd1Jvb3Qoc2hhZG93Um9vdDMpIGlzIHNoYWRvd1Jvb3QyCitQQVNTIGludGVybmFs
cy5zaGFkb3dSb290KGRpdikgaXMgbnVsbAorUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1
ZQorCitURVNUIENPTVBMRVRFCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZG9tL3No
YWRvdy9tdWx0aXBsZS1zaGFkb3dyb290Lmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L2RvbS9zaGFk
b3cvbXVsdGlwbGUtc2hhZG93cm9vdC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmU4ZTY5NTg5YjgzM2Y1YjUx
NmE1MWFmODAxNWUwYTI0OWUxZTY1ZDEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9m
YXN0L2RvbS9zaGFkb3cvbXVsdGlwbGUtc2hhZG93cm9vdC5odG1sCkBAIC0wLDAgKzEsMzggQEAK
KzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9qcy9y
ZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8ZGl2
PgorICA8Y29udGVudCBpZD0iY29udGVudC1zaW1wbGVzdCI+PC9jb250ZW50PgorPC9kaXY+Cis8
c2NyaXB0PgorZGVzY3JpcHRpb24oIlRoaXMgdGVzdCBlbnN1cmUgdGhhdCB0aGUgbXVsdGlwbGUg
c2hhZG93IHJvb3QgaXMgYXZhaWxhYmxlLiIpOworCitpbnRlcm5hbHMuc2V0TXVsdGlwbGVTaGFk
b3dTdWJ0cmVlc0VuYWJsZWQodHJ1ZSk7CisKK3ZhciBkaXYgPSBkb2N1bWVudC5jcmVhdGVFbGVt
ZW50KCdkaXYnKTsKK3Nob3VsZEJlKCJpbnRlcm5hbHMuc2hhZG93Um9vdChkaXYpIiwgIm51bGwi
KTsKK3ZhciBzaGFkb3dSb290MSA9IG5ldyBXZWJLaXRTaGFkb3dSb290KGRpdik7CitzaG91bGRC
ZSgiaW50ZXJuYWxzLnNoYWRvd1Jvb3QoZGl2KSIsICJzaGFkb3dSb290MSIpOworc2hvdWxkQmUo
ImludGVybmFscy5vbGRlclNoYWRvd1Jvb3Qoc2hhZG93Um9vdDEpIiwgIm51bGwiKTsKKwordmFy
IHNoYWRvd1Jvb3QyID0gbmV3IFdlYktpdFNoYWRvd1Jvb3QoZGl2KQorc2hvdWxkQmUoImludGVy
bmFscy5zaGFkb3dSb290KGRpdikiLCAic2hhZG93Um9vdDIiKTsKK3Nob3VsZEJlKCJpbnRlcm5h
bHMub2xkZXJTaGFkb3dSb290KHNoYWRvd1Jvb3QyKSIsICJzaGFkb3dSb290MSIpOworCit2YXIg
c2hhZG93Um9vdDMgPSBuZXcgV2ViS2l0U2hhZG93Um9vdChkaXYpOworc2hvdWxkQmUoImludGVy
bmFscy5zaGFkb3dSb290KGRpdikiLCAic2hhZG93Um9vdDMiKTsKK3Nob3VsZEJlKCJpbnRlcm5h
bHMub2xkZXJTaGFkb3dSb290KHNoYWRvd1Jvb3QzKSIsICJzaGFkb3dSb290MiIpOworCitpbnRl
cm5hbHMucmVtb3ZlU2hhZG93Um9vdChkaXYpOworc2hvdWxkQmUoImludGVybmFscy5zaGFkb3dS
b290KGRpdikiLCAibnVsbCIpOworCitpbnRlcm5hbHMuc2V0TXVsdGlwbGVTaGFkb3dTdWJ0cmVl
c0VuYWJsZWQoZmFsc2UpOworCit2YXIgc3VjY2Vzc2Z1bGx5UGFyc2VkID0gdHJ1ZTsKKzwvc2Ny
aXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uL2pzL3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwv
c2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZv
cm0vZWZsL1NraXBwZWQgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9lZmwvU2tpcHBlZAppbmRleCA1
YTUxMjcyOTc4ZDU5NjI0N2Q0NzRmOTc5YWEyYzdhYjY0ZTI5M2IyLi4yODEzMGQxOTUyMjQwNWJj
MjEzZjk0Nzc5OTNmMGI3YmVkYWJhN2YzIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9wbGF0Zm9y
bS9lZmwvU2tpcHBlZAorKysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9lZmwvU2tpcHBlZApAQCAt
MTk3NSw2ICsxOTc1LDcgQEAgZmFzdC9jc3Mvc3R5bGUtc2NvcGVkCiBmYXN0L2RvbS9zaGFkb3cv
c2hhZG93LXJvb3QtanMtYXBpLmh0bWwKIGZhc3QvZG9tL3NoYWRvdy9zaGFkb3ctZGlzYWJsZS5o
dG1sCiBmYXN0L2RvbS9zaGFkb3cvc2hhZG93LXJvb3QtbmV3Lmh0bWwKK2Zhc3QvZG9tL3NoYWRv
dy9tdWx0aXBsZS1zaGFkb3dyb290Lmh0bWwKIAogIyBDU1MgRmlsdGVycyBzdXBwb3J0IG5vdCB5
ZXQgZW5hYmxlZCAobmVlZHMgRU5BQkxFX0NTU19GSUxURVJTKS4KICMgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTY4NDY5CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9w
bGF0Zm9ybS9ndGsvU2tpcHBlZCBiL0xheW91dFRlc3RzL3BsYXRmb3JtL2d0ay9Ta2lwcGVkCmlu
ZGV4IDc4N2MzNzYzZmZiMmM0NmU4MjI0OTQ3ODc1YWNlYzEzZTRiNjBmNDEuLmI1NjA5NTUzMTc0
YmY3MjVhMjE5NjAyYjhjNzE2NmU4YWJmMjI4NzUgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3Bs
YXRmb3JtL2d0ay9Ta2lwcGVkCisrKyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL2d0ay9Ta2lwcGVk
CkBAIC0zNTgsNiArMzU4LDcgQEAgZmFzdC9jc3Mvc3R5bGUtc2NvcGVkCiBmYXN0L2RvbS9zaGFk
b3cvc2hhZG93LXJvb3QtanMtYXBpLmh0bWwKIGZhc3QvZG9tL3NoYWRvdy9zaGFkb3ctZGlzYWJs
ZS5odG1sCiBmYXN0L2RvbS9zaGFkb3cvc2hhZG93LXJvb3QtbmV3Lmh0bWwKK2Zhc3QvZG9tL3No
YWRvdy9tdWx0aXBsZS1zaGFkb3dyb290Lmh0bWwKIAogIyBDU1MgUmVnaW9ucyBzdXBwb3J0IG5v
dCB5ZXQgZW5hYmxlZC4gaHR0cDovL3dlYmtpdC5vcmcvYi81NzMxMgogZmFzdC9yZWdpb25zCmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvU2tpcHBlZCBiL0xheW91dFRlc3Rz
L3BsYXRmb3JtL21hYy9Ta2lwcGVkCmluZGV4IGQyNDc1YTI0MjAzY2YxYTBmZjk0ZDc2NDk2YWZh
MzMwYmFiMWNlNjUuLjg3Yzc5MGE3MmViYTQ5ZTk0NTI0ZDE4ZThjOWRmODQwODg3MGFkZjMgMTAw
NjQ0Ci0tLSBhL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy9Ta2lwcGVkCisrKyBiL0xheW91dFRl
c3RzL3BsYXRmb3JtL21hYy9Ta2lwcGVkCkBAIC00MTksNiArNDE5LDcgQEAgZmFzdC9jc3Mvc3R5
bGUtc2NvcGVkCiBmYXN0L2RvbS9zaGFkb3cvc2hhZG93LXJvb3QtanMtYXBpLmh0bWwKIGZhc3Qv
ZG9tL3NoYWRvdy9zaGFkb3ctZGlzYWJsZS5odG1sCiBmYXN0L2RvbS9zaGFkb3cvc2hhZG93LXJv
b3QtbmV3Lmh0bWwKK2Zhc3QvZG9tL3NoYWRvdy9tdWx0aXBsZS1zaGFkb3dyb290Lmh0bWwKIAog
IyBKU0MgZG9lcyBub3Qgc3VwcG9ydCBzZXRJc29sYXRlZFdvcmxkU2VjdXJpdHlPcmlnaW4gKGh0
dHA6Ly93ZWJraXQub3JnL2IvNjE1NDApCiBodHRwL3Rlc3RzL3NlY3VyaXR5L2lzb2xhdGVkV29y
bGQvY3Jvc3Mtb3JpZ2luLXhoci5odG1sCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9y
bS9xdC9Ta2lwcGVkIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vcXQvU2tpcHBlZAppbmRleCBmZDFm
M2IwMWIyOTUwNGJlNDE4NzIxZGM3YzZmYjU1MDdiZTU5MmMwLi44MzYyNmUxMmRlN2Y4NWRiNTFi
NWJhNjAzODA3MmM3OGJhNjZiZWM3IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9x
dC9Ta2lwcGVkCisrKyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL3F0L1NraXBwZWQKQEAgLTE2Miw2
ICsxNjIsNyBAQCBmYXN0L2Nzcy9zdHlsZS1zY29wZWQKIGZhc3QvZG9tL3NoYWRvdy9zaGFkb3ct
cm9vdC1qcy1hcGkuaHRtbAogZmFzdC9kb20vc2hhZG93L3NoYWRvdy1kaXNhYmxlLmh0bWwKIGZh
c3QvZG9tL3NoYWRvdy9zaGFkb3ctcm9vdC1uZXcuaHRtbAorZmFzdC9kb20vc2hhZG93L211bHRp
cGxlLXNoYWRvd3Jvb3QuaHRtbAogCiAjIENTUyBSZWdpb25zIHN1cHBvcnQgbm90IHlldCBlbmFi
bGVkLiBodHRwOi8vd2Via2l0Lm9yZy9iLzU3MzEyCiBmYXN0L3JlZ2lvbnMKZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL3BsYXRmb3JtL3dpbi9Ta2lwcGVkIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0v
d2luL1NraXBwZWQKaW5kZXggZDAzYjZmOWFmYzI1MGEzNTkyN2UyNTE2NzU2OTQ3Y2MyOWE2OTZj
My4uZTUzZjljMDU3OGIzMWUwZDNiYWMzODU0YzUzMWRjZTUwZmFkNDU0OCAxMDA2NDQKLS0tIGEv
TGF5b3V0VGVzdHMvcGxhdGZvcm0vd2luL1NraXBwZWQKKysrIGIvTGF5b3V0VGVzdHMvcGxhdGZv
cm0vd2luL1NraXBwZWQKQEAgLTE0NTEsNiArMTQ1MSw3IEBAIGZhc3QvY3NzL3N0eWxlLXNjb3Bl
ZAogZmFzdC9kb20vc2hhZG93L3NoYWRvdy1yb290LWpzLWFwaS5odG1sCiBmYXN0L2RvbS9zaGFk
b3cvc2hhZG93LWRpc2FibGUuaHRtbAogZmFzdC9kb20vc2hhZG93L3NoYWRvdy1yb290LW5ldy5o
dG1sCitmYXN0L2RvbS9zaGFkb3cvbXVsdGlwbGUtc2hhZG93cm9vdC5odG1sCiAKICMgQ1NTIFJl
Z2lvbnMgc3VwcG9ydCBub3QgeWV0IGVuYWJsZWQuIGh0dHA6Ly93ZWJraXQub3JnL2IvNTczMTIK
IGZhc3QvcmVnaW9ucwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vd2luY2Fpcm8v
U2tpcHBlZCBiL0xheW91dFRlc3RzL3BsYXRmb3JtL3dpbmNhaXJvL1NraXBwZWQKaW5kZXggMmQy
ZGNjZjk0MmQ1YWIxYWU0OTkxYzFmODJlMmFmNzAzMDNhNmZiYy4uZjAwYzViMDQyYjBiZDNiMDkz
NGIzMGI3NDEwNmI4ZDg3Y2RhOWJhMiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0v
d2luY2Fpcm8vU2tpcHBlZAorKysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS93aW5jYWlyby9Ta2lw
cGVkCkBAIC0xOTY2LDYgKzE5NjYsNyBAQCBmYXN0L2Nzcy9zdHlsZS1zY29wZWQKIGZhc3QvZG9t
L3NoYWRvdy9zaGFkb3ctcm9vdC1qcy1hcGkuaHRtbAogZmFzdC9kb20vc2hhZG93L3NoYWRvdy1k
aXNhYmxlLmh0bWwKIGZhc3QvZG9tL3NoYWRvdy9zaGFkb3ctcm9vdC1uZXcuaHRtbAorZmFzdC9k
b20vc2hhZG93L211bHRpcGxlLXNoYWRvd3Jvb3QuaHRtbAogCiAjIENTUyBSZWdpb25zIHN1cHBv
cnQgbm90IHlldCBlbmFibGVkLiBodHRwOi8vd2Via2l0Lm9yZy9iLzU3MzEyCiBmYXN0L3JlZ2lv
bnMKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL3drMi9Ta2lwcGVkIGIvTGF5b3V0
VGVzdHMvcGxhdGZvcm0vd2syL1NraXBwZWQKaW5kZXggODJhZjc4ZWE3NmNlYmE4M2U4MGZkMGFl
ZTdjYjY5OTNiMGY5YzRlMi4uYjFlMGUyMGUwOTg2ZjQxNGQ2M2E0NGUyODkzODhlMjc3YTdiODk1
ZiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vd2syL1NraXBwZWQKKysrIGIvTGF5
b3V0VGVzdHMvcGxhdGZvcm0vd2syL1NraXBwZWQKQEAgLTEwODEsNiArMTA4MSw3IEBAIGZhc3Qv
ZG9tL3NoYWRvdy9jcmVhdGUtY29udGVudC1lbGVtZW50Lmh0bWwKIGZhc3QvZG9tL3NoYWRvdy9z
aGFkb3ctcm9vdC1qcy1hcGkuaHRtbAogZmFzdC9kb20vc2hhZG93L3NoYWRvdy1kaXNhYmxlLmh0
bWwKIGZhc3QvZG9tL3NoYWRvdy9zaGFkb3ctcm9vdC1uZXcuaHRtbAorZmFzdC9kb20vc2hhZG93
L211bHRpcGxlLXNoYWRvd3Jvb3QuaHRtbAogCiAjIFdUUiBuZWVkcyBhbiBpbXBsZW1lbnRhdGlv
biBmb3IgZXZlbnRTZW5kZXIuY29udGludW91c01vdXNlU2Nyb2xsQnkKICMgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTY5NDE3CmRpZmYgLS1naXQgYS9DaGFuZ2VMb2cg
Yi9DaGFuZ2VMb2cKaW5kZXggY2Q1MWEzOWEwNjEzNTVjN2ZmNmQwMWQ1ZDliZjFmYjY5M2Q3NWQ4
Ny4uYzI4ZjU5ZDU2OTM2ZDI4NTM5OGYxMmE5ZmJhZTkxMDdmMzdhZWUzZCAxMDA2NDQKLS0tIGEv
Q2hhbmdlTG9nCisrKyBiL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEyIEBACisyMDEyLTAyLTE2ICBT
aGlueWEgS2F3YW5ha2EgIDxzaGlueWFrQGNocm9taXVtLm9yZz4KKworICAgICAgICBFbGVtZW50
IHNob3VsZCBiZSBhYmxlIHRvIGhhdmUgbXVsdGlwbGUgc2hhZG93IHJvb3RzLgorICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9Nzc5MzEKKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFNvdXJjZS9hdXRvdG9vbHMv
c3ltYm9scy5maWx0ZXI6CisKIDIwMTItMDItMTYgIFNpbW9uIEhhdXNtYW5uICA8c2ltb24uaGF1
c21hbm5Abm9raWEuY29tPgogCiAgICAgICAgIFtRdF0gTW92ZSBldmVudCBjb252ZXJzaW9uIGZ1
bmN0aW9ucyBmcm9tIFdlYkNvcmUgdG8gV2ViS2l0Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>127748</attachid>
            <date>2012-02-19 18:29:48 -0800</date>
            <delta_ts>2012-02-20 02:32:12 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-77931-20120220112946.patch</filename>
            <type>text/plain</type>
            <size>32116</size>
            <attacher name="Shinya Kawanaka">shinyak</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTA4MjA0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNDA0OTJkZTBmYWE1MTQ1
ZGM0ZTAwMjM0YTk5MjI2NTYzOGMxYmM4Yi4uOTVjNGQ2Y2Q0NWQzMWQwYjNmNWUzMTZkYTJjMGJm
MDI5MWJiY2E1MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ1IEBACisyMDEyLTAyLTE5ICBTaGlu
eWEgS2F3YW5ha2EgIDxzaGlueWFrQGNocm9taXVtLm9yZz4KKworICAgICAgICBFbGVtZW50IHNo
b3VsZCBiZSBhYmxlIHRvIGhhdmUgbXVsdGlwbGUgc2hhZG93IHJvb3RzLgorICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9Nzc5MzEKKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGlzIHBhdGNoIGVuYWJsZXMgYWRk
aW5nIG11bHRpcGxlIHNoYWRvdyBzdWJ0cmVlcyBpbnRvIGVsZW1lbnRzLgorCisgICAgICAgIEN1
cnJlbnRseSBvbmx5IHRoZSB5b3VuZ2VzdCBzaGFkb3cgc3VidHJlZSB3aWxsIGJlIHJlbmRlcmVk
LCBiZWNhdXNlIDxzaGFkb3c+IGlzIG5vdCBpbXBsZW1lbnRlZCB5ZXQuCisKKyAgICAgICAgVGVz
dHM6IGZhc3QvZG9tL3NoYWRvdy9tdWx0aXBsZS1zaGFkb3dyb290LXJlbmRlcmluZy5odG1sCisg
ICAgICAgICAgICAgICBmYXN0L2RvbS9zaGFkb3cvbXVsdGlwbGUtc2hhZG93cm9vdC5odG1sCisK
KyAgICAgICAgKiBXZWJDb3JlLmV4cC5pbjoKKyAgICAgICAgKiBkb20vRWxlbWVudC5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpFbGVtZW50Ojp+RWxlbWVudCk6CisgICAgICAgIChXZWJDb3JlOjpF
bGVtZW50OjphZGRTaGFkb3dSb290KToKKyAgICAgICAgICBBZGQgYSBuZXcgc2hhZG93IHN1YnRy
ZWUuCisgICAgICAgIChXZWJDb3JlOjpFbGVtZW50OjpyZW1vdmVTaGFkb3dSb290TGlzdCk6Cisg
ICAgICAgICAgUmVtb3ZlcyB3aG9sZSBzaGFkb3cgc3VidHJlZXMuCisgICAgICAgICogZG9tL0Vs
ZW1lbnQuaDoKKyAgICAgICAgKEVsZW1lbnQpOgorICAgICAgICAqIGRvbS9Ob2RlUmVuZGVyaW5n
Q29udGV4dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpOb2RlUmVuZGVyaW5nQ29udGV4dDo6Tm9k
ZVJlbmRlcmluZ0NvbnRleHQpOgorICAgICAgICAoV2ViQ29yZTo6Tm9kZVJlbmRlcmluZ0NvbnRl
eHQ6Omhvc3RDaGlsZHJlbkNoYW5nZWQpOgorICAgICAgICAqIGRvbS9TaGFkb3dSb290LmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OlNoYWRvd1Jvb3Q6OmNyZWF0ZSk6CisgICAgICAgICogZG9tL1No
YWRvd1Jvb3RMaXN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNoYWRvd1Jvb3RMaXN0OjphdHRh
Y2gpOgorICAgICAgICAoV2ViQ29yZTo6U2hhZG93Um9vdExpc3Q6OmRldGFjaCk6CisgICAgICAg
ICogdGVzdGluZy9JbnRlcm5hbHMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW50ZXJuYWxzOjph
ZGRyZXNzKToKKyAgICAgICAgICBSZXR1cm5zIHRoZSBtZW1vcnkgYWRkcmVzcyBvZiB0aGUgbm9k
ZSBhcyBzdHJpbmcuCisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6OkludGVy
bmFsczo6eW91bmdlclNoYWRvd1Jvb3QpOgorICAgICAgICAoV2ViQ29yZTo6SW50ZXJuYWxzOjpv
bGRlclNoYWRvd1Jvb3QpOgorICAgICAgICAoV2ViQ29yZTo6SW50ZXJuYWxzOjpyZW1vdmVTaGFk
b3dSb290KToKKyAgICAgICAgKiB0ZXN0aW5nL0ludGVybmFscy5oOgorICAgICAgICAoSW50ZXJu
YWxzKToKKyAgICAgICAgKiB0ZXN0aW5nL0ludGVybmFscy5pZGw6CisKIDIwMTItMDItMTkgIEph
bWVzIFJvYmluc29uICA8amFtZXNyQGNocm9taXVtLm9yZz4KIAogICAgICAgICBNb3ZlIHN0dWIg
aW1wbGVtZW50YXRpb25zIG9mIFNjcm9sbGluZ0Nvb3JkaW5hdG9yIGZ1bmN0aW9ucyBpbnRvIFNj
cm9sbGluZ0Nvb3JkaW5hdG9yTm9uZS5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwppbmRleCAyMzkxMTZmOTI4MjAwZjk4
ZDlkN2JlOGRmMjY0NGIyN2E3Yzk5YWM4Li4wYzVkOWI3OGU4NzhiNWYzMDc0OTNhNGVlYmU1MDU2
ZTg2ZGZlNzU5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKKysrIGIvU291
cmNlL1dlYktpdDIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTMgQEAKKzIwMTItMDItMTkgIFNoaW55
YSBLYXdhbmFrYSAgPHNoaW55YWtAY2hyb21pdW0ub3JnPgorCisgICAgICAgIEVsZW1lbnQgc2hv
dWxkIGJlIGFibGUgdG8gaGF2ZSBtdWx0aXBsZSBzaGFkb3cgcm9vdHMuCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03NzkzMQorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogd2luL1dlYktpdDIuZGVmOgorICAg
ICAgICAqIHdpbi9XZWJLaXQyQ0ZMaXRlLmRlZjoKKwogMjAxMi0wMi0xOCAgRGFuIEJlcm5zdGVp
biAgPG1pdHpAYXBwbGUuY29tPgogCiAgICAgICAgIDxyZGFyOi8vcHJvYmxlbS8xMDg5MTgwMT4g
QmFja2luZ1N0b3JlOjpzY3JvbGwoKSB1bm5lY2Vzc2FyaWx5IGNvcGllcyBwaXhlbHMgYXJvdW5k
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmV4cC5pbiBiL1NvdXJjZS9XZWJD
b3JlL1dlYkNvcmUuZXhwLmluCmluZGV4IGFhNWMxNzdmMjI1YWU3YjAxYzllNDQxOWYyY2I5ZTYw
ZTQyMWI5NmIuLmYxNDdjMDIwNWUzN2JiMjYwYTIxMThjMGIyY2NjNWQ2ODcxZTNjZjQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZXhwLmluCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L1dlYkNvcmUuZXhwLmluCkBAIC05MTEsNyArOTExLDcgQEAgX19aTjdXZWJDb3JlNldpZGdldEQy
RXYKIF9fWk43V2ViQ29yZTZ0b05vZGVFTjNKU0M3SlNWYWx1ZUUKIF9fWk43V2ViQ29yZTdDb25z
b2xlMjFzaG91bGRQcmludEV4Y2VwdGlvbnNFdgogX19aTjdXZWJDb3JlN0NvbnNvbGUyNHNldFNo
b3VsZFByaW50RXhjZXB0aW9uc0ViCi1fX1pON1dlYkNvcmU3RWxlbWVudDE2cmVtb3ZlU2hhZG93
Um9vdEV2CitfX1pON1dlYkNvcmU3RWxlbWVudDIwcmVtb3ZlU2hhZG93Um9vdExpc3RFdgogX19a
TjdXZWJDb3JlN0VsZW1lbnQyMWJvdW5kc0luUm9vdFZpZXdTcGFjZUV2CiBfX1pON1dlYkNvcmU3
RWxlbWVudDlpbm5lclRleHRFdgogX19aTjdXZWJDb3JlN0ludFJlY3Q1c2NhbGVFZgpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9t
L0VsZW1lbnQuY3BwCmluZGV4IDRmYzRkODZkMDM0MzE4NWQ1Y2Y5MDA5MGY4NDMxOGNiNTViY2Iw
NDIuLjM2MzQ5NTY5YTE0MWQ2YjM2OTJjNGE5YTUwZTRlNWY1ZjkwNjQ3MzAgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20v
RWxlbWVudC5jcHAKQEAgLTc2LDYgKzc2LDEwIEBACiAjaW5jbHVkZSAiU1ZHTmFtZXMuaCIKICNl
bmRpZgogCisjaWYgRU5BQkxFKFNIQURPV19ET00pCisjaW5jbHVkZSAiUnVudGltZUVuYWJsZWRG
ZWF0dXJlcy5oIgorI2VuZGlmCisKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogdXNpbmcgbmFtZXNw
YWNlIEhUTUxOYW1lczsKQEAgLTEyMiw3ICsxMjYsNyBAQCBQYXNzUmVmUHRyPEVsZW1lbnQ+IEVs
ZW1lbnQ6OmNyZWF0ZShjb25zdCBRdWFsaWZpZWROYW1lJiB0YWdOYW1lLCBEb2N1bWVudCogZG9j
dQogCiBFbGVtZW50Ojp+RWxlbWVudCgpCiB7Ci0gICAgcmVtb3ZlU2hhZG93Um9vdCgpOworICAg
IHJlbW92ZVNoYWRvd1Jvb3RMaXN0KCk7CiAgICAgaWYgKG1fYXR0cmlidXRlTWFwKQogICAgICAg
ICBtX2F0dHJpYnV0ZU1hcC0+ZGV0YWNoRnJvbUVsZW1lbnQoKTsKIH0KQEAgLTExNzQsNyArMTE3
OCw3IEBAIHN0YXRpYyBib29sIHZhbGlkYXRlU2hhZG93Um9vdChEb2N1bWVudCogZG9jdW1lbnQs
IFNoYWRvd1Jvb3QqIHNoYWRvd1Jvb3QsIEV4Y2VwCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLXZv
aWQgRWxlbWVudDo6c2V0U2hhZG93Um9vdChQYXNzUmVmUHRyPFNoYWRvd1Jvb3Q+IHNoYWRvd1Jv
b3QsIEV4Y2VwdGlvbkNvZGUmIGVjKQordm9pZCBFbGVtZW50OjphZGRTaGFkb3dSb290KFBhc3NS
ZWZQdHI8U2hhZG93Um9vdD4gc2hhZG93Um9vdCwgRXhjZXB0aW9uQ29kZSYgZWMpCiB7CiAgICAg
aWYgKCF2YWxpZGF0ZVNoYWRvd1Jvb3QoZG9jdW1lbnQoKSwgc2hhZG93Um9vdC5nZXQoKSwgZWMp
KQogICAgICAgICByZXR1cm47CkBAIC0xMTgyLDcgKzExODYsMTIgQEAgdm9pZCBFbGVtZW50Ojpz
ZXRTaGFkb3dSb290KFBhc3NSZWZQdHI8U2hhZG93Um9vdD4gc2hhZG93Um9vdCwgRXhjZXB0aW9u
Q29kZSYgZWMKICAgICBpZiAoIWhhc1JhcmVEYXRhKCkpCiAgICAgICAgIGVuc3VyZVJhcmVEYXRh
KCk7CiAKLSAgICByZW1vdmVTaGFkb3dSb290KCk7CisjaWYgRU5BQkxFKFNIQURPV19ET00pCisg
ICAgaWYgKCFSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjptdWx0aXBsZVNoYWRvd1N1YnRyZWVzRW5h
YmxlZCgpKQorICAgICAgICByZW1vdmVTaGFkb3dSb290TGlzdCgpOworI2Vsc2UKKyAgICByZW1v
dmVTaGFkb3dSb290TGlzdCgpOworI2VuZGlmCiAKICAgICBzaGFkb3dSb290LT5zZXRTaGFkb3dI
b3N0KHRoaXMpOwogICAgIHNoYWRvd1Jvb3RMaXN0KCktPnB1c2hTaGFkb3dSb290KHNoYWRvd1Jv
b3QuZ2V0KCkpOwpAQCAtMTE5MSw5ICsxMjAwLDEyIEBAIHZvaWQgRWxlbWVudDo6c2V0U2hhZG93
Um9vdChQYXNzUmVmUHRyPFNoYWRvd1Jvb3Q+IHNoYWRvd1Jvb3QsIEV4Y2VwdGlvbkNvZGUmIGVj
CiAgICAgICAgIHNoYWRvd1Jvb3QtPmluc2VydGVkSW50b0RvY3VtZW50KCk7CiAgICAgaWYgKGF0
dGFjaGVkKCkpIHsKICAgICAgICAgc2hhZG93Um9vdC0+bGF6eUF0dGFjaCgpOworICAgICAgICBm
b3IgKFNoYWRvd1Jvb3QqIHJvb3QgPSBzaGFkb3dSb290TGlzdCgpLT55b3VuZ2VzdFNoYWRvd1Jv
b3QoKS0+b2xkZXJTaGFkb3dSb290KCk7IHJvb3Q7IHJvb3QgPSByb290LT5vbGRlclNoYWRvd1Jv
b3QoKSkKKyAgICAgICAgICAgIHJvb3QtPmRldGFjaCgpOwogICAgICAgICBmb3IgKE5vZGUqIGNo
aWxkID0gZmlyc3RDaGlsZCgpOyBjaGlsZDsgY2hpbGQgPSBjaGlsZC0+bmV4dFNpYmxpbmcoKSkK
ICAgICAgICAgICAgIGNoaWxkLT5kZXRhY2goKTsKICAgICB9CisKIH0KIAogU2hhZG93Um9vdCog
RWxlbWVudDo6ZW5zdXJlU2hhZG93Um9vdCgpCkBAIC0xMjA0LDcgKzEyMTYsNyBAQCBTaGFkb3dS
b290KiBFbGVtZW50OjplbnN1cmVTaGFkb3dSb290KCkKICAgICByZXR1cm4gU2hhZG93Um9vdDo6
Y3JlYXRlKHRoaXMsIFNoYWRvd1Jvb3Q6OkNyZWF0aW5nVXNlckFnZW50U2hhZG93Um9vdCkuZ2V0
KCk7CiB9CiAKLXZvaWQgRWxlbWVudDo6cmVtb3ZlU2hhZG93Um9vdCgpCit2b2lkIEVsZW1lbnQ6
OnJlbW92ZVNoYWRvd1Jvb3RMaXN0KCkKIHsKICAgICBpZiAoIWhhc1NoYWRvd1Jvb3QoKSkKICAg
ICAgICAgcmV0dXJuOwpAQCAtMTIxNiwxNiArMTIyOCwxOSBAQCB2b2lkIEVsZW1lbnQ6OnJlbW92
ZVNoYWRvd1Jvb3QoKQogICAgICAgICAgICAgb2xkUm9vdC0+ZGV0YWNoKCk7CiAKICAgICAgICAg
b2xkUm9vdC0+c2V0U2hhZG93SG9zdCgwKTsKKyAgICAgICAgb2xkUm9vdC0+c2V0UHJldigwKTsK
KyAgICAgICAgb2xkUm9vdC0+c2V0TmV4dCgwKTsKICAgICAgICAgZG9jdW1lbnQoKS0+YWRvcHRJ
Zk5lZWRlZChvbGRSb290LmdldCgpKTsKICAgICAgICAgaWYgKG9sZFJvb3QtPmluRG9jdW1lbnQo
KSkKICAgICAgICAgICAgIG9sZFJvb3QtPnJlbW92ZWRGcm9tRG9jdW1lbnQoKTsKICAgICAgICAg
ZWxzZQogICAgICAgICAgICAgb2xkUm9vdC0+cmVtb3ZlZEZyb21UcmVlKHRydWUpOwotICAgICAg
ICBpZiAoYXR0YWNoZWQoKSkgewotICAgICAgICAgICAgZm9yIChOb2RlKiBjaGlsZCA9IGZpcnN0
Q2hpbGQoKTsgY2hpbGQ7IGNoaWxkID0gY2hpbGQtPm5leHRTaWJsaW5nKCkpIHsKLSAgICAgICAg
ICAgICAgICBpZiAoIWNoaWxkLT5hdHRhY2hlZCgpKQotICAgICAgICAgICAgICAgICAgICBjaGls
ZC0+bGF6eUF0dGFjaCgpOwotICAgICAgICAgICAgfQorICAgIH0KKworICAgIGlmIChhdHRhY2hl
ZCgpKSB7CisgICAgICAgIGZvciAoTm9kZSogY2hpbGQgPSBmaXJzdENoaWxkKCk7IGNoaWxkOyBj
aGlsZCA9IGNoaWxkLT5uZXh0U2libGluZygpKSB7CisgICAgICAgICAgICBpZiAoIWNoaWxkLT5h
dHRhY2hlZCgpKQorICAgICAgICAgICAgICAgIGNoaWxkLT5sYXp5QXR0YWNoKCk7CiAgICAgICAg
IH0KICAgICB9CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5oIGIv
U291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuaAppbmRleCA2M2EzMDliMThmMTk5Njc2N2ZhMzgw
Zjg2ZTVlYzZiYmIzNjcyMDAxLi5lOTVjMjJjNmExMTg3ZmZlYTU1MWZlNDE5ZDAzNTAzMDc2NDU3
OGU3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2RvbS9FbGVtZW50LmgKQEAgLTI1NSwxMiArMjU1LDExIEBAIHB1YmxpYzoKIAog
ICAgIGJvb2wgaGFzU2hhZG93Um9vdCgpIGNvbnN0OwogICAgIFNoYWRvd1Jvb3RMaXN0KiBzaGFk
b3dSb290TGlzdCgpIGNvbnN0OwotCi0gICAgLy8gRklYTUU6IFRoZXNlIEFQSSB3aWxsIGJlIG1v
dmVkIHRvIFNoYWRvd1Jvb3RMaXN0LgotICAgIC8vIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD03ODMxMwotICAgIHZvaWQgc2V0U2hhZG93Um9vdChQYXNzUmVmUHRyPFNo
YWRvd1Jvb3Q+LCBFeGNlcHRpb25Db2RlJik7CisgICAgdm9pZCBhZGRTaGFkb3dSb290KFBhc3NS
ZWZQdHI8U2hhZG93Um9vdD4sIEV4Y2VwdGlvbkNvZGUmKTsKKyAgICB2b2lkIHJlbW92ZVNoYWRv
d1Jvb3RMaXN0KCk7CisgICAgLy8gRklYTUU6IGVuc3VyZVNoYWRvd1Jvb3QoKSB3aWxsIGJlIHJl
bW92ZWQgbGF0ZXIuCisgICAgLy8gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTc3NjA4CiAgICAgU2hhZG93Um9vdCogZW5zdXJlU2hhZG93Um9vdCgpOwotICAgIHZvaWQg
cmVtb3ZlU2hhZG93Um9vdCgpOwogCiAgICAgdmlydHVhbCBjb25zdCBBdG9taWNTdHJpbmcmIHNo
YWRvd1BzZXVkb0lkKCkgY29uc3Q7CiAgICAgdm9pZCBzZXRTaGFkb3dQc2V1ZG9JZChjb25zdCBB
dG9taWNTdHJpbmcmLCBFeGNlcHRpb25Db2RlJiA9IEFTU0VSVF9OT19FWENFUFRJT04pOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL05vZGVSZW5kZXJpbmdDb250ZXh0LmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2RvbS9Ob2RlUmVuZGVyaW5nQ29udGV4dC5jcHAKaW5kZXggOGU0NWI0MTNh
ZWNkNmUwMmMyMDUwMmUzOGExMGViNzQ2OWE0YTY5ZS4uODBhMjkyODYxYTgzNWFmZGQ4MWJjYmUz
M2M1MzE4MGQyNzhhNDhhYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL05vZGVSZW5k
ZXJpbmdDb250ZXh0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZVJlbmRlcmluZ0Nv
bnRleHQuY3BwCkBAIC01Nyw3ICs1NywxMCBAQCBOb2RlUmVuZGVyaW5nQ29udGV4dDo6Tm9kZVJl
bmRlcmluZ0NvbnRleHQoTm9kZSogbm9kZSkKICAgICAgICAgcmV0dXJuOwogCiAgICAgaWYgKHBh
cmVudC0+aXNTaGFkb3dSb290KCkpIHsKLSAgICAgICAgbV9waGFzZSA9IEF0dGFjaGluZ1NoYWRv
d0NoaWxkOworICAgICAgICBpZiAodG9TaGFkb3dSb290KHBhcmVudCktPnlvdW5nZXJTaGFkb3dS
b290KCkpCisgICAgICAgICAgICBtX3BoYXNlID0gQXR0YWNoaW5nTm90RGlzdHJpYnV0ZWQ7Cisg
ICAgICAgIGVsc2UKKyAgICAgICAgICAgIG1fcGhhc2UgPSBBdHRhY2hpbmdTaGFkb3dDaGlsZDsK
ICAgICAgICAgbV9wYXJlbnROb2RlRm9yUmVuZGVyaW5nQW5kU3R5bGUgPSBwYXJlbnQtPnNoYWRv
d0hvc3QoKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KQEAgLTI1OSw3ICsyNjIsNyBAQCBSZW5k
ZXJPYmplY3QqIE5vZGVSZW5kZXJpbmdDb250ZXh0OjpwYXJlbnRSZW5kZXJlcigpIGNvbnN0CiAK
IHZvaWQgTm9kZVJlbmRlcmluZ0NvbnRleHQ6Omhvc3RDaGlsZHJlbkNoYW5nZWQoKQogewotICAg
IGlmIChtX3BoYXNlID09IEF0dGFjaGluZ05vdERpc3RyaWJ1dGVkKQorICAgIGlmIChtX3BoYXNl
ID09IEF0dGFjaGluZ05vdERpc3RyaWJ1dGVkICYmIG1fdmlzdWFsUGFyZW50U2hhZG93Um9vdCkK
ICAgICAgICAgbV92aXN1YWxQYXJlbnRTaGFkb3dSb290LT5ob3N0Q2hpbGRyZW5DaGFuZ2VkKCk7
CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9TaGFkb3dSb290LmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2RvbS9TaGFkb3dSb290LmNwcAppbmRleCBlZDkwZjBmZWM4MGQ1OGI3OGRm
N2JiNzAyNGQxMTQyMGNmNmY1ZmYzLi45MjE2YTE4NDdmMWMwNzUwZWMwNTYwNmVjMDRmOWVhOTFm
N2E5OThiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vU2hhZG93Um9vdC5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvZG9tL1NoYWRvd1Jvb3QuY3BwCkBAIC0xMjQsNyArMTI0LDcgQEAg
UGFzc1JlZlB0cjxTaGFkb3dSb290PiBTaGFkb3dSb290OjpjcmVhdGUoRWxlbWVudCogZWxlbWVu
dCwgU2hhZG93Um9vdENyZWF0aW9uUHUKICAgICBSZWZQdHI8U2hhZG93Um9vdD4gc2hhZG93Um9v
dCA9IGFkb3B0UmVmKG5ldyBTaGFkb3dSb290KGVsZW1lbnQtPmRvY3VtZW50KCkpKTsKIAogICAg
IGVjID0gMDsKLSAgICBlbGVtZW50LT5zZXRTaGFkb3dSb290KHNoYWRvd1Jvb3QsIGVjKTsKKyAg
ICBlbGVtZW50LT5hZGRTaGFkb3dSb290KHNoYWRvd1Jvb3QsIGVjKTsKICAgICBpZiAoZWMpCiAg
ICAgICAgIHJldHVybiAwOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vU2hhZG93
Um9vdExpc3QuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL1NoYWRvd1Jvb3RMaXN0LmNwcAppbmRl
eCBkMTk1NWFhZWU2MDBmMDQ3MTBlMWE0YjM5ZjM5MDZjZWUyNTEzMjQzLi4wNjk5N2VlZTkzMzMz
MGNlNDU2ZGM0MzM3ODYwM2ViNWQ4ZDUxNjYxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9k
b20vU2hhZG93Um9vdExpc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9TaGFkb3dSb290
TGlzdC5jcHAKQEAgLTEwMSwxMCArMTAxLDYgQEAgdm9pZCBTaGFkb3dSb290TGlzdDo6aG9zdENo
aWxkcmVuQ2hhbmdlZCgpCiAKIHZvaWQgU2hhZG93Um9vdExpc3Q6OmF0dGFjaCgpCiB7Ci0gICAg
Ly8gRklYTUU6IEN1cnJlbnRseSB3ZSBvbmx5IHN1cHBvcnQgdGhlIGNhc2UgdGhhdCB0aGUgc2hh
ZG93IHJvb3QgbGlzdCBoYXMgYXQgbW9zdCBvbmUgc2hhZG93IHJvb3QuCi0gICAgLy8gU2VlIGFs
c28gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTc3NTAzIGFuZCBpdHMg
ZGVwZW5kZW50IGJ1Z3MuCi0gICAgQVNTRVJUKG1fc2hhZG93Um9vdHMuc2l6ZSgpIDw9IDEpOwot
CiAgICAgZm9yIChTaGFkb3dSb290KiByb290ID0geW91bmdlc3RTaGFkb3dSb290KCk7IHJvb3Q7
IHJvb3QgPSByb290LT5vbGRlclNoYWRvd1Jvb3QoKSkgewogICAgICAgICBpZiAoIXJvb3QtPmF0
dGFjaGVkKCkpCiAgICAgICAgICAgICByb290LT5hdHRhY2goKTsKQEAgLTExMywxMCArMTA5LDYg
QEAgdm9pZCBTaGFkb3dSb290TGlzdDo6YXR0YWNoKCkKIAogdm9pZCBTaGFkb3dSb290TGlzdDo6
ZGV0YWNoKCkKIHsKLSAgICAvLyBGSVhNRTogQ3VycmVudGx5IHdlIG9ubHkgc3VwcG9ydCB0aGUg
Y2FzZSB0aGF0IHRoZSBzaGFkb3cgcm9vdCBsaXN0IGhhcyBhdCBtb3N0IG9uZSBzaGFkb3cgcm9v
dC4KLSAgICAvLyBTZWUgYWxzbyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9Nzc1MDMgYW5kIGl0cyBkZXBlbmRlbnQgYnVncy4KLSAgICBBU1NFUlQobV9zaGFkb3dSb290
cy5zaXplKCkgPD0gMSk7Ci0KICAgICBmb3IgKFNoYWRvd1Jvb3QqIHJvb3QgPSB5b3VuZ2VzdFNo
YWRvd1Jvb3QoKTsgcm9vdDsgcm9vdCA9IHJvb3QtPm9sZGVyU2hhZG93Um9vdCgpKSB7CiAgICAg
ICAgIGlmIChyb290LT5hdHRhY2hlZCgpKQogICAgICAgICAgICAgcm9vdC0+ZGV0YWNoKCk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5jcHAKaW5kZXggMTU2MjBjZDBkYWJlYzZmOWVlMmIw
MjFmZmZhNmJlZjk1ZGEzMzdkNS4uZmQzNzc4NmM1NTg5YWMyMjdjZmNlMTJkOTVjNDVkYTMyODk1
M2U1NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNwcApAQCAtMTE5LDYgKzExOSwx
NCBAQCBJbnRlcm5hbHM6OkludGVybmFscyhEb2N1bWVudCogZG9jdW1lbnQpCiAgICAgcmVzZXQo
ZG9jdW1lbnQpOwogfQogCitTdHJpbmcgSW50ZXJuYWxzOjphZGRyZXNzKE5vZGUqIG5vZGUpCit7
CisgICAgY2hhciBidWZbMzJdOworICAgIHNwcmludGYoYnVmLCAiJXAiLCBub2RlKTsKKworICAg
IHJldHVybiBTdHJpbmcoYnVmKTsKK30KKwogYm9vbCBJbnRlcm5hbHM6OmlzUHJlbG9hZGVkKERv
Y3VtZW50KiBkb2N1bWVudCwgY29uc3QgU3RyaW5nJiB1cmwpCiB7CiAgICAgaWYgKCFkb2N1bWVu
dCkKQEAgLTIzMSw2ICsyMzksMjYgQEAgSW50ZXJuYWxzOjpTaGFkb3dSb290SWZTaGFkb3dET01F
bmFibGVkT3JOb2RlKiBJbnRlcm5hbHM6Om9sZGVzdFNoYWRvd1Jvb3QoRWxlbWUKICAgICByZXR1
cm4gaG9zdC0+c2hhZG93Um9vdExpc3QoKS0+b2xkZXN0U2hhZG93Um9vdCgpOwogfQogCitJbnRl
cm5hbHM6OlNoYWRvd1Jvb3RJZlNoYWRvd0RPTUVuYWJsZWRPck5vZGUqIEludGVybmFsczo6eW91
bmdlclNoYWRvd1Jvb3QoTm9kZSogc2hhZG93LCBFeGNlcHRpb25Db2RlJiBlYykKK3sKKyAgICBp
ZiAoIXNoYWRvdyB8fCAhc2hhZG93LT5pc1NoYWRvd1Jvb3QoKSkgeworICAgICAgICBlYyA9IElO
VkFMSURfQUNDRVNTX0VSUjsKKyAgICAgICAgcmV0dXJuIDA7CisgICAgfQorCisgICAgcmV0dXJu
IHRvU2hhZG93Um9vdChzaGFkb3cpLT55b3VuZ2VyU2hhZG93Um9vdCgpOworfQorCitJbnRlcm5h
bHM6OlNoYWRvd1Jvb3RJZlNoYWRvd0RPTUVuYWJsZWRPck5vZGUqIEludGVybmFsczo6b2xkZXJT
aGFkb3dSb290KE5vZGUqIHNoYWRvdywgRXhjZXB0aW9uQ29kZSYgZWMpCit7CisgICAgaWYgKCFz
aGFkb3cgfHwgIXNoYWRvdy0+aXNTaGFkb3dSb290KCkpIHsKKyAgICAgICAgZWMgPSBJTlZBTElE
X0FDQ0VTU19FUlI7CisgICAgICAgIHJldHVybiAwOworICAgIH0KKworICAgIHJldHVybiB0b1No
YWRvd1Jvb3Qoc2hhZG93KS0+b2xkZXJTaGFkb3dSb290KCk7Cit9CisKIHZvaWQgSW50ZXJuYWxz
OjpyZW1vdmVTaGFkb3dSb290KEVsZW1lbnQqIGhvc3QsIEV4Y2VwdGlvbkNvZGUmIGVjKQogewog
ICAgIGlmICghaG9zdCkgewpAQCAtMjM4LDcgKzI2Niw3IEBAIHZvaWQgSW50ZXJuYWxzOjpyZW1v
dmVTaGFkb3dSb290KEVsZW1lbnQqIGhvc3QsIEV4Y2VwdGlvbkNvZGUmIGVjKQogICAgICAgICBy
ZXR1cm47CiAgICAgfQogCi0gICAgaG9zdC0+cmVtb3ZlU2hhZG93Um9vdCgpOworICAgIGhvc3Qt
PnJlbW92ZVNoYWRvd1Jvb3RMaXN0KCk7CiB9CiAKIHZvaWQgSW50ZXJuYWxzOjpzZXRNdWx0aXBs
ZVNoYWRvd1N1YnRyZWVzRW5hYmxlZChib29sIGVuYWJsZWQpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5oIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRl
cm5hbHMuaAppbmRleCA3Y2RlZTE3MTczNDU0MmE2MDkwMmUyOWFjMjAzOTVmODY2YzhmNjJkLi4x
MTgzMTg1MzFlMDA3YTY4YTUzMDU2OTNhZDk2OTVhZTI4MmIxMzEzIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Rlc3Rp
bmcvSW50ZXJuYWxzLmgKQEAgLTU1LDYgKzU1LDggQEAgcHVibGljOgogCiAgICAgU3RyaW5nIGVs
ZW1lbnRSZW5kZXJUcmVlQXNUZXh0KEVsZW1lbnQqLCBFeGNlcHRpb25Db2RlJik7CiAKKyAgICBT
dHJpbmcgYWRkcmVzcyhOb2RlKik7CisKICAgICBib29sIGlzUHJlbG9hZGVkKERvY3VtZW50Kiwg
Y29uc3QgU3RyaW5nJiB1cmwpOwogCiAgICAgc2l6ZV90IG51bWJlck9mU2NvcGVkSFRNTFN0eWxl
Q2hpbGRyZW4oY29uc3QgTm9kZSosIEV4Y2VwdGlvbkNvZGUmKSBjb25zdDsKQEAgLTY4LDYgKzcw
LDggQEAgcHVibGljOgogICAgIFNoYWRvd1Jvb3RJZlNoYWRvd0RPTUVuYWJsZWRPck5vZGUqIHNo
YWRvd1Jvb3QoRWxlbWVudCogaG9zdCwgRXhjZXB0aW9uQ29kZSYpOwogICAgIFNoYWRvd1Jvb3RJ
ZlNoYWRvd0RPTUVuYWJsZWRPck5vZGUqIHlvdW5nZXN0U2hhZG93Um9vdChFbGVtZW50KiBob3N0
LCBFeGNlcHRpb25Db2RlJik7CiAgICAgU2hhZG93Um9vdElmU2hhZG93RE9NRW5hYmxlZE9yTm9k
ZSogb2xkZXN0U2hhZG93Um9vdChFbGVtZW50KiBob3N0LCBFeGNlcHRpb25Db2RlJik7CisgICAg
U2hhZG93Um9vdElmU2hhZG93RE9NRW5hYmxlZE9yTm9kZSogeW91bmdlclNoYWRvd1Jvb3QoTm9k
ZSogc2hhZG93LCBFeGNlcHRpb25Db2RlJik7CisgICAgU2hhZG93Um9vdElmU2hhZG93RE9NRW5h
YmxlZE9yTm9kZSogb2xkZXJTaGFkb3dSb290KE5vZGUqIHNoYWRvdywgRXhjZXB0aW9uQ29kZSYp
OwogICAgIHZvaWQgcmVtb3ZlU2hhZG93Um9vdChFbGVtZW50KiBob3N0LCBFeGNlcHRpb25Db2Rl
Jik7CiAgICAgdm9pZCBzZXRNdWx0aXBsZVNoYWRvd1N1YnRyZWVzRW5hYmxlZChib29sKTsKICAg
ICBFbGVtZW50KiBpbmNsdWRlckZvcihOb2RlKiwgRXhjZXB0aW9uQ29kZSYpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuaWRsIGIvU291cmNlL1dlYkNvcmUv
dGVzdGluZy9JbnRlcm5hbHMuaWRsCmluZGV4IDY1ZGE2Mjk2YTU5NGNhMmI5NGFlZWFjNzQ5YmZk
MDBjYTk3NzlmNTEuLmM4ODkyMTRlMzUzNWQyZGQxMTU3MjFkZmFiYTkwNDg1NTA2YzMyOWQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmlkbAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5pZGwKQEAgLTI3LDYgKzI3LDggQEAgbW9kdWxl
IHdpbmRvdyB7CiAgICAgaW50ZXJmYWNlIFsKICAgICAgICAgT21pdENvbnN0cnVjdG9yCiAgICAg
XSBJbnRlcm5hbHMgeworICAgICAgICBET01TdHJpbmcgYWRkcmVzcyhpbiBOb2RlIG5vZGUpOwor
CiAgICAgICAgIERPTVN0cmluZyBlbGVtZW50UmVuZGVyVHJlZUFzVGV4dChpbiBFbGVtZW50IGVs
ZW1lbnQpIHJhaXNlcyhET01FeGNlcHRpb24pOwogICAgICAgICBib29sZWFuIGlzUHJlbG9hZGVk
KGluIERvY3VtZW50IGRvY3VtZW50LCBpbiBET01TdHJpbmcgdXJsKTsKIApAQCAtMzcsMTEgKzM5
LDE1IEBAIG1vZHVsZSB3aW5kb3cgewogICAgICAgICBTaGFkb3dSb290IHNoYWRvd1Jvb3QoaW4g
RWxlbWVudCBob3N0KSByYWlzZXMgKERPTUV4Y2VwdGlvbik7CiAgICAgICAgIFNoYWRvd1Jvb3Qg
eW91bmdlc3RTaGFkb3dSb290KGluIEVsZW1lbnQgaG9zdCkgcmFpc2VzIChET01FeGNlcHRpb24p
OwogICAgICAgICBTaGFkb3dSb290IG9sZGVzdFNoYWRvd1Jvb3QoaW4gRWxlbWVudCBob3N0KSBy
YWlzZXMgKERPTUV4Y2VwdGlvbik7CisgICAgICAgIFNoYWRvd1Jvb3QgeW91bmdlclNoYWRvd1Jv
b3QoaW4gTm9kZSByb290KSByYWlzZXMgKERPTUV4Y2VwdGlvbik7CisgICAgICAgIFNoYWRvd1Jv
b3Qgb2xkZXJTaGFkb3dSb290KGluIE5vZGUgcm9vdCkgcmFpc2VzIChET01FeGNlcHRpb24pOwog
I2Vsc2UKICAgICAgICAgTm9kZSBlbnN1cmVTaGFkb3dSb290KGluIEVsZW1lbnQgaG9zdCkgcmFp
c2VzIChET01FeGNlcHRpb24pOwogICAgICAgICBOb2RlIHNoYWRvd1Jvb3QoaW4gRWxlbWVudCBo
b3N0KSByYWlzZXMgKERPTUV4Y2VwdGlvbik7CiAgICAgICAgIE5vZGUgeW91bmdlc3RTaGFkb3dS
b290KGluIEVsZW1lbnQgaG9zdCkgcmFpc2VzIChET01FeGNlcHRpb24pOwogICAgICAgICBOb2Rl
IG9sZGVzdFNoYWRvd1Jvb3QoaW4gRWxlbWVudCBob3N0KSByYWlzZXMgKERPTUV4Y2VwdGlvbik7
CisgICAgICAgIE5vZGUgeW91bmdlclNoYWRvd1Jvb3QoaW4gTm9kZSByb290KSByYWlzZXMgKERP
TUV4Y2VwdGlvbik7CisgICAgICAgIE5vZGUgeW91bmdlclNoYWRvd1Jvb3QoaW4gTm9kZSByb290
KSByYWlzZXMgKERPTUV4Y2VwdGlvbik7CiAjZW5kaWYKICAgICAgICAgdm9pZCBzZXRNdWx0aXBs
ZVNoYWRvd1N1YnRyZWVzRW5hYmxlZChpbiBib29sZWFuIGVuYWJsZWQpOwogICAgICAgICBFbGVt
ZW50IGluY2x1ZGVyRm9yKGluIE5vZGUgbm9kZSkgcmFpc2VzIChET01FeGNlcHRpb24pOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdDIvd2luL1dlYktpdDIuZGVmIGIvU291cmNlL1dlYktpdDIv
d2luL1dlYktpdDIuZGVmCmluZGV4IDJhYTcwZGY1ZWRiMWU2YWM0M2Q5NWVjZDcxZDJiNjU1ZDRk
NTg2NTMuLmUzNjQ4NmQ3ZDc0ZmU1ODM2NzQ3YzdmNWI4NGZkOWI5Zjg1MGExYTggMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQyL3dpbi9XZWJLaXQyLmRlZgorKysgYi9Tb3VyY2UvV2ViS2l0Mi93
aW4vV2ViS2l0Mi5kZWYKQEAgLTE3Niw3ICsxNzYsNyBAQCBFWFBPUlRTCiAgICAgICAgID9wYWdl
QERvY3VtZW50QFdlYkNvcmVAQFFCRVBBVlBhZ2VAMkBYWgogICAgICAgICA/cGFpbnRDb250cm9s
VGludHNARnJhbWVWaWV3QFdlYkNvcmVAQEFBRVhYWgogICAgICAgICA/cmFuZ2VGcm9tTG9jYXRp
b25BbmRMZW5ndGhAVGV4dEl0ZXJhdG9yQFdlYkNvcmVAQFNBP0FWPyRQYXNzUmVmUHRyQFZSYW5n
ZUBXZWJDb3JlQEBAV1RGQEBQQVZFbGVtZW50QDJASEhfTkBaCi0gICAgICAgID9yZW1vdmVTaGFk
b3dSb290QEVsZW1lbnRAV2ViQ29yZUBAUUFFWFhaCisgICAgICAgID9yZW1vdmVTaGFkb3dSb290
TGlzdEBFbGVtZW50QFdlYkNvcmVAQFFBRVhYWgogICAgICAgICA/c2NyaXB0RXhlY3V0aW9uQ29u
dGV4dEBKU0RPTUdsb2JhbE9iamVjdEBXZWJDb3JlQEBRQkVQQVZTY3JpcHRFeGVjdXRpb25Db250
ZXh0QDJAWFoKICAgICAgICAgP3Njcm9sbEVsZW1lbnRUb1JlY3RARnJhbWVWaWV3QFdlYkNvcmVA
QFFBRVhQQVZFbGVtZW50QDJAQUJWSW50UmVjdEAyQEBaCiAgICAgICAgID9zZXRET01FeGNlcHRp
b25AV2ViQ29yZUBAWUFYUEFWRXhlY1N0YXRlQEpTQ0BASEBaCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0Mi93aW4vV2ViS2l0MkNGTGl0ZS5kZWYgYi9Tb3VyY2UvV2ViS2l0Mi93aW4vV2ViS2l0
MkNGTGl0ZS5kZWYKaW5kZXggY2I3YjdjZTY5NmUxMmQxYjlmZTFiNTI3OWQ2YmI2YjNiZjUwMjc0
ZC4uZDdkM2RiYjRlODczYTE5NzZjMmRlZDQ4ODQ0OWQ5MmE3YTNiNDVjNyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdDIvd2luL1dlYktpdDJDRkxpdGUuZGVmCisrKyBiL1NvdXJjZS9XZWJLaXQy
L3dpbi9XZWJLaXQyQ0ZMaXRlLmRlZgpAQCAtMTcxLDcgKzE3MSw3IEBAIEVYUE9SVFMKICAgICAg
ICAgP3BhZ2VARG9jdW1lbnRAV2ViQ29yZUBAUUJFUEFWUGFnZUAyQFhaCiAgICAgICAgID9wYWlu
dENvbnRyb2xUaW50c0BGcmFtZVZpZXdAV2ViQ29yZUBAQUFFWFhaCiAgICAgICAgID9yYW5nZUZy
b21Mb2NhdGlvbkFuZExlbmd0aEBUZXh0SXRlcmF0b3JAV2ViQ29yZUBAU0E/QVY/JFBhc3NSZWZQ
dHJAVlJhbmdlQFdlYkNvcmVAQEBXVEZAQFBBVkVsZW1lbnRAMkBISF9OQFoKLSAgICAgICAgP3Jl
bW92ZVNoYWRvd1Jvb3RARWxlbWVudEBXZWJDb3JlQEBRQUVYWFoKKyAgICAgICAgP3JlbW92ZVNo
YWRvd1Jvb3RMaXN0QEVsZW1lbnRAV2ViQ29yZUBAUUFFWFhaCiAgICAgICAgID9zY3JpcHRFeGVj
dXRpb25Db250ZXh0QEpTRE9NR2xvYmFsT2JqZWN0QFdlYkNvcmVAQFFCRVBBVlNjcmlwdEV4ZWN1
dGlvbkNvbnRleHRAMkBYWgogICAgICAgICA/c2Nyb2xsRWxlbWVudFRvUmVjdEBGcmFtZVZpZXdA
V2ViQ29yZUBAUUFFWFBBVkVsZW1lbnRAMkBBQlZJbnRSZWN0QDJAQFoKICAgICAgICAgP3NldERP
TUV4Y2VwdGlvbkBXZWJDb3JlQEBZQVhQQVZFeGVjU3RhdGVASlNDQEBIQFoKZGlmZiAtLWdpdCBh
L1NvdXJjZS9hdXRvdG9vbHMvc3ltYm9scy5maWx0ZXIgYi9Tb3VyY2UvYXV0b3Rvb2xzL3N5bWJv
bHMuZmlsdGVyCmluZGV4IDg1ZWMwMmJiNWRmNzg0NTYzMGY2ZGEyZTYxMTJkNTRmNjhiZDBmYWQu
LmZmMTgzZDg5NWRiZTg5NzM3ZTk0NWM3YTNhZWU2ZTU0MTUxZTljNGIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9hdXRvdG9vbHMvc3ltYm9scy5maWx0ZXIKKysrIGIvU291cmNlL2F1dG90b29scy9zeW1i
b2xzLmZpbHRlcgpAQCAtNjYsNyArNjYsNyBAQCBfWk43V2ViQ29yZTZKU05vZGUxMHB1dFZpcnR1
YWxFUE4zSlNDOUV4ZWNTdGF0ZUVSS05TMV8xMElkZW50aWZpZXJFTlMxXzdKU1ZhbHVlRQogX1pO
N1dlYkNvcmU2SlNOb2RlMjB2aXNpdENoaWxkcmVuVmlydHVhbEVSTjNKU0MxMVNsb3RWaXNpdG9y
RTsKIF9aTjdXZWJDb3JlNkpTTm9kZTZzX2luZm9FOwogX1pON1dlYkNvcmU2dG9Ob2RlRU4zSlND
N0pTVmFsdWVFOwotX1pON1dlYkNvcmU3RWxlbWVudDE2cmVtb3ZlU2hhZG93Um9vdEV2OworX1pO
N1dlYkNvcmU3RWxlbWVudDIwcmVtb3ZlU2hhZG93Um9vdExpc3RFdjsKIF9aTjdXZWJDb3JlN3Rv
UmFuZ2VFTjNKU0M3SlNWYWx1ZUU7CiBfWk43V2ViQ29yZTlKU0VsZW1lbnQxMHB1dFZpcnR1YWxF
UE4zSlNDOUV4ZWNTdGF0ZUVSS05TMV8xMElkZW50aWZpZXJFTlMxXzdKU1ZhbHVlRVJOUzFfMTVQ
dXRQcm9wZXJ0eVNsb3RFOwogX1pON1dlYkNvcmU5SlNFbGVtZW50NnNfaW5mb0U7CmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXgg
OWZiMmQxYTcyZGI4ZDI2MWE0NDczY2ZhMWNiNzQwZjUzZTFlMzU5NS4uODliODczZWM4NTc0Yjgw
MzY1MjU2N2QzNzk0MWMwNTJhYzUwNjFhOSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdl
TG9nCisrKyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI5IEBACisyMDEyLTAy
LTE5ICBTaGlueWEgS2F3YW5ha2EgIDxzaGlueWFrQGNocm9taXVtLm9yZz4KKworICAgICAgICBF
bGVtZW50IHNob3VsZCBiZSBhYmxlIHRvIGhhdmUgbXVsdGlwbGUgc2hhZG93IHJvb3RzLgorICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9Nzc5MzEKKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIGZhc3QvZG9tL3Jl
c291cmNlcy9zaGFkb3ctdGVzdC1kcml2ZXIuanM6CisgICAgICAgIChkb25lVGVzdCk6CisgICAg
ICAgICAgdGVzdERvd25PbmNlKCkgd2lsbCBiZSBjYWxsZWQgYWZ0ZXIgdGhlIHdob2xlIHRlc3Qu
CisgICAgICAgIChkb1Rlc3QpOgorICAgICAgICAgIHNldFVwT25jZSgpIHdpbGwgYmUgY2FsbGVk
IGJlZm9yZSB0aGUgd2hvbGUgdGVzdC4KKyAgICAgICAgKGNyZWF0ZVNwYW5XaXRoVGV4dCk6Cisg
ICAgICAgICAgQ2FuIHRha2UgY2xhc3NOYW1lIGFzIGFuIGFyZ3VtZW50LgorICAgICAgICAqIGZh
c3QvZG9tL3NoYWRvdy9tdWx0aXBsZS1zaGFkb3dyb290LWV4cGVjdGVkLnR4dDogQWRkZWQuCisg
ICAgICAgICogZmFzdC9kb20vc2hhZG93L211bHRpcGxlLXNoYWRvd3Jvb3QtcmVuZGVyaW5nLWV4
cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogZmFzdC9kb20vc2hhZG93L211bHRpcGxlLXNo
YWRvd3Jvb3QtcmVuZGVyaW5nLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGZhc3QvZG9tL3NoYWRv
dy9tdWx0aXBsZS1zaGFkb3dyb290Lmh0bWw6IEFkZGVkLgorICAgICAgICAqIHBsYXRmb3JtL2Vm
bC9Ta2lwcGVkOgorICAgICAgICAqIHBsYXRmb3JtL2d0ay9Ta2lwcGVkOgorICAgICAgICAqIHBs
YXRmb3JtL21hYy9Ta2lwcGVkOgorICAgICAgICAqIHBsYXRmb3JtL3F0L1NraXBwZWQ6CisgICAg
ICAgICogcGxhdGZvcm0vd2luL1NraXBwZWQ6CisgICAgICAgICogcGxhdGZvcm0vd2luY2Fpcm8v
U2tpcHBlZDoKKyAgICAgICAgKiBwbGF0Zm9ybS93azIvU2tpcHBlZDoKKwogMjAxMi0wMi0xOSAg
SmFtZXMgUm9iaW5zb24gIDxqYW1lc3JAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFtjaHJvbWl1
bV0gVW5yZXZpZXdlZCAtIG1hcmsgZmFpbGluZyB0ZXN0IGFzIGZhaWxpbmcuCmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9mYXN0L2RvbS9yZXNvdXJjZXMvc2hhZG93LXRlc3QtZHJpdmVyLmpzIGIv
TGF5b3V0VGVzdHMvZmFzdC9kb20vcmVzb3VyY2VzL3NoYWRvdy10ZXN0LWRyaXZlci5qcwppbmRl
eCA5OWUzZWJmNmY3ZTUyZWRkZWJiNWIzMGU0ODliMGI2ZWRhNGUwY2JlLi4wZmY1ZDQwNThlMjA3
YzFkMGIyOWYyMThiMDI5MTJjZmNiNWI5MGYwIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9mYXN0
L2RvbS9yZXNvdXJjZXMvc2hhZG93LXRlc3QtZHJpdmVyLmpzCisrKyBiL0xheW91dFRlc3RzL2Zh
c3QvZG9tL3Jlc291cmNlcy9zaGFkb3ctdGVzdC1kcml2ZXIuanMKQEAgLTUzLDkgKzUzLDExIEBA
IGZ1bmN0aW9uIGNoZWNrKCkgewogICAgIH0KIH0KIAotZnVuY3Rpb24gY3JlYXRlU3BhbldpdGhU
ZXh0KHRleHQpIHsKK2Z1bmN0aW9uIGNyZWF0ZVNwYW5XaXRoVGV4dCh0ZXh0LCBjbGFzc05hbWUp
IHsKICAgICB2YXIgc3BhbiA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3NwYW4nKTsKICAgICBz
cGFuLmFwcGVuZENoaWxkKGRvY3VtZW50LmNyZWF0ZVRleHROb2RlKHRleHQpKTsKKyAgICBpZiAo
Y2xhc3NOYW1lKQorICAgICAgICBzcGFuLmNsYXNzTmFtZSA9IGNsYXNzTmFtZTsKICAgICByZXR1
cm4gc3BhbjsKIH0KIApAQCAtMTE4LDExICsxMjAsMTYgQEAgZnVuY3Rpb24gZG9UZXN0SWZMZWZ0
KHJlc3RUZXN0cykgewogCiBmdW5jdGlvbiBkb25lVGVzdCgpIHsKICAgICBsb2coIlRFU1QgQ09N
UExFVEVEIik7CisgICAgaWYgKHdpbmRvdy50ZWFyRG93bk9uY2UpCisgICAgICAgIHdpbmRvdy50
ZWFyRG93bk9uY2UoKTsKICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5ub3RpZnlEb25lKCk7CiB9
CiAKIC8vIEEgdGVzdCBkcml2ZXIuIENhbGwgdGhpcyBib2R5Lm9ubG9hZC4KIGZ1bmN0aW9uIGRv
VGVzdCh0ZXN0cykgeworICAgIGlmICh3aW5kb3cuc2V0VXBPbmNlKQorICAgICAgICB3aW5kb3cu
c2V0VXBPbmNlKCk7CisKICAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKSB7CiAg
ICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLndhaXRVbnRpbERvbmUoKTsKICAgICAgICAgbGF5
b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
ZmFzdC9kb20vc2hhZG93L211bHRpcGxlLXNoYWRvd3Jvb3QtZXhwZWN0ZWQudHh0IGIvTGF5b3V0
VGVzdHMvZmFzdC9kb20vc2hhZG93L211bHRpcGxlLXNoYWRvd3Jvb3QtZXhwZWN0ZWQudHh0Cm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLmFhM2RlZGRjODU1NmNkN2NlMmJkNzViNjE1NTNmYzUwZTU4Nzc1ZjMKLS0tIC9k
ZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2RvbS9zaGFkb3cvbXVsdGlwbGUtc2hhZG93
cm9vdC1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwxNyBAQAorVGhpcyB0ZXN0IGVuc3VyZSB0aGF0
IHRoZSBtdWx0aXBsZSBzaGFkb3cgcm9vdCBpcyBhdmFpbGFibGUuCisKK09uIHN1Y2Nlc3MsIHlv
dSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNU
IENPTVBMRVRFIi4KKworCitQQVNTIGludGVybmFscy5zaGFkb3dSb290KGRpdikgaXMgbnVsbAor
UEFTUyBpbnRlcm5hbHMuc2hhZG93Um9vdChkaXYpIGlzIHNoYWRvd1Jvb3QxCitQQVNTIGludGVy
bmFscy5vbGRlclNoYWRvd1Jvb3Qoc2hhZG93Um9vdDEpIGlzIG51bGwKK1BBU1MgaW50ZXJuYWxz
LnNoYWRvd1Jvb3QoZGl2KSBpcyBzaGFkb3dSb290MgorUEFTUyBpbnRlcm5hbHMub2xkZXJTaGFk
b3dSb290KHNoYWRvd1Jvb3QyKSBpcyBzaGFkb3dSb290MQorUEFTUyBpbnRlcm5hbHMuc2hhZG93
Um9vdChkaXYpIGlzIHNoYWRvd1Jvb3QzCitQQVNTIGludGVybmFscy5vbGRlclNoYWRvd1Jvb3Qo
c2hhZG93Um9vdDMpIGlzIHNoYWRvd1Jvb3QyCitQQVNTIGludGVybmFscy5zaGFkb3dSb290KGRp
dikgaXMgbnVsbAorUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBM
RVRFCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZG9tL3NoYWRvdy9tdWx0aXBsZS1z
aGFkb3dyb290LXJlbmRlcmluZy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9mYXN0L2RvbS9z
aGFkb3cvbXVsdGlwbGUtc2hhZG93cm9vdC1yZW5kZXJpbmctZXhwZWN0ZWQudHh0Cm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjg0MGM3ZjBlOWI1OWRmNjQ0MGUzMzNjZDEyODE5NTBlNDc2MTNiNTUKLS0tIC9kZXYvbnVs
bAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2RvbS9zaGFkb3cvbXVsdGlwbGUtc2hhZG93cm9vdC1y
ZW5kZXJpbmctZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMTAgQEAKK3Rlc3REb3VibGVTaGFkb3dT
dWJ0cmVlcworUEFTUwordGVzdFRyaXBsZVNoYWRvd1N1YnRyZWVzCitQQVNTCit0ZXN0U2hhZG93
U3VidHJlZXNXaXRoQ29udGVudAorUEFTUwordGVzdFNoYWRvd1N1YnRyZWVzV2l0aENvbnRlbnRJ
bk9sZGVyU3VidHJlZQorUEFTUworVEVTVCBDT01QTEVURUQKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvZmFzdC9kb20vc2hhZG93L211bHRpcGxlLXNoYWRvd3Jvb3QtcmVuZGVyaW5nLmh0bWwg
Yi9MYXlvdXRUZXN0cy9mYXN0L2RvbS9zaGFkb3cvbXVsdGlwbGUtc2hhZG93cm9vdC1yZW5kZXJp
bmcuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi4yOTEyMDRjMjA5ZmJiYjU0ODg4MzY2MDVmZTg2YmY4OTM1NGI1
NTQwCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9kb20vc2hhZG93L211bHRp
cGxlLXNoYWRvd3Jvb3QtcmVuZGVyaW5nLmh0bWwKQEAgLTAsMCArMSwxMjggQEAKKzwhRE9DVFlQ
RSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKzxzdHlsZT4KKy8qIHJlbGF0aXZlIHBvc2l0aW9uaW5n
IGVuc3VyZXMgdW5kZXJseWluZyBSZW5kZXJMYXllciAqLworLmNvbnRhaW5lciB7CisgICAgcG9z
aXRpb246IHJlbGF0aXZlOworfQorCisuc3BhbiB7CisgICAgZGlzcGxheTogYm94ZWQtaW5saW5l
OworICAgIG1hcmdpbjogMnB4OworICAgIGJvcmRlcjogc29saWQ7Cit9Cis8L3N0eWxlPgorPHNj
cmlwdCBzcmM9Ii4uL3Jlc291cmNlcy9zaGFkb3ctdGVzdC1kcml2ZXIuanMiPjwvc2NyaXB0Pgor
PHNjcmlwdD4KK2Z1bmN0aW9uIHNldFVwT25jZSgpIHsKKyAgICBpbnRlcm5hbHMuc2V0TXVsdGlw
bGVTaGFkb3dTdWJ0cmVlc0VuYWJsZWQodHJ1ZSk7Cit9CisKK2Z1bmN0aW9uIHRlYXREb3duT25j
ZSgpIHsKKyAgICBpbnRlcm5hbHMuc2V0TXVsdGlwbGVTaGFkb3dTdWJ0cmVlc0VuYWJsZWQoZmFs
c2UpOworfQorCit2YXIgdGVzdEZ1bmNzID0gW107CisKK3Rlc3RGdW5jcy5wdXNoKGZ1bmN0aW9u
IHRlc3REb3VibGVTaGFkb3dTdWJ0cmVlcyhjYWxsSWZEb25lKSB7CisgICAgZG9jdW1lbnQuZ2V0
RWxlbWVudEJ5SWQoJ2V4cGVjdC1jb250YWluZXInKS5pbm5lckhUTUwgPSAiPGRpdj48c3Bhbj5C
RUZPUkU8L3NwYW4+PHNwYW4+TUlEPC9zcGFuPjxzcGFuPkFGVEVSPC9zcGFuPjwvZGl2PiI7CisK
KyAgICB2YXIgcm9vdCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpOworICAgIHJvb3Qu
YXBwZW5kQ2hpbGQoY3JlYXRlU3BhbldpdGhUZXh0KCdMSUdIVCcpKTsKKworICAgIHZhciBzcjEg
PSBuZXcgV2ViS2l0U2hhZG93Um9vdChyb290KTsKKyAgICBzcjEuYXBwZW5kQ2hpbGQoY3JlYXRl
U3BhbldpdGhUZXh0KCdCRUZPUkU6IFNIT1VMRCBOT1QgQkUgUkVOREVSRUQnKSk7CisgICAgc3Ix
LmFwcGVuZENoaWxkKGNyZWF0ZVNwYW5XaXRoVGV4dCgnTUlEOiBTSE9VTEQgTk9UIEJFIFJFTkRF
UkVEJykpOworICAgIHNyMS5hcHBlbmRDaGlsZChjcmVhdGVTcGFuV2l0aFRleHQoJ0FGVEVSOiBT
SE9VTEQgTk9UIEJFIFJFTkRFUkVEJykpOworCisgICAgdmFyIHNyMiA9IG5ldyBXZWJLaXRTaGFk
b3dSb290KHJvb3QpOworICAgIHNyMi5hcHBlbmRDaGlsZChjcmVhdGVTcGFuV2l0aFRleHQoJ0JF
Rk9SRScpKTsKKyAgICBzcjIuYXBwZW5kQ2hpbGQoY3JlYXRlU3BhbldpdGhUZXh0KCdNSUQnKSk7
CisgICAgc3IyLmFwcGVuZENoaWxkKGNyZWF0ZVNwYW5XaXRoVGV4dCgnQUZURVInKSk7CisKKyAg
ICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnYWN0dWFsLWNvbnRhaW5lcicpLmFwcGVuZENoaWxk
KHJvb3QpOworCisgICAgY2FsbElmRG9uZSgpOworfSk7CisKK3Rlc3RGdW5jcy5wdXNoKGZ1bmN0
aW9uIHRlc3RUcmlwbGVTaGFkb3dTdWJ0cmVlcyhjYWxsSWZEb25lKSB7CisgICAgZG9jdW1lbnQu
Z2V0RWxlbWVudEJ5SWQoJ2V4cGVjdC1jb250YWluZXInKS5pbm5lckhUTUwgPSAiPGRpdj48c3Bh
bj5CRUZPUkU8L3NwYW4+PHNwYW4+TUlEPC9zcGFuPjxzcGFuPkFGVEVSPC9zcGFuPjwvZGl2PiI7
CisKKyAgICB2YXIgcm9vdCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpOworICAgIHJv
b3QuYXBwZW5kQ2hpbGQoY3JlYXRlU3BhbldpdGhUZXh0KCdMSUdIVCcpKTsKKworICAgIHZhciBz
cjEgPSBuZXcgV2ViS2l0U2hhZG93Um9vdChyb290KTsKKyAgICBzcjEuYXBwZW5kQ2hpbGQoY3Jl
YXRlU3BhbldpdGhUZXh0KCdCRUZPUkU6IFNIT1VMRCBOT1QgQkUgUkVOREVSRUQnKSk7CisgICAg
c3IxLmFwcGVuZENoaWxkKGNyZWF0ZVNwYW5XaXRoVGV4dCgnTUlEOiBTSE9VTEQgTk9UIEJFIFJF
TkRFUkVEJykpOworICAgIHNyMS5hcHBlbmRDaGlsZChjcmVhdGVTcGFuV2l0aFRleHQoJ0FGVEVS
OiBTSE9VTEQgTk9UIEJFIFJFTkRFUkVEJykpOworCisgICAgdmFyIHNyMiA9IG5ldyBXZWJLaXRT
aGFkb3dSb290KHJvb3QpOworICAgIHNyMi5hcHBlbmRDaGlsZChjcmVhdGVTcGFuV2l0aFRleHQo
J0JFRk9SRTogU0hPVUxEIE5PVCBCRSBSRU5ERVJFRCcpKTsKKyAgICBzcjIuYXBwZW5kQ2hpbGQo
Y3JlYXRlU3BhbldpdGhUZXh0KCdNSUQ6IFNIT1VMRCBOT1QgQkUgUkVOREVSRUQnKSk7CisgICAg
c3IyLmFwcGVuZENoaWxkKGNyZWF0ZVNwYW5XaXRoVGV4dCgnQUZURVI6IFNIT1VMRCBOT1QgQkUg
UkVOREVSRUQnKSk7CisKKyAgICB2YXIgc3IzID0gbmV3IFdlYktpdFNoYWRvd1Jvb3Qocm9vdCk7
CisgICAgc3IzLmFwcGVuZENoaWxkKGNyZWF0ZVNwYW5XaXRoVGV4dCgnQkVGT1JFJykpOworICAg
IHNyMy5hcHBlbmRDaGlsZChjcmVhdGVTcGFuV2l0aFRleHQoJ01JRCcpKTsKKyAgICBzcjMuYXBw
ZW5kQ2hpbGQoY3JlYXRlU3BhbldpdGhUZXh0KCdBRlRFUicpKTsKKworICAgIGRvY3VtZW50Lmdl
dEVsZW1lbnRCeUlkKCdhY3R1YWwtY29udGFpbmVyJykuYXBwZW5kQ2hpbGQocm9vdCk7CisKKyAg
ICBjYWxsSWZEb25lKCk7Cit9KTsKKwordGVzdEZ1bmNzLnB1c2goZnVuY3Rpb24gdGVzdFNoYWRv
d1N1YnRyZWVzV2l0aENvbnRlbnQoY2FsbElmRG9uZSkgeworICAgIGRvY3VtZW50LmdldEVsZW1l
bnRCeUlkKCdleHBlY3QtY29udGFpbmVyJykuaW5uZXJIVE1MID0gIjxkaXY+PHNwYW4+QkVGT1JF
PC9zcGFuPjxzcGFuPkxJR0hUPC9zcGFuPjxzcGFuPkFGVEVSPC9zcGFuPjwvZGl2PiI7CisKKyAg
ICB2YXIgcm9vdCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpOworICAgIHJvb3QuYXBw
ZW5kQ2hpbGQoY3JlYXRlU3BhbldpdGhUZXh0KCdMSUdIVCcpKTsKKworICAgIHZhciBzcjEgPSBu
ZXcgV2ViS2l0U2hhZG93Um9vdChyb290KTsKKyAgICBzcjEuYXBwZW5kQ2hpbGQoY3JlYXRlU3Bh
bldpdGhUZXh0KCdCRUZPUkU6IFNIT1VMRCBOT1QgQkUgUkVOREVSRUQnKSk7CisgICAgc3IxLmFw
cGVuZENoaWxkKGNyZWF0ZVNwYW5XaXRoVGV4dCgnTUlEOiBTSE9VTEQgTk9UIEJFIFJFTkRFUkVE
JykpOworICAgIHNyMS5hcHBlbmRDaGlsZChjcmVhdGVTcGFuV2l0aFRleHQoJ0FGVEVSOiBTSE9V
TEQgTk9UIEJFIFJFTkRFUkVEJykpOworCisgICAgdmFyIHNyMiA9IG5ldyBXZWJLaXRTaGFkb3dS
b290KHJvb3QpOworICAgIHNyMi5hcHBlbmRDaGlsZChjcmVhdGVTcGFuV2l0aFRleHQoJ0JFRk9S
RScpKTsKKyAgICBzcjIuYXBwZW5kQ2hpbGQoY3JlYXRlQ29udGVudFdpdGhTZWxlY3QoJ3NwYW4n
LCAnRkFMTEJBQ0snKSk7CisgICAgc3IyLmFwcGVuZENoaWxkKGNyZWF0ZVNwYW5XaXRoVGV4dCgn
QUZURVInKSk7CisKKyAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnYWN0dWFsLWNvbnRhaW5l
cicpLmFwcGVuZENoaWxkKHJvb3QpOworCisgICAgY2FsbElmRG9uZSgpOworfSk7CisKK3Rlc3RG
dW5jcy5wdXNoKGZ1bmN0aW9uIHRlc3RTaGFkb3dTdWJ0cmVlc1dpdGhDb250ZW50SW5PbGRlclN1
YnRyZWUoY2FsbElmRG9uZSkgeworICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdleHBlY3Qt
Y29udGFpbmVyJykuaW5uZXJIVE1MID0gIjxkaXY+PHNwYW4+QkVGT1JFPC9zcGFuPjxzcGFuPkxJ
R0hUIDE8L3NwYW4+PHNwYW4+QUZURVI8L3NwYW4+PC9kaXY+IjsKKworICAgIHZhciByb290ID0g
ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7CisgICAgcm9vdC5hcHBlbmRDaGlsZChjcmVh
dGVTcGFuV2l0aFRleHQoJ0xJR0hUIDEnLCAnYzEnKSk7CisgICAgcm9vdC5hcHBlbmRDaGlsZChj
cmVhdGVTcGFuV2l0aFRleHQoJ0xJR0hUIDInLCAnYzInKSk7CisKKyAgICB2YXIgc3IxID0gbmV3
IFdlYktpdFNoYWRvd1Jvb3Qocm9vdCk7CisgICAgc3IxLmFwcGVuZENoaWxkKGNyZWF0ZVNwYW5X
aXRoVGV4dCgnQkVGT1JFOiBTSE9VTEQgTk9UIEJFIFJFTkRFUkVEJykpOworICAgIHNyMS5hcHBl
bmRDaGlsZChjcmVhdGVDb250ZW50V2l0aFNlbGVjdCgnLmMyJywgJ0ZBTExCQUNLJykpOworICAg
IHNyMS5hcHBlbmRDaGlsZChjcmVhdGVTcGFuV2l0aFRleHQoJ0FGVEVSOiBTSE9VTEQgTk9UIEJF
IFJFTkRFUkVEJykpOworCisgICAgdmFyIHNyMiA9IG5ldyBXZWJLaXRTaGFkb3dSb290KHJvb3Qp
OworICAgIHNyMi5hcHBlbmRDaGlsZChjcmVhdGVTcGFuV2l0aFRleHQoJ0JFRk9SRScpKTsKKyAg
ICBzcjIuYXBwZW5kQ2hpbGQoY3JlYXRlQ29udGVudFdpdGhTZWxlY3QoJy5jMScsICdGQUxMQkFD
SycpKTsKKyAgICBzcjIuYXBwZW5kQ2hpbGQoY3JlYXRlU3BhbldpdGhUZXh0KCdBRlRFUicpKTsK
KworICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdhY3R1YWwtY29udGFpbmVyJykuYXBwZW5k
Q2hpbGQocm9vdCk7CisKKyAgICBjYWxsSWZEb25lKCk7Cit9KTsKKworCis8L3NjcmlwdD4KKzwv
aGVhZD4KKzxib2R5IG9ubG9hZD0iZG9UZXN0KHRlc3RGdW5jcykiPgorCis8ZGl2IGlkPSJhY3R1
YWwtY29udGFpbmVyIiBjbGFzcz0iY29udGFpbmVyIj48L2Rpdj4KKzxkaXYgaWQ9ImV4cGVjdC1j
b250YWluZXIiIGNsYXNzPSJjb250YWluZXIiPjwvZGl2PgorPHByZSBpZD0iY29uc29sZSI+PC9w
cmU+CisKKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZG9t
L3NoYWRvdy9tdWx0aXBsZS1zaGFkb3dyb290Lmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L2RvbS9z
aGFkb3cvbXVsdGlwbGUtc2hhZG93cm9vdC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjQwOWJlYzA3NmFlM2Ix
ZmNkMTJlOTc0ODQ0MzY2MmM4MDgxMGJkZmIKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0
cy9mYXN0L2RvbS9zaGFkb3cvbXVsdGlwbGUtc2hhZG93cm9vdC5odG1sCkBAIC0wLDAgKzEsMzUg
QEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9q
cy9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8
c2NyaXB0PgorZGVzY3JpcHRpb24oIlRoaXMgdGVzdCBlbnN1cmUgdGhhdCB0aGUgbXVsdGlwbGUg
c2hhZG93IHJvb3QgaXMgYXZhaWxhYmxlLiIpOworCitpbnRlcm5hbHMuc2V0TXVsdGlwbGVTaGFk
b3dTdWJ0cmVlc0VuYWJsZWQodHJ1ZSk7CisKK3ZhciBkaXYgPSBkb2N1bWVudC5jcmVhdGVFbGVt
ZW50KCdkaXYnKTsKK3Nob3VsZEJlKCJpbnRlcm5hbHMuc2hhZG93Um9vdChkaXYpIiwgIm51bGwi
KTsKK3ZhciBzaGFkb3dSb290MSA9IG5ldyBXZWJLaXRTaGFkb3dSb290KGRpdik7CitzaG91bGRC
ZSgiaW50ZXJuYWxzLnNoYWRvd1Jvb3QoZGl2KSIsICJzaGFkb3dSb290MSIpOworc2hvdWxkQmUo
ImludGVybmFscy5vbGRlclNoYWRvd1Jvb3Qoc2hhZG93Um9vdDEpIiwgIm51bGwiKTsKKwordmFy
IHNoYWRvd1Jvb3QyID0gbmV3IFdlYktpdFNoYWRvd1Jvb3QoZGl2KQorc2hvdWxkQmUoImludGVy
bmFscy5zaGFkb3dSb290KGRpdikiLCAic2hhZG93Um9vdDIiKTsKK3Nob3VsZEJlKCJpbnRlcm5h
bHMub2xkZXJTaGFkb3dSb290KHNoYWRvd1Jvb3QyKSIsICJzaGFkb3dSb290MSIpOworCit2YXIg
c2hhZG93Um9vdDMgPSBuZXcgV2ViS2l0U2hhZG93Um9vdChkaXYpOworc2hvdWxkQmUoImludGVy
bmFscy5zaGFkb3dSb290KGRpdikiLCAic2hhZG93Um9vdDMiKTsKK3Nob3VsZEJlKCJpbnRlcm5h
bHMub2xkZXJTaGFkb3dSb290KHNoYWRvd1Jvb3QzKSIsICJzaGFkb3dSb290MiIpOworCitpbnRl
cm5hbHMucmVtb3ZlU2hhZG93Um9vdChkaXYpOworc2hvdWxkQmUoImludGVybmFscy5zaGFkb3dS
b290KGRpdikiLCAibnVsbCIpOworCitpbnRlcm5hbHMuc2V0TXVsdGlwbGVTaGFkb3dTdWJ0cmVl
c0VuYWJsZWQoZmFsc2UpOworCit2YXIgc3VjY2Vzc2Z1bGx5UGFyc2VkID0gdHJ1ZTsKKzwvc2Ny
aXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uL2pzL3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwv
c2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZv
cm0vZWZsL1NraXBwZWQgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9lZmwvU2tpcHBlZAppbmRleCA1
YTUxMjcyOTc4ZDU5NjI0N2Q0NzRmOTc5YWEyYzdhYjY0ZTI5M2IyLi42N2Y4YjNhOGEwNjkzYmJk
YWNkMWFhNWYzYjI0YzExYjU4NzQ0ZWU4IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9wbGF0Zm9y
bS9lZmwvU2tpcHBlZAorKysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9lZmwvU2tpcHBlZApAQCAt
MTk3NSw2ICsxOTc1LDggQEAgZmFzdC9jc3Mvc3R5bGUtc2NvcGVkCiBmYXN0L2RvbS9zaGFkb3cv
c2hhZG93LXJvb3QtanMtYXBpLmh0bWwKIGZhc3QvZG9tL3NoYWRvdy9zaGFkb3ctZGlzYWJsZS5o
dG1sCiBmYXN0L2RvbS9zaGFkb3cvc2hhZG93LXJvb3QtbmV3Lmh0bWwKK2Zhc3QvZG9tL3NoYWRv
dy9tdWx0aXBsZS1zaGFkb3dyb290Lmh0bWwKK2Zhc3QvZG9tL3NoYWRvdy9tdWx0aXBsZS1zaGFk
b3dyb290LXJlbmRlcmluZy5odG1sCiAKICMgQ1NTIEZpbHRlcnMgc3VwcG9ydCBub3QgeWV0IGVu
YWJsZWQgKG5lZWRzIEVOQUJMRV9DU1NfRklMVEVSUykuCiAjIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD02ODQ2OQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZv
cm0vZ3RrL1NraXBwZWQgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9ndGsvU2tpcHBlZAppbmRleCAz
NDZhOGZiNDhlM2E5M2MwYmM5NGViOWM4OGY5MDgwNzEwYjE4Mzc5Li5mZjc3NTI3Yjc4MjY4ZWM0
M2IxYjcyYjc2MmYxMDRjNTQ4NjkzZDVkIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9wbGF0Zm9y
bS9ndGsvU2tpcHBlZAorKysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9ndGsvU2tpcHBlZApAQCAt
MzU4LDYgKzM1OCw4IEBAIGZhc3QvY3NzL3N0eWxlLXNjb3BlZAogZmFzdC9kb20vc2hhZG93L3No
YWRvdy1yb290LWpzLWFwaS5odG1sCiBmYXN0L2RvbS9zaGFkb3cvc2hhZG93LWRpc2FibGUuaHRt
bAogZmFzdC9kb20vc2hhZG93L3NoYWRvdy1yb290LW5ldy5odG1sCitmYXN0L2RvbS9zaGFkb3cv
bXVsdGlwbGUtc2hhZG93cm9vdC5odG1sCitmYXN0L2RvbS9zaGFkb3cvbXVsdGlwbGUtc2hhZG93
cm9vdC1yZW5kZXJpbmcuaHRtbAogCiAjIENTUyBSZWdpb25zIHN1cHBvcnQgbm90IHlldCBlbmFi
bGVkLiBodHRwOi8vd2Via2l0Lm9yZy9iLzU3MzEyCiBmYXN0L3JlZ2lvbnMKZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy9Ta2lwcGVkIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0v
bWFjL1NraXBwZWQKaW5kZXggNWNkZTM5YTljM2FjMGEyYmRkODU0NDBjYmQ1YWY2YTczZmY0Mjhi
Mi4uMjExYzM0NmMwZWU5MzE4ZmQ2OWUzZjdmZWNjNDBlMWFiN2I3ZWEzMyAxMDA2NDQKLS0tIGEv
TGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL1NraXBwZWQKKysrIGIvTGF5b3V0VGVzdHMvcGxhdGZv
cm0vbWFjL1NraXBwZWQKQEAgLTQyMyw2ICs0MjMsOCBAQCBmYXN0L2Nzcy9zdHlsZS1zY29wZWQK
IGZhc3QvZG9tL3NoYWRvdy9zaGFkb3ctcm9vdC1qcy1hcGkuaHRtbAogZmFzdC9kb20vc2hhZG93
L3NoYWRvdy1kaXNhYmxlLmh0bWwKIGZhc3QvZG9tL3NoYWRvdy9zaGFkb3ctcm9vdC1uZXcuaHRt
bAorZmFzdC9kb20vc2hhZG93L211bHRpcGxlLXNoYWRvd3Jvb3QuaHRtbAorZmFzdC9kb20vc2hh
ZG93L211bHRpcGxlLXNoYWRvd3Jvb3QtcmVuZGVyaW5nLmh0bWwKIAogIyBKU0MgZG9lcyBub3Qg
c3VwcG9ydCBzZXRJc29sYXRlZFdvcmxkU2VjdXJpdHlPcmlnaW4gKGh0dHA6Ly93ZWJraXQub3Jn
L2IvNjE1NDApCiBodHRwL3Rlc3RzL3NlY3VyaXR5L2lzb2xhdGVkV29ybGQvY3Jvc3Mtb3JpZ2lu
LXhoci5odG1sCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9xdC9Ta2lwcGVkIGIv
TGF5b3V0VGVzdHMvcGxhdGZvcm0vcXQvU2tpcHBlZAppbmRleCBmNGNlYjJmOWI4MWI0ZDk3ODFl
M2NhYWM1ZGRjZTMyNzM3Yjc4NGVkLi5mNjVhNGY2NGNhMjg0ZTIwZjY0ZTZmNmFjMzIxNWJmYjRk
NzAxOTFjIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9xdC9Ta2lwcGVkCisrKyBi
L0xheW91dFRlc3RzL3BsYXRmb3JtL3F0L1NraXBwZWQKQEAgLTE2Miw2ICsxNjIsOCBAQCBmYXN0
L2Nzcy9zdHlsZS1zY29wZWQKIGZhc3QvZG9tL3NoYWRvdy9zaGFkb3ctcm9vdC1qcy1hcGkuaHRt
bAogZmFzdC9kb20vc2hhZG93L3NoYWRvdy1kaXNhYmxlLmh0bWwKIGZhc3QvZG9tL3NoYWRvdy9z
aGFkb3ctcm9vdC1uZXcuaHRtbAorZmFzdC9kb20vc2hhZG93L211bHRpcGxlLXNoYWRvd3Jvb3Qu
aHRtbAorZmFzdC9kb20vc2hhZG93L211bHRpcGxlLXNoYWRvd3Jvb3QtcmVuZGVyaW5nLmh0bWwK
IAogIyBDU1MgUmVnaW9ucyBzdXBwb3J0IG5vdCB5ZXQgZW5hYmxlZC4gaHR0cDovL3dlYmtpdC5v
cmcvYi81NzMxMgogZmFzdC9yZWdpb25zCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9y
bS93aW4vU2tpcHBlZCBiL0xheW91dFRlc3RzL3BsYXRmb3JtL3dpbi9Ta2lwcGVkCmluZGV4IGM5
YzkxN2ZmZGFlZjdkZmJmNmI2Y2MxYmNhNmZjNWNmODZiZGVmMGMuLjcxMDMxOTJkMjIwOTNmOWY5
YTljM2MzYmE5MWUxMjg0MGM1MGE5ZDUgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3BsYXRmb3Jt
L3dpbi9Ta2lwcGVkCisrKyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL3dpbi9Ta2lwcGVkCkBAIC0x
NDU0LDYgKzE0NTQsOCBAQCBmYXN0L2Nzcy9zdHlsZS1zY29wZWQKIGZhc3QvZG9tL3NoYWRvdy9z
aGFkb3ctcm9vdC1qcy1hcGkuaHRtbAogZmFzdC9kb20vc2hhZG93L3NoYWRvdy1kaXNhYmxlLmh0
bWwKIGZhc3QvZG9tL3NoYWRvdy9zaGFkb3ctcm9vdC1uZXcuaHRtbAorZmFzdC9kb20vc2hhZG93
L211bHRpcGxlLXNoYWRvd3Jvb3QuaHRtbAorZmFzdC9kb20vc2hhZG93L211bHRpcGxlLXNoYWRv
d3Jvb3QtcmVuZGVyaW5nLmh0bWwKIAogIyBDU1MgUmVnaW9ucyBzdXBwb3J0IG5vdCB5ZXQgZW5h
YmxlZC4gaHR0cDovL3dlYmtpdC5vcmcvYi81NzMxMgogZmFzdC9yZWdpb25zCmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS93aW5jYWlyby9Ta2lwcGVkIGIvTGF5b3V0VGVzdHMvcGxh
dGZvcm0vd2luY2Fpcm8vU2tpcHBlZAppbmRleCAyZDJkY2NmOTQyZDVhYjFhZTQ5OTFjMWY4MmUy
YWY3MDMwM2E2ZmJjLi4zYzY1ZjM2YTU1MTQxNGMxMmFhNmJlMDRjOTkwMjY4NzlkN2UxYWVkIDEw
MDY0NAotLS0gYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS93aW5jYWlyby9Ta2lwcGVkCisrKyBiL0xh
eW91dFRlc3RzL3BsYXRmb3JtL3dpbmNhaXJvL1NraXBwZWQKQEAgLTE5NjYsNiArMTk2Niw4IEBA
IGZhc3QvY3NzL3N0eWxlLXNjb3BlZAogZmFzdC9kb20vc2hhZG93L3NoYWRvdy1yb290LWpzLWFw
aS5odG1sCiBmYXN0L2RvbS9zaGFkb3cvc2hhZG93LWRpc2FibGUuaHRtbAogZmFzdC9kb20vc2hh
ZG93L3NoYWRvdy1yb290LW5ldy5odG1sCitmYXN0L2RvbS9zaGFkb3cvbXVsdGlwbGUtc2hhZG93
cm9vdC5odG1sCitmYXN0L2RvbS9zaGFkb3cvbXVsdGlwbGUtc2hhZG93cm9vdC1yZW5kZXJpbmcu
aHRtbAogCiAjIENTUyBSZWdpb25zIHN1cHBvcnQgbm90IHlldCBlbmFibGVkLiBodHRwOi8vd2Vi
a2l0Lm9yZy9iLzU3MzEyCiBmYXN0L3JlZ2lvbnMKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3Bs
YXRmb3JtL3drMi9Ta2lwcGVkIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vd2syL1NraXBwZWQKaW5k
ZXggODJhZjc4ZWE3NmNlYmE4M2U4MGZkMGFlZTdjYjY5OTNiMGY5YzRlMi4uZDg1NWJhYjEwZTY2
NGVjZjU1Nzg5Y2ZiZDMyMTBmODIxYTUwN2YxMiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvcGxh
dGZvcm0vd2syL1NraXBwZWQKKysrIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vd2syL1NraXBwZWQK
QEAgLTEwODEsNiArMTA4MSw4IEBAIGZhc3QvZG9tL3NoYWRvdy9jcmVhdGUtY29udGVudC1lbGVt
ZW50Lmh0bWwKIGZhc3QvZG9tL3NoYWRvdy9zaGFkb3ctcm9vdC1qcy1hcGkuaHRtbAogZmFzdC9k
b20vc2hhZG93L3NoYWRvdy1kaXNhYmxlLmh0bWwKIGZhc3QvZG9tL3NoYWRvdy9zaGFkb3ctcm9v
dC1uZXcuaHRtbAorZmFzdC9kb20vc2hhZG93L211bHRpcGxlLXNoYWRvd3Jvb3QuaHRtbAorZmFz
dC9kb20vc2hhZG93L211bHRpcGxlLXNoYWRvd3Jvb3QtcmVuZGVyaW5nLmh0bWwKIAogIyBXVFIg
bmVlZHMgYW4gaW1wbGVtZW50YXRpb24gZm9yIGV2ZW50U2VuZGVyLmNvbnRpbnVvdXNNb3VzZVNj
cm9sbEJ5CiAjIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD02OTQxNwpk
aWZmIC0tZ2l0IGEvQ2hhbmdlTG9nIGIvQ2hhbmdlTG9nCmluZGV4IDhiNjEyMmE3ZDBkN2VkMTQy
OWZhMGY5ZDlhNjI2NzRlNGZhYzlhMWUuLmM5MmViZDNiNGU4ZGRlZjU0NzFiNzY1N2UzMDNkMWJk
MmY0ZWUyOTIgMTAwNjQ0Ci0tLSBhL0NoYW5nZUxvZworKysgYi9DaGFuZ2VMb2cKQEAgLTEsMyAr
MSwxMiBAQAorMjAxMi0wMi0xOSAgU2hpbnlhIEthd2FuYWthICA8c2hpbnlha0BjaHJvbWl1bS5v
cmc+CisKKyAgICAgICAgRWxlbWVudCBzaG91bGQgYmUgYWJsZSB0byBoYXZlIG11bHRpcGxlIHNo
YWRvdyByb290cy4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTc3OTMxCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgKiBTb3VyY2UvYXV0b3Rvb2xzL3N5bWJvbHMuZmlsdGVyOgorCiAyMDEyLTAyLTE5ICBHdXN0
YXZvIE5vcm9uaGEgU2lsdmEgIDxnbnNAZ25vbWUub3JnPgogCiAgICAgICAgIFtHVEtdIFJlbW92
ZSB1bnVzZWQgR1NldHRpbmdzIHN0dWZmCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>127787</attachid>
            <date>2012-02-20 02:32:18 -0800</date>
            <delta_ts>2012-02-23 01:50:13 -0800</delta_ts>
            <desc>WIP</desc>
            <filename>bug-77931-20120220193216.patch</filename>
            <type>text/plain</type>
            <size>48194</size>
            <attacher name="Shinya Kawanaka">shinyak</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTA4MjA5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZDZlYTAzYzY5MmE4Mjg1
YzliMzFkOWEzNjEwNTE1MDM3MDNlMjAyMS4uYWYwZWU3YTYxYmRiYWY3YzA1NWUyODE1M2MyODcz
NWVlMmM5OWRhZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ1IEBACisyMDEyLTAyLTE5ICBTaGlu
eWEgS2F3YW5ha2EgIDxzaGlueWFrQGNocm9taXVtLm9yZz4KKworICAgICAgICBFbGVtZW50IHNo
b3VsZCBiZSBhYmxlIHRvIGhhdmUgbXVsdGlwbGUgc2hhZG93IHJvb3RzLgorICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9Nzc5MzEKKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGlzIHBhdGNoIGVuYWJsZXMgYWRk
aW5nIG11bHRpcGxlIHNoYWRvdyBzdWJ0cmVlcyBpbnRvIGVsZW1lbnRzLgorCisgICAgICAgIEN1
cnJlbnRseSBvbmx5IHRoZSB5b3VuZ2VzdCBzaGFkb3cgc3VidHJlZSB3aWxsIGJlIHJlbmRlcmVk
LCBiZWNhdXNlIDxzaGFkb3c+IGlzIG5vdCBpbXBsZW1lbnRlZCB5ZXQuCisKKyAgICAgICAgVGVz
dHM6IGZhc3QvZG9tL3NoYWRvdy9tdWx0aXBsZS1zaGFkb3dyb290LXJlbmRlcmluZy5odG1sCisg
ICAgICAgICAgICAgICBmYXN0L2RvbS9zaGFkb3cvbXVsdGlwbGUtc2hhZG93cm9vdC5odG1sCisK
KyAgICAgICAgKiBXZWJDb3JlLmV4cC5pbjoKKyAgICAgICAgKiBkb20vRWxlbWVudC5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpFbGVtZW50Ojp+RWxlbWVudCk6CisgICAgICAgIChXZWJDb3JlOjpF
bGVtZW50OjphZGRTaGFkb3dSb290KToKKyAgICAgICAgICBBZGQgYSBuZXcgc2hhZG93IHN1YnRy
ZWUuCisgICAgICAgIChXZWJDb3JlOjpFbGVtZW50OjpyZW1vdmVTaGFkb3dSb290TGlzdCk6Cisg
ICAgICAgICAgUmVtb3ZlcyB3aG9sZSBzaGFkb3cgc3VidHJlZXMuCisgICAgICAgICogZG9tL0Vs
ZW1lbnQuaDoKKyAgICAgICAgKEVsZW1lbnQpOgorICAgICAgICAqIGRvbS9Ob2RlUmVuZGVyaW5n
Q29udGV4dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpOb2RlUmVuZGVyaW5nQ29udGV4dDo6Tm9k
ZVJlbmRlcmluZ0NvbnRleHQpOgorICAgICAgICAoV2ViQ29yZTo6Tm9kZVJlbmRlcmluZ0NvbnRl
eHQ6Omhvc3RDaGlsZHJlbkNoYW5nZWQpOgorICAgICAgICAqIGRvbS9TaGFkb3dSb290LmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OlNoYWRvd1Jvb3Q6OmNyZWF0ZSk6CisgICAgICAgICogZG9tL1No
YWRvd1Jvb3RMaXN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNoYWRvd1Jvb3RMaXN0OjphdHRh
Y2gpOgorICAgICAgICAoV2ViQ29yZTo6U2hhZG93Um9vdExpc3Q6OmRldGFjaCk6CisgICAgICAg
ICogdGVzdGluZy9JbnRlcm5hbHMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW50ZXJuYWxzOjph
ZGRyZXNzKToKKyAgICAgICAgICBSZXR1cm5zIHRoZSBtZW1vcnkgYWRkcmVzcyBvZiB0aGUgbm9k
ZSBhcyBzdHJpbmcuCisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6OkludGVy
bmFsczo6eW91bmdlclNoYWRvd1Jvb3QpOgorICAgICAgICAoV2ViQ29yZTo6SW50ZXJuYWxzOjpv
bGRlclNoYWRvd1Jvb3QpOgorICAgICAgICAoV2ViQ29yZTo6SW50ZXJuYWxzOjpyZW1vdmVTaGFk
b3dSb290KToKKyAgICAgICAgKiB0ZXN0aW5nL0ludGVybmFscy5oOgorICAgICAgICAoSW50ZXJu
YWxzKToKKyAgICAgICAgKiB0ZXN0aW5nL0ludGVybmFscy5pZGw6CisKIDIwMTItMDItMTkgIEtl
aXNoaSBIYXR0b3JpICA8a2Vpc2hpQHdlYmtpdC5vcmc+CiAKICAgICAgICAgVXNlIHNoYWRvd1Jv
b3RMaXN0IGZvciBDb2xvcklucHV0VHlwZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvQ2hh
bmdlTG9nIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCmluZGV4IDIzOTExNmY5MjgyMDBmOThk
OWQ3YmU4ZGYyNjQ0YjI3YTdjOTlhYzguLjBjNWQ5Yjc4ZTg3OGI1ZjMwNzQ5M2E0ZWViZTUwNTZl
ODZkZmU3NTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZworKysgYi9Tb3Vy
Y2UvV2ViS2l0Mi9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMyBAQAorMjAxMi0wMi0xOSAgU2hpbnlh
IEthd2FuYWthICA8c2hpbnlha0BjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgRWxlbWVudCBzaG91
bGQgYmUgYWJsZSB0byBoYXZlIG11bHRpcGxlIHNoYWRvdyByb290cy4KKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTc3OTMxCisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiB3aW4vV2ViS2l0Mi5kZWY6CisgICAg
ICAgICogd2luL1dlYktpdDJDRkxpdGUuZGVmOgorCiAyMDEyLTAyLTE4ICBEYW4gQmVybnN0ZWlu
ICA8bWl0ekBhcHBsZS5jb20+CiAKICAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzEwODkxODAxPiBC
YWNraW5nU3RvcmU6OnNjcm9sbCgpIHVubmVjZXNzYXJpbHkgY29waWVzIHBpeGVscyBhcm91bmQK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZXhwLmluIGIvU291cmNlL1dlYkNv
cmUvV2ViQ29yZS5leHAuaW4KaW5kZXggYWE1YzE3N2YyMjVhZTdiMDFjOWU0NDE5ZjJjYjllNjBl
NDIxYjk2Yi4uZjE0N2MwMjA1ZTM3YmIyNjBhMjExOGMwYjJjY2M1ZDY4NzFlM2NmNCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5leHAuaW4KKysrIGIvU291cmNlL1dlYkNvcmUv
V2ViQ29yZS5leHAuaW4KQEAgLTkxMSw3ICs5MTEsNyBAQCBfX1pON1dlYkNvcmU2V2lkZ2V0RDJF
dgogX19aTjdXZWJDb3JlNnRvTm9kZUVOM0pTQzdKU1ZhbHVlRQogX19aTjdXZWJDb3JlN0NvbnNv
bGUyMXNob3VsZFByaW50RXhjZXB0aW9uc0V2CiBfX1pON1dlYkNvcmU3Q29uc29sZTI0c2V0U2hv
dWxkUHJpbnRFeGNlcHRpb25zRWIKLV9fWk43V2ViQ29yZTdFbGVtZW50MTZyZW1vdmVTaGFkb3dS
b290RXYKK19fWk43V2ViQ29yZTdFbGVtZW50MjByZW1vdmVTaGFkb3dSb290TGlzdEV2CiBfX1pO
N1dlYkNvcmU3RWxlbWVudDIxYm91bmRzSW5Sb290Vmlld1NwYWNlRXYKIF9fWk43V2ViQ29yZTdF
bGVtZW50OWlubmVyVGV4dEV2CiBfX1pON1dlYkNvcmU3SW50UmVjdDVzY2FsZUVmCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20v
RWxlbWVudC5jcHAKaW5kZXggNGZjNGQ4NmQwMzQzMTg1ZDVjZjkwMDkwZjg0MzE4Y2I1NWJjYjA0
Mi4uYzA2OTJkM2RhZGQ1YWY0ZGE1NmVkZjMwOWM0ZTQ5NDRkMzM2OWM2YyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9F
bGVtZW50LmNwcApAQCAtNzYsNiArNzYsMTAgQEAKICNpbmNsdWRlICJTVkdOYW1lcy5oIgogI2Vu
ZGlmCiAKKyNpZiBFTkFCTEUoU0hBRE9XX0RPTSkKKyNpbmNsdWRlICJSdW50aW1lRW5hYmxlZEZl
YXR1cmVzLmgiCisjZW5kaWYKKwogbmFtZXNwYWNlIFdlYkNvcmUgewogCiB1c2luZyBuYW1lc3Bh
Y2UgSFRNTE5hbWVzOwpAQCAtMTIyLDcgKzEyNiw3IEBAIFBhc3NSZWZQdHI8RWxlbWVudD4gRWxl
bWVudDo6Y3JlYXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIHRhZ05hbWUsIERvY3VtZW50KiBkb2N1
CiAKIEVsZW1lbnQ6On5FbGVtZW50KCkKIHsKLSAgICByZW1vdmVTaGFkb3dSb290KCk7CisgICAg
cmVtb3ZlU2hhZG93Um9vdExpc3QoKTsKICAgICBpZiAobV9hdHRyaWJ1dGVNYXApCiAgICAgICAg
IG1fYXR0cmlidXRlTWFwLT5kZXRhY2hGcm9tRWxlbWVudCgpOwogfQpAQCAtOTMyLDcgKzkzNiw3
IEBAIHZvaWQgRWxlbWVudDo6YXR0YWNoKCkKICAgICAgICAgTm9kZTo6YXR0YWNoKCk7CiAgICAg
ICAgIHNoYWRvd1Jvb3RMaXN0KCktPmF0dGFjaCgpOwogCi0gICAgICAgIC8vIEluIGEgc2hhZG93
IHRyZWUsIHNvbWUgb2YgbGlnaHQgY2hpbGRyZW4gbWF5IGJlIGF0dGFjaGVkIGJ5ICdjb250ZW50
JyBlbGVtZW50LgorICAgICAgICAvLyBJbiBhIHNoYWRvdyB0cmVlLCBzb21lIG9mIGxpZ2h0IGNo
aWxkcmVuIG1heSBiZSBhdHRhY2hlZCBieSA8Y29udGVudD4gb3IgPHNoYWRvdz4uCiAgICAgICAg
IC8vIEhvd2V2ZXIsIHdoZW4gdGhlcmUgaXMgbm8gY29udGVudCBlbGVtZW50IG9yIGNvbnRlbnQg
ZWxlbWVudCBkb2VzIG5vdCBzZWxlY3QKICAgICAgICAgLy8gYWxsIGxpZ2h0IGNoaWxkcmVuLCB3
ZSBoYXZlIHRvIGF0dGFjaCB0aGUgcmVzdCBvZiBsaWdodCBjaGlsZHJlbiBoZXJlLgogICAgICAg
ICBmb3IgKE5vZGUqIGNoaWxkID0gZmlyc3RDaGlsZCgpOyBjaGlsZDsgY2hpbGQgPSBjaGlsZC0+
bmV4dFNpYmxpbmcoKSkgewpAQCAtMTE3NCw3ICsxMTc4LDcgQEAgc3RhdGljIGJvb2wgdmFsaWRh
dGVTaGFkb3dSb290KERvY3VtZW50KiBkb2N1bWVudCwgU2hhZG93Um9vdCogc2hhZG93Um9vdCwg
RXhjZXAKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotdm9pZCBFbGVtZW50OjpzZXRTaGFkb3dSb290
KFBhc3NSZWZQdHI8U2hhZG93Um9vdD4gc2hhZG93Um9vdCwgRXhjZXB0aW9uQ29kZSYgZWMpCit2
b2lkIEVsZW1lbnQ6OmFkZFNoYWRvd1Jvb3QoUGFzc1JlZlB0cjxTaGFkb3dSb290PiBzaGFkb3dS
b290LCBFeGNlcHRpb25Db2RlJiBlYykKIHsKICAgICBpZiAoIXZhbGlkYXRlU2hhZG93Um9vdChk
b2N1bWVudCgpLCBzaGFkb3dSb290LmdldCgpLCBlYykpCiAgICAgICAgIHJldHVybjsKQEAgLTEx
ODIsNyArMTE4NiwxMiBAQCB2b2lkIEVsZW1lbnQ6OnNldFNoYWRvd1Jvb3QoUGFzc1JlZlB0cjxT
aGFkb3dSb290PiBzaGFkb3dSb290LCBFeGNlcHRpb25Db2RlJiBlYwogICAgIGlmICghaGFzUmFy
ZURhdGEoKSkKICAgICAgICAgZW5zdXJlUmFyZURhdGEoKTsKIAotICAgIHJlbW92ZVNoYWRvd1Jv
b3QoKTsKKyNpZiBFTkFCTEUoU0hBRE9XX0RPTSkKKyAgICBpZiAoIVJ1bnRpbWVFbmFibGVkRmVh
dHVyZXM6Om11bHRpcGxlU2hhZG93U3VidHJlZXNFbmFibGVkKCkpCisgICAgICAgIHJlbW92ZVNo
YWRvd1Jvb3RMaXN0KCk7CisjZWxzZQorICAgIHJlbW92ZVNoYWRvd1Jvb3RMaXN0KCk7CisjZW5k
aWYKIAogICAgIHNoYWRvd1Jvb3QtPnNldFNoYWRvd0hvc3QodGhpcyk7CiAgICAgc2hhZG93Um9v
dExpc3QoKS0+cHVzaFNoYWRvd1Jvb3Qoc2hhZG93Um9vdC5nZXQoKSk7CkBAIC0xMTkxLDkgKzEy
MDAsMTIgQEAgdm9pZCBFbGVtZW50OjpzZXRTaGFkb3dSb290KFBhc3NSZWZQdHI8U2hhZG93Um9v
dD4gc2hhZG93Um9vdCwgRXhjZXB0aW9uQ29kZSYgZWMKICAgICAgICAgc2hhZG93Um9vdC0+aW5z
ZXJ0ZWRJbnRvRG9jdW1lbnQoKTsKICAgICBpZiAoYXR0YWNoZWQoKSkgewogICAgICAgICBzaGFk
b3dSb290LT5sYXp5QXR0YWNoKCk7CisgICAgICAgIGZvciAoU2hhZG93Um9vdCogcm9vdCA9IHNo
YWRvd1Jvb3RMaXN0KCktPnlvdW5nZXN0U2hhZG93Um9vdCgpLT5vbGRlclNoYWRvd1Jvb3QoKTsg
cm9vdDsgcm9vdCA9IHJvb3QtPm9sZGVyU2hhZG93Um9vdCgpKQorICAgICAgICAgICAgcm9vdC0+
ZGV0YWNoKCk7CiAgICAgICAgIGZvciAoTm9kZSogY2hpbGQgPSBmaXJzdENoaWxkKCk7IGNoaWxk
OyBjaGlsZCA9IGNoaWxkLT5uZXh0U2libGluZygpKQogICAgICAgICAgICAgY2hpbGQtPmRldGFj
aCgpOwogICAgIH0KKwogfQogCiBTaGFkb3dSb290KiBFbGVtZW50OjplbnN1cmVTaGFkb3dSb290
KCkKQEAgLTEyMDQsNyArMTIxNiw3IEBAIFNoYWRvd1Jvb3QqIEVsZW1lbnQ6OmVuc3VyZVNoYWRv
d1Jvb3QoKQogICAgIHJldHVybiBTaGFkb3dSb290OjpjcmVhdGUodGhpcywgU2hhZG93Um9vdDo6
Q3JlYXRpbmdVc2VyQWdlbnRTaGFkb3dSb290KS5nZXQoKTsKIH0KIAotdm9pZCBFbGVtZW50Ojpy
ZW1vdmVTaGFkb3dSb290KCkKK3ZvaWQgRWxlbWVudDo6cmVtb3ZlU2hhZG93Um9vdExpc3QoKQog
ewogICAgIGlmICghaGFzU2hhZG93Um9vdCgpKQogICAgICAgICByZXR1cm47CkBAIC0xMjE2LDE2
ICsxMjI4LDE5IEBAIHZvaWQgRWxlbWVudDo6cmVtb3ZlU2hhZG93Um9vdCgpCiAgICAgICAgICAg
ICBvbGRSb290LT5kZXRhY2goKTsKIAogICAgICAgICBvbGRSb290LT5zZXRTaGFkb3dIb3N0KDAp
OworICAgICAgICBvbGRSb290LT5zZXRQcmV2KDApOworICAgICAgICBvbGRSb290LT5zZXROZXh0
KDApOwogICAgICAgICBkb2N1bWVudCgpLT5hZG9wdElmTmVlZGVkKG9sZFJvb3QuZ2V0KCkpOwog
ICAgICAgICBpZiAob2xkUm9vdC0+aW5Eb2N1bWVudCgpKQogICAgICAgICAgICAgb2xkUm9vdC0+
cmVtb3ZlZEZyb21Eb2N1bWVudCgpOwogICAgICAgICBlbHNlCiAgICAgICAgICAgICBvbGRSb290
LT5yZW1vdmVkRnJvbVRyZWUodHJ1ZSk7Ci0gICAgICAgIGlmIChhdHRhY2hlZCgpKSB7Ci0gICAg
ICAgICAgICBmb3IgKE5vZGUqIGNoaWxkID0gZmlyc3RDaGlsZCgpOyBjaGlsZDsgY2hpbGQgPSBj
aGlsZC0+bmV4dFNpYmxpbmcoKSkgewotICAgICAgICAgICAgICAgIGlmICghY2hpbGQtPmF0dGFj
aGVkKCkpCi0gICAgICAgICAgICAgICAgICAgIGNoaWxkLT5sYXp5QXR0YWNoKCk7Ci0gICAgICAg
ICAgICB9CisgICAgfQorCisgICAgaWYgKGF0dGFjaGVkKCkpIHsKKyAgICAgICAgZm9yIChOb2Rl
KiBjaGlsZCA9IGZpcnN0Q2hpbGQoKTsgY2hpbGQ7IGNoaWxkID0gY2hpbGQtPm5leHRTaWJsaW5n
KCkpIHsKKyAgICAgICAgICAgIGlmICghY2hpbGQtPmF0dGFjaGVkKCkpCisgICAgICAgICAgICAg
ICAgY2hpbGQtPmxhenlBdHRhY2goKTsKICAgICAgICAgfQogICAgIH0KIH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVu
dC5oCmluZGV4IDYzYTMwOWIxOGYxOTk2NzY3ZmEzODBmODZlNWVjNmJiYjM2NzIwMDEuLmU5NWMy
MmM2YTExODdmZmVhNTUxZmU0MTlkMDM1MDMwNzY0NTc4ZTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2RvbS9FbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuaApA
QCAtMjU1LDEyICsyNTUsMTEgQEAgcHVibGljOgogCiAgICAgYm9vbCBoYXNTaGFkb3dSb290KCkg
Y29uc3Q7CiAgICAgU2hhZG93Um9vdExpc3QqIHNoYWRvd1Jvb3RMaXN0KCkgY29uc3Q7Ci0KLSAg
ICAvLyBGSVhNRTogVGhlc2UgQVBJIHdpbGwgYmUgbW92ZWQgdG8gU2hhZG93Um9vdExpc3QuCi0g
ICAgLy8gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTc4MzEzCi0gICAg
dm9pZCBzZXRTaGFkb3dSb290KFBhc3NSZWZQdHI8U2hhZG93Um9vdD4sIEV4Y2VwdGlvbkNvZGUm
KTsKKyAgICB2b2lkIGFkZFNoYWRvd1Jvb3QoUGFzc1JlZlB0cjxTaGFkb3dSb290PiwgRXhjZXB0
aW9uQ29kZSYpOworICAgIHZvaWQgcmVtb3ZlU2hhZG93Um9vdExpc3QoKTsKKyAgICAvLyBGSVhN
RTogZW5zdXJlU2hhZG93Um9vdCgpIHdpbGwgYmUgcmVtb3ZlZCBsYXRlci4KKyAgICAvLyBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9Nzc2MDgKICAgICBTaGFkb3dSb290
KiBlbnN1cmVTaGFkb3dSb290KCk7Ci0gICAgdm9pZCByZW1vdmVTaGFkb3dSb290KCk7CiAKICAg
ICB2aXJ0dWFsIGNvbnN0IEF0b21pY1N0cmluZyYgc2hhZG93UHNldWRvSWQoKSBjb25zdDsKICAg
ICB2b2lkIHNldFNoYWRvd1BzZXVkb0lkKGNvbnN0IEF0b21pY1N0cmluZyYsIEV4Y2VwdGlvbkNv
ZGUmID0gQVNTRVJUX05PX0VYQ0VQVElPTik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9k
b20vTm9kZVJlbmRlcmluZ0NvbnRleHQuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL05vZGVSZW5k
ZXJpbmdDb250ZXh0LmNwcAppbmRleCA4ZTQ1YjQxM2FlY2Q2ZTAyYzIwNTAyZTM4YTEwZWI3NDY5
YTRhNjllLi5hMGY4Yjc4NWM5NmRlN2UyNTI2Yjg4NTBjMTRiMjFlMDRlOGNmZTQyIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZVJlbmRlcmluZ0NvbnRleHQuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2RvbS9Ob2RlUmVuZGVyaW5nQ29udGV4dC5jcHAKQEAgLTQ3LDcgKzQ3LDcg
QEAgTm9kZVJlbmRlcmluZ0NvbnRleHQ6Ok5vZGVSZW5kZXJpbmdDb250ZXh0KE5vZGUqIG5vZGUp
CiAgICAgOiBtX3BoYXNlKEF0dGFjaGluZ05vdEluVHJlZSkKICAgICAsIG1fbm9kZShub2RlKQog
ICAgICwgbV9wYXJlbnROb2RlRm9yUmVuZGVyaW5nQW5kU3R5bGUoMCkKLSAgICAsIG1fdmlzdWFs
UGFyZW50U2hhZG93Um9vdCgwKQorICAgICwgbV92aXN1YWxQYXJlbnRTaGFkb3dSb290TGlzdCgw
KQogICAgICwgbV9pbnNlcnRpb25Qb2ludCgwKQogICAgICwgbV9zdHlsZSgwKQogICAgICwgbV9w
YXJlbnRGbG93UmVuZGVyZXIoMCkKQEAgLTU3LDIxICs1NywyOCBAQCBOb2RlUmVuZGVyaW5nQ29u
dGV4dDo6Tm9kZVJlbmRlcmluZ0NvbnRleHQoTm9kZSogbm9kZSkKICAgICAgICAgcmV0dXJuOwog
CiAgICAgaWYgKHBhcmVudC0+aXNTaGFkb3dSb290KCkpIHsKLSAgICAgICAgbV9waGFzZSA9IEF0
dGFjaGluZ1NoYWRvd0NoaWxkOworICAgICAgICAvLyBGSVhNRTogV2UgZG9uJ3Qgc3VwcG9ydCA8
c2hhZG93PiB5ZXQsIHNvIHRoZSBub24teW91bmdlc3Qgc2hhZG93IHdvbid0IGJlIHJlbmRlcmVk
LgorICAgICAgICAvLyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG9kX2J1Z3MuY2dpP2lkPTc4
NTk2CisgICAgICAgIGlmICh0b1NoYWRvd1Jvb3QocGFyZW50KS0+eW91bmdlclNoYWRvd1Jvb3Qo
KSkKKyAgICAgICAgICAgIG1fcGhhc2UgPSBBdHRhY2hpbmdOb3REaXN0cmlidXRlZDsKKyAgICAg
ICAgZWxzZQorICAgICAgICAgICAgbV9waGFzZSA9IEF0dGFjaGluZ1NoYWRvd0NoaWxkOwogICAg
ICAgICBtX3BhcmVudE5vZGVGb3JSZW5kZXJpbmdBbmRTdHlsZSA9IHBhcmVudC0+c2hhZG93SG9z
dCgpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCiAgICAgaWYgKHBhcmVudC0+aXNFbGVtZW50
Tm9kZSgpKSB7Ci0gICAgICAgIGlmICh0b0VsZW1lbnQocGFyZW50KS0+aGFzU2hhZG93Um9vdCgp
KQotICAgICAgICAgICAgbV92aXN1YWxQYXJlbnRTaGFkb3dSb290ID0gdG9FbGVtZW50KHBhcmVu
dCktPnNoYWRvd1Jvb3RMaXN0KCktPnlvdW5nZXN0U2hhZG93Um9vdCgpOwotCi0gICAgICAgIGlm
IChtX3Zpc3VhbFBhcmVudFNoYWRvd1Jvb3QpIHsKLSAgICAgICAgICAgIGlmICgobV9pbnNlcnRp
b25Qb2ludCA9IG1fdmlzdWFsUGFyZW50U2hhZG93Um9vdC0+aW5zZXJ0aW9uUG9pbnRGb3IobV9u
b2RlKSkKLSAgICAgICAgICAgICAgICAmJiBtX3Zpc3VhbFBhcmVudFNoYWRvd1Jvb3QtPmlzU2Vs
ZWN0b3JBY3RpdmUoKSkgewotICAgICAgICAgICAgICAgIG1fcGhhc2UgPSBBdHRhY2hpbmdEaXN0
cmlidXRlZDsKLSAgICAgICAgICAgICAgICBtX3BhcmVudE5vZGVGb3JSZW5kZXJpbmdBbmRTdHls
ZSA9IE5vZGVSZW5kZXJpbmdDb250ZXh0KG1faW5zZXJ0aW9uUG9pbnQpLnBhcmVudE5vZGVGb3JS
ZW5kZXJpbmdBbmRTdHlsZSgpOwotICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgaWYg
KHRvRWxlbWVudChwYXJlbnQpLT5oYXNTaGFkb3dSb290KCkpIHsKKyAgICAgICAgICAgIG1fdmlz
dWFsUGFyZW50U2hhZG93Um9vdExpc3QgPSB0b0VsZW1lbnQocGFyZW50KS0+c2hhZG93Um9vdExp
c3QoKTsKKyAgICAgICAgICAgIGlmICgobV9pbnNlcnRpb25Qb2ludCA9IG1fdmlzdWFsUGFyZW50
U2hhZG93Um9vdExpc3QtPmluc2VydGlvblBvaW50Rm9yKG1fbm9kZSkpCisgICAgICAgICAgICAg
ICAgJiYgbV92aXN1YWxQYXJlbnRTaGFkb3dSb290TGlzdC0+aXNTZWxlY3RvckFjdGl2ZSgpKSB7
CisgICAgICAgICAgICAgICAgLy8gRklYTUU6IFdlIGRvbid0IHN1cHBvcnQgPHNoYWRvdz4geWV0
LCBzbyB0aGUgbm9uLXlvdW5nZXN0IHNoYWRvdyB3b24ndCBiZSByZW5kZXJlZC4KKyAgICAgICAg
ICAgICAgICAvLyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG9kX2J1Z3MuY2dpP2lkPTc4NTk2
CisgICAgICAgICAgICAgICAgaWYgKCF0b1NoYWRvd1Jvb3QobV9pbnNlcnRpb25Qb2ludC0+c2hh
ZG93VHJlZVJvb3ROb2RlKCkpLT55b3VuZ2VyU2hhZG93Um9vdCgpKSB7CisgICAgICAgICAgICAg
ICAgICAgIG1fcGhhc2UgPSBBdHRhY2hpbmdEaXN0cmlidXRlZDsKKyAgICAgICAgICAgICAgICAg
ICAgbV9wYXJlbnROb2RlRm9yUmVuZGVyaW5nQW5kU3R5bGUgPSBOb2RlUmVuZGVyaW5nQ29udGV4
dChtX2luc2VydGlvblBvaW50KS5wYXJlbnROb2RlRm9yUmVuZGVyaW5nQW5kU3R5bGUoKTsKKyAg
ICAgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAg
IH0KIAogICAgICAgICAgICAgbV9waGFzZSA9IEF0dGFjaGluZ05vdERpc3RyaWJ1dGVkOwpAQCAt
OTcsNyArMTA0LDcgQEAgTm9kZVJlbmRlcmluZ0NvbnRleHQ6Ok5vZGVSZW5kZXJpbmdDb250ZXh0
KE5vZGUqIG5vZGUsIFJlbmRlclN0eWxlKiBzdHlsZSkKICAgICA6IG1fcGhhc2UoQ2FsY3VsYXRp
bmcpCiAgICAgLCBtX25vZGUobm9kZSkKICAgICAsIG1fcGFyZW50Tm9kZUZvclJlbmRlcmluZ0Fu
ZFN0eWxlKDApCi0gICAgLCBtX3Zpc3VhbFBhcmVudFNoYWRvd1Jvb3QoMCkKKyAgICAsIG1fdmlz
dWFsUGFyZW50U2hhZG93Um9vdExpc3QoMCkKICAgICAsIG1faW5zZXJ0aW9uUG9pbnQoMCkKICAg
ICAsIG1fc3R5bGUoc3R5bGUpCiAgICAgLCBtX3BhcmVudEZsb3dSZW5kZXJlcigwKQpAQCAtMjU5
LDggKzI2Niw4IEBAIFJlbmRlck9iamVjdCogTm9kZVJlbmRlcmluZ0NvbnRleHQ6OnBhcmVudFJl
bmRlcmVyKCkgY29uc3QKIAogdm9pZCBOb2RlUmVuZGVyaW5nQ29udGV4dDo6aG9zdENoaWxkcmVu
Q2hhbmdlZCgpCiB7Ci0gICAgaWYgKG1fcGhhc2UgPT0gQXR0YWNoaW5nTm90RGlzdHJpYnV0ZWQp
Ci0gICAgICAgIG1fdmlzdWFsUGFyZW50U2hhZG93Um9vdC0+aG9zdENoaWxkcmVuQ2hhbmdlZCgp
OworICAgIGlmIChtX3BoYXNlID09IEF0dGFjaGluZ05vdERpc3RyaWJ1dGVkICYmIG1fdmlzdWFs
UGFyZW50U2hhZG93Um9vdExpc3QpCisgICAgICAgIG1fdmlzdWFsUGFyZW50U2hhZG93Um9vdExp
c3QtPmhvc3RDaGlsZHJlbkNoYW5nZWQoKTsKIH0KIAogYm9vbCBOb2RlUmVuZGVyaW5nQ29udGV4
dDo6c2hvdWxkQ3JlYXRlUmVuZGVyZXIoKSBjb25zdApAQCAtMjgxLDcgKzI4OCw3IEBAIGJvb2wg
Tm9kZVJlbmRlcmluZ0NvbnRleHQ6OnNob3VsZENyZWF0ZVJlbmRlcmVyKCkgY29uc3QKICAgICAg
ICAgaWYgKCFwYXJlbnRSZW5kZXJlci0+Y2FuSGF2ZUNoaWxkcmVuKCkpCiAgICAgICAgICAgICBy
ZXR1cm4gZmFsc2U7CiAKLSAgICAgICAgaWYgKG1fdmlzdWFsUGFyZW50U2hhZG93Um9vdCkKKyAg
ICAgICAgaWYgKG1fdmlzdWFsUGFyZW50U2hhZG93Um9vdExpc3QpCiAgICAgICAgICAgICByZXR1
cm4gZmFsc2U7CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZVJl
bmRlcmluZ0NvbnRleHQuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlUmVuZGVyaW5nQ29udGV4
dC5oCmluZGV4IGVjYzIyZmUyM2EyYThlNmRlNDc3YmFmMTg5ZjJhMjU4MzhlMDYwMzQuLjdmYzhh
MGRlYzEwNjAzNjU0MWM1M2Y5NDc4ZTBlNjQ5NjZhNmQzMzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2RvbS9Ob2RlUmVuZGVyaW5nQ29udGV4dC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Rv
bS9Ob2RlUmVuZGVyaW5nQ29udGV4dC5oCkBAIC0zOSw3ICszOSw3IEBAIGNsYXNzIFJlbmRlckZs
b3dUaHJlYWQ7CiBjbGFzcyBSZW5kZXJPYmplY3Q7CiBjbGFzcyBSZW5kZXJTdHlsZTsKIGNsYXNz
IEhUTUxDb250ZW50RWxlbWVudDsKLWNsYXNzIFNoYWRvd1Jvb3Q7CitjbGFzcyBTaGFkb3dSb290
TGlzdDsKIAogY2xhc3MgTm9kZVJlbmRlcmluZ0NvbnRleHQgewogcHVibGljOgpAQCAtODAsNyAr
ODAsNyBAQCBwcml2YXRlOgogICAgIEF0dGFjaGluZ1BoYXNlIG1fcGhhc2U7CiAgICAgTm9kZSog
bV9ub2RlOwogICAgIENvbnRhaW5lck5vZGUqIG1fcGFyZW50Tm9kZUZvclJlbmRlcmluZ0FuZFN0
eWxlOwotICAgIFNoYWRvd1Jvb3QqIG1fdmlzdWFsUGFyZW50U2hhZG93Um9vdDsKKyAgICBTaGFk
b3dSb290TGlzdCogbV92aXN1YWxQYXJlbnRTaGFkb3dSb290TGlzdDsKICAgICBIVE1MQ29udGVu
dEVsZW1lbnQqIG1faW5zZXJ0aW9uUG9pbnQ7CiAgICAgUmVmUHRyPFJlbmRlclN0eWxlPiBtX3N0
eWxlOwogICAgIFJlbmRlckZsb3dUaHJlYWQqIG1fcGFyZW50Rmxvd1JlbmRlcmVyOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL1NoYWRvd1Jvb3QuY3BwIGIvU291cmNlL1dlYkNvcmUv
ZG9tL1NoYWRvd1Jvb3QuY3BwCmluZGV4IGVkOTBmMGZlYzgwZDU4Yjc4ZGY3YmI3MDI0ZDExNDIw
Y2Y2ZjVmZjMuLmExOGRlOTNmZjE0ODhkMWEwOWU4ZTlhYjE3NTJiMDYwNDAyMjI1NjcgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9TaGFkb3dSb290LmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9kb20vU2hhZG93Um9vdC5jcHAKQEAgLTEyNCwxMCArMTI0LDEyIEBAIFBhc3NSZWZQdHI8
U2hhZG93Um9vdD4gU2hhZG93Um9vdDo6Y3JlYXRlKEVsZW1lbnQqIGVsZW1lbnQsIFNoYWRvd1Jv
b3RDcmVhdGlvblB1CiAgICAgUmVmUHRyPFNoYWRvd1Jvb3Q+IHNoYWRvd1Jvb3QgPSBhZG9wdFJl
ZihuZXcgU2hhZG93Um9vdChlbGVtZW50LT5kb2N1bWVudCgpKSk7CiAKICAgICBlYyA9IDA7Ci0g
ICAgZWxlbWVudC0+c2V0U2hhZG93Um9vdChzaGFkb3dSb290LCBlYyk7CisgICAgZWxlbWVudC0+
YWRkU2hhZG93Um9vdChzaGFkb3dSb290LCBlYyk7CiAgICAgaWYgKGVjKQogICAgICAgICByZXR1
cm4gMDsKLQorICAgIEFTU0VSVChlbGVtZW50ID09IHNoYWRvd1Jvb3QtPmhvc3QoKSk7CisgICAg
QVNTRVJUKGVsZW1lbnQtPmhhc1NoYWRvd1Jvb3QoKSk7CisgICAgQVNTRVJUKGVsZW1lbnQtPnNo
YWRvd1Jvb3RMaXN0KCkgPT0gc2hhZG93Um9vdC0+c2hhZG93Um9vdExpc3RGb3JUaGlzKCkpOwog
ICAgIHJldHVybiBzaGFkb3dSb290LnJlbGVhc2UoKTsKIH0KIApAQCAtMTgyLDE2ICsxODQsNiBA
QCB2b2lkIFNoYWRvd1Jvb3Q6OnNldE5lZWRzUmVhdHRhY2hIb3N0Q2hpbGRyZW5BbmRTaGFkb3co
KQogICAgICAgICBzaGFkb3dIb3N0KCktPnNldE5lZWRzU3R5bGVSZWNhbGMoKTsKIH0KIAotSFRN
TENvbnRlbnRFbGVtZW50KiBTaGFkb3dSb290OjppbnNlcnRpb25Qb2ludEZvcihOb2RlKiBub2Rl
KSBjb25zdAotewotICAgIGlmICghbV9zZWxlY3RvcikKLSAgICAgICAgcmV0dXJuIDA7Ci0gICAg
SFRNTENvbnRlbnRTZWxlY3Rpb24qIGZvdW5kID0gbV9zZWxlY3Rvci0+ZmluZEZvcihub2RlKTsK
LSAgICBpZiAoIWZvdW5kKQotICAgICAgICByZXR1cm4gMDsKLSAgICByZXR1cm4gZm91bmQtPmlu
c2VydGlvblBvaW50KCk7Ci19Ci0KIHZvaWQgU2hhZG93Um9vdDo6aG9zdENoaWxkcmVuQ2hhbmdl
ZCgpCiB7CiAgICAgaWYgKCFoYXNDb250ZW50RWxlbWVudCgpKQpAQCAtMjAxLDExICsxOTMsNiBA
QCB2b2lkIFNoYWRvd1Jvb3Q6Omhvc3RDaGlsZHJlbkNoYW5nZWQoKQogICAgIHNldE5lZWRzUmVh
dHRhY2hIb3N0Q2hpbGRyZW5BbmRTaGFkb3coKTsKIH0KIAotYm9vbCBTaGFkb3dSb290Ojppc1Nl
bGVjdG9yQWN0aXZlKCkgY29uc3QKLXsKLSAgICByZXR1cm4gbV9zZWxlY3RvciAmJiBtX3NlbGVj
dG9yLT5oYXNDYW5kaWRhdGVzKCk7Ci19Ci0KIGJvb2wgU2hhZG93Um9vdDo6aGFzQ29udGVudEVs
ZW1lbnQoKSBjb25zdAogewogICAgIGZvciAoTm9kZSogbiA9IGZpcnN0Q2hpbGQoKTsgbjsgbiA9
IG4tPnRyYXZlcnNlTmV4dE5vZGUodGhpcykpIHsKQEAgLTIyNiwxNyArMjEzLDYgQEAgdm9pZCBT
aGFkb3dSb290OjpzZXRBcHBseUF1dGhvclNoZWV0cyhib29sIHZhbHVlKQogICAgIG1fYXBwbHlB
dXRob3JTaGVldHMgPSB2YWx1ZTsKIH0KIAotdm9pZCBTaGFkb3dSb290OjphdHRhY2goKQotewot
ICAgIC8vIENoaWxkcmVuIG9mIG1fc2VsZWN0b3IgaXMgcG9wdWxhdGVkIGxhemlseSBpbgotICAg
IC8vIGVuc3VyZVNlbGVjdG9yKCksIGFuZCBoZXJlIHdlIGp1c3QgZW5zdXJlIHRoYXQKLSAgICAv
LyBpdCBpcyBpbiBjbGVhbiBzdGF0ZS4KLSAgICBBU1NFUlQoIW1fc2VsZWN0b3IgfHwgIW1fc2Vs
ZWN0b3ItPmhhc0NhbmRpZGF0ZXMoKSk7Ci0gICAgRG9jdW1lbnRGcmFnbWVudDo6YXR0YWNoKCk7
Ci0gICAgaWYgKG1fc2VsZWN0b3IpCi0gICAgICAgIG1fc2VsZWN0b3ItPmRpZFNlbGVjdCgpOwot
fQotCiB2b2lkIFNoYWRvd1Jvb3Q6OnJlYXR0YWNoSG9zdENoaWxkcmVuQW5kU2hhZG93KCkKIHsK
ICAgICBOb2RlKiBob3N0Tm9kZSA9IGhvc3QoKTsKQEAgLTI1NiwxOCArMjMyLDQgQEAgdm9pZCBT
aGFkb3dSb290OjpyZWF0dGFjaEhvc3RDaGlsZHJlbkFuZFNoYWRvdygpCiAgICAgfQogfQogCi1I
VE1MQ29udGVudFNlbGVjdG9yKiBTaGFkb3dSb290OjpzZWxlY3RvcigpIGNvbnN0Ci17Ci0gICAg
cmV0dXJuIG1fc2VsZWN0b3IuZ2V0KCk7Ci19Ci0KLUhUTUxDb250ZW50U2VsZWN0b3IqIFNoYWRv
d1Jvb3Q6OmVuc3VyZVNlbGVjdG9yKCkKLXsKLSAgICBpZiAoIW1fc2VsZWN0b3IpCi0gICAgICAg
IG1fc2VsZWN0b3IgPSBhZG9wdFB0cihuZXcgSFRNTENvbnRlbnRTZWxlY3RvcigpKTsKLSAgICBt
X3NlbGVjdG9yLT53aWxsU2VsZWN0T3Zlcih0aGlzKTsKLSAgICByZXR1cm4gbV9zZWxlY3Rvci5n
ZXQoKTsKLX0KLQotCi19Cit9IC8vIG5hbWVzcGFjZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvZG9tL1NoYWRvd1Jvb3QuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9TaGFkb3dSb290LmgKaW5k
ZXggODNlMTcxMzQ5OTUyOWU0NjRkOGMzNjA5OWJmZGQ1YmMxNWY0YzFlMS4uOWM2NTAwMmFhZmI0
ZmUxY2JhOTQ5ZDU2ZTEwOTBmNmRmMjM4MGZkZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
ZG9tL1NoYWRvd1Jvb3QuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vU2hhZG93Um9vdC5oCkBA
IC0yOCw2ICsyOCw3IEBACiAjZGVmaW5lIFNoYWRvd1Jvb3RfaAogCiAjaW5jbHVkZSAiRG9jdW1l
bnRGcmFnbWVudC5oIgorI2luY2x1ZGUgIkVsZW1lbnQuaCIKICNpbmNsdWRlICJFeGNlcHRpb25D
b2RlLmgiCiAjaW5jbHVkZSAiVHJlZVNjb3BlLmgiCiAjaW5jbHVkZSA8d3RmL0RvdWJseUxpbmtl
ZExpc3QuaD4KQEAgLTM2LDcgKzM3LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBE
b2N1bWVudDsKIGNsYXNzIEhUTUxDb250ZW50RWxlbWVudDsKLWNsYXNzIEhUTUxDb250ZW50U2Vs
ZWN0b3I7CitjbGFzcyBTaGFkb3dSb290TGlzdDsKIAogY2xhc3MgU2hhZG93Um9vdCA6IHB1Ymxp
YyBEb2N1bWVudEZyYWdtZW50LCBwdWJsaWMgVHJlZVNjb3BlLCBwdWJsaWMgRG91Ymx5TGlua2Vk
TGlzdE5vZGU8U2hhZG93Um9vdD4gewogICAgIGZyaWVuZCBjbGFzcyBXVEY6OkRvdWJseUxpbmtl
ZExpc3ROb2RlPFNoYWRvd1Jvb3Q+OwpAQCAtNTksMTEgKzYwLDggQEAgcHVibGljOgogICAgIHZv
aWQgY2xlYXJOZWVkc1JlYXR0YWNoSG9zdENoaWxkcmVuQW5kU2hhZG93KCk7CiAgICAgYm9vbCBu
ZWVkc1JlYXR0YWNoSG9zdENoaWxkcmVuQW5kU2hhZG93KCk7CiAKLSAgICBIVE1MQ29udGVudEVs
ZW1lbnQqIGluc2VydGlvblBvaW50Rm9yKE5vZGUqKSBjb25zdDsKICAgICB2b2lkIGhvc3RDaGls
ZHJlbkNoYW5nZWQoKTsKLSAgICBib29sIGlzU2VsZWN0b3JBY3RpdmUoKSBjb25zdDsKIAotICAg
IHZpcnR1YWwgdm9pZCBhdHRhY2goKTsKICAgICB2b2lkIHJlYXR0YWNoSG9zdENoaWxkcmVuQW5k
U2hhZG93KCk7CiAKICAgICB2aXJ0dWFsIGJvb2wgYXBwbHlBdXRob3JTaGVldHMoKSBjb25zdDsK
QEAgLTcxLDEzICs2OSwxMyBAQCBwdWJsaWM6CiAKICAgICBFbGVtZW50KiBob3N0KCkgY29uc3Qg
eyByZXR1cm4gc2hhZG93SG9zdCgpOyB9CiAKLSAgICBIVE1MQ29udGVudFNlbGVjdG9yKiBzZWxl
Y3RvcigpIGNvbnN0OwotICAgIEhUTUxDb250ZW50U2VsZWN0b3IqIGVuc3VyZVNlbGVjdG9yKCk7
Ci0KICAgICBTaGFkb3dSb290KiB5b3VuZ2VyU2hhZG93Um9vdCgpIGNvbnN0IHsgcmV0dXJuIHBy
ZXYoKTsgfQogICAgIFNoYWRvd1Jvb3QqIG9sZGVyU2hhZG93Um9vdCgpIGNvbnN0IHsgcmV0dXJu
IG5leHQoKTsgfQorICAgIFNoYWRvd1Jvb3RMaXN0KiBzaGFkb3dSb290TGlzdEZvclRoaXMoKSBj
b25zdCB7IHJldHVybiBob3N0KCktPnNoYWRvd1Jvb3RMaXN0KCk7IH0KKwogCiBwcml2YXRlOgor
ICAgIHN0YXRpYyBQYXNzUmVmUHRyPFNoYWRvd1Jvb3Q+IGNyZWF0ZShEb2N1bWVudCopOwogICAg
IFNoYWRvd1Jvb3QoRG9jdW1lbnQqKTsKICAgICB2aXJ0dWFsIH5TaGFkb3dSb290KCk7CiAKQEAg
LTkxLDcgKzg5LDYgQEAgcHJpdmF0ZToKICAgICBTaGFkb3dSb290KiBtX25leHQ7CiAgICAgYm9v
bCBtX2FwcGx5QXV0aG9yU2hlZXRzIDogMTsKICAgICBib29sIG1fbmVlZHNSZWNhbGN1bGF0ZUNv
bnRlbnQgOiAxOwotICAgIE93blB0cjxIVE1MQ29udGVudFNlbGVjdG9yPiBtX3NlbGVjdG9yOwog
fTsKIAogaW5saW5lIHZvaWQgU2hhZG93Um9vdDo6Y2xlYXJOZWVkc1JlYXR0YWNoSG9zdENoaWxk
cmVuQW5kU2hhZG93KCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9TaGFkb3dSb290
TGlzdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vU2hhZG93Um9vdExpc3QuY3BwCmluZGV4IGQx
OTU1YWFlZTYwMGYwNDcxMGUxYTRiMzlmMzkwNmNlZTI1MTMyNDMuLmFiODc4NTc4ZWQwYzUyMzEw
YTFiZjk1ZGEzZjYzZTQ1OTg3Y2FkMmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9T
aGFkb3dSb290TGlzdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL1NoYWRvd1Jvb3RMaXN0
LmNwcApAQCAtMjksNiArMjksNyBAQAogCiAjaW5jbHVkZSAiRG9jdW1lbnQuaCIKICNpbmNsdWRl
ICJFbGVtZW50LmgiCisjaW5jbHVkZSAiSFRNTENvbnRlbnRTZWxlY3Rvci5oIgogI2luY2x1ZGUg
IlJ1bnRpbWVFbmFibGVkRmVhdHVyZXMuaCIKICNpbmNsdWRlICJTaGFkb3dSb290LmgiCiAKQEAg
LTEwMSwyNiArMTAyLDQ5IEBAIHZvaWQgU2hhZG93Um9vdExpc3Q6Omhvc3RDaGlsZHJlbkNoYW5n
ZWQoKQogCiB2b2lkIFNoYWRvd1Jvb3RMaXN0OjphdHRhY2goKQogewotICAgIC8vIEZJWE1FOiBD
dXJyZW50bHkgd2Ugb25seSBzdXBwb3J0IHRoZSBjYXNlIHRoYXQgdGhlIHNoYWRvdyByb290IGxp
c3QgaGFzIGF0IG1vc3Qgb25lIHNoYWRvdyByb290LgotICAgIC8vIFNlZSBhbHNvIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03NzUwMyBhbmQgaXRzIGRlcGVuZGVudCBi
dWdzLgotICAgIEFTU0VSVChtX3NoYWRvd1Jvb3RzLnNpemUoKSA8PSAxKTsKKyAgICAvLyBDaGls
ZHJlbiBvZiBtX3NlbGVjdG9yIGlzIHBvcHVsYXRlZCBsYXppbHkgaW4KKyAgICAvLyBlbnN1cmVT
ZWxlY3RvcigpLCBhbmQgaGVyZSB3ZSBqdXN0IGVuc3VyZSB0aGF0CisgICAgLy8gaXQgaXMgaW4g
Y2xlYW4gc3RhdGUuCisgICAgQVNTRVJUKCFzZWxlY3RvcigpIHx8ICFzZWxlY3RvcigpLT5oYXND
YW5kaWRhdGVzKCkpOwogCiAgICAgZm9yIChTaGFkb3dSb290KiByb290ID0geW91bmdlc3RTaGFk
b3dSb290KCk7IHJvb3Q7IHJvb3QgPSByb290LT5vbGRlclNoYWRvd1Jvb3QoKSkgewogICAgICAg
ICBpZiAoIXJvb3QtPmF0dGFjaGVkKCkpCiAgICAgICAgICAgICByb290LT5hdHRhY2goKTsKICAg
ICB9CisKKyAgICBpZiAoSFRNTENvbnRlbnRTZWxlY3RvciogY29udGVudFNlbGVjdG9yID0gc2Vs
ZWN0b3IoKSkKKyAgICAgICAgY29udGVudFNlbGVjdG9yLT5kaWRTZWxlY3QoKTsKIH0KIAogdm9p
ZCBTaGFkb3dSb290TGlzdDo6ZGV0YWNoKCkKIHsKLSAgICAvLyBGSVhNRTogQ3VycmVudGx5IHdl
IG9ubHkgc3VwcG9ydCB0aGUgY2FzZSB0aGF0IHRoZSBzaGFkb3cgcm9vdCBsaXN0IGhhcyBhdCBt
b3N0IG9uZSBzaGFkb3cgcm9vdC4KLSAgICAvLyBTZWUgYWxzbyBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9Nzc1MDMgYW5kIGl0cyBkZXBlbmRlbnQgYnVncy4KLSAgICBB
U1NFUlQobV9zaGFkb3dSb290cy5zaXplKCkgPD0gMSk7Ci0KLSAgICBmb3IgKFNoYWRvd1Jvb3Qq
IHJvb3QgPSB5b3VuZ2VzdFNoYWRvd1Jvb3QoKTsgcm9vdDsgcm9vdCA9IHJvb3QtPm9sZGVyU2hh
ZG93Um9vdCgpKSB7CisgICAgZm9yIChTaGFkb3dSb290KiByb290ID0gb2xkZXN0U2hhZG93Um9v
dCgpOyByb290OyByb290ID0gcm9vdC0+eW91bmdlclNoYWRvd1Jvb3QoKSkgewogICAgICAgICBp
ZiAocm9vdC0+YXR0YWNoZWQoKSkKICAgICAgICAgICAgIHJvb3QtPmRldGFjaCgpOwogICAgIH0K
IH0KIAorSFRNTENvbnRlbnRFbGVtZW50KiBTaGFkb3dSb290TGlzdDo6aW5zZXJ0aW9uUG9pbnRG
b3IoTm9kZSogbm9kZSkgY29uc3QKK3sKKyAgICBpZiAoIW1fc2VsZWN0b3IpCisgICAgICAgIHJl
dHVybiAwOworICAgIEhUTUxDb250ZW50U2VsZWN0aW9uKiBmb3VuZCA9IG1fc2VsZWN0b3ItPmZp
bmRGb3Iobm9kZSk7CisgICAgaWYgKCFmb3VuZCkKKyAgICAgICAgcmV0dXJuIDA7CisgICAgcmV0
dXJuIGZvdW5kLT5pbnNlcnRpb25Qb2ludCgpOwogfQorCitib29sIFNoYWRvd1Jvb3RMaXN0Ojpp
c1NlbGVjdG9yQWN0aXZlKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9zZWxlY3RvciAmJiBtX3Nl
bGVjdG9yLT5oYXNDYW5kaWRhdGVzKCk7Cit9CisKK0hUTUxDb250ZW50U2VsZWN0b3IqIFNoYWRv
d1Jvb3RMaXN0OjplbnN1cmVTZWxlY3RvcigpCit7CisgICAgaWYgKCFtX3NlbGVjdG9yKQorICAg
ICAgICBtX3NlbGVjdG9yID0gYWRvcHRQdHIobmV3IEhUTUxDb250ZW50U2VsZWN0b3IoKSk7Cisg
ICAgbV9zZWxlY3Rvci0+d2lsbFNlbGVjdE92ZXIoaG9zdCgpKTsKKyAgICByZXR1cm4gbV9zZWxl
Y3Rvci5nZXQoKTsKK30KKworfSAvLyBuYW1lc3BhY2UKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2RvbS9TaGFkb3dSb290TGlzdC5oIGIvU291cmNlL1dlYkNvcmUvZG9tL1NoYWRvd1Jvb3RM
aXN0LmgKaW5kZXggZGJlYzc5NTQ2NDNlNjU4YTM0MGU3NmE5MjEwYzA5ZWU5ODBmMDQ3OS4uMjBm
YzhmNWY2YTc0NmRkMWE3MTcwMGYyYzBlYjE4OTVlOTJkMDZjOCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvZG9tL1NoYWRvd1Jvb3RMaXN0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL1No
YWRvd1Jvb3RMaXN0LmgKQEAgLTI3LDIzICsyNywyNyBAQAogI2lmbmRlZiBTaGFkb3dSb290TGlz
dF9oCiAjZGVmaW5lIFNoYWRvd1Jvb3RMaXN0X2gKIAorI2luY2x1ZGUgIlNoYWRvd1Jvb3QuaCIK
ICNpbmNsdWRlIDx3dGYvRG91Ymx5TGlua2VkTGlzdC5oPgogI2luY2x1ZGUgPHd0Zi9Ob25jb3B5
YWJsZS5oPgorI2luY2x1ZGUgPHd0Zi9Pd25QdHIuaD4KICNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0
ci5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLWNsYXNzIFNoYWRvd1Jvb3Q7CitjbGFzcyBO
b2RlOwogY2xhc3MgRWxlbWVudDsKK2NsYXNzIEhUTUxDb250ZW50RWxlbWVudDsKK2NsYXNzIEhU
TUxDb250ZW50U2VsZWN0b3I7CiAKIGNsYXNzIFNoYWRvd1Jvb3RMaXN0IHsKIHB1YmxpYzoKICAg
ICBTaGFkb3dSb290TGlzdCgpOwogICAgIH5TaGFkb3dSb290TGlzdCgpOwogCi0gICAgYm9vbCBo
YXNTaGFkb3dSb290KCk7Ci0gICAgU2hhZG93Um9vdCogeW91bmdlc3RTaGFkb3dSb290KCk7Ci0g
ICAgU2hhZG93Um9vdCogb2xkZXN0U2hhZG93Um9vdCgpOworICAgIGJvb2wgaGFzU2hhZG93Um9v
dCgpIGNvbnN0OworICAgIFNoYWRvd1Jvb3QqIHlvdW5nZXN0U2hhZG93Um9vdCgpIGNvbnN0Owor
ICAgIFNoYWRvd1Jvb3QqIG9sZGVzdFNoYWRvd1Jvb3QoKSBjb25zdDsKIAogICAgIHZvaWQgcHVz
aFNoYWRvd1Jvb3QoU2hhZG93Um9vdCopOwogICAgIFNoYWRvd1Jvb3QqIHBvcFNoYWRvd1Jvb3Qo
KTsKQEAgLTU5LDI2ICs2Myw0NSBAQCBwdWJsaWM6CiAgICAgdm9pZCBhdHRhY2goKTsKICAgICB2
b2lkIGRldGFjaCgpOwogCisgICAgRWxlbWVudCogaG9zdCgpIGNvbnN0CisgICAgeworICAgICAg
ICBBU1NFUlQoaGFzU2hhZG93Um9vdCgpKTsKKyAgICAgICAgcmV0dXJuIHlvdW5nZXN0U2hhZG93
Um9vdCgpLT5ob3N0KCk7CisgICAgfQorCisgICAgSFRNTENvbnRlbnRFbGVtZW50KiBpbnNlcnRp
b25Qb2ludEZvcihOb2RlKikgY29uc3Q7CisKKyAgICBIVE1MQ29udGVudFNlbGVjdG9yKiBzZWxl
Y3RvcigpIGNvbnN0OworICAgIEhUTUxDb250ZW50U2VsZWN0b3IqIGVuc3VyZVNlbGVjdG9yKCk7
CisKKyAgICBib29sIGlzU2VsZWN0b3JBY3RpdmUoKSBjb25zdDsKKwogcHJpdmF0ZToKICAgICBE
b3VibHlMaW5rZWRMaXN0PFNoYWRvd1Jvb3Q+IG1fc2hhZG93Um9vdHM7CisgICAgT3duUHRyPEhU
TUxDb250ZW50U2VsZWN0b3I+IG1fc2VsZWN0b3I7CiAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUo
U2hhZG93Um9vdExpc3QpOwogfTsKIAotaW5saW5lIGJvb2wgU2hhZG93Um9vdExpc3Q6Omhhc1No
YWRvd1Jvb3QoKQoraW5saW5lIGJvb2wgU2hhZG93Um9vdExpc3Q6Omhhc1NoYWRvd1Jvb3QoKSBj
b25zdAogewogICAgIHJldHVybiAhbV9zaGFkb3dSb290cy5pc0VtcHR5KCk7CiB9CiAKLWlubGlu
ZSBTaGFkb3dSb290KiBTaGFkb3dSb290TGlzdDo6eW91bmdlc3RTaGFkb3dSb290KCkKK2lubGlu
ZSBTaGFkb3dSb290KiBTaGFkb3dSb290TGlzdDo6eW91bmdlc3RTaGFkb3dSb290KCkgY29uc3QK
IHsKICAgICByZXR1cm4gbV9zaGFkb3dSb290cy5oZWFkKCk7CiB9CiAKLWlubGluZSBTaGFkb3dS
b290KiBTaGFkb3dSb290TGlzdDo6b2xkZXN0U2hhZG93Um9vdCgpCitpbmxpbmUgU2hhZG93Um9v
dCogU2hhZG93Um9vdExpc3Q6Om9sZGVzdFNoYWRvd1Jvb3QoKSBjb25zdAogewogICAgIHJldHVy
biBtX3NoYWRvd1Jvb3RzLnRhaWwoKTsKIH0KIAoraW5saW5lIEhUTUxDb250ZW50U2VsZWN0b3Iq
IFNoYWRvd1Jvb3RMaXN0OjpzZWxlY3RvcigpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fc2VsZWN0
b3IuZ2V0KCk7Cit9CisKIH0gLy8gbmFtZXNwYWNlCiAKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvSFRNTENvbnRlbnRFbGVtZW50LmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvc2hhZG93L0hUTUxDb250ZW50RWxlbWVudC5jcHAKaW5kZXggNmE2Yjg5YmZh
YWRjNDk3YTQ1YjEwMDdlMWRlNjM3Mjc5MTIxMTM0OS4uNTg5YjJjOTM3NGNlMzE3MzhjMzVjZTlj
MzU2ZTQ0MjJjMTIxYWQzNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cv
SFRNTENvbnRlbnRFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9I
VE1MQ29udGVudEVsZW1lbnQuY3BwCkBAIC0zMiw2ICszMiw3IEBACiAjaW5jbHVkZSAiSFRNTE5h
bWVzLmgiCiAjaW5jbHVkZSAiUXVhbGlmaWVkTmFtZS5oIgogI2luY2x1ZGUgIlNoYWRvd1Jvb3Qu
aCIKKyNpbmNsdWRlICJTaGFkb3dSb290TGlzdC5oIgogI2luY2x1ZGUgPHd0Zi9TdGRMaWJFeHRy
YXMuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtNzQsNyArNzUsNyBAQCB2b2lkIEhUTUxD
b250ZW50RWxlbWVudDo6YXR0YWNoKCkKIAogICAgIC8vIEJlZm9yZSBjYWxsaW5nIFN0eWxlZEVs
ZW1lbnQ6OmF0dGFjaCwgc2VsZWN0b3IgbXVzdCBiZSBjYWxjdWxhdGVkLgogICAgIGlmIChyb290
KSB7Ci0gICAgICAgIEhUTUxDb250ZW50U2VsZWN0b3IqIHNlbGVjdG9yID0gcm9vdC0+ZW5zdXJl
U2VsZWN0b3IoKTsKKyAgICAgICAgSFRNTENvbnRlbnRTZWxlY3Rvciogc2VsZWN0b3IgPSByb290
LT5zaGFkb3dSb290TGlzdEZvclRoaXMoKS0+ZW5zdXJlU2VsZWN0b3IoKTsKICAgICAgICAgc2Vs
ZWN0b3ItPnVuc2VsZWN0KG1fc2VsZWN0aW9ucy5nZXQoKSk7CiAgICAgICAgIHNlbGVjdG9yLT5z
ZWxlY3QodGhpcywgbV9zZWxlY3Rpb25zLmdldCgpKTsKICAgICB9CkBAIC05MCw3ICs5MSw3IEBA
IHZvaWQgSFRNTENvbnRlbnRFbGVtZW50OjphdHRhY2goKQogdm9pZCBIVE1MQ29udGVudEVsZW1l
bnQ6OmRldGFjaCgpCiB7CiAgICAgaWYgKFNoYWRvd1Jvb3QqIHJvb3QgPSB0b1NoYWRvd1Jvb3Qo
c2hhZG93VHJlZVJvb3ROb2RlKCkpKSB7Ci0gICAgICAgIGlmIChIVE1MQ29udGVudFNlbGVjdG9y
KiBzZWxlY3RvciA9IHJvb3QtPnNlbGVjdG9yKCkpCisgICAgICAgIGlmIChIVE1MQ29udGVudFNl
bGVjdG9yKiBzZWxlY3RvciA9IHJvb3QtPnNoYWRvd1Jvb3RMaXN0Rm9yVGhpcygpLT5zZWxlY3Rv
cigpKQogICAgICAgICAgICAgc2VsZWN0b3ItPnVuc2VsZWN0KG1fc2VsZWN0aW9ucy5nZXQoKSk7
CiAKICAgICAgICAgLy8gV2hlbiBjb250ZW50IGVsZW1lbnQgaXMgZGV0YWNoZWQsIHNoYWRvdyB0
cmVlIHNob3VsZCBiZSByZWNyZWF0ZWQgdG8gcmUtY2FsY3VsYXRlIHNlbGVjdG9yIGZvcgpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvSFRNTENvbnRlbnRTZWxlY3Rvci5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9IVE1MQ29udGVudFNlbGVjdG9yLmNwcApp
bmRleCA4N2UxYWQ5ZWJhMDJiMDViOTY2YWZhNmY3ZTY4YWUxMjk3MzEyYjRjLi41NTk2ODhhNTAz
MTY0YzAxZTBiNDRiZTNmMzViNDRmZmM4M2IyNGVhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9odG1sL3NoYWRvdy9IVE1MQ29udGVudFNlbGVjdG9yLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9odG1sL3NoYWRvdy9IVE1MQ29udGVudFNlbGVjdG9yLmNwcApAQCAtMTQ0LDExICsxNDQsMTIg
QEAgdm9pZCBIVE1MQ29udGVudFNlbGVjdG9yOjpkaWRTZWxlY3QoKQogICAgIG1fY2FuZGlkYXRl
cy5jbGVhcigpOwogfQogCi12b2lkIEhUTUxDb250ZW50U2VsZWN0b3I6OndpbGxTZWxlY3RPdmVy
KFNoYWRvd1Jvb3QqIHNjb3BlKQordm9pZCBIVE1MQ29udGVudFNlbGVjdG9yOjp3aWxsU2VsZWN0
T3ZlcihFbGVtZW50KiBzaGFkb3dIb3N0KQogewogICAgIGlmICghbV9jYW5kaWRhdGVzLmlzRW1w
dHkoKSkKICAgICAgICAgcmV0dXJuOwotICAgIGZvciAoTm9kZSogbm9kZSA9IHNjb3BlLT5zaGFk
b3dIb3N0KCktPmZpcnN0Q2hpbGQoKTsgbm9kZTsgbm9kZSA9IG5vZGUtPm5leHRTaWJsaW5nKCkp
CisgICAgQVNTRVJUKHNoYWRvd0hvc3QpOworICAgIGZvciAoTm9kZSogbm9kZSA9IHNoYWRvd0hv
c3QtPmZpcnN0Q2hpbGQoKTsgbm9kZTsgbm9kZSA9IG5vZGUtPm5leHRTaWJsaW5nKCkpCiAgICAg
ICAgIG1fY2FuZGlkYXRlcy5hcHBlbmQobm9kZSk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvc2hhZG93L0hUTUxDb250ZW50U2VsZWN0b3IuaCBiL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvc2hhZG93L0hUTUxDb250ZW50U2VsZWN0b3IuaAppbmRleCBiMGEyODkyMDI2OWU0ZjZk
MzExODAwYjViY2RiYWNlZTg1Mzg3MjYwLi5iZWZlNTNjMGRmNjI1ZTM4ZDAxN2ExMmQzZWY5YzZm
MjhmM2E1NmJhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9IVE1MQ29u
dGVudFNlbGVjdG9yLmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvSFRNTENvbnRl
bnRTZWxlY3Rvci5oCkBAIC0xMzMsNyArMTMzLDcgQEAgcHVibGljOgogICAgIHZvaWQgdW5zZWxl
Y3QoSFRNTENvbnRlbnRTZWxlY3Rpb25MaXN0Kik7CiAgICAgSFRNTENvbnRlbnRTZWxlY3Rpb24q
IGZpbmRGb3IoTm9kZSoga2V5KSBjb25zdDsKIAotICAgIHZvaWQgd2lsbFNlbGVjdE92ZXIoU2hh
ZG93Um9vdCopOworICAgIHZvaWQgd2lsbFNlbGVjdE92ZXIoRWxlbWVudCogc2hhZG93SG9zdCk7
CiAgICAgdm9pZCBkaWRTZWxlY3QoKTsKICAgICBib29sIGhhc0NhbmRpZGF0ZXMoKSBjb25zdCB7
IHJldHVybiAhbV9jYW5kaWRhdGVzLmlzRW1wdHkoKTsgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0lu
dGVybmFscy5jcHAKaW5kZXggMTU2MjBjZDBkYWJlYzZmOWVlMmIwMjFmZmZhNmJlZjk1ZGEzMzdk
NS4uZmQzNzc4NmM1NTg5YWMyMjdjZmNlMTJkOTVjNDVkYTMyODk1M2U1NyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3Rlc3RpbmcvSW50ZXJuYWxzLmNwcApAQCAtMTE5LDYgKzExOSwxNCBAQCBJbnRlcm5hbHM6Oklu
dGVybmFscyhEb2N1bWVudCogZG9jdW1lbnQpCiAgICAgcmVzZXQoZG9jdW1lbnQpOwogfQogCitT
dHJpbmcgSW50ZXJuYWxzOjphZGRyZXNzKE5vZGUqIG5vZGUpCit7CisgICAgY2hhciBidWZbMzJd
OworICAgIHNwcmludGYoYnVmLCAiJXAiLCBub2RlKTsKKworICAgIHJldHVybiBTdHJpbmcoYnVm
KTsKK30KKwogYm9vbCBJbnRlcm5hbHM6OmlzUHJlbG9hZGVkKERvY3VtZW50KiBkb2N1bWVudCwg
Y29uc3QgU3RyaW5nJiB1cmwpCiB7CiAgICAgaWYgKCFkb2N1bWVudCkKQEAgLTIzMSw2ICsyMzks
MjYgQEAgSW50ZXJuYWxzOjpTaGFkb3dSb290SWZTaGFkb3dET01FbmFibGVkT3JOb2RlKiBJbnRl
cm5hbHM6Om9sZGVzdFNoYWRvd1Jvb3QoRWxlbWUKICAgICByZXR1cm4gaG9zdC0+c2hhZG93Um9v
dExpc3QoKS0+b2xkZXN0U2hhZG93Um9vdCgpOwogfQogCitJbnRlcm5hbHM6OlNoYWRvd1Jvb3RJ
ZlNoYWRvd0RPTUVuYWJsZWRPck5vZGUqIEludGVybmFsczo6eW91bmdlclNoYWRvd1Jvb3QoTm9k
ZSogc2hhZG93LCBFeGNlcHRpb25Db2RlJiBlYykKK3sKKyAgICBpZiAoIXNoYWRvdyB8fCAhc2hh
ZG93LT5pc1NoYWRvd1Jvb3QoKSkgeworICAgICAgICBlYyA9IElOVkFMSURfQUNDRVNTX0VSUjsK
KyAgICAgICAgcmV0dXJuIDA7CisgICAgfQorCisgICAgcmV0dXJuIHRvU2hhZG93Um9vdChzaGFk
b3cpLT55b3VuZ2VyU2hhZG93Um9vdCgpOworfQorCitJbnRlcm5hbHM6OlNoYWRvd1Jvb3RJZlNo
YWRvd0RPTUVuYWJsZWRPck5vZGUqIEludGVybmFsczo6b2xkZXJTaGFkb3dSb290KE5vZGUqIHNo
YWRvdywgRXhjZXB0aW9uQ29kZSYgZWMpCit7CisgICAgaWYgKCFzaGFkb3cgfHwgIXNoYWRvdy0+
aXNTaGFkb3dSb290KCkpIHsKKyAgICAgICAgZWMgPSBJTlZBTElEX0FDQ0VTU19FUlI7CisgICAg
ICAgIHJldHVybiAwOworICAgIH0KKworICAgIHJldHVybiB0b1NoYWRvd1Jvb3Qoc2hhZG93KS0+
b2xkZXJTaGFkb3dSb290KCk7Cit9CisKIHZvaWQgSW50ZXJuYWxzOjpyZW1vdmVTaGFkb3dSb290
KEVsZW1lbnQqIGhvc3QsIEV4Y2VwdGlvbkNvZGUmIGVjKQogewogICAgIGlmICghaG9zdCkgewpA
QCAtMjM4LDcgKzI2Niw3IEBAIHZvaWQgSW50ZXJuYWxzOjpyZW1vdmVTaGFkb3dSb290KEVsZW1l
bnQqIGhvc3QsIEV4Y2VwdGlvbkNvZGUmIGVjKQogICAgICAgICByZXR1cm47CiAgICAgfQogCi0g
ICAgaG9zdC0+cmVtb3ZlU2hhZG93Um9vdCgpOworICAgIGhvc3QtPnJlbW92ZVNoYWRvd1Jvb3RM
aXN0KCk7CiB9CiAKIHZvaWQgSW50ZXJuYWxzOjpzZXRNdWx0aXBsZVNoYWRvd1N1YnRyZWVzRW5h
YmxlZChib29sIGVuYWJsZWQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0lu
dGVybmFscy5oIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuaAppbmRleCA3Y2Rl
ZTE3MTczNDU0MmE2MDkwMmUyOWFjMjAzOTVmODY2YzhmNjJkLi4xMTgzMTg1MzFlMDA3YTY4YTUz
MDU2OTNhZDk2OTVhZTI4MmIxMzEzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5n
L0ludGVybmFscy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmgKQEAg
LTU1LDYgKzU1LDggQEAgcHVibGljOgogCiAgICAgU3RyaW5nIGVsZW1lbnRSZW5kZXJUcmVlQXNU
ZXh0KEVsZW1lbnQqLCBFeGNlcHRpb25Db2RlJik7CiAKKyAgICBTdHJpbmcgYWRkcmVzcyhOb2Rl
Kik7CisKICAgICBib29sIGlzUHJlbG9hZGVkKERvY3VtZW50KiwgY29uc3QgU3RyaW5nJiB1cmwp
OwogCiAgICAgc2l6ZV90IG51bWJlck9mU2NvcGVkSFRNTFN0eWxlQ2hpbGRyZW4oY29uc3QgTm9k
ZSosIEV4Y2VwdGlvbkNvZGUmKSBjb25zdDsKQEAgLTY4LDYgKzcwLDggQEAgcHVibGljOgogICAg
IFNoYWRvd1Jvb3RJZlNoYWRvd0RPTUVuYWJsZWRPck5vZGUqIHNoYWRvd1Jvb3QoRWxlbWVudCog
aG9zdCwgRXhjZXB0aW9uQ29kZSYpOwogICAgIFNoYWRvd1Jvb3RJZlNoYWRvd0RPTUVuYWJsZWRP
ck5vZGUqIHlvdW5nZXN0U2hhZG93Um9vdChFbGVtZW50KiBob3N0LCBFeGNlcHRpb25Db2RlJik7
CiAgICAgU2hhZG93Um9vdElmU2hhZG93RE9NRW5hYmxlZE9yTm9kZSogb2xkZXN0U2hhZG93Um9v
dChFbGVtZW50KiBob3N0LCBFeGNlcHRpb25Db2RlJik7CisgICAgU2hhZG93Um9vdElmU2hhZG93
RE9NRW5hYmxlZE9yTm9kZSogeW91bmdlclNoYWRvd1Jvb3QoTm9kZSogc2hhZG93LCBFeGNlcHRp
b25Db2RlJik7CisgICAgU2hhZG93Um9vdElmU2hhZG93RE9NRW5hYmxlZE9yTm9kZSogb2xkZXJT
aGFkb3dSb290KE5vZGUqIHNoYWRvdywgRXhjZXB0aW9uQ29kZSYpOwogICAgIHZvaWQgcmVtb3Zl
U2hhZG93Um9vdChFbGVtZW50KiBob3N0LCBFeGNlcHRpb25Db2RlJik7CiAgICAgdm9pZCBzZXRN
dWx0aXBsZVNoYWRvd1N1YnRyZWVzRW5hYmxlZChib29sKTsKICAgICBFbGVtZW50KiBpbmNsdWRl
ckZvcihOb2RlKiwgRXhjZXB0aW9uQ29kZSYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
dGVzdGluZy9JbnRlcm5hbHMuaWRsIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMu
aWRsCmluZGV4IDY1ZGE2Mjk2YTU5NGNhMmI5NGFlZWFjNzQ5YmZkMDBjYTk3NzlmNTEuLmM4ODky
MTRlMzUzNWQyZGQxMTU3MjFkZmFiYTkwNDg1NTA2YzMyOWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmlkbAorKysgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5n
L0ludGVybmFscy5pZGwKQEAgLTI3LDYgKzI3LDggQEAgbW9kdWxlIHdpbmRvdyB7CiAgICAgaW50
ZXJmYWNlIFsKICAgICAgICAgT21pdENvbnN0cnVjdG9yCiAgICAgXSBJbnRlcm5hbHMgeworICAg
ICAgICBET01TdHJpbmcgYWRkcmVzcyhpbiBOb2RlIG5vZGUpOworCiAgICAgICAgIERPTVN0cmlu
ZyBlbGVtZW50UmVuZGVyVHJlZUFzVGV4dChpbiBFbGVtZW50IGVsZW1lbnQpIHJhaXNlcyhET01F
eGNlcHRpb24pOwogICAgICAgICBib29sZWFuIGlzUHJlbG9hZGVkKGluIERvY3VtZW50IGRvY3Vt
ZW50LCBpbiBET01TdHJpbmcgdXJsKTsKIApAQCAtMzcsMTEgKzM5LDE1IEBAIG1vZHVsZSB3aW5k
b3cgewogICAgICAgICBTaGFkb3dSb290IHNoYWRvd1Jvb3QoaW4gRWxlbWVudCBob3N0KSByYWlz
ZXMgKERPTUV4Y2VwdGlvbik7CiAgICAgICAgIFNoYWRvd1Jvb3QgeW91bmdlc3RTaGFkb3dSb290
KGluIEVsZW1lbnQgaG9zdCkgcmFpc2VzIChET01FeGNlcHRpb24pOwogICAgICAgICBTaGFkb3dS
b290IG9sZGVzdFNoYWRvd1Jvb3QoaW4gRWxlbWVudCBob3N0KSByYWlzZXMgKERPTUV4Y2VwdGlv
bik7CisgICAgICAgIFNoYWRvd1Jvb3QgeW91bmdlclNoYWRvd1Jvb3QoaW4gTm9kZSByb290KSBy
YWlzZXMgKERPTUV4Y2VwdGlvbik7CisgICAgICAgIFNoYWRvd1Jvb3Qgb2xkZXJTaGFkb3dSb290
KGluIE5vZGUgcm9vdCkgcmFpc2VzIChET01FeGNlcHRpb24pOwogI2Vsc2UKICAgICAgICAgTm9k
ZSBlbnN1cmVTaGFkb3dSb290KGluIEVsZW1lbnQgaG9zdCkgcmFpc2VzIChET01FeGNlcHRpb24p
OwogICAgICAgICBOb2RlIHNoYWRvd1Jvb3QoaW4gRWxlbWVudCBob3N0KSByYWlzZXMgKERPTUV4
Y2VwdGlvbik7CiAgICAgICAgIE5vZGUgeW91bmdlc3RTaGFkb3dSb290KGluIEVsZW1lbnQgaG9z
dCkgcmFpc2VzIChET01FeGNlcHRpb24pOwogICAgICAgICBOb2RlIG9sZGVzdFNoYWRvd1Jvb3Qo
aW4gRWxlbWVudCBob3N0KSByYWlzZXMgKERPTUV4Y2VwdGlvbik7CisgICAgICAgIE5vZGUgeW91
bmdlclNoYWRvd1Jvb3QoaW4gTm9kZSByb290KSByYWlzZXMgKERPTUV4Y2VwdGlvbik7CisgICAg
ICAgIE5vZGUgeW91bmdlclNoYWRvd1Jvb3QoaW4gTm9kZSByb290KSByYWlzZXMgKERPTUV4Y2Vw
dGlvbik7CiAjZW5kaWYKICAgICAgICAgdm9pZCBzZXRNdWx0aXBsZVNoYWRvd1N1YnRyZWVzRW5h
YmxlZChpbiBib29sZWFuIGVuYWJsZWQpOwogICAgICAgICBFbGVtZW50IGluY2x1ZGVyRm9yKGlu
IE5vZGUgbm9kZSkgcmFpc2VzIChET01FeGNlcHRpb24pOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdDIvd2luL1dlYktpdDIuZGVmIGIvU291cmNlL1dlYktpdDIvd2luL1dlYktpdDIuZGVmCmlu
ZGV4IDJhYTcwZGY1ZWRiMWU2YWM0M2Q5NWVjZDcxZDJiNjU1ZDRkNTg2NTMuLmUzNjQ4NmQ3ZDc0
ZmU1ODM2NzQ3YzdmNWI4NGZkOWI5Zjg1MGExYTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQy
L3dpbi9XZWJLaXQyLmRlZgorKysgYi9Tb3VyY2UvV2ViS2l0Mi93aW4vV2ViS2l0Mi5kZWYKQEAg
LTE3Niw3ICsxNzYsNyBAQCBFWFBPUlRTCiAgICAgICAgID9wYWdlQERvY3VtZW50QFdlYkNvcmVA
QFFCRVBBVlBhZ2VAMkBYWgogICAgICAgICA/cGFpbnRDb250cm9sVGludHNARnJhbWVWaWV3QFdl
YkNvcmVAQEFBRVhYWgogICAgICAgICA/cmFuZ2VGcm9tTG9jYXRpb25BbmRMZW5ndGhAVGV4dEl0
ZXJhdG9yQFdlYkNvcmVAQFNBP0FWPyRQYXNzUmVmUHRyQFZSYW5nZUBXZWJDb3JlQEBAV1RGQEBQ
QVZFbGVtZW50QDJASEhfTkBaCi0gICAgICAgID9yZW1vdmVTaGFkb3dSb290QEVsZW1lbnRAV2Vi
Q29yZUBAUUFFWFhaCisgICAgICAgID9yZW1vdmVTaGFkb3dSb290TGlzdEBFbGVtZW50QFdlYkNv
cmVAQFFBRVhYWgogICAgICAgICA/c2NyaXB0RXhlY3V0aW9uQ29udGV4dEBKU0RPTUdsb2JhbE9i
amVjdEBXZWJDb3JlQEBRQkVQQVZTY3JpcHRFeGVjdXRpb25Db250ZXh0QDJAWFoKICAgICAgICAg
P3Njcm9sbEVsZW1lbnRUb1JlY3RARnJhbWVWaWV3QFdlYkNvcmVAQFFBRVhQQVZFbGVtZW50QDJA
QUJWSW50UmVjdEAyQEBaCiAgICAgICAgID9zZXRET01FeGNlcHRpb25AV2ViQ29yZUBAWUFYUEFW
RXhlY1N0YXRlQEpTQ0BASEBaCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi93aW4vV2ViS2l0
MkNGTGl0ZS5kZWYgYi9Tb3VyY2UvV2ViS2l0Mi93aW4vV2ViS2l0MkNGTGl0ZS5kZWYKaW5kZXgg
Y2I3YjdjZTY5NmUxMmQxYjlmZTFiNTI3OWQ2YmI2YjNiZjUwMjc0ZC4uZDdkM2RiYjRlODczYTE5
NzZjMmRlZDQ4ODQ0OWQ5MmE3YTNiNDVjNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvd2lu
L1dlYktpdDJDRkxpdGUuZGVmCisrKyBiL1NvdXJjZS9XZWJLaXQyL3dpbi9XZWJLaXQyQ0ZMaXRl
LmRlZgpAQCAtMTcxLDcgKzE3MSw3IEBAIEVYUE9SVFMKICAgICAgICAgP3BhZ2VARG9jdW1lbnRA
V2ViQ29yZUBAUUJFUEFWUGFnZUAyQFhaCiAgICAgICAgID9wYWludENvbnRyb2xUaW50c0BGcmFt
ZVZpZXdAV2ViQ29yZUBAQUFFWFhaCiAgICAgICAgID9yYW5nZUZyb21Mb2NhdGlvbkFuZExlbmd0
aEBUZXh0SXRlcmF0b3JAV2ViQ29yZUBAU0E/QVY/JFBhc3NSZWZQdHJAVlJhbmdlQFdlYkNvcmVA
QEBXVEZAQFBBVkVsZW1lbnRAMkBISF9OQFoKLSAgICAgICAgP3JlbW92ZVNoYWRvd1Jvb3RARWxl
bWVudEBXZWJDb3JlQEBRQUVYWFoKKyAgICAgICAgP3JlbW92ZVNoYWRvd1Jvb3RMaXN0QEVsZW1l
bnRAV2ViQ29yZUBAUUFFWFhaCiAgICAgICAgID9zY3JpcHRFeGVjdXRpb25Db250ZXh0QEpTRE9N
R2xvYmFsT2JqZWN0QFdlYkNvcmVAQFFCRVBBVlNjcmlwdEV4ZWN1dGlvbkNvbnRleHRAMkBYWgog
ICAgICAgICA/c2Nyb2xsRWxlbWVudFRvUmVjdEBGcmFtZVZpZXdAV2ViQ29yZUBAUUFFWFBBVkVs
ZW1lbnRAMkBBQlZJbnRSZWN0QDJAQFoKICAgICAgICAgP3NldERPTUV4Y2VwdGlvbkBXZWJDb3Jl
QEBZQVhQQVZFeGVjU3RhdGVASlNDQEBIQFoKZGlmZiAtLWdpdCBhL1NvdXJjZS9hdXRvdG9vbHMv
c3ltYm9scy5maWx0ZXIgYi9Tb3VyY2UvYXV0b3Rvb2xzL3N5bWJvbHMuZmlsdGVyCmluZGV4IDg1
ZWMwMmJiNWRmNzg0NTYzMGY2ZGEyZTYxMTJkNTRmNjhiZDBmYWQuLmZmMTgzZDg5NWRiZTg5NzM3
ZTk0NWM3YTNhZWU2ZTU0MTUxZTljNGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9hdXRvdG9vbHMvc3lt
Ym9scy5maWx0ZXIKKysrIGIvU291cmNlL2F1dG90b29scy9zeW1ib2xzLmZpbHRlcgpAQCAtNjYs
NyArNjYsNyBAQCBfWk43V2ViQ29yZTZKU05vZGUxMHB1dFZpcnR1YWxFUE4zSlNDOUV4ZWNTdGF0
ZUVSS05TMV8xMElkZW50aWZpZXJFTlMxXzdKU1ZhbHVlRQogX1pON1dlYkNvcmU2SlNOb2RlMjB2
aXNpdENoaWxkcmVuVmlydHVhbEVSTjNKU0MxMVNsb3RWaXNpdG9yRTsKIF9aTjdXZWJDb3JlNkpT
Tm9kZTZzX2luZm9FOwogX1pON1dlYkNvcmU2dG9Ob2RlRU4zSlNDN0pTVmFsdWVFOwotX1pON1dl
YkNvcmU3RWxlbWVudDE2cmVtb3ZlU2hhZG93Um9vdEV2OworX1pON1dlYkNvcmU3RWxlbWVudDIw
cmVtb3ZlU2hhZG93Um9vdExpc3RFdjsKIF9aTjdXZWJDb3JlN3RvUmFuZ2VFTjNKU0M3SlNWYWx1
ZUU7CiBfWk43V2ViQ29yZTlKU0VsZW1lbnQxMHB1dFZpcnR1YWxFUE4zSlNDOUV4ZWNTdGF0ZUVS
S05TMV8xMElkZW50aWZpZXJFTlMxXzdKU1ZhbHVlRVJOUzFfMTVQdXRQcm9wZXJ0eVNsb3RFOwog
X1pON1dlYkNvcmU5SlNFbGVtZW50NnNfaW5mb0U7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9D
aGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXggOTY1MjhiOGVkZjNkNWZiMjY1
MmY5NWRlMzBjODkyZjhiYWIwZjY4Yi4uYTZiYWU0ODI0ZGE1ZGI2NDI4NmY2ODI4NzczYzAwZTI5
ZjkwY2VlMyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRl
c3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI5IEBACisyMDEyLTAyLTE5ICBTaGlueWEgS2F3YW5h
a2EgIDxzaGlueWFrQGNocm9taXVtLm9yZz4KKworICAgICAgICBFbGVtZW50IHNob3VsZCBiZSBh
YmxlIHRvIGhhdmUgbXVsdGlwbGUgc2hhZG93IHJvb3RzLgorICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9Nzc5MzEKKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIGZhc3QvZG9tL3Jlc291cmNlcy9zaGFkb3ctdGVz
dC1kcml2ZXIuanM6CisgICAgICAgIChkb25lVGVzdCk6CisgICAgICAgICAgdGVzdERvd25PbmNl
KCkgd2lsbCBiZSBjYWxsZWQgYWZ0ZXIgdGhlIHdob2xlIHRlc3QuCisgICAgICAgIChkb1Rlc3Qp
OgorICAgICAgICAgIHNldFVwT25jZSgpIHdpbGwgYmUgY2FsbGVkIGJlZm9yZSB0aGUgd2hvbGUg
dGVzdC4KKyAgICAgICAgKGNyZWF0ZVNwYW5XaXRoVGV4dCk6CisgICAgICAgICAgQ2FuIHRha2Ug
Y2xhc3NOYW1lIGFzIGFuIGFyZ3VtZW50LgorICAgICAgICAqIGZhc3QvZG9tL3NoYWRvdy9tdWx0
aXBsZS1zaGFkb3dyb290LWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogZmFzdC9kb20v
c2hhZG93L211bHRpcGxlLXNoYWRvd3Jvb3QtcmVuZGVyaW5nLWV4cGVjdGVkLnR4dDogQWRkZWQu
CisgICAgICAgICogZmFzdC9kb20vc2hhZG93L211bHRpcGxlLXNoYWRvd3Jvb3QtcmVuZGVyaW5n
Lmh0bWw6IEFkZGVkLgorICAgICAgICAqIGZhc3QvZG9tL3NoYWRvdy9tdWx0aXBsZS1zaGFkb3dy
b290Lmh0bWw6IEFkZGVkLgorICAgICAgICAqIHBsYXRmb3JtL2VmbC9Ta2lwcGVkOgorICAgICAg
ICAqIHBsYXRmb3JtL2d0ay9Ta2lwcGVkOgorICAgICAgICAqIHBsYXRmb3JtL21hYy9Ta2lwcGVk
OgorICAgICAgICAqIHBsYXRmb3JtL3F0L1NraXBwZWQ6CisgICAgICAgICogcGxhdGZvcm0vd2lu
L1NraXBwZWQ6CisgICAgICAgICogcGxhdGZvcm0vd2luY2Fpcm8vU2tpcHBlZDoKKyAgICAgICAg
KiBwbGF0Zm9ybS93azIvU2tpcHBlZDoKKwogMjAxMi0wMi0xOSAgTm9lbCBHb3Jkb24gIDxub2Vs
LmdvcmRvbkBnbWFpbC5jb20+CiAKICAgICAgICAgW2Nocm9taXVtXSBVbnJldmlld2VkLiBVcGRh
dGUgcmVtYWluaW5nIGV4cGVjdGF0aW9ucyBmb3IgU1ZHSW1hZ2VFbGVtZW50LXN2Z2RvbS1yZXF1
aXJlZEZlYXR1cmVzLmh0bWwuCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2RvbS9yZXNv
dXJjZXMvc2hhZG93LXRlc3QtZHJpdmVyLmpzIGIvTGF5b3V0VGVzdHMvZmFzdC9kb20vcmVzb3Vy
Y2VzL3NoYWRvdy10ZXN0LWRyaXZlci5qcwppbmRleCA5OWUzZWJmNmY3ZTUyZWRkZWJiNWIzMGU0
ODliMGI2ZWRhNGUwY2JlLi4wZmY1ZDQwNThlMjA3YzFkMGIyOWYyMThiMDI5MTJjZmNiNWI5MGYw
IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9mYXN0L2RvbS9yZXNvdXJjZXMvc2hhZG93LXRlc3Qt
ZHJpdmVyLmpzCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZG9tL3Jlc291cmNlcy9zaGFkb3ctdGVz
dC1kcml2ZXIuanMKQEAgLTUzLDkgKzUzLDExIEBAIGZ1bmN0aW9uIGNoZWNrKCkgewogICAgIH0K
IH0KIAotZnVuY3Rpb24gY3JlYXRlU3BhbldpdGhUZXh0KHRleHQpIHsKK2Z1bmN0aW9uIGNyZWF0
ZVNwYW5XaXRoVGV4dCh0ZXh0LCBjbGFzc05hbWUpIHsKICAgICB2YXIgc3BhbiA9IGRvY3VtZW50
LmNyZWF0ZUVsZW1lbnQoJ3NwYW4nKTsKICAgICBzcGFuLmFwcGVuZENoaWxkKGRvY3VtZW50LmNy
ZWF0ZVRleHROb2RlKHRleHQpKTsKKyAgICBpZiAoY2xhc3NOYW1lKQorICAgICAgICBzcGFuLmNs
YXNzTmFtZSA9IGNsYXNzTmFtZTsKICAgICByZXR1cm4gc3BhbjsKIH0KIApAQCAtMTE4LDExICsx
MjAsMTYgQEAgZnVuY3Rpb24gZG9UZXN0SWZMZWZ0KHJlc3RUZXN0cykgewogCiBmdW5jdGlvbiBk
b25lVGVzdCgpIHsKICAgICBsb2coIlRFU1QgQ09NUExFVEVEIik7CisgICAgaWYgKHdpbmRvdy50
ZWFyRG93bk9uY2UpCisgICAgICAgIHdpbmRvdy50ZWFyRG93bk9uY2UoKTsKICAgICBsYXlvdXRU
ZXN0Q29udHJvbGxlci5ub3RpZnlEb25lKCk7CiB9CiAKIC8vIEEgdGVzdCBkcml2ZXIuIENhbGwg
dGhpcyBib2R5Lm9ubG9hZC4KIGZ1bmN0aW9uIGRvVGVzdCh0ZXN0cykgeworICAgIGlmICh3aW5k
b3cuc2V0VXBPbmNlKQorICAgICAgICB3aW5kb3cuc2V0VXBPbmNlKCk7CisKICAgICBpZiAod2lu
ZG93LmxheW91dFRlc3RDb250cm9sbGVyKSB7CiAgICAgICAgIGxheW91dFRlc3RDb250cm9sbGVy
LndhaXRVbnRpbERvbmUoKTsKICAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4
dCgpOwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9kb20vc2hhZG93L211bHRpcGxlLXNo
YWRvd3Jvb3QtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvZmFzdC9kb20vc2hhZG93L211bHRp
cGxlLXNoYWRvd3Jvb3QtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmFhM2RlZGRjODU1NmNkN2Nl
MmJkNzViNjE1NTNmYzUwZTU4Nzc1ZjMKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9m
YXN0L2RvbS9zaGFkb3cvbXVsdGlwbGUtc2hhZG93cm9vdC1leHBlY3RlZC50eHQKQEAgLTAsMCAr
MSwxNyBAQAorVGhpcyB0ZXN0IGVuc3VyZSB0aGF0IHRoZSBtdWx0aXBsZSBzaGFkb3cgcm9vdCBp
cyBhdmFpbGFibGUuCisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFT
UyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KKworCitQQVNTIGludGVy
bmFscy5zaGFkb3dSb290KGRpdikgaXMgbnVsbAorUEFTUyBpbnRlcm5hbHMuc2hhZG93Um9vdChk
aXYpIGlzIHNoYWRvd1Jvb3QxCitQQVNTIGludGVybmFscy5vbGRlclNoYWRvd1Jvb3Qoc2hhZG93
Um9vdDEpIGlzIG51bGwKK1BBU1MgaW50ZXJuYWxzLnNoYWRvd1Jvb3QoZGl2KSBpcyBzaGFkb3dS
b290MgorUEFTUyBpbnRlcm5hbHMub2xkZXJTaGFkb3dSb290KHNoYWRvd1Jvb3QyKSBpcyBzaGFk
b3dSb290MQorUEFTUyBpbnRlcm5hbHMuc2hhZG93Um9vdChkaXYpIGlzIHNoYWRvd1Jvb3QzCitQ
QVNTIGludGVybmFscy5vbGRlclNoYWRvd1Jvb3Qoc2hhZG93Um9vdDMpIGlzIHNoYWRvd1Jvb3Qy
CitQQVNTIGludGVybmFscy5zaGFkb3dSb290KGRpdikgaXMgbnVsbAorUEFTUyBzdWNjZXNzZnVs
bHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisKZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2Zhc3QvZG9tL3NoYWRvdy9tdWx0aXBsZS1zaGFkb3dyb290LXJlbmRlcmluZy1leHBlY3Rl
ZC50eHQgYi9MYXlvdXRUZXN0cy9mYXN0L2RvbS9zaGFkb3cvbXVsdGlwbGUtc2hhZG93cm9vdC1y
ZW5kZXJpbmctZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjg0MGM3ZjBlOWI1OWRmNjQ0MGUzMzNj
ZDEyODE5NTBlNDc2MTNiNTUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2Rv
bS9zaGFkb3cvbXVsdGlwbGUtc2hhZG93cm9vdC1yZW5kZXJpbmctZXhwZWN0ZWQudHh0CkBAIC0w
LDAgKzEsMTAgQEAKK3Rlc3REb3VibGVTaGFkb3dTdWJ0cmVlcworUEFTUwordGVzdFRyaXBsZVNo
YWRvd1N1YnRyZWVzCitQQVNTCit0ZXN0U2hhZG93U3VidHJlZXNXaXRoQ29udGVudAorUEFTUwor
dGVzdFNoYWRvd1N1YnRyZWVzV2l0aENvbnRlbnRJbk9sZGVyU3VidHJlZQorUEFTUworVEVTVCBD
T01QTEVURUQKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9kb20vc2hhZG93L211bHRp
cGxlLXNoYWRvd3Jvb3QtcmVuZGVyaW5nLmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L2RvbS9zaGFk
b3cvbXVsdGlwbGUtc2hhZG93cm9vdC1yZW5kZXJpbmcuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4xZWJkZTI2
Mzk5NmU4NmNkYTNlZDU2YWMxODM0NTVhMjkwZWRjZjNmCi0tLSAvZGV2L251bGwKKysrIGIvTGF5
b3V0VGVzdHMvZmFzdC9kb20vc2hhZG93L211bHRpcGxlLXNoYWRvd3Jvb3QtcmVuZGVyaW5nLmh0
bWwKQEAgLTAsMCArMSwxNzQgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKzxz
dHlsZT4KKy8qIHJlbGF0aXZlIHBvc2l0aW9uaW5nIGVuc3VyZXMgdW5kZXJseWluZyBSZW5kZXJM
YXllciAqLworLmNvbnRhaW5lciB7CisgICAgcG9zaXRpb246IHJlbGF0aXZlOworfQorCisuc3Bh
biB7CisgICAgZGlzcGxheTogYm94ZWQtaW5saW5lOworICAgIG1hcmdpbjogMnB4OworICAgIGJv
cmRlcjogc29saWQ7Cit9Cis8L3N0eWxlPgorPHNjcmlwdCBzcmM9Ii4uL3Jlc291cmNlcy9zaGFk
b3ctdGVzdC1kcml2ZXIuanMiPjwvc2NyaXB0PgorPHNjcmlwdD4KK2Z1bmN0aW9uIHNldFVwT25j
ZSgpIHsKKyAgICBpbnRlcm5hbHMuc2V0TXVsdGlwbGVTaGFkb3dTdWJ0cmVlc0VuYWJsZWQodHJ1
ZSk7Cit9CisKK2Z1bmN0aW9uIHRlYXREb3duT25jZSgpIHsKKyAgICBpbnRlcm5hbHMuc2V0TXVs
dGlwbGVTaGFkb3dTdWJ0cmVlc0VuYWJsZWQoZmFsc2UpOworfQorCit2YXIgdGVzdEZ1bmNzID0g
W107CisKK3Rlc3RGdW5jcy5wdXNoKGZ1bmN0aW9uIHRlc3REb3VibGVTaGFkb3dTdWJ0cmVlcyhj
YWxsSWZEb25lKSB7CisgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2V4cGVjdC1jb250YWlu
ZXInKS5pbm5lckhUTUwgPSAiPGRpdj48c3Bhbj5CRUZPUkU8L3NwYW4+PHNwYW4+TUlEPC9zcGFu
PjxzcGFuPkFGVEVSPC9zcGFuPjwvZGl2PiI7CisKKyAgICB2YXIgcm9vdCA9IGRvY3VtZW50LmNy
ZWF0ZUVsZW1lbnQoJ2RpdicpOworICAgIHJvb3QuYXBwZW5kQ2hpbGQoY3JlYXRlU3BhbldpdGhU
ZXh0KCdMSUdIVCcpKTsKKworICAgIHZhciBzcjEgPSBuZXcgV2ViS2l0U2hhZG93Um9vdChyb290
KTsKKyAgICBzcjEuYXBwZW5kQ2hpbGQoY3JlYXRlU3BhbldpdGhUZXh0KCdCRUZPUkU6IFNIT1VM
RCBOT1QgQkUgUkVOREVSRUQnKSk7CisgICAgc3IxLmFwcGVuZENoaWxkKGNyZWF0ZVNwYW5XaXRo
VGV4dCgnTUlEOiBTSE9VTEQgTk9UIEJFIFJFTkRFUkVEJykpOworICAgIHNyMS5hcHBlbmRDaGls
ZChjcmVhdGVTcGFuV2l0aFRleHQoJ0FGVEVSOiBTSE9VTEQgTk9UIEJFIFJFTkRFUkVEJykpOwor
CisgICAgdmFyIHNyMiA9IG5ldyBXZWJLaXRTaGFkb3dSb290KHJvb3QpOworICAgIHNyMi5hcHBl
bmRDaGlsZChjcmVhdGVTcGFuV2l0aFRleHQoJ0JFRk9SRScpKTsKKyAgICBzcjIuYXBwZW5kQ2hp
bGQoY3JlYXRlU3BhbldpdGhUZXh0KCdNSUQnKSk7CisgICAgc3IyLmFwcGVuZENoaWxkKGNyZWF0
ZVNwYW5XaXRoVGV4dCgnQUZURVInKSk7CisKKyAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgn
YWN0dWFsLWNvbnRhaW5lcicpLmFwcGVuZENoaWxkKHJvb3QpOworCisgICAgY2FsbElmRG9uZSgp
OworfSk7CisKK3Rlc3RGdW5jcy5wdXNoKGZ1bmN0aW9uIHRlc3RUcmlwbGVTaGFkb3dTdWJ0cmVl
cyhjYWxsSWZEb25lKSB7CisgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2V4cGVjdC1jb250
YWluZXInKS5pbm5lckhUTUwgPSAiPGRpdj48c3Bhbj5CRUZPUkU8L3NwYW4+PHNwYW4+TUlEPC9z
cGFuPjxzcGFuPkFGVEVSPC9zcGFuPjwvZGl2PiI7CisKKyAgICB2YXIgcm9vdCA9IGRvY3VtZW50
LmNyZWF0ZUVsZW1lbnQoJ2RpdicpOworICAgIHJvb3QuYXBwZW5kQ2hpbGQoY3JlYXRlU3Bhbldp
dGhUZXh0KCdMSUdIVCcpKTsKKworICAgIHZhciBzcjEgPSBuZXcgV2ViS2l0U2hhZG93Um9vdChy
b290KTsKKyAgICBzcjEuYXBwZW5kQ2hpbGQoY3JlYXRlU3BhbldpdGhUZXh0KCdCRUZPUkU6IFNI
T1VMRCBOT1QgQkUgUkVOREVSRUQnKSk7CisgICAgc3IxLmFwcGVuZENoaWxkKGNyZWF0ZVNwYW5X
aXRoVGV4dCgnTUlEOiBTSE9VTEQgTk9UIEJFIFJFTkRFUkVEJykpOworICAgIHNyMS5hcHBlbmRD
aGlsZChjcmVhdGVTcGFuV2l0aFRleHQoJ0FGVEVSOiBTSE9VTEQgTk9UIEJFIFJFTkRFUkVEJykp
OworCisgICAgdmFyIHNyMiA9IG5ldyBXZWJLaXRTaGFkb3dSb290KHJvb3QpOworICAgIHNyMi5h
cHBlbmRDaGlsZChjcmVhdGVTcGFuV2l0aFRleHQoJ0JFRk9SRTogU0hPVUxEIE5PVCBCRSBSRU5E
RVJFRCcpKTsKKyAgICBzcjIuYXBwZW5kQ2hpbGQoY3JlYXRlU3BhbldpdGhUZXh0KCdNSUQ6IFNI
T1VMRCBOT1QgQkUgUkVOREVSRUQnKSk7CisgICAgc3IyLmFwcGVuZENoaWxkKGNyZWF0ZVNwYW5X
aXRoVGV4dCgnQUZURVI6IFNIT1VMRCBOT1QgQkUgUkVOREVSRUQnKSk7CisKKyAgICB2YXIgc3Iz
ID0gbmV3IFdlYktpdFNoYWRvd1Jvb3Qocm9vdCk7CisgICAgc3IzLmFwcGVuZENoaWxkKGNyZWF0
ZVNwYW5XaXRoVGV4dCgnQkVGT1JFJykpOworICAgIHNyMy5hcHBlbmRDaGlsZChjcmVhdGVTcGFu
V2l0aFRleHQoJ01JRCcpKTsKKyAgICBzcjMuYXBwZW5kQ2hpbGQoY3JlYXRlU3BhbldpdGhUZXh0
KCdBRlRFUicpKTsKKworICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdhY3R1YWwtY29udGFp
bmVyJykuYXBwZW5kQ2hpbGQocm9vdCk7CisKKyAgICBjYWxsSWZEb25lKCk7Cit9KTsKKwordGVz
dEZ1bmNzLnB1c2goZnVuY3Rpb24gdGVzdFNoYWRvd1N1YnRyZWVzV2l0aENvbnRlbnQoY2FsbElm
RG9uZSkgeworICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdleHBlY3QtY29udGFpbmVyJyku
aW5uZXJIVE1MID0gIjxkaXY+PHNwYW4+QkVGT1JFPC9zcGFuPjxzcGFuPkxJR0hUPC9zcGFuPjxz
cGFuPkFGVEVSPC9zcGFuPjwvZGl2PiI7CisKKyAgICB2YXIgcm9vdCA9IGRvY3VtZW50LmNyZWF0
ZUVsZW1lbnQoJ2RpdicpOworICAgIHJvb3QuYXBwZW5kQ2hpbGQoY3JlYXRlU3BhbldpdGhUZXh0
KCdMSUdIVCcpKTsKKworICAgIHZhciBzcjEgPSBuZXcgV2ViS2l0U2hhZG93Um9vdChyb290KTsK
KyAgICBzcjEuYXBwZW5kQ2hpbGQoY3JlYXRlU3BhbldpdGhUZXh0KCdCRUZPUkU6IFNIT1VMRCBO
T1QgQkUgUkVOREVSRUQnKSk7CisgICAgc3IxLmFwcGVuZENoaWxkKGNyZWF0ZVNwYW5XaXRoVGV4
dCgnTUlEOiBTSE9VTEQgTk9UIEJFIFJFTkRFUkVEJykpOworICAgIHNyMS5hcHBlbmRDaGlsZChj
cmVhdGVTcGFuV2l0aFRleHQoJ0FGVEVSOiBTSE9VTEQgTk9UIEJFIFJFTkRFUkVEJykpOworCisg
ICAgdmFyIHNyMiA9IG5ldyBXZWJLaXRTaGFkb3dSb290KHJvb3QpOworICAgIHNyMi5hcHBlbmRD
aGlsZChjcmVhdGVTcGFuV2l0aFRleHQoJ0JFRk9SRScpKTsKKyAgICBzcjIuYXBwZW5kQ2hpbGQo
Y3JlYXRlQ29udGVudFdpdGhTZWxlY3QoJ3NwYW4nLCAnRkFMTEJBQ0snKSk7CisgICAgc3IyLmFw
cGVuZENoaWxkKGNyZWF0ZVNwYW5XaXRoVGV4dCgnQUZURVInKSk7CisKKyAgICBkb2N1bWVudC5n
ZXRFbGVtZW50QnlJZCgnYWN0dWFsLWNvbnRhaW5lcicpLmFwcGVuZENoaWxkKHJvb3QpOworCisg
ICAgY2FsbElmRG9uZSgpOworfSk7CisKK3Rlc3RGdW5jcy5wdXNoKGZ1bmN0aW9uIHRlc3RTaGFk
b3dTdWJ0cmVlc1dpdGhDb250ZW50SW5PbGRlclN1YnRyZWUoY2FsbElmRG9uZSkgeworICAgIGRv
Y3VtZW50LmdldEVsZW1lbnRCeUlkKCdleHBlY3QtY29udGFpbmVyJykuaW5uZXJIVE1MID0gIjxk
aXY+PHNwYW4+QkVGT1JFPC9zcGFuPjxzcGFuPkxJR0hUIDE8L3NwYW4+PHNwYW4+QUZURVI8L3Nw
YW4+PC9kaXY+IjsKKworICAgIHZhciByb290ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2
Jyk7CisgICAgcm9vdC5hcHBlbmRDaGlsZChjcmVhdGVTcGFuV2l0aFRleHQoJ0xJR0hUIDEnLCAn
YzEnKSk7CisgICAgcm9vdC5hcHBlbmRDaGlsZChjcmVhdGVTcGFuV2l0aFRleHQoJ0xJR0hUIDIn
LCAnYzInKSk7CisKKyAgICB2YXIgc3IxID0gbmV3IFdlYktpdFNoYWRvd1Jvb3Qocm9vdCk7Cisg
ICAgc3IxLmFwcGVuZENoaWxkKGNyZWF0ZVNwYW5XaXRoVGV4dCgnQkVGT1JFOiBTSE9VTEQgTk9U
IEJFIFJFTkRFUkVEJykpOworICAgIHNyMS5hcHBlbmRDaGlsZChjcmVhdGVDb250ZW50V2l0aFNl
bGVjdCgnLmMyJywgJ0ZBTExCQUNLJykpOworICAgIHNyMS5hcHBlbmRDaGlsZChjcmVhdGVTcGFu
V2l0aFRleHQoJ0FGVEVSOiBTSE9VTEQgTk9UIEJFIFJFTkRFUkVEJykpOworCisgICAgdmFyIHNy
MiA9IG5ldyBXZWJLaXRTaGFkb3dSb290KHJvb3QpOworICAgIHNyMi5hcHBlbmRDaGlsZChjcmVh
dGVTcGFuV2l0aFRleHQoJ0JFRk9SRScpKTsKKyAgICBzcjIuYXBwZW5kQ2hpbGQoY3JlYXRlQ29u
dGVudFdpdGhTZWxlY3QoJy5jMScsICdGQUxMQkFDSycpKTsKKyAgICBzcjIuYXBwZW5kQ2hpbGQo
Y3JlYXRlU3BhbldpdGhUZXh0KCdBRlRFUicpKTsKKworICAgIGRvY3VtZW50LmdldEVsZW1lbnRC
eUlkKCdhY3R1YWwtY29udGFpbmVyJykuYXBwZW5kQ2hpbGQocm9vdCk7CisKKyAgICBjYWxsSWZE
b25lKCk7Cit9KTsKKwordGVzdEZ1bmNzLnB1c2goZnVuY3Rpb24gdGVzdFNoYWRvd1N1YnRyZWVz
V2l0aER5bmFtaWNDcmVhdGlvbihjYWxsSWZEb25lKSB7CisgICAgZG9jdW1lbnQuZ2V0RWxlbWVu
dEJ5SWQoJ2V4cGVjdC1jb250YWluZXInKS5pbm5lckhUTUwgPSAiPGRpdj48c3Bhbj5CRUZPUkU8
L3NwYW4+PHNwYW4+TElHSFQgMTwvc3Bhbj48c3Bhbj5MSUdIVCAyPC9zcGFuPjxzcGFuPkFGVEVS
PC9zcGFuPjwvZGl2PiI7CisKKyAgICB2YXIgcm9vdCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQo
J2RpdicpOworICAgIHJvb3QuYXBwZW5kQ2hpbGQoY3JlYXRlU3BhbldpdGhUZXh0KCdMSUdIVCAx
JywgJ2MxJykpOworICAgIHJvb3QuYXBwZW5kQ2hpbGQoY3JlYXRlU3BhbldpdGhUZXh0KCdMSUdI
VCAyJywgJ2MyJykpOworCisgICAgdmFyIHNyMSA9IG5ldyBXZWJLaXRTaGFkb3dSb290KHJvb3Qp
OworICAgIHNyMS5hcHBlbmRDaGlsZChjcmVhdGVTcGFuV2l0aFRleHQoJ0JFRk9SRTogU0hPVUxE
IE5PVCBCRSBSRU5ERVJFRCcpKTsKKyAgICBzcjEuYXBwZW5kQ2hpbGQoY3JlYXRlQ29udGVudFdp
dGhTZWxlY3QoJ3NwYW4nLCAnRkFMTEJBQ0snKSk7CisgICAgc3IxLmFwcGVuZENoaWxkKGNyZWF0
ZVNwYW5XaXRoVGV4dCgnQUZURVI6IFNIT1VMRCBOT1QgQkUgUkVOREVSRUQnKSk7CisKKyAgICBk
b2N1bWVudC5nZXRFbGVtZW50QnlJZCgnYWN0dWFsLWNvbnRhaW5lcicpLmFwcGVuZENoaWxkKHJv
b3QpOworCisgICAgc2V0VGltZW91dCgoZnVuY3Rpb24oY2FsbElmRG9uZSwgcm9vdCkgeyByZXR1
cm4gZnVuY3Rpb24oKSB7CisgICAgICAgIHZhciBzcjIgPSBuZXcgV2ViS2l0U2hhZG93Um9vdChy
b290KTsKKyAgICAgICAgc3IyLmFwcGVuZENoaWxkKGNyZWF0ZVNwYW5XaXRoVGV4dCgnQkVGT1JF
JykpOworICAgICAgICBzcjIuYXBwZW5kQ2hpbGQoY3JlYXRlQ29udGVudFdpdGhTZWxlY3QoJ3Nw
YW4nLCAnRkFMTEJBQ0snKSk7CisgICAgICAgIHNyMi5hcHBlbmRDaGlsZChjcmVhdGVTcGFuV2l0
aFRleHQoJ0FGVEVSJykpOworCisgICAgICAgIGNhbGxJZkRvbmUoKTsKKyAgICB9O30pKGNhbGxJ
ZkRvbmUsIHJvb3QpLCAwKTsKK30pOworCit0ZXN0RnVuY3MucHVzaChmdW5jdGlvbiB0ZXN0U2hh
ZG93U3VidHJlZXNXaXRoRHluYW1pY0NyZWF0aW9uT3V0T2ZUcmVlKGNhbGxJZkRvbmUpIHsKKyAg
ICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZXhwZWN0LWNvbnRhaW5lcicpLmlubmVySFRNTCA9
ICI8ZGl2PjxzcGFuPkJFRk9SRTwvc3Bhbj48c3Bhbj5MSUdIVCAxPC9zcGFuPjxzcGFuPkxJR0hU
IDI8L3NwYW4+PHNwYW4+QUZURVI8L3NwYW4+PC9kaXY+IjsKKworICAgIHZhciByb290ID0gZG9j
dW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7CisgICAgcm9vdC5hcHBlbmRDaGlsZChjcmVhdGVT
cGFuV2l0aFRleHQoJ0xJR0hUIDEnLCAnYzEnKSk7CisgICAgcm9vdC5hcHBlbmRDaGlsZChjcmVh
dGVTcGFuV2l0aFRleHQoJ0xJR0hUIDInLCAnYzInKSk7CisKKyAgICB2YXIgc3IxID0gbmV3IFdl
YktpdFNoYWRvd1Jvb3Qocm9vdCk7CisgICAgc3IxLmFwcGVuZENoaWxkKGNyZWF0ZVNwYW5XaXRo
VGV4dCgnQkVGT1JFOiBTSE9VTEQgTk9UIEJFIFJFTkRFUkVEJykpOworICAgIHNyMS5hcHBlbmRD
aGlsZChjcmVhdGVDb250ZW50V2l0aFNlbGVjdCgnc3BhbicsICdGQUxMQkFDSycpKTsKKyAgICBz
cjEuYXBwZW5kQ2hpbGQoY3JlYXRlU3BhbldpdGhUZXh0KCdBRlRFUjogU0hPVUxEIE5PVCBCRSBS
RU5ERVJFRCcpKTsKKworICAgIHNldFRpbWVvdXQoKGZ1bmN0aW9uKGNhbGxJZkRvbmUsIHJvb3Qp
IHsgcmV0dXJuIGZ1bmN0aW9uKCkgeworICAgICAgICB2YXIgc3IyID0gbmV3IFdlYktpdFNoYWRv
d1Jvb3Qocm9vdCk7CisgICAgICAgIHNyMi5hcHBlbmRDaGlsZChjcmVhdGVTcGFuV2l0aFRleHQo
J0JFRk9SRScpKTsKKyAgICAgICAgc3IyLmFwcGVuZENoaWxkKGNyZWF0ZUNvbnRlbnRXaXRoU2Vs
ZWN0KCdzcGFuJywgJ0ZBTExCQUNLJykpOworICAgICAgICBzcjIuYXBwZW5kQ2hpbGQoY3JlYXRl
U3BhbldpdGhUZXh0KCdBRlRFUicpKTsKKworICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJ
ZCgnYWN0dWFsLWNvbnRhaW5lcicpLmFwcGVuZENoaWxkKHJvb3QpOworCisgICAgICAgIGNhbGxJ
ZkRvbmUoKTsKKyAgICB9O30pKGNhbGxJZkRvbmUsIHJvb3QpLCAwKTsKK30pOworPC9zY3JpcHQ+
Cis8L2hlYWQ+Cis8Ym9keSBvbmxvYWQ9ImRvVGVzdCh0ZXN0RnVuY3MpIj4KKworPGRpdiBpZD0i
YWN0dWFsLWNvbnRhaW5lciIgY2xhc3M9ImNvbnRhaW5lciI+PC9kaXY+Cis8ZGl2IGlkPSJleHBl
Y3QtY29udGFpbmVyIiBjbGFzcz0iY29udGFpbmVyIj48L2Rpdj4KKzxwcmUgaWQ9ImNvbnNvbGUi
PjwvcHJlPgorCis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0
L2RvbS9zaGFkb3cvbXVsdGlwbGUtc2hhZG93cm9vdC5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9k
b20vc2hhZG93L211bHRpcGxlLXNoYWRvd3Jvb3QuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40MDliZWMwNzZh
ZTNiMWZjZDEyZTk3NDg0NDM2NjJjODA4MTBiZGZiCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0
VGVzdHMvZmFzdC9kb20vc2hhZG93L211bHRpcGxlLXNoYWRvd3Jvb3QuaHRtbApAQCAtMCwwICsx
LDM1IEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8c2NyaXB0IHNyYz0iLi4v
Li4vanMvcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5
PgorPHNjcmlwdD4KK2Rlc2NyaXB0aW9uKCJUaGlzIHRlc3QgZW5zdXJlIHRoYXQgdGhlIG11bHRp
cGxlIHNoYWRvdyByb290IGlzIGF2YWlsYWJsZS4iKTsKKworaW50ZXJuYWxzLnNldE11bHRpcGxl
U2hhZG93U3VidHJlZXNFbmFibGVkKHRydWUpOworCit2YXIgZGl2ID0gZG9jdW1lbnQuY3JlYXRl
RWxlbWVudCgnZGl2Jyk7CitzaG91bGRCZSgiaW50ZXJuYWxzLnNoYWRvd1Jvb3QoZGl2KSIsICJu
dWxsIik7Cit2YXIgc2hhZG93Um9vdDEgPSBuZXcgV2ViS2l0U2hhZG93Um9vdChkaXYpOworc2hv
dWxkQmUoImludGVybmFscy5zaGFkb3dSb290KGRpdikiLCAic2hhZG93Um9vdDEiKTsKK3Nob3Vs
ZEJlKCJpbnRlcm5hbHMub2xkZXJTaGFkb3dSb290KHNoYWRvd1Jvb3QxKSIsICJudWxsIik7CisK
K3ZhciBzaGFkb3dSb290MiA9IG5ldyBXZWJLaXRTaGFkb3dSb290KGRpdikKK3Nob3VsZEJlKCJp
bnRlcm5hbHMuc2hhZG93Um9vdChkaXYpIiwgInNoYWRvd1Jvb3QyIik7CitzaG91bGRCZSgiaW50
ZXJuYWxzLm9sZGVyU2hhZG93Um9vdChzaGFkb3dSb290MikiLCAic2hhZG93Um9vdDEiKTsKKwor
dmFyIHNoYWRvd1Jvb3QzID0gbmV3IFdlYktpdFNoYWRvd1Jvb3QoZGl2KTsKK3Nob3VsZEJlKCJp
bnRlcm5hbHMuc2hhZG93Um9vdChkaXYpIiwgInNoYWRvd1Jvb3QzIik7CitzaG91bGRCZSgiaW50
ZXJuYWxzLm9sZGVyU2hhZG93Um9vdChzaGFkb3dSb290MykiLCAic2hhZG93Um9vdDIiKTsKKwor
aW50ZXJuYWxzLnJlbW92ZVNoYWRvd1Jvb3QoZGl2KTsKK3Nob3VsZEJlKCJpbnRlcm5hbHMuc2hh
ZG93Um9vdChkaXYpIiwgIm51bGwiKTsKKworaW50ZXJuYWxzLnNldE11bHRpcGxlU2hhZG93U3Vi
dHJlZXNFbmFibGVkKGZhbHNlKTsKKwordmFyIHN1Y2Nlc3NmdWxseVBhcnNlZCA9IHRydWU7Cis8
L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9qcy9yZXNvdXJjZXMvanMtdGVzdC1wb3N0Lmpz
Ij48L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3Bs
YXRmb3JtL2VmbC9Ta2lwcGVkIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vZWZsL1NraXBwZWQKaW5k
ZXggNWE1MTI3Mjk3OGQ1OTYyNDdkNDc0Zjk3OWFhMmM3YWI2NGUyOTNiMi4uNjdmOGIzYThhMDY5
M2JiZGFjZDFhYTVmM2IyNGMxMWI1ODc0NGVlOCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvcGxh
dGZvcm0vZWZsL1NraXBwZWQKKysrIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vZWZsL1NraXBwZWQK
QEAgLTE5NzUsNiArMTk3NSw4IEBAIGZhc3QvY3NzL3N0eWxlLXNjb3BlZAogZmFzdC9kb20vc2hh
ZG93L3NoYWRvdy1yb290LWpzLWFwaS5odG1sCiBmYXN0L2RvbS9zaGFkb3cvc2hhZG93LWRpc2Fi
bGUuaHRtbAogZmFzdC9kb20vc2hhZG93L3NoYWRvdy1yb290LW5ldy5odG1sCitmYXN0L2RvbS9z
aGFkb3cvbXVsdGlwbGUtc2hhZG93cm9vdC5odG1sCitmYXN0L2RvbS9zaGFkb3cvbXVsdGlwbGUt
c2hhZG93cm9vdC1yZW5kZXJpbmcuaHRtbAogCiAjIENTUyBGaWx0ZXJzIHN1cHBvcnQgbm90IHll
dCBlbmFibGVkIChuZWVkcyBFTkFCTEVfQ1NTX0ZJTFRFUlMpLgogIyBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9Njg0NjkKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3Bs
YXRmb3JtL2d0ay9Ta2lwcGVkIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vZ3RrL1NraXBwZWQKaW5k
ZXggMzQ2YThmYjQ4ZTNhOTNjMGJjOTRlYjljODhmOTA4MDcxMGIxODM3OS4uZmY3NzUyN2I3ODI2
OGVjNDNiMWI3MmI3NjJmMTA0YzU0ODY5M2Q1ZCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvcGxh
dGZvcm0vZ3RrL1NraXBwZWQKKysrIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vZ3RrL1NraXBwZWQK
QEAgLTM1OCw2ICszNTgsOCBAQCBmYXN0L2Nzcy9zdHlsZS1zY29wZWQKIGZhc3QvZG9tL3NoYWRv
dy9zaGFkb3ctcm9vdC1qcy1hcGkuaHRtbAogZmFzdC9kb20vc2hhZG93L3NoYWRvdy1kaXNhYmxl
Lmh0bWwKIGZhc3QvZG9tL3NoYWRvdy9zaGFkb3ctcm9vdC1uZXcuaHRtbAorZmFzdC9kb20vc2hh
ZG93L211bHRpcGxlLXNoYWRvd3Jvb3QuaHRtbAorZmFzdC9kb20vc2hhZG93L211bHRpcGxlLXNo
YWRvd3Jvb3QtcmVuZGVyaW5nLmh0bWwKIAogIyBDU1MgUmVnaW9ucyBzdXBwb3J0IG5vdCB5ZXQg
ZW5hYmxlZC4gaHR0cDovL3dlYmtpdC5vcmcvYi81NzMxMgogZmFzdC9yZWdpb25zCmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvU2tpcHBlZCBiL0xheW91dFRlc3RzL3BsYXRm
b3JtL21hYy9Ta2lwcGVkCmluZGV4IDVjZGUzOWE5YzNhYzBhMmJkZDg1NDQwY2JkNWFmNmE3M2Zm
NDI4YjIuLjIxMWMzNDZjMGVlOTMxOGZkNjllM2Y3ZmVjYzQwZTFhYjdiN2VhMzMgMTAwNjQ0Ci0t
LSBhL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy9Ta2lwcGVkCisrKyBiL0xheW91dFRlc3RzL3Bs
YXRmb3JtL21hYy9Ta2lwcGVkCkBAIC00MjMsNiArNDIzLDggQEAgZmFzdC9jc3Mvc3R5bGUtc2Nv
cGVkCiBmYXN0L2RvbS9zaGFkb3cvc2hhZG93LXJvb3QtanMtYXBpLmh0bWwKIGZhc3QvZG9tL3No
YWRvdy9zaGFkb3ctZGlzYWJsZS5odG1sCiBmYXN0L2RvbS9zaGFkb3cvc2hhZG93LXJvb3QtbmV3
Lmh0bWwKK2Zhc3QvZG9tL3NoYWRvdy9tdWx0aXBsZS1zaGFkb3dyb290Lmh0bWwKK2Zhc3QvZG9t
L3NoYWRvdy9tdWx0aXBsZS1zaGFkb3dyb290LXJlbmRlcmluZy5odG1sCiAKICMgSlNDIGRvZXMg
bm90IHN1cHBvcnQgc2V0SXNvbGF0ZWRXb3JsZFNlY3VyaXR5T3JpZ2luIChodHRwOi8vd2Via2l0
Lm9yZy9iLzYxNTQwKQogaHR0cC90ZXN0cy9zZWN1cml0eS9pc29sYXRlZFdvcmxkL2Nyb3NzLW9y
aWdpbi14aHIuaHRtbApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vcXQvU2tpcHBl
ZCBiL0xheW91dFRlc3RzL3BsYXRmb3JtL3F0L1NraXBwZWQKaW5kZXggZjRjZWIyZjliODFiNGQ5
NzgxZTNjYWFjNWRkY2UzMjczN2I3ODRlZC4uZjY1YTRmNjRjYTI4NGUyMGY2NGU2ZjZhYzMyMTVi
ZmI0ZDcwMTkxYyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vcXQvU2tpcHBlZAor
KysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9xdC9Ta2lwcGVkCkBAIC0xNjIsNiArMTYyLDggQEAg
ZmFzdC9jc3Mvc3R5bGUtc2NvcGVkCiBmYXN0L2RvbS9zaGFkb3cvc2hhZG93LXJvb3QtanMtYXBp
Lmh0bWwKIGZhc3QvZG9tL3NoYWRvdy9zaGFkb3ctZGlzYWJsZS5odG1sCiBmYXN0L2RvbS9zaGFk
b3cvc2hhZG93LXJvb3QtbmV3Lmh0bWwKK2Zhc3QvZG9tL3NoYWRvdy9tdWx0aXBsZS1zaGFkb3dy
b290Lmh0bWwKK2Zhc3QvZG9tL3NoYWRvdy9tdWx0aXBsZS1zaGFkb3dyb290LXJlbmRlcmluZy5o
dG1sCiAKICMgQ1NTIFJlZ2lvbnMgc3VwcG9ydCBub3QgeWV0IGVuYWJsZWQuIGh0dHA6Ly93ZWJr
aXQub3JnL2IvNTczMTIKIGZhc3QvcmVnaW9ucwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxh
dGZvcm0vd2luL1NraXBwZWQgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS93aW4vU2tpcHBlZAppbmRl
eCBjOWM5MTdmZmRhZWY3ZGZiZjZiNmNjMWJjYTZmYzVjZjg2YmRlZjBjLi43MTAzMTkyZDIyMDkz
ZjlmOWE5YzNjM2JhOTFlMTI4NDBjNTBhOWQ1IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9wbGF0
Zm9ybS93aW4vU2tpcHBlZAorKysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS93aW4vU2tpcHBlZApA
QCAtMTQ1NCw2ICsxNDU0LDggQEAgZmFzdC9jc3Mvc3R5bGUtc2NvcGVkCiBmYXN0L2RvbS9zaGFk
b3cvc2hhZG93LXJvb3QtanMtYXBpLmh0bWwKIGZhc3QvZG9tL3NoYWRvdy9zaGFkb3ctZGlzYWJs
ZS5odG1sCiBmYXN0L2RvbS9zaGFkb3cvc2hhZG93LXJvb3QtbmV3Lmh0bWwKK2Zhc3QvZG9tL3No
YWRvdy9tdWx0aXBsZS1zaGFkb3dyb290Lmh0bWwKK2Zhc3QvZG9tL3NoYWRvdy9tdWx0aXBsZS1z
aGFkb3dyb290LXJlbmRlcmluZy5odG1sCiAKICMgQ1NTIFJlZ2lvbnMgc3VwcG9ydCBub3QgeWV0
IGVuYWJsZWQuIGh0dHA6Ly93ZWJraXQub3JnL2IvNTczMTIKIGZhc3QvcmVnaW9ucwpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vd2luY2Fpcm8vU2tpcHBlZCBiL0xheW91dFRlc3Rz
L3BsYXRmb3JtL3dpbmNhaXJvL1NraXBwZWQKaW5kZXggMmQyZGNjZjk0MmQ1YWIxYWU0OTkxYzFm
ODJlMmFmNzAzMDNhNmZiYy4uM2M2NWYzNmE1NTE0MTRjMTJhYTZiZTA0Yzk5MDI2ODc5ZDdlMWFl
ZCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vd2luY2Fpcm8vU2tpcHBlZAorKysg
Yi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS93aW5jYWlyby9Ta2lwcGVkCkBAIC0xOTY2LDYgKzE5NjYs
OCBAQCBmYXN0L2Nzcy9zdHlsZS1zY29wZWQKIGZhc3QvZG9tL3NoYWRvdy9zaGFkb3ctcm9vdC1q
cy1hcGkuaHRtbAogZmFzdC9kb20vc2hhZG93L3NoYWRvdy1kaXNhYmxlLmh0bWwKIGZhc3QvZG9t
L3NoYWRvdy9zaGFkb3ctcm9vdC1uZXcuaHRtbAorZmFzdC9kb20vc2hhZG93L211bHRpcGxlLXNo
YWRvd3Jvb3QuaHRtbAorZmFzdC9kb20vc2hhZG93L211bHRpcGxlLXNoYWRvd3Jvb3QtcmVuZGVy
aW5nLmh0bWwKIAogIyBDU1MgUmVnaW9ucyBzdXBwb3J0IG5vdCB5ZXQgZW5hYmxlZC4gaHR0cDov
L3dlYmtpdC5vcmcvYi81NzMxMgogZmFzdC9yZWdpb25zCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9wbGF0Zm9ybS93azIvU2tpcHBlZCBiL0xheW91dFRlc3RzL3BsYXRmb3JtL3drMi9Ta2lwcGVk
CmluZGV4IDgyYWY3OGVhNzZjZWJhODNlODBmZDBhZWU3Y2I2OTkzYjBmOWM0ZTIuLmQ4NTViYWIx
MGU2NjRlY2Y1NTc4OWNmYmQzMjEwZjgyMWE1MDdmMTIgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3Rz
L3BsYXRmb3JtL3drMi9Ta2lwcGVkCisrKyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL3drMi9Ta2lw
cGVkCkBAIC0xMDgxLDYgKzEwODEsOCBAQCBmYXN0L2RvbS9zaGFkb3cvY3JlYXRlLWNvbnRlbnQt
ZWxlbWVudC5odG1sCiBmYXN0L2RvbS9zaGFkb3cvc2hhZG93LXJvb3QtanMtYXBpLmh0bWwKIGZh
c3QvZG9tL3NoYWRvdy9zaGFkb3ctZGlzYWJsZS5odG1sCiBmYXN0L2RvbS9zaGFkb3cvc2hhZG93
LXJvb3QtbmV3Lmh0bWwKK2Zhc3QvZG9tL3NoYWRvdy9tdWx0aXBsZS1zaGFkb3dyb290Lmh0bWwK
K2Zhc3QvZG9tL3NoYWRvdy9tdWx0aXBsZS1zaGFkb3dyb290LXJlbmRlcmluZy5odG1sCiAKICMg
V1RSIG5lZWRzIGFuIGltcGxlbWVudGF0aW9uIGZvciBldmVudFNlbmRlci5jb250aW51b3VzTW91
c2VTY3JvbGxCeQogIyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9Njk0
MTcKZGlmZiAtLWdpdCBhL0NoYW5nZUxvZyBiL0NoYW5nZUxvZwppbmRleCA4YjYxMjJhN2QwZDdl
ZDE0MjlmYTBmOWQ5YTYyNjc0ZTRmYWM5YTFlLi5jOTJlYmQzYjRlOGRkZWY1NDcxYjc2NTdlMzAz
ZDFiZDJmNGVlMjkyIDEwMDY0NAotLS0gYS9DaGFuZ2VMb2cKKysrIGIvQ2hhbmdlTG9nCkBAIC0x
LDMgKzEsMTIgQEAKKzIwMTItMDItMTkgIFNoaW55YSBLYXdhbmFrYSAgPHNoaW55YWtAY2hyb21p
dW0ub3JnPgorCisgICAgICAgIEVsZW1lbnQgc2hvdWxkIGJlIGFibGUgdG8gaGF2ZSBtdWx0aXBs
ZSBzaGFkb3cgcm9vdHMuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD03NzkzMQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgICogU291cmNlL2F1dG90b29scy9zeW1ib2xzLmZpbHRlcjoKKwogMjAxMi0wMi0xOSAg
R3VzdGF2byBOb3JvbmhhIFNpbHZhICA8Z25zQGdub21lLm9yZz4KIAogICAgICAgICBbR1RLXSBS
ZW1vdmUgdW51c2VkIEdTZXR0aW5ncyBzdHVmZgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>128434</attachid>
            <date>2012-02-23 01:50:26 -0800</date>
            <delta_ts>2012-02-23 22:22:05 -0800</delta_ts>
            <desc>WIP</desc>
            <filename>bug-77931-20120223185025.patch</filename>
            <type>text/plain</type>
            <size>46721</size>
            <attacher name="Shinya Kawanaka">shinyak</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTA4NjEwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9X
ZWJDb3JlLmV4cC5pbiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZXhwLmluCmluZGV4IDBkMjg3
NzFkOTA3NjM2YTY0NmJjZTllNWI1OTJjNGJlODRhY2UxMjIuLjkzNmU0ZDJkNjk3NWJkNjQzYTVl
YmQ2ZTNmMmRhZmQzYTg2YTQ0Y2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUu
ZXhwLmluCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZXhwLmluCkBAIC05MTAsNyArOTEw
LDcgQEAgX19aTjdXZWJDb3JlNldpZGdldEQyRXYKIF9fWk43V2ViQ29yZTZ0b05vZGVFTjNKU0M3
SlNWYWx1ZUUKIF9fWk43V2ViQ29yZTdDb25zb2xlMjFzaG91bGRQcmludEV4Y2VwdGlvbnNFdgog
X19aTjdXZWJDb3JlN0NvbnNvbGUyNHNldFNob3VsZFByaW50RXhjZXB0aW9uc0ViCi1fX1pON1dl
YkNvcmU3RWxlbWVudDE2cmVtb3ZlU2hhZG93Um9vdEV2CitfX1pON1dlYkNvcmU3RWxlbWVudDIw
cmVtb3ZlU2hhZG93Um9vdExpc3RFdgogX19aTjdXZWJDb3JlN0VsZW1lbnQyMWJvdW5kc0luUm9v
dFZpZXdTcGFjZUV2CiBfX1pON1dlYkNvcmU3RWxlbWVudDlpbm5lclRleHRFdgogX19aTjdXZWJD
b3JlN0ludFJlY3Q1c2NhbGVFZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1l
bnQuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuY3BwCmluZGV4IDlmMjYxOTU3MjQy
MWRhMzhjMzllYjFjMThiZDkzY2U3NjM4NWI5YTMuLjkyYTg1YWI3N2U3MjM4NWEyM2UzMmJlNjk3
YjMyNjEwYTE2MGY1ZjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5jcHAKQEAgLTc2LDYgKzc2LDEwIEBA
CiAjaW5jbHVkZSAiU1ZHTmFtZXMuaCIKICNlbmRpZgogCisjaWYgRU5BQkxFKFNIQURPV19ET00p
CisjaW5jbHVkZSAiUnVudGltZUVuYWJsZWRGZWF0dXJlcy5oIgorI2VuZGlmCisKIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIAogdXNpbmcgbmFtZXNwYWNlIEhUTUxOYW1lczsKQEAgLTEyMiw3ICsxMjYs
NyBAQCBQYXNzUmVmUHRyPEVsZW1lbnQ+IEVsZW1lbnQ6OmNyZWF0ZShjb25zdCBRdWFsaWZpZWRO
YW1lJiB0YWdOYW1lLCBEb2N1bWVudCogZG9jdQogCiBFbGVtZW50Ojp+RWxlbWVudCgpCiB7Ci0g
ICAgcmVtb3ZlU2hhZG93Um9vdCgpOworICAgIHJlbW92ZVNoYWRvd1Jvb3RMaXN0KCk7CiAgICAg
aWYgKG1fYXR0cmlidXRlTWFwKQogICAgICAgICBtX2F0dHJpYnV0ZU1hcC0+ZGV0YWNoRnJvbUVs
ZW1lbnQoKTsKIH0KQEAgLTkzMCw3ICs5MzQsNyBAQCB2b2lkIEVsZW1lbnQ6OmF0dGFjaCgpCiAg
ICAgICAgIHBhcmVudFB1c2hlci5wdXNoKCk7CiAgICAgICAgIHNoYWRvd1Jvb3RMaXN0KCktPmF0
dGFjaCgpOwogCi0gICAgICAgIC8vIEluIGEgc2hhZG93IHRyZWUsIHNvbWUgb2YgbGlnaHQgY2hp
bGRyZW4gbWF5IGJlIGF0dGFjaGVkIGJ5ICdjb250ZW50JyBlbGVtZW50LgorICAgICAgICAvLyBJ
biBhIHNoYWRvdyB0cmVlLCBzb21lIG9mIGxpZ2h0IGNoaWxkcmVuIG1heSBiZSBhdHRhY2hlZCBi
eSA8Y29udGVudD4gb3IgPHNoYWRvdz4uCiAgICAgICAgIC8vIEhvd2V2ZXIsIHdoZW4gdGhlcmUg
aXMgbm8gY29udGVudCBlbGVtZW50IG9yIGNvbnRlbnQgZWxlbWVudCBkb2VzIG5vdCBzZWxlY3QK
ICAgICAgICAgLy8gYWxsIGxpZ2h0IGNoaWxkcmVuLCB3ZSBoYXZlIHRvIGF0dGFjaCB0aGUgcmVz
dCBvZiBsaWdodCBjaGlsZHJlbiBoZXJlLgogICAgICAgICBmb3IgKE5vZGUqIGNoaWxkID0gZmly
c3RDaGlsZCgpOyBjaGlsZDsgY2hpbGQgPSBjaGlsZC0+bmV4dFNpYmxpbmcoKSkgewpAQCAtMTEy
NiwxMCArMTEzMCwxMCBAQCB2b2lkIEVsZW1lbnQ6OnJlY2FsY1N0eWxlKFN0eWxlQ2hhbmdlIGNo
YW5nZSkKICAgICB9CiAgICAgLy8gRklYTUU6IFRoaXMgZG9lcyBub3QgY2FyZSBhYm91dCBzaWJs
aW5nIGNvbWJpbmF0b3JzLiBXaWxsIGJlIG5lY2Vzc2FyeSBpbiBYQkwyIHdvcmxkLgogICAgIGlm
IChoYXNTaGFkb3dSb290KCkpIHsKLSAgICAgICAgU2hhZG93Um9vdCogc2hhZG93ID0gc2hhZG93
Um9vdExpc3QoKS0+eW91bmdlc3RTaGFkb3dSb290KCk7Ci0gICAgICAgIGlmIChjaGFuZ2UgPj0g
SW5oZXJpdCB8fCBzaGFkb3ctPmNoaWxkTmVlZHNTdHlsZVJlY2FsYygpIHx8IHNoYWRvdy0+bmVl
ZHNTdHlsZVJlY2FsYygpKSB7CisgICAgICAgIFNoYWRvd1Jvb3RMaXN0KiBsaXN0ID0gc2hhZG93
Um9vdExpc3QoKTsKKyAgICAgICAgaWYgKGNoYW5nZSA+PSBJbmhlcml0IHx8IGxpc3QtPmNoaWxk
TmVlZHNTdHlsZVJlY2FsYygpIHx8IGxpc3QtPm5lZWRzU3R5bGVSZWNhbGMoKSkgewogICAgICAg
ICAgICAgcGFyZW50UHVzaGVyLnB1c2goKTsKLSAgICAgICAgICAgIHNoYWRvdy0+cmVjYWxjU2hh
ZG93VHJlZVN0eWxlKGNoYW5nZSk7CisgICAgICAgICAgICBsaXN0LT5yZWNhbGNTaGFkb3dUcmVl
U3R5bGUoY2hhbmdlKTsKICAgICAgICAgfQogICAgIH0KIApAQCAtMTE3Myw3ICsxMTc3LDcgQEAg
c3RhdGljIGJvb2wgdmFsaWRhdGVTaGFkb3dSb290KERvY3VtZW50KiBkb2N1bWVudCwgU2hhZG93
Um9vdCogc2hhZG93Um9vdCwgRXhjZXAKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotdm9pZCBFbGVt
ZW50OjpzZXRTaGFkb3dSb290KFBhc3NSZWZQdHI8U2hhZG93Um9vdD4gc2hhZG93Um9vdCwgRXhj
ZXB0aW9uQ29kZSYgZWMpCit2b2lkIEVsZW1lbnQ6OmFkZFNoYWRvd1Jvb3QoUGFzc1JlZlB0cjxT
aGFkb3dSb290PiBzaGFkb3dSb290LCBFeGNlcHRpb25Db2RlJiBlYykKIHsKICAgICBpZiAoIXZh
bGlkYXRlU2hhZG93Um9vdChkb2N1bWVudCgpLCBzaGFkb3dSb290LmdldCgpLCBlYykpCiAgICAg
ICAgIHJldHVybjsKQEAgLTExODEsNyArMTE4NSwxMiBAQCB2b2lkIEVsZW1lbnQ6OnNldFNoYWRv
d1Jvb3QoUGFzc1JlZlB0cjxTaGFkb3dSb290PiBzaGFkb3dSb290LCBFeGNlcHRpb25Db2RlJiBl
YwogICAgIGlmICghaGFzUmFyZURhdGEoKSkKICAgICAgICAgZW5zdXJlUmFyZURhdGEoKTsKIAot
ICAgIHJlbW92ZVNoYWRvd1Jvb3QoKTsKKyNpZiBFTkFCTEUoU0hBRE9XX0RPTSkKKyAgICBpZiAo
IVJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6Om11bHRpcGxlU2hhZG93U3VidHJlZXNFbmFibGVkKCkp
CisgICAgICAgIHJlbW92ZVNoYWRvd1Jvb3RMaXN0KCk7CisjZWxzZQorICAgIHJlbW92ZVNoYWRv
d1Jvb3RMaXN0KCk7CisjZW5kaWYKIAogICAgIHNoYWRvd1Jvb3QtPnNldFNoYWRvd0hvc3QodGhp
cyk7CiAgICAgc2hhZG93Um9vdExpc3QoKS0+cHVzaFNoYWRvd1Jvb3Qoc2hhZG93Um9vdC5nZXQo
KSk7CkBAIC0xMTkwLDkgKzExOTksMTIgQEAgdm9pZCBFbGVtZW50OjpzZXRTaGFkb3dSb290KFBh
c3NSZWZQdHI8U2hhZG93Um9vdD4gc2hhZG93Um9vdCwgRXhjZXB0aW9uQ29kZSYgZWMKICAgICAg
ICAgc2hhZG93Um9vdC0+aW5zZXJ0ZWRJbnRvRG9jdW1lbnQoKTsKICAgICBpZiAoYXR0YWNoZWQo
KSkgewogICAgICAgICBzaGFkb3dSb290LT5sYXp5QXR0YWNoKCk7CisgICAgICAgIGZvciAoU2hh
ZG93Um9vdCogcm9vdCA9IHNoYWRvd1Jvb3RMaXN0KCktPnlvdW5nZXN0U2hhZG93Um9vdCgpLT5v
bGRlclNoYWRvd1Jvb3QoKTsgcm9vdDsgcm9vdCA9IHJvb3QtPm9sZGVyU2hhZG93Um9vdCgpKQor
ICAgICAgICAgICAgcm9vdC0+ZGV0YWNoKCk7CiAgICAgICAgIGZvciAoTm9kZSogY2hpbGQgPSBm
aXJzdENoaWxkKCk7IGNoaWxkOyBjaGlsZCA9IGNoaWxkLT5uZXh0U2libGluZygpKQogICAgICAg
ICAgICAgY2hpbGQtPmRldGFjaCgpOwogICAgIH0KKwogfQogCiBTaGFkb3dSb290KiBFbGVtZW50
OjplbnN1cmVTaGFkb3dSb290KCkKQEAgLTEyMDMsNyArMTIxNSw3IEBAIFNoYWRvd1Jvb3QqIEVs
ZW1lbnQ6OmVuc3VyZVNoYWRvd1Jvb3QoKQogICAgIHJldHVybiBTaGFkb3dSb290OjpjcmVhdGUo
dGhpcywgU2hhZG93Um9vdDo6Q3JlYXRpbmdVc2VyQWdlbnRTaGFkb3dSb290KS5nZXQoKTsKIH0K
IAotdm9pZCBFbGVtZW50OjpyZW1vdmVTaGFkb3dSb290KCkKK3ZvaWQgRWxlbWVudDo6cmVtb3Zl
U2hhZG93Um9vdExpc3QoKQogewogICAgIGlmICghaGFzU2hhZG93Um9vdCgpKQogICAgICAgICBy
ZXR1cm47CkBAIC0xMjE1LDE2ICsxMjI3LDE5IEBAIHZvaWQgRWxlbWVudDo6cmVtb3ZlU2hhZG93
Um9vdCgpCiAgICAgICAgICAgICBvbGRSb290LT5kZXRhY2goKTsKIAogICAgICAgICBvbGRSb290
LT5zZXRTaGFkb3dIb3N0KDApOworICAgICAgICBvbGRSb290LT5zZXRQcmV2KDApOworICAgICAg
ICBvbGRSb290LT5zZXROZXh0KDApOwogICAgICAgICBkb2N1bWVudCgpLT5hZG9wdElmTmVlZGVk
KG9sZFJvb3QuZ2V0KCkpOwogICAgICAgICBpZiAob2xkUm9vdC0+aW5Eb2N1bWVudCgpKQogICAg
ICAgICAgICAgb2xkUm9vdC0+cmVtb3ZlZEZyb21Eb2N1bWVudCgpOwogICAgICAgICBlbHNlCiAg
ICAgICAgICAgICBvbGRSb290LT5yZW1vdmVkRnJvbVRyZWUodHJ1ZSk7Ci0gICAgICAgIGlmIChh
dHRhY2hlZCgpKSB7Ci0gICAgICAgICAgICBmb3IgKE5vZGUqIGNoaWxkID0gZmlyc3RDaGlsZCgp
OyBjaGlsZDsgY2hpbGQgPSBjaGlsZC0+bmV4dFNpYmxpbmcoKSkgewotICAgICAgICAgICAgICAg
IGlmICghY2hpbGQtPmF0dGFjaGVkKCkpCi0gICAgICAgICAgICAgICAgICAgIGNoaWxkLT5sYXp5
QXR0YWNoKCk7Ci0gICAgICAgICAgICB9CisgICAgfQorCisgICAgaWYgKGF0dGFjaGVkKCkpIHsK
KyAgICAgICAgZm9yIChOb2RlKiBjaGlsZCA9IGZpcnN0Q2hpbGQoKTsgY2hpbGQ7IGNoaWxkID0g
Y2hpbGQtPm5leHRTaWJsaW5nKCkpIHsKKyAgICAgICAgICAgIGlmICghY2hpbGQtPmF0dGFjaGVk
KCkpCisgICAgICAgICAgICAgICAgY2hpbGQtPmxhenlBdHRhY2goKTsKICAgICAgICAgfQogICAg
IH0KIH0KQEAgLTEzNjAsOCArMTM3NSw4IEBAIHZvaWQgRWxlbWVudDo6Y2hpbGRyZW5DaGFuZ2Vk
KGJvb2wgY2hhbmdlZEJ5UGFyc2VyLCBOb2RlKiBiZWZvcmVDaGFuZ2UsIE5vZGUqIGFmCiAgICAg
ICAgIGNoZWNrRm9yU2libGluZ1N0eWxlQ2hhbmdlcyh0aGlzLCByZW5kZXJTdHlsZSgpLCBmYWxz
ZSwgYmVmb3JlQ2hhbmdlLCBhZnRlckNoYW5nZSwgY2hpbGRDb3VudERlbHRhKTsKIAogICAgIGlm
IChoYXNSYXJlRGF0YSgpKSB7Ci0gICAgICAgIGlmIChTaGFkb3dSb290TGlzdCogbGlzdCA9IHNo
YWRvd1Jvb3RMaXN0KCkpCi0gICAgICAgICAgICBsaXN0LT5ob3N0Q2hpbGRyZW5DaGFuZ2VkKCk7
CisgICAgICAgIGlmIChoYXNTaGFkb3dSb290KCkpCisgICAgICAgICAgICBzaGFkb3dSb290TGlz
dCgpLT5ob3N0Q2hpbGRyZW5DaGFuZ2VkKCk7CiAgICAgfQogfQogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9kb20vRWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuaApp
bmRleCAzMWRhMWVkYWNjNDM1NzYyMjIxNmM5Nzk1YWQzYTY1MWYxOWE1OWE2Li42Yzg1MzQzODcz
ZWZmMjAwM2M3NDE3YTA4MzM1M2ZlZTE0M2I0ODgxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9kb20vRWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmgKQEAgLTI1
NSwxMiArMjU1LDExIEBAIHB1YmxpYzoKIAogICAgIGJvb2wgaGFzU2hhZG93Um9vdCgpIGNvbnN0
OwogICAgIFNoYWRvd1Jvb3RMaXN0KiBzaGFkb3dSb290TGlzdCgpIGNvbnN0OwotCi0gICAgLy8g
RklYTUU6IFRoZXNlIEFQSSB3aWxsIGJlIG1vdmVkIHRvIFNoYWRvd1Jvb3RMaXN0LgotICAgIC8v
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03ODMxMwotICAgIHZvaWQg
c2V0U2hhZG93Um9vdChQYXNzUmVmUHRyPFNoYWRvd1Jvb3Q+LCBFeGNlcHRpb25Db2RlJik7Cisg
ICAgdm9pZCBhZGRTaGFkb3dSb290KFBhc3NSZWZQdHI8U2hhZG93Um9vdD4sIEV4Y2VwdGlvbkNv
ZGUmKTsKKyAgICB2b2lkIHJlbW92ZVNoYWRvd1Jvb3RMaXN0KCk7CisgICAgLy8gRklYTUU6IGVu
c3VyZVNoYWRvd1Jvb3QoKSB3aWxsIGJlIHJlbW92ZWQgbGF0ZXIuCisgICAgLy8gaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTc3NjA4CiAgICAgU2hhZG93Um9vdCogZW5z
dXJlU2hhZG93Um9vdCgpOwotICAgIHZvaWQgcmVtb3ZlU2hhZG93Um9vdCgpOwogCiAgICAgdmly
dHVhbCBjb25zdCBBdG9taWNTdHJpbmcmIHNoYWRvd1BzZXVkb0lkKCkgY29uc3Q7CiAgICAgdm9p
ZCBzZXRTaGFkb3dQc2V1ZG9JZChjb25zdCBBdG9taWNTdHJpbmcmLCBFeGNlcHRpb25Db2RlJiA9
IEFTU0VSVF9OT19FWENFUFRJT04pOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL05v
ZGVSZW5kZXJpbmdDb250ZXh0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlUmVuZGVyaW5n
Q29udGV4dC5jcHAKaW5kZXggMjQwOGYyYTdlZjc2OGM2MWNjYWI0OTdiODBjZjYyYjEzMzg0MmY2
Ni4uZTAyNDFmNWU5ZTI4ZGZkZmJiNjczYTA4YTMyYWU4ZTFhMThjZGU5MSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvZG9tL05vZGVSZW5kZXJpbmdDb250ZXh0LmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9kb20vTm9kZVJlbmRlcmluZ0NvbnRleHQuY3BwCkBAIC00Nyw3ICs0Nyw3IEBAIE5v
ZGVSZW5kZXJpbmdDb250ZXh0OjpOb2RlUmVuZGVyaW5nQ29udGV4dChOb2RlKiBub2RlKQogICAg
IDogbV9waGFzZShBdHRhY2hpbmdOb3RJblRyZWUpCiAgICAgLCBtX25vZGUobm9kZSkKICAgICAs
IG1fcGFyZW50Tm9kZUZvclJlbmRlcmluZ0FuZFN0eWxlKDApCi0gICAgLCBtX3Zpc3VhbFBhcmVu
dFNoYWRvd1Jvb3QoMCkKKyAgICAsIG1fdmlzdWFsUGFyZW50U2hhZG93Um9vdExpc3QoMCkKICAg
ICAsIG1faW5zZXJ0aW9uUG9pbnQoMCkKICAgICAsIG1fc3R5bGUoMCkKICAgICAsIG1fcGFyZW50
Rmxvd1JlbmRlcmVyKDApCkBAIC01NywyMiArNTcsMjkgQEAgTm9kZVJlbmRlcmluZ0NvbnRleHQ6
Ok5vZGVSZW5kZXJpbmdDb250ZXh0KE5vZGUqIG5vZGUpCiAgICAgICAgIHJldHVybjsKIAogICAg
IGlmIChwYXJlbnQtPmlzU2hhZG93Um9vdCgpKSB7Ci0gICAgICAgIG1fcGhhc2UgPSBBdHRhY2hp
bmdTaGFkb3dDaGlsZDsKKyAgICAgICAgLy8gRklYTUU6IFdlIGRvbid0IHN1cHBvcnQgPHNoYWRv
dz4geWV0LCBzbyB0aGUgbm9uLXlvdW5nZXN0IHNoYWRvdyB3b24ndCBiZSByZW5kZXJlZC4KKyAg
ICAgICAgLy8gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvZF9idWdzLmNnaT9pZD03ODU5Ngor
ICAgICAgICBpZiAodG9TaGFkb3dSb290KHBhcmVudCktPnlvdW5nZXJTaGFkb3dSb290KCkpCisg
ICAgICAgICAgICBtX3BoYXNlID0gQXR0YWNoaW5nTm90RGlzdHJpYnV0ZWQ7CisgICAgICAgIGVs
c2UKKyAgICAgICAgICAgIG1fcGhhc2UgPSBBdHRhY2hpbmdTaGFkb3dDaGlsZDsKICAgICAgICAg
bV9wYXJlbnROb2RlRm9yUmVuZGVyaW5nQW5kU3R5bGUgPSBwYXJlbnQtPnNoYWRvd0hvc3QoKTsK
ICAgICAgICAgcmV0dXJuOwogICAgIH0KIAogICAgIGlmIChwYXJlbnQtPmlzRWxlbWVudE5vZGUo
KSkgewotICAgICAgICBpZiAodG9FbGVtZW50KHBhcmVudCktPmhhc1NoYWRvd1Jvb3QoKSkKLSAg
ICAgICAgICAgIG1fdmlzdWFsUGFyZW50U2hhZG93Um9vdCA9IHRvRWxlbWVudChwYXJlbnQpLT5z
aGFkb3dSb290TGlzdCgpLT55b3VuZ2VzdFNoYWRvd1Jvb3QoKTsKLQotICAgICAgICBpZiAobV92
aXN1YWxQYXJlbnRTaGFkb3dSb290KSB7Ci0gICAgICAgICAgICBTaGFkb3dSb290TGlzdCogc2hh
ZG93Um9vdExpc3QgPSBtX3Zpc3VhbFBhcmVudFNoYWRvd1Jvb3QtPmhvc3QoKS0+c2hhZG93Um9v
dExpc3QoKTsKLSAgICAgICAgICAgIGlmICgobV9pbnNlcnRpb25Qb2ludCA9IHNoYWRvd1Jvb3RM
aXN0LT5pbnNlcnRpb25Qb2ludEZvcihtX25vZGUpKQotICAgICAgICAgICAgICAgICYmIHNoYWRv
d1Jvb3RMaXN0LT5pc1NlbGVjdG9yQWN0aXZlKCkpIHsKLSAgICAgICAgICAgICAgICBtX3BoYXNl
ID0gQXR0YWNoaW5nRGlzdHJpYnV0ZWQ7Ci0gICAgICAgICAgICAgICAgbV9wYXJlbnROb2RlRm9y
UmVuZGVyaW5nQW5kU3R5bGUgPSBOb2RlUmVuZGVyaW5nQ29udGV4dChtX2luc2VydGlvblBvaW50
KS5wYXJlbnROb2RlRm9yUmVuZGVyaW5nQW5kU3R5bGUoKTsKLSAgICAgICAgICAgICAgICByZXR1
cm47CisgICAgICAgIGlmICh0b0VsZW1lbnQocGFyZW50KS0+aGFzU2hhZG93Um9vdCgpKSB7Cisg
ICAgICAgICAgICBtX3Zpc3VhbFBhcmVudFNoYWRvd1Jvb3RMaXN0ID0gdG9FbGVtZW50KHBhcmVu
dCktPnNoYWRvd1Jvb3RMaXN0KCk7CisgICAgICAgICAgICBpZiAoKG1faW5zZXJ0aW9uUG9pbnQg
PSBtX3Zpc3VhbFBhcmVudFNoYWRvd1Jvb3RMaXN0LT5pbnNlcnRpb25Qb2ludEZvcihtX25vZGUp
KQorICAgICAgICAgICAgICAgICYmIG1fdmlzdWFsUGFyZW50U2hhZG93Um9vdExpc3QtPmlzU2Vs
ZWN0b3JBY3RpdmUoKSkgeworCisgICAgICAgICAgICAgICAgLy8gRklYTUU6IFdlIGRvbid0IHN1
cHBvcnQgPHNoYWRvdz4geWV0LCBzbyB0aGUgbm9uLXlvdW5nZXN0IHNoYWRvdyB3b24ndCBiZSBy
ZW5kZXJlZC4KKyAgICAgICAgICAgICAgICAvLyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Z3MuY2dpP2lkPTc4NTk2CisgICAgICAgICAgICAgICAgaWYgKCF0b1NoYWRvd1Jvb3QobV9p
bnNlcnRpb25Qb2ludC0+c2hhZG93VHJlZVJvb3ROb2RlKCkpLT55b3VuZ2VyU2hhZG93Um9vdCgp
KSB7CisgICAgICAgICAgICAgICAgICAgIG1fcGhhc2UgPSBBdHRhY2hpbmdEaXN0cmlidXRlZDsK
KyAgICAgICAgICAgICAgICAgICAgbV9wYXJlbnROb2RlRm9yUmVuZGVyaW5nQW5kU3R5bGUgPSBO
b2RlUmVuZGVyaW5nQ29udGV4dChtX2luc2VydGlvblBvaW50KS5wYXJlbnROb2RlRm9yUmVuZGVy
aW5nQW5kU3R5bGUoKTsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAg
ICAgIH0KICAgICAgICAgICAgIH0KIAogICAgICAgICAgICAgbV9waGFzZSA9IEF0dGFjaGluZ05v
dERpc3RyaWJ1dGVkOwpAQCAtOTgsNyArMTA1LDcgQEAgTm9kZVJlbmRlcmluZ0NvbnRleHQ6Ok5v
ZGVSZW5kZXJpbmdDb250ZXh0KE5vZGUqIG5vZGUsIFJlbmRlclN0eWxlKiBzdHlsZSkKICAgICA6
IG1fcGhhc2UoQ2FsY3VsYXRpbmcpCiAgICAgLCBtX25vZGUobm9kZSkKICAgICAsIG1fcGFyZW50
Tm9kZUZvclJlbmRlcmluZ0FuZFN0eWxlKDApCi0gICAgLCBtX3Zpc3VhbFBhcmVudFNoYWRvd1Jv
b3QoMCkKKyAgICAsIG1fdmlzdWFsUGFyZW50U2hhZG93Um9vdExpc3QoMCkKICAgICAsIG1faW5z
ZXJ0aW9uUG9pbnQoMCkKICAgICAsIG1fc3R5bGUoc3R5bGUpCiAgICAgLCBtX3BhcmVudEZsb3dS
ZW5kZXJlcigwKQpAQCAtMjYzLDggKzI3MCw4IEBAIFJlbmRlck9iamVjdCogTm9kZVJlbmRlcmlu
Z0NvbnRleHQ6OnBhcmVudFJlbmRlcmVyKCkgY29uc3QKIAogdm9pZCBOb2RlUmVuZGVyaW5nQ29u
dGV4dDo6aG9zdENoaWxkcmVuQ2hhbmdlZCgpCiB7Ci0gICAgaWYgKG1fcGhhc2UgPT0gQXR0YWNo
aW5nTm90RGlzdHJpYnV0ZWQpCi0gICAgICAgIG1fdmlzdWFsUGFyZW50U2hhZG93Um9vdC0+aG9z
dENoaWxkcmVuQ2hhbmdlZCgpOworICAgIGlmIChtX3BoYXNlID09IEF0dGFjaGluZ05vdERpc3Ry
aWJ1dGVkICYmIG1fdmlzdWFsUGFyZW50U2hhZG93Um9vdExpc3QpCisgICAgICAgIG1fdmlzdWFs
UGFyZW50U2hhZG93Um9vdExpc3QtPmhvc3RDaGlsZHJlbkNoYW5nZWQoKTsKIH0KIAogYm9vbCBO
b2RlUmVuZGVyaW5nQ29udGV4dDo6c2hvdWxkQ3JlYXRlUmVuZGVyZXIoKSBjb25zdApAQCAtMjg1
LDcgKzI5Miw3IEBAIGJvb2wgTm9kZVJlbmRlcmluZ0NvbnRleHQ6OnNob3VsZENyZWF0ZVJlbmRl
cmVyKCkgY29uc3QKICAgICAgICAgaWYgKCFwYXJlbnRSZW5kZXJlci0+Y2FuSGF2ZUNoaWxkcmVu
KCkpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICAgICAgaWYgKG1fdmlzdWFsUGFy
ZW50U2hhZG93Um9vdCkKKyAgICAgICAgaWYgKG1fdmlzdWFsUGFyZW50U2hhZG93Um9vdExpc3Qp
CiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9kb20vTm9kZVJlbmRlcmluZ0NvbnRleHQuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9O
b2RlUmVuZGVyaW5nQ29udGV4dC5oCmluZGV4IGVlNWEwMDNkOGYxMjc4N2U1NDMyMWM5Y2EyNTI2
YmY1NTlkMTM5YTcuLjQzNzNlMmZjYTA0ZDhmYjk0ZTE4ODRjN2M0MzlmNjRjMjg0NTRiMzkgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlUmVuZGVyaW5nQ29udGV4dC5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlUmVuZGVyaW5nQ29udGV4dC5oCkBAIC0zOSw3ICszOSw3
IEBAIGNsYXNzIE5vZGU7CiBjbGFzcyBSZW5kZXJGbG93VGhyZWFkOwogY2xhc3MgUmVuZGVyT2Jq
ZWN0OwogY2xhc3MgUmVuZGVyU3R5bGU7Ci1jbGFzcyBTaGFkb3dSb290OworY2xhc3MgU2hhZG93
Um9vdExpc3Q7CiAKIGNsYXNzIE5vZGVSZW5kZXJpbmdDb250ZXh0IHsKIHB1YmxpYzoKQEAgLTgx
LDcgKzgxLDcgQEAgcHJpdmF0ZToKICAgICBBdHRhY2hpbmdQaGFzZSBtX3BoYXNlOwogICAgIE5v
ZGUqIG1fbm9kZTsKICAgICBDb250YWluZXJOb2RlKiBtX3BhcmVudE5vZGVGb3JSZW5kZXJpbmdB
bmRTdHlsZTsKLSAgICBTaGFkb3dSb290KiBtX3Zpc3VhbFBhcmVudFNoYWRvd1Jvb3Q7CisgICAg
U2hhZG93Um9vdExpc3QqIG1fdmlzdWFsUGFyZW50U2hhZG93Um9vdExpc3Q7CiAgICAgSW5zZXJ0
aW9uUG9pbnQqIG1faW5zZXJ0aW9uUG9pbnQ7CiAgICAgUmVmUHRyPFJlbmRlclN0eWxlPiBtX3N0
eWxlOwogICAgIFJlbmRlckZsb3dUaHJlYWQqIG1fcGFyZW50Rmxvd1JlbmRlcmVyOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL1NoYWRvd1Jvb3QuY3BwIGIvU291cmNlL1dlYkNvcmUv
ZG9tL1NoYWRvd1Jvb3QuY3BwCmluZGV4IDA2MjYwMjJlYzE1NDliYjIzNGFhYTA4ZTlhZDA1Yzc0
Mjk2N2RlYzguLjg4YWU5NWJhZDg3MDIxMTk0YzRjYjUyZmNlZWU4YjQyZTkyMzFjYjIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9TaGFkb3dSb290LmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9kb20vU2hhZG93Um9vdC5jcHAKQEAgLTM2LDcgKzM2LDYgQEAKICNpbmNsdWRlICJOb2Rl
UmFyZURhdGEuaCIKICNpbmNsdWRlICJTaGFkb3dSb290TGlzdC5oIgogI2luY2x1ZGUgIlNWR05h
bWVzLmgiCi0jaW5jbHVkZSAiVGV4dC5oIgogCiAjaWYgRU5BQkxFKFNIQURPV19ET00pCiAjaW5j
bHVkZSAiUnVudGltZUVuYWJsZWRGZWF0dXJlcy5oIgpAQCAtNTAsNyArNDksNiBAQCBTaGFkb3dS
b290OjpTaGFkb3dSb290KERvY3VtZW50KiBkb2N1bWVudCkKICAgICAsIG1fcHJldigwKQogICAg
ICwgbV9uZXh0KDApCiAgICAgLCBtX2FwcGx5QXV0aG9yU2hlZXRzKGZhbHNlKQotICAgICwgbV9u
ZWVkc1JlY2FsY3VsYXRlQ29udGVudChmYWxzZSkKIHsKICAgICBBU1NFUlQoZG9jdW1lbnQpOwog
ICAgIApAQCAtMTI1LDcgKzEyMyw3IEBAIFBhc3NSZWZQdHI8U2hhZG93Um9vdD4gU2hhZG93Um9v
dDo6Y3JlYXRlKEVsZW1lbnQqIGVsZW1lbnQsIFNoYWRvd1Jvb3RDcmVhdGlvblB1CiAgICAgUmVm
UHRyPFNoYWRvd1Jvb3Q+IHNoYWRvd1Jvb3QgPSBhZG9wdFJlZihuZXcgU2hhZG93Um9vdChlbGVt
ZW50LT5kb2N1bWVudCgpKSk7CiAKICAgICBlYyA9IDA7Ci0gICAgZWxlbWVudC0+c2V0U2hhZG93
Um9vdChzaGFkb3dSb290LCBlYyk7CisgICAgZWxlbWVudC0+YWRkU2hhZG93Um9vdChzaGFkb3dS
b290LCBlYyk7CiAgICAgaWYgKGVjKQogICAgICAgICByZXR1cm4gMDsKICAgICBBU1NFUlQoZWxl
bWVudCA9PSBzaGFkb3dSb290LT5ob3N0KCkpOwpAQCAtMTU5LDM4ICsxNTcsMTEgQEAgYm9vbCBT
aGFkb3dSb290OjpjaGlsZFR5cGVBbGxvd2VkKE5vZGVUeXBlIHR5cGUpIGNvbnN0CiAgICAgfQog
fQogCi12b2lkIFNoYWRvd1Jvb3Q6OnJlY2FsY1NoYWRvd1RyZWVTdHlsZShTdHlsZUNoYW5nZSBj
aGFuZ2UpCitTaGFkb3dSb290TGlzdCogU2hhZG93Um9vdDo6bGlzdCgpIGNvbnN0CiB7Ci0gICAg
aWYgKG5lZWRzUmVhdHRhY2hIb3N0Q2hpbGRyZW5BbmRTaGFkb3coKSkKLSAgICAgICAgcmVhdHRh
Y2hIb3N0Q2hpbGRyZW5BbmRTaGFkb3coKTsKLSAgICBlbHNlIHsKLSAgICAgICAgZm9yIChOb2Rl
KiBuID0gZmlyc3RDaGlsZCgpOyBuOyBuID0gbi0+bmV4dFNpYmxpbmcoKSkgewotICAgICAgICAg
ICAgaWYgKG4tPmlzRWxlbWVudE5vZGUoKSkKLSAgICAgICAgICAgICAgICBzdGF0aWNfY2FzdDxF
bGVtZW50Kj4obiktPnJlY2FsY1N0eWxlKGNoYW5nZSk7Ci0gICAgICAgICAgICBlbHNlIGlmIChu
LT5pc1RleHROb2RlKCkpCi0gICAgICAgICAgICAgICAgdG9UZXh0KG4pLT5yZWNhbGNUZXh0U3R5
bGUoY2hhbmdlKTsKLSAgICAgICAgfQotICAgIH0KLQotICAgIGNsZWFyTmVlZHNSZWF0dGFjaEhv
c3RDaGlsZHJlbkFuZFNoYWRvdygpOwotICAgIGNsZWFyTmVlZHNTdHlsZVJlY2FsYygpOwotICAg
IGNsZWFyQ2hpbGROZWVkc1N0eWxlUmVjYWxjKCk7Ci19Ci0KLXZvaWQgU2hhZG93Um9vdDo6c2V0
TmVlZHNSZWF0dGFjaEhvc3RDaGlsZHJlbkFuZFNoYWRvdygpCi17Ci0gICAgbV9uZWVkc1JlY2Fs
Y3VsYXRlQ29udGVudCA9IHRydWU7Ci0gICAgaWYgKHNoYWRvd0hvc3QoKSkKLSAgICAgICAgc2hh
ZG93SG9zdCgpLT5zZXROZWVkc1N0eWxlUmVjYWxjKCk7Ci19Ci0KLXZvaWQgU2hhZG93Um9vdDo6
aG9zdENoaWxkcmVuQ2hhbmdlZCgpCi17Ci0gICAgaWYgKCFoYXNDb250ZW50RWxlbWVudCgpKQot
ICAgICAgICByZXR1cm47Ci0KLSAgICAvLyBUaGlzIHJlc3VsdHMgaW4gZm9yY2VkIGRldGFjaGlu
Zy9hdHRhY2hpbmcgb2YgdGhlIHNoYWRvdyByZW5kZXIgdHJlZS4gU2VlIFNoYWRvd1Jvb3Q6OnJl
Y2FsY1N0eWxlKCkuCi0gICAgc2V0TmVlZHNSZWF0dGFjaEhvc3RDaGlsZHJlbkFuZFNoYWRvdygp
OworICAgIGlmIChob3N0KCkpCisgICAgICAgIHJldHVybiBob3N0KCktPnNoYWRvd1Jvb3RMaXN0
KCk7CisgICAgcmV0dXJuIDA7CiB9CiAKIGJvb2wgU2hhZG93Um9vdDo6aGFzQ29udGVudEVsZW1l
bnQoKSBjb25zdApAQCAtMjEzLDM2ICsxODQsNCBAQCB2b2lkIFNoYWRvd1Jvb3Q6OnNldEFwcGx5
QXV0aG9yU2hlZXRzKGJvb2wgdmFsdWUpCiAgICAgbV9hcHBseUF1dGhvclNoZWV0cyA9IHZhbHVl
OwogfQogCi12b2lkIFNoYWRvd1Jvb3Q6OmF0dGFjaCgpCi17Ci0gICAgLy8gQ2hpbGRyZW4gb2Yg
bV9zZWxlY3RvciBpcyBwb3B1bGF0ZWQgbGF6aWx5IGluCi0gICAgLy8gZW5zdXJlU2VsZWN0b3Io
KSwgYW5kIGhlcmUgd2UganVzdCBlbnN1cmUgdGhhdAotICAgIC8vIGl0IGlzIGluIGNsZWFuIHN0
YXRlLgotICAgIC8vIEZJWE1FOiBUaGlzIGFzc2VydGlvbiBicmVha3MgaWYgbXVsdGlwbGUgc2hh
ZG93IHJvb3RzIGFyZSBiZWluZyBhdHRhY2hlZC4KLSAgICAvLyBTaGFkb3dSb290TGlzdCBzaG91
bGQgaGF2ZSByZXNwb25zaWJpbGl0eSBvZiBzaWRlIGVmZmVjdCBvZiBzZWxlY3RvciBpbiBhdHRh
Y2hpbmcvZGV0YWNoaW5nLgotICAgIEFTU0VSVCghaG9zdCgpLT5zaGFkb3dSb290TGlzdCgpLT5z
ZWxlY3RvcigpIHx8ICFob3N0KCktPnNoYWRvd1Jvb3RMaXN0KCktPnNlbGVjdG9yKCktPmhhc0Nh
bmRpZGF0ZXMoKSk7Ci0gICAgRG9jdW1lbnRGcmFnbWVudDo6YXR0YWNoKCk7Ci0gICAgaWYgKEhU
TUxDb250ZW50U2VsZWN0b3IqIHNlbGVjdG9yID0gaG9zdCgpLT5zaGFkb3dSb290TGlzdCgpLT5z
ZWxlY3RvcigpKQotICAgICAgICBzZWxlY3Rvci0+ZGlkU2VsZWN0KCk7Ci19Ci0KLXZvaWQgU2hh
ZG93Um9vdDo6cmVhdHRhY2hIb3N0Q2hpbGRyZW5BbmRTaGFkb3coKQotewotICAgIE5vZGUqIGhv
c3ROb2RlID0gaG9zdCgpOwotICAgIGlmICghaG9zdE5vZGUpCi0gICAgICAgIHJldHVybjsKLQot
ICAgIGZvciAoTm9kZSogY2hpbGQgPSBob3N0Tm9kZS0+Zmlyc3RDaGlsZCgpOyBjaGlsZDsgY2hp
bGQgPSBjaGlsZC0+bmV4dFNpYmxpbmcoKSkgewotICAgICAgICBpZiAoY2hpbGQtPmF0dGFjaGVk
KCkpCi0gICAgICAgICAgICBjaGlsZC0+ZGV0YWNoKCk7Ci0gICAgfQotCi0gICAgcmVhdHRhY2go
KTsKLQotICAgIGZvciAoTm9kZSogY2hpbGQgPSBob3N0Tm9kZS0+Zmlyc3RDaGlsZCgpOyBjaGls
ZDsgY2hpbGQgPSBjaGlsZC0+bmV4dFNpYmxpbmcoKSkgewotICAgICAgICBpZiAoIWNoaWxkLT5h
dHRhY2hlZCgpKQotICAgICAgICAgICAgY2hpbGQtPmF0dGFjaCgpOwotICAgIH0KIH0KLQotfSAv
LyBuYW1lc3BhY2UKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9TaGFkb3dSb290Lmgg
Yi9Tb3VyY2UvV2ViQ29yZS9kb20vU2hhZG93Um9vdC5oCmluZGV4IGQzYmYzNTEyNjRjZmQzMmI2
ZmUzYzE0NTQ3YjhhZmQ1MGViYzE2ZDMuLmZkOTQ3ODc3NzJjZTNlNjEzYzJjNzQ4ZTY5OGJiZjMw
MTRlOGJlZDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9TaGFkb3dSb290LmgKKysr
IGIvU291cmNlL1dlYkNvcmUvZG9tL1NoYWRvd1Jvb3QuaApAQCAtMzgsNiArMzgsNyBAQCBjbGFz
cyBEb2N1bWVudDsKIGNsYXNzIEhUTUxDb250ZW50RWxlbWVudDsKIGNsYXNzIEhUTUxDb250ZW50
U2VsZWN0b3I7CiBjbGFzcyBJbnNlcnRpb25Qb2ludDsKK2NsYXNzIFNoYWRvd1Jvb3RMaXN0Owog
CiBjbGFzcyBTaGFkb3dSb290IDogcHVibGljIERvY3VtZW50RnJhZ21lbnQsIHB1YmxpYyBUcmVl
U2NvcGUsIHB1YmxpYyBEb3VibHlMaW5rZWRMaXN0Tm9kZTxTaGFkb3dSb290PiB7CiAgICAgZnJp
ZW5kIGNsYXNzIFdURjo6RG91Ymx5TGlua2VkTGlzdE5vZGU8U2hhZG93Um9vdD47CkBAIC02Mywx
NiArNjQsMTkgQEAgcHVibGljOgogICAgIEluc2VydGlvblBvaW50KiBpbnNlcnRpb25Qb2ludEZv
cihOb2RlKikgY29uc3Q7CiAgICAgdm9pZCBob3N0Q2hpbGRyZW5DaGFuZ2VkKCk7CiAKLSAgICB2
aXJ0dWFsIHZvaWQgYXR0YWNoKCk7Ci0gICAgdm9pZCByZWF0dGFjaEhvc3RDaGlsZHJlbkFuZFNo
YWRvdygpOwotCiAgICAgdmlydHVhbCBib29sIGFwcGx5QXV0aG9yU2hlZXRzKCkgY29uc3Q7CiAg
ICAgdm9pZCBzZXRBcHBseUF1dGhvclNoZWV0cyhib29sKTsKIAogICAgIEVsZW1lbnQqIGhvc3Qo
KSBjb25zdCB7IHJldHVybiBzaGFkb3dIb3N0KCk7IH0KKyAgICBTaGFkb3dSb290TGlzdCogbGlz
dCgpIGNvbnN0OworCisgICAgU2hhZG93Um9vdCogeW91bmdlclNoYWRvd1Jvb3QoKSBjb25zdCB7
IHJldHVybiBwcmV2KCk7IH0KKyAgICBTaGFkb3dSb290KiBvbGRlclNoYWRvd1Jvb3QoKSBjb25z
dCB7IHJldHVybiBuZXh0KCk7IH0KKworICAgIGJvb2wgaXNZb3VuZ2VzdFNoYWRvd1Jvb3QoKSBj
b25zdCB7IHJldHVybiAheW91bmdlclNoYWRvd1Jvb3QoKTsgfQorICAgIGJvb2wgaXNPbGRlc3RT
aGFkb3dSb290KCkgY29uc3QgeyByZXR1cm4gIW9sZGVyU2hhZG93Um9vdCgpOyB9CiAKLSAgICBT
aGFkb3dSb290KiB5b3VuZ2VyU2hhZG93Um9vdCgpIHsgcmV0dXJuIHByZXYoKTsgfQotICAgIFNo
YWRvd1Jvb3QqIG9sZGVyU2hhZG93Um9vdCgpIHsgcmV0dXJuIG5leHQoKTsgfQorICAgIGJvb2wg
aGFzQ29udGVudEVsZW1lbnQoKSBjb25zdDsKIAogcHJpdmF0ZToKICAgICBTaGFkb3dSb290KERv
Y3VtZW50Kik7CkBAIC04MiwyNCArODYsMTEgQEAgcHJpdmF0ZToKICAgICB2aXJ0dWFsIFBhc3NS
ZWZQdHI8Tm9kZT4gY2xvbmVOb2RlKGJvb2wgZGVlcCk7CiAgICAgdmlydHVhbCBib29sIGNoaWxk
VHlwZUFsbG93ZWQoTm9kZVR5cGUpIGNvbnN0OwogCi0gICAgYm9vbCBoYXNDb250ZW50RWxlbWVu
dCgpIGNvbnN0OwotCiAgICAgU2hhZG93Um9vdCogbV9wcmV2OwogICAgIFNoYWRvd1Jvb3QqIG1f
bmV4dDsKICAgICBib29sIG1fYXBwbHlBdXRob3JTaGVldHMgOiAxOwotICAgIGJvb2wgbV9uZWVk
c1JlY2FsY3VsYXRlQ29udGVudCA6IDE7CiB9OwogCi1pbmxpbmUgdm9pZCBTaGFkb3dSb290Ojpj
bGVhck5lZWRzUmVhdHRhY2hIb3N0Q2hpbGRyZW5BbmRTaGFkb3coKQotewotICAgIG1fbmVlZHNS
ZWNhbGN1bGF0ZUNvbnRlbnQgPSBmYWxzZTsKLX0KLQotaW5saW5lIGJvb2wgU2hhZG93Um9vdDo6
bmVlZHNSZWF0dGFjaEhvc3RDaGlsZHJlbkFuZFNoYWRvdygpCi17Ci0gICAgcmV0dXJuIG1fbmVl
ZHNSZWNhbGN1bGF0ZUNvbnRlbnQgfHwgaGFzQ29udGVudEVsZW1lbnQoKTsKLX0KLQogaW5saW5l
IFNoYWRvd1Jvb3QqIHRvU2hhZG93Um9vdChOb2RlKiBub2RlKQogewogICAgIEFTU0VSVCghbm9k
ZSB8fCBub2RlLT5pc1NoYWRvd1Jvb3QoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9k
b20vU2hhZG93Um9vdExpc3QuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL1NoYWRvd1Jvb3RMaXN0
LmNwcAppbmRleCAyNjQ3NjRlNzJmNDczMGJlMGZiMmI2YWZjOTcxMTAzMzUyYzMxMzRkLi4zZGJm
NzI1Y2FjN2MwZDMzZTljYzU4ZGM2ZGJiNDhkYzRiM2IzMGU5IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9kb20vU2hhZG93Um9vdExpc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9T
aGFkb3dSb290TGlzdC5jcHAKQEAgLTMyLDEwICszMiwxMiBAQAogI2luY2x1ZGUgIkhUTUxDb250
ZW50U2VsZWN0b3IuaCIKICNpbmNsdWRlICJSdW50aW1lRW5hYmxlZEZlYXR1cmVzLmgiCiAjaW5j
bHVkZSAiU2hhZG93Um9vdC5oIgorI2luY2x1ZGUgIlRleHQuaCIKIAogbmFtZXNwYWNlIFdlYkNv
cmUgewogCiBTaGFkb3dSb290TGlzdDo6U2hhZG93Um9vdExpc3QoKQorICAgIDogbV9uZWVkc1Jl
Y2FsY3VsYXRlQ29udGVudChmYWxzZSkKIHsKIH0KIApAQCAtOTQsMzAgKzk2LDIzIEBAIHZvaWQg
U2hhZG93Um9vdExpc3Q6OndpbGxSZW1vdmUoKQogICAgICAgICByb290LT53aWxsUmVtb3ZlKCk7
CiB9CiAKLXZvaWQgU2hhZG93Um9vdExpc3Q6Omhvc3RDaGlsZHJlbkNoYW5nZWQoKQotewotICAg
IGZvciAoU2hhZG93Um9vdCogcm9vdCA9IHlvdW5nZXN0U2hhZG93Um9vdCgpOyByb290OyByb290
ID0gcm9vdC0+b2xkZXJTaGFkb3dSb290KCkpCi0gICAgICAgIHJvb3QtPmhvc3RDaGlsZHJlbkNo
YW5nZWQoKTsKLX0KLQogdm9pZCBTaGFkb3dSb290TGlzdDo6YXR0YWNoKCkKIHsKLSAgICAvLyBG
SVhNRTogQ3VycmVudGx5IHdlIG9ubHkgc3VwcG9ydCB0aGUgY2FzZSB0aGF0IHRoZSBzaGFkb3cg
cm9vdCBsaXN0IGhhcyBhdCBtb3N0IG9uZSBzaGFkb3cgcm9vdC4KLSAgICAvLyBTZWUgYWxzbyBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9Nzc1MDMgYW5kIGl0cyBkZXBl
bmRlbnQgYnVncy4KLSAgICBBU1NFUlQobV9zaGFkb3dSb290cy5zaXplKCkgPD0gMSk7CisgICAg
Ly8gQ2hpbGRyZW4gb2YgbV9zZWxlY3RvciBpcyBwb3B1bGF0ZWQgbGF6aWx5IGluCisgICAgLy8g
ZW5zdXJlU2VsZWN0b3IoKSwgYW5kIGhlcmUgd2UganVzdCBlbnN1cmUgdGhhdCBpdCBpcyBpbiBj
bGVhbiBzdGF0ZS4KKyAgICBBU1NFUlQoIXNlbGVjdG9yKCkgfHwgIXNlbGVjdG9yKCktPmhhc0Nh
bmRpZGF0ZXMoKSk7CiAKICAgICBmb3IgKFNoYWRvd1Jvb3QqIHJvb3QgPSB5b3VuZ2VzdFNoYWRv
d1Jvb3QoKTsgcm9vdDsgcm9vdCA9IHJvb3QtPm9sZGVyU2hhZG93Um9vdCgpKSB7CiAgICAgICAg
IGlmICghcm9vdC0+YXR0YWNoZWQoKSkKICAgICAgICAgICAgIHJvb3QtPmF0dGFjaCgpOwogICAg
IH0KKworICAgIGlmIChIVE1MQ29udGVudFNlbGVjdG9yKiBjb250ZW50U2VsZWN0b3IgPSBzZWxl
Y3RvcigpKQorICAgICAgICBjb250ZW50U2VsZWN0b3ItPmRpZFNlbGVjdCgpOwogfQogCiB2b2lk
IFNoYWRvd1Jvb3RMaXN0OjpkZXRhY2goKQogewotICAgIC8vIEZJWE1FOiBDdXJyZW50bHkgd2Ug
b25seSBzdXBwb3J0IHRoZSBjYXNlIHRoYXQgdGhlIHNoYWRvdyByb290IGxpc3QgaGFzIGF0IG1v
c3Qgb25lIHNoYWRvdyByb290LgotICAgIC8vIFNlZSBhbHNvIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD03NzUwMyBhbmQgaXRzIGRlcGVuZGVudCBidWdzLgotICAgIEFT
U0VSVChtX3NoYWRvd1Jvb3RzLnNpemUoKSA8PSAxKTsKLQogICAgIGZvciAoU2hhZG93Um9vdCog
cm9vdCA9IHlvdW5nZXN0U2hhZG93Um9vdCgpOyByb290OyByb290ID0gcm9vdC0+b2xkZXJTaGFk
b3dSb290KCkpIHsKICAgICAgICAgaWYgKHJvb3QtPmF0dGFjaGVkKCkpCiAgICAgICAgICAgICBy
b290LT5kZXRhY2goKTsKQEAgLTEzOSw2ICsxMzQsOTggQEAgYm9vbCBTaGFkb3dSb290TGlzdDo6
aXNTZWxlY3RvckFjdGl2ZSgpIGNvbnN0CiAgICAgcmV0dXJuIG1fc2VsZWN0b3IgJiYgbV9zZWxl
Y3Rvci0+aGFzQ2FuZGlkYXRlcygpOwogfQogCit2b2lkIFNoYWRvd1Jvb3RMaXN0OjpyZWF0dGFj
aCgpCit7CisgICAgZGV0YWNoKCk7CisgICAgYXR0YWNoKCk7Cit9CisKK2Jvb2wgU2hhZG93Um9v
dExpc3Q6OmNoaWxkTmVlZHNTdHlsZVJlY2FsYygpCit7CisgICAgQVNTRVJUKHlvdW5nZXN0U2hh
ZG93Um9vdCgpKTsKKyAgICBpZiAoIXlvdW5nZXN0U2hhZG93Um9vdCgpKQorICAgICAgICByZXR1
cm4gZmFsc2U7CisKKyAgICByZXR1cm4geW91bmdlc3RTaGFkb3dSb290KCktPmNoaWxkTmVlZHNT
dHlsZVJlY2FsYygpOworfQorCitib29sIFNoYWRvd1Jvb3RMaXN0OjpuZWVkc1N0eWxlUmVjYWxj
KCkKK3sKKyAgICBBU1NFUlQoeW91bmdlc3RTaGFkb3dSb290KCkpOworICAgIGlmICgheW91bmdl
c3RTaGFkb3dSb290KCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIHJldHVybiB5b3Vu
Z2VzdFNoYWRvd1Jvb3QoKS0+bmVlZHNTdHlsZVJlY2FsYygpOworfQorCit2b2lkIFNoYWRvd1Jv
b3RMaXN0OjpyZWNhbGNTaGFkb3dUcmVlU3R5bGUoTm9kZTo6U3R5bGVDaGFuZ2UgY2hhbmdlKQor
eworICAgIFNoYWRvd1Jvb3QqIHlvdW5nZXN0ID0geW91bmdlc3RTaGFkb3dSb290KCk7CisgICAg
aWYgKCF5b3VuZ2VzdCkKKyAgICAgICAgcmV0dXJuOworCisgICAgaWYgKG5lZWRzUmVhdHRhY2hI
b3N0Q2hpbGRyZW5BbmRTaGFkb3coKSkKKyAgICAgICAgcmVhdHRhY2hIb3N0Q2hpbGRyZW5BbmRT
aGFkb3coKTsKKyAgICBlbHNlIHsKKyAgICAgICAgZm9yIChOb2RlKiBuID0geW91bmdlc3QtPmZp
cnN0Q2hpbGQoKTsgbjsgbiA9IG4tPm5leHRTaWJsaW5nKCkpIHsKKyAgICAgICAgICAgIGlmIChu
LT5pc0VsZW1lbnROb2RlKCkpCisgICAgICAgICAgICAgICAgc3RhdGljX2Nhc3Q8RWxlbWVudCo+
KG4pLT5yZWNhbGNTdHlsZShjaGFuZ2UpOworICAgICAgICAgICAgZWxzZSBpZiAobi0+aXNUZXh0
Tm9kZSgpKQorICAgICAgICAgICAgICAgIHRvVGV4dChuKS0+cmVjYWxjVGV4dFN0eWxlKGNoYW5n
ZSk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBjbGVhck5lZWRzUmVhdHRhY2hIb3N0Q2hpbGRy
ZW5BbmRTaGFkb3coKTsKKyAgICBmb3IgKFNoYWRvd1Jvb3QqIHJvb3QgPSB5b3VuZ2VzdFNoYWRv
d1Jvb3QoKTsgcm9vdDsgcm9vdCA9IHJvb3QtPm9sZGVyU2hhZG93Um9vdCgpKSB7CisgICAgICAg
IHJvb3QtPmNsZWFyTmVlZHNTdHlsZVJlY2FsYygpOworICAgICAgICByb290LT5jbGVhckNoaWxk
TmVlZHNTdHlsZVJlY2FsYygpOworICAgIH0KK30KKworYm9vbCBTaGFkb3dSb290TGlzdDo6bmVl
ZHNSZWF0dGFjaEhvc3RDaGlsZHJlbkFuZFNoYWRvdygpCit7CisgICAgcmV0dXJuIG1fbmVlZHNS
ZWNhbGN1bGF0ZUNvbnRlbnQgfHwgKHlvdW5nZXN0U2hhZG93Um9vdCgpICYmIHlvdW5nZXN0U2hh
ZG93Um9vdCgpLT5oYXNDb250ZW50RWxlbWVudCgpKTsKK30KKwordm9pZCBTaGFkb3dSb290TGlz
dDo6aG9zdENoaWxkcmVuQ2hhbmdlZCgpCit7CisgICAgQVNTRVJUKHlvdW5nZXN0U2hhZG93Um9v
dCgpKTsKKworICAgIGlmICgheW91bmdlc3RTaGFkb3dSb290KCktPmhhc0NvbnRlbnRFbGVtZW50
KCkpCisgICAgICAgIHJldHVybjsKKworICAgIC8vIFRoaXMgcmVzdWx0cyBpbiBmb3JjZWQgZGV0
YWNoaW5nL2F0dGFjaGluZyBvZiB0aGUgc2hhZG93IHJlbmRlciB0cmVlLiBTZWUgU2hhZG93Um9v
dDo6cmVjYWxjU3R5bGUoKS4KKyAgICBzZXROZWVkc1JlYXR0YWNoSG9zdENoaWxkcmVuQW5kU2hh
ZG93KCk7Cit9CisKK3ZvaWQgU2hhZG93Um9vdExpc3Q6OnNldE5lZWRzUmVhdHRhY2hIb3N0Q2hp
bGRyZW5BbmRTaGFkb3coKQoreworICAgIG1fbmVlZHNSZWNhbGN1bGF0ZUNvbnRlbnQgPSB0cnVl
OworCisgICAgaG9zdCgpLT5zZXROZWVkc1N0eWxlUmVjYWxjKCk7Cit9CisKK3ZvaWQgU2hhZG93
Um9vdExpc3Q6OnJlYXR0YWNoSG9zdENoaWxkcmVuQW5kU2hhZG93KCkKK3sKKyAgICBBU1NFUlQo
eW91bmdlc3RTaGFkb3dSb290KCkpOworCisgICAgTm9kZSogaG9zdE5vZGUgPSB5b3VuZ2VzdFNo
YWRvd1Jvb3QoKS0+aG9zdCgpOworICAgIGlmICghaG9zdE5vZGUpCisgICAgICAgIHJldHVybjsK
KworICAgIGZvciAoTm9kZSogY2hpbGQgPSBob3N0Tm9kZS0+Zmlyc3RDaGlsZCgpOyBjaGlsZDsg
Y2hpbGQgPSBjaGlsZC0+bmV4dFNpYmxpbmcoKSkgeworICAgICAgICBpZiAoY2hpbGQtPmF0dGFj
aGVkKCkpCisgICAgICAgICAgICBjaGlsZC0+ZGV0YWNoKCk7CisgICAgfQorCisgICAgcmVhdHRh
Y2goKTsKKworICAgIGZvciAoTm9kZSogY2hpbGQgPSBob3N0Tm9kZS0+Zmlyc3RDaGlsZCgpOyBj
aGlsZDsgY2hpbGQgPSBjaGlsZC0+bmV4dFNpYmxpbmcoKSkgeworICAgICAgICBpZiAoIWNoaWxk
LT5hdHRhY2hlZCgpKQorICAgICAgICAgICAgY2hpbGQtPmF0dGFjaCgpOworICAgIH0KK30KKwog
SFRNTENvbnRlbnRTZWxlY3RvciogU2hhZG93Um9vdExpc3Q6OmVuc3VyZVNlbGVjdG9yKCkKIHsK
ICAgICBpZiAoIW1fc2VsZWN0b3IpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vU2hh
ZG93Um9vdExpc3QuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9TaGFkb3dSb290TGlzdC5oCmluZGV4
IDJiNDk4NDkzYTg0NjdlZmE5YTBmNjIzNTEzOGM2ZGVkNDQyYjA2NWQuLmRiMzE3MGE2ZDliM2Rj
NzU3NGMxMzYxNGI3Y2Q1Njk4ZjMxMzdiYjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Rv
bS9TaGFkb3dSb290TGlzdC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9TaGFkb3dSb290TGlz
dC5oCkBAIC0zNyw4ICszNyw4IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgTm9kZTsK
IGNsYXNzIEVsZW1lbnQ7Ci1jbGFzcyBIVE1MQ29udGVudEVsZW1lbnQ7CiBjbGFzcyBIVE1MQ29u
dGVudFNlbGVjdG9yOworY2xhc3MgSW5zZXJ0aW9uUG9pbnQ7CiAKIGNsYXNzIFNoYWRvd1Jvb3RM
aXN0IHsKIHB1YmxpYzoKQEAgLTU4LDEwICs1OCwxOCBAQCBwdWJsaWM6CiAgICAgdm9pZCByZW1v
dmVkRnJvbVRyZWUoYm9vbCBkZWVwKTsKICAgICB2b2lkIHdpbGxSZW1vdmUoKTsKIAotICAgIHZv
aWQgaG9zdENoaWxkcmVuQ2hhbmdlZCgpOwotCiAgICAgdm9pZCBhdHRhY2goKTsKICAgICB2b2lk
IGRldGFjaCgpOworICAgIHZvaWQgcmVhdHRhY2goKTsKKworICAgIGJvb2wgY2hpbGROZWVkc1N0
eWxlUmVjYWxjKCk7CisgICAgYm9vbCBuZWVkc1N0eWxlUmVjYWxjKCk7CisgICAgdm9pZCByZWNh
bGNTaGFkb3dUcmVlU3R5bGUoTm9kZTo6U3R5bGVDaGFuZ2UpOworICAgIHZvaWQgc2V0TmVlZHNS
ZWF0dGFjaEhvc3RDaGlsZHJlbkFuZFNoYWRvdygpOworICAgIHZvaWQgY2xlYXJOZWVkc1JlYXR0
YWNoSG9zdENoaWxkcmVuQW5kU2hhZG93KCk7CisgICAgYm9vbCBuZWVkc1JlYXR0YWNoSG9zdENo
aWxkcmVuQW5kU2hhZG93KCk7CisgICAgdm9pZCByZWF0dGFjaEhvc3RDaGlsZHJlbkFuZFNoYWRv
dygpOworICAgIHZvaWQgaG9zdENoaWxkcmVuQ2hhbmdlZCgpOwogCiAgICAgSW5zZXJ0aW9uUG9p
bnQqIGluc2VydGlvblBvaW50Rm9yKE5vZGUqKSBjb25zdDsKIApAQCAtNzUsNiArODMsNyBAQCBw
cml2YXRlOgogCiAgICAgRG91Ymx5TGlua2VkTGlzdDxTaGFkb3dSb290PiBtX3NoYWRvd1Jvb3Rz
OwogICAgIE93blB0cjxIVE1MQ29udGVudFNlbGVjdG9yPiBtX3NlbGVjdG9yOworICAgIGJvb2wg
bV9uZWVkc1JlY2FsY3VsYXRlQ29udGVudCA6IDE7CiAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUo
U2hhZG93Um9vdExpc3QpOwogfTsKIApAQCAtOTgsNiArMTA3LDExIEBAIGlubGluZSBIVE1MQ29u
dGVudFNlbGVjdG9yKiBTaGFkb3dSb290TGlzdDo6c2VsZWN0b3IoKSBjb25zdAogICAgIHJldHVy
biBtX3NlbGVjdG9yLmdldCgpOwogfQogCitpbmxpbmUgdm9pZCBTaGFkb3dSb290TGlzdDo6Y2xl
YXJOZWVkc1JlYXR0YWNoSG9zdENoaWxkcmVuQW5kU2hhZG93KCkKK3sKKyAgICBtX25lZWRzUmVj
YWxjdWxhdGVDb250ZW50ID0gZmFsc2U7Cit9CisKIGlubGluZSBFbGVtZW50KiBTaGFkb3dSb290
TGlzdDo6aG9zdCgpIGNvbnN0CiB7CiAgICAgQVNTRVJUKGhhc1NoYWRvd1Jvb3QoKSk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9IVE1MQ29udGVudEVsZW1lbnQuY3Bw
IGIvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvSFRNTENvbnRlbnRFbGVtZW50LmNwcAppbmRl
eCAwNmJlMjMwMzg4ZWUxOTEwODUzN2M0MzhiNjI1YTZhYWQwY2VkNzZhLi45ODlhY2FlZTY0YjY2
MTAxODZjNTgwZTIzOWExMDhiMmUzNmViMjhhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9o
dG1sL3NoYWRvdy9IVE1MQ29udGVudEVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0
bWwvc2hhZG93L0hUTUxDb250ZW50RWxlbWVudC5jcHAKQEAgLTc0LDcgKzc0LDcgQEAgdm9pZCBI
VE1MQ29udGVudEVsZW1lbnQ6OmF0dGFjaCgpCiAKICAgICAvLyBCZWZvcmUgY2FsbGluZyBTdHls
ZWRFbGVtZW50OjphdHRhY2gsIHNlbGVjdG9yIG11c3QgYmUgY2FsY3VsYXRlZC4KICAgICBpZiAo
cm9vdCkgewotICAgICAgICBIVE1MQ29udGVudFNlbGVjdG9yKiBzZWxlY3RvciA9IHJvb3QtPmhv
c3QoKS0+c2hhZG93Um9vdExpc3QoKS0+ZW5zdXJlU2VsZWN0b3IoKTsKKyAgICAgICAgSFRNTENv
bnRlbnRTZWxlY3Rvciogc2VsZWN0b3IgPSByb290LT5saXN0KCktPmVuc3VyZVNlbGVjdG9yKCk7
CiAgICAgICAgIHNlbGVjdG9yLT51bnNlbGVjdCgmbV9zZWxlY3Rpb25zKTsKICAgICAgICAgc2Vs
ZWN0b3ItPnNlbGVjdCh0aGlzLCAmbV9zZWxlY3Rpb25zKTsKICAgICB9CkBAIC05MCwxMiArOTAs
MTIgQEAgdm9pZCBIVE1MQ29udGVudEVsZW1lbnQ6OmF0dGFjaCgpCiB2b2lkIEhUTUxDb250ZW50
RWxlbWVudDo6ZGV0YWNoKCkKIHsKICAgICBpZiAoU2hhZG93Um9vdCogcm9vdCA9IHRvU2hhZG93
Um9vdChzaGFkb3dUcmVlUm9vdE5vZGUoKSkpIHsKLSAgICAgICAgaWYgKEhUTUxDb250ZW50U2Vs
ZWN0b3IqIHNlbGVjdG9yID0gcm9vdC0+aG9zdCgpLT5zaGFkb3dSb290TGlzdCgpLT5zZWxlY3Rv
cigpKQorICAgICAgICBpZiAoSFRNTENvbnRlbnRTZWxlY3Rvciogc2VsZWN0b3IgPSByb290LT5s
aXN0KCktPnNlbGVjdG9yKCkpCiAgICAgICAgICAgICBzZWxlY3Rvci0+dW5zZWxlY3QoJm1fc2Vs
ZWN0aW9ucyk7CiAKICAgICAgICAgLy8gV2hlbiBjb250ZW50IGVsZW1lbnQgaXMgZGV0YWNoZWQs
IHNoYWRvdyB0cmVlIHNob3VsZCBiZSByZWNyZWF0ZWQgdG8gcmUtY2FsY3VsYXRlIHNlbGVjdG9y
IGZvcgogICAgICAgICAvLyBvdGhlciBjb250ZW50IGVsZW1lbnRzLgotICAgICAgICByb290LT5z
ZXROZWVkc1JlYXR0YWNoSG9zdENoaWxkcmVuQW5kU2hhZG93KCk7CisgICAgICAgIHJvb3QtPmxp
c3QoKS0+c2V0TmVlZHNSZWF0dGFjaEhvc3RDaGlsZHJlbkFuZFNoYWRvdygpOwogICAgIH0KIAog
ICAgIEFTU0VSVChtX3NlbGVjdGlvbnMuaXNFbXB0eSgpKTsKQEAgLTEyMiw3ICsxMjIsNyBAQCB2
b2lkIEhUTUxDb250ZW50RWxlbWVudDo6cGFyc2VBdHRyaWJ1dGUoQXR0cmlidXRlKiBhdHRyKQog
ewogICAgIGlmIChhdHRyLT5uYW1lKCkgPT0gc2VsZWN0QXR0cikgewogICAgICAgICBpZiAoU2hh
ZG93Um9vdCogcm9vdCA9IHRvU2hhZG93Um9vdChzaGFkb3dUcmVlUm9vdE5vZGUoKSkpCi0gICAg
ICAgICAgICByb290LT5zZXROZWVkc1JlYXR0YWNoSG9zdENoaWxkcmVuQW5kU2hhZG93KCk7Cisg
ICAgICAgICAgICByb290LT5saXN0KCktPnNldE5lZWRzUmVhdHRhY2hIb3N0Q2hpbGRyZW5BbmRT
aGFkb3coKTsKICAgICB9IGVsc2UKICAgICAgICAgSW5zZXJ0aW9uUG9pbnQ6OnBhcnNlQXR0cmli
dXRlKGF0dHIpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5h
bHMuY3BwIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuY3BwCmluZGV4IDg0ZTlj
Zjc1NDA5NDlmOGQ3ZTEyYjVkZGZhMGM3ODIxMmQ0YmYyYTguLjU4ZmI0MjZkYTA2OWVkZWRlODcw
OGY1Y2ViNTIyNzJiOTRiYzQxNjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Rlc3Rpbmcv
SW50ZXJuYWxzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5jcHAK
QEAgLTExOSw2ICsxMTksMTQgQEAgSW50ZXJuYWxzOjpJbnRlcm5hbHMoRG9jdW1lbnQqIGRvY3Vt
ZW50KQogICAgIHJlc2V0KGRvY3VtZW50KTsKIH0KIAorU3RyaW5nIEludGVybmFsczo6YWRkcmVz
cyhOb2RlKiBub2RlKQoreworICAgIGNoYXIgYnVmWzMyXTsKKyAgICBzcHJpbnRmKGJ1ZiwgIiVw
Iiwgbm9kZSk7CisKKyAgICByZXR1cm4gU3RyaW5nKGJ1Zik7Cit9CisKIGJvb2wgSW50ZXJuYWxz
Ojppc1ByZWxvYWRlZChEb2N1bWVudCogZG9jdW1lbnQsIGNvbnN0IFN0cmluZyYgdXJsKQogewog
ICAgIGlmICghZG9jdW1lbnQpCkBAIC0yNDEsNiArMjQ5LDI2IEBAIEludGVybmFsczo6U2hhZG93
Um9vdElmU2hhZG93RE9NRW5hYmxlZE9yTm9kZSogSW50ZXJuYWxzOjpvbGRlc3RTaGFkb3dSb290
KEVsZW1lCiAgICAgcmV0dXJuIGhvc3QtPnNoYWRvd1Jvb3RMaXN0KCktPm9sZGVzdFNoYWRvd1Jv
b3QoKTsKIH0KIAorSW50ZXJuYWxzOjpTaGFkb3dSb290SWZTaGFkb3dET01FbmFibGVkT3JOb2Rl
KiBJbnRlcm5hbHM6OnlvdW5nZXJTaGFkb3dSb290KE5vZGUqIHNoYWRvdywgRXhjZXB0aW9uQ29k
ZSYgZWMpCit7CisgICAgaWYgKCFzaGFkb3cgfHwgIXNoYWRvdy0+aXNTaGFkb3dSb290KCkpIHsK
KyAgICAgICAgZWMgPSBJTlZBTElEX0FDQ0VTU19FUlI7CisgICAgICAgIHJldHVybiAwOworICAg
IH0KKworICAgIHJldHVybiB0b1NoYWRvd1Jvb3Qoc2hhZG93KS0+eW91bmdlclNoYWRvd1Jvb3Qo
KTsKK30KKworSW50ZXJuYWxzOjpTaGFkb3dSb290SWZTaGFkb3dET01FbmFibGVkT3JOb2RlKiBJ
bnRlcm5hbHM6Om9sZGVyU2hhZG93Um9vdChOb2RlKiBzaGFkb3csIEV4Y2VwdGlvbkNvZGUmIGVj
KQoreworICAgIGlmICghc2hhZG93IHx8ICFzaGFkb3ctPmlzU2hhZG93Um9vdCgpKSB7CisgICAg
ICAgIGVjID0gSU5WQUxJRF9BQ0NFU1NfRVJSOworICAgICAgICByZXR1cm4gMDsKKyAgICB9CisK
KyAgICByZXR1cm4gdG9TaGFkb3dSb290KHNoYWRvdyktPm9sZGVyU2hhZG93Um9vdCgpOworfQor
CiB2b2lkIEludGVybmFsczo6cmVtb3ZlU2hhZG93Um9vdChFbGVtZW50KiBob3N0LCBFeGNlcHRp
b25Db2RlJiBlYykKIHsKICAgICBpZiAoIWhvc3QpIHsKQEAgLTI0OCw3ICsyNzYsNyBAQCB2b2lk
IEludGVybmFsczo6cmVtb3ZlU2hhZG93Um9vdChFbGVtZW50KiBob3N0LCBFeGNlcHRpb25Db2Rl
JiBlYykKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIGhvc3QtPnJlbW92ZVNoYWRvd1Jv
b3QoKTsKKyAgICBob3N0LT5yZW1vdmVTaGFkb3dSb290TGlzdCgpOwogfQogCiB2b2lkIEludGVy
bmFsczo6c2V0TXVsdGlwbGVTaGFkb3dTdWJ0cmVlc0VuYWJsZWQoYm9vbCBlbmFibGVkKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuaCBiL1NvdXJjZS9XZWJD
b3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmgKaW5kZXggZWEyZjhiOGFmMmMxMWNjZmMwYTZjZWY5Y2Nh
OGU2ZjQ0ZDA1YzU2ZC4uMDc0Mjg2YzQwNDBlYjljYjkyOTYwYjY4N2Y0MTg1NWZjMDEyZGU3YSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5oCkBAIC01NSw2ICs1NSw4IEBAIHB1YmxpYzoK
IAogICAgIFN0cmluZyBlbGVtZW50UmVuZGVyVHJlZUFzVGV4dChFbGVtZW50KiwgRXhjZXB0aW9u
Q29kZSYpOwogCisgICAgU3RyaW5nIGFkZHJlc3MoTm9kZSopOworCiAgICAgYm9vbCBpc1ByZWxv
YWRlZChEb2N1bWVudCosIGNvbnN0IFN0cmluZyYgdXJsKTsKIAogICAgIHNpemVfdCBudW1iZXJP
ZlNjb3BlZEhUTUxTdHlsZUNoaWxkcmVuKGNvbnN0IE5vZGUqLCBFeGNlcHRpb25Db2RlJikgY29u
c3Q7CkBAIC02OCw2ICs3MCw4IEBAIHB1YmxpYzoKICAgICBTaGFkb3dSb290SWZTaGFkb3dET01F
bmFibGVkT3JOb2RlKiBzaGFkb3dSb290KEVsZW1lbnQqIGhvc3QsIEV4Y2VwdGlvbkNvZGUmKTsK
ICAgICBTaGFkb3dSb290SWZTaGFkb3dET01FbmFibGVkT3JOb2RlKiB5b3VuZ2VzdFNoYWRvd1Jv
b3QoRWxlbWVudCogaG9zdCwgRXhjZXB0aW9uQ29kZSYpOwogICAgIFNoYWRvd1Jvb3RJZlNoYWRv
d0RPTUVuYWJsZWRPck5vZGUqIG9sZGVzdFNoYWRvd1Jvb3QoRWxlbWVudCogaG9zdCwgRXhjZXB0
aW9uQ29kZSYpOworICAgIFNoYWRvd1Jvb3RJZlNoYWRvd0RPTUVuYWJsZWRPck5vZGUqIHlvdW5n
ZXJTaGFkb3dSb290KE5vZGUqIHNoYWRvdywgRXhjZXB0aW9uQ29kZSYpOworICAgIFNoYWRvd1Jv
b3RJZlNoYWRvd0RPTUVuYWJsZWRPck5vZGUqIG9sZGVyU2hhZG93Um9vdChOb2RlKiBzaGFkb3cs
IEV4Y2VwdGlvbkNvZGUmKTsKICAgICB2b2lkIHJlbW92ZVNoYWRvd1Jvb3QoRWxlbWVudCogaG9z
dCwgRXhjZXB0aW9uQ29kZSYpOwogICAgIHZvaWQgc2V0TXVsdGlwbGVTaGFkb3dTdWJ0cmVlc0Vu
YWJsZWQoYm9vbCk7CiAgICAgRWxlbWVudCogaW5jbHVkZXJGb3IoTm9kZSosIEV4Y2VwdGlvbkNv
ZGUmKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmlkbCBi
L1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmlkbAppbmRleCBiYTc2ZDQ4NmRkZTg5
NzExMjg4ZmIwNDkzYzEzNzRiYjgxNmM4MmNhLi5iZDRlZmY3MzgwODZhNTRmNjBiNmEyZmVjMTE0
MGEyZmJjYjhjZDM2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFs
cy5pZGwKKysrIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuaWRsCkBAIC0yNyw2
ICsyNyw4IEBAIG1vZHVsZSB3aW5kb3cgewogICAgIGludGVyZmFjZSBbCiAgICAgICAgIE9taXRD
b25zdHJ1Y3RvcgogICAgIF0gSW50ZXJuYWxzIHsKKyAgICAgICAgRE9NU3RyaW5nIGFkZHJlc3Mo
aW4gTm9kZSBub2RlKTsKKwogICAgICAgICBET01TdHJpbmcgZWxlbWVudFJlbmRlclRyZWVBc1Rl
eHQoaW4gRWxlbWVudCBlbGVtZW50KSByYWlzZXMoRE9NRXhjZXB0aW9uKTsKICAgICAgICAgYm9v
bGVhbiBpc1ByZWxvYWRlZChpbiBEb2N1bWVudCBkb2N1bWVudCwgaW4gRE9NU3RyaW5nIHVybCk7
CiAKQEAgLTM3LDExICszOSwxNSBAQCBtb2R1bGUgd2luZG93IHsKICAgICAgICAgU2hhZG93Um9v
dCBzaGFkb3dSb290KGluIEVsZW1lbnQgaG9zdCkgcmFpc2VzIChET01FeGNlcHRpb24pOwogICAg
ICAgICBTaGFkb3dSb290IHlvdW5nZXN0U2hhZG93Um9vdChpbiBFbGVtZW50IGhvc3QpIHJhaXNl
cyAoRE9NRXhjZXB0aW9uKTsKICAgICAgICAgU2hhZG93Um9vdCBvbGRlc3RTaGFkb3dSb290KGlu
IEVsZW1lbnQgaG9zdCkgcmFpc2VzIChET01FeGNlcHRpb24pOworICAgICAgICBTaGFkb3dSb290
IHlvdW5nZXJTaGFkb3dSb290KGluIE5vZGUgcm9vdCkgcmFpc2VzIChET01FeGNlcHRpb24pOwor
ICAgICAgICBTaGFkb3dSb290IG9sZGVyU2hhZG93Um9vdChpbiBOb2RlIHJvb3QpIHJhaXNlcyAo
RE9NRXhjZXB0aW9uKTsKICNlbHNlCiAgICAgICAgIE5vZGUgZW5zdXJlU2hhZG93Um9vdChpbiBF
bGVtZW50IGhvc3QpIHJhaXNlcyAoRE9NRXhjZXB0aW9uKTsKICAgICAgICAgTm9kZSBzaGFkb3dS
b290KGluIEVsZW1lbnQgaG9zdCkgcmFpc2VzIChET01FeGNlcHRpb24pOwogICAgICAgICBOb2Rl
IHlvdW5nZXN0U2hhZG93Um9vdChpbiBFbGVtZW50IGhvc3QpIHJhaXNlcyAoRE9NRXhjZXB0aW9u
KTsKICAgICAgICAgTm9kZSBvbGRlc3RTaGFkb3dSb290KGluIEVsZW1lbnQgaG9zdCkgcmFpc2Vz
IChET01FeGNlcHRpb24pOworICAgICAgICBOb2RlIHlvdW5nZXJTaGFkb3dSb290KGluIE5vZGUg
cm9vdCkgcmFpc2VzIChET01FeGNlcHRpb24pOworICAgICAgICBOb2RlIHlvdW5nZXJTaGFkb3dS
b290KGluIE5vZGUgcm9vdCkgcmFpc2VzIChET01FeGNlcHRpb24pOwogI2VuZGlmCiAgICAgICAg
IHZvaWQgc2V0TXVsdGlwbGVTaGFkb3dTdWJ0cmVlc0VuYWJsZWQoaW4gYm9vbGVhbiBlbmFibGVk
KTsKICAgICAgICAgRWxlbWVudCBpbmNsdWRlckZvcihpbiBOb2RlIG5vZGUpIHJhaXNlcyAoRE9N
RXhjZXB0aW9uKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL3dpbi9XZWJLaXQyLmRlZiBi
L1NvdXJjZS9XZWJLaXQyL3dpbi9XZWJLaXQyLmRlZgppbmRleCA3MThkZmExOGJiNmRhN2ExYzkw
M2I2MjUxNTg5NGI1MWM5ZjBhMTE3Li4zZjlhNWVlYWY1MTAwM2ZhMDNmYTQ2YTMzY2UxZWY5OWEy
NjMzYjM1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi93aW4vV2ViS2l0Mi5kZWYKKysrIGIv
U291cmNlL1dlYktpdDIvd2luL1dlYktpdDIuZGVmCkBAIC0xNzYsNyArMTc2LDcgQEAgRVhQT1JU
UwogICAgICAgICA/cGFnZUBEb2N1bWVudEBXZWJDb3JlQEBRQkVQQVZQYWdlQDJAWFoKICAgICAg
ICAgP3BhaW50Q29udHJvbFRpbnRzQEZyYW1lVmlld0BXZWJDb3JlQEBBQUVYWFoKICAgICAgICAg
P3JhbmdlRnJvbUxvY2F0aW9uQW5kTGVuZ3RoQFRleHRJdGVyYXRvckBXZWJDb3JlQEBTQT9BVj8k
UGFzc1JlZlB0ckBWUmFuZ2VAV2ViQ29yZUBAQFdURkBAUEFWRWxlbWVudEAyQEhIX05AWgotICAg
ICAgICA/cmVtb3ZlU2hhZG93Um9vdEBFbGVtZW50QFdlYkNvcmVAQFFBRVhYWgorICAgICAgICA/
cmVtb3ZlU2hhZG93Um9vdExpc3RARWxlbWVudEBXZWJDb3JlQEBRQUVYWFoKICAgICAgICAgP3Nj
cmlwdEV4ZWN1dGlvbkNvbnRleHRASlNET01HbG9iYWxPYmplY3RAV2ViQ29yZUBAUUJFUEFWU2Ny
aXB0RXhlY3V0aW9uQ29udGV4dEAyQFhaCiAgICAgICAgID9zY3JvbGxFbGVtZW50VG9SZWN0QEZy
YW1lVmlld0BXZWJDb3JlQEBRQUVYUEFWRWxlbWVudEAyQEFCVkludFJlY3RAMkBAWgogICAgICAg
ICA/c2V0RE9NRXhjZXB0aW9uQFdlYkNvcmVAQFlBWFBBVkV4ZWNTdGF0ZUBKU0NAQEhAWgpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdDIvd2luL1dlYktpdDJDRkxpdGUuZGVmIGIvU291cmNlL1dl
YktpdDIvd2luL1dlYktpdDJDRkxpdGUuZGVmCmluZGV4IGNiN2I3Y2U2OTZlMTJkMWI5ZmUxYjUy
NzlkNmJiNmIzYmY1MDI3NGQuLmQ3ZDNkYmI0ZTg3M2ExOTc2YzJkZWQ0ODg0NDlkOTJhN2EzYjQ1
YzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL3dpbi9XZWJLaXQyQ0ZMaXRlLmRlZgorKysg
Yi9Tb3VyY2UvV2ViS2l0Mi93aW4vV2ViS2l0MkNGTGl0ZS5kZWYKQEAgLTE3MSw3ICsxNzEsNyBA
QCBFWFBPUlRTCiAgICAgICAgID9wYWdlQERvY3VtZW50QFdlYkNvcmVAQFFCRVBBVlBhZ2VAMkBY
WgogICAgICAgICA/cGFpbnRDb250cm9sVGludHNARnJhbWVWaWV3QFdlYkNvcmVAQEFBRVhYWgog
ICAgICAgICA/cmFuZ2VGcm9tTG9jYXRpb25BbmRMZW5ndGhAVGV4dEl0ZXJhdG9yQFdlYkNvcmVA
QFNBP0FWPyRQYXNzUmVmUHRyQFZSYW5nZUBXZWJDb3JlQEBAV1RGQEBQQVZFbGVtZW50QDJASEhf
TkBaCi0gICAgICAgID9yZW1vdmVTaGFkb3dSb290QEVsZW1lbnRAV2ViQ29yZUBAUUFFWFhaCisg
ICAgICAgID9yZW1vdmVTaGFkb3dSb290TGlzdEBFbGVtZW50QFdlYkNvcmVAQFFBRVhYWgogICAg
ICAgICA/c2NyaXB0RXhlY3V0aW9uQ29udGV4dEBKU0RPTUdsb2JhbE9iamVjdEBXZWJDb3JlQEBR
QkVQQVZTY3JpcHRFeGVjdXRpb25Db250ZXh0QDJAWFoKICAgICAgICAgP3Njcm9sbEVsZW1lbnRU
b1JlY3RARnJhbWVWaWV3QFdlYkNvcmVAQFFBRVhQQVZFbGVtZW50QDJAQUJWSW50UmVjdEAyQEBa
CiAgICAgICAgID9zZXRET01FeGNlcHRpb25AV2ViQ29yZUBAWUFYUEFWRXhlY1N0YXRlQEpTQ0BA
SEBaCmRpZmYgLS1naXQgYS9Tb3VyY2UvYXV0b3Rvb2xzL3N5bWJvbHMuZmlsdGVyIGIvU291cmNl
L2F1dG90b29scy9zeW1ib2xzLmZpbHRlcgppbmRleCBlZjcwZDgxYTRmYTdjZGUxOGVhYmIxZDM5
OWU5OWQzMzU1NjA5ZDNjLi45MDY1ZTk0YjBmMmE5MWE0NmU1NTM4ZjNmOTE1MGNjMDUwYzE4NjY3
IDEwMDY0NAotLS0gYS9Tb3VyY2UvYXV0b3Rvb2xzL3N5bWJvbHMuZmlsdGVyCisrKyBiL1NvdXJj
ZS9hdXRvdG9vbHMvc3ltYm9scy5maWx0ZXIKQEAgLTY2LDcgKzY2LDcgQEAgX1pON1dlYkNvcmU2
SlNOb2RlMTBwdXRWaXJ0dWFsRVBOM0pTQzlFeGVjU3RhdGVFUktOUzFfMTBJZGVudGlmaWVyRU5T
MV83SlNWYWx1ZUUKIF9aTjdXZWJDb3JlNkpTTm9kZTIwdmlzaXRDaGlsZHJlblZpcnR1YWxFUk4z
SlNDMTFTbG90VmlzaXRvckU7CiBfWk43V2ViQ29yZTZKU05vZGU2c19pbmZvRTsKIF9aTjdXZWJD
b3JlNnRvTm9kZUVOM0pTQzdKU1ZhbHVlRTsKLV9aTjdXZWJDb3JlN0VsZW1lbnQxNnJlbW92ZVNo
YWRvd1Jvb3RFdjsKK19aTjdXZWJDb3JlN0VsZW1lbnQyMHJlbW92ZVNoYWRvd1Jvb3RMaXN0RXY7
CiBfWk43V2ViQ29yZTd0b1JhbmdlRU4zSlNDN0pTVmFsdWVFOwogX1pON1dlYkNvcmU5SlNFbGVt
ZW50MTBwdXRWaXJ0dWFsRVBOM0pTQzlFeGVjU3RhdGVFUktOUzFfMTBJZGVudGlmaWVyRU5TMV83
SlNWYWx1ZUVSTlMxXzE1UHV0UHJvcGVydHlTbG90RTsKIF9aTjdXZWJDb3JlOUpTRWxlbWVudDZz
X2luZm9FOwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9kb20vcmVzb3VyY2VzL3NoYWRv
dy10ZXN0LWRyaXZlci5qcyBiL0xheW91dFRlc3RzL2Zhc3QvZG9tL3Jlc291cmNlcy9zaGFkb3ct
dGVzdC1kcml2ZXIuanMKaW5kZXggOTllM2ViZjZmN2U1MmVkZGViYjViMzBlNDg5YjBiNmVkYTRl
MGNiZS4uMGZmNWQ0MDU4ZTIwN2MxZDBiMjlmMjE4YjAyOTEyY2ZjYjViOTBmMCAxMDA2NDQKLS0t
IGEvTGF5b3V0VGVzdHMvZmFzdC9kb20vcmVzb3VyY2VzL3NoYWRvdy10ZXN0LWRyaXZlci5qcwor
KysgYi9MYXlvdXRUZXN0cy9mYXN0L2RvbS9yZXNvdXJjZXMvc2hhZG93LXRlc3QtZHJpdmVyLmpz
CkBAIC01Myw5ICs1MywxMSBAQCBmdW5jdGlvbiBjaGVjaygpIHsKICAgICB9CiB9CiAKLWZ1bmN0
aW9uIGNyZWF0ZVNwYW5XaXRoVGV4dCh0ZXh0KSB7CitmdW5jdGlvbiBjcmVhdGVTcGFuV2l0aFRl
eHQodGV4dCwgY2xhc3NOYW1lKSB7CiAgICAgdmFyIHNwYW4gPSBkb2N1bWVudC5jcmVhdGVFbGVt
ZW50KCdzcGFuJyk7CiAgICAgc3Bhbi5hcHBlbmRDaGlsZChkb2N1bWVudC5jcmVhdGVUZXh0Tm9k
ZSh0ZXh0KSk7CisgICAgaWYgKGNsYXNzTmFtZSkKKyAgICAgICAgc3Bhbi5jbGFzc05hbWUgPSBj
bGFzc05hbWU7CiAgICAgcmV0dXJuIHNwYW47CiB9CiAKQEAgLTExOCwxMSArMTIwLDE2IEBAIGZ1
bmN0aW9uIGRvVGVzdElmTGVmdChyZXN0VGVzdHMpIHsKIAogZnVuY3Rpb24gZG9uZVRlc3QoKSB7
CiAgICAgbG9nKCJURVNUIENPTVBMRVRFRCIpOworICAgIGlmICh3aW5kb3cudGVhckRvd25PbmNl
KQorICAgICAgICB3aW5kb3cudGVhckRvd25PbmNlKCk7CiAgICAgbGF5b3V0VGVzdENvbnRyb2xs
ZXIubm90aWZ5RG9uZSgpOwogfQogCiAvLyBBIHRlc3QgZHJpdmVyLiBDYWxsIHRoaXMgYm9keS5v
bmxvYWQuCiBmdW5jdGlvbiBkb1Rlc3QodGVzdHMpIHsKKyAgICBpZiAod2luZG93LnNldFVwT25j
ZSkKKyAgICAgICAgd2luZG93LnNldFVwT25jZSgpOworCiAgICAgaWYgKHdpbmRvdy5sYXlvdXRU
ZXN0Q29udHJvbGxlcikgewogICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci53YWl0VW50aWxE
b25lKCk7CiAgICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZG9tL3NoYWRvdy9tdWx0aXBsZS1zaGFkb3dyb290LWV4
cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2Zhc3QvZG9tL3NoYWRvdy9tdWx0aXBsZS1zaGFkb3dy
b290LWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5hYTNkZWRkYzg1NTZjZDdjZTJiZDc1YjYxNTUz
ZmM1MGU1ODc3NWYzCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9kb20vc2hh
ZG93L211bHRpcGxlLXNoYWRvd3Jvb3QtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMTcgQEAKK1Ro
aXMgdGVzdCBlbnN1cmUgdGhhdCB0aGUgbXVsdGlwbGUgc2hhZG93IHJvb3QgaXMgYXZhaWxhYmxl
LgorCitPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2Vz
LCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCisKKworUEFTUyBpbnRlcm5hbHMuc2hhZG93
Um9vdChkaXYpIGlzIG51bGwKK1BBU1MgaW50ZXJuYWxzLnNoYWRvd1Jvb3QoZGl2KSBpcyBzaGFk
b3dSb290MQorUEFTUyBpbnRlcm5hbHMub2xkZXJTaGFkb3dSb290KHNoYWRvd1Jvb3QxKSBpcyBu
dWxsCitQQVNTIGludGVybmFscy5zaGFkb3dSb290KGRpdikgaXMgc2hhZG93Um9vdDIKK1BBU1Mg
aW50ZXJuYWxzLm9sZGVyU2hhZG93Um9vdChzaGFkb3dSb290MikgaXMgc2hhZG93Um9vdDEKK1BB
U1MgaW50ZXJuYWxzLnNoYWRvd1Jvb3QoZGl2KSBpcyBzaGFkb3dSb290MworUEFTUyBpbnRlcm5h
bHMub2xkZXJTaGFkb3dSb290KHNoYWRvd1Jvb3QzKSBpcyBzaGFkb3dSb290MgorUEFTUyBpbnRl
cm5hbHMuc2hhZG93Um9vdChkaXYpIGlzIG51bGwKK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlz
IHRydWUKKworVEVTVCBDT01QTEVURQorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2Rv
bS9zaGFkb3cvbXVsdGlwbGUtc2hhZG93cm9vdC1yZW5kZXJpbmctZXhwZWN0ZWQudHh0IGIvTGF5
b3V0VGVzdHMvZmFzdC9kb20vc2hhZG93L211bHRpcGxlLXNoYWRvd3Jvb3QtcmVuZGVyaW5nLWV4
cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi43YjlmMDU2MGE3MTg2YjIyN2Y1OTFlNjgxOWE2Yjc1MGQ5
ZGQyMmQzCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9kb20vc2hhZG93L211
bHRpcGxlLXNoYWRvd3Jvb3QtcmVuZGVyaW5nLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDE0IEBA
Cit0ZXN0RG91YmxlU2hhZG93U3VidHJlZXMKK1BBU1MKK3Rlc3RUcmlwbGVTaGFkb3dTdWJ0cmVl
cworUEFTUwordGVzdFNoYWRvd1N1YnRyZWVzV2l0aENvbnRlbnQKK1BBU1MKK3Rlc3RTaGFkb3dT
dWJ0cmVlc1dpdGhDb250ZW50SW5PbGRlclN1YnRyZWUKK1BBU1MKK3Rlc3RTaGFkb3dTdWJ0cmVl
c1dpdGhEeW5hbWljQ3JlYXRpb24KK1BBU1MKK3Rlc3RTaGFkb3dTdWJ0cmVlc1dpdGhEeW5hbWlj
Q3JlYXRpb25PdXRPZlRyZWUKK1BBU1MKK1RFU1QgQ09NUExFVEVECisKZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2Zhc3QvZG9tL3NoYWRvdy9tdWx0aXBsZS1zaGFkb3dyb290LXJlbmRlcmluZy5o
dG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9kb20vc2hhZG93L211bHRpcGxlLXNoYWRvd3Jvb3QtcmVu
ZGVyaW5nLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMWViZGUyNjM5OTZlODZjZGEzZWQ1NmFjMTgzNDU1YTI5
MGVkY2YzZgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZG9tL3NoYWRvdy9t
dWx0aXBsZS1zaGFkb3dyb290LXJlbmRlcmluZy5odG1sCkBAIC0wLDAgKzEsMTc0IEBACis8IURP
Q1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8c3R5bGU+CisvKiByZWxhdGl2ZSBwb3NpdGlv
bmluZyBlbnN1cmVzIHVuZGVybHlpbmcgUmVuZGVyTGF5ZXIgKi8KKy5jb250YWluZXIgeworICAg
IHBvc2l0aW9uOiByZWxhdGl2ZTsKK30KKworLnNwYW4geworICAgIGRpc3BsYXk6IGJveGVkLWlu
bGluZTsKKyAgICBtYXJnaW46IDJweDsKKyAgICBib3JkZXI6IHNvbGlkOworfQorPC9zdHlsZT4K
KzxzY3JpcHQgc3JjPSIuLi9yZXNvdXJjZXMvc2hhZG93LXRlc3QtZHJpdmVyLmpzIj48L3Njcmlw
dD4KKzxzY3JpcHQ+CitmdW5jdGlvbiBzZXRVcE9uY2UoKSB7CisgICAgaW50ZXJuYWxzLnNldE11
bHRpcGxlU2hhZG93U3VidHJlZXNFbmFibGVkKHRydWUpOworfQorCitmdW5jdGlvbiB0ZWF0RG93
bk9uY2UoKSB7CisgICAgaW50ZXJuYWxzLnNldE11bHRpcGxlU2hhZG93U3VidHJlZXNFbmFibGVk
KGZhbHNlKTsKK30KKwordmFyIHRlc3RGdW5jcyA9IFtdOworCit0ZXN0RnVuY3MucHVzaChmdW5j
dGlvbiB0ZXN0RG91YmxlU2hhZG93U3VidHJlZXMoY2FsbElmRG9uZSkgeworICAgIGRvY3VtZW50
LmdldEVsZW1lbnRCeUlkKCdleHBlY3QtY29udGFpbmVyJykuaW5uZXJIVE1MID0gIjxkaXY+PHNw
YW4+QkVGT1JFPC9zcGFuPjxzcGFuPk1JRDwvc3Bhbj48c3Bhbj5BRlRFUjwvc3Bhbj48L2Rpdj4i
OworCisgICAgdmFyIHJvb3QgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTsKKyAgICBy
b290LmFwcGVuZENoaWxkKGNyZWF0ZVNwYW5XaXRoVGV4dCgnTElHSFQnKSk7CisKKyAgICB2YXIg
c3IxID0gbmV3IFdlYktpdFNoYWRvd1Jvb3Qocm9vdCk7CisgICAgc3IxLmFwcGVuZENoaWxkKGNy
ZWF0ZVNwYW5XaXRoVGV4dCgnQkVGT1JFOiBTSE9VTEQgTk9UIEJFIFJFTkRFUkVEJykpOworICAg
IHNyMS5hcHBlbmRDaGlsZChjcmVhdGVTcGFuV2l0aFRleHQoJ01JRDogU0hPVUxEIE5PVCBCRSBS
RU5ERVJFRCcpKTsKKyAgICBzcjEuYXBwZW5kQ2hpbGQoY3JlYXRlU3BhbldpdGhUZXh0KCdBRlRF
UjogU0hPVUxEIE5PVCBCRSBSRU5ERVJFRCcpKTsKKworICAgIHZhciBzcjIgPSBuZXcgV2ViS2l0
U2hhZG93Um9vdChyb290KTsKKyAgICBzcjIuYXBwZW5kQ2hpbGQoY3JlYXRlU3BhbldpdGhUZXh0
KCdCRUZPUkUnKSk7CisgICAgc3IyLmFwcGVuZENoaWxkKGNyZWF0ZVNwYW5XaXRoVGV4dCgnTUlE
JykpOworICAgIHNyMi5hcHBlbmRDaGlsZChjcmVhdGVTcGFuV2l0aFRleHQoJ0FGVEVSJykpOwor
CisgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2FjdHVhbC1jb250YWluZXInKS5hcHBlbmRD
aGlsZChyb290KTsKKworICAgIGNhbGxJZkRvbmUoKTsKK30pOworCit0ZXN0RnVuY3MucHVzaChm
dW5jdGlvbiB0ZXN0VHJpcGxlU2hhZG93U3VidHJlZXMoY2FsbElmRG9uZSkgeworICAgIGRvY3Vt
ZW50LmdldEVsZW1lbnRCeUlkKCdleHBlY3QtY29udGFpbmVyJykuaW5uZXJIVE1MID0gIjxkaXY+
PHNwYW4+QkVGT1JFPC9zcGFuPjxzcGFuPk1JRDwvc3Bhbj48c3Bhbj5BRlRFUjwvc3Bhbj48L2Rp
dj4iOworCisgICAgdmFyIHJvb3QgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTsKKyAg
ICByb290LmFwcGVuZENoaWxkKGNyZWF0ZVNwYW5XaXRoVGV4dCgnTElHSFQnKSk7CisKKyAgICB2
YXIgc3IxID0gbmV3IFdlYktpdFNoYWRvd1Jvb3Qocm9vdCk7CisgICAgc3IxLmFwcGVuZENoaWxk
KGNyZWF0ZVNwYW5XaXRoVGV4dCgnQkVGT1JFOiBTSE9VTEQgTk9UIEJFIFJFTkRFUkVEJykpOwor
ICAgIHNyMS5hcHBlbmRDaGlsZChjcmVhdGVTcGFuV2l0aFRleHQoJ01JRDogU0hPVUxEIE5PVCBC
RSBSRU5ERVJFRCcpKTsKKyAgICBzcjEuYXBwZW5kQ2hpbGQoY3JlYXRlU3BhbldpdGhUZXh0KCdB
RlRFUjogU0hPVUxEIE5PVCBCRSBSRU5ERVJFRCcpKTsKKworICAgIHZhciBzcjIgPSBuZXcgV2Vi
S2l0U2hhZG93Um9vdChyb290KTsKKyAgICBzcjIuYXBwZW5kQ2hpbGQoY3JlYXRlU3BhbldpdGhU
ZXh0KCdCRUZPUkU6IFNIT1VMRCBOT1QgQkUgUkVOREVSRUQnKSk7CisgICAgc3IyLmFwcGVuZENo
aWxkKGNyZWF0ZVNwYW5XaXRoVGV4dCgnTUlEOiBTSE9VTEQgTk9UIEJFIFJFTkRFUkVEJykpOwor
ICAgIHNyMi5hcHBlbmRDaGlsZChjcmVhdGVTcGFuV2l0aFRleHQoJ0FGVEVSOiBTSE9VTEQgTk9U
IEJFIFJFTkRFUkVEJykpOworCisgICAgdmFyIHNyMyA9IG5ldyBXZWJLaXRTaGFkb3dSb290KHJv
b3QpOworICAgIHNyMy5hcHBlbmRDaGlsZChjcmVhdGVTcGFuV2l0aFRleHQoJ0JFRk9SRScpKTsK
KyAgICBzcjMuYXBwZW5kQ2hpbGQoY3JlYXRlU3BhbldpdGhUZXh0KCdNSUQnKSk7CisgICAgc3Iz
LmFwcGVuZENoaWxkKGNyZWF0ZVNwYW5XaXRoVGV4dCgnQUZURVInKSk7CisKKyAgICBkb2N1bWVu
dC5nZXRFbGVtZW50QnlJZCgnYWN0dWFsLWNvbnRhaW5lcicpLmFwcGVuZENoaWxkKHJvb3QpOwor
CisgICAgY2FsbElmRG9uZSgpOworfSk7CisKK3Rlc3RGdW5jcy5wdXNoKGZ1bmN0aW9uIHRlc3RT
aGFkb3dTdWJ0cmVlc1dpdGhDb250ZW50KGNhbGxJZkRvbmUpIHsKKyAgICBkb2N1bWVudC5nZXRF
bGVtZW50QnlJZCgnZXhwZWN0LWNvbnRhaW5lcicpLmlubmVySFRNTCA9ICI8ZGl2PjxzcGFuPkJF
Rk9SRTwvc3Bhbj48c3Bhbj5MSUdIVDwvc3Bhbj48c3Bhbj5BRlRFUjwvc3Bhbj48L2Rpdj4iOwor
CisgICAgdmFyIHJvb3QgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTsKKyAgICByb290
LmFwcGVuZENoaWxkKGNyZWF0ZVNwYW5XaXRoVGV4dCgnTElHSFQnKSk7CisKKyAgICB2YXIgc3Ix
ID0gbmV3IFdlYktpdFNoYWRvd1Jvb3Qocm9vdCk7CisgICAgc3IxLmFwcGVuZENoaWxkKGNyZWF0
ZVNwYW5XaXRoVGV4dCgnQkVGT1JFOiBTSE9VTEQgTk9UIEJFIFJFTkRFUkVEJykpOworICAgIHNy
MS5hcHBlbmRDaGlsZChjcmVhdGVTcGFuV2l0aFRleHQoJ01JRDogU0hPVUxEIE5PVCBCRSBSRU5E
RVJFRCcpKTsKKyAgICBzcjEuYXBwZW5kQ2hpbGQoY3JlYXRlU3BhbldpdGhUZXh0KCdBRlRFUjog
U0hPVUxEIE5PVCBCRSBSRU5ERVJFRCcpKTsKKworICAgIHZhciBzcjIgPSBuZXcgV2ViS2l0U2hh
ZG93Um9vdChyb290KTsKKyAgICBzcjIuYXBwZW5kQ2hpbGQoY3JlYXRlU3BhbldpdGhUZXh0KCdC
RUZPUkUnKSk7CisgICAgc3IyLmFwcGVuZENoaWxkKGNyZWF0ZUNvbnRlbnRXaXRoU2VsZWN0KCdz
cGFuJywgJ0ZBTExCQUNLJykpOworICAgIHNyMi5hcHBlbmRDaGlsZChjcmVhdGVTcGFuV2l0aFRl
eHQoJ0FGVEVSJykpOworCisgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2FjdHVhbC1jb250
YWluZXInKS5hcHBlbmRDaGlsZChyb290KTsKKworICAgIGNhbGxJZkRvbmUoKTsKK30pOworCit0
ZXN0RnVuY3MucHVzaChmdW5jdGlvbiB0ZXN0U2hhZG93U3VidHJlZXNXaXRoQ29udGVudEluT2xk
ZXJTdWJ0cmVlKGNhbGxJZkRvbmUpIHsKKyAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZXhw
ZWN0LWNvbnRhaW5lcicpLmlubmVySFRNTCA9ICI8ZGl2PjxzcGFuPkJFRk9SRTwvc3Bhbj48c3Bh
bj5MSUdIVCAxPC9zcGFuPjxzcGFuPkFGVEVSPC9zcGFuPjwvZGl2PiI7CisKKyAgICB2YXIgcm9v
dCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpOworICAgIHJvb3QuYXBwZW5kQ2hpbGQo
Y3JlYXRlU3BhbldpdGhUZXh0KCdMSUdIVCAxJywgJ2MxJykpOworICAgIHJvb3QuYXBwZW5kQ2hp
bGQoY3JlYXRlU3BhbldpdGhUZXh0KCdMSUdIVCAyJywgJ2MyJykpOworCisgICAgdmFyIHNyMSA9
IG5ldyBXZWJLaXRTaGFkb3dSb290KHJvb3QpOworICAgIHNyMS5hcHBlbmRDaGlsZChjcmVhdGVT
cGFuV2l0aFRleHQoJ0JFRk9SRTogU0hPVUxEIE5PVCBCRSBSRU5ERVJFRCcpKTsKKyAgICBzcjEu
YXBwZW5kQ2hpbGQoY3JlYXRlQ29udGVudFdpdGhTZWxlY3QoJy5jMicsICdGQUxMQkFDSycpKTsK
KyAgICBzcjEuYXBwZW5kQ2hpbGQoY3JlYXRlU3BhbldpdGhUZXh0KCdBRlRFUjogU0hPVUxEIE5P
VCBCRSBSRU5ERVJFRCcpKTsKKworICAgIHZhciBzcjIgPSBuZXcgV2ViS2l0U2hhZG93Um9vdChy
b290KTsKKyAgICBzcjIuYXBwZW5kQ2hpbGQoY3JlYXRlU3BhbldpdGhUZXh0KCdCRUZPUkUnKSk7
CisgICAgc3IyLmFwcGVuZENoaWxkKGNyZWF0ZUNvbnRlbnRXaXRoU2VsZWN0KCcuYzEnLCAnRkFM
TEJBQ0snKSk7CisgICAgc3IyLmFwcGVuZENoaWxkKGNyZWF0ZVNwYW5XaXRoVGV4dCgnQUZURVIn
KSk7CisKKyAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnYWN0dWFsLWNvbnRhaW5lcicpLmFw
cGVuZENoaWxkKHJvb3QpOworCisgICAgY2FsbElmRG9uZSgpOworfSk7CisKK3Rlc3RGdW5jcy5w
dXNoKGZ1bmN0aW9uIHRlc3RTaGFkb3dTdWJ0cmVlc1dpdGhEeW5hbWljQ3JlYXRpb24oY2FsbElm
RG9uZSkgeworICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdleHBlY3QtY29udGFpbmVyJyku
aW5uZXJIVE1MID0gIjxkaXY+PHNwYW4+QkVGT1JFPC9zcGFuPjxzcGFuPkxJR0hUIDE8L3NwYW4+
PHNwYW4+TElHSFQgMjwvc3Bhbj48c3Bhbj5BRlRFUjwvc3Bhbj48L2Rpdj4iOworCisgICAgdmFy
IHJvb3QgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTsKKyAgICByb290LmFwcGVuZENo
aWxkKGNyZWF0ZVNwYW5XaXRoVGV4dCgnTElHSFQgMScsICdjMScpKTsKKyAgICByb290LmFwcGVu
ZENoaWxkKGNyZWF0ZVNwYW5XaXRoVGV4dCgnTElHSFQgMicsICdjMicpKTsKKworICAgIHZhciBz
cjEgPSBuZXcgV2ViS2l0U2hhZG93Um9vdChyb290KTsKKyAgICBzcjEuYXBwZW5kQ2hpbGQoY3Jl
YXRlU3BhbldpdGhUZXh0KCdCRUZPUkU6IFNIT1VMRCBOT1QgQkUgUkVOREVSRUQnKSk7CisgICAg
c3IxLmFwcGVuZENoaWxkKGNyZWF0ZUNvbnRlbnRXaXRoU2VsZWN0KCdzcGFuJywgJ0ZBTExCQUNL
JykpOworICAgIHNyMS5hcHBlbmRDaGlsZChjcmVhdGVTcGFuV2l0aFRleHQoJ0FGVEVSOiBTSE9V
TEQgTk9UIEJFIFJFTkRFUkVEJykpOworCisgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2Fj
dHVhbC1jb250YWluZXInKS5hcHBlbmRDaGlsZChyb290KTsKKworICAgIHNldFRpbWVvdXQoKGZ1
bmN0aW9uKGNhbGxJZkRvbmUsIHJvb3QpIHsgcmV0dXJuIGZ1bmN0aW9uKCkgeworICAgICAgICB2
YXIgc3IyID0gbmV3IFdlYktpdFNoYWRvd1Jvb3Qocm9vdCk7CisgICAgICAgIHNyMi5hcHBlbmRD
aGlsZChjcmVhdGVTcGFuV2l0aFRleHQoJ0JFRk9SRScpKTsKKyAgICAgICAgc3IyLmFwcGVuZENo
aWxkKGNyZWF0ZUNvbnRlbnRXaXRoU2VsZWN0KCdzcGFuJywgJ0ZBTExCQUNLJykpOworICAgICAg
ICBzcjIuYXBwZW5kQ2hpbGQoY3JlYXRlU3BhbldpdGhUZXh0KCdBRlRFUicpKTsKKworICAgICAg
ICBjYWxsSWZEb25lKCk7CisgICAgfTt9KShjYWxsSWZEb25lLCByb290KSwgMCk7Cit9KTsKKwor
dGVzdEZ1bmNzLnB1c2goZnVuY3Rpb24gdGVzdFNoYWRvd1N1YnRyZWVzV2l0aER5bmFtaWNDcmVh
dGlvbk91dE9mVHJlZShjYWxsSWZEb25lKSB7CisgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQo
J2V4cGVjdC1jb250YWluZXInKS5pbm5lckhUTUwgPSAiPGRpdj48c3Bhbj5CRUZPUkU8L3NwYW4+
PHNwYW4+TElHSFQgMTwvc3Bhbj48c3Bhbj5MSUdIVCAyPC9zcGFuPjxzcGFuPkFGVEVSPC9zcGFu
PjwvZGl2PiI7CisKKyAgICB2YXIgcm9vdCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2Rpdicp
OworICAgIHJvb3QuYXBwZW5kQ2hpbGQoY3JlYXRlU3BhbldpdGhUZXh0KCdMSUdIVCAxJywgJ2Mx
JykpOworICAgIHJvb3QuYXBwZW5kQ2hpbGQoY3JlYXRlU3BhbldpdGhUZXh0KCdMSUdIVCAyJywg
J2MyJykpOworCisgICAgdmFyIHNyMSA9IG5ldyBXZWJLaXRTaGFkb3dSb290KHJvb3QpOworICAg
IHNyMS5hcHBlbmRDaGlsZChjcmVhdGVTcGFuV2l0aFRleHQoJ0JFRk9SRTogU0hPVUxEIE5PVCBC
RSBSRU5ERVJFRCcpKTsKKyAgICBzcjEuYXBwZW5kQ2hpbGQoY3JlYXRlQ29udGVudFdpdGhTZWxl
Y3QoJ3NwYW4nLCAnRkFMTEJBQ0snKSk7CisgICAgc3IxLmFwcGVuZENoaWxkKGNyZWF0ZVNwYW5X
aXRoVGV4dCgnQUZURVI6IFNIT1VMRCBOT1QgQkUgUkVOREVSRUQnKSk7CisKKyAgICBzZXRUaW1l
b3V0KChmdW5jdGlvbihjYWxsSWZEb25lLCByb290KSB7IHJldHVybiBmdW5jdGlvbigpIHsKKyAg
ICAgICAgdmFyIHNyMiA9IG5ldyBXZWJLaXRTaGFkb3dSb290KHJvb3QpOworICAgICAgICBzcjIu
YXBwZW5kQ2hpbGQoY3JlYXRlU3BhbldpdGhUZXh0KCdCRUZPUkUnKSk7CisgICAgICAgIHNyMi5h
cHBlbmRDaGlsZChjcmVhdGVDb250ZW50V2l0aFNlbGVjdCgnc3BhbicsICdGQUxMQkFDSycpKTsK
KyAgICAgICAgc3IyLmFwcGVuZENoaWxkKGNyZWF0ZVNwYW5XaXRoVGV4dCgnQUZURVInKSk7CisK
KyAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2FjdHVhbC1jb250YWluZXInKS5hcHBl
bmRDaGlsZChyb290KTsKKworICAgICAgICBjYWxsSWZEb25lKCk7CisgICAgfTt9KShjYWxsSWZE
b25lLCByb290KSwgMCk7Cit9KTsKKzwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHkgb25sb2FkPSJk
b1Rlc3QodGVzdEZ1bmNzKSI+CisKKzxkaXYgaWQ9ImFjdHVhbC1jb250YWluZXIiIGNsYXNzPSJj
b250YWluZXIiPjwvZGl2PgorPGRpdiBpZD0iZXhwZWN0LWNvbnRhaW5lciIgY2xhc3M9ImNvbnRh
aW5lciI+PC9kaXY+Cis8cHJlIGlkPSJjb25zb2xlIj48L3ByZT4KKworPC9ib2R5PgorPC9odG1s
PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9kb20vc2hhZG93L211bHRpcGxlLXNoYWRv
d3Jvb3QuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvZG9tL3NoYWRvdy9tdWx0aXBsZS1zaGFkb3dy
b290Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uNDA5YmVjMDc2YWUzYjFmY2QxMmU5NzQ4NDQzNjYyYzgwODEw
YmRmYgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZG9tL3NoYWRvdy9tdWx0
aXBsZS1zaGFkb3dyb290Lmh0bWwKQEAgLTAsMCArMSwzNSBAQAorPCFET0NUWVBFIGh0bWw+Cis8
aHRtbD4KKzxoZWFkPgorPHNjcmlwdCBzcmM9Ii4uLy4uL2pzL3Jlc291cmNlcy9qcy10ZXN0LXBy
ZS5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxzY3JpcHQ+CitkZXNjcmlwdGlvbigi
VGhpcyB0ZXN0IGVuc3VyZSB0aGF0IHRoZSBtdWx0aXBsZSBzaGFkb3cgcm9vdCBpcyBhdmFpbGFi
bGUuIik7CisKK2ludGVybmFscy5zZXRNdWx0aXBsZVNoYWRvd1N1YnRyZWVzRW5hYmxlZCh0cnVl
KTsKKwordmFyIGRpdiA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpOworc2hvdWxkQmUo
ImludGVybmFscy5zaGFkb3dSb290KGRpdikiLCAibnVsbCIpOwordmFyIHNoYWRvd1Jvb3QxID0g
bmV3IFdlYktpdFNoYWRvd1Jvb3QoZGl2KTsKK3Nob3VsZEJlKCJpbnRlcm5hbHMuc2hhZG93Um9v
dChkaXYpIiwgInNoYWRvd1Jvb3QxIik7CitzaG91bGRCZSgiaW50ZXJuYWxzLm9sZGVyU2hhZG93
Um9vdChzaGFkb3dSb290MSkiLCAibnVsbCIpOworCit2YXIgc2hhZG93Um9vdDIgPSBuZXcgV2Vi
S2l0U2hhZG93Um9vdChkaXYpCitzaG91bGRCZSgiaW50ZXJuYWxzLnNoYWRvd1Jvb3QoZGl2KSIs
ICJzaGFkb3dSb290MiIpOworc2hvdWxkQmUoImludGVybmFscy5vbGRlclNoYWRvd1Jvb3Qoc2hh
ZG93Um9vdDIpIiwgInNoYWRvd1Jvb3QxIik7CisKK3ZhciBzaGFkb3dSb290MyA9IG5ldyBXZWJL
aXRTaGFkb3dSb290KGRpdik7CitzaG91bGRCZSgiaW50ZXJuYWxzLnNoYWRvd1Jvb3QoZGl2KSIs
ICJzaGFkb3dSb290MyIpOworc2hvdWxkQmUoImludGVybmFscy5vbGRlclNoYWRvd1Jvb3Qoc2hh
ZG93Um9vdDMpIiwgInNoYWRvd1Jvb3QyIik7CisKK2ludGVybmFscy5yZW1vdmVTaGFkb3dSb290
KGRpdik7CitzaG91bGRCZSgiaW50ZXJuYWxzLnNoYWRvd1Jvb3QoZGl2KSIsICJudWxsIik7CisK
K2ludGVybmFscy5zZXRNdWx0aXBsZVNoYWRvd1N1YnRyZWVzRW5hYmxlZChmYWxzZSk7CisKK3Zh
ciBzdWNjZXNzZnVsbHlQYXJzZWQgPSB0cnVlOworPC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4v
Li4vanMvcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0
bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9lZmwvU2tpcHBlZCBiL0xheW91
dFRlc3RzL3BsYXRmb3JtL2VmbC9Ta2lwcGVkCmluZGV4IDJlOTJmMzc3YmY1YTVjOTlmMTI4OTU3
YjAyYjBlMWYyYzZiMDkwMWUuLjIzZTE4YWY4MTYzYzlkYTdmNDBjOWE1MTczY2RlYTQyNjAwYmEy
NDQgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3BsYXRmb3JtL2VmbC9Ta2lwcGVkCisrKyBiL0xh
eW91dFRlc3RzL3BsYXRmb3JtL2VmbC9Ta2lwcGVkCkBAIC0xOTc4LDYgKzE5NzgsOCBAQCBmYXN0
L2RvbS9zaGFkb3cvc2hhZG93LXJvb3QtanMtYXBpLmh0bWwKIGZhc3QvZG9tL3NoYWRvdy9zaGFk
b3ctZGlzYWJsZS5odG1sCiBmYXN0L2RvbS9zaGFkb3cvc2hhZG93LXJvb3QtYXR0YWNoZWQuaHRt
bAogZmFzdC9kb20vc2hhZG93L3NoYWRvdy1yb290LW5ldy5odG1sCitmYXN0L2RvbS9zaGFkb3cv
bXVsdGlwbGUtc2hhZG93cm9vdC5odG1sCitmYXN0L2RvbS9zaGFkb3cvbXVsdGlwbGUtc2hhZG93
cm9vdC1yZW5kZXJpbmcuaHRtbAogCiAjIENTUyBGaWx0ZXJzIHN1cHBvcnQgbm90IHlldCBlbmFi
bGVkIChuZWVkcyBFTkFCTEVfQ1NTX0ZJTFRFUlMpLgogIyBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9Njg0NjkKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3Jt
L2d0ay9Ta2lwcGVkIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vZ3RrL1NraXBwZWQKaW5kZXggZWMx
MmQ2ZWFjMGY5MTMxNjQ4NjdjYTI2MGNmYmQ1ZjJhMDY2YjA0ZS4uNzJkZTAyMzU4MTA2ZDBjMTQw
ODRiNzc0OGRlMmE5ODg3YTc3ZmQzMiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0v
Z3RrL1NraXBwZWQKKysrIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vZ3RrL1NraXBwZWQKQEAgLTM2
MSw2ICszNjEsOCBAQCBmYXN0L2RvbS9zaGFkb3cvc2hhZG93LXJvb3QtanMtYXBpLmh0bWwKIGZh
c3QvZG9tL3NoYWRvdy9zaGFkb3ctZGlzYWJsZS5odG1sCiBmYXN0L2RvbS9zaGFkb3cvc2hhZG93
LXJvb3QtYXR0YWNoZWQuaHRtbAogZmFzdC9kb20vc2hhZG93L3NoYWRvdy1yb290LW5ldy5odG1s
CitmYXN0L2RvbS9zaGFkb3cvbXVsdGlwbGUtc2hhZG93cm9vdC5odG1sCitmYXN0L2RvbS9zaGFk
b3cvbXVsdGlwbGUtc2hhZG93cm9vdC1yZW5kZXJpbmcuaHRtbAogCiAjIENTUyBSZWdpb25zIHN1
cHBvcnQgbm90IHlldCBlbmFibGVkLiBodHRwOi8vd2Via2l0Lm9yZy9iLzU3MzEyCiBmYXN0L3Jl
Z2lvbnMKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy9Ta2lwcGVkIGIvTGF5
b3V0VGVzdHMvcGxhdGZvcm0vbWFjL1NraXBwZWQKaW5kZXggZTI4Njc2MWM0Njg0NGZjNzY3ODhh
NjczYjA5NmNjMzM3NTE5NzhjOC4uNzQ3YzFiNjVlNmRjYTYyOTdjMjEyZjQ2NmI3MGM5ZWVkNWY0
OWU1MSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL1NraXBwZWQKKysrIGIv
TGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL1NraXBwZWQKQEAgLTQyNiw2ICs0MjYsOCBAQCBmYXN0
L2RvbS9zaGFkb3cvc2hhZG93LXJvb3QtanMtYXBpLmh0bWwKIGZhc3QvZG9tL3NoYWRvdy9zaGFk
b3ctZGlzYWJsZS5odG1sCiBmYXN0L2RvbS9zaGFkb3cvc2hhZG93LXJvb3QtYXR0YWNoZWQuaHRt
bAogZmFzdC9kb20vc2hhZG93L3NoYWRvdy1yb290LW5ldy5odG1sCitmYXN0L2RvbS9zaGFkb3cv
bXVsdGlwbGUtc2hhZG93cm9vdC5odG1sCitmYXN0L2RvbS9zaGFkb3cvbXVsdGlwbGUtc2hhZG93
cm9vdC1yZW5kZXJpbmcuaHRtbAogCiAjIEpTQyBkb2VzIG5vdCBzdXBwb3J0IHNldElzb2xhdGVk
V29ybGRTZWN1cml0eU9yaWdpbiAoaHR0cDovL3dlYmtpdC5vcmcvYi82MTU0MCkKIGh0dHAvdGVz
dHMvc2VjdXJpdHkvaXNvbGF0ZWRXb3JsZC9jcm9zcy1vcmlnaW4teGhyLmh0bWwKZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL3F0L1NraXBwZWQgYi9MYXlvdXRUZXN0cy9wbGF0Zm9y
bS9xdC9Ta2lwcGVkCmluZGV4IGM0YjlkYWQ5MDg4Zjg3ZTJlYjkwYWU0ZGY1MGZkZGJiYTZjODNi
YmIuLmM2YTE5ZjNkOGQ4YWFjYTcyZDlkMjBiYzc2MjhhMzEyMmFiZWE3MzcgMTAwNjQ0Ci0tLSBh
L0xheW91dFRlc3RzL3BsYXRmb3JtL3F0L1NraXBwZWQKKysrIGIvTGF5b3V0VGVzdHMvcGxhdGZv
cm0vcXQvU2tpcHBlZApAQCAtMTY1LDYgKzE2NSw4IEBAIGZhc3QvZG9tL3NoYWRvdy9zaGFkb3ct
cm9vdC1qcy1hcGkuaHRtbAogZmFzdC9kb20vc2hhZG93L3NoYWRvdy1kaXNhYmxlLmh0bWwKIGZh
c3QvZG9tL3NoYWRvdy9zaGFkb3ctcm9vdC1hdHRhY2hlZC5odG1sCiBmYXN0L2RvbS9zaGFkb3cv
c2hhZG93LXJvb3QtbmV3Lmh0bWwKK2Zhc3QvZG9tL3NoYWRvdy9tdWx0aXBsZS1zaGFkb3dyb290
Lmh0bWwKK2Zhc3QvZG9tL3NoYWRvdy9tdWx0aXBsZS1zaGFkb3dyb290LXJlbmRlcmluZy5odG1s
CiAKICMgQ1NTIFJlZ2lvbnMgc3VwcG9ydCBub3QgeWV0IGVuYWJsZWQuIGh0dHA6Ly93ZWJraXQu
b3JnL2IvNTczMTIKIGZhc3QvcmVnaW9ucwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZv
cm0vd2luL1NraXBwZWQgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS93aW4vU2tpcHBlZAppbmRleCAz
MWIyYzI3YmE1MWI1OGRhYjkxNjVkYjJjZTdlOTA1YzlmZjEzZDZkLi42ZTFlMzhjOWU4MmZiZjJi
YjAyM2U2ODUwNDY1N2EwZDMyOTkxZjUyIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9wbGF0Zm9y
bS93aW4vU2tpcHBlZAorKysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS93aW4vU2tpcHBlZApAQCAt
MTQ1OCw2ICsxNDU4LDggQEAgZmFzdC9kb20vc2hhZG93L3NoYWRvdy1yb290LWpzLWFwaS5odG1s
CiBmYXN0L2RvbS9zaGFkb3cvc2hhZG93LWRpc2FibGUuaHRtbAogZmFzdC9kb20vc2hhZG93L3No
YWRvdy1yb290LWF0dGFjaGVkLmh0bWwKIGZhc3QvZG9tL3NoYWRvdy9zaGFkb3ctcm9vdC1uZXcu
aHRtbAorZmFzdC9kb20vc2hhZG93L211bHRpcGxlLXNoYWRvd3Jvb3QuaHRtbAorZmFzdC9kb20v
c2hhZG93L211bHRpcGxlLXNoYWRvd3Jvb3QtcmVuZGVyaW5nLmh0bWwKIAogIyBDU1MgUmVnaW9u
cyBzdXBwb3J0IG5vdCB5ZXQgZW5hYmxlZC4gaHR0cDovL3dlYmtpdC5vcmcvYi81NzMxMgogZmFz
dC9yZWdpb25zCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS93aW5jYWlyby9Ta2lw
cGVkIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vd2luY2Fpcm8vU2tpcHBlZAppbmRleCBlNmVkODc5
ZWUwOWYxNDA0MjFlN2ZmNjc0MzQ0OGVlZTVlNmViYjRmLi45ZTNjNjdiOWNkYzljZDg5NjZmY2Vm
NGI0NTQ0ZjU0M2FiOWE4ZjEyIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS93aW5j
YWlyby9Ta2lwcGVkCisrKyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL3dpbmNhaXJvL1NraXBwZWQK
QEAgLTE5NjksNiArMTk2OSw4IEBAIGZhc3QvZG9tL3NoYWRvdy9zaGFkb3ctcm9vdC1qcy1hcGku
aHRtbAogZmFzdC9kb20vc2hhZG93L3NoYWRvdy1kaXNhYmxlLmh0bWwKIGZhc3QvZG9tL3NoYWRv
dy9zaGFkb3ctcm9vdC1hdHRhY2hlZC5odG1sCiBmYXN0L2RvbS9zaGFkb3cvc2hhZG93LXJvb3Qt
bmV3Lmh0bWwKK2Zhc3QvZG9tL3NoYWRvdy9tdWx0aXBsZS1zaGFkb3dyb290Lmh0bWwKK2Zhc3Qv
ZG9tL3NoYWRvdy9tdWx0aXBsZS1zaGFkb3dyb290LXJlbmRlcmluZy5odG1sCiAKICMgQ1NTIFJl
Z2lvbnMgc3VwcG9ydCBub3QgeWV0IGVuYWJsZWQuIGh0dHA6Ly93ZWJraXQub3JnL2IvNTczMTIK
IGZhc3QvcmVnaW9ucwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vd2syL1NraXBw
ZWQgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS93azIvU2tpcHBlZAppbmRleCBkMjI0NzNiMmVhNTU4
ODcyMzJkNDQ3NTVkZTlkNjlhMTVmM2UzMTc1Li45M2ZkNjQ1NDU2NGJlYTIxN2UyOTE4Y2M1NDVm
MjQ2MjliMDI5NjExIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS93azIvU2tpcHBl
ZAorKysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS93azIvU2tpcHBlZApAQCAtMTA3OCw2ICsxMDc4
LDggQEAgZmFzdC9kb20vc2hhZG93L3NoYWRvdy1yb290LWpzLWFwaS5odG1sCiBmYXN0L2RvbS9z
aGFkb3cvc2hhZG93LWRpc2FibGUuaHRtbAogZmFzdC9kb20vc2hhZG93L3NoYWRvdy1yb290LWF0
dGFjaGVkLmh0bWwKIGZhc3QvZG9tL3NoYWRvdy9zaGFkb3ctcm9vdC1uZXcuaHRtbAorZmFzdC9k
b20vc2hhZG93L211bHRpcGxlLXNoYWRvd3Jvb3QuaHRtbAorZmFzdC9kb20vc2hhZG93L211bHRp
cGxlLXNoYWRvd3Jvb3QtcmVuZGVyaW5nLmh0bWwKIAogIyBXVFIgbmVlZHMgYW4gaW1wbGVtZW50
YXRpb24gZm9yIGV2ZW50U2VuZGVyLmNvbnRpbnVvdXNNb3VzZVNjcm9sbEJ5CiAjIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD02OTQxNwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>128651</attachid>
            <date>2012-02-23 22:22:12 -0800</date>
            <delta_ts>2012-02-23 23:03:25 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-77931-20120224152210.patch</filename>
            <type>text/plain</type>
            <size>39023</size>
            <attacher name="Shinya Kawanaka">shinyak</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTA4NzI4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNTAyYWU2NjBjNTJmNGIy
Yjg1ZDIwNDFlOTQyNWYwZjdiYWNkNTA1NS4uNGE2NmM1NTNmODFmNjM0YThkMjJlZDQ0NTM3M2Y5
Y2UwNTQ0Nzg3YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDU5IEBACisyMDEyLTAyLTIzICBTaGlu
eWEgS2F3YW5ha2EgIDxzaGlueWFrQGNocm9taXVtLm9yZz4gCisKKyAgICAgICAgRWxlbWVudCBz
aG91bGQgYmUgYWJsZSB0byBoYXZlIG11bHRpcGxlIHNoYWRvdyByb290cy4KKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTc3OTMxCisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhpcyBwYXRjaCBlbmFibGVzIHVz
IHRvIGFkZCBtdWx0aXBsZSBzaGFkb3cgc3VidHJlZXMgaW50byBlbGVtZW50cy4KKyAgICAgICAg
Tm90ZSB0aGF0IG11bHRpcGxlIHNoYWRvdyBzdWJ0cmVlcyBhcmUgZW5hYmxlZAorICAgICAgICBv
bmx5IGlmIFJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6Om11bHRpcGxlU2hhZG93U3VidHJlZXMgaXMg
ZW5hYmxlZC4KKworICAgICAgICBTaW5jZSB3ZSBkb24ndCBoYXZlIDxzaGFkb3c+IGVsZW1lbnQg
eWV0LCBvbmx5IHRoZSB5b3VuZ2VzdCBzaGFkb3cgdHJlZQorICAgICAgICB3aWxsIGJlIHJlbmRl
cmVkLiBUaGlzIHBhdGNoIGluY2x1ZGVzIHRlc3RzIHRvIGNvbmZpcm0gYWRkaW5nIGEgbmV3IHNo
YWRvdworICAgICAgICB0cmVlIGR5bmFtaWNhbGx5IHRvIGNvbmZpcm0gb25seSB0aGUgeW91bmdl
c3Qgc2hhZG93IHRyZWUgaXMgcmVuZGVyZXJlZC4KKworICAgICAgICBUZXN0czogZmFzdC9kb20v
c2hhZG93L211bHRpcGxlLXNoYWRvd3Jvb3QtcmVuZGVyaW5nLmh0bWwKKyAgICAgICAgICAgICAg
IGZhc3QvZG9tL3NoYWRvdy9tdWx0aXBsZS1zaGFkb3dyb290Lmh0bWwKKworICAgICAgICAqIFdl
YkNvcmUuZXhwLmluOgorICAgICAgICAqIGRvbS9FbGVtZW50LmNwcDoKKyAgICAgICAgICBVc2Vz
IFNoYWRvd1Jvb3RMaXN0IGludGVyZmFjZXMgZGlyZWN0bHkgaW5zdGVhZCBvZiBTaGFkb3dSb290
TGlzdCBlbXVsYXRpb24gbWV0aG9kcy4KKyAgICAgICAgKFdlYkNvcmU6OkVsZW1lbnQ6On5FbGVt
ZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkVsZW1lbnQ6OmF0dGFjaCk6CisgICAgICAgIChXZWJD
b3JlOjpFbGVtZW50OjphZGRTaGFkb3dSb290KToKKyAgICAgICAgKFdlYkNvcmU6OkVsZW1lbnQ6
OnJlbW92ZVNoYWRvd1Jvb3RMaXN0KToKKyAgICAgICAgKiBkb20vRWxlbWVudC5oOgorICAgICAg
ICAoRWxlbWVudCk6CisgICAgICAgICogZG9tL05vZGVSZW5kZXJpbmdDb250ZXh0LmNwcDoKKyAg
ICAgICAgICBNYWtlIG5vbi15b3VuZ2VzdCBzaGFkb3cgc3VidHJlZXMgaGlkZGVuLgorICAgICAg
ICAoV2ViQ29yZTo6Tm9kZVJlbmRlcmluZ0NvbnRleHQ6Ok5vZGVSZW5kZXJpbmdDb250ZXh0KToK
KyAgICAgICAgKFdlYkNvcmU6Ok5vZGVSZW5kZXJpbmdDb250ZXh0Ojpob3N0Q2hpbGRyZW5DaGFu
Z2VkKToKKyAgICAgICAgICBTaW5jZSBub24teW91bmdlc3QgY2hpbGRyZW4gbWF5IGJlIGNoYW5n
ZWQsIG1ha2Ugc3VyZSBob3N0IGNoaWxkcmVuIGFyZSBjaGFuZ2VkLgorICAgICAgICAqIGRvbS9T
aGFkb3dSb290LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNoYWRvd1Jvb3Q6OmNyZWF0ZSk6Cisg
ICAgICAgICogZG9tL1NoYWRvd1Jvb3QuaDoKKyAgICAgICAgKFdlYkNvcmU6OlNoYWRvd1Jvb3Q6
OnlvdW5nZXJTaGFkb3dSb290KToKKyAgICAgICAgKFdlYkNvcmU6OlNoYWRvd1Jvb3Q6Om9sZGVy
U2hhZG93Um9vdCk6CisgICAgICAgIChTaGFkb3dSb290KToKKyAgICAgICAgKFdlYkNvcmU6OlNo
YWRvd1Jvb3Q6OmlzWW91bmdlc3RTaGFkb3dSb290KToKKyAgICAgICAgKFdlYkNvcmU6OlNoYWRv
d1Jvb3Q6OmlzT2xkZXN0U2hhZG93Um9vdCk6CisgICAgICAgICAgVXRpbGl0eSBtZXRob2RzIHRv
IG1ha2UgY29kZSBpbnRlbnRpb24gY2xlYXIuCisgICAgICAgICogZG9tL1NoYWRvd1Jvb3RMaXN0
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNoYWRvd1Jvb3RMaXN0OjphdHRhY2gpOgorICAgICAg
ICAgIEF0dGFjaGVzIHNoYWRvdyBzdWJ0cmVlcy4KKyAgICAgICAgKFdlYkNvcmU6OlNoYWRvd1Jv
b3RMaXN0OjpkZXRhY2gpOgorICAgICAgICAgIERldGFjaGVzIHNoYWRvdyBzdWJ0cmVlcy4KKyAg
ICAgICAgKiB0ZXN0aW5nL0ludGVybmFscy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbnRlcm5h
bHM6OmFkZHJlc3MpOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb3JlOjpJbnRl
cm5hbHM6OnlvdW5nZXJTaGFkb3dSb290KToKKyAgICAgICAgKFdlYkNvcmU6OkludGVybmFsczo6
b2xkZXJTaGFkb3dSb290KToKKyAgICAgICAgKFdlYkNvcmU6OkludGVybmFsczo6cmVtb3ZlU2hh
ZG93Um9vdCk6CisgICAgICAgICogdGVzdGluZy9JbnRlcm5hbHMuaDoKKyAgICAgICAgKEludGVy
bmFscyk6CisgICAgICAgICogdGVzdGluZy9JbnRlcm5hbHMuaWRsOgorCiAyMDEyLTAyLTIzICBT
aGlueWEgS2F3YW5ha2EgIDxzaGlueWFrQGNocm9taXVtLm9yZz4KIAogICAgICAgICBOb2RlUmVu
ZGVyaW5nQ29udGV4dCBzaG91bGQgaGF2ZSBTaGFkb3dSb290TGlzdCBpbnN0ZWFkIG9mIFNoYWRv
d1Jvb3QuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2Vi
S2l0Mi9DaGFuZ2VMb2cKaW5kZXggMGU0MGZhNGM2NjFlYzgxNWM5MDIxN2Y2OWVjMTdhZWQ4MTJi
ZDc5Yy4uMTcxNDY1OTI2NWU5NDA1N2E4NzhjZTk3Y2E1YWRjYmEzZjdmZmZiMSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxv
ZwpAQCAtMSwzICsxLDEzIEBACisyMDEyLTAyLTIzICBTaGlueWEgS2F3YW5ha2EgIDxzaGlueWFr
QGNocm9taXVtLm9yZz4KKworICAgICAgICBFbGVtZW50IHNob3VsZCBiZSBhYmxlIHRvIGhhdmUg
bXVsdGlwbGUgc2hhZG93IHJvb3RzLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9Nzc5MzEKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICAqIHdpbi9XZWJLaXQyLmRlZjoKKyAgICAgICAgKiB3aW4vV2ViS2l0MkNG
TGl0ZS5kZWY6CisKIDIwMTItMDItMjMgIE1hcmlvIFNhbmNoZXogUHJhZGEgIDxtc2FuY2hlekBp
Z2FsaWEuY29tPgogCiAgICAgICAgIFtHVEtdIFdyb25nIHNpZ25hbCBuYW1lIG9uIGVtaXNzaW9u
IGluIFdlYktpdFdpbmRvd1Byb3BlcnRpZXMuY3BwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9XZWJDb3JlLmV4cC5pbiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZXhwLmluCmluZGV4IGU4
MTJmZmZmNjVhOTQzMTU0NjFiMDk4Y2M0MWJkZGM5MWVjODE1NmUuLmE4NGViYWI0MjQzYjgyNzg3
YjE5NTFiNmEyNThjYmRkY2QzYzY3OTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNv
cmUuZXhwLmluCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZXhwLmluCkBAIC05MTUsNyAr
OTE1LDcgQEAgX19aTjdXZWJDb3JlNldpZGdldEQyRXYKIF9fWk43V2ViQ29yZTZ0b05vZGVFTjNK
U0M3SlNWYWx1ZUUKIF9fWk43V2ViQ29yZTdDb25zb2xlMjFzaG91bGRQcmludEV4Y2VwdGlvbnNF
dgogX19aTjdXZWJDb3JlN0NvbnNvbGUyNHNldFNob3VsZFByaW50RXhjZXB0aW9uc0ViCi1fX1pO
N1dlYkNvcmU3RWxlbWVudDE2cmVtb3ZlU2hhZG93Um9vdEV2CitfX1pON1dlYkNvcmU3RWxlbWVu
dDIwcmVtb3ZlU2hhZG93Um9vdExpc3RFdgogX19aTjdXZWJDb3JlN0VsZW1lbnQyMWJvdW5kc0lu
Um9vdFZpZXdTcGFjZUV2CiBfX1pON1dlYkNvcmU3RWxlbWVudDlpbm5lclRleHRFdgogX19aTjdX
ZWJDb3JlN0ludFJlY3Q1c2NhbGVFZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0Vs
ZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuY3BwCmluZGV4IGVkYzVhNjJl
ZjQwMzRhNzdkZjkxMjlmNTlkYjhkNjE2OTVmZjE0MTQuLjkyYTg1YWI3N2U3MjM4NWEyM2UzMmJl
Njk3YjMyNjEwYTE2MGY1ZjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5jcHAKQEAgLTc2LDYgKzc2LDEw
IEBACiAjaW5jbHVkZSAiU1ZHTmFtZXMuaCIKICNlbmRpZgogCisjaWYgRU5BQkxFKFNIQURPV19E
T00pCisjaW5jbHVkZSAiUnVudGltZUVuYWJsZWRGZWF0dXJlcy5oIgorI2VuZGlmCisKIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIAogdXNpbmcgbmFtZXNwYWNlIEhUTUxOYW1lczsKQEAgLTEyMiw3ICsx
MjYsNyBAQCBQYXNzUmVmUHRyPEVsZW1lbnQ+IEVsZW1lbnQ6OmNyZWF0ZShjb25zdCBRdWFsaWZp
ZWROYW1lJiB0YWdOYW1lLCBEb2N1bWVudCogZG9jdQogCiBFbGVtZW50Ojp+RWxlbWVudCgpCiB7
Ci0gICAgcmVtb3ZlU2hhZG93Um9vdCgpOworICAgIHJlbW92ZVNoYWRvd1Jvb3RMaXN0KCk7CiAg
ICAgaWYgKG1fYXR0cmlidXRlTWFwKQogICAgICAgICBtX2F0dHJpYnV0ZU1hcC0+ZGV0YWNoRnJv
bUVsZW1lbnQoKTsKIH0KQEAgLTkzMCw3ICs5MzQsNyBAQCB2b2lkIEVsZW1lbnQ6OmF0dGFjaCgp
CiAgICAgICAgIHBhcmVudFB1c2hlci5wdXNoKCk7CiAgICAgICAgIHNoYWRvd1Jvb3RMaXN0KCkt
PmF0dGFjaCgpOwogCi0gICAgICAgIC8vIEluIGEgc2hhZG93IHRyZWUsIHNvbWUgb2YgbGlnaHQg
Y2hpbGRyZW4gbWF5IGJlIGF0dGFjaGVkIGJ5ICdjb250ZW50JyBlbGVtZW50LgorICAgICAgICAv
LyBJbiBhIHNoYWRvdyB0cmVlLCBzb21lIG9mIGxpZ2h0IGNoaWxkcmVuIG1heSBiZSBhdHRhY2hl
ZCBieSA8Y29udGVudD4gb3IgPHNoYWRvdz4uCiAgICAgICAgIC8vIEhvd2V2ZXIsIHdoZW4gdGhl
cmUgaXMgbm8gY29udGVudCBlbGVtZW50IG9yIGNvbnRlbnQgZWxlbWVudCBkb2VzIG5vdCBzZWxl
Y3QKICAgICAgICAgLy8gYWxsIGxpZ2h0IGNoaWxkcmVuLCB3ZSBoYXZlIHRvIGF0dGFjaCB0aGUg
cmVzdCBvZiBsaWdodCBjaGlsZHJlbiBoZXJlLgogICAgICAgICBmb3IgKE5vZGUqIGNoaWxkID0g
Zmlyc3RDaGlsZCgpOyBjaGlsZDsgY2hpbGQgPSBjaGlsZC0+bmV4dFNpYmxpbmcoKSkgewpAQCAt
MTE3Myw3ICsxMTc3LDcgQEAgc3RhdGljIGJvb2wgdmFsaWRhdGVTaGFkb3dSb290KERvY3VtZW50
KiBkb2N1bWVudCwgU2hhZG93Um9vdCogc2hhZG93Um9vdCwgRXhjZXAKICAgICByZXR1cm4gdHJ1
ZTsKIH0KIAotdm9pZCBFbGVtZW50OjpzZXRTaGFkb3dSb290KFBhc3NSZWZQdHI8U2hhZG93Um9v
dD4gc2hhZG93Um9vdCwgRXhjZXB0aW9uQ29kZSYgZWMpCit2b2lkIEVsZW1lbnQ6OmFkZFNoYWRv
d1Jvb3QoUGFzc1JlZlB0cjxTaGFkb3dSb290PiBzaGFkb3dSb290LCBFeGNlcHRpb25Db2RlJiBl
YykKIHsKICAgICBpZiAoIXZhbGlkYXRlU2hhZG93Um9vdChkb2N1bWVudCgpLCBzaGFkb3dSb290
LmdldCgpLCBlYykpCiAgICAgICAgIHJldHVybjsKQEAgLTExODEsNyArMTE4NSwxMiBAQCB2b2lk
IEVsZW1lbnQ6OnNldFNoYWRvd1Jvb3QoUGFzc1JlZlB0cjxTaGFkb3dSb290PiBzaGFkb3dSb290
LCBFeGNlcHRpb25Db2RlJiBlYwogICAgIGlmICghaGFzUmFyZURhdGEoKSkKICAgICAgICAgZW5z
dXJlUmFyZURhdGEoKTsKIAotICAgIHJlbW92ZVNoYWRvd1Jvb3QoKTsKKyNpZiBFTkFCTEUoU0hB
RE9XX0RPTSkKKyAgICBpZiAoIVJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6Om11bHRpcGxlU2hhZG93
U3VidHJlZXNFbmFibGVkKCkpCisgICAgICAgIHJlbW92ZVNoYWRvd1Jvb3RMaXN0KCk7CisjZWxz
ZQorICAgIHJlbW92ZVNoYWRvd1Jvb3RMaXN0KCk7CisjZW5kaWYKIAogICAgIHNoYWRvd1Jvb3Qt
PnNldFNoYWRvd0hvc3QodGhpcyk7CiAgICAgc2hhZG93Um9vdExpc3QoKS0+cHVzaFNoYWRvd1Jv
b3Qoc2hhZG93Um9vdC5nZXQoKSk7CkBAIC0xMTkwLDkgKzExOTksMTIgQEAgdm9pZCBFbGVtZW50
OjpzZXRTaGFkb3dSb290KFBhc3NSZWZQdHI8U2hhZG93Um9vdD4gc2hhZG93Um9vdCwgRXhjZXB0
aW9uQ29kZSYgZWMKICAgICAgICAgc2hhZG93Um9vdC0+aW5zZXJ0ZWRJbnRvRG9jdW1lbnQoKTsK
ICAgICBpZiAoYXR0YWNoZWQoKSkgewogICAgICAgICBzaGFkb3dSb290LT5sYXp5QXR0YWNoKCk7
CisgICAgICAgIGZvciAoU2hhZG93Um9vdCogcm9vdCA9IHNoYWRvd1Jvb3RMaXN0KCktPnlvdW5n
ZXN0U2hhZG93Um9vdCgpLT5vbGRlclNoYWRvd1Jvb3QoKTsgcm9vdDsgcm9vdCA9IHJvb3QtPm9s
ZGVyU2hhZG93Um9vdCgpKQorICAgICAgICAgICAgcm9vdC0+ZGV0YWNoKCk7CiAgICAgICAgIGZv
ciAoTm9kZSogY2hpbGQgPSBmaXJzdENoaWxkKCk7IGNoaWxkOyBjaGlsZCA9IGNoaWxkLT5uZXh0
U2libGluZygpKQogICAgICAgICAgICAgY2hpbGQtPmRldGFjaCgpOwogICAgIH0KKwogfQogCiBT
aGFkb3dSb290KiBFbGVtZW50OjplbnN1cmVTaGFkb3dSb290KCkKQEAgLTEyMDMsNyArMTIxNSw3
IEBAIFNoYWRvd1Jvb3QqIEVsZW1lbnQ6OmVuc3VyZVNoYWRvd1Jvb3QoKQogICAgIHJldHVybiBT
aGFkb3dSb290OjpjcmVhdGUodGhpcywgU2hhZG93Um9vdDo6Q3JlYXRpbmdVc2VyQWdlbnRTaGFk
b3dSb290KS5nZXQoKTsKIH0KIAotdm9pZCBFbGVtZW50OjpyZW1vdmVTaGFkb3dSb290KCkKK3Zv
aWQgRWxlbWVudDo6cmVtb3ZlU2hhZG93Um9vdExpc3QoKQogewogICAgIGlmICghaGFzU2hhZG93
Um9vdCgpKQogICAgICAgICByZXR1cm47CkBAIC0xMjE1LDE2ICsxMjI3LDE5IEBAIHZvaWQgRWxl
bWVudDo6cmVtb3ZlU2hhZG93Um9vdCgpCiAgICAgICAgICAgICBvbGRSb290LT5kZXRhY2goKTsK
IAogICAgICAgICBvbGRSb290LT5zZXRTaGFkb3dIb3N0KDApOworICAgICAgICBvbGRSb290LT5z
ZXRQcmV2KDApOworICAgICAgICBvbGRSb290LT5zZXROZXh0KDApOwogICAgICAgICBkb2N1bWVu
dCgpLT5hZG9wdElmTmVlZGVkKG9sZFJvb3QuZ2V0KCkpOwogICAgICAgICBpZiAob2xkUm9vdC0+
aW5Eb2N1bWVudCgpKQogICAgICAgICAgICAgb2xkUm9vdC0+cmVtb3ZlZEZyb21Eb2N1bWVudCgp
OwogICAgICAgICBlbHNlCiAgICAgICAgICAgICBvbGRSb290LT5yZW1vdmVkRnJvbVRyZWUodHJ1
ZSk7Ci0gICAgICAgIGlmIChhdHRhY2hlZCgpKSB7Ci0gICAgICAgICAgICBmb3IgKE5vZGUqIGNo
aWxkID0gZmlyc3RDaGlsZCgpOyBjaGlsZDsgY2hpbGQgPSBjaGlsZC0+bmV4dFNpYmxpbmcoKSkg
ewotICAgICAgICAgICAgICAgIGlmICghY2hpbGQtPmF0dGFjaGVkKCkpCi0gICAgICAgICAgICAg
ICAgICAgIGNoaWxkLT5sYXp5QXR0YWNoKCk7Ci0gICAgICAgICAgICB9CisgICAgfQorCisgICAg
aWYgKGF0dGFjaGVkKCkpIHsKKyAgICAgICAgZm9yIChOb2RlKiBjaGlsZCA9IGZpcnN0Q2hpbGQo
KTsgY2hpbGQ7IGNoaWxkID0gY2hpbGQtPm5leHRTaWJsaW5nKCkpIHsKKyAgICAgICAgICAgIGlm
ICghY2hpbGQtPmF0dGFjaGVkKCkpCisgICAgICAgICAgICAgICAgY2hpbGQtPmxhenlBdHRhY2go
KTsKICAgICAgICAgfQogICAgIH0KIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9F
bGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5oCmluZGV4IDMxZGExZWRhY2M0
MzU3NjIyMjE2Yzk3OTVhZDNhNjUxZjE5YTU5YTYuLjZjODUzNDM4NzNlZmYyMDAzYzc0MTdhMDgz
MzUzZmVlMTQzYjQ4ODEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmgK
KysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuaApAQCAtMjU1LDEyICsyNTUsMTEgQEAg
cHVibGljOgogCiAgICAgYm9vbCBoYXNTaGFkb3dSb290KCkgY29uc3Q7CiAgICAgU2hhZG93Um9v
dExpc3QqIHNoYWRvd1Jvb3RMaXN0KCkgY29uc3Q7Ci0KLSAgICAvLyBGSVhNRTogVGhlc2UgQVBJ
IHdpbGwgYmUgbW92ZWQgdG8gU2hhZG93Um9vdExpc3QuCi0gICAgLy8gaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTc4MzEzCi0gICAgdm9pZCBzZXRTaGFkb3dSb290KFBh
c3NSZWZQdHI8U2hhZG93Um9vdD4sIEV4Y2VwdGlvbkNvZGUmKTsKKyAgICB2b2lkIGFkZFNoYWRv
d1Jvb3QoUGFzc1JlZlB0cjxTaGFkb3dSb290PiwgRXhjZXB0aW9uQ29kZSYpOworICAgIHZvaWQg
cmVtb3ZlU2hhZG93Um9vdExpc3QoKTsKKyAgICAvLyBGSVhNRTogZW5zdXJlU2hhZG93Um9vdCgp
IHdpbGwgYmUgcmVtb3ZlZCBsYXRlci4KKyAgICAvLyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9Nzc2MDgKICAgICBTaGFkb3dSb290KiBlbnN1cmVTaGFkb3dSb290KCk7
Ci0gICAgdm9pZCByZW1vdmVTaGFkb3dSb290KCk7CiAKICAgICB2aXJ0dWFsIGNvbnN0IEF0b21p
Y1N0cmluZyYgc2hhZG93UHNldWRvSWQoKSBjb25zdDsKICAgICB2b2lkIHNldFNoYWRvd1BzZXVk
b0lkKGNvbnN0IEF0b21pY1N0cmluZyYsIEV4Y2VwdGlvbkNvZGUmID0gQVNTRVJUX05PX0VYQ0VQ
VElPTik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZVJlbmRlcmluZ0NvbnRl
eHQuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL05vZGVSZW5kZXJpbmdDb250ZXh0LmNwcAppbmRl
eCA2NjNkNTVmNjg0YjFjZTMyYjNjZDZhNDliZGRjMmQ4NjljNzE1ODdjLi5lMDI0MWY1ZTllMjhk
ZmRmYmI2NzNhMDhhMzJhZThlMWExOGNkZTkxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9k
b20vTm9kZVJlbmRlcmluZ0NvbnRleHQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2Rl
UmVuZGVyaW5nQ29udGV4dC5jcHAKQEAgLTU3LDcgKzU3LDEyIEBAIE5vZGVSZW5kZXJpbmdDb250
ZXh0OjpOb2RlUmVuZGVyaW5nQ29udGV4dChOb2RlKiBub2RlKQogICAgICAgICByZXR1cm47CiAK
ICAgICBpZiAocGFyZW50LT5pc1NoYWRvd1Jvb3QoKSkgewotICAgICAgICBtX3BoYXNlID0gQXR0
YWNoaW5nU2hhZG93Q2hpbGQ7CisgICAgICAgIC8vIEZJWE1FOiBXZSBkb24ndCBzdXBwb3J0IDxz
aGFkb3c+IHlldCwgc28gdGhlIG5vbi15b3VuZ2VzdCBzaGFkb3cgd29uJ3QgYmUgcmVuZGVyZWQu
CisgICAgICAgIC8vIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob2RfYnVncy5jZ2k/aWQ9Nzg1
OTYKKyAgICAgICAgaWYgKHRvU2hhZG93Um9vdChwYXJlbnQpLT55b3VuZ2VyU2hhZG93Um9vdCgp
KQorICAgICAgICAgICAgbV9waGFzZSA9IEF0dGFjaGluZ05vdERpc3RyaWJ1dGVkOworICAgICAg
ICBlbHNlCisgICAgICAgICAgICBtX3BoYXNlID0gQXR0YWNoaW5nU2hhZG93Q2hpbGQ7CiAgICAg
ICAgIG1fcGFyZW50Tm9kZUZvclJlbmRlcmluZ0FuZFN0eWxlID0gcGFyZW50LT5zaGFkb3dIb3N0
KCk7CiAgICAgICAgIHJldHVybjsKICAgICB9CkBAIC02Nyw5ICs3MiwxNCBAQCBOb2RlUmVuZGVy
aW5nQ29udGV4dDo6Tm9kZVJlbmRlcmluZ0NvbnRleHQoTm9kZSogbm9kZSkKICAgICAgICAgICAg
IG1fdmlzdWFsUGFyZW50U2hhZG93Um9vdExpc3QgPSB0b0VsZW1lbnQocGFyZW50KS0+c2hhZG93
Um9vdExpc3QoKTsKICAgICAgICAgICAgIGlmICgobV9pbnNlcnRpb25Qb2ludCA9IG1fdmlzdWFs
UGFyZW50U2hhZG93Um9vdExpc3QtPmluc2VydGlvblBvaW50Rm9yKG1fbm9kZSkpCiAgICAgICAg
ICAgICAgICAgJiYgbV92aXN1YWxQYXJlbnRTaGFkb3dSb290TGlzdC0+aXNTZWxlY3RvckFjdGl2
ZSgpKSB7Ci0gICAgICAgICAgICAgICAgbV9waGFzZSA9IEF0dGFjaGluZ0Rpc3RyaWJ1dGVkOwot
ICAgICAgICAgICAgICAgIG1fcGFyZW50Tm9kZUZvclJlbmRlcmluZ0FuZFN0eWxlID0gTm9kZVJl
bmRlcmluZ0NvbnRleHQobV9pbnNlcnRpb25Qb2ludCkucGFyZW50Tm9kZUZvclJlbmRlcmluZ0Fu
ZFN0eWxlKCk7Ci0gICAgICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAgICAgICAgICAgLy8g
RklYTUU6IFdlIGRvbid0IHN1cHBvcnQgPHNoYWRvdz4geWV0LCBzbyB0aGUgbm9uLXlvdW5nZXN0
IHNoYWRvdyB3b24ndCBiZSByZW5kZXJlZC4KKyAgICAgICAgICAgICAgICAvLyBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Z3MuY2dpP2lkPTc4NTk2CisgICAgICAgICAgICAgICAgaWYg
KCF0b1NoYWRvd1Jvb3QobV9pbnNlcnRpb25Qb2ludC0+c2hhZG93VHJlZVJvb3ROb2RlKCkpLT55
b3VuZ2VyU2hhZG93Um9vdCgpKSB7CisgICAgICAgICAgICAgICAgICAgIG1fcGhhc2UgPSBBdHRh
Y2hpbmdEaXN0cmlidXRlZDsKKyAgICAgICAgICAgICAgICAgICAgbV9wYXJlbnROb2RlRm9yUmVu
ZGVyaW5nQW5kU3R5bGUgPSBOb2RlUmVuZGVyaW5nQ29udGV4dChtX2luc2VydGlvblBvaW50KS5w
YXJlbnROb2RlRm9yUmVuZGVyaW5nQW5kU3R5bGUoKTsKKyAgICAgICAgICAgICAgICAgICAgcmV0
dXJuOworICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgIH0KIAogICAgICAgICAgICAgbV9w
aGFzZSA9IEF0dGFjaGluZ05vdERpc3RyaWJ1dGVkOwpAQCAtMjYwLDcgKzI3MCw3IEBAIFJlbmRl
ck9iamVjdCogTm9kZVJlbmRlcmluZ0NvbnRleHQ6OnBhcmVudFJlbmRlcmVyKCkgY29uc3QKIAog
dm9pZCBOb2RlUmVuZGVyaW5nQ29udGV4dDo6aG9zdENoaWxkcmVuQ2hhbmdlZCgpCiB7Ci0gICAg
aWYgKG1fcGhhc2UgPT0gQXR0YWNoaW5nTm90RGlzdHJpYnV0ZWQpCisgICAgaWYgKG1fcGhhc2Ug
PT0gQXR0YWNoaW5nTm90RGlzdHJpYnV0ZWQgJiYgbV92aXN1YWxQYXJlbnRTaGFkb3dSb290TGlz
dCkKICAgICAgICAgbV92aXN1YWxQYXJlbnRTaGFkb3dSb290TGlzdC0+aG9zdENoaWxkcmVuQ2hh
bmdlZCgpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vU2hhZG93Um9vdC5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vU2hhZG93Um9vdC5jcHAKaW5kZXggNmNmNTBhY2I5ODgx
NDI5MzJlYTRhMGM3YTQzZTgxZGQ1OTk5ODkxNy4uODhhZTk1YmFkODcwMjExOTRjNGNiNTJmY2Vl
ZThiNDJlOTIzMWNiMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL1NoYWRvd1Jvb3Qu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9TaGFkb3dSb290LmNwcApAQCAtMTIzLDcgKzEy
Myw3IEBAIFBhc3NSZWZQdHI8U2hhZG93Um9vdD4gU2hhZG93Um9vdDo6Y3JlYXRlKEVsZW1lbnQq
IGVsZW1lbnQsIFNoYWRvd1Jvb3RDcmVhdGlvblB1CiAgICAgUmVmUHRyPFNoYWRvd1Jvb3Q+IHNo
YWRvd1Jvb3QgPSBhZG9wdFJlZihuZXcgU2hhZG93Um9vdChlbGVtZW50LT5kb2N1bWVudCgpKSk7
CiAKICAgICBlYyA9IDA7Ci0gICAgZWxlbWVudC0+c2V0U2hhZG93Um9vdChzaGFkb3dSb290LCBl
Yyk7CisgICAgZWxlbWVudC0+YWRkU2hhZG93Um9vdChzaGFkb3dSb290LCBlYyk7CiAgICAgaWYg
KGVjKQogICAgICAgICByZXR1cm4gMDsKICAgICBBU1NFUlQoZWxlbWVudCA9PSBzaGFkb3dSb290
LT5ob3N0KCkpOwpAQCAtMTg0LDE3ICsxODQsNCBAQCB2b2lkIFNoYWRvd1Jvb3Q6OnNldEFwcGx5
QXV0aG9yU2hlZXRzKGJvb2wgdmFsdWUpCiAgICAgbV9hcHBseUF1dGhvclNoZWV0cyA9IHZhbHVl
OwogfQogCi12b2lkIFNoYWRvd1Jvb3Q6OmF0dGFjaCgpCi17Ci0gICAgLy8gQ2hpbGRyZW4gb2Yg
bV9zZWxlY3RvciBpcyBwb3B1bGF0ZWQgbGF6aWx5IGluCi0gICAgLy8gZW5zdXJlU2VsZWN0b3Io
KSwgYW5kIGhlcmUgd2UganVzdCBlbnN1cmUgdGhhdAotICAgIC8vIGl0IGlzIGluIGNsZWFuIHN0
YXRlLgotICAgIC8vIEZJWE1FOiBUaGlzIGFzc2VydGlvbiBicmVha3MgaWYgbXVsdGlwbGUgc2hh
ZG93IHJvb3RzIGFyZSBiZWluZyBhdHRhY2hlZC4KLSAgICAvLyBTaGFkb3dSb290TGlzdCBzaG91
bGQgaGF2ZSByZXNwb25zaWJpbGl0eSBvZiBzaWRlIGVmZmVjdCBvZiBzZWxlY3RvciBpbiBhdHRh
Y2hpbmcvZGV0YWNoaW5nLgotICAgIEFTU0VSVCghaG9zdCgpLT5zaGFkb3dSb290TGlzdCgpLT5z
ZWxlY3RvcigpIHx8ICFob3N0KCktPnNoYWRvd1Jvb3RMaXN0KCktPnNlbGVjdG9yKCktPmhhc0Nh
bmRpZGF0ZXMoKSk7Ci0gICAgRG9jdW1lbnRGcmFnbWVudDo6YXR0YWNoKCk7Ci0gICAgaWYgKEhU
TUxDb250ZW50U2VsZWN0b3IqIHNlbGVjdG9yID0gaG9zdCgpLT5zaGFkb3dSb290TGlzdCgpLT5z
ZWxlY3RvcigpKQotICAgICAgICBzZWxlY3Rvci0+ZGlkU2VsZWN0KCk7Ci19Ci0KIH0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9TaGFkb3dSb290LmggYi9Tb3VyY2UvV2ViQ29yZS9k
b20vU2hhZG93Um9vdC5oCmluZGV4IDliOWRiMTQ0MmE4ZTk0OGRiZmQ5MTA4ZmE1ZDAzYWRlYjBm
ZTY3YTMuLmZkOTQ3ODc3NzJjZTNlNjEzYzJjNzQ4ZTY5OGJiZjMwMTRlOGJlZDMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9TaGFkb3dSb290LmgKKysrIGIvU291cmNlL1dlYkNvcmUv
ZG9tL1NoYWRvd1Jvb3QuaApAQCAtNjQsMTYgKzY0LDE3IEBAIHB1YmxpYzoKICAgICBJbnNlcnRp
b25Qb2ludCogaW5zZXJ0aW9uUG9pbnRGb3IoTm9kZSopIGNvbnN0OwogICAgIHZvaWQgaG9zdENo
aWxkcmVuQ2hhbmdlZCgpOwogCi0gICAgdmlydHVhbCB2b2lkIGF0dGFjaCgpOwotCiAgICAgdmly
dHVhbCBib29sIGFwcGx5QXV0aG9yU2hlZXRzKCkgY29uc3Q7CiAgICAgdm9pZCBzZXRBcHBseUF1
dGhvclNoZWV0cyhib29sKTsKIAogICAgIEVsZW1lbnQqIGhvc3QoKSBjb25zdCB7IHJldHVybiBz
aGFkb3dIb3N0KCk7IH0KICAgICBTaGFkb3dSb290TGlzdCogbGlzdCgpIGNvbnN0OwogCi0gICAg
U2hhZG93Um9vdCogeW91bmdlclNoYWRvd1Jvb3QoKSB7IHJldHVybiBwcmV2KCk7IH0KLSAgICBT
aGFkb3dSb290KiBvbGRlclNoYWRvd1Jvb3QoKSB7IHJldHVybiBuZXh0KCk7IH0KKyAgICBTaGFk
b3dSb290KiB5b3VuZ2VyU2hhZG93Um9vdCgpIGNvbnN0IHsgcmV0dXJuIHByZXYoKTsgfQorICAg
IFNoYWRvd1Jvb3QqIG9sZGVyU2hhZG93Um9vdCgpIGNvbnN0IHsgcmV0dXJuIG5leHQoKTsgfQor
CisgICAgYm9vbCBpc1lvdW5nZXN0U2hhZG93Um9vdCgpIGNvbnN0IHsgcmV0dXJuICF5b3VuZ2Vy
U2hhZG93Um9vdCgpOyB9CisgICAgYm9vbCBpc09sZGVzdFNoYWRvd1Jvb3QoKSBjb25zdCB7IHJl
dHVybiAhb2xkZXJTaGFkb3dSb290KCk7IH0KIAogICAgIGJvb2wgaGFzQ29udGVudEVsZW1lbnQo
KSBjb25zdDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL1NoYWRvd1Jvb3RMaXN0
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9TaGFkb3dSb290TGlzdC5jcHAKaW5kZXggM2FkZWU2
MzcwMDNmZWVlYmJkNTNmZjcyZGMzNTdiYTExZDAzZDBmMy4uM2RiZjcyNWNhYzdjMGQzM2U5Y2M1
OGRjNmRiYjQ4ZGM0YjNiMzBlOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL1NoYWRv
d1Jvb3RMaXN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vU2hhZG93Um9vdExpc3QuY3Bw
CkBAIC05OCwyMiArOTgsMjEgQEAgdm9pZCBTaGFkb3dSb290TGlzdDo6d2lsbFJlbW92ZSgpCiAK
IHZvaWQgU2hhZG93Um9vdExpc3Q6OmF0dGFjaCgpCiB7Ci0gICAgLy8gRklYTUU6IEN1cnJlbnRs
eSB3ZSBvbmx5IHN1cHBvcnQgdGhlIGNhc2UgdGhhdCB0aGUgc2hhZG93IHJvb3QgbGlzdCBoYXMg
YXQgbW9zdCBvbmUgc2hhZG93IHJvb3QuCi0gICAgLy8gU2VlIGFsc28gaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTc3NTAzIGFuZCBpdHMgZGVwZW5kZW50IGJ1Z3MuCi0g
ICAgQVNTRVJUKG1fc2hhZG93Um9vdHMuc2l6ZSgpIDw9IDEpOworICAgIC8vIENoaWxkcmVuIG9m
IG1fc2VsZWN0b3IgaXMgcG9wdWxhdGVkIGxhemlseSBpbgorICAgIC8vIGVuc3VyZVNlbGVjdG9y
KCksIGFuZCBoZXJlIHdlIGp1c3QgZW5zdXJlIHRoYXQgaXQgaXMgaW4gY2xlYW4gc3RhdGUuCisg
ICAgQVNTRVJUKCFzZWxlY3RvcigpIHx8ICFzZWxlY3RvcigpLT5oYXNDYW5kaWRhdGVzKCkpOwog
CiAgICAgZm9yIChTaGFkb3dSb290KiByb290ID0geW91bmdlc3RTaGFkb3dSb290KCk7IHJvb3Q7
IHJvb3QgPSByb290LT5vbGRlclNoYWRvd1Jvb3QoKSkgewogICAgICAgICBpZiAoIXJvb3QtPmF0
dGFjaGVkKCkpCiAgICAgICAgICAgICByb290LT5hdHRhY2goKTsKICAgICB9CisKKyAgICBpZiAo
SFRNTENvbnRlbnRTZWxlY3RvciogY29udGVudFNlbGVjdG9yID0gc2VsZWN0b3IoKSkKKyAgICAg
ICAgY29udGVudFNlbGVjdG9yLT5kaWRTZWxlY3QoKTsKIH0KIAogdm9pZCBTaGFkb3dSb290TGlz
dDo6ZGV0YWNoKCkKIHsKLSAgICAvLyBGSVhNRTogQ3VycmVudGx5IHdlIG9ubHkgc3VwcG9ydCB0
aGUgY2FzZSB0aGF0IHRoZSBzaGFkb3cgcm9vdCBsaXN0IGhhcyBhdCBtb3N0IG9uZSBzaGFkb3cg
cm9vdC4KLSAgICAvLyBTZWUgYWxzbyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9Nzc1MDMgYW5kIGl0cyBkZXBlbmRlbnQgYnVncy4KLSAgICBBU1NFUlQobV9zaGFkb3dS
b290cy5zaXplKCkgPD0gMSk7Ci0KICAgICBmb3IgKFNoYWRvd1Jvb3QqIHJvb3QgPSB5b3VuZ2Vz
dFNoYWRvd1Jvb3QoKTsgcm9vdDsgcm9vdCA9IHJvb3QtPm9sZGVyU2hhZG93Um9vdCgpKSB7CiAg
ICAgICAgIGlmIChyb290LT5hdHRhY2hlZCgpKQogICAgICAgICAgICAgcm9vdC0+ZGV0YWNoKCk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5jcHAKaW5kZXggODRlOWNmNzU0MDk0OWY4ZDdl
MTJiNWRkZmEwYzc4MjEyZDRiZjJhOC4uNThmYjQyNmRhMDY5ZWRlZGU4NzA4ZjVjZWI1MjI3MmI5
NGJjNDE2NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNwcApAQCAtMTE5LDYgKzEx
OSwxNCBAQCBJbnRlcm5hbHM6OkludGVybmFscyhEb2N1bWVudCogZG9jdW1lbnQpCiAgICAgcmVz
ZXQoZG9jdW1lbnQpOwogfQogCitTdHJpbmcgSW50ZXJuYWxzOjphZGRyZXNzKE5vZGUqIG5vZGUp
Cit7CisgICAgY2hhciBidWZbMzJdOworICAgIHNwcmludGYoYnVmLCAiJXAiLCBub2RlKTsKKwor
ICAgIHJldHVybiBTdHJpbmcoYnVmKTsKK30KKwogYm9vbCBJbnRlcm5hbHM6OmlzUHJlbG9hZGVk
KERvY3VtZW50KiBkb2N1bWVudCwgY29uc3QgU3RyaW5nJiB1cmwpCiB7CiAgICAgaWYgKCFkb2N1
bWVudCkKQEAgLTI0MSw2ICsyNDksMjYgQEAgSW50ZXJuYWxzOjpTaGFkb3dSb290SWZTaGFkb3dE
T01FbmFibGVkT3JOb2RlKiBJbnRlcm5hbHM6Om9sZGVzdFNoYWRvd1Jvb3QoRWxlbWUKICAgICBy
ZXR1cm4gaG9zdC0+c2hhZG93Um9vdExpc3QoKS0+b2xkZXN0U2hhZG93Um9vdCgpOwogfQogCitJ
bnRlcm5hbHM6OlNoYWRvd1Jvb3RJZlNoYWRvd0RPTUVuYWJsZWRPck5vZGUqIEludGVybmFsczo6
eW91bmdlclNoYWRvd1Jvb3QoTm9kZSogc2hhZG93LCBFeGNlcHRpb25Db2RlJiBlYykKK3sKKyAg
ICBpZiAoIXNoYWRvdyB8fCAhc2hhZG93LT5pc1NoYWRvd1Jvb3QoKSkgeworICAgICAgICBlYyA9
IElOVkFMSURfQUNDRVNTX0VSUjsKKyAgICAgICAgcmV0dXJuIDA7CisgICAgfQorCisgICAgcmV0
dXJuIHRvU2hhZG93Um9vdChzaGFkb3cpLT55b3VuZ2VyU2hhZG93Um9vdCgpOworfQorCitJbnRl
cm5hbHM6OlNoYWRvd1Jvb3RJZlNoYWRvd0RPTUVuYWJsZWRPck5vZGUqIEludGVybmFsczo6b2xk
ZXJTaGFkb3dSb290KE5vZGUqIHNoYWRvdywgRXhjZXB0aW9uQ29kZSYgZWMpCit7CisgICAgaWYg
KCFzaGFkb3cgfHwgIXNoYWRvdy0+aXNTaGFkb3dSb290KCkpIHsKKyAgICAgICAgZWMgPSBJTlZB
TElEX0FDQ0VTU19FUlI7CisgICAgICAgIHJldHVybiAwOworICAgIH0KKworICAgIHJldHVybiB0
b1NoYWRvd1Jvb3Qoc2hhZG93KS0+b2xkZXJTaGFkb3dSb290KCk7Cit9CisKIHZvaWQgSW50ZXJu
YWxzOjpyZW1vdmVTaGFkb3dSb290KEVsZW1lbnQqIGhvc3QsIEV4Y2VwdGlvbkNvZGUmIGVjKQog
ewogICAgIGlmICghaG9zdCkgewpAQCAtMjQ4LDcgKzI3Niw3IEBAIHZvaWQgSW50ZXJuYWxzOjpy
ZW1vdmVTaGFkb3dSb290KEVsZW1lbnQqIGhvc3QsIEV4Y2VwdGlvbkNvZGUmIGVjKQogICAgICAg
ICByZXR1cm47CiAgICAgfQogCi0gICAgaG9zdC0+cmVtb3ZlU2hhZG93Um9vdCgpOworICAgIGhv
c3QtPnJlbW92ZVNoYWRvd1Jvb3RMaXN0KCk7CiB9CiAKIHZvaWQgSW50ZXJuYWxzOjpzZXRNdWx0
aXBsZVNoYWRvd1N1YnRyZWVzRW5hYmxlZChib29sIGVuYWJsZWQpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5oIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9J
bnRlcm5hbHMuaAppbmRleCBlYTJmOGI4YWYyYzExY2NmYzBhNmNlZjljY2E4ZTZmNDRkMDVjNTZk
Li4wNzQyODZjNDA0MGViOWNiOTI5NjBiNjg3ZjQxODU1ZmMwMTJkZTdhIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Rl
c3RpbmcvSW50ZXJuYWxzLmgKQEAgLTU1LDYgKzU1LDggQEAgcHVibGljOgogCiAgICAgU3RyaW5n
IGVsZW1lbnRSZW5kZXJUcmVlQXNUZXh0KEVsZW1lbnQqLCBFeGNlcHRpb25Db2RlJik7CiAKKyAg
ICBTdHJpbmcgYWRkcmVzcyhOb2RlKik7CisKICAgICBib29sIGlzUHJlbG9hZGVkKERvY3VtZW50
KiwgY29uc3QgU3RyaW5nJiB1cmwpOwogCiAgICAgc2l6ZV90IG51bWJlck9mU2NvcGVkSFRNTFN0
eWxlQ2hpbGRyZW4oY29uc3QgTm9kZSosIEV4Y2VwdGlvbkNvZGUmKSBjb25zdDsKQEAgLTY4LDYg
KzcwLDggQEAgcHVibGljOgogICAgIFNoYWRvd1Jvb3RJZlNoYWRvd0RPTUVuYWJsZWRPck5vZGUq
IHNoYWRvd1Jvb3QoRWxlbWVudCogaG9zdCwgRXhjZXB0aW9uQ29kZSYpOwogICAgIFNoYWRvd1Jv
b3RJZlNoYWRvd0RPTUVuYWJsZWRPck5vZGUqIHlvdW5nZXN0U2hhZG93Um9vdChFbGVtZW50KiBo
b3N0LCBFeGNlcHRpb25Db2RlJik7CiAgICAgU2hhZG93Um9vdElmU2hhZG93RE9NRW5hYmxlZE9y
Tm9kZSogb2xkZXN0U2hhZG93Um9vdChFbGVtZW50KiBob3N0LCBFeGNlcHRpb25Db2RlJik7Cisg
ICAgU2hhZG93Um9vdElmU2hhZG93RE9NRW5hYmxlZE9yTm9kZSogeW91bmdlclNoYWRvd1Jvb3Qo
Tm9kZSogc2hhZG93LCBFeGNlcHRpb25Db2RlJik7CisgICAgU2hhZG93Um9vdElmU2hhZG93RE9N
RW5hYmxlZE9yTm9kZSogb2xkZXJTaGFkb3dSb290KE5vZGUqIHNoYWRvdywgRXhjZXB0aW9uQ29k
ZSYpOwogICAgIHZvaWQgcmVtb3ZlU2hhZG93Um9vdChFbGVtZW50KiBob3N0LCBFeGNlcHRpb25D
b2RlJik7CiAgICAgdm9pZCBzZXRNdWx0aXBsZVNoYWRvd1N1YnRyZWVzRW5hYmxlZChib29sKTsK
ICAgICBFbGVtZW50KiBpbmNsdWRlckZvcihOb2RlKiwgRXhjZXB0aW9uQ29kZSYpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuaWRsIGIvU291cmNlL1dlYkNv
cmUvdGVzdGluZy9JbnRlcm5hbHMuaWRsCmluZGV4IGJhNzZkNDg2ZGRlODk3MTEyODhmYjA0OTNj
MTM3NGJiODE2YzgyY2EuLmJkNGVmZjczODA4NmE1NGY2MGI2YTJmZWMxMTQwYTJmYmNiOGNkMzYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmlkbAorKysgYi9T
b3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5pZGwKQEAgLTI3LDYgKzI3LDggQEAgbW9k
dWxlIHdpbmRvdyB7CiAgICAgaW50ZXJmYWNlIFsKICAgICAgICAgT21pdENvbnN0cnVjdG9yCiAg
ICAgXSBJbnRlcm5hbHMgeworICAgICAgICBET01TdHJpbmcgYWRkcmVzcyhpbiBOb2RlIG5vZGUp
OworCiAgICAgICAgIERPTVN0cmluZyBlbGVtZW50UmVuZGVyVHJlZUFzVGV4dChpbiBFbGVtZW50
IGVsZW1lbnQpIHJhaXNlcyhET01FeGNlcHRpb24pOwogICAgICAgICBib29sZWFuIGlzUHJlbG9h
ZGVkKGluIERvY3VtZW50IGRvY3VtZW50LCBpbiBET01TdHJpbmcgdXJsKTsKIApAQCAtMzcsMTEg
KzM5LDE1IEBAIG1vZHVsZSB3aW5kb3cgewogICAgICAgICBTaGFkb3dSb290IHNoYWRvd1Jvb3Qo
aW4gRWxlbWVudCBob3N0KSByYWlzZXMgKERPTUV4Y2VwdGlvbik7CiAgICAgICAgIFNoYWRvd1Jv
b3QgeW91bmdlc3RTaGFkb3dSb290KGluIEVsZW1lbnQgaG9zdCkgcmFpc2VzIChET01FeGNlcHRp
b24pOwogICAgICAgICBTaGFkb3dSb290IG9sZGVzdFNoYWRvd1Jvb3QoaW4gRWxlbWVudCBob3N0
KSByYWlzZXMgKERPTUV4Y2VwdGlvbik7CisgICAgICAgIFNoYWRvd1Jvb3QgeW91bmdlclNoYWRv
d1Jvb3QoaW4gTm9kZSByb290KSByYWlzZXMgKERPTUV4Y2VwdGlvbik7CisgICAgICAgIFNoYWRv
d1Jvb3Qgb2xkZXJTaGFkb3dSb290KGluIE5vZGUgcm9vdCkgcmFpc2VzIChET01FeGNlcHRpb24p
OwogI2Vsc2UKICAgICAgICAgTm9kZSBlbnN1cmVTaGFkb3dSb290KGluIEVsZW1lbnQgaG9zdCkg
cmFpc2VzIChET01FeGNlcHRpb24pOwogICAgICAgICBOb2RlIHNoYWRvd1Jvb3QoaW4gRWxlbWVu
dCBob3N0KSByYWlzZXMgKERPTUV4Y2VwdGlvbik7CiAgICAgICAgIE5vZGUgeW91bmdlc3RTaGFk
b3dSb290KGluIEVsZW1lbnQgaG9zdCkgcmFpc2VzIChET01FeGNlcHRpb24pOwogICAgICAgICBO
b2RlIG9sZGVzdFNoYWRvd1Jvb3QoaW4gRWxlbWVudCBob3N0KSByYWlzZXMgKERPTUV4Y2VwdGlv
bik7CisgICAgICAgIE5vZGUgeW91bmdlclNoYWRvd1Jvb3QoaW4gTm9kZSByb290KSByYWlzZXMg
KERPTUV4Y2VwdGlvbik7CisgICAgICAgIE5vZGUgeW91bmdlclNoYWRvd1Jvb3QoaW4gTm9kZSBy
b290KSByYWlzZXMgKERPTUV4Y2VwdGlvbik7CiAjZW5kaWYKICAgICAgICAgdm9pZCBzZXRNdWx0
aXBsZVNoYWRvd1N1YnRyZWVzRW5hYmxlZChpbiBib29sZWFuIGVuYWJsZWQpOwogICAgICAgICBF
bGVtZW50IGluY2x1ZGVyRm9yKGluIE5vZGUgbm9kZSkgcmFpc2VzIChET01FeGNlcHRpb24pOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvd2luL1dlYktpdDIuZGVmIGIvU291cmNlL1dlYktp
dDIvd2luL1dlYktpdDIuZGVmCmluZGV4IDcxOGRmYTE4YmI2ZGE3YTFjOTAzYjYyNTE1ODk0YjUx
YzlmMGExMTcuLjNmOWE1ZWVhZjUxMDAzZmEwM2ZhNDZhMzNjZTFlZjk5YTI2MzNiMzUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL3dpbi9XZWJLaXQyLmRlZgorKysgYi9Tb3VyY2UvV2ViS2l0
Mi93aW4vV2ViS2l0Mi5kZWYKQEAgLTE3Niw3ICsxNzYsNyBAQCBFWFBPUlRTCiAgICAgICAgID9w
YWdlQERvY3VtZW50QFdlYkNvcmVAQFFCRVBBVlBhZ2VAMkBYWgogICAgICAgICA/cGFpbnRDb250
cm9sVGludHNARnJhbWVWaWV3QFdlYkNvcmVAQEFBRVhYWgogICAgICAgICA/cmFuZ2VGcm9tTG9j
YXRpb25BbmRMZW5ndGhAVGV4dEl0ZXJhdG9yQFdlYkNvcmVAQFNBP0FWPyRQYXNzUmVmUHRyQFZS
YW5nZUBXZWJDb3JlQEBAV1RGQEBQQVZFbGVtZW50QDJASEhfTkBaCi0gICAgICAgID9yZW1vdmVT
aGFkb3dSb290QEVsZW1lbnRAV2ViQ29yZUBAUUFFWFhaCisgICAgICAgID9yZW1vdmVTaGFkb3dS
b290TGlzdEBFbGVtZW50QFdlYkNvcmVAQFFBRVhYWgogICAgICAgICA/c2NyaXB0RXhlY3V0aW9u
Q29udGV4dEBKU0RPTUdsb2JhbE9iamVjdEBXZWJDb3JlQEBRQkVQQVZTY3JpcHRFeGVjdXRpb25D
b250ZXh0QDJAWFoKICAgICAgICAgP3Njcm9sbEVsZW1lbnRUb1JlY3RARnJhbWVWaWV3QFdlYkNv
cmVAQFFBRVhQQVZFbGVtZW50QDJAQUJWSW50UmVjdEAyQEBaCiAgICAgICAgID9zZXRET01FeGNl
cHRpb25AV2ViQ29yZUBAWUFYUEFWRXhlY1N0YXRlQEpTQ0BASEBaCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0Mi93aW4vV2ViS2l0MkNGTGl0ZS5kZWYgYi9Tb3VyY2UvV2ViS2l0Mi93aW4vV2Vi
S2l0MkNGTGl0ZS5kZWYKaW5kZXggYzM1OWVhNmUzZmE4NDJkOGI2NzU2MDM4YmExYWYwOGExNzQy
NTNkYS4uM2Y3MmIwYWRiOTVlOTRlOGQxNTc0NmEwZWZlODhkYzhmZmZhMGYzNSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdDIvd2luL1dlYktpdDJDRkxpdGUuZGVmCisrKyBiL1NvdXJjZS9XZWJL
aXQyL3dpbi9XZWJLaXQyQ0ZMaXRlLmRlZgpAQCAtMTY5LDcgKzE2OSw3IEBAIEVYUE9SVFMKICAg
ICAgICAgP3BhZ2VARG9jdW1lbnRAV2ViQ29yZUBAUUJFUEFWUGFnZUAyQFhaCiAgICAgICAgID9w
YWludENvbnRyb2xUaW50c0BGcmFtZVZpZXdAV2ViQ29yZUBAQUFFWFhaCiAgICAgICAgID9yYW5n
ZUZyb21Mb2NhdGlvbkFuZExlbmd0aEBUZXh0SXRlcmF0b3JAV2ViQ29yZUBAU0E/QVY/JFBhc3NS
ZWZQdHJAVlJhbmdlQFdlYkNvcmVAQEBXVEZAQFBBVkVsZW1lbnRAMkBISF9OQFoKLSAgICAgICAg
P3JlbW92ZVNoYWRvd1Jvb3RARWxlbWVudEBXZWJDb3JlQEBRQUVYWFoKKyAgICAgICAgP3JlbW92
ZVNoYWRvd1Jvb3RMaXN0QEVsZW1lbnRAV2ViQ29yZUBAUUFFWFhaCiAgICAgICAgID9zY3JpcHRF
eGVjdXRpb25Db250ZXh0QEpTRE9NR2xvYmFsT2JqZWN0QFdlYkNvcmVAQFFCRVBBVlNjcmlwdEV4
ZWN1dGlvbkNvbnRleHRAMkBYWgogICAgICAgICA/c2Nyb2xsRWxlbWVudFRvUmVjdEBGcmFtZVZp
ZXdAV2ViQ29yZUBAUUFFWFBBVkVsZW1lbnRAMkBBQlZJbnRSZWN0QDJAQFoKICAgICAgICAgP3Nl
dERPTUV4Y2VwdGlvbkBXZWJDb3JlQEBZQVhQQVZFeGVjU3RhdGVASlNDQEBIQFoKZGlmZiAtLWdp
dCBhL1NvdXJjZS9hdXRvdG9vbHMvc3ltYm9scy5maWx0ZXIgYi9Tb3VyY2UvYXV0b3Rvb2xzL3N5
bWJvbHMuZmlsdGVyCmluZGV4IGVmNzBkODFhNGZhN2NkZTE4ZWFiYjFkMzk5ZTk5ZDMzNTU2MDlk
M2MuLjkwNjVlOTRiMGYyYTkxYTQ2ZTU1MzhmM2Y5MTUwY2MwNTBjMTg2NjcgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9hdXRvdG9vbHMvc3ltYm9scy5maWx0ZXIKKysrIGIvU291cmNlL2F1dG90b29scy9z
eW1ib2xzLmZpbHRlcgpAQCAtNjYsNyArNjYsNyBAQCBfWk43V2ViQ29yZTZKU05vZGUxMHB1dFZp
cnR1YWxFUE4zSlNDOUV4ZWNTdGF0ZUVSS05TMV8xMElkZW50aWZpZXJFTlMxXzdKU1ZhbHVlRQog
X1pON1dlYkNvcmU2SlNOb2RlMjB2aXNpdENoaWxkcmVuVmlydHVhbEVSTjNKU0MxMVNsb3RWaXNp
dG9yRTsKIF9aTjdXZWJDb3JlNkpTTm9kZTZzX2luZm9FOwogX1pON1dlYkNvcmU2dG9Ob2RlRU4z
SlNDN0pTVmFsdWVFOwotX1pON1dlYkNvcmU3RWxlbWVudDE2cmVtb3ZlU2hhZG93Um9vdEV2Owor
X1pON1dlYkNvcmU3RWxlbWVudDIwcmVtb3ZlU2hhZG93Um9vdExpc3RFdjsKIF9aTjdXZWJDb3Jl
N3RvUmFuZ2VFTjNKU0M3SlNWYWx1ZUU7CiBfWk43V2ViQ29yZTlKU0VsZW1lbnQxMHB1dFZpcnR1
YWxFUE4zSlNDOUV4ZWNTdGF0ZUVSS05TMV8xMElkZW50aWZpZXJFTlMxXzdKU1ZhbHVlRVJOUzFf
MTVQdXRQcm9wZXJ0eVNsb3RFOwogX1pON1dlYkNvcmU5SlNFbGVtZW50NnNfaW5mb0U7CmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5k
ZXggZDhiMTJlNzNmNGU3ZTE0OWY3OWE2N2Y0NTM0ZGU2OTgxNDA3NTFjNi4uMTBkOWM2OTIzMjA1
YTM0NWVkODhiYTc1OTBmZGZhMGM5NDVlMTI1NyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hh
bmdlTG9nCisrKyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI2IEBACisyMDEy
LTAyLTIzICBTaGlueWEgS2F3YW5ha2EgIDxzaGlueWFrQGNocm9taXVtLm9yZz4KKworICAgICAg
ICBFbGVtZW50IHNob3VsZCBiZSBhYmxlIHRvIGhhdmUgbXVsdGlwbGUgc2hhZG93IHJvb3RzLgor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9Nzc5MzEKKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIGZhc3QvZG9t
L3Jlc291cmNlcy9zaGFkb3ctdGVzdC1kcml2ZXIuanM6CisgICAgICAgIChjcmVhdGVTcGFuV2l0
aFRleHQpOgorICAgICAgICAoZG9uZVRlc3QpOgorICAgICAgICAoZG9UZXN0KToKKyAgICAgICAg
KiBmYXN0L2RvbS9zaGFkb3cvbXVsdGlwbGUtc2hhZG93cm9vdC1leHBlY3RlZC50eHQ6IEFkZGVk
LgorICAgICAgICAqIGZhc3QvZG9tL3NoYWRvdy9tdWx0aXBsZS1zaGFkb3dyb290LXJlbmRlcmlu
Zy1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGZhc3QvZG9tL3NoYWRvdy9tdWx0aXBs
ZS1zaGFkb3dyb290LXJlbmRlcmluZy5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2RvbS9z
aGFkb3cvbXVsdGlwbGUtc2hhZG93cm9vdC5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBwbGF0Zm9y
bS9lZmwvU2tpcHBlZDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ndGsvU2tpcHBlZDoKKyAgICAgICAg
KiBwbGF0Zm9ybS9tYWMvU2tpcHBlZDoKKyAgICAgICAgKiBwbGF0Zm9ybS9xdC9Ta2lwcGVkOgor
ICAgICAgICAqIHBsYXRmb3JtL3dpbi9Ta2lwcGVkOgorICAgICAgICAqIHBsYXRmb3JtL3dpbmNh
aXJvL1NraXBwZWQ6CisgICAgICAgICogcGxhdGZvcm0vd2syL1NraXBwZWQ6CisKIDIwMTItMDIt
MjMgIERhbiBCZXJuc3RlaW4gIDxtaXR6QGFwcGxlLmNvbT4KIAogICAgICAgICBSRUdSRVNTSU9O
OiBBc3NlcnRpb24gZmFpbHVyZSBpbiBEb2N1bWVudDo6c2V0Q29tcGF0aWJpbGl0eU1vZGUoKSAo
IW1fc3R5bGVTaGVldHMtPmxlbmd0aCgpKSBpbiBmYXN0L2R5bmFtaWMvY3Jhc2gtcGFpbnQtbm8t
ZG9jdW1lbnRFbGVtZW50LXJlbmRlcmVyLmh0bWwKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zh
c3QvZG9tL3Jlc291cmNlcy9zaGFkb3ctdGVzdC1kcml2ZXIuanMgYi9MYXlvdXRUZXN0cy9mYXN0
L2RvbS9yZXNvdXJjZXMvc2hhZG93LXRlc3QtZHJpdmVyLmpzCmluZGV4IDk5ZTNlYmY2ZjdlNTJl
ZGRlYmI1YjMwZTQ4OWIwYjZlZGE0ZTBjYmUuLjBmZjVkNDA1OGUyMDdjMWQwYjI5ZjIxOGIwMjkx
MmNmY2I1YjkwZjAgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2Zhc3QvZG9tL3Jlc291cmNlcy9z
aGFkb3ctdGVzdC1kcml2ZXIuanMKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9kb20vcmVzb3VyY2Vz
L3NoYWRvdy10ZXN0LWRyaXZlci5qcwpAQCAtNTMsOSArNTMsMTEgQEAgZnVuY3Rpb24gY2hlY2so
KSB7CiAgICAgfQogfQogCi1mdW5jdGlvbiBjcmVhdGVTcGFuV2l0aFRleHQodGV4dCkgeworZnVu
Y3Rpb24gY3JlYXRlU3BhbldpdGhUZXh0KHRleHQsIGNsYXNzTmFtZSkgewogICAgIHZhciBzcGFu
ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnc3BhbicpOwogICAgIHNwYW4uYXBwZW5kQ2hpbGQo
ZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUodGV4dCkpOworICAgIGlmIChjbGFzc05hbWUpCisgICAg
ICAgIHNwYW4uY2xhc3NOYW1lID0gY2xhc3NOYW1lOwogICAgIHJldHVybiBzcGFuOwogfQogCkBA
IC0xMTgsMTEgKzEyMCwxNiBAQCBmdW5jdGlvbiBkb1Rlc3RJZkxlZnQocmVzdFRlc3RzKSB7CiAK
IGZ1bmN0aW9uIGRvbmVUZXN0KCkgewogICAgIGxvZygiVEVTVCBDT01QTEVURUQiKTsKKyAgICBp
ZiAod2luZG93LnRlYXJEb3duT25jZSkKKyAgICAgICAgd2luZG93LnRlYXJEb3duT25jZSgpOwog
ICAgIGxheW91dFRlc3RDb250cm9sbGVyLm5vdGlmeURvbmUoKTsKIH0KIAogLy8gQSB0ZXN0IGRy
aXZlci4gQ2FsbCB0aGlzIGJvZHkub25sb2FkLgogZnVuY3Rpb24gZG9UZXN0KHRlc3RzKSB7Cisg
ICAgaWYgKHdpbmRvdy5zZXRVcE9uY2UpCisgICAgICAgIHdpbmRvdy5zZXRVcE9uY2UoKTsKKwog
ICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpIHsKICAgICAgICAgbGF5b3V0VGVz
dENvbnRyb2xsZXIud2FpdFVudGlsRG9uZSgpOwogICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxl
ci5kdW1wQXNUZXh0KCk7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2RvbS9zaGFkb3cv
bXVsdGlwbGUtc2hhZG93cm9vdC1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9mYXN0L2RvbS9z
aGFkb3cvbXVsdGlwbGUtc2hhZG93cm9vdC1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYWEzZGVk
ZGM4NTU2Y2Q3Y2UyYmQ3NWI2MTU1M2ZjNTBlNTg3NzVmMwotLS0gL2Rldi9udWxsCisrKyBiL0xh
eW91dFRlc3RzL2Zhc3QvZG9tL3NoYWRvdy9tdWx0aXBsZS1zaGFkb3dyb290LWV4cGVjdGVkLnR4
dApAQCAtMCwwICsxLDE3IEBACitUaGlzIHRlc3QgZW5zdXJlIHRoYXQgdGhlIG11bHRpcGxlIHNo
YWRvdyByb290IGlzIGF2YWlsYWJsZS4KKworT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2Vy
aWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgorCisK
K1BBU1MgaW50ZXJuYWxzLnNoYWRvd1Jvb3QoZGl2KSBpcyBudWxsCitQQVNTIGludGVybmFscy5z
aGFkb3dSb290KGRpdikgaXMgc2hhZG93Um9vdDEKK1BBU1MgaW50ZXJuYWxzLm9sZGVyU2hhZG93
Um9vdChzaGFkb3dSb290MSkgaXMgbnVsbAorUEFTUyBpbnRlcm5hbHMuc2hhZG93Um9vdChkaXYp
IGlzIHNoYWRvd1Jvb3QyCitQQVNTIGludGVybmFscy5vbGRlclNoYWRvd1Jvb3Qoc2hhZG93Um9v
dDIpIGlzIHNoYWRvd1Jvb3QxCitQQVNTIGludGVybmFscy5zaGFkb3dSb290KGRpdikgaXMgc2hh
ZG93Um9vdDMKK1BBU1MgaW50ZXJuYWxzLm9sZGVyU2hhZG93Um9vdChzaGFkb3dSb290MykgaXMg
c2hhZG93Um9vdDIKK1BBU1MgaW50ZXJuYWxzLnNoYWRvd1Jvb3QoZGl2KSBpcyBudWxsCitQQVNT
IHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKwpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvZmFzdC9kb20vc2hhZG93L211bHRpcGxlLXNoYWRvd3Jvb3QtcmVuZGVy
aW5nLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2Zhc3QvZG9tL3NoYWRvdy9tdWx0aXBsZS1z
aGFkb3dyb290LXJlbmRlcmluZy1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uN2I5ZjA1NjBhNzE4
NmIyMjdmNTkxZTY4MTlhNmI3NTBkOWRkMjJkMwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRl
c3RzL2Zhc3QvZG9tL3NoYWRvdy9tdWx0aXBsZS1zaGFkb3dyb290LXJlbmRlcmluZy1leHBlY3Rl
ZC50eHQKQEAgLTAsMCArMSwxNCBAQAordGVzdERvdWJsZVNoYWRvd1N1YnRyZWVzCitQQVNTCit0
ZXN0VHJpcGxlU2hhZG93U3VidHJlZXMKK1BBU1MKK3Rlc3RTaGFkb3dTdWJ0cmVlc1dpdGhDb250
ZW50CitQQVNTCit0ZXN0U2hhZG93U3VidHJlZXNXaXRoQ29udGVudEluT2xkZXJTdWJ0cmVlCitQ
QVNTCit0ZXN0U2hhZG93U3VidHJlZXNXaXRoRHluYW1pY0NyZWF0aW9uCitQQVNTCit0ZXN0U2hh
ZG93U3VidHJlZXNXaXRoRHluYW1pY0NyZWF0aW9uT3V0T2ZUcmVlCitQQVNTCitURVNUIENPTVBM
RVRFRAorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2RvbS9zaGFkb3cvbXVsdGlwbGUt
c2hhZG93cm9vdC1yZW5kZXJpbmcuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvZG9tL3NoYWRvdy9t
dWx0aXBsZS1zaGFkb3dyb290LXJlbmRlcmluZy5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjFlYmRlMjYzOTk2
ZTg2Y2RhM2VkNTZhYzE4MzQ1NWEyOTBlZGNmM2YKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRU
ZXN0cy9mYXN0L2RvbS9zaGFkb3cvbXVsdGlwbGUtc2hhZG93cm9vdC1yZW5kZXJpbmcuaHRtbApA
QCAtMCwwICsxLDE3NCBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorPHN0eWxl
PgorLyogcmVsYXRpdmUgcG9zaXRpb25pbmcgZW5zdXJlcyB1bmRlcmx5aW5nIFJlbmRlckxheWVy
ICovCisuY29udGFpbmVyIHsKKyAgICBwb3NpdGlvbjogcmVsYXRpdmU7Cit9CisKKy5zcGFuIHsK
KyAgICBkaXNwbGF5OiBib3hlZC1pbmxpbmU7CisgICAgbWFyZ2luOiAycHg7CisgICAgYm9yZGVy
OiBzb2xpZDsKK30KKzwvc3R5bGU+Cis8c2NyaXB0IHNyYz0iLi4vcmVzb3VyY2VzL3NoYWRvdy10
ZXN0LWRyaXZlci5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0PgorZnVuY3Rpb24gc2V0VXBPbmNlKCkg
eworICAgIGludGVybmFscy5zZXRNdWx0aXBsZVNoYWRvd1N1YnRyZWVzRW5hYmxlZCh0cnVlKTsK
K30KKworZnVuY3Rpb24gdGVhdERvd25PbmNlKCkgeworICAgIGludGVybmFscy5zZXRNdWx0aXBs
ZVNoYWRvd1N1YnRyZWVzRW5hYmxlZChmYWxzZSk7Cit9CisKK3ZhciB0ZXN0RnVuY3MgPSBbXTsK
KwordGVzdEZ1bmNzLnB1c2goZnVuY3Rpb24gdGVzdERvdWJsZVNoYWRvd1N1YnRyZWVzKGNhbGxJ
ZkRvbmUpIHsKKyAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZXhwZWN0LWNvbnRhaW5lcicp
LmlubmVySFRNTCA9ICI8ZGl2PjxzcGFuPkJFRk9SRTwvc3Bhbj48c3Bhbj5NSUQ8L3NwYW4+PHNw
YW4+QUZURVI8L3NwYW4+PC9kaXY+IjsKKworICAgIHZhciByb290ID0gZG9jdW1lbnQuY3JlYXRl
RWxlbWVudCgnZGl2Jyk7CisgICAgcm9vdC5hcHBlbmRDaGlsZChjcmVhdGVTcGFuV2l0aFRleHQo
J0xJR0hUJykpOworCisgICAgdmFyIHNyMSA9IG5ldyBXZWJLaXRTaGFkb3dSb290KHJvb3QpOwor
ICAgIHNyMS5hcHBlbmRDaGlsZChjcmVhdGVTcGFuV2l0aFRleHQoJ0JFRk9SRTogU0hPVUxEIE5P
VCBCRSBSRU5ERVJFRCcpKTsKKyAgICBzcjEuYXBwZW5kQ2hpbGQoY3JlYXRlU3BhbldpdGhUZXh0
KCdNSUQ6IFNIT1VMRCBOT1QgQkUgUkVOREVSRUQnKSk7CisgICAgc3IxLmFwcGVuZENoaWxkKGNy
ZWF0ZVNwYW5XaXRoVGV4dCgnQUZURVI6IFNIT1VMRCBOT1QgQkUgUkVOREVSRUQnKSk7CisKKyAg
ICB2YXIgc3IyID0gbmV3IFdlYktpdFNoYWRvd1Jvb3Qocm9vdCk7CisgICAgc3IyLmFwcGVuZENo
aWxkKGNyZWF0ZVNwYW5XaXRoVGV4dCgnQkVGT1JFJykpOworICAgIHNyMi5hcHBlbmRDaGlsZChj
cmVhdGVTcGFuV2l0aFRleHQoJ01JRCcpKTsKKyAgICBzcjIuYXBwZW5kQ2hpbGQoY3JlYXRlU3Bh
bldpdGhUZXh0KCdBRlRFUicpKTsKKworICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdhY3R1
YWwtY29udGFpbmVyJykuYXBwZW5kQ2hpbGQocm9vdCk7CisKKyAgICBjYWxsSWZEb25lKCk7Cit9
KTsKKwordGVzdEZ1bmNzLnB1c2goZnVuY3Rpb24gdGVzdFRyaXBsZVNoYWRvd1N1YnRyZWVzKGNh
bGxJZkRvbmUpIHsKKyAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZXhwZWN0LWNvbnRhaW5l
cicpLmlubmVySFRNTCA9ICI8ZGl2PjxzcGFuPkJFRk9SRTwvc3Bhbj48c3Bhbj5NSUQ8L3NwYW4+
PHNwYW4+QUZURVI8L3NwYW4+PC9kaXY+IjsKKworICAgIHZhciByb290ID0gZG9jdW1lbnQuY3Jl
YXRlRWxlbWVudCgnZGl2Jyk7CisgICAgcm9vdC5hcHBlbmRDaGlsZChjcmVhdGVTcGFuV2l0aFRl
eHQoJ0xJR0hUJykpOworCisgICAgdmFyIHNyMSA9IG5ldyBXZWJLaXRTaGFkb3dSb290KHJvb3Qp
OworICAgIHNyMS5hcHBlbmRDaGlsZChjcmVhdGVTcGFuV2l0aFRleHQoJ0JFRk9SRTogU0hPVUxE
IE5PVCBCRSBSRU5ERVJFRCcpKTsKKyAgICBzcjEuYXBwZW5kQ2hpbGQoY3JlYXRlU3BhbldpdGhU
ZXh0KCdNSUQ6IFNIT1VMRCBOT1QgQkUgUkVOREVSRUQnKSk7CisgICAgc3IxLmFwcGVuZENoaWxk
KGNyZWF0ZVNwYW5XaXRoVGV4dCgnQUZURVI6IFNIT1VMRCBOT1QgQkUgUkVOREVSRUQnKSk7CisK
KyAgICB2YXIgc3IyID0gbmV3IFdlYktpdFNoYWRvd1Jvb3Qocm9vdCk7CisgICAgc3IyLmFwcGVu
ZENoaWxkKGNyZWF0ZVNwYW5XaXRoVGV4dCgnQkVGT1JFOiBTSE9VTEQgTk9UIEJFIFJFTkRFUkVE
JykpOworICAgIHNyMi5hcHBlbmRDaGlsZChjcmVhdGVTcGFuV2l0aFRleHQoJ01JRDogU0hPVUxE
IE5PVCBCRSBSRU5ERVJFRCcpKTsKKyAgICBzcjIuYXBwZW5kQ2hpbGQoY3JlYXRlU3BhbldpdGhU
ZXh0KCdBRlRFUjogU0hPVUxEIE5PVCBCRSBSRU5ERVJFRCcpKTsKKworICAgIHZhciBzcjMgPSBu
ZXcgV2ViS2l0U2hhZG93Um9vdChyb290KTsKKyAgICBzcjMuYXBwZW5kQ2hpbGQoY3JlYXRlU3Bh
bldpdGhUZXh0KCdCRUZPUkUnKSk7CisgICAgc3IzLmFwcGVuZENoaWxkKGNyZWF0ZVNwYW5XaXRo
VGV4dCgnTUlEJykpOworICAgIHNyMy5hcHBlbmRDaGlsZChjcmVhdGVTcGFuV2l0aFRleHQoJ0FG
VEVSJykpOworCisgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2FjdHVhbC1jb250YWluZXIn
KS5hcHBlbmRDaGlsZChyb290KTsKKworICAgIGNhbGxJZkRvbmUoKTsKK30pOworCit0ZXN0RnVu
Y3MucHVzaChmdW5jdGlvbiB0ZXN0U2hhZG93U3VidHJlZXNXaXRoQ29udGVudChjYWxsSWZEb25l
KSB7CisgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2V4cGVjdC1jb250YWluZXInKS5pbm5l
ckhUTUwgPSAiPGRpdj48c3Bhbj5CRUZPUkU8L3NwYW4+PHNwYW4+TElHSFQ8L3NwYW4+PHNwYW4+
QUZURVI8L3NwYW4+PC9kaXY+IjsKKworICAgIHZhciByb290ID0gZG9jdW1lbnQuY3JlYXRlRWxl
bWVudCgnZGl2Jyk7CisgICAgcm9vdC5hcHBlbmRDaGlsZChjcmVhdGVTcGFuV2l0aFRleHQoJ0xJ
R0hUJykpOworCisgICAgdmFyIHNyMSA9IG5ldyBXZWJLaXRTaGFkb3dSb290KHJvb3QpOworICAg
IHNyMS5hcHBlbmRDaGlsZChjcmVhdGVTcGFuV2l0aFRleHQoJ0JFRk9SRTogU0hPVUxEIE5PVCBC
RSBSRU5ERVJFRCcpKTsKKyAgICBzcjEuYXBwZW5kQ2hpbGQoY3JlYXRlU3BhbldpdGhUZXh0KCdN
SUQ6IFNIT1VMRCBOT1QgQkUgUkVOREVSRUQnKSk7CisgICAgc3IxLmFwcGVuZENoaWxkKGNyZWF0
ZVNwYW5XaXRoVGV4dCgnQUZURVI6IFNIT1VMRCBOT1QgQkUgUkVOREVSRUQnKSk7CisKKyAgICB2
YXIgc3IyID0gbmV3IFdlYktpdFNoYWRvd1Jvb3Qocm9vdCk7CisgICAgc3IyLmFwcGVuZENoaWxk
KGNyZWF0ZVNwYW5XaXRoVGV4dCgnQkVGT1JFJykpOworICAgIHNyMi5hcHBlbmRDaGlsZChjcmVh
dGVDb250ZW50V2l0aFNlbGVjdCgnc3BhbicsICdGQUxMQkFDSycpKTsKKyAgICBzcjIuYXBwZW5k
Q2hpbGQoY3JlYXRlU3BhbldpdGhUZXh0KCdBRlRFUicpKTsKKworICAgIGRvY3VtZW50LmdldEVs
ZW1lbnRCeUlkKCdhY3R1YWwtY29udGFpbmVyJykuYXBwZW5kQ2hpbGQocm9vdCk7CisKKyAgICBj
YWxsSWZEb25lKCk7Cit9KTsKKwordGVzdEZ1bmNzLnB1c2goZnVuY3Rpb24gdGVzdFNoYWRvd1N1
YnRyZWVzV2l0aENvbnRlbnRJbk9sZGVyU3VidHJlZShjYWxsSWZEb25lKSB7CisgICAgZG9jdW1l
bnQuZ2V0RWxlbWVudEJ5SWQoJ2V4cGVjdC1jb250YWluZXInKS5pbm5lckhUTUwgPSAiPGRpdj48
c3Bhbj5CRUZPUkU8L3NwYW4+PHNwYW4+TElHSFQgMTwvc3Bhbj48c3Bhbj5BRlRFUjwvc3Bhbj48
L2Rpdj4iOworCisgICAgdmFyIHJvb3QgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTsK
KyAgICByb290LmFwcGVuZENoaWxkKGNyZWF0ZVNwYW5XaXRoVGV4dCgnTElHSFQgMScsICdjMScp
KTsKKyAgICByb290LmFwcGVuZENoaWxkKGNyZWF0ZVNwYW5XaXRoVGV4dCgnTElHSFQgMicsICdj
MicpKTsKKworICAgIHZhciBzcjEgPSBuZXcgV2ViS2l0U2hhZG93Um9vdChyb290KTsKKyAgICBz
cjEuYXBwZW5kQ2hpbGQoY3JlYXRlU3BhbldpdGhUZXh0KCdCRUZPUkU6IFNIT1VMRCBOT1QgQkUg
UkVOREVSRUQnKSk7CisgICAgc3IxLmFwcGVuZENoaWxkKGNyZWF0ZUNvbnRlbnRXaXRoU2VsZWN0
KCcuYzInLCAnRkFMTEJBQ0snKSk7CisgICAgc3IxLmFwcGVuZENoaWxkKGNyZWF0ZVNwYW5XaXRo
VGV4dCgnQUZURVI6IFNIT1VMRCBOT1QgQkUgUkVOREVSRUQnKSk7CisKKyAgICB2YXIgc3IyID0g
bmV3IFdlYktpdFNoYWRvd1Jvb3Qocm9vdCk7CisgICAgc3IyLmFwcGVuZENoaWxkKGNyZWF0ZVNw
YW5XaXRoVGV4dCgnQkVGT1JFJykpOworICAgIHNyMi5hcHBlbmRDaGlsZChjcmVhdGVDb250ZW50
V2l0aFNlbGVjdCgnLmMxJywgJ0ZBTExCQUNLJykpOworICAgIHNyMi5hcHBlbmRDaGlsZChjcmVh
dGVTcGFuV2l0aFRleHQoJ0FGVEVSJykpOworCisgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQo
J2FjdHVhbC1jb250YWluZXInKS5hcHBlbmRDaGlsZChyb290KTsKKworICAgIGNhbGxJZkRvbmUo
KTsKK30pOworCit0ZXN0RnVuY3MucHVzaChmdW5jdGlvbiB0ZXN0U2hhZG93U3VidHJlZXNXaXRo
RHluYW1pY0NyZWF0aW9uKGNhbGxJZkRvbmUpIHsKKyAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJ
ZCgnZXhwZWN0LWNvbnRhaW5lcicpLmlubmVySFRNTCA9ICI8ZGl2PjxzcGFuPkJFRk9SRTwvc3Bh
bj48c3Bhbj5MSUdIVCAxPC9zcGFuPjxzcGFuPkxJR0hUIDI8L3NwYW4+PHNwYW4+QUZURVI8L3Nw
YW4+PC9kaXY+IjsKKworICAgIHZhciByb290ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2
Jyk7CisgICAgcm9vdC5hcHBlbmRDaGlsZChjcmVhdGVTcGFuV2l0aFRleHQoJ0xJR0hUIDEnLCAn
YzEnKSk7CisgICAgcm9vdC5hcHBlbmRDaGlsZChjcmVhdGVTcGFuV2l0aFRleHQoJ0xJR0hUIDIn
LCAnYzInKSk7CisKKyAgICB2YXIgc3IxID0gbmV3IFdlYktpdFNoYWRvd1Jvb3Qocm9vdCk7Cisg
ICAgc3IxLmFwcGVuZENoaWxkKGNyZWF0ZVNwYW5XaXRoVGV4dCgnQkVGT1JFOiBTSE9VTEQgTk9U
IEJFIFJFTkRFUkVEJykpOworICAgIHNyMS5hcHBlbmRDaGlsZChjcmVhdGVDb250ZW50V2l0aFNl
bGVjdCgnc3BhbicsICdGQUxMQkFDSycpKTsKKyAgICBzcjEuYXBwZW5kQ2hpbGQoY3JlYXRlU3Bh
bldpdGhUZXh0KCdBRlRFUjogU0hPVUxEIE5PVCBCRSBSRU5ERVJFRCcpKTsKKworICAgIGRvY3Vt
ZW50LmdldEVsZW1lbnRCeUlkKCdhY3R1YWwtY29udGFpbmVyJykuYXBwZW5kQ2hpbGQocm9vdCk7
CisKKyAgICBzZXRUaW1lb3V0KChmdW5jdGlvbihjYWxsSWZEb25lLCByb290KSB7IHJldHVybiBm
dW5jdGlvbigpIHsKKyAgICAgICAgdmFyIHNyMiA9IG5ldyBXZWJLaXRTaGFkb3dSb290KHJvb3Qp
OworICAgICAgICBzcjIuYXBwZW5kQ2hpbGQoY3JlYXRlU3BhbldpdGhUZXh0KCdCRUZPUkUnKSk7
CisgICAgICAgIHNyMi5hcHBlbmRDaGlsZChjcmVhdGVDb250ZW50V2l0aFNlbGVjdCgnc3Bhbics
ICdGQUxMQkFDSycpKTsKKyAgICAgICAgc3IyLmFwcGVuZENoaWxkKGNyZWF0ZVNwYW5XaXRoVGV4
dCgnQUZURVInKSk7CisKKyAgICAgICAgY2FsbElmRG9uZSgpOworICAgIH07fSkoY2FsbElmRG9u
ZSwgcm9vdCksIDApOworfSk7CisKK3Rlc3RGdW5jcy5wdXNoKGZ1bmN0aW9uIHRlc3RTaGFkb3dT
dWJ0cmVlc1dpdGhEeW5hbWljQ3JlYXRpb25PdXRPZlRyZWUoY2FsbElmRG9uZSkgeworICAgIGRv
Y3VtZW50LmdldEVsZW1lbnRCeUlkKCdleHBlY3QtY29udGFpbmVyJykuaW5uZXJIVE1MID0gIjxk
aXY+PHNwYW4+QkVGT1JFPC9zcGFuPjxzcGFuPkxJR0hUIDE8L3NwYW4+PHNwYW4+TElHSFQgMjwv
c3Bhbj48c3Bhbj5BRlRFUjwvc3Bhbj48L2Rpdj4iOworCisgICAgdmFyIHJvb3QgPSBkb2N1bWVu
dC5jcmVhdGVFbGVtZW50KCdkaXYnKTsKKyAgICByb290LmFwcGVuZENoaWxkKGNyZWF0ZVNwYW5X
aXRoVGV4dCgnTElHSFQgMScsICdjMScpKTsKKyAgICByb290LmFwcGVuZENoaWxkKGNyZWF0ZVNw
YW5XaXRoVGV4dCgnTElHSFQgMicsICdjMicpKTsKKworICAgIHZhciBzcjEgPSBuZXcgV2ViS2l0
U2hhZG93Um9vdChyb290KTsKKyAgICBzcjEuYXBwZW5kQ2hpbGQoY3JlYXRlU3BhbldpdGhUZXh0
KCdCRUZPUkU6IFNIT1VMRCBOT1QgQkUgUkVOREVSRUQnKSk7CisgICAgc3IxLmFwcGVuZENoaWxk
KGNyZWF0ZUNvbnRlbnRXaXRoU2VsZWN0KCdzcGFuJywgJ0ZBTExCQUNLJykpOworICAgIHNyMS5h
cHBlbmRDaGlsZChjcmVhdGVTcGFuV2l0aFRleHQoJ0FGVEVSOiBTSE9VTEQgTk9UIEJFIFJFTkRF
UkVEJykpOworCisgICAgc2V0VGltZW91dCgoZnVuY3Rpb24oY2FsbElmRG9uZSwgcm9vdCkgeyBy
ZXR1cm4gZnVuY3Rpb24oKSB7CisgICAgICAgIHZhciBzcjIgPSBuZXcgV2ViS2l0U2hhZG93Um9v
dChyb290KTsKKyAgICAgICAgc3IyLmFwcGVuZENoaWxkKGNyZWF0ZVNwYW5XaXRoVGV4dCgnQkVG
T1JFJykpOworICAgICAgICBzcjIuYXBwZW5kQ2hpbGQoY3JlYXRlQ29udGVudFdpdGhTZWxlY3Qo
J3NwYW4nLCAnRkFMTEJBQ0snKSk7CisgICAgICAgIHNyMi5hcHBlbmRDaGlsZChjcmVhdGVTcGFu
V2l0aFRleHQoJ0FGVEVSJykpOworCisgICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdh
Y3R1YWwtY29udGFpbmVyJykuYXBwZW5kQ2hpbGQocm9vdCk7CisKKyAgICAgICAgY2FsbElmRG9u
ZSgpOworICAgIH07fSkoY2FsbElmRG9uZSwgcm9vdCksIDApOworfSk7Cis8L3NjcmlwdD4KKzwv
aGVhZD4KKzxib2R5IG9ubG9hZD0iZG9UZXN0KHRlc3RGdW5jcykiPgorCis8ZGl2IGlkPSJhY3R1
YWwtY29udGFpbmVyIiBjbGFzcz0iY29udGFpbmVyIj48L2Rpdj4KKzxkaXYgaWQ9ImV4cGVjdC1j
b250YWluZXIiIGNsYXNzPSJjb250YWluZXIiPjwvZGl2PgorPHByZSBpZD0iY29uc29sZSI+PC9w
cmU+CisKKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZG9t
L3NoYWRvdy9tdWx0aXBsZS1zaGFkb3dyb290Lmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L2RvbS9z
aGFkb3cvbXVsdGlwbGUtc2hhZG93cm9vdC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjQwOWJlYzA3NmFlM2Ix
ZmNkMTJlOTc0ODQ0MzY2MmM4MDgxMGJkZmIKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0
cy9mYXN0L2RvbS9zaGFkb3cvbXVsdGlwbGUtc2hhZG93cm9vdC5odG1sCkBAIC0wLDAgKzEsMzUg
QEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9q
cy9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8
c2NyaXB0PgorZGVzY3JpcHRpb24oIlRoaXMgdGVzdCBlbnN1cmUgdGhhdCB0aGUgbXVsdGlwbGUg
c2hhZG93IHJvb3QgaXMgYXZhaWxhYmxlLiIpOworCitpbnRlcm5hbHMuc2V0TXVsdGlwbGVTaGFk
b3dTdWJ0cmVlc0VuYWJsZWQodHJ1ZSk7CisKK3ZhciBkaXYgPSBkb2N1bWVudC5jcmVhdGVFbGVt
ZW50KCdkaXYnKTsKK3Nob3VsZEJlKCJpbnRlcm5hbHMuc2hhZG93Um9vdChkaXYpIiwgIm51bGwi
KTsKK3ZhciBzaGFkb3dSb290MSA9IG5ldyBXZWJLaXRTaGFkb3dSb290KGRpdik7CitzaG91bGRC
ZSgiaW50ZXJuYWxzLnNoYWRvd1Jvb3QoZGl2KSIsICJzaGFkb3dSb290MSIpOworc2hvdWxkQmUo
ImludGVybmFscy5vbGRlclNoYWRvd1Jvb3Qoc2hhZG93Um9vdDEpIiwgIm51bGwiKTsKKwordmFy
IHNoYWRvd1Jvb3QyID0gbmV3IFdlYktpdFNoYWRvd1Jvb3QoZGl2KQorc2hvdWxkQmUoImludGVy
bmFscy5zaGFkb3dSb290KGRpdikiLCAic2hhZG93Um9vdDIiKTsKK3Nob3VsZEJlKCJpbnRlcm5h
bHMub2xkZXJTaGFkb3dSb290KHNoYWRvd1Jvb3QyKSIsICJzaGFkb3dSb290MSIpOworCit2YXIg
c2hhZG93Um9vdDMgPSBuZXcgV2ViS2l0U2hhZG93Um9vdChkaXYpOworc2hvdWxkQmUoImludGVy
bmFscy5zaGFkb3dSb290KGRpdikiLCAic2hhZG93Um9vdDMiKTsKK3Nob3VsZEJlKCJpbnRlcm5h
bHMub2xkZXJTaGFkb3dSb290KHNoYWRvd1Jvb3QzKSIsICJzaGFkb3dSb290MiIpOworCitpbnRl
cm5hbHMucmVtb3ZlU2hhZG93Um9vdChkaXYpOworc2hvdWxkQmUoImludGVybmFscy5zaGFkb3dS
b290KGRpdikiLCAibnVsbCIpOworCitpbnRlcm5hbHMuc2V0TXVsdGlwbGVTaGFkb3dTdWJ0cmVl
c0VuYWJsZWQoZmFsc2UpOworCit2YXIgc3VjY2Vzc2Z1bGx5UGFyc2VkID0gdHJ1ZTsKKzwvc2Ny
aXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uL2pzL3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwv
c2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZv
cm0vZWZsL1NraXBwZWQgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9lZmwvU2tpcHBlZAppbmRleCAx
Y2EwNmIwMTg5ZmZhNTI5YzA5ODIwNzVkYmMyYjE4ZmUyN2YwODQyLi5iYWIxZjM4YjE3Zjc0ZDNl
MGE5NGEwMDQwMDdkMGQwZDQ1YmZmM2MwIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9wbGF0Zm9y
bS9lZmwvU2tpcHBlZAorKysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9lZmwvU2tpcHBlZApAQCAt
MTk3OCw2ICsxOTc4LDggQEAgZmFzdC9kb20vc2hhZG93L3NoYWRvdy1yb290LWpzLWFwaS5odG1s
CiBmYXN0L2RvbS9zaGFkb3cvc2hhZG93LWRpc2FibGUuaHRtbAogZmFzdC9kb20vc2hhZG93L3No
YWRvdy1yb290LWF0dGFjaGVkLmh0bWwKIGZhc3QvZG9tL3NoYWRvdy9zaGFkb3ctcm9vdC1uZXcu
aHRtbAorZmFzdC9kb20vc2hhZG93L211bHRpcGxlLXNoYWRvd3Jvb3QuaHRtbAorZmFzdC9kb20v
c2hhZG93L211bHRpcGxlLXNoYWRvd3Jvb3QtcmVuZGVyaW5nLmh0bWwKIAogIyBDU1MgRmlsdGVy
cyBzdXBwb3J0IG5vdCB5ZXQgZW5hYmxlZCAobmVlZHMgRU5BQkxFX0NTU19GSUxURVJTKS4KICMg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTY4NDY5CmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9ndGsvU2tpcHBlZCBiL0xheW91dFRlc3RzL3BsYXRmb3Jt
L2d0ay9Ta2lwcGVkCmluZGV4IDQxYTg1MzVhNDM2M2U0NDRmOTdkNDFhYzRjZjM1MjgwOGMwOTU5
ZDIuLmE4YTgxOWUzMzkzZTkyMjY3NmY5MDhlZmYyMmI0NjE5ZDc4Y2M1NDkgMTAwNjQ0Ci0tLSBh
L0xheW91dFRlc3RzL3BsYXRmb3JtL2d0ay9Ta2lwcGVkCisrKyBiL0xheW91dFRlc3RzL3BsYXRm
b3JtL2d0ay9Ta2lwcGVkCkBAIC0zNjEsNiArMzYxLDggQEAgZmFzdC9kb20vc2hhZG93L3NoYWRv
dy1yb290LWpzLWFwaS5odG1sCiBmYXN0L2RvbS9zaGFkb3cvc2hhZG93LWRpc2FibGUuaHRtbAog
ZmFzdC9kb20vc2hhZG93L3NoYWRvdy1yb290LWF0dGFjaGVkLmh0bWwKIGZhc3QvZG9tL3NoYWRv
dy9zaGFkb3ctcm9vdC1uZXcuaHRtbAorZmFzdC9kb20vc2hhZG93L211bHRpcGxlLXNoYWRvd3Jv
b3QuaHRtbAorZmFzdC9kb20vc2hhZG93L211bHRpcGxlLXNoYWRvd3Jvb3QtcmVuZGVyaW5nLmh0
bWwKIAogIyBDU1MgUmVnaW9ucyBzdXBwb3J0IG5vdCB5ZXQgZW5hYmxlZC4gaHR0cDovL3dlYmtp
dC5vcmcvYi81NzMxMgogZmFzdC9yZWdpb25zCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0
Zm9ybS9tYWMvU2tpcHBlZCBiL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy9Ta2lwcGVkCmluZGV4
IGExZWM2NDE1ZTVkMjkzODhkMGVkNTg2YzNiMzliOTRiYjliOTY2YmYuLmUwMzg3MGQ2YWU0NzBh
ZDExYWFmODYxMDhjYmRhZjZkNGZlZjY5MDEgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3BsYXRm
b3JtL21hYy9Ta2lwcGVkCisrKyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy9Ta2lwcGVkCkBA
IC00MjksNiArNDI5LDggQEAgZmFzdC9kb20vc2hhZG93L3NoYWRvdy1yb290LWpzLWFwaS5odG1s
CiBmYXN0L2RvbS9zaGFkb3cvc2hhZG93LWRpc2FibGUuaHRtbAogZmFzdC9kb20vc2hhZG93L3No
YWRvdy1yb290LWF0dGFjaGVkLmh0bWwKIGZhc3QvZG9tL3NoYWRvdy9zaGFkb3ctcm9vdC1uZXcu
aHRtbAorZmFzdC9kb20vc2hhZG93L211bHRpcGxlLXNoYWRvd3Jvb3QuaHRtbAorZmFzdC9kb20v
c2hhZG93L211bHRpcGxlLXNoYWRvd3Jvb3QtcmVuZGVyaW5nLmh0bWwKIAogIyBKU0MgZG9lcyBu
b3Qgc3VwcG9ydCBzZXRJc29sYXRlZFdvcmxkU2VjdXJpdHlPcmlnaW4gKGh0dHA6Ly93ZWJraXQu
b3JnL2IvNjE1NDApCiBodHRwL3Rlc3RzL3NlY3VyaXR5L2lzb2xhdGVkV29ybGQvY3Jvc3Mtb3Jp
Z2luLXhoci5odG1sCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9xdC9Ta2lwcGVk
IGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vcXQvU2tpcHBlZAppbmRleCAyMTA3MzMxOGQwZmM1OThm
ZWI5MTQ0OGNmOGJlNWUwYzAwYzU4M2EzLi4xMDRhNzBlYmJmMGFlN2RjMDdhNzcwNWY4NjEyYmZk
ZDNjZDA4NzYzIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9xdC9Ta2lwcGVkCisr
KyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL3F0L1NraXBwZWQKQEAgLTE2NSw2ICsxNjUsOCBAQCBm
YXN0L2RvbS9zaGFkb3cvc2hhZG93LXJvb3QtanMtYXBpLmh0bWwKIGZhc3QvZG9tL3NoYWRvdy9z
aGFkb3ctZGlzYWJsZS5odG1sCiBmYXN0L2RvbS9zaGFkb3cvc2hhZG93LXJvb3QtYXR0YWNoZWQu
aHRtbAogZmFzdC9kb20vc2hhZG93L3NoYWRvdy1yb290LW5ldy5odG1sCitmYXN0L2RvbS9zaGFk
b3cvbXVsdGlwbGUtc2hhZG93cm9vdC5odG1sCitmYXN0L2RvbS9zaGFkb3cvbXVsdGlwbGUtc2hh
ZG93cm9vdC1yZW5kZXJpbmcuaHRtbAogCiAjIENTUyBSZWdpb25zIHN1cHBvcnQgbm90IHlldCBl
bmFibGVkLiBodHRwOi8vd2Via2l0Lm9yZy9iLzU3MzEyCiBmYXN0L3JlZ2lvbnMKZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL3dpbi9Ta2lwcGVkIGIvTGF5b3V0VGVzdHMvcGxhdGZv
cm0vd2luL1NraXBwZWQKaW5kZXggMzFiMmMyN2JhNTFiNThkYWI5MTY1ZGIyY2U3ZTkwNWM5ZmYx
M2Q2ZC4uNmUxZTM4YzllODJmYmYyYmIwMjNlNjg1MDQ2NTdhMGQzMjk5MWY1MiAxMDA2NDQKLS0t
IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vd2luL1NraXBwZWQKKysrIGIvTGF5b3V0VGVzdHMvcGxh
dGZvcm0vd2luL1NraXBwZWQKQEAgLTE0NTgsNiArMTQ1OCw4IEBAIGZhc3QvZG9tL3NoYWRvdy9z
aGFkb3ctcm9vdC1qcy1hcGkuaHRtbAogZmFzdC9kb20vc2hhZG93L3NoYWRvdy1kaXNhYmxlLmh0
bWwKIGZhc3QvZG9tL3NoYWRvdy9zaGFkb3ctcm9vdC1hdHRhY2hlZC5odG1sCiBmYXN0L2RvbS9z
aGFkb3cvc2hhZG93LXJvb3QtbmV3Lmh0bWwKK2Zhc3QvZG9tL3NoYWRvdy9tdWx0aXBsZS1zaGFk
b3dyb290Lmh0bWwKK2Zhc3QvZG9tL3NoYWRvdy9tdWx0aXBsZS1zaGFkb3dyb290LXJlbmRlcmlu
Zy5odG1sCiAKICMgQ1NTIFJlZ2lvbnMgc3VwcG9ydCBub3QgeWV0IGVuYWJsZWQuIGh0dHA6Ly93
ZWJraXQub3JnL2IvNTczMTIKIGZhc3QvcmVnaW9ucwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
cGxhdGZvcm0vd2luY2Fpcm8vU2tpcHBlZCBiL0xheW91dFRlc3RzL3BsYXRmb3JtL3dpbmNhaXJv
L1NraXBwZWQKaW5kZXggZTZlZDg3OWVlMDlmMTQwNDIxZTdmZjY3NDM0NDhlZWU1ZTZlYmI0Zi4u
OWUzYzY3YjljZGM5Y2Q4OTY2ZmNlZjRiNDU0NGY1NDNhYjlhOGYxMiAxMDA2NDQKLS0tIGEvTGF5
b3V0VGVzdHMvcGxhdGZvcm0vd2luY2Fpcm8vU2tpcHBlZAorKysgYi9MYXlvdXRUZXN0cy9wbGF0
Zm9ybS93aW5jYWlyby9Ta2lwcGVkCkBAIC0xOTY5LDYgKzE5NjksOCBAQCBmYXN0L2RvbS9zaGFk
b3cvc2hhZG93LXJvb3QtanMtYXBpLmh0bWwKIGZhc3QvZG9tL3NoYWRvdy9zaGFkb3ctZGlzYWJs
ZS5odG1sCiBmYXN0L2RvbS9zaGFkb3cvc2hhZG93LXJvb3QtYXR0YWNoZWQuaHRtbAogZmFzdC9k
b20vc2hhZG93L3NoYWRvdy1yb290LW5ldy5odG1sCitmYXN0L2RvbS9zaGFkb3cvbXVsdGlwbGUt
c2hhZG93cm9vdC5odG1sCitmYXN0L2RvbS9zaGFkb3cvbXVsdGlwbGUtc2hhZG93cm9vdC1yZW5k
ZXJpbmcuaHRtbAogCiAjIENTUyBSZWdpb25zIHN1cHBvcnQgbm90IHlldCBlbmFibGVkLiBodHRw
Oi8vd2Via2l0Lm9yZy9iLzU3MzEyCiBmYXN0L3JlZ2lvbnMKZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL3BsYXRmb3JtL3drMi9Ta2lwcGVkIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vd2syL1NraXBw
ZWQKaW5kZXggZDIyNDczYjJlYTU1ODg3MjMyZDQ0NzU1ZGU5ZDY5YTE1ZjNlMzE3NS4uOTNmZDY0
NTQ1NjRiZWEyMTdlMjkxOGNjNTQ1ZjI0NjI5YjAyOTYxMSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVz
dHMvcGxhdGZvcm0vd2syL1NraXBwZWQKKysrIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vd2syL1Nr
aXBwZWQKQEAgLTEwNzgsNiArMTA3OCw4IEBAIGZhc3QvZG9tL3NoYWRvdy9zaGFkb3ctcm9vdC1q
cy1hcGkuaHRtbAogZmFzdC9kb20vc2hhZG93L3NoYWRvdy1kaXNhYmxlLmh0bWwKIGZhc3QvZG9t
L3NoYWRvdy9zaGFkb3ctcm9vdC1hdHRhY2hlZC5odG1sCiBmYXN0L2RvbS9zaGFkb3cvc2hhZG93
LXJvb3QtbmV3Lmh0bWwKK2Zhc3QvZG9tL3NoYWRvdy9tdWx0aXBsZS1zaGFkb3dyb290Lmh0bWwK
K2Zhc3QvZG9tL3NoYWRvdy9tdWx0aXBsZS1zaGFkb3dyb290LXJlbmRlcmluZy5odG1sCiAKICMg
V1RSIG5lZWRzIGFuIGltcGxlbWVudGF0aW9uIGZvciBldmVudFNlbmRlci5jb250aW51b3VzTW91
c2VTY3JvbGxCeQogIyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9Njk0
MTcKZGlmZiAtLWdpdCBhL0NoYW5nZUxvZyBiL0NoYW5nZUxvZwppbmRleCA0M2JjZWIzYmFhN2Qw
MTcwYTliMTdmMGVhYWRkMGE1ZmI3OTc0NTJjLi5kYmU5NWE3MzBmODkxOTllYjcxODgxZDNjZDRk
ZGQzM2IwZmVlYTI0IDEwMDY0NAotLS0gYS9DaGFuZ2VMb2cKKysrIGIvQ2hhbmdlTG9nCkBAIC0x
LDMgKzEsMTIgQEAKKzIwMTItMDItMjMgIFNoaW55YSBLYXdhbmFrYSAgPHNoaW55YWtAY2hyb21p
dW0ub3JnPgorCisgICAgICAgIEVsZW1lbnQgc2hvdWxkIGJlIGFibGUgdG8gaGF2ZSBtdWx0aXBs
ZSBzaGFkb3cgcm9vdHMuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD03NzkzMQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgICogU291cmNlL2F1dG90b29scy9zeW1ib2xzLmZpbHRlcjoKKwogMjAxMi0wMi0yMyAg
S29ucmFkIFBpYXNjaWsgIDxrcGlhc2Npa0ByaW0uY29tPgogCiAgICAgICAgIFVwc3RyZWFtIEJs
YWNrQmVycnkgQ29va2llIE1hbmFnZW1lbnQgQ2xhc3Nlcwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>128659</attachid>
            <date>2012-02-23 23:03:31 -0800</date>
            <delta_ts>2012-02-24 00:08:31 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-77931-20120224160330.patch</filename>
            <type>text/plain</type>
            <size>39127</size>
            <attacher name="Shinya Kawanaka">shinyak</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTA4NzI4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNTAyYWU2NjBjNTJmNGIy
Yjg1ZDIwNDFlOTQyNWYwZjdiYWNkNTA1NS4uNGE2NmM1NTNmODFmNjM0YThkMjJlZDQ0NTM3M2Y5
Y2UwNTQ0Nzg3YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDU5IEBACisyMDEyLTAyLTIzICBTaGlu
eWEgS2F3YW5ha2EgIDxzaGlueWFrQGNocm9taXVtLm9yZz4gCisKKyAgICAgICAgRWxlbWVudCBz
aG91bGQgYmUgYWJsZSB0byBoYXZlIG11bHRpcGxlIHNoYWRvdyByb290cy4KKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTc3OTMxCisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhpcyBwYXRjaCBlbmFibGVzIHVz
IHRvIGFkZCBtdWx0aXBsZSBzaGFkb3cgc3VidHJlZXMgaW50byBlbGVtZW50cy4KKyAgICAgICAg
Tm90ZSB0aGF0IG11bHRpcGxlIHNoYWRvdyBzdWJ0cmVlcyBhcmUgZW5hYmxlZAorICAgICAgICBv
bmx5IGlmIFJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6Om11bHRpcGxlU2hhZG93U3VidHJlZXMgaXMg
ZW5hYmxlZC4KKworICAgICAgICBTaW5jZSB3ZSBkb24ndCBoYXZlIDxzaGFkb3c+IGVsZW1lbnQg
eWV0LCBvbmx5IHRoZSB5b3VuZ2VzdCBzaGFkb3cgdHJlZQorICAgICAgICB3aWxsIGJlIHJlbmRl
cmVkLiBUaGlzIHBhdGNoIGluY2x1ZGVzIHRlc3RzIHRvIGNvbmZpcm0gYWRkaW5nIGEgbmV3IHNo
YWRvdworICAgICAgICB0cmVlIGR5bmFtaWNhbGx5IHRvIGNvbmZpcm0gb25seSB0aGUgeW91bmdl
c3Qgc2hhZG93IHRyZWUgaXMgcmVuZGVyZXJlZC4KKworICAgICAgICBUZXN0czogZmFzdC9kb20v
c2hhZG93L211bHRpcGxlLXNoYWRvd3Jvb3QtcmVuZGVyaW5nLmh0bWwKKyAgICAgICAgICAgICAg
IGZhc3QvZG9tL3NoYWRvdy9tdWx0aXBsZS1zaGFkb3dyb290Lmh0bWwKKworICAgICAgICAqIFdl
YkNvcmUuZXhwLmluOgorICAgICAgICAqIGRvbS9FbGVtZW50LmNwcDoKKyAgICAgICAgICBVc2Vz
IFNoYWRvd1Jvb3RMaXN0IGludGVyZmFjZXMgZGlyZWN0bHkgaW5zdGVhZCBvZiBTaGFkb3dSb290
TGlzdCBlbXVsYXRpb24gbWV0aG9kcy4KKyAgICAgICAgKFdlYkNvcmU6OkVsZW1lbnQ6On5FbGVt
ZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkVsZW1lbnQ6OmF0dGFjaCk6CisgICAgICAgIChXZWJD
b3JlOjpFbGVtZW50OjphZGRTaGFkb3dSb290KToKKyAgICAgICAgKFdlYkNvcmU6OkVsZW1lbnQ6
OnJlbW92ZVNoYWRvd1Jvb3RMaXN0KToKKyAgICAgICAgKiBkb20vRWxlbWVudC5oOgorICAgICAg
ICAoRWxlbWVudCk6CisgICAgICAgICogZG9tL05vZGVSZW5kZXJpbmdDb250ZXh0LmNwcDoKKyAg
ICAgICAgICBNYWtlIG5vbi15b3VuZ2VzdCBzaGFkb3cgc3VidHJlZXMgaGlkZGVuLgorICAgICAg
ICAoV2ViQ29yZTo6Tm9kZVJlbmRlcmluZ0NvbnRleHQ6Ok5vZGVSZW5kZXJpbmdDb250ZXh0KToK
KyAgICAgICAgKFdlYkNvcmU6Ok5vZGVSZW5kZXJpbmdDb250ZXh0Ojpob3N0Q2hpbGRyZW5DaGFu
Z2VkKToKKyAgICAgICAgICBTaW5jZSBub24teW91bmdlc3QgY2hpbGRyZW4gbWF5IGJlIGNoYW5n
ZWQsIG1ha2Ugc3VyZSBob3N0IGNoaWxkcmVuIGFyZSBjaGFuZ2VkLgorICAgICAgICAqIGRvbS9T
aGFkb3dSb290LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNoYWRvd1Jvb3Q6OmNyZWF0ZSk6Cisg
ICAgICAgICogZG9tL1NoYWRvd1Jvb3QuaDoKKyAgICAgICAgKFdlYkNvcmU6OlNoYWRvd1Jvb3Q6
OnlvdW5nZXJTaGFkb3dSb290KToKKyAgICAgICAgKFdlYkNvcmU6OlNoYWRvd1Jvb3Q6Om9sZGVy
U2hhZG93Um9vdCk6CisgICAgICAgIChTaGFkb3dSb290KToKKyAgICAgICAgKFdlYkNvcmU6OlNo
YWRvd1Jvb3Q6OmlzWW91bmdlc3RTaGFkb3dSb290KToKKyAgICAgICAgKFdlYkNvcmU6OlNoYWRv
d1Jvb3Q6OmlzT2xkZXN0U2hhZG93Um9vdCk6CisgICAgICAgICAgVXRpbGl0eSBtZXRob2RzIHRv
IG1ha2UgY29kZSBpbnRlbnRpb24gY2xlYXIuCisgICAgICAgICogZG9tL1NoYWRvd1Jvb3RMaXN0
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNoYWRvd1Jvb3RMaXN0OjphdHRhY2gpOgorICAgICAg
ICAgIEF0dGFjaGVzIHNoYWRvdyBzdWJ0cmVlcy4KKyAgICAgICAgKFdlYkNvcmU6OlNoYWRvd1Jv
b3RMaXN0OjpkZXRhY2gpOgorICAgICAgICAgIERldGFjaGVzIHNoYWRvdyBzdWJ0cmVlcy4KKyAg
ICAgICAgKiB0ZXN0aW5nL0ludGVybmFscy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbnRlcm5h
bHM6OmFkZHJlc3MpOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb3JlOjpJbnRl
cm5hbHM6OnlvdW5nZXJTaGFkb3dSb290KToKKyAgICAgICAgKFdlYkNvcmU6OkludGVybmFsczo6
b2xkZXJTaGFkb3dSb290KToKKyAgICAgICAgKFdlYkNvcmU6OkludGVybmFsczo6cmVtb3ZlU2hh
ZG93Um9vdCk6CisgICAgICAgICogdGVzdGluZy9JbnRlcm5hbHMuaDoKKyAgICAgICAgKEludGVy
bmFscyk6CisgICAgICAgICogdGVzdGluZy9JbnRlcm5hbHMuaWRsOgorCiAyMDEyLTAyLTIzICBT
aGlueWEgS2F3YW5ha2EgIDxzaGlueWFrQGNocm9taXVtLm9yZz4KIAogICAgICAgICBOb2RlUmVu
ZGVyaW5nQ29udGV4dCBzaG91bGQgaGF2ZSBTaGFkb3dSb290TGlzdCBpbnN0ZWFkIG9mIFNoYWRv
d1Jvb3QuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2Vi
S2l0Mi9DaGFuZ2VMb2cKaW5kZXggMGU0MGZhNGM2NjFlYzgxNWM5MDIxN2Y2OWVjMTdhZWQ4MTJi
ZDc5Yy4uMTcxNDY1OTI2NWU5NDA1N2E4NzhjZTk3Y2E1YWRjYmEzZjdmZmZiMSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxv
ZwpAQCAtMSwzICsxLDEzIEBACisyMDEyLTAyLTIzICBTaGlueWEgS2F3YW5ha2EgIDxzaGlueWFr
QGNocm9taXVtLm9yZz4KKworICAgICAgICBFbGVtZW50IHNob3VsZCBiZSBhYmxlIHRvIGhhdmUg
bXVsdGlwbGUgc2hhZG93IHJvb3RzLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9Nzc5MzEKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICAqIHdpbi9XZWJLaXQyLmRlZjoKKyAgICAgICAgKiB3aW4vV2ViS2l0MkNG
TGl0ZS5kZWY6CisKIDIwMTItMDItMjMgIE1hcmlvIFNhbmNoZXogUHJhZGEgIDxtc2FuY2hlekBp
Z2FsaWEuY29tPgogCiAgICAgICAgIFtHVEtdIFdyb25nIHNpZ25hbCBuYW1lIG9uIGVtaXNzaW9u
IGluIFdlYktpdFdpbmRvd1Byb3BlcnRpZXMuY3BwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9XZWJDb3JlLmV4cC5pbiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZXhwLmluCmluZGV4IGU4
MTJmZmZmNjVhOTQzMTU0NjFiMDk4Y2M0MWJkZGM5MWVjODE1NmUuLmE4NGViYWI0MjQzYjgyNzg3
YjE5NTFiNmEyNThjYmRkY2QzYzY3OTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNv
cmUuZXhwLmluCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZXhwLmluCkBAIC05MTUsNyAr
OTE1LDcgQEAgX19aTjdXZWJDb3JlNldpZGdldEQyRXYKIF9fWk43V2ViQ29yZTZ0b05vZGVFTjNK
U0M3SlNWYWx1ZUUKIF9fWk43V2ViQ29yZTdDb25zb2xlMjFzaG91bGRQcmludEV4Y2VwdGlvbnNF
dgogX19aTjdXZWJDb3JlN0NvbnNvbGUyNHNldFNob3VsZFByaW50RXhjZXB0aW9uc0ViCi1fX1pO
N1dlYkNvcmU3RWxlbWVudDE2cmVtb3ZlU2hhZG93Um9vdEV2CitfX1pON1dlYkNvcmU3RWxlbWVu
dDIwcmVtb3ZlU2hhZG93Um9vdExpc3RFdgogX19aTjdXZWJDb3JlN0VsZW1lbnQyMWJvdW5kc0lu
Um9vdFZpZXdTcGFjZUV2CiBfX1pON1dlYkNvcmU3RWxlbWVudDlpbm5lclRleHRFdgogX19aTjdX
ZWJDb3JlN0ludFJlY3Q1c2NhbGVFZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0Vs
ZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuY3BwCmluZGV4IGVkYzVhNjJl
ZjQwMzRhNzdkZjkxMjlmNTlkYjhkNjE2OTVmZjE0MTQuLjkyYTg1YWI3N2U3MjM4NWEyM2UzMmJl
Njk3YjMyNjEwYTE2MGY1ZjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5jcHAKQEAgLTc2LDYgKzc2LDEw
IEBACiAjaW5jbHVkZSAiU1ZHTmFtZXMuaCIKICNlbmRpZgogCisjaWYgRU5BQkxFKFNIQURPV19E
T00pCisjaW5jbHVkZSAiUnVudGltZUVuYWJsZWRGZWF0dXJlcy5oIgorI2VuZGlmCisKIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIAogdXNpbmcgbmFtZXNwYWNlIEhUTUxOYW1lczsKQEAgLTEyMiw3ICsx
MjYsNyBAQCBQYXNzUmVmUHRyPEVsZW1lbnQ+IEVsZW1lbnQ6OmNyZWF0ZShjb25zdCBRdWFsaWZp
ZWROYW1lJiB0YWdOYW1lLCBEb2N1bWVudCogZG9jdQogCiBFbGVtZW50Ojp+RWxlbWVudCgpCiB7
Ci0gICAgcmVtb3ZlU2hhZG93Um9vdCgpOworICAgIHJlbW92ZVNoYWRvd1Jvb3RMaXN0KCk7CiAg
ICAgaWYgKG1fYXR0cmlidXRlTWFwKQogICAgICAgICBtX2F0dHJpYnV0ZU1hcC0+ZGV0YWNoRnJv
bUVsZW1lbnQoKTsKIH0KQEAgLTkzMCw3ICs5MzQsNyBAQCB2b2lkIEVsZW1lbnQ6OmF0dGFjaCgp
CiAgICAgICAgIHBhcmVudFB1c2hlci5wdXNoKCk7CiAgICAgICAgIHNoYWRvd1Jvb3RMaXN0KCkt
PmF0dGFjaCgpOwogCi0gICAgICAgIC8vIEluIGEgc2hhZG93IHRyZWUsIHNvbWUgb2YgbGlnaHQg
Y2hpbGRyZW4gbWF5IGJlIGF0dGFjaGVkIGJ5ICdjb250ZW50JyBlbGVtZW50LgorICAgICAgICAv
LyBJbiBhIHNoYWRvdyB0cmVlLCBzb21lIG9mIGxpZ2h0IGNoaWxkcmVuIG1heSBiZSBhdHRhY2hl
ZCBieSA8Y29udGVudD4gb3IgPHNoYWRvdz4uCiAgICAgICAgIC8vIEhvd2V2ZXIsIHdoZW4gdGhl
cmUgaXMgbm8gY29udGVudCBlbGVtZW50IG9yIGNvbnRlbnQgZWxlbWVudCBkb2VzIG5vdCBzZWxl
Y3QKICAgICAgICAgLy8gYWxsIGxpZ2h0IGNoaWxkcmVuLCB3ZSBoYXZlIHRvIGF0dGFjaCB0aGUg
cmVzdCBvZiBsaWdodCBjaGlsZHJlbiBoZXJlLgogICAgICAgICBmb3IgKE5vZGUqIGNoaWxkID0g
Zmlyc3RDaGlsZCgpOyBjaGlsZDsgY2hpbGQgPSBjaGlsZC0+bmV4dFNpYmxpbmcoKSkgewpAQCAt
MTE3Myw3ICsxMTc3LDcgQEAgc3RhdGljIGJvb2wgdmFsaWRhdGVTaGFkb3dSb290KERvY3VtZW50
KiBkb2N1bWVudCwgU2hhZG93Um9vdCogc2hhZG93Um9vdCwgRXhjZXAKICAgICByZXR1cm4gdHJ1
ZTsKIH0KIAotdm9pZCBFbGVtZW50OjpzZXRTaGFkb3dSb290KFBhc3NSZWZQdHI8U2hhZG93Um9v
dD4gc2hhZG93Um9vdCwgRXhjZXB0aW9uQ29kZSYgZWMpCit2b2lkIEVsZW1lbnQ6OmFkZFNoYWRv
d1Jvb3QoUGFzc1JlZlB0cjxTaGFkb3dSb290PiBzaGFkb3dSb290LCBFeGNlcHRpb25Db2RlJiBl
YykKIHsKICAgICBpZiAoIXZhbGlkYXRlU2hhZG93Um9vdChkb2N1bWVudCgpLCBzaGFkb3dSb290
LmdldCgpLCBlYykpCiAgICAgICAgIHJldHVybjsKQEAgLTExODEsNyArMTE4NSwxMiBAQCB2b2lk
IEVsZW1lbnQ6OnNldFNoYWRvd1Jvb3QoUGFzc1JlZlB0cjxTaGFkb3dSb290PiBzaGFkb3dSb290
LCBFeGNlcHRpb25Db2RlJiBlYwogICAgIGlmICghaGFzUmFyZURhdGEoKSkKICAgICAgICAgZW5z
dXJlUmFyZURhdGEoKTsKIAotICAgIHJlbW92ZVNoYWRvd1Jvb3QoKTsKKyNpZiBFTkFCTEUoU0hB
RE9XX0RPTSkKKyAgICBpZiAoIVJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6Om11bHRpcGxlU2hhZG93
U3VidHJlZXNFbmFibGVkKCkpCisgICAgICAgIHJlbW92ZVNoYWRvd1Jvb3RMaXN0KCk7CisjZWxz
ZQorICAgIHJlbW92ZVNoYWRvd1Jvb3RMaXN0KCk7CisjZW5kaWYKIAogICAgIHNoYWRvd1Jvb3Qt
PnNldFNoYWRvd0hvc3QodGhpcyk7CiAgICAgc2hhZG93Um9vdExpc3QoKS0+cHVzaFNoYWRvd1Jv
b3Qoc2hhZG93Um9vdC5nZXQoKSk7CkBAIC0xMTkwLDkgKzExOTksMTIgQEAgdm9pZCBFbGVtZW50
OjpzZXRTaGFkb3dSb290KFBhc3NSZWZQdHI8U2hhZG93Um9vdD4gc2hhZG93Um9vdCwgRXhjZXB0
aW9uQ29kZSYgZWMKICAgICAgICAgc2hhZG93Um9vdC0+aW5zZXJ0ZWRJbnRvRG9jdW1lbnQoKTsK
ICAgICBpZiAoYXR0YWNoZWQoKSkgewogICAgICAgICBzaGFkb3dSb290LT5sYXp5QXR0YWNoKCk7
CisgICAgICAgIGZvciAoU2hhZG93Um9vdCogcm9vdCA9IHNoYWRvd1Jvb3RMaXN0KCktPnlvdW5n
ZXN0U2hhZG93Um9vdCgpLT5vbGRlclNoYWRvd1Jvb3QoKTsgcm9vdDsgcm9vdCA9IHJvb3QtPm9s
ZGVyU2hhZG93Um9vdCgpKQorICAgICAgICAgICAgcm9vdC0+ZGV0YWNoKCk7CiAgICAgICAgIGZv
ciAoTm9kZSogY2hpbGQgPSBmaXJzdENoaWxkKCk7IGNoaWxkOyBjaGlsZCA9IGNoaWxkLT5uZXh0
U2libGluZygpKQogICAgICAgICAgICAgY2hpbGQtPmRldGFjaCgpOwogICAgIH0KKwogfQogCiBT
aGFkb3dSb290KiBFbGVtZW50OjplbnN1cmVTaGFkb3dSb290KCkKQEAgLTEyMDMsNyArMTIxNSw3
IEBAIFNoYWRvd1Jvb3QqIEVsZW1lbnQ6OmVuc3VyZVNoYWRvd1Jvb3QoKQogICAgIHJldHVybiBT
aGFkb3dSb290OjpjcmVhdGUodGhpcywgU2hhZG93Um9vdDo6Q3JlYXRpbmdVc2VyQWdlbnRTaGFk
b3dSb290KS5nZXQoKTsKIH0KIAotdm9pZCBFbGVtZW50OjpyZW1vdmVTaGFkb3dSb290KCkKK3Zv
aWQgRWxlbWVudDo6cmVtb3ZlU2hhZG93Um9vdExpc3QoKQogewogICAgIGlmICghaGFzU2hhZG93
Um9vdCgpKQogICAgICAgICByZXR1cm47CkBAIC0xMjE1LDE2ICsxMjI3LDE5IEBAIHZvaWQgRWxl
bWVudDo6cmVtb3ZlU2hhZG93Um9vdCgpCiAgICAgICAgICAgICBvbGRSb290LT5kZXRhY2goKTsK
IAogICAgICAgICBvbGRSb290LT5zZXRTaGFkb3dIb3N0KDApOworICAgICAgICBvbGRSb290LT5z
ZXRQcmV2KDApOworICAgICAgICBvbGRSb290LT5zZXROZXh0KDApOwogICAgICAgICBkb2N1bWVu
dCgpLT5hZG9wdElmTmVlZGVkKG9sZFJvb3QuZ2V0KCkpOwogICAgICAgICBpZiAob2xkUm9vdC0+
aW5Eb2N1bWVudCgpKQogICAgICAgICAgICAgb2xkUm9vdC0+cmVtb3ZlZEZyb21Eb2N1bWVudCgp
OwogICAgICAgICBlbHNlCiAgICAgICAgICAgICBvbGRSb290LT5yZW1vdmVkRnJvbVRyZWUodHJ1
ZSk7Ci0gICAgICAgIGlmIChhdHRhY2hlZCgpKSB7Ci0gICAgICAgICAgICBmb3IgKE5vZGUqIGNo
aWxkID0gZmlyc3RDaGlsZCgpOyBjaGlsZDsgY2hpbGQgPSBjaGlsZC0+bmV4dFNpYmxpbmcoKSkg
ewotICAgICAgICAgICAgICAgIGlmICghY2hpbGQtPmF0dGFjaGVkKCkpCi0gICAgICAgICAgICAg
ICAgICAgIGNoaWxkLT5sYXp5QXR0YWNoKCk7Ci0gICAgICAgICAgICB9CisgICAgfQorCisgICAg
aWYgKGF0dGFjaGVkKCkpIHsKKyAgICAgICAgZm9yIChOb2RlKiBjaGlsZCA9IGZpcnN0Q2hpbGQo
KTsgY2hpbGQ7IGNoaWxkID0gY2hpbGQtPm5leHRTaWJsaW5nKCkpIHsKKyAgICAgICAgICAgIGlm
ICghY2hpbGQtPmF0dGFjaGVkKCkpCisgICAgICAgICAgICAgICAgY2hpbGQtPmxhenlBdHRhY2go
KTsKICAgICAgICAgfQogICAgIH0KIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9F
bGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5oCmluZGV4IDMxZGExZWRhY2M0
MzU3NjIyMjE2Yzk3OTVhZDNhNjUxZjE5YTU5YTYuLjZjODUzNDM4NzNlZmYyMDAzYzc0MTdhMDgz
MzUzZmVlMTQzYjQ4ODEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmgK
KysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuaApAQCAtMjU1LDEyICsyNTUsMTEgQEAg
cHVibGljOgogCiAgICAgYm9vbCBoYXNTaGFkb3dSb290KCkgY29uc3Q7CiAgICAgU2hhZG93Um9v
dExpc3QqIHNoYWRvd1Jvb3RMaXN0KCkgY29uc3Q7Ci0KLSAgICAvLyBGSVhNRTogVGhlc2UgQVBJ
IHdpbGwgYmUgbW92ZWQgdG8gU2hhZG93Um9vdExpc3QuCi0gICAgLy8gaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTc4MzEzCi0gICAgdm9pZCBzZXRTaGFkb3dSb290KFBh
c3NSZWZQdHI8U2hhZG93Um9vdD4sIEV4Y2VwdGlvbkNvZGUmKTsKKyAgICB2b2lkIGFkZFNoYWRv
d1Jvb3QoUGFzc1JlZlB0cjxTaGFkb3dSb290PiwgRXhjZXB0aW9uQ29kZSYpOworICAgIHZvaWQg
cmVtb3ZlU2hhZG93Um9vdExpc3QoKTsKKyAgICAvLyBGSVhNRTogZW5zdXJlU2hhZG93Um9vdCgp
IHdpbGwgYmUgcmVtb3ZlZCBsYXRlci4KKyAgICAvLyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9Nzc2MDgKICAgICBTaGFkb3dSb290KiBlbnN1cmVTaGFkb3dSb290KCk7
Ci0gICAgdm9pZCByZW1vdmVTaGFkb3dSb290KCk7CiAKICAgICB2aXJ0dWFsIGNvbnN0IEF0b21p
Y1N0cmluZyYgc2hhZG93UHNldWRvSWQoKSBjb25zdDsKICAgICB2b2lkIHNldFNoYWRvd1BzZXVk
b0lkKGNvbnN0IEF0b21pY1N0cmluZyYsIEV4Y2VwdGlvbkNvZGUmID0gQVNTRVJUX05PX0VYQ0VQ
VElPTik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZVJlbmRlcmluZ0NvbnRl
eHQuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL05vZGVSZW5kZXJpbmdDb250ZXh0LmNwcAppbmRl
eCA2NjNkNTVmNjg0YjFjZTMyYjNjZDZhNDliZGRjMmQ4NjljNzE1ODdjLi5lMDI0MWY1ZTllMjhk
ZmRmYmI2NzNhMDhhMzJhZThlMWExOGNkZTkxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9k
b20vTm9kZVJlbmRlcmluZ0NvbnRleHQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2Rl
UmVuZGVyaW5nQ29udGV4dC5jcHAKQEAgLTU3LDcgKzU3LDEyIEBAIE5vZGVSZW5kZXJpbmdDb250
ZXh0OjpOb2RlUmVuZGVyaW5nQ29udGV4dChOb2RlKiBub2RlKQogICAgICAgICByZXR1cm47CiAK
ICAgICBpZiAocGFyZW50LT5pc1NoYWRvd1Jvb3QoKSkgewotICAgICAgICBtX3BoYXNlID0gQXR0
YWNoaW5nU2hhZG93Q2hpbGQ7CisgICAgICAgIC8vIEZJWE1FOiBXZSBkb24ndCBzdXBwb3J0IDxz
aGFkb3c+IHlldCwgc28gdGhlIG5vbi15b3VuZ2VzdCBzaGFkb3cgd29uJ3QgYmUgcmVuZGVyZWQu
CisgICAgICAgIC8vIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob2RfYnVncy5jZ2k/aWQ9Nzg1
OTYKKyAgICAgICAgaWYgKHRvU2hhZG93Um9vdChwYXJlbnQpLT55b3VuZ2VyU2hhZG93Um9vdCgp
KQorICAgICAgICAgICAgbV9waGFzZSA9IEF0dGFjaGluZ05vdERpc3RyaWJ1dGVkOworICAgICAg
ICBlbHNlCisgICAgICAgICAgICBtX3BoYXNlID0gQXR0YWNoaW5nU2hhZG93Q2hpbGQ7CiAgICAg
ICAgIG1fcGFyZW50Tm9kZUZvclJlbmRlcmluZ0FuZFN0eWxlID0gcGFyZW50LT5zaGFkb3dIb3N0
KCk7CiAgICAgICAgIHJldHVybjsKICAgICB9CkBAIC02Nyw5ICs3MiwxNCBAQCBOb2RlUmVuZGVy
aW5nQ29udGV4dDo6Tm9kZVJlbmRlcmluZ0NvbnRleHQoTm9kZSogbm9kZSkKICAgICAgICAgICAg
IG1fdmlzdWFsUGFyZW50U2hhZG93Um9vdExpc3QgPSB0b0VsZW1lbnQocGFyZW50KS0+c2hhZG93
Um9vdExpc3QoKTsKICAgICAgICAgICAgIGlmICgobV9pbnNlcnRpb25Qb2ludCA9IG1fdmlzdWFs
UGFyZW50U2hhZG93Um9vdExpc3QtPmluc2VydGlvblBvaW50Rm9yKG1fbm9kZSkpCiAgICAgICAg
ICAgICAgICAgJiYgbV92aXN1YWxQYXJlbnRTaGFkb3dSb290TGlzdC0+aXNTZWxlY3RvckFjdGl2
ZSgpKSB7Ci0gICAgICAgICAgICAgICAgbV9waGFzZSA9IEF0dGFjaGluZ0Rpc3RyaWJ1dGVkOwot
ICAgICAgICAgICAgICAgIG1fcGFyZW50Tm9kZUZvclJlbmRlcmluZ0FuZFN0eWxlID0gTm9kZVJl
bmRlcmluZ0NvbnRleHQobV9pbnNlcnRpb25Qb2ludCkucGFyZW50Tm9kZUZvclJlbmRlcmluZ0Fu
ZFN0eWxlKCk7Ci0gICAgICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAgICAgICAgICAgLy8g
RklYTUU6IFdlIGRvbid0IHN1cHBvcnQgPHNoYWRvdz4geWV0LCBzbyB0aGUgbm9uLXlvdW5nZXN0
IHNoYWRvdyB3b24ndCBiZSByZW5kZXJlZC4KKyAgICAgICAgICAgICAgICAvLyBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Z3MuY2dpP2lkPTc4NTk2CisgICAgICAgICAgICAgICAgaWYg
KCF0b1NoYWRvd1Jvb3QobV9pbnNlcnRpb25Qb2ludC0+c2hhZG93VHJlZVJvb3ROb2RlKCkpLT55
b3VuZ2VyU2hhZG93Um9vdCgpKSB7CisgICAgICAgICAgICAgICAgICAgIG1fcGhhc2UgPSBBdHRh
Y2hpbmdEaXN0cmlidXRlZDsKKyAgICAgICAgICAgICAgICAgICAgbV9wYXJlbnROb2RlRm9yUmVu
ZGVyaW5nQW5kU3R5bGUgPSBOb2RlUmVuZGVyaW5nQ29udGV4dChtX2luc2VydGlvblBvaW50KS5w
YXJlbnROb2RlRm9yUmVuZGVyaW5nQW5kU3R5bGUoKTsKKyAgICAgICAgICAgICAgICAgICAgcmV0
dXJuOworICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgIH0KIAogICAgICAgICAgICAgbV9w
aGFzZSA9IEF0dGFjaGluZ05vdERpc3RyaWJ1dGVkOwpAQCAtMjYwLDcgKzI3MCw3IEBAIFJlbmRl
ck9iamVjdCogTm9kZVJlbmRlcmluZ0NvbnRleHQ6OnBhcmVudFJlbmRlcmVyKCkgY29uc3QKIAog
dm9pZCBOb2RlUmVuZGVyaW5nQ29udGV4dDo6aG9zdENoaWxkcmVuQ2hhbmdlZCgpCiB7Ci0gICAg
aWYgKG1fcGhhc2UgPT0gQXR0YWNoaW5nTm90RGlzdHJpYnV0ZWQpCisgICAgaWYgKG1fcGhhc2Ug
PT0gQXR0YWNoaW5nTm90RGlzdHJpYnV0ZWQgJiYgbV92aXN1YWxQYXJlbnRTaGFkb3dSb290TGlz
dCkKICAgICAgICAgbV92aXN1YWxQYXJlbnRTaGFkb3dSb290TGlzdC0+aG9zdENoaWxkcmVuQ2hh
bmdlZCgpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vU2hhZG93Um9vdC5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vU2hhZG93Um9vdC5jcHAKaW5kZXggNmNmNTBhY2I5ODgx
NDI5MzJlYTRhMGM3YTQzZTgxZGQ1OTk5ODkxNy4uODhhZTk1YmFkODcwMjExOTRjNGNiNTJmY2Vl
ZThiNDJlOTIzMWNiMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL1NoYWRvd1Jvb3Qu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9TaGFkb3dSb290LmNwcApAQCAtMTIzLDcgKzEy
Myw3IEBAIFBhc3NSZWZQdHI8U2hhZG93Um9vdD4gU2hhZG93Um9vdDo6Y3JlYXRlKEVsZW1lbnQq
IGVsZW1lbnQsIFNoYWRvd1Jvb3RDcmVhdGlvblB1CiAgICAgUmVmUHRyPFNoYWRvd1Jvb3Q+IHNo
YWRvd1Jvb3QgPSBhZG9wdFJlZihuZXcgU2hhZG93Um9vdChlbGVtZW50LT5kb2N1bWVudCgpKSk7
CiAKICAgICBlYyA9IDA7Ci0gICAgZWxlbWVudC0+c2V0U2hhZG93Um9vdChzaGFkb3dSb290LCBl
Yyk7CisgICAgZWxlbWVudC0+YWRkU2hhZG93Um9vdChzaGFkb3dSb290LCBlYyk7CiAgICAgaWYg
KGVjKQogICAgICAgICByZXR1cm4gMDsKICAgICBBU1NFUlQoZWxlbWVudCA9PSBzaGFkb3dSb290
LT5ob3N0KCkpOwpAQCAtMTg0LDE3ICsxODQsNCBAQCB2b2lkIFNoYWRvd1Jvb3Q6OnNldEFwcGx5
QXV0aG9yU2hlZXRzKGJvb2wgdmFsdWUpCiAgICAgbV9hcHBseUF1dGhvclNoZWV0cyA9IHZhbHVl
OwogfQogCi12b2lkIFNoYWRvd1Jvb3Q6OmF0dGFjaCgpCi17Ci0gICAgLy8gQ2hpbGRyZW4gb2Yg
bV9zZWxlY3RvciBpcyBwb3B1bGF0ZWQgbGF6aWx5IGluCi0gICAgLy8gZW5zdXJlU2VsZWN0b3Io
KSwgYW5kIGhlcmUgd2UganVzdCBlbnN1cmUgdGhhdAotICAgIC8vIGl0IGlzIGluIGNsZWFuIHN0
YXRlLgotICAgIC8vIEZJWE1FOiBUaGlzIGFzc2VydGlvbiBicmVha3MgaWYgbXVsdGlwbGUgc2hh
ZG93IHJvb3RzIGFyZSBiZWluZyBhdHRhY2hlZC4KLSAgICAvLyBTaGFkb3dSb290TGlzdCBzaG91
bGQgaGF2ZSByZXNwb25zaWJpbGl0eSBvZiBzaWRlIGVmZmVjdCBvZiBzZWxlY3RvciBpbiBhdHRh
Y2hpbmcvZGV0YWNoaW5nLgotICAgIEFTU0VSVCghaG9zdCgpLT5zaGFkb3dSb290TGlzdCgpLT5z
ZWxlY3RvcigpIHx8ICFob3N0KCktPnNoYWRvd1Jvb3RMaXN0KCktPnNlbGVjdG9yKCktPmhhc0Nh
bmRpZGF0ZXMoKSk7Ci0gICAgRG9jdW1lbnRGcmFnbWVudDo6YXR0YWNoKCk7Ci0gICAgaWYgKEhU
TUxDb250ZW50U2VsZWN0b3IqIHNlbGVjdG9yID0gaG9zdCgpLT5zaGFkb3dSb290TGlzdCgpLT5z
ZWxlY3RvcigpKQotICAgICAgICBzZWxlY3Rvci0+ZGlkU2VsZWN0KCk7Ci19Ci0KIH0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9TaGFkb3dSb290LmggYi9Tb3VyY2UvV2ViQ29yZS9k
b20vU2hhZG93Um9vdC5oCmluZGV4IDliOWRiMTQ0MmE4ZTk0OGRiZmQ5MTA4ZmE1ZDAzYWRlYjBm
ZTY3YTMuLmZkOTQ3ODc3NzJjZTNlNjEzYzJjNzQ4ZTY5OGJiZjMwMTRlOGJlZDMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9TaGFkb3dSb290LmgKKysrIGIvU291cmNlL1dlYkNvcmUv
ZG9tL1NoYWRvd1Jvb3QuaApAQCAtNjQsMTYgKzY0LDE3IEBAIHB1YmxpYzoKICAgICBJbnNlcnRp
b25Qb2ludCogaW5zZXJ0aW9uUG9pbnRGb3IoTm9kZSopIGNvbnN0OwogICAgIHZvaWQgaG9zdENo
aWxkcmVuQ2hhbmdlZCgpOwogCi0gICAgdmlydHVhbCB2b2lkIGF0dGFjaCgpOwotCiAgICAgdmly
dHVhbCBib29sIGFwcGx5QXV0aG9yU2hlZXRzKCkgY29uc3Q7CiAgICAgdm9pZCBzZXRBcHBseUF1
dGhvclNoZWV0cyhib29sKTsKIAogICAgIEVsZW1lbnQqIGhvc3QoKSBjb25zdCB7IHJldHVybiBz
aGFkb3dIb3N0KCk7IH0KICAgICBTaGFkb3dSb290TGlzdCogbGlzdCgpIGNvbnN0OwogCi0gICAg
U2hhZG93Um9vdCogeW91bmdlclNoYWRvd1Jvb3QoKSB7IHJldHVybiBwcmV2KCk7IH0KLSAgICBT
aGFkb3dSb290KiBvbGRlclNoYWRvd1Jvb3QoKSB7IHJldHVybiBuZXh0KCk7IH0KKyAgICBTaGFk
b3dSb290KiB5b3VuZ2VyU2hhZG93Um9vdCgpIGNvbnN0IHsgcmV0dXJuIHByZXYoKTsgfQorICAg
IFNoYWRvd1Jvb3QqIG9sZGVyU2hhZG93Um9vdCgpIGNvbnN0IHsgcmV0dXJuIG5leHQoKTsgfQor
CisgICAgYm9vbCBpc1lvdW5nZXN0U2hhZG93Um9vdCgpIGNvbnN0IHsgcmV0dXJuICF5b3VuZ2Vy
U2hhZG93Um9vdCgpOyB9CisgICAgYm9vbCBpc09sZGVzdFNoYWRvd1Jvb3QoKSBjb25zdCB7IHJl
dHVybiAhb2xkZXJTaGFkb3dSb290KCk7IH0KIAogICAgIGJvb2wgaGFzQ29udGVudEVsZW1lbnQo
KSBjb25zdDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL1NoYWRvd1Jvb3RMaXN0
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9TaGFkb3dSb290TGlzdC5jcHAKaW5kZXggM2FkZWU2
MzcwMDNmZWVlYmJkNTNmZjcyZGMzNTdiYTExZDAzZDBmMy4uM2RiZjcyNWNhYzdjMGQzM2U5Y2M1
OGRjNmRiYjQ4ZGM0YjNiMzBlOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL1NoYWRv
d1Jvb3RMaXN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vU2hhZG93Um9vdExpc3QuY3Bw
CkBAIC05OCwyMiArOTgsMjEgQEAgdm9pZCBTaGFkb3dSb290TGlzdDo6d2lsbFJlbW92ZSgpCiAK
IHZvaWQgU2hhZG93Um9vdExpc3Q6OmF0dGFjaCgpCiB7Ci0gICAgLy8gRklYTUU6IEN1cnJlbnRs
eSB3ZSBvbmx5IHN1cHBvcnQgdGhlIGNhc2UgdGhhdCB0aGUgc2hhZG93IHJvb3QgbGlzdCBoYXMg
YXQgbW9zdCBvbmUgc2hhZG93IHJvb3QuCi0gICAgLy8gU2VlIGFsc28gaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTc3NTAzIGFuZCBpdHMgZGVwZW5kZW50IGJ1Z3MuCi0g
ICAgQVNTRVJUKG1fc2hhZG93Um9vdHMuc2l6ZSgpIDw9IDEpOworICAgIC8vIENoaWxkcmVuIG9m
IG1fc2VsZWN0b3IgaXMgcG9wdWxhdGVkIGxhemlseSBpbgorICAgIC8vIGVuc3VyZVNlbGVjdG9y
KCksIGFuZCBoZXJlIHdlIGp1c3QgZW5zdXJlIHRoYXQgaXQgaXMgaW4gY2xlYW4gc3RhdGUuCisg
ICAgQVNTRVJUKCFzZWxlY3RvcigpIHx8ICFzZWxlY3RvcigpLT5oYXNDYW5kaWRhdGVzKCkpOwog
CiAgICAgZm9yIChTaGFkb3dSb290KiByb290ID0geW91bmdlc3RTaGFkb3dSb290KCk7IHJvb3Q7
IHJvb3QgPSByb290LT5vbGRlclNoYWRvd1Jvb3QoKSkgewogICAgICAgICBpZiAoIXJvb3QtPmF0
dGFjaGVkKCkpCiAgICAgICAgICAgICByb290LT5hdHRhY2goKTsKICAgICB9CisKKyAgICBpZiAo
SFRNTENvbnRlbnRTZWxlY3RvciogY29udGVudFNlbGVjdG9yID0gc2VsZWN0b3IoKSkKKyAgICAg
ICAgY29udGVudFNlbGVjdG9yLT5kaWRTZWxlY3QoKTsKIH0KIAogdm9pZCBTaGFkb3dSb290TGlz
dDo6ZGV0YWNoKCkKIHsKLSAgICAvLyBGSVhNRTogQ3VycmVudGx5IHdlIG9ubHkgc3VwcG9ydCB0
aGUgY2FzZSB0aGF0IHRoZSBzaGFkb3cgcm9vdCBsaXN0IGhhcyBhdCBtb3N0IG9uZSBzaGFkb3cg
cm9vdC4KLSAgICAvLyBTZWUgYWxzbyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9Nzc1MDMgYW5kIGl0cyBkZXBlbmRlbnQgYnVncy4KLSAgICBBU1NFUlQobV9zaGFkb3dS
b290cy5zaXplKCkgPD0gMSk7Ci0KICAgICBmb3IgKFNoYWRvd1Jvb3QqIHJvb3QgPSB5b3VuZ2Vz
dFNoYWRvd1Jvb3QoKTsgcm9vdDsgcm9vdCA9IHJvb3QtPm9sZGVyU2hhZG93Um9vdCgpKSB7CiAg
ICAgICAgIGlmIChyb290LT5hdHRhY2hlZCgpKQogICAgICAgICAgICAgcm9vdC0+ZGV0YWNoKCk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5jcHAKaW5kZXggODRlOWNmNzU0MDk0OWY4ZDdl
MTJiNWRkZmEwYzc4MjEyZDRiZjJhOC4uNThmYjQyNmRhMDY5ZWRlZGU4NzA4ZjVjZWI1MjI3MmI5
NGJjNDE2NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNwcApAQCAtMTE5LDYgKzEx
OSwxNCBAQCBJbnRlcm5hbHM6OkludGVybmFscyhEb2N1bWVudCogZG9jdW1lbnQpCiAgICAgcmVz
ZXQoZG9jdW1lbnQpOwogfQogCitTdHJpbmcgSW50ZXJuYWxzOjphZGRyZXNzKE5vZGUqIG5vZGUp
Cit7CisgICAgY2hhciBidWZbMzJdOworICAgIHNwcmludGYoYnVmLCAiJXAiLCBub2RlKTsKKwor
ICAgIHJldHVybiBTdHJpbmcoYnVmKTsKK30KKwogYm9vbCBJbnRlcm5hbHM6OmlzUHJlbG9hZGVk
KERvY3VtZW50KiBkb2N1bWVudCwgY29uc3QgU3RyaW5nJiB1cmwpCiB7CiAgICAgaWYgKCFkb2N1
bWVudCkKQEAgLTI0MSw2ICsyNDksMjYgQEAgSW50ZXJuYWxzOjpTaGFkb3dSb290SWZTaGFkb3dE
T01FbmFibGVkT3JOb2RlKiBJbnRlcm5hbHM6Om9sZGVzdFNoYWRvd1Jvb3QoRWxlbWUKICAgICBy
ZXR1cm4gaG9zdC0+c2hhZG93Um9vdExpc3QoKS0+b2xkZXN0U2hhZG93Um9vdCgpOwogfQogCitJ
bnRlcm5hbHM6OlNoYWRvd1Jvb3RJZlNoYWRvd0RPTUVuYWJsZWRPck5vZGUqIEludGVybmFsczo6
eW91bmdlclNoYWRvd1Jvb3QoTm9kZSogc2hhZG93LCBFeGNlcHRpb25Db2RlJiBlYykKK3sKKyAg
ICBpZiAoIXNoYWRvdyB8fCAhc2hhZG93LT5pc1NoYWRvd1Jvb3QoKSkgeworICAgICAgICBlYyA9
IElOVkFMSURfQUNDRVNTX0VSUjsKKyAgICAgICAgcmV0dXJuIDA7CisgICAgfQorCisgICAgcmV0
dXJuIHRvU2hhZG93Um9vdChzaGFkb3cpLT55b3VuZ2VyU2hhZG93Um9vdCgpOworfQorCitJbnRl
cm5hbHM6OlNoYWRvd1Jvb3RJZlNoYWRvd0RPTUVuYWJsZWRPck5vZGUqIEludGVybmFsczo6b2xk
ZXJTaGFkb3dSb290KE5vZGUqIHNoYWRvdywgRXhjZXB0aW9uQ29kZSYgZWMpCit7CisgICAgaWYg
KCFzaGFkb3cgfHwgIXNoYWRvdy0+aXNTaGFkb3dSb290KCkpIHsKKyAgICAgICAgZWMgPSBJTlZB
TElEX0FDQ0VTU19FUlI7CisgICAgICAgIHJldHVybiAwOworICAgIH0KKworICAgIHJldHVybiB0
b1NoYWRvd1Jvb3Qoc2hhZG93KS0+b2xkZXJTaGFkb3dSb290KCk7Cit9CisKIHZvaWQgSW50ZXJu
YWxzOjpyZW1vdmVTaGFkb3dSb290KEVsZW1lbnQqIGhvc3QsIEV4Y2VwdGlvbkNvZGUmIGVjKQog
ewogICAgIGlmICghaG9zdCkgewpAQCAtMjQ4LDcgKzI3Niw3IEBAIHZvaWQgSW50ZXJuYWxzOjpy
ZW1vdmVTaGFkb3dSb290KEVsZW1lbnQqIGhvc3QsIEV4Y2VwdGlvbkNvZGUmIGVjKQogICAgICAg
ICByZXR1cm47CiAgICAgfQogCi0gICAgaG9zdC0+cmVtb3ZlU2hhZG93Um9vdCgpOworICAgIGhv
c3QtPnJlbW92ZVNoYWRvd1Jvb3RMaXN0KCk7CiB9CiAKIHZvaWQgSW50ZXJuYWxzOjpzZXRNdWx0
aXBsZVNoYWRvd1N1YnRyZWVzRW5hYmxlZChib29sIGVuYWJsZWQpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5oIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9J
bnRlcm5hbHMuaAppbmRleCBlYTJmOGI4YWYyYzExY2NmYzBhNmNlZjljY2E4ZTZmNDRkMDVjNTZk
Li4wNzQyODZjNDA0MGViOWNiOTI5NjBiNjg3ZjQxODU1ZmMwMTJkZTdhIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Rl
c3RpbmcvSW50ZXJuYWxzLmgKQEAgLTU1LDYgKzU1LDggQEAgcHVibGljOgogCiAgICAgU3RyaW5n
IGVsZW1lbnRSZW5kZXJUcmVlQXNUZXh0KEVsZW1lbnQqLCBFeGNlcHRpb25Db2RlJik7CiAKKyAg
ICBTdHJpbmcgYWRkcmVzcyhOb2RlKik7CisKICAgICBib29sIGlzUHJlbG9hZGVkKERvY3VtZW50
KiwgY29uc3QgU3RyaW5nJiB1cmwpOwogCiAgICAgc2l6ZV90IG51bWJlck9mU2NvcGVkSFRNTFN0
eWxlQ2hpbGRyZW4oY29uc3QgTm9kZSosIEV4Y2VwdGlvbkNvZGUmKSBjb25zdDsKQEAgLTY4LDYg
KzcwLDggQEAgcHVibGljOgogICAgIFNoYWRvd1Jvb3RJZlNoYWRvd0RPTUVuYWJsZWRPck5vZGUq
IHNoYWRvd1Jvb3QoRWxlbWVudCogaG9zdCwgRXhjZXB0aW9uQ29kZSYpOwogICAgIFNoYWRvd1Jv
b3RJZlNoYWRvd0RPTUVuYWJsZWRPck5vZGUqIHlvdW5nZXN0U2hhZG93Um9vdChFbGVtZW50KiBo
b3N0LCBFeGNlcHRpb25Db2RlJik7CiAgICAgU2hhZG93Um9vdElmU2hhZG93RE9NRW5hYmxlZE9y
Tm9kZSogb2xkZXN0U2hhZG93Um9vdChFbGVtZW50KiBob3N0LCBFeGNlcHRpb25Db2RlJik7Cisg
ICAgU2hhZG93Um9vdElmU2hhZG93RE9NRW5hYmxlZE9yTm9kZSogeW91bmdlclNoYWRvd1Jvb3Qo
Tm9kZSogc2hhZG93LCBFeGNlcHRpb25Db2RlJik7CisgICAgU2hhZG93Um9vdElmU2hhZG93RE9N
RW5hYmxlZE9yTm9kZSogb2xkZXJTaGFkb3dSb290KE5vZGUqIHNoYWRvdywgRXhjZXB0aW9uQ29k
ZSYpOwogICAgIHZvaWQgcmVtb3ZlU2hhZG93Um9vdChFbGVtZW50KiBob3N0LCBFeGNlcHRpb25D
b2RlJik7CiAgICAgdm9pZCBzZXRNdWx0aXBsZVNoYWRvd1N1YnRyZWVzRW5hYmxlZChib29sKTsK
ICAgICBFbGVtZW50KiBpbmNsdWRlckZvcihOb2RlKiwgRXhjZXB0aW9uQ29kZSYpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuaWRsIGIvU291cmNlL1dlYkNv
cmUvdGVzdGluZy9JbnRlcm5hbHMuaWRsCmluZGV4IGJhNzZkNDg2ZGRlODk3MTEyODhmYjA0OTNj
MTM3NGJiODE2YzgyY2EuLmJkNGVmZjczODA4NmE1NGY2MGI2YTJmZWMxMTQwYTJmYmNiOGNkMzYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmlkbAorKysgYi9T
b3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5pZGwKQEAgLTI3LDYgKzI3LDggQEAgbW9k
dWxlIHdpbmRvdyB7CiAgICAgaW50ZXJmYWNlIFsKICAgICAgICAgT21pdENvbnN0cnVjdG9yCiAg
ICAgXSBJbnRlcm5hbHMgeworICAgICAgICBET01TdHJpbmcgYWRkcmVzcyhpbiBOb2RlIG5vZGUp
OworCiAgICAgICAgIERPTVN0cmluZyBlbGVtZW50UmVuZGVyVHJlZUFzVGV4dChpbiBFbGVtZW50
IGVsZW1lbnQpIHJhaXNlcyhET01FeGNlcHRpb24pOwogICAgICAgICBib29sZWFuIGlzUHJlbG9h
ZGVkKGluIERvY3VtZW50IGRvY3VtZW50LCBpbiBET01TdHJpbmcgdXJsKTsKIApAQCAtMzcsMTEg
KzM5LDE1IEBAIG1vZHVsZSB3aW5kb3cgewogICAgICAgICBTaGFkb3dSb290IHNoYWRvd1Jvb3Qo
aW4gRWxlbWVudCBob3N0KSByYWlzZXMgKERPTUV4Y2VwdGlvbik7CiAgICAgICAgIFNoYWRvd1Jv
b3QgeW91bmdlc3RTaGFkb3dSb290KGluIEVsZW1lbnQgaG9zdCkgcmFpc2VzIChET01FeGNlcHRp
b24pOwogICAgICAgICBTaGFkb3dSb290IG9sZGVzdFNoYWRvd1Jvb3QoaW4gRWxlbWVudCBob3N0
KSByYWlzZXMgKERPTUV4Y2VwdGlvbik7CisgICAgICAgIFNoYWRvd1Jvb3QgeW91bmdlclNoYWRv
d1Jvb3QoaW4gTm9kZSByb290KSByYWlzZXMgKERPTUV4Y2VwdGlvbik7CisgICAgICAgIFNoYWRv
d1Jvb3Qgb2xkZXJTaGFkb3dSb290KGluIE5vZGUgcm9vdCkgcmFpc2VzIChET01FeGNlcHRpb24p
OwogI2Vsc2UKICAgICAgICAgTm9kZSBlbnN1cmVTaGFkb3dSb290KGluIEVsZW1lbnQgaG9zdCkg
cmFpc2VzIChET01FeGNlcHRpb24pOwogICAgICAgICBOb2RlIHNoYWRvd1Jvb3QoaW4gRWxlbWVu
dCBob3N0KSByYWlzZXMgKERPTUV4Y2VwdGlvbik7CiAgICAgICAgIE5vZGUgeW91bmdlc3RTaGFk
b3dSb290KGluIEVsZW1lbnQgaG9zdCkgcmFpc2VzIChET01FeGNlcHRpb24pOwogICAgICAgICBO
b2RlIG9sZGVzdFNoYWRvd1Jvb3QoaW4gRWxlbWVudCBob3N0KSByYWlzZXMgKERPTUV4Y2VwdGlv
bik7CisgICAgICAgIE5vZGUgeW91bmdlclNoYWRvd1Jvb3QoaW4gTm9kZSByb290KSByYWlzZXMg
KERPTUV4Y2VwdGlvbik7CisgICAgICAgIE5vZGUgeW91bmdlclNoYWRvd1Jvb3QoaW4gTm9kZSBy
b290KSByYWlzZXMgKERPTUV4Y2VwdGlvbik7CiAjZW5kaWYKICAgICAgICAgdm9pZCBzZXRNdWx0
aXBsZVNoYWRvd1N1YnRyZWVzRW5hYmxlZChpbiBib29sZWFuIGVuYWJsZWQpOwogICAgICAgICBF
bGVtZW50IGluY2x1ZGVyRm9yKGluIE5vZGUgbm9kZSkgcmFpc2VzIChET01FeGNlcHRpb24pOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvd2luL1dlYktpdDIuZGVmIGIvU291cmNlL1dlYktp
dDIvd2luL1dlYktpdDIuZGVmCmluZGV4IDcxOGRmYTE4YmI2ZGE3YTFjOTAzYjYyNTE1ODk0YjUx
YzlmMGExMTcuLjZmYjE4NTQwMWEzOGMzMTkyMmJiNDE3YWYyZDM5Y2Y0YWM4NWE2MzUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL3dpbi9XZWJLaXQyLmRlZgorKysgYi9Tb3VyY2UvV2ViS2l0
Mi93aW4vV2ViS2l0Mi5kZWYKQEAgLTE3Niw3ICsxNzYsOCBAQCBFWFBPUlRTCiAgICAgICAgID9w
YWdlQERvY3VtZW50QFdlYkNvcmVAQFFCRVBBVlBhZ2VAMkBYWgogICAgICAgICA/cGFpbnRDb250
cm9sVGludHNARnJhbWVWaWV3QFdlYkNvcmVAQEFBRVhYWgogICAgICAgICA/cmFuZ2VGcm9tTG9j
YXRpb25BbmRMZW5ndGhAVGV4dEl0ZXJhdG9yQFdlYkNvcmVAQFNBP0FWPyRQYXNzUmVmUHRyQFZS
YW5nZUBXZWJDb3JlQEBAV1RGQEBQQVZFbGVtZW50QDJASEhfTkBaCi0gICAgICAgID9yZW1vdmVT
aGFkb3dSb290QEVsZW1lbnRAV2ViQ29yZUBAUUFFWFhaCisgICAgICAgID9yZW1vdmVTaGFkb3dS
b290TGlzdEBFbGVtZW50QFdlYkNvcmVAQFFBRVhYWgorICAgICAgICA/c19pbmZvQEpTTm9kZUBX
ZWJDb3JlQEAyVUNsYXNzSW5mb0BKU0NAQEIKICAgICAgICAgP3NjcmlwdEV4ZWN1dGlvbkNvbnRl
eHRASlNET01HbG9iYWxPYmplY3RAV2ViQ29yZUBAUUJFUEFWU2NyaXB0RXhlY3V0aW9uQ29udGV4
dEAyQFhaCiAgICAgICAgID9zY3JvbGxFbGVtZW50VG9SZWN0QEZyYW1lVmlld0BXZWJDb3JlQEBR
QUVYUEFWRWxlbWVudEAyQEFCVkludFJlY3RAMkBAWgogICAgICAgICA/c2V0RE9NRXhjZXB0aW9u
QFdlYkNvcmVAQFlBWFBBVkV4ZWNTdGF0ZUBKU0NAQEhAWgpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdDIvd2luL1dlYktpdDJDRkxpdGUuZGVmIGIvU291cmNlL1dlYktpdDIvd2luL1dlYktpdDJD
RkxpdGUuZGVmCmluZGV4IGMzNTllYTZlM2ZhODQyZDhiNjc1NjAzOGJhMWFmMDhhMTc0MjUzZGEu
LjFhNjRiYTcxZmE2MGY2ZTQ5OTI3NWQzZWVmNWNkNTA4ZWFjZjlkMDggMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQyL3dpbi9XZWJLaXQyQ0ZMaXRlLmRlZgorKysgYi9Tb3VyY2UvV2ViS2l0Mi93
aW4vV2ViS2l0MkNGTGl0ZS5kZWYKQEAgLTE2OSw3ICsxNjksOCBAQCBFWFBPUlRTCiAgICAgICAg
ID9wYWdlQERvY3VtZW50QFdlYkNvcmVAQFFCRVBBVlBhZ2VAMkBYWgogICAgICAgICA/cGFpbnRD
b250cm9sVGludHNARnJhbWVWaWV3QFdlYkNvcmVAQEFBRVhYWgogICAgICAgICA/cmFuZ2VGcm9t
TG9jYXRpb25BbmRMZW5ndGhAVGV4dEl0ZXJhdG9yQFdlYkNvcmVAQFNBP0FWPyRQYXNzUmVmUHRy
QFZSYW5nZUBXZWJDb3JlQEBAV1RGQEBQQVZFbGVtZW50QDJASEhfTkBaCi0gICAgICAgID9yZW1v
dmVTaGFkb3dSb290QEVsZW1lbnRAV2ViQ29yZUBAUUFFWFhaCisgICAgICAgID9yZW1vdmVTaGFk
b3dSb290TGlzdEBFbGVtZW50QFdlYkNvcmVAQFFBRVhYWgorICAgICAgICA/c19pbmZvQEpTTm9k
ZUBXZWJDb3JlQEAyVUNsYXNzSW5mb0BKU0NAQEIKICAgICAgICAgP3NjcmlwdEV4ZWN1dGlvbkNv
bnRleHRASlNET01HbG9iYWxPYmplY3RAV2ViQ29yZUBAUUJFUEFWU2NyaXB0RXhlY3V0aW9uQ29u
dGV4dEAyQFhaCiAgICAgICAgID9zY3JvbGxFbGVtZW50VG9SZWN0QEZyYW1lVmlld0BXZWJDb3Jl
QEBRQUVYUEFWRWxlbWVudEAyQEFCVkludFJlY3RAMkBAWgogICAgICAgICA/c2V0RE9NRXhjZXB0
aW9uQFdlYkNvcmVAQFlBWFBBVkV4ZWNTdGF0ZUBKU0NAQEhAWgpkaWZmIC0tZ2l0IGEvU291cmNl
L2F1dG90b29scy9zeW1ib2xzLmZpbHRlciBiL1NvdXJjZS9hdXRvdG9vbHMvc3ltYm9scy5maWx0
ZXIKaW5kZXggZWY3MGQ4MWE0ZmE3Y2RlMThlYWJiMWQzOTllOTlkMzM1NTYwOWQzYy4uOTA2NWU5
NGIwZjJhOTFhNDZlNTUzOGYzZjkxNTBjYzA1MGMxODY2NyAxMDA2NDQKLS0tIGEvU291cmNlL2F1
dG90b29scy9zeW1ib2xzLmZpbHRlcgorKysgYi9Tb3VyY2UvYXV0b3Rvb2xzL3N5bWJvbHMuZmls
dGVyCkBAIC02Niw3ICs2Niw3IEBAIF9aTjdXZWJDb3JlNkpTTm9kZTEwcHV0VmlydHVhbEVQTjNK
U0M5RXhlY1N0YXRlRVJLTlMxXzEwSWRlbnRpZmllckVOUzFfN0pTVmFsdWVFCiBfWk43V2ViQ29y
ZTZKU05vZGUyMHZpc2l0Q2hpbGRyZW5WaXJ0dWFsRVJOM0pTQzExU2xvdFZpc2l0b3JFOwogX1pO
N1dlYkNvcmU2SlNOb2RlNnNfaW5mb0U7CiBfWk43V2ViQ29yZTZ0b05vZGVFTjNKU0M3SlNWYWx1
ZUU7Ci1fWk43V2ViQ29yZTdFbGVtZW50MTZyZW1vdmVTaGFkb3dSb290RXY7CitfWk43V2ViQ29y
ZTdFbGVtZW50MjByZW1vdmVTaGFkb3dSb290TGlzdEV2OwogX1pON1dlYkNvcmU3dG9SYW5nZUVO
M0pTQzdKU1ZhbHVlRTsKIF9aTjdXZWJDb3JlOUpTRWxlbWVudDEwcHV0VmlydHVhbEVQTjNKU0M5
RXhlY1N0YXRlRVJLTlMxXzEwSWRlbnRpZmllckVOUzFfN0pTVmFsdWVFUk5TMV8xNVB1dFByb3Bl
cnR5U2xvdEU7CiBfWk43V2ViQ29yZTlKU0VsZW1lbnQ2c19pbmZvRTsKZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCBkOGIxMmU3
M2Y0ZTdlMTQ5Zjc5YTY3ZjQ1MzRkZTY5ODE0MDc1MWM2Li4xMGQ5YzY5MjMyMDVhMzQ1ZWQ4OGJh
NzU5MGZkZmEwYzk0NWUxMjU3IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysr
IGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjYgQEAKKzIwMTItMDItMjMgIFNo
aW55YSBLYXdhbmFrYSAgPHNoaW55YWtAY2hyb21pdW0ub3JnPgorCisgICAgICAgIEVsZW1lbnQg
c2hvdWxkIGJlIGFibGUgdG8gaGF2ZSBtdWx0aXBsZSBzaGFkb3cgcm9vdHMuCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03NzkzMQorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogZmFzdC9kb20vcmVzb3VyY2Vz
L3NoYWRvdy10ZXN0LWRyaXZlci5qczoKKyAgICAgICAgKGNyZWF0ZVNwYW5XaXRoVGV4dCk6Cisg
ICAgICAgIChkb25lVGVzdCk6CisgICAgICAgIChkb1Rlc3QpOgorICAgICAgICAqIGZhc3QvZG9t
L3NoYWRvdy9tdWx0aXBsZS1zaGFkb3dyb290LWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAg
ICogZmFzdC9kb20vc2hhZG93L211bHRpcGxlLXNoYWRvd3Jvb3QtcmVuZGVyaW5nLWV4cGVjdGVk
LnR4dDogQWRkZWQuCisgICAgICAgICogZmFzdC9kb20vc2hhZG93L211bHRpcGxlLXNoYWRvd3Jv
b3QtcmVuZGVyaW5nLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGZhc3QvZG9tL3NoYWRvdy9tdWx0
aXBsZS1zaGFkb3dyb290Lmh0bWw6IEFkZGVkLgorICAgICAgICAqIHBsYXRmb3JtL2VmbC9Ta2lw
cGVkOgorICAgICAgICAqIHBsYXRmb3JtL2d0ay9Ta2lwcGVkOgorICAgICAgICAqIHBsYXRmb3Jt
L21hYy9Ta2lwcGVkOgorICAgICAgICAqIHBsYXRmb3JtL3F0L1NraXBwZWQ6CisgICAgICAgICog
cGxhdGZvcm0vd2luL1NraXBwZWQ6CisgICAgICAgICogcGxhdGZvcm0vd2luY2Fpcm8vU2tpcHBl
ZDoKKyAgICAgICAgKiBwbGF0Zm9ybS93azIvU2tpcHBlZDoKKwogMjAxMi0wMi0yMyAgRGFuIEJl
cm5zdGVpbiAgPG1pdHpAYXBwbGUuY29tPgogCiAgICAgICAgIFJFR1JFU1NJT046IEFzc2VydGlv
biBmYWlsdXJlIGluIERvY3VtZW50OjpzZXRDb21wYXRpYmlsaXR5TW9kZSgpICghbV9zdHlsZVNo
ZWV0cy0+bGVuZ3RoKCkpIGluIGZhc3QvZHluYW1pYy9jcmFzaC1wYWludC1uby1kb2N1bWVudEVs
ZW1lbnQtcmVuZGVyZXIuaHRtbApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9kb20vcmVz
b3VyY2VzL3NoYWRvdy10ZXN0LWRyaXZlci5qcyBiL0xheW91dFRlc3RzL2Zhc3QvZG9tL3Jlc291
cmNlcy9zaGFkb3ctdGVzdC1kcml2ZXIuanMKaW5kZXggOTllM2ViZjZmN2U1MmVkZGViYjViMzBl
NDg5YjBiNmVkYTRlMGNiZS4uMGZmNWQ0MDU4ZTIwN2MxZDBiMjlmMjE4YjAyOTEyY2ZjYjViOTBm
MCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvZmFzdC9kb20vcmVzb3VyY2VzL3NoYWRvdy10ZXN0
LWRyaXZlci5qcworKysgYi9MYXlvdXRUZXN0cy9mYXN0L2RvbS9yZXNvdXJjZXMvc2hhZG93LXRl
c3QtZHJpdmVyLmpzCkBAIC01Myw5ICs1MywxMSBAQCBmdW5jdGlvbiBjaGVjaygpIHsKICAgICB9
CiB9CiAKLWZ1bmN0aW9uIGNyZWF0ZVNwYW5XaXRoVGV4dCh0ZXh0KSB7CitmdW5jdGlvbiBjcmVh
dGVTcGFuV2l0aFRleHQodGV4dCwgY2xhc3NOYW1lKSB7CiAgICAgdmFyIHNwYW4gPSBkb2N1bWVu
dC5jcmVhdGVFbGVtZW50KCdzcGFuJyk7CiAgICAgc3Bhbi5hcHBlbmRDaGlsZChkb2N1bWVudC5j
cmVhdGVUZXh0Tm9kZSh0ZXh0KSk7CisgICAgaWYgKGNsYXNzTmFtZSkKKyAgICAgICAgc3Bhbi5j
bGFzc05hbWUgPSBjbGFzc05hbWU7CiAgICAgcmV0dXJuIHNwYW47CiB9CiAKQEAgLTExOCwxMSAr
MTIwLDE2IEBAIGZ1bmN0aW9uIGRvVGVzdElmTGVmdChyZXN0VGVzdHMpIHsKIAogZnVuY3Rpb24g
ZG9uZVRlc3QoKSB7CiAgICAgbG9nKCJURVNUIENPTVBMRVRFRCIpOworICAgIGlmICh3aW5kb3cu
dGVhckRvd25PbmNlKQorICAgICAgICB3aW5kb3cudGVhckRvd25PbmNlKCk7CiAgICAgbGF5b3V0
VGVzdENvbnRyb2xsZXIubm90aWZ5RG9uZSgpOwogfQogCiAvLyBBIHRlc3QgZHJpdmVyLiBDYWxs
IHRoaXMgYm9keS5vbmxvYWQuCiBmdW5jdGlvbiBkb1Rlc3QodGVzdHMpIHsKKyAgICBpZiAod2lu
ZG93LnNldFVwT25jZSkKKyAgICAgICAgd2luZG93LnNldFVwT25jZSgpOworCiAgICAgaWYgKHdp
bmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikgewogICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxl
ci53YWl0VW50aWxEb25lKCk7CiAgICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1Rl
eHQoKTsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZG9tL3NoYWRvdy9tdWx0aXBsZS1z
aGFkb3dyb290LWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2Zhc3QvZG9tL3NoYWRvdy9tdWx0
aXBsZS1zaGFkb3dyb290LWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5hYTNkZWRkYzg1NTZjZDdj
ZTJiZDc1YjYxNTUzZmM1MGU1ODc3NWYzCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMv
ZmFzdC9kb20vc2hhZG93L211bHRpcGxlLXNoYWRvd3Jvb3QtZXhwZWN0ZWQudHh0CkBAIC0wLDAg
KzEsMTcgQEAKK1RoaXMgdGVzdCBlbnN1cmUgdGhhdCB0aGUgbXVsdGlwbGUgc2hhZG93IHJvb3Qg
aXMgYXZhaWxhYmxlLgorCitPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBB
U1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCisKKworUEFTUyBpbnRl
cm5hbHMuc2hhZG93Um9vdChkaXYpIGlzIG51bGwKK1BBU1MgaW50ZXJuYWxzLnNoYWRvd1Jvb3Qo
ZGl2KSBpcyBzaGFkb3dSb290MQorUEFTUyBpbnRlcm5hbHMub2xkZXJTaGFkb3dSb290KHNoYWRv
d1Jvb3QxKSBpcyBudWxsCitQQVNTIGludGVybmFscy5zaGFkb3dSb290KGRpdikgaXMgc2hhZG93
Um9vdDIKK1BBU1MgaW50ZXJuYWxzLm9sZGVyU2hhZG93Um9vdChzaGFkb3dSb290MikgaXMgc2hh
ZG93Um9vdDEKK1BBU1MgaW50ZXJuYWxzLnNoYWRvd1Jvb3QoZGl2KSBpcyBzaGFkb3dSb290Mwor
UEFTUyBpbnRlcm5hbHMub2xkZXJTaGFkb3dSb290KHNoYWRvd1Jvb3QzKSBpcyBzaGFkb3dSb290
MgorUEFTUyBpbnRlcm5hbHMuc2hhZG93Um9vdChkaXYpIGlzIG51bGwKK1BBU1Mgc3VjY2Vzc2Z1
bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQorCmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9mYXN0L2RvbS9zaGFkb3cvbXVsdGlwbGUtc2hhZG93cm9vdC1yZW5kZXJpbmctZXhwZWN0
ZWQudHh0IGIvTGF5b3V0VGVzdHMvZmFzdC9kb20vc2hhZG93L211bHRpcGxlLXNoYWRvd3Jvb3Qt
cmVuZGVyaW5nLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi43YjlmMDU2MGE3MTg2YjIyN2Y1OTFl
NjgxOWE2Yjc1MGQ5ZGQyMmQzCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9k
b20vc2hhZG93L211bHRpcGxlLXNoYWRvd3Jvb3QtcmVuZGVyaW5nLWV4cGVjdGVkLnR4dApAQCAt
MCwwICsxLDE0IEBACit0ZXN0RG91YmxlU2hhZG93U3VidHJlZXMKK1BBU1MKK3Rlc3RUcmlwbGVT
aGFkb3dTdWJ0cmVlcworUEFTUwordGVzdFNoYWRvd1N1YnRyZWVzV2l0aENvbnRlbnQKK1BBU1MK
K3Rlc3RTaGFkb3dTdWJ0cmVlc1dpdGhDb250ZW50SW5PbGRlclN1YnRyZWUKK1BBU1MKK3Rlc3RT
aGFkb3dTdWJ0cmVlc1dpdGhEeW5hbWljQ3JlYXRpb24KK1BBU1MKK3Rlc3RTaGFkb3dTdWJ0cmVl
c1dpdGhEeW5hbWljQ3JlYXRpb25PdXRPZlRyZWUKK1BBU1MKK1RFU1QgQ09NUExFVEVECisKZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZG9tL3NoYWRvdy9tdWx0aXBsZS1zaGFkb3dyb290
LXJlbmRlcmluZy5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9kb20vc2hhZG93L211bHRpcGxlLXNo
YWRvd3Jvb3QtcmVuZGVyaW5nLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMWViZGUyNjM5OTZlODZjZGEzZWQ1
NmFjMTgzNDU1YTI5MGVkY2YzZgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3Qv
ZG9tL3NoYWRvdy9tdWx0aXBsZS1zaGFkb3dyb290LXJlbmRlcmluZy5odG1sCkBAIC0wLDAgKzEs
MTc0IEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8c3R5bGU+CisvKiByZWxh
dGl2ZSBwb3NpdGlvbmluZyBlbnN1cmVzIHVuZGVybHlpbmcgUmVuZGVyTGF5ZXIgKi8KKy5jb250
YWluZXIgeworICAgIHBvc2l0aW9uOiByZWxhdGl2ZTsKK30KKworLnNwYW4geworICAgIGRpc3Bs
YXk6IGJveGVkLWlubGluZTsKKyAgICBtYXJnaW46IDJweDsKKyAgICBib3JkZXI6IHNvbGlkOwor
fQorPC9zdHlsZT4KKzxzY3JpcHQgc3JjPSIuLi9yZXNvdXJjZXMvc2hhZG93LXRlc3QtZHJpdmVy
LmpzIj48L3NjcmlwdD4KKzxzY3JpcHQ+CitmdW5jdGlvbiBzZXRVcE9uY2UoKSB7CisgICAgaW50
ZXJuYWxzLnNldE11bHRpcGxlU2hhZG93U3VidHJlZXNFbmFibGVkKHRydWUpOworfQorCitmdW5j
dGlvbiB0ZWF0RG93bk9uY2UoKSB7CisgICAgaW50ZXJuYWxzLnNldE11bHRpcGxlU2hhZG93U3Vi
dHJlZXNFbmFibGVkKGZhbHNlKTsKK30KKwordmFyIHRlc3RGdW5jcyA9IFtdOworCit0ZXN0RnVu
Y3MucHVzaChmdW5jdGlvbiB0ZXN0RG91YmxlU2hhZG93U3VidHJlZXMoY2FsbElmRG9uZSkgewor
ICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdleHBlY3QtY29udGFpbmVyJykuaW5uZXJIVE1M
ID0gIjxkaXY+PHNwYW4+QkVGT1JFPC9zcGFuPjxzcGFuPk1JRDwvc3Bhbj48c3Bhbj5BRlRFUjwv
c3Bhbj48L2Rpdj4iOworCisgICAgdmFyIHJvb3QgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdk
aXYnKTsKKyAgICByb290LmFwcGVuZENoaWxkKGNyZWF0ZVNwYW5XaXRoVGV4dCgnTElHSFQnKSk7
CisKKyAgICB2YXIgc3IxID0gbmV3IFdlYktpdFNoYWRvd1Jvb3Qocm9vdCk7CisgICAgc3IxLmFw
cGVuZENoaWxkKGNyZWF0ZVNwYW5XaXRoVGV4dCgnQkVGT1JFOiBTSE9VTEQgTk9UIEJFIFJFTkRF
UkVEJykpOworICAgIHNyMS5hcHBlbmRDaGlsZChjcmVhdGVTcGFuV2l0aFRleHQoJ01JRDogU0hP
VUxEIE5PVCBCRSBSRU5ERVJFRCcpKTsKKyAgICBzcjEuYXBwZW5kQ2hpbGQoY3JlYXRlU3Bhbldp
dGhUZXh0KCdBRlRFUjogU0hPVUxEIE5PVCBCRSBSRU5ERVJFRCcpKTsKKworICAgIHZhciBzcjIg
PSBuZXcgV2ViS2l0U2hhZG93Um9vdChyb290KTsKKyAgICBzcjIuYXBwZW5kQ2hpbGQoY3JlYXRl
U3BhbldpdGhUZXh0KCdCRUZPUkUnKSk7CisgICAgc3IyLmFwcGVuZENoaWxkKGNyZWF0ZVNwYW5X
aXRoVGV4dCgnTUlEJykpOworICAgIHNyMi5hcHBlbmRDaGlsZChjcmVhdGVTcGFuV2l0aFRleHQo
J0FGVEVSJykpOworCisgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2FjdHVhbC1jb250YWlu
ZXInKS5hcHBlbmRDaGlsZChyb290KTsKKworICAgIGNhbGxJZkRvbmUoKTsKK30pOworCit0ZXN0
RnVuY3MucHVzaChmdW5jdGlvbiB0ZXN0VHJpcGxlU2hhZG93U3VidHJlZXMoY2FsbElmRG9uZSkg
eworICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdleHBlY3QtY29udGFpbmVyJykuaW5uZXJI
VE1MID0gIjxkaXY+PHNwYW4+QkVGT1JFPC9zcGFuPjxzcGFuPk1JRDwvc3Bhbj48c3Bhbj5BRlRF
Ujwvc3Bhbj48L2Rpdj4iOworCisgICAgdmFyIHJvb3QgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50
KCdkaXYnKTsKKyAgICByb290LmFwcGVuZENoaWxkKGNyZWF0ZVNwYW5XaXRoVGV4dCgnTElHSFQn
KSk7CisKKyAgICB2YXIgc3IxID0gbmV3IFdlYktpdFNoYWRvd1Jvb3Qocm9vdCk7CisgICAgc3Ix
LmFwcGVuZENoaWxkKGNyZWF0ZVNwYW5XaXRoVGV4dCgnQkVGT1JFOiBTSE9VTEQgTk9UIEJFIFJF
TkRFUkVEJykpOworICAgIHNyMS5hcHBlbmRDaGlsZChjcmVhdGVTcGFuV2l0aFRleHQoJ01JRDog
U0hPVUxEIE5PVCBCRSBSRU5ERVJFRCcpKTsKKyAgICBzcjEuYXBwZW5kQ2hpbGQoY3JlYXRlU3Bh
bldpdGhUZXh0KCdBRlRFUjogU0hPVUxEIE5PVCBCRSBSRU5ERVJFRCcpKTsKKworICAgIHZhciBz
cjIgPSBuZXcgV2ViS2l0U2hhZG93Um9vdChyb290KTsKKyAgICBzcjIuYXBwZW5kQ2hpbGQoY3Jl
YXRlU3BhbldpdGhUZXh0KCdCRUZPUkU6IFNIT1VMRCBOT1QgQkUgUkVOREVSRUQnKSk7CisgICAg
c3IyLmFwcGVuZENoaWxkKGNyZWF0ZVNwYW5XaXRoVGV4dCgnTUlEOiBTSE9VTEQgTk9UIEJFIFJF
TkRFUkVEJykpOworICAgIHNyMi5hcHBlbmRDaGlsZChjcmVhdGVTcGFuV2l0aFRleHQoJ0FGVEVS
OiBTSE9VTEQgTk9UIEJFIFJFTkRFUkVEJykpOworCisgICAgdmFyIHNyMyA9IG5ldyBXZWJLaXRT
aGFkb3dSb290KHJvb3QpOworICAgIHNyMy5hcHBlbmRDaGlsZChjcmVhdGVTcGFuV2l0aFRleHQo
J0JFRk9SRScpKTsKKyAgICBzcjMuYXBwZW5kQ2hpbGQoY3JlYXRlU3BhbldpdGhUZXh0KCdNSUQn
KSk7CisgICAgc3IzLmFwcGVuZENoaWxkKGNyZWF0ZVNwYW5XaXRoVGV4dCgnQUZURVInKSk7CisK
KyAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnYWN0dWFsLWNvbnRhaW5lcicpLmFwcGVuZENo
aWxkKHJvb3QpOworCisgICAgY2FsbElmRG9uZSgpOworfSk7CisKK3Rlc3RGdW5jcy5wdXNoKGZ1
bmN0aW9uIHRlc3RTaGFkb3dTdWJ0cmVlc1dpdGhDb250ZW50KGNhbGxJZkRvbmUpIHsKKyAgICBk
b2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZXhwZWN0LWNvbnRhaW5lcicpLmlubmVySFRNTCA9ICI8
ZGl2PjxzcGFuPkJFRk9SRTwvc3Bhbj48c3Bhbj5MSUdIVDwvc3Bhbj48c3Bhbj5BRlRFUjwvc3Bh
bj48L2Rpdj4iOworCisgICAgdmFyIHJvb3QgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYn
KTsKKyAgICByb290LmFwcGVuZENoaWxkKGNyZWF0ZVNwYW5XaXRoVGV4dCgnTElHSFQnKSk7CisK
KyAgICB2YXIgc3IxID0gbmV3IFdlYktpdFNoYWRvd1Jvb3Qocm9vdCk7CisgICAgc3IxLmFwcGVu
ZENoaWxkKGNyZWF0ZVNwYW5XaXRoVGV4dCgnQkVGT1JFOiBTSE9VTEQgTk9UIEJFIFJFTkRFUkVE
JykpOworICAgIHNyMS5hcHBlbmRDaGlsZChjcmVhdGVTcGFuV2l0aFRleHQoJ01JRDogU0hPVUxE
IE5PVCBCRSBSRU5ERVJFRCcpKTsKKyAgICBzcjEuYXBwZW5kQ2hpbGQoY3JlYXRlU3BhbldpdGhU
ZXh0KCdBRlRFUjogU0hPVUxEIE5PVCBCRSBSRU5ERVJFRCcpKTsKKworICAgIHZhciBzcjIgPSBu
ZXcgV2ViS2l0U2hhZG93Um9vdChyb290KTsKKyAgICBzcjIuYXBwZW5kQ2hpbGQoY3JlYXRlU3Bh
bldpdGhUZXh0KCdCRUZPUkUnKSk7CisgICAgc3IyLmFwcGVuZENoaWxkKGNyZWF0ZUNvbnRlbnRX
aXRoU2VsZWN0KCdzcGFuJywgJ0ZBTExCQUNLJykpOworICAgIHNyMi5hcHBlbmRDaGlsZChjcmVh
dGVTcGFuV2l0aFRleHQoJ0FGVEVSJykpOworCisgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQo
J2FjdHVhbC1jb250YWluZXInKS5hcHBlbmRDaGlsZChyb290KTsKKworICAgIGNhbGxJZkRvbmUo
KTsKK30pOworCit0ZXN0RnVuY3MucHVzaChmdW5jdGlvbiB0ZXN0U2hhZG93U3VidHJlZXNXaXRo
Q29udGVudEluT2xkZXJTdWJ0cmVlKGNhbGxJZkRvbmUpIHsKKyAgICBkb2N1bWVudC5nZXRFbGVt
ZW50QnlJZCgnZXhwZWN0LWNvbnRhaW5lcicpLmlubmVySFRNTCA9ICI8ZGl2PjxzcGFuPkJFRk9S
RTwvc3Bhbj48c3Bhbj5MSUdIVCAxPC9zcGFuPjxzcGFuPkFGVEVSPC9zcGFuPjwvZGl2PiI7CisK
KyAgICB2YXIgcm9vdCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpOworICAgIHJvb3Qu
YXBwZW5kQ2hpbGQoY3JlYXRlU3BhbldpdGhUZXh0KCdMSUdIVCAxJywgJ2MxJykpOworICAgIHJv
b3QuYXBwZW5kQ2hpbGQoY3JlYXRlU3BhbldpdGhUZXh0KCdMSUdIVCAyJywgJ2MyJykpOworCisg
ICAgdmFyIHNyMSA9IG5ldyBXZWJLaXRTaGFkb3dSb290KHJvb3QpOworICAgIHNyMS5hcHBlbmRD
aGlsZChjcmVhdGVTcGFuV2l0aFRleHQoJ0JFRk9SRTogU0hPVUxEIE5PVCBCRSBSRU5ERVJFRCcp
KTsKKyAgICBzcjEuYXBwZW5kQ2hpbGQoY3JlYXRlQ29udGVudFdpdGhTZWxlY3QoJy5jMicsICdG
QUxMQkFDSycpKTsKKyAgICBzcjEuYXBwZW5kQ2hpbGQoY3JlYXRlU3BhbldpdGhUZXh0KCdBRlRF
UjogU0hPVUxEIE5PVCBCRSBSRU5ERVJFRCcpKTsKKworICAgIHZhciBzcjIgPSBuZXcgV2ViS2l0
U2hhZG93Um9vdChyb290KTsKKyAgICBzcjIuYXBwZW5kQ2hpbGQoY3JlYXRlU3BhbldpdGhUZXh0
KCdCRUZPUkUnKSk7CisgICAgc3IyLmFwcGVuZENoaWxkKGNyZWF0ZUNvbnRlbnRXaXRoU2VsZWN0
KCcuYzEnLCAnRkFMTEJBQ0snKSk7CisgICAgc3IyLmFwcGVuZENoaWxkKGNyZWF0ZVNwYW5XaXRo
VGV4dCgnQUZURVInKSk7CisKKyAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnYWN0dWFsLWNv
bnRhaW5lcicpLmFwcGVuZENoaWxkKHJvb3QpOworCisgICAgY2FsbElmRG9uZSgpOworfSk7CisK
K3Rlc3RGdW5jcy5wdXNoKGZ1bmN0aW9uIHRlc3RTaGFkb3dTdWJ0cmVlc1dpdGhEeW5hbWljQ3Jl
YXRpb24oY2FsbElmRG9uZSkgeworICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdleHBlY3Qt
Y29udGFpbmVyJykuaW5uZXJIVE1MID0gIjxkaXY+PHNwYW4+QkVGT1JFPC9zcGFuPjxzcGFuPkxJ
R0hUIDE8L3NwYW4+PHNwYW4+TElHSFQgMjwvc3Bhbj48c3Bhbj5BRlRFUjwvc3Bhbj48L2Rpdj4i
OworCisgICAgdmFyIHJvb3QgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTsKKyAgICBy
b290LmFwcGVuZENoaWxkKGNyZWF0ZVNwYW5XaXRoVGV4dCgnTElHSFQgMScsICdjMScpKTsKKyAg
ICByb290LmFwcGVuZENoaWxkKGNyZWF0ZVNwYW5XaXRoVGV4dCgnTElHSFQgMicsICdjMicpKTsK
KworICAgIHZhciBzcjEgPSBuZXcgV2ViS2l0U2hhZG93Um9vdChyb290KTsKKyAgICBzcjEuYXBw
ZW5kQ2hpbGQoY3JlYXRlU3BhbldpdGhUZXh0KCdCRUZPUkU6IFNIT1VMRCBOT1QgQkUgUkVOREVS
RUQnKSk7CisgICAgc3IxLmFwcGVuZENoaWxkKGNyZWF0ZUNvbnRlbnRXaXRoU2VsZWN0KCdzcGFu
JywgJ0ZBTExCQUNLJykpOworICAgIHNyMS5hcHBlbmRDaGlsZChjcmVhdGVTcGFuV2l0aFRleHQo
J0FGVEVSOiBTSE9VTEQgTk9UIEJFIFJFTkRFUkVEJykpOworCisgICAgZG9jdW1lbnQuZ2V0RWxl
bWVudEJ5SWQoJ2FjdHVhbC1jb250YWluZXInKS5hcHBlbmRDaGlsZChyb290KTsKKworICAgIHNl
dFRpbWVvdXQoKGZ1bmN0aW9uKGNhbGxJZkRvbmUsIHJvb3QpIHsgcmV0dXJuIGZ1bmN0aW9uKCkg
eworICAgICAgICB2YXIgc3IyID0gbmV3IFdlYktpdFNoYWRvd1Jvb3Qocm9vdCk7CisgICAgICAg
IHNyMi5hcHBlbmRDaGlsZChjcmVhdGVTcGFuV2l0aFRleHQoJ0JFRk9SRScpKTsKKyAgICAgICAg
c3IyLmFwcGVuZENoaWxkKGNyZWF0ZUNvbnRlbnRXaXRoU2VsZWN0KCdzcGFuJywgJ0ZBTExCQUNL
JykpOworICAgICAgICBzcjIuYXBwZW5kQ2hpbGQoY3JlYXRlU3BhbldpdGhUZXh0KCdBRlRFUicp
KTsKKworICAgICAgICBjYWxsSWZEb25lKCk7CisgICAgfTt9KShjYWxsSWZEb25lLCByb290KSwg
MCk7Cit9KTsKKwordGVzdEZ1bmNzLnB1c2goZnVuY3Rpb24gdGVzdFNoYWRvd1N1YnRyZWVzV2l0
aER5bmFtaWNDcmVhdGlvbk91dE9mVHJlZShjYWxsSWZEb25lKSB7CisgICAgZG9jdW1lbnQuZ2V0
RWxlbWVudEJ5SWQoJ2V4cGVjdC1jb250YWluZXInKS5pbm5lckhUTUwgPSAiPGRpdj48c3Bhbj5C
RUZPUkU8L3NwYW4+PHNwYW4+TElHSFQgMTwvc3Bhbj48c3Bhbj5MSUdIVCAyPC9zcGFuPjxzcGFu
PkFGVEVSPC9zcGFuPjwvZGl2PiI7CisKKyAgICB2YXIgcm9vdCA9IGRvY3VtZW50LmNyZWF0ZUVs
ZW1lbnQoJ2RpdicpOworICAgIHJvb3QuYXBwZW5kQ2hpbGQoY3JlYXRlU3BhbldpdGhUZXh0KCdM
SUdIVCAxJywgJ2MxJykpOworICAgIHJvb3QuYXBwZW5kQ2hpbGQoY3JlYXRlU3BhbldpdGhUZXh0
KCdMSUdIVCAyJywgJ2MyJykpOworCisgICAgdmFyIHNyMSA9IG5ldyBXZWJLaXRTaGFkb3dSb290
KHJvb3QpOworICAgIHNyMS5hcHBlbmRDaGlsZChjcmVhdGVTcGFuV2l0aFRleHQoJ0JFRk9SRTog
U0hPVUxEIE5PVCBCRSBSRU5ERVJFRCcpKTsKKyAgICBzcjEuYXBwZW5kQ2hpbGQoY3JlYXRlQ29u
dGVudFdpdGhTZWxlY3QoJ3NwYW4nLCAnRkFMTEJBQ0snKSk7CisgICAgc3IxLmFwcGVuZENoaWxk
KGNyZWF0ZVNwYW5XaXRoVGV4dCgnQUZURVI6IFNIT1VMRCBOT1QgQkUgUkVOREVSRUQnKSk7CisK
KyAgICBzZXRUaW1lb3V0KChmdW5jdGlvbihjYWxsSWZEb25lLCByb290KSB7IHJldHVybiBmdW5j
dGlvbigpIHsKKyAgICAgICAgdmFyIHNyMiA9IG5ldyBXZWJLaXRTaGFkb3dSb290KHJvb3QpOwor
ICAgICAgICBzcjIuYXBwZW5kQ2hpbGQoY3JlYXRlU3BhbldpdGhUZXh0KCdCRUZPUkUnKSk7Cisg
ICAgICAgIHNyMi5hcHBlbmRDaGlsZChjcmVhdGVDb250ZW50V2l0aFNlbGVjdCgnc3BhbicsICdG
QUxMQkFDSycpKTsKKyAgICAgICAgc3IyLmFwcGVuZENoaWxkKGNyZWF0ZVNwYW5XaXRoVGV4dCgn
QUZURVInKSk7CisKKyAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2FjdHVhbC1jb250
YWluZXInKS5hcHBlbmRDaGlsZChyb290KTsKKworICAgICAgICBjYWxsSWZEb25lKCk7CisgICAg
fTt9KShjYWxsSWZEb25lLCByb290KSwgMCk7Cit9KTsKKzwvc2NyaXB0PgorPC9oZWFkPgorPGJv
ZHkgb25sb2FkPSJkb1Rlc3QodGVzdEZ1bmNzKSI+CisKKzxkaXYgaWQ9ImFjdHVhbC1jb250YWlu
ZXIiIGNsYXNzPSJjb250YWluZXIiPjwvZGl2PgorPGRpdiBpZD0iZXhwZWN0LWNvbnRhaW5lciIg
Y2xhc3M9ImNvbnRhaW5lciI+PC9kaXY+Cis8cHJlIGlkPSJjb25zb2xlIj48L3ByZT4KKworPC9i
b2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9kb20vc2hhZG93L211
bHRpcGxlLXNoYWRvd3Jvb3QuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvZG9tL3NoYWRvdy9tdWx0
aXBsZS1zaGFkb3dyb290Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNDA5YmVjMDc2YWUzYjFmY2QxMmU5NzQ4
NDQzNjYyYzgwODEwYmRmYgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZG9t
L3NoYWRvdy9tdWx0aXBsZS1zaGFkb3dyb290Lmh0bWwKQEAgLTAsMCArMSwzNSBAQAorPCFET0NU
WVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorPHNjcmlwdCBzcmM9Ii4uLy4uL2pzL3Jlc291cmNl
cy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxzY3JpcHQ+Citk
ZXNjcmlwdGlvbigiVGhpcyB0ZXN0IGVuc3VyZSB0aGF0IHRoZSBtdWx0aXBsZSBzaGFkb3cgcm9v
dCBpcyBhdmFpbGFibGUuIik7CisKK2ludGVybmFscy5zZXRNdWx0aXBsZVNoYWRvd1N1YnRyZWVz
RW5hYmxlZCh0cnVlKTsKKwordmFyIGRpdiA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2Rpdicp
Oworc2hvdWxkQmUoImludGVybmFscy5zaGFkb3dSb290KGRpdikiLCAibnVsbCIpOwordmFyIHNo
YWRvd1Jvb3QxID0gbmV3IFdlYktpdFNoYWRvd1Jvb3QoZGl2KTsKK3Nob3VsZEJlKCJpbnRlcm5h
bHMuc2hhZG93Um9vdChkaXYpIiwgInNoYWRvd1Jvb3QxIik7CitzaG91bGRCZSgiaW50ZXJuYWxz
Lm9sZGVyU2hhZG93Um9vdChzaGFkb3dSb290MSkiLCAibnVsbCIpOworCit2YXIgc2hhZG93Um9v
dDIgPSBuZXcgV2ViS2l0U2hhZG93Um9vdChkaXYpCitzaG91bGRCZSgiaW50ZXJuYWxzLnNoYWRv
d1Jvb3QoZGl2KSIsICJzaGFkb3dSb290MiIpOworc2hvdWxkQmUoImludGVybmFscy5vbGRlclNo
YWRvd1Jvb3Qoc2hhZG93Um9vdDIpIiwgInNoYWRvd1Jvb3QxIik7CisKK3ZhciBzaGFkb3dSb290
MyA9IG5ldyBXZWJLaXRTaGFkb3dSb290KGRpdik7CitzaG91bGRCZSgiaW50ZXJuYWxzLnNoYWRv
d1Jvb3QoZGl2KSIsICJzaGFkb3dSb290MyIpOworc2hvdWxkQmUoImludGVybmFscy5vbGRlclNo
YWRvd1Jvb3Qoc2hhZG93Um9vdDMpIiwgInNoYWRvd1Jvb3QyIik7CisKK2ludGVybmFscy5yZW1v
dmVTaGFkb3dSb290KGRpdik7CitzaG91bGRCZSgiaW50ZXJuYWxzLnNoYWRvd1Jvb3QoZGl2KSIs
ICJudWxsIik7CisKK2ludGVybmFscy5zZXRNdWx0aXBsZVNoYWRvd1N1YnRyZWVzRW5hYmxlZChm
YWxzZSk7CisKK3ZhciBzdWNjZXNzZnVsbHlQYXJzZWQgPSB0cnVlOworPC9zY3JpcHQ+Cis8c2Ny
aXB0IHNyYz0iLi4vLi4vanMvcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+Cis8
L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9lZmwvU2tp
cHBlZCBiL0xheW91dFRlc3RzL3BsYXRmb3JtL2VmbC9Ta2lwcGVkCmluZGV4IDFjYTA2YjAxODlm
ZmE1MjljMDk4MjA3NWRiYzJiMThmZTI3ZjA4NDIuLmJhYjFmMzhiMTdmNzRkM2UwYTk0YTAwNDAw
N2QwZDBkNDViZmYzYzAgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3BsYXRmb3JtL2VmbC9Ta2lw
cGVkCisrKyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL2VmbC9Ta2lwcGVkCkBAIC0xOTc4LDYgKzE5
NzgsOCBAQCBmYXN0L2RvbS9zaGFkb3cvc2hhZG93LXJvb3QtanMtYXBpLmh0bWwKIGZhc3QvZG9t
L3NoYWRvdy9zaGFkb3ctZGlzYWJsZS5odG1sCiBmYXN0L2RvbS9zaGFkb3cvc2hhZG93LXJvb3Qt
YXR0YWNoZWQuaHRtbAogZmFzdC9kb20vc2hhZG93L3NoYWRvdy1yb290LW5ldy5odG1sCitmYXN0
L2RvbS9zaGFkb3cvbXVsdGlwbGUtc2hhZG93cm9vdC5odG1sCitmYXN0L2RvbS9zaGFkb3cvbXVs
dGlwbGUtc2hhZG93cm9vdC1yZW5kZXJpbmcuaHRtbAogCiAjIENTUyBGaWx0ZXJzIHN1cHBvcnQg
bm90IHlldCBlbmFibGVkIChuZWVkcyBFTkFCTEVfQ1NTX0ZJTFRFUlMpLgogIyBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9Njg0NjkKZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL3BsYXRmb3JtL2d0ay9Ta2lwcGVkIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vZ3RrL1NraXBw
ZWQKaW5kZXggNDFhODUzNWE0MzYzZTQ0NGY5N2Q0MWFjNGNmMzUyODA4YzA5NTlkMi4uYThhODE5
ZTMzOTNlOTIyNjc2ZjkwOGVmZjIyYjQ2MTlkNzhjYzU0OSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVz
dHMvcGxhdGZvcm0vZ3RrL1NraXBwZWQKKysrIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vZ3RrL1Nr
aXBwZWQKQEAgLTM2MSw2ICszNjEsOCBAQCBmYXN0L2RvbS9zaGFkb3cvc2hhZG93LXJvb3QtanMt
YXBpLmh0bWwKIGZhc3QvZG9tL3NoYWRvdy9zaGFkb3ctZGlzYWJsZS5odG1sCiBmYXN0L2RvbS9z
aGFkb3cvc2hhZG93LXJvb3QtYXR0YWNoZWQuaHRtbAogZmFzdC9kb20vc2hhZG93L3NoYWRvdy1y
b290LW5ldy5odG1sCitmYXN0L2RvbS9zaGFkb3cvbXVsdGlwbGUtc2hhZG93cm9vdC5odG1sCitm
YXN0L2RvbS9zaGFkb3cvbXVsdGlwbGUtc2hhZG93cm9vdC1yZW5kZXJpbmcuaHRtbAogCiAjIENT
UyBSZWdpb25zIHN1cHBvcnQgbm90IHlldCBlbmFibGVkLiBodHRwOi8vd2Via2l0Lm9yZy9iLzU3
MzEyCiBmYXN0L3JlZ2lvbnMKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy9T
a2lwcGVkIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL1NraXBwZWQKaW5kZXggYTFlYzY0MTVl
NWQyOTM4OGQwZWQ1ODZjM2IzOWI5NGJiOWI5NjZiZi4uZTAzODcwZDZhZTQ3MGFkMTFhYWY4NjEw
OGNiZGFmNmQ0ZmVmNjkwMSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL1Nr
aXBwZWQKKysrIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL1NraXBwZWQKQEAgLTQyOSw2ICs0
MjksOCBAQCBmYXN0L2RvbS9zaGFkb3cvc2hhZG93LXJvb3QtanMtYXBpLmh0bWwKIGZhc3QvZG9t
L3NoYWRvdy9zaGFkb3ctZGlzYWJsZS5odG1sCiBmYXN0L2RvbS9zaGFkb3cvc2hhZG93LXJvb3Qt
YXR0YWNoZWQuaHRtbAogZmFzdC9kb20vc2hhZG93L3NoYWRvdy1yb290LW5ldy5odG1sCitmYXN0
L2RvbS9zaGFkb3cvbXVsdGlwbGUtc2hhZG93cm9vdC5odG1sCitmYXN0L2RvbS9zaGFkb3cvbXVs
dGlwbGUtc2hhZG93cm9vdC1yZW5kZXJpbmcuaHRtbAogCiAjIEpTQyBkb2VzIG5vdCBzdXBwb3J0
IHNldElzb2xhdGVkV29ybGRTZWN1cml0eU9yaWdpbiAoaHR0cDovL3dlYmtpdC5vcmcvYi82MTU0
MCkKIGh0dHAvdGVzdHMvc2VjdXJpdHkvaXNvbGF0ZWRXb3JsZC9jcm9zcy1vcmlnaW4teGhyLmh0
bWwKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL3F0L1NraXBwZWQgYi9MYXlvdXRU
ZXN0cy9wbGF0Zm9ybS9xdC9Ta2lwcGVkCmluZGV4IDIxMDczMzE4ZDBmYzU5OGZlYjkxNDQ4Y2Y4
YmU1ZTBjMDBjNTgzYTMuLjEwNGE3MGViYmYwYWU3ZGMwN2E3NzA1Zjg2MTJiZmRkM2NkMDg3NjMg
MTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3BsYXRmb3JtL3F0L1NraXBwZWQKKysrIGIvTGF5b3V0
VGVzdHMvcGxhdGZvcm0vcXQvU2tpcHBlZApAQCAtMTY1LDYgKzE2NSw4IEBAIGZhc3QvZG9tL3No
YWRvdy9zaGFkb3ctcm9vdC1qcy1hcGkuaHRtbAogZmFzdC9kb20vc2hhZG93L3NoYWRvdy1kaXNh
YmxlLmh0bWwKIGZhc3QvZG9tL3NoYWRvdy9zaGFkb3ctcm9vdC1hdHRhY2hlZC5odG1sCiBmYXN0
L2RvbS9zaGFkb3cvc2hhZG93LXJvb3QtbmV3Lmh0bWwKK2Zhc3QvZG9tL3NoYWRvdy9tdWx0aXBs
ZS1zaGFkb3dyb290Lmh0bWwKK2Zhc3QvZG9tL3NoYWRvdy9tdWx0aXBsZS1zaGFkb3dyb290LXJl
bmRlcmluZy5odG1sCiAKICMgQ1NTIFJlZ2lvbnMgc3VwcG9ydCBub3QgeWV0IGVuYWJsZWQuIGh0
dHA6Ly93ZWJraXQub3JnL2IvNTczMTIKIGZhc3QvcmVnaW9ucwpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvcGxhdGZvcm0vd2luL1NraXBwZWQgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS93aW4vU2tp
cHBlZAppbmRleCAzMWIyYzI3YmE1MWI1OGRhYjkxNjVkYjJjZTdlOTA1YzlmZjEzZDZkLi42ZTFl
MzhjOWU4MmZiZjJiYjAyM2U2ODUwNDY1N2EwZDMyOTkxZjUyIDEwMDY0NAotLS0gYS9MYXlvdXRU
ZXN0cy9wbGF0Zm9ybS93aW4vU2tpcHBlZAorKysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS93aW4v
U2tpcHBlZApAQCAtMTQ1OCw2ICsxNDU4LDggQEAgZmFzdC9kb20vc2hhZG93L3NoYWRvdy1yb290
LWpzLWFwaS5odG1sCiBmYXN0L2RvbS9zaGFkb3cvc2hhZG93LWRpc2FibGUuaHRtbAogZmFzdC9k
b20vc2hhZG93L3NoYWRvdy1yb290LWF0dGFjaGVkLmh0bWwKIGZhc3QvZG9tL3NoYWRvdy9zaGFk
b3ctcm9vdC1uZXcuaHRtbAorZmFzdC9kb20vc2hhZG93L211bHRpcGxlLXNoYWRvd3Jvb3QuaHRt
bAorZmFzdC9kb20vc2hhZG93L211bHRpcGxlLXNoYWRvd3Jvb3QtcmVuZGVyaW5nLmh0bWwKIAog
IyBDU1MgUmVnaW9ucyBzdXBwb3J0IG5vdCB5ZXQgZW5hYmxlZC4gaHR0cDovL3dlYmtpdC5vcmcv
Yi81NzMxMgogZmFzdC9yZWdpb25zCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS93
aW5jYWlyby9Ta2lwcGVkIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vd2luY2Fpcm8vU2tpcHBlZApp
bmRleCBlNmVkODc5ZWUwOWYxNDA0MjFlN2ZmNjc0MzQ0OGVlZTVlNmViYjRmLi45ZTNjNjdiOWNk
YzljZDg5NjZmY2VmNGI0NTQ0ZjU0M2FiOWE4ZjEyIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9w
bGF0Zm9ybS93aW5jYWlyby9Ta2lwcGVkCisrKyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL3dpbmNh
aXJvL1NraXBwZWQKQEAgLTE5NjksNiArMTk2OSw4IEBAIGZhc3QvZG9tL3NoYWRvdy9zaGFkb3ct
cm9vdC1qcy1hcGkuaHRtbAogZmFzdC9kb20vc2hhZG93L3NoYWRvdy1kaXNhYmxlLmh0bWwKIGZh
c3QvZG9tL3NoYWRvdy9zaGFkb3ctcm9vdC1hdHRhY2hlZC5odG1sCiBmYXN0L2RvbS9zaGFkb3cv
c2hhZG93LXJvb3QtbmV3Lmh0bWwKK2Zhc3QvZG9tL3NoYWRvdy9tdWx0aXBsZS1zaGFkb3dyb290
Lmh0bWwKK2Zhc3QvZG9tL3NoYWRvdy9tdWx0aXBsZS1zaGFkb3dyb290LXJlbmRlcmluZy5odG1s
CiAKICMgQ1NTIFJlZ2lvbnMgc3VwcG9ydCBub3QgeWV0IGVuYWJsZWQuIGh0dHA6Ly93ZWJraXQu
b3JnL2IvNTczMTIKIGZhc3QvcmVnaW9ucwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZv
cm0vd2syL1NraXBwZWQgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS93azIvU2tpcHBlZAppbmRleCBk
MjI0NzNiMmVhNTU4ODcyMzJkNDQ3NTVkZTlkNjlhMTVmM2UzMTc1Li45M2ZkNjQ1NDU2NGJlYTIx
N2UyOTE4Y2M1NDVmMjQ2MjliMDI5NjExIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9wbGF0Zm9y
bS93azIvU2tpcHBlZAorKysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS93azIvU2tpcHBlZApAQCAt
MTA3OCw2ICsxMDc4LDggQEAgZmFzdC9kb20vc2hhZG93L3NoYWRvdy1yb290LWpzLWFwaS5odG1s
CiBmYXN0L2RvbS9zaGFkb3cvc2hhZG93LWRpc2FibGUuaHRtbAogZmFzdC9kb20vc2hhZG93L3No
YWRvdy1yb290LWF0dGFjaGVkLmh0bWwKIGZhc3QvZG9tL3NoYWRvdy9zaGFkb3ctcm9vdC1uZXcu
aHRtbAorZmFzdC9kb20vc2hhZG93L211bHRpcGxlLXNoYWRvd3Jvb3QuaHRtbAorZmFzdC9kb20v
c2hhZG93L211bHRpcGxlLXNoYWRvd3Jvb3QtcmVuZGVyaW5nLmh0bWwKIAogIyBXVFIgbmVlZHMg
YW4gaW1wbGVtZW50YXRpb24gZm9yIGV2ZW50U2VuZGVyLmNvbnRpbnVvdXNNb3VzZVNjcm9sbEJ5
CiAjIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD02OTQxNwpkaWZmIC0t
Z2l0IGEvQ2hhbmdlTG9nIGIvQ2hhbmdlTG9nCmluZGV4IDQzYmNlYjNiYWE3ZDAxNzBhOWIxN2Yw
ZWFhZGQwYTVmYjc5NzQ1MmMuLmRiZTk1YTczMGY4OTE5OWViNzE4ODFkM2NkNGRkZDMzYjBmZWVh
MjQgMTAwNjQ0Ci0tLSBhL0NoYW5nZUxvZworKysgYi9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMiBA
QAorMjAxMi0wMi0yMyAgU2hpbnlhIEthd2FuYWthICA8c2hpbnlha0BjaHJvbWl1bS5vcmc+CisK
KyAgICAgICAgRWxlbWVudCBzaG91bGQgYmUgYWJsZSB0byBoYXZlIG11bHRpcGxlIHNoYWRvdyBy
b290cy4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTc3
OTMxCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBT
b3VyY2UvYXV0b3Rvb2xzL3N5bWJvbHMuZmlsdGVyOgorCiAyMDEyLTAyLTIzICBLb25yYWQgUGlh
c2NpayAgPGtwaWFzY2lrQHJpbS5jb20+CiAKICAgICAgICAgVXBzdHJlYW0gQmxhY2tCZXJyeSBD
b29raWUgTWFuYWdlbWVudCBDbGFzc2VzCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>128670</attachid>
            <date>2012-02-24 00:08:39 -0800</date>
            <delta_ts>2012-02-28 01:01:08 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-77931-20120224170838.patch</filename>
            <type>text/plain</type>
            <size>38978</size>
            <attacher name="Shinya Kawanaka">shinyak</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTA4NzM3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNTE3NjljYjE5OTUzNGNh
NjVmN2NjZGMzMGUyZDk4MTE0ZjgyOTNmZS4uZTQ1YTExMzk1OTYyYzU3ZWUzMmY0YzA5YWJhODg3
ZWYyYzBlZWU4ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDU5IEBACisyMDEyLTAyLTI0ICBTaGlu
eWEgS2F3YW5ha2EgIDxzaGlueWFrQGNocm9taXVtLm9yZz4KKworICAgICAgICBFbGVtZW50IHNo
b3VsZCBiZSBhYmxlIHRvIGhhdmUgbXVsdGlwbGUgc2hhZG93IHJvb3RzLgorICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9Nzc5MzEKKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGlzIHBhdGNoIGVuYWJsZXMgdXMg
dG8gYWRkIG11bHRpcGxlIHNoYWRvdyBzdWJ0cmVlcyBpbnRvIGVsZW1lbnRzLgorICAgICAgICBO
b3RlIHRoYXQgbXVsdGlwbGUgc2hhZG93IHN1YnRyZWVzIGFyZSBlbmFibGVkCisgICAgICAgIG9u
bHkgaWYgUnVudGltZUVuYWJsZWRGZWF0dXJlczo6bXVsdGlwbGVTaGFkb3dTdWJ0cmVlcyBpcyBl
bmFibGVkLgorCisgICAgICAgIFNpbmNlIHdlIGRvbid0IGhhdmUgPHNoYWRvdz4gZWxlbWVudCB5
ZXQsIG9ubHkgdGhlIHlvdW5nZXN0IHNoYWRvdyB0cmVlCisgICAgICAgIHdpbGwgYmUgcmVuZGVy
ZWQuIFRoaXMgcGF0Y2ggaW5jbHVkZXMgdGVzdHMgdG8gY29uZmlybSBhZGRpbmcgYSBuZXcgc2hh
ZG93CisgICAgICAgIHRyZWUgZHluYW1pY2FsbHkgdG8gY29uZmlybSBvbmx5IHRoZSB5b3VuZ2Vz
dCBzaGFkb3cgdHJlZSBpcyByZW5kZXJlcmVkLgorCisgICAgICAgIFRlc3RzOiBmYXN0L2RvbS9z
aGFkb3cvbXVsdGlwbGUtc2hhZG93cm9vdC1yZW5kZXJpbmcuaHRtbAorICAgICAgICAgICAgICAg
ZmFzdC9kb20vc2hhZG93L211bHRpcGxlLXNoYWRvd3Jvb3QuaHRtbAorCisgICAgICAgICogV2Vi
Q29yZS5leHAuaW46CisgICAgICAgICogZG9tL0VsZW1lbnQuY3BwOgorICAgICAgICAgIFVzZXMg
U2hhZG93Um9vdExpc3QgaW50ZXJmYWNlcyBkaXJlY3RseSBpbnN0ZWFkIG9mIFNoYWRvd1Jvb3RM
aXN0IGVtdWxhdGlvbiBtZXRob2RzLgorICAgICAgICAoV2ViQ29yZTo6RWxlbWVudDo6fkVsZW1l
bnQpOgorICAgICAgICAoV2ViQ29yZTo6RWxlbWVudDo6YXR0YWNoKToKKyAgICAgICAgKFdlYkNv
cmU6OkVsZW1lbnQ6OmFkZFNoYWRvd1Jvb3QpOgorICAgICAgICAoV2ViQ29yZTo6RWxlbWVudDo6
cmVtb3ZlU2hhZG93Um9vdExpc3QpOgorICAgICAgICAqIGRvbS9FbGVtZW50Lmg6CisgICAgICAg
IChFbGVtZW50KToKKyAgICAgICAgKiBkb20vTm9kZVJlbmRlcmluZ0NvbnRleHQuY3BwOgorICAg
ICAgICAgIE1ha2VzIG5vbi15b3VuZ2VzdCBzaGFkb3cgc3VidHJlZXMgaGlkZGVuLgorICAgICAg
ICAoV2ViQ29yZTo6Tm9kZVJlbmRlcmluZ0NvbnRleHQ6Ok5vZGVSZW5kZXJpbmdDb250ZXh0KToK
KyAgICAgICAgKFdlYkNvcmU6Ok5vZGVSZW5kZXJpbmdDb250ZXh0Ojpob3N0Q2hpbGRyZW5DaGFu
Z2VkKToKKyAgICAgICAgICBTaW5jZSBub24teW91bmdlc3QgY2hpbGRyZW4gbWF5IGJlIGNoYW5n
ZWQsIG1ha2Ugc3VyZSBob3N0IGNoaWxkcmVuIGFyZSBjaGFuZ2VkLgorICAgICAgICAqIGRvbS9T
aGFkb3dSb290LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNoYWRvd1Jvb3Q6OmNyZWF0ZSk6Cisg
ICAgICAgICogZG9tL1NoYWRvd1Jvb3QuaDoKKyAgICAgICAgICBVdGlsaXR5IG1ldGhvZHMgdG8g
bWFrZSBjb2RlIGludGVudGlvbiBjbGVhciBhcmUgYWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpT
aGFkb3dSb290Ojp5b3VuZ2VyU2hhZG93Um9vdCk6CisgICAgICAgIChXZWJDb3JlOjpTaGFkb3dS
b290OjpvbGRlclNoYWRvd1Jvb3QpOgorICAgICAgICAoU2hhZG93Um9vdCk6CisgICAgICAgIChX
ZWJDb3JlOjpTaGFkb3dSb290Ojppc1lvdW5nZXN0KToKKyAgICAgICAgKFdlYkNvcmU6OlNoYWRv
d1Jvb3Q6OmlzT2xkZXN0KToKKyAgICAgICAgKiBkb20vU2hhZG93Um9vdExpc3QuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6U2hhZG93Um9vdExpc3Q6OnBvcFNoYWRvd1Jvb3QpOgorICAgICAgICAo
V2ViQ29yZTo6U2hhZG93Um9vdExpc3Q6OmF0dGFjaCk6CisgICAgICAgIChXZWJDb3JlOjpTaGFk
b3dSb290TGlzdDo6ZGV0YWNoKToKKyAgICAgICAgICBEZXRhY2hlcyBzaGFkb3cgc3VidHJlZXMu
CisgICAgICAgICogdGVzdGluZy9JbnRlcm5hbHMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW50
ZXJuYWxzOjphZGRyZXNzKToKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6
SW50ZXJuYWxzOjp5b3VuZ2VyU2hhZG93Um9vdCk6CisgICAgICAgIChXZWJDb3JlOjpJbnRlcm5h
bHM6Om9sZGVyU2hhZG93Um9vdCk6CisgICAgICAgIChXZWJDb3JlOjpJbnRlcm5hbHM6OnJlbW92
ZVNoYWRvd1Jvb3QpOgorICAgICAgICAqIHRlc3RpbmcvSW50ZXJuYWxzLmg6CisgICAgICAgIChJ
bnRlcm5hbHMpOgorICAgICAgICAqIHRlc3RpbmcvSW50ZXJuYWxzLmlkbDoKKwogMjAxMi0wMi0y
MyAgUGF2ZWwgRmVsZG1hbiAgPHBmZWxkbWFuQGNocm9taXVtLm9yZz4KIAogICAgICAgICBXZWIg
SW5zcGVjdG9yOiBoaWRlIGNvbG9yIHBpY2tlciB1cG9uIHBhbmVsIHN3aXRjaC4KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpp
bmRleCAyNmVmYjQwMGU5ZjE4NWI4ZGMzMDI0OGM2OGI3ZDQ3YzQ0ZmZhOTdlLi42N2U0NDIzYTI5
M2RkNTU0OGI4ZDAzMDYyOTQ4YmQ0MTkzNjE1NTIwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
Mi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTMg
QEAKKzIwMTItMDItMjQgIFNoaW55YSBLYXdhbmFrYSAgPHNoaW55YWtAY2hyb21pdW0ub3JnPgor
CisgICAgICAgIEVsZW1lbnQgc2hvdWxkIGJlIGFibGUgdG8gaGF2ZSBtdWx0aXBsZSBzaGFkb3cg
cm9vdHMuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03
NzkzMQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICog
d2luL1dlYktpdDIuZGVmOgorICAgICAgICAqIHdpbi9XZWJLaXQyQ0ZMaXRlLmRlZjoKKwogMjAx
Mi0wMi0yMyAgQW5keSBFc3RlcyAgPGFlc3Rlc0BhcHBsZS5jb20+CiAKICAgICAgICAgUmVuYW1l
IFtzZXRTfHNddXBwcmVzc0luY3JlbWVudGFsUmVuZGVyaW5nIHRvIFtzZXRTfHNddXBwcmVzc2Vz
SW5jcmVtZW50YWxSZW5kZXJpbmcgYW5kIG1ha2UgaXQgV2ViUHJlZmVyZW5jZXMgQVBJLgpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5leHAuaW4gYi9Tb3VyY2UvV2ViQ29yZS9X
ZWJDb3JlLmV4cC5pbgppbmRleCBlODEyZmZmZjY1YTk0MzE1NDYxYjA5OGNjNDFiZGRjOTFlYzgx
NTZlLi5hODRlYmFiNDI0M2I4Mjc4N2IxOTUxYjZhMjU4Y2JkZGNkM2M2Nzk4IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmV4cC5pbgorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJD
b3JlLmV4cC5pbgpAQCAtOTE1LDcgKzkxNSw3IEBAIF9fWk43V2ViQ29yZTZXaWRnZXREMkV2CiBf
X1pON1dlYkNvcmU2dG9Ob2RlRU4zSlNDN0pTVmFsdWVFCiBfX1pON1dlYkNvcmU3Q29uc29sZTIx
c2hvdWxkUHJpbnRFeGNlcHRpb25zRXYKIF9fWk43V2ViQ29yZTdDb25zb2xlMjRzZXRTaG91bGRQ
cmludEV4Y2VwdGlvbnNFYgotX19aTjdXZWJDb3JlN0VsZW1lbnQxNnJlbW92ZVNoYWRvd1Jvb3RF
dgorX19aTjdXZWJDb3JlN0VsZW1lbnQyMHJlbW92ZVNoYWRvd1Jvb3RMaXN0RXYKIF9fWk43V2Vi
Q29yZTdFbGVtZW50MjFib3VuZHNJblJvb3RWaWV3U3BhY2VFdgogX19aTjdXZWJDb3JlN0VsZW1l
bnQ5aW5uZXJUZXh0RXYKIF9fWk43V2ViQ29yZTdJbnRSZWN0NXNjYWxlRWYKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVt
ZW50LmNwcAppbmRleCBlZGM1YTYyZWY0MDM0YTc3ZGY5MTI5ZjU5ZGI4ZDYxNjk1ZmYxNDE0Li4w
ZjkxMTQ0YzM2M2MzMGZjMmY3OTBiODhkZDRkZmJmZjA2MDZiMDczIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9kb20vRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1l
bnQuY3BwCkBAIC02MCw2ICs2MCw3IEBACiAjaW5jbHVkZSAiUmVuZGVyUmVnaW9uLmgiCiAjaW5j
bHVkZSAiUmVuZGVyVmlldy5oIgogI2luY2x1ZGUgIlJlbmRlcldpZGdldC5oIgorI2luY2x1ZGUg
IlJ1bnRpbWVFbmFibGVkRmVhdHVyZXMuaCIKICNpbmNsdWRlICJTZXR0aW5ncy5oIgogI2luY2x1
ZGUgIlNoYWRvd1Jvb3QuaCIKICNpbmNsdWRlICJUZXh0LmgiCkBAIC0xMjIsNyArMTIzLDcgQEAg
UGFzc1JlZlB0cjxFbGVtZW50PiBFbGVtZW50OjpjcmVhdGUoY29uc3QgUXVhbGlmaWVkTmFtZSYg
dGFnTmFtZSwgRG9jdW1lbnQqIGRvY3UKIAogRWxlbWVudDo6fkVsZW1lbnQoKQogewotICAgIHJl
bW92ZVNoYWRvd1Jvb3QoKTsKKyAgICByZW1vdmVTaGFkb3dSb290TGlzdCgpOwogICAgIGlmICht
X2F0dHJpYnV0ZU1hcCkKICAgICAgICAgbV9hdHRyaWJ1dGVNYXAtPmRldGFjaEZyb21FbGVtZW50
KCk7CiB9CkBAIC05MzAsNyArOTMxLDcgQEAgdm9pZCBFbGVtZW50OjphdHRhY2goKQogICAgICAg
ICBwYXJlbnRQdXNoZXIucHVzaCgpOwogICAgICAgICBzaGFkb3dSb290TGlzdCgpLT5hdHRhY2go
KTsKIAotICAgICAgICAvLyBJbiBhIHNoYWRvdyB0cmVlLCBzb21lIG9mIGxpZ2h0IGNoaWxkcmVu
IG1heSBiZSBhdHRhY2hlZCBieSAnY29udGVudCcgZWxlbWVudC4KKyAgICAgICAgLy8gSW4gYSBz
aGFkb3cgdHJlZSwgc29tZSBvZiBsaWdodCBjaGlsZHJlbiBtYXkgYmUgYXR0YWNoZWQgYnkgPGNv
bnRlbnQ+IG9yIDxzaGFkb3c+LgogICAgICAgICAvLyBIb3dldmVyLCB3aGVuIHRoZXJlIGlzIG5v
IGNvbnRlbnQgZWxlbWVudCBvciBjb250ZW50IGVsZW1lbnQgZG9lcyBub3Qgc2VsZWN0CiAgICAg
ICAgIC8vIGFsbCBsaWdodCBjaGlsZHJlbiwgd2UgaGF2ZSB0byBhdHRhY2ggdGhlIHJlc3Qgb2Yg
bGlnaHQgY2hpbGRyZW4gaGVyZS4KICAgICAgICAgZm9yIChOb2RlKiBjaGlsZCA9IGZpcnN0Q2hp
bGQoKTsgY2hpbGQ7IGNoaWxkID0gY2hpbGQtPm5leHRTaWJsaW5nKCkpIHsKQEAgLTExNzMsNyAr
MTE3NCw3IEBAIHN0YXRpYyBib29sIHZhbGlkYXRlU2hhZG93Um9vdChEb2N1bWVudCogZG9jdW1l
bnQsIFNoYWRvd1Jvb3QqIHNoYWRvd1Jvb3QsIEV4Y2VwCiAgICAgcmV0dXJuIHRydWU7CiB9CiAK
LXZvaWQgRWxlbWVudDo6c2V0U2hhZG93Um9vdChQYXNzUmVmUHRyPFNoYWRvd1Jvb3Q+IHNoYWRv
d1Jvb3QsIEV4Y2VwdGlvbkNvZGUmIGVjKQordm9pZCBFbGVtZW50OjphZGRTaGFkb3dSb290KFBh
c3NSZWZQdHI8U2hhZG93Um9vdD4gc2hhZG93Um9vdCwgRXhjZXB0aW9uQ29kZSYgZWMpCiB7CiAg
ICAgaWYgKCF2YWxpZGF0ZVNoYWRvd1Jvb3QoZG9jdW1lbnQoKSwgc2hhZG93Um9vdC5nZXQoKSwg
ZWMpKQogICAgICAgICByZXR1cm47CkBAIC0xMTgxLDE4ICsxMTgyLDI0IEBAIHZvaWQgRWxlbWVu
dDo6c2V0U2hhZG93Um9vdChQYXNzUmVmUHRyPFNoYWRvd1Jvb3Q+IHNoYWRvd1Jvb3QsIEV4Y2Vw
dGlvbkNvZGUmIGVjCiAgICAgaWYgKCFoYXNSYXJlRGF0YSgpKQogICAgICAgICBlbnN1cmVSYXJl
RGF0YSgpOwogCi0gICAgcmVtb3ZlU2hhZG93Um9vdCgpOworI2lmIEVOQUJMRShTSEFET1dfRE9N
KQorICAgIEFTU0VSVCghaGFzU2hhZG93Um9vdCgpIHx8IFJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6
Om11bHRpcGxlU2hhZG93U3VidHJlZXNFbmFibGVkKCkpOworI2Vsc2UKKyAgICBBU1NFUlQoIWhh
c1NoYWRvd1Jvb3QoKSk7CisjZW5kaWYKIAogICAgIHNoYWRvd1Jvb3QtPnNldFNoYWRvd0hvc3Qo
dGhpcyk7Ci0gICAgc2hhZG93Um9vdExpc3QoKS0+cHVzaFNoYWRvd1Jvb3Qoc2hhZG93Um9vdC5n
ZXQoKSk7CiAKICAgICBpZiAoaW5Eb2N1bWVudCgpKQogICAgICAgICBzaGFkb3dSb290LT5pbnNl
cnRlZEludG9Eb2N1bWVudCgpOwogICAgIGlmIChhdHRhY2hlZCgpKSB7CiAgICAgICAgIHNoYWRv
d1Jvb3QtPmxhenlBdHRhY2goKTsKKyAgICAgICAgc2hhZG93Um9vdExpc3QoKS0+ZGV0YWNoKCk7
CiAgICAgICAgIGZvciAoTm9kZSogY2hpbGQgPSBmaXJzdENoaWxkKCk7IGNoaWxkOyBjaGlsZCA9
IGNoaWxkLT5uZXh0U2libGluZygpKQogICAgICAgICAgICAgY2hpbGQtPmRldGFjaCgpOwogICAg
IH0KKworICAgIHNoYWRvd1Jvb3RMaXN0KCktPnB1c2hTaGFkb3dSb290KHNoYWRvd1Jvb3QuZ2V0
KCkpOwogfQogCiBTaGFkb3dSb290KiBFbGVtZW50OjplbnN1cmVTaGFkb3dSb290KCkKQEAgLTEy
MDMsNyArMTIxMCw3IEBAIFNoYWRvd1Jvb3QqIEVsZW1lbnQ6OmVuc3VyZVNoYWRvd1Jvb3QoKQog
ICAgIHJldHVybiBTaGFkb3dSb290OjpjcmVhdGUodGhpcywgU2hhZG93Um9vdDo6Q3JlYXRpbmdV
c2VyQWdlbnRTaGFkb3dSb290KS5nZXQoKTsKIH0KIAotdm9pZCBFbGVtZW50OjpyZW1vdmVTaGFk
b3dSb290KCkKK3ZvaWQgRWxlbWVudDo6cmVtb3ZlU2hhZG93Um9vdExpc3QoKQogewogICAgIGlm
ICghaGFzU2hhZG93Um9vdCgpKQogICAgICAgICByZXR1cm47CkBAIC0xMjIwLDExICsxMjI3LDEy
IEBAIHZvaWQgRWxlbWVudDo6cmVtb3ZlU2hhZG93Um9vdCgpCiAgICAgICAgICAgICBvbGRSb290
LT5yZW1vdmVkRnJvbURvY3VtZW50KCk7CiAgICAgICAgIGVsc2UKICAgICAgICAgICAgIG9sZFJv
b3QtPnJlbW92ZWRGcm9tVHJlZSh0cnVlKTsKLSAgICAgICAgaWYgKGF0dGFjaGVkKCkpIHsKLSAg
ICAgICAgICAgIGZvciAoTm9kZSogY2hpbGQgPSBmaXJzdENoaWxkKCk7IGNoaWxkOyBjaGlsZCA9
IGNoaWxkLT5uZXh0U2libGluZygpKSB7Ci0gICAgICAgICAgICAgICAgaWYgKCFjaGlsZC0+YXR0
YWNoZWQoKSkKLSAgICAgICAgICAgICAgICAgICAgY2hpbGQtPmxhenlBdHRhY2goKTsKLSAgICAg
ICAgICAgIH0KKyAgICB9CisKKyAgICBpZiAoYXR0YWNoZWQoKSkgeworICAgICAgICBmb3IgKE5v
ZGUqIGNoaWxkID0gZmlyc3RDaGlsZCgpOyBjaGlsZDsgY2hpbGQgPSBjaGlsZC0+bmV4dFNpYmxp
bmcoKSkgeworICAgICAgICAgICAgaWYgKCFjaGlsZC0+YXR0YWNoZWQoKSkKKyAgICAgICAgICAg
ICAgICBjaGlsZC0+bGF6eUF0dGFjaCgpOwogICAgICAgICB9CiAgICAgfQogfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVt
ZW50LmgKaW5kZXggMzFkYTFlZGFjYzQzNTc2MjIyMTZjOTc5NWFkM2E2NTFmMTlhNTlhNi4uNmM4
NTM0Mzg3M2VmZjIwMDNjNzQxN2EwODMzNTNmZWUxNDNiNDg4MSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvZG9tL0VsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5o
CkBAIC0yNTUsMTIgKzI1NSwxMSBAQCBwdWJsaWM6CiAKICAgICBib29sIGhhc1NoYWRvd1Jvb3Qo
KSBjb25zdDsKICAgICBTaGFkb3dSb290TGlzdCogc2hhZG93Um9vdExpc3QoKSBjb25zdDsKLQot
ICAgIC8vIEZJWE1FOiBUaGVzZSBBUEkgd2lsbCBiZSBtb3ZlZCB0byBTaGFkb3dSb290TGlzdC4K
LSAgICAvLyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzgzMTMKLSAg
ICB2b2lkIHNldFNoYWRvd1Jvb3QoUGFzc1JlZlB0cjxTaGFkb3dSb290PiwgRXhjZXB0aW9uQ29k
ZSYpOworICAgIHZvaWQgYWRkU2hhZG93Um9vdChQYXNzUmVmUHRyPFNoYWRvd1Jvb3Q+LCBFeGNl
cHRpb25Db2RlJik7CisgICAgdm9pZCByZW1vdmVTaGFkb3dSb290TGlzdCgpOworICAgIC8vIEZJ
WE1FOiBlbnN1cmVTaGFkb3dSb290KCkgd2lsbCBiZSByZW1vdmVkIGxhdGVyLgorICAgIC8vIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03NzYwOAogICAgIFNoYWRvd1Jv
b3QqIGVuc3VyZVNoYWRvd1Jvb3QoKTsKLSAgICB2b2lkIHJlbW92ZVNoYWRvd1Jvb3QoKTsKIAog
ICAgIHZpcnR1YWwgY29uc3QgQXRvbWljU3RyaW5nJiBzaGFkb3dQc2V1ZG9JZCgpIGNvbnN0Owog
ICAgIHZvaWQgc2V0U2hhZG93UHNldWRvSWQoY29uc3QgQXRvbWljU3RyaW5nJiwgRXhjZXB0aW9u
Q29kZSYgPSBBU1NFUlRfTk9fRVhDRVBUSU9OKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2RvbS9Ob2RlUmVuZGVyaW5nQ29udGV4dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZVJl
bmRlcmluZ0NvbnRleHQuY3BwCmluZGV4IDY2M2Q1NWY2ODRiMWNlMzJiM2NkNmE0OWJkZGMyZDg2
OWM3MTU4N2MuLjY3MmVmNWU5Mzc2NzUwMmFmYjBjMTI3MmQ5ODFhYWQ1MzU2MDg3ZDQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlUmVuZGVyaW5nQ29udGV4dC5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvZG9tL05vZGVSZW5kZXJpbmdDb250ZXh0LmNwcApAQCAtNTcsNyArNTcs
MTIgQEAgTm9kZVJlbmRlcmluZ0NvbnRleHQ6Ok5vZGVSZW5kZXJpbmdDb250ZXh0KE5vZGUqIG5v
ZGUpCiAgICAgICAgIHJldHVybjsKIAogICAgIGlmIChwYXJlbnQtPmlzU2hhZG93Um9vdCgpKSB7
Ci0gICAgICAgIG1fcGhhc2UgPSBBdHRhY2hpbmdTaGFkb3dDaGlsZDsKKyAgICAgICAgLy8gRklY
TUU6IFdlIGRvbid0IHN1cHBvcnQgPHNoYWRvdz4geWV0LCBzbyB0aGUgbm9uLXlvdW5nZXN0IHNo
YWRvdyB3b24ndCBiZSByZW5kZXJlZC4KKyAgICAgICAgLy8gaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvZF9idWdzLmNnaT9pZD03ODU5NgorICAgICAgICBpZiAodG9TaGFkb3dSb290KHBhcmVu
dCktPmlzWW91bmdlc3QoKSkKKyAgICAgICAgICAgIG1fcGhhc2UgPSBBdHRhY2hpbmdTaGFkb3dD
aGlsZDsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgbV9waGFzZSA9IEF0dGFjaGluZ05vdERp
c3RyaWJ1dGVkOwogICAgICAgICBtX3BhcmVudE5vZGVGb3JSZW5kZXJpbmdBbmRTdHlsZSA9IHBh
cmVudC0+c2hhZG93SG9zdCgpOwogICAgICAgICByZXR1cm47CiAgICAgfQpAQCAtNjcsOSArNzIs
MTQgQEAgTm9kZVJlbmRlcmluZ0NvbnRleHQ6Ok5vZGVSZW5kZXJpbmdDb250ZXh0KE5vZGUqIG5v
ZGUpCiAgICAgICAgICAgICBtX3Zpc3VhbFBhcmVudFNoYWRvd1Jvb3RMaXN0ID0gdG9FbGVtZW50
KHBhcmVudCktPnNoYWRvd1Jvb3RMaXN0KCk7CiAgICAgICAgICAgICBpZiAoKG1faW5zZXJ0aW9u
UG9pbnQgPSBtX3Zpc3VhbFBhcmVudFNoYWRvd1Jvb3RMaXN0LT5pbnNlcnRpb25Qb2ludEZvciht
X25vZGUpKQogICAgICAgICAgICAgICAgICYmIG1fdmlzdWFsUGFyZW50U2hhZG93Um9vdExpc3Qt
PmlzU2VsZWN0b3JBY3RpdmUoKSkgewotICAgICAgICAgICAgICAgIG1fcGhhc2UgPSBBdHRhY2hp
bmdEaXN0cmlidXRlZDsKLSAgICAgICAgICAgICAgICBtX3BhcmVudE5vZGVGb3JSZW5kZXJpbmdB
bmRTdHlsZSA9IE5vZGVSZW5kZXJpbmdDb250ZXh0KG1faW5zZXJ0aW9uUG9pbnQpLnBhcmVudE5v
ZGVGb3JSZW5kZXJpbmdBbmRTdHlsZSgpOwotICAgICAgICAgICAgICAgIHJldHVybjsKKworICAg
ICAgICAgICAgICAgIC8vIEZJWE1FOiBXZSBkb24ndCBzdXBwb3J0IDxzaGFkb3c+IHlldCwgc28g
dGhlIG5vbi15b3VuZ2VzdCBzaGFkb3cgd29uJ3QgYmUgcmVuZGVyZWQuCisgICAgICAgICAgICAg
ICAgLy8gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWdzLmNnaT9pZD03ODU5NgorICAg
ICAgICAgICAgICAgIGlmICh0b1NoYWRvd1Jvb3QobV9pbnNlcnRpb25Qb2ludC0+c2hhZG93VHJl
ZVJvb3ROb2RlKCkpLT5pc1lvdW5nZXN0KCkpIHsKKyAgICAgICAgICAgICAgICAgICAgbV9waGFz
ZSA9IEF0dGFjaGluZ0Rpc3RyaWJ1dGVkOworICAgICAgICAgICAgICAgICAgICBtX3BhcmVudE5v
ZGVGb3JSZW5kZXJpbmdBbmRTdHlsZSA9IE5vZGVSZW5kZXJpbmdDb250ZXh0KG1faW5zZXJ0aW9u
UG9pbnQpLnBhcmVudE5vZGVGb3JSZW5kZXJpbmdBbmRTdHlsZSgpOworICAgICAgICAgICAgICAg
ICAgICByZXR1cm47CisgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgfQogCiAgICAgICAg
ICAgICBtX3BoYXNlID0gQXR0YWNoaW5nTm90RGlzdHJpYnV0ZWQ7CkBAIC0yNjAsNyArMjcwLDcg
QEAgUmVuZGVyT2JqZWN0KiBOb2RlUmVuZGVyaW5nQ29udGV4dDo6cGFyZW50UmVuZGVyZXIoKSBj
b25zdAogCiB2b2lkIE5vZGVSZW5kZXJpbmdDb250ZXh0Ojpob3N0Q2hpbGRyZW5DaGFuZ2VkKCkK
IHsKLSAgICBpZiAobV9waGFzZSA9PSBBdHRhY2hpbmdOb3REaXN0cmlidXRlZCkKKyAgICBpZiAo
bV9waGFzZSA9PSBBdHRhY2hpbmdOb3REaXN0cmlidXRlZCAmJiBtX3Zpc3VhbFBhcmVudFNoYWRv
d1Jvb3RMaXN0KQogICAgICAgICBtX3Zpc3VhbFBhcmVudFNoYWRvd1Jvb3RMaXN0LT5ob3N0Q2hp
bGRyZW5DaGFuZ2VkKCk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9TaGFk
b3dSb290LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9TaGFkb3dSb290LmNwcAppbmRleCA2Y2Y1
MGFjYjk4ODE0MjkzMmVhNGEwYzdhNDNlODFkZDU5OTk4OTE3Li44OGFlOTViYWQ4NzAyMTE5NGM0
Y2I1MmZjZWVlOGI0MmU5MjMxY2IyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vU2hh
ZG93Um9vdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL1NoYWRvd1Jvb3QuY3BwCkBAIC0x
MjMsNyArMTIzLDcgQEAgUGFzc1JlZlB0cjxTaGFkb3dSb290PiBTaGFkb3dSb290OjpjcmVhdGUo
RWxlbWVudCogZWxlbWVudCwgU2hhZG93Um9vdENyZWF0aW9uUHUKICAgICBSZWZQdHI8U2hhZG93
Um9vdD4gc2hhZG93Um9vdCA9IGFkb3B0UmVmKG5ldyBTaGFkb3dSb290KGVsZW1lbnQtPmRvY3Vt
ZW50KCkpKTsKIAogICAgIGVjID0gMDsKLSAgICBlbGVtZW50LT5zZXRTaGFkb3dSb290KHNoYWRv
d1Jvb3QsIGVjKTsKKyAgICBlbGVtZW50LT5hZGRTaGFkb3dSb290KHNoYWRvd1Jvb3QsIGVjKTsK
ICAgICBpZiAoZWMpCiAgICAgICAgIHJldHVybiAwOwogICAgIEFTU0VSVChlbGVtZW50ID09IHNo
YWRvd1Jvb3QtPmhvc3QoKSk7CkBAIC0xODQsMTcgKzE4NCw0IEBAIHZvaWQgU2hhZG93Um9vdDo6
c2V0QXBwbHlBdXRob3JTaGVldHMoYm9vbCB2YWx1ZSkKICAgICBtX2FwcGx5QXV0aG9yU2hlZXRz
ID0gdmFsdWU7CiB9CiAKLXZvaWQgU2hhZG93Um9vdDo6YXR0YWNoKCkKLXsKLSAgICAvLyBDaGls
ZHJlbiBvZiBtX3NlbGVjdG9yIGlzIHBvcHVsYXRlZCBsYXppbHkgaW4KLSAgICAvLyBlbnN1cmVT
ZWxlY3RvcigpLCBhbmQgaGVyZSB3ZSBqdXN0IGVuc3VyZSB0aGF0Ci0gICAgLy8gaXQgaXMgaW4g
Y2xlYW4gc3RhdGUuCi0gICAgLy8gRklYTUU6IFRoaXMgYXNzZXJ0aW9uIGJyZWFrcyBpZiBtdWx0
aXBsZSBzaGFkb3cgcm9vdHMgYXJlIGJlaW5nIGF0dGFjaGVkLgotICAgIC8vIFNoYWRvd1Jvb3RM
aXN0IHNob3VsZCBoYXZlIHJlc3BvbnNpYmlsaXR5IG9mIHNpZGUgZWZmZWN0IG9mIHNlbGVjdG9y
IGluIGF0dGFjaGluZy9kZXRhY2hpbmcuCi0gICAgQVNTRVJUKCFob3N0KCktPnNoYWRvd1Jvb3RM
aXN0KCktPnNlbGVjdG9yKCkgfHwgIWhvc3QoKS0+c2hhZG93Um9vdExpc3QoKS0+c2VsZWN0b3Io
KS0+aGFzQ2FuZGlkYXRlcygpKTsKLSAgICBEb2N1bWVudEZyYWdtZW50OjphdHRhY2goKTsKLSAg
ICBpZiAoSFRNTENvbnRlbnRTZWxlY3Rvciogc2VsZWN0b3IgPSBob3N0KCktPnNoYWRvd1Jvb3RM
aXN0KCktPnNlbGVjdG9yKCkpCi0gICAgICAgIHNlbGVjdG9yLT5kaWRTZWxlY3QoKTsKLX0KLQog
fQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL1NoYWRvd1Jvb3QuaCBiL1NvdXJjZS9X
ZWJDb3JlL2RvbS9TaGFkb3dSb290LmgKaW5kZXggOWI5ZGIxNDQyYThlOTQ4ZGJmZDkxMDhmYTVk
MDNhZGViMGZlNjdhMy4uNmUxODQxNWJiMTJjOGJkNjU3YzE5NjllMmNlZmE3Y2ZhOWVhNjVhMiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL1NoYWRvd1Jvb3QuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9kb20vU2hhZG93Um9vdC5oCkBAIC02NCwxNiArNjQsMTcgQEAgcHVibGljOgogICAg
IEluc2VydGlvblBvaW50KiBpbnNlcnRpb25Qb2ludEZvcihOb2RlKikgY29uc3Q7CiAgICAgdm9p
ZCBob3N0Q2hpbGRyZW5DaGFuZ2VkKCk7CiAKLSAgICB2aXJ0dWFsIHZvaWQgYXR0YWNoKCk7Ci0K
ICAgICB2aXJ0dWFsIGJvb2wgYXBwbHlBdXRob3JTaGVldHMoKSBjb25zdDsKICAgICB2b2lkIHNl
dEFwcGx5QXV0aG9yU2hlZXRzKGJvb2wpOwogCiAgICAgRWxlbWVudCogaG9zdCgpIGNvbnN0IHsg
cmV0dXJuIHNoYWRvd0hvc3QoKTsgfQogICAgIFNoYWRvd1Jvb3RMaXN0KiBsaXN0KCkgY29uc3Q7
CiAKLSAgICBTaGFkb3dSb290KiB5b3VuZ2VyU2hhZG93Um9vdCgpIHsgcmV0dXJuIHByZXYoKTsg
fQotICAgIFNoYWRvd1Jvb3QqIG9sZGVyU2hhZG93Um9vdCgpIHsgcmV0dXJuIG5leHQoKTsgfQor
ICAgIFNoYWRvd1Jvb3QqIHlvdW5nZXJTaGFkb3dSb290KCkgY29uc3QgeyByZXR1cm4gcHJldigp
OyB9CisgICAgU2hhZG93Um9vdCogb2xkZXJTaGFkb3dSb290KCkgY29uc3QgeyByZXR1cm4gbmV4
dCgpOyB9CisKKyAgICBib29sIGlzWW91bmdlc3QoKSBjb25zdCB7IHJldHVybiAheW91bmdlclNo
YWRvd1Jvb3QoKTsgfQorICAgIGJvb2wgaXNPbGRlc3QoKSBjb25zdCB7IHJldHVybiAhb2xkZXJT
aGFkb3dSb290KCk7IH0KIAogICAgIGJvb2wgaGFzQ29udGVudEVsZW1lbnQoKSBjb25zdDsKIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL1NoYWRvd1Jvb3RMaXN0LmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2RvbS9TaGFkb3dSb290TGlzdC5jcHAKaW5kZXggM2FkZWU2MzcwMDNmZWVlYmJk
NTNmZjcyZGMzNTdiYTExZDAzZDBmMy4uOGIxZGE1OGQyMTk3YWUwMmE0MjQyMjA0YjRjYTBiNzMw
Y2U3ZGZlYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL1NoYWRvd1Jvb3RMaXN0LmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vU2hhZG93Um9vdExpc3QuY3BwCkBAIC02Myw3ICs2
MywxMCBAQCBTaGFkb3dSb290KiBTaGFkb3dSb290TGlzdDo6cG9wU2hhZG93Um9vdCgpCiAgICAg
aWYgKCFoYXNTaGFkb3dSb290KCkpCiAgICAgICAgIHJldHVybiAwOwogCi0gICAgcmV0dXJuIG1f
c2hhZG93Um9vdHMucmVtb3ZlSGVhZCgpOworICAgIFNoYWRvd1Jvb3QqIHJvb3QgPSBtX3NoYWRv
d1Jvb3RzLnJlbW92ZUhlYWQoKTsKKyAgICByb290LT5zZXRQcmV2KDApOworICAgIHJvb3QtPnNl
dE5leHQoMCk7CisgICAgcmV0dXJuIHJvb3Q7CiB9CiAKIHZvaWQgU2hhZG93Um9vdExpc3Q6Omlu
c2VydGVkSW50b0RvY3VtZW50KCkKQEAgLTk4LDIyICsxMDEsMjEgQEAgdm9pZCBTaGFkb3dSb290
TGlzdDo6d2lsbFJlbW92ZSgpCiAKIHZvaWQgU2hhZG93Um9vdExpc3Q6OmF0dGFjaCgpCiB7Ci0g
ICAgLy8gRklYTUU6IEN1cnJlbnRseSB3ZSBvbmx5IHN1cHBvcnQgdGhlIGNhc2UgdGhhdCB0aGUg
c2hhZG93IHJvb3QgbGlzdCBoYXMgYXQgbW9zdCBvbmUgc2hhZG93IHJvb3QuCi0gICAgLy8gU2Vl
IGFsc28gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTc3NTAzIGFuZCBp
dHMgZGVwZW5kZW50IGJ1Z3MuCi0gICAgQVNTRVJUKG1fc2hhZG93Um9vdHMuc2l6ZSgpIDw9IDEp
OworICAgIC8vIENoaWxkcmVuIG9mIG1fc2VsZWN0b3IgaXMgcG9wdWxhdGVkIGxhemlseSBpbgor
ICAgIC8vIGVuc3VyZVNlbGVjdG9yKCksIGFuZCBoZXJlIHdlIGp1c3QgZW5zdXJlIHRoYXQgaXQg
aXMgaW4gY2xlYW4gc3RhdGUuCisgICAgQVNTRVJUKCFzZWxlY3RvcigpIHx8ICFzZWxlY3Rvcigp
LT5oYXNDYW5kaWRhdGVzKCkpOwogCiAgICAgZm9yIChTaGFkb3dSb290KiByb290ID0geW91bmdl
c3RTaGFkb3dSb290KCk7IHJvb3Q7IHJvb3QgPSByb290LT5vbGRlclNoYWRvd1Jvb3QoKSkgewog
ICAgICAgICBpZiAoIXJvb3QtPmF0dGFjaGVkKCkpCiAgICAgICAgICAgICByb290LT5hdHRhY2go
KTsKICAgICB9CisKKyAgICBpZiAoSFRNTENvbnRlbnRTZWxlY3RvciogY29udGVudFNlbGVjdG9y
ID0gc2VsZWN0b3IoKSkKKyAgICAgICAgY29udGVudFNlbGVjdG9yLT5kaWRTZWxlY3QoKTsKIH0K
IAogdm9pZCBTaGFkb3dSb290TGlzdDo6ZGV0YWNoKCkKIHsKLSAgICAvLyBGSVhNRTogQ3VycmVu
dGx5IHdlIG9ubHkgc3VwcG9ydCB0aGUgY2FzZSB0aGF0IHRoZSBzaGFkb3cgcm9vdCBsaXN0IGhh
cyBhdCBtb3N0IG9uZSBzaGFkb3cgcm9vdC4KLSAgICAvLyBTZWUgYWxzbyBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9Nzc1MDMgYW5kIGl0cyBkZXBlbmRlbnQgYnVncy4K
LSAgICBBU1NFUlQobV9zaGFkb3dSb290cy5zaXplKCkgPD0gMSk7Ci0KICAgICBmb3IgKFNoYWRv
d1Jvb3QqIHJvb3QgPSB5b3VuZ2VzdFNoYWRvd1Jvb3QoKTsgcm9vdDsgcm9vdCA9IHJvb3QtPm9s
ZGVyU2hhZG93Um9vdCgpKSB7CiAgICAgICAgIGlmIChyb290LT5hdHRhY2hlZCgpKQogICAgICAg
ICAgICAgcm9vdC0+ZGV0YWNoKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5n
L0ludGVybmFscy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5jcHAKaW5k
ZXggODRlOWNmNzU0MDk0OWY4ZDdlMTJiNWRkZmEwYzc4MjEyZDRiZjJhOC4uNThmYjQyNmRhMDY5
ZWRlZGU4NzA4ZjVjZWI1MjI3MmI5NGJjNDE2NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
dGVzdGluZy9JbnRlcm5hbHMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJu
YWxzLmNwcApAQCAtMTE5LDYgKzExOSwxNCBAQCBJbnRlcm5hbHM6OkludGVybmFscyhEb2N1bWVu
dCogZG9jdW1lbnQpCiAgICAgcmVzZXQoZG9jdW1lbnQpOwogfQogCitTdHJpbmcgSW50ZXJuYWxz
OjphZGRyZXNzKE5vZGUqIG5vZGUpCit7CisgICAgY2hhciBidWZbMzJdOworICAgIHNwcmludGYo
YnVmLCAiJXAiLCBub2RlKTsKKworICAgIHJldHVybiBTdHJpbmcoYnVmKTsKK30KKwogYm9vbCBJ
bnRlcm5hbHM6OmlzUHJlbG9hZGVkKERvY3VtZW50KiBkb2N1bWVudCwgY29uc3QgU3RyaW5nJiB1
cmwpCiB7CiAgICAgaWYgKCFkb2N1bWVudCkKQEAgLTI0MSw2ICsyNDksMjYgQEAgSW50ZXJuYWxz
OjpTaGFkb3dSb290SWZTaGFkb3dET01FbmFibGVkT3JOb2RlKiBJbnRlcm5hbHM6Om9sZGVzdFNo
YWRvd1Jvb3QoRWxlbWUKICAgICByZXR1cm4gaG9zdC0+c2hhZG93Um9vdExpc3QoKS0+b2xkZXN0
U2hhZG93Um9vdCgpOwogfQogCitJbnRlcm5hbHM6OlNoYWRvd1Jvb3RJZlNoYWRvd0RPTUVuYWJs
ZWRPck5vZGUqIEludGVybmFsczo6eW91bmdlclNoYWRvd1Jvb3QoTm9kZSogc2hhZG93LCBFeGNl
cHRpb25Db2RlJiBlYykKK3sKKyAgICBpZiAoIXNoYWRvdyB8fCAhc2hhZG93LT5pc1NoYWRvd1Jv
b3QoKSkgeworICAgICAgICBlYyA9IElOVkFMSURfQUNDRVNTX0VSUjsKKyAgICAgICAgcmV0dXJu
IDA7CisgICAgfQorCisgICAgcmV0dXJuIHRvU2hhZG93Um9vdChzaGFkb3cpLT55b3VuZ2VyU2hh
ZG93Um9vdCgpOworfQorCitJbnRlcm5hbHM6OlNoYWRvd1Jvb3RJZlNoYWRvd0RPTUVuYWJsZWRP
ck5vZGUqIEludGVybmFsczo6b2xkZXJTaGFkb3dSb290KE5vZGUqIHNoYWRvdywgRXhjZXB0aW9u
Q29kZSYgZWMpCit7CisgICAgaWYgKCFzaGFkb3cgfHwgIXNoYWRvdy0+aXNTaGFkb3dSb290KCkp
IHsKKyAgICAgICAgZWMgPSBJTlZBTElEX0FDQ0VTU19FUlI7CisgICAgICAgIHJldHVybiAwOwor
ICAgIH0KKworICAgIHJldHVybiB0b1NoYWRvd1Jvb3Qoc2hhZG93KS0+b2xkZXJTaGFkb3dSb290
KCk7Cit9CisKIHZvaWQgSW50ZXJuYWxzOjpyZW1vdmVTaGFkb3dSb290KEVsZW1lbnQqIGhvc3Qs
IEV4Y2VwdGlvbkNvZGUmIGVjKQogewogICAgIGlmICghaG9zdCkgewpAQCAtMjQ4LDcgKzI3Niw3
IEBAIHZvaWQgSW50ZXJuYWxzOjpyZW1vdmVTaGFkb3dSb290KEVsZW1lbnQqIGhvc3QsIEV4Y2Vw
dGlvbkNvZGUmIGVjKQogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgaG9zdC0+cmVtb3Zl
U2hhZG93Um9vdCgpOworICAgIGhvc3QtPnJlbW92ZVNoYWRvd1Jvb3RMaXN0KCk7CiB9CiAKIHZv
aWQgSW50ZXJuYWxzOjpzZXRNdWx0aXBsZVNoYWRvd1N1YnRyZWVzRW5hYmxlZChib29sIGVuYWJs
ZWQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5oIGIvU291
cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuaAppbmRleCBlYTJmOGI4YWYyYzExY2NmYzBh
NmNlZjljY2E4ZTZmNDRkMDVjNTZkLi4wNzQyODZjNDA0MGViOWNiOTI5NjBiNjg3ZjQxODU1ZmMw
MTJkZTdhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmgKQEAgLTU1LDYgKzU1LDggQEAg
cHVibGljOgogCiAgICAgU3RyaW5nIGVsZW1lbnRSZW5kZXJUcmVlQXNUZXh0KEVsZW1lbnQqLCBF
eGNlcHRpb25Db2RlJik7CiAKKyAgICBTdHJpbmcgYWRkcmVzcyhOb2RlKik7CisKICAgICBib29s
IGlzUHJlbG9hZGVkKERvY3VtZW50KiwgY29uc3QgU3RyaW5nJiB1cmwpOwogCiAgICAgc2l6ZV90
IG51bWJlck9mU2NvcGVkSFRNTFN0eWxlQ2hpbGRyZW4oY29uc3QgTm9kZSosIEV4Y2VwdGlvbkNv
ZGUmKSBjb25zdDsKQEAgLTY4LDYgKzcwLDggQEAgcHVibGljOgogICAgIFNoYWRvd1Jvb3RJZlNo
YWRvd0RPTUVuYWJsZWRPck5vZGUqIHNoYWRvd1Jvb3QoRWxlbWVudCogaG9zdCwgRXhjZXB0aW9u
Q29kZSYpOwogICAgIFNoYWRvd1Jvb3RJZlNoYWRvd0RPTUVuYWJsZWRPck5vZGUqIHlvdW5nZXN0
U2hhZG93Um9vdChFbGVtZW50KiBob3N0LCBFeGNlcHRpb25Db2RlJik7CiAgICAgU2hhZG93Um9v
dElmU2hhZG93RE9NRW5hYmxlZE9yTm9kZSogb2xkZXN0U2hhZG93Um9vdChFbGVtZW50KiBob3N0
LCBFeGNlcHRpb25Db2RlJik7CisgICAgU2hhZG93Um9vdElmU2hhZG93RE9NRW5hYmxlZE9yTm9k
ZSogeW91bmdlclNoYWRvd1Jvb3QoTm9kZSogc2hhZG93LCBFeGNlcHRpb25Db2RlJik7CisgICAg
U2hhZG93Um9vdElmU2hhZG93RE9NRW5hYmxlZE9yTm9kZSogb2xkZXJTaGFkb3dSb290KE5vZGUq
IHNoYWRvdywgRXhjZXB0aW9uQ29kZSYpOwogICAgIHZvaWQgcmVtb3ZlU2hhZG93Um9vdChFbGVt
ZW50KiBob3N0LCBFeGNlcHRpb25Db2RlJik7CiAgICAgdm9pZCBzZXRNdWx0aXBsZVNoYWRvd1N1
YnRyZWVzRW5hYmxlZChib29sKTsKICAgICBFbGVtZW50KiBpbmNsdWRlckZvcihOb2RlKiwgRXhj
ZXB0aW9uQ29kZSYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5h
bHMuaWRsIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuaWRsCmluZGV4IGJhNzZk
NDg2ZGRlODk3MTEyODhmYjA0OTNjMTM3NGJiODE2YzgyY2EuLmJkNGVmZjczODA4NmE1NGY2MGI2
YTJmZWMxMTQwYTJmYmNiOGNkMzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Rlc3Rpbmcv
SW50ZXJuYWxzLmlkbAorKysgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5pZGwK
QEAgLTI3LDYgKzI3LDggQEAgbW9kdWxlIHdpbmRvdyB7CiAgICAgaW50ZXJmYWNlIFsKICAgICAg
ICAgT21pdENvbnN0cnVjdG9yCiAgICAgXSBJbnRlcm5hbHMgeworICAgICAgICBET01TdHJpbmcg
YWRkcmVzcyhpbiBOb2RlIG5vZGUpOworCiAgICAgICAgIERPTVN0cmluZyBlbGVtZW50UmVuZGVy
VHJlZUFzVGV4dChpbiBFbGVtZW50IGVsZW1lbnQpIHJhaXNlcyhET01FeGNlcHRpb24pOwogICAg
ICAgICBib29sZWFuIGlzUHJlbG9hZGVkKGluIERvY3VtZW50IGRvY3VtZW50LCBpbiBET01TdHJp
bmcgdXJsKTsKIApAQCAtMzcsMTEgKzM5LDE1IEBAIG1vZHVsZSB3aW5kb3cgewogICAgICAgICBT
aGFkb3dSb290IHNoYWRvd1Jvb3QoaW4gRWxlbWVudCBob3N0KSByYWlzZXMgKERPTUV4Y2VwdGlv
bik7CiAgICAgICAgIFNoYWRvd1Jvb3QgeW91bmdlc3RTaGFkb3dSb290KGluIEVsZW1lbnQgaG9z
dCkgcmFpc2VzIChET01FeGNlcHRpb24pOwogICAgICAgICBTaGFkb3dSb290IG9sZGVzdFNoYWRv
d1Jvb3QoaW4gRWxlbWVudCBob3N0KSByYWlzZXMgKERPTUV4Y2VwdGlvbik7CisgICAgICAgIFNo
YWRvd1Jvb3QgeW91bmdlclNoYWRvd1Jvb3QoaW4gTm9kZSByb290KSByYWlzZXMgKERPTUV4Y2Vw
dGlvbik7CisgICAgICAgIFNoYWRvd1Jvb3Qgb2xkZXJTaGFkb3dSb290KGluIE5vZGUgcm9vdCkg
cmFpc2VzIChET01FeGNlcHRpb24pOwogI2Vsc2UKICAgICAgICAgTm9kZSBlbnN1cmVTaGFkb3dS
b290KGluIEVsZW1lbnQgaG9zdCkgcmFpc2VzIChET01FeGNlcHRpb24pOwogICAgICAgICBOb2Rl
IHNoYWRvd1Jvb3QoaW4gRWxlbWVudCBob3N0KSByYWlzZXMgKERPTUV4Y2VwdGlvbik7CiAgICAg
ICAgIE5vZGUgeW91bmdlc3RTaGFkb3dSb290KGluIEVsZW1lbnQgaG9zdCkgcmFpc2VzIChET01F
eGNlcHRpb24pOwogICAgICAgICBOb2RlIG9sZGVzdFNoYWRvd1Jvb3QoaW4gRWxlbWVudCBob3N0
KSByYWlzZXMgKERPTUV4Y2VwdGlvbik7CisgICAgICAgIE5vZGUgeW91bmdlclNoYWRvd1Jvb3Qo
aW4gTm9kZSByb290KSByYWlzZXMgKERPTUV4Y2VwdGlvbik7CisgICAgICAgIE5vZGUgeW91bmdl
clNoYWRvd1Jvb3QoaW4gTm9kZSByb290KSByYWlzZXMgKERPTUV4Y2VwdGlvbik7CiAjZW5kaWYK
ICAgICAgICAgdm9pZCBzZXRNdWx0aXBsZVNoYWRvd1N1YnRyZWVzRW5hYmxlZChpbiBib29sZWFu
IGVuYWJsZWQpOwogICAgICAgICBFbGVtZW50IGluY2x1ZGVyRm9yKGluIE5vZGUgbm9kZSkgcmFp
c2VzIChET01FeGNlcHRpb24pOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvd2luL1dlYktp
dDIuZGVmIGIvU291cmNlL1dlYktpdDIvd2luL1dlYktpdDIuZGVmCmluZGV4IDcxOGRmYTE4YmI2
ZGE3YTFjOTAzYjYyNTE1ODk0YjUxYzlmMGExMTcuLjZmYjE4NTQwMWEzOGMzMTkyMmJiNDE3YWYy
ZDM5Y2Y0YWM4NWE2MzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL3dpbi9XZWJLaXQyLmRl
ZgorKysgYi9Tb3VyY2UvV2ViS2l0Mi93aW4vV2ViS2l0Mi5kZWYKQEAgLTE3Niw3ICsxNzYsOCBA
QCBFWFBPUlRTCiAgICAgICAgID9wYWdlQERvY3VtZW50QFdlYkNvcmVAQFFCRVBBVlBhZ2VAMkBY
WgogICAgICAgICA/cGFpbnRDb250cm9sVGludHNARnJhbWVWaWV3QFdlYkNvcmVAQEFBRVhYWgog
ICAgICAgICA/cmFuZ2VGcm9tTG9jYXRpb25BbmRMZW5ndGhAVGV4dEl0ZXJhdG9yQFdlYkNvcmVA
QFNBP0FWPyRQYXNzUmVmUHRyQFZSYW5nZUBXZWJDb3JlQEBAV1RGQEBQQVZFbGVtZW50QDJASEhf
TkBaCi0gICAgICAgID9yZW1vdmVTaGFkb3dSb290QEVsZW1lbnRAV2ViQ29yZUBAUUFFWFhaCisg
ICAgICAgID9yZW1vdmVTaGFkb3dSb290TGlzdEBFbGVtZW50QFdlYkNvcmVAQFFBRVhYWgorICAg
ICAgICA/c19pbmZvQEpTTm9kZUBXZWJDb3JlQEAyVUNsYXNzSW5mb0BKU0NAQEIKICAgICAgICAg
P3NjcmlwdEV4ZWN1dGlvbkNvbnRleHRASlNET01HbG9iYWxPYmplY3RAV2ViQ29yZUBAUUJFUEFW
U2NyaXB0RXhlY3V0aW9uQ29udGV4dEAyQFhaCiAgICAgICAgID9zY3JvbGxFbGVtZW50VG9SZWN0
QEZyYW1lVmlld0BXZWJDb3JlQEBRQUVYUEFWRWxlbWVudEAyQEFCVkludFJlY3RAMkBAWgogICAg
ICAgICA/c2V0RE9NRXhjZXB0aW9uQFdlYkNvcmVAQFlBWFBBVkV4ZWNTdGF0ZUBKU0NAQEhAWgpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvd2luL1dlYktpdDJDRkxpdGUuZGVmIGIvU291cmNl
L1dlYktpdDIvd2luL1dlYktpdDJDRkxpdGUuZGVmCmluZGV4IGMzNTllYTZlM2ZhODQyZDhiNjc1
NjAzOGJhMWFmMDhhMTc0MjUzZGEuLjFhNjRiYTcxZmE2MGY2ZTQ5OTI3NWQzZWVmNWNkNTA4ZWFj
ZjlkMDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL3dpbi9XZWJLaXQyQ0ZMaXRlLmRlZgor
KysgYi9Tb3VyY2UvV2ViS2l0Mi93aW4vV2ViS2l0MkNGTGl0ZS5kZWYKQEAgLTE2OSw3ICsxNjks
OCBAQCBFWFBPUlRTCiAgICAgICAgID9wYWdlQERvY3VtZW50QFdlYkNvcmVAQFFCRVBBVlBhZ2VA
MkBYWgogICAgICAgICA/cGFpbnRDb250cm9sVGludHNARnJhbWVWaWV3QFdlYkNvcmVAQEFBRVhY
WgogICAgICAgICA/cmFuZ2VGcm9tTG9jYXRpb25BbmRMZW5ndGhAVGV4dEl0ZXJhdG9yQFdlYkNv
cmVAQFNBP0FWPyRQYXNzUmVmUHRyQFZSYW5nZUBXZWJDb3JlQEBAV1RGQEBQQVZFbGVtZW50QDJA
SEhfTkBaCi0gICAgICAgID9yZW1vdmVTaGFkb3dSb290QEVsZW1lbnRAV2ViQ29yZUBAUUFFWFha
CisgICAgICAgID9yZW1vdmVTaGFkb3dSb290TGlzdEBFbGVtZW50QFdlYkNvcmVAQFFBRVhYWgor
ICAgICAgICA/c19pbmZvQEpTTm9kZUBXZWJDb3JlQEAyVUNsYXNzSW5mb0BKU0NAQEIKICAgICAg
ICAgP3NjcmlwdEV4ZWN1dGlvbkNvbnRleHRASlNET01HbG9iYWxPYmplY3RAV2ViQ29yZUBAUUJF
UEFWU2NyaXB0RXhlY3V0aW9uQ29udGV4dEAyQFhaCiAgICAgICAgID9zY3JvbGxFbGVtZW50VG9S
ZWN0QEZyYW1lVmlld0BXZWJDb3JlQEBRQUVYUEFWRWxlbWVudEAyQEFCVkludFJlY3RAMkBAWgog
ICAgICAgICA/c2V0RE9NRXhjZXB0aW9uQFdlYkNvcmVAQFlBWFBBVkV4ZWNTdGF0ZUBKU0NAQEhA
WgpkaWZmIC0tZ2l0IGEvU291cmNlL2F1dG90b29scy9zeW1ib2xzLmZpbHRlciBiL1NvdXJjZS9h
dXRvdG9vbHMvc3ltYm9scy5maWx0ZXIKaW5kZXggZWY3MGQ4MWE0ZmE3Y2RlMThlYWJiMWQzOTll
OTlkMzM1NTYwOWQzYy4uOTA2NWU5NGIwZjJhOTFhNDZlNTUzOGYzZjkxNTBjYzA1MGMxODY2NyAx
MDA2NDQKLS0tIGEvU291cmNlL2F1dG90b29scy9zeW1ib2xzLmZpbHRlcgorKysgYi9Tb3VyY2Uv
YXV0b3Rvb2xzL3N5bWJvbHMuZmlsdGVyCkBAIC02Niw3ICs2Niw3IEBAIF9aTjdXZWJDb3JlNkpT
Tm9kZTEwcHV0VmlydHVhbEVQTjNKU0M5RXhlY1N0YXRlRVJLTlMxXzEwSWRlbnRpZmllckVOUzFf
N0pTVmFsdWVFCiBfWk43V2ViQ29yZTZKU05vZGUyMHZpc2l0Q2hpbGRyZW5WaXJ0dWFsRVJOM0pT
QzExU2xvdFZpc2l0b3JFOwogX1pON1dlYkNvcmU2SlNOb2RlNnNfaW5mb0U7CiBfWk43V2ViQ29y
ZTZ0b05vZGVFTjNKU0M3SlNWYWx1ZUU7Ci1fWk43V2ViQ29yZTdFbGVtZW50MTZyZW1vdmVTaGFk
b3dSb290RXY7CitfWk43V2ViQ29yZTdFbGVtZW50MjByZW1vdmVTaGFkb3dSb290TGlzdEV2Owog
X1pON1dlYkNvcmU3dG9SYW5nZUVOM0pTQzdKU1ZhbHVlRTsKIF9aTjdXZWJDb3JlOUpTRWxlbWVu
dDEwcHV0VmlydHVhbEVQTjNKU0M5RXhlY1N0YXRlRVJLTlMxXzEwSWRlbnRpZmllckVOUzFfN0pT
VmFsdWVFUk5TMV8xNVB1dFByb3BlcnR5U2xvdEU7CiBfWk43V2ViQ29yZTlKU0VsZW1lbnQ2c19p
bmZvRTsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0No
YW5nZUxvZwppbmRleCBkZTdlMjFmODJjNGZlMDMxMDIzOTMyMzA2NjlkYzMwZGQxZmY1MTQ4Li5j
ZDU3MmM5YWM5YzRmN2Y4NGU3MzEwNTEzZjM1YzRlNTE0MjViM2UzIDEwMDY0NAotLS0gYS9MYXlv
dXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEs
MjYgQEAKKzIwMTItMDItMjQgIFNoaW55YSBLYXdhbmFrYSAgPHNoaW55YWtAY2hyb21pdW0ub3Jn
PgorCisgICAgICAgIEVsZW1lbnQgc2hvdWxkIGJlIGFibGUgdG8gaGF2ZSBtdWx0aXBsZSBzaGFk
b3cgcm9vdHMuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD03NzkzMQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
ICogZmFzdC9kb20vcmVzb3VyY2VzL3NoYWRvdy10ZXN0LWRyaXZlci5qczoKKyAgICAgICAgKGNy
ZWF0ZVNwYW5XaXRoVGV4dCk6CisgICAgICAgIChkb25lVGVzdCk6CisgICAgICAgIChkb1Rlc3Qp
OgorICAgICAgICAqIGZhc3QvZG9tL3NoYWRvdy9tdWx0aXBsZS1zaGFkb3dyb290LWV4cGVjdGVk
LnR4dDogQWRkZWQuCisgICAgICAgICogZmFzdC9kb20vc2hhZG93L211bHRpcGxlLXNoYWRvd3Jv
b3QtcmVuZGVyaW5nLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogZmFzdC9kb20vc2hh
ZG93L211bHRpcGxlLXNoYWRvd3Jvb3QtcmVuZGVyaW5nLmh0bWw6IEFkZGVkLgorICAgICAgICAq
IGZhc3QvZG9tL3NoYWRvdy9tdWx0aXBsZS1zaGFkb3dyb290Lmh0bWw6IEFkZGVkLgorICAgICAg
ICAqIHBsYXRmb3JtL2VmbC9Ta2lwcGVkOgorICAgICAgICAqIHBsYXRmb3JtL2d0ay9Ta2lwcGVk
OgorICAgICAgICAqIHBsYXRmb3JtL21hYy9Ta2lwcGVkOgorICAgICAgICAqIHBsYXRmb3JtL3F0
L1NraXBwZWQ6CisgICAgICAgICogcGxhdGZvcm0vd2luL1NraXBwZWQ6CisgICAgICAgICogcGxh
dGZvcm0vd2luY2Fpcm8vU2tpcHBlZDoKKyAgICAgICAgKiBwbGF0Zm9ybS93azIvU2tpcHBlZDoK
KwogMjAxMi0wMi0yMyAgQ3NhYmEgT3N6dHJvZ29uw6FjICA8b3NzeUB3ZWJraXQub3JnPgogCiAg
ICAgICAgIFtRdF0gVW5yZXZpZXdlZCBtb3JuaW5nIGdhcmRlbmluZy4KZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2Zhc3QvZG9tL3Jlc291cmNlcy9zaGFkb3ctdGVzdC1kcml2ZXIuanMgYi9MYXlv
dXRUZXN0cy9mYXN0L2RvbS9yZXNvdXJjZXMvc2hhZG93LXRlc3QtZHJpdmVyLmpzCmluZGV4IDk5
ZTNlYmY2ZjdlNTJlZGRlYmI1YjMwZTQ4OWIwYjZlZGE0ZTBjYmUuLjBmZjVkNDA1OGUyMDdjMWQw
YjI5ZjIxOGIwMjkxMmNmY2I1YjkwZjAgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2Zhc3QvZG9t
L3Jlc291cmNlcy9zaGFkb3ctdGVzdC1kcml2ZXIuanMKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9k
b20vcmVzb3VyY2VzL3NoYWRvdy10ZXN0LWRyaXZlci5qcwpAQCAtNTMsOSArNTMsMTEgQEAgZnVu
Y3Rpb24gY2hlY2soKSB7CiAgICAgfQogfQogCi1mdW5jdGlvbiBjcmVhdGVTcGFuV2l0aFRleHQo
dGV4dCkgeworZnVuY3Rpb24gY3JlYXRlU3BhbldpdGhUZXh0KHRleHQsIGNsYXNzTmFtZSkgewog
ICAgIHZhciBzcGFuID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnc3BhbicpOwogICAgIHNwYW4u
YXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUodGV4dCkpOworICAgIGlmIChjbGFz
c05hbWUpCisgICAgICAgIHNwYW4uY2xhc3NOYW1lID0gY2xhc3NOYW1lOwogICAgIHJldHVybiBz
cGFuOwogfQogCkBAIC0xMTgsMTEgKzEyMCwxNiBAQCBmdW5jdGlvbiBkb1Rlc3RJZkxlZnQocmVz
dFRlc3RzKSB7CiAKIGZ1bmN0aW9uIGRvbmVUZXN0KCkgewogICAgIGxvZygiVEVTVCBDT01QTEVU
RUQiKTsKKyAgICBpZiAod2luZG93LnRlYXJEb3duT25jZSkKKyAgICAgICAgd2luZG93LnRlYXJE
b3duT25jZSgpOwogICAgIGxheW91dFRlc3RDb250cm9sbGVyLm5vdGlmeURvbmUoKTsKIH0KIAog
Ly8gQSB0ZXN0IGRyaXZlci4gQ2FsbCB0aGlzIGJvZHkub25sb2FkLgogZnVuY3Rpb24gZG9UZXN0
KHRlc3RzKSB7CisgICAgaWYgKHdpbmRvdy5zZXRVcE9uY2UpCisgICAgICAgIHdpbmRvdy5zZXRV
cE9uY2UoKTsKKwogICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpIHsKICAgICAg
ICAgbGF5b3V0VGVzdENvbnRyb2xsZXIud2FpdFVudGlsRG9uZSgpOwogICAgICAgICBsYXlvdXRU
ZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0
L2RvbS9zaGFkb3cvbXVsdGlwbGUtc2hhZG93cm9vdC1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0
cy9mYXN0L2RvbS9zaGFkb3cvbXVsdGlwbGUtc2hhZG93cm9vdC1leHBlY3RlZC50eHQKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uYWEzZGVkZGM4NTU2Y2Q3Y2UyYmQ3NWI2MTU1M2ZjNTBlNTg3NzVmMwotLS0gL2Rldi9u
dWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZG9tL3NoYWRvdy9tdWx0aXBsZS1zaGFkb3dyb290
LWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDE3IEBACitUaGlzIHRlc3QgZW5zdXJlIHRoYXQgdGhl
IG11bHRpcGxlIHNoYWRvdyByb290IGlzIGF2YWlsYWJsZS4KKworT24gc3VjY2VzcywgeW91IHdp
bGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09N
UExFVEUiLgorCisKK1BBU1MgaW50ZXJuYWxzLnNoYWRvd1Jvb3QoZGl2KSBpcyBudWxsCitQQVNT
IGludGVybmFscy5zaGFkb3dSb290KGRpdikgaXMgc2hhZG93Um9vdDEKK1BBU1MgaW50ZXJuYWxz
Lm9sZGVyU2hhZG93Um9vdChzaGFkb3dSb290MSkgaXMgbnVsbAorUEFTUyBpbnRlcm5hbHMuc2hh
ZG93Um9vdChkaXYpIGlzIHNoYWRvd1Jvb3QyCitQQVNTIGludGVybmFscy5vbGRlclNoYWRvd1Jv
b3Qoc2hhZG93Um9vdDIpIGlzIHNoYWRvd1Jvb3QxCitQQVNTIGludGVybmFscy5zaGFkb3dSb290
KGRpdikgaXMgc2hhZG93Um9vdDMKK1BBU1MgaW50ZXJuYWxzLm9sZGVyU2hhZG93Um9vdChzaGFk
b3dSb290MykgaXMgc2hhZG93Um9vdDIKK1BBU1MgaW50ZXJuYWxzLnNoYWRvd1Jvb3QoZGl2KSBp
cyBudWxsCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUK
KwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9kb20vc2hhZG93L211bHRpcGxlLXNoYWRv
d3Jvb3QtcmVuZGVyaW5nLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2Zhc3QvZG9tL3NoYWRv
dy9tdWx0aXBsZS1zaGFkb3dyb290LXJlbmRlcmluZy1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
N2I5ZjA1NjBhNzE4NmIyMjdmNTkxZTY4MTlhNmI3NTBkOWRkMjJkMwotLS0gL2Rldi9udWxsCisr
KyBiL0xheW91dFRlc3RzL2Zhc3QvZG9tL3NoYWRvdy9tdWx0aXBsZS1zaGFkb3dyb290LXJlbmRl
cmluZy1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwxNCBAQAordGVzdERvdWJsZVNoYWRvd1N1YnRy
ZWVzCitQQVNTCit0ZXN0VHJpcGxlU2hhZG93U3VidHJlZXMKK1BBU1MKK3Rlc3RTaGFkb3dTdWJ0
cmVlc1dpdGhDb250ZW50CitQQVNTCit0ZXN0U2hhZG93U3VidHJlZXNXaXRoQ29udGVudEluT2xk
ZXJTdWJ0cmVlCitQQVNTCit0ZXN0U2hhZG93U3VidHJlZXNXaXRoRHluYW1pY0NyZWF0aW9uCitQ
QVNTCit0ZXN0U2hhZG93U3VidHJlZXNXaXRoRHluYW1pY0NyZWF0aW9uT3V0T2ZUcmVlCitQQVNT
CitURVNUIENPTVBMRVRFRAorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2RvbS9zaGFk
b3cvbXVsdGlwbGUtc2hhZG93cm9vdC1yZW5kZXJpbmcuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3Qv
ZG9tL3NoYWRvdy9tdWx0aXBsZS1zaGFkb3dyb290LXJlbmRlcmluZy5odG1sCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjFlYmRlMjYzOTk2ZTg2Y2RhM2VkNTZhYzE4MzQ1NWEyOTBlZGNmM2YKLS0tIC9kZXYvbnVsbAor
KysgYi9MYXlvdXRUZXN0cy9mYXN0L2RvbS9zaGFkb3cvbXVsdGlwbGUtc2hhZG93cm9vdC1yZW5k
ZXJpbmcuaHRtbApAQCAtMCwwICsxLDE3NCBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxo
ZWFkPgorPHN0eWxlPgorLyogcmVsYXRpdmUgcG9zaXRpb25pbmcgZW5zdXJlcyB1bmRlcmx5aW5n
IFJlbmRlckxheWVyICovCisuY29udGFpbmVyIHsKKyAgICBwb3NpdGlvbjogcmVsYXRpdmU7Cit9
CisKKy5zcGFuIHsKKyAgICBkaXNwbGF5OiBib3hlZC1pbmxpbmU7CisgICAgbWFyZ2luOiAycHg7
CisgICAgYm9yZGVyOiBzb2xpZDsKK30KKzwvc3R5bGU+Cis8c2NyaXB0IHNyYz0iLi4vcmVzb3Vy
Y2VzL3NoYWRvdy10ZXN0LWRyaXZlci5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0PgorZnVuY3Rpb24g
c2V0VXBPbmNlKCkgeworICAgIGludGVybmFscy5zZXRNdWx0aXBsZVNoYWRvd1N1YnRyZWVzRW5h
YmxlZCh0cnVlKTsKK30KKworZnVuY3Rpb24gdGVhdERvd25PbmNlKCkgeworICAgIGludGVybmFs
cy5zZXRNdWx0aXBsZVNoYWRvd1N1YnRyZWVzRW5hYmxlZChmYWxzZSk7Cit9CisKK3ZhciB0ZXN0
RnVuY3MgPSBbXTsKKwordGVzdEZ1bmNzLnB1c2goZnVuY3Rpb24gdGVzdERvdWJsZVNoYWRvd1N1
YnRyZWVzKGNhbGxJZkRvbmUpIHsKKyAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZXhwZWN0
LWNvbnRhaW5lcicpLmlubmVySFRNTCA9ICI8ZGl2PjxzcGFuPkJFRk9SRTwvc3Bhbj48c3Bhbj5N
SUQ8L3NwYW4+PHNwYW4+QUZURVI8L3NwYW4+PC9kaXY+IjsKKworICAgIHZhciByb290ID0gZG9j
dW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7CisgICAgcm9vdC5hcHBlbmRDaGlsZChjcmVhdGVT
cGFuV2l0aFRleHQoJ0xJR0hUJykpOworCisgICAgdmFyIHNyMSA9IG5ldyBXZWJLaXRTaGFkb3dS
b290KHJvb3QpOworICAgIHNyMS5hcHBlbmRDaGlsZChjcmVhdGVTcGFuV2l0aFRleHQoJ0JFRk9S
RTogU0hPVUxEIE5PVCBCRSBSRU5ERVJFRCcpKTsKKyAgICBzcjEuYXBwZW5kQ2hpbGQoY3JlYXRl
U3BhbldpdGhUZXh0KCdNSUQ6IFNIT1VMRCBOT1QgQkUgUkVOREVSRUQnKSk7CisgICAgc3IxLmFw
cGVuZENoaWxkKGNyZWF0ZVNwYW5XaXRoVGV4dCgnQUZURVI6IFNIT1VMRCBOT1QgQkUgUkVOREVS
RUQnKSk7CisKKyAgICB2YXIgc3IyID0gbmV3IFdlYktpdFNoYWRvd1Jvb3Qocm9vdCk7CisgICAg
c3IyLmFwcGVuZENoaWxkKGNyZWF0ZVNwYW5XaXRoVGV4dCgnQkVGT1JFJykpOworICAgIHNyMi5h
cHBlbmRDaGlsZChjcmVhdGVTcGFuV2l0aFRleHQoJ01JRCcpKTsKKyAgICBzcjIuYXBwZW5kQ2hp
bGQoY3JlYXRlU3BhbldpdGhUZXh0KCdBRlRFUicpKTsKKworICAgIGRvY3VtZW50LmdldEVsZW1l
bnRCeUlkKCdhY3R1YWwtY29udGFpbmVyJykuYXBwZW5kQ2hpbGQocm9vdCk7CisKKyAgICBjYWxs
SWZEb25lKCk7Cit9KTsKKwordGVzdEZ1bmNzLnB1c2goZnVuY3Rpb24gdGVzdFRyaXBsZVNoYWRv
d1N1YnRyZWVzKGNhbGxJZkRvbmUpIHsKKyAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZXhw
ZWN0LWNvbnRhaW5lcicpLmlubmVySFRNTCA9ICI8ZGl2PjxzcGFuPkJFRk9SRTwvc3Bhbj48c3Bh
bj5NSUQ8L3NwYW4+PHNwYW4+QUZURVI8L3NwYW4+PC9kaXY+IjsKKworICAgIHZhciByb290ID0g
ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7CisgICAgcm9vdC5hcHBlbmRDaGlsZChjcmVh
dGVTcGFuV2l0aFRleHQoJ0xJR0hUJykpOworCisgICAgdmFyIHNyMSA9IG5ldyBXZWJLaXRTaGFk
b3dSb290KHJvb3QpOworICAgIHNyMS5hcHBlbmRDaGlsZChjcmVhdGVTcGFuV2l0aFRleHQoJ0JF
Rk9SRTogU0hPVUxEIE5PVCBCRSBSRU5ERVJFRCcpKTsKKyAgICBzcjEuYXBwZW5kQ2hpbGQoY3Jl
YXRlU3BhbldpdGhUZXh0KCdNSUQ6IFNIT1VMRCBOT1QgQkUgUkVOREVSRUQnKSk7CisgICAgc3Ix
LmFwcGVuZENoaWxkKGNyZWF0ZVNwYW5XaXRoVGV4dCgnQUZURVI6IFNIT1VMRCBOT1QgQkUgUkVO
REVSRUQnKSk7CisKKyAgICB2YXIgc3IyID0gbmV3IFdlYktpdFNoYWRvd1Jvb3Qocm9vdCk7Cisg
ICAgc3IyLmFwcGVuZENoaWxkKGNyZWF0ZVNwYW5XaXRoVGV4dCgnQkVGT1JFOiBTSE9VTEQgTk9U
IEJFIFJFTkRFUkVEJykpOworICAgIHNyMi5hcHBlbmRDaGlsZChjcmVhdGVTcGFuV2l0aFRleHQo
J01JRDogU0hPVUxEIE5PVCBCRSBSRU5ERVJFRCcpKTsKKyAgICBzcjIuYXBwZW5kQ2hpbGQoY3Jl
YXRlU3BhbldpdGhUZXh0KCdBRlRFUjogU0hPVUxEIE5PVCBCRSBSRU5ERVJFRCcpKTsKKworICAg
IHZhciBzcjMgPSBuZXcgV2ViS2l0U2hhZG93Um9vdChyb290KTsKKyAgICBzcjMuYXBwZW5kQ2hp
bGQoY3JlYXRlU3BhbldpdGhUZXh0KCdCRUZPUkUnKSk7CisgICAgc3IzLmFwcGVuZENoaWxkKGNy
ZWF0ZVNwYW5XaXRoVGV4dCgnTUlEJykpOworICAgIHNyMy5hcHBlbmRDaGlsZChjcmVhdGVTcGFu
V2l0aFRleHQoJ0FGVEVSJykpOworCisgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2FjdHVh
bC1jb250YWluZXInKS5hcHBlbmRDaGlsZChyb290KTsKKworICAgIGNhbGxJZkRvbmUoKTsKK30p
OworCit0ZXN0RnVuY3MucHVzaChmdW5jdGlvbiB0ZXN0U2hhZG93U3VidHJlZXNXaXRoQ29udGVu
dChjYWxsSWZEb25lKSB7CisgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2V4cGVjdC1jb250
YWluZXInKS5pbm5lckhUTUwgPSAiPGRpdj48c3Bhbj5CRUZPUkU8L3NwYW4+PHNwYW4+TElHSFQ8
L3NwYW4+PHNwYW4+QUZURVI8L3NwYW4+PC9kaXY+IjsKKworICAgIHZhciByb290ID0gZG9jdW1l
bnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7CisgICAgcm9vdC5hcHBlbmRDaGlsZChjcmVhdGVTcGFu
V2l0aFRleHQoJ0xJR0hUJykpOworCisgICAgdmFyIHNyMSA9IG5ldyBXZWJLaXRTaGFkb3dSb290
KHJvb3QpOworICAgIHNyMS5hcHBlbmRDaGlsZChjcmVhdGVTcGFuV2l0aFRleHQoJ0JFRk9SRTog
U0hPVUxEIE5PVCBCRSBSRU5ERVJFRCcpKTsKKyAgICBzcjEuYXBwZW5kQ2hpbGQoY3JlYXRlU3Bh
bldpdGhUZXh0KCdNSUQ6IFNIT1VMRCBOT1QgQkUgUkVOREVSRUQnKSk7CisgICAgc3IxLmFwcGVu
ZENoaWxkKGNyZWF0ZVNwYW5XaXRoVGV4dCgnQUZURVI6IFNIT1VMRCBOT1QgQkUgUkVOREVSRUQn
KSk7CisKKyAgICB2YXIgc3IyID0gbmV3IFdlYktpdFNoYWRvd1Jvb3Qocm9vdCk7CisgICAgc3Iy
LmFwcGVuZENoaWxkKGNyZWF0ZVNwYW5XaXRoVGV4dCgnQkVGT1JFJykpOworICAgIHNyMi5hcHBl
bmRDaGlsZChjcmVhdGVDb250ZW50V2l0aFNlbGVjdCgnc3BhbicsICdGQUxMQkFDSycpKTsKKyAg
ICBzcjIuYXBwZW5kQ2hpbGQoY3JlYXRlU3BhbldpdGhUZXh0KCdBRlRFUicpKTsKKworICAgIGRv
Y3VtZW50LmdldEVsZW1lbnRCeUlkKCdhY3R1YWwtY29udGFpbmVyJykuYXBwZW5kQ2hpbGQocm9v
dCk7CisKKyAgICBjYWxsSWZEb25lKCk7Cit9KTsKKwordGVzdEZ1bmNzLnB1c2goZnVuY3Rpb24g
dGVzdFNoYWRvd1N1YnRyZWVzV2l0aENvbnRlbnRJbk9sZGVyU3VidHJlZShjYWxsSWZEb25lKSB7
CisgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2V4cGVjdC1jb250YWluZXInKS5pbm5lckhU
TUwgPSAiPGRpdj48c3Bhbj5CRUZPUkU8L3NwYW4+PHNwYW4+TElHSFQgMTwvc3Bhbj48c3Bhbj5B
RlRFUjwvc3Bhbj48L2Rpdj4iOworCisgICAgdmFyIHJvb3QgPSBkb2N1bWVudC5jcmVhdGVFbGVt
ZW50KCdkaXYnKTsKKyAgICByb290LmFwcGVuZENoaWxkKGNyZWF0ZVNwYW5XaXRoVGV4dCgnTElH
SFQgMScsICdjMScpKTsKKyAgICByb290LmFwcGVuZENoaWxkKGNyZWF0ZVNwYW5XaXRoVGV4dCgn
TElHSFQgMicsICdjMicpKTsKKworICAgIHZhciBzcjEgPSBuZXcgV2ViS2l0U2hhZG93Um9vdChy
b290KTsKKyAgICBzcjEuYXBwZW5kQ2hpbGQoY3JlYXRlU3BhbldpdGhUZXh0KCdCRUZPUkU6IFNI
T1VMRCBOT1QgQkUgUkVOREVSRUQnKSk7CisgICAgc3IxLmFwcGVuZENoaWxkKGNyZWF0ZUNvbnRl
bnRXaXRoU2VsZWN0KCcuYzInLCAnRkFMTEJBQ0snKSk7CisgICAgc3IxLmFwcGVuZENoaWxkKGNy
ZWF0ZVNwYW5XaXRoVGV4dCgnQUZURVI6IFNIT1VMRCBOT1QgQkUgUkVOREVSRUQnKSk7CisKKyAg
ICB2YXIgc3IyID0gbmV3IFdlYktpdFNoYWRvd1Jvb3Qocm9vdCk7CisgICAgc3IyLmFwcGVuZENo
aWxkKGNyZWF0ZVNwYW5XaXRoVGV4dCgnQkVGT1JFJykpOworICAgIHNyMi5hcHBlbmRDaGlsZChj
cmVhdGVDb250ZW50V2l0aFNlbGVjdCgnLmMxJywgJ0ZBTExCQUNLJykpOworICAgIHNyMi5hcHBl
bmRDaGlsZChjcmVhdGVTcGFuV2l0aFRleHQoJ0FGVEVSJykpOworCisgICAgZG9jdW1lbnQuZ2V0
RWxlbWVudEJ5SWQoJ2FjdHVhbC1jb250YWluZXInKS5hcHBlbmRDaGlsZChyb290KTsKKworICAg
IGNhbGxJZkRvbmUoKTsKK30pOworCit0ZXN0RnVuY3MucHVzaChmdW5jdGlvbiB0ZXN0U2hhZG93
U3VidHJlZXNXaXRoRHluYW1pY0NyZWF0aW9uKGNhbGxJZkRvbmUpIHsKKyAgICBkb2N1bWVudC5n
ZXRFbGVtZW50QnlJZCgnZXhwZWN0LWNvbnRhaW5lcicpLmlubmVySFRNTCA9ICI8ZGl2PjxzcGFu
PkJFRk9SRTwvc3Bhbj48c3Bhbj5MSUdIVCAxPC9zcGFuPjxzcGFuPkxJR0hUIDI8L3NwYW4+PHNw
YW4+QUZURVI8L3NwYW4+PC9kaXY+IjsKKworICAgIHZhciByb290ID0gZG9jdW1lbnQuY3JlYXRl
RWxlbWVudCgnZGl2Jyk7CisgICAgcm9vdC5hcHBlbmRDaGlsZChjcmVhdGVTcGFuV2l0aFRleHQo
J0xJR0hUIDEnLCAnYzEnKSk7CisgICAgcm9vdC5hcHBlbmRDaGlsZChjcmVhdGVTcGFuV2l0aFRl
eHQoJ0xJR0hUIDInLCAnYzInKSk7CisKKyAgICB2YXIgc3IxID0gbmV3IFdlYktpdFNoYWRvd1Jv
b3Qocm9vdCk7CisgICAgc3IxLmFwcGVuZENoaWxkKGNyZWF0ZVNwYW5XaXRoVGV4dCgnQkVGT1JF
OiBTSE9VTEQgTk9UIEJFIFJFTkRFUkVEJykpOworICAgIHNyMS5hcHBlbmRDaGlsZChjcmVhdGVD
b250ZW50V2l0aFNlbGVjdCgnc3BhbicsICdGQUxMQkFDSycpKTsKKyAgICBzcjEuYXBwZW5kQ2hp
bGQoY3JlYXRlU3BhbldpdGhUZXh0KCdBRlRFUjogU0hPVUxEIE5PVCBCRSBSRU5ERVJFRCcpKTsK
KworICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdhY3R1YWwtY29udGFpbmVyJykuYXBwZW5k
Q2hpbGQocm9vdCk7CisKKyAgICBzZXRUaW1lb3V0KChmdW5jdGlvbihjYWxsSWZEb25lLCByb290
KSB7IHJldHVybiBmdW5jdGlvbigpIHsKKyAgICAgICAgdmFyIHNyMiA9IG5ldyBXZWJLaXRTaGFk
b3dSb290KHJvb3QpOworICAgICAgICBzcjIuYXBwZW5kQ2hpbGQoY3JlYXRlU3BhbldpdGhUZXh0
KCdCRUZPUkUnKSk7CisgICAgICAgIHNyMi5hcHBlbmRDaGlsZChjcmVhdGVDb250ZW50V2l0aFNl
bGVjdCgnc3BhbicsICdGQUxMQkFDSycpKTsKKyAgICAgICAgc3IyLmFwcGVuZENoaWxkKGNyZWF0
ZVNwYW5XaXRoVGV4dCgnQUZURVInKSk7CisKKyAgICAgICAgY2FsbElmRG9uZSgpOworICAgIH07
fSkoY2FsbElmRG9uZSwgcm9vdCksIDApOworfSk7CisKK3Rlc3RGdW5jcy5wdXNoKGZ1bmN0aW9u
IHRlc3RTaGFkb3dTdWJ0cmVlc1dpdGhEeW5hbWljQ3JlYXRpb25PdXRPZlRyZWUoY2FsbElmRG9u
ZSkgeworICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdleHBlY3QtY29udGFpbmVyJykuaW5u
ZXJIVE1MID0gIjxkaXY+PHNwYW4+QkVGT1JFPC9zcGFuPjxzcGFuPkxJR0hUIDE8L3NwYW4+PHNw
YW4+TElHSFQgMjwvc3Bhbj48c3Bhbj5BRlRFUjwvc3Bhbj48L2Rpdj4iOworCisgICAgdmFyIHJv
b3QgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTsKKyAgICByb290LmFwcGVuZENoaWxk
KGNyZWF0ZVNwYW5XaXRoVGV4dCgnTElHSFQgMScsICdjMScpKTsKKyAgICByb290LmFwcGVuZENo
aWxkKGNyZWF0ZVNwYW5XaXRoVGV4dCgnTElHSFQgMicsICdjMicpKTsKKworICAgIHZhciBzcjEg
PSBuZXcgV2ViS2l0U2hhZG93Um9vdChyb290KTsKKyAgICBzcjEuYXBwZW5kQ2hpbGQoY3JlYXRl
U3BhbldpdGhUZXh0KCdCRUZPUkU6IFNIT1VMRCBOT1QgQkUgUkVOREVSRUQnKSk7CisgICAgc3Ix
LmFwcGVuZENoaWxkKGNyZWF0ZUNvbnRlbnRXaXRoU2VsZWN0KCdzcGFuJywgJ0ZBTExCQUNLJykp
OworICAgIHNyMS5hcHBlbmRDaGlsZChjcmVhdGVTcGFuV2l0aFRleHQoJ0FGVEVSOiBTSE9VTEQg
Tk9UIEJFIFJFTkRFUkVEJykpOworCisgICAgc2V0VGltZW91dCgoZnVuY3Rpb24oY2FsbElmRG9u
ZSwgcm9vdCkgeyByZXR1cm4gZnVuY3Rpb24oKSB7CisgICAgICAgIHZhciBzcjIgPSBuZXcgV2Vi
S2l0U2hhZG93Um9vdChyb290KTsKKyAgICAgICAgc3IyLmFwcGVuZENoaWxkKGNyZWF0ZVNwYW5X
aXRoVGV4dCgnQkVGT1JFJykpOworICAgICAgICBzcjIuYXBwZW5kQ2hpbGQoY3JlYXRlQ29udGVu
dFdpdGhTZWxlY3QoJ3NwYW4nLCAnRkFMTEJBQ0snKSk7CisgICAgICAgIHNyMi5hcHBlbmRDaGls
ZChjcmVhdGVTcGFuV2l0aFRleHQoJ0FGVEVSJykpOworCisgICAgICAgIGRvY3VtZW50LmdldEVs
ZW1lbnRCeUlkKCdhY3R1YWwtY29udGFpbmVyJykuYXBwZW5kQ2hpbGQocm9vdCk7CisKKyAgICAg
ICAgY2FsbElmRG9uZSgpOworICAgIH07fSkoY2FsbElmRG9uZSwgcm9vdCksIDApOworfSk7Cis8
L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5IG9ubG9hZD0iZG9UZXN0KHRlc3RGdW5jcykiPgorCis8
ZGl2IGlkPSJhY3R1YWwtY29udGFpbmVyIiBjbGFzcz0iY29udGFpbmVyIj48L2Rpdj4KKzxkaXYg
aWQ9ImV4cGVjdC1jb250YWluZXIiIGNsYXNzPSJjb250YWluZXIiPjwvZGl2PgorPHByZSBpZD0i
Y29uc29sZSI+PC9wcmU+CisKKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2Zhc3QvZG9tL3NoYWRvdy9tdWx0aXBsZS1zaGFkb3dyb290Lmh0bWwgYi9MYXlvdXRUZXN0
cy9mYXN0L2RvbS9zaGFkb3cvbXVsdGlwbGUtc2hhZG93cm9vdC5odG1sCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjQw
OWJlYzA3NmFlM2IxZmNkMTJlOTc0ODQ0MzY2MmM4MDgxMGJkZmIKLS0tIC9kZXYvbnVsbAorKysg
Yi9MYXlvdXRUZXN0cy9mYXN0L2RvbS9zaGFkb3cvbXVsdGlwbGUtc2hhZG93cm9vdC5odG1sCkBA
IC0wLDAgKzEsMzUgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKzxzY3JpcHQg
c3JjPSIuLi8uLi9qcy9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPC9oZWFk
PgorPGJvZHk+Cis8c2NyaXB0PgorZGVzY3JpcHRpb24oIlRoaXMgdGVzdCBlbnN1cmUgdGhhdCB0
aGUgbXVsdGlwbGUgc2hhZG93IHJvb3QgaXMgYXZhaWxhYmxlLiIpOworCitpbnRlcm5hbHMuc2V0
TXVsdGlwbGVTaGFkb3dTdWJ0cmVlc0VuYWJsZWQodHJ1ZSk7CisKK3ZhciBkaXYgPSBkb2N1bWVu
dC5jcmVhdGVFbGVtZW50KCdkaXYnKTsKK3Nob3VsZEJlKCJpbnRlcm5hbHMuc2hhZG93Um9vdChk
aXYpIiwgIm51bGwiKTsKK3ZhciBzaGFkb3dSb290MSA9IG5ldyBXZWJLaXRTaGFkb3dSb290KGRp
dik7CitzaG91bGRCZSgiaW50ZXJuYWxzLnNoYWRvd1Jvb3QoZGl2KSIsICJzaGFkb3dSb290MSIp
Oworc2hvdWxkQmUoImludGVybmFscy5vbGRlclNoYWRvd1Jvb3Qoc2hhZG93Um9vdDEpIiwgIm51
bGwiKTsKKwordmFyIHNoYWRvd1Jvb3QyID0gbmV3IFdlYktpdFNoYWRvd1Jvb3QoZGl2KQorc2hv
dWxkQmUoImludGVybmFscy5zaGFkb3dSb290KGRpdikiLCAic2hhZG93Um9vdDIiKTsKK3Nob3Vs
ZEJlKCJpbnRlcm5hbHMub2xkZXJTaGFkb3dSb290KHNoYWRvd1Jvb3QyKSIsICJzaGFkb3dSb290
MSIpOworCit2YXIgc2hhZG93Um9vdDMgPSBuZXcgV2ViS2l0U2hhZG93Um9vdChkaXYpOworc2hv
dWxkQmUoImludGVybmFscy5zaGFkb3dSb290KGRpdikiLCAic2hhZG93Um9vdDMiKTsKK3Nob3Vs
ZEJlKCJpbnRlcm5hbHMub2xkZXJTaGFkb3dSb290KHNoYWRvd1Jvb3QzKSIsICJzaGFkb3dSb290
MiIpOworCitpbnRlcm5hbHMucmVtb3ZlU2hhZG93Um9vdChkaXYpOworc2hvdWxkQmUoImludGVy
bmFscy5zaGFkb3dSb290KGRpdikiLCAibnVsbCIpOworCitpbnRlcm5hbHMuc2V0TXVsdGlwbGVT
aGFkb3dTdWJ0cmVlc0VuYWJsZWQoZmFsc2UpOworCit2YXIgc3VjY2Vzc2Z1bGx5UGFyc2VkID0g
dHJ1ZTsKKzwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uL2pzL3Jlc291cmNlcy9qcy10ZXN0
LXBvc3QuanMiPjwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvcGxhdGZvcm0vZWZsL1NraXBwZWQgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9lZmwvU2tp
cHBlZAppbmRleCAxY2EwNmIwMTg5ZmZhNTI5YzA5ODIwNzVkYmMyYjE4ZmUyN2YwODQyLi5iYWIx
ZjM4YjE3Zjc0ZDNlMGE5NGEwMDQwMDdkMGQwZDQ1YmZmM2MwIDEwMDY0NAotLS0gYS9MYXlvdXRU
ZXN0cy9wbGF0Zm9ybS9lZmwvU2tpcHBlZAorKysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9lZmwv
U2tpcHBlZApAQCAtMTk3OCw2ICsxOTc4LDggQEAgZmFzdC9kb20vc2hhZG93L3NoYWRvdy1yb290
LWpzLWFwaS5odG1sCiBmYXN0L2RvbS9zaGFkb3cvc2hhZG93LWRpc2FibGUuaHRtbAogZmFzdC9k
b20vc2hhZG93L3NoYWRvdy1yb290LWF0dGFjaGVkLmh0bWwKIGZhc3QvZG9tL3NoYWRvdy9zaGFk
b3ctcm9vdC1uZXcuaHRtbAorZmFzdC9kb20vc2hhZG93L211bHRpcGxlLXNoYWRvd3Jvb3QuaHRt
bAorZmFzdC9kb20vc2hhZG93L211bHRpcGxlLXNoYWRvd3Jvb3QtcmVuZGVyaW5nLmh0bWwKIAog
IyBDU1MgRmlsdGVycyBzdXBwb3J0IG5vdCB5ZXQgZW5hYmxlZCAobmVlZHMgRU5BQkxFX0NTU19G
SUxURVJTKS4KICMgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTY4NDY5
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9ndGsvU2tpcHBlZCBiL0xheW91dFRl
c3RzL3BsYXRmb3JtL2d0ay9Ta2lwcGVkCmluZGV4IDQxYTg1MzVhNDM2M2U0NDRmOTdkNDFhYzRj
ZjM1MjgwOGMwOTU5ZDIuLmE4YTgxOWUzMzkzZTkyMjY3NmY5MDhlZmYyMmI0NjE5ZDc4Y2M1NDkg
MTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3BsYXRmb3JtL2d0ay9Ta2lwcGVkCisrKyBiL0xheW91
dFRlc3RzL3BsYXRmb3JtL2d0ay9Ta2lwcGVkCkBAIC0zNjEsNiArMzYxLDggQEAgZmFzdC9kb20v
c2hhZG93L3NoYWRvdy1yb290LWpzLWFwaS5odG1sCiBmYXN0L2RvbS9zaGFkb3cvc2hhZG93LWRp
c2FibGUuaHRtbAogZmFzdC9kb20vc2hhZG93L3NoYWRvdy1yb290LWF0dGFjaGVkLmh0bWwKIGZh
c3QvZG9tL3NoYWRvdy9zaGFkb3ctcm9vdC1uZXcuaHRtbAorZmFzdC9kb20vc2hhZG93L211bHRp
cGxlLXNoYWRvd3Jvb3QuaHRtbAorZmFzdC9kb20vc2hhZG93L211bHRpcGxlLXNoYWRvd3Jvb3Qt
cmVuZGVyaW5nLmh0bWwKIAogIyBDU1MgUmVnaW9ucyBzdXBwb3J0IG5vdCB5ZXQgZW5hYmxlZC4g
aHR0cDovL3dlYmtpdC5vcmcvYi81NzMxMgogZmFzdC9yZWdpb25zCmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9wbGF0Zm9ybS9tYWMvU2tpcHBlZCBiL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy9T
a2lwcGVkCmluZGV4IGExZWM2NDE1ZTVkMjkzODhkMGVkNTg2YzNiMzliOTRiYjliOTY2YmYuLmUw
Mzg3MGQ2YWU0NzBhZDExYWFmODYxMDhjYmRhZjZkNGZlZjY5MDEgMTAwNjQ0Ci0tLSBhL0xheW91
dFRlc3RzL3BsYXRmb3JtL21hYy9Ta2lwcGVkCisrKyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL21h
Yy9Ta2lwcGVkCkBAIC00MjksNiArNDI5LDggQEAgZmFzdC9kb20vc2hhZG93L3NoYWRvdy1yb290
LWpzLWFwaS5odG1sCiBmYXN0L2RvbS9zaGFkb3cvc2hhZG93LWRpc2FibGUuaHRtbAogZmFzdC9k
b20vc2hhZG93L3NoYWRvdy1yb290LWF0dGFjaGVkLmh0bWwKIGZhc3QvZG9tL3NoYWRvdy9zaGFk
b3ctcm9vdC1uZXcuaHRtbAorZmFzdC9kb20vc2hhZG93L211bHRpcGxlLXNoYWRvd3Jvb3QuaHRt
bAorZmFzdC9kb20vc2hhZG93L211bHRpcGxlLXNoYWRvd3Jvb3QtcmVuZGVyaW5nLmh0bWwKIAog
IyBKU0MgZG9lcyBub3Qgc3VwcG9ydCBzZXRJc29sYXRlZFdvcmxkU2VjdXJpdHlPcmlnaW4gKGh0
dHA6Ly93ZWJraXQub3JnL2IvNjE1NDApCiBodHRwL3Rlc3RzL3NlY3VyaXR5L2lzb2xhdGVkV29y
bGQvY3Jvc3Mtb3JpZ2luLXhoci5odG1sCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9y
bS9xdC9Ta2lwcGVkIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vcXQvU2tpcHBlZAppbmRleCA5MjQ2
NmRlMDI5YjE1OWUxZjkwODc4NTgyMzliZTU1MjBkZTQzZWFjLi44OGE2MzA0ZDA1YWFiZjYyNjU4
ZThjZWE1NzdhN2UyNGJjODkwOTIxIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9x
dC9Ta2lwcGVkCisrKyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL3F0L1NraXBwZWQKQEAgLTE2Niw2
ICsxNjYsOCBAQCBmYXN0L2RvbS9zaGFkb3cvc2hhZG93LXJvb3QtanMtYXBpLmh0bWwKIGZhc3Qv
ZG9tL3NoYWRvdy9zaGFkb3ctZGlzYWJsZS5odG1sCiBmYXN0L2RvbS9zaGFkb3cvc2hhZG93LXJv
b3QtYXR0YWNoZWQuaHRtbAogZmFzdC9kb20vc2hhZG93L3NoYWRvdy1yb290LW5ldy5odG1sCitm
YXN0L2RvbS9zaGFkb3cvbXVsdGlwbGUtc2hhZG93cm9vdC5odG1sCitmYXN0L2RvbS9zaGFkb3cv
bXVsdGlwbGUtc2hhZG93cm9vdC1yZW5kZXJpbmcuaHRtbAogCiAjIENTUyBSZWdpb25zIHN1cHBv
cnQgbm90IHlldCBlbmFibGVkLiBodHRwOi8vd2Via2l0Lm9yZy9iLzU3MzEyCiBmYXN0L3JlZ2lv
bnMKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL3dpbi9Ta2lwcGVkIGIvTGF5b3V0
VGVzdHMvcGxhdGZvcm0vd2luL1NraXBwZWQKaW5kZXggMzFiMmMyN2JhNTFiNThkYWI5MTY1ZGIy
Y2U3ZTkwNWM5ZmYxM2Q2ZC4uNmUxZTM4YzllODJmYmYyYmIwMjNlNjg1MDQ2NTdhMGQzMjk5MWY1
MiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vd2luL1NraXBwZWQKKysrIGIvTGF5
b3V0VGVzdHMvcGxhdGZvcm0vd2luL1NraXBwZWQKQEAgLTE0NTgsNiArMTQ1OCw4IEBAIGZhc3Qv
ZG9tL3NoYWRvdy9zaGFkb3ctcm9vdC1qcy1hcGkuaHRtbAogZmFzdC9kb20vc2hhZG93L3NoYWRv
dy1kaXNhYmxlLmh0bWwKIGZhc3QvZG9tL3NoYWRvdy9zaGFkb3ctcm9vdC1hdHRhY2hlZC5odG1s
CiBmYXN0L2RvbS9zaGFkb3cvc2hhZG93LXJvb3QtbmV3Lmh0bWwKK2Zhc3QvZG9tL3NoYWRvdy9t
dWx0aXBsZS1zaGFkb3dyb290Lmh0bWwKK2Zhc3QvZG9tL3NoYWRvdy9tdWx0aXBsZS1zaGFkb3dy
b290LXJlbmRlcmluZy5odG1sCiAKICMgQ1NTIFJlZ2lvbnMgc3VwcG9ydCBub3QgeWV0IGVuYWJs
ZWQuIGh0dHA6Ly93ZWJraXQub3JnL2IvNTczMTIKIGZhc3QvcmVnaW9ucwpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvcGxhdGZvcm0vd2luY2Fpcm8vU2tpcHBlZCBiL0xheW91dFRlc3RzL3BsYXRm
b3JtL3dpbmNhaXJvL1NraXBwZWQKaW5kZXggZTZlZDg3OWVlMDlmMTQwNDIxZTdmZjY3NDM0NDhl
ZWU1ZTZlYmI0Zi4uOWUzYzY3YjljZGM5Y2Q4OTY2ZmNlZjRiNDU0NGY1NDNhYjlhOGYxMiAxMDA2
NDQKLS0tIGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vd2luY2Fpcm8vU2tpcHBlZAorKysgYi9MYXlv
dXRUZXN0cy9wbGF0Zm9ybS93aW5jYWlyby9Ta2lwcGVkCkBAIC0xOTY5LDYgKzE5NjksOCBAQCBm
YXN0L2RvbS9zaGFkb3cvc2hhZG93LXJvb3QtanMtYXBpLmh0bWwKIGZhc3QvZG9tL3NoYWRvdy9z
aGFkb3ctZGlzYWJsZS5odG1sCiBmYXN0L2RvbS9zaGFkb3cvc2hhZG93LXJvb3QtYXR0YWNoZWQu
aHRtbAogZmFzdC9kb20vc2hhZG93L3NoYWRvdy1yb290LW5ldy5odG1sCitmYXN0L2RvbS9zaGFk
b3cvbXVsdGlwbGUtc2hhZG93cm9vdC5odG1sCitmYXN0L2RvbS9zaGFkb3cvbXVsdGlwbGUtc2hh
ZG93cm9vdC1yZW5kZXJpbmcuaHRtbAogCiAjIENTUyBSZWdpb25zIHN1cHBvcnQgbm90IHlldCBl
bmFibGVkLiBodHRwOi8vd2Via2l0Lm9yZy9iLzU3MzEyCiBmYXN0L3JlZ2lvbnMKZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL3drMi9Ta2lwcGVkIGIvTGF5b3V0VGVzdHMvcGxhdGZv
cm0vd2syL1NraXBwZWQKaW5kZXggZDIyNDczYjJlYTU1ODg3MjMyZDQ0NzU1ZGU5ZDY5YTE1ZjNl
MzE3NS4uOTNmZDY0NTQ1NjRiZWEyMTdlMjkxOGNjNTQ1ZjI0NjI5YjAyOTYxMSAxMDA2NDQKLS0t
IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vd2syL1NraXBwZWQKKysrIGIvTGF5b3V0VGVzdHMvcGxh
dGZvcm0vd2syL1NraXBwZWQKQEAgLTEwNzgsNiArMTA3OCw4IEBAIGZhc3QvZG9tL3NoYWRvdy9z
aGFkb3ctcm9vdC1qcy1hcGkuaHRtbAogZmFzdC9kb20vc2hhZG93L3NoYWRvdy1kaXNhYmxlLmh0
bWwKIGZhc3QvZG9tL3NoYWRvdy9zaGFkb3ctcm9vdC1hdHRhY2hlZC5odG1sCiBmYXN0L2RvbS9z
aGFkb3cvc2hhZG93LXJvb3QtbmV3Lmh0bWwKK2Zhc3QvZG9tL3NoYWRvdy9tdWx0aXBsZS1zaGFk
b3dyb290Lmh0bWwKK2Zhc3QvZG9tL3NoYWRvdy9tdWx0aXBsZS1zaGFkb3dyb290LXJlbmRlcmlu
Zy5odG1sCiAKICMgV1RSIG5lZWRzIGFuIGltcGxlbWVudGF0aW9uIGZvciBldmVudFNlbmRlci5j
b250aW51b3VzTW91c2VTY3JvbGxCeQogIyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9Njk0MTcKZGlmZiAtLWdpdCBhL0NoYW5nZUxvZyBiL0NoYW5nZUxvZwppbmRleCA0
M2JjZWIzYmFhN2QwMTcwYTliMTdmMGVhYWRkMGE1ZmI3OTc0NTJjLi40OWMyZjZiNTEyN2Y5YTc0
YzcwZGU5M2IzZDA2ZTA5MzAyOGNjZTc4IDEwMDY0NAotLS0gYS9DaGFuZ2VMb2cKKysrIGIvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMTIgQEAKKzIwMTItMDItMjQgIFNoaW55YSBLYXdhbmFrYSAgPHNo
aW55YWtAY2hyb21pdW0ub3JnPgorCisgICAgICAgIEVsZW1lbnQgc2hvdWxkIGJlIGFibGUgdG8g
aGF2ZSBtdWx0aXBsZSBzaGFkb3cgcm9vdHMuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD03NzkzMQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgICogU291cmNlL2F1dG90b29scy9zeW1ib2xzLmZpbHRlcjoKKwog
MjAxMi0wMi0yMyAgS29ucmFkIFBpYXNjaWsgIDxrcGlhc2Npa0ByaW0uY29tPgogCiAgICAgICAg
IFVwc3RyZWFtIEJsYWNrQmVycnkgQ29va2llIE1hbmFnZW1lbnQgQ2xhc3Nlcwo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>129212</attachid>
            <date>2012-02-28 01:01:17 -0800</date>
            <delta_ts>2012-02-28 03:36:55 -0800</delta_ts>
            <desc>Rebased ToT</desc>
            <filename>bug-77931-20120228180115.patch</filename>
            <type>text/plain</type>
            <size>33531</size>
            <attacher name="Shinya Kawanaka">shinyak</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTA5MDg1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZWUxODVjZDkyZjhlZDMy
ZDkyNzQxNWE5NTQzNDNhMjhjYjllYzJiMC4uODA3OWUwYmJiNzIzODgxYmM5ZmI5ZTJjODQ4YTMw
ZWRiZTRlMDY4ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDU5IEBACisyMDEyLTAyLTI0ICBTaGlu
eWEgS2F3YW5ha2EgIDxzaGlueWFrQGNocm9taXVtLm9yZz4KKworICAgICAgICBFbGVtZW50IHNo
b3VsZCBiZSBhYmxlIHRvIGhhdmUgbXVsdGlwbGUgc2hhZG93IHJvb3RzLgorICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9Nzc5MzEKKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGlzIHBhdGNoIGVuYWJsZXMgdXMg
dG8gYWRkIG11bHRpcGxlIHNoYWRvdyBzdWJ0cmVlcyBpbnRvIGVsZW1lbnRzLgorICAgICAgICBO
b3RlIHRoYXQgbXVsdGlwbGUgc2hhZG93IHN1YnRyZWVzIGFyZSBlbmFibGVkCisgICAgICAgIG9u
bHkgaWYgUnVudGltZUVuYWJsZWRGZWF0dXJlczo6bXVsdGlwbGVTaGFkb3dTdWJ0cmVlcyBpcyBl
bmFibGVkLgorCisgICAgICAgIFNpbmNlIHdlIGRvbid0IGhhdmUgPHNoYWRvdz4gZWxlbWVudCB5
ZXQsIG9ubHkgdGhlIHlvdW5nZXN0IHNoYWRvdyB0cmVlCisgICAgICAgIHdpbGwgYmUgcmVuZGVy
ZWQuIFRoaXMgcGF0Y2ggaW5jbHVkZXMgdGVzdHMgdG8gY29uZmlybSBhZGRpbmcgYSBuZXcgc2hh
ZG93CisgICAgICAgIHRyZWUgZHluYW1pY2FsbHkgdG8gY29uZmlybSBvbmx5IHRoZSB5b3VuZ2Vz
dCBzaGFkb3cgdHJlZSBpcyByZW5kZXJlcmVkLgorCisgICAgICAgIFRlc3RzOiBmYXN0L2RvbS9z
aGFkb3cvbXVsdGlwbGUtc2hhZG93cm9vdC1yZW5kZXJpbmcuaHRtbAorICAgICAgICAgICAgICAg
ZmFzdC9kb20vc2hhZG93L211bHRpcGxlLXNoYWRvd3Jvb3QuaHRtbAorCisgICAgICAgICogV2Vi
Q29yZS5leHAuaW46CisgICAgICAgICogZG9tL0VsZW1lbnQuY3BwOgorICAgICAgICAgIFVzZXMg
U2hhZG93Um9vdExpc3QgaW50ZXJmYWNlcyBkaXJlY3RseSBpbnN0ZWFkIG9mIFNoYWRvd1Jvb3RM
aXN0IGVtdWxhdGlvbiBtZXRob2RzLgorICAgICAgICAoV2ViQ29yZTo6RWxlbWVudDo6fkVsZW1l
bnQpOgorICAgICAgICAoV2ViQ29yZTo6RWxlbWVudDo6YXR0YWNoKToKKyAgICAgICAgKFdlYkNv
cmU6OkVsZW1lbnQ6OmFkZFNoYWRvd1Jvb3QpOgorICAgICAgICAoV2ViQ29yZTo6RWxlbWVudDo6
cmVtb3ZlU2hhZG93Um9vdExpc3QpOgorICAgICAgICAqIGRvbS9FbGVtZW50Lmg6CisgICAgICAg
IChFbGVtZW50KToKKyAgICAgICAgKiBkb20vTm9kZVJlbmRlcmluZ0NvbnRleHQuY3BwOgorICAg
ICAgICAgIE1ha2VzIG5vbi15b3VuZ2VzdCBzaGFkb3cgc3VidHJlZXMgaGlkZGVuLgorICAgICAg
ICAoV2ViQ29yZTo6Tm9kZVJlbmRlcmluZ0NvbnRleHQ6Ok5vZGVSZW5kZXJpbmdDb250ZXh0KToK
KyAgICAgICAgKFdlYkNvcmU6Ok5vZGVSZW5kZXJpbmdDb250ZXh0Ojpob3N0Q2hpbGRyZW5DaGFu
Z2VkKToKKyAgICAgICAgICBTaW5jZSBub24teW91bmdlc3QgY2hpbGRyZW4gbWF5IGJlIGNoYW5n
ZWQsIG1ha2Ugc3VyZSBob3N0IGNoaWxkcmVuIGFyZSBjaGFuZ2VkLgorICAgICAgICAqIGRvbS9T
aGFkb3dSb290LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNoYWRvd1Jvb3Q6OmNyZWF0ZSk6Cisg
ICAgICAgICogZG9tL1NoYWRvd1Jvb3QuaDoKKyAgICAgICAgICBVdGlsaXR5IG1ldGhvZHMgdG8g
bWFrZSBjb2RlIGludGVudGlvbiBjbGVhciBhcmUgYWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpT
aGFkb3dSb290Ojp5b3VuZ2VyU2hhZG93Um9vdCk6CisgICAgICAgIChXZWJDb3JlOjpTaGFkb3dS
b290OjpvbGRlclNoYWRvd1Jvb3QpOgorICAgICAgICAoU2hhZG93Um9vdCk6CisgICAgICAgIChX
ZWJDb3JlOjpTaGFkb3dSb290Ojppc1lvdW5nZXN0KToKKyAgICAgICAgKFdlYkNvcmU6OlNoYWRv
d1Jvb3Q6OmlzT2xkZXN0KToKKyAgICAgICAgKiBkb20vU2hhZG93Um9vdExpc3QuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6U2hhZG93Um9vdExpc3Q6OnBvcFNoYWRvd1Jvb3QpOgorICAgICAgICAo
V2ViQ29yZTo6U2hhZG93Um9vdExpc3Q6OmF0dGFjaCk6CisgICAgICAgIChXZWJDb3JlOjpTaGFk
b3dSb290TGlzdDo6ZGV0YWNoKToKKyAgICAgICAgICBEZXRhY2hlcyBzaGFkb3cgc3VidHJlZXMu
CisgICAgICAgICogdGVzdGluZy9JbnRlcm5hbHMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW50
ZXJuYWxzOjphZGRyZXNzKToKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6
SW50ZXJuYWxzOjp5b3VuZ2VyU2hhZG93Um9vdCk6CisgICAgICAgIChXZWJDb3JlOjpJbnRlcm5h
bHM6Om9sZGVyU2hhZG93Um9vdCk6CisgICAgICAgIChXZWJDb3JlOjpJbnRlcm5hbHM6OnJlbW92
ZVNoYWRvd1Jvb3QpOgorICAgICAgICAqIHRlc3RpbmcvSW50ZXJuYWxzLmg6CisgICAgICAgIChJ
bnRlcm5hbHMpOgorICAgICAgICAqIHRlc3RpbmcvSW50ZXJuYWxzLmlkbDoKKwogMjAxMi0wMi0y
NyAgU2hpbnlhIEthd2FuYWthICA8c2hpbnlha0BjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgRWxl
bWVudDo6cmVtb3ZlU2hhZG93Um9vdCgpIGFuZCBzZXRTaGFkb3dSb290KCkgc2hvdWxkIGJlIG1v
dmVkIGludG8gU2hhZG93VHJlZS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxv
ZyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwppbmRleCBhMjg1OTJlMWEyZjlmM2Q5NzIwMTk5
NzMwZWFhOTAyYzEwMzYwZGU3Li4wOTlmZTVlNmQ4ZDJiMDQ4OTQzOGUwNjQyZmRhOGQ4ZjM2NjYz
NmU2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dl
YktpdDIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTMgQEAKKzIwMTItMDItMjQgIFNoaW55YSBLYXdh
bmFrYSAgPHNoaW55YWtAY2hyb21pdW0ub3JnPgorCisgICAgICAgIEVsZW1lbnQgc2hvdWxkIGJl
IGFibGUgdG8gaGF2ZSBtdWx0aXBsZSBzaGFkb3cgcm9vdHMuCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03NzkzMQorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogd2luL1dlYktpdDIuZGVmOgorICAgICAgICAq
IHdpbi9XZWJLaXQyQ0ZMaXRlLmRlZjoKKwogMjAxMi0wMi0yNyAgU2hpbnlhIEthd2FuYWthICA8
c2hpbnlha0BjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgRWxlbWVudDo6cmVtb3ZlU2hhZG93Um9v
dCgpIGFuZCBzZXRTaGFkb3dSb290KCkgc2hvdWxkIGJlIG1vdmVkIGludG8gU2hhZG93VHJlZS4K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2RvbS9FbGVtZW50LmNwcAppbmRleCA1Y2Y3MGI1OTI2ZmQxMTBiNWZlMDI0YWJiMmEwZmYx
YTNmZTc1NjIxLi4xNWNmYWU1MGVlYzc5MDQ4YWIyODdhODBmMjYyYTQ3ZmRjYzBlY2UzIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvZG9tL0VsZW1lbnQuY3BwCkBAIC02MCw2ICs2MCw3IEBACiAjaW5jbHVkZSAiUmVuZGVyUmVn
aW9uLmgiCiAjaW5jbHVkZSAiUmVuZGVyVmlldy5oIgogI2luY2x1ZGUgIlJlbmRlcldpZGdldC5o
IgorI2luY2x1ZGUgIlJ1bnRpbWVFbmFibGVkRmVhdHVyZXMuaCIKICNpbmNsdWRlICJTZXR0aW5n
cy5oIgogI2luY2x1ZGUgIlNoYWRvd1Jvb3QuaCIKICNpbmNsdWRlICJUZXh0LmgiCkBAIC05MzEs
NyArOTMyLDcgQEAgdm9pZCBFbGVtZW50OjphdHRhY2goKQogICAgICAgICBwYXJlbnRQdXNoZXIu
cHVzaCgpOwogICAgICAgICBzaGFkb3dUcmVlKCktPmF0dGFjaCgpOwogCi0gICAgICAgIC8vIElu
IGEgc2hhZG93IHRyZWUsIHNvbWUgb2YgbGlnaHQgY2hpbGRyZW4gbWF5IGJlIGF0dGFjaGVkIGJ5
ICdjb250ZW50JyBlbGVtZW50LgorICAgICAgICAvLyBJbiBhIHNoYWRvdyB0cmVlLCBzb21lIG9m
IGxpZ2h0IGNoaWxkcmVuIG1heSBiZSBhdHRhY2hlZCBieSA8Y29udGVudD4gb3IgPHNoYWRvdz4u
CiAgICAgICAgIC8vIEhvd2V2ZXIsIHdoZW4gdGhlcmUgaXMgbm8gY29udGVudCBlbGVtZW50IG9y
IGNvbnRlbnQgZWxlbWVudCBkb2VzIG5vdCBzZWxlY3QKICAgICAgICAgLy8gYWxsIGxpZ2h0IGNo
aWxkcmVuLCB3ZSBoYXZlIHRvIGF0dGFjaCB0aGUgcmVzdCBvZiBsaWdodCBjaGlsZHJlbiBoZXJl
LgogICAgICAgICBmb3IgKE5vZGUqIGNoaWxkID0gZmlyc3RDaGlsZCgpOyBjaGlsZDsgY2hpbGQg
PSBjaGlsZC0+bmV4dFNpYmxpbmcoKSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9t
L05vZGVSZW5kZXJpbmdDb250ZXh0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlUmVuZGVy
aW5nQ29udGV4dC5jcHAKaW5kZXggYjMyMTc3ZDhlYzdhZjkzMDM1NmQzNzUyNzhkNmI5ODI3NDc5
NmFhMC4uNzUyOTE0YzFhMWQyMGRmNGE5YTU0YTU2MTczZTI0N2I5OGRkOTA4ZCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvZG9tL05vZGVSZW5kZXJpbmdDb250ZXh0LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9kb20vTm9kZVJlbmRlcmluZ0NvbnRleHQuY3BwCkBAIC01Nyw3ICs1NywxMiBA
QCBOb2RlUmVuZGVyaW5nQ29udGV4dDo6Tm9kZVJlbmRlcmluZ0NvbnRleHQoTm9kZSogbm9kZSkK
ICAgICAgICAgcmV0dXJuOwogCiAgICAgaWYgKHBhcmVudC0+aXNTaGFkb3dSb290KCkpIHsKLSAg
ICAgICAgbV9waGFzZSA9IEF0dGFjaGluZ1NoYWRvd0NoaWxkOworICAgICAgICAvLyBGSVhNRTog
V2UgZG9uJ3Qgc3VwcG9ydCA8c2hhZG93PiB5ZXQsIHNvIHRoZSBub24teW91bmdlc3Qgc2hhZG93
IHdvbid0IGJlIHJlbmRlcmVkLgorICAgICAgICAvLyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG9kX2J1Z3MuY2dpP2lkPTc4NTk2CisgICAgICAgIGlmICh0b1NoYWRvd1Jvb3QocGFyZW50KS0+
aXNZb3VuZ2VzdCgpKQorICAgICAgICAgICAgbV9waGFzZSA9IEF0dGFjaGluZ1NoYWRvd0NoaWxk
OworICAgICAgICBlbHNlCisgICAgICAgICAgICBtX3BoYXNlID0gQXR0YWNoaW5nTm90RGlzdHJp
YnV0ZWQ7CiAgICAgICAgIG1fcGFyZW50Tm9kZUZvclJlbmRlcmluZ0FuZFN0eWxlID0gcGFyZW50
LT5zaGFkb3dIb3N0KCk7CiAgICAgICAgIHJldHVybjsKICAgICB9CkBAIC02Nyw5ICs3MiwxNCBA
QCBOb2RlUmVuZGVyaW5nQ29udGV4dDo6Tm9kZVJlbmRlcmluZ0NvbnRleHQoTm9kZSogbm9kZSkK
ICAgICAgICAgICAgIG1fdmlzdWFsUGFyZW50U2hhZG93VHJlZSA9IHRvRWxlbWVudChwYXJlbnQp
LT5zaGFkb3dUcmVlKCk7CiAgICAgICAgICAgICBpZiAoKG1faW5zZXJ0aW9uUG9pbnQgPSBtX3Zp
c3VhbFBhcmVudFNoYWRvd1RyZWUtPmluc2VydGlvblBvaW50Rm9yKG1fbm9kZSkpCiAgICAgICAg
ICAgICAgICAgJiYgbV92aXN1YWxQYXJlbnRTaGFkb3dUcmVlLT5pc1NlbGVjdG9yQWN0aXZlKCkp
IHsKLSAgICAgICAgICAgICAgICBtX3BoYXNlID0gQXR0YWNoaW5nRGlzdHJpYnV0ZWQ7Ci0gICAg
ICAgICAgICAgICAgbV9wYXJlbnROb2RlRm9yUmVuZGVyaW5nQW5kU3R5bGUgPSBOb2RlUmVuZGVy
aW5nQ29udGV4dChtX2luc2VydGlvblBvaW50KS5wYXJlbnROb2RlRm9yUmVuZGVyaW5nQW5kU3R5
bGUoKTsKLSAgICAgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgICAgICAgICAvLyBGSVhN
RTogV2UgZG9uJ3Qgc3VwcG9ydCA8c2hhZG93PiB5ZXQsIHNvIHRoZSBub24teW91bmdlc3Qgc2hh
ZG93IHdvbid0IGJlIHJlbmRlcmVkLgorICAgICAgICAgICAgICAgIC8vIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVncy5jZ2k/aWQ9Nzg1OTYKKyAgICAgICAgICAgICAgICBpZiAodG9T
aGFkb3dSb290KG1faW5zZXJ0aW9uUG9pbnQtPnNoYWRvd1RyZWVSb290Tm9kZSgpKS0+aXNZb3Vu
Z2VzdCgpKSB7CisgICAgICAgICAgICAgICAgICAgIG1fcGhhc2UgPSBBdHRhY2hpbmdEaXN0cmli
dXRlZDsKKyAgICAgICAgICAgICAgICAgICAgbV9wYXJlbnROb2RlRm9yUmVuZGVyaW5nQW5kU3R5
bGUgPSBOb2RlUmVuZGVyaW5nQ29udGV4dChtX2luc2VydGlvblBvaW50KS5wYXJlbnROb2RlRm9y
UmVuZGVyaW5nQW5kU3R5bGUoKTsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAg
ICAgICAgICAgIH0KICAgICAgICAgICAgIH0KIAogICAgICAgICAgICAgbV9waGFzZSA9IEF0dGFj
aGluZ05vdERpc3RyaWJ1dGVkOwpAQCAtMjYwLDcgKzI3MCw3IEBAIFJlbmRlck9iamVjdCogTm9k
ZVJlbmRlcmluZ0NvbnRleHQ6OnBhcmVudFJlbmRlcmVyKCkgY29uc3QKIAogdm9pZCBOb2RlUmVu
ZGVyaW5nQ29udGV4dDo6aG9zdENoaWxkcmVuQ2hhbmdlZCgpCiB7Ci0gICAgaWYgKG1fcGhhc2Ug
PT0gQXR0YWNoaW5nTm90RGlzdHJpYnV0ZWQpCisgICAgaWYgKG1fcGhhc2UgPT0gQXR0YWNoaW5n
Tm90RGlzdHJpYnV0ZWQgJiYgbV92aXN1YWxQYXJlbnRTaGFkb3dUcmVlKQogICAgICAgICBtX3Zp
c3VhbFBhcmVudFNoYWRvd1RyZWUtPmhvc3RDaGlsZHJlbkNoYW5nZWQoKTsKIH0KIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL1NoYWRvd1Jvb3QuY3BwIGIvU291cmNlL1dlYkNvcmUv
ZG9tL1NoYWRvd1Jvb3QuY3BwCmluZGV4IGNiOWQ4YzMwY2Q4MGI5OTRkMjJmMTI0ZWU1YTEwODFk
ZTc0NDI4NGEuLmY3NjhlNzczZGIyMGJhZjM5ODAyOTBhOWQwNzA0NTE2NzJiMmFlYjMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9TaGFkb3dSb290LmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9kb20vU2hhZG93Um9vdC5jcHAKQEAgLTE4NCwxNyArMTg0LDQgQEAgdm9pZCBTaGFkb3dS
b290OjpzZXRBcHBseUF1dGhvclNoZWV0cyhib29sIHZhbHVlKQogICAgIG1fYXBwbHlBdXRob3JT
aGVldHMgPSB2YWx1ZTsKIH0KIAotdm9pZCBTaGFkb3dSb290OjphdHRhY2goKQotewotICAgIC8v
IENoaWxkcmVuIG9mIG1fc2VsZWN0b3IgaXMgcG9wdWxhdGVkIGxhemlseSBpbgotICAgIC8vIGVu
c3VyZVNlbGVjdG9yKCksIGFuZCBoZXJlIHdlIGp1c3QgZW5zdXJlIHRoYXQKLSAgICAvLyBpdCBp
cyBpbiBjbGVhbiBzdGF0ZS4KLSAgICAvLyBGSVhNRTogVGhpcyBhc3NlcnRpb24gYnJlYWtzIGlm
IG11bHRpcGxlIHNoYWRvdyByb290cyBhcmUgYmVpbmcgYXR0YWNoZWQuCi0gICAgLy8gU2hhZG93
VHJlZSBzaG91bGQgaGF2ZSByZXNwb25zaWJpbGl0eSBvZiBzaWRlIGVmZmVjdCBvZiBzZWxlY3Rv
ciBpbiBhdHRhY2hpbmcvZGV0YWNoaW5nLgotICAgIEFTU0VSVCghdHJlZSgpLT5zZWxlY3Rvcigp
IHx8ICF0cmVlKCktPnNlbGVjdG9yKCktPmhhc0NhbmRpZGF0ZXMoKSk7Ci0gICAgRG9jdW1lbnRG
cmFnbWVudDo6YXR0YWNoKCk7Ci0gICAgaWYgKEhUTUxDb250ZW50U2VsZWN0b3IqIHNlbGVjdG9y
ID0gdHJlZSgpLT5zZWxlY3RvcigpKQotICAgICAgICBzZWxlY3Rvci0+ZGlkU2VsZWN0KCk7Ci19
Ci0KIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9TaGFkb3dSb290LmggYi9Tb3Vy
Y2UvV2ViQ29yZS9kb20vU2hhZG93Um9vdC5oCmluZGV4IGM2NmUxMGZkZTA2YzhmZmY4ZTdiZTY3
Njk5ZGU1N2IxN2ZhNmU0ZmUuLmVkYTA4NWRlOTRjMGE3YTRmMDRhYzg2YTU3ZmIzNjAzYWE2YjNl
YzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9TaGFkb3dSb290LmgKKysrIGIvU291
cmNlL1dlYkNvcmUvZG9tL1NoYWRvd1Jvb3QuaApAQCAtNjQsOCArNjQsNiBAQCBwdWJsaWM6CiAg
ICAgSW5zZXJ0aW9uUG9pbnQqIGluc2VydGlvblBvaW50Rm9yKE5vZGUqKSBjb25zdDsKICAgICB2
b2lkIGhvc3RDaGlsZHJlbkNoYW5nZWQoKTsKIAotICAgIHZpcnR1YWwgdm9pZCBhdHRhY2goKTsK
LQogICAgIHZpcnR1YWwgYm9vbCBhcHBseUF1dGhvclNoZWV0cygpIGNvbnN0OwogICAgIHZvaWQg
c2V0QXBwbHlBdXRob3JTaGVldHMoYm9vbCk7CiAKQEAgLTc1LDYgKzczLDkgQEAgcHVibGljOgog
ICAgIFNoYWRvd1Jvb3QqIHlvdW5nZXJTaGFkb3dSb290KCkgY29uc3QgeyByZXR1cm4gcHJldigp
OyB9CiAgICAgU2hhZG93Um9vdCogb2xkZXJTaGFkb3dSb290KCkgY29uc3QgeyByZXR1cm4gbmV4
dCgpOyB9CiAKKyAgICBib29sIGlzWW91bmdlc3QoKSBjb25zdCB7IHJldHVybiAheW91bmdlclNo
YWRvd1Jvb3QoKTsgfQorICAgIGJvb2wgaXNPbGRlc3QoKSBjb25zdCB7IHJldHVybiAhb2xkZXJT
aGFkb3dSb290KCk7IH0KKwogICAgIGJvb2wgaGFzQ29udGVudEVsZW1lbnQoKSBjb25zdDsKIAog
cHJpdmF0ZToKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9TaGFkb3dUcmVlLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2RvbS9TaGFkb3dUcmVlLmNwcAppbmRleCAzZWYyNTFiMWQ0NDRjZDE1
ZmU0YTQ0MDhlOTMwNTc3NzM5ZjNlNzdhLi5iMjhkZjA1MjNhMGZjOWQwNzAwNzQ5NTNlMGViNzFk
OTQ4ZTg4NDdhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vU2hhZG93VHJlZS5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvZG9tL1NoYWRvd1RyZWUuY3BwCkBAIC0xMDksNiArMTA5LDgg
QEAgdm9pZCBTaGFkb3dUcmVlOjpyZW1vdmVBbGxTaGFkb3dSb290cygpCiAgICAgICAgICAgICBv
bGRSb290LT5kZXRhY2goKTsKIAogICAgICAgICBvbGRSb290LT5zZXRTaGFkb3dIb3N0KDApOwor
ICAgICAgICBvbGRSb290LT5zZXRQcmV2KDApOworICAgICAgICBvbGRSb290LT5zZXROZXh0KDAp
OwogICAgICAgICBzaGFkb3dIb3N0LT5kb2N1bWVudCgpLT5hZG9wdElmTmVlZGVkKG9sZFJvb3Qu
Z2V0KCkpOwogICAgICAgICBpZiAob2xkUm9vdC0+aW5Eb2N1bWVudCgpKQogICAgICAgICAgICAg
b2xkUm9vdC0+cmVtb3ZlZEZyb21Eb2N1bWVudCgpOwpAQCAtMTU2LDIyICsxNTgsMjEgQEAgdm9p
ZCBTaGFkb3dUcmVlOjp3aWxsUmVtb3ZlKCkKIAogdm9pZCBTaGFkb3dUcmVlOjphdHRhY2goKQog
ewotICAgIC8vIEZJWE1FOiBDdXJyZW50bHkgd2Ugb25seSBzdXBwb3J0IHRoZSBjYXNlIHRoYXQg
dGhlIHNoYWRvdyByb290IGxpc3QgaGFzIGF0IG1vc3Qgb25lIHNoYWRvdyByb290LgotICAgIC8v
IFNlZSBhbHNvIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03NzUwMyBh
bmQgaXRzIGRlcGVuZGVudCBidWdzLgotICAgIEFTU0VSVChtX3NoYWRvd1Jvb3RzLnNpemUoKSA8
PSAxKTsKKyAgICAvLyBDaGlsZHJlbiBvZiBtX3NlbGVjdG9yIGlzIHBvcHVsYXRlZCBsYXppbHkg
aW4KKyAgICAvLyBlbnN1cmVTZWxlY3RvcigpLCBhbmQgaGVyZSB3ZSBqdXN0IGVuc3VyZSB0aGF0
IGl0IGlzIGluIGNsZWFuIHN0YXRlLgorICAgIEFTU0VSVCghc2VsZWN0b3IoKSB8fCAhc2VsZWN0
b3IoKS0+aGFzQ2FuZGlkYXRlcygpKTsKIAogICAgIGZvciAoU2hhZG93Um9vdCogcm9vdCA9IHlv
dW5nZXN0U2hhZG93Um9vdCgpOyByb290OyByb290ID0gcm9vdC0+b2xkZXJTaGFkb3dSb290KCkp
IHsKICAgICAgICAgaWYgKCFyb290LT5hdHRhY2hlZCgpKQogICAgICAgICAgICAgcm9vdC0+YXR0
YWNoKCk7CiAgICAgfQorCisgICAgaWYgKEhUTUxDb250ZW50U2VsZWN0b3IqIGNvbnRlbnRTZWxl
Y3RvciA9IHNlbGVjdG9yKCkpCisgICAgICAgIGNvbnRlbnRTZWxlY3Rvci0+ZGlkU2VsZWN0KCk7
CiB9CiAKIHZvaWQgU2hhZG93VHJlZTo6ZGV0YWNoKCkKIHsKLSAgICAvLyBGSVhNRTogQ3VycmVu
dGx5IHdlIG9ubHkgc3VwcG9ydCB0aGUgY2FzZSB0aGF0IHRoZSBzaGFkb3cgcm9vdCBsaXN0IGhh
cyBhdCBtb3N0IG9uZSBzaGFkb3cgcm9vdC4KLSAgICAvLyBTZWUgYWxzbyBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9Nzc1MDMgYW5kIGl0cyBkZXBlbmRlbnQgYnVncy4K
LSAgICBBU1NFUlQobV9zaGFkb3dSb290cy5zaXplKCkgPD0gMSk7Ci0KICAgICBmb3IgKFNoYWRv
d1Jvb3QqIHJvb3QgPSB5b3VuZ2VzdFNoYWRvd1Jvb3QoKTsgcm9vdDsgcm9vdCA9IHJvb3QtPm9s
ZGVyU2hhZG93Um9vdCgpKSB7CiAgICAgICAgIGlmIChyb290LT5hdHRhY2hlZCgpKQogICAgICAg
ICAgICAgcm9vdC0+ZGV0YWNoKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5n
L0ludGVybmFscy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5jcHAKaW5k
ZXggYjQ4ZjU5NGY5N2E3ZTIxZGRiOTA4YTljN2VjYjBlMGJlNmFkYzgyYS4uNjEwM2I2YjFiMDIy
M2RmMzcwZWJlZWFkMmM1ZTU3NWY3N2MwNDFjYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
dGVzdGluZy9JbnRlcm5hbHMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJu
YWxzLmNwcApAQCAtMTE5LDYgKzExOSwxNCBAQCBJbnRlcm5hbHM6OkludGVybmFscyhEb2N1bWVu
dCogZG9jdW1lbnQpCiAgICAgcmVzZXQoZG9jdW1lbnQpOwogfQogCitTdHJpbmcgSW50ZXJuYWxz
OjphZGRyZXNzKE5vZGUqIG5vZGUpCit7CisgICAgY2hhciBidWZbMzJdOworICAgIHNwcmludGYo
YnVmLCAiJXAiLCBub2RlKTsKKworICAgIHJldHVybiBTdHJpbmcoYnVmKTsKK30KKwogYm9vbCBJ
bnRlcm5hbHM6OmlzUHJlbG9hZGVkKERvY3VtZW50KiBkb2N1bWVudCwgY29uc3QgU3RyaW5nJiB1
cmwpCiB7CiAgICAgaWYgKCFkb2N1bWVudCkKQEAgLTI0MSw2ICsyNDksMjYgQEAgSW50ZXJuYWxz
OjpTaGFkb3dSb290SWZTaGFkb3dET01FbmFibGVkT3JOb2RlKiBJbnRlcm5hbHM6Om9sZGVzdFNo
YWRvd1Jvb3QoRWxlbWUKICAgICByZXR1cm4gaG9zdC0+c2hhZG93VHJlZSgpLT5vbGRlc3RTaGFk
b3dSb290KCk7CiB9CiAKK0ludGVybmFsczo6U2hhZG93Um9vdElmU2hhZG93RE9NRW5hYmxlZE9y
Tm9kZSogSW50ZXJuYWxzOjp5b3VuZ2VyU2hhZG93Um9vdChOb2RlKiBzaGFkb3csIEV4Y2VwdGlv
bkNvZGUmIGVjKQoreworICAgIGlmICghc2hhZG93IHx8ICFzaGFkb3ctPmlzU2hhZG93Um9vdCgp
KSB7CisgICAgICAgIGVjID0gSU5WQUxJRF9BQ0NFU1NfRVJSOworICAgICAgICByZXR1cm4gMDsK
KyAgICB9CisKKyAgICByZXR1cm4gdG9TaGFkb3dSb290KHNoYWRvdyktPnlvdW5nZXJTaGFkb3dS
b290KCk7Cit9CisKK0ludGVybmFsczo6U2hhZG93Um9vdElmU2hhZG93RE9NRW5hYmxlZE9yTm9k
ZSogSW50ZXJuYWxzOjpvbGRlclNoYWRvd1Jvb3QoTm9kZSogc2hhZG93LCBFeGNlcHRpb25Db2Rl
JiBlYykKK3sKKyAgICBpZiAoIXNoYWRvdyB8fCAhc2hhZG93LT5pc1NoYWRvd1Jvb3QoKSkgewor
ICAgICAgICBlYyA9IElOVkFMSURfQUNDRVNTX0VSUjsKKyAgICAgICAgcmV0dXJuIDA7CisgICAg
fQorCisgICAgcmV0dXJuIHRvU2hhZG93Um9vdChzaGFkb3cpLT5vbGRlclNoYWRvd1Jvb3QoKTsK
K30KKwogdm9pZCBJbnRlcm5hbHM6OnJlbW92ZVNoYWRvd1Jvb3QoRWxlbWVudCogaG9zdCwgRXhj
ZXB0aW9uQ29kZSYgZWMpCiB7CiAgICAgaWYgKCFob3N0KSB7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5oIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRl
cm5hbHMuaAppbmRleCBjNWJlMzhlYWJiZTNmM2UyMGZhZDczYmQzNDlmNGI3N2U3OTgwOWUzLi45
MTljMmYwYWRhNGMyYmJlMGM3MWUzYTM3MWEyZWI4Yjc4ODAxMWNlIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Rlc3Rp
bmcvSW50ZXJuYWxzLmgKQEAgLTU1LDYgKzU1LDggQEAgcHVibGljOgogCiAgICAgU3RyaW5nIGVs
ZW1lbnRSZW5kZXJUcmVlQXNUZXh0KEVsZW1lbnQqLCBFeGNlcHRpb25Db2RlJik7CiAKKyAgICBT
dHJpbmcgYWRkcmVzcyhOb2RlKik7CisKICAgICBib29sIGlzUHJlbG9hZGVkKERvY3VtZW50Kiwg
Y29uc3QgU3RyaW5nJiB1cmwpOwogCiAgICAgc2l6ZV90IG51bWJlck9mU2NvcGVkSFRNTFN0eWxl
Q2hpbGRyZW4oY29uc3QgTm9kZSosIEV4Y2VwdGlvbkNvZGUmKSBjb25zdDsKQEAgLTY4LDYgKzcw
LDggQEAgcHVibGljOgogICAgIFNoYWRvd1Jvb3RJZlNoYWRvd0RPTUVuYWJsZWRPck5vZGUqIHNo
YWRvd1Jvb3QoRWxlbWVudCogaG9zdCwgRXhjZXB0aW9uQ29kZSYpOwogICAgIFNoYWRvd1Jvb3RJ
ZlNoYWRvd0RPTUVuYWJsZWRPck5vZGUqIHlvdW5nZXN0U2hhZG93Um9vdChFbGVtZW50KiBob3N0
LCBFeGNlcHRpb25Db2RlJik7CiAgICAgU2hhZG93Um9vdElmU2hhZG93RE9NRW5hYmxlZE9yTm9k
ZSogb2xkZXN0U2hhZG93Um9vdChFbGVtZW50KiBob3N0LCBFeGNlcHRpb25Db2RlJik7CisgICAg
U2hhZG93Um9vdElmU2hhZG93RE9NRW5hYmxlZE9yTm9kZSogeW91bmdlclNoYWRvd1Jvb3QoTm9k
ZSogc2hhZG93LCBFeGNlcHRpb25Db2RlJik7CisgICAgU2hhZG93Um9vdElmU2hhZG93RE9NRW5h
YmxlZE9yTm9kZSogb2xkZXJTaGFkb3dSb290KE5vZGUqIHNoYWRvdywgRXhjZXB0aW9uQ29kZSYp
OwogICAgIHZvaWQgcmVtb3ZlU2hhZG93Um9vdChFbGVtZW50KiBob3N0LCBFeGNlcHRpb25Db2Rl
Jik7CiAgICAgdm9pZCBzZXRNdWx0aXBsZVNoYWRvd1N1YnRyZWVzRW5hYmxlZChib29sKTsKICAg
ICBFbGVtZW50KiBpbmNsdWRlckZvcihOb2RlKiwgRXhjZXB0aW9uQ29kZSYpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuaWRsIGIvU291cmNlL1dlYkNvcmUv
dGVzdGluZy9JbnRlcm5hbHMuaWRsCmluZGV4IDlkOGQ4YjIyZDY3ZDM0NmVlZmFhNTY4ZGMxOTAw
ZWEyYWZjNjA2ZDMuLjA4OGUzMzkyODZmOWEzYzU4YmI5ZTRlZTFhYzJlOTEwNjRmYWFmMzcgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmlkbAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5pZGwKQEAgLTI3LDYgKzI3LDggQEAgbW9kdWxl
IHdpbmRvdyB7CiAgICAgaW50ZXJmYWNlIFsKICAgICAgICAgT21pdENvbnN0cnVjdG9yCiAgICAg
XSBJbnRlcm5hbHMgeworICAgICAgICBET01TdHJpbmcgYWRkcmVzcyhpbiBOb2RlIG5vZGUpOwor
CiAgICAgICAgIERPTVN0cmluZyBlbGVtZW50UmVuZGVyVHJlZUFzVGV4dChpbiBFbGVtZW50IGVs
ZW1lbnQpIHJhaXNlcyhET01FeGNlcHRpb24pOwogICAgICAgICBib29sZWFuIGlzUHJlbG9hZGVk
KGluIERvY3VtZW50IGRvY3VtZW50LCBpbiBET01TdHJpbmcgdXJsKTsKIApAQCAtMzcsMTEgKzM5
LDE1IEBAIG1vZHVsZSB3aW5kb3cgewogICAgICAgICBTaGFkb3dSb290IHNoYWRvd1Jvb3QoaW4g
RWxlbWVudCBob3N0KSByYWlzZXMgKERPTUV4Y2VwdGlvbik7CiAgICAgICAgIFNoYWRvd1Jvb3Qg
eW91bmdlc3RTaGFkb3dSb290KGluIEVsZW1lbnQgaG9zdCkgcmFpc2VzIChET01FeGNlcHRpb24p
OwogICAgICAgICBTaGFkb3dSb290IG9sZGVzdFNoYWRvd1Jvb3QoaW4gRWxlbWVudCBob3N0KSBy
YWlzZXMgKERPTUV4Y2VwdGlvbik7CisgICAgICAgIFNoYWRvd1Jvb3QgeW91bmdlclNoYWRvd1Jv
b3QoaW4gTm9kZSByb290KSByYWlzZXMgKERPTUV4Y2VwdGlvbik7CisgICAgICAgIFNoYWRvd1Jv
b3Qgb2xkZXJTaGFkb3dSb290KGluIE5vZGUgcm9vdCkgcmFpc2VzIChET01FeGNlcHRpb24pOwog
I2Vsc2UKICAgICAgICAgTm9kZSBlbnN1cmVTaGFkb3dSb290KGluIEVsZW1lbnQgaG9zdCkgcmFp
c2VzIChET01FeGNlcHRpb24pOwogICAgICAgICBOb2RlIHNoYWRvd1Jvb3QoaW4gRWxlbWVudCBo
b3N0KSByYWlzZXMgKERPTUV4Y2VwdGlvbik7CiAgICAgICAgIE5vZGUgeW91bmdlc3RTaGFkb3dS
b290KGluIEVsZW1lbnQgaG9zdCkgcmFpc2VzIChET01FeGNlcHRpb24pOwogICAgICAgICBOb2Rl
IG9sZGVzdFNoYWRvd1Jvb3QoaW4gRWxlbWVudCBob3N0KSByYWlzZXMgKERPTUV4Y2VwdGlvbik7
CisgICAgICAgIE5vZGUgeW91bmdlclNoYWRvd1Jvb3QoaW4gTm9kZSByb290KSByYWlzZXMgKERP
TUV4Y2VwdGlvbik7CisgICAgICAgIE5vZGUgeW91bmdlclNoYWRvd1Jvb3QoaW4gTm9kZSByb290
KSByYWlzZXMgKERPTUV4Y2VwdGlvbik7CiAjZW5kaWYKICAgICAgICAgdm9pZCBzZXRNdWx0aXBs
ZVNoYWRvd1N1YnRyZWVzRW5hYmxlZChpbiBib29sZWFuIGVuYWJsZWQpOwogICAgICAgICBFbGVt
ZW50IGluY2x1ZGVyRm9yKGluIE5vZGUgbm9kZSkgcmFpc2VzIChET01FeGNlcHRpb24pOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdDIvd2luL1dlYktpdDIuZGVmIGIvU291cmNlL1dlYktpdDIv
d2luL1dlYktpdDIuZGVmCmluZGV4IGFiOTk2NTM1NzYwNGJjZDUwYzBmYjg3Yzg3YTc0M2MyNmIz
NGM5M2YuLjVjYWYwMzAwYmRkMWVkYzk5ZDU3Y2NiZDg0MmUzMDAxYTAwYzI3NmQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQyL3dpbi9XZWJLaXQyLmRlZgorKysgYi9Tb3VyY2UvV2ViS2l0Mi93
aW4vV2ViS2l0Mi5kZWYKQEAgLTE3Nyw2ICsxNzcsNyBAQCBFWFBPUlRTCiAgICAgICAgID9wYWlu
dENvbnRyb2xUaW50c0BGcmFtZVZpZXdAV2ViQ29yZUBAQUFFWFhaCiAgICAgICAgID9yYW5nZUZy
b21Mb2NhdGlvbkFuZExlbmd0aEBUZXh0SXRlcmF0b3JAV2ViQ29yZUBAU0E/QVY/JFBhc3NSZWZQ
dHJAVlJhbmdlQFdlYkNvcmVAQEBXVEZAQFBBVkVsZW1lbnRAMkBISF9OQFoKICAgICAgICAgP3Jl
bW92ZUFsbFNoYWRvd1Jvb3RzQFNoYWRvd1RyZWVAV2ViQ29yZUBAUUFFWFhaCisgICAgICAgID9z
X2luZm9ASlNOb2RlQFdlYkNvcmVAQDJVQ2xhc3NJbmZvQEpTQ0BAQgogICAgICAgICA/c2NyaXB0
RXhlY3V0aW9uQ29udGV4dEBKU0RPTUdsb2JhbE9iamVjdEBXZWJDb3JlQEBRQkVQQVZTY3JpcHRF
eGVjdXRpb25Db250ZXh0QDJAWFoKICAgICAgICAgP3Njcm9sbEVsZW1lbnRUb1JlY3RARnJhbWVW
aWV3QFdlYkNvcmVAQFFBRVhQQVZFbGVtZW50QDJAQUJWSW50UmVjdEAyQEBaCiAgICAgICAgID9z
ZXRET01FeGNlcHRpb25AV2ViQ29yZUBAWUFYUEFWRXhlY1N0YXRlQEpTQ0BASEBaCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0Mi93aW4vV2ViS2l0MkNGTGl0ZS5kZWYgYi9Tb3VyY2UvV2ViS2l0
Mi93aW4vV2ViS2l0MkNGTGl0ZS5kZWYKaW5kZXggYjkzOTJkODc5MzQwMjhmMDIzMGYxMmIzYzVm
NDk0MzY3ZDE3MDBiMC4uN2JlMmY1ZjM0NzczYzk1NTZiYjcxMGIzMzk0YjQxZjc0MDhjODg4NCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvd2luL1dlYktpdDJDRkxpdGUuZGVmCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL3dpbi9XZWJLaXQyQ0ZMaXRlLmRlZgpAQCAtMTY5LDcgKzE2OSw4IEBAIEVY
UE9SVFMKICAgICAgICAgP3BhZ2VARG9jdW1lbnRAV2ViQ29yZUBAUUJFUEFWUGFnZUAyQFhaCiAg
ICAgICAgID9wYWludENvbnRyb2xUaW50c0BGcmFtZVZpZXdAV2ViQ29yZUBAQUFFWFhaCiAgICAg
ICAgID9yYW5nZUZyb21Mb2NhdGlvbkFuZExlbmd0aEBUZXh0SXRlcmF0b3JAV2ViQ29yZUBAU0E/
QVY/JFBhc3NSZWZQdHJAVlJhbmdlQFdlYkNvcmVAQEBXVEZAQFBBVkVsZW1lbnRAMkBISF9OQFoK
LSAgICAgICAgP3JlbW92ZUFsbFNoYWRvd1Jvb3RzQFNoYWRvd1RyZWVAV2ViQ29yZUBAUUFFWFha
CisgICAgICAgID9yZW1vdmVTaGFkb3dSb290TGlzdEBFbGVtZW50QFdlYkNvcmVAQFFBRVhYWgor
ICAgICAgICA/c19pbmZvQEpTTm9kZUBXZWJDb3JlQEAyVUNsYXNzSW5mb0BKU0NAQEIKICAgICAg
ICAgP3NjcmlwdEV4ZWN1dGlvbkNvbnRleHRASlNET01HbG9iYWxPYmplY3RAV2ViQ29yZUBAUUJF
UEFWU2NyaXB0RXhlY3V0aW9uQ29udGV4dEAyQFhaCiAgICAgICAgID9zY3JvbGxFbGVtZW50VG9S
ZWN0QEZyYW1lVmlld0BXZWJDb3JlQEBRQUVYUEFWRWxlbWVudEAyQEFCVkludFJlY3RAMkBAWgog
ICAgICAgICA/c2V0RE9NRXhjZXB0aW9uQFdlYkNvcmVAQFlBWFBBVkV4ZWNTdGF0ZUBKU0NAQEhA
WgpkaWZmIC0tZ2l0IGEvU291cmNlL2F1dG90b29scy9zeW1ib2xzLmZpbHRlciBiL1NvdXJjZS9h
dXRvdG9vbHMvc3ltYm9scy5maWx0ZXIKaW5kZXggODYzNDhhZGYwMWUwMTAwYmRlMjcxN2M1NTUz
YTJkODU5MjE3MDhiOS4uNjIxNjcwMDYwMTZjYTUwZDMxMWRlNTI4M2JmYWRhNTAzZmZkYTk1YiAx
MDA2NDQKLS0tIGEvU291cmNlL2F1dG90b29scy9zeW1ib2xzLmZpbHRlcgorKysgYi9Tb3VyY2Uv
YXV0b3Rvb2xzL3N5bWJvbHMuZmlsdGVyCkBAIC02Nyw2ICs2Nyw3IEBAIF9aTjdXZWJDb3JlNkpT
Tm9kZTEwcHV0VmlydHVhbEVQTjNKU0M5RXhlY1N0YXRlRVJLTlMxXzEwSWRlbnRpZmllckVOUzFf
N0pTVmFsdWVFCiBfWk43V2ViQ29yZTZKU05vZGUyMHZpc2l0Q2hpbGRyZW5WaXJ0dWFsRVJOM0pT
QzExU2xvdFZpc2l0b3JFOwogX1pON1dlYkNvcmU2SlNOb2RlNnNfaW5mb0U7CiBfWk43V2ViQ29y
ZTZ0b05vZGVFTjNKU0M3SlNWYWx1ZUU7CitfWk43V2ViQ29yZTdFbGVtZW50MjByZW1vdmVTaGFk
b3dSb290TGlzdEV2OwogX1pON1dlYkNvcmU3dG9SYW5nZUVOM0pTQzdKU1ZhbHVlRTsKIF9aTjdX
ZWJDb3JlOUpTRWxlbWVudDEwcHV0VmlydHVhbEVQTjNKU0M5RXhlY1N0YXRlRVJLTlMxXzEwSWRl
bnRpZmllckVOUzFfN0pTVmFsdWVFUk5TMV8xNVB1dFByb3BlcnR5U2xvdEU7CiBfWk43V2ViQ29y
ZTlKU0VsZW1lbnQ2c19pbmZvRTsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBi
L0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCA3NmVlMzdkMTY1MDcwMTI3YmY2ZjBlMjg1N2Jk
OWE5MTE0N2M2NGM5Li5mMmU5YjJhYWZkOWRiYTZlZjA3NzFlMjdkZDQyNDBlZjI0NzM0YTE1IDEw
MDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdl
TG9nCkBAIC0xLDMgKzEsMjYgQEAKKzIwMTItMDItMjQgIFNoaW55YSBLYXdhbmFrYSAgPHNoaW55
YWtAY2hyb21pdW0ub3JnPgorCisgICAgICAgIEVsZW1lbnQgc2hvdWxkIGJlIGFibGUgdG8gaGF2
ZSBtdWx0aXBsZSBzaGFkb3cgcm9vdHMuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD03NzkzMQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgICogZmFzdC9kb20vcmVzb3VyY2VzL3NoYWRvdy10ZXN0LWRyaXZlci5q
czoKKyAgICAgICAgKGNyZWF0ZVNwYW5XaXRoVGV4dCk6CisgICAgICAgIChkb25lVGVzdCk6Cisg
ICAgICAgIChkb1Rlc3QpOgorICAgICAgICAqIGZhc3QvZG9tL3NoYWRvdy9tdWx0aXBsZS1zaGFk
b3dyb290LWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogZmFzdC9kb20vc2hhZG93L211
bHRpcGxlLXNoYWRvd3Jvb3QtcmVuZGVyaW5nLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAg
ICogZmFzdC9kb20vc2hhZG93L211bHRpcGxlLXNoYWRvd3Jvb3QtcmVuZGVyaW5nLmh0bWw6IEFk
ZGVkLgorICAgICAgICAqIGZhc3QvZG9tL3NoYWRvdy9tdWx0aXBsZS1zaGFkb3dyb290Lmh0bWw6
IEFkZGVkLgorICAgICAgICAqIHBsYXRmb3JtL2VmbC9Ta2lwcGVkOgorICAgICAgICAqIHBsYXRm
b3JtL2d0ay9Ta2lwcGVkOgorICAgICAgICAqIHBsYXRmb3JtL21hYy9Ta2lwcGVkOgorICAgICAg
ICAqIHBsYXRmb3JtL3F0L1NraXBwZWQ6CisgICAgICAgICogcGxhdGZvcm0vd2luL1NraXBwZWQ6
CisgICAgICAgICogcGxhdGZvcm0vd2luY2Fpcm8vU2tpcHBlZDoKKyAgICAgICAgKiBwbGF0Zm9y
bS93azIvU2tpcHBlZDoKKwogMjAxMi0wMi0yOCAgUGhpbGlwcGUgTm9ybWFuZCAgPHBub3JtYW5k
QGlnYWxpYS5jb20+CiAKICAgICAgICAgVW5yZXZpZXdlZCwgR1RLIHRlc3RfZXhwZWN0YXRpb25z
IHVwZGF0ZSwgc2tpcHBpbmcgMiBuZXcgZmFpbGluZwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
ZmFzdC9kb20vcmVzb3VyY2VzL3NoYWRvdy10ZXN0LWRyaXZlci5qcyBiL0xheW91dFRlc3RzL2Zh
c3QvZG9tL3Jlc291cmNlcy9zaGFkb3ctdGVzdC1kcml2ZXIuanMKaW5kZXggOTllM2ViZjZmN2U1
MmVkZGViYjViMzBlNDg5YjBiNmVkYTRlMGNiZS4uMGZmNWQ0MDU4ZTIwN2MxZDBiMjlmMjE4YjAy
OTEyY2ZjYjViOTBmMCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvZmFzdC9kb20vcmVzb3VyY2Vz
L3NoYWRvdy10ZXN0LWRyaXZlci5qcworKysgYi9MYXlvdXRUZXN0cy9mYXN0L2RvbS9yZXNvdXJj
ZXMvc2hhZG93LXRlc3QtZHJpdmVyLmpzCkBAIC01Myw5ICs1MywxMSBAQCBmdW5jdGlvbiBjaGVj
aygpIHsKICAgICB9CiB9CiAKLWZ1bmN0aW9uIGNyZWF0ZVNwYW5XaXRoVGV4dCh0ZXh0KSB7Citm
dW5jdGlvbiBjcmVhdGVTcGFuV2l0aFRleHQodGV4dCwgY2xhc3NOYW1lKSB7CiAgICAgdmFyIHNw
YW4gPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdzcGFuJyk7CiAgICAgc3Bhbi5hcHBlbmRDaGls
ZChkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZSh0ZXh0KSk7CisgICAgaWYgKGNsYXNzTmFtZSkKKyAg
ICAgICAgc3Bhbi5jbGFzc05hbWUgPSBjbGFzc05hbWU7CiAgICAgcmV0dXJuIHNwYW47CiB9CiAK
QEAgLTExOCwxMSArMTIwLDE2IEBAIGZ1bmN0aW9uIGRvVGVzdElmTGVmdChyZXN0VGVzdHMpIHsK
IAogZnVuY3Rpb24gZG9uZVRlc3QoKSB7CiAgICAgbG9nKCJURVNUIENPTVBMRVRFRCIpOworICAg
IGlmICh3aW5kb3cudGVhckRvd25PbmNlKQorICAgICAgICB3aW5kb3cudGVhckRvd25PbmNlKCk7
CiAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIubm90aWZ5RG9uZSgpOwogfQogCiAvLyBBIHRlc3Qg
ZHJpdmVyLiBDYWxsIHRoaXMgYm9keS5vbmxvYWQuCiBmdW5jdGlvbiBkb1Rlc3QodGVzdHMpIHsK
KyAgICBpZiAod2luZG93LnNldFVwT25jZSkKKyAgICAgICAgd2luZG93LnNldFVwT25jZSgpOwor
CiAgICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikgewogICAgICAgICBsYXlvdXRU
ZXN0Q29udHJvbGxlci53YWl0VW50aWxEb25lKCk7CiAgICAgICAgIGxheW91dFRlc3RDb250cm9s
bGVyLmR1bXBBc1RleHQoKTsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZG9tL3NoYWRv
dy9tdWx0aXBsZS1zaGFkb3dyb290LWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2Zhc3QvZG9t
L3NoYWRvdy9tdWx0aXBsZS1zaGFkb3dyb290LWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5hYTNk
ZWRkYzg1NTZjZDdjZTJiZDc1YjYxNTUzZmM1MGU1ODc3NWYzCi0tLSAvZGV2L251bGwKKysrIGIv
TGF5b3V0VGVzdHMvZmFzdC9kb20vc2hhZG93L211bHRpcGxlLXNoYWRvd3Jvb3QtZXhwZWN0ZWQu
dHh0CkBAIC0wLDAgKzEsMTcgQEAKK1RoaXMgdGVzdCBlbnN1cmUgdGhhdCB0aGUgbXVsdGlwbGUg
c2hhZG93IHJvb3QgaXMgYXZhaWxhYmxlLgorCitPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBz
ZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCisK
KworUEFTUyBpbnRlcm5hbHMuc2hhZG93Um9vdChkaXYpIGlzIG51bGwKK1BBU1MgaW50ZXJuYWxz
LnNoYWRvd1Jvb3QoZGl2KSBpcyBzaGFkb3dSb290MQorUEFTUyBpbnRlcm5hbHMub2xkZXJTaGFk
b3dSb290KHNoYWRvd1Jvb3QxKSBpcyBudWxsCitQQVNTIGludGVybmFscy5zaGFkb3dSb290KGRp
dikgaXMgc2hhZG93Um9vdDIKK1BBU1MgaW50ZXJuYWxzLm9sZGVyU2hhZG93Um9vdChzaGFkb3dS
b290MikgaXMgc2hhZG93Um9vdDEKK1BBU1MgaW50ZXJuYWxzLnNoYWRvd1Jvb3QoZGl2KSBpcyBz
aGFkb3dSb290MworUEFTUyBpbnRlcm5hbHMub2xkZXJTaGFkb3dSb290KHNoYWRvd1Jvb3QzKSBp
cyBzaGFkb3dSb290MgorUEFTUyBpbnRlcm5hbHMuc2hhZG93Um9vdChkaXYpIGlzIG51bGwKK1BB
U1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQorCmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9mYXN0L2RvbS9zaGFkb3cvbXVsdGlwbGUtc2hhZG93cm9vdC1yZW5k
ZXJpbmctZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvZmFzdC9kb20vc2hhZG93L211bHRpcGxl
LXNoYWRvd3Jvb3QtcmVuZGVyaW5nLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi43YjlmMDU2MGE3
MTg2YjIyN2Y1OTFlNjgxOWE2Yjc1MGQ5ZGQyMmQzCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0
VGVzdHMvZmFzdC9kb20vc2hhZG93L211bHRpcGxlLXNoYWRvd3Jvb3QtcmVuZGVyaW5nLWV4cGVj
dGVkLnR4dApAQCAtMCwwICsxLDE0IEBACit0ZXN0RG91YmxlU2hhZG93U3VidHJlZXMKK1BBU1MK
K3Rlc3RUcmlwbGVTaGFkb3dTdWJ0cmVlcworUEFTUwordGVzdFNoYWRvd1N1YnRyZWVzV2l0aENv
bnRlbnQKK1BBU1MKK3Rlc3RTaGFkb3dTdWJ0cmVlc1dpdGhDb250ZW50SW5PbGRlclN1YnRyZWUK
K1BBU1MKK3Rlc3RTaGFkb3dTdWJ0cmVlc1dpdGhEeW5hbWljQ3JlYXRpb24KK1BBU1MKK3Rlc3RT
aGFkb3dTdWJ0cmVlc1dpdGhEeW5hbWljQ3JlYXRpb25PdXRPZlRyZWUKK1BBU1MKK1RFU1QgQ09N
UExFVEVECisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZG9tL3NoYWRvdy9tdWx0aXBs
ZS1zaGFkb3dyb290LXJlbmRlcmluZy5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9kb20vc2hhZG93
L211bHRpcGxlLXNoYWRvd3Jvb3QtcmVuZGVyaW5nLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMWViZGUyNjM5
OTZlODZjZGEzZWQ1NmFjMTgzNDU1YTI5MGVkY2YzZgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91
dFRlc3RzL2Zhc3QvZG9tL3NoYWRvdy9tdWx0aXBsZS1zaGFkb3dyb290LXJlbmRlcmluZy5odG1s
CkBAIC0wLDAgKzEsMTc0IEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8c3R5
bGU+CisvKiByZWxhdGl2ZSBwb3NpdGlvbmluZyBlbnN1cmVzIHVuZGVybHlpbmcgUmVuZGVyTGF5
ZXIgKi8KKy5jb250YWluZXIgeworICAgIHBvc2l0aW9uOiByZWxhdGl2ZTsKK30KKworLnNwYW4g
eworICAgIGRpc3BsYXk6IGJveGVkLWlubGluZTsKKyAgICBtYXJnaW46IDJweDsKKyAgICBib3Jk
ZXI6IHNvbGlkOworfQorPC9zdHlsZT4KKzxzY3JpcHQgc3JjPSIuLi9yZXNvdXJjZXMvc2hhZG93
LXRlc3QtZHJpdmVyLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQ+CitmdW5jdGlvbiBzZXRVcE9uY2Uo
KSB7CisgICAgaW50ZXJuYWxzLnNldE11bHRpcGxlU2hhZG93U3VidHJlZXNFbmFibGVkKHRydWUp
OworfQorCitmdW5jdGlvbiB0ZWF0RG93bk9uY2UoKSB7CisgICAgaW50ZXJuYWxzLnNldE11bHRp
cGxlU2hhZG93U3VidHJlZXNFbmFibGVkKGZhbHNlKTsKK30KKwordmFyIHRlc3RGdW5jcyA9IFtd
OworCit0ZXN0RnVuY3MucHVzaChmdW5jdGlvbiB0ZXN0RG91YmxlU2hhZG93U3VidHJlZXMoY2Fs
bElmRG9uZSkgeworICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdleHBlY3QtY29udGFpbmVy
JykuaW5uZXJIVE1MID0gIjxkaXY+PHNwYW4+QkVGT1JFPC9zcGFuPjxzcGFuPk1JRDwvc3Bhbj48
c3Bhbj5BRlRFUjwvc3Bhbj48L2Rpdj4iOworCisgICAgdmFyIHJvb3QgPSBkb2N1bWVudC5jcmVh
dGVFbGVtZW50KCdkaXYnKTsKKyAgICByb290LmFwcGVuZENoaWxkKGNyZWF0ZVNwYW5XaXRoVGV4
dCgnTElHSFQnKSk7CisKKyAgICB2YXIgc3IxID0gbmV3IFdlYktpdFNoYWRvd1Jvb3Qocm9vdCk7
CisgICAgc3IxLmFwcGVuZENoaWxkKGNyZWF0ZVNwYW5XaXRoVGV4dCgnQkVGT1JFOiBTSE9VTEQg
Tk9UIEJFIFJFTkRFUkVEJykpOworICAgIHNyMS5hcHBlbmRDaGlsZChjcmVhdGVTcGFuV2l0aFRl
eHQoJ01JRDogU0hPVUxEIE5PVCBCRSBSRU5ERVJFRCcpKTsKKyAgICBzcjEuYXBwZW5kQ2hpbGQo
Y3JlYXRlU3BhbldpdGhUZXh0KCdBRlRFUjogU0hPVUxEIE5PVCBCRSBSRU5ERVJFRCcpKTsKKwor
ICAgIHZhciBzcjIgPSBuZXcgV2ViS2l0U2hhZG93Um9vdChyb290KTsKKyAgICBzcjIuYXBwZW5k
Q2hpbGQoY3JlYXRlU3BhbldpdGhUZXh0KCdCRUZPUkUnKSk7CisgICAgc3IyLmFwcGVuZENoaWxk
KGNyZWF0ZVNwYW5XaXRoVGV4dCgnTUlEJykpOworICAgIHNyMi5hcHBlbmRDaGlsZChjcmVhdGVT
cGFuV2l0aFRleHQoJ0FGVEVSJykpOworCisgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2Fj
dHVhbC1jb250YWluZXInKS5hcHBlbmRDaGlsZChyb290KTsKKworICAgIGNhbGxJZkRvbmUoKTsK
K30pOworCit0ZXN0RnVuY3MucHVzaChmdW5jdGlvbiB0ZXN0VHJpcGxlU2hhZG93U3VidHJlZXMo
Y2FsbElmRG9uZSkgeworICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdleHBlY3QtY29udGFp
bmVyJykuaW5uZXJIVE1MID0gIjxkaXY+PHNwYW4+QkVGT1JFPC9zcGFuPjxzcGFuPk1JRDwvc3Bh
bj48c3Bhbj5BRlRFUjwvc3Bhbj48L2Rpdj4iOworCisgICAgdmFyIHJvb3QgPSBkb2N1bWVudC5j
cmVhdGVFbGVtZW50KCdkaXYnKTsKKyAgICByb290LmFwcGVuZENoaWxkKGNyZWF0ZVNwYW5XaXRo
VGV4dCgnTElHSFQnKSk7CisKKyAgICB2YXIgc3IxID0gbmV3IFdlYktpdFNoYWRvd1Jvb3Qocm9v
dCk7CisgICAgc3IxLmFwcGVuZENoaWxkKGNyZWF0ZVNwYW5XaXRoVGV4dCgnQkVGT1JFOiBTSE9V
TEQgTk9UIEJFIFJFTkRFUkVEJykpOworICAgIHNyMS5hcHBlbmRDaGlsZChjcmVhdGVTcGFuV2l0
aFRleHQoJ01JRDogU0hPVUxEIE5PVCBCRSBSRU5ERVJFRCcpKTsKKyAgICBzcjEuYXBwZW5kQ2hp
bGQoY3JlYXRlU3BhbldpdGhUZXh0KCdBRlRFUjogU0hPVUxEIE5PVCBCRSBSRU5ERVJFRCcpKTsK
KworICAgIHZhciBzcjIgPSBuZXcgV2ViS2l0U2hhZG93Um9vdChyb290KTsKKyAgICBzcjIuYXBw
ZW5kQ2hpbGQoY3JlYXRlU3BhbldpdGhUZXh0KCdCRUZPUkU6IFNIT1VMRCBOT1QgQkUgUkVOREVS
RUQnKSk7CisgICAgc3IyLmFwcGVuZENoaWxkKGNyZWF0ZVNwYW5XaXRoVGV4dCgnTUlEOiBTSE9V
TEQgTk9UIEJFIFJFTkRFUkVEJykpOworICAgIHNyMi5hcHBlbmRDaGlsZChjcmVhdGVTcGFuV2l0
aFRleHQoJ0FGVEVSOiBTSE9VTEQgTk9UIEJFIFJFTkRFUkVEJykpOworCisgICAgdmFyIHNyMyA9
IG5ldyBXZWJLaXRTaGFkb3dSb290KHJvb3QpOworICAgIHNyMy5hcHBlbmRDaGlsZChjcmVhdGVT
cGFuV2l0aFRleHQoJ0JFRk9SRScpKTsKKyAgICBzcjMuYXBwZW5kQ2hpbGQoY3JlYXRlU3Bhbldp
dGhUZXh0KCdNSUQnKSk7CisgICAgc3IzLmFwcGVuZENoaWxkKGNyZWF0ZVNwYW5XaXRoVGV4dCgn
QUZURVInKSk7CisKKyAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnYWN0dWFsLWNvbnRhaW5l
cicpLmFwcGVuZENoaWxkKHJvb3QpOworCisgICAgY2FsbElmRG9uZSgpOworfSk7CisKK3Rlc3RG
dW5jcy5wdXNoKGZ1bmN0aW9uIHRlc3RTaGFkb3dTdWJ0cmVlc1dpdGhDb250ZW50KGNhbGxJZkRv
bmUpIHsKKyAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZXhwZWN0LWNvbnRhaW5lcicpLmlu
bmVySFRNTCA9ICI8ZGl2PjxzcGFuPkJFRk9SRTwvc3Bhbj48c3Bhbj5MSUdIVDwvc3Bhbj48c3Bh
bj5BRlRFUjwvc3Bhbj48L2Rpdj4iOworCisgICAgdmFyIHJvb3QgPSBkb2N1bWVudC5jcmVhdGVF
bGVtZW50KCdkaXYnKTsKKyAgICByb290LmFwcGVuZENoaWxkKGNyZWF0ZVNwYW5XaXRoVGV4dCgn
TElHSFQnKSk7CisKKyAgICB2YXIgc3IxID0gbmV3IFdlYktpdFNoYWRvd1Jvb3Qocm9vdCk7Cisg
ICAgc3IxLmFwcGVuZENoaWxkKGNyZWF0ZVNwYW5XaXRoVGV4dCgnQkVGT1JFOiBTSE9VTEQgTk9U
IEJFIFJFTkRFUkVEJykpOworICAgIHNyMS5hcHBlbmRDaGlsZChjcmVhdGVTcGFuV2l0aFRleHQo
J01JRDogU0hPVUxEIE5PVCBCRSBSRU5ERVJFRCcpKTsKKyAgICBzcjEuYXBwZW5kQ2hpbGQoY3Jl
YXRlU3BhbldpdGhUZXh0KCdBRlRFUjogU0hPVUxEIE5PVCBCRSBSRU5ERVJFRCcpKTsKKworICAg
IHZhciBzcjIgPSBuZXcgV2ViS2l0U2hhZG93Um9vdChyb290KTsKKyAgICBzcjIuYXBwZW5kQ2hp
bGQoY3JlYXRlU3BhbldpdGhUZXh0KCdCRUZPUkUnKSk7CisgICAgc3IyLmFwcGVuZENoaWxkKGNy
ZWF0ZUNvbnRlbnRXaXRoU2VsZWN0KCdzcGFuJywgJ0ZBTExCQUNLJykpOworICAgIHNyMi5hcHBl
bmRDaGlsZChjcmVhdGVTcGFuV2l0aFRleHQoJ0FGVEVSJykpOworCisgICAgZG9jdW1lbnQuZ2V0
RWxlbWVudEJ5SWQoJ2FjdHVhbC1jb250YWluZXInKS5hcHBlbmRDaGlsZChyb290KTsKKworICAg
IGNhbGxJZkRvbmUoKTsKK30pOworCit0ZXN0RnVuY3MucHVzaChmdW5jdGlvbiB0ZXN0U2hhZG93
U3VidHJlZXNXaXRoQ29udGVudEluT2xkZXJTdWJ0cmVlKGNhbGxJZkRvbmUpIHsKKyAgICBkb2N1
bWVudC5nZXRFbGVtZW50QnlJZCgnZXhwZWN0LWNvbnRhaW5lcicpLmlubmVySFRNTCA9ICI8ZGl2
PjxzcGFuPkJFRk9SRTwvc3Bhbj48c3Bhbj5MSUdIVCAxPC9zcGFuPjxzcGFuPkFGVEVSPC9zcGFu
PjwvZGl2PiI7CisKKyAgICB2YXIgcm9vdCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2Rpdicp
OworICAgIHJvb3QuYXBwZW5kQ2hpbGQoY3JlYXRlU3BhbldpdGhUZXh0KCdMSUdIVCAxJywgJ2Mx
JykpOworICAgIHJvb3QuYXBwZW5kQ2hpbGQoY3JlYXRlU3BhbldpdGhUZXh0KCdMSUdIVCAyJywg
J2MyJykpOworCisgICAgdmFyIHNyMSA9IG5ldyBXZWJLaXRTaGFkb3dSb290KHJvb3QpOworICAg
IHNyMS5hcHBlbmRDaGlsZChjcmVhdGVTcGFuV2l0aFRleHQoJ0JFRk9SRTogU0hPVUxEIE5PVCBC
RSBSRU5ERVJFRCcpKTsKKyAgICBzcjEuYXBwZW5kQ2hpbGQoY3JlYXRlQ29udGVudFdpdGhTZWxl
Y3QoJy5jMicsICdGQUxMQkFDSycpKTsKKyAgICBzcjEuYXBwZW5kQ2hpbGQoY3JlYXRlU3Bhbldp
dGhUZXh0KCdBRlRFUjogU0hPVUxEIE5PVCBCRSBSRU5ERVJFRCcpKTsKKworICAgIHZhciBzcjIg
PSBuZXcgV2ViS2l0U2hhZG93Um9vdChyb290KTsKKyAgICBzcjIuYXBwZW5kQ2hpbGQoY3JlYXRl
U3BhbldpdGhUZXh0KCdCRUZPUkUnKSk7CisgICAgc3IyLmFwcGVuZENoaWxkKGNyZWF0ZUNvbnRl
bnRXaXRoU2VsZWN0KCcuYzEnLCAnRkFMTEJBQ0snKSk7CisgICAgc3IyLmFwcGVuZENoaWxkKGNy
ZWF0ZVNwYW5XaXRoVGV4dCgnQUZURVInKSk7CisKKyAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJ
ZCgnYWN0dWFsLWNvbnRhaW5lcicpLmFwcGVuZENoaWxkKHJvb3QpOworCisgICAgY2FsbElmRG9u
ZSgpOworfSk7CisKK3Rlc3RGdW5jcy5wdXNoKGZ1bmN0aW9uIHRlc3RTaGFkb3dTdWJ0cmVlc1dp
dGhEeW5hbWljQ3JlYXRpb24oY2FsbElmRG9uZSkgeworICAgIGRvY3VtZW50LmdldEVsZW1lbnRC
eUlkKCdleHBlY3QtY29udGFpbmVyJykuaW5uZXJIVE1MID0gIjxkaXY+PHNwYW4+QkVGT1JFPC9z
cGFuPjxzcGFuPkxJR0hUIDE8L3NwYW4+PHNwYW4+TElHSFQgMjwvc3Bhbj48c3Bhbj5BRlRFUjwv
c3Bhbj48L2Rpdj4iOworCisgICAgdmFyIHJvb3QgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdk
aXYnKTsKKyAgICByb290LmFwcGVuZENoaWxkKGNyZWF0ZVNwYW5XaXRoVGV4dCgnTElHSFQgMScs
ICdjMScpKTsKKyAgICByb290LmFwcGVuZENoaWxkKGNyZWF0ZVNwYW5XaXRoVGV4dCgnTElHSFQg
MicsICdjMicpKTsKKworICAgIHZhciBzcjEgPSBuZXcgV2ViS2l0U2hhZG93Um9vdChyb290KTsK
KyAgICBzcjEuYXBwZW5kQ2hpbGQoY3JlYXRlU3BhbldpdGhUZXh0KCdCRUZPUkU6IFNIT1VMRCBO
T1QgQkUgUkVOREVSRUQnKSk7CisgICAgc3IxLmFwcGVuZENoaWxkKGNyZWF0ZUNvbnRlbnRXaXRo
U2VsZWN0KCdzcGFuJywgJ0ZBTExCQUNLJykpOworICAgIHNyMS5hcHBlbmRDaGlsZChjcmVhdGVT
cGFuV2l0aFRleHQoJ0FGVEVSOiBTSE9VTEQgTk9UIEJFIFJFTkRFUkVEJykpOworCisgICAgZG9j
dW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2FjdHVhbC1jb250YWluZXInKS5hcHBlbmRDaGlsZChyb290
KTsKKworICAgIHNldFRpbWVvdXQoKGZ1bmN0aW9uKGNhbGxJZkRvbmUsIHJvb3QpIHsgcmV0dXJu
IGZ1bmN0aW9uKCkgeworICAgICAgICB2YXIgc3IyID0gbmV3IFdlYktpdFNoYWRvd1Jvb3Qocm9v
dCk7CisgICAgICAgIHNyMi5hcHBlbmRDaGlsZChjcmVhdGVTcGFuV2l0aFRleHQoJ0JFRk9SRScp
KTsKKyAgICAgICAgc3IyLmFwcGVuZENoaWxkKGNyZWF0ZUNvbnRlbnRXaXRoU2VsZWN0KCdzcGFu
JywgJ0ZBTExCQUNLJykpOworICAgICAgICBzcjIuYXBwZW5kQ2hpbGQoY3JlYXRlU3BhbldpdGhU
ZXh0KCdBRlRFUicpKTsKKworICAgICAgICBjYWxsSWZEb25lKCk7CisgICAgfTt9KShjYWxsSWZE
b25lLCByb290KSwgMCk7Cit9KTsKKwordGVzdEZ1bmNzLnB1c2goZnVuY3Rpb24gdGVzdFNoYWRv
d1N1YnRyZWVzV2l0aER5bmFtaWNDcmVhdGlvbk91dE9mVHJlZShjYWxsSWZEb25lKSB7CisgICAg
ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2V4cGVjdC1jb250YWluZXInKS5pbm5lckhUTUwgPSAi
PGRpdj48c3Bhbj5CRUZPUkU8L3NwYW4+PHNwYW4+TElHSFQgMTwvc3Bhbj48c3Bhbj5MSUdIVCAy
PC9zcGFuPjxzcGFuPkFGVEVSPC9zcGFuPjwvZGl2PiI7CisKKyAgICB2YXIgcm9vdCA9IGRvY3Vt
ZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpOworICAgIHJvb3QuYXBwZW5kQ2hpbGQoY3JlYXRlU3Bh
bldpdGhUZXh0KCdMSUdIVCAxJywgJ2MxJykpOworICAgIHJvb3QuYXBwZW5kQ2hpbGQoY3JlYXRl
U3BhbldpdGhUZXh0KCdMSUdIVCAyJywgJ2MyJykpOworCisgICAgdmFyIHNyMSA9IG5ldyBXZWJL
aXRTaGFkb3dSb290KHJvb3QpOworICAgIHNyMS5hcHBlbmRDaGlsZChjcmVhdGVTcGFuV2l0aFRl
eHQoJ0JFRk9SRTogU0hPVUxEIE5PVCBCRSBSRU5ERVJFRCcpKTsKKyAgICBzcjEuYXBwZW5kQ2hp
bGQoY3JlYXRlQ29udGVudFdpdGhTZWxlY3QoJ3NwYW4nLCAnRkFMTEJBQ0snKSk7CisgICAgc3Ix
LmFwcGVuZENoaWxkKGNyZWF0ZVNwYW5XaXRoVGV4dCgnQUZURVI6IFNIT1VMRCBOT1QgQkUgUkVO
REVSRUQnKSk7CisKKyAgICBzZXRUaW1lb3V0KChmdW5jdGlvbihjYWxsSWZEb25lLCByb290KSB7
IHJldHVybiBmdW5jdGlvbigpIHsKKyAgICAgICAgdmFyIHNyMiA9IG5ldyBXZWJLaXRTaGFkb3dS
b290KHJvb3QpOworICAgICAgICBzcjIuYXBwZW5kQ2hpbGQoY3JlYXRlU3BhbldpdGhUZXh0KCdC
RUZPUkUnKSk7CisgICAgICAgIHNyMi5hcHBlbmRDaGlsZChjcmVhdGVDb250ZW50V2l0aFNlbGVj
dCgnc3BhbicsICdGQUxMQkFDSycpKTsKKyAgICAgICAgc3IyLmFwcGVuZENoaWxkKGNyZWF0ZVNw
YW5XaXRoVGV4dCgnQUZURVInKSk7CisKKyAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQo
J2FjdHVhbC1jb250YWluZXInKS5hcHBlbmRDaGlsZChyb290KTsKKworICAgICAgICBjYWxsSWZE
b25lKCk7CisgICAgfTt9KShjYWxsSWZEb25lLCByb290KSwgMCk7Cit9KTsKKzwvc2NyaXB0Pgor
PC9oZWFkPgorPGJvZHkgb25sb2FkPSJkb1Rlc3QodGVzdEZ1bmNzKSI+CisKKzxkaXYgaWQ9ImFj
dHVhbC1jb250YWluZXIiIGNsYXNzPSJjb250YWluZXIiPjwvZGl2PgorPGRpdiBpZD0iZXhwZWN0
LWNvbnRhaW5lciIgY2xhc3M9ImNvbnRhaW5lciI+PC9kaXY+Cis8cHJlIGlkPSJjb25zb2xlIj48
L3ByZT4KKworPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9k
b20vc2hhZG93L211bHRpcGxlLXNoYWRvd3Jvb3QuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvZG9t
L3NoYWRvdy9tdWx0aXBsZS1zaGFkb3dyb290Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNDA5YmVjMDc2YWUz
YjFmY2QxMmU5NzQ4NDQzNjYyYzgwODEwYmRmYgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRl
c3RzL2Zhc3QvZG9tL3NoYWRvdy9tdWx0aXBsZS1zaGFkb3dyb290Lmh0bWwKQEAgLTAsMCArMSwz
NSBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorPHNjcmlwdCBzcmM9Ii4uLy4u
L2pzL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4K
KzxzY3JpcHQ+CitkZXNjcmlwdGlvbigiVGhpcyB0ZXN0IGVuc3VyZSB0aGF0IHRoZSBtdWx0aXBs
ZSBzaGFkb3cgcm9vdCBpcyBhdmFpbGFibGUuIik7CisKK2ludGVybmFscy5zZXRNdWx0aXBsZVNo
YWRvd1N1YnRyZWVzRW5hYmxlZCh0cnVlKTsKKwordmFyIGRpdiA9IGRvY3VtZW50LmNyZWF0ZUVs
ZW1lbnQoJ2RpdicpOworc2hvdWxkQmUoImludGVybmFscy5zaGFkb3dSb290KGRpdikiLCAibnVs
bCIpOwordmFyIHNoYWRvd1Jvb3QxID0gbmV3IFdlYktpdFNoYWRvd1Jvb3QoZGl2KTsKK3Nob3Vs
ZEJlKCJpbnRlcm5hbHMuc2hhZG93Um9vdChkaXYpIiwgInNoYWRvd1Jvb3QxIik7CitzaG91bGRC
ZSgiaW50ZXJuYWxzLm9sZGVyU2hhZG93Um9vdChzaGFkb3dSb290MSkiLCAibnVsbCIpOworCit2
YXIgc2hhZG93Um9vdDIgPSBuZXcgV2ViS2l0U2hhZG93Um9vdChkaXYpCitzaG91bGRCZSgiaW50
ZXJuYWxzLnNoYWRvd1Jvb3QoZGl2KSIsICJzaGFkb3dSb290MiIpOworc2hvdWxkQmUoImludGVy
bmFscy5vbGRlclNoYWRvd1Jvb3Qoc2hhZG93Um9vdDIpIiwgInNoYWRvd1Jvb3QxIik7CisKK3Zh
ciBzaGFkb3dSb290MyA9IG5ldyBXZWJLaXRTaGFkb3dSb290KGRpdik7CitzaG91bGRCZSgiaW50
ZXJuYWxzLnNoYWRvd1Jvb3QoZGl2KSIsICJzaGFkb3dSb290MyIpOworc2hvdWxkQmUoImludGVy
bmFscy5vbGRlclNoYWRvd1Jvb3Qoc2hhZG93Um9vdDMpIiwgInNoYWRvd1Jvb3QyIik7CisKK2lu
dGVybmFscy5yZW1vdmVTaGFkb3dSb290KGRpdik7CitzaG91bGRCZSgiaW50ZXJuYWxzLnNoYWRv
d1Jvb3QoZGl2KSIsICJudWxsIik7CisKK2ludGVybmFscy5zZXRNdWx0aXBsZVNoYWRvd1N1YnRy
ZWVzRW5hYmxlZChmYWxzZSk7CisKK3ZhciBzdWNjZXNzZnVsbHlQYXJzZWQgPSB0cnVlOworPC9z
Y3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vanMvcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+
PC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0
Zm9ybS9lZmwvU2tpcHBlZCBiL0xheW91dFRlc3RzL3BsYXRmb3JtL2VmbC9Ta2lwcGVkCmluZGV4
IGNkMTUxYTdiNDZhOTAxZjQwYzA1YmIwN2NjZGE2MzU2ZTE4YjEwOTkuLmQ2MzIwOTk4NWM1ZGM5
YWQyYzM4ZDdlNTY0ZTlkNmE5YjJkMzgwZTcgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3BsYXRm
b3JtL2VmbC9Ta2lwcGVkCisrKyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL2VmbC9Ta2lwcGVkCkBA
IC0yMDkxLDYgKzIwOTEsOCBAQCBmYXN0L2RvbS9zaGFkb3cvc2hhZG93LXJvb3QtanMtYXBpLmh0
bWwKIGZhc3QvZG9tL3NoYWRvdy9zaGFkb3ctZGlzYWJsZS5odG1sCiBmYXN0L2RvbS9zaGFkb3cv
c2hhZG93LXJvb3QtYXR0YWNoZWQuaHRtbAogZmFzdC9kb20vc2hhZG93L3NoYWRvdy1yb290LW5l
dy5odG1sCitmYXN0L2RvbS9zaGFkb3cvbXVsdGlwbGUtc2hhZG93cm9vdC5odG1sCitmYXN0L2Rv
bS9zaGFkb3cvbXVsdGlwbGUtc2hhZG93cm9vdC1yZW5kZXJpbmcuaHRtbAogCiAjIENTUyBGaWx0
ZXJzIHN1cHBvcnQgbm90IHlldCBlbmFibGVkIChuZWVkcyBFTkFCTEVfQ1NTX0ZJTFRFUlMpLgog
IyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9Njg0NjkKZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy9Ta2lwcGVkIGIvTGF5b3V0VGVzdHMvcGxhdGZv
cm0vbWFjL1NraXBwZWQKaW5kZXggOGZiNWVkMzE1ODljMWY2ODAxNjE4N2I0NzBjMzNmOTI1NmJj
MTAwMS4uYWVkMDY0ZDlkMDkzYTUzYTEzZDgwZDYwNDQ1YWNiYWVlNDZjNzA4OSAxMDA2NDQKLS0t
IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL1NraXBwZWQKKysrIGIvTGF5b3V0VGVzdHMvcGxh
dGZvcm0vbWFjL1NraXBwZWQKQEAgLTQzMCw2ICs0MzAsOCBAQCBmYXN0L2RvbS9zaGFkb3cvc2hh
ZG93LWRpc2FibGUuaHRtbAogZmFzdC9kb20vc2hhZG93L3NoYWRvdy1yb290LWF0dGFjaGVkLmh0
bWwKIGZhc3QvZG9tL3NoYWRvdy9zaGFkb3ctcm9vdC1uZXcuaHRtbAogZmFzdC9kb20vc2hhZG93
L3NoYWRvdy11bC1saS5odG1sCitmYXN0L2RvbS9zaGFkb3cvbXVsdGlwbGUtc2hhZG93cm9vdC5o
dG1sCitmYXN0L2RvbS9zaGFkb3cvbXVsdGlwbGUtc2hhZG93cm9vdC1yZW5kZXJpbmcuaHRtbAog
CiAjIEpTQyBkb2VzIG5vdCBzdXBwb3J0IHNldElzb2xhdGVkV29ybGRTZWN1cml0eU9yaWdpbiAo
aHR0cDovL3dlYmtpdC5vcmcvYi82MTU0MCkKIGh0dHAvdGVzdHMvc2VjdXJpdHkvaXNvbGF0ZWRX
b3JsZC9jcm9zcy1vcmlnaW4teGhyLmh0bWwKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsYXRm
b3JtL3F0L1NraXBwZWQgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9xdC9Ta2lwcGVkCmluZGV4IGE5
OGQ3OTEyYjBkMjIyNTJiN2M5ZWEwZjNjMzdhMTc1YjA5NmEwMDQuLjVkZGQyZWU0ZWIxYjg4MTBi
ZDc5ZmM4OGI2NmFhNzk4ZjY1NTE2YTUgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3BsYXRmb3Jt
L3F0L1NraXBwZWQKKysrIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vcXQvU2tpcHBlZApAQCAtMTY4
LDYgKzE2OCw4IEBAIGZhc3QvZG9tL3NoYWRvdy9zaGFkb3ctb24taW1hZ2UuaHRtbAogZmFzdC9k
b20vc2hhZG93L3NoYWRvdy1yb290LWF0dGFjaGVkLmh0bWwKIGZhc3QvZG9tL3NoYWRvdy9zaGFk
b3ctcm9vdC1uZXcuaHRtbAogZmFzdC9kb20vc2hhZG93L3NoYWRvdy11bC1saS5odG1sCitmYXN0
L2RvbS9zaGFkb3cvbXVsdGlwbGUtc2hhZG93cm9vdC5odG1sCitmYXN0L2RvbS9zaGFkb3cvbXVs
dGlwbGUtc2hhZG93cm9vdC1yZW5kZXJpbmcuaHRtbAogCiAjIENTUyBSZWdpb25zIHN1cHBvcnQg
bm90IHlldCBlbmFibGVkLiBodHRwOi8vd2Via2l0Lm9yZy9iLzU3MzEyCiBmYXN0L3JlZ2lvbnMK
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL3dpbi9Ta2lwcGVkIGIvTGF5b3V0VGVz
dHMvcGxhdGZvcm0vd2luL1NraXBwZWQKaW5kZXggMDAwMzYxZjljODU5N2Y2ZTEyYmMxMDBmMzk0
YTM1YzA3MjQyNWYwZC4uMjRiNzY4MmQ1Yzk2ZTQ1MmM5OTFjYjU4ZWU5ZWVhNGU0NTY1ZTk1ZCAx
MDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vd2luL1NraXBwZWQKKysrIGIvTGF5b3V0
VGVzdHMvcGxhdGZvcm0vd2luL1NraXBwZWQKQEAgLTE0NTksNiArMTQ1OSw4IEBAIGZhc3QvZG9t
L3NoYWRvdy9zaGFkb3ctZGlzYWJsZS5odG1sCiBmYXN0L2RvbS9zaGFkb3cvc2hhZG93LXJvb3Qt
YXR0YWNoZWQuaHRtbAogZmFzdC9kb20vc2hhZG93L3NoYWRvdy1yb290LW5ldy5odG1sCiBmYXN0
L2RvbS9zaGFkb3cvc2hhZG93LXVsLWxpLmh0bWwKK2Zhc3QvZG9tL3NoYWRvdy9tdWx0aXBsZS1z
aGFkb3dyb290Lmh0bWwKK2Zhc3QvZG9tL3NoYWRvdy9tdWx0aXBsZS1zaGFkb3dyb290LXJlbmRl
cmluZy5odG1sCiAKICMgQ1NTIFJlZ2lvbnMgc3VwcG9ydCBub3QgeWV0IGVuYWJsZWQuIGh0dHA6
Ly93ZWJraXQub3JnL2IvNTczMTIKIGZhc3QvcmVnaW9ucwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvcGxhdGZvcm0vd2luY2Fpcm8vU2tpcHBlZCBiL0xheW91dFRlc3RzL3BsYXRmb3JtL3dpbmNh
aXJvL1NraXBwZWQKaW5kZXggZTZlZDg3OWVlMDlmMTQwNDIxZTdmZjY3NDM0NDhlZWU1ZTZlYmI0
Zi4uOWUzYzY3YjljZGM5Y2Q4OTY2ZmNlZjRiNDU0NGY1NDNhYjlhOGYxMiAxMDA2NDQKLS0tIGEv
TGF5b3V0VGVzdHMvcGxhdGZvcm0vd2luY2Fpcm8vU2tpcHBlZAorKysgYi9MYXlvdXRUZXN0cy9w
bGF0Zm9ybS93aW5jYWlyby9Ta2lwcGVkCkBAIC0xOTY5LDYgKzE5NjksOCBAQCBmYXN0L2RvbS9z
aGFkb3cvc2hhZG93LXJvb3QtanMtYXBpLmh0bWwKIGZhc3QvZG9tL3NoYWRvdy9zaGFkb3ctZGlz
YWJsZS5odG1sCiBmYXN0L2RvbS9zaGFkb3cvc2hhZG93LXJvb3QtYXR0YWNoZWQuaHRtbAogZmFz
dC9kb20vc2hhZG93L3NoYWRvdy1yb290LW5ldy5odG1sCitmYXN0L2RvbS9zaGFkb3cvbXVsdGlw
bGUtc2hhZG93cm9vdC5odG1sCitmYXN0L2RvbS9zaGFkb3cvbXVsdGlwbGUtc2hhZG93cm9vdC1y
ZW5kZXJpbmcuaHRtbAogCiAjIENTUyBSZWdpb25zIHN1cHBvcnQgbm90IHlldCBlbmFibGVkLiBo
dHRwOi8vd2Via2l0Lm9yZy9iLzU3MzEyCiBmYXN0L3JlZ2lvbnMKZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL3BsYXRmb3JtL3drMi9Ta2lwcGVkIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vd2syL1Nr
aXBwZWQKaW5kZXggNDE1NzBjZGY1YzVmNDAwYmU2OWU3YTc2OWJlYjhjMjMxZTcxMDQ3Ny4uODVh
OWJlYjYxYzFhNjVmMTE0NDRiNWM5NDJiYTg4NWY1OTY3NzhlNSAxMDA2NDQKLS0tIGEvTGF5b3V0
VGVzdHMvcGxhdGZvcm0vd2syL1NraXBwZWQKKysrIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vd2sy
L1NraXBwZWQKQEAgLTEwNzAsNiArMTA3MCw4IEBAIGZhc3QvZG9tL3NoYWRvdy9zaGFkb3ctZGlz
YWJsZS5odG1sCiBmYXN0L2RvbS9zaGFkb3cvc2hhZG93LXJvb3QtYXR0YWNoZWQuaHRtbAogZmFz
dC9kb20vc2hhZG93L3NoYWRvdy1yb290LW5ldy5odG1sCiBmYXN0L2RvbS9zaGFkb3cvc2hhZG93
LXVsLWxpLmh0bWwKK2Zhc3QvZG9tL3NoYWRvdy9tdWx0aXBsZS1zaGFkb3dyb290Lmh0bWwKK2Zh
c3QvZG9tL3NoYWRvdy9tdWx0aXBsZS1zaGFkb3dyb290LXJlbmRlcmluZy5odG1sCiAKICMgV1RS
IG5lZWRzIGFuIGltcGxlbWVudGF0aW9uIGZvciBldmVudFNlbmRlci5jb250aW51b3VzTW91c2VT
Y3JvbGxCeQogIyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9Njk0MTcK
ZGlmZiAtLWdpdCBhL0NoYW5nZUxvZyBiL0NoYW5nZUxvZwppbmRleCA1MTZlMzJkNDY3NTIxZmUx
ZTViN2VkMzdkY2E2ODI5ZWVjNjkwMjMxLi5iNTU5YmY1NmU1OTY1ZDkwYWM2YzVjMWVjNjVjNzE4
ZjZlZTZkOGNhIDEwMDY0NAotLS0gYS9DaGFuZ2VMb2cKKysrIGIvQ2hhbmdlTG9nCkBAIC0xLDMg
KzEsMTIgQEAKKzIwMTItMDItMjQgIFNoaW55YSBLYXdhbmFrYSAgPHNoaW55YWtAY2hyb21pdW0u
b3JnPgorCisgICAgICAgIEVsZW1lbnQgc2hvdWxkIGJlIGFibGUgdG8gaGF2ZSBtdWx0aXBsZSBz
aGFkb3cgcm9vdHMuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD03NzkzMQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgICogU291cmNlL2F1dG90b29scy9zeW1ib2xzLmZpbHRlcjoKKwogMjAxMi0wMi0yNyAgU2hp
bnlhIEthd2FuYWthICA8c2hpbnlha0BjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgRWxlbWVudDo6
cmVtb3ZlU2hhZG93Um9vdCgpIGFuZCBzZXRTaGFkb3dSb290KCkgc2hvdWxkIGJlIG1vdmVkIGlu
dG8gU2hhZG93VHJlZS4K
</data>

          </attachment>
      

    </bug>

</bugzilla>