<?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>48125</bug_id>
          
          <creation_ts>2010-10-22 05:30:03 -0700</creation_ts>
          <short_desc>Further preparations to deploy the new SVGAnimatedProperty concept for the rest of the SVG datatypes</short_desc>
          <delta_ts>2010-10-22 06:26:58 -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>PC</rep_platform>
          <op_sys>OS X 10.5</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>47905</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Nikolas Zimmermann">zimmermann</reporter>
          <assigned_to name="Nikolas Zimmermann">zimmermann</assigned_to>
          <cc>krit</cc>
    
    <cc>mdelaney7</cc>
    
    <cc>zimmermann</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>297920</commentid>
    <comment_count>0</comment_count>
    <who name="Nikolas Zimmermann">zimmermann</who>
    <bug_when>2010-10-22 05:30:03 -0700</bug_when>
    <thetext>SVGListPropertyTearOff &amp; friends need some futher tweaks, to allow more datatypes to use them.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>297921</commentid>
    <comment_count>1</comment_count>
      <attachid>71554</attachid>
    <who name="Nikolas Zimmermann">zimmermann</who>
    <bug_when>2010-10-22 05:33:29 -0700</bug_when>
    <thetext>Created attachment 71554
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>297940</commentid>
    <comment_count>2</comment_count>
      <attachid>71557</attachid>
    <who name="Nikolas Zimmermann">zimmermann</who>
    <bug_when>2010-10-22 06:13:17 -0700</bug_when>
    <thetext>Created attachment 71557
Patch v2

Ouch, forgot the destructor. SVGPropertyTearOff does it right, SVGListPropertyTearOff also needs to delete m_values if m_valuesIsCopy=true.
The code is yet unused, when I convert SVGStringList to use this new code, I would have noticed it on a leaks run...</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>297946</commentid>
    <comment_count>3</comment_count>
      <attachid>71557</attachid>
    <who name="Dirk Schulze">krit</who>
    <bug_when>2010-10-22 06:25:12 -0700</bug_when>
    <thetext>Comment on attachment 71557
Patch v2

LGTM. r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>297947</commentid>
    <comment_count>4</comment_count>
    <who name="Nikolas Zimmermann">zimmermann</who>
    <bug_when>2010-10-22 06:26:58 -0700</bug_when>
    <thetext>Landed in r70303.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>71554</attachid>
            <date>2010-10-22 05:33:29 -0700</date>
            <delta_ts>2010-10-22 06:13:17 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>PrepareSVGAnim.diff</filename>
            <type>text/plain</type>
            <size>22075</size>
            <attacher name="Nikolas Zimmermann">zimmermann</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA3MDMwMSkKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMzkgQEAKKzIwMTAtMTAtMjIgIE5pa29sYXMgWmltbWVybWFubiAgPG56aW1tZXJt
