<?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>64249</bug_id>
          
          <creation_ts>2011-07-10 21:19:11 -0700</creation_ts>
          <short_desc>Implement proper handling of focusin/focusout events in regard to shadow DOM boundaries.</short_desc>
          <delta_ts>2011-08-15 04:02:31 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>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>65529</dependson>
    
    <dependson>65613</dependson>
    
    <dependson>65899</dependson>
          <blocked>59805</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Hayato Ito">hayato</reporter>
          <assigned_to name="Hayato Ito">hayato</assigned_to>
          <cc>dglazkov</cc>
    
    <cc>dominicc</cc>
    
    <cc>morrita</cc>
    
    <cc>rolandsteiner</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>434666</commentid>
    <comment_count>0</comment_count>
    <who name="Hayato Ito">hayato</who>
    <bug_when>2011-07-10 21:19:11 -0700</bug_when>
    <thetext>Implement proper handling of focusin/focusout events in regard to shadow DOM boundaries.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>445152</commentid>
    <comment_count>1</comment_count>
      <attachid>102627</attachid>
    <who name="Hayato Ito">hayato</who>
    <bug_when>2011-08-02 01:44:55 -0700</bug_when>
    <thetext>Created attachment 102627
wip</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>445159</commentid>
    <comment_count>2</comment_count>
    <who name="Hayato Ito">hayato</who>
    <bug_when>2011-08-02 01:58:43 -0700</bug_when>
    <thetext>The patch is not ready for review. I am going to break this patch into several patches as follows:

 1).  At first, make EventDispatchMediator RefCountable object.
 2).  Second, update ScopedEventQueue so that it can queue EventDispatchMediator.
 3).  Next, fix a small bug for EventDispatcher::dispatchEvent.
 4).  At last, introduce FocusInEventDispatchMediator / FocusOutEventDispatchMediator.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>450346</commentid>
    <comment_count>3</comment_count>
      <attachid>103750</attachid>
    <who name="Hayato Ito">hayato</who>
    <bug_when>2011-08-12 00:58:41 -0700</bug_when>
    <thetext>Created attachment 103750
introduce FocusIn/FocusOutEventDispatchMediator</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>450347</commentid>
    <comment_count>4</comment_count>
    <who name="Hayato Ito">hayato</who>
    <bug_when>2011-08-12 01:01:19 -0700</bug_when>
    <thetext>All separated patches have been landed. The patch is ready for a review.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>450483</commentid>
    <comment_count>5</comment_count>
      <attachid>103750</attachid>
    <who name="Dimitri Glazkov (Google)">dglazkov</who>
    <bug_when>2011-08-12 10:22:37 -0700</bug_when>
    <thetext>Comment on attachment 103750
introduce FocusIn/FocusOutEventDispatchMediator

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

&gt; Source/WebCore/dom/Event.h:249
&gt; +class FocusInEventDispatchMediator : public EventDispatchMediator {
&gt; +public:
&gt; +    static PassRefPtr&lt;FocusInEventDispatchMediator&gt; create(PassRefPtr&lt;Event&gt;, PassRefPtr&lt;Node&gt; oldFocusedNode);
&gt; +private:
&gt; +    explicit FocusInEventDispatchMediator(PassRefPtr&lt;Event&gt;, PassRefPtr&lt;Node&gt; oldFocusedNode);
&gt; +    virtual bool dispatchEvent(EventDispatcher*) const;
&gt; +    RefPtr&lt;Node&gt; m_oldFocusedNode;
&gt; +};
&gt; +
&gt; +class FocusOutEventDispatchMediator : public EventDispatchMediator {
&gt; +public:
&gt; +    static PassRefPtr&lt;FocusOutEventDispatchMediator&gt; create(PassRefPtr&lt;Event&gt;, PassRefPtr&lt;Node&gt; newFocusedNode);
&gt; +private:
&gt; +    explicit FocusOutEventDispatchMediator(PassRefPtr&lt;Event&gt;, PassRefPtr&lt;Node&gt; newFocusedNode);
&gt; +    virtual bool dispatchEvent(EventDispatcher*) const;
&gt; +    RefPtr&lt;Node&gt; m_newFocusedNode;
&gt; +};

Should these go into UIEvent.h/cpp?

&gt; Source/WebCore/dom/Node.cpp:2826
&gt; +        dispatchDOMActivateEvent(detail, event);

Nice!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>451023</commentid>
    <comment_count>6</comment_count>
    <who name="Hayato Ito">hayato</who>
    <bug_when>2011-08-15 03:57:49 -0700</bug_when>
    <thetext>Thank you for the review.

