<?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>146533</bug_id>
          
          <creation_ts>2015-07-01 16:24:26 -0700</creation_ts>
          <short_desc>AX: Selection change as a result of focusing an element should include that information in the intent</short_desc>
          <delta_ts>2015-07-03 13:52:24 -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>Accessibility</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Doug Russell">d_russell</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>cdumez</cc>
    
    <cc>cfleizach</cc>
    
    <cc>commit-queue</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1106230</commentid>
    <comment_count>0</comment_count>
    <who name="Doug Russell">d_russell</who>
    <bug_when>2015-07-01 16:24:26 -0700</bug_when>
    <thetext>Selection changes that come as a result of focusing an element need to be coordinated by AT to handle both a selection change notification and a focus change notification. To simplify this, a flag should be set in intent to allow platforms to add appropriate context to their notifications. This will make it easier to avoid things like double speak and/or needing to duplicate logic.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1106231</commentid>
    <comment_count>1</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2015-07-01 16:24:51 -0700</bug_when>
    <thetext>&lt;rdar://problem/21642883&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1106232</commentid>
    <comment_count>2</comment_count>
      <attachid>255967</attachid>
    <who name="Doug Russell">d_russell</who>
    <bug_when>2015-07-01 16:24:56 -0700</bug_when>
    <thetext>Created attachment 255967
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1106238</commentid>
    <comment_count>3</comment_count>
      <attachid>255970</attachid>
    <who name="Doug Russell">d_russell</who>
    <bug_when>2015-07-01 16:33:35 -0700</bug_when>
    <thetext>Created attachment 255970
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1106476</commentid>
    <comment_count>4</comment_count>
      <attachid>255970</attachid>
    <who name="chris fleizach">cfleizach</who>
    <bug_when>2015-07-02 14:43:17 -0700</bug_when>
    <thetext>Comment on attachment 255970
patch

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

&gt; Source/WebCore/accessibility/AccessibilityRenderObject.cpp:1686
&gt; +    if (AXObjectCache* cache = axObjectCache())

i don&apos;t think you have to worry about axObjectCache() being nullptr inside of an AX object

&gt; Source/WebCore/dom/Element.h:325
&gt; +    static AXTextStateChangeIntent defaultFocusTextStateChangeIntent() { return AXTextStateChangeIntent(AXTextStateChangeTypeSelectionMove, AXTextSelection { AXTextSelectionDirectionDiscontiguous, AXTextSelectionGranularityUnknown, true }); }

is this one different from the default AXTextStateChangeIntent(); 
for cases, like
select(Element::defaultFocusTextStateChangeIntent());
it would be nice to not have to pass the argument

&gt; Source/WebCore/editing/FrameSelection.cpp:174
&gt; +    AXTextStateChangeIntent newIntent;

can we remove the else and just initialize with
newIntent = intent;

&gt; Source/WebCore/html/HTMLTextFormControlElement.h:113
&gt; +    void restoreCachedSelection(const AXTextStateChangeIntent&amp; = AXTextStateChangeIntent());

AXTextStateChangeIntent is  looking a bit wordy. Since this is being used all over non accessibility code, maybe the name should be changed to something like

