<?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>131235</bug_id>
          
          <creation_ts>2014-04-04 11:31:46 -0700</creation_ts>
          <short_desc>Keep track of filtered active attribute/uniform indices per shader program</short_desc>
          <delta_ts>2014-04-04 15:10:02 -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>WebGL</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</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="Roger Fong">roger_fong</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>bfulgham</cc>
    
    <cc>commit-queue</cc>
    
    <cc>dino</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>kondapallykalyan</cc>
    
    <cc>noam</cc>
    
    <cc>roger_fong</cc>
    
    <cc>tonikitoo</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>997649</commentid>
    <comment_count>0</comment_count>
    <who name="Roger Fong">roger_fong</who>
    <bug_when>2014-04-04 11:31:46 -0700</bug_when>
    <thetext>There are a few important methods to be considered here.

getUniformLocation
getActiveAttrib
getActiveUniform
getProgramParameter (where you query the number of active uniforms or attributes)

These methods should only take into consideration the list of filtered attributes and uniforms per shader program.

The logic to filter these attributes and uniforms exists, but we need to move it to the right place.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>997650</commentid>
    <comment_count>1</comment_count>
    <who name="Roger Fong">roger_fong</who>
    <bug_when>2014-04-04 11:35:52 -0700</bug_when>
    <thetext>&lt;rdar://problem/16371751&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>997662</commentid>
    <comment_count>2</comment_count>
      <attachid>228613</attachid>
    <who name="Roger Fong">roger_fong</who>
    <bug_when>2014-04-04 12:13:43 -0700</bug_when>
    <thetext>Created attachment 228613
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>997671</commentid>
    <comment_count>3</comment_count>
      <attachid>228613</attachid>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2014-04-04 13:18:27 -0700</bug_when>
    <thetext>Comment on attachment 228613
patch

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

Looks good. I think it could be more efficient if we could avoid the double &apos;find&apos; operation in cases where it is found the first time.

&gt; Source/WebCore/platform/graphics/opengl/GraphicsContext3DOpenGLCommon.cpp:726
&gt; +    const auto&amp; result = m_shaderProgramSymbolCountMap.find(program);

Aren&apos;t we performing the &apos;find&apos; twice every time? Maybe this could precede the test for end, and only do the lookup once.

&gt; Source/WebCore/platform/graphics/opengl/GraphicsContext3DOpenGLCommon.cpp:772
&gt; +    const auto&amp; result = m_shaderProgramSymbolCountMap.find(program);

Ditto regarding double-lookup.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>997684</commentid>
    <comment_count>4</comment_count>
    <who name="Roger Fong">roger_fong</who>
    <bug_when>2014-04-04 14:31:08 -0700</bug_when>
    <thetext>*** Bug 130477 has been marked as a duplicate of this bug. ***</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>997687</commentid>
    <comment_count>5</comment_count>
      <attachid>228617</attachid>
    <who name="Roger Fong">roger_fong</who>
    <bug_when>2014-04-04 14:45:41 -0700</bug_when>
    <thetext>Created attachment 228617
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>997693</commentid>
    <comment_count>6</comment_count>
    <who name="Roger Fong">roger_fong</who>
    <bug_when>2014-04-04 15:10:02 -0700</bug_when>
    <thetext>http://trac.webkit.org/changeset/166803</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>228613</attachid>
            <date>2014-04-04 12:13:43 -0700</date>
            <delta_ts>2014-04-04 14:45:41 -0700</delta_ts>
            <desc>patch</desc>
            <filename>patch.patch</filename>
            <type>text/plain</type>
            <size>9164</size>
            <attacher name="Roger Fong">roger_fong</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDE2Njc5OCkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDI3IEBACisyMDE0LTA0LTA0ICBSb2dlciBG
