<?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>33880</bug_id>
          
          <creation_ts>2010-01-19 21:39:16 -0800</creation_ts>
          <short_desc>[Chromium] Need a way of getting a WebApplicationCacheHost ptr out of the WebKitAPI.</short_desc>
          <delta_ts>2010-01-21 20:21:33 -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>WebKit API</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Other</rep_platform>
          <op_sys>All</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="Michael Nordman">michaeln</reporter>
          <assigned_to name="Michael Nordman">michaeln</assigned_to>
          <cc>commit-queue</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>182610</commentid>
    <comment_count>0</comment_count>
    <who name="Michael Nordman">michaeln</who>
    <bug_when>2010-01-19 21:39:16 -0800</bug_when>
    <thetext>Some resource loads are performed without going thru WebCore::ResourceHandle in Chrome. To associate those resource loads with the appropriate appcache, we need to get a ptr to the WebApplicationCacheHost given a WebFrame/WebDataSource.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>182611</commentid>
    <comment_count>1</comment_count>
      <attachid>46975</attachid>
    <who name="Michael Nordman">michaeln</who>
    <bug_when>2010-01-19 21:45:29 -0800</bug_when>
    <thetext>Created attachment 46975
WebDataSource::applicationCacheHost() getter</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>182612</commentid>
    <comment_count>2</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-01-19 21:50:47 -0800</bug_when>
    <thetext>Attachment 46975 did not pass style-queue:

Failed to run &quot;WebKitTools/Scripts/check-webkit-style&quot; exit_code: 1
WebKit/chromium/src/WebDataSourceImpl.cpp:112:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
WebKit/chromium/src/ApplicationCacheHost.cpp:70:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
WebKit/chromium/src/ApplicationCacheHost.cpp:265:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
Total errors found: 3


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>182613</commentid>
    <comment_count>3</comment_count>
      <attachid>46976</attachid>
    <who name="Michael Nordman">michaeln</who>
    <bug_when>2010-01-19 22:00:11 -0800</bug_when>
    <thetext>Created attachment 46976
fix style errors</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>182633</commentid>
    <comment_count>4</comment_count>
      <attachid>46976</attachid>
    <who name="Darin Fisher (:fishd, Google)">fishd</who>
    <bug_when>2010-01-19 23:35:07 -0800</bug_when>
    <thetext>Comment on attachment 46976
fix style errors

&gt; Index: WebKit/chromium/public/WebApplicationCacheHost.h
...
&gt; +#if WEBKIT_IMPLEMENTATION
&gt; +    static WebApplicationCacheHost* fromApplicationCacheHost(WebCore::ApplicationCacheHost*);
&gt; +#endif

hmm... how about creating src/ApplicationCacheHostInternal.h, and then
just expose toWebApplicationCacheHost from there?  That way we won&apos;t
need any implementation details added to the public header (albeit
in a WEBKIT_IMPLEMENTATION section).

otherwise, this lgtm.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>182649</commentid>
    <comment_count>5</comment_count>
    <who name="Michael Nordman">michaeln</who>
    <bug_when>2010-01-20 00:19:40 -0800</bug_when>
    <thetext>&gt; hmm... how about creating src/ApplicationCacheHostInternal.h, and then
&gt; just expose toWebApplicationCacheHost from there?  That way we won&apos;t
&gt; need any implementation details added to the public header (albeit
&gt; in a WEBKIT_IMPLEMENTATION section).

that sounds good

&gt; otherwise, this lgtm.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>182892</commentid>
    <comment_count>6</comment_count>
      <attachid>47054</attachid>
    <who name="Michael Nordman">michaeln</who>
    <bug_when>2010-01-20 13:04:52 -0800</bug_when>
    <thetext>Created attachment 47054
new .h file</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>183266</commentid>
    <comment_count>7</comment_count>
    <who name="Michael Nordman">michaeln</who>
    <bug_when>2010-01-21 11:53:45 -0800</bug_when>
    <thetext>ping</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>183456</commentid>
    <comment_count>8</comment_count>
      <attachid>47054</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2010-01-21 20:21:27 -0800</bug_when>
    <thetext>Comment on attachment 47054
new .h file

Clearing flags on attachment: 47054

Committed r53671: &lt;http://trac.webkit.org/changeset/53671&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>183457</commentid>
    <comment_count>9</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2010-01-21 20:21:33 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>46975</attachid>
            <date>2010-01-19 21:45:29 -0800</date>
            <delta_ts>2010-01-19 22:00:11 -0800</delta_ts>
            <desc>WebDataSource::applicationCacheHost() getter</desc>
            <filename>gethost.txt</filename>
            <type>text/plain</type>
            <size>4839</size>
            <attacher name="Michael Nordman">michaeln</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0L2No
cm9taXVtL0NoYW5nZUxvZwkocmV2aXNpb24gNTM1MjEpCisrKyBXZWJLaXQvY2hyb21pdW0vQ2hh
bmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTkgQEAKKzIwMTAtMDEtMTkgIE1pY2hh
ZWwgTm9yZG1hbiAgPG1pY2hhZWxuQGdvb2dsZS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkcyBXZWJLaXQ6OldlYkRhdGFTb3VyY2U6OmFw
cGxpY2F0aW9uQ2FjaGVIb3N0KCkgdG8gdGhlIEFQSS4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTMzODgwCisKKyAgICAgICAgKiBwdWJsaWMvV2ViQXBw
bGljYXRpb25DYWNoZUhvc3QuaDoKKyAgICAgICAgKiBwdWJsaWMvV2ViRGF0YVNvdXJjZS5oOgor
ICAgICAgICAqIHNyYy9BcHBsaWNhdGlvbkNhY2hlSG9zdC5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpBcHBsaWNhdGlvbkNhY2hlSG9zdEludGVybmFsOjp0b1dlYkFwcGxpY2F0aW9uQ2FjaGVIb3N0
KToKKyAgICAgICAgKFdlYktpdDo6V2ViQXBwbGljYXRpb25DYWNoZUhvc3Q6OmZyb21BcHBsaWNh
dGlvbkNhY2hlSG9zdCk6CisgICAgICAgICogc3JjL1dlYkRhdGFTb3VyY2VJbXBsLmNwcDoKKyAg
ICAgICAgKFdlYktpdDo6V2ViRGF0YVNvdXJjZUltcGw6OmFwcGxpY2F0aW9uQ2FjaGVIb3N0KToK
KyAgICAgICAgKiBzcmMvV2ViRGF0YVNvdXJjZUltcGwuaDoKKwogMjAxMC0wMS0xOSAgSm9uIEhv
bmV5Y3V0dCAgPGpob25leWN1dHRAYXBwbGUuY29tPgogCiAgICAgICAgIENocm9taXVtIGJ1aWxk
IGZpeC4KSW5kZXg6IFdlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViQXBwbGljYXRpb25DYWNoZUhv
c3QuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYkFwcGxpY2F0aW9u
Q2FjaGVIb3N0LmgJKHJldmlzaW9uIDUzNTE5KQorKysgV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9X
ZWJBcHBsaWNhdGlvbkNhY2hlSG9zdC5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMyw2ICszMywxMCBA
QAogCiAjaW5jbHVkZSAiV2ViQ29tbW9uLmgiCiAKKyNpZiBXRUJLSVRfSU1QTEVNRU5UQVRJT04K
K25hbWVzcGFjZSBXZWJDb3JlIHsgY2xhc3MgQXBwbGljYXRpb25DYWNoZUhvc3Q7IH0KKyNlbmRp
ZgorCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAogY2xhc3MgV2ViQXBwbGljYXRpb25DYWNoZUhvc3RD
bGllbnQ7CkBAIC04OSw2ICs5MywxMCBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBTdGF0dXMgc3Rh
dHVzKCkgPSAwOwogICAgIHZpcnR1YWwgYm9vbCBzdGFydFVwZGF0ZSgpID0gMDsKICAgICB2aXJ0
dWFsIGJvb2wgc3dhcENhY2hlKCkgPSAwOworCisjaWYgV0VCS0lUX0lNUExFTUVOVEFUSU9OCisg
ICAgc3RhdGljIFdlYkFwcGxpY2F0aW9uQ2FjaGVIb3N0KiBmcm9tQXBwbGljYXRpb25DYWNoZUhv
c3QoV2ViQ29yZTo6QXBwbGljYXRpb25DYWNoZUhvc3QqKTsKKyNlbmRpZgogfTsKIAogfSAgLy8g
bmFtZXNwYWNlIFdlYktpdApJbmRleDogV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJEYXRhU291
cmNlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJEYXRhU291cmNl
LmgJKHJldmlzaW9uIDUzNTE5KQorKysgV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJEYXRhU291
cmNlLmgJKHdvcmtpbmcgY29weSkKQEAgLTM2LDYgKzM2LDcgQEAKIAogbmFtZXNwYWNlIFdlYktp
dCB7CiAKK2NsYXNzIFdlYkFwcGxpY2F0aW9uQ2FjaGVIb3N0OwogY2xhc3MgV2ViU3RyaW5nOwog
Y2xhc3MgV2ViVVJMOwogY2xhc3MgV2ViVVJMUmVxdWVzdDsKQEAgLTkxLDYgKzkyLDkgQEAgcHVi
bGljOgogICAgIHZpcnR1YWwgRXh0cmFEYXRhKiBleHRyYURhdGEoKSBjb25zdCA9IDA7CiAgICAg
dmlydHVhbCB2b2lkIHNldEV4dHJhRGF0YShFeHRyYURhdGEqKSA9IDA7CiAKKyAgICAvLyBUaGUg
YXBwbGljYXRpb24gY2FjaGUgaG9zdCBhc3NvY2lhdGVkIHdpdGggdGhpcyBkYXRhc291cmNlLgor
ICAgIHZpcnR1YWwgV2ViQXBwbGljYXRpb25DYWNoZUhvc3QqIGFwcGxpY2F0aW9uQ2FjaGVIb3N0
KCkgPSAwOworCiBwcm90ZWN0ZWQ6CiAgICAgfldlYkRhdGFTb3VyY2UoKSB7IH0KIH07CkluZGV4
OiBXZWJLaXQvY2hyb21pdW0vc3JjL0FwcGxpY2F0aW9uQ2FjaGVIb3N0LmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBXZWJLaXQvY2hyb21pdW0vc3JjL0FwcGxpY2F0aW9uQ2FjaGVIb3N0LmNwcAkocmV2aXNp
b24gNTM1MTkpCisrKyBXZWJLaXQvY2hyb21pdW0vc3JjL0FwcGxpY2F0aW9uQ2FjaGVIb3N0LmNw
cAkod29ya2luZyBjb3B5KQpAQCAtNjcsNiArNjcsMTIgQEAgcHVibGljOgogICAgICAgICAgICAg
c3RhdGljX2Nhc3Q8QXBwbGljYXRpb25DYWNoZUhvc3Q6OkV2ZW50SUQ+KGV2ZW50SUQpKTsKICAg
ICB9CiAKKyAgICBzdGF0aWMgV2ViQXBwbGljYXRpb25DYWNoZUhvc3QqIHRvV2ViQXBwbGljYXRp
b25DYWNoZUhvc3QoQXBwbGljYXRpb25DYWNoZUhvc3QqIGlubmVySG9zdCkgeworICAgICAgICBp
ZiAoaW5uZXJIb3N0ICYmIGlubmVySG9zdC0+bV9pbnRlcm5hbC5nZXQoKSkKKyAgICAgICAgICAg
IHJldHVybiBpbm5lckhvc3QtPm1faW50ZXJuYWwtPm1fb3V0ZXJIb3N0LmdldCgpOworICAgICAg
ICByZXR1cm4gMDsKKyAgICB9CisKICAgICBBcHBsaWNhdGlvbkNhY2hlSG9zdCogbV9pbm5lckhv
c3Q7CiAgICAgT3duUHRyPFdlYkFwcGxpY2F0aW9uQ2FjaGVIb3N0PiBtX291dGVySG9zdDsKIH07
CkBAIC0yNTMsNCArMjU5LDEzIEBAIGJvb2wgQXBwbGljYXRpb25DYWNoZUhvc3Q6OmlzQXBwbGlj
YXRpb24KIAogfSAgLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAorbmFtZXNwYWNlIFdlYktpdCB7CisK
Ky8vIEZvciB1c2UgYnkgV2ViRGF0YVNvdXJjZUltcGwuCitXZWJBcHBsaWNhdGlvbkNhY2hlSG9z
dCogV2ViQXBwbGljYXRpb25DYWNoZUhvc3Q6OmZyb21BcHBsaWNhdGlvbkNhY2hlSG9zdChXZWJD
b3JlOjpBcHBsaWNhdGlvbkNhY2hlSG9zdCogaG9zdCkgeworICAgIHJldHVybiBXZWJDb3JlOjpB
cHBsaWNhdGlvbkNhY2hlSG9zdEludGVybmFsOjp0b1dlYkFwcGxpY2F0aW9uQ2FjaGVIb3N0KGhv
c3QpOworfQorCit9CisKICNlbmRpZiAgLy8gRU5BQkxFKE9GRkxJTkVfV0VCX0FQUExJQ0FUSU9O
UykKSW5kZXg6IFdlYktpdC9jaHJvbWl1bS9zcmMvV2ViRGF0YVNvdXJjZUltcGwuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFdlYktpdC9jaHJvbWl1bS9zcmMvV2ViRGF0YVNvdXJjZUltcGwuY3BwCShyZXZp
c2lvbiA1MzUxOSkKKysrIFdlYktpdC9jaHJvbWl1bS9zcmMvV2ViRGF0YVNvdXJjZUltcGwuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0zMSw2ICszMSw3IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAj
aW5jbHVkZSAiV2ViRGF0YVNvdXJjZUltcGwuaCIKIAorI2luY2x1ZGUgIldlYkFwcGxpY2F0aW9u
Q2FjaGVIb3N0LmgiCiAjaW5jbHVkZSAiV2ViVVJMLmgiCiAjaW5jbHVkZSAiV2ViVVJMRXJyb3Iu
aCIKICNpbmNsdWRlICJXZWJWZWN0b3IuaCIKQEAgLTEwOCw2ICsxMDksMTQgQEAgdm9pZCBXZWJE
YXRhU291cmNlSW1wbDo6c2V0RXh0cmFEYXRhKEV4dAogICAgIG1fZXh0cmFEYXRhLnNldChleHRy
YURhdGEpOwogfQogCitXZWJBcHBsaWNhdGlvbkNhY2hlSG9zdCogV2ViRGF0YVNvdXJjZUltcGw6
OmFwcGxpY2F0aW9uQ2FjaGVIb3N0KCkgeworI2lmIEVOQUJMRShPRkZMSU5FX1dFQl9BUFBMSUNB
VElPTlMpCisgICAgcmV0dXJuIFdlYkFwcGxpY2F0aW9uQ2FjaGVIb3N0Ojpmcm9tQXBwbGljYXRp
b25DYWNoZUhvc3QoRG9jdW1lbnRMb2FkZXI6OmFwcGxpY2F0aW9uQ2FjaGVIb3N0KCkpOworI2Vs
c2UKKyAgICByZXR1cm4gMDsKKyNlbmRpZgorfQorCiBXZWJOYXZpZ2F0aW9uVHlwZSBXZWJEYXRh
U291cmNlSW1wbDo6dG9XZWJOYXZpZ2F0aW9uVHlwZShOYXZpZ2F0aW9uVHlwZSB0eXBlKQogewog
ICAgIHN3aXRjaCAodHlwZSkgewpJbmRleDogV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJEYXRhU291
cmNlSW1wbC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdC9jaHJvbWl1bS9zcmMvV2ViRGF0YVNvdXJj
ZUltcGwuaAkocmV2aXNpb24gNTM1MTkpCisrKyBXZWJLaXQvY2hyb21pdW0vc3JjL1dlYkRhdGFT
b3VyY2VJbXBsLmgJKHdvcmtpbmcgY29weSkKQEAgLTczLDYgKzczLDcgQEAgcHVibGljOgogICAg
IHZpcnR1YWwgZG91YmxlIHRyaWdnZXJpbmdFdmVudFRpbWUoKSBjb25zdDsKICAgICB2aXJ0dWFs
IEV4dHJhRGF0YSogZXh0cmFEYXRhKCkgY29uc3Q7CiAgICAgdmlydHVhbCB2b2lkIHNldEV4dHJh
RGF0YShFeHRyYURhdGEqKTsKKyAgICB2aXJ0dWFsIFdlYkFwcGxpY2F0aW9uQ2FjaGVIb3N0KiBh
cHBsaWNhdGlvbkNhY2hlSG9zdCgpOwogCiAgICAgc3RhdGljIFdlYk5hdmlnYXRpb25UeXBlIHRv
V2ViTmF2aWdhdGlvblR5cGUoV2ViQ29yZTo6TmF2aWdhdGlvblR5cGUgdHlwZSk7CiAK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>46976</attachid>
            <date>2010-01-19 22:00:11 -0800</date>
            <delta_ts>2010-01-20 13:05:20 -0800</delta_ts>
            <desc>fix style errors</desc>
            <filename>gethost2.txt</filename>
            <type>text/plain</type>
            <size>4846</size>
            <attacher name="Michael Nordman">michaeln</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0L2No
