<?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>169309</bug_id>
          
          <creation_ts>2017-03-07 14:30:14 -0800</creation_ts>
          <short_desc>Add TextIndicator support for providing a snapshot excluding selected content</short_desc>
          <delta_ts>2017-03-09 08:28:43 -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>WebCore Misc.</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Wenson Hsieh">wenson_hsieh</reporter>
          <assigned_to name="Wenson Hsieh">wenson_hsieh</assigned_to>
          <cc>bdakin</cc>
    
    <cc>commit-queue</cc>
    
    <cc>thorton</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1284566</commentid>
    <comment_count>0</comment_count>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2017-03-07 14:30:14 -0800</bug_when>
    <thetext>&lt;rdar://problem/30883525&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1284582</commentid>
    <comment_count>1</comment_count>
      <attachid>303731</attachid>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2017-03-07 15:03:17 -0800</bug_when>
    <thetext>Created attachment 303731
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1284794</commentid>
    <comment_count>2</comment_count>
      <attachid>303731</attachid>
    <who name="Tim Horton">thorton</who>
    <bug_when>2017-03-08 00:54:35 -0800</bug_when>
    <thetext>Comment on attachment 303731
Patch

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

TextIndicator parts are fine with me but we should get myles and smfr to take a peek at the other bits.

&gt; Source/WebCore/ChangeLog:58
&gt; +        Teach RenderReplaced to respect PaintBehaviorExcludeSelection by bailing from painting if it is selected and the
&gt; +        paint behavior is enabled.

What happens for &lt;div&gt; with background color (block /or/ inline-block)? One of the reasons I think we need smfr&apos;s input.