b25nICA8cm9nZXJfZm9uZ0BhcHBsZS5jb20+CisKKyAgICAgICAgS2VlcCB0cmFjayBvZiBmaWx0
ZXJlZCBhY3RpdmUgYXR0cmlidXRlL3VuaWZvcm0gaW5kaWNlcyBwZXIgc2hhZGVyIHByb2dyYW0u
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMzEyMzUu
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGVzdHM6
IENvdmVyZWQgYnkgZXhpc3RpbmcgS2hyb25vcyBDb25mb3JtYW5jZSB0ZXN0cy4gCisgICAgICAg
IFdpbGwgY3JlYXRlIGEgdGVzdCB0byB1c2UgbXVsdGlwbGUgc2hhZGVyIHByb2dyYW1zIGluIGEg
Zm9sbG93LXVwIHBhdGNoLgorCisgICAgICAgICogaHRtbC9jYW52YXMvV2ViR0xQcm9ncmFtLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMUHJvZ3JhbTo6Y2FjaGVBY3RpdmVBdHRyaWJMb2Nh
dGlvbnMpOiBVc2UgZ2V0QWN0aXZlQXR0cmliSW1wbC4gV2UgZG8gbm90IG5lZWQgdG8gdXNlIHRo
ZSBmaWx0ZXJlZCBsaXN0IG9mIGF0dHJpYnV0ZXMgaGVyZS4KKyAgICAgICAgKiBodG1sL2NhbnZh
cy9XZWJHTFJlbmRlcmluZ0NvbnRleHQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xSZW5k
ZXJpbmdDb250ZXh0OjpnZXRVbmlmb3JtTG9jYXRpb24pOiBVc2UgZmlsdGVyZWQgbGlzdCBvZiB1
bmlmb3JtcyBmb3IgdW5pZm9ybSBjb3VudC4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9H
cmFwaGljc0NvbnRleHQzRC5oOiBDcmVhdGUgYSBtYXAgb2Ygc2hhZGVyIHByb2dyYW1zIHRvIEFj
dGl2ZVNoYWRlclN5bWJvbENvdW50cy4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9vcGVu
Z2wvR3JhcGhpY3NDb250ZXh0M0RPcGVuR0xDb21tb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6
R3JhcGhpY3NDb250ZXh0M0Q6OmF0dGFjaFNoYWRlcik6IAorICAgICAgICBXaGVuIGF0dGFjaGlu
ZyBvciBkZXRhY2hpbmcgYSBzaGFkZXIgdGhlIHNoYWRlciBwcm9ncmFtJ3MgYWN0aXZlIHN5bWJv
bHMgbGlzdCB3aWxsIGNoYW5nZS4gQ2xlYXIgaXQgc28gdGhhdCBpdCB3aWxsIGJlIHVwZGF0ZWQg
bGF0ZXIuCisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRDo6ZGV0YWNoU2hhZGVy
KTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRDo6Y29tcGlsZVNo
YWRlcik6IE5vIG5lZWQgdG8gY2xlYXIgc3ltYm9sIGNvdW50cyBoZXJlLgorICAgICAgICAoV2Vi
Q29yZTo6R3JhcGhpY3NDb250ZXh0M0Q6OmdldEFjdGl2ZUF0dHJpYik6IGdldEFjdGl2ZUF0dHJp
YiBzaG91bGQgb25seSBiZSBhYmxlIHRvIHF1ZXJ5IGZvciBhdHRyaWJ1dGVzIGluIHRoZSBmaWx0
ZXJlZCBsaXN0LgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0Q6OmdldEFjdGl2
ZVVuaWZvcm0pOiBnZXRBY3RpdmVVbmlmb3JtIHNob3VsZCBvbmx5IGJlIGFibGUgdG8gcXVlcnkg
Zm9yIHVuaWZvcm1zIGluIHRoZSBmaWx0ZXJlZCBsaXN0LgorICAgICAgICAoV2ViQ29yZTo6R3Jh
cGhpY3NDb250ZXh0M0Q6OmdldE5vbkJ1aWx0SW5BY3RpdmVTeW1ib2xDb3VudCk6IFJldHVybiB0
aGUgZmlsdGVyZWQgc3ltYm9sIGNvdW50IGZvciBhIHNoYWRlciBwcm9ncmFtLgorCiAyMDE0LTA0
LTA0ICBCZW0gSm9uZXMtQmV5ICA8YmpvbmVzYmVAYWRvYmUuY29tPgogCiAgICAgICAgIFVzZSBt
b3JlIGNvbnN0IHJlZnMgaW4gU2hhcGVPdXRzaWRlSW5mbyBhbmQgc29tZSBtaXNjIGNsZWFudXAK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMUHJvZ3JhbS5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xQcm9ncmFtLmNwcAkocmV2
aXNpb24gMTY2Nzk4KQorKysgU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xQcm9ncmFt
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTY5LDcgKzE2OSw3IEBAIHZvaWQgV2ViR0xQcm9ncmFt
OjpjYWNoZUFjdGl2ZUF0dHJpYkxvY2EKICAgICBtX2FjdGl2ZUF0dHJpYkxvY2F0aW9ucy5yZXNp
emUoc3RhdGljX2Nhc3Q8c2l6ZV90PihudW1BdHRyaWJzKSk7CiAgICAgZm9yIChpbnQgaSA9IDA7
IGkgPCBudW1BdHRyaWJzOyArK2kpIHsKICAgICAgICAgQWN0aXZlSW5mbyBpbmZvOwotICAgICAg
ICBjb250ZXh0M2QtPmdldEFjdGl2ZUF0dHJpYihvYmplY3QoKSwgaSwgaW5mbyk7CisgICAgICAg
IGNvbnRleHQzZC0+Z2V0QWN0aXZlQXR0cmliSW1wbChvYmplY3QoKSwgaSwgaW5mbyk7CiAgICAg
ICAgIG1fYWN0aXZlQXR0cmliTG9jYXRpb25zW2ldID0gY29udGV4dDNkLT5nZXRBdHRyaWJMb2Nh
dGlvbihvYmplY3QoKSwgaW5mby5uYW1lKTsKICAgICB9CiB9CkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9odG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHQuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4dC5jcHAJKHJldmlz
aW9uIDE2Njc5OCkKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5n
Q29udGV4dC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMyMTIsNyArMzIxMiw3IEBAIFBhc3NSZWZQ
dHI8V2ViR0xVbmlmb3JtTG9jYXRpb24+IFdlYkdMUmUKICAgICAgICAgcmV0dXJuIG51bGxwdHI7
CiAKICAgICBHQzNEaW50IGFjdGl2ZVVuaWZvcm1zID0gMDsKLSAgICBtX2NvbnRleHQtPmdldFBy
b2dyYW1pdihvYmplY3RPclplcm8ocHJvZ3JhbSksIEdyYXBoaWNzQ29udGV4dDNEOjpBQ1RJVkVf
VU5JRk9STVMsICZhY3RpdmVVbmlmb3Jtcyk7CisgICAgbV9jb250ZXh0LT5nZXROb25CdWlsdElu
QWN0aXZlU3ltYm9sQ291bnQob2JqZWN0T3JaZXJvKHByb2dyYW0pLCBHcmFwaGljc0NvbnRleHQz
RDo6QUNUSVZFX1VOSUZPUk1TLCAmYWN0aXZlVW5pZm9ybXMpOwogICAgIGZvciAoR0MzRGludCBp
ID0gMDsgaSA8IGFjdGl2ZVVuaWZvcm1zOyBpKyspIHsKICAgICAgICAgQWN0aXZlSW5mbyBpbmZv
OwogICAgICAgICBpZiAoIW1fY29udGV4dC0+Z2V0QWN0aXZlVW5pZm9ybShvYmplY3RPclplcm8o
cHJvZ3JhbSksIGksIGluZm8pKQpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvR3JhcGhpY3NDb250ZXh0M0QuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQzRC5oCShyZXZpc2lvbiAxNjY3OTgpCisrKyBT
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQzRC5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xMDg1LDggKzEwODUsOSBAQCBwcml2YXRlOgogICAgICAgICAgICAgcmV0
dXJuIGZpbHRlcmVkVG9BY3R1YWxVbmlmb3JtSW5kZXhNYXAuc2l6ZSgpOwogICAgICAgICB9CiAg
ICAgfTsKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8QWN0aXZlU2hhZGVyU3ltYm9sQ291bnRzPiBtX3No
YWRlclN5bWJvbENvdW50OwotCisgICAgdHlwZWRlZiBIYXNoTWFwPFBsYXRmb3JtM0RPYmplY3Qs
IEFjdGl2ZVNoYWRlclN5bWJvbENvdW50cz4gU2hhZGVyUHJvZ3JhbVN5bWJvbENvdW50TWFwOwor
ICAgIFNoYWRlclByb2dyYW1TeW1ib2xDb3VudE1hcCBtX3NoYWRlclByb2dyYW1TeW1ib2xDb3Vu
dE1hcDsKKyAgICAKICAgICBTdHJpbmcgbWFwcGVkU3ltYm9sTmFtZShQbGF0Zm9ybTNET2JqZWN0
IHByb2dyYW0sIEFOR0xFU2hhZGVyU3ltYm9sVHlwZSwgY29uc3QgU3RyaW5nJiBuYW1lKTsKICAg
ICBTdHJpbmcgbWFwcGVkU3ltYm9sTmFtZShQbGF0Zm9ybTNET2JqZWN0IHNoYWRlcnNbMl0sIHNp
emVfdCBjb3VudCwgY29uc3QgU3RyaW5nJiBuYW1lKTsKICAgICBTdHJpbmcgb3JpZ2luYWxTeW1i
b2xOYW1lKFBsYXRmb3JtM0RPYmplY3QgcHJvZ3JhbSwgQU5HTEVTaGFkZXJTeW1ib2xUeXBlLCBj
b25zdCBTdHJpbmcmIG5hbWUpOwpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dDNET3BlbkdMQ29tbW9uLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0
M0RPcGVuR0xDb21tb24uY3BwCShyZXZpc2lvbiAxNjY3OTgpCisrKyBTb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0M0RPcGVuR0xDb21tb24uY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0zNzQsNiArMzc0LDcgQEAgdm9pZCBHcmFwaGljc0NvbnRleHQz
RDo6YXR0YWNoU2hhZGVyKFBsYQogICAgIEFTU0VSVChwcm9ncmFtKTsKICAgICBBU1NFUlQoc2hh
ZGVyKTsKICAgICBtYWtlQ29udGV4dEN1cnJlbnQoKTsKKyAgICBtX3NoYWRlclByb2dyYW1TeW1i
b2xDb3VudE1hcC5yZW1vdmUocHJvZ3JhbSk7CiAgICAgOjpnbEF0dGFjaFNoYWRlcihwcm9ncmFt
LCBzaGFkZXIpOwogfQogCkBAIC01NjEsOCArNTYyLDYgQEAgdm9pZCBHcmFwaGljc0NvbnRleHQz
RDo6Y29tcGlsZVNoYWRlcihQbAogICAgICAgICBlbnRyeS5pc1ZhbGlkID0gZmFsc2U7CiAgICAg
ICAgIExPRyhXZWJHTCwgIkVycm9yOiBzaGFkZXIgdHJhbnNsYXRvciBwcm9kdWNlZCBhIHNoYWRl
ciB0aGF0IE9wZW5HTCB3b3VsZCBub3QgY29tcGlsZS4iKTsKICAgICB9Ci0KLSAgICBtX3NoYWRl
clN5bWJvbENvdW50ID0gbnVsbHB0cjsKIH0KIAogdm9pZCBHcmFwaGljc0NvbnRleHQzRDo6Y29w
eVRleEltYWdlMkQoR0MzRGVudW0gdGFyZ2V0LCBHQzNEaW50IGxldmVsLCBHQzNEZW51bSBpbnRl
cm5hbGZvcm1hdCwgR0MzRGludCB4LCBHQzNEaW50IHksIEdDM0RzaXplaSB3aWR0aCwgR0MzRHNp
emVpIGhlaWdodCwgR0MzRGludCBib3JkZXIpCkBAIC02MTIsNiArNjExLDcgQEAgdm9pZCBHcmFw
aGljc0NvbnRleHQzRDo6ZGV0YWNoU2hhZGVyKFBsYQogICAgIEFTU0VSVChwcm9ncmFtKTsKICAg
ICBBU1NFUlQoc2hhZGVyKTsKICAgICBtYWtlQ29udGV4dEN1cnJlbnQoKTsKKyAgICBtX3NoYWRl
clByb2dyYW1TeW1ib2xDb3VudE1hcC5yZW1vdmUocHJvZ3JhbSk7CiAgICAgOjpnbERldGFjaFNo
YWRlcihwcm9ncmFtLCBzaGFkZXIpOwogfQogCkBAIC03MTksOCArNzE5LDE0IEBAIGJvb2wgR3Jh
cGhpY3NDb250ZXh0M0Q6OmdldEFjdGl2ZUF0dHJpYkkKIAogYm9vbCBHcmFwaGljc0NvbnRleHQz
RDo6Z2V0QWN0aXZlQXR0cmliKFBsYXRmb3JtM0RPYmplY3QgcHJvZ3JhbSwgR0MzRHVpbnQgaW5k
ZXgsIEFjdGl2ZUluZm8mIGluZm8pCiB7Ci0gICAgQVNTRVJUKCFtX3NoYWRlclN5bWJvbENvdW50
IHx8IGluZGV4IDwgbV9zaGFkZXJTeW1ib2xDb3VudC0+ZmlsdGVyZWRUb0FjdHVhbEF0dHJpYnV0
ZUluZGV4TWFwLnNpemUoKSk7Ci0gICAgR0MzRHVpbnQgcmF3SW5kZXggPSAobV9zaGFkZXJTeW1i
b2xDb3VudCkgPyBtX3NoYWRlclN5bWJvbENvdW50LT5maWx0ZXJlZFRvQWN0dWFsQXR0cmlidXRl
SW5kZXhNYXBbaW5kZXhdIDogaW5kZXg7CisgICAgR0MzRGludCBzeW1ib2xDb3VudDsKKyAgICBp
ZiAobV9zaGFkZXJQcm9ncmFtU3ltYm9sQ291bnRNYXAuZmluZChwcm9ncmFtKSA9PSBtX3NoYWRl
clByb2dyYW1TeW1ib2xDb3VudE1hcC5lbmQoKSkKKyAgICAgICAgZ2V0Tm9uQnVpbHRJbkFjdGl2
ZVN5bWJvbENvdW50KHByb2dyYW0sIEdyYXBoaWNzQ29udGV4dDNEOjpBQ1RJVkVfQVRUUklCVVRF
UywgJnN5bWJvbENvdW50KTsKKyAgICAKKyAgICBjb25zdCBhdXRvJiByZXN1bHQgPSBtX3NoYWRl
clByb2dyYW1TeW1ib2xDb3VudE1hcC5maW5kKHByb2dyYW0pOworICAgIAorICAgIEFjdGl2ZVNo
YWRlclN5bWJvbENvdW50cyYgc3ltYm9sQ291bnRzID0gcmVzdWx0LT52YWx1ZTsKKyAgICBHQzNE
dWludCByYXdJbmRleCA9IChpbmRleCA8IHN5bWJvbENvdW50cy5maWx0ZXJlZFRvQWN0dWFsQXR0
cmlidXRlSW5kZXhNYXAuc2l6ZSgpKSA/IHN5bWJvbENvdW50cy5maWx0ZXJlZFRvQWN0dWFsQXR0
cmlidXRlSW5kZXhNYXBbaW5kZXhdIDogLTE7CiAKICAgICByZXR1cm4gZ2V0QWN0aXZlQXR0cmli
SW1wbChwcm9ncmFtLCByYXdJbmRleCwgaW5mbyk7CiB9CkBAIC03NTksOCArNzY1LDE0IEBAIGJv
b2wgR3JhcGhpY3NDb250ZXh0M0Q6OmdldEFjdGl2ZVVuaWZvcm0KIAogYm9vbCBHcmFwaGljc0Nv
bnRleHQzRDo6Z2V0QWN0aXZlVW5pZm9ybShQbGF0Zm9ybTNET2JqZWN0IHByb2dyYW0sIEdDM0R1
aW50IGluZGV4LCBBY3RpdmVJbmZvJiBpbmZvKQogewotICAgIEFTU0VSVCghbV9zaGFkZXJTeW1i
b2xDb3VudCB8fCBpbmRleCA8IG1fc2hhZGVyU3ltYm9sQ291bnQtPmZpbHRlcmVkVG9BY3R1YWxV
bmlmb3JtSW5kZXhNYXAuc2l6ZSgpKTsKLSAgICBHQzNEdWludCByYXdJbmRleCA9IChtX3NoYWRl
clN5bWJvbENvdW50KSA/IG1fc2hhZGVyU3ltYm9sQ291bnQtPmZpbHRlcmVkVG9BY3R1YWxVbmlm
b3JtSW5kZXhNYXBbaW5kZXhdIDogaW5kZXg7CisgICAgR0MzRGludCBzeW1ib2xDb3VudDsKKyAg
ICBpZiAobV9zaGFkZXJQcm9ncmFtU3ltYm9sQ291bnRNYXAuZmluZChwcm9ncmFtKSA9PSBtX3No
YWRlclByb2dyYW1TeW1ib2xDb3VudE1hcC5lbmQoKSkKKyAgICAgICAgZ2V0Tm9uQnVpbHRJbkFj
dGl2ZVN5bWJvbENvdW50KHByb2dyYW0sIEdyYXBoaWNzQ29udGV4dDNEOjpBQ1RJVkVfVU5JRk9S
TVMsICZzeW1ib2xDb3VudCk7CisgICAgCisgICAgY29uc3QgYXV0byYgcmVzdWx0ID0gbV9zaGFk
ZXJQcm9ncmFtU3ltYm9sQ291bnRNYXAuZmluZChwcm9ncmFtKTsKKyAgICAKKyAgICBBY3RpdmVT
aGFkZXJTeW1ib2xDb3VudHMmIHN5bWJvbENvdW50cyA9IHJlc3VsdC0+dmFsdWU7CisgICAgR0Mz
RHVpbnQgcmF3SW5kZXggPSAoaW5kZXggPCBzeW1ib2xDb3VudHMuZmlsdGVyZWRUb0FjdHVhbFVu
aWZvcm1JbmRleE1hcC5zaXplKCkpID8gc3ltYm9sQ291bnRzLmZpbHRlcmVkVG9BY3R1YWxVbmlm
b3JtSW5kZXhNYXBbaW5kZXhdIDogLTE7CiAgICAgCiAgICAgcmV0dXJuIGdldEFjdGl2ZVVuaWZv
cm1JbXBsKHByb2dyYW0sIHJhd0luZGV4LCBpbmZvKTsKIH0KQEAgLTEyNjgsMTMgKzEyODAsMTQg
QEAgdm9pZCBHcmFwaGljc0NvbnRleHQzRDo6Z2V0Tm9uQnVpbHRJbkFjdAogICAgICAgICByZXR1
cm47CiAKICAgICBtYWtlQ29udGV4dEN1cnJlbnQoKTsKLQotICAgIGlmIChtX3NoYWRlclN5bWJv
bENvdW50KSB7Ci0gICAgICAgICp2YWx1ZSA9IG1fc2hhZGVyU3ltYm9sQ291bnQtPmNvdW50Rm9y
VHlwZShwbmFtZSk7CisgICAgY29uc3QgYXV0byYgcmVzdWx0ID0gbV9zaGFkZXJQcm9ncmFtU3lt
Ym9sQ291bnRNYXAuZmluZChwcm9ncmFtKTsKKyAgICBpZiAocmVzdWx0ICE9IG1fc2hhZGVyUHJv
Z3JhbVN5bWJvbENvdW50TWFwLmVuZCgpKSB7CisgICAgICAgICp2YWx1ZSA9IHJlc3VsdC0+dmFs
dWUuY291bnRGb3JUeXBlKHBuYW1lKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIG1f
c2hhZGVyU3ltYm9sQ291bnQgPSBzdGQ6Om1ha2VfdW5pcXVlPEFjdGl2ZVNoYWRlclN5bWJvbENv
dW50cz4oKTsKKyAgICBtX3NoYWRlclByb2dyYW1TeW1ib2xDb3VudE1hcC5zZXQocHJvZ3JhbSwg
QWN0aXZlU2hhZGVyU3ltYm9sQ291bnRzKCkpOworICAgIEFjdGl2ZVNoYWRlclN5bWJvbENvdW50
cyYgc3ltYm9sQ291bnRzID0gbV9zaGFkZXJQcm9ncmFtU3ltYm9sQ291bnRNYXAuZmluZChwcm9n
cmFtKS0+dmFsdWU7CiAKICAgICAvLyBSZXRyaWV2ZSB0aGUgYWN0aXZlIGF0dHJpYnV0ZXMsIGJ1
aWxkIGEgZmlsdGVyZWQgY291bnQsIGFuZCBhIG1hcHBpbmcgb2YKICAgICAvLyBvdXIgaW50ZXJu
YWwgYXR0cmlidXRlcyBpbmRleGVzIHRvIHRoZSByZWFsIHVuZmlsdGVyZWQgaW5kZXhlcyBpbnNp
ZGUgT3BlbkdMLgpAQCAtMTI4Niw3ICsxMjk5LDcgQEAgdm9pZCBHcmFwaGljc0NvbnRleHQzRDo6
Z2V0Tm9uQnVpbHRJbkFjdAogICAgICAgICBpZiAoaW5mby5uYW1lLnN0YXJ0c1dpdGgoImdsXyIp
KQogICAgICAgICAgICAgY29udGludWU7CiAKLSAgICAgICAgbV9zaGFkZXJTeW1ib2xDb3VudC0+
ZmlsdGVyZWRUb0FjdHVhbEF0dHJpYnV0ZUluZGV4TWFwLmFwcGVuZChpKTsKKyAgICAgICAgc3lt
Ym9sQ291bnRzLmZpbHRlcmVkVG9BY3R1YWxBdHRyaWJ1dGVJbmRleE1hcC5hcHBlbmQoaSk7CiAg
ICAgfQogICAgIAogICAgIC8vIERvIHRoZSBzYW1lIGZvciB1bmlmb3Jtcy4KQEAgLTEyOTgsMTAg
KzEzMTEsMTAgQEAgdm9pZCBHcmFwaGljc0NvbnRleHQzRDo6Z2V0Tm9uQnVpbHRJbkFjdAogICAg
ICAgICBpZiAoaW5mby5uYW1lLnN0YXJ0c1dpdGgoImdsXyIpKQogICAgICAgICAgICAgY29udGlu
dWU7CiAgICAgICAgIAotICAgICAgICBtX3NoYWRlclN5bWJvbENvdW50LT5maWx0ZXJlZFRvQWN0
dWFsVW5pZm9ybUluZGV4TWFwLmFwcGVuZChpKTsKKyAgICAgICAgc3ltYm9sQ291bnRzLmZpbHRl
cmVkVG9BY3R1YWxVbmlmb3JtSW5kZXhNYXAuYXBwZW5kKGkpOwogICAgIH0KICAgICAKLSAgICAq
dmFsdWUgPSBtX3NoYWRlclN5bWJvbENvdW50LT5jb3VudEZvclR5cGUocG5hbWUpOworICAgICp2
YWx1ZSA9IHN5bWJvbENvdW50cy5jb3VudEZvclR5cGUocG5hbWUpOwogfQogCiBTdHJpbmcgR3Jh
cGhpY3NDb250ZXh0M0Q6OmdldFVubWFuZ2xlZEluZm9Mb2coUGxhdGZvcm0zRE9iamVjdCBzaGFk
ZXJzWzJdLCBHQzNEc2l6ZWkgY291bnQsIGNvbnN0IFN0cmluZyYgbG9nKQo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>228617</attachid>
            <date>2014-04-04 14:45:41 -0700</date>
            <delta_ts>2014-04-04 15:01:54 -0700</delta_ts>
            <desc>patch</desc>
            <filename>patch.patch</filename>
            <type>text/plain</type>
            <size>9208</size>
            <attacher name="Roger Fong">roger_fong</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDE2Njc5OCkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDI3IEBACisyMDE0LTA0LTA0ICBSb2dlciBG