cm9taXVtL0NoYW5nZUxvZwkocmV2aXNpb24gNTM1MjEpCisrKyBXZWJLaXQvY2hyb21pdW0vQ2hh
bmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTkgQEAKKzIwMTAtMDEtMTkgIE1pY2hh
ZWwgTm9yZG1hbiAgPG1pY2hhZWxuQGdvb2dsZS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkcyBXZWJLaXQ6OldlYkRhdGFTb3VyY2U6OmFw
cGxpY2F0aW9uQ2FjaGVIb3N0KCkgdG8gdGhlIEFQSS4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTMzODgwCisKKyAgICAgICAgKiBwdWJsaWMvV2ViQXBw
bGljYXRpb25DYWNoZUhvc3QuaDoKKyAgICAgICAgKiBwdWJsaWMvV2ViRGF0YVNvdXJjZS5oOgor
ICAgICAgICAqIHNyYy9BcHBsaWNhdGlvbkNhY2hlSG9zdC5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpBcHBsaWNhdGlvbkNhY2hlSG9zdEludGVybmFsOjp0b1dlYkFwcGxpY2F0aW9uQ2FjaGVIb3N0
KToKKyAgICAgICAgKFdlYktpdDo6V2ViQXBwbGljYXRpb25DYWNoZUhvc3Q6OmZyb21BcHBsaWNh
dGlvbkNhY2hlSG9zdCk6CisgICAgICAgICogc3JjL1dlYkRhdGFTb3VyY2VJbXBsLmNwcDoKKyAg
ICAgICAgKFdlYktpdDo6V2ViRGF0YVNvdXJjZUltcGw6OmFwcGxpY2F0aW9uQ2FjaGVIb3N0KToK
KyAgICAgICAgKiBzcmMvV2ViRGF0YVNvdXJjZUltcGwuaDoKKwogMjAxMC0wMS0xOSAgSm9uIEhv
bmV5Y3V0dCAgPGpob25leWN1dHRAYXBwbGUuY29tPgogCiAgICAgICAgIENocm9taXVtIGJ1aWxk
IGZpeC4KSW5kZXg6IFdlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViQXBwbGljYXRpb25DYWNoZUhv
c3QuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYkFwcGxpY2F0aW9u
Q2FjaGVIb3N0LmgJKHJldmlzaW9uIDUzNTE5KQorKysgV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9X
ZWJBcHBsaWNhdGlvbkNhY2hlSG9zdC5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMyw2ICszMywxMCBA
QAogCiAjaW5jbHVkZSAiV2ViQ29tbW9uLmgiCiAKKyNpZiBXRUJLSVRfSU1QTEVNRU5UQVRJT04K
K25hbWVzcGFjZSBXZWJDb3JlIHsgY2xhc3MgQXBwbGljYXRpb25DYWNoZUhvc3Q7IH0KKyNlbmRp
ZgorCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAogY2xhc3MgV2ViQXBwbGljYXRpb25DYWNoZUhvc3RD
bGllbnQ7CkBAIC04OSw2ICs5MywxMCBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBTdGF0dXMgc3Rh
dHVzKCkgPSAwOwogICAgIHZpcnR1YWwgYm9vbCBzdGFydFVwZGF0ZSgpID0gMDsKICAgICB2aXJ0
dWFsIGJvb2wgc3dhcENhY2hlKCkgPSAwOworCisjaWYgV0VCS0lUX0lNUExFTUVOVEFUSU9OCisg
ICAgc3RhdGljIFdlYkFwcGxpY2F0aW9uQ2FjaGVIb3N0KiBmcm9tQXBwbGljYXRpb25DYWNoZUhv
c3QoV2ViQ29yZTo6QXBwbGljYXRpb25DYWNoZUhvc3QqKTsKKyNlbmRpZgogfTsKIAogfSAgLy8g
bmFtZXNwYWNlIFdlYktpdApJbmRleDogV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJEYXRhU291
cmNlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJEYXRhU291cmNl
LmgJKHJldmlzaW9uIDUzNTE5KQorKysgV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJEYXRhU291
cmNlLmgJKHdvcmtpbmcgY29weSkKQEAgLTM2LDYgKzM2LDcgQEAKIAogbmFtZXNwYWNlIFdlYktp
dCB7CiAKK2NsYXNzIFdlYkFwcGxpY2F0aW9uQ2FjaGVIb3N0OwogY2xhc3MgV2ViU3RyaW5nOwog
Y2xhc3MgV2ViVVJMOwogY2xhc3MgV2ViVVJMUmVxdWVzdDsKQEAgLTkxLDYgKzkyLDkgQEAgcHVi
bGljOgogICAgIHZpcnR1YWwgRXh0cmFEYXRhKiBleHRyYURhdGEoKSBjb25zdCA9IDA7CiAgICAg
dmlydHVhbCB2b2lkIHNldEV4dHJhRGF0YShFeHRyYURhdGEqKSA9IDA7CiAKKyAgICAvLyBUaGUg
YXBwbGljYXRpb24gY2FjaGUgaG9zdCBhc3NvY2lhdGVkIHdpdGggdGhpcyBkYXRhc291cmNlLgor
ICAgIHZpcnR1YWwgV2ViQXBwbGljYXRpb25DYWNoZUhvc3QqIGFwcGxpY2F0aW9uQ2FjaGVIb3N0
KCkgPSAwOworCiBwcm90ZWN0ZWQ6CiAgICAgfldlYkRhdGFTb3VyY2UoKSB7IH0KIH07CkluZGV4
OiBXZWJLaXQvY2hyb21pdW0vc3JjL0FwcGxpY2F0aW9uQ2FjaGVIb3N0LmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBXZWJLaXQvY2hyb21pdW0vc3JjL0FwcGxpY2F0aW9uQ2FjaGVIb3N0LmNwcAkocmV2aXNp
b24gNTM1MTkpCisrKyBXZWJLaXQvY2hyb21pdW0vc3JjL0FwcGxpY2F0aW9uQ2FjaGVIb3N0LmNw
cAkod29ya2luZyBjb3B5KQpAQCAtNjcsNiArNjcsMTMgQEAgcHVibGljOgogICAgICAgICAgICAg
c3RhdGljX2Nhc3Q8QXBwbGljYXRpb25DYWNoZUhvc3Q6OkV2ZW50SUQ+KGV2ZW50SUQpKTsKICAg
ICB9CiAKKyAgICBzdGF0aWMgV2ViQXBwbGljYXRpb25DYWNoZUhvc3QqIHRvV2ViQXBwbGljYXRp
b25DYWNoZUhvc3QoQXBwbGljYXRpb25DYWNoZUhvc3QqIGlubmVySG9zdCkKKyAgICB7CisgICAg
ICAgIGlmIChpbm5lckhvc3QgJiYgaW5uZXJIb3N0LT5tX2ludGVybmFsLmdldCgpKQorICAgICAg
ICAgICAgcmV0dXJuIGlubmVySG9zdC0+bV9pbnRlcm5hbC0+bV9vdXRlckhvc3QuZ2V0KCk7Cisg
ICAgICAgIHJldHVybiAwOworICAgIH0KKwogICAgIEFwcGxpY2F0aW9uQ2FjaGVIb3N0KiBtX2lu
bmVySG9zdDsKICAgICBPd25QdHI8V2ViQXBwbGljYXRpb25DYWNoZUhvc3Q+IG1fb3V0ZXJIb3N0
OwogfTsKQEAgLTI1Myw0ICsyNjAsMTQgQEAgYm9vbCBBcHBsaWNhdGlvbkNhY2hlSG9zdDo6aXNB
cHBsaWNhdGlvbgogCiB9ICAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCituYW1lc3BhY2UgV2ViS2l0
IHsKKworLy8gRm9yIHVzZSBieSBXZWJEYXRhU291cmNlSW1wbC4KK1dlYkFwcGxpY2F0aW9uQ2Fj
aGVIb3N0KiBXZWJBcHBsaWNhdGlvbkNhY2hlSG9zdDo6ZnJvbUFwcGxpY2F0aW9uQ2FjaGVIb3N0
KFdlYkNvcmU6OkFwcGxpY2F0aW9uQ2FjaGVIb3N0KiBob3N0KQoreworICAgIHJldHVybiBXZWJD
b3JlOjpBcHBsaWNhdGlvbkNhY2hlSG9zdEludGVybmFsOjp0b1dlYkFwcGxpY2F0aW9uQ2FjaGVI
b3N0KGhvc3QpOworfQorCit9CisKICNlbmRpZiAgLy8gRU5BQkxFKE9GRkxJTkVfV0VCX0FQUExJ
Q0FUSU9OUykKSW5kZXg6IFdlYktpdC9jaHJvbWl1bS9zcmMvV2ViRGF0YVNvdXJjZUltcGwuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFdlYktpdC9jaHJvbWl1bS9zcmMvV2ViRGF0YVNvdXJjZUltcGwuY3Bw
CShyZXZpc2lvbiA1MzUxOSkKKysrIFdlYktpdC9jaHJvbWl1bS9zcmMvV2ViRGF0YVNvdXJjZUlt
cGwuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMSw2ICszMSw3IEBACiAjaW5jbHVkZSAiY29uZmln
LmgiCiAjaW5jbHVkZSAiV2ViRGF0YVNvdXJjZUltcGwuaCIKIAorI2luY2x1ZGUgIldlYkFwcGxp
Y2F0aW9uQ2FjaGVIb3N0LmgiCiAjaW5jbHVkZSAiV2ViVVJMLmgiCiAjaW5jbHVkZSAiV2ViVVJM
RXJyb3IuaCIKICNpbmNsdWRlICJXZWJWZWN0b3IuaCIKQEAgLTEwOCw2ICsxMDksMTUgQEAgdm9p
ZCBXZWJEYXRhU291cmNlSW1wbDo6c2V0RXh0cmFEYXRhKEV4dAogICAgIG1fZXh0cmFEYXRhLnNl
dChleHRyYURhdGEpOwogfQogCitXZWJBcHBsaWNhdGlvbkNhY2hlSG9zdCogV2ViRGF0YVNvdXJj
ZUltcGw6OmFwcGxpY2F0aW9uQ2FjaGVIb3N0KCkKK3sKKyNpZiBFTkFCTEUoT0ZGTElORV9XRUJf
QVBQTElDQVRJT05TKQorICAgIHJldHVybiBXZWJBcHBsaWNhdGlvbkNhY2hlSG9zdDo6ZnJvbUFw
cGxpY2F0aW9uQ2FjaGVIb3N0KERvY3VtZW50TG9hZGVyOjphcHBsaWNhdGlvbkNhY2hlSG9zdCgp
KTsKKyNlbHNlCisgICAgcmV0dXJuIDA7CisjZW5kaWYKK30KKwogV2ViTmF2aWdhdGlvblR5cGUg
V2ViRGF0YVNvdXJjZUltcGw6OnRvV2ViTmF2aWdhdGlvblR5cGUoTmF2aWdhdGlvblR5cGUgdHlw
ZSkKIHsKICAgICBzd2l0Y2ggKHR5cGUpIHsKSW5kZXg6IFdlYktpdC9jaHJvbWl1bS9zcmMvV2Vi
RGF0YVNvdXJjZUltcGwuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQvY2hyb21pdW0vc3JjL1dlYkRh
dGFTb3VyY2VJbXBsLmgJKHJldmlzaW9uIDUzNTE5KQorKysgV2ViS2l0L2Nocm9taXVtL3NyYy9X
ZWJEYXRhU291cmNlSW1wbC5oCSh3b3JraW5nIGNvcHkpCkBAIC03Myw2ICs3Myw3IEBAIHB1Ymxp
YzoKICAgICB2aXJ0dWFsIGRvdWJsZSB0cmlnZ2VyaW5nRXZlbnRUaW1lKCkgY29uc3Q7CiAgICAg
dmlydHVhbCBFeHRyYURhdGEqIGV4dHJhRGF0YSgpIGNvbnN0OwogICAgIHZpcnR1YWwgdm9pZCBz
ZXRFeHRyYURhdGEoRXh0cmFEYXRhKik7CisgICAgdmlydHVhbCBXZWJBcHBsaWNhdGlvbkNhY2hl
SG9zdCogYXBwbGljYXRpb25DYWNoZUhvc3QoKTsKIAogICAgIHN0YXRpYyBXZWJOYXZpZ2F0aW9u
VHlwZSB0b1dlYk5hdmlnYXRpb25UeXBlKFdlYkNvcmU6Ok5hdmlnYXRpb25UeXBlIHR5cGUpOwog
Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>47054</attachid>
            <date>2010-01-20 13:04:52 -0800</date>
            <delta_ts>2010-01-21 20:21:27 -0800</delta_ts>
            <desc>new .h file</desc>
            <filename>gethost3.txt</filename>
            <type>text/plain</type>
            <size>23557</size>
            <attacher name="Michael Nordman">michaeln</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0L2No