YW5uQHJpbS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgRnVydGhlciBwcmVwYXJhdGlvbnMgdG8gZGVwbG95IHRoZSBuZXcgU1ZHQW5pbWF0ZWRQ
cm9wZXJ0eSBjb25jZXB0IGZvciB0aGUgcmVzdCBvZiB0aGUgU1ZHIGRhdGF0eXBlcworICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDgxMjUKKworICAgICAg
ICBNb2RlbCBTVkdMaXN0UHJvcGVydHlUZWFyT2ZmIHNpbWlsYXIgdG8gU1ZHUHJvcGVydHlUZWFy
T2ZmLCBhbGxvdyBpdCB0byBiZSB1c2VkIGZvciBTVkdYWFhMaXN0IGRhdGF0eXBlcywgdGhhdCBh
cmUgbm90IGFuaW1hdGVkLiAoU1ZHU3RyaW5nTGlzdCkKKyAgICAgICAgUmVjb2duaXplIGFsbCBT
VkcgcHJpbWl0aXZlIGRhdGF0eXBlcyBpbiBTVkdQcm9wZXJ0eVRyYWl0cy4KKyAgICAgICAgQWRk
IGEgbmV3IC0gdGVtcG9yYXJ5IC0gbWFjcm8gdG8gc3VwcG9ydCBtdWx0aXBsZSBhbmltYXRlZCBw
cm9wZXJ0aWVzIHRoYXQgbWFwIHRvIGEgc2luZ2xlIERPTSBhdHRyaWJ1dGUgKGtlcm5lbFVuaXRM
ZW5ndGggYXR0cmlidXRlIHZzLiBrZXJuZWxVbml0TGVuZ3RoWC9ZIHByb3BlcnRpZXMpLgorICAg
ICAgICBUaGVzZSBtYWNyb3Mgd2lsbCBhbGwgYmUgcmVtb3ZlZCBhbmQgZXhwYW5kZWQgYnkgdGhl
aXIgY29udGVudCwgYXMgc29vbiBhcyB0aGUgdHJhbnNpdGlvbiB0byB0aGUgbmV3IFNWR0FuaW1h
dGVkUHJvcGVydHkgY29uY2VwdCBpcyBkb25lLgorCisgICAgICAgIERvZXNuJ3QgYWZmZWN0IGFu
eSB0ZXN0cy4KKworICAgICAgICAqIHN2Zy9wcm9wZXJ0aWVzL1NWR0FuaW1hdGVkUHJvcGVydHku
aDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR0FuaW1hdGVkUHJvcGVydHk6Omxvb2t1cE9yQ3JlYXRl
V3JhcHBlcik6CisgICAgICAgIChXZWJDb3JlOjpTVkdBbmltYXRlZFByb3BlcnR5Ojpsb29rdXBX
cmFwcGVyKToKKyAgICAgICAgKiBzdmcvcHJvcGVydGllcy9TVkdBbmltYXRlZFByb3BlcnR5TWFj
cm9zLmg6CisgICAgICAgICogc3ZnL3Byb3BlcnRpZXMvU1ZHQW5pbWF0ZWRQcm9wZXJ0eVN5bmNo
cm9uaXplci5oOgorICAgICAgICAqIHN2Zy9wcm9wZXJ0aWVzL1NWR0xpc3RQcm9wZXJ0eVRlYXJP
ZmYuaDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR0xpc3RQcm9wZXJ0eVRlYXJPZmY6OmNyZWF0ZSk6
CisgICAgICAgIChXZWJDb3JlOjpTVkdMaXN0UHJvcGVydHlUZWFyT2ZmOjpyZW1vdmVJdGVtRnJv
bUxpc3QpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHTGlzdFByb3BlcnR5VGVhck9mZjo6ZGV0YWNo
TGlzdFdyYXBwZXJzKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR0xpc3RQcm9wZXJ0eVRlYXJPZmY6
OmNsZWFyKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR0xpc3RQcm9wZXJ0eVRlYXJPZmY6Om51bWJl
ck9mSXRlbXMpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHTGlzdFByb3BlcnR5VGVhck9mZjo6aW5p
dGlhbGl6ZSk6CisgICAgICAgIChXZWJDb3JlOjpTVkdMaXN0UHJvcGVydHlUZWFyT2ZmOjpnZXRJ
dGVtKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR0xpc3RQcm9wZXJ0eVRlYXJPZmY6Omluc2VydEl0
ZW1CZWZvcmUpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHTGlzdFByb3BlcnR5VGVhck9mZjo6cmVw
bGFjZUl0ZW0pOgorICAgICAgICAoV2ViQ29yZTo6U1ZHTGlzdFByb3BlcnR5VGVhck9mZjo6cmVt
b3ZlSXRlbSk6CisgICAgICAgIChXZWJDb3JlOjpTVkdMaXN0UHJvcGVydHlUZWFyT2ZmOjphcHBl
bmRJdGVtKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR0xpc3RQcm9wZXJ0eVRlYXJPZmY6OlNWR0xp
c3RQcm9wZXJ0eVRlYXJPZmYpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHTGlzdFByb3BlcnR5VGVh
ck9mZjo6Y29tbWl0Q2hhbmdlKToKKyAgICAgICAgKiBzdmcvcHJvcGVydGllcy9TVkdQcm9wZXJ0
eVRlYXJPZmYuaDoKKyAgICAgICAgKiBzdmcvcHJvcGVydGllcy9TVkdQcm9wZXJ0eVRyYWl0cy5o
OgorCiAyMDEwLTEwLTIyICBMZWFuZHJvIEdyYWNpYSBHaWwgIDxsZWFuZHJvZ3JhY2lhQGdvb2ds
ZS5jb20+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgSmVyZW15IE9ybG93LgpJbmRleDogV2ViQ29y
ZS9zdmcvcHJvcGVydGllcy9TVkdBbmltYXRlZFByb3BlcnR5LmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2Vi
Q29yZS9zdmcvcHJvcGVydGllcy9TVkdBbmltYXRlZFByb3BlcnR5LmgJKHJldmlzaW9uIDcwMjIz
KQorKysgV2ViQ29yZS9zdmcvcHJvcGVydGllcy9TVkdBbmltYXRlZFByb3BlcnR5LmgJKHdvcmtp
bmcgY29weSkKQEAgLTU4LDkgKzU4LDkgQEAgcHVibGljOgogICAgIH0KIAogICAgIHRlbXBsYXRl
PHR5cGVuYW1lIFRlYXJPZmZUeXBlLCB0eXBlbmFtZSBQcm9wZXJ0eVR5cGU+Ci0gICAgc3RhdGlj
IFBhc3NSZWZQdHI8VGVhck9mZlR5cGU+IGxvb2t1cE9yQ3JlYXRlV3JhcHBlcihTVkdFbGVtZW50
KiBlbGVtZW50LCBjb25zdCBRdWFsaWZpZWROYW1lJiBhdHRyaWJ1dGVOYW1lLCBQcm9wZXJ0eVR5
cGUmIHByb3BlcnR5KQorICAgIHN0YXRpYyBQYXNzUmVmUHRyPFRlYXJPZmZUeXBlPiBsb29rdXBP
ckNyZWF0ZVdyYXBwZXIoU1ZHRWxlbWVudCogZWxlbWVudCwgY29uc3QgUXVhbGlmaWVkTmFtZSYg
YXR0cmlidXRlTmFtZSwgY29uc3QgQXRvbWljU3RyaW5nJiBhdHRyaWJ1dGVJZGVudGlmaWVyLCBQ
cm9wZXJ0eVR5cGUmIHByb3BlcnR5KQogICAgIHsKLSAgICAgICAgU1ZHQW5pbWF0ZWRQcm9wZXJ0
eURlc2NyaXB0aW9uIGtleShlbGVtZW50LCBhdHRyaWJ1dGVOYW1lLmxvY2FsTmFtZSgpKTsKKyAg
ICAgICAgU1ZHQW5pbWF0ZWRQcm9wZXJ0eURlc2NyaXB0aW9uIGtleShlbGVtZW50LCBhdHRyaWJ1
dGVJZGVudGlmaWVyKTsKICAgICAgICAgUmVmUHRyPFNWR0FuaW1hdGVkUHJvcGVydHk+IHdyYXBw
ZXIgPSBhbmltYXRlZFByb3BlcnR5Q2FjaGUoKS0+Z2V0KGtleSk7CiAgICAgICAgIGlmICghd3Jh
cHBlcikgewogICAgICAgICAgICAgd3JhcHBlciA9IFRlYXJPZmZUeXBlOjpjcmVhdGUoZWxlbWVu
dCwgYXR0cmlidXRlTmFtZSwgcHJvcGVydHkpOwpAQCAtNzEsOSArNzEsOSBAQCBwdWJsaWM6CiAg
ICAgfQogCiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVGVhck9mZlR5cGU+Ci0gICAgc3RhdGljIFRl
YXJPZmZUeXBlKiBsb29rdXBXcmFwcGVyKFNWR0VsZW1lbnQqIGVsZW1lbnQsIGNvbnN0IFF1YWxp
ZmllZE5hbWUmIGF0dHJpYnV0ZU5hbWUpCisgICAgc3RhdGljIFRlYXJPZmZUeXBlKiBsb29rdXBX
cmFwcGVyKFNWR0VsZW1lbnQqIGVsZW1lbnQsIGNvbnN0IEF0b21pY1N0cmluZyYgYXR0cmlidXRl
SWRlbnRpZmllcikKICAgICB7Ci0gICAgICAgIFNWR0FuaW1hdGVkUHJvcGVydHlEZXNjcmlwdGlv
biBrZXkoZWxlbWVudCwgYXR0cmlidXRlTmFtZS5sb2NhbE5hbWUoKSk7CisgICAgICAgIFNWR0Fu
aW1hdGVkUHJvcGVydHlEZXNjcmlwdGlvbiBrZXkoZWxlbWVudCwgYXR0cmlidXRlSWRlbnRpZmll
cik7CiAgICAgICAgIHJldHVybiBzdGF0aWNfcG9pbnRlcl9jYXN0PFRlYXJPZmZUeXBlPihhbmlt
YXRlZFByb3BlcnR5Q2FjaGUoKS0+Z2V0KGtleSkpLmdldCgpOwogICAgIH0KIApJbmRleDogV2Vi
Q29yZS9zdmcvcHJvcGVydGllcy9TVkdBbmltYXRlZFByb3BlcnR5TWFjcm9zLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gV2ViQ29yZS9zdmcvcHJvcGVydGllcy9TVkdBbmltYXRlZFByb3BlcnR5TWFjcm9zLmgJ
KHJldmlzaW9uIDcwMjIzKQorKysgV2ViQ29yZS9zdmcvcHJvcGVydGllcy9TVkdBbmltYXRlZFBy
b3BlcnR5TWFjcm9zLmgJKHdvcmtpbmcgY29weSkKQEAgLTI2LDYgKzI2LDcgQEAKICNpbmNsdWRl
ICJTVkdBbmltYXRlZExpc3RQcm9wZXJ0eVRlYXJPZmYuaCIKICNpbmNsdWRlICJTVkdBbmltYXRl
ZFByb3BlcnR5U3luY2hyb25pemVyLmgiCiAjaW5jbHVkZSAiU1ZHQW5pbWF0ZWRQcm9wZXJ0eVRl
YXJPZmYuaCIKKyNpbmNsdWRlICJTVkdOYW1lcy5oIiAvLyBGSVhNRTogVGVtcG9yYXJ5IGhhY2ss
IHVudGlsIHdlIGV4cGFuZCB0aGUgbWFjcm9zIGluIGFsbCBmaWxlcywgc28gd2UgZG9uJ3QgbmVl
ZCBhIGdsb2JhbCBTVkdOYW1lcy5oIGluY2x1ZGUKICNpbmNsdWRlICJTVkdQcm9wZXJ0eVRyYWl0
cy5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC01Nyw3ICs1OCw3IEBAIHN0cnVjdCBTVkdT
eW5jaHJvbml6YWJsZUFuaW1hdGVkUHJvcGVydHkKIH07CiAKIC8vIEZJWE1FOiBUaGVzZSBtYWNy
b3Mgc2hvdWxkIGJlIHJlbW92ZWQsIGFmdGVyIHRoZSB0cmFuc2l0aW9uIHRvIHRoZSBuZXcgU1ZH
QW5pbWF0ZWRQcm9wZXJ0eSBjb25jZXB0IGlzIGZpbmlzaGVkLgotI2RlZmluZSBERUNMQVJFX0FO
SU1BVEVEX1BST1BFUlRZX05FV19TSEFSRUQoT3duZXJUeXBlLCBET01BdHRyaWJ1dGUsIFRlYXJP
ZmZUeXBlLCBQcm9wZXJ0eVR5cGUsIFVwcGVyUHJvcGVydHksIExvd2VyUHJvcGVydHkpIFwKKyNk
ZWZpbmUgREVDTEFSRV9BTklNQVRFRF9QUk9QRVJUWV9ORVdfU0hBUkVEKE93bmVyVHlwZSwgRE9N
QXR0cmlidXRlLCBTVkdET01BdHRyaWJ1dGVJZGVudGlmaWVyLCBUZWFyT2ZmVHlwZSwgUHJvcGVy
dHlUeXBlLCBVcHBlclByb3BlcnR5LCBMb3dlclByb3BlcnR5KSBcCiBwdWJsaWM6IFwKIFByb3Bl
cnR5VHlwZSYgTG93ZXJQcm9wZXJ0eSgpIGNvbnN0IFwKIHsgXApAQCAtODYsMjAgKzg3LDIzIEBA
IHZvaWQgc3luY2hyb25pemUjI1VwcGVyUHJvcGVydHkoKSBcCiBQYXNzUmVmUHRyPFRlYXJPZmZU
eXBlPiBMb3dlclByb3BlcnR5IyNBbmltYXRlZCgpIFwKIHsgXAogICAgIG1fIyNMb3dlclByb3Bl
cnR5LnNob3VsZFN5bmNocm9uaXplID0gdHJ1ZTsgXAotICAgIHJldHVybiBTVkdBbmltYXRlZFBy
b3BlcnR5Ojpsb29rdXBPckNyZWF0ZVdyYXBwZXI8VGVhck9mZlR5cGUsIFByb3BlcnR5VHlwZT4o
dGhpcywgRE9NQXR0cmlidXRlLCBtXyMjTG93ZXJQcm9wZXJ0eS52YWx1ZSk7IFwKKyAgICByZXR1
cm4gU1ZHQW5pbWF0ZWRQcm9wZXJ0eTo6bG9va3VwT3JDcmVhdGVXcmFwcGVyPFRlYXJPZmZUeXBl
LCBQcm9wZXJ0eVR5cGU+KHRoaXMsIERPTUF0dHJpYnV0ZSwgU1ZHRE9NQXR0cmlidXRlSWRlbnRp
ZmllciwgbV8jI0xvd2VyUHJvcGVydHkudmFsdWUpOyBcCiB9IFwKIHByaXZhdGU6IFwKICAgICBt
dXRhYmxlIFNWR1N5bmNocm9uaXphYmxlQW5pbWF0ZWRQcm9wZXJ0eTxQcm9wZXJ0eVR5cGU+IG1f
IyNMb3dlclByb3BlcnR5OwogCiAjZGVmaW5lIERFQ0xBUkVfQU5JTUFURURfUFJPUEVSVFlfTkVX
KE93bmVyVHlwZSwgRE9NQXR0cmlidXRlLCBQcm9wZXJ0eVR5cGUsIFVwcGVyUHJvcGVydHksIExv
d2VyUHJvcGVydHkpIFwKLURFQ0xBUkVfQU5JTUFURURfUFJPUEVSVFlfTkVXX1NIQVJFRChPd25l
clR5cGUsIERPTUF0dHJpYnV0ZSwgU1ZHQW5pbWF0ZWRQcm9wZXJ0eVRlYXJPZmY8UHJvcGVydHlU
eXBlPiwgUHJvcGVydHlUeXBlLCBVcHBlclByb3BlcnR5LCBMb3dlclByb3BlcnR5KQorREVDTEFS
RV9BTklNQVRFRF9QUk9QRVJUWV9ORVdfU0hBUkVEKE93bmVyVHlwZSwgRE9NQXR0cmlidXRlLCBE
T01BdHRyaWJ1dGUubG9jYWxOYW1lKCksIFNWR0FuaW1hdGVkUHJvcGVydHlUZWFyT2ZmPFByb3Bl
cnR5VHlwZT4sIFByb3BlcnR5VHlwZSwgVXBwZXJQcm9wZXJ0eSwgTG93ZXJQcm9wZXJ0eSkKKwor
I2RlZmluZSBERUNMQVJFX0FOSU1BVEVEX1BST1BFUlRZX05FV19NVUxUSVBMRV9XUkFQUEVSUyhP
d25lclR5cGUsIERPTUF0dHJpYnV0ZSwgU1ZHRE9NQXR0cmlidXRlSWRlbnRpZmllciwgUHJvcGVy
dHlUeXBlLCBVcHBlclByb3BlcnR5LCBMb3dlclByb3BlcnR5KSBcCitERUNMQVJFX0FOSU1BVEVE
X1BST1BFUlRZX05FV19TSEFSRUQoT3duZXJUeXBlLCBET01BdHRyaWJ1dGUsIFNWR0RPTUF0dHJp
YnV0ZUlkZW50aWZpZXIsIFNWR0FuaW1hdGVkUHJvcGVydHlUZWFyT2ZmPFByb3BlcnR5VHlwZT4s
IFByb3BlcnR5VHlwZSwgVXBwZXJQcm9wZXJ0eSwgTG93ZXJQcm9wZXJ0eSkKIAogI2RlZmluZSBE
RUNMQVJFX0FOSU1BVEVEX0xJU1RfUFJPUEVSVFlfTkVXKE93bmVyVHlwZSwgRE9NQXR0cmlidXRl
LCBQcm9wZXJ0eVR5cGUsIFVwcGVyUHJvcGVydHksIExvd2VyUHJvcGVydHkpIFwKLURFQ0xBUkVf
QU5JTUFURURfUFJPUEVSVFlfTkVXX1NIQVJFRChPd25lclR5cGUsIERPTUF0dHJpYnV0ZSwgU1ZH
QW5pbWF0ZWRMaXN0UHJvcGVydHlUZWFyT2ZmPFByb3BlcnR5VHlwZT4sIFByb3BlcnR5VHlwZSwg
VXBwZXJQcm9wZXJ0eSwgTG93ZXJQcm9wZXJ0eSkgXAorREVDTEFSRV9BTklNQVRFRF9QUk9QRVJU
WV9ORVdfU0hBUkVEKE93bmVyVHlwZSwgRE9NQXR0cmlidXRlLCBET01BdHRyaWJ1dGUubG9jYWxO
YW1lKCksIFNWR0FuaW1hdGVkTGlzdFByb3BlcnR5VGVhck9mZjxQcm9wZXJ0eVR5cGU+LCBQcm9w
ZXJ0eVR5cGUsIFVwcGVyUHJvcGVydHksIExvd2VyUHJvcGVydHkpIFwKIFwKIHZvaWQgZGV0YWNo
QW5pbWF0ZWQjI1VwcGVyUHJvcGVydHkjI0xpc3RXcmFwcGVycyh1bnNpZ25lZCBuZXdMaXN0U2l6
ZSkgXAogeyBcCi0gICAgU1ZHQW5pbWF0ZWRQcm9wZXJ0eSogd3JhcHBlciA9IFNWR0FuaW1hdGVk
UHJvcGVydHk6Omxvb2t1cFdyYXBwZXI8U1ZHQW5pbWF0ZWRMaXN0UHJvcGVydHlUZWFyT2ZmPFBy
b3BlcnR5VHlwZT4gPih0aGlzLCBET01BdHRyaWJ1dGUpOyBcCisgICAgU1ZHQW5pbWF0ZWRQcm9w
ZXJ0eSogd3JhcHBlciA9IFNWR0FuaW1hdGVkUHJvcGVydHk6Omxvb2t1cFdyYXBwZXI8U1ZHQW5p
bWF0ZWRMaXN0UHJvcGVydHlUZWFyT2ZmPFByb3BlcnR5VHlwZT4gPih0aGlzLCBET01BdHRyaWJ1
dGUubG9jYWxOYW1lKCkpOyBcCiAgICAgaWYgKCF3cmFwcGVyKSBcCiAgICAgICAgIHJldHVybjsg
XAogICAgIHN0YXRpY19jYXN0PFNWR0FuaW1hdGVkTGlzdFByb3BlcnR5VGVhck9mZjxQcm9wZXJ0
eVR5cGU+Kj4od3JhcHBlciktPmRldGFjaExpc3RXcmFwcGVycyhuZXdMaXN0U2l6ZSk7IFwKSW5k
ZXg6IFdlYkNvcmUvc3ZnL3Byb3BlcnRpZXMvU1ZHQW5pbWF0ZWRQcm9wZXJ0eVN5bmNocm9uaXpl
ci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvc3ZnL3Byb3BlcnRpZXMvU1ZHQW5pbWF0ZWRQcm9w
ZXJ0eVN5bmNocm9uaXplci5oCShyZXZpc2lvbiA3MDIwOSkKKysrIFdlYkNvcmUvc3ZnL3Byb3Bl
cnRpZXMvU1ZHQW5pbWF0ZWRQcm9wZXJ0eVN5bmNocm9uaXplci5oCSh3b3JraW5nIGNvcHkpCkBA
IC0yMCw4ICsyMCw2IEBACiAjaWZuZGVmIFNWR0FuaW1hdGVkUHJvcGVydHlTeW5jaHJvbml6ZXJf
aAogI2RlZmluZSBTVkdBbmltYXRlZFByb3BlcnR5U3luY2hyb25pemVyX2gKIAotI2luY2x1ZGUg
IkRlcHJlY2F0ZWRTVkdBbmltYXRlZFByb3BlcnR5VHJhaXRzLmgiCi0KICNpZiBFTkFCTEUoU1ZH
KQogbmFtZXNwYWNlIFdlYkNvcmUgewogCkluZGV4OiBXZWJDb3JlL3N2Zy9wcm9wZXJ0aWVzL1NW
R0xpc3RQcm9wZXJ0eVRlYXJPZmYuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3N2Zy9wcm9wZXJ0
aWVzL1NWR0xpc3RQcm9wZXJ0eVRlYXJPZmYuaAkocmV2aXNpb24gNzAyMjMpCisrKyBXZWJDb3Jl
L3N2Zy9wcm9wZXJ0aWVzL1NWR0xpc3RQcm9wZXJ0eVRlYXJPZmYuaAkod29ya2luZyBjb3B5KQpA
QCAtNDEsMTcgKzQxLDI0IEBAIHB1YmxpYzoKICAgICB0eXBlZGVmIFBhc3NSZWZQdHI8TGlzdEl0
ZW1UZWFyT2ZmPiBQYXNzTGlzdEl0ZW1UZWFyT2ZmOwogICAgIHR5cGVkZWYgVmVjdG9yPFJlZlB0
cjxMaXN0SXRlbVRlYXJPZmY+ID4gTGlzdFdyYXBwZXJDYWNoZTsKIAorICAgIC8vIFVzZWQgZm9y
IFtTVkdBbmltYXRlZFByb3BlcnR5XSB0eXBlcyAoZm9yIGV4YW1wbGU6IFNWR0FuaW1hdGVkTGVu
Z3RoTGlzdDo6YmFzZVZhbCgpKQogICAgIHN0YXRpYyBQYXNzUmVmUHRyPFNlbGY+IGNyZWF0ZShT
VkdBbmltYXRlZFByb3BlcnR5KiBhbmltYXRlZFByb3BlcnR5LCBTVkdQcm9wZXJ0eVJvbGUgcm9s
ZSwgUHJvcGVydHlUeXBlJiB2YWx1ZXMpCiAgICAgewogICAgICAgICBBU1NFUlQoYW5pbWF0ZWRQ
cm9wZXJ0eSk7CiAgICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgU2VsZihhbmltYXRlZFByb3Bl
cnR5LCByb2xlLCB2YWx1ZXMpKTsKICAgICB9CiAKKyAgICAvLyBVc2VkIGZvciBub24tYW5pbWF0
ZWQgUE9EIHR5cGVzIChmb3IgZXhhbXBsZTogU1ZHU3RyaW5nTGlzdCkuCisgICAgc3RhdGljIFBh
c3NSZWZQdHI8U2VsZj4gY3JlYXRlKGNvbnN0IFByb3BlcnR5VHlwZSYgaW5pdGlhbFZhbHVlKQor
ICAgIHsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBTZWxmKGluaXRpYWxWYWx1ZSkpOwor
ICAgIH0KKwogICAgIGludCByZW1vdmVJdGVtRnJvbUxpc3QoTGlzdEl0ZW1UZWFyT2ZmKiByZW1v
dmVJdGVtLCBib29sIHNob3VsZFN5bmNocm9uaXplV3JhcHBlcnMpCiAgICAgewogICAgICAgICAv
LyBMb29rdXAgaXRlbSBpbiBjYWNoZSBhbmQgcmVtb3ZlIGl0cyBjb3JyZXNwb25kaW5nIHdyYXBw
ZXIuCiAgICAgICAgIHVuc2lnbmVkIHNpemUgPSBtX3dyYXBwZXJzLnNpemUoKTsKLSAgICAgICAg
QVNTRVJUKHNpemUgPT0gbV92YWx1ZXMuc2l6ZSgpKTsKKyAgICAgICAgQVNTRVJUKHNpemUgPT0g
bV92YWx1ZXMtPnNpemUoKSk7CiAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBzaXpl
OyArK2kpIHsKICAgICAgICAgICAgIFJlZlB0cjxMaXN0SXRlbVRlYXJPZmY+JiBpdGVtID0gbV93
cmFwcGVycy5hdChpKTsKICAgICAgICAgICAgIGlmIChpdGVtICE9IHJlbW92ZUl0ZW0pCkBAIC01
OSw3ICs2Niw3IEBAIHB1YmxpYzoKIAogICAgICAgICAgICAgaXRlbS0+ZGV0YWNoV3JhcHBlcigp
OwogICAgICAgICAgICAgbV93cmFwcGVycy5yZW1vdmUoaSk7Ci0gICAgICAgICAgICBtX3ZhbHVl
cy5yZW1vdmUoaSk7CisgICAgICAgICAgICBtX3ZhbHVlcy0+cmVtb3ZlKGkpOwogCiAgICAgICAg
ICAgICBpZiAoc2hvdWxkU3luY2hyb25pemVXcmFwcGVycykKICAgICAgICAgICAgICAgICBjb21t
aXRDaGFuZ2UoKTsKQEAgLTc0LDcgKzgxLDcgQEAgcHVibGljOgogICAgIHsKICAgICAgICAgLy8g
U2VlIFNWR1Byb3BlcnR5VGVhck9mZjo6ZGV0YWNoV3JhcHBlcigpIGZvciBhbiBleHBsYWluYXRp
b24gd2hhdCdzIGhhcHBlbmluZyBoZXJlLgogICAgICAgICB1bnNpZ25lZCBzaXplID0gbV93cmFw
cGVycy5zaXplKCk7Ci0gICAgICAgIEFTU0VSVChzaXplID09IG1fdmFsdWVzLnNpemUoKSk7Cisg
ICAgICAgIEFTU0VSVChzaXplID09IG1fdmFsdWVzLT5zaXplKCkpOwogICAgICAgICBmb3IgKHVu
c2lnbmVkIGkgPSAwOyBpIDwgc2l6ZTsgKytpKSB7CiAgICAgICAgICAgICBSZWZQdHI8TGlzdEl0
ZW1UZWFyT2ZmPiYgaXRlbSA9IG1fd3JhcHBlcnMuYXQoaSk7CiAgICAgICAgICAgICBpZiAoIWl0
ZW0pCkBAIC05OCwxMiArMTA1LDEyIEBAIHB1YmxpYzoKICAgICAgICAgfQogCiAgICAgICAgIGRl
dGFjaExpc3RXcmFwcGVycygwKTsKLSAgICAgICAgbV92YWx1ZXMuY2xlYXIoKTsKKyAgICAgICAg
bV92YWx1ZXMtPmNsZWFyKCk7CiAgICAgfQogCiAgICAgdW5zaWduZWQgbnVtYmVyT2ZJdGVtcygp
IGNvbnN0CiAgICAgewotICAgICAgICByZXR1cm4gbV92YWx1ZXMuc2l6ZSgpOworICAgICAgICBy
ZXR1cm4gbV92YWx1ZXMtPnNpemUoKTsKICAgICB9CiAKICAgICBQYXNzTGlzdEl0ZW1UZWFyT2Zm
IGluaXRpYWxpemUoUGFzc0xpc3RJdGVtVGVhck9mZiBwYXNzTmV3SXRlbSwgRXhjZXB0aW9uQ29k
ZSYgZWMpCkBAIC0xMjAsMTYgKzEyNywxNiBAQCBwdWJsaWM6CiAgICAgICAgIH0KIAogICAgICAg
ICBSZWZQdHI8TGlzdEl0ZW1UZWFyT2ZmPiBuZXdJdGVtID0gcGFzc05ld0l0ZW07Ci0gICAgICAg
IEFTU0VSVChtX3ZhbHVlcy5zaXplKCkgPT0gbV93cmFwcGVycy5zaXplKCkpOworICAgICAgICBB
U1NFUlQobV92YWx1ZXMtPnNpemUoKSA9PSBtX3dyYXBwZXJzLnNpemUoKSk7CiAKICAgICAgICAg
Ly8gU3BlYzogSWYgdGhlIGluc2VydGVkIGl0ZW0gaXMgYWxyZWFkeSBpbiBhIGxpc3QsIGl0IGlz
IHJlbW92ZWQgZnJvbSBpdHMgcHJldmlvdXMgbGlzdCBiZWZvcmUgaXQgaXMgaW5zZXJ0ZWQgaW50
byB0aGlzIGxpc3QuCiAgICAgICAgIHJlbW92ZUl0ZW1Gcm9tTGlzdElmTmVlZGVkKG5ld0l0ZW0u
Z2V0KCksIDApOwogCiAgICAgICAgIC8vIFNwZWM6IENsZWFycyBhbGwgZXhpc3RpbmcgY3VycmVu
dCBpdGVtcyBmcm9tIHRoZSBsaXN0IGFuZCByZS1pbml0aWFsaXplcyB0aGUgbGlzdCB0byBob2xk
IHRoZSBzaW5nbGUgaXRlbSBzcGVjaWZpZWQgYnkgdGhlIHBhcmFtZXRlci4KICAgICAgICAgZGV0
YWNoTGlzdFdyYXBwZXJzKDApOwotICAgICAgICBtX3ZhbHVlcy5jbGVhcigpOworICAgICAgICBt
X3ZhbHVlcy0+Y2xlYXIoKTsKICAgICAgICAgCi0gICAgICAgIG1fdmFsdWVzLmFwcGVuZChuZXdJ
dGVtLT5wcm9wZXJ0eVJlZmVyZW5jZSgpKTsKKyAgICAgICAgbV92YWx1ZXMtPmFwcGVuZChuZXdJ
dGVtLT5wcm9wZXJ0eVJlZmVyZW5jZSgpKTsKICAgICAgICAgbV93cmFwcGVycy5hcHBlbmQobmV3
SXRlbSk7CiAKICAgICAgICAgY29tbWl0Q2hhbmdlKCk7CkBAIC0xMzgsMjAgKzE0NSwyMCBAQCBw
dWJsaWM6CiAKICAgICBQYXNzTGlzdEl0ZW1UZWFyT2ZmIGdldEl0ZW0odW5zaWduZWQgaW5kZXgs
IEV4Y2VwdGlvbkNvZGUmIGVjKQogICAgIHsKLSAgICAgICAgaWYgKGluZGV4ID49IG1fdmFsdWVz
LnNpemUoKSkgeworICAgICAgICBpZiAoaW5kZXggPj0gbV92YWx1ZXMtPnNpemUoKSkgewogICAg
ICAgICAgICAgZWMgPSBJTkRFWF9TSVpFX0VSUjsKICAgICAgICAgICAgIHJldHVybiAwOwogICAg
ICAgICB9CiAKICAgICAgICAgLy8gU3BlYzogUmV0dXJucyB0aGUgc3BlY2lmaWVkIGl0ZW0gZnJv
bSB0aGUgbGlzdC4gVGhlIHJldHVybmVkIGl0ZW0gaXMgdGhlIGl0ZW0gaXRzZWxmIGFuZCBub3Qg
YSBjb3B5LgogICAgICAgICAvLyBBbnkgY2hhbmdlcyBtYWRlIHRvIHRoZSBpdGVtIGFyZSBpbW1l
ZGlhdGVseSByZWZsZWN0ZWQgaW4gdGhlIGxpc3QuCi0gICAgICAgIEFTU0VSVChtX3ZhbHVlcy5z
aXplKCkgPT0gbV93cmFwcGVycy5zaXplKCkpOworICAgICAgICBBU1NFUlQobV92YWx1ZXMtPnNp
emUoKSA9PSBtX3dyYXBwZXJzLnNpemUoKSk7CiAgICAgICAgIFJlZlB0cjxMaXN0SXRlbVRlYXJP
ZmY+IHdyYXBwZXIgPSBtX3dyYXBwZXJzLmF0KGluZGV4KTsKICAgICAgICAgaWYgKCF3cmFwcGVy
KSB7CiAgICAgICAgICAgICAvLyBDcmVhdGUgbmV3IHdyYXBwZXIsIHdoaWNoIGlzIGFsbG93ZWQg
dG8gZGlyZWN0bHkgbW9kaWZ5IHRoZSBpdGVtIGluIHRoZSBsaXN0LCB3L28gY29weWluZyBhbmQg
Y2FjaGUgdGhlIHdyYXBwZXIgaW4gb3VyIG1hcC4KICAgICAgICAgICAgIC8vIEl0IGlzIGFsc28g
YXNzb2NpYXRlZCB3aXRoIG91ciBhbmltYXRlZCBwcm9wZXJ0eSwgc28gaXQgY2FuIG5vdGlmeSB0
aGUgU1ZHIEVsZW1lbnQgd2hpY2ggaG9sZHMgdGhlIFNWR0FuaW1hdGVkKkxpc3QKICAgICAgICAg
ICAgIC8vIHRoYXQgaXQgaGFzIGJlZW4gbW9kaWZpZWQgKGFuZCB0aHVzIGNhbiBjYWxsIHN2Z0F0
dHJpYnV0ZUNoYW5nZWQoYXNzb2NpYXRlZEF0dHJpYnV0ZU5hbWUpKS4KLSAgICAgICAgICAgIHdy
YXBwZXIgPSBMaXN0SXRlbVRlYXJPZmY6OmNyZWF0ZShtX2FuaW1hdGVkUHJvcGVydHkuZ2V0KCks
IFVuZGVmaW5lZFJvbGUsIG1fdmFsdWVzLmF0KGluZGV4KSk7CisgICAgICAgICAgICB3cmFwcGVy
ID0gTGlzdEl0ZW1UZWFyT2ZmOjpjcmVhdGUobV9hbmltYXRlZFByb3BlcnR5LmdldCgpLCBVbmRl
ZmluZWRSb2xlLCBtX3ZhbHVlcy0+YXQoaW5kZXgpKTsKICAgICAgICAgICAgIG1fd3JhcHBlcnMu
YXQoaW5kZXgpID0gd3JhcHBlcjsKICAgICAgICAgfQogCkBAIC0xNzIsMTggKzE3OSwxOCBAQCBw
dWJsaWM6CiAgICAgICAgIH0KIAogICAgICAgICAvLyBTcGVjOiBJZiB0aGUgaW5kZXggaXMgZ3Jl
YXRlciB0aGFuIG9yIGVxdWFsIHRvIG51bWJlck9mSXRlbXMsIHRoZW4gdGhlIG5ldyBpdGVtIGlz
IGFwcGVuZGVkIHRvIHRoZSBlbmQgb2YgdGhlIGxpc3QuCi0gICAgICAgIGlmIChpbmRleCA+IG1f
dmFsdWVzLnNpemUoKSkKLSAgICAgICAgICAgICBpbmRleCA9IG1fdmFsdWVzLnNpemUoKTsKKyAg
ICAgICAgaWYgKGluZGV4ID4gbV92YWx1ZXMtPnNpemUoKSkKKyAgICAgICAgICAgICBpbmRleCA9
IG1fdmFsdWVzLT5zaXplKCk7CiAKICAgICAgICAgUmVmUHRyPExpc3RJdGVtVGVhck9mZj4gbmV3
SXRlbSA9IHBhc3NOZXdJdGVtOwotICAgICAgICBBU1NFUlQobV92YWx1ZXMuc2l6ZSgpID09IG1f
d3JhcHBlcnMuc2l6ZSgpKTsKKyAgICAgICAgQVNTRVJUKG1fdmFsdWVzLT5zaXplKCkgPT0gbV93
cmFwcGVycy5zaXplKCkpOwogCiAgICAgICAgIC8vIFNwZWM6IElmIG5ld0l0ZW0gaXMgYWxyZWFk
eSBpbiBhIGxpc3QsIGl0IGlzIHJlbW92ZWQgZnJvbSBpdHMgcHJldmlvdXMgbGlzdCBiZWZvcmUg
aXQgaXMgaW5zZXJ0ZWQgaW50byB0aGlzIGxpc3QuCiAgICAgICAgIHJlbW92ZUl0ZW1Gcm9tTGlz
dElmTmVlZGVkKG5ld0l0ZW0uZ2V0KCksICZpbmRleCk7CiAKICAgICAgICAgLy8gU3BlYzogSW5z
ZXJ0cyBhIG5ldyBpdGVtIGludG8gdGhlIGxpc3QgYXQgdGhlIHNwZWNpZmllZCBwb3NpdGlvbi4g
VGhlIGluZGV4IG9mIHRoZSBpdGVtIGJlZm9yZSB3aGljaCB0aGUgbmV3IGl0ZW0gaXMgdG8gYmUK
ICAgICAgICAgLy8gaW5zZXJ0ZWQuIFRoZSBmaXJzdCBpdGVtIGlzIG51bWJlciAwLiBJZiB0aGUg
aW5kZXggaXMgZXF1YWwgdG8gMCwgdGhlbiB0aGUgbmV3IGl0ZW0gaXMgaW5zZXJ0ZWQgYXQgdGhl
IGZyb250IG9mIHRoZSBsaXN0LgotICAgICAgICBtX3ZhbHVlcy5pbnNlcnQoaW5kZXgsIG5ld0l0
ZW0tPnByb3BlcnR5UmVmZXJlbmNlKCkpOworICAgICAgICBtX3ZhbHVlcy0+aW5zZXJ0KGluZGV4
LCBuZXdJdGVtLT5wcm9wZXJ0eVJlZmVyZW5jZSgpKTsKIAogICAgICAgICAvLyBTdG9yZSBuZXcg
d3JhcHBlciBhdCBwb3NpdGlvbiAnaW5kZXgnLCBjaGFuZ2UgaXRzIHVuZGVybHlpbmcgdmFsdWUs
IHNvIG11dGF0aW9ucyBvZiBuZXdJdGVtLCBkaXJlY3RseSBhZmZlY3QgdGhlIGl0ZW0gaW4gdGhl
IGxpc3QuCiAgICAgICAgIG1fd3JhcHBlcnMuaW5zZXJ0KGluZGV4LCBuZXdJdGVtKTsKQEAgLTE5
OSw3ICsyMDYsNyBAQCBwdWJsaWM6CiAgICAgICAgICAgICByZXR1cm4gMDsKICAgICAgICAgfQog
Ci0gICAgICAgIGlmIChpbmRleCA+PSBtX3ZhbHVlcy5zaXplKCkpIHsKKyAgICAgICAgaWYgKGlu
ZGV4ID49IG1fdmFsdWVzLT5zaXplKCkpIHsKICAgICAgICAgICAgIGVjID0gSU5ERVhfU0laRV9F
UlI7CiAgICAgICAgICAgICByZXR1cm4gMDsKICAgICAgICAgfQpAQCAtMjExLDcgKzIxOCw3IEBA
IHB1YmxpYzoKICAgICAgICAgfQogCiAgICAgICAgIFJlZlB0cjxMaXN0SXRlbVRlYXJPZmY+IG5l
d0l0ZW0gPSBwYXNzTmV3SXRlbTsKLSAgICAgICAgQVNTRVJUKG1fdmFsdWVzLnNpemUoKSA9PSBt
X3dyYXBwZXJzLnNpemUoKSk7CisgICAgICAgIEFTU0VSVChtX3ZhbHVlcy0+c2l6ZSgpID09IG1f
d3JhcHBlcnMuc2l6ZSgpKTsKIAogICAgICAgICAvLyBTcGVjOiBJZiBuZXdJdGVtIGlzIGFscmVh
ZHkgaW4gYSBsaXN0LCBpdCBpcyByZW1vdmVkIGZyb20gaXRzIHByZXZpb3VzIGxpc3QgYmVmb3Jl
IGl0IGlzIGluc2VydGVkIGludG8gdGhpcyBsaXN0LgogICAgICAgICAvLyBTcGVjOiBJZiB0aGUg
aXRlbSBpcyBhbHJlYWR5IGluIHRoaXMgbGlzdCwgbm90ZSB0aGF0IHRoZSBpbmRleCBvZiB0aGUg
aXRlbSB0byByZXBsYWNlIGlzIGJlZm9yZSB0aGUgcmVtb3ZhbCBvZiB0aGUgaXRlbS4KQEAgLTIy
Myw3ICsyMzAsNyBAQCBwdWJsaWM6CiAgICAgICAgICAgICBvbGRJdGVtLT5kZXRhY2hXcmFwcGVy
KCk7CiAKICAgICAgICAgLy8gVXBkYXRlIHRoZSB2YWx1ZSBhbmQgdGhlIHdyYXBwZXIgYXQgdGhl
IGRlc2lyZWQgcG9zaXRpb24gJ2luZGV4Jy4gCi0gICAgICAgIG1fdmFsdWVzLmF0KGluZGV4KSA9
IG5ld0l0ZW0tPnByb3BlcnR5UmVmZXJlbmNlKCk7CisgICAgICAgIG1fdmFsdWVzLT5hdChpbmRl
eCkgPSBuZXdJdGVtLT5wcm9wZXJ0eVJlZmVyZW5jZSgpOwogICAgICAgICBtX3dyYXBwZXJzLmF0
KGluZGV4KSA9IG5ld0l0ZW07CiAKICAgICAgICAgY29tbWl0Q2hhbmdlKCk7CkBAIC0yMzcsMTIg
KzI0NCwxMiBAQCBwdWJsaWM6CiAgICAgICAgICAgICByZXR1cm4gMDsKICAgICAgICAgfQogCi0g
ICAgICAgIGlmIChpbmRleCA+PSBtX3ZhbHVlcy5zaXplKCkpIHsKKyAgICAgICAgaWYgKGluZGV4
ID49IG1fdmFsdWVzLT5zaXplKCkpIHsKICAgICAgICAgICAgIGVjID0gSU5ERVhfU0laRV9FUlI7
CiAgICAgICAgICAgICByZXR1cm4gMDsKICAgICAgICAgfQogCi0gICAgICAgIEFTU0VSVChtX3Zh
bHVlcy5zaXplKCkgPT0gbV93cmFwcGVycy5zaXplKCkpOworICAgICAgICBBU1NFUlQobV92YWx1
ZXMtPnNpemUoKSA9PSBtX3dyYXBwZXJzLnNpemUoKSk7CiAKICAgICAgICAgLy8gRGV0YWNoIHRo
ZSBleGlzdGluZyB3cmFwcGVyLgogICAgICAgICBSZWZQdHI8TGlzdEl0ZW1UZWFyT2ZmPiYgb2xk
SXRlbSA9IG1fd3JhcHBlcnMuYXQoaW5kZXgpOwpAQCAtMjUxLDcgKzI1OCw3IEBAIHB1YmxpYzoK
ICAgICAgICAgICAgIG1fd3JhcHBlcnMucmVtb3ZlKGluZGV4KTsKICAgICAgICAgfQogCi0gICAg
ICAgIG1fdmFsdWVzLnJlbW92ZShpbmRleCk7CisgICAgICAgIG1fdmFsdWVzLT5yZW1vdmUoaW5k
ZXgpOwogCiAgICAgICAgIGNvbW1pdENoYW5nZSgpOwogICAgICAgICByZXR1cm4gb2xkSXRlbS5y
ZWxlYXNlKCk7CkBAIC0yNzEsMTMgKzI3OCwxMyBAQCBwdWJsaWM6CiAgICAgICAgIH0KIAogICAg
ICAgICBSZWZQdHI8TGlzdEl0ZW1UZWFyT2ZmPiBuZXdJdGVtID0gcGFzc05ld0l0ZW07Ci0gICAg
ICAgIEFTU0VSVChtX3ZhbHVlcy5zaXplKCkgPT0gbV93cmFwcGVycy5zaXplKCkpOworICAgICAg
ICBBU1NFUlQobV92YWx1ZXMtPnNpemUoKSA9PSBtX3dyYXBwZXJzLnNpemUoKSk7CiAKICAgICAg
ICAgLy8gU3BlYzogSWYgbmV3SXRlbSBpcyBhbHJlYWR5IGluIGEgbGlzdCwgaXQgaXMgcmVtb3Zl
ZCBmcm9tIGl0cyBwcmV2aW91cyBsaXN0IGJlZm9yZSBpdCBpcyBpbnNlcnRlZCBpbnRvIHRoaXMg
bGlzdC4KICAgICAgICAgcmVtb3ZlSXRlbUZyb21MaXN0SWZOZWVkZWQobmV3SXRlbS5nZXQoKSwg
MCk7CiAKICAgICAgICAgLy8gQXBwZW5kIHRoZSB2YWx1ZSBhbmQgd3JhcHBlciBhdCB0aGUgZW5k
IG9mIHRoZSBsaXN0LgotICAgICAgICBtX3ZhbHVlcy5hcHBlbmQobmV3SXRlbS0+cHJvcGVydHlS
ZWZlcmVuY2UoKSk7CisgICAgICAgIG1fdmFsdWVzLT5hcHBlbmQobmV3SXRlbS0+cHJvcGVydHlS
ZWZlcmVuY2UoKSk7CiAgICAgICAgIG1fd3JhcHBlcnMuYXBwZW5kKG5ld0l0ZW0pOwogCiAgICAg
ICAgIGNvbW1pdENoYW5nZSgpOwpAQCAtMjg4LDIzICsyOTUsMzQgQEAgcHJpdmF0ZToKICAgICBT
VkdMaXN0UHJvcGVydHlUZWFyT2ZmKFNWR0FuaW1hdGVkUHJvcGVydHkqIGFuaW1hdGVkUHJvcGVy
dHksIFNWR1Byb3BlcnR5Um9sZSByb2xlLCBQcm9wZXJ0eVR5cGUmIHZhbHVlcykKICAgICAgICAg
OiBtX2FuaW1hdGVkUHJvcGVydHkoYW5pbWF0ZWRQcm9wZXJ0eSkKICAgICAgICAgLCBtX3JvbGUo
cm9sZSkKLSAgICAgICAgLCBtX3ZhbHVlcyh2YWx1ZXMpCisgICAgICAgICwgbV92YWx1ZXMoJnZh
bHVlcykKKyAgICAgICAgLCBtX3ZhbHVlc0lzQ29weShmYWxzZSkKICAgICB7CisgICAgICAgIC8v
IFVzaW5nIG9wZXJhdG9yICYgaXMgY29tcGxldGx5IGZpbmUsIGFzIFNWR0FuaW1hdGVkUHJvcGVy
dHkgb3ducyB0aGlzIHJlZmVyZW5jZSwKKyAgICAgICAgLy8gYW5kIHdlJ3JlIGd1YXJhbnRlZWQg
dG8gbGl2ZSBhcyBsb25nIGFzIFNWR0FuaW1hdGVkUHJvcGVydHkgZG9lcy4KICAgICAgICAgaWYg
KCF2YWx1ZXMuaXNFbXB0eSgpKQogICAgICAgICAgICAgbV93cmFwcGVycy5maWxsKDAsIHZhbHVl
cy5zaXplKCkpOwogICAgIH0KIAorICAgIFNWR0xpc3RQcm9wZXJ0eVRlYXJPZmYoY29uc3QgUHJv
cGVydHlUeXBlJiBpbml0aWFsVmFsdWUpCisgICAgICAgIDogbV9hbmltYXRlZFByb3BlcnR5KDAp
CisgICAgICAgICwgbV9yb2xlKFVuZGVmaW5lZFJvbGUpCisgICAgICAgICwgbV92YWx1ZXMobmV3
IFByb3BlcnR5VHlwZShpbml0aWFsVmFsdWUpKQorICAgICAgICAsIG1fdmFsdWVzSXNDb3B5KHRy
dWUpCisgICAgeworICAgIH0KKwogICAgIHZvaWQgY29tbWl0Q2hhbmdlKCkKICAgICB7CiAgICAg
ICAgIC8vIFVwZGF0ZSBleGlzdGluZyB3cmFwcGVycywgYXMgdGhlIGluZGV4IGluIHRoZSBtX3Zh
bHVlcyBsaXN0IGhhcyBjaGFuZ2VkLgogICAgICAgICB1bnNpZ25lZCBzaXplID0gbV93cmFwcGVy
cy5zaXplKCk7Ci0gICAgICAgIEFTU0VSVChzaXplID09IG1fdmFsdWVzLnNpemUoKSk7CisgICAg
ICAgIEFTU0VSVChzaXplID09IG1fdmFsdWVzLT5zaXplKCkpOwogICAgICAgICBmb3IgKHVuc2ln
bmVkIGkgPSAwOyBpIDwgc2l6ZTsgKytpKSB7CiAgICAgICAgICAgICBSZWZQdHI8TGlzdEl0ZW1U
ZWFyT2ZmPiYgaXRlbSA9IG1fd3JhcHBlcnMuYXQoaSk7CiAgICAgICAgICAgICBpZiAoIWl0ZW0p
CiAgICAgICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgICAgICBpdGVtLT5zZXRBbmltYXRl
ZFByb3BlcnR5KG1fYW5pbWF0ZWRQcm9wZXJ0eS5nZXQoKSk7Ci0gICAgICAgICAgICBpdGVtLT5z
ZXRWYWx1ZShtX3ZhbHVlcy5hdChpKSk7CisgICAgICAgICAgICBpdGVtLT5zZXRWYWx1ZShtX3Zh
bHVlcy0+YXQoaSkpOwogICAgICAgICB9CiAKICAgICAgICAgQVNTRVJUKG1fYW5pbWF0ZWRQcm9w
ZXJ0eSk7CkBAIC0zNDcsNyArMzY1LDggQEAgcHJpdmF0ZToKICAgICBTVkdQcm9wZXJ0eVJvbGUg
bV9yb2xlOwogCiAgICAgLy8gRm9yIHRoZSBleGFtcGxlIGFib3ZlICh0ZXh0LnguYmFzZVZhbCk6
IEEgcmVmZXJlbmNlIHRvIHRoZSBTVkdMZW5ndGhMaXN0JiBzdG9yZWQgaW4gdGhlIFNWR1RleHRF
bGVtZW50LCB3aGljaCB3ZSBjYW4gZGlyZWN0bHkgbW9kaWZ5Ci0gICAgUHJvcGVydHlUeXBlJiBt
X3ZhbHVlczsKKyAgICBQcm9wZXJ0eVR5cGUqIG1fdmFsdWVzOworICAgIGJvb2wgbV92YWx1ZXNJ
c0NvcHkgOiAxOwogCiAgICAgLy8gQSBsaXN0IG9mIHdyYXBwZXJzLCB3aGljaCBpcyBhbHdheXMg
aW4gc3luYyBiZXR3ZWVuIG1fdmFsdWVzLgogICAgIExpc3RXcmFwcGVyQ2FjaGUgbV93cmFwcGVy
czsKSW5kZXg6IFdlYkNvcmUvc3ZnL3Byb3BlcnRpZXMvU1ZHUHJvcGVydHlUZWFyT2ZmLmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gV2ViQ29yZS9zdmcvcHJvcGVydGllcy9TVkdQcm9wZXJ0eVRlYXJPZmYuaAko
cmV2aXNpb24gNzAyMjMpCisrKyBXZWJDb3JlL3N2Zy9wcm9wZXJ0aWVzL1NWR1Byb3BlcnR5VGVh
ck9mZi5oCSh3b3JraW5nIGNvcHkpCkBAIC0yMSwxMyArMjEsMTIgQEAKICNkZWZpbmUgU1ZHUHJv
cGVydHlUZWFyT2ZmX2gKIAogI2lmIEVOQUJMRShTVkcpCisjaW5jbHVkZSAiU1ZHQW5pbWF0ZWRQ
cm9wZXJ0eS5oIgogI2luY2x1ZGUgIlNWR0VsZW1lbnQuaCIKICNpbmNsdWRlICJTVkdQcm9wZXJ0
eS5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLWNsYXNzIFNWR0FuaW1hdGVkUHJvcGVydHk7
Ci0KIHRlbXBsYXRlPHR5cGVuYW1lIFByb3BlcnR5VHlwZT4KIGNsYXNzIFNWR1Byb3BlcnR5VGVh
ck9mZiA6IHB1YmxpYyBTVkdQcm9wZXJ0eSB7CiBwdWJsaWM6CkBAIC00MSw3ICs0MCw3IEBAIHB1
YmxpYzoKICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBTZWxmKGFuaW1hdGVkUHJvcGVydHks
IHZhbHVlKSk7CiAgICAgfQogCi0gICAgLy8gVXNlZCBmb3IgW1NWR0xpdmVQcm9wZXJ0eV0gdHlw
ZXMgKGZvciBleGFtcGxlOiBTVkdTVkdFbGVtZW50OjpjcmVhdGVTVkdMZW5ndGgoKSkuCisgICAg
Ly8gVXNlZCBmb3Igbm9uLWFuaW1hdGVkIFBPRCB0eXBlcyAoZm9yIGV4YW1wbGU6IFNWR0xlbmd0
aCkuCiAgICAgc3RhdGljIFBhc3NSZWZQdHI8U2VsZj4gY3JlYXRlKGNvbnN0IFByb3BlcnR5VHlw
ZSYgaW5pdGlhbFZhbHVlKQogICAgIHsKICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBTZWxm
KGluaXRpYWxWYWx1ZSkpOwpJbmRleDogV2ViQ29yZS9zdmcvcHJvcGVydGllcy9TVkdQcm9wZXJ0
eVRyYWl0cy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvc3ZnL3Byb3BlcnRpZXMvU1ZHUHJvcGVy
dHlUcmFpdHMuaAkocmV2aXNpb24gNzAyMjMpCisrKyBXZWJDb3JlL3N2Zy9wcm9wZXJ0aWVzL1NW
R1Byb3BlcnR5VHJhaXRzLmgJKHdvcmtpbmcgY29weSkKQEAgLTIyLDQwICsyMiw5MCBAQAogI2Rl
ZmluZSBTVkdQcm9wZXJ0eVRyYWl0c19oCiAKICNpZiBFTkFCTEUoU1ZHKQorI2luY2x1ZGUgIkZs
b2F0UmVjdC5oIgorI2luY2x1ZGUgIlNWR0FuZ2xlLmgiCiAjaW5jbHVkZSAiU1ZHTGVuZ3RoLmgi
CiAjaW5jbHVkZSAiU1ZHTGVuZ3RoTGlzdC5oIgorI2luY2x1ZGUgIlNWR1ByZXNlcnZlQXNwZWN0
UmF0aW8uaCIKKyNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdCdWlsZGVyLmg+CiAKIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIAogdGVtcGxhdGU8dHlwZW5hbWUgUHJvcGVydHlUeXBlPgogc3RydWN0IFNW
R1Byb3BlcnR5VHJhaXRzIHsgfTsKIAotLy8gU1ZHQW5pbWF0ZWRMZW5ndGgKIHRlbXBsYXRlPD4K
LXN0cnVjdCBTVkdQcm9wZXJ0eVRyYWl0czxTVkdMZW5ndGg+IHsKLSAgICBzdGF0aWMgU1ZHTGVu
Z3RoJiBpbml0aWFsVmFsdWUoKQotICAgIHsKLSAgICAgICAgREVGSU5FX1NUQVRJQ19MT0NBTChT
VkdMZW5ndGgsIHNfaW5pdGlhbFZhbHVlLCAoKSk7Ci0gICAgICAgIHNfaW5pdGlhbFZhbHVlID0g
U1ZHTGVuZ3RoKCk7Ci0gICAgICAgIHJldHVybiBzX2luaXRpYWxWYWx1ZTsKLSAgICB9CitzdHJ1
Y3QgU1ZHUHJvcGVydHlUcmFpdHM8U1ZHQW5nbGU+IHsKKyAgICBzdGF0aWMgU1ZHQW5nbGUgaW5p
dGlhbFZhbHVlKCkgeyByZXR1cm4gU1ZHQW5nbGUoKTsgfQorICAgIHN0YXRpYyBTdHJpbmcgdG9T
dHJpbmcoY29uc3QgU1ZHQW5nbGUmIHR5cGUpIHsgcmV0dXJuIHR5cGUudmFsdWVBc1N0cmluZygp
OyB9Cit9OworCit0ZW1wbGF0ZTw+CitzdHJ1Y3QgU1ZHUHJvcGVydHlUcmFpdHM8Ym9vbD4gewor
ICAgIHN0YXRpYyBib29sIGluaXRpYWxWYWx1ZSgpIHsgcmV0dXJuIGZhbHNlOyB9CisgICAgc3Rh
dGljIFN0cmluZyB0b1N0cmluZyhib29sIHR5cGUpIHsgcmV0dXJuIHR5cGUgPyAidHJ1ZSIgOiAi
ZmFsc2UiOyB9Cit9OwogCit0ZW1wbGF0ZTw+CitzdHJ1Y3QgU1ZHUHJvcGVydHlUcmFpdHM8aW50
PiB7CisgICAgc3RhdGljIGludCBpbml0aWFsVmFsdWUoKSB7IHJldHVybiAwOyB9CisgICAgc3Rh
dGljIFN0cmluZyB0b1N0cmluZyhpbnQgdHlwZSkgeyByZXR1cm4gU3RyaW5nOjpudW1iZXIodHlw
ZSk7IH0KK307CisKK3RlbXBsYXRlPD4KK3N0cnVjdCBTVkdQcm9wZXJ0eVRyYWl0czxsb25nPiB7
CisgICAgc3RhdGljIGxvbmcgaW5pdGlhbFZhbHVlKCkgeyByZXR1cm4gMDsgfQorICAgIHN0YXRp
YyBTdHJpbmcgdG9TdHJpbmcobG9uZyB0eXBlKSB7IHJldHVybiBTdHJpbmc6Om51bWJlcih0eXBl
KTsgfQorfTsKKwordGVtcGxhdGU8Pgorc3RydWN0IFNWR1Byb3BlcnR5VHJhaXRzPFNWR0xlbmd0
aD4geworICAgIHN0YXRpYyBTVkdMZW5ndGggaW5pdGlhbFZhbHVlKCkgeyByZXR1cm4gU1ZHTGVu
Z3RoKCk7IH0KICAgICBzdGF0aWMgU3RyaW5nIHRvU3RyaW5nKGNvbnN0IFNWR0xlbmd0aCYgdHlw
ZSkgeyByZXR1cm4gdHlwZS52YWx1ZUFzU3RyaW5nKCk7IH0KIH07CiAKLS8vIFNWR0FuaW1hdGVk
TGVuZ3RoTGlzdAogdGVtcGxhdGU8Pgogc3RydWN0IFNWR1Byb3BlcnR5VHJhaXRzPFNWR0xlbmd0
aExpc3Q+IHsKICAgICB0eXBlZGVmIFNWR0xlbmd0aCBMaXN0SXRlbVR5cGU7CiAKLSAgICBzdGF0
aWMgU1ZHTGVuZ3RoTGlzdCYgaW5pdGlhbFZhbHVlKCkKKyAgICBzdGF0aWMgU1ZHTGVuZ3RoTGlz
dCBpbml0aWFsVmFsdWUoKSB7IHJldHVybiBTVkdMZW5ndGhMaXN0KCk7IH0KKyAgICBzdGF0aWMg
U3RyaW5nIHRvU3RyaW5nKGNvbnN0IFNWR0xlbmd0aExpc3QmIHR5cGUpIHsgcmV0dXJuIHR5cGUu
dmFsdWVBc1N0cmluZygpOyB9Cit9OworCit0ZW1wbGF0ZTw+CitzdHJ1Y3QgU1ZHUHJvcGVydHlU
cmFpdHM8ZmxvYXQ+IHsKKyAgICBzdGF0aWMgZmxvYXQgaW5pdGlhbFZhbHVlKCkgeyByZXR1cm4g
MDsgfQorICAgIHN0YXRpYyBTdHJpbmcgdG9TdHJpbmcoZmxvYXQgdHlwZSkgeyByZXR1cm4gU3Ry
aW5nOjpudW1iZXIodHlwZSk7IH0KK307CisKK3RlbXBsYXRlPD4KK3N0cnVjdCBTVkdQcm9wZXJ0
eVRyYWl0czxTVkdQcmVzZXJ2ZUFzcGVjdFJhdGlvPiB7CisgICAgc3RhdGljIFNWR1ByZXNlcnZl
QXNwZWN0UmF0aW8gaW5pdGlhbFZhbHVlKCkgeyByZXR1cm4gU1ZHUHJlc2VydmVBc3BlY3RSYXRp
bygpOyB9CisgICAgc3RhdGljIFN0cmluZyB0b1N0cmluZyhjb25zdCBTVkdQcmVzZXJ2ZUFzcGVj
dFJhdGlvJiB0eXBlKSB7IHJldHVybiB0eXBlLnZhbHVlQXNTdHJpbmcoKTsgfQorfTsKKwordGVt
cGxhdGU8Pgorc3RydWN0IFNWR1Byb3BlcnR5VHJhaXRzPEZsb2F0UmVjdD4geworICAgIHN0YXRp
YyBGbG9hdFJlY3QgaW5pdGlhbFZhbHVlKCkgeyByZXR1cm4gRmxvYXRSZWN0KCk7IH0KKyAgICBz
dGF0aWMgU3RyaW5nIHRvU3RyaW5nKGNvbnN0IEZsb2F0UmVjdCYgdHlwZSkKICAgICB7Ci0gICAg
ICAgIERFRklORV9TVEFUSUNfTE9DQUwoU1ZHTGVuZ3RoTGlzdCwgc19pbml0aWFsVmFsdWUsICgp
KTsKLSAgICAgICAgc19pbml0aWFsVmFsdWUgPSBTVkdMZW5ndGhMaXN0KCk7Ci0gICAgICAgIHJl
dHVybiBzX2luaXRpYWxWYWx1ZTsKKyAgICAgICAgU3RyaW5nQnVpbGRlciBidWlsZGVyOworICAg
ICAgICBidWlsZGVyLmFwcGVuZChTdHJpbmc6Om51bWJlcih0eXBlLngoKSkpOworICAgICAgICBi
dWlsZGVyLmFwcGVuZCgnICcpOworICAgICAgICBidWlsZGVyLmFwcGVuZChTdHJpbmc6Om51bWJl
cih0eXBlLnkoKSkpOworICAgICAgICBidWlsZGVyLmFwcGVuZCgnICcpOworICAgICAgICBidWls
ZGVyLmFwcGVuZChTdHJpbmc6Om51bWJlcih0eXBlLndpZHRoKCkpKTsKKyAgICAgICAgYnVpbGRl
ci5hcHBlbmQoJyAnKTsKKyAgICAgICAgYnVpbGRlci5hcHBlbmQoU3RyaW5nOjpudW1iZXIodHlw
ZS5oZWlnaHQoKSkpOworICAgICAgICBidWlsZGVyLmFwcGVuZCgnICcpOworICAgICAgICByZXR1
cm4gYnVpbGRlci50b1N0cmluZygpOwogICAgIH0KK307CiAKLSAgICBzdGF0aWMgU3RyaW5nIHRv
U3RyaW5nKGNvbnN0IFNWR0xlbmd0aExpc3QmIHR5cGUpIHsgcmV0dXJuIHR5cGUudmFsdWVBc1N0
cmluZygpOyB9Cit0ZW1wbGF0ZTw+CitzdHJ1Y3QgU1ZHUHJvcGVydHlUcmFpdHM8U3RyaW5nPiB7
CisgICAgc3RhdGljIFN0cmluZyBpbml0aWFsVmFsdWUoKSB7IHJldHVybiBTdHJpbmcoKTsgfQor
ICAgIHN0YXRpYyBTdHJpbmcgdG9TdHJpbmcoY29uc3QgU3RyaW5nJiB0eXBlKSB7IHJldHVybiB0
eXBlOyB9CiB9OwogCiB9Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>71557</attachid>
            <date>2010-10-22 06:13:17 -0700</date>
            <delta_ts>2010-10-22 06:25:12 -0700</delta_ts>
            <desc>Patch v2</desc>
            <filename>PrepareSVGAnim.diff</filename>
            <type>text/plain</type>
            <size>22291</size>
            <attacher name="Nikolas Zimmermann">zimmermann</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA3MDMwMSkKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsNDAgQEAKKzIwMTAtMTAtMjIgIE5pa29sYXMgWmltbWVybWFubiAgPG56aW1tZXJt
