<?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>139715</bug_id>
          
          <creation_ts>2014-12-16 17:55:37 -0800</creation_ts>
          <short_desc>Implement and adopt two new TextIndicator presentation animations</short_desc>
          <delta_ts>2014-12-16 19:02:31 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Tim Horton">thorton</reporter>
          <assigned_to name="Tim Horton">thorton</assigned_to>
          <cc>andersca</cc>
    
    <cc>bdakin</cc>
    
    <cc>commit-queue</cc>
    
    <cc>eric.carlson</cc>
    
    <cc>glenn</cc>
    
    <cc>jer.noble</cc>
    
    <cc>philipj</cc>
    
    <cc>sergio</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1056206</commentid>
    <comment_count>0</comment_count>
    <who name="Tim Horton">thorton</who>
    <bug_when>2014-12-16 17:55:37 -0800</bug_when>
    <thetext>Implement and adopt two new TextIndicator presentation animations</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1056207</commentid>
    <comment_count>1</comment_count>
      <attachid>243413</attachid>
    <who name="Tim Horton">thorton</who>
    <bug_when>2014-12-16 17:57:28 -0800</bug_when>
    <thetext>Created attachment 243413
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1056225</commentid>
    <comment_count>2</comment_count>
      <attachid>243420</attachid>
    <who name="Tim Horton">thorton</who>
    <bug_when>2014-12-16 18:34:45 -0800</bug_when>
    <thetext>Created attachment 243420
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1056226</commentid>
    <comment_count>3</comment_count>
      <attachid>243413</attachid>
    <who name="Anders Carlsson">andersca</who>
    <bug_when>2014-12-16 18:35:36 -0800</bug_when>
    <thetext>Comment on attachment 243413
Patch

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

&gt; Source/WebCore/page/mac/TextIndicatorWindow.mm:246
&gt; +    return _textIndicator-&gt;presentationTransition() == TextIndicatorPresentationTransition::BounceAndCrossfade || _textIndicator-&gt;presentationTransition() == TextIndicatorPresentationTransition::Bounce;
&gt; +}

Please use a switch statement here instead.

&gt; Source/WebCore/page/mac/TextIndicatorWindow.mm:251
&gt; +    return (_textIndicator-&gt;presentationTransition() == TextIndicatorPresentationTransition::BounceAndCrossfade || _textIndicator-&gt;presentationTransition() == TextIndicatorPresentationTransition::Crossfade) &amp;&amp; _textIndicator-&gt;contentImageWithHighlight();
&gt; +}

Please use a switch statement here instead.

&gt; Source/WebCore/page/mac/TextIndicatorWindow.mm:256
&gt; +    return _textIndicator-&gt;presentationTransition() == TextIndicatorPresentationTransition::FadeIn;
&gt; +}

Please use a switch statement here instead.

&gt; Source/WebCore/page/mac/TextIndicatorWindow.mm:372
&gt; +    if (m_textIndicator-&gt;presentationTransition() == TextIndicatorPresentationTransition::Crossfade || m_textIndicator-&gt;presentationTransition() == TextIndicatorPresentationTransition::FadeIn)
&gt; +        startFadeOut();
&gt; +    else
&gt; +        closeWindow();
&gt; +}

Switch statement?

&gt; Source/WebCore/page/mac/TextIndicatorWindow.mm:412
&gt;      if (m_textIndicator-&gt;presentationTransition() != TextIndicatorPresentationTransition::None) {

Single-line if statement.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1056239</commentid>
    <comment_count>4</comment_count>
    <who name="Tim Horton">thorton</who>
    <bug_when>2014-12-16 19:02:31 -0800</bug_when>
    <thetext>http://trac.webkit.org/changeset/177427</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>243413</attachid>
            <date>2014-12-16 17:57:28 -0800</date>
            <delta_ts>2014-12-16 18:39:36 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-139715-20141216175817.patch</filename>
            <type>text/plain</type>
            <size>58040</size>
            <attacher name="Tim Horton">thorton</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTc3NDA4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMDhlMTliMjQxZGU4NjVj
OTdkMmM1YjE2ZmM2NTM2NDFiMmYxYjU0My4uYThiNWM2NTAwNDlmNDEyZmI2MjQ3YjY1MDgyMjEy
ZjE4YjNjZmExMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDYzIEBACisyMDE0LTEyLTE2ICBUaW1v
dGh5IEhvcnRvbiAgPHRpbW90aHlfaG9ydG9uQGFwcGxlLmNvbT4KKworICAgICAgICBJbXBsZW1l
bnQgYW5kIGFkb3B0IHR3byBuZXcgVGV4dEluZGljYXRvciBwcmVzZW50YXRpb24gYW5pbWF0aW9u
cworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTM5NzE1
CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS8xOTIzNzk0NT4KKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFdlYkNvcmUuZXhwLmluOgorICAgICAgICBB
ZGp1c3Qgb25lIHN5bWJvbCBhbmQgZXhwb3J0IGFub3RoZXIuCisKKyAgICAgICAgKiBwYWdlL1Rl
eHRJbmRpY2F0b3IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6VGV4dEluZGljYXRvcjo6Y3JlYXRl
V2l0aFNlbGVjdGlvbkluRnJhbWUpOgorICAgICAgICBUYWtlIGEgYmx1ZS1oaWdobGlnaHQgc25h
cHNob3QgaWYgd2UncmUgZG9pbmcgYSBjcm9zc2ZhZGUgd2l0aG91dCBhIGJvdW5jZS4KKworICAg
ICAgICAqIHBhZ2UvVGV4dEluZGljYXRvci5oOgorICAgICAgICAoV2ViQ29yZTo6VGV4dEluZGlj
YXRvcjo6cHJlc2VudGF0aW9uVHJhbnNpdGlvbik6CisgICAgICAgIEFkZCBGYWRlSW4gYW5kIENy
b3NzZmFkZSB0cmFuc2l0aW9uIHR5cGVzLgorCisgICAgICAgICogcGFnZS9tYWMvVGV4dEluZGlj
YXRvcldpbmRvdy5oOgorICAgICAgICAqIHBhZ2UvbWFjL1RleHRJbmRpY2F0b3JXaW5kb3cubW06
CisgICAgICAgICgtW1dlYlRleHRJbmRpY2F0b3JWaWV3IGluaXRXaXRoRnJhbWU6dGV4dEluZGlj
YXRvcjptYXJnaW46XSk6CisgICAgICAgIChjcmVhdGVCb3VuY2VBbmltYXRpb24pOgorICAgICAg
ICAoY3JlYXRlQ29udGVudENyb3NzZmFkZUFuaW1hdGlvbik6CisgICAgICAgIChjcmVhdGVTaGFk
b3dGYWRlQW5pbWF0aW9uKToKKyAgICAgICAgKGNyZWF0ZUZhZGVJbkFuaW1hdGlvbik6CisgICAg
ICAgICgtW1dlYlRleHRJbmRpY2F0b3JWaWV3IF90ZXh0SW5kaWNhdG9yV2FudHNCb3VuY2VdKToK
KyAgICAgICAgKC1bV2ViVGV4dEluZGljYXRvclZpZXcgX3RleHRJbmRpY2F0b3JXYW50c0NvbnRl
bnRDcm9zc2ZhZGVdKToKKyAgICAgICAgKC1bV2ViVGV4dEluZGljYXRvclZpZXcgX3RleHRJbmRp
Y2F0b3JXYW50c0ZhZGVJbl0pOgorICAgICAgICBGYWN0b3Igb3V0IHRoZSBhbmltYXRpb24gY29u
c3RydWN0aW9uLgorCisgICAgICAgICgtW1dlYlRleHRJbmRpY2F0b3JWaWV3IF9hbmltYXRpb25E
dXJhdGlvbl0pOgorICAgICAgICBGYWN0b3Igb3V0IHRoZSBkdXJhdGlvbiBjb21wdXRhdGlvbi4K
KworICAgICAgICAoLVtXZWJUZXh0SW5kaWNhdG9yVmlldyBwcmVzZW50XSk6CisgICAgICAgICgt
W1dlYlRleHRJbmRpY2F0b3JWaWV3IHNldEFuaW1hdGlvblByb2dyZXNzOl0pOgorICAgICAgICBJ
bXBsZW1lbnQgRmFkZUluIGFuZCBDcm9zc2ZhZGUgdHJhbnNpdGlvbnMuCisgICAgICAgIFRoZXkg
Y2FuIGJlIGRyaXZlbiBleHRlcm5hbGx5IGFuZCB0aGVuIGNvbnRpbnVlIGZyb20gd2hlcmUgdGhl
eQorICAgICAgICBsZWZ0IG9mZiB3aGVuIHRoZSBwcm9ncmVzcyByZWFjaGVzIDEwMCUuCisgICAg
ICAgIEZhZGVJbiBjaGFuZ2VzIHRoZSBvcGFjaXR5IG9mIHRoZSB3aG9sZSBidWJibGUsIENyb3Nz
ZmFkZQorICAgICAgICBjcm9zc2ZhZGVzIHRoZSBjb250ZW50IChmcm9tIGJsdWUgdG8geWVsbG93
KS4KKworICAgICAgICAoV2ViQ29yZTo6VGV4dEluZGljYXRvcldpbmRvdzo6VGV4dEluZGljYXRv
cldpbmRvdyk6CisgICAgICAgIChXZWJDb3JlOjpUZXh0SW5kaWNhdG9yV2luZG93Ojp+VGV4dElu
ZGljYXRvcldpbmRvdyk6CisgICAgICAgIERvbid0IGltbWVkaWF0ZWx5IGRlc3Ryb3kgdGhlIHdp
bmRvdyBpZiBpdCBpcyBjcm9zc2ZhZGVzIG9yIGZhZGVzIGluLgorICAgICAgICBGYWRlIGl0IG91
dCwgaW5zdGVhZC4KKworICAgICAgICAoV2ViQ29yZTo6VGV4dEluZGljYXRvcldpbmRvdzo6c2V0
QW5pbWF0aW9uUHJvZ3Jlc3MpOgorICAgICAgICBEcml2ZSB0aGUgcGF1c2VkIGFuaW1hdGlvbiBt
YW51YWxseS4gSWYgcHJvZ3Jlc3MgaGl0cyAxMDAlLAorICAgICAgICBzdGFydCBydW5uaW5nIGl0
IGF1dG9tYXRpY2FsbHkgZnJvbSB3aGVyZSBpdCBsYXN0IGxlZnQgb2ZmLgorCisgICAgICAgIChX
ZWJDb3JlOjpUZXh0SW5kaWNhdG9yV2luZG93OjpzZXRUZXh0SW5kaWNhdG9yKToKKyAgICAgICAg
KFdlYkNvcmU6OlRleHRJbmRpY2F0b3JXaW5kb3c6OnN0YXJ0RmFkZU91dCk6CisgICAgICAgICgt
W1dlYlRleHRJbmRpY2F0b3JWaWV3IHByZXNlbnRXaXRoQ29tcGxldGlvbkhhbmRsZXI6XSk6IERl
bGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpUZXh0SW5kaWNhdG9yV2luZG93OjpzdGFydEZhZGVP
dXRUaW1lckZpcmVkKTogRGVsZXRlZC4KKyAgICAgICAgUmVtb3ZlIHRoZSBjb21wbGV0aW9uIGJs
b2NrIGZyb20gLXByZXNlbnQuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9zcGkvbWFjL05TSW1tZWRp
YXRlQWN0aW9uR2VzdHVyZVJlY29nbml6ZXJTUEkuaDoKKyAgICAgICAgQWRkIHNvbWUgU1BJLgor
CiAyMDE0LTEyLTE2ICBNeWxlcyBDLiBNYXhmaWVsZCAgPG1tYXhmaWVsZEBhcHBsZS5jb20+CiAK
ICAgICAgICAgW2lPU10gQ2hlcm9rZWUgbGFuZ3VhZ2UgaXMgZHJhd24gYXMgYm94ZXMKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvbWFjL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvbWFjL0No
YW5nZUxvZwppbmRleCBlOWEyYzQ5MTljNDRkZWY3NjRiMjQ2ZDEwYzU5YWY3ZDM1YzI5MDdhLi5j
NWQ4MTE4ZGY3NDlhZmRiNjVhY2E2NzA0NTE0ZGU0Mjg1MzY2NGU2IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L21hYy9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9tYWMvQ2hhbmdlTG9n
CkBAIC0xLDUgKzEsNTEgQEAKIDIwMTQtMTItMTYgIFRpbW90aHkgSG9ydG9uICA8dGltb3RoeV9o
b3J0b25AYXBwbGUuY29tPgogCisgICAgICAgIEltcGxlbWVudCBhbmQgYWRvcHQgdHdvIG5ldyBU
ZXh0SW5kaWNhdG9yIHByZXNlbnRhdGlvbiBhbmltYXRpb25zCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMzk3MTUKKyAgICAgICAgPHJkYXI6Ly9wcm9i
bGVtLzE5MjM3OTQ1PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgICogV2ViVmlldy9XZWJBY3Rpb25NZW51Q29udHJvbGxlci5tbToKKyAgICAgICAgKC1b
V2ViQWN0aW9uTWVudUNvbnRyb2xsZXIgX3Nob3dUZXh0SW5kaWNhdG9yXSk6CisgICAgICAgICog
V2ViVmlldy9XZWJIVE1MVmlldy5tbToKKyAgICAgICAgKC1bV2ViSFRNTFZpZXcgcXVpY2tMb29r
V2l0aEV2ZW50Ol0pOgorICAgICAgICBSZW1vdmUgdGhlIGNvbXBsZXRpb25IYW5kbGVyIGZyb20g
dGV4dCBpbmRpY2F0b3IgcHJlc2VudGF0aW9uLgorCisgICAgICAgICogV2ViVmlldy9XZWJJbW1l
ZGlhdGVBY3Rpb25Db250cm9sbGVyLm1tOgorICAgICAgICAoLVtXZWJJbW1lZGlhdGVBY3Rpb25D
b250cm9sbGVyIGltbWVkaWF0ZUFjdGlvblJlY29nbml6ZXJXaWxsUHJlcGFyZTpdKToKKyAgICAg
ICAgKC1bV2ViSW1tZWRpYXRlQWN0aW9uQ29udHJvbGxlciBpbW1lZGlhdGVBY3Rpb25SZWNvZ25p
emVyRGlkVXBkYXRlQW5pbWF0aW9uOl0pOgorICAgICAgICAoLVtXZWJJbW1lZGlhdGVBY3Rpb25D
b250cm9sbGVyIGltbWVkaWF0ZUFjdGlvblJlY29nbml6ZXJEaWRDYW5jZWxBbmltYXRpb246XSk6
CisgICAgICAgICgtW1dlYkltbWVkaWF0ZUFjdGlvbkNvbnRyb2xsZXIgaW1tZWRpYXRlQWN0aW9u
UmVjb2duaXplckRpZENvbXBsZXRlQW5pbWF0aW9uOl0pOgorICAgICAgICAoLVtXZWJJbW1lZGlh
dGVBY3Rpb25Db250cm9sbGVyIF9tZW51SXRlbUZvckRhdGFEZXRlY3RlZFRleHRdKToKKyAgICAg
ICAgKC1bV2ViSW1tZWRpYXRlQWN0aW9uQ29udHJvbGxlciBfYW5pbWF0aW9uQ29udHJvbGxlckZv
clRleHRdKToKKyAgICAgICAgKC1bV2ViSW1tZWRpYXRlQWN0aW9uQ29udHJvbGxlciBfc2hvd1Rl
eHRJbmRpY2F0b3JdKToKKyAgICAgICAgRm9yd2FyZCBpbW1lZGlhdGUgYWN0aW9uIGdlc3R1cmUg
cmVjb2duaXplciBhbmltYXRpb24gcHJvZ3Jlc3MKKyAgICAgICAgdG8gVGV4dEluZGljYXRvci4g
Rm9yY2UgdXMgdG8ga2VlcCB0aGUgc2VsZWN0aW9uIHdoZW4gaW1tZWRpYXRlCisgICAgICAgIGFj
dGlvbiBwb3BvdmVycyBzdGVhbCBmaXJzdCByZXNwb25kZXIgc3RhdHVzIGZyb20gdGhlIFdlYlZp
ZXcuCisgICAgICAgIElmIHRoZSBMb29rdXAgcmFuZ2UgaXMgZXF1YWwgdG8gdGhlIHNlbGVjdGlv
biByYW5nZSwgdXNlIGEgQ3Jvc3NmYWRlCisgICAgICAgIGFuaW1hdGlvbjsgb3RoZXJ3aXNlLCB1
c2UgYSBGYWRlSW4gYW5pbWF0aW9uLgorCisgICAgICAgICogV2ViVmlldy9XZWJWaWV3Lm1tOgor
ICAgICAgICAoLVtXZWJWaWV3IF9zZXRNYWludGFpbnNJbmFjdGl2ZVNlbGVjdGlvbjpdKToKKyAg
ICAgICAgKC1bV2ViVmlldyBtYWludGFpbnNJbmFjdGl2ZVNlbGVjdGlvbl0pOgorICAgICAgICAo
LVtXZWJWaWV3IF9hbmltYXRpb25Db250cm9sbGVyRm9yRGljdGlvbmFyeUxvb2t1cFBvcHVwSW5m
bzpdKToKKyAgICAgICAgKC1bV2ViVmlldyBfc2V0VGV4dEluZGljYXRvcjpmYWRlT3V0Ol0pOgor
ICAgICAgICAoLVtXZWJWaWV3IF9jbGVhclRleHRJbmRpY2F0b3JdKToKKyAgICAgICAgKC1bV2Vi
VmlldyBfc2V0VGV4dEluZGljYXRvckFuaW1hdGlvblByb2dyZXNzOl0pOgorICAgICAgICAoLVtX
ZWJWaWV3IF9zaG93RGljdGlvbmFyeUxvb2t1cFBvcHVwOl0pOgorICAgICAgICAoLVtXZWJWaWV3
IF9kaWN0aW9uYXJ5TG9va3VwUG9wb3ZlcldpbGxDbG9zZTpdKToKKyAgICAgICAgKC1bV2ViVmll
dyBfc2V0VGV4dEluZGljYXRvcjpmYWRlT3V0OmFuaW1hdGlvbkNvbXBsZXRpb25IYW5kbGVyOl0p
OgorICAgICAgICBSZW1vdmUgdGhlIGNvbXBsZXRpb25IYW5kbGVyIGZyb20gdGV4dCBpbmRpY2F0
b3IgcHJlc2VudGF0aW9uLgorICAgICAgICBBZGQgYSBfc2V0TWFpbnRhaW5zSW5hY3RpdmVTZWxl
Y3Rpb24sIHdoaWNoIGFsbG93cyBXZWJLaXQgaW50ZXJuYWxzCisgICAgICAgIHRvIGNoYW5nZSB0
aGUgcmV0dXJuIHZhbHVlIG9mIC1tYWludGFpbnNJbmFjdGl2ZVNlbGVjdGlvbiwgYWxsb3dpbmcK
KyAgICAgICAgdXMgdG8ga2VlcCB0aGUgc2VsZWN0aW9uIGFsaXZlIHdoZW4gdGhlIFdlYlZpZXcg
bG9zZXMgZmlyc3QgcmVzcG9uZGVyIHN0YXR1cy4KKworICAgICAgICAqIFdlYlZpZXcvV2ViVmll
d0RhdGEuaDoKKyAgICAgICAgKiBXZWJWaWV3L1dlYlZpZXdJbnRlcm5hbC5oOgorCisyMDE0LTEy
LTE2ICBUaW1vdGh5IEhvcnRvbiAgPHRpbW90aHlfaG9ydG9uQGFwcGxlLmNvbT4KKwogICAgICAg
ICBJbW1lZGlhdGUgYWN0aW9uIHBvcG92ZXJzIGNhbiBnZXQgc3R1Y2sgb3BlbgogICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTM5NzA5CiAgICAgICAgIDxy
ZGFyOi8vcHJvYmxlbS8xOTI3MDI3OT4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwppbmRleCAwMmY4MzNjZmFiNGI2ZmM0MTg5
NTcyMWFjODBiN2Y2ZDMyZTgzYjEwLi42ZjU1MGZkMDI1OWRhZTNlNDkxZGRlYjBlYzk3MjY5ZWJj
ZGQyNWI0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKKysrIGIvU291cmNl
L1dlYktpdDIvQ2hhbmdlTG9nCkBAIC0xLDUgKzEsNjIgQEAKIDIwMTQtMTItMTYgIFRpbW90aHkg
SG9ydG9uICA8dGltb3RoeV9ob3J0b25AYXBwbGUuY29tPgogCisgICAgICAgIEltcGxlbWVudCBh
bmQgYWRvcHQgdHdvIG5ldyBUZXh0SW5kaWNhdG9yIHByZXNlbnRhdGlvbiBhbmltYXRpb25zCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMzk3MTUKKyAg
ICAgICAgPHJkYXI6Ly9wcm9ibGVtLzE5MjM3OTQ1PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9tYWMvV0tWaWV3Lm1tOgor
ICAgICAgICAoLVtXS1ZpZXcgX3NldFRleHRJbmRpY2F0b3I6ZmFkZU91dDpdKToKKyAgICAgICAg
KC1bV0tWaWV3IF9zZXRUZXh0SW5kaWNhdG9yQW5pbWF0aW9uUHJvZ3Jlc3M6XSk6CisgICAgICAg
ICgtW1dLVmlldyBfc2V0VGV4dEluZGljYXRvcjpmYWRlT3V0OmFuaW1hdGlvbkNvbXBsZXRpb25I
YW5kbGVyOl0pOiBEZWxldGVkLgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvbWFjL1dLVmlld0lu
dGVybmFsLmg6CisgICAgICAgICogVUlQcm9jZXNzL1BhZ2VDbGllbnQuaDoKKyAgICAgICAgKiBV
SVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5
OjpXZWJQYWdlUHJveHkpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OnNldFRleHRJ
bmRpY2F0b3JBbmltYXRpb25Qcm9ncmVzcyk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94
eTo6cGVyZm9ybUFjdGlvbk1lbnVIaXRUZXN0QXRMb2NhdGlvbik6CisgICAgICAgICogVUlQcm9j
ZXNzL1dlYlBhZ2VQcm94eS5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9tYWMvUGFnZUNsaWVudElt
cGwuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvbWFjL1BhZ2VDbGllbnRJbXBsLm1tOgorICAgICAg
ICAoV2ViS2l0OjpQYWdlQ2xpZW50SW1wbDo6c2V0VGV4dEluZGljYXRvckFuaW1hdGlvblByb2dy
ZXNzKToKKyAgICAgICAgKFdlYktpdDo6UGFnZUNsaWVudEltcGw6OmRpZFBlcmZvcm1EaWN0aW9u
YXJ5TG9va3VwKToKKyAgICAgICAgUmVtb3ZlIHRoZSBjb21wbGV0aW9uIGhhbmRsZXIgYmxvY2sg
YXJndW1lbnQgZnJvbSBUZXh0SW5kaWNhdG9yCisgICAgICAgIGluc3RhbGxhdGlvbi4KKyAgICAg
ICAgUGx1bWIgYW5pbWF0aW9uIHByb2dyZXNzIHRocm91Z2ggUGFnZUNsaWVudCB0byBUZXh0SW5k
aWNhdG9yV2luZG93LgorCisgICAgICAgICogVUlQcm9jZXNzL21hYy9XS0FjdGlvbk1lbnVDb250
cm9sbGVyLm1tOgorICAgICAgICAoLVtXS0FjdGlvbk1lbnVDb250cm9sbGVyIHByZXBhcmVGb3JN
ZW51OndpdGhFdmVudDpdKToKKyAgICAgICAgKC1bV0tBY3Rpb25NZW51Q29udHJvbGxlciBfZGVm
YXVsdE1lbnVJdGVtc0ZvckRhdGFEZXRlY3RlZFRleHRdKToKKyAgICAgICAgKiBVSVByb2Nlc3Mv
bWFjL1dLSW1tZWRpYXRlQWN0aW9uQ29udHJvbGxlci5tbToKKyAgICAgICAgKC1bV0tJbW1lZGlh
dGVBY3Rpb25Db250cm9sbGVyIF9jbGVhckltbWVkaWF0ZUFjdGlvblN0YXRlXSk6CisgICAgICAg
ICgtW1dLSW1tZWRpYXRlQWN0aW9uQ29udHJvbGxlciBpbW1lZGlhdGVBY3Rpb25SZWNvZ25pemVy
V2lsbFByZXBhcmU6XSk6CisgICAgICAgICgtW1dLSW1tZWRpYXRlQWN0aW9uQ29udHJvbGxlciBp
bW1lZGlhdGVBY3Rpb25SZWNvZ25pemVyRGlkVXBkYXRlQW5pbWF0aW9uOl0pOgorICAgICAgICAo
LVtXS0ltbWVkaWF0ZUFjdGlvbkNvbnRyb2xsZXIgaW1tZWRpYXRlQWN0aW9uUmVjb2duaXplckRp
ZENhbmNlbEFuaW1hdGlvbjpdKToKKyAgICAgICAgKC1bV0tJbW1lZGlhdGVBY3Rpb25Db250cm9s
bGVyIGltbWVkaWF0ZUFjdGlvblJlY29nbml6ZXJEaWRDb21wbGV0ZUFuaW1hdGlvbjpdKToKKyAg
ICAgICAgKC1bV0tJbW1lZGlhdGVBY3Rpb25Db250cm9sbGVyIF9tZW51SXRlbUZvckRhdGFEZXRl
Y3RlZFRleHRdKToKKyAgICAgICAgKC1bV0tJbW1lZGlhdGVBY3Rpb25Db250cm9sbGVyIF9hbmlt
YXRpb25Db250cm9sbGVyRm9yVGV4dF0pOgorICAgICAgICBGb3J3YXJkIGltbWVkaWF0ZSBhY3Rp
b24gZ2VzdHVyZSByZWNvZ25pemVyIGFuaW1hdGlvbiBwcm9ncmVzcworICAgICAgICB0byBUZXh0
SW5kaWNhdG9yLiBGb3JjZSB1cyB0byBrZWVwIHRoZSBzZWxlY3Rpb24gd2hlbiBpbW1lZGlhdGUK
KyAgICAgICAgYWN0aW9uIHBvcG92ZXJzIHN0ZWFsIGZpcnN0IHJlc3BvbmRlciBzdGF0dXMgZnJv
bSB0aGUgV2ViVmlldy4KKworICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmg6
CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMuaW46CisgICAg
ICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9XZWJQYWdlTWFjLm1tOgorICAgICAgICAoV2Vi
S2l0Ojp0ZXh0SW5kaWNhdG9yVHJhbnNpdGlvbkZvckFjdGlvbk1lbnUpOgorICAgICAgICAoV2Vi
S2l0OjpXZWJQYWdlOjpwZXJmb3JtQWN0aW9uTWVudUhpdFRlc3RBdExvY2F0aW9uKToKKyAgICAg
ICAgRmFjdG9yIG91dCB0aGUgcHJlc2VudGF0aW9uIGFuaW1hdGlvbiBkZWNpc2lvbiBjb2RlLgor
ICAgICAgICBGb3IgaW1tZWRpYXRlIGFjdGlvbnMsIG9mIHRoZSBMb29rdXAgcmFuZ2UgaXMgZXF1
YWwgdG8gdGhlCisgICAgICAgIHNlbGVjdGlvbiByYW5nZSwgdXNlIGEgQ3Jvc3NmYWRlIGFuaW1h
dGlvbjsgb3RoZXJ3aXNlLCB1c2UgYSBGYWRlSW4KKyAgICAgICAgYW5pbWF0aW9uLgorICAgICAg
ICBQdXNoIHdoZXRoZXIgdGhlIGFjdGlvbk1lbnVIaXRUZXN0IGlzIGZvciBhbiBpbW1lZGlhdGUg
YWN0aW9uCisgICAgICAgIG9yIGEgbWVudSB0byB0aGUgV2ViIHByb2Nlc3MsIHRvIG1ha2UgdGhl
IHByZXNlbnRhdGlvbiBhbmltYXRpb24KKyAgICAgICAgZGVjaXNpb24gY29kZSBsaXZlIGVudGly
ZWx5IGluIHRoZSBXZWIgcHJvY2Vzcy4KKyAgICAgICAgQXZvaWQgZXh0cmFjdGluZyBlbmNvZGVk
IGltYWdlIGRhdGEgaWYgd2Uga25vdyB3ZSdyZSBkb2luZworICAgICAgICBhbiBpbW1lZGlhdGUg
YWN0aW9uIGFuZCB3aWxsIG5ldmVyIG5lZWQgaXQuCisKKzIwMTQtMTItMTYgIFRpbW90aHkgSG9y
dG9uICA8dGltb3RoeV9ob3J0b25AYXBwbGUuY29tPgorCiAgICAgICAgIEltbWVkaWF0ZSBhY3Rp
b24gcG9wb3ZlcnMgY2FuIGdldCBzdHVjayBvcGVuCiAgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMzk3MDkKICAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzE5
MjcwMjc5PgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5leHAuaW4gYi9Tb3Vy
Y2UvV2ViQ29yZS9XZWJDb3JlLmV4cC5pbgppbmRleCBmZjY2YmM4MTU1MWIwMGFkN2U4MmJlNDZh
YjBjZWNkNjZiYmI4YjcyLi5iNDU4NzA5MDE5MTA2NDA1ODhjNWRlOGQwOTQ0NjgyZjViNWQzZWE0
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmV4cC5pbgorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9XZWJDb3JlLmV4cC5pbgpAQCAtMjMxMiw3ICsyMzEyLDggQEAgX19aTjdXZWJDb3Jl
MTdTY3JvbGxiYXJUaGVtZU1hYzIzc2V0VXBPdmVyaGFuZ0FyZWFTaGFkb3dFUDdDQUxheWVyCiBf
X1pON1dlYkNvcmUxN1Njcm9sbGJhclRoZW1lTWFjMjRyZW1vdmVPdmVyaGFuZ0FyZWFTaGFkb3dF
UDdDQUxheWVyCiBfX1pON1dlYkNvcmUxN1Njcm9sbGJhclRoZW1lTWFjMjdzZXRVcE92ZXJoYW5n
QXJlYUJhY2tncm91bmRFUDdDQUxheWVyUktOU181Q29sb3JFCiBfX1pON1dlYkNvcmUxN1Njcm9s
bGJhclRoZW1lTWFjMjhyZW1vdmVPdmVyaGFuZ0FyZWFCYWNrZ3JvdW5kRVA3Q0FMYXllcgotX19a
TjdXZWJDb3JlMTlUZXh0SW5kaWNhdG9yV2luZG93MTZzZXRUZXh0SW5kaWNhdG9yRU4zV1RGMTBQ
YXNzUmVmUHRySU5TXzEzVGV4dEluZGljYXRvckVFRTZDR1JlY3RiTlN0M19fMThmdW5jdGlvbklG
dnZFRUUKK19fWk43V2ViQ29yZTE5VGV4dEluZGljYXRvcldpbmRvdzE2c2V0VGV4dEluZGljYXRv
ckVOM1dURjEwUGFzc1JlZlB0cklOU18xM1RleHRJbmRpY2F0b3JFRUU2Q0dSZWN0YgorX19aTjdX
ZWJDb3JlMTlUZXh0SW5kaWNhdG9yV2luZG93MjBzZXRBbmltYXRpb25Qcm9ncmVzc0VmCiBfX1pO
N1dlYkNvcmUxOVRleHRJbmRpY2F0b3JXaW5kb3dDMUVQNk5TVmlldwogX19aTjdXZWJDb3JlMTlU
ZXh0SW5kaWNhdG9yV2luZG93RDFFdgogX19aTjdXZWJDb3JlMTlhcHBsaWNhdGlvbklzU2FmYXJp
RXYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvVGV4dEluZGljYXRvci5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9wYWdlL1RleHRJbmRpY2F0b3IuY3BwCmluZGV4IGVlMWRlOWQ0YWEyOTZj
MjA1NTZmOTg3MTIyYzVhOTI4ODlhMzM2ZDkuLmFlMDRhYjAzYWUzNWQzNzYwODczOTkzYjQ0MTMz
NWNhMTFiYWI0NjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvVGV4dEluZGljYXRv
ci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9UZXh0SW5kaWNhdG9yLmNwcApAQCAtMTQx
LDcgKzE0MSw3IEBAIFBhc3NSZWZQdHI8VGV4dEluZGljYXRvcj4gVGV4dEluZGljYXRvcjo6Y3Jl
YXRlV2l0aFNlbGVjdGlvbkluRnJhbWUoRnJhbWUmIGZyYW1lCiAgICAgICAgIHJldHVybiBudWxs
cHRyOwogCiAgICAgUmVmUHRyPEltYWdlPiBpbmRpY2F0b3JCaXRtYXBXaXRoSGlnaGxpZ2h0Owot
ICAgIGlmIChwcmVzZW50YXRpb25UcmFuc2l0aW9uID09IFRleHRJbmRpY2F0b3JQcmVzZW50YXRp
b25UcmFuc2l0aW9uOjpCb3VuY2VBbmRDcm9zc2ZhZGUpCisgICAgaWYgKHByZXNlbnRhdGlvblRy
YW5zaXRpb24gPT0gVGV4dEluZGljYXRvclByZXNlbnRhdGlvblRyYW5zaXRpb246OkJvdW5jZUFu
ZENyb3NzZmFkZSB8fCBwcmVzZW50YXRpb25UcmFuc2l0aW9uID09IFRleHRJbmRpY2F0b3JQcmVz
ZW50YXRpb25UcmFuc2l0aW9uOjpDcm9zc2ZhZGUpCiAgICAgICAgIGluZGljYXRvckJpdG1hcFdp
dGhIaWdobGlnaHQgPSBzbmFwc2hvdFNlbGVjdGlvbldpdGhIaWdobGlnaHQoZnJhbWUpOwogCiAg
ICAgLy8gU3RvcmUgdGhlIHNlbGVjdGlvbiByZWN0IGluIHdpbmRvdyBjb29yZGluYXRlcywgdG8g
YmUgdXNlZCBzdWJzZXF1ZW50bHkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvVGV4
dEluZGljYXRvci5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9UZXh0SW5kaWNhdG9yLmgKaW5kZXgg
YmUxMGEzMzMzZjJmZWUyMzU3MTNlZjcwOGYwYTJkODFmNGM2OGQyNC4uYTEzNjkyYjhkNDFhOGNl
OTI2ZWJmMWQ5MTNhY2NmYWVlNmZmOTQ0NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFn
ZS9UZXh0SW5kaWNhdG9yLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9UZXh0SW5kaWNhdG9y
LmgKQEAgLTQ3LDcgKzQ3LDkgQEAgY2xhc3MgUmFuZ2U7CiBlbnVtIGNsYXNzIFRleHRJbmRpY2F0
b3JQcmVzZW50YXRpb25UcmFuc2l0aW9uIHsKICAgICBOb25lLAogICAgIEJvdW5jZSwKLSAgICBC
b3VuY2VBbmRDcm9zc2ZhZGUKKyAgICBCb3VuY2VBbmRDcm9zc2ZhZGUsCisgICAgRmFkZUluLAor
ICAgIENyb3NzZmFkZQogfTsKIAogc3RydWN0IFRleHRJbmRpY2F0b3JEYXRhIHsKQEAgLTc0LDgg
Kzc2LDggQEAgcHVibGljOgogICAgIGZsb2F0IGNvbnRlbnRJbWFnZVNjYWxlRmFjdG9yKCkgY29u
c3QgeyByZXR1cm4gbV9kYXRhLmNvbnRlbnRJbWFnZVNjYWxlRmFjdG9yOyB9CiAgICAgSW1hZ2Ug
KmNvbnRlbnRJbWFnZVdpdGhIaWdobGlnaHQoKSBjb25zdCB7IHJldHVybiBtX2RhdGEuY29udGVu
dEltYWdlV2l0aEhpZ2hsaWdodC5nZXQoKTsgfQogICAgIEltYWdlICpjb250ZW50SW1hZ2UoKSBj
b25zdCB7IHJldHVybiBtX2RhdGEuY29udGVudEltYWdlLmdldCgpOyB9Ci0gICAgVGV4dEluZGlj
YXRvclByZXNlbnRhdGlvblRyYW5zaXRpb24gcHJlc2VudGF0aW9uVHJhbnNpdGlvbigpIGNvbnN0
IHsgcmV0dXJuIG1fZGF0YS5wcmVzZW50YXRpb25UcmFuc2l0aW9uOyB9CiAKKyAgICBUZXh0SW5k
aWNhdG9yUHJlc2VudGF0aW9uVHJhbnNpdGlvbiBwcmVzZW50YXRpb25UcmFuc2l0aW9uKCkgY29u
c3QgeyByZXR1cm4gbV9kYXRhLnByZXNlbnRhdGlvblRyYW5zaXRpb247IH0KICAgICB2b2lkIHNl
dFByZXNlbnRhdGlvblRyYW5zaXRpb24oVGV4dEluZGljYXRvclByZXNlbnRhdGlvblRyYW5zaXRp
b24gdHJhbnNpdGlvbikgeyBtX2RhdGEucHJlc2VudGF0aW9uVHJhbnNpdGlvbiA9IHRyYW5zaXRp
b247IH0KIAogICAgIFRleHRJbmRpY2F0b3JEYXRhIGRhdGEoKSBjb25zdCB7IHJldHVybiBtX2Rh
dGE7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvbWFjL1RleHRJbmRpY2F0b3JX
aW5kb3cuaCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvbWFjL1RleHRJbmRpY2F0b3JXaW5kb3cuaApp
bmRleCA0OWE0ZTY1YWQwOTJlZDI4OWZlN2M0MTNiZjZkZDU4NWIxNGMwMDM2Li43YzNkY2M2MGNm
ZTA4MTM1YjZkYmE0MjJmMDFiNWJmOTExN2MzNGRlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL21hYy9UZXh0SW5kaWNhdG9yV2luZG93LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGFn
ZS9tYWMvVGV4dEluZGljYXRvcldpbmRvdy5oCkBAIC0yOCw3ICsyOCw2IEBACiAKICNpZiBQTEFU
Rk9STShNQUMpCiAKLSNpbXBvcnQgPGZ1bmN0aW9uYWw+CiAjaW1wb3J0IDx3dGYvTm9uY29weWFi
bGUuaD4KICNpbXBvcnQgPHd0Zi9SZWZQdHIuaD4KICNpbXBvcnQgPHd0Zi9SZXRhaW5QdHIuaD4K
QEAgLTQ4LDEyICs0NywxNCBAQCBwdWJsaWM6CiAgICAgZXhwbGljaXQgVGV4dEluZGljYXRvcldp
bmRvdyhOU1ZpZXcgKik7CiAgICAgflRleHRJbmRpY2F0b3JXaW5kb3coKTsKIAotICAgIHZvaWQg
c2V0VGV4dEluZGljYXRvcihQYXNzUmVmUHRyPFRleHRJbmRpY2F0b3I+LCBDR1JlY3QgY29udGVu
dFJlY3QsIGJvb2wgZmFkZU91dCwgc3RkOjpmdW5jdGlvbjx2b2lkICgpPiBhbmltYXRpb25Db21w
bGV0aW9uSGFuZGxlcik7CisgICAgdm9pZCBzZXRUZXh0SW5kaWNhdG9yKFBhc3NSZWZQdHI8VGV4
dEluZGljYXRvcj4sIENHUmVjdCBjb250ZW50UmVjdCwgYm9vbCBmYWRlT3V0KTsKKworICAgIHZv
aWQgc2V0QW5pbWF0aW9uUHJvZ3Jlc3MoZmxvYXQpOwogCiBwcml2YXRlOgogICAgIHZvaWQgY2xv
c2VXaW5kb3coKTsKIAotICAgIHZvaWQgc3RhcnRGYWRlT3V0VGltZXJGaXJlZCgpOworICAgIHZv
aWQgc3RhcnRGYWRlT3V0KCk7CiAKICAgICBOU1ZpZXcgKm1fdGFyZ2V0VmlldzsKICAgICBSZWZQ
dHI8VGV4dEluZGljYXRvcj4gbV90ZXh0SW5kaWNhdG9yOwpAQCAtNjEsOCArNjIsNiBAQCBwcml2
YXRlOgogICAgIFJldGFpblB0cjxXZWJUZXh0SW5kaWNhdG9yVmlldz4gbV90ZXh0SW5kaWNhdG9y
VmlldzsKIAogICAgIFJ1bkxvb3A6OlRpbWVyPFRleHRJbmRpY2F0b3JXaW5kb3c+IG1fc3RhcnRG
YWRlT3V0VGltZXI7Ci0KLSAgICBzdGQ6OmZ1bmN0aW9uPHZvaWQgKCk+IG1fYm91bmNlQW5pbWF0
aW9uQ29tcGxldGlvbkhhbmRsZXI7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvbWFjL1RleHRJbmRpY2F0b3JXaW5kb3cubW0gYi9T
b3VyY2UvV2ViQ29yZS9wYWdlL21hYy9UZXh0SW5kaWNhdG9yV2luZG93Lm1tCmluZGV4IGNiNDVm
MjM3MTZhYjQxN2FiMzdjNmQxOTJlYzc0Nzg4NjgwN2M5YjMuLmYyODAyZWU5YTJlZWNkMzE2NjA4
NTIzZDllYTRjZjMwMzMyOWUzMjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvbWFj
L1RleHRJbmRpY2F0b3JXaW5kb3cubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9tYWMvVGV4
dEluZGljYXRvcldpbmRvdy5tbQpAQCAtMzUsNiArMzUsNyBAQAogCiBjb25zdCBDRlRpbWVJbnRl
cnZhbCBib3VuY2VBbmltYXRpb25EdXJhdGlvbiA9IDAuMTI7CiBjb25zdCBDRlRpbWVJbnRlcnZh
bCBib3VuY2VXaXRoQ3Jvc3NmYWRlQW5pbWF0aW9uRHVyYXRpb24gPSAwLjM7Citjb25zdCBDRlRp
bWVJbnRlcnZhbCBmYWRlSW5BbmltYXRpb25EdXJhdGlvbiA9IDAuMTU7CiBjb25zdCBDRlRpbWVJ
bnRlcnZhbCB0aW1lQmVmb3JlRmFkZVN0YXJ0cyA9IGJvdW5jZUFuaW1hdGlvbkR1cmF0aW9uICsg
MC4yOwogY29uc3QgQ0ZUaW1lSW50ZXJ2YWwgZmFkZU91dEFuaW1hdGlvbkR1cmF0aW9uID0gMC4z
OwogCkBAIC02OSwxMyArNzAsMTYgQEAgdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAgICAgUmVm
UHRyPFRleHRJbmRpY2F0b3I+IF90ZXh0SW5kaWNhdG9yOwogICAgIFJldGFpblB0cjxOU0FycmF5
PiBfYm91bmNlTGF5ZXJzOwogICAgIE5TU2l6ZSBfbWFyZ2luOworICAgIGJvb2wgX2hhc0NvbXBs
ZXRlZEFuaW1hdGlvbjsKIH0KIAogLSAoaW5zdGFuY2V0eXBlKWluaXRXaXRoRnJhbWU6KE5TUmVj
dClmcmFtZSB0ZXh0SW5kaWNhdG9yOihQYXNzUmVmUHRyPFRleHRJbmRpY2F0b3I+KXRleHRJbmRp
Y2F0b3IgbWFyZ2luOihOU1NpemUpbWFyZ2luOwogCi0tICh2b2lkKXByZXNlbnRXaXRoQ29tcGxl
dGlvbkhhbmRsZXI6KHZvaWQoXikodm9pZCkpY29tcGxldGlvbkhhbmRsZXI7CistICh2b2lkKXBy
ZXNlbnQ7CiAtICh2b2lkKWhpZGVXaXRoQ29tcGxldGlvbkhhbmRsZXI6KHZvaWQoXikodm9pZCkp
Y29tcGxldGlvbkhhbmRsZXI7CiAKKy0gKHZvaWQpc2V0QW5pbWF0aW9uUHJvZ3Jlc3M6KGZsb2F0
KXByb2dyZXNzOworCiBAZW5kCiAKIEBpbXBsZW1lbnRhdGlvbiBXZWJUZXh0SW5kaWNhdG9yVmll
dwpAQCAtOTEsNyArOTUsNyBAQCB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKICAgICBzZWxmLndh
bnRzTGF5ZXIgPSBZRVM7CiAgICAgc2VsZi5sYXllci5hbmNob3JQb2ludCA9IENHUG9pbnRaZXJv
OwogCi0gICAgYm9vbCB3YW50c0Nyb3NzZmFkZSA9IF90ZXh0SW5kaWNhdG9yLT5wcmVzZW50YXRp
b25UcmFuc2l0aW9uKCkgPT0gVGV4dEluZGljYXRvclByZXNlbnRhdGlvblRyYW5zaXRpb246OkJv
dW5jZUFuZENyb3NzZmFkZTsKKyAgICBib29sIHdhbnRzQ3Jvc3NmYWRlID0gW3NlbGYgX3RleHRJ
bmRpY2F0b3JXYW50c0NvbnRlbnRDcm9zc2ZhZGVdOwogCiAgICAgRmxvYXRTaXplIGNvbnRlbnRz
SW1hZ2VMb2dpY2FsU2l6ZSA9IF90ZXh0SW5kaWNhdG9yLT5jb250ZW50SW1hZ2UoKS0+c2l6ZSgp
OwogICAgIGNvbnRlbnRzSW1hZ2VMb2dpY2FsU2l6ZS5zY2FsZSgxIC8gX3RleHRJbmRpY2F0b3It
PmNvbnRlbnRJbWFnZVNjYWxlRmFjdG9yKCkpOwpAQCAtMTg3LDQxICsxOTEsMTE3IEBAIHVzaW5n
IG5hbWVzcGFjZSBXZWJDb3JlOwogICAgIHJldHVybiBzZWxmOwogfQogCi0tICh2b2lkKXByZXNl
bnRXaXRoQ29tcGxldGlvbkhhbmRsZXI6KHZvaWQoXikodm9pZCkpY29tcGxldGlvbkhhbmRsZXIK
K3N0YXRpYyBSZXRhaW5QdHI8Q0FLZXlmcmFtZUFuaW1hdGlvbj4gY3JlYXRlQm91bmNlQW5pbWF0
aW9uKENGVGltZUludGVydmFsIGR1cmF0aW9uKQogewotICAgIGJvb2wgd2FudHNDcm9zc2ZhZGUg
PSBfdGV4dEluZGljYXRvci0+cHJlc2VudGF0aW9uVHJhbnNpdGlvbigpID09IFRleHRJbmRpY2F0
b3JQcmVzZW50YXRpb25UcmFuc2l0aW9uOjpCb3VuY2VBbmRDcm9zc2ZhZGU7Ci0gICAgZG91Ymxl
IGFuaW1hdGlvbkR1cmF0aW9uID0gd2FudHNDcm9zc2ZhZGUgPyBib3VuY2VXaXRoQ3Jvc3NmYWRl
QW5pbWF0aW9uRHVyYXRpb24gOiBib3VuY2VBbmltYXRpb25EdXJhdGlvbjsKICAgICBSZXRhaW5Q
dHI8Q0FLZXlmcmFtZUFuaW1hdGlvbj4gYm91bmNlQW5pbWF0aW9uID0gW0NBS2V5ZnJhbWVBbmlt
YXRpb24gYW5pbWF0aW9uV2l0aEtleVBhdGg6QCJ0cmFuc2Zvcm0iXTsKICAgICBbYm91bmNlQW5p
bWF0aW9uIHNldFZhbHVlczpAWwogICAgICAgICBbTlNWYWx1ZSB2YWx1ZVdpdGhDQVRyYW5zZm9y
bTNEOkNBVHJhbnNmb3JtM0RJZGVudGl0eV0sCiAgICAgICAgIFtOU1ZhbHVlIHZhbHVlV2l0aENB
VHJhbnNmb3JtM0Q6Q0FUcmFuc2Zvcm0zRE1ha2VTY2FsZShtaWRCb3VuY2VTY2FsZSwgbWlkQm91
bmNlU2NhbGUsIDEpXSwKICAgICAgICAgW05TVmFsdWUgdmFsdWVXaXRoQ0FUcmFuc2Zvcm0zRDpD
QVRyYW5zZm9ybTNESWRlbnRpdHldCiAgICAgICAgIF1dOwotICAgIFtib3VuY2VBbmltYXRpb24g
c2V0RHVyYXRpb246YW5pbWF0aW9uRHVyYXRpb25dOworICAgIFtib3VuY2VBbmltYXRpb24gc2V0
RHVyYXRpb246ZHVyYXRpb25dOworCisgICAgcmV0dXJuIGJvdW5jZUFuaW1hdGlvbjsKK30KKwor
c3RhdGljIFJldGFpblB0cjxDQUJhc2ljQW5pbWF0aW9uPiBjcmVhdGVDb250ZW50Q3Jvc3NmYWRl
QW5pbWF0aW9uKENGVGltZUludGVydmFsIGR1cmF0aW9uLCBUZXh0SW5kaWNhdG9yJiB0ZXh0SW5k
aWNhdG9yKQoreworICAgIFJldGFpblB0cjxDQUJhc2ljQW5pbWF0aW9uPiBjcm9zc2ZhZGVBbmlt
YXRpb24gPSBbQ0FCYXNpY0FuaW1hdGlvbiBhbmltYXRpb25XaXRoS2V5UGF0aDpAImNvbnRlbnRz
Il07CisgICAgUmV0YWluUHRyPENHSW1hZ2VSZWY+IGNvbnRlbnRzSW1hZ2UgPSB0ZXh0SW5kaWNh
dG9yLmNvbnRlbnRJbWFnZSgpLT5nZXRDR0ltYWdlUmVmKCk7CisgICAgW2Nyb3NzZmFkZUFuaW1h
dGlvbiBzZXRUb1ZhbHVlOihpZCljb250ZW50c0ltYWdlLmdldCgpXTsKKyAgICBbY3Jvc3NmYWRl
QW5pbWF0aW9uIHNldEZpbGxNb2RlOmtDQUZpbGxNb2RlRm9yd2FyZHNdOworICAgIFtjcm9zc2Zh
ZGVBbmltYXRpb24gc2V0UmVtb3ZlZE9uQ29tcGxldGlvbjpOT107CisgICAgW2Nyb3NzZmFkZUFu
aW1hdGlvbiBzZXREdXJhdGlvbjpkdXJhdGlvbl07CisKKyAgICByZXR1cm4gY3Jvc3NmYWRlQW5p
bWF0aW9uOworfQorCitzdGF0aWMgUmV0YWluUHRyPENBQmFzaWNBbmltYXRpb24+IGNyZWF0ZVNo
YWRvd0ZhZGVBbmltYXRpb24oQ0ZUaW1lSW50ZXJ2YWwgZHVyYXRpb24pCit7CisgICAgUmV0YWlu
UHRyPENBQmFzaWNBbmltYXRpb24+IGZhZGVTaGFkb3dJbkFuaW1hdGlvbiA9IFtDQUJhc2ljQW5p
bWF0aW9uIGFuaW1hdGlvbldpdGhLZXlQYXRoOkAic2hhZG93T3BhY2l0eSJdOworICAgIFtmYWRl
U2hhZG93SW5BbmltYXRpb24gc2V0RnJvbVZhbHVlOkAwXTsKKyAgICBbZmFkZVNoYWRvd0luQW5p
bWF0aW9uIHNldFRvVmFsdWU6QDFdOworICAgIFtmYWRlU2hhZG93SW5BbmltYXRpb24gc2V0Rmls
bE1vZGU6a0NBRmlsbE1vZGVGb3J3YXJkc107CisgICAgW2ZhZGVTaGFkb3dJbkFuaW1hdGlvbiBz
ZXRSZW1vdmVkT25Db21wbGV0aW9uOk5PXTsKKyAgICBbZmFkZVNoYWRvd0luQW5pbWF0aW9uIHNl
dER1cmF0aW9uOmR1cmF0aW9uXTsKKworICAgIHJldHVybiBmYWRlU2hhZG93SW5BbmltYXRpb247
Cit9CisKK3N0YXRpYyBSZXRhaW5QdHI8Q0FCYXNpY0FuaW1hdGlvbj4gY3JlYXRlRmFkZUluQW5p
bWF0aW9uKENGVGltZUludGVydmFsIGR1cmF0aW9uKQoreworICAgIFJldGFpblB0cjxDQUJhc2lj
QW5pbWF0aW9uPiBmYWRlSW5BbmltYXRpb24gPSBbQ0FCYXNpY0FuaW1hdGlvbiBhbmltYXRpb25X
aXRoS2V5UGF0aDpAIm9wYWNpdHkiXTsKKyAgICBbZmFkZUluQW5pbWF0aW9uIHNldEZyb21WYWx1
ZTpAMF07CisgICAgW2ZhZGVJbkFuaW1hdGlvbiBzZXRUb1ZhbHVlOkAxXTsKKyAgICBbZmFkZUlu
QW5pbWF0aW9uIHNldEZpbGxNb2RlOmtDQUZpbGxNb2RlRm9yd2FyZHNdOworICAgIFtmYWRlSW5B
bmltYXRpb24gc2V0UmVtb3ZlZE9uQ29tcGxldGlvbjpOT107CisgICAgW2ZhZGVJbkFuaW1hdGlv
biBzZXREdXJhdGlvbjpkdXJhdGlvbl07CisKKyAgICByZXR1cm4gZmFkZUluQW5pbWF0aW9uOwor
fQorCistIChib29sKV90ZXh0SW5kaWNhdG9yV2FudHNCb3VuY2UKK3sKKyAgICByZXR1cm4gX3Rl
eHRJbmRpY2F0b3ItPnByZXNlbnRhdGlvblRyYW5zaXRpb24oKSA9PSBUZXh0SW5kaWNhdG9yUHJl
c2VudGF0aW9uVHJhbnNpdGlvbjo6Qm91bmNlQW5kQ3Jvc3NmYWRlIHx8IF90ZXh0SW5kaWNhdG9y
LT5wcmVzZW50YXRpb25UcmFuc2l0aW9uKCkgPT0gVGV4dEluZGljYXRvclByZXNlbnRhdGlvblRy
YW5zaXRpb246OkJvdW5jZTsKK30KKworLSAoYm9vbClfdGV4dEluZGljYXRvcldhbnRzQ29udGVu
dENyb3NzZmFkZQoreworICAgIHJldHVybiAoX3RleHRJbmRpY2F0b3ItPnByZXNlbnRhdGlvblRy
YW5zaXRpb24oKSA9PSBUZXh0SW5kaWNhdG9yUHJlc2VudGF0aW9uVHJhbnNpdGlvbjo6Qm91bmNl
QW5kQ3Jvc3NmYWRlIHx8IF90ZXh0SW5kaWNhdG9yLT5wcmVzZW50YXRpb25UcmFuc2l0aW9uKCkg
PT0gVGV4dEluZGljYXRvclByZXNlbnRhdGlvblRyYW5zaXRpb246OkNyb3NzZmFkZSkgJiYgX3Rl
eHRJbmRpY2F0b3ItPmNvbnRlbnRJbWFnZVdpdGhIaWdobGlnaHQoKTsKK30KKworLSAoYm9vbClf
dGV4dEluZGljYXRvcldhbnRzRmFkZUluCit7CisgICAgcmV0dXJuIF90ZXh0SW5kaWNhdG9yLT5w
cmVzZW50YXRpb25UcmFuc2l0aW9uKCkgPT0gVGV4dEluZGljYXRvclByZXNlbnRhdGlvblRyYW5z
aXRpb246OkZhZGVJbjsKK30KKworLSAoQ0ZUaW1lSW50ZXJ2YWwpX2FuaW1hdGlvbkR1cmF0aW9u
Cit7CisgICAgYm9vbCB3YW50c0JvdW5jZSA9IFtzZWxmIF90ZXh0SW5kaWNhdG9yV2FudHNCb3Vu
Y2VdOworICAgIGJvb2wgd2FudHNDcm9zc2ZhZGUgPSBbc2VsZiBfdGV4dEluZGljYXRvcldhbnRz
Q29udGVudENyb3NzZmFkZV07CisKKyAgICBpZiAod2FudHNCb3VuY2UpIHsKKyAgICAgICAgaWYg
KHdhbnRzQ3Jvc3NmYWRlKQorICAgICAgICAgICAgcmV0dXJuIGJvdW5jZVdpdGhDcm9zc2ZhZGVB
bmltYXRpb25EdXJhdGlvbjsKKyAgICAgICAgcmV0dXJuIGJvdW5jZUFuaW1hdGlvbkR1cmF0aW9u
OworICAgIH0KKworICAgIHJldHVybiBmYWRlSW5BbmltYXRpb25EdXJhdGlvbjsKK30KKworLSAo
dm9pZClwcmVzZW50Cit7CisgICAgYm9vbCB3YW50c0JvdW5jZSA9IFtzZWxmIF90ZXh0SW5kaWNh
dG9yV2FudHNCb3VuY2VdOworICAgIGJvb2wgd2FudHNDcm9zc2ZhZGUgPSBbc2VsZiBfdGV4dElu
ZGljYXRvcldhbnRzQ29udGVudENyb3NzZmFkZV07CisgICAgYm9vbCB3YW50c0ZhZGVJbiA9IFtz
ZWxmIF90ZXh0SW5kaWNhdG9yV2FudHNGYWRlSW5dOworICAgIENGVGltZUludGVydmFsIGFuaW1h
dGlvbkR1cmF0aW9uID0gW3NlbGYgX2FuaW1hdGlvbkR1cmF0aW9uXTsKKworICAgIF9oYXNDb21w
bGV0ZWRBbmltYXRpb24gPSBmYWxzZTsKKworICAgIFJldGFpblB0cjxDQUFuaW1hdGlvbj4gcHJl
c2VudGF0aW9uQW5pbWF0aW9uOworICAgIGlmICh3YW50c0JvdW5jZSkKKyAgICAgICAgcHJlc2Vu
dGF0aW9uQW5pbWF0aW9uID0gY3JlYXRlQm91bmNlQW5pbWF0aW9uKGFuaW1hdGlvbkR1cmF0aW9u
KTsKKyAgICBlbHNlIGlmICh3YW50c0ZhZGVJbikKKyAgICAgICAgcHJlc2VudGF0aW9uQW5pbWF0
aW9uID0gY3JlYXRlRmFkZUluQW5pbWF0aW9uKGFuaW1hdGlvbkR1cmF0aW9uKTsKIAogICAgIFJl
dGFpblB0cjxDQUJhc2ljQW5pbWF0aW9uPiBjcm9zc2ZhZGVBbmltYXRpb247CiAgICAgUmV0YWlu
UHRyPENBQmFzaWNBbmltYXRpb24+IGZhZGVTaGFkb3dJbkFuaW1hdGlvbjsKICAgICBpZiAod2Fu
dHNDcm9zc2ZhZGUpIHsKLSAgICAgICAgY3Jvc3NmYWRlQW5pbWF0aW9uID0gW0NBQmFzaWNBbmlt
YXRpb24gYW5pbWF0aW9uV2l0aEtleVBhdGg6QCJjb250ZW50cyJdOwotICAgICAgICBSZXRhaW5Q
dHI8Q0dJbWFnZVJlZj4gY29udGVudHNJbWFnZSA9IF90ZXh0SW5kaWNhdG9yLT5jb250ZW50SW1h
Z2UoKS0+Z2V0Q0dJbWFnZVJlZigpOwotICAgICAgICBbY3Jvc3NmYWRlQW5pbWF0aW9uIHNldFRv
VmFsdWU6KGlkKWNvbnRlbnRzSW1hZ2UuZ2V0KCldOwotICAgICAgICBbY3Jvc3NmYWRlQW5pbWF0
aW9uIHNldEZpbGxNb2RlOmtDQUZpbGxNb2RlRm9yd2FyZHNdOwotICAgICAgICBbY3Jvc3NmYWRl
QW5pbWF0aW9uIHNldFJlbW92ZWRPbkNvbXBsZXRpb246Tk9dOwotICAgICAgICBbY3Jvc3NmYWRl
QW5pbWF0aW9uIHNldER1cmF0aW9uOmFuaW1hdGlvbkR1cmF0aW9uXTsKLQotICAgICAgICBmYWRl
U2hhZG93SW5BbmltYXRpb24gPSBbQ0FCYXNpY0FuaW1hdGlvbiBhbmltYXRpb25XaXRoS2V5UGF0
aDpAInNoYWRvd09wYWNpdHkiXTsKLSAgICAgICAgW2ZhZGVTaGFkb3dJbkFuaW1hdGlvbiBzZXRG
cm9tVmFsdWU6QDBdOwotICAgICAgICBbZmFkZVNoYWRvd0luQW5pbWF0aW9uIHNldFRvVmFsdWU6
QDFdOwotICAgICAgICBbZmFkZVNoYWRvd0luQW5pbWF0aW9uIHNldEZpbGxNb2RlOmtDQUZpbGxN
b2RlRm9yd2FyZHNdOwotICAgICAgICBbZmFkZVNoYWRvd0luQW5pbWF0aW9uIHNldFJlbW92ZWRP
bkNvbXBsZXRpb246Tk9dOwotICAgICAgICBbZmFkZVNoYWRvd0luQW5pbWF0aW9uIHNldER1cmF0
aW9uOmFuaW1hdGlvbkR1cmF0aW9uXTsKKyAgICAgICAgY3Jvc3NmYWRlQW5pbWF0aW9uID0gY3Jl
YXRlQ29udGVudENyb3NzZmFkZUFuaW1hdGlvbihhbmltYXRpb25EdXJhdGlvbiwgKl90ZXh0SW5k
aWNhdG9yKTsKKyAgICAgICAgZmFkZVNoYWRvd0luQW5pbWF0aW9uID0gY3JlYXRlU2hhZG93RmFk
ZUFuaW1hdGlvbihhbmltYXRpb25EdXJhdGlvbik7CiAgICAgfQogCiAgICAgW0NBVHJhbnNhY3Rp
b24gYmVnaW5dOwotICAgIFtDQVRyYW5zYWN0aW9uIHNldENvbXBsZXRpb25CbG9jazpjb21wbGV0
aW9uSGFuZGxlcl07Ci0gICAgZm9yIChDQUxheWVyKiBib3VuY2VMYXllciBpbiBfYm91bmNlTGF5
ZXJzLmdldCgpKSB7Ci0gICAgICAgIFtib3VuY2VMYXllciBzZXRPcGFjaXR5OjFdOwotICAgICAg
ICBbYm91bmNlTGF5ZXIgYWRkQW5pbWF0aW9uOmJvdW5jZUFuaW1hdGlvbi5nZXQoKSBmb3JLZXk6
QCJib3VuY2UiXTsKKyAgICBmb3IgKENBTGF5ZXIgKmJvdW5jZUxheWVyIGluIF9ib3VuY2VMYXll
cnMuZ2V0KCkpIHsKKyAgICAgICAgaWYgKHdhbnRzRmFkZUluIHx8IHdhbnRzQ3Jvc3NmYWRlKQor
ICAgICAgICAgICAgYm91bmNlTGF5ZXIuc3BlZWQgPSAwOworCisgICAgICAgIGlmICghd2FudHNG
YWRlSW4pCisgICAgICAgICAgICBib3VuY2VMYXllci5vcGFjaXR5ID0gMTsKKworICAgICAgICBp
ZiAocHJlc2VudGF0aW9uQW5pbWF0aW9uKQorICAgICAgICAgICAgW2JvdW5jZUxheWVyIGFkZEFu
aW1hdGlvbjpwcmVzZW50YXRpb25BbmltYXRpb24uZ2V0KCkgZm9yS2V5OkAicHJlc2VudGF0aW9u
Il07CisKICAgICAgICAgaWYgKHdhbnRzQ3Jvc3NmYWRlKSB7CiAgICAgICAgICAgICBbW2JvdW5j
ZUxheWVyIHZhbHVlRm9yS2V5OnRleHRMYXllcktleV0gYWRkQW5pbWF0aW9uOmNyb3NzZmFkZUFu
aW1hdGlvbi5nZXQoKSBmb3JLZXk6QCJjb250ZW50VHJhbnNpdGlvbiJdOwogICAgICAgICAgICAg
W1tib3VuY2VMYXllciB2YWx1ZUZvcktleTpkcm9wU2hhZG93TGF5ZXJLZXldIGFkZEFuaW1hdGlv
bjpmYWRlU2hhZG93SW5BbmltYXRpb24uZ2V0KCkgZm9yS2V5OkAiZmFkZVNoYWRvd0luIl07CkBA
IC0yNDYsNiArMzI2LDI4IEBAIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogICAgIFtDQVRyYW5z
YWN0aW9uIGNvbW1pdF07CiB9CiAKKy0gKHZvaWQpc2V0QW5pbWF0aW9uUHJvZ3Jlc3M6KGZsb2F0
KXByb2dyZXNzCit7CisgICAgaWYgKF9oYXNDb21wbGV0ZWRBbmltYXRpb24pCisgICAgICAgIHJl
dHVybjsKKworICAgIGlmIChwcm9ncmVzcyA9PSAxKSB7CisgICAgICAgIF9oYXNDb21wbGV0ZWRB
bmltYXRpb24gPSB0cnVlOworCisgICAgICAgIGZvciAoQ0FMYXllciAqYm91bmNlTGF5ZXIgaW4g
X2JvdW5jZUxheWVycy5nZXQoKSkgeworICAgICAgICAgICAgLy8gQ29udGludWUgdGhlIGFuaW1h
dGlvbiBmcm9tIHdoZXJldmVyIGl0IGhhZCBtYW51YWxseSBwcm9ncmVzc2VkIHRvLgorICAgICAg
ICAgICAgQ0ZUaW1lSW50ZXJ2YWwgYmVnaW5UaW1lID0gYm91bmNlTGF5ZXIudGltZU9mZnNldDsK
KyAgICAgICAgICAgIGJvdW5jZUxheWVyLnNwZWVkID0gMTsKKyAgICAgICAgICAgIGJlZ2luVGlt
ZSA9IFtib3VuY2VMYXllciBjb252ZXJ0VGltZTpDQUN1cnJlbnRNZWRpYVRpbWUoKSBmcm9tTGF5
ZXI6bmlsXSAtIGJlZ2luVGltZTsKKyAgICAgICAgICAgIGJvdW5jZUxheWVyLmJlZ2luVGltZSA9
IGJlZ2luVGltZTsKKyAgICAgICAgfQorICAgIH0gZWxzZSB7CisgICAgICAgIENGVGltZUludGVy
dmFsIGFuaW1hdGlvbkR1cmF0aW9uID0gW3NlbGYgX2FuaW1hdGlvbkR1cmF0aW9uXTsKKyAgICAg
ICAgZm9yIChDQUxheWVyICpib3VuY2VMYXllciBpbiBfYm91bmNlTGF5ZXJzLmdldCgpKQorICAg
ICAgICAgICAgYm91bmNlTGF5ZXIudGltZU9mZnNldCA9IHByb2dyZXNzICogYW5pbWF0aW9uRHVy
YXRpb247CisgICAgfQorfQorCiAtIChCT09MKWlzRmxpcHBlZAogewogICAgIHJldHVybiBZRVM7
CkBAIC0yNTcsMTYgKzM1OSwyNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIFRleHRJbmRpY2F0
b3JXaW5kb3c6OlRleHRJbmRpY2F0b3JXaW5kb3coTlNWaWV3ICp0YXJnZXRWaWV3KQogICAgIDog
bV90YXJnZXRWaWV3KHRhcmdldFZpZXcpCi0gICAgLCBtX3N0YXJ0RmFkZU91dFRpbWVyKFJ1bkxv
b3A6Om1haW4oKSwgdGhpcywgJlRleHRJbmRpY2F0b3JXaW5kb3c6OnN0YXJ0RmFkZU91dFRpbWVy
RmlyZWQpCisgICAgLCBtX3N0YXJ0RmFkZU91dFRpbWVyKFJ1bkxvb3A6Om1haW4oKSwgdGhpcywg
JlRleHRJbmRpY2F0b3JXaW5kb3c6OnN0YXJ0RmFkZU91dCkKIHsKIH0KIAogVGV4dEluZGljYXRv
cldpbmRvdzo6flRleHRJbmRpY2F0b3JXaW5kb3coKQogewotICAgIGNsb3NlV2luZG93KCk7Cisg
ICAgaWYgKG1fdGV4dEluZGljYXRvci0+cHJlc2VudGF0aW9uVHJhbnNpdGlvbigpID09IFRleHRJ
bmRpY2F0b3JQcmVzZW50YXRpb25UcmFuc2l0aW9uOjpDcm9zc2ZhZGUgfHwgbV90ZXh0SW5kaWNh
dG9yLT5wcmVzZW50YXRpb25UcmFuc2l0aW9uKCkgPT0gVGV4dEluZGljYXRvclByZXNlbnRhdGlv
blRyYW5zaXRpb246OkZhZGVJbikKKyAgICAgICAgc3RhcnRGYWRlT3V0KCk7CisgICAgZWxzZQor
ICAgICAgICBjbG9zZVdpbmRvdygpOworfQorCit2b2lkIFRleHRJbmRpY2F0b3JXaW5kb3c6OnNl
dEFuaW1hdGlvblByb2dyZXNzKGZsb2F0IHByb2dyZXNzKQoreworICAgIGlmICghbV90ZXh0SW5k
aWNhdG9yKQorICAgICAgICByZXR1cm47CisKKyAgICBbbV90ZXh0SW5kaWNhdG9yVmlldyBzZXRB
bmltYXRpb25Qcm9ncmVzczpwcm9ncmVzc107CiB9CiAKLXZvaWQgVGV4dEluZGljYXRvcldpbmRv
dzo6c2V0VGV4dEluZGljYXRvcihQYXNzUmVmUHRyPFRleHRJbmRpY2F0b3I+IHRleHRJbmRpY2F0
b3IsIENHUmVjdCBjb250ZW50UmVjdCwgYm9vbCBmYWRlT3V0LCBzdGQ6OmZ1bmN0aW9uPHZvaWQg
KCk+IGFuaW1hdGlvbkNvbXBsZXRpb25IYW5kbGVyKQordm9pZCBUZXh0SW5kaWNhdG9yV2luZG93
OjpzZXRUZXh0SW5kaWNhdG9yKFBhc3NSZWZQdHI8VGV4dEluZGljYXRvcj4gdGV4dEluZGljYXRv
ciwgQ0dSZWN0IGNvbnRlbnRSZWN0LCBib29sIGZhZGVPdXQpCiB7CiAgICAgaWYgKG1fdGV4dElu
ZGljYXRvciA9PSB0ZXh0SW5kaWNhdG9yKQogICAgICAgICByZXR1cm47CkBAIC0yOTcsOSArNDEw
LDcgQEAgdm9pZCBUZXh0SW5kaWNhdG9yV2luZG93OjpzZXRUZXh0SW5kaWNhdG9yKFBhc3NSZWZQ
dHI8VGV4dEluZGljYXRvcj4gdGV4dEluZGljYXQKICAgICBbbV90ZXh0SW5kaWNhdG9yV2luZG93
IHNldFJlbGVhc2VkV2hlbkNsb3NlZDpOT107CiAKICAgICBpZiAobV90ZXh0SW5kaWNhdG9yLT5w
cmVzZW50YXRpb25UcmFuc2l0aW9uKCkgIT0gVGV4dEluZGljYXRvclByZXNlbnRhdGlvblRyYW5z
aXRpb246Ok5vbmUpIHsKLSAgICAgICAgW21fdGV4dEluZGljYXRvclZpZXcgcHJlc2VudFdpdGhD
b21wbGV0aW9uSGFuZGxlcjpbYW5pbWF0aW9uQ29tcGxldGlvbkhhbmRsZXJdIHsKLSAgICAgICAg
ICAgIGFuaW1hdGlvbkNvbXBsZXRpb25IYW5kbGVyKCk7Ci0gICAgICAgIH1dOworICAgICAgICBb
bV90ZXh0SW5kaWNhdG9yVmlldyBwcmVzZW50XTsKICAgICB9CiAKICAgICBpZiAoZmFkZU91dCkK
QEAgLTMxOCw3ICs0MjksNyBAQCB2b2lkIFRleHRJbmRpY2F0b3JXaW5kb3c6OmNsb3NlV2luZG93
KCkKICAgICBtX3RleHRJbmRpY2F0b3JXaW5kb3cgPSBudWxscHRyOwogfQogCi12b2lkIFRleHRJ
bmRpY2F0b3JXaW5kb3c6OnN0YXJ0RmFkZU91dFRpbWVyRmlyZWQoKQordm9pZCBUZXh0SW5kaWNh
dG9yV2luZG93OjpzdGFydEZhZGVPdXQoKQogewogICAgIFJldGFpblB0cjxOU1dpbmRvdz4gaW5k
aWNhdG9yV2luZG93ID0gbV90ZXh0SW5kaWNhdG9yV2luZG93OwogICAgIFttX3RleHRJbmRpY2F0
b3JWaWV3IGhpZGVXaXRoQ29tcGxldGlvbkhhbmRsZXI6W2luZGljYXRvcldpbmRvd10gewpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vc3BpL21hYy9OU0ltbWVkaWF0ZUFjdGlv
bkdlc3R1cmVSZWNvZ25pemVyU1BJLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9zcGkvbWFj
L05TSW1tZWRpYXRlQWN0aW9uR2VzdHVyZVJlY29nbml6ZXJTUEkuaAppbmRleCBkZDJhZmFjOWRl
YTY1M2Q2YjFkNWMzZWVhNDA0ZjQ3OWJmOTc0M2RlLi5lYmI1Y2RkMTBhYmY4NWQ4MmZhYThlY2Ex
NTVmYWE5NTc4ZTkyNzFjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9zcGkv
bWFjL05TSW1tZWRpYXRlQWN0aW9uR2VzdHVyZVJlY29nbml6ZXJTUEkuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9zcGkvbWFjL05TSW1tZWRpYXRlQWN0aW9uR2VzdHVyZVJlY29nbml6
ZXJTUEkuaApAQCAtNTUsNiArNTUsNyBAQAogQGludGVyZmFjZSBOU0ltbWVkaWF0ZUFjdGlvbkdl
c3R1cmVSZWNvZ25pemVyIDogTlNHZXN0dXJlUmVjb2duaXplcgogCiBAcHJvcGVydHkgKHN0cm9u
ZykgaWQ8TlNJbW1lZGlhdGVBY3Rpb25BbmltYXRpb25Db250cm9sbGVyPiBhbmltYXRpb25Db250
cm9sbGVyOworQHByb3BlcnR5IChyZWFkb25seSkgQ0dGbG9hdCBhbmltYXRpb25Qcm9ncmVzczsK
IAogQGVuZAogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYkFjdGlv
bk1lbnVDb250cm9sbGVyLm1tIGIvU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJBY3Rpb25N
ZW51Q29udHJvbGxlci5tbQppbmRleCBlYzVmMmZhMDU5ZTgyYzM5MDUyM2RkYmZmZDQ3NDI2M2I2
NGQxNjYwLi5lZjBmMjc3ZmFmNmVmZjgzNWFhN2I1MWQ2M2ZjZDEzOWI4NjhmYjNiIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYkFjdGlvbk1lbnVDb250cm9sbGVyLm1t
CisrKyBiL1NvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViQWN0aW9uTWVudUNvbnRyb2xsZXIu
bW0KQEAgLTgxOCw3ICs4MTgsNyBAQCBzdGF0aWMgTlNTdHJpbmcgKnBhdGhUb1Bob3RvT25EaXNr
KE5TU3RyaW5nICpzdWdnZXN0ZWRGaWxlbmFtZSkKICAgICAgICAgcmV0dXJuOwogCiAgICAgaWYg
KF90eXBlID09IFdlYkFjdGlvbk1lbnVEYXRhRGV0ZWN0ZWRJdGVtICYmIF9jdXJyZW50RGV0ZWN0
ZWREYXRhVGV4dEluZGljYXRvcikgewotICAgICAgICBbX3dlYlZpZXcgX3NldFRleHRJbmRpY2F0
b3I6X2N1cnJlbnREZXRlY3RlZERhdGFUZXh0SW5kaWNhdG9yLmdldCgpIGZhZGVPdXQ6Tk8gYW5p
bWF0aW9uQ29tcGxldGlvbkhhbmRsZXI6XiB7IH1dOworICAgICAgICBbX3dlYlZpZXcgX3NldFRl
eHRJbmRpY2F0b3I6X2N1cnJlbnREZXRlY3RlZERhdGFUZXh0SW5kaWNhdG9yLmdldCgpIGZhZGVP
dXQ6Tk9dOwogICAgICAgICBfaXNTaG93aW5nVGV4dEluZGljYXRvciA9IFlFUzsKICAgICB9CiB9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYkhUTUxWaWV3Lm1tIGIv
U291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJIVE1MVmlldy5tbQppbmRleCBkYzg5Mjk0NGIx
MzQxYjc1YmQ4NDVlYzBlYmQ5NTkzZjFkOTcyMDhmLi40NDY2OWJjMjg4MGQ5ZmNhN2VmNDQ1Nzll
NzA4ZTk4MjE4Yjg2YTU4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dl
YkhUTUxWaWV3Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViSFRNTFZpZXcu
bW0KQEAgLTU2NTEsNyArNTY1MSw3IEBAIHN0YXRpYyBCT09MIHdyaXRpbmdEaXJlY3Rpb25LZXlC
aW5kaW5nc0VuYWJsZWQoKQogCiAtICh2b2lkKXF1aWNrTG9va1dpdGhFdmVudDooTlNFdmVudCAq
KWV2ZW50CiB7Ci0gICAgW1tzZWxmIF93ZWJWaWV3XSBfc2V0VGV4dEluZGljYXRvcjpudWxscHRy
IGZhZGVPdXQ6Tk8gYW5pbWF0aW9uQ29tcGxldGlvbkhhbmRsZXI6W10geyB9XTsKKyAgICBbW3Nl
bGYgX3dlYlZpZXddIF9zZXRUZXh0SW5kaWNhdG9yOm51bGxwdHIgZmFkZU91dDpOT107CiAgICAg
W3N1cGVyIHF1aWNrTG9va1dpdGhFdmVudDpldmVudF07CiB9CiAjZW5kaWYgLy8gIVBMQVRGT1JN
KElPUykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViSW1tZWRpYXRl
QWN0aW9uQ29udHJvbGxlci5tbSBiL1NvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViSW1tZWRp
YXRlQWN0aW9uQ29udHJvbGxlci5tbQppbmRleCA4Y2VmMjEzNWMzMThmNmI2ZTRjMTYzNDQ0ZTU0
ZWMzYThhNTUwNWY3Li5iOGNkZTZlNjUyNGE0YWVkNzZlYTVmNTY3OTYzNTlhNTNiN2FlNjNhIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYkltbWVkaWF0ZUFjdGlvbkNv
bnRyb2xsZXIubW0KKysrIGIvU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJJbW1lZGlhdGVB
Y3Rpb25Db250cm9sbGVyLm1tCkBAIC00MSw2ICs0MSw3IEBACiAjaW1wb3J0IDxXZWJDb3JlL0Rh
dGFEZXRlY3RvcnNTUEkuaD4KICNpbXBvcnQgPFdlYkNvcmUvRGljdGlvbmFyeUxvb2t1cC5oPgog
I2ltcG9ydCA8V2ViQ29yZS9FdmVudEhhbmRsZXIuaD4KKyNpbXBvcnQgPFdlYkNvcmUvRm9jdXND
b250cm9sbGVyLmg+CiAjaW1wb3J0IDxXZWJDb3JlL0ZyYW1lLmg+CiAjaW1wb3J0IDxXZWJDb3Jl
L0ZyYW1lVmlldy5oPgogI2ltcG9ydCA8V2ViQ29yZS9IVE1MQ29udmVydGVyLmg+CkBAIC0xMjEs
NiArMTIyLDggQEAgdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAgICAgaWYgKGltbWVkaWF0ZUFj
dGlvblJlY29nbml6ZXIgIT0gX2ltbWVkaWF0ZUFjdGlvblJlY29nbml6ZXIpCiAgICAgICAgIHJl
dHVybjsKIAorICAgIFtfd2ViVmlldyBfc2V0TWFpbnRhaW5zSW5hY3RpdmVTZWxlY3Rpb246WUVT
XTsKKwogICAgIFdlYkhUTUxWaWV3ICpkb2N1bWVudFZpZXcgPSBbW1tfd2ViVmlldyBfc2VsZWN0
ZWRPck1haW5GcmFtZV0gZnJhbWVWaWV3XSBkb2N1bWVudFZpZXddOwogICAgIE5TUG9pbnQgbG9j
YXRpb25JbkRvY3VtZW50VmlldyA9IFtpbW1lZGlhdGVBY3Rpb25SZWNvZ25pemVyIGxvY2F0aW9u
SW5WaWV3OmRvY3VtZW50Vmlld107CiAgICAgW3NlbGYgcGVyZm9ybUhpdFRlc3RBdFBvaW50Omxv
Y2F0aW9uSW5Eb2N1bWVudFZpZXddOwpAQCAtMTQ2LDEyICsxNDksMjIgQEAgdXNpbmcgbmFtZXNw
YWNlIFdlYkNvcmU7CiAgICAgLy8gRklYTUU6IEFkZCBzdXBwb3J0IGZvciB0aGUgdHlwZXMgb2Yg
ZnVuY3Rpb25hbGl0eSBwcm92aWRlZCBpbiBBY3Rpb24gbWVudSdzIG1lbnVOZWVkc1VwZGF0ZS4K
IH0KIAorLSAodm9pZClpbW1lZGlhdGVBY3Rpb25SZWNvZ25pemVyRGlkVXBkYXRlQW5pbWF0aW9u
OihOU0ltbWVkaWF0ZUFjdGlvbkdlc3R1cmVSZWNvZ25pemVyICopaW1tZWRpYXRlQWN0aW9uUmVj
b2duaXplcgoreworICAgIGlmIChpbW1lZGlhdGVBY3Rpb25SZWNvZ25pemVyICE9IF9pbW1lZGlh
dGVBY3Rpb25SZWNvZ25pemVyKQorICAgICAgICByZXR1cm47CisKKyAgICBbX3dlYlZpZXcgX3Nl
dFRleHRJbmRpY2F0b3JBbmltYXRpb25Qcm9ncmVzczpbaW1tZWRpYXRlQWN0aW9uUmVjb2duaXpl
ciBhbmltYXRpb25Qcm9ncmVzc11dOworfQorCiAtICh2b2lkKWltbWVkaWF0ZUFjdGlvblJlY29n
bml6ZXJEaWRDYW5jZWxBbmltYXRpb246KE5TSW1tZWRpYXRlQWN0aW9uR2VzdHVyZVJlY29nbml6
ZXIgKilpbW1lZGlhdGVBY3Rpb25SZWNvZ25pemVyCiB7CiAgICAgaWYgKGltbWVkaWF0ZUFjdGlv
blJlY29nbml6ZXIgIT0gX2ltbWVkaWF0ZUFjdGlvblJlY29nbml6ZXIpCiAgICAgICAgIHJldHVy
bjsKIAorICAgIFtfd2ViVmlldyBfc2V0VGV4dEluZGljYXRvckFuaW1hdGlvblByb2dyZXNzOjBd
OwogICAgIFtzZWxmIF9jbGVhckltbWVkaWF0ZUFjdGlvblN0YXRlXTsKKyAgICBbX3dlYlZpZXcg
X3NldE1haW50YWluc0luYWN0aXZlU2VsZWN0aW9uOk5PXTsKIH0KIAogLSAodm9pZClpbW1lZGlh
dGVBY3Rpb25SZWNvZ25pemVyRGlkQ29tcGxldGVBbmltYXRpb246KE5TSW1tZWRpYXRlQWN0aW9u
R2VzdHVyZVJlY29nbml6ZXIgKilpbW1lZGlhdGVBY3Rpb25SZWNvZ25pemVyCkBAIC0xNTksNyAr
MTcyLDggQEAgdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAgICAgaWYgKGltbWVkaWF0ZUFjdGlv
blJlY29nbml6ZXIgIT0gX2ltbWVkaWF0ZUFjdGlvblJlY29nbml6ZXIpCiAgICAgICAgIHJldHVy
bjsKIAotICAgIC8vIEZJWE1FOiBBZGQgc3VwcG9ydCBmb3IgdGhlIHR5cGVzIG9mIGZ1bmN0aW9u
YWxpdHkgcHJvdmlkZWQgaW4gQWN0aW9uIG1lbnUncyB3aWxsT3Blbk1lbnUuCisgICAgW193ZWJW
aWV3IF9zZXRUZXh0SW5kaWNhdG9yQW5pbWF0aW9uUHJvZ3Jlc3M6MV07CisgICAgW193ZWJWaWV3
IF9zZXRNYWludGFpbnNJbmFjdGl2ZVNlbGVjdGlvbjpOT107CiB9CiAKICNwcmFnbWEgbWFyayBJ
bW1lZGlhdGUgYWN0aW9ucwpAQCAtMjY4LDcgKzI4Miw3IEBAIHVzaW5nIG5hbWVzcGFjZSBXZWJD
b3JlOwogICAgICAgICAgICAgcmV0dXJuIG5pbDsKICAgICB9CiAKLSAgICBfY3VycmVudERldGVj
dGVkRGF0YVRleHRJbmRpY2F0b3IgPSBUZXh0SW5kaWNhdG9yOjpjcmVhdGVXaXRoUmFuZ2UoKmRl
dGVjdGVkRGF0YVJhbmdlLCBUZXh0SW5kaWNhdG9yUHJlc2VudGF0aW9uVHJhbnNpdGlvbjo6Qm91
bmNlQW5kQ3Jvc3NmYWRlKTsKKyAgICBfY3VycmVudERldGVjdGVkRGF0YVRleHRJbmRpY2F0b3Ig
PSBUZXh0SW5kaWNhdG9yOjpjcmVhdGVXaXRoUmFuZ2UoKmRldGVjdGVkRGF0YVJhbmdlLCBUZXh0
SW5kaWNhdG9yUHJlc2VudGF0aW9uVHJhbnNpdGlvbjo6RmFkZUluKTsKIAogICAgIF9jdXJyZW50
QWN0aW9uQ29udGV4dCA9IFthY3Rpb25Db250ZXh0IGNvbnRleHRGb3JWaWV3Ol93ZWJWaWV3IGFs
dE1vZGU6WUVTIGludGVyYWN0aW9uU3RhcnRlZEhhbmRsZXI6XigpIHsKICAgICB9IGludGVyYWN0
aW9uQ2hhbmdlZEhhbmRsZXI6XigpIHsKQEAgLTI4NCw4ICsyOTgsNiBAQCB1c2luZyBuYW1lc3Bh
Y2UgV2ViQ29yZTsKICAgICBpZiAobWVudUl0ZW1zLmNvdW50ICE9IDEpCiAgICAgICAgIHJldHVy
biBuaWw7CiAKLSAgICBpZiAoX2N1cnJlbnREZXRlY3RlZERhdGFUZXh0SW5kaWNhdG9yKQotICAg
ICAgICBfY3VycmVudERldGVjdGVkRGF0YVRleHRJbmRpY2F0b3ItPnNldFByZXNlbnRhdGlvblRy
YW5zaXRpb24oVGV4dEluZGljYXRvclByZXNlbnRhdGlvblRyYW5zaXRpb246OkJvdW5jZSk7CiAg
ICAgcmV0dXJuIG1lbnVJdGVtcy5sYXN0T2JqZWN0OwogfQogCkBAIC0zNDcsNyArMzU5LDkgQEAg
c3RhdGljIERpY3Rpb25hcnlQb3B1cEluZm8gZGljdGlvbmFyeVBvcHVwSW5mb0ZvclJhbmdlKEZy
YW1lKiBmcmFtZSwgUmFuZ2UmIHJhbmcKICAgICBOU0RpY3Rpb25hcnkgKm9wdGlvbnMgPSBuaWw7
CiAgICAgUmVmUHRyPFJhbmdlPiBkaWN0aW9uYXJ5UmFuZ2UgPSByYW5nZUZvckRpY3Rpb25hcnlM
b29rdXBBdEhpdFRlc3RSZXN1bHQoX2hpdFRlc3RSZXN1bHQsICZvcHRpb25zKTsKIAotICAgIERp
Y3Rpb25hcnlQb3B1cEluZm8gZGljdGlvbmFyeVBvcHVwSW5mbyA9IGRpY3Rpb25hcnlQb3B1cElu
Zm9Gb3JSYW5nZShmcmFtZSwgKmRpY3Rpb25hcnlSYW5nZSwgb3B0aW9ucywgVGV4dEluZGljYXRv
clByZXNlbnRhdGlvblRyYW5zaXRpb246OkJvdW5jZSk7CisgICAgUmVmUHRyPFJhbmdlPiBzZWxl
Y3Rpb25SYW5nZSA9IGZyYW1lLT5wYWdlKCktPmZvY3VzQ29udHJvbGxlcigpLmZvY3VzZWRPck1h
aW5GcmFtZSgpLnNlbGVjdGlvbigpLnNlbGVjdGlvbigpLmZpcnN0UmFuZ2UoKTsKKyAgICBib29s
IHJhbmdlTWF0Y2hlc1NlbGVjdGlvbiA9IGFyZVJhbmdlc0VxdWFsKGRpY3Rpb25hcnlSYW5nZS5n
ZXQoKSwgc2VsZWN0aW9uUmFuZ2UuZ2V0KCkpOworICAgIERpY3Rpb25hcnlQb3B1cEluZm8gZGlj
dGlvbmFyeVBvcHVwSW5mbyA9IGRpY3Rpb25hcnlQb3B1cEluZm9Gb3JSYW5nZShmcmFtZSwgKmRp
Y3Rpb25hcnlSYW5nZSwgb3B0aW9ucywgcmFuZ2VNYXRjaGVzU2VsZWN0aW9uID8gVGV4dEluZGlj
YXRvclByZXNlbnRhdGlvblRyYW5zaXRpb246OkNyb3NzZmFkZSA6IFRleHRJbmRpY2F0b3JQcmVz
ZW50YXRpb25UcmFuc2l0aW9uOjpGYWRlSW4pOwogICAgIGlmICghZGljdGlvbmFyeVBvcHVwSW5m
by5hdHRyaWJ1dGVkU3RyaW5nKQogICAgICAgICByZXR1cm4gbmlsOwogCkBAIC0zNjIsNyArMzc2
LDcgQEAgc3RhdGljIERpY3Rpb25hcnlQb3B1cEluZm8gZGljdGlvbmFyeVBvcHVwSW5mb0ZvclJh
bmdlKEZyYW1lKiBmcmFtZSwgUmFuZ2UmIHJhbmcKICAgICAgICAgcmV0dXJuOwogCiAgICAgaWYg
KF90eXBlID09IFdlYkltbWVkaWF0ZUFjdGlvbkRhdGFEZXRlY3RlZEl0ZW0gJiYgX2N1cnJlbnRE
ZXRlY3RlZERhdGFUZXh0SW5kaWNhdG9yKSB7Ci0gICAgICAgIFtfd2ViVmlldyBfc2V0VGV4dElu
ZGljYXRvcjpfY3VycmVudERldGVjdGVkRGF0YVRleHRJbmRpY2F0b3IuZ2V0KCkgZmFkZU91dDpO
TyBhbmltYXRpb25Db21wbGV0aW9uSGFuZGxlcjpeIHsgfV07CisgICAgICAgIFtfd2ViVmlldyBf
c2V0VGV4dEluZGljYXRvcjpfY3VycmVudERldGVjdGVkRGF0YVRleHRJbmRpY2F0b3IuZ2V0KCkg
ZmFkZU91dDpOT107CiAgICAgICAgIF9pc1Nob3dpbmdUZXh0SW5kaWNhdG9yID0gWUVTOwogICAg
IH0KIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViVmlldy5tbSBi
L1NvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViVmlldy5tbQppbmRleCBmNTczZDA5MTFkZTAz
M2FlZjljMGM0ZDk4NWMxNzBiZDNiNzI0ZGM2Li4xMjlkOWQ0MmI1MmZhM2MzZDA1YjlmOTljODg5
MjU1NTA5YWQwMjA1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYlZp
ZXcubW0KKysrIGIvU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJWaWV3Lm1tCkBAIC03MjA2
LDkgKzcyMDYsMTQgQEAgc3RhdGljIE5TQXBwbGVFdmVudERlc2NyaXB0b3IqIGFlRGVzY0Zyb21K
U1ZhbHVlKEV4ZWNTdGF0ZSogZXhlYywgSlNDOjpKU1ZhbHVlIGoKICAgICByZXR1cm4gW1tzZWxm
IF9lZGl0aW5nRGVsZWdhdGVGb3J3YXJkZXJdIHdlYlZpZXc6c2VsZiBzaG91bGRDaGFuZ2VTZWxl
Y3RlZERPTVJhbmdlOmN1cnJlbnRSYW5nZSB0b0RPTVJhbmdlOnByb3Bvc2VkUmFuZ2UgYWZmaW5p
dHk6c2VsZWN0aW9uQWZmaW5pdHkgc3RpbGxTZWxlY3Rpbmc6ZmxhZ107CiB9CiAKKy0gKHZvaWQp
X3NldE1haW50YWluc0luYWN0aXZlU2VsZWN0aW9uOihCT09MKXNob3VsZE1haW50YWluSW5hY3Rp
dmVTZWxlY3Rpb24KK3sKKyAgICBfcHJpdmF0ZS0+c2hvdWxkTWFpbnRhaW5JbmFjdGl2ZVNlbGVj
dGlvbiA9IHNob3VsZE1haW50YWluSW5hY3RpdmVTZWxlY3Rpb247Cit9CisKIC0gKEJPT0wpbWFp
bnRhaW5zSW5hY3RpdmVTZWxlY3Rpb24KIHsKLSAgICByZXR1cm4gTk87CisgICAgcmV0dXJuIF9w
cml2YXRlLT5zaG91bGRNYWludGFpbkluYWN0aXZlU2VsZWN0aW9uOwogfQogCiAtICh2b2lkKXNl
dFNlbGVjdGVkRE9NUmFuZ2U6KERPTVJhbmdlICopcmFuZ2UgYWZmaW5pdHk6KE5TU2VsZWN0aW9u
QWZmaW5pdHkpc2VsZWN0aW9uQWZmaW5pdHkKQEAgLTg2MzIsNiArODYzNyw3IEBAIHN0YXRpYyB2
b2lkIGdsaWJDb250ZXh0SXRlcmF0aW9uQ2FsbGJhY2soQ0ZSdW5Mb29wT2JzZXJ2ZXJSZWYsIENG
UnVuTG9vcEFjdGl2aXR5CiAgICAgICAgIGlmICghbXV0YWJsZU9wdGlvbnMpCiAgICAgICAgICAg
ICBtdXRhYmxlT3B0aW9ucyA9IGFkb3B0TlMoW1tOU011dGFibGVEaWN0aW9uYXJ5IGFsbG9jXSBp
bml0XSk7CiAgICAgICAgIFttdXRhYmxlT3B0aW9ucyBzZXRPYmplY3Q6QFlFUyBmb3JLZXk6Z2V0
TFVUZXJtT3B0aW9uRGlzYWJsZVNlYXJjaFRlcm1JbmRpY2F0b3IoKV07CisgICAgICAgIFtzZWxm
IF9zZXRUZXh0SW5kaWNhdG9yOmRpY3Rpb25hcnlQb3B1cEluZm8udGV4dEluZGljYXRvci5nZXQo
KSBmYWRlT3V0Ok5PXTsKICAgICAgICAgcmV0dXJuIFtnZXRMVUxvb2t1cERlZmluaXRpb25Nb2R1
bGVDbGFzcygpIGxvb2t1cEFuaW1hdGlvbkNvbnRyb2xsZXJGb3JUZXJtOmRpY3Rpb25hcnlQb3B1
cEluZm8uYXR0cmlidXRlZFN0cmluZy5nZXQoKSBhdExvY2F0aW9uOnRleHRCYXNlbGluZU9yaWdp
biBvcHRpb25zOm11dGFibGVPcHRpb25zLmdldCgpXTsKICAgICB9CiAKQEAgLTg2MzksNyArODY0
NSw3IEBAIHN0YXRpYyB2b2lkIGdsaWJDb250ZXh0SXRlcmF0aW9uQ2FsbGJhY2soQ0ZSdW5Mb29w
T2JzZXJ2ZXJSZWYsIENGUnVuTG9vcEFjdGl2aXR5CiB9CiAjZW5kaWYgLy8gX19NQUNfT1NfWF9W
RVJTSU9OX01JTl9SRVFVSVJFRCA+PSAxMDEwMDAKIAotLSAodm9pZClfc2V0VGV4dEluZGljYXRv
cjooVGV4dEluZGljYXRvciAqKXRleHRJbmRpY2F0b3IgZmFkZU91dDooQk9PTClmYWRlT3V0IGFu
aW1hdGlvbkNvbXBsZXRpb25IYW5kbGVyOihzdGQ6OmZ1bmN0aW9uPHZvaWQgKCk+KWNvbXBsZXRp
b25IYW5kbGVyCistICh2b2lkKV9zZXRUZXh0SW5kaWNhdG9yOihUZXh0SW5kaWNhdG9yICopdGV4
dEluZGljYXRvciBmYWRlT3V0OihCT09MKWZhZGVPdXQKIHsKICAgICBpZiAoIXRleHRJbmRpY2F0
b3IpIHsKICAgICAgICAgX3ByaXZhdGUtPnRleHRJbmRpY2F0b3JXaW5kb3cgPSBudWxscHRyOwpA
QCAtODY1MCwxMiArODY1NiwxOCBAQCBzdGF0aWMgdm9pZCBnbGliQ29udGV4dEl0ZXJhdGlvbkNh
bGxiYWNrKENGUnVuTG9vcE9ic2VydmVyUmVmLCBDRlJ1bkxvb3BBY3Rpdml0eQogICAgICAgICBf
cHJpdmF0ZS0+dGV4dEluZGljYXRvcldpbmRvdyA9IHN0ZDo6bWFrZV91bmlxdWU8VGV4dEluZGlj
YXRvcldpbmRvdz4oc2VsZik7CiAKICAgICBOU1JlY3QgY29udGVudFJlY3QgPSBbc2VsZi53aW5k
b3cgY29udmVydFJlY3RUb1NjcmVlbjp0ZXh0SW5kaWNhdG9yLT50ZXh0Qm91bmRpbmdSZWN0SW5X
aW5kb3dDb29yZGluYXRlcygpXTsKLSAgICBfcHJpdmF0ZS0+dGV4dEluZGljYXRvcldpbmRvdy0+
c2V0VGV4dEluZGljYXRvcih0ZXh0SW5kaWNhdG9yLCBOU1JlY3RUb0NHUmVjdChjb250ZW50UmVj
dCksIGZhZGVPdXQsIFdURjo6bW92ZShjb21wbGV0aW9uSGFuZGxlcikpOworICAgIF9wcml2YXRl
LT50ZXh0SW5kaWNhdG9yV2luZG93LT5zZXRUZXh0SW5kaWNhdG9yKHRleHRJbmRpY2F0b3IsIE5T
UmVjdFRvQ0dSZWN0KGNvbnRlbnRSZWN0KSwgZmFkZU91dCk7CiB9CiAKIC0gKHZvaWQpX2NsZWFy
VGV4dEluZGljYXRvcgogewotICAgIFtzZWxmIF9zZXRUZXh0SW5kaWNhdG9yOm51bGxwdHIgZmFk
ZU91dDpOTyBhbmltYXRpb25Db21wbGV0aW9uSGFuZGxlcjpeIHsgfV07CisgICAgW3NlbGYgX3Nl
dFRleHRJbmRpY2F0b3I6bnVsbHB0ciBmYWRlT3V0Ok5PXTsKK30KKworLSAodm9pZClfc2V0VGV4
dEluZGljYXRvckFuaW1hdGlvblByb2dyZXNzOihmbG9hdClwcm9ncmVzcworeworICAgIGlmIChf
cHJpdmF0ZS0+dGV4dEluZGljYXRvcldpbmRvdykKKyAgICAgICAgX3ByaXZhdGUtPnRleHRJbmRp
Y2F0b3JXaW5kb3ctPnNldEFuaW1hdGlvblByb2dyZXNzKHByb2dyZXNzKTsKIH0KIAogLSAodm9p
ZClfc2hvd0RpY3Rpb25hcnlMb29rdXBQb3B1cDooY29uc3QgRGljdGlvbmFyeVBvcHVwSW5mbyYp
ZGljdGlvbmFyeVBvcHVwSW5mbwpAQCAtODY3OCwxNiArODY5MCwxNSBAQCBzdGF0aWMgdm9pZCBn
bGliQ29udGV4dEl0ZXJhdGlvbkNhbGxiYWNrKENGUnVuTG9vcE9ic2VydmVyUmVmLCBDRlJ1bkxv
b3BBY3Rpdml0eQogICAgICAgICBpZiAoIW11dGFibGVPcHRpb25zKQogICAgICAgICAgICAgbXV0
YWJsZU9wdGlvbnMgPSBhZG9wdE5TKFtbTlNNdXRhYmxlRGljdGlvbmFyeSBhbGxvY10gaW5pdF0p
OwogICAgICAgICBbbXV0YWJsZU9wdGlvbnMgc2V0T2JqZWN0OkBZRVMgZm9yS2V5OmdldExVVGVy
bU9wdGlvbkRpc2FibGVTZWFyY2hUZXJtSW5kaWNhdG9yKCldOwotICAgICAgICBbc2VsZiBfc2V0
VGV4dEluZGljYXRvcjpkaWN0aW9uYXJ5UG9wdXBJbmZvLnRleHRJbmRpY2F0b3IuZ2V0KCkgZmFk
ZU91dDpOTyBhbmltYXRpb25Db21wbGV0aW9uSGFuZGxlcjpbZGljdGlvbmFyeVBvcHVwSW5mbywg
dGV4dEJhc2VsaW5lT3JpZ2luLCBtdXRhYmxlT3B0aW9uc10gewotICAgICAgICAgICAgW2dldExV
TG9va3VwRGVmaW5pdGlvbk1vZHVsZUNsYXNzKCkgc2hvd0RlZmluaXRpb25Gb3JUZXJtOmRpY3Rp
b25hcnlQb3B1cEluZm8uYXR0cmlidXRlZFN0cmluZy5nZXQoKSBhdExvY2F0aW9uOnRleHRCYXNl
bGluZU9yaWdpbiBvcHRpb25zOm11dGFibGVPcHRpb25zLmdldCgpXTsKLSAgICAgICAgfV07Cisg
ICAgICAgIFtzZWxmIF9zZXRUZXh0SW5kaWNhdG9yOmRpY3Rpb25hcnlQb3B1cEluZm8udGV4dElu
ZGljYXRvci5nZXQoKSBmYWRlT3V0Ok5PXTsKKyAgICAgICAgW2dldExVTG9va3VwRGVmaW5pdGlv
bk1vZHVsZUNsYXNzKCkgc2hvd0RlZmluaXRpb25Gb3JUZXJtOmRpY3Rpb25hcnlQb3B1cEluZm8u
YXR0cmlidXRlZFN0cmluZy5nZXQoKSBhdExvY2F0aW9uOnRleHRCYXNlbGluZU9yaWdpbiBvcHRp
b25zOm11dGFibGVPcHRpb25zLmdldCgpXTsKICAgICB9IGVsc2UKICAgICAgICAgW2dldExVTG9v
a3VwRGVmaW5pdGlvbk1vZHVsZUNsYXNzKCkgc2hvd0RlZmluaXRpb25Gb3JUZXJtOmRpY3Rpb25h
cnlQb3B1cEluZm8uYXR0cmlidXRlZFN0cmluZy5nZXQoKSBhdExvY2F0aW9uOnRleHRCYXNlbGlu
ZU9yaWdpbiBvcHRpb25zOmRpY3Rpb25hcnlQb3B1cEluZm8ub3B0aW9ucy5nZXQoKV07CiB9CiAK
IC0gKHZvaWQpX2RpY3Rpb25hcnlMb29rdXBQb3BvdmVyV2lsbENsb3NlOihOU05vdGlmaWNhdGlv
biAqKW5vdGlmaWNhdGlvbgogewotICAgIFtzZWxmIF9zZXRUZXh0SW5kaWNhdG9yOm51bGxwdHIg
ZmFkZU91dDpOTyBhbmltYXRpb25Db21wbGV0aW9uSGFuZGxlcjpbXSB7IH1dOworICAgIFtzZWxm
IF9zZXRUZXh0SW5kaWNhdG9yOm51bGxwdHIgZmFkZU91dDpOT107CiB9CiAjZW5kaWYgLy8gUExB
VEZPUk0oTUFDKQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYlZp
ZXdEYXRhLmggYi9Tb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYlZpZXdEYXRhLmgKaW5kZXgg
NDVkNTYwNzQ1ZjU5NmVmOTYxMWQ3ZGJjNGNhOWE5NWZiNDM0ODc1NC4uYmFiZDg4MjkzZDVkNTQ2
OGIzYjRiZmI0MDY3ZTQ1ODYyZGVjNTAwMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9tYWMv
V2ViVmlldy9XZWJWaWV3RGF0YS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2Vi
Vmlld0RhdGEuaApAQCAtMTU3LDYgKzE1Nyw4IEBAIHByaXZhdGU6CiAgICAgQk9PTCBoYXNJbml0
aWFsaXplZExvb2t1cE9ic2VydmVyOwogI2VuZGlmIC8vIFBMQVRGT1JNKE1BQykKIAorICAgIEJP
T0wgc2hvdWxkTWFpbnRhaW5JbmFjdGl2ZVNlbGVjdGlvbjsKKwogICAgIEJPT0wgYWxsb3dzVW5k
bzsKICAgICAgICAgCiAgICAgZmxvYXQgem9vbU11bHRpcGxpZXI7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYlZpZXdJbnRlcm5hbC5oIGIvU291cmNlL1dlYktpdC9t
YWMvV2ViVmlldy9XZWJWaWV3SW50ZXJuYWwuaAppbmRleCA4OGRkM2NkNDk3ZmY3YzJiZDA0NzRm
YTA2ZmU4NWY1ODIwYjc5NTJlLi4wM2MwOTg2NmVkMGVjMTk0NDFhMGE4ODc1NzVhZmUyYTE2MDFm
OTZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYlZpZXdJbnRlcm5h
bC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViVmlld0ludGVybmFsLmgKQEAg
LTI1OCw5ICsyNTgsMTIgQEAgT0JKQ19DTEFTUyBOU1RleHRBbHRlcm5hdGl2ZXM7CiAtIChOU1Bv
aW50KV9jb252ZXJ0UG9pbnRGcm9tUm9vdFZpZXc6KE5TUG9pbnQpcG9pbnQ7CiAtIChOU1JlY3Qp
X2NvbnZlcnRSZWN0RnJvbVJvb3RWaWV3OihOU1JlY3QpcmVjdDsKIAorLSAodm9pZClfc2V0TWFp
bnRhaW5zSW5hY3RpdmVTZWxlY3Rpb246KEJPT0wpc2hvdWxkTWFpbnRhaW5JbmFjdGl2ZVNlbGVj
dGlvbjsKKwogI2lmIFBMQVRGT1JNKE1BQykgJiYgZGVmaW5lZChfX2NwbHVzcGx1cykKLS0gKHZv
aWQpX3NldFRleHRJbmRpY2F0b3I6KFdlYkNvcmU6OlRleHRJbmRpY2F0b3IqKXRleHRJbmRpY2F0
b3IgZmFkZU91dDooQk9PTClmYWRlT3V0IGFuaW1hdGlvbkNvbXBsZXRpb25IYW5kbGVyOihzdGQ6
OmZ1bmN0aW9uPHZvaWQgKCk+KWNvbXBsZXRpb25IYW5kbGVyOworLSAodm9pZClfc2V0VGV4dElu
ZGljYXRvcjooV2ViQ29yZTo6VGV4dEluZGljYXRvciopdGV4dEluZGljYXRvciBmYWRlT3V0OihC
T09MKWZhZGVPdXQ7CiAtICh2b2lkKV9jbGVhclRleHRJbmRpY2F0b3I7CistICh2b2lkKV9zZXRU
ZXh0SW5kaWNhdG9yQW5pbWF0aW9uUHJvZ3Jlc3M6KGZsb2F0KXByb2dyZXNzOwogLSAodm9pZClf
c2hvd0RpY3Rpb25hcnlMb29rdXBQb3B1cDooY29uc3QgRGljdGlvbmFyeVBvcHVwSW5mbyYpZGlj
dGlvbmFyeVBvcHVwSW5mbzsKICNpZiBfX01BQ19PU19YX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49
IDEwMTAwMAogLSAoaWQpX2FuaW1hdGlvbkNvbnRyb2xsZXJGb3JEaWN0aW9uYXJ5TG9va3VwUG9w
dXBJbmZvOihjb25zdCBEaWN0aW9uYXJ5UG9wdXBJbmZvJilkaWN0aW9uYXJ5UG9wdXBJbmZvOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9tYWMvV0tWaWV3Lm1tIGIv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9tYWMvV0tWaWV3Lm1tCmluZGV4IDcwMjMxMDAx
Y2I2MzU0ZDQzNzUwMWJiYzY5MjhjODU3YmQ2ZWI4MzMuLjZjZDU1ZjNhOTg3NjE5MGMzZjRjOTA5
YWZlNzM1ZDI4ODcxYTE4NzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9B
UEkvbWFjL1dLVmlldy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL21hYy9X
S1ZpZXcubW0KQEAgLTMwOTUsNyArMzA5NSw3IEBAIHN0YXRpYyB2b2lkKiBrZXlWYWx1ZU9ic2Vy
dmluZ0NvbnRleHQgPSAma2V5VmFsdWVPYnNlcnZpbmdDb250ZXh0OwogICAgIH0KIH0KIAotLSAo
dm9pZClfc2V0VGV4dEluZGljYXRvcjooUGFzc1JlZlB0cjxUZXh0SW5kaWNhdG9yPil0ZXh0SW5k
aWNhdG9yIGZhZGVPdXQ6KEJPT0wpZmFkZU91dCBhbmltYXRpb25Db21wbGV0aW9uSGFuZGxlcjoo
c3RkOjpmdW5jdGlvbjx2b2lkICgpPiljb21wbGV0aW9uSGFuZGxlcgorLSAodm9pZClfc2V0VGV4
dEluZGljYXRvcjooUGFzc1JlZlB0cjxUZXh0SW5kaWNhdG9yPil0ZXh0SW5kaWNhdG9yIGZhZGVP
dXQ6KEJPT0wpZmFkZU91dAogewogICAgIGlmICghdGV4dEluZGljYXRvcikgewogICAgICAgICBf
ZGF0YS0+X3RleHRJbmRpY2F0b3JXaW5kb3cgPSBudWxscHRyOwpAQCAtMzEwNiwxMiArMzEwNiwx
MyBAQCBzdGF0aWMgdm9pZCoga2V5VmFsdWVPYnNlcnZpbmdDb250ZXh0ID0gJmtleVZhbHVlT2Jz
ZXJ2aW5nQ29udGV4dDsKICAgICAgICAgX2RhdGEtPl90ZXh0SW5kaWNhdG9yV2luZG93ID0gc3Rk
OjptYWtlX3VuaXF1ZTxUZXh0SW5kaWNhdG9yV2luZG93PihzZWxmKTsKIAogICAgIE5TUmVjdCBj
b250ZW50UmVjdCA9IFtzZWxmLndpbmRvdyBjb252ZXJ0UmVjdFRvU2NyZWVuOltzZWxmIGNvbnZl
cnRSZWN0OnRleHRJbmRpY2F0b3ItPnRleHRCb3VuZGluZ1JlY3RJbldpbmRvd0Nvb3JkaW5hdGVz
KCkgdG9WaWV3Om5pbF1dOwotICAgIF9kYXRhLT5fdGV4dEluZGljYXRvcldpbmRvdy0+c2V0VGV4
dEluZGljYXRvcih0ZXh0SW5kaWNhdG9yLCBOU1JlY3RUb0NHUmVjdChjb250ZW50UmVjdCksIGZh
ZGVPdXQsIFdURjo6bW92ZShjb21wbGV0aW9uSGFuZGxlcikpOworICAgIF9kYXRhLT5fdGV4dElu
ZGljYXRvcldpbmRvdy0+c2V0VGV4dEluZGljYXRvcih0ZXh0SW5kaWNhdG9yLCBOU1JlY3RUb0NH
UmVjdChjb250ZW50UmVjdCksIGZhZGVPdXQpOwogfQogCi0tICh2b2lkKV9zZXRUZXh0SW5kaWNh
dG9yOihQYXNzUmVmUHRyPFRleHRJbmRpY2F0b3I+KXRleHRJbmRpY2F0b3IgZmFkZU91dDooQk9P
TClmYWRlT3V0CistICh2b2lkKV9zZXRUZXh0SW5kaWNhdG9yQW5pbWF0aW9uUHJvZ3Jlc3M6KGZs
b2F0KXByb2dyZXNzCiB7Ci0gICAgW3NlbGYgX3NldFRleHRJbmRpY2F0b3I6dGV4dEluZGljYXRv
ciBmYWRlT3V0OmZhZGVPdXQgYW5pbWF0aW9uQ29tcGxldGlvbkhhbmRsZXI6W10geyB9XTsKKyAg
ICBpZiAoX2RhdGEtPl90ZXh0SW5kaWNhdG9yV2luZG93KQorICAgICAgICBfZGF0YS0+X3RleHRJ
bmRpY2F0b3JXaW5kb3ctPnNldEFuaW1hdGlvblByb2dyZXNzKHByb2dyZXNzKTsKIH0KIAogLSAo
Q0FMYXllciAqKV9yb290TGF5ZXIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9BUEkvbWFjL1dLVmlld0ludGVybmFsLmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJ
L21hYy9XS1ZpZXdJbnRlcm5hbC5oCmluZGV4IDllODNmOGZiOGRkYjdjNTNmYjlkNWI2N2FkYTNm
YmI3ZDk2ZmNkNjguLmQ0N2FmZDFiZmE0MzFiZmYzZTY5ZDFhYzU3NjRjNWE0ODJmNDczMTEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvbWFjL1dLVmlld0ludGVybmFs
LmgKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9tYWMvV0tWaWV3SW50ZXJuYWwu
aApAQCAtODEsNyArODEsNyBAQCBzdHJ1Y3QgV2ViUGFnZUNvbmZpZ3VyYXRpb247CiAtIChOU1Jl
Y3QpX2NvbnZlcnRUb0RldmljZVNwYWNlOihOU1JlY3QpcmVjdDsKIC0gKE5TUmVjdClfY29udmVy
dFRvVXNlclNwYWNlOihOU1JlY3QpcmVjdDsKIC0gKHZvaWQpX3NldFRleHRJbmRpY2F0b3I6KFBh
c3NSZWZQdHI8V2ViQ29yZTo6VGV4dEluZGljYXRvcj4pdGV4dEluZGljYXRvciBmYWRlT3V0OihC
T09MKWZhZGVPdXQ7Ci0tICh2b2lkKV9zZXRUZXh0SW5kaWNhdG9yOihQYXNzUmVmUHRyPFdlYkNv
cmU6OlRleHRJbmRpY2F0b3I+KXRleHRJbmRpY2F0b3IgZmFkZU91dDooQk9PTClmYWRlT3V0IGFu
aW1hdGlvbkNvbXBsZXRpb25IYW5kbGVyOihzdGQ6OmZ1bmN0aW9uPHZvaWQgKCk+KWNvbXBsZXRp
b25IYW5kbGVyOworLSAodm9pZClfc2V0VGV4dEluZGljYXRvckFuaW1hdGlvblByb2dyZXNzOihm
bG9hdClwcm9ncmVzczsKIAogLSAodm9pZClfc2V0QWNjZWxlcmF0ZWRDb21wb3NpdGluZ01vZGVS
b290TGF5ZXI6KENBTGF5ZXIgKilyb290TGF5ZXI7CiAtIChDQUxheWVyICopX2FjY2VsZXJhdGVk
Q29tcG9zaXRpbmdNb2RlUm9vdExheWVyOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL1BhZ2VDbGllbnQuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9QYWdlQ2xpZW50
LmgKaW5kZXggYWI3OTg4Y2MwNzNmNTE2NWE1MmIxYmMyYmZjMWI1YjJhNWMxZjc0ZS4uZmMzOWZh
YTczZjQ5ODZiMTY4YzEwZGY1NGEyY2E0ZWNlZmE3MTg3NSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL1BhZ2VDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvUGFnZUNsaWVudC5oCkBAIC0yMTksNiArMjE5LDcgQEAgcHVibGljOgogI2VuZGlmCiAKICAg
ICB2aXJ0dWFsIHZvaWQgc2V0VGV4dEluZGljYXRvcihQYXNzUmVmUHRyPFdlYkNvcmU6OlRleHRJ
bmRpY2F0b3I+LCBib29sIGZhZGVPdXQpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgc2V0VGV4dElu
ZGljYXRvckFuaW1hdGlvblByb2dyZXNzKGZsb2F0KSA9IDA7CiAKICAgICB2aXJ0dWFsIHZvaWQg
ZW50ZXJBY2NlbGVyYXRlZENvbXBvc2l0aW5nTW9kZShjb25zdCBMYXllclRyZWVDb250ZXh0Jikg
PSAwOwogICAgIHZpcnR1YWwgdm9pZCBleGl0QWNjZWxlcmF0ZWRDb21wb3NpdGluZ01vZGUoKSA9
IDA7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNw
cCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCmluZGV4IDcyZTMz
YTg3ZjNmOTg3OTBjZmMyNDgwMDJiZDk4YzI2ZmFlYzI0NWQuLmFiYTA0NTVjOWE4MjY0MzU5MmQ4
MTk5MzU2NjhlYTEyNjk5NTdhZjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9XZWJQYWdlUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdl
UHJveHkuY3BwCkBAIC0yODYsNiArMjg2LDcgQEAgV2ViUGFnZVByb3h5OjpXZWJQYWdlUHJveHko
UGFnZUNsaWVudCYgcGFnZUNsaWVudCwgV2ViUHJvY2Vzc1Byb3h5JiBwcm9jZXNzLCB1aW4KICAg
ICAsIG1fdmlld1N0YXRlKFZpZXdTdGF0ZTo6Tm9GbGFncykKICAgICAsIG1fdmlld1dhc0V2ZXJJ
bldpbmRvdyhmYWxzZSkKICAgICAsIG1fYmFja0ZvcndhcmRMaXN0KFdlYkJhY2tGb3J3YXJkTGlz
dDo6Y3JlYXRlKCp0aGlzKSkKKyAgICAsIG1fbWFpbnRhaW5zSW5hY3RpdmVTZWxlY3Rpb24oZmFs
c2UpCiAjaWYgUExBVEZPUk0oTUFDKSAmJiAhVVNFKEFTWU5DX05TVEVYVElOUFVUQ0xJRU5UKQog
ICAgICwgbV90ZW1wb3JhcmlseUNsb3NlZENvbXBvc2l0aW9uKGZhbHNlKQogI2VuZGlmCkBAIC0z
Njg4LDYgKzM2ODksMTEgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmNsZWFyVGV4dEluZGljYXRvcigp
CiAgICAgbV9wYWdlQ2xpZW50LnNldFRleHRJbmRpY2F0b3IobnVsbHB0ciwgZmFsc2UpOwogfQog
Cit2b2lkIFdlYlBhZ2VQcm94eTo6c2V0VGV4dEluZGljYXRvckFuaW1hdGlvblByb2dyZXNzKGZs
b2F0IHByb2dyZXNzKQoreworICAgIG1fcGFnZUNsaWVudC5zZXRUZXh0SW5kaWNhdG9yQW5pbWF0
aW9uUHJvZ3Jlc3MocHJvZ3Jlc3MpOworfQorCiB2b2lkIFdlYlBhZ2VQcm94eTo6ZGlkRmluZFN0
cmluZyhjb25zdCBTdHJpbmcmIHN0cmluZywgdWludDMyX3QgbWF0Y2hDb3VudCwgaW50MzJfdCBt
YXRjaEluZGV4KQogewogICAgIG1fZmluZENsaWVudC0+ZGlkRmluZFN0cmluZyh0aGlzLCBzdHJp
bmcsIG1hdGNoQ291bnQsIG1hdGNoSW5kZXgpOwpAQCAtNTMzNiw5ICs1MzQyLDkgQEAgdm9pZCBX
ZWJQYWdlUHJveHk6OnJlbW92ZU5hdmlnYXRpb25HZXN0dXJlU25hcHNob3QoKQogICAgIG1fcGFn
ZUNsaWVudC5yZW1vdmVOYXZpZ2F0aW9uR2VzdHVyZVNuYXBzaG90KCk7CiB9CiAKLXZvaWQgV2Vi
UGFnZVByb3h5OjpwZXJmb3JtQWN0aW9uTWVudUhpdFRlc3RBdExvY2F0aW9uKEZsb2F0UG9pbnQg
cG9pbnQpCit2b2lkIFdlYlBhZ2VQcm94eTo6cGVyZm9ybUFjdGlvbk1lbnVIaXRUZXN0QXRMb2Nh
dGlvbihGbG9hdFBvaW50IHBvaW50LCBib29sIGZvckltbWVkaWF0ZUFjdGlvbikKIHsKLSAgICBt
X3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlBlcmZvcm1BY3Rpb25NZW51SGl0VGVz
dEF0TG9jYXRpb24ocG9pbnQpLCBtX3BhZ2VJRCk7CisgICAgbV9wcm9jZXNzLT5zZW5kKE1lc3Nh
Z2VzOjpXZWJQYWdlOjpQZXJmb3JtQWN0aW9uTWVudUhpdFRlc3RBdExvY2F0aW9uKHBvaW50LCBm
b3JJbW1lZGlhdGVBY3Rpb24pLCBtX3BhZ2VJRCk7CiB9CiAKIHZvaWQgV2ViUGFnZVByb3h5Ojpz
ZWxlY3RMYXN0QWN0aW9uTWVudVJhbmdlKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9XZWJQYWdlUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdl
UHJveHkuaAppbmRleCAyMGMzMGZhMmFlMjRmNjZjYjczNmUwYzg3NTZlNjRkZjJmNmNkYmQ3Li5m
NWVlMmNhNDFkYTE4MDk2NGUyZjBmOTcxZmZiMjA2ODIwODYyNzc2IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKKysrIGIvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCkBAIC02NzQsNiArNjc0LDcgQEAgcHVibGljOgogICAg
IHZvaWQgY291bnRTdHJpbmdNYXRjaGVzKGNvbnN0IFN0cmluZyYsIEZpbmRPcHRpb25zLCB1bnNp
Z25lZCBtYXhNYXRjaENvdW50KTsKICAgICB2b2lkIGRpZENvdW50U3RyaW5nTWF0Y2hlcyhjb25z
dCBTdHJpbmcmLCB1aW50MzJfdCBtYXRjaENvdW50KTsKICAgICB2b2lkIHNldFRleHRJbmRpY2F0
b3IoY29uc3QgV2ViQ29yZTo6VGV4dEluZGljYXRvckRhdGEmLCBib29sIGZhZGVPdXQpOworICAg
IHZvaWQgc2V0VGV4dEluZGljYXRvckFuaW1hdGlvblByb2dyZXNzKGZsb2F0KTsKICAgICB2b2lk
IGNsZWFyVGV4dEluZGljYXRvcigpOwogICAgIHZvaWQgZGlkRmluZFN0cmluZyhjb25zdCBTdHJp
bmcmLCB1aW50MzJfdCBtYXRjaENvdW50LCBpbnQzMl90IG1hdGNoSW5kZXgpOwogICAgIHZvaWQg
ZGlkRmFpbFRvRmluZFN0cmluZyhjb25zdCBTdHJpbmcmKTsKQEAgLTkzMiw3ICs5MzMsNyBAQCBw
dWJsaWM6CiAgICAgdm9pZCByZW1vdmVOYXZpZ2F0aW9uR2VzdHVyZVNuYXBzaG90KCk7CiAKICAg
ICBXZWJIaXRUZXN0UmVzdWx0KiBsYXN0TW91c2VNb3ZlSGl0VGVzdFJlc3VsdCgpIGNvbnN0IHsg
cmV0dXJuIG1fbGFzdE1vdXNlTW92ZUhpdFRlc3RSZXN1bHQuZ2V0KCk7IH0KLSAgICB2b2lkIHBl
cmZvcm1BY3Rpb25NZW51SGl0VGVzdEF0TG9jYXRpb24oV2ViQ29yZTo6RmxvYXRQb2ludCk7Cisg
ICAgdm9pZCBwZXJmb3JtQWN0aW9uTWVudUhpdFRlc3RBdExvY2F0aW9uKFdlYkNvcmU6OkZsb2F0
UG9pbnQsIGJvb2wgZm9ySW1tZWRpYXRlQWN0aW9uKTsKICAgICB2b2lkIHNlbGVjdExhc3RBY3Rp
b25NZW51UmFuZ2UoKTsKICAgICB2b2lkIGZvY3VzQW5kU2VsZWN0TGFzdEFjdGlvbk1lbnVIaXRU
ZXN0UmVzdWx0KCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9tYWMv
UGFnZUNsaWVudEltcGwuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9tYWMvUGFnZUNsaWVu
dEltcGwuaAppbmRleCA5NGQ2OWE2YmI3MTZjM2JiM2M0NzU2MDQyNjI4ZjBkYzUxMzYwODdhLi5k
MGFhOTg2YjJlYWMwM2JjNTRlMjU1OGE2YTNjY2M1N2M4YjhlNjE2IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvbWFjL1BhZ2VDbGllbnRJbXBsLmgKKysrIGIvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL21hYy9QYWdlQ2xpZW50SW1wbC5oCkBAIC0xMjIsNyArMTIyLDggQEAg
cHJpdmF0ZToKICAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8V2ViQ29sb3JQaWNrZXI+IGNyZWF0ZUNv
bG9yUGlja2VyKFdlYlBhZ2VQcm94eSosIGNvbnN0IFdlYkNvcmU6OkNvbG9yJiBpbml0aWFsQ29s
b3IsIGNvbnN0IFdlYkNvcmU6OkludFJlY3QmKTsKICNlbmRpZgogCi0gICAgdm9pZCBzZXRUZXh0
SW5kaWNhdG9yKFBhc3NSZWZQdHI8V2ViQ29yZTo6VGV4dEluZGljYXRvcj4sIGJvb2wgZmFkZU91
dCk7CisgICAgdmlydHVhbCB2b2lkIHNldFRleHRJbmRpY2F0b3IoUGFzc1JlZlB0cjxXZWJDb3Jl
OjpUZXh0SW5kaWNhdG9yPiwgYm9vbCBmYWRlT3V0KSBvdmVycmlkZTsKKyAgICB2aXJ0dWFsIHZv
aWQgc2V0VGV4dEluZGljYXRvckFuaW1hdGlvblByb2dyZXNzKGZsb2F0KSBvdmVycmlkZTsKIAog
ICAgIHZpcnR1YWwgdm9pZCBlbnRlckFjY2VsZXJhdGVkQ29tcG9zaXRpbmdNb2RlKGNvbnN0IExh
eWVyVHJlZUNvbnRleHQmKTsKICAgICB2aXJ0dWFsIHZvaWQgZXhpdEFjY2VsZXJhdGVkQ29tcG9z
aXRpbmdNb2RlKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvbWFjL1Bh
Z2VDbGllbnRJbXBsLm1tIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL21hYy9QYWdlQ2xpZW50
SW1wbC5tbQppbmRleCBjNWJmNDkxMTdlNDRkYTY1ZDM0MmZhMDgzMmQxNzJlNTEzYjcxMzBjLi5k
MTM5OThiNmYzMTkzOTFmODI0M2QyNzY1M2YyODg5ZTk1NzNmNmViIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvbWFjL1BhZ2VDbGllbnRJbXBsLm1tCisrKyBiL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9tYWMvUGFnZUNsaWVudEltcGwubW0KQEAgLTQ5Myw2ICs0OTMsMTEg
QEAgdm9pZCBQYWdlQ2xpZW50SW1wbDo6c2V0VGV4dEluZGljYXRvcihQYXNzUmVmUHRyPFRleHRJ
bmRpY2F0b3I+IHRleHRJbmRpY2F0b3IsIGIKICAgICBbbV93a1ZpZXcgX3NldFRleHRJbmRpY2F0
b3I6dGV4dEluZGljYXRvciBmYWRlT3V0OmZhZGVPdXRdOwogfQogCit2b2lkIFBhZ2VDbGllbnRJ
bXBsOjpzZXRUZXh0SW5kaWNhdG9yQW5pbWF0aW9uUHJvZ3Jlc3MoZmxvYXQgcHJvZ3Jlc3MpCit7
CisgICAgW21fd2tWaWV3IF9zZXRUZXh0SW5kaWNhdG9yQW5pbWF0aW9uUHJvZ3Jlc3M6cHJvZ3Jl
c3NdOworfQorCiB2b2lkIFBhZ2VDbGllbnRJbXBsOjphY2Nlc3NpYmlsaXR5V2ViUHJvY2Vzc1Rv
a2VuUmVjZWl2ZWQoY29uc3QgSVBDOjpEYXRhUmVmZXJlbmNlJiBkYXRhKQogewogICAgIE5TRGF0
YSogcmVtb3RlVG9rZW4gPSBbTlNEYXRhIGRhdGFXaXRoQnl0ZXM6ZGF0YS5kYXRhKCkgbGVuZ3Ro
OmRhdGEuc2l6ZSgpXTsKQEAgLTU2NywxMCArNTcyLDkgQEAgdm9pZCBQYWdlQ2xpZW50SW1wbDo6
ZGlkUGVyZm9ybURpY3Rpb25hcnlMb29rdXAoY29uc3QgRGljdGlvbmFyeVBvcHVwSW5mbyYgZGlj
dGkKICAgICAgICAgLy8gUnVuIHRoZSBhbmltYXRpb25zIHNlcmlhbGx5IGJlY2F1c2UgYXR0YWNo
aW5nIGFub3RoZXIgc3Vid2luZG93IGJyZWFrcyB0aGUgYm91bmNlIGFuaW1hdGlvbi4KICAgICAg
ICAgLy8gV2UgY291bGQgY29uc2lkZXIgbWFraW5nIHRoZSBib3VuY2UgTlNBbmltYXRpb25Ob25i
bG9ja2luZ1RocmVhZGVkIGluc3RlYWQsIHdoaWNoIHNlZW1zCiAgICAgICAgIC8vIHRvIHdvcmss
IGJ1dCBuZWVkIHRvIGNvbnNpZGVyIGFsbCBvZiB0aGUgaW1wbGljYXRpb25zLgotICAgICAgICBb
bV93a1ZpZXcgX3NldFRleHRJbmRpY2F0b3I6VGV4dEluZGljYXRvcjo6Y3JlYXRlKGRpY3Rpb25h
cnlQb3B1cEluZm8udGV4dEluZGljYXRvcikgZmFkZU91dDpOTyBhbmltYXRpb25Db21wbGV0aW9u
SGFuZGxlcjpbZGljdGlvbmFyeVBvcHVwSW5mbywgdGV4dEJhc2VsaW5lT3JpZ2luLCBtdXRhYmxl
T3B0aW9uc10gewotICAgICAgICAgICAgW211dGFibGVPcHRpb25zIHNldE9iamVjdDpAWUVTIGZv
cktleTpnZXRMVVRlcm1PcHRpb25EaXNhYmxlU2VhcmNoVGVybUluZGljYXRvcigpXTsKLSAgICAg
ICAgICAgIFtnZXRMVUxvb2t1cERlZmluaXRpb25Nb2R1bGVDbGFzcygpIHNob3dEZWZpbml0aW9u
Rm9yVGVybTpkaWN0aW9uYXJ5UG9wdXBJbmZvLmF0dHJpYnV0ZWRTdHJpbmcuc3RyaW5nLmdldCgp
IGF0TG9jYXRpb246dGV4dEJhc2VsaW5lT3JpZ2luIG9wdGlvbnM6bXV0YWJsZU9wdGlvbnMuZ2V0
KCldOwotICAgICAgICB9XTsKKyAgICAgICAgW21fd2tWaWV3IF9zZXRUZXh0SW5kaWNhdG9yOlRl
eHRJbmRpY2F0b3I6OmNyZWF0ZShkaWN0aW9uYXJ5UG9wdXBJbmZvLnRleHRJbmRpY2F0b3IpIGZh
ZGVPdXQ6Tk9dOworICAgICAgICBbbXV0YWJsZU9wdGlvbnMgc2V0T2JqZWN0OkBZRVMgZm9yS2V5
OmdldExVVGVybU9wdGlvbkRpc2FibGVTZWFyY2hUZXJtSW5kaWNhdG9yKCldOworICAgICAgICBb
Z2V0TFVMb29rdXBEZWZpbml0aW9uTW9kdWxlQ2xhc3MoKSBzaG93RGVmaW5pdGlvbkZvclRlcm06
ZGljdGlvbmFyeVBvcHVwSW5mby5hdHRyaWJ1dGVkU3RyaW5nLnN0cmluZy5nZXQoKSBhdExvY2F0
aW9uOnRleHRCYXNlbGluZU9yaWdpbiBvcHRpb25zOm11dGFibGVPcHRpb25zLmdldCgpXTsKICAg
ICB9IGVsc2UKICAgICAgICAgW2dldExVTG9va3VwRGVmaW5pdGlvbk1vZHVsZUNsYXNzKCkgc2hv
d0RlZmluaXRpb25Gb3JUZXJtOmRpY3Rpb25hcnlQb3B1cEluZm8uYXR0cmlidXRlZFN0cmluZy5z
dHJpbmcuZ2V0KCkgYXRMb2NhdGlvbjp0ZXh0QmFzZWxpbmVPcmlnaW4gb3B0aW9uczptdXRhYmxl
T3B0aW9ucy5nZXQoKV07CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
bWFjL1dLQWN0aW9uTWVudUNvbnRyb2xsZXIubW0gYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
bWFjL1dLQWN0aW9uTWVudUNvbnRyb2xsZXIubW0KaW5kZXggMDBlZDc3YTkxZTJhMTJiMDI0YWQ0
NGM1NzExNjVjMWM4YjE0OTJlYi4uNDk0NzYyZTQ2ODU4MWQ2ZWFlZWM5NThiZTFkNzZjMDg0N2Ux
Y2IzMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL21hYy9XS0FjdGlvbk1l
bnVDb250cm9sbGVyLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9tYWMvV0tBY3Rp
b25NZW51Q29udHJvbGxlci5tbQpAQCAtMTAxLDcgKzEwMSw3IEBAIHVzaW5nIG5hbWVzcGFjZSBX
ZWJLaXQ7CiAKICAgICBbX3drVmlldyBfZGlzbWlzc0NvbnRlbnRSZWxhdGl2ZUNoaWxkV2luZG93
c107CiAKLSAgICBfcGFnZS0+cGVyZm9ybUFjdGlvbk1lbnVIaXRUZXN0QXRMb2NhdGlvbihbX3dr
VmlldyBjb252ZXJ0UG9pbnQ6ZXZlbnQubG9jYXRpb25JbldpbmRvdyBmcm9tVmlldzpuaWxdKTsK
KyAgICBfcGFnZS0+cGVyZm9ybUFjdGlvbk1lbnVIaXRUZXN0QXRMb2NhdGlvbihbX3drVmlldyBj
b252ZXJ0UG9pbnQ6ZXZlbnQubG9jYXRpb25JbldpbmRvdyBmcm9tVmlldzpuaWxdLCBmYWxzZSk7
CiAKICAgICBfc3RhdGUgPSBBY3Rpb25NZW51U3RhdGU6OlBlbmRpbmc7CiAgICAgW3NlbGYgX3Vw
ZGF0ZUFjdGlvbk1lbnVJdGVtc107CkBAIC0zOTksOCArMzk5LDYgQEAgc3RhdGljIE5TU3RyaW5n
ICpwYXRoVG9QaG90b09uRGlzayhOU1N0cmluZyAqc3VnZ2VzdGVkRmlsZW5hbWUpCiAgICAgW19j
dXJyZW50QWN0aW9uQ29udGV4dCBzZXRIaWdobGlnaHRGcmFtZTpbX3drVmlldy53aW5kb3cgY29u
dmVydFJlY3RUb1NjcmVlbjpbX3drVmlldyBjb252ZXJ0UmVjdDpfaGl0VGVzdFJlc3VsdC5kZXRl
Y3RlZERhdGFCb3VuZGluZ0JveCB0b1ZpZXc6bmlsXV1dOwogCiAgICAgTlNBcnJheSAqbWVudUl0
ZW1zID0gW1tnZXREREFjdGlvbnNNYW5hZ2VyQ2xhc3MoKSBzaGFyZWRNYW5hZ2VyXSBtZW51SXRl
bXNGb3JSZXN1bHQ6W19jdXJyZW50QWN0aW9uQ29udGV4dCBtYWluUmVzdWx0XSBhY3Rpb25Db250
ZXh0Ol9jdXJyZW50QWN0aW9uQ29udGV4dC5nZXQoKV07Ci0gICAgaWYgKG1lbnVJdGVtcy5jb3Vu
dCA9PSAxICYmIF9oaXRUZXN0UmVzdWx0LmRldGVjdGVkRGF0YVRleHRJbmRpY2F0b3IpCi0gICAg
ICAgIF9oaXRUZXN0UmVzdWx0LmRldGVjdGVkRGF0YVRleHRJbmRpY2F0b3ItPnNldFByZXNlbnRh
dGlvblRyYW5zaXRpb24oVGV4dEluZGljYXRvclByZXNlbnRhdGlvblRyYW5zaXRpb246OkJvdW5j
ZSk7CiAgICAgcmV0dXJuIG1lbnVJdGVtczsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL21hYy9XS0ltbWVkaWF0ZUFjdGlvbkNvbnRyb2xsZXIubW0gYi9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvbWFjL1dLSW1tZWRpYXRlQWN0aW9uQ29udHJvbGxlci5tbQppbmRl
eCBhZWY0Yjg3ZDE1NjdiYzMyZDliNWQ5M2Y3MzI1ZDYxZDUyYjY2Mzg3Li4wYzk1YjZjOTg0MTZj
NzAwNzM1NmRmNjI5MTFmYTBkOTdhNDEwOGI5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvbWFjL1dLSW1tZWRpYXRlQWN0aW9uQ29udHJvbGxlci5tbQorKysgYi9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvbWFjL1dLSW1tZWRpYXRlQWN0aW9uQ29udHJvbGxlci5tbQpAQCAt
MTAwLDYgKzEwMCwxMiBAQCB1c2luZyBuYW1lc3BhY2UgV2ViS2l0OwogCiAtICh2b2lkKV9jbGVh
ckltbWVkaWF0ZUFjdGlvblN0YXRlCiB7CisjaWYgV0tfQVBJX0VOQUJMRUQKKyAgICBbc2VsZiBo
aWRlUHJldmlld107CisjZW5kaWYKKworICAgIF9wYWdlLT5jbGVhclRleHRJbmRpY2F0b3IoKTsK
KwogICAgIGlmIChfY3VycmVudEFjdGlvbkNvbnRleHQgJiYgX2hhc0FjdGl2YXRlZEFjdGlvbkNv
bnRleHQpIHsKICAgICAgICAgW2dldEREQWN0aW9uc01hbmFnZXJDbGFzcygpIGRpZFVzZUFjdGlv
bnNdOwogICAgICAgICBfaGFzQWN0aXZhdGVkQWN0aW9uQ29udGV4dCA9IE5POwpAQCAtMTI5LDEw
ICsxMzUsMTIgQEAgdXNpbmcgbmFtZXNwYWNlIFdlYktpdDsKICAgICBpZiAoaW1tZWRpYXRlQWN0
aW9uUmVjb2duaXplciAhPSBfaW1tZWRpYXRlQWN0aW9uUmVjb2duaXplcikKICAgICAgICAgcmV0
dXJuOwogCisgICAgX3BhZ2UtPnNldE1haW50YWluc0luYWN0aXZlU2VsZWN0aW9uKHRydWUpOwor
CiAgICAgW193a1ZpZXcgX2Rpc21pc3NDb250ZW50UmVsYXRpdmVDaGlsZFdpbmRvd3NdOwogCiAg
ICAgX2V2ZW50TG9jYXRpb25JblZpZXcgPSBbaW1tZWRpYXRlQWN0aW9uUmVjb2duaXplciBsb2Nh
dGlvbkluVmlldzppbW1lZGlhdGVBY3Rpb25SZWNvZ25pemVyLnZpZXddOwotICAgIF9wYWdlLT5w
ZXJmb3JtQWN0aW9uTWVudUhpdFRlc3RBdExvY2F0aW9uKF9ldmVudExvY2F0aW9uSW5WaWV3KTsK
KyAgICBfcGFnZS0+cGVyZm9ybUFjdGlvbk1lbnVIaXRUZXN0QXRMb2NhdGlvbihfZXZlbnRMb2Nh
dGlvbkluVmlldywgdHJ1ZSk7CiAKICAgICBfc3RhdGUgPSBJbW1lZGlhdGVBY3Rpb25TdGF0ZTo6
UGVuZGluZzsKICAgICBbc2VsZiBfdXBkYXRlSW1tZWRpYXRlQWN0aW9uSXRlbV07CkBAIC0xNzEs
MTIgKzE3OSwyMiBAQCB1c2luZyBuYW1lc3BhY2UgV2ViS2l0OwogICAgIH0KIH0KIAorLSAodm9p
ZClpbW1lZGlhdGVBY3Rpb25SZWNvZ25pemVyRGlkVXBkYXRlQW5pbWF0aW9uOihOU0ltbWVkaWF0
ZUFjdGlvbkdlc3R1cmVSZWNvZ25pemVyICopaW1tZWRpYXRlQWN0aW9uUmVjb2duaXplcgorewor
ICAgIGlmIChpbW1lZGlhdGVBY3Rpb25SZWNvZ25pemVyICE9IF9pbW1lZGlhdGVBY3Rpb25SZWNv
Z25pemVyKQorICAgICAgICByZXR1cm47CisKKyAgICBfcGFnZS0+c2V0VGV4dEluZGljYXRvckFu
aW1hdGlvblByb2dyZXNzKFtpbW1lZGlhdGVBY3Rpb25SZWNvZ25pemVyIGFuaW1hdGlvblByb2dy
ZXNzXSk7Cit9CisKIC0gKHZvaWQpaW1tZWRpYXRlQWN0aW9uUmVjb2duaXplckRpZENhbmNlbEFu
aW1hdGlvbjooTlNJbW1lZGlhdGVBY3Rpb25HZXN0dXJlUmVjb2duaXplciAqKWltbWVkaWF0ZUFj
dGlvblJlY29nbml6ZXIKIHsKICAgICBpZiAoaW1tZWRpYXRlQWN0aW9uUmVjb2duaXplciAhPSBf
aW1tZWRpYXRlQWN0aW9uUmVjb2duaXplcikKICAgICAgICAgcmV0dXJuOwogCisgICAgX3BhZ2Ut
PnNldFRleHRJbmRpY2F0b3JBbmltYXRpb25Qcm9ncmVzcygwKTsKICAgICBbc2VsZiBfY2xlYXJJ
bW1lZGlhdGVBY3Rpb25TdGF0ZV07CisgICAgX3BhZ2UtPnNldE1haW50YWluc0luYWN0aXZlU2Vs
ZWN0aW9uKGZhbHNlKTsKIH0KIAogLSAodm9pZClpbW1lZGlhdGVBY3Rpb25SZWNvZ25pemVyRGlk
Q29tcGxldGVBbmltYXRpb246KE5TSW1tZWRpYXRlQWN0aW9uR2VzdHVyZVJlY29nbml6ZXIgKilp
bW1lZGlhdGVBY3Rpb25SZWNvZ25pemVyCkBAIC0xODQsNyArMjAyLDggQEAgdXNpbmcgbmFtZXNw
YWNlIFdlYktpdDsKICAgICBpZiAoaW1tZWRpYXRlQWN0aW9uUmVjb2duaXplciAhPSBfaW1tZWRp
YXRlQWN0aW9uUmVjb2duaXplcikKICAgICAgICAgcmV0dXJuOwogCi0gICAgLy8gRklYTUU6IEFk
ZCBzdXBwb3J0IGZvciB0aGUgdHlwZXMgb2YgZnVuY3Rpb25hbGl0eSBwcm92aWRlZCBpbiBBY3Rp
b24gbWVudSdzIHdpbGxPcGVuTWVudS4KKyAgICBfcGFnZS0+c2V0VGV4dEluZGljYXRvckFuaW1h
dGlvblByb2dyZXNzKDEpOworICAgIF9wYWdlLT5zZXRNYWludGFpbnNJbmFjdGl2ZVNlbGVjdGlv
bihmYWxzZSk7CiB9CiAKIC0gKFBhc3NSZWZQdHI8V2ViSGl0VGVzdFJlc3VsdD4pX3dlYkhpdFRl
c3RSZXN1bHQKQEAgLTQ5Miw4ICs1MTEsNiBAQCBzdGF0aWMgYm9vbCB0YXJnZXRTaXplRml0c0lu
QXZhaWxhYmxlU3BhY2UoTlNTaXplIHRhcmdldFNpemUsIE5TU2l6ZSBhdmFpbGFibGVTcAogICAg
IGlmIChtZW51SXRlbXMuY291bnQgIT0gMSkKICAgICAgICAgcmV0dXJuIG5pbDsKIAotICAgIGlm
IChfaGl0VGVzdFJlc3VsdC5kZXRlY3RlZERhdGFUZXh0SW5kaWNhdG9yKQotICAgICAgICBfaGl0
VGVzdFJlc3VsdC5kZXRlY3RlZERhdGFUZXh0SW5kaWNhdG9yLT5zZXRQcmVzZW50YXRpb25UcmFu
c2l0aW9uKFRleHRJbmRpY2F0b3JQcmVzZW50YXRpb25UcmFuc2l0aW9uOjpCb3VuY2UpOwogICAg
IHJldHVybiBtZW51SXRlbXMubGFzdE9iamVjdDsKIH0KIApAQCAtNTE4LDYgKzUzNSw3IEBAIHN0
YXRpYyBib29sIHRhcmdldFNpemVGaXRzSW5BdmFpbGFibGVTcGFjZShOU1NpemUgdGFyZ2V0U2l6
ZSwgTlNTaXplIGF2YWlsYWJsZVNwCiAKICAgICBSZXRhaW5QdHI8TlNNdXRhYmxlRGljdGlvbmFy
eT4gbXV0YWJsZU9wdGlvbnMgPSBhZG9wdE5TKFsoTlNEaWN0aW9uYXJ5ICopZGljdGlvbmFyeVBv
cHVwSW5mby5vcHRpb25zLmdldCgpIG11dGFibGVDb3B5XSk7CiAgICAgaWYgKGNhbkxvYWRMVVRl
cm1PcHRpb25EaXNhYmxlU2VhcmNoVGVybUluZGljYXRvcigpICYmIGRpY3Rpb25hcnlQb3B1cElu
Zm8udGV4dEluZGljYXRvci5jb250ZW50SW1hZ2UpIHsKKyAgICAgICAgW193a1ZpZXcgX3NldFRl
eHRJbmRpY2F0b3I6VGV4dEluZGljYXRvcjo6Y3JlYXRlKGRpY3Rpb25hcnlQb3B1cEluZm8udGV4
dEluZGljYXRvcikgZmFkZU91dDpOT107CiAgICAgICAgIFttdXRhYmxlT3B0aW9ucyBzZXRPYmpl
Y3Q6QFlFUyBmb3JLZXk6Z2V0TFVUZXJtT3B0aW9uRGlzYWJsZVNlYXJjaFRlcm1JbmRpY2F0b3Io
KV07CiAgICAgICAgIHJldHVybiBbZ2V0TFVMb29rdXBEZWZpbml0aW9uTW9kdWxlQ2xhc3MoKSBs
b29rdXBBbmltYXRpb25Db250cm9sbGVyRm9yVGVybTpkaWN0aW9uYXJ5UG9wdXBJbmZvLmF0dHJp
YnV0ZWRTdHJpbmcuc3RyaW5nLmdldCgpIGF0TG9jYXRpb246dGV4dEJhc2VsaW5lT3JpZ2luIG9w
dGlvbnM6bXV0YWJsZU9wdGlvbnMuZ2V0KCldOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmggYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQ
cm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oCmluZGV4IDgwMmU4Y2I1OWJkZTIyMTRlY2NlN2IxNzYz
YWFjYzI3YWQ0MTcxNzcuLjkyNzJhMmE0MDUzMThiYzU2MDE1ZjAxOWUwMDQ4NzdlZWY1YzM3ZDIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgK
KysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaApAQCAtMTA3
Nyw3ICsxMDc3LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIHJlcG9ydFVzZWRGZWF0dXJlcygpOwog
CiAjaWYgUExBVEZPUk0oTUFDKQotICAgIHZvaWQgcGVyZm9ybUFjdGlvbk1lbnVIaXRUZXN0QXRM
b2NhdGlvbihXZWJDb3JlOjpGbG9hdFBvaW50KTsKKyAgICB2b2lkIHBlcmZvcm1BY3Rpb25NZW51
SGl0VGVzdEF0TG9jYXRpb24oV2ViQ29yZTo6RmxvYXRQb2ludCwgYm9vbCBmb3JJbW1lZGlhdGVB
Y3Rpb24pOwogICAgIFBhc3NSZWZQdHI8V2ViQ29yZTo6UmFuZ2U+IGxvb2t1cFRleHRBdExvY2F0
aW9uKFdlYkNvcmU6OkZsb2F0UG9pbnQsIE5TRGljdGlvbmFyeSAqKm9wdGlvbnMpOwogICAgIHZv
aWQgc2VsZWN0TGFzdEFjdGlvbk1lbnVSYW5nZSgpOwogICAgIHZvaWQgZm9jdXNBbmRTZWxlY3RM
YXN0QWN0aW9uTWVudUhpdFRlc3RSZXN1bHQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQy
L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdDIv
V2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMuaW4KaW5kZXggN2VkN2VhMTk2ZWE1
Mjg2NDBmYWYyOTNiNThlMzMwNjc4NmY2NGM3NC4uODlmYTZiYWI3YTEyOTA2MzQ5YzAzNjkyNGIx
MDVjOGRjOTZlNWUzNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQ
YWdlL1dlYlBhZ2UubWVzc2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9X
ZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMuaW4KQEAgLTM5OSw3ICszOTksNyBAQCBtZXNzYWdlcyAt
PiBXZWJQYWdlIExlZ2FjeVJlY2VpdmVyIHsKICAgICAKICAgICBUYWtlU25hcHNob3QoV2ViQ29y
ZTo6SW50UmVjdCBzbmFwc2hvdFJlY3QsIFdlYkNvcmU6OkludFNpemUgYml0bWFwU2l6ZSwgdWlu
dDMyX3Qgb3B0aW9ucywgdWludDY0X3QgY2FsbGJhY2tJRCkKICNpZiBQTEFURk9STShNQUMpCi0g
ICAgUGVyZm9ybUFjdGlvbk1lbnVIaXRUZXN0QXRMb2NhdGlvbihXZWJDb3JlOjpGbG9hdFBvaW50
IGxvY2F0aW9uKQorICAgIFBlcmZvcm1BY3Rpb25NZW51SGl0VGVzdEF0TG9jYXRpb24oV2ViQ29y
ZTo6RmxvYXRQb2ludCBsb2NhdGlvbiwgYm9vbCBmb3JJbW1lZGlhdGVBY3Rpb24pCiAgICAgU2Vs
ZWN0TGFzdEFjdGlvbk1lbnVSYW5nZSgpCiAgICAgRm9jdXNBbmRTZWxlY3RMYXN0QWN0aW9uTWVu
dUhpdFRlc3RSZXN1bHQoKQogICAgIERhdGFEZXRlY3RvcnNEaWRQcmVzZW50VUkoV2ViQ29yZTo6
UGFnZU92ZXJsYXk6OlBhZ2VPdmVybGF5SUQgcGFnZU92ZXJsYXkpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1dlYlBhZ2VNYWMubW0gYi9Tb3VyY2Uv
V2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1dlYlBhZ2VNYWMubW0KaW5kZXggNmVhY2I5
M2M0ZmY4YzgzZmFkN2FhYWRiZTVkM2Q2ZjdiY2YzMzhmYS4uZTg2NDZiZWQwNzBhMjY1YjhhMjJi
ZTI3ZThkZGU0MTViNGRmNTg0YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vz
cy9XZWJQYWdlL21hYy9XZWJQYWdlTWFjLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nl
c3MvV2ViUGFnZS9tYWMvV2ViUGFnZU1hYy5tbQpAQCAtOTc4LDcgKzk3OCwxNCBAQCBTdHJpbmcg
V2ViUGFnZTo6cGxhdGZvcm1Vc2VyQWdlbnQoY29uc3QgVVJMJikgY29uc3QKICAgICByZXR1cm4g
U3RyaW5nKCk7CiB9CiAKLXZvaWQgV2ViUGFnZTo6cGVyZm9ybUFjdGlvbk1lbnVIaXRUZXN0QXRM
b2NhdGlvbihXZWJDb3JlOjpGbG9hdFBvaW50IGxvY2F0aW9uSW5WaWV3Q29vb3JkaW5hdGVzKQor
c3RhdGljIFRleHRJbmRpY2F0b3JQcmVzZW50YXRpb25UcmFuc2l0aW9uIHRleHRJbmRpY2F0b3JU
cmFuc2l0aW9uRm9yQWN0aW9uTWVudShSYW5nZSogc2VsZWN0aW9uUmFuZ2UsIFJhbmdlJiBpbmRp
Y2F0b3JSYW5nZSwgYm9vbCBmb3JJbW1lZGlhdGVBY3Rpb24sIGJvb2wgZm9yRGF0YURldGVjdG9y
cykKK3sKKyAgICBpZiAoYXJlUmFuZ2VzRXF1YWwoJmluZGljYXRvclJhbmdlLCBzZWxlY3Rpb25S
YW5nZSkgfHwgKGZvckRhdGFEZXRlY3RvcnMgJiYgIWZvckltbWVkaWF0ZUFjdGlvbikpCisgICAg
ICAgIHJldHVybiBmb3JJbW1lZGlhdGVBY3Rpb24gPyBUZXh0SW5kaWNhdG9yUHJlc2VudGF0aW9u
VHJhbnNpdGlvbjo6Q3Jvc3NmYWRlIDogVGV4dEluZGljYXRvclByZXNlbnRhdGlvblRyYW5zaXRp
b246OkJvdW5jZUFuZENyb3NzZmFkZTsKKyAgICByZXR1cm4gZm9ySW1tZWRpYXRlQWN0aW9uID8g
VGV4dEluZGljYXRvclByZXNlbnRhdGlvblRyYW5zaXRpb246OkZhZGVJbiA6IFRleHRJbmRpY2F0
b3JQcmVzZW50YXRpb25UcmFuc2l0aW9uOjpCb3VuY2U7Cit9CisKK3ZvaWQgV2ViUGFnZTo6cGVy
Zm9ybUFjdGlvbk1lbnVIaXRUZXN0QXRMb2NhdGlvbihXZWJDb3JlOjpGbG9hdFBvaW50IGxvY2F0
aW9uSW5WaWV3Q29vb3JkaW5hdGVzLCBib29sIGZvckltbWVkaWF0ZUFjdGlvbikKIHsKICAgICBs
YXlvdXRJZk5lZWRlZCgpOwogCkBAIC05OTUsMjYgKzEwMDIsMzEgQEAgdm9pZCBXZWJQYWdlOjpw
ZXJmb3JtQWN0aW9uTWVudUhpdFRlc3RBdExvY2F0aW9uKFdlYkNvcmU6OkZsb2F0UG9pbnQgbG9j
YXRpb25JblYKICAgICBhY3Rpb25NZW51UmVzdWx0LmhpdFRlc3RMb2NhdGlvbkluVmlld0Nvb29y
ZGluYXRlcyA9IGxvY2F0aW9uSW5WaWV3Q29vb3JkaW5hdGVzOwogICAgIGFjdGlvbk1lbnVSZXN1
bHQuaGl0VGVzdFJlc3VsdCA9IFdlYkhpdFRlc3RSZXN1bHQ6OkRhdGEoaGl0VGVzdFJlc3VsdCk7
CiAKKyAgICBSZWZQdHI8UmFuZ2U+IHNlbGVjdGlvblJhbmdlID0gY29yZVBhZ2UoKS0+Zm9jdXND
b250cm9sbGVyKCkuZm9jdXNlZE9yTWFpbkZyYW1lKCkuc2VsZWN0aW9uKCkuc2VsZWN0aW9uKCku
Zmlyc3RSYW5nZSgpOworCiAgICAgTlNEaWN0aW9uYXJ5ICpvcHRpb25zID0gbmlsOwotICAgIFJl
ZlB0cjxXZWJDb3JlOjpSYW5nZT4gbG9va3VwUmFuZ2UgPSBsb29rdXBUZXh0QXRMb2NhdGlvbihs
b2NhdGlvbkluVmlld0Nvb29yZGluYXRlcywgJm9wdGlvbnMpOworICAgIFJlZlB0cjxSYW5nZT4g
bG9va3VwUmFuZ2UgPSBsb29rdXBUZXh0QXRMb2NhdGlvbihsb2NhdGlvbkluVmlld0Nvb29yZGlu
YXRlcywgJm9wdGlvbnMpOwogICAgIGFjdGlvbk1lbnVSZXN1bHQubG9va3VwVGV4dCA9IGxvb2t1
cFJhbmdlID8gbG9va3VwUmFuZ2UtPnRleHQoKSA6IFN0cmluZygpOworCiAgICAgaWYgKGxvb2t1
cFJhbmdlKSB7CiAgICAgICAgIGlmIChOb2RlKiBub2RlID0gaGl0VGVzdFJlc3VsdC5pbm5lck5v
ZGUoKSkgewogICAgICAgICAgICAgaWYgKEZyYW1lKiBoaXRUZXN0UmVzdWx0RnJhbWUgPSBub2Rl
LT5kb2N1bWVudCgpLmZyYW1lKCkpCi0gICAgICAgICAgICAgICAgYWN0aW9uTWVudVJlc3VsdC5k
aWN0aW9uYXJ5UG9wdXBJbmZvID0gZGljdGlvbmFyeVBvcHVwSW5mb0ZvclJhbmdlKGhpdFRlc3RS
ZXN1bHRGcmFtZSwgKmxvb2t1cFJhbmdlLmdldCgpLCAmb3B0aW9ucywgVGV4dEluZGljYXRvclBy
ZXNlbnRhdGlvblRyYW5zaXRpb246OkJvdW5jZSk7CisgICAgICAgICAgICAgICAgYWN0aW9uTWVu
dVJlc3VsdC5kaWN0aW9uYXJ5UG9wdXBJbmZvID0gZGljdGlvbmFyeVBvcHVwSW5mb0ZvclJhbmdl
KGhpdFRlc3RSZXN1bHRGcmFtZSwgKmxvb2t1cFJhbmdlLmdldCgpLCAmb3B0aW9ucywgdGV4dElu
ZGljYXRvclRyYW5zaXRpb25Gb3JBY3Rpb25NZW51KHNlbGVjdGlvblJhbmdlLmdldCgpLCAqbG9v
a3VwUmFuZ2UsIGZvckltbWVkaWF0ZUFjdGlvbiwgZmFsc2UpKTsKICAgICAgICAgfQogICAgIH0K
IAogICAgIG1fbGFzdEFjdGlvbk1lbnVSYW5nZUZvclNlbGVjdGlvbiA9IGxvb2t1cFJhbmdlOwog
ICAgIG1fbGFzdEFjdGlvbk1lbnVIaXRUZXN0UmVzdWx0ID0gaGl0VGVzdFJlc3VsdDsKIAotICAg
IGlmIChJbWFnZSogaW1hZ2UgPSBoaXRUZXN0UmVzdWx0LmltYWdlKCkpIHsKLSAgICAgICAgUmVm
UHRyPFNoYXJlZEJ1ZmZlcj4gYnVmZmVyID0gaW1hZ2UtPmRhdGEoKTsKLSAgICAgICAgU3RyaW5n
IGltYWdlRXh0ZW5zaW9uID0gaW1hZ2UtPmZpbGVuYW1lRXh0ZW5zaW9uKCk7Ci0gICAgICAgIGlm
ICghaW1hZ2VFeHRlbnNpb24uaXNFbXB0eSgpICYmIGJ1ZmZlcikgewotICAgICAgICAgICAgYWN0
aW9uTWVudVJlc3VsdC5pbWFnZVNoYXJlZE1lbW9yeSA9IFNoYXJlZE1lbW9yeTo6Y3JlYXRlKGJ1
ZmZlci0+c2l6ZSgpKTsKLSAgICAgICAgICAgIG1lbWNweShhY3Rpb25NZW51UmVzdWx0LmltYWdl
U2hhcmVkTWVtb3J5LT5kYXRhKCksIGJ1ZmZlci0+ZGF0YSgpLCBidWZmZXItPnNpemUoKSk7Ci0g
ICAgICAgICAgICBhY3Rpb25NZW51UmVzdWx0LmltYWdlRXh0ZW5zaW9uID0gaW1hZ2VFeHRlbnNp
b247CisgICAgaWYgKCFmb3JJbW1lZGlhdGVBY3Rpb24pIHsKKyAgICAgICAgaWYgKEltYWdlKiBp
bWFnZSA9IGhpdFRlc3RSZXN1bHQuaW1hZ2UoKSkgeworICAgICAgICAgICAgUmVmUHRyPFNoYXJl
ZEJ1ZmZlcj4gYnVmZmVyID0gaW1hZ2UtPmRhdGEoKTsKKyAgICAgICAgICAgIFN0cmluZyBpbWFn
ZUV4dGVuc2lvbiA9IGltYWdlLT5maWxlbmFtZUV4dGVuc2lvbigpOworICAgICAgICAgICAgaWYg
KCFpbWFnZUV4dGVuc2lvbi5pc0VtcHR5KCkgJiYgYnVmZmVyKSB7CisgICAgICAgICAgICAgICAg
YWN0aW9uTWVudVJlc3VsdC5pbWFnZVNoYXJlZE1lbW9yeSA9IFNoYXJlZE1lbW9yeTo6Y3JlYXRl
KGJ1ZmZlci0+c2l6ZSgpKTsKKyAgICAgICAgICAgICAgICBtZW1jcHkoYWN0aW9uTWVudVJlc3Vs
dC5pbWFnZVNoYXJlZE1lbW9yeS0+ZGF0YSgpLCBidWZmZXItPmRhdGEoKSwgYnVmZmVyLT5zaXpl
KCkpOworICAgICAgICAgICAgICAgIGFjdGlvbk1lbnVSZXN1bHQuaW1hZ2VFeHRlbnNpb24gPSBp
bWFnZUV4dGVuc2lvbjsKKyAgICAgICAgICAgIH0KICAgICAgICAgfQogICAgIH0KIApAQCAtMTA0
MCw3ICsxMDUyLDcgQEAgdm9pZCBXZWJQYWdlOjpwZXJmb3JtQWN0aW9uTWVudUhpdFRlc3RBdExv
Y2F0aW9uKFdlYkNvcmU6OkZsb2F0UG9pbnQgbG9jYXRpb25JblYKICAgICAgICAgICAgIGRldGVj
dGVkRGF0YUJvdW5kaW5nQm94LnVuaXRlKGZyYW1lVmlldy0+Y29udGVudHNUb1dpbmRvdyhxdWFk
LmVuY2xvc2luZ0JvdW5kaW5nQm94KCkpKTsKIAogICAgICAgICBhY3Rpb25NZW51UmVzdWx0LmRl
dGVjdGVkRGF0YUJvdW5kaW5nQm94ID0gZGV0ZWN0ZWREYXRhQm91bmRpbmdCb3g7Ci0gICAgICAg
IGFjdGlvbk1lbnVSZXN1bHQuZGV0ZWN0ZWREYXRhVGV4dEluZGljYXRvciA9IFRleHRJbmRpY2F0
b3I6OmNyZWF0ZVdpdGhSYW5nZSgqbWFpblJlc3VsdFJhbmdlLCBUZXh0SW5kaWNhdG9yUHJlc2Vu
dGF0aW9uVHJhbnNpdGlvbjo6Qm91bmNlQW5kQ3Jvc3NmYWRlKTsKKyAgICAgICAgYWN0aW9uTWVu
dVJlc3VsdC5kZXRlY3RlZERhdGFUZXh0SW5kaWNhdG9yID0gVGV4dEluZGljYXRvcjo6Y3JlYXRl
V2l0aFJhbmdlKCptYWluUmVzdWx0UmFuZ2UsIHRleHRJbmRpY2F0b3JUcmFuc2l0aW9uRm9yQWN0
aW9uTWVudShzZWxlY3Rpb25SYW5nZS5nZXQoKSwgKm1haW5SZXN1bHRSYW5nZSwgZm9ySW1tZWRp
YXRlQWN0aW9uLCB0cnVlKSk7CiAgICAgICAgIGFjdGlvbk1lbnVSZXN1bHQuZGV0ZWN0ZWREYXRh
T3JpZ2luYXRpbmdQYWdlT3ZlcmxheSA9IG92ZXJsYXktPnBhZ2VPdmVybGF5SUQoKTsKICAgICAg
ICAgbV9sYXN0QWN0aW9uTWVudVJhbmdlRm9yU2VsZWN0aW9uID0gbWFpblJlc3VsdFJhbmdlOwog
CkBAIC0xMDU0LDcgKzEwNjYsNyBAQCB2b2lkIFdlYlBhZ2U6OnBlcmZvcm1BY3Rpb25NZW51SGl0
VGVzdEF0TG9jYXRpb24oV2ViQ29yZTo6RmxvYXRQb2ludCBsb2NhdGlvbkluVgogICAgICAgICBh
Y3Rpb25NZW51UmVzdWx0LmFjdGlvbkNvbnRleHQgPSBEYXRhRGV0ZWN0aW9uOjpkZXRlY3RJdGVt
QXJvdW5kSGl0VGVzdFJlc3VsdChoaXRUZXN0UmVzdWx0LCBkZXRlY3RlZERhdGFCb3VuZGluZ0Jv
eCwgZGV0ZWN0ZWREYXRhUmFuZ2UpOwogICAgICAgICBpZiAoYWN0aW9uTWVudVJlc3VsdC5hY3Rp
b25Db250ZXh0ICYmIGRldGVjdGVkRGF0YVJhbmdlKSB7CiAgICAgICAgICAgICBhY3Rpb25NZW51
UmVzdWx0LmRldGVjdGVkRGF0YUJvdW5kaW5nQm94ID0gZGV0ZWN0ZWREYXRhQm91bmRpbmdCb3g7
Ci0gICAgICAgICAgICBhY3Rpb25NZW51UmVzdWx0LmRldGVjdGVkRGF0YVRleHRJbmRpY2F0b3Ig
PSBUZXh0SW5kaWNhdG9yOjpjcmVhdGVXaXRoUmFuZ2UoKmRldGVjdGVkRGF0YVJhbmdlLCBUZXh0
SW5kaWNhdG9yUHJlc2VudGF0aW9uVHJhbnNpdGlvbjo6Qm91bmNlQW5kQ3Jvc3NmYWRlKTsKKyAg
ICAgICAgICAgIGFjdGlvbk1lbnVSZXN1bHQuZGV0ZWN0ZWREYXRhVGV4dEluZGljYXRvciA9IFRl
eHRJbmRpY2F0b3I6OmNyZWF0ZVdpdGhSYW5nZSgqZGV0ZWN0ZWREYXRhUmFuZ2UsIHRleHRJbmRp
Y2F0b3JUcmFuc2l0aW9uRm9yQWN0aW9uTWVudShzZWxlY3Rpb25SYW5nZS5nZXQoKSwgKmRldGVj
dGVkRGF0YVJhbmdlLCBmb3JJbW1lZGlhdGVBY3Rpb24sIHRydWUpKTsKICAgICAgICAgICAgIG1f
bGFzdEFjdGlvbk1lbnVSYW5nZUZvclNlbGVjdGlvbiA9IGRldGVjdGVkRGF0YVJhbmdlOwogICAg
ICAgICB9CiAgICAgfQo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>243420</attachid>
            <date>2014-12-16 18:34:45 -0800</date>
            <delta_ts>2014-12-16 18:36:07 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-139715-20141216183533.patch</filename>
            <type>text/plain</type>
            <size>58707</size>
            <attacher name="Tim Horton">thorton</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTc3NDIyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZjE2MjMxY2Q2Zjk0YWZm
MTFmNDlhNGU5MmQ4ZjA1YjhiYjIzMDlkNC4uOTAyNzcyYjg0ZjQyYWU4YjkyY2JhNWVmYzZkYWY1
MjRjZTEyZTc0MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDYzIEBACisyMDE0LTEyLTE2ICBUaW1v
dGh5IEhvcnRvbiAgPHRpbW90aHlfaG9ydG9uQGFwcGxlLmNvbT4KKworICAgICAgICBJbXBsZW1l
bnQgYW5kIGFkb3B0IHR3byBuZXcgVGV4dEluZGljYXRvciBwcmVzZW50YXRpb24gYW5pbWF0aW9u
cworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTM5NzE1
CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS8xOTIzNzk0NT4KKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFdlYkNvcmUuZXhwLmluOgorICAgICAgICBB
ZGp1c3Qgb25lIHN5bWJvbCBhbmQgZXhwb3J0IGFub3RoZXIuCisKKyAgICAgICAgKiBwYWdlL1Rl
eHRJbmRpY2F0b3IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6VGV4dEluZGljYXRvcjo6Y3JlYXRl
V2l0aFNlbGVjdGlvbkluRnJhbWUpOgorICAgICAgICBUYWtlIGEgYmx1ZS1oaWdobGlnaHQgc25h
cHNob3QgaWYgd2UncmUgZG9pbmcgYSBjcm9zc2ZhZGUgd2l0aG91dCBhIGJvdW5jZS4KKworICAg
ICAgICAqIHBhZ2UvVGV4dEluZGljYXRvci5oOgorICAgICAgICAoV2ViQ29yZTo6VGV4dEluZGlj
YXRvcjo6cHJlc2VudGF0aW9uVHJhbnNpdGlvbik6CisgICAgICAgIEFkZCBGYWRlSW4gYW5kIENy
b3NzZmFkZSB0cmFuc2l0aW9uIHR5cGVzLgorCisgICAgICAgICogcGFnZS9tYWMvVGV4dEluZGlj
YXRvcldpbmRvdy5oOgorICAgICAgICAqIHBhZ2UvbWFjL1RleHRJbmRpY2F0b3JXaW5kb3cubW06
CisgICAgICAgICgtW1dlYlRleHRJbmRpY2F0b3JWaWV3IGluaXRXaXRoRnJhbWU6dGV4dEluZGlj
YXRvcjptYXJnaW46XSk6CisgICAgICAgIChjcmVhdGVCb3VuY2VBbmltYXRpb24pOgorICAgICAg
ICAoY3JlYXRlQ29udGVudENyb3NzZmFkZUFuaW1hdGlvbik6CisgICAgICAgIChjcmVhdGVTaGFk
b3dGYWRlQW5pbWF0aW9uKToKKyAgICAgICAgKGNyZWF0ZUZhZGVJbkFuaW1hdGlvbik6CisgICAg
ICAgICgtW1dlYlRleHRJbmRpY2F0b3JWaWV3IF90ZXh0SW5kaWNhdG9yV2FudHNCb3VuY2VdKToK
KyAgICAgICAgKC1bV2ViVGV4dEluZGljYXRvclZpZXcgX3RleHRJbmRpY2F0b3JXYW50c0NvbnRl
bnRDcm9zc2ZhZGVdKToKKyAgICAgICAgKC1bV2ViVGV4dEluZGljYXRvclZpZXcgX3RleHRJbmRp
Y2F0b3JXYW50c0ZhZGVJbl0pOgorICAgICAgICBGYWN0b3Igb3V0IHRoZSBhbmltYXRpb24gY29u
c3RydWN0aW9uLgorCisgICAgICAgICgtW1dlYlRleHRJbmRpY2F0b3JWaWV3IF9hbmltYXRpb25E
dXJhdGlvbl0pOgorICAgICAgICBGYWN0b3Igb3V0IHRoZSBkdXJhdGlvbiBjb21wdXRhdGlvbi4K
KworICAgICAgICAoLVtXZWJUZXh0SW5kaWNhdG9yVmlldyBwcmVzZW50XSk6CisgICAgICAgICgt
W1dlYlRleHRJbmRpY2F0b3JWaWV3IHNldEFuaW1hdGlvblByb2dyZXNzOl0pOgorICAgICAgICBJ
bXBsZW1lbnQgRmFkZUluIGFuZCBDcm9zc2ZhZGUgdHJhbnNpdGlvbnMuCisgICAgICAgIFRoZXkg
Y2FuIGJlIGRyaXZlbiBleHRlcm5hbGx5IGFuZCB0aGVuIGNvbnRpbnVlIGZyb20gd2hlcmUgdGhl
eQorICAgICAgICBsZWZ0IG9mZiB3aGVuIHRoZSBwcm9ncmVzcyByZWFjaGVzIDEwMCUuCisgICAg
ICAgIEZhZGVJbiBjaGFuZ2VzIHRoZSBvcGFjaXR5IG9mIHRoZSB3aG9sZSBidWJibGUsIENyb3Nz
ZmFkZQorICAgICAgICBjcm9zc2ZhZGVzIHRoZSBjb250ZW50IChmcm9tIGJsdWUgdG8geWVsbG93
KS4KKworICAgICAgICAoV2ViQ29yZTo6VGV4dEluZGljYXRvcldpbmRvdzo6VGV4dEluZGljYXRv
cldpbmRvdyk6CisgICAgICAgIChXZWJDb3JlOjpUZXh0SW5kaWNhdG9yV2luZG93Ojp+VGV4dElu
ZGljYXRvcldpbmRvdyk6CisgICAgICAgIERvbid0IGltbWVkaWF0ZWx5IGRlc3Ryb3kgdGhlIHdp
bmRvdyBpZiBpdCBpcyBjcm9zc2ZhZGVzIG9yIGZhZGVzIGluLgorICAgICAgICBGYWRlIGl0IG91
dCwgaW5zdGVhZC4KKworICAgICAgICAoV2ViQ29yZTo6VGV4dEluZGljYXRvcldpbmRvdzo6c2V0
QW5pbWF0aW9uUHJvZ3Jlc3MpOgorICAgICAgICBEcml2ZSB0aGUgcGF1c2VkIGFuaW1hdGlvbiBt
YW51YWxseS4gSWYgcHJvZ3Jlc3MgaGl0cyAxMDAlLAorICAgICAgICBzdGFydCBydW5uaW5nIGl0
IGF1dG9tYXRpY2FsbHkgZnJvbSB3aGVyZSBpdCBsYXN0IGxlZnQgb2ZmLgorCisgICAgICAgIChX
ZWJDb3JlOjpUZXh0SW5kaWNhdG9yV2luZG93OjpzZXRUZXh0SW5kaWNhdG9yKToKKyAgICAgICAg
KFdlYkNvcmU6OlRleHRJbmRpY2F0b3JXaW5kb3c6OnN0YXJ0RmFkZU91dCk6CisgICAgICAgICgt
W1dlYlRleHRJbmRpY2F0b3JWaWV3IHByZXNlbnRXaXRoQ29tcGxldGlvbkhhbmRsZXI6XSk6IERl
bGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpUZXh0SW5kaWNhdG9yV2luZG93OjpzdGFydEZhZGVP
dXRUaW1lckZpcmVkKTogRGVsZXRlZC4KKyAgICAgICAgUmVtb3ZlIHRoZSBjb21wbGV0aW9uIGJs
b2NrIGZyb20gLXByZXNlbnQuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9zcGkvbWFjL05TSW1tZWRp
YXRlQWN0aW9uR2VzdHVyZVJlY29nbml6ZXJTUEkuaDoKKyAgICAgICAgQWRkIHNvbWUgU1BJLgor
CiAyMDE0LTEyLTE2ICBBbmRyZWFzIEtsaW5nICA8YWtsaW5nQGFwcGxlLmNvbT4KIAogICAgICAg
ICBVc2UgUmVmIGZvciBTZWN1cml0eU9yaWdpbi4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
bWFjL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvbWFjL0NoYW5nZUxvZwppbmRleCA2Nzc3ZWU2
NDkwZWQwNTVlMjIyZWFmOTQ0NDkyNDIyN2NkYjMwNjUwLi45YTJhYzc3NjQ4OGU1M2NkY2VlZmQ1
YTBmMGVlMGVhMTEyMjZiNmVmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L21hYy9DaGFuZ2VM
b2cKKysrIGIvU291cmNlL1dlYktpdC9tYWMvQ2hhbmdlTG9nCkBAIC0yNiw2ICsyNiw1MiBAQAog
CiAyMDE0LTEyLTE2ICBUaW1vdGh5IEhvcnRvbiAgPHRpbW90aHlfaG9ydG9uQGFwcGxlLmNvbT4K
IAorICAgICAgICBJbXBsZW1lbnQgYW5kIGFkb3B0IHR3byBuZXcgVGV4dEluZGljYXRvciBwcmVz
ZW50YXRpb24gYW5pbWF0aW9ucworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MTM5NzE1CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS8xOTIzNzk0NT4KKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFdlYlZpZXcv
V2ViQWN0aW9uTWVudUNvbnRyb2xsZXIubW06CisgICAgICAgICgtW1dlYkFjdGlvbk1lbnVDb250
cm9sbGVyIF9zaG93VGV4dEluZGljYXRvcl0pOgorICAgICAgICAqIFdlYlZpZXcvV2ViSFRNTFZp
ZXcubW06CisgICAgICAgICgtW1dlYkhUTUxWaWV3IHF1aWNrTG9va1dpdGhFdmVudDpdKToKKyAg
ICAgICAgUmVtb3ZlIHRoZSBjb21wbGV0aW9uSGFuZGxlciBmcm9tIHRleHQgaW5kaWNhdG9yIHBy
ZXNlbnRhdGlvbi4KKworICAgICAgICAqIFdlYlZpZXcvV2ViSW1tZWRpYXRlQWN0aW9uQ29udHJv
bGxlci5tbToKKyAgICAgICAgKC1bV2ViSW1tZWRpYXRlQWN0aW9uQ29udHJvbGxlciBpbW1lZGlh
dGVBY3Rpb25SZWNvZ25pemVyV2lsbFByZXBhcmU6XSk6CisgICAgICAgICgtW1dlYkltbWVkaWF0
ZUFjdGlvbkNvbnRyb2xsZXIgaW1tZWRpYXRlQWN0aW9uUmVjb2duaXplckRpZFVwZGF0ZUFuaW1h
dGlvbjpdKToKKyAgICAgICAgKC1bV2ViSW1tZWRpYXRlQWN0aW9uQ29udHJvbGxlciBpbW1lZGlh
dGVBY3Rpb25SZWNvZ25pemVyRGlkQ2FuY2VsQW5pbWF0aW9uOl0pOgorICAgICAgICAoLVtXZWJJ
bW1lZGlhdGVBY3Rpb25Db250cm9sbGVyIGltbWVkaWF0ZUFjdGlvblJlY29nbml6ZXJEaWRDb21w
bGV0ZUFuaW1hdGlvbjpdKToKKyAgICAgICAgKC1bV2ViSW1tZWRpYXRlQWN0aW9uQ29udHJvbGxl
ciBfbWVudUl0ZW1Gb3JEYXRhRGV0ZWN0ZWRUZXh0XSk6CisgICAgICAgICgtW1dlYkltbWVkaWF0
ZUFjdGlvbkNvbnRyb2xsZXIgX2FuaW1hdGlvbkNvbnRyb2xsZXJGb3JUZXh0XSk6CisgICAgICAg
ICgtW1dlYkltbWVkaWF0ZUFjdGlvbkNvbnRyb2xsZXIgX3Nob3dUZXh0SW5kaWNhdG9yXSk6Cisg
ICAgICAgIEZvcndhcmQgaW1tZWRpYXRlIGFjdGlvbiBnZXN0dXJlIHJlY29nbml6ZXIgYW5pbWF0
aW9uIHByb2dyZXNzCisgICAgICAgIHRvIFRleHRJbmRpY2F0b3IuIEZvcmNlIHVzIHRvIGtlZXAg
dGhlIHNlbGVjdGlvbiB3aGVuIGltbWVkaWF0ZQorICAgICAgICBhY3Rpb24gcG9wb3ZlcnMgc3Rl
YWwgZmlyc3QgcmVzcG9uZGVyIHN0YXR1cyBmcm9tIHRoZSBXZWJWaWV3LgorICAgICAgICBJZiB0
aGUgTG9va3VwIHJhbmdlIGlzIGVxdWFsIHRvIHRoZSBzZWxlY3Rpb24gcmFuZ2UsIHVzZSBhIENy
b3NzZmFkZQorICAgICAgICBhbmltYXRpb247IG90aGVyd2lzZSwgdXNlIGEgRmFkZUluIGFuaW1h
dGlvbi4KKworICAgICAgICAqIFdlYlZpZXcvV2ViVmlldy5tbToKKyAgICAgICAgKC1bV2ViVmll
dyBfc2V0TWFpbnRhaW5zSW5hY3RpdmVTZWxlY3Rpb246XSk6CisgICAgICAgICgtW1dlYlZpZXcg
bWFpbnRhaW5zSW5hY3RpdmVTZWxlY3Rpb25dKToKKyAgICAgICAgKC1bV2ViVmlldyBfYW5pbWF0
aW9uQ29udHJvbGxlckZvckRpY3Rpb25hcnlMb29rdXBQb3B1cEluZm86XSk6CisgICAgICAgICgt
W1dlYlZpZXcgX3NldFRleHRJbmRpY2F0b3I6ZmFkZU91dDpdKToKKyAgICAgICAgKC1bV2ViVmll
dyBfY2xlYXJUZXh0SW5kaWNhdG9yXSk6CisgICAgICAgICgtW1dlYlZpZXcgX3NldFRleHRJbmRp
Y2F0b3JBbmltYXRpb25Qcm9ncmVzczpdKToKKyAgICAgICAgKC1bV2ViVmlldyBfc2hvd0RpY3Rp
b25hcnlMb29rdXBQb3B1cDpdKToKKyAgICAgICAgKC1bV2ViVmlldyBfZGljdGlvbmFyeUxvb2t1
cFBvcG92ZXJXaWxsQ2xvc2U6XSk6CisgICAgICAgICgtW1dlYlZpZXcgX3NldFRleHRJbmRpY2F0
b3I6ZmFkZU91dDphbmltYXRpb25Db21wbGV0aW9uSGFuZGxlcjpdKToKKyAgICAgICAgUmVtb3Zl
IHRoZSBjb21wbGV0aW9uSGFuZGxlciBmcm9tIHRleHQgaW5kaWNhdG9yIHByZXNlbnRhdGlvbi4K
KyAgICAgICAgQWRkIGEgX3NldE1haW50YWluc0luYWN0aXZlU2VsZWN0aW9uLCB3aGljaCBhbGxv
d3MgV2ViS2l0IGludGVybmFscworICAgICAgICB0byBjaGFuZ2UgdGhlIHJldHVybiB2YWx1ZSBv
ZiAtbWFpbnRhaW5zSW5hY3RpdmVTZWxlY3Rpb24sIGFsbG93aW5nCisgICAgICAgIHVzIHRvIGtl
ZXAgdGhlIHNlbGVjdGlvbiBhbGl2ZSB3aGVuIHRoZSBXZWJWaWV3IGxvc2VzIGZpcnN0IHJlc3Bv
bmRlciBzdGF0dXMuCisKKyAgICAgICAgKiBXZWJWaWV3L1dlYlZpZXdEYXRhLmg6CisgICAgICAg
ICogV2ViVmlldy9XZWJWaWV3SW50ZXJuYWwuaDoKKworMjAxNC0xMi0xNiAgVGltb3RoeSBIb3J0
b24gIDx0aW1vdGh5X2hvcnRvbkBhcHBsZS5jb20+CisKICAgICAgICAgSW1tZWRpYXRlIGFjdGlv
biBwb3BvdmVycyBjYW4gZ2V0IHN0dWNrIG9wZW4KICAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTEzOTcwOQogICAgICAgICA8cmRhcjovL3Byb2JsZW0vMTky
NzAyNzk+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2Vi
S2l0Mi9DaGFuZ2VMb2cKaW5kZXggMDVjMWJlZTQ0NTJmNTYzZmQ0ZDM1M2EwMWZhMjY2ZDkxMjhh
MzA5MS4uYmEzMjE4NTBhYTY4NTJmMjgxODNkYTMyZWJiNWRmNGY1ZWJhYWYyMCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxv
ZwpAQCAtNTIsNiArNTIsNjMgQEAKIAogMjAxNC0xMi0xNiAgVGltb3RoeSBIb3J0b24gIDx0aW1v
dGh5X2hvcnRvbkBhcHBsZS5jb20+CiAKKyAgICAgICAgSW1wbGVtZW50IGFuZCBhZG9wdCB0d28g
bmV3IFRleHRJbmRpY2F0b3IgcHJlc2VudGF0aW9uIGFuaW1hdGlvbnMKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEzOTcxNQorICAgICAgICA8cmRhcjov
L3Byb2JsZW0vMTkyMzc5NDU+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL21hYy9XS1ZpZXcubW06CisgICAgICAgICgtW1dL
VmlldyBfc2V0VGV4dEluZGljYXRvcjpmYWRlT3V0Ol0pOgorICAgICAgICAoLVtXS1ZpZXcgX3Nl
dFRleHRJbmRpY2F0b3JBbmltYXRpb25Qcm9ncmVzczpdKToKKyAgICAgICAgKC1bV0tWaWV3IF9z
ZXRUZXh0SW5kaWNhdG9yOmZhZGVPdXQ6YW5pbWF0aW9uQ29tcGxldGlvbkhhbmRsZXI6XSk6IERl
bGV0ZWQuCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9tYWMvV0tWaWV3SW50ZXJuYWwuaDoKKyAg
ICAgICAgKiBVSVByb2Nlc3MvUGFnZUNsaWVudC5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQ
YWdlUHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OldlYlBhZ2VQcm94
eSk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6c2V0VGV4dEluZGljYXRvckFuaW1h
dGlvblByb2dyZXNzKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpwZXJmb3JtQWN0
aW9uTWVudUhpdFRlc3RBdExvY2F0aW9uKToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUGFnZVBy
b3h5Lmg6CisgICAgICAgICogVUlQcm9jZXNzL21hYy9QYWdlQ2xpZW50SW1wbC5oOgorICAgICAg
ICAqIFVJUHJvY2Vzcy9tYWMvUGFnZUNsaWVudEltcGwubW06CisgICAgICAgIChXZWJLaXQ6OlBh
Z2VDbGllbnRJbXBsOjpzZXRUZXh0SW5kaWNhdG9yQW5pbWF0aW9uUHJvZ3Jlc3MpOgorICAgICAg
ICAoV2ViS2l0OjpQYWdlQ2xpZW50SW1wbDo6ZGlkUGVyZm9ybURpY3Rpb25hcnlMb29rdXApOgor
ICAgICAgICBSZW1vdmUgdGhlIGNvbXBsZXRpb24gaGFuZGxlciBibG9jayBhcmd1bWVudCBmcm9t
IFRleHRJbmRpY2F0b3IKKyAgICAgICAgaW5zdGFsbGF0aW9uLgorICAgICAgICBQbHVtYiBhbmlt
YXRpb24gcHJvZ3Jlc3MgdGhyb3VnaCBQYWdlQ2xpZW50IHRvIFRleHRJbmRpY2F0b3JXaW5kb3cu
CisKKyAgICAgICAgKiBVSVByb2Nlc3MvbWFjL1dLQWN0aW9uTWVudUNvbnRyb2xsZXIubW06Cisg
ICAgICAgICgtW1dLQWN0aW9uTWVudUNvbnRyb2xsZXIgcHJlcGFyZUZvck1lbnU6d2l0aEV2ZW50
Ol0pOgorICAgICAgICAoLVtXS0FjdGlvbk1lbnVDb250cm9sbGVyIF9kZWZhdWx0TWVudUl0ZW1z
Rm9yRGF0YURldGVjdGVkVGV4dF0pOgorICAgICAgICAqIFVJUHJvY2Vzcy9tYWMvV0tJbW1lZGlh
dGVBY3Rpb25Db250cm9sbGVyLm1tOgorICAgICAgICAoLVtXS0ltbWVkaWF0ZUFjdGlvbkNvbnRy
b2xsZXIgX2NsZWFySW1tZWRpYXRlQWN0aW9uU3RhdGVdKToKKyAgICAgICAgKC1bV0tJbW1lZGlh
dGVBY3Rpb25Db250cm9sbGVyIGltbWVkaWF0ZUFjdGlvblJlY29nbml6ZXJXaWxsUHJlcGFyZTpd
KToKKyAgICAgICAgKC1bV0tJbW1lZGlhdGVBY3Rpb25Db250cm9sbGVyIGltbWVkaWF0ZUFjdGlv
blJlY29nbml6ZXJEaWRVcGRhdGVBbmltYXRpb246XSk6CisgICAgICAgICgtW1dLSW1tZWRpYXRl
QWN0aW9uQ29udHJvbGxlciBpbW1lZGlhdGVBY3Rpb25SZWNvZ25pemVyRGlkQ2FuY2VsQW5pbWF0
aW9uOl0pOgorICAgICAgICAoLVtXS0ltbWVkaWF0ZUFjdGlvbkNvbnRyb2xsZXIgaW1tZWRpYXRl
QWN0aW9uUmVjb2duaXplckRpZENvbXBsZXRlQW5pbWF0aW9uOl0pOgorICAgICAgICAoLVtXS0lt
bWVkaWF0ZUFjdGlvbkNvbnRyb2xsZXIgX21lbnVJdGVtRm9yRGF0YURldGVjdGVkVGV4dF0pOgor
ICAgICAgICAoLVtXS0ltbWVkaWF0ZUFjdGlvbkNvbnRyb2xsZXIgX2FuaW1hdGlvbkNvbnRyb2xs
ZXJGb3JUZXh0XSk6CisgICAgICAgIEZvcndhcmQgaW1tZWRpYXRlIGFjdGlvbiBnZXN0dXJlIHJl
Y29nbml6ZXIgYW5pbWF0aW9uIHByb2dyZXNzCisgICAgICAgIHRvIFRleHRJbmRpY2F0b3IuIEZv
cmNlIHVzIHRvIGtlZXAgdGhlIHNlbGVjdGlvbiB3aGVuIGltbWVkaWF0ZQorICAgICAgICBhY3Rp
b24gcG9wb3ZlcnMgc3RlYWwgZmlyc3QgcmVzcG9uZGVyIHN0YXR1cyBmcm9tIHRoZSBXZWJWaWV3
LgorCisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaDoKKyAgICAgICAgKiBX
ZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5tZXNzYWdlcy5pbjoKKyAgICAgICAgKiBXZWJQcm9j
ZXNzL1dlYlBhZ2UvbWFjL1dlYlBhZ2VNYWMubW06CisgICAgICAgIChXZWJLaXQ6OnRleHRJbmRp
Y2F0b3JUcmFuc2l0aW9uRm9yQWN0aW9uTWVudSk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6
OnBlcmZvcm1BY3Rpb25NZW51SGl0VGVzdEF0TG9jYXRpb24pOgorICAgICAgICBGYWN0b3Igb3V0
IHRoZSBwcmVzZW50YXRpb24gYW5pbWF0aW9uIGRlY2lzaW9uIGNvZGUuCisgICAgICAgIEZvciBp
bW1lZGlhdGUgYWN0aW9ucywgb2YgdGhlIExvb2t1cCByYW5nZSBpcyBlcXVhbCB0byB0aGUKKyAg
ICAgICAgc2VsZWN0aW9uIHJhbmdlLCB1c2UgYSBDcm9zc2ZhZGUgYW5pbWF0aW9uOyBvdGhlcndp
c2UsIHVzZSBhIEZhZGVJbgorICAgICAgICBhbmltYXRpb24uCisgICAgICAgIFB1c2ggd2hldGhl
ciB0aGUgYWN0aW9uTWVudUhpdFRlc3QgaXMgZm9yIGFuIGltbWVkaWF0ZSBhY3Rpb24KKyAgICAg
ICAgb3IgYSBtZW51IHRvIHRoZSBXZWIgcHJvY2VzcywgdG8gbWFrZSB0aGUgcHJlc2VudGF0aW9u
IGFuaW1hdGlvbgorICAgICAgICBkZWNpc2lvbiBjb2RlIGxpdmUgZW50aXJlbHkgaW4gdGhlIFdl
YiBwcm9jZXNzLgorICAgICAgICBBdm9pZCBleHRyYWN0aW5nIGVuY29kZWQgaW1hZ2UgZGF0YSBp
ZiB3ZSBrbm93IHdlJ3JlIGRvaW5nCisgICAgICAgIGFuIGltbWVkaWF0ZSBhY3Rpb24gYW5kIHdp
bGwgbmV2ZXIgbmVlZCBpdC4KKworMjAxNC0xMi0xNiAgVGltb3RoeSBIb3J0b24gIDx0aW1vdGh5
X2hvcnRvbkBhcHBsZS5jb20+CisKICAgICAgICAgSW1tZWRpYXRlIGFjdGlvbiBwb3BvdmVycyBj
YW4gZ2V0IHN0dWNrIG9wZW4KICAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTEzOTcwOQogICAgICAgICA8cmRhcjovL3Byb2JsZW0vMTkyNzAyNzk+CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmV4cC5pbiBiL1NvdXJjZS9XZWJDb3JlL1dl
YkNvcmUuZXhwLmluCmluZGV4IGZmNjZiYzgxNTUxYjAwYWQ3ZTgyYmU0NmFiMGNlY2Q2NmJiYjhi
NzIuLjg1ODk3NzNiN2M5YWUxYTlkZmE1NDRhMjAzYWRhOTc0MjlmOTM0NDkgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZXhwLmluCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNv
cmUuZXhwLmluCkBAIC0xODIzLDYgKzE4MjMsNyBAQCBfX1pOSzdXZWJDb3JlMTZIVE1MSW5wdXRF
bGVtZW50NXZhbHVlRXYKIF9fWk5LN1dlYkNvcmUxNkhUTUxJbnB1dEVsZW1lbnQ2aXNUZXh0RXYK
IF9fWk5LN1dlYkNvcmUxNkljb25EYXRhYmFzZUJhc2UxMmRhdGFiYXNlUGF0aEV2CiBfX1pOSzdX
ZWJDb3JlMTZSZXNvdXJjZVJlc3BvbnNlMTNuc1VSTFJlc3BvbnNlRXYKK19fWk5LN1dlYkNvcmUx
NlZpc2libGVTZWxlY3Rpb24xMGZpcnN0UmFuZ2VFdgogX19aTks3V2ViQ29yZTE2VmlzaWJsZVNl
bGVjdGlvbjE3aXNDb250ZW50RWRpdGFibGVFdgogX19aTks3V2ViQ29yZTE2VmlzaWJsZVNlbGVj
dGlvbjE3aXNJblBhc3N3b3JkRmllbGRFdgogX19aTks3V2ViQ29yZTE2VmlzaWJsZVNlbGVjdGlv
bjE3dG9Ob3JtYWxpemVkUmFuZ2VFdgpAQCAtMjMxMiw3ICsyMzEzLDggQEAgX19aTjdXZWJDb3Jl
MTdTY3JvbGxiYXJUaGVtZU1hYzIzc2V0VXBPdmVyaGFuZ0FyZWFTaGFkb3dFUDdDQUxheWVyCiBf
X1pON1dlYkNvcmUxN1Njcm9sbGJhclRoZW1lTWFjMjRyZW1vdmVPdmVyaGFuZ0FyZWFTaGFkb3dF
UDdDQUxheWVyCiBfX1pON1dlYkNvcmUxN1Njcm9sbGJhclRoZW1lTWFjMjdzZXRVcE92ZXJoYW5n
QXJlYUJhY2tncm91bmRFUDdDQUxheWVyUktOU181Q29sb3JFCiBfX1pON1dlYkNvcmUxN1Njcm9s
bGJhclRoZW1lTWFjMjhyZW1vdmVPdmVyaGFuZ0FyZWFCYWNrZ3JvdW5kRVA3Q0FMYXllcgotX19a
TjdXZWJDb3JlMTlUZXh0SW5kaWNhdG9yV2luZG93MTZzZXRUZXh0SW5kaWNhdG9yRU4zV1RGMTBQ
YXNzUmVmUHRySU5TXzEzVGV4dEluZGljYXRvckVFRTZDR1JlY3RiTlN0M19fMThmdW5jdGlvbklG
dnZFRUUKK19fWk43V2ViQ29yZTE5VGV4dEluZGljYXRvcldpbmRvdzE2c2V0VGV4dEluZGljYXRv
ckVOM1dURjEwUGFzc1JlZlB0cklOU18xM1RleHRJbmRpY2F0b3JFRUU2Q0dSZWN0YgorX19aTjdX
ZWJDb3JlMTlUZXh0SW5kaWNhdG9yV2luZG93MjBzZXRBbmltYXRpb25Qcm9ncmVzc0VmCiBfX1pO
N1dlYkNvcmUxOVRleHRJbmRpY2F0b3JXaW5kb3dDMUVQNk5TVmlldwogX19aTjdXZWJDb3JlMTlU
ZXh0SW5kaWNhdG9yV2luZG93RDFFdgogX19aTjdXZWJDb3JlMTlhcHBsaWNhdGlvbklzU2FmYXJp
RXYKQEAgLTM0MTIsNyArMzQxNCw2IEBAIF9fWk43V2ViQ29yZTVSYW5nZTZjcmVhdGVFUk5TXzhE
b2N1bWVudEVSS05TXzhQb3NpdGlvbkVTNV8KIF9fWk43V2ViQ29yZThQb3NpdGlvbkMxRU4zV1RG
MTBQYXNzUmVmUHRySU5TXzROb2RlRUVFTlMwXzEwQW5jaG9yVHlwZUUKIF9fWk5LN1dlYkNvcmUx
MUltYWdlQnVmZmVyN2NvbnRleHRFdgogX19aTks3V2ViQ29yZTExSW1hZ2VCdWZmZXI5Y29weUlt
YWdlRU5TXzE2QmFja2luZ1N0b3JlQ29weUVOU18xM1NjYWxlQmVoYXZpb3JFCi1fX1pOSzdXZWJD
b3JlMTZWaXNpYmxlU2VsZWN0aW9uMTBmaXJzdFJhbmdlRXYKICNlbmRpZgogCiAjaWYgRU5BQkxF
KFNQRUVDSF9TWU5USEVTSVMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1RleHRJ
bmRpY2F0b3IuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9UZXh0SW5kaWNhdG9yLmNwcAppbmRl
eCBlZTFkZTlkNGFhMjk2YzIwNTU2Zjk4NzEyMmM1YTkyODg5YTMzNmQ5Li5hZTA0YWIwM2FlMzVk
Mzc2MDg3Mzk5M2I0NDEzMzVjYTExYmFiNDYwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
YWdlL1RleHRJbmRpY2F0b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvVGV4dEluZGlj
YXRvci5jcHAKQEAgLTE0MSw3ICsxNDEsNyBAQCBQYXNzUmVmUHRyPFRleHRJbmRpY2F0b3I+IFRl
eHRJbmRpY2F0b3I6OmNyZWF0ZVdpdGhTZWxlY3Rpb25JbkZyYW1lKEZyYW1lJiBmcmFtZQogICAg
ICAgICByZXR1cm4gbnVsbHB0cjsKIAogICAgIFJlZlB0cjxJbWFnZT4gaW5kaWNhdG9yQml0bWFw
V2l0aEhpZ2hsaWdodDsKLSAgICBpZiAocHJlc2VudGF0aW9uVHJhbnNpdGlvbiA9PSBUZXh0SW5k
aWNhdG9yUHJlc2VudGF0aW9uVHJhbnNpdGlvbjo6Qm91bmNlQW5kQ3Jvc3NmYWRlKQorICAgIGlm
IChwcmVzZW50YXRpb25UcmFuc2l0aW9uID09IFRleHRJbmRpY2F0b3JQcmVzZW50YXRpb25UcmFu
c2l0aW9uOjpCb3VuY2VBbmRDcm9zc2ZhZGUgfHwgcHJlc2VudGF0aW9uVHJhbnNpdGlvbiA9PSBU
ZXh0SW5kaWNhdG9yUHJlc2VudGF0aW9uVHJhbnNpdGlvbjo6Q3Jvc3NmYWRlKQogICAgICAgICBp
bmRpY2F0b3JCaXRtYXBXaXRoSGlnaGxpZ2h0ID0gc25hcHNob3RTZWxlY3Rpb25XaXRoSGlnaGxp
Z2h0KGZyYW1lKTsKIAogICAgIC8vIFN0b3JlIHRoZSBzZWxlY3Rpb24gcmVjdCBpbiB3aW5kb3cg
Y29vcmRpbmF0ZXMsIHRvIGJlIHVzZWQgc3Vic2VxdWVudGx5CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL1RleHRJbmRpY2F0b3IuaCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvVGV4dElu
ZGljYXRvci5oCmluZGV4IGJlMTBhMzMzM2YyZmVlMjM1NzEzZWY3MDhmMGEyZDgxZjRjNjhkMjQu
LmExMzY5MmI4ZDQxYThjZTkyNmViZjFkOTEzYWNjZmFlZTZmZjk0NDQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BhZ2UvVGV4dEluZGljYXRvci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bh
Z2UvVGV4dEluZGljYXRvci5oCkBAIC00Nyw3ICs0Nyw5IEBAIGNsYXNzIFJhbmdlOwogZW51bSBj
bGFzcyBUZXh0SW5kaWNhdG9yUHJlc2VudGF0aW9uVHJhbnNpdGlvbiB7CiAgICAgTm9uZSwKICAg
ICBCb3VuY2UsCi0gICAgQm91bmNlQW5kQ3Jvc3NmYWRlCisgICAgQm91bmNlQW5kQ3Jvc3NmYWRl
LAorICAgIEZhZGVJbiwKKyAgICBDcm9zc2ZhZGUKIH07CiAKIHN0cnVjdCBUZXh0SW5kaWNhdG9y
RGF0YSB7CkBAIC03NCw4ICs3Niw4IEBAIHB1YmxpYzoKICAgICBmbG9hdCBjb250ZW50SW1hZ2VT
Y2FsZUZhY3RvcigpIGNvbnN0IHsgcmV0dXJuIG1fZGF0YS5jb250ZW50SW1hZ2VTY2FsZUZhY3Rv
cjsgfQogICAgIEltYWdlICpjb250ZW50SW1hZ2VXaXRoSGlnaGxpZ2h0KCkgY29uc3QgeyByZXR1
cm4gbV9kYXRhLmNvbnRlbnRJbWFnZVdpdGhIaWdobGlnaHQuZ2V0KCk7IH0KICAgICBJbWFnZSAq
Y29udGVudEltYWdlKCkgY29uc3QgeyByZXR1cm4gbV9kYXRhLmNvbnRlbnRJbWFnZS5nZXQoKTsg
fQotICAgIFRleHRJbmRpY2F0b3JQcmVzZW50YXRpb25UcmFuc2l0aW9uIHByZXNlbnRhdGlvblRy
YW5zaXRpb24oKSBjb25zdCB7IHJldHVybiBtX2RhdGEucHJlc2VudGF0aW9uVHJhbnNpdGlvbjsg
fQogCisgICAgVGV4dEluZGljYXRvclByZXNlbnRhdGlvblRyYW5zaXRpb24gcHJlc2VudGF0aW9u
VHJhbnNpdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fZGF0YS5wcmVzZW50YXRpb25UcmFuc2l0aW9u
OyB9CiAgICAgdm9pZCBzZXRQcmVzZW50YXRpb25UcmFuc2l0aW9uKFRleHRJbmRpY2F0b3JQcmVz
ZW50YXRpb25UcmFuc2l0aW9uIHRyYW5zaXRpb24pIHsgbV9kYXRhLnByZXNlbnRhdGlvblRyYW5z
aXRpb24gPSB0cmFuc2l0aW9uOyB9CiAKICAgICBUZXh0SW5kaWNhdG9yRGF0YSBkYXRhKCkgY29u
c3QgeyByZXR1cm4gbV9kYXRhOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL21h
Yy9UZXh0SW5kaWNhdG9yV2luZG93LmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL21hYy9UZXh0SW5k
aWNhdG9yV2luZG93LmgKaW5kZXggNDlhNGU2NWFkMDkyZWQyODlmZTdjNDEzYmY2ZGQ1ODViMTRj
MDAzNi4uN2MzZGNjNjBjZmUwODEzNWI2ZGJhNDIyZjAxYjViZjkxMTdjMzRkZSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGFnZS9tYWMvVGV4dEluZGljYXRvcldpbmRvdy5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BhZ2UvbWFjL1RleHRJbmRpY2F0b3JXaW5kb3cuaApAQCAtMjgsNyArMjgs
NiBAQAogCiAjaWYgUExBVEZPUk0oTUFDKQogCi0jaW1wb3J0IDxmdW5jdGlvbmFsPgogI2ltcG9y
dCA8d3RmL05vbmNvcHlhYmxlLmg+CiAjaW1wb3J0IDx3dGYvUmVmUHRyLmg+CiAjaW1wb3J0IDx3
dGYvUmV0YWluUHRyLmg+CkBAIC00OCwxMiArNDcsMTQgQEAgcHVibGljOgogICAgIGV4cGxpY2l0
IFRleHRJbmRpY2F0b3JXaW5kb3coTlNWaWV3ICopOwogICAgIH5UZXh0SW5kaWNhdG9yV2luZG93
KCk7CiAKLSAgICB2b2lkIHNldFRleHRJbmRpY2F0b3IoUGFzc1JlZlB0cjxUZXh0SW5kaWNhdG9y
PiwgQ0dSZWN0IGNvbnRlbnRSZWN0LCBib29sIGZhZGVPdXQsIHN0ZDo6ZnVuY3Rpb248dm9pZCAo
KT4gYW5pbWF0aW9uQ29tcGxldGlvbkhhbmRsZXIpOworICAgIHZvaWQgc2V0VGV4dEluZGljYXRv
cihQYXNzUmVmUHRyPFRleHRJbmRpY2F0b3I+LCBDR1JlY3QgY29udGVudFJlY3QsIGJvb2wgZmFk
ZU91dCk7CisKKyAgICB2b2lkIHNldEFuaW1hdGlvblByb2dyZXNzKGZsb2F0KTsKIAogcHJpdmF0
ZToKICAgICB2b2lkIGNsb3NlV2luZG93KCk7CiAKLSAgICB2b2lkIHN0YXJ0RmFkZU91dFRpbWVy
RmlyZWQoKTsKKyAgICB2b2lkIHN0YXJ0RmFkZU91dCgpOwogCiAgICAgTlNWaWV3ICptX3Rhcmdl
dFZpZXc7CiAgICAgUmVmUHRyPFRleHRJbmRpY2F0b3I+IG1fdGV4dEluZGljYXRvcjsKQEAgLTYx
LDggKzYyLDYgQEAgcHJpdmF0ZToKICAgICBSZXRhaW5QdHI8V2ViVGV4dEluZGljYXRvclZpZXc+
IG1fdGV4dEluZGljYXRvclZpZXc7CiAKICAgICBSdW5Mb29wOjpUaW1lcjxUZXh0SW5kaWNhdG9y
V2luZG93PiBtX3N0YXJ0RmFkZU91dFRpbWVyOwotCi0gICAgc3RkOjpmdW5jdGlvbjx2b2lkICgp
PiBtX2JvdW5jZUFuaW1hdGlvbkNvbXBsZXRpb25IYW5kbGVyOwogfTsKIAogfSAvLyBuYW1lc3Bh
Y2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL21hYy9UZXh0SW5kaWNh
dG9yV2luZG93Lm1tIGIvU291cmNlL1dlYkNvcmUvcGFnZS9tYWMvVGV4dEluZGljYXRvcldpbmRv
dy5tbQppbmRleCBjYjQ1ZjIzNzE2YWI0MTdhYjM3YzZkMTkyZWM3NDc4ODY4MDdjOWIzLi5mMjgw
MmVlOWEyZWVjZDMxNjYwODUyM2Q5ZWE0Y2YzMDMzMjllMzI3IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL21hYy9UZXh0SW5kaWNhdG9yV2luZG93Lm1tCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BhZ2UvbWFjL1RleHRJbmRpY2F0b3JXaW5kb3cubW0KQEAgLTM1LDYgKzM1LDcgQEAKIAog
Y29uc3QgQ0ZUaW1lSW50ZXJ2YWwgYm91bmNlQW5pbWF0aW9uRHVyYXRpb24gPSAwLjEyOwogY29u
c3QgQ0ZUaW1lSW50ZXJ2YWwgYm91bmNlV2l0aENyb3NzZmFkZUFuaW1hdGlvbkR1cmF0aW9uID0g
MC4zOworY29uc3QgQ0ZUaW1lSW50ZXJ2YWwgZmFkZUluQW5pbWF0aW9uRHVyYXRpb24gPSAwLjE1
OwogY29uc3QgQ0ZUaW1lSW50ZXJ2YWwgdGltZUJlZm9yZUZhZGVTdGFydHMgPSBib3VuY2VBbmlt
YXRpb25EdXJhdGlvbiArIDAuMjsKIGNvbnN0IENGVGltZUludGVydmFsIGZhZGVPdXRBbmltYXRp
b25EdXJhdGlvbiA9IDAuMzsKIApAQCAtNjksMTMgKzcwLDE2IEBAIHVzaW5nIG5hbWVzcGFjZSBX
ZWJDb3JlOwogICAgIFJlZlB0cjxUZXh0SW5kaWNhdG9yPiBfdGV4dEluZGljYXRvcjsKICAgICBS
ZXRhaW5QdHI8TlNBcnJheT4gX2JvdW5jZUxheWVyczsKICAgICBOU1NpemUgX21hcmdpbjsKKyAg
ICBib29sIF9oYXNDb21wbGV0ZWRBbmltYXRpb247CiB9CiAKIC0gKGluc3RhbmNldHlwZSlpbml0
V2l0aEZyYW1lOihOU1JlY3QpZnJhbWUgdGV4dEluZGljYXRvcjooUGFzc1JlZlB0cjxUZXh0SW5k
aWNhdG9yPil0ZXh0SW5kaWNhdG9yIG1hcmdpbjooTlNTaXplKW1hcmdpbjsKIAotLSAodm9pZClw
cmVzZW50V2l0aENvbXBsZXRpb25IYW5kbGVyOih2b2lkKF4pKHZvaWQpKWNvbXBsZXRpb25IYW5k
bGVyOworLSAodm9pZClwcmVzZW50OwogLSAodm9pZCloaWRlV2l0aENvbXBsZXRpb25IYW5kbGVy
Oih2b2lkKF4pKHZvaWQpKWNvbXBsZXRpb25IYW5kbGVyOwogCistICh2b2lkKXNldEFuaW1hdGlv
blByb2dyZXNzOihmbG9hdClwcm9ncmVzczsKKwogQGVuZAogCiBAaW1wbGVtZW50YXRpb24gV2Vi
VGV4dEluZGljYXRvclZpZXcKQEAgLTkxLDcgKzk1LDcgQEAgdXNpbmcgbmFtZXNwYWNlIFdlYkNv
cmU7CiAgICAgc2VsZi53YW50c0xheWVyID0gWUVTOwogICAgIHNlbGYubGF5ZXIuYW5jaG9yUG9p
bnQgPSBDR1BvaW50WmVybzsKIAotICAgIGJvb2wgd2FudHNDcm9zc2ZhZGUgPSBfdGV4dEluZGlj
YXRvci0+cHJlc2VudGF0aW9uVHJhbnNpdGlvbigpID09IFRleHRJbmRpY2F0b3JQcmVzZW50YXRp
b25UcmFuc2l0aW9uOjpCb3VuY2VBbmRDcm9zc2ZhZGU7CisgICAgYm9vbCB3YW50c0Nyb3NzZmFk
ZSA9IFtzZWxmIF90ZXh0SW5kaWNhdG9yV2FudHNDb250ZW50Q3Jvc3NmYWRlXTsKIAogICAgIEZs
b2F0U2l6ZSBjb250ZW50c0ltYWdlTG9naWNhbFNpemUgPSBfdGV4dEluZGljYXRvci0+Y29udGVu
dEltYWdlKCktPnNpemUoKTsKICAgICBjb250ZW50c0ltYWdlTG9naWNhbFNpemUuc2NhbGUoMSAv
IF90ZXh0SW5kaWNhdG9yLT5jb250ZW50SW1hZ2VTY2FsZUZhY3RvcigpKTsKQEAgLTE4Nyw0MSAr
MTkxLDExNyBAQCB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKICAgICByZXR1cm4gc2VsZjsKIH0K
IAotLSAodm9pZClwcmVzZW50V2l0aENvbXBsZXRpb25IYW5kbGVyOih2b2lkKF4pKHZvaWQpKWNv
bXBsZXRpb25IYW5kbGVyCitzdGF0aWMgUmV0YWluUHRyPENBS2V5ZnJhbWVBbmltYXRpb24+IGNy
ZWF0ZUJvdW5jZUFuaW1hdGlvbihDRlRpbWVJbnRlcnZhbCBkdXJhdGlvbikKIHsKLSAgICBib29s
IHdhbnRzQ3Jvc3NmYWRlID0gX3RleHRJbmRpY2F0b3ItPnByZXNlbnRhdGlvblRyYW5zaXRpb24o
KSA9PSBUZXh0SW5kaWNhdG9yUHJlc2VudGF0aW9uVHJhbnNpdGlvbjo6Qm91bmNlQW5kQ3Jvc3Nm
YWRlOwotICAgIGRvdWJsZSBhbmltYXRpb25EdXJhdGlvbiA9IHdhbnRzQ3Jvc3NmYWRlID8gYm91
bmNlV2l0aENyb3NzZmFkZUFuaW1hdGlvbkR1cmF0aW9uIDogYm91bmNlQW5pbWF0aW9uRHVyYXRp
b247CiAgICAgUmV0YWluUHRyPENBS2V5ZnJhbWVBbmltYXRpb24+IGJvdW5jZUFuaW1hdGlvbiA9
IFtDQUtleWZyYW1lQW5pbWF0aW9uIGFuaW1hdGlvbldpdGhLZXlQYXRoOkAidHJhbnNmb3JtIl07
CiAgICAgW2JvdW5jZUFuaW1hdGlvbiBzZXRWYWx1ZXM6QFsKICAgICAgICAgW05TVmFsdWUgdmFs
dWVXaXRoQ0FUcmFuc2Zvcm0zRDpDQVRyYW5zZm9ybTNESWRlbnRpdHldLAogICAgICAgICBbTlNW
YWx1ZSB2YWx1ZVdpdGhDQVRyYW5zZm9ybTNEOkNBVHJhbnNmb3JtM0RNYWtlU2NhbGUobWlkQm91
bmNlU2NhbGUsIG1pZEJvdW5jZVNjYWxlLCAxKV0sCiAgICAgICAgIFtOU1ZhbHVlIHZhbHVlV2l0
aENBVHJhbnNmb3JtM0Q6Q0FUcmFuc2Zvcm0zRElkZW50aXR5XQogICAgICAgICBdXTsKLSAgICBb
Ym91bmNlQW5pbWF0aW9uIHNldER1cmF0aW9uOmFuaW1hdGlvbkR1cmF0aW9uXTsKKyAgICBbYm91
bmNlQW5pbWF0aW9uIHNldER1cmF0aW9uOmR1cmF0aW9uXTsKKworICAgIHJldHVybiBib3VuY2VB
bmltYXRpb247Cit9CisKK3N0YXRpYyBSZXRhaW5QdHI8Q0FCYXNpY0FuaW1hdGlvbj4gY3JlYXRl
Q29udGVudENyb3NzZmFkZUFuaW1hdGlvbihDRlRpbWVJbnRlcnZhbCBkdXJhdGlvbiwgVGV4dElu
ZGljYXRvciYgdGV4dEluZGljYXRvcikKK3sKKyAgICBSZXRhaW5QdHI8Q0FCYXNpY0FuaW1hdGlv
bj4gY3Jvc3NmYWRlQW5pbWF0aW9uID0gW0NBQmFzaWNBbmltYXRpb24gYW5pbWF0aW9uV2l0aEtl
eVBhdGg6QCJjb250ZW50cyJdOworICAgIFJldGFpblB0cjxDR0ltYWdlUmVmPiBjb250ZW50c0lt
YWdlID0gdGV4dEluZGljYXRvci5jb250ZW50SW1hZ2UoKS0+Z2V0Q0dJbWFnZVJlZigpOworICAg
IFtjcm9zc2ZhZGVBbmltYXRpb24gc2V0VG9WYWx1ZTooaWQpY29udGVudHNJbWFnZS5nZXQoKV07
CisgICAgW2Nyb3NzZmFkZUFuaW1hdGlvbiBzZXRGaWxsTW9kZTprQ0FGaWxsTW9kZUZvcndhcmRz
XTsKKyAgICBbY3Jvc3NmYWRlQW5pbWF0aW9uIHNldFJlbW92ZWRPbkNvbXBsZXRpb246Tk9dOwor
ICAgIFtjcm9zc2ZhZGVBbmltYXRpb24gc2V0RHVyYXRpb246ZHVyYXRpb25dOworCisgICAgcmV0
dXJuIGNyb3NzZmFkZUFuaW1hdGlvbjsKK30KKworc3RhdGljIFJldGFpblB0cjxDQUJhc2ljQW5p
bWF0aW9uPiBjcmVhdGVTaGFkb3dGYWRlQW5pbWF0aW9uKENGVGltZUludGVydmFsIGR1cmF0aW9u
KQoreworICAgIFJldGFpblB0cjxDQUJhc2ljQW5pbWF0aW9uPiBmYWRlU2hhZG93SW5BbmltYXRp
b24gPSBbQ0FCYXNpY0FuaW1hdGlvbiBhbmltYXRpb25XaXRoS2V5UGF0aDpAInNoYWRvd09wYWNp
dHkiXTsKKyAgICBbZmFkZVNoYWRvd0luQW5pbWF0aW9uIHNldEZyb21WYWx1ZTpAMF07CisgICAg
W2ZhZGVTaGFkb3dJbkFuaW1hdGlvbiBzZXRUb1ZhbHVlOkAxXTsKKyAgICBbZmFkZVNoYWRvd0lu
QW5pbWF0aW9uIHNldEZpbGxNb2RlOmtDQUZpbGxNb2RlRm9yd2FyZHNdOworICAgIFtmYWRlU2hh
ZG93SW5BbmltYXRpb24gc2V0UmVtb3ZlZE9uQ29tcGxldGlvbjpOT107CisgICAgW2ZhZGVTaGFk
b3dJbkFuaW1hdGlvbiBzZXREdXJhdGlvbjpkdXJhdGlvbl07CisKKyAgICByZXR1cm4gZmFkZVNo
YWRvd0luQW5pbWF0aW9uOworfQorCitzdGF0aWMgUmV0YWluUHRyPENBQmFzaWNBbmltYXRpb24+
IGNyZWF0ZUZhZGVJbkFuaW1hdGlvbihDRlRpbWVJbnRlcnZhbCBkdXJhdGlvbikKK3sKKyAgICBS
ZXRhaW5QdHI8Q0FCYXNpY0FuaW1hdGlvbj4gZmFkZUluQW5pbWF0aW9uID0gW0NBQmFzaWNBbmlt
YXRpb24gYW5pbWF0aW9uV2l0aEtleVBhdGg6QCJvcGFjaXR5Il07CisgICAgW2ZhZGVJbkFuaW1h
dGlvbiBzZXRGcm9tVmFsdWU6QDBdOworICAgIFtmYWRlSW5BbmltYXRpb24gc2V0VG9WYWx1ZTpA
MV07CisgICAgW2ZhZGVJbkFuaW1hdGlvbiBzZXRGaWxsTW9kZTprQ0FGaWxsTW9kZUZvcndhcmRz
XTsKKyAgICBbZmFkZUluQW5pbWF0aW9uIHNldFJlbW92ZWRPbkNvbXBsZXRpb246Tk9dOworICAg
IFtmYWRlSW5BbmltYXRpb24gc2V0RHVyYXRpb246ZHVyYXRpb25dOworCisgICAgcmV0dXJuIGZh
ZGVJbkFuaW1hdGlvbjsKK30KKworLSAoYm9vbClfdGV4dEluZGljYXRvcldhbnRzQm91bmNlCit7
CisgICAgcmV0dXJuIF90ZXh0SW5kaWNhdG9yLT5wcmVzZW50YXRpb25UcmFuc2l0aW9uKCkgPT0g
VGV4dEluZGljYXRvclByZXNlbnRhdGlvblRyYW5zaXRpb246OkJvdW5jZUFuZENyb3NzZmFkZSB8
fCBfdGV4dEluZGljYXRvci0+cHJlc2VudGF0aW9uVHJhbnNpdGlvbigpID09IFRleHRJbmRpY2F0
b3JQcmVzZW50YXRpb25UcmFuc2l0aW9uOjpCb3VuY2U7Cit9CisKKy0gKGJvb2wpX3RleHRJbmRp
Y2F0b3JXYW50c0NvbnRlbnRDcm9zc2ZhZGUKK3sKKyAgICByZXR1cm4gKF90ZXh0SW5kaWNhdG9y
LT5wcmVzZW50YXRpb25UcmFuc2l0aW9uKCkgPT0gVGV4dEluZGljYXRvclByZXNlbnRhdGlvblRy
YW5zaXRpb246OkJvdW5jZUFuZENyb3NzZmFkZSB8fCBfdGV4dEluZGljYXRvci0+cHJlc2VudGF0
aW9uVHJhbnNpdGlvbigpID09IFRleHRJbmRpY2F0b3JQcmVzZW50YXRpb25UcmFuc2l0aW9uOjpD
cm9zc2ZhZGUpICYmIF90ZXh0SW5kaWNhdG9yLT5jb250ZW50SW1hZ2VXaXRoSGlnaGxpZ2h0KCk7
Cit9CisKKy0gKGJvb2wpX3RleHRJbmRpY2F0b3JXYW50c0ZhZGVJbgoreworICAgIHJldHVybiBf
dGV4dEluZGljYXRvci0+cHJlc2VudGF0aW9uVHJhbnNpdGlvbigpID09IFRleHRJbmRpY2F0b3JQ
cmVzZW50YXRpb25UcmFuc2l0aW9uOjpGYWRlSW47Cit9CisKKy0gKENGVGltZUludGVydmFsKV9h
bmltYXRpb25EdXJhdGlvbgoreworICAgIGJvb2wgd2FudHNCb3VuY2UgPSBbc2VsZiBfdGV4dElu
ZGljYXRvcldhbnRzQm91bmNlXTsKKyAgICBib29sIHdhbnRzQ3Jvc3NmYWRlID0gW3NlbGYgX3Rl
eHRJbmRpY2F0b3JXYW50c0NvbnRlbnRDcm9zc2ZhZGVdOworCisgICAgaWYgKHdhbnRzQm91bmNl
KSB7CisgICAgICAgIGlmICh3YW50c0Nyb3NzZmFkZSkKKyAgICAgICAgICAgIHJldHVybiBib3Vu
Y2VXaXRoQ3Jvc3NmYWRlQW5pbWF0aW9uRHVyYXRpb247CisgICAgICAgIHJldHVybiBib3VuY2VB
bmltYXRpb25EdXJhdGlvbjsKKyAgICB9CisKKyAgICByZXR1cm4gZmFkZUluQW5pbWF0aW9uRHVy
YXRpb247Cit9CisKKy0gKHZvaWQpcHJlc2VudAoreworICAgIGJvb2wgd2FudHNCb3VuY2UgPSBb
c2VsZiBfdGV4dEluZGljYXRvcldhbnRzQm91bmNlXTsKKyAgICBib29sIHdhbnRzQ3Jvc3NmYWRl
ID0gW3NlbGYgX3RleHRJbmRpY2F0b3JXYW50c0NvbnRlbnRDcm9zc2ZhZGVdOworICAgIGJvb2wg
d2FudHNGYWRlSW4gPSBbc2VsZiBfdGV4dEluZGljYXRvcldhbnRzRmFkZUluXTsKKyAgICBDRlRp
bWVJbnRlcnZhbCBhbmltYXRpb25EdXJhdGlvbiA9IFtzZWxmIF9hbmltYXRpb25EdXJhdGlvbl07
CisKKyAgICBfaGFzQ29tcGxldGVkQW5pbWF0aW9uID0gZmFsc2U7CisKKyAgICBSZXRhaW5QdHI8
Q0FBbmltYXRpb24+IHByZXNlbnRhdGlvbkFuaW1hdGlvbjsKKyAgICBpZiAod2FudHNCb3VuY2Up
CisgICAgICAgIHByZXNlbnRhdGlvbkFuaW1hdGlvbiA9IGNyZWF0ZUJvdW5jZUFuaW1hdGlvbihh
bmltYXRpb25EdXJhdGlvbik7CisgICAgZWxzZSBpZiAod2FudHNGYWRlSW4pCisgICAgICAgIHBy
ZXNlbnRhdGlvbkFuaW1hdGlvbiA9IGNyZWF0ZUZhZGVJbkFuaW1hdGlvbihhbmltYXRpb25EdXJh
dGlvbik7CiAKICAgICBSZXRhaW5QdHI8Q0FCYXNpY0FuaW1hdGlvbj4gY3Jvc3NmYWRlQW5pbWF0
aW9uOwogICAgIFJldGFpblB0cjxDQUJhc2ljQW5pbWF0aW9uPiBmYWRlU2hhZG93SW5BbmltYXRp
b247CiAgICAgaWYgKHdhbnRzQ3Jvc3NmYWRlKSB7Ci0gICAgICAgIGNyb3NzZmFkZUFuaW1hdGlv
biA9IFtDQUJhc2ljQW5pbWF0aW9uIGFuaW1hdGlvbldpdGhLZXlQYXRoOkAiY29udGVudHMiXTsK
LSAgICAgICAgUmV0YWluUHRyPENHSW1hZ2VSZWY+IGNvbnRlbnRzSW1hZ2UgPSBfdGV4dEluZGlj
YXRvci0+Y29udGVudEltYWdlKCktPmdldENHSW1hZ2VSZWYoKTsKLSAgICAgICAgW2Nyb3NzZmFk
ZUFuaW1hdGlvbiBzZXRUb1ZhbHVlOihpZCljb250ZW50c0ltYWdlLmdldCgpXTsKLSAgICAgICAg
W2Nyb3NzZmFkZUFuaW1hdGlvbiBzZXRGaWxsTW9kZTprQ0FGaWxsTW9kZUZvcndhcmRzXTsKLSAg
ICAgICAgW2Nyb3NzZmFkZUFuaW1hdGlvbiBzZXRSZW1vdmVkT25Db21wbGV0aW9uOk5PXTsKLSAg
ICAgICAgW2Nyb3NzZmFkZUFuaW1hdGlvbiBzZXREdXJhdGlvbjphbmltYXRpb25EdXJhdGlvbl07
Ci0KLSAgICAgICAgZmFkZVNoYWRvd0luQW5pbWF0aW9uID0gW0NBQmFzaWNBbmltYXRpb24gYW5p
bWF0aW9uV2l0aEtleVBhdGg6QCJzaGFkb3dPcGFjaXR5Il07Ci0gICAgICAgIFtmYWRlU2hhZG93
SW5BbmltYXRpb24gc2V0RnJvbVZhbHVlOkAwXTsKLSAgICAgICAgW2ZhZGVTaGFkb3dJbkFuaW1h
dGlvbiBzZXRUb1ZhbHVlOkAxXTsKLSAgICAgICAgW2ZhZGVTaGFkb3dJbkFuaW1hdGlvbiBzZXRG
aWxsTW9kZTprQ0FGaWxsTW9kZUZvcndhcmRzXTsKLSAgICAgICAgW2ZhZGVTaGFkb3dJbkFuaW1h
dGlvbiBzZXRSZW1vdmVkT25Db21wbGV0aW9uOk5PXTsKLSAgICAgICAgW2ZhZGVTaGFkb3dJbkFu
aW1hdGlvbiBzZXREdXJhdGlvbjphbmltYXRpb25EdXJhdGlvbl07CisgICAgICAgIGNyb3NzZmFk
ZUFuaW1hdGlvbiA9IGNyZWF0ZUNvbnRlbnRDcm9zc2ZhZGVBbmltYXRpb24oYW5pbWF0aW9uRHVy
YXRpb24sICpfdGV4dEluZGljYXRvcik7CisgICAgICAgIGZhZGVTaGFkb3dJbkFuaW1hdGlvbiA9
IGNyZWF0ZVNoYWRvd0ZhZGVBbmltYXRpb24oYW5pbWF0aW9uRHVyYXRpb24pOwogICAgIH0KIAog
ICAgIFtDQVRyYW5zYWN0aW9uIGJlZ2luXTsKLSAgICBbQ0FUcmFuc2FjdGlvbiBzZXRDb21wbGV0
aW9uQmxvY2s6Y29tcGxldGlvbkhhbmRsZXJdOwotICAgIGZvciAoQ0FMYXllciogYm91bmNlTGF5
ZXIgaW4gX2JvdW5jZUxheWVycy5nZXQoKSkgewotICAgICAgICBbYm91bmNlTGF5ZXIgc2V0T3Bh
Y2l0eToxXTsKLSAgICAgICAgW2JvdW5jZUxheWVyIGFkZEFuaW1hdGlvbjpib3VuY2VBbmltYXRp
b24uZ2V0KCkgZm9yS2V5OkAiYm91bmNlIl07CisgICAgZm9yIChDQUxheWVyICpib3VuY2VMYXll
ciBpbiBfYm91bmNlTGF5ZXJzLmdldCgpKSB7CisgICAgICAgIGlmICh3YW50c0ZhZGVJbiB8fCB3
YW50c0Nyb3NzZmFkZSkKKyAgICAgICAgICAgIGJvdW5jZUxheWVyLnNwZWVkID0gMDsKKworICAg
ICAgICBpZiAoIXdhbnRzRmFkZUluKQorICAgICAgICAgICAgYm91bmNlTGF5ZXIub3BhY2l0eSA9
IDE7CisKKyAgICAgICAgaWYgKHByZXNlbnRhdGlvbkFuaW1hdGlvbikKKyAgICAgICAgICAgIFti
b3VuY2VMYXllciBhZGRBbmltYXRpb246cHJlc2VudGF0aW9uQW5pbWF0aW9uLmdldCgpIGZvcktl
eTpAInByZXNlbnRhdGlvbiJdOworCiAgICAgICAgIGlmICh3YW50c0Nyb3NzZmFkZSkgewogICAg
ICAgICAgICAgW1tib3VuY2VMYXllciB2YWx1ZUZvcktleTp0ZXh0TGF5ZXJLZXldIGFkZEFuaW1h
dGlvbjpjcm9zc2ZhZGVBbmltYXRpb24uZ2V0KCkgZm9yS2V5OkAiY29udGVudFRyYW5zaXRpb24i
XTsKICAgICAgICAgICAgIFtbYm91bmNlTGF5ZXIgdmFsdWVGb3JLZXk6ZHJvcFNoYWRvd0xheWVy
S2V5XSBhZGRBbmltYXRpb246ZmFkZVNoYWRvd0luQW5pbWF0aW9uLmdldCgpIGZvcktleTpAImZh
ZGVTaGFkb3dJbiJdOwpAQCAtMjQ2LDYgKzMyNiwyOCBAQCB1c2luZyBuYW1lc3BhY2UgV2ViQ29y
ZTsKICAgICBbQ0FUcmFuc2FjdGlvbiBjb21taXRdOwogfQogCistICh2b2lkKXNldEFuaW1hdGlv
blByb2dyZXNzOihmbG9hdClwcm9ncmVzcworeworICAgIGlmIChfaGFzQ29tcGxldGVkQW5pbWF0
aW9uKQorICAgICAgICByZXR1cm47CisKKyAgICBpZiAocHJvZ3Jlc3MgPT0gMSkgeworICAgICAg
ICBfaGFzQ29tcGxldGVkQW5pbWF0aW9uID0gdHJ1ZTsKKworICAgICAgICBmb3IgKENBTGF5ZXIg
KmJvdW5jZUxheWVyIGluIF9ib3VuY2VMYXllcnMuZ2V0KCkpIHsKKyAgICAgICAgICAgIC8vIENv
bnRpbnVlIHRoZSBhbmltYXRpb24gZnJvbSB3aGVyZXZlciBpdCBoYWQgbWFudWFsbHkgcHJvZ3Jl
c3NlZCB0by4KKyAgICAgICAgICAgIENGVGltZUludGVydmFsIGJlZ2luVGltZSA9IGJvdW5jZUxh
eWVyLnRpbWVPZmZzZXQ7CisgICAgICAgICAgICBib3VuY2VMYXllci5zcGVlZCA9IDE7CisgICAg
ICAgICAgICBiZWdpblRpbWUgPSBbYm91bmNlTGF5ZXIgY29udmVydFRpbWU6Q0FDdXJyZW50TWVk
aWFUaW1lKCkgZnJvbUxheWVyOm5pbF0gLSBiZWdpblRpbWU7CisgICAgICAgICAgICBib3VuY2VM
YXllci5iZWdpblRpbWUgPSBiZWdpblRpbWU7CisgICAgICAgIH0KKyAgICB9IGVsc2UgeworICAg
ICAgICBDRlRpbWVJbnRlcnZhbCBhbmltYXRpb25EdXJhdGlvbiA9IFtzZWxmIF9hbmltYXRpb25E
dXJhdGlvbl07CisgICAgICAgIGZvciAoQ0FMYXllciAqYm91bmNlTGF5ZXIgaW4gX2JvdW5jZUxh
eWVycy5nZXQoKSkKKyAgICAgICAgICAgIGJvdW5jZUxheWVyLnRpbWVPZmZzZXQgPSBwcm9ncmVz
cyAqIGFuaW1hdGlvbkR1cmF0aW9uOworICAgIH0KK30KKwogLSAoQk9PTClpc0ZsaXBwZWQKIHsK
ICAgICByZXR1cm4gWUVTOwpAQCAtMjU3LDE2ICszNTksMjcgQEAgbmFtZXNwYWNlIFdlYkNvcmUg
ewogCiBUZXh0SW5kaWNhdG9yV2luZG93OjpUZXh0SW5kaWNhdG9yV2luZG93KE5TVmlldyAqdGFy
Z2V0VmlldykKICAgICA6IG1fdGFyZ2V0Vmlldyh0YXJnZXRWaWV3KQotICAgICwgbV9zdGFydEZh
ZGVPdXRUaW1lcihSdW5Mb29wOjptYWluKCksIHRoaXMsICZUZXh0SW5kaWNhdG9yV2luZG93Ojpz
dGFydEZhZGVPdXRUaW1lckZpcmVkKQorICAgICwgbV9zdGFydEZhZGVPdXRUaW1lcihSdW5Mb29w
OjptYWluKCksIHRoaXMsICZUZXh0SW5kaWNhdG9yV2luZG93OjpzdGFydEZhZGVPdXQpCiB7CiB9
CiAKIFRleHRJbmRpY2F0b3JXaW5kb3c6On5UZXh0SW5kaWNhdG9yV2luZG93KCkKIHsKLSAgICBj
bG9zZVdpbmRvdygpOworICAgIGlmIChtX3RleHRJbmRpY2F0b3ItPnByZXNlbnRhdGlvblRyYW5z
aXRpb24oKSA9PSBUZXh0SW5kaWNhdG9yUHJlc2VudGF0aW9uVHJhbnNpdGlvbjo6Q3Jvc3NmYWRl
IHx8IG1fdGV4dEluZGljYXRvci0+cHJlc2VudGF0aW9uVHJhbnNpdGlvbigpID09IFRleHRJbmRp
Y2F0b3JQcmVzZW50YXRpb25UcmFuc2l0aW9uOjpGYWRlSW4pCisgICAgICAgIHN0YXJ0RmFkZU91
dCgpOworICAgIGVsc2UKKyAgICAgICAgY2xvc2VXaW5kb3coKTsKK30KKwordm9pZCBUZXh0SW5k
aWNhdG9yV2luZG93OjpzZXRBbmltYXRpb25Qcm9ncmVzcyhmbG9hdCBwcm9ncmVzcykKK3sKKyAg
ICBpZiAoIW1fdGV4dEluZGljYXRvcikKKyAgICAgICAgcmV0dXJuOworCisgICAgW21fdGV4dElu
ZGljYXRvclZpZXcgc2V0QW5pbWF0aW9uUHJvZ3Jlc3M6cHJvZ3Jlc3NdOwogfQogCi12b2lkIFRl
eHRJbmRpY2F0b3JXaW5kb3c6OnNldFRleHRJbmRpY2F0b3IoUGFzc1JlZlB0cjxUZXh0SW5kaWNh
dG9yPiB0ZXh0SW5kaWNhdG9yLCBDR1JlY3QgY29udGVudFJlY3QsIGJvb2wgZmFkZU91dCwgc3Rk
OjpmdW5jdGlvbjx2b2lkICgpPiBhbmltYXRpb25Db21wbGV0aW9uSGFuZGxlcikKK3ZvaWQgVGV4
dEluZGljYXRvcldpbmRvdzo6c2V0VGV4dEluZGljYXRvcihQYXNzUmVmUHRyPFRleHRJbmRpY2F0
b3I+IHRleHRJbmRpY2F0b3IsIENHUmVjdCBjb250ZW50UmVjdCwgYm9vbCBmYWRlT3V0KQogewog
ICAgIGlmIChtX3RleHRJbmRpY2F0b3IgPT0gdGV4dEluZGljYXRvcikKICAgICAgICAgcmV0dXJu
OwpAQCAtMjk3LDkgKzQxMCw3IEBAIHZvaWQgVGV4dEluZGljYXRvcldpbmRvdzo6c2V0VGV4dElu
ZGljYXRvcihQYXNzUmVmUHRyPFRleHRJbmRpY2F0b3I+IHRleHRJbmRpY2F0CiAgICAgW21fdGV4
dEluZGljYXRvcldpbmRvdyBzZXRSZWxlYXNlZFdoZW5DbG9zZWQ6Tk9dOwogCiAgICAgaWYgKG1f
dGV4dEluZGljYXRvci0+cHJlc2VudGF0aW9uVHJhbnNpdGlvbigpICE9IFRleHRJbmRpY2F0b3JQ
cmVzZW50YXRpb25UcmFuc2l0aW9uOjpOb25lKSB7Ci0gICAgICAgIFttX3RleHRJbmRpY2F0b3JW
aWV3IHByZXNlbnRXaXRoQ29tcGxldGlvbkhhbmRsZXI6W2FuaW1hdGlvbkNvbXBsZXRpb25IYW5k
bGVyXSB7Ci0gICAgICAgICAgICBhbmltYXRpb25Db21wbGV0aW9uSGFuZGxlcigpOwotICAgICAg
ICB9XTsKKyAgICAgICAgW21fdGV4dEluZGljYXRvclZpZXcgcHJlc2VudF07CiAgICAgfQogCiAg
ICAgaWYgKGZhZGVPdXQpCkBAIC0zMTgsNyArNDI5LDcgQEAgdm9pZCBUZXh0SW5kaWNhdG9yV2lu
ZG93OjpjbG9zZVdpbmRvdygpCiAgICAgbV90ZXh0SW5kaWNhdG9yV2luZG93ID0gbnVsbHB0cjsK
IH0KIAotdm9pZCBUZXh0SW5kaWNhdG9yV2luZG93OjpzdGFydEZhZGVPdXRUaW1lckZpcmVkKCkK
K3ZvaWQgVGV4dEluZGljYXRvcldpbmRvdzo6c3RhcnRGYWRlT3V0KCkKIHsKICAgICBSZXRhaW5Q
dHI8TlNXaW5kb3c+IGluZGljYXRvcldpbmRvdyA9IG1fdGV4dEluZGljYXRvcldpbmRvdzsKICAg
ICBbbV90ZXh0SW5kaWNhdG9yVmlldyBoaWRlV2l0aENvbXBsZXRpb25IYW5kbGVyOltpbmRpY2F0
b3JXaW5kb3ddIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3NwaS9tYWMv
TlNJbW1lZGlhdGVBY3Rpb25HZXN0dXJlUmVjb2duaXplclNQSS5oIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vc3BpL21hYy9OU0ltbWVkaWF0ZUFjdGlvbkdlc3R1cmVSZWNvZ25pemVyU1BJLmgK
aW5kZXggZGQyYWZhYzlkZWE2NTNkNmIxZDVjM2VlYTQwNGY0NzliZjk3NDNkZS4uZWJiNWNkZDEw
YWJmODVkODJmYWE4ZWNhMTU1ZmFhOTU3OGU5MjcxYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vc3BpL21hYy9OU0ltbWVkaWF0ZUFjdGlvbkdlc3R1cmVSZWNvZ25pemVyU1BJ
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vc3BpL21hYy9OU0ltbWVkaWF0ZUFjdGlv
bkdlc3R1cmVSZWNvZ25pemVyU1BJLmgKQEAgLTU1LDYgKzU1LDcgQEAKIEBpbnRlcmZhY2UgTlNJ
bW1lZGlhdGVBY3Rpb25HZXN0dXJlUmVjb2duaXplciA6IE5TR2VzdHVyZVJlY29nbml6ZXIKIAog
QHByb3BlcnR5IChzdHJvbmcpIGlkPE5TSW1tZWRpYXRlQWN0aW9uQW5pbWF0aW9uQ29udHJvbGxl
cj4gYW5pbWF0aW9uQ29udHJvbGxlcjsKK0Bwcm9wZXJ0eSAocmVhZG9ubHkpIENHRmxvYXQgYW5p
bWF0aW9uUHJvZ3Jlc3M7CiAKIEBlbmQKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9tYWMv
V2ViVmlldy9XZWJBY3Rpb25NZW51Q29udHJvbGxlci5tbSBiL1NvdXJjZS9XZWJLaXQvbWFjL1dl
YlZpZXcvV2ViQWN0aW9uTWVudUNvbnRyb2xsZXIubW0KaW5kZXggZWM1ZjJmYTA1OWU4MmMzOTA1
MjNkZGJmZmQ0NzQyNjNiNjRkMTY2MC4uZWYwZjI3N2ZhZjZlZmY4MzVhYTdiNTFkNjNmY2QxMzli
ODY4ZmIzYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJBY3Rpb25N
ZW51Q29udHJvbGxlci5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYkFjdGlv
bk1lbnVDb250cm9sbGVyLm1tCkBAIC04MTgsNyArODE4LDcgQEAgc3RhdGljIE5TU3RyaW5nICpw
YXRoVG9QaG90b09uRGlzayhOU1N0cmluZyAqc3VnZ2VzdGVkRmlsZW5hbWUpCiAgICAgICAgIHJl
dHVybjsKIAogICAgIGlmIChfdHlwZSA9PSBXZWJBY3Rpb25NZW51RGF0YURldGVjdGVkSXRlbSAm
JiBfY3VycmVudERldGVjdGVkRGF0YVRleHRJbmRpY2F0b3IpIHsKLSAgICAgICAgW193ZWJWaWV3
IF9zZXRUZXh0SW5kaWNhdG9yOl9jdXJyZW50RGV0ZWN0ZWREYXRhVGV4dEluZGljYXRvci5nZXQo
KSBmYWRlT3V0Ok5PIGFuaW1hdGlvbkNvbXBsZXRpb25IYW5kbGVyOl4geyB9XTsKKyAgICAgICAg
W193ZWJWaWV3IF9zZXRUZXh0SW5kaWNhdG9yOl9jdXJyZW50RGV0ZWN0ZWREYXRhVGV4dEluZGlj
YXRvci5nZXQoKSBmYWRlT3V0Ok5PXTsKICAgICAgICAgX2lzU2hvd2luZ1RleHRJbmRpY2F0b3Ig
PSBZRVM7CiAgICAgfQogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9X
ZWJIVE1MVmlldy5tbSBiL1NvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViSFRNTFZpZXcubW0K
aW5kZXggZGM4OTI5NDRiMTM0MWI3NWJkODQ1ZWMwZWJkOTU5M2YxZDk3MjA4Zi4uNDQ2NjliYzI4
ODBkOWZjYTdlZjQ0NTc5ZTcwOGU5ODIxOGI4NmE1OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9tYWMvV2ViVmlldy9XZWJIVE1MVmlldy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L21hYy9XZWJW
aWV3L1dlYkhUTUxWaWV3Lm1tCkBAIC01NjUxLDcgKzU2NTEsNyBAQCBzdGF0aWMgQk9PTCB3cml0
aW5nRGlyZWN0aW9uS2V5QmluZGluZ3NFbmFibGVkKCkKIAogLSAodm9pZClxdWlja0xvb2tXaXRo
RXZlbnQ6KE5TRXZlbnQgKilldmVudAogewotICAgIFtbc2VsZiBfd2ViVmlld10gX3NldFRleHRJ
bmRpY2F0b3I6bnVsbHB0ciBmYWRlT3V0Ok5PIGFuaW1hdGlvbkNvbXBsZXRpb25IYW5kbGVyOltd
IHsgfV07CisgICAgW1tzZWxmIF93ZWJWaWV3XSBfc2V0VGV4dEluZGljYXRvcjpudWxscHRyIGZh
ZGVPdXQ6Tk9dOwogICAgIFtzdXBlciBxdWlja0xvb2tXaXRoRXZlbnQ6ZXZlbnRdOwogfQogI2Vu
ZGlmIC8vICFQTEFURk9STShJT1MpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L21hYy9XZWJW
aWV3L1dlYkltbWVkaWF0ZUFjdGlvbkNvbnRyb2xsZXIubW0gYi9Tb3VyY2UvV2ViS2l0L21hYy9X
ZWJWaWV3L1dlYkltbWVkaWF0ZUFjdGlvbkNvbnRyb2xsZXIubW0KaW5kZXggNDI1MDI2MWYzMDdl
NDI2OTRhOGYwNTkxMjAyZWYxYWUyN2U0MTRhYy4uMTEyMTNjODUxMWZmOGQzOGI4MTRkOGQ5YWE1
NDVmNjdmMjAzNWVhMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJJ
bW1lZGlhdGVBY3Rpb25Db250cm9sbGVyLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvbWFjL1dlYlZp
ZXcvV2ViSW1tZWRpYXRlQWN0aW9uQ29udHJvbGxlci5tbQpAQCAtNDEsNiArNDEsNyBAQAogI2lt
cG9ydCA8V2ViQ29yZS9EYXRhRGV0ZWN0b3JzU1BJLmg+CiAjaW1wb3J0IDxXZWJDb3JlL0RpY3Rp
b25hcnlMb29rdXAuaD4KICNpbXBvcnQgPFdlYkNvcmUvRXZlbnRIYW5kbGVyLmg+CisjaW1wb3J0
IDxXZWJDb3JlL0ZvY3VzQ29udHJvbGxlci5oPgogI2ltcG9ydCA8V2ViQ29yZS9GcmFtZS5oPgog
I2ltcG9ydCA8V2ViQ29yZS9GcmFtZVZpZXcuaD4KICNpbXBvcnQgPFdlYkNvcmUvSFRNTENvbnZl
cnRlci5oPgpAQCAtMTIxLDYgKzEyMiw4IEBAIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogICAg
IGlmIChpbW1lZGlhdGVBY3Rpb25SZWNvZ25pemVyICE9IF9pbW1lZGlhdGVBY3Rpb25SZWNvZ25p
emVyKQogICAgICAgICByZXR1cm47CiAKKyAgICBbX3dlYlZpZXcgX3NldE1haW50YWluc0luYWN0
aXZlU2VsZWN0aW9uOllFU107CisKICAgICBXZWJIVE1MVmlldyAqZG9jdW1lbnRWaWV3ID0gW1tb
X3dlYlZpZXcgX3NlbGVjdGVkT3JNYWluRnJhbWVdIGZyYW1lVmlld10gZG9jdW1lbnRWaWV3XTsK
ICAgICBOU1BvaW50IGxvY2F0aW9uSW5Eb2N1bWVudFZpZXcgPSBbaW1tZWRpYXRlQWN0aW9uUmVj
b2duaXplciBsb2NhdGlvbkluVmlldzpkb2N1bWVudFZpZXddOwogICAgIFtzZWxmIHBlcmZvcm1I
aXRUZXN0QXRQb2ludDpsb2NhdGlvbkluRG9jdW1lbnRWaWV3XTsKQEAgLTE0NiwxMiArMTQ5LDIy
IEBAIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogICAgIC8vIEZJWE1FOiBBZGQgc3VwcG9ydCBm
b3IgdGhlIHR5cGVzIG9mIGZ1bmN0aW9uYWxpdHkgcHJvdmlkZWQgaW4gQWN0aW9uIG1lbnUncyBt
ZW51TmVlZHNVcGRhdGUuCiB9CiAKKy0gKHZvaWQpaW1tZWRpYXRlQWN0aW9uUmVjb2duaXplckRp
ZFVwZGF0ZUFuaW1hdGlvbjooTlNJbW1lZGlhdGVBY3Rpb25HZXN0dXJlUmVjb2duaXplciAqKWlt
bWVkaWF0ZUFjdGlvblJlY29nbml6ZXIKK3sKKyAgICBpZiAoaW1tZWRpYXRlQWN0aW9uUmVjb2du
aXplciAhPSBfaW1tZWRpYXRlQWN0aW9uUmVjb2duaXplcikKKyAgICAgICAgcmV0dXJuOworCisg
ICAgW193ZWJWaWV3IF9zZXRUZXh0SW5kaWNhdG9yQW5pbWF0aW9uUHJvZ3Jlc3M6W2ltbWVkaWF0
ZUFjdGlvblJlY29nbml6ZXIgYW5pbWF0aW9uUHJvZ3Jlc3NdXTsKK30KKwogLSAodm9pZClpbW1l
ZGlhdGVBY3Rpb25SZWNvZ25pemVyRGlkQ2FuY2VsQW5pbWF0aW9uOihOU0ltbWVkaWF0ZUFjdGlv
bkdlc3R1cmVSZWNvZ25pemVyICopaW1tZWRpYXRlQWN0aW9uUmVjb2duaXplcgogewogICAgIGlm
IChpbW1lZGlhdGVBY3Rpb25SZWNvZ25pemVyICE9IF9pbW1lZGlhdGVBY3Rpb25SZWNvZ25pemVy
KQogICAgICAgICByZXR1cm47CiAKKyAgICBbX3dlYlZpZXcgX3NldFRleHRJbmRpY2F0b3JBbmlt
YXRpb25Qcm9ncmVzczowXTsKICAgICBbc2VsZiBfY2xlYXJJbW1lZGlhdGVBY3Rpb25TdGF0ZV07
CisgICAgW193ZWJWaWV3IF9zZXRNYWludGFpbnNJbmFjdGl2ZVNlbGVjdGlvbjpOT107CiB9CiAK
IC0gKHZvaWQpaW1tZWRpYXRlQWN0aW9uUmVjb2duaXplckRpZENvbXBsZXRlQW5pbWF0aW9uOihO
U0ltbWVkaWF0ZUFjdGlvbkdlc3R1cmVSZWNvZ25pemVyICopaW1tZWRpYXRlQWN0aW9uUmVjb2du
aXplcgpAQCAtMTU5LDcgKzE3Miw4IEBAIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogICAgIGlm
IChpbW1lZGlhdGVBY3Rpb25SZWNvZ25pemVyICE9IF9pbW1lZGlhdGVBY3Rpb25SZWNvZ25pemVy
KQogICAgICAgICByZXR1cm47CiAKLSAgICAvLyBGSVhNRTogQWRkIHN1cHBvcnQgZm9yIHRoZSB0
eXBlcyBvZiBmdW5jdGlvbmFsaXR5IHByb3ZpZGVkIGluIEFjdGlvbiBtZW51J3Mgd2lsbE9wZW5N
ZW51LgorICAgIFtfd2ViVmlldyBfc2V0VGV4dEluZGljYXRvckFuaW1hdGlvblByb2dyZXNzOjFd
OworICAgIFtfd2ViVmlldyBfc2V0TWFpbnRhaW5zSW5hY3RpdmVTZWxlY3Rpb246Tk9dOwogfQog
CiAjcHJhZ21hIG1hcmsgSW1tZWRpYXRlIGFjdGlvbnMKQEAgLTI2OCw3ICsyODIsNyBAQCB1c2lu
ZyBuYW1lc3BhY2UgV2ViQ29yZTsKICAgICAgICAgICAgIHJldHVybiBuaWw7CiAgICAgfQogCi0g
ICAgX2N1cnJlbnREZXRlY3RlZERhdGFUZXh0SW5kaWNhdG9yID0gVGV4dEluZGljYXRvcjo6Y3Jl
YXRlV2l0aFJhbmdlKCpkZXRlY3RlZERhdGFSYW5nZSwgVGV4dEluZGljYXRvclByZXNlbnRhdGlv
blRyYW5zaXRpb246OkJvdW5jZUFuZENyb3NzZmFkZSk7CisgICAgX2N1cnJlbnREZXRlY3RlZERh
dGFUZXh0SW5kaWNhdG9yID0gVGV4dEluZGljYXRvcjo6Y3JlYXRlV2l0aFJhbmdlKCpkZXRlY3Rl
ZERhdGFSYW5nZSwgVGV4dEluZGljYXRvclByZXNlbnRhdGlvblRyYW5zaXRpb246OkZhZGVJbik7
CiAKICAgICBfY3VycmVudEFjdGlvbkNvbnRleHQgPSBbYWN0aW9uQ29udGV4dCBjb250ZXh0Rm9y
Vmlldzpfd2ViVmlldyBhbHRNb2RlOllFUyBpbnRlcmFjdGlvblN0YXJ0ZWRIYW5kbGVyOl4oKSB7
CiAgICAgfSBpbnRlcmFjdGlvbkNoYW5nZWRIYW5kbGVyOl4oKSB7CkBAIC0yODQsOCArMjk4LDYg
QEAgdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAgICAgaWYgKG1lbnVJdGVtcy5jb3VudCAhPSAx
KQogICAgICAgICByZXR1cm4gbmlsOwogCi0gICAgaWYgKF9jdXJyZW50RGV0ZWN0ZWREYXRhVGV4
dEluZGljYXRvcikKLSAgICAgICAgX2N1cnJlbnREZXRlY3RlZERhdGFUZXh0SW5kaWNhdG9yLT5z
ZXRQcmVzZW50YXRpb25UcmFuc2l0aW9uKFRleHRJbmRpY2F0b3JQcmVzZW50YXRpb25UcmFuc2l0
aW9uOjpCb3VuY2UpOwogICAgIHJldHVybiBtZW51SXRlbXMubGFzdE9iamVjdDsKIH0KIApAQCAt
MzQ5LDcgKzM2MSw5IEBAIHN0YXRpYyBEaWN0aW9uYXJ5UG9wdXBJbmZvIGRpY3Rpb25hcnlQb3B1
cEluZm9Gb3JSYW5nZShGcmFtZSogZnJhbWUsIFJhbmdlJiByYW5nCiAgICAgaWYgKCFkaWN0aW9u
YXJ5UmFuZ2UpCiAgICAgICAgIHJldHVybiBuaWw7CiAKLSAgICBEaWN0aW9uYXJ5UG9wdXBJbmZv
IGRpY3Rpb25hcnlQb3B1cEluZm8gPSBkaWN0aW9uYXJ5UG9wdXBJbmZvRm9yUmFuZ2UoZnJhbWUs
ICpkaWN0aW9uYXJ5UmFuZ2UsIG9wdGlvbnMsIFRleHRJbmRpY2F0b3JQcmVzZW50YXRpb25UcmFu
c2l0aW9uOjpCb3VuY2UpOworICAgIFJlZlB0cjxSYW5nZT4gc2VsZWN0aW9uUmFuZ2UgPSBmcmFt
ZS0+cGFnZSgpLT5mb2N1c0NvbnRyb2xsZXIoKS5mb2N1c2VkT3JNYWluRnJhbWUoKS5zZWxlY3Rp
b24oKS5zZWxlY3Rpb24oKS5maXJzdFJhbmdlKCk7CisgICAgYm9vbCByYW5nZU1hdGNoZXNTZWxl
Y3Rpb24gPSBhcmVSYW5nZXNFcXVhbChkaWN0aW9uYXJ5UmFuZ2UuZ2V0KCksIHNlbGVjdGlvblJh
bmdlLmdldCgpKTsKKyAgICBEaWN0aW9uYXJ5UG9wdXBJbmZvIGRpY3Rpb25hcnlQb3B1cEluZm8g
PSBkaWN0aW9uYXJ5UG9wdXBJbmZvRm9yUmFuZ2UoZnJhbWUsICpkaWN0aW9uYXJ5UmFuZ2UsIG9w
dGlvbnMsIHJhbmdlTWF0Y2hlc1NlbGVjdGlvbiA/IFRleHRJbmRpY2F0b3JQcmVzZW50YXRpb25U
cmFuc2l0aW9uOjpDcm9zc2ZhZGUgOiBUZXh0SW5kaWNhdG9yUHJlc2VudGF0aW9uVHJhbnNpdGlv
bjo6RmFkZUluKTsKICAgICBpZiAoIWRpY3Rpb25hcnlQb3B1cEluZm8uYXR0cmlidXRlZFN0cmlu
ZykKICAgICAgICAgcmV0dXJuIG5pbDsKIApAQCAtMzY0LDcgKzM3OCw3IEBAIHN0YXRpYyBEaWN0
aW9uYXJ5UG9wdXBJbmZvIGRpY3Rpb25hcnlQb3B1cEluZm9Gb3JSYW5nZShGcmFtZSogZnJhbWUs
IFJhbmdlJiByYW5nCiAgICAgICAgIHJldHVybjsKIAogICAgIGlmIChfdHlwZSA9PSBXZWJJbW1l
ZGlhdGVBY3Rpb25EYXRhRGV0ZWN0ZWRJdGVtICYmIF9jdXJyZW50RGV0ZWN0ZWREYXRhVGV4dElu
ZGljYXRvcikgewotICAgICAgICBbX3dlYlZpZXcgX3NldFRleHRJbmRpY2F0b3I6X2N1cnJlbnRE
ZXRlY3RlZERhdGFUZXh0SW5kaWNhdG9yLmdldCgpIGZhZGVPdXQ6Tk8gYW5pbWF0aW9uQ29tcGxl
dGlvbkhhbmRsZXI6XiB7IH1dOworICAgICAgICBbX3dlYlZpZXcgX3NldFRleHRJbmRpY2F0b3I6
X2N1cnJlbnREZXRlY3RlZERhdGFUZXh0SW5kaWNhdG9yLmdldCgpIGZhZGVPdXQ6Tk9dOwogICAg
ICAgICBfaXNTaG93aW5nVGV4dEluZGljYXRvciA9IFlFUzsKICAgICB9CiB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYlZpZXcubW0gYi9Tb3VyY2UvV2ViS2l0L21h
Yy9XZWJWaWV3L1dlYlZpZXcubW0KaW5kZXggMDdlNTM5ODYyNmJkMjc5MTQ0MjgxNWE3MWQ2ZThl
ZGU0OTlmZmNiMC4uMWYwZDNjZmUzMmU2NmFmMmU1YjRmYjAwOGVhNzVjZGVjZWZhOTZkOSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJWaWV3Lm1tCisrKyBiL1NvdXJj
ZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViVmlldy5tbQpAQCAtNzIwNiw5ICs3MjA2LDE0IEBAIHN0
YXRpYyBOU0FwcGxlRXZlbnREZXNjcmlwdG9yKiBhZURlc2NGcm9tSlNWYWx1ZShFeGVjU3RhdGUq
IGV4ZWMsIEpTQzo6SlNWYWx1ZSBqCiAgICAgcmV0dXJuIFtbc2VsZiBfZWRpdGluZ0RlbGVnYXRl
Rm9yd2FyZGVyXSB3ZWJWaWV3OnNlbGYgc2hvdWxkQ2hhbmdlU2VsZWN0ZWRET01SYW5nZTpjdXJy
ZW50UmFuZ2UgdG9ET01SYW5nZTpwcm9wb3NlZFJhbmdlIGFmZmluaXR5OnNlbGVjdGlvbkFmZmlu
aXR5IHN0aWxsU2VsZWN0aW5nOmZsYWddOwogfQogCistICh2b2lkKV9zZXRNYWludGFpbnNJbmFj
dGl2ZVNlbGVjdGlvbjooQk9PTClzaG91bGRNYWludGFpbkluYWN0aXZlU2VsZWN0aW9uCit7Cisg
ICAgX3ByaXZhdGUtPnNob3VsZE1haW50YWluSW5hY3RpdmVTZWxlY3Rpb24gPSBzaG91bGRNYWlu
dGFpbkluYWN0aXZlU2VsZWN0aW9uOworfQorCiAtIChCT09MKW1haW50YWluc0luYWN0aXZlU2Vs
ZWN0aW9uCiB7Ci0gICAgcmV0dXJuIE5POworICAgIHJldHVybiBfcHJpdmF0ZS0+c2hvdWxkTWFp
bnRhaW5JbmFjdGl2ZVNlbGVjdGlvbjsKIH0KIAogLSAodm9pZClzZXRTZWxlY3RlZERPTVJhbmdl
OihET01SYW5nZSAqKXJhbmdlIGFmZmluaXR5OihOU1NlbGVjdGlvbkFmZmluaXR5KXNlbGVjdGlv
bkFmZmluaXR5CkBAIC04NjMyLDYgKzg2MzcsNyBAQCBzdGF0aWMgdm9pZCBnbGliQ29udGV4dEl0
ZXJhdGlvbkNhbGxiYWNrKENGUnVuTG9vcE9ic2VydmVyUmVmLCBDRlJ1bkxvb3BBY3Rpdml0eQog
ICAgICAgICBpZiAoIW11dGFibGVPcHRpb25zKQogICAgICAgICAgICAgbXV0YWJsZU9wdGlvbnMg
PSBhZG9wdE5TKFtbTlNNdXRhYmxlRGljdGlvbmFyeSBhbGxvY10gaW5pdF0pOwogICAgICAgICBb
bXV0YWJsZU9wdGlvbnMgc2V0T2JqZWN0OkBZRVMgZm9yS2V5OmdldExVVGVybU9wdGlvbkRpc2Fi
bGVTZWFyY2hUZXJtSW5kaWNhdG9yKCldOworICAgICAgICBbc2VsZiBfc2V0VGV4dEluZGljYXRv
cjpkaWN0aW9uYXJ5UG9wdXBJbmZvLnRleHRJbmRpY2F0b3IuZ2V0KCkgZmFkZU91dDpOT107CiAg
ICAgICAgIHJldHVybiBbZ2V0TFVMb29rdXBEZWZpbml0aW9uTW9kdWxlQ2xhc3MoKSBsb29rdXBB
bmltYXRpb25Db250cm9sbGVyRm9yVGVybTpkaWN0aW9uYXJ5UG9wdXBJbmZvLmF0dHJpYnV0ZWRT
dHJpbmcuZ2V0KCkgYXRMb2NhdGlvbjp0ZXh0QmFzZWxpbmVPcmlnaW4gb3B0aW9uczptdXRhYmxl
T3B0aW9ucy5nZXQoKV07CiAgICAgfQogCkBAIC04NjM5LDcgKzg2NDUsNyBAQCBzdGF0aWMgdm9p
ZCBnbGliQ29udGV4dEl0ZXJhdGlvbkNhbGxiYWNrKENGUnVuTG9vcE9ic2VydmVyUmVmLCBDRlJ1
bkxvb3BBY3Rpdml0eQogfQogI2VuZGlmIC8vIF9fTUFDX09TX1hfVkVSU0lPTl9NSU5fUkVRVUlS
RUQgPj0gMTAxMDAwCiAKLS0gKHZvaWQpX3NldFRleHRJbmRpY2F0b3I6KFRleHRJbmRpY2F0b3Ig
Kil0ZXh0SW5kaWNhdG9yIGZhZGVPdXQ6KEJPT0wpZmFkZU91dCBhbmltYXRpb25Db21wbGV0aW9u
SGFuZGxlcjooc3RkOjpmdW5jdGlvbjx2b2lkICgpPiljb21wbGV0aW9uSGFuZGxlcgorLSAodm9p
ZClfc2V0VGV4dEluZGljYXRvcjooVGV4dEluZGljYXRvciAqKXRleHRJbmRpY2F0b3IgZmFkZU91
dDooQk9PTClmYWRlT3V0CiB7CiAgICAgaWYgKCF0ZXh0SW5kaWNhdG9yKSB7CiAgICAgICAgIF9w
cml2YXRlLT50ZXh0SW5kaWNhdG9yV2luZG93ID0gbnVsbHB0cjsKQEAgLTg2NTAsMTIgKzg2NTYs
MTggQEAgc3RhdGljIHZvaWQgZ2xpYkNvbnRleHRJdGVyYXRpb25DYWxsYmFjayhDRlJ1bkxvb3BP
YnNlcnZlclJlZiwgQ0ZSdW5Mb29wQWN0aXZpdHkKICAgICAgICAgX3ByaXZhdGUtPnRleHRJbmRp
Y2F0b3JXaW5kb3cgPSBzdGQ6Om1ha2VfdW5pcXVlPFRleHRJbmRpY2F0b3JXaW5kb3c+KHNlbGYp
OwogCiAgICAgTlNSZWN0IGNvbnRlbnRSZWN0ID0gW3NlbGYud2luZG93IGNvbnZlcnRSZWN0VG9T
Y3JlZW46dGV4dEluZGljYXRvci0+dGV4dEJvdW5kaW5nUmVjdEluV2luZG93Q29vcmRpbmF0ZXMo
KV07Ci0gICAgX3ByaXZhdGUtPnRleHRJbmRpY2F0b3JXaW5kb3ctPnNldFRleHRJbmRpY2F0b3Io
dGV4dEluZGljYXRvciwgTlNSZWN0VG9DR1JlY3QoY29udGVudFJlY3QpLCBmYWRlT3V0LCBXVEY6
Om1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKKyAgICBfcHJpdmF0ZS0+dGV4dEluZGljYXRvcldp
bmRvdy0+c2V0VGV4dEluZGljYXRvcih0ZXh0SW5kaWNhdG9yLCBOU1JlY3RUb0NHUmVjdChjb250
ZW50UmVjdCksIGZhZGVPdXQpOwogfQogCiAtICh2b2lkKV9jbGVhclRleHRJbmRpY2F0b3IKIHsK
LSAgICBbc2VsZiBfc2V0VGV4dEluZGljYXRvcjpudWxscHRyIGZhZGVPdXQ6Tk8gYW5pbWF0aW9u
Q29tcGxldGlvbkhhbmRsZXI6XiB7IH1dOworICAgIFtzZWxmIF9zZXRUZXh0SW5kaWNhdG9yOm51
bGxwdHIgZmFkZU91dDpOT107Cit9CisKKy0gKHZvaWQpX3NldFRleHRJbmRpY2F0b3JBbmltYXRp
b25Qcm9ncmVzczooZmxvYXQpcHJvZ3Jlc3MKK3sKKyAgICBpZiAoX3ByaXZhdGUtPnRleHRJbmRp
Y2F0b3JXaW5kb3cpCisgICAgICAgIF9wcml2YXRlLT50ZXh0SW5kaWNhdG9yV2luZG93LT5zZXRB
bmltYXRpb25Qcm9ncmVzcyhwcm9ncmVzcyk7CiB9CiAKIC0gKHZvaWQpX3Nob3dEaWN0aW9uYXJ5
TG9va3VwUG9wdXA6KGNvbnN0IERpY3Rpb25hcnlQb3B1cEluZm8mKWRpY3Rpb25hcnlQb3B1cElu
Zm8KQEAgLTg2NzgsMTYgKzg2OTAsMTUgQEAgc3RhdGljIHZvaWQgZ2xpYkNvbnRleHRJdGVyYXRp
b25DYWxsYmFjayhDRlJ1bkxvb3BPYnNlcnZlclJlZiwgQ0ZSdW5Mb29wQWN0aXZpdHkKICAgICAg
ICAgaWYgKCFtdXRhYmxlT3B0aW9ucykKICAgICAgICAgICAgIG11dGFibGVPcHRpb25zID0gYWRv
cHROUyhbW05TTXV0YWJsZURpY3Rpb25hcnkgYWxsb2NdIGluaXRdKTsKICAgICAgICAgW211dGFi
bGVPcHRpb25zIHNldE9iamVjdDpAWUVTIGZvcktleTpnZXRMVVRlcm1PcHRpb25EaXNhYmxlU2Vh
cmNoVGVybUluZGljYXRvcigpXTsKLSAgICAgICAgW3NlbGYgX3NldFRleHRJbmRpY2F0b3I6ZGlj
dGlvbmFyeVBvcHVwSW5mby50ZXh0SW5kaWNhdG9yLmdldCgpIGZhZGVPdXQ6Tk8gYW5pbWF0aW9u
Q29tcGxldGlvbkhhbmRsZXI6W2RpY3Rpb25hcnlQb3B1cEluZm8sIHRleHRCYXNlbGluZU9yaWdp
biwgbXV0YWJsZU9wdGlvbnNdIHsKLSAgICAgICAgICAgIFtnZXRMVUxvb2t1cERlZmluaXRpb25N
b2R1bGVDbGFzcygpIHNob3dEZWZpbml0aW9uRm9yVGVybTpkaWN0aW9uYXJ5UG9wdXBJbmZvLmF0
dHJpYnV0ZWRTdHJpbmcuZ2V0KCkgYXRMb2NhdGlvbjp0ZXh0QmFzZWxpbmVPcmlnaW4gb3B0aW9u
czptdXRhYmxlT3B0aW9ucy5nZXQoKV07Ci0gICAgICAgIH1dOworICAgICAgICBbc2VsZiBfc2V0
VGV4dEluZGljYXRvcjpkaWN0aW9uYXJ5UG9wdXBJbmZvLnRleHRJbmRpY2F0b3IuZ2V0KCkgZmFk
ZU91dDpOT107CisgICAgICAgIFtnZXRMVUxvb2t1cERlZmluaXRpb25Nb2R1bGVDbGFzcygpIHNo
b3dEZWZpbml0aW9uRm9yVGVybTpkaWN0aW9uYXJ5UG9wdXBJbmZvLmF0dHJpYnV0ZWRTdHJpbmcu
Z2V0KCkgYXRMb2NhdGlvbjp0ZXh0QmFzZWxpbmVPcmlnaW4gb3B0aW9uczptdXRhYmxlT3B0aW9u
cy5nZXQoKV07CiAgICAgfSBlbHNlCiAgICAgICAgIFtnZXRMVUxvb2t1cERlZmluaXRpb25Nb2R1
bGVDbGFzcygpIHNob3dEZWZpbml0aW9uRm9yVGVybTpkaWN0aW9uYXJ5UG9wdXBJbmZvLmF0dHJp
YnV0ZWRTdHJpbmcuZ2V0KCkgYXRMb2NhdGlvbjp0ZXh0QmFzZWxpbmVPcmlnaW4gb3B0aW9uczpk
aWN0aW9uYXJ5UG9wdXBJbmZvLm9wdGlvbnMuZ2V0KCldOwogfQogCiAtICh2b2lkKV9kaWN0aW9u
YXJ5TG9va3VwUG9wb3ZlcldpbGxDbG9zZTooTlNOb3RpZmljYXRpb24gKilub3RpZmljYXRpb24K
IHsKLSAgICBbc2VsZiBfc2V0VGV4dEluZGljYXRvcjpudWxscHRyIGZhZGVPdXQ6Tk8gYW5pbWF0
aW9uQ29tcGxldGlvbkhhbmRsZXI6W10geyB9XTsKKyAgICBbc2VsZiBfc2V0VGV4dEluZGljYXRv
cjpudWxscHRyIGZhZGVPdXQ6Tk9dOwogfQogI2VuZGlmIC8vIFBMQVRGT1JNKE1BQykKIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJWaWV3RGF0YS5oIGIvU291cmNl
L1dlYktpdC9tYWMvV2ViVmlldy9XZWJWaWV3RGF0YS5oCmluZGV4IDQ1ZDU2MDc0NWY1OTZlZjk2
MTFkN2RiYzRjYTlhOTVmYjQzNDg3NTQuLmJhYmQ4ODI5M2Q1ZDU0NjhiM2I0YmZiNDA2N2U0NTg2
MmRlYzUwMDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViVmlld0Rh
dGEuaAorKysgYi9Tb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYlZpZXdEYXRhLmgKQEAgLTE1
Nyw2ICsxNTcsOCBAQCBwcml2YXRlOgogICAgIEJPT0wgaGFzSW5pdGlhbGl6ZWRMb29rdXBPYnNl
cnZlcjsKICNlbmRpZiAvLyBQTEFURk9STShNQUMpCiAKKyAgICBCT09MIHNob3VsZE1haW50YWlu
SW5hY3RpdmVTZWxlY3Rpb247CisKICAgICBCT09MIGFsbG93c1VuZG87CiAgICAgICAgIAogICAg
IGZsb2F0IHpvb21NdWx0aXBsaWVyOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9tYWMvV2Vi
Vmlldy9XZWJWaWV3SW50ZXJuYWwuaCBiL1NvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViVmll
d0ludGVybmFsLmgKaW5kZXggODhkZDNjZDQ5N2ZmN2MyYmQwNDc0ZmEwNmZlODVmNTgyMGI3OTUy
ZS4uMDNjMDk4NjZlZDBlYzE5NDQxYTBhODg3NTc1YWZlMmExNjAxZjk2YyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJWaWV3SW50ZXJuYWwuaAorKysgYi9Tb3VyY2Uv
V2ViS2l0L21hYy9XZWJWaWV3L1dlYlZpZXdJbnRlcm5hbC5oCkBAIC0yNTgsOSArMjU4LDEyIEBA
IE9CSkNfQ0xBU1MgTlNUZXh0QWx0ZXJuYXRpdmVzOwogLSAoTlNQb2ludClfY29udmVydFBvaW50
RnJvbVJvb3RWaWV3OihOU1BvaW50KXBvaW50OwogLSAoTlNSZWN0KV9jb252ZXJ0UmVjdEZyb21S
b290VmlldzooTlNSZWN0KXJlY3Q7CiAKKy0gKHZvaWQpX3NldE1haW50YWluc0luYWN0aXZlU2Vs
ZWN0aW9uOihCT09MKXNob3VsZE1haW50YWluSW5hY3RpdmVTZWxlY3Rpb247CisKICNpZiBQTEFU
Rk9STShNQUMpICYmIGRlZmluZWQoX19jcGx1c3BsdXMpCi0tICh2b2lkKV9zZXRUZXh0SW5kaWNh
dG9yOihXZWJDb3JlOjpUZXh0SW5kaWNhdG9yKil0ZXh0SW5kaWNhdG9yIGZhZGVPdXQ6KEJPT0wp
ZmFkZU91dCBhbmltYXRpb25Db21wbGV0aW9uSGFuZGxlcjooc3RkOjpmdW5jdGlvbjx2b2lkICgp
Piljb21wbGV0aW9uSGFuZGxlcjsKKy0gKHZvaWQpX3NldFRleHRJbmRpY2F0b3I6KFdlYkNvcmU6
OlRleHRJbmRpY2F0b3IqKXRleHRJbmRpY2F0b3IgZmFkZU91dDooQk9PTClmYWRlT3V0OwogLSAo
dm9pZClfY2xlYXJUZXh0SW5kaWNhdG9yOworLSAodm9pZClfc2V0VGV4dEluZGljYXRvckFuaW1h
dGlvblByb2dyZXNzOihmbG9hdClwcm9ncmVzczsKIC0gKHZvaWQpX3Nob3dEaWN0aW9uYXJ5TG9v
a3VwUG9wdXA6KGNvbnN0IERpY3Rpb25hcnlQb3B1cEluZm8mKWRpY3Rpb25hcnlQb3B1cEluZm87
CiAjaWYgX19NQUNfT1NfWF9WRVJTSU9OX01JTl9SRVFVSVJFRCA+PSAxMDEwMDAKIC0gKGlkKV9h
bmltYXRpb25Db250cm9sbGVyRm9yRGljdGlvbmFyeUxvb2t1cFBvcHVwSW5mbzooY29uc3QgRGlj
dGlvbmFyeVBvcHVwSW5mbyYpZGljdGlvbmFyeVBvcHVwSW5mbzsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvbWFjL1dLVmlldy5tbSBiL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9BUEkvbWFjL1dLVmlldy5tbQppbmRleCA3MDIzMTAwMWNiNjM1NGQ0Mzc1MDFiYmM2
OTI4Yzg1N2JkNmViODMzLi42Y2Q1NWYzYTk4NzYxOTBjM2Y0YzkwOWFmZTczNWQyODg3MWExODc5
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL21hYy9XS1ZpZXcubW0K
KysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9tYWMvV0tWaWV3Lm1tCkBAIC0zMDk1
LDcgKzMwOTUsNyBAQCBzdGF0aWMgdm9pZCoga2V5VmFsdWVPYnNlcnZpbmdDb250ZXh0ID0gJmtl
eVZhbHVlT2JzZXJ2aW5nQ29udGV4dDsKICAgICB9CiB9CiAKLS0gKHZvaWQpX3NldFRleHRJbmRp
Y2F0b3I6KFBhc3NSZWZQdHI8VGV4dEluZGljYXRvcj4pdGV4dEluZGljYXRvciBmYWRlT3V0OihC
T09MKWZhZGVPdXQgYW5pbWF0aW9uQ29tcGxldGlvbkhhbmRsZXI6KHN0ZDo6ZnVuY3Rpb248dm9p
ZCAoKT4pY29tcGxldGlvbkhhbmRsZXIKKy0gKHZvaWQpX3NldFRleHRJbmRpY2F0b3I6KFBhc3NS
ZWZQdHI8VGV4dEluZGljYXRvcj4pdGV4dEluZGljYXRvciBmYWRlT3V0OihCT09MKWZhZGVPdXQK
IHsKICAgICBpZiAoIXRleHRJbmRpY2F0b3IpIHsKICAgICAgICAgX2RhdGEtPl90ZXh0SW5kaWNh
dG9yV2luZG93ID0gbnVsbHB0cjsKQEAgLTMxMDYsMTIgKzMxMDYsMTMgQEAgc3RhdGljIHZvaWQq
IGtleVZhbHVlT2JzZXJ2aW5nQ29udGV4dCA9ICZrZXlWYWx1ZU9ic2VydmluZ0NvbnRleHQ7CiAg
ICAgICAgIF9kYXRhLT5fdGV4dEluZGljYXRvcldpbmRvdyA9IHN0ZDo6bWFrZV91bmlxdWU8VGV4
dEluZGljYXRvcldpbmRvdz4oc2VsZik7CiAKICAgICBOU1JlY3QgY29udGVudFJlY3QgPSBbc2Vs
Zi53aW5kb3cgY29udmVydFJlY3RUb1NjcmVlbjpbc2VsZiBjb252ZXJ0UmVjdDp0ZXh0SW5kaWNh
dG9yLT50ZXh0Qm91bmRpbmdSZWN0SW5XaW5kb3dDb29yZGluYXRlcygpIHRvVmlldzpuaWxdXTsK
LSAgICBfZGF0YS0+X3RleHRJbmRpY2F0b3JXaW5kb3ctPnNldFRleHRJbmRpY2F0b3IodGV4dElu
ZGljYXRvciwgTlNSZWN0VG9DR1JlY3QoY29udGVudFJlY3QpLCBmYWRlT3V0LCBXVEY6Om1vdmUo
Y29tcGxldGlvbkhhbmRsZXIpKTsKKyAgICBfZGF0YS0+X3RleHRJbmRpY2F0b3JXaW5kb3ctPnNl
dFRleHRJbmRpY2F0b3IodGV4dEluZGljYXRvciwgTlNSZWN0VG9DR1JlY3QoY29udGVudFJlY3Qp
LCBmYWRlT3V0KTsKIH0KIAotLSAodm9pZClfc2V0VGV4dEluZGljYXRvcjooUGFzc1JlZlB0cjxU
ZXh0SW5kaWNhdG9yPil0ZXh0SW5kaWNhdG9yIGZhZGVPdXQ6KEJPT0wpZmFkZU91dAorLSAodm9p
ZClfc2V0VGV4dEluZGljYXRvckFuaW1hdGlvblByb2dyZXNzOihmbG9hdClwcm9ncmVzcwogewot
ICAgIFtzZWxmIF9zZXRUZXh0SW5kaWNhdG9yOnRleHRJbmRpY2F0b3IgZmFkZU91dDpmYWRlT3V0
IGFuaW1hdGlvbkNvbXBsZXRpb25IYW5kbGVyOltdIHsgfV07CisgICAgaWYgKF9kYXRhLT5fdGV4
dEluZGljYXRvcldpbmRvdykKKyAgICAgICAgX2RhdGEtPl90ZXh0SW5kaWNhdG9yV2luZG93LT5z
ZXRBbmltYXRpb25Qcm9ncmVzcyhwcm9ncmVzcyk7CiB9CiAKIC0gKENBTGF5ZXIgKilfcm9vdExh
eWVyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL21hYy9XS1ZpZXdJ
bnRlcm5hbC5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9tYWMvV0tWaWV3SW50ZXJu
YWwuaAppbmRleCA5ZTgzZjhmYjhkZGI3YzUzZmI5ZDViNjdhZGEzZmJiN2Q5NmZjZDY4Li5kNDdh
ZmQxYmZhNDMxYmZmM2U2OWQxYWM1NzY0YzVhNDgyZjQ3MzExIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvQVBJL21hYy9XS1ZpZXdJbnRlcm5hbC5oCisrKyBiL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9BUEkvbWFjL1dLVmlld0ludGVybmFsLmgKQEAgLTgxLDcgKzgxLDcg
QEAgc3RydWN0IFdlYlBhZ2VDb25maWd1cmF0aW9uOwogLSAoTlNSZWN0KV9jb252ZXJ0VG9EZXZp
Y2VTcGFjZTooTlNSZWN0KXJlY3Q7CiAtIChOU1JlY3QpX2NvbnZlcnRUb1VzZXJTcGFjZTooTlNS
ZWN0KXJlY3Q7CiAtICh2b2lkKV9zZXRUZXh0SW5kaWNhdG9yOihQYXNzUmVmUHRyPFdlYkNvcmU6
OlRleHRJbmRpY2F0b3I+KXRleHRJbmRpY2F0b3IgZmFkZU91dDooQk9PTClmYWRlT3V0OwotLSAo
dm9pZClfc2V0VGV4dEluZGljYXRvcjooUGFzc1JlZlB0cjxXZWJDb3JlOjpUZXh0SW5kaWNhdG9y
Pil0ZXh0SW5kaWNhdG9yIGZhZGVPdXQ6KEJPT0wpZmFkZU91dCBhbmltYXRpb25Db21wbGV0aW9u
SGFuZGxlcjooc3RkOjpmdW5jdGlvbjx2b2lkICgpPiljb21wbGV0aW9uSGFuZGxlcjsKKy0gKHZv
aWQpX3NldFRleHRJbmRpY2F0b3JBbmltYXRpb25Qcm9ncmVzczooZmxvYXQpcHJvZ3Jlc3M7CiAK
IC0gKHZvaWQpX3NldEFjY2VsZXJhdGVkQ29tcG9zaXRpbmdNb2RlUm9vdExheWVyOihDQUxheWVy
ICopcm9vdExheWVyOwogLSAoQ0FMYXllciAqKV9hY2NlbGVyYXRlZENvbXBvc2l0aW5nTW9kZVJv
b3RMYXllcjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9QYWdlQ2xpZW50
LmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvUGFnZUNsaWVudC5oCmluZGV4IGFiNzk4OGNj
MDczZjUxNjVhNTJiMWJjMmJmYzFiNWIyYTVjMWY3NGUuLmZjMzlmYWE3M2Y0OTg2YjE2OGMxMGRm
NTRhMmNhNGVjZWZhNzE4NzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Q
YWdlQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1BhZ2VDbGllbnQuaApA
QCAtMjE5LDYgKzIxOSw3IEBAIHB1YmxpYzoKICNlbmRpZgogCiAgICAgdmlydHVhbCB2b2lkIHNl
dFRleHRJbmRpY2F0b3IoUGFzc1JlZlB0cjxXZWJDb3JlOjpUZXh0SW5kaWNhdG9yPiwgYm9vbCBm
YWRlT3V0KSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHNldFRleHRJbmRpY2F0b3JBbmltYXRpb25Q
cm9ncmVzcyhmbG9hdCkgPSAwOwogCiAgICAgdmlydHVhbCB2b2lkIGVudGVyQWNjZWxlcmF0ZWRD
b21wb3NpdGluZ01vZGUoY29uc3QgTGF5ZXJUcmVlQ29udGV4dCYpID0gMDsKICAgICB2aXJ0dWFs
IHZvaWQgZXhpdEFjY2VsZXJhdGVkQ29tcG9zaXRpbmdNb2RlKCkgPSAwOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcAppbmRleCA3MmUzM2E4N2YzZjk4NzkwY2ZjMjQ4
MDAyYmQ5OGMyNmZhZWMyNDVkLi5hYmEwNDU1YzlhODI2NDM1OTJkODE5OTM1NjY4ZWExMjY5OTU3
YWYyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcApAQCAtMjg2
LDYgKzI4Niw3IEBAIFdlYlBhZ2VQcm94eTo6V2ViUGFnZVByb3h5KFBhZ2VDbGllbnQmIHBhZ2VD
bGllbnQsIFdlYlByb2Nlc3NQcm94eSYgcHJvY2VzcywgdWluCiAgICAgLCBtX3ZpZXdTdGF0ZShW
aWV3U3RhdGU6Ok5vRmxhZ3MpCiAgICAgLCBtX3ZpZXdXYXNFdmVySW5XaW5kb3coZmFsc2UpCiAg
ICAgLCBtX2JhY2tGb3J3YXJkTGlzdChXZWJCYWNrRm9yd2FyZExpc3Q6OmNyZWF0ZSgqdGhpcykp
CisgICAgLCBtX21haW50YWluc0luYWN0aXZlU2VsZWN0aW9uKGZhbHNlKQogI2lmIFBMQVRGT1JN
KE1BQykgJiYgIVVTRShBU1lOQ19OU1RFWFRJTlBVVENMSUVOVCkKICAgICAsIG1fdGVtcG9yYXJp
bHlDbG9zZWRDb21wb3NpdGlvbihmYWxzZSkKICNlbmRpZgpAQCAtMzY4OCw2ICszNjg5LDExIEBA
IHZvaWQgV2ViUGFnZVByb3h5OjpjbGVhclRleHRJbmRpY2F0b3IoKQogICAgIG1fcGFnZUNsaWVu
dC5zZXRUZXh0SW5kaWNhdG9yKG51bGxwdHIsIGZhbHNlKTsKIH0KIAordm9pZCBXZWJQYWdlUHJv
eHk6OnNldFRleHRJbmRpY2F0b3JBbmltYXRpb25Qcm9ncmVzcyhmbG9hdCBwcm9ncmVzcykKK3sK
KyAgICBtX3BhZ2VDbGllbnQuc2V0VGV4dEluZGljYXRvckFuaW1hdGlvblByb2dyZXNzKHByb2dy
ZXNzKTsKK30KKwogdm9pZCBXZWJQYWdlUHJveHk6OmRpZEZpbmRTdHJpbmcoY29uc3QgU3RyaW5n
JiBzdHJpbmcsIHVpbnQzMl90IG1hdGNoQ291bnQsIGludDMyX3QgbWF0Y2hJbmRleCkKIHsKICAg
ICBtX2ZpbmRDbGllbnQtPmRpZEZpbmRTdHJpbmcodGhpcywgc3RyaW5nLCBtYXRjaENvdW50LCBt
YXRjaEluZGV4KTsKQEAgLTUzMzYsOSArNTM0Miw5IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpyZW1v
dmVOYXZpZ2F0aW9uR2VzdHVyZVNuYXBzaG90KCkKICAgICBtX3BhZ2VDbGllbnQucmVtb3ZlTmF2
aWdhdGlvbkdlc3R1cmVTbmFwc2hvdCgpOwogfQogCi12b2lkIFdlYlBhZ2VQcm94eTo6cGVyZm9y
bUFjdGlvbk1lbnVIaXRUZXN0QXRMb2NhdGlvbihGbG9hdFBvaW50IHBvaW50KQordm9pZCBXZWJQ
YWdlUHJveHk6OnBlcmZvcm1BY3Rpb25NZW51SGl0VGVzdEF0TG9jYXRpb24oRmxvYXRQb2ludCBw
b2ludCwgYm9vbCBmb3JJbW1lZGlhdGVBY3Rpb24pCiB7Ci0gICAgbV9wcm9jZXNzLT5zZW5kKE1l
c3NhZ2VzOjpXZWJQYWdlOjpQZXJmb3JtQWN0aW9uTWVudUhpdFRlc3RBdExvY2F0aW9uKHBvaW50
KSwgbV9wYWdlSUQpOworICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6UGVy
Zm9ybUFjdGlvbk1lbnVIaXRUZXN0QXRMb2NhdGlvbihwb2ludCwgZm9ySW1tZWRpYXRlQWN0aW9u
KSwgbV9wYWdlSUQpOwogfQogCiB2b2lkIFdlYlBhZ2VQcm94eTo6c2VsZWN0TGFzdEFjdGlvbk1l
bnVSYW5nZSgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVBy
b3h5LmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKaW5kZXggMjBj
MzBmYTJhZTI0ZjY2Y2I3MzZlMGM4NzU2ZTY0ZGYyZjZjZGJkNy4uZjVlZTJjYTQxZGExODA5NjRl
MmYwZjk3MWZmYjIwNjgyMDg2Mjc3NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL1dlYlBhZ2VQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdl
UHJveHkuaApAQCAtNjc0LDYgKzY3NCw3IEBAIHB1YmxpYzoKICAgICB2b2lkIGNvdW50U3RyaW5n
TWF0Y2hlcyhjb25zdCBTdHJpbmcmLCBGaW5kT3B0aW9ucywgdW5zaWduZWQgbWF4TWF0Y2hDb3Vu
dCk7CiAgICAgdm9pZCBkaWRDb3VudFN0cmluZ01hdGNoZXMoY29uc3QgU3RyaW5nJiwgdWludDMy
X3QgbWF0Y2hDb3VudCk7CiAgICAgdm9pZCBzZXRUZXh0SW5kaWNhdG9yKGNvbnN0IFdlYkNvcmU6
OlRleHRJbmRpY2F0b3JEYXRhJiwgYm9vbCBmYWRlT3V0KTsKKyAgICB2b2lkIHNldFRleHRJbmRp
Y2F0b3JBbmltYXRpb25Qcm9ncmVzcyhmbG9hdCk7CiAgICAgdm9pZCBjbGVhclRleHRJbmRpY2F0
b3IoKTsKICAgICB2b2lkIGRpZEZpbmRTdHJpbmcoY29uc3QgU3RyaW5nJiwgdWludDMyX3QgbWF0
Y2hDb3VudCwgaW50MzJfdCBtYXRjaEluZGV4KTsKICAgICB2b2lkIGRpZEZhaWxUb0ZpbmRTdHJp
bmcoY29uc3QgU3RyaW5nJik7CkBAIC05MzIsNyArOTMzLDcgQEAgcHVibGljOgogICAgIHZvaWQg
cmVtb3ZlTmF2aWdhdGlvbkdlc3R1cmVTbmFwc2hvdCgpOwogCiAgICAgV2ViSGl0VGVzdFJlc3Vs
dCogbGFzdE1vdXNlTW92ZUhpdFRlc3RSZXN1bHQoKSBjb25zdCB7IHJldHVybiBtX2xhc3RNb3Vz
ZU1vdmVIaXRUZXN0UmVzdWx0LmdldCgpOyB9Ci0gICAgdm9pZCBwZXJmb3JtQWN0aW9uTWVudUhp
dFRlc3RBdExvY2F0aW9uKFdlYkNvcmU6OkZsb2F0UG9pbnQpOworICAgIHZvaWQgcGVyZm9ybUFj
dGlvbk1lbnVIaXRUZXN0QXRMb2NhdGlvbihXZWJDb3JlOjpGbG9hdFBvaW50LCBib29sIGZvcklt
bWVkaWF0ZUFjdGlvbik7CiAgICAgdm9pZCBzZWxlY3RMYXN0QWN0aW9uTWVudVJhbmdlKCk7CiAg
ICAgdm9pZCBmb2N1c0FuZFNlbGVjdExhc3RBY3Rpb25NZW51SGl0VGVzdFJlc3VsdCgpOwogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvbWFjL1BhZ2VDbGllbnRJbXBsLmgg
Yi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvbWFjL1BhZ2VDbGllbnRJbXBsLmgKaW5kZXggOTRk
NjlhNmJiNzE2YzNiYjNjNDc1NjA0MjYyOGYwZGM1MTM2MDg3YS4uZDBhYTk4NmIyZWFjMDNiYzU0
ZTI1NThhNmEzY2NjNTdjOGI4ZTYxNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL21hYy9QYWdlQ2xpZW50SW1wbC5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9t
YWMvUGFnZUNsaWVudEltcGwuaApAQCAtMTIyLDcgKzEyMiw4IEBAIHByaXZhdGU6CiAgICAgdmly
dHVhbCBQYXNzUmVmUHRyPFdlYkNvbG9yUGlja2VyPiBjcmVhdGVDb2xvclBpY2tlcihXZWJQYWdl
UHJveHkqLCBjb25zdCBXZWJDb3JlOjpDb2xvciYgaW5pdGlhbENvbG9yLCBjb25zdCBXZWJDb3Jl
OjpJbnRSZWN0Jik7CiAjZW5kaWYKIAotICAgIHZvaWQgc2V0VGV4dEluZGljYXRvcihQYXNzUmVm
UHRyPFdlYkNvcmU6OlRleHRJbmRpY2F0b3I+LCBib29sIGZhZGVPdXQpOworICAgIHZpcnR1YWwg
dm9pZCBzZXRUZXh0SW5kaWNhdG9yKFBhc3NSZWZQdHI8V2ViQ29yZTo6VGV4dEluZGljYXRvcj4s
IGJvb2wgZmFkZU91dCkgb3ZlcnJpZGU7CisgICAgdmlydHVhbCB2b2lkIHNldFRleHRJbmRpY2F0
b3JBbmltYXRpb25Qcm9ncmVzcyhmbG9hdCkgb3ZlcnJpZGU7CiAKICAgICB2aXJ0dWFsIHZvaWQg
ZW50ZXJBY2NlbGVyYXRlZENvbXBvc2l0aW5nTW9kZShjb25zdCBMYXllclRyZWVDb250ZXh0Jik7
CiAgICAgdmlydHVhbCB2b2lkIGV4aXRBY2NlbGVyYXRlZENvbXBvc2l0aW5nTW9kZSgpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL21hYy9QYWdlQ2xpZW50SW1wbC5tbSBi
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9tYWMvUGFnZUNsaWVudEltcGwubW0KaW5kZXggYzVi
ZjQ5MTE3ZTQ0ZGE2NWQzNDJmYTA4MzJkMTcyZTUxM2I3MTMwYy4uZDEzOTk4YjZmMzE5MzkxZjgy
NDNkMjc2NTNmMjg4OWU5NTczZjZlYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL21hYy9QYWdlQ2xpZW50SW1wbC5tbQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
bWFjL1BhZ2VDbGllbnRJbXBsLm1tCkBAIC00OTMsNiArNDkzLDExIEBAIHZvaWQgUGFnZUNsaWVu
dEltcGw6OnNldFRleHRJbmRpY2F0b3IoUGFzc1JlZlB0cjxUZXh0SW5kaWNhdG9yPiB0ZXh0SW5k
aWNhdG9yLCBiCiAgICAgW21fd2tWaWV3IF9zZXRUZXh0SW5kaWNhdG9yOnRleHRJbmRpY2F0b3Ig
ZmFkZU91dDpmYWRlT3V0XTsKIH0KIAordm9pZCBQYWdlQ2xpZW50SW1wbDo6c2V0VGV4dEluZGlj
YXRvckFuaW1hdGlvblByb2dyZXNzKGZsb2F0IHByb2dyZXNzKQoreworICAgIFttX3drVmlldyBf
c2V0VGV4dEluZGljYXRvckFuaW1hdGlvblByb2dyZXNzOnByb2dyZXNzXTsKK30KKwogdm9pZCBQ
YWdlQ2xpZW50SW1wbDo6YWNjZXNzaWJpbGl0eVdlYlByb2Nlc3NUb2tlblJlY2VpdmVkKGNvbnN0
IElQQzo6RGF0YVJlZmVyZW5jZSYgZGF0YSkKIHsKICAgICBOU0RhdGEqIHJlbW90ZVRva2VuID0g
W05TRGF0YSBkYXRhV2l0aEJ5dGVzOmRhdGEuZGF0YSgpIGxlbmd0aDpkYXRhLnNpemUoKV07CkBA
IC01NjcsMTAgKzU3Miw5IEBAIHZvaWQgUGFnZUNsaWVudEltcGw6OmRpZFBlcmZvcm1EaWN0aW9u
YXJ5TG9va3VwKGNvbnN0IERpY3Rpb25hcnlQb3B1cEluZm8mIGRpY3RpCiAgICAgICAgIC8vIFJ1
biB0aGUgYW5pbWF0aW9ucyBzZXJpYWxseSBiZWNhdXNlIGF0dGFjaGluZyBhbm90aGVyIHN1Yndp
bmRvdyBicmVha3MgdGhlIGJvdW5jZSBhbmltYXRpb24uCiAgICAgICAgIC8vIFdlIGNvdWxkIGNv
bnNpZGVyIG1ha2luZyB0aGUgYm91bmNlIE5TQW5pbWF0aW9uTm9uYmxvY2tpbmdUaHJlYWRlZCBp
bnN0ZWFkLCB3aGljaCBzZWVtcwogICAgICAgICAvLyB0byB3b3JrLCBidXQgbmVlZCB0byBjb25z
aWRlciBhbGwgb2YgdGhlIGltcGxpY2F0aW9ucy4KLSAgICAgICAgW21fd2tWaWV3IF9zZXRUZXh0
SW5kaWNhdG9yOlRleHRJbmRpY2F0b3I6OmNyZWF0ZShkaWN0aW9uYXJ5UG9wdXBJbmZvLnRleHRJ
bmRpY2F0b3IpIGZhZGVPdXQ6Tk8gYW5pbWF0aW9uQ29tcGxldGlvbkhhbmRsZXI6W2RpY3Rpb25h
cnlQb3B1cEluZm8sIHRleHRCYXNlbGluZU9yaWdpbiwgbXV0YWJsZU9wdGlvbnNdIHsKLSAgICAg
ICAgICAgIFttdXRhYmxlT3B0aW9ucyBzZXRPYmplY3Q6QFlFUyBmb3JLZXk6Z2V0TFVUZXJtT3B0
aW9uRGlzYWJsZVNlYXJjaFRlcm1JbmRpY2F0b3IoKV07Ci0gICAgICAgICAgICBbZ2V0TFVMb29r
dXBEZWZpbml0aW9uTW9kdWxlQ2xhc3MoKSBzaG93RGVmaW5pdGlvbkZvclRlcm06ZGljdGlvbmFy
eVBvcHVwSW5mby5hdHRyaWJ1dGVkU3RyaW5nLnN0cmluZy5nZXQoKSBhdExvY2F0aW9uOnRleHRC
YXNlbGluZU9yaWdpbiBvcHRpb25zOm11dGFibGVPcHRpb25zLmdldCgpXTsKLSAgICAgICAgfV07
CisgICAgICAgIFttX3drVmlldyBfc2V0VGV4dEluZGljYXRvcjpUZXh0SW5kaWNhdG9yOjpjcmVh
dGUoZGljdGlvbmFyeVBvcHVwSW5mby50ZXh0SW5kaWNhdG9yKSBmYWRlT3V0Ok5PXTsKKyAgICAg
ICAgW211dGFibGVPcHRpb25zIHNldE9iamVjdDpAWUVTIGZvcktleTpnZXRMVVRlcm1PcHRpb25E
aXNhYmxlU2VhcmNoVGVybUluZGljYXRvcigpXTsKKyAgICAgICAgW2dldExVTG9va3VwRGVmaW5p
dGlvbk1vZHVsZUNsYXNzKCkgc2hvd0RlZmluaXRpb25Gb3JUZXJtOmRpY3Rpb25hcnlQb3B1cElu
Zm8uYXR0cmlidXRlZFN0cmluZy5zdHJpbmcuZ2V0KCkgYXRMb2NhdGlvbjp0ZXh0QmFzZWxpbmVP
cmlnaW4gb3B0aW9uczptdXRhYmxlT3B0aW9ucy5nZXQoKV07CiAgICAgfSBlbHNlCiAgICAgICAg
IFtnZXRMVUxvb2t1cERlZmluaXRpb25Nb2R1bGVDbGFzcygpIHNob3dEZWZpbml0aW9uRm9yVGVy
bTpkaWN0aW9uYXJ5UG9wdXBJbmZvLmF0dHJpYnV0ZWRTdHJpbmcuc3RyaW5nLmdldCgpIGF0TG9j
YXRpb246dGV4dEJhc2VsaW5lT3JpZ2luIG9wdGlvbnM6bXV0YWJsZU9wdGlvbnMuZ2V0KCldOwog
fQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL21hYy9XS0FjdGlvbk1lbnVD
b250cm9sbGVyLm1tIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL21hYy9XS0FjdGlvbk1lbnVD
b250cm9sbGVyLm1tCmluZGV4IDAwZWQ3N2E5MWUyYTEyYjAyNGFkNDRjNTcxMTY1YzFjOGIxNDky
ZWIuLjQ5NDc2MmU0Njg1ODFkNmVhZWVjOTU4YmUxZDc2YzA4NDdlMWNiMzIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9tYWMvV0tBY3Rpb25NZW51Q29udHJvbGxlci5tbQor
KysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvbWFjL1dLQWN0aW9uTWVudUNvbnRyb2xsZXIu
bW0KQEAgLTEwMSw3ICsxMDEsNyBAQCB1c2luZyBuYW1lc3BhY2UgV2ViS2l0OwogCiAgICAgW193
a1ZpZXcgX2Rpc21pc3NDb250ZW50UmVsYXRpdmVDaGlsZFdpbmRvd3NdOwogCi0gICAgX3BhZ2Ut
PnBlcmZvcm1BY3Rpb25NZW51SGl0VGVzdEF0TG9jYXRpb24oW193a1ZpZXcgY29udmVydFBvaW50
OmV2ZW50LmxvY2F0aW9uSW5XaW5kb3cgZnJvbVZpZXc6bmlsXSk7CisgICAgX3BhZ2UtPnBlcmZv
cm1BY3Rpb25NZW51SGl0VGVzdEF0TG9jYXRpb24oW193a1ZpZXcgY29udmVydFBvaW50OmV2ZW50
LmxvY2F0aW9uSW5XaW5kb3cgZnJvbVZpZXc6bmlsXSwgZmFsc2UpOwogCiAgICAgX3N0YXRlID0g
QWN0aW9uTWVudVN0YXRlOjpQZW5kaW5nOwogICAgIFtzZWxmIF91cGRhdGVBY3Rpb25NZW51SXRl
bXNdOwpAQCAtMzk5LDggKzM5OSw2IEBAIHN0YXRpYyBOU1N0cmluZyAqcGF0aFRvUGhvdG9PbkRp
c2soTlNTdHJpbmcgKnN1Z2dlc3RlZEZpbGVuYW1lKQogICAgIFtfY3VycmVudEFjdGlvbkNvbnRl
eHQgc2V0SGlnaGxpZ2h0RnJhbWU6W193a1ZpZXcud2luZG93IGNvbnZlcnRSZWN0VG9TY3JlZW46
W193a1ZpZXcgY29udmVydFJlY3Q6X2hpdFRlc3RSZXN1bHQuZGV0ZWN0ZWREYXRhQm91bmRpbmdC
b3ggdG9WaWV3Om5pbF1dXTsKIAogICAgIE5TQXJyYXkgKm1lbnVJdGVtcyA9IFtbZ2V0RERBY3Rp
b25zTWFuYWdlckNsYXNzKCkgc2hhcmVkTWFuYWdlcl0gbWVudUl0ZW1zRm9yUmVzdWx0OltfY3Vy
cmVudEFjdGlvbkNvbnRleHQgbWFpblJlc3VsdF0gYWN0aW9uQ29udGV4dDpfY3VycmVudEFjdGlv
bkNvbnRleHQuZ2V0KCldOwotICAgIGlmIChtZW51SXRlbXMuY291bnQgPT0gMSAmJiBfaGl0VGVz
dFJlc3VsdC5kZXRlY3RlZERhdGFUZXh0SW5kaWNhdG9yKQotICAgICAgICBfaGl0VGVzdFJlc3Vs
dC5kZXRlY3RlZERhdGFUZXh0SW5kaWNhdG9yLT5zZXRQcmVzZW50YXRpb25UcmFuc2l0aW9uKFRl
eHRJbmRpY2F0b3JQcmVzZW50YXRpb25UcmFuc2l0aW9uOjpCb3VuY2UpOwogICAgIHJldHVybiBt
ZW51SXRlbXM7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9tYWMv
V0tJbW1lZGlhdGVBY3Rpb25Db250cm9sbGVyLm1tIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L21hYy9XS0ltbWVkaWF0ZUFjdGlvbkNvbnRyb2xsZXIubW0KaW5kZXggYmFhZjY2ZDhkMmU3M2Ex
NmUyYmM3NmNhY2VhN2IxN2FjYWUzOTAwZC4uZjQ5Njc3MmUwYmVhYzJjOTVlZTNmNTM1MWIzZDdj
NzI5YzdhMjU4MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL21hYy9XS0lt
bWVkaWF0ZUFjdGlvbkNvbnRyb2xsZXIubW0KKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L21hYy9XS0ltbWVkaWF0ZUFjdGlvbkNvbnRyb2xsZXIubW0KQEAgLTEwMSw2ICsxMDEsMTIgQEAg
dXNpbmcgbmFtZXNwYWNlIFdlYktpdDsKIAogLSAodm9pZClfY2xlYXJJbW1lZGlhdGVBY3Rpb25T
dGF0ZQogeworI2lmIFdLX0FQSV9FTkFCTEVECisgICAgW3NlbGYgaGlkZVByZXZpZXddOworI2Vu
ZGlmCisKKyAgICBfcGFnZS0+Y2xlYXJUZXh0SW5kaWNhdG9yKCk7CisKICAgICBpZiAoX2N1cnJl
bnRBY3Rpb25Db250ZXh0ICYmIF9oYXNBY3RpdmF0ZWRBY3Rpb25Db250ZXh0KSB7CiAgICAgICAg
IFtnZXREREFjdGlvbnNNYW5hZ2VyQ2xhc3MoKSBkaWRVc2VBY3Rpb25zXTsKICAgICAgICAgX2hh
c0FjdGl2YXRlZEFjdGlvbkNvbnRleHQgPSBOTzsKQEAgLTEzMCwxMCArMTM2LDEyIEBAIHVzaW5n
IG5hbWVzcGFjZSBXZWJLaXQ7CiAgICAgaWYgKGltbWVkaWF0ZUFjdGlvblJlY29nbml6ZXIgIT0g
X2ltbWVkaWF0ZUFjdGlvblJlY29nbml6ZXIpCiAgICAgICAgIHJldHVybjsKIAorICAgIF9wYWdl
LT5zZXRNYWludGFpbnNJbmFjdGl2ZVNlbGVjdGlvbih0cnVlKTsKKwogICAgIFtfd2tWaWV3IF9k
aXNtaXNzQ29udGVudFJlbGF0aXZlQ2hpbGRXaW5kb3dzXTsKIAogICAgIF9ldmVudExvY2F0aW9u
SW5WaWV3ID0gW2ltbWVkaWF0ZUFjdGlvblJlY29nbml6ZXIgbG9jYXRpb25JblZpZXc6aW1tZWRp
YXRlQWN0aW9uUmVjb2duaXplci52aWV3XTsKLSAgICBfcGFnZS0+cGVyZm9ybUFjdGlvbk1lbnVI
aXRUZXN0QXRMb2NhdGlvbihfZXZlbnRMb2NhdGlvbkluVmlldyk7CisgICAgX3BhZ2UtPnBlcmZv
cm1BY3Rpb25NZW51SGl0VGVzdEF0TG9jYXRpb24oX2V2ZW50TG9jYXRpb25JblZpZXcsIHRydWUp
OwogCiAgICAgX3N0YXRlID0gSW1tZWRpYXRlQWN0aW9uU3RhdGU6OlBlbmRpbmc7CiAgICAgW3Nl
bGYgX3VwZGF0ZUltbWVkaWF0ZUFjdGlvbkl0ZW1dOwpAQCAtMTcyLDEyICsxODAsMjIgQEAgdXNp
bmcgbmFtZXNwYWNlIFdlYktpdDsKICAgICB9CiB9CiAKKy0gKHZvaWQpaW1tZWRpYXRlQWN0aW9u
UmVjb2duaXplckRpZFVwZGF0ZUFuaW1hdGlvbjooTlNJbW1lZGlhdGVBY3Rpb25HZXN0dXJlUmVj
b2duaXplciAqKWltbWVkaWF0ZUFjdGlvblJlY29nbml6ZXIKK3sKKyAgICBpZiAoaW1tZWRpYXRl
QWN0aW9uUmVjb2duaXplciAhPSBfaW1tZWRpYXRlQWN0aW9uUmVjb2duaXplcikKKyAgICAgICAg
cmV0dXJuOworCisgICAgX3BhZ2UtPnNldFRleHRJbmRpY2F0b3JBbmltYXRpb25Qcm9ncmVzcyhb
aW1tZWRpYXRlQWN0aW9uUmVjb2duaXplciBhbmltYXRpb25Qcm9ncmVzc10pOworfQorCiAtICh2
b2lkKWltbWVkaWF0ZUFjdGlvblJlY29nbml6ZXJEaWRDYW5jZWxBbmltYXRpb246KE5TSW1tZWRp
YXRlQWN0aW9uR2VzdHVyZVJlY29nbml6ZXIgKilpbW1lZGlhdGVBY3Rpb25SZWNvZ25pemVyCiB7
CiAgICAgaWYgKGltbWVkaWF0ZUFjdGlvblJlY29nbml6ZXIgIT0gX2ltbWVkaWF0ZUFjdGlvblJl
Y29nbml6ZXIpCiAgICAgICAgIHJldHVybjsKIAorICAgIF9wYWdlLT5zZXRUZXh0SW5kaWNhdG9y
QW5pbWF0aW9uUHJvZ3Jlc3MoMCk7CiAgICAgW3NlbGYgX2NsZWFySW1tZWRpYXRlQWN0aW9uU3Rh
dGVdOworICAgIF9wYWdlLT5zZXRNYWludGFpbnNJbmFjdGl2ZVNlbGVjdGlvbihmYWxzZSk7CiB9
CiAKIC0gKHZvaWQpaW1tZWRpYXRlQWN0aW9uUmVjb2duaXplckRpZENvbXBsZXRlQW5pbWF0aW9u
OihOU0ltbWVkaWF0ZUFjdGlvbkdlc3R1cmVSZWNvZ25pemVyICopaW1tZWRpYXRlQWN0aW9uUmVj
b2duaXplcgpAQCAtMTg1LDcgKzIwMyw4IEBAIHVzaW5nIG5hbWVzcGFjZSBXZWJLaXQ7CiAgICAg
aWYgKGltbWVkaWF0ZUFjdGlvblJlY29nbml6ZXIgIT0gX2ltbWVkaWF0ZUFjdGlvblJlY29nbml6
ZXIpCiAgICAgICAgIHJldHVybjsKIAotICAgIC8vIEZJWE1FOiBBZGQgc3VwcG9ydCBmb3IgdGhl
IHR5cGVzIG9mIGZ1bmN0aW9uYWxpdHkgcHJvdmlkZWQgaW4gQWN0aW9uIG1lbnUncyB3aWxsT3Bl
bk1lbnUuCisgICAgX3BhZ2UtPnNldFRleHRJbmRpY2F0b3JBbmltYXRpb25Qcm9ncmVzcygxKTsK
KyAgICBfcGFnZS0+c2V0TWFpbnRhaW5zSW5hY3RpdmVTZWxlY3Rpb24oZmFsc2UpOwogfQogCiAt
IChQYXNzUmVmUHRyPFdlYkhpdFRlc3RSZXN1bHQ+KV93ZWJIaXRUZXN0UmVzdWx0CkBAIC01MDcs
OCArNTI2LDYgQEAgc3RhdGljIGJvb2wgdGFyZ2V0U2l6ZUZpdHNJbkF2YWlsYWJsZVNwYWNlKE5T
U2l6ZSB0YXJnZXRTaXplLCBOU1NpemUgYXZhaWxhYmxlU3AKICAgICBpZiAobWVudUl0ZW1zLmNv
dW50ICE9IDEpCiAgICAgICAgIHJldHVybiBuaWw7CiAKLSAgICBpZiAoX2hpdFRlc3RSZXN1bHQu
ZGV0ZWN0ZWREYXRhVGV4dEluZGljYXRvcikKLSAgICAgICAgX2hpdFRlc3RSZXN1bHQuZGV0ZWN0
ZWREYXRhVGV4dEluZGljYXRvci0+c2V0UHJlc2VudGF0aW9uVHJhbnNpdGlvbihUZXh0SW5kaWNh
dG9yUHJlc2VudGF0aW9uVHJhbnNpdGlvbjo6Qm91bmNlKTsKICAgICByZXR1cm4gbWVudUl0ZW1z
Lmxhc3RPYmplY3Q7CiB9CiAKQEAgLTUzMyw2ICs1NTAsNyBAQCBzdGF0aWMgYm9vbCB0YXJnZXRT
aXplRml0c0luQXZhaWxhYmxlU3BhY2UoTlNTaXplIHRhcmdldFNpemUsIE5TU2l6ZSBhdmFpbGFi
bGVTcAogCiAgICAgUmV0YWluUHRyPE5TTXV0YWJsZURpY3Rpb25hcnk+IG11dGFibGVPcHRpb25z
ID0gYWRvcHROUyhbKE5TRGljdGlvbmFyeSAqKWRpY3Rpb25hcnlQb3B1cEluZm8ub3B0aW9ucy5n
ZXQoKSBtdXRhYmxlQ29weV0pOwogICAgIGlmIChjYW5Mb2FkTFVUZXJtT3B0aW9uRGlzYWJsZVNl
YXJjaFRlcm1JbmRpY2F0b3IoKSAmJiBkaWN0aW9uYXJ5UG9wdXBJbmZvLnRleHRJbmRpY2F0b3Iu
Y29udGVudEltYWdlKSB7CisgICAgICAgIFtfd2tWaWV3IF9zZXRUZXh0SW5kaWNhdG9yOlRleHRJ
bmRpY2F0b3I6OmNyZWF0ZShkaWN0aW9uYXJ5UG9wdXBJbmZvLnRleHRJbmRpY2F0b3IpIGZhZGVP
dXQ6Tk9dOwogICAgICAgICBbbXV0YWJsZU9wdGlvbnMgc2V0T2JqZWN0OkBZRVMgZm9yS2V5Omdl
dExVVGVybU9wdGlvbkRpc2FibGVTZWFyY2hUZXJtSW5kaWNhdG9yKCldOwogICAgICAgICByZXR1
cm4gW2dldExVTG9va3VwRGVmaW5pdGlvbk1vZHVsZUNsYXNzKCkgbG9va3VwQW5pbWF0aW9uQ29u
dHJvbGxlckZvclRlcm06ZGljdGlvbmFyeVBvcHVwSW5mby5hdHRyaWJ1dGVkU3RyaW5nLnN0cmlu
Zy5nZXQoKSBhdExvY2F0aW9uOnRleHRCYXNlbGluZU9yaWdpbiBvcHRpb25zOm11dGFibGVPcHRp
b25zLmdldCgpXTsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNz
L1dlYlBhZ2UvV2ViUGFnZS5oIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dl
YlBhZ2UuaAppbmRleCA4MDJlOGNiNTliZGUyMjE0ZWNjZTdiMTc2M2FhY2MyN2FkNDE3MTc3Li45
MjcyYTJhNDA1MzE4YmM1NjAxNWYwMTllMDA0ODc3ZWVmNWMzN2QyIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oCisrKyBiL1NvdXJjZS9XZWJL
aXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgKQEAgLTEwNzcsNyArMTA3Nyw3IEBAIHBy
aXZhdGU6CiAgICAgdm9pZCByZXBvcnRVc2VkRmVhdHVyZXMoKTsKIAogI2lmIFBMQVRGT1JNKE1B
QykKLSAgICB2b2lkIHBlcmZvcm1BY3Rpb25NZW51SGl0VGVzdEF0TG9jYXRpb24oV2ViQ29yZTo6
RmxvYXRQb2ludCk7CisgICAgdm9pZCBwZXJmb3JtQWN0aW9uTWVudUhpdFRlc3RBdExvY2F0aW9u
KFdlYkNvcmU6OkZsb2F0UG9pbnQsIGJvb2wgZm9ySW1tZWRpYXRlQWN0aW9uKTsKICAgICBQYXNz
UmVmUHRyPFdlYkNvcmU6OlJhbmdlPiBsb29rdXBUZXh0QXRMb2NhdGlvbihXZWJDb3JlOjpGbG9h
dFBvaW50LCBOU0RpY3Rpb25hcnkgKipvcHRpb25zKTsKICAgICB2b2lkIHNlbGVjdExhc3RBY3Rp
b25NZW51UmFuZ2UoKTsKICAgICB2b2lkIGZvY3VzQW5kU2VsZWN0TGFzdEFjdGlvbk1lbnVIaXRU
ZXN0UmVzdWx0KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBh
Z2UvV2ViUGFnZS5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFn
ZS9XZWJQYWdlLm1lc3NhZ2VzLmluCmluZGV4IDdlZDdlYTE5NmVhNTI4NjQwZmFmMjkzYjU4ZTMz
MDY3ODZmNjRjNzQuLjg5ZmE2YmFiN2ExMjkwNjM0OWMwMzY5MjRiMTA1YzhkYzk2ZTVlMzcgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1lc3Nh
Z2VzLmluCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1l
c3NhZ2VzLmluCkBAIC0zOTksNyArMzk5LDcgQEAgbWVzc2FnZXMgLT4gV2ViUGFnZSBMZWdhY3lS
ZWNlaXZlciB7CiAgICAgCiAgICAgVGFrZVNuYXBzaG90KFdlYkNvcmU6OkludFJlY3Qgc25hcHNo
b3RSZWN0LCBXZWJDb3JlOjpJbnRTaXplIGJpdG1hcFNpemUsIHVpbnQzMl90IG9wdGlvbnMsIHVp
bnQ2NF90IGNhbGxiYWNrSUQpCiAjaWYgUExBVEZPUk0oTUFDKQotICAgIFBlcmZvcm1BY3Rpb25N
ZW51SGl0VGVzdEF0TG9jYXRpb24oV2ViQ29yZTo6RmxvYXRQb2ludCBsb2NhdGlvbikKKyAgICBQ
ZXJmb3JtQWN0aW9uTWVudUhpdFRlc3RBdExvY2F0aW9uKFdlYkNvcmU6OkZsb2F0UG9pbnQgbG9j
YXRpb24sIGJvb2wgZm9ySW1tZWRpYXRlQWN0aW9uKQogICAgIFNlbGVjdExhc3RBY3Rpb25NZW51
UmFuZ2UoKQogICAgIEZvY3VzQW5kU2VsZWN0TGFzdEFjdGlvbk1lbnVIaXRUZXN0UmVzdWx0KCkK
ICAgICBEYXRhRGV0ZWN0b3JzRGlkUHJlc2VudFVJKFdlYkNvcmU6OlBhZ2VPdmVybGF5OjpQYWdl
T3ZlcmxheUlEIHBhZ2VPdmVybGF5KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJv
Y2Vzcy9XZWJQYWdlL21hYy9XZWJQYWdlTWFjLm1tIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vz
cy9XZWJQYWdlL21hYy9XZWJQYWdlTWFjLm1tCmluZGV4IDZlYWNiOTNjNGZmOGM4M2ZhZDdhYWFk
YmU1ZDNkNmY3YmNmMzM4ZmEuLmU4NjQ2YmVkMDcwYTI2NWI4YTIyYmUyN2U4ZGRlNDE1YjRkZjU4
NGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMvV2Vi
UGFnZU1hYy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1dl
YlBhZ2VNYWMubW0KQEAgLTk3OCw3ICs5NzgsMTQgQEAgU3RyaW5nIFdlYlBhZ2U6OnBsYXRmb3Jt
VXNlckFnZW50KGNvbnN0IFVSTCYpIGNvbnN0CiAgICAgcmV0dXJuIFN0cmluZygpOwogfQogCi12
b2lkIFdlYlBhZ2U6OnBlcmZvcm1BY3Rpb25NZW51SGl0VGVzdEF0TG9jYXRpb24oV2ViQ29yZTo6
RmxvYXRQb2ludCBsb2NhdGlvbkluVmlld0Nvb29yZGluYXRlcykKK3N0YXRpYyBUZXh0SW5kaWNh
dG9yUHJlc2VudGF0aW9uVHJhbnNpdGlvbiB0ZXh0SW5kaWNhdG9yVHJhbnNpdGlvbkZvckFjdGlv
bk1lbnUoUmFuZ2UqIHNlbGVjdGlvblJhbmdlLCBSYW5nZSYgaW5kaWNhdG9yUmFuZ2UsIGJvb2wg
Zm9ySW1tZWRpYXRlQWN0aW9uLCBib29sIGZvckRhdGFEZXRlY3RvcnMpCit7CisgICAgaWYgKGFy
ZVJhbmdlc0VxdWFsKCZpbmRpY2F0b3JSYW5nZSwgc2VsZWN0aW9uUmFuZ2UpIHx8IChmb3JEYXRh
RGV0ZWN0b3JzICYmICFmb3JJbW1lZGlhdGVBY3Rpb24pKQorICAgICAgICByZXR1cm4gZm9ySW1t
ZWRpYXRlQWN0aW9uID8gVGV4dEluZGljYXRvclByZXNlbnRhdGlvblRyYW5zaXRpb246OkNyb3Nz
ZmFkZSA6IFRleHRJbmRpY2F0b3JQcmVzZW50YXRpb25UcmFuc2l0aW9uOjpCb3VuY2VBbmRDcm9z
c2ZhZGU7CisgICAgcmV0dXJuIGZvckltbWVkaWF0ZUFjdGlvbiA/IFRleHRJbmRpY2F0b3JQcmVz
ZW50YXRpb25UcmFuc2l0aW9uOjpGYWRlSW4gOiBUZXh0SW5kaWNhdG9yUHJlc2VudGF0aW9uVHJh
bnNpdGlvbjo6Qm91bmNlOworfQorCit2b2lkIFdlYlBhZ2U6OnBlcmZvcm1BY3Rpb25NZW51SGl0
VGVzdEF0TG9jYXRpb24oV2ViQ29yZTo6RmxvYXRQb2ludCBsb2NhdGlvbkluVmlld0Nvb29yZGlu
YXRlcywgYm9vbCBmb3JJbW1lZGlhdGVBY3Rpb24pCiB7CiAgICAgbGF5b3V0SWZOZWVkZWQoKTsK
IApAQCAtOTk1LDI2ICsxMDAyLDMxIEBAIHZvaWQgV2ViUGFnZTo6cGVyZm9ybUFjdGlvbk1lbnVI
aXRUZXN0QXRMb2NhdGlvbihXZWJDb3JlOjpGbG9hdFBvaW50IGxvY2F0aW9uSW5WCiAgICAgYWN0
aW9uTWVudVJlc3VsdC5oaXRUZXN0TG9jYXRpb25JblZpZXdDb29vcmRpbmF0ZXMgPSBsb2NhdGlv
bkluVmlld0Nvb29yZGluYXRlczsKICAgICBhY3Rpb25NZW51UmVzdWx0LmhpdFRlc3RSZXN1bHQg
PSBXZWJIaXRUZXN0UmVzdWx0OjpEYXRhKGhpdFRlc3RSZXN1bHQpOwogCisgICAgUmVmUHRyPFJh
bmdlPiBzZWxlY3Rpb25SYW5nZSA9IGNvcmVQYWdlKCktPmZvY3VzQ29udHJvbGxlcigpLmZvY3Vz
ZWRPck1haW5GcmFtZSgpLnNlbGVjdGlvbigpLnNlbGVjdGlvbigpLmZpcnN0UmFuZ2UoKTsKKwog
ICAgIE5TRGljdGlvbmFyeSAqb3B0aW9ucyA9IG5pbDsKLSAgICBSZWZQdHI8V2ViQ29yZTo6UmFu
Z2U+IGxvb2t1cFJhbmdlID0gbG9va3VwVGV4dEF0TG9jYXRpb24obG9jYXRpb25JblZpZXdDb29v
cmRpbmF0ZXMsICZvcHRpb25zKTsKKyAgICBSZWZQdHI8UmFuZ2U+IGxvb2t1cFJhbmdlID0gbG9v
a3VwVGV4dEF0TG9jYXRpb24obG9jYXRpb25JblZpZXdDb29vcmRpbmF0ZXMsICZvcHRpb25zKTsK
ICAgICBhY3Rpb25NZW51UmVzdWx0Lmxvb2t1cFRleHQgPSBsb29rdXBSYW5nZSA/IGxvb2t1cFJh
bmdlLT50ZXh0KCkgOiBTdHJpbmcoKTsKKwogICAgIGlmIChsb29rdXBSYW5nZSkgewogICAgICAg
ICBpZiAoTm9kZSogbm9kZSA9IGhpdFRlc3RSZXN1bHQuaW5uZXJOb2RlKCkpIHsKICAgICAgICAg
ICAgIGlmIChGcmFtZSogaGl0VGVzdFJlc3VsdEZyYW1lID0gbm9kZS0+ZG9jdW1lbnQoKS5mcmFt
ZSgpKQotICAgICAgICAgICAgICAgIGFjdGlvbk1lbnVSZXN1bHQuZGljdGlvbmFyeVBvcHVwSW5m
byA9IGRpY3Rpb25hcnlQb3B1cEluZm9Gb3JSYW5nZShoaXRUZXN0UmVzdWx0RnJhbWUsICpsb29r
dXBSYW5nZS5nZXQoKSwgJm9wdGlvbnMsIFRleHRJbmRpY2F0b3JQcmVzZW50YXRpb25UcmFuc2l0
aW9uOjpCb3VuY2UpOworICAgICAgICAgICAgICAgIGFjdGlvbk1lbnVSZXN1bHQuZGljdGlvbmFy
eVBvcHVwSW5mbyA9IGRpY3Rpb25hcnlQb3B1cEluZm9Gb3JSYW5nZShoaXRUZXN0UmVzdWx0RnJh
bWUsICpsb29rdXBSYW5nZS5nZXQoKSwgJm9wdGlvbnMsIHRleHRJbmRpY2F0b3JUcmFuc2l0aW9u
Rm9yQWN0aW9uTWVudShzZWxlY3Rpb25SYW5nZS5nZXQoKSwgKmxvb2t1cFJhbmdlLCBmb3JJbW1l
ZGlhdGVBY3Rpb24sIGZhbHNlKSk7CiAgICAgICAgIH0KICAgICB9CiAKICAgICBtX2xhc3RBY3Rp
b25NZW51UmFuZ2VGb3JTZWxlY3Rpb24gPSBsb29rdXBSYW5nZTsKICAgICBtX2xhc3RBY3Rpb25N
ZW51SGl0VGVzdFJlc3VsdCA9IGhpdFRlc3RSZXN1bHQ7CiAKLSAgICBpZiAoSW1hZ2UqIGltYWdl
ID0gaGl0VGVzdFJlc3VsdC5pbWFnZSgpKSB7Ci0gICAgICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+
IGJ1ZmZlciA9IGltYWdlLT5kYXRhKCk7Ci0gICAgICAgIFN0cmluZyBpbWFnZUV4dGVuc2lvbiA9
IGltYWdlLT5maWxlbmFtZUV4dGVuc2lvbigpOwotICAgICAgICBpZiAoIWltYWdlRXh0ZW5zaW9u
LmlzRW1wdHkoKSAmJiBidWZmZXIpIHsKLSAgICAgICAgICAgIGFjdGlvbk1lbnVSZXN1bHQuaW1h
Z2VTaGFyZWRNZW1vcnkgPSBTaGFyZWRNZW1vcnk6OmNyZWF0ZShidWZmZXItPnNpemUoKSk7Ci0g
ICAgICAgICAgICBtZW1jcHkoYWN0aW9uTWVudVJlc3VsdC5pbWFnZVNoYXJlZE1lbW9yeS0+ZGF0
YSgpLCBidWZmZXItPmRhdGEoKSwgYnVmZmVyLT5zaXplKCkpOwotICAgICAgICAgICAgYWN0aW9u
TWVudVJlc3VsdC5pbWFnZUV4dGVuc2lvbiA9IGltYWdlRXh0ZW5zaW9uOworICAgIGlmICghZm9y
SW1tZWRpYXRlQWN0aW9uKSB7CisgICAgICAgIGlmIChJbWFnZSogaW1hZ2UgPSBoaXRUZXN0UmVz
dWx0LmltYWdlKCkpIHsKKyAgICAgICAgICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGJ1ZmZlciA9
IGltYWdlLT5kYXRhKCk7CisgICAgICAgICAgICBTdHJpbmcgaW1hZ2VFeHRlbnNpb24gPSBpbWFn
ZS0+ZmlsZW5hbWVFeHRlbnNpb24oKTsKKyAgICAgICAgICAgIGlmICghaW1hZ2VFeHRlbnNpb24u
aXNFbXB0eSgpICYmIGJ1ZmZlcikgeworICAgICAgICAgICAgICAgIGFjdGlvbk1lbnVSZXN1bHQu
aW1hZ2VTaGFyZWRNZW1vcnkgPSBTaGFyZWRNZW1vcnk6OmNyZWF0ZShidWZmZXItPnNpemUoKSk7
CisgICAgICAgICAgICAgICAgbWVtY3B5KGFjdGlvbk1lbnVSZXN1bHQuaW1hZ2VTaGFyZWRNZW1v
cnktPmRhdGEoKSwgYnVmZmVyLT5kYXRhKCksIGJ1ZmZlci0+c2l6ZSgpKTsKKyAgICAgICAgICAg
ICAgICBhY3Rpb25NZW51UmVzdWx0LmltYWdlRXh0ZW5zaW9uID0gaW1hZ2VFeHRlbnNpb247Cisg
ICAgICAgICAgICB9CiAgICAgICAgIH0KICAgICB9CiAKQEAgLTEwNDAsNyArMTA1Miw3IEBAIHZv
aWQgV2ViUGFnZTo6cGVyZm9ybUFjdGlvbk1lbnVIaXRUZXN0QXRMb2NhdGlvbihXZWJDb3JlOjpG
bG9hdFBvaW50IGxvY2F0aW9uSW5WCiAgICAgICAgICAgICBkZXRlY3RlZERhdGFCb3VuZGluZ0Jv
eC51bml0ZShmcmFtZVZpZXctPmNvbnRlbnRzVG9XaW5kb3cocXVhZC5lbmNsb3NpbmdCb3VuZGlu
Z0JveCgpKSk7CiAKICAgICAgICAgYWN0aW9uTWVudVJlc3VsdC5kZXRlY3RlZERhdGFCb3VuZGlu
Z0JveCA9IGRldGVjdGVkRGF0YUJvdW5kaW5nQm94OwotICAgICAgICBhY3Rpb25NZW51UmVzdWx0
LmRldGVjdGVkRGF0YVRleHRJbmRpY2F0b3IgPSBUZXh0SW5kaWNhdG9yOjpjcmVhdGVXaXRoUmFu
Z2UoKm1haW5SZXN1bHRSYW5nZSwgVGV4dEluZGljYXRvclByZXNlbnRhdGlvblRyYW5zaXRpb246
OkJvdW5jZUFuZENyb3NzZmFkZSk7CisgICAgICAgIGFjdGlvbk1lbnVSZXN1bHQuZGV0ZWN0ZWRE
YXRhVGV4dEluZGljYXRvciA9IFRleHRJbmRpY2F0b3I6OmNyZWF0ZVdpdGhSYW5nZSgqbWFpblJl
c3VsdFJhbmdlLCB0ZXh0SW5kaWNhdG9yVHJhbnNpdGlvbkZvckFjdGlvbk1lbnUoc2VsZWN0aW9u
UmFuZ2UuZ2V0KCksICptYWluUmVzdWx0UmFuZ2UsIGZvckltbWVkaWF0ZUFjdGlvbiwgdHJ1ZSkp
OwogICAgICAgICBhY3Rpb25NZW51UmVzdWx0LmRldGVjdGVkRGF0YU9yaWdpbmF0aW5nUGFnZU92
ZXJsYXkgPSBvdmVybGF5LT5wYWdlT3ZlcmxheUlEKCk7CiAgICAgICAgIG1fbGFzdEFjdGlvbk1l
bnVSYW5nZUZvclNlbGVjdGlvbiA9IG1haW5SZXN1bHRSYW5nZTsKIApAQCAtMTA1NCw3ICsxMDY2
LDcgQEAgdm9pZCBXZWJQYWdlOjpwZXJmb3JtQWN0aW9uTWVudUhpdFRlc3RBdExvY2F0aW9uKFdl
YkNvcmU6OkZsb2F0UG9pbnQgbG9jYXRpb25JblYKICAgICAgICAgYWN0aW9uTWVudVJlc3VsdC5h
Y3Rpb25Db250ZXh0ID0gRGF0YURldGVjdGlvbjo6ZGV0ZWN0SXRlbUFyb3VuZEhpdFRlc3RSZXN1
bHQoaGl0VGVzdFJlc3VsdCwgZGV0ZWN0ZWREYXRhQm91bmRpbmdCb3gsIGRldGVjdGVkRGF0YVJh
bmdlKTsKICAgICAgICAgaWYgKGFjdGlvbk1lbnVSZXN1bHQuYWN0aW9uQ29udGV4dCAmJiBkZXRl
Y3RlZERhdGFSYW5nZSkgewogICAgICAgICAgICAgYWN0aW9uTWVudVJlc3VsdC5kZXRlY3RlZERh
dGFCb3VuZGluZ0JveCA9IGRldGVjdGVkRGF0YUJvdW5kaW5nQm94OwotICAgICAgICAgICAgYWN0
aW9uTWVudVJlc3VsdC5kZXRlY3RlZERhdGFUZXh0SW5kaWNhdG9yID0gVGV4dEluZGljYXRvcjo6
Y3JlYXRlV2l0aFJhbmdlKCpkZXRlY3RlZERhdGFSYW5nZSwgVGV4dEluZGljYXRvclByZXNlbnRh
dGlvblRyYW5zaXRpb246OkJvdW5jZUFuZENyb3NzZmFkZSk7CisgICAgICAgICAgICBhY3Rpb25N
ZW51UmVzdWx0LmRldGVjdGVkRGF0YVRleHRJbmRpY2F0b3IgPSBUZXh0SW5kaWNhdG9yOjpjcmVh
dGVXaXRoUmFuZ2UoKmRldGVjdGVkRGF0YVJhbmdlLCB0ZXh0SW5kaWNhdG9yVHJhbnNpdGlvbkZv
ckFjdGlvbk1lbnUoc2VsZWN0aW9uUmFuZ2UuZ2V0KCksICpkZXRlY3RlZERhdGFSYW5nZSwgZm9y
SW1tZWRpYXRlQWN0aW9uLCB0cnVlKSk7CiAgICAgICAgICAgICBtX2xhc3RBY3Rpb25NZW51UmFu
Z2VGb3JTZWxlY3Rpb24gPSBkZXRlY3RlZERhdGFSYW5nZTsKICAgICAgICAgfQogICAgIH0K
</data>
<flag name="review"
          id="268296"
          type_id="1"
          status="+"
          setter="andersca"
    />
          </attachment>
      

    </bug>

</bugzilla>