cm9taXVtL0NoYW5nZUxvZwkocmV2aXNpb24gNTM1NjApCisrKyBXZWJLaXQvY2hyb21pdW0vQ2hh
bmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMjAgQEAKKzIwMTAtMDEtMjAgIE1pY2hh
ZWwgTm9yZG1hbiAgPG1pY2hhZWxuQGdvb2dsZS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkcyBXZWJLaXQ6OldlYkRhdGFTb3VyY2U6OmFw
cGxpY2F0aW9uQ2FjaGVIb3N0KCkgdG8gdGhlIEFQSS4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTMzODgwCisKKyAgICAgICAgKiBXZWJLaXQuZ3lwOgor
ICAgICAgICAqIHB1YmxpYy9XZWJEYXRhU291cmNlLmg6CisgICAgICAgICogc3JjL0FwcGxpY2F0
aW9uQ2FjaGVIb3N0LmNwcDoKKyAgICAgICAgKiBzcmMvQXBwbGljYXRpb25DYWNoZUhvc3RJbnRl
cm5hbC5oOiBDb3BpZWQgZnJvbSBXZWJLaXQvY2hyb21pdW0vc3JjL0FwcGxpY2F0aW9uQ2FjaGVI
b3N0LmNwcC4KKyAgICAgICAgKFdlYkNvcmU6OkFwcGxpY2F0aW9uQ2FjaGVIb3N0SW50ZXJuYWw6
Om5vdGlmeUV2ZW50TGlzdGVuZXIpOgorICAgICAgICAoV2ViQ29yZTo6QXBwbGljYXRpb25DYWNo
ZUhvc3RJbnRlcm5hbDo6dG9XZWJBcHBsaWNhdGlvbkNhY2hlSG9zdCk6CisgICAgICAgICogc3Jj
L1dlYkRhdGFTb3VyY2VJbXBsLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViRGF0YVNvdXJjZUlt
cGw6OmFwcGxpY2F0aW9uQ2FjaGVIb3N0KToKKyAgICAgICAgKiBzcmMvV2ViRGF0YVNvdXJjZUlt
cGwuaDoKKwogMjAxMC0wMS0yMCAgU2hpbmljaGlybyBIYW1hamkgIDxoYW1hamlAY2hyb21pdW0u
b3JnPgogCiAgICAgICAgIFJldmlld2VkIGJ5IERhcmluIEZpc2hlci4KSW5kZXg6IFdlYktpdC9j
aHJvbWl1bS9XZWJLaXQuZ3lwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdC9jaHJvbWl1bS9XZWJLaXQu
Z3lwCShyZXZpc2lvbiA1MzUxOSkKKysrIFdlYktpdC9jaHJvbWl1bS9XZWJLaXQuZ3lwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xOTAsNiArMTkwLDcgQEAKICAgICAgICAgICAgICAgICAncHVibGljL3dp
bi9XZWJTY3JlZW5JbmZvRmFjdG9yeS5oJywKICAgICAgICAgICAgICAgICAncHVibGljL3dpbi9X
ZWJTY3JlZW5JbmZvRmFjdG9yeS5oJywKICAgICAgICAgICAgICAgICAnc3JjL0FwcGxpY2F0aW9u
Q2FjaGVIb3N0LmNwcCcsCisgICAgICAgICAgICAgICAgJ3NyYy9BcHBsaWNhdGlvbkNhY2hlSG9z
dEludGVybmFsLmgnLAogICAgICAgICAgICAgICAgICdzcmMvQXNzZXJ0TWF0Y2hpbmdFbnVtcy5j
cHAnLAogICAgICAgICAgICAgICAgICdzcmMvQXV0b2NvbXBsZXRlUG9wdXBNZW51Q2xpZW50LmNw
cCcsCiAgICAgICAgICAgICAgICAgJ3NyYy9BdXRvY29tcGxldGVQb3B1cE1lbnVDbGllbnQuaCcs
CkluZGV4OiBXZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYkRhdGFTb3VyY2UuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBXZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYkRhdGFTb3VyY2UuaAkocmV2aXNpb24gNTM1
MTkpCisrKyBXZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYkRhdGFTb3VyY2UuaAkod29ya2luZyBj
b3B5KQpAQCAtMzYsNiArMzYsNyBAQAogCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAorY2xhc3MgV2Vi
QXBwbGljYXRpb25DYWNoZUhvc3Q7CiBjbGFzcyBXZWJTdHJpbmc7CiBjbGFzcyBXZWJVUkw7CiBj
bGFzcyBXZWJVUkxSZXF1ZXN0OwpAQCAtOTEsNiArOTIsOSBAQCBwdWJsaWM6CiAgICAgdmlydHVh
bCBFeHRyYURhdGEqIGV4dHJhRGF0YSgpIGNvbnN0ID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgc2V0
RXh0cmFEYXRhKEV4dHJhRGF0YSopID0gMDsKIAorICAgIC8vIFRoZSBhcHBsaWNhdGlvbiBjYWNo
ZSBob3N0IGFzc29jaWF0ZWQgd2l0aCB0aGlzIGRhdGFzb3VyY2UuCisgICAgdmlydHVhbCBXZWJB
cHBsaWNhdGlvbkNhY2hlSG9zdCogYXBwbGljYXRpb25DYWNoZUhvc3QoKSA9IDA7CisKIHByb3Rl
Y3RlZDoKICAgICB+V2ViRGF0YVNvdXJjZSgpIHsgfQogfTsKSW5kZXg6IFdlYktpdC9jaHJvbWl1
bS9zcmMvQXBwbGljYXRpb25DYWNoZUhvc3QuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdC9jaHJv
bWl1bS9zcmMvQXBwbGljYXRpb25DYWNoZUhvc3QuY3BwCShyZXZpc2lvbiA1MzUxOSkKKysrIFdl
YktpdC9jaHJvbWl1bS9zcmMvQXBwbGljYXRpb25DYWNoZUhvc3QuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC0zMywxNCArMzMsMTEgQEAKIAogI2lmIEVOQUJMRShPRkZMSU5FX1dFQl9BUFBMSUNBVElP
TlMpCiAKKyNpbmNsdWRlICJBcHBsaWNhdGlvbkNhY2hlSG9zdEludGVybmFsLmgiCiAjaW5jbHVk
ZSAiRG9jdW1lbnRMb2FkZXIuaCIKICNpbmNsdWRlICJET01BcHBsaWNhdGlvbkNhY2hlLmgiCiAj
aW5jbHVkZSAiRnJhbWUuaCIKICNpbmNsdWRlICJTZXR0aW5ncy5oIgotI2luY2x1ZGUgIldlYkFw
cGxpY2F0aW9uQ2FjaGVIb3N0LmgiCi0jaW5jbHVkZSAiV2ViQXBwbGljYXRpb25DYWNoZUhvc3RD
bGllbnQuaCIKLSNpbmNsdWRlICJXZWJLaXQuaCIKLSNpbmNsdWRlICJXZWJLaXRDbGllbnQuaCIK
ICNpbmNsdWRlICJXZWJVUkwuaCIKICNpbmNsdWRlICJXZWJVUkxFcnJvci5oIgogI2luY2x1ZGUg
IldlYlVSTFJlc3BvbnNlLmgiCkBAIC01MSwyNyArNDgsNiBAQCB1c2luZyBuYW1lc3BhY2UgV2Vi
S2l0OwogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLS8vIEFwcGxpY2F0aW9uQ2FjaGVIb3N0SW50
ZXJuYWwgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLQot
Y2xhc3MgQXBwbGljYXRpb25DYWNoZUhvc3RJbnRlcm5hbCA6IHB1YmxpYyBXZWJBcHBsaWNhdGlv
bkNhY2hlSG9zdENsaWVudCB7Ci1wdWJsaWM6Ci0gICAgQXBwbGljYXRpb25DYWNoZUhvc3RJbnRl
cm5hbChBcHBsaWNhdGlvbkNhY2hlSG9zdCogaG9zdCkKLSAgICAgICAgOiBtX2lubmVySG9zdCho
b3N0KQotICAgIHsKLSAgICAgICAgbV9vdXRlckhvc3Quc2V0KFdlYktpdDo6d2ViS2l0Q2xpZW50
KCktPmNyZWF0ZUFwcGxpY2F0aW9uQ2FjaGVIb3N0KHRoaXMpKTsKLSAgICB9Ci0KLSAgICB2aXJ0
dWFsIHZvaWQgbm90aWZ5RXZlbnRMaXN0ZW5lcihXZWJBcHBsaWNhdGlvbkNhY2hlSG9zdDo6RXZl
bnRJRCBldmVudElEKQotICAgIHsKLSAgICAgICAgbV9pbm5lckhvc3QtPm5vdGlmeURPTUFwcGxp
Y2F0aW9uQ2FjaGUoCi0gICAgICAgICAgICBzdGF0aWNfY2FzdDxBcHBsaWNhdGlvbkNhY2hlSG9z
dDo6RXZlbnRJRD4oZXZlbnRJRCkpOwotICAgIH0KLQotICAgIEFwcGxpY2F0aW9uQ2FjaGVIb3N0
KiBtX2lubmVySG9zdDsKLSAgICBPd25QdHI8V2ViQXBwbGljYXRpb25DYWNoZUhvc3Q+IG1fb3V0
ZXJIb3N0OwotfTsKLQotLy8gQXBwbGljYXRpb25DYWNoZUhvc3QgLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogLy8gV2UgcHJvdmlkZSBhIGN1
c3RvbSBpbXBsZW1lbnRhdGlvbiBvZiB0aGlzIGNsYXNzIHRoYXQgY2FsbHMgb3V0IHRvIHRoZQog
Ly8gZW1iZWRkaW5nIGFwcGxpY2F0aW9uIGluc3RlYWQgb2YgdXNpbmcgV2ViQ29yZSdzIGJ1aWx0
IGluIGFwcGNhY2hlIHN5c3RlbS4KIC8vIFRoaXMgZmlsZSByZXBsYWNlcyB3ZWJjb3JlL2FwcGNh
Y2hlL0FwcGxpY2F0aW9uQ2FjaGVIb3N0LmNwcCBpbiBvdXIgYnVpbGQuCkluZGV4OiBXZWJLaXQv
Y2hyb21pdW0vc3JjL0FwcGxpY2F0aW9uQ2FjaGVIb3N0SW50ZXJuYWwuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBXZWJLaXQvY2hyb21pdW0vc3JjL0FwcGxpY2F0aW9uQ2FjaGVIb3N0SW50ZXJuYWwuaAkocmV2
aXNpb24gNTM1MTkpCShmcm9tIFdlYktpdC9jaHJvbWl1bS9zcmMvQXBwbGljYXRpb25DYWNoZUhv
c3QuY3BwOjUzNTE5KQorKysgV2ViS2l0L2Nocm9taXVtL3NyYy9BcHBsaWNhdGlvbkNhY2hlSG9z
dEludGVybmFsLmgJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwyNTYgQEAKKy8qCisgKiBDb3B5
cmlnaHQgKEMpIDIwMDkgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyAqIG1ldDoKKyAqCisgKiAgICAgKiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgorICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZQorICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorICogaW4gdGhlIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorICogZGlzdHJpYnV0
aW9uLgorICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5h
bWVzIG9mIGl0cworICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJv
bW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVj
aWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworICogIkFT
IElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QKKyAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUgorICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyAqIE9XTkVSIE9SIENPTlRS
SUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAor
ICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVAorICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29u
ZmlnLmgiCisjaW5jbHVkZSAiQXBwbGljYXRpb25DYWNoZUhvc3QuaCIKKworI2lmIEVOQUJMRShP
RkZMSU5FX1dFQl9BUFBMSUNBVElPTlMpCisKKyNpbmNsdWRlICJEb2N1bWVudExvYWRlci5oIgor
I2luY2x1ZGUgIkRPTUFwcGxpY2F0aW9uQ2FjaGUuaCIKKyNpbmNsdWRlICJGcmFtZS5oIgorI2lu
Y2x1ZGUgIlNldHRpbmdzLmgiCisjaW5jbHVkZSAiV2ViQXBwbGljYXRpb25DYWNoZUhvc3QuaCIK
KyNpbmNsdWRlICJXZWJBcHBsaWNhdGlvbkNhY2hlSG9zdENsaWVudC5oIgorI2luY2x1ZGUgIldl
YktpdC5oIgorI2luY2x1ZGUgIldlYktpdENsaWVudC5oIgorI2luY2x1ZGUgIldlYlVSTC5oIgor
I2luY2x1ZGUgIldlYlVSTEVycm9yLmgiCisjaW5jbHVkZSAiV2ViVVJMUmVzcG9uc2UuaCIKKyNp
bmNsdWRlICJXcmFwcGVkUmVzb3VyY2VSZXF1ZXN0LmgiCisjaW5jbHVkZSAiV3JhcHBlZFJlc291
cmNlUmVzcG9uc2UuaCIKKwordXNpbmcgbmFtZXNwYWNlIFdlYktpdDsKKworbmFtZXNwYWNlIFdl
YkNvcmUgeworCisvLyBBcHBsaWNhdGlvbkNhY2hlSG9zdEludGVybmFsIC0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK2NsYXNzIEFwcGxpY2F0aW9uQ2Fj
aGVIb3N0SW50ZXJuYWwgOiBwdWJsaWMgV2ViQXBwbGljYXRpb25DYWNoZUhvc3RDbGllbnQgewor
cHVibGljOgorICAgIEFwcGxpY2F0aW9uQ2FjaGVIb3N0SW50ZXJuYWwoQXBwbGljYXRpb25DYWNo
ZUhvc3QqIGhvc3QpCisgICAgICAgIDogbV9pbm5lckhvc3QoaG9zdCkKKyAgICB7CisgICAgICAg
IG1fb3V0ZXJIb3N0LnNldChXZWJLaXQ6OndlYktpdENsaWVudCgpLT5jcmVhdGVBcHBsaWNhdGlv
bkNhY2hlSG9zdCh0aGlzKSk7CisgICAgfQorCisgICAgdmlydHVhbCB2b2lkIG5vdGlmeUV2ZW50
TGlzdGVuZXIoV2ViQXBwbGljYXRpb25DYWNoZUhvc3Q6OkV2ZW50SUQgZXZlbnRJRCkKKyAgICB7
CisgICAgICAgIG1faW5uZXJIb3N0LT5ub3RpZnlET01BcHBsaWNhdGlvbkNhY2hlKAorICAgICAg
ICAgICAgc3RhdGljX2Nhc3Q8QXBwbGljYXRpb25DYWNoZUhvc3Q6OkV2ZW50SUQ+KGV2ZW50SUQp
KTsKKyAgICB9CisKKyAgICBBcHBsaWNhdGlvbkNhY2hlSG9zdCogbV9pbm5lckhvc3Q7CisgICAg
T3duUHRyPFdlYkFwcGxpY2F0aW9uQ2FjaGVIb3N0PiBtX291dGVySG9zdDsKK307CisKKy8vIEFw
cGxpY2F0aW9uQ2FjaGVIb3N0IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0KKy8vIFdlIHByb3ZpZGUgYSBjdXN0b20gaW1wbGVtZW50YXRpb24g
b2YgdGhpcyBjbGFzcyB0aGF0IGNhbGxzIG91dCB0byB0aGUKKy8vIGVtYmVkZGluZyBhcHBsaWNh
dGlvbiBpbnN0ZWFkIG9mIHVzaW5nIFdlYkNvcmUncyBidWlsdCBpbiBhcHBjYWNoZSBzeXN0ZW0u
CisvLyBUaGlzIGZpbGUgcmVwbGFjZXMgd2ViY29yZS9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hl
SG9zdC5jcHAgaW4gb3VyIGJ1aWxkLgorCitBcHBsaWNhdGlvbkNhY2hlSG9zdDo6QXBwbGljYXRp
b25DYWNoZUhvc3QoRG9jdW1lbnRMb2FkZXIqIGRvY3VtZW50TG9hZGVyKQorICAgIDogbV9kb21B
cHBsaWNhdGlvbkNhY2hlKDApCisgICAgLCBtX2RvY3VtZW50TG9hZGVyKGRvY3VtZW50TG9hZGVy
KQoreworICAgIEFTU0VSVChtX2RvY3VtZW50TG9hZGVyKTsKK30KKworQXBwbGljYXRpb25DYWNo
ZUhvc3Q6On5BcHBsaWNhdGlvbkNhY2hlSG9zdCgpCit7Cit9CisKK3ZvaWQgQXBwbGljYXRpb25D
YWNoZUhvc3Q6Om1heWJlTG9hZE1haW5SZXNvdXJjZShSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3Qs
IFN1YnN0aXR1dGVEYXRhJikKK3sKKyAgICAvLyBXZSBkZWZlciBjcmVhdGluZyB0aGUgb3V0ZXIg
aG9zdCBvYmplY3QgdG8gYXZvaWQgc3B1cmlvdXMgY3JlYXRpb24vZGVzdHJ1Y3Rpb24KKyAgICAv
LyBhcm91bmQgY3JlYXRpbmcgZW1wdHkgZG9jdW1lbnRzLiBBdCB0aGlzIHBvaW50LCB3ZSdyZSBp
bml0aWF0aW5nIGEgbWFpbiByZXNvdXJjZQorICAgIC8vIGxvYWQgZm9yIHRoZSBkb2N1bWVudCwg
c28gaXRzIGZvciByZWFsLgorCisgICAgaWYgKCFpc0FwcGxpY2F0aW9uQ2FjaGVFbmFibGVkKCkp
CisgICAgICAgIHJldHVybjsKKworICAgIG1faW50ZXJuYWwuc2V0KG5ldyBBcHBsaWNhdGlvbkNh
Y2hlSG9zdEludGVybmFsKHRoaXMpKTsKKyAgICBpZiAobV9pbnRlcm5hbC0+bV9vdXRlckhvc3Qp
IHsKKyAgICAgICAgV3JhcHBlZFJlc291cmNlUmVxdWVzdCB3cmFwcGVkKHJlcXVlc3QpOworICAg
ICAgICBtX2ludGVybmFsLT5tX291dGVySG9zdC0+d2lsbFN0YXJ0TWFpblJlc291cmNlUmVxdWVz
dCh3cmFwcGVkKTsKKyAgICB9IGVsc2UKKyAgICAgICAgbV9pbnRlcm5hbC5jbGVhcigpOworCisg
ICAgLy8gTk9URTogVGhlIHNlbWFudGljcyBvZiB0aGlzIG1ldGhvZCwgYW5kIG90aGVycyBpbiB0
aGlzIGludGVyZmFjZSwgYXJlIHN1YnRseSBkaWZmZXJlbnQKKyAgICAvLyB0aGFuIHRoZSBtZXRo
b2QgbmFtZXMgd291bGQgc3VnZ2VzdC4gRm9yIGV4YW1wbGUsIGluIHRoaXMgbWV0aG9kIG5ldmVy
IHJldHVybnMgYW4gYXBwY2FjaGVkCisgICAgLy8gcmVzcG9uc2UgaW4gdGhlIFN1YnN0aXR1dGVE
YXRhIG91dCBhcmd1bWVudCwgaW5zdGVhZCB3ZSByZXR1cm4gdGhlIGFwcGNhY2hlZCByZXNwb25z
ZSB0aHJ1CisgICAgLy8gdGhlIHVzdWFsIHJlc291cmNlIGxvYWRpbmcgcGlwZWxpbmUuCit9CisK
K3ZvaWQgQXBwbGljYXRpb25DYWNoZUhvc3Q6OnNlbGVjdENhY2hlV2l0aG91dE1hbmlmZXN0KCkK
K3sKKyAgICBpZiAobV9pbnRlcm5hbCkKKyAgICAgICAgbV9pbnRlcm5hbC0+bV9vdXRlckhvc3Qt
PnNlbGVjdENhY2hlV2l0aG91dE1hbmlmZXN0KCk7Cit9CisKK3ZvaWQgQXBwbGljYXRpb25DYWNo
ZUhvc3Q6OnNlbGVjdENhY2hlV2l0aE1hbmlmZXN0KGNvbnN0IEtVUkwmIG1hbmlmZXN0VVJMKQor
eworICAgIGlmIChtX2ludGVybmFsKSB7CisgICAgICAgIGlmICghbV9pbnRlcm5hbC0+bV9vdXRl
ckhvc3QtPnNlbGVjdENhY2hlV2l0aE1hbmlmZXN0KG1hbmlmZXN0VVJMKSkgeworICAgICAgICAg
ICAgLy8gSXQncyBhIGZvcmVpZ24gZW50cnksIHJlc3RhcnQgdGhlIGN1cnJlbnQgbmF2aWdhdGlv
biBmcm9tIHRoZSB0b3AKKyAgICAgICAgICAgIC8vIG9mIHRoZSBuYXZpZ2F0aW9uIGFsZ29yaXRo
bS4gVGhlIG5hdmlnYXRpb24gd2lsbCBub3QgcmVzdWx0IGluIHRoZQorICAgICAgICAgICAgLy8g
c2FtZSByZXNvdXJjZSBiZWluZyBsb2FkZWQsIGJlY2F1c2UgImZvcmVpZ24iIGVudHJpZXMgYXJl
IG5ldmVyIHBpY2tlZAorICAgICAgICAgICAgLy8gZHVyaW5nIG5hdmlnYXRpb24uCisgICAgICAg
ICAgICAvLyBzZWUgV2ViQ29yZTo6QXBwbGljYXRpb25DYWNoZUdyb3VwOjpzZWxlY3RDYWNoZSgp
CisgICAgICAgICAgICBjb25zdCBLVVJMJiBkb2NVUkwgPSBtX2RvY3VtZW50TG9hZGVyLT5mcmFt
ZSgpLT5kb2N1bWVudCgpLT51cmwoKTsKKyAgICAgICAgICAgIFN0cmluZyByZWZlcnJlciA9IG1f
ZG9jdW1lbnRMb2FkZXItPmZyYW1lTG9hZGVyKCktPnJlZmVycmVyKCk7CisgICAgICAgICAgICBt
X2RvY3VtZW50TG9hZGVyLT5mcmFtZSgpLT5yZWRpcmVjdFNjaGVkdWxlcigpLT5zY2hlZHVsZUxv
Y2F0aW9uQ2hhbmdlKGRvY1VSTCwgcmVmZXJyZXIpOworICAgICAgICB9CisgICAgfQorfQorCiti
b29sIEFwcGxpY2F0aW9uQ2FjaGVIb3N0OjptYXliZUxvYWRGYWxsYmFja0Zvck1haW5SZXNwb25z
ZShjb25zdCBSZXNvdXJjZVJlcXVlc3QmLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25z
ZSkKK3sKKyAgICBpZiAobV9pbnRlcm5hbCkgeworICAgICAgICBXcmFwcGVkUmVzb3VyY2VSZXNw
b25zZSB3cmFwcGVkKHJlc3BvbnNlKTsKKyAgICAgICAgbV9pbnRlcm5hbC0+bV9vdXRlckhvc3Qt
PmRpZFJlY2VpdmVSZXNwb25zZUZvck1haW5SZXNvdXJjZSh3cmFwcGVkKTsKKyAgICB9CisgICAg
cmV0dXJuIGZhbHNlOworfQorCitib29sIEFwcGxpY2F0aW9uQ2FjaGVIb3N0OjptYXliZUxvYWRG
YWxsYmFja0Zvck1haW5FcnJvcihjb25zdCBSZXNvdXJjZVJlcXVlc3QmLCBjb25zdCBSZXNvdXJj
ZUVycm9yJiBlcnJvcikKK3sKKyAgICAvLyBOL0EgdG8gdGhlIGNocm9taXVtIHBvcnQKKyAgICBy
ZXR1cm4gZmFsc2U7Cit9CisKK3ZvaWQgQXBwbGljYXRpb25DYWNoZUhvc3Q6Om1haW5SZXNvdXJj
ZURhdGFSZWNlaXZlZChjb25zdCBjaGFyKiBkYXRhLCBpbnQgbGVuZ3RoLCBsb25nIGxvbmcsIGJv
b2wpCit7CisgICAgaWYgKG1faW50ZXJuYWwpCisgICAgICAgIG1faW50ZXJuYWwtPm1fb3V0ZXJI
b3N0LT5kaWRSZWNlaXZlRGF0YUZvck1haW5SZXNvdXJjZShkYXRhLCBsZW5ndGgpOworfQorCit2
b2lkIEFwcGxpY2F0aW9uQ2FjaGVIb3N0OjpmYWlsZWRMb2FkaW5nTWFpblJlc291cmNlKCkKK3sK
KyAgICBpZiAobV9pbnRlcm5hbCkKKyAgICAgICAgbV9pbnRlcm5hbC0+bV9vdXRlckhvc3QtPmRp
ZEZpbmlzaExvYWRpbmdNYWluUmVzb3VyY2UoZmFsc2UpOworfQorCit2b2lkIEFwcGxpY2F0aW9u
Q2FjaGVIb3N0OjpmaW5pc2hlZExvYWRpbmdNYWluUmVzb3VyY2UoKQoreworICAgIGlmIChtX2lu
dGVybmFsKQorICAgICAgICBtX2ludGVybmFsLT5tX291dGVySG9zdC0+ZGlkRmluaXNoTG9hZGlu
Z01haW5SZXNvdXJjZSh0cnVlKTsKK30KKworYm9vbCBBcHBsaWNhdGlvbkNhY2hlSG9zdDo6bWF5
YmVMb2FkUmVzb3VyY2UoUmVzb3VyY2VMb2FkZXIqLCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3Qs
IGNvbnN0IEtVUkwmKQoreworICAgIC8vIEZJWE1FOiBsb29rIGludG8gdGhlIHB1cnBvc2Ugb2Yg
dGhlIHVudXNlZCBLVVJMJiBvcmlnaW5hbFVSTCBwYXJhbWV0ZXIKKyAgICBpZiAobV9pbnRlcm5h
bCkgeworICAgICAgICBXcmFwcGVkUmVzb3VyY2VSZXF1ZXN0IHdyYXBwZWQocmVxdWVzdCk7Cisg
ICAgICAgIG1faW50ZXJuYWwtPm1fb3V0ZXJIb3N0LT53aWxsU3RhcnRTdWJSZXNvdXJjZVJlcXVl
c3Qod3JhcHBlZCk7CisgICAgfQorICAgIHJldHVybiBmYWxzZTsKK30KKworYm9vbCBBcHBsaWNh
dGlvbkNhY2hlSG9zdDo6bWF5YmVMb2FkRmFsbGJhY2tGb3JSZWRpcmVjdChSZXNvdXJjZUxvYWRl
ciosIFJlc291cmNlUmVxdWVzdCYsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmKQoreworICAgIC8v
IE4vQSB0byB0aGUgY2hyb21pdW0gcG9ydAorICAgIHJldHVybiBmYWxzZTsKK30KKworYm9vbCBB
cHBsaWNhdGlvbkNhY2hlSG9zdDo6bWF5YmVMb2FkRmFsbGJhY2tGb3JSZXNwb25zZShSZXNvdXJj
ZUxvYWRlciosIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmKQoreworICAgIC8vIE4vQSB0byB0aGUg
Y2hyb21pdW0gcG9ydAorICAgIHJldHVybiBmYWxzZTsKK30KKworYm9vbCBBcHBsaWNhdGlvbkNh
Y2hlSG9zdDo6bWF5YmVMb2FkRmFsbGJhY2tGb3JFcnJvcihSZXNvdXJjZUxvYWRlciosIGNvbnN0
IFJlc291cmNlRXJyb3ImKQoreworICAgIC8vIE4vQSB0byB0aGUgY2hyb21pdW0gcG9ydAorICAg
IHJldHVybiBmYWxzZTsKK30KKworYm9vbCBBcHBsaWNhdGlvbkNhY2hlSG9zdDo6bWF5YmVMb2Fk
U3luY2hyb25vdXNseShSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIFJlc291cmNlRXJyb3ImLCBS
ZXNvdXJjZVJlc3BvbnNlJiwgVmVjdG9yPGNoYXI+JikKK3sKKyAgICBpZiAobV9pbnRlcm5hbCkg
eworICAgICAgICBXcmFwcGVkUmVzb3VyY2VSZXF1ZXN0IHdyYXBwZWQocmVxdWVzdCk7CisgICAg
ICAgIG1faW50ZXJuYWwtPm1fb3V0ZXJIb3N0LT53aWxsU3RhcnRTdWJSZXNvdXJjZVJlcXVlc3Qo
d3JhcHBlZCk7CisgICAgfQorICAgIHJldHVybiBmYWxzZTsKK30KKwordm9pZCBBcHBsaWNhdGlv
bkNhY2hlSG9zdDo6bWF5YmVMb2FkRmFsbGJhY2tTeW5jaHJvbm91c2x5KGNvbnN0IFJlc291cmNl
UmVxdWVzdCYsIFJlc291cmNlRXJyb3ImLCBSZXNvdXJjZVJlc3BvbnNlJiwgVmVjdG9yPGNoYXI+
JikKK3sKKyAgICAvLyBOL0EgdG8gdGhlIGNocm9taXVtIHBvcnQKK30KKworYm9vbCBBcHBsaWNh
dGlvbkNhY2hlSG9zdDo6Y2FuQ2FjaGVJblBhZ2VDYWNoZSgpIGNvbnN0Cit7CisgICAgLy8gTi9B
IHRvIHRoZSBjaHJvbWl1bSBwb3J0IHdoaWNoIGRvZXNuJ3QgdXNlIHRoZSBwYWdlIGNhY2hlLgor
ICAgIHJldHVybiBmYWxzZTsKK30KKwordm9pZCBBcHBsaWNhdGlvbkNhY2hlSG9zdDo6c2V0RE9N
QXBwbGljYXRpb25DYWNoZShET01BcHBsaWNhdGlvbkNhY2hlKiBkb21BcHBsaWNhdGlvbkNhY2hl
KQoreworICAgIEFTU0VSVCghbV9kb21BcHBsaWNhdGlvbkNhY2hlIHx8ICFkb21BcHBsaWNhdGlv
bkNhY2hlKTsKKyAgICBtX2RvbUFwcGxpY2F0aW9uQ2FjaGUgPSBkb21BcHBsaWNhdGlvbkNhY2hl
OworfQorCit2b2lkIEFwcGxpY2F0aW9uQ2FjaGVIb3N0Ojpub3RpZnlET01BcHBsaWNhdGlvbkNh
Y2hlKEV2ZW50SUQgaWQpCit7CisgICAgaWYgKG1fZG9tQXBwbGljYXRpb25DYWNoZSkgeworICAg
ICAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsKKyAgICAgICAgbV9kb21BcHBsaWNhdGlvbkNhY2hl
LT5kaXNwYXRjaEV2ZW50KAorICAgICAgICAgICAgRXZlbnQ6OmNyZWF0ZShET01BcHBsaWNhdGlv
bkNhY2hlOjp0b0V2ZW50VHlwZShpZCksIGZhbHNlLCBmYWxzZSksCisgICAgICAgICAgICBlYyk7
CisgICAgICAgIEFTU0VSVCghZWMpOworICAgIH0KK30KKworQXBwbGljYXRpb25DYWNoZUhvc3Q6
OlN0YXR1cyBBcHBsaWNhdGlvbkNhY2hlSG9zdDo6c3RhdHVzKCkgY29uc3QKK3sKKyAgICByZXR1
cm4gbV9pbnRlcm5hbCA/IHN0YXRpY19jYXN0PFN0YXR1cz4obV9pbnRlcm5hbC0+bV9vdXRlckhv
c3QtPnN0YXR1cygpKSA6IFVOQ0FDSEVEOworfQorCitib29sIEFwcGxpY2F0aW9uQ2FjaGVIb3N0
Ojp1cGRhdGUoKQoreworICAgIHJldHVybiBtX2ludGVybmFsID8gbV9pbnRlcm5hbC0+bV9vdXRl
ckhvc3QtPnN0YXJ0VXBkYXRlKCkgOiBmYWxzZTsKK30KKworYm9vbCBBcHBsaWNhdGlvbkNhY2hl
SG9zdDo6c3dhcENhY2hlKCkKK3sKKyAgICByZXR1cm4gbV9pbnRlcm5hbCA/IG1faW50ZXJuYWwt
Pm1fb3V0ZXJIb3N0LT5zd2FwQ2FjaGUoKSA6IGZhbHNlOworfQorCitib29sIEFwcGxpY2F0aW9u
Q2FjaGVIb3N0Ojppc0FwcGxpY2F0aW9uQ2FjaGVFbmFibGVkKCkKK3sKKyAgICBBU1NFUlQobV9k
b2N1bWVudExvYWRlci0+ZnJhbWUoKSk7CisgICAgcmV0dXJuIG1fZG9jdW1lbnRMb2FkZXItPmZy
YW1lKCktPnNldHRpbmdzKCkKKyAgICAgICAgICAgJiYgbV9kb2N1bWVudExvYWRlci0+ZnJhbWUo
KS0+c2V0dGluZ3MoKS0+b2ZmbGluZVdlYkFwcGxpY2F0aW9uQ2FjaGVFbmFibGVkKCk7Cit9CisK
K30gIC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAgLy8gRU5BQkxFKE9GRkxJTkVfV0VC
X0FQUExJQ0FUSU9OUykKSW5kZXg6IFdlYktpdC9jaHJvbWl1bS9zcmMvQXBwbGljYXRpb25DYWNo
ZUhvc3RJbnRlcm5hbC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdC9jaHJvbWl1bS9zcmMvQXBwbGlj
YXRpb25DYWNoZUhvc3RJbnRlcm5hbC5oCShyZXZpc2lvbiA1MzUxOSkKKysrIFdlYktpdC9jaHJv
bWl1bS9zcmMvQXBwbGljYXRpb25DYWNoZUhvc3RJbnRlcm5hbC5oCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAwOSBHb29nbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEwIEdvb2dsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCkBAIC0z
MywyNyArMzMsMTMgQEAKIAogI2lmIEVOQUJMRShPRkZMSU5FX1dFQl9BUFBMSUNBVElPTlMpCiAK
LSNpbmNsdWRlICJEb2N1bWVudExvYWRlci5oIgotI2luY2x1ZGUgIkRPTUFwcGxpY2F0aW9uQ2Fj
aGUuaCIKLSNpbmNsdWRlICJGcmFtZS5oIgotI2luY2x1ZGUgIlNldHRpbmdzLmgiCi0jaW5jbHVk
ZSAiV2ViQXBwbGljYXRpb25DYWNoZUhvc3QuaCIKICNpbmNsdWRlICJXZWJBcHBsaWNhdGlvbkNh
Y2hlSG9zdENsaWVudC5oIgogI2luY2x1ZGUgIldlYktpdC5oIgogI2luY2x1ZGUgIldlYktpdENs
aWVudC5oIgotI2luY2x1ZGUgIldlYlVSTC5oIgotI2luY2x1ZGUgIldlYlVSTEVycm9yLmgiCi0j
aW5jbHVkZSAiV2ViVVJMUmVzcG9uc2UuaCIKLSNpbmNsdWRlICJXcmFwcGVkUmVzb3VyY2VSZXF1
ZXN0LmgiCi0jaW5jbHVkZSAiV3JhcHBlZFJlc291cmNlUmVzcG9uc2UuaCIKLQotdXNpbmcgbmFt
ZXNwYWNlIFdlYktpdDsKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi0vLyBBcHBsaWNhdGlvbkNh
Y2hlSG9zdEludGVybmFsIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tCi0KLWNsYXNzIEFwcGxpY2F0aW9uQ2FjaGVIb3N0SW50ZXJuYWwgOiBwdWJsaWMgV2Vi
QXBwbGljYXRpb25DYWNoZUhvc3RDbGllbnQgeworY2xhc3MgQXBwbGljYXRpb25DYWNoZUhvc3RJ
bnRlcm5hbCA6IHB1YmxpYyBXZWJLaXQ6OldlYkFwcGxpY2F0aW9uQ2FjaGVIb3N0Q2xpZW50IHsK
IHB1YmxpYzoKICAgICBBcHBsaWNhdGlvbkNhY2hlSG9zdEludGVybmFsKEFwcGxpY2F0aW9uQ2Fj
aGVIb3N0KiBob3N0KQogICAgICAgICA6IG1faW5uZXJIb3N0KGhvc3QpCkBAIC02MSwxOTYgKzQ3
LDI0IEBAIHB1YmxpYzoKICAgICAgICAgbV9vdXRlckhvc3Quc2V0KFdlYktpdDo6d2ViS2l0Q2xp
ZW50KCktPmNyZWF0ZUFwcGxpY2F0aW9uQ2FjaGVIb3N0KHRoaXMpKTsKICAgICB9CiAKLSAgICB2
aXJ0dWFsIHZvaWQgbm90aWZ5RXZlbnRMaXN0ZW5lcihXZWJBcHBsaWNhdGlvbkNhY2hlSG9zdDo6
RXZlbnRJRCBldmVudElEKQorICAgIHZpcnR1YWwgdm9pZCBub3RpZnlFdmVudExpc3RlbmVyKFdl
YktpdDo6V2ViQXBwbGljYXRpb25DYWNoZUhvc3Q6OkV2ZW50SUQgZXZlbnRJRCkKICAgICB7Ci0g
ICAgICAgIG1faW5uZXJIb3N0LT5ub3RpZnlET01BcHBsaWNhdGlvbkNhY2hlKAotICAgICAgICAg
ICAgc3RhdGljX2Nhc3Q8QXBwbGljYXRpb25DYWNoZUhvc3Q6OkV2ZW50SUQ+KGV2ZW50SUQpKTsK
LSAgICB9Ci0KLSAgICBBcHBsaWNhdGlvbkNhY2hlSG9zdCogbV9pbm5lckhvc3Q7Ci0gICAgT3du
UHRyPFdlYkFwcGxpY2F0aW9uQ2FjaGVIb3N0PiBtX291dGVySG9zdDsKLX07Ci0KLS8vIEFwcGxp
Y2F0aW9uQ2FjaGVIb3N0IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0KLS8vIFdlIHByb3ZpZGUgYSBjdXN0b20gaW1wbGVtZW50YXRpb24gb2Yg
dGhpcyBjbGFzcyB0aGF0IGNhbGxzIG91dCB0byB0aGUKLS8vIGVtYmVkZGluZyBhcHBsaWNhdGlv
biBpbnN0ZWFkIG9mIHVzaW5nIFdlYkNvcmUncyBidWlsdCBpbiBhcHBjYWNoZSBzeXN0ZW0uCi0v
LyBUaGlzIGZpbGUgcmVwbGFjZXMgd2ViY29yZS9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlSG9z
dC5jcHAgaW4gb3VyIGJ1aWxkLgotCi1BcHBsaWNhdGlvbkNhY2hlSG9zdDo6QXBwbGljYXRpb25D
YWNoZUhvc3QoRG9jdW1lbnRMb2FkZXIqIGRvY3VtZW50TG9hZGVyKQotICAgIDogbV9kb21BcHBs
aWNhdGlvbkNhY2hlKDApCi0gICAgLCBtX2RvY3VtZW50TG9hZGVyKGRvY3VtZW50TG9hZGVyKQot
ewotICAgIEFTU0VSVChtX2RvY3VtZW50TG9hZGVyKTsKLX0KLQotQXBwbGljYXRpb25DYWNoZUhv
c3Q6On5BcHBsaWNhdGlvbkNhY2hlSG9zdCgpCi17Ci19Ci0KLXZvaWQgQXBwbGljYXRpb25DYWNo
ZUhvc3Q6Om1heWJlTG9hZE1haW5SZXNvdXJjZShSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIFN1
YnN0aXR1dGVEYXRhJikKLXsKLSAgICAvLyBXZSBkZWZlciBjcmVhdGluZyB0aGUgb3V0ZXIgaG9z
dCBvYmplY3QgdG8gYXZvaWQgc3B1cmlvdXMgY3JlYXRpb24vZGVzdHJ1Y3Rpb24KLSAgICAvLyBh
cm91bmQgY3JlYXRpbmcgZW1wdHkgZG9jdW1lbnRzLiBBdCB0aGlzIHBvaW50LCB3ZSdyZSBpbml0
aWF0aW5nIGEgbWFpbiByZXNvdXJjZQotICAgIC8vIGxvYWQgZm9yIHRoZSBkb2N1bWVudCwgc28g
aXRzIGZvciByZWFsLgotCi0gICAgaWYgKCFpc0FwcGxpY2F0aW9uQ2FjaGVFbmFibGVkKCkpCi0g
ICAgICAgIHJldHVybjsKLQotICAgIG1faW50ZXJuYWwuc2V0KG5ldyBBcHBsaWNhdGlvbkNhY2hl
SG9zdEludGVybmFsKHRoaXMpKTsKLSAgICBpZiAobV9pbnRlcm5hbC0+bV9vdXRlckhvc3QpIHsK
LSAgICAgICAgV3JhcHBlZFJlc291cmNlUmVxdWVzdCB3cmFwcGVkKHJlcXVlc3QpOwotICAgICAg
ICBtX2ludGVybmFsLT5tX291dGVySG9zdC0+d2lsbFN0YXJ0TWFpblJlc291cmNlUmVxdWVzdCh3
cmFwcGVkKTsKLSAgICB9IGVsc2UKLSAgICAgICAgbV9pbnRlcm5hbC5jbGVhcigpOwotCi0gICAg
Ly8gTk9URTogVGhlIHNlbWFudGljcyBvZiB0aGlzIG1ldGhvZCwgYW5kIG90aGVycyBpbiB0aGlz
IGludGVyZmFjZSwgYXJlIHN1YnRseSBkaWZmZXJlbnQKLSAgICAvLyB0aGFuIHRoZSBtZXRob2Qg
bmFtZXMgd291bGQgc3VnZ2VzdC4gRm9yIGV4YW1wbGUsIGluIHRoaXMgbWV0aG9kIG5ldmVyIHJl
dHVybnMgYW4gYXBwY2FjaGVkCi0gICAgLy8gcmVzcG9uc2UgaW4gdGhlIFN1YnN0aXR1dGVEYXRh
IG91dCBhcmd1bWVudCwgaW5zdGVhZCB3ZSByZXR1cm4gdGhlIGFwcGNhY2hlZCByZXNwb25zZSB0
aHJ1Ci0gICAgLy8gdGhlIHVzdWFsIHJlc291cmNlIGxvYWRpbmcgcGlwZWxpbmUuCi19Ci0KLXZv
aWQgQXBwbGljYXRpb25DYWNoZUhvc3Q6OnNlbGVjdENhY2hlV2l0aG91dE1hbmlmZXN0KCkKLXsK
LSAgICBpZiAobV9pbnRlcm5hbCkKLSAgICAgICAgbV9pbnRlcm5hbC0+bV9vdXRlckhvc3QtPnNl
bGVjdENhY2hlV2l0aG91dE1hbmlmZXN0KCk7Ci19Ci0KLXZvaWQgQXBwbGljYXRpb25DYWNoZUhv
c3Q6OnNlbGVjdENhY2hlV2l0aE1hbmlmZXN0KGNvbnN0IEtVUkwmIG1hbmlmZXN0VVJMKQotewot
ICAgIGlmIChtX2ludGVybmFsKSB7Ci0gICAgICAgIGlmICghbV9pbnRlcm5hbC0+bV9vdXRlckhv
c3QtPnNlbGVjdENhY2hlV2l0aE1hbmlmZXN0KG1hbmlmZXN0VVJMKSkgewotICAgICAgICAgICAg
Ly8gSXQncyBhIGZvcmVpZ24gZW50cnksIHJlc3RhcnQgdGhlIGN1cnJlbnQgbmF2aWdhdGlvbiBm
cm9tIHRoZSB0b3AKLSAgICAgICAgICAgIC8vIG9mIHRoZSBuYXZpZ2F0aW9uIGFsZ29yaXRobS4g
VGhlIG5hdmlnYXRpb24gd2lsbCBub3QgcmVzdWx0IGluIHRoZQotICAgICAgICAgICAgLy8gc2Ft
ZSByZXNvdXJjZSBiZWluZyBsb2FkZWQsIGJlY2F1c2UgImZvcmVpZ24iIGVudHJpZXMgYXJlIG5l
dmVyIHBpY2tlZAotICAgICAgICAgICAgLy8gZHVyaW5nIG5hdmlnYXRpb24uCi0gICAgICAgICAg
ICAvLyBzZWUgV2ViQ29yZTo6QXBwbGljYXRpb25DYWNoZUdyb3VwOjpzZWxlY3RDYWNoZSgpCi0g
ICAgICAgICAgICBjb25zdCBLVVJMJiBkb2NVUkwgPSBtX2RvY3VtZW50TG9hZGVyLT5mcmFtZSgp
LT5kb2N1bWVudCgpLT51cmwoKTsKLSAgICAgICAgICAgIFN0cmluZyByZWZlcnJlciA9IG1fZG9j
dW1lbnRMb2FkZXItPmZyYW1lTG9hZGVyKCktPnJlZmVycmVyKCk7Ci0gICAgICAgICAgICBtX2Rv
Y3VtZW50TG9hZGVyLT5mcmFtZSgpLT5yZWRpcmVjdFNjaGVkdWxlcigpLT5zY2hlZHVsZUxvY2F0
aW9uQ2hhbmdlKGRvY1VSTCwgcmVmZXJyZXIpOwotICAgICAgICB9CisgICAgICAgIG1faW5uZXJI
b3N0LT5ub3RpZnlET01BcHBsaWNhdGlvbkNhY2hlKHN0YXRpY19jYXN0PEFwcGxpY2F0aW9uQ2Fj
aGVIb3N0OjpFdmVudElEPihldmVudElEKSk7CiAgICAgfQotfQotCi1ib29sIEFwcGxpY2F0aW9u
Q2FjaGVIb3N0OjptYXliZUxvYWRGYWxsYmFja0Zvck1haW5SZXNwb25zZShjb25zdCBSZXNvdXJj
ZVJlcXVlc3QmLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSkKLXsKLSAgICBpZiAo
bV9pbnRlcm5hbCkgewotICAgICAgICBXcmFwcGVkUmVzb3VyY2VSZXNwb25zZSB3cmFwcGVkKHJl
c3BvbnNlKTsKLSAgICAgICAgbV9pbnRlcm5hbC0+bV9vdXRlckhvc3QtPmRpZFJlY2VpdmVSZXNw
b25zZUZvck1haW5SZXNvdXJjZSh3cmFwcGVkKTsKLSAgICB9Ci0gICAgcmV0dXJuIGZhbHNlOwot
fQogCi1ib29sIEFwcGxpY2F0aW9uQ2FjaGVIb3N0OjptYXliZUxvYWRGYWxsYmFja0Zvck1haW5F
cnJvcihjb25zdCBSZXNvdXJjZVJlcXVlc3QmLCBjb25zdCBSZXNvdXJjZUVycm9yJiBlcnJvcikK
LXsKLSAgICAvLyBOL0EgdG8gdGhlIGNocm9taXVtIHBvcnQKLSAgICByZXR1cm4gZmFsc2U7Ci19
Ci0KLXZvaWQgQXBwbGljYXRpb25DYWNoZUhvc3Q6Om1haW5SZXNvdXJjZURhdGFSZWNlaXZlZChj
b25zdCBjaGFyKiBkYXRhLCBpbnQgbGVuZ3RoLCBsb25nIGxvbmcsIGJvb2wpCi17Ci0gICAgaWYg
KG1faW50ZXJuYWwpCi0gICAgICAgIG1faW50ZXJuYWwtPm1fb3V0ZXJIb3N0LT5kaWRSZWNlaXZl
RGF0YUZvck1haW5SZXNvdXJjZShkYXRhLCBsZW5ndGgpOwotfQotCi12b2lkIEFwcGxpY2F0aW9u
Q2FjaGVIb3N0OjpmYWlsZWRMb2FkaW5nTWFpblJlc291cmNlKCkKLXsKLSAgICBpZiAobV9pbnRl
cm5hbCkKLSAgICAgICAgbV9pbnRlcm5hbC0+bV9vdXRlckhvc3QtPmRpZEZpbmlzaExvYWRpbmdN
YWluUmVzb3VyY2UoZmFsc2UpOwotfQotCi12b2lkIEFwcGxpY2F0aW9uQ2FjaGVIb3N0OjpmaW5p
c2hlZExvYWRpbmdNYWluUmVzb3VyY2UoKQotewotICAgIGlmIChtX2ludGVybmFsKQotICAgICAg
ICBtX2ludGVybmFsLT5tX291dGVySG9zdC0+ZGlkRmluaXNoTG9hZGluZ01haW5SZXNvdXJjZSh0
cnVlKTsKLX0KLQotYm9vbCBBcHBsaWNhdGlvbkNhY2hlSG9zdDo6bWF5YmVMb2FkUmVzb3VyY2Uo
UmVzb3VyY2VMb2FkZXIqLCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIGNvbnN0IEtVUkwmKQot
ewotICAgIC8vIEZJWE1FOiBsb29rIGludG8gdGhlIHB1cnBvc2Ugb2YgdGhlIHVudXNlZCBLVVJM
JiBvcmlnaW5hbFVSTCBwYXJhbWV0ZXIKLSAgICBpZiAobV9pbnRlcm5hbCkgewotICAgICAgICBX
cmFwcGVkUmVzb3VyY2VSZXF1ZXN0IHdyYXBwZWQocmVxdWVzdCk7Ci0gICAgICAgIG1faW50ZXJu
YWwtPm1fb3V0ZXJIb3N0LT53aWxsU3RhcnRTdWJSZXNvdXJjZVJlcXVlc3Qod3JhcHBlZCk7Ci0g
ICAgfQotICAgIHJldHVybiBmYWxzZTsKLX0KLQotYm9vbCBBcHBsaWNhdGlvbkNhY2hlSG9zdDo6
bWF5YmVMb2FkRmFsbGJhY2tGb3JSZWRpcmVjdChSZXNvdXJjZUxvYWRlciosIFJlc291cmNlUmVx
dWVzdCYsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmKQotewotICAgIC8vIE4vQSB0byB0aGUgY2hy
b21pdW0gcG9ydAotICAgIHJldHVybiBmYWxzZTsKLX0KLQotYm9vbCBBcHBsaWNhdGlvbkNhY2hl
SG9zdDo6bWF5YmVMb2FkRmFsbGJhY2tGb3JSZXNwb25zZShSZXNvdXJjZUxvYWRlciosIGNvbnN0
IFJlc291cmNlUmVzcG9uc2UmKQotewotICAgIC8vIE4vQSB0byB0aGUgY2hyb21pdW0gcG9ydAot
ICAgIHJldHVybiBmYWxzZTsKLX0KLQotYm9vbCBBcHBsaWNhdGlvbkNhY2hlSG9zdDo6bWF5YmVM
b2FkRmFsbGJhY2tGb3JFcnJvcihSZXNvdXJjZUxvYWRlciosIGNvbnN0IFJlc291cmNlRXJyb3Im
KQotewotICAgIC8vIE4vQSB0byB0aGUgY2hyb21pdW0gcG9ydAotICAgIHJldHVybiBmYWxzZTsK
LX0KLQotYm9vbCBBcHBsaWNhdGlvbkNhY2hlSG9zdDo6bWF5YmVMb2FkU3luY2hyb25vdXNseShS
ZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIFJlc291cmNlRXJyb3ImLCBSZXNvdXJjZVJlc3BvbnNl
JiwgVmVjdG9yPGNoYXI+JikKLXsKLSAgICBpZiAobV9pbnRlcm5hbCkgewotICAgICAgICBXcmFw
cGVkUmVzb3VyY2VSZXF1ZXN0IHdyYXBwZWQocmVxdWVzdCk7Ci0gICAgICAgIG1faW50ZXJuYWwt
Pm1fb3V0ZXJIb3N0LT53aWxsU3RhcnRTdWJSZXNvdXJjZVJlcXVlc3Qod3JhcHBlZCk7Ci0gICAg
fQotICAgIHJldHVybiBmYWxzZTsKLX0KLQotdm9pZCBBcHBsaWNhdGlvbkNhY2hlSG9zdDo6bWF5
YmVMb2FkRmFsbGJhY2tTeW5jaHJvbm91c2x5KGNvbnN0IFJlc291cmNlUmVxdWVzdCYsIFJlc291
cmNlRXJyb3ImLCBSZXNvdXJjZVJlc3BvbnNlJiwgVmVjdG9yPGNoYXI+JikKLXsKLSAgICAvLyBO
L0EgdG8gdGhlIGNocm9taXVtIHBvcnQKLX0KLQotYm9vbCBBcHBsaWNhdGlvbkNhY2hlSG9zdDo6
Y2FuQ2FjaGVJblBhZ2VDYWNoZSgpIGNvbnN0Ci17Ci0gICAgLy8gTi9BIHRvIHRoZSBjaHJvbWl1
bSBwb3J0IHdoaWNoIGRvZXNuJ3QgdXNlIHRoZSBwYWdlIGNhY2hlLgotICAgIHJldHVybiBmYWxz
ZTsKLX0KLQotdm9pZCBBcHBsaWNhdGlvbkNhY2hlSG9zdDo6c2V0RE9NQXBwbGljYXRpb25DYWNo
ZShET01BcHBsaWNhdGlvbkNhY2hlKiBkb21BcHBsaWNhdGlvbkNhY2hlKQotewotICAgIEFTU0VS
VCghbV9kb21BcHBsaWNhdGlvbkNhY2hlIHx8ICFkb21BcHBsaWNhdGlvbkNhY2hlKTsKLSAgICBt
X2RvbUFwcGxpY2F0aW9uQ2FjaGUgPSBkb21BcHBsaWNhdGlvbkNhY2hlOwotfQotCi12b2lkIEFw
cGxpY2F0aW9uQ2FjaGVIb3N0Ojpub3RpZnlET01BcHBsaWNhdGlvbkNhY2hlKEV2ZW50SUQgaWQp
Ci17Ci0gICAgaWYgKG1fZG9tQXBwbGljYXRpb25DYWNoZSkgewotICAgICAgICBFeGNlcHRpb25D
b2RlIGVjID0gMDsKLSAgICAgICAgbV9kb21BcHBsaWNhdGlvbkNhY2hlLT5kaXNwYXRjaEV2ZW50
KAotICAgICAgICAgICAgRXZlbnQ6OmNyZWF0ZShET01BcHBsaWNhdGlvbkNhY2hlOjp0b0V2ZW50
VHlwZShpZCksIGZhbHNlLCBmYWxzZSksCi0gICAgICAgICAgICBlYyk7Ci0gICAgICAgIEFTU0VS
VCghZWMpOworICAgIHN0YXRpYyBXZWJLaXQ6OldlYkFwcGxpY2F0aW9uQ2FjaGVIb3N0KiB0b1dl
YkFwcGxpY2F0aW9uQ2FjaGVIb3N0KEFwcGxpY2F0aW9uQ2FjaGVIb3N0KiBpbm5lckhvc3QpCisg
ICAgeworICAgICAgICBpZiAoaW5uZXJIb3N0ICYmIGlubmVySG9zdC0+bV9pbnRlcm5hbC5nZXQo
KSkKKyAgICAgICAgICAgIHJldHVybiBpbm5lckhvc3QtPm1faW50ZXJuYWwtPm1fb3V0ZXJIb3N0
LmdldCgpOworICAgICAgICByZXR1cm4gMDsKICAgICB9Ci19Ci0KLUFwcGxpY2F0aW9uQ2FjaGVI
b3N0OjpTdGF0dXMgQXBwbGljYXRpb25DYWNoZUhvc3Q6OnN0YXR1cygpIGNvbnN0Ci17Ci0gICAg
cmV0dXJuIG1faW50ZXJuYWwgPyBzdGF0aWNfY2FzdDxTdGF0dXM+KG1faW50ZXJuYWwtPm1fb3V0
ZXJIb3N0LT5zdGF0dXMoKSkgOiBVTkNBQ0hFRDsKLX0KLQotYm9vbCBBcHBsaWNhdGlvbkNhY2hl
SG9zdDo6dXBkYXRlKCkKLXsKLSAgICByZXR1cm4gbV9pbnRlcm5hbCA/IG1faW50ZXJuYWwtPm1f
b3V0ZXJIb3N0LT5zdGFydFVwZGF0ZSgpIDogZmFsc2U7Ci19CiAKLWJvb2wgQXBwbGljYXRpb25D
YWNoZUhvc3Q6OnN3YXBDYWNoZSgpCi17Ci0gICAgcmV0dXJuIG1faW50ZXJuYWwgPyBtX2ludGVy
bmFsLT5tX291dGVySG9zdC0+c3dhcENhY2hlKCkgOiBmYWxzZTsKLX0KK3ByaXZhdGU6CisgICAg
ZnJpZW5kIGNsYXNzIEFwcGxpY2F0aW9uQ2FjaGVIb3N0OworICAgIEFwcGxpY2F0aW9uQ2FjaGVI
b3N0KiBtX2lubmVySG9zdDsKKyAgICBPd25QdHI8V2ViS2l0OjpXZWJBcHBsaWNhdGlvbkNhY2hl
SG9zdD4gbV9vdXRlckhvc3Q7Cit9OwogCi1ib29sIEFwcGxpY2F0aW9uQ2FjaGVIb3N0Ojppc0Fw
cGxpY2F0aW9uQ2FjaGVFbmFibGVkKCkKLXsKLSAgICBBU1NFUlQobV9kb2N1bWVudExvYWRlci0+
ZnJhbWUoKSk7Ci0gICAgcmV0dXJuIG1fZG9jdW1lbnRMb2FkZXItPmZyYW1lKCktPnNldHRpbmdz
KCkKLSAgICAgICAgICAgJiYgbV9kb2N1bWVudExvYWRlci0+ZnJhbWUoKS0+c2V0dGluZ3MoKS0+
b2ZmbGluZVdlYkFwcGxpY2F0aW9uQ2FjaGVFbmFibGVkKCk7CiB9CiAKLX0gIC8vIG5hbWVzcGFj
ZSBXZWJDb3JlCi0KICNlbmRpZiAgLy8gRU5BQkxFKE9GRkxJTkVfV0VCX0FQUExJQ0FUSU9OUykK
SW5kZXg6IFdlYktpdC9jaHJvbWl1bS9zcmMvV2ViRGF0YVNvdXJjZUltcGwuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFdlYktpdC9jaHJvbWl1bS9zcmMvV2ViRGF0YVNvdXJjZUltcGwuY3BwCShyZXZpc2lv
biA1MzUxOSkKKysrIFdlYktpdC9jaHJvbWl1bS9zcmMvV2ViRGF0YVNvdXJjZUltcGwuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC0zMSw2ICszMSw3IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5j
bHVkZSAiV2ViRGF0YVNvdXJjZUltcGwuaCIKIAorI2luY2x1ZGUgIkFwcGxpY2F0aW9uQ2FjaGVI
b3N0SW50ZXJuYWwuaCIKICNpbmNsdWRlICJXZWJVUkwuaCIKICNpbmNsdWRlICJXZWJVUkxFcnJv
ci5oIgogI2luY2x1ZGUgIldlYlZlY3Rvci5oIgpAQCAtMTA4LDYgKzEwOSwxNCBAQCB2b2lkIFdl
YkRhdGFTb3VyY2VJbXBsOjpzZXRFeHRyYURhdGEoRXh0CiAgICAgbV9leHRyYURhdGEuc2V0KGV4
dHJhRGF0YSk7CiB9CiAKK1dlYkFwcGxpY2F0aW9uQ2FjaGVIb3N0KiBXZWJEYXRhU291cmNlSW1w
bDo6YXBwbGljYXRpb25DYWNoZUhvc3QoKSB7CisjaWYgRU5BQkxFKE9GRkxJTkVfV0VCX0FQUExJ
Q0FUSU9OUykKKyAgICByZXR1cm4gQXBwbGljYXRpb25DYWNoZUhvc3RJbnRlcm5hbDo6dG9XZWJB
cHBsaWNhdGlvbkNhY2hlSG9zdChEb2N1bWVudExvYWRlcjo6YXBwbGljYXRpb25DYWNoZUhvc3Qo
KSk7CisjZWxzZQorICAgIHJldHVybiAwOworI2VuZGlmCit9CisKIFdlYk5hdmlnYXRpb25UeXBl
IFdlYkRhdGFTb3VyY2VJbXBsOjp0b1dlYk5hdmlnYXRpb25UeXBlKE5hdmlnYXRpb25UeXBlIHR5
cGUpCiB7CiAgICAgc3dpdGNoICh0eXBlKSB7CkluZGV4OiBXZWJLaXQvY2hyb21pdW0vc3JjL1dl
YkRhdGFTb3VyY2VJbXBsLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJE
YXRhU291cmNlSW1wbC5oCShyZXZpc2lvbiA1MzUxOSkKKysrIFdlYktpdC9jaHJvbWl1bS9zcmMv
V2ViRGF0YVNvdXJjZUltcGwuaAkod29ya2luZyBjb3B5KQpAQCAtNDYsNyArNDYsNiBAQAogI2lu
Y2x1ZGUgPHd0Zi9QYXNzT3duUHRyLmg+CiAjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgogCi0KIG5h
bWVzcGFjZSBXZWJLaXQgewogCiBjbGFzcyBXZWJQbHVnaW5Mb2FkT2JzZXJ2ZXI7CkBAIC03Myw2
ICs3Miw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIGRvdWJsZSB0cmlnZ2VyaW5nRXZlbnRUaW1l
KCkgY29uc3Q7CiAgICAgdmlydHVhbCBFeHRyYURhdGEqIGV4dHJhRGF0YSgpIGNvbnN0OwogICAg
IHZpcnR1YWwgdm9pZCBzZXRFeHRyYURhdGEoRXh0cmFEYXRhKik7CisgICAgdmlydHVhbCBXZWJB
cHBsaWNhdGlvbkNhY2hlSG9zdCogYXBwbGljYXRpb25DYWNoZUhvc3QoKTsKIAogICAgIHN0YXRp
YyBXZWJOYXZpZ2F0aW9uVHlwZSB0b1dlYk5hdmlnYXRpb25UeXBlKFdlYkNvcmU6Ok5hdmlnYXRp
b25UeXBlIHR5cGUpOwogCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>