<?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>43236</bug_id>
          
          <creation_ts>2010-07-30 02:43:24 -0700</creation_ts>
          <short_desc>Optimize SVGResources memory usage</short_desc>
          <delta_ts>2010-07-30 04:03:05 -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>SVG</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></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Nikolas Zimmermann">zimmermann</reporter>
          <assigned_to name="Nikolas Zimmermann">zimmermann</assigned_to>
          <cc>krit</cc>
    
    <cc>zimmermann</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>258097</commentid>
    <comment_count>0</comment_count>
    <who name="Nikolas Zimmermann">zimmermann</who>
    <bug_when>2010-07-30 02:43:24 -0700</bug_when>
    <thetext>marker*/clip-path/filter/fill/stroke properties can not be applied to all elements.
We should be able to reduce memory usage of the class, by grouping properties that can be applied to certain element categories like &quot;shapes&quot; / &quot;text content elements&quot; / &quot;graphics elements&quot; / &quot;container elements&quot;, as the SVG specification describes.

Clipper &amp; Filter &amp; Masker can be grouped, MarkerStart &amp; MarkerMid &amp; MarkerEnd as well as Fill &amp; Stroke.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>258099</commentid>
    <comment_count>1</comment_count>
      <attachid>63039</attachid>
    <who name="Nikolas Zimmermann">zimmermann</who>
    <bug_when>2010-07-30 02:48:29 -0700</bug_when>
    <thetext>Created attachment 63039
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>258101</commentid>
    <comment_count>2</comment_count>
      <attachid>63041</attachid>
    <who name="Nikolas Zimmermann">zimmermann</who>
    <bug_when>2010-07-30 02:53:25 -0700</bug_when>
    <thetext>Created attachment 63041
Updated patch

Add missing ENABLE(FILTERS) guards.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>258117</commentid>
    <comment_count>3</comment_count>
      <attachid>63041</attachid>
    <who name="Dirk Schulze">krit</who>
    <bug_when>2010-07-30 04:00:52 -0700</bug_when>
    <thetext>Comment on attachment 63041
Updated patch

Talked about some changes on tag to clipper mapping. We don&apos;t follow the spec for defs,switch,pattern.
r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>258118</commentid>
    <comment_count>4</comment_count>
    <who name="Nikolas Zimmermann">zimmermann</who>
    <bug_when>2010-07-30 04:03:05 -0700</bug_when>
    <thetext>Thanks, landed in r64345.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>63039</attachid>
            <date>2010-07-30 02:48:29 -0700</date>
            <delta_ts>2010-07-30 02:53:25 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>optimizeMemory.diff</filename>
            <type>text/plain</type>
            <size>31149</size>
            <attacher name="Nikolas Zimmermann">zimmermann</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA2NDM0MSkKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsNjAgQEAKKzIwMTAtMDctMzAgIE5pa29sYXMgWmltbWVybWFubiAgPG56aW1tZXJt