YW5uQHJpbS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgRnVydGhlciBwcmVwYXJhdGlvbnMgdG8gZGVwbG95IHRoZSBuZXcgU1ZHQW5pbWF0ZWRQ
cm9wZXJ0eSBjb25jZXB0IGZvciB0aGUgcmVzdCBvZiB0aGUgU1ZHIGRhdGF0eXBlcworICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDgxMjUKKworICAgICAg
ICBNb2RlbCBTVkdMaXN0UHJvcGVydHlUZWFyT2ZmIHNpbWlsYXIgdG8gU1ZHUHJvcGVydHlUZWFy
T2ZmLCBhbGxvdyBpdCB0byBiZSB1c2VkIGZvciBTVkdYWFhMaXN0IGRhdGF0eXBlcywgdGhhdCBh
cmUgbm90IGFuaW1hdGVkLiAoU1ZHU3RyaW5nTGlzdCkKKyAgICAgICAgUmVjb2duaXplIGFsbCBT
VkcgcHJpbWl0aXZlIGRhdGF0eXBlcyBpbiBTVkdQcm9wZXJ0eVRyYWl0cy4KKyAgICAgICAgQWRk
IGEgbmV3IC0gdGVtcG9yYXJ5IC0gbWFjcm8gdG8gc3VwcG9ydCBtdWx0aXBsZSBhbmltYXRlZCBw
cm9wZXJ0aWVzIHRoYXQgbWFwIHRvIGEgc2luZ2xlIERPTSBhdHRyaWJ1dGUgKGtlcm5lbFVuaXRM
ZW5ndGggYXR0cmlidXRlIHZzLiBrZXJuZWxVbml0TGVuZ3RoWC9ZIHByb3BlcnRpZXMpLgorICAg
ICAgICBUaGVzZSBtYWNyb3Mgd2lsbCBhbGwgYmUgcmVtb3ZlZCBhbmQgZXhwYW5kZWQgYnkgdGhl
aXIgY29udGVudCwgYXMgc29vbiBhcyB0aGUgdHJhbnNpdGlvbiB0byB0aGUgbmV3IFNWR0FuaW1h
dGVkUHJvcGVydHkgY29uY2VwdCBpcyBkb25lLgorCisgICAgICAgIERvZXNuJ3QgYWZmZWN0IGFu
eSB0ZXN0cyB5ZXQsIGFzIHRoZSBjb2RlIGlzIHN0aWxsIHVudXNlZC4KKworICAgICAgICAqIHN2
Zy9wcm9wZXJ0aWVzL1NWR0FuaW1hdGVkUHJvcGVydHkuaDoKKyAgICAgICAgKFdlYkNvcmU6OlNW
R0FuaW1hdGVkUHJvcGVydHk6Omxvb2t1cE9yQ3JlYXRlV3JhcHBlcik6CisgICAgICAgIChXZWJD
b3JlOjpTVkdBbmltYXRlZFByb3BlcnR5Ojpsb29rdXBXcmFwcGVyKToKKyAgICAgICAgKiBzdmcv
cHJvcGVydGllcy9TVkdBbmltYXRlZFByb3BlcnR5TWFjcm9zLmg6CisgICAgICAgICogc3ZnL3By
b3BlcnRpZXMvU1ZHQW5pbWF0ZWRQcm9wZXJ0eVN5bmNocm9uaXplci5oOgorICAgICAgICAqIHN2
Zy9wcm9wZXJ0aWVzL1NWR0xpc3RQcm9wZXJ0eVRlYXJPZmYuaDoKKyAgICAgICAgKFdlYkNvcmU6
OlNWR0xpc3RQcm9wZXJ0eVRlYXJPZmY6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpTVkdM
aXN0UHJvcGVydHlUZWFyT2ZmOjpyZW1vdmVJdGVtRnJvbUxpc3QpOgorICAgICAgICAoV2ViQ29y
ZTo6U1ZHTGlzdFByb3BlcnR5VGVhck9mZjo6ZGV0YWNoTGlzdFdyYXBwZXJzKToKKyAgICAgICAg
KFdlYkNvcmU6OlNWR0xpc3RQcm9wZXJ0eVRlYXJPZmY6OmNsZWFyKToKKyAgICAgICAgKFdlYkNv
cmU6OlNWR0xpc3RQcm9wZXJ0eVRlYXJPZmY6Om51bWJlck9mSXRlbXMpOgorICAgICAgICAoV2Vi
Q29yZTo6U1ZHTGlzdFByb3BlcnR5VGVhck9mZjo6aW5pdGlhbGl6ZSk6CisgICAgICAgIChXZWJD
b3JlOjpTVkdMaXN0UHJvcGVydHlUZWFyT2ZmOjpnZXRJdGVtKToKKyAgICAgICAgKFdlYkNvcmU6
OlNWR0xpc3RQcm9wZXJ0eVRlYXJPZmY6Omluc2VydEl0ZW1CZWZvcmUpOgorICAgICAgICAoV2Vi
Q29yZTo6U1ZHTGlzdFByb3BlcnR5VGVhck9mZjo6cmVwbGFjZUl0ZW0pOgorICAgICAgICAoV2Vi
Q29yZTo6U1ZHTGlzdFByb3BlcnR5VGVhck9mZjo6cmVtb3ZlSXRlbSk6CisgICAgICAgIChXZWJD
b3JlOjpTVkdMaXN0UHJvcGVydHlUZWFyT2ZmOjphcHBlbmRJdGVtKToKKyAgICAgICAgKFdlYkNv
cmU6OlNWR0xpc3RQcm9wZXJ0eVRlYXJPZmY6OlNWR0xpc3RQcm9wZXJ0eVRlYXJPZmYpOgorICAg
ICAgICAoV2ViQ29yZTo6U1ZHTGlzdFByb3BlcnR5VGVhck9mZjo6flNWR0xpc3RQcm9wZXJ0eVRl
YXJPZmYpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHTGlzdFByb3BlcnR5VGVhck9mZjo6Y29tbWl0
Q2hhbmdlKToKKyAgICAgICAgKiBzdmcvcHJvcGVydGllcy9TVkdQcm9wZXJ0eVRlYXJPZmYuaDoK
KyAgICAgICAgKiBzdmcvcHJvcGVydGllcy9TVkdQcm9wZXJ0eVRyYWl0cy5oOgorCiAyMDEwLTEw
LTIyICBMZWFuZHJvIEdyYWNpYSBHaWwgIDxsZWFuZHJvZ3JhY2lhQGdvb2dsZS5jb20+CiAKICAg
ICAgICAgUmV2aWV3ZWQgYnkgSmVyZW15IE9ybG93LgpJbmRleDogV2ViQ29yZS9zdmcvcHJvcGVy
dGllcy9TVkdBbmltYXRlZFByb3BlcnR5LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9zdmcvcHJv
cGVydGllcy9TVkdBbmltYXRlZFByb3BlcnR5LmgJKHJldmlzaW9uIDcwMjIzKQorKysgV2ViQ29y
ZS9zdmcvcHJvcGVydGllcy9TVkdBbmltYXRlZFByb3BlcnR5LmgJKHdvcmtpbmcgY29weSkKQEAg
LTU4LDkgKzU4LDkgQEAgcHVibGljOgogICAgIH0KIAogICAgIHRlbXBsYXRlPHR5cGVuYW1lIFRl
YXJPZmZUeXBlLCB0eXBlbmFtZSBQcm9wZXJ0eVR5cGU+Ci0gICAgc3RhdGljIFBhc3NSZWZQdHI8
VGVhck9mZlR5cGU+IGxvb2t1cE9yQ3JlYXRlV3JhcHBlcihTVkdFbGVtZW50KiBlbGVtZW50LCBj
b25zdCBRdWFsaWZpZWROYW1lJiBhdHRyaWJ1dGVOYW1lLCBQcm9wZXJ0eVR5cGUmIHByb3BlcnR5
KQorICAgIHN0YXRpYyBQYXNzUmVmUHRyPFRlYXJPZmZUeXBlPiBsb29rdXBPckNyZWF0ZVdyYXBw
ZXIoU1ZHRWxlbWVudCogZWxlbWVudCwgY29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0cmlidXRlTmFt
ZSwgY29uc3QgQXRvbWljU3RyaW5nJiBhdHRyaWJ1dGVJZGVudGlmaWVyLCBQcm9wZXJ0eVR5cGUm
IHByb3BlcnR5KQogICAgIHsKLSAgICAgICAgU1ZHQW5pbWF0ZWRQcm9wZXJ0eURlc2NyaXB0aW9u
IGtleShlbGVtZW50LCBhdHRyaWJ1dGVOYW1lLmxvY2FsTmFtZSgpKTsKKyAgICAgICAgU1ZHQW5p
bWF0ZWRQcm9wZXJ0eURlc2NyaXB0aW9uIGtleShlbGVtZW50LCBhdHRyaWJ1dGVJZGVudGlmaWVy
KTsKICAgICAgICAgUmVmUHRyPFNWR0FuaW1hdGVkUHJvcGVydHk+IHdyYXBwZXIgPSBhbmltYXRl
ZFByb3BlcnR5Q2FjaGUoKS0+Z2V0KGtleSk7CiAgICAgICAgIGlmICghd3JhcHBlcikgewogICAg
ICAgICAgICAgd3JhcHBlciA9IFRlYXJPZmZUeXBlOjpjcmVhdGUoZWxlbWVudCwgYXR0cmlidXRl
TmFtZSwgcHJvcGVydHkpOwpAQCAtNzEsOSArNzEsOSBAQCBwdWJsaWM6CiAgICAgfQogCiAgICAg
dGVtcGxhdGU8dHlwZW5hbWUgVGVhck9mZlR5cGU+Ci0gICAgc3RhdGljIFRlYXJPZmZUeXBlKiBs
b29rdXBXcmFwcGVyKFNWR0VsZW1lbnQqIGVsZW1lbnQsIGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0
dHJpYnV0ZU5hbWUpCisgICAgc3RhdGljIFRlYXJPZmZUeXBlKiBsb29rdXBXcmFwcGVyKFNWR0Vs
ZW1lbnQqIGVsZW1lbnQsIGNvbnN0IEF0b21pY1N0cmluZyYgYXR0cmlidXRlSWRlbnRpZmllcikK
ICAgICB7Ci0gICAgICAgIFNWR0FuaW1hdGVkUHJvcGVydHlEZXNjcmlwdGlvbiBrZXkoZWxlbWVu
dCwgYXR0cmlidXRlTmFtZS5sb2NhbE5hbWUoKSk7CisgICAgICAgIFNWR0FuaW1hdGVkUHJvcGVy
dHlEZXNjcmlwdGlvbiBrZXkoZWxlbWVudCwgYXR0cmlidXRlSWRlbnRpZmllcik7CiAgICAgICAg
IHJldHVybiBzdGF0aWNfcG9pbnRlcl9jYXN0PFRlYXJPZmZUeXBlPihhbmltYXRlZFByb3BlcnR5
Q2FjaGUoKS0+Z2V0KGtleSkpLmdldCgpOwogICAgIH0KIApJbmRleDogV2ViQ29yZS9zdmcvcHJv
cGVydGllcy9TVkdBbmltYXRlZFByb3BlcnR5TWFjcm9zLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29y
ZS9zdmcvcHJvcGVydGllcy9TVkdBbmltYXRlZFByb3BlcnR5TWFjcm9zLmgJKHJldmlzaW9uIDcw
MjIzKQorKysgV2ViQ29yZS9zdmcvcHJvcGVydGllcy9TVkdBbmltYXRlZFByb3BlcnR5TWFjcm9z
LmgJKHdvcmtpbmcgY29weSkKQEAgLTI2LDYgKzI2LDcgQEAKICNpbmNsdWRlICJTVkdBbmltYXRl
ZExpc3RQcm9wZXJ0eVRlYXJPZmYuaCIKICNpbmNsdWRlICJTVkdBbmltYXRlZFByb3BlcnR5U3lu
Y2hyb25pemVyLmgiCiAjaW5jbHVkZSAiU1ZHQW5pbWF0ZWRQcm9wZXJ0eVRlYXJPZmYuaCIKKyNp
bmNsdWRlICJTVkdOYW1lcy5oIiAvLyBGSVhNRTogVGVtcG9yYXJ5IGhhY2ssIHVudGlsIHdlIGV4
cGFuZCB0aGUgbWFjcm9zIGluIGFsbCBmaWxlcywgc28gd2UgZG9uJ3QgbmVlZCBhIGdsb2JhbCBT
VkdOYW1lcy5oIGluY2x1ZGUKICNpbmNsdWRlICJTVkdQcm9wZXJ0eVRyYWl0cy5oIgogCiBuYW1l
c3BhY2UgV2ViQ29yZSB7CkBAIC01Nyw3ICs1OCw3IEBAIHN0cnVjdCBTVkdTeW5jaHJvbml6YWJs
ZUFuaW1hdGVkUHJvcGVydHkKIH07CiAKIC8vIEZJWE1FOiBUaGVzZSBtYWNyb3Mgc2hvdWxkIGJl
IHJlbW92ZWQsIGFmdGVyIHRoZSB0cmFuc2l0aW9uIHRvIHRoZSBuZXcgU1ZHQW5pbWF0ZWRQcm9w
ZXJ0eSBjb25jZXB0IGlzIGZpbmlzaGVkLgotI2RlZmluZSBERUNMQVJFX0FOSU1BVEVEX1BST1BF
UlRZX05FV19TSEFSRUQoT3duZXJUeXBlLCBET01BdHRyaWJ1dGUsIFRlYXJPZmZUeXBlLCBQcm9w
ZXJ0eVR5cGUsIFVwcGVyUHJvcGVydHksIExvd2VyUHJvcGVydHkpIFwKKyNkZWZpbmUgREVDTEFS
RV9BTklNQVRFRF9QUk9QRVJUWV9ORVdfU0hBUkVEKE93bmVyVHlwZSwgRE9NQXR0cmlidXRlLCBT
VkdET01BdHRyaWJ1dGVJZGVudGlmaWVyLCBUZWFyT2ZmVHlwZSwgUHJvcGVydHlUeXBlLCBVcHBl
clByb3BlcnR5LCBMb3dlclByb3BlcnR5KSBcCiBwdWJsaWM6IFwKIFByb3BlcnR5VHlwZSYgTG93
ZXJQcm9wZXJ0eSgpIGNvbnN0IFwKIHsgXApAQCAtODYsMjAgKzg3LDIzIEBAIHZvaWQgc3luY2hy
b25pemUjI1VwcGVyUHJvcGVydHkoKSBcCiBQYXNzUmVmUHRyPFRlYXJPZmZUeXBlPiBMb3dlclBy
b3BlcnR5IyNBbmltYXRlZCgpIFwKIHsgXAogICAgIG1fIyNMb3dlclByb3BlcnR5LnNob3VsZFN5
bmNocm9uaXplID0gdHJ1ZTsgXAotICAgIHJldHVybiBTVkdBbmltYXRlZFByb3BlcnR5Ojpsb29r
dXBPckNyZWF0ZVdyYXBwZXI8VGVhck9mZlR5cGUsIFByb3BlcnR5VHlwZT4odGhpcywgRE9NQXR0
cmlidXRlLCBtXyMjTG93ZXJQcm9wZXJ0eS52YWx1ZSk7IFwKKyAgICByZXR1cm4gU1ZHQW5pbWF0
ZWRQcm9wZXJ0eTo6bG9va3VwT3JDcmVhdGVXcmFwcGVyPFRlYXJPZmZUeXBlLCBQcm9wZXJ0eVR5
cGU+KHRoaXMsIERPTUF0dHJpYnV0ZSwgU1ZHRE9NQXR0cmlidXRlSWRlbnRpZmllciwgbV8jI0xv
d2VyUHJvcGVydHkudmFsdWUpOyBcCiB9IFwKIHByaXZhdGU6IFwKICAgICBtdXRhYmxlIFNWR1N5
bmNocm9uaXphYmxlQW5pbWF0ZWRQcm9wZXJ0eTxQcm9wZXJ0eVR5cGU+IG1fIyNMb3dlclByb3Bl
cnR5OwogCiAjZGVmaW5lIERFQ0xBUkVfQU5JTUFURURfUFJPUEVSVFlfTkVXKE93bmVyVHlwZSwg
RE9NQXR0cmlidXRlLCBQcm9wZXJ0eVR5cGUsIFVwcGVyUHJvcGVydHksIExvd2VyUHJvcGVydHkp
IFwKLURFQ0xBUkVfQU5JTUFURURfUFJPUEVSVFlfTkVXX1NIQVJFRChPd25lclR5cGUsIERPTUF0
dHJpYnV0ZSwgU1ZHQW5pbWF0ZWRQcm9wZXJ0eVRlYXJPZmY8UHJvcGVydHlUeXBlPiwgUHJvcGVy
dHlUeXBlLCBVcHBlclByb3BlcnR5LCBMb3dlclByb3BlcnR5KQorREVDTEFSRV9BTklNQVRFRF9Q
Uk9QRVJUWV9ORVdfU0hBUkVEKE93bmVyVHlwZSwgRE9NQXR0cmlidXRlLCBET01BdHRyaWJ1dGUu
bG9jYWxOYW1lKCksIFNWR0FuaW1hdGVkUHJvcGVydHlUZWFyT2ZmPFByb3BlcnR5VHlwZT4sIFBy
b3BlcnR5VHlwZSwgVXBwZXJQcm9wZXJ0eSwgTG93ZXJQcm9wZXJ0eSkKKworI2RlZmluZSBERUNM
QVJFX0FOSU1BVEVEX1BST1BFUlRZX05FV19NVUxUSVBMRV9XUkFQUEVSUyhPd25lclR5cGUsIERP
TUF0dHJpYnV0ZSwgU1ZHRE9NQXR0cmlidXRlSWRlbnRpZmllciwgUHJvcGVydHlUeXBlLCBVcHBl
clByb3BlcnR5LCBMb3dlclByb3BlcnR5KSBcCitERUNMQVJFX0FOSU1BVEVEX1BST1BFUlRZX05F
V19TSEFSRUQoT3duZXJUeXBlLCBET01BdHRyaWJ1dGUsIFNWR0RPTUF0dHJpYnV0ZUlkZW50aWZp
ZXIsIFNWR0FuaW1hdGVkUHJvcGVydHlUZWFyT2ZmPFByb3BlcnR5VHlwZT4sIFByb3BlcnR5VHlw
ZSwgVXBwZXJQcm9wZXJ0eSwgTG93ZXJQcm9wZXJ0eSkKIAogI2RlZmluZSBERUNMQVJFX0FOSU1B
VEVEX0xJU1RfUFJPUEVSVFlfTkVXKE93bmVyVHlwZSwgRE9NQXR0cmlidXRlLCBQcm9wZXJ0eVR5
cGUsIFVwcGVyUHJvcGVydHksIExvd2VyUHJvcGVydHkpIFwKLURFQ0xBUkVfQU5JTUFURURfUFJP
UEVSVFlfTkVXX1NIQVJFRChPd25lclR5cGUsIERPTUF0dHJpYnV0ZSwgU1ZHQW5pbWF0ZWRMaXN0
UHJvcGVydHlUZWFyT2ZmPFByb3BlcnR5VHlwZT4sIFByb3BlcnR5VHlwZSwgVXBwZXJQcm9wZXJ0
eSwgTG93ZXJQcm9wZXJ0eSkgXAorREVDTEFSRV9BTklNQVRFRF9QUk9QRVJUWV9ORVdfU0hBUkVE
KE93bmVyVHlwZSwgRE9NQXR0cmlidXRlLCBET01BdHRyaWJ1dGUubG9jYWxOYW1lKCksIFNWR0Fu
aW1hdGVkTGlzdFByb3BlcnR5VGVhck9mZjxQcm9wZXJ0eVR5cGU+LCBQcm9wZXJ0eVR5cGUsIFVw
cGVyUHJvcGVydHksIExvd2VyUHJvcGVydHkpIFwKIFwKIHZvaWQgZGV0YWNoQW5pbWF0ZWQjI1Vw
cGVyUHJvcGVydHkjI0xpc3RXcmFwcGVycyh1bnNpZ25lZCBuZXdMaXN0U2l6ZSkgXAogeyBcCi0g
ICAgU1ZHQW5pbWF0ZWRQcm9wZXJ0eSogd3JhcHBlciA9IFNWR0FuaW1hdGVkUHJvcGVydHk6Omxv
b2t1cFdyYXBwZXI8U1ZHQW5pbWF0ZWRMaXN0UHJvcGVydHlUZWFyT2ZmPFByb3BlcnR5VHlwZT4g
Pih0aGlzLCBET01BdHRyaWJ1dGUpOyBcCisgICAgU1ZHQW5pbWF0ZWRQcm9wZXJ0eSogd3JhcHBl
ciA9IFNWR0FuaW1hdGVkUHJvcGVydHk6Omxvb2t1cFdyYXBwZXI8U1ZHQW5pbWF0ZWRMaXN0UHJv
cGVydHlUZWFyT2ZmPFByb3BlcnR5VHlwZT4gPih0aGlzLCBET01BdHRyaWJ1dGUubG9jYWxOYW1l
KCkpOyBcCiAgICAgaWYgKCF3cmFwcGVyKSBcCiAgICAgICAgIHJldHVybjsgXAogICAgIHN0YXRp
Y19jYXN0PFNWR0FuaW1hdGVkTGlzdFByb3BlcnR5VGVhck9mZjxQcm9wZXJ0eVR5cGU+Kj4od3Jh
cHBlciktPmRldGFjaExpc3RXcmFwcGVycyhuZXdMaXN0U2l6ZSk7IFwKSW5kZXg6IFdlYkNvcmUv
c3ZnL3Byb3BlcnRpZXMvU1ZHQW5pbWF0ZWRQcm9wZXJ0eVN5bmNocm9uaXplci5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFdlYkNvcmUvc3ZnL3Byb3BlcnRpZXMvU1ZHQW5pbWF0ZWRQcm9wZXJ0eVN5bmNocm9u
aXplci5oCShyZXZpc2lvbiA3MDIwOSkKKysrIFdlYkNvcmUvc3ZnL3Byb3BlcnRpZXMvU1ZHQW5p
bWF0ZWRQcm9wZXJ0eVN5bmNocm9uaXplci5oCSh3b3JraW5nIGNvcHkpCkBAIC0yMCw4ICsyMCw2
IEBACiAjaWZuZGVmIFNWR0FuaW1hdGVkUHJvcGVydHlTeW5jaHJvbml6ZXJfaAogI2RlZmluZSBT
VkdBbmltYXRlZFByb3BlcnR5U3luY2hyb25pemVyX2gKIAotI2luY2x1ZGUgIkRlcHJlY2F0ZWRT
VkdBbmltYXRlZFByb3BlcnR5VHJhaXRzLmgiCi0KICNpZiBFTkFCTEUoU1ZHKQogbmFtZXNwYWNl
IFdlYkNvcmUgewogCkluZGV4OiBXZWJDb3JlL3N2Zy9wcm9wZXJ0aWVzL1NWR0xpc3RQcm9wZXJ0
eVRlYXJPZmYuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3N2Zy9wcm9wZXJ0aWVzL1NWR0xpc3RQ
cm9wZXJ0eVRlYXJPZmYuaAkocmV2aXNpb24gNzAyMjMpCisrKyBXZWJDb3JlL3N2Zy9wcm9wZXJ0
aWVzL1NWR0xpc3RQcm9wZXJ0eVRlYXJPZmYuaAkod29ya2luZyBjb3B5KQpAQCAtNDEsMTcgKzQx
LDI0IEBAIHB1YmxpYzoKICAgICB0eXBlZGVmIFBhc3NSZWZQdHI8TGlzdEl0ZW1UZWFyT2ZmPiBQ
YXNzTGlzdEl0ZW1UZWFyT2ZmOwogICAgIHR5cGVkZWYgVmVjdG9yPFJlZlB0cjxMaXN0SXRlbVRl
YXJPZmY+ID4gTGlzdFdyYXBwZXJDYWNoZTsKIAorICAgIC8vIFVzZWQgZm9yIFtTVkdBbmltYXRl
ZFByb3BlcnR5XSB0eXBlcyAoZm9yIGV4YW1wbGU6IFNWR0FuaW1hdGVkTGVuZ3RoTGlzdDo6YmFz
ZVZhbCgpKQogICAgIHN0YXRpYyBQYXNzUmVmUHRyPFNlbGY+IGNyZWF0ZShTVkdBbmltYXRlZFBy
b3BlcnR5KiBhbmltYXRlZFByb3BlcnR5LCBTVkdQcm9wZXJ0eVJvbGUgcm9sZSwgUHJvcGVydHlU
eXBlJiB2YWx1ZXMpCiAgICAgewogICAgICAgICBBU1NFUlQoYW5pbWF0ZWRQcm9wZXJ0eSk7CiAg
ICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgU2VsZihhbmltYXRlZFByb3BlcnR5LCByb2xlLCB2
YWx1ZXMpKTsKICAgICB9CiAKKyAgICAvLyBVc2VkIGZvciBub24tYW5pbWF0ZWQgUE9EIHR5cGVz
IChmb3IgZXhhbXBsZTogU1ZHU3RyaW5nTGlzdCkuCisgICAgc3RhdGljIFBhc3NSZWZQdHI8U2Vs
Zj4gY3JlYXRlKGNvbnN0IFByb3BlcnR5VHlwZSYgaW5pdGlhbFZhbHVlKQorICAgIHsKKyAgICAg
ICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBTZWxmKGluaXRpYWxWYWx1ZSkpOworICAgIH0KKwogICAg
IGludCByZW1vdmVJdGVtRnJvbUxpc3QoTGlzdEl0ZW1UZWFyT2ZmKiByZW1vdmVJdGVtLCBib29s
IHNob3VsZFN5bmNocm9uaXplV3JhcHBlcnMpCiAgICAgewogICAgICAgICAvLyBMb29rdXAgaXRl
bSBpbiBjYWNoZSBhbmQgcmVtb3ZlIGl0cyBjb3JyZXNwb25kaW5nIHdyYXBwZXIuCiAgICAgICAg
IHVuc2lnbmVkIHNpemUgPSBtX3dyYXBwZXJzLnNpemUoKTsKLSAgICAgICAgQVNTRVJUKHNpemUg
PT0gbV92YWx1ZXMuc2l6ZSgpKTsKKyAgICAgICAgQVNTRVJUKHNpemUgPT0gbV92YWx1ZXMtPnNp
emUoKSk7CiAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBzaXplOyArK2kpIHsKICAg
ICAgICAgICAgIFJlZlB0cjxMaXN0SXRlbVRlYXJPZmY+JiBpdGVtID0gbV93cmFwcGVycy5hdChp
KTsKICAgICAgICAgICAgIGlmIChpdGVtICE9IHJlbW92ZUl0ZW0pCkBAIC01OSw3ICs2Niw3IEBA
IHB1YmxpYzoKIAogICAgICAgICAgICAgaXRlbS0+ZGV0YWNoV3JhcHBlcigpOwogICAgICAgICAg
ICAgbV93cmFwcGVycy5yZW1vdmUoaSk7Ci0gICAgICAgICAgICBtX3ZhbHVlcy5yZW1vdmUoaSk7
CisgICAgICAgICAgICBtX3ZhbHVlcy0+cmVtb3ZlKGkpOwogCiAgICAgICAgICAgICBpZiAoc2hv
dWxkU3luY2hyb25pemVXcmFwcGVycykKICAgICAgICAgICAgICAgICBjb21taXRDaGFuZ2UoKTsK
QEAgLTc0LDcgKzgxLDcgQEAgcHVibGljOgogICAgIHsKICAgICAgICAgLy8gU2VlIFNWR1Byb3Bl
cnR5VGVhck9mZjo6ZGV0YWNoV3JhcHBlcigpIGZvciBhbiBleHBsYWluYXRpb24gd2hhdCdzIGhh
cHBlbmluZyBoZXJlLgogICAgICAgICB1bnNpZ25lZCBzaXplID0gbV93cmFwcGVycy5zaXplKCk7
Ci0gICAgICAgIEFTU0VSVChzaXplID09IG1fdmFsdWVzLnNpemUoKSk7CisgICAgICAgIEFTU0VS
VChzaXplID09IG1fdmFsdWVzLT5zaXplKCkpOwogICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAw
OyBpIDwgc2l6ZTsgKytpKSB7CiAgICAgICAgICAgICBSZWZQdHI8TGlzdEl0ZW1UZWFyT2ZmPiYg
aXRlbSA9IG1fd3JhcHBlcnMuYXQoaSk7CiAgICAgICAgICAgICBpZiAoIWl0ZW0pCkBAIC05OCwx
MiArMTA1LDEyIEBAIHB1YmxpYzoKICAgICAgICAgfQogCiAgICAgICAgIGRldGFjaExpc3RXcmFw
cGVycygwKTsKLSAgICAgICAgbV92YWx1ZXMuY2xlYXIoKTsKKyAgICAgICAgbV92YWx1ZXMtPmNs
ZWFyKCk7CiAgICAgfQogCiAgICAgdW5zaWduZWQgbnVtYmVyT2ZJdGVtcygpIGNvbnN0CiAgICAg
ewotICAgICAgICByZXR1cm4gbV92YWx1ZXMuc2l6ZSgpOworICAgICAgICByZXR1cm4gbV92YWx1
ZXMtPnNpemUoKTsKICAgICB9CiAKICAgICBQYXNzTGlzdEl0ZW1UZWFyT2ZmIGluaXRpYWxpemUo
UGFzc0xpc3RJdGVtVGVhck9mZiBwYXNzTmV3SXRlbSwgRXhjZXB0aW9uQ29kZSYgZWMpCkBAIC0x
MjAsMTYgKzEyNywxNiBAQCBwdWJsaWM6CiAgICAgICAgIH0KIAogICAgICAgICBSZWZQdHI8TGlz
dEl0ZW1UZWFyT2ZmPiBuZXdJdGVtID0gcGFzc05ld0l0ZW07Ci0gICAgICAgIEFTU0VSVChtX3Zh
bHVlcy5zaXplKCkgPT0gbV93cmFwcGVycy5zaXplKCkpOworICAgICAgICBBU1NFUlQobV92YWx1
ZXMtPnNpemUoKSA9PSBtX3dyYXBwZXJzLnNpemUoKSk7CiAKICAgICAgICAgLy8gU3BlYzogSWYg
dGhlIGluc2VydGVkIGl0ZW0gaXMgYWxyZWFkeSBpbiBhIGxpc3QsIGl0IGlzIHJlbW92ZWQgZnJv
bSBpdHMgcHJldmlvdXMgbGlzdCBiZWZvcmUgaXQgaXMgaW5zZXJ0ZWQgaW50byB0aGlzIGxpc3Qu
CiAgICAgICAgIHJlbW92ZUl0ZW1Gcm9tTGlzdElmTmVlZGVkKG5ld0l0ZW0uZ2V0KCksIDApOwog
CiAgICAgICAgIC8vIFNwZWM6IENsZWFycyBhbGwgZXhpc3RpbmcgY3VycmVudCBpdGVtcyBmcm9t
IHRoZSBsaXN0IGFuZCByZS1pbml0aWFsaXplcyB0aGUgbGlzdCB0byBob2xkIHRoZSBzaW5nbGUg
aXRlbSBzcGVjaWZpZWQgYnkgdGhlIHBhcmFtZXRlci4KICAgICAgICAgZGV0YWNoTGlzdFdyYXBw
ZXJzKDApOwotICAgICAgICBtX3ZhbHVlcy5jbGVhcigpOworICAgICAgICBtX3ZhbHVlcy0+Y2xl
YXIoKTsKICAgICAgICAgCi0gICAgICAgIG1fdmFsdWVzLmFwcGVuZChuZXdJdGVtLT5wcm9wZXJ0
eVJlZmVyZW5jZSgpKTsKKyAgICAgICAgbV92YWx1ZXMtPmFwcGVuZChuZXdJdGVtLT5wcm9wZXJ0
eVJlZmVyZW5jZSgpKTsKICAgICAgICAgbV93cmFwcGVycy5hcHBlbmQobmV3SXRlbSk7CiAKICAg
ICAgICAgY29tbWl0Q2hhbmdlKCk7CkBAIC0xMzgsMjAgKzE0NSwyMCBAQCBwdWJsaWM6CiAKICAg
ICBQYXNzTGlzdEl0ZW1UZWFyT2ZmIGdldEl0ZW0odW5zaWduZWQgaW5kZXgsIEV4Y2VwdGlvbkNv
ZGUmIGVjKQogICAgIHsKLSAgICAgICAgaWYgKGluZGV4ID49IG1fdmFsdWVzLnNpemUoKSkgewor
ICAgICAgICBpZiAoaW5kZXggPj0gbV92YWx1ZXMtPnNpemUoKSkgewogICAgICAgICAgICAgZWMg
PSBJTkRFWF9TSVpFX0VSUjsKICAgICAgICAgICAgIHJldHVybiAwOwogICAgICAgICB9CiAKICAg
ICAgICAgLy8gU3BlYzogUmV0dXJucyB0aGUgc3BlY2lmaWVkIGl0ZW0gZnJvbSB0aGUgbGlzdC4g
VGhlIHJldHVybmVkIGl0ZW0gaXMgdGhlIGl0ZW0gaXRzZWxmIGFuZCBub3QgYSBjb3B5LgogICAg
ICAgICAvLyBBbnkgY2hhbmdlcyBtYWRlIHRvIHRoZSBpdGVtIGFyZSBpbW1lZGlhdGVseSByZWZs
ZWN0ZWQgaW4gdGhlIGxpc3QuCi0gICAgICAgIEFTU0VSVChtX3ZhbHVlcy5zaXplKCkgPT0gbV93
cmFwcGVycy5zaXplKCkpOworICAgICAgICBBU1NFUlQobV92YWx1ZXMtPnNpemUoKSA9PSBtX3dy
YXBwZXJzLnNpemUoKSk7CiAgICAgICAgIFJlZlB0cjxMaXN0SXRlbVRlYXJPZmY+IHdyYXBwZXIg
PSBtX3dyYXBwZXJzLmF0KGluZGV4KTsKICAgICAgICAgaWYgKCF3cmFwcGVyKSB7CiAgICAgICAg
ICAgICAvLyBDcmVhdGUgbmV3IHdyYXBwZXIsIHdoaWNoIGlzIGFsbG93ZWQgdG8gZGlyZWN0bHkg
bW9kaWZ5IHRoZSBpdGVtIGluIHRoZSBsaXN0LCB3L28gY29weWluZyBhbmQgY2FjaGUgdGhlIHdy
YXBwZXIgaW4gb3VyIG1hcC4KICAgICAgICAgICAgIC8vIEl0IGlzIGFsc28gYXNzb2NpYXRlZCB3
aXRoIG91ciBhbmltYXRlZCBwcm9wZXJ0eSwgc28gaXQgY2FuIG5vdGlmeSB0aGUgU1ZHIEVsZW1l
bnQgd2hpY2ggaG9sZHMgdGhlIFNWR0FuaW1hdGVkKkxpc3QKICAgICAgICAgICAgIC8vIHRoYXQg
aXQgaGFzIGJlZW4gbW9kaWZpZWQgKGFuZCB0aHVzIGNhbiBjYWxsIHN2Z0F0dHJpYnV0ZUNoYW5n
ZWQoYXNzb2NpYXRlZEF0dHJpYnV0ZU5hbWUpKS4KLSAgICAgICAgICAgIHdyYXBwZXIgPSBMaXN0
SXRlbVRlYXJPZmY6OmNyZWF0ZShtX2FuaW1hdGVkUHJvcGVydHkuZ2V0KCksIFVuZGVmaW5lZFJv
bGUsIG1fdmFsdWVzLmF0KGluZGV4KSk7CisgICAgICAgICAgICB3cmFwcGVyID0gTGlzdEl0ZW1U
ZWFyT2ZmOjpjcmVhdGUobV9hbmltYXRlZFByb3BlcnR5LmdldCgpLCBVbmRlZmluZWRSb2xlLCBt
X3ZhbHVlcy0+YXQoaW5kZXgpKTsKICAgICAgICAgICAgIG1fd3JhcHBlcnMuYXQoaW5kZXgpID0g
d3JhcHBlcjsKICAgICAgICAgfQogCkBAIC0xNzIsMTggKzE3OSwxOCBAQCBwdWJsaWM6CiAgICAg
ICAgIH0KIAogICAgICAgICAvLyBTcGVjOiBJZiB0aGUgaW5kZXggaXMgZ3JlYXRlciB0aGFuIG9y
IGVxdWFsIHRvIG51bWJlck9mSXRlbXMsIHRoZW4gdGhlIG5ldyBpdGVtIGlzIGFwcGVuZGVkIHRv
IHRoZSBlbmQgb2YgdGhlIGxpc3QuCi0gICAgICAgIGlmIChpbmRleCA+IG1fdmFsdWVzLnNpemUo
KSkKLSAgICAgICAgICAgICBpbmRleCA9IG1fdmFsdWVzLnNpemUoKTsKKyAgICAgICAgaWYgKGlu
ZGV4ID4gbV92YWx1ZXMtPnNpemUoKSkKKyAgICAgICAgICAgICBpbmRleCA9IG1fdmFsdWVzLT5z
aXplKCk7CiAKICAgICAgICAgUmVmUHRyPExpc3RJdGVtVGVhck9mZj4gbmV3SXRlbSA9IHBhc3NO
ZXdJdGVtOwotICAgICAgICBBU1NFUlQobV92YWx1ZXMuc2l6ZSgpID09IG1fd3JhcHBlcnMuc2l6
ZSgpKTsKKyAgICAgICAgQVNTRVJUKG1fdmFsdWVzLT5zaXplKCkgPT0gbV93cmFwcGVycy5zaXpl
KCkpOwogCiAgICAgICAgIC8vIFNwZWM6IElmIG5ld0l0ZW0gaXMgYWxyZWFkeSBpbiBhIGxpc3Qs
IGl0IGlzIHJlbW92ZWQgZnJvbSBpdHMgcHJldmlvdXMgbGlzdCBiZWZvcmUgaXQgaXMgaW5zZXJ0
ZWQgaW50byB0aGlzIGxpc3QuCiAgICAgICAgIHJlbW92ZUl0ZW1Gcm9tTGlzdElmTmVlZGVkKG5l
d0l0ZW0uZ2V0KCksICZpbmRleCk7CiAKICAgICAgICAgLy8gU3BlYzogSW5zZXJ0cyBhIG5ldyBp
dGVtIGludG8gdGhlIGxpc3QgYXQgdGhlIHNwZWNpZmllZCBwb3NpdGlvbi4gVGhlIGluZGV4IG9m
IHRoZSBpdGVtIGJlZm9yZSB3aGljaCB0aGUgbmV3IGl0ZW0gaXMgdG8gYmUKICAgICAgICAgLy8g
aW5zZXJ0ZWQuIFRoZSBmaXJzdCBpdGVtIGlzIG51bWJlciAwLiBJZiB0aGUgaW5kZXggaXMgZXF1
YWwgdG8gMCwgdGhlbiB0aGUgbmV3IGl0ZW0gaXMgaW5zZXJ0ZWQgYXQgdGhlIGZyb250IG9mIHRo
ZSBsaXN0LgotICAgICAgICBtX3ZhbHVlcy5pbnNlcnQoaW5kZXgsIG5ld0l0ZW0tPnByb3BlcnR5
UmVmZXJlbmNlKCkpOworICAgICAgICBtX3ZhbHVlcy0+aW5zZXJ0KGluZGV4LCBuZXdJdGVtLT5w
cm9wZXJ0eVJlZmVyZW5jZSgpKTsKIAogICAgICAgICAvLyBTdG9yZSBuZXcgd3JhcHBlciBhdCBw
b3NpdGlvbiAnaW5kZXgnLCBjaGFuZ2UgaXRzIHVuZGVybHlpbmcgdmFsdWUsIHNvIG11dGF0aW9u
cyBvZiBuZXdJdGVtLCBkaXJlY3RseSBhZmZlY3QgdGhlIGl0ZW0gaW4gdGhlIGxpc3QuCiAgICAg
ICAgIG1fd3JhcHBlcnMuaW5zZXJ0KGluZGV4LCBuZXdJdGVtKTsKQEAgLTE5OSw3ICsyMDYsNyBA
QCBwdWJsaWM6CiAgICAgICAgICAgICByZXR1cm4gMDsKICAgICAgICAgfQogCi0gICAgICAgIGlm
IChpbmRleCA+PSBtX3ZhbHVlcy5zaXplKCkpIHsKKyAgICAgICAgaWYgKGluZGV4ID49IG1fdmFs
dWVzLT5zaXplKCkpIHsKICAgICAgICAgICAgIGVjID0gSU5ERVhfU0laRV9FUlI7CiAgICAgICAg
ICAgICByZXR1cm4gMDsKICAgICAgICAgfQpAQCAtMjExLDcgKzIxOCw3IEBAIHB1YmxpYzoKICAg
ICAgICAgfQogCiAgICAgICAgIFJlZlB0cjxMaXN0SXRlbVRlYXJPZmY+IG5ld0l0ZW0gPSBwYXNz
TmV3SXRlbTsKLSAgICAgICAgQVNTRVJUKG1fdmFsdWVzLnNpemUoKSA9PSBtX3dyYXBwZXJzLnNp
emUoKSk7CisgICAgICAgIEFTU0VSVChtX3ZhbHVlcy0+c2l6ZSgpID09IG1fd3JhcHBlcnMuc2l6
ZSgpKTsKIAogICAgICAgICAvLyBTcGVjOiBJZiBuZXdJdGVtIGlzIGFscmVhZHkgaW4gYSBsaXN0
LCBpdCBpcyByZW1vdmVkIGZyb20gaXRzIHByZXZpb3VzIGxpc3QgYmVmb3JlIGl0IGlzIGluc2Vy
dGVkIGludG8gdGhpcyBsaXN0LgogICAgICAgICAvLyBTcGVjOiBJZiB0aGUgaXRlbSBpcyBhbHJl
YWR5IGluIHRoaXMgbGlzdCwgbm90ZSB0aGF0IHRoZSBpbmRleCBvZiB0aGUgaXRlbSB0byByZXBs
YWNlIGlzIGJlZm9yZSB0aGUgcmVtb3ZhbCBvZiB0aGUgaXRlbS4KQEAgLTIyMyw3ICsyMzAsNyBA
QCBwdWJsaWM6CiAgICAgICAgICAgICBvbGRJdGVtLT5kZXRhY2hXcmFwcGVyKCk7CiAKICAgICAg
ICAgLy8gVXBkYXRlIHRoZSB2YWx1ZSBhbmQgdGhlIHdyYXBwZXIgYXQgdGhlIGRlc2lyZWQgcG9z
aXRpb24gJ2luZGV4Jy4gCi0gICAgICAgIG1fdmFsdWVzLmF0KGluZGV4KSA9IG5ld0l0ZW0tPnBy
b3BlcnR5UmVmZXJlbmNlKCk7CisgICAgICAgIG1fdmFsdWVzLT5hdChpbmRleCkgPSBuZXdJdGVt
LT5wcm9wZXJ0eVJlZmVyZW5jZSgpOwogICAgICAgICBtX3dyYXBwZXJzLmF0KGluZGV4KSA9IG5l
d0l0ZW07CiAKICAgICAgICAgY29tbWl0Q2hhbmdlKCk7CkBAIC0yMzcsMTIgKzI0NCwxMiBAQCBw
dWJsaWM6CiAgICAgICAgICAgICByZXR1cm4gMDsKICAgICAgICAgfQogCi0gICAgICAgIGlmIChp
bmRleCA+PSBtX3ZhbHVlcy5zaXplKCkpIHsKKyAgICAgICAgaWYgKGluZGV4ID49IG1fdmFsdWVz
LT5zaXplKCkpIHsKICAgICAgICAgICAgIGVjID0gSU5ERVhfU0laRV9FUlI7CiAgICAgICAgICAg
ICByZXR1cm4gMDsKICAgICAgICAgfQogCi0gICAgICAgIEFTU0VSVChtX3ZhbHVlcy5zaXplKCkg
PT0gbV93cmFwcGVycy5zaXplKCkpOworICAgICAgICBBU1NFUlQobV92YWx1ZXMtPnNpemUoKSA9
PSBtX3dyYXBwZXJzLnNpemUoKSk7CiAKICAgICAgICAgLy8gRGV0YWNoIHRoZSBleGlzdGluZyB3
cmFwcGVyLgogICAgICAgICBSZWZQdHI8TGlzdEl0ZW1UZWFyT2ZmPiYgb2xkSXRlbSA9IG1fd3Jh
cHBlcnMuYXQoaW5kZXgpOwpAQCAtMjUxLDcgKzI1OCw3IEBAIHB1YmxpYzoKICAgICAgICAgICAg
IG1fd3JhcHBlcnMucmVtb3ZlKGluZGV4KTsKICAgICAgICAgfQogCi0gICAgICAgIG1fdmFsdWVz
LnJlbW92ZShpbmRleCk7CisgICAgICAgIG1fdmFsdWVzLT5yZW1vdmUoaW5kZXgpOwogCiAgICAg
ICAgIGNvbW1pdENoYW5nZSgpOwogICAgICAgICByZXR1cm4gb2xkSXRlbS5yZWxlYXNlKCk7CkBA
IC0yNzEsMTMgKzI3OCwxMyBAQCBwdWJsaWM6CiAgICAgICAgIH0KIAogICAgICAgICBSZWZQdHI8
TGlzdEl0ZW1UZWFyT2ZmPiBuZXdJdGVtID0gcGFzc05ld0l0ZW07Ci0gICAgICAgIEFTU0VSVCht
X3ZhbHVlcy5zaXplKCkgPT0gbV93cmFwcGVycy5zaXplKCkpOworICAgICAgICBBU1NFUlQobV92
YWx1ZXMtPnNpemUoKSA9PSBtX3dyYXBwZXJzLnNpemUoKSk7CiAKICAgICAgICAgLy8gU3BlYzog
SWYgbmV3SXRlbSBpcyBhbHJlYWR5IGluIGEgbGlzdCwgaXQgaXMgcmVtb3ZlZCBmcm9tIGl0cyBw
cmV2aW91cyBsaXN0IGJlZm9yZSBpdCBpcyBpbnNlcnRlZCBpbnRvIHRoaXMgbGlzdC4KICAgICAg
ICAgcmVtb3ZlSXRlbUZyb21MaXN0SWZOZWVkZWQobmV3SXRlbS5nZXQoKSwgMCk7CiAKICAgICAg
ICAgLy8gQXBwZW5kIHRoZSB2YWx1ZSBhbmQgd3JhcHBlciBhdCB0aGUgZW5kIG9mIHRoZSBsaXN0
LgotICAgICAgICBtX3ZhbHVlcy5hcHBlbmQobmV3SXRlbS0+cHJvcGVydHlSZWZlcmVuY2UoKSk7
CisgICAgICAgIG1fdmFsdWVzLT5hcHBlbmQobmV3SXRlbS0+cHJvcGVydHlSZWZlcmVuY2UoKSk7
CiAgICAgICAgIG1fd3JhcHBlcnMuYXBwZW5kKG5ld0l0ZW0pOwogCiAgICAgICAgIGNvbW1pdENo
YW5nZSgpOwpAQCAtMjg4LDIzICsyOTUsNDAgQEAgcHJpdmF0ZToKICAgICBTVkdMaXN0UHJvcGVy
dHlUZWFyT2ZmKFNWR0FuaW1hdGVkUHJvcGVydHkqIGFuaW1hdGVkUHJvcGVydHksIFNWR1Byb3Bl
cnR5Um9sZSByb2xlLCBQcm9wZXJ0eVR5cGUmIHZhbHVlcykKICAgICAgICAgOiBtX2FuaW1hdGVk
UHJvcGVydHkoYW5pbWF0ZWRQcm9wZXJ0eSkKICAgICAgICAgLCBtX3JvbGUocm9sZSkKLSAgICAg
ICAgLCBtX3ZhbHVlcyh2YWx1ZXMpCisgICAgICAgICwgbV92YWx1ZXMoJnZhbHVlcykKKyAgICAg
ICAgLCBtX3ZhbHVlc0lzQ29weShmYWxzZSkKICAgICB7CisgICAgICAgIC8vIFVzaW5nIG9wZXJh
dG9yICYgaXMgY29tcGxldGx5IGZpbmUsIGFzIFNWR0FuaW1hdGVkUHJvcGVydHkgb3ducyB0aGlz
IHJlZmVyZW5jZSwKKyAgICAgICAgLy8gYW5kIHdlJ3JlIGd1YXJhbnRlZWQgdG8gbGl2ZSBhcyBs
b25nIGFzIFNWR0FuaW1hdGVkUHJvcGVydHkgZG9lcy4KICAgICAgICAgaWYgKCF2YWx1ZXMuaXNF
bXB0eSgpKQogICAgICAgICAgICAgbV93cmFwcGVycy5maWxsKDAsIHZhbHVlcy5zaXplKCkpOwog
ICAgIH0KIAorICAgIFNWR0xpc3RQcm9wZXJ0eVRlYXJPZmYoY29uc3QgUHJvcGVydHlUeXBlJiBp
bml0aWFsVmFsdWUpCisgICAgICAgIDogbV9hbmltYXRlZFByb3BlcnR5KDApCisgICAgICAgICwg
bV9yb2xlKFVuZGVmaW5lZFJvbGUpCisgICAgICAgICwgbV92YWx1ZXMobmV3IFByb3BlcnR5VHlw
ZShpbml0aWFsVmFsdWUpKQorICAgICAgICAsIG1fdmFsdWVzSXNDb3B5KHRydWUpCisgICAgewor
ICAgIH0KKworICAgIHZpcnR1YWwgflNWR0xpc3RQcm9wZXJ0eVRlYXJPZmYoKQorICAgIHsKKyAg
ICAgICAgaWYgKG1fdmFsdWVzSXNDb3B5KQorICAgICAgICAgICAgZGVsZXRlIG1fdmFsdWVzOwor
ICAgIH0KKwogICAgIHZvaWQgY29tbWl0Q2hhbmdlKCkKICAgICB7CiAgICAgICAgIC8vIFVwZGF0
ZSBleGlzdGluZyB3cmFwcGVycywgYXMgdGhlIGluZGV4IGluIHRoZSBtX3ZhbHVlcyBsaXN0IGhh
cyBjaGFuZ2VkLgogICAgICAgICB1bnNpZ25lZCBzaXplID0gbV93cmFwcGVycy5zaXplKCk7Ci0g
ICAgICAgIEFTU0VSVChzaXplID09IG1fdmFsdWVzLnNpemUoKSk7CisgICAgICAgIEFTU0VSVChz
aXplID09IG1fdmFsdWVzLT5zaXplKCkpOwogICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBp
IDwgc2l6ZTsgKytpKSB7CiAgICAgICAgICAgICBSZWZQdHI8TGlzdEl0ZW1UZWFyT2ZmPiYgaXRl
bSA9IG1fd3JhcHBlcnMuYXQoaSk7CiAgICAgICAgICAgICBpZiAoIWl0ZW0pCiAgICAgICAgICAg
ICAgICAgY29udGludWU7CiAgICAgICAgICAgICBpdGVtLT5zZXRBbmltYXRlZFByb3BlcnR5KG1f
YW5pbWF0ZWRQcm9wZXJ0eS5nZXQoKSk7Ci0gICAgICAgICAgICBpdGVtLT5zZXRWYWx1ZShtX3Zh
bHVlcy5hdChpKSk7CisgICAgICAgICAgICBpdGVtLT5zZXRWYWx1ZShtX3ZhbHVlcy0+YXQoaSkp
OwogICAgICAgICB9CiAKICAgICAgICAgQVNTRVJUKG1fYW5pbWF0ZWRQcm9wZXJ0eSk7CkBAIC0z
NDcsNyArMzcxLDggQEAgcHJpdmF0ZToKICAgICBTVkdQcm9wZXJ0eVJvbGUgbV9yb2xlOwogCiAg
ICAgLy8gRm9yIHRoZSBleGFtcGxlIGFib3ZlICh0ZXh0LnguYmFzZVZhbCk6IEEgcmVmZXJlbmNl
IHRvIHRoZSBTVkdMZW5ndGhMaXN0JiBzdG9yZWQgaW4gdGhlIFNWR1RleHRFbGVtZW50LCB3aGlj
aCB3ZSBjYW4gZGlyZWN0bHkgbW9kaWZ5Ci0gICAgUHJvcGVydHlUeXBlJiBtX3ZhbHVlczsKKyAg
ICBQcm9wZXJ0eVR5cGUqIG1fdmFsdWVzOworICAgIGJvb2wgbV92YWx1ZXNJc0NvcHkgOiAxOwog
CiAgICAgLy8gQSBsaXN0IG9mIHdyYXBwZXJzLCB3aGljaCBpcyBhbHdheXMgaW4gc3luYyBiZXR3
ZWVuIG1fdmFsdWVzLgogICAgIExpc3RXcmFwcGVyQ2FjaGUgbV93cmFwcGVyczsKSW5kZXg6IFdl
YkNvcmUvc3ZnL3Byb3BlcnRpZXMvU1ZHUHJvcGVydHlUZWFyT2ZmLmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
V2ViQ29yZS9zdmcvcHJvcGVydGllcy9TVkdQcm9wZXJ0eVRlYXJPZmYuaAkocmV2aXNpb24gNzAy
MjMpCisrKyBXZWJDb3JlL3N2Zy9wcm9wZXJ0aWVzL1NWR1Byb3BlcnR5VGVhck9mZi5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC0yMSwxMyArMjEsMTIgQEAKICNkZWZpbmUgU1ZHUHJvcGVydHlUZWFyT2Zm
X2gKIAogI2lmIEVOQUJMRShTVkcpCisjaW5jbHVkZSAiU1ZHQW5pbWF0ZWRQcm9wZXJ0eS5oIgog
I2luY2x1ZGUgIlNWR0VsZW1lbnQuaCIKICNpbmNsdWRlICJTVkdQcm9wZXJ0eS5oIgogCiBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAKLWNsYXNzIFNWR0FuaW1hdGVkUHJvcGVydHk7Ci0KIHRlbXBsYXRl
PHR5cGVuYW1lIFByb3BlcnR5VHlwZT4KIGNsYXNzIFNWR1Byb3BlcnR5VGVhck9mZiA6IHB1Ymxp
YyBTVkdQcm9wZXJ0eSB7CiBwdWJsaWM6CkBAIC00MSw3ICs0MCw3IEBAIHB1YmxpYzoKICAgICAg
ICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBTZWxmKGFuaW1hdGVkUHJvcGVydHksIHZhbHVlKSk7CiAg
ICAgfQogCi0gICAgLy8gVXNlZCBmb3IgW1NWR0xpdmVQcm9wZXJ0eV0gdHlwZXMgKGZvciBleGFt
cGxlOiBTVkdTVkdFbGVtZW50OjpjcmVhdGVTVkdMZW5ndGgoKSkuCisgICAgLy8gVXNlZCBmb3Ig
bm9uLWFuaW1hdGVkIFBPRCB0eXBlcyAoZm9yIGV4YW1wbGU6IFNWR0xlbmd0aCkuCiAgICAgc3Rh
dGljIFBhc3NSZWZQdHI8U2VsZj4gY3JlYXRlKGNvbnN0IFByb3BlcnR5VHlwZSYgaW5pdGlhbFZh
bHVlKQogICAgIHsKICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBTZWxmKGluaXRpYWxWYWx1
ZSkpOwpJbmRleDogV2ViQ29yZS9zdmcvcHJvcGVydGllcy9TVkdQcm9wZXJ0eVRyYWl0cy5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFdlYkNvcmUvc3ZnL3Byb3BlcnRpZXMvU1ZHUHJvcGVydHlUcmFpdHMuaAko
cmV2aXNpb24gNzAyMjMpCisrKyBXZWJDb3JlL3N2Zy9wcm9wZXJ0aWVzL1NWR1Byb3BlcnR5VHJh
aXRzLmgJKHdvcmtpbmcgY29weSkKQEAgLTIyLDQwICsyMiw5MCBAQAogI2RlZmluZSBTVkdQcm9w
ZXJ0eVRyYWl0c19oCiAKICNpZiBFTkFCTEUoU1ZHKQorI2luY2x1ZGUgIkZsb2F0UmVjdC5oIgor
I2luY2x1ZGUgIlNWR0FuZ2xlLmgiCiAjaW5jbHVkZSAiU1ZHTGVuZ3RoLmgiCiAjaW5jbHVkZSAi
U1ZHTGVuZ3RoTGlzdC5oIgorI2luY2x1ZGUgIlNWR1ByZXNlcnZlQXNwZWN0UmF0aW8uaCIKKyNp
bmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdCdWlsZGVyLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IAogdGVtcGxhdGU8dHlwZW5hbWUgUHJvcGVydHlUeXBlPgogc3RydWN0IFNWR1Byb3BlcnR5VHJh
aXRzIHsgfTsKIAotLy8gU1ZHQW5pbWF0ZWRMZW5ndGgKIHRlbXBsYXRlPD4KLXN0cnVjdCBTVkdQ
cm9wZXJ0eVRyYWl0czxTVkdMZW5ndGg+IHsKLSAgICBzdGF0aWMgU1ZHTGVuZ3RoJiBpbml0aWFs
VmFsdWUoKQotICAgIHsKLSAgICAgICAgREVGSU5FX1NUQVRJQ19MT0NBTChTVkdMZW5ndGgsIHNf
aW5pdGlhbFZhbHVlLCAoKSk7Ci0gICAgICAgIHNfaW5pdGlhbFZhbHVlID0gU1ZHTGVuZ3RoKCk7
Ci0gICAgICAgIHJldHVybiBzX2luaXRpYWxWYWx1ZTsKLSAgICB9CitzdHJ1Y3QgU1ZHUHJvcGVy
dHlUcmFpdHM8U1ZHQW5nbGU+IHsKKyAgICBzdGF0aWMgU1ZHQW5nbGUgaW5pdGlhbFZhbHVlKCkg
eyByZXR1cm4gU1ZHQW5nbGUoKTsgfQorICAgIHN0YXRpYyBTdHJpbmcgdG9TdHJpbmcoY29uc3Qg
U1ZHQW5nbGUmIHR5cGUpIHsgcmV0dXJuIHR5cGUudmFsdWVBc1N0cmluZygpOyB9Cit9OworCit0
ZW1wbGF0ZTw+CitzdHJ1Y3QgU1ZHUHJvcGVydHlUcmFpdHM8Ym9vbD4geworICAgIHN0YXRpYyBi
b29sIGluaXRpYWxWYWx1ZSgpIHsgcmV0dXJuIGZhbHNlOyB9CisgICAgc3RhdGljIFN0cmluZyB0
b1N0cmluZyhib29sIHR5cGUpIHsgcmV0dXJuIHR5cGUgPyAidHJ1ZSIgOiAiZmFsc2UiOyB9Cit9
OwogCit0ZW1wbGF0ZTw+CitzdHJ1Y3QgU1ZHUHJvcGVydHlUcmFpdHM8aW50PiB7CisgICAgc3Rh
dGljIGludCBpbml0aWFsVmFsdWUoKSB7IHJldHVybiAwOyB9CisgICAgc3RhdGljIFN0cmluZyB0
b1N0cmluZyhpbnQgdHlwZSkgeyByZXR1cm4gU3RyaW5nOjpudW1iZXIodHlwZSk7IH0KK307CisK
K3RlbXBsYXRlPD4KK3N0cnVjdCBTVkdQcm9wZXJ0eVRyYWl0czxsb25nPiB7CisgICAgc3RhdGlj
IGxvbmcgaW5pdGlhbFZhbHVlKCkgeyByZXR1cm4gMDsgfQorICAgIHN0YXRpYyBTdHJpbmcgdG9T
dHJpbmcobG9uZyB0eXBlKSB7IHJldHVybiBTdHJpbmc6Om51bWJlcih0eXBlKTsgfQorfTsKKwor
dGVtcGxhdGU8Pgorc3RydWN0IFNWR1Byb3BlcnR5VHJhaXRzPFNWR0xlbmd0aD4geworICAgIHN0
YXRpYyBTVkdMZW5ndGggaW5pdGlhbFZhbHVlKCkgeyByZXR1cm4gU1ZHTGVuZ3RoKCk7IH0KICAg
ICBzdGF0aWMgU3RyaW5nIHRvU3RyaW5nKGNvbnN0IFNWR0xlbmd0aCYgdHlwZSkgeyByZXR1cm4g
dHlwZS52YWx1ZUFzU3RyaW5nKCk7IH0KIH07CiAKLS8vIFNWR0FuaW1hdGVkTGVuZ3RoTGlzdAog
dGVtcGxhdGU8Pgogc3RydWN0IFNWR1Byb3BlcnR5VHJhaXRzPFNWR0xlbmd0aExpc3Q+IHsKICAg
ICB0eXBlZGVmIFNWR0xlbmd0aCBMaXN0SXRlbVR5cGU7CiAKLSAgICBzdGF0aWMgU1ZHTGVuZ3Ro
TGlzdCYgaW5pdGlhbFZhbHVlKCkKKyAgICBzdGF0aWMgU1ZHTGVuZ3RoTGlzdCBpbml0aWFsVmFs
dWUoKSB7IHJldHVybiBTVkdMZW5ndGhMaXN0KCk7IH0KKyAgICBzdGF0aWMgU3RyaW5nIHRvU3Ry
aW5nKGNvbnN0IFNWR0xlbmd0aExpc3QmIHR5cGUpIHsgcmV0dXJuIHR5cGUudmFsdWVBc1N0cmlu
ZygpOyB9Cit9OworCit0ZW1wbGF0ZTw+CitzdHJ1Y3QgU1ZHUHJvcGVydHlUcmFpdHM8ZmxvYXQ+
IHsKKyAgICBzdGF0aWMgZmxvYXQgaW5pdGlhbFZhbHVlKCkgeyByZXR1cm4gMDsgfQorICAgIHN0
YXRpYyBTdHJpbmcgdG9TdHJpbmcoZmxvYXQgdHlwZSkgeyByZXR1cm4gU3RyaW5nOjpudW1iZXIo
dHlwZSk7IH0KK307CisKK3RlbXBsYXRlPD4KK3N0cnVjdCBTVkdQcm9wZXJ0eVRyYWl0czxTVkdQ
cmVzZXJ2ZUFzcGVjdFJhdGlvPiB7CisgICAgc3RhdGljIFNWR1ByZXNlcnZlQXNwZWN0UmF0aW8g
aW5pdGlhbFZhbHVlKCkgeyByZXR1cm4gU1ZHUHJlc2VydmVBc3BlY3RSYXRpbygpOyB9CisgICAg
c3RhdGljIFN0cmluZyB0b1N0cmluZyhjb25zdCBTVkdQcmVzZXJ2ZUFzcGVjdFJhdGlvJiB0eXBl
KSB7IHJldHVybiB0eXBlLnZhbHVlQXNTdHJpbmcoKTsgfQorfTsKKwordGVtcGxhdGU8Pgorc3Ry
dWN0IFNWR1Byb3BlcnR5VHJhaXRzPEZsb2F0UmVjdD4geworICAgIHN0YXRpYyBGbG9hdFJlY3Qg
aW5pdGlhbFZhbHVlKCkgeyByZXR1cm4gRmxvYXRSZWN0KCk7IH0KKyAgICBzdGF0aWMgU3RyaW5n
IHRvU3RyaW5nKGNvbnN0IEZsb2F0UmVjdCYgdHlwZSkKICAgICB7Ci0gICAgICAgIERFRklORV9T
VEFUSUNfTE9DQUwoU1ZHTGVuZ3RoTGlzdCwgc19pbml0aWFsVmFsdWUsICgpKTsKLSAgICAgICAg
c19pbml0aWFsVmFsdWUgPSBTVkdMZW5ndGhMaXN0KCk7Ci0gICAgICAgIHJldHVybiBzX2luaXRp
YWxWYWx1ZTsKKyAgICAgICAgU3RyaW5nQnVpbGRlciBidWlsZGVyOworICAgICAgICBidWlsZGVy
LmFwcGVuZChTdHJpbmc6Om51bWJlcih0eXBlLngoKSkpOworICAgICAgICBidWlsZGVyLmFwcGVu
ZCgnICcpOworICAgICAgICBidWlsZGVyLmFwcGVuZChTdHJpbmc6Om51bWJlcih0eXBlLnkoKSkp
OworICAgICAgICBidWlsZGVyLmFwcGVuZCgnICcpOworICAgICAgICBidWlsZGVyLmFwcGVuZChT
dHJpbmc6Om51bWJlcih0eXBlLndpZHRoKCkpKTsKKyAgICAgICAgYnVpbGRlci5hcHBlbmQoJyAn
KTsKKyAgICAgICAgYnVpbGRlci5hcHBlbmQoU3RyaW5nOjpudW1iZXIodHlwZS5oZWlnaHQoKSkp
OworICAgICAgICBidWlsZGVyLmFwcGVuZCgnICcpOworICAgICAgICByZXR1cm4gYnVpbGRlci50
b1N0cmluZygpOwogICAgIH0KK307CiAKLSAgICBzdGF0aWMgU3RyaW5nIHRvU3RyaW5nKGNvbnN0
IFNWR0xlbmd0aExpc3QmIHR5cGUpIHsgcmV0dXJuIHR5cGUudmFsdWVBc1N0cmluZygpOyB9Cit0
ZW1wbGF0ZTw+CitzdHJ1Y3QgU1ZHUHJvcGVydHlUcmFpdHM8U3RyaW5nPiB7CisgICAgc3RhdGlj
IFN0cmluZyBpbml0aWFsVmFsdWUoKSB7IHJldHVybiBTdHJpbmcoKTsgfQorICAgIHN0YXRpYyBT
dHJpbmcgdG9TdHJpbmcoY29uc3QgU3RyaW5nJiB0eXBlKSB7IHJldHVybiB0eXBlOyB9CiB9Owog
CiB9Cg==
</data>
<flag name="review"
          id="61637"
          type_id="1"
          status="+"
          setter="krit"
    />
          </attachment>
      

    </bug>

</bugzilla>