<?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>82847</bug_id>
          
          <creation_ts>2012-04-01 12:28:57 -0700</creation_ts>
          <short_desc>Add mechanism for mapping from StyleRules back to fully constructed CSSStyleRules</short_desc>
          <delta_ts>2012-04-11 20:52:44 -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>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>77745</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Antti Koivisto">koivisto</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>kling</cc>
    
    <cc>macpherson</cc>
    
    <cc>menard</cc>
    
    <cc>sam</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>593068</commentid>
    <comment_count>0</comment_count>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2012-04-01 12:28:57 -0700</bug_when>
    <thetext>Inspector is using CSSStyleSelector to calculate the CSS rules matched by a given element and expects to be able to walk the parent chain. After 82728 the stylesheet object tree won&apos;t have parent pointers and we are going to need another mechanism to support this.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>593076</commentid>
    <comment_count>1</comment_count>
      <attachid>135012</attachid>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2012-04-01 12:52:24 -0700</bug_when>
    <thetext>Created attachment 135012
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>593077</commentid>
    <comment_count>2</comment_count>
      <attachid>135012</attachid>
    <who name="Andreas Kling">kling</who>
    <bug_when>2012-04-01 12:55:04 -0700</bug_when>
    <thetext>Comment on attachment 135012
patch

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

&gt; Source/WebCore/ChangeLog:3
&gt; +        Add mechanism for mapping from StyleRules back to fully constructed CSSStyleRules 

NO BUG NUMBER R- BRO</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>593078</commentid>
    <comment_count>3</comment_count>
      <attachid>135013</attachid>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2012-04-01 13:09:38 -0700</bug_when>
    <thetext>Created attachment 135013
with bug url</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>593079</commentid>
    <comment_count>4</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-04-01 13:11:18 -0700</bug_when>
    <thetext>Attachment 135013 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;Source/WebCore/ChangeLog&apos;, u&apos;Source/WebCor...&quot; exit_code: 1
Source/WebCore/css/CSSStyleSelector.cpp:2927:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Total errors found: 1 in 5 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>593080</commentid>
    <comment_count>5</comment_count>
      <attachid>135013</attachid>
    <who name="Andreas Kling">kling</who>
    <bug_when>2012-04-01 13:17:18 -0700</bug_when>
    <thetext>Comment on attachment 135013
with bug url

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

&gt; Source/WebCore/css/CSSStyleSelector.cpp:292
&gt; +static CSSStyleSheet* fullscreenStyleSheet;

fullScreenStylesheet;

&gt; Source/WebCore/css/CSSStyleSelector.h:495
&gt; +    HashMap&lt;StyleRule*, RefPtr&lt;CSSStyleRule&gt; &gt;  m_styleRuleToCSSOMWrapperMap;

Style: Two spaces after &gt;.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>593081</commentid>
    <comment_count>6</comment_count>
      <attachid>135013</attachid>
    <who name="Andreas Kling">kling</who>
    <bug_when>2012-04-01 13:17:31 -0700</bug_when>
    <thetext>Comment on attachment 135013
with bug url

