<?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>164886</bug_id>
          
          <creation_ts>2016-11-17 14:01:49 -0800</creation_ts>
          <short_desc>[CSS Parser] Hook up InspectorStyleSheet to the new CSS parser.</short_desc>
          <delta_ts>2016-11-18 11:09:30 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Dave Hyatt">hyatt</reporter>
          <assigned_to name="Dave Hyatt">hyatt</assigned_to>
          
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1252440</commentid>
    <comment_count>0</comment_count>
    <who name="Dave Hyatt">hyatt</who>
    <bug_when>2016-11-17 14:01:49 -0800</bug_when>
    <thetext>[CSS Parser] Hook up InspectorStyleSheet to the new CSS parser.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1252460</commentid>
    <comment_count>1</comment_count>
      <attachid>295087</attachid>
    <who name="Dave Hyatt">hyatt</who>
    <bug_when>2016-11-17 14:40:00 -0800</bug_when>
    <thetext>Created attachment 295087
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1252469</commentid>
    <comment_count>2</comment_count>
      <attachid>295087</attachid>
    <who name="Dean Jackson">dino</who>
    <bug_when>2016-11-17 14:53:08 -0800</bug_when>
    <thetext>Comment on attachment 295087
Patch

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

&gt; Source/WebCore/inspector/InspectorStyleSheet.cpp:199
&gt; +    m_currentRuleDataStack.last()-&gt;ruleHeaderRange.end = listEndOffset;
&gt; +    if (!m_currentRuleDataStack.last()-&gt;selectorRanges.isEmpty())
&gt; +        m_currentRuleDataStack.last()-&gt;selectorRanges.last().end = listEndOffset;

Can m_currentRuleDataStack ever be empty?