&gt; Source/WebCore/page/TextIndicator.h:52
&gt; +enum TextIndicatorOption : uint16_t {

Ahhhh this is when you know things have gotten bad.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1285043</commentid>
    <comment_count>3</comment_count>
      <attachid>303848</attachid>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2017-03-08 14:51:43 -0800</bug_when>
    <thetext>Created attachment 303848
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1285069</commentid>
    <comment_count>4</comment_count>
      <attachid>303848</attachid>
    <who name="Tim Horton">thorton</who>
    <bug_when>2017-03-08 16:02:12 -0800</bug_when>
    <thetext>Comment on attachment 303848
Patch

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

&gt; Source/WebCore/page/TextIndicator.cpp:178
&gt; +        auto snapshotRect = enclosingIntRect(frame.view()-&gt;visualViewportRect());

Why visualViewportRect and not the snapshotRect? Does this mean that this snapshot is a different size than the others? That kind of breaks the model (e.g. you couldn&apos;t transition between the snapshots, which was the point of data.contentImageWithHighlight).

&gt; Source/WebCore/platform/graphics/FontCascade.cpp:352
&gt; +float FontCascade::widthOfTextRange(const TextRun&amp; run, unsigned from, unsigned to, HashSet&lt;const Font*&gt;* fallbackFonts, float* outWidthBeforeRange, float* outWidthAfterRange) const

Amazed that this is something we need to implement fresh.

&gt; Source/WebCore/rendering/InlineTextBox.cpp:567
&gt; +            if (!isHorizontal()) {

What about vertical-bt :|</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1285079</commentid>
    <comment_count>5</comment_count>
      <attachid>303848</attachid>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2017-03-08 16:20:57 -0800</bug_when>
    <thetext>Comment on attachment 303848
Patch

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

&gt;&gt; Source/WebCore/page/TextIndicator.cpp:178
&gt;&gt; +        auto snapshotRect = enclosingIntRect(frame.view()-&gt;visualViewportRect());
&gt; 
&gt; Why visualViewportRect and not the snapshotRect? Does this mean that this snapshot is a different size than the others? That kind of breaks the model (e.g. you couldn&apos;t transition between the snapshots, which was the point of data.contentImageWithHighlight).

We talked about this in person -- we actually do need the full visible contents in this case, so let&apos;s rename TextIndicatorOptionIncludeSnapshotWithoutSelection to something more explicit, like TextIndicatorOptionIncludeSnapshotOfAllVisibleContentWithoutSelection

&gt;&gt; Source/WebCore/platform/graphics/FontCascade.cpp:352
&gt;&gt; +float FontCascade::widthOfTextRange(const TextRun&amp; run, unsigned from, unsigned to, HashSet&lt;const Font*&gt;* fallbackFonts, float* outWidthBeforeRange, float* outWidthAfterRange) const
&gt; 
&gt; Amazed that this is something we need to implement fresh.

This is, indeed, the case. Previously, I took subruns of the whole text run and computed their widths which just used FontCascade::width, but Myles informed my that the Right Thing to do here is to use width iterators (either complex or simple, depending on the font) and advance to the appropriate location in the entire run.

&gt;&gt; Source/WebCore/rendering/InlineTextBox.cpp:567
&gt;&gt; +            if (!isHorizontal()) {
&gt; 
&gt; What about vertical-bt :|

Will add as a // FIXME</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1285120</commentid>
    <comment_count>6</comment_count>
      <attachid>303872</attachid>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2017-03-08 17:20:23 -0800</bug_when>
    <thetext>Created attachment 303872
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1285139</commentid>
    <comment_count>7</comment_count>
      <attachid>303872</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2017-03-08 17:44:48 -0800</bug_when>
    <thetext>Comment on attachment 303872
Patch for landing

Clearing flags on attachment: 303872

Committed r213614: &lt;http://trac.webkit.org/changeset/213614&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>303731</attachid>
            <date>2017-03-07 15:03:17 -0800</date>
            <delta_ts>2017-03-08 14:51:40 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-169309-20170307150250.patch</filename>
            <type>text/plain</type>
            <size>26587</size>
            <attacher name="Wenson Hsieh">wenson_hsieh</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjEzMjcyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZjI4MjE1ZjFhMjY2NTAz
ZjI1NDQyOGQxOWZhMGRhNGJhMGY0YjE0Mi4uZDkwY2FhYjUyZTExOTE3NGZkYjY0M2Y3ZjE1YTNi
NjliZjg5ZjQ0MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDcwIEBACisyMDE3LTAzLTA3ICBXZW5z
b24gSHNpZWggIDx3ZW5zb25faHNpZWhAYXBwbGUuY29tPgorCisgICAgICAgIEFkZCBUZXh0SW5k
aWNhdG9yIHN1cHBvcnQgZm9yIHByb3ZpZGluZyBhIHNuYXBzaG90IGV4Y2x1ZGluZyBzZWxlY3Rl
ZCBjb250ZW50CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0xNjkzMDkKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzMwODgzNTI1PgorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFdvcmsgdG93YXJkcyA8cmRhcjov
L3Byb2JsZW0vMzA4ODI5NzQ+LiBBZGRzIHN1cHBvcnQgaW4gVGV4dEluZGljYXRvciB0byBpbmNs
dWRlIGEgc25hcHNob3Qgb2YgYWxsIHZpc2libGUKKyAgICAgICAgY29udGVudCwgZXhjbHVkaW5n
IG5vZGVzIGNhcHR1cmVkIGluIHRoZSBjdXJyZW50IHNlbGVjdGlvbi4gVGhpcyBjb21lcyBpbiB0
aGUgZm9ybSBvZiB0aGUgbmV3CisgICAgICAgIFRleHRJbmRpY2F0b3JPcHRpb25JbmNsdWRlU25h
cHNob3RXaXRob3V0U2VsZWN0aW9uIGZsYWcgLS0gc2VlIHBlci1tZXRob2QgY2hhbmdlcyBmb3Ig
bW9yZSBkZXRhaWxzLgorCisgICAgICAgIE5vIG5ldyB0ZXN0cywgc2luY2UgdGhlcmUgaXMgbm8g
Y2hhbmdlIGluIGJlaGF2aW9yIHlldC4KKworICAgICAgICAqIHBhZ2UvRnJhbWVTbmFwc2hvdHRp
bmcuY3BwOgorICAgICAgICAoV2ViQ29yZTo6c25hcHNob3RGcmFtZVJlY3RXaXRoQ2xpcCk6Cisg
ICAgICAgICogcGFnZS9GcmFtZVNuYXBzaG90dGluZy5oOgorCisgICAgICAgIEludHJvZHVjZSBh
IG5ldyBzbmFwc2hvdCBvcHRpb24gZmxhZywgU25hcHNob3RPcHRpb25zUGFpbnRFdmVyeXRoaW5n
RXhjbHVkaW5nU2VsZWN0aW9uLgorCisgICAgICAgIChXZWJDb3JlOjpzbmFwc2hvdEZyYW1lUmVj
dFdpdGhDbGlwKToKKyAgICAgICAgKiBwYWdlL1RleHRJbmRpY2F0b3IuY3BwOgorCisgICAgICAg
IElmIFRleHRJbmRpY2F0b3JPcHRpb25JbmNsdWRlU25hcHNob3RXaXRob3V0U2VsZWN0aW9uIGlz
IHR1cm5lZCBvbiwgY2FwdHVyZSBhbmQgaW5jbHVkZSBhIHNuYXBzaG90IG9mIHRoZQorICAgICAg
ICB2aXNpYmxlIGJvdW5kcyBvZiB0aGUgZnJhbWUuCisKKyAgICAgICAgKFdlYkNvcmU6OnRha2VT
bmFwc2hvdCk6CisgICAgICAgIChXZWJDb3JlOjp0YWtlU25hcHNob3RzKToKKyAgICAgICAgKFdl
YkNvcmU6OmluaXRpYWxpemVJbmRpY2F0b3IpOgorICAgICAgICAqIHBhZ2UvVGV4dEluZGljYXRv
ci5oOgorCisgICAgICAgIEludHJvZHVjZSBUZXh0SW5kaWNhdG9yT3B0aW9uSW5jbHVkZVNuYXBz
aG90V2l0aG91dFNlbGVjdGlvbi4KKworICAgICAgICAqIHJlbmRlcmluZy9JbmxpbmVUZXh0Qm94
LmNwcDoKKworICAgICAgICBUZWFjaCBJbmxpbmVUZXh0Qm94IHRvIHJlc3BlY3QgUGFpbnRCZWhh
dmlvckV4Y2x1ZGVTZWxlY3Rpb24uIFdoZW4gcGFpbnRpbmcgdGV4dCwgaWYgdGhpcyBwYWludCBi
ZWhhdmlvciBpcworICAgICAgICB1c2VkLCB3ZSB3aWxsIG5vdCBwYWludCB0aGUgcG9ydGlvbiBv
ZiB0aGUgdGV4dCBydW4gdGhhdCBsaWVzIGluc2lkZSB0aGUgcmFuZ2UgZGV0ZXJtaW5lZCBieSBz
ZWxlY3Rpb25TdGFydEVuZCgpLgorICAgICAgICBTaW1pbGFybHksIHdoZW4gcGFpbnRpbmcgdGV4
dCBkZWNvcmF0aW9ucywgd2UgZXhjbHVkZSB0aGUgcmVjdCBzdXJyb3VuZGluZyB0aGUgc2VsZWN0
ZWQgY29udGVudC4KKworICAgICAgICAoV2ViQ29yZTo6SW5saW5lVGV4dEJveDo6cGFpbnQpOgor
ICAgICAgICAoV2ViQ29yZTo6SW5saW5lVGV4dEJveDo6cGFpbnREZWNvcmF0aW9uKToKKyAgICAg
ICAgKiByZW5kZXJpbmcvSW5saW5lVGV4dEJveC5oOgorICAgICAgICAqIHJlbmRlcmluZy9QYWlu
dFBoYXNlLmg6CisKKyAgICAgICAgSW50cm9kdWNlIFBhaW50QmVoYXZpb3JFeGNsdWRlU2VsZWN0
aW9uLCB1c2VkIHRvIGluZm9ybSBtZW1iZXJzIG9mIHRoZSByZW5kZXIgdHJlZSBub3QgdG8gcGFp
bnQgcG9ydGlvbnMgdGhhdAorICAgICAgICBsaWUgd2l0aGluIHRoZSBjdXJyZW50IHNlbGVjdGlv
biByYW5nZS4KKworICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJMYXllci5jcHA6CisKKyAgICAg
ICAgUHJvcGFnYXRlIHRoZSBQYWludEJlaGF2aW9yRXhjbHVkZVNlbGVjdGlvbiBmbGFnIHRvIGNo
aWxkcmVuIHdoZW4gcGFpbnRpbmcuCisKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxheWVyOjpw
YWludExheWVyQ29udGVudHMpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXI6OnBhaW50
Rm9yZWdyb3VuZEZvckZyYWdtZW50cyk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlclJlcGxh
Y2VkLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclJlcGxhY2VkOjpzaG91bGRQYWludCk6
CisKKyAgICAgICAgVGVhY2ggUmVuZGVyUmVwbGFjZWQgdG8gcmVzcGVjdCBQYWludEJlaGF2aW9y
RXhjbHVkZVNlbGVjdGlvbiBieSBiYWlsaW5nIGZyb20gcGFpbnRpbmcgaWYgaXQgaXMgc2VsZWN0
ZWQgYW5kIHRoZQorICAgICAgICBwYWludCBiZWhhdmlvciBpcyBlbmFibGVkLgorCisgICAgICAg
ICogcmVuZGVyaW5nL1RleHREZWNvcmF0aW9uUGFpbnRlci5oOgorICAgICAgICAqIHJlbmRlcmlu
Zy9UZXh0UGFpbnRTdHlsZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpjb21wdXRlVGV4dFNlbGVj
dGlvblBhaW50U3R5bGUpOgorICAgICAgICAqIHJlbmRlcmluZy9UZXh0UGFpbnRTdHlsZS5oOgor
ICAgICAgICAqIHJlbmRlcmluZy9UZXh0UGFpbnRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpU
ZXh0UGFpbnRlcjo6cGFpbnRUZXh0KToKKyAgICAgICAgKiByZW5kZXJpbmcvVGV4dFBhaW50ZXIu
aDoKKwogMjAxNy0wMy0wMSAgQWxleCBDaHJpc3RlbnNlbiAgPGFjaHJpc3RlbnNlbkB3ZWJraXQu
b3JnPgogCiAgICAgICAgIEFjdHVhbGx5IGZpeCBXaW5kb3dzIGJ1aWxkLgpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdDIvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCmluZGV4
IGQyNWIyMTdmMjcyM2I3NzkwOTE3ZmQ4NWIyMTg3YTgyZDAxOTIzYjcuLmZlMTEwYzBmMGQ3ZWZm
ZjM2MzI2NGNmNDg0NjEwZDU3ZTEzY2UxMWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL0No
YW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxOCBAQAor
MjAxNy0wMy0wNyAgV2Vuc29uIEhzaWVoICA8d2Vuc29uX2hzaWVoQGFwcGxlLmNvbT4KKworICAg
ICAgICBBZGQgVGV4dEluZGljYXRvciBzdXBwb3J0IGZvciBwcm92aWRpbmcgYSBzbmFwc2hvdCBl
eGNsdWRpbmcgc2VsZWN0ZWQgY29udGVudAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MTY5MzA5CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS8zMDg4MzUy
NT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBTZXJp
YWxpemUgdGhlIHNuYXBzaG90IGV4Y2x1ZGluZyB0aGUgc2VsZWN0aW9uIGFuZCB0aGUgc25hcHNo
b3QncyBib3VuZHMgd2hlbiBzZW5kaW5nIFRleHRJbmRpY2F0b3JEYXRhIG92ZXIKKyAgICAgICAg
SVBDIHRvIHRoZSBVSSBwcm9jZXNzLgorCisgICAgICAgICogU2hhcmVkL1dlYkNvcmVBcmd1bWVu
dENvZGVycy5jcHA6CisgICAgICAgIChJUEM6OkFyZ3VtZW50Q29kZXI8VGV4dEluZGljYXRvckRh
dGE+OjplbmNvZGUpOgorICAgICAgICAoSVBDOjpBcmd1bWVudENvZGVyPFRleHRJbmRpY2F0b3JE
YXRhPjo6ZGVjb2RlKToKKwogMjAxNy0wMy0wMSAgV2Vuc29uIEhzaWVoICA8d2Vuc29uX2hzaWVo
QGFwcGxlLmNvbT4KIAogICAgICAgICBSZXBsYWNlIC1bV0tXZWJWaWV3IGFkanVzdGVkRGF0YUlu
dGVyYWN0aW9uSXRlbVByb3ZpZGVyczpdIHdpdGggYSBVSSBkZWxlZ2F0ZSBtZXRob2QKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWVTbmFwc2hvdHRpbmcuY3BwIGIvU291cmNl
L1dlYkNvcmUvcGFnZS9GcmFtZVNuYXBzaG90dGluZy5jcHAKaW5kZXggM2QzNGNkOTI5MWZlODFj
ZWZmMzM1N2EwNGFhZTRlN2NjMWFjNDAwMi4uOTU5YzM2MmE5Y2E2YTM4M2RiZTI3M2UwMzBkZTFk
ZmE4NTQwMTcyYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVNuYXBzaG90
dGluZy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVNuYXBzaG90dGluZy5jcHAK
QEAgLTczLDcgKzczLDcgQEAgc3RkOjp1bmlxdWVfcHRyPEltYWdlQnVmZmVyPiBzbmFwc2hvdEZy
YW1lUmVjdChGcmFtZSYgZnJhbWUsIGNvbnN0IEludFJlY3QmIGltYWcKICAgICByZXR1cm4gc25h
cHNob3RGcmFtZVJlY3RXaXRoQ2xpcChmcmFtZSwgaW1hZ2VSZWN0LCBjbGlwUmVjdHMsIG9wdGlv
bnMpOwogfQogCi1zdGQ6OnVuaXF1ZV9wdHI8SW1hZ2VCdWZmZXI+IHNuYXBzaG90RnJhbWVSZWN0
V2l0aENsaXAoRnJhbWUmIGZyYW1lLCBjb25zdCBJbnRSZWN0JiBpbWFnZVJlY3QsIFZlY3RvcjxG
bG9hdFJlY3Q+JiBjbGlwUmVjdHMsIFNuYXBzaG90T3B0aW9ucyBvcHRpb25zKQorc3RkOjp1bmlx
dWVfcHRyPEltYWdlQnVmZmVyPiBzbmFwc2hvdEZyYW1lUmVjdFdpdGhDbGlwKEZyYW1lJiBmcmFt
ZSwgY29uc3QgSW50UmVjdCYgaW1hZ2VSZWN0LCBjb25zdCBWZWN0b3I8RmxvYXRSZWN0PiYgY2xp
cFJlY3RzLCBTbmFwc2hvdE9wdGlvbnMgb3B0aW9ucykKIHsKICAgICBpZiAoIWZyYW1lLnBhZ2Uo
KSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CkBAIC05Nyw2ICs5Nyw4IEBAIHN0ZDo6dW5pcXVl
X3B0cjxJbWFnZUJ1ZmZlcj4gc25hcHNob3RGcmFtZVJlY3RXaXRoQ2xpcChGcmFtZSYgZnJhbWUs
IGNvbnN0IEludFJlCiAgICAgICAgIHBhaW50QmVoYXZpb3IgfD0gUGFpbnRCZWhhdmlvclNlbGVj
dGlvbk9ubHk7CiAgICAgaWYgKG9wdGlvbnMgJiBTbmFwc2hvdE9wdGlvbnNQYWludFNlbGVjdGlv
bkFuZEJhY2tncm91bmRzT25seSkKICAgICAgICAgcGFpbnRCZWhhdmlvciB8PSBQYWludEJlaGF2
aW9yU2VsZWN0aW9uQW5kQmFja2dyb3VuZHNPbmx5OworICAgIGlmIChvcHRpb25zICYgU25hcHNo
b3RPcHRpb25zUGFpbnRFdmVyeXRoaW5nRXhjbHVkaW5nU2VsZWN0aW9uKQorICAgICAgICBwYWlu
dEJlaGF2aW9yIHw9IFBhaW50QmVoYXZpb3JFeGNsdWRlU2VsZWN0aW9uOwogCiAgICAgLy8gT3Ro
ZXIgcGFpbnQgYmVoYXZpb3JzIGFyZSBzZXQgYnkgcGFpbnRDb250ZW50c0ZvclNuYXBzaG90Lgog
ICAgIGZyYW1lLnZpZXcoKS0+c2V0UGFpbnRCZWhhdmlvcihwYWludEJlaGF2aW9yKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWVTbmFwc2hvdHRpbmcuaCBiL1NvdXJjZS9X
ZWJDb3JlL3BhZ2UvRnJhbWVTbmFwc2hvdHRpbmcuaAppbmRleCBkYzYzNTY4ODZlNDQ1ZjdkY2Nk
Y2VjYjU0MzBjOTJjZGJiYjE1OGJhLi5mYjNkZDAzZjkzMjc2OTJlYmI0ZThkZTg3NGE2MDZhN2Rh
NzM4MzZkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lU25hcHNob3R0aW5n
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVNuYXBzaG90dGluZy5oCkBAIC00Nywx
MSArNDcsMTIgQEAgZW51bSB7CiAgICAgU25hcHNob3RPcHRpb25zSW5WaWV3Q29vcmRpbmF0ZXMg
PSAxIDw8IDIsCiAgICAgU25hcHNob3RPcHRpb25zRm9yY2VCbGFja1RleHQgPSAxIDw8IDMsCiAg
ICAgU25hcHNob3RPcHRpb25zUGFpbnRTZWxlY3Rpb25BbmRCYWNrZ3JvdW5kc09ubHkgPSAxIDw8
IDQsCisgICAgU25hcHNob3RPcHRpb25zUGFpbnRFdmVyeXRoaW5nRXhjbHVkaW5nU2VsZWN0aW9u
ID0gMSA8PCA1CiB9OwogdHlwZWRlZiB1bnNpZ25lZCBTbmFwc2hvdE9wdGlvbnM7CiAKIFdFQkNP
UkVfRVhQT1JUIHN0ZDo6dW5pcXVlX3B0cjxJbWFnZUJ1ZmZlcj4gc25hcHNob3RGcmFtZVJlY3Qo
RnJhbWUmLCBjb25zdCBJbnRSZWN0JiwgU25hcHNob3RPcHRpb25zID0gU25hcHNob3RPcHRpb25z
Tm9uZSk7Ci1zdGQ6OnVuaXF1ZV9wdHI8SW1hZ2VCdWZmZXI+IHNuYXBzaG90RnJhbWVSZWN0V2l0
aENsaXAoRnJhbWUmLCBjb25zdCBJbnRSZWN0JiwgVmVjdG9yPEZsb2F0UmVjdD4mIGNsaXBSZWN0
cywgU25hcHNob3RPcHRpb25zID0gU25hcHNob3RPcHRpb25zTm9uZSk7CitzdGQ6OnVuaXF1ZV9w
dHI8SW1hZ2VCdWZmZXI+IHNuYXBzaG90RnJhbWVSZWN0V2l0aENsaXAoRnJhbWUmLCBjb25zdCBJ
bnRSZWN0JiwgY29uc3QgVmVjdG9yPEZsb2F0UmVjdD4mIGNsaXBSZWN0cyA9IHsgfSwgU25hcHNo
b3RPcHRpb25zID0gU25hcHNob3RPcHRpb25zTm9uZSk7CiBzdGQ6OnVuaXF1ZV9wdHI8SW1hZ2VC
dWZmZXI+IHNuYXBzaG90Tm9kZShGcmFtZSYsIE5vZGUmKTsKIFdFQkNPUkVfRVhQT1JUIHN0ZDo6
dW5pcXVlX3B0cjxJbWFnZUJ1ZmZlcj4gc25hcHNob3RTZWxlY3Rpb24oRnJhbWUmLCBTbmFwc2hv
dE9wdGlvbnMgPSBTbmFwc2hvdE9wdGlvbnNOb25lKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGFnZS9UZXh0SW5kaWNhdG9yLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvVGV4dElu
ZGljYXRvci5jcHAKaW5kZXggZWE5MGJmNzRiOWNhNzZlZmFkYjNhZTQ0Mzg3N2FjNjIwOWJmMmVk
Yi4uZDkzNWRmZGU1Njk0OWU5OWI0YTFjNTRkMTU3MGJhNWFiMmViYjA5OSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGFnZS9UZXh0SW5kaWNhdG9yLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL1RleHRJbmRpY2F0b3IuY3BwCkBAIC0xNTAsNyArMTUwLDcgQEAgc3RhdGljIFNuYXBz
aG90T3B0aW9ucyBzbmFwc2hvdE9wdGlvbnNGb3JUZXh0SW5kaWNhdG9yT3B0aW9ucyhUZXh0SW5k
aWNhdG9yT3B0aW8KICAgICByZXR1cm4gc25hcHNob3RPcHRpb25zOwogfQogCi1zdGF0aWMgUmVm
UHRyPEltYWdlPiB0YWtlU25hcHNob3QoRnJhbWUmIGZyYW1lLCBJbnRSZWN0IHJlY3QsIFNuYXBz
aG90T3B0aW9ucyBvcHRpb25zLCBmbG9hdCYgc2NhbGVGYWN0b3IsIFZlY3RvcjxGbG9hdFJlY3Q+
JiBjbGlwUmVjdHNJbkRvY3VtZW50Q29vcmRpbmF0ZXMpCitzdGF0aWMgUmVmUHRyPEltYWdlPiB0
YWtlU25hcHNob3QoRnJhbWUmIGZyYW1lLCBJbnRSZWN0IHJlY3QsIFNuYXBzaG90T3B0aW9ucyBv
cHRpb25zLCBmbG9hdCYgc2NhbGVGYWN0b3IsIGNvbnN0IFZlY3RvcjxGbG9hdFJlY3Q+JiBjbGlw
UmVjdHNJbkRvY3VtZW50Q29vcmRpbmF0ZXMpCiB7CiAgICAgc3RkOjp1bmlxdWVfcHRyPEltYWdl
QnVmZmVyPiBidWZmZXIgPSBzbmFwc2hvdEZyYW1lUmVjdFdpdGhDbGlwKGZyYW1lLCByZWN0LCBj
bGlwUmVjdHNJbkRvY3VtZW50Q29vcmRpbmF0ZXMsIG9wdGlvbnMpOwogICAgIGlmICghYnVmZmVy
KQpAQCAtMTU5LDcgKzE1OSw3IEBAIHN0YXRpYyBSZWZQdHI8SW1hZ2U+IHRha2VTbmFwc2hvdChG
cmFtZSYgZnJhbWUsIEludFJlY3QgcmVjdCwgU25hcHNob3RPcHRpb25zIG9wCiAgICAgcmV0dXJu
IEltYWdlQnVmZmVyOjpzaW5rSW50b0ltYWdlKFdURk1vdmUoYnVmZmVyKSwgVW5zY2FsZWQpOwog
fQogCi1zdGF0aWMgYm9vbCB0YWtlU25hcHNob3RzKFRleHRJbmRpY2F0b3JEYXRhJiBkYXRhLCBG
cmFtZSYgZnJhbWUsIEludFJlY3Qgc25hcHNob3RSZWN0LCBWZWN0b3I8RmxvYXRSZWN0PiYgY2xp
cFJlY3RzSW5Eb2N1bWVudENvb3JkaW5hdGVzKQorc3RhdGljIGJvb2wgdGFrZVNuYXBzaG90cyhU
ZXh0SW5kaWNhdG9yRGF0YSYgZGF0YSwgRnJhbWUmIGZyYW1lLCBJbnRSZWN0IHNuYXBzaG90UmVj
dCwgY29uc3QgVmVjdG9yPEZsb2F0UmVjdD4mIGNsaXBSZWN0c0luRG9jdW1lbnRDb29yZGluYXRl
cykKIHsKICAgICBTbmFwc2hvdE9wdGlvbnMgc25hcHNob3RPcHRpb25zID0gc25hcHNob3RPcHRp
b25zRm9yVGV4dEluZGljYXRvck9wdGlvbnMoZGF0YS5vcHRpb25zKTsKIApAQCAtMTcyLDYgKzE3
MiwxMyBAQCBzdGF0aWMgYm9vbCB0YWtlU25hcHNob3RzKFRleHRJbmRpY2F0b3JEYXRhJiBkYXRh
LCBGcmFtZSYgZnJhbWUsIEludFJlY3Qgc25hcHNobwogICAgICAgICBkYXRhLmNvbnRlbnRJbWFn
ZVdpdGhIaWdobGlnaHQgPSB0YWtlU25hcHNob3QoZnJhbWUsIHNuYXBzaG90UmVjdCwgU25hcHNo
b3RPcHRpb25zTm9uZSwgc25hcHNob3RTY2FsZUZhY3RvciwgY2xpcFJlY3RzSW5Eb2N1bWVudENv
b3JkaW5hdGVzKTsKICAgICAgICAgQVNTRVJUKCFkYXRhLmNvbnRlbnRJbWFnZVdpdGhIaWdobGln
aHQgfHwgZGF0YS5jb250ZW50SW1hZ2VTY2FsZUZhY3RvciA9PSBzbmFwc2hvdFNjYWxlRmFjdG9y
KTsKICAgICB9CisKKyAgICBpZiAoZGF0YS5vcHRpb25zICYgVGV4dEluZGljYXRvck9wdGlvbklu
Y2x1ZGVTbmFwc2hvdFdpdGhvdXRTZWxlY3Rpb24pIHsKKyAgICAgICAgZmxvYXQgc25hcHNob3RT
Y2FsZUZhY3RvcjsKKyAgICAgICAgYXV0byBzbmFwc2hvdFJlY3QgPSBlbmNsb3NpbmdJbnRSZWN0
KGZyYW1lLnZpZXcoKS0+dmlzdWFsVmlld3BvcnRSZWN0KCkpOworICAgICAgICBkYXRhLmNvbnRl
bnRJbWFnZVdpdGhvdXRTZWxlY3Rpb24gPSB0YWtlU25hcHNob3QoZnJhbWUsIHNuYXBzaG90UmVj
dCwgU25hcHNob3RPcHRpb25zUGFpbnRFdmVyeXRoaW5nRXhjbHVkaW5nU2VsZWN0aW9uLCBzbmFw
c2hvdFNjYWxlRmFjdG9yLCB7IH0pOworICAgICAgICBkYXRhLmNvbnRlbnRJbWFnZVdpdGhvdXRT
ZWxlY3Rpb25SZWN0SW5Sb290Vmlld0Nvb3JkaW5hdGVzID0gZnJhbWUudmlldygpLT5jb250ZW50
c1RvUm9vdFZpZXcoc25hcHNob3RSZWN0KTsKKyAgICB9CiAgICAgCiAgICAgcmV0dXJuIHRydWU7
CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1RleHRJbmRpY2F0b3IuaCBiL1Nv
dXJjZS9XZWJDb3JlL3BhZ2UvVGV4dEluZGljYXRvci5oCmluZGV4IGRmYTQyYzdkYzQyMmVlYmJj
NTBlNTU4M2E1MGFjMGYyMzVmZmE4NWQuLjFiYzc5ZTM0MDI3Y2ZiMjIyMmMyNDUwYjY4M2JkZTc3
NjBmYjhmZDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvVGV4dEluZGljYXRvci5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvVGV4dEluZGljYXRvci5oCkBAIC00OSw3ICs0OSw3
IEBAIGVudW0gY2xhc3MgVGV4dEluZGljYXRvclByZXNlbnRhdGlvblRyYW5zaXRpb24gewogfTsK
IAogLy8gTWFrZSBzdXJlIHRvIGtlZXAgdGhlc2UgaW4gc3luYyB3aXRoIHRoZSBvbmVzIGluIElu
dGVybmFscy5pZGwuCi1lbnVtIFRleHRJbmRpY2F0b3JPcHRpb24gOiB1aW50OF90IHsKK2VudW0g
VGV4dEluZGljYXRvck9wdGlvbiA6IHVpbnQxNl90IHsKICAgICBUZXh0SW5kaWNhdG9yT3B0aW9u
RGVmYXVsdCA9IDAsCiAKICAgICAvLyBVc2UgdGhlIHN0eWxlZCB0ZXh0IGNvbG9yIGluc3RlYWQg
b2YgZm9yY2luZyBibGFjayB0ZXh0ICh0aGUgZGVmYXVsdCkKQEAgLTgwLDE1ICs4MCwyMCBAQCBl
bnVtIFRleHRJbmRpY2F0b3JPcHRpb24gOiB1aW50OF90IHsKICAgICAvLyBCeSBkZWZhdWx0LCBU
ZXh0SW5kaWNhdG9yIGNsaXBzIHRoZSBpbmRpY2F0ZWQgcmVjdHMgdG8gdGhlIHZpc2libGUgY29u
dGVudCByZWN0LgogICAgIC8vIElmIHRoaXMgb3B0aW9uIGlzIHNldCwgZG8gbm90IGNsaXAgdGhl
IGluZGljYXRlZCByZWN0cy4KICAgICBUZXh0SW5kaWNhdG9yT3B0aW9uRG9Ob3RDbGlwVG9WaXNp
YmxlUmVjdCA9IDEgPDwgNywKKworICAgIC8vIEluY2x1ZGUgYW4gYWRkaXRpb25hbCBzbmFwc2hv
dCBvZiBldmVyeXRoaW5nIGluIHZpZXcsIHdpdGggdGhlIGV4Y2VwdGlvbiBvZiBub2RlcyB3aXRo
aW4gdGhlIGN1cnJlbnRseSBzZWxlY3RlZCByYW5nZS4KKyAgICBUZXh0SW5kaWNhdG9yT3B0aW9u
SW5jbHVkZVNuYXBzaG90V2l0aG91dFNlbGVjdGlvbiA9IDEgPDwgOCwKIH07Ci10eXBlZGVmIHVp
bnQ4X3QgVGV4dEluZGljYXRvck9wdGlvbnM7Cit0eXBlZGVmIHVpbnQxNl90IFRleHRJbmRpY2F0
b3JPcHRpb25zOwogCiBzdHJ1Y3QgVGV4dEluZGljYXRvckRhdGEgewogICAgIEZsb2F0UmVjdCBz
ZWxlY3Rpb25SZWN0SW5Sb290Vmlld0Nvb3JkaW5hdGVzOwogICAgIEZsb2F0UmVjdCB0ZXh0Qm91
bmRpbmdSZWN0SW5Sb290Vmlld0Nvb3JkaW5hdGVzOworICAgIEZsb2F0UmVjdCBjb250ZW50SW1h
Z2VXaXRob3V0U2VsZWN0aW9uUmVjdEluUm9vdFZpZXdDb29yZGluYXRlczsKICAgICBWZWN0b3I8
RmxvYXRSZWN0PiB0ZXh0UmVjdHNJbkJvdW5kaW5nUmVjdENvb3JkaW5hdGVzOwogICAgIGZsb2F0
IGNvbnRlbnRJbWFnZVNjYWxlRmFjdG9yOwogICAgIFJlZlB0cjxJbWFnZT4gY29udGVudEltYWdl
V2l0aEhpZ2hsaWdodDsKKyAgICBSZWZQdHI8SW1hZ2U+IGNvbnRlbnRJbWFnZVdpdGhvdXRTZWxl
Y3Rpb247CiAgICAgUmVmUHRyPEltYWdlPiBjb250ZW50SW1hZ2U7CiAgICAgVGV4dEluZGljYXRv
clByZXNlbnRhdGlvblRyYW5zaXRpb24gcHJlc2VudGF0aW9uVHJhbnNpdGlvbjsKICAgICBUZXh0
SW5kaWNhdG9yT3B0aW9ucyBvcHRpb25zOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL0lubGluZVRleHRCb3guY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0lubGlu
ZVRleHRCb3guY3BwCmluZGV4IGY2ZjI0OGFmMzNhMjE2NDcyYWRjMzU0ZTAxOGE0ZGRkMDBiOGM3
MWEuLmVhZGZiYTNmZjgxY2YxMTM3YTk5NDI5MGRiMzE1MzBkYzZhOGY4NGUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9JbmxpbmVUZXh0Qm94LmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvSW5saW5lVGV4dEJveC5jcHAKQEAgLTQ3NCwxMCArNDc0LDExIEBA
IHZvaWQgSW5saW5lVGV4dEJveDo6cGFpbnQoUGFpbnRJbmZvJiBwYWludEluZm8sIGNvbnN0IExh
eW91dFBvaW50JiBwYWludE9mZnNldCwKIAogICAgIGJvb2wgcGFpbnRTZWxlY3RlZFRleHRPbmx5
ID0gZmFsc2U7CiAgICAgYm9vbCBwYWludFNlbGVjdGVkVGV4dFNlcGFyYXRlbHkgPSBmYWxzZTsK
KyAgICBib29sIHBhaW50Tm9uU2VsZWN0ZWRUZXh0T25seSA9IGZhbHNlOwogICAgIGNvbnN0IFNo
YWRvd0RhdGEqIHNlbGVjdGlvblNoYWRvdyA9IG51bGxwdHI7CiAgICAgCiAgICAgLy8gVGV4dCB3
aXRoIGN1c3RvbSB1bmRlcmxpbmVzIGRvZXMgbm90IGhhdmUgc2VsZWN0aW9uIGJhY2tncm91bmQg
cGFpbnRlZCwgc28gc2VsZWN0aW9uIHBhaW50IHN0eWxlIGlzIG5vdCBhcHByb3ByaWF0ZSBmb3Ig
aXQuCi0gICAgVGV4dFBhaW50U3R5bGUgc2VsZWN0aW9uUGFpbnRTdHlsZSA9IGhhdmVTZWxlY3Rp
b24gJiYgIXVzZUN1c3RvbVVuZGVybGluZXMgPyBjb21wdXRlVGV4dFNlbGVjdGlvblBhaW50U3R5
bGUodGV4dFBhaW50U3R5bGUsIHJlbmRlcmVyKCksIGxpbmVTdHlsZSwgcGFpbnRJbmZvLCBwYWlu
dFNlbGVjdGVkVGV4dE9ubHksIHBhaW50U2VsZWN0ZWRUZXh0U2VwYXJhdGVseSwgc2VsZWN0aW9u
U2hhZG93KSA6IHRleHRQYWludFN0eWxlOworICAgIFRleHRQYWludFN0eWxlIHNlbGVjdGlvblBh
aW50U3R5bGUgPSBoYXZlU2VsZWN0aW9uICYmICF1c2VDdXN0b21VbmRlcmxpbmVzID8gY29tcHV0
ZVRleHRTZWxlY3Rpb25QYWludFN0eWxlKHRleHRQYWludFN0eWxlLCByZW5kZXJlcigpLCBsaW5l
U3R5bGUsIHBhaW50SW5mbywgcGFpbnRTZWxlY3RlZFRleHRPbmx5LCBwYWludFNlbGVjdGVkVGV4
dFNlcGFyYXRlbHksIHBhaW50Tm9uU2VsZWN0ZWRUZXh0T25seSwgc2VsZWN0aW9uU2hhZG93KSA6
IHRleHRQYWludFN0eWxlOwogCiAgICAgLy8gU2V0IG91ciBmb250LgogICAgIGNvbnN0IEZvbnRD
YXNjYWRlJiBmb250ID0gZm9udFRvVXNlKGxpbmVTdHlsZSwgcmVuZGVyZXIoKSk7CkBAIC01NTEs
MTIgKzU1MiwyMSBAQCB2b2lkIElubGluZVRleHRCb3g6OnBhaW50KFBhaW50SW5mbyYgcGFpbnRJ
bmZvLCBjb25zdCBMYXlvdXRQb2ludCYgcGFpbnRPZmZzZXQsCiAgICAgdGV4dFBhaW50ZXIuYWRk
VGV4dFNoYWRvdyh0ZXh0U2hhZG93LCBzZWxlY3Rpb25TaGFkb3cpOwogICAgIHRleHRQYWludGVy
LmFkZEVtcGhhc2lzKGVtcGhhc2lzTWFyaywgZW1waGFzaXNNYXJrT2Zmc2V0LCBjb21iaW5lZFRl
eHQpOwogCi0gICAgdGV4dFBhaW50ZXIucGFpbnRUZXh0KHRleHRSdW4sIGxlbmd0aCwgYm94UmVj
dCwgdGV4dE9yaWdpbiwgc2VsZWN0aW9uU3RhcnQsIHNlbGVjdGlvbkVuZCwgcGFpbnRTZWxlY3Rl
ZFRleHRPbmx5LCBwYWludFNlbGVjdGVkVGV4dFNlcGFyYXRlbHkpOworICAgIHRleHRQYWludGVy
LnBhaW50VGV4dCh0ZXh0UnVuLCBsZW5ndGgsIGJveFJlY3QsIHRleHRPcmlnaW4sIHNlbGVjdGlv
blN0YXJ0LCBzZWxlY3Rpb25FbmQsIHBhaW50U2VsZWN0ZWRUZXh0T25seSwgcGFpbnRTZWxlY3Rl
ZFRleHRTZXBhcmF0ZWx5LCBwYWludE5vblNlbGVjdGVkVGV4dE9ubHkpOwogCiAgICAgLy8gUGFp
bnQgZGVjb3JhdGlvbnMKICAgICBUZXh0RGVjb3JhdGlvbiB0ZXh0RGVjb3JhdGlvbnMgPSBsaW5l
U3R5bGUudGV4dERlY29yYXRpb25zSW5FZmZlY3QoKTsKLSAgICBpZiAodGV4dERlY29yYXRpb25z
ICE9IFRleHREZWNvcmF0aW9uTm9uZSAmJiBwYWludEluZm8ucGhhc2UgIT0gUGFpbnRQaGFzZVNl
bGVjdGlvbikKLSAgICAgICAgcGFpbnREZWNvcmF0aW9uKGNvbnRleHQsIGZvbnQsIGNvbWJpbmVk
VGV4dCwgdGV4dFJ1biwgdGV4dE9yaWdpbiwgYm94UmVjdCwgdGV4dERlY29yYXRpb25zLCB0ZXh0
UGFpbnRTdHlsZSwgdGV4dFNoYWRvdyk7CisgICAgaWYgKHRleHREZWNvcmF0aW9ucyAhPSBUZXh0
RGVjb3JhdGlvbk5vbmUgJiYgcGFpbnRJbmZvLnBoYXNlICE9IFBhaW50UGhhc2VTZWxlY3Rpb24p
IHsKKyAgICAgICAgRmxvYXRSZWN0IHRleHREZWNvcmF0aW9uU2VsZWN0aW9uQ2xpcE91dFJlY3Q7
CisgICAgICAgIGlmICgocGFpbnRJbmZvLnBhaW50QmVoYXZpb3IgJiBQYWludEJlaGF2aW9yRXhj
bHVkZVNlbGVjdGlvbikgJiYgc2VsZWN0aW9uU3RhcnQgPCBzZWxlY3Rpb25FbmQgJiYgc2VsZWN0
aW9uRW5kIDw9IGxlbmd0aCkgeworICAgICAgICAgICAgdGV4dERlY29yYXRpb25TZWxlY3Rpb25D
bGlwT3V0UmVjdCA9IGJveFJlY3Q7CisgICAgICAgICAgICBhdXRvIHNlbGVjdGlvbk9mZnNldCA9
IHNlbGVjdGlvblN0YXJ0ID4gMCA/IGZvbnQud2lkdGgodGV4dFJ1bi5zdWJSdW4oMCwgc2VsZWN0
aW9uU3RhcnQpKSA6IDA7CisgICAgICAgICAgICBhdXRvIHNlbGVjdGlvbldpZHRoID0gc2VsZWN0
aW9uRW5kID4gc2VsZWN0aW9uU3RhcnQgPyBmb250LndpZHRoKHRleHRSdW4uc3ViUnVuKHNlbGVj
dGlvblN0YXJ0LCBzZWxlY3Rpb25FbmQgLSBzZWxlY3Rpb25TdGFydCkpIDogMDsKKyAgICAgICAg
ICAgIHRleHREZWNvcmF0aW9uU2VsZWN0aW9uQ2xpcE91dFJlY3QubW92ZShzZWxlY3Rpb25PZmZz
ZXQsIDApOworICAgICAgICAgICAgdGV4dERlY29yYXRpb25TZWxlY3Rpb25DbGlwT3V0UmVjdC5z
ZXRXaWR0aChzZWxlY3Rpb25XaWR0aCk7CisgICAgICAgIH0KKyAgICAgICAgcGFpbnREZWNvcmF0
aW9uKGNvbnRleHQsIGZvbnQsIGNvbWJpbmVkVGV4dCwgdGV4dFJ1biwgdGV4dE9yaWdpbiwgYm94
UmVjdCwgdGV4dERlY29yYXRpb25zLCB0ZXh0UGFpbnRTdHlsZSwgdGV4dFNoYWRvdywgdGV4dERl
Y29yYXRpb25TZWxlY3Rpb25DbGlwT3V0UmVjdCk7CisgICAgfQogCiAgICAgaWYgKHBhaW50SW5m
by5waGFzZSA9PSBQYWludFBoYXNlRm9yZWdyb3VuZCkgewogICAgICAgICBwYWludERvY3VtZW50
TWFya2Vycyhjb250ZXh0LCBib3hPcmlnaW4sIGxpbmVTdHlsZSwgZm9udCwgZmFsc2UpOwpAQCAt
Njk1LDcgKzcwNSw3IEBAIHN0YXRpYyBpbmxpbmUgdm9pZCBtaXJyb3JSVExTZWdtZW50KGZsb2F0
IGxvZ2ljYWxXaWR0aCwgVGV4dERpcmVjdGlvbiBkaXJlY3Rpb24sCiB9CiAKIHZvaWQgSW5saW5l
VGV4dEJveDo6cGFpbnREZWNvcmF0aW9uKEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3Qg
Rm9udENhc2NhZGUmIGZvbnQsIFJlbmRlckNvbWJpbmVUZXh0KiBjb21iaW5lZFRleHQsIGNvbnN0
IFRleHRSdW4mIHRleHRSdW4sIGNvbnN0IEZsb2F0UG9pbnQmIHRleHRPcmlnaW4sCi0gICAgY29u
c3QgRmxvYXRSZWN0JiBib3hSZWN0LCBUZXh0RGVjb3JhdGlvbiBkZWNvcmF0aW9uLCBUZXh0UGFp
bnRTdHlsZSB0ZXh0UGFpbnRTdHlsZSwgY29uc3QgU2hhZG93RGF0YSogc2hhZG93KQorICAgIGNv
bnN0IEZsb2F0UmVjdCYgYm94UmVjdCwgVGV4dERlY29yYXRpb24gZGVjb3JhdGlvbiwgVGV4dFBh
aW50U3R5bGUgdGV4dFBhaW50U3R5bGUsIGNvbnN0IFNoYWRvd0RhdGEqIHNoYWRvdywgY29uc3Qg
RmxvYXRSZWN0JiBjbGlwT3V0UmVjdCkKIHsKICAgICBpZiAobV90cnVuY2F0aW9uID09IGNGdWxs
VHJ1bmNhdGlvbikKICAgICAgICAgcmV0dXJuOwpAQCAtNzIxLDggKzczMSwxNyBAQCB2b2lkIElu
bGluZVRleHRCb3g6OnBhaW50RGVjb3JhdGlvbihHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNv
bnN0IEZvbnRDYXNjYWRlJgogCiAgICAgRmxvYXRQb2ludCBsb2NhbE9yaWdpbiA9IGJveFJlY3Qu
bG9jYXRpb24oKTsKICAgICBsb2NhbE9yaWdpbi5tb3ZlKHN0YXJ0LCAwKTsKKworICAgIGlmICgh
Y2xpcE91dFJlY3QuaXNFbXB0eSgpKSB7CisgICAgICAgIGNvbnRleHQuc2F2ZSgpOworICAgICAg
ICBjb250ZXh0LmNsaXBPdXQoY2xpcE91dFJlY3QpOworICAgIH0KKwogICAgIGRlY29yYXRpb25Q
YWludGVyLnBhaW50VGV4dERlY29yYXRpb24odGV4dFJ1biwgdGV4dE9yaWdpbiwgbG9jYWxPcmln
aW4pOwogCisgICAgaWYgKCFjbGlwT3V0UmVjdC5pc0VtcHR5KCkpCisgICAgICAgIGNvbnRleHQu
cmVzdG9yZSgpOworCiAgICAgaWYgKGNvbWJpbmVkVGV4dCkKICAgICAgICAgY29udGV4dC5jb25j
YXRDVE0ocm90YXRpb24oYm94UmVjdCwgQ291bnRlcmNsb2Nrd2lzZSkpOwogfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0lubGluZVRleHRCb3guaCBiL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9JbmxpbmVUZXh0Qm94LmgKaW5kZXggOWM0NjE4YTE2NzQ4ZjE0ZDI4NWVj
ZDcxNWNmNWFmODBlYzY0ZjJiNC4uNGYxOWM5ZGRkOGU5MTcyZDc0ZGFmYjc1NTkyZmM5MWIxMDBl
ZWY2ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0lubGluZVRleHRCb3gu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvSW5saW5lVGV4dEJveC5oCkBAIC0xNTks
NyArMTU5LDcgQEAgcHJvdGVjdGVkOgogCiBwcml2YXRlOgogICAgIHZvaWQgcGFpbnREZWNvcmF0
aW9uKEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IEZvbnRDYXNjYWRlJiwgUmVuZGVyQ29tYmluZVRl
eHQqLCBjb25zdCBUZXh0UnVuJiwgY29uc3QgRmxvYXRQb2ludCYgdGV4dE9yaWdpbiwgY29uc3Qg
RmxvYXRSZWN0JiBib3hSZWN0LAotICAgICAgICBUZXh0RGVjb3JhdGlvbiwgVGV4dFBhaW50U3R5
bGUsIGNvbnN0IFNoYWRvd0RhdGEqKTsKKyAgICAgICAgVGV4dERlY29yYXRpb24sIFRleHRQYWlu
dFN0eWxlLCBjb25zdCBTaGFkb3dEYXRhKiwgY29uc3QgRmxvYXRSZWN0JiBjbGlwT3V0UmVjdCk7
CiAgICAgdm9pZCBwYWludFNlbGVjdGlvbihHcmFwaGljc0NvbnRleHQmLCBjb25zdCBGbG9hdFBv
aW50JiBib3hPcmlnaW4sIGNvbnN0IFJlbmRlclN0eWxlJiwgY29uc3QgRm9udENhc2NhZGUmLCBj
b25zdCBDb2xvciYgdGV4dENvbG9yKTsKICAgICB2b2lkIHBhaW50RG9jdW1lbnRNYXJrZXIoR3Jh
cGhpY3NDb250ZXh0JiwgY29uc3QgRmxvYXRQb2ludCYgYm94T3JpZ2luLCBSZW5kZXJlZERvY3Vt
ZW50TWFya2VyJiwgY29uc3QgUmVuZGVyU3R5bGUmLCBjb25zdCBGb250Q2FzY2FkZSYsIGJvb2wg
Z3JhbW1hcik7CiAgICAgdm9pZCBwYWludFRleHRNYXRjaE1hcmtlcihHcmFwaGljc0NvbnRleHQm
LCBjb25zdCBGbG9hdFBvaW50JiBib3hPcmlnaW4sIFJlbmRlcmVkRG9jdW1lbnRNYXJrZXImLCBj
b25zdCBSZW5kZXJTdHlsZSYsIGNvbnN0IEZvbnRDYXNjYWRlJik7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUGFpbnRQaGFzZS5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1BhaW50UGhhc2UuaAppbmRleCA0OWZiN2RmZjhhNzc3NjAyNzhjODM3MzFlYzE2NzBmMDg1
ZjViZDI3Li5mMTY3ZTg3YThlMDIyMTIyY2RmZjA0ZDZiNjY4YTdjOWMyMDlkMzE2IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUGFpbnRQaGFzZS5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9QYWludFBoYXNlLmgKQEAgLTYzLDYgKzYzLDcgQEAgZW51bSBQYWlu
dEJlaGF2aW9yRmxhZ3MgewogICAgIFBhaW50QmVoYXZpb3JTa2lwUm9vdEJhY2tncm91bmQgICAg
ICAgICAgPSAxIDw8IDYsCiAgICAgUGFpbnRCZWhhdmlvclJvb3RCYWNrZ3JvdW5kT25seSAgICAg
ICAgICA9IDEgPDwgNywKICAgICBQYWludEJlaGF2aW9yU2VsZWN0aW9uQW5kQmFja2dyb3VuZHNP
bmx5ID0gMSA8PCA4LAorICAgIFBhaW50QmVoYXZpb3JFeGNsdWRlU2VsZWN0aW9uICAgICAgICAg
ICAgPSAxIDw8IDksCiB9OwogCiB0eXBlZGVmIHVuc2lnbmVkIFBhaW50QmVoYXZpb3I7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXIuY3BwIGIvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyLmNwcAppbmRleCBlZTg0MmM0ZDJjNWRjNzUw
MzI3OWJkOTg0YTRlZTRiYTg0ZmIxMDM2Li42OTdkODQ5ZjVkMTUzMDA4YjM0YmZjMTUxYjY4ZWJk
YzRhNmFjYjAxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5
ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllci5jcHAKQEAg
LTQzNzQsNiArNDM3NCw5IEBAIHZvaWQgUmVuZGVyTGF5ZXI6OnBhaW50TGF5ZXJDb250ZW50cyhH
cmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IExheWVyUGFpbnRpCiAgICAgICAgIGVsc2Ug
aWYgKGxvY2FsUGFpbnRGbGFncyAmIFBhaW50TGF5ZXJQYWludGluZ1Jvb3RCYWNrZ3JvdW5kT25s
eSkKICAgICAgICAgICAgIHBhaW50QmVoYXZpb3IgfD0gUGFpbnRCZWhhdmlvclJvb3RCYWNrZ3Jv
dW5kT25seTsKIAorICAgICAgICBpZiAocGFpbnRpbmdJbmZvLnBhaW50QmVoYXZpb3IgJiBQYWlu
dEJlaGF2aW9yRXhjbHVkZVNlbGVjdGlvbikKKyAgICAgICAgICAgIHBhaW50QmVoYXZpb3IgfD0g
UGFpbnRCZWhhdmlvckV4Y2x1ZGVTZWxlY3Rpb247CisKICAgICAgICAgTGF5b3V0UmVjdCBwYWlu
dERpcnR5UmVjdCA9IGxvY2FsUGFpbnRpbmdJbmZvLnBhaW50RGlydHlSZWN0OwogICAgICAgICBp
ZiAoc2hvdWxkUGFpbnRDb250ZW50IHx8IHNob3VsZFBhaW50T3V0bGluZSB8fCBpc1BhaW50aW5n
T3ZlcmxheVNjcm9sbGJhcnMpIHsKICAgICAgICAgICAgIC8vIENvbGxlY3QgdGhlIGZyYWdtZW50
cy4gVGhpcyB3aWxsIGNvbXB1dGUgdGhlIGNsaXAgcmVjdGFuZ2xlcyBhbmQgcGFpbnQgb2Zmc2V0
cyBmb3IgZWFjaCBsYXllciBmcmFnbWVudCwgYXMgd2VsbCBhcyB3aGV0aGVyIG9yIG5vdCB0aGUg
Y29udGVudCBvZiBlYWNoCkBAIC00NzcwLDYgKzQ3NzMsOSBAQCB2b2lkIFJlbmRlckxheWVyOjpw
YWludEZvcmVncm91bmRGb3JGcmFnbWVudHMoY29uc3QgTGF5ZXJGcmFnbWVudHMmIGxheWVyRnJh
Z21lbgogICAgIGVsc2UKICAgICAgICAgbG9jYWxQYWludEJlaGF2aW9yID0gcGFpbnRCZWhhdmlv
cjsKIAorICAgIGlmIChsb2NhbFBhaW50aW5nSW5mby5wYWludEJlaGF2aW9yICYgUGFpbnRCZWhh
dmlvckV4Y2x1ZGVTZWxlY3Rpb24pCisgICAgICAgIGxvY2FsUGFpbnRCZWhhdmlvciB8PSBQYWlu
dEJlaGF2aW9yRXhjbHVkZVNlbGVjdGlvbjsKKwogICAgIC8vIE9wdGltaXplIGNsaXBwaW5nIGZv
ciB0aGUgc2luZ2xlIGZyYWdtZW50IGNhc2UuCiAgICAgYm9vbCBzaG91bGRDbGlwID0gbG9jYWxQ
YWludGluZ0luZm8uY2xpcFRvRGlydHlSZWN0ICYmIGxheWVyRnJhZ21lbnRzLnNpemUoKSA9PSAx
ICYmIGxheWVyRnJhZ21lbnRzWzBdLnNob3VsZFBhaW50Q29udGVudCAmJiAhbGF5ZXJGcmFnbWVu
dHNbMF0uZm9yZWdyb3VuZFJlY3QuaXNFbXB0eSgpOwogICAgIENsaXBSZWN0IGNsaXBwZWRSZWN0
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclJlcGxhY2VkLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJSZXBsYWNlZC5jcHAKaW5kZXggNjgz
ZTAwZmIyNDliYmZjODQ2ODM2ZTA4ZDQ2YWE4YWY4ZGE5NjE1Yy4uZjlhMjBlOTkxNjliZWRiOThl
ZmJhOTI0MGVkNjJlZTg5Y2Y4NzVlYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlclJlcGxhY2VkLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyUmVwbGFjZWQuY3BwCkBAIC0yMDUsNiArMjA1LDkgQEAgdm9pZCBSZW5kZXJSZXBsYWNlZDo6
cGFpbnQoUGFpbnRJbmZvJiBwYWludEluZm8sIGNvbnN0IExheW91dFBvaW50JiBwYWludE9mZnNl
dCkKIAogYm9vbCBSZW5kZXJSZXBsYWNlZDo6c2hvdWxkUGFpbnQoUGFpbnRJbmZvJiBwYWludElu
Zm8sIGNvbnN0IExheW91dFBvaW50JiBwYWludE9mZnNldCkKIHsKKyAgICBpZiAoKHBhaW50SW5m
by5wYWludEJlaGF2aW9yICYgUGFpbnRCZWhhdmlvckV4Y2x1ZGVTZWxlY3Rpb24pICYmIGlzU2Vs
ZWN0ZWQoKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCiAgICAgaWYgKHBhaW50SW5mby5waGFz
ZSAhPSBQYWludFBoYXNlRm9yZWdyb3VuZCAmJiBwYWludEluZm8ucGhhc2UgIT0gUGFpbnRQaGFz
ZU91dGxpbmUgJiYgcGFpbnRJbmZvLnBoYXNlICE9IFBhaW50UGhhc2VTZWxmT3V0bGluZSAKICAg
ICAgICAgICAgICYmIHBhaW50SW5mby5waGFzZSAhPSBQYWludFBoYXNlU2VsZWN0aW9uICYmIHBh
aW50SW5mby5waGFzZSAhPSBQYWludFBoYXNlTWFzaykKICAgICAgICAgcmV0dXJuIGZhbHNlOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1RleHREZWNvcmF0aW9uUGFpbnRl
ci5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1RleHREZWNvcmF0aW9uUGFpbnRlci5oCmlu
ZGV4IDRlOTU1ODdiZTc5OWRmMzg4NzgxNjc0MGFkNWNlYzczNzc0NTljZTAuLjZlMmNhOGQ1NDgw
Y2ViN2UzY2NjMGIxZjdiNmNmMTM3Y2M1NzU4N2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9UZXh0RGVjb3JhdGlvblBhaW50ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvVGV4dERlY29yYXRpb25QYWludGVyLmgKQEAgLTI5LDYgKzI5LDcgQEAKIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgRm9udENhc2NhZGU7CitjbGFzcyBGbG9hdFJlY3Q7CiBj
bGFzcyBHcmFwaGljc0NvbnRleHQ7CiBjbGFzcyBJbmxpbmVUZXh0Qm94OwogY2xhc3MgUmVuZGVy
T2JqZWN0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1RleHRQYWludFN0
eWxlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9UZXh0UGFpbnRTdHlsZS5jcHAKaW5k
ZXggNTc1NmRhMGZiNjYyZTEyZjlmMmYxNDU4YWNjYzQxNjZlMGY4N2NlMi4uNDIzNjBkZjM1N2Qx
MzYwYTRhYmZhMGFkYjgxYmRhYmI0MDk1NThmMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1RleHRQYWludFN0eWxlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvVGV4dFBhaW50U3R5bGUuY3BwCkBAIC0xMTYsMTAgKzExNiwxMSBAQCBUZXh0UGFpbnRTdHls
ZSBjb21wdXRlVGV4dFBhaW50U3R5bGUoY29uc3QgRnJhbWUmIGZyYW1lLCBjb25zdCBSZW5kZXJT
dHlsZSYgbGluZQogICAgIHJldHVybiBwYWludFN0eWxlOwogfQogCi1UZXh0UGFpbnRTdHlsZSBj
b21wdXRlVGV4dFNlbGVjdGlvblBhaW50U3R5bGUoY29uc3QgVGV4dFBhaW50U3R5bGUmIHRleHRQ
YWludFN0eWxlLCBjb25zdCBSZW5kZXJUZXh0JiByZW5kZXJlciwgY29uc3QgUmVuZGVyU3R5bGUm
IGxpbmVTdHlsZSwgY29uc3QgUGFpbnRJbmZvJiBwYWludEluZm8sIGJvb2wmIHBhaW50U2VsZWN0
ZWRUZXh0T25seSwgYm9vbCYgcGFpbnRTZWxlY3RlZFRleHRTZXBhcmF0ZWx5LCBjb25zdCBTaGFk
b3dEYXRhKiYgc2VsZWN0aW9uU2hhZG93KQorVGV4dFBhaW50U3R5bGUgY29tcHV0ZVRleHRTZWxl
Y3Rpb25QYWludFN0eWxlKGNvbnN0IFRleHRQYWludFN0eWxlJiB0ZXh0UGFpbnRTdHlsZSwgY29u
c3QgUmVuZGVyVGV4dCYgcmVuZGVyZXIsIGNvbnN0IFJlbmRlclN0eWxlJiBsaW5lU3R5bGUsIGNv
bnN0IFBhaW50SW5mbyYgcGFpbnRJbmZvLCBib29sJiBwYWludFNlbGVjdGVkVGV4dE9ubHksIGJv
b2wmIHBhaW50U2VsZWN0ZWRUZXh0U2VwYXJhdGVseSwgYm9vbCYgcGFpbnROb25TZWxlY3RlZFRl
eHRPbmx5LCBjb25zdCBTaGFkb3dEYXRhKiYgc2VsZWN0aW9uU2hhZG93KQogewogICAgIHBhaW50
U2VsZWN0ZWRUZXh0T25seSA9IChwYWludEluZm8ucGhhc2UgPT0gUGFpbnRQaGFzZVNlbGVjdGlv
bik7Ci0gICAgcGFpbnRTZWxlY3RlZFRleHRTZXBhcmF0ZWx5ID0gZmFsc2U7CisgICAgcGFpbnRT
ZWxlY3RlZFRleHRTZXBhcmF0ZWx5ID0gcGFpbnRJbmZvLnBhaW50QmVoYXZpb3IgJiBQYWludEJl
aGF2aW9yRXhjbHVkZVNlbGVjdGlvbjsKKyAgICBwYWludE5vblNlbGVjdGVkVGV4dE9ubHkgPSBw
YWludEluZm8ucGFpbnRCZWhhdmlvciAmIFBhaW50QmVoYXZpb3JFeGNsdWRlU2VsZWN0aW9uOwog
ICAgIHNlbGVjdGlvblNoYWRvdyA9IChwYWludEluZm8uZm9yY2VUZXh0Q29sb3IoKSkgPyBudWxs
cHRyIDogbGluZVN0eWxlLnRleHRTaGFkb3coKTsKIAogICAgIFRleHRQYWludFN0eWxlIHNlbGVj
dGlvblBhaW50U3R5bGUgPSB0ZXh0UGFpbnRTdHlsZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9UZXh0UGFpbnRTdHlsZS5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1RleHRQYWludFN0eWxlLmgKaW5kZXggM2U4YmUyN2YyNjI3MTcxNjRkMGQ5OGU2MTAzYTlhZDJk
MGZhN2E2NS4uZGYyMTcxYWUyYzk2OTcwMmU2NTk2YmY1OWM2OTI3NzA5NTA4ZWM1YyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1RleHRQYWludFN0eWxlLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1RleHRQYWludFN0eWxlLmgKQEAgLTU1LDcgKzU1LDcgQEAg
c3RydWN0IFRleHRQYWludFN0eWxlIHsKIH07CiAKIFRleHRQYWludFN0eWxlIGNvbXB1dGVUZXh0
UGFpbnRTdHlsZShjb25zdCBGcmFtZSYsIGNvbnN0IFJlbmRlclN0eWxlJiwgY29uc3QgUGFpbnRJ
bmZvJik7Ci1UZXh0UGFpbnRTdHlsZSBjb21wdXRlVGV4dFNlbGVjdGlvblBhaW50U3R5bGUoY29u
c3QgVGV4dFBhaW50U3R5bGUmLCBjb25zdCBSZW5kZXJUZXh0JiwgY29uc3QgUmVuZGVyU3R5bGUm
LCBjb25zdCBQYWludEluZm8mLCBib29sJiBwYWludFNlbGVjdGVkVGV4dE9ubHksIGJvb2wmIHBh
aW50U2VsZWN0ZWRUZXh0U2VwYXJhdGVseSwgY29uc3QgU2hhZG93RGF0YSomIHNlbGVjdGlvblNo
YWRvdyk7CitUZXh0UGFpbnRTdHlsZSBjb21wdXRlVGV4dFNlbGVjdGlvblBhaW50U3R5bGUoY29u
c3QgVGV4dFBhaW50U3R5bGUmLCBjb25zdCBSZW5kZXJUZXh0JiwgY29uc3QgUmVuZGVyU3R5bGUm
LCBjb25zdCBQYWludEluZm8mLCBib29sJiBwYWludFNlbGVjdGVkVGV4dE9ubHksIGJvb2wmIHBh
aW50U2VsZWN0ZWRUZXh0U2VwYXJhdGVseSwgYm9vbCYgcGFpbnROb25TZWxlY3RlZFRleHRPbmx5
LCBjb25zdCBTaGFkb3dEYXRhKiYgc2VsZWN0aW9uU2hhZG93KTsKIAogZW51bSBGaWxsQ29sb3JU
eXBlIHsgVXNlTm9ybWFsRmlsbENvbG9yLCBVc2VFbXBoYXNpc01hcmtDb2xvciB9Owogdm9pZCB1
cGRhdGVHcmFwaGljc0NvbnRleHQoR3JhcGhpY3NDb250ZXh0JiwgY29uc3QgVGV4dFBhaW50U3R5
bGUmLCBGaWxsQ29sb3JUeXBlID0gVXNlTm9ybWFsRmlsbENvbG9yKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9UZXh0UGFpbnRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvVGV4dFBhaW50ZXIuY3BwCmluZGV4IGE4MzVlNjc2OGRiN2IyZmRkODZlN2JjOTVh
ZTc4MjRlNzFjNzczYjEuLmFmZmZmYTRmNmU5NjhiYWFkODEzNWU2MDA0MWEwMTAzMzk2NWUxZWQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9UZXh0UGFpbnRlci5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1RleHRQYWludGVyLmNwcApAQCAtMTcwLDcgKzE3
MCw3IEBAIHZvaWQgVGV4dFBhaW50ZXI6OnBhaW50VGV4dEFuZEVtcGhhc2lzTWFya3NJZk5lZWRl
ZChjb25zdCBUZXh0UnVuJiB0ZXh0UnVuLCBjb25zCiB9CiAgICAgCiB2b2lkIFRleHRQYWludGVy
OjpwYWludFRleHQoY29uc3QgVGV4dFJ1biYgdGV4dFJ1biwgdW5zaWduZWQgbGVuZ3RoLCBjb25z
dCBGbG9hdFJlY3QmIGJveFJlY3QsIGNvbnN0IEZsb2F0UG9pbnQmIHRleHRPcmlnaW4sIHVuc2ln
bmVkIHNlbGVjdGlvblN0YXJ0LCB1bnNpZ25lZCBzZWxlY3Rpb25FbmQsCi0gICAgYm9vbCBwYWlu
dFNlbGVjdGVkVGV4dE9ubHksIGJvb2wgcGFpbnRTZWxlY3RlZFRleHRTZXBhcmF0ZWx5KQorICAg
IGJvb2wgcGFpbnRTZWxlY3RlZFRleHRPbmx5LCBib29sIHBhaW50U2VsZWN0ZWRUZXh0U2VwYXJh
dGVseSwgYm9vbCBwYWludE5vblNlbGVjdGVkVGV4dE9ubHkpCiB7CiAgICAgQVNTRVJUKG1fZm9u
dCk7CiAgICAgaWYgKCFwYWludFNlbGVjdGVkVGV4dE9ubHkpIHsKQEAgLTE4OSw2ICsxODksMTAg
QEAgdm9pZCBUZXh0UGFpbnRlcjo6cGFpbnRUZXh0KGNvbnN0IFRleHRSdW4mIHRleHRSdW4sIHVu
c2lnbmVkIGxlbmd0aCwgY29uc3QgRmxvYXQKICAgICAgICAgICAgICAgICBwYWludFRleHRBbmRF
bXBoYXNpc01hcmtzSWZOZWVkZWQodGV4dFJ1biwgYm94UmVjdCwgdGV4dE9yaWdpbiwgc2VsZWN0
aW9uRW5kLCBsZW5ndGgsIG1fdGV4dFBhaW50U3R5bGUsIG1fdGV4dFNoYWRvdyk7CiAgICAgICAg
IH0KICAgICB9CisKKyAgICBpZiAocGFpbnROb25TZWxlY3RlZFRleHRPbmx5KQorICAgICAgICBy
ZXR1cm47CisKICAgICAvLyBQYWludCBvbmx5IHRoZSB0ZXh0IHRoYXQgaXMgc2VsZWN0ZWQuCiAg
ICAgaWYgKChwYWludFNlbGVjdGVkVGV4dE9ubHkgfHwgcGFpbnRTZWxlY3RlZFRleHRTZXBhcmF0
ZWx5KSAmJiBzZWxlY3Rpb25TdGFydCA8IHNlbGVjdGlvbkVuZCkgewogICAgICAgICBHcmFwaGlj
c0NvbnRleHRTdGF0ZVNhdmVyIHN0YXRlU2F2ZXIobV9jb250ZXh0LCBtX3NlbGVjdGlvblBhaW50
U3R5bGUuc3Ryb2tlV2lkdGggPiAwKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9UZXh0UGFpbnRlci5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1RleHRQYWludGVy
LmgKaW5kZXggNmFjMDQwMTQyODBkNDBhNGMyMTczNmNkZmU0N2M2Zjc4OWY2ODE2Zi4uZDk1MzZj
NzAwZTgzMDJiNGQzMjkzNTg5ZDY5ZDM1YTFlNzE2Mjc0ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1RleHRQYWludGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1RleHRQYWludGVyLmgKQEAgLTU3LDcgKzU3LDcgQEAgcHVibGljOgogICAgIHZvaWQgYWRk
VGV4dFNoYWRvdyhjb25zdCBTaGFkb3dEYXRhKiB0ZXh0U2hhZG93LCBjb25zdCBTaGFkb3dEYXRh
KiBzZWxlY3Rpb25TaGFkb3cpOwogCiAgICAgdm9pZCBwYWludFRleHQoY29uc3QgVGV4dFJ1biYs
IHVuc2lnbmVkIGxlbmd0aCwgY29uc3QgRmxvYXRSZWN0JiBib3hSZWN0LCBjb25zdCBGbG9hdFBv
aW50JiB0ZXh0T3JpZ2luLAotICAgICAgICB1bnNpZ25lZCBzZWxlY3Rpb25TdGFydCA9IDAsIHVu
c2lnbmVkIHNlbGVjdGlvbkVuZCA9IDAsIGJvb2wgcGFpbnRTZWxlY3RlZFRleHRPbmx5ID0gZmFs
c2UsIGJvb2wgcGFpbnRTZWxlY3RlZFRleHRTZXBhcmF0ZWx5ID0gZmFsc2UpOworICAgICAgICB1
bnNpZ25lZCBzZWxlY3Rpb25TdGFydCA9IDAsIHVuc2lnbmVkIHNlbGVjdGlvbkVuZCA9IDAsIGJv
b2wgcGFpbnRTZWxlY3RlZFRleHRPbmx5ID0gZmFsc2UsIGJvb2wgcGFpbnRTZWxlY3RlZFRleHRT
ZXBhcmF0ZWx5ID0gZmFsc2UsIGJvb2wgcGFpbnROb25TZWxlY3RlZFRleHRPbmx5ID0gZmFsc2Up
OwogCiBwcml2YXRlOgogICAgIHZvaWQgZHJhd1RleHRPckVtcGhhc2lzTWFya3MoY29uc3QgRm9u
dENhc2NhZGUmLCBjb25zdCBUZXh0UnVuJiwgY29uc3QgQXRvbWljU3RyaW5nJiBlbXBoYXNpc01h
cmssIGZsb2F0IGVtcGhhc2lzTWFya09mZnNldCwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQy
L1NoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuY3BwIGIvU291cmNlL1dlYktpdDIvU2hhcmVk
L1dlYkNvcmVBcmd1bWVudENvZGVycy5jcHAKaW5kZXggNjE2NmFiNmVhMTUxNjE5Y2Q5N2FmMWI3
M2I2YTQ5NWFlNzA5OGYyYy4uODRjY2Y4ZjQ5YjQ0NGMzNDM5ZmI2NWFhZGUwYjc4ZjY5ZWE4MWZm
YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVy
cy5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5j
cHAKQEAgLTIwODIsMTIgKzIwODIsMTQgQEAgdm9pZCBBcmd1bWVudENvZGVyPFRleHRJbmRpY2F0
b3JEYXRhPjo6ZW5jb2RlKEVuY29kZXImIGVuY29kZXIsIGNvbnN0IFRleHRJbmRpY2EKICAgICBl
bmNvZGVyIDw8IHRleHRJbmRpY2F0b3JEYXRhLnNlbGVjdGlvblJlY3RJblJvb3RWaWV3Q29vcmRp
bmF0ZXM7CiAgICAgZW5jb2RlciA8PCB0ZXh0SW5kaWNhdG9yRGF0YS50ZXh0Qm91bmRpbmdSZWN0
SW5Sb290Vmlld0Nvb3JkaW5hdGVzOwogICAgIGVuY29kZXIgPDwgdGV4dEluZGljYXRvckRhdGEu
dGV4dFJlY3RzSW5Cb3VuZGluZ1JlY3RDb29yZGluYXRlczsKKyAgICBlbmNvZGVyIDw8IHRleHRJ
bmRpY2F0b3JEYXRhLmNvbnRlbnRJbWFnZVdpdGhvdXRTZWxlY3Rpb25SZWN0SW5Sb290Vmlld0Nv
b3JkaW5hdGVzOwogICAgIGVuY29kZXIgPDwgdGV4dEluZGljYXRvckRhdGEuY29udGVudEltYWdl
U2NhbGVGYWN0b3I7CiAgICAgZW5jb2Rlci5lbmNvZGVFbnVtKHRleHRJbmRpY2F0b3JEYXRhLnBy
ZXNlbnRhdGlvblRyYW5zaXRpb24pOwogICAgIGVuY29kZXIgPDwgc3RhdGljX2Nhc3Q8dWludDY0
X3Q+KHRleHRJbmRpY2F0b3JEYXRhLm9wdGlvbnMpOwogCiAgICAgZW5jb2RlT3B0aW9uYWxJbWFn
ZShlbmNvZGVyLCB0ZXh0SW5kaWNhdG9yRGF0YS5jb250ZW50SW1hZ2UuZ2V0KCkpOwogICAgIGVu
Y29kZU9wdGlvbmFsSW1hZ2UoZW5jb2RlciwgdGV4dEluZGljYXRvckRhdGEuY29udGVudEltYWdl
V2l0aEhpZ2hsaWdodC5nZXQoKSk7CisgICAgZW5jb2RlT3B0aW9uYWxJbWFnZShlbmNvZGVyLCB0
ZXh0SW5kaWNhdG9yRGF0YS5jb250ZW50SW1hZ2VXaXRob3V0U2VsZWN0aW9uLmdldCgpKTsKIH0K
IAogYm9vbCBBcmd1bWVudENvZGVyPFRleHRJbmRpY2F0b3JEYXRhPjo6ZGVjb2RlKERlY29kZXIm
IGRlY29kZXIsIFRleHRJbmRpY2F0b3JEYXRhJiB0ZXh0SW5kaWNhdG9yRGF0YSkKQEAgLTIxMDEs
NiArMjEwMyw5IEBAIGJvb2wgQXJndW1lbnRDb2RlcjxUZXh0SW5kaWNhdG9yRGF0YT46OmRlY29k
ZShEZWNvZGVyJiBkZWNvZGVyLCBUZXh0SW5kaWNhdG9yRGF0CiAgICAgaWYgKCFkZWNvZGVyLmRl
Y29kZSh0ZXh0SW5kaWNhdG9yRGF0YS50ZXh0UmVjdHNJbkJvdW5kaW5nUmVjdENvb3JkaW5hdGVz
KSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCisgICAgaWYgKCFkZWNvZGVyLmRlY29kZSh0ZXh0
SW5kaWNhdG9yRGF0YS5jb250ZW50SW1hZ2VXaXRob3V0U2VsZWN0aW9uUmVjdEluUm9vdFZpZXdD
b29yZGluYXRlcykpCisgICAgICAgIHJldHVybiBmYWxzZTsKKwogICAgIGlmICghZGVjb2Rlci5k
ZWNvZGUodGV4dEluZGljYXRvckRhdGEuY29udGVudEltYWdlU2NhbGVGYWN0b3IpKQogICAgICAg
ICByZXR1cm4gZmFsc2U7CiAKQEAgLTIxMTgsNiArMjEyMyw5IEBAIGJvb2wgQXJndW1lbnRDb2Rl
cjxUZXh0SW5kaWNhdG9yRGF0YT46OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyLCBUZXh0SW5kaWNh
dG9yRGF0CiAgICAgaWYgKCFkZWNvZGVPcHRpb25hbEltYWdlKGRlY29kZXIsIHRleHRJbmRpY2F0
b3JEYXRhLmNvbnRlbnRJbWFnZVdpdGhIaWdobGlnaHQpKQogICAgICAgICByZXR1cm4gZmFsc2U7
CiAKKyAgICBpZiAoIWRlY29kZU9wdGlvbmFsSW1hZ2UoZGVjb2RlciwgdGV4dEluZGljYXRvckRh
dGEuY29udGVudEltYWdlV2l0aG91dFNlbGVjdGlvbikpCisgICAgICAgIHJldHVybiBmYWxzZTsK
KwogICAgIHJldHVybiB0cnVlOwogfQogCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>303848</attachid>
            <date>2017-03-08 14:51:43 -0800</date>
            <delta_ts>2017-03-08 16:02:12 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-169309-20170308145116.patch</filename>
            <type>text/plain</type>
            <size>30859</size>
            <attacher name="Wenson Hsieh">wenson_hsieh</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjEzNTQ3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOWRmODY4MjhhMzM4YTg0
ZjNkZWEyYzNmODFiM2EwMTQzYTExZGRlNC4uZDc1ZGE5ZDRjN2VmNjhiMTRkOTcwMTMwMGYzM2U0
ZDJiMDFlNDQ2ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDc4IEBACisyMDE3LTAzLTA3ICBXZW5z
b24gSHNpZWggIDx3ZW5zb25faHNpZWhAYXBwbGUuY29tPgorCisgICAgICAgIEFkZCBUZXh0SW5k
aWNhdG9yIHN1cHBvcnQgZm9yIHByb3ZpZGluZyBhIHNuYXBzaG90IGV4Y2x1ZGluZyBzZWxlY3Rl
ZCBjb250ZW50CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0xNjkzMDkKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzMwODgzNTI1PgorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFdvcmsgdG93YXJkcyA8cmRhcjov
L3Byb2JsZW0vMzA4ODI5NzQ+LiBBZGRzIHN1cHBvcnQgaW4gVGV4dEluZGljYXRvciB0byBpbmNs
dWRlIGEgc25hcHNob3Qgb2YgYWxsIHZpc2libGUKKyAgICAgICAgY29udGVudCwgZXhjbHVkaW5n
IG5vZGVzIGNhcHR1cmVkIGluIHRoZSBjdXJyZW50IHNlbGVjdGlvbi4gVGhpcyBjb21lcyBpbiB0
aGUgZm9ybSBvZiB0aGUgbmV3CisgICAgICAgIFRleHRJbmRpY2F0b3JPcHRpb25JbmNsdWRlU25h
cHNob3RXaXRob3V0U2VsZWN0aW9uIGZsYWcgLS0gc2VlIHBlci1tZXRob2QgY2hhbmdlcyBmb3Ig
bW9yZSBkZXRhaWxzLgorCisgICAgICAgIE5vIG5ldyB0ZXN0cywgc2luY2UgdGhlcmUgaXMgbm8g
Y2hhbmdlIGluIGJlaGF2aW9yIHlldC4KKworICAgICAgICAqIHBhZ2UvRnJhbWVTbmFwc2hvdHRp
bmcuY3BwOgorICAgICAgICAoV2ViQ29yZTo6c25hcHNob3RGcmFtZVJlY3RXaXRoQ2xpcCk6Cisg
ICAgICAgICogcGFnZS9GcmFtZVNuYXBzaG90dGluZy5oOgorCisgICAgICAgIEludHJvZHVjZSBh
IG5ldyBzbmFwc2hvdCBvcHRpb24gZmxhZywgU25hcHNob3RPcHRpb25zUGFpbnRFdmVyeXRoaW5n
RXhjbHVkaW5nU2VsZWN0aW9uLgorCisgICAgICAgIChXZWJDb3JlOjpzbmFwc2hvdEZyYW1lUmVj
dFdpdGhDbGlwKToKKyAgICAgICAgKiBwYWdlL1RleHRJbmRpY2F0b3IuY3BwOgorCisgICAgICAg
IElmIFRleHRJbmRpY2F0b3JPcHRpb25JbmNsdWRlU25hcHNob3RXaXRob3V0U2VsZWN0aW9uIGlz
IHR1cm5lZCBvbiwgY2FwdHVyZSBhbmQgaW5jbHVkZSBhIHNuYXBzaG90IG9mIHRoZQorICAgICAg
ICB2aXNpYmxlIGJvdW5kcyBvZiB0aGUgZnJhbWUuCisKKyAgICAgICAgKFdlYkNvcmU6OnRha2VT
bmFwc2hvdCk6CisgICAgICAgIChXZWJDb3JlOjp0YWtlU25hcHNob3RzKToKKyAgICAgICAgKFdl
YkNvcmU6OmluaXRpYWxpemVJbmRpY2F0b3IpOgorICAgICAgICAqIHBhZ2UvVGV4dEluZGljYXRv
ci5oOgorCisgICAgICAgIEludHJvZHVjZSBUZXh0SW5kaWNhdG9yT3B0aW9uSW5jbHVkZVNuYXBz
aG90V2l0aG91dFNlbGVjdGlvbi4KKworICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0ZvbnRD
YXNjYWRlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZvbnRDYXNjYWRlOjp3aWR0aE9mVGV4dFJh
bmdlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9Gb250Q2FzY2FkZS5oOgorCisgICAg
ICAgIFRlYWNoIEZvbnRDYXNjYWRlIHRvIHJldHJpZXZlIHRoZSB3aWR0aCBvZiBhIHJhbmdlIGlu
IGEgVGV4dFJ1biwgYW5kIGFsc28gY29tcHV0ZSB0aGUgd2lkdGhzIG9mIHRoZSBUZXh0UnVuCisg
ICAgICAgIGJlZm9yZSBhbmQgYWZ0ZXIgdGhlIHJhbmdlLiBUaGlzIGlzIHVzZWQgYnkgSW5saW5l
VGV4dEJveCB0byBjb21wdXRlIHRoZSBwYWludGluZyByZWN0IHRvIGNsaXAgb3V0IHdoZW4gc2tp
cHBpbmcKKyAgICAgICAgdGV4dCBkZWNvcmF0aW9ucyBmb3IgdGhlIHNlbGVjdGVkIHJlZ2lvbiBv
ZiB0aGUgVGV4dFJ1bi4KKworICAgICAgICAqIHJlbmRlcmluZy9JbmxpbmVUZXh0Qm94LmNwcDoK
KworICAgICAgICBUZWFjaCBJbmxpbmVUZXh0Qm94IHRvIHJlc3BlY3QgUGFpbnRCZWhhdmlvckV4
Y2x1ZGVTZWxlY3Rpb24uIFdoZW4gcGFpbnRpbmcgdGV4dCwgaWYgdGhpcyBwYWludCBiZWhhdmlv
ciBpcworICAgICAgICB1c2VkLCB3ZSB3aWxsIG5vdCBwYWludCB0aGUgcG9ydGlvbiBvZiB0aGUg
dGV4dCBydW4gdGhhdCBsaWVzIGluc2lkZSB0aGUgcmFuZ2UgZGV0ZXJtaW5lZCBieSBzZWxlY3Rp
b25TdGFydEVuZCgpLgorICAgICAgICBTaW1pbGFybHksIHdoZW4gcGFpbnRpbmcgdGV4dCBkZWNv
cmF0aW9ucywgd2UgZXhjbHVkZSB0aGUgcmVjdCBzdXJyb3VuZGluZyB0aGUgc2VsZWN0ZWQgY29u
dGVudC4KKworICAgICAgICAoV2ViQ29yZTo6SW5saW5lVGV4dEJveDo6cGFpbnQpOgorICAgICAg
ICAoV2ViQ29yZTo6SW5saW5lVGV4dEJveDo6cGFpbnREZWNvcmF0aW9uKToKKyAgICAgICAgKiBy
ZW5kZXJpbmcvSW5saW5lVGV4dEJveC5oOgorICAgICAgICAqIHJlbmRlcmluZy9QYWludFBoYXNl
Lmg6CisKKyAgICAgICAgSW50cm9kdWNlIFBhaW50QmVoYXZpb3JFeGNsdWRlU2VsZWN0aW9uLCB1
c2VkIHRvIGluZm9ybSBtZW1iZXJzIG9mIHRoZSByZW5kZXIgdHJlZSBub3QgdG8gcGFpbnQgcG9y
dGlvbnMgdGhhdAorICAgICAgICBsaWUgd2l0aGluIHRoZSBjdXJyZW50IHNlbGVjdGlvbiByYW5n
ZS4KKworICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJMYXllci5jcHA6CisKKyAgICAgICAgUHJv
cGFnYXRlIHRoZSBQYWludEJlaGF2aW9yRXhjbHVkZVNlbGVjdGlvbiBmbGFnIHRvIGNoaWxkcmVu
IHdoZW4gcGFpbnRpbmcuCisKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxheWVyOjpwYWludExh
eWVyQ29udGVudHMpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXI6OnBhaW50Rm9yZWdy
b3VuZEZvckZyYWdtZW50cyk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlclJlcGxhY2VkLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclJlcGxhY2VkOjpzaG91bGRQYWludCk6CisKKyAg
ICAgICAgVGVhY2ggUmVuZGVyUmVwbGFjZWQgdG8gcmVzcGVjdCBQYWludEJlaGF2aW9yRXhjbHVk
ZVNlbGVjdGlvbiBieSBiYWlsaW5nIGZyb20gcGFpbnRpbmcgaWYgaXQgaXMgc2VsZWN0ZWQgYW5k
IHRoZQorICAgICAgICBwYWludCBiZWhhdmlvciBpcyBlbmFibGVkLgorCisgICAgICAgICogcmVu
ZGVyaW5nL1RleHREZWNvcmF0aW9uUGFpbnRlci5oOgorICAgICAgICAqIHJlbmRlcmluZy9UZXh0
UGFpbnRTdHlsZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpjb21wdXRlVGV4dFNlbGVjdGlvblBh
aW50U3R5bGUpOgorICAgICAgICAqIHJlbmRlcmluZy9UZXh0UGFpbnRTdHlsZS5oOgorICAgICAg
ICAqIHJlbmRlcmluZy9UZXh0UGFpbnRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpUZXh0UGFp
bnRlcjo6cGFpbnRUZXh0KToKKyAgICAgICAgKiByZW5kZXJpbmcvVGV4dFBhaW50ZXIuaDoKKwog
MjAxNy0wMy0wNyAgTWF1cmVlbiBEYXVtICA8bWRhdW1AYXBwbGUuY29tPgogCiAgICAgICAgIENv
cnJlY3RseSBjaGVjayBmb3IgYW4gZW1wdHkgZGF0YWJhc2UgZmlsZS4KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQyL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwppbmRleCA3
YTdiNGQ1NjUxOGYxM2MyNTY3MTc4MTQ2ZGFhMWUwNGE1MDY2OGUyLi5lZjE3MjAwNWM2ZjNiODMz
ZTYwYWZiNzg3M2YyMDBiNWNkNTljM2U0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9DaGFu
Z2VMb2cKKysrIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTggQEAKKzIw
MTctMDMtMDcgIFdlbnNvbiBIc2llaCAgPHdlbnNvbl9oc2llaEBhcHBsZS5jb20+CisKKyAgICAg
ICAgQWRkIFRleHRJbmRpY2F0b3Igc3VwcG9ydCBmb3IgcHJvdmlkaW5nIGEgc25hcHNob3QgZXhj
bHVkaW5nIHNlbGVjdGVkIGNvbnRlbnQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTE2OTMwOQorICAgICAgICA8cmRhcjovL3Byb2JsZW0vMzA4ODM1MjU+
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgU2VyaWFs
aXplIHRoZSBzbmFwc2hvdCBleGNsdWRpbmcgdGhlIHNlbGVjdGlvbiBhbmQgdGhlIHNuYXBzaG90
J3MgYm91bmRzIHdoZW4gc2VuZGluZyBUZXh0SW5kaWNhdG9yRGF0YSBvdmVyCisgICAgICAgIElQ
QyB0byB0aGUgVUkgcHJvY2Vzcy4KKworICAgICAgICAqIFNoYXJlZC9XZWJDb3JlQXJndW1lbnRD
b2RlcnMuY3BwOgorICAgICAgICAoSVBDOjpBcmd1bWVudENvZGVyPFRleHRJbmRpY2F0b3JEYXRh
Pjo6ZW5jb2RlKToKKyAgICAgICAgKElQQzo6QXJndW1lbnRDb2RlcjxUZXh0SW5kaWNhdG9yRGF0
YT46OmRlY29kZSk6CisKIDIwMTctMDMtMDcgIEJyZW50IEZ1bGdoYW0gIDxiZnVsZ2hhbUBhcHBs
ZS5jb20+CiAKICAgICAgICAgW01hY11baU9TXVtXSzJdIFdoaXRlbGlzdCBzeXNjdGwtcmVhZApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVNuYXBzaG90dGluZy5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lU25hcHNob3R0aW5nLmNwcAppbmRleCAzZDM0Y2Q5Mjkx
ZmU4MWNlZmYzMzU3YTA0YWFlNGU3Y2MxYWM0MDAyLi45NTljMzYyYTljYTZhMzgzZGJlMjczZTAz
MGRlMWRmYTg1NDAxNzJjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lU25h
cHNob3R0aW5nLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lU25hcHNob3R0aW5n
LmNwcApAQCAtNzMsNyArNzMsNyBAQCBzdGQ6OnVuaXF1ZV9wdHI8SW1hZ2VCdWZmZXI+IHNuYXBz
aG90RnJhbWVSZWN0KEZyYW1lJiBmcmFtZSwgY29uc3QgSW50UmVjdCYgaW1hZwogICAgIHJldHVy
biBzbmFwc2hvdEZyYW1lUmVjdFdpdGhDbGlwKGZyYW1lLCBpbWFnZVJlY3QsIGNsaXBSZWN0cywg
b3B0aW9ucyk7CiB9CiAKLXN0ZDo6dW5pcXVlX3B0cjxJbWFnZUJ1ZmZlcj4gc25hcHNob3RGcmFt
ZVJlY3RXaXRoQ2xpcChGcmFtZSYgZnJhbWUsIGNvbnN0IEludFJlY3QmIGltYWdlUmVjdCwgVmVj
dG9yPEZsb2F0UmVjdD4mIGNsaXBSZWN0cywgU25hcHNob3RPcHRpb25zIG9wdGlvbnMpCitzdGQ6
OnVuaXF1ZV9wdHI8SW1hZ2VCdWZmZXI+IHNuYXBzaG90RnJhbWVSZWN0V2l0aENsaXAoRnJhbWUm
IGZyYW1lLCBjb25zdCBJbnRSZWN0JiBpbWFnZVJlY3QsIGNvbnN0IFZlY3RvcjxGbG9hdFJlY3Q+
JiBjbGlwUmVjdHMsIFNuYXBzaG90T3B0aW9ucyBvcHRpb25zKQogewogICAgIGlmICghZnJhbWUu
cGFnZSgpKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKQEAgLTk3LDYgKzk3LDggQEAgc3RkOjp1
bmlxdWVfcHRyPEltYWdlQnVmZmVyPiBzbmFwc2hvdEZyYW1lUmVjdFdpdGhDbGlwKEZyYW1lJiBm
cmFtZSwgY29uc3QgSW50UmUKICAgICAgICAgcGFpbnRCZWhhdmlvciB8PSBQYWludEJlaGF2aW9y
U2VsZWN0aW9uT25seTsKICAgICBpZiAob3B0aW9ucyAmIFNuYXBzaG90T3B0aW9uc1BhaW50U2Vs
ZWN0aW9uQW5kQmFja2dyb3VuZHNPbmx5KQogICAgICAgICBwYWludEJlaGF2aW9yIHw9IFBhaW50
QmVoYXZpb3JTZWxlY3Rpb25BbmRCYWNrZ3JvdW5kc09ubHk7CisgICAgaWYgKG9wdGlvbnMgJiBT
bmFwc2hvdE9wdGlvbnNQYWludEV2ZXJ5dGhpbmdFeGNsdWRpbmdTZWxlY3Rpb24pCisgICAgICAg
IHBhaW50QmVoYXZpb3IgfD0gUGFpbnRCZWhhdmlvckV4Y2x1ZGVTZWxlY3Rpb247CiAKICAgICAv
LyBPdGhlciBwYWludCBiZWhhdmlvcnMgYXJlIHNldCBieSBwYWludENvbnRlbnRzRm9yU25hcHNo
b3QuCiAgICAgZnJhbWUudmlldygpLT5zZXRQYWludEJlaGF2aW9yKHBhaW50QmVoYXZpb3IpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVNuYXBzaG90dGluZy5oIGIvU291
cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVNuYXBzaG90dGluZy5oCmluZGV4IGRjNjM1Njg4NmU0NDVm
N2RjY2RjZWNiNTQzMGM5MmNkYmJiMTU4YmEuLmZiM2RkMDNmOTMyNzY5MmViYjRlOGRlODc0YTYw
NmE3ZGE3MzgzNmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWVTbmFwc2hv
dHRpbmcuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lU25hcHNob3R0aW5nLmgKQEAg
LTQ3LDExICs0NywxMiBAQCBlbnVtIHsKICAgICBTbmFwc2hvdE9wdGlvbnNJblZpZXdDb29yZGlu
YXRlcyA9IDEgPDwgMiwKICAgICBTbmFwc2hvdE9wdGlvbnNGb3JjZUJsYWNrVGV4dCA9IDEgPDwg
MywKICAgICBTbmFwc2hvdE9wdGlvbnNQYWludFNlbGVjdGlvbkFuZEJhY2tncm91bmRzT25seSA9
IDEgPDwgNCwKKyAgICBTbmFwc2hvdE9wdGlvbnNQYWludEV2ZXJ5dGhpbmdFeGNsdWRpbmdTZWxl
Y3Rpb24gPSAxIDw8IDUKIH07CiB0eXBlZGVmIHVuc2lnbmVkIFNuYXBzaG90T3B0aW9uczsKIAog
V0VCQ09SRV9FWFBPUlQgc3RkOjp1bmlxdWVfcHRyPEltYWdlQnVmZmVyPiBzbmFwc2hvdEZyYW1l
UmVjdChGcmFtZSYsIGNvbnN0IEludFJlY3QmLCBTbmFwc2hvdE9wdGlvbnMgPSBTbmFwc2hvdE9w
dGlvbnNOb25lKTsKLXN0ZDo6dW5pcXVlX3B0cjxJbWFnZUJ1ZmZlcj4gc25hcHNob3RGcmFtZVJl
Y3RXaXRoQ2xpcChGcmFtZSYsIGNvbnN0IEludFJlY3QmLCBWZWN0b3I8RmxvYXRSZWN0PiYgY2xp
cFJlY3RzLCBTbmFwc2hvdE9wdGlvbnMgPSBTbmFwc2hvdE9wdGlvbnNOb25lKTsKK3N0ZDo6dW5p
cXVlX3B0cjxJbWFnZUJ1ZmZlcj4gc25hcHNob3RGcmFtZVJlY3RXaXRoQ2xpcChGcmFtZSYsIGNv
bnN0IEludFJlY3QmLCBjb25zdCBWZWN0b3I8RmxvYXRSZWN0PiYgY2xpcFJlY3RzID0geyB9LCBT
bmFwc2hvdE9wdGlvbnMgPSBTbmFwc2hvdE9wdGlvbnNOb25lKTsKIHN0ZDo6dW5pcXVlX3B0cjxJ
bWFnZUJ1ZmZlcj4gc25hcHNob3ROb2RlKEZyYW1lJiwgTm9kZSYpOwogV0VCQ09SRV9FWFBPUlQg
c3RkOjp1bmlxdWVfcHRyPEltYWdlQnVmZmVyPiBzbmFwc2hvdFNlbGVjdGlvbihGcmFtZSYsIFNu
YXBzaG90T3B0aW9ucyA9IFNuYXBzaG90T3B0aW9uc05vbmUpOwogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL1RleHRJbmRpY2F0b3IuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9U
ZXh0SW5kaWNhdG9yLmNwcAppbmRleCBlYTkwYmY3NGI5Y2E3NmVmYWRiM2FlNDQzODc3YWM2MjA5
YmYyZWRiLi5kOTM1ZGZkZTU2OTQ5ZTk5YjRhMWM1NGQxNTcwYmE1YWIyZWJiMDk5IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1RleHRJbmRpY2F0b3IuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BhZ2UvVGV4dEluZGljYXRvci5jcHAKQEAgLTE1MCw3ICsxNTAsNyBAQCBzdGF0aWMg
U25hcHNob3RPcHRpb25zIHNuYXBzaG90T3B0aW9uc0ZvclRleHRJbmRpY2F0b3JPcHRpb25zKFRl
eHRJbmRpY2F0b3JPcHRpbwogICAgIHJldHVybiBzbmFwc2hvdE9wdGlvbnM7CiB9CiAKLXN0YXRp
YyBSZWZQdHI8SW1hZ2U+IHRha2VTbmFwc2hvdChGcmFtZSYgZnJhbWUsIEludFJlY3QgcmVjdCwg
U25hcHNob3RPcHRpb25zIG9wdGlvbnMsIGZsb2F0JiBzY2FsZUZhY3RvciwgVmVjdG9yPEZsb2F0
UmVjdD4mIGNsaXBSZWN0c0luRG9jdW1lbnRDb29yZGluYXRlcykKK3N0YXRpYyBSZWZQdHI8SW1h
Z2U+IHRha2VTbmFwc2hvdChGcmFtZSYgZnJhbWUsIEludFJlY3QgcmVjdCwgU25hcHNob3RPcHRp
b25zIG9wdGlvbnMsIGZsb2F0JiBzY2FsZUZhY3RvciwgY29uc3QgVmVjdG9yPEZsb2F0UmVjdD4m
IGNsaXBSZWN0c0luRG9jdW1lbnRDb29yZGluYXRlcykKIHsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8
SW1hZ2VCdWZmZXI+IGJ1ZmZlciA9IHNuYXBzaG90RnJhbWVSZWN0V2l0aENsaXAoZnJhbWUsIHJl
Y3QsIGNsaXBSZWN0c0luRG9jdW1lbnRDb29yZGluYXRlcywgb3B0aW9ucyk7CiAgICAgaWYgKCFi
dWZmZXIpCkBAIC0xNTksNyArMTU5LDcgQEAgc3RhdGljIFJlZlB0cjxJbWFnZT4gdGFrZVNuYXBz
aG90KEZyYW1lJiBmcmFtZSwgSW50UmVjdCByZWN0LCBTbmFwc2hvdE9wdGlvbnMgb3AKICAgICBy
ZXR1cm4gSW1hZ2VCdWZmZXI6OnNpbmtJbnRvSW1hZ2UoV1RGTW92ZShidWZmZXIpLCBVbnNjYWxl
ZCk7CiB9CiAKLXN0YXRpYyBib29sIHRha2VTbmFwc2hvdHMoVGV4dEluZGljYXRvckRhdGEmIGRh
dGEsIEZyYW1lJiBmcmFtZSwgSW50UmVjdCBzbmFwc2hvdFJlY3QsIFZlY3RvcjxGbG9hdFJlY3Q+
JiBjbGlwUmVjdHNJbkRvY3VtZW50Q29vcmRpbmF0ZXMpCitzdGF0aWMgYm9vbCB0YWtlU25hcHNo
b3RzKFRleHRJbmRpY2F0b3JEYXRhJiBkYXRhLCBGcmFtZSYgZnJhbWUsIEludFJlY3Qgc25hcHNo
b3RSZWN0LCBjb25zdCBWZWN0b3I8RmxvYXRSZWN0PiYgY2xpcFJlY3RzSW5Eb2N1bWVudENvb3Jk
aW5hdGVzKQogewogICAgIFNuYXBzaG90T3B0aW9ucyBzbmFwc2hvdE9wdGlvbnMgPSBzbmFwc2hv
dE9wdGlvbnNGb3JUZXh0SW5kaWNhdG9yT3B0aW9ucyhkYXRhLm9wdGlvbnMpOwogCkBAIC0xNzIs
NiArMTcyLDEzIEBAIHN0YXRpYyBib29sIHRha2VTbmFwc2hvdHMoVGV4dEluZGljYXRvckRhdGEm
IGRhdGEsIEZyYW1lJiBmcmFtZSwgSW50UmVjdCBzbmFwc2hvCiAgICAgICAgIGRhdGEuY29udGVu
dEltYWdlV2l0aEhpZ2hsaWdodCA9IHRha2VTbmFwc2hvdChmcmFtZSwgc25hcHNob3RSZWN0LCBT
bmFwc2hvdE9wdGlvbnNOb25lLCBzbmFwc2hvdFNjYWxlRmFjdG9yLCBjbGlwUmVjdHNJbkRvY3Vt
ZW50Q29vcmRpbmF0ZXMpOwogICAgICAgICBBU1NFUlQoIWRhdGEuY29udGVudEltYWdlV2l0aEhp
Z2hsaWdodCB8fCBkYXRhLmNvbnRlbnRJbWFnZVNjYWxlRmFjdG9yID09IHNuYXBzaG90U2NhbGVG
YWN0b3IpOwogICAgIH0KKworICAgIGlmIChkYXRhLm9wdGlvbnMgJiBUZXh0SW5kaWNhdG9yT3B0
aW9uSW5jbHVkZVNuYXBzaG90V2l0aG91dFNlbGVjdGlvbikgeworICAgICAgICBmbG9hdCBzbmFw
c2hvdFNjYWxlRmFjdG9yOworICAgICAgICBhdXRvIHNuYXBzaG90UmVjdCA9IGVuY2xvc2luZ0lu
dFJlY3QoZnJhbWUudmlldygpLT52aXN1YWxWaWV3cG9ydFJlY3QoKSk7CisgICAgICAgIGRhdGEu
Y29udGVudEltYWdlV2l0aG91dFNlbGVjdGlvbiA9IHRha2VTbmFwc2hvdChmcmFtZSwgc25hcHNo
b3RSZWN0LCBTbmFwc2hvdE9wdGlvbnNQYWludEV2ZXJ5dGhpbmdFeGNsdWRpbmdTZWxlY3Rpb24s
IHNuYXBzaG90U2NhbGVGYWN0b3IsIHsgfSk7CisgICAgICAgIGRhdGEuY29udGVudEltYWdlV2l0
aG91dFNlbGVjdGlvblJlY3RJblJvb3RWaWV3Q29vcmRpbmF0ZXMgPSBmcmFtZS52aWV3KCktPmNv
bnRlbnRzVG9Sb290VmlldyhzbmFwc2hvdFJlY3QpOworICAgIH0KICAgICAKICAgICByZXR1cm4g
dHJ1ZTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvVGV4dEluZGljYXRvci5o
IGIvU291cmNlL1dlYkNvcmUvcGFnZS9UZXh0SW5kaWNhdG9yLmgKaW5kZXggZGZhNDJjN2RjNDIy
ZWViYmM1MGU1NTgzYTUwYWMwZjIzNWZmYTg1ZC4uMWJjNzllMzQwMjdjZmIyMjIyYzI0NTBiNjgz
YmRlNzc2MGZiOGZkMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9UZXh0SW5kaWNh
dG9yLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9UZXh0SW5kaWNhdG9yLmgKQEAgLTQ5LDcg
KzQ5LDcgQEAgZW51bSBjbGFzcyBUZXh0SW5kaWNhdG9yUHJlc2VudGF0aW9uVHJhbnNpdGlvbiB7
CiB9OwogCiAvLyBNYWtlIHN1cmUgdG8ga2VlcCB0aGVzZSBpbiBzeW5jIHdpdGggdGhlIG9uZXMg
aW4gSW50ZXJuYWxzLmlkbC4KLWVudW0gVGV4dEluZGljYXRvck9wdGlvbiA6IHVpbnQ4X3Qgewor
ZW51bSBUZXh0SW5kaWNhdG9yT3B0aW9uIDogdWludDE2X3QgewogICAgIFRleHRJbmRpY2F0b3JP
cHRpb25EZWZhdWx0ID0gMCwKIAogICAgIC8vIFVzZSB0aGUgc3R5bGVkIHRleHQgY29sb3IgaW5z
dGVhZCBvZiBmb3JjaW5nIGJsYWNrIHRleHQgKHRoZSBkZWZhdWx0KQpAQCAtODAsMTUgKzgwLDIw
IEBAIGVudW0gVGV4dEluZGljYXRvck9wdGlvbiA6IHVpbnQ4X3QgewogICAgIC8vIEJ5IGRlZmF1
bHQsIFRleHRJbmRpY2F0b3IgY2xpcHMgdGhlIGluZGljYXRlZCByZWN0cyB0byB0aGUgdmlzaWJs
ZSBjb250ZW50IHJlY3QuCiAgICAgLy8gSWYgdGhpcyBvcHRpb24gaXMgc2V0LCBkbyBub3QgY2xp
cCB0aGUgaW5kaWNhdGVkIHJlY3RzLgogICAgIFRleHRJbmRpY2F0b3JPcHRpb25Eb05vdENsaXBU
b1Zpc2libGVSZWN0ID0gMSA8PCA3LAorCisgICAgLy8gSW5jbHVkZSBhbiBhZGRpdGlvbmFsIHNu
YXBzaG90IG9mIGV2ZXJ5dGhpbmcgaW4gdmlldywgd2l0aCB0aGUgZXhjZXB0aW9uIG9mIG5vZGVz
IHdpdGhpbiB0aGUgY3VycmVudGx5IHNlbGVjdGVkIHJhbmdlLgorICAgIFRleHRJbmRpY2F0b3JP
cHRpb25JbmNsdWRlU25hcHNob3RXaXRob3V0U2VsZWN0aW9uID0gMSA8PCA4LAogfTsKLXR5cGVk
ZWYgdWludDhfdCBUZXh0SW5kaWNhdG9yT3B0aW9uczsKK3R5cGVkZWYgdWludDE2X3QgVGV4dElu
ZGljYXRvck9wdGlvbnM7CiAKIHN0cnVjdCBUZXh0SW5kaWNhdG9yRGF0YSB7CiAgICAgRmxvYXRS
ZWN0IHNlbGVjdGlvblJlY3RJblJvb3RWaWV3Q29vcmRpbmF0ZXM7CiAgICAgRmxvYXRSZWN0IHRl
eHRCb3VuZGluZ1JlY3RJblJvb3RWaWV3Q29vcmRpbmF0ZXM7CisgICAgRmxvYXRSZWN0IGNvbnRl
bnRJbWFnZVdpdGhvdXRTZWxlY3Rpb25SZWN0SW5Sb290Vmlld0Nvb3JkaW5hdGVzOwogICAgIFZl
Y3RvcjxGbG9hdFJlY3Q+IHRleHRSZWN0c0luQm91bmRpbmdSZWN0Q29vcmRpbmF0ZXM7CiAgICAg
ZmxvYXQgY29udGVudEltYWdlU2NhbGVGYWN0b3I7CiAgICAgUmVmUHRyPEltYWdlPiBjb250ZW50
SW1hZ2VXaXRoSGlnaGxpZ2h0OworICAgIFJlZlB0cjxJbWFnZT4gY29udGVudEltYWdlV2l0aG91
dFNlbGVjdGlvbjsKICAgICBSZWZQdHI8SW1hZ2U+IGNvbnRlbnRJbWFnZTsKICAgICBUZXh0SW5k
aWNhdG9yUHJlc2VudGF0aW9uVHJhbnNpdGlvbiBwcmVzZW50YXRpb25UcmFuc2l0aW9uOwogICAg
IFRleHRJbmRpY2F0b3JPcHRpb25zIG9wdGlvbnM7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250Q2FzY2FkZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9Gb250Q2FzY2FkZS5jcHAKaW5kZXggNjY0MTM4ODRhNWUyYzM4OGNjZDc1
MTcxZmRhM2NiNTk5NTIwMDY3Yi4uNDgzZTQxY2IxNGFiNjdjZTQxM2FjNzM5NWZiNzQwNGJhN2Y5
YWRjZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udENh
c2NhZGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnRDYXNj
YWRlLmNwcApAQCAtMjUsNiArMjUsNyBAQAogI2luY2x1ZGUgIkZvbnRDYXNjYWRlLmgiCiAKICNp
bmNsdWRlICJDaGFyYWN0ZXJQcm9wZXJ0aWVzLmgiCisjaW5jbHVkZSAiQ29tcGxleFRleHRDb250
cm9sbGVyLmgiCiAjaW5jbHVkZSAiRmxvYXRSZWN0LmgiCiAjaW5jbHVkZSAiRm9udENhY2hlLmgi
CiAjaW5jbHVkZSAiR2x5cGhCdWZmZXIuaCIKQEAgLTM0OCw2ICszNDksNDMgQEAgdm9pZCBGb250
Q2FzY2FkZTo6ZHJhd0VtcGhhc2lzTWFya3MoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25z
dCBUZXh0UnVuJiBydW4KICAgICAgICAgZHJhd0VtcGhhc2lzTWFya3NGb3JDb21wbGV4VGV4dChj
b250ZXh0LCBydW4sIG1hcmssIHBvaW50LCBmcm9tLCBkZXN0aW5hdGlvbik7CiB9CiAKK2Zsb2F0
IEZvbnRDYXNjYWRlOjp3aWR0aE9mVGV4dFJhbmdlKGNvbnN0IFRleHRSdW4mIHJ1biwgdW5zaWdu
ZWQgZnJvbSwgdW5zaWduZWQgdG8sIEhhc2hTZXQ8Y29uc3QgRm9udCo+KiBmYWxsYmFja0ZvbnRz
LCBmbG9hdCogb3V0V2lkdGhCZWZvcmVSYW5nZSwgZmxvYXQqIG91dFdpZHRoQWZ0ZXJSYW5nZSkg
Y29uc3QKK3sKKyAgICBBU1NFUlQoZnJvbSA8PSB0byk7CisgICAgQVNTRVJUKHRvIDw9IHJ1bi5s
ZW5ndGgoKSk7CisKKyAgICBmbG9hdCBvZmZzZXRCZWZvcmVSYW5nZSA9IDA7CisgICAgZmxvYXQg
b2Zmc2V0QWZ0ZXJSYW5nZSA9IDA7CisgICAgZmxvYXQgdG90YWxXaWR0aCA9IDA7CisKKyAgICBh
dXRvIGNvZGVQYXRoVG9Vc2UgPSBjb2RlUGF0aChydW4pOworICAgIGlmIChjb2RlUGF0aFRvVXNl
ID09IENvbXBsZXgpIHsKKyAgICAgICAgQ29tcGxleFRleHRDb250cm9sbGVyIGNvbXBsZXhJdGVy
YXRvcigqdGhpcywgcnVuLCBmYWxzZSwgZmFsbGJhY2tGb250cyk7CisgICAgICAgIGNvbXBsZXhJ
dGVyYXRvci5hZHZhbmNlKGZyb20sIG51bGxwdHIsIEluY2x1ZGVQYXJ0aWFsR2x5cGhzLCBmYWxs
YmFja0ZvbnRzKTsKKyAgICAgICAgb2Zmc2V0QmVmb3JlUmFuZ2UgPSBjb21wbGV4SXRlcmF0b3Iu
cnVuV2lkdGhTb0ZhcigpOworICAgICAgICBjb21wbGV4SXRlcmF0b3IuYWR2YW5jZSh0bywgbnVs
bHB0ciwgSW5jbHVkZVBhcnRpYWxHbHlwaHMsIGZhbGxiYWNrRm9udHMpOworICAgICAgICBvZmZz
ZXRBZnRlclJhbmdlID0gY29tcGxleEl0ZXJhdG9yLnJ1bldpZHRoU29GYXIoKTsKKyAgICAgICAg
Y29tcGxleEl0ZXJhdG9yLmFkdmFuY2UocnVuLmxlbmd0aCgpLCBudWxscHRyLCBJbmNsdWRlUGFy
dGlhbEdseXBocywgZmFsbGJhY2tGb250cyk7CisgICAgICAgIHRvdGFsV2lkdGggPSBjb21wbGV4
SXRlcmF0b3IucnVuV2lkdGhTb0ZhcigpOworICAgIH0gZWxzZSB7CisgICAgICAgIFdpZHRoSXRl
cmF0b3Igc2ltcGxlSXRlcmF0b3IodGhpcywgcnVuLCBmYWxsYmFja0ZvbnRzKTsKKyAgICAgICAg
c2ltcGxlSXRlcmF0b3IuYWR2YW5jZShmcm9tLCBudWxscHRyKTsKKyAgICAgICAgb2Zmc2V0QmVm
b3JlUmFuZ2UgPSBzaW1wbGVJdGVyYXRvci5ydW5XaWR0aFNvRmFyKCk7CisgICAgICAgIHNpbXBs
ZUl0ZXJhdG9yLmFkdmFuY2UodG8sIG51bGxwdHIpOworICAgICAgICBvZmZzZXRBZnRlclJhbmdl
ID0gc2ltcGxlSXRlcmF0b3IucnVuV2lkdGhTb0ZhcigpOworICAgICAgICBzaW1wbGVJdGVyYXRv
ci5hZHZhbmNlKHJ1bi5sZW5ndGgoKSwgbnVsbHB0cik7CisgICAgICAgIHRvdGFsV2lkdGggPSBz
aW1wbGVJdGVyYXRvci5ydW5XaWR0aFNvRmFyKCk7CisgICAgfQorCisgICAgaWYgKG91dFdpZHRo
QmVmb3JlUmFuZ2UpCisgICAgICAgICpvdXRXaWR0aEJlZm9yZVJhbmdlID0gb2Zmc2V0QmVmb3Jl
UmFuZ2U7CisKKyAgICBpZiAob3V0V2lkdGhBZnRlclJhbmdlKQorICAgICAgICAqb3V0V2lkdGhB
ZnRlclJhbmdlID0gdG90YWxXaWR0aCAtIG9mZnNldEFmdGVyUmFuZ2U7CisKKyAgICByZXR1cm4g
b2Zmc2V0QWZ0ZXJSYW5nZSAtIG9mZnNldEJlZm9yZVJhbmdlOworfQorCiBmbG9hdCBGb250Q2Fz
Y2FkZTo6d2lkdGgoY29uc3QgVGV4dFJ1biYgcnVuLCBIYXNoU2V0PGNvbnN0IEZvbnQqPiogZmFs
bGJhY2tGb250cywgR2x5cGhPdmVyZmxvdyogZ2x5cGhPdmVyZmxvdykgY29uc3QKIHsKICAgICBD
b2RlUGF0aCBjb2RlUGF0aFRvVXNlID0gY29kZVBhdGgocnVuKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnRDYXNjYWRlLmggYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250Q2FzY2FkZS5oCmluZGV4IDM3NjJlNDgxNTI3ZGQ2Y2M1
MGMyNzJhMWNhZWIyOTA4OTViNmFmZjYuLjk0MjQ5OTUwOTliMGRkM2M2ZDA3NDVmOWY3NmM0MGNj
ZGFiMDY5YmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0Zv
bnRDYXNjYWRlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udENh
c2NhZGUuaApAQCAtMTM4LDYgKzEzOCw3IEBAIHB1YmxpYzoKIAogICAgIERhc2hBcnJheSBkYXNo
ZXNGb3JJbnRlcnNlY3Rpb25zV2l0aFJlY3QoY29uc3QgVGV4dFJ1biYsIGNvbnN0IEZsb2F0UG9p
bnQmIHRleHRPcmlnaW4sIGNvbnN0IEZsb2F0UmVjdCYgbGluZUV4dGVudHMpIGNvbnN0OwogCisg
ICAgZmxvYXQgd2lkdGhPZlRleHRSYW5nZShjb25zdCBUZXh0UnVuJiwgdW5zaWduZWQgZnJvbSwg
dW5zaWduZWQgdG8sIEhhc2hTZXQ8Y29uc3QgRm9udCo+KiBmYWxsYmFja0ZvbnRzID0gMCwgZmxv
YXQqIG91dFdpZHRoQmVmb3JlUmFuZ2UgPSBudWxscHRyLCBmbG9hdCogb3V0V2lkdGhBZnRlclJh
bmdlID0gbnVsbHB0cikgY29uc3Q7CiAgICAgV0VCQ09SRV9FWFBPUlQgZmxvYXQgd2lkdGgoY29u
c3QgVGV4dFJ1biYsIEhhc2hTZXQ8Y29uc3QgRm9udCo+KiBmYWxsYmFja0ZvbnRzID0gMCwgR2x5
cGhPdmVyZmxvdyogPSAwKSBjb25zdDsKICAgICBmbG9hdCB3aWR0aEZvclNpbXBsZVRleHQoU3Ry
aW5nVmlldyB0ZXh0KSBjb25zdDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL0lubGluZVRleHRCb3guY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0lubGluZVRl
eHRCb3guY3BwCmluZGV4IGY2ZjI0OGFmMzNhMjE2NDcyYWRjMzU0ZTAxOGE0ZGRkMDBiOGM3MWEu
LjU3MTZmNzcxYmVkMWNlMTk1NDAzYzQyYmQxZjRlNDhmODU4ZWQ2NTYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9JbmxpbmVUZXh0Qm94LmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvSW5saW5lVGV4dEJveC5jcHAKQEAgLTQ3NCwxMCArNDc0LDExIEBAIHZv
aWQgSW5saW5lVGV4dEJveDo6cGFpbnQoUGFpbnRJbmZvJiBwYWludEluZm8sIGNvbnN0IExheW91
dFBvaW50JiBwYWludE9mZnNldCwKIAogICAgIGJvb2wgcGFpbnRTZWxlY3RlZFRleHRPbmx5ID0g
ZmFsc2U7CiAgICAgYm9vbCBwYWludFNlbGVjdGVkVGV4dFNlcGFyYXRlbHkgPSBmYWxzZTsKKyAg
ICBib29sIHBhaW50Tm9uU2VsZWN0ZWRUZXh0T25seSA9IGZhbHNlOwogICAgIGNvbnN0IFNoYWRv
d0RhdGEqIHNlbGVjdGlvblNoYWRvdyA9IG51bGxwdHI7CiAgICAgCiAgICAgLy8gVGV4dCB3aXRo
IGN1c3RvbSB1bmRlcmxpbmVzIGRvZXMgbm90IGhhdmUgc2VsZWN0aW9uIGJhY2tncm91bmQgcGFp
bnRlZCwgc28gc2VsZWN0aW9uIHBhaW50IHN0eWxlIGlzIG5vdCBhcHByb3ByaWF0ZSBmb3IgaXQu
Ci0gICAgVGV4dFBhaW50U3R5bGUgc2VsZWN0aW9uUGFpbnRTdHlsZSA9IGhhdmVTZWxlY3Rpb24g
JiYgIXVzZUN1c3RvbVVuZGVybGluZXMgPyBjb21wdXRlVGV4dFNlbGVjdGlvblBhaW50U3R5bGUo
dGV4dFBhaW50U3R5bGUsIHJlbmRlcmVyKCksIGxpbmVTdHlsZSwgcGFpbnRJbmZvLCBwYWludFNl
bGVjdGVkVGV4dE9ubHksIHBhaW50U2VsZWN0ZWRUZXh0U2VwYXJhdGVseSwgc2VsZWN0aW9uU2hh
ZG93KSA6IHRleHRQYWludFN0eWxlOworICAgIFRleHRQYWludFN0eWxlIHNlbGVjdGlvblBhaW50
U3R5bGUgPSBoYXZlU2VsZWN0aW9uICYmICF1c2VDdXN0b21VbmRlcmxpbmVzID8gY29tcHV0ZVRl
eHRTZWxlY3Rpb25QYWludFN0eWxlKHRleHRQYWludFN0eWxlLCByZW5kZXJlcigpLCBsaW5lU3R5
bGUsIHBhaW50SW5mbywgcGFpbnRTZWxlY3RlZFRleHRPbmx5LCBwYWludFNlbGVjdGVkVGV4dFNl
cGFyYXRlbHksIHBhaW50Tm9uU2VsZWN0ZWRUZXh0T25seSwgc2VsZWN0aW9uU2hhZG93KSA6IHRl
eHRQYWludFN0eWxlOwogCiAgICAgLy8gU2V0IG91ciBmb250LgogICAgIGNvbnN0IEZvbnRDYXNj
YWRlJiBmb250ID0gZm9udFRvVXNlKGxpbmVTdHlsZSwgcmVuZGVyZXIoKSk7CkBAIC01NTEsMTIg
KzU1MiwzMSBAQCB2b2lkIElubGluZVRleHRCb3g6OnBhaW50KFBhaW50SW5mbyYgcGFpbnRJbmZv
LCBjb25zdCBMYXlvdXRQb2ludCYgcGFpbnRPZmZzZXQsCiAgICAgdGV4dFBhaW50ZXIuYWRkVGV4
dFNoYWRvdyh0ZXh0U2hhZG93LCBzZWxlY3Rpb25TaGFkb3cpOwogICAgIHRleHRQYWludGVyLmFk
ZEVtcGhhc2lzKGVtcGhhc2lzTWFyaywgZW1waGFzaXNNYXJrT2Zmc2V0LCBjb21iaW5lZFRleHQp
OwogCi0gICAgdGV4dFBhaW50ZXIucGFpbnRUZXh0KHRleHRSdW4sIGxlbmd0aCwgYm94UmVjdCwg
dGV4dE9yaWdpbiwgc2VsZWN0aW9uU3RhcnQsIHNlbGVjdGlvbkVuZCwgcGFpbnRTZWxlY3RlZFRl
eHRPbmx5LCBwYWludFNlbGVjdGVkVGV4dFNlcGFyYXRlbHkpOworICAgIHRleHRQYWludGVyLnBh
aW50VGV4dCh0ZXh0UnVuLCBsZW5ndGgsIGJveFJlY3QsIHRleHRPcmlnaW4sIHNlbGVjdGlvblN0
YXJ0LCBzZWxlY3Rpb25FbmQsIHBhaW50U2VsZWN0ZWRUZXh0T25seSwgcGFpbnRTZWxlY3RlZFRl
eHRTZXBhcmF0ZWx5LCBwYWludE5vblNlbGVjdGVkVGV4dE9ubHkpOwogCiAgICAgLy8gUGFpbnQg
ZGVjb3JhdGlvbnMKICAgICBUZXh0RGVjb3JhdGlvbiB0ZXh0RGVjb3JhdGlvbnMgPSBsaW5lU3R5
bGUudGV4dERlY29yYXRpb25zSW5FZmZlY3QoKTsKLSAgICBpZiAodGV4dERlY29yYXRpb25zICE9
IFRleHREZWNvcmF0aW9uTm9uZSAmJiBwYWludEluZm8ucGhhc2UgIT0gUGFpbnRQaGFzZVNlbGVj
dGlvbikKLSAgICAgICAgcGFpbnREZWNvcmF0aW9uKGNvbnRleHQsIGZvbnQsIGNvbWJpbmVkVGV4
dCwgdGV4dFJ1biwgdGV4dE9yaWdpbiwgYm94UmVjdCwgdGV4dERlY29yYXRpb25zLCB0ZXh0UGFp
bnRTdHlsZSwgdGV4dFNoYWRvdyk7CisgICAgaWYgKHRleHREZWNvcmF0aW9ucyAhPSBUZXh0RGVj
b3JhdGlvbk5vbmUgJiYgcGFpbnRJbmZvLnBoYXNlICE9IFBhaW50UGhhc2VTZWxlY3Rpb24pIHsK
KyAgICAgICAgRmxvYXRSZWN0IHRleHREZWNvcmF0aW9uU2VsZWN0aW9uQ2xpcE91dFJlY3Q7Cisg
ICAgICAgIGlmICgocGFpbnRJbmZvLnBhaW50QmVoYXZpb3IgJiBQYWludEJlaGF2aW9yRXhjbHVk
ZVNlbGVjdGlvbikgJiYgc2VsZWN0aW9uU3RhcnQgPCBzZWxlY3Rpb25FbmQgJiYgc2VsZWN0aW9u
RW5kIDw9IGxlbmd0aCkgeworICAgICAgICAgICAgdGV4dERlY29yYXRpb25TZWxlY3Rpb25DbGlw
T3V0UmVjdCA9IGxvZ2ljYWxPdmVyZmxvd1JlY3QoKTsKKyAgICAgICAgICAgIHRleHREZWNvcmF0
aW9uU2VsZWN0aW9uQ2xpcE91dFJlY3QubW92ZUJ5KGxvY2FsUGFpbnRPZmZzZXQpOworICAgICAg
ICAgICAgZmxvYXQgbG9naWNhbFdpZHRoQmVmb3JlUmFuZ2U7CisgICAgICAgICAgICBmbG9hdCBs
b2dpY2FsV2lkdGhBZnRlclJhbmdlOworICAgICAgICAgICAgZmxvYXQgbG9naWNhbFNlbGVjdGlv
bldpZHRoID0gZm9udC53aWR0aE9mVGV4dFJhbmdlKHRleHRSdW4sIHNlbGVjdGlvblN0YXJ0LCBz
ZWxlY3Rpb25FbmQsIG51bGxwdHIsICZsb2dpY2FsV2lkdGhCZWZvcmVSYW5nZSwgJmxvZ2ljYWxX
aWR0aEFmdGVyUmFuZ2UpOworICAgICAgICAgICAgaWYgKCFpc0hvcml6b250YWwoKSkgeworICAg
ICAgICAgICAgICAgIHRleHREZWNvcmF0aW9uU2VsZWN0aW9uQ2xpcE91dFJlY3QubW92ZSgwLCBs
b2dpY2FsV2lkdGhCZWZvcmVSYW5nZSk7CisgICAgICAgICAgICAgICAgdGV4dERlY29yYXRpb25T
ZWxlY3Rpb25DbGlwT3V0UmVjdC5zZXRIZWlnaHQobG9naWNhbFNlbGVjdGlvbldpZHRoKTsKKyAg
ICAgICAgICAgIH0gZWxzZSBpZiAoZGlyZWN0aW9uKCkgPT0gUlRMKSB7CisgICAgICAgICAgICAg
ICAgdGV4dERlY29yYXRpb25TZWxlY3Rpb25DbGlwT3V0UmVjdC5tb3ZlKGxvZ2ljYWxXaWR0aEFm
dGVyUmFuZ2UsIDApOworICAgICAgICAgICAgICAgIHRleHREZWNvcmF0aW9uU2VsZWN0aW9uQ2xp
cE91dFJlY3Quc2V0V2lkdGgobG9naWNhbFNlbGVjdGlvbldpZHRoKTsKKyAgICAgICAgICAgIH0g
ZWxzZSB7CisgICAgICAgICAgICAgICAgdGV4dERlY29yYXRpb25TZWxlY3Rpb25DbGlwT3V0UmVj
dC5tb3ZlKGxvZ2ljYWxXaWR0aEJlZm9yZVJhbmdlLCAwKTsKKyAgICAgICAgICAgICAgICB0ZXh0
RGVjb3JhdGlvblNlbGVjdGlvbkNsaXBPdXRSZWN0LnNldFdpZHRoKGxvZ2ljYWxTZWxlY3Rpb25X
aWR0aCk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgcGFpbnREZWNvcmF0aW9u
KGNvbnRleHQsIGZvbnQsIGNvbWJpbmVkVGV4dCwgdGV4dFJ1biwgdGV4dE9yaWdpbiwgYm94UmVj
dCwgdGV4dERlY29yYXRpb25zLCB0ZXh0UGFpbnRTdHlsZSwgdGV4dFNoYWRvdywgdGV4dERlY29y
YXRpb25TZWxlY3Rpb25DbGlwT3V0UmVjdCk7CisgICAgfQogCiAgICAgaWYgKHBhaW50SW5mby5w
aGFzZSA9PSBQYWludFBoYXNlRm9yZWdyb3VuZCkgewogICAgICAgICBwYWludERvY3VtZW50TWFy
a2Vycyhjb250ZXh0LCBib3hPcmlnaW4sIGxpbmVTdHlsZSwgZm9udCwgZmFsc2UpOwpAQCAtNjk1
LDcgKzcxNSw3IEBAIHN0YXRpYyBpbmxpbmUgdm9pZCBtaXJyb3JSVExTZWdtZW50KGZsb2F0IGxv
Z2ljYWxXaWR0aCwgVGV4dERpcmVjdGlvbiBkaXJlY3Rpb24sCiB9CiAKIHZvaWQgSW5saW5lVGV4
dEJveDo6cGFpbnREZWNvcmF0aW9uKEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QgRm9u
dENhc2NhZGUmIGZvbnQsIFJlbmRlckNvbWJpbmVUZXh0KiBjb21iaW5lZFRleHQsIGNvbnN0IFRl
eHRSdW4mIHRleHRSdW4sIGNvbnN0IEZsb2F0UG9pbnQmIHRleHRPcmlnaW4sCi0gICAgY29uc3Qg
RmxvYXRSZWN0JiBib3hSZWN0LCBUZXh0RGVjb3JhdGlvbiBkZWNvcmF0aW9uLCBUZXh0UGFpbnRT
dHlsZSB0ZXh0UGFpbnRTdHlsZSwgY29uc3QgU2hhZG93RGF0YSogc2hhZG93KQorICAgIGNvbnN0
IEZsb2F0UmVjdCYgYm94UmVjdCwgVGV4dERlY29yYXRpb24gZGVjb3JhdGlvbiwgVGV4dFBhaW50
U3R5bGUgdGV4dFBhaW50U3R5bGUsIGNvbnN0IFNoYWRvd0RhdGEqIHNoYWRvdywgY29uc3QgRmxv
YXRSZWN0JiBjbGlwT3V0UmVjdCkKIHsKICAgICBpZiAobV90cnVuY2F0aW9uID09IGNGdWxsVHJ1
bmNhdGlvbikKICAgICAgICAgcmV0dXJuOwpAQCAtNzIxLDggKzc0MSwxNyBAQCB2b2lkIElubGlu
ZVRleHRCb3g6OnBhaW50RGVjb3JhdGlvbihHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0
IEZvbnRDYXNjYWRlJgogCiAgICAgRmxvYXRQb2ludCBsb2NhbE9yaWdpbiA9IGJveFJlY3QubG9j
YXRpb24oKTsKICAgICBsb2NhbE9yaWdpbi5tb3ZlKHN0YXJ0LCAwKTsKKworICAgIGlmICghY2xp
cE91dFJlY3QuaXNFbXB0eSgpKSB7CisgICAgICAgIGNvbnRleHQuc2F2ZSgpOworICAgICAgICBj
b250ZXh0LmNsaXBPdXQoY2xpcE91dFJlY3QpOworICAgIH0KKwogICAgIGRlY29yYXRpb25QYWlu
dGVyLnBhaW50VGV4dERlY29yYXRpb24odGV4dFJ1biwgdGV4dE9yaWdpbiwgbG9jYWxPcmlnaW4p
OwogCisgICAgaWYgKCFjbGlwT3V0UmVjdC5pc0VtcHR5KCkpCisgICAgICAgIGNvbnRleHQucmVz
dG9yZSgpOworCiAgICAgaWYgKGNvbWJpbmVkVGV4dCkKICAgICAgICAgY29udGV4dC5jb25jYXRD
VE0ocm90YXRpb24oYm94UmVjdCwgQ291bnRlcmNsb2Nrd2lzZSkpOwogfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0lubGluZVRleHRCb3guaCBiL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9JbmxpbmVUZXh0Qm94LmgKaW5kZXggOWM0NjE4YTE2NzQ4ZjE0ZDI4NWVjZDcx
NWNmNWFmODBlYzY0ZjJiNC4uNGYxOWM5ZGRkOGU5MTcyZDc0ZGFmYjc1NTkyZmM5MWIxMDBlZWY2
ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0lubGluZVRleHRCb3guaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvSW5saW5lVGV4dEJveC5oCkBAIC0xNTksNyAr
MTU5LDcgQEAgcHJvdGVjdGVkOgogCiBwcml2YXRlOgogICAgIHZvaWQgcGFpbnREZWNvcmF0aW9u
KEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IEZvbnRDYXNjYWRlJiwgUmVuZGVyQ29tYmluZVRleHQq
LCBjb25zdCBUZXh0UnVuJiwgY29uc3QgRmxvYXRQb2ludCYgdGV4dE9yaWdpbiwgY29uc3QgRmxv
YXRSZWN0JiBib3hSZWN0LAotICAgICAgICBUZXh0RGVjb3JhdGlvbiwgVGV4dFBhaW50U3R5bGUs
IGNvbnN0IFNoYWRvd0RhdGEqKTsKKyAgICAgICAgVGV4dERlY29yYXRpb24sIFRleHRQYWludFN0
eWxlLCBjb25zdCBTaGFkb3dEYXRhKiwgY29uc3QgRmxvYXRSZWN0JiBjbGlwT3V0UmVjdCk7CiAg
ICAgdm9pZCBwYWludFNlbGVjdGlvbihHcmFwaGljc0NvbnRleHQmLCBjb25zdCBGbG9hdFBvaW50
JiBib3hPcmlnaW4sIGNvbnN0IFJlbmRlclN0eWxlJiwgY29uc3QgRm9udENhc2NhZGUmLCBjb25z
dCBDb2xvciYgdGV4dENvbG9yKTsKICAgICB2b2lkIHBhaW50RG9jdW1lbnRNYXJrZXIoR3JhcGhp
Y3NDb250ZXh0JiwgY29uc3QgRmxvYXRQb2ludCYgYm94T3JpZ2luLCBSZW5kZXJlZERvY3VtZW50
TWFya2VyJiwgY29uc3QgUmVuZGVyU3R5bGUmLCBjb25zdCBGb250Q2FzY2FkZSYsIGJvb2wgZ3Jh
bW1hcik7CiAgICAgdm9pZCBwYWludFRleHRNYXRjaE1hcmtlcihHcmFwaGljc0NvbnRleHQmLCBj
b25zdCBGbG9hdFBvaW50JiBib3hPcmlnaW4sIFJlbmRlcmVkRG9jdW1lbnRNYXJrZXImLCBjb25z
dCBSZW5kZXJTdHlsZSYsIGNvbnN0IEZvbnRDYXNjYWRlJik7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUGFpbnRQaGFzZS5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1BhaW50UGhhc2UuaAppbmRleCA0OWZiN2RmZjhhNzc3NjAyNzhjODM3MzFlYzE2NzBmMDg1ZjVi
ZDI3Li5mMTY3ZTg3YThlMDIyMTIyY2RmZjA0ZDZiNjY4YTdjOWMyMDlkMzE2IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUGFpbnRQaGFzZS5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9QYWludFBoYXNlLmgKQEAgLTYzLDYgKzYzLDcgQEAgZW51bSBQYWludEJl
aGF2aW9yRmxhZ3MgewogICAgIFBhaW50QmVoYXZpb3JTa2lwUm9vdEJhY2tncm91bmQgICAgICAg
ICAgPSAxIDw8IDYsCiAgICAgUGFpbnRCZWhhdmlvclJvb3RCYWNrZ3JvdW5kT25seSAgICAgICAg
ICA9IDEgPDwgNywKICAgICBQYWludEJlaGF2aW9yU2VsZWN0aW9uQW5kQmFja2dyb3VuZHNPbmx5
ID0gMSA8PCA4LAorICAgIFBhaW50QmVoYXZpb3JFeGNsdWRlU2VsZWN0aW9uICAgICAgICAgICAg
PSAxIDw8IDksCiB9OwogCiB0eXBlZGVmIHVuc2lnbmVkIFBhaW50QmVoYXZpb3I7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXIuY3BwIGIvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyLmNwcAppbmRleCA1ZjkzYTE4ZmY4ZWY1Mzg2Yzg0
Y2M4ZDhkNjY2ZGE1OWQ0MDA0MWYyLi5kYTFjNDNhMWI0ZDdlMTMzYjlmNDJkYTE5NmZlNmI3MGMy
YTAwM2M1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXIu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllci5jcHAKQEAgLTQz
NzUsNiArNDM3NSw5IEBAIHZvaWQgUmVuZGVyTGF5ZXI6OnBhaW50TGF5ZXJDb250ZW50cyhHcmFw
aGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IExheWVyUGFpbnRpCiAgICAgICAgIGVsc2UgaWYg
KGxvY2FsUGFpbnRGbGFncyAmIFBhaW50TGF5ZXJQYWludGluZ1Jvb3RCYWNrZ3JvdW5kT25seSkK
ICAgICAgICAgICAgIHBhaW50QmVoYXZpb3IgfD0gUGFpbnRCZWhhdmlvclJvb3RCYWNrZ3JvdW5k
T25seTsKIAorICAgICAgICBpZiAocGFpbnRpbmdJbmZvLnBhaW50QmVoYXZpb3IgJiBQYWludEJl
aGF2aW9yRXhjbHVkZVNlbGVjdGlvbikKKyAgICAgICAgICAgIHBhaW50QmVoYXZpb3IgfD0gUGFp
bnRCZWhhdmlvckV4Y2x1ZGVTZWxlY3Rpb247CisKICAgICAgICAgTGF5b3V0UmVjdCBwYWludERp
cnR5UmVjdCA9IGxvY2FsUGFpbnRpbmdJbmZvLnBhaW50RGlydHlSZWN0OwogICAgICAgICBpZiAo
c2hvdWxkUGFpbnRDb250ZW50IHx8IHNob3VsZFBhaW50T3V0bGluZSB8fCBpc1BhaW50aW5nT3Zl
cmxheVNjcm9sbGJhcnMpIHsKICAgICAgICAgICAgIC8vIENvbGxlY3QgdGhlIGZyYWdtZW50cy4g
VGhpcyB3aWxsIGNvbXB1dGUgdGhlIGNsaXAgcmVjdGFuZ2xlcyBhbmQgcGFpbnQgb2Zmc2V0cyBm
b3IgZWFjaCBsYXllciBmcmFnbWVudCwgYXMgd2VsbCBhcyB3aGV0aGVyIG9yIG5vdCB0aGUgY29u
dGVudCBvZiBlYWNoCkBAIC00NzcxLDYgKzQ3NzQsOSBAQCB2b2lkIFJlbmRlckxheWVyOjpwYWlu
dEZvcmVncm91bmRGb3JGcmFnbWVudHMoY29uc3QgTGF5ZXJGcmFnbWVudHMmIGxheWVyRnJhZ21l
bgogICAgIGVsc2UKICAgICAgICAgbG9jYWxQYWludEJlaGF2aW9yID0gcGFpbnRCZWhhdmlvcjsK
IAorICAgIGlmIChsb2NhbFBhaW50aW5nSW5mby5wYWludEJlaGF2aW9yICYgUGFpbnRCZWhhdmlv
ckV4Y2x1ZGVTZWxlY3Rpb24pCisgICAgICAgIGxvY2FsUGFpbnRCZWhhdmlvciB8PSBQYWludEJl
aGF2aW9yRXhjbHVkZVNlbGVjdGlvbjsKKwogICAgIC8vIE9wdGltaXplIGNsaXBwaW5nIGZvciB0
aGUgc2luZ2xlIGZyYWdtZW50IGNhc2UuCiAgICAgYm9vbCBzaG91bGRDbGlwID0gbG9jYWxQYWlu
dGluZ0luZm8uY2xpcFRvRGlydHlSZWN0ICYmIGxheWVyRnJhZ21lbnRzLnNpemUoKSA9PSAxICYm
IGxheWVyRnJhZ21lbnRzWzBdLnNob3VsZFBhaW50Q29udGVudCAmJiAhbGF5ZXJGcmFnbWVudHNb
MF0uZm9yZWdyb3VuZFJlY3QuaXNFbXB0eSgpOwogICAgIENsaXBSZWN0IGNsaXBwZWRSZWN0Owpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclJlcGxhY2VkLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJSZXBsYWNlZC5jcHAKaW5kZXggNjgzZTAw
ZmIyNDliYmZjODQ2ODM2ZTA4ZDQ2YWE4YWY4ZGE5NjE1Yy4uZjlhMjBlOTkxNjliZWRiOThlZmJh
OTI0MGVkNjJlZTg5Y2Y4NzVlYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlclJlcGxhY2VkLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
UmVwbGFjZWQuY3BwCkBAIC0yMDUsNiArMjA1LDkgQEAgdm9pZCBSZW5kZXJSZXBsYWNlZDo6cGFp
bnQoUGFpbnRJbmZvJiBwYWludEluZm8sIGNvbnN0IExheW91dFBvaW50JiBwYWludE9mZnNldCkK
IAogYm9vbCBSZW5kZXJSZXBsYWNlZDo6c2hvdWxkUGFpbnQoUGFpbnRJbmZvJiBwYWludEluZm8s
IGNvbnN0IExheW91dFBvaW50JiBwYWludE9mZnNldCkKIHsKKyAgICBpZiAoKHBhaW50SW5mby5w
YWludEJlaGF2aW9yICYgUGFpbnRCZWhhdmlvckV4Y2x1ZGVTZWxlY3Rpb24pICYmIGlzU2VsZWN0
ZWQoKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCiAgICAgaWYgKHBhaW50SW5mby5waGFzZSAh
PSBQYWludFBoYXNlRm9yZWdyb3VuZCAmJiBwYWludEluZm8ucGhhc2UgIT0gUGFpbnRQaGFzZU91
dGxpbmUgJiYgcGFpbnRJbmZvLnBoYXNlICE9IFBhaW50UGhhc2VTZWxmT3V0bGluZSAKICAgICAg
ICAgICAgICYmIHBhaW50SW5mby5waGFzZSAhPSBQYWludFBoYXNlU2VsZWN0aW9uICYmIHBhaW50
SW5mby5waGFzZSAhPSBQYWludFBoYXNlTWFzaykKICAgICAgICAgcmV0dXJuIGZhbHNlOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1RleHREZWNvcmF0aW9uUGFpbnRlci5o
IGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1RleHREZWNvcmF0aW9uUGFpbnRlci5oCmluZGV4
IDRlOTU1ODdiZTc5OWRmMzg4NzgxNjc0MGFkNWNlYzczNzc0NTljZTAuLjZlMmNhOGQ1NDgwY2Vi
N2UzY2NjMGIxZjdiNmNmMTM3Y2M1NzU4N2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9UZXh0RGVjb3JhdGlvblBhaW50ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvVGV4dERlY29yYXRpb25QYWludGVyLmgKQEAgLTI5LDYgKzI5LDcgQEAKIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIAogY2xhc3MgRm9udENhc2NhZGU7CitjbGFzcyBGbG9hdFJlY3Q7CiBjbGFz
cyBHcmFwaGljc0NvbnRleHQ7CiBjbGFzcyBJbmxpbmVUZXh0Qm94OwogY2xhc3MgUmVuZGVyT2Jq
ZWN0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1RleHRQYWludFN0eWxl
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9UZXh0UGFpbnRTdHlsZS5jcHAKaW5kZXgg
NTc1NmRhMGZiNjYyZTEyZjlmMmYxNDU4YWNjYzQxNjZlMGY4N2NlMi4uNDIzNjBkZjM1N2QxMzYw
YTRhYmZhMGFkYjgxYmRhYmI0MDk1NThmMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1RleHRQYWludFN0eWxlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
VGV4dFBhaW50U3R5bGUuY3BwCkBAIC0xMTYsMTAgKzExNiwxMSBAQCBUZXh0UGFpbnRTdHlsZSBj
b21wdXRlVGV4dFBhaW50U3R5bGUoY29uc3QgRnJhbWUmIGZyYW1lLCBjb25zdCBSZW5kZXJTdHls
ZSYgbGluZQogICAgIHJldHVybiBwYWludFN0eWxlOwogfQogCi1UZXh0UGFpbnRTdHlsZSBjb21w
dXRlVGV4dFNlbGVjdGlvblBhaW50U3R5bGUoY29uc3QgVGV4dFBhaW50U3R5bGUmIHRleHRQYWlu
dFN0eWxlLCBjb25zdCBSZW5kZXJUZXh0JiByZW5kZXJlciwgY29uc3QgUmVuZGVyU3R5bGUmIGxp
bmVTdHlsZSwgY29uc3QgUGFpbnRJbmZvJiBwYWludEluZm8sIGJvb2wmIHBhaW50U2VsZWN0ZWRU
ZXh0T25seSwgYm9vbCYgcGFpbnRTZWxlY3RlZFRleHRTZXBhcmF0ZWx5LCBjb25zdCBTaGFkb3dE
YXRhKiYgc2VsZWN0aW9uU2hhZG93KQorVGV4dFBhaW50U3R5bGUgY29tcHV0ZVRleHRTZWxlY3Rp
b25QYWludFN0eWxlKGNvbnN0IFRleHRQYWludFN0eWxlJiB0ZXh0UGFpbnRTdHlsZSwgY29uc3Qg
UmVuZGVyVGV4dCYgcmVuZGVyZXIsIGNvbnN0IFJlbmRlclN0eWxlJiBsaW5lU3R5bGUsIGNvbnN0
IFBhaW50SW5mbyYgcGFpbnRJbmZvLCBib29sJiBwYWludFNlbGVjdGVkVGV4dE9ubHksIGJvb2wm
IHBhaW50U2VsZWN0ZWRUZXh0U2VwYXJhdGVseSwgYm9vbCYgcGFpbnROb25TZWxlY3RlZFRleHRP
bmx5LCBjb25zdCBTaGFkb3dEYXRhKiYgc2VsZWN0aW9uU2hhZG93KQogewogICAgIHBhaW50U2Vs
ZWN0ZWRUZXh0T25seSA9IChwYWludEluZm8ucGhhc2UgPT0gUGFpbnRQaGFzZVNlbGVjdGlvbik7
Ci0gICAgcGFpbnRTZWxlY3RlZFRleHRTZXBhcmF0ZWx5ID0gZmFsc2U7CisgICAgcGFpbnRTZWxl
Y3RlZFRleHRTZXBhcmF0ZWx5ID0gcGFpbnRJbmZvLnBhaW50QmVoYXZpb3IgJiBQYWludEJlaGF2
aW9yRXhjbHVkZVNlbGVjdGlvbjsKKyAgICBwYWludE5vblNlbGVjdGVkVGV4dE9ubHkgPSBwYWlu
dEluZm8ucGFpbnRCZWhhdmlvciAmIFBhaW50QmVoYXZpb3JFeGNsdWRlU2VsZWN0aW9uOwogICAg
IHNlbGVjdGlvblNoYWRvdyA9IChwYWludEluZm8uZm9yY2VUZXh0Q29sb3IoKSkgPyBudWxscHRy
IDogbGluZVN0eWxlLnRleHRTaGFkb3coKTsKIAogICAgIFRleHRQYWludFN0eWxlIHNlbGVjdGlv
blBhaW50U3R5bGUgPSB0ZXh0UGFpbnRTdHlsZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9UZXh0UGFpbnRTdHlsZS5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Rl
eHRQYWludFN0eWxlLmgKaW5kZXggM2U4YmUyN2YyNjI3MTcxNjRkMGQ5OGU2MTAzYTlhZDJkMGZh
N2E2NS4uZGYyMTcxYWUyYzk2OTcwMmU2NTk2YmY1OWM2OTI3NzA5NTA4ZWM1YyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1RleHRQYWludFN0eWxlLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1RleHRQYWludFN0eWxlLmgKQEAgLTU1LDcgKzU1LDcgQEAgc3Ry
dWN0IFRleHRQYWludFN0eWxlIHsKIH07CiAKIFRleHRQYWludFN0eWxlIGNvbXB1dGVUZXh0UGFp
bnRTdHlsZShjb25zdCBGcmFtZSYsIGNvbnN0IFJlbmRlclN0eWxlJiwgY29uc3QgUGFpbnRJbmZv
Jik7Ci1UZXh0UGFpbnRTdHlsZSBjb21wdXRlVGV4dFNlbGVjdGlvblBhaW50U3R5bGUoY29uc3Qg
VGV4dFBhaW50U3R5bGUmLCBjb25zdCBSZW5kZXJUZXh0JiwgY29uc3QgUmVuZGVyU3R5bGUmLCBj
b25zdCBQYWludEluZm8mLCBib29sJiBwYWludFNlbGVjdGVkVGV4dE9ubHksIGJvb2wmIHBhaW50
U2VsZWN0ZWRUZXh0U2VwYXJhdGVseSwgY29uc3QgU2hhZG93RGF0YSomIHNlbGVjdGlvblNoYWRv
dyk7CitUZXh0UGFpbnRTdHlsZSBjb21wdXRlVGV4dFNlbGVjdGlvblBhaW50U3R5bGUoY29uc3Qg
VGV4dFBhaW50U3R5bGUmLCBjb25zdCBSZW5kZXJUZXh0JiwgY29uc3QgUmVuZGVyU3R5bGUmLCBj
b25zdCBQYWludEluZm8mLCBib29sJiBwYWludFNlbGVjdGVkVGV4dE9ubHksIGJvb2wmIHBhaW50
U2VsZWN0ZWRUZXh0U2VwYXJhdGVseSwgYm9vbCYgcGFpbnROb25TZWxlY3RlZFRleHRPbmx5LCBj
b25zdCBTaGFkb3dEYXRhKiYgc2VsZWN0aW9uU2hhZG93KTsKIAogZW51bSBGaWxsQ29sb3JUeXBl
IHsgVXNlTm9ybWFsRmlsbENvbG9yLCBVc2VFbXBoYXNpc01hcmtDb2xvciB9Owogdm9pZCB1cGRh
dGVHcmFwaGljc0NvbnRleHQoR3JhcGhpY3NDb250ZXh0JiwgY29uc3QgVGV4dFBhaW50U3R5bGUm
LCBGaWxsQ29sb3JUeXBlID0gVXNlTm9ybWFsRmlsbENvbG9yKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9UZXh0UGFpbnRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvVGV4dFBhaW50ZXIuY3BwCmluZGV4IGE4MzVlNjc2OGRiN2IyZmRkODZlN2JjOTVhZTc4
MjRlNzFjNzczYjEuLmFmZmZmYTRmNmU5NjhiYWFkODEzNWU2MDA0MWEwMTAzMzk2NWUxZWQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9UZXh0UGFpbnRlci5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1RleHRQYWludGVyLmNwcApAQCAtMTcwLDcgKzE3MCw3
IEBAIHZvaWQgVGV4dFBhaW50ZXI6OnBhaW50VGV4dEFuZEVtcGhhc2lzTWFya3NJZk5lZWRlZChj
b25zdCBUZXh0UnVuJiB0ZXh0UnVuLCBjb25zCiB9CiAgICAgCiB2b2lkIFRleHRQYWludGVyOjpw
YWludFRleHQoY29uc3QgVGV4dFJ1biYgdGV4dFJ1biwgdW5zaWduZWQgbGVuZ3RoLCBjb25zdCBG
bG9hdFJlY3QmIGJveFJlY3QsIGNvbnN0IEZsb2F0UG9pbnQmIHRleHRPcmlnaW4sIHVuc2lnbmVk
IHNlbGVjdGlvblN0YXJ0LCB1bnNpZ25lZCBzZWxlY3Rpb25FbmQsCi0gICAgYm9vbCBwYWludFNl
bGVjdGVkVGV4dE9ubHksIGJvb2wgcGFpbnRTZWxlY3RlZFRleHRTZXBhcmF0ZWx5KQorICAgIGJv
b2wgcGFpbnRTZWxlY3RlZFRleHRPbmx5LCBib29sIHBhaW50U2VsZWN0ZWRUZXh0U2VwYXJhdGVs
eSwgYm9vbCBwYWludE5vblNlbGVjdGVkVGV4dE9ubHkpCiB7CiAgICAgQVNTRVJUKG1fZm9udCk7
CiAgICAgaWYgKCFwYWludFNlbGVjdGVkVGV4dE9ubHkpIHsKQEAgLTE4OSw2ICsxODksMTAgQEAg
dm9pZCBUZXh0UGFpbnRlcjo6cGFpbnRUZXh0KGNvbnN0IFRleHRSdW4mIHRleHRSdW4sIHVuc2ln
bmVkIGxlbmd0aCwgY29uc3QgRmxvYXQKICAgICAgICAgICAgICAgICBwYWludFRleHRBbmRFbXBo
YXNpc01hcmtzSWZOZWVkZWQodGV4dFJ1biwgYm94UmVjdCwgdGV4dE9yaWdpbiwgc2VsZWN0aW9u
RW5kLCBsZW5ndGgsIG1fdGV4dFBhaW50U3R5bGUsIG1fdGV4dFNoYWRvdyk7CiAgICAgICAgIH0K
ICAgICB9CisKKyAgICBpZiAocGFpbnROb25TZWxlY3RlZFRleHRPbmx5KQorICAgICAgICByZXR1
cm47CisKICAgICAvLyBQYWludCBvbmx5IHRoZSB0ZXh0IHRoYXQgaXMgc2VsZWN0ZWQuCiAgICAg
aWYgKChwYWludFNlbGVjdGVkVGV4dE9ubHkgfHwgcGFpbnRTZWxlY3RlZFRleHRTZXBhcmF0ZWx5
KSAmJiBzZWxlY3Rpb25TdGFydCA8IHNlbGVjdGlvbkVuZCkgewogICAgICAgICBHcmFwaGljc0Nv
bnRleHRTdGF0ZVNhdmVyIHN0YXRlU2F2ZXIobV9jb250ZXh0LCBtX3NlbGVjdGlvblBhaW50U3R5
bGUuc3Ryb2tlV2lkdGggPiAwKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9UZXh0UGFpbnRlci5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1RleHRQYWludGVyLmgK
aW5kZXggNmFjMDQwMTQyODBkNDBhNGMyMTczNmNkZmU0N2M2Zjc4OWY2ODE2Zi4uZDk1MzZjNzAw
ZTgzMDJiNGQzMjkzNTg5ZDY5ZDM1YTFlNzE2Mjc0ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1RleHRQYWludGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1RleHRQYWludGVyLmgKQEAgLTU3LDcgKzU3LDcgQEAgcHVibGljOgogICAgIHZvaWQgYWRkVGV4
dFNoYWRvdyhjb25zdCBTaGFkb3dEYXRhKiB0ZXh0U2hhZG93LCBjb25zdCBTaGFkb3dEYXRhKiBz
ZWxlY3Rpb25TaGFkb3cpOwogCiAgICAgdm9pZCBwYWludFRleHQoY29uc3QgVGV4dFJ1biYsIHVu
c2lnbmVkIGxlbmd0aCwgY29uc3QgRmxvYXRSZWN0JiBib3hSZWN0LCBjb25zdCBGbG9hdFBvaW50
JiB0ZXh0T3JpZ2luLAotICAgICAgICB1bnNpZ25lZCBzZWxlY3Rpb25TdGFydCA9IDAsIHVuc2ln
bmVkIHNlbGVjdGlvbkVuZCA9IDAsIGJvb2wgcGFpbnRTZWxlY3RlZFRleHRPbmx5ID0gZmFsc2Us
IGJvb2wgcGFpbnRTZWxlY3RlZFRleHRTZXBhcmF0ZWx5ID0gZmFsc2UpOworICAgICAgICB1bnNp
Z25lZCBzZWxlY3Rpb25TdGFydCA9IDAsIHVuc2lnbmVkIHNlbGVjdGlvbkVuZCA9IDAsIGJvb2wg
cGFpbnRTZWxlY3RlZFRleHRPbmx5ID0gZmFsc2UsIGJvb2wgcGFpbnRTZWxlY3RlZFRleHRTZXBh
cmF0ZWx5ID0gZmFsc2UsIGJvb2wgcGFpbnROb25TZWxlY3RlZFRleHRPbmx5ID0gZmFsc2UpOwog
CiBwcml2YXRlOgogICAgIHZvaWQgZHJhd1RleHRPckVtcGhhc2lzTWFya3MoY29uc3QgRm9udENh
c2NhZGUmLCBjb25zdCBUZXh0UnVuJiwgY29uc3QgQXRvbWljU3RyaW5nJiBlbXBoYXNpc01hcmss
IGZsb2F0IGVtcGhhc2lzTWFya09mZnNldCwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1No
YXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuY3BwIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL1dl
YkNvcmVBcmd1bWVudENvZGVycy5jcHAKaW5kZXggNjE2NmFiNmVhMTUxNjE5Y2Q5N2FmMWI3M2I2
YTQ5NWFlNzA5OGYyYy4uODRjY2Y4ZjQ5YjQ0NGMzNDM5ZmI2NWFhZGUwYjc4ZjY5ZWE4MWZmYiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5j
cHAKKysrIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5jcHAK
QEAgLTIwODIsMTIgKzIwODIsMTQgQEAgdm9pZCBBcmd1bWVudENvZGVyPFRleHRJbmRpY2F0b3JE
YXRhPjo6ZW5jb2RlKEVuY29kZXImIGVuY29kZXIsIGNvbnN0IFRleHRJbmRpY2EKICAgICBlbmNv
ZGVyIDw8IHRleHRJbmRpY2F0b3JEYXRhLnNlbGVjdGlvblJlY3RJblJvb3RWaWV3Q29vcmRpbmF0
ZXM7CiAgICAgZW5jb2RlciA8PCB0ZXh0SW5kaWNhdG9yRGF0YS50ZXh0Qm91bmRpbmdSZWN0SW5S
b290Vmlld0Nvb3JkaW5hdGVzOwogICAgIGVuY29kZXIgPDwgdGV4dEluZGljYXRvckRhdGEudGV4
dFJlY3RzSW5Cb3VuZGluZ1JlY3RDb29yZGluYXRlczsKKyAgICBlbmNvZGVyIDw8IHRleHRJbmRp
Y2F0b3JEYXRhLmNvbnRlbnRJbWFnZVdpdGhvdXRTZWxlY3Rpb25SZWN0SW5Sb290Vmlld0Nvb3Jk
aW5hdGVzOwogICAgIGVuY29kZXIgPDwgdGV4dEluZGljYXRvckRhdGEuY29udGVudEltYWdlU2Nh
bGVGYWN0b3I7CiAgICAgZW5jb2Rlci5lbmNvZGVFbnVtKHRleHRJbmRpY2F0b3JEYXRhLnByZXNl
bnRhdGlvblRyYW5zaXRpb24pOwogICAgIGVuY29kZXIgPDwgc3RhdGljX2Nhc3Q8dWludDY0X3Q+
KHRleHRJbmRpY2F0b3JEYXRhLm9wdGlvbnMpOwogCiAgICAgZW5jb2RlT3B0aW9uYWxJbWFnZShl
bmNvZGVyLCB0ZXh0SW5kaWNhdG9yRGF0YS5jb250ZW50SW1hZ2UuZ2V0KCkpOwogICAgIGVuY29k
ZU9wdGlvbmFsSW1hZ2UoZW5jb2RlciwgdGV4dEluZGljYXRvckRhdGEuY29udGVudEltYWdlV2l0
aEhpZ2hsaWdodC5nZXQoKSk7CisgICAgZW5jb2RlT3B0aW9uYWxJbWFnZShlbmNvZGVyLCB0ZXh0
SW5kaWNhdG9yRGF0YS5jb250ZW50SW1hZ2VXaXRob3V0U2VsZWN0aW9uLmdldCgpKTsKIH0KIAog
Ym9vbCBBcmd1bWVudENvZGVyPFRleHRJbmRpY2F0b3JEYXRhPjo6ZGVjb2RlKERlY29kZXImIGRl
Y29kZXIsIFRleHRJbmRpY2F0b3JEYXRhJiB0ZXh0SW5kaWNhdG9yRGF0YSkKQEAgLTIxMDEsNiAr
MjEwMyw5IEBAIGJvb2wgQXJndW1lbnRDb2RlcjxUZXh0SW5kaWNhdG9yRGF0YT46OmRlY29kZShE
ZWNvZGVyJiBkZWNvZGVyLCBUZXh0SW5kaWNhdG9yRGF0CiAgICAgaWYgKCFkZWNvZGVyLmRlY29k
ZSh0ZXh0SW5kaWNhdG9yRGF0YS50ZXh0UmVjdHNJbkJvdW5kaW5nUmVjdENvb3JkaW5hdGVzKSkK
ICAgICAgICAgcmV0dXJuIGZhbHNlOwogCisgICAgaWYgKCFkZWNvZGVyLmRlY29kZSh0ZXh0SW5k
aWNhdG9yRGF0YS5jb250ZW50SW1hZ2VXaXRob3V0U2VsZWN0aW9uUmVjdEluUm9vdFZpZXdDb29y
ZGluYXRlcykpCisgICAgICAgIHJldHVybiBmYWxzZTsKKwogICAgIGlmICghZGVjb2Rlci5kZWNv
ZGUodGV4dEluZGljYXRvckRhdGEuY29udGVudEltYWdlU2NhbGVGYWN0b3IpKQogICAgICAgICBy
ZXR1cm4gZmFsc2U7CiAKQEAgLTIxMTgsNiArMjEyMyw5IEBAIGJvb2wgQXJndW1lbnRDb2RlcjxU
ZXh0SW5kaWNhdG9yRGF0YT46OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyLCBUZXh0SW5kaWNhdG9y
RGF0CiAgICAgaWYgKCFkZWNvZGVPcHRpb25hbEltYWdlKGRlY29kZXIsIHRleHRJbmRpY2F0b3JE
YXRhLmNvbnRlbnRJbWFnZVdpdGhIaWdobGlnaHQpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAK
KyAgICBpZiAoIWRlY29kZU9wdGlvbmFsSW1hZ2UoZGVjb2RlciwgdGV4dEluZGljYXRvckRhdGEu
Y29udGVudEltYWdlV2l0aG91dFNlbGVjdGlvbikpCisgICAgICAgIHJldHVybiBmYWxzZTsKKwog
ICAgIHJldHVybiB0cnVlOwogfQogCg==
</data>
<flag name="review"
          id="325447"
          type_id="1"
          status="+"
          setter="thorton"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>303872</attachid>
            <date>2017-03-08 17:20:23 -0800</date>
            <delta_ts>2017-03-08 17:44:48 -0800</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-169309-20170308171957.patch</filename>
            <type>text/plain</type>
            <size>31019</size>
            <attacher name="Wenson Hsieh">wenson_hsieh</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjEzNTQ3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOWRmODY4MjhhMzM4YTg0
ZjNkZWEyYzNmODFiM2EwMTQzYTExZGRlNC4uZGRiMThiNWQyZmQzYjU3Y2YwMGZiZjQ3MTRlM2Fj
OGE0ODAxZDhiMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDc4IEBACisyMDE3LTAzLTA3ICBXZW5z
b24gSHNpZWggIDx3ZW5zb25faHNpZWhAYXBwbGUuY29tPgorCisgICAgICAgIEFkZCBUZXh0SW5k
aWNhdG9yIHN1cHBvcnQgZm9yIHByb3ZpZGluZyBhIHNuYXBzaG90IGV4Y2x1ZGluZyBzZWxlY3Rl
ZCBjb250ZW50CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0xNjkzMDkKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzMwODgzNTI1PgorCisgICAgICAgIFJl
dmlld2VkIGJ5IFRpbSBIb3J0b24uCisKKyAgICAgICAgV29yayB0b3dhcmRzIDxyZGFyOi8vcHJv
YmxlbS8zMDg4Mjk3ND4uIEFkZHMgc3VwcG9ydCBpbiBUZXh0SW5kaWNhdG9yIHRvIGluY2x1ZGUg
YSBzbmFwc2hvdCBvZiBhbGwgdmlzaWJsZQorICAgICAgICBjb250ZW50LCBleGNsdWRpbmcgbm9k
ZXMgY2FwdHVyZWQgaW4gdGhlIGN1cnJlbnQgc2VsZWN0aW9uLiBUaGlzIGNvbWVzIGluIHRoZSBm
b3JtIG9mIHRoZSBuZXcKKyAgICAgICAgVGV4dEluZGljYXRvck9wdGlvbkluY2x1ZGVTbmFwc2hv
dE9mQWxsVmlzaWJsZUNvbnRlbnRXaXRob3V0U2VsZWN0aW9uIGZsYWcgLS0gc2VlIHBlci1tZXRo
b2QgY2hhbmdlcyBmb3IgbW9yZSBkZXRhaWxzLgorCisgICAgICAgIE5vIG5ldyB0ZXN0cywgc2lu
Y2UgdGhlcmUgaXMgbm8gY2hhbmdlIGluIGJlaGF2aW9yIHlldC4KKworICAgICAgICAqIHBhZ2Uv
RnJhbWVTbmFwc2hvdHRpbmcuY3BwOgorICAgICAgICAoV2ViQ29yZTo6c25hcHNob3RGcmFtZVJl
Y3RXaXRoQ2xpcCk6CisgICAgICAgICogcGFnZS9GcmFtZVNuYXBzaG90dGluZy5oOgorCisgICAg
ICAgIEludHJvZHVjZSBhIG5ldyBzbmFwc2hvdCBvcHRpb24gZmxhZywgU25hcHNob3RPcHRpb25z
UGFpbnRFdmVyeXRoaW5nRXhjbHVkaW5nU2VsZWN0aW9uLgorCisgICAgICAgIChXZWJDb3JlOjpz
bmFwc2hvdEZyYW1lUmVjdFdpdGhDbGlwKToKKyAgICAgICAgKiBwYWdlL1RleHRJbmRpY2F0b3Iu
Y3BwOgorCisgICAgICAgIElmIFRleHRJbmRpY2F0b3JPcHRpb25JbmNsdWRlU25hcHNob3RPZkFs
bFZpc2libGVDb250ZW50V2l0aG91dFNlbGVjdGlvbiBpcyB0dXJuZWQgb24sIGNhcHR1cmUgYW5k
IGluY2x1ZGUgYQorICAgICAgICBzbmFwc2hvdCBvZiB0aGUgdmlzaWJsZSBib3VuZHMgb2YgdGhl
IGZyYW1lLgorCisgICAgICAgIChXZWJDb3JlOjp0YWtlU25hcHNob3QpOgorICAgICAgICAoV2Vi
Q29yZTo6dGFrZVNuYXBzaG90cyk6CisgICAgICAgIChXZWJDb3JlOjppbml0aWFsaXplSW5kaWNh
dG9yKToKKyAgICAgICAgKiBwYWdlL1RleHRJbmRpY2F0b3IuaDoKKworICAgICAgICBJbnRyb2R1
Y2UgVGV4dEluZGljYXRvck9wdGlvbkluY2x1ZGVTbmFwc2hvdE9mQWxsVmlzaWJsZUNvbnRlbnRX
aXRob3V0U2VsZWN0aW9uLgorCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvRm9udENhc2Nh
ZGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Rm9udENhc2NhZGU6OndpZHRoT2ZUZXh0UmFuZ2Up
OgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0ZvbnRDYXNjYWRlLmg6CisKKyAgICAgICAg
VGVhY2ggRm9udENhc2NhZGUgdG8gcmV0cmlldmUgdGhlIHdpZHRoIG9mIGEgcmFuZ2UgaW4gYSBU
ZXh0UnVuLCBhbmQgYWxzbyBjb21wdXRlIHRoZSB3aWR0aHMgb2YgdGhlIFRleHRSdW4KKyAgICAg
ICAgYmVmb3JlIGFuZCBhZnRlciB0aGUgcmFuZ2UuIFRoaXMgaXMgdXNlZCBieSBJbmxpbmVUZXh0
Qm94IHRvIGNvbXB1dGUgdGhlIHBhaW50aW5nIHJlY3QgdG8gY2xpcCBvdXQgd2hlbiBza2lwcGlu
ZworICAgICAgICB0ZXh0IGRlY29yYXRpb25zIGZvciB0aGUgc2VsZWN0ZWQgcmVnaW9uIG9mIHRo
ZSBUZXh0UnVuLgorCisgICAgICAgICogcmVuZGVyaW5nL0lubGluZVRleHRCb3guY3BwOgorCisg
ICAgICAgIFRlYWNoIElubGluZVRleHRCb3ggdG8gcmVzcGVjdCBQYWludEJlaGF2aW9yRXhjbHVk
ZVNlbGVjdGlvbi4gV2hlbiBwYWludGluZyB0ZXh0LCBpZiB0aGlzIHBhaW50IGJlaGF2aW9yIGlz
CisgICAgICAgIHVzZWQsIHdlIHdpbGwgbm90IHBhaW50IHRoZSBwb3J0aW9uIG9mIHRoZSB0ZXh0
IHJ1biB0aGF0IGxpZXMgaW5zaWRlIHRoZSByYW5nZSBkZXRlcm1pbmVkIGJ5IHNlbGVjdGlvblN0
YXJ0RW5kKCkuCisgICAgICAgIFNpbWlsYXJseSwgd2hlbiBwYWludGluZyB0ZXh0IGRlY29yYXRp
b25zLCB3ZSBleGNsdWRlIHRoZSByZWN0IHN1cnJvdW5kaW5nIHRoZSBzZWxlY3RlZCBjb250ZW50
LgorCisgICAgICAgIChXZWJDb3JlOjpJbmxpbmVUZXh0Qm94OjpwYWludCk6CisgICAgICAgIChX
ZWJDb3JlOjpJbmxpbmVUZXh0Qm94OjpwYWludERlY29yYXRpb24pOgorICAgICAgICAqIHJlbmRl
cmluZy9JbmxpbmVUZXh0Qm94Lmg6CisgICAgICAgICogcmVuZGVyaW5nL1BhaW50UGhhc2UuaDoK
KworICAgICAgICBJbnRyb2R1Y2UgUGFpbnRCZWhhdmlvckV4Y2x1ZGVTZWxlY3Rpb24sIHVzZWQg
dG8gaW5mb3JtIG1lbWJlcnMgb2YgdGhlIHJlbmRlciB0cmVlIG5vdCB0byBwYWludCBwb3J0aW9u
cyB0aGF0CisgICAgICAgIGxpZSB3aXRoaW4gdGhlIGN1cnJlbnQgc2VsZWN0aW9uIHJhbmdlLgor
CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckxheWVyLmNwcDoKKworICAgICAgICBQcm9wYWdh
dGUgdGhlIFBhaW50QmVoYXZpb3JFeGNsdWRlU2VsZWN0aW9uIGZsYWcgdG8gY2hpbGRyZW4gd2hl
biBwYWludGluZy4KKworICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXI6OnBhaW50TGF5ZXJD
b250ZW50cyk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJMYXllcjo6cGFpbnRGb3JlZ3JvdW5k
Rm9yRnJhZ21lbnRzKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyUmVwbGFjZWQuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6UmVuZGVyUmVwbGFjZWQ6OnNob3VsZFBhaW50KToKKworICAgICAg
ICBUZWFjaCBSZW5kZXJSZXBsYWNlZCB0byByZXNwZWN0IFBhaW50QmVoYXZpb3JFeGNsdWRlU2Vs
ZWN0aW9uIGJ5IGJhaWxpbmcgZnJvbSBwYWludGluZyBpZiBpdCBpcyBzZWxlY3RlZCBhbmQgdGhl
CisgICAgICAgIHBhaW50IGJlaGF2aW9yIGlzIGVuYWJsZWQuCisKKyAgICAgICAgKiByZW5kZXJp
bmcvVGV4dERlY29yYXRpb25QYWludGVyLmg6CisgICAgICAgICogcmVuZGVyaW5nL1RleHRQYWlu
dFN0eWxlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmNvbXB1dGVUZXh0U2VsZWN0aW9uUGFpbnRT
dHlsZSk6CisgICAgICAgICogcmVuZGVyaW5nL1RleHRQYWludFN0eWxlLmg6CisgICAgICAgICog
cmVuZGVyaW5nL1RleHRQYWludGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlRleHRQYWludGVy
OjpwYWludFRleHQpOgorICAgICAgICAqIHJlbmRlcmluZy9UZXh0UGFpbnRlci5oOgorCiAyMDE3
LTAzLTA3ICBNYXVyZWVuIERhdW0gIDxtZGF1bUBhcHBsZS5jb20+CiAKICAgICAgICAgQ29ycmVj
dGx5IGNoZWNrIGZvciBhbiBlbXB0eSBkYXRhYmFzZSBmaWxlLgpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdDIvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCmluZGV4IDdhN2I0
ZDU2NTE4ZjEzYzI1NjcxNzgxNDZkYWExZTA0YTUwNjY4ZTIuLmU5OGIxZGZjOTYzOGZkZWI4N2E2
MmRkNDJhOTM2MDFiZTVhYjYxOGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxv
ZworKysgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxOCBAQAorMjAxNy0w
My0wNyAgV2Vuc29uIEhzaWVoICA8d2Vuc29uX2hzaWVoQGFwcGxlLmNvbT4KKworICAgICAgICBB
ZGQgVGV4dEluZGljYXRvciBzdXBwb3J0IGZvciBwcm92aWRpbmcgYSBzbmFwc2hvdCBleGNsdWRp
bmcgc2VsZWN0ZWQgY29udGVudAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MTY5MzA5CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS8zMDg4MzUyNT4KKwor
ICAgICAgICBSZXZpZXdlZCBieSBUaW0gSG9ydG9uLgorCisgICAgICAgIFNlcmlhbGl6ZSB0aGUg
c25hcHNob3QgZXhjbHVkaW5nIHRoZSBzZWxlY3Rpb24gYW5kIHRoZSBzbmFwc2hvdCdzIGJvdW5k
cyB3aGVuIHNlbmRpbmcgVGV4dEluZGljYXRvckRhdGEgb3ZlcgorICAgICAgICBJUEMgdG8gdGhl
IFVJIHByb2Nlc3MuCisKKyAgICAgICAgKiBTaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmNw
cDoKKyAgICAgICAgKElQQzo6QXJndW1lbnRDb2RlcjxUZXh0SW5kaWNhdG9yRGF0YT46OmVuY29k
ZSk6CisgICAgICAgIChJUEM6OkFyZ3VtZW50Q29kZXI8VGV4dEluZGljYXRvckRhdGE+OjpkZWNv
ZGUpOgorCiAyMDE3LTAzLTA3ICBCcmVudCBGdWxnaGFtICA8YmZ1bGdoYW1AYXBwbGUuY29tPgog
CiAgICAgICAgIFtNYWNdW2lPU11bV0syXSBXaGl0ZWxpc3Qgc3lzY3RsLXJlYWQKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWVTbmFwc2hvdHRpbmcuY3BwIGIvU291cmNlL1dl
YkNvcmUvcGFnZS9GcmFtZVNuYXBzaG90dGluZy5jcHAKaW5kZXggM2QzNGNkOTI5MWZlODFjZWZm
MzM1N2EwNGFhZTRlN2NjMWFjNDAwMi4uOTU5YzM2MmE5Y2E2YTM4M2RiZTI3M2UwMzBkZTFkZmE4
NTQwMTcyYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVNuYXBzaG90dGlu
Zy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVNuYXBzaG90dGluZy5jcHAKQEAg
LTczLDcgKzczLDcgQEAgc3RkOjp1bmlxdWVfcHRyPEltYWdlQnVmZmVyPiBzbmFwc2hvdEZyYW1l
UmVjdChGcmFtZSYgZnJhbWUsIGNvbnN0IEludFJlY3QmIGltYWcKICAgICByZXR1cm4gc25hcHNo
b3RGcmFtZVJlY3RXaXRoQ2xpcChmcmFtZSwgaW1hZ2VSZWN0LCBjbGlwUmVjdHMsIG9wdGlvbnMp
OwogfQogCi1zdGQ6OnVuaXF1ZV9wdHI8SW1hZ2VCdWZmZXI+IHNuYXBzaG90RnJhbWVSZWN0V2l0
aENsaXAoRnJhbWUmIGZyYW1lLCBjb25zdCBJbnRSZWN0JiBpbWFnZVJlY3QsIFZlY3RvcjxGbG9h
dFJlY3Q+JiBjbGlwUmVjdHMsIFNuYXBzaG90T3B0aW9ucyBvcHRpb25zKQorc3RkOjp1bmlxdWVf
cHRyPEltYWdlQnVmZmVyPiBzbmFwc2hvdEZyYW1lUmVjdFdpdGhDbGlwKEZyYW1lJiBmcmFtZSwg
Y29uc3QgSW50UmVjdCYgaW1hZ2VSZWN0LCBjb25zdCBWZWN0b3I8RmxvYXRSZWN0PiYgY2xpcFJl
Y3RzLCBTbmFwc2hvdE9wdGlvbnMgb3B0aW9ucykKIHsKICAgICBpZiAoIWZyYW1lLnBhZ2UoKSkK
ICAgICAgICAgcmV0dXJuIG51bGxwdHI7CkBAIC05Nyw2ICs5Nyw4IEBAIHN0ZDo6dW5pcXVlX3B0
cjxJbWFnZUJ1ZmZlcj4gc25hcHNob3RGcmFtZVJlY3RXaXRoQ2xpcChGcmFtZSYgZnJhbWUsIGNv
bnN0IEludFJlCiAgICAgICAgIHBhaW50QmVoYXZpb3IgfD0gUGFpbnRCZWhhdmlvclNlbGVjdGlv
bk9ubHk7CiAgICAgaWYgKG9wdGlvbnMgJiBTbmFwc2hvdE9wdGlvbnNQYWludFNlbGVjdGlvbkFu
ZEJhY2tncm91bmRzT25seSkKICAgICAgICAgcGFpbnRCZWhhdmlvciB8PSBQYWludEJlaGF2aW9y
U2VsZWN0aW9uQW5kQmFja2dyb3VuZHNPbmx5OworICAgIGlmIChvcHRpb25zICYgU25hcHNob3RP
cHRpb25zUGFpbnRFdmVyeXRoaW5nRXhjbHVkaW5nU2VsZWN0aW9uKQorICAgICAgICBwYWludEJl
aGF2aW9yIHw9IFBhaW50QmVoYXZpb3JFeGNsdWRlU2VsZWN0aW9uOwogCiAgICAgLy8gT3RoZXIg
cGFpbnQgYmVoYXZpb3JzIGFyZSBzZXQgYnkgcGFpbnRDb250ZW50c0ZvclNuYXBzaG90LgogICAg
IGZyYW1lLnZpZXcoKS0+c2V0UGFpbnRCZWhhdmlvcihwYWludEJlaGF2aW9yKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWVTbmFwc2hvdHRpbmcuaCBiL1NvdXJjZS9XZWJD
b3JlL3BhZ2UvRnJhbWVTbmFwc2hvdHRpbmcuaAppbmRleCBkYzYzNTY4ODZlNDQ1ZjdkY2NkY2Vj
YjU0MzBjOTJjZGJiYjE1OGJhLi5mYjNkZDAzZjkzMjc2OTJlYmI0ZThkZTg3NGE2MDZhN2RhNzM4
MzZkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lU25hcHNob3R0aW5nLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVNuYXBzaG90dGluZy5oCkBAIC00NywxMSAr
NDcsMTIgQEAgZW51bSB7CiAgICAgU25hcHNob3RPcHRpb25zSW5WaWV3Q29vcmRpbmF0ZXMgPSAx
IDw8IDIsCiAgICAgU25hcHNob3RPcHRpb25zRm9yY2VCbGFja1RleHQgPSAxIDw8IDMsCiAgICAg
U25hcHNob3RPcHRpb25zUGFpbnRTZWxlY3Rpb25BbmRCYWNrZ3JvdW5kc09ubHkgPSAxIDw8IDQs
CisgICAgU25hcHNob3RPcHRpb25zUGFpbnRFdmVyeXRoaW5nRXhjbHVkaW5nU2VsZWN0aW9uID0g
MSA8PCA1CiB9OwogdHlwZWRlZiB1bnNpZ25lZCBTbmFwc2hvdE9wdGlvbnM7CiAKIFdFQkNPUkVf
RVhQT1JUIHN0ZDo6dW5pcXVlX3B0cjxJbWFnZUJ1ZmZlcj4gc25hcHNob3RGcmFtZVJlY3QoRnJh
bWUmLCBjb25zdCBJbnRSZWN0JiwgU25hcHNob3RPcHRpb25zID0gU25hcHNob3RPcHRpb25zTm9u
ZSk7Ci1zdGQ6OnVuaXF1ZV9wdHI8SW1hZ2VCdWZmZXI+IHNuYXBzaG90RnJhbWVSZWN0V2l0aENs
aXAoRnJhbWUmLCBjb25zdCBJbnRSZWN0JiwgVmVjdG9yPEZsb2F0UmVjdD4mIGNsaXBSZWN0cywg
U25hcHNob3RPcHRpb25zID0gU25hcHNob3RPcHRpb25zTm9uZSk7CitzdGQ6OnVuaXF1ZV9wdHI8
SW1hZ2VCdWZmZXI+IHNuYXBzaG90RnJhbWVSZWN0V2l0aENsaXAoRnJhbWUmLCBjb25zdCBJbnRS
ZWN0JiwgY29uc3QgVmVjdG9yPEZsb2F0UmVjdD4mIGNsaXBSZWN0cyA9IHsgfSwgU25hcHNob3RP
cHRpb25zID0gU25hcHNob3RPcHRpb25zTm9uZSk7CiBzdGQ6OnVuaXF1ZV9wdHI8SW1hZ2VCdWZm
ZXI+IHNuYXBzaG90Tm9kZShGcmFtZSYsIE5vZGUmKTsKIFdFQkNPUkVfRVhQT1JUIHN0ZDo6dW5p
cXVlX3B0cjxJbWFnZUJ1ZmZlcj4gc25hcHNob3RTZWxlY3Rpb24oRnJhbWUmLCBTbmFwc2hvdE9w
dGlvbnMgPSBTbmFwc2hvdE9wdGlvbnNOb25lKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGFnZS9UZXh0SW5kaWNhdG9yLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvVGV4dEluZGlj
YXRvci5jcHAKaW5kZXggZWE5MGJmNzRiOWNhNzZlZmFkYjNhZTQ0Mzg3N2FjNjIwOWJmMmVkYi4u
ZjFiYWVhNzg2MzVmZTAzN2IyMGU1OWY3YTZiMzY5OTZmNTEzMDUzMiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGFnZS9UZXh0SW5kaWNhdG9yLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
YWdlL1RleHRJbmRpY2F0b3IuY3BwCkBAIC0xNTAsNyArMTUwLDcgQEAgc3RhdGljIFNuYXBzaG90
T3B0aW9ucyBzbmFwc2hvdE9wdGlvbnNGb3JUZXh0SW5kaWNhdG9yT3B0aW9ucyhUZXh0SW5kaWNh
dG9yT3B0aW8KICAgICByZXR1cm4gc25hcHNob3RPcHRpb25zOwogfQogCi1zdGF0aWMgUmVmUHRy
PEltYWdlPiB0YWtlU25hcHNob3QoRnJhbWUmIGZyYW1lLCBJbnRSZWN0IHJlY3QsIFNuYXBzaG90
T3B0aW9ucyBvcHRpb25zLCBmbG9hdCYgc2NhbGVGYWN0b3IsIFZlY3RvcjxGbG9hdFJlY3Q+JiBj
bGlwUmVjdHNJbkRvY3VtZW50Q29vcmRpbmF0ZXMpCitzdGF0aWMgUmVmUHRyPEltYWdlPiB0YWtl
U25hcHNob3QoRnJhbWUmIGZyYW1lLCBJbnRSZWN0IHJlY3QsIFNuYXBzaG90T3B0aW9ucyBvcHRp
b25zLCBmbG9hdCYgc2NhbGVGYWN0b3IsIGNvbnN0IFZlY3RvcjxGbG9hdFJlY3Q+JiBjbGlwUmVj
dHNJbkRvY3VtZW50Q29vcmRpbmF0ZXMpCiB7CiAgICAgc3RkOjp1bmlxdWVfcHRyPEltYWdlQnVm
ZmVyPiBidWZmZXIgPSBzbmFwc2hvdEZyYW1lUmVjdFdpdGhDbGlwKGZyYW1lLCByZWN0LCBjbGlw
UmVjdHNJbkRvY3VtZW50Q29vcmRpbmF0ZXMsIG9wdGlvbnMpOwogICAgIGlmICghYnVmZmVyKQpA
QCAtMTU5LDcgKzE1OSw3IEBAIHN0YXRpYyBSZWZQdHI8SW1hZ2U+IHRha2VTbmFwc2hvdChGcmFt
ZSYgZnJhbWUsIEludFJlY3QgcmVjdCwgU25hcHNob3RPcHRpb25zIG9wCiAgICAgcmV0dXJuIElt
YWdlQnVmZmVyOjpzaW5rSW50b0ltYWdlKFdURk1vdmUoYnVmZmVyKSwgVW5zY2FsZWQpOwogfQog
Ci1zdGF0aWMgYm9vbCB0YWtlU25hcHNob3RzKFRleHRJbmRpY2F0b3JEYXRhJiBkYXRhLCBGcmFt
ZSYgZnJhbWUsIEludFJlY3Qgc25hcHNob3RSZWN0LCBWZWN0b3I8RmxvYXRSZWN0PiYgY2xpcFJl
Y3RzSW5Eb2N1bWVudENvb3JkaW5hdGVzKQorc3RhdGljIGJvb2wgdGFrZVNuYXBzaG90cyhUZXh0
SW5kaWNhdG9yRGF0YSYgZGF0YSwgRnJhbWUmIGZyYW1lLCBJbnRSZWN0IHNuYXBzaG90UmVjdCwg
Y29uc3QgVmVjdG9yPEZsb2F0UmVjdD4mIGNsaXBSZWN0c0luRG9jdW1lbnRDb29yZGluYXRlcykK
IHsKICAgICBTbmFwc2hvdE9wdGlvbnMgc25hcHNob3RPcHRpb25zID0gc25hcHNob3RPcHRpb25z
Rm9yVGV4dEluZGljYXRvck9wdGlvbnMoZGF0YS5vcHRpb25zKTsKIApAQCAtMTcyLDYgKzE3Miwx
MyBAQCBzdGF0aWMgYm9vbCB0YWtlU25hcHNob3RzKFRleHRJbmRpY2F0b3JEYXRhJiBkYXRhLCBG
cmFtZSYgZnJhbWUsIEludFJlY3Qgc25hcHNobwogICAgICAgICBkYXRhLmNvbnRlbnRJbWFnZVdp
dGhIaWdobGlnaHQgPSB0YWtlU25hcHNob3QoZnJhbWUsIHNuYXBzaG90UmVjdCwgU25hcHNob3RP
cHRpb25zTm9uZSwgc25hcHNob3RTY2FsZUZhY3RvciwgY2xpcFJlY3RzSW5Eb2N1bWVudENvb3Jk
aW5hdGVzKTsKICAgICAgICAgQVNTRVJUKCFkYXRhLmNvbnRlbnRJbWFnZVdpdGhIaWdobGlnaHQg
fHwgZGF0YS5jb250ZW50SW1hZ2VTY2FsZUZhY3RvciA9PSBzbmFwc2hvdFNjYWxlRmFjdG9yKTsK
ICAgICB9CisKKyAgICBpZiAoZGF0YS5vcHRpb25zICYgVGV4dEluZGljYXRvck9wdGlvbkluY2x1
ZGVTbmFwc2hvdE9mQWxsVmlzaWJsZUNvbnRlbnRXaXRob3V0U2VsZWN0aW9uKSB7CisgICAgICAg
IGZsb2F0IHNuYXBzaG90U2NhbGVGYWN0b3I7CisgICAgICAgIGF1dG8gc25hcHNob3RSZWN0ID0g
ZW5jbG9zaW5nSW50UmVjdChmcmFtZS52aWV3KCktPnZpc3VhbFZpZXdwb3J0UmVjdCgpKTsKKyAg
ICAgICAgZGF0YS5jb250ZW50SW1hZ2VXaXRob3V0U2VsZWN0aW9uID0gdGFrZVNuYXBzaG90KGZy
YW1lLCBzbmFwc2hvdFJlY3QsIFNuYXBzaG90T3B0aW9uc1BhaW50RXZlcnl0aGluZ0V4Y2x1ZGlu
Z1NlbGVjdGlvbiwgc25hcHNob3RTY2FsZUZhY3RvciwgeyB9KTsKKyAgICAgICAgZGF0YS5jb250
ZW50SW1hZ2VXaXRob3V0U2VsZWN0aW9uUmVjdEluUm9vdFZpZXdDb29yZGluYXRlcyA9IGZyYW1l
LnZpZXcoKS0+Y29udGVudHNUb1Jvb3RWaWV3KHNuYXBzaG90UmVjdCk7CisgICAgfQogICAgIAog
ICAgIHJldHVybiB0cnVlOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9UZXh0
SW5kaWNhdG9yLmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1RleHRJbmRpY2F0b3IuaAppbmRleCBk
ZmE0MmM3ZGM0MjJlZWJiYzUwZTU1ODNhNTBhYzBmMjM1ZmZhODVkLi5hOGUyZDE5NzZhZGMzOGY5
NTJiYWUzYTUyMTNiODI1YzM1ZDI4YWIyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdl
L1RleHRJbmRpY2F0b3IuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1RleHRJbmRpY2F0b3Iu
aApAQCAtNDksNyArNDksNyBAQCBlbnVtIGNsYXNzIFRleHRJbmRpY2F0b3JQcmVzZW50YXRpb25U
cmFuc2l0aW9uIHsKIH07CiAKIC8vIE1ha2Ugc3VyZSB0byBrZWVwIHRoZXNlIGluIHN5bmMgd2l0
aCB0aGUgb25lcyBpbiBJbnRlcm5hbHMuaWRsLgotZW51bSBUZXh0SW5kaWNhdG9yT3B0aW9uIDog
dWludDhfdCB7CitlbnVtIFRleHRJbmRpY2F0b3JPcHRpb24gOiB1aW50MTZfdCB7CiAgICAgVGV4
dEluZGljYXRvck9wdGlvbkRlZmF1bHQgPSAwLAogCiAgICAgLy8gVXNlIHRoZSBzdHlsZWQgdGV4
dCBjb2xvciBpbnN0ZWFkIG9mIGZvcmNpbmcgYmxhY2sgdGV4dCAodGhlIGRlZmF1bHQpCkBAIC04
MCwxNSArODAsMjAgQEAgZW51bSBUZXh0SW5kaWNhdG9yT3B0aW9uIDogdWludDhfdCB7CiAgICAg
Ly8gQnkgZGVmYXVsdCwgVGV4dEluZGljYXRvciBjbGlwcyB0aGUgaW5kaWNhdGVkIHJlY3RzIHRv
IHRoZSB2aXNpYmxlIGNvbnRlbnQgcmVjdC4KICAgICAvLyBJZiB0aGlzIG9wdGlvbiBpcyBzZXQs
IGRvIG5vdCBjbGlwIHRoZSBpbmRpY2F0ZWQgcmVjdHMuCiAgICAgVGV4dEluZGljYXRvck9wdGlv
bkRvTm90Q2xpcFRvVmlzaWJsZVJlY3QgPSAxIDw8IDcsCisKKyAgICAvLyBJbmNsdWRlIGFuIGFk
ZGl0aW9uYWwgc25hcHNob3Qgb2YgZXZlcnl0aGluZyBpbiB2aWV3LCB3aXRoIHRoZSBleGNlcHRp
b24gb2Ygbm9kZXMgd2l0aGluIHRoZSBjdXJyZW50bHkgc2VsZWN0ZWQgcmFuZ2UuCisgICAgVGV4
dEluZGljYXRvck9wdGlvbkluY2x1ZGVTbmFwc2hvdE9mQWxsVmlzaWJsZUNvbnRlbnRXaXRob3V0
U2VsZWN0aW9uID0gMSA8PCA4LAogfTsKLXR5cGVkZWYgdWludDhfdCBUZXh0SW5kaWNhdG9yT3B0
aW9uczsKK3R5cGVkZWYgdWludDE2X3QgVGV4dEluZGljYXRvck9wdGlvbnM7CiAKIHN0cnVjdCBU
ZXh0SW5kaWNhdG9yRGF0YSB7CiAgICAgRmxvYXRSZWN0IHNlbGVjdGlvblJlY3RJblJvb3RWaWV3
Q29vcmRpbmF0ZXM7CiAgICAgRmxvYXRSZWN0IHRleHRCb3VuZGluZ1JlY3RJblJvb3RWaWV3Q29v
cmRpbmF0ZXM7CisgICAgRmxvYXRSZWN0IGNvbnRlbnRJbWFnZVdpdGhvdXRTZWxlY3Rpb25SZWN0
SW5Sb290Vmlld0Nvb3JkaW5hdGVzOwogICAgIFZlY3RvcjxGbG9hdFJlY3Q+IHRleHRSZWN0c0lu
Qm91bmRpbmdSZWN0Q29vcmRpbmF0ZXM7CiAgICAgZmxvYXQgY29udGVudEltYWdlU2NhbGVGYWN0
b3I7CiAgICAgUmVmUHRyPEltYWdlPiBjb250ZW50SW1hZ2VXaXRoSGlnaGxpZ2h0OworICAgIFJl
ZlB0cjxJbWFnZT4gY29udGVudEltYWdlV2l0aG91dFNlbGVjdGlvbjsKICAgICBSZWZQdHI8SW1h
Z2U+IGNvbnRlbnRJbWFnZTsKICAgICBUZXh0SW5kaWNhdG9yUHJlc2VudGF0aW9uVHJhbnNpdGlv
biBwcmVzZW50YXRpb25UcmFuc2l0aW9uOwogICAgIFRleHRJbmRpY2F0b3JPcHRpb25zIG9wdGlv
bnM7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250Q2Fz
Y2FkZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250Q2FzY2FkZS5j
cHAKaW5kZXggNjY0MTM4ODRhNWUyYzM4OGNjZDc1MTcxZmRhM2NiNTk5NTIwMDY3Yi4uNDgzZTQx
Y2IxNGFiNjdjZTQxM2FjNzM5NWZiNzQwNGJhN2Y5YWRjZSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udENhc2NhZGUuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnRDYXNjYWRlLmNwcApAQCAtMjUsNiArMjUsNyBAQAog
I2luY2x1ZGUgIkZvbnRDYXNjYWRlLmgiCiAKICNpbmNsdWRlICJDaGFyYWN0ZXJQcm9wZXJ0aWVz
LmgiCisjaW5jbHVkZSAiQ29tcGxleFRleHRDb250cm9sbGVyLmgiCiAjaW5jbHVkZSAiRmxvYXRS
ZWN0LmgiCiAjaW5jbHVkZSAiRm9udENhY2hlLmgiCiAjaW5jbHVkZSAiR2x5cGhCdWZmZXIuaCIK
QEAgLTM0OCw2ICszNDksNDMgQEAgdm9pZCBGb250Q2FzY2FkZTo6ZHJhd0VtcGhhc2lzTWFya3Mo
R3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBUZXh0UnVuJiBydW4KICAgICAgICAgZHJh
d0VtcGhhc2lzTWFya3NGb3JDb21wbGV4VGV4dChjb250ZXh0LCBydW4sIG1hcmssIHBvaW50LCBm
cm9tLCBkZXN0aW5hdGlvbik7CiB9CiAKK2Zsb2F0IEZvbnRDYXNjYWRlOjp3aWR0aE9mVGV4dFJh
bmdlKGNvbnN0IFRleHRSdW4mIHJ1biwgdW5zaWduZWQgZnJvbSwgdW5zaWduZWQgdG8sIEhhc2hT
ZXQ8Y29uc3QgRm9udCo+KiBmYWxsYmFja0ZvbnRzLCBmbG9hdCogb3V0V2lkdGhCZWZvcmVSYW5n
ZSwgZmxvYXQqIG91dFdpZHRoQWZ0ZXJSYW5nZSkgY29uc3QKK3sKKyAgICBBU1NFUlQoZnJvbSA8
PSB0byk7CisgICAgQVNTRVJUKHRvIDw9IHJ1bi5sZW5ndGgoKSk7CisKKyAgICBmbG9hdCBvZmZz
ZXRCZWZvcmVSYW5nZSA9IDA7CisgICAgZmxvYXQgb2Zmc2V0QWZ0ZXJSYW5nZSA9IDA7CisgICAg
ZmxvYXQgdG90YWxXaWR0aCA9IDA7CisKKyAgICBhdXRvIGNvZGVQYXRoVG9Vc2UgPSBjb2RlUGF0
aChydW4pOworICAgIGlmIChjb2RlUGF0aFRvVXNlID09IENvbXBsZXgpIHsKKyAgICAgICAgQ29t
cGxleFRleHRDb250cm9sbGVyIGNvbXBsZXhJdGVyYXRvcigqdGhpcywgcnVuLCBmYWxzZSwgZmFs
bGJhY2tGb250cyk7CisgICAgICAgIGNvbXBsZXhJdGVyYXRvci5hZHZhbmNlKGZyb20sIG51bGxw
dHIsIEluY2x1ZGVQYXJ0aWFsR2x5cGhzLCBmYWxsYmFja0ZvbnRzKTsKKyAgICAgICAgb2Zmc2V0
QmVmb3JlUmFuZ2UgPSBjb21wbGV4SXRlcmF0b3IucnVuV2lkdGhTb0ZhcigpOworICAgICAgICBj
b21wbGV4SXRlcmF0b3IuYWR2YW5jZSh0bywgbnVsbHB0ciwgSW5jbHVkZVBhcnRpYWxHbHlwaHMs
IGZhbGxiYWNrRm9udHMpOworICAgICAgICBvZmZzZXRBZnRlclJhbmdlID0gY29tcGxleEl0ZXJh
dG9yLnJ1bldpZHRoU29GYXIoKTsKKyAgICAgICAgY29tcGxleEl0ZXJhdG9yLmFkdmFuY2UocnVu
Lmxlbmd0aCgpLCBudWxscHRyLCBJbmNsdWRlUGFydGlhbEdseXBocywgZmFsbGJhY2tGb250cyk7
CisgICAgICAgIHRvdGFsV2lkdGggPSBjb21wbGV4SXRlcmF0b3IucnVuV2lkdGhTb0ZhcigpOwor
ICAgIH0gZWxzZSB7CisgICAgICAgIFdpZHRoSXRlcmF0b3Igc2ltcGxlSXRlcmF0b3IodGhpcywg
cnVuLCBmYWxsYmFja0ZvbnRzKTsKKyAgICAgICAgc2ltcGxlSXRlcmF0b3IuYWR2YW5jZShmcm9t
LCBudWxscHRyKTsKKyAgICAgICAgb2Zmc2V0QmVmb3JlUmFuZ2UgPSBzaW1wbGVJdGVyYXRvci5y
dW5XaWR0aFNvRmFyKCk7CisgICAgICAgIHNpbXBsZUl0ZXJhdG9yLmFkdmFuY2UodG8sIG51bGxw
dHIpOworICAgICAgICBvZmZzZXRBZnRlclJhbmdlID0gc2ltcGxlSXRlcmF0b3IucnVuV2lkdGhT
b0ZhcigpOworICAgICAgICBzaW1wbGVJdGVyYXRvci5hZHZhbmNlKHJ1bi5sZW5ndGgoKSwgbnVs
bHB0cik7CisgICAgICAgIHRvdGFsV2lkdGggPSBzaW1wbGVJdGVyYXRvci5ydW5XaWR0aFNvRmFy
KCk7CisgICAgfQorCisgICAgaWYgKG91dFdpZHRoQmVmb3JlUmFuZ2UpCisgICAgICAgICpvdXRX
aWR0aEJlZm9yZVJhbmdlID0gb2Zmc2V0QmVmb3JlUmFuZ2U7CisKKyAgICBpZiAob3V0V2lkdGhB
ZnRlclJhbmdlKQorICAgICAgICAqb3V0V2lkdGhBZnRlclJhbmdlID0gdG90YWxXaWR0aCAtIG9m
ZnNldEFmdGVyUmFuZ2U7CisKKyAgICByZXR1cm4gb2Zmc2V0QWZ0ZXJSYW5nZSAtIG9mZnNldEJl
Zm9yZVJhbmdlOworfQorCiBmbG9hdCBGb250Q2FzY2FkZTo6d2lkdGgoY29uc3QgVGV4dFJ1biYg
cnVuLCBIYXNoU2V0PGNvbnN0IEZvbnQqPiogZmFsbGJhY2tGb250cywgR2x5cGhPdmVyZmxvdyog
Z2x5cGhPdmVyZmxvdykgY29uc3QKIHsKICAgICBDb2RlUGF0aCBjb2RlUGF0aFRvVXNlID0gY29k
ZVBhdGgocnVuKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L0ZvbnRDYXNjYWRlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250Q2Fz
Y2FkZS5oCmluZGV4IDM3NjJlNDgxNTI3ZGQ2Y2M1MGMyNzJhMWNhZWIyOTA4OTViNmFmZjYuLjk0
MjQ5OTUwOTliMGRkM2M2ZDA3NDVmOWY3NmM0MGNjZGFiMDY5YmYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnRDYXNjYWRlLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udENhc2NhZGUuaApAQCAtMTM4LDYgKzEzOCw3IEBA
IHB1YmxpYzoKIAogICAgIERhc2hBcnJheSBkYXNoZXNGb3JJbnRlcnNlY3Rpb25zV2l0aFJlY3Qo
Y29uc3QgVGV4dFJ1biYsIGNvbnN0IEZsb2F0UG9pbnQmIHRleHRPcmlnaW4sIGNvbnN0IEZsb2F0
UmVjdCYgbGluZUV4dGVudHMpIGNvbnN0OwogCisgICAgZmxvYXQgd2lkdGhPZlRleHRSYW5nZShj
b25zdCBUZXh0UnVuJiwgdW5zaWduZWQgZnJvbSwgdW5zaWduZWQgdG8sIEhhc2hTZXQ8Y29uc3Qg
Rm9udCo+KiBmYWxsYmFja0ZvbnRzID0gMCwgZmxvYXQqIG91dFdpZHRoQmVmb3JlUmFuZ2UgPSBu
dWxscHRyLCBmbG9hdCogb3V0V2lkdGhBZnRlclJhbmdlID0gbnVsbHB0cikgY29uc3Q7CiAgICAg
V0VCQ09SRV9FWFBPUlQgZmxvYXQgd2lkdGgoY29uc3QgVGV4dFJ1biYsIEhhc2hTZXQ8Y29uc3Qg
Rm9udCo+KiBmYWxsYmFja0ZvbnRzID0gMCwgR2x5cGhPdmVyZmxvdyogPSAwKSBjb25zdDsKICAg
ICBmbG9hdCB3aWR0aEZvclNpbXBsZVRleHQoU3RyaW5nVmlldyB0ZXh0KSBjb25zdDsKIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0lubGluZVRleHRCb3guY3BwIGIvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0lubGluZVRleHRCb3guY3BwCmluZGV4IGY2ZjI0OGFmMzNh
MjE2NDcyYWRjMzU0ZTAxOGE0ZGRkMDBiOGM3MWEuLjFlY2I3ZGZlM2Q1OGUyMmRhMGRmNzg1ZjY2
YjMwOTdlMGUzYzZlMWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9Jbmxp
bmVUZXh0Qm94LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvSW5saW5lVGV4dEJv
eC5jcHAKQEAgLTQ3NCwxMCArNDc0LDExIEBAIHZvaWQgSW5saW5lVGV4dEJveDo6cGFpbnQoUGFp
bnRJbmZvJiBwYWludEluZm8sIGNvbnN0IExheW91dFBvaW50JiBwYWludE9mZnNldCwKIAogICAg
IGJvb2wgcGFpbnRTZWxlY3RlZFRleHRPbmx5ID0gZmFsc2U7CiAgICAgYm9vbCBwYWludFNlbGVj
dGVkVGV4dFNlcGFyYXRlbHkgPSBmYWxzZTsKKyAgICBib29sIHBhaW50Tm9uU2VsZWN0ZWRUZXh0
T25seSA9IGZhbHNlOwogICAgIGNvbnN0IFNoYWRvd0RhdGEqIHNlbGVjdGlvblNoYWRvdyA9IG51
bGxwdHI7CiAgICAgCiAgICAgLy8gVGV4dCB3aXRoIGN1c3RvbSB1bmRlcmxpbmVzIGRvZXMgbm90
IGhhdmUgc2VsZWN0aW9uIGJhY2tncm91bmQgcGFpbnRlZCwgc28gc2VsZWN0aW9uIHBhaW50IHN0
eWxlIGlzIG5vdCBhcHByb3ByaWF0ZSBmb3IgaXQuCi0gICAgVGV4dFBhaW50U3R5bGUgc2VsZWN0
aW9uUGFpbnRTdHlsZSA9IGhhdmVTZWxlY3Rpb24gJiYgIXVzZUN1c3RvbVVuZGVybGluZXMgPyBj
b21wdXRlVGV4dFNlbGVjdGlvblBhaW50U3R5bGUodGV4dFBhaW50U3R5bGUsIHJlbmRlcmVyKCks
IGxpbmVTdHlsZSwgcGFpbnRJbmZvLCBwYWludFNlbGVjdGVkVGV4dE9ubHksIHBhaW50U2VsZWN0
ZWRUZXh0U2VwYXJhdGVseSwgc2VsZWN0aW9uU2hhZG93KSA6IHRleHRQYWludFN0eWxlOworICAg
IFRleHRQYWludFN0eWxlIHNlbGVjdGlvblBhaW50U3R5bGUgPSBoYXZlU2VsZWN0aW9uICYmICF1
c2VDdXN0b21VbmRlcmxpbmVzID8gY29tcHV0ZVRleHRTZWxlY3Rpb25QYWludFN0eWxlKHRleHRQ
YWludFN0eWxlLCByZW5kZXJlcigpLCBsaW5lU3R5bGUsIHBhaW50SW5mbywgcGFpbnRTZWxlY3Rl
ZFRleHRPbmx5LCBwYWludFNlbGVjdGVkVGV4dFNlcGFyYXRlbHksIHBhaW50Tm9uU2VsZWN0ZWRU
ZXh0T25seSwgc2VsZWN0aW9uU2hhZG93KSA6IHRleHRQYWludFN0eWxlOwogCiAgICAgLy8gU2V0
IG91ciBmb250LgogICAgIGNvbnN0IEZvbnRDYXNjYWRlJiBmb250ID0gZm9udFRvVXNlKGxpbmVT
dHlsZSwgcmVuZGVyZXIoKSk7CkBAIC01NTEsMTIgKzU1MiwzMiBAQCB2b2lkIElubGluZVRleHRC
b3g6OnBhaW50KFBhaW50SW5mbyYgcGFpbnRJbmZvLCBjb25zdCBMYXlvdXRQb2ludCYgcGFpbnRP
ZmZzZXQsCiAgICAgdGV4dFBhaW50ZXIuYWRkVGV4dFNoYWRvdyh0ZXh0U2hhZG93LCBzZWxlY3Rp
b25TaGFkb3cpOwogICAgIHRleHRQYWludGVyLmFkZEVtcGhhc2lzKGVtcGhhc2lzTWFyaywgZW1w
aGFzaXNNYXJrT2Zmc2V0LCBjb21iaW5lZFRleHQpOwogCi0gICAgdGV4dFBhaW50ZXIucGFpbnRU
ZXh0KHRleHRSdW4sIGxlbmd0aCwgYm94UmVjdCwgdGV4dE9yaWdpbiwgc2VsZWN0aW9uU3RhcnQs
IHNlbGVjdGlvbkVuZCwgcGFpbnRTZWxlY3RlZFRleHRPbmx5LCBwYWludFNlbGVjdGVkVGV4dFNl
cGFyYXRlbHkpOworICAgIHRleHRQYWludGVyLnBhaW50VGV4dCh0ZXh0UnVuLCBsZW5ndGgsIGJv
eFJlY3QsIHRleHRPcmlnaW4sIHNlbGVjdGlvblN0YXJ0LCBzZWxlY3Rpb25FbmQsIHBhaW50U2Vs
ZWN0ZWRUZXh0T25seSwgcGFpbnRTZWxlY3RlZFRleHRTZXBhcmF0ZWx5LCBwYWludE5vblNlbGVj
dGVkVGV4dE9ubHkpOwogCiAgICAgLy8gUGFpbnQgZGVjb3JhdGlvbnMKICAgICBUZXh0RGVjb3Jh
dGlvbiB0ZXh0RGVjb3JhdGlvbnMgPSBsaW5lU3R5bGUudGV4dERlY29yYXRpb25zSW5FZmZlY3Qo
KTsKLSAgICBpZiAodGV4dERlY29yYXRpb25zICE9IFRleHREZWNvcmF0aW9uTm9uZSAmJiBwYWlu
dEluZm8ucGhhc2UgIT0gUGFpbnRQaGFzZVNlbGVjdGlvbikKLSAgICAgICAgcGFpbnREZWNvcmF0
aW9uKGNvbnRleHQsIGZvbnQsIGNvbWJpbmVkVGV4dCwgdGV4dFJ1biwgdGV4dE9yaWdpbiwgYm94
UmVjdCwgdGV4dERlY29yYXRpb25zLCB0ZXh0UGFpbnRTdHlsZSwgdGV4dFNoYWRvdyk7CisgICAg
aWYgKHRleHREZWNvcmF0aW9ucyAhPSBUZXh0RGVjb3JhdGlvbk5vbmUgJiYgcGFpbnRJbmZvLnBo
YXNlICE9IFBhaW50UGhhc2VTZWxlY3Rpb24pIHsKKyAgICAgICAgRmxvYXRSZWN0IHRleHREZWNv
cmF0aW9uU2VsZWN0aW9uQ2xpcE91dFJlY3Q7CisgICAgICAgIGlmICgocGFpbnRJbmZvLnBhaW50
QmVoYXZpb3IgJiBQYWludEJlaGF2aW9yRXhjbHVkZVNlbGVjdGlvbikgJiYgc2VsZWN0aW9uU3Rh
cnQgPCBzZWxlY3Rpb25FbmQgJiYgc2VsZWN0aW9uRW5kIDw9IGxlbmd0aCkgeworICAgICAgICAg
ICAgdGV4dERlY29yYXRpb25TZWxlY3Rpb25DbGlwT3V0UmVjdCA9IGxvZ2ljYWxPdmVyZmxvd1Jl
Y3QoKTsKKyAgICAgICAgICAgIHRleHREZWNvcmF0aW9uU2VsZWN0aW9uQ2xpcE91dFJlY3QubW92
ZUJ5KGxvY2FsUGFpbnRPZmZzZXQpOworICAgICAgICAgICAgZmxvYXQgbG9naWNhbFdpZHRoQmVm
b3JlUmFuZ2U7CisgICAgICAgICAgICBmbG9hdCBsb2dpY2FsV2lkdGhBZnRlclJhbmdlOworICAg
ICAgICAgICAgZmxvYXQgbG9naWNhbFNlbGVjdGlvbldpZHRoID0gZm9udC53aWR0aE9mVGV4dFJh
bmdlKHRleHRSdW4sIHNlbGVjdGlvblN0YXJ0LCBzZWxlY3Rpb25FbmQsIG51bGxwdHIsICZsb2dp
Y2FsV2lkdGhCZWZvcmVSYW5nZSwgJmxvZ2ljYWxXaWR0aEFmdGVyUmFuZ2UpOworICAgICAgICAg
ICAgLy8gRklYTUU6IERvIHdlIG5lZWQgdG8gaGFuZGxlIHZlcnRpY2FsIGJvdHRvbSB0byB0b3Ag
dGV4dD8KKyAgICAgICAgICAgIGlmICghaXNIb3Jpem9udGFsKCkpIHsKKyAgICAgICAgICAgICAg
ICB0ZXh0RGVjb3JhdGlvblNlbGVjdGlvbkNsaXBPdXRSZWN0Lm1vdmUoMCwgbG9naWNhbFdpZHRo
QmVmb3JlUmFuZ2UpOworICAgICAgICAgICAgICAgIHRleHREZWNvcmF0aW9uU2VsZWN0aW9uQ2xp
cE91dFJlY3Quc2V0SGVpZ2h0KGxvZ2ljYWxTZWxlY3Rpb25XaWR0aCk7CisgICAgICAgICAgICB9
IGVsc2UgaWYgKGRpcmVjdGlvbigpID09IFJUTCkgeworICAgICAgICAgICAgICAgIHRleHREZWNv
cmF0aW9uU2VsZWN0aW9uQ2xpcE91dFJlY3QubW92ZShsb2dpY2FsV2lkdGhBZnRlclJhbmdlLCAw
KTsKKyAgICAgICAgICAgICAgICB0ZXh0RGVjb3JhdGlvblNlbGVjdGlvbkNsaXBPdXRSZWN0LnNl
dFdpZHRoKGxvZ2ljYWxTZWxlY3Rpb25XaWR0aCk7CisgICAgICAgICAgICB9IGVsc2UgeworICAg
ICAgICAgICAgICAgIHRleHREZWNvcmF0aW9uU2VsZWN0aW9uQ2xpcE91dFJlY3QubW92ZShsb2dp
Y2FsV2lkdGhCZWZvcmVSYW5nZSwgMCk7CisgICAgICAgICAgICAgICAgdGV4dERlY29yYXRpb25T
ZWxlY3Rpb25DbGlwT3V0UmVjdC5zZXRXaWR0aChsb2dpY2FsU2VsZWN0aW9uV2lkdGgpOworICAg
ICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIHBhaW50RGVjb3JhdGlvbihjb250ZXh0LCBm
b250LCBjb21iaW5lZFRleHQsIHRleHRSdW4sIHRleHRPcmlnaW4sIGJveFJlY3QsIHRleHREZWNv
cmF0aW9ucywgdGV4dFBhaW50U3R5bGUsIHRleHRTaGFkb3csIHRleHREZWNvcmF0aW9uU2VsZWN0
aW9uQ2xpcE91dFJlY3QpOworICAgIH0KIAogICAgIGlmIChwYWludEluZm8ucGhhc2UgPT0gUGFp
bnRQaGFzZUZvcmVncm91bmQpIHsKICAgICAgICAgcGFpbnREb2N1bWVudE1hcmtlcnMoY29udGV4
dCwgYm94T3JpZ2luLCBsaW5lU3R5bGUsIGZvbnQsIGZhbHNlKTsKQEAgLTY5NSw3ICs3MTYsNyBA
QCBzdGF0aWMgaW5saW5lIHZvaWQgbWlycm9yUlRMU2VnbWVudChmbG9hdCBsb2dpY2FsV2lkdGgs
IFRleHREaXJlY3Rpb24gZGlyZWN0aW9uLAogfQogCiB2b2lkIElubGluZVRleHRCb3g6OnBhaW50
RGVjb3JhdGlvbihHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IEZvbnRDYXNjYWRlJiBm
b250LCBSZW5kZXJDb21iaW5lVGV4dCogY29tYmluZWRUZXh0LCBjb25zdCBUZXh0UnVuJiB0ZXh0
UnVuLCBjb25zdCBGbG9hdFBvaW50JiB0ZXh0T3JpZ2luLAotICAgIGNvbnN0IEZsb2F0UmVjdCYg
Ym94UmVjdCwgVGV4dERlY29yYXRpb24gZGVjb3JhdGlvbiwgVGV4dFBhaW50U3R5bGUgdGV4dFBh
aW50U3R5bGUsIGNvbnN0IFNoYWRvd0RhdGEqIHNoYWRvdykKKyAgICBjb25zdCBGbG9hdFJlY3Qm
IGJveFJlY3QsIFRleHREZWNvcmF0aW9uIGRlY29yYXRpb24sIFRleHRQYWludFN0eWxlIHRleHRQ
YWludFN0eWxlLCBjb25zdCBTaGFkb3dEYXRhKiBzaGFkb3csIGNvbnN0IEZsb2F0UmVjdCYgY2xp
cE91dFJlY3QpCiB7CiAgICAgaWYgKG1fdHJ1bmNhdGlvbiA9PSBjRnVsbFRydW5jYXRpb24pCiAg
ICAgICAgIHJldHVybjsKQEAgLTcyMSw4ICs3NDIsMTcgQEAgdm9pZCBJbmxpbmVUZXh0Qm94Ojpw
YWludERlY29yYXRpb24oR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBGb250Q2FzY2Fk
ZSYKIAogICAgIEZsb2F0UG9pbnQgbG9jYWxPcmlnaW4gPSBib3hSZWN0LmxvY2F0aW9uKCk7CiAg
ICAgbG9jYWxPcmlnaW4ubW92ZShzdGFydCwgMCk7CisKKyAgICBpZiAoIWNsaXBPdXRSZWN0Lmlz
RW1wdHkoKSkgeworICAgICAgICBjb250ZXh0LnNhdmUoKTsKKyAgICAgICAgY29udGV4dC5jbGlw
T3V0KGNsaXBPdXRSZWN0KTsKKyAgICB9CisKICAgICBkZWNvcmF0aW9uUGFpbnRlci5wYWludFRl
eHREZWNvcmF0aW9uKHRleHRSdW4sIHRleHRPcmlnaW4sIGxvY2FsT3JpZ2luKTsKIAorICAgIGlm
ICghY2xpcE91dFJlY3QuaXNFbXB0eSgpKQorICAgICAgICBjb250ZXh0LnJlc3RvcmUoKTsKKwog
ICAgIGlmIChjb21iaW5lZFRleHQpCiAgICAgICAgIGNvbnRleHQuY29uY2F0Q1RNKHJvdGF0aW9u
KGJveFJlY3QsIENvdW50ZXJjbG9ja3dpc2UpKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9JbmxpbmVUZXh0Qm94LmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
SW5saW5lVGV4dEJveC5oCmluZGV4IDljNDYxOGExNjc0OGYxNGQyODVlY2Q3MTVjZjVhZjgwZWM2
NGYyYjQuLjRmMTljOWRkZDhlOTE3MmQ3NGRhZmI3NTU5MmZjOTFiMTAwZWVmNmQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9JbmxpbmVUZXh0Qm94LmgKKysrIGIvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL0lubGluZVRleHRCb3guaApAQCAtMTU5LDcgKzE1OSw3IEBAIHBy
b3RlY3RlZDoKIAogcHJpdmF0ZToKICAgICB2b2lkIHBhaW50RGVjb3JhdGlvbihHcmFwaGljc0Nv
bnRleHQmLCBjb25zdCBGb250Q2FzY2FkZSYsIFJlbmRlckNvbWJpbmVUZXh0KiwgY29uc3QgVGV4
dFJ1biYsIGNvbnN0IEZsb2F0UG9pbnQmIHRleHRPcmlnaW4sIGNvbnN0IEZsb2F0UmVjdCYgYm94
UmVjdCwKLSAgICAgICAgVGV4dERlY29yYXRpb24sIFRleHRQYWludFN0eWxlLCBjb25zdCBTaGFk
b3dEYXRhKik7CisgICAgICAgIFRleHREZWNvcmF0aW9uLCBUZXh0UGFpbnRTdHlsZSwgY29uc3Qg
U2hhZG93RGF0YSosIGNvbnN0IEZsb2F0UmVjdCYgY2xpcE91dFJlY3QpOwogICAgIHZvaWQgcGFp
bnRTZWxlY3Rpb24oR3JhcGhpY3NDb250ZXh0JiwgY29uc3QgRmxvYXRQb2ludCYgYm94T3JpZ2lu
LCBjb25zdCBSZW5kZXJTdHlsZSYsIGNvbnN0IEZvbnRDYXNjYWRlJiwgY29uc3QgQ29sb3ImIHRl
eHRDb2xvcik7CiAgICAgdm9pZCBwYWludERvY3VtZW50TWFya2VyKEdyYXBoaWNzQ29udGV4dCYs
IGNvbnN0IEZsb2F0UG9pbnQmIGJveE9yaWdpbiwgUmVuZGVyZWREb2N1bWVudE1hcmtlciYsIGNv
bnN0IFJlbmRlclN0eWxlJiwgY29uc3QgRm9udENhc2NhZGUmLCBib29sIGdyYW1tYXIpOwogICAg
IHZvaWQgcGFpbnRUZXh0TWF0Y2hNYXJrZXIoR3JhcGhpY3NDb250ZXh0JiwgY29uc3QgRmxvYXRQ
b2ludCYgYm94T3JpZ2luLCBSZW5kZXJlZERvY3VtZW50TWFya2VyJiwgY29uc3QgUmVuZGVyU3R5
bGUmLCBjb25zdCBGb250Q2FzY2FkZSYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1BhaW50UGhhc2UuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9QYWludFBoYXNl
LmgKaW5kZXggNDlmYjdkZmY4YTc3NzYwMjc4YzgzNzMxZWMxNjcwZjA4NWY1YmQyNy4uZjE2N2U4
N2E4ZTAyMjEyMmNkZmYwNGQ2YjY2OGE3YzljMjA5ZDMxNiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1BhaW50UGhhc2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUGFpbnRQaGFzZS5oCkBAIC02Myw2ICs2Myw3IEBAIGVudW0gUGFpbnRCZWhhdmlvckZsYWdz
IHsKICAgICBQYWludEJlaGF2aW9yU2tpcFJvb3RCYWNrZ3JvdW5kICAgICAgICAgID0gMSA8PCA2
LAogICAgIFBhaW50QmVoYXZpb3JSb290QmFja2dyb3VuZE9ubHkgICAgICAgICAgPSAxIDw8IDcs
CiAgICAgUGFpbnRCZWhhdmlvclNlbGVjdGlvbkFuZEJhY2tncm91bmRzT25seSA9IDEgPDwgOCwK
KyAgICBQYWludEJlaGF2aW9yRXhjbHVkZVNlbGVjdGlvbiAgICAgICAgICAgID0gMSA8PCA5LAog
fTsKIAogdHlwZWRlZiB1bnNpZ25lZCBQYWludEJlaGF2aW9yOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJMYXllci5jcHAKaW5kZXggNWY5M2ExOGZmOGVmNTM4NmM4NGNjOGQ4ZDY2NmRh
NTlkNDAwNDFmMi4uZGExYzQzYTFiNGQ3ZTEzM2I5ZjQyZGExOTZmZTZiNzBjMmEwMDNjNSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXIuY3BwCkBAIC00Mzc1LDYgKzQzNzUs
OSBAQCB2b2lkIFJlbmRlckxheWVyOjpwYWludExheWVyQ29udGVudHMoR3JhcGhpY3NDb250ZXh0
JiBjb250ZXh0LCBjb25zdCBMYXllclBhaW50aQogICAgICAgICBlbHNlIGlmIChsb2NhbFBhaW50
RmxhZ3MgJiBQYWludExheWVyUGFpbnRpbmdSb290QmFja2dyb3VuZE9ubHkpCiAgICAgICAgICAg
ICBwYWludEJlaGF2aW9yIHw9IFBhaW50QmVoYXZpb3JSb290QmFja2dyb3VuZE9ubHk7CiAKKyAg
ICAgICAgaWYgKHBhaW50aW5nSW5mby5wYWludEJlaGF2aW9yICYgUGFpbnRCZWhhdmlvckV4Y2x1
ZGVTZWxlY3Rpb24pCisgICAgICAgICAgICBwYWludEJlaGF2aW9yIHw9IFBhaW50QmVoYXZpb3JF
eGNsdWRlU2VsZWN0aW9uOworCiAgICAgICAgIExheW91dFJlY3QgcGFpbnREaXJ0eVJlY3QgPSBs
b2NhbFBhaW50aW5nSW5mby5wYWludERpcnR5UmVjdDsKICAgICAgICAgaWYgKHNob3VsZFBhaW50
Q29udGVudCB8fCBzaG91bGRQYWludE91dGxpbmUgfHwgaXNQYWludGluZ092ZXJsYXlTY3JvbGxi
YXJzKSB7CiAgICAgICAgICAgICAvLyBDb2xsZWN0IHRoZSBmcmFnbWVudHMuIFRoaXMgd2lsbCBj
b21wdXRlIHRoZSBjbGlwIHJlY3RhbmdsZXMgYW5kIHBhaW50IG9mZnNldHMgZm9yIGVhY2ggbGF5
ZXIgZnJhZ21lbnQsIGFzIHdlbGwgYXMgd2hldGhlciBvciBub3QgdGhlIGNvbnRlbnQgb2YgZWFj
aApAQCAtNDc3MSw2ICs0Nzc0LDkgQEAgdm9pZCBSZW5kZXJMYXllcjo6cGFpbnRGb3JlZ3JvdW5k
Rm9yRnJhZ21lbnRzKGNvbnN0IExheWVyRnJhZ21lbnRzJiBsYXllckZyYWdtZW4KICAgICBlbHNl
CiAgICAgICAgIGxvY2FsUGFpbnRCZWhhdmlvciA9IHBhaW50QmVoYXZpb3I7CiAKKyAgICBpZiAo
bG9jYWxQYWludGluZ0luZm8ucGFpbnRCZWhhdmlvciAmIFBhaW50QmVoYXZpb3JFeGNsdWRlU2Vs
ZWN0aW9uKQorICAgICAgICBsb2NhbFBhaW50QmVoYXZpb3IgfD0gUGFpbnRCZWhhdmlvckV4Y2x1
ZGVTZWxlY3Rpb247CisKICAgICAvLyBPcHRpbWl6ZSBjbGlwcGluZyBmb3IgdGhlIHNpbmdsZSBm
cmFnbWVudCBjYXNlLgogICAgIGJvb2wgc2hvdWxkQ2xpcCA9IGxvY2FsUGFpbnRpbmdJbmZvLmNs
aXBUb0RpcnR5UmVjdCAmJiBsYXllckZyYWdtZW50cy5zaXplKCkgPT0gMSAmJiBsYXllckZyYWdt
ZW50c1swXS5zaG91bGRQYWludENvbnRlbnQgJiYgIWxheWVyRnJhZ21lbnRzWzBdLmZvcmVncm91
bmRSZWN0LmlzRW1wdHkoKTsKICAgICBDbGlwUmVjdCBjbGlwcGVkUmVjdDsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJSZXBsYWNlZC5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyUmVwbGFjZWQuY3BwCmluZGV4IDY4M2UwMGZiMjQ5YmJmYzg0
NjgzNmUwOGQ0NmFhOGFmOGRhOTYxNWMuLmY5YTIwZTk5MTY5YmVkYjk4ZWZiYTkyNDBlZDYyZWU4
OWNmODc1ZWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJSZXBs
YWNlZC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclJlcGxhY2VkLmNw
cApAQCAtMjA1LDYgKzIwNSw5IEBAIHZvaWQgUmVuZGVyUmVwbGFjZWQ6OnBhaW50KFBhaW50SW5m
byYgcGFpbnRJbmZvLCBjb25zdCBMYXlvdXRQb2ludCYgcGFpbnRPZmZzZXQpCiAKIGJvb2wgUmVu
ZGVyUmVwbGFjZWQ6OnNob3VsZFBhaW50KFBhaW50SW5mbyYgcGFpbnRJbmZvLCBjb25zdCBMYXlv
dXRQb2ludCYgcGFpbnRPZmZzZXQpCiB7CisgICAgaWYgKChwYWludEluZm8ucGFpbnRCZWhhdmlv
ciAmIFBhaW50QmVoYXZpb3JFeGNsdWRlU2VsZWN0aW9uKSAmJiBpc1NlbGVjdGVkKCkpCisgICAg
ICAgIHJldHVybiBmYWxzZTsKKwogICAgIGlmIChwYWludEluZm8ucGhhc2UgIT0gUGFpbnRQaGFz
ZUZvcmVncm91bmQgJiYgcGFpbnRJbmZvLnBoYXNlICE9IFBhaW50UGhhc2VPdXRsaW5lICYmIHBh
aW50SW5mby5waGFzZSAhPSBQYWludFBoYXNlU2VsZk91dGxpbmUgCiAgICAgICAgICAgICAmJiBw
YWludEluZm8ucGhhc2UgIT0gUGFpbnRQaGFzZVNlbGVjdGlvbiAmJiBwYWludEluZm8ucGhhc2Ug
IT0gUGFpbnRQaGFzZU1hc2spCiAgICAgICAgIHJldHVybiBmYWxzZTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9UZXh0RGVjb3JhdGlvblBhaW50ZXIuaCBiL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9UZXh0RGVjb3JhdGlvblBhaW50ZXIuaAppbmRleCA0ZTk1NTg3YmU3
OTlkZjM4ODc4MTY3NDBhZDVjZWM3Mzc3NDU5Y2UwLi42ZTJjYThkNTQ4MGNlYjdlM2NjYzBiMWY3
YjZjZjEzN2NjNTc1ODdmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvVGV4
dERlY29yYXRpb25QYWludGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1RleHRE
ZWNvcmF0aW9uUGFpbnRlci5oCkBAIC0yOSw2ICsyOSw3IEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAKIGNsYXNzIEZvbnRDYXNjYWRlOworY2xhc3MgRmxvYXRSZWN0OwogY2xhc3MgR3JhcGhpY3ND
b250ZXh0OwogY2xhc3MgSW5saW5lVGV4dEJveDsKIGNsYXNzIFJlbmRlck9iamVjdDsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9UZXh0UGFpbnRTdHlsZS5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvVGV4dFBhaW50U3R5bGUuY3BwCmluZGV4IDU3NTZkYTBmYjY2
MmUxMmY5ZjJmMTQ1OGFjY2M0MTY2ZTBmODdjZTIuLjQyMzYwZGYzNTdkMTM2MGE0YWJmYTBhZGI4
MWJkYWJiNDA5NTU4ZjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9UZXh0
UGFpbnRTdHlsZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1RleHRQYWludFN0
eWxlLmNwcApAQCAtMTE2LDEwICsxMTYsMTEgQEAgVGV4dFBhaW50U3R5bGUgY29tcHV0ZVRleHRQ
YWludFN0eWxlKGNvbnN0IEZyYW1lJiBmcmFtZSwgY29uc3QgUmVuZGVyU3R5bGUmIGxpbmUKICAg
ICByZXR1cm4gcGFpbnRTdHlsZTsKIH0KIAotVGV4dFBhaW50U3R5bGUgY29tcHV0ZVRleHRTZWxl
Y3Rpb25QYWludFN0eWxlKGNvbnN0IFRleHRQYWludFN0eWxlJiB0ZXh0UGFpbnRTdHlsZSwgY29u
c3QgUmVuZGVyVGV4dCYgcmVuZGVyZXIsIGNvbnN0IFJlbmRlclN0eWxlJiBsaW5lU3R5bGUsIGNv
bnN0IFBhaW50SW5mbyYgcGFpbnRJbmZvLCBib29sJiBwYWludFNlbGVjdGVkVGV4dE9ubHksIGJv
b2wmIHBhaW50U2VsZWN0ZWRUZXh0U2VwYXJhdGVseSwgY29uc3QgU2hhZG93RGF0YSomIHNlbGVj
dGlvblNoYWRvdykKK1RleHRQYWludFN0eWxlIGNvbXB1dGVUZXh0U2VsZWN0aW9uUGFpbnRTdHls
ZShjb25zdCBUZXh0UGFpbnRTdHlsZSYgdGV4dFBhaW50U3R5bGUsIGNvbnN0IFJlbmRlclRleHQm
IHJlbmRlcmVyLCBjb25zdCBSZW5kZXJTdHlsZSYgbGluZVN0eWxlLCBjb25zdCBQYWludEluZm8m
IHBhaW50SW5mbywgYm9vbCYgcGFpbnRTZWxlY3RlZFRleHRPbmx5LCBib29sJiBwYWludFNlbGVj
dGVkVGV4dFNlcGFyYXRlbHksIGJvb2wmIHBhaW50Tm9uU2VsZWN0ZWRUZXh0T25seSwgY29uc3Qg
U2hhZG93RGF0YSomIHNlbGVjdGlvblNoYWRvdykKIHsKICAgICBwYWludFNlbGVjdGVkVGV4dE9u
bHkgPSAocGFpbnRJbmZvLnBoYXNlID09IFBhaW50UGhhc2VTZWxlY3Rpb24pOwotICAgIHBhaW50
U2VsZWN0ZWRUZXh0U2VwYXJhdGVseSA9IGZhbHNlOworICAgIHBhaW50U2VsZWN0ZWRUZXh0U2Vw
YXJhdGVseSA9IHBhaW50SW5mby5wYWludEJlaGF2aW9yICYgUGFpbnRCZWhhdmlvckV4Y2x1ZGVT
ZWxlY3Rpb247CisgICAgcGFpbnROb25TZWxlY3RlZFRleHRPbmx5ID0gcGFpbnRJbmZvLnBhaW50
QmVoYXZpb3IgJiBQYWludEJlaGF2aW9yRXhjbHVkZVNlbGVjdGlvbjsKICAgICBzZWxlY3Rpb25T
aGFkb3cgPSAocGFpbnRJbmZvLmZvcmNlVGV4dENvbG9yKCkpID8gbnVsbHB0ciA6IGxpbmVTdHls
ZS50ZXh0U2hhZG93KCk7CiAKICAgICBUZXh0UGFpbnRTdHlsZSBzZWxlY3Rpb25QYWludFN0eWxl
ID0gdGV4dFBhaW50U3R5bGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
VGV4dFBhaW50U3R5bGUuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9UZXh0UGFpbnRTdHls
ZS5oCmluZGV4IDNlOGJlMjdmMjYyNzE3MTY0ZDBkOThlNjEwM2E5YWQyZDBmYTdhNjUuLmRmMjE3
MWFlMmM5Njk3MDJlNjU5NmJmNTljNjkyNzcwOTUwOGVjNWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9UZXh0UGFpbnRTdHlsZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9UZXh0UGFpbnRTdHlsZS5oCkBAIC01NSw3ICs1NSw3IEBAIHN0cnVjdCBUZXh0UGFp
bnRTdHlsZSB7CiB9OwogCiBUZXh0UGFpbnRTdHlsZSBjb21wdXRlVGV4dFBhaW50U3R5bGUoY29u
c3QgRnJhbWUmLCBjb25zdCBSZW5kZXJTdHlsZSYsIGNvbnN0IFBhaW50SW5mbyYpOwotVGV4dFBh
aW50U3R5bGUgY29tcHV0ZVRleHRTZWxlY3Rpb25QYWludFN0eWxlKGNvbnN0IFRleHRQYWludFN0
eWxlJiwgY29uc3QgUmVuZGVyVGV4dCYsIGNvbnN0IFJlbmRlclN0eWxlJiwgY29uc3QgUGFpbnRJ
bmZvJiwgYm9vbCYgcGFpbnRTZWxlY3RlZFRleHRPbmx5LCBib29sJiBwYWludFNlbGVjdGVkVGV4
dFNlcGFyYXRlbHksIGNvbnN0IFNoYWRvd0RhdGEqJiBzZWxlY3Rpb25TaGFkb3cpOworVGV4dFBh
aW50U3R5bGUgY29tcHV0ZVRleHRTZWxlY3Rpb25QYWludFN0eWxlKGNvbnN0IFRleHRQYWludFN0
eWxlJiwgY29uc3QgUmVuZGVyVGV4dCYsIGNvbnN0IFJlbmRlclN0eWxlJiwgY29uc3QgUGFpbnRJ
bmZvJiwgYm9vbCYgcGFpbnRTZWxlY3RlZFRleHRPbmx5LCBib29sJiBwYWludFNlbGVjdGVkVGV4
dFNlcGFyYXRlbHksIGJvb2wmIHBhaW50Tm9uU2VsZWN0ZWRUZXh0T25seSwgY29uc3QgU2hhZG93
RGF0YSomIHNlbGVjdGlvblNoYWRvdyk7CiAKIGVudW0gRmlsbENvbG9yVHlwZSB7IFVzZU5vcm1h
bEZpbGxDb2xvciwgVXNlRW1waGFzaXNNYXJrQ29sb3IgfTsKIHZvaWQgdXBkYXRlR3JhcGhpY3ND
b250ZXh0KEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IFRleHRQYWludFN0eWxlJiwgRmlsbENvbG9y
VHlwZSA9IFVzZU5vcm1hbEZpbGxDb2xvcik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvVGV4dFBhaW50ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1RleHRQ
YWludGVyLmNwcAppbmRleCBhODM1ZTY3NjhkYjdiMmZkZDg2ZTdiYzk1YWU3ODI0ZTcxYzc3M2Ix
Li5hZmZmZmE0ZjZlOTY4YmFhZDgxMzVlNjAwNDFhMDEwMzM5NjVlMWVkIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvVGV4dFBhaW50ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9UZXh0UGFpbnRlci5jcHAKQEAgLTE3MCw3ICsxNzAsNyBAQCB2b2lkIFRl
eHRQYWludGVyOjpwYWludFRleHRBbmRFbXBoYXNpc01hcmtzSWZOZWVkZWQoY29uc3QgVGV4dFJ1
biYgdGV4dFJ1biwgY29ucwogfQogICAgIAogdm9pZCBUZXh0UGFpbnRlcjo6cGFpbnRUZXh0KGNv
bnN0IFRleHRSdW4mIHRleHRSdW4sIHVuc2lnbmVkIGxlbmd0aCwgY29uc3QgRmxvYXRSZWN0JiBi
b3hSZWN0LCBjb25zdCBGbG9hdFBvaW50JiB0ZXh0T3JpZ2luLCB1bnNpZ25lZCBzZWxlY3Rpb25T
dGFydCwgdW5zaWduZWQgc2VsZWN0aW9uRW5kLAotICAgIGJvb2wgcGFpbnRTZWxlY3RlZFRleHRP
bmx5LCBib29sIHBhaW50U2VsZWN0ZWRUZXh0U2VwYXJhdGVseSkKKyAgICBib29sIHBhaW50U2Vs
ZWN0ZWRUZXh0T25seSwgYm9vbCBwYWludFNlbGVjdGVkVGV4dFNlcGFyYXRlbHksIGJvb2wgcGFp
bnROb25TZWxlY3RlZFRleHRPbmx5KQogewogICAgIEFTU0VSVChtX2ZvbnQpOwogICAgIGlmICgh
cGFpbnRTZWxlY3RlZFRleHRPbmx5KSB7CkBAIC0xODksNiArMTg5LDEwIEBAIHZvaWQgVGV4dFBh
aW50ZXI6OnBhaW50VGV4dChjb25zdCBUZXh0UnVuJiB0ZXh0UnVuLCB1bnNpZ25lZCBsZW5ndGgs
IGNvbnN0IEZsb2F0CiAgICAgICAgICAgICAgICAgcGFpbnRUZXh0QW5kRW1waGFzaXNNYXJrc0lm
TmVlZGVkKHRleHRSdW4sIGJveFJlY3QsIHRleHRPcmlnaW4sIHNlbGVjdGlvbkVuZCwgbGVuZ3Ro
LCBtX3RleHRQYWludFN0eWxlLCBtX3RleHRTaGFkb3cpOwogICAgICAgICB9CiAgICAgfQorCisg
ICAgaWYgKHBhaW50Tm9uU2VsZWN0ZWRUZXh0T25seSkKKyAgICAgICAgcmV0dXJuOworCiAgICAg
Ly8gUGFpbnQgb25seSB0aGUgdGV4dCB0aGF0IGlzIHNlbGVjdGVkLgogICAgIGlmICgocGFpbnRT
ZWxlY3RlZFRleHRPbmx5IHx8IHBhaW50U2VsZWN0ZWRUZXh0U2VwYXJhdGVseSkgJiYgc2VsZWN0
aW9uU3RhcnQgPCBzZWxlY3Rpb25FbmQpIHsKICAgICAgICAgR3JhcGhpY3NDb250ZXh0U3RhdGVT
YXZlciBzdGF0ZVNhdmVyKG1fY29udGV4dCwgbV9zZWxlY3Rpb25QYWludFN0eWxlLnN0cm9rZVdp
ZHRoID4gMCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvVGV4dFBhaW50
ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9UZXh0UGFpbnRlci5oCmluZGV4IDZhYzA0
MDE0MjgwZDQwYTRjMjE3MzZjZGZlNDdjNmY3ODlmNjgxNmYuLmQ5NTM2YzcwMGU4MzAyYjRkMzI5
MzU4OWQ2OWQzNWExZTcxNjI3NGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9UZXh0UGFpbnRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9UZXh0UGFpbnRl
ci5oCkBAIC01Nyw3ICs1Nyw3IEBAIHB1YmxpYzoKICAgICB2b2lkIGFkZFRleHRTaGFkb3coY29u
c3QgU2hhZG93RGF0YSogdGV4dFNoYWRvdywgY29uc3QgU2hhZG93RGF0YSogc2VsZWN0aW9uU2hh
ZG93KTsKIAogICAgIHZvaWQgcGFpbnRUZXh0KGNvbnN0IFRleHRSdW4mLCB1bnNpZ25lZCBsZW5n
dGgsIGNvbnN0IEZsb2F0UmVjdCYgYm94UmVjdCwgY29uc3QgRmxvYXRQb2ludCYgdGV4dE9yaWdp
biwKLSAgICAgICAgdW5zaWduZWQgc2VsZWN0aW9uU3RhcnQgPSAwLCB1bnNpZ25lZCBzZWxlY3Rp
b25FbmQgPSAwLCBib29sIHBhaW50U2VsZWN0ZWRUZXh0T25seSA9IGZhbHNlLCBib29sIHBhaW50
U2VsZWN0ZWRUZXh0U2VwYXJhdGVseSA9IGZhbHNlKTsKKyAgICAgICAgdW5zaWduZWQgc2VsZWN0
aW9uU3RhcnQgPSAwLCB1bnNpZ25lZCBzZWxlY3Rpb25FbmQgPSAwLCBib29sIHBhaW50U2VsZWN0
ZWRUZXh0T25seSA9IGZhbHNlLCBib29sIHBhaW50U2VsZWN0ZWRUZXh0U2VwYXJhdGVseSA9IGZh
bHNlLCBib29sIHBhaW50Tm9uU2VsZWN0ZWRUZXh0T25seSA9IGZhbHNlKTsKIAogcHJpdmF0ZToK
ICAgICB2b2lkIGRyYXdUZXh0T3JFbXBoYXNpc01hcmtzKGNvbnN0IEZvbnRDYXNjYWRlJiwgY29u
c3QgVGV4dFJ1biYsIGNvbnN0IEF0b21pY1N0cmluZyYgZW1waGFzaXNNYXJrLCBmbG9hdCBlbXBo
YXNpc01hcmtPZmZzZXQsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvV2ViQ29y
ZUFyZ3VtZW50Q29kZXJzLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9XZWJDb3JlQXJndW1l
bnRDb2RlcnMuY3BwCmluZGV4IDYxNjZhYjZlYTE1MTYxOWNkOTdhZjFiNzNiNmE0OTVhZTcwOThm
MmMuLjg0Y2NmOGY0OWI0NDRjMzQzOWZiNjVhYWRlMGI3OGY2OWVhODFmZmIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL1NoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuY3BwCkBAIC0yMDgyLDEy
ICsyMDgyLDE0IEBAIHZvaWQgQXJndW1lbnRDb2RlcjxUZXh0SW5kaWNhdG9yRGF0YT46OmVuY29k
ZShFbmNvZGVyJiBlbmNvZGVyLCBjb25zdCBUZXh0SW5kaWNhCiAgICAgZW5jb2RlciA8PCB0ZXh0
SW5kaWNhdG9yRGF0YS5zZWxlY3Rpb25SZWN0SW5Sb290Vmlld0Nvb3JkaW5hdGVzOwogICAgIGVu
Y29kZXIgPDwgdGV4dEluZGljYXRvckRhdGEudGV4dEJvdW5kaW5nUmVjdEluUm9vdFZpZXdDb29y
ZGluYXRlczsKICAgICBlbmNvZGVyIDw8IHRleHRJbmRpY2F0b3JEYXRhLnRleHRSZWN0c0luQm91
bmRpbmdSZWN0Q29vcmRpbmF0ZXM7CisgICAgZW5jb2RlciA8PCB0ZXh0SW5kaWNhdG9yRGF0YS5j
b250ZW50SW1hZ2VXaXRob3V0U2VsZWN0aW9uUmVjdEluUm9vdFZpZXdDb29yZGluYXRlczsKICAg
ICBlbmNvZGVyIDw8IHRleHRJbmRpY2F0b3JEYXRhLmNvbnRlbnRJbWFnZVNjYWxlRmFjdG9yOwog
ICAgIGVuY29kZXIuZW5jb2RlRW51bSh0ZXh0SW5kaWNhdG9yRGF0YS5wcmVzZW50YXRpb25UcmFu
c2l0aW9uKTsKICAgICBlbmNvZGVyIDw8IHN0YXRpY19jYXN0PHVpbnQ2NF90Pih0ZXh0SW5kaWNh
dG9yRGF0YS5vcHRpb25zKTsKIAogICAgIGVuY29kZU9wdGlvbmFsSW1hZ2UoZW5jb2RlciwgdGV4
dEluZGljYXRvckRhdGEuY29udGVudEltYWdlLmdldCgpKTsKICAgICBlbmNvZGVPcHRpb25hbElt
YWdlKGVuY29kZXIsIHRleHRJbmRpY2F0b3JEYXRhLmNvbnRlbnRJbWFnZVdpdGhIaWdobGlnaHQu
Z2V0KCkpOworICAgIGVuY29kZU9wdGlvbmFsSW1hZ2UoZW5jb2RlciwgdGV4dEluZGljYXRvckRh
dGEuY29udGVudEltYWdlV2l0aG91dFNlbGVjdGlvbi5nZXQoKSk7CiB9CiAKIGJvb2wgQXJndW1l
bnRDb2RlcjxUZXh0SW5kaWNhdG9yRGF0YT46OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyLCBUZXh0
SW5kaWNhdG9yRGF0YSYgdGV4dEluZGljYXRvckRhdGEpCkBAIC0yMTAxLDYgKzIxMDMsOSBAQCBi
b29sIEFyZ3VtZW50Q29kZXI8VGV4dEluZGljYXRvckRhdGE+OjpkZWNvZGUoRGVjb2RlciYgZGVj
b2RlciwgVGV4dEluZGljYXRvckRhdAogICAgIGlmICghZGVjb2Rlci5kZWNvZGUodGV4dEluZGlj
YXRvckRhdGEudGV4dFJlY3RzSW5Cb3VuZGluZ1JlY3RDb29yZGluYXRlcykpCiAgICAgICAgIHJl
dHVybiBmYWxzZTsKIAorICAgIGlmICghZGVjb2Rlci5kZWNvZGUodGV4dEluZGljYXRvckRhdGEu
Y29udGVudEltYWdlV2l0aG91dFNlbGVjdGlvblJlY3RJblJvb3RWaWV3Q29vcmRpbmF0ZXMpKQor
ICAgICAgICByZXR1cm4gZmFsc2U7CisKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHRleHRJbmRp
Y2F0b3JEYXRhLmNvbnRlbnRJbWFnZVNjYWxlRmFjdG9yKSkKICAgICAgICAgcmV0dXJuIGZhbHNl
OwogCkBAIC0yMTE4LDYgKzIxMjMsOSBAQCBib29sIEFyZ3VtZW50Q29kZXI8VGV4dEluZGljYXRv
ckRhdGE+OjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlciwgVGV4dEluZGljYXRvckRhdAogICAgIGlm
ICghZGVjb2RlT3B0aW9uYWxJbWFnZShkZWNvZGVyLCB0ZXh0SW5kaWNhdG9yRGF0YS5jb250ZW50
SW1hZ2VXaXRoSGlnaGxpZ2h0KSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCisgICAgaWYgKCFk
ZWNvZGVPcHRpb25hbEltYWdlKGRlY29kZXIsIHRleHRJbmRpY2F0b3JEYXRhLmNvbnRlbnRJbWFn
ZVdpdGhvdXRTZWxlY3Rpb24pKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKICAgICByZXR1cm4g
dHJ1ZTsKIH0KIAo=
</data>

          </attachment>
      

    </bug>

</bugzilla>