YW5uQHJpbS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgT3B0aW1pemUgU1ZHUmVzb3VyY2VzIG1lbW9yeSB1c2FnZQorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDMyMzYKKworICAgICAgICBJbnN0ZWFk
IG9mIHN0b3JpbmcgcG9pbnRlcnMgdG8gYWxsIHBvc3NpYmxlIHJlc291cmNlcyB0aGF0IGNvdWxk
IGJlIGFwcGxpZWQgdG8gYW4gZWxlbWVudCwgZ3JvdXAgdGhlbSBpbiB0aHJlZSBjYXRlZ29yaWVz
OgorICAgICAgICBjbGlwcGVyL2ZpbHRlci9tYXNrZXIsIG1hcmtlci1zdGFydC9tYXJrZXItbWlk
L21hcmtlci1lbmQsIGFuZCBmaWxsL3N0cm9rZS4KKworICAgICAgICBPbmx5IGJ1aWxkIHRoZSBj
YWNoZWQgcmVzb3VyY2VzIGRhdGEgZm9yIGVsZW1lbnRzIHdoZXJlIHRoZSBwcm9wZXJ0aWVzIGNh
biBiZSBhcHBsaWVkIHRvLiBNYWludGFpbiBhIHN0YXRpYyBsaXN0IG9mIHRhZ25hbWVzCisgICAg
ICAgIGZvciBlYWNoIG9mIHRoZSB0aHJlZSBjYXRlZ29yaWVzLCB0byBhdm9pZCBkb2luZyB1bm5j
ZXNzYXJ5IHdvcmsuCisKKyAgICAgICAgRG9lc24ndCBhZmZlY3QgYW55IHRlc3RzLgorCisgICAg
ICAgICogcmVuZGVyaW5nL1NWR1Jlc291cmNlcy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdS
ZXNvdXJjZXM6OlNWR1Jlc291cmNlcyk6CisgICAgICAgIChXZWJDb3JlOjpjbGlwcGVyRmlsdGVy
TWFza2VyVGFncyk6CisgICAgICAgIChXZWJDb3JlOjptYXJrZXJUYWdzKToKKyAgICAgICAgKFdl
YkNvcmU6OmZpbGxBbmRTdHJva2VUYWdzKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR1Jlc291cmNl
czo6YnVpbGRDYWNoZWRSZXNvdXJjZXMpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHUmVzb3VyY2Vz
OjppbnZhbGlkYXRlQ2xpZW50KToKKyAgICAgICAgKFdlYkNvcmU6OlNWR1Jlc291cmNlczo6cmVz
b3VyY2VEZXN0cm95ZWQpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHUmVzb3VyY2VzOjpidWlsZFNl
dE9mUmVzb3VyY2VzKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR1Jlc291cmNlczo6c2V0Q2xpcHBl
cik6CisgICAgICAgIChXZWJDb3JlOjpTVkdSZXNvdXJjZXM6OnJlc2V0Q2xpcHBlcik6CisgICAg
ICAgIChXZWJDb3JlOjpTVkdSZXNvdXJjZXM6OnNldEZpbHRlcik6CisgICAgICAgIChXZWJDb3Jl
OjpTVkdSZXNvdXJjZXM6OnJlc2V0RmlsdGVyKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR1Jlc291
cmNlczo6c2V0TWFya2VyU3RhcnQpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHUmVzb3VyY2VzOjpy
ZXNldE1hcmtlclN0YXJ0KToKKyAgICAgICAgKFdlYkNvcmU6OlNWR1Jlc291cmNlczo6c2V0TWFy
a2VyTWlkKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR1Jlc291cmNlczo6cmVzZXRNYXJrZXJNaWQp
OgorICAgICAgICAoV2ViQ29yZTo6U1ZHUmVzb3VyY2VzOjpzZXRNYXJrZXJFbmQpOgorICAgICAg
ICAoV2ViQ29yZTo6U1ZHUmVzb3VyY2VzOjpyZXNldE1hcmtlckVuZCk6CisgICAgICAgIChXZWJD
b3JlOjpTVkdSZXNvdXJjZXM6OnNldE1hc2tlcik6CisgICAgICAgIChXZWJDb3JlOjpTVkdSZXNv
dXJjZXM6OnJlc2V0TWFza2VyKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR1Jlc291cmNlczo6c2V0
RmlsbCk6CisgICAgICAgIChXZWJDb3JlOjpTVkdSZXNvdXJjZXM6OnJlc2V0RmlsbCk6CisgICAg
ICAgIChXZWJDb3JlOjpTVkdSZXNvdXJjZXM6OnNldFN0cm9rZSk6CisgICAgICAgIChXZWJDb3Jl
OjpTVkdSZXNvdXJjZXM6OnJlc2V0U3Ryb2tlKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR1Jlc291
cmNlczo6ZHVtcCk6CisgICAgICAgICogcmVuZGVyaW5nL1NWR1Jlc291cmNlcy5oOgorICAgICAg
ICAoV2ViQ29yZTo6U1ZHUmVzb3VyY2VzOjpjbGlwcGVyKToKKyAgICAgICAgKFdlYkNvcmU6OlNW
R1Jlc291cmNlczo6ZmlsdGVyKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR1Jlc291cmNlczo6bWFy
a2VyU3RhcnQpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHUmVzb3VyY2VzOjptYXJrZXJNaWQpOgor
ICAgICAgICAoV2ViQ29yZTo6U1ZHUmVzb3VyY2VzOjptYXJrZXJFbmQpOgorICAgICAgICAoV2Vi
Q29yZTo6U1ZHUmVzb3VyY2VzOjptYXNrZXIpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHUmVzb3Vy
Y2VzOjpmaWxsKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR1Jlc291cmNlczo6c3Ryb2tlKToKKyAg
ICAgICAgKFdlYkNvcmU6OlNWR1Jlc291cmNlczo6Q2xpcHBlckZpbHRlck1hc2tlckRhdGE6OkNs
aXBwZXJGaWx0ZXJNYXNrZXJEYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR1Jlc291cmNlczo6
Q2xpcHBlckZpbHRlck1hc2tlckRhdGE6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpTVkdS
ZXNvdXJjZXM6Ok1hcmtlckRhdGE6Ok1hcmtlckRhdGEpOgorICAgICAgICAoV2ViQ29yZTo6U1ZH
UmVzb3VyY2VzOjpNYXJrZXJEYXRhOjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHUmVz
b3VyY2VzOjpGaWxsU3Ryb2tlRGF0YTo6RmlsbFN0cm9rZURhdGEpOgorICAgICAgICAoV2ViQ29y
ZTo6U1ZHUmVzb3VyY2VzOjpGaWxsU3Ryb2tlRGF0YTo6Y3JlYXRlKToKKwogMjAxMC0wNy0yOSAg
QWxleGFuZGVyIFBhdmxvdiAgPGFwYXZsb3ZAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFJldmll
d2VkIGJ5IFBhdmVsIEZlbGRtYW4uCkluZGV4OiBXZWJDb3JlL3JlbmRlcmluZy9TVkdSZXNvdXJj
ZXMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcmVuZGVyaW5nL1NWR1Jlc291cmNlcy5jcHAJ
KHJldmlzaW9uIDY0MzM5KQorKysgV2ViQ29yZS9yZW5kZXJpbmcvU1ZHUmVzb3VyY2VzLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtMzIsMTkgKzMyLDg5IEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAK
IFNWR1Jlc291cmNlczo6U1ZHUmVzb3VyY2VzKCkKLSAgICA6IG1fY2xpcHBlcigwKQotI2lmIEVO
QUJMRShGSUxURVJTKQotICAgICwgbV9maWx0ZXIoMCkKLSNlbmRpZgotICAgICwgbV9tYXJrZXJT
dGFydCgwKQotICAgICwgbV9tYXJrZXJNaWQoMCkKLSAgICAsIG1fbWFya2VyRW5kKDApCi0gICAg
LCBtX21hc2tlcigwKQotICAgICwgbV9maWxsKDApCi0gICAgLCBtX3N0cm9rZSgwKQorICAgIDog
bV9jbGlwcGVyRmlsdGVyTWFza2VyRGF0YSgwKQorICAgICwgbV9tYXJrZXJEYXRhKDApCisgICAg
LCBtX2ZpbGxTdHJva2VEYXRhKDApCiB7CiB9CiAKK3N0YXRpYyBIYXNoU2V0PEF0b21pY1N0cmlu
Z0ltcGwqPiYgY2xpcHBlckZpbHRlck1hc2tlclRhZ3MoKQoreworICAgIERFRklORV9TVEFUSUNf
TE9DQUwoSGFzaFNldDxBdG9taWNTdHJpbmdJbXBsKj4sIHNfdGFnTGlzdCwgKCkpOworICAgIGlm
IChzX3RhZ0xpc3QuaXNFbXB0eSgpKSB7CisgICAgICAgIC8vICJjb250YWluZXIgZWxlbWVudHMi
OiBodHRwOi8vd3d3LnczLm9yZy9UUi9TVkcxMS9pbnRyby5odG1sI1Rlcm1Db250YWluZXJFbGVt
ZW50CisgICAgICAgIC8vICJncmFwaGljcyBlbGVtZW50cyIgOiBodHRwOi8vd3d3LnczLm9yZy9U
Ui9TVkcxMS9pbnRyby5odG1sI1Rlcm1HcmFwaGljc0VsZW1lbnQKKyAgICAgICAgc190YWdMaXN0
LmFkZChTVkdOYW1lczo6YVRhZy5sb2NhbE5hbWUoKS5pbXBsKCkpOworICAgICAgICBzX3RhZ0xp
c3QuYWRkKFNWR05hbWVzOjpjaXJjbGVUYWcubG9jYWxOYW1lKCkuaW1wbCgpKTsKKyAgICAgICAg
c190YWdMaXN0LmFkZChTVkdOYW1lczo6ZGVmc1RhZy5sb2NhbE5hbWUoKS5pbXBsKCkpOworICAg
ICAgICBzX3RhZ0xpc3QuYWRkKFNWR05hbWVzOjplbGxpcHNlVGFnLmxvY2FsTmFtZSgpLmltcGwo
KSk7CisgICAgICAgIHNfdGFnTGlzdC5hZGQoU1ZHTmFtZXM6OmdseXBoVGFnLmxvY2FsTmFtZSgp
LmltcGwoKSk7CisgICAgICAgIHNfdGFnTGlzdC5hZGQoU1ZHTmFtZXM6OmdUYWcubG9jYWxOYW1l
KCkuaW1wbCgpKTsKKyAgICAgICAgc190YWdMaXN0LmFkZChTVkdOYW1lczo6aW1hZ2VUYWcubG9j
YWxOYW1lKCkuaW1wbCgpKTsKKyAgICAgICAgc190YWdMaXN0LmFkZChTVkdOYW1lczo6bGluZVRh
Zy5sb2NhbE5hbWUoKS5pbXBsKCkpOworICAgICAgICBzX3RhZ0xpc3QuYWRkKFNWR05hbWVzOjpt
YXJrZXJUYWcubG9jYWxOYW1lKCkuaW1wbCgpKTsKKyAgICAgICAgc190YWdMaXN0LmFkZChTVkdO
YW1lczo6bWFza1RhZy5sb2NhbE5hbWUoKS5pbXBsKCkpOworICAgICAgICBzX3RhZ0xpc3QuYWRk
KFNWR05hbWVzOjptaXNzaW5nX2dseXBoVGFnLmxvY2FsTmFtZSgpLmltcGwoKSk7CisgICAgICAg
IHNfdGFnTGlzdC5hZGQoU1ZHTmFtZXM6OnBhdGhUYWcubG9jYWxOYW1lKCkuaW1wbCgpKTsKKyAg
ICAgICAgc190YWdMaXN0LmFkZChTVkdOYW1lczo6cGF0dGVyblRhZy5sb2NhbE5hbWUoKS5pbXBs
KCkpOworICAgICAgICBzX3RhZ0xpc3QuYWRkKFNWR05hbWVzOjpwb2x5Z29uVGFnLmxvY2FsTmFt
ZSgpLmltcGwoKSk7CisgICAgICAgIHNfdGFnTGlzdC5hZGQoU1ZHTmFtZXM6OnBvbHlsaW5lVGFn
LmxvY2FsTmFtZSgpLmltcGwoKSk7CisgICAgICAgIHNfdGFnTGlzdC5hZGQoU1ZHTmFtZXM6OnJl
Y3RUYWcubG9jYWxOYW1lKCkuaW1wbCgpKTsKKyAgICAgICAgc190YWdMaXN0LmFkZChTVkdOYW1l
czo6c3ZnVGFnLmxvY2FsTmFtZSgpLmltcGwoKSk7CisgICAgICAgIHNfdGFnTGlzdC5hZGQoU1ZH
TmFtZXM6OnN3aXRjaFRhZy5sb2NhbE5hbWUoKS5pbXBsKCkpOworICAgICAgICBzX3RhZ0xpc3Qu
YWRkKFNWR05hbWVzOjpzeW1ib2xUYWcubG9jYWxOYW1lKCkuaW1wbCgpKTsKKyAgICAgICAgc190
YWdMaXN0LmFkZChTVkdOYW1lczo6dGV4dFRhZy5sb2NhbE5hbWUoKS5pbXBsKCkpOworICAgICAg
ICBzX3RhZ0xpc3QuYWRkKFNWR05hbWVzOjp1c2VUYWcubG9jYWxOYW1lKCkuaW1wbCgpKTsKKwor
ICAgICAgICAvLyBOb3QgbGlzdGVkIGluIHRoZSBkZWZpbml0aW9ucyBpcyB0aGUgY2xpcFBhdGgg
ZWxlbWVudCwgdGhlIFNWRyBzcGVjIHNheXMgdGhvdWdoOgorICAgICAgICAvLyBUaGUg4oCYY2xp
cFBhdGjigJkgZWxlbWVudCBvciBhbnkgb2YgaXRzIGNoaWxkcmVuIGNhbiBzcGVjaWZ5IHByb3Bl
cnR5IOKAmGNsaXAtcGF0aOKAmS4KKyAgICAgICAgLy8gU28gd2UgaGF2ZSB0byBhZGQgY2xpcFBh
dGhUYWcgaGVyZSwgb3RoZXJ3aGlzZSBjbGlwLXBhdGggb24gY2xpcFBhdGggd2lsbCBmYWlsLgor
ICAgICAgICBzX3RhZ0xpc3QuYWRkKFNWR05hbWVzOjpjbGlwUGF0aFRhZy5sb2NhbE5hbWUoKS5p
bXBsKCkpOworCisgICAgICAgIC8vIE5vdCBsaXN0ZWQgaW4gdGhlIGRlZmluaXRpb25zIGFyZSB0
aGUgdGV4dCBjb250ZW50IGVsZW1lbnRzLCB0aG91Z2ggZmlsdGVyL2NsaXBwZXIvbWFza2VyIG9u
IHRzcGFuL3RleHQvLi4gaXMgYWxsb3dlZC4KKyAgICAgICAgc190YWdMaXN0LmFkZChTVkdOYW1l
czo6YWx0R2x5cGhUYWcubG9jYWxOYW1lKCkuaW1wbCgpKTsKKyAgICAgICAgc190YWdMaXN0LmFk
ZChTVkdOYW1lczo6dGV4dFBhdGhUYWcubG9jYWxOYW1lKCkuaW1wbCgpKTsKKyAgICAgICAgc190
YWdMaXN0LmFkZChTVkdOYW1lczo6dHJlZlRhZy5sb2NhbE5hbWUoKS5pbXBsKCkpOworICAgICAg
ICBzX3RhZ0xpc3QuYWRkKFNWR05hbWVzOjp0c3BhblRhZy5sb2NhbE5hbWUoKS5pbXBsKCkpOwor
ICAgIH0KKworICAgIHJldHVybiBzX3RhZ0xpc3Q7Cit9CisKK3N0YXRpYyBIYXNoU2V0PEF0b21p
Y1N0cmluZ0ltcGwqPiYgbWFya2VyVGFncygpCit7CisgICAgREVGSU5FX1NUQVRJQ19MT0NBTChI
YXNoU2V0PEF0b21pY1N0cmluZ0ltcGwqPiwgc190YWdMaXN0LCAoKSk7CisgICAgaWYgKHNfdGFn
TGlzdC5pc0VtcHR5KCkpIHsKKyAgICAgICAgc190YWdMaXN0LmFkZChTVkdOYW1lczo6bGluZVRh
Zy5sb2NhbE5hbWUoKS5pbXBsKCkpOworICAgICAgICBzX3RhZ0xpc3QuYWRkKFNWR05hbWVzOjpw
YXRoVGFnLmxvY2FsTmFtZSgpLmltcGwoKSk7CisgICAgICAgIHNfdGFnTGlzdC5hZGQoU1ZHTmFt
ZXM6OnBvbHlnb25UYWcubG9jYWxOYW1lKCkuaW1wbCgpKTsKKyAgICAgICAgc190YWdMaXN0LmFk
ZChTVkdOYW1lczo6cG9seWxpbmVUYWcubG9jYWxOYW1lKCkuaW1wbCgpKTsKKyAgICB9CisKKyAg
ICByZXR1cm4gc190YWdMaXN0OworfQorCitzdGF0aWMgSGFzaFNldDxBdG9taWNTdHJpbmdJbXBs
Kj4mIGZpbGxBbmRTdHJva2VUYWdzKCkKK3sKKyAgICBERUZJTkVfU1RBVElDX0xPQ0FMKEhhc2hT
ZXQ8QXRvbWljU3RyaW5nSW1wbCo+LCBzX3RhZ0xpc3QsICgpKTsKKyAgICBpZiAoc190YWdMaXN0
LmlzRW1wdHkoKSkgeworICAgICAgICBzX3RhZ0xpc3QuYWRkKFNWR05hbWVzOjphbHRHbHlwaFRh
Zy5sb2NhbE5hbWUoKS5pbXBsKCkpOworICAgICAgICBzX3RhZ0xpc3QuYWRkKFNWR05hbWVzOjpj
aXJjbGVUYWcubG9jYWxOYW1lKCkuaW1wbCgpKTsKKyAgICAgICAgc190YWdMaXN0LmFkZChTVkdO
YW1lczo6ZWxsaXBzZVRhZy5sb2NhbE5hbWUoKS5pbXBsKCkpOworICAgICAgICBzX3RhZ0xpc3Qu
YWRkKFNWR05hbWVzOjpsaW5lVGFnLmxvY2FsTmFtZSgpLmltcGwoKSk7CisgICAgICAgIHNfdGFn
TGlzdC5hZGQoU1ZHTmFtZXM6OnBhdGhUYWcubG9jYWxOYW1lKCkuaW1wbCgpKTsKKyAgICAgICAg
c190YWdMaXN0LmFkZChTVkdOYW1lczo6cG9seWdvblRhZy5sb2NhbE5hbWUoKS5pbXBsKCkpOwor
ICAgICAgICBzX3RhZ0xpc3QuYWRkKFNWR05hbWVzOjpwb2x5bGluZVRhZy5sb2NhbE5hbWUoKS5p
bXBsKCkpOworICAgICAgICBzX3RhZ0xpc3QuYWRkKFNWR05hbWVzOjpyZWN0VGFnLmxvY2FsTmFt
ZSgpLmltcGwoKSk7CisgICAgICAgIHNfdGFnTGlzdC5hZGQoU1ZHTmFtZXM6OnRleHRUYWcubG9j
YWxOYW1lKCkuaW1wbCgpKTsKKyAgICAgICAgc190YWdMaXN0LmFkZChTVkdOYW1lczo6dGV4dFBh
dGhUYWcubG9jYWxOYW1lKCkuaW1wbCgpKTsKKyAgICAgICAgc190YWdMaXN0LmFkZChTVkdOYW1l
czo6dHJlZlRhZy5sb2NhbE5hbWUoKS5pbXBsKCkpOworICAgICAgICBzX3RhZ0xpc3QuYWRkKFNW
R05hbWVzOjp0c3BhblRhZy5sb2NhbE5hbWUoKS5pbXBsKCkpOworICAgIH0KKworICAgIHJldHVy
biBzX3RhZ0xpc3Q7Cit9CisKIHN0YXRpYyBpbmxpbmUgUmVuZGVyU1ZHUmVzb3VyY2VDb250YWlu
ZXIqIHBhaW50aW5nUmVzb3VyY2VGcm9tU1ZHUGFpbnQoRG9jdW1lbnQqIGRvY3VtZW50LCBTVkdQ
YWludCogcGFpbnQsIEF0b21pY1N0cmluZyYgaWQsIGJvb2wmIGhhc1BlbmRpbmdSZXNvdXJjZSkK
IHsKICAgICBBU1NFUlQocGFpbnQpOwpAQCAtODEsNiArMTUxLDcgQEAgYm9vbCBTVkdSZXNvdXJj
ZXM6OmJ1aWxkQ2FjaGVkUmVzb3VyY2VzKAogCiAgICAgTm9kZSogbm9kZSA9IG9iamVjdC0+bm9k
ZSgpOwogICAgIEFTU0VSVChub2RlKTsKKyAgICBBU1NFUlQobm9kZS0+aXNFbGVtZW50Tm9kZSgp
KTsKIAogICAgIERvY3VtZW50KiBkb2N1bWVudCA9IG9iamVjdC0+ZG9jdW1lbnQoKTsKICAgICBB
U1NFUlQoZG9jdW1lbnQpOwpAQCAtODgsNzcgKzE1OSw3NyBAQCBib29sIFNWR1Jlc291cmNlczo6
YnVpbGRDYWNoZWRSZXNvdXJjZXMoCiAgICAgU1ZHRG9jdW1lbnRFeHRlbnNpb25zKiBleHRlbnNp
b25zID0gZG9jdW1lbnQtPmFjY2Vzc1NWR0V4dGVuc2lvbnMoKTsKICAgICBBU1NFUlQoZXh0ZW5z
aW9ucyk7CiAKLSAgICBib29sIGZvdW5kUmVzb3VyY2VzID0gZmFsc2U7Ci0gICAgaWYgKHN0eWxl
LT5oYXNDbGlwcGVyKCkpIHsKLSAgICAgICAgQXRvbWljU3RyaW5nIGlkKHN0eWxlLT5jbGlwcGVy
UmVzb3VyY2UoKSk7Ci0gICAgICAgIG1fY2xpcHBlciA9IGdldFJlbmRlclNWR1Jlc291cmNlQnlJ
ZDxSZW5kZXJTVkdSZXNvdXJjZUNsaXBwZXI+KGRvY3VtZW50LCBpZCk7Ci0gICAgICAgIGlmICht
X2NsaXBwZXIpCi0gICAgICAgICAgICBmb3VuZFJlc291cmNlcyA9IHRydWU7Ci0gICAgICAgIGVs
c2UKLSAgICAgICAgICAgIHJlZ2lzdGVyUGVuZGluZ1Jlc291cmNlKGV4dGVuc2lvbnMsIGlkLCBu
b2RlKTsKLSAgICB9CisgICAgQXRvbWljU3RyaW5nSW1wbCogdGFnTmFtZUltcGwgPSBzdGF0aWNf
Y2FzdDxFbGVtZW50Kj4obm9kZSktPnRhZ1FOYW1lKCkubG9jYWxOYW1lKCkuaW1wbCgpOworICAg
IGlmICghdGFnTmFtZUltcGwpCisgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgIGlmIChzdHls
ZS0+aGFzTWFza2VyKCkpIHsKLSAgICAgICAgQXRvbWljU3RyaW5nIGlkKHN0eWxlLT5tYXNrZXJS
ZXNvdXJjZSgpKTsKLSAgICAgICAgbV9tYXNrZXIgPSBnZXRSZW5kZXJTVkdSZXNvdXJjZUJ5SWQ8
UmVuZGVyU1ZHUmVzb3VyY2VNYXNrZXI+KGRvY3VtZW50LCBpZCk7Ci0gICAgICAgIGlmIChtX21h
c2tlcikKLSAgICAgICAgICAgIGZvdW5kUmVzb3VyY2VzID0gdHJ1ZTsKLSAgICAgICAgZWxzZQot
ICAgICAgICAgICAgcmVnaXN0ZXJQZW5kaW5nUmVzb3VyY2UoZXh0ZW5zaW9ucywgaWQsIG5vZGUp
OwotICAgIH0KKyAgICBib29sIGZvdW5kUmVzb3VyY2VzID0gZmFsc2U7CisgICAgaWYgKGNsaXBw
ZXJGaWx0ZXJNYXNrZXJUYWdzKCkuY29udGFpbnModGFnTmFtZUltcGwpKSB7CisgICAgICAgIGlm
IChzdHlsZS0+aGFzQ2xpcHBlcigpKSB7CisgICAgICAgICAgICBBdG9taWNTdHJpbmcgaWQoc3R5
bGUtPmNsaXBwZXJSZXNvdXJjZSgpKTsKKyAgICAgICAgICAgIGlmIChzZXRDbGlwcGVyKGdldFJl
bmRlclNWR1Jlc291cmNlQnlJZDxSZW5kZXJTVkdSZXNvdXJjZUNsaXBwZXI+KGRvY3VtZW50LCBp
ZCkpKQorICAgICAgICAgICAgICAgIGZvdW5kUmVzb3VyY2VzID0gdHJ1ZTsKKyAgICAgICAgICAg
IGVsc2UKKyAgICAgICAgICAgICAgICByZWdpc3RlclBlbmRpbmdSZXNvdXJjZShleHRlbnNpb25z
LCBpZCwgbm9kZSk7CisgICAgICAgIH0KIAogI2lmIEVOQUJMRShGSUxURVJTKQotICAgIGlmIChz
dHlsZS0+aGFzRmlsdGVyKCkpIHsKLSAgICAgICAgQXRvbWljU3RyaW5nIGlkKHN0eWxlLT5maWx0
ZXJSZXNvdXJjZSgpKTsKLSAgICAgICAgbV9maWx0ZXIgPSBnZXRSZW5kZXJTVkdSZXNvdXJjZUJ5
SWQ8UmVuZGVyU1ZHUmVzb3VyY2VGaWx0ZXI+KGRvY3VtZW50LCBpZCk7Ci0gICAgICAgIGlmICht
X2ZpbHRlcikKLSAgICAgICAgICAgIGZvdW5kUmVzb3VyY2VzID0gdHJ1ZTsKLSAgICAgICAgZWxz
ZQotICAgICAgICAgICAgcmVnaXN0ZXJQZW5kaW5nUmVzb3VyY2UoZXh0ZW5zaW9ucywgaWQsIG5v
ZGUpOwotICAgIH0KKyAgICAgICAgaWYgKHN0eWxlLT5oYXNGaWx0ZXIoKSkgeworICAgICAgICAg
ICAgQXRvbWljU3RyaW5nIGlkKHN0eWxlLT5maWx0ZXJSZXNvdXJjZSgpKTsKKyAgICAgICAgICAg
IGlmIChzZXRGaWx0ZXIoZ2V0UmVuZGVyU1ZHUmVzb3VyY2VCeUlkPFJlbmRlclNWR1Jlc291cmNl
RmlsdGVyPihkb2N1bWVudCwgaWQpKSkKKyAgICAgICAgICAgICAgICBmb3VuZFJlc291cmNlcyA9
IHRydWU7CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgcmVnaXN0ZXJQZW5kaW5n
UmVzb3VyY2UoZXh0ZW5zaW9ucywgaWQsIG5vZGUpOworICAgICAgICB9CiAjZW5kaWYKIAotICAg
IGlmIChzdHlsZS0+aGFzTWFya2VycygpKSB7CisgICAgICAgIGlmIChzdHlsZS0+aGFzTWFza2Vy
KCkpIHsKKyAgICAgICAgICAgIEF0b21pY1N0cmluZyBpZChzdHlsZS0+bWFza2VyUmVzb3VyY2Uo
KSk7CisgICAgICAgICAgICBpZiAoc2V0TWFza2VyKGdldFJlbmRlclNWR1Jlc291cmNlQnlJZDxS
ZW5kZXJTVkdSZXNvdXJjZU1hc2tlcj4oZG9jdW1lbnQsIGlkKSkpCisgICAgICAgICAgICAgICAg
Zm91bmRSZXNvdXJjZXMgPSB0cnVlOworICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAg
IHJlZ2lzdGVyUGVuZGluZ1Jlc291cmNlKGV4dGVuc2lvbnMsIGlkLCBub2RlKTsKKyAgICAgICAg
fQorICAgIH0KKworICAgIGlmIChtYXJrZXJUYWdzKCkuY29udGFpbnModGFnTmFtZUltcGwpICYm
IHN0eWxlLT5oYXNNYXJrZXJzKCkpIHsKICAgICAgICAgQXRvbWljU3RyaW5nIG1hcmtlclN0YXJ0
SWQoc3R5bGUtPm1hcmtlclN0YXJ0UmVzb3VyY2UoKSk7Ci0gICAgICAgIG1fbWFya2VyU3RhcnQg
PSBnZXRSZW5kZXJTVkdSZXNvdXJjZUJ5SWQ8UmVuZGVyU1ZHUmVzb3VyY2VNYXJrZXI+KGRvY3Vt
ZW50LCBtYXJrZXJTdGFydElkKTsKLSAgICAgICAgaWYgKG1fbWFya2VyU3RhcnQpCisgICAgICAg
IGlmIChzZXRNYXJrZXJTdGFydChnZXRSZW5kZXJTVkdSZXNvdXJjZUJ5SWQ8UmVuZGVyU1ZHUmVz
b3VyY2VNYXJrZXI+KGRvY3VtZW50LCBtYXJrZXJTdGFydElkKSkpCiAgICAgICAgICAgICBmb3Vu
ZFJlc291cmNlcyA9IHRydWU7CiAgICAgICAgIGVsc2UKICAgICAgICAgICAgIHJlZ2lzdGVyUGVu
ZGluZ1Jlc291cmNlKGV4dGVuc2lvbnMsIG1hcmtlclN0YXJ0SWQsIG5vZGUpOwogCiAgICAgICAg
IEF0b21pY1N0cmluZyBtYXJrZXJNaWRJZChzdHlsZS0+bWFya2VyTWlkUmVzb3VyY2UoKSk7Ci0g
ICAgICAgIG1fbWFya2VyTWlkID0gZ2V0UmVuZGVyU1ZHUmVzb3VyY2VCeUlkPFJlbmRlclNWR1Jl
c291cmNlTWFya2VyPihkb2N1bWVudCwgbWFya2VyTWlkSWQpOwotICAgICAgICBpZiAobV9tYXJr
ZXJNaWQpCisgICAgICAgIGlmIChzZXRNYXJrZXJNaWQoZ2V0UmVuZGVyU1ZHUmVzb3VyY2VCeUlk
PFJlbmRlclNWR1Jlc291cmNlTWFya2VyPihkb2N1bWVudCwgbWFya2VyTWlkSWQpKSkKICAgICAg
ICAgICAgIGZvdW5kUmVzb3VyY2VzID0gdHJ1ZTsKICAgICAgICAgZWxzZQogICAgICAgICAgICAg
cmVnaXN0ZXJQZW5kaW5nUmVzb3VyY2UoZXh0ZW5zaW9ucywgbWFya2VyTWlkSWQsIG5vZGUpOwog
CiAgICAgICAgIEF0b21pY1N0cmluZyBtYXJrZXJFbmRJZChzdHlsZS0+bWFya2VyRW5kUmVzb3Vy
Y2UoKSk7Ci0gICAgICAgIG1fbWFya2VyRW5kID0gZ2V0UmVuZGVyU1ZHUmVzb3VyY2VCeUlkPFJl
bmRlclNWR1Jlc291cmNlTWFya2VyPihkb2N1bWVudCwgbWFya2VyRW5kSWQpOwotICAgICAgICBp
ZiAobV9tYXJrZXJFbmQpCisgICAgICAgIGlmIChzZXRNYXJrZXJFbmQoZ2V0UmVuZGVyU1ZHUmVz
b3VyY2VCeUlkPFJlbmRlclNWR1Jlc291cmNlTWFya2VyPihkb2N1bWVudCwgbWFya2VyRW5kSWQp
KSkKICAgICAgICAgICAgIGZvdW5kUmVzb3VyY2VzID0gdHJ1ZTsKICAgICAgICAgZWxzZQogICAg
ICAgICAgICAgcmVnaXN0ZXJQZW5kaW5nUmVzb3VyY2UoZXh0ZW5zaW9ucywgbWFya2VyRW5kSWQs
IG5vZGUpOwogICAgIH0KIAotICAgIGlmIChzdHlsZS0+aGFzRmlsbCgpKSB7Ci0gICAgICAgIGJv
b2wgaGFzUGVuZGluZ1Jlc291cmNlID0gZmFsc2U7Ci0gICAgICAgIEF0b21pY1N0cmluZyBpZDsK
LSAgICAgICAgbV9maWxsID0gcGFpbnRpbmdSZXNvdXJjZUZyb21TVkdQYWludChkb2N1bWVudCwg
c3R5bGUtPmZpbGxQYWludCgpLCBpZCwgaGFzUGVuZGluZ1Jlc291cmNlKTsKLSAgICAgICAgaWYg
KG1fZmlsbCkKLSAgICAgICAgICAgIGZvdW5kUmVzb3VyY2VzID0gdHJ1ZTsKLSAgICAgICAgZWxz
ZSBpZiAoaGFzUGVuZGluZ1Jlc291cmNlKQotICAgICAgICAgICAgcmVnaXN0ZXJQZW5kaW5nUmVz
b3VyY2UoZXh0ZW5zaW9ucywgaWQsIG5vZGUpOwotICAgIH0KKyAgICBpZiAoZmlsbEFuZFN0cm9r
ZVRhZ3MoKS5jb250YWlucyh0YWdOYW1lSW1wbCkpIHsKKyAgICAgICAgaWYgKHN0eWxlLT5oYXNG
aWxsKCkpIHsKKyAgICAgICAgICAgIGJvb2wgaGFzUGVuZGluZ1Jlc291cmNlID0gZmFsc2U7Cisg
ICAgICAgICAgICBBdG9taWNTdHJpbmcgaWQ7CisgICAgICAgICAgICBpZiAoc2V0RmlsbChwYWlu
dGluZ1Jlc291cmNlRnJvbVNWR1BhaW50KGRvY3VtZW50LCBzdHlsZS0+ZmlsbFBhaW50KCksIGlk
LCBoYXNQZW5kaW5nUmVzb3VyY2UpKSkKKyAgICAgICAgICAgICAgICBmb3VuZFJlc291cmNlcyA9
IHRydWU7CisgICAgICAgICAgICBlbHNlIGlmIChoYXNQZW5kaW5nUmVzb3VyY2UpCisgICAgICAg
ICAgICAgICAgcmVnaXN0ZXJQZW5kaW5nUmVzb3VyY2UoZXh0ZW5zaW9ucywgaWQsIG5vZGUpOwor
ICAgICAgICB9CiAKLSAgICBpZiAoc3R5bGUtPmhhc1N0cm9rZSgpKSB7Ci0gICAgICAgIGJvb2wg
aGFzUGVuZGluZ1Jlc291cmNlID0gZmFsc2U7Ci0gICAgICAgIEF0b21pY1N0cmluZyBpZDsKLSAg
ICAgICAgbV9zdHJva2UgPSBwYWludGluZ1Jlc291cmNlRnJvbVNWR1BhaW50KGRvY3VtZW50LCBz
dHlsZS0+c3Ryb2tlUGFpbnQoKSwgaWQsIGhhc1BlbmRpbmdSZXNvdXJjZSk7Ci0gICAgICAgIGlm
IChtX3N0cm9rZSkKLSAgICAgICAgICAgIGZvdW5kUmVzb3VyY2VzID0gdHJ1ZTsKLSAgICAgICAg
ZWxzZSBpZiAoaGFzUGVuZGluZ1Jlc291cmNlKQotICAgICAgICAgICAgcmVnaXN0ZXJQZW5kaW5n
UmVzb3VyY2UoZXh0ZW5zaW9ucywgaWQsIG5vZGUpOworICAgICAgICBpZiAoc3R5bGUtPmhhc1N0
cm9rZSgpKSB7CisgICAgICAgICAgICBib29sIGhhc1BlbmRpbmdSZXNvdXJjZSA9IGZhbHNlOwor
ICAgICAgICAgICAgQXRvbWljU3RyaW5nIGlkOworICAgICAgICAgICAgaWYgKHNldFN0cm9rZShw
YWludGluZ1Jlc291cmNlRnJvbVNWR1BhaW50KGRvY3VtZW50LCBzdHlsZS0+c3Ryb2tlUGFpbnQo
KSwgaWQsIGhhc1BlbmRpbmdSZXNvdXJjZSkpKQorICAgICAgICAgICAgICAgIGZvdW5kUmVzb3Vy
Y2VzID0gdHJ1ZTsKKyAgICAgICAgICAgIGVsc2UgaWYgKGhhc1BlbmRpbmdSZXNvdXJjZSkKKyAg
ICAgICAgICAgICAgICByZWdpc3RlclBlbmRpbmdSZXNvdXJjZShleHRlbnNpb25zLCBpZCwgbm9k
ZSk7CisgICAgICAgIH0KICAgICB9CiAKICAgICByZXR1cm4gZm91bmRSZXNvdXJjZXM7CkBAIC0x
NjYsODEgKzIzNyw5OCBAQCBib29sIFNWR1Jlc291cmNlczo6YnVpbGRDYWNoZWRSZXNvdXJjZXMo
CiAKIHZvaWQgU1ZHUmVzb3VyY2VzOjppbnZhbGlkYXRlQ2xpZW50KFJlbmRlck9iamVjdCogb2Jq
ZWN0KSBjb25zdAogewotICAgIC8vIE9yZGluYXJ5IHJlc291cmNlcwotICAgIGlmIChtX2NsaXBw
ZXIpCi0gICAgICAgIG1fY2xpcHBlci0+aW52YWxpZGF0ZUNsaWVudChvYmplY3QpOworICAgIGlm
ICghbV9jbGlwcGVyRmlsdGVyTWFza2VyRGF0YSAmJiAhbV9tYXJrZXJEYXRhICYmICFtX2ZpbGxT
dHJva2VEYXRhKQorICAgICAgICByZXR1cm47CisKKyAgICBpZiAobV9jbGlwcGVyRmlsdGVyTWFz
a2VyRGF0YSkgeworICAgICAgICBpZiAobV9jbGlwcGVyRmlsdGVyTWFza2VyRGF0YS0+Y2xpcHBl
cikKKyAgICAgICAgICAgIG1fY2xpcHBlckZpbHRlck1hc2tlckRhdGEtPmNsaXBwZXItPmludmFs
aWRhdGVDbGllbnQob2JqZWN0KTsKICNpZiBFTkFCTEUoRklMVEVSUykKLSAgICBpZiAobV9maWx0
ZXIpCi0gICAgICAgIG1fZmlsdGVyLT5pbnZhbGlkYXRlQ2xpZW50KG9iamVjdCk7CisgICAgICAg
IGlmIChtX2NsaXBwZXJGaWx0ZXJNYXNrZXJEYXRhLT5maWx0ZXIpCisgICAgICAgICAgICBtX2Ns
aXBwZXJGaWx0ZXJNYXNrZXJEYXRhLT5maWx0ZXItPmludmFsaWRhdGVDbGllbnQob2JqZWN0KTsK
ICNlbmRpZgotICAgIGlmIChtX21hc2tlcikKLSAgICAgICAgbV9tYXNrZXItPmludmFsaWRhdGVD
bGllbnQob2JqZWN0KTsKLSAgICBpZiAobV9tYXJrZXJTdGFydCkKLSAgICAgICAgbV9tYXJrZXJT
dGFydC0+aW52YWxpZGF0ZUNsaWVudChvYmplY3QpOwotICAgIGlmIChtX21hcmtlck1pZCkKLSAg
ICAgICAgbV9tYXJrZXJNaWQtPmludmFsaWRhdGVDbGllbnQob2JqZWN0KTsKLSAgICBpZiAobV9t
YXJrZXJFbmQpCi0gICAgICAgIG1fbWFya2VyRW5kLT5pbnZhbGlkYXRlQ2xpZW50KG9iamVjdCk7
Ci0KLSAgICAvLyBQYWludCBzZXJ2ZXJzCi0gICAgaWYgKG1fZmlsbCkKLSAgICAgICAgbV9maWxs
LT5pbnZhbGlkYXRlQ2xpZW50KG9iamVjdCk7Ci0gICAgaWYgKG1fc3Ryb2tlKQotICAgICAgICBt
X3N0cm9rZS0+aW52YWxpZGF0ZUNsaWVudChvYmplY3QpOworICAgICAgICBpZiAobV9jbGlwcGVy
RmlsdGVyTWFza2VyRGF0YS0+bWFza2VyKQorICAgICAgICAgICAgbV9jbGlwcGVyRmlsdGVyTWFz
a2VyRGF0YS0+bWFza2VyLT5pbnZhbGlkYXRlQ2xpZW50KG9iamVjdCk7CisgICAgfQorCisgICAg
aWYgKG1fbWFya2VyRGF0YSkgeworICAgICAgICBpZiAobV9tYXJrZXJEYXRhLT5tYXJrZXJTdGFy
dCkKKyAgICAgICAgICAgIG1fbWFya2VyRGF0YS0+bWFya2VyU3RhcnQtPmludmFsaWRhdGVDbGll
bnQob2JqZWN0KTsKKyAgICAgICAgaWYgKG1fbWFya2VyRGF0YS0+bWFya2VyTWlkKQorICAgICAg
ICAgICAgbV9tYXJrZXJEYXRhLT5tYXJrZXJNaWQtPmludmFsaWRhdGVDbGllbnQob2JqZWN0KTsK
KyAgICAgICAgaWYgKG1fbWFya2VyRGF0YS0+bWFya2VyRW5kKQorICAgICAgICAgICAgbV9tYXJr
ZXJEYXRhLT5tYXJrZXJFbmQtPmludmFsaWRhdGVDbGllbnQob2JqZWN0KTsKKyAgICB9CisKKyAg
ICBpZiAobV9maWxsU3Ryb2tlRGF0YSkgeworICAgICAgICBpZiAobV9maWxsU3Ryb2tlRGF0YS0+
ZmlsbCkKKyAgICAgICAgICAgIG1fZmlsbFN0cm9rZURhdGEtPmZpbGwtPmludmFsaWRhdGVDbGll
bnQob2JqZWN0KTsKKyAgICAgICAgaWYgKG1fZmlsbFN0cm9rZURhdGEtPnN0cm9rZSkKKyAgICAg
ICAgICAgIG1fZmlsbFN0cm9rZURhdGEtPnN0cm9rZS0+aW52YWxpZGF0ZUNsaWVudChvYmplY3Qp
OworICAgIH0KIH0KIAogdm9pZCBTVkdSZXNvdXJjZXM6OnJlc291cmNlRGVzdHJveWVkKFJlbmRl
clNWR1Jlc291cmNlQ29udGFpbmVyKiByZXNvdXJjZSkKIHsKICAgICBBU1NFUlQocmVzb3VyY2Up
OworICAgIGlmICghbV9jbGlwcGVyRmlsdGVyTWFza2VyRGF0YSAmJiAhbV9tYXJrZXJEYXRhICYm
ICFtX2ZpbGxTdHJva2VEYXRhKQorICAgICAgICByZXR1cm47CiAKICAgICBzd2l0Y2ggKHJlc291
cmNlLT5yZXNvdXJjZVR5cGUoKSkgewogICAgIGNhc2UgTWFza2VyUmVzb3VyY2VUeXBlOgotICAg
ICAgICBpZiAobV9tYXNrZXIgPT0gcmVzb3VyY2UpIHsKLSAgICAgICAgICAgIG1fbWFza2VyLT5p
bnZhbGlkYXRlQ2xpZW50cygpOwotICAgICAgICAgICAgbV9tYXNrZXIgPSAwOworICAgICAgICBp
ZiAoIW1fY2xpcHBlckZpbHRlck1hc2tlckRhdGEpCisgICAgICAgICAgICBicmVhazsKKyAgICAg
ICAgaWYgKG1fY2xpcHBlckZpbHRlck1hc2tlckRhdGEtPm1hc2tlciA9PSByZXNvdXJjZSkgewor
ICAgICAgICAgICAgbV9jbGlwcGVyRmlsdGVyTWFza2VyRGF0YS0+bWFza2VyLT5pbnZhbGlkYXRl
Q2xpZW50cygpOworICAgICAgICAgICAgbV9jbGlwcGVyRmlsdGVyTWFza2VyRGF0YS0+bWFza2Vy
ID0gMDsKICAgICAgICAgfQogICAgICAgICBicmVhazsKICAgICBjYXNlIE1hcmtlclJlc291cmNl
VHlwZToKLSAgICAgICAgaWYgKG1fbWFya2VyU3RhcnQgPT0gcmVzb3VyY2UpIHsKLSAgICAgICAg
ICAgIG1fbWFya2VyU3RhcnQtPmludmFsaWRhdGVDbGllbnRzKCk7Ci0gICAgICAgICAgICBtX21h
cmtlclN0YXJ0ID0gMDsKKyAgICAgICAgaWYgKCFtX21hcmtlckRhdGEpCisgICAgICAgICAgICBi
cmVhazsKKyAgICAgICAgaWYgKG1fbWFya2VyRGF0YS0+bWFya2VyU3RhcnQgPT0gcmVzb3VyY2Up
IHsKKyAgICAgICAgICAgIG1fbWFya2VyRGF0YS0+bWFya2VyU3RhcnQtPmludmFsaWRhdGVDbGll
bnRzKCk7CisgICAgICAgICAgICBtX21hcmtlckRhdGEtPm1hcmtlclN0YXJ0ID0gMDsKICAgICAg
ICAgfQotCi0gICAgICAgIGlmIChtX21hcmtlck1pZCA9PSByZXNvdXJjZSkgewotICAgICAgICAg
ICAgbV9tYXJrZXJNaWQtPmludmFsaWRhdGVDbGllbnRzKCk7Ci0gICAgICAgICAgICBtX21hcmtl
ck1pZCA9IDA7CisgICAgICAgIGlmIChtX21hcmtlckRhdGEtPm1hcmtlck1pZCA9PSByZXNvdXJj
ZSkgeworICAgICAgICAgICAgbV9tYXJrZXJEYXRhLT5tYXJrZXJNaWQtPmludmFsaWRhdGVDbGll
bnRzKCk7CisgICAgICAgICAgICBtX21hcmtlckRhdGEtPm1hcmtlck1pZCA9IDA7CiAgICAgICAg
IH0KLQotICAgICAgICBpZiAobV9tYXJrZXJFbmQgPT0gcmVzb3VyY2UpIHsKLSAgICAgICAgICAg
IG1fbWFya2VyRW5kLT5pbnZhbGlkYXRlQ2xpZW50cygpOwotICAgICAgICAgICAgbV9tYXJrZXJF
bmQgPSAwOworICAgICAgICBpZiAobV9tYXJrZXJEYXRhLT5tYXJrZXJFbmQgPT0gcmVzb3VyY2Up
IHsKKyAgICAgICAgICAgIG1fbWFya2VyRGF0YS0+bWFya2VyRW5kLT5pbnZhbGlkYXRlQ2xpZW50
cygpOworICAgICAgICAgICAgbV9tYXJrZXJEYXRhLT5tYXJrZXJFbmQgPSAwOwogICAgICAgICB9
CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgUGF0dGVyblJlc291cmNlVHlwZToKICAgICBjYXNl
IExpbmVhckdyYWRpZW50UmVzb3VyY2VUeXBlOgogICAgIGNhc2UgUmFkaWFsR3JhZGllbnRSZXNv
dXJjZVR5cGU6Ci0gICAgICAgIGlmIChtX2ZpbGwgPT0gcmVzb3VyY2UpIHsKLSAgICAgICAgICAg
IG1fZmlsbC0+aW52YWxpZGF0ZUNsaWVudHMoKTsKLSAgICAgICAgICAgIG1fZmlsbCA9IDA7Cisg
ICAgICAgIGlmICghbV9maWxsU3Ryb2tlRGF0YSkKKyAgICAgICAgICAgIGJyZWFrOworICAgICAg
ICBpZiAobV9maWxsU3Ryb2tlRGF0YS0+ZmlsbCA9PSByZXNvdXJjZSkgeworICAgICAgICAgICAg
bV9maWxsU3Ryb2tlRGF0YS0+ZmlsbC0+aW52YWxpZGF0ZUNsaWVudHMoKTsKKyAgICAgICAgICAg
IG1fZmlsbFN0cm9rZURhdGEtPmZpbGwgPSAwOwogICAgICAgICB9Ci0KLSAgICAgICAgaWYgKG1f
c3Ryb2tlID09IHJlc291cmNlKSB7Ci0gICAgICAgICAgICBtX3N0cm9rZS0+aW52YWxpZGF0ZUNs
aWVudHMoKTsKLSAgICAgICAgICAgIG1fc3Ryb2tlID0gMDsKKyAgICAgICAgaWYgKG1fZmlsbFN0
cm9rZURhdGEtPnN0cm9rZSA9PSByZXNvdXJjZSkgeworICAgICAgICAgICAgbV9maWxsU3Ryb2tl
RGF0YS0+c3Ryb2tlLT5pbnZhbGlkYXRlQ2xpZW50cygpOworICAgICAgICAgICAgbV9maWxsU3Ry
b2tlRGF0YS0+c3Ryb2tlID0gMDsKICAgICAgICAgfQogICAgICAgICBicmVhazsKICNpZiBFTkFC
TEUoRklMVEVSUykKICAgICBjYXNlIEZpbHRlclJlc291cmNlVHlwZToKLSAgICAgICAgaWYgKG1f
ZmlsdGVyID09IHJlc291cmNlKSB7Ci0gICAgICAgICAgICBtX2ZpbHRlci0+aW52YWxpZGF0ZUNs
aWVudHMoKTsKLSAgICAgICAgICAgIG1fZmlsdGVyID0gMDsKKyAgICAgICAgaWYgKCFtX2NsaXBw
ZXJGaWx0ZXJNYXNrZXJEYXRhKQorICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGlmIChtX2Ns
aXBwZXJGaWx0ZXJNYXNrZXJEYXRhLT5maWx0ZXIgPT0gcmVzb3VyY2UpIHsKKyAgICAgICAgICAg
IG1fY2xpcHBlckZpbHRlck1hc2tlckRhdGEtPmZpbHRlci0+aW52YWxpZGF0ZUNsaWVudHMoKTsK
KyAgICAgICAgICAgIG1fY2xpcHBlckZpbHRlck1hc2tlckRhdGEtPmZpbHRlciA9IDA7CiAgICAg
ICAgIH0KICAgICAgICAgYnJlYWs7CiAjZW5kaWYKICAgICBjYXNlIENsaXBwZXJSZXNvdXJjZVR5
cGU6Ci0gICAgICAgIGlmIChtX2NsaXBwZXIgPT0gcmVzb3VyY2UpIHsKLSAgICAgICAgICAgIG1f
Y2xpcHBlci0+aW52YWxpZGF0ZUNsaWVudHMoKTsKLSAgICAgICAgICAgIG1fY2xpcHBlciA9IDA7
CisgICAgICAgIGlmICghbV9jbGlwcGVyRmlsdGVyTWFza2VyRGF0YSkKKyAgICAgICAgICAgIGJy
ZWFrOyAKKyAgICAgICAgaWYgKG1fY2xpcHBlckZpbHRlck1hc2tlckRhdGEtPmNsaXBwZXIgPT0g
cmVzb3VyY2UpIHsKKyAgICAgICAgICAgIG1fY2xpcHBlckZpbHRlck1hc2tlckRhdGEtPmNsaXBw
ZXItPmludmFsaWRhdGVDbGllbnRzKCk7CisgICAgICAgICAgICBtX2NsaXBwZXJGaWx0ZXJNYXNr
ZXJEYXRhLT5jbGlwcGVyID0gMDsKICAgICAgICAgfQogICAgICAgICBicmVhazsKICAgICBjYXNl
IFNvbGlkQ29sb3JSZXNvdXJjZVR5cGU6CkBAIC0yNTAsNzcgKzMzOCwxODkgQEAgdm9pZCBTVkdS
ZXNvdXJjZXM6OnJlc291cmNlRGVzdHJveWVkKFJlbgogCiB2b2lkIFNWR1Jlc291cmNlczo6YnVp
bGRTZXRPZlJlc291cmNlcyhIYXNoU2V0PFJlbmRlclNWR1Jlc291cmNlQ29udGFpbmVyKj4mIHNl
dCkKIHsKLSAgICAvLyBPcmRpbmFyeSByZXNvdXJjZXMKLSAgICBpZiAobV9jbGlwcGVyKQotICAg
ICAgICBzZXQuYWRkKG1fY2xpcHBlcik7CisgICAgaWYgKCFtX2NsaXBwZXJGaWx0ZXJNYXNrZXJE
YXRhICYmICFtX21hcmtlckRhdGEgJiYgIW1fZmlsbFN0cm9rZURhdGEpCisgICAgICAgIHJldHVy
bjsKKworICAgIGlmIChtX2NsaXBwZXJGaWx0ZXJNYXNrZXJEYXRhKSB7CisgICAgICAgIGlmICht
X2NsaXBwZXJGaWx0ZXJNYXNrZXJEYXRhLT5jbGlwcGVyKQorICAgICAgICAgICAgc2V0LmFkZCht
X2NsaXBwZXJGaWx0ZXJNYXNrZXJEYXRhLT5jbGlwcGVyKTsKICNpZiBFTkFCTEUoRklMVEVSUykK
LSAgICBpZiAobV9maWx0ZXIpCi0gICAgICAgIHNldC5hZGQobV9maWx0ZXIpOworICAgICAgICBp
ZiAobV9jbGlwcGVyRmlsdGVyTWFza2VyRGF0YS0+ZmlsdGVyKQorICAgICAgICAgICAgc2V0LmFk
ZChtX2NsaXBwZXJGaWx0ZXJNYXNrZXJEYXRhLT5maWx0ZXIpOwogI2VuZGlmCi0gICAgaWYgKG1f
bWFya2VyU3RhcnQpCi0gICAgICAgIHNldC5hZGQobV9tYXJrZXJTdGFydCk7Ci0gICAgaWYgKG1f
bWFya2VyTWlkKQotICAgICAgICBzZXQuYWRkKG1fbWFya2VyTWlkKTsKLSAgICBpZiAobV9tYXJr
ZXJFbmQpCi0gICAgICAgIHNldC5hZGQobV9tYXJrZXJFbmQpOwotICAgIGlmIChtX21hc2tlcikK
LSAgICAgICAgc2V0LmFkZChtX21hc2tlcik7Ci0KLSAgICAvLyBQYWludCBzZXJ2ZXJzIAotICAg
IGlmIChtX2ZpbGwpCi0gICAgICAgIHNldC5hZGQobV9maWxsKTsKLSAgICBpZiAobV9zdHJva2Up
Ci0gICAgICAgIHNldC5hZGQobV9zdHJva2UpOworICAgICAgICBpZiAobV9jbGlwcGVyRmlsdGVy
TWFza2VyRGF0YS0+bWFza2VyKQorICAgICAgICAgICAgc2V0LmFkZChtX2NsaXBwZXJGaWx0ZXJN
YXNrZXJEYXRhLT5tYXNrZXIpOworICAgIH0KKworICAgIGlmIChtX21hcmtlckRhdGEpIHsKKyAg
ICAgICAgaWYgKG1fbWFya2VyRGF0YS0+bWFya2VyU3RhcnQpCisgICAgICAgICAgICBzZXQuYWRk
KG1fbWFya2VyRGF0YS0+bWFya2VyU3RhcnQpOworICAgICAgICBpZiAobV9tYXJrZXJEYXRhLT5t
YXJrZXJNaWQpCisgICAgICAgICAgICBzZXQuYWRkKG1fbWFya2VyRGF0YS0+bWFya2VyTWlkKTsK
KyAgICAgICAgaWYgKG1fbWFya2VyRGF0YS0+bWFya2VyRW5kKQorICAgICAgICAgICAgc2V0LmFk
ZChtX21hcmtlckRhdGEtPm1hcmtlckVuZCk7CisgICAgfQorCisgICAgaWYgKG1fZmlsbFN0cm9r
ZURhdGEpIHsKKyAgICAgICAgaWYgKG1fZmlsbFN0cm9rZURhdGEtPmZpbGwpCisgICAgICAgICAg
ICBzZXQuYWRkKG1fZmlsbFN0cm9rZURhdGEtPmZpbGwpOworICAgICAgICBpZiAobV9maWxsU3Ry
b2tlRGF0YS0+c3Ryb2tlKQorICAgICAgICAgICAgc2V0LmFkZChtX2ZpbGxTdHJva2VEYXRhLT5z
dHJva2UpOworICAgIH0KK30KKworYm9vbCBTVkdSZXNvdXJjZXM6OnNldENsaXBwZXIoUmVuZGVy
U1ZHUmVzb3VyY2VDbGlwcGVyKiBjbGlwcGVyKQoreworICAgIGlmICghY2xpcHBlcikKKyAgICAg
ICAgcmV0dXJuIGZhbHNlOworCisgICAgaWYgKCFtX2NsaXBwZXJGaWx0ZXJNYXNrZXJEYXRhKQor
ICAgICAgICBtX2NsaXBwZXJGaWx0ZXJNYXNrZXJEYXRhID0gQ2xpcHBlckZpbHRlck1hc2tlckRh
dGE6OmNyZWF0ZSgpOworCisgICAgbV9jbGlwcGVyRmlsdGVyTWFza2VyRGF0YS0+Y2xpcHBlciA9
IGNsaXBwZXI7CisgICAgcmV0dXJuIHRydWU7CiB9CiAKIHZvaWQgU1ZHUmVzb3VyY2VzOjpyZXNl
dENsaXBwZXIoKQogewotICAgIEFTU0VSVChtX2NsaXBwZXIpOwotICAgIG1fY2xpcHBlciA9IDA7
CisgICAgQVNTRVJUKG1fY2xpcHBlckZpbHRlck1hc2tlckRhdGEpOworICAgIEFTU0VSVChtX2Ns
aXBwZXJGaWx0ZXJNYXNrZXJEYXRhLT5jbGlwcGVyKTsKKyAgICBtX2NsaXBwZXJGaWx0ZXJNYXNr
ZXJEYXRhLT5jbGlwcGVyID0gMDsKIH0KIAogI2lmIEVOQUJMRShGSUxURVJTKQorYm9vbCBTVkdS
ZXNvdXJjZXM6OnNldEZpbHRlcihSZW5kZXJTVkdSZXNvdXJjZUZpbHRlciogZmlsdGVyKQorewor
ICAgIGlmICghZmlsdGVyKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBpZiAoIW1fY2xp
cHBlckZpbHRlck1hc2tlckRhdGEpCisgICAgICAgIG1fY2xpcHBlckZpbHRlck1hc2tlckRhdGEg
PSBDbGlwcGVyRmlsdGVyTWFza2VyRGF0YTo6Y3JlYXRlKCk7CisKKyAgICBtX2NsaXBwZXJGaWx0
ZXJNYXNrZXJEYXRhLT5maWx0ZXIgPSBmaWx0ZXI7CisgICAgcmV0dXJuIHRydWU7Cit9CisKIHZv
aWQgU1ZHUmVzb3VyY2VzOjpyZXNldEZpbHRlcigpCiB7Ci0gICAgQVNTRVJUKG1fZmlsdGVyKTsK
LSAgICBtX2ZpbHRlciA9IDA7CisgICAgQVNTRVJUKG1fY2xpcHBlckZpbHRlck1hc2tlckRhdGEp
OworICAgIEFTU0VSVChtX2NsaXBwZXJGaWx0ZXJNYXNrZXJEYXRhLT5maWx0ZXIpOworICAgIG1f
Y2xpcHBlckZpbHRlck1hc2tlckRhdGEtPmZpbHRlciA9IDA7CiB9CiAjZW5kaWYKIAorYm9vbCBT
VkdSZXNvdXJjZXM6OnNldE1hcmtlclN0YXJ0KFJlbmRlclNWR1Jlc291cmNlTWFya2VyKiBtYXJr
ZXJTdGFydCkKK3sKKyAgICBpZiAoIW1hcmtlclN0YXJ0KQorICAgICAgICByZXR1cm4gZmFsc2U7
CisKKyAgICBpZiAoIW1fbWFya2VyRGF0YSkKKyAgICAgICAgbV9tYXJrZXJEYXRhID0gTWFya2Vy
RGF0YTo6Y3JlYXRlKCk7CisKKyAgICBtX21hcmtlckRhdGEtPm1hcmtlclN0YXJ0ID0gbWFya2Vy
U3RhcnQ7CisgICAgcmV0dXJuIHRydWU7Cit9CisKIHZvaWQgU1ZHUmVzb3VyY2VzOjpyZXNldE1h
cmtlclN0YXJ0KCkKIHsKLSAgICBBU1NFUlQobV9tYXJrZXJTdGFydCk7Ci0gICAgbV9tYXJrZXJT
dGFydCA9IDA7CisgICAgQVNTRVJUKG1fbWFya2VyRGF0YSk7CisgICAgQVNTRVJUKG1fbWFya2Vy
RGF0YS0+bWFya2VyU3RhcnQpOworICAgIG1fbWFya2VyRGF0YS0+bWFya2VyU3RhcnQgPSAwOwor
fQorCitib29sIFNWR1Jlc291cmNlczo6c2V0TWFya2VyTWlkKFJlbmRlclNWR1Jlc291cmNlTWFy
a2VyKiBtYXJrZXJNaWQpCit7CisgICAgaWYgKCFtYXJrZXJNaWQpCisgICAgICAgIHJldHVybiBm
YWxzZTsKKworICAgIGlmICghbV9tYXJrZXJEYXRhKQorICAgICAgICBtX21hcmtlckRhdGEgPSBN
YXJrZXJEYXRhOjpjcmVhdGUoKTsKKworICAgIG1fbWFya2VyRGF0YS0+bWFya2VyTWlkID0gbWFy
a2VyTWlkOworICAgIHJldHVybiB0cnVlOwogfQogCiB2b2lkIFNWR1Jlc291cmNlczo6cmVzZXRN
YXJrZXJNaWQoKQogewotICAgIEFTU0VSVChtX21hcmtlck1pZCk7Ci0gICAgbV9tYXJrZXJNaWQg
PSAwOworICAgIEFTU0VSVChtX21hcmtlckRhdGEpOworICAgIEFTU0VSVChtX21hcmtlckRhdGEt
Pm1hcmtlck1pZCk7CisgICAgbV9tYXJrZXJEYXRhLT5tYXJrZXJNaWQgPSAwOworfQorCitib29s
IFNWR1Jlc291cmNlczo6c2V0TWFya2VyRW5kKFJlbmRlclNWR1Jlc291cmNlTWFya2VyKiBtYXJr
ZXJFbmQpCit7CisgICAgaWYgKCFtYXJrZXJFbmQpCisgICAgICAgIHJldHVybiBmYWxzZTsKKwor
ICAgIGlmICghbV9tYXJrZXJEYXRhKQorICAgICAgICBtX21hcmtlckRhdGEgPSBNYXJrZXJEYXRh
OjpjcmVhdGUoKTsKKworICAgIG1fbWFya2VyRGF0YS0+bWFya2VyRW5kID0gbWFya2VyRW5kOwor
ICAgIHJldHVybiB0cnVlOwogfQogCiB2b2lkIFNWR1Jlc291cmNlczo6cmVzZXRNYXJrZXJFbmQo
KQogewotICAgIEFTU0VSVChtX21hcmtlckVuZCk7Ci0gICAgbV9tYXJrZXJFbmQgPSAwOworICAg
IEFTU0VSVChtX21hcmtlckRhdGEpOworICAgIEFTU0VSVChtX21hcmtlckRhdGEtPm1hcmtlckVu
ZCk7CisgICAgbV9tYXJrZXJEYXRhLT5tYXJrZXJFbmQgPSAwOworfQorCitib29sIFNWR1Jlc291
cmNlczo6c2V0TWFza2VyKFJlbmRlclNWR1Jlc291cmNlTWFza2VyKiBtYXNrZXIpCit7CisgICAg
aWYgKCFtYXNrZXIpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIGlmICghbV9jbGlwcGVy
RmlsdGVyTWFza2VyRGF0YSkKKyAgICAgICAgbV9jbGlwcGVyRmlsdGVyTWFza2VyRGF0YSA9IENs
aXBwZXJGaWx0ZXJNYXNrZXJEYXRhOjpjcmVhdGUoKTsKKworICAgIG1fY2xpcHBlckZpbHRlck1h
c2tlckRhdGEtPm1hc2tlciA9IG1hc2tlcjsKKyAgICByZXR1cm4gdHJ1ZTsKIH0KIAogdm9pZCBT
VkdSZXNvdXJjZXM6OnJlc2V0TWFza2VyKCkKIHsKLSAgICBBU1NFUlQobV9tYXNrZXIpOwotICAg
IG1fbWFza2VyID0gMDsKKyAgICBBU1NFUlQobV9jbGlwcGVyRmlsdGVyTWFza2VyRGF0YSk7Cisg
ICAgQVNTRVJUKG1fY2xpcHBlckZpbHRlck1hc2tlckRhdGEtPm1hc2tlcik7CisgICAgbV9jbGlw
cGVyRmlsdGVyTWFza2VyRGF0YS0+bWFza2VyID0gMDsKK30KKworYm9vbCBTVkdSZXNvdXJjZXM6
OnNldEZpbGwoUmVuZGVyU1ZHUmVzb3VyY2VDb250YWluZXIqIGZpbGwpCit7CisgICAgaWYgKCFm
aWxsKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBpZiAoIW1fZmlsbFN0cm9rZURhdGEp
CisgICAgICAgIG1fZmlsbFN0cm9rZURhdGEgPSBGaWxsU3Ryb2tlRGF0YTo6Y3JlYXRlKCk7CisK
KyAgICBtX2ZpbGxTdHJva2VEYXRhLT5maWxsID0gZmlsbDsKKyAgICByZXR1cm4gdHJ1ZTsKIH0K
IAogdm9pZCBTVkdSZXNvdXJjZXM6OnJlc2V0RmlsbCgpCiB7Ci0gICAgQVNTRVJUKG1fZmlsbCk7
Ci0gICAgbV9maWxsID0gMDsKKyAgICBBU1NFUlQobV9maWxsU3Ryb2tlRGF0YSk7CisgICAgQVNT
RVJUKG1fZmlsbFN0cm9rZURhdGEtPmZpbGwpOworICAgIG1fZmlsbFN0cm9rZURhdGEtPmZpbGwg
PSAwOworfQorCitib29sIFNWR1Jlc291cmNlczo6c2V0U3Ryb2tlKFJlbmRlclNWR1Jlc291cmNl
Q29udGFpbmVyKiBzdHJva2UpCit7CisgICAgaWYgKCFzdHJva2UpCisgICAgICAgIHJldHVybiBm
YWxzZTsKKworICAgIGlmICghbV9maWxsU3Ryb2tlRGF0YSkKKyAgICAgICAgbV9maWxsU3Ryb2tl
RGF0YSA9IEZpbGxTdHJva2VEYXRhOjpjcmVhdGUoKTsKKworICAgIG1fZmlsbFN0cm9rZURhdGEt
PnN0cm9rZSA9IHN0cm9rZTsKKyAgICByZXR1cm4gdHJ1ZTsKIH0KIAogdm9pZCBTVkdSZXNvdXJj
ZXM6OnJlc2V0U3Ryb2tlKCkKIHsKLSAgICBBU1NFUlQobV9zdHJva2UpOwotICAgIG1fc3Ryb2tl
ID0gMDsKKyAgICBBU1NFUlQobV9maWxsU3Ryb2tlRGF0YSk7CisgICAgQVNTRVJUKG1fZmlsbFN0
cm9rZURhdGEtPnN0cm9rZSk7CisgICAgbV9maWxsU3Ryb2tlRGF0YS0+c3Ryb2tlID0gMDsKIH0K
IAogI2lmbmRlZiBOREVCVUcKQEAgLTMzNCwyNCArNTM0LDMyIEBAIHZvaWQgU1ZHUmVzb3VyY2Vz
OjpkdW1wKGNvbnN0IFJlbmRlck9iamUKICAgICBvYmplY3QtPm5vZGUoKS0+c2hvd1RyZWVGb3JU
aGlzKCk7CiAKICAgICBmcHJpbnRmKHN0ZGVyciwgIlxuIHwgTGlzdCBvZiByZXNvdXJjZXM6XG4i
KTsKLSAgICBpZiAobV9jbGlwcGVyKQotICAgICAgICBmcHJpbnRmKHN0ZGVyciwgIiB8LT4gQ2xp
cHBlciAgICA6ICVwIChub2RlPSVwKVxuIiwgbV9jbGlwcGVyLCBtX2NsaXBwZXItPm5vZGUoKSk7
CisgICAgaWYgKG1fY2xpcHBlckZpbHRlck1hc2tlckRhdGEpIHsKKyAgICAgICAgaWYgKFJlbmRl
clNWR1Jlc291cmNlQ2xpcHBlciogY2xpcHBlciA9IG1fY2xpcHBlckZpbHRlck1hc2tlckRhdGEt
PmNsaXBwZXIpCisgICAgICAgICAgICBmcHJpbnRmKHN0ZGVyciwgIiB8LT4gQ2xpcHBlciAgICA6
ICVwIChub2RlPSVwKVxuIiwgY2xpcHBlciwgY2xpcHBlci0+bm9kZSgpKTsKICNpZiBFTkFCTEUo
RklMVEVSUykKLSAgICBpZiAobV9maWx0ZXIpCi0gICAgICAgIGZwcmludGYoc3RkZXJyLCAiIHwt
PiBGaWx0ZXIgICAgIDogJXAgKG5vZGU9JXApXG4iLCBtX2ZpbHRlciwgbV9maWx0ZXItPm5vZGUo
KSk7CisgICAgICAgIGlmIChSZW5kZXJTVkdSZXNvdXJjZUZpbHRlciogZmlsdGVyID0gbV9jbGlw
cGVyRmlsdGVyTWFza2VyRGF0YS0+ZmlsdGVyKQorICAgICAgICAgICAgZnByaW50ZihzdGRlcnIs
ICIgfC0+IEZpbHRlciAgICAgOiAlcCAobm9kZT0lcClcbiIsIGZpbHRlciwgZmlsdGVyLT5ub2Rl
KCkpOwogI2VuZGlmCi0gICAgaWYgKG1fbWFya2VyU3RhcnQpCi0gICAgICAgIGZwcmludGYoc3Rk
ZXJyLCAiIHwtPiBNYXJrZXJTdGFydDogJXAgKG5vZGU9JXApXG4iLCBtX21hcmtlclN0YXJ0LCBt
X21hcmtlclN0YXJ0LT5ub2RlKCkpOwotICAgIGlmIChtX21hcmtlck1pZCkKLSAgICAgICAgZnBy
aW50ZihzdGRlcnIsICIgfC0+IE1hcmtlck1pZCAgOiAlcCAobm9kZT0lcClcbiIsIG1fbWFya2Vy
TWlkLCBtX21hcmtlck1pZC0+bm9kZSgpKTsKLSAgICBpZiAobV9tYXJrZXJFbmQpCi0gICAgICAg
IGZwcmludGYoc3RkZXJyLCAiIHwtPiBNYXJrZXJFbmQgIDogJXAgKG5vZGU9JXApXG4iLCBtX21h
cmtlckVuZCwgbV9tYXJrZXJFbmQtPm5vZGUoKSk7Ci0gICAgaWYgKG1fbWFza2VyKQotICAgICAg
ICBmcHJpbnRmKHN0ZGVyciwgIiB8LT4gTWFza2VyICAgICA6ICVwIChub2RlPSVwKVxuIiwgbV9t
YXNrZXIsIG1fbWFza2VyLT5ub2RlKCkpOwotICAgIGlmIChtX2ZpbGwpCi0gICAgICAgIGZwcmlu
dGYoc3RkZXJyLCAiIHwtPiBGaWxsICAgICAgIDogJXAgKG5vZGU9JXApXG4iLCBtX2ZpbGwsIG1f
ZmlsbC0+bm9kZSgpKTsKLSAgICBpZiAobV9zdHJva2UpCi0gICAgICAgIGZwcmludGYoc3RkZXJy
LCAiIHwtPiBTdHJva2UgICAgIDogJXAgKG5vZGU9JXApXG4iLCBtX3N0cm9rZSwgbV9zdHJva2Ut
Pm5vZGUoKSk7CisgICAgICAgIGlmIChSZW5kZXJTVkdSZXNvdXJjZU1hc2tlciogbWFza2VyID0g
bV9jbGlwcGVyRmlsdGVyTWFza2VyRGF0YS0+bWFza2VyKQorICAgICAgICAgICAgZnByaW50Zihz
dGRlcnIsICIgfC0+IE1hc2tlciAgICAgOiAlcCAobm9kZT0lcClcbiIsIG1hc2tlciwgbWFza2Vy
LT5ub2RlKCkpOworICAgIH0KKworICAgIGlmIChtX21hcmtlckRhdGEpIHsKKyAgICAgICAgaWYg
KFJlbmRlclNWR1Jlc291cmNlTWFya2VyKiBtYXJrZXJTdGFydCA9IG1fbWFya2VyRGF0YS0+bWFy
a2VyU3RhcnQpCisgICAgICAgICAgICBmcHJpbnRmKHN0ZGVyciwgIiB8LT4gTWFya2VyU3RhcnQ6
ICVwIChub2RlPSVwKVxuIiwgbWFya2VyU3RhcnQsIG1hcmtlclN0YXJ0LT5ub2RlKCkpOworICAg
ICAgICBpZiAoUmVuZGVyU1ZHUmVzb3VyY2VNYXJrZXIqIG1hcmtlck1pZCA9IG1fbWFya2VyRGF0
YS0+bWFya2VyTWlkKQorICAgICAgICAgICAgZnByaW50ZihzdGRlcnIsICIgfC0+IE1hcmtlck1p
ZCAgOiAlcCAobm9kZT0lcClcbiIsIG1hcmtlck1pZCwgbWFya2VyTWlkLT5ub2RlKCkpOworICAg
ICAgICBpZiAoUmVuZGVyU1ZHUmVzb3VyY2VNYXJrZXIqIG1hcmtlckVuZCA9IG1fbWFya2VyRGF0
YS0+bWFya2VyRW5kKQorICAgICAgICAgICAgZnByaW50ZihzdGRlcnIsICIgfC0+IE1hcmtlckVu
ZCAgOiAlcCAobm9kZT0lcClcbiIsIG1hcmtlckVuZCwgbWFya2VyRW5kLT5ub2RlKCkpOworICAg
IH0KKworICAgIGlmIChtX2ZpbGxTdHJva2VEYXRhKSB7CisgICAgICAgIGlmIChSZW5kZXJTVkdS
ZXNvdXJjZUNvbnRhaW5lciogZmlsbCA9IG1fZmlsbFN0cm9rZURhdGEtPmZpbGwpCisgICAgICAg
ICAgICBmcHJpbnRmKHN0ZGVyciwgIiB8LT4gRmlsbCAgICAgICA6ICVwIChub2RlPSVwKVxuIiwg
ZmlsbCwgZmlsbC0+bm9kZSgpKTsKKyAgICAgICAgaWYgKFJlbmRlclNWR1Jlc291cmNlQ29udGFp
bmVyKiBzdHJva2UgPSBtX2ZpbGxTdHJva2VEYXRhLT5zdHJva2UpCisgICAgICAgICAgICBmcHJp
bnRmKHN0ZGVyciwgIiB8LT4gU3Ryb2tlICAgICA6ICVwIChub2RlPSVwKVxuIiwgc3Ryb2tlLCBz
dHJva2UtPm5vZGUoKSk7CisgICAgfQogfQogI2VuZGlmCiAKSW5kZXg6IFdlYkNvcmUvcmVuZGVy
aW5nL1NWR1Jlc291cmNlcy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcmVuZGVyaW5nL1NWR1Jl
c291cmNlcy5oCShyZXZpc2lvbiA2NDMzOSkKKysrIFdlYkNvcmUvcmVuZGVyaW5nL1NWR1Jlc291
cmNlcy5oCSh3b3JraW5nIGNvcHkpCkBAIC0yMyw2ICsyMyw4IEBACiAjaWYgRU5BQkxFKFNWRykK
ICNpbmNsdWRlIDx3dGYvSGFzaFNldC5oPgogI2luY2x1ZGUgPHd0Zi9Ob25jb3B5YWJsZS5oPgor
I2luY2x1ZGUgPHd0Zi9Pd25QdHIuaD4KKyNpbmNsdWRlIDx3dGYvUGFzc093blB0ci5oPgogCiBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAKQEAgLTQzLDE4ICs0NSwxOCBAQCBwdWJsaWM6CiAgICAgYm9v
bCBidWlsZENhY2hlZFJlc291cmNlcyhjb25zdCBSZW5kZXJPYmplY3QqLCBjb25zdCBTVkdSZW5k
ZXJTdHlsZSopOwogCiAgICAgLy8gT3JkaW5hcnkgcmVzb3VyY2VzCi0gICAgUmVuZGVyU1ZHUmVz
b3VyY2VDbGlwcGVyKiBjbGlwcGVyKCkgY29uc3QgeyByZXR1cm4gbV9jbGlwcGVyOyB9CisgICAg
UmVuZGVyU1ZHUmVzb3VyY2VDbGlwcGVyKiBjbGlwcGVyKCkgY29uc3QgeyByZXR1cm4gbV9jbGlw
cGVyRmlsdGVyTWFza2VyRGF0YSA/IG1fY2xpcHBlckZpbHRlck1hc2tlckRhdGEtPmNsaXBwZXIg
OiAwOyB9CiAjaWYgRU5BQkxFKEZJTFRFUlMpCi0gICAgUmVuZGVyU1ZHUmVzb3VyY2VGaWx0ZXIq
IGZpbHRlcigpIGNvbnN0IHsgcmV0dXJuIG1fZmlsdGVyOyB9CisgICAgUmVuZGVyU1ZHUmVzb3Vy
Y2VGaWx0ZXIqIGZpbHRlcigpIGNvbnN0IHsgcmV0dXJuIG1fY2xpcHBlckZpbHRlck1hc2tlckRh
dGEgPyBtX2NsaXBwZXJGaWx0ZXJNYXNrZXJEYXRhLT5maWx0ZXIgOiAwOyB9CiAjZW5kaWYKLSAg
ICBSZW5kZXJTVkdSZXNvdXJjZU1hcmtlciogbWFya2VyU3RhcnQoKSBjb25zdCB7IHJldHVybiBt
X21hcmtlclN0YXJ0OyB9Ci0gICAgUmVuZGVyU1ZHUmVzb3VyY2VNYXJrZXIqIG1hcmtlck1pZCgp
IGNvbnN0IHsgcmV0dXJuIG1fbWFya2VyTWlkOyB9Ci0gICAgUmVuZGVyU1ZHUmVzb3VyY2VNYXJr
ZXIqIG1hcmtlckVuZCgpIGNvbnN0IHsgcmV0dXJuIG1fbWFya2VyRW5kOyB9Ci0gICAgUmVuZGVy
U1ZHUmVzb3VyY2VNYXNrZXIqIG1hc2tlcigpIGNvbnN0IHsgcmV0dXJuIG1fbWFza2VyOyB9Cisg
ICAgUmVuZGVyU1ZHUmVzb3VyY2VNYXJrZXIqIG1hcmtlclN0YXJ0KCkgY29uc3QgeyByZXR1cm4g
bV9tYXJrZXJEYXRhID8gbV9tYXJrZXJEYXRhLT5tYXJrZXJTdGFydCA6IDA7IH0KKyAgICBSZW5k
ZXJTVkdSZXNvdXJjZU1hcmtlciogbWFya2VyTWlkKCkgY29uc3QgeyByZXR1cm4gbV9tYXJrZXJE
YXRhID8gbV9tYXJrZXJEYXRhLT5tYXJrZXJNaWQgOiAwOyB9CisgICAgUmVuZGVyU1ZHUmVzb3Vy
Y2VNYXJrZXIqIG1hcmtlckVuZCgpIGNvbnN0IHsgcmV0dXJuIG1fbWFya2VyRGF0YSA/IG1fbWFy
a2VyRGF0YS0+bWFya2VyRW5kIDogMDsgfQorICAgIFJlbmRlclNWR1Jlc291cmNlTWFza2VyKiBt
YXNrZXIoKSBjb25zdCB7IHJldHVybiBtX2NsaXBwZXJGaWx0ZXJNYXNrZXJEYXRhID8gbV9jbGlw
cGVyRmlsdGVyTWFza2VyRGF0YS0+bWFza2VyIDogMDsgfQogCiAgICAgLy8gUGFpbnQgc2VydmVy
cwotICAgIFJlbmRlclNWR1Jlc291cmNlQ29udGFpbmVyKiBmaWxsKCkgY29uc3QgeyByZXR1cm4g
bV9maWxsOyB9Ci0gICAgUmVuZGVyU1ZHUmVzb3VyY2VDb250YWluZXIqIHN0cm9rZSgpIGNvbnN0
IHsgcmV0dXJuIG1fc3Ryb2tlOyB9CisgICAgUmVuZGVyU1ZHUmVzb3VyY2VDb250YWluZXIqIGZp
bGwoKSBjb25zdCB7IHJldHVybiBtX2ZpbGxTdHJva2VEYXRhID8gbV9maWxsU3Ryb2tlRGF0YS0+
ZmlsbCA6IDA7IH0KKyAgICBSZW5kZXJTVkdSZXNvdXJjZUNvbnRhaW5lciogc3Ryb2tlKCkgY29u
c3QgeyByZXR1cm4gbV9maWxsU3Ryb2tlRGF0YSA/IG1fZmlsbFN0cm9rZURhdGEtPnN0cm9rZSA6
IDA7IH0KIAogICAgIHZvaWQgYnVpbGRTZXRPZlJlc291cmNlcyhIYXNoU2V0PFJlbmRlclNWR1Jl
c291cmNlQ29udGFpbmVyKj4mKTsKIApAQCAtODIsMTkgKzg0LDg1IEBAIHByaXZhdGU6CiAgICAg
dm9pZCByZXNldFN0cm9rZSgpOwogCiBwcml2YXRlOgotICAgIC8vIE9yZGluYXJ5IHJlc291cmNl
cwotICAgIFJlbmRlclNWR1Jlc291cmNlQ2xpcHBlciogbV9jbGlwcGVyOworICAgIGJvb2wgc2V0
Q2xpcHBlcihSZW5kZXJTVkdSZXNvdXJjZUNsaXBwZXIqKTsKICNpZiBFTkFCTEUoRklMVEVSUykK
LSAgICBSZW5kZXJTVkdSZXNvdXJjZUZpbHRlciogbV9maWx0ZXI7CisgICAgYm9vbCBzZXRGaWx0
ZXIoUmVuZGVyU1ZHUmVzb3VyY2VGaWx0ZXIqKTsKICNlbmRpZgotICAgIFJlbmRlclNWR1Jlc291
cmNlTWFya2VyKiBtX21hcmtlclN0YXJ0OwotICAgIFJlbmRlclNWR1Jlc291cmNlTWFya2VyKiBt
X21hcmtlck1pZDsKLSAgICBSZW5kZXJTVkdSZXNvdXJjZU1hcmtlciogbV9tYXJrZXJFbmQ7Ci0g
ICAgUmVuZGVyU1ZHUmVzb3VyY2VNYXNrZXIqIG1fbWFza2VyOworICAgIGJvb2wgc2V0TWFya2Vy
U3RhcnQoUmVuZGVyU1ZHUmVzb3VyY2VNYXJrZXIqKTsKKyAgICBib29sIHNldE1hcmtlck1pZChS
ZW5kZXJTVkdSZXNvdXJjZU1hcmtlciopOworICAgIGJvb2wgc2V0TWFya2VyRW5kKFJlbmRlclNW
R1Jlc291cmNlTWFya2VyKik7CisgICAgYm9vbCBzZXRNYXNrZXIoUmVuZGVyU1ZHUmVzb3VyY2VN
YXNrZXIqKTsKKyAgICBib29sIHNldEZpbGwoUmVuZGVyU1ZHUmVzb3VyY2VDb250YWluZXIqKTsK
KyAgICBib29sIHNldFN0cm9rZShSZW5kZXJTVkdSZXNvdXJjZUNvbnRhaW5lciopOworCisgICAg
Ly8gRnJvbSBTVkcgMS4xIDJuZCBFZGl0aW9uCisgICAgLy8gY2xpcHBlcjogJ2NvbnRhaW5lciBl
bGVtZW50cycgYW5kICdncmFwaGljcyBlbGVtZW50cycKKyAgICAvLyBmaWx0ZXI6ICAnY29udGFp
bmVyIGVsZW1lbnRzJyBhbmQgJ2dyYXBoaWNzIGVsZW1lbnRzJworICAgIC8vIG1hc2tlcjogICdj
b250YWluZXIgZWxlbWVudHMnIGFuZCAnZ3JhcGhpY3MgZWxlbWVudHMnCisgICAgLy8gLT4gYSwg
Y2lyY2xlLCBkZWZzLCBlbGxpcHNlLCBnbHlwaCwgZywgaW1hZ2UsIGxpbmUsIG1hcmtlciwgbWFz
aywgbWlzc2luZy1nbHlwaCwgcGF0aCwgcGF0dGVybiwgcG9seWdvbiwgcG9seWxpbmUsIHJlY3Qs
IHN2Zywgc3dpdGNoLCBzeW1ib2wsIHRleHQsIHVzZQorICAgIHN0cnVjdCBDbGlwcGVyRmlsdGVy
TWFza2VyRGF0YSB7CisgICAgICAgIENsaXBwZXJGaWx0ZXJNYXNrZXJEYXRhKCkKKyAgICAgICAg
ICAgIDogY2xpcHBlcigwKQorICAgICAgICAgICAgLCBmaWx0ZXIoMCkKKyAgICAgICAgICAgICwg
bWFza2VyKDApCisgICAgICAgIHsKKyAgICAgICAgfQorCisgICAgICAgIHN0YXRpYyBQYXNzT3du
UHRyPENsaXBwZXJGaWx0ZXJNYXNrZXJEYXRhPiBjcmVhdGUoKQorICAgICAgICB7CisgICAgICAg
ICAgICByZXR1cm4gbmV3IENsaXBwZXJGaWx0ZXJNYXNrZXJEYXRhOworICAgICAgICB9CiAKLSAg
ICAvLyBQYWludCBzZXJ2ZXJzCi0gICAgUmVuZGVyU1ZHUmVzb3VyY2VDb250YWluZXIqIG1fZmls
bDsKLSAgICBSZW5kZXJTVkdSZXNvdXJjZUNvbnRhaW5lciogbV9zdHJva2U7CisgICAgICAgIFJl
bmRlclNWR1Jlc291cmNlQ2xpcHBlciogY2xpcHBlcjsKKyNpZiBFTkFCTEUoRklMVEVSUykKKyAg
ICAgICAgUmVuZGVyU1ZHUmVzb3VyY2VGaWx0ZXIqIGZpbHRlcjsKKyNlbmRpZgorICAgICAgICBS
ZW5kZXJTVkdSZXNvdXJjZU1hc2tlciogbWFza2VyOworICAgIH07CisKKyAgICAvLyBGcm9tIFNW
RyAxLjEgMm5kIEVkaXRpb24KKyAgICAvLyBtYXJrZXI6IGxpbmUsIHBhdGgsIHBvbHlnb24sIHBv
bHlsaW5lCisgICAgc3RydWN0IE1hcmtlckRhdGEgeworICAgICAgICBNYXJrZXJEYXRhKCkKKyAg
ICAgICAgICAgIDogbWFya2VyU3RhcnQoMCkKKyAgICAgICAgICAgICwgbWFya2VyTWlkKDApCisg
ICAgICAgICAgICAsIG1hcmtlckVuZCgwKQorICAgICAgICB7CisgICAgICAgIH0KKworICAgICAg
ICBzdGF0aWMgUGFzc093blB0cjxNYXJrZXJEYXRhPiBjcmVhdGUoKQorICAgICAgICB7CisgICAg
ICAgICAgICByZXR1cm4gbmV3IE1hcmtlckRhdGE7CisgICAgICAgIH0KKworICAgICAgICBSZW5k
ZXJTVkdSZXNvdXJjZU1hcmtlciogbWFya2VyU3RhcnQ7CisgICAgICAgIFJlbmRlclNWR1Jlc291
cmNlTWFya2VyKiBtYXJrZXJNaWQ7CisgICAgICAgIFJlbmRlclNWR1Jlc291cmNlTWFya2VyKiBt
YXJrZXJFbmQ7CisgICAgfTsKKworICAgIC8vIEZyb20gU1ZHIDEuMSAybmQgRWRpdGlvbgorICAg
IC8vIGZpbGw6ICAgICAgICdzaGFwZXMnIGFuZCAndGV4dCBjb250ZW50IGVsZW1lbnRzJworICAg
IC8vIHN0cm9rZTogICAgICdzaGFwZXMnIGFuZCAndGV4dCBjb250ZW50IGVsZW1lbnRzJworICAg
IC8vIC0+IGFsdEdseXBoLCBjaXJjbGUsIGVsbGlwc2UsIGxpbmUsIHBhdGgsIHBvbHlnb24sIHBv
bHlsaW5lLCByZWN0LCB0ZXh0LCB0ZXh0UGF0aCwgdHJlZiwgdHNwYW4KKyAgICBzdHJ1Y3QgRmls
bFN0cm9rZURhdGEgeworICAgICAgICBGaWxsU3Ryb2tlRGF0YSgpCisgICAgICAgICAgICA6IGZp
bGwoMCkKKyAgICAgICAgICAgICwgc3Ryb2tlKDApCisgICAgICAgIHsKKyAgICAgICAgfQorCisg
ICAgICAgIHN0YXRpYyBQYXNzT3duUHRyPEZpbGxTdHJva2VEYXRhPiBjcmVhdGUoKQorICAgICAg
ICB7CisgICAgICAgICAgICByZXR1cm4gbmV3IEZpbGxTdHJva2VEYXRhOworICAgICAgICB9CisK
KyAgICAgICAgUmVuZGVyU1ZHUmVzb3VyY2VDb250YWluZXIqIGZpbGw7CisgICAgICAgIFJlbmRl
clNWR1Jlc291cmNlQ29udGFpbmVyKiBzdHJva2U7CisgICAgfTsKKworICAgIE93blB0cjxDbGlw
cGVyRmlsdGVyTWFza2VyRGF0YT4gbV9jbGlwcGVyRmlsdGVyTWFza2VyRGF0YTsKKyAgICBPd25Q
dHI8TWFya2VyRGF0YT4gbV9tYXJrZXJEYXRhOworICAgIE93blB0cjxGaWxsU3Ryb2tlRGF0YT4g
bV9maWxsU3Ryb2tlRGF0YTsKIH07CiAKIH0K
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>63041</attachid>
            <date>2010-07-30 02:53:25 -0700</date>
            <delta_ts>2010-07-30 04:00:51 -0700</delta_ts>
            <desc>Updated patch</desc>
            <filename>optimizeMemory.diff</filename>
            <type>text/plain</type>
            <size>31170</size>
            <attacher name="Nikolas Zimmermann">zimmermann</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA2NDM0MikKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsNjAgQEAKKzIwMTAtMDctMzAgIE5pa29sYXMgWmltbWVybWFubiAgPG56aW1tZXJt
