<?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>39171</bug_id>
          
          <creation_ts>2010-05-15 18:47:25 -0700</creation_ts>
          <short_desc>Reduce the size of CachedResource</short_desc>
          <delta_ts>2010-05-17 15:04:46 -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>Page Loading</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>All</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>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Simon Fraser (smfr)">simon.fraser</reporter>
          <assigned_to name="Simon Fraser (smfr)">simon.fraser</assigned_to>
          <cc>abarth</cc>
    
    <cc>eric</cc>
    
    <cc>ossy</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>226380</commentid>
    <comment_count>0</comment_count>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2010-05-15 18:47:25 -0700</bug_when>
    <thetext>The member variables of CachedResource could be rearranged for better padding.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>226411</commentid>
    <comment_count>1</comment_count>
      <attachid>56175</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2010-05-15 21:04:25 -0700</bug_when>
    <thetext>Created attachment 56175
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>226414</commentid>
    <comment_count>2</comment_count>
      <attachid>56175</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2010-05-15 21:36:43 -0700</bug_when>
    <thetext>Comment on attachment 56175
Patch

I&apos;ll do some bitfields to save more space.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>226417</commentid>
    <comment_count>3</comment_count>
      <attachid>56177</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2010-05-15 22:57:35 -0700</bug_when>
    <thetext>Created attachment 56177
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>226418</commentid>
    <comment_count>4</comment_count>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2010-05-15 22:58:15 -0700</bug_when>
    <thetext>This patch saves 32 bytes per CachedResource</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>226419</commentid>
    <comment_count>5</comment_count>
      <attachid>56177</attachid>
    <who name="Maciej Stachowiak">mjs</who>
    <bug_when>2010-05-15 23:01:54 -0700</bug_when>
    <thetext>Comment on attachment 56177
Patch

