<?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>48674</bug_id>
          
          <creation_ts>2010-10-29 14:15:56 -0700</creation_ts>
          <short_desc>blendFunc should generate INVALID_OPERATION if constant color and constant alpha are together as source and destination factors</short_desc>
          <delta_ts>2010-11-02 16:25:21 -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>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>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Zhenyao Mo">zmo</reporter>
          <assigned_to name="Zhenyao Mo">zmo</assigned_to>
          <cc>cmarrin</cc>
    
    <cc>enne</cc>
    
    <cc>kbr</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>302044</commentid>
    <comment_count>0</comment_count>
    <who name="Zhenyao Mo">zmo</who>
    <bug_when>2010-10-29 14:15:56 -0700</bug_when>
    <thetext>WebGL spec:

6.8 Blending With Constant Color

In the WebGL API, constant color and constant alpha cannot be used together as source and destination factors in the blend function. A call to blendFunc will generate an INVALID_OPERATION error if one of the two factors is set to CONSTANT_COLOR or ONE_MINUS_CONSTANT_COLOR and the other to CONSTANT_ALPHA or ONE_MINUS_CONSTANT_ALPHA. A call to blendFuncSeparate will generate an INVALID_OPERATION error if srcRGB is set to CONSTANT_COLOR or ONE_MINUS_CONSTANT_COLOR and dstRGB is set to CONSTANT_ALPHA or ONE_MINUS_CONSTANT_ALPHA or vice versa.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>303060</commentid>
    <comment_count>1</comment_count>
      <attachid>72595</attachid>
    <who name="Zhenyao Mo">zmo</who>
    <bug_when>2010-11-01 16:35:49 -0700</bug_when>
    <thetext>Created attachment 72595
patch

test synched with khronos and I commented out the still failing parts.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>303540</commentid>
    <comment_count>2</comment_count>
      <attachid>72595</attachid>
    <who name="Kenneth Russell">kbr</who>
    <bug_when>2010-11-02 12:09:30 -0700</bug_when>
    <thetext>Comment on attachment 72595
patch

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

