<?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>79653</bug_id>
          
          <creation_ts>2012-02-27 02:32:31 -0800</creation_ts>
          <short_desc>Remove getMatchedCSSRules</short_desc>
          <delta_ts>2022-07-16 14:50:02 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>CSS</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          <see_also>https://bugs.webkit.org/show_bug.cgi?id=89240</see_also>
          <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>
          
          <blocked>83298</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Antti Koivisto">koivisto</reporter>
          <assigned_to name="Chris Dumez">cdumez</assigned_to>
          <cc>abarth</cc>
    
    <cc>ap</cc>
    
    <cc>cred+bugzilla</cc>
    
    <cc>darin</cc>
    
    <cc>emilio</cc>
    
    <cc>itbeenews</cc>
    
    <cc>jmayhew</cc>
    
    <cc>joethomas</cc>
    
    <cc>koivisto</cc>
    
    <cc>kriomant</cc>
    
    <cc>mitz</cc>
    
    <cc>moz</cc>
    
    <cc>oliver</cc>
    
    <cc>pfeldman</cc>
    
    <cc>sam</cc>
    
    <cc>shezbaig.wk</cc>
    
    <cc>syoichi</cc>
    
    <cc>tkaraszewski</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>565511</commentid>
    <comment_count>0</comment_count>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2012-02-27 02:32:31 -0800</bug_when>
    <thetext>Based on comments in bug 35015, getMatchedCSSRules was implemented purely to support inspector but is no longer used by it. Supporting the feature is complicating CSSStyleSelector and will be even more problematic with the planned stylesheet refactoring. It should be removed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>565824</commentid>
    <comment_count>1</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-02-27 11:02:41 -0800</bug_when>
    <thetext>How often is this feature used by web sites?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>565851</commentid>
    <comment_count>2</comment_count>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2012-02-27 11:29:47 -0800</bug_when>
    <thetext>I can&apos;t imagine it having any real use cases in the web. It is an introspection API (a poor one, due to security constraints).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>565858</commentid>
    <comment_count>3</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-02-27 11:37:05 -0800</bug_when>
    <thetext>Seems to come up on stack overflow a bit:

http://stackoverflow.com/questions/2952667/find-all-css-rules-that-apply-to-an-element
http://stackoverflow.com/questions/4471663/window-getcomputedstyle-how-to-discard-properties-with-default-values
http://stackoverflow.com/questions/4482374/is-it-possible-to-find-css-rules-from-an-html-node-via-javascript</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>623293</commentid>
    <comment_count>4</comment_count>
    <who name="">jmayhew</who>
    <bug_when>2012-05-14 13:51:57 -0700</bug_when>
    <thetext>We are using this API specifically so we can introspect CSS on DOM objects. Currently getMatchedCSSRules it is still unable to get rules for pseudo classes but we are working to have the spec updated to include this functionality. 

We would be able to get the functionality we want if the APIs that the web inspector uses were available to all web apps, but it appears that they are limited to use within the inspector windows. As a result our only option is to use getMatchedCSSRules. 

If this API is dropped we would need an API to take its place. Perhaps, the APIs the inspector uses could be opened up, or some chrome extension permissions could be added that open up use of those APIs to extensions.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>643769</commentid>
    <comment_count>5</comment_count>
    <who name="Tyler Karaszewski">tkaraszewski</who>
    <bug_when>2012-06-07 11:59:42 -0700</bug_when>
    <thetext>We use this at Evernote in a very similar way to how it&apos;s mentioned in comment #4. We have an extension that uses it to do introspection on a page and retrieve that original style rules that apply to each element on that page.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>832667</commentid>
    <comment_count>6</comment_count>
    <who name="Joe Nelson">cred+bugzilla</who>
    <bug_when>2013-02-13 19:30:24 -0800</bug_when>
    <thetext>If you remove this function please provide access to whatever API that the inspector uses.

Style introspection is very useful. I use it in my CSS refactoring tool:
https://github.com/begriffs/css-ratiocinator</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>832740</commentid>
    <comment_count>7</comment_count>
    <who name="Pavel Feldman">pfeldman</who>
    <bug_when>2013-02-13 22:37:33 -0800</bug_when>
    <thetext>It is a part of remote debugging protocol. We will make it public / documented some time soon, but it is already available.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>932871</commentid>
    <comment_count>8</comment_count>
    <who name="">kriomant</who>
    <bug_when>2013-09-24 20:31:16 -0700</bug_when>
    <thetext>I use getMatchedCSSRules in my Chrome extension. Extension uses devtool panel, so using remote debugging protocol is not an option - as far as I know opening devtools will prevent extensions from using it.

