<?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>112722</bug_id>
          
          <creation_ts>2013-03-19 11:27:22 -0700</creation_ts>
          <short_desc>Merge MainResourceLoader&apos;s SubstituteData loading + others into DocumentLoader</short_desc>
          <delta_ts>2013-03-21 08:49:00 -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>WebCore Misc.</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>104969</blocked>
    
    <blocked>112811</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Nate Chapin">japhet</reporter>
          <assigned_to name="Nate Chapin">japhet</assigned_to>
          <cc>abarth</cc>
    
    <cc>hausmann</cc>
    
    <cc>jturcotte</cc>
    
    <cc>kadam</cc>
    
    <cc>koivisto</cc>
    
    <cc>ossy</cc>
    
    <cc>rniwa</cc>
    
    <cc>webkit.review.bot</cc>
    
    <cc>zarvai</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>858517</commentid>
    <comment_count>0</comment_count>
    <who name="Nate Chapin">japhet</who>
    <bug_when>2013-03-19 11:27:22 -0700</bug_when>
    <thetext>Others include:
* MainResourceLoader&apos;s error handling into DocumentLoader::mainReceivedError()
* MainResourceLoader::cancel into DocumentLoader::cancelMainResourceLoad
* m_identifierForLoadWithoutResourceLoader handling, plus remaining synthesized ResourceLoadNotifier callbacks.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>858530</commentid>
    <comment_count>1</comment_count>
      <attachid>193878</attachid>
    <who name="Nate Chapin">japhet</who>
    <bug_when>2013-03-19 11:36:39 -0700</bug_when>
    <thetext>Created attachment 193878
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>858552</commentid>
    <comment_count>2</comment_count>
      <attachid>193885</attachid>
    <who name="Nate Chapin">japhet</who>
    <bug_when>2013-03-19 11:48:23 -0700</bug_when>
    <thetext>Created attachment 193885
Fix compile error</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>858573</commentid>
    <comment_count>3</comment_count>
      <attachid>193885</attachid>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2013-03-19 12:02:54 -0700</bug_when>
    <thetext>Comment on attachment 193885
Fix compile error

r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>858628</commentid>
    <comment_count>4</comment_count>
      <attachid>193885</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2013-03-19 12:42:06 -0700</bug_when>
    <thetext>Comment on attachment 193885
Fix compile error

Clearing flags on attachment: 193885