r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>226480</commentid>
    <comment_count>6</comment_count>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2010-05-16 08:43:21 -0700</bug_when>
    <thetext>http://trac.webkit.org/changeset/59576</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>226482</commentid>
    <comment_count>7</comment_count>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2010-05-16 09:05:01 -0700</bug_when>
    <thetext>&lt;rdar://problem/7990041&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>226484</commentid>
    <comment_count>8</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-05-16 09:14:01 -0700</bug_when>
    <thetext>http://trac.webkit.org/changeset/59576 might have broken Qt Linux ARMv5 Release</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>226499</commentid>
    <comment_count>9</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2010-05-16 10:40:03 -0700</bug_when>
    <thetext>Sorry, no.  Just the slave was lost.  I will fix sherriff bot to understand &quot;slave lost&quot; this week.  That or we&apos;ll remove the Qt builders since they cause sooooo much spam these days. :(</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>226502</commentid>
    <comment_count>10</comment_count>
      <attachid>56177</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2010-05-16 10:45:09 -0700</bug_when>
    <thetext>Comment on attachment 56177
Patch

Should we COMPILE_ASSERT that CachedResource is less than a certain size?  I&apos;m not sure how many of these objects we typically keep around in process.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>226506</commentid>
    <comment_count>11</comment_count>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2010-05-16 11:00:12 -0700</bug_when>
    <thetext>We may have 1500+ alive at any one time with lots of windows/tabs open.

Yeah, I wish we had a way to identify memory regressions. Maybe we could have some tools that scrape the dSYM info for each build, and track size changes?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>226919</commentid>
    <comment_count>12</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2010-05-17 15:04:46 -0700</bug_when>
    <thetext>(In reply to comment #11)
&gt; Yeah, I wish we had a way to identify memory regressions. Maybe we could have some tools that scrape the dSYM info for each build, and track size changes?

I think that that, or using COMPILE_ASSERTs on the various classes which we know we need to keep small are excellent ways to help prevent memory usage regressions.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>56175</attachid>
            <date>2010-05-15 21:04:25 -0700</date>
            <delta_ts>2010-05-15 21:36:42 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-39171-20100515210423.patch</filename>
            <type>text/plain</type>
            <size>4541</size>
            <attacher name="Simon Fraser (smfr)">simon.fraser</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
NDBiZmI1YmUxY2Q2NmFlMDY4NWU5OTZkZTM4NWMzYjYxYTRmNGQ1YS4uYTc3NmVlOWRjMTYxYzUy
MmNkYTBiOGVjODFhN2NiN2VkYmZmNDhiZCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cK
KysrIGIvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNyBAQAorMjAxMC0wNS0xNSAgU2lt
b24gRnJhc2VyICA8c2ltb24uZnJhc2VyQGFwcGxlLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBSZWR1Y2UgdGhlIHNpemUgb2YgQ2FjaGVkUmVz
b3VyY2UKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTM5
MTcxCisKKyAgICAgICAgUmVhcnJhbmdlIHRoZSBkYXRhIG1lbWJlcnMgb2YgQ2FjaGVkUmVzb3Vy
Y2UgdG8gc2F2ZSAxNiBieXRlcyBwZXIgaW5zdGFuY2UKKyAgICAgICAgaW4gNjQtYml0LiBBbHNv
IG1vZGVybml6ZWQgdGhlIGNvbnN0cnVjdG9yIGNvZGUuCisKKyAgICAgICAgKiBsb2FkZXIvQ2Fj
aGVkUmVzb3VyY2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkUmVzb3VyY2U6OkNhY2hl
ZFJlc291cmNlKToKKyAgICAgICAgKiBsb2FkZXIvQ2FjaGVkUmVzb3VyY2UuaDoKKwogMjAxMC0w
NS0xMyAgVGltb3RoeSBIYXRjaGVyICA8dGltb3RoeUBhcHBsZS5jb20+CiAKICAgICAgICAgRXhw
b3NlIFdlYkNvcmU6OnJlcG9ydEV4Y2VwdGlvbiBhbmQgV2ViQ29yZTo6dG9KU0RPTVdpbmRvdyBz
eW1ib2xzLgpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9sb2FkZXIvQ2FjaGVkUmVzb3VyY2UuY3BwIGIv
V2ViQ29yZS9sb2FkZXIvQ2FjaGVkUmVzb3VyY2UuY3BwCmluZGV4IDIwZmE0ZmI0ODlkNGIxNGUx
ODZhZjk0MDdhN2U4YTczNDk4ODAyMzQuLmMwN2NhZjVjNmZjOGQ3OWI1MzBkOWE1MWEyOGVjZmJk
NWZlZTA3MzcgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvbG9hZGVyL0NhY2hlZFJlc291cmNlLmNwcAor
KysgYi9XZWJDb3JlL2xvYWRlci9DYWNoZWRSZXNvdXJjZS5jcHAKQEAgLTUxLDQzICs1MSwzOCBA
QCBzdGF0aWMgUmVmQ291bnRlZExlYWtDb3VudGVyIGNhY2hlZFJlc291cmNlTGVha0NvdW50ZXIo
IkNhY2hlZFJlc291cmNlIik7CiAKIENhY2hlZFJlc291cmNlOjpDYWNoZWRSZXNvdXJjZShjb25z
dCBTdHJpbmcmIHVybCwgVHlwZSB0eXBlKQogICAgIDogbV91cmwodXJsKQorICAgICwgbV9yZXF1
ZXN0KDApCiAgICAgLCBtX3Jlc3BvbnNlVGltZXN0YW1wKGN1cnJlbnRUaW1lKCkpCiAgICAgLCBt
X2xhc3REZWNvZGVkQWNjZXNzVGltZSgwKQotICAgICwgbV9zZW5kUmVzb3VyY2VMb2FkQ2FsbGJh
Y2tzKHRydWUpCisgICAgLCBtX2VuY29kZWRTaXplKDApCisgICAgLCBtX2RlY29kZWRTaXplKDAp
CisgICAgLCBtX2FjY2Vzc0NvdW50KDApCisgICAgLCBtX2hhbmRsZUNvdW50KDApCiAgICAgLCBt
X3ByZWxvYWRDb3VudCgwKQogICAgICwgbV9wcmVsb2FkUmVzdWx0KFByZWxvYWROb3RSZWZlcmVu
Y2VkKQorICAgICwgbV9pbkxpdmVEZWNvZGVkUmVzb3VyY2VzTGlzdChmYWxzZSkKICAgICAsIG1f
cmVxdWVzdGVkRnJvbU5ldHdvcmtpbmdMYXllcihmYWxzZSkKKyAgICAsIG1fc2VuZFJlc291cmNl
TG9hZENhbGxiYWNrcyh0cnVlKQorICAgICwgbV90eXBlKHR5cGUpCisgICAgLCBtX3N0YXR1cyhQ
ZW5kaW5nKQorICAgICwgbV9lcnJvck9jY3VycmVkKGZhbHNlKQogICAgICwgbV9pbkNhY2hlKGZh
bHNlKQogICAgICwgbV9sb2FkaW5nKGZhbHNlKQorI2lmbmRlZiBOREVCVUcKKyAgICAsIG1fZGVs
ZXRlZChmYWxzZSkKKyAgICAsIG1fbHJ1SW5kZXgoMCkKKyNlbmRpZgorICAgICwgbV9uZXh0SW5B
bGxSZXNvdXJjZXNMaXN0KDApCisgICAgLCBtX3ByZXZJbkFsbFJlc291cmNlc0xpc3QoMCkKKyAg
ICAsIG1fbmV4dEluTGl2ZVJlc291cmNlc0xpc3QoMCkKKyAgICAsIG1fcHJldkluTGl2ZVJlc291
cmNlc0xpc3QoMCkKICAgICAsIG1fZG9jTG9hZGVyKDApCi0gICAgLCBtX2hhbmRsZUNvdW50KDAp
CiAgICAgLCBtX3Jlc291cmNlVG9SZXZhbGlkYXRlKDApCiAgICAgLCBtX3Byb3h5UmVzb3VyY2Uo
MCkKIHsKICNpZm5kZWYgTkRFQlVHCiAgICAgY2FjaGVkUmVzb3VyY2VMZWFrQ291bnRlci5pbmNy
ZW1lbnQoKTsKICNlbmRpZgotCi0gICAgbV90eXBlID0gdHlwZTsKLSAgICBtX3N0YXR1cyA9IFBl
bmRpbmc7Ci0gICAgbV9lbmNvZGVkU2l6ZSA9IDA7Ci0gICAgbV9kZWNvZGVkU2l6ZSA9IDA7Ci0g
ICAgbV9yZXF1ZXN0ID0gMDsKLQotICAgIG1fYWNjZXNzQ291bnQgPSAwOwotICAgIG1faW5MaXZl
RGVjb2RlZFJlc291cmNlc0xpc3QgPSBmYWxzZTsKLSAgICAKLSAgICBtX25leHRJbkFsbFJlc291
cmNlc0xpc3QgPSAwOwotICAgIG1fcHJldkluQWxsUmVzb3VyY2VzTGlzdCA9IDA7Ci0gICAgCi0g
ICAgbV9uZXh0SW5MaXZlUmVzb3VyY2VzTGlzdCA9IDA7Ci0gICAgbV9wcmV2SW5MaXZlUmVzb3Vy
Y2VzTGlzdCA9IDA7Ci0KLSNpZm5kZWYgTkRFQlVHCi0gICAgbV9kZWxldGVkID0gZmFsc2U7Ci0g
ICAgbV9scnVJbmRleCA9IDA7Ci0jZW5kaWYKLSAgICBtX2Vycm9yT2NjdXJyZWQgPSBmYWxzZTsK
IH0KIAogQ2FjaGVkUmVzb3VyY2U6On5DYWNoZWRSZXNvdXJjZSgpCmRpZmYgLS1naXQgYS9XZWJD
b3JlL2xvYWRlci9DYWNoZWRSZXNvdXJjZS5oIGIvV2ViQ29yZS9sb2FkZXIvQ2FjaGVkUmVzb3Vy
Y2UuaAppbmRleCA3NDUwMWVlMTRjOGQ0YzUxZjU5NTEwMDdkOGQ5NjJiODQ5YTc1YTU3Li5lMDVi
YzlhYmEzMjU5Njc4MDdhMzQxODg1MWMwOTcwZmRlNTg1MmQ0IDEwMDY0NAotLS0gYS9XZWJDb3Jl
L2xvYWRlci9DYWNoZWRSZXNvdXJjZS5oCisrKyBiL1dlYkNvcmUvbG9hZGVyL0NhY2hlZFJlc291
cmNlLmgKQEAgLTIxMiwxMSArMjEyLDYgQEAgcHJvdGVjdGVkOgogICAgIFJlZlB0cjxTaGFyZWRC
dWZmZXI+IG1fZGF0YTsKICAgICBPd25QdHI8UHVyZ2VhYmxlQnVmZmVyPiBtX3B1cmdlYWJsZURh
dGE7CiAKLSAgICBUeXBlIG1fdHlwZTsKLSAgICBTdGF0dXMgbV9zdGF0dXM7Ci0KLSAgICBib29s
IG1fZXJyb3JPY2N1cnJlZDsKLQogcHJpdmF0ZToKICAgICB2b2lkIGFkZENsaWVudFRvU2V0KENh
Y2hlZFJlc291cmNlQ2xpZW50Kik7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgCkBAIC0yMzAsMTkgKzIyNSwyNiBAQCBwcml2YXRlOgogICAgIGRvdWJsZSBmcmVzaG5l
c3NMaWZldGltZSgpIGNvbnN0OwogCiAgICAgUmVmUHRyPENhY2hlZE1ldGFkYXRhPiBtX2NhY2hl
ZE1ldGFkYXRhOworCisgICAgZG91YmxlIG1fbGFzdERlY29kZWRBY2Nlc3NUaW1lOyAvLyBVc2Vk
IGFzIGEgInRocmFzaCBndWFyZCIgaW4gdGhlIGNhY2hlCisKICAgICB1bnNpZ25lZCBtX2VuY29k
ZWRTaXplOwogICAgIHVuc2lnbmVkIG1fZGVjb2RlZFNpemU7CiAgICAgdW5zaWduZWQgbV9hY2Nl
c3NDb3VudDsKLSAgICB1bnNpZ25lZCBtX2luTGl2ZURlY29kZWRSZXNvdXJjZXNMaXN0OwotICAg
IGRvdWJsZSBtX2xhc3REZWNvZGVkQWNjZXNzVGltZTsgLy8gVXNlZCBhcyBhICJ0aHJhc2ggZ3Vh
cmQiIGluIHRoZSBjYWNoZQotICAgIAotICAgIGJvb2wgbV9zZW5kUmVzb3VyY2VMb2FkQ2FsbGJh
Y2tzOwotICAgIAorICAgIHVuc2lnbmVkIG1faGFuZGxlQ291bnQ7CiAgICAgdW5zaWduZWQgbV9w
cmVsb2FkQ291bnQ7CisKICAgICBQcmVsb2FkUmVzdWx0IG1fcHJlbG9hZFJlc3VsdDsKKyAgICBi
b29sIG1faW5MaXZlRGVjb2RlZFJlc291cmNlc0xpc3Q7CiAgICAgYm9vbCBtX3JlcXVlc3RlZEZy
b21OZXR3b3JraW5nTGF5ZXI7CisgICAgYm9vbCBtX3NlbmRSZXNvdXJjZUxvYWRDYWxsYmFja3M7
CiAKIHByb3RlY3RlZDoKKworICAgIFR5cGUgbV90eXBlOworICAgIFN0YXR1cyBtX3N0YXR1czsK
KworICAgIGJvb2wgbV9lcnJvck9jY3VycmVkOwogICAgIGJvb2wgbV9pbkNhY2hlOwogICAgIGJv
b2wgbV9sb2FkaW5nOwogI2lmbmRlZiBOREVCVUcKQEAgLTI1OSw3ICsyNjEsNiBAQCBwcml2YXRl
OgogCiAgICAgRG9jTG9hZGVyKiBtX2RvY0xvYWRlcjsgLy8gb25seSBub24tMCBmb3IgcmVzb3Vy
Y2VzIHRoYXQgYXJlIG5vdCBpbiB0aGUgY2FjaGUKICAgICAKLSAgICB1bnNpZ25lZCBtX2hhbmRs
ZUNvdW50OwogICAgIC8vIElmIHRoaXMgZmllbGQgaXMgbm9uLW51bGwgd2UgYXJlIHVzaW5nIHRo
ZSByZXNvdXJjZSBhcyBhIHByb3h5IGZvciBjaGVja2luZyB3aGV0aGVyIGFuIGV4aXN0aW5nIHJl
c291cmNlIGlzIHN0aWxsIHVwIHRvIGRhdGUKICAgICAvLyB1c2luZyBIVFRQIElmLU1vZGlmaWVk
LVNpbmNlL0lmLU5vbmUtTWF0Y2ggaGVhZGVycy4gSWYgdGhlIHJlc3BvbnNlIGlzIDMwNCBhbGwg
Y2xpZW50cyBvZiB0aGlzIHJlc291cmNlIGFyZSBtb3ZlZAogICAgIC8vIHRvIHRvIGJlIGNsaWVu
dHMgb2YgbV9yZXNvdXJjZVRvUmV2YWxpZGF0ZSBhbmQgdGhlIHJlc291cmNlIGlzIGRlbGV0ZWQu
IElmIG5vdCwgdGhlIGZpZWxkIGlzIHplcm9lZCBhbmQgdGhpcwo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>56177</attachid>
            <date>2010-05-15 22:57:35 -0700</date>
            <delta_ts>2010-05-16 10:45:09 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-39171-20100515225733.patch</filename>
            <type>text/plain</type>
            <size>19088</size>
            <attacher name="Simon Fraser (smfr)">simon.fraser</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
NDBiZmI1YmUxY2Q2NmFlMDY4NWU5OTZkZTM4NWMzYjYxYTRmNGQ1YS4uYzVjMTc2N2QxNzdjOTMz
Y2MzOWJjMWZlYWFlZGUwYWY3ZTYyNzU1NiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cK
KysrIGIvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSw2MiBAQAorMjAxMC0wNS0xNSAgU2lt
b24gRnJhc2VyICA8c2ltb24uZnJhc2VyQGFwcGxlLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBSZWR1Y2UgdGhlIHNpemUgb2YgQ2FjaGVkUmVz
b3VyY2UKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTM5
MTcxCisKKyAgICAgICAgTWFrZSBwcm90ZWN0ZWQgZGF0YSBtZW1iZXJzIG9mIENhY2hlZFJlc291
cmNlIHByaXZhdGUsIHRvIGFsbG93IGZvcgorICAgICAgICBlYXNpZXIgcmVhcnJhbmdlbWVudCwg
YW5kIGhpZGUgdGhlIGZhY3QgdGhhdCBlbnVtcyBhcmUgaW4gYml0ZmllbGRzLgorICAgICAgICAK
KyAgICAgICAgUmVhcnJhbmdlIHRoZSBkYXRhIG1lbWJlcnMgb2YgQ2FjaGVkUmVzb3VyY2UgdG8g
c2F2ZSAzMiBieXRlcyBwZXIgaW5zdGFuY2UKKyAgICAgICAgaW4gNjQtYml0LiBBbHNvIG1vZGVy
bml6ZWQgdGhlIGNvbnN0cnVjdG9yIGNvZGUuCisKKyAgICAgICAgKiBsb2FkZXIvQ2FjaGVkQ1NT
U3R5bGVTaGVldC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRDU1NTdHlsZVNoZWV0Ojpk
aWRBZGRDbGllbnQpOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkQ1NTU3R5bGVTaGVldDo6ZGF0
YSk6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRDU1NTdHlsZVNoZWV0OjpjaGVja05vdGlmeSk6
CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRDU1NTdHlsZVNoZWV0OjplcnJvcik6CisgICAgICAg
ICogbG9hZGVyL0NhY2hlZEZvbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkRm9udDo6
bG9hZCk6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRGb250OjpkaWRBZGRDbGllbnQpOgorICAg
ICAgICAoV2ViQ29yZTo6Q2FjaGVkRm9udDo6ZGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpDYWNo
ZWRGb250OjplbnN1cmVDdXN0b21Gb250RGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRG
b250OjplbnN1cmVTVkdGb250RGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRGb250Ojpj
aGVja05vdGlmeSk6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRGb250OjplcnJvcik6CisgICAg
ICAgICogbG9hZGVyL0NhY2hlZEltYWdlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZElt
YWdlOjpDYWNoZWRJbWFnZSk6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRJbWFnZTo6bG9hZCk6
CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRJbWFnZTo6ZGlkQWRkQ2xpZW50KToKKyAgICAgICAg
KFdlYkNvcmU6OkNhY2hlZEltYWdlOjphbGxDbGllbnRzUmVtb3ZlZCk6CisgICAgICAgIChXZWJD
b3JlOjpDYWNoZWRJbWFnZTo6aW1hZ2UpOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkSW1hZ2U6
OmRhdGEpOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkSW1hZ2U6OmVycm9yKToKKyAgICAgICAg
KFdlYkNvcmU6OkNhY2hlZEltYWdlOjpjaGVja05vdGlmeSk6CisgICAgICAgIChXZWJDb3JlOjpD
YWNoZWRJbWFnZTo6ZGVzdHJveURlY29kZWREYXRhKToKKyAgICAgICAgKiBsb2FkZXIvQ2FjaGVk
SW1hZ2UuaDoKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZEltYWdlOjpzdGlsbE5lZWRzTG9hZCk6
CisgICAgICAgICogbG9hZGVyL0NhY2hlZFJlc291cmNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkNhY2hlZFJlc291cmNlOjpDYWNoZWRSZXNvdXJjZSk6CisgICAgICAgICogbG9hZGVyL0NhY2hl
ZFJlc291cmNlLmg6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRSZXNvdXJjZTo6dHlwZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpDYWNoZWRSZXNvdXJjZTo6cHJlbG9hZFJlc3VsdCk6CisgICAgICAg
IChXZWJDb3JlOjpDYWNoZWRSZXNvdXJjZTo6c3RhdHVzKToKKyAgICAgICAgKFdlYkNvcmU6OkNh
Y2hlZFJlc291cmNlOjpzZXRTdGF0dXMpOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkUmVzb3Vy
Y2U6OmlzTG9hZGVkKToKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZFJlc291cmNlOjppc0xvYWRp
bmcpOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkUmVzb3VyY2U6OnNldEVycm9yT2NjdXJyZWQp
OgorICAgICAgICAqIGxvYWRlci9DYWNoZWRTY3JpcHQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
Q2FjaGVkU2NyaXB0OjpkaWRBZGRDbGllbnQpOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkU2Ny
aXB0OjpkYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZFNjcmlwdDo6Y2hlY2tOb3RpZnkp
OgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkU2NyaXB0OjplcnJvcik6CisgICAgICAgICogbG9h
ZGVyL0NhY2hlZFhTTFN0eWxlU2hlZXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkWFNM
U3R5bGVTaGVldDo6ZGlkQWRkQ2xpZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZFhTTFN0
eWxlU2hlZXQ6OmRhdGEpOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkWFNMU3R5bGVTaGVldDo6
Y2hlY2tOb3RpZnkpOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkWFNMU3R5bGVTaGVldDo6ZXJy
b3IpOgorCiAyMDEwLTA1LTEzICBUaW1vdGh5IEhhdGNoZXIgIDx0aW1vdGh5QGFwcGxlLmNvbT4K
IAogICAgICAgICBFeHBvc2UgV2ViQ29yZTo6cmVwb3J0RXhjZXB0aW9uIGFuZCBXZWJDb3JlOjp0
b0pTRE9NV2luZG93IHN5bWJvbHMuCmRpZmYgLS1naXQgYS9XZWJDb3JlL2xvYWRlci9DYWNoZWRD
U1NTdHlsZVNoZWV0LmNwcCBiL1dlYkNvcmUvbG9hZGVyL0NhY2hlZENTU1N0eWxlU2hlZXQuY3Bw
CmluZGV4IDNhZGY4MmFkOWI4Njg3NjhmYTUzZDNjYmJiMTc0Mjg5NTQwNzhmZjIuLjc4NjZlZmRl
OTA3OTZkZDQ0MjJhM2RlNDk2Y2FmOGM2OGQ2ZmM0OTQgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvbG9h
ZGVyL0NhY2hlZENTU1N0eWxlU2hlZXQuY3BwCisrKyBiL1dlYkNvcmUvbG9hZGVyL0NhY2hlZENT
U1N0eWxlU2hlZXQuY3BwCkBAIC01Miw3ICs1Miw3IEBAIENhY2hlZENTU1N0eWxlU2hlZXQ6On5D
YWNoZWRDU1NTdHlsZVNoZWV0KCkKIAogdm9pZCBDYWNoZWRDU1NTdHlsZVNoZWV0OjpkaWRBZGRD
bGllbnQoQ2FjaGVkUmVzb3VyY2VDbGllbnQgKmMpCiB7Ci0gICAgaWYgKCFtX2xvYWRpbmcpCisg
ICAgaWYgKCFpc0xvYWRpbmcoKSkKICAgICAgICAgYy0+c2V0Q1NTU3R5bGVTaGVldChtX3VybCwg
bV9yZXNwb25zZS51cmwoKSwgbV9kZWNvZGVyLT5lbmNvZGluZygpLm5hbWUoKSwgdGhpcyk7CiB9
CiAKQEAgLTEwMCw3ICsxMDAsNyBAQCB2b2lkIENhY2hlZENTU1N0eWxlU2hlZXQ6OmRhdGEoUGFz
c1JlZlB0cjxTaGFyZWRCdWZmZXI+IGRhdGEsIGJvb2wgYWxsRGF0YVJlY2VpdgogICAgICAgICBt
X2RlY29kZWRTaGVldFRleHQgPSBtX2RlY29kZXItPmRlY29kZShtX2RhdGEtPmRhdGEoKSwgbV9k
YXRhLT5zaXplKCkpOwogICAgICAgICBtX2RlY29kZWRTaGVldFRleHQgKz0gbV9kZWNvZGVyLT5m
bHVzaCgpOwogICAgIH0KLSAgICBtX2xvYWRpbmcgPSBmYWxzZTsKKyAgICBzZXRMb2FkaW5nKGZh
bHNlKTsKICAgICBjaGVja05vdGlmeSgpOwogICAgIC8vIENsZWFyIHRoZSBkZWNvZGVkIHRleHQg
YXMgaXQgaXMgdW5saWtlbHkgdG8gYmUgbmVlZGVkIGltbWVkaWF0ZWx5IGFnYWluIGFuZCBpcyBj
aGVhcCB0byByZWdlbmVyYXRlLgogICAgIG1fZGVjb2RlZFNoZWV0VGV4dCA9IFN0cmluZygpOwpA
QCAtMTA4LDcgKzEwOCw3IEBAIHZvaWQgQ2FjaGVkQ1NTU3R5bGVTaGVldDo6ZGF0YShQYXNzUmVm
UHRyPFNoYXJlZEJ1ZmZlcj4gZGF0YSwgYm9vbCBhbGxEYXRhUmVjZWl2CiAKIHZvaWQgQ2FjaGVk
Q1NTU3R5bGVTaGVldDo6Y2hlY2tOb3RpZnkoKQogewotICAgIGlmIChtX2xvYWRpbmcpCisgICAg
aWYgKGlzTG9hZGluZygpKQogICAgICAgICByZXR1cm47CiAKICAgICBDYWNoZWRSZXNvdXJjZUNs
aWVudFdhbGtlciB3KG1fY2xpZW50cyk7CkBAIC0xMTgsOCArMTE4LDggQEAgdm9pZCBDYWNoZWRD
U1NTdHlsZVNoZWV0OjpjaGVja05vdGlmeSgpCiAKIHZvaWQgQ2FjaGVkQ1NTU3R5bGVTaGVldDo6
ZXJyb3IoKQogewotICAgIG1fbG9hZGluZyA9IGZhbHNlOwotICAgIG1fZXJyb3JPY2N1cnJlZCA9
IHRydWU7CisgICAgc2V0TG9hZGluZyhmYWxzZSk7CisgICAgc2V0RXJyb3JPY2N1cnJlZCh0cnVl
KTsKICAgICBjaGVja05vdGlmeSgpOwogfQogCmRpZmYgLS1naXQgYS9XZWJDb3JlL2xvYWRlci9D
YWNoZWRGb250LmNwcCBiL1dlYkNvcmUvbG9hZGVyL0NhY2hlZEZvbnQuY3BwCmluZGV4IGQ4OTNk
MzBjOWIwYzc0MGFiY2MxZmY5ZDkwY2ZjMjlmMDVmZjJjZGEuLmU2YTllNjgwZDZkM2UyMGZlOTE0
OTU0MDVmMjgyM2Y0MzYzYTUyNjUgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvbG9hZGVyL0NhY2hlZEZv
bnQuY3BwCisrKyBiL1dlYkNvcmUvbG9hZGVyL0NhY2hlZEZvbnQuY3BwCkBAIC03NCwxMiArNzQs
MTIgQEAgQ2FjaGVkRm9udDo6fkNhY2hlZEZvbnQoKQogdm9pZCBDYWNoZWRGb250Ojpsb2FkKERv
Y0xvYWRlciopCiB7CiAgICAgLy8gRG9uJ3QgbG9hZCB0aGUgZmlsZSB5ZXQuICBXYWl0IGZvciBh
biBhY2Nlc3MgYmVmb3JlIHRyaWdnZXJpbmcgdGhlIGxvYWQuCi0gICAgbV9sb2FkaW5nID0gdHJ1
ZTsKKyAgICBzZXRMb2FkaW5nKHRydWUpOwogfQogCiB2b2lkIENhY2hlZEZvbnQ6OmRpZEFkZENs
aWVudChDYWNoZWRSZXNvdXJjZUNsaWVudCogYykKIHsKLSAgICBpZiAoIW1fbG9hZGluZykKKyAg
ICBpZiAoIWlzTG9hZGluZygpKQogICAgICAgICBjLT5mb250TG9hZGVkKHRoaXMpOwogfQogCkBA
IC05MCw3ICs5MCw3IEBAIHZvaWQgQ2FjaGVkRm9udDo6ZGF0YShQYXNzUmVmUHRyPFNoYXJlZEJ1
ZmZlcj4gZGF0YSwgYm9vbCBhbGxEYXRhUmVjZWl2ZWQpCiAKICAgICBtX2RhdGEgPSBkYXRhOyAg
ICAgCiAgICAgc2V0RW5jb2RlZFNpemUobV9kYXRhLmdldCgpID8gbV9kYXRhLT5zaXplKCkgOiAw
KTsKLSAgICBtX2xvYWRpbmcgPSBmYWxzZTsKKyAgICBzZXRMb2FkaW5nKGZhbHNlKTsKICAgICBj
aGVja05vdGlmeSgpOwogfQogCkBAIC0xMDgsMTAgKzEwOCwxMCBAQCBib29sIENhY2hlZEZvbnQ6
OmVuc3VyZUN1c3RvbUZvbnREYXRhKCkKICNpZiBFTkFCTEUoU1ZHX0ZPTlRTKQogICAgIEFTU0VS
VCghbV9pc1NWR0ZvbnQpOwogI2VuZGlmCi0gICAgaWYgKCFtX2ZvbnREYXRhICYmICFtX2Vycm9y
T2NjdXJyZWQgJiYgIW1fbG9hZGluZyAmJiBtX2RhdGEpIHsKKyAgICBpZiAoIW1fZm9udERhdGEg
JiYgIWVycm9yT2NjdXJyZWQoKSAmJiAhaXNMb2FkaW5nKCkgJiYgbV9kYXRhKSB7CiAgICAgICAg
IG1fZm9udERhdGEgPSBjcmVhdGVGb250Q3VzdG9tUGxhdGZvcm1EYXRhKG1fZGF0YS5nZXQoKSk7
CiAgICAgICAgIGlmICghbV9mb250RGF0YSkKLSAgICAgICAgICAgIG1fZXJyb3JPY2N1cnJlZCA9
IHRydWU7CisgICAgICAgICAgICBzZXRFcnJvck9jY3VycmVkKHRydWUpOwogICAgIH0KICNlbmRp
ZgogICAgIHJldHVybiBtX2ZvbnREYXRhOwpAQCAtMTM1LDcgKzEzNSw3IEBAIEZvbnRQbGF0Zm9y
bURhdGEgQ2FjaGVkRm9udDo6cGxhdGZvcm1EYXRhRnJvbUN1c3RvbURhdGEoZmxvYXQgc2l6ZSwg
Ym9vbCBib2xkLCBiCiBib29sIENhY2hlZEZvbnQ6OmVuc3VyZVNWR0ZvbnREYXRhKCkKIHsKICAg
ICBBU1NFUlQobV9pc1NWR0ZvbnQpOwotICAgIGlmICghbV9leHRlcm5hbFNWR0RvY3VtZW50ICYm
ICFtX2Vycm9yT2NjdXJyZWQgJiYgIW1fbG9hZGluZyAmJiBtX2RhdGEpIHsKKyAgICBpZiAoIW1f
ZXh0ZXJuYWxTVkdEb2N1bWVudCAmJiAhZXJyb3JPY2N1cnJlZCgpICYmICFpc0xvYWRpbmcoKSAm
JiBtX2RhdGEpIHsKICAgICAgICAgbV9leHRlcm5hbFNWR0RvY3VtZW50ID0gU1ZHRG9jdW1lbnQ6
OmNyZWF0ZSgwKTsKICAgICAgICAgbV9leHRlcm5hbFNWR0RvY3VtZW50LT5vcGVuKCk7CiAKQEAg
LTE5OSw3ICsxOTksNyBAQCB2b2lkIENhY2hlZEZvbnQ6OmFsbENsaWVudHNSZW1vdmVkKCkKIAog
dm9pZCBDYWNoZWRGb250OjpjaGVja05vdGlmeSgpCiB7Ci0gICAgaWYgKG1fbG9hZGluZykKKyAg
ICBpZiAoaXNMb2FkaW5nKCkpCiAgICAgICAgIHJldHVybjsKICAgICAKICAgICBDYWNoZWRSZXNv
dXJjZUNsaWVudFdhbGtlciB3KG1fY2xpZW50cyk7CkBAIC0yMTAsOCArMjEwLDggQEAgdm9pZCBD
YWNoZWRGb250OjpjaGVja05vdGlmeSgpCiAKIHZvaWQgQ2FjaGVkRm9udDo6ZXJyb3IoKQogewot
ICAgIG1fbG9hZGluZyA9IGZhbHNlOwotICAgIG1fZXJyb3JPY2N1cnJlZCA9IHRydWU7CisgICAg
c2V0TG9hZGluZyhmYWxzZSk7CisgICAgc2V0RXJyb3JPY2N1cnJlZCh0cnVlKTsKICAgICBjaGVj
a05vdGlmeSgpOwogfQogCmRpZmYgLS1naXQgYS9XZWJDb3JlL2xvYWRlci9DYWNoZWRJbWFnZS5j
cHAgYi9XZWJDb3JlL2xvYWRlci9DYWNoZWRJbWFnZS5jcHAKaW5kZXggZTFlNWIxZTNmYjQxMDJj
YjBiYjMwODFhNjg2ODE3MTYyMTJiZmUzZi4uOWFlOGQyMDBiOWY1ODlhNTNiODQ0ZWQ5ZjIzM2Ew
NDc4MDdhZjY0YSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9sb2FkZXIvQ2FjaGVkSW1hZ2UuY3BwCisr
KyBiL1dlYkNvcmUvbG9hZGVyL0NhY2hlZEltYWdlLmNwcApAQCAtNTcsNyArNTcsNyBAQCBDYWNo
ZWRJbWFnZTo6Q2FjaGVkSW1hZ2UoY29uc3QgU3RyaW5nJiB1cmwpCiAgICAgLCBtX2RlY29kZWRE
YXRhRGVsZXRpb25UaW1lcih0aGlzLCAmQ2FjaGVkSW1hZ2U6OmRlY29kZWREYXRhRGVsZXRpb25U
aW1lckZpcmVkKQogICAgICwgbV9odHRwU3RhdHVzQ29kZUVycm9yT2NjdXJyZWQoZmFsc2UpCiB7
Ci0gICAgbV9zdGF0dXMgPSBVbmtub3duOworICAgIHNldFN0YXR1cyhVbmtub3duKTsKIH0KIAog
Q2FjaGVkSW1hZ2U6OkNhY2hlZEltYWdlKEltYWdlKiBpbWFnZSkKQEAgLTY2LDggKzY2LDggQEAg
Q2FjaGVkSW1hZ2U6OkNhY2hlZEltYWdlKEltYWdlKiBpbWFnZSkKICAgICAsIG1fZGVjb2RlZERh
dGFEZWxldGlvblRpbWVyKHRoaXMsICZDYWNoZWRJbWFnZTo6ZGVjb2RlZERhdGFEZWxldGlvblRp
bWVyRmlyZWQpCiAgICAgLCBtX2h0dHBTdGF0dXNDb2RlRXJyb3JPY2N1cnJlZChmYWxzZSkKIHsK
LSAgICBtX3N0YXR1cyA9IENhY2hlZDsKLSAgICBtX2xvYWRpbmcgPSBmYWxzZTsKKyAgICBzZXRT
dGF0dXMoQ2FjaGVkKTsKKyAgICBzZXRMb2FkaW5nKGZhbHNlKTsKIH0KIAogQ2FjaGVkSW1hZ2U6
On5DYWNoZWRJbWFnZSgpCkBAIC04NSw3ICs4NSw3IEBAIHZvaWQgQ2FjaGVkSW1hZ2U6OmxvYWQo
RG9jTG9hZGVyKiBkb2NMb2FkZXIpCiAgICAgaWYgKCFkb2NMb2FkZXIgfHwgZG9jTG9hZGVyLT5h
dXRvTG9hZEltYWdlcygpKQogICAgICAgICBDYWNoZWRSZXNvdXJjZTo6bG9hZChkb2NMb2FkZXIs
IHRydWUsIERvU2VjdXJpdHlDaGVjaywgdHJ1ZSk7CiAgICAgZWxzZQotICAgICAgICBtX2xvYWRp
bmcgPSBmYWxzZTsKKyAgICAgICAgc2V0TG9hZGluZyhmYWxzZSk7CiB9CiAKIHZvaWQgQ2FjaGVk
SW1hZ2U6OmRpZEFkZENsaWVudChDYWNoZWRSZXNvdXJjZUNsaWVudCogYykKQEAgLTkzLDcgKzkz
LDcgQEAgdm9pZCBDYWNoZWRJbWFnZTo6ZGlkQWRkQ2xpZW50KENhY2hlZFJlc291cmNlQ2xpZW50
KiBjKQogICAgIGlmIChtX2RlY29kZWREYXRhRGVsZXRpb25UaW1lci5pc0FjdGl2ZSgpKQogICAg
ICAgICBtX2RlY29kZWREYXRhRGVsZXRpb25UaW1lci5zdG9wKCk7CiAgICAgCi0gICAgaWYgKG1f
ZGF0YSAmJiAhbV9pbWFnZSAmJiAhbV9lcnJvck9jY3VycmVkKSB7CisgICAgaWYgKG1fZGF0YSAm
JiAhbV9pbWFnZSAmJiAhZXJyb3JPY2N1cnJlZCgpKSB7CiAgICAgICAgIGNyZWF0ZUltYWdlKCk7
CiAgICAgICAgIG1faW1hZ2UtPnNldERhdGEobV9kYXRhLCB0cnVlKTsKICAgICB9CkBAIC0xMDEs
MTMgKzEwMSwxMyBAQCB2b2lkIENhY2hlZEltYWdlOjpkaWRBZGRDbGllbnQoQ2FjaGVkUmVzb3Vy
Y2VDbGllbnQqIGMpCiAgICAgaWYgKG1faW1hZ2UgJiYgIW1faW1hZ2UtPmlzTnVsbCgpKQogICAg
ICAgICBjLT5pbWFnZUNoYW5nZWQodGhpcyk7CiAKLSAgICBpZiAoIW1fbG9hZGluZykKKyAgICBp
ZiAoIWlzTG9hZGluZygpKQogICAgICAgICBjLT5ub3RpZnlGaW5pc2hlZCh0aGlzKTsKIH0KIAog
dm9pZCBDYWNoZWRJbWFnZTo6YWxsQ2xpZW50c1JlbW92ZWQoKQogewotICAgIGlmIChtX2ltYWdl
ICYmICFtX2Vycm9yT2NjdXJyZWQpCisgICAgaWYgKG1faW1hZ2UgJiYgIWVycm9yT2NjdXJyZWQo
KSkKICAgICAgICAgbV9pbWFnZS0+cmVzZXRBbmltYXRpb24oKTsKICAgICBpZiAoZG91YmxlIGlu
dGVydmFsID0gY2FjaGUoKS0+ZGVhZERlY29kZWREYXRhRGVsZXRpb25JbnRlcnZhbCgpKQogICAg
ICAgICBtX2RlY29kZWREYXRhRGVsZXRpb25UaW1lci5zdGFydE9uZVNob3QoaW50ZXJ2YWwpOwpA
QCAtMTI5LDcgKzEyOSw3IEBAIEltYWdlKiBDYWNoZWRJbWFnZTo6aW1hZ2UoKSBjb25zdAogewog
ICAgIEFTU0VSVCghaXNQdXJnZWFibGUoKSk7CiAKLSAgICBpZiAobV9lcnJvck9jY3VycmVkKQor
ICAgIGlmIChlcnJvck9jY3VycmVkKCkpCiAgICAgICAgIHJldHVybiBicm9rZW5JbWFnZSgpOwog
CiAgICAgaWYgKG1faW1hZ2UpCkBAIC0yOTgsNyArMjk4LDcgQEAgdm9pZCBDYWNoZWRJbWFnZTo6
ZGF0YShQYXNzUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gZGF0YSwgYm9vbCBhbGxEYXRhUmVjZWl2ZWQp
CiAgICAgfQogICAgIAogICAgIGlmIChhbGxEYXRhUmVjZWl2ZWQpIHsKLSAgICAgICAgbV9sb2Fk
aW5nID0gZmFsc2U7CisgICAgICAgIHNldExvYWRpbmcoZmFsc2UpOwogICAgICAgICBjaGVja05v
dGlmeSgpOwogICAgIH0KIH0KQEAgLTMwNiwxNiArMzA2LDE2IEBAIHZvaWQgQ2FjaGVkSW1hZ2U6
OmRhdGEoUGFzc1JlZlB0cjxTaGFyZWRCdWZmZXI+IGRhdGEsIGJvb2wgYWxsRGF0YVJlY2VpdmVk
KQogdm9pZCBDYWNoZWRJbWFnZTo6ZXJyb3IoKQogewogICAgIGNsZWFyKCk7Ci0gICAgbV9lcnJv
ck9jY3VycmVkID0gdHJ1ZTsKKyAgICBzZXRFcnJvck9jY3VycmVkKHRydWUpOwogICAgIG1fZGF0
YS5jbGVhcigpOwogICAgIG5vdGlmeU9ic2VydmVycygpOwotICAgIG1fbG9hZGluZyA9IGZhbHNl
OworICAgIHNldExvYWRpbmcoZmFsc2UpOwogICAgIGNoZWNrTm90aWZ5KCk7CiB9CiAKIHZvaWQg
Q2FjaGVkSW1hZ2U6OmNoZWNrTm90aWZ5KCkKIHsKLSAgICBpZiAobV9sb2FkaW5nKQorICAgIGlm
IChpc0xvYWRpbmcoKSkKICAgICAgICAgcmV0dXJuOwogCiAgICAgQ2FjaGVkUmVzb3VyY2VDbGll
bnRXYWxrZXIgdyhtX2NsaWVudHMpOwpAQCAtMzI2LDEzICszMjYsMTMgQEAgdm9pZCBDYWNoZWRJ
bWFnZTo6Y2hlY2tOb3RpZnkoKQogdm9pZCBDYWNoZWRJbWFnZTo6ZGVzdHJveURlY29kZWREYXRh
KCkKIHsKICAgICBib29sIGNhbkRlbGV0ZUltYWdlID0gIW1faW1hZ2UgfHwgKG1faW1hZ2UtPmhh
c09uZVJlZigpICYmIG1faW1hZ2UtPmlzQml0bWFwSW1hZ2UoKSk7Ci0gICAgaWYgKGlzU2FmZVRv
TWFrZVB1cmdlYWJsZSgpICYmIGNhbkRlbGV0ZUltYWdlICYmICFtX2xvYWRpbmcpIHsKKyAgICBp
ZiAoaXNTYWZlVG9NYWtlUHVyZ2VhYmxlKCkgJiYgY2FuRGVsZXRlSW1hZ2UgJiYgIWlzTG9hZGlu
ZygpKSB7CiAgICAgICAgIC8vIEltYWdlIHJlZnMgdGhlIGRhdGEgYnVmZmVyIHNvIHdlIHNob3Vs
ZCBub3QgbWFrZSBpdCBwdXJnZWFibGUgd2hpbGUgdGhlIGltYWdlIGlzIGFsaXZlLiAKICAgICAg
ICAgLy8gSW52b2tpbmcgYWRkQ2xpZW50KCkgd2lsbCByZWNvbnN0cnVjdCB0aGUgaW1hZ2Ugb2Jq
ZWN0LgogICAgICAgICBtX2ltYWdlID0gMDsKICAgICAgICAgc2V0RGVjb2RlZFNpemUoMCk7CiAg
ICAgICAgIG1ha2VQdXJnZWFibGUodHJ1ZSk7Ci0gICAgfSBlbHNlIGlmIChtX2ltYWdlICYmICFt
X2Vycm9yT2NjdXJyZWQpCisgICAgfSBlbHNlIGlmIChtX2ltYWdlICYmICFlcnJvck9jY3VycmVk
KCkpCiAgICAgICAgIG1faW1hZ2UtPmRlc3Ryb3lEZWNvZGVkRGF0YSgpOwogfQogCmRpZmYgLS1n
aXQgYS9XZWJDb3JlL2xvYWRlci9DYWNoZWRJbWFnZS5oIGIvV2ViQ29yZS9sb2FkZXIvQ2FjaGVk
SW1hZ2UuaAppbmRleCBjZGEwM2EyZjIxZDM4NzI2ODJhNzFlYTgyZDViZTZhZWFkMTNiMzY0Li5i
NGEwMzJhYTQ1MGIzNGI5NzM4MGM1MWExODE1YTNlMWE4MjcxMWQ0IDEwMDY0NAotLS0gYS9XZWJD
b3JlL2xvYWRlci9DYWNoZWRJbWFnZS5oCisrKyBiL1dlYkNvcmUvbG9hZGVyL0NhY2hlZEltYWdl
LmgKQEAgLTc4LDcgKzc4LDcgQEAgcHVibGljOgogCiAgICAgdm9pZCBjbGVhcigpOwogICAgIAot
ICAgIGJvb2wgc3RpbGxOZWVkc0xvYWQoKSBjb25zdCB7IHJldHVybiAhbV9lcnJvck9jY3VycmVk
ICYmIG1fc3RhdHVzID09IFVua25vd24gJiYgbV9sb2FkaW5nID09IGZhbHNlOyB9CisgICAgYm9v
bCBzdGlsbE5lZWRzTG9hZCgpIGNvbnN0IHsgcmV0dXJuICFlcnJvck9jY3VycmVkKCkgJiYgc3Rh
dHVzKCkgPT0gVW5rbm93biAmJiAhaXNMb2FkaW5nKCk7IH0KICAgICB2b2lkIGxvYWQoKTsKIAog
ICAgIC8vIEltYWdlT2JzZXJ2ZXIKZGlmZiAtLWdpdCBhL1dlYkNvcmUvbG9hZGVyL0NhY2hlZFJl
c291cmNlLmNwcCBiL1dlYkNvcmUvbG9hZGVyL0NhY2hlZFJlc291cmNlLmNwcAppbmRleCAyMGZh
NGZiNDg5ZDRiMTRlMTg2YWY5NDA3YTdlOGE3MzQ5ODgwMjM0Li42N2I1YzllNDkyMzRlMWJjZDMz
YmI1ODZmMTcxNzdiZDczY2RhZDdhIDEwMDY0NAotLS0gYS9XZWJDb3JlL2xvYWRlci9DYWNoZWRS
ZXNvdXJjZS5jcHAKKysrIGIvV2ViQ29yZS9sb2FkZXIvQ2FjaGVkUmVzb3VyY2UuY3BwCkBAIC01
MSw0MyArNTEsMzggQEAgc3RhdGljIFJlZkNvdW50ZWRMZWFrQ291bnRlciBjYWNoZWRSZXNvdXJj
ZUxlYWtDb3VudGVyKCJDYWNoZWRSZXNvdXJjZSIpOwogCiBDYWNoZWRSZXNvdXJjZTo6Q2FjaGVk
UmVzb3VyY2UoY29uc3QgU3RyaW5nJiB1cmwsIFR5cGUgdHlwZSkKICAgICA6IG1fdXJsKHVybCkK
KyAgICAsIG1fcmVxdWVzdCgwKQogICAgICwgbV9yZXNwb25zZVRpbWVzdGFtcChjdXJyZW50VGlt
ZSgpKQogICAgICwgbV9sYXN0RGVjb2RlZEFjY2Vzc1RpbWUoMCkKLSAgICAsIG1fc2VuZFJlc291
cmNlTG9hZENhbGxiYWNrcyh0cnVlKQorICAgICwgbV9lbmNvZGVkU2l6ZSgwKQorICAgICwgbV9k
ZWNvZGVkU2l6ZSgwKQorICAgICwgbV9hY2Nlc3NDb3VudCgwKQorICAgICwgbV9oYW5kbGVDb3Vu
dCgwKQogICAgICwgbV9wcmVsb2FkQ291bnQoMCkKICAgICAsIG1fcHJlbG9hZFJlc3VsdChQcmVs
b2FkTm90UmVmZXJlbmNlZCkKKyAgICAsIG1faW5MaXZlRGVjb2RlZFJlc291cmNlc0xpc3QoZmFs
c2UpCiAgICAgLCBtX3JlcXVlc3RlZEZyb21OZXR3b3JraW5nTGF5ZXIoZmFsc2UpCisgICAgLCBt
X3NlbmRSZXNvdXJjZUxvYWRDYWxsYmFja3ModHJ1ZSkKKyAgICAsIG1fZXJyb3JPY2N1cnJlZChm
YWxzZSkKICAgICAsIG1faW5DYWNoZShmYWxzZSkKICAgICAsIG1fbG9hZGluZyhmYWxzZSkKKyAg
ICAsIG1fdHlwZSh0eXBlKQorICAgICwgbV9zdGF0dXMoUGVuZGluZykKKyNpZm5kZWYgTkRFQlVH
CisgICAgLCBtX2RlbGV0ZWQoZmFsc2UpCisgICAgLCBtX2xydUluZGV4KDApCisjZW5kaWYKKyAg
ICAsIG1fbmV4dEluQWxsUmVzb3VyY2VzTGlzdCgwKQorICAgICwgbV9wcmV2SW5BbGxSZXNvdXJj
ZXNMaXN0KDApCisgICAgLCBtX25leHRJbkxpdmVSZXNvdXJjZXNMaXN0KDApCisgICAgLCBtX3By
ZXZJbkxpdmVSZXNvdXJjZXNMaXN0KDApCiAgICAgLCBtX2RvY0xvYWRlcigwKQotICAgICwgbV9o
YW5kbGVDb3VudCgwKQogICAgICwgbV9yZXNvdXJjZVRvUmV2YWxpZGF0ZSgwKQogICAgICwgbV9w
cm94eVJlc291cmNlKDApCiB7CiAjaWZuZGVmIE5ERUJVRwogICAgIGNhY2hlZFJlc291cmNlTGVh
a0NvdW50ZXIuaW5jcmVtZW50KCk7CiAjZW5kaWYKLQotICAgIG1fdHlwZSA9IHR5cGU7Ci0gICAg
bV9zdGF0dXMgPSBQZW5kaW5nOwotICAgIG1fZW5jb2RlZFNpemUgPSAwOwotICAgIG1fZGVjb2Rl
ZFNpemUgPSAwOwotICAgIG1fcmVxdWVzdCA9IDA7Ci0KLSAgICBtX2FjY2Vzc0NvdW50ID0gMDsK
LSAgICBtX2luTGl2ZURlY29kZWRSZXNvdXJjZXNMaXN0ID0gZmFsc2U7Ci0gICAgCi0gICAgbV9u
ZXh0SW5BbGxSZXNvdXJjZXNMaXN0ID0gMDsKLSAgICBtX3ByZXZJbkFsbFJlc291cmNlc0xpc3Qg
PSAwOwotICAgIAotICAgIG1fbmV4dEluTGl2ZVJlc291cmNlc0xpc3QgPSAwOwotICAgIG1fcHJl
dkluTGl2ZVJlc291cmNlc0xpc3QgPSAwOwotCi0jaWZuZGVmIE5ERUJVRwotICAgIG1fZGVsZXRl
ZCA9IGZhbHNlOwotICAgIG1fbHJ1SW5kZXggPSAwOwotI2VuZGlmCi0gICAgbV9lcnJvck9jY3Vy
cmVkID0gZmFsc2U7CiB9CiAKIENhY2hlZFJlc291cmNlOjp+Q2FjaGVkUmVzb3VyY2UoKQpkaWZm
IC0tZ2l0IGEvV2ViQ29yZS9sb2FkZXIvQ2FjaGVkUmVzb3VyY2UuaCBiL1dlYkNvcmUvbG9hZGVy
L0NhY2hlZFJlc291cmNlLmgKaW5kZXggNzQ1MDFlZTE0YzhkNGM1MWY1OTUxMDA3ZDhkOTYyYjg0
OWE3NWE1Ny4uMjI3YmYyYzU3NTkxY2E2ZmM0MzM3YWI3MDYwNTcxYTJkY2U3ODFkYSAxMDA2NDQK
LS0tIGEvV2ViQ29yZS9sb2FkZXIvQ2FjaGVkUmVzb3VyY2UuaAorKysgYi9XZWJDb3JlL2xvYWRl
ci9DYWNoZWRSZXNvdXJjZS5oCkBAIC04Nyw3ICs4Nyw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFs
IHZvaWQgaHR0cFN0YXR1c0NvZGVFcnJvcigpIHsgZXJyb3IoKTsgfSAvLyBJbWFnZXMga2VlcCBs
b2FkaW5nIGluIHNwaXRlIG9mIEhUVFAgZXJyb3JzIChmb3IgbGVnYWN5IGNvbXBhdCB3aXRoIDxp
bWc+LCBldGMuKS4KIAogICAgIGNvbnN0IFN0cmluZyAmdXJsKCkgY29uc3QgeyByZXR1cm4gbV91
cmw7IH0KLSAgICBUeXBlIHR5cGUoKSBjb25zdCB7IHJldHVybiBtX3R5cGU7IH0KKyAgICBUeXBl
IHR5cGUoKSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDxUeXBlPihtX3R5cGUpOyB9CiAKICAg
ICB2b2lkIGFkZENsaWVudChDYWNoZWRSZXNvdXJjZUNsaWVudCopOwogICAgIHZvaWQgcmVtb3Zl
Q2xpZW50KENhY2hlZFJlc291cmNlQ2xpZW50Kik7CkBAIC0xMDAsNyArMTAwLDcgQEAgcHVibGlj
OgogICAgICAgICBQcmVsb2FkUmVmZXJlbmNlZFdoaWxlTG9hZGluZywKICAgICAgICAgUHJlbG9h
ZFJlZmVyZW5jZWRXaGlsZUNvbXBsZXRlCiAgICAgfTsKLSAgICBQcmVsb2FkUmVzdWx0IHByZWxv
YWRSZXN1bHQoKSBjb25zdCB7IHJldHVybiBtX3ByZWxvYWRSZXN1bHQ7IH0KKyAgICBQcmVsb2Fk
UmVzdWx0IHByZWxvYWRSZXN1bHQoKSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDxQcmVsb2Fk
UmVzdWx0PihtX3ByZWxvYWRSZXN1bHQpOyB9CiAgICAgdm9pZCBzZXRSZXF1ZXN0ZWRGcm9tTmV0
d29ya2luZ0xheWVyKCkgeyBtX3JlcXVlc3RlZEZyb21OZXR3b3JraW5nTGF5ZXIgPSB0cnVlOyB9
CiAKICAgICB2aXJ0dWFsIHZvaWQgZGlkQWRkQ2xpZW50KENhY2hlZFJlc291cmNlQ2xpZW50Kikg
PSAwOwpAQCAtMTA4LDE0ICsxMDgsMTcgQEAgcHVibGljOgogCiAgICAgdW5zaWduZWQgY291bnQo
KSBjb25zdCB7IHJldHVybiBtX2NsaWVudHMuc2l6ZSgpOyB9CiAKLSAgICBTdGF0dXMgc3RhdHVz
KCkgY29uc3QgeyByZXR1cm4gbV9zdGF0dXM7IH0KKyAgICBTdGF0dXMgc3RhdHVzKCkgY29uc3Qg
eyByZXR1cm4gc3RhdGljX2Nhc3Q8U3RhdHVzPihtX3N0YXR1cyk7IH0KKyAgICB2b2lkIHNldFN0
YXR1cyhTdGF0dXMgc3RhdHVzKSB7IG1fc3RhdHVzID0gc3RhdHVzOyB9CiAKICAgICB1bnNpZ25l
ZCBzaXplKCkgY29uc3QgeyByZXR1cm4gZW5jb2RlZFNpemUoKSArIGRlY29kZWRTaXplKCkgKyBv
dmVyaGVhZFNpemUoKTsgfQogICAgIHVuc2lnbmVkIGVuY29kZWRTaXplKCkgY29uc3QgeyByZXR1
cm4gbV9lbmNvZGVkU2l6ZTsgfQogICAgIHVuc2lnbmVkIGRlY29kZWRTaXplKCkgY29uc3QgeyBy
ZXR1cm4gbV9kZWNvZGVkU2l6ZTsgfQogICAgIHVuc2lnbmVkIG92ZXJoZWFkU2l6ZSgpIGNvbnN0
OwogICAgIAotICAgIGJvb2wgaXNMb2FkZWQoKSBjb25zdCB7IHJldHVybiAhbV9sb2FkaW5nOyB9
CisgICAgYm9vbCBpc0xvYWRlZCgpIGNvbnN0IHsgcmV0dXJuICFtX2xvYWRpbmc7IH0gLy8gRklY
TUUuIE1ldGhvZCBuYW1lIGlzIGluYWNjdXJhdGUuIExvYWRpbmcgbWlnaHQgbm90IGhhdmUgc3Rh
cnRlZCB5ZXQuCisKKyAgICBib29sIGlzTG9hZGluZygpIGNvbnN0IHsgcmV0dXJuIG1fbG9hZGlu
ZzsgfQogICAgIHZvaWQgc2V0TG9hZGluZyhib29sIGIpIHsgbV9sb2FkaW5nID0gYjsgfQogCiAg
ICAgdmlydHVhbCBib29sIGlzSW1hZ2UoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQpAQCAtMTY3
LDYgKzE3MCw4IEBAIHB1YmxpYzoKICAgICB2b2lkIHNldEFjY2VwdChjb25zdCBTdHJpbmcmIGFj
Y2VwdCkgeyBtX2FjY2VwdCA9IGFjY2VwdDsgfQogCiAgICAgYm9vbCBlcnJvck9jY3VycmVkKCkg
Y29uc3QgeyByZXR1cm4gbV9lcnJvck9jY3VycmVkOyB9CisgICAgdm9pZCBzZXRFcnJvck9jY3Vy
cmVkKGJvb2wgYikgeyBtX2Vycm9yT2NjdXJyZWQgPSBiOyB9CisKICAgICBib29sIHNlbmRSZXNv
dXJjZUxvYWRDYWxsYmFja3MoKSBjb25zdCB7IHJldHVybiBtX3NlbmRSZXNvdXJjZUxvYWRDYWxs
YmFja3M7IH0KICAgICAKICAgICB2aXJ0dWFsIHZvaWQgZGVzdHJveURlY29kZWREYXRhKCkgeyB9
CkBAIC0yMTIsMTEgKzIxNyw2IEBAIHByb3RlY3RlZDoKICAgICBSZWZQdHI8U2hhcmVkQnVmZmVy
PiBtX2RhdGE7CiAgICAgT3duUHRyPFB1cmdlYWJsZUJ1ZmZlcj4gbV9wdXJnZWFibGVEYXRhOwog
Ci0gICAgVHlwZSBtX3R5cGU7Ci0gICAgU3RhdHVzIG1fc3RhdHVzOwotCi0gICAgYm9vbCBtX2Vy
cm9yT2NjdXJyZWQ7Ci0KIHByaXZhdGU6CiAgICAgdm9pZCBhZGRDbGllbnRUb1NldChDYWNoZWRS
ZXNvdXJjZUNsaWVudCopOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IApAQCAtMjMwLDI3ICsyMzAsMzMgQEAgcHJpdmF0ZToKICAgICBkb3VibGUgZnJlc2huZXNzTGlm
ZXRpbWUoKSBjb25zdDsKIAogICAgIFJlZlB0cjxDYWNoZWRNZXRhZGF0YT4gbV9jYWNoZWRNZXRh
ZGF0YTsKKworICAgIGRvdWJsZSBtX2xhc3REZWNvZGVkQWNjZXNzVGltZTsgLy8gVXNlZCBhcyBh
ICJ0aHJhc2ggZ3VhcmQiIGluIHRoZSBjYWNoZQorCiAgICAgdW5zaWduZWQgbV9lbmNvZGVkU2l6
ZTsKICAgICB1bnNpZ25lZCBtX2RlY29kZWRTaXplOwogICAgIHVuc2lnbmVkIG1fYWNjZXNzQ291
bnQ7Ci0gICAgdW5zaWduZWQgbV9pbkxpdmVEZWNvZGVkUmVzb3VyY2VzTGlzdDsKLSAgICBkb3Vi
bGUgbV9sYXN0RGVjb2RlZEFjY2Vzc1RpbWU7IC8vIFVzZWQgYXMgYSAidGhyYXNoIGd1YXJkIiBp
biB0aGUgY2FjaGUKLSAgICAKLSAgICBib29sIG1fc2VuZFJlc291cmNlTG9hZENhbGxiYWNrczsK
LSAgICAKKyAgICB1bnNpZ25lZCBtX2hhbmRsZUNvdW50OwogICAgIHVuc2lnbmVkIG1fcHJlbG9h
ZENvdW50OwotICAgIFByZWxvYWRSZXN1bHQgbV9wcmVsb2FkUmVzdWx0OwotICAgIGJvb2wgbV9y
ZXF1ZXN0ZWRGcm9tTmV0d29ya2luZ0xheWVyOwogCi1wcm90ZWN0ZWQ6Ci0gICAgYm9vbCBtX2lu
Q2FjaGU7Ci0gICAgYm9vbCBtX2xvYWRpbmc7CisgICAgdW5zaWduZWQgbV9wcmVsb2FkUmVzdWx0
IDogMjsgLy8gUHJlbG9hZFJlc3VsdAorCisgICAgYm9vbCBtX2luTGl2ZURlY29kZWRSZXNvdXJj
ZXNMaXN0IDogMTsKKyAgICBib29sIG1fcmVxdWVzdGVkRnJvbU5ldHdvcmtpbmdMYXllciA6IDE7
CisgICAgYm9vbCBtX3NlbmRSZXNvdXJjZUxvYWRDYWxsYmFja3MgOiAxOworCisgICAgYm9vbCBt
X2Vycm9yT2NjdXJyZWQgOiAxOworICAgIGJvb2wgbV9pbkNhY2hlIDogMTsKKyAgICBib29sIG1f
bG9hZGluZyA6IDE7CisKKyAgICB1bnNpZ25lZCBtX3R5cGUgOiAzOyAvLyBUeXBlCisgICAgdW5z
aWduZWQgbV9zdGF0dXMgOiAzOyAvLyBTdGF0dXMKKwogI2lmbmRlZiBOREVCVUcKICAgICBib29s
IG1fZGVsZXRlZDsKICAgICB1bnNpZ25lZCBtX2xydUluZGV4OwogI2VuZGlmCiAKLXByaXZhdGU6
CiAgICAgQ2FjaGVkUmVzb3VyY2UqIG1fbmV4dEluQWxsUmVzb3VyY2VzTGlzdDsKICAgICBDYWNo
ZWRSZXNvdXJjZSogbV9wcmV2SW5BbGxSZXNvdXJjZXNMaXN0OwogICAgIApAQCAtMjU5LDcgKzI2
NSw2IEBAIHByaXZhdGU6CiAKICAgICBEb2NMb2FkZXIqIG1fZG9jTG9hZGVyOyAvLyBvbmx5IG5v
bi0wIGZvciByZXNvdXJjZXMgdGhhdCBhcmUgbm90IGluIHRoZSBjYWNoZQogICAgIAotICAgIHVu
c2lnbmVkIG1faGFuZGxlQ291bnQ7CiAgICAgLy8gSWYgdGhpcyBmaWVsZCBpcyBub24tbnVsbCB3
ZSBhcmUgdXNpbmcgdGhlIHJlc291cmNlIGFzIGEgcHJveHkgZm9yIGNoZWNraW5nIHdoZXRoZXIg
YW4gZXhpc3RpbmcgcmVzb3VyY2UgaXMgc3RpbGwgdXAgdG8gZGF0ZQogICAgIC8vIHVzaW5nIEhU
VFAgSWYtTW9kaWZpZWQtU2luY2UvSWYtTm9uZS1NYXRjaCBoZWFkZXJzLiBJZiB0aGUgcmVzcG9u
c2UgaXMgMzA0IGFsbCBjbGllbnRzIG9mIHRoaXMgcmVzb3VyY2UgYXJlIG1vdmVkCiAgICAgLy8g
dG8gdG8gYmUgY2xpZW50cyBvZiBtX3Jlc291cmNlVG9SZXZhbGlkYXRlIGFuZCB0aGUgcmVzb3Vy
Y2UgaXMgZGVsZXRlZC4gSWYgbm90LCB0aGUgZmllbGQgaXMgemVyb2VkIGFuZCB0aGlzCmRpZmYg
LS1naXQgYS9XZWJDb3JlL2xvYWRlci9DYWNoZWRTY3JpcHQuY3BwIGIvV2ViQ29yZS9sb2FkZXIv
Q2FjaGVkU2NyaXB0LmNwcAppbmRleCAyOGU2MTM3ZjE5OGY5MzQxOWJlMjNlMDhjNTNkMjNkZGFj
Y2UyYmJmLi40NjZhNWU5NjNlNGY1NDJmN2I5NjdmYzIyMDRiZmE5NDlhNWQwNDVhIDEwMDY0NAot
LS0gYS9XZWJDb3JlL2xvYWRlci9DYWNoZWRTY3JpcHQuY3BwCisrKyBiL1dlYkNvcmUvbG9hZGVy
L0NhY2hlZFNjcmlwdC5jcHAKQEAgLTUyLDcgKzUyLDcgQEAgQ2FjaGVkU2NyaXB0Ojp+Q2FjaGVk
U2NyaXB0KCkKIAogdm9pZCBDYWNoZWRTY3JpcHQ6OmRpZEFkZENsaWVudChDYWNoZWRSZXNvdXJj
ZUNsaWVudCogYykKIHsKLSAgICBpZiAoIW1fbG9hZGluZykKKyAgICBpZiAoIWlzTG9hZGluZygp
KQogICAgICAgICBjLT5ub3RpZnlGaW5pc2hlZCh0aGlzKTsKIH0KIApAQCAtOTIsMTMgKzkyLDEz
IEBAIHZvaWQgQ2FjaGVkU2NyaXB0OjpkYXRhKFBhc3NSZWZQdHI8U2hhcmVkQnVmZmVyPiBkYXRh
LCBib29sIGFsbERhdGFSZWNlaXZlZCkKIAogICAgIG1fZGF0YSA9IGRhdGE7CiAgICAgc2V0RW5j
b2RlZFNpemUobV9kYXRhLmdldCgpID8gbV9kYXRhLT5zaXplKCkgOiAwKTsKLSAgICBtX2xvYWRp
bmcgPSBmYWxzZTsKKyAgICBzZXRMb2FkaW5nKGZhbHNlKTsKICAgICBjaGVja05vdGlmeSgpOwog
fQogCiB2b2lkIENhY2hlZFNjcmlwdDo6Y2hlY2tOb3RpZnkoKQogewotICAgIGlmIChtX2xvYWRp
bmcpCisgICAgaWYgKGlzTG9hZGluZygpKQogICAgICAgICByZXR1cm47CiAKICAgICBDYWNoZWRS
ZXNvdXJjZUNsaWVudFdhbGtlciB3KG1fY2xpZW50cyk7CkBAIC0xMDgsOCArMTA4LDggQEAgdm9p
ZCBDYWNoZWRTY3JpcHQ6OmNoZWNrTm90aWZ5KCkKIAogdm9pZCBDYWNoZWRTY3JpcHQ6OmVycm9y
KCkKIHsKLSAgICBtX2xvYWRpbmcgPSBmYWxzZTsKLSAgICBtX2Vycm9yT2NjdXJyZWQgPSB0cnVl
OworICAgIHNldExvYWRpbmcoZmFsc2UpOworICAgIHNldEVycm9yT2NjdXJyZWQodHJ1ZSk7CiAg
ICAgY2hlY2tOb3RpZnkoKTsKIH0KIApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9sb2FkZXIvQ2FjaGVk
WFNMU3R5bGVTaGVldC5jcHAgYi9XZWJDb3JlL2xvYWRlci9DYWNoZWRYU0xTdHlsZVNoZWV0LmNw
cAppbmRleCA0MzBhZDQ2MGYwMDcyMDBmOTdlNmVmODI1NDU0NWZlOGQ0ZjMwNmFjLi41YjMwZTMw
Nzc4ODkzMWVjMzllOTIyZTQ1M2RmNGVjZjE1ZDI5MTg3IDEwMDY0NAotLS0gYS9XZWJDb3JlL2xv
YWRlci9DYWNoZWRYU0xTdHlsZVNoZWV0LmNwcAorKysgYi9XZWJDb3JlL2xvYWRlci9DYWNoZWRY
U0xTdHlsZVNoZWV0LmNwcApAQCAtNDgsNyArNDgsNyBAQCBDYWNoZWRYU0xTdHlsZVNoZWV0OjpD
YWNoZWRYU0xTdHlsZVNoZWV0KGNvbnN0IFN0cmluZyAmdXJsKQogCiB2b2lkIENhY2hlZFhTTFN0
eWxlU2hlZXQ6OmRpZEFkZENsaWVudChDYWNoZWRSZXNvdXJjZUNsaWVudCogYykKIHsgIAotICAg
IGlmICghbV9sb2FkaW5nKQorICAgIGlmICghaXNMb2FkaW5nKCkpCiAgICAgICAgIGMtPnNldFhT
TFN0eWxlU2hlZXQobV91cmwsIG1fcmVzcG9uc2UudXJsKCksIG1fc2hlZXQpOwogfQogCkBAIC03
MywxMyArNzMsMTMgQEAgdm9pZCBDYWNoZWRYU0xTdHlsZVNoZWV0OjpkYXRhKFBhc3NSZWZQdHI8
U2hhcmVkQnVmZmVyPiBkYXRhLCBib29sIGFsbERhdGFSZWNlaXYKICAgICAgICAgbV9zaGVldCA9
IFN0cmluZyhtX2RlY29kZXItPmRlY29kZShtX2RhdGEtPmRhdGEoKSwgZW5jb2RlZFNpemUoKSkp
OwogICAgICAgICBtX3NoZWV0ICs9IG1fZGVjb2Rlci0+Zmx1c2goKTsKICAgICB9Ci0gICAgbV9s
b2FkaW5nID0gZmFsc2U7CisgICAgc2V0TG9hZGluZyhmYWxzZSk7CiAgICAgY2hlY2tOb3RpZnko
KTsKIH0KIAogdm9pZCBDYWNoZWRYU0xTdHlsZVNoZWV0OjpjaGVja05vdGlmeSgpCiB7Ci0gICAg
aWYgKG1fbG9hZGluZykKKyAgICBpZiAoaXNMb2FkaW5nKCkpCiAgICAgICAgIHJldHVybjsKICAg
ICAKICAgICBDYWNoZWRSZXNvdXJjZUNsaWVudFdhbGtlciB3KG1fY2xpZW50cyk7CkBAIC04OSw4
ICs4OSw4IEBAIHZvaWQgQ2FjaGVkWFNMU3R5bGVTaGVldDo6Y2hlY2tOb3RpZnkoKQogCiB2b2lk
IENhY2hlZFhTTFN0eWxlU2hlZXQ6OmVycm9yKCkKIHsKLSAgICBtX2xvYWRpbmcgPSBmYWxzZTsK
LSAgICBtX2Vycm9yT2NjdXJyZWQgPSB0cnVlOworICAgIHNldExvYWRpbmcoZmFsc2UpOworICAg
IHNldEVycm9yT2NjdXJyZWQodHJ1ZSk7CiAgICAgY2hlY2tOb3RpZnkoKTsKIH0KIAo=
</data>
<flag name="review"
          id="40566"
          type_id="1"
          status="+"
          setter="mjs"
    />
          </attachment>
      

    </bug>

</bugzilla>