<?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>121499</bug_id>
          
          <creation_ts>2013-09-17 09:44:43 -0700</creation_ts>
          <short_desc>Shrink SVGElement::cssPropertyIdForSVGAttributeName and cssPropertyToTypeMap</short_desc>
          <delta_ts>2013-09-17 10:12:55 -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="Darin Adler">darin</reporter>
          <assigned_to name="Darin Adler">darin</assigned_to>
          <cc>commit-queue</cc>
    
    <cc>d-r</cc>
    
    <cc>fmalita</cc>
    
    <cc>pdr</cc>
    
    <cc>schenney</cc>
    
    <cc>zimmermann</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>930266</commentid>
    <comment_count>0</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2013-09-17 09:44:43 -0700</bug_when>
    <thetext>Shrink SVGElement::cssPropertyIdForSVGAttributeName and cssPropertyToTypeMap</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>930272</commentid>
    <comment_count>1</comment_count>
      <attachid>211917</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2013-09-17 09:50:36 -0700</bug_when>
    <thetext>Created attachment 211917
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>930276</commentid>
    <comment_count>2</comment_count>
      <attachid>211917</attachid>
    <who name="Andreas Kling">kling</who>
    <bug_when>2013-09-17 09:58:20 -0700</bug_when>
    <thetext>Comment on attachment 211917
Patch

View in context: https://bugs.webkit.org/attachment.cgi?id=211917&amp;action=review

r=me

&gt; Source/WebCore/svg/SVGElement.cpp:149
&gt; +    for (unsigned i = 0; i &lt; WTF_ARRAY_LENGTH(attributeNames); ++i) {
&gt; +        const AtomicString&amp; localName = attributeNames[i]-&gt;localName();
&gt; +        map.add(localName.impl(), cssPropertyID(localName));
&gt; +    }

Can we reserve the necessary map capacity up front to avoid rehashing somehow?

&gt; Source/WebCore/svg/SVGElement.cpp:222
&gt; +    for (unsigned i = 0; i &lt; WTF_ARRAY_LENGTH(table); ++i)
&gt; +        map.add(table[i].attributeName.impl(), table[i].type);

Same question.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>930285</commentid>
    <comment_count>3</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2013-09-17 10:12:55 -0700</bug_when>
    <thetext>Committed r155969: &lt;http://trac.webkit.org/changeset/155969&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>211917</attachid>
            <date>2013-09-17 09:50:36 -0700</date>
            <delta_ts>2013-09-17 09:58:20 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-121499-20130917095035.patch</filename>
            <type>text/plain</type>
            <size>19349</size>
            <attacher name="Darin Adler">darin</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTU1OTY0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZDc3NzdkN2RkMzljOGNk