YW5uQHJpbS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgT3B0aW1pemUgU1ZHUmVzb3VyY2VzIG1lbW9yeSB1c2FnZQorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDMyMzYKKworICAgICAgICBJbnN0ZWFk
IG9mIHN0b3JpbmcgcG9pbnRlcnMgdG8gYWxsIHBvc3NpYmxlIHJlc291cmNlcyB0aGF0IGNvdWxk
IGJlIGFwcGxpZWQgdG8gYW4gZWxlbWVudCwgZ3JvdXAgdGhlbSBpbiB0aHJlZSBjYXRlZ29yaWVz
OgorICAgICAgICBjbGlwcGVyL2ZpbHRlci9tYXNrZXIsIG1hcmtlci1zdGFydC9tYXJrZXItbWlk
L21hcmtlci1lbmQsIGFuZCBmaWxsL3N0cm9rZS4KKworICAgICAgICBPbmx5IGJ1aWxkIHRoZSBj
YWNoZWQgcmVzb3VyY2VzIGRhdGEgZm9yIGVsZW1lbnRzIHdoZXJlIHRoZSBwcm9wZXJ0aWVzIGNh
biBiZSBhcHBsaWVkIHRvLiBNYWludGFpbiBhIHN0YXRpYyBsaXN0IG9mIHRhZ25hbWVzCisgICAg
ICAgIGZvciBlYWNoIG9mIHRoZSB0aHJlZSBjYXRlZ29yaWVzLCB0byBhdm9pZCBkb2luZyB1bm5j
ZXNzYXJ5IHdvcmsuCisKKyAgICAgICAgRG9lc24ndCBhZmZlY3QgYW55IHRlc3RzLgorCisgICAg
ICAgICogcmVuZGVyaW5nL1NWR1Jlc291cmNlcy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdS
ZXNvdXJjZXM6OlNWR1Jlc291cmNlcyk6CisgICAgICAgIChXZWJDb3JlOjpjbGlwcGVyRmlsdGVy
TWFza2VyVGFncyk6CisgICAgICAgIChXZWJDb3JlOjptYXJrZXJUYWdzKToKKyAgICAgICAgKFdl
YkNvcmU6OmZpbGxBbmRTdHJva2VUYWdzKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR1Jlc291cmNl
czo6YnVpbGRDYWNoZWRSZXNvdXJjZXMpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHUmVzb3VyY2Vz
OjppbnZhbGlkYXRlQ2xpZW50KToKKyAgICAgICAgKFdlYkNvcmU6OlNWR1Jlc291cmNlczo6cmVz
b3VyY2VEZXN0cm95ZWQpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHUmVzb3VyY2VzOjpidWlsZFNl
dE9mUmVzb3VyY2VzKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR1Jlc291cmNlczo6c2V0Q2xpcHBl
cik6CisgICAgICAgIChXZWJDb3JlOjpTVkdSZXNvdXJjZXM6OnJlc2V0Q2xpcHBlcik6CisgICAg
ICAgIChXZWJDb3JlOjpTVkdSZXNvdXJjZXM6OnNldEZpbHRlcik6CisgICAgICAgIChXZWJDb3Jl
OjpTVkdSZXNvdXJjZXM6OnJlc2V0RmlsdGVyKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR1Jlc291
cmNlczo6c2V0TWFya2VyU3RhcnQpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHUmVzb3VyY2VzOjpy
ZXNldE1hcmtlclN0YXJ0KToKKyAgICAgICAgKFdlYkNvcmU6OlNWR1Jlc291cmNlczo6c2V0TWFy
a2VyTWlkKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR1Jlc291cmNlczo6cmVzZXRNYXJrZXJNaWQp
OgorICAgICAgICAoV2ViQ29yZTo6U1ZHUmVzb3VyY2VzOjpzZXRNYXJrZXJFbmQpOgorICAgICAg
ICAoV2ViQ29yZTo6U1ZHUmVzb3VyY2VzOjpyZXNldE1hcmtlckVuZCk6CisgICAgICAgIChXZWJD
b3JlOjpTVkdSZXNvdXJjZXM6OnNldE1hc2tlcik6CisgICAgICAgIChXZWJDb3JlOjpTVkdSZXNv
dXJjZXM6OnJlc2V0TWFza2VyKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR1Jlc291cmNlczo6c2V0
RmlsbCk6CisgICAgICAgIChXZWJDb3JlOjpTVkdSZXNvdXJjZXM6OnJlc2V0RmlsbCk6CisgICAg
ICAgIChXZWJDb3JlOjpTVkdSZXNvdXJjZXM6OnNldFN0cm9rZSk6CisgICAgICAgIChXZWJDb3Jl
OjpTVkdSZXNvdXJjZXM6OnJlc2V0U3Ryb2tlKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR1Jlc291
cmNlczo6ZHVtcCk6CisgICAgICAgICogcmVuZGVyaW5nL1NWR1Jlc291cmNlcy5oOgorICAgICAg
ICAoV2ViQ29yZTo6U1ZHUmVzb3VyY2VzOjpjbGlwcGVyKToKKyAgICAgICAgKFdlYkNvcmU6OlNW
R1Jlc291cmNlczo6ZmlsdGVyKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR1Jlc291cmNlczo6bWFy
a2VyU3RhcnQpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHUmVzb3VyY2VzOjptYXJrZXJNaWQpOgor
ICAgICAgICAoV2ViQ29yZTo6U1ZHUmVzb3VyY2VzOjptYXJrZXJFbmQpOgorICAgICAgICAoV2Vi
Q29yZTo6U1ZHUmVzb3VyY2VzOjptYXNrZXIpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHUmVzb3Vy
Y2VzOjpmaWxsKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR1Jlc291cmNlczo6c3Ryb2tlKToKKyAg
ICAgICAgKFdlYkNvcmU6OlNWR1Jlc291cmNlczo6Q2xpcHBlckZpbHRlck1hc2tlckRhdGE6OkNs
aXBwZXJGaWx0ZXJNYXNrZXJEYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR1Jlc291cmNlczo6
Q2xpcHBlckZpbHRlck1hc2tlckRhdGE6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpTVkdS
ZXNvdXJjZXM6Ok1hcmtlckRhdGE6Ok1hcmtlckRhdGEpOgorICAgICAgICAoV2ViQ29yZTo6U1ZH
UmVzb3VyY2VzOjpNYXJrZXJEYXRhOjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHUmVz
b3VyY2VzOjpGaWxsU3Ryb2tlRGF0YTo6RmlsbFN0cm9rZURhdGEpOgorICAgICAgICAoV2ViQ29y
ZTo6U1ZHUmVzb3VyY2VzOjpGaWxsU3Ryb2tlRGF0YTo6Y3JlYXRlKToKKwogMjAxMC0wNy0yOSAg
QWxleGFuZGVyIFBhdmxvdiAgPGFwYXZsb3ZAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFJldmll
d2VkIGJ5IFBhdmVsIEZlbGRtYW4uCkluZGV4OiBXZWJDb3JlL3JlbmRlcmluZy9TVkdSZXNvdXJj
ZXMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcmVuZGVyaW5nL1NWR1Jlc291cmNlcy5jcHAJ
KHJldmlzaW9uIDY0MzQyKQorKysgV2ViQ29yZS9yZW5kZXJpbmcvU1ZHUmVzb3VyY2VzLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtMzIsMTkgKzMyLDg5IEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAK
IFNWR1Jlc291cmNlczo6U1ZHUmVzb3VyY2VzKCkKLSAgICA6IG1fY2xpcHBlcigwKQotI2lmIEVO
QUJMRShGSUxURVJTKQotICAgICwgbV9maWx0ZXIoMCkKLSNlbmRpZgotICAgICwgbV9tYXJrZXJT
dGFydCgwKQotICAgICwgbV9tYXJrZXJNaWQoMCkKLSAgICAsIG1fbWFya2VyRW5kKDApCi0gICAg
LCBtX21hc2tlcigwKQotICAgICwgbV9maWxsKDApCi0gICAgLCBtX3N0cm9rZSgwKQorICAgIDog
bV9jbGlwcGVyRmlsdGVyTWFza2VyRGF0YSgwKQorICAgICwgbV9tYXJrZXJEYXRhKDApCisgICAg
LCBtX2ZpbGxTdHJva2VEYXRhKDApCiB7CiB9CiAKK3N0YXRpYyBIYXNoU2V0PEF0b21pY1N0cmlu
Z0ltcGwqPiYgY2xpcHBlckZpbHRlck1hc2tlclRhZ3MoKQoreworICAgIERFRklORV9TVEFUSUNf
TE9DQUwoSGFzaFNldDxBdG9taWNTdHJpbmdJbXBsKj4sIHNfdGFnTGlzdCwgKCkpOworICAgIGlm
IChzX3RhZ0xpc3QuaXNFbXB0eSgpKSB7CisgICAgICAgIC8vICJjb250YWluZXIgZWxlbWVudHMi
OiBodHRwOi8vd3d3LnczLm9yZy9UUi9TVkcxMS9pbnRyby5odG1sI1Rlcm1Db250YWluZXJFbGVt
ZW50CisgICAgICAgIC8vICJncmFwaGljcyBlbGVtZW50cyIgOiBodHRwOi8vd3d3LnczLm9yZy9U
Ui9TVkcxMS9pbnRyby5odG1sI1Rlcm1HcmFwaGljc0VsZW1lbnQKKyAgICAgICAgc190YWdMaXN0
LmFkZChTVkdOYW1lczo6YVRhZy5sb2NhbE5hbWUoKS5pbXBsKCkpOworICAgICAgICBzX3RhZ0xp
c3QuYWRkKFNWR05hbWVzOjpjaXJjbGVUYWcubG9jYWxOYW1lKCkuaW1wbCgpKTsKKyAgICAgICAg
c190YWdMaXN0LmFkZChTVkdOYW1lczo6ZGVmc1RhZy5sb2NhbE5hbWUoKS5pbXBsKCkpOworICAg
ICAgICBzX3RhZ0xpc3QuYWRkKFNWR05hbWVzOjplbGxpcHNlVGFnLmxvY2FsTmFtZSgpLmltcGwo
KSk7CisgICAgICAgIHNfdGFnTGlzdC5hZGQoU1ZHTmFtZXM6OmdseXBoVGFnLmxvY2FsTmFtZSgp
LmltcGwoKSk7CisgICAgICAgIHNfdGFnTGlzdC5hZGQoU1ZHTmFtZXM6OmdUYWcubG9jYWxOYW1l
KCkuaW1wbCgpKTsKKyAgICAgICAgc190YWdMaXN0LmFkZChTVkdOYW1lczo6aW1hZ2VUYWcubG9j
YWxOYW1lKCkuaW1wbCgpKTsKKyAgICAgICAgc190YWdMaXN0LmFkZChTVkdOYW1lczo6bGluZVRh
Zy5sb2NhbE5hbWUoKS5pbXBsKCkpOworICAgICAgICBzX3RhZ0xpc3QuYWRkKFNWR05hbWVzOjpt
YXJrZXJUYWcubG9jYWxOYW1lKCkuaW1wbCgpKTsKKyAgICAgICAgc190YWdMaXN0LmFkZChTVkdO
YW1lczo6bWFza1RhZy5sb2NhbE5hbWUoKS5pbXBsKCkpOworICAgICAgICBzX3RhZ0xpc3QuYWRk
KFNWR05hbWVzOjptaXNzaW5nX2dseXBoVGFnLmxvY2FsTmFtZSgpLmltcGwoKSk7CisgICAgICAg
IHNfdGFnTGlzdC5hZGQoU1ZHTmFtZXM6OnBhdGhUYWcubG9jYWxOYW1lKCkuaW1wbCgpKTsKKyAg
ICAgICAgc190YWdMaXN0LmFkZChTVkdOYW1lczo6cGF0dGVyblRhZy5sb2NhbE5hbWUoKS5pbXBs
KCkpOworICAgICAgICBzX3RhZ0xpc3QuYWRkKFNWR05hbWVzOjpwb2x5Z29uVGFnLmxvY2FsTmFt
ZSgpLmltcGwoKSk7CisgICAgICAgIHNfdGFnTGlzdC5hZGQoU1ZHTmFtZXM6OnBvbHlsaW5lVGFn
LmxvY2FsTmFtZSgpLmltcGwoKSk7CisgICAgICAgIHNfdGFnTGlzdC5hZGQoU1ZHTmFtZXM6OnJl
Y3RUYWcubG9jYWxOYW1lKCkuaW1wbCgpKTsKKyAgICAgICAgc190YWdMaXN0LmFkZChTVkdOYW1l
czo6c3ZnVGFnLmxvY2FsTmFtZSgpLmltcGwoKSk7CisgICAgICAgIHNfdGFnTGlzdC5hZGQoU1ZH
TmFtZXM6OnN3aXRjaFRhZy5sb2NhbE5hbWUoKS5pbXBsKCkpOworICAgICAgICBzX3RhZ0xpc3Qu
YWRkKFNWR05hbWVzOjpzeW1ib2xUYWcubG9jYWxOYW1lKCkuaW1wbCgpKTsKKyAgICAgICAgc190
YWdMaXN0LmFkZChTVkdOYW1lczo6dGV4dFRhZy5sb2NhbE5hbWUoKS5pbXBsKCkpOworICAgICAg
ICBzX3RhZ0xpc3QuYWRkKFNWR05hbWVzOjp1c2VUYWcubG9jYWxOYW1lKCkuaW1wbCgpKTsKKwor
ICAgICAgICAvLyBOb3QgbGlzdGVkIGluIHRoZSBkZWZpbml0aW9ucyBpcyB0aGUgY2xpcFBhdGgg
ZWxlbWVudCwgdGhlIFNWRyBzcGVjIHNheXMgdGhvdWdoOgorICAgICAgICAvLyBUaGUgImNsaXBQ
YXRoIiBlbGVtZW50IG9yIGFueSBvZiBpdHMgY2hpbGRyZW4gY2FuIHNwZWNpZnkgcHJvcGVydHkg
ImNsaXAtcGF0aCIuCisgICAgICAgIC8vIFNvIHdlIGhhdmUgdG8gYWRkIGNsaXBQYXRoVGFnIGhl
cmUsIG90aGVyd2hpc2UgY2xpcC1wYXRoIG9uIGNsaXBQYXRoIHdpbGwgZmFpbC4KKyAgICAgICAg
c190YWdMaXN0LmFkZChTVkdOYW1lczo6Y2xpcFBhdGhUYWcubG9jYWxOYW1lKCkuaW1wbCgpKTsK
KworICAgICAgICAvLyBOb3QgbGlzdGVkIGluIHRoZSBkZWZpbml0aW9ucyBhcmUgdGhlIHRleHQg
Y29udGVudCBlbGVtZW50cywgdGhvdWdoIGZpbHRlci9jbGlwcGVyL21hc2tlciBvbiB0c3Bhbi90
ZXh0Ly4uIGlzIGFsbG93ZWQuCisgICAgICAgIHNfdGFnTGlzdC5hZGQoU1ZHTmFtZXM6OmFsdEds
eXBoVGFnLmxvY2FsTmFtZSgpLmltcGwoKSk7CisgICAgICAgIHNfdGFnTGlzdC5hZGQoU1ZHTmFt
ZXM6OnRleHRQYXRoVGFnLmxvY2FsTmFtZSgpLmltcGwoKSk7CisgICAgICAgIHNfdGFnTGlzdC5h
ZGQoU1ZHTmFtZXM6OnRyZWZUYWcubG9jYWxOYW1lKCkuaW1wbCgpKTsKKyAgICAgICAgc190YWdM
aXN0LmFkZChTVkdOYW1lczo6dHNwYW5UYWcubG9jYWxOYW1lKCkuaW1wbCgpKTsKKyAgICB9CisK
KyAgICByZXR1cm4gc190YWdMaXN0OworfQorCitzdGF0aWMgSGFzaFNldDxBdG9taWNTdHJpbmdJ
bXBsKj4mIG1hcmtlclRhZ3MoKQoreworICAgIERFRklORV9TVEFUSUNfTE9DQUwoSGFzaFNldDxB
dG9taWNTdHJpbmdJbXBsKj4sIHNfdGFnTGlzdCwgKCkpOworICAgIGlmIChzX3RhZ0xpc3QuaXNF
bXB0eSgpKSB7CisgICAgICAgIHNfdGFnTGlzdC5hZGQoU1ZHTmFtZXM6OmxpbmVUYWcubG9jYWxO
YW1lKCkuaW1wbCgpKTsKKyAgICAgICAgc190YWdMaXN0LmFkZChTVkdOYW1lczo6cGF0aFRhZy5s
b2NhbE5hbWUoKS5pbXBsKCkpOworICAgICAgICBzX3RhZ0xpc3QuYWRkKFNWR05hbWVzOjpwb2x5
Z29uVGFnLmxvY2FsTmFtZSgpLmltcGwoKSk7CisgICAgICAgIHNfdGFnTGlzdC5hZGQoU1ZHTmFt
ZXM6OnBvbHlsaW5lVGFnLmxvY2FsTmFtZSgpLmltcGwoKSk7CisgICAgfQorCisgICAgcmV0dXJu
IHNfdGFnTGlzdDsKK30KKworc3RhdGljIEhhc2hTZXQ8QXRvbWljU3RyaW5nSW1wbCo+JiBmaWxs
QW5kU3Ryb2tlVGFncygpCit7CisgICAgREVGSU5FX1NUQVRJQ19MT0NBTChIYXNoU2V0PEF0b21p
Y1N0cmluZ0ltcGwqPiwgc190YWdMaXN0LCAoKSk7CisgICAgaWYgKHNfdGFnTGlzdC5pc0VtcHR5
KCkpIHsKKyAgICAgICAgc190YWdMaXN0LmFkZChTVkdOYW1lczo6YWx0R2x5cGhUYWcubG9jYWxO
YW1lKCkuaW1wbCgpKTsKKyAgICAgICAgc190YWdMaXN0LmFkZChTVkdOYW1lczo6Y2lyY2xlVGFn
LmxvY2FsTmFtZSgpLmltcGwoKSk7CisgICAgICAgIHNfdGFnTGlzdC5hZGQoU1ZHTmFtZXM6OmVs
bGlwc2VUYWcubG9jYWxOYW1lKCkuaW1wbCgpKTsKKyAgICAgICAgc190YWdMaXN0LmFkZChTVkdO
YW1lczo6bGluZVRhZy5sb2NhbE5hbWUoKS5pbXBsKCkpOworICAgICAgICBzX3RhZ0xpc3QuYWRk
KFNWR05hbWVzOjpwYXRoVGFnLmxvY2FsTmFtZSgpLmltcGwoKSk7CisgICAgICAgIHNfdGFnTGlz
dC5hZGQoU1ZHTmFtZXM6OnBvbHlnb25UYWcubG9jYWxOYW1lKCkuaW1wbCgpKTsKKyAgICAgICAg
c190YWdMaXN0LmFkZChTVkdOYW1lczo6cG9seWxpbmVUYWcubG9jYWxOYW1lKCkuaW1wbCgpKTsK
KyAgICAgICAgc190YWdMaXN0LmFkZChTVkdOYW1lczo6cmVjdFRhZy5sb2NhbE5hbWUoKS5pbXBs
KCkpOworICAgICAgICBzX3RhZ0xpc3QuYWRkKFNWR05hbWVzOjp0ZXh0VGFnLmxvY2FsTmFtZSgp
LmltcGwoKSk7CisgICAgICAgIHNfdGFnTGlzdC5hZGQoU1ZHTmFtZXM6OnRleHRQYXRoVGFnLmxv
Y2FsTmFtZSgpLmltcGwoKSk7CisgICAgICAgIHNfdGFnTGlzdC5hZGQoU1ZHTmFtZXM6OnRyZWZU
YWcubG9jYWxOYW1lKCkuaW1wbCgpKTsKKyAgICAgICAgc190YWdMaXN0LmFkZChTVkdOYW1lczo6
dHNwYW5UYWcubG9jYWxOYW1lKCkuaW1wbCgpKTsKKyAgICB9CisKKyAgICByZXR1cm4gc190YWdM
aXN0OworfQorCiBzdGF0aWMgaW5saW5lIFJlbmRlclNWR1Jlc291cmNlQ29udGFpbmVyKiBwYWlu
dGluZ1Jlc291cmNlRnJvbVNWR1BhaW50KERvY3VtZW50KiBkb2N1bWVudCwgU1ZHUGFpbnQqIHBh
aW50LCBBdG9taWNTdHJpbmcmIGlkLCBib29sJiBoYXNQZW5kaW5nUmVzb3VyY2UpCiB7CiAgICAg
QVNTRVJUKHBhaW50KTsKQEAgLTgxLDYgKzE1MSw3IEBAIGJvb2wgU1ZHUmVzb3VyY2VzOjpidWls
ZENhY2hlZFJlc291cmNlcygKIAogICAgIE5vZGUqIG5vZGUgPSBvYmplY3QtPm5vZGUoKTsKICAg
ICBBU1NFUlQobm9kZSk7CisgICAgQVNTRVJUKG5vZGUtPmlzRWxlbWVudE5vZGUoKSk7CiAKICAg
ICBEb2N1bWVudCogZG9jdW1lbnQgPSBvYmplY3QtPmRvY3VtZW50KCk7CiAgICAgQVNTRVJUKGRv
Y3VtZW50KTsKQEAgLTg4LDc3ICsxNTksNzcgQEAgYm9vbCBTVkdSZXNvdXJjZXM6OmJ1aWxkQ2Fj
aGVkUmVzb3VyY2VzKAogICAgIFNWR0RvY3VtZW50RXh0ZW5zaW9ucyogZXh0ZW5zaW9ucyA9IGRv
Y3VtZW50LT5hY2Nlc3NTVkdFeHRlbnNpb25zKCk7CiAgICAgQVNTRVJUKGV4dGVuc2lvbnMpOwog
Ci0gICAgYm9vbCBmb3VuZFJlc291cmNlcyA9IGZhbHNlOwotICAgIGlmIChzdHlsZS0+aGFzQ2xp
cHBlcigpKSB7Ci0gICAgICAgIEF0b21pY1N0cmluZyBpZChzdHlsZS0+Y2xpcHBlclJlc291cmNl
KCkpOwotICAgICAgICBtX2NsaXBwZXIgPSBnZXRSZW5kZXJTVkdSZXNvdXJjZUJ5SWQ8UmVuZGVy
U1ZHUmVzb3VyY2VDbGlwcGVyPihkb2N1bWVudCwgaWQpOwotICAgICAgICBpZiAobV9jbGlwcGVy
KQotICAgICAgICAgICAgZm91bmRSZXNvdXJjZXMgPSB0cnVlOwotICAgICAgICBlbHNlCi0gICAg
ICAgICAgICByZWdpc3RlclBlbmRpbmdSZXNvdXJjZShleHRlbnNpb25zLCBpZCwgbm9kZSk7Ci0g
ICAgfQorICAgIEF0b21pY1N0cmluZ0ltcGwqIHRhZ05hbWVJbXBsID0gc3RhdGljX2Nhc3Q8RWxl
bWVudCo+KG5vZGUpLT50YWdRTmFtZSgpLmxvY2FsTmFtZSgpLmltcGwoKTsKKyAgICBpZiAoIXRh
Z05hbWVJbXBsKQorICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICBpZiAoc3R5bGUtPmhhc01h
c2tlcigpKSB7Ci0gICAgICAgIEF0b21pY1N0cmluZyBpZChzdHlsZS0+bWFza2VyUmVzb3VyY2Uo
KSk7Ci0gICAgICAgIG1fbWFza2VyID0gZ2V0UmVuZGVyU1ZHUmVzb3VyY2VCeUlkPFJlbmRlclNW
R1Jlc291cmNlTWFza2VyPihkb2N1bWVudCwgaWQpOwotICAgICAgICBpZiAobV9tYXNrZXIpCi0g
ICAgICAgICAgICBmb3VuZFJlc291cmNlcyA9IHRydWU7Ci0gICAgICAgIGVsc2UKLSAgICAgICAg
ICAgIHJlZ2lzdGVyUGVuZGluZ1Jlc291cmNlKGV4dGVuc2lvbnMsIGlkLCBub2RlKTsKLSAgICB9
CisgICAgYm9vbCBmb3VuZFJlc291cmNlcyA9IGZhbHNlOworICAgIGlmIChjbGlwcGVyRmlsdGVy
TWFza2VyVGFncygpLmNvbnRhaW5zKHRhZ05hbWVJbXBsKSkgeworICAgICAgICBpZiAoc3R5bGUt
Pmhhc0NsaXBwZXIoKSkgeworICAgICAgICAgICAgQXRvbWljU3RyaW5nIGlkKHN0eWxlLT5jbGlw
cGVyUmVzb3VyY2UoKSk7CisgICAgICAgICAgICBpZiAoc2V0Q2xpcHBlcihnZXRSZW5kZXJTVkdS
ZXNvdXJjZUJ5SWQ8UmVuZGVyU1ZHUmVzb3VyY2VDbGlwcGVyPihkb2N1bWVudCwgaWQpKSkKKyAg
ICAgICAgICAgICAgICBmb3VuZFJlc291cmNlcyA9IHRydWU7CisgICAgICAgICAgICBlbHNlCisg
ICAgICAgICAgICAgICAgcmVnaXN0ZXJQZW5kaW5nUmVzb3VyY2UoZXh0ZW5zaW9ucywgaWQsIG5v
ZGUpOworICAgICAgICB9CiAKICNpZiBFTkFCTEUoRklMVEVSUykKLSAgICBpZiAoc3R5bGUtPmhh
c0ZpbHRlcigpKSB7Ci0gICAgICAgIEF0b21pY1N0cmluZyBpZChzdHlsZS0+ZmlsdGVyUmVzb3Vy
Y2UoKSk7Ci0gICAgICAgIG1fZmlsdGVyID0gZ2V0UmVuZGVyU1ZHUmVzb3VyY2VCeUlkPFJlbmRl
clNWR1Jlc291cmNlRmlsdGVyPihkb2N1bWVudCwgaWQpOwotICAgICAgICBpZiAobV9maWx0ZXIp
Ci0gICAgICAgICAgICBmb3VuZFJlc291cmNlcyA9IHRydWU7Ci0gICAgICAgIGVsc2UKLSAgICAg
ICAgICAgIHJlZ2lzdGVyUGVuZGluZ1Jlc291cmNlKGV4dGVuc2lvbnMsIGlkLCBub2RlKTsKLSAg
ICB9CisgICAgICAgIGlmIChzdHlsZS0+aGFzRmlsdGVyKCkpIHsKKyAgICAgICAgICAgIEF0b21p
Y1N0cmluZyBpZChzdHlsZS0+ZmlsdGVyUmVzb3VyY2UoKSk7CisgICAgICAgICAgICBpZiAoc2V0
RmlsdGVyKGdldFJlbmRlclNWR1Jlc291cmNlQnlJZDxSZW5kZXJTVkdSZXNvdXJjZUZpbHRlcj4o
ZG9jdW1lbnQsIGlkKSkpCisgICAgICAgICAgICAgICAgZm91bmRSZXNvdXJjZXMgPSB0cnVlOwor
ICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIHJlZ2lzdGVyUGVuZGluZ1Jlc291cmNl
KGV4dGVuc2lvbnMsIGlkLCBub2RlKTsKKyAgICAgICAgfQogI2VuZGlmCiAKLSAgICBpZiAoc3R5
bGUtPmhhc01hcmtlcnMoKSkgeworICAgICAgICBpZiAoc3R5bGUtPmhhc01hc2tlcigpKSB7Cisg
ICAgICAgICAgICBBdG9taWNTdHJpbmcgaWQoc3R5bGUtPm1hc2tlclJlc291cmNlKCkpOworICAg
ICAgICAgICAgaWYgKHNldE1hc2tlcihnZXRSZW5kZXJTVkdSZXNvdXJjZUJ5SWQ8UmVuZGVyU1ZH
UmVzb3VyY2VNYXNrZXI+KGRvY3VtZW50LCBpZCkpKQorICAgICAgICAgICAgICAgIGZvdW5kUmVz
b3VyY2VzID0gdHJ1ZTsKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICByZWdpc3Rl
clBlbmRpbmdSZXNvdXJjZShleHRlbnNpb25zLCBpZCwgbm9kZSk7CisgICAgICAgIH0KKyAgICB9
CisKKyAgICBpZiAobWFya2VyVGFncygpLmNvbnRhaW5zKHRhZ05hbWVJbXBsKSAmJiBzdHlsZS0+
aGFzTWFya2VycygpKSB7CiAgICAgICAgIEF0b21pY1N0cmluZyBtYXJrZXJTdGFydElkKHN0eWxl
LT5tYXJrZXJTdGFydFJlc291cmNlKCkpOwotICAgICAgICBtX21hcmtlclN0YXJ0ID0gZ2V0UmVu
ZGVyU1ZHUmVzb3VyY2VCeUlkPFJlbmRlclNWR1Jlc291cmNlTWFya2VyPihkb2N1bWVudCwgbWFy
a2VyU3RhcnRJZCk7Ci0gICAgICAgIGlmIChtX21hcmtlclN0YXJ0KQorICAgICAgICBpZiAoc2V0
TWFya2VyU3RhcnQoZ2V0UmVuZGVyU1ZHUmVzb3VyY2VCeUlkPFJlbmRlclNWR1Jlc291cmNlTWFy
a2VyPihkb2N1bWVudCwgbWFya2VyU3RhcnRJZCkpKQogICAgICAgICAgICAgZm91bmRSZXNvdXJj
ZXMgPSB0cnVlOwogICAgICAgICBlbHNlCiAgICAgICAgICAgICByZWdpc3RlclBlbmRpbmdSZXNv
dXJjZShleHRlbnNpb25zLCBtYXJrZXJTdGFydElkLCBub2RlKTsKIAogICAgICAgICBBdG9taWNT
dHJpbmcgbWFya2VyTWlkSWQoc3R5bGUtPm1hcmtlck1pZFJlc291cmNlKCkpOwotICAgICAgICBt
X21hcmtlck1pZCA9IGdldFJlbmRlclNWR1Jlc291cmNlQnlJZDxSZW5kZXJTVkdSZXNvdXJjZU1h
cmtlcj4oZG9jdW1lbnQsIG1hcmtlck1pZElkKTsKLSAgICAgICAgaWYgKG1fbWFya2VyTWlkKQor
ICAgICAgICBpZiAoc2V0TWFya2VyTWlkKGdldFJlbmRlclNWR1Jlc291cmNlQnlJZDxSZW5kZXJT
VkdSZXNvdXJjZU1hcmtlcj4oZG9jdW1lbnQsIG1hcmtlck1pZElkKSkpCiAgICAgICAgICAgICBm
b3VuZFJlc291cmNlcyA9IHRydWU7CiAgICAgICAgIGVsc2UKICAgICAgICAgICAgIHJlZ2lzdGVy
UGVuZGluZ1Jlc291cmNlKGV4dGVuc2lvbnMsIG1hcmtlck1pZElkLCBub2RlKTsKIAogICAgICAg
ICBBdG9taWNTdHJpbmcgbWFya2VyRW5kSWQoc3R5bGUtPm1hcmtlckVuZFJlc291cmNlKCkpOwot
ICAgICAgICBtX21hcmtlckVuZCA9IGdldFJlbmRlclNWR1Jlc291cmNlQnlJZDxSZW5kZXJTVkdS
ZXNvdXJjZU1hcmtlcj4oZG9jdW1lbnQsIG1hcmtlckVuZElkKTsKLSAgICAgICAgaWYgKG1fbWFy
a2VyRW5kKQorICAgICAgICBpZiAoc2V0TWFya2VyRW5kKGdldFJlbmRlclNWR1Jlc291cmNlQnlJ
ZDxSZW5kZXJTVkdSZXNvdXJjZU1hcmtlcj4oZG9jdW1lbnQsIG1hcmtlckVuZElkKSkpCiAgICAg
ICAgICAgICBmb3VuZFJlc291cmNlcyA9IHRydWU7CiAgICAgICAgIGVsc2UKICAgICAgICAgICAg
IHJlZ2lzdGVyUGVuZGluZ1Jlc291cmNlKGV4dGVuc2lvbnMsIG1hcmtlckVuZElkLCBub2RlKTsK
ICAgICB9CiAKLSAgICBpZiAoc3R5bGUtPmhhc0ZpbGwoKSkgewotICAgICAgICBib29sIGhhc1Bl
bmRpbmdSZXNvdXJjZSA9IGZhbHNlOwotICAgICAgICBBdG9taWNTdHJpbmcgaWQ7Ci0gICAgICAg
IG1fZmlsbCA9IHBhaW50aW5nUmVzb3VyY2VGcm9tU1ZHUGFpbnQoZG9jdW1lbnQsIHN0eWxlLT5m
aWxsUGFpbnQoKSwgaWQsIGhhc1BlbmRpbmdSZXNvdXJjZSk7Ci0gICAgICAgIGlmIChtX2ZpbGwp
Ci0gICAgICAgICAgICBmb3VuZFJlc291cmNlcyA9IHRydWU7Ci0gICAgICAgIGVsc2UgaWYgKGhh
c1BlbmRpbmdSZXNvdXJjZSkKLSAgICAgICAgICAgIHJlZ2lzdGVyUGVuZGluZ1Jlc291cmNlKGV4
dGVuc2lvbnMsIGlkLCBub2RlKTsKLSAgICB9CisgICAgaWYgKGZpbGxBbmRTdHJva2VUYWdzKCku
Y29udGFpbnModGFnTmFtZUltcGwpKSB7CisgICAgICAgIGlmIChzdHlsZS0+aGFzRmlsbCgpKSB7
CisgICAgICAgICAgICBib29sIGhhc1BlbmRpbmdSZXNvdXJjZSA9IGZhbHNlOworICAgICAgICAg
ICAgQXRvbWljU3RyaW5nIGlkOworICAgICAgICAgICAgaWYgKHNldEZpbGwocGFpbnRpbmdSZXNv
dXJjZUZyb21TVkdQYWludChkb2N1bWVudCwgc3R5bGUtPmZpbGxQYWludCgpLCBpZCwgaGFzUGVu
ZGluZ1Jlc291cmNlKSkpCisgICAgICAgICAgICAgICAgZm91bmRSZXNvdXJjZXMgPSB0cnVlOwor
ICAgICAgICAgICAgZWxzZSBpZiAoaGFzUGVuZGluZ1Jlc291cmNlKQorICAgICAgICAgICAgICAg
IHJlZ2lzdGVyUGVuZGluZ1Jlc291cmNlKGV4dGVuc2lvbnMsIGlkLCBub2RlKTsKKyAgICAgICAg
fQogCi0gICAgaWYgKHN0eWxlLT5oYXNTdHJva2UoKSkgewotICAgICAgICBib29sIGhhc1BlbmRp
bmdSZXNvdXJjZSA9IGZhbHNlOwotICAgICAgICBBdG9taWNTdHJpbmcgaWQ7Ci0gICAgICAgIG1f
c3Ryb2tlID0gcGFpbnRpbmdSZXNvdXJjZUZyb21TVkdQYWludChkb2N1bWVudCwgc3R5bGUtPnN0
cm9rZVBhaW50KCksIGlkLCBoYXNQZW5kaW5nUmVzb3VyY2UpOwotICAgICAgICBpZiAobV9zdHJv
a2UpCi0gICAgICAgICAgICBmb3VuZFJlc291cmNlcyA9IHRydWU7Ci0gICAgICAgIGVsc2UgaWYg
KGhhc1BlbmRpbmdSZXNvdXJjZSkKLSAgICAgICAgICAgIHJlZ2lzdGVyUGVuZGluZ1Jlc291cmNl
KGV4dGVuc2lvbnMsIGlkLCBub2RlKTsKKyAgICAgICAgaWYgKHN0eWxlLT5oYXNTdHJva2UoKSkg
eworICAgICAgICAgICAgYm9vbCBoYXNQZW5kaW5nUmVzb3VyY2UgPSBmYWxzZTsKKyAgICAgICAg
ICAgIEF0b21pY1N0cmluZyBpZDsKKyAgICAgICAgICAgIGlmIChzZXRTdHJva2UocGFpbnRpbmdS
ZXNvdXJjZUZyb21TVkdQYWludChkb2N1bWVudCwgc3R5bGUtPnN0cm9rZVBhaW50KCksIGlkLCBo
YXNQZW5kaW5nUmVzb3VyY2UpKSkKKyAgICAgICAgICAgICAgICBmb3VuZFJlc291cmNlcyA9IHRy
dWU7CisgICAgICAgICAgICBlbHNlIGlmIChoYXNQZW5kaW5nUmVzb3VyY2UpCisgICAgICAgICAg
ICAgICAgcmVnaXN0ZXJQZW5kaW5nUmVzb3VyY2UoZXh0ZW5zaW9ucywgaWQsIG5vZGUpOworICAg
ICAgICB9CiAgICAgfQogCiAgICAgcmV0dXJuIGZvdW5kUmVzb3VyY2VzOwpAQCAtMTY2LDgxICsy
MzcsOTggQEAgYm9vbCBTVkdSZXNvdXJjZXM6OmJ1aWxkQ2FjaGVkUmVzb3VyY2VzKAogCiB2b2lk
IFNWR1Jlc291cmNlczo6aW52YWxpZGF0ZUNsaWVudChSZW5kZXJPYmplY3QqIG9iamVjdCkgY29u
c3QKIHsKLSAgICAvLyBPcmRpbmFyeSByZXNvdXJjZXMKLSAgICBpZiAobV9jbGlwcGVyKQotICAg
ICAgICBtX2NsaXBwZXItPmludmFsaWRhdGVDbGllbnQob2JqZWN0KTsKKyAgICBpZiAoIW1fY2xp
cHBlckZpbHRlck1hc2tlckRhdGEgJiYgIW1fbWFya2VyRGF0YSAmJiAhbV9maWxsU3Ryb2tlRGF0
YSkKKyAgICAgICAgcmV0dXJuOworCisgICAgaWYgKG1fY2xpcHBlckZpbHRlck1hc2tlckRhdGEp
IHsKKyAgICAgICAgaWYgKG1fY2xpcHBlckZpbHRlck1hc2tlckRhdGEtPmNsaXBwZXIpCisgICAg
ICAgICAgICBtX2NsaXBwZXJGaWx0ZXJNYXNrZXJEYXRhLT5jbGlwcGVyLT5pbnZhbGlkYXRlQ2xp
ZW50KG9iamVjdCk7CiAjaWYgRU5BQkxFKEZJTFRFUlMpCi0gICAgaWYgKG1fZmlsdGVyKQotICAg
ICAgICBtX2ZpbHRlci0+aW52YWxpZGF0ZUNsaWVudChvYmplY3QpOworICAgICAgICBpZiAobV9j
bGlwcGVyRmlsdGVyTWFza2VyRGF0YS0+ZmlsdGVyKQorICAgICAgICAgICAgbV9jbGlwcGVyRmls
dGVyTWFza2VyRGF0YS0+ZmlsdGVyLT5pbnZhbGlkYXRlQ2xpZW50KG9iamVjdCk7CiAjZW5kaWYK
LSAgICBpZiAobV9tYXNrZXIpCi0gICAgICAgIG1fbWFza2VyLT5pbnZhbGlkYXRlQ2xpZW50KG9i
amVjdCk7Ci0gICAgaWYgKG1fbWFya2VyU3RhcnQpCi0gICAgICAgIG1fbWFya2VyU3RhcnQtPmlu
dmFsaWRhdGVDbGllbnQob2JqZWN0KTsKLSAgICBpZiAobV9tYXJrZXJNaWQpCi0gICAgICAgIG1f
bWFya2VyTWlkLT5pbnZhbGlkYXRlQ2xpZW50KG9iamVjdCk7Ci0gICAgaWYgKG1fbWFya2VyRW5k
KQotICAgICAgICBtX21hcmtlckVuZC0+aW52YWxpZGF0ZUNsaWVudChvYmplY3QpOwotCi0gICAg
Ly8gUGFpbnQgc2VydmVycwotICAgIGlmIChtX2ZpbGwpCi0gICAgICAgIG1fZmlsbC0+aW52YWxp
ZGF0ZUNsaWVudChvYmplY3QpOwotICAgIGlmIChtX3N0cm9rZSkKLSAgICAgICAgbV9zdHJva2Ut
PmludmFsaWRhdGVDbGllbnQob2JqZWN0KTsKKyAgICAgICAgaWYgKG1fY2xpcHBlckZpbHRlck1h
c2tlckRhdGEtPm1hc2tlcikKKyAgICAgICAgICAgIG1fY2xpcHBlckZpbHRlck1hc2tlckRhdGEt
Pm1hc2tlci0+aW52YWxpZGF0ZUNsaWVudChvYmplY3QpOworICAgIH0KKworICAgIGlmIChtX21h
cmtlckRhdGEpIHsKKyAgICAgICAgaWYgKG1fbWFya2VyRGF0YS0+bWFya2VyU3RhcnQpCisgICAg
ICAgICAgICBtX21hcmtlckRhdGEtPm1hcmtlclN0YXJ0LT5pbnZhbGlkYXRlQ2xpZW50KG9iamVj
dCk7CisgICAgICAgIGlmIChtX21hcmtlckRhdGEtPm1hcmtlck1pZCkKKyAgICAgICAgICAgIG1f
bWFya2VyRGF0YS0+bWFya2VyTWlkLT5pbnZhbGlkYXRlQ2xpZW50KG9iamVjdCk7CisgICAgICAg
IGlmIChtX21hcmtlckRhdGEtPm1hcmtlckVuZCkKKyAgICAgICAgICAgIG1fbWFya2VyRGF0YS0+
bWFya2VyRW5kLT5pbnZhbGlkYXRlQ2xpZW50KG9iamVjdCk7CisgICAgfQorCisgICAgaWYgKG1f
ZmlsbFN0cm9rZURhdGEpIHsKKyAgICAgICAgaWYgKG1fZmlsbFN0cm9rZURhdGEtPmZpbGwpCisg
ICAgICAgICAgICBtX2ZpbGxTdHJva2VEYXRhLT5maWxsLT5pbnZhbGlkYXRlQ2xpZW50KG9iamVj
dCk7CisgICAgICAgIGlmIChtX2ZpbGxTdHJva2VEYXRhLT5zdHJva2UpCisgICAgICAgICAgICBt
X2ZpbGxTdHJva2VEYXRhLT5zdHJva2UtPmludmFsaWRhdGVDbGllbnQob2JqZWN0KTsKKyAgICB9
CiB9CiAKIHZvaWQgU1ZHUmVzb3VyY2VzOjpyZXNvdXJjZURlc3Ryb3llZChSZW5kZXJTVkdSZXNv
dXJjZUNvbnRhaW5lciogcmVzb3VyY2UpCiB7CiAgICAgQVNTRVJUKHJlc291cmNlKTsKKyAgICBp
ZiAoIW1fY2xpcHBlckZpbHRlck1hc2tlckRhdGEgJiYgIW1fbWFya2VyRGF0YSAmJiAhbV9maWxs
U3Ryb2tlRGF0YSkKKyAgICAgICAgcmV0dXJuOwogCiAgICAgc3dpdGNoIChyZXNvdXJjZS0+cmVz
b3VyY2VUeXBlKCkpIHsKICAgICBjYXNlIE1hc2tlclJlc291cmNlVHlwZToKLSAgICAgICAgaWYg
KG1fbWFza2VyID09IHJlc291cmNlKSB7Ci0gICAgICAgICAgICBtX21hc2tlci0+aW52YWxpZGF0
ZUNsaWVudHMoKTsKLSAgICAgICAgICAgIG1fbWFza2VyID0gMDsKKyAgICAgICAgaWYgKCFtX2Ns
aXBwZXJGaWx0ZXJNYXNrZXJEYXRhKQorICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGlmICht
X2NsaXBwZXJGaWx0ZXJNYXNrZXJEYXRhLT5tYXNrZXIgPT0gcmVzb3VyY2UpIHsKKyAgICAgICAg
ICAgIG1fY2xpcHBlckZpbHRlck1hc2tlckRhdGEtPm1hc2tlci0+aW52YWxpZGF0ZUNsaWVudHMo
KTsKKyAgICAgICAgICAgIG1fY2xpcHBlckZpbHRlck1hc2tlckRhdGEtPm1hc2tlciA9IDA7CiAg
ICAgICAgIH0KICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBNYXJrZXJSZXNvdXJjZVR5cGU6Ci0g
ICAgICAgIGlmIChtX21hcmtlclN0YXJ0ID09IHJlc291cmNlKSB7Ci0gICAgICAgICAgICBtX21h
cmtlclN0YXJ0LT5pbnZhbGlkYXRlQ2xpZW50cygpOwotICAgICAgICAgICAgbV9tYXJrZXJTdGFy
dCA9IDA7CisgICAgICAgIGlmICghbV9tYXJrZXJEYXRhKQorICAgICAgICAgICAgYnJlYWs7Cisg
ICAgICAgIGlmIChtX21hcmtlckRhdGEtPm1hcmtlclN0YXJ0ID09IHJlc291cmNlKSB7CisgICAg
ICAgICAgICBtX21hcmtlckRhdGEtPm1hcmtlclN0YXJ0LT5pbnZhbGlkYXRlQ2xpZW50cygpOwor
ICAgICAgICAgICAgbV9tYXJrZXJEYXRhLT5tYXJrZXJTdGFydCA9IDA7CiAgICAgICAgIH0KLQot
ICAgICAgICBpZiAobV9tYXJrZXJNaWQgPT0gcmVzb3VyY2UpIHsKLSAgICAgICAgICAgIG1fbWFy
a2VyTWlkLT5pbnZhbGlkYXRlQ2xpZW50cygpOwotICAgICAgICAgICAgbV9tYXJrZXJNaWQgPSAw
OworICAgICAgICBpZiAobV9tYXJrZXJEYXRhLT5tYXJrZXJNaWQgPT0gcmVzb3VyY2UpIHsKKyAg
ICAgICAgICAgIG1fbWFya2VyRGF0YS0+bWFya2VyTWlkLT5pbnZhbGlkYXRlQ2xpZW50cygpOwor
ICAgICAgICAgICAgbV9tYXJrZXJEYXRhLT5tYXJrZXJNaWQgPSAwOwogICAgICAgICB9Ci0KLSAg
ICAgICAgaWYgKG1fbWFya2VyRW5kID09IHJlc291cmNlKSB7Ci0gICAgICAgICAgICBtX21hcmtl
ckVuZC0+aW52YWxpZGF0ZUNsaWVudHMoKTsKLSAgICAgICAgICAgIG1fbWFya2VyRW5kID0gMDsK
KyAgICAgICAgaWYgKG1fbWFya2VyRGF0YS0+bWFya2VyRW5kID09IHJlc291cmNlKSB7CisgICAg
ICAgICAgICBtX21hcmtlckRhdGEtPm1hcmtlckVuZC0+aW52YWxpZGF0ZUNsaWVudHMoKTsKKyAg
ICAgICAgICAgIG1fbWFya2VyRGF0YS0+bWFya2VyRW5kID0gMDsKICAgICAgICAgfQogICAgICAg
ICBicmVhazsKICAgICBjYXNlIFBhdHRlcm5SZXNvdXJjZVR5cGU6CiAgICAgY2FzZSBMaW5lYXJH
cmFkaWVudFJlc291cmNlVHlwZToKICAgICBjYXNlIFJhZGlhbEdyYWRpZW50UmVzb3VyY2VUeXBl
OgotICAgICAgICBpZiAobV9maWxsID09IHJlc291cmNlKSB7Ci0gICAgICAgICAgICBtX2ZpbGwt
PmludmFsaWRhdGVDbGllbnRzKCk7Ci0gICAgICAgICAgICBtX2ZpbGwgPSAwOworICAgICAgICBp
ZiAoIW1fZmlsbFN0cm9rZURhdGEpCisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgaWYgKG1f
ZmlsbFN0cm9rZURhdGEtPmZpbGwgPT0gcmVzb3VyY2UpIHsKKyAgICAgICAgICAgIG1fZmlsbFN0
cm9rZURhdGEtPmZpbGwtPmludmFsaWRhdGVDbGllbnRzKCk7CisgICAgICAgICAgICBtX2ZpbGxT
dHJva2VEYXRhLT5maWxsID0gMDsKICAgICAgICAgfQotCi0gICAgICAgIGlmIChtX3N0cm9rZSA9
PSByZXNvdXJjZSkgewotICAgICAgICAgICAgbV9zdHJva2UtPmludmFsaWRhdGVDbGllbnRzKCk7
Ci0gICAgICAgICAgICBtX3N0cm9rZSA9IDA7CisgICAgICAgIGlmIChtX2ZpbGxTdHJva2VEYXRh
LT5zdHJva2UgPT0gcmVzb3VyY2UpIHsKKyAgICAgICAgICAgIG1fZmlsbFN0cm9rZURhdGEtPnN0
cm9rZS0+aW52YWxpZGF0ZUNsaWVudHMoKTsKKyAgICAgICAgICAgIG1fZmlsbFN0cm9rZURhdGEt
PnN0cm9rZSA9IDA7CiAgICAgICAgIH0KICAgICAgICAgYnJlYWs7CiAjaWYgRU5BQkxFKEZJTFRF
UlMpCiAgICAgY2FzZSBGaWx0ZXJSZXNvdXJjZVR5cGU6Ci0gICAgICAgIGlmIChtX2ZpbHRlciA9
PSByZXNvdXJjZSkgewotICAgICAgICAgICAgbV9maWx0ZXItPmludmFsaWRhdGVDbGllbnRzKCk7
Ci0gICAgICAgICAgICBtX2ZpbHRlciA9IDA7CisgICAgICAgIGlmICghbV9jbGlwcGVyRmlsdGVy
TWFza2VyRGF0YSkKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBpZiAobV9jbGlwcGVyRmls
dGVyTWFza2VyRGF0YS0+ZmlsdGVyID09IHJlc291cmNlKSB7CisgICAgICAgICAgICBtX2NsaXBw
ZXJGaWx0ZXJNYXNrZXJEYXRhLT5maWx0ZXItPmludmFsaWRhdGVDbGllbnRzKCk7CisgICAgICAg
ICAgICBtX2NsaXBwZXJGaWx0ZXJNYXNrZXJEYXRhLT5maWx0ZXIgPSAwOwogICAgICAgICB9CiAg
ICAgICAgIGJyZWFrOwogI2VuZGlmCiAgICAgY2FzZSBDbGlwcGVyUmVzb3VyY2VUeXBlOgotICAg
ICAgICBpZiAobV9jbGlwcGVyID09IHJlc291cmNlKSB7Ci0gICAgICAgICAgICBtX2NsaXBwZXIt
PmludmFsaWRhdGVDbGllbnRzKCk7Ci0gICAgICAgICAgICBtX2NsaXBwZXIgPSAwOworICAgICAg
ICBpZiAoIW1fY2xpcHBlckZpbHRlck1hc2tlckRhdGEpCisgICAgICAgICAgICBicmVhazsgCisg
ICAgICAgIGlmIChtX2NsaXBwZXJGaWx0ZXJNYXNrZXJEYXRhLT5jbGlwcGVyID09IHJlc291cmNl
KSB7CisgICAgICAgICAgICBtX2NsaXBwZXJGaWx0ZXJNYXNrZXJEYXRhLT5jbGlwcGVyLT5pbnZh
bGlkYXRlQ2xpZW50cygpOworICAgICAgICAgICAgbV9jbGlwcGVyRmlsdGVyTWFza2VyRGF0YS0+
Y2xpcHBlciA9IDA7CiAgICAgICAgIH0KICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBTb2xpZENv
bG9yUmVzb3VyY2VUeXBlOgpAQCAtMjUwLDc3ICszMzgsMTg5IEBAIHZvaWQgU1ZHUmVzb3VyY2Vz
OjpyZXNvdXJjZURlc3Ryb3llZChSZW4KIAogdm9pZCBTVkdSZXNvdXJjZXM6OmJ1aWxkU2V0T2ZS
ZXNvdXJjZXMoSGFzaFNldDxSZW5kZXJTVkdSZXNvdXJjZUNvbnRhaW5lcio+JiBzZXQpCiB7Ci0g
ICAgLy8gT3JkaW5hcnkgcmVzb3VyY2VzCi0gICAgaWYgKG1fY2xpcHBlcikKLSAgICAgICAgc2V0
LmFkZChtX2NsaXBwZXIpOworICAgIGlmICghbV9jbGlwcGVyRmlsdGVyTWFza2VyRGF0YSAmJiAh
bV9tYXJrZXJEYXRhICYmICFtX2ZpbGxTdHJva2VEYXRhKQorICAgICAgICByZXR1cm47CisKKyAg
ICBpZiAobV9jbGlwcGVyRmlsdGVyTWFza2VyRGF0YSkgeworICAgICAgICBpZiAobV9jbGlwcGVy
RmlsdGVyTWFza2VyRGF0YS0+Y2xpcHBlcikKKyAgICAgICAgICAgIHNldC5hZGQobV9jbGlwcGVy
RmlsdGVyTWFza2VyRGF0YS0+Y2xpcHBlcik7CiAjaWYgRU5BQkxFKEZJTFRFUlMpCi0gICAgaWYg
KG1fZmlsdGVyKQotICAgICAgICBzZXQuYWRkKG1fZmlsdGVyKTsKKyAgICAgICAgaWYgKG1fY2xp
cHBlckZpbHRlck1hc2tlckRhdGEtPmZpbHRlcikKKyAgICAgICAgICAgIHNldC5hZGQobV9jbGlw
cGVyRmlsdGVyTWFza2VyRGF0YS0+ZmlsdGVyKTsKICNlbmRpZgotICAgIGlmIChtX21hcmtlclN0
YXJ0KQotICAgICAgICBzZXQuYWRkKG1fbWFya2VyU3RhcnQpOwotICAgIGlmIChtX21hcmtlck1p
ZCkKLSAgICAgICAgc2V0LmFkZChtX21hcmtlck1pZCk7Ci0gICAgaWYgKG1fbWFya2VyRW5kKQot
ICAgICAgICBzZXQuYWRkKG1fbWFya2VyRW5kKTsKLSAgICBpZiAobV9tYXNrZXIpCi0gICAgICAg
IHNldC5hZGQobV9tYXNrZXIpOwotCi0gICAgLy8gUGFpbnQgc2VydmVycyAKLSAgICBpZiAobV9m
aWxsKQotICAgICAgICBzZXQuYWRkKG1fZmlsbCk7Ci0gICAgaWYgKG1fc3Ryb2tlKQotICAgICAg
ICBzZXQuYWRkKG1fc3Ryb2tlKTsKKyAgICAgICAgaWYgKG1fY2xpcHBlckZpbHRlck1hc2tlckRh
dGEtPm1hc2tlcikKKyAgICAgICAgICAgIHNldC5hZGQobV9jbGlwcGVyRmlsdGVyTWFza2VyRGF0
YS0+bWFza2VyKTsKKyAgICB9CisKKyAgICBpZiAobV9tYXJrZXJEYXRhKSB7CisgICAgICAgIGlm
IChtX21hcmtlckRhdGEtPm1hcmtlclN0YXJ0KQorICAgICAgICAgICAgc2V0LmFkZChtX21hcmtl
ckRhdGEtPm1hcmtlclN0YXJ0KTsKKyAgICAgICAgaWYgKG1fbWFya2VyRGF0YS0+bWFya2VyTWlk
KQorICAgICAgICAgICAgc2V0LmFkZChtX21hcmtlckRhdGEtPm1hcmtlck1pZCk7CisgICAgICAg
IGlmIChtX21hcmtlckRhdGEtPm1hcmtlckVuZCkKKyAgICAgICAgICAgIHNldC5hZGQobV9tYXJr
ZXJEYXRhLT5tYXJrZXJFbmQpOworICAgIH0KKworICAgIGlmIChtX2ZpbGxTdHJva2VEYXRhKSB7
CisgICAgICAgIGlmIChtX2ZpbGxTdHJva2VEYXRhLT5maWxsKQorICAgICAgICAgICAgc2V0LmFk
ZChtX2ZpbGxTdHJva2VEYXRhLT5maWxsKTsKKyAgICAgICAgaWYgKG1fZmlsbFN0cm9rZURhdGEt
PnN0cm9rZSkKKyAgICAgICAgICAgIHNldC5hZGQobV9maWxsU3Ryb2tlRGF0YS0+c3Ryb2tlKTsK
KyAgICB9Cit9CisKK2Jvb2wgU1ZHUmVzb3VyY2VzOjpzZXRDbGlwcGVyKFJlbmRlclNWR1Jlc291
cmNlQ2xpcHBlciogY2xpcHBlcikKK3sKKyAgICBpZiAoIWNsaXBwZXIpCisgICAgICAgIHJldHVy
biBmYWxzZTsKKworICAgIGlmICghbV9jbGlwcGVyRmlsdGVyTWFza2VyRGF0YSkKKyAgICAgICAg
bV9jbGlwcGVyRmlsdGVyTWFza2VyRGF0YSA9IENsaXBwZXJGaWx0ZXJNYXNrZXJEYXRhOjpjcmVh
dGUoKTsKKworICAgIG1fY2xpcHBlckZpbHRlck1hc2tlckRhdGEtPmNsaXBwZXIgPSBjbGlwcGVy
OworICAgIHJldHVybiB0cnVlOwogfQogCiB2b2lkIFNWR1Jlc291cmNlczo6cmVzZXRDbGlwcGVy
KCkKIHsKLSAgICBBU1NFUlQobV9jbGlwcGVyKTsKLSAgICBtX2NsaXBwZXIgPSAwOworICAgIEFT
U0VSVChtX2NsaXBwZXJGaWx0ZXJNYXNrZXJEYXRhKTsKKyAgICBBU1NFUlQobV9jbGlwcGVyRmls
dGVyTWFza2VyRGF0YS0+Y2xpcHBlcik7CisgICAgbV9jbGlwcGVyRmlsdGVyTWFza2VyRGF0YS0+
Y2xpcHBlciA9IDA7CiB9CiAKICNpZiBFTkFCTEUoRklMVEVSUykKK2Jvb2wgU1ZHUmVzb3VyY2Vz
OjpzZXRGaWx0ZXIoUmVuZGVyU1ZHUmVzb3VyY2VGaWx0ZXIqIGZpbHRlcikKK3sKKyAgICBpZiAo
IWZpbHRlcikKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgaWYgKCFtX2NsaXBwZXJGaWx0
ZXJNYXNrZXJEYXRhKQorICAgICAgICBtX2NsaXBwZXJGaWx0ZXJNYXNrZXJEYXRhID0gQ2xpcHBl
ckZpbHRlck1hc2tlckRhdGE6OmNyZWF0ZSgpOworCisgICAgbV9jbGlwcGVyRmlsdGVyTWFza2Vy
RGF0YS0+ZmlsdGVyID0gZmlsdGVyOworICAgIHJldHVybiB0cnVlOworfQorCiB2b2lkIFNWR1Jl
c291cmNlczo6cmVzZXRGaWx0ZXIoKQogewotICAgIEFTU0VSVChtX2ZpbHRlcik7Ci0gICAgbV9m
aWx0ZXIgPSAwOworICAgIEFTU0VSVChtX2NsaXBwZXJGaWx0ZXJNYXNrZXJEYXRhKTsKKyAgICBB
U1NFUlQobV9jbGlwcGVyRmlsdGVyTWFza2VyRGF0YS0+ZmlsdGVyKTsKKyAgICBtX2NsaXBwZXJG
aWx0ZXJNYXNrZXJEYXRhLT5maWx0ZXIgPSAwOwogfQogI2VuZGlmCiAKK2Jvb2wgU1ZHUmVzb3Vy
Y2VzOjpzZXRNYXJrZXJTdGFydChSZW5kZXJTVkdSZXNvdXJjZU1hcmtlciogbWFya2VyU3RhcnQp
Cit7CisgICAgaWYgKCFtYXJrZXJTdGFydCkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAg
aWYgKCFtX21hcmtlckRhdGEpCisgICAgICAgIG1fbWFya2VyRGF0YSA9IE1hcmtlckRhdGE6OmNy
ZWF0ZSgpOworCisgICAgbV9tYXJrZXJEYXRhLT5tYXJrZXJTdGFydCA9IG1hcmtlclN0YXJ0Owor
ICAgIHJldHVybiB0cnVlOworfQorCiB2b2lkIFNWR1Jlc291cmNlczo6cmVzZXRNYXJrZXJTdGFy
dCgpCiB7Ci0gICAgQVNTRVJUKG1fbWFya2VyU3RhcnQpOwotICAgIG1fbWFya2VyU3RhcnQgPSAw
OworICAgIEFTU0VSVChtX21hcmtlckRhdGEpOworICAgIEFTU0VSVChtX21hcmtlckRhdGEtPm1h
cmtlclN0YXJ0KTsKKyAgICBtX21hcmtlckRhdGEtPm1hcmtlclN0YXJ0ID0gMDsKK30KKworYm9v
bCBTVkdSZXNvdXJjZXM6OnNldE1hcmtlck1pZChSZW5kZXJTVkdSZXNvdXJjZU1hcmtlciogbWFy
a2VyTWlkKQoreworICAgIGlmICghbWFya2VyTWlkKQorICAgICAgICByZXR1cm4gZmFsc2U7CisK
KyAgICBpZiAoIW1fbWFya2VyRGF0YSkKKyAgICAgICAgbV9tYXJrZXJEYXRhID0gTWFya2VyRGF0
YTo6Y3JlYXRlKCk7CisKKyAgICBtX21hcmtlckRhdGEtPm1hcmtlck1pZCA9IG1hcmtlck1pZDsK
KyAgICByZXR1cm4gdHJ1ZTsKIH0KIAogdm9pZCBTVkdSZXNvdXJjZXM6OnJlc2V0TWFya2VyTWlk
KCkKIHsKLSAgICBBU1NFUlQobV9tYXJrZXJNaWQpOwotICAgIG1fbWFya2VyTWlkID0gMDsKKyAg
ICBBU1NFUlQobV9tYXJrZXJEYXRhKTsKKyAgICBBU1NFUlQobV9tYXJrZXJEYXRhLT5tYXJrZXJN
aWQpOworICAgIG1fbWFya2VyRGF0YS0+bWFya2VyTWlkID0gMDsKK30KKworYm9vbCBTVkdSZXNv
dXJjZXM6OnNldE1hcmtlckVuZChSZW5kZXJTVkdSZXNvdXJjZU1hcmtlciogbWFya2VyRW5kKQor
eworICAgIGlmICghbWFya2VyRW5kKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBpZiAo
IW1fbWFya2VyRGF0YSkKKyAgICAgICAgbV9tYXJrZXJEYXRhID0gTWFya2VyRGF0YTo6Y3JlYXRl
KCk7CisKKyAgICBtX21hcmtlckRhdGEtPm1hcmtlckVuZCA9IG1hcmtlckVuZDsKKyAgICByZXR1
cm4gdHJ1ZTsKIH0KIAogdm9pZCBTVkdSZXNvdXJjZXM6OnJlc2V0TWFya2VyRW5kKCkKIHsKLSAg
ICBBU1NFUlQobV9tYXJrZXJFbmQpOwotICAgIG1fbWFya2VyRW5kID0gMDsKKyAgICBBU1NFUlQo
bV9tYXJrZXJEYXRhKTsKKyAgICBBU1NFUlQobV9tYXJrZXJEYXRhLT5tYXJrZXJFbmQpOworICAg
IG1fbWFya2VyRGF0YS0+bWFya2VyRW5kID0gMDsKK30KKworYm9vbCBTVkdSZXNvdXJjZXM6OnNl
dE1hc2tlcihSZW5kZXJTVkdSZXNvdXJjZU1hc2tlciogbWFza2VyKQoreworICAgIGlmICghbWFz
a2VyKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBpZiAoIW1fY2xpcHBlckZpbHRlck1h
c2tlckRhdGEpCisgICAgICAgIG1fY2xpcHBlckZpbHRlck1hc2tlckRhdGEgPSBDbGlwcGVyRmls
dGVyTWFza2VyRGF0YTo6Y3JlYXRlKCk7CisKKyAgICBtX2NsaXBwZXJGaWx0ZXJNYXNrZXJEYXRh
LT5tYXNrZXIgPSBtYXNrZXI7CisgICAgcmV0dXJuIHRydWU7CiB9CiAKIHZvaWQgU1ZHUmVzb3Vy
Y2VzOjpyZXNldE1hc2tlcigpCiB7Ci0gICAgQVNTRVJUKG1fbWFza2VyKTsKLSAgICBtX21hc2tl
ciA9IDA7CisgICAgQVNTRVJUKG1fY2xpcHBlckZpbHRlck1hc2tlckRhdGEpOworICAgIEFTU0VS
VChtX2NsaXBwZXJGaWx0ZXJNYXNrZXJEYXRhLT5tYXNrZXIpOworICAgIG1fY2xpcHBlckZpbHRl
ck1hc2tlckRhdGEtPm1hc2tlciA9IDA7Cit9CisKK2Jvb2wgU1ZHUmVzb3VyY2VzOjpzZXRGaWxs
KFJlbmRlclNWR1Jlc291cmNlQ29udGFpbmVyKiBmaWxsKQoreworICAgIGlmICghZmlsbCkKKyAg
ICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgaWYgKCFtX2ZpbGxTdHJva2VEYXRhKQorICAgICAg
ICBtX2ZpbGxTdHJva2VEYXRhID0gRmlsbFN0cm9rZURhdGE6OmNyZWF0ZSgpOworCisgICAgbV9m
aWxsU3Ryb2tlRGF0YS0+ZmlsbCA9IGZpbGw7CisgICAgcmV0dXJuIHRydWU7CiB9CiAKIHZvaWQg
U1ZHUmVzb3VyY2VzOjpyZXNldEZpbGwoKQogewotICAgIEFTU0VSVChtX2ZpbGwpOwotICAgIG1f
ZmlsbCA9IDA7CisgICAgQVNTRVJUKG1fZmlsbFN0cm9rZURhdGEpOworICAgIEFTU0VSVChtX2Zp
bGxTdHJva2VEYXRhLT5maWxsKTsKKyAgICBtX2ZpbGxTdHJva2VEYXRhLT5maWxsID0gMDsKK30K
KworYm9vbCBTVkdSZXNvdXJjZXM6OnNldFN0cm9rZShSZW5kZXJTVkdSZXNvdXJjZUNvbnRhaW5l
ciogc3Ryb2tlKQoreworICAgIGlmICghc3Ryb2tlKQorICAgICAgICByZXR1cm4gZmFsc2U7CisK
KyAgICBpZiAoIW1fZmlsbFN0cm9rZURhdGEpCisgICAgICAgIG1fZmlsbFN0cm9rZURhdGEgPSBG
aWxsU3Ryb2tlRGF0YTo6Y3JlYXRlKCk7CisKKyAgICBtX2ZpbGxTdHJva2VEYXRhLT5zdHJva2Ug
PSBzdHJva2U7CisgICAgcmV0dXJuIHRydWU7CiB9CiAKIHZvaWQgU1ZHUmVzb3VyY2VzOjpyZXNl
dFN0cm9rZSgpCiB7Ci0gICAgQVNTRVJUKG1fc3Ryb2tlKTsKLSAgICBtX3N0cm9rZSA9IDA7Cisg
ICAgQVNTRVJUKG1fZmlsbFN0cm9rZURhdGEpOworICAgIEFTU0VSVChtX2ZpbGxTdHJva2VEYXRh
LT5zdHJva2UpOworICAgIG1fZmlsbFN0cm9rZURhdGEtPnN0cm9rZSA9IDA7CiB9CiAKICNpZm5k
ZWYgTkRFQlVHCkBAIC0zMzQsMjQgKzUzNCwzMiBAQCB2b2lkIFNWR1Jlc291cmNlczo6ZHVtcChj
b25zdCBSZW5kZXJPYmplCiAgICAgb2JqZWN0LT5ub2RlKCktPnNob3dUcmVlRm9yVGhpcygpOwog
CiAgICAgZnByaW50ZihzdGRlcnIsICJcbiB8IExpc3Qgb2YgcmVzb3VyY2VzOlxuIik7Ci0gICAg
aWYgKG1fY2xpcHBlcikKLSAgICAgICAgZnByaW50ZihzdGRlcnIsICIgfC0+IENsaXBwZXIgICAg
OiAlcCAobm9kZT0lcClcbiIsIG1fY2xpcHBlciwgbV9jbGlwcGVyLT5ub2RlKCkpOworICAgIGlm
IChtX2NsaXBwZXJGaWx0ZXJNYXNrZXJEYXRhKSB7CisgICAgICAgIGlmIChSZW5kZXJTVkdSZXNv
dXJjZUNsaXBwZXIqIGNsaXBwZXIgPSBtX2NsaXBwZXJGaWx0ZXJNYXNrZXJEYXRhLT5jbGlwcGVy
KQorICAgICAgICAgICAgZnByaW50ZihzdGRlcnIsICIgfC0+IENsaXBwZXIgICAgOiAlcCAobm9k
ZT0lcClcbiIsIGNsaXBwZXIsIGNsaXBwZXItPm5vZGUoKSk7CiAjaWYgRU5BQkxFKEZJTFRFUlMp
Ci0gICAgaWYgKG1fZmlsdGVyKQotICAgICAgICBmcHJpbnRmKHN0ZGVyciwgIiB8LT4gRmlsdGVy
ICAgICA6ICVwIChub2RlPSVwKVxuIiwgbV9maWx0ZXIsIG1fZmlsdGVyLT5ub2RlKCkpOworICAg
ICAgICBpZiAoUmVuZGVyU1ZHUmVzb3VyY2VGaWx0ZXIqIGZpbHRlciA9IG1fY2xpcHBlckZpbHRl
ck1hc2tlckRhdGEtPmZpbHRlcikKKyAgICAgICAgICAgIGZwcmludGYoc3RkZXJyLCAiIHwtPiBG
aWx0ZXIgICAgIDogJXAgKG5vZGU9JXApXG4iLCBmaWx0ZXIsIGZpbHRlci0+bm9kZSgpKTsKICNl
bmRpZgotICAgIGlmIChtX21hcmtlclN0YXJ0KQotICAgICAgICBmcHJpbnRmKHN0ZGVyciwgIiB8
LT4gTWFya2VyU3RhcnQ6ICVwIChub2RlPSVwKVxuIiwgbV9tYXJrZXJTdGFydCwgbV9tYXJrZXJT
dGFydC0+bm9kZSgpKTsKLSAgICBpZiAobV9tYXJrZXJNaWQpCi0gICAgICAgIGZwcmludGYoc3Rk
ZXJyLCAiIHwtPiBNYXJrZXJNaWQgIDogJXAgKG5vZGU9JXApXG4iLCBtX21hcmtlck1pZCwgbV9t
YXJrZXJNaWQtPm5vZGUoKSk7Ci0gICAgaWYgKG1fbWFya2VyRW5kKQotICAgICAgICBmcHJpbnRm
KHN0ZGVyciwgIiB8LT4gTWFya2VyRW5kICA6ICVwIChub2RlPSVwKVxuIiwgbV9tYXJrZXJFbmQs
IG1fbWFya2VyRW5kLT5ub2RlKCkpOwotICAgIGlmIChtX21hc2tlcikKLSAgICAgICAgZnByaW50
ZihzdGRlcnIsICIgfC0+IE1hc2tlciAgICAgOiAlcCAobm9kZT0lcClcbiIsIG1fbWFza2VyLCBt
X21hc2tlci0+bm9kZSgpKTsKLSAgICBpZiAobV9maWxsKQotICAgICAgICBmcHJpbnRmKHN0ZGVy
ciwgIiB8LT4gRmlsbCAgICAgICA6ICVwIChub2RlPSVwKVxuIiwgbV9maWxsLCBtX2ZpbGwtPm5v
ZGUoKSk7Ci0gICAgaWYgKG1fc3Ryb2tlKQotICAgICAgICBmcHJpbnRmKHN0ZGVyciwgIiB8LT4g
U3Ryb2tlICAgICA6ICVwIChub2RlPSVwKVxuIiwgbV9zdHJva2UsIG1fc3Ryb2tlLT5ub2RlKCkp
OworICAgICAgICBpZiAoUmVuZGVyU1ZHUmVzb3VyY2VNYXNrZXIqIG1hc2tlciA9IG1fY2xpcHBl
ckZpbHRlck1hc2tlckRhdGEtPm1hc2tlcikKKyAgICAgICAgICAgIGZwcmludGYoc3RkZXJyLCAi
IHwtPiBNYXNrZXIgICAgIDogJXAgKG5vZGU9JXApXG4iLCBtYXNrZXIsIG1hc2tlci0+bm9kZSgp
KTsKKyAgICB9CisKKyAgICBpZiAobV9tYXJrZXJEYXRhKSB7CisgICAgICAgIGlmIChSZW5kZXJT
VkdSZXNvdXJjZU1hcmtlciogbWFya2VyU3RhcnQgPSBtX21hcmtlckRhdGEtPm1hcmtlclN0YXJ0
KQorICAgICAgICAgICAgZnByaW50ZihzdGRlcnIsICIgfC0+IE1hcmtlclN0YXJ0OiAlcCAobm9k
ZT0lcClcbiIsIG1hcmtlclN0YXJ0LCBtYXJrZXJTdGFydC0+bm9kZSgpKTsKKyAgICAgICAgaWYg
KFJlbmRlclNWR1Jlc291cmNlTWFya2VyKiBtYXJrZXJNaWQgPSBtX21hcmtlckRhdGEtPm1hcmtl
ck1pZCkKKyAgICAgICAgICAgIGZwcmludGYoc3RkZXJyLCAiIHwtPiBNYXJrZXJNaWQgIDogJXAg
KG5vZGU9JXApXG4iLCBtYXJrZXJNaWQsIG1hcmtlck1pZC0+bm9kZSgpKTsKKyAgICAgICAgaWYg
KFJlbmRlclNWR1Jlc291cmNlTWFya2VyKiBtYXJrZXJFbmQgPSBtX21hcmtlckRhdGEtPm1hcmtl
ckVuZCkKKyAgICAgICAgICAgIGZwcmludGYoc3RkZXJyLCAiIHwtPiBNYXJrZXJFbmQgIDogJXAg
KG5vZGU9JXApXG4iLCBtYXJrZXJFbmQsIG1hcmtlckVuZC0+bm9kZSgpKTsKKyAgICB9CisKKyAg
ICBpZiAobV9maWxsU3Ryb2tlRGF0YSkgeworICAgICAgICBpZiAoUmVuZGVyU1ZHUmVzb3VyY2VD
b250YWluZXIqIGZpbGwgPSBtX2ZpbGxTdHJva2VEYXRhLT5maWxsKQorICAgICAgICAgICAgZnBy
aW50ZihzdGRlcnIsICIgfC0+IEZpbGwgICAgICAgOiAlcCAobm9kZT0lcClcbiIsIGZpbGwsIGZp
bGwtPm5vZGUoKSk7CisgICAgICAgIGlmIChSZW5kZXJTVkdSZXNvdXJjZUNvbnRhaW5lciogc3Ry
b2tlID0gbV9maWxsU3Ryb2tlRGF0YS0+c3Ryb2tlKQorICAgICAgICAgICAgZnByaW50ZihzdGRl
cnIsICIgfC0+IFN0cm9rZSAgICAgOiAlcCAobm9kZT0lcClcbiIsIHN0cm9rZSwgc3Ryb2tlLT5u
b2RlKCkpOworICAgIH0KIH0KICNlbmRpZgogCkluZGV4OiBXZWJDb3JlL3JlbmRlcmluZy9TVkdS
ZXNvdXJjZXMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3JlbmRlcmluZy9TVkdSZXNvdXJjZXMu
aAkocmV2aXNpb24gNjQzNDIpCisrKyBXZWJDb3JlL3JlbmRlcmluZy9TVkdSZXNvdXJjZXMuaAko
d29ya2luZyBjb3B5KQpAQCAtMjMsNiArMjMsOCBAQAogI2lmIEVOQUJMRShTVkcpCiAjaW5jbHVk
ZSA8d3RmL0hhc2hTZXQuaD4KICNpbmNsdWRlIDx3dGYvTm9uY29weWFibGUuaD4KKyNpbmNsdWRl
IDx3dGYvT3duUHRyLmg+CisjaW5jbHVkZSA8d3RmL1Bhc3NPd25QdHIuaD4KIAogbmFtZXNwYWNl
IFdlYkNvcmUgewogCkBAIC00MywxOCArNDUsMTggQEAgcHVibGljOgogICAgIGJvb2wgYnVpbGRD
YWNoZWRSZXNvdXJjZXMoY29uc3QgUmVuZGVyT2JqZWN0KiwgY29uc3QgU1ZHUmVuZGVyU3R5bGUq
KTsKIAogICAgIC8vIE9yZGluYXJ5IHJlc291cmNlcwotICAgIFJlbmRlclNWR1Jlc291cmNlQ2xp
cHBlciogY2xpcHBlcigpIGNvbnN0IHsgcmV0dXJuIG1fY2xpcHBlcjsgfQorICAgIFJlbmRlclNW
R1Jlc291cmNlQ2xpcHBlciogY2xpcHBlcigpIGNvbnN0IHsgcmV0dXJuIG1fY2xpcHBlckZpbHRl
ck1hc2tlckRhdGEgPyBtX2NsaXBwZXJGaWx0ZXJNYXNrZXJEYXRhLT5jbGlwcGVyIDogMDsgfQog
I2lmIEVOQUJMRShGSUxURVJTKQotICAgIFJlbmRlclNWR1Jlc291cmNlRmlsdGVyKiBmaWx0ZXIo
KSBjb25zdCB7IHJldHVybiBtX2ZpbHRlcjsgfQorICAgIFJlbmRlclNWR1Jlc291cmNlRmlsdGVy
KiBmaWx0ZXIoKSBjb25zdCB7IHJldHVybiBtX2NsaXBwZXJGaWx0ZXJNYXNrZXJEYXRhID8gbV9j
bGlwcGVyRmlsdGVyTWFza2VyRGF0YS0+ZmlsdGVyIDogMDsgfQogI2VuZGlmCi0gICAgUmVuZGVy
U1ZHUmVzb3VyY2VNYXJrZXIqIG1hcmtlclN0YXJ0KCkgY29uc3QgeyByZXR1cm4gbV9tYXJrZXJT
dGFydDsgfQotICAgIFJlbmRlclNWR1Jlc291cmNlTWFya2VyKiBtYXJrZXJNaWQoKSBjb25zdCB7
IHJldHVybiBtX21hcmtlck1pZDsgfQotICAgIFJlbmRlclNWR1Jlc291cmNlTWFya2VyKiBtYXJr
ZXJFbmQoKSBjb25zdCB7IHJldHVybiBtX21hcmtlckVuZDsgfQotICAgIFJlbmRlclNWR1Jlc291
cmNlTWFza2VyKiBtYXNrZXIoKSBjb25zdCB7IHJldHVybiBtX21hc2tlcjsgfQorICAgIFJlbmRl
clNWR1Jlc291cmNlTWFya2VyKiBtYXJrZXJTdGFydCgpIGNvbnN0IHsgcmV0dXJuIG1fbWFya2Vy
RGF0YSA/IG1fbWFya2VyRGF0YS0+bWFya2VyU3RhcnQgOiAwOyB9CisgICAgUmVuZGVyU1ZHUmVz
b3VyY2VNYXJrZXIqIG1hcmtlck1pZCgpIGNvbnN0IHsgcmV0dXJuIG1fbWFya2VyRGF0YSA/IG1f
bWFya2VyRGF0YS0+bWFya2VyTWlkIDogMDsgfQorICAgIFJlbmRlclNWR1Jlc291cmNlTWFya2Vy
KiBtYXJrZXJFbmQoKSBjb25zdCB7IHJldHVybiBtX21hcmtlckRhdGEgPyBtX21hcmtlckRhdGEt
Pm1hcmtlckVuZCA6IDA7IH0KKyAgICBSZW5kZXJTVkdSZXNvdXJjZU1hc2tlciogbWFza2VyKCkg
Y29uc3QgeyByZXR1cm4gbV9jbGlwcGVyRmlsdGVyTWFza2VyRGF0YSA/IG1fY2xpcHBlckZpbHRl
ck1hc2tlckRhdGEtPm1hc2tlciA6IDA7IH0KIAogICAgIC8vIFBhaW50IHNlcnZlcnMKLSAgICBS
ZW5kZXJTVkdSZXNvdXJjZUNvbnRhaW5lciogZmlsbCgpIGNvbnN0IHsgcmV0dXJuIG1fZmlsbDsg
fQotICAgIFJlbmRlclNWR1Jlc291cmNlQ29udGFpbmVyKiBzdHJva2UoKSBjb25zdCB7IHJldHVy
biBtX3N0cm9rZTsgfQorICAgIFJlbmRlclNWR1Jlc291cmNlQ29udGFpbmVyKiBmaWxsKCkgY29u
c3QgeyByZXR1cm4gbV9maWxsU3Ryb2tlRGF0YSA/IG1fZmlsbFN0cm9rZURhdGEtPmZpbGwgOiAw
OyB9CisgICAgUmVuZGVyU1ZHUmVzb3VyY2VDb250YWluZXIqIHN0cm9rZSgpIGNvbnN0IHsgcmV0
dXJuIG1fZmlsbFN0cm9rZURhdGEgPyBtX2ZpbGxTdHJva2VEYXRhLT5zdHJva2UgOiAwOyB9CiAK
ICAgICB2b2lkIGJ1aWxkU2V0T2ZSZXNvdXJjZXMoSGFzaFNldDxSZW5kZXJTVkdSZXNvdXJjZUNv
bnRhaW5lcio+Jik7CiAKQEAgLTgyLDE5ICs4NCw4NyBAQCBwcml2YXRlOgogICAgIHZvaWQgcmVz
ZXRTdHJva2UoKTsKIAogcHJpdmF0ZToKLSAgICAvLyBPcmRpbmFyeSByZXNvdXJjZXMKLSAgICBS
ZW5kZXJTVkdSZXNvdXJjZUNsaXBwZXIqIG1fY2xpcHBlcjsKKyAgICBib29sIHNldENsaXBwZXIo
UmVuZGVyU1ZHUmVzb3VyY2VDbGlwcGVyKik7CisjaWYgRU5BQkxFKEZJTFRFUlMpCisgICAgYm9v
bCBzZXRGaWx0ZXIoUmVuZGVyU1ZHUmVzb3VyY2VGaWx0ZXIqKTsKKyNlbmRpZgorICAgIGJvb2wg
c2V0TWFya2VyU3RhcnQoUmVuZGVyU1ZHUmVzb3VyY2VNYXJrZXIqKTsKKyAgICBib29sIHNldE1h
cmtlck1pZChSZW5kZXJTVkdSZXNvdXJjZU1hcmtlciopOworICAgIGJvb2wgc2V0TWFya2VyRW5k
KFJlbmRlclNWR1Jlc291cmNlTWFya2VyKik7CisgICAgYm9vbCBzZXRNYXNrZXIoUmVuZGVyU1ZH
UmVzb3VyY2VNYXNrZXIqKTsKKyAgICBib29sIHNldEZpbGwoUmVuZGVyU1ZHUmVzb3VyY2VDb250
YWluZXIqKTsKKyAgICBib29sIHNldFN0cm9rZShSZW5kZXJTVkdSZXNvdXJjZUNvbnRhaW5lciop
OworCisgICAgLy8gRnJvbSBTVkcgMS4xIDJuZCBFZGl0aW9uCisgICAgLy8gY2xpcHBlcjogJ2Nv
bnRhaW5lciBlbGVtZW50cycgYW5kICdncmFwaGljcyBlbGVtZW50cycKKyAgICAvLyBmaWx0ZXI6
ICAnY29udGFpbmVyIGVsZW1lbnRzJyBhbmQgJ2dyYXBoaWNzIGVsZW1lbnRzJworICAgIC8vIG1h
c2tlcjogICdjb250YWluZXIgZWxlbWVudHMnIGFuZCAnZ3JhcGhpY3MgZWxlbWVudHMnCisgICAg
Ly8gLT4gYSwgY2lyY2xlLCBkZWZzLCBlbGxpcHNlLCBnbHlwaCwgZywgaW1hZ2UsIGxpbmUsIG1h
cmtlciwgbWFzaywgbWlzc2luZy1nbHlwaCwgcGF0aCwgcGF0dGVybiwgcG9seWdvbiwgcG9seWxp
bmUsIHJlY3QsIHN2Zywgc3dpdGNoLCBzeW1ib2wsIHRleHQsIHVzZQorICAgIHN0cnVjdCBDbGlw
cGVyRmlsdGVyTWFza2VyRGF0YSB7CisgICAgICAgIENsaXBwZXJGaWx0ZXJNYXNrZXJEYXRhKCkK
KyAgICAgICAgICAgIDogY2xpcHBlcigwKQogI2lmIEVOQUJMRShGSUxURVJTKQotICAgIFJlbmRl
clNWR1Jlc291cmNlRmlsdGVyKiBtX2ZpbHRlcjsKKyAgICAgICAgICAgICwgZmlsdGVyKDApCiAj
ZW5kaWYKLSAgICBSZW5kZXJTVkdSZXNvdXJjZU1hcmtlciogbV9tYXJrZXJTdGFydDsKLSAgICBS
ZW5kZXJTVkdSZXNvdXJjZU1hcmtlciogbV9tYXJrZXJNaWQ7Ci0gICAgUmVuZGVyU1ZHUmVzb3Vy
Y2VNYXJrZXIqIG1fbWFya2VyRW5kOwotICAgIFJlbmRlclNWR1Jlc291cmNlTWFza2VyKiBtX21h
c2tlcjsKKyAgICAgICAgICAgICwgbWFza2VyKDApCisgICAgICAgIHsKKyAgICAgICAgfQorCisg
ICAgICAgIHN0YXRpYyBQYXNzT3duUHRyPENsaXBwZXJGaWx0ZXJNYXNrZXJEYXRhPiBjcmVhdGUo
KQorICAgICAgICB7CisgICAgICAgICAgICByZXR1cm4gbmV3IENsaXBwZXJGaWx0ZXJNYXNrZXJE
YXRhOworICAgICAgICB9CiAKLSAgICAvLyBQYWludCBzZXJ2ZXJzCi0gICAgUmVuZGVyU1ZHUmVz
b3VyY2VDb250YWluZXIqIG1fZmlsbDsKLSAgICBSZW5kZXJTVkdSZXNvdXJjZUNvbnRhaW5lciog
bV9zdHJva2U7CisgICAgICAgIFJlbmRlclNWR1Jlc291cmNlQ2xpcHBlciogY2xpcHBlcjsKKyNp
ZiBFTkFCTEUoRklMVEVSUykKKyAgICAgICAgUmVuZGVyU1ZHUmVzb3VyY2VGaWx0ZXIqIGZpbHRl
cjsKKyNlbmRpZgorICAgICAgICBSZW5kZXJTVkdSZXNvdXJjZU1hc2tlciogbWFza2VyOworICAg
IH07CisKKyAgICAvLyBGcm9tIFNWRyAxLjEgMm5kIEVkaXRpb24KKyAgICAvLyBtYXJrZXI6IGxp
bmUsIHBhdGgsIHBvbHlnb24sIHBvbHlsaW5lCisgICAgc3RydWN0IE1hcmtlckRhdGEgeworICAg
ICAgICBNYXJrZXJEYXRhKCkKKyAgICAgICAgICAgIDogbWFya2VyU3RhcnQoMCkKKyAgICAgICAg
ICAgICwgbWFya2VyTWlkKDApCisgICAgICAgICAgICAsIG1hcmtlckVuZCgwKQorICAgICAgICB7
CisgICAgICAgIH0KKworICAgICAgICBzdGF0aWMgUGFzc093blB0cjxNYXJrZXJEYXRhPiBjcmVh
dGUoKQorICAgICAgICB7CisgICAgICAgICAgICByZXR1cm4gbmV3IE1hcmtlckRhdGE7CisgICAg
ICAgIH0KKworICAgICAgICBSZW5kZXJTVkdSZXNvdXJjZU1hcmtlciogbWFya2VyU3RhcnQ7Cisg
ICAgICAgIFJlbmRlclNWR1Jlc291cmNlTWFya2VyKiBtYXJrZXJNaWQ7CisgICAgICAgIFJlbmRl
clNWR1Jlc291cmNlTWFya2VyKiBtYXJrZXJFbmQ7CisgICAgfTsKKworICAgIC8vIEZyb20gU1ZH
IDEuMSAybmQgRWRpdGlvbgorICAgIC8vIGZpbGw6ICAgICAgICdzaGFwZXMnIGFuZCAndGV4dCBj
b250ZW50IGVsZW1lbnRzJworICAgIC8vIHN0cm9rZTogICAgICdzaGFwZXMnIGFuZCAndGV4dCBj
b250ZW50IGVsZW1lbnRzJworICAgIC8vIC0+IGFsdEdseXBoLCBjaXJjbGUsIGVsbGlwc2UsIGxp
bmUsIHBhdGgsIHBvbHlnb24sIHBvbHlsaW5lLCByZWN0LCB0ZXh0LCB0ZXh0UGF0aCwgdHJlZiwg
dHNwYW4KKyAgICBzdHJ1Y3QgRmlsbFN0cm9rZURhdGEgeworICAgICAgICBGaWxsU3Ryb2tlRGF0
YSgpCisgICAgICAgICAgICA6IGZpbGwoMCkKKyAgICAgICAgICAgICwgc3Ryb2tlKDApCisgICAg
ICAgIHsKKyAgICAgICAgfQorCisgICAgICAgIHN0YXRpYyBQYXNzT3duUHRyPEZpbGxTdHJva2VE
YXRhPiBjcmVhdGUoKQorICAgICAgICB7CisgICAgICAgICAgICByZXR1cm4gbmV3IEZpbGxTdHJv
a2VEYXRhOworICAgICAgICB9CisKKyAgICAgICAgUmVuZGVyU1ZHUmVzb3VyY2VDb250YWluZXIq
IGZpbGw7CisgICAgICAgIFJlbmRlclNWR1Jlc291cmNlQ29udGFpbmVyKiBzdHJva2U7CisgICAg
fTsKKworICAgIE93blB0cjxDbGlwcGVyRmlsdGVyTWFza2VyRGF0YT4gbV9jbGlwcGVyRmlsdGVy
TWFza2VyRGF0YTsKKyAgICBPd25QdHI8TWFya2VyRGF0YT4gbV9tYXJrZXJEYXRhOworICAgIE93
blB0cjxGaWxsU3Ryb2tlRGF0YT4gbV9maWxsU3Ryb2tlRGF0YTsKIH07CiAKIH0K
</data>
<flag name="review"
          id="51325"
          type_id="1"
          status="+"
          setter="krit"
    />
          </attachment>
      

    </bug>

</bugzilla>