&gt; WebCore/html/canvas/WebGLRenderingContext.cpp:372
&gt; +            &amp;&amp; (srcRGB == GraphicsContext3D::CONSTANT_ALPHA || srcRGB == GraphicsContext3D::ONE_MINUS_CONSTANT_ALPHA))) {

Please factor out this logic into a helper function or method and call it from both blendFunc and blendFuncSeparate.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>303755</commentid>
    <comment_count>3</comment_count>
      <attachid>72759</attachid>
    <who name="Zhenyao Mo">zmo</who>
    <bug_when>2010-11-02 16:05:43 -0700</bug_when>
    <thetext>Created attachment 72759
revised patch: responding to kbr&apos;s review</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>303763</commentid>
    <comment_count>4</comment_count>
      <attachid>72759</attachid>
    <who name="Kenneth Russell">kbr</who>
    <bug_when>2010-11-02 16:12:18 -0700</bug_when>
    <thetext>Comment on attachment 72759
revised patch: responding to kbr&apos;s review

Looks good.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>303771</commentid>
    <comment_count>5</comment_count>
    <who name="Zhenyao Mo">zmo</who>
    <bug_when>2010-11-02 16:25:21 -0700</bug_when>
    <thetext>Committed r71185: &lt;http://trac.webkit.org/changeset/71185&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>72595</attachid>
            <date>2010-11-01 16:35:49 -0700</date>
            <delta_ts>2010-11-02 16:05:43 -0700</delta_ts>
            <desc>patch</desc>
            <filename>blend.patch</filename>
            <type>text/plain</type>
            <size>12818</size>
            <attacher name="Zhenyao Mo">zmo</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA3MTA3MikKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMTYgQEAKKzIwMTAtMTEtMDEgIFpoZW55YW8gTW8gIDx6bW9AZ29vZ2xlLmNvbT4K
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBibGVuZEZ1
bmMgc2hvdWxkIGdlbmVyYXRlIElOVkFMSURfT1BFUkFUSU9OIGlmIGNvbnN0YW50IGNvbG9yIGFu
ZCBjb25zdGFudCBhbHBoYSBhcmUgdG9nZXRoZXIgYXMgc291cmNlIGFuZCBkZXN0aW5hdGlvbiBm
YWN0b3JzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD00
ODY3NAorCisgICAgICAgIFRlc3Q6IGZhc3QvY2FudmFzL3dlYmdsL3dlYmdsLXNwZWNpZmljLmh0
bWwKKworICAgICAgICAqIGh0bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4dC5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OmJsZW5kRnVuYyk6CisgICAg
ICAgIChXZWJDb3JlOjpXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OmJsZW5kRnVuY1NlcGFyYXRlKToK
KwogMjAxMC0xMS0wMSAgU2hlcmlmZiBCb3QgIDx3ZWJraXQucmV2aWV3LmJvdEBnbWFpbC5jb20+
CiAKICAgICAgICAgVW5yZXZpZXdlZCwgcm9sbGluZyBvdXQgcjcxMDY1LgpJbmRleDogV2ViQ29y
ZS9odG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHQuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdl
YkNvcmUvaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0LmNwcAkocmV2aXNpb24gNzEw
NjcpCisrKyBXZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4dC5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTM1MywxMiArMzUzLDI2IEBAIHZvaWQgV2ViR0xSZW5kZXJpbmdDb250
ZXh0OjpibGVuZEVxdWF0aW8KIAogdm9pZCBXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OmJsZW5kRnVu
Yyh1bnNpZ25lZCBsb25nIHNmYWN0b3IsIHVuc2lnbmVkIGxvbmcgZGZhY3RvcikKIHsKKyAgICBp
ZiAoKChzZmFjdG9yID09IEdyYXBoaWNzQ29udGV4dDNEOjpDT05TVEFOVF9DT0xPUiB8fCBzZmFj
dG9yID09IEdyYXBoaWNzQ29udGV4dDNEOjpPTkVfTUlOVVNfQ09OU1RBTlRfQ09MT1IpCisgICAg
ICAgICAmJiAoZGZhY3RvciA9PSBHcmFwaGljc0NvbnRleHQzRDo6Q09OU1RBTlRfQUxQSEEgfHwg
ZGZhY3RvciA9PSBHcmFwaGljc0NvbnRleHQzRDo6T05FX01JTlVTX0NPTlNUQU5UX0FMUEhBKSkK
KyAgICAgICAgfHwgKChkZmFjdG9yID09IEdyYXBoaWNzQ29udGV4dDNEOjpDT05TVEFOVF9DT0xP
UiB8fCBkZmFjdG9yID09IEdyYXBoaWNzQ29udGV4dDNEOjpPTkVfTUlOVVNfQ09OU1RBTlRfQ09M
T1IpCisgICAgICAgICAgICAmJiAoc2ZhY3RvciA9PSBHcmFwaGljc0NvbnRleHQzRDo6Q09OU1RB
TlRfQUxQSEEgfHwgc2ZhY3RvciA9PSBHcmFwaGljc0NvbnRleHQzRDo6T05FX01JTlVTX0NPTlNU
QU5UX0FMUEhBKSkpIHsKKyAgICAgICAgbV9jb250ZXh0LT5zeW50aGVzaXplR0xFcnJvcihHcmFw
aGljc0NvbnRleHQzRDo6SU5WQUxJRF9PUEVSQVRJT04pOworICAgICAgICByZXR1cm47CisgICAg
fQogICAgIG1fY29udGV4dC0+YmxlbmRGdW5jKHNmYWN0b3IsIGRmYWN0b3IpOwogICAgIGNsZWFu
dXBBZnRlckdyYXBoaWNzQ2FsbChmYWxzZSk7CiB9ICAgICAgIAogCiB2b2lkIFdlYkdMUmVuZGVy
aW5nQ29udGV4dDo6YmxlbmRGdW5jU2VwYXJhdGUodW5zaWduZWQgbG9uZyBzcmNSR0IsIHVuc2ln
bmVkIGxvbmcgZHN0UkdCLCB1bnNpZ25lZCBsb25nIHNyY0FscGhhLCB1bnNpZ25lZCBsb25nIGRz
dEFscGhhKQogeworICAgIGlmICgoKHNyY1JHQiA9PSBHcmFwaGljc0NvbnRleHQzRDo6Q09OU1RB
TlRfQ09MT1IgfHwgc3JjUkdCID09IEdyYXBoaWNzQ29udGV4dDNEOjpPTkVfTUlOVVNfQ09OU1RB
TlRfQ09MT1IpCisgICAgICAgICAmJiAoZHN0UkdCID09IEdyYXBoaWNzQ29udGV4dDNEOjpDT05T
VEFOVF9BTFBIQSB8fCBkc3RSR0IgPT0gR3JhcGhpY3NDb250ZXh0M0Q6Ok9ORV9NSU5VU19DT05T
VEFOVF9BTFBIQSkpCisgICAgICAgIHx8ICgoZHN0UkdCID09IEdyYXBoaWNzQ29udGV4dDNEOjpD
T05TVEFOVF9DT0xPUiB8fCBkc3RSR0IgPT0gR3JhcGhpY3NDb250ZXh0M0Q6Ok9ORV9NSU5VU19D
T05TVEFOVF9DT0xPUikKKyAgICAgICAgICAgICYmIChzcmNSR0IgPT0gR3JhcGhpY3NDb250ZXh0
M0Q6OkNPTlNUQU5UX0FMUEhBIHx8IHNyY1JHQiA9PSBHcmFwaGljc0NvbnRleHQzRDo6T05FX01J
TlVTX0NPTlNUQU5UX0FMUEhBKSkpIHsKKyAgICAgICAgbV9jb250ZXh0LT5zeW50aGVzaXplR0xF
cnJvcihHcmFwaGljc0NvbnRleHQzRDo6SU5WQUxJRF9PUEVSQVRJT04pOworICAgICAgICByZXR1
cm47CisgICAgfQogICAgIG1fY29udGV4dC0+YmxlbmRGdW5jU2VwYXJhdGUoc3JjUkdCLCBkc3RS
R0IsIHNyY0FscGhhLCBkc3RBbHBoYSk7CiAgICAgY2xlYW51cEFmdGVyR3JhcGhpY3NDYWxsKGZh
bHNlKTsKIH0KSW5kZXg6IExheW91dFRlc3RzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlv
dXRUZXN0cy9DaGFuZ2VMb2cJKHJldmlzaW9uIDcxMDcyKQorKysgTGF5b3V0VGVzdHMvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTMgQEAKKzIwMTAtMTEtMDEgIFpoZW55YW8g
TW8gIDx6bW9AZ29vZ2xlLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICBibGVuZEZ1bmMgc2hvdWxkIGdlbmVyYXRlIElOVkFMSURfT1BFUkFUSU9O
IGlmIGNvbnN0YW50IGNvbG9yIGFuZCBjb25zdGFudCBhbHBoYSBhcmUgdG9nZXRoZXIgYXMgc291
cmNlIGFuZCBkZXN0aW5hdGlvbiBmYWN0b3JzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD00ODY3NAorCisgICAgICAgICogZmFzdC9jYW52YXMvd2ViZ2wv
d2ViZ2wtc3BlY2lmaWMtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2NhbnZh
cy93ZWJnbC93ZWJnbC1zcGVjaWZpYy5odG1sOiBBZGRlZC4KKwogMjAxMC0xMS0wMSAgTWloYWkg
UGFycGFyaXRhICA8bWloYWlwQGNocm9taXVtLm9yZz4KIAogICAgICAgICBVbnJldmlld2VkOyB0
ZXN0IGV4cGVjdGF0aW9ucyB1cGRhdGUuCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2NhbnZhcy93
ZWJnbC93ZWJnbC1zcGVjaWZpYy1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVz
dHMvZmFzdC9jYW52YXMvd2ViZ2wvd2ViZ2wtc3BlY2lmaWMtZXhwZWN0ZWQudHh0CShyZXZpc2lv
biAwKQorKysgTGF5b3V0VGVzdHMvZmFzdC9jYW52YXMvd2ViZ2wvd2ViZ2wtc3BlY2lmaWMtZXhw
ZWN0ZWQudHh0CShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDI0IEBACitUZXN0cyB0aGUgYSBmZXcg
ZGlmZmVyZW5jZXMgYmV0d2VlbiBXZWJHTCBhbmQgR0xFUzIKKworT24gc3VjY2VzcywgeW91IHdp
bGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09N
UExFVEUiLgorCitQQVNTIGdldEVycm9yIHdhcyBleHBlY3RlZCB2YWx1ZTogSU5WQUxJRF9PUEVS
QVRJT04gOiBjb25zdGFudCBjb2xvciBhbmQgY29uc3RhbnQgYWxwaGEgY2Fubm90IGJlIHVzZWQg
dG9nZXRoZXIgYXMgc291cmNlIGFuZCBkZXN0aW5hdGlvbiBmYWN0b3JzIGluIHRoZSBibGVuZCBm
dW5jdGlvbgorUEFTUyBnZXRFcnJvciB3YXMgZXhwZWN0ZWQgdmFsdWU6IElOVkFMSURfT1BFUkFU
SU9OIDogY29uc3RhbnQgY29sb3IgYW5kIGNvbnN0YW50IGFscGhhIGNhbm5vdCBiZSB1c2VkIHRv
Z2V0aGVyIGFzIHNvdXJjZSBhbmQgZGVzdGluYXRpb24gZmFjdG9ycyBpbiB0aGUgYmxlbmQgZnVu
Y3Rpb24KK1BBU1MgZ2V0RXJyb3Igd2FzIGV4cGVjdGVkIHZhbHVlOiBJTlZBTElEX09QRVJBVElP
TiA6IGNvbnN0YW50IGNvbG9yIGFuZCBjb25zdGFudCBhbHBoYSBjYW5ub3QgYmUgdXNlZCB0b2dl
dGhlciBhcyBzb3VyY2UgYW5kIGRlc3RpbmF0aW9uIGZhY3RvcnMgaW4gdGhlIGJsZW5kIGZ1bmN0
aW9uCitQQVNTIGdldEVycm9yIHdhcyBleHBlY3RlZCB2YWx1ZTogSU5WQUxJRF9PUEVSQVRJT04g
OiBjb25zdGFudCBjb2xvciBhbmQgY29uc3RhbnQgYWxwaGEgY2Fubm90IGJlIHVzZWQgdG9nZXRo
ZXIgYXMgc291cmNlIGFuZCBkZXN0aW5hdGlvbiBmYWN0b3JzIGluIHRoZSBibGVuZCBmdW5jdGlv
bgorUEFTUyBnZXRFcnJvciB3YXMgZXhwZWN0ZWQgdmFsdWU6IElOVkFMSURfT1BFUkFUSU9OIDog
Y29uc3RhbnQgY29sb3IgYW5kIGNvbnN0YW50IGFscGhhIGNhbm5vdCBiZSB1c2VkIHRvZ2V0aGVy
IGFzIHNvdXJjZSBhbmQgZGVzdGluYXRpb24gZmFjdG9ycyBpbiB0aGUgYmxlbmQgZnVuY3Rpb24K
K1BBU1MgZ2V0RXJyb3Igd2FzIGV4cGVjdGVkIHZhbHVlOiBJTlZBTElEX09QRVJBVElPTiA6IGNv
bnN0YW50IGNvbG9yIGFuZCBjb25zdGFudCBhbHBoYSBjYW5ub3QgYmUgdXNlZCB0b2dldGhlciBh
cyBzb3VyY2UgYW5kIGRlc3RpbmF0aW9uIGZhY3RvcnMgaW4gdGhlIGJsZW5kIGZ1bmN0aW9uCitQ
QVNTIGdldEVycm9yIHdhcyBleHBlY3RlZCB2YWx1ZTogSU5WQUxJRF9PUEVSQVRJT04gOiBjb25z
dGFudCBjb2xvciBhbmQgY29uc3RhbnQgYWxwaGEgY2Fubm90IGJlIHVzZWQgdG9nZXRoZXIgYXMg
c291cmNlIGFuZCBkZXN0aW5hdGlvbiBmYWN0b3JzIGluIHRoZSBibGVuZCBmdW5jdGlvbgorUEFT
UyBnZXRFcnJvciB3YXMgZXhwZWN0ZWQgdmFsdWU6IElOVkFMSURfT1BFUkFUSU9OIDogY29uc3Rh
bnQgY29sb3IgYW5kIGNvbnN0YW50IGFscGhhIGNhbm5vdCBiZSB1c2VkIHRvZ2V0aGVyIGFzIHNv
dXJjZSBhbmQgZGVzdGluYXRpb24gZmFjdG9ycyBpbiB0aGUgYmxlbmQgZnVuY3Rpb24KK1BBU1Mg
Z2V0RXJyb3Igd2FzIGV4cGVjdGVkIHZhbHVlOiBJTlZBTElEX09QRVJBVElPTiA6IGNvbnN0YW50
IGNvbG9yIGFuZCBjb25zdGFudCBhbHBoYSBjYW5ub3QgYmUgdXNlZCB0b2dldGhlciBhcyBzb3Vy
Y2UgYW5kIGRlc3RpbmF0aW9uIGZhY3RvcnMgaW4gdGhlIGJsZW5kIGZ1bmN0aW9uCitQQVNTIGdl
dEVycm9yIHdhcyBleHBlY3RlZCB2YWx1ZTogSU5WQUxJRF9PUEVSQVRJT04gOiBjb25zdGFudCBj
b2xvciBhbmQgY29uc3RhbnQgYWxwaGEgY2Fubm90IGJlIHVzZWQgdG9nZXRoZXIgYXMgc291cmNl
IGFuZCBkZXN0aW5hdGlvbiBmYWN0b3JzIGluIHRoZSBibGVuZCBmdW5jdGlvbgorUEFTUyBnZXRF
cnJvciB3YXMgZXhwZWN0ZWQgdmFsdWU6IElOVkFMSURfT1BFUkFUSU9OIDogY29uc3RhbnQgY29s
b3IgYW5kIGNvbnN0YW50IGFscGhhIGNhbm5vdCBiZSB1c2VkIHRvZ2V0aGVyIGFzIHNvdXJjZSBh
bmQgZGVzdGluYXRpb24gZmFjdG9ycyBpbiB0aGUgYmxlbmQgZnVuY3Rpb24KK1BBU1MgZ2V0RXJy
b3Igd2FzIGV4cGVjdGVkIHZhbHVlOiBJTlZBTElEX09QRVJBVElPTiA6IGNvbnN0YW50IGNvbG9y
IGFuZCBjb25zdGFudCBhbHBoYSBjYW5ub3QgYmUgdXNlZCB0b2dldGhlciBhcyBzb3VyY2UgYW5k
IGRlc3RpbmF0aW9uIGZhY3RvcnMgaW4gdGhlIGJsZW5kIGZ1bmN0aW9uCitQQVNTIGdldEVycm9y
IHdhcyBleHBlY3RlZCB2YWx1ZTogSU5WQUxJRF9PUEVSQVRJT04gOiBjb25zdGFudCBjb2xvciBh
bmQgY29uc3RhbnQgYWxwaGEgY2Fubm90IGJlIHVzZWQgdG9nZXRoZXIgYXMgc291cmNlIGFuZCBk
ZXN0aW5hdGlvbiBmYWN0b3JzIGluIHRoZSBibGVuZCBmdW5jdGlvbgorUEFTUyBnZXRFcnJvciB3
YXMgZXhwZWN0ZWQgdmFsdWU6IElOVkFMSURfT1BFUkFUSU9OIDogY29uc3RhbnQgY29sb3IgYW5k
IGNvbnN0YW50IGFscGhhIGNhbm5vdCBiZSB1c2VkIHRvZ2V0aGVyIGFzIHNvdXJjZSBhbmQgZGVz
dGluYXRpb24gZmFjdG9ycyBpbiB0aGUgYmxlbmQgZnVuY3Rpb24KK1BBU1MgZ2V0RXJyb3Igd2Fz
IGV4cGVjdGVkIHZhbHVlOiBJTlZBTElEX09QRVJBVElPTiA6IGNvbnN0YW50IGNvbG9yIGFuZCBj
b25zdGFudCBhbHBoYSBjYW5ub3QgYmUgdXNlZCB0b2dldGhlciBhcyBzb3VyY2UgYW5kIGRlc3Rp
bmF0aW9uIGZhY3RvcnMgaW4gdGhlIGJsZW5kIGZ1bmN0aW9uCitQQVNTIGdldEVycm9yIHdhcyBl
eHBlY3RlZCB2YWx1ZTogSU5WQUxJRF9PUEVSQVRJT04gOiBjb25zdGFudCBjb2xvciBhbmQgY29u
c3RhbnQgYWxwaGEgY2Fubm90IGJlIHVzZWQgdG9nZXRoZXIgYXMgc291cmNlIGFuZCBkZXN0aW5h
dGlvbiBmYWN0b3JzIGluIHRoZSBibGVuZCBmdW5jdGlvbgorUEFTUyBzdWNjZXNzZnVsbHlQYXJz
ZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisKSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvY2Fu
dmFzL3dlYmdsL3dlYmdsLXNwZWNpZmljLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMv
ZmFzdC9jYW52YXMvd2ViZ2wvd2ViZ2wtc3BlY2lmaWMuaHRtbAkocmV2aXNpb24gMCkKKysrIExh
eW91dFRlc3RzL2Zhc3QvY2FudmFzL3dlYmdsL3dlYmdsLXNwZWNpZmljLmh0bWwJKHJldmlzaW9u
IDApCkBAIC0wLDAgKzEsMTA4IEBACis8IURPQ1RZUEUgSFRNTCBQVUJMSUMgIi0vL1czQy8vRFRE
IEhUTUwgNC4wMSBUcmFuc2l0aW9uYWwvL0VOIgorICAiaHR0cDovL3d3dy53My5vcmcvVFIvaHRt
bDQvbG9vc2UuZHRkIj4KKzxodG1sPgorPGhlYWQ+Cis8dGl0bGU+V2ViR0wgR0xFUzIgZGlmZmVy
ZW5jZSB0ZXN0LjwvdGl0bGU+Cis8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4uLy4uL2pz
L3Jlc291cmNlcy9qcy10ZXN0LXN0eWxlLmNzcyIvPgorPHNjcmlwdCBzcmM9Ii4uLy4uL2pzL3Jl
c291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0icmVzb3VyY2Vz
L3dlYmdsLXRlc3QuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9InJlc291cmNlcy93ZWJnbC10
ZXN0LXV0aWxzLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPGRpdiBpZD0iZGVzY3Jp
cHRpb24iPjwvZGl2PgorPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+CisKKzxzY3JpcHQ+Cit2YXIg
d3R1ID0gV2ViR0xUZXN0VXRpbHM7CitkZXNjcmlwdGlvbigiVGVzdHMgdGhlIGEgZmV3IGRpZmZl
cmVuY2VzIGJldHdlZW4gV2ViR0wgYW5kIEdMRVMyIik7CisKK3ZhciBnbCA9IHd0dS5jcmVhdGUz
RENvbnRleHQoKTsKKworZ2wuYmxlbmRGdW5jKGdsLkNPTlNUQU5UX0NPTE9SLCBnbC5DT05TVEFO
VF9BTFBIQSk7CitnbEVycm9yU2hvdWxkQmUoZ2wsIGdsLklOVkFMSURfT1BFUkFUSU9OLAorICAg
ICJjb25zdGFudCBjb2xvciBhbmQgY29uc3RhbnQgYWxwaGEgY2Fubm90IGJlIHVzZWQgdG9nZXRo
ZXIgYXMgc291cmNlIGFuZCBkZXN0aW5hdGlvbiBmYWN0b3JzIGluIHRoZSBibGVuZCBmdW5jdGlv
biIpOworZ2wuYmxlbmRGdW5jKGdsLk9ORV9NSU5VU19DT05TVEFOVF9DT0xPUiwgZ2wuQ09OU1RB
TlRfQUxQSEEpOworZ2xFcnJvclNob3VsZEJlKGdsLCBnbC5JTlZBTElEX09QRVJBVElPTiwKKyAg
ICAiY29uc3RhbnQgY29sb3IgYW5kIGNvbnN0YW50IGFscGhhIGNhbm5vdCBiZSB1c2VkIHRvZ2V0
aGVyIGFzIHNvdXJjZSBhbmQgZGVzdGluYXRpb24gZmFjdG9ycyBpbiB0aGUgYmxlbmQgZnVuY3Rp
b24iKTsKK2dsLmJsZW5kRnVuYyhnbC5DT05TVEFOVF9DT0xPUiwgZ2wuT05FX01JTlVTX0NPTlNU
QU5UX0FMUEhBKTsKK2dsRXJyb3JTaG91bGRCZShnbCwgZ2wuSU5WQUxJRF9PUEVSQVRJT04sCisg
ICAgImNvbnN0YW50IGNvbG9yIGFuZCBjb25zdGFudCBhbHBoYSBjYW5ub3QgYmUgdXNlZCB0b2dl
dGhlciBhcyBzb3VyY2UgYW5kIGRlc3RpbmF0aW9uIGZhY3RvcnMgaW4gdGhlIGJsZW5kIGZ1bmN0
aW9uIik7CitnbC5ibGVuZEZ1bmMoZ2wuT05FX01JTlVTX0NPTlNUQU5UX0NPTE9SLCBnbC5PTkVf
TUlOVVNfQ09OU1RBTlRfQUxQSEEpOworZ2xFcnJvclNob3VsZEJlKGdsLCBnbC5JTlZBTElEX09Q
RVJBVElPTiwKKyAgICAiY29uc3RhbnQgY29sb3IgYW5kIGNvbnN0YW50IGFscGhhIGNhbm5vdCBi
ZSB1c2VkIHRvZ2V0aGVyIGFzIHNvdXJjZSBhbmQgZGVzdGluYXRpb24gZmFjdG9ycyBpbiB0aGUg
YmxlbmQgZnVuY3Rpb24iKTsKK2dsLmJsZW5kRnVuYyhnbC5DT05TVEFOVF9BTFBIQSwgZ2wuQ09O
U1RBTlRfQ09MT1IpOworZ2xFcnJvclNob3VsZEJlKGdsLCBnbC5JTlZBTElEX09QRVJBVElPTiwK
KyAgICAiY29uc3RhbnQgY29sb3IgYW5kIGNvbnN0YW50IGFscGhhIGNhbm5vdCBiZSB1c2VkIHRv
Z2V0aGVyIGFzIHNvdXJjZSBhbmQgZGVzdGluYXRpb24gZmFjdG9ycyBpbiB0aGUgYmxlbmQgZnVu
Y3Rpb24iKTsKK2dsLmJsZW5kRnVuYyhnbC5DT05TVEFOVF9BTFBIQSwgZ2wuT05FX01JTlVTX0NP
TlNUQU5UX0NPTE9SKTsKK2dsRXJyb3JTaG91bGRCZShnbCwgZ2wuSU5WQUxJRF9PUEVSQVRJT04s
CisgICAgImNvbnN0YW50IGNvbG9yIGFuZCBjb25zdGFudCBhbHBoYSBjYW5ub3QgYmUgdXNlZCB0
b2dldGhlciBhcyBzb3VyY2UgYW5kIGRlc3RpbmF0aW9uIGZhY3RvcnMgaW4gdGhlIGJsZW5kIGZ1
bmN0aW9uIik7CitnbC5ibGVuZEZ1bmMoZ2wuT05FX01JTlVTX0NPTlNUQU5UX0FMUEhBLCBnbC5D
T05TVEFOVF9DT0xPUik7CitnbEVycm9yU2hvdWxkQmUoZ2wsIGdsLklOVkFMSURfT1BFUkFUSU9O
LAorICAgICJjb25zdGFudCBjb2xvciBhbmQgY29uc3RhbnQgYWxwaGEgY2Fubm90IGJlIHVzZWQg
dG9nZXRoZXIgYXMgc291cmNlIGFuZCBkZXN0aW5hdGlvbiBmYWN0b3JzIGluIHRoZSBibGVuZCBm
dW5jdGlvbiIpOworZ2wuYmxlbmRGdW5jKGdsLk9ORV9NSU5VU19DT05TVEFOVF9BTFBIQSwgZ2wu
T05FX01JTlVTX0NPTlNUQU5UX0NPTE9SKTsKK2dsRXJyb3JTaG91bGRCZShnbCwgZ2wuSU5WQUxJ
RF9PUEVSQVRJT04sCisgICAgImNvbnN0YW50IGNvbG9yIGFuZCBjb25zdGFudCBhbHBoYSBjYW5u
b3QgYmUgdXNlZCB0b2dldGhlciBhcyBzb3VyY2UgYW5kIGRlc3RpbmF0aW9uIGZhY3RvcnMgaW4g
dGhlIGJsZW5kIGZ1bmN0aW9uIik7CisKK2dsLmJsZW5kRnVuY1NlcGFyYXRlKGdsLkNPTlNUQU5U
X0NPTE9SLCBnbC5DT05TVEFOVF9BTFBIQSwgZ2wuT05FLCBnbC5aRVJPKTsKK2dsRXJyb3JTaG91
bGRCZShnbCwgZ2wuSU5WQUxJRF9PUEVSQVRJT04sCisgICAgImNvbnN0YW50IGNvbG9yIGFuZCBj
b25zdGFudCBhbHBoYSBjYW5ub3QgYmUgdXNlZCB0b2dldGhlciBhcyBzb3VyY2UgYW5kIGRlc3Rp
bmF0aW9uIGZhY3RvcnMgaW4gdGhlIGJsZW5kIGZ1bmN0aW9uIik7CitnbC5ibGVuZEZ1bmNTZXBh
cmF0ZShnbC5PTkVfTUlOVVNfQ09OU1RBTlRfQ09MT1IsIGdsLkNPTlNUQU5UX0FMUEhBLCBnbC5P
TkUsIGdsLlpFUk8pOworZ2xFcnJvclNob3VsZEJlKGdsLCBnbC5JTlZBTElEX09QRVJBVElPTiwK
KyAgICAiY29uc3RhbnQgY29sb3IgYW5kIGNvbnN0YW50IGFscGhhIGNhbm5vdCBiZSB1c2VkIHRv
Z2V0aGVyIGFzIHNvdXJjZSBhbmQgZGVzdGluYXRpb24gZmFjdG9ycyBpbiB0aGUgYmxlbmQgZnVu
Y3Rpb24iKTsKK2dsLmJsZW5kRnVuY1NlcGFyYXRlKGdsLkNPTlNUQU5UX0NPTE9SLCBnbC5PTkVf
TUlOVVNfQ09OU1RBTlRfQUxQSEEsIGdsLk9ORSwgZ2wuWkVSTyk7CitnbEVycm9yU2hvdWxkQmUo
Z2wsIGdsLklOVkFMSURfT1BFUkFUSU9OLAorICAgICJjb25zdGFudCBjb2xvciBhbmQgY29uc3Rh
bnQgYWxwaGEgY2Fubm90IGJlIHVzZWQgdG9nZXRoZXIgYXMgc291cmNlIGFuZCBkZXN0aW5hdGlv
biBmYWN0b3JzIGluIHRoZSBibGVuZCBmdW5jdGlvbiIpOworZ2wuYmxlbmRGdW5jU2VwYXJhdGUo
Z2wuT05FX01JTlVTX0NPTlNUQU5UX0NPTE9SLCBnbC5PTkVfTUlOVVNfQ09OU1RBTlRfQUxQSEEs
IGdsLk9ORSwgZ2wuWkVSTyk7CitnbEVycm9yU2hvdWxkQmUoZ2wsIGdsLklOVkFMSURfT1BFUkFU
SU9OLAorICAgICJjb25zdGFudCBjb2xvciBhbmQgY29uc3RhbnQgYWxwaGEgY2Fubm90IGJlIHVz
ZWQgdG9nZXRoZXIgYXMgc291cmNlIGFuZCBkZXN0aW5hdGlvbiBmYWN0b3JzIGluIHRoZSBibGVu
ZCBmdW5jdGlvbiIpOworZ2wuYmxlbmRGdW5jU2VwYXJhdGUoZ2wuQ09OU1RBTlRfQUxQSEEsIGds
LkNPTlNUQU5UX0NPTE9SLCBnbC5PTkUsIGdsLlpFUk8pOworZ2xFcnJvclNob3VsZEJlKGdsLCBn
bC5JTlZBTElEX09QRVJBVElPTiwKKyAgICAiY29uc3RhbnQgY29sb3IgYW5kIGNvbnN0YW50IGFs
cGhhIGNhbm5vdCBiZSB1c2VkIHRvZ2V0aGVyIGFzIHNvdXJjZSBhbmQgZGVzdGluYXRpb24gZmFj
dG9ycyBpbiB0aGUgYmxlbmQgZnVuY3Rpb24iKTsKK2dsLmJsZW5kRnVuY1NlcGFyYXRlKGdsLkNP
TlNUQU5UX0FMUEhBLCBnbC5PTkVfTUlOVVNfQ09OU1RBTlRfQ09MT1IsIGdsLk9ORSwgZ2wuWkVS
Tyk7CitnbEVycm9yU2hvdWxkQmUoZ2wsIGdsLklOVkFMSURfT1BFUkFUSU9OLAorICAgICJjb25z
dGFudCBjb2xvciBhbmQgY29uc3RhbnQgYWxwaGEgY2Fubm90IGJlIHVzZWQgdG9nZXRoZXIgYXMg
c291cmNlIGFuZCBkZXN0aW5hdGlvbiBmYWN0b3JzIGluIHRoZSBibGVuZCBmdW5jdGlvbiIpOwor
Z2wuYmxlbmRGdW5jU2VwYXJhdGUoZ2wuT05FX01JTlVTX0NPTlNUQU5UX0FMUEhBLCBnbC5DT05T
VEFOVF9DT0xPUiwgZ2wuT05FLCBnbC5aRVJPKTsKK2dsRXJyb3JTaG91bGRCZShnbCwgZ2wuSU5W
QUxJRF9PUEVSQVRJT04sCisgICAgImNvbnN0YW50IGNvbG9yIGFuZCBjb25zdGFudCBhbHBoYSBj
YW5ub3QgYmUgdXNlZCB0b2dldGhlciBhcyBzb3VyY2UgYW5kIGRlc3RpbmF0aW9uIGZhY3RvcnMg
aW4gdGhlIGJsZW5kIGZ1bmN0aW9uIik7CitnbC5ibGVuZEZ1bmNTZXBhcmF0ZShnbC5PTkVfTUlO
VVNfQ09OU1RBTlRfQUxQSEEsIGdsLk9ORV9NSU5VU19DT05TVEFOVF9DT0xPUiwgZ2wuT05FLCBn
bC5aRVJPKTsKK2dsRXJyb3JTaG91bGRCZShnbCwgZ2wuSU5WQUxJRF9PUEVSQVRJT04sCisgICAg
ImNvbnN0YW50IGNvbG9yIGFuZCBjb25zdGFudCBhbHBoYSBjYW5ub3QgYmUgdXNlZCB0b2dldGhl
ciBhcyBzb3VyY2UgYW5kIGRlc3RpbmF0aW9uIGZhY3RvcnMgaW4gdGhlIGJsZW5kIGZ1bmN0aW9u
Iik7CisKKy8qCitnbC5kZXB0aFJhbmdlKDIwLCAxMCk7CitnbEVycm9yU2hvdWxkQmUoZ2wsIGds
LklOVkFMSURfT1BFUkFUSU9OLAorICAgICJkZXB0aFJhbmdlIHNob3VsZCBnZW5lcmF0ZSBJTlZB
TElEX09QRVJBVElPTiBpZiB6TmVhciBpcyBncmVhdGVyIHRoYW4gekZhciIpOworCitnbC5zdGVu
Y2lsTWFzaygyNTUpOworZ2xFcnJvclNob3VsZEJlKGdsLCBnbC5OT19FUlJPUiwKKyAgICAic3Rl
bmNpbE1hc2sgc2hvdWxkIGdlbmVyYXRlIG5vIGVycm9yIik7CitnbC5zdGVuY2lsTWFza1NlcGFy
YXRlKGdsLkZST05ULCAxKTsKK2dsRXJyb3JTaG91bGRCZShnbCwgZ2wuSU5WQUxJRF9PUEVSQVRJ
T04sCisgICAgImEgZGlmZmVyZW50IG1hc2sgdmFsdWUgZm9yIGZyb250IGFuZCBiYWNrIGZhY2lu
ZyBpcyBpbGxlZ2FsIik7CitnbC5zdGVuY2lsTWFza1NlcGFyYXRlKGdsLkJBQ0ssIDEpOworZ2xF
cnJvclNob3VsZEJlKGdsLCBnbC5JTlZBTElEX09QRVJBVElPTiwKKyAgICAiYSBkaWZmZXJlbnQg
bWFzayB2YWx1ZSBmb3IgZnJvbnQgYW5kIGJhY2sgZmFjaW5nIGlzIGlsbGVnYWwiKTsKKworZ2wu
c3RlbmNpbEZ1bmMoZ2wuQUxXQVlTLCAwLCAyNTUpOworZ2xFcnJvclNob3VsZEJlKGdsLCBnbC5O
T19FUlJPUiwKKyAgICAic3RlbmNpbEZ1bmMgc2hvdWxkIGdlbmVyYXRlIG5vIGVycm9yIik7Citn
bC5zdGVuY2lsRnVuY1NlcGFyYXRlKGdsLkZST05ULCBnbC5BTFdBWVMsIDEsIDI1NSk7CitnbEVy
cm9yU2hvdWxkQmUoZ2wsIGdsLklOVkFMSURfT1BFUkFUSU9OLAorICAgICJhIGRpZmZlcmVudCBy
ZWZlcmVuY2UgdmFsdWUgZm9yIGZyb250IGFuZCBiYWNrIGZhY2luZyBpcyBpbGxlZ2FsIik7Citn
bC5zdGVuY2lsRnVuY1NlcGFyYXRlKGdsLkJBQ0ssIGdsLkFMV0FZUywgMSwgMjU1KTsKK2dsRXJy
b3JTaG91bGRCZShnbCwgZ2wuSU5WQUxJRF9PUEVSQVRJT04sCisgICAgImEgZGlmZmVyZW50IHJl
ZmVyZW5jZSB2YWx1ZSBmb3IgZnJvbnQgYW5kIGJhY2sgZmFjaW5nIGlzIGlsbGVnYWwiKTsKK2ds
LnN0ZW5jaWxGdW5jU2VwYXJhdGUoZ2wuRlJPTlQsIGdsLkFMV0FZUywgMCwgMSk7CitnbEVycm9y
U2hvdWxkQmUoZ2wsIGdsLklOVkFMSURfT1BFUkFUSU9OLAorICAgICJhIGRpZmZlcmVudCBtYXNr
IHZhbHVlIGZvciBmcm9udCBhbmQgYmFjayBmYWNpbmcgaXMgaWxsZWdhbCIpOworZ2wuc3RlbmNp
bEZ1bmNTZXBhcmF0ZShnbC5CQUNLLCBnbC5BTFdBWVMsIDAsIDEpOworZ2xFcnJvclNob3VsZEJl
KGdsLCBnbC5JTlZBTElEX09QRVJBVElPTiwKKyAgICAiYSBkaWZmZXJlbnQgbWFzayB2YWx1ZSBm
b3IgZnJvbnQgYW5kIGJhY2sgZmFjaW5nIGlzIGlsbGVnYWwiKTsKKyovCisKK3N1Y2Nlc3NmdWxs
eVBhcnNlZCA9IHRydWU7Cis8L3NjcmlwdD4KKworPHNjcmlwdCBzcmM9Ii4uLy4uL2pzL3Jlc291
cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgo=
</data>
<flag name="review"
          id="62876"
          type_id="1"
          status="-"
          setter="kbr"
    />
    <flag name="commit-queue"
          id="62877"
          type_id="3"
          status="-"
          setter="zmo"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>72759</attachid>
            <date>2010-11-02 16:05:43 -0700</date>
            <delta_ts>2010-11-02 16:12:17 -0700</delta_ts>
            <desc>revised patch: responding to kbr&apos;s review</desc>
            <filename>blend.patch</filename>
            <type>text/plain</type>
            <size>13413</size>
            <attacher name="Zhenyao Mo">zmo</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA3MTA3MikKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMTggQEAKKzIwMTAtMTEtMDEgIFpoZW55YW8gTW8gIDx6bW9AZ29vZ2xlLmNvbT4K
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBibGVuZEZ1
bmMgc2hvdWxkIGdlbmVyYXRlIElOVkFMSURfT1BFUkFUSU9OIGlmIGNvbnN0YW50IGNvbG9yIGFu
ZCBjb25zdGFudCBhbHBoYSBhcmUgdG9nZXRoZXIgYXMgc291cmNlIGFuZCBkZXN0aW5hdGlvbiBm
YWN0b3JzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD00
ODY3NAorCisgICAgICAgIFRlc3Q6IGZhc3QvY2FudmFzL3dlYmdsL3dlYmdsLXNwZWNpZmljLmh0
bWwKKworICAgICAgICAqIGh0bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4dC5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OmJsZW5kRnVuYyk6CisgICAg
ICAgIChXZWJDb3JlOjpXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OmJsZW5kRnVuY1NlcGFyYXRlKToK
KyAgICAgICAgKiBodG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHQuaDoKKyAgICAgICAg
KFdlYkNvcmU6OldlYkdMUmVuZGVyaW5nQ29udGV4dDo6dmFsaWRhdGVCbGVuZEZ1bmNGYWN0b3Jz
KTogSGVscGVyIGZ1bmN0aW9uIHRvIGRvIHRoZSBjaGVja2luZy4KKwogMjAxMC0xMS0wMSAgU2hl
cmlmZiBCb3QgIDx3ZWJraXQucmV2aWV3LmJvdEBnbWFpbC5jb20+CiAKICAgICAgICAgVW5yZXZp
ZXdlZCwgcm9sbGluZyBvdXQgcjcxMDY1LgpJbmRleDogV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJH
TFJlbmRlcmluZ0NvbnRleHQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvaHRtbC9jYW52YXMv
V2ViR0xSZW5kZXJpbmdDb250ZXh0LmNwcAkocmV2aXNpb24gNzEwNjcpCisrKyBXZWJDb3JlL2h0
bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4dC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM1
MywxMiArMzUzLDE2IEBAIHZvaWQgV2ViR0xSZW5kZXJpbmdDb250ZXh0OjpibGVuZEVxdWF0aW8K
IAogdm9pZCBXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OmJsZW5kRnVuYyh1bnNpZ25lZCBsb25nIHNm
YWN0b3IsIHVuc2lnbmVkIGxvbmcgZGZhY3RvcikKIHsKKyAgICBpZiAoIXZhbGlkYXRlQmxlbmRG
dW5jRmFjdG9ycyhzZmFjdG9yLCBkZmFjdG9yKSkKKyAgICAgICAgcmV0dXJuOwogICAgIG1fY29u
dGV4dC0+YmxlbmRGdW5jKHNmYWN0b3IsIGRmYWN0b3IpOwogICAgIGNsZWFudXBBZnRlckdyYXBo
aWNzQ2FsbChmYWxzZSk7CiB9ICAgICAgIAogCiB2b2lkIFdlYkdMUmVuZGVyaW5nQ29udGV4dDo6
YmxlbmRGdW5jU2VwYXJhdGUodW5zaWduZWQgbG9uZyBzcmNSR0IsIHVuc2lnbmVkIGxvbmcgZHN0
UkdCLCB1bnNpZ25lZCBsb25nIHNyY0FscGhhLCB1bnNpZ25lZCBsb25nIGRzdEFscGhhKQogewor
ICAgIGlmICghdmFsaWRhdGVCbGVuZEZ1bmNGYWN0b3JzKHNyY1JHQiwgZHN0UkdCKSkKKyAgICAg
ICAgcmV0dXJuOwogICAgIG1fY29udGV4dC0+YmxlbmRGdW5jU2VwYXJhdGUoc3JjUkdCLCBkc3RS
R0IsIHNyY0FscGhhLCBkc3RBbHBoYSk7CiAgICAgY2xlYW51cEFmdGVyR3JhcGhpY3NDYWxsKGZh
bHNlKTsKIH0KQEAgLTMzOTMsNiArMzM5NywxOCBAQCBib29sIFdlYkdMUmVuZGVyaW5nQ29udGV4
dDo6dmFsaWRhdGVCbGVuCiAgICAgfQogfQogCitib29sIFdlYkdMUmVuZGVyaW5nQ29udGV4dDo6
dmFsaWRhdGVCbGVuZEZ1bmNGYWN0b3JzKHVuc2lnbmVkIGxvbmcgc3JjLCB1bnNpZ25lZCBsb25n
IGRzdCkKK3sKKyAgICBpZiAoKChzcmMgPT0gR3JhcGhpY3NDb250ZXh0M0Q6OkNPTlNUQU5UX0NP
TE9SIHx8IHNyYyA9PSBHcmFwaGljc0NvbnRleHQzRDo6T05FX01JTlVTX0NPTlNUQU5UX0NPTE9S
KQorICAgICAgICAgJiYgKGRzdCA9PSBHcmFwaGljc0NvbnRleHQzRDo6Q09OU1RBTlRfQUxQSEEg
fHwgZHN0ID09IEdyYXBoaWNzQ29udGV4dDNEOjpPTkVfTUlOVVNfQ09OU1RBTlRfQUxQSEEpKQor
ICAgICAgICB8fCAoKGRzdCA9PSBHcmFwaGljc0NvbnRleHQzRDo6Q09OU1RBTlRfQ09MT1IgfHwg
ZHN0ID09IEdyYXBoaWNzQ29udGV4dDNEOjpPTkVfTUlOVVNfQ09OU1RBTlRfQ09MT1IpCisgICAg
ICAgICAgICAmJiAoc3JjID09IEdyYXBoaWNzQ29udGV4dDNEOjpDT05TVEFOVF9BTFBIQSB8fCBz
cmMgPT0gR3JhcGhpY3NDb250ZXh0M0Q6Ok9ORV9NSU5VU19DT05TVEFOVF9BTFBIQSkpKSB7Cisg
ICAgICAgIG1fY29udGV4dC0+c3ludGhlc2l6ZUdMRXJyb3IoR3JhcGhpY3NDb250ZXh0M0Q6OklO
VkFMSURfT1BFUkFUSU9OKTsKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKyAgICByZXR1
cm4gdHJ1ZTsKK30KKwogYm9vbCBXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OnZhbGlkYXRlQ2FwYWJp
bGl0eSh1bnNpZ25lZCBsb25nIGNhcCkKIHsKICAgICBzd2l0Y2ggKGNhcCkgewpJbmRleDogV2Vi
Q29yZS9odG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHQuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBX
ZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4dC5oCShyZXZpc2lvbiA3MTA2
NykKKysrIFdlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0LmgJKHdvcmtp
bmcgY29weSkKQEAgLTQ5NSw2ICs0OTUsOSBAQCBwdWJsaWM6CiAgICAgLy8gSGVscGVyIGZ1bmN0
aW9uIHRvIHZhbGlkYXRlIGJsZW5kIGVxdWF0aW9uIG1vZGUuCiAgICAgYm9vbCB2YWxpZGF0ZUJs
ZW5kRXF1YXRpb24odW5zaWduZWQgbG9uZyk7CiAKKyAgICAvLyBIZWxwZXIgZnVuY3Rpb24gdG8g
dmFsaWRhdGUgYmxlbmQgZnVuYyBmYWN0b3JzLgorICAgIGJvb2wgdmFsaWRhdGVCbGVuZEZ1bmNG
YWN0b3JzKHVuc2lnbmVkIGxvbmcgc3JjLCB1bnNpZ25lZCBsb25nIGRzdCk7CisKICAgICAvLyBI
ZWxwZXIgZnVuY3Rpb24gdG8gdmFsaWRhdGUgYSBHTCBjYXBhYmlsaXR5LgogICAgIGJvb2wgdmFs
aWRhdGVDYXBhYmlsaXR5KHVuc2lnbmVkIGxvbmcpOwogCkluZGV4OiBMYXlvdXRUZXN0cy9DaGFu
Z2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCShyZXZpc2lvbiA3MTA3
MikKKysrIExheW91dFRlc3RzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDEz
IEBACisyMDEwLTExLTAxICBaaGVueWFvIE1vICA8em1vQGdvb2dsZS5jb20+CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgYmxlbmRGdW5jIHNob3VsZCBn
ZW5lcmF0ZSBJTlZBTElEX09QRVJBVElPTiBpZiBjb25zdGFudCBjb2xvciBhbmQgY29uc3RhbnQg
YWxwaGEgYXJlIHRvZ2V0aGVyIGFzIHNvdXJjZSBhbmQgZGVzdGluYXRpb24gZmFjdG9ycworICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDg2NzQKKworICAg
ICAgICAqIGZhc3QvY2FudmFzL3dlYmdsL3dlYmdsLXNwZWNpZmljLWV4cGVjdGVkLnR4dDogQWRk
ZWQuCisgICAgICAgICogZmFzdC9jYW52YXMvd2ViZ2wvd2ViZ2wtc3BlY2lmaWMuaHRtbDogQWRk
ZWQuCisKIDIwMTAtMTEtMDEgIE1paGFpIFBhcnBhcml0YSAgPG1paGFpcEBjaHJvbWl1bS5vcmc+
CiAKICAgICAgICAgVW5yZXZpZXdlZDsgdGVzdCBleHBlY3RhdGlvbnMgdXBkYXRlLgpJbmRleDog
TGF5b3V0VGVzdHMvZmFzdC9jYW52YXMvd2ViZ2wvd2ViZ2wtc3BlY2lmaWMtZXhwZWN0ZWQudHh0
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvY2FudmFzL3dlYmdsL3dlYmdsLXNwZWNp
ZmljLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2Zhc3QvY2FudmFz
L3dlYmdsL3dlYmdsLXNwZWNpZmljLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKQEAgLTAsMCAr
MSwyNCBAQAorVGVzdHMgdGhlIGEgZmV3IGRpZmZlcmVuY2VzIGJldHdlZW4gV2ViR0wgYW5kIEdM
RVMyCisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2Fn
ZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KKworUEFTUyBnZXRFcnJvciB3YXMgZXhw
ZWN0ZWQgdmFsdWU6IElOVkFMSURfT1BFUkFUSU9OIDogY29uc3RhbnQgY29sb3IgYW5kIGNvbnN0
YW50IGFscGhhIGNhbm5vdCBiZSB1c2VkIHRvZ2V0aGVyIGFzIHNvdXJjZSBhbmQgZGVzdGluYXRp
b24gZmFjdG9ycyBpbiB0aGUgYmxlbmQgZnVuY3Rpb24KK1BBU1MgZ2V0RXJyb3Igd2FzIGV4cGVj
dGVkIHZhbHVlOiBJTlZBTElEX09QRVJBVElPTiA6IGNvbnN0YW50IGNvbG9yIGFuZCBjb25zdGFu
dCBhbHBoYSBjYW5ub3QgYmUgdXNlZCB0b2dldGhlciBhcyBzb3VyY2UgYW5kIGRlc3RpbmF0aW9u
IGZhY3RvcnMgaW4gdGhlIGJsZW5kIGZ1bmN0aW9uCitQQVNTIGdldEVycm9yIHdhcyBleHBlY3Rl
ZCB2YWx1ZTogSU5WQUxJRF9PUEVSQVRJT04gOiBjb25zdGFudCBjb2xvciBhbmQgY29uc3RhbnQg
YWxwaGEgY2Fubm90IGJlIHVzZWQgdG9nZXRoZXIgYXMgc291cmNlIGFuZCBkZXN0aW5hdGlvbiBm
YWN0b3JzIGluIHRoZSBibGVuZCBmdW5jdGlvbgorUEFTUyBnZXRFcnJvciB3YXMgZXhwZWN0ZWQg
dmFsdWU6IElOVkFMSURfT1BFUkFUSU9OIDogY29uc3RhbnQgY29sb3IgYW5kIGNvbnN0YW50IGFs
cGhhIGNhbm5vdCBiZSB1c2VkIHRvZ2V0aGVyIGFzIHNvdXJjZSBhbmQgZGVzdGluYXRpb24gZmFj
dG9ycyBpbiB0aGUgYmxlbmQgZnVuY3Rpb24KK1BBU1MgZ2V0RXJyb3Igd2FzIGV4cGVjdGVkIHZh
bHVlOiBJTlZBTElEX09QRVJBVElPTiA6IGNvbnN0YW50IGNvbG9yIGFuZCBjb25zdGFudCBhbHBo
YSBjYW5ub3QgYmUgdXNlZCB0b2dldGhlciBhcyBzb3VyY2UgYW5kIGRlc3RpbmF0aW9uIGZhY3Rv
cnMgaW4gdGhlIGJsZW5kIGZ1bmN0aW9uCitQQVNTIGdldEVycm9yIHdhcyBleHBlY3RlZCB2YWx1
ZTogSU5WQUxJRF9PUEVSQVRJT04gOiBjb25zdGFudCBjb2xvciBhbmQgY29uc3RhbnQgYWxwaGEg
Y2Fubm90IGJlIHVzZWQgdG9nZXRoZXIgYXMgc291cmNlIGFuZCBkZXN0aW5hdGlvbiBmYWN0b3Jz
IGluIHRoZSBibGVuZCBmdW5jdGlvbgorUEFTUyBnZXRFcnJvciB3YXMgZXhwZWN0ZWQgdmFsdWU6
IElOVkFMSURfT1BFUkFUSU9OIDogY29uc3RhbnQgY29sb3IgYW5kIGNvbnN0YW50IGFscGhhIGNh
bm5vdCBiZSB1c2VkIHRvZ2V0aGVyIGFzIHNvdXJjZSBhbmQgZGVzdGluYXRpb24gZmFjdG9ycyBp
biB0aGUgYmxlbmQgZnVuY3Rpb24KK1BBU1MgZ2V0RXJyb3Igd2FzIGV4cGVjdGVkIHZhbHVlOiBJ
TlZBTElEX09QRVJBVElPTiA6IGNvbnN0YW50IGNvbG9yIGFuZCBjb25zdGFudCBhbHBoYSBjYW5u
b3QgYmUgdXNlZCB0b2dldGhlciBhcyBzb3VyY2UgYW5kIGRlc3RpbmF0aW9uIGZhY3RvcnMgaW4g
dGhlIGJsZW5kIGZ1bmN0aW9uCitQQVNTIGdldEVycm9yIHdhcyBleHBlY3RlZCB2YWx1ZTogSU5W
QUxJRF9PUEVSQVRJT04gOiBjb25zdGFudCBjb2xvciBhbmQgY29uc3RhbnQgYWxwaGEgY2Fubm90
IGJlIHVzZWQgdG9nZXRoZXIgYXMgc291cmNlIGFuZCBkZXN0aW5hdGlvbiBmYWN0b3JzIGluIHRo
ZSBibGVuZCBmdW5jdGlvbgorUEFTUyBnZXRFcnJvciB3YXMgZXhwZWN0ZWQgdmFsdWU6IElOVkFM
SURfT1BFUkFUSU9OIDogY29uc3RhbnQgY29sb3IgYW5kIGNvbnN0YW50IGFscGhhIGNhbm5vdCBi
ZSB1c2VkIHRvZ2V0aGVyIGFzIHNvdXJjZSBhbmQgZGVzdGluYXRpb24gZmFjdG9ycyBpbiB0aGUg
YmxlbmQgZnVuY3Rpb24KK1BBU1MgZ2V0RXJyb3Igd2FzIGV4cGVjdGVkIHZhbHVlOiBJTlZBTElE
X09QRVJBVElPTiA6IGNvbnN0YW50IGNvbG9yIGFuZCBjb25zdGFudCBhbHBoYSBjYW5ub3QgYmUg
dXNlZCB0b2dldGhlciBhcyBzb3VyY2UgYW5kIGRlc3RpbmF0aW9uIGZhY3RvcnMgaW4gdGhlIGJs
ZW5kIGZ1bmN0aW9uCitQQVNTIGdldEVycm9yIHdhcyBleHBlY3RlZCB2YWx1ZTogSU5WQUxJRF9P
UEVSQVRJT04gOiBjb25zdGFudCBjb2xvciBhbmQgY29uc3RhbnQgYWxwaGEgY2Fubm90IGJlIHVz
ZWQgdG9nZXRoZXIgYXMgc291cmNlIGFuZCBkZXN0aW5hdGlvbiBmYWN0b3JzIGluIHRoZSBibGVu
ZCBmdW5jdGlvbgorUEFTUyBnZXRFcnJvciB3YXMgZXhwZWN0ZWQgdmFsdWU6IElOVkFMSURfT1BF
UkFUSU9OIDogY29uc3RhbnQgY29sb3IgYW5kIGNvbnN0YW50IGFscGhhIGNhbm5vdCBiZSB1c2Vk
IHRvZ2V0aGVyIGFzIHNvdXJjZSBhbmQgZGVzdGluYXRpb24gZmFjdG9ycyBpbiB0aGUgYmxlbmQg
ZnVuY3Rpb24KK1BBU1MgZ2V0RXJyb3Igd2FzIGV4cGVjdGVkIHZhbHVlOiBJTlZBTElEX09QRVJB
VElPTiA6IGNvbnN0YW50IGNvbG9yIGFuZCBjb25zdGFudCBhbHBoYSBjYW5ub3QgYmUgdXNlZCB0
b2dldGhlciBhcyBzb3VyY2UgYW5kIGRlc3RpbmF0aW9uIGZhY3RvcnMgaW4gdGhlIGJsZW5kIGZ1
bmN0aW9uCitQQVNTIGdldEVycm9yIHdhcyBleHBlY3RlZCB2YWx1ZTogSU5WQUxJRF9PUEVSQVRJ
T04gOiBjb25zdGFudCBjb2xvciBhbmQgY29uc3RhbnQgYWxwaGEgY2Fubm90IGJlIHVzZWQgdG9n
ZXRoZXIgYXMgc291cmNlIGFuZCBkZXN0aW5hdGlvbiBmYWN0b3JzIGluIHRoZSBibGVuZCBmdW5j
dGlvbgorUEFTUyBnZXRFcnJvciB3YXMgZXhwZWN0ZWQgdmFsdWU6IElOVkFMSURfT1BFUkFUSU9O
IDogY29uc3RhbnQgY29sb3IgYW5kIGNvbnN0YW50IGFscGhhIGNhbm5vdCBiZSB1c2VkIHRvZ2V0
aGVyIGFzIHNvdXJjZSBhbmQgZGVzdGluYXRpb24gZmFjdG9ycyBpbiB0aGUgYmxlbmQgZnVuY3Rp
b24KK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQorCklu
ZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2NhbnZhcy93ZWJnbC93ZWJnbC1zcGVjaWZpYy5odG1sCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvY2FudmFzL3dlYmdsL3dlYmdsLXNwZWNpZmlj
Lmh0bWwJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9mYXN0L2NhbnZhcy93ZWJnbC93ZWJn
bC1zcGVjaWZpYy5odG1sCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDEwOCBAQAorPCFET0NUWVBF
IEhUTUwgUFVCTElDICItLy9XM0MvL0RURCBIVE1MIDQuMDEgVHJhbnNpdGlvbmFsLy9FTiIKKyAg
Imh0dHA6Ly93d3cudzMub3JnL1RSL2h0bWw0L2xvb3NlLmR0ZCI+Cis8aHRtbD4KKzxoZWFkPgor
PHRpdGxlPldlYkdMIEdMRVMyIGRpZmZlcmVuY2UgdGVzdC48L3RpdGxlPgorPGxpbmsgcmVsPSJz
dHlsZXNoZWV0IiBocmVmPSIuLi8uLi9qcy9yZXNvdXJjZXMvanMtdGVzdC1zdHlsZS5jc3MiLz4K
KzxzY3JpcHQgc3JjPSIuLi8uLi9qcy9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0
PgorPHNjcmlwdCBzcmM9InJlc291cmNlcy93ZWJnbC10ZXN0LmpzIj48L3NjcmlwdD4KKzxzY3Jp
cHQgc3JjPSJyZXNvdXJjZXMvd2ViZ2wtdGVzdC11dGlscy5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+
Cis8Ym9keT4KKzxkaXYgaWQ9ImRlc2NyaXB0aW9uIj48L2Rpdj4KKzxkaXYgaWQ9ImNvbnNvbGUi
PjwvZGl2PgorCis8c2NyaXB0PgordmFyIHd0dSA9IFdlYkdMVGVzdFV0aWxzOworZGVzY3JpcHRp
b24oIlRlc3RzIHRoZSBhIGZldyBkaWZmZXJlbmNlcyBiZXR3ZWVuIFdlYkdMIGFuZCBHTEVTMiIp
OworCit2YXIgZ2wgPSB3dHUuY3JlYXRlM0RDb250ZXh0KCk7CisKK2dsLmJsZW5kRnVuYyhnbC5D
T05TVEFOVF9DT0xPUiwgZ2wuQ09OU1RBTlRfQUxQSEEpOworZ2xFcnJvclNob3VsZEJlKGdsLCBn
bC5JTlZBTElEX09QRVJBVElPTiwKKyAgICAiY29uc3RhbnQgY29sb3IgYW5kIGNvbnN0YW50IGFs
cGhhIGNhbm5vdCBiZSB1c2VkIHRvZ2V0aGVyIGFzIHNvdXJjZSBhbmQgZGVzdGluYXRpb24gZmFj
dG9ycyBpbiB0aGUgYmxlbmQgZnVuY3Rpb24iKTsKK2dsLmJsZW5kRnVuYyhnbC5PTkVfTUlOVVNf
Q09OU1RBTlRfQ09MT1IsIGdsLkNPTlNUQU5UX0FMUEhBKTsKK2dsRXJyb3JTaG91bGRCZShnbCwg
Z2wuSU5WQUxJRF9PUEVSQVRJT04sCisgICAgImNvbnN0YW50IGNvbG9yIGFuZCBjb25zdGFudCBh
bHBoYSBjYW5ub3QgYmUgdXNlZCB0b2dldGhlciBhcyBzb3VyY2UgYW5kIGRlc3RpbmF0aW9uIGZh
Y3RvcnMgaW4gdGhlIGJsZW5kIGZ1bmN0aW9uIik7CitnbC5ibGVuZEZ1bmMoZ2wuQ09OU1RBTlRf
Q09MT1IsIGdsLk9ORV9NSU5VU19DT05TVEFOVF9BTFBIQSk7CitnbEVycm9yU2hvdWxkQmUoZ2ws
IGdsLklOVkFMSURfT1BFUkFUSU9OLAorICAgICJjb25zdGFudCBjb2xvciBhbmQgY29uc3RhbnQg
YWxwaGEgY2Fubm90IGJlIHVzZWQgdG9nZXRoZXIgYXMgc291cmNlIGFuZCBkZXN0aW5hdGlvbiBm
YWN0b3JzIGluIHRoZSBibGVuZCBmdW5jdGlvbiIpOworZ2wuYmxlbmRGdW5jKGdsLk9ORV9NSU5V
U19DT05TVEFOVF9DT0xPUiwgZ2wuT05FX01JTlVTX0NPTlNUQU5UX0FMUEhBKTsKK2dsRXJyb3JT
aG91bGRCZShnbCwgZ2wuSU5WQUxJRF9PUEVSQVRJT04sCisgICAgImNvbnN0YW50IGNvbG9yIGFu
ZCBjb25zdGFudCBhbHBoYSBjYW5ub3QgYmUgdXNlZCB0b2dldGhlciBhcyBzb3VyY2UgYW5kIGRl
c3RpbmF0aW9uIGZhY3RvcnMgaW4gdGhlIGJsZW5kIGZ1bmN0aW9uIik7CitnbC5ibGVuZEZ1bmMo
Z2wuQ09OU1RBTlRfQUxQSEEsIGdsLkNPTlNUQU5UX0NPTE9SKTsKK2dsRXJyb3JTaG91bGRCZShn
bCwgZ2wuSU5WQUxJRF9PUEVSQVRJT04sCisgICAgImNvbnN0YW50IGNvbG9yIGFuZCBjb25zdGFu
dCBhbHBoYSBjYW5ub3QgYmUgdXNlZCB0b2dldGhlciBhcyBzb3VyY2UgYW5kIGRlc3RpbmF0aW9u
IGZhY3RvcnMgaW4gdGhlIGJsZW5kIGZ1bmN0aW9uIik7CitnbC5ibGVuZEZ1bmMoZ2wuQ09OU1RB
TlRfQUxQSEEsIGdsLk9ORV9NSU5VU19DT05TVEFOVF9DT0xPUik7CitnbEVycm9yU2hvdWxkQmUo
Z2wsIGdsLklOVkFMSURfT1BFUkFUSU9OLAorICAgICJjb25zdGFudCBjb2xvciBhbmQgY29uc3Rh
bnQgYWxwaGEgY2Fubm90IGJlIHVzZWQgdG9nZXRoZXIgYXMgc291cmNlIGFuZCBkZXN0aW5hdGlv
biBmYWN0b3JzIGluIHRoZSBibGVuZCBmdW5jdGlvbiIpOworZ2wuYmxlbmRGdW5jKGdsLk9ORV9N
SU5VU19DT05TVEFOVF9BTFBIQSwgZ2wuQ09OU1RBTlRfQ09MT1IpOworZ2xFcnJvclNob3VsZEJl
KGdsLCBnbC5JTlZBTElEX09QRVJBVElPTiwKKyAgICAiY29uc3RhbnQgY29sb3IgYW5kIGNvbnN0
YW50IGFscGhhIGNhbm5vdCBiZSB1c2VkIHRvZ2V0aGVyIGFzIHNvdXJjZSBhbmQgZGVzdGluYXRp
b24gZmFjdG9ycyBpbiB0aGUgYmxlbmQgZnVuY3Rpb24iKTsKK2dsLmJsZW5kRnVuYyhnbC5PTkVf
TUlOVVNfQ09OU1RBTlRfQUxQSEEsIGdsLk9ORV9NSU5VU19DT05TVEFOVF9DT0xPUik7CitnbEVy
cm9yU2hvdWxkQmUoZ2wsIGdsLklOVkFMSURfT1BFUkFUSU9OLAorICAgICJjb25zdGFudCBjb2xv
ciBhbmQgY29uc3RhbnQgYWxwaGEgY2Fubm90IGJlIHVzZWQgdG9nZXRoZXIgYXMgc291cmNlIGFu
ZCBkZXN0aW5hdGlvbiBmYWN0b3JzIGluIHRoZSBibGVuZCBmdW5jdGlvbiIpOworCitnbC5ibGVu
ZEZ1bmNTZXBhcmF0ZShnbC5DT05TVEFOVF9DT0xPUiwgZ2wuQ09OU1RBTlRfQUxQSEEsIGdsLk9O
RSwgZ2wuWkVSTyk7CitnbEVycm9yU2hvdWxkQmUoZ2wsIGdsLklOVkFMSURfT1BFUkFUSU9OLAor
ICAgICJjb25zdGFudCBjb2xvciBhbmQgY29uc3RhbnQgYWxwaGEgY2Fubm90IGJlIHVzZWQgdG9n
ZXRoZXIgYXMgc291cmNlIGFuZCBkZXN0aW5hdGlvbiBmYWN0b3JzIGluIHRoZSBibGVuZCBmdW5j
dGlvbiIpOworZ2wuYmxlbmRGdW5jU2VwYXJhdGUoZ2wuT05FX01JTlVTX0NPTlNUQU5UX0NPTE9S
LCBnbC5DT05TVEFOVF9BTFBIQSwgZ2wuT05FLCBnbC5aRVJPKTsKK2dsRXJyb3JTaG91bGRCZShn
bCwgZ2wuSU5WQUxJRF9PUEVSQVRJT04sCisgICAgImNvbnN0YW50IGNvbG9yIGFuZCBjb25zdGFu
dCBhbHBoYSBjYW5ub3QgYmUgdXNlZCB0b2dldGhlciBhcyBzb3VyY2UgYW5kIGRlc3RpbmF0aW9u
IGZhY3RvcnMgaW4gdGhlIGJsZW5kIGZ1bmN0aW9uIik7CitnbC5ibGVuZEZ1bmNTZXBhcmF0ZShn
bC5DT05TVEFOVF9DT0xPUiwgZ2wuT05FX01JTlVTX0NPTlNUQU5UX0FMUEhBLCBnbC5PTkUsIGds
LlpFUk8pOworZ2xFcnJvclNob3VsZEJlKGdsLCBnbC5JTlZBTElEX09QRVJBVElPTiwKKyAgICAi
Y29uc3RhbnQgY29sb3IgYW5kIGNvbnN0YW50IGFscGhhIGNhbm5vdCBiZSB1c2VkIHRvZ2V0aGVy
IGFzIHNvdXJjZSBhbmQgZGVzdGluYXRpb24gZmFjdG9ycyBpbiB0aGUgYmxlbmQgZnVuY3Rpb24i
KTsKK2dsLmJsZW5kRnVuY1NlcGFyYXRlKGdsLk9ORV9NSU5VU19DT05TVEFOVF9DT0xPUiwgZ2wu
T05FX01JTlVTX0NPTlNUQU5UX0FMUEhBLCBnbC5PTkUsIGdsLlpFUk8pOworZ2xFcnJvclNob3Vs
ZEJlKGdsLCBnbC5JTlZBTElEX09QRVJBVElPTiwKKyAgICAiY29uc3RhbnQgY29sb3IgYW5kIGNv
bnN0YW50IGFscGhhIGNhbm5vdCBiZSB1c2VkIHRvZ2V0aGVyIGFzIHNvdXJjZSBhbmQgZGVzdGlu
YXRpb24gZmFjdG9ycyBpbiB0aGUgYmxlbmQgZnVuY3Rpb24iKTsKK2dsLmJsZW5kRnVuY1NlcGFy
YXRlKGdsLkNPTlNUQU5UX0FMUEhBLCBnbC5DT05TVEFOVF9DT0xPUiwgZ2wuT05FLCBnbC5aRVJP
KTsKK2dsRXJyb3JTaG91bGRCZShnbCwgZ2wuSU5WQUxJRF9PUEVSQVRJT04sCisgICAgImNvbnN0
YW50IGNvbG9yIGFuZCBjb25zdGFudCBhbHBoYSBjYW5ub3QgYmUgdXNlZCB0b2dldGhlciBhcyBz
b3VyY2UgYW5kIGRlc3RpbmF0aW9uIGZhY3RvcnMgaW4gdGhlIGJsZW5kIGZ1bmN0aW9uIik7Citn
bC5ibGVuZEZ1bmNTZXBhcmF0ZShnbC5DT05TVEFOVF9BTFBIQSwgZ2wuT05FX01JTlVTX0NPTlNU
QU5UX0NPTE9SLCBnbC5PTkUsIGdsLlpFUk8pOworZ2xFcnJvclNob3VsZEJlKGdsLCBnbC5JTlZB
TElEX09QRVJBVElPTiwKKyAgICAiY29uc3RhbnQgY29sb3IgYW5kIGNvbnN0YW50IGFscGhhIGNh
bm5vdCBiZSB1c2VkIHRvZ2V0aGVyIGFzIHNvdXJjZSBhbmQgZGVzdGluYXRpb24gZmFjdG9ycyBp
biB0aGUgYmxlbmQgZnVuY3Rpb24iKTsKK2dsLmJsZW5kRnVuY1NlcGFyYXRlKGdsLk9ORV9NSU5V
U19DT05TVEFOVF9BTFBIQSwgZ2wuQ09OU1RBTlRfQ09MT1IsIGdsLk9ORSwgZ2wuWkVSTyk7Citn
bEVycm9yU2hvdWxkQmUoZ2wsIGdsLklOVkFMSURfT1BFUkFUSU9OLAorICAgICJjb25zdGFudCBj
b2xvciBhbmQgY29uc3RhbnQgYWxwaGEgY2Fubm90IGJlIHVzZWQgdG9nZXRoZXIgYXMgc291cmNl
IGFuZCBkZXN0aW5hdGlvbiBmYWN0b3JzIGluIHRoZSBibGVuZCBmdW5jdGlvbiIpOworZ2wuYmxl
bmRGdW5jU2VwYXJhdGUoZ2wuT05FX01JTlVTX0NPTlNUQU5UX0FMUEhBLCBnbC5PTkVfTUlOVVNf
Q09OU1RBTlRfQ09MT1IsIGdsLk9ORSwgZ2wuWkVSTyk7CitnbEVycm9yU2hvdWxkQmUoZ2wsIGds
LklOVkFMSURfT1BFUkFUSU9OLAorICAgICJjb25zdGFudCBjb2xvciBhbmQgY29uc3RhbnQgYWxw
aGEgY2Fubm90IGJlIHVzZWQgdG9nZXRoZXIgYXMgc291cmNlIGFuZCBkZXN0aW5hdGlvbiBmYWN0
b3JzIGluIHRoZSBibGVuZCBmdW5jdGlvbiIpOworCisvKgorZ2wuZGVwdGhSYW5nZSgyMCwgMTAp
OworZ2xFcnJvclNob3VsZEJlKGdsLCBnbC5JTlZBTElEX09QRVJBVElPTiwKKyAgICAiZGVwdGhS
YW5nZSBzaG91bGQgZ2VuZXJhdGUgSU5WQUxJRF9PUEVSQVRJT04gaWYgek5lYXIgaXMgZ3JlYXRl
ciB0aGFuIHpGYXIiKTsKKworZ2wuc3RlbmNpbE1hc2soMjU1KTsKK2dsRXJyb3JTaG91bGRCZShn
bCwgZ2wuTk9fRVJST1IsCisgICAgInN0ZW5jaWxNYXNrIHNob3VsZCBnZW5lcmF0ZSBubyBlcnJv
ciIpOworZ2wuc3RlbmNpbE1hc2tTZXBhcmF0ZShnbC5GUk9OVCwgMSk7CitnbEVycm9yU2hvdWxk
QmUoZ2wsIGdsLklOVkFMSURfT1BFUkFUSU9OLAorICAgICJhIGRpZmZlcmVudCBtYXNrIHZhbHVl
IGZvciBmcm9udCBhbmQgYmFjayBmYWNpbmcgaXMgaWxsZWdhbCIpOworZ2wuc3RlbmNpbE1hc2tT
ZXBhcmF0ZShnbC5CQUNLLCAxKTsKK2dsRXJyb3JTaG91bGRCZShnbCwgZ2wuSU5WQUxJRF9PUEVS
QVRJT04sCisgICAgImEgZGlmZmVyZW50IG1hc2sgdmFsdWUgZm9yIGZyb250IGFuZCBiYWNrIGZh
Y2luZyBpcyBpbGxlZ2FsIik7CisKK2dsLnN0ZW5jaWxGdW5jKGdsLkFMV0FZUywgMCwgMjU1KTsK
K2dsRXJyb3JTaG91bGRCZShnbCwgZ2wuTk9fRVJST1IsCisgICAgInN0ZW5jaWxGdW5jIHNob3Vs
ZCBnZW5lcmF0ZSBubyBlcnJvciIpOworZ2wuc3RlbmNpbEZ1bmNTZXBhcmF0ZShnbC5GUk9OVCwg
Z2wuQUxXQVlTLCAxLCAyNTUpOworZ2xFcnJvclNob3VsZEJlKGdsLCBnbC5JTlZBTElEX09QRVJB
VElPTiwKKyAgICAiYSBkaWZmZXJlbnQgcmVmZXJlbmNlIHZhbHVlIGZvciBmcm9udCBhbmQgYmFj
ayBmYWNpbmcgaXMgaWxsZWdhbCIpOworZ2wuc3RlbmNpbEZ1bmNTZXBhcmF0ZShnbC5CQUNLLCBn
bC5BTFdBWVMsIDEsIDI1NSk7CitnbEVycm9yU2hvdWxkQmUoZ2wsIGdsLklOVkFMSURfT1BFUkFU
SU9OLAorICAgICJhIGRpZmZlcmVudCByZWZlcmVuY2UgdmFsdWUgZm9yIGZyb250IGFuZCBiYWNr
IGZhY2luZyBpcyBpbGxlZ2FsIik7CitnbC5zdGVuY2lsRnVuY1NlcGFyYXRlKGdsLkZST05ULCBn
bC5BTFdBWVMsIDAsIDEpOworZ2xFcnJvclNob3VsZEJlKGdsLCBnbC5JTlZBTElEX09QRVJBVElP
TiwKKyAgICAiYSBkaWZmZXJlbnQgbWFzayB2YWx1ZSBmb3IgZnJvbnQgYW5kIGJhY2sgZmFjaW5n
IGlzIGlsbGVnYWwiKTsKK2dsLnN0ZW5jaWxGdW5jU2VwYXJhdGUoZ2wuQkFDSywgZ2wuQUxXQVlT
LCAwLCAxKTsKK2dsRXJyb3JTaG91bGRCZShnbCwgZ2wuSU5WQUxJRF9PUEVSQVRJT04sCisgICAg
ImEgZGlmZmVyZW50IG1hc2sgdmFsdWUgZm9yIGZyb250IGFuZCBiYWNrIGZhY2luZyBpcyBpbGxl
Z2FsIik7CisqLworCitzdWNjZXNzZnVsbHlQYXJzZWQgPSB0cnVlOworPC9zY3JpcHQ+CisKKzxz
Y3JpcHQgc3JjPSIuLi8uLi9qcy9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4K
KzwvYm9keT4KKzwvaHRtbD4K
</data>
<flag name="review"
          id="63068"
          type_id="1"
          status="+"
          setter="kbr"
    />
    <flag name="commit-queue"
          id="63069"
          type_id="3"
          status="-"
          setter="zmo"
    />
          </attachment>
      

    </bug>

</bugzilla>