(In reply to comment #5)
&gt; (From update of attachment 103750 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=103750&amp;action=review
&gt; Should these go into UIEvent.h/cpp?

Sure. After moving that, I&apos;ll land this patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>451025</commentid>
    <comment_count>7</comment_count>
    <who name="Hayato Ito">hayato</who>
    <bug_when>2011-08-15 04:02:31 -0700</bug_when>
    <thetext>Committed r93038: &lt;http://trac.webkit.org/changeset/93038&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>102627</attachid>
            <date>2011-08-02 01:44:55 -0700</date>
            <delta_ts>2011-08-12 00:58:35 -0700</delta_ts>
            <desc>wip</desc>
            <filename>bug-64249-20110802174453.patch</filename>
            <type>text/plain</type>
            <size>33795</size>
            <attacher name="Hayato Ito">hayato</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogOTIxNjIKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5n
ZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCA4YWUyYjNiZjlmYTJhYTRhODUxZjBi
MTVkNWNhOGU5OTBjZTQ4MmE3Li5mMTM3NzVlYjQ1N2U4NDAyNzIzYzJhNTVkMTBmZTJmNDE1NjAz
ODIzIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMv
Q2hhbmdlTG9nCkBAIC0xLDMgKzEsMTMgQEAKKzIwMTEtMDgtMDIgIEhheWF0byBJdG8gIDxoYXlh
dG9AY2hyb21pdW0ub3JnPgorCisgICAgICAgIEltcGxlbWVudCBwcm9wZXIgaGFuZGxpbmcgb2Yg
Zm9jdXNpbi9mb2N1c291dCBldmVudHMgaW4gcmVnYXJkIHRvIHNoYWRvdyBET00gYm91bmRhcmll
cy4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTY0MjQ5
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBmYXN0
L2RvbS9zaGFkb3cvc2hhZG93LWJvdW5kYXJ5LWZvY3VzaW4tZm9jdXNvdXQtZXhwZWN0ZWQudHh0
OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2RvbS9zaGFkb3cvc2hhZG93LWJvdW5kYXJ5LWZvY3Vz
aW4tZm9jdXNvdXQuaHRtbDogQWRkZWQuCisKIDIwMTEtMDgtMDEgIFpoZW55YW8gTW8gIDx6bW9A
Z29vZ2xlLmNvbT4KIAogICAgICAgICBVbnJldmlld2VkLCByZWJhc2VsaW5lLCB3ZWJraXQgZ2Fy
ZGVuZXIgc3R1ZmYuCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2RvbS9zaGFkb3cvc2hh
ZG93LWJvdW5kYXJ5LWZvY3VzaW4tZm9jdXNvdXQtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMv
ZmFzdC9kb20vc2hhZG93L3NoYWRvdy1ib3VuZGFyeS1mb2N1c2luLWZvY3Vzb3V0LWV4cGVjdGVk
LnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi4yYjI0MWQwNGRiYzA0Y2IwZjkzNmRmYjI0NWJiNzExMmZhZDAyOThk
Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9kb20vc2hhZG93L3NoYWRvdy1i
b3VuZGFyeS1mb2N1c2luLWZvY3Vzb3V0LWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDE2IEBACitU
ZXN0cyB0byBlbnN1cmUgdGhhdCBzaGFkb3cgRE9NIGJvdW5kYXJ5IGlzIG5vdCBjcm9zc2VkIGR1
cmluZyBldmVudCBwcm9wYWdhdGlvbi4gQ2FuIG9ubHkgcnVuIHdpdGhpbiBEUlQuCisKK09uIHN1
Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2Vk
IGJ5ICJURVNUIENPTVBMRVRFIi4KKworCitQQVNTIGV2ZW50UmVjb3Jkc1siZm9jdXNpbiJdIGlz
IFsiaW5wdXQyKGlucHV0MikiLCAiZGl2QShpbnB1dDIpIl0KK1BBU1MgZXZlbnRSZWNvcmRzWyJm
b2N1c291dCJdIGlzIFsiaW5wdXQxKGlucHV0MSkiLCAiZGl2QShpbnB1dDEpIl0KK1BBU1MgZXZl
bnRSZWNvcmRzWyJmb2N1c2luIl0gaXMgWyJpbnB1dEcoaW5wdXRHKSJdCitQQVNTIGV2ZW50UmVj
b3Jkc1siZm9jdXNvdXQiXSBpcyBbImlucHV0RihpbnB1dEYpIl0KK1BBU1MgZXZlbnRSZWNvcmRz
WyJmb2N1c2luIl0gaXMgWyJpbnB1dEsoaW5wdXRLKSIsICJzaGFkb3dKKHNoYWRvd0opIiwgInNo
YWRvd0koc2hhZG93SSkiLCAiZGl2SChzaGFkb3dJKSJdCitQQVNTIGV2ZW50UmVjb3Jkc1siZm9j
dXNvdXQiXSBpcyBbImlucHV0RihpbnB1dEYpIiwgInNoYWRvd0Uoc2hhZG93RSkiLCAic2hhZG93
RChzaGFkb3dEKSIsICJkaXZDKHNoYWRvd0QpIl0KK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlz
IHRydWUKKworVEVTVCBDT01QTEVURQorCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3Qv
ZG9tL3NoYWRvdy9zaGFkb3ctYm91bmRhcnktZm9jdXNpbi1mb2N1c291dC5odG1sIGIvTGF5b3V0
VGVzdHMvZmFzdC9kb20vc2hhZG93L3NoYWRvdy1ib3VuZGFyeS1mb2N1c2luLWZvY3Vzb3V0Lmh0
bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uMWRiYjFjOTY5YjkxYzE0OTJmZjE3MDE0MDM2MjNhYTUxZDA0ODllNgot
LS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZG9tL3NoYWRvdy9zaGFkb3ctYm91
bmRhcnktZm9jdXNpbi1mb2N1c291dC5odG1sCkBAIC0wLDAgKzEsMTA1IEBACis8IURPQ1RZUEUg
aHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vanMvcmVzb3VyY2VzL2pz
LXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvY3JlYXRlLWRv
bS5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxwIGlkPSJkZXNjcmlwdGlvbiI+PC9w
PgorPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+Cis8ZGl2IGlkPSJzYW5kYm94Ij48L2Rpdj4KKzxz
Y3JpcHQ+CitkZXNjcmlwdGlvbigiVGVzdHMgdG8gZW5zdXJlIHRoYXQgc2hhZG93IERPTSBib3Vu
ZGFyeSBpcyBub3QgY3Jvc3NlZCBkdXJpbmcgZXZlbnQgcHJvcGFnYXRpb24uIENhbiBvbmx5IHJ1
biB3aXRoaW4gRFJULiIpOworCit2YXIgZXZlbnRSZWNvcmRzID0ge307CisKK2Z1bmN0aW9uIGNs
ZWFyRXZlbnRSZWNvcmRzKCkKK3sKKyAgICBldmVudFJlY29yZHMgPSB7fTsKK30KKworZnVuY3Rp
b24gcmVjb3JkRXZlbnQoZXZlbnQpCit7CisgICAgdmFyIGV2ZW50VHlwZSA9IGV2ZW50LnR5cGUK
KyAgICBpZiAoIWV2ZW50UmVjb3Jkc1tldmVudFR5cGVdKSB7CisgICAgICAgIGV2ZW50UmVjb3Jk
c1tldmVudFR5cGVdID0gW10KKyAgICB9CisgICAgdmFyIGV2ZW50U3RyaW5nID0gJyc7CisgICAg
aWYgKGV2ZW50LmN1cnJlbnRUYXJnZXQpCisgICAgICAgIGV2ZW50U3RyaW5nICs9IGV2ZW50LmN1
cnJlbnRUYXJnZXQuaWQ7CisgICAgZXZlbnRTdHJpbmcgKz0gJygnICsgIGV2ZW50LnRhcmdldC5p
ZCArICcpJzsKKyAgICBldmVudFJlY29yZHNbZXZlbnRUeXBlXS5wdXNoKGV2ZW50U3RyaW5nKTsK
K30KKworZnVuY3Rpb24gZ2V0RWxlbWVudEluU2hhZG93KHBhdGgpCit7CisgICAgdmFyIGlkcyA9
IHBhdGguc3BsaXQoJy8nKTsKKyAgICB2YXIgZWxlbWVudCA9IGRvY3VtZW50LmdldEVsZW1lbnRC
eUlkKGlkc1swXSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGVsZW1lbnQgIT0gbnVsbCAmJiBpIDwg
aWRzLmxlbmd0aDsgKytpKSB7CisgICAgICAgIHZhciBzaGFkb3dSb290ID0gaW50ZXJuYWxzLnNo
YWRvd1Jvb3QoZWxlbWVudCk7CisgICAgICAgIGVsZW1lbnQgPSBpbnRlcm5hbHMuZ2V0RWxlbWVu
dEJ5SWRJblNoYWRvd1Jvb3Qoc2hhZG93Um9vdCwgaWRzW2ldKTsKKyAgICB9CisgICAgcmV0dXJu
IGVsZW1lbnQ7Cit9CisKK2Z1bmN0aW9uIHByZXBhcmVEb21UcmVlKHBhcmVudCkKK3sKKyAgICBw
YXJlbnQuYXBwZW5kQ2hpbGQoCisgICAgICAgIGNyZWF0ZURvbSgnZGl2JywgeydpZCc6ICdkaXZB
J30sCisgICAgICAgICAgICAgICAgICBjcmVhdGVEb20oJ2lucHV0JywgeydpZCc6ICdpbnB1dDEn
fSksCisgICAgICAgICAgICAgICAgICBjcmVhdGVEb20oJ2lucHV0JywgeydpZCc6ICdpbnB1dDIn
fSksCisgICAgICAgICAgICAgICAgICBjcmVhdGVTaGFkb3coJ2RpdicsIHsnaWQnOiAnc2hhZG93
QicsICd0YWJpbmRleCc6IDB9LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNyZWF0
ZURvbSgnZGl2JywgeydpZCc6ICdkaXZDJ30sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGNyZWF0ZVNoYWRvdygnZGl2JywgeydpZCc6ICdzaGFkb3dEJywgJ3RhYmlu
ZGV4JzogMH0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBjcmVhdGVTaGFkb3coJ2RpdicsIHsnaWQnOiAnc2hhZG93RScsICd0YWJpbmRleCc6
IDB9LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGNyZWF0ZURvbSgnaW5wdXQnLCB7J2lkJzogJ2lucHV0Rid9KSwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBjcmVhdGVEb20oJ2lucHV0JywgeydpZCc6ICdpbnB1dEcnfSkpKSksCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgY3JlYXRlRG9tKCdkaXYnLCB7J2lkJzogJ2RpdkgnfSwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3JlYXRlU2hhZG93KCdk
aXYnLCB7J2lkJzogJ3NoYWRvd0knLCAndGFiaW5kZXgnOiAwfSwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNyZWF0ZVNoYWRvdygnZGl2Jywg
eydpZCc6ICdzaGFkb3dKJywgJ3RhYmluZGV4JzogMH0sCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3JlYXRlRG9tKCdp
bnB1dCcsIHsnaWQnOiAnaW5wdXRLJ30pKSkpKSkpOworCisgICAgdmFyIGlkcyA9IFsnZGl2QScs
ICdpbnB1dDEnLCAnaW5wdXQyJywKKyAgICAgICAgICAgICAgICdzaGFkb3dCJywgJ3NoYWRvd0Iv
ZGl2QycsICdzaGFkb3dCL3NoYWRvd0QnLCAnc2hhZG93Qi9zaGFkb3dEL3NoYWRvd0UnLAorICAg
ICAgICAgICAgICAgJ3NoYWRvd0Ivc2hhZG93RC9zaGFkb3dFL2lucHV0RicsICdzaGFkb3dCL3No
YWRvd0Qvc2hhZG93RS9pbnB1dEcnLAorICAgICAgICAgICAgICAgJ3NoYWRvd0IvZGl2SCcsICdz
aGFkb3dCL3NoYWRvd0knLCAnc2hhZG93Qi9zaGFkb3dJL3NoYWRvd0onLCAnc2hhZG93Qi9zaGFk
b3dJL3NoYWRvd0ovaW5wdXRLJ107CisgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBpZHMubGVuZ3Ro
OyArK2kpIHsKKyAgICAgICAgdmFyIGVsZW1lbnQgPSBnZXRFbGVtZW50SW5TaGFkb3coaWRzW2ld
KTsKKyAgICAgICAgZWxlbWVudC5hZGRFdmVudExpc3RlbmVyKCdmb2N1c2luJywgcmVjb3JkRXZl
bnQsIGZhbHNlKTsKKyAgICAgICAgZWxlbWVudC5hZGRFdmVudExpc3RlbmVyKCdmb2N1c291dCcs
IHJlY29yZEV2ZW50LCBmYWxzZSk7CisgICAgfQorfQorCitmdW5jdGlvbiBtb3ZlRm9jdXMob2xk
Rm9jdXNlZE5vZGVJZCwgIG5ld0ZvY3VzZWROb2RlSWQpCit7CisgICAgZ2V0RWxlbWVudEluU2hh
ZG93KG9sZEZvY3VzZWROb2RlSWQpLmZvY3VzKCk7CisgICAgY2xlYXJFdmVudFJlY29yZHMoKTsK
KyAgICBnZXRFbGVtZW50SW5TaGFkb3cobmV3Rm9jdXNlZE5vZGVJZCkuZm9jdXMoKTsKK30KKwor
ZnVuY3Rpb24gdGVzdCgpCit7CisgICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikK
KyAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOworICAgIHByZXBhcmVE
b21UcmVlKGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdzYW5kYm94JykpOworCisgICAgbW92ZUZv
Y3VzKCdpbnB1dDEnLCAnaW5wdXQyJyk7CisgICAgc2hvdWxkQmUoJ2V2ZW50UmVjb3Jkc1siZm9j
dXNpbiJdJywgJ1siaW5wdXQyKGlucHV0MikiLCAiZGl2QShpbnB1dDIpIl0nKTsKKyAgICBzaG91
bGRCZSgnZXZlbnRSZWNvcmRzWyJmb2N1c291dCJdJywgJ1siaW5wdXQxKGlucHV0MSkiLCAiZGl2
QShpbnB1dDEpIl0nKTsKKworICAgIG1vdmVGb2N1cygnc2hhZG93Qi9zaGFkb3dEL3NoYWRvd0Uv
aW5wdXRGJywgJ3NoYWRvd0Ivc2hhZG93RC9zaGFkb3dFL2lucHV0RycpOworICAgIHNob3VsZEJl
KCdldmVudFJlY29yZHNbImZvY3VzaW4iXScsICdbImlucHV0RyhpbnB1dEcpIl0nKTsKKyAgICBz
aG91bGRCZSgnZXZlbnRSZWNvcmRzWyJmb2N1c291dCJdJywgJ1siaW5wdXRGKGlucHV0RikiXScp
OworCisgICAgbW92ZUZvY3VzKCdzaGFkb3dCL3NoYWRvd0Qvc2hhZG93RS9pbnB1dEYnLCAnc2hh
ZG93Qi9zaGFkb3dJL3NoYWRvd0ovaW5wdXRLJyk7CisgICAgc2hvdWxkQmUoJ2V2ZW50UmVjb3Jk
c1siZm9jdXNpbiJdJywgJ1siaW5wdXRLKGlucHV0SykiLCAic2hhZG93SihzaGFkb3dKKSIsICJz
aGFkb3dJKHNoYWRvd0kpIiwgImRpdkgoc2hhZG93SSkiXScpOworICAgIHNob3VsZEJlKCdldmVu
dFJlY29yZHNbImZvY3Vzb3V0Il0nLCAnWyJpbnB1dEYoaW5wdXRGKSIsICJzaGFkb3dFKHNoYWRv
d0UpIiwgInNoYWRvd0Qoc2hhZG93RCkiLCAiZGl2QyhzaGFkb3dEKSJdJyk7Cit9CisKK3Rlc3Qo
KTsKKwordmFyIHN1Y2Nlc3NmdWxseVBhcnNlZCA9IHRydWU7Cis8L3NjcmlwdD4KKzxzY3JpcHQg
c3JjPSIuLi8uLi9qcy9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KKzwvYm9k
eT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJj
ZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCA0N2E4NjFlMmE1ODczZGIyOGUwY2ViYjc0NDI5NWM1
NTA5MjZkZWIwLi41ZjM5NDA1YmFkZTAxZWQ5ZDc5ZWUwYTgxZWJhOWFkNDJlNjEwMjY0IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsNTggQEAKKzIwMTEtMDgtMDIgIEhheWF0byBJdG8gIDxoYXlhdG9A
Y2hyb21pdW0ub3JnPgorCisgICAgICAgIEltcGxlbWVudCBwcm9wZXIgaGFuZGxpbmcgb2YgZm9j
dXNpbi9mb2N1c291dCBldmVudHMgaW4gcmVnYXJkIHRvIHNoYWRvdyBET00gYm91bmRhcmllcy4K
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTY0MjQ5CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGVzdDogZmFz
dC9kb20vc2hhZG93L3NoYWRvdy1ib3VuZGFyeS1mb2N1c2luLWZvY3Vzb3V0Lmh0bWwKKworICAg
ICAgICAqIGRvbS9Eb2N1bWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6c2V0
Rm9jdXNlZE5vZGUpOgorICAgICAgICAqIGRvbS9FdmVudC5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpFdmVudERpc3BhdGNoTWVkaWF0b3I6OnNldEV2ZW50VGFyZ2V0KToKKyAgICAgICAgKFdlYkNv
cmU6OkZvY3VzSW5FdmVudERpc3BhdGNoTWVkaWF0b3I6OmNyZWF0ZSk6CisgICAgICAgIChXZWJD
b3JlOjpGb2N1c0luRXZlbnREaXNwYXRjaE1lZGlhdG9yOjpGb2N1c0luRXZlbnREaXNwYXRjaE1l
ZGlhdG9yKToKKyAgICAgICAgKFdlYkNvcmU6OkZvY3VzSW5FdmVudERpc3BhdGNoTWVkaWF0b3I6
OmRpc3BhdGNoRXZlbnQpOgorICAgICAgICAoV2ViQ29yZTo6Rm9jdXNPdXRFdmVudERpc3BhdGNo
TWVkaWF0b3I6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpGb2N1c091dEV2ZW50RGlzcGF0
Y2hNZWRpYXRvcjo6Rm9jdXNPdXRFdmVudERpc3BhdGNoTWVkaWF0b3IpOgorICAgICAgICAoV2Vi
Q29yZTo6Rm9jdXNPdXRFdmVudERpc3BhdGNoTWVkaWF0b3I6OmRpc3BhdGNoRXZlbnQpOgorICAg
ICAgICAqIGRvbS9FdmVudC5oOgorICAgICAgICAoV2ViQ29yZTo6RXZlbnREaXNwYXRjaE1lZGlh
dG9yOjpjcmVhdGUpOgorICAgICAgICAqIGRvbS9FdmVudERpc3BhdGNoZXIuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6RXZlbnREaXNwYXRjaGVyOjpkaXNwYXRjaEV2ZW50KToKKyAgICAgICAgKFdl
YkNvcmU6OkV2ZW50RGlzcGF0Y2hlcjo6ZGlzcGF0Y2hTY29wZWRFdmVudERpc3BhdGNoTWVkaWF0
b3IpOgorICAgICAgICAoV2ViQ29yZTo6RXZlbnREaXNwYXRjaGVyOjphZGp1c3RUb1NoYWRvd0Jv
dW5kYXJpZXMpOgorICAgICAgICAqIGRvbS9FdmVudERpc3BhdGNoZXIuaDoKKyAgICAgICAgKiBk
b20vRXZlbnRUYXJnZXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RXZlbnRUYXJnZXQ6OmZpcmVF
dmVudExpc3RlbmVycyk6CisgICAgICAgICogZG9tL0tleWJvYXJkRXZlbnQuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6S2V5Ym9hcmRFdmVudERpc3BhdGNoTWVkaWF0b3I6OmNyZWF0ZSk6CisgICAg
ICAgICogZG9tL0tleWJvYXJkRXZlbnQuaDoKKyAgICAgICAgKiBkb20vTW91c2VFdmVudC5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpNb3VzZUV2ZW50RGlzcGF0Y2hNZWRpYXRvcjo6Y3JlYXRlKToK
KyAgICAgICAgKiBkb20vTW91c2VFdmVudC5oOgorICAgICAgICAqIGRvbS9Ob2RlLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6Ok5vZGU6OmRpc3BhdGNoU2NvcGVkRXZlbnREaXNwYXRjaE1lZGlhdG9y
KToKKyAgICAgICAgKFdlYkNvcmU6Ok5vZGU6OmRpc3BhdGNoRXZlbnQpOgorICAgICAgICAoV2Vi
Q29yZTo6Tm9kZTo6ZGlzcGF0Y2hGb2N1c0luRXZlbnQpOgorICAgICAgICAoV2ViQ29yZTo6Tm9k
ZTo6ZGlzcGF0Y2hGb2N1c091dEV2ZW50KToKKyAgICAgICAgKFdlYkNvcmU6Ok5vZGU6OmRpc3Bh
dGNoVUlFdmVudCk6CisgICAgICAgIChXZWJDb3JlOjpOb2RlOjpkaXNwYXRjaEtleUV2ZW50KToK
KyAgICAgICAgKFdlYkNvcmU6Ok5vZGU6OmRpc3BhdGNoTW91c2VFdmVudCk6CisgICAgICAgIChX
ZWJDb3JlOjpOb2RlOjpkaXNwYXRjaFdoZWVsRXZlbnQpOgorICAgICAgICAqIGRvbS9Ob2RlLmg6
CisgICAgICAgICogZG9tL1Njb3BlZEV2ZW50UXVldWUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
U2NvcGVkRXZlbnRRdWV1ZUl0ZW06OmRpc3BhdGNoRXZlbnQpOgorICAgICAgICAoV2ViQ29yZTo6
U2NvcGVkRXZlbnRRdWV1ZUl0ZW06OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpTY29wZWRF
dmVudFF1ZXVlSXRlbTo6U2NvcGVkRXZlbnRRdWV1ZUl0ZW0pOgorICAgICAgICAoV2ViQ29yZTo6
U2NvcGVkRXZlbnRRdWV1ZTo6ZW5xdWV1ZUV2ZW50KToKKyAgICAgICAgKFdlYkNvcmU6OlNjb3Bl
ZEV2ZW50UXVldWU6OmRpc3BhdGNoQWxsRXZlbnRzKToKKyAgICAgICAgKiBkb20vU2NvcGVkRXZl
bnRRdWV1ZS5oOgorICAgICAgICAqIGRvbS9XaGVlbEV2ZW50LmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OldoZWVsRXZlbnREaXNwYXRjaE1lZGlhdG9yOjpjcmVhdGUpOgorICAgICAgICAqIGRvbS9X
aGVlbEV2ZW50Lmg6CisKIDIwMTEtMDgtMDEgIEplYW4tbHVjIEJyb3VpbGxldCAgPGplYW5sdWNA
Y2hyb21pdW0ub3JnPgogCiAgICAgICAgIFJlbW92aW5nIG9sZCBzb3VyY2UgZmlsZXMgaW4gZ3lw
IGZpbGVzIHRoYXQgc2xvdyBidWlsZApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0Rv
Y3VtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAKaW5kZXggZmQyODg2
ZTllZWFjNzNkMmFjMjRiYjNjZjgwYWE0YjVmY2ExZTE5My4uYzllYzdiMTFkN2MxYWM1YTRiZjQy
NThmM2IxNzM1YTUyZmJlYjVkNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3Vt
ZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCkBAIC0zMTMzLDEw
ICszMTMzLDEwIEBAIGJvb2wgRG9jdW1lbnQ6OnNldEZvY3VzZWROb2RlKFBhc3NSZWZQdHI8Tm9k
ZT4gcHJwTmV3Rm9jdXNlZE5vZGUpCiAgICAgICAgICAgICBuZXdGb2N1c2VkTm9kZSA9IDA7CiAg
ICAgICAgIH0KICAgICAgICAgCi0gICAgICAgIG9sZEZvY3VzZWROb2RlLT5kaXNwYXRjaFVJRXZl
bnQoZXZlbnROYW1lcygpLmZvY3Vzb3V0RXZlbnQsIDAsIDApOyAvLyBET00gbGV2ZWwgMyBuYW1l
IGZvciB0aGUgYnViYmxpbmcgYmx1ciBldmVudC4KKyAgICAgICAgb2xkRm9jdXNlZE5vZGUtPmRp
c3BhdGNoRm9jdXNPdXRFdmVudChldmVudE5hbWVzKCkuZm9jdXNvdXRFdmVudCwgbmV3Rm9jdXNl
ZE5vZGUpOyAvLyBET00gbGV2ZWwgMyBuYW1lIGZvciB0aGUgYnViYmxpbmcgYmx1ciBldmVudC4K
ICAgICAgICAgLy8gRklYTUU6IFdlIHNob3VsZCByZW1vdmUgZmlyaW5nIERPTUZvY3VzT3V0RXZl
bnQgZXZlbnQgd2hlbiB3ZSBhcmUgc3VyZSBubyBjb250ZW50IGRlcGVuZHMKICAgICAgICAgLy8g
b24gaXQsIHByb2JhYmx5IHdoZW4gPHJkYXI6Ly9wcm9ibGVtLzg1MDM5NTg+IGlzIHJlc29sdmVk
LgotICAgICAgICBvbGRGb2N1c2VkTm9kZS0+ZGlzcGF0Y2hVSUV2ZW50KGV2ZW50TmFtZXMoKS5E
T01Gb2N1c091dEV2ZW50LCAwLCAwKTsgLy8gRE9NIGxldmVsIDIgbmFtZSBmb3IgY29tcGF0aWJp
bGl0eS4KKyAgICAgICAgb2xkRm9jdXNlZE5vZGUtPmRpc3BhdGNoRm9jdXNPdXRFdmVudChldmVu
dE5hbWVzKCkuRE9NRm9jdXNPdXRFdmVudCwgbmV3Rm9jdXNlZE5vZGUpOyAvLyBET00gbGV2ZWwg
MiBuYW1lIGZvciBjb21wYXRpYmlsaXR5LgogCiAgICAgICAgIGlmIChtX2ZvY3VzZWROb2RlKSB7
CiAgICAgICAgICAgICAvLyBoYW5kbGVyIHNoaWZ0ZWQgZm9jdXMKQEAgLTMxNzcsMTAgKzMxNzcs
MTAgQEAgYm9vbCBEb2N1bWVudDo6c2V0Rm9jdXNlZE5vZGUoUGFzc1JlZlB0cjxOb2RlPiBwcnBO
ZXdGb2N1c2VkTm9kZSkKICAgICAgICAgICAgIGdvdG8gU2V0Rm9jdXNlZE5vZGVEb25lOwogICAg
ICAgICB9CiAKLSAgICAgICAgbV9mb2N1c2VkTm9kZS0+ZGlzcGF0Y2hVSUV2ZW50KGV2ZW50TmFt
ZXMoKS5mb2N1c2luRXZlbnQsIDAsIDApOyAvLyBET00gbGV2ZWwgMyBidWJibGluZyBmb2N1cyBl
dmVudC4KKyAgICAgICAgbV9mb2N1c2VkTm9kZS0+ZGlzcGF0Y2hGb2N1c0luRXZlbnQoZXZlbnRO
YW1lcygpLmZvY3VzaW5FdmVudCwgb2xkRm9jdXNlZE5vZGUpOyAvLyBET00gbGV2ZWwgMyBidWJi
bGluZyBmb2N1cyBldmVudC4KICAgICAgICAgLy8gRklYTUU6IFdlIHNob3VsZCByZW1vdmUgZmly
aW5nIERPTUZvY3VzSW5FdmVudCBldmVudCB3aGVuIHdlIGFyZSBzdXJlIG5vIGNvbnRlbnQgZGVw
ZW5kcwogICAgICAgICAvLyBvbiBpdCwgcHJvYmFibHkgd2hlbiA8cmRhcjovL3Byb2JsZW0vODUw
Mzk1OD4gaXMgcmVzb2x2ZWQuCi0gICAgICAgIG1fZm9jdXNlZE5vZGUtPmRpc3BhdGNoVUlFdmVu
dChldmVudE5hbWVzKCkuRE9NRm9jdXNJbkV2ZW50LCAwLCAwKTsgLy8gRE9NIGxldmVsIDIgZm9y
IGNvbXBhdGliaWxpdHkuCisgICAgICAgIG1fZm9jdXNlZE5vZGUtPmRpc3BhdGNoRm9jdXNJbkV2
ZW50KGV2ZW50TmFtZXMoKS5ET01Gb2N1c0luRXZlbnQsIG9sZEZvY3VzZWROb2RlKTsgLy8gRE9N
IGxldmVsIDIgZm9yIGNvbXBhdGliaWxpdHkuCiAKICAgICAgICAgaWYgKG1fZm9jdXNlZE5vZGUg
IT0gbmV3Rm9jdXNlZE5vZGUpIHsgCiAgICAgICAgICAgICAvLyBoYW5kbGVyIHNoaWZ0ZWQgZm9j
dXMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FdmVudC5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9kb20vRXZlbnQuY3BwCmluZGV4IDE3NThhMjdlNDQxODZhOGEyZTcxYWQ1NWQ4NDk2ZWM1
N2E4ZGQzMzMuLjg4MWMxNTAwMWI3M2IwMDhjMmE0NTgwNzhjNGVlNTJhMzI1NDEwOGYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FdmVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
ZG9tL0V2ZW50LmNwcApAQCAtMjk4LDkgKzI5OCw0OCBAQCBFdmVudERpc3BhdGNoTWVkaWF0b3I6
On5FdmVudERpc3BhdGNoTWVkaWF0b3IoKQogewogfQogCit2b2lkIEV2ZW50RGlzcGF0Y2hNZWRp
YXRvcjo6c2V0RXZlbnRUYXJnZXQoUGFzc1JlZlB0cjxFdmVudFRhcmdldD4gdGFyZ2V0KQorewor
ICAgIGV2ZW50KCktPnNldFRhcmdldCh0YXJnZXQpOworfQorCiBib29sIEV2ZW50RGlzcGF0Y2hN
ZWRpYXRvcjo6ZGlzcGF0Y2hFdmVudChFdmVudERpc3BhdGNoZXIqIGRpc3BhdGNoZXIpIGNvbnN0
CiB7CiAgICAgcmV0dXJuIGRpc3BhdGNoZXItPmRpc3BhdGNoRXZlbnQobV9ldmVudC5nZXQoKSk7
CiB9CiAKK1Bhc3NSZWZQdHI8Rm9jdXNJbkV2ZW50RGlzcGF0Y2hNZWRpYXRvcj4gRm9jdXNJbkV2
ZW50RGlzcGF0Y2hNZWRpYXRvcjo6Y3JlYXRlKFBhc3NSZWZQdHI8RXZlbnQ+IGV2ZW50LCBQYXNz
UmVmUHRyPE5vZGU+IG9sZEZvY3VzZWROb2RlKQoreworICAgIHJldHVybiBhZG9wdFJlZihuZXcg
Rm9jdXNJbkV2ZW50RGlzcGF0Y2hNZWRpYXRvcihldmVudCwgb2xkRm9jdXNlZE5vZGUpKTsKK30K
KworRm9jdXNJbkV2ZW50RGlzcGF0Y2hNZWRpYXRvcjo6Rm9jdXNJbkV2ZW50RGlzcGF0Y2hNZWRp
YXRvcihQYXNzUmVmUHRyPEV2ZW50PiBldmVudCwgUGFzc1JlZlB0cjxOb2RlPiBvbGRGb2N1c2Vk
Tm9kZSkKKyAgICA6IG1fb2xkRm9jdXNlZE5vZGUob2xkRm9jdXNlZE5vZGUpCit7CisgICAgc2V0
RXZlbnQoZXZlbnQpOworfQorCitib29sIEZvY3VzSW5FdmVudERpc3BhdGNoTWVkaWF0b3I6OmRp
c3BhdGNoRXZlbnQoRXZlbnREaXNwYXRjaGVyKiBkaXNwYXRjaGVyKSBjb25zdAoreworICAgIGRp
c3BhdGNoZXItPmFkanVzdFJlbGF0ZWRUYXJnZXQoZXZlbnQoKSwgbV9vbGRGb2N1c2VkTm9kZSk7
CisgICAgcmV0dXJuIEV2ZW50RGlzcGF0Y2hNZWRpYXRvcjo6ZGlzcGF0Y2hFdmVudChkaXNwYXRj
aGVyKTsKK30KKworUGFzc1JlZlB0cjxGb2N1c091dEV2ZW50RGlzcGF0Y2hNZWRpYXRvcj4gRm9j
dXNPdXRFdmVudERpc3BhdGNoTWVkaWF0b3I6OmNyZWF0ZShQYXNzUmVmUHRyPEV2ZW50PiBldmVu
dCwgUGFzc1JlZlB0cjxOb2RlPiBuZXdGb2N1c2VkTm9kZSkKK3sKKyAgICByZXR1cm4gYWRvcHRS
ZWYobmV3IEZvY3VzT3V0RXZlbnREaXNwYXRjaE1lZGlhdG9yKGV2ZW50LCBuZXdGb2N1c2VkTm9k
ZSkpOworfQorCitGb2N1c091dEV2ZW50RGlzcGF0Y2hNZWRpYXRvcjo6Rm9jdXNPdXRFdmVudERp
c3BhdGNoTWVkaWF0b3IoUGFzc1JlZlB0cjxFdmVudD4gZXZlbnQsIFBhc3NSZWZQdHI8Tm9kZT4g
bmV3Rm9jdXNlZE5vZGUpCisgICAgOiBtX25ld0ZvY3VzZWROb2RlKG5ld0ZvY3VzZWROb2RlKQor
eworICAgIHNldEV2ZW50KGV2ZW50KTsKK30KKworYm9vbCBGb2N1c091dEV2ZW50RGlzcGF0Y2hN
ZWRpYXRvcjo6ZGlzcGF0Y2hFdmVudChFdmVudERpc3BhdGNoZXIqIGRpc3BhdGNoZXIpIGNvbnN0
Cit7CisgICAgZGlzcGF0Y2hlci0+YWRqdXN0UmVsYXRlZFRhcmdldChldmVudCgpLCBtX25ld0Zv
Y3VzZWROb2RlKTsKKyAgICByZXR1cm4gRXZlbnREaXNwYXRjaE1lZGlhdG9yOjpkaXNwYXRjaEV2
ZW50KGRpc3BhdGNoZXIpOworfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9kb20vRXZlbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FdmVudC5o
CmluZGV4IGMxZDZkNmZkYjYxYThlYWE3N2Q1YWZiMmJkOTJhZWM2Y2JhMzQ2YTQuLjU3OWYwODA1
MjYxM2ZmNWUyOWM0ODU0MTNkNzk1Yjg2ZDMwM2Q0MTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2RvbS9FdmVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FdmVudC5oCkBAIC0xOTks
MTQgKzE5OSwxOCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIFJlZlB0cjxFdmVudD4g
bV91bmRlcmx5aW5nRXZlbnQ7CiAgICAgfTsKIAotY2xhc3MgRXZlbnREaXNwYXRjaE1lZGlhdG9y
IHsKK2NsYXNzIEV2ZW50RGlzcGF0Y2hNZWRpYXRvciA6IHB1YmxpYyBSZWZDb3VudGVkPEV2ZW50
PiB7CiBwdWJsaWM6Ci0gICAgZXhwbGljaXQgRXZlbnREaXNwYXRjaE1lZGlhdG9yKFBhc3NSZWZQ
dHI8RXZlbnQ+KTsKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxFdmVudERpc3BhdGNoTWVkaWF0b3I+
IGNyZWF0ZShQYXNzUmVmUHRyPEV2ZW50PiBldmVudCkKKyAgICB7CisgICAgICAgIHJldHVybiBh
ZG9wdFJlZihuZXcgRXZlbnREaXNwYXRjaE1lZGlhdG9yKGV2ZW50KSk7CisgICAgfQogICAgIHZp
cnR1YWwgfkV2ZW50RGlzcGF0Y2hNZWRpYXRvcigpOwotCi0gICAgdmlydHVhbCBib29sIGRpc3Bh
dGNoRXZlbnQoRXZlbnREaXNwYXRjaGVyKikgY29uc3Q7CisgICAgdmlydHVhbCBib29sIGRpc3Bh
dGNoRXZlbnQoRXZlbnREaXNwYXRjaGVyKiA9IDApIGNvbnN0OworICAgIHZvaWQgc2V0RXZlbnRU
YXJnZXQoUGFzc1JlZlB0cjxFdmVudFRhcmdldD4pOwogCiBwcm90ZWN0ZWQ6CisgICAgZXhwbGlj
aXQgRXZlbnREaXNwYXRjaE1lZGlhdG9yKFBhc3NSZWZQdHI8RXZlbnQ+KTsKICAgICBFdmVudERp
c3BhdGNoTWVkaWF0b3IoKTsKIAogICAgIEV2ZW50KiBldmVudCgpIGNvbnN0OwpAQCAtMjMwLDYg
KzIzNCwyNSBAQCBpbmxpbmUgdm9pZCBFdmVudERpc3BhdGNoTWVkaWF0b3I6OnNldEV2ZW50KFBh
c3NSZWZQdHI8RXZlbnQ+IGV2ZW50KQogICAgIG1fZXZlbnQgPSBldmVudDsKIH0KIAorY2xhc3Mg
Rm9jdXNJbkV2ZW50RGlzcGF0Y2hNZWRpYXRvciA6IHB1YmxpYyBFdmVudERpc3BhdGNoTWVkaWF0
b3IgeworcHVibGljOgorICAgIHN0YXRpYyBQYXNzUmVmUHRyPEZvY3VzSW5FdmVudERpc3BhdGNo
TWVkaWF0b3I+IGNyZWF0ZShQYXNzUmVmUHRyPEV2ZW50PiwgUGFzc1JlZlB0cjxOb2RlPiBvbGRG
b2N1c2VkTm9kZSk7Citwcml2YXRlOgorICAgIGV4cGxpY2l0IEZvY3VzSW5FdmVudERpc3BhdGNo
TWVkaWF0b3IoUGFzc1JlZlB0cjxFdmVudD4sIFBhc3NSZWZQdHI8Tm9kZT4gb2xkRm9jdXNlZE5v
ZGUpOworICAgIHZpcnR1YWwgYm9vbCBkaXNwYXRjaEV2ZW50KEV2ZW50RGlzcGF0Y2hlciopIGNv
bnN0OworICAgIFJlZlB0cjxOb2RlPiBtX29sZEZvY3VzZWROb2RlOworfTsKKworY2xhc3MgRm9j
dXNPdXRFdmVudERpc3BhdGNoTWVkaWF0b3IgOiBwdWJsaWMgRXZlbnREaXNwYXRjaE1lZGlhdG9y
IHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxGb2N1c091dEV2ZW50RGlzcGF0Y2hN
ZWRpYXRvcj4gY3JlYXRlKFBhc3NSZWZQdHI8RXZlbnQ+LCBQYXNzUmVmUHRyPE5vZGU+IG5ld0Zv
Y3VzZWROb2RlKTsKK3ByaXZhdGU6CisgICAgZXhwbGljaXQgRm9jdXNPdXRFdmVudERpc3BhdGNo
TWVkaWF0b3IoUGFzc1JlZlB0cjxFdmVudD4sIFBhc3NSZWZQdHI8Tm9kZT4gbmV3Rm9jdXNlZE5v
ZGUpOworICAgIHZpcnR1YWwgYm9vbCBkaXNwYXRjaEV2ZW50KEV2ZW50RGlzcGF0Y2hlciopIGNv
bnN0OworICAgIFJlZlB0cjxOb2RlPiBtX25ld0ZvY3VzZWROb2RlOworfTsKKworCiB9IC8vIG5h
bWVzcGFjZSBXZWJDb3JlCiAKICNlbmRpZiAvLyBFdmVudF9oCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9kb20vRXZlbnREaXNwYXRjaGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FdmVu
dERpc3BhdGNoZXIuY3BwCmluZGV4IGFhNzE1ODlmMTM2OGFmMGQ3Y2MzNjFjYTBhN2M2NDg1Yzlk
ZjVjMmYuLmYwZjgyMTgwMmY2MzgzNDIyMGJlYzU1NGJiMGJhODQzODRmMzQ0OTkgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FdmVudERpc3BhdGNoZXIuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2RvbS9FdmVudERpc3BhdGNoZXIuY3BwCkBAIC00NiwxMiArNDYsMTIgQEAgbmFtZXNw
YWNlIFdlYkNvcmUgewogCiBzdGF0aWMgSGFzaFNldDxOb2RlKj4qIGdOb2Rlc0Rpc3BhdGNoaW5n
U2ltdWxhdGVkQ2xpY2tzID0gMDsKIAotYm9vbCBFdmVudERpc3BhdGNoZXI6OmRpc3BhdGNoRXZl
bnQoTm9kZSogbm9kZSwgY29uc3QgRXZlbnREaXNwYXRjaE1lZGlhdG9yJiBtZWRpYXRvcikKK2Jv
b2wgRXZlbnREaXNwYXRjaGVyOjpkaXNwYXRjaEV2ZW50KE5vZGUqIG5vZGUsIFBhc3NSZWZQdHI8
RXZlbnREaXNwYXRjaE1lZGlhdG9yPiBtZWRpYXRvcikKIHsKICAgICBBU1NFUlQoIWV2ZW50RGlz
cGF0Y2hGb3JiaWRkZW4oKSk7CiAKICAgICBFdmVudERpc3BhdGNoZXIgZGlzcGF0Y2hlcihub2Rl
KTsKLSAgICByZXR1cm4gbWVkaWF0b3IuZGlzcGF0Y2hFdmVudCgmZGlzcGF0Y2hlcik7CisgICAg
cmV0dXJuIG1lZGlhdG9yLT5kaXNwYXRjaEV2ZW50KCZkaXNwYXRjaGVyKTsKIH0KIAogc3RhdGlj
IEV2ZW50VGFyZ2V0KiBmaW5kRWxlbWVudEluc3RhbmNlKE5vZGUqIHJlZmVyZW5jZU5vZGUpCkBA
IC05Miw2ICs5MiwxNCBAQCB2b2lkIEV2ZW50RGlzcGF0Y2hlcjo6ZGlzcGF0Y2hTY29wZWRFdmVu
dChOb2RlKiBub2RlLCBQYXNzUmVmUHRyPEV2ZW50PiBldmVudCkKICAgICBTY29wZWRFdmVudFF1
ZXVlOjppbnN0YW5jZSgpLT5lbnF1ZXVlRXZlbnQoZXZlbnQpOwogfQogCit2b2lkIEV2ZW50RGlz
cGF0Y2hlcjo6ZGlzcGF0Y2hTY29wZWRFdmVudERpc3BhdGNoTWVkaWF0b3IoTm9kZSogbm9kZSwg
UGFzc1JlZlB0cjxFdmVudERpc3BhdGNoTWVkaWF0b3I+IGV2ZW50RGlzcGF0Y2hNZWRpYXRvcikK
K3sKKyAgICAvLyBXZSBuZWVkIHRvIHNldCB0aGUgdGFyZ2V0IGhlcmUgYmVjYXVzZSBpdCBjYW4g
Z28gYXdheSBieSB0aGUgdGltZSB3ZSBhY3R1YWxseSBmaXJlIHRoZSBldmVudC4KKyAgICBldmVu
dERpc3BhdGNoTWVkaWF0b3ItPnNldEV2ZW50VGFyZ2V0KGV2ZW50VGFyZ2V0UmVzcGVjdGluZ1NW
R1RhcmdldFJ1bGVzKG5vZGUpKTsKKyAgICBTY29wZWRFdmVudFF1ZXVlOjppbnN0YW5jZSgpLT5l
bnF1ZXVlRXZlbnQobm9kZSwgZXZlbnREaXNwYXRjaE1lZGlhdG9yKTsKK30KKworCiB2b2lkIEV2
ZW50RGlzcGF0Y2hlcjo6ZGlzcGF0Y2hTaW11bGF0ZWRDbGljayhOb2RlKiBub2RlLCBQYXNzUmVm
UHRyPEV2ZW50PiB1bmRlcmx5aW5nRXZlbnQsIGJvb2wgc2VuZE1vdXNlRXZlbnRzLCBib29sIHNo
b3dQcmVzc2VkTG9vaykKIHsKICAgICBpZiAobm9kZS0+ZGlzYWJsZWQoKSkKQEAgLTE3OCw3ICsx
ODYsOSBAQCBQYXNzUmVmUHRyPEV2ZW50VGFyZ2V0PiBFdmVudERpc3BhdGNoZXI6OmFkanVzdFRv
U2hhZG93Qm91bmRhcmllcyhQYXNzUmVmUHRyPE5vZAogICAgIGlmIChsb3dlc3RDb21tb25Cb3Vu
ZGFyeSAhPSBtX2FuY2VzdG9ycy5lbmQoKSkgewogICAgICAgICAvLyBUcmltIGFuY2VzdG9ycyB0
byBsb3dlc3RDb21tb25Cb3VuZGFyeSB0byBrZWVwIGV2ZW50cyBpbnNpZGUgb2YgdGhlIGNvbW1v
biBzaGFkb3cgRE9NIHN1YnRyZWUuCiAgICAgICAgIG1fYW5jZXN0b3JzLnNocmluayhsb3dlc3RD
b21tb25Cb3VuZGFyeSAtIG1fYW5jZXN0b3JzLmJlZ2luKCkpOwotICAgICAgICBtX3Nob3VsZFBy
ZXZlbnREaXNwYXRjaCA9ICFtX2FuY2VzdG9ycy5zaXplKCk7CisKKyAgICAgICAgLy8gRklYTUU6
IGV2ZW4gYW5jZXN0b3Jlcy5zaXplKCkgPT0gMCwgd2Ugc2hvdWxkIGZpcmUgYXQgVEFSR0VUIHBo
YXNlIQorICAgICAgICAvLyBtX3Nob3VsZFByZXZlbnREaXNwYXRjaCA9ICFtX2FuY2VzdG9ycy5z
aXplKCk7CiAgICAgfQogICAgIC8vIFNldCBldmVudCdzIHJlbGF0ZWQgdGFyZ2V0IHRvIHRoZSBm
aXJzdCBlbmNvdW50ZXJlZCBzaGFkb3cgRE9NIGJvdW5kYXJ5IGluIHRoZSBkaXZlcmdlbnQgc3Vi
dHJlZS4KICAgICByZXR1cm4gZmlyc3REaXZlcmdlbnRCb3VuZGFyeSAhPSByZWxhdGVkVGFyZ2V0
QW5jZXN0b3JzLmJlZ2luKCkgPyAqZmlyc3REaXZlcmdlbnRCb3VuZGFyeSA6IHJlbGF0ZWRUYXJn
ZXQ7CkBAIC0yOTIsMTAgKzMwMiwxMCBAQCBib29sIEV2ZW50RGlzcGF0Y2hlcjo6ZGlzcGF0Y2hF
dmVudChQYXNzUmVmUHRyPEV2ZW50PiBldmVudCkKICAgICBXaW5kb3dFdmVudENvbnRleHQgd2lu
ZG93Q29udGV4dChldmVudC5nZXQoKSwgbV9ub2RlLmdldCgpLCB0b3BFdmVudENvbnRleHQoKSk7
CiAKICAgICBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb25Db29raWUgY29va2llID0gSW5zcGVjdG9y
SW5zdHJ1bWVudGF0aW9uOjp3aWxsRGlzcGF0Y2hFdmVudChtX25vZGUtPmRvY3VtZW50KCksICpl
dmVudCwgd2luZG93Q29udGV4dC53aW5kb3coKSwgbV9ub2RlLmdldCgpLCBtX2FuY2VzdG9ycyk7
Ci0KICAgICAvLyBHaXZlIHRoZSB0YXJnZXQgbm9kZSBhIGNoYW5jZSB0byBkbyBzb21lIHdvcmsg
YmVmb3JlIERPTSBldmVudCBoYW5kbGVycyBnZXQgYSBjcmFjay4KICAgICB2b2lkKiBkYXRhID0g
bV9ub2RlLT5wcmVEaXNwYXRjaEV2ZW50SGFuZGxlcihldmVudC5nZXQoKSk7Ci0gICAgaWYgKG1f
c2hvdWxkUHJldmVudERpc3BhdGNoIHx8IGV2ZW50LT5wcm9wYWdhdGlvblN0b3BwZWQoKSkKKyAg
ICAvLyBpZiAobV9zaG91bGRQcmV2ZW50RGlzcGF0Y2ggfHwgZXZlbnQtPnByb3BhZ2F0aW9uU3Rv
cHBlZCgpKQorICAgIGlmIChldmVudC0+cHJvcGFnYXRpb25TdG9wcGVkKCkpCiAgICAgICAgIGdv
dG8gZG9uZURpc3BhdGNoaW5nOwogCiAgICAgLy8gVHJpZ2dlciBjYXB0dXJpbmcgZXZlbnQgaGFu
ZGxlcnMsIHN0YXJ0aW5nIGF0IHRoZSB0b3AgYW5kIHdvcmtpbmcgb3VyIHdheSBkb3duLgpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0V2ZW50RGlzcGF0Y2hlci5oIGIvU291cmNlL1dl
YkNvcmUvZG9tL0V2ZW50RGlzcGF0Y2hlci5oCmluZGV4IDFlNTFmOThhNDNhYjZkZTQxYWMyMmRh
YTRiOGRjYzllNmZhYzQ1YTguLmU5MjQwMmJhMGUzNDQ5NGIwYzE5ODFmZjkzMjZlNDg3NGJiOTc5
MzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FdmVudERpc3BhdGNoZXIuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9kb20vRXZlbnREaXNwYXRjaGVyLmgKQEAgLTQ4LDggKzQ4LDkgQEAg
ZW51bSBFdmVudERpc3BhdGNoQmVoYXZpb3IgewogCiBjbGFzcyBFdmVudERpc3BhdGNoZXIgewog
cHVibGljOgotICAgIHN0YXRpYyBib29sIGRpc3BhdGNoRXZlbnQoTm9kZSosIGNvbnN0IEV2ZW50
RGlzcGF0Y2hNZWRpYXRvciYpOworICAgIHN0YXRpYyBib29sIGRpc3BhdGNoRXZlbnQoTm9kZSos
IFBhc3NSZWZQdHI8RXZlbnREaXNwYXRjaE1lZGlhdG9yPik7CiAgICAgc3RhdGljIHZvaWQgZGlz
cGF0Y2hTY29wZWRFdmVudChOb2RlKiwgUGFzc1JlZlB0cjxFdmVudD4pOworICAgIHN0YXRpYyB2
b2lkIGRpc3BhdGNoU2NvcGVkRXZlbnREaXNwYXRjaE1lZGlhdG9yKE5vZGUqLCBQYXNzUmVmUHRy
PEV2ZW50RGlzcGF0Y2hNZWRpYXRvcj4pOwogCiAgICAgc3RhdGljIHZvaWQgZGlzcGF0Y2hTaW11
bGF0ZWRDbGljayhOb2RlKiwgUGFzc1JlZlB0cjxFdmVudD4gdW5kZXJseWluZ0V2ZW50LCBib29s
IHNlbmRNb3VzZUV2ZW50cywgYm9vbCBzaG93UHJlc3NlZExvb2spOwogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9kb20vRXZlbnRUYXJnZXQuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL0V2
ZW50VGFyZ2V0LmNwcAppbmRleCBjMjBiMjFjMTNjODliMzZmZmIzOGFmNDFhY2I5ZmJkZGEzY2E4
OTY4Li4yM2I5MzJlMTIyOGRkMDI3OWQzYTBhYTRmODIyZDRmODg2NDZkYmYwIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9kb20vRXZlbnRUYXJnZXQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2RvbS9FdmVudFRhcmdldC5jcHAKQEAgLTM1MCwxMSArMzUwLDEwIEBAIGJvb2wgRXZlbnRUYXJn
ZXQ6OmZpcmVFdmVudExpc3RlbmVycyhFdmVudCogZXZlbnQpCiAgICAgCiAgICAgcmV0dXJuICFl
dmVudC0+ZGVmYXVsdFByZXZlbnRlZCgpOwogfQotICAgICAgICAKKwogdm9pZCBFdmVudFRhcmdl
dDo6ZmlyZUV2ZW50TGlzdGVuZXJzKEV2ZW50KiBldmVudCwgRXZlbnRUYXJnZXREYXRhKiBkLCBF
dmVudExpc3RlbmVyVmVjdG9yJiBlbnRyeSkKIHsKICAgICBSZWZQdHI8RXZlbnRUYXJnZXQ+IHBy
b3RlY3QgPSB0aGlzOwotCiAgICAgLy8gRmlyZSBhbGwgbGlzdGVuZXJzIHJlZ2lzdGVyZWQgZm9y
IHRoaXMgZXZlbnQuIERvbid0IGZpcmUgbGlzdGVuZXJzIHJlbW92ZWQKICAgICAvLyBkdXJpbmcg
ZXZlbnQgZGlzcGF0Y2guIEFsc28sIGRvbid0IGZpcmUgZXZlbnQgbGlzdGVuZXJzIGFkZGVkIGR1
cmluZyBldmVudAogICAgIC8vIGRpc3BhdGNoLiBDb252ZW5pZW50bHksIGFsbCBuZXcgZXZlbnQg
bGlzdGVuZXJzIHdpbGwgYmUgYWRkZWQgYWZ0ZXIgJ2VuZCcsCkBAIC0zNjUsNiArMzY0LDcgQEAg
dm9pZCBFdmVudFRhcmdldDo6ZmlyZUV2ZW50TGlzdGVuZXJzKEV2ZW50KiBldmVudCwgRXZlbnRU
YXJnZXREYXRhKiBkLCBFdmVudExpc3QKICAgICBkLT5maXJpbmdFdmVudEl0ZXJhdG9ycy5hcHBl
bmQoRmlyaW5nRXZlbnRJdGVyYXRvcihldmVudC0+dHlwZSgpLCBpLCBlbmQpKTsKICAgICBmb3Ig
KCA7IGkgPCBlbmQ7ICsraSkgewogICAgICAgICBSZWdpc3RlcmVkRXZlbnRMaXN0ZW5lciYgcmVn
aXN0ZXJlZExpc3RlbmVyID0gZW50cnlbaV07CisKICAgICAgICAgaWYgKGV2ZW50LT5ldmVudFBo
YXNlKCkgPT0gRXZlbnQ6OkNBUFRVUklOR19QSEFTRSAmJiAhcmVnaXN0ZXJlZExpc3RlbmVyLnVz
ZUNhcHR1cmUpCiAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgaWYgKGV2ZW50LT5ldmVu
dFBoYXNlKCkgPT0gRXZlbnQ6OkJVQkJMSU5HX1BIQVNFICYmIHJlZ2lzdGVyZWRMaXN0ZW5lci51
c2VDYXB0dXJlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0tleWJvYXJkRXZlbnQu
Y3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL0tleWJvYXJkRXZlbnQuY3BwCmluZGV4IGI2YWIxYjZk
YmIzNTIyYTM0MDFlNzliNDUxYWViODMxNDk0MmM0ZjEuLjFjOGM5ZWE5NGMyMWI4ZTk5OGMwZGYy
ZDY3YzYzNDc4ODc3OWMwZDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9LZXlib2Fy
ZEV2ZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vS2V5Ym9hcmRFdmVudC5jcHAKQEAg
LTE1OSw2ICsxNTksMTEgQEAgS2V5Ym9hcmRFdmVudCogZmluZEtleWJvYXJkRXZlbnQoRXZlbnQq
IGV2ZW50KQogICAgIHJldHVybiAwOwogfQogCitQYXNzUmVmUHRyPEtleWJvYXJkRXZlbnREaXNw
YXRjaE1lZGlhdG9yPiBLZXlib2FyZEV2ZW50RGlzcGF0Y2hNZWRpYXRvcjo6Y3JlYXRlKFBhc3NS
ZWZQdHI8S2V5Ym9hcmRFdmVudD4gZXZlbnQpCit7CisgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBL
ZXlib2FyZEV2ZW50RGlzcGF0Y2hNZWRpYXRvcihldmVudCkpOworfQorCiBLZXlib2FyZEV2ZW50
RGlzcGF0Y2hNZWRpYXRvcjo6S2V5Ym9hcmRFdmVudERpc3BhdGNoTWVkaWF0b3IoUGFzc1JlZlB0
cjxLZXlib2FyZEV2ZW50PiBldmVudCkKICAgICA6IEV2ZW50RGlzcGF0Y2hNZWRpYXRvcihldmVu
dCkKIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9LZXlib2FyZEV2ZW50LmggYi9T
b3VyY2UvV2ViQ29yZS9kb20vS2V5Ym9hcmRFdmVudC5oCmluZGV4IDY4OTEwYjU3NTQ2NmUwMmYx
YzkyNTllMDlhNTY4MWYzZjgxOGIyODYuLjFkMGFiNTY5OWIxYjdmYmRmZjAxYzk0NTcyMTBiNmQ0
YzcyMTllZWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9LZXlib2FyZEV2ZW50LmgK
KysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0tleWJvYXJkRXZlbnQuaApAQCAtMTE3LDkgKzExNyw5
IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgS2V5Ym9hcmRFdmVudERpc3BhdGNoTWVk
aWF0b3IgOiBwdWJsaWMgRXZlbnREaXNwYXRjaE1lZGlhdG9yIHsKIHB1YmxpYzoKLSAgICBleHBs
aWNpdCBLZXlib2FyZEV2ZW50RGlzcGF0Y2hNZWRpYXRvcihQYXNzUmVmUHRyPEtleWJvYXJkRXZl
bnQ+KTsKLQorICAgIHN0YXRpYyBQYXNzUmVmUHRyPEtleWJvYXJkRXZlbnREaXNwYXRjaE1lZGlh
dG9yPiBjcmVhdGUoUGFzc1JlZlB0cjxLZXlib2FyZEV2ZW50Pik7CiBwcml2YXRlOgorICAgIGV4
cGxpY2l0IEtleWJvYXJkRXZlbnREaXNwYXRjaE1lZGlhdG9yKFBhc3NSZWZQdHI8S2V5Ym9hcmRF
dmVudD4pOwogICAgIHZpcnR1YWwgYm9vbCBkaXNwYXRjaEV2ZW50KEV2ZW50RGlzcGF0Y2hlciop
IGNvbnN0OwogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL01vdXNlRXZlbnQu
Y3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL01vdXNlRXZlbnQuY3BwCmluZGV4IDJhNmVkNzcwZmU4
Y2Y1NmJiZjNjODQ1ZjJhMDcyMjBkZmQ2OTVhZTMuLjBlNzFlZjVjZjE0N2MzOTMwMmU5M2Y1YTQ3
YzNlYmVmODM2NzgyMDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Nb3VzZUV2ZW50
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vTW91c2VFdmVudC5jcHAKQEAgLTE1OSw2ICsx
NTksMTEgQEAgU2ltdWxhdGVkTW91c2VFdmVudDo6U2ltdWxhdGVkTW91c2VFdmVudChjb25zdCBB
dG9taWNTdHJpbmcmIGV2ZW50VHlwZSwgUGFzc1JlZlAKICAgICB9CiB9CiAKK1Bhc3NSZWZQdHI8
TW91c2VFdmVudERpc3BhdGNoTWVkaWF0b3I+IE1vdXNlRXZlbnREaXNwYXRjaE1lZGlhdG9yOjpj
cmVhdGUoUGFzc1JlZlB0cjxNb3VzZUV2ZW50PiBtb3VzZUV2ZW50KQoreworICAgIHJldHVybiBh
ZG9wdFJlZihuZXcgTW91c2VFdmVudERpc3BhdGNoTWVkaWF0b3IobW91c2VFdmVudCkpOworfQor
CiBNb3VzZUV2ZW50RGlzcGF0Y2hNZWRpYXRvcjo6TW91c2VFdmVudERpc3BhdGNoTWVkaWF0b3Io
UGFzc1JlZlB0cjxNb3VzZUV2ZW50PiBtb3VzZUV2ZW50KQogICAgIDogRXZlbnREaXNwYXRjaE1l
ZGlhdG9yKG1vdXNlRXZlbnQpCiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vTW91
c2VFdmVudC5oIGIvU291cmNlL1dlYkNvcmUvZG9tL01vdXNlRXZlbnQuaAppbmRleCBiYWIyYjQy
MWQ0Zjg5M2NlMDBiNWIwZGNlNTc1NjU2MWJjMDdkYzU2Li44ZWI2MmQ5MjNkMzA3MjY3NmI1YzRi
ZTcyNDlkNWYwNjJhMzcwOWM0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vTW91c2VF
dmVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Nb3VzZUV2ZW50LmgKQEAgLTEwMCw5ICsx
MDAsMTAgQEAgcHJpdmF0ZToKIAogY2xhc3MgTW91c2VFdmVudERpc3BhdGNoTWVkaWF0b3IgOiBw
dWJsaWMgRXZlbnREaXNwYXRjaE1lZGlhdG9yIHsKIHB1YmxpYzoKLSAgICBleHBsaWNpdCBNb3Vz
ZUV2ZW50RGlzcGF0Y2hNZWRpYXRvcihQYXNzUmVmUHRyPE1vdXNlRXZlbnQ+KTsKKyAgICBzdGF0
aWMgUGFzc1JlZlB0cjxNb3VzZUV2ZW50RGlzcGF0Y2hNZWRpYXRvcj4gY3JlYXRlKFBhc3NSZWZQ
dHI8TW91c2VFdmVudD4pOwogCiBwcml2YXRlOgorICAgIGV4cGxpY2l0IE1vdXNlRXZlbnREaXNw
YXRjaE1lZGlhdG9yKFBhc3NSZWZQdHI8TW91c2VFdmVudD4pOwogICAgIE1vdXNlRXZlbnQqIGV2
ZW50KCkgY29uc3Q7CiAKICAgICB2aXJ0dWFsIGJvb2wgZGlzcGF0Y2hFdmVudChFdmVudERpc3Bh
dGNoZXIqKSBjb25zdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlLmNwcAppbmRleCAyNTI5MzIxNzJkZjU0ODhjM2E2MWVk
OTQ2NjBlMWJhOTQ2Yzg1NzVjLi5hMGFiMjY2YzZhMDQzMmRiOWZjMjIyMGM2OTAwZjUxNTdhOGU1
MzI4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZS5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvZG9tL05vZGUuY3BwCkBAIC0yNzEyLDkgKzI3MTIsMTQgQEAgdm9pZCBOb2RlOjpk
aXNwYXRjaFNjb3BlZEV2ZW50KFBhc3NSZWZQdHI8RXZlbnQ+IGV2ZW50KQogICAgIEV2ZW50RGlz
cGF0Y2hlcjo6ZGlzcGF0Y2hTY29wZWRFdmVudCh0aGlzLCBldmVudCk7CiB9CiAKK3ZvaWQgTm9k
ZTo6ZGlzcGF0Y2hTY29wZWRFdmVudERpc3BhdGNoTWVkaWF0b3IoUGFzc1JlZlB0cjxFdmVudERp
c3BhdGNoTWVkaWF0b3I+IGV2ZW50RGlzcGF0Y2hNZWRpYXRvcikKK3sKKyAgICBFdmVudERpc3Bh
dGNoZXI6OmRpc3BhdGNoU2NvcGVkRXZlbnREaXNwYXRjaE1lZGlhdG9yKHRoaXMsIGV2ZW50RGlz
cGF0Y2hNZWRpYXRvcik7Cit9CisKIGJvb2wgTm9kZTo6ZGlzcGF0Y2hFdmVudChQYXNzUmVmUHRy
PEV2ZW50PiBldmVudCkKIHsKLSAgICByZXR1cm4gRXZlbnREaXNwYXRjaGVyOjpkaXNwYXRjaEV2
ZW50KHRoaXMsIEV2ZW50RGlzcGF0Y2hNZWRpYXRvcihldmVudCkpOworICAgIHJldHVybiBFdmVu
dERpc3BhdGNoZXI6OmRpc3BhdGNoRXZlbnQodGhpcywgRXZlbnREaXNwYXRjaE1lZGlhdG9yOjpj
cmVhdGUoZXZlbnQpKTsKIH0KIAogdm9pZCBOb2RlOjpkaXNwYXRjaFN1YnRyZWVNb2RpZmllZEV2
ZW50KCkKQEAgLTI3MzEsNiArMjczNiwyNCBAQCB2b2lkIE5vZGU6OmRpc3BhdGNoU3VidHJlZU1v
ZGlmaWVkRXZlbnQoKQogICAgIGRpc3BhdGNoU2NvcGVkRXZlbnQoTXV0YXRpb25FdmVudDo6Y3Jl
YXRlKGV2ZW50TmFtZXMoKS5ET01TdWJ0cmVlTW9kaWZpZWRFdmVudCwgdHJ1ZSkpOwogfQogCit2
b2lkIE5vZGU6OmRpc3BhdGNoRm9jdXNJbkV2ZW50KGNvbnN0IEF0b21pY1N0cmluZyYgZXZlbnRU
eXBlLCBQYXNzUmVmUHRyPE5vZGU+IG9sZEZvY3VzZWROb2RlKQoreworICAgIEFTU0VSVCghZXZl
bnREaXNwYXRjaEZvcmJpZGRlbigpKTsKKyAgICBBU1NFUlQoZXZlbnRUeXBlID09IGV2ZW50TmFt
ZXMoKS5mb2N1c2luRXZlbnQgfHwgZXZlbnRUeXBlID09IGV2ZW50TmFtZXMoKS5ET01Gb2N1c0lu
RXZlbnQpOworICAgIFJlZlB0cjxVSUV2ZW50PiBldmVudCA9IFVJRXZlbnQ6OmNyZWF0ZShldmVu
dFR5cGUsIHRydWUsIGZhbHNlLCBkb2N1bWVudCgpLT5kZWZhdWx0VmlldygpLCAwKTsKKworICAg
IC8vIHNob3VsZCBiZSAnZXZlbnQucmVsZWFzZSgpJz8KKyAgICBkaXNwYXRjaFNjb3BlZEV2ZW50
RGlzcGF0Y2hNZWRpYXRvcihGb2N1c0luRXZlbnREaXNwYXRjaE1lZGlhdG9yOjpjcmVhdGUoZXZl
bnQsIG9sZEZvY3VzZWROb2RlKSk7Cit9CisKK3ZvaWQgTm9kZTo6ZGlzcGF0Y2hGb2N1c091dEV2
ZW50KGNvbnN0IEF0b21pY1N0cmluZyYgZXZlbnRUeXBlLCBQYXNzUmVmUHRyPE5vZGU+IG5ld0Zv
Y3VzZWROb2RlKQoreworICAgIEFTU0VSVCghZXZlbnREaXNwYXRjaEZvcmJpZGRlbigpKTsKKyAg
ICBBU1NFUlQoZXZlbnRUeXBlID09IGV2ZW50TmFtZXMoKS5mb2N1c291dEV2ZW50IHx8IGV2ZW50
VHlwZSA9PSBldmVudE5hbWVzKCkuRE9NRm9jdXNPdXRFdmVudCk7CisgICAgUmVmUHRyPFVJRXZl
bnQ+IGV2ZW50ID0gVUlFdmVudDo6Y3JlYXRlKGV2ZW50VHlwZSwgdHJ1ZSwgZmFsc2UsIGRvY3Vt
ZW50KCktPmRlZmF1bHRWaWV3KCksIDApOworICAgIGRpc3BhdGNoU2NvcGVkRXZlbnREaXNwYXRj
aE1lZGlhdG9yKEZvY3VzT3V0RXZlbnREaXNwYXRjaE1lZGlhdG9yOjpjcmVhdGUoZXZlbnQsIG5l
d0ZvY3VzZWROb2RlKSk7Cit9CisKIHZvaWQgTm9kZTo6ZGlzcGF0Y2hVSUV2ZW50KGNvbnN0IEF0
b21pY1N0cmluZyYgZXZlbnRUeXBlLCBpbnQgZGV0YWlsLCBQYXNzUmVmUHRyPEV2ZW50PiB1bmRl
cmx5aW5nRXZlbnQpCiB7CiAgICAgQVNTRVJUKCFldmVudERpc3BhdGNoRm9yYmlkZGVuKCkpOwpA
QCAtMjc0MSwxOCArMjc2NCwyMCBAQCB2b2lkIE5vZGU6OmRpc3BhdGNoVUlFdmVudChjb25zdCBB
dG9taWNTdHJpbmcmIGV2ZW50VHlwZSwgaW50IGRldGFpbCwgUGFzc1JlZlB0cgogCiAgICAgUmVm
UHRyPFVJRXZlbnQ+IGV2ZW50ID0gVUlFdmVudDo6Y3JlYXRlKGV2ZW50VHlwZSwgdHJ1ZSwgY2Fu
Y2VsYWJsZSwgZG9jdW1lbnQoKS0+ZGVmYXVsdFZpZXcoKSwgZGV0YWlsKTsKICAgICBldmVudC0+
c2V0VW5kZXJseWluZ0V2ZW50KHVuZGVybHlpbmdFdmVudCk7CisKICAgICBkaXNwYXRjaFNjb3Bl
ZEV2ZW50KGV2ZW50LnJlbGVhc2UoKSk7CiB9CiAKKwogYm9vbCBOb2RlOjpkaXNwYXRjaEtleUV2
ZW50KGNvbnN0IFBsYXRmb3JtS2V5Ym9hcmRFdmVudCYgZXZlbnQpCiB7Ci0gICAgcmV0dXJuIEV2
ZW50RGlzcGF0Y2hlcjo6ZGlzcGF0Y2hFdmVudCh0aGlzLCBLZXlib2FyZEV2ZW50RGlzcGF0Y2hN
ZWRpYXRvcihLZXlib2FyZEV2ZW50OjpjcmVhdGUoZXZlbnQsIGRvY3VtZW50KCktPmRlZmF1bHRW
aWV3KCkpKSk7CisgICAgcmV0dXJuIEV2ZW50RGlzcGF0Y2hlcjo6ZGlzcGF0Y2hFdmVudCh0aGlz
LCBLZXlib2FyZEV2ZW50RGlzcGF0Y2hNZWRpYXRvcjo6Y3JlYXRlKEtleWJvYXJkRXZlbnQ6OmNy
ZWF0ZShldmVudCwgZG9jdW1lbnQoKS0+ZGVmYXVsdFZpZXcoKSkpKTsKIH0KIAogYm9vbCBOb2Rl
OjpkaXNwYXRjaE1vdXNlRXZlbnQoY29uc3QgUGxhdGZvcm1Nb3VzZUV2ZW50JiBldmVudCwgY29u
c3QgQXRvbWljU3RyaW5nJiBldmVudFR5cGUsCiAgICAgaW50IGRldGFpbCwgTm9kZSogcmVsYXRl
ZFRhcmdldCkKIHsKLSAgICByZXR1cm4gRXZlbnREaXNwYXRjaGVyOjpkaXNwYXRjaEV2ZW50KHRo
aXMsIE1vdXNlRXZlbnREaXNwYXRjaE1lZGlhdG9yKE1vdXNlRXZlbnQ6OmNyZWF0ZShldmVudFR5
cGUsIGRvY3VtZW50KCktPmRlZmF1bHRWaWV3KCksIGV2ZW50LCBkZXRhaWwsIHJlbGF0ZWRUYXJn
ZXQpKSk7CisgICAgcmV0dXJuIEV2ZW50RGlzcGF0Y2hlcjo6ZGlzcGF0Y2hFdmVudCh0aGlzLCBN
b3VzZUV2ZW50RGlzcGF0Y2hNZWRpYXRvcjo6Y3JlYXRlKE1vdXNlRXZlbnQ6OmNyZWF0ZShldmVu
dFR5cGUsIGRvY3VtZW50KCktPmRlZmF1bHRWaWV3KCksIGV2ZW50LCBkZXRhaWwsIHJlbGF0ZWRU
YXJnZXQpKSk7CiB9CiAKIHZvaWQgTm9kZTo6ZGlzcGF0Y2hTaW11bGF0ZWRDbGljayhQYXNzUmVm
UHRyPEV2ZW50PiBldmVudCwgYm9vbCBzZW5kTW91c2VFdmVudHMsIGJvb2wgc2hvd1ByZXNzZWRM
b29rKQpAQCAtMjc2Miw3ICsyNzg3LDcgQEAgdm9pZCBOb2RlOjpkaXNwYXRjaFNpbXVsYXRlZENs
aWNrKFBhc3NSZWZQdHI8RXZlbnQ+IGV2ZW50LCBib29sIHNlbmRNb3VzZUV2ZW50cywKIAogYm9v
bCBOb2RlOjpkaXNwYXRjaFdoZWVsRXZlbnQoY29uc3QgUGxhdGZvcm1XaGVlbEV2ZW50JiBldmVu
dCkKIHsKLSAgICByZXR1cm4gRXZlbnREaXNwYXRjaGVyOjpkaXNwYXRjaEV2ZW50KHRoaXMsIFdo
ZWVsRXZlbnREaXNwYXRjaE1lZGlhdG9yKGV2ZW50LCBkb2N1bWVudCgpLT5kZWZhdWx0Vmlldygp
KSk7CisgICAgcmV0dXJuIEV2ZW50RGlzcGF0Y2hlcjo6ZGlzcGF0Y2hFdmVudCh0aGlzLCBXaGVl
bEV2ZW50RGlzcGF0Y2hNZWRpYXRvcjo6Y3JlYXRlKGV2ZW50LCBkb2N1bWVudCgpLT5kZWZhdWx0
VmlldygpKSk7CiB9CiAKIHZvaWQgTm9kZTo6ZGlzcGF0Y2hGb2N1c0V2ZW50KCkKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlLmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZS5o
CmluZGV4IGU0YjA1MjVlMWM2YTdjMDM5YjM1MzBjMDc3YTM3OTZmZjllMjY0YzAuLmVhM2UwODI0
MGU1OWY3YmNiYTZiN2JhNTFkNTFkZGJhNTFjNmJkZTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2RvbS9Ob2RlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL05vZGUuaApAQCAtNTAsNiAr
NTAsNyBAQCBjbGFzcyBEeW5hbWljTm9kZUxpc3Q7CiBjbGFzcyBFbGVtZW50OwogY2xhc3MgRXZl
bnQ7CiBjbGFzcyBFdmVudENvbnRleHQ7CitjbGFzcyBFdmVudERpc3BhdGNoTWVkaWF0b3I7CiBj
bGFzcyBFdmVudExpc3RlbmVyOwogY2xhc3MgRmxvYXRQb2ludDsKIGNsYXNzIEZyYW1lOwpAQCAt
NTQ2LDExICs1NDcsMTYgQEAgcHVibGljOgogICAgIHVzaW5nIEV2ZW50VGFyZ2V0OjpkaXNwYXRj
aEV2ZW50OwogICAgIGJvb2wgZGlzcGF0Y2hFdmVudChQYXNzUmVmUHRyPEV2ZW50Pik7CiAgICAg
dm9pZCBkaXNwYXRjaFNjb3BlZEV2ZW50KFBhc3NSZWZQdHI8RXZlbnQ+KTsKKyAgICB2b2lkIGRp
c3BhdGNoU2NvcGVkRXZlbnREaXNwYXRjaE1lZGlhdG9yKFBhc3NSZWZQdHI8RXZlbnREaXNwYXRj
aE1lZGlhdG9yPik7CiAKICAgICB2aXJ0dWFsIHZvaWQgaGFuZGxlTG9jYWxFdmVudHMoRXZlbnQq
KTsKIAogICAgIHZvaWQgZGlzcGF0Y2hTdWJ0cmVlTW9kaWZpZWRFdmVudCgpOwogICAgIHZvaWQg
ZGlzcGF0Y2hVSUV2ZW50KGNvbnN0IEF0b21pY1N0cmluZyYgZXZlbnRUeXBlLCBpbnQgZGV0YWls
LCBQYXNzUmVmUHRyPEV2ZW50PiB1bmRlcmx5aW5nRXZlbnQpOworCisgICAgdm9pZCBkaXNwYXRj
aEZvY3VzSW5FdmVudChjb25zdCBBdG9taWNTdHJpbmcmIGV2ZW50VHlwZSwgUGFzc1JlZlB0cjxO
b2RlPiBvbGRGb2N1c2VkTm9kZSk7CisgICAgdm9pZCBkaXNwYXRjaEZvY3VzT3V0RXZlbnQoY29u
c3QgQXRvbWljU3RyaW5nJiBldmVudFR5cGUsIFBhc3NSZWZQdHI8Tm9kZT4gbmV3Rm9jdXNlZE5v
ZGUpOworCiAgICAgYm9vbCBkaXNwYXRjaEtleUV2ZW50KGNvbnN0IFBsYXRmb3JtS2V5Ym9hcmRF
dmVudCYpOwogICAgIGJvb2wgZGlzcGF0Y2hXaGVlbEV2ZW50KGNvbnN0IFBsYXRmb3JtV2hlZWxF
dmVudCYpOwogICAgIGJvb2wgZGlzcGF0Y2hNb3VzZUV2ZW50KGNvbnN0IFBsYXRmb3JtTW91c2VF
dmVudCYsIGNvbnN0IEF0b21pY1N0cmluZyYgZXZlbnRUeXBlLCBpbnQgY2xpY2tDb3VudCA9IDAs
IE5vZGUqIHJlbGF0ZWRUYXJnZXQgPSAwKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Rv
bS9TY29wZWRFdmVudFF1ZXVlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9TY29wZWRFdmVudFF1
ZXVlLmNwcAppbmRleCA2ODBkODJkYjIwZGZlYjA1YWYxYWMwMzU4NDIwZGM3MjQ2ZjY1NTk5Li5h
NmMwZWJhODllYzAwYzA3OGI2MzdlMDAyNzhlOTM3NWVhYzFhYzQ0IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9kb20vU2NvcGVkRXZlbnRRdWV1ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
ZG9tL1Njb3BlZEV2ZW50UXVldWUuY3BwCkBAIC0zMiwxMCArMzIsNDMgQEAKICNpbmNsdWRlICJT
Y29wZWRFdmVudFF1ZXVlLmgiCiAKICNpbmNsdWRlICJFdmVudC5oIgorI2luY2x1ZGUgIkV2ZW50
RGlzcGF0Y2hlci5oIgogI2luY2x1ZGUgIkV2ZW50VGFyZ2V0LmgiCiAKIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIAorY2xhc3MgU2NvcGVkRXZlbnRRdWV1ZUl0ZW0gOiBwdWJsaWMgUmVmQ291bnRlZDxT
Y29wZWRFdmVudFF1ZXVlSXRlbT4geworcHVibGljOgorICAgIHN0YXRpYyB2b2lkIGRpc3BhdGNo
RXZlbnQoUGFzc1JlZlB0cjxFdmVudD4gZXZlbnQsIFBhc3NSZWZQdHI8Tm9kZT4gbm9kZSwgUGFz
c1JlZlB0cjxFdmVudERpc3BhdGNoTWVkaWF0b3I+IGV2ZW50RGlzcGF0Y2hNZWRpYXRvcikKKyAg
ICB7CisgICAgICAgIGlmIChldmVudERpc3BhdGNoTWVkaWF0b3IpIHsKKyAgICAgICAgICAgIEFT
U0VSVCghZXZlbnQpOworICAgICAgICAgICAgRXZlbnREaXNwYXRjaGVyOjpkaXNwYXRjaEV2ZW50
KG5vZGUuZ2V0KCksIGV2ZW50RGlzcGF0Y2hNZWRpYXRvcik7CisgICAgICAgIH0gZWxzZSB7Cisg
ICAgICAgICAgICBBU1NFUlQoZXZlbnQpOworICAgICAgICAgICAgZXZlbnQtPnRhcmdldCgpLT5k
aXNwYXRjaEV2ZW50KGV2ZW50KTsKKyAgICAgICAgfQorICAgIH0KKworICAgIHZvaWQgZGlzcGF0
Y2hFdmVudCgpCisgICAgeworICAgICAgICBkaXNwYXRjaEV2ZW50KG1fZXZlbnQsIG1fbm9kZSwg
bV9ldmVudERpc3BhdGNoTWVkaWF0b3IpOworICAgIH0KKworICAgIHN0YXRpYyBQYXNzUmVmUHRy
PFNjb3BlZEV2ZW50UXVldWVJdGVtPiBjcmVhdGUoUGFzc1JlZlB0cjxFdmVudD4gZXZlbnQsIFBh
c3NSZWZQdHI8Tm9kZT4gbm9kZSwgUGFzc1JlZlB0cjxFdmVudERpc3BhdGNoTWVkaWF0b3I+IGV2
ZW50RGlzcGF0Y2hNZWRpYXRvcikKKyAgICB7CisgICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcg
U2NvcGVkRXZlbnRRdWV1ZUl0ZW0oZXZlbnQsIG5vZGUsIGV2ZW50RGlzcGF0Y2hNZWRpYXRvcikp
OworICAgIH0KK3ByaXZhdGU6CisgICAgU2NvcGVkRXZlbnRRdWV1ZUl0ZW0oUGFzc1JlZlB0cjxF
dmVudD4gZXZlbnQsIFBhc3NSZWZQdHI8Tm9kZT4gbm9kZSwgUGFzc1JlZlB0cjxFdmVudERpc3Bh
dGNoTWVkaWF0b3I+IGV2ZW50RGlzcGF0Y2hNZWRpYXRvcikKKyAgICAgICAgOiBtX2V2ZW50KGV2
ZW50KQorICAgICAgICAsIG1fbm9kZShub2RlKQorICAgICAgICAsIG1fZXZlbnREaXNwYXRjaE1l
ZGlhdG9yKGV2ZW50RGlzcGF0Y2hNZWRpYXRvcikgeyB9OworICAgIFJlZlB0cjxFdmVudD4gbV9l
dmVudDsKKyAgICBSZWZQdHI8Tm9kZT4gbV9ub2RlOworICAgIFJlZlB0cjxFdmVudERpc3BhdGNo
TWVkaWF0b3I+IG1fZXZlbnREaXNwYXRjaE1lZGlhdG9yOworfTsKKwogU2NvcGVkRXZlbnRRdWV1
ZSogU2NvcGVkRXZlbnRRdWV1ZTo6c19pbnN0YW5jZSA9IDA7CiAKIFNjb3BlZEV2ZW50UXVldWU6
OlNjb3BlZEV2ZW50UXVldWUoKQpAQCAtNTksMjQgKzkyLDI2IEBAIHZvaWQgU2NvcGVkRXZlbnRR
dWV1ZTo6aW5pdGlhbGl6ZSgpCiB2b2lkIFNjb3BlZEV2ZW50UXVldWU6OmVucXVldWVFdmVudChQ
YXNzUmVmUHRyPEV2ZW50PiBldmVudCkKIHsKICAgICBpZiAobV9zY29waW5nTGV2ZWwpCi0gICAg
ICAgIG1fcXVldWVkRXZlbnRzLmFwcGVuZChldmVudCk7CisgICAgICAgIG1fcXVldWVkRXZlbnRz
LmFwcGVuZChTY29wZWRFdmVudFF1ZXVlSXRlbTo6Y3JlYXRlKGV2ZW50LCAwLCAwKSk7CiAgICAg
ZWxzZQotICAgICAgICBkaXNwYXRjaEV2ZW50KGV2ZW50KTsKKyAgICAgICAgU2NvcGVkRXZlbnRR
dWV1ZUl0ZW06OmRpc3BhdGNoRXZlbnQoZXZlbnQsIDAsIDApOworfQorCit2b2lkIFNjb3BlZEV2
ZW50UXVldWU6OmVucXVldWVFdmVudChQYXNzUmVmUHRyPE5vZGU+IG5vZGUsIFBhc3NSZWZQdHI8
RXZlbnREaXNwYXRjaE1lZGlhdG9yPiBldmVudERpc3BhdGNoTWVkaWF0b3IpCit7CisgICAgaWYg
KG1fc2NvcGluZ0xldmVsKQorICAgICAgICBtX3F1ZXVlZEV2ZW50cy5hcHBlbmQoU2NvcGVkRXZl
bnRRdWV1ZUl0ZW06OmNyZWF0ZSgwLCBub2RlLCBldmVudERpc3BhdGNoTWVkaWF0b3IpKTsKKyAg
ICBlbHNlCisgICAgICAgIFNjb3BlZEV2ZW50UXVldWVJdGVtOjpkaXNwYXRjaEV2ZW50KDAsIG5v
ZGUsIGV2ZW50RGlzcGF0Y2hNZWRpYXRvcik7CiB9CiAKIHZvaWQgU2NvcGVkRXZlbnRRdWV1ZTo6
ZGlzcGF0Y2hBbGxFdmVudHMoKQogewotICAgIFZlY3RvcjxSZWZQdHI8RXZlbnQ+ID4gcXVldWVk
RXZlbnRzOworICAgIFZlY3RvcjxSZWZQdHI8U2NvcGVkRXZlbnRRdWV1ZUl0ZW0+ID4gcXVldWVk
RXZlbnRzOwogICAgIHF1ZXVlZEV2ZW50cy5zd2FwKG1fcXVldWVkRXZlbnRzKTsKIAogICAgIGZv
ciAoc2l6ZV90IGkgPSAwOyBpIDwgcXVldWVkRXZlbnRzLnNpemUoKTsgaSsrKQotICAgICAgICBk
aXNwYXRjaEV2ZW50KHF1ZXVlZEV2ZW50c1tpXS5yZWxlYXNlKCkpOwotfQotCi12b2lkIFNjb3Bl
ZEV2ZW50UXVldWU6OmRpc3BhdGNoRXZlbnQoUGFzc1JlZlB0cjxFdmVudD4gZXZlbnQpIGNvbnN0
Ci17Ci0gICAgUmVmUHRyPEV2ZW50VGFyZ2V0PiBldmVudFRhcmdldCA9IGV2ZW50LT50YXJnZXQo
KTsKLSAgICBldmVudFRhcmdldC0+ZGlzcGF0Y2hFdmVudChldmVudCk7CisgICAgICAgIHF1ZXVl
ZEV2ZW50c1tpXS0+ZGlzcGF0Y2hFdmVudCgpOwogfQogCiBTY29wZWRFdmVudFF1ZXVlKiBTY29w
ZWRFdmVudFF1ZXVlOjppbnN0YW5jZSgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20v
U2NvcGVkRXZlbnRRdWV1ZS5oIGIvU291cmNlL1dlYkNvcmUvZG9tL1Njb3BlZEV2ZW50UXVldWUu
aAppbmRleCA1MjQxNWQ0OTFmNGEzMTc1NjQzNmJlZGM0MmI2ZWVlNWEzYWZiYTYzLi45NzgxNzA1
ODIwZTFhOTE2YTRmZjQyNjM0MWU1MWExYjQ2Yjc3YTYzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9kb20vU2NvcGVkRXZlbnRRdWV1ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9TY29w
ZWRFdmVudFF1ZXVlLmgKQEAgLTMxLDYgKzMxLDcgQEAKICNpZm5kZWYgU2NvcGVkRXZlbnRRdWV1
ZV9oCiAjZGVmaW5lIFNjb3BlZEV2ZW50UXVldWVfaAogCisjaW5jbHVkZSAiRXZlbnQuaCIKICNp
bmNsdWRlIDx3dGYvTm9uY29weWFibGUuaD4KICNpbmNsdWRlIDx3dGYvUGFzc093blB0ci5oPgog
I2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+CkBAIC0zOCw3ICszOSw3IEBACiAKIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIAotY2xhc3MgRXZlbnQ7CitjbGFzcyBTY29wZWRFdmVudFF1ZXVlSXRlbTsK
IAogY2xhc3MgU2NvcGVkRXZlbnRRdWV1ZSB7CiAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoU2Nv
cGVkRXZlbnRRdWV1ZSk7CkBAIC00Niw3ICs0Nyw5IEBAIGNsYXNzIFNjb3BlZEV2ZW50UXVldWUg
ewogcHVibGljOgogICAgIH5TY29wZWRFdmVudFF1ZXVlKCk7CiAKKyAgICB2b2lkIGVucXVldWVF
dmVudChQYXNzUmVmUHRyPE5vZGU+LCBQYXNzUmVmUHRyPEV2ZW50RGlzcGF0Y2hNZWRpYXRvcj4p
OwogICAgIHZvaWQgZW5xdWV1ZUV2ZW50KFBhc3NSZWZQdHI8RXZlbnQ+KTsKKwogICAgIHZvaWQg
ZGlzcGF0Y2hBbGxFdmVudHMoKTsKICAgICBzdGF0aWMgU2NvcGVkRXZlbnRRdWV1ZSogaW5zdGFu
Y2UoKTsKIApAQCAtNTYsOSArNTksOSBAQCBwdWJsaWM6CiBwcml2YXRlOgogICAgIFNjb3BlZEV2
ZW50UXVldWUoKTsKICAgICBzdGF0aWMgdm9pZCBpbml0aWFsaXplKCk7Ci0gICAgdm9pZCBkaXNw
YXRjaEV2ZW50KFBhc3NSZWZQdHI8RXZlbnQ+KSBjb25zdDsKIAotICAgIFZlY3RvcjxSZWZQdHI8
RXZlbnQ+ID4gbV9xdWV1ZWRFdmVudHM7CisgICAgVmVjdG9yPFJlZlB0cjxTY29wZWRFdmVudFF1
ZXVlSXRlbT4gPiBtX3F1ZXVlZEV2ZW50czsKKwogICAgIHVuc2lnbmVkIG1fc2NvcGluZ0xldmVs
OwogCiAgICAgc3RhdGljIFNjb3BlZEV2ZW50UXVldWUqIHNfaW5zdGFuY2U7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9kb20vV2hlZWxFdmVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20v
V2hlZWxFdmVudC5jcHAKaW5kZXggMGE1ZGE0YzJiODA1ZDhmZWZlYmRiZDA2YTFkNDQ3NGZmZTlj
M2IwOS4uNWU5OTg1MTk5OGYyMWVhMGM0MWU3YWMzZGJjMDg3NDdkMTEyYzhmNCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvZG9tL1doZWVsRXZlbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2RvbS9XaGVlbEV2ZW50LmNwcApAQCAtOTEsNiArOTEsMTEgQEAgaW5saW5lIHN0YXRpYyBXaGVl
bEV2ZW50OjpHcmFudWxhcml0eSBncmFudWxhcml0eShjb25zdCBQbGF0Zm9ybVdoZWVsRXZlbnQm
IGV2ZW4KICAgICByZXR1cm4gZXZlbnQuZ3JhbnVsYXJpdHkoKSA9PSBTY3JvbGxCeVBhZ2VXaGVl
bEV2ZW50ID8gV2hlZWxFdmVudDo6UGFnZSA6IFdoZWVsRXZlbnQ6OlBpeGVsOwogfQogCitQYXNz
UmVmUHRyPFdoZWVsRXZlbnREaXNwYXRjaE1lZGlhdG9yPiBXaGVlbEV2ZW50RGlzcGF0Y2hNZWRp
YXRvcjo6Y3JlYXRlKGNvbnN0IFBsYXRmb3JtV2hlZWxFdmVudCYgZXZlbnQsIFBhc3NSZWZQdHI8
QWJzdHJhY3RWaWV3PiB2aWV3KQoreworICAgIHJldHVybiBhZG9wdFJlZihuZXcgV2hlZWxFdmVu
dERpc3BhdGNoTWVkaWF0b3IoZXZlbnQsIHZpZXcpKTsKK30KKwogV2hlZWxFdmVudERpc3BhdGNo
TWVkaWF0b3I6OldoZWVsRXZlbnREaXNwYXRjaE1lZGlhdG9yKGNvbnN0IFBsYXRmb3JtV2hlZWxF
dmVudCYgZXZlbnQsIFBhc3NSZWZQdHI8QWJzdHJhY3RWaWV3PiB2aWV3KQogewogICAgIGlmICgh
KGV2ZW50LmRlbHRhWCgpIHx8IGV2ZW50LmRlbHRhWSgpKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2RvbS9XaGVlbEV2ZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vV2hlZWxFdmVudC5o
CmluZGV4IDkxOWQwNjlmNTRmOGYyMzc2MmZjNGQwY2MwNWYyZmNhYmJmYjg3YTEuLmY5Mzc0YzMz
ZjUwYmQ0OTQ1YTkyNDI0NTM4NmE1NjI3NzU0NmIyODkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2RvbS9XaGVlbEV2ZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL1doZWVsRXZlbnQu
aApAQCAtODEsOSArODEsOSBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIFdoZWVsRXZl
bnREaXNwYXRjaE1lZGlhdG9yIDogcHVibGljIEV2ZW50RGlzcGF0Y2hNZWRpYXRvciB7CiBwdWJs
aWM6Ci0gICAgV2hlZWxFdmVudERpc3BhdGNoTWVkaWF0b3IoY29uc3QgUGxhdGZvcm1XaGVlbEV2
ZW50JiwgUGFzc1JlZlB0cjxBYnN0cmFjdFZpZXc+KTsKLQorICAgIHN0YXRpYyBQYXNzUmVmUHRy
PFdoZWVsRXZlbnREaXNwYXRjaE1lZGlhdG9yPiBjcmVhdGUoY29uc3QgUGxhdGZvcm1XaGVlbEV2
ZW50JiwgUGFzc1JlZlB0cjxBYnN0cmFjdFZpZXc+KTsKIHByaXZhdGU6CisgICAgV2hlZWxFdmVu
dERpc3BhdGNoTWVkaWF0b3IoY29uc3QgUGxhdGZvcm1XaGVlbEV2ZW50JiwgUGFzc1JlZlB0cjxB
YnN0cmFjdFZpZXc+KTsKICAgICBXaGVlbEV2ZW50KiBldmVudCgpIGNvbnN0OwogICAgIHZpcnR1
YWwgYm9vbCBkaXNwYXRjaEV2ZW50KEV2ZW50RGlzcGF0Y2hlciopIGNvbnN0OwogfTsK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>103750</attachid>
            <date>2011-08-12 00:58:41 -0700</date>
            <delta_ts>2011-08-12 10:22:37 -0700</delta_ts>
            <desc>introduce FocusIn/FocusOutEventDispatchMediator</desc>
            <filename>bug-64249-20110812165840.patch</filename>
            <type>text/plain</type>
            <size>18239</size>
            <attacher name="Hayato Ito">hayato</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogOTI5MjIKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5n
ZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCAyNDdhYTFjMjFkYmQ3ODYxMTNlMjdl
YWI4NmRhMjBjZjFmMDVmMmIyLi4xN2MzNDBhYWQwZmIwOTBlODQ1MWQxYjE1ZDFiZDhmMzU2ODYz
MmM3IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMv
Q2hhbmdlTG9nCkBAIC0xLDMgKzEsMTYgQEAKKzIwMTEtMDgtMTIgIEhheWF0byBJdG8gIDxoYXlh
dG9AY2hyb21pdW0ub3JnPgorCisgICAgICAgIEltcGxlbWVudCBwcm9wZXIgaGFuZGxpbmcgb2Yg
Zm9jdXNpbi9mb2N1c291dCBldmVudHMgaW4gcmVnYXJkIHRvIHNoYWRvdyBET00gYm91bmRhcmll
cy4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTY0MjQ5
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgSW50cm9k
dWNlcyBGb2N1c0luRXZlbnREaXNwYXRjaE1lZGlhdG9yL0ZvY3VzT3V0RXZlbnREaXNwYXRjaE1l
ZGlhdG9yIHNvCisgICAgICAgIHRoYXQgd2UgY2FuIHNocmluayBhbmNlc3RvcnMgb2YgZXZlbnQg
dGFyZ2V0IG5vZGUgY29uc2lkZXJpbmcgc2hhZG93CisgICAgICAgIERPTSBib3VuZGFyaWVzIGJl
Zm9yZSBkaXNwYXRjaGluZyBmb2N1c2luL2ZvY3Vzb3V0IGV2ZW50cy4KKworICAgICAgICAqIGZh
c3QvZG9tL3NoYWRvdy9zaGFkb3ctYm91bmRhcnktZXZlbnRzLmh0bWw6CisKIDIwMTEtMDgtMTEg
IEhheWF0byBJdG8gIDxoYXlhdG9AY2hyb21pdW0ub3JnPgogCiAgICAgICAgIEltcGxlbWVudCBw
cm9wZXIgaGFuZGxpbmcgb2YgZXZlbnRzIHdpdGggYSByZWxhdGVkIHRhcmdldCBpbiByZWdhcmQg
dG8gc2hhZG93IERPTSBib3VuZGFyaWVzLgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9k
b20vc2hhZG93L3NoYWRvdy1ib3VuZGFyeS1ldmVudHMtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVz
dHMvZmFzdC9kb20vc2hhZG93L3NoYWRvdy1ib3VuZGFyeS1ldmVudHMtZXhwZWN0ZWQudHh0Cmlu
ZGV4IDBkZTNkZDJlM2VkNjcxYWY1ZTI4ZjlkZTM0YmRlZjU3YzUyOTFmYTYuLmE1N2I3MGVmMjZh
YmMwNmQwZTVhNmMxOGFjODU2Mjk0NWRhYWFlNTIgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2Zh
c3QvZG9tL3NoYWRvdy9zaGFkb3ctYm91bmRhcnktZXZlbnRzLWV4cGVjdGVkLnR4dAorKysgYi9M
YXlvdXRUZXN0cy9mYXN0L2RvbS9zaGFkb3cvc2hhZG93LWJvdW5kYXJ5LWV2ZW50cy1leHBlY3Rl
ZC50eHQKQEAgLTU4LDYgKzU4LDE2IEBAIFRhcmdldCBhbmQgcmVsYXRlZFRhcmdldCBleGlzdCBp
biBzZXBhcmF0ZWQgc3VidHJlZSwgY3Jvc3Npbmcgc2hhZG93IGJvdW5kYXJpZXMuCiBNb3Zpbmcg
bW91c2UgZnJvbSBzaGFkb3dEL3NoYWRvd0Yvc2hhZG93Ry9kaXZIIHRvIHNoYWRvd0Qvc2hhZG93
Sy9kaXZMCiBQQVNTIGRpc3BhdGNoZWRFdmVudCgibW91c2VvdmVyIikgaXMgWyJkaXZMKDwtc2hh
ZG93RikoQGRpdkwpIiwgInNoYWRvd0soPC1zaGFkb3dGKShAc2hhZG93SykiLCAic2hhZG93Syg8
LXNoYWRvd0YpKEBkaXZKKSJdCiBQQVNTIGRpc3BhdGNoZWRFdmVudCgibW91c2VvdXQiKSBpcyBb
ImRpdkgoPC1zaGFkb3dLKShAZGl2SCkiLCAic2hhZG93Ryg8LXNoYWRvd0spKEBzaGFkb3dHKSIs
ICJzaGFkb3dGKDwtc2hhZG93SykoQHNoYWRvd0YpIiwgInNoYWRvd0YoPC1zaGFkb3dLKShAZGl2
RSkiXQorCitNb3ZlIGZvY3VzIGZyb20gYSBub2RlIHRvIGl0cyBzaWJsaW5nIG5vZGUuIEFsbCBu
b2RlcyBhcmUgb3V0c2lkZSBvZiBzaGFkb3cgYm91bmRhcnkuCitNb3ZpbmcgZm9jdXMgZnJvbSBk
aXZCIHRvIGRpdkMKK1BBU1MgZGlzcGF0Y2hlZEV2ZW50KCJmb2N1c2luIikgaXMgWyJkaXZDKEBk
aXZDKSIsICJkaXZDKEBkaXZBKSJdCitQQVNTIGRpc3BhdGNoZWRFdmVudCgiZm9jdXNvdXQiKSBp
cyBbImRpdkIoQGRpdkIpIiwgImRpdkIoQGRpdkEpIl0KKworT2xkIGZvY3VzZWQgbm9kZSBhbmQg
bmV3IGZvY3VzZWQgbm9kZSBleGlzdCBpbiBzZXBhcmF0ZWQgc3VidHJlZXMsIGNyb3NzaW5nIHNo
YWRvdyBib3VuZGFyaWVzLiBNYWtpbmcgc3VyZSB0aGF0IGFuIGV2ZW50IGlzIG5vdCBkaXNwYXRj
aGVkIGJleW9uZCB0aGUgbG93ZXN0IGNvbW1vbiBib3VuZGFyeS4KK01vdmluZyBmb2N1cyBmcm9t
IHNoYWRvd0Qvc2hhZG93Ri9zaGFkb3dHL2RpdkggdG8gc2hhZG93RC9zaGFkb3dLL2RpdkwKK1BB
U1MgZGlzcGF0Y2hlZEV2ZW50KCJmb2N1c2luIikgaXMgWyJkaXZMKEBkaXZMKSIsICJzaGFkb3dL
KEBzaGFkb3dLKSIsICJzaGFkb3dLKEBkaXZKKSJdCitQQVNTIGRpc3BhdGNoZWRFdmVudCgiZm9j
dXNvdXQiKSBpcyBbImRpdkgoQGRpdkgpIiwgInNoYWRvd0coQHNoYWRvd0cpIiwgInNoYWRvd0Yo
QHNoYWRvd0YpIiwgInNoYWRvd0YoQGRpdkUpIl0KIFBBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlz
IHRydWUKIAogVEVTVCBDT01QTEVURQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9kb20v
c2hhZG93L3NoYWRvdy1ib3VuZGFyeS1ldmVudHMuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvZG9t
L3NoYWRvdy9zaGFkb3ctYm91bmRhcnktZXZlbnRzLmh0bWwKaW5kZXggNjA4ODYzM2FlZDc4NWZk
MzBhNTJiNDVlN2NhZDgxYTVjODMwMzMxMS4uNzJlODk3MmIyZTA2MDE4MjljYjExZTk0NDIwNDY4
YjI0ZTcwODNiNiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvZmFzdC9kb20vc2hhZG93L3NoYWRv
dy1ib3VuZGFyeS1ldmVudHMuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2RvbS9zaGFkb3cv
c2hhZG93LWJvdW5kYXJ5LWV2ZW50cy5odG1sCkBAIC03NSwxNyArNzUsMTcgQEAgZnVuY3Rpb24g
cHJlcGFyZURvbVRyZWUocGFyZW50KQogewogICAgIHBhcmVudC5hcHBlbmRDaGlsZCgKICAgICAg
ICAgY3JlYXRlRG9tKCdkaXYnLCB7J2lkJzogJ2RpdkEnLCAnc3R5bGUnOiAncGFkZGluZy10b3A6
IDQwcHgnfSwKLSAgICAgICAgICAgICAgICAgIGNyZWF0ZURvbSgnZGl2JywgeydpZCc6ICdkaXZC
JywgJ3N0eWxlJzogJ3dpZHRoOiA0MHB4OyBoZWlnaHQ6IDQwcHgnfSksCi0gICAgICAgICAgICAg
ICAgICBjcmVhdGVEb20oJ2RpdicsIHsnaWQnOiAnZGl2QycsICdzdHlsZSc6ICd3aWR0aDogNDBw
eDsgaGVpZ2h0OiA0MHB4J30pLAorICAgICAgICAgICAgICAgICAgY3JlYXRlRG9tKCdkaXYnLCB7
J2lkJzogJ2RpdkInLCAnc3R5bGUnOiAnd2lkdGg6IDQwcHg7IGhlaWdodDogNDBweCcsICd0YWJp
bmRleCc6IDB9KSwKKyAgICAgICAgICAgICAgICAgIGNyZWF0ZURvbSgnZGl2JywgeydpZCc6ICdk
aXZDJywgJ3N0eWxlJzogJ3dpZHRoOiA0MHB4OyBoZWlnaHQ6IDQwcHgnLCAndGFiaW5kZXgnOiAw
fSksCiAgICAgICAgICAgICAgICAgICBjcmVhdGVTaGFkb3coJ2RpdicsIHsnaWQnOiAnc2hhZG93
RCcsICdzdHlsZSc6ICdwYWRkaW5nLXRvcDogNDBweCd9LAogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGNyZWF0ZURvbSgnZGl2JywgeydpZCc6ICdkaXZFJywgJ3N0eWxlJzogJ3BhZGRp
bmctdG9wOiA0MHB4J30sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGNyZWF0ZVNoYWRvdygnZGl2JywgeydpZCc6ICdzaGFkb3dGJywgJ3N0eWxlJzogJ3BhZGRpbmct
dG9wOiA0MHB4J30sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBjcmVhdGVTaGFkb3coJ2RpdicsIHsnaWQnOiAnc2hhZG93RycsICdzdHlsZSc6
ICdwYWRkaW5nLXRvcDogNDBweCd9LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNyZWF0ZURvbSgnZGl2JywgeydpZCc6
ICdkaXZIJywgJ3N0eWxlJzogJ3dpZHRoOiA0MHB4OyBoZWlnaHQ6IDQwcHgnfSksCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgY3JlYXRlRG9tKCdkaXYnLCB7J2lkJzogJ2RpdkknLCAnc3R5bGUnOiAnd2lkdGg6IDQwcHg7
IGhlaWdodDogNDBweCd9KSkpKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjcmVhdGVEb20oJ2RpdicsIHsnaWQnOiAn
ZGl2SCcsICdzdHlsZSc6ICd3aWR0aDogNDBweDsgaGVpZ2h0OiA0MHB4JywgJ3RhYmluZGV4Jzog
MH0pLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGNyZWF0ZURvbSgnZGl2JywgeydpZCc6ICdkaXZJJywgJ3N0eWxlJzog
J3dpZHRoOiA0MHB4OyBoZWlnaHQ6IDQwcHgnLCAndGFiaW5kZXgnOiAwfSkpKSksCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgY3JlYXRlRG9tKCdkaXYnLCB7J2lkJzogJ2RpdkonLCAn
c3R5bGUnOiAncGFkZGluZy10b3A6IDQwcHgnfSwKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgY3JlYXRlU2hhZG93KCdkaXYnLCB7J2lkJzogJ3NoYWRvd0snLCAnc3R5
bGUnOiAncGFkZGluZy10b3A6IDQwcHgnfSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGNyZWF0ZURvbSgnZGl2JywgeydpZCc6ICdkaXZMJywg
J3N0eWxlJzogJ3dpZHRoOiA0MHB4OyBoZWlnaHQ6IDQwcHgnfSkpKSkpKTsKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNyZWF0ZURvbSgnZGl2
JywgeydpZCc6ICdkaXZMJywgJ3N0eWxlJzogJ3dpZHRoOiA0MHB4OyBoZWlnaHQ6IDQwcHgnLCAn
dGFiaW5kZXgnOiAwfSkpKSkpKTsKIAogICAgIHZhciBpZHMgPSBbJ2RpdkEnLCAnZGl2QicsICdk
aXZDJywKICAgICAgICAgICAgICAgICdzaGFkb3dEJywgJ3NoYWRvd0QvZGl2RScsICdzaGFkb3dE
L3NoYWRvd0YnLCAnc2hhZG93RC9zaGFkb3dGL3NoYWRvd0cnLApAQCAtOTUsNiArOTUsOCBAQCBm
dW5jdGlvbiBwcmVwYXJlRG9tVHJlZShwYXJlbnQpCiAgICAgICAgIHZhciBlbGVtZW50ID0gZ2V0
RWxlbWVudEluU2hhZG93KGlkc1tpXSk7CiAgICAgICAgIGVsZW1lbnQuYWRkRXZlbnRMaXN0ZW5l
cignbW91c2VvdmVyJywgcmVjb3JkRXZlbnQsIGZhbHNlKTsKICAgICAgICAgZWxlbWVudC5hZGRF
dmVudExpc3RlbmVyKCdtb3VzZW91dCcsIHJlY29yZEV2ZW50LCBmYWxzZSk7CisgICAgICAgIGVs
ZW1lbnQuYWRkRXZlbnRMaXN0ZW5lcignZm9jdXNpbicsIHJlY29yZEV2ZW50LCBmYWxzZSk7Cisg
ICAgICAgIGVsZW1lbnQuYWRkRXZlbnRMaXN0ZW5lcignZm9jdXNvdXQnLCByZWNvcmRFdmVudCwg
ZmFsc2UpOwogICAgIH0KIH0KIApAQCAtMTA2LDEyICsxMDgsMjEgQEAgZnVuY3Rpb24gbW92ZU1v
dXNlKG9sZEVsZW1lbnRJZCwgbmV3RWxlbWVudElkLCBtZXNzYWdlKQogICAgIG1vdmVNb3VzZU92
ZXIoZ2V0RWxlbWVudEluU2hhZG93KG5ld0VsZW1lbnRJZCkpOwogfQogCitmdW5jdGlvbiBtb3Zl
Rm9jdXMob2xkRWxlbWVudElkLCBuZXdFbGVtZW50SWQsIG1lc3NhZ2UpCit7CisgICAgZGVidWco
J1xuJyArIG1lc3NhZ2UgKyAnXG4nICsgJ01vdmluZyBmb2N1cyBmcm9tICcgKyBvbGRFbGVtZW50
SWQgKyAnIHRvICcgKyBuZXdFbGVtZW50SWQpOworICAgIGdldEVsZW1lbnRJblNoYWRvdyhvbGRF
bGVtZW50SWQpLmZvY3VzKCk7CisgICAgY2xlYXJFdmVudFJlY29yZHMoKTsKKyAgICBnZXRFbGVt
ZW50SW5TaGFkb3cobmV3RWxlbWVudElkKS5mb2N1cygpOworfQorCiBmdW5jdGlvbiB0ZXN0KCkK
IHsKICAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQogICAgICAgICBsYXlvdXRU
ZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7CiAgICAgcHJlcGFyZURvbVRyZWUoZG9jdW1lbnQu
Z2V0RWxlbWVudEJ5SWQoJ3NhbmRib3gnKSk7CiAKKyAgICAvLyBUZXN0IGZvciBtb3VzZW92ZXIv
bW91c2VvdXQgZXZlbnRzLgogICAgIG1vdmVNb3VzZSgnZGl2QicsICdkaXZDJywKICAgICAgICAg
ICAgICAgJ01vdmUgbW91c2UgZnJvbSBhIG5vZGUgdG8gaXRzIHNpYmxpbmcgbm9kZS4gQWxsIG5v
ZGVzIGFyZSBvdXRzaWRlIG9mIHNoYWRvdyBib3VuZGFyeS4nKTsKICAgICBzaG91bGRCZSgnZGlz
cGF0Y2hlZEV2ZW50KCJtb3VzZW92ZXIiKScsICdbImRpdkMoPC1kaXZCKShAZGl2QykiLCAiZGl2
Qyg8LWRpdkIpKEBkaXZBKSJdJyk7CkBAIC0xNjYsNiArMTc3LDIwIEBAIGZ1bmN0aW9uIHRlc3Qo
KQogICAgICAgICAgICAgICAnVGFyZ2V0IGFuZCByZWxhdGVkVGFyZ2V0IGV4aXN0IGluIHNlcGFy
YXRlZCBzdWJ0cmVlLCBjcm9zc2luZyBzaGFkb3cgYm91bmRhcmllcy4gTWFraW5nIHN1cmUgdGhh
dCBldmVudCBpcyBub3QgZGlzcGF0Y2hlZCBiZXlvbmQgdGhlIGxvd2VzdCBjb21tb24gYm91bmRh
cnkuJyk7CiAgICAgc2hvdWxkQmUoJ2Rpc3BhdGNoZWRFdmVudCgibW91c2VvdmVyIiknLCAnWyJk
aXZMKDwtc2hhZG93RikoQGRpdkwpIiwgInNoYWRvd0soPC1zaGFkb3dGKShAc2hhZG93SykiLCAi
c2hhZG93Syg8LXNoYWRvd0YpKEBkaXZKKSJdJyk7CiAgICAgc2hvdWxkQmUoJ2Rpc3BhdGNoZWRF
dmVudCgibW91c2VvdXQiKScsICdbImRpdkgoPC1zaGFkb3dLKShAZGl2SCkiLCAic2hhZG93Ryg8
LXNoYWRvd0spKEBzaGFkb3dHKSIsICJzaGFkb3dGKDwtc2hhZG93SykoQHNoYWRvd0YpIiwgInNo
YWRvd0YoPC1zaGFkb3dLKShAZGl2RSkiXScpOworCisgICAgLy8gVGVzdCBmb3IgZm9jdXNpbi9m
b2N1c291dCBldmVudHMuCisgICAgbW92ZUZvY3VzKCdkaXZCJywgJ2RpdkMnLAorICAgICAgICAg
ICAgICAnTW92ZSBmb2N1cyBmcm9tIGEgbm9kZSB0byBpdHMgc2libGluZyBub2RlLiBBbGwgbm9k
ZXMgYXJlIG91dHNpZGUgb2Ygc2hhZG93IGJvdW5kYXJ5LicpOworICAgIHNob3VsZEJlKCdkaXNw
YXRjaGVkRXZlbnQoImZvY3VzaW4iKScsICdbImRpdkMoQGRpdkMpIiwgImRpdkMoQGRpdkEpIl0n
KTsKKyAgICBzaG91bGRCZSgnZGlzcGF0Y2hlZEV2ZW50KCJmb2N1c291dCIpJywgJ1siZGl2QihA
ZGl2QikiLCAiZGl2QihAZGl2QSkiXScpOworCisgICAgbW92ZUZvY3VzKCdzaGFkb3dEL3NoYWRv
d0Yvc2hhZG93Ry9kaXZIJywgJ3NoYWRvd0Qvc2hhZG93Sy9kaXZMJywKKyAgICAgICAgICAgICAg
J09sZCBmb2N1c2VkIG5vZGUgYW5kIG5ldyBmb2N1c2VkIG5vZGUgZXhpc3QgaW4gc2VwYXJhdGVk
IHN1YnRyZWVzLCBjcm9zc2luZyBzaGFkb3cgYm91bmRhcmllcy4gTWFraW5nIHN1cmUgdGhhdCBh
biBldmVudCBpcyBub3QgZGlzcGF0Y2hlZCBiZXlvbmQgdGhlIGxvd2VzdCBjb21tb24gYm91bmRh
cnkuJyk7CisgICAgc2hvdWxkQmUoJ2Rpc3BhdGNoZWRFdmVudCgiZm9jdXNpbiIpJywgJ1siZGl2
TChAZGl2TCkiLCAic2hhZG93SyhAc2hhZG93SykiLCAic2hhZG93SyhAZGl2SikiXScpOworICAg
IHNob3VsZEJlKCdkaXNwYXRjaGVkRXZlbnQoImZvY3Vzb3V0IiknLCAnWyJkaXZIKEBkaXZIKSIs
ICJzaGFkb3dHKEBzaGFkb3dHKSIsICJzaGFkb3dGKEBzaGFkb3dGKSIsICJzaGFkb3dGKEBkaXZF
KSJdJyk7CisKKyAgICAvLyBPbWl0dGVkIHRlc3QgY2FzZXMgd2hlcmUgZWl0aGVyIGEgb2xkRm9j
dXNlZE5vZGUgb3IgbmV3Rm9jdXNlZE5vZGUgaXMgYW4gYW5jZXN0b3Igb2YgdGhlIG90aGVyLgor
ICAgIC8vIER1ZSB0byBhIGZvY3VzIHRyYW5zZmVyIG1lY2hhbmlzbSBvbiBzaGFkb3cgaG9zdHMs
IGEgZm9jdXNlZCBub2RlIHNob3VsZCBiZSBhIGxlYWYgbm9kZSBpbiBnZW5lcmFsLgogfQogCiB0
ZXN0KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cKaW5kZXggMWIzODYxMTQxMGFmYzIzMDMzODcyYTM4MmE1YzllYmE2N2Vm
YWZiYS4uMDc0YTljMjk2MWZlMTU0ZTdlY2E0OWFjYTdiNzY4NTQ2NTc2ODdjOCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxv
ZwpAQCAtMSwzICsxLDMzIEBACisyMDExLTA4LTEyICBIYXlhdG8gSXRvICA8aGF5YXRvQGNocm9t
aXVtLm9yZz4KKworICAgICAgICBJbXBsZW1lbnQgcHJvcGVyIGhhbmRsaW5nIG9mIGZvY3VzaW4v
Zm9jdXNvdXQgZXZlbnRzIGluIHJlZ2FyZCB0byBzaGFkb3cgRE9NIGJvdW5kYXJpZXMuCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD02NDI0OQorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEludHJvZHVjZXMgRm9j
dXNJbkV2ZW50RGlzcGF0Y2hNZWRpYXRvci9Gb2N1c091dEV2ZW50RGlzcGF0Y2hNZWRpYXRvciBz
bworICAgICAgICB0aGF0IHdlIGNhbiBzaHJpbmsgYW5jZXN0b3JzIG9mIGV2ZW50IHRhcmdldCBu
b2RlIGNvbnNpZGVyaW5nIHNoYWRvdworICAgICAgICBET00gYm91bmRhcmllcyBiZWZvcmUgZGlz
cGF0Y2hpbmcgZm9jdXNpbi9mb2N1c291dCBldmVudHMuCisKKyAgICAgICAgVGVzdDogZmFzdC9k
b20vc2hhZG93L3NoYWRvdy1ib3VuZGFyeS1ldmVudHMuaHRtbAorCisgICAgICAgICogZG9tL0Rv
Y3VtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50OjpzZXRGb2N1c2VkTm9kZSk6
CisgICAgICAgICogZG9tL0V2ZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZvY3VzSW5FdmVu
dERpc3BhdGNoTWVkaWF0b3I6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpGb2N1c0luRXZl
bnREaXNwYXRjaE1lZGlhdG9yOjpGb2N1c0luRXZlbnREaXNwYXRjaE1lZGlhdG9yKToKKyAgICAg
ICAgKFdlYkNvcmU6OkZvY3VzSW5FdmVudERpc3BhdGNoTWVkaWF0b3I6OmRpc3BhdGNoRXZlbnQp
OgorICAgICAgICAoV2ViQ29yZTo6Rm9jdXNPdXRFdmVudERpc3BhdGNoTWVkaWF0b3I6OmNyZWF0
ZSk6CisgICAgICAgIChXZWJDb3JlOjpGb2N1c091dEV2ZW50RGlzcGF0Y2hNZWRpYXRvcjo6Rm9j
dXNPdXRFdmVudERpc3BhdGNoTWVkaWF0b3IpOgorICAgICAgICAoV2ViQ29yZTo6Rm9jdXNPdXRF
dmVudERpc3BhdGNoTWVkaWF0b3I6OmRpc3BhdGNoRXZlbnQpOgorICAgICAgICAqIGRvbS9FdmVu
dC5oOgorICAgICAgICAqIGRvbS9Ob2RlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok5vZGU6OmRp
c3BhdGNoRm9jdXNJbkV2ZW50KToKKyAgICAgICAgKFdlYkNvcmU6Ok5vZGU6OmRpc3BhdGNoRm9j
dXNPdXRFdmVudCk6CisgICAgICAgIChXZWJDb3JlOjpOb2RlOjpkaXNwYXRjaERPTUFjdGl2YXRl
RXZlbnQpOgorICAgICAgICAoV2ViQ29yZTo6Tm9kZTo6ZGVmYXVsdEV2ZW50SGFuZGxlcik6Cisg
ICAgICAgICogZG9tL05vZGUuaDoKKwogMjAxMS0wOC0xMSAgSGF5YXRvIEl0byAgPGhheWF0b0Bj
aHJvbWl1bS5vcmc+CiAKICAgICAgICAgSW1wbGVtZW50IHByb3BlciBoYW5kbGluZyBvZiBldmVu
dHMgd2l0aCBhIHJlbGF0ZWQgdGFyZ2V0IGluIHJlZ2FyZCB0byBzaGFkb3cgRE9NIGJvdW5kYXJp
ZXMuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwIGIvU291cmNl
L1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcAppbmRleCBmZDI4ODZlOWVlYWM3M2QyYWMyNGJiM2Nm
ODBhYTRiNWZjYTFlMTkzLi5mNTVhMGI1ODZmYzczYmMyYmY0OTBmZWFhYzZjMDhjZmE1MzNlN2M1
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAKQEAgLTMxMzMsMTAgKzMxMzMsMTAgQEAgYm9vbCBE
b2N1bWVudDo6c2V0Rm9jdXNlZE5vZGUoUGFzc1JlZlB0cjxOb2RlPiBwcnBOZXdGb2N1c2VkTm9k
ZSkKICAgICAgICAgICAgIG5ld0ZvY3VzZWROb2RlID0gMDsKICAgICAgICAgfQogICAgICAgICAK
LSAgICAgICAgb2xkRm9jdXNlZE5vZGUtPmRpc3BhdGNoVUlFdmVudChldmVudE5hbWVzKCkuZm9j
dXNvdXRFdmVudCwgMCwgMCk7IC8vIERPTSBsZXZlbCAzIG5hbWUgZm9yIHRoZSBidWJibGluZyBi
bHVyIGV2ZW50LgorICAgICAgICBvbGRGb2N1c2VkTm9kZS0+ZGlzcGF0Y2hGb2N1c091dEV2ZW50
KGV2ZW50TmFtZXMoKS5mb2N1c291dEV2ZW50LCBuZXdGb2N1c2VkTm9kZSk7IC8vIERPTSBsZXZl
bCAzIG5hbWUgZm9yIHRoZSBidWJibGluZyBibHVyIGV2ZW50LgogICAgICAgICAvLyBGSVhNRTog
V2Ugc2hvdWxkIHJlbW92ZSBmaXJpbmcgRE9NRm9jdXNPdXRFdmVudCBldmVudCB3aGVuIHdlIGFy
ZSBzdXJlIG5vIGNvbnRlbnQgZGVwZW5kcwogICAgICAgICAvLyBvbiBpdCwgcHJvYmFibHkgd2hl
biA8cmRhcjovL3Byb2JsZW0vODUwMzk1OD4gaXMgcmVzb2x2ZWQuCi0gICAgICAgIG9sZEZvY3Vz
ZWROb2RlLT5kaXNwYXRjaFVJRXZlbnQoZXZlbnROYW1lcygpLkRPTUZvY3VzT3V0RXZlbnQsIDAs
IDApOyAvLyBET00gbGV2ZWwgMiBuYW1lIGZvciBjb21wYXRpYmlsaXR5LgorICAgICAgICBvbGRG
b2N1c2VkTm9kZS0+ZGlzcGF0Y2hGb2N1c091dEV2ZW50KGV2ZW50TmFtZXMoKS5ET01Gb2N1c091
dEV2ZW50LCBuZXdGb2N1c2VkTm9kZSk7IC8vIERPTSBsZXZlbCAyIG5hbWUgZm9yIGNvbXBhdGli
aWxpdHkuCiAKICAgICAgICAgaWYgKG1fZm9jdXNlZE5vZGUpIHsKICAgICAgICAgICAgIC8vIGhh
bmRsZXIgc2hpZnRlZCBmb2N1cwpAQCAtMzE3NywxMCArMzE3NywxMCBAQCBib29sIERvY3VtZW50
OjpzZXRGb2N1c2VkTm9kZShQYXNzUmVmUHRyPE5vZGU+IHBycE5ld0ZvY3VzZWROb2RlKQogICAg
ICAgICAgICAgZ290byBTZXRGb2N1c2VkTm9kZURvbmU7CiAgICAgICAgIH0KIAotICAgICAgICBt
X2ZvY3VzZWROb2RlLT5kaXNwYXRjaFVJRXZlbnQoZXZlbnROYW1lcygpLmZvY3VzaW5FdmVudCwg
MCwgMCk7IC8vIERPTSBsZXZlbCAzIGJ1YmJsaW5nIGZvY3VzIGV2ZW50LgorICAgICAgICBtX2Zv
Y3VzZWROb2RlLT5kaXNwYXRjaEZvY3VzSW5FdmVudChldmVudE5hbWVzKCkuZm9jdXNpbkV2ZW50
LCBvbGRGb2N1c2VkTm9kZSk7IC8vIERPTSBsZXZlbCAzIGJ1YmJsaW5nIGZvY3VzIGV2ZW50Lgog
ICAgICAgICAvLyBGSVhNRTogV2Ugc2hvdWxkIHJlbW92ZSBmaXJpbmcgRE9NRm9jdXNJbkV2ZW50
IGV2ZW50IHdoZW4gd2UgYXJlIHN1cmUgbm8gY29udGVudCBkZXBlbmRzCi0gICAgICAgIC8vIG9u
IGl0LCBwcm9iYWJseSB3aGVuIDxyZGFyOi8vcHJvYmxlbS84NTAzOTU4PiBpcyByZXNvbHZlZC4K
LSAgICAgICAgbV9mb2N1c2VkTm9kZS0+ZGlzcGF0Y2hVSUV2ZW50KGV2ZW50TmFtZXMoKS5ET01G
b2N1c0luRXZlbnQsIDAsIDApOyAvLyBET00gbGV2ZWwgMiBmb3IgY29tcGF0aWJpbGl0eS4KKyAg
ICAgICAgLy8gb24gaXQsIHByb2JhYmx5IHdoZW4gPHJkYXI6Ly9wcm9ibGVtLzg1MDM5NTg+IGlz
IG0uCisgICAgICAgIG1fZm9jdXNlZE5vZGUtPmRpc3BhdGNoRm9jdXNJbkV2ZW50KGV2ZW50TmFt
ZXMoKS5ET01Gb2N1c0luRXZlbnQsIG9sZEZvY3VzZWROb2RlKTsgLy8gRE9NIGxldmVsIDIgZm9y
IGNvbXBhdGliaWxpdHkuCiAKICAgICAgICAgaWYgKG1fZm9jdXNlZE5vZGUgIT0gbmV3Rm9jdXNl
ZE5vZGUpIHsgCiAgICAgICAgICAgICAvLyBoYW5kbGVyIHNoaWZ0ZWQgZm9jdXMKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FdmVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRXZl
bnQuY3BwCmluZGV4IDhkYjVhMTIzYWE5NjViYmZhZjVlNWE2OTI5MWNlODE3ZWU0ODg0N2QuLjlj
YjdlMDg0MTU0MzYzMTNmMDcxMzQwY2M4N2ViMTJhZmQwMjkzODkgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2RvbS9FdmVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0V2ZW50LmNw
cApAQCAtMzA4LDQgKzMwOCwzOCBAQCBib29sIEV2ZW50RGlzcGF0Y2hNZWRpYXRvcjo6ZGlzcGF0
Y2hFdmVudChFdmVudERpc3BhdGNoZXIqIGRpc3BhdGNoZXIpIGNvbnN0CiAgICAgcmV0dXJuIGRp
c3BhdGNoZXItPmRpc3BhdGNoRXZlbnQobV9ldmVudC5nZXQoKSk7CiB9CiAKK1Bhc3NSZWZQdHI8
Rm9jdXNJbkV2ZW50RGlzcGF0Y2hNZWRpYXRvcj4gRm9jdXNJbkV2ZW50RGlzcGF0Y2hNZWRpYXRv
cjo6Y3JlYXRlKFBhc3NSZWZQdHI8RXZlbnQ+IGV2ZW50LCBQYXNzUmVmUHRyPE5vZGU+IG9sZEZv
Y3VzZWROb2RlKQoreworICAgIHJldHVybiBhZG9wdFJlZihuZXcgRm9jdXNJbkV2ZW50RGlzcGF0
Y2hNZWRpYXRvcihldmVudCwgb2xkRm9jdXNlZE5vZGUpKTsKK30KKworRm9jdXNJbkV2ZW50RGlz
cGF0Y2hNZWRpYXRvcjo6Rm9jdXNJbkV2ZW50RGlzcGF0Y2hNZWRpYXRvcihQYXNzUmVmUHRyPEV2
ZW50PiBldmVudCwgUGFzc1JlZlB0cjxOb2RlPiBvbGRGb2N1c2VkTm9kZSkKKyAgICA6IEV2ZW50
RGlzcGF0Y2hNZWRpYXRvcihldmVudCkKKyAgICAsIG1fb2xkRm9jdXNlZE5vZGUob2xkRm9jdXNl
ZE5vZGUpCit7Cit9CisKK2Jvb2wgRm9jdXNJbkV2ZW50RGlzcGF0Y2hNZWRpYXRvcjo6ZGlzcGF0
Y2hFdmVudChFdmVudERpc3BhdGNoZXIqIGRpc3BhdGNoZXIpIGNvbnN0Cit7CisgICAgZGlzcGF0
Y2hlci0+YWRqdXN0UmVsYXRlZFRhcmdldChldmVudCgpLCBtX29sZEZvY3VzZWROb2RlKTsKKyAg
ICByZXR1cm4gRXZlbnREaXNwYXRjaE1lZGlhdG9yOjpkaXNwYXRjaEV2ZW50KGRpc3BhdGNoZXIp
OworfQorCitQYXNzUmVmUHRyPEZvY3VzT3V0RXZlbnREaXNwYXRjaE1lZGlhdG9yPiBGb2N1c091
dEV2ZW50RGlzcGF0Y2hNZWRpYXRvcjo6Y3JlYXRlKFBhc3NSZWZQdHI8RXZlbnQ+IGV2ZW50LCBQ
YXNzUmVmUHRyPE5vZGU+IG5ld0ZvY3VzZWROb2RlKQoreworICAgIHJldHVybiBhZG9wdFJlZihu
ZXcgRm9jdXNPdXRFdmVudERpc3BhdGNoTWVkaWF0b3IoZXZlbnQsIG5ld0ZvY3VzZWROb2RlKSk7
Cit9CisKK0ZvY3VzT3V0RXZlbnREaXNwYXRjaE1lZGlhdG9yOjpGb2N1c091dEV2ZW50RGlzcGF0
Y2hNZWRpYXRvcihQYXNzUmVmUHRyPEV2ZW50PiBldmVudCwgUGFzc1JlZlB0cjxOb2RlPiBuZXdG
b2N1c2VkTm9kZSkKKyAgICA6IEV2ZW50RGlzcGF0Y2hNZWRpYXRvcihldmVudCkKKyAgICAsIG1f
bmV3Rm9jdXNlZE5vZGUobmV3Rm9jdXNlZE5vZGUpCit7Cit9CisKK2Jvb2wgRm9jdXNPdXRFdmVu
dERpc3BhdGNoTWVkaWF0b3I6OmRpc3BhdGNoRXZlbnQoRXZlbnREaXNwYXRjaGVyKiBkaXNwYXRj
aGVyKSBjb25zdAoreworICAgIGRpc3BhdGNoZXItPmFkanVzdFJlbGF0ZWRUYXJnZXQoZXZlbnQo
KSwgbV9uZXdGb2N1c2VkTm9kZSk7CisgICAgcmV0dXJuIEV2ZW50RGlzcGF0Y2hNZWRpYXRvcjo6
ZGlzcGF0Y2hFdmVudChkaXNwYXRjaGVyKTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0V2ZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9k
b20vRXZlbnQuaAppbmRleCBmNDU1NzgxMmJlYmI0ZWQ0MWRjNjYyMTgwNTgyMjM5ZGE1MGI0OGUx
Li4zMDI3Yzk2YjczOTExYTlhNzhmZTFjMjE4NDk5MjA0MGU5OGU1YjBkIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9kb20vRXZlbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRXZlbnQu
aApAQCAtMjMwLDYgKzIzMCwyNSBAQCBpbmxpbmUgdm9pZCBFdmVudERpc3BhdGNoTWVkaWF0b3I6
OnNldEV2ZW50KFBhc3NSZWZQdHI8RXZlbnQ+IGV2ZW50KQogICAgIG1fZXZlbnQgPSBldmVudDsK
IH0KIAorY2xhc3MgRm9jdXNJbkV2ZW50RGlzcGF0Y2hNZWRpYXRvciA6IHB1YmxpYyBFdmVudERp
c3BhdGNoTWVkaWF0b3IgeworcHVibGljOgorICAgIHN0YXRpYyBQYXNzUmVmUHRyPEZvY3VzSW5F
dmVudERpc3BhdGNoTWVkaWF0b3I+IGNyZWF0ZShQYXNzUmVmUHRyPEV2ZW50PiwgUGFzc1JlZlB0
cjxOb2RlPiBvbGRGb2N1c2VkTm9kZSk7Citwcml2YXRlOgorICAgIGV4cGxpY2l0IEZvY3VzSW5F
dmVudERpc3BhdGNoTWVkaWF0b3IoUGFzc1JlZlB0cjxFdmVudD4sIFBhc3NSZWZQdHI8Tm9kZT4g
b2xkRm9jdXNlZE5vZGUpOworICAgIHZpcnR1YWwgYm9vbCBkaXNwYXRjaEV2ZW50KEV2ZW50RGlz
cGF0Y2hlciopIGNvbnN0OworICAgIFJlZlB0cjxOb2RlPiBtX29sZEZvY3VzZWROb2RlOworfTsK
KworY2xhc3MgRm9jdXNPdXRFdmVudERpc3BhdGNoTWVkaWF0b3IgOiBwdWJsaWMgRXZlbnREaXNw
YXRjaE1lZGlhdG9yIHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxGb2N1c091dEV2
ZW50RGlzcGF0Y2hNZWRpYXRvcj4gY3JlYXRlKFBhc3NSZWZQdHI8RXZlbnQ+LCBQYXNzUmVmUHRy
PE5vZGU+IG5ld0ZvY3VzZWROb2RlKTsKK3ByaXZhdGU6CisgICAgZXhwbGljaXQgRm9jdXNPdXRF
dmVudERpc3BhdGNoTWVkaWF0b3IoUGFzc1JlZlB0cjxFdmVudD4sIFBhc3NSZWZQdHI8Tm9kZT4g
bmV3Rm9jdXNlZE5vZGUpOworICAgIHZpcnR1YWwgYm9vbCBkaXNwYXRjaEV2ZW50KEV2ZW50RGlz
cGF0Y2hlciopIGNvbnN0OworICAgIFJlZlB0cjxOb2RlPiBtX25ld0ZvY3VzZWROb2RlOworfTsK
KworCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKICNlbmRpZiAvLyBFdmVudF9oCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vTm9k
ZS5jcHAKaW5kZXggNzJkNzAzYWI1NDE5NGRlOTY5OWYzMWE0OWU1ZDZhMTg2YzM2NWEyYS4uNGQw
NzUyNTdlMWFlMmJlYWY3YTg3NDdjNjZiYzA5MmUwNGFkOTUzNyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvZG9tL05vZGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlLmNwcApA
QCAtMjczNCwxNSArMjczNCwyNCBAQCB2b2lkIE5vZGU6OmRpc3BhdGNoU3VidHJlZU1vZGlmaWVk
RXZlbnQoKQogICAgIGRpc3BhdGNoU2NvcGVkRXZlbnQoTXV0YXRpb25FdmVudDo6Y3JlYXRlKGV2
ZW50TmFtZXMoKS5ET01TdWJ0cmVlTW9kaWZpZWRFdmVudCwgdHJ1ZSkpOwogfQogCi12b2lkIE5v
ZGU6OmRpc3BhdGNoVUlFdmVudChjb25zdCBBdG9taWNTdHJpbmcmIGV2ZW50VHlwZSwgaW50IGRl
dGFpbCwgUGFzc1JlZlB0cjxFdmVudD4gdW5kZXJseWluZ0V2ZW50KQordm9pZCBOb2RlOjpkaXNw
YXRjaEZvY3VzSW5FdmVudChjb25zdCBBdG9taWNTdHJpbmcmIGV2ZW50VHlwZSwgUGFzc1JlZlB0
cjxOb2RlPiBvbGRGb2N1c2VkTm9kZSkKIHsKICAgICBBU1NFUlQoIWV2ZW50RGlzcGF0Y2hGb3Ji
aWRkZW4oKSk7Ci0gICAgQVNTRVJUKGV2ZW50VHlwZSA9PSBldmVudE5hbWVzKCkuZm9jdXNpbkV2
ZW50IHx8IGV2ZW50VHlwZSA9PSBldmVudE5hbWVzKCkuZm9jdXNvdXRFdmVudCB8fCAKLSAgICAg
ICAgICAgZXZlbnRUeXBlID09IGV2ZW50TmFtZXMoKS5ET01Gb2N1c0luRXZlbnQgfHwgZXZlbnRU
eXBlID09IGV2ZW50TmFtZXMoKS5ET01Gb2N1c091dEV2ZW50IHx8IGV2ZW50VHlwZSA9PSBldmVu
dE5hbWVzKCkuRE9NQWN0aXZhdGVFdmVudCk7Ci0gICAgCi0gICAgYm9vbCBjYW5jZWxhYmxlID0g
ZXZlbnRUeXBlID09IGV2ZW50TmFtZXMoKS5ET01BY3RpdmF0ZUV2ZW50OworICAgIEFTU0VSVChl
dmVudFR5cGUgPT0gZXZlbnROYW1lcygpLmZvY3VzaW5FdmVudCB8fCBldmVudFR5cGUgPT0gZXZl
bnROYW1lcygpLkRPTUZvY3VzSW5FdmVudCk7CisgICAgZGlzcGF0Y2hTY29wZWRFdmVudERpc3Bh
dGNoTWVkaWF0b3IoRm9jdXNJbkV2ZW50RGlzcGF0Y2hNZWRpYXRvcjo6Y3JlYXRlKFVJRXZlbnQ6
OmNyZWF0ZShldmVudFR5cGUsIHRydWUsIGZhbHNlLCBkb2N1bWVudCgpLT5kZWZhdWx0Vmlldygp
LCAwKSwgb2xkRm9jdXNlZE5vZGUpKTsKK30KKwordm9pZCBOb2RlOjpkaXNwYXRjaEZvY3VzT3V0
RXZlbnQoY29uc3QgQXRvbWljU3RyaW5nJiBldmVudFR5cGUsIFBhc3NSZWZQdHI8Tm9kZT4gbmV3
Rm9jdXNlZE5vZGUpCit7CisgICAgQVNTRVJUKCFldmVudERpc3BhdGNoRm9yYmlkZGVuKCkpOwor
ICAgIEFTU0VSVChldmVudFR5cGUgPT0gZXZlbnROYW1lcygpLmZvY3Vzb3V0RXZlbnQgfHwgZXZl
bnRUeXBlID09IGV2ZW50TmFtZXMoKS5ET01Gb2N1c091dEV2ZW50KTsKKyAgICBkaXNwYXRjaFNj
b3BlZEV2ZW50RGlzcGF0Y2hNZWRpYXRvcihGb2N1c091dEV2ZW50RGlzcGF0Y2hNZWRpYXRvcjo6
Y3JlYXRlKFVJRXZlbnQ6OmNyZWF0ZShldmVudFR5cGUsIHRydWUsIGZhbHNlLCBkb2N1bWVudCgp
LT5kZWZhdWx0VmlldygpLCAwKSwgbmV3Rm9jdXNlZE5vZGUpKTsKK30KIAotICAgIFJlZlB0cjxV
SUV2ZW50PiBldmVudCA9IFVJRXZlbnQ6OmNyZWF0ZShldmVudFR5cGUsIHRydWUsIGNhbmNlbGFi
bGUsIGRvY3VtZW50KCktPmRlZmF1bHRWaWV3KCksIGRldGFpbCk7Cit2b2lkIE5vZGU6OmRpc3Bh
dGNoRE9NQWN0aXZhdGVFdmVudChpbnQgZGV0YWlsLCBQYXNzUmVmUHRyPEV2ZW50PiB1bmRlcmx5
aW5nRXZlbnQpCit7CisgICAgQVNTRVJUKCFldmVudERpc3BhdGNoRm9yYmlkZGVuKCkpOworICAg
IFJlZlB0cjxVSUV2ZW50PiBldmVudCA9IFVJRXZlbnQ6OmNyZWF0ZShldmVudE5hbWVzKCkuRE9N
QWN0aXZhdGVFdmVudCwgdHJ1ZSwgdHJ1ZSwgZG9jdW1lbnQoKS0+ZGVmYXVsdFZpZXcoKSwgZGV0
YWlsKTsKICAgICBldmVudC0+c2V0VW5kZXJseWluZ0V2ZW50KHVuZGVybHlpbmdFdmVudCk7CiAg
ICAgZGlzcGF0Y2hTY29wZWRFdmVudChldmVudC5yZWxlYXNlKCkpOwogfQpAQCAtMjgxNCw3ICsy
ODIzLDcgQEAgdm9pZCBOb2RlOjpkZWZhdWx0RXZlbnRIYW5kbGVyKEV2ZW50KiBldmVudCkKICAg
ICAgICAgICAgICAgICBmcmFtZS0+ZXZlbnRIYW5kbGVyKCktPmRlZmF1bHRLZXlib2FyZEV2ZW50
SGFuZGxlcihzdGF0aWNfY2FzdDxLZXlib2FyZEV2ZW50Kj4oZXZlbnQpKTsKICAgICB9IGVsc2Ug
aWYgKGV2ZW50VHlwZSA9PSBldmVudE5hbWVzKCkuY2xpY2tFdmVudCkgewogICAgICAgICBpbnQg
ZGV0YWlsID0gZXZlbnQtPmlzVUlFdmVudCgpID8gc3RhdGljX2Nhc3Q8VUlFdmVudCo+KGV2ZW50
KS0+ZGV0YWlsKCkgOiAwOwotICAgICAgICBkaXNwYXRjaFVJRXZlbnQoZXZlbnROYW1lcygpLkRP
TUFjdGl2YXRlRXZlbnQsIGRldGFpbCwgZXZlbnQpOworICAgICAgICBkaXNwYXRjaERPTUFjdGl2
YXRlRXZlbnQoZGV0YWlsLCBldmVudCk7CiAjaWYgRU5BQkxFKENPTlRFWFRfTUVOVVMpCiAgICAg
fSBlbHNlIGlmIChldmVudFR5cGUgPT0gZXZlbnROYW1lcygpLmNvbnRleHRtZW51RXZlbnQpIHsK
ICAgICAgICAgaWYgKEZyYW1lKiBmcmFtZSA9IGRvY3VtZW50KCktPmZyYW1lKCkpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZS5oIGIvU291cmNlL1dlYkNvcmUvZG9tL05vZGUu
aAppbmRleCAxYTk5MmU1NDZiMTE2OGM4MzdlYzc5MTE1NmQxODdmZjE5YWQ2MmQ3Li4zODI4NDU4
YmViNzQxMmVkZTIyNjIxYjc4MGNjOGFkMTRkY2JhNGY1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9kb20vTm9kZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlLmgKQEAgLTU1Miw3
ICs1NTIsMTAgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBoYW5kbGVMb2NhbEV2ZW50cyhF
dmVudCopOwogCiAgICAgdm9pZCBkaXNwYXRjaFN1YnRyZWVNb2RpZmllZEV2ZW50KCk7Ci0gICAg
dm9pZCBkaXNwYXRjaFVJRXZlbnQoY29uc3QgQXRvbWljU3RyaW5nJiBldmVudFR5cGUsIGludCBk
ZXRhaWwsIFBhc3NSZWZQdHI8RXZlbnQ+IHVuZGVybHlpbmdFdmVudCk7CisgICAgdm9pZCBkaXNw
YXRjaERPTUFjdGl2YXRlRXZlbnQoaW50IGRldGFpbCwgUGFzc1JlZlB0cjxFdmVudD4gdW5kZXJs
eWluZ0V2ZW50KTsKKyAgICB2b2lkIGRpc3BhdGNoRm9jdXNJbkV2ZW50KGNvbnN0IEF0b21pY1N0
cmluZyYgZXZlbnRUeXBlLCBQYXNzUmVmUHRyPE5vZGU+IG9sZEZvY3VzZWROb2RlKTsKKyAgICB2
b2lkIGRpc3BhdGNoRm9jdXNPdXRFdmVudChjb25zdCBBdG9taWNTdHJpbmcmIGV2ZW50VHlwZSwg
UGFzc1JlZlB0cjxOb2RlPiBuZXdGb2N1c2VkTm9kZSk7CisKICAgICBib29sIGRpc3BhdGNoS2V5
RXZlbnQoY29uc3QgUGxhdGZvcm1LZXlib2FyZEV2ZW50Jik7CiAgICAgYm9vbCBkaXNwYXRjaFdo
ZWVsRXZlbnQoY29uc3QgUGxhdGZvcm1XaGVlbEV2ZW50Jik7CiAgICAgYm9vbCBkaXNwYXRjaE1v
dXNlRXZlbnQoY29uc3QgUGxhdGZvcm1Nb3VzZUV2ZW50JiwgY29uc3QgQXRvbWljU3RyaW5nJiBl
dmVudFR5cGUsIGludCBjbGlja0NvdW50ID0gMCwgTm9kZSogcmVsYXRlZFRhcmdldCA9IDApOwo=
</data>
<flag name="review"
          id="99446"
          type_id="1"
          status="+"
          setter="dglazkov"
    />
          </attachment>
      

    </bug>

</bugzilla>