ZmIzZmFmMTFiMjFjNmY3MDI2OGQyMGQzMy4uODEzNjI3N2M4ZmViYjE5ZjVkNGFmNzRkNjczYmY3
NzNmODA1NTlhMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI5IEBACisyMDEzLTA5LTE3ICBEYXJp
biBBZGxlciAgPGRhcmluQGFwcGxlLmNvbT4KKworICAgICAgICBTaHJpbmsgU1ZHRWxlbWVudDo6
Y3NzUHJvcGVydHlJZEZvclNWR0F0dHJpYnV0ZU5hbWUgYW5kIGNzc1Byb3BlcnR5VG9UeXBlTWFw
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMjE0OTkK
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIHN2Zy9T
VkdFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnBvcHVsYXRlQXR0cmlidXRlTmFtZVRv
Q1NTUHJvcGVydHlJRE1hcCk6IEFkZGVkLiBDb2RlIHRoYXQgdXNlZCB0bworICAgICAgICBiZSBp
biBTVkdFbGVtZW50Ojpjc3NQcm9wZXJ0eUlkRm9yU1ZHQXR0cmlidXRlTmFtZSB0byBidWlsZCBh
IG1hcCB0aGF0IG1hcHMKKyAgICAgICAgYXR0cmlidXRlIG5hbWVzIHRvIENTUyBwcm9wZXJ0eSBJ
RHMsIGJ1dCB3aXRob3V0IHRoZSBtdWx0aXBsZSB1bnJvbGxlZCBjYWxscworICAgICAgICB0byBI
YXNoTWFwIGZ1bmN0aW9ucy4KKyAgICAgICAgKFdlYkNvcmU6OnBvcHVsYXRlQXR0cmlidXRlTmFt
ZVRvQW5pbWF0ZWRQcm9wZXJ0eVR5cGVNYXApOiBBZGRlZC4gQ29kZSB0aGF0CisgICAgICAgIHVz
ZWQgdG8gYmUgaW4gY3NzUHJvcGVydHlUb1R5cGVNYXAsIGJ1dCB3aXRob3V0IHRoZSBtdWx0aXBs
ZSB1bnJvbGxlZCBjYWxscworICAgICAgICB0byBIYXNoTWFwIGZ1bmN0aW9ucy4KKyAgICAgICAg
KFdlYkNvcmU6OmF0dHJpYnV0ZU5hbWVUb0FuaW1hdGVkUHJvcGVydHlUeXBlTWFwKTogUmVuYW1l
ZCBmcm9tCisgICAgICAgIGNzc1Byb3BlcnR5VG9UeXBlTWFwLCBhIGNvbmZ1c2luZ2x5IGluYWNj
dXJhdGUgYW5kIGltcHJlY2lzZSBuYW1lLCBhbmQKKyAgICAgICAgcmVpbXBsZW1lbnRlZCB1c2lu
ZyB0aGUgcG9wdWxhdGUgZnVuY3Rpb24uCisgICAgICAgIChXZWJDb3JlOjpTVkdFbGVtZW50Ojph
bmltYXRlZFByb3BlcnR5VHlwZUZvckF0dHJpYnV0ZSk6IFVwZGF0ZWQgdG8gY2FsbAorICAgICAg
ICBhdHRyaWJ1dGVOYW1lVG9BbmltYXRlZFByb3BlcnR5VHlwZU1hcCwgYW5kIGFsc28gcmVtb3Zl
ZCB0aGUgZG91YmxlIGhhc2hpbmcKKyAgICAgICAgdGhhdCB3YXMgZG9uZSBieSBjYWxsaW5nIGNv
bnRhaW5zIGZvbGxvd2VkIGJ5IGdldC4KKyAgICAgICAgKFdlYkNvcmU6OlNWR0VsZW1lbnQ6OmNz
c1Byb3BlcnR5SWRGb3JTVkdBdHRyaWJ1dGVOYW1lKTogUmV3cm90ZSB0byB1c2UKKyAgICAgICAg
cG9wdWxhdGVBdHRyaWJ1dGVOYW1lVG9DU1NQcm9wZXJ0eUlETWFwLgorICAgICAgICAoV2ViQ29y
ZTo6U1ZHRWxlbWVudDo6aXNBbmltYXRhYmxlQ1NTUHJvcGVydHkpOiBVcGRhdGVkIHRvIGNhbGwg
dGhlIG5ldworICAgICAgICBhdHRyaWJ1dGVOYW1lVG9BbmltYXRlZFByb3BlcnR5VHlwZU1hcC4K
KwogMjAxMy0wOS0xNiAgRGF2aWQgSHlhdHQgIDxoeWF0dEBhcHBsZS5jb20+CiAKICAgICAgICAg
TW92ZSB0aGUgbGluZSB3aWRvdyBmdW5jdGlvbnMgb3V0IG9mIFJlbmRlckJsb2NrIGFuZCBpbnRv
IFJlbmRlckJsb2NrRmxvdy4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdFbGVt
ZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdFbGVtZW50LmNwcAppbmRleCBhNzNhMGUw
NDA5MzllNDFiMGNjZGNkNTc5NzRmNDk3NzEwYWQ1M2Q3Li5mZjgyZTA4MTZkNjU1ODEyOTIzMzgz
MzM1ZTdlZGY3OWU5ZjZmOTQ1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRWxl
bWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0VsZW1lbnQuY3BwCkBAIC01OSw2
ICs1OSw3IEBACiAjaW5jbHVkZSAiWE1MTmFtZXMuaCIKICNpbmNsdWRlIDx3dGYvQXNzZXJ0aW9u
cy5oPgogI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CisjaW5jbHVkZSA8d3RmL05ldmVyRGVzdHJv
eWVkLmg+CiAjaW5jbHVkZSA8d3RmL1N0ZExpYkV4dHJhcy5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0
L1dURlN0cmluZy5oPgogCkBAIC03NSw4MSArNzYsMTU4IEBAIEVORF9SRUdJU1RFUl9BTklNQVRF
RF9QUk9QRVJUSUVTCiB1c2luZyBuYW1lc3BhY2UgSFRNTE5hbWVzOwogdXNpbmcgbmFtZXNwYWNl
IFNWR05hbWVzOwogCi12b2lkIG1hcEF0dHJpYnV0ZVRvQ1NTUHJvcGVydHkoSGFzaE1hcDxBdG9t
aWNTdHJpbmdJbXBsKiwgQ1NTUHJvcGVydHlJRD4qIHByb3BlcnR5TmFtZVRvSWRNYXAsIGNvbnN0
IFF1YWxpZmllZE5hbWUmIGF0dHJOYW1lKQotewotICAgIC8vIEZJWE1FOiB3aGVuIENTUyBzdXBw
b3J0cyAidHJhbnNmb3JtLW9yaWdpbiIgdGhlIHNwZWNpYWwgY2FzZSBmb3IgdHJhbnNmb3JtX29y
aWdpbkF0dHIgY2FuIGJlIHJlbW92ZWQuCi0gICAgQ1NTUHJvcGVydHlJRCBwcm9wZXJ0eUlkID0g
Y3NzUHJvcGVydHlJRChhdHRyTmFtZS5sb2NhbE5hbWUoKSk7Ci0gICAgaWYgKCFwcm9wZXJ0eUlk
ICYmIGF0dHJOYW1lID09IHRyYW5zZm9ybV9vcmlnaW5BdHRyKQotICAgICAgICBwcm9wZXJ0eUlk
ID0gQ1NTUHJvcGVydHlXZWJraXRUcmFuc2Zvcm1PcmlnaW47IC8vIGNzc1Byb3BlcnR5SUQoIi13
ZWJraXQtdHJhbnNmb3JtLW9yaWdpbiIpCi0gICAgQVNTRVJUKHByb3BlcnR5SWQgPiAwKTsKLSAg
ICBwcm9wZXJ0eU5hbWVUb0lkTWFwLT5zZXQoYXR0ck5hbWUubG9jYWxOYW1lKCkuaW1wbCgpLCBw
cm9wZXJ0eUlkKTsKLX0KLQotdHlwZWRlZiBIYXNoTWFwPFF1YWxpZmllZE5hbWUsIEFuaW1hdGVk
UHJvcGVydHlUeXBlPiBBdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcDsKLXN0YXRpYyBpbmxpbmUg
QXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAmIGNzc1Byb3BlcnR5VG9UeXBlTWFwKCkKLXsKLSAg
ICBERUZJTkVfU1RBVElDX0xPQ0FMKEF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwLCBzX2Nzc1By
b3BlcnR5TWFwLCAoKSk7Ci0KLSAgICBpZiAoIXNfY3NzUHJvcGVydHlNYXAuaXNFbXB0eSgpKQot
ICAgICAgICByZXR1cm4gc19jc3NQcm9wZXJ0eU1hcDsKLQotICAgIC8vIEZpbGwgdGhlIG1hcCBm
b3IgdGhlIGZpcnN0IHVzZS4KLSAgICBzX2Nzc1Byb3BlcnR5TWFwLnNldChhbGlnbm1lbnRfYmFz
ZWxpbmVBdHRyLCBBbmltYXRlZFN0cmluZyk7Ci0gICAgc19jc3NQcm9wZXJ0eU1hcC5zZXQoYmFz
ZWxpbmVfc2hpZnRBdHRyLCBBbmltYXRlZFN0cmluZyk7Ci0gICAgc19jc3NQcm9wZXJ0eU1hcC5z
ZXQoYnVmZmVyZWRfcmVuZGVyaW5nQXR0ciwgQW5pbWF0ZWRTdHJpbmcpOwotICAgIHNfY3NzUHJv
cGVydHlNYXAuc2V0KGNsaXBBdHRyLCBBbmltYXRlZFJlY3QpOwotICAgIHNfY3NzUHJvcGVydHlN
YXAuc2V0KGNsaXBfcGF0aEF0dHIsIEFuaW1hdGVkU3RyaW5nKTsKLSAgICBzX2Nzc1Byb3BlcnR5
TWFwLnNldChjbGlwX3J1bGVBdHRyLCBBbmltYXRlZFN0cmluZyk7Ci0gICAgc19jc3NQcm9wZXJ0
eU1hcC5zZXQoU1ZHTmFtZXM6OmNvbG9yQXR0ciwgQW5pbWF0ZWRDb2xvcik7Ci0gICAgc19jc3NQ
cm9wZXJ0eU1hcC5zZXQoY29sb3JfaW50ZXJwb2xhdGlvbkF0dHIsIEFuaW1hdGVkU3RyaW5nKTsK
LSAgICBzX2Nzc1Byb3BlcnR5TWFwLnNldChjb2xvcl9pbnRlcnBvbGF0aW9uX2ZpbHRlcnNBdHRy
LCBBbmltYXRlZFN0cmluZyk7Ci0gICAgc19jc3NQcm9wZXJ0eU1hcC5zZXQoY29sb3JfcHJvZmls
ZUF0dHIsIEFuaW1hdGVkU3RyaW5nKTsKLSAgICBzX2Nzc1Byb3BlcnR5TWFwLnNldChjb2xvcl9y
ZW5kZXJpbmdBdHRyLCBBbmltYXRlZFN0cmluZyk7Ci0gICAgc19jc3NQcm9wZXJ0eU1hcC5zZXQo
Y3Vyc29yQXR0ciwgQW5pbWF0ZWRTdHJpbmcpOwotICAgIHNfY3NzUHJvcGVydHlNYXAuc2V0KGRp
c3BsYXlBdHRyLCBBbmltYXRlZFN0cmluZyk7Ci0gICAgc19jc3NQcm9wZXJ0eU1hcC5zZXQoZG9t
aW5hbnRfYmFzZWxpbmVBdHRyLCBBbmltYXRlZFN0cmluZyk7Ci0gICAgc19jc3NQcm9wZXJ0eU1h
cC5zZXQoZmlsbEF0dHIsIEFuaW1hdGVkQ29sb3IpOwotICAgIHNfY3NzUHJvcGVydHlNYXAuc2V0
KGZpbGxfb3BhY2l0eUF0dHIsIEFuaW1hdGVkTnVtYmVyKTsKLSAgICBzX2Nzc1Byb3BlcnR5TWFw
LnNldChmaWxsX3J1bGVBdHRyLCBBbmltYXRlZFN0cmluZyk7Ci0gICAgc19jc3NQcm9wZXJ0eU1h
cC5zZXQoZmlsdGVyQXR0ciwgQW5pbWF0ZWRTdHJpbmcpOwotICAgIHNfY3NzUHJvcGVydHlNYXAu
c2V0KGZsb29kX2NvbG9yQXR0ciwgQW5pbWF0ZWRDb2xvcik7Ci0gICAgc19jc3NQcm9wZXJ0eU1h
cC5zZXQoZmxvb2Rfb3BhY2l0eUF0dHIsIEFuaW1hdGVkTnVtYmVyKTsKLSAgICBzX2Nzc1Byb3Bl
cnR5TWFwLnNldChmb250X2ZhbWlseUF0dHIsIEFuaW1hdGVkU3RyaW5nKTsKLSAgICBzX2Nzc1By
b3BlcnR5TWFwLnNldChmb250X3NpemVBdHRyLCBBbmltYXRlZExlbmd0aCk7Ci0gICAgc19jc3NQ
cm9wZXJ0eU1hcC5zZXQoZm9udF9zdHJldGNoQXR0ciwgQW5pbWF0ZWRTdHJpbmcpOwotICAgIHNf
Y3NzUHJvcGVydHlNYXAuc2V0KGZvbnRfc3R5bGVBdHRyLCBBbmltYXRlZFN0cmluZyk7Ci0gICAg
c19jc3NQcm9wZXJ0eU1hcC5zZXQoZm9udF92YXJpYW50QXR0ciwgQW5pbWF0ZWRTdHJpbmcpOwot
ICAgIHNfY3NzUHJvcGVydHlNYXAuc2V0KGZvbnRfd2VpZ2h0QXR0ciwgQW5pbWF0ZWRTdHJpbmcp
OwotICAgIHNfY3NzUHJvcGVydHlNYXAuc2V0KGltYWdlX3JlbmRlcmluZ0F0dHIsIEFuaW1hdGVk
U3RyaW5nKTsKLSAgICBzX2Nzc1Byb3BlcnR5TWFwLnNldChrZXJuaW5nQXR0ciwgQW5pbWF0ZWRM
ZW5ndGgpOwotICAgIHNfY3NzUHJvcGVydHlNYXAuc2V0KGxldHRlcl9zcGFjaW5nQXR0ciwgQW5p
bWF0ZWRMZW5ndGgpOwotICAgIHNfY3NzUHJvcGVydHlNYXAuc2V0KGxpZ2h0aW5nX2NvbG9yQXR0
ciwgQW5pbWF0ZWRDb2xvcik7Ci0gICAgc19jc3NQcm9wZXJ0eU1hcC5zZXQobWFya2VyX2VuZEF0
dHIsIEFuaW1hdGVkU3RyaW5nKTsKLSAgICBzX2Nzc1Byb3BlcnR5TWFwLnNldChtYXJrZXJfbWlk
QXR0ciwgQW5pbWF0ZWRTdHJpbmcpOwotICAgIHNfY3NzUHJvcGVydHlNYXAuc2V0KG1hcmtlcl9z
dGFydEF0dHIsIEFuaW1hdGVkU3RyaW5nKTsKLSAgICBzX2Nzc1Byb3BlcnR5TWFwLnNldChtYXNr
QXR0ciwgQW5pbWF0ZWRTdHJpbmcpOwotICAgIHNfY3NzUHJvcGVydHlNYXAuc2V0KG1hc2tfdHlw
ZUF0dHIsIEFuaW1hdGVkU3RyaW5nKTsKLSAgICBzX2Nzc1Byb3BlcnR5TWFwLnNldChvcGFjaXR5
QXR0ciwgQW5pbWF0ZWROdW1iZXIpOwotICAgIHNfY3NzUHJvcGVydHlNYXAuc2V0KG92ZXJmbG93
QXR0ciwgQW5pbWF0ZWRTdHJpbmcpOwotICAgIHNfY3NzUHJvcGVydHlNYXAuc2V0KHBvaW50ZXJf
ZXZlbnRzQXR0ciwgQW5pbWF0ZWRTdHJpbmcpOwotICAgIHNfY3NzUHJvcGVydHlNYXAuc2V0KHNo
YXBlX3JlbmRlcmluZ0F0dHIsIEFuaW1hdGVkU3RyaW5nKTsKLSAgICBzX2Nzc1Byb3BlcnR5TWFw
LnNldChzdG9wX2NvbG9yQXR0ciwgQW5pbWF0ZWRDb2xvcik7Ci0gICAgc19jc3NQcm9wZXJ0eU1h
cC5zZXQoc3RvcF9vcGFjaXR5QXR0ciwgQW5pbWF0ZWROdW1iZXIpOwotICAgIHNfY3NzUHJvcGVy
dHlNYXAuc2V0KHN0cm9rZUF0dHIsIEFuaW1hdGVkQ29sb3IpOwotICAgIHNfY3NzUHJvcGVydHlN
YXAuc2V0KHN0cm9rZV9kYXNoYXJyYXlBdHRyLCBBbmltYXRlZExlbmd0aExpc3QpOwotICAgIHNf
Y3NzUHJvcGVydHlNYXAuc2V0KHN0cm9rZV9kYXNob2Zmc2V0QXR0ciwgQW5pbWF0ZWRMZW5ndGgp
OwotICAgIHNfY3NzUHJvcGVydHlNYXAuc2V0KHN0cm9rZV9saW5lY2FwQXR0ciwgQW5pbWF0ZWRT
dHJpbmcpOwotICAgIHNfY3NzUHJvcGVydHlNYXAuc2V0KHN0cm9rZV9saW5lam9pbkF0dHIsIEFu
aW1hdGVkU3RyaW5nKTsKLSAgICBzX2Nzc1Byb3BlcnR5TWFwLnNldChzdHJva2VfbWl0ZXJsaW1p
dEF0dHIsIEFuaW1hdGVkTnVtYmVyKTsKLSAgICBzX2Nzc1Byb3BlcnR5TWFwLnNldChzdHJva2Vf
b3BhY2l0eUF0dHIsIEFuaW1hdGVkTnVtYmVyKTsKLSAgICBzX2Nzc1Byb3BlcnR5TWFwLnNldChz
dHJva2Vfd2lkdGhBdHRyLCBBbmltYXRlZExlbmd0aCk7Ci0gICAgc19jc3NQcm9wZXJ0eU1hcC5z
ZXQodGV4dF9hbmNob3JBdHRyLCBBbmltYXRlZFN0cmluZyk7Ci0gICAgc19jc3NQcm9wZXJ0eU1h
cC5zZXQodGV4dF9kZWNvcmF0aW9uQXR0ciwgQW5pbWF0ZWRTdHJpbmcpOwotICAgIHNfY3NzUHJv
cGVydHlNYXAuc2V0KHRleHRfcmVuZGVyaW5nQXR0ciwgQW5pbWF0ZWRTdHJpbmcpOwotICAgIHNf
Y3NzUHJvcGVydHlNYXAuc2V0KHZlY3Rvcl9lZmZlY3RBdHRyLCBBbmltYXRlZFN0cmluZyk7Ci0g
ICAgc19jc3NQcm9wZXJ0eU1hcC5zZXQodmlzaWJpbGl0eUF0dHIsIEFuaW1hdGVkU3RyaW5nKTsK
LSAgICBzX2Nzc1Byb3BlcnR5TWFwLnNldCh3b3JkX3NwYWNpbmdBdHRyLCBBbmltYXRlZExlbmd0
aCk7Ci0gICAgcmV0dXJuIHNfY3NzUHJvcGVydHlNYXA7CitzdGF0aWMgTkVWRVJfSU5MSU5FIHZv
aWQgcG9wdWxhdGVBdHRyaWJ1dGVOYW1lVG9DU1NQcm9wZXJ0eUlETWFwKEhhc2hNYXA8QXRvbWlj
U3RyaW5nSW1wbCosIENTU1Byb3BlcnR5SUQ+JiBtYXApCit7CisgICAgLy8gVGhpcyBsaXN0IHNo
b3VsZCBpbmNsdWRlIGFsbCBiYXNlIENTUyBhbmQgU1ZHIENTUyBwcm9wZXJ0aWVzIHdoaWNoIGFy
ZSBleHBvc2VkIGFzIFNWRyBYTUwgYXR0cmlidXRlcy4KKyAgICBzdGF0aWMgY29uc3QgUXVhbGlm
aWVkTmFtZSogY29uc3QgYXR0cmlidXRlTmFtZXNbXSA9IHsKKyAgICAgICAgJmFsaWdubWVudF9i
YXNlbGluZUF0dHIsCisgICAgICAgICZiYXNlbGluZV9zaGlmdEF0dHIsCisgICAgICAgICZidWZm
ZXJlZF9yZW5kZXJpbmdBdHRyLAorICAgICAgICAmY2xpcEF0dHIsCisgICAgICAgICZjbGlwX3Bh
dGhBdHRyLAorICAgICAgICAmY2xpcF9ydWxlQXR0ciwKKyAgICAgICAgJlNWR05hbWVzOjpjb2xv
ckF0dHIsCisgICAgICAgICZjb2xvcl9pbnRlcnBvbGF0aW9uQXR0ciwKKyAgICAgICAgJmNvbG9y
X2ludGVycG9sYXRpb25fZmlsdGVyc0F0dHIsCisgICAgICAgICZjb2xvcl9wcm9maWxlQXR0ciwK
KyAgICAgICAgJmNvbG9yX3JlbmRlcmluZ0F0dHIsCisgICAgICAgICZjdXJzb3JBdHRyLAorICAg
ICAgICAmU1ZHTmFtZXM6OmRpcmVjdGlvbkF0dHIsCisgICAgICAgICZkaXNwbGF5QXR0ciwKKyAg
ICAgICAgJmRvbWluYW50X2Jhc2VsaW5lQXR0ciwKKyAgICAgICAgJmVuYWJsZV9iYWNrZ3JvdW5k
QXR0ciwKKyAgICAgICAgJmZpbGxBdHRyLAorICAgICAgICAmZmlsbF9vcGFjaXR5QXR0ciwKKyAg
ICAgICAgJmZpbGxfcnVsZUF0dHIsCisgICAgICAgICZmaWx0ZXJBdHRyLAorICAgICAgICAmZmxv
b2RfY29sb3JBdHRyLAorICAgICAgICAmZmxvb2Rfb3BhY2l0eUF0dHIsCisgICAgICAgICZmb250
X2ZhbWlseUF0dHIsCisgICAgICAgICZmb250X3NpemVBdHRyLAorICAgICAgICAmZm9udF9zdHJl
dGNoQXR0ciwKKyAgICAgICAgJmZvbnRfc3R5bGVBdHRyLAorICAgICAgICAmZm9udF92YXJpYW50
QXR0ciwKKyAgICAgICAgJmZvbnRfd2VpZ2h0QXR0ciwKKyAgICAgICAgJmdseXBoX29yaWVudGF0
aW9uX2hvcml6b250YWxBdHRyLAorICAgICAgICAmZ2x5cGhfb3JpZW50YXRpb25fdmVydGljYWxB
dHRyLAorICAgICAgICAmaW1hZ2VfcmVuZGVyaW5nQXR0ciwKKyAgICAgICAgJmtlcm5pbmdBdHRy
LAorICAgICAgICAmbGV0dGVyX3NwYWNpbmdBdHRyLAorICAgICAgICAmbGlnaHRpbmdfY29sb3JB
dHRyLAorICAgICAgICAmbWFya2VyX2VuZEF0dHIsCisgICAgICAgICZtYXJrZXJfbWlkQXR0ciwK
KyAgICAgICAgJm1hcmtlcl9zdGFydEF0dHIsCisgICAgICAgICZtYXNrQXR0ciwKKyAgICAgICAg
Jm1hc2tfdHlwZUF0dHIsCisgICAgICAgICZvcGFjaXR5QXR0ciwKKyAgICAgICAgJm92ZXJmbG93
QXR0ciwKKyAgICAgICAgJnBvaW50ZXJfZXZlbnRzQXR0ciwKKyAgICAgICAgJnNoYXBlX3JlbmRl
cmluZ0F0dHIsCisgICAgICAgICZzdG9wX2NvbG9yQXR0ciwKKyAgICAgICAgJnN0b3Bfb3BhY2l0
eUF0dHIsCisgICAgICAgICZzdHJva2VBdHRyLAorICAgICAgICAmc3Ryb2tlX2Rhc2hhcnJheUF0
dHIsCisgICAgICAgICZzdHJva2VfZGFzaG9mZnNldEF0dHIsCisgICAgICAgICZzdHJva2VfbGlu
ZWNhcEF0dHIsCisgICAgICAgICZzdHJva2VfbGluZWpvaW5BdHRyLAorICAgICAgICAmc3Ryb2tl
X21pdGVybGltaXRBdHRyLAorICAgICAgICAmc3Ryb2tlX29wYWNpdHlBdHRyLAorICAgICAgICAm
c3Ryb2tlX3dpZHRoQXR0ciwKKyAgICAgICAgJnRleHRfYW5jaG9yQXR0ciwKKyAgICAgICAgJnRl
eHRfZGVjb3JhdGlvbkF0dHIsCisgICAgICAgICZ0ZXh0X3JlbmRlcmluZ0F0dHIsCisgICAgICAg
ICZ1bmljb2RlX2JpZGlBdHRyLAorICAgICAgICAmdmVjdG9yX2VmZmVjdEF0dHIsCisgICAgICAg
ICZ2aXNpYmlsaXR5QXR0ciwKKyAgICAgICAgJndvcmRfc3BhY2luZ0F0dHIsCisgICAgICAgICZ3
cml0aW5nX21vZGVBdHRyLAorICAgIH07CisKKyAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwg
V1RGX0FSUkFZX0xFTkdUSChhdHRyaWJ1dGVOYW1lcyk7ICsraSkgeworICAgICAgICBjb25zdCBB
dG9taWNTdHJpbmcmIGxvY2FsTmFtZSA9IGF0dHJpYnV0ZU5hbWVzW2ldLT5sb2NhbE5hbWUoKTsK
KyAgICAgICAgbWFwLmFkZChsb2NhbE5hbWUuaW1wbCgpLCBjc3NQcm9wZXJ0eUlEKGxvY2FsTmFt
ZSkpOworICAgIH0KKworICAgIC8vIEZJWE1FOiBXaGVuIENTUyBzdXBwb3J0cyAidHJhbnNmb3Jt
LW9yaWdpbiIgdGhpcyBzcGVjaWFsIGNhc2UgY2FuIGJlIHJlbW92ZWQsCisgICAgLy8gYW5kIHdl
IGNhbiBhZGQgdHJhbnNmb3JtX29yaWdpbkF0dHIgdG8gdGhlIHRhYmxlIGFib3ZlIGluc3RlYWQu
CisgICAgbWFwLmFkZCh0cmFuc2Zvcm1fb3JpZ2luQXR0ci5sb2NhbE5hbWUoKS5pbXBsKCksIENT
U1Byb3BlcnR5V2Via2l0VHJhbnNmb3JtT3JpZ2luKTsKK30KKworc3RhdGljIE5FVkVSX0lOTElO
RSB2b2lkIHBvcHVsYXRlQXR0cmlidXRlTmFtZVRvQW5pbWF0ZWRQcm9wZXJ0eVR5cGVNYXAoSGFz
aE1hcDxRdWFsaWZpZWROYW1lOjpRdWFsaWZpZWROYW1lSW1wbCosIEFuaW1hdGVkUHJvcGVydHlU
eXBlPiYgbWFwKQoreworICAgIHN0cnVjdCBUYWJsZUVudHJ5IHsKKyAgICAgICAgY29uc3QgUXVh
bGlmaWVkTmFtZSYgYXR0cmlidXRlTmFtZTsKKyAgICAgICAgQW5pbWF0ZWRQcm9wZXJ0eVR5cGUg
dHlwZTsKKyAgICB9OworCisgICAgc3RhdGljIGNvbnN0IFRhYmxlRW50cnkgdGFibGVbXSA9IHsK
KyAgICAgICAgeyBhbGlnbm1lbnRfYmFzZWxpbmVBdHRyLCBBbmltYXRlZFN0cmluZyB9LAorICAg
ICAgICB7IGJhc2VsaW5lX3NoaWZ0QXR0ciwgQW5pbWF0ZWRTdHJpbmcgfSwKKyAgICAgICAgeyBi
dWZmZXJlZF9yZW5kZXJpbmdBdHRyLCBBbmltYXRlZFN0cmluZyB9LAorICAgICAgICB7IGNsaXBB
dHRyLCBBbmltYXRlZFJlY3QgfSwKKyAgICAgICAgeyBjbGlwX3BhdGhBdHRyLCBBbmltYXRlZFN0
cmluZyB9LAorICAgICAgICB7IGNsaXBfcnVsZUF0dHIsIEFuaW1hdGVkU3RyaW5nIH0sCisgICAg
ICAgIHsgU1ZHTmFtZXM6OmNvbG9yQXR0ciwgQW5pbWF0ZWRDb2xvciB9LAorICAgICAgICB7IGNv
bG9yX2ludGVycG9sYXRpb25BdHRyLCBBbmltYXRlZFN0cmluZyB9LAorICAgICAgICB7IGNvbG9y
X2ludGVycG9sYXRpb25fZmlsdGVyc0F0dHIsIEFuaW1hdGVkU3RyaW5nIH0sCisgICAgICAgIHsg
Y29sb3JfcHJvZmlsZUF0dHIsIEFuaW1hdGVkU3RyaW5nIH0sCisgICAgICAgIHsgY29sb3JfcmVu
ZGVyaW5nQXR0ciwgQW5pbWF0ZWRTdHJpbmcgfSwKKyAgICAgICAgeyBjdXJzb3JBdHRyLCBBbmlt
YXRlZFN0cmluZyB9LAorICAgICAgICB7IGRpc3BsYXlBdHRyLCBBbmltYXRlZFN0cmluZyB9LAor
ICAgICAgICB7IGRvbWluYW50X2Jhc2VsaW5lQXR0ciwgQW5pbWF0ZWRTdHJpbmcgfSwKKyAgICAg
ICAgeyBmaWxsQXR0ciwgQW5pbWF0ZWRDb2xvciB9LAorICAgICAgICB7IGZpbGxfb3BhY2l0eUF0
dHIsIEFuaW1hdGVkTnVtYmVyIH0sCisgICAgICAgIHsgZmlsbF9ydWxlQXR0ciwgQW5pbWF0ZWRT
dHJpbmcgfSwKKyAgICAgICAgeyBmaWx0ZXJBdHRyLCBBbmltYXRlZFN0cmluZyB9LAorICAgICAg
ICB7IGZsb29kX2NvbG9yQXR0ciwgQW5pbWF0ZWRDb2xvciB9LAorICAgICAgICB7IGZsb29kX29w
YWNpdHlBdHRyLCBBbmltYXRlZE51bWJlciB9LAorICAgICAgICB7IGZvbnRfZmFtaWx5QXR0ciwg
QW5pbWF0ZWRTdHJpbmcgfSwKKyAgICAgICAgeyBmb250X3NpemVBdHRyLCBBbmltYXRlZExlbmd0
aCB9LAorICAgICAgICB7IGZvbnRfc3RyZXRjaEF0dHIsIEFuaW1hdGVkU3RyaW5nIH0sCisgICAg
ICAgIHsgZm9udF9zdHlsZUF0dHIsIEFuaW1hdGVkU3RyaW5nIH0sCisgICAgICAgIHsgZm9udF92
YXJpYW50QXR0ciwgQW5pbWF0ZWRTdHJpbmcgfSwKKyAgICAgICAgeyBmb250X3dlaWdodEF0dHIs
IEFuaW1hdGVkU3RyaW5nIH0sCisgICAgICAgIHsgaW1hZ2VfcmVuZGVyaW5nQXR0ciwgQW5pbWF0
ZWRTdHJpbmcgfSwKKyAgICAgICAgeyBrZXJuaW5nQXR0ciwgQW5pbWF0ZWRMZW5ndGggfSwKKyAg
ICAgICAgeyBsZXR0ZXJfc3BhY2luZ0F0dHIsIEFuaW1hdGVkTGVuZ3RoIH0sCisgICAgICAgIHsg
bGlnaHRpbmdfY29sb3JBdHRyLCBBbmltYXRlZENvbG9yIH0sCisgICAgICAgIHsgbWFya2VyX2Vu
ZEF0dHIsIEFuaW1hdGVkU3RyaW5nIH0sCisgICAgICAgIHsgbWFya2VyX21pZEF0dHIsIEFuaW1h
dGVkU3RyaW5nIH0sCisgICAgICAgIHsgbWFya2VyX3N0YXJ0QXR0ciwgQW5pbWF0ZWRTdHJpbmcg
fSwKKyAgICAgICAgeyBtYXNrQXR0ciwgQW5pbWF0ZWRTdHJpbmcgfSwKKyAgICAgICAgeyBtYXNr
X3R5cGVBdHRyLCBBbmltYXRlZFN0cmluZyB9LAorICAgICAgICB7IG9wYWNpdHlBdHRyLCBBbmlt
YXRlZE51bWJlciB9LAorICAgICAgICB7IG92ZXJmbG93QXR0ciwgQW5pbWF0ZWRTdHJpbmcgfSwK
KyAgICAgICAgeyBwb2ludGVyX2V2ZW50c0F0dHIsIEFuaW1hdGVkU3RyaW5nIH0sCisgICAgICAg
IHsgc2hhcGVfcmVuZGVyaW5nQXR0ciwgQW5pbWF0ZWRTdHJpbmcgfSwKKyAgICAgICAgeyBzdG9w
X2NvbG9yQXR0ciwgQW5pbWF0ZWRDb2xvciB9LAorICAgICAgICB7IHN0b3Bfb3BhY2l0eUF0dHIs
IEFuaW1hdGVkTnVtYmVyIH0sCisgICAgICAgIHsgc3Ryb2tlQXR0ciwgQW5pbWF0ZWRDb2xvciB9
LAorICAgICAgICB7IHN0cm9rZV9kYXNoYXJyYXlBdHRyLCBBbmltYXRlZExlbmd0aExpc3QgfSwK
KyAgICAgICAgeyBzdHJva2VfZGFzaG9mZnNldEF0dHIsIEFuaW1hdGVkTGVuZ3RoIH0sCisgICAg
ICAgIHsgc3Ryb2tlX2xpbmVjYXBBdHRyLCBBbmltYXRlZFN0cmluZyB9LAorICAgICAgICB7IHN0
cm9rZV9saW5lam9pbkF0dHIsIEFuaW1hdGVkU3RyaW5nIH0sCisgICAgICAgIHsgc3Ryb2tlX21p
dGVybGltaXRBdHRyLCBBbmltYXRlZE51bWJlciB9LAorICAgICAgICB7IHN0cm9rZV9vcGFjaXR5
QXR0ciwgQW5pbWF0ZWROdW1iZXIgfSwKKyAgICAgICAgeyBzdHJva2Vfd2lkdGhBdHRyLCBBbmlt
YXRlZExlbmd0aCB9LAorICAgICAgICB7IHRleHRfYW5jaG9yQXR0ciwgQW5pbWF0ZWRTdHJpbmcg
fSwKKyAgICAgICAgeyB0ZXh0X2RlY29yYXRpb25BdHRyLCBBbmltYXRlZFN0cmluZyB9LAorICAg
ICAgICB7IHRleHRfcmVuZGVyaW5nQXR0ciwgQW5pbWF0ZWRTdHJpbmcgfSwKKyAgICAgICAgeyB2
ZWN0b3JfZWZmZWN0QXR0ciwgQW5pbWF0ZWRTdHJpbmcgfSwKKyAgICAgICAgeyB2aXNpYmlsaXR5
QXR0ciwgQW5pbWF0ZWRTdHJpbmcgfSwKKyAgICAgICAgeyB3b3JkX3NwYWNpbmdBdHRyLCBBbmlt
YXRlZExlbmd0aCB9LAorICAgIH07CisKKyAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgV1RG
X0FSUkFZX0xFTkdUSCh0YWJsZSk7ICsraSkKKyAgICAgICAgbWFwLmFkZCh0YWJsZVtpXS5hdHRy
aWJ1dGVOYW1lLmltcGwoKSwgdGFibGVbaV0udHlwZSk7Cit9CisKK3N0YXRpYyBpbmxpbmUgSGFz
aE1hcDxRdWFsaWZpZWROYW1lOjpRdWFsaWZpZWROYW1lSW1wbCosIEFuaW1hdGVkUHJvcGVydHlU
eXBlPiYgYXR0cmlidXRlTmFtZVRvQW5pbWF0ZWRQcm9wZXJ0eVR5cGVNYXAoKQoreworICAgIHN0
YXRpYyBOZXZlckRlc3Ryb3llZDxIYXNoTWFwPFF1YWxpZmllZE5hbWU6OlF1YWxpZmllZE5hbWVJ
bXBsKiwgQW5pbWF0ZWRQcm9wZXJ0eVR5cGU+PiBtYXA7CisgICAgaWYgKG1hcC5nZXQoKS5pc0Vt
cHR5KCkpCisgICAgICAgIHBvcHVsYXRlQXR0cmlidXRlTmFtZVRvQW5pbWF0ZWRQcm9wZXJ0eVR5
cGVNYXAobWFwKTsKKyAgICByZXR1cm4gbWFwOwogfQogCiBTVkdFbGVtZW50OjpTVkdFbGVtZW50
KGNvbnN0IFF1YWxpZmllZE5hbWUmIHRhZ05hbWUsIERvY3VtZW50JiBkb2N1bWVudCkKQEAgLTQ0
OSwxMyArNTI3LDEzIEBAIHZvaWQgU1ZHRWxlbWVudDo6cGFyc2VBdHRyaWJ1dGUoY29uc3QgUXVh
bGlmaWVkTmFtZSYgbmFtZSwgY29uc3QgQXRvbWljU3RyaW5nJiB2CiB2b2lkIFNWR0VsZW1lbnQ6
OmFuaW1hdGVkUHJvcGVydHlUeXBlRm9yQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0
dHJpYnV0ZU5hbWUsIFZlY3RvcjxBbmltYXRlZFByb3BlcnR5VHlwZT4mIHByb3BlcnR5VHlwZXMp
CiB7CiAgICAgbG9jYWxBdHRyaWJ1dGVUb1Byb3BlcnR5TWFwKCkuYW5pbWF0ZWRQcm9wZXJ0eVR5
cGVGb3JBdHRyaWJ1dGUoYXR0cmlidXRlTmFtZSwgcHJvcGVydHlUeXBlcyk7Ci0KICAgICBpZiAo
IXByb3BlcnR5VHlwZXMuaXNFbXB0eSgpKQogICAgICAgICByZXR1cm47CiAKLSAgICBBdHRyaWJ1
dGVUb1Byb3BlcnR5VHlwZU1hcCYgY3NzUHJvcGVydHlUeXBlTWFwID0gY3NzUHJvcGVydHlUb1R5
cGVNYXAoKTsKLSAgICBpZiAoY3NzUHJvcGVydHlUeXBlTWFwLmNvbnRhaW5zKGF0dHJpYnV0ZU5h
bWUpKQotICAgICAgICBwcm9wZXJ0eVR5cGVzLmFwcGVuZChjc3NQcm9wZXJ0eVR5cGVNYXAuZ2V0
KGF0dHJpYnV0ZU5hbWUpKTsKKyAgICBhdXRvJiBtYXAgPSBhdHRyaWJ1dGVOYW1lVG9BbmltYXRl
ZFByb3BlcnR5VHlwZU1hcCgpOworICAgIGF1dG8gaXQgPSBtYXAuZmluZChhdHRyaWJ1dGVOYW1l
LmltcGwoKSk7CisgICAgaWYgKGl0ICE9IG1hcC5lbmQoKSkKKyAgICAgICAgcHJvcGVydHlUeXBl
cy5hcHBlbmQoaXQtPnZhbHVlKTsKIH0KIAogYm9vbCBTVkdFbGVtZW50OjpoYXZlTG9hZGVkUmVx
dWlyZWRSZXNvdXJjZXMoKQpAQCAtOTA0LDgwICs5ODIsMTYgQEAgQ1NTUHJvcGVydHlJRCBTVkdF
bGVtZW50Ojpjc3NQcm9wZXJ0eUlkRm9yU1ZHQXR0cmlidXRlTmFtZShjb25zdCBRdWFsaWZpZWRO
YW1lJgogICAgIGlmICghYXR0ck5hbWUubmFtZXNwYWNlVVJJKCkuaXNOdWxsKCkpCiAgICAgICAg
IHJldHVybiBDU1NQcm9wZXJ0eUludmFsaWQ7CiAKLSAgICBzdGF0aWMgSGFzaE1hcDxBdG9taWNT
dHJpbmdJbXBsKiwgQ1NTUHJvcGVydHlJRD4qIHByb3BlcnR5TmFtZVRvSWRNYXAgPSAwOwotICAg
IGlmICghcHJvcGVydHlOYW1lVG9JZE1hcCkgewotICAgICAgICBwcm9wZXJ0eU5hbWVUb0lkTWFw
ID0gbmV3IEhhc2hNYXA8QXRvbWljU3RyaW5nSW1wbCosIENTU1Byb3BlcnR5SUQ+OwotICAgICAg
ICAvLyBUaGlzIGlzIGEgbGlzdCBvZiBhbGwgYmFzZSBDU1MgYW5kIFNWRyBDU1MgcHJvcGVydGll
cyB3aGljaCBhcmUgZXhwb3NlZCBhcyBTVkcgWE1MIGF0dHJpYnV0ZXMKLSAgICAgICAgbWFwQXR0
cmlidXRlVG9DU1NQcm9wZXJ0eShwcm9wZXJ0eU5hbWVUb0lkTWFwLCBhbGlnbm1lbnRfYmFzZWxp
bmVBdHRyKTsKLSAgICAgICAgbWFwQXR0cmlidXRlVG9DU1NQcm9wZXJ0eShwcm9wZXJ0eU5hbWVU
b0lkTWFwLCBiYXNlbGluZV9zaGlmdEF0dHIpOwotICAgICAgICBtYXBBdHRyaWJ1dGVUb0NTU1By
b3BlcnR5KHByb3BlcnR5TmFtZVRvSWRNYXAsIGJ1ZmZlcmVkX3JlbmRlcmluZ0F0dHIpOwotICAg
ICAgICBtYXBBdHRyaWJ1dGVUb0NTU1Byb3BlcnR5KHByb3BlcnR5TmFtZVRvSWRNYXAsIGNsaXBB
dHRyKTsKLSAgICAgICAgbWFwQXR0cmlidXRlVG9DU1NQcm9wZXJ0eShwcm9wZXJ0eU5hbWVUb0lk
TWFwLCBjbGlwX3BhdGhBdHRyKTsKLSAgICAgICAgbWFwQXR0cmlidXRlVG9DU1NQcm9wZXJ0eShw
cm9wZXJ0eU5hbWVUb0lkTWFwLCBjbGlwX3J1bGVBdHRyKTsKLSAgICAgICAgbWFwQXR0cmlidXRl
VG9DU1NQcm9wZXJ0eShwcm9wZXJ0eU5hbWVUb0lkTWFwLCBTVkdOYW1lczo6Y29sb3JBdHRyKTsK
LSAgICAgICAgbWFwQXR0cmlidXRlVG9DU1NQcm9wZXJ0eShwcm9wZXJ0eU5hbWVUb0lkTWFwLCBj
b2xvcl9pbnRlcnBvbGF0aW9uQXR0cik7Ci0gICAgICAgIG1hcEF0dHJpYnV0ZVRvQ1NTUHJvcGVy
dHkocHJvcGVydHlOYW1lVG9JZE1hcCwgY29sb3JfaW50ZXJwb2xhdGlvbl9maWx0ZXJzQXR0cik7
Ci0gICAgICAgIG1hcEF0dHJpYnV0ZVRvQ1NTUHJvcGVydHkocHJvcGVydHlOYW1lVG9JZE1hcCwg
Y29sb3JfcHJvZmlsZUF0dHIpOwotICAgICAgICBtYXBBdHRyaWJ1dGVUb0NTU1Byb3BlcnR5KHBy
b3BlcnR5TmFtZVRvSWRNYXAsIGNvbG9yX3JlbmRlcmluZ0F0dHIpOwotICAgICAgICBtYXBBdHRy
aWJ1dGVUb0NTU1Byb3BlcnR5KHByb3BlcnR5TmFtZVRvSWRNYXAsIGN1cnNvckF0dHIpOwotICAg
ICAgICBtYXBBdHRyaWJ1dGVUb0NTU1Byb3BlcnR5KHByb3BlcnR5TmFtZVRvSWRNYXAsIFNWR05h
bWVzOjpkaXJlY3Rpb25BdHRyKTsKLSAgICAgICAgbWFwQXR0cmlidXRlVG9DU1NQcm9wZXJ0eShw
cm9wZXJ0eU5hbWVUb0lkTWFwLCBkaXNwbGF5QXR0cik7Ci0gICAgICAgIG1hcEF0dHJpYnV0ZVRv
Q1NTUHJvcGVydHkocHJvcGVydHlOYW1lVG9JZE1hcCwgZG9taW5hbnRfYmFzZWxpbmVBdHRyKTsK
LSAgICAgICAgbWFwQXR0cmlidXRlVG9DU1NQcm9wZXJ0eShwcm9wZXJ0eU5hbWVUb0lkTWFwLCBl
bmFibGVfYmFja2dyb3VuZEF0dHIpOwotICAgICAgICBtYXBBdHRyaWJ1dGVUb0NTU1Byb3BlcnR5
KHByb3BlcnR5TmFtZVRvSWRNYXAsIGZpbGxBdHRyKTsKLSAgICAgICAgbWFwQXR0cmlidXRlVG9D
U1NQcm9wZXJ0eShwcm9wZXJ0eU5hbWVUb0lkTWFwLCBmaWxsX29wYWNpdHlBdHRyKTsKLSAgICAg
ICAgbWFwQXR0cmlidXRlVG9DU1NQcm9wZXJ0eShwcm9wZXJ0eU5hbWVUb0lkTWFwLCBmaWxsX3J1
bGVBdHRyKTsKLSAgICAgICAgbWFwQXR0cmlidXRlVG9DU1NQcm9wZXJ0eShwcm9wZXJ0eU5hbWVU
b0lkTWFwLCBmaWx0ZXJBdHRyKTsKLSAgICAgICAgbWFwQXR0cmlidXRlVG9DU1NQcm9wZXJ0eShw
cm9wZXJ0eU5hbWVUb0lkTWFwLCBmbG9vZF9jb2xvckF0dHIpOwotICAgICAgICBtYXBBdHRyaWJ1
dGVUb0NTU1Byb3BlcnR5KHByb3BlcnR5TmFtZVRvSWRNYXAsIGZsb29kX29wYWNpdHlBdHRyKTsK
LSAgICAgICAgbWFwQXR0cmlidXRlVG9DU1NQcm9wZXJ0eShwcm9wZXJ0eU5hbWVUb0lkTWFwLCBm
b250X2ZhbWlseUF0dHIpOwotICAgICAgICBtYXBBdHRyaWJ1dGVUb0NTU1Byb3BlcnR5KHByb3Bl
cnR5TmFtZVRvSWRNYXAsIGZvbnRfc2l6ZUF0dHIpOwotICAgICAgICBtYXBBdHRyaWJ1dGVUb0NT
U1Byb3BlcnR5KHByb3BlcnR5TmFtZVRvSWRNYXAsIGZvbnRfc3RyZXRjaEF0dHIpOwotICAgICAg
ICBtYXBBdHRyaWJ1dGVUb0NTU1Byb3BlcnR5KHByb3BlcnR5TmFtZVRvSWRNYXAsIGZvbnRfc3R5
bGVBdHRyKTsKLSAgICAgICAgbWFwQXR0cmlidXRlVG9DU1NQcm9wZXJ0eShwcm9wZXJ0eU5hbWVU
b0lkTWFwLCBmb250X3ZhcmlhbnRBdHRyKTsKLSAgICAgICAgbWFwQXR0cmlidXRlVG9DU1NQcm9w
ZXJ0eShwcm9wZXJ0eU5hbWVUb0lkTWFwLCBmb250X3dlaWdodEF0dHIpOwotICAgICAgICBtYXBB
dHRyaWJ1dGVUb0NTU1Byb3BlcnR5KHByb3BlcnR5TmFtZVRvSWRNYXAsIGdseXBoX29yaWVudGF0
aW9uX2hvcml6b250YWxBdHRyKTsKLSAgICAgICAgbWFwQXR0cmlidXRlVG9DU1NQcm9wZXJ0eShw
cm9wZXJ0eU5hbWVUb0lkTWFwLCBnbHlwaF9vcmllbnRhdGlvbl92ZXJ0aWNhbEF0dHIpOwotICAg
ICAgICBtYXBBdHRyaWJ1dGVUb0NTU1Byb3BlcnR5KHByb3BlcnR5TmFtZVRvSWRNYXAsIGltYWdl
X3JlbmRlcmluZ0F0dHIpOwotICAgICAgICBtYXBBdHRyaWJ1dGVUb0NTU1Byb3BlcnR5KHByb3Bl
cnR5TmFtZVRvSWRNYXAsIGtlcm5pbmdBdHRyKTsKLSAgICAgICAgbWFwQXR0cmlidXRlVG9DU1NQ
cm9wZXJ0eShwcm9wZXJ0eU5hbWVUb0lkTWFwLCBsZXR0ZXJfc3BhY2luZ0F0dHIpOwotICAgICAg
ICBtYXBBdHRyaWJ1dGVUb0NTU1Byb3BlcnR5KHByb3BlcnR5TmFtZVRvSWRNYXAsIGxpZ2h0aW5n
X2NvbG9yQXR0cik7Ci0gICAgICAgIG1hcEF0dHJpYnV0ZVRvQ1NTUHJvcGVydHkocHJvcGVydHlO
YW1lVG9JZE1hcCwgbWFya2VyX2VuZEF0dHIpOwotICAgICAgICBtYXBBdHRyaWJ1dGVUb0NTU1By
b3BlcnR5KHByb3BlcnR5TmFtZVRvSWRNYXAsIG1hcmtlcl9taWRBdHRyKTsKLSAgICAgICAgbWFw
QXR0cmlidXRlVG9DU1NQcm9wZXJ0eShwcm9wZXJ0eU5hbWVUb0lkTWFwLCBtYXJrZXJfc3RhcnRB
dHRyKTsKLSAgICAgICAgbWFwQXR0cmlidXRlVG9DU1NQcm9wZXJ0eShwcm9wZXJ0eU5hbWVUb0lk
TWFwLCBtYXNrQXR0cik7Ci0gICAgICAgIG1hcEF0dHJpYnV0ZVRvQ1NTUHJvcGVydHkocHJvcGVy
dHlOYW1lVG9JZE1hcCwgbWFza190eXBlQXR0cik7Ci0gICAgICAgIG1hcEF0dHJpYnV0ZVRvQ1NT
UHJvcGVydHkocHJvcGVydHlOYW1lVG9JZE1hcCwgb3BhY2l0eUF0dHIpOwotICAgICAgICBtYXBB
dHRyaWJ1dGVUb0NTU1Byb3BlcnR5KHByb3BlcnR5TmFtZVRvSWRNYXAsIG92ZXJmbG93QXR0cik7
Ci0gICAgICAgIG1hcEF0dHJpYnV0ZVRvQ1NTUHJvcGVydHkocHJvcGVydHlOYW1lVG9JZE1hcCwg
cG9pbnRlcl9ldmVudHNBdHRyKTsKLSAgICAgICAgbWFwQXR0cmlidXRlVG9DU1NQcm9wZXJ0eShw
cm9wZXJ0eU5hbWVUb0lkTWFwLCBzaGFwZV9yZW5kZXJpbmdBdHRyKTsKLSAgICAgICAgbWFwQXR0
cmlidXRlVG9DU1NQcm9wZXJ0eShwcm9wZXJ0eU5hbWVUb0lkTWFwLCBzdG9wX2NvbG9yQXR0cik7
Ci0gICAgICAgIG1hcEF0dHJpYnV0ZVRvQ1NTUHJvcGVydHkocHJvcGVydHlOYW1lVG9JZE1hcCwg
c3RvcF9vcGFjaXR5QXR0cik7Ci0gICAgICAgIG1hcEF0dHJpYnV0ZVRvQ1NTUHJvcGVydHkocHJv
cGVydHlOYW1lVG9JZE1hcCwgc3Ryb2tlQXR0cik7Ci0gICAgICAgIG1hcEF0dHJpYnV0ZVRvQ1NT
UHJvcGVydHkocHJvcGVydHlOYW1lVG9JZE1hcCwgc3Ryb2tlX2Rhc2hhcnJheUF0dHIpOwotICAg
ICAgICBtYXBBdHRyaWJ1dGVUb0NTU1Byb3BlcnR5KHByb3BlcnR5TmFtZVRvSWRNYXAsIHN0cm9r
ZV9kYXNob2Zmc2V0QXR0cik7Ci0gICAgICAgIG1hcEF0dHJpYnV0ZVRvQ1NTUHJvcGVydHkocHJv
cGVydHlOYW1lVG9JZE1hcCwgc3Ryb2tlX2xpbmVjYXBBdHRyKTsKLSAgICAgICAgbWFwQXR0cmli
dXRlVG9DU1NQcm9wZXJ0eShwcm9wZXJ0eU5hbWVUb0lkTWFwLCBzdHJva2VfbGluZWpvaW5BdHRy
KTsKLSAgICAgICAgbWFwQXR0cmlidXRlVG9DU1NQcm9wZXJ0eShwcm9wZXJ0eU5hbWVUb0lkTWFw
LCBzdHJva2VfbWl0ZXJsaW1pdEF0dHIpOwotICAgICAgICBtYXBBdHRyaWJ1dGVUb0NTU1Byb3Bl
cnR5KHByb3BlcnR5TmFtZVRvSWRNYXAsIHN0cm9rZV9vcGFjaXR5QXR0cik7Ci0gICAgICAgIG1h
cEF0dHJpYnV0ZVRvQ1NTUHJvcGVydHkocHJvcGVydHlOYW1lVG9JZE1hcCwgc3Ryb2tlX3dpZHRo
QXR0cik7Ci0gICAgICAgIG1hcEF0dHJpYnV0ZVRvQ1NTUHJvcGVydHkocHJvcGVydHlOYW1lVG9J
ZE1hcCwgdGV4dF9hbmNob3JBdHRyKTsKLSAgICAgICAgbWFwQXR0cmlidXRlVG9DU1NQcm9wZXJ0
eShwcm9wZXJ0eU5hbWVUb0lkTWFwLCB0ZXh0X2RlY29yYXRpb25BdHRyKTsKLSAgICAgICAgbWFw
QXR0cmlidXRlVG9DU1NQcm9wZXJ0eShwcm9wZXJ0eU5hbWVUb0lkTWFwLCB0ZXh0X3JlbmRlcmlu
Z0F0dHIpOwotICAgICAgICBtYXBBdHRyaWJ1dGVUb0NTU1Byb3BlcnR5KHByb3BlcnR5TmFtZVRv
SWRNYXAsIHRyYW5zZm9ybV9vcmlnaW5BdHRyKTsKLSAgICAgICAgbWFwQXR0cmlidXRlVG9DU1NQ
cm9wZXJ0eShwcm9wZXJ0eU5hbWVUb0lkTWFwLCB1bmljb2RlX2JpZGlBdHRyKTsKLSAgICAgICAg
bWFwQXR0cmlidXRlVG9DU1NQcm9wZXJ0eShwcm9wZXJ0eU5hbWVUb0lkTWFwLCB2ZWN0b3JfZWZm
ZWN0QXR0cik7Ci0gICAgICAgIG1hcEF0dHJpYnV0ZVRvQ1NTUHJvcGVydHkocHJvcGVydHlOYW1l
VG9JZE1hcCwgdmlzaWJpbGl0eUF0dHIpOwotICAgICAgICBtYXBBdHRyaWJ1dGVUb0NTU1Byb3Bl
cnR5KHByb3BlcnR5TmFtZVRvSWRNYXAsIHdvcmRfc3BhY2luZ0F0dHIpOwotICAgICAgICBtYXBB
dHRyaWJ1dGVUb0NTU1Byb3BlcnR5KHByb3BlcnR5TmFtZVRvSWRNYXAsIHdyaXRpbmdfbW9kZUF0
dHIpOwotICAgIH0KKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8SGFzaE1hcDxBdG9taWNTdHJp
bmdJbXBsKiwgQ1NTUHJvcGVydHlJRD4+IHByb3BlcnRpZXM7CisgICAgaWYgKHByb3BlcnRpZXMu
Z2V0KCkuaXNFbXB0eSgpKQorICAgICAgICBwb3B1bGF0ZUF0dHJpYnV0ZU5hbWVUb0NTU1Byb3Bl
cnR5SURNYXAocHJvcGVydGllcy5nZXQoKSk7CiAKLSAgICByZXR1cm4gcHJvcGVydHlOYW1lVG9J
ZE1hcC0+Z2V0KGF0dHJOYW1lLmxvY2FsTmFtZSgpLmltcGwoKSk7CisgICAgcmV0dXJuIHByb3Bl
cnRpZXMuZ2V0KCkuZ2V0KGF0dHJOYW1lLmxvY2FsTmFtZSgpLmltcGwoKSk7CiB9CiAKLWJvb2wg
U1ZHRWxlbWVudDo6aXNBbmltYXRhYmxlQ1NTUHJvcGVydHkoY29uc3QgUXVhbGlmaWVkTmFtZSYg
YXR0ck5hbWUpCitib29sIFNWR0VsZW1lbnQ6OmlzQW5pbWF0YWJsZUNTU1Byb3BlcnR5KGNvbnN0
IFF1YWxpZmllZE5hbWUmIGF0dHJpYnV0ZU5hbWUpCiB7Ci0gICAgcmV0dXJuIGNzc1Byb3BlcnR5
VG9UeXBlTWFwKCkuY29udGFpbnMoYXR0ck5hbWUpOworICAgIHJldHVybiBhdHRyaWJ1dGVOYW1l
VG9BbmltYXRlZFByb3BlcnR5VHlwZU1hcCgpLmNvbnRhaW5zKGF0dHJpYnV0ZU5hbWUuaW1wbCgp
KTsKIH0KIAogYm9vbCBTVkdFbGVtZW50Ojppc1ByZXNlbnRhdGlvbkF0dHJpYnV0ZShjb25zdCBR
dWFsaWZpZWROYW1lJiBuYW1lKSBjb25zdAo=
</data>
<flag name="review"
          id="234055"
          type_id="1"
          status="+"
          setter="kling"
    />
          </attachment>
      

    </bug>

</bugzilla>