b25nICA8cm9nZXJfZm9uZ0BhcHBsZS5jb20+CisKKyAgICAgICAgS2VlcCB0cmFjayBvZiBmaWx0
ZXJlZCBhY3RpdmUgYXR0cmlidXRlL3VuaWZvcm0gaW5kaWNlcyBwZXIgc2hhZGVyIHByb2dyYW0u
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMzEyMzUu
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGVzdHM6
IENvdmVyZWQgYnkgZXhpc3RpbmcgS2hyb25vcyBDb25mb3JtYW5jZSB0ZXN0cy4gCisgICAgICAg
IFdpbGwgY3JlYXRlIGEgdGVzdCB0byB1c2UgbXVsdGlwbGUgc2hhZGVyIHByb2dyYW1zIGluIGEg
Zm9sbG93LXVwIHBhdGNoLgorCisgICAgICAgICogaHRtbC9jYW52YXMvV2ViR0xQcm9ncmFtLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMUHJvZ3JhbTo6Y2FjaGVBY3RpdmVBdHRyaWJMb2Nh
dGlvbnMpOiBVc2UgZ2V0QWN0aXZlQXR0cmliSW1wbC4gV2UgZG8gbm90IG5lZWQgdG8gdXNlIHRo
ZSBmaWx0ZXJlZCBsaXN0IG9mIGF0dHJpYnV0ZXMgaGVyZS4KKyAgICAgICAgKiBodG1sL2NhbnZh
cy9XZWJHTFJlbmRlcmluZ0NvbnRleHQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xSZW5k
ZXJpbmdDb250ZXh0OjpnZXRVbmlmb3JtTG9jYXRpb24pOiBVc2UgZmlsdGVyZWQgbGlzdCBvZiB1
bmlmb3JtcyBmb3IgdW5pZm9ybSBjb3VudC4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9H
cmFwaGljc0NvbnRleHQzRC5oOiBDcmVhdGUgYSBtYXAgb2Ygc2hhZGVyIHByb2dyYW1zIHRvIEFj
dGl2ZVNoYWRlclN5bWJvbENvdW50cy4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9vcGVu
Z2wvR3JhcGhpY3NDb250ZXh0M0RPcGVuR0xDb21tb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6
R3JhcGhpY3NDb250ZXh0M0Q6OmF0dGFjaFNoYWRlcik6IAorICAgICAgICBXaGVuIGF0dGFjaGlu
ZyBvciBkZXRhY2hpbmcgYSBzaGFkZXIgdGhlIHNoYWRlciBwcm9ncmFtJ3MgYWN0aXZlIHN5bWJv
bHMgbGlzdCB3aWxsIGNoYW5nZS4gQ2xlYXIgaXQgc28gdGhhdCBpdCB3aWxsIGJlIHVwZGF0ZWQg
bGF0ZXIuCisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRDo6ZGV0YWNoU2hhZGVy
KTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRDo6Y29tcGlsZVNo
YWRlcik6IE5vIG5lZWQgdG8gY2xlYXIgc3ltYm9sIGNvdW50cyBoZXJlLgorICAgICAgICAoV2Vi
Q29yZTo6R3JhcGhpY3NDb250ZXh0M0Q6OmdldEFjdGl2ZUF0dHJpYik6IGdldEFjdGl2ZUF0dHJp
YiBzaG91bGQgb25seSBiZSBhYmxlIHRvIHF1ZXJ5IGZvciBhdHRyaWJ1dGVzIGluIHRoZSBmaWx0
ZXJlZCBsaXN0LgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0Q6OmdldEFjdGl2
ZVVuaWZvcm0pOiBnZXRBY3RpdmVVbmlmb3JtIHNob3VsZCBvbmx5IGJlIGFibGUgdG8gcXVlcnkg
Zm9yIHVuaWZvcm1zIGluIHRoZSBmaWx0ZXJlZCBsaXN0LgorICAgICAgICAoV2ViQ29yZTo6R3Jh
cGhpY3NDb250ZXh0M0Q6OmdldE5vbkJ1aWx0SW5BY3RpdmVTeW1ib2xDb3VudCk6IFJldHVybiB0
aGUgZmlsdGVyZWQgc3ltYm9sIGNvdW50IGZvciBhIHNoYWRlciBwcm9ncmFtLgorCiAyMDE0LTA0
LTA0ICBCZW0gSm9uZXMtQmV5ICA8YmpvbmVzYmVAYWRvYmUuY29tPgogCiAgICAgICAgIFVzZSBt
b3JlIGNvbnN0IHJlZnMgaW4gU2hhcGVPdXRzaWRlSW5mbyBhbmQgc29tZSBtaXNjIGNsZWFudXAK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMUHJvZ3JhbS5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xQcm9ncmFtLmNwcAkocmV2
aXNpb24gMTY2Nzk4KQorKysgU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xQcm9ncmFt
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTY5LDcgKzE2OSw3IEBAIHZvaWQgV2ViR0xQcm9ncmFt
OjpjYWNoZUFjdGl2ZUF0dHJpYkxvY2EKICAgICBtX2FjdGl2ZUF0dHJpYkxvY2F0aW9ucy5yZXNp
emUoc3RhdGljX2Nhc3Q8c2l6ZV90PihudW1BdHRyaWJzKSk7CiAgICAgZm9yIChpbnQgaSA9IDA7
IGkgPCBudW1BdHRyaWJzOyArK2kpIHsKICAgICAgICAgQWN0aXZlSW5mbyBpbmZvOwotICAgICAg
ICBjb250ZXh0M2QtPmdldEFjdGl2ZUF0dHJpYihvYmplY3QoKSwgaSwgaW5mbyk7CisgICAgICAg
IGNvbnRleHQzZC0+Z2V0QWN0aXZlQXR0cmliSW1wbChvYmplY3QoKSwgaSwgaW5mbyk7CiAgICAg
ICAgIG1fYWN0aXZlQXR0cmliTG9jYXRpb25zW2ldID0gY29udGV4dDNkLT5nZXRBdHRyaWJMb2Nh
dGlvbihvYmplY3QoKSwgaW5mby5uYW1lKTsKICAgICB9CiB9CkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9odG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHQuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4dC5jcHAJKHJldmlz
aW9uIDE2Njc5OCkKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5n
Q29udGV4dC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMyMTIsNyArMzIxMiw3IEBAIFBhc3NSZWZQ
dHI8V2ViR0xVbmlmb3JtTG9jYXRpb24+IFdlYkdMUmUKICAgICAgICAgcmV0dXJuIG51bGxwdHI7
CiAKICAgICBHQzNEaW50IGFjdGl2ZVVuaWZvcm1zID0gMDsKLSAgICBtX2NvbnRleHQtPmdldFBy
b2dyYW1pdihvYmplY3RPclplcm8ocHJvZ3JhbSksIEdyYXBoaWNzQ29udGV4dDNEOjpBQ1RJVkVf
VU5JRk9STVMsICZhY3RpdmVVbmlmb3Jtcyk7CisgICAgbV9jb250ZXh0LT5nZXROb25CdWlsdElu
QWN0aXZlU3ltYm9sQ291bnQob2JqZWN0T3JaZXJvKHByb2dyYW0pLCBHcmFwaGljc0NvbnRleHQz
RDo6QUNUSVZFX1VOSUZPUk1TLCAmYWN0aXZlVW5pZm9ybXMpOwogICAgIGZvciAoR0MzRGludCBp
ID0gMDsgaSA8IGFjdGl2ZVVuaWZvcm1zOyBpKyspIHsKICAgICAgICAgQWN0aXZlSW5mbyBpbmZv
OwogICAgICAgICBpZiAoIW1fY29udGV4dC0+Z2V0QWN0aXZlVW5pZm9ybShvYmplY3RPclplcm8o
cHJvZ3JhbSksIGksIGluZm8pKQpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvR3JhcGhpY3NDb250ZXh0M0QuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQzRC5oCShyZXZpc2lvbiAxNjY3OTgpCisrKyBT
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQzRC5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xMDg1LDggKzEwODUsOSBAQCBwcml2YXRlOgogICAgICAgICAgICAgcmV0
dXJuIGZpbHRlcmVkVG9BY3R1YWxVbmlmb3JtSW5kZXhNYXAuc2l6ZSgpOwogICAgICAgICB9CiAg
ICAgfTsKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8QWN0aXZlU2hhZGVyU3ltYm9sQ291bnRzPiBtX3No
YWRlclN5bWJvbENvdW50OwotCisgICAgdHlwZWRlZiBIYXNoTWFwPFBsYXRmb3JtM0RPYmplY3Qs
IEFjdGl2ZVNoYWRlclN5bWJvbENvdW50cz4gU2hhZGVyUHJvZ3JhbVN5bWJvbENvdW50TWFwOwor
ICAgIFNoYWRlclByb2dyYW1TeW1ib2xDb3VudE1hcCBtX3NoYWRlclByb2dyYW1TeW1ib2xDb3Vu
dE1hcDsKKyAgICAKICAgICBTdHJpbmcgbWFwcGVkU3ltYm9sTmFtZShQbGF0Zm9ybTNET2JqZWN0
IHByb2dyYW0sIEFOR0xFU2hhZGVyU3ltYm9sVHlwZSwgY29uc3QgU3RyaW5nJiBuYW1lKTsKICAg
ICBTdHJpbmcgbWFwcGVkU3ltYm9sTmFtZShQbGF0Zm9ybTNET2JqZWN0IHNoYWRlcnNbMl0sIHNp
emVfdCBjb3VudCwgY29uc3QgU3RyaW5nJiBuYW1lKTsKICAgICBTdHJpbmcgb3JpZ2luYWxTeW1i
b2xOYW1lKFBsYXRmb3JtM0RPYmplY3QgcHJvZ3JhbSwgQU5HTEVTaGFkZXJTeW1ib2xUeXBlLCBj
b25zdCBTdHJpbmcmIG5hbWUpOwpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dDNET3BlbkdMQ29tbW9uLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0
M0RPcGVuR0xDb21tb24uY3BwCShyZXZpc2lvbiAxNjY3OTgpCisrKyBTb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0M0RPcGVuR0xDb21tb24uY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0zNzQsNiArMzc0LDcgQEAgdm9pZCBHcmFwaGljc0NvbnRleHQz
RDo6YXR0YWNoU2hhZGVyKFBsYQogICAgIEFTU0VSVChwcm9ncmFtKTsKICAgICBBU1NFUlQoc2hh
ZGVyKTsKICAgICBtYWtlQ29udGV4dEN1cnJlbnQoKTsKKyAgICBtX3NoYWRlclByb2dyYW1TeW1i
b2xDb3VudE1hcC5yZW1vdmUocHJvZ3JhbSk7CiAgICAgOjpnbEF0dGFjaFNoYWRlcihwcm9ncmFt
LCBzaGFkZXIpOwogfQogCkBAIC01NjEsOCArNTYyLDYgQEAgdm9pZCBHcmFwaGljc0NvbnRleHQz
RDo6Y29tcGlsZVNoYWRlcihQbAogICAgICAgICBlbnRyeS5pc1ZhbGlkID0gZmFsc2U7CiAgICAg
ICAgIExPRyhXZWJHTCwgIkVycm9yOiBzaGFkZXIgdHJhbnNsYXRvciBwcm9kdWNlZCBhIHNoYWRl
ciB0aGF0IE9wZW5HTCB3b3VsZCBub3QgY29tcGlsZS4iKTsKICAgICB9Ci0KLSAgICBtX3NoYWRl
clN5bWJvbENvdW50ID0gbnVsbHB0cjsKIH0KIAogdm9pZCBHcmFwaGljc0NvbnRleHQzRDo6Y29w
eVRleEltYWdlMkQoR0MzRGVudW0gdGFyZ2V0LCBHQzNEaW50IGxldmVsLCBHQzNEZW51bSBpbnRl
cm5hbGZvcm1hdCwgR0MzRGludCB4LCBHQzNEaW50IHksIEdDM0RzaXplaSB3aWR0aCwgR0MzRHNp
emVpIGhlaWdodCwgR0MzRGludCBib3JkZXIpCkBAIC02MTIsNiArNjExLDcgQEAgdm9pZCBHcmFw
aGljc0NvbnRleHQzRDo6ZGV0YWNoU2hhZGVyKFBsYQogICAgIEFTU0VSVChwcm9ncmFtKTsKICAg
ICBBU1NFUlQoc2hhZGVyKTsKICAgICBtYWtlQ29udGV4dEN1cnJlbnQoKTsKKyAgICBtX3NoYWRl
clByb2dyYW1TeW1ib2xDb3VudE1hcC5yZW1vdmUocHJvZ3JhbSk7CiAgICAgOjpnbERldGFjaFNo
YWRlcihwcm9ncmFtLCBzaGFkZXIpOwogfQogCkBAIC03MTksOCArNzE5LDE1IEBAIGJvb2wgR3Jh
cGhpY3NDb250ZXh0M0Q6OmdldEFjdGl2ZUF0dHJpYkkKIAogYm9vbCBHcmFwaGljc0NvbnRleHQz
RDo6Z2V0QWN0aXZlQXR0cmliKFBsYXRmb3JtM0RPYmplY3QgcHJvZ3JhbSwgR0MzRHVpbnQgaW5k
ZXgsIEFjdGl2ZUluZm8mIGluZm8pCiB7Ci0gICAgQVNTRVJUKCFtX3NoYWRlclN5bWJvbENvdW50
IHx8IGluZGV4IDwgbV9zaGFkZXJTeW1ib2xDb3VudC0+ZmlsdGVyZWRUb0FjdHVhbEF0dHJpYnV0
ZUluZGV4TWFwLnNpemUoKSk7Ci0gICAgR0MzRHVpbnQgcmF3SW5kZXggPSAobV9zaGFkZXJTeW1i
b2xDb3VudCkgPyBtX3NoYWRlclN5bWJvbENvdW50LT5maWx0ZXJlZFRvQWN0dWFsQXR0cmlidXRl
SW5kZXhNYXBbaW5kZXhdIDogaW5kZXg7CisgICAgR0MzRGludCBzeW1ib2xDb3VudDsKKyAgICBh
dXRvIHJlc3VsdCA9IG1fc2hhZGVyUHJvZ3JhbVN5bWJvbENvdW50TWFwLmZpbmQocHJvZ3JhbSk7
CisgICAgaWYgKHJlc3VsdCA9PSBtX3NoYWRlclByb2dyYW1TeW1ib2xDb3VudE1hcC5lbmQoKSkg
eworICAgICAgICBnZXROb25CdWlsdEluQWN0aXZlU3ltYm9sQ291bnQocHJvZ3JhbSwgR3JhcGhp
Y3NDb250ZXh0M0Q6OkFDVElWRV9BVFRSSUJVVEVTLCAmc3ltYm9sQ291bnQpOworICAgICAgICBy
ZXN1bHQgPSBtX3NoYWRlclByb2dyYW1TeW1ib2xDb3VudE1hcC5maW5kKHByb2dyYW0pOworICAg
IH0KKyAgICAKKyAgICBBY3RpdmVTaGFkZXJTeW1ib2xDb3VudHMmIHN5bWJvbENvdW50cyA9IHJl
c3VsdC0+dmFsdWU7CisgICAgR0MzRHVpbnQgcmF3SW5kZXggPSAoaW5kZXggPCBzeW1ib2xDb3Vu
dHMuZmlsdGVyZWRUb0FjdHVhbEF0dHJpYnV0ZUluZGV4TWFwLnNpemUoKSkgPyBzeW1ib2xDb3Vu
dHMuZmlsdGVyZWRUb0FjdHVhbEF0dHJpYnV0ZUluZGV4TWFwW2luZGV4XSA6IC0xOwogCiAgICAg
cmV0dXJuIGdldEFjdGl2ZUF0dHJpYkltcGwocHJvZ3JhbSwgcmF3SW5kZXgsIGluZm8pOwogfQpA
QCAtNzU5LDggKzc2NiwxNSBAQCBib29sIEdyYXBoaWNzQ29udGV4dDNEOjpnZXRBY3RpdmVVbmlm
b3JtCiAKIGJvb2wgR3JhcGhpY3NDb250ZXh0M0Q6OmdldEFjdGl2ZVVuaWZvcm0oUGxhdGZvcm0z
RE9iamVjdCBwcm9ncmFtLCBHQzNEdWludCBpbmRleCwgQWN0aXZlSW5mbyYgaW5mbykKIHsKLSAg
ICBBU1NFUlQoIW1fc2hhZGVyU3ltYm9sQ291bnQgfHwgaW5kZXggPCBtX3NoYWRlclN5bWJvbENv
dW50LT5maWx0ZXJlZFRvQWN0dWFsVW5pZm9ybUluZGV4TWFwLnNpemUoKSk7Ci0gICAgR0MzRHVp
bnQgcmF3SW5kZXggPSAobV9zaGFkZXJTeW1ib2xDb3VudCkgPyBtX3NoYWRlclN5bWJvbENvdW50
LT5maWx0ZXJlZFRvQWN0dWFsVW5pZm9ybUluZGV4TWFwW2luZGV4XSA6IGluZGV4OworICAgIEdD
M0RpbnQgc3ltYm9sQ291bnQ7CisgICAgYXV0byByZXN1bHQgPSBtX3NoYWRlclByb2dyYW1TeW1i
b2xDb3VudE1hcC5maW5kKHByb2dyYW0pOworICAgIGlmIChyZXN1bHQgPT0gbV9zaGFkZXJQcm9n
cmFtU3ltYm9sQ291bnRNYXAuZW5kKCkpIHsKKyAgICAgICAgZ2V0Tm9uQnVpbHRJbkFjdGl2ZVN5
bWJvbENvdW50KHByb2dyYW0sIEdyYXBoaWNzQ29udGV4dDNEOjpBQ1RJVkVfVU5JRk9STVMsICZz
eW1ib2xDb3VudCk7CisgICAgICAgIHJlc3VsdCA9IG1fc2hhZGVyUHJvZ3JhbVN5bWJvbENvdW50
TWFwLmZpbmQocHJvZ3JhbSk7CisgICAgfQorICAgIAorICAgIEFjdGl2ZVNoYWRlclN5bWJvbENv
dW50cyYgc3ltYm9sQ291bnRzID0gcmVzdWx0LT52YWx1ZTsKKyAgICBHQzNEdWludCByYXdJbmRl
eCA9IChpbmRleCA8IHN5bWJvbENvdW50cy5maWx0ZXJlZFRvQWN0dWFsVW5pZm9ybUluZGV4TWFw
LnNpemUoKSkgPyBzeW1ib2xDb3VudHMuZmlsdGVyZWRUb0FjdHVhbFVuaWZvcm1JbmRleE1hcFtp
bmRleF0gOiAtMTsKICAgICAKICAgICByZXR1cm4gZ2V0QWN0aXZlVW5pZm9ybUltcGwocHJvZ3Jh
bSwgcmF3SW5kZXgsIGluZm8pOwogfQpAQCAtMTI2OCwxMyArMTI4MiwxNCBAQCB2b2lkIEdyYXBo
aWNzQ29udGV4dDNEOjpnZXROb25CdWlsdEluQWN0CiAgICAgICAgIHJldHVybjsKIAogICAgIG1h
a2VDb250ZXh0Q3VycmVudCgpOwotCi0gICAgaWYgKG1fc2hhZGVyU3ltYm9sQ291bnQpIHsKLSAg
ICAgICAgKnZhbHVlID0gbV9zaGFkZXJTeW1ib2xDb3VudC0+Y291bnRGb3JUeXBlKHBuYW1lKTsK
KyAgICBjb25zdCBhdXRvJiByZXN1bHQgPSBtX3NoYWRlclByb2dyYW1TeW1ib2xDb3VudE1hcC5m
aW5kKHByb2dyYW0pOworICAgIGlmIChyZXN1bHQgIT0gbV9zaGFkZXJQcm9ncmFtU3ltYm9sQ291
bnRNYXAuZW5kKCkpIHsKKyAgICAgICAgKnZhbHVlID0gcmVzdWx0LT52YWx1ZS5jb3VudEZvclR5
cGUocG5hbWUpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgbV9zaGFkZXJTeW1ib2xD
b3VudCA9IHN0ZDo6bWFrZV91bmlxdWU8QWN0aXZlU2hhZGVyU3ltYm9sQ291bnRzPigpOworICAg
IG1fc2hhZGVyUHJvZ3JhbVN5bWJvbENvdW50TWFwLnNldChwcm9ncmFtLCBBY3RpdmVTaGFkZXJT
eW1ib2xDb3VudHMoKSk7CisgICAgQWN0aXZlU2hhZGVyU3ltYm9sQ291bnRzJiBzeW1ib2xDb3Vu
dHMgPSBtX3NoYWRlclByb2dyYW1TeW1ib2xDb3VudE1hcC5maW5kKHByb2dyYW0pLT52YWx1ZTsK
IAogICAgIC8vIFJldHJpZXZlIHRoZSBhY3RpdmUgYXR0cmlidXRlcywgYnVpbGQgYSBmaWx0ZXJl
ZCBjb3VudCwgYW5kIGEgbWFwcGluZyBvZgogICAgIC8vIG91ciBpbnRlcm5hbCBhdHRyaWJ1dGVz
IGluZGV4ZXMgdG8gdGhlIHJlYWwgdW5maWx0ZXJlZCBpbmRleGVzIGluc2lkZSBPcGVuR0wuCkBA
IC0xMjg2LDcgKzEzMDEsNyBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDNEOjpnZXROb25CdWlsdElu
QWN0CiAgICAgICAgIGlmIChpbmZvLm5hbWUuc3RhcnRzV2l0aCgiZ2xfIikpCiAgICAgICAgICAg
ICBjb250aW51ZTsKIAotICAgICAgICBtX3NoYWRlclN5bWJvbENvdW50LT5maWx0ZXJlZFRvQWN0
dWFsQXR0cmlidXRlSW5kZXhNYXAuYXBwZW5kKGkpOworICAgICAgICBzeW1ib2xDb3VudHMuZmls
dGVyZWRUb0FjdHVhbEF0dHJpYnV0ZUluZGV4TWFwLmFwcGVuZChpKTsKICAgICB9CiAgICAgCiAg
ICAgLy8gRG8gdGhlIHNhbWUgZm9yIHVuaWZvcm1zLgpAQCAtMTI5OCwxMCArMTMxMywxMCBAQCB2
b2lkIEdyYXBoaWNzQ29udGV4dDNEOjpnZXROb25CdWlsdEluQWN0CiAgICAgICAgIGlmIChpbmZv
Lm5hbWUuc3RhcnRzV2l0aCgiZ2xfIikpCiAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAg
Ci0gICAgICAgIG1fc2hhZGVyU3ltYm9sQ291bnQtPmZpbHRlcmVkVG9BY3R1YWxVbmlmb3JtSW5k
ZXhNYXAuYXBwZW5kKGkpOworICAgICAgICBzeW1ib2xDb3VudHMuZmlsdGVyZWRUb0FjdHVhbFVu
aWZvcm1JbmRleE1hcC5hcHBlbmQoaSk7CiAgICAgfQogICAgIAotICAgICp2YWx1ZSA9IG1fc2hh
ZGVyU3ltYm9sQ291bnQtPmNvdW50Rm9yVHlwZShwbmFtZSk7CisgICAgKnZhbHVlID0gc3ltYm9s
Q291bnRzLmNvdW50Rm9yVHlwZShwbmFtZSk7CiB9CiAKIFN0cmluZyBHcmFwaGljc0NvbnRleHQz
RDo6Z2V0VW5tYW5nbGVkSW5mb0xvZyhQbGF0Zm9ybTNET2JqZWN0IHNoYWRlcnNbMl0sIEdDM0Rz
aXplaSBjb3VudCwgY29uc3QgU3RyaW5nJiBsb2cpCg==
</data>
<flag name="review"
          id="252926"
          type_id="1"
          status="+"
          setter="dino"
    />
          </attachment>
      

    </bug>

</bugzilla>