&gt; Source/WebCore/inspector/InspectorStyleSheet.cpp:225
&gt; +    // Skip the rule body opening brace.
&gt; +    if (m_parsedText[offset] == &apos;{&apos;)
&gt; +        ++offset;

Should we skip any spaces as well?

&gt; Source/WebCore/inspector/InspectorStyleSheet.cpp:371
&gt; +    bool parsedOk = propertyData.parsedOk || propertyData.name.startsWith(&quot;-moz-&quot;) || propertyData.name.startsWith(&quot;-o-&quot;) || propertyData.name.startsWith(&quot;-webkit-&quot;) || propertyData.name.startsWith(&quot;-ms-&quot;);

I don&apos;t understand this. All -moz- properties are ok? Shouldn&apos;t they be marked as not OK?

&gt; Source/WebCore/inspector/InspectorStyleSheet.cpp:378
&gt; +    m_currentRuleDataStack.last()-&gt;styleSourceData-&gt;propertyData.append(CSSPropertySourceData(propertyData.name, propertyData.value, false, true, true, SourceRange(startOffset - topRuleBodyRange.start, endOffset - topRuleBodyRange.start)));

Is this the place where we set disabled to true?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1252736</commentid>
    <comment_count>3</comment_count>
    <who name="Dave Hyatt">hyatt</who>
    <bug_when>2016-11-18 11:09:30 -0800</bug_when>
    <thetext>Fixed in r208886.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>295087</attachid>
            <date>2016-11-17 14:40:00 -0800</date>
            <delta_ts>2016-11-17 14:53:08 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-164886-20161117163954.patch</filename>
            <type>text/plain</type>
            <size>32284</size>
            <attacher name="Dave Hyatt">hyatt</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDIwODg2MCkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDcwIEBACisyMDE2LTExLTE3ICBEYXZlIEh5
YXR0ICA8aHlhdHRAYXBwbGUuY29tPgorCisgICAgICAgIFtDU1MgUGFyc2VyXSBIb29rIHVwIElu
c3BlY3RvclN0eWxlU2hlZXQgdG8gdGhlIG5ldyBDU1MgcGFyc2VyLgorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTY0ODg2CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBjc3MvQ1NTR3JhbW1hci55LmluOgor
ICAgICAgICBHZXQgcmlkIG9mIHRoZSBDU1NSdWxlU291cmNlRGF0YSB0eXBlIGVudW0sIHNpbmNl
IFN0eWxlUnVsZSdzIHR5cGUKKyAgICAgICAgZW51bSBpcyBleGFjdGx5IHRoZSBzYW1lLgorCisg
ICAgICAgICogY3NzL0NTU1Byb3BlcnR5U291cmNlRGF0YS5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpDU1NQcm9wZXJ0eVNvdXJjZURhdGE6OkNTU1Byb3BlcnR5U291cmNlRGF0YSk6CisgICAgICAg
ICogY3NzL0NTU1Byb3BlcnR5U291cmNlRGF0YS5oOgorICAgICAgICBBZGQgYSBjb25jZXB0IG9m
IGRpc2FibGVkIHRvIENTU1Byb3BlcnR5U291cmNlRGF0YS4gVGhpcyBpcyB1c2VkIGZvcgorICAg
ICAgICBjb21tZW50ZWQgb3V0IHByb3BlcnRpZXMuCisKKyAgICAgICAgKFdlYkNvcmU6OkNTU1J1
bGVTb3VyY2VEYXRhOjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTUnVsZVNvdXJjZURh
dGE6OmNyZWF0ZVVua25vd24pOgorICAgICAgICAoV2ViQ29yZTo6Q1NTUnVsZVNvdXJjZURhdGE6
OkNTU1J1bGVTb3VyY2VEYXRhKToKKyAgICAgICAgR2V0IHJpZCBvZiB0aGUgQ1NTUnVsZVNvdXJj
ZURhdGEgdHlwZSBlbnVtLCBzaW5jZSBTdHlsZVJ1bGUncyB0eXBlCisgICAgICAgIGVudW0gaXMg
ZXhhY3RseSB0aGUgc2FtZS4KKworICAgICAgICAqIGNzcy9wYXJzZXIvQ1NTUGFyc2VyLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkNTU1BhcnNlckNvbnRleHQ6OkNTU1BhcnNlckNvbnRleHQpOgor
ICAgICAgICAoV2ViQ29yZTo6Q1NTUGFyc2VyOjpwYXJzZVNoZWV0Rm9ySW5zcGVjdG9yKToKKyAg
ICAgICAgKFdlYkNvcmU6OkNTU1BhcnNlcjo6cGFyc2VEZWNsYXJhdGlvbkZvckluc3BlY3Rvcik6
CisgICAgICAgIChXZWJDb3JlOjpDU1NQYXJzZXI6Om1hcmtTdXBwb3J0c1J1bGVIZWFkZXJTdGFy
dCk6CisgICAgICAgIChXZWJDb3JlOjpDU1NQYXJzZXI6Om1hcmtSdWxlSGVhZGVyU3RhcnQpOgor
ICAgICAgICAoV2ViQ29yZTo6Q1NTUGFyc2VyOjptYXJrUHJvcGVydHlFbmQpOgorICAgICAgICAq
IGNzcy9wYXJzZXIvQ1NTUGFyc2VyLmg6CisgICAgICAgIEFkZCBmdW5jdGlvbnMgdGhhdCByZXBy
ZXNlbnQgdGhlIG5ldyBBUEkgZm9yIGluc3BlY3RvciBzaGVldAorICAgICAgICBhbmQgZGVjbGFy
YXRpb24gcGFyc2luZy4gUGF0Y2ggdGhlIG9sZCBwYXJzZSBjb2RlIHRvIHVzZSBTdHlsZVJ1bGU6
OlR5cGUKKyAgICAgICAgbm93IHRoYXQgdGhlIENTU1J1bGVTb3VyY2VEYXRhIHR5cGUgaXMgZ29u
ZS4KKworICAgICAgICAqIGNzcy9wYXJzZXIvQ1NTUGFyc2VyT2JzZXJ2ZXIuaDoKKyAgICAgICAg
VHdlYWsgdGhlIEFQSSBmb3Igb3VyIG1lbW9yeSBtYW5hZ2VtZW50LgorCisgICAgICAgICogaW5z
cGVjdG9yL0luc3BlY3RvclN0eWxlU2hlZXQuY3BwOgorICAgICAgICAoZmxhdHRlblNvdXJjZURh
dGEpOgorICAgICAgICAoV2ViQ29yZTo6cGFyc2VyQ29udGV4dEZvckRvY3VtZW50KToKKyAgICAg
ICAgKFdlYkNvcmU6OlN0eWxlU2hlZXRIYW5kbGVyOjpTdHlsZVNoZWV0SGFuZGxlcik6CisgICAg
ICAgIChXZWJDb3JlOjpTdHlsZVNoZWV0SGFuZGxlcjo6c3RhcnRSdWxlSGVhZGVyKToKKyAgICAg
ICAgKFdlYkNvcmU6OlN0eWxlU2hlZXRIYW5kbGVyOjpzZXRSdWxlSGVhZGVyRW5kKToKKyAgICAg
ICAgKFdlYkNvcmU6OlN0eWxlU2hlZXRIYW5kbGVyOjplbmRSdWxlSGVhZGVyKToKKyAgICAgICAg
KFdlYkNvcmU6OlN0eWxlU2hlZXRIYW5kbGVyOjpvYnNlcnZlU2VsZWN0b3IpOgorICAgICAgICAo
V2ViQ29yZTo6U3R5bGVTaGVldEhhbmRsZXI6OnN0YXJ0UnVsZUJvZHkpOgorICAgICAgICAoV2Vi
Q29yZTo6U3R5bGVTaGVldEhhbmRsZXI6OmVuZFJ1bGVCb2R5KToKKyAgICAgICAgKFdlYkNvcmU6
OlN0eWxlU2hlZXRIYW5kbGVyOjpwb3BSdWxlRGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpmaXhV
bnBhcnNlZFByb3BlcnRpZXMpOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGVTaGVldEhhbmRsZXI6
OmZpeFVucGFyc2VkUHJvcGVydHlSYW5nZXMpOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGVTaGVl
dEhhbmRsZXI6Om9ic2VydmVQcm9wZXJ0eSk6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZVNoZWV0
SGFuZGxlcjo6b2JzZXJ2ZUNvbW1lbnQpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yU3R5
bGU6OnBvcHVsYXRlQWxsUHJvcGVydGllcyk6CisgICAgICAgIChXZWJDb3JlOjppc1ZhbGlkU2Vs
ZWN0b3JMaXN0U3RyaW5nKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvclN0eWxlU2hlZXQ6
OmVuc3VyZVNvdXJjZURhdGEpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yU3R5bGVTaGVl
dEZvcklubGluZVN0eWxlOjplbnN1cmVQYXJzZWREYXRhUmVhZHkpOgorICAgICAgICAoV2ViQ29y
ZTo6SW5zcGVjdG9yU3R5bGVTaGVldEZvcklubGluZVN0eWxlOjpydWxlU291cmNlRGF0YSk6Cisg
ICAgICAgIChXZWJDb3JlOjpjcmVhdGVDU1NQYXJzZXIpOiBEZWxldGVkLgorICAgICAgICAoV2Vi
Q29yZTo6SW5zcGVjdG9yU3R5bGVTaGVldEZvcklubGluZVN0eWxlOjpnZXRTdHlsZUF0dHJpYnV0
ZVJhbmdlcyk6IERlbGV0ZWQuCisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvclN0eWxlU2hl
ZXQuaDoKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvclN0eWxlUHJvcGVydHk6OnNldFJhd1Rl
eHRGcm9tU3R5bGVEZWNsYXJhdGlvbik6CisgICAgICAgIEFkZCB0aGUgbmV3IGltcGxlbWVudGF0
aW9uLiBUaGlzIGludm9sdmVzIGR1cGxpY2F0aW5nIG1vc3Qgb2YgdGhlIG9sZAorICAgICAgICBw
YXJzZXIgY29kZSBmb3IgdGhpcyBpbnRvIGEgbmV3IGNsYXNzLCBTdHlsZVNoZWV0SGFuZGxlciwg
dGhhdCBpbXBsZW1lbnRzCisgICAgICAgIHRoZSBvYnNlcnZlciBpbnRlcmZhY2UgYW5kIGJ1aWxk
cyB1cCB0aGUgc2FtZSBkYXRhIHN0cnVjdHVyZXMgYXMgdGhlIG9sZAorICAgICAgICBwYXJzZXIg
ZGlkIGluIHJlc3BvbnNlIHRvIHRoZSBjYWxsYmFja3MuCisKIDIwMTYtMTEtMTcgIFphbGFuIEJ1
anRhcyAgPHphbGFuQGFwcGxlLmNvbT4KIAogICAgICAgICBSZW5kZXIgdHJlZSBzaG91bGQgYmUg
YWxsIGNsZWFuIGJ5IHRoZSBlbmQgb2YgRnJhbWVWaWV3OjpsYXlvdXQoKS4KSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL2Nzcy9DU1NHcmFtbWFyLnkuaW4KPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvY3NzL0NTU0dyYW1tYXIueS5pbgkocmV2aXNpb24gMjA4ODQ2KQorKysgU291cmNlL1dlYkNv
cmUvY3NzL0NTU0dyYW1tYXIueS5pbgkod29ya2luZyBjb3B5KQpAQCAtNTE2LDcgKzUxNiw3IEBA
IGF0X2ltcG9ydF9oZWFkZXJfZW5kX21heWJlX3NwYWNlOgogCiBiZWZvcmVfaW1wb3J0X3J1bGU6
CiAgICAgLyogZW1wdHkgKi8gewotICAgICAgICBwYXJzZXItPm1hcmtSdWxlSGVhZGVyU3RhcnQo
Q1NTUnVsZVNvdXJjZURhdGE6OklNUE9SVF9SVUxFKTsKKyAgICAgICAgcGFyc2VyLT5tYXJrUnVs
ZUhlYWRlclN0YXJ0KFN0eWxlUnVsZTo6SW1wb3J0KTsKICAgICB9CiAgICAgOwogCkBAIC02NTQs
NyArNjU0LDcgQEAgYXRfcnVsZV9ib2R5X3N0YXJ0OgogCiBiZWZvcmVfbWVkaWFfcnVsZToKICAg
ICAvKiBlbXB0eSAqLyB7Ci0gICAgICAgIHBhcnNlci0+bWFya1J1bGVIZWFkZXJTdGFydChDU1NS
dWxlU291cmNlRGF0YTo6TUVESUFfUlVMRSk7CisgICAgICAgIHBhcnNlci0+bWFya1J1bGVIZWFk
ZXJTdGFydChTdHlsZVJ1bGU6Ok1lZGlhKTsKICAgICB9CiAgICAgOwogCkBAIC02OTksNyArNjk5
LDcgQEAgc3VwcG9ydHNfZXJyb3I6IAogCiBiZWZvcmVfc3VwcG9ydHNfcnVsZToKICAgICAvKiBl
bXB0eSAqLyB7Ci0gICAgICAgIHBhcnNlci0+bWFya1J1bGVIZWFkZXJTdGFydChDU1NSdWxlU291
cmNlRGF0YTo6U1VQUE9SVFNfUlVMRSk7CisgICAgICAgIHBhcnNlci0+bWFya1J1bGVIZWFkZXJT
dGFydChTdHlsZVJ1bGU6OlN1cHBvcnRzKTsKICAgICAgICAgcGFyc2VyLT5tYXJrU3VwcG9ydHNS
dWxlSGVhZGVyU3RhcnQoKTsKICAgICB9CiAgICAgOwpAQCAtNzY3LDcgKzc2Nyw3IEBAIHN1cHBv
cnRzX2RlY2xhcmF0aW9uX2NvbmRpdGlvbjoKIAogYmVmb3JlX2tleWZyYW1lc19ydWxlOgogICAg
IC8qIGVtcHR5ICovIHsKLSAgICAgICAgcGFyc2VyLT5tYXJrUnVsZUhlYWRlclN0YXJ0KENTU1J1
bGVTb3VyY2VEYXRhOjpLRVlGUkFNRVNfUlVMRSk7CisgICAgICAgIHBhcnNlci0+bWFya1J1bGVI
ZWFkZXJTdGFydChTdHlsZVJ1bGU6OktleWZyYW1lKTsKICAgICB9CiAgICAgOwogCkBAIC04Mjks
NyArODI5LDcgQEAga2V5OgogCiBiZWZvcmVfcGFnZV9ydWxlOgogICAgIC8qIGVtcHR5ICovIHsK
LSAgICAgICAgcGFyc2VyLT5tYXJrUnVsZUhlYWRlclN0YXJ0KENTU1J1bGVTb3VyY2VEYXRhOjpQ
QUdFX1JVTEUpOworICAgICAgICBwYXJzZXItPm1hcmtSdWxlSGVhZGVyU3RhcnQoU3R5bGVSdWxl
OjpQYWdlKTsKICAgICB9CiAgICAgOwogCkBAIC05NDIsNyArOTQyLDcgQEAgbWFyZ2luX3N5bToK
IAogYmVmb3JlX2ZvbnRfZmFjZV9ydWxlOgogICAgIC8qIGVtcHR5ICovIHsKLSAgICAgICAgcGFy
c2VyLT5tYXJrUnVsZUhlYWRlclN0YXJ0KENTU1J1bGVTb3VyY2VEYXRhOjpGT05UX0ZBQ0VfUlVM
RSk7CisgICAgICAgIHBhcnNlci0+bWFya1J1bGVIZWFkZXJTdGFydChTdHlsZVJ1bGU6OkZvbnRG
YWNlKTsKICAgICB9CiAgICAgOwogCkBAIC05OTEsNyArOTkxLDcgQEAgdmlld3BvcnQ6CiAKIGJl
Zm9yZV9yZWdpb25fcnVsZToKICAgICAvKiBlbXB0eSAqLyB7Ci0gICAgICAgIHBhcnNlci0+bWFy
a1J1bGVIZWFkZXJTdGFydChDU1NSdWxlU291cmNlRGF0YTo6UkVHSU9OX1JVTEUpOworICAgICAg
ICBwYXJzZXItPm1hcmtSdWxlSGVhZGVyU3RhcnQoU3R5bGVSdWxlOjpSZWdpb24pOwogICAgIH0K
ICAgICA7CiAKQEAgLTEwMjQsNyArMTAyNCw3IEBAIG1heWJlX3NwYWNlX2JlZm9yZV9kZWNsYXJh
dGlvbjogbWF5YmVfc3AKIAogYmVmb3JlX3NlbGVjdG9yX2xpc3Q6CiAgICAgewotICAgICAgICBw
YXJzZXItPm1hcmtSdWxlSGVhZGVyU3RhcnQoQ1NTUnVsZVNvdXJjZURhdGE6OlNUWUxFX1JVTEUp
OworICAgICAgICBwYXJzZXItPm1hcmtSdWxlSGVhZGVyU3RhcnQoU3R5bGVSdWxlOjpTdHlsZSk7
CiAgICAgICAgIHBhcnNlci0+bWFya1NlbGVjdG9yU3RhcnQoKTsKICAgICB9CiAgIDsKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQcm9wZXJ0eVNvdXJjZURhdGEuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQcm9wZXJ0eVNvdXJjZURhdGEuY3BwCShyZXZpc2lv
biAyMDg4NDYpCisrKyBTb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUHJvcGVydHlTb3VyY2VEYXRhLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtNTUsMTAgKzU1LDExIEBAIHVuc2lnbmVkIFNvdXJjZVJhbmdl
OjpsZW5ndGgoKSBjb25zdAogICAgIHJldHVybiBlbmQgLSBzdGFydDsKIH0KIAotQ1NTUHJvcGVy
dHlTb3VyY2VEYXRhOjpDU1NQcm9wZXJ0eVNvdXJjZURhdGEoY29uc3QgU3RyaW5nJiBuYW1lLCBj
b25zdCBTdHJpbmcmIHZhbHVlLCBib29sIGltcG9ydGFudCwgYm9vbCBwYXJzZWRPaywgY29uc3Qg
U291cmNlUmFuZ2UmIHJhbmdlKQorQ1NTUHJvcGVydHlTb3VyY2VEYXRhOjpDU1NQcm9wZXJ0eVNv
dXJjZURhdGEoY29uc3QgU3RyaW5nJiBuYW1lLCBjb25zdCBTdHJpbmcmIHZhbHVlLCBib29sIGlt
cG9ydGFudCwgYm9vbCBkaXNhYmxlZCwgYm9vbCBwYXJzZWRPaywgY29uc3QgU291cmNlUmFuZ2Um
IHJhbmdlKQogICAgIDogbmFtZShuYW1lKQogICAgICwgdmFsdWUodmFsdWUpCiAgICAgLCBpbXBv
cnRhbnQoaW1wb3J0YW50KQorICAgICwgZGlzYWJsZWQoZGlzYWJsZWQpCiAgICAgLCBwYXJzZWRP
ayhwYXJzZWRPaykKICAgICAsIHJhbmdlKHJhbmdlKQogewpAQCAtNjgsNiArNjksNyBAQCBDU1NQ
cm9wZXJ0eVNvdXJjZURhdGE6OkNTU1Byb3BlcnR5U291cmNlCiAgICAgOiBuYW1lKG90aGVyLm5h
bWUpCiAgICAgLCB2YWx1ZShvdGhlci52YWx1ZSkKICAgICAsIGltcG9ydGFudChvdGhlci5pbXBv
cnRhbnQpCisgICAgLCBkaXNhYmxlZChvdGhlci5kaXNhYmxlZCkKICAgICAsIHBhcnNlZE9rKG90
aGVyLnBhcnNlZE9rKQogICAgICwgcmFuZ2Uob3RoZXIucmFuZ2UpCiB7CkBAIC03Nyw2ICs3OSw3
IEBAIENTU1Byb3BlcnR5U291cmNlRGF0YTo6Q1NTUHJvcGVydHlTb3VyY2UKICAgICA6IG5hbWUo
ZW1wdHlTdHJpbmcoKSkKICAgICAsIHZhbHVlKGVtcHR5U3RyaW5nKCkpCiAgICAgLCBpbXBvcnRh
bnQoZmFsc2UpCisgICAgLCBkaXNhYmxlZChmYWxzZSkKICAgICAsIHBhcnNlZE9rKGZhbHNlKQog
ICAgICwgcmFuZ2UoU291cmNlUmFuZ2UoMCwgMCkpCiB7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9j
c3MvQ1NTUHJvcGVydHlTb3VyY2VEYXRhLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
Y3NzL0NTU1Byb3BlcnR5U291cmNlRGF0YS5oCShyZXZpc2lvbiAyMDg4NDYpCisrKyBTb3VyY2Uv
V2ViQ29yZS9jc3MvQ1NTUHJvcGVydHlTb3VyY2VEYXRhLmgJKHdvcmtpbmcgY29weSkKQEAgLTMw
LDYgKzMwLDcgQEAKIAogI3ByYWdtYSBvbmNlCiAKKyNpbmNsdWRlICJTdHlsZVJ1bGUuaCIKICNp
bmNsdWRlIDx1dGlsaXR5PgogI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CiAjaW5jbHVkZSA8d3Rm
L0hhc2hNYXAuaD4KQEAgLTUxLDcgKzUyLDcgQEAgc3RydWN0IFNvdXJjZVJhbmdlIHsKIH07CiAK
IHN0cnVjdCBDU1NQcm9wZXJ0eVNvdXJjZURhdGEgewotICAgIENTU1Byb3BlcnR5U291cmNlRGF0
YShjb25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0IFN0cmluZyYgdmFsdWUsIGJvb2wgaW1wb3J0YW50
LCBib29sIHBhcnNlZE9rLCBjb25zdCBTb3VyY2VSYW5nZSYgcmFuZ2UpOworICAgIENTU1Byb3Bl
cnR5U291cmNlRGF0YShjb25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0IFN0cmluZyYgdmFsdWUsIGJv
b2wgaW1wb3J0YW50LCBib29sIGRpc2FibGVkLCBib29sIHBhcnNlZE9rLCBjb25zdCBTb3VyY2VS
YW5nZSYpOwogICAgIENTU1Byb3BlcnR5U291cmNlRGF0YShjb25zdCBDU1NQcm9wZXJ0eVNvdXJj
ZURhdGEmIG90aGVyKTsKICAgICBDU1NQcm9wZXJ0eVNvdXJjZURhdGEoKTsKIApAQCAtNjEsNiAr
NjIsNyBAQCBzdHJ1Y3QgQ1NTUHJvcGVydHlTb3VyY2VEYXRhIHsKICAgICBTdHJpbmcgbmFtZTsK
ICAgICBTdHJpbmcgdmFsdWU7CiAgICAgYm9vbCBpbXBvcnRhbnQ7CisgICAgYm9vbCBkaXNhYmxl
ZDsKICAgICBib29sIHBhcnNlZE9rOwogICAgIFNvdXJjZVJhbmdlIHJhbmdlOwogfTsKQEAgLTc5
LDM4ICs4MSwyNCBAQCB0eXBlZGVmIFZlY3RvcjxSZWY8Q1NTUnVsZVNvdXJjZURhdGE+PiBSCiB0
eXBlZGVmIFZlY3RvcjxTb3VyY2VSYW5nZT4gU2VsZWN0b3JSYW5nZUxpc3Q7CiAKIHN0cnVjdCBD
U1NSdWxlU291cmNlRGF0YSA6IHB1YmxpYyBSZWZDb3VudGVkPENTU1J1bGVTb3VyY2VEYXRhPiB7
Ci0gICAgZW51bSBUeXBlIHsKLSAgICAgICAgVU5LTk9XTl9SVUxFLAotICAgICAgICBTVFlMRV9S
VUxFLAotICAgICAgICBJTVBPUlRfUlVMRSwKLSAgICAgICAgTUVESUFfUlVMRSwKLSAgICAgICAg
Rk9OVF9GQUNFX1JVTEUsCi0gICAgICAgIFBBR0VfUlVMRSwKLSAgICAgICAgS0VZRlJBTUVTX1JV
TEUsCi0gICAgICAgIFJFR0lPTl9SVUxFLAotICAgICAgICBIT1NUX1JVTEUsCi0gICAgICAgIFZJ
RVdQT1JUX1JVTEUsCi0gICAgICAgIFNVUFBPUlRTX1JVTEUsCi0gICAgfTsKLQotICAgIHN0YXRp
YyBSZWY8Q1NTUnVsZVNvdXJjZURhdGE+IGNyZWF0ZShUeXBlIHR5cGUpCisgICAgc3RhdGljIFJl
ZjxDU1NSdWxlU291cmNlRGF0YT4gY3JlYXRlKFN0eWxlUnVsZTo6VHlwZSB0eXBlKQogICAgIHsK
ICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgQ1NTUnVsZVNvdXJjZURhdGEodHlwZSkpOwog
ICAgIH0KIAogICAgIHN0YXRpYyBSZWY8Q1NTUnVsZVNvdXJjZURhdGE+IGNyZWF0ZVVua25vd24o
KQogICAgIHsKLSAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgQ1NTUnVsZVNvdXJjZURhdGEo
VU5LTk9XTl9SVUxFKSk7CisgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IENTU1J1bGVTb3Vy
Y2VEYXRhKFN0eWxlUnVsZTo6VW5rbm93bikpOwogICAgIH0KIAotICAgIENTU1J1bGVTb3VyY2VE
YXRhKFR5cGUgdHlwZSkKKyAgICBDU1NSdWxlU291cmNlRGF0YShTdHlsZVJ1bGU6OlR5cGUgdHlw
ZSkKICAgICAgICAgOiB0eXBlKHR5cGUpCiAgICAgewotICAgICAgICBpZiAodHlwZSA9PSBTVFlM
RV9SVUxFIHx8IHR5cGUgPT0gRk9OVF9GQUNFX1JVTEUgfHwgdHlwZSA9PSBQQUdFX1JVTEUpCisg
ICAgICAgIGlmICh0eXBlID09IFN0eWxlUnVsZTo6U3R5bGUgfHwgdHlwZSA9PSBTdHlsZVJ1bGU6
OkZvbnRGYWNlIHx8IHR5cGUgPT0gU3R5bGVSdWxlOjpQYWdlKQogICAgICAgICAgICAgc3R5bGVT
b3VyY2VEYXRhID0gQ1NTU3R5bGVTb3VyY2VEYXRhOjpjcmVhdGUoKTsKICAgICB9CiAKLSAgICBU
eXBlIHR5cGU7CisgICAgU3R5bGVSdWxlOjpUeXBlIHR5cGU7CiAKICAgICAvLyBSYW5nZSBvZiB0
aGUgc2VsZWN0b3IgbGlzdCBpbiB0aGUgZW5jbG9zaW5nIHNvdXJjZS4KICAgICBTb3VyY2VSYW5n
ZSBydWxlSGVhZGVyUmFuZ2U7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9jc3MvcGFyc2VyL0NTU1Bh
cnNlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvY3NzL3BhcnNlci9DU1NQYXJz
ZXIuY3BwCShyZXZpc2lvbiAyMDg4NDcpCisrKyBTb3VyY2UvV2ViQ29yZS9jc3MvcGFyc2VyL0NT
U1BhcnNlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTU4LDYgKzU4LDcgQEAKICNpbmNsdWRlICJD
U1NQYWdlUnVsZS5oIgogI2luY2x1ZGUgIkNTU1BhcnNlckZhc3RQYXRocy5oIgogI2luY2x1ZGUg
IkNTU1BhcnNlckltcGwuaCIKKyNpbmNsdWRlICJDU1NQYXJzZXJPYnNlcnZlci5oIgogI2luY2x1
ZGUgIkNTU1BlbmRpbmdTdWJzdGl0dXRpb25WYWx1ZS5oIgogI2luY2x1ZGUgIkNTU1ByaW1pdGl2
ZVZhbHVlLmgiCiAjaW5jbHVkZSAiQ1NTUHJpbWl0aXZlVmFsdWVNYXBwaW5ncy5oIgpAQCAtMzky
LDYgKzM5MywxMSBAQCB2b2lkIENTU1BhcnNlcjo6cGFyc2VTaGVldChTdHlsZVNoZWV0Q29uCiAg
ICAgbV9sb2dFcnJvcnMgPSBmYWxzZTsKIH0KIAordm9pZCBDU1NQYXJzZXI6OnBhcnNlU2hlZXRG
b3JJbnNwZWN0b3IoY29uc3QgQ1NTUGFyc2VyQ29udGV4dCYgY29udGV4dCwgU3R5bGVTaGVldENv
bnRlbnRzKiBzaGVldCwgY29uc3QgU3RyaW5nJiBzdHJpbmcsIENTU1BhcnNlck9ic2VydmVyJiBv
YnNlcnZlcikKK3sKKyAgICByZXR1cm4gQ1NTUGFyc2VySW1wbDo6cGFyc2VTdHlsZVNoZWV0Rm9y
SW5zcGVjdG9yKHN0cmluZywgY29udGV4dCwgc2hlZXQsIG9ic2VydmVyKTsKK30KKwogUmVmUHRy
PFN0eWxlUnVsZUJhc2U+IENTU1BhcnNlcjo6cGFyc2VSdWxlKFN0eWxlU2hlZXRDb250ZW50cyog
c2hlZXQsIGNvbnN0IFN0cmluZyYgc3RyaW5nKQogewogICAgIGlmIChtX2NvbnRleHQudXNlTmV3
UGFyc2VyICYmIG1fY29udGV4dC5tb2RlICE9IFVBU2hlZXRNb2RlKQpAQCAtMTUxNSw2ICsxNTIx
LDExIEBAIGJvb2wgQ1NTUGFyc2VyOjpwYXJzZURlY2xhcmF0aW9uKE11dGFibGUKICAgICByZXR1
cm4gb2s7CiB9CiAKK3ZvaWQgQ1NTUGFyc2VyOjpwYXJzZURlY2xhcmF0aW9uRm9ySW5zcGVjdG9y
KGNvbnN0IENTU1BhcnNlckNvbnRleHQmIGNvbnRleHQsIGNvbnN0IFN0cmluZyYgc3RyaW5nLCBD
U1NQYXJzZXJPYnNlcnZlciYgb2JzZXJ2ZXIpCit7CisgICAgQ1NTUGFyc2VySW1wbDo6cGFyc2VE
ZWNsYXJhdGlvbkxpc3RGb3JJbnNwZWN0b3Ioc3RyaW5nLCBjb250ZXh0LCBvYnNlcnZlcik7Cit9
CisKIHN0YXRpYyBpbmxpbmUgdm9pZCBmaWx0ZXJQcm9wZXJ0aWVzKGJvb2wgaW1wb3J0YW50LCBj
b25zdCBQYXJzZWRQcm9wZXJ0eVZlY3RvciYgaW5wdXQsIFZlY3RvcjxDU1NQcm9wZXJ0eSwgMjU2
PiYgb3V0cHV0LCBzaXplX3QmIHVudXNlZEVudHJpZXMsIHN0ZDo6Yml0c2V0PG51bUNTU1Byb3Bl
cnRpZXM+JiBzZWVuUHJvcGVydGllcywgSGFzaFNldDxBdG9taWNTdHJpbmc+JiBzZWVuQ3VzdG9t
UHJvcGVydGllcykKIHsKICAgICAvLyBBZGQgcHJvcGVydGllcyBpbiByZXZlcnNlIG9yZGVyIHNv
IHRoYXQgaGlnaGVzdCBwcmlvcml0eSBkZWZpbml0aW9ucyBhcmUgcmVhY2hlZCBmaXJzdC4gRHVw
bGljYXRlIGRlZmluaXRpb25zIGNhbiB0aGVuIGJlIGlnbm9yZWQgd2hlbiBmb3VuZC4KQEAgLTEy
OTI1LDcgKzEyOTM2LDcgQEAgdm9pZCBDU1NQYXJzZXI6Om1hcmtTdXBwb3J0c1J1bGVIZWFkZXJT
dAogICAgIGlmICghbV9zdXBwb3J0c1J1bGVEYXRhU3RhY2spCiAgICAgICAgIG1fc3VwcG9ydHNS
dWxlRGF0YVN0YWNrID0gc3RkOjptYWtlX3VuaXF1ZTxSdWxlU291cmNlRGF0YUxpc3Q+KCk7CiAK
LSAgICBhdXRvIGRhdGEgPSBDU1NSdWxlU291cmNlRGF0YTo6Y3JlYXRlKENTU1J1bGVTb3VyY2VE
YXRhOjpTVVBQT1JUU19SVUxFKTsKKyAgICBhdXRvIGRhdGEgPSBDU1NSdWxlU291cmNlRGF0YTo6
Y3JlYXRlKFN0eWxlUnVsZTo6U3VwcG9ydHMpOwogICAgIGRhdGEtPnJ1bGVIZWFkZXJSYW5nZS5z
dGFydCA9IHRva2VuU3RhcnRPZmZzZXQoKTsKICAgICBtX3N1cHBvcnRzUnVsZURhdGFTdGFjay0+
YXBwZW5kKFdURk1vdmUoZGF0YSkpOwogfQpAQCAtMTMzMjUsNyArMTMzMzYsNyBAQCB2b2lkIENT
U1BhcnNlcjo6Zml4VW5wYXJzZWRQcm9wZXJ0eVJhbmdlCiAgICAgZml4VW5wYXJzZWRQcm9wZXJ0
aWVzPFVDaGFyPihtX2RhdGFTdGFydDE2LmdldCgpICsgbV9wYXJzZWRUZXh0UHJlZml4TGVuZ3Ro
LCBydWxlRGF0YSk7CiB9CiAKLXZvaWQgQ1NTUGFyc2VyOjptYXJrUnVsZUhlYWRlclN0YXJ0KENT
U1J1bGVTb3VyY2VEYXRhOjpUeXBlIHJ1bGVUeXBlKQordm9pZCBDU1NQYXJzZXI6Om1hcmtSdWxl
SGVhZGVyU3RhcnQoU3R5bGVSdWxlOjpUeXBlIHJ1bGVUeXBlKQogewogICAgIGlmICghaXNFeHRy
YWN0aW5nU291cmNlRGF0YSgpKQogICAgICAgICByZXR1cm47CkBAIC0xMzQ1MCw3ICsxMzQ2MSw3
IEBAIHZvaWQgQ1NTUGFyc2VyOjptYXJrUHJvcGVydHlFbmQoYm9vbCBpc0kKICAgICAgICAgLy8g
VGhlIHByb3BlcnR5IHJhbmdlIGlzIHJlbGF0aXZlIHRvIHRoZSBkZWNsYXJhdGlvbiBzdGFydCBv
ZmZzZXQuCiAgICAgICAgIFNvdXJjZVJhbmdlJiB0b3BSdWxlQm9keVJhbmdlID0gbV9jdXJyZW50
UnVsZURhdGFTdGFjay0+bGFzdCgpLT5ydWxlQm9keVJhbmdlOwogICAgICAgICBtX2N1cnJlbnRS
dWxlRGF0YVN0YWNrLT5sYXN0KCktPnN0eWxlU291cmNlRGF0YS0+cHJvcGVydHlEYXRhLmFwcGVu
ZCgKLSAgICAgICAgICAgIENTU1Byb3BlcnR5U291cmNlRGF0YShuYW1lLCB2YWx1ZSwgaXNJbXBv
cnRhbnRGb3VuZCwgaXNQcm9wZXJ0eVBhcnNlZCwgU291cmNlUmFuZ2Uoc3RhcnQgLSB0b3BSdWxl
Qm9keVJhbmdlLnN0YXJ0LCBlbmQgLSB0b3BSdWxlQm9keVJhbmdlLnN0YXJ0KSkpOworICAgICAg
ICAgICAgQ1NTUHJvcGVydHlTb3VyY2VEYXRhKG5hbWUsIHZhbHVlLCBpc0ltcG9ydGFudEZvdW5k
LCBmYWxzZSwgaXNQcm9wZXJ0eVBhcnNlZCwgU291cmNlUmFuZ2Uoc3RhcnQgLSB0b3BSdWxlQm9k
eVJhbmdlLnN0YXJ0LCBlbmQgLSB0b3BSdWxlQm9keVJhbmdlLnN0YXJ0KSkpOwogICAgIH0KICAg
ICByZXNldFByb3BlcnR5UmFuZ2UoKTsKIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2Nzcy9wYXJz
ZXIvQ1NTUGFyc2VyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvY3NzL3BhcnNlci9D
U1NQYXJzZXIuaAkocmV2aXNpb24gMjA4ODQ3KQorKysgU291cmNlL1dlYkNvcmUvY3NzL3BhcnNl
ci9DU1NQYXJzZXIuaAkod29ya2luZyBjb3B5KQpAQCAtNTAsNiArNTAsNyBAQCBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiBjbGFzcyBBbmltYXRpb25QYXJzZUNvbnRleHQ7CiBjbGFzcyBDU1NCb3JkZXJJ
bWFnZVNsaWNlVmFsdWU7CiBjbGFzcyBDU1NDb250ZW50RGlzdHJpYnV0aW9uVmFsdWU7CitjbGFz
cyBDU1NQYXJzZXJPYnNlcnZlcjsKIGNsYXNzIENTU1ByaW1pdGl2ZVZhbHVlOwogY2xhc3MgQ1NT
U2VsZWN0b3JMaXN0OwogY2xhc3MgQ1NTVmFsdWU7CkBAIC0xMzIsNiArMTMzLDkgQEAgcHVibGlj
OgogICAgIFJlZlB0cjxTdHlsZUtleWZyYW1lPiBwYXJzZUtleWZyYW1lUnVsZShTdHlsZVNoZWV0
Q29udGVudHMqLCBjb25zdCBTdHJpbmcmKTsKICAgICBib29sIHBhcnNlU3VwcG9ydHNDb25kaXRp
b24oY29uc3QgU3RyaW5nJik7CiAKKyAgICBzdGF0aWMgdm9pZCBwYXJzZVNoZWV0Rm9ySW5zcGVj
dG9yKGNvbnN0IENTU1BhcnNlckNvbnRleHQmLCBTdHlsZVNoZWV0Q29udGVudHMqLCBjb25zdCBT
dHJpbmcmLCBDU1NQYXJzZXJPYnNlcnZlciYpOworICAgIHN0YXRpYyB2b2lkIHBhcnNlRGVjbGFy
YXRpb25Gb3JJbnNwZWN0b3IoY29uc3QgQ1NTUGFyc2VyQ29udGV4dCYsIGNvbnN0IFN0cmluZyYs
IENTU1BhcnNlck9ic2VydmVyJik7CisKICAgICBzdGF0aWMgUGFyc2VSZXN1bHQgcGFyc2VWYWx1
ZShNdXRhYmxlU3R5bGVQcm9wZXJ0aWVzJiwgQ1NTUHJvcGVydHlJRCwgY29uc3QgU3RyaW5nJiwg
Ym9vbCBpbXBvcnRhbnQsIGNvbnN0IENTU1BhcnNlckNvbnRleHQmLCBTdHlsZVNoZWV0Q29udGVu
dHMqKTsKICAgICBzdGF0aWMgUGFyc2VSZXN1bHQgcGFyc2VDdXN0b21Qcm9wZXJ0eVZhbHVlKE11
dGFibGVTdHlsZVByb3BlcnRpZXMmLCBjb25zdCBBdG9taWNTdHJpbmcmIHByb3BlcnR5TmFtZSwg
Y29uc3QgU3RyaW5nJiwgYm9vbCBpbXBvcnRhbnQsIGNvbnN0IENTU1BhcnNlckNvbnRleHQmLCBT
dHlsZVNoZWV0Q29udGVudHMqIGNvbnRleHRTdHlsZVNoZWV0KTsKIApAQCAtMTQxLDYgKzE0NSw3
IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgUmVmUHRyPENTU1ZhbHVlTGlzdD4gcGFyc2VGb250RmFj
ZVZhbHVlKGNvbnN0IEF0b21pY1N0cmluZyYpOwogICAgIFJlZlB0cjxDU1NQcmltaXRpdmVWYWx1
ZT4gcGFyc2VWYWxpZFByaW1pdGl2ZShDU1NWYWx1ZUlEIGlkZW50LCBWYWx1ZVdpdGhDYWxjdWxh
dGlvbiYpOwogCisgICAgLy8gRklYTUUtTkVXUEFSU0VSOiBDYW4gcmVtb3ZlIHRoZSBsYXN0IHR3
byBhcmd1bWVudHMgb25jZSB0aGUgbmV3IHBhcnNlciBpcyB0dXJuZWQgb24uCiAgICAgV0VCQ09S
RV9FWFBPUlQgYm9vbCBwYXJzZURlY2xhcmF0aW9uKE11dGFibGVTdHlsZVByb3BlcnRpZXMmLCBj
b25zdCBTdHJpbmcmLCBSZWZQdHI8Q1NTUnVsZVNvdXJjZURhdGE+JiYsIFN0eWxlU2hlZXRDb250
ZW50cyogY29udGV4dFN0eWxlU2hlZXQpOwogICAgIHN0YXRpYyBSZWY8SW1tdXRhYmxlU3R5bGVQ
cm9wZXJ0aWVzPiBwYXJzZUlubGluZVN0eWxlRGVjbGFyYXRpb24oY29uc3QgU3RyaW5nJiwgRWxl
bWVudCopOwogCkBAIC00NTYsNyArNDYxLDcgQEAgcHVibGljOgogICAgIFJ1bGVTb3VyY2VEYXRh
TGlzdCogbV9ydWxlU291cmNlRGF0YVJlc3VsdCB7IG51bGxwdHIgfTsKIAogICAgIHZvaWQgZml4
VW5wYXJzZWRQcm9wZXJ0eVJhbmdlcyhDU1NSdWxlU291cmNlRGF0YSYpOwotICAgIHZvaWQgbWFy
a1J1bGVIZWFkZXJTdGFydChDU1NSdWxlU291cmNlRGF0YTo6VHlwZSk7CisgICAgdm9pZCBtYXJr
UnVsZUhlYWRlclN0YXJ0KFN0eWxlUnVsZTo6VHlwZSk7CiAgICAgdm9pZCBtYXJrUnVsZUhlYWRl
ckVuZCgpOwogCiAgICAgdm9pZCBzdGFydE5lc3RlZFNlbGVjdG9yTGlzdCgpIHsgKyttX25lc3Rl
ZFNlbGVjdG9yTGV2ZWw7IH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2Nzcy9wYXJzZXIvQ1NTUGFy
c2VyT2JzZXJ2ZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9jc3MvcGFyc2VyL0NT
U1BhcnNlck9ic2VydmVyLmgJKHJldmlzaW9uIDIwODg0NikKKysrIFNvdXJjZS9XZWJDb3JlL2Nz
cy9wYXJzZXIvQ1NTUGFyc2VyT2JzZXJ2ZXIuaAkod29ya2luZyBjb3B5KQpAQCAtNDIsMTEgKzQy
LDYgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBlbmRSdWxlQm9keSh1bnNpZ25lZCBvZmZz
ZXQpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgb2JzZXJ2ZVByb3BlcnR5KHVuc2lnbmVkIHN0YXJ0
T2Zmc2V0LCB1bnNpZ25lZCBlbmRPZmZzZXQsIGJvb2wgaXNJbXBvcnRhbnQsIGJvb2wgaXNQYXJz
ZWQpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgb2JzZXJ2ZUNvbW1lbnQodW5zaWduZWQgc3RhcnRP
ZmZzZXQsIHVuc2lnbmVkIGVuZE9mZnNldCkgPSAwOwotICAgIC8vIEZJWE1FOiBVbnVzZWQsIHNo
b3VsZCBiZSByZW1vdmVkCi0gICAgdmlydHVhbCB2b2lkIHN0YXJ0TWVkaWFRdWVyeUV4cCh1bnNp
Z25lZCBvZmZzZXQpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgZW5kTWVkaWFRdWVyeUV4cCh1bnNp
Z25lZCBvZmZzZXQpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgc3RhcnRNZWRpYVF1ZXJ5KCkgPSAw
OwotICAgIHZpcnR1YWwgdm9pZCBlbmRNZWRpYVF1ZXJ5KCkgPSAwOwogfTsKIAogfSAvLyBuYW1l
c3BhY2UgV2ViQ29yZQpJbmRleDogU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclN0
eWxlU2hlZXQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNw
ZWN0b3JTdHlsZVNoZWV0LmNwcAkocmV2aXNpb24gMjA4ODQ2KQorKysgU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL0luc3BlY3RvclN0eWxlU2hlZXQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yOSw2
ICsyOSw3IEBACiAjaW5jbHVkZSAiQ1NTS2V5ZnJhbWVzUnVsZS5oIgogI2luY2x1ZGUgIkNTU01l
ZGlhUnVsZS5oIgogI2luY2x1ZGUgIkNTU1BhcnNlci5oIgorI2luY2x1ZGUgIkNTU1BhcnNlck9i
c2VydmVyLmgiCiAjaW5jbHVkZSAiQ1NTUHJvcGVydHlOYW1lcy5oIgogI2luY2x1ZGUgIkNTU1By
b3BlcnR5U291cmNlRGF0YS5oIgogI2luY2x1ZGUgIkNTU1J1bGUuaCIKQEAgLTEwMCwxMSArMTAx
LDExIEBAIHZvaWQgUGFyc2VkU3R5bGVTaGVldDo6c2V0VGV4dChjb25zdCBTdHIKIHN0YXRpYyB2
b2lkIGZsYXR0ZW5Tb3VyY2VEYXRhKFJ1bGVTb3VyY2VEYXRhTGlzdCYgZGF0YUxpc3QsIFJ1bGVT
b3VyY2VEYXRhTGlzdCYgdGFyZ2V0KQogewogICAgIGZvciAoYXV0byYgZGF0YSA6IGRhdGFMaXN0
KSB7Ci0gICAgICAgIGlmIChkYXRhLT50eXBlID09IENTU1J1bGVTb3VyY2VEYXRhOjpTVFlMRV9S
VUxFKQorICAgICAgICBpZiAoZGF0YS0+dHlwZSA9PSBXZWJDb3JlOjpTdHlsZVJ1bGU6OlN0eWxl
KQogICAgICAgICAgICAgdGFyZ2V0LmFwcGVuZChkYXRhLmNvcHlSZWYoKSk7Ci0gICAgICAgIGVs
c2UgaWYgKGRhdGEtPnR5cGUgPT0gQ1NTUnVsZVNvdXJjZURhdGE6Ok1FRElBX1JVTEUpCisgICAg
ICAgIGVsc2UgaWYgKGRhdGEtPnR5cGUgPT0gV2ViQ29yZTo6U3R5bGVSdWxlOjpNZWRpYSkKICAg
ICAgICAgICAgIGZsYXR0ZW5Tb3VyY2VEYXRhKGRhdGEtPmNoaWxkUnVsZXMsIHRhcmdldCk7Ci0g
ICAgICAgIGVsc2UgaWYgKGRhdGEtPnR5cGUgPT0gQ1NTUnVsZVNvdXJjZURhdGE6OlNVUFBPUlRT
X1JVTEUpCisgICAgICAgIGVsc2UgaWYgKGRhdGEtPnR5cGUgPT0gV2ViQ29yZTo6U3R5bGVSdWxl
OjpTdXBwb3J0cykKICAgICAgICAgICAgIGZsYXR0ZW5Tb3VyY2VEYXRhKGRhdGEtPmNoaWxkUnVs
ZXMsIHRhcmdldCk7CiAgICAgfQogfQpAQCAtMTM2LDYgKzEzNywyNDcgQEAgdXNpbmcgbmFtZXNw
YWNlIEluc3BlY3RvcjsKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCitzdGF0aWMgQ1NTUGFyc2Vy
Q29udGV4dCBwYXJzZXJDb250ZXh0Rm9yRG9jdW1lbnQoRG9jdW1lbnQqIGRvY3VtZW50KQorewor
ICAgIHJldHVybiBkb2N1bWVudCA/IENTU1BhcnNlckNvbnRleHQoKmRvY3VtZW50KSA6IHN0cmlj
dENTU1BhcnNlckNvbnRleHQoKTsKK30KKworY2xhc3MgU3R5bGVTaGVldEhhbmRsZXIgOiBwdWJs
aWMgQ1NTUGFyc2VyT2JzZXJ2ZXIgeworcHVibGljOgorICAgIFN0eWxlU2hlZXRIYW5kbGVyKGNv
bnN0IFN0cmluZyYgcGFyc2VkVGV4dCwgRG9jdW1lbnQqIGRvY3VtZW50LCBSdWxlU291cmNlRGF0
YUxpc3QqIHJlc3VsdCkKKyAgICAgICAgOiBtX3BhcnNlZFRleHQocGFyc2VkVGV4dCkKKyAgICAg
ICAgLCBtX2RvY3VtZW50KGRvY3VtZW50KQorICAgICAgICAsIG1fcnVsZVNvdXJjZURhdGFSZXN1
bHQocmVzdWx0KQorICAgIHsKKyAgICAgICAgQVNTRVJUKG1fcnVsZVNvdXJjZURhdGFSZXN1bHQp
OworICAgIH0KKyAgICAKK3ByaXZhdGU6CisgICAgdm9pZCBzdGFydFJ1bGVIZWFkZXIoU3R5bGVS
dWxlOjpUeXBlLCB1bnNpZ25lZCkgb3ZlcnJpZGU7CisgICAgdm9pZCBlbmRSdWxlSGVhZGVyKHVu
c2lnbmVkKSBvdmVycmlkZTsKKyAgICB2b2lkIG9ic2VydmVTZWxlY3Rvcih1bnNpZ25lZCBzdGFy
dE9mZnNldCwgdW5zaWduZWQgZW5kT2Zmc2V0KSBvdmVycmlkZTsKKyAgICB2b2lkIHN0YXJ0UnVs
ZUJvZHkodW5zaWduZWQpIG92ZXJyaWRlOworICAgIHZvaWQgZW5kUnVsZUJvZHkodW5zaWduZWQp
IG92ZXJyaWRlOworICAgIHZvaWQgb2JzZXJ2ZVByb3BlcnR5KHVuc2lnbmVkIHN0YXJ0T2Zmc2V0
LCB1bnNpZ25lZCBlbmRPZmZzZXQsIGJvb2wgaXNJbXBvcnRhbnQsIGJvb2wgaXNQYXJzZWQpIG92
ZXJyaWRlOworICAgIHZvaWQgb2JzZXJ2ZUNvbW1lbnQodW5zaWduZWQgc3RhcnRPZmZzZXQsIHVu
c2lnbmVkIGVuZE9mZnNldCkgb3ZlcnJpZGU7CisgICAgCisgICAgUmVmPENTU1J1bGVTb3VyY2VE
YXRhPiBwb3BSdWxlRGF0YSgpOworICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBDaGFyYWN0ZXJUeXBl
PiBpbmxpbmUgdm9pZCBzZXRSdWxlSGVhZGVyRW5kKGNvbnN0IENoYXJhY3RlclR5cGUqLCB1bnNp
Z25lZCk7CisgICAgdm9pZCBmaXhVbnBhcnNlZFByb3BlcnR5UmFuZ2VzKENTU1J1bGVTb3VyY2VE
YXRhKik7CisgICAgCisgICAgY29uc3QgU3RyaW5nJiBtX3BhcnNlZFRleHQ7CisgICAgRG9jdW1l
bnQqIG1fZG9jdW1lbnQ7CisgICAgCisgICAgUnVsZVNvdXJjZURhdGFMaXN0IG1fY3VycmVudFJ1
bGVEYXRhU3RhY2s7CisgICAgUmVmUHRyPENTU1J1bGVTb3VyY2VEYXRhPiBtX2N1cnJlbnRSdWxl
RGF0YTsKKyAgICBSdWxlU291cmNlRGF0YUxpc3QqIG1fcnVsZVNvdXJjZURhdGFSZXN1bHQgeyBu
dWxscHRyIH07Cit9OworCit2b2lkIFN0eWxlU2hlZXRIYW5kbGVyOjpzdGFydFJ1bGVIZWFkZXIo
U3R5bGVSdWxlOjpUeXBlIHR5cGUsIHVuc2lnbmVkIG9mZnNldCkKK3sKKyAgICAvLyBQb3Agb2Zm
IGRhdGEgZm9yIGEgcHJldmlvdXMgaW52YWxpZCBydWxlLgorICAgIGlmIChtX2N1cnJlbnRSdWxl
RGF0YSkKKyAgICAgICAgbV9jdXJyZW50UnVsZURhdGFTdGFjay5yZW1vdmVMYXN0KCk7CisgICAg
CisgICAgYXV0byBkYXRhID0gQ1NTUnVsZVNvdXJjZURhdGE6OmNyZWF0ZSh0eXBlKTsKKyAgICBk
YXRhLT5ydWxlSGVhZGVyUmFuZ2Uuc3RhcnQgPSBvZmZzZXQ7CisgICAgbV9jdXJyZW50UnVsZURh
dGEgPSBkYXRhLmNvcHlSZWYoKTsKKyAgICBtX2N1cnJlbnRSdWxlRGF0YVN0YWNrLmFwcGVuZChX
VEZNb3ZlKGRhdGEpKTsKK30KKwordGVtcGxhdGUgPHR5cGVuYW1lIENoYXJhY3RlclR5cGU+IGlu
bGluZSB2b2lkIFN0eWxlU2hlZXRIYW5kbGVyOjpzZXRSdWxlSGVhZGVyRW5kKGNvbnN0IENoYXJh
Y3RlclR5cGUqIGRhdGFTdGFydCwgdW5zaWduZWQgbGlzdEVuZE9mZnNldCkKK3sKKyAgICB3aGls
ZSAobGlzdEVuZE9mZnNldCA+IDEpIHsKKyAgICAgICAgaWYgKGlzSFRNTFNwYWNlPENoYXJhY3Rl
clR5cGU+KCooZGF0YVN0YXJ0ICsgbGlzdEVuZE9mZnNldCAtIDEpKSkKKyAgICAgICAgICAgIC0t
bGlzdEVuZE9mZnNldDsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgYnJlYWs7CisgICAgfQor
CisgICAgbV9jdXJyZW50UnVsZURhdGFTdGFjay5sYXN0KCktPnJ1bGVIZWFkZXJSYW5nZS5lbmQg
PSBsaXN0RW5kT2Zmc2V0OworICAgIGlmICghbV9jdXJyZW50UnVsZURhdGFTdGFjay5sYXN0KCkt
PnNlbGVjdG9yUmFuZ2VzLmlzRW1wdHkoKSkKKyAgICAgICAgbV9jdXJyZW50UnVsZURhdGFTdGFj
ay5sYXN0KCktPnNlbGVjdG9yUmFuZ2VzLmxhc3QoKS5lbmQgPSBsaXN0RW5kT2Zmc2V0OworfQor
Cit2b2lkIFN0eWxlU2hlZXRIYW5kbGVyOjplbmRSdWxlSGVhZGVyKHVuc2lnbmVkIG9mZnNldCkK
K3sKKyAgICBBU1NFUlQoIW1fY3VycmVudFJ1bGVEYXRhU3RhY2suaXNFbXB0eSgpKTsKKyAgICAK
KyAgICBpZiAobV9wYXJzZWRUZXh0LmlzOEJpdCgpKQorICAgICAgICBzZXRSdWxlSGVhZGVyRW5k
PExDaGFyPihtX3BhcnNlZFRleHQuY2hhcmFjdGVyczgoKSwgb2Zmc2V0KTsKKyAgICBlbHNlCisg
ICAgICAgIHNldFJ1bGVIZWFkZXJFbmQ8VUNoYXI+KG1fcGFyc2VkVGV4dC5jaGFyYWN0ZXJzMTYo
KSwgb2Zmc2V0KTsKK30KKwordm9pZCBTdHlsZVNoZWV0SGFuZGxlcjo6b2JzZXJ2ZVNlbGVjdG9y
KHVuc2lnbmVkIHN0YXJ0T2Zmc2V0LCB1bnNpZ25lZCBlbmRPZmZzZXQpCit7CisgICAgQVNTRVJU
KG1fY3VycmVudFJ1bGVEYXRhU3RhY2suc2l6ZSgpKTsKKyAgICBtX2N1cnJlbnRSdWxlRGF0YVN0
YWNrLmxhc3QoKS0+c2VsZWN0b3JSYW5nZXMuYXBwZW5kKFNvdXJjZVJhbmdlKHN0YXJ0T2Zmc2V0
LCBlbmRPZmZzZXQpKTsKK30KKwordm9pZCBTdHlsZVNoZWV0SGFuZGxlcjo6c3RhcnRSdWxlQm9k
eSh1bnNpZ25lZCBvZmZzZXQpCit7CisgICAgbV9jdXJyZW50UnVsZURhdGEgPSBudWxscHRyOwor
ICAgIEFTU0VSVCghbV9jdXJyZW50UnVsZURhdGFTdGFjay5pc0VtcHR5KCkpOworICAgIAorICAg
IC8vIFNraXAgdGhlIHJ1bGUgYm9keSBvcGVuaW5nIGJyYWNlLgorICAgIGlmIChtX3BhcnNlZFRl
eHRbb2Zmc2V0XSA9PSAneycpCisgICAgICAgICsrb2Zmc2V0OworCisgICAgbV9jdXJyZW50UnVs
ZURhdGFTdGFjay5sYXN0KCktPnJ1bGVCb2R5UmFuZ2Uuc3RhcnQgPSBvZmZzZXQ7Cit9CisKK3Zv
aWQgU3R5bGVTaGVldEhhbmRsZXI6OmVuZFJ1bGVCb2R5KHVuc2lnbmVkIG9mZnNldCkKK3sKKyAg
ICBBU1NFUlQoIW1fY3VycmVudFJ1bGVEYXRhU3RhY2suaXNFbXB0eSgpKTsKKyAgICBtX2N1cnJl
bnRSdWxlRGF0YVN0YWNrLmxhc3QoKS0+cnVsZUJvZHlSYW5nZS5lbmQgPSBvZmZzZXQ7CisgICAg
YXV0byBydWxlID0gcG9wUnVsZURhdGEoKTsKKyAgICBmaXhVbnBhcnNlZFByb3BlcnR5UmFuZ2Vz
KHJ1bGUucHRyKCkpOworICAgIGlmIChtX2N1cnJlbnRSdWxlRGF0YVN0YWNrLmlzRW1wdHkoKSkK
KyAgICAgICAgbV9ydWxlU291cmNlRGF0YVJlc3VsdC0+YXBwZW5kKFdURk1vdmUocnVsZSkpOwor
ICAgIGVsc2UKKyAgICAgICAgbV9jdXJyZW50UnVsZURhdGFTdGFjay5sYXN0KCktPmNoaWxkUnVs
ZXMuYXBwZW5kKFdURk1vdmUocnVsZSkpOworfQorCitSZWY8Q1NTUnVsZVNvdXJjZURhdGE+IFN0
eWxlU2hlZXRIYW5kbGVyOjpwb3BSdWxlRGF0YSgpCit7CisgICAgQVNTRVJUKCFtX2N1cnJlbnRS
dWxlRGF0YVN0YWNrLmlzRW1wdHkoKSk7CisgICAgbV9jdXJyZW50UnVsZURhdGEgPSBudWxscHRy
OworICAgIGF1dG8gZGF0YSA9IFdURk1vdmUobV9jdXJyZW50UnVsZURhdGFTdGFjay5sYXN0KCkp
OworICAgIG1fY3VycmVudFJ1bGVEYXRhU3RhY2sucmVtb3ZlTGFzdCgpOworICAgIHJldHVybiBk
YXRhOworfQorCit0ZW1wbGF0ZSA8dHlwZW5hbWUgQ2hhcmFjdGVyVHlwZT4KK3N0YXRpYyBpbmxp
bmUgdm9pZCBmaXhVbnBhcnNlZFByb3BlcnRpZXMoY29uc3QgQ2hhcmFjdGVyVHlwZSogY2hhcmFj
dGVycywgQ1NTUnVsZVNvdXJjZURhdGEqIHJ1bGVEYXRhKQoreworICAgIFZlY3RvcjxDU1NQcm9w
ZXJ0eVNvdXJjZURhdGE+JiBwcm9wZXJ0eURhdGEgPSBydWxlRGF0YS0+c3R5bGVTb3VyY2VEYXRh
LT5wcm9wZXJ0eURhdGE7CisgICAgdW5zaWduZWQgc2l6ZSA9IHByb3BlcnR5RGF0YS5zaXplKCk7
CisgICAgaWYgKCFzaXplKQorICAgICAgICByZXR1cm47CisgICAgCisgICAgdW5zaWduZWQgc3R5
bGVTdGFydCA9IHJ1bGVEYXRhLT5ydWxlQm9keVJhbmdlLnN0YXJ0OworICAgIAorICAgIENTU1By
b3BlcnR5U291cmNlRGF0YSogbmV4dERhdGEgPSAmKHByb3BlcnR5RGF0YS5hdCgwKSk7CisgICAg
Zm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IHNpemU7ICsraSkgeworICAgICAgICBDU1NQcm9wZXJ0
eVNvdXJjZURhdGEqIGN1cnJlbnREYXRhID0gbmV4dERhdGE7CisgICAgICAgIG5leHREYXRhID0g
aSA8IHNpemUgLSAxID8gJihwcm9wZXJ0eURhdGEuYXQoaSArIDEpKSA6IG51bGxwdHI7CisgICAg
ICAgIAorICAgICAgICBpZiAoY3VycmVudERhdGEtPnBhcnNlZE9rKQorICAgICAgICAgICAgY29u
dGludWU7CisgICAgICAgIGlmIChjdXJyZW50RGF0YS0+cmFuZ2UuZW5kID4gMCAmJiBjaGFyYWN0
ZXJzW3N0eWxlU3RhcnQgKyBjdXJyZW50RGF0YS0+cmFuZ2UuZW5kIC0gMV0gPT0gJzsnKQorICAg
ICAgICAgICAgY29udGludWU7CisgICAgICAgIAorICAgICAgICB1bnNpZ25lZCBwcm9wZXJ0eUVu
ZDsKKyAgICAgICAgaWYgKCFuZXh0RGF0YSkKKyAgICAgICAgICAgIHByb3BlcnR5RW5kID0gcnVs
ZURhdGEtPnJ1bGVCb2R5UmFuZ2UuZW5kIC0gMTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAg
cHJvcGVydHlFbmQgPSBzdHlsZVN0YXJ0ICsgbmV4dERhdGEtPnJhbmdlLnN0YXJ0IC0gMTsKKyAg
ICAgICAgCisgICAgICAgIHdoaWxlIChpc0hUTUxTcGFjZTxDaGFyYWN0ZXJUeXBlPihjaGFyYWN0
ZXJzW3Byb3BlcnR5RW5kXSkpCisgICAgICAgICAgICAtLXByb3BlcnR5RW5kOworICAgICAgICAK
KyAgICAgICAgLy8gcHJvcGVydHlFbmQgcG9pbnRzIGF0IHRoZSBsYXN0IHByb3BlcnR5IHRleHQg
Y2hhcmFjdGVyLgorICAgICAgICB1bnNpZ25lZCBuZXdQcm9wZXJ0eUVuZCA9IHByb3BlcnR5RW5k
ICsgc3R5bGVTdGFydCArIDE7CisgICAgICAgIGlmIChjdXJyZW50RGF0YS0+cmFuZ2UuZW5kICE9
IG5ld1Byb3BlcnR5RW5kKSB7CisgICAgICAgICAgICBjdXJyZW50RGF0YS0+cmFuZ2UuZW5kID0g
bmV3UHJvcGVydHlFbmQ7CisgICAgICAgICAgICB1bnNpZ25lZCB2YWx1ZVN0YXJ0ID0gc3R5bGVT
dGFydCArIGN1cnJlbnREYXRhLT5yYW5nZS5zdGFydCArIGN1cnJlbnREYXRhLT5uYW1lLmxlbmd0
aCgpOworICAgICAgICAgICAgd2hpbGUgKHZhbHVlU3RhcnQgPCBwcm9wZXJ0eUVuZCAmJiBjaGFy
YWN0ZXJzW3ZhbHVlU3RhcnRdICE9ICc6JykKKyAgICAgICAgICAgICAgICArK3ZhbHVlU3RhcnQ7
CisgICAgICAgICAgICAKKyAgICAgICAgICAgIC8vIFNoaWZ0IHBhc3QgdGhlICc6Jy4KKyAgICAg
ICAgICAgIGlmICh2YWx1ZVN0YXJ0IDwgcHJvcGVydHlFbmQpCisgICAgICAgICAgICAgICAgKyt2
YWx1ZVN0YXJ0OworCisgICAgICAgICAgICB3aGlsZSAodmFsdWVTdGFydCA8IHByb3BlcnR5RW5k
ICYmIGlzSFRNTFNwYWNlPENoYXJhY3RlclR5cGU+KGNoYXJhY3RlcnNbdmFsdWVTdGFydF0pKQor
ICAgICAgICAgICAgICAgICsrdmFsdWVTdGFydDsKKyAgICAgICAgICAgIAorICAgICAgICAgICAg
Ly8gTmVlZCB0byBleGNsdWRlIHRoZSB0cmFpbGluZyAnOycgZnJvbSB0aGUgcHJvcGVydHkgdmFs
dWUuCisgICAgICAgICAgICBjdXJyZW50RGF0YS0+dmFsdWUgPSBTdHJpbmcoY2hhcmFjdGVycyAr
IHZhbHVlU3RhcnQsIHByb3BlcnR5RW5kIC0gdmFsdWVTdGFydCArIChjaGFyYWN0ZXJzW3Byb3Bl
cnR5RW5kXSA9PSAnOycgPyAwIDogMSkpOworICAgICAgICB9CisgICAgfQorfQorCit2b2lkIFN0
eWxlU2hlZXRIYW5kbGVyOjpmaXhVbnBhcnNlZFByb3BlcnR5UmFuZ2VzKENTU1J1bGVTb3VyY2VE
YXRhKiBydWxlRGF0YSkKK3sKKyAgICBpZiAoIXJ1bGVEYXRhLT5zdHlsZVNvdXJjZURhdGEpCisg
ICAgICAgIHJldHVybjsKKyAgICAKKyAgICBpZiAobV9wYXJzZWRUZXh0LmlzOEJpdCgpKSB7Cisg
ICAgICAgIGZpeFVucGFyc2VkUHJvcGVydGllczxMQ2hhcj4obV9wYXJzZWRUZXh0LmNoYXJhY3Rl
cnM4KCksIHJ1bGVEYXRhKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICAKKyAgICBmaXhV
bnBhcnNlZFByb3BlcnRpZXM8VUNoYXI+KG1fcGFyc2VkVGV4dC5jaGFyYWN0ZXJzMTYoKSwgcnVs
ZURhdGEpOworfQorCit2b2lkIFN0eWxlU2hlZXRIYW5kbGVyOjpvYnNlcnZlUHJvcGVydHkodW5z
aWduZWQgc3RhcnRPZmZzZXQsIHVuc2lnbmVkIGVuZE9mZnNldCwgYm9vbCBpc0ltcG9ydGFudCwg
Ym9vbCBpc1BhcnNlZCkKK3sKKyAgICBpZiAobV9jdXJyZW50UnVsZURhdGFTdGFjay5pc0VtcHR5
KCkgfHwgIW1fY3VycmVudFJ1bGVEYXRhU3RhY2subGFzdCgpLT5zdHlsZVNvdXJjZURhdGEpCisg
ICAgICAgIHJldHVybjsKKyAgICAKKyAgICBBU1NFUlQoZW5kT2Zmc2V0IDw9IG1fcGFyc2VkVGV4
dC5sZW5ndGgoKSk7CisgICAgCisgICAgLy8gSW5jbHVkZSBzZW1pY29sb24gaW4gdGhlIHByb3Bl
cnR5IHRleHQuCisgICAgaWYgKGVuZE9mZnNldCA8IG1fcGFyc2VkVGV4dC5sZW5ndGgoKSAmJiBt
X3BhcnNlZFRleHRbZW5kT2Zmc2V0XSA9PSAnOycpCisgICAgICAgICsrZW5kT2Zmc2V0OworICAg
IAorICAgIEFTU0VSVChzdGFydE9mZnNldCA8IGVuZE9mZnNldCk7CisgICAgU3RyaW5nIHByb3Bl
cnR5U3RyaW5nID0gbV9wYXJzZWRUZXh0LnN1YnN0cmluZyhzdGFydE9mZnNldCwgZW5kT2Zmc2V0
IC0gc3RhcnRPZmZzZXQpLnN0cmlwV2hpdGVTcGFjZSgpOworICAgIGlmIChwcm9wZXJ0eVN0cmlu
Zy5lbmRzV2l0aCgnOycpKQorICAgICAgICBwcm9wZXJ0eVN0cmluZyA9IHByb3BlcnR5U3RyaW5n
LmxlZnQocHJvcGVydHlTdHJpbmcubGVuZ3RoKCkgLSAxKTsKKyAgICBzaXplX3QgY29sb25JbmRl
eCA9IHByb3BlcnR5U3RyaW5nLmZpbmQoJzonKTsKKyAgICBBU1NFUlQoY29sb25JbmRleCAhPSBu
b3RGb3VuZCk7CisKKyAgICBTdHJpbmcgbmFtZSA9IHByb3BlcnR5U3RyaW5nLmxlZnQoY29sb25J
bmRleCkuc3RyaXBXaGl0ZVNwYWNlKCk7CisgICAgU3RyaW5nIHZhbHVlID0gcHJvcGVydHlTdHJp
bmcuc3Vic3RyaW5nKGNvbG9uSW5kZXggKyAxLCBwcm9wZXJ0eVN0cmluZy5sZW5ndGgoKSkuc3Ry
aXBXaGl0ZVNwYWNlKCk7CisgICAgCisgICAgLy8gRklYTUUtTkVXUEFSU0VSOiBUaGUgcHJvcGVy
dHkgcmFuZ2UgaXMgcmVsYXRpdmUgdG8gdGhlIGRlY2xhcmF0aW9uIHN0YXJ0IG9mZnNldCwgYnV0
IG5vCisgICAgLy8gZ29vZCByZWFzb24gZm9yIGl0LCBhbmQgaXQgY29tcGxpY2F0ZXMgZml4VW5w
YXJzZWRQcm9wZXJ0aWVzLgorICAgIFNvdXJjZVJhbmdlJiB0b3BSdWxlQm9keVJhbmdlID0gbV9j
dXJyZW50UnVsZURhdGFTdGFjay5sYXN0KCktPnJ1bGVCb2R5UmFuZ2U7CisgICAgbV9jdXJyZW50
UnVsZURhdGFTdGFjay5sYXN0KCktPnN0eWxlU291cmNlRGF0YS0+cHJvcGVydHlEYXRhLmFwcGVu
ZChDU1NQcm9wZXJ0eVNvdXJjZURhdGEobmFtZSwgdmFsdWUsIGlzSW1wb3J0YW50LCBmYWxzZSwg
aXNQYXJzZWQsIFNvdXJjZVJhbmdlKHN0YXJ0T2Zmc2V0IC0gdG9wUnVsZUJvZHlSYW5nZS5zdGFy
dCwgZW5kT2Zmc2V0IC0gdG9wUnVsZUJvZHlSYW5nZS5zdGFydCkpKTsKK30KKwordm9pZCBTdHls
ZVNoZWV0SGFuZGxlcjo6b2JzZXJ2ZUNvbW1lbnQodW5zaWduZWQgc3RhcnRPZmZzZXQsIHVuc2ln
bmVkIGVuZE9mZnNldCkKK3sKKyAgICBBU1NFUlQoZW5kT2Zmc2V0IDw9IG1fcGFyc2VkVGV4dC5s
ZW5ndGgoKSk7CisKKyAgICBpZiAobV9jdXJyZW50UnVsZURhdGFTdGFjay5pc0VtcHR5KCkgfHwg
IW1fY3VycmVudFJ1bGVEYXRhU3RhY2subGFzdCgpLT5ydWxlSGVhZGVyUmFuZ2UuZW5kIHx8ICFt
X2N1cnJlbnRSdWxlRGF0YVN0YWNrLmxhc3QoKS0+c3R5bGVTb3VyY2VEYXRhKQorICAgICAgICBy
ZXR1cm47CisgICAgCisgICAgLy8gVGhlIGxleGVyIGlzIG5vdCBpbnNpZGUgYSBwcm9wZXJ0eSBB
TkQgaXQgaXMgc2Nhbm5pbmcgYSBkZWNsYXJhdGlvbi1hd2FyZQorICAgIC8vIHJ1bGUgYm9keS4K
KyAgICBTdHJpbmcgY29tbWVudFRleHQgPSBtX3BhcnNlZFRleHQuc3Vic3RyaW5nKHN0YXJ0T2Zm
c2V0LCBlbmRPZmZzZXQgLSBzdGFydE9mZnNldCk7CisgICAgCisgICAgQVNTRVJUKGNvbW1lbnRU
ZXh0LnN0YXJ0c1dpdGgoIi8qIikpOworICAgIGNvbW1lbnRUZXh0ID0gY29tbWVudFRleHQuc3Vi
c3RyaW5nKDIpOworICAgIAorICAgIC8vIFJlcXVpcmUgd2VsbC1mb3JtZWQgY29tbWVudHMuCisg
ICAgaWYgKCFjb21tZW50VGV4dC5lbmRzV2l0aCgiKi8iKSkKKyAgICAgICAgcmV0dXJuOworICAg
IGNvbW1lbnRUZXh0ID0gY29tbWVudFRleHQuc3Vic3RyaW5nKDAsIGNvbW1lbnRUZXh0Lmxlbmd0
aCgpIC0gMikuc3RyaXBXaGl0ZVNwYWNlKCk7CisgICAgaWYgKGNvbW1lbnRUZXh0LmlzRW1wdHko
KSkKKyAgICAgICAgcmV0dXJuOworICAgIAorICAgIC8vIEZJWE1FOiBVc2UgdGhlIGFjdHVhbCBy
dWxlIHR5cGUgcmF0aGVyIHRoYW4gU1RZTEVfUlVMRT8KKyAgICBSdWxlU291cmNlRGF0YUxpc3Qg
c291cmNlRGF0YTsKKyAgICAKKyAgICBTdHlsZVNoZWV0SGFuZGxlciBoYW5kbGVyKGNvbW1lbnRU
ZXh0LCBtX2RvY3VtZW50LCAmc291cmNlRGF0YSk7CisgICAgQ1NTUGFyc2VyOjpwYXJzZURlY2xh
cmF0aW9uRm9ySW5zcGVjdG9yKHBhcnNlckNvbnRleHRGb3JEb2N1bWVudChtX2RvY3VtZW50KSwg
Y29tbWVudFRleHQsIGhhbmRsZXIpOworICAgIFZlY3RvcjxDU1NQcm9wZXJ0eVNvdXJjZURhdGE+
JiBjb21tZW50UHJvcGVydHlEYXRhID0gc291cmNlRGF0YS5maXJzdCgpLT5zdHlsZVNvdXJjZURh
dGEtPnByb3BlcnR5RGF0YTsKKyAgICBpZiAoY29tbWVudFByb3BlcnR5RGF0YS5zaXplKCkgIT0g
MSkKKyAgICAgICAgcmV0dXJuOworICAgIENTU1Byb3BlcnR5U291cmNlRGF0YSYgcHJvcGVydHlE
YXRhID0gY29tbWVudFByb3BlcnR5RGF0YS5hdCgwKTsKKyAgICBib29sIHBhcnNlZE9rID0gcHJv
cGVydHlEYXRhLnBhcnNlZE9rIHx8IHByb3BlcnR5RGF0YS5uYW1lLnN0YXJ0c1dpdGgoIi1tb3ot
IikgfHwgcHJvcGVydHlEYXRhLm5hbWUuc3RhcnRzV2l0aCgiLW8tIikgfHwgcHJvcGVydHlEYXRh
Lm5hbWUuc3RhcnRzV2l0aCgiLXdlYmtpdC0iKSB8fCBwcm9wZXJ0eURhdGEubmFtZS5zdGFydHNX
aXRoKCItbXMtIik7CisgICAgaWYgKCFwYXJzZWRPayB8fCBwcm9wZXJ0eURhdGEucmFuZ2UubGVu
Z3RoKCkgIT0gY29tbWVudFRleHQubGVuZ3RoKCkpCisgICAgICAgIHJldHVybjsKKyAgICAKKyAg
ICAvLyBGSVhNRS1ORVdQQVJTRVI6IFRoZSBwcm9wZXJ0eSByYW5nZSBpcyByZWxhdGl2ZSB0byB0
aGUgZGVjbGFyYXRpb24gc3RhcnQgb2Zmc2V0LCBidXQgbm8KKyAgICAvLyBnb29kIHJlYXNvbiBm
b3IgaXQsIGFuZCBpdCBjb21wbGljYXRlcyBmaXhVbnBhcnNlZFByb3BlcnRpZXMuCisgICAgU291
cmNlUmFuZ2UmIHRvcFJ1bGVCb2R5UmFuZ2UgPSBtX2N1cnJlbnRSdWxlRGF0YVN0YWNrLmxhc3Qo
KS0+cnVsZUJvZHlSYW5nZTsKKyAgICBtX2N1cnJlbnRSdWxlRGF0YVN0YWNrLmxhc3QoKS0+c3R5
bGVTb3VyY2VEYXRhLT5wcm9wZXJ0eURhdGEuYXBwZW5kKENTU1Byb3BlcnR5U291cmNlRGF0YShw
cm9wZXJ0eURhdGEubmFtZSwgcHJvcGVydHlEYXRhLnZhbHVlLCBmYWxzZSwgdHJ1ZSwgdHJ1ZSwg
U291cmNlUmFuZ2Uoc3RhcnRPZmZzZXQgLSB0b3BSdWxlQm9keVJhbmdlLnN0YXJ0LCBlbmRPZmZz
ZXQgLSB0b3BSdWxlQm9keVJhbmdlLnN0YXJ0KSkpOworfQorCiBlbnVtIE1lZGlhTGlzdFNvdXJj
ZSB7CiAgICAgTWVkaWFMaXN0U291cmNlTGlua2VkU2hlZXQsCiAgICAgTWVkaWFMaXN0U291cmNl
SW5saW5lU2hlZXQsCkBAIC0yNzMsMTEgKzUxNSw2IEBAIHN0YXRpYyB2b2lkIGZpbGxNZWRpYUxp
c3RDaGFpbihDU1NSdWxlKiAKICAgICB9CiB9CiAKLXN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8Q1NT
UGFyc2VyPiBjcmVhdGVDU1NQYXJzZXIoRG9jdW1lbnQqIGRvY3VtZW50KQotewotICAgIHJldHVy
biBzdGQ6Om1ha2VfdW5pcXVlPENTU1BhcnNlcj4oZG9jdW1lbnQgPyBDU1NQYXJzZXJDb250ZXh0
KCpkb2N1bWVudCkgOiBzdHJpY3RDU1NQYXJzZXJDb250ZXh0KCkpOwotfQotCiBSZWY8SW5zcGVj
dG9yU3R5bGU+IEluc3BlY3RvclN0eWxlOjpjcmVhdGUoY29uc3QgSW5zcGVjdG9yQ1NTSWQmIHN0
eWxlSWQsIFJlZlB0cjxDU1NTdHlsZURlY2xhcmF0aW9uPiYmIHN0eWxlLCBJbnNwZWN0b3JTdHls
ZVNoZWV0KiBwYXJlbnRTdHlsZVNoZWV0KQogewogICAgIHJldHVybiBhZG9wdFJlZigqbmV3IElu
c3BlY3RvclN0eWxlKHN0eWxlSWQsIFdURk1vdmUoc3R5bGUpLCBwYXJlbnRTdHlsZVNoZWV0KSk7
CkBAIC0zNjMsNyArNjAwLDcgQEAgdm9pZCBJbnNwZWN0b3JTdHlsZTo6cG9wdWxhdGVBbGxQcm9w
ZXJ0aQogICAgICAgICBBU1NFUlQoIXN0eWxlRGVjbGFyYXRpb25PckV4Y2VwdGlvbi5oYXNFeGNl
cHRpb24oKSk7CiAgICAgICAgIFN0cmluZyBzdHlsZURlY2xhcmF0aW9uID0gc3R5bGVEZWNsYXJh
dGlvbk9yRXhjZXB0aW9uLmhhc0V4Y2VwdGlvbigpID8gZW1wdHlTdHJpbmcoKSA6IHN0eWxlRGVj
bGFyYXRpb25PckV4Y2VwdGlvbi5yZWxlYXNlUmV0dXJuVmFsdWUoKTsKICAgICAgICAgZm9yIChh
dXRvJiBzb3VyY2VEYXRhIDogKnNvdXJjZVByb3BlcnR5RGF0YSkgewotICAgICAgICAgICAgSW5z
cGVjdG9yU3R5bGVQcm9wZXJ0eSBwKHNvdXJjZURhdGEsIHRydWUsIGZhbHNlKTsKKyAgICAgICAg
ICAgIEluc3BlY3RvclN0eWxlUHJvcGVydHkgcChzb3VyY2VEYXRhLCB0cnVlLCBzb3VyY2VEYXRh
LmRpc2FibGVkKTsKICAgICAgICAgICAgIHAuc2V0UmF3VGV4dEZyb21TdHlsZURlY2xhcmF0aW9u
KHN0eWxlRGVjbGFyYXRpb24pOwogICAgICAgICAgICAgcmVzdWx0LT5hcHBlbmQocCk7CiAgICAg
ICAgICAgICBzb3VyY2VQcm9wZXJ0eU5hbWVzLmFkZChsb3dlcmNhc2VQcm9wZXJ0eU5hbWUoc291
cmNlRGF0YS5uYW1lKSk7CkBAIC0zNzMsNyArNjEwLDcgQEAgdm9pZCBJbnNwZWN0b3JTdHlsZTo6
cG9wdWxhdGVBbGxQcm9wZXJ0aQogICAgIGZvciAoaW50IGkgPSAwLCBzaXplID0gbV9zdHlsZS0+
bGVuZ3RoKCk7IGkgPCBzaXplOyArK2kpIHsKICAgICAgICAgU3RyaW5nIG5hbWUgPSBtX3N0eWxl
LT5pdGVtKGkpOwogICAgICAgICBpZiAoc291cmNlUHJvcGVydHlOYW1lcy5hZGQobG93ZXJjYXNl
UHJvcGVydHlOYW1lKG5hbWUpKSkKLSAgICAgICAgICAgIHJlc3VsdC0+YXBwZW5kKEluc3BlY3Rv
clN0eWxlUHJvcGVydHkoQ1NTUHJvcGVydHlTb3VyY2VEYXRhKG5hbWUsIG1fc3R5bGUtPmdldFBy
b3BlcnR5VmFsdWUobmFtZSksICFtX3N0eWxlLT5nZXRQcm9wZXJ0eVByaW9yaXR5KG5hbWUpLmlz
RW1wdHkoKSwgdHJ1ZSwgU291cmNlUmFuZ2UoKSksIGZhbHNlLCBmYWxzZSkpOworICAgICAgICAg
ICAgcmVzdWx0LT5hcHBlbmQoSW5zcGVjdG9yU3R5bGVQcm9wZXJ0eShDU1NQcm9wZXJ0eVNvdXJj
ZURhdGEobmFtZSwgbV9zdHlsZS0+Z2V0UHJvcGVydHlWYWx1ZShuYW1lKSwgIW1fc3R5bGUtPmdl
dFByb3BlcnR5UHJpb3JpdHkobmFtZSkuaXNFbXB0eSgpLCBmYWxzZSwgdHJ1ZSwgU291cmNlUmFu
Z2UoKSksIGZhbHNlLCBmYWxzZSkpOwogICAgIH0KIH0KIApAQCAtNjM1LDcgKzg3Miw4IEBAIEV4
Y2VwdGlvbk9yPFN0cmluZz4gSW5zcGVjdG9yU3R5bGVTaGVldDoKIHN0YXRpYyBib29sIGlzVmFs
aWRTZWxlY3Rvckxpc3RTdHJpbmcoY29uc3QgU3RyaW5nJiBzZWxlY3RvciwgRG9jdW1lbnQqIGRv
Y3VtZW50KQogewogICAgIENTU1NlbGVjdG9yTGlzdCBzZWxlY3Rvckxpc3Q7Ci0gICAgY3JlYXRl
Q1NTUGFyc2VyKGRvY3VtZW50KS0+cGFyc2VTZWxlY3RvcihzZWxlY3Rvciwgc2VsZWN0b3JMaXN0
KTsKKyAgICBDU1NQYXJzZXIgcGFyc2VyKHBhcnNlckNvbnRleHRGb3JEb2N1bWVudChkb2N1bWVu
dCkpOworICAgIHBhcnNlci5wYXJzZVNlbGVjdG9yKHNlbGVjdG9yLCBzZWxlY3Rvckxpc3QpOwog
ICAgIHJldHVybiBzZWxlY3Rvckxpc3QuaXNWYWxpZCgpOwogfQogCkBAIC0xMDg5LDcgKzEzMjcs
MTMgQEAgYm9vbCBJbnNwZWN0b3JTdHlsZVNoZWV0OjplbnN1cmVTb3VyY2VEYQogCiAgICAgUmVm
UHRyPFN0eWxlU2hlZXRDb250ZW50cz4gbmV3U3R5bGVTaGVldCA9IFN0eWxlU2hlZXRDb250ZW50
czo6Y3JlYXRlKCk7CiAgICAgYXV0byBydWxlU291cmNlRGF0YVJlc3VsdCA9IHN0ZDo6bWFrZV91
bmlxdWU8UnVsZVNvdXJjZURhdGFMaXN0PigpOwotICAgIGNyZWF0ZUNTU1BhcnNlcihtX3BhZ2VT
dHlsZVNoZWV0LT5vd25lckRvY3VtZW50KCkpLT5wYXJzZVNoZWV0KG5ld1N0eWxlU2hlZXQuZ2V0
KCksIG1fcGFyc2VkU3R5bGVTaGVldC0+dGV4dCgpLCBUZXh0UG9zaXRpb24oKSwgcnVsZVNvdXJj
ZURhdGFSZXN1bHQuZ2V0KCksIGZhbHNlKTsKKyAgICAKKyAgICBDU1NQYXJzZXJDb250ZXh0IGNv
bnRleHQocGFyc2VyQ29udGV4dEZvckRvY3VtZW50KG1fcGFnZVN0eWxlU2hlZXQtPm93bmVyRG9j
dW1lbnQoKSkpOworICAgIGlmIChjb250ZXh0LnVzZU5ld1BhcnNlcikgeworICAgICAgICBTdHls
ZVNoZWV0SGFuZGxlciBoYW5kbGVyKG1fcGFyc2VkU3R5bGVTaGVldC0+dGV4dCgpLCBtX3BhZ2VT
dHlsZVNoZWV0LT5vd25lckRvY3VtZW50KCksIHJ1bGVTb3VyY2VEYXRhUmVzdWx0LmdldCgpKTsK
KyAgICAgICAgQ1NTUGFyc2VyOjpwYXJzZVNoZWV0Rm9ySW5zcGVjdG9yKGNvbnRleHQsIG5ld1N0
eWxlU2hlZXQuZ2V0KCksIG1fcGFyc2VkU3R5bGVTaGVldC0+dGV4dCgpLCBoYW5kbGVyKTsKKyAg
ICB9IGVsc2UKKyAgICAgICAgQ1NTUGFyc2VyKGNvbnRleHQpLnBhcnNlU2hlZXQobmV3U3R5bGVT
aGVldC5nZXQoKSwgbV9wYXJzZWRTdHlsZVNoZWV0LT50ZXh0KCksIFRleHRQb3NpdGlvbigpLCBy
dWxlU291cmNlRGF0YVJlc3VsdC5nZXQoKSwgZmFsc2UpOwogICAgIG1fcGFyc2VkU3R5bGVTaGVl
dC0+c2V0U291cmNlRGF0YShXVEZNb3ZlKHJ1bGVTb3VyY2VEYXRhUmVzdWx0KSk7CiAgICAgcmV0
dXJuIG1fcGFyc2VkU3R5bGVTaGVldC0+aGFzU291cmNlRGF0YSgpOwogfQpAQCAtMTI5NSwxMSAr
MTUzOSwxMCBAQCBib29sIEluc3BlY3RvclN0eWxlU2hlZXRGb3JJbmxpbmVTdHlsZTo6CiAgICAg
aWYgKG1fcnVsZVNvdXJjZURhdGEpCiAgICAgICAgIHJldHVybiB0cnVlOwogCi0gICAgbV9ydWxl
U291cmNlRGF0YSA9IENTU1J1bGVTb3VyY2VEYXRhOjpjcmVhdGUoQ1NTUnVsZVNvdXJjZURhdGE6
OlNUWUxFX1JVTEUpOwotICAgIGJvb2wgc3VjY2VzcyA9IGdldFN0eWxlQXR0cmlidXRlUmFuZ2Vz
KG1fcnVsZVNvdXJjZURhdGEuZ2V0KCkpOwotICAgIGlmICghc3VjY2VzcykKKyAgICBpZiAoIW1f
ZWxlbWVudC0+aXNTdHlsZWRFbGVtZW50KCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAorICAg
IG1fcnVsZVNvdXJjZURhdGEgPSBydWxlU291cmNlRGF0YSgpOwogICAgIHJldHVybiB0cnVlOwog
fQogCkBAIC0xMzE5LDIwICsxNTYyLDI3IEBAIGNvbnN0IFN0cmluZyYgSW5zcGVjdG9yU3R5bGVT
aGVldEZvcklubGkKICAgICByZXR1cm4gbV9lbGVtZW50LT5nZXRBdHRyaWJ1dGUoInN0eWxlIiku
c3RyaW5nKCk7CiB9CiAKLWJvb2wgSW5zcGVjdG9yU3R5bGVTaGVldEZvcklubGluZVN0eWxlOjpn
ZXRTdHlsZUF0dHJpYnV0ZVJhbmdlcyhDU1NSdWxlU291cmNlRGF0YSogcmVzdWx0KSBjb25zdAor
UmVmPENTU1J1bGVTb3VyY2VEYXRhPiBJbnNwZWN0b3JTdHlsZVNoZWV0Rm9ySW5saW5lU3R5bGU6
OnJ1bGVTb3VyY2VEYXRhKCkgY29uc3QKIHsKLSAgICBpZiAoIW1fZWxlbWVudC0+aXNTdHlsZWRF
bGVtZW50KCkpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLQogICAgIGlmIChtX3N0eWxlVGV4dC5p
c0VtcHR5KCkpIHsKKyAgICAgICAgYXV0byByZXN1bHQgPSBDU1NSdWxlU291cmNlRGF0YTo6Y3Jl
YXRlKFN0eWxlUnVsZTo6U3R5bGUpOwogICAgICAgICByZXN1bHQtPnJ1bGVCb2R5UmFuZ2Uuc3Rh
cnQgPSAwOwogICAgICAgICByZXN1bHQtPnJ1bGVCb2R5UmFuZ2UuZW5kID0gMDsKLSAgICAgICAg
cmV0dXJuIHRydWU7CisgICAgICAgIHJldHVybiByZXN1bHQ7CiAgICAgfQogCisgICAgQ1NTUGFy
c2VyQ29udGV4dCBjb250ZXh0KHBhcnNlckNvbnRleHRGb3JEb2N1bWVudCgmbV9lbGVtZW50LT5k
b2N1bWVudCgpKSk7CisgICAgaWYgKGNvbnRleHQudXNlTmV3UGFyc2VyKSB7CisgICAgICAgIFJ1
bGVTb3VyY2VEYXRhTGlzdCBydWxlU291cmNlRGF0YVJlc3VsdDsKKyAgICAgICAgU3R5bGVTaGVl
dEhhbmRsZXIgaGFuZGxlcihtX3N0eWxlVGV4dCwgJm1fZWxlbWVudC0+ZG9jdW1lbnQoKSwgJnJ1
bGVTb3VyY2VEYXRhUmVzdWx0KTsKKyAgICAgICAgQ1NTUGFyc2VyOjpwYXJzZURlY2xhcmF0aW9u
Rm9ySW5zcGVjdG9yKGNvbnRleHQsIG1fc3R5bGVUZXh0LCBoYW5kbGVyKTsKKyAgICAgICAgcmV0
dXJuIFdURk1vdmUocnVsZVNvdXJjZURhdGFSZXN1bHQuZmlyc3QoKSk7CisgICAgfQorICAgIAor
ICAgIGF1dG8gcmVzdWx0ID0gQ1NTUnVsZVNvdXJjZURhdGE6OmNyZWF0ZShTdHlsZVJ1bGU6OlN0
eWxlKTsKICAgICBhdXRvIHRlbXBEZWNsYXJhdGlvbiA9IE11dGFibGVTdHlsZVByb3BlcnRpZXM6
OmNyZWF0ZSgpOwotICAgIGNyZWF0ZUNTU1BhcnNlcigmbV9lbGVtZW50LT5kb2N1bWVudCgpKS0+
cGFyc2VEZWNsYXJhdGlvbih0ZW1wRGVjbGFyYXRpb24sIG1fc3R5bGVUZXh0LCByZXN1bHQsIG51
bGxwdHIpOwotICAgIHJldHVybiB0cnVlOworICAgIENTU1BhcnNlcihjb250ZXh0KS5wYXJzZURl
Y2xhcmF0aW9uKHRlbXBEZWNsYXJhdGlvbiwgbV9zdHlsZVRleHQsIHJlc3VsdC5wdHIoKSwgbnVs
bHB0cik7CisgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpJ
bmRleDogU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclN0eWxlU2hlZXQuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yU3R5bGVTaGVldC5o
CShyZXZpc2lvbiAyMDg4NDYpCisrKyBTb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9y
U3R5bGVTaGVldC5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNTEsNyArMjUxLDcgQEAgcHJvdGVjdGVk
OgogcHJpdmF0ZToKICAgICBDU1NTdHlsZURlY2xhcmF0aW9uKiBpbmxpbmVTdHlsZSgpIGNvbnN0
OwogICAgIGNvbnN0IFN0cmluZyYgZWxlbWVudFN0eWxlVGV4dCgpIGNvbnN0OwotICAgIGJvb2wg
Z2V0U3R5bGVBdHRyaWJ1dGVSYW5nZXMoQ1NTUnVsZVNvdXJjZURhdGEqIHJlc3VsdCkgY29uc3Q7
CisgICAgUmVmPENTU1J1bGVTb3VyY2VEYXRhPiBydWxlU291cmNlRGF0YSgpIGNvbnN0OwogCiAg
ICAgUmVmUHRyPEVsZW1lbnQ+IG1fZWxlbWVudDsKICAgICBSZWZQdHI8Q1NTUnVsZVNvdXJjZURh
dGE+IG1fcnVsZVNvdXJjZURhdGE7Cg==
</data>
<flag name="review"
          id="317721"
          type_id="1"
          status="+"
          setter="dino"
    />
          </attachment>
      

    </bug>

</bugzilla>