Committed r146239: &lt;http://trac.webkit.org/changeset/146239&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>858629</commentid>
    <comment_count>5</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2013-03-19 12:42:10 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>858656</commentid>
    <comment_count>6</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2013-03-19 13:09:39 -0700</bug_when>
    <thetext>Mac build fix landed in http://trac.webkit.org/changeset/146242.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>858879</commentid>
    <comment_count>7</comment_count>
    <who name="Csaba Osztrogonác">ossy</who>
    <bug_when>2013-03-19 16:59:49 -0700</bug_when>
    <thetext>(In reply to comment #4)
&gt; (From update of attachment 193885 [details])
&gt; Clearing flags on attachment: 193885
&gt; 
&gt; Committed r146239: &lt;http://trac.webkit.org/changeset/146239&gt;

It made 60 tests crash on Qt: http://build.webkit.sed.hu/builders/x86-64%20Linux%20Qt%20Debug/builds/28194

cc-ing Qt folks for investigation</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>859496</commentid>
    <comment_count>8</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2013-03-20 09:43:34 -0700</bug_when>
    <thetext>This also caused bug 112811.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>860368</commentid>
    <comment_count>9</comment_count>
    <who name="Nate Chapin">japhet</who>
    <bug_when>2013-03-21 08:34:25 -0700</bug_when>
    <thetext>(In reply to comment #7)
&gt; (In reply to comment #4)
&gt; &gt; (From update of attachment 193885 [details] [details])
&gt; &gt; Clearing flags on attachment: 193885
&gt; &gt; 
&gt; &gt; Committed r146239: &lt;http://trac.webkit.org/changeset/146239&gt;
&gt; 
&gt; It made 60 tests crash on Qt: http://build.webkit.sed.hu/builders/x86-64%20Linux%20Qt%20Debug/builds/28194
&gt; 
&gt; cc-ing Qt folks for investigation

Are these tests still crashing? I&apos;d be happy to help diagnose if you have a stack trace.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>860378</commentid>
    <comment_count>10</comment_count>
    <who name="Csaba Osztrogonác">ossy</who>
    <bug_when>2013-03-21 08:40:16 -0700</bug_when>
    <thetext>(In reply to comment #9)
&gt; &gt; It made 60 tests crash on Qt: http://build.webkit.sed.hu/builders/x86-64%20Linux%20Qt%20Debug/builds/28194
&gt; &gt; 
&gt; &gt; cc-ing Qt folks for investigation
&gt; 
&gt; Are these tests still crashing? I&apos;d be happy to help diagnose if you have a stack trace.

No, the crashes went away somewhere between r146261-r146283.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>860387</commentid>
    <comment_count>11</comment_count>
    <who name="Nate Chapin">japhet</who>
    <bug_when>2013-03-21 08:49:00 -0700</bug_when>
    <thetext>(In reply to comment #10)
&gt; (In reply to comment #9)
&gt; &gt; &gt; It made 60 tests crash on Qt: http://build.webkit.sed.hu/builders/x86-64%20Linux%20Qt%20Debug/builds/28194
&gt; &gt; &gt; 
&gt; &gt; &gt; cc-ing Qt folks for investigation
&gt; &gt; 
&gt; &gt; Are these tests still crashing? I&apos;d be happy to help diagnose if you have a stack trace.
&gt; 
&gt; No, the crashes went away somewhere between r146261-r146283.

Ah, yeah, I fixed a bunch of chromium asserts in http://trac.webkit.org/changeset/146267, which probably had the same root issue.

Thanks!</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>193878</attachid>
            <date>2013-03-19 11:36:39 -0700</date>
            <delta_ts>2013-03-19 11:42:40 -0700</delta_ts>
            <desc>patch</desc>
            <filename>dl_mrl_subst_etal.txt</filename>
            <type>text/plain</type>
            <size>22177</size>
            <attacher name="Nate Chapin">japhet</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudExvYWRlci5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50TG9hZGVyLmNwcAkocmV2aXNpb24g
MTQ2MjE2KQorKysgU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50TG9hZGVyLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtNTEsNiArNTEsNyBAQAogI2luY2x1ZGUgIk1haW5SZXNvdXJjZUxvYWRl
ci5oIgogI2luY2x1ZGUgIk1lbW9yeUNhY2hlLmgiCiAjaW5jbHVkZSAiUGFnZS5oIgorI2luY2x1
ZGUgIlByb2dyZXNzVHJhY2tlci5oIgogI2luY2x1ZGUgIlJlc291cmNlQnVmZmVyLmgiCiAjaW5j
bHVkZSAiU2NoZW1lUmVnaXN0cnkuaCIKICNpbmNsdWRlICJTZXR0aW5ncy5oIgpAQCAtMTEyLDYg
KzExMyw4IEBACiAgICAgLCBtX3N1YnN0aXR1dGVSZXNvdXJjZURlbGl2ZXJ5VGltZXIodGhpcywg
JkRvY3VtZW50TG9hZGVyOjpzdWJzdGl0dXRlUmVzb3VyY2VEZWxpdmVyeVRpbWVyRmlyZWQpCiAg
ICAgLCBtX2RpZENyZWF0ZUdsb2JhbEhpc3RvcnlFbnRyeShmYWxzZSkKICAgICAsIG1fdGltZU9m
TGFzdERhdGFSZWNlaXZlZCgwLjApCisgICAgLCBtX2lkZW50aWZpZXJGb3JMb2FkV2l0aG91dFJl
c291cmNlTG9hZGVyKDApCisgICAgLCBtX2RhdGFMb2FkVGltZXIodGhpcywgJkRvY3VtZW50TG9h
ZGVyOjpoYW5kbGVTdWJzdGl0dXRlRGF0YUxvYWROb3cpCiAgICAgLCBtX3dhaXRpbmdGb3JDb250
ZW50UG9saWN5KGZhbHNlKQogICAgICwgbV9hcHBsaWNhdGlvbkNhY2hlSG9zdChhZG9wdFB0cihu
ZXcgQXBwbGljYXRpb25DYWNoZUhvc3QodGhpcykpKQogewpAQCAtMjE2LDcgKzIxOSwyMCBAQAog
dm9pZCBEb2N1bWVudExvYWRlcjo6bWFpblJlY2VpdmVkRXJyb3IoY29uc3QgUmVzb3VyY2VFcnJv
ciYgZXJyb3IpCiB7CiAgICAgQVNTRVJUKCFlcnJvci5pc051bGwoKSk7CisgICAgaWYgKG1fYXBw
bGljYXRpb25DYWNoZUhvc3QtPm1heWJlTG9hZEZhbGxiYWNrRm9yTWFpbkVycm9yKHJlcXVlc3Qo
KSwgZXJyb3IpKQorICAgICAgICByZXR1cm47CiAKKyAgICBpZiAobV9pZGVudGlmaWVyRm9yTG9h
ZFdpdGhvdXRSZXNvdXJjZUxvYWRlcikgeworICAgICAgICBBU1NFUlQoIW1haW5SZXNvdXJjZUxv
YWRlcigpKTsKKyAgICAgICAgZnJhbWVMb2FkZXIoKS0+Y2xpZW50KCktPmRpc3BhdGNoRGlkRmFp
bExvYWRpbmcodGhpcywgbV9pZGVudGlmaWVyRm9yTG9hZFdpdGhvdXRSZXNvdXJjZUxvYWRlciwg
ZXJyb3IpOworICAgIH0KKworICAgIC8vIFRoZXJlIGlzIGEgYnVnIGluIENGTmV0d29yayB3aGVy
ZSBjYWxsYmFja3MgY2FuIGJlIGRpc3BhdGNoZWQgZXZlbiB3aGVuIGxvYWRzIGFyZSBkZWZlcnJl
ZC4KKyAgICAvLyBTZWUgPHJkYXI6Ly9wcm9ibGVtLzYzMDQ2MDA+IGZvciBtb3JlIGRldGFpbHMu
CisjaWYgIVVTRShDRikKKyAgICBBU1NFUlQoIW1fZnJhbWUtPnBhZ2UoKS0+ZGVmZXJzTG9hZGlu
ZygpKTsKKyNlbmRpZgorCiAgICAgbV9hcHBsaWNhdGlvbkNhY2hlSG9zdC0+ZmFpbGVkTG9hZGlu
Z01haW5SZXNvdXJjZSgpOwogCiAgICAgaWYgKCFmcmFtZUxvYWRlcigpKQpAQCAtMjc4LDcgKzI5
NCw3IEBACiAgICAgCiAgICAgaWYgKG1fbWFpblJlc291cmNlTG9hZGVyKQogICAgICAgICAvLyBT
dG9wIHRoZSBtYWluIHJlc291cmNlIGxvYWRlciBhbmQgbGV0IGl0IHNlbmQgdGhlIGNhbmNlbGxl
ZCBtZXNzYWdlLgotICAgICAgICBtX21haW5SZXNvdXJjZUxvYWRlci0+Y2FuY2VsKGZyYW1lTG9h
ZGVyLT5jYW5jZWxsZWRFcnJvcihtX3JlcXVlc3QpKTsKKyAgICAgICAgY2FuY2VsTWFpblJlc291
cmNlTG9hZChmcmFtZUxvYWRlci0+Y2FuY2VsbGVkRXJyb3IobV9yZXF1ZXN0KSk7CiAgICAgZWxz
ZSBpZiAoIW1fc3VicmVzb3VyY2VMb2FkZXJzLmlzRW1wdHkoKSkKICAgICAgICAgLy8gVGhlIG1h
aW4gcmVzb3VyY2UgbG9hZGVyIGFscmVhZHkgZmluaXNoZWQgbG9hZGluZy4gU2V0IHRoZSBjYW5j
ZWxsZWQgZXJyb3Igb24gdGhlIAogICAgICAgICAvLyBkb2N1bWVudCBhbmQgbGV0IHRoZSBzdWJy
ZXNvdXJjZUxvYWRlcnMgc2VuZCBpbmRpdmlkdWFsIGNhbmNlbGxlZCBtZXNzYWdlcyBiZWxvdy4K
QEAgLTMyNCw5ICszNDAsOSBAQAogCiAgICAgUmVmUHRyPERvY3VtZW50TG9hZGVyPiBwcm90ZWN0
KHRoaXMpOwogCi0gICAgaWYgKG1fbWFpblJlc291cmNlTG9hZGVyICYmIG1fbWFpblJlc291cmNl
TG9hZGVyLT5pZGVudGlmaWVyRm9yTG9hZFdpdGhvdXRSZXNvdXJjZUxvYWRlcigpKSB7Ci0gICAg
ICAgIGZyYW1lTG9hZGVyKCktPm5vdGlmaWVyKCktPmRpc3BhdGNoRGlkRmluaXNoTG9hZGluZyh0
aGlzLCBtX21haW5SZXNvdXJjZUxvYWRlci0+aWRlbnRpZmllcigpLCBmaW5pc2hUaW1lKTsKLSAg
ICAgICAgbV9tYWluUmVzb3VyY2VMb2FkZXItPmNsZWFySWRlbnRpZmllckZvckxvYWRXaXRob3V0
UmVzb3VyY2VMb2FkZXIoKTsKKyAgICBpZiAobV9pZGVudGlmaWVyRm9yTG9hZFdpdGhvdXRSZXNv
dXJjZUxvYWRlcikgeworICAgICAgICBmcmFtZUxvYWRlcigpLT5ub3RpZmllcigpLT5kaXNwYXRj
aERpZEZpbmlzaExvYWRpbmcodGhpcywgbV9pZGVudGlmaWVyRm9yTG9hZFdpdGhvdXRSZXNvdXJj
ZUxvYWRlciwgZmluaXNoVGltZSk7CisgICAgICAgIG1faWRlbnRpZmllckZvckxvYWRXaXRob3V0
UmVzb3VyY2VMb2FkZXIgPSAwOwogICAgIH0KIAogI2lmIFVTRShDT05URU5UX0ZJTFRFUklORykK
QEAgLTM4OSw2ICs0MDUsMzMgQEAKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKK3ZvaWQgRG9jdW1l
bnRMb2FkZXI6OmhhbmRsZVN1YnN0aXR1dGVEYXRhTG9hZE5vdyhEb2N1bWVudExvYWRlclRpbWVy
KikKK3sKKyAgICBLVVJMIHVybCA9IG1fc3Vic3RpdHV0ZURhdGEucmVzcG9uc2VVUkwoKTsKKyAg
ICBpZiAodXJsLmlzRW1wdHkoKSkKKyAgICAgICAgdXJsID0gbV9yZXF1ZXN0LnVybCgpOworICAg
IFJlc291cmNlUmVzcG9uc2UgcmVzcG9uc2UodXJsLCBtX3N1YnN0aXR1dGVEYXRhLm1pbWVUeXBl
KCksIG1fc3Vic3RpdHV0ZURhdGEuY29udGVudCgpLT5zaXplKCksIG1fc3Vic3RpdHV0ZURhdGEu
dGV4dEVuY29kaW5nKCksICIiKTsKKyAgICByZXNwb25zZVJlY2VpdmVkKHJlc3BvbnNlKTsKK30K
Kwordm9pZCBEb2N1bWVudExvYWRlcjo6c3RhcnREYXRhTG9hZFRpbWVyKCkKK3sKKyAgICBtX2Rh
dGFMb2FkVGltZXIuc3RhcnRPbmVTaG90KDApOworCisjaWYgSEFWRShSVU5MT09QX1RJTUVSKQor
ICAgIGlmIChTY2hlZHVsZVBhaXJIYXNoU2V0KiBzY2hlZHVsZWRQYWlycyA9IG1fZnJhbWUtPnBh
Z2UoKS0+c2NoZWR1bGVkUnVuTG9vcFBhaXJzKCkpCisgICAgICAgIG1fZGF0YUxvYWRUaW1lci5z
Y2hlZHVsZSgqc2NoZWR1bGVkUGFpcnMpOworI2VuZGlmCit9CisKK3ZvaWQgRG9jdW1lbnRMb2Fk
ZXI6OmhhbmRsZVN1YnN0aXR1dGVEYXRhTG9hZFNvb24oKQoreworICAgIGlmIChkZWZlck1haW5S
ZXNvdXJjZURhdGFMb2FkKCkpCisgICAgICAgIHN0YXJ0RGF0YUxvYWRUaW1lcigpOworICAgIGVs
c2UKKyAgICAgICAgaGFuZGxlU3Vic3RpdHV0ZURhdGFMb2FkTm93KDApOworfQorCiB2b2lkIERv
Y3VtZW50TG9hZGVyOjp3aWxsU2VuZFJlcXVlc3QoUmVzb3VyY2VSZXF1ZXN0JiBuZXdSZXF1ZXN0
LCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZWRpcmVjdFJlc3BvbnNlKQogewogICAgIC8vIE5v
dGUgdGhhdCB0aGVyZSBhcmUgbm8gYXNzZXJ0cyBoZXJlIGFzIHRoZXJlIGFyZSBmb3IgdGhlIG90
aGVyIGNhbGxiYWNrcy4gVGhpcyBpcyBkdWUgdG8gdGhlCkBAIC00NDIsNyArNDg1LDcgQEAKICAg
ICAgICAgQVNTRVJUKCFtX3N1YnN0aXR1dGVEYXRhLmlzVmFsaWQoKSk7CiAgICAgICAgIG1fYXBw
bGljYXRpb25DYWNoZUhvc3QtPm1heWJlTG9hZE1haW5SZXNvdXJjZUZvclJlZGlyZWN0KG5ld1Jl
cXVlc3QsIG1fc3Vic3RpdHV0ZURhdGEpOwogICAgICAgICBpZiAobV9zdWJzdGl0dXRlRGF0YS5p
c1ZhbGlkKCkpCi0gICAgICAgICAgICBtX21haW5SZXNvdXJjZUxvYWRlci0+dGFrZUlkZW50aWZp
ZXJGcm9tUmVzb3VyY2VMb2FkZXIoKTsKKyAgICAgICAgICAgIG1faWRlbnRpZmllckZvckxvYWRX
aXRob3V0UmVzb3VyY2VMb2FkZXIgPSBtYWluUmVzb3VyY2VMb2FkZXIoKS0+aWRlbnRpZmllcigp
OwogICAgIH0KIAogICAgIC8vIEZJWE1FOiBJZGVhbGx5IHdlJ2Qgc3RvcCB0aGUgSS9PIHVudGls
IHdlIGhlYXIgYmFjayBmcm9tIHRoZSBuYXZpZ2F0aW9uIHBvbGljeSBkZWxlZ2F0ZQpAQCAtNDU4
LDcgKzUwMSw3IEBACiAgICAgc3RhdGljX2Nhc3Q8RG9jdW1lbnRMb2FkZXIqPihhcmd1bWVudCkt
PmNvbnRpbnVlQWZ0ZXJOYXZpZ2F0aW9uUG9saWN5KHJlcXVlc3QsIHNob3VsZENvbnRpbnVlKTsK
IH0KIAotdm9pZCBEb2N1bWVudExvYWRlcjo6Y29udGludWVBZnRlck5hdmlnYXRpb25Qb2xpY3ko
Y29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBib29sIHNob3VsZENvbnRpbnVlKQordm9p
ZCBEb2N1bWVudExvYWRlcjo6Y29udGludWVBZnRlck5hdmlnYXRpb25Qb2xpY3koY29uc3QgUmVz
b3VyY2VSZXF1ZXN0JiwgYm9vbCBzaG91bGRDb250aW51ZSkKIHsKICAgICBpZiAoIXNob3VsZENv
bnRpbnVlKQogICAgICAgICBzdG9wTG9hZGluZ0ZvclBvbGljeUNoYW5nZSgpOwpAQCAtNDc3LDcg
KzUyMCw3IEBACiAgICAgICAgIHJlc291cmNlTG9hZGVyLT5zZXRTZW5kQ2FsbGJhY2tQb2xpY3ko
RG9Ob3RTZW5kQ2FsbGJhY2tzKTsKICAgICAgICAgbV9tYWluUmVzb3VyY2VMb2FkZXItPmNsZWFy
UmVzb3VyY2UoKTsKICAgICAgICAgcmVzb3VyY2VMb2FkZXItPnNldFNlbmRDYWxsYmFja1BvbGlj
eShTZW5kQ2FsbGJhY2tzKTsKLSAgICAgICAgbV9tYWluUmVzb3VyY2VMb2FkZXItPmhhbmRsZVN1
YnN0aXR1dGVEYXRhTG9hZFNvb24ocmVxdWVzdCk7CisgICAgICAgIGhhbmRsZVN1YnN0aXR1dGVE
YXRhTG9hZFNvb24oKTsKICAgICB9CiB9CiAKQEAgLTUwNCw3ICs1NDcsNyBAQAogICAgIEhUVFBI
ZWFkZXJNYXA6OmNvbnN0X2l0ZXJhdG9yIGl0ID0gcmVzcG9uc2UuaHR0cEhlYWRlckZpZWxkcygp
LmZpbmQoeEZyYW1lT3B0aW9uSGVhZGVyKTsKICAgICBpZiAoaXQgIT0gcmVzcG9uc2UuaHR0cEhl
YWRlckZpZWxkcygpLmVuZCgpKSB7CiAgICAgICAgIFN0cmluZyBjb250ZW50ID0gaXQtPnZhbHVl
OwotICAgICAgICB1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIgPSBtX21haW5SZXNvdXJjZUxvYWRl
ci0+aWRlbnRpZmllcigpOworICAgICAgICB1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIgPSBtX2lk
ZW50aWZpZXJGb3JMb2FkV2l0aG91dFJlc291cmNlTG9hZGVyID8gbV9pZGVudGlmaWVyRm9yTG9h
ZFdpdGhvdXRSZXNvdXJjZUxvYWRlciA6IG1haW5SZXNvdXJjZUxvYWRlcigpLT5pZGVudGlmaWVy
KCk7CiAgICAgICAgIGlmIChmcmFtZUxvYWRlcigpLT5zaG91bGRJbnRlcnJ1cHRMb2FkRm9yWEZy
YW1lT3B0aW9ucyhjb250ZW50LCByZXNwb25zZS51cmwoKSwgaWRlbnRpZmllcikpIHsKICAgICAg
ICAgICAgIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6Y29udGludWVBZnRlclhGcmFtZU9wdGlv
bnNEZW5pZWQobV9mcmFtZSwgdGhpcywgaWRlbnRpZmllciwgcmVzcG9uc2UpOwogICAgICAgICAg
ICAgU3RyaW5nIG1lc3NhZ2UgPSAiUmVmdXNlZCB0byBkaXNwbGF5ICciICsgcmVzcG9uc2UudXJs
KCkuZWxpZGVkU3RyaW5nKCkgKyAiJyBpbiBhIGZyYW1lIGJlY2F1c2UgaXQgc2V0ICdYLUZyYW1l
LU9wdGlvbnMnIHRvICciICsgY29udGVudCArICInLiI7CkBAIC01MzAsOCArNTczLDggQEAKIAog
ICAgIHNldFJlc3BvbnNlKHJlc3BvbnNlKTsKIAotICAgIGlmIChtX21haW5SZXNvdXJjZUxvYWRl
ci0+aWRlbnRpZmllckZvckxvYWRXaXRob3V0UmVzb3VyY2VMb2FkZXIoKSkKLSAgICAgICAgZnJh
bWVMb2FkZXIoKS0+bm90aWZpZXIoKS0+ZGlzcGF0Y2hEaWRSZWNlaXZlUmVzcG9uc2UodGhpcywg
bV9tYWluUmVzb3VyY2VMb2FkZXItPmlkZW50aWZpZXJGb3JMb2FkV2l0aG91dFJlc291cmNlTG9h
ZGVyKCksIG1fcmVzcG9uc2UsIDApOworICAgIGlmIChtX2lkZW50aWZpZXJGb3JMb2FkV2l0aG91
dFJlc291cmNlTG9hZGVyKQorICAgICAgICBmcmFtZUxvYWRlcigpLT5ub3RpZmllcigpLT5kaXNw
YXRjaERpZFJlY2VpdmVSZXNwb25zZSh0aGlzLCBtX2lkZW50aWZpZXJGb3JMb2FkV2l0aG91dFJl
c291cmNlTG9hZGVyLCBtX3Jlc3BvbnNlLCAwKTsKIAogICAgIEFTU0VSVCghbV93YWl0aW5nRm9y
Q29udGVudFBvbGljeSk7CiAgICAgbV93YWl0aW5nRm9yQ29udGVudFBvbGljeSA9IHRydWU7CkBA
IC03ODAsOCArODIzLDggQEAKICAgICB9CiAjZW5kaWYKIAotICAgIGlmIChtX21haW5SZXNvdXJj
ZUxvYWRlci0+aWRlbnRpZmllckZvckxvYWRXaXRob3V0UmVzb3VyY2VMb2FkZXIoKSkKLSAgICAg
ICAgZnJhbWVMb2FkZXIoKS0+bm90aWZpZXIoKS0+ZGlzcGF0Y2hEaWRSZWNlaXZlRGF0YSh0aGlz
LCBtX21haW5SZXNvdXJjZUxvYWRlci0+aWRlbnRpZmllcigpLCBkYXRhLCBsZW5ndGgsIC0xKTsK
KyAgICBpZiAobV9pZGVudGlmaWVyRm9yTG9hZFdpdGhvdXRSZXNvdXJjZUxvYWRlcikKKyAgICAg
ICAgZnJhbWVMb2FkZXIoKS0+bm90aWZpZXIoKS0+ZGlzcGF0Y2hEaWRSZWNlaXZlRGF0YSh0aGlz
LCBtX2lkZW50aWZpZXJGb3JMb2FkV2l0aG91dFJlc291cmNlTG9hZGVyLCBkYXRhLCBsZW5ndGgs
IC0xKTsKIAogICAgIG1fYXBwbGljYXRpb25DYWNoZUhvc3QtPm1haW5SZXNvdXJjZURhdGFSZWNl
aXZlZChkYXRhLCBsZW5ndGgsIC0xLCBmYWxzZSk7CiAgICAgbV90aW1lT2ZMYXN0RGF0YVJlY2Vp
dmVkID0gbW9ub3RvbmljYWxseUluY3JlYXNpbmdUaW1lKCk7CkBAIC0xMzExLDYgKzEzNTQsMTUg
QEAKIAogICAgIG1fYXBwbGljYXRpb25DYWNoZUhvc3QtPm1heWJlTG9hZE1haW5SZXNvdXJjZSht
X3JlcXVlc3QsIG1fc3Vic3RpdHV0ZURhdGEpOwogCisgICAgaWYgKG1fc3Vic3RpdHV0ZURhdGEu
aXNWYWxpZCgpKSB7CisgICAgICAgIG1faWRlbnRpZmllckZvckxvYWRXaXRob3V0UmVzb3VyY2VM
b2FkZXIgPSBtX2ZyYW1lLT5wYWdlKCktPnByb2dyZXNzKCktPmNyZWF0ZVVuaXF1ZUlkZW50aWZp
ZXIoKTsKKyAgICAgICAgZnJhbWVMb2FkZXIoKS0+bm90aWZpZXIoKS0+YXNzaWduSWRlbnRpZmll
clRvSW5pdGlhbFJlcXVlc3QobV9pZGVudGlmaWVyRm9yTG9hZFdpdGhvdXRSZXNvdXJjZUxvYWRl
ciwgdGhpcywgbV9yZXF1ZXN0KTsKKyAgICAgICAgZnJhbWVMb2FkZXIoKS0+bm90aWZpZXIoKS0+
ZGlzcGF0Y2hXaWxsU2VuZFJlcXVlc3QodGhpcywgbV9pZGVudGlmaWVyRm9yTG9hZFdpdGhvdXRS
ZXNvdXJjZUxvYWRlciwgbV9yZXF1ZXN0LCBSZXNvdXJjZVJlc3BvbnNlKCkpOworICAgICAgICBo
YW5kbGVTdWJzdGl0dXRlRGF0YUxvYWRTb29uKCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisK
KyAgICBSZXNvdXJjZVJlcXVlc3QgcmVxdWVzdChtX3JlcXVlc3QpOwogICAgIG1fbWFpblJlc291
cmNlTG9hZGVyLT5sb2FkKG1fcmVxdWVzdCk7CiAKICAgICBpZiAobV9yZXF1ZXN0LmlzTnVsbCgp
KSB7CkBAIC0xMzIwLDE5ICsxMzcyLDQxIEBACiAgICAgICAgIC8vIGEgbmV3IEFwcGxpY2F0aW9u
Q2FjaGVIb3N0LgogICAgICAgICBtX2FwcGxpY2F0aW9uQ2FjaGVIb3N0ID0gYWRvcHRQdHIobmV3
IEFwcGxpY2F0aW9uQ2FjaGVIb3N0KHRoaXMpKTsKICAgICAgICAgbWF5YmVMb2FkRW1wdHkoKTsK
KyAgICAgICAgcmV0dXJuOwogICAgIH0KKworICAgIGlmICghbWFpblJlc291cmNlTG9hZGVyKCkp
IHsKKyAgICAgICAgbV9pZGVudGlmaWVyRm9yTG9hZFdpdGhvdXRSZXNvdXJjZUxvYWRlciA9IG1f
ZnJhbWUtPnBhZ2UoKS0+cHJvZ3Jlc3MoKS0+Y3JlYXRlVW5pcXVlSWRlbnRpZmllcigpOworICAg
ICAgICBmcmFtZUxvYWRlcigpLT5ub3RpZmllcigpLT5hc3NpZ25JZGVudGlmaWVyVG9Jbml0aWFs
UmVxdWVzdChtX2lkZW50aWZpZXJGb3JMb2FkV2l0aG91dFJlc291cmNlTG9hZGVyLCB0aGlzLCBy
ZXF1ZXN0KTsKKyAgICAgICAgZnJhbWVMb2FkZXIoKS0+bm90aWZpZXIoKS0+ZGlzcGF0Y2hXaWxs
U2VuZFJlcXVlc3QodGhpcywgbV9pZGVudGlmaWVyRm9yTG9hZFdpdGhvdXRSZXNvdXJjZUxvYWRl
ciwgcmVxdWVzdCwgUmVzb3VyY2VSZXNwb25zZSgpKTsKKyAgICB9CisKKyAgICAvLyBBIGJ1bmNo
IG9mIGhlYWRlcnMgYXJlIHNldCB3aGVuIHRoZSB1bmRlcmx5aW5nIFJlc291cmNlTG9hZGVyIGlz
IGNyZWF0ZWQsIGFuZCBtX3JlcXVlc3QgbmVlZHMgdG8gaW5jbHVkZSB0aG9zZS4KKyAgICBpZiAo
bWFpblJlc291cmNlTG9hZGVyKCkpCisgICAgICAgIHJlcXVlc3QgPSBtYWluUmVzb3VyY2VMb2Fk
ZXIoKS0+b3JpZ2luYWxSZXF1ZXN0KCk7CisgICAgLy8gSWYgdGhlcmUgd2FzIGEgZnJhZ21lbnQg
aWRlbnRpZmllciBvbiBtX3JlcXVlc3QsIHRoZSBjYWNoZSB3aWxsIGhhdmUgc3RyaXBwZWQgaXQu
IG1fcmVxdWVzdCBzaG91bGQgaW5jbHVkZQorICAgIC8vIHRoZSBmcmFnbWVudCBpZGVudGlmaWVy
LCBzbyBhZGQgdGhhdCBiYWNrIGluLgorICAgIGlmIChlcXVhbElnbm9yaW5nRnJhZ21lbnRJZGVu
dGlmaWVyKG1fcmVxdWVzdC51cmwoKSwgcmVxdWVzdC51cmwoKSkpCisgICAgICAgIHJlcXVlc3Qu
c2V0VVJMKG1fcmVxdWVzdC51cmwoKSk7CisgICAgc2V0UmVxdWVzdChyZXF1ZXN0KTsKIH0KIAog
dm9pZCBEb2N1bWVudExvYWRlcjo6Y2FuY2VsTWFpblJlc291cmNlTG9hZChjb25zdCBSZXNvdXJj
ZUVycm9yJiBlcnJvcikKIHsKICAgICBBU1NFUlQoIWVycm9yLmlzTnVsbCgpKTsKKyAgICBSZWZQ
dHI8RG9jdW1lbnRMb2FkZXI+IHByb3RlY3QodGhpcyk7CiAKKyAgICBtX2RhdGFMb2FkVGltZXIu
c3RvcCgpOwogICAgIGlmIChtX3dhaXRpbmdGb3JDb250ZW50UG9saWN5KSB7CiAgICAgICAgIGZy
YW1lTG9hZGVyKCktPnBvbGljeUNoZWNrZXIoKS0+Y2FuY2VsQ2hlY2soKTsKICAgICAgICAgQVNT
RVJUKG1fd2FpdGluZ0ZvckNvbnRlbnRQb2xpY3kpOwogICAgICAgICBtX3dhaXRpbmdGb3JDb250
ZW50UG9saWN5ID0gZmFsc2U7CiAgICAgfQotICAgIG1fbWFpblJlc291cmNlTG9hZGVyLT5jYW5j
ZWwoZXJyb3IpOworCisgICAgaWYgKG1haW5SZXNvdXJjZUxvYWRlcigpKQorICAgICAgICBtYWlu
UmVzb3VyY2VMb2FkZXIoKS0+Y2FuY2VsKGVycm9yKTsKKworICAgIG1haW5SZWNlaXZlZEVycm9y
KGVycm9yKTsKIH0KIAogdm9pZCBEb2N1bWVudExvYWRlcjo6c3VicmVzb3VyY2VMb2FkZXJGaW5p
c2hlZExvYWRpbmdPbmVQYXJ0KFJlc291cmNlTG9hZGVyKiBsb2FkZXIpCkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvTWFpblJlc291cmNlTG9hZGVyLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvbG9hZGVyL01haW5SZXNvdXJjZUxvYWRlci5oCShyZXZpc2lvbiAxNDYyMTYpCisr
KyBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvTWFpblJlc291cmNlTG9hZGVyLmgJKHdvcmtpbmcgY29w
eSkKQEAgLTM2LDEyICszNiw2IEBACiAjaW5jbHVkZSAiU3Vic3RpdHV0ZURhdGEuaCIKICNpbmNs
dWRlIDx3dGYvRm9yd2FyZC5oPgogCi0jaWYgSEFWRShSVU5MT09QX1RJTUVSKQotI2luY2x1ZGUg
PHd0Zi9SdW5Mb29wVGltZXIuaD4KLSNlbHNlCi0jaW5jbHVkZSAiVGltZXIuaCIKLSNlbmRpZgot
CiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIFJlc291cmNlUmVxdWVzdDsKQEAgLTUzLDMw
ICs0NywxOCBAQAogICAgIHZpcnR1YWwgfk1haW5SZXNvdXJjZUxvYWRlcigpOwogCiAgICAgdm9p
ZCBsb2FkKGNvbnN0IFJlc291cmNlUmVxdWVzdCYpOwotICAgIHZvaWQgY2FuY2VsKCk7Ci0gICAg
dm9pZCBjYW5jZWwoY29uc3QgUmVzb3VyY2VFcnJvciYpOwogICAgIFJlc291cmNlTG9hZGVyKiBs
b2FkZXIoKSBjb25zdDsKICAgICBQYXNzUmVmUHRyPFJlc291cmNlQnVmZmVyPiByZXNvdXJjZURh
dGEoKTsKIAogICAgIHZvaWQgc2V0RGVmZXJzTG9hZGluZyhib29sKTsKICAgICB2b2lkIHNldERh
dGFCdWZmZXJpbmdQb2xpY3koRGF0YUJ1ZmZlcmluZ1BvbGljeSk7CiAKLSNpZiBIQVZFKFJVTkxP
T1BfVElNRVIpCi0gICAgdHlwZWRlZiBSdW5Mb29wVGltZXI8TWFpblJlc291cmNlTG9hZGVyPiBN
YWluUmVzb3VyY2VMb2FkZXJUaW1lcjsKLSNlbHNlCi0gICAgdHlwZWRlZiBUaW1lcjxNYWluUmVz
b3VyY2VMb2FkZXI+IE1haW5SZXNvdXJjZUxvYWRlclRpbWVyOwotI2VuZGlmCi0KICAgICBDYWNo
ZWRSYXdSZXNvdXJjZSogY2FjaGVkTWFpblJlc291cmNlKCkgeyByZXR1cm4gbV9yZXNvdXJjZS5n
ZXQoKTsgfQotICAgIHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllckZvckxvYWRXaXRob3V0UmVzb3Vy
Y2VMb2FkZXIoKSBjb25zdCB7IHJldHVybiBtX2lkZW50aWZpZXJGb3JMb2FkV2l0aG91dFJlc291
cmNlTG9hZGVyOyB9Ci0gICAgdm9pZCBjbGVhcklkZW50aWZpZXJGb3JMb2FkV2l0aG91dFJlc291
cmNlTG9hZGVyKCkgeyBtX2lkZW50aWZpZXJGb3JMb2FkV2l0aG91dFJlc291cmNlTG9hZGVyID0g
MDsgfQogCiAgICAgdW5zaWduZWQgbG9uZyBpZGVudGlmaWVyKCkgY29uc3Q7CiAKICAgICB2b2lk
IHJlcG9ydE1lbW9yeVVzYWdlKE1lbW9yeU9iamVjdEluZm8qKSBjb25zdDsKIAotICAgIHZvaWQg
dGFrZUlkZW50aWZpZXJGcm9tUmVzb3VyY2VMb2FkZXIoKSB7IG1faWRlbnRpZmllckZvckxvYWRX
aXRob3V0UmVzb3VyY2VMb2FkZXIgPSBpZGVudGlmaWVyKCk7IH0KLSAgICB2b2lkIGhhbmRsZVN1
YnN0aXR1dGVEYXRhTG9hZFNvb24oY29uc3QgUmVzb3VyY2VSZXF1ZXN0Jik7CiAgICAgdm9pZCBj
bGVhclJlc291cmNlKCk7CiAKIHByaXZhdGU6CkBAIC04NywxNiArNjksNiBAQAogICAgIHZpcnR1
YWwgdm9pZCBkYXRhUmVjZWl2ZWQoQ2FjaGVkUmVzb3VyY2UqLCBjb25zdCBjaGFyKiBkYXRhLCBp
bnQgZGF0YUxlbmd0aCkgT1ZFUlJJREU7CiAgICAgdmlydHVhbCB2b2lkIG5vdGlmeUZpbmlzaGVk
KENhY2hlZFJlc291cmNlKikgT1ZFUlJJREU7CiAKLSAgICB2b2lkIGhhbmRsZVN1YnN0aXR1dGVE
YXRhTG9hZE5vdyhNYWluUmVzb3VyY2VMb2FkZXJUaW1lciopOwotCi0gICAgdm9pZCBzdGFydERh
dGFMb2FkVGltZXIoKTsKLQotICAgIHZvaWQgcmVjZWl2ZWRFcnJvcihjb25zdCBSZXNvdXJjZUVy
cm9yJik7Ci0gICAgCi0jaWYgUExBVEZPUk0oUVQpCi0gICAgdm9pZCBzdWJzdGl0dXRlTUlNRVR5
cGVGcm9tUGx1Z2luRGF0YWJhc2UoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYpOwotI2VuZGlmCi0K
ICAgICBGcmFtZUxvYWRlciogZnJhbWVMb2FkZXIoKSBjb25zdDsKICAgICBEb2N1bWVudExvYWRl
ciogZG9jdW1lbnRMb2FkZXIoKSBjb25zdCB7IHJldHVybiBtX2RvY3VtZW50TG9hZGVyLmdldCgp
OyB9CiAKQEAgLTEwOCwxMCArODAsNyBAQAogCiAgICAgUmVzb3VyY2VSZXF1ZXN0IG1faW5pdGlh
bFJlcXVlc3Q7CiAKLSAgICBNYWluUmVzb3VyY2VMb2FkZXJUaW1lciBtX2RhdGFMb2FkVGltZXI7
CiAgICAgUmVmUHRyPERvY3VtZW50TG9hZGVyPiBtX2RvY3VtZW50TG9hZGVyOwotCi0gICAgdW5z
aWduZWQgbG9uZyBtX2lkZW50aWZpZXJGb3JMb2FkV2l0aG91dFJlc291cmNlTG9hZGVyOwogfTsK
IAogfQpJbmRleDogU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50TG9hZGVyLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50TG9hZGVyLmgJKHJldmlzaW9u
IDE0NjIxNikKKysrIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudExvYWRlci5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC00NSw2ICs0NSwxMCBAQAogI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KICNp
bmNsdWRlIDx3dGYvVmVjdG9yLmg+CiAKKyNpZiBIQVZFKFJVTkxPT1BfVElNRVIpCisjaW5jbHVk
ZSAiUnVuTG9vcFRpbWVyLmgiCisjZW5kaWYKKwogbmFtZXNwYWNlIFdURiB7CiBjbGFzcyBTY2hl
ZHVsZVBhaXI7CiB9CkBAIC0yOTEsNiArMjk1LDE1IEBACiAgICAgICAgIHZvaWQgc3RvcExvYWRp
bmdGb3JQb2xpY3lDaGFuZ2UoKTsKICAgICAgICAgUmVzb3VyY2VFcnJvciBpbnRlcnJ1cHRlZEZv
clBvbGljeUNoYW5nZUVycm9yKCkgY29uc3Q7CiAKKyNpZiBIQVZFKFJVTkxPT1BfVElNRVIpCisg
ICAgICAgIHR5cGVkZWYgUnVuTG9vcFRpbWVyPERvY3VtZW50TG9hZGVyPiBEb2N1bWVudExvYWRl
clRpbWVyOworI2Vsc2UKKyAgICAgICAgdHlwZWRlZiBUaW1lcjxEb2N1bWVudExvYWRlcj4gRG9j
dW1lbnRMb2FkZXJUaW1lcjsKKyNlbmRpZgorICAgICAgICB2b2lkIGhhbmRsZVN1YnN0aXR1dGVE
YXRhTG9hZFNvb24oKTsKKyAgICAgICAgdm9pZCBoYW5kbGVTdWJzdGl0dXRlRGF0YUxvYWROb3co
RG9jdW1lbnRMb2FkZXJUaW1lciopOworICAgICAgICB2b2lkIHN0YXJ0RGF0YUxvYWRUaW1lcigp
OworCiAgICAgICAgIHZvaWQgZGVsaXZlclN1YnN0aXR1dGVSZXNvdXJjZXNBZnRlckRlbGF5KCk7
CiAgICAgICAgIHZvaWQgc3Vic3RpdHV0ZVJlc291cmNlRGVsaXZlcnlUaW1lckZpcmVkKFRpbWVy
PERvY3VtZW50TG9hZGVyPiopOwogICAgICAgICAgICAgICAgIApAQCAtMzc1LDkgKzM4OCwxMSBA
QAogICAgICAgICBEb2N1bWVudExvYWRUaW1pbmcgbV9kb2N1bWVudExvYWRUaW1pbmc7CiAKICAg
ICAgICAgZG91YmxlIG1fdGltZU9mTGFzdERhdGFSZWNlaXZlZDsKKyAgICAgICAgdW5zaWduZWQg
bG9uZyBtX2lkZW50aWZpZXJGb3JMb2FkV2l0aG91dFJlc291cmNlTG9hZGVyOwogCisgICAgICAg
IERvY3VtZW50TG9hZGVyVGltZXIgbV9kYXRhTG9hZFRpbWVyOwogICAgICAgICBib29sIG1fd2Fp
dGluZ0ZvckNvbnRlbnRQb2xpY3k7Ci0gICAgCisKICAgICAgICAgUmVmUHRyPEljb25Mb2FkRGVj
aXNpb25DYWxsYmFjaz4gbV9pY29uTG9hZERlY2lzaW9uQ2FsbGJhY2s7CiAgICAgICAgIFJlZlB0
cjxJY29uRGF0YUNhbGxiYWNrPiBtX2ljb25EYXRhQ2FsbGJhY2s7CiAKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL2xvYWRlci9NYWluUmVzb3VyY2VMb2FkZXIuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL2xvYWRlci9NYWluUmVzb3VyY2VMb2FkZXIuY3BwCShyZXZpc2lvbiAxNDYyMTYp
CisrKyBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvTWFpblJlc291cmNlTG9hZGVyLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtNjYsOSArNjYsNyBAQAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBNYWluUmVz
b3VyY2VMb2FkZXI6Ok1haW5SZXNvdXJjZUxvYWRlcihEb2N1bWVudExvYWRlciogZG9jdW1lbnRM
b2FkZXIpCi0gICAgOiBtX2RhdGFMb2FkVGltZXIodGhpcywgJk1haW5SZXNvdXJjZUxvYWRlcjo6
aGFuZGxlU3Vic3RpdHV0ZURhdGFMb2FkTm93KQotICAgICwgbV9kb2N1bWVudExvYWRlcihkb2N1
bWVudExvYWRlcikKLSAgICAsIG1faWRlbnRpZmllckZvckxvYWRXaXRob3V0UmVzb3VyY2VMb2Fk
ZXIoMCkKKyAgICA6IG1fZG9jdW1lbnRMb2FkZXIoZG9jdW1lbnRMb2FkZXIpCiB7CiB9CiAKQEAg
LTgyLDQyICs4MCw2IEBACiAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBNYWluUmVzb3VyY2VMb2Fk
ZXIoZG9jdW1lbnRMb2FkZXIpKTsKIH0KIAotdm9pZCBNYWluUmVzb3VyY2VMb2FkZXI6OnJlY2Vp
dmVkRXJyb3IoY29uc3QgUmVzb3VyY2VFcnJvciYgZXJyb3IpCi17Ci0gICAgLy8gQ2FsbGluZyBy
ZWNlaXZlZE1haW5SZXNvdXJjZUVycm9yIHdpbGwgbGlrZWx5IHJlc3VsdCBpbiB0aGUgbGFzdCBy
ZWZlcmVuY2UgdG8gdGhpcyBvYmplY3QgdG8gZ28gYXdheS4KLSAgICBSZWZQdHI8TWFpblJlc291
cmNlTG9hZGVyPiBwcm90ZWN0KHRoaXMpOwotICAgIFJlZlB0cjxGcmFtZT4gcHJvdGVjdEZyYW1l
KG1fZG9jdW1lbnRMb2FkZXItPmZyYW1lKCkpOwotCi0gICAgaWYgKG1faWRlbnRpZmllckZvckxv
YWRXaXRob3V0UmVzb3VyY2VMb2FkZXIpIHsKLSAgICAgICAgQVNTRVJUKCFsb2FkZXIoKSk7Ci0g
ICAgICAgIGZyYW1lTG9hZGVyKCktPmNsaWVudCgpLT5kaXNwYXRjaERpZEZhaWxMb2FkaW5nKGRv
Y3VtZW50TG9hZGVyKCksIG1faWRlbnRpZmllckZvckxvYWRXaXRob3V0UmVzb3VyY2VMb2FkZXIs
IGVycm9yKTsKLSAgICB9Ci0KLSAgICAvLyBJdCBpcyBpbXBvcnRhbnQgdGhhdCB3ZSBjYWxsIERv
Y3VtZW50TG9hZGVyOjptYWluUmVjZWl2ZWRFcnJvciBiZWZvcmUgY2FsbGluZyAKLSAgICAvLyBS
ZXNvdXJjZUxvYWROb3RpZmllcjo6ZGlkRmFpbFRvTG9hZCBiZWNhdXNlIG1haW5SZWNlaXZlZEVy
cm9yIGNsZWFycyBvdXQgdGhlIHJlbGV2YW50Ci0gICAgLy8gZG9jdW1lbnQgbG9hZGVycy4gQWxz
bywgbWFpblJlY2VpdmVkRXJyb3IgZW5kcyB1cCBjYWxsaW5nIGEgRnJhbWVMb2FkRGVsZWdhdGUg
bWV0aG9kCi0gICAgLy8gYW5kIGRpZEZhaWxUb0xvYWQgY2FsbHMgYSBSZXNvdXJjZUxvYWREZWxl
Z2F0ZSBtZXRob2QgYW5kIHRoZXkgbmVlZCB0byBiZSBpbiB0aGUgY29ycmVjdCBvcmRlci4KLSAg
ICBkb2N1bWVudExvYWRlcigpLT5tYWluUmVjZWl2ZWRFcnJvcihlcnJvcik7Ci19Ci0KLXZvaWQg
TWFpblJlc291cmNlTG9hZGVyOjpjYW5jZWwoKQotewotICAgIGNhbmNlbChSZXNvdXJjZUVycm9y
KCkpOwotfQotCi12b2lkIE1haW5SZXNvdXJjZUxvYWRlcjo6Y2FuY2VsKGNvbnN0IFJlc291cmNl
RXJyb3ImIGVycm9yKQotewotICAgIFJlZlB0cjxNYWluUmVzb3VyY2VMb2FkZXI+IHByb3RlY3Qo
dGhpcyk7Ci0gICAgUmVzb3VyY2VFcnJvciByZXNvdXJjZUVycm9yID0gZXJyb3IuaXNOdWxsKCkg
PyBmcmFtZUxvYWRlcigpLT5jYW5jZWxsZWRFcnJvcihyZXF1ZXN0KCkpIDogZXJyb3I7Ci0KLSAg
ICBtX2RhdGFMb2FkVGltZXIuc3RvcCgpOwotICAgIGlmIChsb2FkZXIoKSkKLSAgICAgICAgbG9h
ZGVyKCktPmNhbmNlbChyZXNvdXJjZUVycm9yKTsKLQotICAgIGNsZWFyUmVzb3VyY2UoKTsKLSAg
ICByZWNlaXZlZEVycm9yKHJlc291cmNlRXJyb3IpOwotfQotCiB2b2lkIE1haW5SZXNvdXJjZUxv
YWRlcjo6Y2xlYXJSZXNvdXJjZSgpCiB7CiAgICAgaWYgKG1fcmVzb3VyY2UpIHsKQEAgLTE3Nywx
OCArMTM5LDggQEAKICAgICAgICAgcmV0dXJuOwogICAgIH0KICNlbmRpZgotCi0gICAgY29uc3Qg
UmVzb3VyY2VFcnJvciYgZXJyb3IgPSBtX3Jlc291cmNlLT5yZXNvdXJjZUVycm9yKCk7Ci0gICAg
aWYgKGRvY3VtZW50TG9hZGVyKCktPmFwcGxpY2F0aW9uQ2FjaGVIb3N0KCktPm1heWJlTG9hZEZh
bGxiYWNrRm9yTWFpbkVycm9yKHJlcXVlc3QoKSwgZXJyb3IpKQotICAgICAgICByZXR1cm47Ci0K
LSAgICAvLyBUaGVyZSBpcyBhIGJ1ZyBpbiBDRk5ldHdvcmsgd2hlcmUgY2FsbGJhY2tzIGNhbiBi
ZSBkaXNwYXRjaGVkIGV2ZW4gd2hlbiBsb2FkcyBhcmUgZGVmZXJyZWQuCi0gICAgLy8gU2VlIDxy
ZGFyOi8vcHJvYmxlbS82MzA0NjAwPiBmb3IgbW9yZSBkZXRhaWxzLgotI2lmICFVU0UoQ0YpCi0g
ICAgQVNTRVJUKCFkZWZlcnNMb2FkaW5nKCkpOwotI2VuZGlmCiAgICAgCi0gICAgcmVjZWl2ZWRF
cnJvcihlcnJvcik7CisgICAgbV9kb2N1bWVudExvYWRlci0+bWFpblJlY2VpdmVkRXJyb3IoZXJy
b3IpOwogfQogCiB2b2lkIE1haW5SZXNvdXJjZUxvYWRlcjo6cmVwb3J0TWVtb3J5VXNhZ2UoTWVt
b3J5T2JqZWN0SW5mbyogbWVtb3J5T2JqZWN0SW5mbykgY29uc3QKQEAgLTE5Niw1OSArMTQ4LDEz
IEBACiAgICAgTWVtb3J5Q2xhc3NJbmZvIGluZm8obWVtb3J5T2JqZWN0SW5mbywgdGhpcywgV2Vi
Q29yZU1lbW9yeVR5cGVzOjpMb2FkZXIpOwogICAgIGluZm8uYWRkTWVtYmVyKG1fcmVzb3VyY2Us
ICJyZXNvdXJjZSIpOwogICAgIGluZm8uYWRkTWVtYmVyKG1faW5pdGlhbFJlcXVlc3QsICJpbml0
aWFsUmVxdWVzdCIpOwotICAgIGluZm8uYWRkTWVtYmVyKG1fZGF0YUxvYWRUaW1lciwgImRhdGFM
b2FkVGltZXIiKTsKICAgICBpbmZvLmFkZE1lbWJlcihtX2RvY3VtZW50TG9hZGVyLCAiZG9jdW1l
bnRMb2FkZXIiKTsKIH0KIAotdm9pZCBNYWluUmVzb3VyY2VMb2FkZXI6OmhhbmRsZVN1YnN0aXR1
dGVEYXRhTG9hZE5vdyhNYWluUmVzb3VyY2VMb2FkZXJUaW1lciopCi17Ci0gICAgUmVmUHRyPE1h
aW5SZXNvdXJjZUxvYWRlcj4gcHJvdGVjdCh0aGlzKTsKLQotICAgIEtVUkwgdXJsID0gbV9kb2N1
bWVudExvYWRlci0+c3Vic3RpdHV0ZURhdGEoKS5yZXNwb25zZVVSTCgpOwotICAgIGlmICh1cmwu
aXNFbXB0eSgpKQotICAgICAgICB1cmwgPSBtX2luaXRpYWxSZXF1ZXN0LnVybCgpOwotCi0gICAg
Ly8gQ2xlYXIgdGhlIGluaXRpYWwgcmVxdWVzdCBoZXJlIHNvIHRoYXQgc3Vic2VxdWVudCBlbnRy
aWVzIGludG8gdGhlCi0gICAgLy8gbG9hZGVyIHdpbGwgbm90IHRoaW5rIHRoZXJlJ3Mgc3RpbGwg
YSBkZWZlcnJlZCBsb2FkIGxlZnQgdG8gZG8uCi0gICAgbV9pbml0aWFsUmVxdWVzdCA9IFJlc291
cmNlUmVxdWVzdCgpOwotICAgICAgICAKLSAgICBSZXNvdXJjZVJlc3BvbnNlIHJlc3BvbnNlKHVy
bCwgbV9kb2N1bWVudExvYWRlci0+c3Vic3RpdHV0ZURhdGEoKS5taW1lVHlwZSgpLCBtX2RvY3Vt
ZW50TG9hZGVyLT5zdWJzdGl0dXRlRGF0YSgpLmNvbnRlbnQoKS0+c2l6ZSgpLCBtX2RvY3VtZW50
TG9hZGVyLT5zdWJzdGl0dXRlRGF0YSgpLnRleHRFbmNvZGluZygpLCAiIik7Ci0gICAgcmVzcG9u
c2VSZWNlaXZlZCgwLCByZXNwb25zZSk7Ci19Ci0KLXZvaWQgTWFpblJlc291cmNlTG9hZGVyOjpz
dGFydERhdGFMb2FkVGltZXIoKQotewotICAgIG1fZGF0YUxvYWRUaW1lci5zdGFydE9uZVNob3Qo
MCk7Ci0KLSNpZiBIQVZFKFJVTkxPT1BfVElNRVIpCi0gICAgaWYgKFNjaGVkdWxlUGFpckhhc2hT
ZXQqIHNjaGVkdWxlZFBhaXJzID0gbV9kb2N1bWVudExvYWRlci0+ZnJhbWUoKS0+cGFnZSgpLT5z
Y2hlZHVsZWRSdW5Mb29wUGFpcnMoKSkKLSAgICAgICAgbV9kYXRhTG9hZFRpbWVyLnNjaGVkdWxl
KCpzY2hlZHVsZWRQYWlycyk7Ci0jZW5kaWYKLX0KLQotdm9pZCBNYWluUmVzb3VyY2VMb2FkZXI6
OmhhbmRsZVN1YnN0aXR1dGVEYXRhTG9hZFNvb24oY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByKQot
ewotICAgIG1faW5pdGlhbFJlcXVlc3QgPSByOwotICAgIAotICAgIGlmIChtX2RvY3VtZW50TG9h
ZGVyLT5kZWZlck1haW5SZXNvdXJjZURhdGFMb2FkKCkpCi0gICAgICAgIHN0YXJ0RGF0YUxvYWRU
aW1lcigpOwotICAgIGVsc2UKLSAgICAgICAgaGFuZGxlU3Vic3RpdHV0ZURhdGFMb2FkTm93KDAp
OwotfQotCiB2b2lkIE1haW5SZXNvdXJjZUxvYWRlcjo6bG9hZChjb25zdCBSZXNvdXJjZVJlcXVl
c3QmIGluaXRpYWxSZXF1ZXN0KQogewotICAgIFJlZlB0cjxNYWluUmVzb3VyY2VMb2FkZXI+IHBy
b3RlY3QodGhpcyk7CiAgICAgUmVzb3VyY2VSZXF1ZXN0IHJlcXVlc3QoaW5pdGlhbFJlcXVlc3Qp
OwogCi0gICAgaWYgKG1fZG9jdW1lbnRMb2FkZXItPnN1YnN0aXR1dGVEYXRhKCkuaXNWYWxpZCgp
KSB7Ci0gICAgICAgIG1faWRlbnRpZmllckZvckxvYWRXaXRob3V0UmVzb3VyY2VMb2FkZXIgPSBt
X2RvY3VtZW50TG9hZGVyLT5mcmFtZSgpLT5wYWdlKCktPnByb2dyZXNzKCktPmNyZWF0ZVVuaXF1
ZUlkZW50aWZpZXIoKTsKLSAgICAgICAgZnJhbWVMb2FkZXIoKS0+bm90aWZpZXIoKS0+YXNzaWdu
SWRlbnRpZmllclRvSW5pdGlhbFJlcXVlc3QobV9pZGVudGlmaWVyRm9yTG9hZFdpdGhvdXRSZXNv
dXJjZUxvYWRlciwgZG9jdW1lbnRMb2FkZXIoKSwgcmVxdWVzdCk7Ci0gICAgICAgIGZyYW1lTG9h
ZGVyKCktPm5vdGlmaWVyKCktPmRpc3BhdGNoV2lsbFNlbmRSZXF1ZXN0KGRvY3VtZW50TG9hZGVy
KCksIG1faWRlbnRpZmllckZvckxvYWRXaXRob3V0UmVzb3VyY2VMb2FkZXIsIHJlcXVlc3QsIFJl
c291cmNlUmVzcG9uc2UoKSk7Ci0gICAgICAgIGhhbmRsZVN1YnN0aXR1dGVEYXRhTG9hZFNvb24o
cmVxdWVzdCk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KICAgICBERUZJTkVfU1RBVElDX0xP
Q0FMKFJlc291cmNlTG9hZGVyT3B0aW9ucywgbWFpblJlc291cmNlTG9hZE9wdGlvbnMsCiAgICAg
ICAgIChTZW5kQ2FsbGJhY2tzLCBTbmlmZkNvbnRlbnQsIEJ1ZmZlckRhdGEsIEFsbG93U3RvcmVk
Q3JlZGVudGlhbHMsIEFza0NsaWVudEZvckNyb3NzT3JpZ2luQ3JlZGVudGlhbHMsIFNraXBTZWN1
cml0eUNoZWNrKSk7CiAgICAgQ2FjaGVkUmVzb3VyY2VSZXF1ZXN0IGNhY2hlZFJlc291cmNlUmVx
dWVzdChyZXF1ZXN0LCBtYWluUmVzb3VyY2VMb2FkT3B0aW9ucyk7CkBAIC0yNTcsMjEgKzE2Myw3
IEBACiAgICAgICAgIGRvY3VtZW50TG9hZGVyKCktPnNldFJlcXVlc3QoUmVzb3VyY2VSZXF1ZXN0
KCkpOwogICAgICAgICByZXR1cm47CiAgICAgfQotICAgIGlmICghbG9hZGVyKCkpIHsKLSAgICAg
ICAgbV9pZGVudGlmaWVyRm9yTG9hZFdpdGhvdXRSZXNvdXJjZUxvYWRlciA9IG1fZG9jdW1lbnRM
b2FkZXItPmZyYW1lKCktPnBhZ2UoKS0+cHJvZ3Jlc3MoKS0+Y3JlYXRlVW5pcXVlSWRlbnRpZmll
cigpOwotICAgICAgICBmcmFtZUxvYWRlcigpLT5ub3RpZmllcigpLT5hc3NpZ25JZGVudGlmaWVy
VG9Jbml0aWFsUmVxdWVzdChtX2lkZW50aWZpZXJGb3JMb2FkV2l0aG91dFJlc291cmNlTG9hZGVy
LCBkb2N1bWVudExvYWRlcigpLCByZXF1ZXN0KTsKLSAgICAgICAgZnJhbWVMb2FkZXIoKS0+bm90
aWZpZXIoKS0+ZGlzcGF0Y2hXaWxsU2VuZFJlcXVlc3QoZG9jdW1lbnRMb2FkZXIoKSwgbV9pZGVu
dGlmaWVyRm9yTG9hZFdpdGhvdXRSZXNvdXJjZUxvYWRlciwgcmVxdWVzdCwgUmVzb3VyY2VSZXNw
b25zZSgpKTsKLSAgICB9CiAgICAgbV9yZXNvdXJjZS0+YWRkQ2xpZW50KHRoaXMpOwotCi0gICAg
Ly8gQSBidW5jaCBvZiBoZWFkZXJzIGFyZSBzZXQgd2hlbiB0aGUgdW5kZXJseWluZyBSZXNvdXJj
ZUxvYWRlciBpcyBjcmVhdGVkLCBhbmQgRG9jdW1lbnRMb2FkZXI6Om1fcmVxdWVzdCBuZWVkcyB0
byBpbmNsdWRlIHRob3NlLgotICAgIGlmIChsb2FkZXIoKSkKLSAgICAgICAgcmVxdWVzdCA9IGxv
YWRlcigpLT5vcmlnaW5hbFJlcXVlc3QoKTsKLSAgICAvLyBJZiB0aGVyZSB3YXMgYSBmcmFnbWVu
dCBpZGVudGlmaWVyIG9uIGluaXRpYWxSZXF1ZXN0LCB0aGUgY2FjaGUgd2lsbCBoYXZlIHN0cmlw
cGVkIGl0LiBEb2N1bWVudExvYWRlcjo6bV9yZXF1ZXN0IHNob3VsZCBpbmNsdWRlCi0gICAgLy8g
dGhlIGZyYWdtZW50IGlkZW50aWZpZXIsIHNvIGFkZCB0aGF0IGJhY2sgaW4uCi0gICAgaWYgKGVx
dWFsSWdub3JpbmdGcmFnbWVudElkZW50aWZpZXIoaW5pdGlhbFJlcXVlc3QudXJsKCksIHJlcXVl
c3QudXJsKCkpKQotICAgICAgICByZXF1ZXN0LnNldFVSTChpbml0aWFsUmVxdWVzdC51cmwoKSk7
Ci0gICAgZG9jdW1lbnRMb2FkZXIoKS0+c2V0UmVxdWVzdChyZXF1ZXN0KTsKIH0KIAogdm9pZCBN
YWluUmVzb3VyY2VMb2FkZXI6OnNldERlZmVyc0xvYWRpbmcoYm9vbCBkZWZlcnMpCkBAIC0yOTgs
OSArMTkwLDYgQEAKIAogdW5zaWduZWQgbG9uZyBNYWluUmVzb3VyY2VMb2FkZXI6OmlkZW50aWZp
ZXIoKSBjb25zdAogewotICAgIEFTU0VSVCghbV9pZGVudGlmaWVyRm9yTG9hZFdpdGhvdXRSZXNv
dXJjZUxvYWRlciB8fCAhbG9hZGVyKCkgfHwgIWxvYWRlcigpLT5pZGVudGlmaWVyKCkpOwotICAg
IGlmIChtX2lkZW50aWZpZXJGb3JMb2FkV2l0aG91dFJlc291cmNlTG9hZGVyKQotICAgICAgICBy
ZXR1cm4gbV9pZGVudGlmaWVyRm9yTG9hZFdpdGhvdXRSZXNvdXJjZUxvYWRlcjsKICAgICBpZiAo
UmVzb3VyY2VMb2FkZXIqIHJlc291cmNlTG9hZGVyID0gbG9hZGVyKCkpCiAgICAgICAgIHJldHVy
biByZXNvdXJjZUxvYWRlci0+aWRlbnRpZmllcigpOwogICAgIHJldHVybiAwOwpJbmRleDogU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkocmV2aXNpb24gMTQ2MjI0KQorKysgU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xLDMgKzEsMzkgQEAKKzIwMTMtMDMtMTkgIE5hdGUgQ2hhcGluICA8amFw
aGV0QGNocm9taXVtLm9yZz4KKworICAgICAgICBNZXJnZSBNYWluUmVzb3VyY2VMb2FkZXIncyBT
dWJzdGl0dXRlRGF0YSBsb2FkaW5nICsgb3RoZXJzIGludG8gRG9jdW1lbnRMb2FkZXIKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTExMjcyMgorCisgICAg
ICAgIFBhcnQgb2YgdGhlIG9uZ29pbmcgZWZmb3J0IHRvIG1lcmdlIE1haW5SZXNvdXJjZUxvYWRl
ciBlbnRpcmVseQorICAgICAgICBpbnRvIERvY3VtZW50TG9hZGVyLgorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIE5vIG5ldyB0ZXN0cywgcmVmYWN0b3Ig
b25seS4KKworICAgICAgICAqIGxvYWRlci9Eb2N1bWVudExvYWRlci5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpEb2N1bWVudExvYWRlcjo6bWFpblJlY2VpdmVkRXJyb3IpOiBNb3ZlZCBmcm9tIE1h
aW5SZXNvdXJjZUxvYWRlcjo6cmVjZWl2ZWRFcnJvcgorICAgICAgICAgICAgYW5kIHRoZSBmYWls
dXJlIGNhc2UgaW4gTWFpblJlc291cmNlTG9hZGVyOjpub3RpZnlGaW5pc2hlZC4KKyAgICAgICAg
KFdlYkNvcmU6OkRvY3VtZW50TG9hZGVyOjpzdG9wTG9hZGluZyk6CisgICAgICAgIChXZWJDb3Jl
OjpEb2N1bWVudExvYWRlcjo6ZmluaXNoZWRMb2FkaW5nKToKKyAgICAgICAgKFdlYkNvcmU6OkRv
Y3VtZW50TG9hZGVyOjpoYW5kbGVTdWJzdGl0dXRlRGF0YUxvYWROb3cpOiBNb3ZlZCBmcm9tIE1h
aW5SZXNvdXJjZUxvYWRlci4KKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50TG9hZGVyOjpzdGFy
dERhdGFMb2FkVGltZXIpOiBNb3ZlZCBmcm9tIE1haW5SZXNvdXJjZUxvYWRlci4KKyAgICAgICAg
KFdlYkNvcmU6OkRvY3VtZW50TG9hZGVyOjpoYW5kbGVTdWJzdGl0dXRlRGF0YUxvYWRTb29uKTog
TW92ZWQgZnJvbSBNYWluUmVzb3VyY2VMb2FkZXIuCisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVu
dExvYWRlcjo6d2lsbFNlbmRSZXF1ZXN0KToKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50TG9h
ZGVyOjpjb250aW51ZUFmdGVyTmF2aWdhdGlvblBvbGljeSk6CisgICAgICAgIChXZWJDb3JlOjpE
b2N1bWVudExvYWRlcjo6cmVzcG9uc2VSZWNlaXZlZCk6CisgICAgICAgIChXZWJDb3JlOjpEb2N1
bWVudExvYWRlcjo6cmVjZWl2ZWREYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50TG9h
ZGVyOjpzdGFydExvYWRpbmdNYWluUmVzb3VyY2UpOiBNb3N0IG9mIE1haW5SZXNvdXJjZUxvYWRl
cjo6bG9hZAorICAgICAgICAgICAgbW92ZWQgaGVyZS4KKyAgICAgICAgKFdlYkNvcmU6OkRvY3Vt
ZW50TG9hZGVyOjpjYW5jZWxNYWluUmVzb3VyY2VMb2FkKTogTWFpblJlc291cmNlTG9hZGVyOjpj
YW5jZWwKKyAgICAgICAgICAgIG1vdmVkIGhlcmUuCisgICAgICAgICogbG9hZGVyL0RvY3VtZW50
TG9hZGVyLmg6CisgICAgICAgICogbG9hZGVyL01haW5SZXNvdXJjZUxvYWRlci5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpNYWluUmVzb3VyY2VMb2FkZXI6Om5vdGlmeUZpbmlzaGVkKToKKyAgICAg
ICAgKFdlYkNvcmU6Ok1haW5SZXNvdXJjZUxvYWRlcjo6cmVwb3J0TWVtb3J5VXNhZ2UpOgorICAg
ICAgICAoV2ViQ29yZTo6TWFpblJlc291cmNlTG9hZGVyOjpsb2FkKToKKyAgICAgICAgKFdlYkNv
cmU6Ok1haW5SZXNvdXJjZUxvYWRlcjo6aWRlbnRpZmllcik6CisgICAgICAgICogbG9hZGVyL01h
aW5SZXNvdXJjZUxvYWRlci5oOgorCiAyMDEzLTAzLTE5ICBUZXJyeSBBbmRlcnNvbiAgPHRkYW5k
ZXJzb25AY2hyb21pdW0ub3JnPgogCiAgICAgICAgIEhvdmVyIGVmZmVjdHMgZnJvbSBhIEdlc3R1
cmVUYXBEb3duIGFyZSBkaXNtaXNzZWQgYnkgYSBHZXN0dXJlVGFwIG9uIHRoZSBob3ZlciBlbGVt
ZW50Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>193885</attachid>
            <date>2013-03-19 11:48:23 -0700</date>
            <delta_ts>2013-03-19 12:42:06 -0700</delta_ts>
            <desc>Fix compile error</desc>
            <filename>dl_mrl_subst_etal.txt</filename>
            <type>text/plain</type>
            <size>22199</size>
            <attacher name="Nate Chapin">japhet</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL2xvYWRlci9NYWluUmVzb3VyY2VMb2FkZXIuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9NYWluUmVzb3VyY2VMb2FkZXIuY3BwCShy
ZXZpc2lvbiAxNDYyMTYpCisrKyBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvTWFpblJlc291cmNlTG9h
ZGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjYsOSArNjYsNyBAQAogbmFtZXNwYWNlIFdlYkNv
cmUgewogCiBNYWluUmVzb3VyY2VMb2FkZXI6Ok1haW5SZXNvdXJjZUxvYWRlcihEb2N1bWVudExv
YWRlciogZG9jdW1lbnRMb2FkZXIpCi0gICAgOiBtX2RhdGFMb2FkVGltZXIodGhpcywgJk1haW5S
ZXNvdXJjZUxvYWRlcjo6aGFuZGxlU3Vic3RpdHV0ZURhdGFMb2FkTm93KQotICAgICwgbV9kb2N1
bWVudExvYWRlcihkb2N1bWVudExvYWRlcikKLSAgICAsIG1faWRlbnRpZmllckZvckxvYWRXaXRo
b3V0UmVzb3VyY2VMb2FkZXIoMCkKKyAgICA6IG1fZG9jdW1lbnRMb2FkZXIoZG9jdW1lbnRMb2Fk
ZXIpCiB7CiB9CiAKQEAgLTgyLDQyICs4MCw2IEBACiAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBN
YWluUmVzb3VyY2VMb2FkZXIoZG9jdW1lbnRMb2FkZXIpKTsKIH0KIAotdm9pZCBNYWluUmVzb3Vy
Y2VMb2FkZXI6OnJlY2VpdmVkRXJyb3IoY29uc3QgUmVzb3VyY2VFcnJvciYgZXJyb3IpCi17Ci0g
ICAgLy8gQ2FsbGluZyByZWNlaXZlZE1haW5SZXNvdXJjZUVycm9yIHdpbGwgbGlrZWx5IHJlc3Vs
dCBpbiB0aGUgbGFzdCByZWZlcmVuY2UgdG8gdGhpcyBvYmplY3QgdG8gZ28gYXdheS4KLSAgICBS
ZWZQdHI8TWFpblJlc291cmNlTG9hZGVyPiBwcm90ZWN0KHRoaXMpOwotICAgIFJlZlB0cjxGcmFt
ZT4gcHJvdGVjdEZyYW1lKG1fZG9jdW1lbnRMb2FkZXItPmZyYW1lKCkpOwotCi0gICAgaWYgKG1f
aWRlbnRpZmllckZvckxvYWRXaXRob3V0UmVzb3VyY2VMb2FkZXIpIHsKLSAgICAgICAgQVNTRVJU
KCFsb2FkZXIoKSk7Ci0gICAgICAgIGZyYW1lTG9hZGVyKCktPmNsaWVudCgpLT5kaXNwYXRjaERp
ZEZhaWxMb2FkaW5nKGRvY3VtZW50TG9hZGVyKCksIG1faWRlbnRpZmllckZvckxvYWRXaXRob3V0
UmVzb3VyY2VMb2FkZXIsIGVycm9yKTsKLSAgICB9Ci0KLSAgICAvLyBJdCBpcyBpbXBvcnRhbnQg
dGhhdCB3ZSBjYWxsIERvY3VtZW50TG9hZGVyOjptYWluUmVjZWl2ZWRFcnJvciBiZWZvcmUgY2Fs
bGluZyAKLSAgICAvLyBSZXNvdXJjZUxvYWROb3RpZmllcjo6ZGlkRmFpbFRvTG9hZCBiZWNhdXNl
IG1haW5SZWNlaXZlZEVycm9yIGNsZWFycyBvdXQgdGhlIHJlbGV2YW50Ci0gICAgLy8gZG9jdW1l
bnQgbG9hZGVycy4gQWxzbywgbWFpblJlY2VpdmVkRXJyb3IgZW5kcyB1cCBjYWxsaW5nIGEgRnJh
bWVMb2FkRGVsZWdhdGUgbWV0aG9kCi0gICAgLy8gYW5kIGRpZEZhaWxUb0xvYWQgY2FsbHMgYSBS
ZXNvdXJjZUxvYWREZWxlZ2F0ZSBtZXRob2QgYW5kIHRoZXkgbmVlZCB0byBiZSBpbiB0aGUgY29y
cmVjdCBvcmRlci4KLSAgICBkb2N1bWVudExvYWRlcigpLT5tYWluUmVjZWl2ZWRFcnJvcihlcnJv
cik7Ci19Ci0KLXZvaWQgTWFpblJlc291cmNlTG9hZGVyOjpjYW5jZWwoKQotewotICAgIGNhbmNl
bChSZXNvdXJjZUVycm9yKCkpOwotfQotCi12b2lkIE1haW5SZXNvdXJjZUxvYWRlcjo6Y2FuY2Vs
KGNvbnN0IFJlc291cmNlRXJyb3ImIGVycm9yKQotewotICAgIFJlZlB0cjxNYWluUmVzb3VyY2VM
b2FkZXI+IHByb3RlY3QodGhpcyk7Ci0gICAgUmVzb3VyY2VFcnJvciByZXNvdXJjZUVycm9yID0g
ZXJyb3IuaXNOdWxsKCkgPyBmcmFtZUxvYWRlcigpLT5jYW5jZWxsZWRFcnJvcihyZXF1ZXN0KCkp
IDogZXJyb3I7Ci0KLSAgICBtX2RhdGFMb2FkVGltZXIuc3RvcCgpOwotICAgIGlmIChsb2FkZXIo
KSkKLSAgICAgICAgbG9hZGVyKCktPmNhbmNlbChyZXNvdXJjZUVycm9yKTsKLQotICAgIGNsZWFy
UmVzb3VyY2UoKTsKLSAgICByZWNlaXZlZEVycm9yKHJlc291cmNlRXJyb3IpOwotfQotCiB2b2lk
IE1haW5SZXNvdXJjZUxvYWRlcjo6Y2xlYXJSZXNvdXJjZSgpCiB7CiAgICAgaWYgKG1fcmVzb3Vy
Y2UpIHsKQEAgLTE3NywxOCArMTM5LDcgQEAKICAgICAgICAgcmV0dXJuOwogICAgIH0KICNlbmRp
ZgotCi0gICAgY29uc3QgUmVzb3VyY2VFcnJvciYgZXJyb3IgPSBtX3Jlc291cmNlLT5yZXNvdXJj
ZUVycm9yKCk7Ci0gICAgaWYgKGRvY3VtZW50TG9hZGVyKCktPmFwcGxpY2F0aW9uQ2FjaGVIb3N0
KCktPm1heWJlTG9hZEZhbGxiYWNrRm9yTWFpbkVycm9yKHJlcXVlc3QoKSwgZXJyb3IpKQotICAg
ICAgICByZXR1cm47Ci0KLSAgICAvLyBUaGVyZSBpcyBhIGJ1ZyBpbiBDRk5ldHdvcmsgd2hlcmUg
Y2FsbGJhY2tzIGNhbiBiZSBkaXNwYXRjaGVkIGV2ZW4gd2hlbiBsb2FkcyBhcmUgZGVmZXJyZWQu
Ci0gICAgLy8gU2VlIDxyZGFyOi8vcHJvYmxlbS82MzA0NjAwPiBmb3IgbW9yZSBkZXRhaWxzLgot
I2lmICFVU0UoQ0YpCi0gICAgQVNTRVJUKCFkZWZlcnNMb2FkaW5nKCkpOwotI2VuZGlmCi0gICAg
Ci0gICAgcmVjZWl2ZWRFcnJvcihlcnJvcik7CisgICAgbV9kb2N1bWVudExvYWRlci0+bWFpblJl
Y2VpdmVkRXJyb3IobV9yZXNvdXJjZS0+cmVzb3VyY2VFcnJvcigpKTsKIH0KIAogdm9pZCBNYWlu
UmVzb3VyY2VMb2FkZXI6OnJlcG9ydE1lbW9yeVVzYWdlKE1lbW9yeU9iamVjdEluZm8qIG1lbW9y
eU9iamVjdEluZm8pIGNvbnN0CkBAIC0xOTYsNTkgKzE0NywxMyBAQAogICAgIE1lbW9yeUNsYXNz
SW5mbyBpbmZvKG1lbW9yeU9iamVjdEluZm8sIHRoaXMsIFdlYkNvcmVNZW1vcnlUeXBlczo6TG9h
ZGVyKTsKICAgICBpbmZvLmFkZE1lbWJlcihtX3Jlc291cmNlLCAicmVzb3VyY2UiKTsKICAgICBp
bmZvLmFkZE1lbWJlcihtX2luaXRpYWxSZXF1ZXN0LCAiaW5pdGlhbFJlcXVlc3QiKTsKLSAgICBp
bmZvLmFkZE1lbWJlcihtX2RhdGFMb2FkVGltZXIsICJkYXRhTG9hZFRpbWVyIik7CiAgICAgaW5m
by5hZGRNZW1iZXIobV9kb2N1bWVudExvYWRlciwgImRvY3VtZW50TG9hZGVyIik7CiB9CiAKLXZv
aWQgTWFpblJlc291cmNlTG9hZGVyOjpoYW5kbGVTdWJzdGl0dXRlRGF0YUxvYWROb3coTWFpblJl
c291cmNlTG9hZGVyVGltZXIqKQotewotICAgIFJlZlB0cjxNYWluUmVzb3VyY2VMb2FkZXI+IHBy
b3RlY3QodGhpcyk7Ci0KLSAgICBLVVJMIHVybCA9IG1fZG9jdW1lbnRMb2FkZXItPnN1YnN0aXR1
dGVEYXRhKCkucmVzcG9uc2VVUkwoKTsKLSAgICBpZiAodXJsLmlzRW1wdHkoKSkKLSAgICAgICAg
dXJsID0gbV9pbml0aWFsUmVxdWVzdC51cmwoKTsKLQotICAgIC8vIENsZWFyIHRoZSBpbml0aWFs
IHJlcXVlc3QgaGVyZSBzbyB0aGF0IHN1YnNlcXVlbnQgZW50cmllcyBpbnRvIHRoZQotICAgIC8v
IGxvYWRlciB3aWxsIG5vdCB0aGluayB0aGVyZSdzIHN0aWxsIGEgZGVmZXJyZWQgbG9hZCBsZWZ0
IHRvIGRvLgotICAgIG1faW5pdGlhbFJlcXVlc3QgPSBSZXNvdXJjZVJlcXVlc3QoKTsKLSAgICAg
ICAgCi0gICAgUmVzb3VyY2VSZXNwb25zZSByZXNwb25zZSh1cmwsIG1fZG9jdW1lbnRMb2FkZXIt
PnN1YnN0aXR1dGVEYXRhKCkubWltZVR5cGUoKSwgbV9kb2N1bWVudExvYWRlci0+c3Vic3RpdHV0
ZURhdGEoKS5jb250ZW50KCktPnNpemUoKSwgbV9kb2N1bWVudExvYWRlci0+c3Vic3RpdHV0ZURh
dGEoKS50ZXh0RW5jb2RpbmcoKSwgIiIpOwotICAgIHJlc3BvbnNlUmVjZWl2ZWQoMCwgcmVzcG9u
c2UpOwotfQotCi12b2lkIE1haW5SZXNvdXJjZUxvYWRlcjo6c3RhcnREYXRhTG9hZFRpbWVyKCkK
LXsKLSAgICBtX2RhdGFMb2FkVGltZXIuc3RhcnRPbmVTaG90KDApOwotCi0jaWYgSEFWRShSVU5M
T09QX1RJTUVSKQotICAgIGlmIChTY2hlZHVsZVBhaXJIYXNoU2V0KiBzY2hlZHVsZWRQYWlycyA9
IG1fZG9jdW1lbnRMb2FkZXItPmZyYW1lKCktPnBhZ2UoKS0+c2NoZWR1bGVkUnVuTG9vcFBhaXJz
KCkpCi0gICAgICAgIG1fZGF0YUxvYWRUaW1lci5zY2hlZHVsZSgqc2NoZWR1bGVkUGFpcnMpOwot
I2VuZGlmCi19Ci0KLXZvaWQgTWFpblJlc291cmNlTG9hZGVyOjpoYW5kbGVTdWJzdGl0dXRlRGF0
YUxvYWRTb29uKGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcikKLXsKLSAgICBtX2luaXRpYWxSZXF1
ZXN0ID0gcjsKLSAgICAKLSAgICBpZiAobV9kb2N1bWVudExvYWRlci0+ZGVmZXJNYWluUmVzb3Vy
Y2VEYXRhTG9hZCgpKQotICAgICAgICBzdGFydERhdGFMb2FkVGltZXIoKTsKLSAgICBlbHNlCi0g
ICAgICAgIGhhbmRsZVN1YnN0aXR1dGVEYXRhTG9hZE5vdygwKTsKLX0KLQogdm9pZCBNYWluUmVz
b3VyY2VMb2FkZXI6OmxvYWQoY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiBpbml0aWFsUmVxdWVzdCkK
IHsKLSAgICBSZWZQdHI8TWFpblJlc291cmNlTG9hZGVyPiBwcm90ZWN0KHRoaXMpOwogICAgIFJl
c291cmNlUmVxdWVzdCByZXF1ZXN0KGluaXRpYWxSZXF1ZXN0KTsKIAotICAgIGlmIChtX2RvY3Vt
ZW50TG9hZGVyLT5zdWJzdGl0dXRlRGF0YSgpLmlzVmFsaWQoKSkgewotICAgICAgICBtX2lkZW50
aWZpZXJGb3JMb2FkV2l0aG91dFJlc291cmNlTG9hZGVyID0gbV9kb2N1bWVudExvYWRlci0+ZnJh
bWUoKS0+cGFnZSgpLT5wcm9ncmVzcygpLT5jcmVhdGVVbmlxdWVJZGVudGlmaWVyKCk7Ci0gICAg
ICAgIGZyYW1lTG9hZGVyKCktPm5vdGlmaWVyKCktPmFzc2lnbklkZW50aWZpZXJUb0luaXRpYWxS
ZXF1ZXN0KG1faWRlbnRpZmllckZvckxvYWRXaXRob3V0UmVzb3VyY2VMb2FkZXIsIGRvY3VtZW50
TG9hZGVyKCksIHJlcXVlc3QpOwotICAgICAgICBmcmFtZUxvYWRlcigpLT5ub3RpZmllcigpLT5k
aXNwYXRjaFdpbGxTZW5kUmVxdWVzdChkb2N1bWVudExvYWRlcigpLCBtX2lkZW50aWZpZXJGb3JM
b2FkV2l0aG91dFJlc291cmNlTG9hZGVyLCByZXF1ZXN0LCBSZXNvdXJjZVJlc3BvbnNlKCkpOwot
ICAgICAgICBoYW5kbGVTdWJzdGl0dXRlRGF0YUxvYWRTb29uKHJlcXVlc3QpOwotICAgICAgICBy
ZXR1cm47Ci0gICAgfQotCiAgICAgREVGSU5FX1NUQVRJQ19MT0NBTChSZXNvdXJjZUxvYWRlck9w
dGlvbnMsIG1haW5SZXNvdXJjZUxvYWRPcHRpb25zLAogICAgICAgICAoU2VuZENhbGxiYWNrcywg
U25pZmZDb250ZW50LCBCdWZmZXJEYXRhLCBBbGxvd1N0b3JlZENyZWRlbnRpYWxzLCBBc2tDbGll
bnRGb3JDcm9zc09yaWdpbkNyZWRlbnRpYWxzLCBTa2lwU2VjdXJpdHlDaGVjaykpOwogICAgIENh
Y2hlZFJlc291cmNlUmVxdWVzdCBjYWNoZWRSZXNvdXJjZVJlcXVlc3QocmVxdWVzdCwgbWFpblJl
c291cmNlTG9hZE9wdGlvbnMpOwpAQCAtMjU3LDIxICsxNjIsNyBAQAogICAgICAgICBkb2N1bWVu
dExvYWRlcigpLT5zZXRSZXF1ZXN0KFJlc291cmNlUmVxdWVzdCgpKTsKICAgICAgICAgcmV0dXJu
OwogICAgIH0KLSAgICBpZiAoIWxvYWRlcigpKSB7Ci0gICAgICAgIG1faWRlbnRpZmllckZvckxv
YWRXaXRob3V0UmVzb3VyY2VMb2FkZXIgPSBtX2RvY3VtZW50TG9hZGVyLT5mcmFtZSgpLT5wYWdl
KCktPnByb2dyZXNzKCktPmNyZWF0ZVVuaXF1ZUlkZW50aWZpZXIoKTsKLSAgICAgICAgZnJhbWVM
b2FkZXIoKS0+bm90aWZpZXIoKS0+YXNzaWduSWRlbnRpZmllclRvSW5pdGlhbFJlcXVlc3QobV9p
ZGVudGlmaWVyRm9yTG9hZFdpdGhvdXRSZXNvdXJjZUxvYWRlciwgZG9jdW1lbnRMb2FkZXIoKSwg
cmVxdWVzdCk7Ci0gICAgICAgIGZyYW1lTG9hZGVyKCktPm5vdGlmaWVyKCktPmRpc3BhdGNoV2ls
bFNlbmRSZXF1ZXN0KGRvY3VtZW50TG9hZGVyKCksIG1faWRlbnRpZmllckZvckxvYWRXaXRob3V0
UmVzb3VyY2VMb2FkZXIsIHJlcXVlc3QsIFJlc291cmNlUmVzcG9uc2UoKSk7Ci0gICAgfQogICAg
IG1fcmVzb3VyY2UtPmFkZENsaWVudCh0aGlzKTsKLQotICAgIC8vIEEgYnVuY2ggb2YgaGVhZGVy
cyBhcmUgc2V0IHdoZW4gdGhlIHVuZGVybHlpbmcgUmVzb3VyY2VMb2FkZXIgaXMgY3JlYXRlZCwg
YW5kIERvY3VtZW50TG9hZGVyOjptX3JlcXVlc3QgbmVlZHMgdG8gaW5jbHVkZSB0aG9zZS4KLSAg
ICBpZiAobG9hZGVyKCkpCi0gICAgICAgIHJlcXVlc3QgPSBsb2FkZXIoKS0+b3JpZ2luYWxSZXF1
ZXN0KCk7Ci0gICAgLy8gSWYgdGhlcmUgd2FzIGEgZnJhZ21lbnQgaWRlbnRpZmllciBvbiBpbml0
aWFsUmVxdWVzdCwgdGhlIGNhY2hlIHdpbGwgaGF2ZSBzdHJpcHBlZCBpdC4gRG9jdW1lbnRMb2Fk
ZXI6Om1fcmVxdWVzdCBzaG91bGQgaW5jbHVkZQotICAgIC8vIHRoZSBmcmFnbWVudCBpZGVudGlm
aWVyLCBzbyBhZGQgdGhhdCBiYWNrIGluLgotICAgIGlmIChlcXVhbElnbm9yaW5nRnJhZ21lbnRJ
ZGVudGlmaWVyKGluaXRpYWxSZXF1ZXN0LnVybCgpLCByZXF1ZXN0LnVybCgpKSkKLSAgICAgICAg
cmVxdWVzdC5zZXRVUkwoaW5pdGlhbFJlcXVlc3QudXJsKCkpOwotICAgIGRvY3VtZW50TG9hZGVy
KCktPnNldFJlcXVlc3QocmVxdWVzdCk7CiB9CiAKIHZvaWQgTWFpblJlc291cmNlTG9hZGVyOjpz
ZXREZWZlcnNMb2FkaW5nKGJvb2wgZGVmZXJzKQpAQCAtMjk4LDkgKzE4OSw2IEBACiAKIHVuc2ln
bmVkIGxvbmcgTWFpblJlc291cmNlTG9hZGVyOjppZGVudGlmaWVyKCkgY29uc3QKIHsKLSAgICBB
U1NFUlQoIW1faWRlbnRpZmllckZvckxvYWRXaXRob3V0UmVzb3VyY2VMb2FkZXIgfHwgIWxvYWRl
cigpIHx8ICFsb2FkZXIoKS0+aWRlbnRpZmllcigpKTsKLSAgICBpZiAobV9pZGVudGlmaWVyRm9y
TG9hZFdpdGhvdXRSZXNvdXJjZUxvYWRlcikKLSAgICAgICAgcmV0dXJuIG1faWRlbnRpZmllckZv
ckxvYWRXaXRob3V0UmVzb3VyY2VMb2FkZXI7CiAgICAgaWYgKFJlc291cmNlTG9hZGVyKiByZXNv
dXJjZUxvYWRlciA9IGxvYWRlcigpKQogICAgICAgICByZXR1cm4gcmVzb3VyY2VMb2FkZXItPmlk
ZW50aWZpZXIoKTsKICAgICByZXR1cm4gMDsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2xvYWRlci9N
YWluUmVzb3VyY2VMb2FkZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9sb2FkZXIv
TWFpblJlc291cmNlTG9hZGVyLmgJKHJldmlzaW9uIDE0NjIxNikKKysrIFNvdXJjZS9XZWJDb3Jl
L2xvYWRlci9NYWluUmVzb3VyY2VMb2FkZXIuaAkod29ya2luZyBjb3B5KQpAQCAtMzYsMTIgKzM2
LDYgQEAKICNpbmNsdWRlICJTdWJzdGl0dXRlRGF0YS5oIgogI2luY2x1ZGUgPHd0Zi9Gb3J3YXJk
Lmg+CiAKLSNpZiBIQVZFKFJVTkxPT1BfVElNRVIpCi0jaW5jbHVkZSA8d3RmL1J1bkxvb3BUaW1l
ci5oPgotI2Vsc2UKLSNpbmNsdWRlICJUaW1lci5oIgotI2VuZGlmCi0KIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIAogY2xhc3MgUmVzb3VyY2VSZXF1ZXN0OwpAQCAtNTMsMzAgKzQ3LDE4IEBACiAgICAg
dmlydHVhbCB+TWFpblJlc291cmNlTG9hZGVyKCk7CiAKICAgICB2b2lkIGxvYWQoY29uc3QgUmVz
b3VyY2VSZXF1ZXN0Jik7Ci0gICAgdm9pZCBjYW5jZWwoKTsKLSAgICB2b2lkIGNhbmNlbChjb25z
dCBSZXNvdXJjZUVycm9yJik7CiAgICAgUmVzb3VyY2VMb2FkZXIqIGxvYWRlcigpIGNvbnN0Owog
ICAgIFBhc3NSZWZQdHI8UmVzb3VyY2VCdWZmZXI+IHJlc291cmNlRGF0YSgpOwogCiAgICAgdm9p
ZCBzZXREZWZlcnNMb2FkaW5nKGJvb2wpOwogICAgIHZvaWQgc2V0RGF0YUJ1ZmZlcmluZ1BvbGlj
eShEYXRhQnVmZmVyaW5nUG9saWN5KTsKIAotI2lmIEhBVkUoUlVOTE9PUF9USU1FUikKLSAgICB0
eXBlZGVmIFJ1bkxvb3BUaW1lcjxNYWluUmVzb3VyY2VMb2FkZXI+IE1haW5SZXNvdXJjZUxvYWRl
clRpbWVyOwotI2Vsc2UKLSAgICB0eXBlZGVmIFRpbWVyPE1haW5SZXNvdXJjZUxvYWRlcj4gTWFp
blJlc291cmNlTG9hZGVyVGltZXI7Ci0jZW5kaWYKLQogICAgIENhY2hlZFJhd1Jlc291cmNlKiBj
YWNoZWRNYWluUmVzb3VyY2UoKSB7IHJldHVybiBtX3Jlc291cmNlLmdldCgpOyB9Ci0gICAgdW5z
aWduZWQgbG9uZyBpZGVudGlmaWVyRm9yTG9hZFdpdGhvdXRSZXNvdXJjZUxvYWRlcigpIGNvbnN0
IHsgcmV0dXJuIG1faWRlbnRpZmllckZvckxvYWRXaXRob3V0UmVzb3VyY2VMb2FkZXI7IH0KLSAg
ICB2b2lkIGNsZWFySWRlbnRpZmllckZvckxvYWRXaXRob3V0UmVzb3VyY2VMb2FkZXIoKSB7IG1f
aWRlbnRpZmllckZvckxvYWRXaXRob3V0UmVzb3VyY2VMb2FkZXIgPSAwOyB9CiAKICAgICB1bnNp
Z25lZCBsb25nIGlkZW50aWZpZXIoKSBjb25zdDsKIAogICAgIHZvaWQgcmVwb3J0TWVtb3J5VXNh
Z2UoTWVtb3J5T2JqZWN0SW5mbyopIGNvbnN0OwogCi0gICAgdm9pZCB0YWtlSWRlbnRpZmllckZy
b21SZXNvdXJjZUxvYWRlcigpIHsgbV9pZGVudGlmaWVyRm9yTG9hZFdpdGhvdXRSZXNvdXJjZUxv
YWRlciA9IGlkZW50aWZpZXIoKTsgfQotICAgIHZvaWQgaGFuZGxlU3Vic3RpdHV0ZURhdGFMb2Fk
U29vbihjb25zdCBSZXNvdXJjZVJlcXVlc3QmKTsKICAgICB2b2lkIGNsZWFyUmVzb3VyY2UoKTsK
IAogcHJpdmF0ZToKQEAgLTg3LDE2ICs2OSw2IEBACiAgICAgdmlydHVhbCB2b2lkIGRhdGFSZWNl
aXZlZChDYWNoZWRSZXNvdXJjZSosIGNvbnN0IGNoYXIqIGRhdGEsIGludCBkYXRhTGVuZ3RoKSBP
VkVSUklERTsKICAgICB2aXJ0dWFsIHZvaWQgbm90aWZ5RmluaXNoZWQoQ2FjaGVkUmVzb3VyY2Uq
KSBPVkVSUklERTsKIAotICAgIHZvaWQgaGFuZGxlU3Vic3RpdHV0ZURhdGFMb2FkTm93KE1haW5S
ZXNvdXJjZUxvYWRlclRpbWVyKik7Ci0KLSAgICB2b2lkIHN0YXJ0RGF0YUxvYWRUaW1lcigpOwot
Ci0gICAgdm9pZCByZWNlaXZlZEVycm9yKGNvbnN0IFJlc291cmNlRXJyb3ImKTsKLSAgICAKLSNp
ZiBQTEFURk9STShRVCkKLSAgICB2b2lkIHN1YnN0aXR1dGVNSU1FVHlwZUZyb21QbHVnaW5EYXRh
YmFzZShjb25zdCBSZXNvdXJjZVJlc3BvbnNlJik7Ci0jZW5kaWYKLQogICAgIEZyYW1lTG9hZGVy
KiBmcmFtZUxvYWRlcigpIGNvbnN0OwogICAgIERvY3VtZW50TG9hZGVyKiBkb2N1bWVudExvYWRl
cigpIGNvbnN0IHsgcmV0dXJuIG1fZG9jdW1lbnRMb2FkZXIuZ2V0KCk7IH0KIApAQCAtMTA4LDEw
ICs4MCw3IEBACiAKICAgICBSZXNvdXJjZVJlcXVlc3QgbV9pbml0aWFsUmVxdWVzdDsKIAotICAg
IE1haW5SZXNvdXJjZUxvYWRlclRpbWVyIG1fZGF0YUxvYWRUaW1lcjsKICAgICBSZWZQdHI8RG9j
dW1lbnRMb2FkZXI+IG1fZG9jdW1lbnRMb2FkZXI7Ci0KLSAgICB1bnNpZ25lZCBsb25nIG1faWRl
bnRpZmllckZvckxvYWRXaXRob3V0UmVzb3VyY2VMb2FkZXI7CiB9OwogCiB9CkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRMb2FkZXIuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRMb2FkZXIuaAkocmV2aXNpb24gMTQ2MjE2KQorKysgU291
cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50TG9hZGVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTQ1
LDYgKzQ1LDEwIEBACiAjaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgogI2luY2x1ZGUgPHd0Zi9WZWN0
b3IuaD4KIAorI2lmIEhBVkUoUlVOTE9PUF9USU1FUikKKyNpbmNsdWRlICJSdW5Mb29wVGltZXIu
aCIKKyNlbmRpZgorCiBuYW1lc3BhY2UgV1RGIHsKIGNsYXNzIFNjaGVkdWxlUGFpcjsKIH0KQEAg
LTI5MSw2ICsyOTUsMTUgQEAKICAgICAgICAgdm9pZCBzdG9wTG9hZGluZ0ZvclBvbGljeUNoYW5n
ZSgpOwogICAgICAgICBSZXNvdXJjZUVycm9yIGludGVycnVwdGVkRm9yUG9saWN5Q2hhbmdlRXJy
b3IoKSBjb25zdDsKIAorI2lmIEhBVkUoUlVOTE9PUF9USU1FUikKKyAgICAgICAgdHlwZWRlZiBS
dW5Mb29wVGltZXI8RG9jdW1lbnRMb2FkZXI+IERvY3VtZW50TG9hZGVyVGltZXI7CisjZWxzZQor
ICAgICAgICB0eXBlZGVmIFRpbWVyPERvY3VtZW50TG9hZGVyPiBEb2N1bWVudExvYWRlclRpbWVy
OworI2VuZGlmCisgICAgICAgIHZvaWQgaGFuZGxlU3Vic3RpdHV0ZURhdGFMb2FkU29vbigpOwor
ICAgICAgICB2b2lkIGhhbmRsZVN1YnN0aXR1dGVEYXRhTG9hZE5vdyhEb2N1bWVudExvYWRlclRp
bWVyKik7CisgICAgICAgIHZvaWQgc3RhcnREYXRhTG9hZFRpbWVyKCk7CisKICAgICAgICAgdm9p
ZCBkZWxpdmVyU3Vic3RpdHV0ZVJlc291cmNlc0FmdGVyRGVsYXkoKTsKICAgICAgICAgdm9pZCBz
dWJzdGl0dXRlUmVzb3VyY2VEZWxpdmVyeVRpbWVyRmlyZWQoVGltZXI8RG9jdW1lbnRMb2FkZXI+
Kik7CiAgICAgICAgICAgICAgICAgCkBAIC0zNzUsOSArMzg4LDExIEBACiAgICAgICAgIERvY3Vt
ZW50TG9hZFRpbWluZyBtX2RvY3VtZW50TG9hZFRpbWluZzsKIAogICAgICAgICBkb3VibGUgbV90
aW1lT2ZMYXN0RGF0YVJlY2VpdmVkOworICAgICAgICB1bnNpZ25lZCBsb25nIG1faWRlbnRpZmll
ckZvckxvYWRXaXRob3V0UmVzb3VyY2VMb2FkZXI7CiAKKyAgICAgICAgRG9jdW1lbnRMb2FkZXJU
aW1lciBtX2RhdGFMb2FkVGltZXI7CiAgICAgICAgIGJvb2wgbV93YWl0aW5nRm9yQ29udGVudFBv
bGljeTsKLSAgICAKKwogICAgICAgICBSZWZQdHI8SWNvbkxvYWREZWNpc2lvbkNhbGxiYWNrPiBt
X2ljb25Mb2FkRGVjaXNpb25DYWxsYmFjazsKICAgICAgICAgUmVmUHRyPEljb25EYXRhQ2FsbGJh
Y2s+IG1faWNvbkRhdGFDYWxsYmFjazsKIApJbmRleDogU291cmNlL1dlYkNvcmUvbG9hZGVyL0Rv
Y3VtZW50TG9hZGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9j
dW1lbnRMb2FkZXIuY3BwCShyZXZpc2lvbiAxNDYyMTYpCisrKyBTb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvRG9jdW1lbnRMb2FkZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01MSw2ICs1MSw3IEBACiAj
aW5jbHVkZSAiTWFpblJlc291cmNlTG9hZGVyLmgiCiAjaW5jbHVkZSAiTWVtb3J5Q2FjaGUuaCIK
ICNpbmNsdWRlICJQYWdlLmgiCisjaW5jbHVkZSAiUHJvZ3Jlc3NUcmFja2VyLmgiCiAjaW5jbHVk
ZSAiUmVzb3VyY2VCdWZmZXIuaCIKICNpbmNsdWRlICJTY2hlbWVSZWdpc3RyeS5oIgogI2luY2x1
ZGUgIlNldHRpbmdzLmgiCkBAIC0xMTIsNiArMTEzLDggQEAKICAgICAsIG1fc3Vic3RpdHV0ZVJl
c291cmNlRGVsaXZlcnlUaW1lcih0aGlzLCAmRG9jdW1lbnRMb2FkZXI6OnN1YnN0aXR1dGVSZXNv
dXJjZURlbGl2ZXJ5VGltZXJGaXJlZCkKICAgICAsIG1fZGlkQ3JlYXRlR2xvYmFsSGlzdG9yeUVu
dHJ5KGZhbHNlKQogICAgICwgbV90aW1lT2ZMYXN0RGF0YVJlY2VpdmVkKDAuMCkKKyAgICAsIG1f
aWRlbnRpZmllckZvckxvYWRXaXRob3V0UmVzb3VyY2VMb2FkZXIoMCkKKyAgICAsIG1fZGF0YUxv
YWRUaW1lcih0aGlzLCAmRG9jdW1lbnRMb2FkZXI6OmhhbmRsZVN1YnN0aXR1dGVEYXRhTG9hZE5v
dykKICAgICAsIG1fd2FpdGluZ0ZvckNvbnRlbnRQb2xpY3koZmFsc2UpCiAgICAgLCBtX2FwcGxp
Y2F0aW9uQ2FjaGVIb3N0KGFkb3B0UHRyKG5ldyBBcHBsaWNhdGlvbkNhY2hlSG9zdCh0aGlzKSkp
CiB7CkBAIC0yMTYsNyArMjE5LDIwIEBACiB2b2lkIERvY3VtZW50TG9hZGVyOjptYWluUmVjZWl2
ZWRFcnJvcihjb25zdCBSZXNvdXJjZUVycm9yJiBlcnJvcikKIHsKICAgICBBU1NFUlQoIWVycm9y
LmlzTnVsbCgpKTsKKyAgICBpZiAobV9hcHBsaWNhdGlvbkNhY2hlSG9zdC0+bWF5YmVMb2FkRmFs
bGJhY2tGb3JNYWluRXJyb3IocmVxdWVzdCgpLCBlcnJvcikpCisgICAgICAgIHJldHVybjsKIAor
ICAgIGlmIChtX2lkZW50aWZpZXJGb3JMb2FkV2l0aG91dFJlc291cmNlTG9hZGVyKSB7CisgICAg
ICAgIEFTU0VSVCghbWFpblJlc291cmNlTG9hZGVyKCkpOworICAgICAgICBmcmFtZUxvYWRlcigp
LT5jbGllbnQoKS0+ZGlzcGF0Y2hEaWRGYWlsTG9hZGluZyh0aGlzLCBtX2lkZW50aWZpZXJGb3JM
b2FkV2l0aG91dFJlc291cmNlTG9hZGVyLCBlcnJvcik7CisgICAgfQorCisgICAgLy8gVGhlcmUg
aXMgYSBidWcgaW4gQ0ZOZXR3b3JrIHdoZXJlIGNhbGxiYWNrcyBjYW4gYmUgZGlzcGF0Y2hlZCBl
dmVuIHdoZW4gbG9hZHMgYXJlIGRlZmVycmVkLgorICAgIC8vIFNlZSA8cmRhcjovL3Byb2JsZW0v
NjMwNDYwMD4gZm9yIG1vcmUgZGV0YWlscy4KKyNpZiAhVVNFKENGKQorICAgIEFTU0VSVCghbV9m
cmFtZS0+cGFnZSgpLT5kZWZlcnNMb2FkaW5nKCkpOworI2VuZGlmCisKICAgICBtX2FwcGxpY2F0
aW9uQ2FjaGVIb3N0LT5mYWlsZWRMb2FkaW5nTWFpblJlc291cmNlKCk7CiAKICAgICBpZiAoIWZy
YW1lTG9hZGVyKCkpCkBAIC0yNzgsNyArMjk0LDcgQEAKICAgICAKICAgICBpZiAobV9tYWluUmVz
b3VyY2VMb2FkZXIpCiAgICAgICAgIC8vIFN0b3AgdGhlIG1haW4gcmVzb3VyY2UgbG9hZGVyIGFu
ZCBsZXQgaXQgc2VuZCB0aGUgY2FuY2VsbGVkIG1lc3NhZ2UuCi0gICAgICAgIG1fbWFpblJlc291
cmNlTG9hZGVyLT5jYW5jZWwoZnJhbWVMb2FkZXItPmNhbmNlbGxlZEVycm9yKG1fcmVxdWVzdCkp
OworICAgICAgICBjYW5jZWxNYWluUmVzb3VyY2VMb2FkKGZyYW1lTG9hZGVyLT5jYW5jZWxsZWRF
cnJvcihtX3JlcXVlc3QpKTsKICAgICBlbHNlIGlmICghbV9zdWJyZXNvdXJjZUxvYWRlcnMuaXNF
bXB0eSgpKQogICAgICAgICAvLyBUaGUgbWFpbiByZXNvdXJjZSBsb2FkZXIgYWxyZWFkeSBmaW5p
c2hlZCBsb2FkaW5nLiBTZXQgdGhlIGNhbmNlbGxlZCBlcnJvciBvbiB0aGUgCiAgICAgICAgIC8v
IGRvY3VtZW50IGFuZCBsZXQgdGhlIHN1YnJlc291cmNlTG9hZGVycyBzZW5kIGluZGl2aWR1YWwg
Y2FuY2VsbGVkIG1lc3NhZ2VzIGJlbG93LgpAQCAtMzI0LDkgKzM0MCw5IEBACiAKICAgICBSZWZQ
dHI8RG9jdW1lbnRMb2FkZXI+IHByb3RlY3QodGhpcyk7CiAKLSAgICBpZiAobV9tYWluUmVzb3Vy
Y2VMb2FkZXIgJiYgbV9tYWluUmVzb3VyY2VMb2FkZXItPmlkZW50aWZpZXJGb3JMb2FkV2l0aG91
dFJlc291cmNlTG9hZGVyKCkpIHsKLSAgICAgICAgZnJhbWVMb2FkZXIoKS0+bm90aWZpZXIoKS0+
ZGlzcGF0Y2hEaWRGaW5pc2hMb2FkaW5nKHRoaXMsIG1fbWFpblJlc291cmNlTG9hZGVyLT5pZGVu
dGlmaWVyKCksIGZpbmlzaFRpbWUpOwotICAgICAgICBtX21haW5SZXNvdXJjZUxvYWRlci0+Y2xl
YXJJZGVudGlmaWVyRm9yTG9hZFdpdGhvdXRSZXNvdXJjZUxvYWRlcigpOworICAgIGlmIChtX2lk
ZW50aWZpZXJGb3JMb2FkV2l0aG91dFJlc291cmNlTG9hZGVyKSB7CisgICAgICAgIGZyYW1lTG9h
ZGVyKCktPm5vdGlmaWVyKCktPmRpc3BhdGNoRGlkRmluaXNoTG9hZGluZyh0aGlzLCBtX2lkZW50
aWZpZXJGb3JMb2FkV2l0aG91dFJlc291cmNlTG9hZGVyLCBmaW5pc2hUaW1lKTsKKyAgICAgICAg
bV9pZGVudGlmaWVyRm9yTG9hZFdpdGhvdXRSZXNvdXJjZUxvYWRlciA9IDA7CiAgICAgfQogCiAj
aWYgVVNFKENPTlRFTlRfRklMVEVSSU5HKQpAQCAtMzg5LDYgKzQwNSwzMyBAQAogICAgIHJldHVy
biBmYWxzZTsKIH0KIAordm9pZCBEb2N1bWVudExvYWRlcjo6aGFuZGxlU3Vic3RpdHV0ZURhdGFM
b2FkTm93KERvY3VtZW50TG9hZGVyVGltZXIqKQoreworICAgIEtVUkwgdXJsID0gbV9zdWJzdGl0
dXRlRGF0YS5yZXNwb25zZVVSTCgpOworICAgIGlmICh1cmwuaXNFbXB0eSgpKQorICAgICAgICB1
cmwgPSBtX3JlcXVlc3QudXJsKCk7CisgICAgUmVzb3VyY2VSZXNwb25zZSByZXNwb25zZSh1cmws
IG1fc3Vic3RpdHV0ZURhdGEubWltZVR5cGUoKSwgbV9zdWJzdGl0dXRlRGF0YS5jb250ZW50KCkt
PnNpemUoKSwgbV9zdWJzdGl0dXRlRGF0YS50ZXh0RW5jb2RpbmcoKSwgIiIpOworICAgIHJlc3Bv
bnNlUmVjZWl2ZWQocmVzcG9uc2UpOworfQorCit2b2lkIERvY3VtZW50TG9hZGVyOjpzdGFydERh
dGFMb2FkVGltZXIoKQoreworICAgIG1fZGF0YUxvYWRUaW1lci5zdGFydE9uZVNob3QoMCk7CisK
KyNpZiBIQVZFKFJVTkxPT1BfVElNRVIpCisgICAgaWYgKFNjaGVkdWxlUGFpckhhc2hTZXQqIHNj
aGVkdWxlZFBhaXJzID0gbV9mcmFtZS0+cGFnZSgpLT5zY2hlZHVsZWRSdW5Mb29wUGFpcnMoKSkK
KyAgICAgICAgbV9kYXRhTG9hZFRpbWVyLnNjaGVkdWxlKCpzY2hlZHVsZWRQYWlycyk7CisjZW5k
aWYKK30KKwordm9pZCBEb2N1bWVudExvYWRlcjo6aGFuZGxlU3Vic3RpdHV0ZURhdGFMb2FkU29v
bigpCit7CisgICAgaWYgKGRlZmVyTWFpblJlc291cmNlRGF0YUxvYWQoKSkKKyAgICAgICAgc3Rh
cnREYXRhTG9hZFRpbWVyKCk7CisgICAgZWxzZQorICAgICAgICBoYW5kbGVTdWJzdGl0dXRlRGF0
YUxvYWROb3coMCk7Cit9CisKIHZvaWQgRG9jdW1lbnRMb2FkZXI6OndpbGxTZW5kUmVxdWVzdChS
ZXNvdXJjZVJlcXVlc3QmIG5ld1JlcXVlc3QsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlZGly
ZWN0UmVzcG9uc2UpCiB7CiAgICAgLy8gTm90ZSB0aGF0IHRoZXJlIGFyZSBubyBhc3NlcnRzIGhl
cmUgYXMgdGhlcmUgYXJlIGZvciB0aGUgb3RoZXIgY2FsbGJhY2tzLiBUaGlzIGlzIGR1ZSB0byB0
aGUKQEAgLTQ0Miw3ICs0ODUsNyBAQAogICAgICAgICBBU1NFUlQoIW1fc3Vic3RpdHV0ZURhdGEu
aXNWYWxpZCgpKTsKICAgICAgICAgbV9hcHBsaWNhdGlvbkNhY2hlSG9zdC0+bWF5YmVMb2FkTWFp
blJlc291cmNlRm9yUmVkaXJlY3QobmV3UmVxdWVzdCwgbV9zdWJzdGl0dXRlRGF0YSk7CiAgICAg
ICAgIGlmIChtX3N1YnN0aXR1dGVEYXRhLmlzVmFsaWQoKSkKLSAgICAgICAgICAgIG1fbWFpblJl
c291cmNlTG9hZGVyLT50YWtlSWRlbnRpZmllckZyb21SZXNvdXJjZUxvYWRlcigpOworICAgICAg
ICAgICAgbV9pZGVudGlmaWVyRm9yTG9hZFdpdGhvdXRSZXNvdXJjZUxvYWRlciA9IG1haW5SZXNv
dXJjZUxvYWRlcigpLT5pZGVudGlmaWVyKCk7CiAgICAgfQogCiAgICAgLy8gRklYTUU6IElkZWFs
bHkgd2UnZCBzdG9wIHRoZSBJL08gdW50aWwgd2UgaGVhciBiYWNrIGZyb20gdGhlIG5hdmlnYXRp
b24gcG9saWN5IGRlbGVnYXRlCkBAIC00NTgsNyArNTAxLDcgQEAKICAgICBzdGF0aWNfY2FzdDxE
b2N1bWVudExvYWRlcio+KGFyZ3VtZW50KS0+Y29udGludWVBZnRlck5hdmlnYXRpb25Qb2xpY3ko
cmVxdWVzdCwgc2hvdWxkQ29udGludWUpOwogfQogCi12b2lkIERvY3VtZW50TG9hZGVyOjpjb250
aW51ZUFmdGVyTmF2aWdhdGlvblBvbGljeShjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3Qs
IGJvb2wgc2hvdWxkQ29udGludWUpCit2b2lkIERvY3VtZW50TG9hZGVyOjpjb250aW51ZUFmdGVy
TmF2aWdhdGlvblBvbGljeShjb25zdCBSZXNvdXJjZVJlcXVlc3QmLCBib29sIHNob3VsZENvbnRp
bnVlKQogewogICAgIGlmICghc2hvdWxkQ29udGludWUpCiAgICAgICAgIHN0b3BMb2FkaW5nRm9y
UG9saWN5Q2hhbmdlKCk7CkBAIC00NzcsNyArNTIwLDcgQEAKICAgICAgICAgcmVzb3VyY2VMb2Fk
ZXItPnNldFNlbmRDYWxsYmFja1BvbGljeShEb05vdFNlbmRDYWxsYmFja3MpOwogICAgICAgICBt
X21haW5SZXNvdXJjZUxvYWRlci0+Y2xlYXJSZXNvdXJjZSgpOwogICAgICAgICByZXNvdXJjZUxv
YWRlci0+c2V0U2VuZENhbGxiYWNrUG9saWN5KFNlbmRDYWxsYmFja3MpOwotICAgICAgICBtX21h
aW5SZXNvdXJjZUxvYWRlci0+aGFuZGxlU3Vic3RpdHV0ZURhdGFMb2FkU29vbihyZXF1ZXN0KTsK
KyAgICAgICAgaGFuZGxlU3Vic3RpdHV0ZURhdGFMb2FkU29vbigpOwogICAgIH0KIH0KIApAQCAt
NTA0LDcgKzU0Nyw3IEBACiAgICAgSFRUUEhlYWRlck1hcDo6Y29uc3RfaXRlcmF0b3IgaXQgPSBy
ZXNwb25zZS5odHRwSGVhZGVyRmllbGRzKCkuZmluZCh4RnJhbWVPcHRpb25IZWFkZXIpOwogICAg
IGlmIChpdCAhPSByZXNwb25zZS5odHRwSGVhZGVyRmllbGRzKCkuZW5kKCkpIHsKICAgICAgICAg
U3RyaW5nIGNvbnRlbnQgPSBpdC0+dmFsdWU7Ci0gICAgICAgIHVuc2lnbmVkIGxvbmcgaWRlbnRp
ZmllciA9IG1fbWFpblJlc291cmNlTG9hZGVyLT5pZGVudGlmaWVyKCk7CisgICAgICAgIHVuc2ln
bmVkIGxvbmcgaWRlbnRpZmllciA9IG1faWRlbnRpZmllckZvckxvYWRXaXRob3V0UmVzb3VyY2VM
b2FkZXIgPyBtX2lkZW50aWZpZXJGb3JMb2FkV2l0aG91dFJlc291cmNlTG9hZGVyIDogbWFpblJl
c291cmNlTG9hZGVyKCktPmlkZW50aWZpZXIoKTsKICAgICAgICAgaWYgKGZyYW1lTG9hZGVyKCkt
PnNob3VsZEludGVycnVwdExvYWRGb3JYRnJhbWVPcHRpb25zKGNvbnRlbnQsIHJlc3BvbnNlLnVy
bCgpLCBpZGVudGlmaWVyKSkgewogICAgICAgICAgICAgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9u
Ojpjb250aW51ZUFmdGVyWEZyYW1lT3B0aW9uc0RlbmllZChtX2ZyYW1lLCB0aGlzLCBpZGVudGlm
aWVyLCByZXNwb25zZSk7CiAgICAgICAgICAgICBTdHJpbmcgbWVzc2FnZSA9ICJSZWZ1c2VkIHRv
IGRpc3BsYXkgJyIgKyByZXNwb25zZS51cmwoKS5lbGlkZWRTdHJpbmcoKSArICInIGluIGEgZnJh
bWUgYmVjYXVzZSBpdCBzZXQgJ1gtRnJhbWUtT3B0aW9ucycgdG8gJyIgKyBjb250ZW50ICsgIicu
IjsKQEAgLTUzMCw4ICs1NzMsOCBAQAogCiAgICAgc2V0UmVzcG9uc2UocmVzcG9uc2UpOwogCi0g
ICAgaWYgKG1fbWFpblJlc291cmNlTG9hZGVyLT5pZGVudGlmaWVyRm9yTG9hZFdpdGhvdXRSZXNv
dXJjZUxvYWRlcigpKQotICAgICAgICBmcmFtZUxvYWRlcigpLT5ub3RpZmllcigpLT5kaXNwYXRj
aERpZFJlY2VpdmVSZXNwb25zZSh0aGlzLCBtX21haW5SZXNvdXJjZUxvYWRlci0+aWRlbnRpZmll
ckZvckxvYWRXaXRob3V0UmVzb3VyY2VMb2FkZXIoKSwgbV9yZXNwb25zZSwgMCk7CisgICAgaWYg
KG1faWRlbnRpZmllckZvckxvYWRXaXRob3V0UmVzb3VyY2VMb2FkZXIpCisgICAgICAgIGZyYW1l
TG9hZGVyKCktPm5vdGlmaWVyKCktPmRpc3BhdGNoRGlkUmVjZWl2ZVJlc3BvbnNlKHRoaXMsIG1f
aWRlbnRpZmllckZvckxvYWRXaXRob3V0UmVzb3VyY2VMb2FkZXIsIG1fcmVzcG9uc2UsIDApOwog
CiAgICAgQVNTRVJUKCFtX3dhaXRpbmdGb3JDb250ZW50UG9saWN5KTsKICAgICBtX3dhaXRpbmdG
b3JDb250ZW50UG9saWN5ID0gdHJ1ZTsKQEAgLTc4MCw4ICs4MjMsOCBAQAogICAgIH0KICNlbmRp
ZgogCi0gICAgaWYgKG1fbWFpblJlc291cmNlTG9hZGVyLT5pZGVudGlmaWVyRm9yTG9hZFdpdGhv
dXRSZXNvdXJjZUxvYWRlcigpKQotICAgICAgICBmcmFtZUxvYWRlcigpLT5ub3RpZmllcigpLT5k
aXNwYXRjaERpZFJlY2VpdmVEYXRhKHRoaXMsIG1fbWFpblJlc291cmNlTG9hZGVyLT5pZGVudGlm
aWVyKCksIGRhdGEsIGxlbmd0aCwgLTEpOworICAgIGlmIChtX2lkZW50aWZpZXJGb3JMb2FkV2l0
aG91dFJlc291cmNlTG9hZGVyKQorICAgICAgICBmcmFtZUxvYWRlcigpLT5ub3RpZmllcigpLT5k
aXNwYXRjaERpZFJlY2VpdmVEYXRhKHRoaXMsIG1faWRlbnRpZmllckZvckxvYWRXaXRob3V0UmVz
b3VyY2VMb2FkZXIsIGRhdGEsIGxlbmd0aCwgLTEpOwogCiAgICAgbV9hcHBsaWNhdGlvbkNhY2hl
SG9zdC0+bWFpblJlc291cmNlRGF0YVJlY2VpdmVkKGRhdGEsIGxlbmd0aCwgLTEsIGZhbHNlKTsK
ICAgICBtX3RpbWVPZkxhc3REYXRhUmVjZWl2ZWQgPSBtb25vdG9uaWNhbGx5SW5jcmVhc2luZ1Rp
bWUoKTsKQEAgLTEzMTEsNiArMTM1NCwxNSBAQAogCiAgICAgbV9hcHBsaWNhdGlvbkNhY2hlSG9z
dC0+bWF5YmVMb2FkTWFpblJlc291cmNlKG1fcmVxdWVzdCwgbV9zdWJzdGl0dXRlRGF0YSk7CiAK
KyAgICBpZiAobV9zdWJzdGl0dXRlRGF0YS5pc1ZhbGlkKCkpIHsKKyAgICAgICAgbV9pZGVudGlm
aWVyRm9yTG9hZFdpdGhvdXRSZXNvdXJjZUxvYWRlciA9IG1fZnJhbWUtPnBhZ2UoKS0+cHJvZ3Jl
c3MoKS0+Y3JlYXRlVW5pcXVlSWRlbnRpZmllcigpOworICAgICAgICBmcmFtZUxvYWRlcigpLT5u
b3RpZmllcigpLT5hc3NpZ25JZGVudGlmaWVyVG9Jbml0aWFsUmVxdWVzdChtX2lkZW50aWZpZXJG
b3JMb2FkV2l0aG91dFJlc291cmNlTG9hZGVyLCB0aGlzLCBtX3JlcXVlc3QpOworICAgICAgICBm
cmFtZUxvYWRlcigpLT5ub3RpZmllcigpLT5kaXNwYXRjaFdpbGxTZW5kUmVxdWVzdCh0aGlzLCBt
X2lkZW50aWZpZXJGb3JMb2FkV2l0aG91dFJlc291cmNlTG9hZGVyLCBtX3JlcXVlc3QsIFJlc291
cmNlUmVzcG9uc2UoKSk7CisgICAgICAgIGhhbmRsZVN1YnN0aXR1dGVEYXRhTG9hZFNvb24oKTsK
KyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIFJlc291cmNlUmVxdWVzdCByZXF1ZXN0KG1f
cmVxdWVzdCk7CiAgICAgbV9tYWluUmVzb3VyY2VMb2FkZXItPmxvYWQobV9yZXF1ZXN0KTsKIAog
ICAgIGlmIChtX3JlcXVlc3QuaXNOdWxsKCkpIHsKQEAgLTEzMjAsMTkgKzEzNzIsNDEgQEAKICAg
ICAgICAgLy8gYSBuZXcgQXBwbGljYXRpb25DYWNoZUhvc3QuCiAgICAgICAgIG1fYXBwbGljYXRp
b25DYWNoZUhvc3QgPSBhZG9wdFB0cihuZXcgQXBwbGljYXRpb25DYWNoZUhvc3QodGhpcykpOwog
ICAgICAgICBtYXliZUxvYWRFbXB0eSgpOworICAgICAgICByZXR1cm47CiAgICAgfQorCisgICAg
aWYgKCFtYWluUmVzb3VyY2VMb2FkZXIoKSkgeworICAgICAgICBtX2lkZW50aWZpZXJGb3JMb2Fk
V2l0aG91dFJlc291cmNlTG9hZGVyID0gbV9mcmFtZS0+cGFnZSgpLT5wcm9ncmVzcygpLT5jcmVh
dGVVbmlxdWVJZGVudGlmaWVyKCk7CisgICAgICAgIGZyYW1lTG9hZGVyKCktPm5vdGlmaWVyKCkt
PmFzc2lnbklkZW50aWZpZXJUb0luaXRpYWxSZXF1ZXN0KG1faWRlbnRpZmllckZvckxvYWRXaXRo
b3V0UmVzb3VyY2VMb2FkZXIsIHRoaXMsIHJlcXVlc3QpOworICAgICAgICBmcmFtZUxvYWRlcigp
LT5ub3RpZmllcigpLT5kaXNwYXRjaFdpbGxTZW5kUmVxdWVzdCh0aGlzLCBtX2lkZW50aWZpZXJG
b3JMb2FkV2l0aG91dFJlc291cmNlTG9hZGVyLCByZXF1ZXN0LCBSZXNvdXJjZVJlc3BvbnNlKCkp
OworICAgIH0KKworICAgIC8vIEEgYnVuY2ggb2YgaGVhZGVycyBhcmUgc2V0IHdoZW4gdGhlIHVu
ZGVybHlpbmcgUmVzb3VyY2VMb2FkZXIgaXMgY3JlYXRlZCwgYW5kIG1fcmVxdWVzdCBuZWVkcyB0
byBpbmNsdWRlIHRob3NlLgorICAgIGlmIChtYWluUmVzb3VyY2VMb2FkZXIoKSkKKyAgICAgICAg
cmVxdWVzdCA9IG1haW5SZXNvdXJjZUxvYWRlcigpLT5vcmlnaW5hbFJlcXVlc3QoKTsKKyAgICAv
LyBJZiB0aGVyZSB3YXMgYSBmcmFnbWVudCBpZGVudGlmaWVyIG9uIG1fcmVxdWVzdCwgdGhlIGNh
Y2hlIHdpbGwgaGF2ZSBzdHJpcHBlZCBpdC4gbV9yZXF1ZXN0IHNob3VsZCBpbmNsdWRlCisgICAg
Ly8gdGhlIGZyYWdtZW50IGlkZW50aWZpZXIsIHNvIGFkZCB0aGF0IGJhY2sgaW4uCisgICAgaWYg
KGVxdWFsSWdub3JpbmdGcmFnbWVudElkZW50aWZpZXIobV9yZXF1ZXN0LnVybCgpLCByZXF1ZXN0
LnVybCgpKSkKKyAgICAgICAgcmVxdWVzdC5zZXRVUkwobV9yZXF1ZXN0LnVybCgpKTsKKyAgICBz
ZXRSZXF1ZXN0KHJlcXVlc3QpOwogfQogCiB2b2lkIERvY3VtZW50TG9hZGVyOjpjYW5jZWxNYWlu
UmVzb3VyY2VMb2FkKGNvbnN0IFJlc291cmNlRXJyb3ImIGVycm9yKQogewogICAgIEFTU0VSVCgh
ZXJyb3IuaXNOdWxsKCkpOworICAgIFJlZlB0cjxEb2N1bWVudExvYWRlcj4gcHJvdGVjdCh0aGlz
KTsKIAorICAgIG1fZGF0YUxvYWRUaW1lci5zdG9wKCk7CiAgICAgaWYgKG1fd2FpdGluZ0ZvckNv
bnRlbnRQb2xpY3kpIHsKICAgICAgICAgZnJhbWVMb2FkZXIoKS0+cG9saWN5Q2hlY2tlcigpLT5j
YW5jZWxDaGVjaygpOwogICAgICAgICBBU1NFUlQobV93YWl0aW5nRm9yQ29udGVudFBvbGljeSk7
CiAgICAgICAgIG1fd2FpdGluZ0ZvckNvbnRlbnRQb2xpY3kgPSBmYWxzZTsKICAgICB9Ci0gICAg
bV9tYWluUmVzb3VyY2VMb2FkZXItPmNhbmNlbChlcnJvcik7CisKKyAgICBpZiAobWFpblJlc291
cmNlTG9hZGVyKCkpCisgICAgICAgIG1haW5SZXNvdXJjZUxvYWRlcigpLT5jYW5jZWwoZXJyb3Ip
OworCisgICAgbWFpblJlY2VpdmVkRXJyb3IoZXJyb3IpOwogfQogCiB2b2lkIERvY3VtZW50TG9h
ZGVyOjpzdWJyZXNvdXJjZUxvYWRlckZpbmlzaGVkTG9hZGluZ09uZVBhcnQoUmVzb3VyY2VMb2Fk
ZXIqIGxvYWRlcikKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDE0NjIyNCkKKysrIFNvdXJjZS9X
ZWJDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDM5IEBACisyMDEzLTAz
LTE5ICBOYXRlIENoYXBpbiAgPGphcGhldEBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgTWVyZ2Ug
TWFpblJlc291cmNlTG9hZGVyJ3MgU3Vic3RpdHV0ZURhdGEgbG9hZGluZyArIG90aGVycyBpbnRv
IERvY3VtZW50TG9hZGVyCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0xMTI3MjIKKworICAgICAgICBQYXJ0IG9mIHRoZSBvbmdvaW5nIGVmZm9ydCB0byBt
ZXJnZSBNYWluUmVzb3VyY2VMb2FkZXIgZW50aXJlbHkKKyAgICAgICAgaW50byBEb2N1bWVudExv
YWRlci4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBO
byBuZXcgdGVzdHMsIHJlZmFjdG9yIG9ubHkuCisKKyAgICAgICAgKiBsb2FkZXIvRG9jdW1lbnRM
b2FkZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnRMb2FkZXI6Om1haW5SZWNlaXZl
ZEVycm9yKTogTW92ZWQgZnJvbSBNYWluUmVzb3VyY2VMb2FkZXI6OnJlY2VpdmVkRXJyb3IKKyAg
ICAgICAgICAgIGFuZCB0aGUgZmFpbHVyZSBjYXNlIGluIE1haW5SZXNvdXJjZUxvYWRlcjo6bm90
aWZ5RmluaXNoZWQuCisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudExvYWRlcjo6c3RvcExvYWRp
bmcpOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnRMb2FkZXI6OmZpbmlzaGVkTG9hZGluZyk6
CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudExvYWRlcjo6aGFuZGxlU3Vic3RpdHV0ZURhdGFM
b2FkTm93KTogTW92ZWQgZnJvbSBNYWluUmVzb3VyY2VMb2FkZXIuCisgICAgICAgIChXZWJDb3Jl
OjpEb2N1bWVudExvYWRlcjo6c3RhcnREYXRhTG9hZFRpbWVyKTogTW92ZWQgZnJvbSBNYWluUmVz
b3VyY2VMb2FkZXIuCisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudExvYWRlcjo6aGFuZGxlU3Vi
c3RpdHV0ZURhdGFMb2FkU29vbik6IE1vdmVkIGZyb20gTWFpblJlc291cmNlTG9hZGVyLgorICAg
ICAgICAoV2ViQ29yZTo6RG9jdW1lbnRMb2FkZXI6OndpbGxTZW5kUmVxdWVzdCk6CisgICAgICAg
IChXZWJDb3JlOjpEb2N1bWVudExvYWRlcjo6Y29udGludWVBZnRlck5hdmlnYXRpb25Qb2xpY3kp
OgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnRMb2FkZXI6OnJlc3BvbnNlUmVjZWl2ZWQpOgor
ICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnRMb2FkZXI6OnJlY2VpdmVkRGF0YSk6CisgICAgICAg
IChXZWJDb3JlOjpEb2N1bWVudExvYWRlcjo6c3RhcnRMb2FkaW5nTWFpblJlc291cmNlKTogTW9z
dCBvZiBNYWluUmVzb3VyY2VMb2FkZXI6OmxvYWQKKyAgICAgICAgICAgIG1vdmVkIGhlcmUuCisg
ICAgICAgIChXZWJDb3JlOjpEb2N1bWVudExvYWRlcjo6Y2FuY2VsTWFpblJlc291cmNlTG9hZCk6
IE1haW5SZXNvdXJjZUxvYWRlcjo6Y2FuY2VsCisgICAgICAgICAgICBtb3ZlZCBoZXJlLgorICAg
ICAgICAqIGxvYWRlci9Eb2N1bWVudExvYWRlci5oOgorICAgICAgICAqIGxvYWRlci9NYWluUmVz
b3VyY2VMb2FkZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TWFpblJlc291cmNlTG9hZGVyOjpu
b3RpZnlGaW5pc2hlZCk6CisgICAgICAgIChXZWJDb3JlOjpNYWluUmVzb3VyY2VMb2FkZXI6OnJl
cG9ydE1lbW9yeVVzYWdlKToKKyAgICAgICAgKFdlYkNvcmU6Ok1haW5SZXNvdXJjZUxvYWRlcjo6
bG9hZCk6CisgICAgICAgIChXZWJDb3JlOjpNYWluUmVzb3VyY2VMb2FkZXI6OmlkZW50aWZpZXIp
OgorICAgICAgICAqIGxvYWRlci9NYWluUmVzb3VyY2VMb2FkZXIuaDoKKwogMjAxMy0wMy0xOSAg
VGVycnkgQW5kZXJzb24gIDx0ZGFuZGVyc29uQGNocm9taXVtLm9yZz4KIAogICAgICAgICBIb3Zl
ciBlZmZlY3RzIGZyb20gYSBHZXN0dXJlVGFwRG93biBhcmUgZGlzbWlzc2VkIGJ5IGEgR2VzdHVy
ZVRhcCBvbiB0aGUgaG92ZXIgZWxlbWVudAo=
</data>

          </attachment>
      

    </bug>

</bugzilla>