TD;DR</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>593132</commentid>
    <comment_count>7</comment_count>
    <who name="Sam Weinig">sam</who>
    <bug_when>2012-04-01 19:25:52 -0700</bug_when>
    <thetext>Would it make sense to just switch the inspector to using the internal representation?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>593324</commentid>
    <comment_count>8</comment_count>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2012-04-02 03:55:17 -0700</bug_when>
    <thetext>(In reply to comment #7)
&gt; Would it make sense to just switch the inspector to using the internal representation?

Sure but that&apos;s a separate refactoring. It also doesn&apos;t solve this particular problem.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>593327</commentid>
    <comment_count>9</comment_count>
      <attachid>135013</attachid>
    <who name="Andreas Kling">kling</who>
    <bug_when>2012-04-02 04:03:38 -0700</bug_when>
    <thetext>Comment on attachment 135013
with bug url

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

r=me. Let&apos;s do this thing.

&gt; Source/WebCore/css/CSSStyleSelector.cpp:2905
&gt; +    const Vector&lt;RefPtr&lt;StyleSheet&gt; &gt;&amp; styleSheets = document-&gt;styleSheets()-&gt;vector();
&gt; +    for (unsigned i = 0; i &lt; styleSheets.size(); ++i) {

You could use the iteration helpers of StyleSheetList directly here instead of grabbing the Vector. NABD.

&gt; Source/WebCore/css/CSSStyleSelector.h:247
&gt; +    CSSStyleRule* ensureFullCSSOMWrapperForStyleRule(StyleRule*);

As you mentioned, this could do with a scarier name, e.g ensureFullCSSOMWrapperForInspectorWhileUsingTerabytesOfMemory().</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>593407</commentid>
    <comment_count>10</comment_count>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2012-04-02 06:09:15 -0700</bug_when>
    <thetext>http://trac.webkit.org/changeset/112858</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>135012</attachid>
            <date>2012-04-01 12:52:24 -0700</date>
            <delta_ts>2012-04-01 13:09:38 -0700</delta_ts>
            <desc>patch</desc>
            <filename>inspector-reverse-map-5.patch</filename>
            <type>text/plain</type>
            <size>17451</size>
            <attacher name="Antti Koivisto">koivisto</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDExMjgxNykKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDM5IEBACisyMDEyLTA0LTAxICBBbnR0aSBL
b2l2aXN0byAgPGFudHRpQGFwcGxlLmNvbT4KKworICAgICAgICBBZGQgbWVjaGFuaXNtIGZvciBt
YXBwaW5nIGZyb20gU3R5bGVSdWxlcyBiYWNrIHRvIGZ1bGx5IGNvbnN0cnVjdGVkIENTU1N0eWxl
UnVsZXMgCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
SW5zcGVjdG9yIGlzIHVzaW5nIENTU1N0eWxlU2VsZWN0b3IgdG8gY2FsY3VsYXRlIHRoZSBDU1Mg
cnVsZXMgbWF0Y2hlZCBieSBhIGdpdmVuIGVsZW1lbnQgYW5kCisgICAgICAgIGV4cGVjdHMgdG8g
YmUgYWJsZSB0byB3YWxrIHRoZSBwYXJlbnQgY2hhaW4uIEFmdGVyIDgyNzI4IHRoZSBzdHlsZXNo
ZWV0IG9iamVjdCB0cmVlIHdvbid0IGhhdmUKKyAgICAgICAgcGFyZW50IHBvaW50ZXJzIGFuZCB3
ZSBhcmUgZ29pbmcgdG8gbmVlZCBhbm90aGVyIG1lY2hhbmlzbSB0byBzdXBwb3J0IHRoaXMuCisg
ICAgICAgIAorICAgICAgICBUaGUgbmV3IGNvZGUgZG9lcyBub3QgYWN0dWFsbHkgcnVuIHdpdGhv
dXQgODI3MjguCisgICAgICAgIAorICAgICAgICAqIGNzcy9DU1NTdHlsZVNlbGVjdG9yLmNwcDoK
KyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTU3R5bGVTZWxlY3Rvcjo6
YXBwZW5kQXV0aG9yU3R5bGVzaGVldHMpOgorICAgICAgICAoV2ViQ29yZTo6bG9hZEZ1bGxEZWZh
dWx0U3R5bGUpOgorICAgICAgICAoV2ViQ29yZTo6ZW5zdXJlRGVmYXVsdFN0eWxlU2hlZXRzRm9y
RWxlbWVudCk6CisgICAgICAgIChXZWJDb3JlOjpDU1NTdHlsZVNlbGVjdG9yOjpjb2xsZWN0TWF0
Y2hpbmdSdWxlc0Zvckxpc3QpOgorICAgICAgICAqIGNzcy9DU1NTdHlsZVNlbGVjdG9yLmg6Cisg
ICAgICAgIChDU1NTdHlsZVNlbGVjdG9yKToKKyAgICAgICAgCisgICAgICAgICAgICBBZGQgZW5z
dXJlRnVsbENTU09NV3JhcHBlckZvclN0eWxlUnVsZSgpIG1ldGhvZCB3aGljaCB0cmF2ZXJzZXMg
dGhyb3VnaCBhbGwgc3R5bGUKKyAgICAgICAgICAgIHNoZWV0cyB0aGF0IGFwcGx5IHRvIHRoZSBk
b2N1bWVudCBhbmQgY29uc3R1Y3RzIHdyYXBwZXJzIGZvciB0aGUgcnVsZXMuIFRoZXNlIHdyYXBw
ZXJzCisgICAgICAgICAgICBhcmUgY2FjaGVkIHRvIGEgbWFwLiBUaGUgbWFwIGNhbiB0aGVuIGJl
IHVzZWQgZm9yIFN0eWxlUnVsZSAtPiBDU1NTdHlsZVJ1bGUgbG9va3Vwcy4KKyAgICAgICAgICAg
IAorICAgICAgICAgICAgVGhpcyB1c2VzIHF1aXRlIGEgYml0IG9mIG1lbW9yeSBzbyBzaG91bGQg
bm90IGJlIHVzZWQgZm9yIGFueSBub3JtYWwgZW5naW5lIGZ1bmN0aW9ucy4KKyAgICAgICAgCisg
ICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvckNTU0FnZW50LmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6Okluc3BlY3RvckNTU0FnZW50OjpnZXRNYXRjaGVkU3R5bGVzRm9yTm9kZSk6CisgICAgICAg
IChXZWJDb3JlOjpJbnNwZWN0b3JDU1NBZ2VudDo6YnVpbGRBcnJheUZvclJ1bGVMaXN0KToKKyAg
ICAgICAgCisgICAgICAgICAgICBVc2UgdGhlIG5ldyBtZWNoYW5pc20gdG8gZ2V0IGZ1bGx5IGZ1
bmN0aW9uYWwgd3JhcHBlcnMgZm9yIHJ1bGUgb2JqZWN0cyB3aXRob3V0IHBhcmVudCBwb2ludGVy
LgorICAgICAgICAKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yQ1NTQWdlbnQuaDoKKyAg
ICAgICAgKEluc3BlY3RvckNTU0FnZW50KToKKwogMjAxMi0wNC0wMSAgVG9ueSBUc2V1bmcgIDx0
c2V1bmdAYXBwbGUuY29tPgogCiAgICAgICAgIENvbXBvc2l0ZSBGb250IFJlZmVyZW5jZXMgaXMg
YSBuZXcgZXN0YWJsaXNoZWQgc3RhbmRhcmQgKElTTy9JRUMgMTQ0OTYtMjg6MjAxMikgZm9yIHNw
ZWNpZnlpbmcKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2Nzcy9DU1NTdHlsZVNlbGVjdG9yLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9jc3MvQ1NTU3R5bGVTZWxlY3Rvci5jcHAJKHJl
dmlzaW9uIDExMjc5OCkKKysrIFNvdXJjZS9XZWJDb3JlL2Nzcy9DU1NTdHlsZVNlbGVjdG9yLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtMjg0LDExICsyODQsMTkgQEAgc3RhdGljIFJ1bGVTZXQqIGRl
ZmF1bHRRdWlya3NTdHlsZTsKIHN0YXRpYyBSdWxlU2V0KiBkZWZhdWx0UHJpbnRTdHlsZTsKIHN0
YXRpYyBSdWxlU2V0KiBkZWZhdWx0Vmlld1NvdXJjZVN0eWxlOwogc3RhdGljIENTU1N0eWxlU2hl
ZXQqIHNpbXBsZURlZmF1bHRTdHlsZVNoZWV0Oworc3RhdGljIENTU1N0eWxlU2hlZXQqIGRlZmF1
bHRTdHlsZVNoZWV0Oworc3RhdGljIENTU1N0eWxlU2hlZXQqIHF1aXJrc1N0eWxlU2hlZXQ7Citz
dGF0aWMgQ1NTU3R5bGVTaGVldCogc3ZnU3R5bGVTaGVldDsKK3N0YXRpYyBDU1NTdHlsZVNoZWV0
KiBtYXRoTUxTdHlsZVNoZWV0Oworc3RhdGljIENTU1N0eWxlU2hlZXQqIG1lZGlhQ29udHJvbHNT
dHlsZVNoZWV0Oworc3RhdGljIENTU1N0eWxlU2hlZXQqIGZ1bGxzY3JlZW5TdHlsZVNoZWV0Owog
CiBSZW5kZXJTdHlsZSogQ1NTU3R5bGVTZWxlY3Rvcjo6c19zdHlsZU5vdFlldEF2YWlsYWJsZTsK
IAogc3RhdGljIHZvaWQgbG9hZEZ1bGxEZWZhdWx0U3R5bGUoKTsKIHN0YXRpYyB2b2lkIGxvYWRT
aW1wbGVEZWZhdWx0U3R5bGUoKTsKK3N0YXRpYyB2b2lkIGNvbGxlY3RDU1NPTVdyYXBwZXJzKEhh
c2hNYXA8U3R5bGVSdWxlKiwgUmVmUHRyPENTU1N0eWxlUnVsZT4gPiYsIENTU1N0eWxlU2hlZXQq
KTsKKwogLy8gRklYTUU6IEl0IHdvdWxkIGJlIG5pY2UgdG8gdXNlIHNvbWUgbWVjaGFuaXNtIHRo
YXQgZ3VhcmFudGVlcyB0aGlzIGlzIGluIHN5bmMgd2l0aCB0aGUgcmVhbCBVQSBzdHlsZXNoZWV0
Lgogc3RhdGljIGNvbnN0IGNoYXIqIHNpbXBsZVVzZXJBZ2VudFN0eWxlU2hlZXQgPSAiaHRtbCxi
b2R5LGRpdntkaXNwbGF5OmJsb2NrfWhlYWR7ZGlzcGxheTpub25lfWJvZHl7bWFyZ2luOjhweH1k
aXY6Zm9jdXMsc3Bhbjpmb2N1c3tvdXRsaW5lOmF1dG8gNXB4IC13ZWJraXQtZm9jdXMtcmluZy1j
b2xvcn1hOi13ZWJraXQtYW55LWxpbmt7Y29sb3I6LXdlYmtpdC1saW5rO3RleHQtZGVjb3JhdGlv
bjp1bmRlcmxpbmV9YTotd2Via2l0LWFueS1saW5rOmFjdGl2ZXtjb2xvcjotd2Via2l0LWFjdGl2
ZWxpbmt9IjsKIApAQCAtNTA2LDYgKzUxNCw4IEBAIHZvaWQgQ1NTU3R5bGVTZWxlY3Rvcjo6YXBw
ZW5kQXV0aG9yU3R5bGUKICAgICAgICAgfQogI2VuZGlmCiAgICAgICAgIG1fYXV0aG9yU3R5bGUt
PmFkZFJ1bGVzRnJvbVNoZWV0KGNzc1NoZWV0LCAqbV9tZWRpdW0sIHRoaXMpOworICAgICAgICBp
ZiAoIW1fc3R5bGVSdWxlVG9DU1NPTVdyYXBwZXJNYXAuaXNFbXB0eSgpKQorICAgICAgICAgICAg
Y29sbGVjdENTU09NV3JhcHBlcnMobV9zdHlsZVJ1bGVUb0NTU09NV3JhcHBlck1hcCwgY3NzU2hl
ZXQpOwogICAgIH0KICAgICBtX2F1dGhvclN0eWxlLT5zaHJpbmtUb0ZpdCgpOwogICAgIGNvbGxl
Y3RGZWF0dXJlcygpOwpAQCAtNzAwLDE0ICs3MTAsMTQgQEAgc3RhdGljIHZvaWQgbG9hZEZ1bGxE
ZWZhdWx0U3R5bGUoKQogCiAgICAgLy8gU3RyaWN0LW1vZGUgcnVsZXMuCiAgICAgU3RyaW5nIGRl
ZmF1bHRSdWxlcyA9IFN0cmluZyhodG1sVXNlckFnZW50U3R5bGVTaGVldCwgc2l6ZW9mKGh0bWxV
c2VyQWdlbnRTdHlsZVNoZWV0KSkgKyBSZW5kZXJUaGVtZTo6ZGVmYXVsdFRoZW1lKCktPmV4dHJh
RGVmYXVsdFN0eWxlU2hlZXQoKTsKLSAgICBDU1NTdHlsZVNoZWV0KiBkZWZhdWx0U2hlZXQgPSBw
YXJzZVVBU2hlZXQoZGVmYXVsdFJ1bGVzKTsKLSAgICBkZWZhdWx0U3R5bGUtPmFkZFJ1bGVzRnJv
bVNoZWV0KGRlZmF1bHRTaGVldCwgc2NyZWVuRXZhbCgpKTsKLSAgICBkZWZhdWx0UHJpbnRTdHls
ZS0+YWRkUnVsZXNGcm9tU2hlZXQoZGVmYXVsdFNoZWV0LCBwcmludEV2YWwoKSk7CisgICAgZGVm
YXVsdFN0eWxlU2hlZXQgPSBwYXJzZVVBU2hlZXQoZGVmYXVsdFJ1bGVzKTsKKyAgICBkZWZhdWx0
U3R5bGUtPmFkZFJ1bGVzRnJvbVNoZWV0KGRlZmF1bHRTdHlsZVNoZWV0LCBzY3JlZW5FdmFsKCkp
OworICAgIGRlZmF1bHRQcmludFN0eWxlLT5hZGRSdWxlc0Zyb21TaGVldChkZWZhdWx0U3R5bGVT
aGVldCwgcHJpbnRFdmFsKCkpOwogCiAgICAgLy8gUXVpcmtzLW1vZGUgcnVsZXMuCiAgICAgU3Ry
aW5nIHF1aXJrc1J1bGVzID0gU3RyaW5nKHF1aXJrc1VzZXJBZ2VudFN0eWxlU2hlZXQsIHNpemVv
ZihxdWlya3NVc2VyQWdlbnRTdHlsZVNoZWV0KSkgKyBSZW5kZXJUaGVtZTo6ZGVmYXVsdFRoZW1l
KCktPmV4dHJhUXVpcmtzU3R5bGVTaGVldCgpOwotICAgIENTU1N0eWxlU2hlZXQqIHF1aXJrc1No
ZWV0ID0gcGFyc2VVQVNoZWV0KHF1aXJrc1J1bGVzKTsKLSAgICBkZWZhdWx0UXVpcmtzU3R5bGUt
PmFkZFJ1bGVzRnJvbVNoZWV0KHF1aXJrc1NoZWV0LCBzY3JlZW5FdmFsKCkpOworICAgIHF1aXJr
c1N0eWxlU2hlZXQgPSBwYXJzZVVBU2hlZXQocXVpcmtzUnVsZXMpOworICAgIGRlZmF1bHRRdWly
a3NTdHlsZS0+YWRkUnVsZXNGcm9tU2hlZXQocXVpcmtzU3R5bGVTaGVldCwgc2NyZWVuRXZhbCgp
KTsKIH0KIAogc3RhdGljIHZvaWQgbG9hZFNpbXBsZURlZmF1bHRTdHlsZSgpCkBAIC03MzksNTEg
Kzc0OSw0MyBAQCBzdGF0aWMgdm9pZCBlbnN1cmVEZWZhdWx0U3R5bGVTaGVldHNGb3JFCiAgICAg
ICAgIGxvYWRGdWxsRGVmYXVsdFN0eWxlKCk7CiAKICNpZiBFTkFCTEUoU1ZHKQotICAgIHN0YXRp
YyBib29sIGxvYWRlZFNWR1VzZXJBZ2VudFNoZWV0OwotICAgIGlmIChlbGVtZW50LT5pc1NWR0Vs
ZW1lbnQoKSAmJiAhbG9hZGVkU1ZHVXNlckFnZW50U2hlZXQpIHsKKyAgICBpZiAoZWxlbWVudC0+
aXNTVkdFbGVtZW50KCkgJiYgIXN2Z1N0eWxlU2hlZXQpIHsKICAgICAgICAgLy8gU1ZHIHJ1bGVz
LgotICAgICAgICBsb2FkZWRTVkdVc2VyQWdlbnRTaGVldCA9IHRydWU7Ci0gICAgICAgIENTU1N0
eWxlU2hlZXQqIHN2Z1NoZWV0ID0gcGFyc2VVQVNoZWV0KHN2Z1VzZXJBZ2VudFN0eWxlU2hlZXQs
IHNpemVvZihzdmdVc2VyQWdlbnRTdHlsZVNoZWV0KSk7Ci0gICAgICAgIGRlZmF1bHRTdHlsZS0+
YWRkUnVsZXNGcm9tU2hlZXQoc3ZnU2hlZXQsIHNjcmVlbkV2YWwoKSk7Ci0gICAgICAgIGRlZmF1
bHRQcmludFN0eWxlLT5hZGRSdWxlc0Zyb21TaGVldChzdmdTaGVldCwgcHJpbnRFdmFsKCkpOwor
ICAgICAgICBzdmdTdHlsZVNoZWV0ID0gcGFyc2VVQVNoZWV0KHN2Z1VzZXJBZ2VudFN0eWxlU2hl
ZXQsIHNpemVvZihzdmdVc2VyQWdlbnRTdHlsZVNoZWV0KSk7CisgICAgICAgIGRlZmF1bHRTdHls
ZS0+YWRkUnVsZXNGcm9tU2hlZXQoc3ZnU3R5bGVTaGVldCwgc2NyZWVuRXZhbCgpKTsKKyAgICAg
ICAgZGVmYXVsdFByaW50U3R5bGUtPmFkZFJ1bGVzRnJvbVNoZWV0KHN2Z1N0eWxlU2hlZXQsIHBy
aW50RXZhbCgpKTsKICAgICB9CiAjZW5kaWYKIAotICAgIHN0YXRpYyBib29sIGxvYWRlZE1hdGhN
TFVzZXJBZ2VudFNoZWV0OwogI2lmIEVOQUJMRShNQVRITUwpCi0gICAgaWYgKGVsZW1lbnQtPmlz
TWF0aE1MRWxlbWVudCgpICYmICFsb2FkZWRNYXRoTUxVc2VyQWdlbnRTaGVldCkgeworICAgIGlm
IChlbGVtZW50LT5pc01hdGhNTEVsZW1lbnQoKSAmJiAhbWF0aE1MU3R5bGVTaGVldCkgewogICAg
ICAgICAvLyBNYXRoTUwgcnVsZXMuCi0gICAgICAgIGxvYWRlZE1hdGhNTFVzZXJBZ2VudFNoZWV0
ID0gdHJ1ZTsKLSAgICAgICAgQ1NTU3R5bGVTaGVldCogbWF0aE1MU2hlZXQgPSBwYXJzZVVBU2hl
ZXQobWF0aG1sVXNlckFnZW50U3R5bGVTaGVldCwgc2l6ZW9mKG1hdGhtbFVzZXJBZ2VudFN0eWxl
U2hlZXQpKTsKLSAgICAgICAgZGVmYXVsdFN0eWxlLT5hZGRSdWxlc0Zyb21TaGVldChtYXRoTUxT
aGVldCwgc2NyZWVuRXZhbCgpKTsKLSAgICAgICAgZGVmYXVsdFByaW50U3R5bGUtPmFkZFJ1bGVz
RnJvbVNoZWV0KG1hdGhNTFNoZWV0LCBwcmludEV2YWwoKSk7CisgICAgICAgIG1hdGhNTFN0eWxl
U2hlZXQgPSBwYXJzZVVBU2hlZXQobWF0aG1sVXNlckFnZW50U3R5bGVTaGVldCwgc2l6ZW9mKG1h
dGhtbFVzZXJBZ2VudFN0eWxlU2hlZXQpKTsKKyAgICAgICAgZGVmYXVsdFN0eWxlLT5hZGRSdWxl
c0Zyb21TaGVldChtYXRoTUxTdHlsZVNoZWV0LCBzY3JlZW5FdmFsKCkpOworICAgICAgICBkZWZh
dWx0UHJpbnRTdHlsZS0+YWRkUnVsZXNGcm9tU2hlZXQobWF0aE1MU3R5bGVTaGVldCwgcHJpbnRF
dmFsKCkpOwogICAgIH0KICNlbmRpZgogCiAjaWYgRU5BQkxFKFZJREVPKQotICAgIHN0YXRpYyBi
b29sIGxvYWRlZE1lZGlhU3R5bGVTaGVldDsKLSAgICBpZiAoIWxvYWRlZE1lZGlhU3R5bGVTaGVl
dCAmJiAoZWxlbWVudC0+aGFzVGFnTmFtZSh2aWRlb1RhZykgfHwgZWxlbWVudC0+aGFzVGFnTmFt
ZShhdWRpb1RhZykpKSB7Ci0gICAgICAgIGxvYWRlZE1lZGlhU3R5bGVTaGVldCA9IHRydWU7Cisg
ICAgaWYgKCFtZWRpYUNvbnRyb2xzU3R5bGVTaGVldCAmJiAoZWxlbWVudC0+aGFzVGFnTmFtZSh2
aWRlb1RhZykgfHwgZWxlbWVudC0+aGFzVGFnTmFtZShhdWRpb1RhZykpKSB7CiAgICAgICAgIFN0
cmluZyBtZWRpYVJ1bGVzID0gU3RyaW5nKG1lZGlhQ29udHJvbHNVc2VyQWdlbnRTdHlsZVNoZWV0
LCBzaXplb2YobWVkaWFDb250cm9sc1VzZXJBZ2VudFN0eWxlU2hlZXQpKSArIFJlbmRlclRoZW1l
Ojp0aGVtZUZvclBhZ2UoZWxlbWVudC0+ZG9jdW1lbnQoKS0+cGFnZSgpKS0+ZXh0cmFNZWRpYUNv
bnRyb2xzU3R5bGVTaGVldCgpOwotICAgICAgICBDU1NTdHlsZVNoZWV0KiBtZWRpYUNvbnRyb2xz
U2hlZXQgPSBwYXJzZVVBU2hlZXQobWVkaWFSdWxlcyk7Ci0gICAgICAgIGRlZmF1bHRTdHlsZS0+
YWRkUnVsZXNGcm9tU2hlZXQobWVkaWFDb250cm9sc1NoZWV0LCBzY3JlZW5FdmFsKCkpOwotICAg
ICAgICBkZWZhdWx0UHJpbnRTdHlsZS0+YWRkUnVsZXNGcm9tU2hlZXQobWVkaWFDb250cm9sc1No
ZWV0LCBwcmludEV2YWwoKSk7CisgICAgICAgIG1lZGlhQ29udHJvbHNTdHlsZVNoZWV0ID0gcGFy
c2VVQVNoZWV0KG1lZGlhUnVsZXMpOworICAgICAgICBkZWZhdWx0U3R5bGUtPmFkZFJ1bGVzRnJv
bVNoZWV0KG1lZGlhQ29udHJvbHNTdHlsZVNoZWV0LCBzY3JlZW5FdmFsKCkpOworICAgICAgICBk
ZWZhdWx0UHJpbnRTdHlsZS0+YWRkUnVsZXNGcm9tU2hlZXQobWVkaWFDb250cm9sc1N0eWxlU2hl
ZXQsIHByaW50RXZhbCgpKTsKICAgICB9CiAjZW5kaWYKIAogI2lmIEVOQUJMRShGVUxMU0NSRUVO
X0FQSSkKLSAgICBzdGF0aWMgYm9vbCBsb2FkZWRGdWxsU2NyZWVuU3R5bGVTaGVldDsKLSAgICBp
ZiAoIWxvYWRlZEZ1bGxTY3JlZW5TdHlsZVNoZWV0ICYmIGVsZW1lbnQtPmRvY3VtZW50KCktPndl
YmtpdElzRnVsbFNjcmVlbigpKSB7Ci0gICAgICAgIGxvYWRlZEZ1bGxTY3JlZW5TdHlsZVNoZWV0
ID0gdHJ1ZTsKKyAgICBpZiAoIWZ1bGxzY3JlZW5TdHlsZVNoZWV0ICYmIGVsZW1lbnQtPmRvY3Vt
ZW50KCktPndlYmtpdElzRnVsbFNjcmVlbigpKSB7CiAgICAgICAgIFN0cmluZyBmdWxsc2NyZWVu
UnVsZXMgPSBTdHJpbmcoZnVsbHNjcmVlblVzZXJBZ2VudFN0eWxlU2hlZXQsIHNpemVvZihmdWxs
c2NyZWVuVXNlckFnZW50U3R5bGVTaGVldCkpICsgUmVuZGVyVGhlbWU6OmRlZmF1bHRUaGVtZSgp
LT5leHRyYUZ1bGxTY3JlZW5TdHlsZVNoZWV0KCk7Ci0gICAgICAgIENTU1N0eWxlU2hlZXQqIGZ1
bGxzY3JlZW5TaGVldCA9IHBhcnNlVUFTaGVldChmdWxsc2NyZWVuUnVsZXMpOwotICAgICAgICBk
ZWZhdWx0U3R5bGUtPmFkZFJ1bGVzRnJvbVNoZWV0KGZ1bGxzY3JlZW5TaGVldCwgc2NyZWVuRXZh
bCgpKTsKLSAgICAgICAgZGVmYXVsdFF1aXJrc1N0eWxlLT5hZGRSdWxlc0Zyb21TaGVldChmdWxs
c2NyZWVuU2hlZXQsIHNjcmVlbkV2YWwoKSk7CisgICAgICAgIGZ1bGxzY3JlZW5TdHlsZVNoZWV0
ID0gcGFyc2VVQVNoZWV0KGZ1bGxzY3JlZW5SdWxlcyk7CisgICAgICAgIGRlZmF1bHRTdHlsZS0+
YWRkUnVsZXNGcm9tU2hlZXQoZnVsbHNjcmVlblN0eWxlU2hlZXQsIHNjcmVlbkV2YWwoKSk7Cisg
ICAgICAgIGRlZmF1bHRRdWlya3NTdHlsZS0+YWRkUnVsZXNGcm9tU2hlZXQoZnVsbHNjcmVlblN0
eWxlU2hlZXQsIHNjcmVlbkV2YWwoKSk7CiAgICAgfQogI2VuZGlmCiAKICAgICBBU1NFUlQoZGVm
YXVsdFN0eWxlLT5mZWF0dXJlcygpLmlkc0luUnVsZXMuaXNFbXB0eSgpKTsKLSAgICBBU1NFUlRf
VU5VU0VEKGxvYWRlZE1hdGhNTFVzZXJBZ2VudFNoZWV0LCBsb2FkZWRNYXRoTUxVc2VyQWdlbnRT
aGVldCB8fCBkZWZhdWx0U3R5bGUtPmZlYXR1cmVzKCkuc2libGluZ1J1bGVzLmlzRW1wdHkoKSk7
CisgICAgQVNTRVJUKG1hdGhNTFN0eWxlU2hlZXQgfHwgZGVmYXVsdFN0eWxlLT5mZWF0dXJlcygp
LnNpYmxpbmdSdWxlcy5pc0VtcHR5KCkpOwogfQogCiB2b2lkIENTU1N0eWxlU2VsZWN0b3I6OmFk
ZE1hdGNoZWRQcm9wZXJ0aWVzKE1hdGNoUmVzdWx0JiBtYXRjaFJlc3VsdCwgU3R5bGVQcm9wZXJ0
eVNldCogcHJvcGVydGllcywgU3R5bGVSdWxlKiBydWxlLCB1bnNpZ25lZCBsaW5rTWF0Y2hUeXBl
LCBib29sIGluUmVnaW9uUnVsZSkKQEAgLTI4NzIsNiArMjg3NCw1OSBAQCBTdHJpbmcgQ1NTU3R5
bGVTZWxlY3Rvcjo6cGFnZU5hbWUoaW50IC8qCiAgICAgcmV0dXJuICIiOwogfQogCitzdGF0aWMg
dm9pZCBjb2xsZWN0Q1NTT01XcmFwcGVycyhIYXNoTWFwPFN0eWxlUnVsZSosIFJlZlB0cjxDU1NT
dHlsZVJ1bGU+ID4mIHdyYXBwZXJNYXAsIENTU1J1bGVMaXN0KiBydWxlTGlzdCkKK3sKKyAgICB1
bnNpZ25lZCBzaXplID0gcnVsZUxpc3QtPmxlbmd0aCgpOworICAgIGZvciAodW5zaWduZWQgaSA9
IDA7IGkgPCBzaXplOyArK2kpIHsKKyAgICAgICAgQ1NTUnVsZSogY3NzUnVsZSA9IHJ1bGVMaXN0
LT5pdGVtKGkpOworICAgICAgICBpZiAoY3NzUnVsZS0+aXNJbXBvcnRSdWxlKCkpCisgICAgICAg
ICAgICBjb2xsZWN0Q1NTT01XcmFwcGVycyh3cmFwcGVyTWFwLCBzdGF0aWNfY2FzdDxDU1NJbXBv
cnRSdWxlKj4oY3NzUnVsZSktPnN0eWxlU2hlZXQoKSk7CisgICAgICAgIGVsc2UgaWYgKGNzc1J1
bGUtPmlzTWVkaWFSdWxlKCkpCisgICAgICAgICAgICBjb2xsZWN0Q1NTT01XcmFwcGVycyh3cmFw
cGVyTWFwLCBzdGF0aWNfY2FzdDxDU1NNZWRpYVJ1bGUqPihjc3NSdWxlKS0+Y3NzUnVsZXMoKSk7
CisgICAgICAgIGVsc2UgaWYgKGNzc1J1bGUtPmlzUmVnaW9uUnVsZSgpKQorICAgICAgICAgICAg
Y29sbGVjdENTU09NV3JhcHBlcnMod3JhcHBlck1hcCwgc3RhdGljX2Nhc3Q8V2ViS2l0Q1NTUmVn
aW9uUnVsZSo+KGNzc1J1bGUpLT5jc3NSdWxlcygpKTsKKyAgICAgICAgZWxzZSBpZiAoY3NzUnVs
ZS0+aXNTdHlsZVJ1bGUoKSkgeworICAgICAgICAgICAgQ1NTU3R5bGVSdWxlKiBjc3NTdHlsZVJ1
bGUgPSBzdGF0aWNfY2FzdDxDU1NTdHlsZVJ1bGUqPihjc3NSdWxlKTsKKyAgICAgICAgICAgIHdy
YXBwZXJNYXAuYWRkKGNzc1N0eWxlUnVsZS0+c3R5bGVSdWxlKCksIGNzc1N0eWxlUnVsZSk7Cisg
ICAgICAgIH0KKyAgICB9Cit9CisKK3N0YXRpYyB2b2lkIGNvbGxlY3RDU1NPTVdyYXBwZXJzKEhh
c2hNYXA8U3R5bGVSdWxlKiwgUmVmUHRyPENTU1N0eWxlUnVsZT4gPiYgd3JhcHBlck1hcCwgQ1NT
U3R5bGVTaGVldCogc3R5bGVTaGVldCkKK3sKKyAgICBpZiAoIXN0eWxlU2hlZXQpCisgICAgICAg
IHJldHVybjsKKyAgICBjb2xsZWN0Q1NTT01XcmFwcGVycyh3cmFwcGVyTWFwLCBzdHlsZVNoZWV0
LT5jc3NSdWxlcygpLmdldCgpKTsKK30KKworc3RhdGljIHZvaWQgY29sbGVjdENTU09NV3JhcHBl
cnMoSGFzaE1hcDxTdHlsZVJ1bGUqLCBSZWZQdHI8Q1NTU3R5bGVSdWxlPiA+JiB3cmFwcGVyTWFw
LCBEb2N1bWVudCogZG9jdW1lbnQpCit7CisgICAgY29uc3QgVmVjdG9yPFJlZlB0cjxTdHlsZVNo
ZWV0PiA+JiBzdHlsZVNoZWV0cyA9IGRvY3VtZW50LT5zdHlsZVNoZWV0cygpLT52ZWN0b3IoKTsK
KyAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgc3R5bGVTaGVldHMuc2l6ZSgpOyArK2kpIHsK
KyAgICAgICAgU3R5bGVTaGVldCogc3R5bGVTaGVldCA9IHN0eWxlU2hlZXRzW2ldLmdldCgpOwor
ICAgICAgICBpZiAoIXN0eWxlU2hlZXQtPmlzQ1NTU3R5bGVTaGVldCgpKQorICAgICAgICAgICAg
Y29udGludWU7CisgICAgICAgIGNvbGxlY3RDU1NPTVdyYXBwZXJzKHdyYXBwZXJNYXAsIHN0YXRp
Y19jYXN0PENTU1N0eWxlU2hlZXQqPihzdHlsZVNoZWV0KSk7CisgICAgfQorICAgIGNvbGxlY3RD
U1NPTVdyYXBwZXJzKHdyYXBwZXJNYXAsIGRvY3VtZW50LT5wYWdlVXNlclNoZWV0KCkpOworfQor
CitDU1NTdHlsZVJ1bGUqIENTU1N0eWxlU2VsZWN0b3I6OmVuc3VyZUZ1bGxDU1NPTVdyYXBwZXJG
b3JTdHlsZVJ1bGUoU3R5bGVSdWxlKiBydWxlKQoreworICAgIGlmIChtX3N0eWxlUnVsZVRvQ1NT
T01XcmFwcGVyTWFwLmlzRW1wdHkoKSkgeworICAgICAgICBjb2xsZWN0Q1NTT01XcmFwcGVycyht
X3N0eWxlUnVsZVRvQ1NTT01XcmFwcGVyTWFwLCBzaW1wbGVEZWZhdWx0U3R5bGVTaGVldCk7Cisg
ICAgICAgIGNvbGxlY3RDU1NPTVdyYXBwZXJzKG1fc3R5bGVSdWxlVG9DU1NPTVdyYXBwZXJNYXAs
IGRlZmF1bHRTdHlsZVNoZWV0KTsKKyAgICAgICAgY29sbGVjdENTU09NV3JhcHBlcnMobV9zdHls
ZVJ1bGVUb0NTU09NV3JhcHBlck1hcCwgcXVpcmtzU3R5bGVTaGVldCk7CisgICAgICAgIGNvbGxl
Y3RDU1NPTVdyYXBwZXJzKG1fc3R5bGVSdWxlVG9DU1NPTVdyYXBwZXJNYXAsIHN2Z1N0eWxlU2hl
ZXQpOworICAgICAgICBjb2xsZWN0Q1NTT01XcmFwcGVycyhtX3N0eWxlUnVsZVRvQ1NTT01XcmFw
cGVyTWFwLCBtYXRoTUxTdHlsZVNoZWV0KTsKKyAgICAgICAgY29sbGVjdENTU09NV3JhcHBlcnMo
bV9zdHlsZVJ1bGVUb0NTU09NV3JhcHBlck1hcCwgbWVkaWFDb250cm9sc1N0eWxlU2hlZXQpOwor
ICAgICAgICBjb2xsZWN0Q1NTT01XcmFwcGVycyhtX3N0eWxlUnVsZVRvQ1NTT01XcmFwcGVyTWFw
LCBmdWxsc2NyZWVuU3R5bGVTaGVldCk7CisKKyAgICAgICAgY29sbGVjdENTU09NV3JhcHBlcnMo
bV9zdHlsZVJ1bGVUb0NTU09NV3JhcHBlck1hcCwgZG9jdW1lbnQoKSk7CisgICAgfQorICAgcmV0
dXJuIG1fc3R5bGVSdWxlVG9DU1NPTVdyYXBwZXJNYXAuZ2V0KHJ1bGUpLmdldCgpOworfQorCiB2
b2lkIENTU1N0eWxlU2VsZWN0b3I6OmFwcGx5UHJvcGVydHlUb1N0eWxlKGludCBpZCwgQ1NTVmFs
dWUqIHZhbHVlLCBSZW5kZXJTdHlsZSogc3R5bGUpCiB7CiAgICAgaW5pdEVsZW1lbnQoMCk7Cklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9jc3MvQ1NTU3R5bGVTZWxlY3Rvci5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL2Nzcy9DU1NTdHlsZVNlbGVjdG9yLmgJKHJldmlzaW9uIDExMjc5OCkK
KysrIFNvdXJjZS9XZWJDb3JlL2Nzcy9DU1NTdHlsZVNlbGVjdG9yLmgJKHdvcmtpbmcgY29weSkK
QEAgLTUwLDYgKzUwLDcgQEAgY2xhc3MgQ1NTSW1hZ2VTZXRWYWx1ZTsKIGNsYXNzIENTU0ltYWdl
VmFsdWU7CiBjbGFzcyBDU1NTZWxlY3RvcjsKIGNsYXNzIENTU1N0eWxlQXBwbHlQcm9wZXJ0eTsK
K2NsYXNzIENTU1N0eWxlUnVsZTsKIGNsYXNzIENTU1N0eWxlU2hlZXQ7CiBjbGFzcyBDU1NWYWx1
ZTsKIGNsYXNzIENvbnRhaW5lck5vZGU7CkBAIC0yNDAsNiArMjQxLDEwIEBAIHB1YmxpYzoKICAg
ICBzdGF0aWMgYm9vbCBjcmVhdGVUcmFuc2Zvcm1PcGVyYXRpb25zKENTU1ZhbHVlKiBpblZhbHVl
LCBSZW5kZXJTdHlsZSogaW5TdHlsZSwgUmVuZGVyU3R5bGUqIHJvb3RTdHlsZSwgVHJhbnNmb3Jt
T3BlcmF0aW9ucyYgb3V0T3BlcmF0aW9ucyk7CiAgICAgCiAgICAgdm9pZCBpbnZhbGlkYXRlTWF0
Y2hlZFByb3BlcnRpZXNDYWNoZSgpOworICAgIAorICAgIC8vIFdBUk5JTkcuIFRoaXMgd2lsbCBj
b25zdHJ1Y3QgQ1NTT00gd3JhcHBlcnMgZm9yIGFsbCBzdHlsZSBydWxlcyBhbmQgY2FjaGUgdGhl
biBpbiBhIG1hcCBmb3Igc2lnbmlmaWNhbnQgbWVtb3J5IGNvc3QuCisgICAgLy8gSXQgaXMgaGVy
ZSB0byBzdXBwb3J0IGluc3BlY3Rvci4gRG9uJ3QgdXNlIGZvciBhbnkgcmVndWxhciBlbmdpbmUg
ZnVuY3Rpb25zLgorICAgIENTU1N0eWxlUnVsZSogZW5zdXJlRnVsbENTU09NV3JhcHBlckZvclN0
eWxlUnVsZShTdHlsZVJ1bGUqKTsKIAogI2lmIEVOQUJMRShDU1NfRklMVEVSUykKICAgICBib29s
IGNyZWF0ZUZpbHRlck9wZXJhdGlvbnMoQ1NTVmFsdWUqIGluVmFsdWUsIFJlbmRlclN0eWxlKiBp
blN0eWxlLCBSZW5kZXJTdHlsZSogcm9vdFN0eWxlLCBGaWx0ZXJPcGVyYXRpb25zJiBvdXRPcGVy
YXRpb25zKTsKQEAgLTQ4Niw2ICs0OTEsOCBAQCBwcml2YXRlOgogICAgIGJvb2wgbV9hcHBseVBy
b3BlcnR5VG9SZWd1bGFyU3R5bGU7CiAgICAgYm9vbCBtX2FwcGx5UHJvcGVydHlUb1Zpc2l0ZWRM
aW5rU3R5bGU7CiAgICAgY29uc3QgQ1NTU3R5bGVBcHBseVByb3BlcnR5JiBtX2FwcGx5UHJvcGVy
dHk7CisgICAgCisgICAgSGFzaE1hcDxTdHlsZVJ1bGUqLCBSZWZQdHI8Q1NTU3R5bGVSdWxlPiA+
ICBtX3N0eWxlUnVsZVRvQ1NTT01XcmFwcGVyTWFwOwogCiAjaWYgRU5BQkxFKENTU19TSEFERVJT
KQogICAgIGJvb2wgbV9oYXNQZW5kaW5nU2hhZGVyczsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2lu
c3BlY3Rvci9JbnNwZWN0b3JDU1NBZ2VudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL0luc3BlY3RvckNTU0FnZW50LmNwcAkocmV2aXNpb24gMTEyNzk4KQorKysg
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNTU0FnZW50LmNwcAkod29ya2luZyBj
b3B5KQpAQCAtNTc0LDcgKzU3NCw3IEBAIHZvaWQgSW5zcGVjdG9yQ1NTQWdlbnQ6OmdldE1hdGNo
ZWRTdHlsZXMKICAgICAvLyBNYXRjaGVkIHJ1bGVzLgogICAgIENTU1N0eWxlU2VsZWN0b3IqIHNl
bGVjdG9yID0gZWxlbWVudC0+b3duZXJEb2N1bWVudCgpLT5zdHlsZVNlbGVjdG9yKCk7CiAgICAg
UmVmUHRyPENTU1J1bGVMaXN0PiBtYXRjaGVkUnVsZXMgPSBzZWxlY3Rvci0+c3R5bGVSdWxlc0Zv
ckVsZW1lbnQoZWxlbWVudCwgQ1NTU3R5bGVTZWxlY3Rvcjo6QWxsQ1NTUnVsZXMpOwotICAgIG1h
dGNoZWRDU1NSdWxlcyA9IGJ1aWxkQXJyYXlGb3JSdWxlTGlzdChtYXRjaGVkUnVsZXMuZ2V0KCkp
OworICAgIG1hdGNoZWRDU1NSdWxlcyA9IGJ1aWxkQXJyYXlGb3JSdWxlTGlzdChtYXRjaGVkUnVs
ZXMuZ2V0KCksIHNlbGVjdG9yKTsKIAogICAgIC8vIFBzZXVkbyBlbGVtZW50cy4KICAgICBpZiAo
IWluY2x1ZGVQc2V1ZG8gfHwgKmluY2x1ZGVQc2V1ZG8pIHsKQEAgLTU4NCw3ICs1ODQsNyBAQCB2
b2lkIEluc3BlY3RvckNTU0FnZW50OjpnZXRNYXRjaGVkU3R5bGVzCiAgICAgICAgICAgICBpZiAo
bWF0Y2hlZFJ1bGVzICYmIG1hdGNoZWRSdWxlcy0+bGVuZ3RoKCkpIHsKICAgICAgICAgICAgICAg
ICBSZWZQdHI8VHlwZUJ1aWxkZXI6OkNTUzo6UHNldWRvSWRSdWxlcz4gcHNldWRvU3R5bGVzID0g
VHlwZUJ1aWxkZXI6OkNTUzo6UHNldWRvSWRSdWxlczo6Y3JlYXRlKCkKICAgICAgICAgICAgICAg
ICAgICAgLnNldFBzZXVkb0lkKHN0YXRpY19jYXN0PGludD4ocHNldWRvSWQpKQotICAgICAgICAg
ICAgICAgICAgICAuc2V0UnVsZXMoYnVpbGRBcnJheUZvclJ1bGVMaXN0KG1hdGNoZWRSdWxlcy5n
ZXQoKSkpOworICAgICAgICAgICAgICAgICAgICAuc2V0UnVsZXMoYnVpbGRBcnJheUZvclJ1bGVM
aXN0KG1hdGNoZWRSdWxlcy5nZXQoKSwgc2VsZWN0b3IpKTsKICAgICAgICAgICAgICAgICBwc2V1
ZG9FbGVtZW50cy0+YWRkSXRlbShwc2V1ZG9TdHlsZXMucmVsZWFzZSgpKTsKICAgICAgICAgICAg
IH0KICAgICAgICAgfQpAQCAtNjAwLDcgKzYwMCw3IEBAIHZvaWQgSW5zcGVjdG9yQ1NTQWdlbnQ6
OmdldE1hdGNoZWRTdHlsZXMKICAgICAgICAgICAgIENTU1N0eWxlU2VsZWN0b3IqIHBhcmVudFNl
bGVjdG9yID0gcGFyZW50RWxlbWVudC0+b3duZXJEb2N1bWVudCgpLT5zdHlsZVNlbGVjdG9yKCk7
CiAgICAgICAgICAgICBSZWZQdHI8Q1NTUnVsZUxpc3Q+IHBhcmVudE1hdGNoZWRSdWxlcyA9IHBh
cmVudFNlbGVjdG9yLT5zdHlsZVJ1bGVzRm9yRWxlbWVudChwYXJlbnRFbGVtZW50LCBDU1NTdHls
ZVNlbGVjdG9yOjpBbGxDU1NSdWxlcyk7CiAgICAgICAgICAgICBSZWZQdHI8VHlwZUJ1aWxkZXI6
OkNTUzo6SW5oZXJpdGVkU3R5bGVFbnRyeT4gcGFyZW50U3R5bGUgPSBUeXBlQnVpbGRlcjo6Q1NT
OjpJbmhlcml0ZWRTdHlsZUVudHJ5OjpjcmVhdGUoKQotICAgICAgICAgICAgICAgIC5zZXRNYXRj
aGVkQ1NTUnVsZXMoYnVpbGRBcnJheUZvclJ1bGVMaXN0KHBhcmVudE1hdGNoZWRSdWxlcy5nZXQo
KSkpOworICAgICAgICAgICAgICAgIC5zZXRNYXRjaGVkQ1NTUnVsZXMoYnVpbGRBcnJheUZvclJ1
bGVMaXN0KHBhcmVudE1hdGNoZWRSdWxlcy5nZXQoKSwgc2VsZWN0b3IpKTsKICAgICAgICAgICAg
IGlmIChwYXJlbnRFbGVtZW50LT5zdHlsZSgpICYmIHBhcmVudEVsZW1lbnQtPnN0eWxlKCktPmxl
bmd0aCgpKSB7CiAgICAgICAgICAgICAgICAgSW5zcGVjdG9yU3R5bGVTaGVldEZvcklubGluZVN0
eWxlKiBzdHlsZVNoZWV0ID0gYXNJbnNwZWN0b3JTdHlsZVNoZWV0KHBhcmVudEVsZW1lbnQpOwog
ICAgICAgICAgICAgICAgIGlmIChzdHlsZVNoZWV0KQpAQCAtOTQ4LDcgKzk0OCw3IEBAIFN0cmlu
ZyBJbnNwZWN0b3JDU1NBZ2VudDo6ZGV0ZWN0T3JpZ2luKEMKICAgICByZXR1cm4gb3JpZ2luOwog
fQogCi1QYXNzUmVmUHRyPFR5cGVCdWlsZGVyOjpBcnJheTxUeXBlQnVpbGRlcjo6Q1NTOjpDU1NS
dWxlPiA+IEluc3BlY3RvckNTU0FnZW50OjpidWlsZEFycmF5Rm9yUnVsZUxpc3QoQ1NTUnVsZUxp
c3QqIHJ1bGVMaXN0KQorUGFzc1JlZlB0cjxUeXBlQnVpbGRlcjo6QXJyYXk8VHlwZUJ1aWxkZXI6
OkNTUzo6Q1NTUnVsZT4gPiBJbnNwZWN0b3JDU1NBZ2VudDo6YnVpbGRBcnJheUZvclJ1bGVMaXN0
KENTU1J1bGVMaXN0KiBydWxlTGlzdCwgQ1NTU3R5bGVTZWxlY3Rvciogc3R5bGVTZWxlY3RvcikK
IHsKICAgICBSZWZQdHI8VHlwZUJ1aWxkZXI6OkFycmF5PFR5cGVCdWlsZGVyOjpDU1M6OkNTU1J1
bGU+ID4gcmVzdWx0ID0gVHlwZUJ1aWxkZXI6OkFycmF5PFR5cGVCdWlsZGVyOjpDU1M6OkNTU1J1
bGU+OjpjcmVhdGUoKTsKICAgICBpZiAoIXJ1bGVMaXN0KQpAQCAtOTU5LDkgKzk1OSwxNyBAQCBQ
YXNzUmVmUHRyPFR5cGVCdWlsZGVyOjpBcnJheTxUeXBlQnVpbGRlCiAgICAgICAgIGlmICghcnVs
ZSkKICAgICAgICAgICAgIGNvbnRpbnVlOwogCi0gICAgICAgIEluc3BlY3RvclN0eWxlU2hlZXQq
IHN0eWxlU2hlZXQgPSBiaW5kU3R5bGVTaGVldChydWxlLT5wYXJlbnRTdHlsZVNoZWV0KCkpOwot
ICAgICAgICBpZiAoc3R5bGVTaGVldCkKLSAgICAgICAgICAgIHJlc3VsdC0+YWRkSXRlbShzdHls
ZVNoZWV0LT5idWlsZE9iamVjdEZvclJ1bGUocnVsZSkpOworICAgICAgICAvLyBDU1NSdWxlcyBy
ZXR1cm5lZCBieSBDU1NTdHlsZVNlbGVjdG9yOjpzdHlsZVJ1bGVzRm9yRWxlbWVudCBsYWNrIHBh
cmVudCBwb2ludGVycyBzaW5jZSB0aGF0IGluZm9tYXRpb24gaXMgbm90IGNoZWFwbHkgYXZhaWxh
YmxlLgorICAgICAgICAvLyBTaW5jZSB0aGUgaW5zcGVjdG9yIHdhbnRzIHRvIHdhbGsgdGhlIHBh
cmVudCBjaGFpbiwgd2UgY29uc3RydWN0IHRoZSBmdWxsIHdyYXBwZXJzIGhlcmUuCisgICAgICAg
IC8vIEZJWE1FOiBUaGlzIGNvdWxkIGJlIGZhY3RvcmVkIGJldHRlci4gQ1NTU3R5bGVTZWxlY3Rv
cjo6c3R5bGVSdWxlc0ZvckVsZW1lbnQgc2hvdWxkIHJldHVybiBhIFN0eWxlUnVsZSB2ZWN0b3Is
IG5vdCBhIENTU1J1bGVMaXN0LgorICAgICAgICBpZiAoIXJ1bGUtPnBhcmVudFN0eWxlU2hlZXQo
KSkgeworICAgICAgICAgICAgcnVsZSA9IHN0eWxlU2VsZWN0b3ItPmVuc3VyZUZ1bGxDU1NPTVdy
YXBwZXJGb3JTdHlsZVJ1bGUocnVsZS0+c3R5bGVSdWxlKCkpOworICAgICAgICAgICAgaWYgKCFy
dWxlKQorICAgICAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICB9CisgICAgICAgIEluc3Bl
Y3RvclN0eWxlU2hlZXQqIGluc3BlY3RvclN0eWxlU2hlZXQgPSBiaW5kU3R5bGVTaGVldChydWxl
LT5wYXJlbnRTdHlsZVNoZWV0KCkpOworICAgICAgICBpZiAoaW5zcGVjdG9yU3R5bGVTaGVldCkK
KyAgICAgICAgICAgIHJlc3VsdC0+YWRkSXRlbShpbnNwZWN0b3JTdHlsZVNoZWV0LT5idWlsZE9i
amVjdEZvclJ1bGUocnVsZSkpOwogICAgIH0KICAgICByZXR1cm4gcmVzdWx0LnJlbGVhc2UoKTsK
IH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDU1NBZ2VudC5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDU1NBZ2VudC5o
CShyZXZpc2lvbiAxMTI3OTgpCisrKyBTb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9y
Q1NTQWdlbnQuaAkod29ya2luZyBjb3B5KQpAQCAtMTQ1LDcgKzE0NSw3IEBAIHByaXZhdGU6CiAg
ICAgSW5zcGVjdG9yU3R5bGVTaGVldCogYXNzZXJ0U3R5bGVTaGVldEZvcklkKEVycm9yU3RyaW5n
KiwgY29uc3QgU3RyaW5nJik7CiAgICAgU3RyaW5nIGRldGVjdE9yaWdpbihDU1NTdHlsZVNoZWV0
KiBwYWdlU3R5bGVTaGVldCwgRG9jdW1lbnQqIG93bmVyRG9jdW1lbnQpOwogCi0gICAgUGFzc1Jl
ZlB0cjxUeXBlQnVpbGRlcjo6QXJyYXk8VHlwZUJ1aWxkZXI6OkNTUzo6Q1NTUnVsZT4gPiBidWls
ZEFycmF5Rm9yUnVsZUxpc3QoQ1NTUnVsZUxpc3QqKTsKKyAgICBQYXNzUmVmUHRyPFR5cGVCdWls
ZGVyOjpBcnJheTxUeXBlQnVpbGRlcjo6Q1NTOjpDU1NSdWxlPiA+IGJ1aWxkQXJyYXlGb3JSdWxl
TGlzdChDU1NSdWxlTGlzdCosIENTU1N0eWxlU2VsZWN0b3IqKTsKICAgICBQYXNzUmVmUHRyPFR5
cGVCdWlsZGVyOjpDU1M6OkNTU1N0eWxlPiBidWlsZE9iamVjdEZvckF0dHJpYnV0ZXNTdHlsZShF
bGVtZW50Kik7CiAKICAgICAvLyBJbnNwZWN0b3JET01BZ2VudDo6RE9NTGlzdGVuZXIgaW1wbGVt
ZW50YXRpb24K
</data>
<flag name="review"
          id="139407"
          type_id="1"
          status="-"
          setter="kling"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>135013</attachid>
            <date>2012-04-01 13:09:38 -0700</date>
            <delta_ts>2012-04-02 04:03:38 -0700</delta_ts>
            <desc>with bug url</desc>
            <filename>inspector-reverse-map-6.patch</filename>
            <type>text/plain</type>
            <size>17466</size>
            <attacher name="Antti Koivisto">koivisto</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDExMjgxNykKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDQwIEBACisyMDEyLTA0LTAxICBBbnR0aSBL
b2l2aXN0byAgPGFudHRpQGFwcGxlLmNvbT4KKworICAgICAgICBBZGQgbWVjaGFuaXNtIGZvciBt
YXBwaW5nIGZyb20gU3R5bGVSdWxlcyBiYWNrIHRvIGZ1bGx5IGNvbnN0cnVjdGVkIENTU1N0eWxl
UnVsZXMgCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD04
Mjg0NworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIElu
c3BlY3RvciBpcyB1c2luZyBDU1NTdHlsZVNlbGVjdG9yIHRvIGNhbGN1bGF0ZSB0aGUgQ1NTIHJ1
bGVzIG1hdGNoZWQgYnkgYSBnaXZlbiBlbGVtZW50IGFuZAorICAgICAgICBleHBlY3RzIHRvIGJl
IGFibGUgdG8gd2FsayB0aGUgcGFyZW50IGNoYWluLiBBZnRlciA4MjcyOCB0aGUgc3R5bGVzaGVl
dCBvYmplY3QgdHJlZSB3b24ndCBoYXZlCisgICAgICAgIHBhcmVudCBwb2ludGVycyBhbmQgd2Ug
YXJlIGdvaW5nIHRvIG5lZWQgYW5vdGhlciBtZWNoYW5pc20gdG8gc3VwcG9ydCB0aGlzLgorICAg
ICAgICAKKyAgICAgICAgVGhlIG5ldyBjb2RlIGRvZXMgbm90IGFjdHVhbGx5IHJ1biB3aXRob3V0
IDgyNzI4LgorICAgICAgICAKKyAgICAgICAgKiBjc3MvQ1NTU3R5bGVTZWxlY3Rvci5jcHA6Cisg
ICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1N0eWxlU2VsZWN0b3I6OmFw
cGVuZEF1dGhvclN0eWxlc2hlZXRzKToKKyAgICAgICAgKFdlYkNvcmU6OmxvYWRGdWxsRGVmYXVs
dFN0eWxlKToKKyAgICAgICAgKFdlYkNvcmU6OmVuc3VyZURlZmF1bHRTdHlsZVNoZWV0c0ZvckVs
ZW1lbnQpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTU3R5bGVTZWxlY3Rvcjo6Y29sbGVjdE1hdGNo
aW5nUnVsZXNGb3JMaXN0KToKKyAgICAgICAgKiBjc3MvQ1NTU3R5bGVTZWxlY3Rvci5oOgorICAg
ICAgICAoQ1NTU3R5bGVTZWxlY3Rvcik6CisgICAgCisgICAgICAgIEFkZCBlbnN1cmVGdWxsQ1NT
T01XcmFwcGVyRm9yU3R5bGVSdWxlKCkgbWV0aG9kIHdoaWNoIHRyYXZlcnNlcyB0aHJvdWdoIGFs
bCBzdHlsZQorICAgICAgICBzaGVldHMgdGhhdCBhcHBseSB0byB0aGUgZG9jdW1lbnQgYW5kIGNv
bnN0dWN0cyB3cmFwcGVycyBmb3IgdGhlIHJ1bGVzLiBUaGVzZSB3cmFwcGVycworICAgICAgICBh
cmUgY2FjaGVkIHRvIGEgbWFwLiBUaGUgbWFwIGNhbiB0aGVuIGJlIHVzZWQgZm9yIFN0eWxlUnVs
ZSAtPiBDU1NTdHlsZVJ1bGUgbG9va3Vwcy4KKyAgICAgICAgCisgICAgICAgIFRoaXMgdXNlcyBx
dWl0ZSBhIGJpdCBvZiBtZW1vcnkgc28gc2hvdWxkIG5vdCBiZSB1c2VkIGZvciBhbnkgbm9ybWFs
IGVuZ2luZSBmdW5jdGlvbnMuCisgICAgCisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvckNT
U0FnZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckNTU0FnZW50OjpnZXRNYXRj
aGVkU3R5bGVzRm9yTm9kZSk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JDU1NBZ2VudDo6
YnVpbGRBcnJheUZvclJ1bGVMaXN0KToKKyAgICAKKyAgICAgICAgVXNlIHRoZSBuZXcgbWVjaGFu
aXNtIHRvIGdldCBmdWxseSBmdW5jdGlvbmFsIHdyYXBwZXJzIGZvciBydWxlIG9iamVjdHMgd2l0
aG91dCBwYXJlbnQgcG9pbnRlci4KKyAgICAKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9y
Q1NTQWdlbnQuaDoKKyAgICAgICAgKEluc3BlY3RvckNTU0FnZW50KToKKwogMjAxMi0wNC0wMSAg
VG9ueSBUc2V1bmcgIDx0c2V1bmdAYXBwbGUuY29tPgogCiAgICAgICAgIENvbXBvc2l0ZSBGb250
IFJlZmVyZW5jZXMgaXMgYSBuZXcgZXN0YWJsaXNoZWQgc3RhbmRhcmQgKElTTy9JRUMgMTQ0OTYt
Mjg6MjAxMikgZm9yIHNwZWNpZnlpbmcKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2Nzcy9DU1NTdHls
ZVNlbGVjdG9yLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9jc3MvQ1NTU3R5bGVT
ZWxlY3Rvci5jcHAJKHJldmlzaW9uIDExMjgxNykKKysrIFNvdXJjZS9XZWJDb3JlL2Nzcy9DU1NT
dHlsZVNlbGVjdG9yLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjg0LDExICsyODQsMTkgQEAgc3Rh
dGljIFJ1bGVTZXQqIGRlZmF1bHRRdWlya3NTdHlsZTsKIHN0YXRpYyBSdWxlU2V0KiBkZWZhdWx0
UHJpbnRTdHlsZTsKIHN0YXRpYyBSdWxlU2V0KiBkZWZhdWx0Vmlld1NvdXJjZVN0eWxlOwogc3Rh
dGljIENTU1N0eWxlU2hlZXQqIHNpbXBsZURlZmF1bHRTdHlsZVNoZWV0Oworc3RhdGljIENTU1N0
eWxlU2hlZXQqIGRlZmF1bHRTdHlsZVNoZWV0Oworc3RhdGljIENTU1N0eWxlU2hlZXQqIHF1aXJr
c1N0eWxlU2hlZXQ7CitzdGF0aWMgQ1NTU3R5bGVTaGVldCogc3ZnU3R5bGVTaGVldDsKK3N0YXRp
YyBDU1NTdHlsZVNoZWV0KiBtYXRoTUxTdHlsZVNoZWV0Oworc3RhdGljIENTU1N0eWxlU2hlZXQq
IG1lZGlhQ29udHJvbHNTdHlsZVNoZWV0Oworc3RhdGljIENTU1N0eWxlU2hlZXQqIGZ1bGxzY3Jl
ZW5TdHlsZVNoZWV0OwogCiBSZW5kZXJTdHlsZSogQ1NTU3R5bGVTZWxlY3Rvcjo6c19zdHlsZU5v
dFlldEF2YWlsYWJsZTsKIAogc3RhdGljIHZvaWQgbG9hZEZ1bGxEZWZhdWx0U3R5bGUoKTsKIHN0
YXRpYyB2b2lkIGxvYWRTaW1wbGVEZWZhdWx0U3R5bGUoKTsKK3N0YXRpYyB2b2lkIGNvbGxlY3RD
U1NPTVdyYXBwZXJzKEhhc2hNYXA8U3R5bGVSdWxlKiwgUmVmUHRyPENTU1N0eWxlUnVsZT4gPiYs
IENTU1N0eWxlU2hlZXQqKTsKKwogLy8gRklYTUU6IEl0IHdvdWxkIGJlIG5pY2UgdG8gdXNlIHNv
bWUgbWVjaGFuaXNtIHRoYXQgZ3VhcmFudGVlcyB0aGlzIGlzIGluIHN5bmMgd2l0aCB0aGUgcmVh
bCBVQSBzdHlsZXNoZWV0Lgogc3RhdGljIGNvbnN0IGNoYXIqIHNpbXBsZVVzZXJBZ2VudFN0eWxl
U2hlZXQgPSAiaHRtbCxib2R5LGRpdntkaXNwbGF5OmJsb2NrfWhlYWR7ZGlzcGxheTpub25lfWJv
ZHl7bWFyZ2luOjhweH1kaXY6Zm9jdXMsc3Bhbjpmb2N1c3tvdXRsaW5lOmF1dG8gNXB4IC13ZWJr
aXQtZm9jdXMtcmluZy1jb2xvcn1hOi13ZWJraXQtYW55LWxpbmt7Y29sb3I6LXdlYmtpdC1saW5r
O3RleHQtZGVjb3JhdGlvbjp1bmRlcmxpbmV9YTotd2Via2l0LWFueS1saW5rOmFjdGl2ZXtjb2xv
cjotd2Via2l0LWFjdGl2ZWxpbmt9IjsKIApAQCAtNTA2LDYgKzUxNCw4IEBAIHZvaWQgQ1NTU3R5
bGVTZWxlY3Rvcjo6YXBwZW5kQXV0aG9yU3R5bGUKICAgICAgICAgfQogI2VuZGlmCiAgICAgICAg
IG1fYXV0aG9yU3R5bGUtPmFkZFJ1bGVzRnJvbVNoZWV0KGNzc1NoZWV0LCAqbV9tZWRpdW0sIHRo
aXMpOworICAgICAgICBpZiAoIW1fc3R5bGVSdWxlVG9DU1NPTVdyYXBwZXJNYXAuaXNFbXB0eSgp
KQorICAgICAgICAgICAgY29sbGVjdENTU09NV3JhcHBlcnMobV9zdHlsZVJ1bGVUb0NTU09NV3Jh
cHBlck1hcCwgY3NzU2hlZXQpOwogICAgIH0KICAgICBtX2F1dGhvclN0eWxlLT5zaHJpbmtUb0Zp
dCgpOwogICAgIGNvbGxlY3RGZWF0dXJlcygpOwpAQCAtNzAwLDE0ICs3MTAsMTQgQEAgc3RhdGlj
IHZvaWQgbG9hZEZ1bGxEZWZhdWx0U3R5bGUoKQogCiAgICAgLy8gU3RyaWN0LW1vZGUgcnVsZXMu
CiAgICAgU3RyaW5nIGRlZmF1bHRSdWxlcyA9IFN0cmluZyhodG1sVXNlckFnZW50U3R5bGVTaGVl
dCwgc2l6ZW9mKGh0bWxVc2VyQWdlbnRTdHlsZVNoZWV0KSkgKyBSZW5kZXJUaGVtZTo6ZGVmYXVs
dFRoZW1lKCktPmV4dHJhRGVmYXVsdFN0eWxlU2hlZXQoKTsKLSAgICBDU1NTdHlsZVNoZWV0KiBk
ZWZhdWx0U2hlZXQgPSBwYXJzZVVBU2hlZXQoZGVmYXVsdFJ1bGVzKTsKLSAgICBkZWZhdWx0U3R5
bGUtPmFkZFJ1bGVzRnJvbVNoZWV0KGRlZmF1bHRTaGVldCwgc2NyZWVuRXZhbCgpKTsKLSAgICBk
ZWZhdWx0UHJpbnRTdHlsZS0+YWRkUnVsZXNGcm9tU2hlZXQoZGVmYXVsdFNoZWV0LCBwcmludEV2
YWwoKSk7CisgICAgZGVmYXVsdFN0eWxlU2hlZXQgPSBwYXJzZVVBU2hlZXQoZGVmYXVsdFJ1bGVz
KTsKKyAgICBkZWZhdWx0U3R5bGUtPmFkZFJ1bGVzRnJvbVNoZWV0KGRlZmF1bHRTdHlsZVNoZWV0
LCBzY3JlZW5FdmFsKCkpOworICAgIGRlZmF1bHRQcmludFN0eWxlLT5hZGRSdWxlc0Zyb21TaGVl
dChkZWZhdWx0U3R5bGVTaGVldCwgcHJpbnRFdmFsKCkpOwogCiAgICAgLy8gUXVpcmtzLW1vZGUg
cnVsZXMuCiAgICAgU3RyaW5nIHF1aXJrc1J1bGVzID0gU3RyaW5nKHF1aXJrc1VzZXJBZ2VudFN0
eWxlU2hlZXQsIHNpemVvZihxdWlya3NVc2VyQWdlbnRTdHlsZVNoZWV0KSkgKyBSZW5kZXJUaGVt
ZTo6ZGVmYXVsdFRoZW1lKCktPmV4dHJhUXVpcmtzU3R5bGVTaGVldCgpOwotICAgIENTU1N0eWxl
U2hlZXQqIHF1aXJrc1NoZWV0ID0gcGFyc2VVQVNoZWV0KHF1aXJrc1J1bGVzKTsKLSAgICBkZWZh
dWx0UXVpcmtzU3R5bGUtPmFkZFJ1bGVzRnJvbVNoZWV0KHF1aXJrc1NoZWV0LCBzY3JlZW5FdmFs
KCkpOworICAgIHF1aXJrc1N0eWxlU2hlZXQgPSBwYXJzZVVBU2hlZXQocXVpcmtzUnVsZXMpOwor
ICAgIGRlZmF1bHRRdWlya3NTdHlsZS0+YWRkUnVsZXNGcm9tU2hlZXQocXVpcmtzU3R5bGVTaGVl
dCwgc2NyZWVuRXZhbCgpKTsKIH0KIAogc3RhdGljIHZvaWQgbG9hZFNpbXBsZURlZmF1bHRTdHls
ZSgpCkBAIC03MzksNTEgKzc0OSw0MyBAQCBzdGF0aWMgdm9pZCBlbnN1cmVEZWZhdWx0U3R5bGVT
aGVldHNGb3JFCiAgICAgICAgIGxvYWRGdWxsRGVmYXVsdFN0eWxlKCk7CiAKICNpZiBFTkFCTEUo
U1ZHKQotICAgIHN0YXRpYyBib29sIGxvYWRlZFNWR1VzZXJBZ2VudFNoZWV0OwotICAgIGlmIChl
bGVtZW50LT5pc1NWR0VsZW1lbnQoKSAmJiAhbG9hZGVkU1ZHVXNlckFnZW50U2hlZXQpIHsKKyAg
ICBpZiAoZWxlbWVudC0+aXNTVkdFbGVtZW50KCkgJiYgIXN2Z1N0eWxlU2hlZXQpIHsKICAgICAg
ICAgLy8gU1ZHIHJ1bGVzLgotICAgICAgICBsb2FkZWRTVkdVc2VyQWdlbnRTaGVldCA9IHRydWU7
Ci0gICAgICAgIENTU1N0eWxlU2hlZXQqIHN2Z1NoZWV0ID0gcGFyc2VVQVNoZWV0KHN2Z1VzZXJB
Z2VudFN0eWxlU2hlZXQsIHNpemVvZihzdmdVc2VyQWdlbnRTdHlsZVNoZWV0KSk7Ci0gICAgICAg
IGRlZmF1bHRTdHlsZS0+YWRkUnVsZXNGcm9tU2hlZXQoc3ZnU2hlZXQsIHNjcmVlbkV2YWwoKSk7
Ci0gICAgICAgIGRlZmF1bHRQcmludFN0eWxlLT5hZGRSdWxlc0Zyb21TaGVldChzdmdTaGVldCwg
cHJpbnRFdmFsKCkpOworICAgICAgICBzdmdTdHlsZVNoZWV0ID0gcGFyc2VVQVNoZWV0KHN2Z1Vz
ZXJBZ2VudFN0eWxlU2hlZXQsIHNpemVvZihzdmdVc2VyQWdlbnRTdHlsZVNoZWV0KSk7CisgICAg
ICAgIGRlZmF1bHRTdHlsZS0+YWRkUnVsZXNGcm9tU2hlZXQoc3ZnU3R5bGVTaGVldCwgc2NyZWVu
RXZhbCgpKTsKKyAgICAgICAgZGVmYXVsdFByaW50U3R5bGUtPmFkZFJ1bGVzRnJvbVNoZWV0KHN2
Z1N0eWxlU2hlZXQsIHByaW50RXZhbCgpKTsKICAgICB9CiAjZW5kaWYKIAotICAgIHN0YXRpYyBi
b29sIGxvYWRlZE1hdGhNTFVzZXJBZ2VudFNoZWV0OwogI2lmIEVOQUJMRShNQVRITUwpCi0gICAg
aWYgKGVsZW1lbnQtPmlzTWF0aE1MRWxlbWVudCgpICYmICFsb2FkZWRNYXRoTUxVc2VyQWdlbnRT
aGVldCkgeworICAgIGlmIChlbGVtZW50LT5pc01hdGhNTEVsZW1lbnQoKSAmJiAhbWF0aE1MU3R5
bGVTaGVldCkgewogICAgICAgICAvLyBNYXRoTUwgcnVsZXMuCi0gICAgICAgIGxvYWRlZE1hdGhN
TFVzZXJBZ2VudFNoZWV0ID0gdHJ1ZTsKLSAgICAgICAgQ1NTU3R5bGVTaGVldCogbWF0aE1MU2hl
ZXQgPSBwYXJzZVVBU2hlZXQobWF0aG1sVXNlckFnZW50U3R5bGVTaGVldCwgc2l6ZW9mKG1hdGht
bFVzZXJBZ2VudFN0eWxlU2hlZXQpKTsKLSAgICAgICAgZGVmYXVsdFN0eWxlLT5hZGRSdWxlc0Zy
b21TaGVldChtYXRoTUxTaGVldCwgc2NyZWVuRXZhbCgpKTsKLSAgICAgICAgZGVmYXVsdFByaW50
U3R5bGUtPmFkZFJ1bGVzRnJvbVNoZWV0KG1hdGhNTFNoZWV0LCBwcmludEV2YWwoKSk7CisgICAg
ICAgIG1hdGhNTFN0eWxlU2hlZXQgPSBwYXJzZVVBU2hlZXQobWF0aG1sVXNlckFnZW50U3R5bGVT
aGVldCwgc2l6ZW9mKG1hdGhtbFVzZXJBZ2VudFN0eWxlU2hlZXQpKTsKKyAgICAgICAgZGVmYXVs
dFN0eWxlLT5hZGRSdWxlc0Zyb21TaGVldChtYXRoTUxTdHlsZVNoZWV0LCBzY3JlZW5FdmFsKCkp
OworICAgICAgICBkZWZhdWx0UHJpbnRTdHlsZS0+YWRkUnVsZXNGcm9tU2hlZXQobWF0aE1MU3R5
bGVTaGVldCwgcHJpbnRFdmFsKCkpOwogICAgIH0KICNlbmRpZgogCiAjaWYgRU5BQkxFKFZJREVP
KQotICAgIHN0YXRpYyBib29sIGxvYWRlZE1lZGlhU3R5bGVTaGVldDsKLSAgICBpZiAoIWxvYWRl
ZE1lZGlhU3R5bGVTaGVldCAmJiAoZWxlbWVudC0+aGFzVGFnTmFtZSh2aWRlb1RhZykgfHwgZWxl
bWVudC0+aGFzVGFnTmFtZShhdWRpb1RhZykpKSB7Ci0gICAgICAgIGxvYWRlZE1lZGlhU3R5bGVT
aGVldCA9IHRydWU7CisgICAgaWYgKCFtZWRpYUNvbnRyb2xzU3R5bGVTaGVldCAmJiAoZWxlbWVu
dC0+aGFzVGFnTmFtZSh2aWRlb1RhZykgfHwgZWxlbWVudC0+aGFzVGFnTmFtZShhdWRpb1RhZykp
KSB7CiAgICAgICAgIFN0cmluZyBtZWRpYVJ1bGVzID0gU3RyaW5nKG1lZGlhQ29udHJvbHNVc2Vy
QWdlbnRTdHlsZVNoZWV0LCBzaXplb2YobWVkaWFDb250cm9sc1VzZXJBZ2VudFN0eWxlU2hlZXQp
KSArIFJlbmRlclRoZW1lOjp0aGVtZUZvclBhZ2UoZWxlbWVudC0+ZG9jdW1lbnQoKS0+cGFnZSgp
KS0+ZXh0cmFNZWRpYUNvbnRyb2xzU3R5bGVTaGVldCgpOwotICAgICAgICBDU1NTdHlsZVNoZWV0
KiBtZWRpYUNvbnRyb2xzU2hlZXQgPSBwYXJzZVVBU2hlZXQobWVkaWFSdWxlcyk7Ci0gICAgICAg
IGRlZmF1bHRTdHlsZS0+YWRkUnVsZXNGcm9tU2hlZXQobWVkaWFDb250cm9sc1NoZWV0LCBzY3Jl
ZW5FdmFsKCkpOwotICAgICAgICBkZWZhdWx0UHJpbnRTdHlsZS0+YWRkUnVsZXNGcm9tU2hlZXQo
bWVkaWFDb250cm9sc1NoZWV0LCBwcmludEV2YWwoKSk7CisgICAgICAgIG1lZGlhQ29udHJvbHNT
dHlsZVNoZWV0ID0gcGFyc2VVQVNoZWV0KG1lZGlhUnVsZXMpOworICAgICAgICBkZWZhdWx0U3R5
bGUtPmFkZFJ1bGVzRnJvbVNoZWV0KG1lZGlhQ29udHJvbHNTdHlsZVNoZWV0LCBzY3JlZW5FdmFs
KCkpOworICAgICAgICBkZWZhdWx0UHJpbnRTdHlsZS0+YWRkUnVsZXNGcm9tU2hlZXQobWVkaWFD
b250cm9sc1N0eWxlU2hlZXQsIHByaW50RXZhbCgpKTsKICAgICB9CiAjZW5kaWYKIAogI2lmIEVO
QUJMRShGVUxMU0NSRUVOX0FQSSkKLSAgICBzdGF0aWMgYm9vbCBsb2FkZWRGdWxsU2NyZWVuU3R5
bGVTaGVldDsKLSAgICBpZiAoIWxvYWRlZEZ1bGxTY3JlZW5TdHlsZVNoZWV0ICYmIGVsZW1lbnQt
PmRvY3VtZW50KCktPndlYmtpdElzRnVsbFNjcmVlbigpKSB7Ci0gICAgICAgIGxvYWRlZEZ1bGxT
Y3JlZW5TdHlsZVNoZWV0ID0gdHJ1ZTsKKyAgICBpZiAoIWZ1bGxzY3JlZW5TdHlsZVNoZWV0ICYm
IGVsZW1lbnQtPmRvY3VtZW50KCktPndlYmtpdElzRnVsbFNjcmVlbigpKSB7CiAgICAgICAgIFN0
cmluZyBmdWxsc2NyZWVuUnVsZXMgPSBTdHJpbmcoZnVsbHNjcmVlblVzZXJBZ2VudFN0eWxlU2hl
ZXQsIHNpemVvZihmdWxsc2NyZWVuVXNlckFnZW50U3R5bGVTaGVldCkpICsgUmVuZGVyVGhlbWU6
OmRlZmF1bHRUaGVtZSgpLT5leHRyYUZ1bGxTY3JlZW5TdHlsZVNoZWV0KCk7Ci0gICAgICAgIENT
U1N0eWxlU2hlZXQqIGZ1bGxzY3JlZW5TaGVldCA9IHBhcnNlVUFTaGVldChmdWxsc2NyZWVuUnVs
ZXMpOwotICAgICAgICBkZWZhdWx0U3R5bGUtPmFkZFJ1bGVzRnJvbVNoZWV0KGZ1bGxzY3JlZW5T
aGVldCwgc2NyZWVuRXZhbCgpKTsKLSAgICAgICAgZGVmYXVsdFF1aXJrc1N0eWxlLT5hZGRSdWxl
c0Zyb21TaGVldChmdWxsc2NyZWVuU2hlZXQsIHNjcmVlbkV2YWwoKSk7CisgICAgICAgIGZ1bGxz
Y3JlZW5TdHlsZVNoZWV0ID0gcGFyc2VVQVNoZWV0KGZ1bGxzY3JlZW5SdWxlcyk7CisgICAgICAg
IGRlZmF1bHRTdHlsZS0+YWRkUnVsZXNGcm9tU2hlZXQoZnVsbHNjcmVlblN0eWxlU2hlZXQsIHNj
cmVlbkV2YWwoKSk7CisgICAgICAgIGRlZmF1bHRRdWlya3NTdHlsZS0+YWRkUnVsZXNGcm9tU2hl
ZXQoZnVsbHNjcmVlblN0eWxlU2hlZXQsIHNjcmVlbkV2YWwoKSk7CiAgICAgfQogI2VuZGlmCiAK
ICAgICBBU1NFUlQoZGVmYXVsdFN0eWxlLT5mZWF0dXJlcygpLmlkc0luUnVsZXMuaXNFbXB0eSgp
KTsKLSAgICBBU1NFUlRfVU5VU0VEKGxvYWRlZE1hdGhNTFVzZXJBZ2VudFNoZWV0LCBsb2FkZWRN
YXRoTUxVc2VyQWdlbnRTaGVldCB8fCBkZWZhdWx0U3R5bGUtPmZlYXR1cmVzKCkuc2libGluZ1J1
bGVzLmlzRW1wdHkoKSk7CisgICAgQVNTRVJUKG1hdGhNTFN0eWxlU2hlZXQgfHwgZGVmYXVsdFN0
eWxlLT5mZWF0dXJlcygpLnNpYmxpbmdSdWxlcy5pc0VtcHR5KCkpOwogfQogCiB2b2lkIENTU1N0
eWxlU2VsZWN0b3I6OmFkZE1hdGNoZWRQcm9wZXJ0aWVzKE1hdGNoUmVzdWx0JiBtYXRjaFJlc3Vs
dCwgU3R5bGVQcm9wZXJ0eVNldCogcHJvcGVydGllcywgU3R5bGVSdWxlKiBydWxlLCB1bnNpZ25l
ZCBsaW5rTWF0Y2hUeXBlLCBib29sIGluUmVnaW9uUnVsZSkKQEAgLTI4NzIsNiArMjg3NCw1OSBA
QCBTdHJpbmcgQ1NTU3R5bGVTZWxlY3Rvcjo6cGFnZU5hbWUoaW50IC8qCiAgICAgcmV0dXJuICIi
OwogfQogCitzdGF0aWMgdm9pZCBjb2xsZWN0Q1NTT01XcmFwcGVycyhIYXNoTWFwPFN0eWxlUnVs
ZSosIFJlZlB0cjxDU1NTdHlsZVJ1bGU+ID4mIHdyYXBwZXJNYXAsIENTU1J1bGVMaXN0KiBydWxl
TGlzdCkKK3sKKyAgICB1bnNpZ25lZCBzaXplID0gcnVsZUxpc3QtPmxlbmd0aCgpOworICAgIGZv
ciAodW5zaWduZWQgaSA9IDA7IGkgPCBzaXplOyArK2kpIHsKKyAgICAgICAgQ1NTUnVsZSogY3Nz
UnVsZSA9IHJ1bGVMaXN0LT5pdGVtKGkpOworICAgICAgICBpZiAoY3NzUnVsZS0+aXNJbXBvcnRS
dWxlKCkpCisgICAgICAgICAgICBjb2xsZWN0Q1NTT01XcmFwcGVycyh3cmFwcGVyTWFwLCBzdGF0
aWNfY2FzdDxDU1NJbXBvcnRSdWxlKj4oY3NzUnVsZSktPnN0eWxlU2hlZXQoKSk7CisgICAgICAg
IGVsc2UgaWYgKGNzc1J1bGUtPmlzTWVkaWFSdWxlKCkpCisgICAgICAgICAgICBjb2xsZWN0Q1NT
T01XcmFwcGVycyh3cmFwcGVyTWFwLCBzdGF0aWNfY2FzdDxDU1NNZWRpYVJ1bGUqPihjc3NSdWxl
KS0+Y3NzUnVsZXMoKSk7CisgICAgICAgIGVsc2UgaWYgKGNzc1J1bGUtPmlzUmVnaW9uUnVsZSgp
KQorICAgICAgICAgICAgY29sbGVjdENTU09NV3JhcHBlcnMod3JhcHBlck1hcCwgc3RhdGljX2Nh
c3Q8V2ViS2l0Q1NTUmVnaW9uUnVsZSo+KGNzc1J1bGUpLT5jc3NSdWxlcygpKTsKKyAgICAgICAg
ZWxzZSBpZiAoY3NzUnVsZS0+aXNTdHlsZVJ1bGUoKSkgeworICAgICAgICAgICAgQ1NTU3R5bGVS
dWxlKiBjc3NTdHlsZVJ1bGUgPSBzdGF0aWNfY2FzdDxDU1NTdHlsZVJ1bGUqPihjc3NSdWxlKTsK
KyAgICAgICAgICAgIHdyYXBwZXJNYXAuYWRkKGNzc1N0eWxlUnVsZS0+c3R5bGVSdWxlKCksIGNz
c1N0eWxlUnVsZSk7CisgICAgICAgIH0KKyAgICB9Cit9CisKK3N0YXRpYyB2b2lkIGNvbGxlY3RD
U1NPTVdyYXBwZXJzKEhhc2hNYXA8U3R5bGVSdWxlKiwgUmVmUHRyPENTU1N0eWxlUnVsZT4gPiYg
d3JhcHBlck1hcCwgQ1NTU3R5bGVTaGVldCogc3R5bGVTaGVldCkKK3sKKyAgICBpZiAoIXN0eWxl
U2hlZXQpCisgICAgICAgIHJldHVybjsKKyAgICBjb2xsZWN0Q1NTT01XcmFwcGVycyh3cmFwcGVy
TWFwLCBzdHlsZVNoZWV0LT5jc3NSdWxlcygpLmdldCgpKTsKK30KKworc3RhdGljIHZvaWQgY29s
bGVjdENTU09NV3JhcHBlcnMoSGFzaE1hcDxTdHlsZVJ1bGUqLCBSZWZQdHI8Q1NTU3R5bGVSdWxl
PiA+JiB3cmFwcGVyTWFwLCBEb2N1bWVudCogZG9jdW1lbnQpCit7CisgICAgY29uc3QgVmVjdG9y
PFJlZlB0cjxTdHlsZVNoZWV0PiA+JiBzdHlsZVNoZWV0cyA9IGRvY3VtZW50LT5zdHlsZVNoZWV0
cygpLT52ZWN0b3IoKTsKKyAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgc3R5bGVTaGVldHMu
c2l6ZSgpOyArK2kpIHsKKyAgICAgICAgU3R5bGVTaGVldCogc3R5bGVTaGVldCA9IHN0eWxlU2hl
ZXRzW2ldLmdldCgpOworICAgICAgICBpZiAoIXN0eWxlU2hlZXQtPmlzQ1NTU3R5bGVTaGVldCgp
KQorICAgICAgICAgICAgY29udGludWU7CisgICAgICAgIGNvbGxlY3RDU1NPTVdyYXBwZXJzKHdy
YXBwZXJNYXAsIHN0YXRpY19jYXN0PENTU1N0eWxlU2hlZXQqPihzdHlsZVNoZWV0KSk7CisgICAg
fQorICAgIGNvbGxlY3RDU1NPTVdyYXBwZXJzKHdyYXBwZXJNYXAsIGRvY3VtZW50LT5wYWdlVXNl
clNoZWV0KCkpOworfQorCitDU1NTdHlsZVJ1bGUqIENTU1N0eWxlU2VsZWN0b3I6OmVuc3VyZUZ1
bGxDU1NPTVdyYXBwZXJGb3JTdHlsZVJ1bGUoU3R5bGVSdWxlKiBydWxlKQoreworICAgIGlmICht
X3N0eWxlUnVsZVRvQ1NTT01XcmFwcGVyTWFwLmlzRW1wdHkoKSkgeworICAgICAgICBjb2xsZWN0
Q1NTT01XcmFwcGVycyhtX3N0eWxlUnVsZVRvQ1NTT01XcmFwcGVyTWFwLCBzaW1wbGVEZWZhdWx0
U3R5bGVTaGVldCk7CisgICAgICAgIGNvbGxlY3RDU1NPTVdyYXBwZXJzKG1fc3R5bGVSdWxlVG9D
U1NPTVdyYXBwZXJNYXAsIGRlZmF1bHRTdHlsZVNoZWV0KTsKKyAgICAgICAgY29sbGVjdENTU09N
V3JhcHBlcnMobV9zdHlsZVJ1bGVUb0NTU09NV3JhcHBlck1hcCwgcXVpcmtzU3R5bGVTaGVldCk7
CisgICAgICAgIGNvbGxlY3RDU1NPTVdyYXBwZXJzKG1fc3R5bGVSdWxlVG9DU1NPTVdyYXBwZXJN
YXAsIHN2Z1N0eWxlU2hlZXQpOworICAgICAgICBjb2xsZWN0Q1NTT01XcmFwcGVycyhtX3N0eWxl
UnVsZVRvQ1NTT01XcmFwcGVyTWFwLCBtYXRoTUxTdHlsZVNoZWV0KTsKKyAgICAgICAgY29sbGVj
dENTU09NV3JhcHBlcnMobV9zdHlsZVJ1bGVUb0NTU09NV3JhcHBlck1hcCwgbWVkaWFDb250cm9s
c1N0eWxlU2hlZXQpOworICAgICAgICBjb2xsZWN0Q1NTT01XcmFwcGVycyhtX3N0eWxlUnVsZVRv
Q1NTT01XcmFwcGVyTWFwLCBmdWxsc2NyZWVuU3R5bGVTaGVldCk7CisKKyAgICAgICAgY29sbGVj
dENTU09NV3JhcHBlcnMobV9zdHlsZVJ1bGVUb0NTU09NV3JhcHBlck1hcCwgZG9jdW1lbnQoKSk7
CisgICAgfQorICAgcmV0dXJuIG1fc3R5bGVSdWxlVG9DU1NPTVdyYXBwZXJNYXAuZ2V0KHJ1bGUp
LmdldCgpOworfQorCiB2b2lkIENTU1N0eWxlU2VsZWN0b3I6OmFwcGx5UHJvcGVydHlUb1N0eWxl
KGludCBpZCwgQ1NTVmFsdWUqIHZhbHVlLCBSZW5kZXJTdHlsZSogc3R5bGUpCiB7CiAgICAgaW5p
dEVsZW1lbnQoMCk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9jc3MvQ1NTU3R5bGVTZWxlY3Rvci5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2Nzcy9DU1NTdHlsZVNlbGVjdG9yLmgJKHJl
dmlzaW9uIDExMjgxNykKKysrIFNvdXJjZS9XZWJDb3JlL2Nzcy9DU1NTdHlsZVNlbGVjdG9yLmgJ
KHdvcmtpbmcgY29weSkKQEAgLTUwLDYgKzUwLDcgQEAgY2xhc3MgQ1NTSW1hZ2VTZXRWYWx1ZTsK
IGNsYXNzIENTU0ltYWdlVmFsdWU7CiBjbGFzcyBDU1NTZWxlY3RvcjsKIGNsYXNzIENTU1N0eWxl
QXBwbHlQcm9wZXJ0eTsKK2NsYXNzIENTU1N0eWxlUnVsZTsKIGNsYXNzIENTU1N0eWxlU2hlZXQ7
CiBjbGFzcyBDU1NWYWx1ZTsKIGNsYXNzIENvbnRhaW5lck5vZGU7CkBAIC0yNDAsNiArMjQxLDEw
IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgYm9vbCBjcmVhdGVUcmFuc2Zvcm1PcGVyYXRpb25zKENT
U1ZhbHVlKiBpblZhbHVlLCBSZW5kZXJTdHlsZSogaW5TdHlsZSwgUmVuZGVyU3R5bGUqIHJvb3RT
dHlsZSwgVHJhbnNmb3JtT3BlcmF0aW9ucyYgb3V0T3BlcmF0aW9ucyk7CiAgICAgCiAgICAgdm9p
ZCBpbnZhbGlkYXRlTWF0Y2hlZFByb3BlcnRpZXNDYWNoZSgpOworICAgIAorICAgIC8vIFdBUk5J
TkcuIFRoaXMgd2lsbCBjb25zdHJ1Y3QgQ1NTT00gd3JhcHBlcnMgZm9yIGFsbCBzdHlsZSBydWxl
cyBhbmQgY2FjaGUgdGhlbiBpbiBhIG1hcCBmb3Igc2lnbmlmaWNhbnQgbWVtb3J5IGNvc3QuCisg
ICAgLy8gSXQgaXMgaGVyZSB0byBzdXBwb3J0IGluc3BlY3Rvci4gRG9uJ3QgdXNlIGZvciBhbnkg
cmVndWxhciBlbmdpbmUgZnVuY3Rpb25zLgorICAgIENTU1N0eWxlUnVsZSogZW5zdXJlRnVsbENT
U09NV3JhcHBlckZvclN0eWxlUnVsZShTdHlsZVJ1bGUqKTsKIAogI2lmIEVOQUJMRShDU1NfRklM
VEVSUykKICAgICBib29sIGNyZWF0ZUZpbHRlck9wZXJhdGlvbnMoQ1NTVmFsdWUqIGluVmFsdWUs
IFJlbmRlclN0eWxlKiBpblN0eWxlLCBSZW5kZXJTdHlsZSogcm9vdFN0eWxlLCBGaWx0ZXJPcGVy
YXRpb25zJiBvdXRPcGVyYXRpb25zKTsKQEAgLTQ4Niw2ICs0OTEsOCBAQCBwcml2YXRlOgogICAg
IGJvb2wgbV9hcHBseVByb3BlcnR5VG9SZWd1bGFyU3R5bGU7CiAgICAgYm9vbCBtX2FwcGx5UHJv
cGVydHlUb1Zpc2l0ZWRMaW5rU3R5bGU7CiAgICAgY29uc3QgQ1NTU3R5bGVBcHBseVByb3BlcnR5
JiBtX2FwcGx5UHJvcGVydHk7CisgICAgCisgICAgSGFzaE1hcDxTdHlsZVJ1bGUqLCBSZWZQdHI8
Q1NTU3R5bGVSdWxlPiA+ICBtX3N0eWxlUnVsZVRvQ1NTT01XcmFwcGVyTWFwOwogCiAjaWYgRU5B
QkxFKENTU19TSEFERVJTKQogICAgIGJvb2wgbV9oYXNQZW5kaW5nU2hhZGVyczsKSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDU1NBZ2VudC5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNTU0FnZW50LmNwcAkocmV2aXNp
b24gMTEyODE3KQorKysgU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNTU0FnZW50
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTc0LDcgKzU3NCw3IEBAIHZvaWQgSW5zcGVjdG9yQ1NT
QWdlbnQ6OmdldE1hdGNoZWRTdHlsZXMKICAgICAvLyBNYXRjaGVkIHJ1bGVzLgogICAgIENTU1N0
eWxlU2VsZWN0b3IqIHNlbGVjdG9yID0gZWxlbWVudC0+b3duZXJEb2N1bWVudCgpLT5zdHlsZVNl
bGVjdG9yKCk7CiAgICAgUmVmUHRyPENTU1J1bGVMaXN0PiBtYXRjaGVkUnVsZXMgPSBzZWxlY3Rv
ci0+c3R5bGVSdWxlc0ZvckVsZW1lbnQoZWxlbWVudCwgQ1NTU3R5bGVTZWxlY3Rvcjo6QWxsQ1NT
UnVsZXMpOwotICAgIG1hdGNoZWRDU1NSdWxlcyA9IGJ1aWxkQXJyYXlGb3JSdWxlTGlzdChtYXRj
aGVkUnVsZXMuZ2V0KCkpOworICAgIG1hdGNoZWRDU1NSdWxlcyA9IGJ1aWxkQXJyYXlGb3JSdWxl
TGlzdChtYXRjaGVkUnVsZXMuZ2V0KCksIHNlbGVjdG9yKTsKIAogICAgIC8vIFBzZXVkbyBlbGVt
ZW50cy4KICAgICBpZiAoIWluY2x1ZGVQc2V1ZG8gfHwgKmluY2x1ZGVQc2V1ZG8pIHsKQEAgLTU4
NCw3ICs1ODQsNyBAQCB2b2lkIEluc3BlY3RvckNTU0FnZW50OjpnZXRNYXRjaGVkU3R5bGVzCiAg
ICAgICAgICAgICBpZiAobWF0Y2hlZFJ1bGVzICYmIG1hdGNoZWRSdWxlcy0+bGVuZ3RoKCkpIHsK
ICAgICAgICAgICAgICAgICBSZWZQdHI8VHlwZUJ1aWxkZXI6OkNTUzo6UHNldWRvSWRSdWxlcz4g
cHNldWRvU3R5bGVzID0gVHlwZUJ1aWxkZXI6OkNTUzo6UHNldWRvSWRSdWxlczo6Y3JlYXRlKCkK
ICAgICAgICAgICAgICAgICAgICAgLnNldFBzZXVkb0lkKHN0YXRpY19jYXN0PGludD4ocHNldWRv
SWQpKQotICAgICAgICAgICAgICAgICAgICAuc2V0UnVsZXMoYnVpbGRBcnJheUZvclJ1bGVMaXN0
KG1hdGNoZWRSdWxlcy5nZXQoKSkpOworICAgICAgICAgICAgICAgICAgICAuc2V0UnVsZXMoYnVp
bGRBcnJheUZvclJ1bGVMaXN0KG1hdGNoZWRSdWxlcy5nZXQoKSwgc2VsZWN0b3IpKTsKICAgICAg
ICAgICAgICAgICBwc2V1ZG9FbGVtZW50cy0+YWRkSXRlbShwc2V1ZG9TdHlsZXMucmVsZWFzZSgp
KTsKICAgICAgICAgICAgIH0KICAgICAgICAgfQpAQCAtNjAwLDcgKzYwMCw3IEBAIHZvaWQgSW5z
cGVjdG9yQ1NTQWdlbnQ6OmdldE1hdGNoZWRTdHlsZXMKICAgICAgICAgICAgIENTU1N0eWxlU2Vs
ZWN0b3IqIHBhcmVudFNlbGVjdG9yID0gcGFyZW50RWxlbWVudC0+b3duZXJEb2N1bWVudCgpLT5z
dHlsZVNlbGVjdG9yKCk7CiAgICAgICAgICAgICBSZWZQdHI8Q1NTUnVsZUxpc3Q+IHBhcmVudE1h
dGNoZWRSdWxlcyA9IHBhcmVudFNlbGVjdG9yLT5zdHlsZVJ1bGVzRm9yRWxlbWVudChwYXJlbnRF
bGVtZW50LCBDU1NTdHlsZVNlbGVjdG9yOjpBbGxDU1NSdWxlcyk7CiAgICAgICAgICAgICBSZWZQ
dHI8VHlwZUJ1aWxkZXI6OkNTUzo6SW5oZXJpdGVkU3R5bGVFbnRyeT4gcGFyZW50U3R5bGUgPSBU
eXBlQnVpbGRlcjo6Q1NTOjpJbmhlcml0ZWRTdHlsZUVudHJ5OjpjcmVhdGUoKQotICAgICAgICAg
ICAgICAgIC5zZXRNYXRjaGVkQ1NTUnVsZXMoYnVpbGRBcnJheUZvclJ1bGVMaXN0KHBhcmVudE1h
dGNoZWRSdWxlcy5nZXQoKSkpOworICAgICAgICAgICAgICAgIC5zZXRNYXRjaGVkQ1NTUnVsZXMo
YnVpbGRBcnJheUZvclJ1bGVMaXN0KHBhcmVudE1hdGNoZWRSdWxlcy5nZXQoKSwgc2VsZWN0b3Ip
KTsKICAgICAgICAgICAgIGlmIChwYXJlbnRFbGVtZW50LT5zdHlsZSgpICYmIHBhcmVudEVsZW1l
bnQtPnN0eWxlKCktPmxlbmd0aCgpKSB7CiAgICAgICAgICAgICAgICAgSW5zcGVjdG9yU3R5bGVT
aGVldEZvcklubGluZVN0eWxlKiBzdHlsZVNoZWV0ID0gYXNJbnNwZWN0b3JTdHlsZVNoZWV0KHBh
cmVudEVsZW1lbnQpOwogICAgICAgICAgICAgICAgIGlmIChzdHlsZVNoZWV0KQpAQCAtOTQ4LDcg
Kzk0OCw3IEBAIFN0cmluZyBJbnNwZWN0b3JDU1NBZ2VudDo6ZGV0ZWN0T3JpZ2luKEMKICAgICBy
ZXR1cm4gb3JpZ2luOwogfQogCi1QYXNzUmVmUHRyPFR5cGVCdWlsZGVyOjpBcnJheTxUeXBlQnVp
bGRlcjo6Q1NTOjpDU1NSdWxlPiA+IEluc3BlY3RvckNTU0FnZW50OjpidWlsZEFycmF5Rm9yUnVs
ZUxpc3QoQ1NTUnVsZUxpc3QqIHJ1bGVMaXN0KQorUGFzc1JlZlB0cjxUeXBlQnVpbGRlcjo6QXJy
YXk8VHlwZUJ1aWxkZXI6OkNTUzo6Q1NTUnVsZT4gPiBJbnNwZWN0b3JDU1NBZ2VudDo6YnVpbGRB
cnJheUZvclJ1bGVMaXN0KENTU1J1bGVMaXN0KiBydWxlTGlzdCwgQ1NTU3R5bGVTZWxlY3Rvciog
c3R5bGVTZWxlY3RvcikKIHsKICAgICBSZWZQdHI8VHlwZUJ1aWxkZXI6OkFycmF5PFR5cGVCdWls
ZGVyOjpDU1M6OkNTU1J1bGU+ID4gcmVzdWx0ID0gVHlwZUJ1aWxkZXI6OkFycmF5PFR5cGVCdWls
ZGVyOjpDU1M6OkNTU1J1bGU+OjpjcmVhdGUoKTsKICAgICBpZiAoIXJ1bGVMaXN0KQpAQCAtOTU5
LDkgKzk1OSwxNyBAQCBQYXNzUmVmUHRyPFR5cGVCdWlsZGVyOjpBcnJheTxUeXBlQnVpbGRlCiAg
ICAgICAgIGlmICghcnVsZSkKICAgICAgICAgICAgIGNvbnRpbnVlOwogCi0gICAgICAgIEluc3Bl
Y3RvclN0eWxlU2hlZXQqIHN0eWxlU2hlZXQgPSBiaW5kU3R5bGVTaGVldChydWxlLT5wYXJlbnRT
dHlsZVNoZWV0KCkpOwotICAgICAgICBpZiAoc3R5bGVTaGVldCkKLSAgICAgICAgICAgIHJlc3Vs
dC0+YWRkSXRlbShzdHlsZVNoZWV0LT5idWlsZE9iamVjdEZvclJ1bGUocnVsZSkpOworICAgICAg
ICAvLyBDU1NSdWxlcyByZXR1cm5lZCBieSBDU1NTdHlsZVNlbGVjdG9yOjpzdHlsZVJ1bGVzRm9y
RWxlbWVudCBsYWNrIHBhcmVudCBwb2ludGVycyBzaW5jZSB0aGF0IGluZm9tYXRpb24gaXMgbm90
IGNoZWFwbHkgYXZhaWxhYmxlLgorICAgICAgICAvLyBTaW5jZSB0aGUgaW5zcGVjdG9yIHdhbnRz
IHRvIHdhbGsgdGhlIHBhcmVudCBjaGFpbiwgd2UgY29uc3RydWN0IHRoZSBmdWxsIHdyYXBwZXJz
IGhlcmUuCisgICAgICAgIC8vIEZJWE1FOiBUaGlzIGNvdWxkIGJlIGZhY3RvcmVkIGJldHRlci4g
Q1NTU3R5bGVTZWxlY3Rvcjo6c3R5bGVSdWxlc0ZvckVsZW1lbnQgc2hvdWxkIHJldHVybiBhIFN0
eWxlUnVsZSB2ZWN0b3IsIG5vdCBhIENTU1J1bGVMaXN0LgorICAgICAgICBpZiAoIXJ1bGUtPnBh
cmVudFN0eWxlU2hlZXQoKSkgeworICAgICAgICAgICAgcnVsZSA9IHN0eWxlU2VsZWN0b3ItPmVu
c3VyZUZ1bGxDU1NPTVdyYXBwZXJGb3JTdHlsZVJ1bGUocnVsZS0+c3R5bGVSdWxlKCkpOworICAg
ICAgICAgICAgaWYgKCFydWxlKQorICAgICAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICB9
CisgICAgICAgIEluc3BlY3RvclN0eWxlU2hlZXQqIGluc3BlY3RvclN0eWxlU2hlZXQgPSBiaW5k
U3R5bGVTaGVldChydWxlLT5wYXJlbnRTdHlsZVNoZWV0KCkpOworICAgICAgICBpZiAoaW5zcGVj
dG9yU3R5bGVTaGVldCkKKyAgICAgICAgICAgIHJlc3VsdC0+YWRkSXRlbShpbnNwZWN0b3JTdHls
ZVNoZWV0LT5idWlsZE9iamVjdEZvclJ1bGUocnVsZSkpOwogICAgIH0KICAgICByZXR1cm4gcmVz
dWx0LnJlbGVhc2UoKTsKIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0
b3JDU1NBZ2VudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNw
ZWN0b3JDU1NBZ2VudC5oCShyZXZpc2lvbiAxMTI4MTcpCisrKyBTb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvSW5zcGVjdG9yQ1NTQWdlbnQuaAkod29ya2luZyBjb3B5KQpAQCAtMTQ1LDcgKzE0NSw3
IEBAIHByaXZhdGU6CiAgICAgSW5zcGVjdG9yU3R5bGVTaGVldCogYXNzZXJ0U3R5bGVTaGVldEZv
cklkKEVycm9yU3RyaW5nKiwgY29uc3QgU3RyaW5nJik7CiAgICAgU3RyaW5nIGRldGVjdE9yaWdp
bihDU1NTdHlsZVNoZWV0KiBwYWdlU3R5bGVTaGVldCwgRG9jdW1lbnQqIG93bmVyRG9jdW1lbnQp
OwogCi0gICAgUGFzc1JlZlB0cjxUeXBlQnVpbGRlcjo6QXJyYXk8VHlwZUJ1aWxkZXI6OkNTUzo6
Q1NTUnVsZT4gPiBidWlsZEFycmF5Rm9yUnVsZUxpc3QoQ1NTUnVsZUxpc3QqKTsKKyAgICBQYXNz
UmVmUHRyPFR5cGVCdWlsZGVyOjpBcnJheTxUeXBlQnVpbGRlcjo6Q1NTOjpDU1NSdWxlPiA+IGJ1
aWxkQXJyYXlGb3JSdWxlTGlzdChDU1NSdWxlTGlzdCosIENTU1N0eWxlU2VsZWN0b3IqKTsKICAg
ICBQYXNzUmVmUHRyPFR5cGVCdWlsZGVyOjpDU1M6OkNTU1N0eWxlPiBidWlsZE9iamVjdEZvckF0
dHJpYnV0ZXNTdHlsZShFbGVtZW50Kik7CiAKICAgICAvLyBJbnNwZWN0b3JET01BZ2VudDo6RE9N
TGlzdGVuZXIgaW1wbGVtZW50YXRpb24K
</data>
<flag name="review"
          id="139408"
          type_id="1"
          status="+"
          setter="kling"
    />
          </attachment>
      

    </bug>

</bugzilla>