So it will be good to have some method for extensions to introspect page styles. It would be even better if this method doesn&apos;t suffer from same-origin restriction. Currently I have to load and embed all stylesheets to work around it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>932899</commentid>
    <comment_count>9</comment_count>
    <who name="Oliver Hunt">oliver</who>
    <bug_when>2013-09-24 23:03:53 -0700</bug_when>
    <thetext>(In reply to comment #8)
&gt; I use getMatchedCSSRules in my Chrome extension. Extension uses devtool panel, so using remote debugging protocol is not an option - as far as I know opening devtools will prevent extensions from using it.
&gt; 
&gt; So it will be good to have some method for extensions to introspect page styles. It would be even better if this method doesn&apos;t suffer from same-origin restriction. Currently I have to load and embed all stylesheets to work around it.

Chrome forked from webkit, so you are better off posting in their bug db</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>991682</commentid>
    <comment_count>10</comment_count>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2014-03-18 09:09:49 -0700</bug_when>
    <thetext>&lt;rdar://problem/16354443&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1342012</commentid>
    <comment_count>11</comment_count>
    <who name="j.j.">moz</who>
    <bug_when>2017-08-24 05:41:21 -0700</bug_when>
    <thetext>Chrome Intent to Remove: getMatchedCSSRules()
https://groups.google.com/a/chromium.org/forum/#!topic/blink-dev/-_Al0I5Rm9Q</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1370780</commentid>
    <comment_count>12</comment_count>
      <attachid>326725</attachid>
    <who name="Azrael">itbeenews</who>
    <bug_when>2017-11-12 13:33:12 -0800</bug_when>
    <thetext>Created attachment 326725
chrome os</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1373109</commentid>
    <comment_count>13</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2017-11-17 09:51:21 -0800</bug_when>
    <thetext>The content of attachment 326725 has been deleted for the following reason:

Irrelevant attachment, likely spam or phishing.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1731822</commentid>
    <comment_count>14</comment_count>
    <who name="Sam Weinig">sam</who>
    <bug_when>2021-02-20 12:13:32 -0800</bug_when>
    <thetext>Chrome and Firefox have both removed this. We should try to as well.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1731828</commentid>
    <comment_count>15</comment_count>
      <attachid>421100</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2021-02-20 12:27:06 -0800</bug_when>
    <thetext>Created attachment 421100
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1731830</commentid>
    <comment_count>16</comment_count>
    <who name="Sam Weinig">sam</who>
    <bug_when>2021-02-20 12:30:26 -0800</bug_when>
    <thetext>(In reply to Sam Weinig from comment #15)
&gt; Created attachment 421100 [details]
&gt; Patch

Removing this is going to be harder than I would have hoped. A few problems:

- Safari seems to be using it, we need to find out why and get them off of it.
- It seems we made getMatchedCSSRules public API in WebKitLegacy. While it is deprecated, it&apos;s not obsolete, so we likely need to keep it working there at least. I am curious if we can make an implementation that is less invaisive just for the Webkit Legacy case, but I am not super optimistic about it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1731832</commentid>
    <comment_count>17</comment_count>
      <attachid>421101</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2021-02-20 12:32:06 -0800</bug_when>
    <thetext>Created attachment 421101
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1884409</commentid>
    <comment_count>18</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2022-07-15 16:45:26 -0700</bug_when>
    <thetext>Pull request: https://github.com/WebKit/WebKit/pull/2479</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1884583</commentid>
    <comment_count>19</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2022-07-16 14:49:58 -0700</bug_when>
    <thetext>Committed 252542@main (7d88064a3d12): &lt;https://commits.webkit.org/252542@main&gt;

Reviewed commits have been landed. Closing PR #2479 and removing active labels.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="0"
              isprivate="0"
          >
            <attachid>326725</attachid>
            <date>2017-11-12 13:33:12 -0800</date>
            <delta_ts>2017-11-12 13:33:12 -0800</delta_ts>
            <desc>chrome os</desc>
            <filename>google-chrome-stable_current_amd64.deb</filename>
            <type>text/plain</type>
            <size>0</size>
            <attacher name="Azrael">itbeenews</attacher>
            
              <data encoding="base64"></data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>421100</attachid>
            <date>2021-02-20 12:27:06 -0800</date>
            <delta_ts>2021-02-20 12:32:04 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-79653-20210220122705.patch</filename>
            <type>text/plain</type>
            <size>20021</size>
            <attacher name="Sam Weinig">sam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDI3MzIwMikKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDQyIEBACisyMDIxLTAyLTIwICBTYW0gV2Vp
bmlnICA8d2VpbmlnQGFwcGxlLmNvbT4KKworICAgICAgICBSZW1vdmUgZ2V0TWF0Y2hlZENTU1J1
bGVzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03OTY1
MworICAgICAgICA8cmRhcjovL3Byb2JsZW0vMTYzNTQ0NDM+CisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgUmVtb3ZlIGdldE1hdGNoZWRDU1NSdWxlcyBh
bmQgc29tZSBjb2RlIHRoYXQgb25seSBleGlzdGVkIG9ubHkgZm9yIGl0IChzdWNoCisgICAgICAg
IGFzIGhhc0RvY3VtZW50U2VjdXJpdHlPcmlnaW4pLiBJIGFtIHN1cmUgdGhlcmUgaXMgbW9yZSB0
aGF0IGNhbiBiZSBjbGVhbmVkCisgICAgICAgIHVwIG9uY2UgaXQgaXMgZ29uZSwgYnV0IHRoaXMg
aXMgdGhlIGZpcnN0IHN0ZXAuCisKKyAgICAgICAgRmlyZWZveCBhbmQgQ2hyb21lIGhhdmUgaGFk
IGl0IHJlbW92ZWQgZm9yIGEgd2hpbGUgbm93LgorCisgICAgICAgICogY3NzL0NTU1N0eWxlUnVs
ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDU1NTdHlsZVJ1bGU6OnNldFNlbGVjdG9yVGV4dCk6
CisgICAgICAgICogY3NzL1N0eWxlUnVsZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZVJ1
bGU6OlN0eWxlUnVsZSk6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZVJ1bGU6OmNyZWF0ZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpTdHlsZVJ1bGU6OmNyZWF0ZUZvclNwbGl0dGluZyk6CisgICAgICAg
IChXZWJDb3JlOjpTdHlsZVJ1bGU6OnNwbGl0SW50b011bHRpcGxlUnVsZXNXaXRoTWF4aW11bVNl
bGVjdG9yQ29tcG9uZW50Q291bnQgY29uc3QpOgorICAgICAgICAqIGNzcy9TdHlsZVJ1bGUuaDoK
KyAgICAgICAgKFdlYkNvcmU6OlN0eWxlUnVsZUJhc2U6OlN0eWxlUnVsZUJhc2UpOgorICAgICAg
ICAoV2ViQ29yZTo6U3R5bGVSdWxlQmFzZTo6aGFzRG9jdW1lbnRTZWN1cml0eU9yaWdpbiBjb25z
dCk6IERlbGV0ZWQuCisgICAgICAgICogY3NzL3BhcnNlci9DU1NQYXJzZXIuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6Q1NTUGFyc2VyOjpwYXJzZVJ1bGUpOgorICAgICAgICAqIGNzcy9wYXJzZXIv
Q1NTUGFyc2VyLmg6CisgICAgICAgICogY3NzL3BhcnNlci9DU1NQYXJzZXJDb250ZXh0LmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6Om9wZXJhdG9yPT0pOgorICAgICAgICAqIGNzcy9wYXJzZXIvQ1NT
UGFyc2VyQ29udGV4dC5oOgorICAgICAgICAoV2ViQ29yZTo6Q1NTUGFyc2VyQ29udGV4dEhhc2g6
Omhhc2gpOgorICAgICAgICAqIGNzcy9wYXJzZXIvQ1NTUGFyc2VySW1wbC5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpDU1NQYXJzZXJJbXBsOjpjb25zdW1lU3R5bGVSdWxlKToKKyAgICAgICAgKiBw
YWdlL0RPTVdpbmRvdy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpET01XaW5kb3c6OmdldE1hdGNo
ZWRDU1NSdWxlcyBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgICogcGFnZS9ET01XaW5kb3cuaDoK
KyAgICAgICAgKiBwYWdlL0RPTVdpbmRvdy5pZGw6CisgICAgICAgICogcGFnZS9TZXR0aW5ncy55
YW1sOgorCiAyMDIxLTAyLTIwICBaYWxhbiBCdWp0YXMgIDx6YWxhbkBhcHBsZS5jb20+CiAKICAg
ICAgICAgW0xGQ11bSW50ZWdyYXRpb25dIEVuY2xvc2luZyB0b3AgYW5kIGJvdHRvbSB2YWx1ZSBh
cmUgcmVsYXRpdmUgdG8gdGhlIGNvbnRhaW5pbmcgYmxvY2sncyBib3JkZXIgYm94CkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9jc3MvQ1NTU3R5bGVSdWxlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9jc3MvQ1NTU3R5bGVSdWxlLmNwcAkocmV2aXNpb24gMjczMTk5KQorKysgU291cmNl
L1dlYkNvcmUvY3NzL0NTU1N0eWxlUnVsZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTg1LDExICs4
NSw2IEBAIFN0cmluZyBDU1NTdHlsZVJ1bGU6OnNlbGVjdG9yVGV4dCgpIGNvbnMKIAogdm9pZCBD
U1NTdHlsZVJ1bGU6OnNldFNlbGVjdG9yVGV4dChjb25zdCBTdHJpbmcmIHNlbGVjdG9yVGV4dCkK
IHsKLSAgICAvLyBGSVhNRTogZ2V0TWF0Y2hlZENTU1J1bGVzIGNhbiByZXR1cm4gQ1NTU3R5bGVS
dWxlcyB0aGF0IGFyZSBtaXNzaW5nIHBhcmVudCBzdHlsZXNoZWV0IHBvaW50ZXIgd2hpbGUKLSAg
ICAvLyByZWZlcmVuY2luZyBTdHlsZVJ1bGVzIHRoYXQgYXJlIHBhcnQgb2Ygc3R5bGVzaGVldC4g
RGlzYWxsb3cgbXV0YXRpb25zIGluIHRoaXMgY2FzZS4KLSAgICBpZiAoIXBhcmVudFN0eWxlU2hl
ZXQoKSkKLSAgICAgICAgcmV0dXJuOwotCiAgICAgQ1NTUGFyc2VyIHAocGFyc2VyQ29udGV4dCgp
KTsKICAgICBhdXRvIHNlbGVjdG9yTGlzdCA9IHAucGFyc2VTZWxlY3RvcihzZWxlY3RvclRleHQp
OwogICAgIGlmICghc2VsZWN0b3JMaXN0KQpJbmRleDogU291cmNlL1dlYkNvcmUvY3NzL1N0eWxl
UnVsZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlUnVsZS5jcHAJ
KHJldmlzaW9uIDI3MzE5OSkKKysrIFNvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVJ1bGUuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC0xNzEsOCArMTcxLDggQEAgdW5zaWduZWQgU3R5bGVSdWxlOjphdmVy
YWdlU2l6ZUluQnl0ZXMoKQogICAgIHJldHVybiBzaXplb2YoU3R5bGVSdWxlKSArIHNpemVvZihD
U1NTZWxlY3RvcikgKyBTdHlsZVByb3BlcnRpZXM6OmF2ZXJhZ2VTaXplSW5CeXRlcygpOwogfQog
Ci1TdHlsZVJ1bGU6OlN0eWxlUnVsZShSZWY8U3R5bGVQcm9wZXJ0aWVzQmFzZT4mJiBwcm9wZXJ0
aWVzLCBib29sIGhhc0RvY3VtZW50U2VjdXJpdHlPcmlnaW4sIENTU1NlbGVjdG9yTGlzdCYmIHNl
bGVjdG9ycykKLSAgICA6IFN0eWxlUnVsZUJhc2UoU3R5bGVSdWxlVHlwZTo6U3R5bGUsIGhhc0Rv
Y3VtZW50U2VjdXJpdHlPcmlnaW4pCitTdHlsZVJ1bGU6OlN0eWxlUnVsZShSZWY8U3R5bGVQcm9w
ZXJ0aWVzQmFzZT4mJiBwcm9wZXJ0aWVzLCBDU1NTZWxlY3Rvckxpc3QmJiBzZWxlY3RvcnMpCisg
ICAgOiBTdHlsZVJ1bGVCYXNlKFN0eWxlUnVsZVR5cGU6OlN0eWxlKQogICAgICwgbV9wcm9wZXJ0
aWVzKFdURk1vdmUocHJvcGVydGllcykpCiAgICAgLCBtX3NlbGVjdG9yTGlzdChXVEZNb3ZlKHNl
bGVjdG9ycykpCiB7CkBAIC0xODcsOSArMTg3LDkgQEAgU3R5bGVSdWxlOjpTdHlsZVJ1bGUoY29u
c3QgU3R5bGVSdWxlJiBvKQogCiBTdHlsZVJ1bGU6On5TdHlsZVJ1bGUoKSA9IGRlZmF1bHQ7CiAK
LVJlZjxTdHlsZVJ1bGU+IFN0eWxlUnVsZTo6Y3JlYXRlKFJlZjxTdHlsZVByb3BlcnRpZXNCYXNl
PiYmIHByb3BlcnRpZXMsIGJvb2wgaGFzRG9jdW1lbnRTZWN1cml0eU9yaWdpbiwgQ1NTU2VsZWN0
b3JMaXN0JiYgc2VsZWN0b3JzKQorUmVmPFN0eWxlUnVsZT4gU3R5bGVSdWxlOjpjcmVhdGUoUmVm
PFN0eWxlUHJvcGVydGllc0Jhc2U+JiYgcHJvcGVydGllcywgQ1NTU2VsZWN0b3JMaXN0JiYgc2Vs
ZWN0b3JzKQogewotICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFN0eWxlUnVsZShXVEZNb3ZlKHBy
b3BlcnRpZXMpLCBoYXNEb2N1bWVudFNlY3VyaXR5T3JpZ2luLCBXVEZNb3ZlKHNlbGVjdG9ycykp
KTsKKyAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBTdHlsZVJ1bGUoV1RGTW92ZShwcm9wZXJ0aWVz
KSwgV1RGTW92ZShzZWxlY3RvcnMpKSk7CiB9CiAKIFJlZjxTdHlsZVJ1bGU+IFN0eWxlUnVsZTo6
Y29weSgpIGNvbnN0CkBAIC0yMTgsNyArMjE4LDcgQEAgUmVmPFN0eWxlUnVsZT4gU3R5bGVSdWxl
OjpjcmVhdGVGb3JTcGxpdAogICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBzZWxlY3RvcnMu
c2l6ZSgpOyArK2kpCiAgICAgICAgIG5ldyAoTm90TnVsbCwgJnNlbGVjdG9yTGlzdEFycmF5W2ld
KSBDU1NTZWxlY3Rvcigqc2VsZWN0b3JzLmF0KGkpKTsKICAgICBzZWxlY3Rvckxpc3RBcnJheVtz
ZWxlY3RvcnMuc2l6ZSgpIC0gMV0uc2V0TGFzdEluU2VsZWN0b3JMaXN0KCk7Ci0gICAgcmV0dXJu
IFN0eWxlUnVsZTo6Y3JlYXRlKFdURk1vdmUocHJvcGVydGllcyksIGhhc0RvY3VtZW50U2VjdXJp
dHlPcmlnaW4sIENTU1NlbGVjdG9yTGlzdChXVEZNb3ZlKHNlbGVjdG9yTGlzdEFycmF5KSkpOwor
ICAgIHJldHVybiBTdHlsZVJ1bGU6OmNyZWF0ZShXVEZNb3ZlKHByb3BlcnRpZXMpLCBDU1NTZWxl
Y3Rvckxpc3QoV1RGTW92ZShzZWxlY3Rvckxpc3RBcnJheSkpKTsKIH0KIAogVmVjdG9yPFJlZlB0
cjxTdHlsZVJ1bGU+PiBTdHlsZVJ1bGU6OnNwbGl0SW50b011bHRpcGxlUnVsZXNXaXRoTWF4aW11
bVNlbGVjdG9yQ29tcG9uZW50Q291bnQodW5zaWduZWQgbWF4Q291bnQpIGNvbnN0CkBAIC0yMzQs
NyArMjM0LDcgQEAgVmVjdG9yPFJlZlB0cjxTdHlsZVJ1bGU+PiBTdHlsZVJ1bGU6OnNwbAogICAg
ICAgICAgICAgY29tcG9uZW50c0luVGhpc1NlbGVjdG9yLmFwcGVuZChjb21wb25lbnQpOwogCiAg
ICAgICAgIGlmIChjb21wb25lbnRzSW5UaGlzU2VsZWN0b3Iuc2l6ZSgpICsgY29tcG9uZW50c1Np
bmNlTGFzdFNwbGl0LnNpemUoKSA+IG1heENvdW50ICYmICFjb21wb25lbnRzU2luY2VMYXN0U3Bs
aXQuaXNFbXB0eSgpKSB7Ci0gICAgICAgICAgICBydWxlcy5hcHBlbmQoY3JlYXRlRm9yU3BsaXR0
aW5nKGNvbXBvbmVudHNTaW5jZUxhc3RTcGxpdCwgY29uc3RfY2FzdDxTdHlsZVByb3BlcnRpZXMm
Pihwcm9wZXJ0aWVzKCkpLCBoYXNEb2N1bWVudFNlY3VyaXR5T3JpZ2luKCkpKTsKKyAgICAgICAg
ICAgIHJ1bGVzLmFwcGVuZChjcmVhdGVGb3JTcGxpdHRpbmcoY29tcG9uZW50c1NpbmNlTGFzdFNw
bGl0LCBjb25zdF9jYXN0PFN0eWxlUHJvcGVydGllcyY+KHByb3BlcnRpZXMoKSkpKTsKICAgICAg
ICAgICAgIGNvbXBvbmVudHNTaW5jZUxhc3RTcGxpdC5jbGVhcigpOwogICAgICAgICB9CiAKQEAg
LTI0Miw3ICsyNDIsNyBAQCBWZWN0b3I8UmVmUHRyPFN0eWxlUnVsZT4+IFN0eWxlUnVsZTo6c3Bs
CiAgICAgfQogCiAgICAgaWYgKCFjb21wb25lbnRzU2luY2VMYXN0U3BsaXQuaXNFbXB0eSgpKQot
ICAgICAgICBydWxlcy5hcHBlbmQoY3JlYXRlRm9yU3BsaXR0aW5nKGNvbXBvbmVudHNTaW5jZUxh
c3RTcGxpdCwgY29uc3RfY2FzdDxTdHlsZVByb3BlcnRpZXMmPihwcm9wZXJ0aWVzKCkpLCBoYXNE
b2N1bWVudFNlY3VyaXR5T3JpZ2luKCkpKTsKKyAgICAgICAgcnVsZXMuYXBwZW5kKGNyZWF0ZUZv
clNwbGl0dGluZyhjb21wb25lbnRzU2luY2VMYXN0U3BsaXQsIGNvbnN0X2Nhc3Q8U3R5bGVQcm9w
ZXJ0aWVzJj4ocHJvcGVydGllcygpKSkpOwogCiAgICAgcmV0dXJuIHJ1bGVzOwogfQpJbmRleDog
U291cmNlL1dlYkNvcmUvY3NzL1N0eWxlUnVsZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL2Nzcy9TdHlsZVJ1bGUuaAkocmV2aXNpb24gMjczMTk5KQorKysgU291cmNlL1dlYkNvcmUv
Y3NzL1N0eWxlUnVsZS5oCSh3b3JraW5nIGNvcHkpCkBAIC02NiwyNyArNjYsMjMgQEAgcHVibGlj
OgogICAgIFJlZjxDU1NSdWxlPiBjcmVhdGVDU1NPTVdyYXBwZXIoQ1NTUnVsZSogcGFyZW50UnVs
ZSkgY29uc3Q7CiAKIHByb3RlY3RlZDoKLSAgICBleHBsaWNpdCBTdHlsZVJ1bGVCYXNlKFN0eWxl
UnVsZVR5cGUsIGJvb2wgaGFzRG9jdW1lbnRTZWN1cml0eU9yaWdpbiA9IGZhbHNlKTsKKyAgICBl
eHBsaWNpdCBTdHlsZVJ1bGVCYXNlKFN0eWxlUnVsZVR5cGUpOwogICAgIFN0eWxlUnVsZUJhc2Uo
Y29uc3QgU3R5bGVSdWxlQmFzZSYpOwogICAgIH5TdHlsZVJ1bGVCYXNlKCkgPSBkZWZhdWx0Owog
Ci0gICAgYm9vbCBoYXNEb2N1bWVudFNlY3VyaXR5T3JpZ2luKCkgY29uc3QgeyByZXR1cm4gbV9o
YXNEb2N1bWVudFNlY3VyaXR5T3JpZ2luOyB9Ci0KIHByaXZhdGU6CiAgICAgV0VCQ09SRV9FWFBP
UlQgdm9pZCBkZXN0cm95KCk7CiAgICAgCiAgICAgUmVmPENTU1J1bGU+IGNyZWF0ZUNTU09NV3Jh
cHBlcihDU1NTdHlsZVNoZWV0KiBwYXJlbnRTaGVldCwgQ1NTUnVsZSogcGFyZW50UnVsZSkgY29u
c3Q7CiAKICAgICB1bnNpZ25lZCBtX3R5cGUgOiA1OyAvLyBTdHlsZVJ1bGVUeXBlCi0gICAgLy8g
VGhpcyBpcyBvbmx5IG5lZWRlZCB0byBzdXBwb3J0IGdldE1hdGNoZWRDU1NSdWxlcy4KLSAgICB1
bnNpZ25lZCBtX2hhc0RvY3VtZW50U2VjdXJpdHlPcmlnaW4gOiAxOwogfTsKIAogREVDTEFSRV9B
TExPQ0FUT1JfV0lUSF9IRUFQX0lERU5USUZJRVIoU3R5bGVSdWxlKTsKIGNsYXNzIFN0eWxlUnVs
ZSBmaW5hbCA6IHB1YmxpYyBTdHlsZVJ1bGVCYXNlIHsKICAgICBXVEZfTUFLRV9TVFJVQ1RfRkFT
VF9BTExPQ0FURURfV0lUSF9IRUFQX0lERU5USUZJRVIoU3R5bGVSdWxlKTsKIHB1YmxpYzoKLSAg
ICBzdGF0aWMgUmVmPFN0eWxlUnVsZT4gY3JlYXRlKFJlZjxTdHlsZVByb3BlcnRpZXNCYXNlPiYm
LCBib29sIGhhc0RvY3VtZW50U2VjdXJpdHlPcmlnaW4sIENTU1NlbGVjdG9yTGlzdCYmKTsKKyAg
ICBzdGF0aWMgUmVmPFN0eWxlUnVsZT4gY3JlYXRlKFJlZjxTdHlsZVByb3BlcnRpZXNCYXNlPiYm
LCBDU1NTZWxlY3Rvckxpc3QmJik7CiAgICAgUmVmPFN0eWxlUnVsZT4gY29weSgpIGNvbnN0Owog
ICAgIH5TdHlsZVJ1bGUoKTsKIApAQCAtOTYsOCArOTIsNiBAQCBwdWJsaWM6CiAgICAgTXV0YWJs
ZVN0eWxlUHJvcGVydGllcyYgbXV0YWJsZVByb3BlcnRpZXMoKTsKICAgICBjb25zdCBTdHlsZVBy
b3BlcnRpZXMqIHByb3BlcnRpZXNXaXRob3V0RGVmZXJyZWRQYXJzaW5nKCkgY29uc3Q7CiAKLSAg
ICB1c2luZyBTdHlsZVJ1bGVCYXNlOjpoYXNEb2N1bWVudFNlY3VyaXR5T3JpZ2luOwotCiAgICAg
dm9pZCB3cmFwcGVyQWRvcHRTZWxlY3Rvckxpc3QoQ1NTU2VsZWN0b3JMaXN0JiYpOwogCiAgICAg
VmVjdG9yPFJlZlB0cjxTdHlsZVJ1bGU+PiBzcGxpdEludG9NdWx0aXBsZVJ1bGVzV2l0aE1heGlt
dW1TZWxlY3RvckNvbXBvbmVudENvdW50KHVuc2lnbmVkKSBjb25zdDsKQEAgLTExMCwxMCArMTA0
LDEwIEBAIHB1YmxpYzoKICAgICBzdGF0aWMgdW5zaWduZWQgYXZlcmFnZVNpemVJbkJ5dGVzKCk7
CiAKIHByaXZhdGU6Ci0gICAgU3R5bGVSdWxlKFJlZjxTdHlsZVByb3BlcnRpZXNCYXNlPiYmLCBi
b29sIGhhc0RvY3VtZW50U2VjdXJpdHlPcmlnaW4sIENTU1NlbGVjdG9yTGlzdCYmKTsKKyAgICBT
dHlsZVJ1bGUoUmVmPFN0eWxlUHJvcGVydGllc0Jhc2U+JiYsIENTU1NlbGVjdG9yTGlzdCYmKTsK
ICAgICBTdHlsZVJ1bGUoY29uc3QgU3R5bGVSdWxlJik7CiAKLSAgICBzdGF0aWMgUmVmPFN0eWxl
UnVsZT4gY3JlYXRlRm9yU3BsaXR0aW5nKGNvbnN0IFZlY3Rvcjxjb25zdCBDU1NTZWxlY3Rvcio+
JiwgUmVmPFN0eWxlUHJvcGVydGllcz4mJiwgYm9vbCBoYXNEb2N1bWVudFNlY3VyaXR5T3JpZ2lu
KTsKKyAgICBzdGF0aWMgUmVmPFN0eWxlUnVsZT4gY3JlYXRlRm9yU3BsaXR0aW5nKGNvbnN0IFZl
Y3Rvcjxjb25zdCBDU1NTZWxlY3Rvcio+JiwgUmVmPFN0eWxlUHJvcGVydGllcz4mJik7CiAKICAg
ICBtdXRhYmxlIFJlZjxTdHlsZVByb3BlcnRpZXNCYXNlPiBtX3Byb3BlcnRpZXM7CiAgICAgQ1NT
U2VsZWN0b3JMaXN0IG1fc2VsZWN0b3JMaXN0OwpAQCAtMjYwLDE2ICsyNTQsMTQgQEAgcHJpdmF0
ZToKICAgICBBdG9tU3RyaW5nIG1fdXJpOwogfTsKICAgICAKLWlubGluZSBTdHlsZVJ1bGVCYXNl
OjpTdHlsZVJ1bGVCYXNlKFN0eWxlUnVsZVR5cGUgdHlwZSwgYm9vbCBoYXNEb2N1bWVudFNlY3Vy
aXR5T3JpZ2luKQoraW5saW5lIFN0eWxlUnVsZUJhc2U6OlN0eWxlUnVsZUJhc2UoU3R5bGVSdWxl
VHlwZSB0eXBlKQogICAgIDogbV90eXBlKHN0YXRpY19jYXN0PHVuc2lnbmVkPih0eXBlKSkKLSAg
ICAsIG1faGFzRG9jdW1lbnRTZWN1cml0eU9yaWdpbihoYXNEb2N1bWVudFNlY3VyaXR5T3JpZ2lu
KQogewogfQogCiBpbmxpbmUgU3R5bGVSdWxlQmFzZTo6U3R5bGVSdWxlQmFzZShjb25zdCBTdHls
ZVJ1bGVCYXNlJiBvKQogICAgIDogV1RGOjpSZWZDb3VudGVkQmFzZSgpCiAgICAgLCBtX3R5cGUo
by5tX3R5cGUpCi0gICAgLCBtX2hhc0RvY3VtZW50U2VjdXJpdHlPcmlnaW4oby5tX2hhc0RvY3Vt
ZW50U2VjdXJpdHlPcmlnaW4pCiB7CiB9CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2Nzcy9wYXJz
ZXIvQ1NTUGFyc2VyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9jc3MvcGFyc2Vy
L0NTU1BhcnNlci5jcHAJKHJldmlzaW9uIDI3MzE5OSkKKysrIFNvdXJjZS9XZWJDb3JlL2Nzcy9w
YXJzZXIvQ1NTUGFyc2VyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNzUsOSArNzUsOSBAQCB2b2lk
IENTU1BhcnNlcjo6cGFyc2VTaGVldEZvckluc3BlY3RvcihjCiAgICAgcmV0dXJuIENTU1BhcnNl
ckltcGw6OnBhcnNlU3R5bGVTaGVldEZvckluc3BlY3RvcihzdHJpbmcsIGNvbnRleHQsIHNoZWV0
LCBvYnNlcnZlcik7CiB9CiAKLVJlZlB0cjxTdHlsZVJ1bGVCYXNlPiBDU1NQYXJzZXI6OnBhcnNl
UnVsZShjb25zdCBDU1NQYXJzZXJDb250ZXh0JiBjb250ZXh0LCBTdHlsZVNoZWV0Q29udGVudHMq
IHNoZWV0LCBjb25zdCBTdHJpbmcmIHN0cmluZykKK1JlZlB0cjxTdHlsZVJ1bGVCYXNlPiBDU1NQ
YXJzZXI6OnBhcnNlUnVsZShTdHlsZVNoZWV0Q29udGVudHMqIHNoZWV0LCBjb25zdCBTdHJpbmcm
IHN0cmluZykKIHsKLSAgICByZXR1cm4gQ1NTUGFyc2VySW1wbDo6cGFyc2VSdWxlKHN0cmluZywg
Y29udGV4dCwgc2hlZXQsIENTU1BhcnNlckltcGw6OkFsbG93SW1wb3J0UnVsZXMpOworICAgIHJl
dHVybiBDU1NQYXJzZXJJbXBsOjpwYXJzZVJ1bGUoc3RyaW5nLCBtX2NvbnRleHQsIHNoZWV0LCBD
U1NQYXJzZXJJbXBsOjpBbGxvd0ltcG9ydFJ1bGVzKTsKIH0KIAogUmVmUHRyPFN0eWxlUnVsZUtl
eWZyYW1lPiBDU1NQYXJzZXI6OnBhcnNlS2V5ZnJhbWVSdWxlKGNvbnN0IFN0cmluZyYgc3RyaW5n
KQpJbmRleDogU291cmNlL1dlYkNvcmUvY3NzL3BhcnNlci9DU1NQYXJzZXIuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9jc3MvcGFyc2VyL0NTU1BhcnNlci5oCShyZXZpc2lvbiAyNzMx
OTkpCisrKyBTb3VyY2UvV2ViQ29yZS9jc3MvcGFyc2VyL0NTU1BhcnNlci5oCSh3b3JraW5nIGNv
cHkpCkBAIC02NiwxMCArNjYsMTAgQEAgcHVibGljOgogICAgIGVudW0gY2xhc3MgUnVsZVBhcnNp
bmcgeyBOb3JtYWwsIERlZmVycmVkIH07CiAgICAgdm9pZCBwYXJzZVNoZWV0KFN0eWxlU2hlZXRD
b250ZW50cyosIGNvbnN0IFN0cmluZyYsIFJ1bGVQYXJzaW5nID0gUnVsZVBhcnNpbmc6Ok5vcm1h
bCk7CiAgICAgCi0gICAgc3RhdGljIFJlZlB0cjxTdHlsZVJ1bGVCYXNlPiBwYXJzZVJ1bGUoY29u
c3QgQ1NTUGFyc2VyQ29udGV4dCYsIFN0eWxlU2hlZXRDb250ZW50cyosIGNvbnN0IFN0cmluZyYp
OworICAgIFJlZlB0cjxTdHlsZVJ1bGVCYXNlPiBwYXJzZVJ1bGUoU3R5bGVTaGVldENvbnRlbnRz
KiwgY29uc3QgU3RyaW5nJik7CiAgICAgCiAgICAgUmVmUHRyPFN0eWxlUnVsZUtleWZyYW1lPiBw
YXJzZUtleWZyYW1lUnVsZShjb25zdCBTdHJpbmcmKTsKLSAgICBzdGF0aWMgVmVjdG9yPGRvdWJs
ZT4gcGFyc2VLZXlmcmFtZUtleUxpc3QoY29uc3QgU3RyaW5nJik7CisgICAgVmVjdG9yPGRvdWJs
ZT4gcGFyc2VLZXlmcmFtZUtleUxpc3QoY29uc3QgU3RyaW5nJik7CiAgICAgCiAgICAgYm9vbCBw
YXJzZVN1cHBvcnRzQ29uZGl0aW9uKGNvbnN0IFN0cmluZyYpOwogCkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9jc3MvcGFyc2VyL0NTU1BhcnNlckNvbnRleHQuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL2Nzcy9wYXJzZXIvQ1NTUGFyc2VyQ29udGV4dC5jcHAJKHJldmlzaW9uIDI3MzE5
OSkKKysrIFNvdXJjZS9XZWJDb3JlL2Nzcy9wYXJzZXIvQ1NTUGFyc2VyQ29udGV4dC5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTY1LDcgKzY1LDYgQEAgQ1NTUGFyc2VyQ29udGV4dDo6Q1NTUGFyc2Vy
Q29udGV4dChjb25zdAogICAgICwgY2hhcnNldCB7IGNoYXJzZXQgfQogICAgICwgbW9kZSB7IGRv
Y3VtZW50LmluUXVpcmtzTW9kZSgpID8gSFRNTFF1aXJrc01vZGUgOiBIVE1MU3RhbmRhcmRNb2Rl
IH0KICAgICAsIGlzSFRNTERvY3VtZW50IHsgZG9jdW1lbnQuaXNIVE1MRG9jdW1lbnQoKSB9Ci0g
ICAgLCBoYXNEb2N1bWVudFNlY3VyaXR5T3JpZ2luIHsgc2hlZXRCYXNlVVJMLmlzTnVsbCgpIHx8
IGRvY3VtZW50LnNlY3VyaXR5T3JpZ2luKCkuY2FuUmVxdWVzdChiYXNlVVJMKSB9CiAgICAgLCB1
c2VTeXN0ZW1BcHBlYXJhbmNlIHsgZG9jdW1lbnQucGFnZSgpID8gZG9jdW1lbnQucGFnZSgpLT51
c2VTeXN0ZW1BcHBlYXJhbmNlKCkgOiBmYWxzZSB9CiAgICAgLCBhc3BlY3RSYXRpb0VuYWJsZWQg
eyBkb2N1bWVudC5zZXR0aW5ncygpLmFzcGVjdFJhdGlvRW5hYmxlZCgpIH0KICAgICAsIGNvbG9y
RmlsdGVyRW5hYmxlZCB7IGRvY3VtZW50LnNldHRpbmdzKCkuY29sb3JGaWx0ZXJFbmFibGVkKCkg
fQpAQCAtMTAxLDcgKzEwMCw2IEBAIGJvb2wgb3BlcmF0b3I9PShjb25zdCBDU1NQYXJzZXJDb250
ZXh0JiAKICAgICAgICAgJiYgYS5tb2RlID09IGIubW9kZQogICAgICAgICAmJiBhLmVuY2xvc2lu
Z1J1bGVUeXBlID09IGIuZW5jbG9zaW5nUnVsZVR5cGUKICAgICAgICAgJiYgYS5pc0hUTUxEb2N1
bWVudCA9PSBiLmlzSFRNTERvY3VtZW50Ci0gICAgICAgICYmIGEuaGFzRG9jdW1lbnRTZWN1cml0
eU9yaWdpbiA9PSBiLmhhc0RvY3VtZW50U2VjdXJpdHlPcmlnaW4KICAgICAgICAgJiYgYS5pc0Nv
bnRlbnRPcGFxdWUgPT0gYi5pc0NvbnRlbnRPcGFxdWUKICAgICAgICAgJiYgYS51c2VTeXN0ZW1B
cHBlYXJhbmNlID09IGIudXNlU3lzdGVtQXBwZWFyYW5jZQogICAgICAgICAmJiBhLmFzcGVjdFJh
dGlvRW5hYmxlZCA9PSBiLmFzcGVjdFJhdGlvRW5hYmxlZApJbmRleDogU291cmNlL1dlYkNvcmUv
Y3NzL3BhcnNlci9DU1NQYXJzZXJDb250ZXh0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvY3NzL3BhcnNlci9DU1NQYXJzZXJDb250ZXh0LmgJKHJldmlzaW9uIDI3MzE5OSkKKysrIFNv
dXJjZS9XZWJDb3JlL2Nzcy9wYXJzZXIvQ1NTUGFyc2VyQ29udGV4dC5oCSh3b3JraW5nIGNvcHkp
CkBAIC01MCw5ICs1MCw2IEBAIHB1YmxpYzoKICAgICBPcHRpb25hbDxTdHlsZVJ1bGVUeXBlPiBl
bmNsb3NpbmdSdWxlVHlwZTsKICAgICBib29sIGlzSFRNTERvY3VtZW50IHsgZmFsc2UgfTsKIAot
ICAgIC8vIFRoaXMgaXMgb25seSBuZWVkZWQgdG8gc3VwcG9ydCBnZXRNYXRjaGVkQ1NTUnVsZXMu
Ci0gICAgYm9vbCBoYXNEb2N1bWVudFNlY3VyaXR5T3JpZ2luIHsgZmFsc2UgfTsKLQogICAgIGJv
b2wgaXNDb250ZW50T3BhcXVlIHsgZmFsc2UgfTsKICAgICBib29sIHVzZVN5c3RlbUFwcGVhcmFu
Y2UgeyBmYWxzZSB9OwogCkBAIC0xMDMsNyArMTAwLDYgQEAgc3RydWN0IENTU1BhcnNlckNvbnRl
eHRIYXNoIHsKICAgICAgICAgaWYgKCFrZXkuY2hhcnNldC5pc0VtcHR5KCkpCiAgICAgICAgICAg
ICBoYXNoIF49IFN0cmluZ0hhc2g6Omhhc2goa2V5LmNoYXJzZXQpOwogICAgICAgICB1bnNpZ25l
ZCBiaXRzID0ga2V5LmlzSFRNTERvY3VtZW50ICAgICAgICAgICAgICAgICAgPDwgMAotICAgICAg
ICAgICAgJiBrZXkuaGFzRG9jdW1lbnRTZWN1cml0eU9yaWdpbiAgICAgICAgICAgICAgICAgPDwg
MQogICAgICAgICAgICAgJiBrZXkuaXNDb250ZW50T3BhcXVlICAgICAgICAgICAgICAgICAgICAg
ICAgICAgPDwgMgogICAgICAgICAgICAgJiBrZXkudXNlU3lzdGVtQXBwZWFyYW5jZSAgICAgICAg
ICAgICAgICAgICAgICAgPDwgMwogICAgICAgICAgICAgJiBrZXkuYXNwZWN0UmF0aW9FbmFibGVk
ICAgICAgICAgICAgICAgICAgICAgICAgPDwgNApJbmRleDogU291cmNlL1dlYkNvcmUvY3NzL3Bh
cnNlci9DU1NQYXJzZXJJbXBsLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9jc3Mv
cGFyc2VyL0NTU1BhcnNlckltcGwuY3BwCShyZXZpc2lvbiAyNzMxOTkpCisrKyBTb3VyY2UvV2Vi
Q29yZS9jc3MvcGFyc2VyL0NTU1BhcnNlckltcGwuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC03MTMs
MTIgKzcxMywxMiBAQCBSZWZQdHI8U3R5bGVSdWxlPiBDU1NQYXJzZXJJbXBsOjpjb25zdW1lCiAg
ICAgICAgIENTU1BhcnNlclRva2VuUmFuZ2UgYmxvY2tDb3B5ID0gYmxvY2s7CiAgICAgICAgIGJs
b2NrQ29weS5jb25zdW1lV2hpdGVzcGFjZSgpOwogICAgICAgICBpZiAoIWJsb2NrQ29weS5hdEVu
ZCgpKSB7Ci0gICAgICAgICAgICByZXR1cm4gU3R5bGVSdWxlOjpjcmVhdGUoY3JlYXRlRGVmZXJy
ZWRTdHlsZVByb3BlcnRpZXMoYmxvY2spLCBtX2NvbnRleHQuaGFzRG9jdW1lbnRTZWN1cml0eU9y
aWdpbiwgV1RGTW92ZSgqc2VsZWN0b3JMaXN0KSk7CisgICAgICAgICAgICByZXR1cm4gU3R5bGVS
dWxlOjpjcmVhdGUoY3JlYXRlRGVmZXJyZWRTdHlsZVByb3BlcnRpZXMoYmxvY2spLCBXVEZNb3Zl
KCpzZWxlY3Rvckxpc3QpKTsKICAgICAgICAgfQogICAgIH0KIAogICAgIGNvbnN1bWVEZWNsYXJh
dGlvbkxpc3QoYmxvY2ssIFN0eWxlUnVsZVR5cGU6OlN0eWxlKTsKLSAgICByZXR1cm4gU3R5bGVS
dWxlOjpjcmVhdGUoY3JlYXRlU3R5bGVQcm9wZXJ0aWVzKG1fcGFyc2VkUHJvcGVydGllcywgbV9j
b250ZXh0Lm1vZGUpLCBtX2NvbnRleHQuaGFzRG9jdW1lbnRTZWN1cml0eU9yaWdpbiwgV1RGTW92
ZSgqc2VsZWN0b3JMaXN0KSk7CisgICAgcmV0dXJuIFN0eWxlUnVsZTo6Y3JlYXRlKGNyZWF0ZVN0
eWxlUHJvcGVydGllcyhtX3BhcnNlZFByb3BlcnRpZXMsIG1fY29udGV4dC5tb2RlKSwgV1RGTW92
ZSgqc2VsZWN0b3JMaXN0KSk7CiB9CiAKIHZvaWQgQ1NTUGFyc2VySW1wbDo6Y29uc3VtZURlY2xh
cmF0aW9uTGlzdChDU1NQYXJzZXJUb2tlblJhbmdlIHJhbmdlLCBTdHlsZVJ1bGVUeXBlIHJ1bGVU
eXBlKQpJbmRleDogU291cmNlL1dlYkNvcmUvcGFnZS9ET01XaW5kb3cuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL3BhZ2UvRE9NV2luZG93LmNwcAkocmV2aXNpb24gMjczMTk5KQor
KysgU291cmNlL1dlYkNvcmUvcGFnZS9ET01XaW5kb3cuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0x
NTg2LDQ0ICsxNTg2LDYgQEAgUmVmPENTU1N0eWxlRGVjbGFyYXRpb24+IERPTVdpbmRvdzo6Z2V0
QwogICAgIHJldHVybiBDU1NDb21wdXRlZFN0eWxlRGVjbGFyYXRpb246OmNyZWF0ZShlbGVtZW50
LCBmYWxzZSwgcHNldWRvRWx0KTsKIH0KIAotUmVmUHRyPENTU1J1bGVMaXN0PiBET01XaW5kb3c6
OmdldE1hdGNoZWRDU1NSdWxlcyhFbGVtZW50KiBlbGVtZW50LCBjb25zdCBTdHJpbmcmIHBzZXVk
b0VsZW1lbnQsIGJvb2wgYXV0aG9yT25seSkgY29uc3QKLXsKLSAgICBpZiAoIWlzQ3VycmVudGx5
RGlzcGxheWVkSW5GcmFtZSgpKQotICAgICAgICByZXR1cm4gbnVsbHB0cjsKLQotICAgIHVuc2ln
bmVkIGNvbG9uU3RhcnQgPSBwc2V1ZG9FbGVtZW50WzBdID09ICc6JyA/IChwc2V1ZG9FbGVtZW50
WzFdID09ICc6JyA/IDIgOiAxKSA6IDA7Ci0gICAgYXV0byBwc2V1ZG9UeXBlID0gQ1NTU2VsZWN0
b3I6OnBhcnNlUHNldWRvRWxlbWVudFR5cGUoU3RyaW5nVmlldyB7IHBzZXVkb0VsZW1lbnQgfS5z
dWJzdHJpbmcoY29sb25TdGFydCkpOwotICAgIGlmIChwc2V1ZG9UeXBlID09IENTU1NlbGVjdG9y
OjpQc2V1ZG9FbGVtZW50VW5rbm93biAmJiAhcHNldWRvRWxlbWVudC5pc0VtcHR5KCkpCi0gICAg
ICAgIHJldHVybiBudWxscHRyOwotCi0gICAgYXV0byogZnJhbWUgPSB0aGlzLT5mcmFtZSgpOwot
ICAgIGZyYW1lLT5kb2N1bWVudCgpLT5zdHlsZVNjb3BlKCkuZmx1c2hQZW5kaW5nVXBkYXRlKCk7
Ci0KLSAgICB1bnNpZ25lZCBydWxlc1RvSW5jbHVkZSA9IFN0eWxlOjpSZXNvbHZlcjo6QXV0aG9y
Q1NTUnVsZXM7Ci0gICAgaWYgKCFhdXRob3JPbmx5KQotICAgICAgICBydWxlc1RvSW5jbHVkZSB8
PSBTdHlsZTo6UmVzb2x2ZXI6OlVBQW5kVXNlckNTU1J1bGVzOwotCi0gICAgUHNldWRvSWQgcHNl
dWRvSWQgPSBDU1NTZWxlY3Rvcjo6cHNldWRvSWQocHNldWRvVHlwZSk7Ci0KLSAgICBhdXRvIG1h
dGNoZWRSdWxlcyA9IGZyYW1lLT5kb2N1bWVudCgpLT5zdHlsZVNjb3BlKCkucmVzb2x2ZXIoKS5w
c2V1ZG9TdHlsZVJ1bGVzRm9yRWxlbWVudChlbGVtZW50LCBwc2V1ZG9JZCwgcnVsZXNUb0luY2x1
ZGUpOwotICAgIGlmIChtYXRjaGVkUnVsZXMuaXNFbXB0eSgpKQotICAgICAgICByZXR1cm4gbnVs
bHB0cjsKLQotICAgIGJvb2wgYWxsb3dDcm9zc09yaWdpbiA9IGZyYW1lLT5zZXR0aW5ncygpLmNy
b3NzT3JpZ2luQ2hlY2tJbkdldE1hdGNoZWRDU1NSdWxlc0Rpc2FibGVkKCk7Ci0KLSAgICBhdXRv
IHJ1bGVMaXN0ID0gU3RhdGljQ1NTUnVsZUxpc3Q6OmNyZWF0ZSgpOwotICAgIGZvciAoYXV0byYg
cnVsZSA6IG1hdGNoZWRSdWxlcykgewotICAgICAgICBpZiAoIWFsbG93Q3Jvc3NPcmlnaW4gJiYg
IXJ1bGUtPmhhc0RvY3VtZW50U2VjdXJpdHlPcmlnaW4oKSkKLSAgICAgICAgICAgIGNvbnRpbnVl
OwotICAgICAgICBydWxlTGlzdC0+cnVsZXMoKS5hcHBlbmQocnVsZS0+Y3JlYXRlQ1NTT01XcmFw
cGVyKCkpOwotICAgIH0KLQotICAgIGlmIChydWxlTGlzdC0+cnVsZXMoKS5pc0VtcHR5KCkpCi0g
ICAgICAgIHJldHVybiBudWxscHRyOwotCi0gICAgcmV0dXJuIHJ1bGVMaXN0OwotfQotCiBSZWZQ
dHI8V2ViS2l0UG9pbnQ+IERPTVdpbmRvdzo6d2Via2l0Q29udmVydFBvaW50RnJvbU5vZGVUb1Bh
Z2UoTm9kZSogbm9kZSwgY29uc3QgV2ViS2l0UG9pbnQqIHApIGNvbnN0CiB7CiAgICAgaWYgKCFu
b2RlIHx8ICFwKQpJbmRleDogU291cmNlL1dlYkNvcmUvcGFnZS9ET01XaW5kb3cuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wYWdlL0RPTVdpbmRvdy5oCShyZXZpc2lvbiAyNzMxOTkp
CisrKyBTb3VyY2UvV2ViQ29yZS9wYWdlL0RPTVdpbmRvdy5oCSh3b3JraW5nIGNvcHkpCkBAIC0y
NTcsNyArMjU3LDYgQEAgcHVibGljOgogCiAgICAgLy8gV2ViS2l0IGV4dGVuc2lvbnMKIAotICAg
IFdFQkNPUkVfRVhQT1JUIFJlZlB0cjxDU1NSdWxlTGlzdD4gZ2V0TWF0Y2hlZENTU1J1bGVzKEVs
ZW1lbnQqLCBjb25zdCBTdHJpbmcmIHBzZXVkb0VsdCwgYm9vbCBhdXRob3JPbmx5ID0gdHJ1ZSkg
Y29uc3Q7CiAgICAgZG91YmxlIGRldmljZVBpeGVsUmF0aW8oKSBjb25zdDsKIAogICAgIFJlZlB0
cjxXZWJLaXRQb2ludD4gd2Via2l0Q29udmVydFBvaW50RnJvbVBhZ2VUb05vZGUoTm9kZSosIGNv
bnN0IFdlYktpdFBvaW50KikgY29uc3Q7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wYWdlL0RPTVdp
bmRvdy5pZGwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGFnZS9ET01XaW5kb3cuaWRs
CShyZXZpc2lvbiAyNzMxOTkpCisrKyBTb3VyY2UvV2ViQ29yZS9wYWdlL0RPTVdpbmRvdy5pZGwJ
KHdvcmtpbmcgY29weSkKQEAgLTEyMSwxMCArMTIxLDYgQEAKICAgICAvLyBOb24tc3RhbmRhcmQ6
IFRoaXMgaGFzIGJlZW4gZHJvcHBlZCBmcm9tIHRoZSBIVE1MIHNwZWNpZmljYXRpb24gYW5kIGJ5
IG90aGVyIGJyb3dzZXJzLgogICAgIFtDdXN0b20sIEZvcndhcmREZWNsYXJlSW5IZWFkZXJdIGFu
eSBzaG93TW9kYWxEaWFsb2coRE9NU3RyaW5nIHVybCwgb3B0aW9uYWwgYW55IGRpYWxvZ0FyZ3Ms
IG9wdGlvbmFsIERPTVN0cmluZyBmZWF0dXJlQXJncyk7CiAKLSAgICAvLyBOb24tc3RhbmRhcmQ6
IHNob3VsZCBwcm9iYWJseSBkZXByZWNhdGUgdGhpcyAoaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTc5NjUzKS4KLSAgICAvLyBCbGluayBhbHJlYWR5IGRlcHJlY2F0ZWQg
aXQgKGh0dHBzOi8vYnVncy5jaHJvbWl1bS5vcmcvcC9jaHJvbWl1bS9pc3N1ZXMvZGV0YWlsP2lk
PTQzNzU2OSkuCi0gICAgQ1NTUnVsZUxpc3QgZ2V0TWF0Y2hlZENTU1J1bGVzKG9wdGlvbmFsIEVs
ZW1lbnQ/IGVsZW1lbnQgPSBudWxsLCBvcHRpb25hbCBET01TdHJpbmc/IHBzZXVkb0VsZW1lbnQg
PSBudWxsKTsKLQogICAgIC8vIE5vbi1zdGFuZGFyZDogQmxpbmsgaGFzIGFscmVhZHkgZHJvcHBl
ZCB0aGVzZSAoaHR0cHM6Ly9idWdzLmNocm9taXVtLm9yZy9wL2Nocm9taXVtL2lzc3Vlcy9kZXRh
aWw/aWQ9Mzk4MzUyKS4KICAgICBXZWJLaXRQb2ludCB3ZWJraXRDb252ZXJ0UG9pbnRGcm9tUGFn
ZVRvTm9kZShvcHRpb25hbCBOb2RlPyBub2RlID0gbnVsbCwgb3B0aW9uYWwgV2ViS2l0UG9pbnQ/
IHAgPSBudWxsKTsKICAgICBXZWJLaXRQb2ludCB3ZWJraXRDb252ZXJ0UG9pbnRGcm9tTm9kZVRv
UGFnZShvcHRpb25hbCBOb2RlPyBub2RlID0gbnVsbCwgb3B0aW9uYWwgV2ViS2l0UG9pbnQ/IHAg
PSBudWxsKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BhZ2UvU2V0dGluZ3MueWFtbAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wYWdlL1NldHRpbmdzLnlhbWwJKHJldmlzaW9uIDI3MzE5
OSkKKysrIFNvdXJjZS9XZWJDb3JlL3BhZ2UvU2V0dGluZ3MueWFtbAkod29ya2luZyBjb3B5KQpA
QCAtODIsMTIgKzgyLDYgQEAgQ2xpcGJvYXJkQWNjZXNzUG9saWN5OgogICAgIFdlYkNvcmU6CiAg
ICAgICBkZWZhdWx0OiBDbGlwYm9hcmRBY2Nlc3NQb2xpY3k6OlJlcXVpcmVzVXNlckdlc3R1cmUK
IAotQ3Jvc3NPcmlnaW5DaGVja0luR2V0TWF0Y2hlZENTU1J1bGVzRGlzYWJsZWQ6Ci0gIHR5cGU6
IGJvb2wKLSAgZGVmYXVsdFZhbHVlOgotICAgIFdlYkNvcmU6Ci0gICAgICBkZWZhdWx0OiBmYWxz
ZQotCiBEYXRhRGV0ZWN0b3JUeXBlczoKICAgdHlwZTogdWludDMyX3QKICAgcmVmaW5lZFR5cGU6
IERhdGFEZXRlY3RvclR5cGUKSW5kZXg6IFNvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxv
Zwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9DaGFuZ2VMb2cJKHJldmlz
aW9uIDI3MzE5OSkKKysrIFNvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxvZwkod29ya2lu
ZyBjb3B5KQpAQCAtMSwzICsxLDE5IEBACisyMDIxLTAyLTIwICBTYW0gV2VpbmlnICA8d2Vpbmln
QGFwcGxlLmNvbT4KKworICAgICAgICBSZW1vdmUgZ2V0TWF0Y2hlZENTU1J1bGVzCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03OTY1MworICAgICAgICA8
cmRhcjovL3Byb2JsZW0vMTYzNTQ0NDM+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgTnVsbCBvdXQgaW1wbGVtZW50YXRpb25zIG9mIGxvbmcgZGVwcmVj
YXRlZCBtZXRob2RzLgorCisgICAgICAgICogRE9NL0RPTURvY3VtZW50Lm1tOgorICAgICAgICAo
LVtET01Eb2N1bWVudCBnZXRNYXRjaGVkQ1NTUnVsZXM6cHNldWRvRWxlbWVudDpdKToKKyAgICAg
ICAgKC1bRE9NRG9jdW1lbnQgZ2V0TWF0Y2hlZENTU1J1bGVzOnBzZXVkb0VsZW1lbnQ6YXV0aG9y
T25seTpdKToKKyAgICAgICAgKiBXZWJWaWV3L1dlYlZpZXcubW06CisgICAgICAgICgtW1dlYlZp
ZXcgX3NldE5lZWRzVW5yZXN0cmljdGVkR2V0TWF0Y2hlZENTU1J1bGVzOl0pOgorCiAyMDIxLTAy
LTE5ICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CiAKICAgICAgICAgUmV2aWV3IHJl
bWFpbmluZyB1c2FnZSBvZiBhdXRvcmVsZWFzZSB0byBtYWtlIHN1cmUgaXQgaXMgbmVjZXNzYXJ5
CkluZGV4OiBTb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NRG9jdW1lbnQubW0KPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTURvY3VtZW50Lm1tCShyZXZp
c2lvbiAyNzMxOTkpCisrKyBTb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NRG9jdW1lbnQu
bW0JKHdvcmtpbmcgY29weSkKQEAgLTY5MywxNiArNjkzLDEyIEBAIC0gKERPTUNTU1N0eWxlRGVj
bGFyYXRpb24gKilnZXRDb21wdXRlZFMKIAogLSAoRE9NQ1NTUnVsZUxpc3QgKilnZXRNYXRjaGVk
Q1NTUnVsZXM6KERPTUVsZW1lbnQgKillbGVtZW50IHBzZXVkb0VsZW1lbnQ6KE5TU3RyaW5nICop
cHNldWRvRWxlbWVudAogewotICAgIHJldHVybiBbc2VsZiBnZXRNYXRjaGVkQ1NTUnVsZXM6ZWxl
bWVudCBwc2V1ZG9FbGVtZW50OnBzZXVkb0VsZW1lbnQgYXV0aG9yT25seTpZRVNdOworICAgIHJl
dHVybiBuaWw7CiB9CiAKIC0gKERPTUNTU1J1bGVMaXN0ICopZ2V0TWF0Y2hlZENTU1J1bGVzOihE
T01FbGVtZW50ICopZWxlbWVudCBwc2V1ZG9FbGVtZW50OihOU1N0cmluZyAqKXBzZXVkb0VsZW1l
bnQgYXV0aG9yT25seTooQk9PTClhdXRob3JPbmx5CiB7Ci0gICAgV2ViQ29yZTo6SlNNYWluVGhy
ZWFkTnVsbFN0YXRlIHN0YXRlOwotICAgIFdlYkNvcmU6OkRPTVdpbmRvdyogZHYgPSBJTVBMLT5k
b21XaW5kb3coKTsKLSAgICBpZiAoIWR2KQotICAgICAgICByZXR1cm4gbmlsOwotICAgIHJldHVy
biBraXQoV1RGOjpnZXRQdHIoZHYtPmdldE1hdGNoZWRDU1NSdWxlcyhjb3JlKGVsZW1lbnQpLCBw
c2V1ZG9FbGVtZW50LCBhdXRob3JPbmx5KSkpOworICAgIHJldHVybiBuaWw7CiB9CiAKIC0gKERP
TU5vZGVMaXN0ICopZ2V0RWxlbWVudHNCeUNsYXNzTmFtZTooTlNTdHJpbmcgKiljbGFzc05hbWVz
CkluZGV4OiBTb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYlZpZXcubW0KPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJWaWV3Lm1tCShyZXZp
c2lvbiAyNzMxOTkpCisrKyBTb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYlZpZXcu
bW0JKHdvcmtpbmcgY29weSkKQEAgLTM4MTYsOCArMzgxNiw2IEBAIC0gKEJPT0wpX3NldE1lZGlh
TGF5ZXI6KENBTGF5ZXIqKWxheWVyIGYKIAogLSAodm9pZClfc2V0TmVlZHNVbnJlc3RyaWN0ZWRH
ZXRNYXRjaGVkQ1NTUnVsZXM6KEJPT0wpZmxhZwogewotICAgIGlmIChfcHJpdmF0ZS0+cGFnZSkK
LSAgICAgICAgX3ByaXZhdGUtPnBhZ2UtPnNldHRpbmdzKCkuc2V0Q3Jvc3NPcmlnaW5DaGVja0lu
R2V0TWF0Y2hlZENTU1J1bGVzRGlzYWJsZWQoZmxhZyk7CiB9CiAjZW5kaWYgLy8gUExBVEZPUk0o
SU9TX0ZBTUlMWSkKIAo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>421101</attachid>
            <date>2021-02-20 12:32:06 -0800</date>
            <delta_ts>2021-02-20 14:46:46 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-79653-20210220123206.patch</filename>
            <type>text/plain</type>
            <size>18184</size>
            <attacher name="Sam Weinig">sam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDI3MzIwMikKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDM5IEBACisyMDIxLTAyLTIwICBTYW0gV2Vp
bmlnICA8d2VpbmlnQGFwcGxlLmNvbT4KKworICAgICAgICBSZW1vdmUgZ2V0TWF0Y2hlZENTU1J1
bGVzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03OTY1
MworICAgICAgICA8cmRhcjovL3Byb2JsZW0vMTYzNTQ0NDM+CisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgUmVtb3ZlIGdldE1hdGNoZWRDU1NSdWxlcyBh
bmQgc29tZSBjb2RlIHRoYXQgb25seSBleGlzdGVkIG9ubHkgZm9yIGl0IChzdWNoCisgICAgICAg
IGFzIGhhc0RvY3VtZW50U2VjdXJpdHlPcmlnaW4pLiBJIGFtIHN1cmUgdGhlcmUgaXMgbW9yZSB0
aGF0IGNhbiBiZSBjbGVhbmVkCisgICAgICAgIHVwIG9uY2UgaXQgaXMgZ29uZSwgYnV0IHRoaXMg
aXMgdGhlIGZpcnN0IHN0ZXAuCisKKyAgICAgICAgRmlyZWZveCBhbmQgQ2hyb21lIGhhdmUgaGFk
IGl0IHJlbW92ZWQgZm9yIGEgd2hpbGUgbm93LgorCisgICAgICAgICogY3NzL0NTU1N0eWxlUnVs
ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDU1NTdHlsZVJ1bGU6OnNldFNlbGVjdG9yVGV4dCk6
CisgICAgICAgICogY3NzL1N0eWxlUnVsZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZVJ1
bGU6OlN0eWxlUnVsZSk6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZVJ1bGU6OmNyZWF0ZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpTdHlsZVJ1bGU6OmNyZWF0ZUZvclNwbGl0dGluZyk6CisgICAgICAg
IChXZWJDb3JlOjpTdHlsZVJ1bGU6OnNwbGl0SW50b011bHRpcGxlUnVsZXNXaXRoTWF4aW11bVNl
bGVjdG9yQ29tcG9uZW50Q291bnQgY29uc3QpOgorICAgICAgICAqIGNzcy9TdHlsZVJ1bGUuaDoK
KyAgICAgICAgKFdlYkNvcmU6OlN0eWxlUnVsZUJhc2U6OlN0eWxlUnVsZUJhc2UpOgorICAgICAg
ICAoV2ViQ29yZTo6U3R5bGVSdWxlQmFzZTo6aGFzRG9jdW1lbnRTZWN1cml0eU9yaWdpbiBjb25z
dCk6IERlbGV0ZWQuCisgICAgICAgICogY3NzL3BhcnNlci9DU1NQYXJzZXJDb250ZXh0LmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6Om9wZXJhdG9yPT0pOgorICAgICAgICAqIGNzcy9wYXJzZXIvQ1NT
UGFyc2VyQ29udGV4dC5oOgorICAgICAgICAoV2ViQ29yZTo6Q1NTUGFyc2VyQ29udGV4dEhhc2g6
Omhhc2gpOgorICAgICAgICAqIGNzcy9wYXJzZXIvQ1NTUGFyc2VySW1wbC5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpDU1NQYXJzZXJJbXBsOjpjb25zdW1lU3R5bGVSdWxlKToKKyAgICAgICAgKiBw
YWdlL0RPTVdpbmRvdy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpET01XaW5kb3c6OmdldE1hdGNo
ZWRDU1NSdWxlcyBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgICogcGFnZS9ET01XaW5kb3cuaDoK
KyAgICAgICAgKiBwYWdlL0RPTVdpbmRvdy5pZGw6CisgICAgICAgICogcGFnZS9TZXR0aW5ncy55
YW1sOgorCiAyMDIxLTAyLTIwICBaYWxhbiBCdWp0YXMgIDx6YWxhbkBhcHBsZS5jb20+CiAKICAg
ICAgICAgW0xGQ11bSW50ZWdyYXRpb25dIEVuY2xvc2luZyB0b3AgYW5kIGJvdHRvbSB2YWx1ZSBh
cmUgcmVsYXRpdmUgdG8gdGhlIGNvbnRhaW5pbmcgYmxvY2sncyBib3JkZXIgYm94CkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9jc3MvQ1NTU3R5bGVSdWxlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9jc3MvQ1NTU3R5bGVSdWxlLmNwcAkocmV2aXNpb24gMjczMTk5KQorKysgU291cmNl
L1dlYkNvcmUvY3NzL0NTU1N0eWxlUnVsZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTg1LDExICs4
NSw2IEBAIFN0cmluZyBDU1NTdHlsZVJ1bGU6OnNlbGVjdG9yVGV4dCgpIGNvbnMKIAogdm9pZCBD
U1NTdHlsZVJ1bGU6OnNldFNlbGVjdG9yVGV4dChjb25zdCBTdHJpbmcmIHNlbGVjdG9yVGV4dCkK
IHsKLSAgICAvLyBGSVhNRTogZ2V0TWF0Y2hlZENTU1J1bGVzIGNhbiByZXR1cm4gQ1NTU3R5bGVS
dWxlcyB0aGF0IGFyZSBtaXNzaW5nIHBhcmVudCBzdHlsZXNoZWV0IHBvaW50ZXIgd2hpbGUKLSAg
ICAvLyByZWZlcmVuY2luZyBTdHlsZVJ1bGVzIHRoYXQgYXJlIHBhcnQgb2Ygc3R5bGVzaGVldC4g
RGlzYWxsb3cgbXV0YXRpb25zIGluIHRoaXMgY2FzZS4KLSAgICBpZiAoIXBhcmVudFN0eWxlU2hl
ZXQoKSkKLSAgICAgICAgcmV0dXJuOwotCiAgICAgQ1NTUGFyc2VyIHAocGFyc2VyQ29udGV4dCgp
KTsKICAgICBhdXRvIHNlbGVjdG9yTGlzdCA9IHAucGFyc2VTZWxlY3RvcihzZWxlY3RvclRleHQp
OwogICAgIGlmICghc2VsZWN0b3JMaXN0KQpJbmRleDogU291cmNlL1dlYkNvcmUvY3NzL1N0eWxl
UnVsZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlUnVsZS5jcHAJ
KHJldmlzaW9uIDI3MzE5OSkKKysrIFNvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVJ1bGUuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC0xNzEsOCArMTcxLDggQEAgdW5zaWduZWQgU3R5bGVSdWxlOjphdmVy
YWdlU2l6ZUluQnl0ZXMoKQogICAgIHJldHVybiBzaXplb2YoU3R5bGVSdWxlKSArIHNpemVvZihD
U1NTZWxlY3RvcikgKyBTdHlsZVByb3BlcnRpZXM6OmF2ZXJhZ2VTaXplSW5CeXRlcygpOwogfQog
Ci1TdHlsZVJ1bGU6OlN0eWxlUnVsZShSZWY8U3R5bGVQcm9wZXJ0aWVzQmFzZT4mJiBwcm9wZXJ0
aWVzLCBib29sIGhhc0RvY3VtZW50U2VjdXJpdHlPcmlnaW4sIENTU1NlbGVjdG9yTGlzdCYmIHNl
bGVjdG9ycykKLSAgICA6IFN0eWxlUnVsZUJhc2UoU3R5bGVSdWxlVHlwZTo6U3R5bGUsIGhhc0Rv
Y3VtZW50U2VjdXJpdHlPcmlnaW4pCitTdHlsZVJ1bGU6OlN0eWxlUnVsZShSZWY8U3R5bGVQcm9w
ZXJ0aWVzQmFzZT4mJiBwcm9wZXJ0aWVzLCBDU1NTZWxlY3Rvckxpc3QmJiBzZWxlY3RvcnMpCisg
ICAgOiBTdHlsZVJ1bGVCYXNlKFN0eWxlUnVsZVR5cGU6OlN0eWxlKQogICAgICwgbV9wcm9wZXJ0
aWVzKFdURk1vdmUocHJvcGVydGllcykpCiAgICAgLCBtX3NlbGVjdG9yTGlzdChXVEZNb3ZlKHNl
bGVjdG9ycykpCiB7CkBAIC0xODcsOSArMTg3LDkgQEAgU3R5bGVSdWxlOjpTdHlsZVJ1bGUoY29u
c3QgU3R5bGVSdWxlJiBvKQogCiBTdHlsZVJ1bGU6On5TdHlsZVJ1bGUoKSA9IGRlZmF1bHQ7CiAK
LVJlZjxTdHlsZVJ1bGU+IFN0eWxlUnVsZTo6Y3JlYXRlKFJlZjxTdHlsZVByb3BlcnRpZXNCYXNl
PiYmIHByb3BlcnRpZXMsIGJvb2wgaGFzRG9jdW1lbnRTZWN1cml0eU9yaWdpbiwgQ1NTU2VsZWN0
b3JMaXN0JiYgc2VsZWN0b3JzKQorUmVmPFN0eWxlUnVsZT4gU3R5bGVSdWxlOjpjcmVhdGUoUmVm
PFN0eWxlUHJvcGVydGllc0Jhc2U+JiYgcHJvcGVydGllcywgQ1NTU2VsZWN0b3JMaXN0JiYgc2Vs
ZWN0b3JzKQogewotICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFN0eWxlUnVsZShXVEZNb3ZlKHBy
b3BlcnRpZXMpLCBoYXNEb2N1bWVudFNlY3VyaXR5T3JpZ2luLCBXVEZNb3ZlKHNlbGVjdG9ycykp
KTsKKyAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBTdHlsZVJ1bGUoV1RGTW92ZShwcm9wZXJ0aWVz
KSwgV1RGTW92ZShzZWxlY3RvcnMpKSk7CiB9CiAKIFJlZjxTdHlsZVJ1bGU+IFN0eWxlUnVsZTo6
Y29weSgpIGNvbnN0CkBAIC0yMTgsNyArMjE4LDcgQEAgUmVmPFN0eWxlUnVsZT4gU3R5bGVSdWxl
OjpjcmVhdGVGb3JTcGxpdAogICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBzZWxlY3RvcnMu
c2l6ZSgpOyArK2kpCiAgICAgICAgIG5ldyAoTm90TnVsbCwgJnNlbGVjdG9yTGlzdEFycmF5W2ld
KSBDU1NTZWxlY3Rvcigqc2VsZWN0b3JzLmF0KGkpKTsKICAgICBzZWxlY3Rvckxpc3RBcnJheVtz
ZWxlY3RvcnMuc2l6ZSgpIC0gMV0uc2V0TGFzdEluU2VsZWN0b3JMaXN0KCk7Ci0gICAgcmV0dXJu
IFN0eWxlUnVsZTo6Y3JlYXRlKFdURk1vdmUocHJvcGVydGllcyksIGhhc0RvY3VtZW50U2VjdXJp
dHlPcmlnaW4sIENTU1NlbGVjdG9yTGlzdChXVEZNb3ZlKHNlbGVjdG9yTGlzdEFycmF5KSkpOwor
ICAgIHJldHVybiBTdHlsZVJ1bGU6OmNyZWF0ZShXVEZNb3ZlKHByb3BlcnRpZXMpLCBDU1NTZWxl
Y3Rvckxpc3QoV1RGTW92ZShzZWxlY3Rvckxpc3RBcnJheSkpKTsKIH0KIAogVmVjdG9yPFJlZlB0
cjxTdHlsZVJ1bGU+PiBTdHlsZVJ1bGU6OnNwbGl0SW50b011bHRpcGxlUnVsZXNXaXRoTWF4aW11
bVNlbGVjdG9yQ29tcG9uZW50Q291bnQodW5zaWduZWQgbWF4Q291bnQpIGNvbnN0CkBAIC0yMzQs
NyArMjM0LDcgQEAgVmVjdG9yPFJlZlB0cjxTdHlsZVJ1bGU+PiBTdHlsZVJ1bGU6OnNwbAogICAg
ICAgICAgICAgY29tcG9uZW50c0luVGhpc1NlbGVjdG9yLmFwcGVuZChjb21wb25lbnQpOwogCiAg
ICAgICAgIGlmIChjb21wb25lbnRzSW5UaGlzU2VsZWN0b3Iuc2l6ZSgpICsgY29tcG9uZW50c1Np
bmNlTGFzdFNwbGl0LnNpemUoKSA+IG1heENvdW50ICYmICFjb21wb25lbnRzU2luY2VMYXN0U3Bs
aXQuaXNFbXB0eSgpKSB7Ci0gICAgICAgICAgICBydWxlcy5hcHBlbmQoY3JlYXRlRm9yU3BsaXR0
aW5nKGNvbXBvbmVudHNTaW5jZUxhc3RTcGxpdCwgY29uc3RfY2FzdDxTdHlsZVByb3BlcnRpZXMm
Pihwcm9wZXJ0aWVzKCkpLCBoYXNEb2N1bWVudFNlY3VyaXR5T3JpZ2luKCkpKTsKKyAgICAgICAg
ICAgIHJ1bGVzLmFwcGVuZChjcmVhdGVGb3JTcGxpdHRpbmcoY29tcG9uZW50c1NpbmNlTGFzdFNw
bGl0LCBjb25zdF9jYXN0PFN0eWxlUHJvcGVydGllcyY+KHByb3BlcnRpZXMoKSkpKTsKICAgICAg
ICAgICAgIGNvbXBvbmVudHNTaW5jZUxhc3RTcGxpdC5jbGVhcigpOwogICAgICAgICB9CiAKQEAg
LTI0Miw3ICsyNDIsNyBAQCBWZWN0b3I8UmVmUHRyPFN0eWxlUnVsZT4+IFN0eWxlUnVsZTo6c3Bs
CiAgICAgfQogCiAgICAgaWYgKCFjb21wb25lbnRzU2luY2VMYXN0U3BsaXQuaXNFbXB0eSgpKQot
ICAgICAgICBydWxlcy5hcHBlbmQoY3JlYXRlRm9yU3BsaXR0aW5nKGNvbXBvbmVudHNTaW5jZUxh
c3RTcGxpdCwgY29uc3RfY2FzdDxTdHlsZVByb3BlcnRpZXMmPihwcm9wZXJ0aWVzKCkpLCBoYXNE
b2N1bWVudFNlY3VyaXR5T3JpZ2luKCkpKTsKKyAgICAgICAgcnVsZXMuYXBwZW5kKGNyZWF0ZUZv
clNwbGl0dGluZyhjb21wb25lbnRzU2luY2VMYXN0U3BsaXQsIGNvbnN0X2Nhc3Q8U3R5bGVQcm9w
ZXJ0aWVzJj4ocHJvcGVydGllcygpKSkpOwogCiAgICAgcmV0dXJuIHJ1bGVzOwogfQpJbmRleDog
U291cmNlL1dlYkNvcmUvY3NzL1N0eWxlUnVsZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL2Nzcy9TdHlsZVJ1bGUuaAkocmV2aXNpb24gMjczMTk5KQorKysgU291cmNlL1dlYkNvcmUv
Y3NzL1N0eWxlUnVsZS5oCSh3b3JraW5nIGNvcHkpCkBAIC02NiwyNyArNjYsMjMgQEAgcHVibGlj
OgogICAgIFJlZjxDU1NSdWxlPiBjcmVhdGVDU1NPTVdyYXBwZXIoQ1NTUnVsZSogcGFyZW50UnVs
ZSkgY29uc3Q7CiAKIHByb3RlY3RlZDoKLSAgICBleHBsaWNpdCBTdHlsZVJ1bGVCYXNlKFN0eWxl
UnVsZVR5cGUsIGJvb2wgaGFzRG9jdW1lbnRTZWN1cml0eU9yaWdpbiA9IGZhbHNlKTsKKyAgICBl
eHBsaWNpdCBTdHlsZVJ1bGVCYXNlKFN0eWxlUnVsZVR5cGUpOwogICAgIFN0eWxlUnVsZUJhc2Uo
Y29uc3QgU3R5bGVSdWxlQmFzZSYpOwogICAgIH5TdHlsZVJ1bGVCYXNlKCkgPSBkZWZhdWx0Owog
Ci0gICAgYm9vbCBoYXNEb2N1bWVudFNlY3VyaXR5T3JpZ2luKCkgY29uc3QgeyByZXR1cm4gbV9o
YXNEb2N1bWVudFNlY3VyaXR5T3JpZ2luOyB9Ci0KIHByaXZhdGU6CiAgICAgV0VCQ09SRV9FWFBP
UlQgdm9pZCBkZXN0cm95KCk7CiAgICAgCiAgICAgUmVmPENTU1J1bGU+IGNyZWF0ZUNTU09NV3Jh
cHBlcihDU1NTdHlsZVNoZWV0KiBwYXJlbnRTaGVldCwgQ1NTUnVsZSogcGFyZW50UnVsZSkgY29u
c3Q7CiAKICAgICB1bnNpZ25lZCBtX3R5cGUgOiA1OyAvLyBTdHlsZVJ1bGVUeXBlCi0gICAgLy8g
VGhpcyBpcyBvbmx5IG5lZWRlZCB0byBzdXBwb3J0IGdldE1hdGNoZWRDU1NSdWxlcy4KLSAgICB1
bnNpZ25lZCBtX2hhc0RvY3VtZW50U2VjdXJpdHlPcmlnaW4gOiAxOwogfTsKIAogREVDTEFSRV9B
TExPQ0FUT1JfV0lUSF9IRUFQX0lERU5USUZJRVIoU3R5bGVSdWxlKTsKIGNsYXNzIFN0eWxlUnVs
ZSBmaW5hbCA6IHB1YmxpYyBTdHlsZVJ1bGVCYXNlIHsKICAgICBXVEZfTUFLRV9TVFJVQ1RfRkFT
VF9BTExPQ0FURURfV0lUSF9IRUFQX0lERU5USUZJRVIoU3R5bGVSdWxlKTsKIHB1YmxpYzoKLSAg
ICBzdGF0aWMgUmVmPFN0eWxlUnVsZT4gY3JlYXRlKFJlZjxTdHlsZVByb3BlcnRpZXNCYXNlPiYm
LCBib29sIGhhc0RvY3VtZW50U2VjdXJpdHlPcmlnaW4sIENTU1NlbGVjdG9yTGlzdCYmKTsKKyAg
ICBzdGF0aWMgUmVmPFN0eWxlUnVsZT4gY3JlYXRlKFJlZjxTdHlsZVByb3BlcnRpZXNCYXNlPiYm
LCBDU1NTZWxlY3Rvckxpc3QmJik7CiAgICAgUmVmPFN0eWxlUnVsZT4gY29weSgpIGNvbnN0Owog
ICAgIH5TdHlsZVJ1bGUoKTsKIApAQCAtOTYsOCArOTIsNiBAQCBwdWJsaWM6CiAgICAgTXV0YWJs
ZVN0eWxlUHJvcGVydGllcyYgbXV0YWJsZVByb3BlcnRpZXMoKTsKICAgICBjb25zdCBTdHlsZVBy
b3BlcnRpZXMqIHByb3BlcnRpZXNXaXRob3V0RGVmZXJyZWRQYXJzaW5nKCkgY29uc3Q7CiAKLSAg
ICB1c2luZyBTdHlsZVJ1bGVCYXNlOjpoYXNEb2N1bWVudFNlY3VyaXR5T3JpZ2luOwotCiAgICAg
dm9pZCB3cmFwcGVyQWRvcHRTZWxlY3Rvckxpc3QoQ1NTU2VsZWN0b3JMaXN0JiYpOwogCiAgICAg
VmVjdG9yPFJlZlB0cjxTdHlsZVJ1bGU+PiBzcGxpdEludG9NdWx0aXBsZVJ1bGVzV2l0aE1heGlt
dW1TZWxlY3RvckNvbXBvbmVudENvdW50KHVuc2lnbmVkKSBjb25zdDsKQEAgLTExMCwxMCArMTA0
LDEwIEBAIHB1YmxpYzoKICAgICBzdGF0aWMgdW5zaWduZWQgYXZlcmFnZVNpemVJbkJ5dGVzKCk7
CiAKIHByaXZhdGU6Ci0gICAgU3R5bGVSdWxlKFJlZjxTdHlsZVByb3BlcnRpZXNCYXNlPiYmLCBi
b29sIGhhc0RvY3VtZW50U2VjdXJpdHlPcmlnaW4sIENTU1NlbGVjdG9yTGlzdCYmKTsKKyAgICBT
dHlsZVJ1bGUoUmVmPFN0eWxlUHJvcGVydGllc0Jhc2U+JiYsIENTU1NlbGVjdG9yTGlzdCYmKTsK
ICAgICBTdHlsZVJ1bGUoY29uc3QgU3R5bGVSdWxlJik7CiAKLSAgICBzdGF0aWMgUmVmPFN0eWxl
UnVsZT4gY3JlYXRlRm9yU3BsaXR0aW5nKGNvbnN0IFZlY3Rvcjxjb25zdCBDU1NTZWxlY3Rvcio+
JiwgUmVmPFN0eWxlUHJvcGVydGllcz4mJiwgYm9vbCBoYXNEb2N1bWVudFNlY3VyaXR5T3JpZ2lu
KTsKKyAgICBzdGF0aWMgUmVmPFN0eWxlUnVsZT4gY3JlYXRlRm9yU3BsaXR0aW5nKGNvbnN0IFZl
Y3Rvcjxjb25zdCBDU1NTZWxlY3Rvcio+JiwgUmVmPFN0eWxlUHJvcGVydGllcz4mJik7CiAKICAg
ICBtdXRhYmxlIFJlZjxTdHlsZVByb3BlcnRpZXNCYXNlPiBtX3Byb3BlcnRpZXM7CiAgICAgQ1NT
U2VsZWN0b3JMaXN0IG1fc2VsZWN0b3JMaXN0OwpAQCAtMjYwLDE2ICsyNTQsMTQgQEAgcHJpdmF0
ZToKICAgICBBdG9tU3RyaW5nIG1fdXJpOwogfTsKICAgICAKLWlubGluZSBTdHlsZVJ1bGVCYXNl
OjpTdHlsZVJ1bGVCYXNlKFN0eWxlUnVsZVR5cGUgdHlwZSwgYm9vbCBoYXNEb2N1bWVudFNlY3Vy
aXR5T3JpZ2luKQoraW5saW5lIFN0eWxlUnVsZUJhc2U6OlN0eWxlUnVsZUJhc2UoU3R5bGVSdWxl
VHlwZSB0eXBlKQogICAgIDogbV90eXBlKHN0YXRpY19jYXN0PHVuc2lnbmVkPih0eXBlKSkKLSAg
ICAsIG1faGFzRG9jdW1lbnRTZWN1cml0eU9yaWdpbihoYXNEb2N1bWVudFNlY3VyaXR5T3JpZ2lu
KQogewogfQogCiBpbmxpbmUgU3R5bGVSdWxlQmFzZTo6U3R5bGVSdWxlQmFzZShjb25zdCBTdHls
ZVJ1bGVCYXNlJiBvKQogICAgIDogV1RGOjpSZWZDb3VudGVkQmFzZSgpCiAgICAgLCBtX3R5cGUo
by5tX3R5cGUpCi0gICAgLCBtX2hhc0RvY3VtZW50U2VjdXJpdHlPcmlnaW4oby5tX2hhc0RvY3Vt
ZW50U2VjdXJpdHlPcmlnaW4pCiB7CiB9CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2Nzcy9wYXJz
ZXIvQ1NTUGFyc2VyQ29udGV4dC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvY3Nz
L3BhcnNlci9DU1NQYXJzZXJDb250ZXh0LmNwcAkocmV2aXNpb24gMjczMTk5KQorKysgU291cmNl
L1dlYkNvcmUvY3NzL3BhcnNlci9DU1NQYXJzZXJDb250ZXh0LmNwcAkod29ya2luZyBjb3B5KQpA
QCAtNjUsNyArNjUsNiBAQCBDU1NQYXJzZXJDb250ZXh0OjpDU1NQYXJzZXJDb250ZXh0KGNvbnN0
CiAgICAgLCBjaGFyc2V0IHsgY2hhcnNldCB9CiAgICAgLCBtb2RlIHsgZG9jdW1lbnQuaW5RdWly
a3NNb2RlKCkgPyBIVE1MUXVpcmtzTW9kZSA6IEhUTUxTdGFuZGFyZE1vZGUgfQogICAgICwgaXNI
VE1MRG9jdW1lbnQgeyBkb2N1bWVudC5pc0hUTUxEb2N1bWVudCgpIH0KLSAgICAsIGhhc0RvY3Vt
ZW50U2VjdXJpdHlPcmlnaW4geyBzaGVldEJhc2VVUkwuaXNOdWxsKCkgfHwgZG9jdW1lbnQuc2Vj
dXJpdHlPcmlnaW4oKS5jYW5SZXF1ZXN0KGJhc2VVUkwpIH0KICAgICAsIHVzZVN5c3RlbUFwcGVh
cmFuY2UgeyBkb2N1bWVudC5wYWdlKCkgPyBkb2N1bWVudC5wYWdlKCktPnVzZVN5c3RlbUFwcGVh
cmFuY2UoKSA6IGZhbHNlIH0KICAgICAsIGFzcGVjdFJhdGlvRW5hYmxlZCB7IGRvY3VtZW50LnNl
dHRpbmdzKCkuYXNwZWN0UmF0aW9FbmFibGVkKCkgfQogICAgICwgY29sb3JGaWx0ZXJFbmFibGVk
IHsgZG9jdW1lbnQuc2V0dGluZ3MoKS5jb2xvckZpbHRlckVuYWJsZWQoKSB9CkBAIC0xMDEsNyAr
MTAwLDYgQEAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IENTU1BhcnNlckNvbnRleHQmIAogICAgICAg
ICAmJiBhLm1vZGUgPT0gYi5tb2RlCiAgICAgICAgICYmIGEuZW5jbG9zaW5nUnVsZVR5cGUgPT0g
Yi5lbmNsb3NpbmdSdWxlVHlwZQogICAgICAgICAmJiBhLmlzSFRNTERvY3VtZW50ID09IGIuaXNI
VE1MRG9jdW1lbnQKLSAgICAgICAgJiYgYS5oYXNEb2N1bWVudFNlY3VyaXR5T3JpZ2luID09IGIu
aGFzRG9jdW1lbnRTZWN1cml0eU9yaWdpbgogICAgICAgICAmJiBhLmlzQ29udGVudE9wYXF1ZSA9
PSBiLmlzQ29udGVudE9wYXF1ZQogICAgICAgICAmJiBhLnVzZVN5c3RlbUFwcGVhcmFuY2UgPT0g
Yi51c2VTeXN0ZW1BcHBlYXJhbmNlCiAgICAgICAgICYmIGEuYXNwZWN0UmF0aW9FbmFibGVkID09
IGIuYXNwZWN0UmF0aW9FbmFibGVkCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9jc3MvcGFyc2VyL0NT
U1BhcnNlckNvbnRleHQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9jc3MvcGFyc2Vy
L0NTU1BhcnNlckNvbnRleHQuaAkocmV2aXNpb24gMjczMTk5KQorKysgU291cmNlL1dlYkNvcmUv
Y3NzL3BhcnNlci9DU1NQYXJzZXJDb250ZXh0LmgJKHdvcmtpbmcgY29weSkKQEAgLTUwLDkgKzUw
LDYgQEAgcHVibGljOgogICAgIE9wdGlvbmFsPFN0eWxlUnVsZVR5cGU+IGVuY2xvc2luZ1J1bGVU
eXBlOwogICAgIGJvb2wgaXNIVE1MRG9jdW1lbnQgeyBmYWxzZSB9OwogCi0gICAgLy8gVGhpcyBp
cyBvbmx5IG5lZWRlZCB0byBzdXBwb3J0IGdldE1hdGNoZWRDU1NSdWxlcy4KLSAgICBib29sIGhh
c0RvY3VtZW50U2VjdXJpdHlPcmlnaW4geyBmYWxzZSB9OwotCiAgICAgYm9vbCBpc0NvbnRlbnRP
cGFxdWUgeyBmYWxzZSB9OwogICAgIGJvb2wgdXNlU3lzdGVtQXBwZWFyYW5jZSB7IGZhbHNlIH07
CiAKQEAgLTEwMyw3ICsxMDAsNiBAQCBzdHJ1Y3QgQ1NTUGFyc2VyQ29udGV4dEhhc2ggewogICAg
ICAgICBpZiAoIWtleS5jaGFyc2V0LmlzRW1wdHkoKSkKICAgICAgICAgICAgIGhhc2ggXj0gU3Ry
aW5nSGFzaDo6aGFzaChrZXkuY2hhcnNldCk7CiAgICAgICAgIHVuc2lnbmVkIGJpdHMgPSBrZXku
aXNIVE1MRG9jdW1lbnQgICAgICAgICAgICAgICAgICA8PCAwCi0gICAgICAgICAgICAmIGtleS5o
YXNEb2N1bWVudFNlY3VyaXR5T3JpZ2luICAgICAgICAgICAgICAgICA8PCAxCiAgICAgICAgICAg
ICAmIGtleS5pc0NvbnRlbnRPcGFxdWUgICAgICAgICAgICAgICAgICAgICAgICAgICA8PCAyCiAg
ICAgICAgICAgICAmIGtleS51c2VTeXN0ZW1BcHBlYXJhbmNlICAgICAgICAgICAgICAgICAgICAg
ICA8PCAzCiAgICAgICAgICAgICAmIGtleS5hc3BlY3RSYXRpb0VuYWJsZWQgICAgICAgICAgICAg
ICAgICAgICAgICA8PCA0CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9jc3MvcGFyc2VyL0NTU1BhcnNl
ckltcGwuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2Nzcy9wYXJzZXIvQ1NTUGFy
c2VySW1wbC5jcHAJKHJldmlzaW9uIDI3MzE5OSkKKysrIFNvdXJjZS9XZWJDb3JlL2Nzcy9wYXJz
ZXIvQ1NTUGFyc2VySW1wbC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTcxMywxMiArNzEzLDEyIEBA
IFJlZlB0cjxTdHlsZVJ1bGU+IENTU1BhcnNlckltcGw6OmNvbnN1bWUKICAgICAgICAgQ1NTUGFy
c2VyVG9rZW5SYW5nZSBibG9ja0NvcHkgPSBibG9jazsKICAgICAgICAgYmxvY2tDb3B5LmNvbnN1
bWVXaGl0ZXNwYWNlKCk7CiAgICAgICAgIGlmICghYmxvY2tDb3B5LmF0RW5kKCkpIHsKLSAgICAg
ICAgICAgIHJldHVybiBTdHlsZVJ1bGU6OmNyZWF0ZShjcmVhdGVEZWZlcnJlZFN0eWxlUHJvcGVy
dGllcyhibG9jayksIG1fY29udGV4dC5oYXNEb2N1bWVudFNlY3VyaXR5T3JpZ2luLCBXVEZNb3Zl
KCpzZWxlY3Rvckxpc3QpKTsKKyAgICAgICAgICAgIHJldHVybiBTdHlsZVJ1bGU6OmNyZWF0ZShj
cmVhdGVEZWZlcnJlZFN0eWxlUHJvcGVydGllcyhibG9jayksIFdURk1vdmUoKnNlbGVjdG9yTGlz
dCkpOwogICAgICAgICB9CiAgICAgfQogCiAgICAgY29uc3VtZURlY2xhcmF0aW9uTGlzdChibG9j
aywgU3R5bGVSdWxlVHlwZTo6U3R5bGUpOwotICAgIHJldHVybiBTdHlsZVJ1bGU6OmNyZWF0ZShj
cmVhdGVTdHlsZVByb3BlcnRpZXMobV9wYXJzZWRQcm9wZXJ0aWVzLCBtX2NvbnRleHQubW9kZSks
IG1fY29udGV4dC5oYXNEb2N1bWVudFNlY3VyaXR5T3JpZ2luLCBXVEZNb3ZlKCpzZWxlY3Rvckxp
c3QpKTsKKyAgICByZXR1cm4gU3R5bGVSdWxlOjpjcmVhdGUoY3JlYXRlU3R5bGVQcm9wZXJ0aWVz
KG1fcGFyc2VkUHJvcGVydGllcywgbV9jb250ZXh0Lm1vZGUpLCBXVEZNb3ZlKCpzZWxlY3Rvckxp
c3QpKTsKIH0KIAogdm9pZCBDU1NQYXJzZXJJbXBsOjpjb25zdW1lRGVjbGFyYXRpb25MaXN0KENT
U1BhcnNlclRva2VuUmFuZ2UgcmFuZ2UsIFN0eWxlUnVsZVR5cGUgcnVsZVR5cGUpCkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9wYWdlL0RPTVdpbmRvdy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvcGFnZS9ET01XaW5kb3cuY3BwCShyZXZpc2lvbiAyNzMxOTkpCisrKyBTb3VyY2UvV2Vi
Q29yZS9wYWdlL0RPTVdpbmRvdy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE1ODYsNDQgKzE1ODYs
NiBAQCBSZWY8Q1NTU3R5bGVEZWNsYXJhdGlvbj4gRE9NV2luZG93OjpnZXRDCiAgICAgcmV0dXJu
IENTU0NvbXB1dGVkU3R5bGVEZWNsYXJhdGlvbjo6Y3JlYXRlKGVsZW1lbnQsIGZhbHNlLCBwc2V1
ZG9FbHQpOwogfQogCi1SZWZQdHI8Q1NTUnVsZUxpc3Q+IERPTVdpbmRvdzo6Z2V0TWF0Y2hlZENT
U1J1bGVzKEVsZW1lbnQqIGVsZW1lbnQsIGNvbnN0IFN0cmluZyYgcHNldWRvRWxlbWVudCwgYm9v
bCBhdXRob3JPbmx5KSBjb25zdAotewotICAgIGlmICghaXNDdXJyZW50bHlEaXNwbGF5ZWRJbkZy
YW1lKCkpCi0gICAgICAgIHJldHVybiBudWxscHRyOwotCi0gICAgdW5zaWduZWQgY29sb25TdGFy
dCA9IHBzZXVkb0VsZW1lbnRbMF0gPT0gJzonID8gKHBzZXVkb0VsZW1lbnRbMV0gPT0gJzonID8g
MiA6IDEpIDogMDsKLSAgICBhdXRvIHBzZXVkb1R5cGUgPSBDU1NTZWxlY3Rvcjo6cGFyc2VQc2V1
ZG9FbGVtZW50VHlwZShTdHJpbmdWaWV3IHsgcHNldWRvRWxlbWVudCB9LnN1YnN0cmluZyhjb2xv
blN0YXJ0KSk7Ci0gICAgaWYgKHBzZXVkb1R5cGUgPT0gQ1NTU2VsZWN0b3I6OlBzZXVkb0VsZW1l
bnRVbmtub3duICYmICFwc2V1ZG9FbGVtZW50LmlzRW1wdHkoKSkKLSAgICAgICAgcmV0dXJuIG51
bGxwdHI7Ci0KLSAgICBhdXRvKiBmcmFtZSA9IHRoaXMtPmZyYW1lKCk7Ci0gICAgZnJhbWUtPmRv
Y3VtZW50KCktPnN0eWxlU2NvcGUoKS5mbHVzaFBlbmRpbmdVcGRhdGUoKTsKLQotICAgIHVuc2ln
bmVkIHJ1bGVzVG9JbmNsdWRlID0gU3R5bGU6OlJlc29sdmVyOjpBdXRob3JDU1NSdWxlczsKLSAg
ICBpZiAoIWF1dGhvck9ubHkpCi0gICAgICAgIHJ1bGVzVG9JbmNsdWRlIHw9IFN0eWxlOjpSZXNv
bHZlcjo6VUFBbmRVc2VyQ1NTUnVsZXM7Ci0KLSAgICBQc2V1ZG9JZCBwc2V1ZG9JZCA9IENTU1Nl
bGVjdG9yOjpwc2V1ZG9JZChwc2V1ZG9UeXBlKTsKLQotICAgIGF1dG8gbWF0Y2hlZFJ1bGVzID0g
ZnJhbWUtPmRvY3VtZW50KCktPnN0eWxlU2NvcGUoKS5yZXNvbHZlcigpLnBzZXVkb1N0eWxlUnVs
ZXNGb3JFbGVtZW50KGVsZW1lbnQsIHBzZXVkb0lkLCBydWxlc1RvSW5jbHVkZSk7Ci0gICAgaWYg
KG1hdGNoZWRSdWxlcy5pc0VtcHR5KCkpCi0gICAgICAgIHJldHVybiBudWxscHRyOwotCi0gICAg
Ym9vbCBhbGxvd0Nyb3NzT3JpZ2luID0gZnJhbWUtPnNldHRpbmdzKCkuY3Jvc3NPcmlnaW5DaGVj
a0luR2V0TWF0Y2hlZENTU1J1bGVzRGlzYWJsZWQoKTsKLQotICAgIGF1dG8gcnVsZUxpc3QgPSBT
dGF0aWNDU1NSdWxlTGlzdDo6Y3JlYXRlKCk7Ci0gICAgZm9yIChhdXRvJiBydWxlIDogbWF0Y2hl
ZFJ1bGVzKSB7Ci0gICAgICAgIGlmICghYWxsb3dDcm9zc09yaWdpbiAmJiAhcnVsZS0+aGFzRG9j
dW1lbnRTZWN1cml0eU9yaWdpbigpKQotICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAgIHJ1
bGVMaXN0LT5ydWxlcygpLmFwcGVuZChydWxlLT5jcmVhdGVDU1NPTVdyYXBwZXIoKSk7Ci0gICAg
fQotCi0gICAgaWYgKHJ1bGVMaXN0LT5ydWxlcygpLmlzRW1wdHkoKSkKLSAgICAgICAgcmV0dXJu
IG51bGxwdHI7Ci0KLSAgICByZXR1cm4gcnVsZUxpc3Q7Ci19Ci0KIFJlZlB0cjxXZWJLaXRQb2lu
dD4gRE9NV2luZG93Ojp3ZWJraXRDb252ZXJ0UG9pbnRGcm9tTm9kZVRvUGFnZShOb2RlKiBub2Rl
LCBjb25zdCBXZWJLaXRQb2ludCogcCkgY29uc3QKIHsKICAgICBpZiAoIW5vZGUgfHwgIXApCklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9wYWdlL0RPTVdpbmRvdy5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL3BhZ2UvRE9NV2luZG93LmgJKHJldmlzaW9uIDI3MzE5OSkKKysrIFNvdXJjZS9X
ZWJDb3JlL3BhZ2UvRE9NV2luZG93LmgJKHdvcmtpbmcgY29weSkKQEAgLTI1Nyw3ICsyNTcsNiBA
QCBwdWJsaWM6CiAKICAgICAvLyBXZWJLaXQgZXh0ZW5zaW9ucwogCi0gICAgV0VCQ09SRV9FWFBP
UlQgUmVmUHRyPENTU1J1bGVMaXN0PiBnZXRNYXRjaGVkQ1NTUnVsZXMoRWxlbWVudCosIGNvbnN0
IFN0cmluZyYgcHNldWRvRWx0LCBib29sIGF1dGhvck9ubHkgPSB0cnVlKSBjb25zdDsKICAgICBk
b3VibGUgZGV2aWNlUGl4ZWxSYXRpbygpIGNvbnN0OwogCiAgICAgUmVmUHRyPFdlYktpdFBvaW50
PiB3ZWJraXRDb252ZXJ0UG9pbnRGcm9tUGFnZVRvTm9kZShOb2RlKiwgY29uc3QgV2ViS2l0UG9p
bnQqKSBjb25zdDsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BhZ2UvRE9NV2luZG93LmlkbAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wYWdlL0RPTVdpbmRvdy5pZGwJKHJldmlzaW9uIDI3
MzE5OSkKKysrIFNvdXJjZS9XZWJDb3JlL3BhZ2UvRE9NV2luZG93LmlkbAkod29ya2luZyBjb3B5
KQpAQCAtMTIxLDEwICsxMjEsNiBAQAogICAgIC8vIE5vbi1zdGFuZGFyZDogVGhpcyBoYXMgYmVl
biBkcm9wcGVkIGZyb20gdGhlIEhUTUwgc3BlY2lmaWNhdGlvbiBhbmQgYnkgb3RoZXIgYnJvd3Nl
cnMuCiAgICAgW0N1c3RvbSwgRm9yd2FyZERlY2xhcmVJbkhlYWRlcl0gYW55IHNob3dNb2RhbERp
YWxvZyhET01TdHJpbmcgdXJsLCBvcHRpb25hbCBhbnkgZGlhbG9nQXJncywgb3B0aW9uYWwgRE9N
U3RyaW5nIGZlYXR1cmVBcmdzKTsKIAotICAgIC8vIE5vbi1zdGFuZGFyZDogc2hvdWxkIHByb2Jh
Ymx5IGRlcHJlY2F0ZSB0aGlzIChodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9Nzk2NTMpLgotICAgIC8vIEJsaW5rIGFscmVhZHkgZGVwcmVjYXRlZCBpdCAoaHR0cHM6Ly9i
dWdzLmNocm9taXVtLm9yZy9wL2Nocm9taXVtL2lzc3Vlcy9kZXRhaWw/aWQ9NDM3NTY5KS4KLSAg
ICBDU1NSdWxlTGlzdCBnZXRNYXRjaGVkQ1NTUnVsZXMob3B0aW9uYWwgRWxlbWVudD8gZWxlbWVu
dCA9IG51bGwsIG9wdGlvbmFsIERPTVN0cmluZz8gcHNldWRvRWxlbWVudCA9IG51bGwpOwotCiAg
ICAgLy8gTm9uLXN0YW5kYXJkOiBCbGluayBoYXMgYWxyZWFkeSBkcm9wcGVkIHRoZXNlIChodHRw
czovL2J1Z3MuY2hyb21pdW0ub3JnL3AvY2hyb21pdW0vaXNzdWVzL2RldGFpbD9pZD0zOTgzNTIp
LgogICAgIFdlYktpdFBvaW50IHdlYmtpdENvbnZlcnRQb2ludEZyb21QYWdlVG9Ob2RlKG9wdGlv
bmFsIE5vZGU/IG5vZGUgPSBudWxsLCBvcHRpb25hbCBXZWJLaXRQb2ludD8gcCA9IG51bGwpOwog
ICAgIFdlYktpdFBvaW50IHdlYmtpdENvbnZlcnRQb2ludEZyb21Ob2RlVG9QYWdlKG9wdGlvbmFs
IE5vZGU/IG5vZGUgPSBudWxsLCBvcHRpb25hbCBXZWJLaXRQb2ludD8gcCA9IG51bGwpOwpJbmRl
eDogU291cmNlL1dlYkNvcmUvcGFnZS9TZXR0aW5ncy55YW1sCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL3BhZ2UvU2V0dGluZ3MueWFtbAkocmV2aXNpb24gMjczMTk5KQorKysgU291cmNl
L1dlYkNvcmUvcGFnZS9TZXR0aW5ncy55YW1sCSh3b3JraW5nIGNvcHkpCkBAIC04MiwxMiArODIs
NiBAQCBDbGlwYm9hcmRBY2Nlc3NQb2xpY3k6CiAgICAgV2ViQ29yZToKICAgICAgIGRlZmF1bHQ6
IENsaXBib2FyZEFjY2Vzc1BvbGljeTo6UmVxdWlyZXNVc2VyR2VzdHVyZQogCi1Dcm9zc09yaWdp
bkNoZWNrSW5HZXRNYXRjaGVkQ1NTUnVsZXNEaXNhYmxlZDoKLSAgdHlwZTogYm9vbAotICBkZWZh
dWx0VmFsdWU6Ci0gICAgV2ViQ29yZToKLSAgICAgIGRlZmF1bHQ6IGZhbHNlCi0KIERhdGFEZXRl
Y3RvclR5cGVzOgogICB0eXBlOiB1aW50MzJfdAogICByZWZpbmVkVHlwZTogRGF0YURldGVjdG9y
VHlwZQpJbmRleDogU291cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9nCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxvZwkocmV2aXNpb24gMjczMTk5KQor
KysgU291cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0x
LDMgKzEsMTkgQEAKKzIwMjEtMDItMjAgIFNhbSBXZWluaWcgIDx3ZWluaWdAYXBwbGUuY29tPgor
CisgICAgICAgIFJlbW92ZSBnZXRNYXRjaGVkQ1NTUnVsZXMKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTc5NjUzCisgICAgICAgIDxyZGFyOi8vcHJvYmxl
bS8xNjM1NDQ0Mz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICBOdWxsIG91dCBpbXBsZW1lbnRhdGlvbnMgb2YgbG9uZyBkZXByZWNhdGVkIG1ldGhvZHMu
CisKKyAgICAgICAgKiBET00vRE9NRG9jdW1lbnQubW06CisgICAgICAgICgtW0RPTURvY3VtZW50
IGdldE1hdGNoZWRDU1NSdWxlczpwc2V1ZG9FbGVtZW50Ol0pOgorICAgICAgICAoLVtET01Eb2N1
bWVudCBnZXRNYXRjaGVkQ1NTUnVsZXM6cHNldWRvRWxlbWVudDphdXRob3JPbmx5Ol0pOgorICAg
ICAgICAqIFdlYlZpZXcvV2ViVmlldy5tbToKKyAgICAgICAgKC1bV2ViVmlldyBfc2V0TmVlZHNV
bnJlc3RyaWN0ZWRHZXRNYXRjaGVkQ1NTUnVsZXM6XSk6CisKIDIwMjEtMDItMTkgIENocmlzIER1
bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KIAogICAgICAgICBSZXZpZXcgcmVtYWluaW5nIHVzYWdl
IG9mIGF1dG9yZWxlYXNlIHRvIG1ha2Ugc3VyZSBpdCBpcyBuZWNlc3NhcnkKSW5kZXg6IFNvdXJj
ZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01Eb2N1bWVudC5tbQo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NRG9jdW1lbnQubW0JKHJldmlzaW9uIDI3MzE5OSkK
KysrIFNvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01Eb2N1bWVudC5tbQkod29ya2luZyBj
b3B5KQpAQCAtNjkzLDE2ICs2OTMsMTIgQEAgLSAoRE9NQ1NTU3R5bGVEZWNsYXJhdGlvbiAqKWdl
dENvbXB1dGVkUwogCiAtIChET01DU1NSdWxlTGlzdCAqKWdldE1hdGNoZWRDU1NSdWxlczooRE9N
RWxlbWVudCAqKWVsZW1lbnQgcHNldWRvRWxlbWVudDooTlNTdHJpbmcgKilwc2V1ZG9FbGVtZW50
CiB7Ci0gICAgcmV0dXJuIFtzZWxmIGdldE1hdGNoZWRDU1NSdWxlczplbGVtZW50IHBzZXVkb0Vs
ZW1lbnQ6cHNldWRvRWxlbWVudCBhdXRob3JPbmx5OllFU107CisgICAgcmV0dXJuIG5pbDsKIH0K
IAogLSAoRE9NQ1NTUnVsZUxpc3QgKilnZXRNYXRjaGVkQ1NTUnVsZXM6KERPTUVsZW1lbnQgKill
bGVtZW50IHBzZXVkb0VsZW1lbnQ6KE5TU3RyaW5nICopcHNldWRvRWxlbWVudCBhdXRob3JPbmx5
OihCT09MKWF1dGhvck9ubHkKIHsKLSAgICBXZWJDb3JlOjpKU01haW5UaHJlYWROdWxsU3RhdGUg
c3RhdGU7Ci0gICAgV2ViQ29yZTo6RE9NV2luZG93KiBkdiA9IElNUEwtPmRvbVdpbmRvdygpOwot
ICAgIGlmICghZHYpCi0gICAgICAgIHJldHVybiBuaWw7Ci0gICAgcmV0dXJuIGtpdChXVEY6Omdl
dFB0cihkdi0+Z2V0TWF0Y2hlZENTU1J1bGVzKGNvcmUoZWxlbWVudCksIHBzZXVkb0VsZW1lbnQs
IGF1dGhvck9ubHkpKSk7CisgICAgcmV0dXJuIG5pbDsKIH0KIAogLSAoRE9NTm9kZUxpc3QgKiln
ZXRFbGVtZW50c0J5Q2xhc3NOYW1lOihOU1N0cmluZyAqKWNsYXNzTmFtZXMKSW5kZXg6IFNvdXJj
ZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViVmlldy5tbQo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYlZpZXcubW0JKHJldmlzaW9uIDI3MzE5OSkK
KysrIFNvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViVmlldy5tbQkod29ya2luZyBj
b3B5KQpAQCAtMzgxNiw4ICszODE2LDYgQEAgLSAoQk9PTClfc2V0TWVkaWFMYXllcjooQ0FMYXll
ciopbGF5ZXIgZgogCiAtICh2b2lkKV9zZXROZWVkc1VucmVzdHJpY3RlZEdldE1hdGNoZWRDU1NS
dWxlczooQk9PTClmbGFnCiB7Ci0gICAgaWYgKF9wcml2YXRlLT5wYWdlKQotICAgICAgICBfcHJp
dmF0ZS0+cGFnZS0+c2V0dGluZ3MoKS5zZXRDcm9zc09yaWdpbkNoZWNrSW5HZXRNYXRjaGVkQ1NT
UnVsZXNEaXNhYmxlZChmbGFnKTsKIH0KICNlbmRpZiAvLyBQTEFURk9STShJT1NfRkFNSUxZKQog
Cg==
</data>
<flag name="commit-queue"
          id="439856"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
      

    </bug>

</bugzilla>