TextIntention</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1106479</commentid>
    <comment_count>5</comment_count>
    <who name="Doug Russell">d_russell</who>
    <bug_when>2015-07-02 14:57:01 -0700</bug_when>
    <thetext>(In reply to comment #4)
&gt; Comment on attachment 255970 [details]
&gt; patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=255970&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/accessibility/AccessibilityRenderObject.cpp:1686
&gt; &gt; +    if (AXObjectCache* cache = axObjectCache())
&gt; 
&gt; i don&apos;t think you have to worry about axObjectCache() being nullptr inside
&gt; of an AX object

ok

&gt; 
&gt; &gt; Source/WebCore/dom/Element.h:325
&gt; &gt; +    static AXTextStateChangeIntent defaultFocusTextStateChangeIntent() { return AXTextStateChangeIntent(AXTextStateChangeTypeSelectionMove, AXTextSelection { AXTextSelectionDirectionDiscontiguous, AXTextSelectionGranularityUnknown, true }); }
&gt; 
&gt; is this one different from the default AXTextStateChangeIntent(); 
&gt; for cases, like
&gt; select(Element::defaultFocusTextStateChangeIntent());
&gt; it would be nice to not have to pass the argument

Yes. The default AXTextStateChangeIntent() is all unknown types and focusChange is false. I could have the default value be Element::defaultFocusTextStateChangeIntent() but that feels dangerous.

&gt; 
&gt; &gt; Source/WebCore/editing/FrameSelection.cpp:174
&gt; &gt; +    AXTextStateChangeIntent newIntent;
&gt; 
&gt; can we remove the else and just initialize with
&gt; newIntent = intent;

ok

&gt; 
&gt; &gt; Source/WebCore/html/HTMLTextFormControlElement.h:113
&gt; &gt; +    void restoreCachedSelection(const AXTextStateChangeIntent&amp; = AXTextStateChangeIntent());
&gt; 
&gt; AXTextStateChangeIntent is  looking a bit wordy. Since this is being used
&gt; all over non accessibility code, maybe the name should be changed to
&gt; something like
&gt; 
&gt; TextIntention

Would it be ok to do that in a future patch? I&apos;d like to keep this one small.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1106520</commentid>
    <comment_count>6</comment_count>
      <attachid>256044</attachid>
    <who name="Doug Russell">d_russell</who>
    <bug_when>2015-07-02 16:01:40 -0700</bug_when>
    <thetext>Created attachment 256044
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1106521</commentid>
    <comment_count>7</comment_count>
      <attachid>256045</attachid>
    <who name="Doug Russell">d_russell</who>
    <bug_when>2015-07-02 16:06:34 -0700</bug_when>
    <thetext>Created attachment 256045
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1106523</commentid>
    <comment_count>8</comment_count>
    <who name="chris fleizach">cfleizach</who>
    <bug_when>2015-07-02 16:09:46 -0700</bug_when>
    <thetext>(In reply to comment #5)
&gt; (In reply to comment #4)
&gt; &gt; Comment on attachment 255970 [details]
&gt; &gt; patch
&gt; &gt; 
&gt; &gt; View in context:
&gt; &gt; https://bugs.webkit.org/attachment.cgi?id=255970&amp;action=review
&gt; &gt; 
&gt; &gt; &gt; Source/WebCore/accessibility/AccessibilityRenderObject.cpp:1686
&gt; &gt; &gt; +    if (AXObjectCache* cache = axObjectCache())
&gt; &gt; 
&gt; &gt; i don&apos;t think you have to worry about axObjectCache() being nullptr inside
&gt; &gt; of an AX object
&gt; 
&gt; ok
&gt; 
&gt; &gt; 
&gt; &gt; &gt; Source/WebCore/dom/Element.h:325
&gt; &gt; &gt; +    static AXTextStateChangeIntent defaultFocusTextStateChangeIntent() { return AXTextStateChangeIntent(AXTextStateChangeTypeSelectionMove, AXTextSelection { AXTextSelectionDirectionDiscontiguous, AXTextSelectionGranularityUnknown, true }); }
&gt; &gt; 
&gt; &gt; is this one different from the default AXTextStateChangeIntent(); 
&gt; &gt; for cases, like
&gt; &gt; select(Element::defaultFocusTextStateChangeIntent());
&gt; &gt; it would be nice to not have to pass the argument
&gt; 
&gt; Yes. The default AXTextStateChangeIntent() is all unknown types and
&gt; focusChange is false. I could have the default value be
&gt; Element::defaultFocusTextStateChangeIntent() but that feels dangerous.
&gt; 
&gt; &gt; 
&gt; &gt; &gt; Source/WebCore/editing/FrameSelection.cpp:174
&gt; &gt; &gt; +    AXTextStateChangeIntent newIntent;
&gt; &gt; 
&gt; &gt; can we remove the else and just initialize with
&gt; &gt; newIntent = intent;
&gt; 
&gt; ok
&gt; 
&gt; &gt; 
&gt; &gt; &gt; Source/WebCore/html/HTMLTextFormControlElement.h:113
&gt; &gt; &gt; +    void restoreCachedSelection(const AXTextStateChangeIntent&amp; = AXTextStateChangeIntent());
&gt; &gt; 
&gt; &gt; AXTextStateChangeIntent is  looking a bit wordy. Since this is being used
&gt; &gt; all over non accessibility code, maybe the name should be changed to
&gt; &gt; something like
&gt; &gt; 
&gt; &gt; TextIntention
&gt; 
&gt; Would it be ok to do that in a future patch? I&apos;d like to keep this one small.

probably ok</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1106608</commentid>
    <comment_count>9</comment_count>
      <attachid>256045</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-07-02 20:35:36 -0700</bug_when>
    <thetext>Comment on attachment 256045
patch

Clearing flags on attachment: 256045

Committed r186256: &lt;http://trac.webkit.org/changeset/186256&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1106609</commentid>
    <comment_count>10</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-07-02 20:35:40 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1106727</commentid>
    <comment_count>11</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2015-07-03 10:21:00 -0700</bug_when>
    <thetext>The new test is failing on some bots:
https://build.webkit.org/results/Apple%20Yosemite%20Debug%20WK1%20(Tests)/r186256%20(5807)/platform/mac/accessibility/selection-notification-focus-change-pretty-diff.html</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1106728</commentid>
    <comment_count>12</comment_count>
      <attachid>256045</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2015-07-03 10:22:01 -0700</bug_when>
    <thetext>Comment on attachment 256045
patch

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

&gt; LayoutTests/platform/mac/accessibility/selection-notification-focus-change-expected.txt:16
&gt; +PASS axTextFocusChangeThree is true

Having those lines after the TEST COMPLETE is a good sign something is wrong with the test.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1106770</commentid>
    <comment_count>13</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2015-07-03 13:52:24 -0700</bug_when>
    <thetext>(In reply to comment #11)
&gt; The new test is failing on some bots:
&gt; https://build.webkit.org/results/Apple%20Yosemite%20Debug%20WK1%20(Tests)/
&gt; r186256%20(5807)/platform/mac/accessibility/selection-notification-focus-
&gt; change-pretty-diff.html

Tentative layout test fix landed in &lt;http://trac.webkit.org/changeset/186264&gt;.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>255967</attachid>
            <date>2015-07-01 16:24:56 -0700</date>
            <delta_ts>2015-07-01 16:33:35 -0700</delta_ts>
            <desc>patch</desc>
            <filename>focusChange.patch</filename>
            <type>text/plain</type>
            <size>23963</size>
            <attacher name="Doug Russell">d_russell</attacher>
            
              <data encoding="base64">Y29tbWl0IDNjMjBkMzI1MjQ2Mzg1NjBlYWJlMDg0ZDE2YjIwY2MyYmMyYmQ2YzEKQXV0aG9yOiBE
b3VnIFJ1c3NlbGwgPGRfcnVzc2VsbEBhcHBsZS5jb20+CkRhdGU6ICAgV2VkIEp1bCAxIDE1OjQx
OjIyIDIwMTUgLTA3MDAKCiAgICBGb2N1cwoKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsYXRm
b3JtL21hYy9hY2Nlc3NpYmlsaXR5L3NlbGVjdGlvbi1ub3RpZmljYXRpb24tZm9jdXMtY2hhbmdl
LWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy9hY2Nlc3NpYmlsaXR5L3Nl
bGVjdGlvbi1ub3RpZmljYXRpb24tZm9jdXMtY2hhbmdlLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41ZjhhMjRjCi0tLSAvZGV2L251bGwKKysrIGIvTGF5
b3V0VGVzdHMvcGxhdGZvcm0vbWFjL2FjY2Vzc2liaWxpdHkvc2VsZWN0aW9uLW5vdGlmaWNhdGlv
bi1mb2N1cy1jaGFuZ2UtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMTggQEAKKworIDEKKyAyCitU
aGlzIHRlc3RzIHRoYXQgc2VsZWN0aW9uIGNoYW5nZXMgYXMgYSByZXN1bHQgb2YgYWR2YW5jaW5n
IGZvY3VzIGluY2x1ZGUgQVhUZXh0U2VsZWN0aW9uQ2hhbmdlZEZvY3VzIGZsYWcuCisKK09uIHN1
Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2Vk
IGJ5ICJURVNUIENPTVBMRVRFIi4KKworCitQQVNTIGFkZGVkTm90aWZpY2F0aW9uIGlzIHRydWUK
K1BBU1MgYXhUZXh0Rm9jdXNDaGFuZ2VPbmUgaXMgdHJ1ZQorUEFTUyBheFRleHRGb2N1c0NoYW5n
ZVR3byBpcyB0cnVlCitQQVNTIGFjY2Vzc2liaWxpdHlDb250cm9sbGVyLmFjY2Vzc2libGVFbGVt
ZW50QnlJZCgiMSIpLmlzRm9jdXNhYmxlIGlzIHRydWUKK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2Vk
IGlzIHRydWUKKworVEVTVCBDT01QTEVURQorUEFTUyBheFRleHRGb2N1c0NoYW5nZVRocmVlIGlz
IHRydWUKK1BBU1MgYXhUZXh0Rm9jdXNDaGFuZ2VGb3VyIGlzIHRydWUKKwpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL2FjY2Vzc2liaWxpdHkvc2VsZWN0aW9uLW5vdGlmaWNh
dGlvbi1mb2N1cy1jaGFuZ2UuaHRtbCBiL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy9hY2Nlc3Np
YmlsaXR5L3NlbGVjdGlvbi1ub3RpZmljYXRpb24tZm9jdXMtY2hhbmdlLmh0bWwKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOTFlNmM4MQotLS0gL2Rldi9udWxsCisrKyBiL0xh
eW91dFRlc3RzL3BsYXRmb3JtL21hYy9hY2Nlc3NpYmlsaXR5L3NlbGVjdGlvbi1ub3RpZmljYXRp
b24tZm9jdXMtY2hhbmdlLmh0bWwKQEAgLTAsMCArMSw4MiBAQAorPCFET0NUWVBFIEhUTUwgUFVC
TElDICItLy9JRVRGLy9EVEQgSFRNTC8vRU4iPgorPGh0bWw+CisgICAgPGhlYWQ+CisgICAgICAg
IDxzY3JpcHQgc3JjPSIuLi8uLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0
PgorICAgIDwvaGVhZD4KKyAgICA8Ym9keSBpZD0iYm9keSI+CisgICAgICAgIDxmaWVsZHNldD4K
KyAgICAgICAgICAgIDxkaXY+CisgICAgICAgICAgICAgICAgPGlucHV0IGlkPSIxIj4KKyAgICAg
ICAgICAgICAgICAgICAgPGxhYmVsIGZvcj0iMSI+MTwvbGFiZWw+CisgICAgICAgICAgICAgICAg
ICAgIDwvZGl2PgorICAgICAgICAgICAgPGRpdj4KKyAgICAgICAgICAgICAgICA8aW5wdXQgaWQ9
IjIiPgorICAgICAgICAgICAgICAgICAgICA8bGFiZWwgZm9yPSIyIj4yPC9sYWJlbD4KKyAgICAg
ICAgICAgICAgICAgICAgPC9kaXY+CisgICAgICAgIDwvZmllbGRzZXQ+CisgICAgICAgIDxwIGlk
PSJkZXNjcmlwdGlvbiI+PC9wPgorICAgICAgICA8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKyAg
ICAgICAgPGRpdiBpZD0ibm90aWZpY2F0aW9ucyI+PC9kaXY+CisgICAgICAgIDxzY3JpcHQ+Cisg
ICAgICAgICAgICBkZXNjcmlwdGlvbigiVGhpcyB0ZXN0cyB0aGF0IHNlbGVjdGlvbiBjaGFuZ2Vz
IGFzIGEgcmVzdWx0IG9mIGFkdmFuY2luZyBmb2N1cyBpbmNsdWRlIEFYVGV4dFNlbGVjdGlvbkNo
YW5nZWRGb2N1cyBmbGFnLiIpOworCisgICAgICAgICAgICB2YXIgd2ViQXJlYSA9IDA7CisgICAg
ICAgICAgICB2YXIgYXhUZXh0Rm9jdXNDaGFuZ2VPbmUgPSAwOworICAgICAgICAgICAgdmFyIGF4
VGV4dEZvY3VzQ2hhbmdlVHdvID0gMDsKKyAgICAgICAgICAgIHZhciBheFRleHRGb2N1c0NoYW5n
ZVRocmVlID0gMDsKKyAgICAgICAgICAgIHZhciBheFRleHRGb2N1c0NoYW5nZUZvdXIgPSAwOwor
ICAgICAgICAgICAgdmFyIHNlbGVjdENvdW50ID0gMDsKKyAgICAgICAgICAgIHZhciBmb2N1c0Nv
dW50ID0gMDsKKyAgICAgICAgICAgIC8vIE5vdGlmaWNhdGlvbiBvcmRlcmluZzoKKyAgICAgICAg
ICAgIC8vIFRoZSBmaXJzdCB0YWIgd2lsbCByZXN1bHQgaW4gMiBzZWxlY3Rpb24gY2hhbmdlIG5v
dGlmaWNhdGlvbnMgYW5kIGEgZm9jdXMgbm90aWZpY2F0aW9uICAgICAgICAgIHNlbGVjdENvdW50
PTIsIGZvY3VzQ291bnQ9MQorICAgICAgICAgICAgLy8gdGFrZUZvY3VzKCkgd2lsbCByZXN1bHQg
aW4gYSBmb2N1cyBub3RpZmljYXRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgc2VsZWN0Q291bnQ9MiwgZm9jdXNDb3VudD0yCisgICAgICAgICAgICAv
LyBUaGUgc2Vjb25kIHRhYiB3aWxsIHJlc3VsdCBpbiBhbm90aGVyIDIgc2VsZWN0aW9uIGNoYW5n
ZSBub3RpZmljYXRpb25zIGFuZCBhIGZvY3VzIG5vdGlmaWNhdGlvbiBzZWxlY3RDb3VudD0xLCBm
b2N1c0NvdW50PTMKKyAgICAgICAgICAgIC8vIChUaGUgMiBzZWxlY3Rpb24gY2hhbmdlIG5vdGlm
aWNhdGlvbnMgcGVyIHRhYiBpcyBjYXVzZWQgYnkgY2FyZXQgYnJvd3NpbmcgYmVpbmcgZW5hYmxl
ZCkKKyAgICAgICAgICAgIGZ1bmN0aW9uIG5vdGlmaWNhdGlvbkNhbGxiYWNrKG5vdGlmaWNhdGlv
biwgdXNlckluZm8pIHsKKyAgICAgICAgICAgICAgICBpZiAobm90aWZpY2F0aW9uID09ICJBWFNl
bGVjdGVkVGV4dENoYW5nZWQiKSB7CisgICAgICAgICAgICAgICAgICAgIHNlbGVjdENvdW50Kys7
CisgICAgICAgICAgICAgICAgICAgIGlmIChzZWxlY3RDb3VudCA9PSAxKSB7CisgICAgICAgICAg
ICAgICAgICAgICAgICBheFRleHRGb2N1c0NoYW5nZU9uZSA9IHVzZXJJbmZvWyJBWFRleHRTZWxl
Y3Rpb25DaGFuZ2VkRm9jdXMiXTsKKyAgICAgICAgICAgICAgICAgICAgICAgIHNob3VsZEJlKCJh
eFRleHRGb2N1c0NoYW5nZU9uZSIsICJ0cnVlIik7CisgICAgICAgICAgICAgICAgICAgIH0gZWxz
ZSBpZiAoc2VsZWN0Q291bnQgPT0gMikgeworICAgICAgICAgICAgICAgICAgICAgICAgYXhUZXh0
Rm9jdXNDaGFuZ2VUd28gPSB1c2VySW5mb1siQVhUZXh0U2VsZWN0aW9uQ2hhbmdlZEZvY3VzIl07
CisgICAgICAgICAgICAgICAgICAgICAgICBzaG91bGRCZSgiYXhUZXh0Rm9jdXNDaGFuZ2VUd28i
LCAidHJ1ZSIpOworCisgICAgICAgICAgICAgICAgICAgICAgICBzaG91bGRCZSgiYWNjZXNzaWJp
bGl0eUNvbnRyb2xsZXIuYWNjZXNzaWJsZUVsZW1lbnRCeUlkKFwiMVwiKS5pc0ZvY3VzYWJsZSIs
ICJ0cnVlIik7CisgICAgICAgICAgICAgICAgICAgICAgICBhY2Nlc3NpYmlsaXR5Q29udHJvbGxl
ci5hY2Nlc3NpYmxlRWxlbWVudEJ5SWQoIjEiKS50YWtlRm9jdXMoKTsKKyAgICAgICAgICAgICAg
ICAgICAgfSBlbHNlIGlmIChzZWxlY3RDb3VudCA9PSAzKSB7CisgICAgICAgICAgICAgICAgICAg
ICAgICBheFRleHRGb2N1c0NoYW5nZVRocmVlID0gdXNlckluZm9bIkFYVGV4dFNlbGVjdGlvbkNo
YW5nZWRGb2N1cyJdOworICAgICAgICAgICAgICAgICAgICAgICAgc2hvdWxkQmUoImF4VGV4dEZv
Y3VzQ2hhbmdlVGhyZWUiLCAidHJ1ZSIpOworICAgICAgICAgICAgICAgICAgICB9IGVsc2UgaWYg
KHNlbGVjdENvdW50ID09IDQpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGF4VGV4dEZvY3Vz
Q2hhbmdlRm91ciA9IHVzZXJJbmZvWyJBWFRleHRTZWxlY3Rpb25DaGFuZ2VkRm9jdXMiXTsKKyAg
ICAgICAgICAgICAgICAgICAgICAgIHNob3VsZEJlKCJheFRleHRGb2N1c0NoYW5nZUZvdXIiLCAi
dHJ1ZSIpOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgfSBlbHNlIGlm
IChub3RpZmljYXRpb24gPT0gIkFYRm9jdXNDaGFuZ2VkIikgeworICAgICAgICAgICAgICAgICAg
ICBmb2N1c0NvdW50Kys7CisgICAgICAgICAgICAgICAgICAgIGlmIChmb2N1c0NvdW50ID09IDIp
IHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGV2ZW50U2VuZGVyLnNjaGVkdWxlQXN5bmNocm9u
b3VzS2V5RG93bigiXHQiKTsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAg
IH0KKyAgICAgICAgICAgICAgICBpZiAoc2VsZWN0Q291bnQgPT0gNCAmJiBmb2N1c0NvdW50ID09
IDMpIHsKKyAgICAgICAgICAgICAgICAgICAgd2ViQXJlYS5yZW1vdmVOb3RpZmljYXRpb25MaXN0
ZW5lcigpOworICAgICAgICAgICAgICAgICAgICB0ZXN0UnVubmVyLm5vdGlmeURvbmUoKTsKKyAg
ICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGlmICh3aW5kb3cu
YWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIpIHsKKyAgICAgICAgICAgICAgICB0ZXN0UnVubmVyLndh
aXRVbnRpbERvbmUoKTsKKyAgICAgICAgICAgICAgICB0ZXN0UnVubmVyLm92ZXJyaWRlUHJlZmVy
ZW5jZSgiV2ViS2l0VGFiVG9MaW5rc1ByZWZlcmVuY2VLZXkiLCAxKTsKKworICAgICAgICAgICAg
ICAgIGFjY2Vzc2liaWxpdHlDb250cm9sbGVyLmVuYWJsZUVuaGFuY2VkQWNjZXNzaWJpbGl0eSh0
cnVlKTsKKyAgICAgICAgICAgICAgICB3ZWJBcmVhID0gYWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIu
cm9vdEVsZW1lbnQuY2hpbGRBdEluZGV4KDApOworICAgICAgICAgICAgICAgIHdlYkFyZWEuc2V0
Qm9vbEF0dHJpYnV0ZVZhbHVlKCJBWENhcmV0QnJvd3NpbmdFbmFibGVkIiwgdHJ1ZSkKKworICAg
ICAgICAgICAgICAgIHZhciBhZGRlZE5vdGlmaWNhdGlvbiA9IHdlYkFyZWEuYWRkTm90aWZpY2F0
aW9uTGlzdGVuZXIobm90aWZpY2F0aW9uQ2FsbGJhY2spOworICAgICAgICAgICAgICAgIHNob3Vs
ZEJlKCJhZGRlZE5vdGlmaWNhdGlvbiIsICJ0cnVlIik7CisKKyAgICAgICAgICAgICAgICBldmVu
dFNlbmRlci5rZXlEb3duKCJcdCIpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgPC9zY3Jp
cHQ+CisgICAgICAgIDxzY3JpcHQgc3JjPSIuLi8uLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1wb3N0
LmpzIj48L3NjcmlwdD4KKyAgICA8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FYT2JqZWN0Q2FjaGUuY3BwIGIvU291cmNlL1dlYkNvcmUv
YWNjZXNzaWJpbGl0eS9BWE9iamVjdENhY2hlLmNwcAppbmRleCBjZGZiYTYzLi43N2IxNDYzIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FYT2JqZWN0Q2FjaGUuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQVhPYmplY3RDYWNoZS5jcHAKQEAg
LTEwNTMsNyArMTA1Myw4IEBAIHZvaWQgQVhPYmplY3RDYWNoZTo6cG9zdFRleHRTdGF0ZUNoYW5n
ZU5vdGlmaWNhdGlvbihBY2Nlc3NpYmlsaXR5T2JqZWN0KiBvYmplY3QsCiAgICAgICAgICAgICBv
YmplY3QgPSBvYnNlcnZhYmxlT2JqZWN0OwogICAgIH0KIAotICAgIHBvc3RUZXh0U3RhdGVDaGFu
Z2VQbGF0Zm9ybU5vdGlmaWNhdGlvbihvYmplY3QsIChpbnRlbnQudHlwZSA9PSBBWFRleHRTdGF0
ZUNoYW5nZVR5cGVVbmtub3duIHx8IG1faXNTeW5jaHJvbml6aW5nU2VsZWN0aW9uKSA/IG1fdGV4
dFNlbGVjdGlvbkludGVudCA6IGludGVudCwgc2VsZWN0aW9uKTsKKyAgICBjb25zdCBBWFRleHRT
dGF0ZUNoYW5nZUludGVudCYgbmV3SW50ZW50ID0gKGludGVudC50eXBlID09IEFYVGV4dFN0YXRl
Q2hhbmdlVHlwZVVua25vd24gfHwgKG1faXNTeW5jaHJvbml6aW5nU2VsZWN0aW9uICYmIG1fdGV4
dFNlbGVjdGlvbkludGVudC50eXBlICE9IEFYVGV4dFN0YXRlQ2hhbmdlVHlwZVVua25vd24pKSA/
IG1fdGV4dFNlbGVjdGlvbkludGVudCA6IGludGVudDsKKyAgICBwb3N0VGV4dFN0YXRlQ2hhbmdl
UGxhdGZvcm1Ob3RpZmljYXRpb24ob2JqZWN0LCBuZXdJbnRlbnQsIHNlbGVjdGlvbik7CiAjZWxz
ZQogICAgIFVOVVNFRF9QQVJBTShvYmplY3QpOwogICAgIFVOVVNFRF9QQVJBTShpbnRlbnQpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BWFRleHRTdGF0ZUNoYW5n
ZUludGVudC5oIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BWFRleHRTdGF0ZUNoYW5n
ZUludGVudC5oCmluZGV4IGVkYWQ0YWIuLmNmOWJlNDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2FjY2Vzc2liaWxpdHkvQVhUZXh0U3RhdGVDaGFuZ2VJbnRlbnQuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FYVGV4dFN0YXRlQ2hhbmdlSW50ZW50LmgKQEAgLTcwLDYg
KzcwLDcgQEAgZW51bSBBWFRleHRTZWxlY3Rpb25HcmFudWxhcml0eSB7CiBzdHJ1Y3QgQVhUZXh0
U2VsZWN0aW9uIHsKICAgICBBWFRleHRTZWxlY3Rpb25EaXJlY3Rpb24gZGlyZWN0aW9uOwogICAg
IEFYVGV4dFNlbGVjdGlvbkdyYW51bGFyaXR5IGdyYW51bGFyaXR5OworICAgIGJvb2wgZm9jdXND
aGFuZ2U7CiB9OwogCiBzdHJ1Y3QgQVhUZXh0U3RhdGVDaGFuZ2VJbnRlbnQgewpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVJlbmRlck9i
amVjdC5jcHAKaW5kZXggOTA4ZDY3Ny4uMGYzYzA1ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3QuY3BwCkBA
IC0xNTAyLDcgKzE1MDIsNyBAQCBzdGF0aWMgdm9pZCBzZXRUZXh0U2VsZWN0aW9uSW50ZW50KEFY
T2JqZWN0Q2FjaGUqIGNhY2hlLCBBWFRleHRTdGF0ZUNoYW5nZVR5cGUgdAogewogICAgIGlmICgh
Y2FjaGUpCiAgICAgICAgIHJldHVybjsKLSAgICBBWFRleHRTdGF0ZUNoYW5nZUludGVudCBpbnRl
bnQodHlwZSwgQVhUZXh0U2VsZWN0aW9uIHsgQVhUZXh0U2VsZWN0aW9uRGlyZWN0aW9uRGlzY29u
dGlndW91cywgQVhUZXh0U2VsZWN0aW9uR3JhbnVsYXJpdHlVbmtub3duIH0pOworICAgIEFYVGV4
dFN0YXRlQ2hhbmdlSW50ZW50IGludGVudCh0eXBlLCBBWFRleHRTZWxlY3Rpb24geyBBWFRleHRT
ZWxlY3Rpb25EaXJlY3Rpb25EaXNjb250aWd1b3VzLCBBWFRleHRTZWxlY3Rpb25HcmFudWxhcml0
eVVua25vd24sIGZhbHNlIH0pOwogICAgIGNhY2hlLT5zZXRUZXh0U2VsZWN0aW9uSW50ZW50KGlu
dGVudCk7CiAgICAgY2FjaGUtPnNldElzU3luY2hyb25pemluZ1NlbGVjdGlvbih0cnVlKTsKIH0K
QEAgLTE2ODMsOSArMTY4MywxMSBAQCB2b2lkIEFjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3Q6OnNl
dEZvY3VzZWQoYm9vbCBvbikKICAgICBpZiAoZG9jdW1lbnQtPmZvY3VzZWRFbGVtZW50KCkgPT0g
bm9kZSkKICAgICAgICAgZG9jdW1lbnQtPnNldEZvY3VzZWRFbGVtZW50KG51bGxwdHIpOwogCi0g
ICAgc2V0VGV4dFNlbGVjdGlvbkludGVudChheE9iamVjdENhY2hlKCksIEFYVGV4dFN0YXRlQ2hh
bmdlVHlwZVNlbGVjdGlvbk1vdmUpOworICAgIGlmIChBWE9iamVjdENhY2hlKiBjYWNoZSA9IGF4
T2JqZWN0Q2FjaGUoKSkKKyAgICAgICAgY2FjaGUtPnNldElzU3luY2hyb25pemluZ1NlbGVjdGlv
bih0cnVlKTsKICAgICBkb3duY2FzdDxFbGVtZW50Pigqbm9kZSkuZm9jdXMoKTsKLSAgICBjbGVh
clRleHRTZWxlY3Rpb25JbnRlbnQoYXhPYmplY3RDYWNoZSgpKTsKKyAgICBpZiAoQVhPYmplY3RD
YWNoZSogY2FjaGUgPSBheE9iamVjdENhY2hlKCkpCisgICAgICAgIGNhY2hlLT5zZXRJc1N5bmNo
cm9uaXppbmdTZWxlY3Rpb24oZmFsc2UpOwogfQogCiB2b2lkIEFjY2Vzc2liaWxpdHlSZW5kZXJP
YmplY3Q6OnNldFNlbGVjdGVkUm93cyhBY2Nlc3NpYmlsaXR5Q2hpbGRyZW5WZWN0b3ImIHNlbGVj
dGVkUm93cykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvbWFjL0FY
T2JqZWN0Q2FjaGVNYWMubW0gYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L21hYy9BWE9i
amVjdENhY2hlTWFjLm1tCmluZGV4IDgwMTA4NzUuLmYxNzJiY2IgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvbWFjL0FYT2JqZWN0Q2FjaGVNYWMubW0KKysrIGIvU291
cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9tYWMvQVhPYmplY3RDYWNoZU1hYy5tbQpAQCAtNjAs
NiArNjAsMTAgQEAKICNkZWZpbmUgTlNBY2Nlc3NpYmlsaXR5VGV4dFNlbGVjdGlvbkdyYW51bGFy
aXR5IEAiQVhUZXh0U2VsZWN0aW9uR3JhbnVsYXJpdHkiCiAjZW5kaWYKIAorI2lmbmRlZiBOU0Fj
Y2Vzc2liaWxpdHlUZXh0U2VsZWN0aW9uQ2hhbmdlZEZvY3VzCisjZGVmaW5lIE5TQWNjZXNzaWJp
bGl0eVRleHRTZWxlY3Rpb25DaGFuZ2VkRm9jdXMgQCJBWFRleHRTZWxlY3Rpb25DaGFuZ2VkRm9j
dXMiCisjZW5kaWYKKwogI2lmbmRlZiBOU0FjY2Vzc2liaWxpdHlUZXh0RWRpdFR5cGUKICNkZWZp
bmUgTlNBY2Nlc3NpYmlsaXR5VGV4dEVkaXRUeXBlIEAiQVhUZXh0RWRpdFR5cGUiCiAjZW5kaWYK
QEAgLTI0OSw2ICsyNTMsOCBAQCB2b2lkIEFYT2JqZWN0Q2FjaGU6OnBvc3RUZXh0U3RhdGVDaGFu
Z2VQbGF0Zm9ybU5vdGlmaWNhdGlvbihBY2Nlc3NpYmlsaXR5T2JqZWN0KgogICAgICAgICBjYXNl
IEFYVGV4dFN0YXRlQ2hhbmdlVHlwZUVkaXQ6CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAg
fQorICAgICAgICBpZiAoaW50ZW50LnNlbGVjdGlvbi5mb2N1c0NoYW5nZSkKKyAgICAgICAgICAg
IFt1c2VySW5mbyBzZXRPYmplY3Q6W05TTnVtYmVyIG51bWJlcldpdGhCb29sOmludGVudC5zZWxl
Y3Rpb24uZm9jdXNDaGFuZ2VdIGZvcktleTpOU0FjY2Vzc2liaWxpdHlUZXh0U2VsZWN0aW9uQ2hh
bmdlZEZvY3VzXTsKICAgICB9CiAgICAgaWYgKCFzZWxlY3Rpb24uaXNOb25lKCkpIHsKICAgICAg
ICAgaWYgKGlkIHRleHRNYXJrZXJSYW5nZSA9IFtvYmplY3QtPndyYXBwZXIoKSB0ZXh0TWFya2Vy
UmFuZ2VGcm9tVmlzaWJsZVBvc2l0aW9uczpzZWxlY3Rpb24udmlzaWJsZVN0YXJ0KCkgZW5kUG9z
aXRpb246c2VsZWN0aW9uLnZpc2libGVFbmQoKV0pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9kb20vRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5jcHAKaW5kZXgg
Y2NjNjM5YS4uYmU4ODRlYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmNwcApAQCAtMjE5OSw3ICsyMTk5
LDcgQEAgdm9pZCBFbGVtZW50Ojp1cGRhdGVGb2N1c0FwcGVhcmFuY2UoYm9vbCAvKnJlc3RvcmVQ
cmV2aW91c1NlbGVjdGlvbiovKQogICAgICAgICBWaXNpYmxlU2VsZWN0aW9uIG5ld1NlbGVjdGlv
biA9IFZpc2libGVTZWxlY3Rpb24oZmlyc3RQb3NpdGlvbkluT3JCZWZvcmVOb2RlKHRoaXMpLCBE
T1dOU1RSRUFNKTsKICAgICAgICAgCiAgICAgICAgIGlmIChmcmFtZS0+c2VsZWN0aW9uKCkuc2hv
dWxkQ2hhbmdlU2VsZWN0aW9uKG5ld1NlbGVjdGlvbikpIHsKLSAgICAgICAgICAgIGZyYW1lLT5z
ZWxlY3Rpb24oKS5zZXRTZWxlY3Rpb24obmV3U2VsZWN0aW9uKTsKKyAgICAgICAgICAgIGZyYW1l
LT5zZWxlY3Rpb24oKS5zZXRTZWxlY3Rpb24obmV3U2VsZWN0aW9uLCBGcmFtZVNlbGVjdGlvbjo6
ZGVmYXVsdFNldFNlbGVjdGlvbk9wdGlvbnMoKSwgRWxlbWVudDo6ZGVmYXVsdEZvY3VzVGV4dFN0
YXRlQ2hhbmdlSW50ZW50KCkpOwogICAgICAgICAgICAgZnJhbWUtPnNlbGVjdGlvbigpLnJldmVh
bFNlbGVjdGlvbigpOwogICAgICAgICB9CiAgICAgfSBlbHNlIGlmIChyZW5kZXJlcigpICYmICFy
ZW5kZXJlcigpLT5pc1dpZGdldCgpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0Vs
ZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmgKaW5kZXggNDUzMzQwMC4uNjVh
NTcyYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9kb20vRWxlbWVudC5oCkBAIC0yNSw2ICsyNSw3IEBACiAjaWZuZGVmIEVsZW1l
bnRfaAogI2RlZmluZSBFbGVtZW50X2gKIAorI2luY2x1ZGUgIkFYVGV4dFN0YXRlQ2hhbmdlSW50
ZW50LmgiCiAjaW5jbHVkZSAiRG9jdW1lbnQuaCIKICNpbmNsdWRlICJFbGVtZW50RGF0YS5oIgog
I2luY2x1ZGUgIkhUTUxOYW1lcy5oIgpAQCAtMzIxLDYgKzMyMiw3IEBAIHB1YmxpYzoKICAgICB2
aXJ0dWFsIGNvbnN0IEF0b21pY1N0cmluZyYgaW1hZ2VTb3VyY2VVUkwoKSBjb25zdDsKICAgICB2
aXJ0dWFsIFN0cmluZyB0YXJnZXQoKSBjb25zdCB7IHJldHVybiBTdHJpbmcoKTsgfQogCisgICAg
c3RhdGljIEFYVGV4dFN0YXRlQ2hhbmdlSW50ZW50IGRlZmF1bHRGb2N1c1RleHRTdGF0ZUNoYW5n
ZUludGVudCgpIHsgcmV0dXJuIEFYVGV4dFN0YXRlQ2hhbmdlSW50ZW50KEFYVGV4dFN0YXRlQ2hh
bmdlVHlwZVNlbGVjdGlvbk1vdmUsIEFYVGV4dFNlbGVjdGlvbiB7IEFYVGV4dFNlbGVjdGlvbkRp
cmVjdGlvbkRpc2NvbnRpZ3VvdXMsIEFYVGV4dFNlbGVjdGlvbkdyYW51bGFyaXR5VW5rbm93biwg
dHJ1ZSB9KTsgfQogICAgIHZvaWQgdXBkYXRlRm9jdXNBcHBlYXJhbmNlQWZ0ZXJBdHRhY2hJZk5l
ZWRlZCgpOwogICAgIHZpcnR1YWwgdm9pZCBmb2N1cyhib29sIHJlc3RvcmVQcmV2aW91c1NlbGVj
dGlvbiA9IHRydWUsIEZvY3VzRGlyZWN0aW9uID0gRm9jdXNEaXJlY3Rpb25Ob25lKTsKICAgICB2
aXJ0dWFsIHZvaWQgdXBkYXRlRm9jdXNBcHBlYXJhbmNlKGJvb2wgcmVzdG9yZVByZXZpb3VzU2Vs
ZWN0aW9uKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRnJhbWVTZWxlY3Rp
b24uY3BwIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9GcmFtZVNlbGVjdGlvbi5jcHAKaW5kZXgg
OWVlMDBmMi4uMzgyMjY3MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9GcmFt
ZVNlbGVjdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9GcmFtZVNlbGVjdGlv
bi5jcHAKQEAgLTE2NiwxMyArMTY2LDE3IEBAIHZvaWQgRnJhbWVTZWxlY3Rpb246Om1vdmVUbyhj
b25zdCBQb3NpdGlvbiAmYmFzZSwgY29uc3QgUG9zaXRpb24gJmV4dGVudCwgRUFmZmluCiAgICAg
c2V0U2VsZWN0aW9uKFZpc2libGVTZWxlY3Rpb24oYmFzZSwgZXh0ZW50LCBhZmZpbml0eSwgc2Vs
ZWN0aW9uSGFzRGlyZWN0aW9uKSwgZGVmYXVsdFNldFNlbGVjdGlvbk9wdGlvbnModXNlclRyaWdn
ZXJlZCkpOwogfQogCi12b2lkIEZyYW1lU2VsZWN0aW9uOjptb3ZlV2l0aG91dFZhbGlkYXRpb25U
byhjb25zdCBQb3NpdGlvbiYgYmFzZSwgY29uc3QgUG9zaXRpb24mIGV4dGVudCwgYm9vbCBzZWxl
Y3Rpb25IYXNEaXJlY3Rpb24sIGJvb2wgc2hvdWxkU2V0Rm9jdXMpCit2b2lkIEZyYW1lU2VsZWN0
aW9uOjptb3ZlV2l0aG91dFZhbGlkYXRpb25Ubyhjb25zdCBQb3NpdGlvbiYgYmFzZSwgY29uc3Qg
UG9zaXRpb24mIGV4dGVudCwgYm9vbCBzZWxlY3Rpb25IYXNEaXJlY3Rpb24sIGJvb2wgc2hvdWxk
U2V0Rm9jdXMsIGNvbnN0IEFYVGV4dFN0YXRlQ2hhbmdlSW50ZW50JiBpbnRlbnQpCiB7CiAgICAg
VmlzaWJsZVNlbGVjdGlvbiBuZXdTZWxlY3Rpb247CiAgICAgbmV3U2VsZWN0aW9uLnNldFdpdGhv
dXRWYWxpZGF0aW9uKGJhc2UsIGV4dGVudCk7CiAgICAgbmV3U2VsZWN0aW9uLnNldElzRGlyZWN0
aW9uYWwoc2VsZWN0aW9uSGFzRGlyZWN0aW9uKTsKLSAgICBBWFRleHRTdGF0ZUNoYW5nZUludGVu
dCBpbnRlbnQoQVhUZXh0U3RhdGVDaGFuZ2VUeXBlU2VsZWN0aW9uTW92ZSwgQVhUZXh0U2VsZWN0
aW9uIHsgQVhUZXh0U2VsZWN0aW9uRGlyZWN0aW9uRGlzY29udGlndW91cywgQVhUZXh0U2VsZWN0
aW9uR3JhbnVsYXJpdHlVbmtub3duIH0pOwotICAgIHNldFNlbGVjdGlvbihuZXdTZWxlY3Rpb24s
IGRlZmF1bHRTZXRTZWxlY3Rpb25PcHRpb25zKCkgfCAoc2hvdWxkU2V0Rm9jdXMgPyAwIDogRG9O
b3RTZXRGb2N1cyksIGludGVudCk7CisgICAgQVhUZXh0U3RhdGVDaGFuZ2VJbnRlbnQgbmV3SW50
ZW50OworICAgIGlmIChpbnRlbnQudHlwZSA9PSBBWFRleHRTdGF0ZUNoYW5nZVR5cGVVbmtub3du
KQorICAgICAgICBuZXdJbnRlbnQgPSBBWFRleHRTdGF0ZUNoYW5nZUludGVudChBWFRleHRTdGF0
ZUNoYW5nZVR5cGVTZWxlY3Rpb25Nb3ZlLCBBWFRleHRTZWxlY3Rpb24geyBBWFRleHRTZWxlY3Rp
b25EaXJlY3Rpb25EaXNjb250aWd1b3VzLCBBWFRleHRTZWxlY3Rpb25HcmFudWxhcml0eVVua25v
d24sIGZhbHNlIH0pOworICAgIGVsc2UKKyAgICAgICAgbmV3SW50ZW50ID0gaW50ZW50OworICAg
IHNldFNlbGVjdGlvbihuZXdTZWxlY3Rpb24sIGRlZmF1bHRTZXRTZWxlY3Rpb25PcHRpb25zKCkg
fCAoc2hvdWxkU2V0Rm9jdXMgPyAwIDogRG9Ob3RTZXRGb2N1cyksIG5ld0ludGVudCk7CiB9CiAK
IHZvaWQgRHJhZ0NhcmV0Q29udHJvbGxlcjo6c2V0Q2FyZXRQb3NpdGlvbihjb25zdCBWaXNpYmxl
UG9zaXRpb24mIHBvc2l0aW9uKQpAQCAtMjU5LDcgKzI2Myw3IEBAIHZvaWQgRnJhbWVTZWxlY3Rp
b246OnNldFNlbGVjdGlvbkJ5TW91c2VJZkRpZmZlcmVudChjb25zdCBWaXNpYmxlU2VsZWN0aW9u
JiBwYXNzCiAgICAgCiAgICAgQVhUZXh0U3RhdGVDaGFuZ2VJbnRlbnQgaW50ZW50OwogICAgIGlm
IChBWE9iamVjdENhY2hlOjphY2Nlc3NpYmlsaXR5RW5hYmxlZCgpICYmIG5ld1NlbGVjdGlvbi5p
c0NhcmV0KCkpCi0gICAgICAgIGludGVudCA9IEFYVGV4dFN0YXRlQ2hhbmdlSW50ZW50KEFYVGV4
dFN0YXRlQ2hhbmdlVHlwZVNlbGVjdGlvbk1vdmUsIEFYVGV4dFNlbGVjdGlvbiB7IEFYVGV4dFNl
bGVjdGlvbkRpcmVjdGlvbkRpc2NvbnRpZ3VvdXMsIEFYVGV4dFNlbGVjdGlvbkdyYW51bGFyaXR5
VW5rbm93biB9KTsKKyAgICAgICAgaW50ZW50ID0gQVhUZXh0U3RhdGVDaGFuZ2VJbnRlbnQoQVhU
ZXh0U3RhdGVDaGFuZ2VUeXBlU2VsZWN0aW9uTW92ZSwgQVhUZXh0U2VsZWN0aW9uIHsgQVhUZXh0
U2VsZWN0aW9uRGlyZWN0aW9uRGlzY29udGlndW91cywgQVhUZXh0U2VsZWN0aW9uR3JhbnVsYXJp
dHlVbmtub3duLCBmYWxzZSB9KTsKICAgICBlbHNlCiAgICAgICAgIGludGVudCA9IEFYVGV4dFN0
YXRlQ2hhbmdlSW50ZW50KCk7CiAgICAgc2V0U2VsZWN0aW9uKG5ld1NlbGVjdGlvbiwgZGVmYXVs
dFNldFNlbGVjdGlvbk9wdGlvbnMoKSB8IEZpcmVTZWxlY3RFdmVudCwgaW50ZW50LCBBbGlnbkN1
cnNvck9uU2Nyb2xsSWZOZWVkZWQsIGdyYW51bGFyaXR5KTsKQEAgLTE3OTIsNyArMTc5Niw3IEBA
IHZvaWQgRnJhbWVTZWxlY3Rpb246OnNlbGVjdEFsbCgpCiAgICAgVmlzaWJsZVNlbGVjdGlvbiBu
ZXdTZWxlY3Rpb24oVmlzaWJsZVNlbGVjdGlvbjo6c2VsZWN0aW9uRnJvbUNvbnRlbnRzT2ZOb2Rl
KHJvb3QuZ2V0KCkpKTsKIAogICAgIGlmIChzaG91bGRDaGFuZ2VTZWxlY3Rpb24obmV3U2VsZWN0
aW9uKSkgewotICAgICAgICBBWFRleHRTdGF0ZUNoYW5nZUludGVudCBpbnRlbnQoQVhUZXh0U3Rh
dGVDaGFuZ2VUeXBlU2VsZWN0aW9uRXh0ZW5kLCBBWFRleHRTZWxlY3Rpb24geyBBWFRleHRTZWxl
Y3Rpb25EaXJlY3Rpb25EaXNjb250aWd1b3VzLCBBWFRleHRTZWxlY3Rpb25HcmFudWxhcml0eUFs
bCB9KTsKKyAgICAgICAgQVhUZXh0U3RhdGVDaGFuZ2VJbnRlbnQgaW50ZW50KEFYVGV4dFN0YXRl
Q2hhbmdlVHlwZVNlbGVjdGlvbkV4dGVuZCwgQVhUZXh0U2VsZWN0aW9uIHsgQVhUZXh0U2VsZWN0
aW9uRGlyZWN0aW9uRGlzY29udGlndW91cywgQVhUZXh0U2VsZWN0aW9uR3JhbnVsYXJpdHlBbGws
IGZhbHNlIH0pOwogICAgICAgICBzZXRTZWxlY3Rpb24obmV3U2VsZWN0aW9uLCBkZWZhdWx0U2V0
U2VsZWN0aW9uT3B0aW9ucygpIHwgRmlyZVNlbGVjdEV2ZW50LCBpbnRlbnQpOwogICAgIH0KIH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRnJhbWVTZWxlY3Rpb24uaCBiL1Nv
dXJjZS9XZWJDb3JlL2VkaXRpbmcvRnJhbWVTZWxlY3Rpb24uaAppbmRleCA3NzgzYjZhLi5lZDg3
OTZlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0ZyYW1lU2VsZWN0aW9uLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9GcmFtZVNlbGVjdGlvbi5oCkBAIC0xNDIsNyAr
MTQyLDcgQEAgcHVibGljOgogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgbW92ZVRvKGNvbnN0IFZp
c2libGVQb3NpdGlvbiYsIGNvbnN0IFZpc2libGVQb3NpdGlvbiYsIEVVc2VyVHJpZ2dlcmVkID0g
Tm90VXNlclRyaWdnZXJlZCk7CiAgICAgdm9pZCBtb3ZlVG8oY29uc3QgUG9zaXRpb24mLCBFQWZm
aW5pdHksIEVVc2VyVHJpZ2dlcmVkID0gTm90VXNlclRyaWdnZXJlZCk7CiAgICAgdm9pZCBtb3Zl
VG8oY29uc3QgUG9zaXRpb24mLCBjb25zdCBQb3NpdGlvbiYsIEVBZmZpbml0eSwgRVVzZXJUcmln
Z2VyZWQgPSBOb3RVc2VyVHJpZ2dlcmVkKTsKLSAgICB2b2lkIG1vdmVXaXRob3V0VmFsaWRhdGlv
blRvKGNvbnN0IFBvc2l0aW9uJiwgY29uc3QgUG9zaXRpb24mLCBib29sIHNlbGVjdGlvbkhhc0Rp
cmVjdGlvbiwgYm9vbCBzaG91bGRTZXRGb2N1cyk7CisgICAgdm9pZCBtb3ZlV2l0aG91dFZhbGlk
YXRpb25Ubyhjb25zdCBQb3NpdGlvbiYsIGNvbnN0IFBvc2l0aW9uJiwgYm9vbCBzZWxlY3Rpb25I
YXNEaXJlY3Rpb24sIGJvb2wgc2hvdWxkU2V0Rm9jdXMsIGNvbnN0IEFYVGV4dFN0YXRlQ2hhbmdl
SW50ZW50JiA9IEFYVGV4dFN0YXRlQ2hhbmdlSW50ZW50KCkpOwogCiAgICAgY29uc3QgVmlzaWJs
ZVNlbGVjdGlvbiYgc2VsZWN0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9zZWxlY3Rpb247IH0KICAg
ICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldFNlbGVjdGlvbihjb25zdCBWaXNpYmxlU2VsZWN0aW9u
JiwgU2V0U2VsZWN0aW9uT3B0aW9ucyA9IGRlZmF1bHRTZXRTZWxlY3Rpb25PcHRpb25zKCksIEFY
VGV4dFN0YXRlQ2hhbmdlSW50ZW50ID0gQVhUZXh0U3RhdGVDaGFuZ2VJbnRlbnQoKSwgQ3Vyc29y
QWxpZ25PblNjcm9sbCA9IEFsaWduQ3Vyc29yT25TY3JvbGxJZk5lZWRlZCwgVGV4dEdyYW51bGFy
aXR5ID0gQ2hhcmFjdGVyR3JhbnVsYXJpdHkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
aHRtbC9IVE1MSW5wdXRFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTElucHV0
RWxlbWVudC5jcHAKaW5kZXggN2UwMzdhOS4uOWE0ZGRlYyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvaHRtbC9IVE1MSW5wdXRFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1s
L0hUTUxJbnB1dEVsZW1lbnQuY3BwCkBAIC00MDcsNyArNDA3LDcgQEAgdm9pZCBIVE1MSW5wdXRF
bGVtZW50Ojp1cGRhdGVGb2N1c0FwcGVhcmFuY2UoYm9vbCByZXN0b3JlUHJldmlvdXNTZWxlY3Rp
b24pCiB7CiAgICAgaWYgKGlzVGV4dEZpZWxkKCkpIHsKICAgICAgICAgaWYgKCFyZXN0b3JlUHJl
dmlvdXNTZWxlY3Rpb24gfHwgIWhhc0NhY2hlZFNlbGVjdGlvbigpKQotICAgICAgICAgICAgc2Vs
ZWN0KCk7CisgICAgICAgICAgICBzZWxlY3QoRWxlbWVudDo6ZGVmYXVsdEZvY3VzVGV4dFN0YXRl
Q2hhbmdlSW50ZW50KCkpOwogICAgICAgICBlbHNlCiAgICAgICAgICAgICByZXN0b3JlQ2FjaGVk
U2VsZWN0aW9uKCk7CiAgICAgICAgIGlmIChkb2N1bWVudCgpLmZyYW1lKCkpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxUZXh0QXJlYUVsZW1lbnQuY3BwIGIvU291cmNlL1dl
YkNvcmUvaHRtbC9IVE1MVGV4dEFyZWFFbGVtZW50LmNwcAppbmRleCA0YTk2NGY4Li45MzkyOTEx
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxUZXh0QXJlYUVsZW1lbnQuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRleHRBcmVhRWxlbWVudC5jcHAKQEAgLTI1
Nyw5ICsyNTcsOSBAQCB2b2lkIEhUTUxUZXh0QXJlYUVsZW1lbnQ6OnVwZGF0ZUZvY3VzQXBwZWFy
YW5jZShib29sIHJlc3RvcmVQcmV2aW91c1NlbGVjdGlvbikKICAgICAgICAgLy8gSWYgdGhpcyBp
cyB0aGUgZmlyc3QgZm9jdXMsIHNldCBhIGNhcmV0IGF0IHRoZSBiZWdpbm5pbmcgb2YgdGhlIHRl
eHQuICAKICAgICAgICAgLy8gVGhpcyBtYXRjaGVzIHNvbWUgYnJvd3NlcnMnIGJlaGF2aW9yOyBz
ZWUgYnVnIDExNzQ2IENvbW1lbnQgIzE1LgogICAgICAgICAvLyBodHRwOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0xMTc0NiNjMTUKLSAgICAgICAgc2V0U2VsZWN0aW9uUmFuZ2Uo
MCwgMCk7CisgICAgICAgIHNldFNlbGVjdGlvblJhbmdlKDAsIDAsIFNlbGVjdGlvbkhhc05vRGly
ZWN0aW9uLCBFbGVtZW50OjpkZWZhdWx0Rm9jdXNUZXh0U3RhdGVDaGFuZ2VJbnRlbnQoKSk7CiAg
ICAgfSBlbHNlCi0gICAgICAgIHJlc3RvcmVDYWNoZWRTZWxlY3Rpb24oKTsKKyAgICAgICAgcmVz
dG9yZUNhY2hlZFNlbGVjdGlvbihFbGVtZW50OjpkZWZhdWx0Rm9jdXNUZXh0U3RhdGVDaGFuZ2VJ
bnRlbnQoKSk7CiAKICAgICBpZiAoZG9jdW1lbnQoKS5mcmFtZSgpKQogICAgICAgICBkb2N1bWVu
dCgpLmZyYW1lKCktPnNlbGVjdGlvbigpLnJldmVhbFNlbGVjdGlvbigpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVGV4dEZvcm1Db250cm9sRWxlbWVudC5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL0hUTUxUZXh0Rm9ybUNvbnRyb2xFbGVtZW50LmNwcAppbmRleCAzNjg0
ZTI4Li43N2M3MzEzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxUZXh0Rm9y
bUNvbnRyb2xFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxUZXh0Rm9y
bUNvbnRyb2xFbGVtZW50LmNwcApAQCAtMTg1LDE1ICsxODUsMTUgQEAgdm9pZCBIVE1MVGV4dEZv
cm1Db250cm9sRWxlbWVudDo6c2V0U2VsZWN0aW9uRGlyZWN0aW9uKGNvbnN0IFN0cmluZyYgZGly
ZWN0aW9uKQogICAgIHNldFNlbGVjdGlvblJhbmdlKHNlbGVjdGlvblN0YXJ0KCksIHNlbGVjdGlv
bkVuZCgpLCBkaXJlY3Rpb24pOwogfQogCi12b2lkIEhUTUxUZXh0Rm9ybUNvbnRyb2xFbGVtZW50
OjpzZWxlY3QoKQordm9pZCBIVE1MVGV4dEZvcm1Db250cm9sRWxlbWVudDo6c2VsZWN0KGNvbnN0
IEFYVGV4dFN0YXRlQ2hhbmdlSW50ZW50JiBpbnRlbnQpCiB7CiAgICAgLy8gRklYTUU6IFdlIHNo
b3VsZCBhYnN0cmFjdCB0aGUgc2VsZWN0aW9uIGJlaGF2aW9yIGludG8gYW4gRWRpdGluZ0JlaGF2
aW9yIGZ1bmN0aW9uIGluc3RlYWQKICAgICAvLyBvZiBoYXJkY29kaW5nIHRoZSBiZWhhdmlvciB1
c2luZyBhIG1hY3JvIGRlZmluZS4KICNpZiBQTEFURk9STShJT1MpCiAgICAgLy8gV2UgZG9uJ3Qg
d2FudCB0byBzZWxlY3QgYWxsIHRoZSB0ZXh0IG9uIGlPUy4gSW5zdGVhZCB1c2UgdGhlIHN0YW5k
YXJkIHRleHRmaWVsZCBiZWhhdmlvciBvZiBnb2luZyB0byB0aGUgZW5kIG9mIHRoZSBsaW5lLgot
ICAgIHNldFNlbGVjdGlvblJhbmdlKHN0ZDo6bnVtZXJpY19saW1pdHM8aW50Pjo6bWF4KCksIHN0
ZDo6bnVtZXJpY19saW1pdHM8aW50Pjo6bWF4KCksIFNlbGVjdGlvbkhhc0ZvcndhcmREaXJlY3Rp
b24pOworICAgIHNldFNlbGVjdGlvblJhbmdlKHN0ZDo6bnVtZXJpY19saW1pdHM8aW50Pjo6bWF4
KCksIHN0ZDo6bnVtZXJpY19saW1pdHM8aW50Pjo6bWF4KCksIFNlbGVjdGlvbkhhc0ZvcndhcmRE
aXJlY3Rpb24sIGludGVudCk7CiAjZWxzZQotICAgIHNldFNlbGVjdGlvblJhbmdlKDAsIHN0ZDo6
bnVtZXJpY19saW1pdHM8aW50Pjo6bWF4KCksIFNlbGVjdGlvbkhhc05vRGlyZWN0aW9uKTsKKyAg
ICBzZXRTZWxlY3Rpb25SYW5nZSgwLCBzdGQ6Om51bWVyaWNfbGltaXRzPGludD46Om1heCgpLCBT
ZWxlY3Rpb25IYXNOb0RpcmVjdGlvbiwgaW50ZW50KTsKICNlbmRpZgogfQogCkBAIC0yNzIsNyAr
MjcyLDcgQEAgdm9pZCBIVE1MVGV4dEZvcm1Db250cm9sRWxlbWVudDo6c2V0UmFuZ2VUZXh0KGNv
bnN0IFN0cmluZyYgcmVwbGFjZW1lbnQsIHVuc2lnbmUKICAgICBzZXRTZWxlY3Rpb25SYW5nZShu
ZXdTZWxlY3Rpb25TdGFydCwgbmV3U2VsZWN0aW9uRW5kLCBTZWxlY3Rpb25IYXNOb0RpcmVjdGlv
bik7CiB9CiAKLXZvaWQgSFRNTFRleHRGb3JtQ29udHJvbEVsZW1lbnQ6OnNldFNlbGVjdGlvblJh
bmdlKGludCBzdGFydCwgaW50IGVuZCwgY29uc3QgU3RyaW5nJiBkaXJlY3Rpb25TdHJpbmcpCit2
b2lkIEhUTUxUZXh0Rm9ybUNvbnRyb2xFbGVtZW50OjpzZXRTZWxlY3Rpb25SYW5nZShpbnQgc3Rh
cnQsIGludCBlbmQsIGNvbnN0IFN0cmluZyYgZGlyZWN0aW9uU3RyaW5nLCBjb25zdCBBWFRleHRT
dGF0ZUNoYW5nZUludGVudCYgaW50ZW50KQogewogICAgIFRleHRGaWVsZFNlbGVjdGlvbkRpcmVj
dGlvbiBkaXJlY3Rpb24gPSBTZWxlY3Rpb25IYXNOb0RpcmVjdGlvbjsKICAgICBpZiAoZGlyZWN0
aW9uU3RyaW5nID09ICJmb3J3YXJkIikKQEAgLTI4MCwxMCArMjgwLDEwIEBAIHZvaWQgSFRNTFRl
eHRGb3JtQ29udHJvbEVsZW1lbnQ6OnNldFNlbGVjdGlvblJhbmdlKGludCBzdGFydCwgaW50IGVu
ZCwgY29uc3QgU3RyCiAgICAgZWxzZSBpZiAoZGlyZWN0aW9uU3RyaW5nID09ICJiYWNrd2FyZCIp
CiAgICAgICAgIGRpcmVjdGlvbiA9IFNlbGVjdGlvbkhhc0JhY2t3YXJkRGlyZWN0aW9uOwogCi0g
ICAgcmV0dXJuIHNldFNlbGVjdGlvblJhbmdlKHN0YXJ0LCBlbmQsIGRpcmVjdGlvbik7CisgICAg
cmV0dXJuIHNldFNlbGVjdGlvblJhbmdlKHN0YXJ0LCBlbmQsIGRpcmVjdGlvbiwgaW50ZW50KTsK
IH0KIAotdm9pZCBIVE1MVGV4dEZvcm1Db250cm9sRWxlbWVudDo6c2V0U2VsZWN0aW9uUmFuZ2Uo
aW50IHN0YXJ0LCBpbnQgZW5kLCBUZXh0RmllbGRTZWxlY3Rpb25EaXJlY3Rpb24gZGlyZWN0aW9u
KQordm9pZCBIVE1MVGV4dEZvcm1Db250cm9sRWxlbWVudDo6c2V0U2VsZWN0aW9uUmFuZ2UoaW50
IHN0YXJ0LCBpbnQgZW5kLCBUZXh0RmllbGRTZWxlY3Rpb25EaXJlY3Rpb24gZGlyZWN0aW9uLCBj
b25zdCBBWFRleHRTdGF0ZUNoYW5nZUludGVudCYgaW50ZW50KQogewogICAgIGlmICghaXNUZXh0
Rm9ybUNvbnRyb2woKSkKICAgICAgICAgcmV0dXJuOwpAQCAtMzE3LDcgKzMxNyw3IEBAIHZvaWQg
SFRNTFRleHRGb3JtQ29udHJvbEVsZW1lbnQ6OnNldFNlbGVjdGlvblJhbmdlKGludCBzdGFydCwg
aW50IGVuZCwgVGV4dEZpZWxkCiAgICAgfQogCiAgICAgaWYgKEZyYW1lKiBmcmFtZSA9IGRvY3Vt
ZW50KCkuZnJhbWUoKSkKLSAgICAgICAgZnJhbWUtPnNlbGVjdGlvbigpLm1vdmVXaXRob3V0VmFs
aWRhdGlvblRvKHN0YXJ0UG9zaXRpb24sIGVuZFBvc2l0aW9uLCBkaXJlY3Rpb24gIT0gU2VsZWN0
aW9uSGFzTm9EaXJlY3Rpb24sICFoYXNGb2N1cyk7CisgICAgICAgIGZyYW1lLT5zZWxlY3Rpb24o
KS5tb3ZlV2l0aG91dFZhbGlkYXRpb25UbyhzdGFydFBvc2l0aW9uLCBlbmRQb3NpdGlvbiwgZGly
ZWN0aW9uICE9IFNlbGVjdGlvbkhhc05vRGlyZWN0aW9uLCAhaGFzRm9jdXMsIGludGVudCk7CiB9
CiAKIGludCBIVE1MVGV4dEZvcm1Db250cm9sRWxlbWVudDo6aW5kZXhGb3JWaXNpYmxlUG9zaXRp
b24oY29uc3QgVmlzaWJsZVBvc2l0aW9uJiBwb3NpdGlvbikgY29uc3QKQEAgLTQ2OCw5ICs0Njgs
OSBAQCBQYXNzUmVmUHRyPFJhbmdlPiBIVE1MVGV4dEZvcm1Db250cm9sRWxlbWVudDo6c2VsZWN0
aW9uKCkgY29uc3QKICAgICByZXR1cm4gUmFuZ2U6OmNyZWF0ZShkb2N1bWVudCgpLCBzdGFydE5v
ZGUsIHN0YXJ0LCBlbmROb2RlLCBlbmQpOwogfQogCi12b2lkIEhUTUxUZXh0Rm9ybUNvbnRyb2xF
bGVtZW50OjpyZXN0b3JlQ2FjaGVkU2VsZWN0aW9uKCkKK3ZvaWQgSFRNTFRleHRGb3JtQ29udHJv
bEVsZW1lbnQ6OnJlc3RvcmVDYWNoZWRTZWxlY3Rpb24oY29uc3QgQVhUZXh0U3RhdGVDaGFuZ2VJ
bnRlbnQmIGludGVudCkKIHsKLSAgICBzZXRTZWxlY3Rpb25SYW5nZShtX2NhY2hlZFNlbGVjdGlv
blN0YXJ0LCBtX2NhY2hlZFNlbGVjdGlvbkVuZCwgY2FjaGVkU2VsZWN0aW9uRGlyZWN0aW9uKCkp
OworICAgIHNldFNlbGVjdGlvblJhbmdlKG1fY2FjaGVkU2VsZWN0aW9uU3RhcnQsIG1fY2FjaGVk
U2VsZWN0aW9uRW5kLCBjYWNoZWRTZWxlY3Rpb25EaXJlY3Rpb24oKSwgaW50ZW50KTsKIH0KIAog
dm9pZCBIVE1MVGV4dEZvcm1Db250cm9sRWxlbWVudDo6c2VsZWN0aW9uQ2hhbmdlZChib29sIHNo
b3VsZEZpcmVTZWxlY3RFdmVudCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRN
TFRleHRGb3JtQ29udHJvbEVsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRleHRG
b3JtQ29udHJvbEVsZW1lbnQuaAppbmRleCAyY2VhMWJlLi41NTUxMTYwIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9odG1sL0hUTUxUZXh0Rm9ybUNvbnRyb2xFbGVtZW50LmgKKysrIGIvU291
cmNlL1dlYkNvcmUvaHRtbC9IVE1MVGV4dEZvcm1Db250cm9sRWxlbWVudC5oCkBAIC02NCwxMSAr
NjQsMTEgQEAgcHVibGljOgogICAgIHZvaWQgc2V0U2VsZWN0aW9uU3RhcnQoaW50KTsKICAgICB2
b2lkIHNldFNlbGVjdGlvbkVuZChpbnQpOwogICAgIHZvaWQgc2V0U2VsZWN0aW9uRGlyZWN0aW9u
KGNvbnN0IFN0cmluZyYpOwotICAgIHZvaWQgc2VsZWN0KCk7CisgICAgdm9pZCBzZWxlY3QoY29u
c3QgQVhUZXh0U3RhdGVDaGFuZ2VJbnRlbnQmID0gQVhUZXh0U3RhdGVDaGFuZ2VJbnRlbnQoKSk7
CiAgICAgdmlydHVhbCB2b2lkIHNldFJhbmdlVGV4dChjb25zdCBTdHJpbmcmIHJlcGxhY2VtZW50
LCBFeGNlcHRpb25Db2RlJik7CiAgICAgdmlydHVhbCB2b2lkIHNldFJhbmdlVGV4dChjb25zdCBT
dHJpbmcmIHJlcGxhY2VtZW50LCB1bnNpZ25lZCBzdGFydCwgdW5zaWduZWQgZW5kLCBjb25zdCBT
dHJpbmcmIHNlbGVjdGlvbk1vZGUsIEV4Y2VwdGlvbkNvZGUmKTsKLSAgICB2b2lkIHNldFNlbGVj
dGlvblJhbmdlKGludCBzdGFydCwgaW50IGVuZCwgY29uc3QgU3RyaW5nJiBkaXJlY3Rpb24pOwot
ICAgIHZvaWQgc2V0U2VsZWN0aW9uUmFuZ2UoaW50IHN0YXJ0LCBpbnQgZW5kLCBUZXh0RmllbGRT
ZWxlY3Rpb25EaXJlY3Rpb24gPSBTZWxlY3Rpb25IYXNOb0RpcmVjdGlvbik7CisgICAgdm9pZCBz
ZXRTZWxlY3Rpb25SYW5nZShpbnQgc3RhcnQsIGludCBlbmQsIGNvbnN0IFN0cmluZyYgZGlyZWN0
aW9uLCBjb25zdCBBWFRleHRTdGF0ZUNoYW5nZUludGVudCYgPSBBWFRleHRTdGF0ZUNoYW5nZUlu
dGVudCgpKTsKKyAgICB2b2lkIHNldFNlbGVjdGlvblJhbmdlKGludCBzdGFydCwgaW50IGVuZCwg
VGV4dEZpZWxkU2VsZWN0aW9uRGlyZWN0aW9uID0gU2VsZWN0aW9uSGFzTm9EaXJlY3Rpb24sIGNv
bnN0IEFYVGV4dFN0YXRlQ2hhbmdlSW50ZW50JiA9IEFYVGV4dFN0YXRlQ2hhbmdlSW50ZW50KCkp
OwogICAgIFBhc3NSZWZQdHI8UmFuZ2U+IHNlbGVjdGlvbigpIGNvbnN0OwogICAgIFN0cmluZyBz
ZWxlY3RlZFRleHQoKSBjb25zdDsKIApAQCAtMTEwLDcgKzExMCw3IEBAIHByb3RlY3RlZDoKICAg
ICAgICAgbV9jYWNoZWRTZWxlY3Rpb25EaXJlY3Rpb24gPSBkaXJlY3Rpb247CiAgICAgfQogCi0g
ICAgdm9pZCByZXN0b3JlQ2FjaGVkU2VsZWN0aW9uKCk7CisgICAgdm9pZCByZXN0b3JlQ2FjaGVk
U2VsZWN0aW9uKGNvbnN0IEFYVGV4dFN0YXRlQ2hhbmdlSW50ZW50JiA9IEFYVGV4dFN0YXRlQ2hh
bmdlSW50ZW50KCkpOwogICAgIGJvb2wgaGFzQ2FjaGVkU2VsZWN0aW9uKCkgY29uc3QgeyByZXR1
cm4gbV9jYWNoZWRTZWxlY3Rpb25TdGFydCA+PSAwOyB9CiAKICAgICB2aXJ0dWFsIHZvaWQgc3Vi
dHJlZUhhc0NoYW5nZWQoKSA9IDA7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0V2
ZW50SGFuZGxlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0V2ZW50SGFuZGxlci5jcHAKaW5k
ZXggMjE2YWJjNy4uNjU0YTRmZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9FdmVu
dEhhbmRsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRXZlbnRIYW5kbGVyLmNwcApA
QCAtMzIzOCw3ICszMjM4LDcgQEAgc3RhdGljIHZvaWQgc2V0SW5pdGlhbEtleWJvYXJkU2VsZWN0
aW9uKEZyYW1lJiBmcmFtZSwgU2VsZWN0aW9uRGlyZWN0aW9uIGRpcmVjdGkKICAgICAgICAgYnJl
YWs7CiAgICAgfQogCi0gICAgQVhUZXh0U3RhdGVDaGFuZ2VJbnRlbnQgaW50ZW50KEFYVGV4dFN0
YXRlQ2hhbmdlVHlwZVNlbGVjdGlvbk1vdmUsIEFYVGV4dFNlbGVjdGlvbiB7IEFYVGV4dFNlbGVj
dGlvbkRpcmVjdGlvbkRpc2NvbnRpZ3VvdXMsIEFYVGV4dFNlbGVjdGlvbkdyYW51bGFyaXR5VW5r
bm93biB9KTsKKyAgICBBWFRleHRTdGF0ZUNoYW5nZUludGVudCBpbnRlbnQoQVhUZXh0U3RhdGVD
aGFuZ2VUeXBlU2VsZWN0aW9uTW92ZSwgQVhUZXh0U2VsZWN0aW9uIHsgQVhUZXh0U2VsZWN0aW9u
RGlyZWN0aW9uRGlzY29udGlndW91cywgQVhUZXh0U2VsZWN0aW9uR3JhbnVsYXJpdHlVbmtub3du
LCBmYWxzZSB9KTsKICAgICBzZWxlY3Rpb24uc2V0U2VsZWN0aW9uKHZpc2libGVQb3NpdGlvbiwg
RnJhbWVTZWxlY3Rpb246OmRlZmF1bHRTZXRTZWxlY3Rpb25PcHRpb25zKFVzZXJUcmlnZ2VyZWQp
LCBpbnRlbnQpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZvY3VzQ29u
dHJvbGxlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZvY3VzQ29udHJvbGxlci5jcHAKaW5k
ZXggNTg4YmE0YS4uNTAzMjNkZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9Gb2N1
c0NvbnRyb2xsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRm9jdXNDb250cm9sbGVy
LmNwcApAQCAtMzQxLDcgKzM0MSw3IEBAIGJvb2wgRm9jdXNDb250cm9sbGVyOjphZHZhbmNlRm9j
dXNJbkRvY3VtZW50T3JkZXIoRm9jdXNEaXJlY3Rpb24gZGlyZWN0aW9uLCBLZXliCiAgICAgICAg
IFBvc2l0aW9uIHBvc2l0aW9uID0gZmlyc3RQb3NpdGlvbkluT3JCZWZvcmVOb2RlKGVsZW1lbnQu
Z2V0KCkpOwogICAgICAgICBWaXNpYmxlU2VsZWN0aW9uIG5ld1NlbGVjdGlvbihwb3NpdGlvbiwg
cG9zaXRpb24sIERPV05TVFJFQU0pOwogICAgICAgICBpZiAoZnJhbWUuc2VsZWN0aW9uKCkuc2hv
dWxkQ2hhbmdlU2VsZWN0aW9uKG5ld1NlbGVjdGlvbikpIHsKLSAgICAgICAgICAgIEFYVGV4dFN0
YXRlQ2hhbmdlSW50ZW50IGludGVudChBWFRleHRTdGF0ZUNoYW5nZVR5cGVTZWxlY3Rpb25Nb3Zl
LCBBWFRleHRTZWxlY3Rpb24geyBBWFRleHRTZWxlY3Rpb25EaXJlY3Rpb25EaXNjb250aWd1b3Vz
LCBBWFRleHRTZWxlY3Rpb25HcmFudWxhcml0eVVua25vd24gfSk7CisgICAgICAgICAgICBBWFRl
eHRTdGF0ZUNoYW5nZUludGVudCBpbnRlbnQoQVhUZXh0U3RhdGVDaGFuZ2VUeXBlU2VsZWN0aW9u
TW92ZSwgQVhUZXh0U2VsZWN0aW9uIHsgQVhUZXh0U2VsZWN0aW9uRGlyZWN0aW9uRGlzY29udGln
dW91cywgQVhUZXh0U2VsZWN0aW9uR3JhbnVsYXJpdHlVbmtub3duLCB0cnVlIH0pOwogICAgICAg
ICAgICAgZnJhbWUuc2VsZWN0aW9uKCkuc2V0U2VsZWN0aW9uKG5ld1NlbGVjdGlvbiwgRnJhbWVT
ZWxlY3Rpb246OmRlZmF1bHRTZXRTZWxlY3Rpb25PcHRpb25zKFVzZXJUcmlnZ2VyZWQpLCBpbnRl
bnQpOwogICAgICAgICB9CiAgICAgfQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>255970</attachid>
            <date>2015-07-01 16:33:35 -0700</date>
            <delta_ts>2015-07-02 16:01:40 -0700</delta_ts>
            <desc>patch</desc>
            <filename>focusChange.patch</filename>
            <type>text/plain</type>
            <size>27470</size>
            <attacher name="Doug Russell">d_russell</attacher>
            
              <data encoding="base64">Y29tbWl0IDYxNWE1YjlmYjc5YjA0ZWY3ZjYxNWU5YWFjYmJhZjk5MDc1M2IyNzkKQXV0aG9yOiBE
b3VnIFJ1c3NlbGwgPGRfcnVzc2VsbEBhcHBsZS5jb20+CkRhdGU6ICAgV2VkIEp1bCAxIDE2OjI3
OjI3IDIwMTUgLTA3MDAKCiAgICBBWDogU2VsZWN0aW9uIGNoYW5nZSBhcyBhIHJlc3VsdCBvZiBm
b2N1c2luZyBhbiBlbGVtZW50IHNob3VsZCBpbmNsdWRlIHRoYXQgaW5mb3JtYXRpb24gaW4gdGhl
IGludGVudAoKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3Rz
L0NoYW5nZUxvZwppbmRleCAxYTc3ZDRkLi5mODdiNDJiIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0
cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTggQEAK
KzIwMTUtMDctMDEgIERvdWcgUnVzc2VsbCAgPGRfcnVzc2VsbEBhcHBsZS5jb20+CisKKyAgICAg
ICAgQVg6IFNlbGVjdGlvbiBjaGFuZ2UgYXMgYSByZXN1bHQgb2YgZm9jdXNpbmcgYW4gZWxlbWVu
dCBzaG91bGQgaW5jbHVkZSB0aGF0IAorICAgICAgICBpbmZvcm1hdGlvbiBpbiB0aGUgaW50ZW50
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNDY1MzMK
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGRlZCBm
b2N1c0NoYW5nZSBmbGFnIHRvIEFYVGV4dFN0YXRlQ2hhbmdlSW50ZW50LgorICAgICAgICBBZGRl
ZCBpbnRlbnQgc3VwcG9ydCB0byBzZWxlY3Rpb24gbG9naWMgY2FsbGVkIGJ5IEVsZW1lbnQ6OnVw
ZGF0ZUZvY3VzQXBwZWFyYW5jZSgpLgorICAgICAgICBBZGRlZCBOU0FjY2Vzc2liaWxpdHlUZXh0
U2VsZWN0aW9uQ2hhbmdlZEZvY3VzIHRvIG1hYyBub3RpZmljYXRpb25zLgorCisgICAgICAgICog
cGxhdGZvcm0vbWFjL2FjY2Vzc2liaWxpdHkvc2VsZWN0aW9uLW5vdGlmaWNhdGlvbi1mb2N1cy1j
aGFuZ2UtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9tYWMvYWNjZXNz
aWJpbGl0eS9zZWxlY3Rpb24tbm90aWZpY2F0aW9uLWZvY3VzLWNoYW5nZS5odG1sOiBBZGRlZC4K
KwogMjAxNS0wNi0yNiAgTXlsZXMgQy4gTWF4ZmllbGQgIDxtbWF4ZmllbGRAYXBwbGUuY29tPgog
CiAgICAgICAgIFtDb2NvYV0gU2Fucy1zZXJpZiBnZW5lcmljIGZvbnQgZmFtaWx5IHNob3VsZCBt
YXAgdG8gUGluZ0ZhbmcKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy9hY2Nl
c3NpYmlsaXR5L3NlbGVjdGlvbi1ub3RpZmljYXRpb24tZm9jdXMtY2hhbmdlLWV4cGVjdGVkLnR4
dCBiL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy9hY2Nlc3NpYmlsaXR5L3NlbGVjdGlvbi1ub3Rp
ZmljYXRpb24tZm9jdXMtY2hhbmdlLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwLi41ZjhhMjRjCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvcGxh
dGZvcm0vbWFjL2FjY2Vzc2liaWxpdHkvc2VsZWN0aW9uLW5vdGlmaWNhdGlvbi1mb2N1cy1jaGFu
Z2UtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMTggQEAKKworIDEKKyAyCitUaGlzIHRlc3RzIHRo
YXQgc2VsZWN0aW9uIGNoYW5nZXMgYXMgYSByZXN1bHQgb2YgYWR2YW5jaW5nIGZvY3VzIGluY2x1
ZGUgQVhUZXh0U2VsZWN0aW9uQ2hhbmdlZEZvY3VzIGZsYWcuCisKK09uIHN1Y2Nlc3MsIHlvdSB3
aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENP
TVBMRVRFIi4KKworCitQQVNTIGFkZGVkTm90aWZpY2F0aW9uIGlzIHRydWUKK1BBU1MgYXhUZXh0
Rm9jdXNDaGFuZ2VPbmUgaXMgdHJ1ZQorUEFTUyBheFRleHRGb2N1c0NoYW5nZVR3byBpcyB0cnVl
CitQQVNTIGFjY2Vzc2liaWxpdHlDb250cm9sbGVyLmFjY2Vzc2libGVFbGVtZW50QnlJZCgiMSIp
LmlzRm9jdXNhYmxlIGlzIHRydWUKK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKwor
VEVTVCBDT01QTEVURQorUEFTUyBheFRleHRGb2N1c0NoYW5nZVRocmVlIGlzIHRydWUKK1BBU1Mg
YXhUZXh0Rm9jdXNDaGFuZ2VGb3VyIGlzIHRydWUKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
cGxhdGZvcm0vbWFjL2FjY2Vzc2liaWxpdHkvc2VsZWN0aW9uLW5vdGlmaWNhdGlvbi1mb2N1cy1j
aGFuZ2UuaHRtbCBiL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy9hY2Nlc3NpYmlsaXR5L3NlbGVj
dGlvbi1ub3RpZmljYXRpb24tZm9jdXMtY2hhbmdlLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMC4uOTFlNmM4MQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3Bs
YXRmb3JtL21hYy9hY2Nlc3NpYmlsaXR5L3NlbGVjdGlvbi1ub3RpZmljYXRpb24tZm9jdXMtY2hh
bmdlLmh0bWwKQEAgLTAsMCArMSw4MiBAQAorPCFET0NUWVBFIEhUTUwgUFVCTElDICItLy9JRVRG
Ly9EVEQgSFRNTC8vRU4iPgorPGh0bWw+CisgICAgPGhlYWQ+CisgICAgICAgIDxzY3JpcHQgc3Jj
PSIuLi8uLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorICAgIDwvaGVh
ZD4KKyAgICA8Ym9keSBpZD0iYm9keSI+CisgICAgICAgIDxmaWVsZHNldD4KKyAgICAgICAgICAg
IDxkaXY+CisgICAgICAgICAgICAgICAgPGlucHV0IGlkPSIxIj4KKyAgICAgICAgICAgICAgICAg
ICAgPGxhYmVsIGZvcj0iMSI+MTwvbGFiZWw+CisgICAgICAgICAgICAgICAgICAgIDwvZGl2Pgor
ICAgICAgICAgICAgPGRpdj4KKyAgICAgICAgICAgICAgICA8aW5wdXQgaWQ9IjIiPgorICAgICAg
ICAgICAgICAgICAgICA8bGFiZWwgZm9yPSIyIj4yPC9sYWJlbD4KKyAgICAgICAgICAgICAgICAg
ICAgPC9kaXY+CisgICAgICAgIDwvZmllbGRzZXQ+CisgICAgICAgIDxwIGlkPSJkZXNjcmlwdGlv
biI+PC9wPgorICAgICAgICA8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKyAgICAgICAgPGRpdiBp
ZD0ibm90aWZpY2F0aW9ucyI+PC9kaXY+CisgICAgICAgIDxzY3JpcHQ+CisgICAgICAgICAgICBk
ZXNjcmlwdGlvbigiVGhpcyB0ZXN0cyB0aGF0IHNlbGVjdGlvbiBjaGFuZ2VzIGFzIGEgcmVzdWx0
IG9mIGFkdmFuY2luZyBmb2N1cyBpbmNsdWRlIEFYVGV4dFNlbGVjdGlvbkNoYW5nZWRGb2N1cyBm
bGFnLiIpOworCisgICAgICAgICAgICB2YXIgd2ViQXJlYSA9IDA7CisgICAgICAgICAgICB2YXIg
YXhUZXh0Rm9jdXNDaGFuZ2VPbmUgPSAwOworICAgICAgICAgICAgdmFyIGF4VGV4dEZvY3VzQ2hh
bmdlVHdvID0gMDsKKyAgICAgICAgICAgIHZhciBheFRleHRGb2N1c0NoYW5nZVRocmVlID0gMDsK
KyAgICAgICAgICAgIHZhciBheFRleHRGb2N1c0NoYW5nZUZvdXIgPSAwOworICAgICAgICAgICAg
dmFyIHNlbGVjdENvdW50ID0gMDsKKyAgICAgICAgICAgIHZhciBmb2N1c0NvdW50ID0gMDsKKyAg
ICAgICAgICAgIC8vIE5vdGlmaWNhdGlvbiBvcmRlcmluZzoKKyAgICAgICAgICAgIC8vIFRoZSBm
aXJzdCB0YWIgd2lsbCByZXN1bHQgaW4gMiBzZWxlY3Rpb24gY2hhbmdlIG5vdGlmaWNhdGlvbnMg
YW5kIGEgZm9jdXMgbm90aWZpY2F0aW9uICAgICAgICAgIHNlbGVjdENvdW50PTIsIGZvY3VzQ291
bnQ9MQorICAgICAgICAgICAgLy8gdGFrZUZvY3VzKCkgd2lsbCByZXN1bHQgaW4gYSBmb2N1cyBu
b3RpZmljYXRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgc2VsZWN0Q291bnQ9MiwgZm9jdXNDb3VudD0yCisgICAgICAgICAgICAvLyBUaGUgc2Vjb25k
IHRhYiB3aWxsIHJlc3VsdCBpbiBhbm90aGVyIDIgc2VsZWN0aW9uIGNoYW5nZSBub3RpZmljYXRp
b25zIGFuZCBhIGZvY3VzIG5vdGlmaWNhdGlvbiBzZWxlY3RDb3VudD0xLCBmb2N1c0NvdW50PTMK
KyAgICAgICAgICAgIC8vIChUaGUgMiBzZWxlY3Rpb24gY2hhbmdlIG5vdGlmaWNhdGlvbnMgcGVy
IHRhYiBpcyBjYXVzZWQgYnkgY2FyZXQgYnJvd3NpbmcgYmVpbmcgZW5hYmxlZCkKKyAgICAgICAg
ICAgIGZ1bmN0aW9uIG5vdGlmaWNhdGlvbkNhbGxiYWNrKG5vdGlmaWNhdGlvbiwgdXNlckluZm8p
IHsKKyAgICAgICAgICAgICAgICBpZiAobm90aWZpY2F0aW9uID09ICJBWFNlbGVjdGVkVGV4dENo
YW5nZWQiKSB7CisgICAgICAgICAgICAgICAgICAgIHNlbGVjdENvdW50Kys7CisgICAgICAgICAg
ICAgICAgICAgIGlmIChzZWxlY3RDb3VudCA9PSAxKSB7CisgICAgICAgICAgICAgICAgICAgICAg
ICBheFRleHRGb2N1c0NoYW5nZU9uZSA9IHVzZXJJbmZvWyJBWFRleHRTZWxlY3Rpb25DaGFuZ2Vk
Rm9jdXMiXTsKKyAgICAgICAgICAgICAgICAgICAgICAgIHNob3VsZEJlKCJheFRleHRGb2N1c0No
YW5nZU9uZSIsICJ0cnVlIik7CisgICAgICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoc2VsZWN0
Q291bnQgPT0gMikgeworICAgICAgICAgICAgICAgICAgICAgICAgYXhUZXh0Rm9jdXNDaGFuZ2VU
d28gPSB1c2VySW5mb1siQVhUZXh0U2VsZWN0aW9uQ2hhbmdlZEZvY3VzIl07CisgICAgICAgICAg
ICAgICAgICAgICAgICBzaG91bGRCZSgiYXhUZXh0Rm9jdXNDaGFuZ2VUd28iLCAidHJ1ZSIpOwor
CisgICAgICAgICAgICAgICAgICAgICAgICBzaG91bGRCZSgiYWNjZXNzaWJpbGl0eUNvbnRyb2xs
ZXIuYWNjZXNzaWJsZUVsZW1lbnRCeUlkKFwiMVwiKS5pc0ZvY3VzYWJsZSIsICJ0cnVlIik7Cisg
ICAgICAgICAgICAgICAgICAgICAgICBhY2Nlc3NpYmlsaXR5Q29udHJvbGxlci5hY2Nlc3NpYmxl
RWxlbWVudEJ5SWQoIjEiKS50YWtlRm9jdXMoKTsKKyAgICAgICAgICAgICAgICAgICAgfSBlbHNl
IGlmIChzZWxlY3RDb3VudCA9PSAzKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBheFRleHRG
b2N1c0NoYW5nZVRocmVlID0gdXNlckluZm9bIkFYVGV4dFNlbGVjdGlvbkNoYW5nZWRGb2N1cyJd
OworICAgICAgICAgICAgICAgICAgICAgICAgc2hvdWxkQmUoImF4VGV4dEZvY3VzQ2hhbmdlVGhy
ZWUiLCAidHJ1ZSIpOworICAgICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKHNlbGVjdENvdW50
ID09IDQpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGF4VGV4dEZvY3VzQ2hhbmdlRm91ciA9
IHVzZXJJbmZvWyJBWFRleHRTZWxlY3Rpb25DaGFuZ2VkRm9jdXMiXTsKKyAgICAgICAgICAgICAg
ICAgICAgICAgIHNob3VsZEJlKCJheFRleHRGb2N1c0NoYW5nZUZvdXIiLCAidHJ1ZSIpOworICAg
ICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgfSBlbHNlIGlmIChub3RpZmljYXRp
b24gPT0gIkFYRm9jdXNDaGFuZ2VkIikgeworICAgICAgICAgICAgICAgICAgICBmb2N1c0NvdW50
Kys7CisgICAgICAgICAgICAgICAgICAgIGlmIChmb2N1c0NvdW50ID09IDIpIHsKKyAgICAgICAg
ICAgICAgICAgICAgICAgIGV2ZW50U2VuZGVyLnNjaGVkdWxlQXN5bmNocm9ub3VzS2V5RG93bigi
XHQiKTsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIH0KKyAgICAgICAg
ICAgICAgICBpZiAoc2VsZWN0Q291bnQgPT0gNCAmJiBmb2N1c0NvdW50ID09IDMpIHsKKyAgICAg
ICAgICAgICAgICAgICAgd2ViQXJlYS5yZW1vdmVOb3RpZmljYXRpb25MaXN0ZW5lcigpOworICAg
ICAgICAgICAgICAgICAgICB0ZXN0UnVubmVyLm5vdGlmeURvbmUoKTsKKyAgICAgICAgICAgICAg
ICB9CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGlmICh3aW5kb3cuYWNjZXNzaWJpbGl0
eUNvbnRyb2xsZXIpIHsKKyAgICAgICAgICAgICAgICB0ZXN0UnVubmVyLndhaXRVbnRpbERvbmUo
KTsKKyAgICAgICAgICAgICAgICB0ZXN0UnVubmVyLm92ZXJyaWRlUHJlZmVyZW5jZSgiV2ViS2l0
VGFiVG9MaW5rc1ByZWZlcmVuY2VLZXkiLCAxKTsKKworICAgICAgICAgICAgICAgIGFjY2Vzc2li
aWxpdHlDb250cm9sbGVyLmVuYWJsZUVuaGFuY2VkQWNjZXNzaWJpbGl0eSh0cnVlKTsKKyAgICAg
ICAgICAgICAgICB3ZWJBcmVhID0gYWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIucm9vdEVsZW1lbnQu
Y2hpbGRBdEluZGV4KDApOworICAgICAgICAgICAgICAgIHdlYkFyZWEuc2V0Qm9vbEF0dHJpYnV0
ZVZhbHVlKCJBWENhcmV0QnJvd3NpbmdFbmFibGVkIiwgdHJ1ZSkKKworICAgICAgICAgICAgICAg
IHZhciBhZGRlZE5vdGlmaWNhdGlvbiA9IHdlYkFyZWEuYWRkTm90aWZpY2F0aW9uTGlzdGVuZXIo
bm90aWZpY2F0aW9uQ2FsbGJhY2spOworICAgICAgICAgICAgICAgIHNob3VsZEJlKCJhZGRlZE5v
dGlmaWNhdGlvbiIsICJ0cnVlIik7CisKKyAgICAgICAgICAgICAgICBldmVudFNlbmRlci5rZXlE
b3duKCJcdCIpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgPC9zY3JpcHQ+CisgICAgICAg
IDxzY3JpcHQgc3JjPSIuLi8uLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3Njcmlw
dD4KKyAgICA8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9DaGFu
Z2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOWI5OTRjMi4uOWY2OTI4ZiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ4IEBACisyMDE1LTA3LTAxICBEb3VnIFJ1c3NlbGwgIDxk
X3J1c3NlbGxAYXBwbGUuY29tPgorCisgICAgICAgIEFYOiBTZWxlY3Rpb24gY2hhbmdlIGFzIGEg
cmVzdWx0IG9mIGZvY3VzaW5nIGFuIGVsZW1lbnQgc2hvdWxkIGluY2x1ZGUgdGhhdCAKKyAgICAg
ICAgaW5mb3JtYXRpb24gaW4gdGhlIGludGVudAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTQ2NTMzCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgQWRkZWQgZm9jdXNDaGFuZ2UgZmxhZyB0byBBWFRleHRTdGF0
ZUNoYW5nZUludGVudC4KKyAgICAgICAgQWRkZWQgaW50ZW50IHN1cHBvcnQgdG8gc2VsZWN0aW9u
IGxvZ2ljIGNhbGxlZCBieSBFbGVtZW50Ojp1cGRhdGVGb2N1c0FwcGVhcmFuY2UoKS4KKyAgICAg
ICAgQWRkZWQgTlNBY2Nlc3NpYmlsaXR5VGV4dFNlbGVjdGlvbkNoYW5nZWRGb2N1cyB0byBtYWMg
bm90aWZpY2F0aW9ucy4KKworICAgICAgICBUZXN0OiBwbGF0Zm9ybS9tYWMvYWNjZXNzaWJpbGl0
eS9zZWxlY3Rpb24tbm90aWZpY2F0aW9uLWZvY3VzLWNoYW5nZS5odG1sCisKKyAgICAgICAgKiBh
Y2Nlc3NpYmlsaXR5L0FYT2JqZWN0Q2FjaGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QVhPYmpl
Y3RDYWNoZTo6cG9zdFRleHRTdGF0ZUNoYW5nZU5vdGlmaWNhdGlvbik6CisgICAgICAgICogYWNj
ZXNzaWJpbGl0eS9BWFRleHRTdGF0ZUNoYW5nZUludGVudC5oOgorICAgICAgICAqIGFjY2Vzc2li
aWxpdHkvQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpz
ZXRUZXh0U2VsZWN0aW9uSW50ZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlS
ZW5kZXJPYmplY3Q6OnNldEZvY3VzZWQpOgorICAgICAgICAqIGFjY2Vzc2liaWxpdHkvbWFjL0FY
T2JqZWN0Q2FjaGVNYWMubW06CisgICAgICAgIChXZWJDb3JlOjpBWE9iamVjdENhY2hlOjpwb3N0
VGV4dFN0YXRlQ2hhbmdlUGxhdGZvcm1Ob3RpZmljYXRpb24pOgorICAgICAgICAqIGRvbS9FbGVt
ZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkVsZW1lbnQ6OnVwZGF0ZUZvY3VzQXBwZWFyYW5j
ZSk6CisgICAgICAgICogZG9tL0VsZW1lbnQuaDoKKyAgICAgICAgKFdlYkNvcmU6OkVsZW1lbnQ6
OmRlZmF1bHRGb2N1c1RleHRTdGF0ZUNoYW5nZUludGVudCk6CisgICAgICAgICogZWRpdGluZy9G
cmFtZVNlbGVjdGlvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZVNlbGVjdGlvbjo6bW92
ZVdpdGhvdXRWYWxpZGF0aW9uVG8pOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVTZWxlY3Rpb246
OnNldFNlbGVjdGlvbkJ5TW91c2VJZkRpZmZlcmVudCk6CisgICAgICAgIChXZWJDb3JlOjpGcmFt
ZVNlbGVjdGlvbjo6c2VsZWN0QWxsKToKKyAgICAgICAgKiBlZGl0aW5nL0ZyYW1lU2VsZWN0aW9u
Lmg6CisgICAgICAgICogaHRtbC9IVE1MSW5wdXRFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkhUTUxJbnB1dEVsZW1lbnQ6OnVwZGF0ZUZvY3VzQXBwZWFyYW5jZSk6CisgICAgICAgICog
aHRtbC9IVE1MVGV4dEFyZWFFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxUZXh0
QXJlYUVsZW1lbnQ6OnVwZGF0ZUZvY3VzQXBwZWFyYW5jZSk6CisgICAgICAgICogaHRtbC9IVE1M
VGV4dEZvcm1Db250cm9sRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MVGV4dEZv
cm1Db250cm9sRWxlbWVudDo6c2VsZWN0KToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxUZXh0Rm9y
bUNvbnRyb2xFbGVtZW50OjpzZXRTZWxlY3Rpb25SYW5nZSk6CisgICAgICAgIChXZWJDb3JlOjpI
VE1MVGV4dEZvcm1Db250cm9sRWxlbWVudDo6cmVzdG9yZUNhY2hlZFNlbGVjdGlvbik6CisgICAg
ICAgICogaHRtbC9IVE1MVGV4dEZvcm1Db250cm9sRWxlbWVudC5oOgorICAgICAgICAqIHBhZ2Uv
RXZlbnRIYW5kbGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnNldEluaXRpYWxLZXlib2FyZFNl
bGVjdGlvbik6CisgICAgICAgICogcGFnZS9Gb2N1c0NvbnRyb2xsZXIuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6Rm9jdXNDb250cm9sbGVyOjphZHZhbmNlRm9jdXNJbkRvY3VtZW50T3JkZXIpOgor
CiAyMDE1LTA2LTI2ICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CiAKICAgICAgICAg
UHJldmVudCBuZXcgbG9hZHMgd2hpbGUgaW4gUGFnZUNhY2hlIChvciBiZWluZyBhZGRlZCB0byBQ
YWdlQ2FjaGUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FYT2Jq
ZWN0Q2FjaGUuY3BwIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BWE9iamVjdENhY2hl
LmNwcAppbmRleCBjZGZiYTYzLi43N2IxNDYzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9h
Y2Nlc3NpYmlsaXR5L0FYT2JqZWN0Q2FjaGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vz
c2liaWxpdHkvQVhPYmplY3RDYWNoZS5jcHAKQEAgLTEwNTMsNyArMTA1Myw4IEBAIHZvaWQgQVhP
YmplY3RDYWNoZTo6cG9zdFRleHRTdGF0ZUNoYW5nZU5vdGlmaWNhdGlvbihBY2Nlc3NpYmlsaXR5
T2JqZWN0KiBvYmplY3QsCiAgICAgICAgICAgICBvYmplY3QgPSBvYnNlcnZhYmxlT2JqZWN0Owog
ICAgIH0KIAotICAgIHBvc3RUZXh0U3RhdGVDaGFuZ2VQbGF0Zm9ybU5vdGlmaWNhdGlvbihvYmpl
Y3QsIChpbnRlbnQudHlwZSA9PSBBWFRleHRTdGF0ZUNoYW5nZVR5cGVVbmtub3duIHx8IG1faXNT
eW5jaHJvbml6aW5nU2VsZWN0aW9uKSA/IG1fdGV4dFNlbGVjdGlvbkludGVudCA6IGludGVudCwg
c2VsZWN0aW9uKTsKKyAgICBjb25zdCBBWFRleHRTdGF0ZUNoYW5nZUludGVudCYgbmV3SW50ZW50
ID0gKGludGVudC50eXBlID09IEFYVGV4dFN0YXRlQ2hhbmdlVHlwZVVua25vd24gfHwgKG1faXNT
eW5jaHJvbml6aW5nU2VsZWN0aW9uICYmIG1fdGV4dFNlbGVjdGlvbkludGVudC50eXBlICE9IEFY
VGV4dFN0YXRlQ2hhbmdlVHlwZVVua25vd24pKSA/IG1fdGV4dFNlbGVjdGlvbkludGVudCA6IGlu
dGVudDsKKyAgICBwb3N0VGV4dFN0YXRlQ2hhbmdlUGxhdGZvcm1Ob3RpZmljYXRpb24ob2JqZWN0
LCBuZXdJbnRlbnQsIHNlbGVjdGlvbik7CiAjZWxzZQogICAgIFVOVVNFRF9QQVJBTShvYmplY3Qp
OwogICAgIFVOVVNFRF9QQVJBTShpbnRlbnQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
YWNjZXNzaWJpbGl0eS9BWFRleHRTdGF0ZUNoYW5nZUludGVudC5oIGIvU291cmNlL1dlYkNvcmUv
YWNjZXNzaWJpbGl0eS9BWFRleHRTdGF0ZUNoYW5nZUludGVudC5oCmluZGV4IGVkYWQ0YWIuLmNm
OWJlNDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQVhUZXh0U3Rh
dGVDaGFuZ2VJbnRlbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FYVGV4
dFN0YXRlQ2hhbmdlSW50ZW50LmgKQEAgLTcwLDYgKzcwLDcgQEAgZW51bSBBWFRleHRTZWxlY3Rp
b25HcmFudWxhcml0eSB7CiBzdHJ1Y3QgQVhUZXh0U2VsZWN0aW9uIHsKICAgICBBWFRleHRTZWxl
Y3Rpb25EaXJlY3Rpb24gZGlyZWN0aW9uOwogICAgIEFYVGV4dFNlbGVjdGlvbkdyYW51bGFyaXR5
IGdyYW51bGFyaXR5OworICAgIGJvb2wgZm9jdXNDaGFuZ2U7CiB9OwogCiBzdHJ1Y3QgQVhUZXh0
U3RhdGVDaGFuZ2VJbnRlbnQgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJp
bGl0eS9BY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vz
c2liaWxpdHkvQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdC5jcHAKaW5kZXggYWU0ZmIwOS4uYzE1
MGQ0MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmls
aXR5UmVuZGVyT2JqZWN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0Fj
Y2Vzc2liaWxpdHlSZW5kZXJPYmplY3QuY3BwCkBAIC0xNTAyLDcgKzE1MDIsNyBAQCBzdGF0aWMg
dm9pZCBzZXRUZXh0U2VsZWN0aW9uSW50ZW50KEFYT2JqZWN0Q2FjaGUqIGNhY2hlLCBBWFRleHRT
dGF0ZUNoYW5nZVR5cGUgdAogewogICAgIGlmICghY2FjaGUpCiAgICAgICAgIHJldHVybjsKLSAg
ICBBWFRleHRTdGF0ZUNoYW5nZUludGVudCBpbnRlbnQodHlwZSwgQVhUZXh0U2VsZWN0aW9uIHsg
QVhUZXh0U2VsZWN0aW9uRGlyZWN0aW9uRGlzY29udGlndW91cywgQVhUZXh0U2VsZWN0aW9uR3Jh
bnVsYXJpdHlVbmtub3duIH0pOworICAgIEFYVGV4dFN0YXRlQ2hhbmdlSW50ZW50IGludGVudCh0
eXBlLCBBWFRleHRTZWxlY3Rpb24geyBBWFRleHRTZWxlY3Rpb25EaXJlY3Rpb25EaXNjb250aWd1
b3VzLCBBWFRleHRTZWxlY3Rpb25HcmFudWxhcml0eVVua25vd24sIGZhbHNlIH0pOwogICAgIGNh
Y2hlLT5zZXRUZXh0U2VsZWN0aW9uSW50ZW50KGludGVudCk7CiAgICAgY2FjaGUtPnNldElzU3lu
Y2hyb25pemluZ1NlbGVjdGlvbih0cnVlKTsKIH0KQEAgLTE2ODMsOSArMTY4MywxMSBAQCB2b2lk
IEFjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3Q6OnNldEZvY3VzZWQoYm9vbCBvbikKICAgICBpZiAo
ZG9jdW1lbnQtPmZvY3VzZWRFbGVtZW50KCkgPT0gbm9kZSkKICAgICAgICAgZG9jdW1lbnQtPnNl
dEZvY3VzZWRFbGVtZW50KG51bGxwdHIpOwogCi0gICAgc2V0VGV4dFNlbGVjdGlvbkludGVudChh
eE9iamVjdENhY2hlKCksIEFYVGV4dFN0YXRlQ2hhbmdlVHlwZVNlbGVjdGlvbk1vdmUpOworICAg
IGlmIChBWE9iamVjdENhY2hlKiBjYWNoZSA9IGF4T2JqZWN0Q2FjaGUoKSkKKyAgICAgICAgY2Fj
aGUtPnNldElzU3luY2hyb25pemluZ1NlbGVjdGlvbih0cnVlKTsKICAgICBkb3duY2FzdDxFbGVt
ZW50Pigqbm9kZSkuZm9jdXMoKTsKLSAgICBjbGVhclRleHRTZWxlY3Rpb25JbnRlbnQoYXhPYmpl
Y3RDYWNoZSgpKTsKKyAgICBpZiAoQVhPYmplY3RDYWNoZSogY2FjaGUgPSBheE9iamVjdENhY2hl
KCkpCisgICAgICAgIGNhY2hlLT5zZXRJc1N5bmNocm9uaXppbmdTZWxlY3Rpb24oZmFsc2UpOwog
fQogCiB2b2lkIEFjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3Q6OnNldFNlbGVjdGVkUm93cyhBY2Nl
c3NpYmlsaXR5Q2hpbGRyZW5WZWN0b3ImIHNlbGVjdGVkUm93cykKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvbWFjL0FYT2JqZWN0Q2FjaGVNYWMubW0gYi9Tb3VyY2Uv
V2ViQ29yZS9hY2Nlc3NpYmlsaXR5L21hYy9BWE9iamVjdENhY2hlTWFjLm1tCmluZGV4IDgwMTA4
NzUuLmYxNzJiY2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvbWFj
L0FYT2JqZWN0Q2FjaGVNYWMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9t
YWMvQVhPYmplY3RDYWNoZU1hYy5tbQpAQCAtNjAsNiArNjAsMTAgQEAKICNkZWZpbmUgTlNBY2Nl
c3NpYmlsaXR5VGV4dFNlbGVjdGlvbkdyYW51bGFyaXR5IEAiQVhUZXh0U2VsZWN0aW9uR3JhbnVs
YXJpdHkiCiAjZW5kaWYKIAorI2lmbmRlZiBOU0FjY2Vzc2liaWxpdHlUZXh0U2VsZWN0aW9uQ2hh
bmdlZEZvY3VzCisjZGVmaW5lIE5TQWNjZXNzaWJpbGl0eVRleHRTZWxlY3Rpb25DaGFuZ2VkRm9j
dXMgQCJBWFRleHRTZWxlY3Rpb25DaGFuZ2VkRm9jdXMiCisjZW5kaWYKKwogI2lmbmRlZiBOU0Fj
Y2Vzc2liaWxpdHlUZXh0RWRpdFR5cGUKICNkZWZpbmUgTlNBY2Nlc3NpYmlsaXR5VGV4dEVkaXRU
eXBlIEAiQVhUZXh0RWRpdFR5cGUiCiAjZW5kaWYKQEAgLTI0OSw2ICsyNTMsOCBAQCB2b2lkIEFY
T2JqZWN0Q2FjaGU6OnBvc3RUZXh0U3RhdGVDaGFuZ2VQbGF0Zm9ybU5vdGlmaWNhdGlvbihBY2Nl
c3NpYmlsaXR5T2JqZWN0KgogICAgICAgICBjYXNlIEFYVGV4dFN0YXRlQ2hhbmdlVHlwZUVkaXQ6
CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQorICAgICAgICBpZiAoaW50ZW50LnNlbGVj
dGlvbi5mb2N1c0NoYW5nZSkKKyAgICAgICAgICAgIFt1c2VySW5mbyBzZXRPYmplY3Q6W05TTnVt
YmVyIG51bWJlcldpdGhCb29sOmludGVudC5zZWxlY3Rpb24uZm9jdXNDaGFuZ2VdIGZvcktleTpO
U0FjY2Vzc2liaWxpdHlUZXh0U2VsZWN0aW9uQ2hhbmdlZEZvY3VzXTsKICAgICB9CiAgICAgaWYg
KCFzZWxlY3Rpb24uaXNOb25lKCkpIHsKICAgICAgICAgaWYgKGlkIHRleHRNYXJrZXJSYW5nZSA9
IFtvYmplY3QtPndyYXBwZXIoKSB0ZXh0TWFya2VyUmFuZ2VGcm9tVmlzaWJsZVBvc2l0aW9uczpz
ZWxlY3Rpb24udmlzaWJsZVN0YXJ0KCkgZW5kUG9zaXRpb246c2VsZWN0aW9uLnZpc2libGVFbmQo
KV0pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9kb20vRWxlbWVudC5jcHAKaW5kZXggY2NjNjM5YS4uYmU4ODRlYiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Rv
bS9FbGVtZW50LmNwcApAQCAtMjE5OSw3ICsyMTk5LDcgQEAgdm9pZCBFbGVtZW50Ojp1cGRhdGVG
b2N1c0FwcGVhcmFuY2UoYm9vbCAvKnJlc3RvcmVQcmV2aW91c1NlbGVjdGlvbiovKQogICAgICAg
ICBWaXNpYmxlU2VsZWN0aW9uIG5ld1NlbGVjdGlvbiA9IFZpc2libGVTZWxlY3Rpb24oZmlyc3RQ
b3NpdGlvbkluT3JCZWZvcmVOb2RlKHRoaXMpLCBET1dOU1RSRUFNKTsKICAgICAgICAgCiAgICAg
ICAgIGlmIChmcmFtZS0+c2VsZWN0aW9uKCkuc2hvdWxkQ2hhbmdlU2VsZWN0aW9uKG5ld1NlbGVj
dGlvbikpIHsKLSAgICAgICAgICAgIGZyYW1lLT5zZWxlY3Rpb24oKS5zZXRTZWxlY3Rpb24obmV3
U2VsZWN0aW9uKTsKKyAgICAgICAgICAgIGZyYW1lLT5zZWxlY3Rpb24oKS5zZXRTZWxlY3Rpb24o
bmV3U2VsZWN0aW9uLCBGcmFtZVNlbGVjdGlvbjo6ZGVmYXVsdFNldFNlbGVjdGlvbk9wdGlvbnMo
KSwgRWxlbWVudDo6ZGVmYXVsdEZvY3VzVGV4dFN0YXRlQ2hhbmdlSW50ZW50KCkpOwogICAgICAg
ICAgICAgZnJhbWUtPnNlbGVjdGlvbigpLnJldmVhbFNlbGVjdGlvbigpOwogICAgICAgICB9CiAg
ICAgfSBlbHNlIGlmIChyZW5kZXJlcigpICYmICFyZW5kZXJlcigpLT5pc1dpZGdldCgpKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2Rv
bS9FbGVtZW50LmgKaW5kZXggNDUzMzQwMC4uNjVhNTcyYiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvZG9tL0VsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5oCkBA
IC0yNSw2ICsyNSw3IEBACiAjaWZuZGVmIEVsZW1lbnRfaAogI2RlZmluZSBFbGVtZW50X2gKIAor
I2luY2x1ZGUgIkFYVGV4dFN0YXRlQ2hhbmdlSW50ZW50LmgiCiAjaW5jbHVkZSAiRG9jdW1lbnQu
aCIKICNpbmNsdWRlICJFbGVtZW50RGF0YS5oIgogI2luY2x1ZGUgIkhUTUxOYW1lcy5oIgpAQCAt
MzIxLDYgKzMyMiw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIGNvbnN0IEF0b21pY1N0cmluZyYg
aW1hZ2VTb3VyY2VVUkwoKSBjb25zdDsKICAgICB2aXJ0dWFsIFN0cmluZyB0YXJnZXQoKSBjb25z
dCB7IHJldHVybiBTdHJpbmcoKTsgfQogCisgICAgc3RhdGljIEFYVGV4dFN0YXRlQ2hhbmdlSW50
ZW50IGRlZmF1bHRGb2N1c1RleHRTdGF0ZUNoYW5nZUludGVudCgpIHsgcmV0dXJuIEFYVGV4dFN0
YXRlQ2hhbmdlSW50ZW50KEFYVGV4dFN0YXRlQ2hhbmdlVHlwZVNlbGVjdGlvbk1vdmUsIEFYVGV4
dFNlbGVjdGlvbiB7IEFYVGV4dFNlbGVjdGlvbkRpcmVjdGlvbkRpc2NvbnRpZ3VvdXMsIEFYVGV4
dFNlbGVjdGlvbkdyYW51bGFyaXR5VW5rbm93biwgdHJ1ZSB9KTsgfQogICAgIHZvaWQgdXBkYXRl
Rm9jdXNBcHBlYXJhbmNlQWZ0ZXJBdHRhY2hJZk5lZWRlZCgpOwogICAgIHZpcnR1YWwgdm9pZCBm
b2N1cyhib29sIHJlc3RvcmVQcmV2aW91c1NlbGVjdGlvbiA9IHRydWUsIEZvY3VzRGlyZWN0aW9u
ID0gRm9jdXNEaXJlY3Rpb25Ob25lKTsKICAgICB2aXJ0dWFsIHZvaWQgdXBkYXRlRm9jdXNBcHBl
YXJhbmNlKGJvb2wgcmVzdG9yZVByZXZpb3VzU2VsZWN0aW9uKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2VkaXRpbmcvRnJhbWVTZWxlY3Rpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvZWRp
dGluZy9GcmFtZVNlbGVjdGlvbi5jcHAKaW5kZXggOWVlMDBmMi4uMzgyMjY3MiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9GcmFtZVNlbGVjdGlvbi5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvZWRpdGluZy9GcmFtZVNlbGVjdGlvbi5jcHAKQEAgLTE2NiwxMyArMTY2LDE3IEBA
IHZvaWQgRnJhbWVTZWxlY3Rpb246Om1vdmVUbyhjb25zdCBQb3NpdGlvbiAmYmFzZSwgY29uc3Qg
UG9zaXRpb24gJmV4dGVudCwgRUFmZmluCiAgICAgc2V0U2VsZWN0aW9uKFZpc2libGVTZWxlY3Rp
b24oYmFzZSwgZXh0ZW50LCBhZmZpbml0eSwgc2VsZWN0aW9uSGFzRGlyZWN0aW9uKSwgZGVmYXVs
dFNldFNlbGVjdGlvbk9wdGlvbnModXNlclRyaWdnZXJlZCkpOwogfQogCi12b2lkIEZyYW1lU2Vs
ZWN0aW9uOjptb3ZlV2l0aG91dFZhbGlkYXRpb25Ubyhjb25zdCBQb3NpdGlvbiYgYmFzZSwgY29u
c3QgUG9zaXRpb24mIGV4dGVudCwgYm9vbCBzZWxlY3Rpb25IYXNEaXJlY3Rpb24sIGJvb2wgc2hv
dWxkU2V0Rm9jdXMpCit2b2lkIEZyYW1lU2VsZWN0aW9uOjptb3ZlV2l0aG91dFZhbGlkYXRpb25U
byhjb25zdCBQb3NpdGlvbiYgYmFzZSwgY29uc3QgUG9zaXRpb24mIGV4dGVudCwgYm9vbCBzZWxl
Y3Rpb25IYXNEaXJlY3Rpb24sIGJvb2wgc2hvdWxkU2V0Rm9jdXMsIGNvbnN0IEFYVGV4dFN0YXRl
Q2hhbmdlSW50ZW50JiBpbnRlbnQpCiB7CiAgICAgVmlzaWJsZVNlbGVjdGlvbiBuZXdTZWxlY3Rp
b247CiAgICAgbmV3U2VsZWN0aW9uLnNldFdpdGhvdXRWYWxpZGF0aW9uKGJhc2UsIGV4dGVudCk7
CiAgICAgbmV3U2VsZWN0aW9uLnNldElzRGlyZWN0aW9uYWwoc2VsZWN0aW9uSGFzRGlyZWN0aW9u
KTsKLSAgICBBWFRleHRTdGF0ZUNoYW5nZUludGVudCBpbnRlbnQoQVhUZXh0U3RhdGVDaGFuZ2VU
eXBlU2VsZWN0aW9uTW92ZSwgQVhUZXh0U2VsZWN0aW9uIHsgQVhUZXh0U2VsZWN0aW9uRGlyZWN0
aW9uRGlzY29udGlndW91cywgQVhUZXh0U2VsZWN0aW9uR3JhbnVsYXJpdHlVbmtub3duIH0pOwot
ICAgIHNldFNlbGVjdGlvbihuZXdTZWxlY3Rpb24sIGRlZmF1bHRTZXRTZWxlY3Rpb25PcHRpb25z
KCkgfCAoc2hvdWxkU2V0Rm9jdXMgPyAwIDogRG9Ob3RTZXRGb2N1cyksIGludGVudCk7CisgICAg
QVhUZXh0U3RhdGVDaGFuZ2VJbnRlbnQgbmV3SW50ZW50OworICAgIGlmIChpbnRlbnQudHlwZSA9
PSBBWFRleHRTdGF0ZUNoYW5nZVR5cGVVbmtub3duKQorICAgICAgICBuZXdJbnRlbnQgPSBBWFRl
eHRTdGF0ZUNoYW5nZUludGVudChBWFRleHRTdGF0ZUNoYW5nZVR5cGVTZWxlY3Rpb25Nb3ZlLCBB
WFRleHRTZWxlY3Rpb24geyBBWFRleHRTZWxlY3Rpb25EaXJlY3Rpb25EaXNjb250aWd1b3VzLCBB
WFRleHRTZWxlY3Rpb25HcmFudWxhcml0eVVua25vd24sIGZhbHNlIH0pOworICAgIGVsc2UKKyAg
ICAgICAgbmV3SW50ZW50ID0gaW50ZW50OworICAgIHNldFNlbGVjdGlvbihuZXdTZWxlY3Rpb24s
IGRlZmF1bHRTZXRTZWxlY3Rpb25PcHRpb25zKCkgfCAoc2hvdWxkU2V0Rm9jdXMgPyAwIDogRG9O
b3RTZXRGb2N1cyksIG5ld0ludGVudCk7CiB9CiAKIHZvaWQgRHJhZ0NhcmV0Q29udHJvbGxlcjo6
c2V0Q2FyZXRQb3NpdGlvbihjb25zdCBWaXNpYmxlUG9zaXRpb24mIHBvc2l0aW9uKQpAQCAtMjU5
LDcgKzI2Myw3IEBAIHZvaWQgRnJhbWVTZWxlY3Rpb246OnNldFNlbGVjdGlvbkJ5TW91c2VJZkRp
ZmZlcmVudChjb25zdCBWaXNpYmxlU2VsZWN0aW9uJiBwYXNzCiAgICAgCiAgICAgQVhUZXh0U3Rh
dGVDaGFuZ2VJbnRlbnQgaW50ZW50OwogICAgIGlmIChBWE9iamVjdENhY2hlOjphY2Nlc3NpYmls
aXR5RW5hYmxlZCgpICYmIG5ld1NlbGVjdGlvbi5pc0NhcmV0KCkpCi0gICAgICAgIGludGVudCA9
IEFYVGV4dFN0YXRlQ2hhbmdlSW50ZW50KEFYVGV4dFN0YXRlQ2hhbmdlVHlwZVNlbGVjdGlvbk1v
dmUsIEFYVGV4dFNlbGVjdGlvbiB7IEFYVGV4dFNlbGVjdGlvbkRpcmVjdGlvbkRpc2NvbnRpZ3Vv
dXMsIEFYVGV4dFNlbGVjdGlvbkdyYW51bGFyaXR5VW5rbm93biB9KTsKKyAgICAgICAgaW50ZW50
ID0gQVhUZXh0U3RhdGVDaGFuZ2VJbnRlbnQoQVhUZXh0U3RhdGVDaGFuZ2VUeXBlU2VsZWN0aW9u
TW92ZSwgQVhUZXh0U2VsZWN0aW9uIHsgQVhUZXh0U2VsZWN0aW9uRGlyZWN0aW9uRGlzY29udGln
dW91cywgQVhUZXh0U2VsZWN0aW9uR3JhbnVsYXJpdHlVbmtub3duLCBmYWxzZSB9KTsKICAgICBl
bHNlCiAgICAgICAgIGludGVudCA9IEFYVGV4dFN0YXRlQ2hhbmdlSW50ZW50KCk7CiAgICAgc2V0
U2VsZWN0aW9uKG5ld1NlbGVjdGlvbiwgZGVmYXVsdFNldFNlbGVjdGlvbk9wdGlvbnMoKSB8IEZp
cmVTZWxlY3RFdmVudCwgaW50ZW50LCBBbGlnbkN1cnNvck9uU2Nyb2xsSWZOZWVkZWQsIGdyYW51
bGFyaXR5KTsKQEAgLTE3OTIsNyArMTc5Niw3IEBAIHZvaWQgRnJhbWVTZWxlY3Rpb246OnNlbGVj
dEFsbCgpCiAgICAgVmlzaWJsZVNlbGVjdGlvbiBuZXdTZWxlY3Rpb24oVmlzaWJsZVNlbGVjdGlv
bjo6c2VsZWN0aW9uRnJvbUNvbnRlbnRzT2ZOb2RlKHJvb3QuZ2V0KCkpKTsKIAogICAgIGlmIChz
aG91bGRDaGFuZ2VTZWxlY3Rpb24obmV3U2VsZWN0aW9uKSkgewotICAgICAgICBBWFRleHRTdGF0
ZUNoYW5nZUludGVudCBpbnRlbnQoQVhUZXh0U3RhdGVDaGFuZ2VUeXBlU2VsZWN0aW9uRXh0ZW5k
LCBBWFRleHRTZWxlY3Rpb24geyBBWFRleHRTZWxlY3Rpb25EaXJlY3Rpb25EaXNjb250aWd1b3Vz
LCBBWFRleHRTZWxlY3Rpb25HcmFudWxhcml0eUFsbCB9KTsKKyAgICAgICAgQVhUZXh0U3RhdGVD
aGFuZ2VJbnRlbnQgaW50ZW50KEFYVGV4dFN0YXRlQ2hhbmdlVHlwZVNlbGVjdGlvbkV4dGVuZCwg
QVhUZXh0U2VsZWN0aW9uIHsgQVhUZXh0U2VsZWN0aW9uRGlyZWN0aW9uRGlzY29udGlndW91cywg
QVhUZXh0U2VsZWN0aW9uR3JhbnVsYXJpdHlBbGwsIGZhbHNlIH0pOwogICAgICAgICBzZXRTZWxl
Y3Rpb24obmV3U2VsZWN0aW9uLCBkZWZhdWx0U2V0U2VsZWN0aW9uT3B0aW9ucygpIHwgRmlyZVNl
bGVjdEV2ZW50LCBpbnRlbnQpOwogICAgIH0KIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2VkaXRpbmcvRnJhbWVTZWxlY3Rpb24uaCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRnJhbWVT
ZWxlY3Rpb24uaAppbmRleCA3NzgzYjZhLi5lZDg3OTZlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9lZGl0aW5nL0ZyYW1lU2VsZWN0aW9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGlu
Zy9GcmFtZVNlbGVjdGlvbi5oCkBAIC0xNDIsNyArMTQyLDcgQEAgcHVibGljOgogICAgIFdFQkNP
UkVfRVhQT1JUIHZvaWQgbW92ZVRvKGNvbnN0IFZpc2libGVQb3NpdGlvbiYsIGNvbnN0IFZpc2li
bGVQb3NpdGlvbiYsIEVVc2VyVHJpZ2dlcmVkID0gTm90VXNlclRyaWdnZXJlZCk7CiAgICAgdm9p
ZCBtb3ZlVG8oY29uc3QgUG9zaXRpb24mLCBFQWZmaW5pdHksIEVVc2VyVHJpZ2dlcmVkID0gTm90
VXNlclRyaWdnZXJlZCk7CiAgICAgdm9pZCBtb3ZlVG8oY29uc3QgUG9zaXRpb24mLCBjb25zdCBQ
b3NpdGlvbiYsIEVBZmZpbml0eSwgRVVzZXJUcmlnZ2VyZWQgPSBOb3RVc2VyVHJpZ2dlcmVkKTsK
LSAgICB2b2lkIG1vdmVXaXRob3V0VmFsaWRhdGlvblRvKGNvbnN0IFBvc2l0aW9uJiwgY29uc3Qg
UG9zaXRpb24mLCBib29sIHNlbGVjdGlvbkhhc0RpcmVjdGlvbiwgYm9vbCBzaG91bGRTZXRGb2N1
cyk7CisgICAgdm9pZCBtb3ZlV2l0aG91dFZhbGlkYXRpb25Ubyhjb25zdCBQb3NpdGlvbiYsIGNv
bnN0IFBvc2l0aW9uJiwgYm9vbCBzZWxlY3Rpb25IYXNEaXJlY3Rpb24sIGJvb2wgc2hvdWxkU2V0
Rm9jdXMsIGNvbnN0IEFYVGV4dFN0YXRlQ2hhbmdlSW50ZW50JiA9IEFYVGV4dFN0YXRlQ2hhbmdl
SW50ZW50KCkpOwogCiAgICAgY29uc3QgVmlzaWJsZVNlbGVjdGlvbiYgc2VsZWN0aW9uKCkgY29u
c3QgeyByZXR1cm4gbV9zZWxlY3Rpb247IH0KICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldFNl
bGVjdGlvbihjb25zdCBWaXNpYmxlU2VsZWN0aW9uJiwgU2V0U2VsZWN0aW9uT3B0aW9ucyA9IGRl
ZmF1bHRTZXRTZWxlY3Rpb25PcHRpb25zKCksIEFYVGV4dFN0YXRlQ2hhbmdlSW50ZW50ID0gQVhU
ZXh0U3RhdGVDaGFuZ2VJbnRlbnQoKSwgQ3Vyc29yQWxpZ25PblNjcm9sbCA9IEFsaWduQ3Vyc29y
T25TY3JvbGxJZk5lZWRlZCwgVGV4dEdyYW51bGFyaXR5ID0gQ2hhcmFjdGVyR3JhbnVsYXJpdHkp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSW5wdXRFbGVtZW50LmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTElucHV0RWxlbWVudC5jcHAKaW5kZXggN2UwMzdhOS4u
OWE0ZGRlYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSW5wdXRFbGVtZW50
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxJbnB1dEVsZW1lbnQuY3BwCkBAIC00
MDcsNyArNDA3LDcgQEAgdm9pZCBIVE1MSW5wdXRFbGVtZW50Ojp1cGRhdGVGb2N1c0FwcGVhcmFu
Y2UoYm9vbCByZXN0b3JlUHJldmlvdXNTZWxlY3Rpb24pCiB7CiAgICAgaWYgKGlzVGV4dEZpZWxk
KCkpIHsKICAgICAgICAgaWYgKCFyZXN0b3JlUHJldmlvdXNTZWxlY3Rpb24gfHwgIWhhc0NhY2hl
ZFNlbGVjdGlvbigpKQotICAgICAgICAgICAgc2VsZWN0KCk7CisgICAgICAgICAgICBzZWxlY3Qo
RWxlbWVudDo6ZGVmYXVsdEZvY3VzVGV4dFN0YXRlQ2hhbmdlSW50ZW50KCkpOwogICAgICAgICBl
bHNlCiAgICAgICAgICAgICByZXN0b3JlQ2FjaGVkU2VsZWN0aW9uKCk7CiAgICAgICAgIGlmIChk
b2N1bWVudCgpLmZyYW1lKCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxU
ZXh0QXJlYUVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVGV4dEFyZWFFbGVt
ZW50LmNwcAppbmRleCA0YTk2NGY4Li45MzkyOTExIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9odG1sL0hUTUxUZXh0QXJlYUVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwv
SFRNTFRleHRBcmVhRWxlbWVudC5jcHAKQEAgLTI1Nyw5ICsyNTcsOSBAQCB2b2lkIEhUTUxUZXh0
QXJlYUVsZW1lbnQ6OnVwZGF0ZUZvY3VzQXBwZWFyYW5jZShib29sIHJlc3RvcmVQcmV2aW91c1Nl
bGVjdGlvbikKICAgICAgICAgLy8gSWYgdGhpcyBpcyB0aGUgZmlyc3QgZm9jdXMsIHNldCBhIGNh
cmV0IGF0IHRoZSBiZWdpbm5pbmcgb2YgdGhlIHRleHQuICAKICAgICAgICAgLy8gVGhpcyBtYXRj
aGVzIHNvbWUgYnJvd3NlcnMnIGJlaGF2aW9yOyBzZWUgYnVnIDExNzQ2IENvbW1lbnQgIzE1Lgog
ICAgICAgICAvLyBodHRwOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMTc0NiNj
MTUKLSAgICAgICAgc2V0U2VsZWN0aW9uUmFuZ2UoMCwgMCk7CisgICAgICAgIHNldFNlbGVjdGlv
blJhbmdlKDAsIDAsIFNlbGVjdGlvbkhhc05vRGlyZWN0aW9uLCBFbGVtZW50OjpkZWZhdWx0Rm9j
dXNUZXh0U3RhdGVDaGFuZ2VJbnRlbnQoKSk7CiAgICAgfSBlbHNlCi0gICAgICAgIHJlc3RvcmVD
YWNoZWRTZWxlY3Rpb24oKTsKKyAgICAgICAgcmVzdG9yZUNhY2hlZFNlbGVjdGlvbihFbGVtZW50
OjpkZWZhdWx0Rm9jdXNUZXh0U3RhdGVDaGFuZ2VJbnRlbnQoKSk7CiAKICAgICBpZiAoZG9jdW1l
bnQoKS5mcmFtZSgpKQogICAgICAgICBkb2N1bWVudCgpLmZyYW1lKCktPnNlbGVjdGlvbigpLnJl
dmVhbFNlbGVjdGlvbigpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVGV4
dEZvcm1Db250cm9sRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxUZXh0Rm9y
bUNvbnRyb2xFbGVtZW50LmNwcAppbmRleCAzNjg0ZTI4Li43N2M3MzEzIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9odG1sL0hUTUxUZXh0Rm9ybUNvbnRyb2xFbGVtZW50LmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9odG1sL0hUTUxUZXh0Rm9ybUNvbnRyb2xFbGVtZW50LmNwcApAQCAtMTg1
LDE1ICsxODUsMTUgQEAgdm9pZCBIVE1MVGV4dEZvcm1Db250cm9sRWxlbWVudDo6c2V0U2VsZWN0
aW9uRGlyZWN0aW9uKGNvbnN0IFN0cmluZyYgZGlyZWN0aW9uKQogICAgIHNldFNlbGVjdGlvblJh
bmdlKHNlbGVjdGlvblN0YXJ0KCksIHNlbGVjdGlvbkVuZCgpLCBkaXJlY3Rpb24pOwogfQogCi12
b2lkIEhUTUxUZXh0Rm9ybUNvbnRyb2xFbGVtZW50OjpzZWxlY3QoKQordm9pZCBIVE1MVGV4dEZv
cm1Db250cm9sRWxlbWVudDo6c2VsZWN0KGNvbnN0IEFYVGV4dFN0YXRlQ2hhbmdlSW50ZW50JiBp
bnRlbnQpCiB7CiAgICAgLy8gRklYTUU6IFdlIHNob3VsZCBhYnN0cmFjdCB0aGUgc2VsZWN0aW9u
IGJlaGF2aW9yIGludG8gYW4gRWRpdGluZ0JlaGF2aW9yIGZ1bmN0aW9uIGluc3RlYWQKICAgICAv
LyBvZiBoYXJkY29kaW5nIHRoZSBiZWhhdmlvciB1c2luZyBhIG1hY3JvIGRlZmluZS4KICNpZiBQ
TEFURk9STShJT1MpCiAgICAgLy8gV2UgZG9uJ3Qgd2FudCB0byBzZWxlY3QgYWxsIHRoZSB0ZXh0
IG9uIGlPUy4gSW5zdGVhZCB1c2UgdGhlIHN0YW5kYXJkIHRleHRmaWVsZCBiZWhhdmlvciBvZiBn
b2luZyB0byB0aGUgZW5kIG9mIHRoZSBsaW5lLgotICAgIHNldFNlbGVjdGlvblJhbmdlKHN0ZDo6
bnVtZXJpY19saW1pdHM8aW50Pjo6bWF4KCksIHN0ZDo6bnVtZXJpY19saW1pdHM8aW50Pjo6bWF4
KCksIFNlbGVjdGlvbkhhc0ZvcndhcmREaXJlY3Rpb24pOworICAgIHNldFNlbGVjdGlvblJhbmdl
KHN0ZDo6bnVtZXJpY19saW1pdHM8aW50Pjo6bWF4KCksIHN0ZDo6bnVtZXJpY19saW1pdHM8aW50
Pjo6bWF4KCksIFNlbGVjdGlvbkhhc0ZvcndhcmREaXJlY3Rpb24sIGludGVudCk7CiAjZWxzZQot
ICAgIHNldFNlbGVjdGlvblJhbmdlKDAsIHN0ZDo6bnVtZXJpY19saW1pdHM8aW50Pjo6bWF4KCks
IFNlbGVjdGlvbkhhc05vRGlyZWN0aW9uKTsKKyAgICBzZXRTZWxlY3Rpb25SYW5nZSgwLCBzdGQ6
Om51bWVyaWNfbGltaXRzPGludD46Om1heCgpLCBTZWxlY3Rpb25IYXNOb0RpcmVjdGlvbiwgaW50
ZW50KTsKICNlbmRpZgogfQogCkBAIC0yNzIsNyArMjcyLDcgQEAgdm9pZCBIVE1MVGV4dEZvcm1D
b250cm9sRWxlbWVudDo6c2V0UmFuZ2VUZXh0KGNvbnN0IFN0cmluZyYgcmVwbGFjZW1lbnQsIHVu
c2lnbmUKICAgICBzZXRTZWxlY3Rpb25SYW5nZShuZXdTZWxlY3Rpb25TdGFydCwgbmV3U2VsZWN0
aW9uRW5kLCBTZWxlY3Rpb25IYXNOb0RpcmVjdGlvbik7CiB9CiAKLXZvaWQgSFRNTFRleHRGb3Jt
Q29udHJvbEVsZW1lbnQ6OnNldFNlbGVjdGlvblJhbmdlKGludCBzdGFydCwgaW50IGVuZCwgY29u
c3QgU3RyaW5nJiBkaXJlY3Rpb25TdHJpbmcpCit2b2lkIEhUTUxUZXh0Rm9ybUNvbnRyb2xFbGVt
ZW50OjpzZXRTZWxlY3Rpb25SYW5nZShpbnQgc3RhcnQsIGludCBlbmQsIGNvbnN0IFN0cmluZyYg
ZGlyZWN0aW9uU3RyaW5nLCBjb25zdCBBWFRleHRTdGF0ZUNoYW5nZUludGVudCYgaW50ZW50KQog
ewogICAgIFRleHRGaWVsZFNlbGVjdGlvbkRpcmVjdGlvbiBkaXJlY3Rpb24gPSBTZWxlY3Rpb25I
YXNOb0RpcmVjdGlvbjsKICAgICBpZiAoZGlyZWN0aW9uU3RyaW5nID09ICJmb3J3YXJkIikKQEAg
LTI4MCwxMCArMjgwLDEwIEBAIHZvaWQgSFRNTFRleHRGb3JtQ29udHJvbEVsZW1lbnQ6OnNldFNl
bGVjdGlvblJhbmdlKGludCBzdGFydCwgaW50IGVuZCwgY29uc3QgU3RyCiAgICAgZWxzZSBpZiAo
ZGlyZWN0aW9uU3RyaW5nID09ICJiYWNrd2FyZCIpCiAgICAgICAgIGRpcmVjdGlvbiA9IFNlbGVj
dGlvbkhhc0JhY2t3YXJkRGlyZWN0aW9uOwogCi0gICAgcmV0dXJuIHNldFNlbGVjdGlvblJhbmdl
KHN0YXJ0LCBlbmQsIGRpcmVjdGlvbik7CisgICAgcmV0dXJuIHNldFNlbGVjdGlvblJhbmdlKHN0
YXJ0LCBlbmQsIGRpcmVjdGlvbiwgaW50ZW50KTsKIH0KIAotdm9pZCBIVE1MVGV4dEZvcm1Db250
cm9sRWxlbWVudDo6c2V0U2VsZWN0aW9uUmFuZ2UoaW50IHN0YXJ0LCBpbnQgZW5kLCBUZXh0Rmll
bGRTZWxlY3Rpb25EaXJlY3Rpb24gZGlyZWN0aW9uKQordm9pZCBIVE1MVGV4dEZvcm1Db250cm9s
RWxlbWVudDo6c2V0U2VsZWN0aW9uUmFuZ2UoaW50IHN0YXJ0LCBpbnQgZW5kLCBUZXh0RmllbGRT
ZWxlY3Rpb25EaXJlY3Rpb24gZGlyZWN0aW9uLCBjb25zdCBBWFRleHRTdGF0ZUNoYW5nZUludGVu
dCYgaW50ZW50KQogewogICAgIGlmICghaXNUZXh0Rm9ybUNvbnRyb2woKSkKICAgICAgICAgcmV0
dXJuOwpAQCAtMzE3LDcgKzMxNyw3IEBAIHZvaWQgSFRNTFRleHRGb3JtQ29udHJvbEVsZW1lbnQ6
OnNldFNlbGVjdGlvblJhbmdlKGludCBzdGFydCwgaW50IGVuZCwgVGV4dEZpZWxkCiAgICAgfQog
CiAgICAgaWYgKEZyYW1lKiBmcmFtZSA9IGRvY3VtZW50KCkuZnJhbWUoKSkKLSAgICAgICAgZnJh
bWUtPnNlbGVjdGlvbigpLm1vdmVXaXRob3V0VmFsaWRhdGlvblRvKHN0YXJ0UG9zaXRpb24sIGVu
ZFBvc2l0aW9uLCBkaXJlY3Rpb24gIT0gU2VsZWN0aW9uSGFzTm9EaXJlY3Rpb24sICFoYXNGb2N1
cyk7CisgICAgICAgIGZyYW1lLT5zZWxlY3Rpb24oKS5tb3ZlV2l0aG91dFZhbGlkYXRpb25Ubyhz
dGFydFBvc2l0aW9uLCBlbmRQb3NpdGlvbiwgZGlyZWN0aW9uICE9IFNlbGVjdGlvbkhhc05vRGly
ZWN0aW9uLCAhaGFzRm9jdXMsIGludGVudCk7CiB9CiAKIGludCBIVE1MVGV4dEZvcm1Db250cm9s
RWxlbWVudDo6aW5kZXhGb3JWaXNpYmxlUG9zaXRpb24oY29uc3QgVmlzaWJsZVBvc2l0aW9uJiBw
b3NpdGlvbikgY29uc3QKQEAgLTQ2OCw5ICs0NjgsOSBAQCBQYXNzUmVmUHRyPFJhbmdlPiBIVE1M
VGV4dEZvcm1Db250cm9sRWxlbWVudDo6c2VsZWN0aW9uKCkgY29uc3QKICAgICByZXR1cm4gUmFu
Z2U6OmNyZWF0ZShkb2N1bWVudCgpLCBzdGFydE5vZGUsIHN0YXJ0LCBlbmROb2RlLCBlbmQpOwog
fQogCi12b2lkIEhUTUxUZXh0Rm9ybUNvbnRyb2xFbGVtZW50OjpyZXN0b3JlQ2FjaGVkU2VsZWN0
aW9uKCkKK3ZvaWQgSFRNTFRleHRGb3JtQ29udHJvbEVsZW1lbnQ6OnJlc3RvcmVDYWNoZWRTZWxl
Y3Rpb24oY29uc3QgQVhUZXh0U3RhdGVDaGFuZ2VJbnRlbnQmIGludGVudCkKIHsKLSAgICBzZXRT
ZWxlY3Rpb25SYW5nZShtX2NhY2hlZFNlbGVjdGlvblN0YXJ0LCBtX2NhY2hlZFNlbGVjdGlvbkVu
ZCwgY2FjaGVkU2VsZWN0aW9uRGlyZWN0aW9uKCkpOworICAgIHNldFNlbGVjdGlvblJhbmdlKG1f
Y2FjaGVkU2VsZWN0aW9uU3RhcnQsIG1fY2FjaGVkU2VsZWN0aW9uRW5kLCBjYWNoZWRTZWxlY3Rp
b25EaXJlY3Rpb24oKSwgaW50ZW50KTsKIH0KIAogdm9pZCBIVE1MVGV4dEZvcm1Db250cm9sRWxl
bWVudDo6c2VsZWN0aW9uQ2hhbmdlZChib29sIHNob3VsZEZpcmVTZWxlY3RFdmVudCkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRleHRGb3JtQ29udHJvbEVsZW1lbnQuaCBi
L1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRleHRGb3JtQ29udHJvbEVsZW1lbnQuaAppbmRleCAy
Y2VhMWJlLi41NTUxMTYwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxUZXh0
Rm9ybUNvbnRyb2xFbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVGV4dEZv
cm1Db250cm9sRWxlbWVudC5oCkBAIC02NCwxMSArNjQsMTEgQEAgcHVibGljOgogICAgIHZvaWQg
c2V0U2VsZWN0aW9uU3RhcnQoaW50KTsKICAgICB2b2lkIHNldFNlbGVjdGlvbkVuZChpbnQpOwog
ICAgIHZvaWQgc2V0U2VsZWN0aW9uRGlyZWN0aW9uKGNvbnN0IFN0cmluZyYpOwotICAgIHZvaWQg
c2VsZWN0KCk7CisgICAgdm9pZCBzZWxlY3QoY29uc3QgQVhUZXh0U3RhdGVDaGFuZ2VJbnRlbnQm
ID0gQVhUZXh0U3RhdGVDaGFuZ2VJbnRlbnQoKSk7CiAgICAgdmlydHVhbCB2b2lkIHNldFJhbmdl
VGV4dChjb25zdCBTdHJpbmcmIHJlcGxhY2VtZW50LCBFeGNlcHRpb25Db2RlJik7CiAgICAgdmly
dHVhbCB2b2lkIHNldFJhbmdlVGV4dChjb25zdCBTdHJpbmcmIHJlcGxhY2VtZW50LCB1bnNpZ25l
ZCBzdGFydCwgdW5zaWduZWQgZW5kLCBjb25zdCBTdHJpbmcmIHNlbGVjdGlvbk1vZGUsIEV4Y2Vw
dGlvbkNvZGUmKTsKLSAgICB2b2lkIHNldFNlbGVjdGlvblJhbmdlKGludCBzdGFydCwgaW50IGVu
ZCwgY29uc3QgU3RyaW5nJiBkaXJlY3Rpb24pOwotICAgIHZvaWQgc2V0U2VsZWN0aW9uUmFuZ2Uo
aW50IHN0YXJ0LCBpbnQgZW5kLCBUZXh0RmllbGRTZWxlY3Rpb25EaXJlY3Rpb24gPSBTZWxlY3Rp
b25IYXNOb0RpcmVjdGlvbik7CisgICAgdm9pZCBzZXRTZWxlY3Rpb25SYW5nZShpbnQgc3RhcnQs
IGludCBlbmQsIGNvbnN0IFN0cmluZyYgZGlyZWN0aW9uLCBjb25zdCBBWFRleHRTdGF0ZUNoYW5n
ZUludGVudCYgPSBBWFRleHRTdGF0ZUNoYW5nZUludGVudCgpKTsKKyAgICB2b2lkIHNldFNlbGVj
dGlvblJhbmdlKGludCBzdGFydCwgaW50IGVuZCwgVGV4dEZpZWxkU2VsZWN0aW9uRGlyZWN0aW9u
ID0gU2VsZWN0aW9uSGFzTm9EaXJlY3Rpb24sIGNvbnN0IEFYVGV4dFN0YXRlQ2hhbmdlSW50ZW50
JiA9IEFYVGV4dFN0YXRlQ2hhbmdlSW50ZW50KCkpOwogICAgIFBhc3NSZWZQdHI8UmFuZ2U+IHNl
bGVjdGlvbigpIGNvbnN0OwogICAgIFN0cmluZyBzZWxlY3RlZFRleHQoKSBjb25zdDsKIApAQCAt
MTEwLDcgKzExMCw3IEBAIHByb3RlY3RlZDoKICAgICAgICAgbV9jYWNoZWRTZWxlY3Rpb25EaXJl
Y3Rpb24gPSBkaXJlY3Rpb247CiAgICAgfQogCi0gICAgdm9pZCByZXN0b3JlQ2FjaGVkU2VsZWN0
aW9uKCk7CisgICAgdm9pZCByZXN0b3JlQ2FjaGVkU2VsZWN0aW9uKGNvbnN0IEFYVGV4dFN0YXRl
Q2hhbmdlSW50ZW50JiA9IEFYVGV4dFN0YXRlQ2hhbmdlSW50ZW50KCkpOwogICAgIGJvb2wgaGFz
Q2FjaGVkU2VsZWN0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9jYWNoZWRTZWxlY3Rpb25TdGFydCA+
PSAwOyB9CiAKICAgICB2aXJ0dWFsIHZvaWQgc3VidHJlZUhhc0NoYW5nZWQoKSA9IDA7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0V2ZW50SGFuZGxlci5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL0V2ZW50SGFuZGxlci5jcHAKaW5kZXggMjE2YWJjNy4uNjU0YTRmZSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9FdmVudEhhbmRsZXIuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BhZ2UvRXZlbnRIYW5kbGVyLmNwcApAQCAtMzIzOCw3ICszMjM4LDcgQEAgc3RhdGlj
IHZvaWQgc2V0SW5pdGlhbEtleWJvYXJkU2VsZWN0aW9uKEZyYW1lJiBmcmFtZSwgU2VsZWN0aW9u
RGlyZWN0aW9uIGRpcmVjdGkKICAgICAgICAgYnJlYWs7CiAgICAgfQogCi0gICAgQVhUZXh0U3Rh
dGVDaGFuZ2VJbnRlbnQgaW50ZW50KEFYVGV4dFN0YXRlQ2hhbmdlVHlwZVNlbGVjdGlvbk1vdmUs
IEFYVGV4dFNlbGVjdGlvbiB7IEFYVGV4dFNlbGVjdGlvbkRpcmVjdGlvbkRpc2NvbnRpZ3VvdXMs
IEFYVGV4dFNlbGVjdGlvbkdyYW51bGFyaXR5VW5rbm93biB9KTsKKyAgICBBWFRleHRTdGF0ZUNo
YW5nZUludGVudCBpbnRlbnQoQVhUZXh0U3RhdGVDaGFuZ2VUeXBlU2VsZWN0aW9uTW92ZSwgQVhU
ZXh0U2VsZWN0aW9uIHsgQVhUZXh0U2VsZWN0aW9uRGlyZWN0aW9uRGlzY29udGlndW91cywgQVhU
ZXh0U2VsZWN0aW9uR3JhbnVsYXJpdHlVbmtub3duLCBmYWxzZSB9KTsKICAgICBzZWxlY3Rpb24u
c2V0U2VsZWN0aW9uKHZpc2libGVQb3NpdGlvbiwgRnJhbWVTZWxlY3Rpb246OmRlZmF1bHRTZXRT
ZWxlY3Rpb25PcHRpb25zKFVzZXJUcmlnZ2VyZWQpLCBpbnRlbnQpOwogfQogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZvY3VzQ29udHJvbGxlci5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL0ZvY3VzQ29udHJvbGxlci5jcHAKaW5kZXggNTg4YmE0YS4uNTAzMjNkZSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9Gb2N1c0NvbnRyb2xsZXIuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BhZ2UvRm9jdXNDb250cm9sbGVyLmNwcApAQCAtMzQxLDcgKzM0MSw3IEBAIGJv
b2wgRm9jdXNDb250cm9sbGVyOjphZHZhbmNlRm9jdXNJbkRvY3VtZW50T3JkZXIoRm9jdXNEaXJl
Y3Rpb24gZGlyZWN0aW9uLCBLZXliCiAgICAgICAgIFBvc2l0aW9uIHBvc2l0aW9uID0gZmlyc3RQ
b3NpdGlvbkluT3JCZWZvcmVOb2RlKGVsZW1lbnQuZ2V0KCkpOwogICAgICAgICBWaXNpYmxlU2Vs
ZWN0aW9uIG5ld1NlbGVjdGlvbihwb3NpdGlvbiwgcG9zaXRpb24sIERPV05TVFJFQU0pOwogICAg
ICAgICBpZiAoZnJhbWUuc2VsZWN0aW9uKCkuc2hvdWxkQ2hhbmdlU2VsZWN0aW9uKG5ld1NlbGVj
dGlvbikpIHsKLSAgICAgICAgICAgIEFYVGV4dFN0YXRlQ2hhbmdlSW50ZW50IGludGVudChBWFRl
eHRTdGF0ZUNoYW5nZVR5cGVTZWxlY3Rpb25Nb3ZlLCBBWFRleHRTZWxlY3Rpb24geyBBWFRleHRT
ZWxlY3Rpb25EaXJlY3Rpb25EaXNjb250aWd1b3VzLCBBWFRleHRTZWxlY3Rpb25HcmFudWxhcml0
eVVua25vd24gfSk7CisgICAgICAgICAgICBBWFRleHRTdGF0ZUNoYW5nZUludGVudCBpbnRlbnQo
QVhUZXh0U3RhdGVDaGFuZ2VUeXBlU2VsZWN0aW9uTW92ZSwgQVhUZXh0U2VsZWN0aW9uIHsgQVhU
ZXh0U2VsZWN0aW9uRGlyZWN0aW9uRGlzY29udGlndW91cywgQVhUZXh0U2VsZWN0aW9uR3JhbnVs
YXJpdHlVbmtub3duLCB0cnVlIH0pOwogICAgICAgICAgICAgZnJhbWUuc2VsZWN0aW9uKCkuc2V0
U2VsZWN0aW9uKG5ld1NlbGVjdGlvbiwgRnJhbWVTZWxlY3Rpb246OmRlZmF1bHRTZXRTZWxlY3Rp
b25PcHRpb25zKFVzZXJUcmlnZ2VyZWQpLCBpbnRlbnQpOwogICAgICAgICB9CiAgICAgfQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>256044</attachid>
            <date>2015-07-02 16:01:40 -0700</date>
            <delta_ts>2015-07-02 16:06:34 -0700</delta_ts>
            <desc>patch</desc>
            <filename>focusChange.patch</filename>
            <type>text/plain</type>
            <size>1955</size>
            <attacher name="Doug Russell">d_russell</attacher>
            
              <data encoding="base64">Y29tbWl0IDBiNGQ5NTliNGFmYzRmOWNjZjdkYzQ5NGE1OGJiNDhhOTU1MTM3MzUKQXV0aG9yOiBh
bmRlcnNjYUBhcHBsZS5jb20gPGFuZGVyc2NhQGFwcGxlLmNvbUAyNjhmNDVjYy1jZDA5LTA0MTAt
YWIzYy1kNTI2OTFiNGRiZmM+CkRhdGU6ICAgVGh1IEp1bCAyIDIxOjM5OjM3IDIwMTUgKzAwMDAK
CiAgICBJbnN0ZWFkIG9mIHJlcXVpcmluZyBUb1QgVUlLSXQsIGNoZWNrIHRoYXQgVUlfV0VCX1RP
VUNIX0VWRU5UX0hBU19JU19QT1RFTlRJQUxfVEFQIGlzIGRlZmluZWQgdG8gMQogICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE0NjU1OAogICAgCiAgICBSZXZpZXdl
ZCBieSBCZXRoIERha2luLgogICAgCiAgICAqIFNoYXJlZC9pb3MvTmF0aXZlV2ViVG91Y2hFdmVu
dElPUy5tbToKICAgIChXZWJLaXQ6Ok5hdGl2ZVdlYlRvdWNoRXZlbnQ6Ok5hdGl2ZVdlYlRvdWNo
RXZlbnQpOgogICAgCiAgICBnaXQtc3ZuLWlkOiBodHRwOi8vc3ZuLndlYmtpdC5vcmcvcmVwb3Np
dG9yeS93ZWJraXQvdHJ1bmtAMTg2MjM1IDI2OGY0NWNjLWNkMDktMDQxMC1hYjNjLWQ1MjY5MWI0
ZGJmYwoKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJL
aXQyL0NoYW5nZUxvZwppbmRleCA3ZWRmYTE1Li5hNTQ2NDA3IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0Mi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCkBAIC0xLDMg
KzEsMTMgQEAKKzIwMTUtMDctMDIgIEFuZGVycyBDYXJsc3NvbiAgPGFuZGVyc2NhQGFwcGxlLmNv
bT4KKworICAgICAgICBJbnN0ZWFkIG9mIHJlcXVpcmluZyBUb1QgVUlLSXQsIGNoZWNrIHRoYXQg
VUlfV0VCX1RPVUNIX0VWRU5UX0hBU19JU19QT1RFTlRJQUxfVEFQIGlzIGRlZmluZWQgdG8gMQor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTQ2NTU4CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgQmV0aCBEYWtpbi4KKworICAgICAgICAqIFNoYXJlZC9pb3Mv
TmF0aXZlV2ViVG91Y2hFdmVudElPUy5tbToKKyAgICAgICAgKFdlYktpdDo6TmF0aXZlV2ViVG91
Y2hFdmVudDo6TmF0aXZlV2ViVG91Y2hFdmVudCk6CisKIDIwMTUtMDctMDIgIEJyYWR5IEVpZHNv
biAgPGJlaWRzb25AYXBwbGUuY29tPgogCiAgICAgICAgIFJlbW92ZSBjaGFuZ2UgSSBhY2NpZGVu
dGFsbHkgY29tbWl0dGVkIGluIHIxODYyMzIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1No
YXJlZC9pb3MvTmF0aXZlV2ViVG91Y2hFdmVudElPUy5tbSBiL1NvdXJjZS9XZWJLaXQyL1NoYXJl
ZC9pb3MvTmF0aXZlV2ViVG91Y2hFdmVudElPUy5tbQppbmRleCBjY2E0YzE3Li4xNWU5OTgwIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvaW9zL05hdGl2ZVdlYlRvdWNoRXZlbnRJ
T1MubW0KKysrIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL2lvcy9OYXRpdmVXZWJUb3VjaEV2ZW50
SU9TLm1tCkBAIC0xMDIsNyArMTAyLDcgQEAgTmF0aXZlV2ViVG91Y2hFdmVudDo6TmF0aXZlV2Vi
VG91Y2hFdmVudChjb25zdCBfVUlXZWJUb3VjaEV2ZW50KiBldmVudCkKICAgICAgICAgZXZlbnQt
PnRpbWVzdGFtcCwKICAgICAgICAgZXh0cmFjdFdlYlRvdWNoUG9pbnQoZXZlbnQpLAogICAgICAg
ICBwb3NpdGlvbkZvckNHUG9pbnQoZXZlbnQtPmxvY2F0aW9uSW5Eb2N1bWVudENvb3JkaW5hdGVz
KSwKLSNpZiBfX0lQSE9ORV9PU19WRVJTSU9OX01JTl9SRVFVSVJFRCA+PSA5MDAwMAorI2lmIF9f
SVBIT05FX09TX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49IDkwMDAwICYmIGRlZmluZWQgVUlfV0VC
X1RPVUNIX0VWRU5UX0hBU19JU19QT1RFTlRJQUxfVEFQICYmIFVJX1dFQl9UT1VDSF9FVkVOVF9I
QVNfSVNfUE9URU5USUFMX1RBUAogICAgICAgICBldmVudC0+aXNQb3RlbnRpYWxUYXAsCiAjZWxz
ZQogICAgICAgICB0cnVlLAo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>256045</attachid>
            <date>2015-07-02 16:06:34 -0700</date>
            <delta_ts>2015-07-02 20:35:36 -0700</delta_ts>
            <desc>patch</desc>
            <filename>focusChange.patch</filename>
            <type>text/plain</type>
            <size>27039</size>
            <attacher name="Doug Russell">d_russell</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCBmNTI0NTcyYy4uY2E2YTg0NyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdl
TG9nCisrKyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE4IEBACisyMDE1LTA3
LTAyICBEb3VnIFJ1c3NlbGwgIDxkX3J1c3NlbGxAYXBwbGUuY29tPgorCisgICAgICAgIEFYOiBT
ZWxlY3Rpb24gY2hhbmdlIGFzIGEgcmVzdWx0IG9mIGZvY3VzaW5nIGFuIGVsZW1lbnQgc2hvdWxk
IGluY2x1ZGUgdGhhdCAKKyAgICAgICAgaW5mb3JtYXRpb24gaW4gdGhlIGludGVudAorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTQ2NTMzCisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkZWQgZm9jdXNDaGFu
Z2UgZmxhZyB0byBBWFRleHRTdGF0ZUNoYW5nZUludGVudC4KKyAgICAgICAgQWRkZWQgaW50ZW50
IHN1cHBvcnQgdG8gc2VsZWN0aW9uIGxvZ2ljIGNhbGxlZCBieSBFbGVtZW50Ojp1cGRhdGVGb2N1
c0FwcGVhcmFuY2UoKS4KKyAgICAgICAgQWRkZWQgTlNBY2Nlc3NpYmlsaXR5VGV4dFNlbGVjdGlv
bkNoYW5nZWRGb2N1cyB0byBtYWMgbm90aWZpY2F0aW9ucy4KKworICAgICAgICAqIHBsYXRmb3Jt
L21hYy9hY2Nlc3NpYmlsaXR5L3NlbGVjdGlvbi1ub3RpZmljYXRpb24tZm9jdXMtY2hhbmdlLWV4
cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogcGxhdGZvcm0vbWFjL2FjY2Vzc2liaWxpdHkv
c2VsZWN0aW9uLW5vdGlmaWNhdGlvbi1mb2N1cy1jaGFuZ2UuaHRtbDogQWRkZWQuCisKIDIwMTUt
MDctMDIgIEJyYWR5IEVpZHNvbiAgPGJlaWRzb25AYXBwbGUuY29tPgogCiAgICAgICAgIEFkZCBw
cmVmZXJlbmNlIHRvIGRpc2FibGUgYWxsIGh0dHAtZXF1aXYuCmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9wbGF0Zm9ybS9tYWMvYWNjZXNzaWJpbGl0eS9zZWxlY3Rpb24tbm90aWZpY2F0aW9uLWZv
Y3VzLWNoYW5nZS1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvYWNjZXNz
aWJpbGl0eS9zZWxlY3Rpb24tbm90aWZpY2F0aW9uLWZvY3VzLWNoYW5nZS1leHBlY3RlZC50eHQK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNWY4YTI0YwotLS0gL2Rldi9udWxs
CisrKyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy9hY2Nlc3NpYmlsaXR5L3NlbGVjdGlvbi1u
b3RpZmljYXRpb24tZm9jdXMtY2hhbmdlLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDE4IEBACisK
KyAxCisgMgorVGhpcyB0ZXN0cyB0aGF0IHNlbGVjdGlvbiBjaGFuZ2VzIGFzIGEgcmVzdWx0IG9m
IGFkdmFuY2luZyBmb2N1cyBpbmNsdWRlIEFYVGV4dFNlbGVjdGlvbkNoYW5nZWRGb2N1cyBmbGFn
LgorCitPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2Vz
LCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCisKKworUEFTUyBhZGRlZE5vdGlmaWNhdGlv
biBpcyB0cnVlCitQQVNTIGF4VGV4dEZvY3VzQ2hhbmdlT25lIGlzIHRydWUKK1BBU1MgYXhUZXh0
Rm9jdXNDaGFuZ2VUd28gaXMgdHJ1ZQorUEFTUyBhY2Nlc3NpYmlsaXR5Q29udHJvbGxlci5hY2Nl
c3NpYmxlRWxlbWVudEJ5SWQoIjEiKS5pc0ZvY3VzYWJsZSBpcyB0cnVlCitQQVNTIHN1Y2Nlc3Nm
dWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKK1BBU1MgYXhUZXh0Rm9jdXNDaGFu
Z2VUaHJlZSBpcyB0cnVlCitQQVNTIGF4VGV4dEZvY3VzQ2hhbmdlRm91ciBpcyB0cnVlCisKZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy9hY2Nlc3NpYmlsaXR5L3NlbGVjdGlv
bi1ub3RpZmljYXRpb24tZm9jdXMtY2hhbmdlLmh0bWwgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9t
YWMvYWNjZXNzaWJpbGl0eS9zZWxlY3Rpb24tbm90aWZpY2F0aW9uLWZvY3VzLWNoYW5nZS5odG1s
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjkxZTZjODEKLS0tIC9kZXYvbnVs
bAorKysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvYWNjZXNzaWJpbGl0eS9zZWxlY3Rpb24t
bm90aWZpY2F0aW9uLWZvY3VzLWNoYW5nZS5odG1sCkBAIC0wLDAgKzEsODIgQEAKKzwhRE9DVFlQ
RSBIVE1MIFBVQkxJQyAiLS8vSUVURi8vRFREIEhUTUwvL0VOIj4KKzxodG1sPgorICAgIDxoZWFk
PgorICAgICAgICA8c2NyaXB0IHNyYz0iLi4vLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpz
Ij48L3NjcmlwdD4KKyAgICA8L2hlYWQ+CisgICAgPGJvZHkgaWQ9ImJvZHkiPgorICAgICAgICA8
ZmllbGRzZXQ+CisgICAgICAgICAgICA8ZGl2PgorICAgICAgICAgICAgICAgIDxpbnB1dCBpZD0i
MSI+CisgICAgICAgICAgICAgICAgICAgIDxsYWJlbCBmb3I9IjEiPjE8L2xhYmVsPgorICAgICAg
ICAgICAgICAgICAgICA8L2Rpdj4KKyAgICAgICAgICAgIDxkaXY+CisgICAgICAgICAgICAgICAg
PGlucHV0IGlkPSIyIj4KKyAgICAgICAgICAgICAgICAgICAgPGxhYmVsIGZvcj0iMiI+MjwvbGFi
ZWw+CisgICAgICAgICAgICAgICAgICAgIDwvZGl2PgorICAgICAgICA8L2ZpZWxkc2V0PgorICAg
ICAgICA8cCBpZD0iZGVzY3JpcHRpb24iPjwvcD4KKyAgICAgICAgPGRpdiBpZD0iY29uc29sZSI+
PC9kaXY+CisgICAgICAgIDxkaXYgaWQ9Im5vdGlmaWNhdGlvbnMiPjwvZGl2PgorICAgICAgICA8
c2NyaXB0PgorICAgICAgICAgICAgZGVzY3JpcHRpb24oIlRoaXMgdGVzdHMgdGhhdCBzZWxlY3Rp
b24gY2hhbmdlcyBhcyBhIHJlc3VsdCBvZiBhZHZhbmNpbmcgZm9jdXMgaW5jbHVkZSBBWFRleHRT
ZWxlY3Rpb25DaGFuZ2VkRm9jdXMgZmxhZy4iKTsKKworICAgICAgICAgICAgdmFyIHdlYkFyZWEg
PSAwOworICAgICAgICAgICAgdmFyIGF4VGV4dEZvY3VzQ2hhbmdlT25lID0gMDsKKyAgICAgICAg
ICAgIHZhciBheFRleHRGb2N1c0NoYW5nZVR3byA9IDA7CisgICAgICAgICAgICB2YXIgYXhUZXh0
Rm9jdXNDaGFuZ2VUaHJlZSA9IDA7CisgICAgICAgICAgICB2YXIgYXhUZXh0Rm9jdXNDaGFuZ2VG
b3VyID0gMDsKKyAgICAgICAgICAgIHZhciBzZWxlY3RDb3VudCA9IDA7CisgICAgICAgICAgICB2
YXIgZm9jdXNDb3VudCA9IDA7CisgICAgICAgICAgICAvLyBOb3RpZmljYXRpb24gb3JkZXJpbmc6
CisgICAgICAgICAgICAvLyBUaGUgZmlyc3QgdGFiIHdpbGwgcmVzdWx0IGluIDIgc2VsZWN0aW9u
IGNoYW5nZSBub3RpZmljYXRpb25zIGFuZCBhIGZvY3VzIG5vdGlmaWNhdGlvbiAgICAgICAgICBz
ZWxlY3RDb3VudD0yLCBmb2N1c0NvdW50PTEKKyAgICAgICAgICAgIC8vIHRha2VGb2N1cygpIHdp
bGwgcmVzdWx0IGluIGEgZm9jdXMgbm90aWZpY2F0aW9uICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGVjdENvdW50PTIsIGZvY3VzQ291bnQ9MgorICAg
ICAgICAgICAgLy8gVGhlIHNlY29uZCB0YWIgd2lsbCByZXN1bHQgaW4gYW5vdGhlciAyIHNlbGVj
dGlvbiBjaGFuZ2Ugbm90aWZpY2F0aW9ucyBhbmQgYSBmb2N1cyBub3RpZmljYXRpb24gc2VsZWN0
Q291bnQ9MSwgZm9jdXNDb3VudD0zCisgICAgICAgICAgICAvLyAoVGhlIDIgc2VsZWN0aW9uIGNo
YW5nZSBub3RpZmljYXRpb25zIHBlciB0YWIgaXMgY2F1c2VkIGJ5IGNhcmV0IGJyb3dzaW5nIGJl
aW5nIGVuYWJsZWQpCisgICAgICAgICAgICBmdW5jdGlvbiBub3RpZmljYXRpb25DYWxsYmFjayhu
b3RpZmljYXRpb24sIHVzZXJJbmZvKSB7CisgICAgICAgICAgICAgICAgaWYgKG5vdGlmaWNhdGlv
biA9PSAiQVhTZWxlY3RlZFRleHRDaGFuZ2VkIikgeworICAgICAgICAgICAgICAgICAgICBzZWxl
Y3RDb3VudCsrOworICAgICAgICAgICAgICAgICAgICBpZiAoc2VsZWN0Q291bnQgPT0gMSkgewor
ICAgICAgICAgICAgICAgICAgICAgICAgYXhUZXh0Rm9jdXNDaGFuZ2VPbmUgPSB1c2VySW5mb1si
QVhUZXh0U2VsZWN0aW9uQ2hhbmdlZEZvY3VzIl07CisgICAgICAgICAgICAgICAgICAgICAgICBz
aG91bGRCZSgiYXhUZXh0Rm9jdXNDaGFuZ2VPbmUiLCAidHJ1ZSIpOworICAgICAgICAgICAgICAg
ICAgICB9IGVsc2UgaWYgKHNlbGVjdENvdW50ID09IDIpIHsKKyAgICAgICAgICAgICAgICAgICAg
ICAgIGF4VGV4dEZvY3VzQ2hhbmdlVHdvID0gdXNlckluZm9bIkFYVGV4dFNlbGVjdGlvbkNoYW5n
ZWRGb2N1cyJdOworICAgICAgICAgICAgICAgICAgICAgICAgc2hvdWxkQmUoImF4VGV4dEZvY3Vz
Q2hhbmdlVHdvIiwgInRydWUiKTsKKworICAgICAgICAgICAgICAgICAgICAgICAgc2hvdWxkQmUo
ImFjY2Vzc2liaWxpdHlDb250cm9sbGVyLmFjY2Vzc2libGVFbGVtZW50QnlJZChcIjFcIikuaXNG
b2N1c2FibGUiLCAidHJ1ZSIpOworICAgICAgICAgICAgICAgICAgICAgICAgYWNjZXNzaWJpbGl0
eUNvbnRyb2xsZXIuYWNjZXNzaWJsZUVsZW1lbnRCeUlkKCIxIikudGFrZUZvY3VzKCk7CisgICAg
ICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoc2VsZWN0Q291bnQgPT0gMykgeworICAgICAgICAg
ICAgICAgICAgICAgICAgYXhUZXh0Rm9jdXNDaGFuZ2VUaHJlZSA9IHVzZXJJbmZvWyJBWFRleHRT
ZWxlY3Rpb25DaGFuZ2VkRm9jdXMiXTsKKyAgICAgICAgICAgICAgICAgICAgICAgIHNob3VsZEJl
KCJheFRleHRGb2N1c0NoYW5nZVRocmVlIiwgInRydWUiKTsKKyAgICAgICAgICAgICAgICAgICAg
fSBlbHNlIGlmIChzZWxlY3RDb3VudCA9PSA0KSB7CisgICAgICAgICAgICAgICAgICAgICAgICBh
eFRleHRGb2N1c0NoYW5nZUZvdXIgPSB1c2VySW5mb1siQVhUZXh0U2VsZWN0aW9uQ2hhbmdlZEZv
Y3VzIl07CisgICAgICAgICAgICAgICAgICAgICAgICBzaG91bGRCZSgiYXhUZXh0Rm9jdXNDaGFu
Z2VGb3VyIiwgInRydWUiKTsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAg
IH0gZWxzZSBpZiAobm90aWZpY2F0aW9uID09ICJBWEZvY3VzQ2hhbmdlZCIpIHsKKyAgICAgICAg
ICAgICAgICAgICAgZm9jdXNDb3VudCsrOworICAgICAgICAgICAgICAgICAgICBpZiAoZm9jdXND
b3VudCA9PSAyKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBldmVudFNlbmRlci5zY2hlZHVs
ZUFzeW5jaHJvbm91c0tleURvd24oIlx0Iik7CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAg
ICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgaWYgKHNlbGVjdENvdW50ID09IDQgJiYgZm9j
dXNDb3VudCA9PSAzKSB7CisgICAgICAgICAgICAgICAgICAgIHdlYkFyZWEucmVtb3ZlTm90aWZp
Y2F0aW9uTGlzdGVuZXIoKTsKKyAgICAgICAgICAgICAgICAgICAgdGVzdFJ1bm5lci5ub3RpZnlE
b25lKCk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorCisgICAgICAgICAgICBp
ZiAod2luZG93LmFjY2Vzc2liaWxpdHlDb250cm9sbGVyKSB7CisgICAgICAgICAgICAgICAgdGVz
dFJ1bm5lci53YWl0VW50aWxEb25lKCk7CisgICAgICAgICAgICAgICAgdGVzdFJ1bm5lci5vdmVy
cmlkZVByZWZlcmVuY2UoIldlYktpdFRhYlRvTGlua3NQcmVmZXJlbmNlS2V5IiwgMSk7CisKKyAg
ICAgICAgICAgICAgICBhY2Nlc3NpYmlsaXR5Q29udHJvbGxlci5lbmFibGVFbmhhbmNlZEFjY2Vz
c2liaWxpdHkodHJ1ZSk7CisgICAgICAgICAgICAgICAgd2ViQXJlYSA9IGFjY2Vzc2liaWxpdHlD
b250cm9sbGVyLnJvb3RFbGVtZW50LmNoaWxkQXRJbmRleCgwKTsKKyAgICAgICAgICAgICAgICB3
ZWJBcmVhLnNldEJvb2xBdHRyaWJ1dGVWYWx1ZSgiQVhDYXJldEJyb3dzaW5nRW5hYmxlZCIsIHRy
dWUpCisKKyAgICAgICAgICAgICAgICB2YXIgYWRkZWROb3RpZmljYXRpb24gPSB3ZWJBcmVhLmFk
ZE5vdGlmaWNhdGlvbkxpc3RlbmVyKG5vdGlmaWNhdGlvbkNhbGxiYWNrKTsKKyAgICAgICAgICAg
ICAgICBzaG91bGRCZSgiYWRkZWROb3RpZmljYXRpb24iLCAidHJ1ZSIpOworCisgICAgICAgICAg
ICAgICAgZXZlbnRTZW5kZXIua2V5RG93bigiXHQiKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAg
ICAgIDwvc2NyaXB0PgorICAgICAgICA8c2NyaXB0IHNyYz0iLi4vLi4vLi4vcmVzb3VyY2VzL2pz
LXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+CisgICAgPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCmlu
ZGV4IGE5ZjRlMzIuLmI4YzM3MWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxv
ZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSw0OCBAQAorMjAxNS0w
Ny0wMiAgRG91ZyBSdXNzZWxsICA8ZF9ydXNzZWxsQGFwcGxlLmNvbT4KKworICAgICAgICBBWDog
U2VsZWN0aW9uIGNoYW5nZSBhcyBhIHJlc3VsdCBvZiBmb2N1c2luZyBhbiBlbGVtZW50IHNob3Vs
ZCBpbmNsdWRlIHRoYXQgCisgICAgICAgIGluZm9ybWF0aW9uIGluIHRoZSBpbnRlbnQKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE0NjUzMworCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZGVkIGZvY3VzQ2hh
bmdlIGZsYWcgdG8gQVhUZXh0U3RhdGVDaGFuZ2VJbnRlbnQuCisgICAgICAgIEFkZGVkIGludGVu
dCBzdXBwb3J0IHRvIHNlbGVjdGlvbiBsb2dpYyBjYWxsZWQgYnkgRWxlbWVudDo6dXBkYXRlRm9j
dXNBcHBlYXJhbmNlKCkuCisgICAgICAgIEFkZGVkIE5TQWNjZXNzaWJpbGl0eVRleHRTZWxlY3Rp
b25DaGFuZ2VkRm9jdXMgdG8gbWFjIG5vdGlmaWNhdGlvbnMuCisKKyAgICAgICAgVGVzdDogcGxh
dGZvcm0vbWFjL2FjY2Vzc2liaWxpdHkvc2VsZWN0aW9uLW5vdGlmaWNhdGlvbi1mb2N1cy1jaGFu
Z2UuaHRtbAorCisgICAgICAgICogYWNjZXNzaWJpbGl0eS9BWE9iamVjdENhY2hlLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkFYT2JqZWN0Q2FjaGU6OnBvc3RUZXh0U3RhdGVDaGFuZ2VOb3RpZmlj
YXRpb24pOgorICAgICAgICAqIGFjY2Vzc2liaWxpdHkvQVhUZXh0U3RhdGVDaGFuZ2VJbnRlbnQu
aDoKKyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3QuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6c2V0VGV4dFNlbGVjdGlvbkludGVudCk6CisgICAgICAgIChX
ZWJDb3JlOjpBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0OjpzZXRGb2N1c2VkKToKKyAgICAgICAg
KiBhY2Nlc3NpYmlsaXR5L21hYy9BWE9iamVjdENhY2hlTWFjLm1tOgorICAgICAgICAoV2ViQ29y
ZTo6QVhPYmplY3RDYWNoZTo6cG9zdFRleHRTdGF0ZUNoYW5nZVBsYXRmb3JtTm90aWZpY2F0aW9u
KToKKyAgICAgICAgKiBkb20vRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpFbGVtZW50
Ojp1cGRhdGVGb2N1c0FwcGVhcmFuY2UpOgorICAgICAgICAqIGRvbS9FbGVtZW50Lmg6CisgICAg
ICAgIChXZWJDb3JlOjpFbGVtZW50OjpkZWZhdWx0Rm9jdXNUZXh0U3RhdGVDaGFuZ2VJbnRlbnQp
OgorICAgICAgICAqIGVkaXRpbmcvRnJhbWVTZWxlY3Rpb24uY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6RnJhbWVTZWxlY3Rpb246Om1vdmVXaXRob3V0VmFsaWRhdGlvblRvKToKKyAgICAgICAgKFdl
YkNvcmU6OkZyYW1lU2VsZWN0aW9uOjpzZXRTZWxlY3Rpb25CeU1vdXNlSWZEaWZmZXJlbnQpOgor
ICAgICAgICAoV2ViQ29yZTo6RnJhbWVTZWxlY3Rpb246OnNlbGVjdEFsbCk6CisgICAgICAgICog
ZWRpdGluZy9GcmFtZVNlbGVjdGlvbi5oOgorICAgICAgICAqIGh0bWwvSFRNTElucHV0RWxlbWVu
dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MSW5wdXRFbGVtZW50Ojp1cGRhdGVGb2N1c0Fw
cGVhcmFuY2UpOgorICAgICAgICAqIGh0bWwvSFRNTFRleHRBcmVhRWxlbWVudC5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpIVE1MVGV4dEFyZWFFbGVtZW50Ojp1cGRhdGVGb2N1c0FwcGVhcmFuY2Up
OgorICAgICAgICAqIGh0bWwvSFRNTFRleHRGb3JtQ29udHJvbEVsZW1lbnQuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6SFRNTFRleHRGb3JtQ29udHJvbEVsZW1lbnQ6OnNlbGVjdCk6CisgICAgICAg
IChXZWJDb3JlOjpIVE1MVGV4dEZvcm1Db250cm9sRWxlbWVudDo6c2V0U2VsZWN0aW9uUmFuZ2Up
OgorICAgICAgICAoV2ViQ29yZTo6SFRNTFRleHRGb3JtQ29udHJvbEVsZW1lbnQ6OnJlc3RvcmVD
YWNoZWRTZWxlY3Rpb24pOgorICAgICAgICAqIGh0bWwvSFRNTFRleHRGb3JtQ29udHJvbEVsZW1l
bnQuaDoKKyAgICAgICAgKiBwYWdlL0V2ZW50SGFuZGxlci5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpzZXRJbml0aWFsS2V5Ym9hcmRTZWxlY3Rpb24pOgorICAgICAgICAqIHBhZ2UvRm9jdXNDb250
cm9sbGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZvY3VzQ29udHJvbGxlcjo6YWR2YW5jZUZv
Y3VzSW5Eb2N1bWVudE9yZGVyKToKKwogMjAxNS0wNy0wMiAgQnJhZHkgRWlkc29uICA8YmVpZHNv
bkBhcHBsZS5jb20+CiAKICAgICAgICAgQWRkIHByZWZlcmVuY2UgdG8gZGlzYWJsZSBhbGwgaHR0
cC1lcXVpdi4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQVhPYmpl
Y3RDYWNoZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FYT2JqZWN0Q2FjaGUu
Y3BwCmluZGV4IGNkZmJhNjMuLjc3YjE0NjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Fj
Y2Vzc2liaWxpdHkvQVhPYmplY3RDYWNoZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYWNjZXNz
aWJpbGl0eS9BWE9iamVjdENhY2hlLmNwcApAQCAtMTA1Myw3ICsxMDUzLDggQEAgdm9pZCBBWE9i
amVjdENhY2hlOjpwb3N0VGV4dFN0YXRlQ2hhbmdlTm90aWZpY2F0aW9uKEFjY2Vzc2liaWxpdHlP
YmplY3QqIG9iamVjdCwKICAgICAgICAgICAgIG9iamVjdCA9IG9ic2VydmFibGVPYmplY3Q7CiAg
ICAgfQogCi0gICAgcG9zdFRleHRTdGF0ZUNoYW5nZVBsYXRmb3JtTm90aWZpY2F0aW9uKG9iamVj
dCwgKGludGVudC50eXBlID09IEFYVGV4dFN0YXRlQ2hhbmdlVHlwZVVua25vd24gfHwgbV9pc1N5
bmNocm9uaXppbmdTZWxlY3Rpb24pID8gbV90ZXh0U2VsZWN0aW9uSW50ZW50IDogaW50ZW50LCBz
ZWxlY3Rpb24pOworICAgIGNvbnN0IEFYVGV4dFN0YXRlQ2hhbmdlSW50ZW50JiBuZXdJbnRlbnQg
PSAoaW50ZW50LnR5cGUgPT0gQVhUZXh0U3RhdGVDaGFuZ2VUeXBlVW5rbm93biB8fCAobV9pc1N5
bmNocm9uaXppbmdTZWxlY3Rpb24gJiYgbV90ZXh0U2VsZWN0aW9uSW50ZW50LnR5cGUgIT0gQVhU
ZXh0U3RhdGVDaGFuZ2VUeXBlVW5rbm93bikpID8gbV90ZXh0U2VsZWN0aW9uSW50ZW50IDogaW50
ZW50OworICAgIHBvc3RUZXh0U3RhdGVDaGFuZ2VQbGF0Zm9ybU5vdGlmaWNhdGlvbihvYmplY3Qs
IG5ld0ludGVudCwgc2VsZWN0aW9uKTsKICNlbHNlCiAgICAgVU5VU0VEX1BBUkFNKG9iamVjdCk7
CiAgICAgVU5VU0VEX1BBUkFNKGludGVudCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9h
Y2Nlc3NpYmlsaXR5L0FYVGV4dFN0YXRlQ2hhbmdlSW50ZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9h
Y2Nlc3NpYmlsaXR5L0FYVGV4dFN0YXRlQ2hhbmdlSW50ZW50LmgKaW5kZXggZWRhZDRhYi4uY2Y5
YmU0MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BWFRleHRTdGF0
ZUNoYW5nZUludGVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQVhUZXh0
U3RhdGVDaGFuZ2VJbnRlbnQuaApAQCAtNzAsNiArNzAsNyBAQCBlbnVtIEFYVGV4dFNlbGVjdGlv
bkdyYW51bGFyaXR5IHsKIHN0cnVjdCBBWFRleHRTZWxlY3Rpb24gewogICAgIEFYVGV4dFNlbGVj
dGlvbkRpcmVjdGlvbiBkaXJlY3Rpb247CiAgICAgQVhUZXh0U2VsZWN0aW9uR3JhbnVsYXJpdHkg
Z3JhbnVsYXJpdHk7CisgICAgYm9vbCBmb2N1c0NoYW5nZTsKIH07CiAKIHN0cnVjdCBBWFRleHRT
dGF0ZUNoYW5nZUludGVudCB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmls
aXR5L0FjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3QuY3BwIGIvU291cmNlL1dlYkNvcmUvYWNjZXNz
aWJpbGl0eS9BY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0LmNwcAppbmRleCA5MDhkNjc3Li4wY2Rl
ZjRkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxp
dHlSZW5kZXJPYmplY3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNj
ZXNzaWJpbGl0eVJlbmRlck9iamVjdC5jcHAKQEAgLTE1MDIsNyArMTUwMiw3IEBAIHN0YXRpYyB2
b2lkIHNldFRleHRTZWxlY3Rpb25JbnRlbnQoQVhPYmplY3RDYWNoZSogY2FjaGUsIEFYVGV4dFN0
YXRlQ2hhbmdlVHlwZSB0CiB7CiAgICAgaWYgKCFjYWNoZSkKICAgICAgICAgcmV0dXJuOwotICAg
IEFYVGV4dFN0YXRlQ2hhbmdlSW50ZW50IGludGVudCh0eXBlLCBBWFRleHRTZWxlY3Rpb24geyBB
WFRleHRTZWxlY3Rpb25EaXJlY3Rpb25EaXNjb250aWd1b3VzLCBBWFRleHRTZWxlY3Rpb25HcmFu
dWxhcml0eVVua25vd24gfSk7CisgICAgQVhUZXh0U3RhdGVDaGFuZ2VJbnRlbnQgaW50ZW50KHR5
cGUsIEFYVGV4dFNlbGVjdGlvbiB7IEFYVGV4dFNlbGVjdGlvbkRpcmVjdGlvbkRpc2NvbnRpZ3Vv
dXMsIEFYVGV4dFNlbGVjdGlvbkdyYW51bGFyaXR5VW5rbm93biwgZmFsc2UgfSk7CiAgICAgY2Fj
aGUtPnNldFRleHRTZWxlY3Rpb25JbnRlbnQoaW50ZW50KTsKICAgICBjYWNoZS0+c2V0SXNTeW5j
aHJvbml6aW5nU2VsZWN0aW9uKHRydWUpOwogfQpAQCAtMTY4Myw5ICsxNjgzLDkgQEAgdm9pZCBB
Y2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0OjpzZXRGb2N1c2VkKGJvb2wgb24pCiAgICAgaWYgKGRv
Y3VtZW50LT5mb2N1c2VkRWxlbWVudCgpID09IG5vZGUpCiAgICAgICAgIGRvY3VtZW50LT5zZXRG
b2N1c2VkRWxlbWVudChudWxscHRyKTsKIAotICAgIHNldFRleHRTZWxlY3Rpb25JbnRlbnQoYXhP
YmplY3RDYWNoZSgpLCBBWFRleHRTdGF0ZUNoYW5nZVR5cGVTZWxlY3Rpb25Nb3ZlKTsKKyAgICBh
eE9iamVjdENhY2hlKCktPnNldElzU3luY2hyb25pemluZ1NlbGVjdGlvbih0cnVlKTsKICAgICBk
b3duY2FzdDxFbGVtZW50Pigqbm9kZSkuZm9jdXMoKTsKLSAgICBjbGVhclRleHRTZWxlY3Rpb25J
bnRlbnQoYXhPYmplY3RDYWNoZSgpKTsKKyAgICBheE9iamVjdENhY2hlKCktPnNldElzU3luY2hy
b25pemluZ1NlbGVjdGlvbihmYWxzZSk7CiB9CiAKIHZvaWQgQWNjZXNzaWJpbGl0eVJlbmRlck9i
amVjdDo6c2V0U2VsZWN0ZWRSb3dzKEFjY2Vzc2liaWxpdHlDaGlsZHJlblZlY3RvciYgc2VsZWN0
ZWRSb3dzKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9tYWMvQVhP
YmplY3RDYWNoZU1hYy5tbSBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvbWFjL0FYT2Jq
ZWN0Q2FjaGVNYWMubW0KaW5kZXggODAxMDg3NS4uZjE3MmJjYiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9tYWMvQVhPYmplY3RDYWNoZU1hYy5tbQorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L21hYy9BWE9iamVjdENhY2hlTWFjLm1tCkBAIC02MCw2
ICs2MCwxMCBAQAogI2RlZmluZSBOU0FjY2Vzc2liaWxpdHlUZXh0U2VsZWN0aW9uR3JhbnVsYXJp
dHkgQCJBWFRleHRTZWxlY3Rpb25HcmFudWxhcml0eSIKICNlbmRpZgogCisjaWZuZGVmIE5TQWNj
ZXNzaWJpbGl0eVRleHRTZWxlY3Rpb25DaGFuZ2VkRm9jdXMKKyNkZWZpbmUgTlNBY2Nlc3NpYmls
aXR5VGV4dFNlbGVjdGlvbkNoYW5nZWRGb2N1cyBAIkFYVGV4dFNlbGVjdGlvbkNoYW5nZWRGb2N1
cyIKKyNlbmRpZgorCiAjaWZuZGVmIE5TQWNjZXNzaWJpbGl0eVRleHRFZGl0VHlwZQogI2RlZmlu
ZSBOU0FjY2Vzc2liaWxpdHlUZXh0RWRpdFR5cGUgQCJBWFRleHRFZGl0VHlwZSIKICNlbmRpZgpA
QCAtMjQ5LDYgKzI1Myw4IEBAIHZvaWQgQVhPYmplY3RDYWNoZTo6cG9zdFRleHRTdGF0ZUNoYW5n
ZVBsYXRmb3JtTm90aWZpY2F0aW9uKEFjY2Vzc2liaWxpdHlPYmplY3QqCiAgICAgICAgIGNhc2Ug
QVhUZXh0U3RhdGVDaGFuZ2VUeXBlRWRpdDoKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9
CisgICAgICAgIGlmIChpbnRlbnQuc2VsZWN0aW9uLmZvY3VzQ2hhbmdlKQorICAgICAgICAgICAg
W3VzZXJJbmZvIHNldE9iamVjdDpbTlNOdW1iZXIgbnVtYmVyV2l0aEJvb2w6aW50ZW50LnNlbGVj
dGlvbi5mb2N1c0NoYW5nZV0gZm9yS2V5Ok5TQWNjZXNzaWJpbGl0eVRleHRTZWxlY3Rpb25DaGFu
Z2VkRm9jdXNdOwogICAgIH0KICAgICBpZiAoIXNlbGVjdGlvbi5pc05vbmUoKSkgewogICAgICAg
ICBpZiAoaWQgdGV4dE1hcmtlclJhbmdlID0gW29iamVjdC0+d3JhcHBlcigpIHRleHRNYXJrZXJS
YW5nZUZyb21WaXNpYmxlUG9zaXRpb25zOnNlbGVjdGlvbi52aXNpYmxlU3RhcnQoKSBlbmRQb3Np
dGlvbjpzZWxlY3Rpb24udmlzaWJsZUVuZCgpXSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2RvbS9FbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmNwcAppbmRleCBj
Y2M2MzlhLi5iZTg4NGViIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuY3BwCkBAIC0yMTk5LDcgKzIxOTks
NyBAQCB2b2lkIEVsZW1lbnQ6OnVwZGF0ZUZvY3VzQXBwZWFyYW5jZShib29sIC8qcmVzdG9yZVBy
ZXZpb3VzU2VsZWN0aW9uKi8pCiAgICAgICAgIFZpc2libGVTZWxlY3Rpb24gbmV3U2VsZWN0aW9u
ID0gVmlzaWJsZVNlbGVjdGlvbihmaXJzdFBvc2l0aW9uSW5PckJlZm9yZU5vZGUodGhpcyksIERP
V05TVFJFQU0pOwogICAgICAgICAKICAgICAgICAgaWYgKGZyYW1lLT5zZWxlY3Rpb24oKS5zaG91
bGRDaGFuZ2VTZWxlY3Rpb24obmV3U2VsZWN0aW9uKSkgewotICAgICAgICAgICAgZnJhbWUtPnNl
bGVjdGlvbigpLnNldFNlbGVjdGlvbihuZXdTZWxlY3Rpb24pOworICAgICAgICAgICAgZnJhbWUt
PnNlbGVjdGlvbigpLnNldFNlbGVjdGlvbihuZXdTZWxlY3Rpb24sIEZyYW1lU2VsZWN0aW9uOjpk
ZWZhdWx0U2V0U2VsZWN0aW9uT3B0aW9ucygpLCBFbGVtZW50OjpkZWZhdWx0Rm9jdXNUZXh0U3Rh
dGVDaGFuZ2VJbnRlbnQoKSk7CiAgICAgICAgICAgICBmcmFtZS0+c2VsZWN0aW9uKCkucmV2ZWFs
U2VsZWN0aW9uKCk7CiAgICAgICAgIH0KICAgICB9IGVsc2UgaWYgKHJlbmRlcmVyKCkgJiYgIXJl
bmRlcmVyKCktPmlzV2lkZ2V0KCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRWxl
bWVudC5oIGIvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuaAppbmRleCA0NTMzNDAwLi42NWE1
NzJiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2RvbS9FbGVtZW50LmgKQEAgLTI1LDYgKzI1LDcgQEAKICNpZm5kZWYgRWxlbWVu
dF9oCiAjZGVmaW5lIEVsZW1lbnRfaAogCisjaW5jbHVkZSAiQVhUZXh0U3RhdGVDaGFuZ2VJbnRl
bnQuaCIKICNpbmNsdWRlICJEb2N1bWVudC5oIgogI2luY2x1ZGUgIkVsZW1lbnREYXRhLmgiCiAj
aW5jbHVkZSAiSFRNTE5hbWVzLmgiCkBAIC0zMjEsNiArMzIyLDcgQEAgcHVibGljOgogICAgIHZp
cnR1YWwgY29uc3QgQXRvbWljU3RyaW5nJiBpbWFnZVNvdXJjZVVSTCgpIGNvbnN0OwogICAgIHZp
cnR1YWwgU3RyaW5nIHRhcmdldCgpIGNvbnN0IHsgcmV0dXJuIFN0cmluZygpOyB9CiAKKyAgICBz
dGF0aWMgQVhUZXh0U3RhdGVDaGFuZ2VJbnRlbnQgZGVmYXVsdEZvY3VzVGV4dFN0YXRlQ2hhbmdl
SW50ZW50KCkgeyByZXR1cm4gQVhUZXh0U3RhdGVDaGFuZ2VJbnRlbnQoQVhUZXh0U3RhdGVDaGFu
Z2VUeXBlU2VsZWN0aW9uTW92ZSwgQVhUZXh0U2VsZWN0aW9uIHsgQVhUZXh0U2VsZWN0aW9uRGly
ZWN0aW9uRGlzY29udGlndW91cywgQVhUZXh0U2VsZWN0aW9uR3JhbnVsYXJpdHlVbmtub3duLCB0
cnVlIH0pOyB9CiAgICAgdm9pZCB1cGRhdGVGb2N1c0FwcGVhcmFuY2VBZnRlckF0dGFjaElmTmVl
ZGVkKCk7CiAgICAgdmlydHVhbCB2b2lkIGZvY3VzKGJvb2wgcmVzdG9yZVByZXZpb3VzU2VsZWN0
aW9uID0gdHJ1ZSwgRm9jdXNEaXJlY3Rpb24gPSBGb2N1c0RpcmVjdGlvbk5vbmUpOwogICAgIHZp
cnR1YWwgdm9pZCB1cGRhdGVGb2N1c0FwcGVhcmFuY2UoYm9vbCByZXN0b3JlUHJldmlvdXNTZWxl
Y3Rpb24pOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9GcmFtZVNlbGVjdGlv
bi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0ZyYW1lU2VsZWN0aW9uLmNwcAppbmRleCA5
ZWUwMGYyLi5iMGUyNTM1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0ZyYW1l
U2VsZWN0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0ZyYW1lU2VsZWN0aW9u
LmNwcApAQCAtMTY2LDEzICsxNjYsMTMgQEAgdm9pZCBGcmFtZVNlbGVjdGlvbjo6bW92ZVRvKGNv
bnN0IFBvc2l0aW9uICZiYXNlLCBjb25zdCBQb3NpdGlvbiAmZXh0ZW50LCBFQWZmaW4KICAgICBz
ZXRTZWxlY3Rpb24oVmlzaWJsZVNlbGVjdGlvbihiYXNlLCBleHRlbnQsIGFmZmluaXR5LCBzZWxl
Y3Rpb25IYXNEaXJlY3Rpb24pLCBkZWZhdWx0U2V0U2VsZWN0aW9uT3B0aW9ucyh1c2VyVHJpZ2dl
cmVkKSk7CiB9CiAKLXZvaWQgRnJhbWVTZWxlY3Rpb246Om1vdmVXaXRob3V0VmFsaWRhdGlvblRv
KGNvbnN0IFBvc2l0aW9uJiBiYXNlLCBjb25zdCBQb3NpdGlvbiYgZXh0ZW50LCBib29sIHNlbGVj
dGlvbkhhc0RpcmVjdGlvbiwgYm9vbCBzaG91bGRTZXRGb2N1cykKK3ZvaWQgRnJhbWVTZWxlY3Rp
b246Om1vdmVXaXRob3V0VmFsaWRhdGlvblRvKGNvbnN0IFBvc2l0aW9uJiBiYXNlLCBjb25zdCBQ
b3NpdGlvbiYgZXh0ZW50LCBib29sIHNlbGVjdGlvbkhhc0RpcmVjdGlvbiwgYm9vbCBzaG91bGRT
ZXRGb2N1cywgY29uc3QgQVhUZXh0U3RhdGVDaGFuZ2VJbnRlbnQmIGludGVudCkKIHsKICAgICBW
aXNpYmxlU2VsZWN0aW9uIG5ld1NlbGVjdGlvbjsKICAgICBuZXdTZWxlY3Rpb24uc2V0V2l0aG91
dFZhbGlkYXRpb24oYmFzZSwgZXh0ZW50KTsKICAgICBuZXdTZWxlY3Rpb24uc2V0SXNEaXJlY3Rp
b25hbChzZWxlY3Rpb25IYXNEaXJlY3Rpb24pOwotICAgIEFYVGV4dFN0YXRlQ2hhbmdlSW50ZW50
IGludGVudChBWFRleHRTdGF0ZUNoYW5nZVR5cGVTZWxlY3Rpb25Nb3ZlLCBBWFRleHRTZWxlY3Rp
b24geyBBWFRleHRTZWxlY3Rpb25EaXJlY3Rpb25EaXNjb250aWd1b3VzLCBBWFRleHRTZWxlY3Rp
b25HcmFudWxhcml0eVVua25vd24gfSk7Ci0gICAgc2V0U2VsZWN0aW9uKG5ld1NlbGVjdGlvbiwg
ZGVmYXVsdFNldFNlbGVjdGlvbk9wdGlvbnMoKSB8IChzaG91bGRTZXRGb2N1cyA/IDAgOiBEb05v
dFNldEZvY3VzKSwgaW50ZW50KTsKKyAgICBBWFRleHRTdGF0ZUNoYW5nZUludGVudCBuZXdJbnRl
bnQgPSBpbnRlbnQudHlwZSA9PSBBWFRleHRTdGF0ZUNoYW5nZVR5cGVVbmtub3duID8gQVhUZXh0
U3RhdGVDaGFuZ2VJbnRlbnQoQVhUZXh0U3RhdGVDaGFuZ2VUeXBlU2VsZWN0aW9uTW92ZSwgQVhU
ZXh0U2VsZWN0aW9uIHsgQVhUZXh0U2VsZWN0aW9uRGlyZWN0aW9uRGlzY29udGlndW91cywgQVhU
ZXh0U2VsZWN0aW9uR3JhbnVsYXJpdHlVbmtub3duLCBmYWxzZSB9KSA6IGludGVudDsKKyAgICBz
ZXRTZWxlY3Rpb24obmV3U2VsZWN0aW9uLCBkZWZhdWx0U2V0U2VsZWN0aW9uT3B0aW9ucygpIHwg
KHNob3VsZFNldEZvY3VzID8gMCA6IERvTm90U2V0Rm9jdXMpLCBuZXdJbnRlbnQpOwogfQogCiB2
b2lkIERyYWdDYXJldENvbnRyb2xsZXI6OnNldENhcmV0UG9zaXRpb24oY29uc3QgVmlzaWJsZVBv
c2l0aW9uJiBwb3NpdGlvbikKQEAgLTI1OSw3ICsyNTksNyBAQCB2b2lkIEZyYW1lU2VsZWN0aW9u
OjpzZXRTZWxlY3Rpb25CeU1vdXNlSWZEaWZmZXJlbnQoY29uc3QgVmlzaWJsZVNlbGVjdGlvbiYg
cGFzcwogICAgIAogICAgIEFYVGV4dFN0YXRlQ2hhbmdlSW50ZW50IGludGVudDsKICAgICBpZiAo
QVhPYmplY3RDYWNoZTo6YWNjZXNzaWJpbGl0eUVuYWJsZWQoKSAmJiBuZXdTZWxlY3Rpb24uaXND
YXJldCgpKQotICAgICAgICBpbnRlbnQgPSBBWFRleHRTdGF0ZUNoYW5nZUludGVudChBWFRleHRT
dGF0ZUNoYW5nZVR5cGVTZWxlY3Rpb25Nb3ZlLCBBWFRleHRTZWxlY3Rpb24geyBBWFRleHRTZWxl
Y3Rpb25EaXJlY3Rpb25EaXNjb250aWd1b3VzLCBBWFRleHRTZWxlY3Rpb25HcmFudWxhcml0eVVu
a25vd24gfSk7CisgICAgICAgIGludGVudCA9IEFYVGV4dFN0YXRlQ2hhbmdlSW50ZW50KEFYVGV4
dFN0YXRlQ2hhbmdlVHlwZVNlbGVjdGlvbk1vdmUsIEFYVGV4dFNlbGVjdGlvbiB7IEFYVGV4dFNl
bGVjdGlvbkRpcmVjdGlvbkRpc2NvbnRpZ3VvdXMsIEFYVGV4dFNlbGVjdGlvbkdyYW51bGFyaXR5
VW5rbm93biwgZmFsc2UgfSk7CiAgICAgZWxzZQogICAgICAgICBpbnRlbnQgPSBBWFRleHRTdGF0
ZUNoYW5nZUludGVudCgpOwogICAgIHNldFNlbGVjdGlvbihuZXdTZWxlY3Rpb24sIGRlZmF1bHRT
ZXRTZWxlY3Rpb25PcHRpb25zKCkgfCBGaXJlU2VsZWN0RXZlbnQsIGludGVudCwgQWxpZ25DdXJz
b3JPblNjcm9sbElmTmVlZGVkLCBncmFudWxhcml0eSk7CkBAIC0xNzkyLDcgKzE3OTIsNyBAQCB2
b2lkIEZyYW1lU2VsZWN0aW9uOjpzZWxlY3RBbGwoKQogICAgIFZpc2libGVTZWxlY3Rpb24gbmV3
U2VsZWN0aW9uKFZpc2libGVTZWxlY3Rpb246OnNlbGVjdGlvbkZyb21Db250ZW50c09mTm9kZShy
b290LmdldCgpKSk7CiAKICAgICBpZiAoc2hvdWxkQ2hhbmdlU2VsZWN0aW9uKG5ld1NlbGVjdGlv
bikpIHsKLSAgICAgICAgQVhUZXh0U3RhdGVDaGFuZ2VJbnRlbnQgaW50ZW50KEFYVGV4dFN0YXRl
Q2hhbmdlVHlwZVNlbGVjdGlvbkV4dGVuZCwgQVhUZXh0U2VsZWN0aW9uIHsgQVhUZXh0U2VsZWN0
aW9uRGlyZWN0aW9uRGlzY29udGlndW91cywgQVhUZXh0U2VsZWN0aW9uR3JhbnVsYXJpdHlBbGwg
fSk7CisgICAgICAgIEFYVGV4dFN0YXRlQ2hhbmdlSW50ZW50IGludGVudChBWFRleHRTdGF0ZUNo
YW5nZVR5cGVTZWxlY3Rpb25FeHRlbmQsIEFYVGV4dFNlbGVjdGlvbiB7IEFYVGV4dFNlbGVjdGlv
bkRpcmVjdGlvbkRpc2NvbnRpZ3VvdXMsIEFYVGV4dFNlbGVjdGlvbkdyYW51bGFyaXR5QWxsLCBm
YWxzZSB9KTsKICAgICAgICAgc2V0U2VsZWN0aW9uKG5ld1NlbGVjdGlvbiwgZGVmYXVsdFNldFNl
bGVjdGlvbk9wdGlvbnMoKSB8IEZpcmVTZWxlY3RFdmVudCwgaW50ZW50KTsKICAgICB9CiB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0ZyYW1lU2VsZWN0aW9uLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9lZGl0aW5nL0ZyYW1lU2VsZWN0aW9uLmgKaW5kZXggNzc4M2I2YS4uZWQ4Nzk2
ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9GcmFtZVNlbGVjdGlvbi5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRnJhbWVTZWxlY3Rpb24uaApAQCAtMTQyLDcgKzE0
Miw3IEBAIHB1YmxpYzoKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIG1vdmVUbyhjb25zdCBWaXNp
YmxlUG9zaXRpb24mLCBjb25zdCBWaXNpYmxlUG9zaXRpb24mLCBFVXNlclRyaWdnZXJlZCA9IE5v
dFVzZXJUcmlnZ2VyZWQpOwogICAgIHZvaWQgbW92ZVRvKGNvbnN0IFBvc2l0aW9uJiwgRUFmZmlu
aXR5LCBFVXNlclRyaWdnZXJlZCA9IE5vdFVzZXJUcmlnZ2VyZWQpOwogICAgIHZvaWQgbW92ZVRv
KGNvbnN0IFBvc2l0aW9uJiwgY29uc3QgUG9zaXRpb24mLCBFQWZmaW5pdHksIEVVc2VyVHJpZ2dl
cmVkID0gTm90VXNlclRyaWdnZXJlZCk7Ci0gICAgdm9pZCBtb3ZlV2l0aG91dFZhbGlkYXRpb25U
byhjb25zdCBQb3NpdGlvbiYsIGNvbnN0IFBvc2l0aW9uJiwgYm9vbCBzZWxlY3Rpb25IYXNEaXJl
Y3Rpb24sIGJvb2wgc2hvdWxkU2V0Rm9jdXMpOworICAgIHZvaWQgbW92ZVdpdGhvdXRWYWxpZGF0
aW9uVG8oY29uc3QgUG9zaXRpb24mLCBjb25zdCBQb3NpdGlvbiYsIGJvb2wgc2VsZWN0aW9uSGFz
RGlyZWN0aW9uLCBib29sIHNob3VsZFNldEZvY3VzLCBjb25zdCBBWFRleHRTdGF0ZUNoYW5nZUlu
dGVudCYgPSBBWFRleHRTdGF0ZUNoYW5nZUludGVudCgpKTsKIAogICAgIGNvbnN0IFZpc2libGVT
ZWxlY3Rpb24mIHNlbGVjdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fc2VsZWN0aW9uOyB9CiAgICAg
V0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRTZWxlY3Rpb24oY29uc3QgVmlzaWJsZVNlbGVjdGlvbiYs
IFNldFNlbGVjdGlvbk9wdGlvbnMgPSBkZWZhdWx0U2V0U2VsZWN0aW9uT3B0aW9ucygpLCBBWFRl
eHRTdGF0ZUNoYW5nZUludGVudCA9IEFYVGV4dFN0YXRlQ2hhbmdlSW50ZW50KCksIEN1cnNvckFs
aWduT25TY3JvbGwgPSBBbGlnbkN1cnNvck9uU2Nyb2xsSWZOZWVkZWQsIFRleHRHcmFudWxhcml0
eSA9IENoYXJhY3RlckdyYW51bGFyaXR5KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0
bWwvSFRNTElucHV0RWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxJbnB1dEVs
ZW1lbnQuY3BwCmluZGV4IDdlMDM3YTkuLjlhNGRkZWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2h0bWwvSFRNTElucHV0RWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9I
VE1MSW5wdXRFbGVtZW50LmNwcApAQCAtNDA3LDcgKzQwNyw3IEBAIHZvaWQgSFRNTElucHV0RWxl
bWVudDo6dXBkYXRlRm9jdXNBcHBlYXJhbmNlKGJvb2wgcmVzdG9yZVByZXZpb3VzU2VsZWN0aW9u
KQogewogICAgIGlmIChpc1RleHRGaWVsZCgpKSB7CiAgICAgICAgIGlmICghcmVzdG9yZVByZXZp
b3VzU2VsZWN0aW9uIHx8ICFoYXNDYWNoZWRTZWxlY3Rpb24oKSkKLSAgICAgICAgICAgIHNlbGVj
dCgpOworICAgICAgICAgICAgc2VsZWN0KEVsZW1lbnQ6OmRlZmF1bHRGb2N1c1RleHRTdGF0ZUNo
YW5nZUludGVudCgpKTsKICAgICAgICAgZWxzZQogICAgICAgICAgICAgcmVzdG9yZUNhY2hlZFNl
bGVjdGlvbigpOwogICAgICAgICBpZiAoZG9jdW1lbnQoKS5mcmFtZSgpKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVGV4dEFyZWFFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2h0bWwvSFRNTFRleHRBcmVhRWxlbWVudC5jcHAKaW5kZXggNGE5NjRmOC4uOTM5MjkxMSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVGV4dEFyZWFFbGVtZW50LmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxUZXh0QXJlYUVsZW1lbnQuY3BwCkBAIC0yNTcs
OSArMjU3LDkgQEAgdm9pZCBIVE1MVGV4dEFyZWFFbGVtZW50Ojp1cGRhdGVGb2N1c0FwcGVhcmFu
Y2UoYm9vbCByZXN0b3JlUHJldmlvdXNTZWxlY3Rpb24pCiAgICAgICAgIC8vIElmIHRoaXMgaXMg
dGhlIGZpcnN0IGZvY3VzLCBzZXQgYSBjYXJldCBhdCB0aGUgYmVnaW5uaW5nIG9mIHRoZSB0ZXh0
LiAgCiAgICAgICAgIC8vIFRoaXMgbWF0Y2hlcyBzb21lIGJyb3dzZXJzJyBiZWhhdmlvcjsgc2Vl
IGJ1ZyAxMTc0NiBDb21tZW50ICMxNS4KICAgICAgICAgLy8gaHR0cDovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MTE3NDYjYzE1Ci0gICAgICAgIHNldFNlbGVjdGlvblJhbmdlKDAs
IDApOworICAgICAgICBzZXRTZWxlY3Rpb25SYW5nZSgwLCAwLCBTZWxlY3Rpb25IYXNOb0RpcmVj
dGlvbiwgRWxlbWVudDo6ZGVmYXVsdEZvY3VzVGV4dFN0YXRlQ2hhbmdlSW50ZW50KCkpOwogICAg
IH0gZWxzZQotICAgICAgICByZXN0b3JlQ2FjaGVkU2VsZWN0aW9uKCk7CisgICAgICAgIHJlc3Rv
cmVDYWNoZWRTZWxlY3Rpb24oRWxlbWVudDo6ZGVmYXVsdEZvY3VzVGV4dFN0YXRlQ2hhbmdlSW50
ZW50KCkpOwogCiAgICAgaWYgKGRvY3VtZW50KCkuZnJhbWUoKSkKICAgICAgICAgZG9jdW1lbnQo
KS5mcmFtZSgpLT5zZWxlY3Rpb24oKS5yZXZlYWxTZWxlY3Rpb24oKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRleHRGb3JtQ29udHJvbEVsZW1lbnQuY3BwIGIvU291cmNl
L1dlYkNvcmUvaHRtbC9IVE1MVGV4dEZvcm1Db250cm9sRWxlbWVudC5jcHAKaW5kZXggMzY4NGUy
OC4uNzdjNzMxMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVGV4dEZvcm1D
b250cm9sRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVGV4dEZvcm1D
b250cm9sRWxlbWVudC5jcHAKQEAgLTE4NSwxNSArMTg1LDE1IEBAIHZvaWQgSFRNTFRleHRGb3Jt
Q29udHJvbEVsZW1lbnQ6OnNldFNlbGVjdGlvbkRpcmVjdGlvbihjb25zdCBTdHJpbmcmIGRpcmVj
dGlvbikKICAgICBzZXRTZWxlY3Rpb25SYW5nZShzZWxlY3Rpb25TdGFydCgpLCBzZWxlY3Rpb25F
bmQoKSwgZGlyZWN0aW9uKTsKIH0KIAotdm9pZCBIVE1MVGV4dEZvcm1Db250cm9sRWxlbWVudDo6
c2VsZWN0KCkKK3ZvaWQgSFRNTFRleHRGb3JtQ29udHJvbEVsZW1lbnQ6OnNlbGVjdChjb25zdCBB
WFRleHRTdGF0ZUNoYW5nZUludGVudCYgaW50ZW50KQogewogICAgIC8vIEZJWE1FOiBXZSBzaG91
bGQgYWJzdHJhY3QgdGhlIHNlbGVjdGlvbiBiZWhhdmlvciBpbnRvIGFuIEVkaXRpbmdCZWhhdmlv
ciBmdW5jdGlvbiBpbnN0ZWFkCiAgICAgLy8gb2YgaGFyZGNvZGluZyB0aGUgYmVoYXZpb3IgdXNp
bmcgYSBtYWNybyBkZWZpbmUuCiAjaWYgUExBVEZPUk0oSU9TKQogICAgIC8vIFdlIGRvbid0IHdh
bnQgdG8gc2VsZWN0IGFsbCB0aGUgdGV4dCBvbiBpT1MuIEluc3RlYWQgdXNlIHRoZSBzdGFuZGFy
ZCB0ZXh0ZmllbGQgYmVoYXZpb3Igb2YgZ29pbmcgdG8gdGhlIGVuZCBvZiB0aGUgbGluZS4KLSAg
ICBzZXRTZWxlY3Rpb25SYW5nZShzdGQ6Om51bWVyaWNfbGltaXRzPGludD46Om1heCgpLCBzdGQ6
Om51bWVyaWNfbGltaXRzPGludD46Om1heCgpLCBTZWxlY3Rpb25IYXNGb3J3YXJkRGlyZWN0aW9u
KTsKKyAgICBzZXRTZWxlY3Rpb25SYW5nZShzdGQ6Om51bWVyaWNfbGltaXRzPGludD46Om1heCgp
LCBzdGQ6Om51bWVyaWNfbGltaXRzPGludD46Om1heCgpLCBTZWxlY3Rpb25IYXNGb3J3YXJkRGly
ZWN0aW9uLCBpbnRlbnQpOwogI2Vsc2UKLSAgICBzZXRTZWxlY3Rpb25SYW5nZSgwLCBzdGQ6Om51
bWVyaWNfbGltaXRzPGludD46Om1heCgpLCBTZWxlY3Rpb25IYXNOb0RpcmVjdGlvbik7CisgICAg
c2V0U2VsZWN0aW9uUmFuZ2UoMCwgc3RkOjpudW1lcmljX2xpbWl0czxpbnQ+OjptYXgoKSwgU2Vs
ZWN0aW9uSGFzTm9EaXJlY3Rpb24sIGludGVudCk7CiAjZW5kaWYKIH0KIApAQCAtMjcyLDcgKzI3
Miw3IEBAIHZvaWQgSFRNTFRleHRGb3JtQ29udHJvbEVsZW1lbnQ6OnNldFJhbmdlVGV4dChjb25z
dCBTdHJpbmcmIHJlcGxhY2VtZW50LCB1bnNpZ25lCiAgICAgc2V0U2VsZWN0aW9uUmFuZ2UobmV3
U2VsZWN0aW9uU3RhcnQsIG5ld1NlbGVjdGlvbkVuZCwgU2VsZWN0aW9uSGFzTm9EaXJlY3Rpb24p
OwogfQogCi12b2lkIEhUTUxUZXh0Rm9ybUNvbnRyb2xFbGVtZW50OjpzZXRTZWxlY3Rpb25SYW5n
ZShpbnQgc3RhcnQsIGludCBlbmQsIGNvbnN0IFN0cmluZyYgZGlyZWN0aW9uU3RyaW5nKQordm9p
ZCBIVE1MVGV4dEZvcm1Db250cm9sRWxlbWVudDo6c2V0U2VsZWN0aW9uUmFuZ2UoaW50IHN0YXJ0
LCBpbnQgZW5kLCBjb25zdCBTdHJpbmcmIGRpcmVjdGlvblN0cmluZywgY29uc3QgQVhUZXh0U3Rh
dGVDaGFuZ2VJbnRlbnQmIGludGVudCkKIHsKICAgICBUZXh0RmllbGRTZWxlY3Rpb25EaXJlY3Rp
b24gZGlyZWN0aW9uID0gU2VsZWN0aW9uSGFzTm9EaXJlY3Rpb247CiAgICAgaWYgKGRpcmVjdGlv
blN0cmluZyA9PSAiZm9yd2FyZCIpCkBAIC0yODAsMTAgKzI4MCwxMCBAQCB2b2lkIEhUTUxUZXh0
Rm9ybUNvbnRyb2xFbGVtZW50OjpzZXRTZWxlY3Rpb25SYW5nZShpbnQgc3RhcnQsIGludCBlbmQs
IGNvbnN0IFN0cgogICAgIGVsc2UgaWYgKGRpcmVjdGlvblN0cmluZyA9PSAiYmFja3dhcmQiKQog
ICAgICAgICBkaXJlY3Rpb24gPSBTZWxlY3Rpb25IYXNCYWNrd2FyZERpcmVjdGlvbjsKIAotICAg
IHJldHVybiBzZXRTZWxlY3Rpb25SYW5nZShzdGFydCwgZW5kLCBkaXJlY3Rpb24pOworICAgIHJl
dHVybiBzZXRTZWxlY3Rpb25SYW5nZShzdGFydCwgZW5kLCBkaXJlY3Rpb24sIGludGVudCk7CiB9
CiAKLXZvaWQgSFRNTFRleHRGb3JtQ29udHJvbEVsZW1lbnQ6OnNldFNlbGVjdGlvblJhbmdlKGlu
dCBzdGFydCwgaW50IGVuZCwgVGV4dEZpZWxkU2VsZWN0aW9uRGlyZWN0aW9uIGRpcmVjdGlvbikK
K3ZvaWQgSFRNTFRleHRGb3JtQ29udHJvbEVsZW1lbnQ6OnNldFNlbGVjdGlvblJhbmdlKGludCBz
dGFydCwgaW50IGVuZCwgVGV4dEZpZWxkU2VsZWN0aW9uRGlyZWN0aW9uIGRpcmVjdGlvbiwgY29u
c3QgQVhUZXh0U3RhdGVDaGFuZ2VJbnRlbnQmIGludGVudCkKIHsKICAgICBpZiAoIWlzVGV4dEZv
cm1Db250cm9sKCkpCiAgICAgICAgIHJldHVybjsKQEAgLTMxNyw3ICszMTcsNyBAQCB2b2lkIEhU
TUxUZXh0Rm9ybUNvbnRyb2xFbGVtZW50OjpzZXRTZWxlY3Rpb25SYW5nZShpbnQgc3RhcnQsIGlu
dCBlbmQsIFRleHRGaWVsZAogICAgIH0KIAogICAgIGlmIChGcmFtZSogZnJhbWUgPSBkb2N1bWVu
dCgpLmZyYW1lKCkpCi0gICAgICAgIGZyYW1lLT5zZWxlY3Rpb24oKS5tb3ZlV2l0aG91dFZhbGlk
YXRpb25UbyhzdGFydFBvc2l0aW9uLCBlbmRQb3NpdGlvbiwgZGlyZWN0aW9uICE9IFNlbGVjdGlv
bkhhc05vRGlyZWN0aW9uLCAhaGFzRm9jdXMpOworICAgICAgICBmcmFtZS0+c2VsZWN0aW9uKCku
bW92ZVdpdGhvdXRWYWxpZGF0aW9uVG8oc3RhcnRQb3NpdGlvbiwgZW5kUG9zaXRpb24sIGRpcmVj
dGlvbiAhPSBTZWxlY3Rpb25IYXNOb0RpcmVjdGlvbiwgIWhhc0ZvY3VzLCBpbnRlbnQpOwogfQog
CiBpbnQgSFRNTFRleHRGb3JtQ29udHJvbEVsZW1lbnQ6OmluZGV4Rm9yVmlzaWJsZVBvc2l0aW9u
KGNvbnN0IFZpc2libGVQb3NpdGlvbiYgcG9zaXRpb24pIGNvbnN0CkBAIC00NjgsOSArNDY4LDkg
QEAgUGFzc1JlZlB0cjxSYW5nZT4gSFRNTFRleHRGb3JtQ29udHJvbEVsZW1lbnQ6OnNlbGVjdGlv
bigpIGNvbnN0CiAgICAgcmV0dXJuIFJhbmdlOjpjcmVhdGUoZG9jdW1lbnQoKSwgc3RhcnROb2Rl
LCBzdGFydCwgZW5kTm9kZSwgZW5kKTsKIH0KIAotdm9pZCBIVE1MVGV4dEZvcm1Db250cm9sRWxl
bWVudDo6cmVzdG9yZUNhY2hlZFNlbGVjdGlvbigpCit2b2lkIEhUTUxUZXh0Rm9ybUNvbnRyb2xF
bGVtZW50OjpyZXN0b3JlQ2FjaGVkU2VsZWN0aW9uKGNvbnN0IEFYVGV4dFN0YXRlQ2hhbmdlSW50
ZW50JiBpbnRlbnQpCiB7Ci0gICAgc2V0U2VsZWN0aW9uUmFuZ2UobV9jYWNoZWRTZWxlY3Rpb25T
dGFydCwgbV9jYWNoZWRTZWxlY3Rpb25FbmQsIGNhY2hlZFNlbGVjdGlvbkRpcmVjdGlvbigpKTsK
KyAgICBzZXRTZWxlY3Rpb25SYW5nZShtX2NhY2hlZFNlbGVjdGlvblN0YXJ0LCBtX2NhY2hlZFNl
bGVjdGlvbkVuZCwgY2FjaGVkU2VsZWN0aW9uRGlyZWN0aW9uKCksIGludGVudCk7CiB9CiAKIHZv
aWQgSFRNTFRleHRGb3JtQ29udHJvbEVsZW1lbnQ6OnNlbGVjdGlvbkNoYW5nZWQoYm9vbCBzaG91
bGRGaXJlU2VsZWN0RXZlbnQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxU
ZXh0Rm9ybUNvbnRyb2xFbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxUZXh0Rm9y
bUNvbnRyb2xFbGVtZW50LmgKaW5kZXggMmNlYTFiZS4uNTU1MTE2MCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvaHRtbC9IVE1MVGV4dEZvcm1Db250cm9sRWxlbWVudC5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvSFRNTFRleHRGb3JtQ29udHJvbEVsZW1lbnQuaApAQCAtNjQsMTEgKzY0
LDExIEBAIHB1YmxpYzoKICAgICB2b2lkIHNldFNlbGVjdGlvblN0YXJ0KGludCk7CiAgICAgdm9p
ZCBzZXRTZWxlY3Rpb25FbmQoaW50KTsKICAgICB2b2lkIHNldFNlbGVjdGlvbkRpcmVjdGlvbihj
b25zdCBTdHJpbmcmKTsKLSAgICB2b2lkIHNlbGVjdCgpOworICAgIHZvaWQgc2VsZWN0KGNvbnN0
IEFYVGV4dFN0YXRlQ2hhbmdlSW50ZW50JiA9IEFYVGV4dFN0YXRlQ2hhbmdlSW50ZW50KCkpOwog
ICAgIHZpcnR1YWwgdm9pZCBzZXRSYW5nZVRleHQoY29uc3QgU3RyaW5nJiByZXBsYWNlbWVudCwg
RXhjZXB0aW9uQ29kZSYpOwogICAgIHZpcnR1YWwgdm9pZCBzZXRSYW5nZVRleHQoY29uc3QgU3Ry
aW5nJiByZXBsYWNlbWVudCwgdW5zaWduZWQgc3RhcnQsIHVuc2lnbmVkIGVuZCwgY29uc3QgU3Ry
aW5nJiBzZWxlY3Rpb25Nb2RlLCBFeGNlcHRpb25Db2RlJik7Ci0gICAgdm9pZCBzZXRTZWxlY3Rp
b25SYW5nZShpbnQgc3RhcnQsIGludCBlbmQsIGNvbnN0IFN0cmluZyYgZGlyZWN0aW9uKTsKLSAg
ICB2b2lkIHNldFNlbGVjdGlvblJhbmdlKGludCBzdGFydCwgaW50IGVuZCwgVGV4dEZpZWxkU2Vs
ZWN0aW9uRGlyZWN0aW9uID0gU2VsZWN0aW9uSGFzTm9EaXJlY3Rpb24pOworICAgIHZvaWQgc2V0
U2VsZWN0aW9uUmFuZ2UoaW50IHN0YXJ0LCBpbnQgZW5kLCBjb25zdCBTdHJpbmcmIGRpcmVjdGlv
biwgY29uc3QgQVhUZXh0U3RhdGVDaGFuZ2VJbnRlbnQmID0gQVhUZXh0U3RhdGVDaGFuZ2VJbnRl
bnQoKSk7CisgICAgdm9pZCBzZXRTZWxlY3Rpb25SYW5nZShpbnQgc3RhcnQsIGludCBlbmQsIFRl
eHRGaWVsZFNlbGVjdGlvbkRpcmVjdGlvbiA9IFNlbGVjdGlvbkhhc05vRGlyZWN0aW9uLCBjb25z
dCBBWFRleHRTdGF0ZUNoYW5nZUludGVudCYgPSBBWFRleHRTdGF0ZUNoYW5nZUludGVudCgpKTsK
ICAgICBQYXNzUmVmUHRyPFJhbmdlPiBzZWxlY3Rpb24oKSBjb25zdDsKICAgICBTdHJpbmcgc2Vs
ZWN0ZWRUZXh0KCkgY29uc3Q7CiAKQEAgLTExMCw3ICsxMTAsNyBAQCBwcm90ZWN0ZWQ6CiAgICAg
ICAgIG1fY2FjaGVkU2VsZWN0aW9uRGlyZWN0aW9uID0gZGlyZWN0aW9uOwogICAgIH0KIAotICAg
IHZvaWQgcmVzdG9yZUNhY2hlZFNlbGVjdGlvbigpOworICAgIHZvaWQgcmVzdG9yZUNhY2hlZFNl
bGVjdGlvbihjb25zdCBBWFRleHRTdGF0ZUNoYW5nZUludGVudCYgPSBBWFRleHRTdGF0ZUNoYW5n
ZUludGVudCgpKTsKICAgICBib29sIGhhc0NhY2hlZFNlbGVjdGlvbigpIGNvbnN0IHsgcmV0dXJu
IG1fY2FjaGVkU2VsZWN0aW9uU3RhcnQgPj0gMDsgfQogCiAgICAgdmlydHVhbCB2b2lkIHN1YnRy
ZWVIYXNDaGFuZ2VkKCkgPSAwOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9FdmVu
dEhhbmRsZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9FdmVudEhhbmRsZXIuY3BwCmluZGV4
IDIxNmFiYzcuLjY1NGE0ZmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRXZlbnRI
YW5kbGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0V2ZW50SGFuZGxlci5jcHAKQEAg
LTMyMzgsNyArMzIzOCw3IEBAIHN0YXRpYyB2b2lkIHNldEluaXRpYWxLZXlib2FyZFNlbGVjdGlv
bihGcmFtZSYgZnJhbWUsIFNlbGVjdGlvbkRpcmVjdGlvbiBkaXJlY3RpCiAgICAgICAgIGJyZWFr
OwogICAgIH0KIAotICAgIEFYVGV4dFN0YXRlQ2hhbmdlSW50ZW50IGludGVudChBWFRleHRTdGF0
ZUNoYW5nZVR5cGVTZWxlY3Rpb25Nb3ZlLCBBWFRleHRTZWxlY3Rpb24geyBBWFRleHRTZWxlY3Rp
b25EaXJlY3Rpb25EaXNjb250aWd1b3VzLCBBWFRleHRTZWxlY3Rpb25HcmFudWxhcml0eVVua25v
d24gfSk7CisgICAgQVhUZXh0U3RhdGVDaGFuZ2VJbnRlbnQgaW50ZW50KEFYVGV4dFN0YXRlQ2hh
bmdlVHlwZVNlbGVjdGlvbk1vdmUsIEFYVGV4dFNlbGVjdGlvbiB7IEFYVGV4dFNlbGVjdGlvbkRp
cmVjdGlvbkRpc2NvbnRpZ3VvdXMsIEFYVGV4dFNlbGVjdGlvbkdyYW51bGFyaXR5VW5rbm93biwg
ZmFsc2UgfSk7CiAgICAgc2VsZWN0aW9uLnNldFNlbGVjdGlvbih2aXNpYmxlUG9zaXRpb24sIEZy
YW1lU2VsZWN0aW9uOjpkZWZhdWx0U2V0U2VsZWN0aW9uT3B0aW9ucyhVc2VyVHJpZ2dlcmVkKSwg
aW50ZW50KTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9Gb2N1c0NvbnRy
b2xsZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9Gb2N1c0NvbnRyb2xsZXIuY3BwCmluZGV4
IDU4OGJhNGEuLjUwMzIzZGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRm9jdXND
b250cm9sbGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZvY3VzQ29udHJvbGxlci5j
cHAKQEAgLTM0MSw3ICszNDEsNyBAQCBib29sIEZvY3VzQ29udHJvbGxlcjo6YWR2YW5jZUZvY3Vz
SW5Eb2N1bWVudE9yZGVyKEZvY3VzRGlyZWN0aW9uIGRpcmVjdGlvbiwgS2V5YgogICAgICAgICBQ
b3NpdGlvbiBwb3NpdGlvbiA9IGZpcnN0UG9zaXRpb25Jbk9yQmVmb3JlTm9kZShlbGVtZW50Lmdl
dCgpKTsKICAgICAgICAgVmlzaWJsZVNlbGVjdGlvbiBuZXdTZWxlY3Rpb24ocG9zaXRpb24sIHBv
c2l0aW9uLCBET1dOU1RSRUFNKTsKICAgICAgICAgaWYgKGZyYW1lLnNlbGVjdGlvbigpLnNob3Vs
ZENoYW5nZVNlbGVjdGlvbihuZXdTZWxlY3Rpb24pKSB7Ci0gICAgICAgICAgICBBWFRleHRTdGF0
ZUNoYW5nZUludGVudCBpbnRlbnQoQVhUZXh0U3RhdGVDaGFuZ2VUeXBlU2VsZWN0aW9uTW92ZSwg
QVhUZXh0U2VsZWN0aW9uIHsgQVhUZXh0U2VsZWN0aW9uRGlyZWN0aW9uRGlzY29udGlndW91cywg
QVhUZXh0U2VsZWN0aW9uR3JhbnVsYXJpdHlVbmtub3duIH0pOworICAgICAgICAgICAgQVhUZXh0
U3RhdGVDaGFuZ2VJbnRlbnQgaW50ZW50KEFYVGV4dFN0YXRlQ2hhbmdlVHlwZVNlbGVjdGlvbk1v
dmUsIEFYVGV4dFNlbGVjdGlvbiB7IEFYVGV4dFNlbGVjdGlvbkRpcmVjdGlvbkRpc2NvbnRpZ3Vv
dXMsIEFYVGV4dFNlbGVjdGlvbkdyYW51bGFyaXR5VW5rbm93biwgdHJ1ZSB9KTsKICAgICAgICAg
ICAgIGZyYW1lLnNlbGVjdGlvbigpLnNldFNlbGVjdGlvbihuZXdTZWxlY3Rpb24sIEZyYW1lU2Vs
ZWN0aW9uOjpkZWZhdWx0U2V0U2VsZWN0aW9uT3B0aW9ucyhVc2VyVHJpZ2dlcmVkKSwgaW50ZW50
KTsKICAgICAgICAgfQogICAgIH0K
</data>

          </attachment>
      

    </bug>

</bugzilla>