<?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>134513</bug_id>
          
          <creation_ts>2014-07-01 14:43:07 -0700</creation_ts>
          <short_desc>[iOS] Subsampled JPEG images do not draw correctly via the canvas APIs</short_desc>
          <delta_ts>2014-07-01 16:27:12 -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>New Bugs</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="Dean Jackson">dino</reporter>
          <assigned_to name="Dean Jackson">dino</assigned_to>
          <cc>bunhere</cc>
    
    <cc>cdumez</cc>
    
    <cc>commit-queue</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>kondapallykalyan</cc>
    
    <cc>roger_fong</cc>
    
    <cc>sergio</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1019768</commentid>
    <comment_count>0</comment_count>
    <who name="Dean Jackson">dino</who>
    <bug_when>2014-07-01 14:43:07 -0700</bug_when>
    <thetext>[iOS] Subsampled JPEG images do not draw correctly via the canvas APIs</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1019772</commentid>
    <comment_count>1</comment_count>
      <attachid>234200</attachid>
    <who name="Dean Jackson">dino</who>
    <bug_when>2014-07-01 14:49:51 -0700</bug_when>
    <thetext>Created attachment 234200
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1019776</commentid>
    <comment_count>2</comment_count>
      <attachid>234200</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2014-07-01 14:58:24 -0700</bug_when>
    <thetext>Comment on attachment 234200
Patch

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

&gt; Source/WebCore/platform/graphics/cg/BitmapImageCG.cpp:206
&gt; +    if (m_originalSize.width() &amp;&amp; m_originalSize.height())
&gt; +        scaledSrcRect.scale(m_size.width() / static_cast&lt;float&gt;(m_originalSize.width()), m_size.height() / static_cast&lt;float&gt;(m_originalSize.height()));

Don&apos;t we have a subsampling scale (m_scale) for each frame already?

&gt; Source/WebCore/platform/graphics/cg/GraphicsContext3DCG.cpp:340
&gt; +                scaleHint = std::min&lt;float&gt;(1.0f, std::max(m_image-&gt;size().width() / originalSize.width(), m_image-&gt;size().width() / originalSize.height()));

Image knows the scale already?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1019799</commentid>
    <comment_count>3</comment_count>
      <attachid>234200</attachid>
    <who name="Dean Jackson">dino</who>
    <bug_when>2014-07-01 15:47:39 -0700</bug_when>
    <thetext>Comment on attachment 234200
Patch

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

&gt;&gt; Source/WebCore/platform/graphics/cg/BitmapImageCG.cpp:206
&gt;&gt; +        scaledSrcRect.scale(m_size.width() / static_cast&lt;float&gt;(m_originalSize.width()), m_size.height() / static_cast&lt;float&gt;(m_originalSize.height()));
&gt; 
&gt; Don&apos;t we have a subsampling scale (m_scale) for each frame already?

No, we might not have any frames yet. Later in this method we call frameAtIndex to generate the frame for the subsample.

&gt;&gt; Source/WebCore/platform/graphics/cg/GraphicsContext3DCG.cpp:340
&gt;&gt; +                scaleHint = std::min&lt;float&gt;(1.0f, std::max(m_image-&gt;size().width() / originalSize.width(), m_image-&gt;size().width() / originalSize.height()));
&gt; 
&gt; Image knows the scale already?

Same as above, and even if it did, I would have to make the frames public just for this.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1019800</commentid>
    <comment_count>4</comment_count>
    <who name="Dean Jackson">dino</who>
    <bug_when>2014-07-01 15:48:05 -0700</bug_when>
    <thetext>I changed FrameData::m_scale to m_subsamplingScale though.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1019804</commentid>
    <comment_count>5</comment_count>
      <attachid>234200</attachid>
    <who name="Tim Horton">thorton</who>
    <bug_when>2014-07-01 15:55:32 -0700</bug_when>
    <thetext>Comment on attachment 234200
Patch

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

&gt; Source/WebCore/platform/graphics/cg/BitmapImageCG.cpp:202
&gt; +    FloatRect scaledSrcRect = srcRect;

&lt;channeling ben&gt; scaled into what coordinate space</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1019818</commentid>
    <comment_count>6</comment_count>
    <who name="Dean Jackson">dino</who>
    <bug_when>2014-07-01 16:25:27 -0700</bug_when>
    <thetext>        &lt;rdar://problem/12078860&gt;
        &lt;rdar://problem/16745393&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1019819</commentid>
    <comment_count>7</comment_count>
    <who name="Dean Jackson">dino</who>
    <bug_when>2014-07-01 16:27:12 -0700</bug_when>
    <thetext>Committed r170675: &lt;http://trac.webkit.org/changeset/170675&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>234200</attachid>
            <date>2014-07-01 14:49:51 -0700</date>
            <delta_ts>2014-07-01 15:55:32 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-134513-20140702074930.patch</filename>
            <type>text/plain</type>
            <size>18113</size>
            <attacher name="Dean Jackson">dino</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTcwNTg5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNTE2ODZlZTM2ZTQxMDE0
M2NkMTVhMWQxMTc5YzA1MjI3MzVlZWQwYi4uYTg2ZDFlZmY5YmI5ODljYWZiN2Y5OTc5OTk0ZDAw
OGVmMmEwYzM4NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI4IEBACisyMDE0LTA3LTAxICBEZWFu
IEphY2tzb24gIDxkaW5vQGFwcGxlLmNvbT4KKworICAgICAgICBbaU9TXSBTdWJzYW1wbGVkIEpQ
RUcgaW1hZ2VzIGRvIG5vdCBkcmF3IGNvcnJlY3RseSB2aWEgdGhlIGNhbnZhcyBBUElzCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMzQ1MTMKKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBTdWJzYW1wbGVkIGlt
YWdlcyAoZS5nLiBKUEVHKSB3ZXJlIG5vdCBjb25zaXN0ZW50bHkgdXNpbmcKKyAgICAgICAgdGhl
aXIgb3JpZ2luYWwgZGltZW5zaW9ucyBhbmQgc3Vic2FtcGxlZCBkaW1lbnNpb25zLiBUaGlzIGNh
dXNlZAorICAgICAgICB0aGluZ3MgbGlrZSB0ZXhJbWFnZTJEIHRvIHBhY2sgdGhlIHBpeGVscyBp
bmNvcnJlY3RseSwgb3IgZHJhd0ltYWdlCisgICAgICAgIHRvIHNxdWlzaCB0aGUgcmVuZGVyaW5n
LgorCisgICAgICAgIFRlc3RzOiBmYXN0L2NhbnZhcy9pbWFnZS1wb3RlbnRpYWwtc3Vic2FtcGxl
Lmh0bWwKKyAgICAgICAgICAgICAgIGZhc3QvY2FudmFzL3dlYmdsL3RleC1pbWFnZS1hbmQtc3Vi
LWltYWdlLTJkLXdpdGgtcG90ZW50aWFsbHktc3Vic2FtcGxlZC1pbWFnZS5odG1sCisKKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jZy9CaXRtYXBJbWFnZUNHLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkJpdG1hcEltYWdlOjpkcmF3KTogVXNlIGEgc2NhbGVkU3JjUmVjdCB0aGF0IHJlZmxl
Y3RzIHRoZSBzdWJzYW1wbGVkIHNpemUsCisgICAgICAgIHJhdGhlciB0aGFuIGFzc3VtaW5nIHRo
ZSBzcmNSZWN0IGFjY3VyYXRlbHkgcmVmbGVjdHMgaG93IG1hbnkgcGl4ZWxzIHdlIGhhdmUKKyAg
ICAgICAgaW4gdGhlIEJpdG1hcC4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jZy9HcmFw
aGljc0NvbnRleHQzRENHLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNE
OjpJbWFnZUV4dHJhY3Rvcjo6ZXh0cmFjdEltYWdlKTogU2ltaWxhciBmaXgsIGFsdGhvdWdoIHRo
aXMKKyAgICAgICAgdGltZSB3ZSBqdXN0IGFzayB0aGUgaW1hZ2UgZGVjb2RlciB0byB0YWtlIGlu
dG8gYWNjb3VudCB0aGUgc3Vic2FtcGxlZCBzaXplCisgICAgICAgIHdoZW4gaXQgaXMgImdlbmVy
YXRpbmciIGEgZnJhbWUsIGNhdXNpbmcgaXQgdG8gdXNlIHRoZSBiaXRtYXAgZGF0YSBpdCBoYXMg
YWxyZWFkeQorICAgICAgICBkZWNvZGVkLgorCiAyMDE0LTA2LTMwICBBbGV4IENocmlzdGVuc2Vu
ICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CiAKICAgICAgICAgUmVtb3ZlIHdlYmtpdCBwcmVm
aXggZnJvbSBwb2ludGVyIGxvY2suCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jZy9CaXRtYXBJbWFnZUNHLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2NnL0JpdG1hcEltYWdlQ0cuY3BwCmluZGV4IDI5ZTgxNzAwMTkxYWU2YWM4ZmY2
ODMwYjU2MTFkZTE4MzNjZjZlOTQuLmRiN2VhODQ0Y2EzNjM0OTlmYjMzYzdiYzA2ODg1NDkyMzA1
NzAyYjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0Jp
dG1hcEltYWdlQ0cuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nn
L0JpdG1hcEltYWdlQ0cuY3BwCkBAIC0xOTksMTEgKzE5OSwxMiBAQCBSZXRhaW5QdHI8Q0ZBcnJh
eVJlZj4gQml0bWFwSW1hZ2U6OmdldENHSW1hZ2VBcnJheSgpCiB2b2lkIEJpdG1hcEltYWdlOjpk
cmF3KEdyYXBoaWNzQ29udGV4dCogY3R4dCwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29u
c3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBDb2xvclNwYWNlIHN0eWxlQ29sb3JTcGFjZSwgQ29tcG9z
aXRlT3BlcmF0b3IgY29tcG9zaXRlT3AsIEJsZW5kTW9kZSBibGVuZE1vZGUsIEltYWdlT3JpZW50
YXRpb25EZXNjcmlwdGlvbiBkZXNjcmlwdGlvbikKIHsKICAgICBDR0ltYWdlUmVmIGltYWdlOwot
I2lmICFQTEFURk9STShJT1MpCi0gICAgc3RhcnRBbmltYXRpb24oKTsKKyAgICBGbG9hdFJlY3Qg
c2NhbGVkU3JjUmVjdCA9IHNyY1JlY3Q7CisKKyNpZiBQTEFURk9STShJT1MpCisgICAgaWYgKG1f
b3JpZ2luYWxTaXplLndpZHRoKCkgJiYgbV9vcmlnaW5hbFNpemUuaGVpZ2h0KCkpCisgICAgICAg
IHNjYWxlZFNyY1JlY3Quc2NhbGUobV9zaXplLndpZHRoKCkgLyBzdGF0aWNfY2FzdDxmbG9hdD4o
bV9vcmlnaW5hbFNpemUud2lkdGgoKSksIG1fc2l6ZS5oZWlnaHQoKSAvIHN0YXRpY19jYXN0PGZs
b2F0PihtX29yaWdpbmFsU2l6ZS5oZWlnaHQoKSkpOwogCi0gICAgaW1hZ2UgPSBmcmFtZUF0SW5k
ZXgobV9jdXJyZW50RnJhbWUpOwotI2Vsc2UKICAgICBzdGFydEFuaW1hdGlvbihEb05vdENhdGNo
VXApOwogCiAgICAgQ0dSZWN0IHRyYW5zZm9ybWVkRGVzdGluYXRpb25SZWN0ID0gQ0dSZWN0QXBw
bHlBZmZpbmVUcmFuc2Zvcm0oZGVzdFJlY3QsIENHQ29udGV4dEdldENUTShjdHh0LT5wbGF0Zm9y
bUNvbnRleHQoKSkpOwpAQCAtMjEyLDEwICsyMTMsMTUgQEAgdm9pZCBCaXRtYXBJbWFnZTo6ZHJh
dyhHcmFwaGljc0NvbnRleHQqIGN0eHQsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0
IEYKICAgICBpZiAoQ0dDb250ZXh0R2V0VHlwZShjdHh0LT5wbGF0Zm9ybUNvbnRleHQoKSkgPT0g
a0NHQ29udGV4dFR5cGVQREYpCiAgICAgICAgIGltYWdlUG9zc2libHlDb3BpZWQgPSBhZG9wdENG
KGNvcHlVbnNjYWxlZEZyYW1lQXRJbmRleChtX2N1cnJlbnRGcmFtZSkpOwogICAgIGVsc2UKLSAg
ICAgICAgaW1hZ2VQb3NzaWJseUNvcGllZCA9IGZyYW1lQXRJbmRleChtX2N1cnJlbnRGcmFtZSwg
c3RkOjptaW48ZmxvYXQ+KDEuMGYsIHN0ZDo6bWF4KHRyYW5zZm9ybWVkRGVzdGluYXRpb25SZWN0
LnNpemUud2lkdGggIC8gc3JjUmVjdC53aWR0aCgpLCB0cmFuc2Zvcm1lZERlc3RpbmF0aW9uUmVj
dC5zaXplLmhlaWdodCAvIHNyY1JlY3QuaGVpZ2h0KCkpKSk7Ci0gICAgCisgICAgICAgIGltYWdl
UG9zc2libHlDb3BpZWQgPSBmcmFtZUF0SW5kZXgobV9jdXJyZW50RnJhbWUsIHN0ZDo6bWluPGZs
b2F0PigxLjBmLCBzdGQ6Om1heCh0cmFuc2Zvcm1lZERlc3RpbmF0aW9uUmVjdC5zaXplLndpZHRo
ICAvIHNjYWxlZFNyY1JlY3Qud2lkdGgoKSwgdHJhbnNmb3JtZWREZXN0aW5hdGlvblJlY3Quc2l6
ZS5oZWlnaHQgLyBzY2FsZWRTcmNSZWN0LmhlaWdodCgpKSkpOworCiAgICAgaW1hZ2UgPSBpbWFn
ZVBvc3NpYmx5Q29waWVkLmdldCgpOworI2Vsc2UKKyAgICBzdGFydEFuaW1hdGlvbigpOworCisg
ICAgaW1hZ2UgPSBmcmFtZUF0SW5kZXgobV9jdXJyZW50RnJhbWUpOwogI2VuZGlmCisKICAgICBp
ZiAoIWltYWdlKSAvLyBJZiBpdCdzIHRvbyBlYXJseSB3ZSB3b24ndCBoYXZlIGFuIGltYWdlIHll
dC4KICAgICAgICAgcmV0dXJuOwogICAgIApAQCAtMjM0LDcgKzI0MCw3IEBAIHZvaWQgQml0bWFw
SW1hZ2U6OmRyYXcoR3JhcGhpY3NDb250ZXh0KiBjdHh0LCBjb25zdCBGbG9hdFJlY3QmIGRlc3RS
ZWN0LCBjb25zdCBGCiAgICAgaWYgKGRlc2NyaXB0aW9uLnJlc3BlY3RJbWFnZU9yaWVudGF0aW9u
KCkgPT0gUmVzcGVjdEltYWdlT3JpZW50YXRpb24pCiAgICAgICAgIG9yaWVudGF0aW9uID0gZnJh
bWVPcmllbnRhdGlvbkF0SW5kZXgobV9jdXJyZW50RnJhbWUpOwogCi0gICAgY3R4dC0+ZHJhd05h
dGl2ZUltYWdlKGltYWdlLCBzZWxmU2l6ZSwgc3R5bGVDb2xvclNwYWNlLCBkZXN0UmVjdCwgc3Jj
UmVjdCwgc2NhbGUsIGNvbXBvc2l0ZU9wLCBibGVuZE1vZGUsIG9yaWVudGF0aW9uKTsKKyAgICBj
dHh0LT5kcmF3TmF0aXZlSW1hZ2UoaW1hZ2UsIHNlbGZTaXplLCBzdHlsZUNvbG9yU3BhY2UsIGRl
c3RSZWN0LCBzY2FsZWRTcmNSZWN0LCBzY2FsZSwgY29tcG9zaXRlT3AsIGJsZW5kTW9kZSwgb3Jp
ZW50YXRpb24pOwogCiAgICAgaWYgKGltYWdlT2JzZXJ2ZXIoKSkKICAgICAgICAgaW1hZ2VPYnNl
cnZlcigpLT5kaWREcmF3KHRoaXMpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2cvR3JhcGhpY3NDb250ZXh0M0RDRy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jZy9HcmFwaGljc0NvbnRleHQzRENHLmNwcAppbmRleCA5NzZjYThi
OTEzMzhmNWEyMmU0ZTdkNzc1MDliNjNlZTE5MzI5MTQ2Li45YzE2MDFkNDFlMWVlYzRmYTE5NTk4
NzRhMTE3OWVjMmI5ZWY5Yjc4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jZy9HcmFwaGljc0NvbnRleHQzRENHLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jZy9HcmFwaGljc0NvbnRleHQzRENHLmNwcApAQCAtMzMyLDcgKzMz
MiwxNyBAQCBib29sIEdyYXBoaWNzQ29udGV4dDNEOjpJbWFnZUV4dHJhY3Rvcjo6ZXh0cmFjdElt
YWdlKGJvb2wgcHJlbXVsdGlwbHlBbHBoYSwgYm9vbAogICAgICAgICBkZWNvZGVyLnNldERhdGEo
bV9pbWFnZS0+ZGF0YSgpLCB0cnVlKTsKICAgICAgICAgaWYgKCFkZWNvZGVyLmZyYW1lQ291bnQo
KSkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyNpZiBQTEFURk9STShJT1MpCisgICAgICAg
IGZsb2F0IHNjYWxlSGludCA9IDE7CisgICAgICAgIGlmIChtX2ltYWdlLT5pc0JpdG1hcEltYWdl
KCkpIHsKKyAgICAgICAgICAgIEludFNpemUgb3JpZ2luYWxTaXplID0gdG9CaXRtYXBJbWFnZSht
X2ltYWdlKS0+b3JpZ2luYWxTaXplKCk7CisgICAgICAgICAgICBpZiAob3JpZ2luYWxTaXplLndp
ZHRoKCkgJiYgb3JpZ2luYWxTaXplLmhlaWdodCgpKQorICAgICAgICAgICAgICAgIHNjYWxlSGlu
dCA9IHN0ZDo6bWluPGZsb2F0PigxLjBmLCBzdGQ6Om1heChtX2ltYWdlLT5zaXplKCkud2lkdGgo
KSAvIG9yaWdpbmFsU2l6ZS53aWR0aCgpLCBtX2ltYWdlLT5zaXplKCkud2lkdGgoKSAvIG9yaWdp
bmFsU2l6ZS5oZWlnaHQoKSkpOworICAgICAgICB9CisgICAgICAgIG1fZGVjb2RlZEltYWdlID0g
YWRvcHRDRihkZWNvZGVyLmNyZWF0ZUZyYW1lQXRJbmRleCgwLCAmc2NhbGVIaW50KSk7CisjZWxz
ZQogICAgICAgICBtX2RlY29kZWRJbWFnZSA9IGFkb3B0Q0YoZGVjb2Rlci5jcmVhdGVGcmFtZUF0
SW5kZXgoMCkpOworI2VuZGlmCiAgICAgICAgIG1fY2dJbWFnZSA9IG1fZGVjb2RlZEltYWdlLmdl
dCgpOwogICAgIH0gZWxzZQogICAgICAgICBtX2NnSW1hZ2UgPSBtX2ltYWdlLT5uYXRpdmVJbWFn
ZUZvckN1cnJlbnRGcmFtZSgpOwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIv
TGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4IDFhNDhhYmNkMjYwNGJiMzU0MjQwMzkzZGIyZjMz
YmU4ZGNhZGJlNmEuLjIyZDkzOWNlOTlhOWY3MDJkZWE1Zjk2MGRhNmQ1YjExOTNhYTM0MTUgMTAw
NjQ0Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKQEAgLTEsMyArMSwyNyBAQAorMjAxNC0wNy0wMSAgRGVhbiBKYWNrc29uICA8ZGlub0BhcHBs
ZS5jb20+CisKKyAgICAgICAgW2lPU10gU3Vic2FtcGxlZCBKUEVHIGltYWdlcyBkbyBub3QgZHJh
dyBjb3JyZWN0bHkgdmlhIHRoZSBjYW52YXMgQVBJcworICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTM0NTEzCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkIENhbnZhczJEIGFuZCBXZWJHTCB0ZXN0cyB0aGF0
IGV4ZXJjaXNlIGEgdmVyeSBsYXJnZSBKUEVHIGltYWdlLgorCisgICAgICAgIFRoZSBXZWJHTCB0
ZXN0IGlzIG1vc3RseSBjb3BpZWQgZnJvbSB0aGUgV2ViR0wgdGVzdCBzdWl0ZSwgc28gcGxlYXNl
CisgICAgICAgIGV4Y3VzZSB0aGUgY29kaW5nIHN0eWxlLgorCisgICAgICAgICogZmFzdC9jYW52
YXMvaW1hZ2UtcG90ZW50aWFsLXN1YnNhbXBsZS1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAg
ICAqIGZhc3QvY2FudmFzL2ltYWdlLXBvdGVudGlhbC1zdWJzYW1wbGUuaHRtbDogQWRkZWQuCisg
ICAgICAgICogZmFzdC9jYW52YXMvcmVzb3VyY2VzL2ltYWdlLTMwMDB4MzAwMC5qcGc6IEFkZGVk
LgorICAgICAgICAqIGZhc3QvY2FudmFzL3dlYmdsL3Jlc291cmNlcy90ZXgtaW1hZ2UtYW5kLXN1
Yi1pbWFnZS0yZC13aXRoLXBvdGVudGlhbGx5LXN1YnNhbXBsZWQtaW1hZ2UuanM6IEFkZGVkLgor
ICAgICAgICAoLmluaXQpOgorICAgICAgICAoLnJ1bk9uZUl0ZXJhdGlvbik6CisgICAgICAgICgu
cnVuVGVzdE9uSW1hZ2UpOgorICAgICAgICAoLnJ1blRlc3QpOgorICAgICAgICAoZ2VuZXJhdGVU
ZXN0KToKKyAgICAgICAgKiBmYXN0L2NhbnZhcy93ZWJnbC90ZXgtaW1hZ2UtYW5kLXN1Yi1pbWFn
ZS0yZC13aXRoLXBvdGVudGlhbGx5LXN1YnNhbXBsZWQtaW1hZ2UtZXhwZWN0ZWQudHh0OiBBZGRl
ZC4KKyAgICAgICAgKiBmYXN0L2NhbnZhcy93ZWJnbC90ZXgtaW1hZ2UtYW5kLXN1Yi1pbWFnZS0y
ZC13aXRoLXBvdGVudGlhbGx5LXN1YnNhbXBsZWQtaW1hZ2UuaHRtbDogQWRkZWQuCisKIDIwMTQt
MDYtMzAgIE1pY2hhZWwgU2Fib2ZmICA8bXNhYm9mZkBhcHBsZS5jb20+CiAKICAgICAgICAgUmVk
dWNlIG1lbW9yeSByZXF1aXJlZCBmb3IganMvdHlwZWRhcnJheS16ZXJvLXNpemUuanMKZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvY2FudmFzL2ltYWdlLXBvdGVudGlhbC1zdWJzYW1wbGUt
ZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvZmFzdC9jYW52YXMvaW1hZ2UtcG90ZW50aWFsLXN1
YnNhbXBsZS1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNDRkOGIxMmVlN2YxNTZkYjQ1M2E5NDg3
Mjg2YmMwY2FkNmE2MmM5MAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvY2Fu
dmFzL2ltYWdlLXBvdGVudGlhbC1zdWJzYW1wbGUtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsNSBA
QAorUEFTUzogUGl4ZWwgKDEwLCAxMCkgd2FzIGNsb3NlIHRvIDI1NSwwLDAsMjU1CisKK1BBU1M6
IFBpeGVsICgyMDAsIDIwMCkgd2FzIGNsb3NlIHRvIDAsMjU1LDAsMjU1CisKK1BBU1M6IFBpeGVs
ICgzOTAsIDM5MCkgd2FzIGNsb3NlIHRvIDAsMCwyNTUsMjU1CmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9mYXN0L2NhbnZhcy9pbWFnZS1wb3RlbnRpYWwtc3Vic2FtcGxlLmh0bWwgYi9MYXlvdXRU
ZXN0cy9mYXN0L2NhbnZhcy9pbWFnZS1wb3RlbnRpYWwtc3Vic2FtcGxlLmh0bWwKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uMmQzMmIzNmRiMGU5OTNlNGI0MmQxNzY4N2QzYmExZjkyMmE2NTY1MgotLS0gL2Rldi9udWxs
CisrKyBiL0xheW91dFRlc3RzL2Zhc3QvY2FudmFzL2ltYWdlLXBvdGVudGlhbC1zdWJzYW1wbGUu
aHRtbApAQCAtMCwwICsxLDYxIEBACis8c2NyaXB0PgorCitpZiAod2luZG93LnRlc3RSdW5uZXIp
IHsKKyAgICB3aW5kb3cudGVzdFJ1bm5lci5kdW1wQXNUZXh0KCk7CisgICAgd2luZG93LnRlc3RS
dW5uZXIud2FpdFVudGlsRG9uZSgpOworfQorCitmdW5jdGlvbiBnZXRQaXhlbChjYW52YXMsIHgs
IHkpIHsKKyAgICB2YXIgY29udGV4dCA9IGNhbnZhcy5nZXRDb250ZXh0KCIyZCIpOworICAgIHZh
ciBkYXRhID0gY29udGV4dC5nZXRJbWFnZURhdGEoeCwgeSwgMSwgMSk7CisgICAgaWYgKCFkYXRh
KQorICAgICAgICByZXR1cm4gWy0xLCAtMSwgLTEsIC0xXTsKKworICAgIHZhciByZXN1bHQgPSBu
ZXcgQXJyYXkoZGF0YS5kYXRhLmxlbmd0aCkKKyAgICBmb3IgKHZhciBpID0gMDsgaSA8IGRhdGEu
ZGF0YS5sZW5ndGg7IGkrKykKKyAgICAgICAgcmVzdWx0W2ldID0gZGF0YS5kYXRhW2ldOworCisg
ICAgcmV0dXJuIHJlc3VsdDsKK30KKworZnVuY3Rpb24gY2hlY2tBcnJheVZhbHVlcyhhMSwgYTIs
IHRvbGVyYW5jZSkgeworICAgIGZvciAodmFyIGkgPSAwLCBsZW5ndGggPSBhMS5sZW5ndGg7IGkg
PCBsZW5ndGg7IGkrKykgeworICAgICAgICBpZiAoTWF0aC5hYnMoYTFbaV0gLSBhMltpXSkgPiB0
b2xlcmFuY2UpCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorICAgIHJldHVybiB0
cnVlOworfQorCitmdW5jdGlvbiBwaXhlbFNob3VsZEJlKGNhbnZhcywgeCwgeSwgY29sb3IsIHRv
bGVyYW5jZSkgeworICAgIHZhciBvdXRwdXQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJwIik7
CisgICAgdmFyIHZhbHVlID0gZ2V0UGl4ZWwoY2FudmFzLCB4LCB5KTsKKyAgICBpZiAoY2hlY2tB
cnJheVZhbHVlcyhjb2xvciwgdmFsdWUsIHRvbGVyYW5jZSkpCisgICAgICAgIG91dHB1dC5pbm5l
clRleHQgPSAiUEFTUzogUGl4ZWwgKCIgKyB4ICsgIiwgIiArIHkgKyAiKSB3YXMgY2xvc2UgdG8g
IiArIGNvbG9yOworICAgIGVsc2UKKyAgICAgICAgb3V0cHV0LmlubmVyVGV4dCA9ICJGQUlMOiBQ
aXhlbCAoIiArIHggKyAiLCAiICsgeSArICIpIHdhcyAiICsgdmFsdWUgKyAiLiBFeHBlY3RlZCAi
ICsgY29sb3I7CisgICAgZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZChvdXRwdXQpOworfQorCitm
dW5jdGlvbiBydW4oKSB7CisgICAgdmFyIGNhbnZhcyA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQo
ImNhbnZhcyIpOworICAgIGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQoY2FudmFzKTsKKyAgICBj
YW52YXMud2lkdGggPSA0MDA7CisgICAgY2FudmFzLmhlaWdodCA9IDQwMDsKKyAgICB2YXIgY3R4
ID0gY2FudmFzLmdldENvbnRleHQoIjJkIik7CisgICAgdmFyIGltZyA9IG5ldyBJbWFnZSgpCisg
ICAgaW1nLmFkZEV2ZW50TGlzdGVuZXIoImxvYWQiLCBmdW5jdGlvbigpIHsKKyAgICAgICAgY3R4
LmZpbGxTdHlsZSA9ICJyZWQiOworICAgICAgICBjdHguZmlsbFJlY3QoMCwgMCwgNDAwLCA0MDAp
OworICAgICAgICBjdHguZHJhd0ltYWdlKGltZywgMCwgMCwgNDAwLCA0MDApOworICAgICAgICBw
aXhlbFNob3VsZEJlKGNhbnZhcywgMTAsIDEwLCBbMjU1LCAwLCAwLCAyNTVdLCA1KTsKKyAgICAg
ICAgcGl4ZWxTaG91bGRCZShjYW52YXMsIDIwMCwgMjAwLCBbMCwgMjU1LCAwLCAyNTVdLCA1KTsK
KyAgICAgICAgcGl4ZWxTaG91bGRCZShjYW52YXMsIDM5MCwgMzkwLCBbMCwgMCwgMjU1LCAyNTVd
LCA1KTsKKworICAgICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKKyAgICAgICAgICAgdGVzdFJ1
bm5lci5ub3RpZnlEb25lKCk7CisgICAgfSwgZmFsc2UpCisgICAgaW1nLnNyYyA9ICJyZXNvdXJj
ZXMvaW1hZ2UtMzAwMHgzMDAwLmpwZyI7Cit9CisKK3dpbmRvdy5hZGRFdmVudExpc3RlbmVyKCJs
b2FkIiwgcnVuLCBmYWxzZSk7Cis8L3NjcmlwdD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zh
c3QvY2FudmFzL3Jlc291cmNlcy9pbWFnZS0zMDAweDMwMDAuanBnIGIvTGF5b3V0VGVzdHMvZmFz
dC9jYW52YXMvcmVzb3VyY2VzL2ltYWdlLTMwMDB4MzAwMC5qcGcKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYWFjNGFl
NzVhMjA0NTUxMjJlZTgzY2M3NjUxNGU4MzJhYzRkM2JmOQpHSVQgYmluYXJ5IHBhdGNoCmxpdGVy
YWwgMTA2NDkyCnpjbWVJeXYxXm9mOUxNcUJsZV5xcWElWForbFIhdjxRUzJsSShNMXFKM0tyQGo5
WHAyQjNldXNJKEJMQSgrTzJhYQp6RDBDXmgyeVMtRWtrI0dsV1FTSVlXYSVJOV54N2RJUktETTVs
PFZzdGtVYU94az40dkgtcHp+VmJ5QHg3K2dtcUYKenhwd1ZyOEkrP31eUzBEaVotNHBxY0J4OHRe
N3dLbyV8VGlDX3tLTTFke3U3ak9gY1RFdDglYU95NH4oPHc+TFo2CnpvOWopIWhKIypqRmRXVSM1
OWpBYzxJJXNiQG5+VWp5dHB1MFQzVExTVEgwNyZVKkZnfmR7ekJefEhTQ1Q+VWd9bQp6d288Ukc5
bHBgX25gVz1uZ1c8RWB2cmJpKW5ZIXhLUmtMM3tEXipuOy1SN1V+YGgmQG4maGR4NnskT3I9e0wk
b08KentodWV6JVFCayQ+UCszSyVhIXVyXnojcG9mQStoN24lViNVbSozejApPko/SjtwY18+dHVG
WlZedWhNc1J3dCtHCnooMyFfT0tlZjh7TjF4dCN4SFZOKloqYGYkcElkS1FVMz5WISR2PHttZWRK
VWZuel4pbFh8PkliMVNuQXdwY3FKaQp6Vmpsc0RlRlB9PkRGUEcmMn5nfUtLKFVWaSNYYlUqX3l8
eDhCdFdyYDBMNEI2bD11aXgzP3g5WWp7d0MhMCtqZCYKelB6KXFNdjV4QDdKXzN+WjJ2N19wSyhV
VmkjWGJVKl95fHg4QnRXcmAwTDRCNmw9dWl4Mz94OVlqe3dDITAramQmCnpQeilxTXY1eEA3Sl8z
floydjdfcEsoVVZpI1hiVSpfeXx4OEJ0V3JgMEw0RTQqOG45ZC1YPWhSMDA5Qzcyb05BWgp6ZkIq
cGsxUEJseUshNS1OMHQ1JlVBVjdjczBSalhGNUZrSyswMDlDNzJvTkFaZkIqcGsxUEJseUshNS1O
MHQ1JlUKekFWN2NzMFJqWEY1RmtLKzAwOUM3Mm9OQVpmQipwazFQQmx5SyE1LU4wdDUmVUFWN2Nz
MFJqWEY1RmtLKzAwOUM3Cnoyb05BWmZCKnBrMVBCbHlLITUtTjB0NSZVQVY3Y3MwUmpYRjVGa0sr
MDA5Qzcyb05BWmZCKnBrMVBCbHlLITUtTgp6MHQ1JlVBVjdjczBSalhGNUZrSyswMDlDNzJvTkFa
ZkIqcGsxUEJseUshNS1OMHQ1JlVBVjdjczBSalhGNUZrSysKejAwOUM3Mm9OQVpmQipwazFQQmx5
SyE1LU4wdDUmVUFWN2NzMFJqWEY1RmtLKzAwOUM3Mm9OQVpmQipwazFQQmx5CnpLITUtTjB0NSZV
QVY3Y3MwUmpYRjVGa0srMDA5Qzcyb05BWmZCKnBrMVBCbHlLITUtTjB0NSZVQVY3Y3MwUmpYRgp6
NUZrSyswMDlDNzJvTkFaZldaNEsmXmRTVSRLVHJnZnpfa1cmdEpkVz1IenNweCR4S2FsVCZUM3dE
I1QzQHwhalgKenJ8WE9YQ0kzJFlpaCZGJF85K0d3MH50ezRWP2M/STBWT35SNmF5Smg/NHYtNWp7
ems+M0tSbndRMCR7WGlIYHYjCnpLbmZIQzhCcHdfSyM3azVCfHIpazB+dHs0cWQ8dnwwVk9+UjZh
eUpoPzR2LTVqe3prPjNLUm53UTAke1hpSGB2Iwp6S25mSEM4QnB3X0sjN2s1QnxyKWswfnR7NHFk
PHZ8MFZPflI2YXlKaD80di01ant6az4zS1Jud1EwJHtYaUhgdiMKTEsmPWIzKzVHeDleZlMtVQoK
bGl0ZXJhbCAwCkhjbVY/ZDAwMDAxCgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9jYW52
YXMvd2ViZ2wvcmVzb3VyY2VzL3RleC1pbWFnZS1hbmQtc3ViLWltYWdlLTJkLXdpdGgtcG90ZW50
aWFsbHktc3Vic2FtcGxlZC1pbWFnZS5qcyBiL0xheW91dFRlc3RzL2Zhc3QvY2FudmFzL3dlYmds
L3Jlc291cmNlcy90ZXgtaW1hZ2UtYW5kLXN1Yi1pbWFnZS0yZC13aXRoLXBvdGVudGlhbGx5LXN1
YnNhbXBsZWQtaW1hZ2UuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOThkNGIwOGYwMmIyODhhNTFlM2NhODQxMmRm
MzRjNjRlY2RiOTEzNAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvY2FudmFz
L3dlYmdsL3Jlc291cmNlcy90ZXgtaW1hZ2UtYW5kLXN1Yi1pbWFnZS0yZC13aXRoLXBvdGVudGlh
bGx5LXN1YnNhbXBsZWQtaW1hZ2UuanMKQEAgLTAsMCArMSw5MyBAQAorZnVuY3Rpb24gZ2VuZXJh
dGVUZXN0KHBpeGVsRm9ybWF0LCBwaXhlbFR5cGUsIHBhdGhUb1Rlc3RSb290LCBwcm9sb2d1ZSkg
eworICAgIHZhciB3dHUgPSBXZWJHTFRlc3RVdGlsczsKKyAgICB2YXIgZ2wgPSBudWxsOworICAg
IHZhciB0ZXh0dXJlTG9jID0gbnVsbDsKKyAgICB2YXIgc3VjY2Vzc2Z1bGx5UGFyc2VkID0gZmFs
c2U7CisgICAgdmFyIGltZ0NhbnZhczsKKyAgICB2YXIgcmVkID0gWzI1NSwgMCwgMF07CisgICAg
dmFyIGdyZWVuID0gWzAsIDI1NSwgMF07CisgICAgdmFyIGJsdWUgPSBbMCwgMCwgMjU1XTsKKwor
ICAgIHZhciBpbml0ID0gZnVuY3Rpb24oKQorICAgIHsKKyAgICAgICAgaWYgKHdpbmRvdy5pbml0
Tm9uS2hyb25vc0ZyYW1ld29yaykgeworICAgICAgICAgICAgd2luZG93LmluaXROb25LaHJvbm9z
RnJhbWV3b3JrKHRydWUpOworICAgICAgICB9CisKKyAgICAgICAgZGVzY3JpcHRpb24oJ1Zlcmlm
eSB0ZXhJbWFnZTJEIGFuZCB0ZXhTdWJJbWFnZTJEIGNvZGUgcGF0aHMgd2l0aCBwb3RlbnRpYWxs
eSBzdWJzYW1wbGVkIGltYWdlcyAoJyArIHBpeGVsRm9ybWF0ICsgJy8nICsgcGl4ZWxUeXBlICsg
JyknKTsKKworICAgICAgICBnbCA9IHd0dS5jcmVhdGUzRENvbnRleHQoImV4YW1wbGUiKTsKKwor
ICAgICAgICBpZiAoIXByb2xvZ3VlKGdsKSkgeworICAgICAgICAgICAgZmluaXNoVGVzdCgpOwor
ICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisKKyAgICAgICAgdmFyIHByb2dyYW0gPSB3
dHUuc2V0dXBUZXh0dXJlZFF1YWQoZ2wpOworCisgICAgICAgIGdsLmNsZWFyQ29sb3IoMCwwLDAs
MSk7CisgICAgICAgIGdsLmNsZWFyRGVwdGgoMSk7CisKKyAgICAgICAgdGV4dHVyZUxvYyA9IGds
LmdldFVuaWZvcm1Mb2NhdGlvbihwcm9ncmFtLCAidGV4Iik7CisKKyAgICAgICAgd3R1LmxvYWRU
ZXh0dXJlKGdsLCBwYXRoVG9UZXN0Um9vdCArICIvLi4vcmVzb3VyY2VzL2ltYWdlLTMwMDB4MzAw
MC5qcGciLCBydW5UZXN0KTsKKyAgICB9CisKKyAgICBmdW5jdGlvbiBydW5PbmVJdGVyYXRpb24o
aW1hZ2UsIHVzZVRleFN1YkltYWdlMkQsIGZsaXBZLCB0b3BDb2xvciwgbWlkZGxlQ29sb3IsIGJv
dHRvbUNvbG9yKQorICAgIHsKKyAgICAgICAgZGVidWcoJ1Rlc3RpbmcgJyArICh1c2VUZXhTdWJJ
bWFnZTJEID8gJ3RleFN1YkltYWdlMkQnIDogJ3RleEltYWdlMkQnKSArCisgICAgICAgICAgICAg
ICcgd2l0aCBmbGlwWT0nICsgZmxpcFkpOworICAgICAgICBnbC5jbGVhcihnbC5DT0xPUl9CVUZG
RVJfQklUIHwgZ2wuREVQVEhfQlVGRkVSX0JJVCk7CisgICAgICAgIHZhciB0ZXh0dXJlID0gZ2wu
Y3JlYXRlVGV4dHVyZSgpOworICAgICAgICAvLyBCaW5kIHRoZSB0ZXh0dXJlIHRvIHRleHR1cmUg
dW5pdCAwCisgICAgICAgIGdsLmJpbmRUZXh0dXJlKGdsLlRFWFRVUkVfMkQsIHRleHR1cmUpOwor
ICAgICAgICAvLyBTZXQgdXAgdGV4dHVyZSBwYXJhbWV0ZXJzCisgICAgICAgIGdsLnRleFBhcmFt
ZXRlcmkoZ2wuVEVYVFVSRV8yRCwgZ2wuVEVYVFVSRV9NSU5fRklMVEVSLCBnbC5ORUFSRVNUKTsK
KyAgICAgICAgZ2wudGV4UGFyYW1ldGVyaShnbC5URVhUVVJFXzJELCBnbC5URVhUVVJFX01BR19G
SUxURVIsIGdsLk5FQVJFU1QpOworICAgICAgICBnbC50ZXhQYXJhbWV0ZXJpKGdsLlRFWFRVUkVf
MkQsIGdsLlRFWFRVUkVfV1JBUF9TLCBnbC5DTEFNUF9UT19FREdFKTsKKyAgICAgICAgZ2wudGV4
UGFyYW1ldGVyaShnbC5URVhUVVJFXzJELCBnbC5URVhUVVJFX1dSQVBfVCwgZ2wuQ0xBTVBfVE9f
RURHRSk7CisgICAgICAgIC8vIFNldCB1cCBwaXhlbCBzdG9yZSBwYXJhbWV0ZXJzCisgICAgICAg
IGdsLnBpeGVsU3RvcmVpKGdsLlVOUEFDS19GTElQX1lfV0VCR0wsIGZsaXBZKTsKKyAgICAgICAg
Z2wucGl4ZWxTdG9yZWkoZ2wuVU5QQUNLX1BSRU1VTFRJUExZX0FMUEhBX1dFQkdMLCBmYWxzZSk7
CisgICAgICAgIGdsLnBpeGVsU3RvcmVpKGdsLlVOUEFDS19DT0xPUlNQQUNFX0NPTlZFUlNJT05f
V0VCR0wsIGdsLk5PTkUpOworICAgICAgICAvLyBVcGxvYWQgdGhlIGltYWdlIGludG8gdGhlIHRl
eHR1cmUKKyAgICAgICAgaWYgKHVzZVRleFN1YkltYWdlMkQpIHsKKyAgICAgICAgICAgIC8vIElu
aXRpYWxpemUgdGhlIHRleHR1cmUgdG8gYmxhY2sgZmlyc3QKKyAgICAgICAgICAgIGdsLnRleElt
YWdlMkQoZ2wuVEVYVFVSRV8yRCwgMCwgZ2xbcGl4ZWxGb3JtYXRdLCBpbWFnZS53aWR0aCwgaW1h
Z2UuaGVpZ2h0LCAwLAorICAgICAgICAgICAgICAgICAgICAgICAgICBnbFtwaXhlbEZvcm1hdF0s
IGdsW3BpeGVsVHlwZV0sIG51bGwpOworICAgICAgICAgICAgZ2wudGV4U3ViSW1hZ2UyRChnbC5U
RVhUVVJFXzJELCAwLCAwLCAwLCBnbFtwaXhlbEZvcm1hdF0sIGdsW3BpeGVsVHlwZV0sIGltYWdl
KTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIGdsLnRleEltYWdlMkQoZ2wuVEVYVFVS
RV8yRCwgMCwgZ2xbcGl4ZWxGb3JtYXRdLCBnbFtwaXhlbEZvcm1hdF0sIGdsW3BpeGVsVHlwZV0s
IGltYWdlKTsKKyAgICAgICAgfQorCisgICAgICAgIC8vIFBvaW50IHRoZSB1bmlmb3JtIHNhbXBs
ZXIgdG8gdGV4dHVyZSB1bml0IDAKKyAgICAgICAgZ2wudW5pZm9ybTFpKHRleHR1cmVMb2MsIDAp
OworICAgICAgICAvLyBEcmF3IHRoZSB0cmlhbmdsZXMKKyAgICAgICAgd3R1LmRyYXdRdWFkKGds
LCBbMCwgMCwgMCwgMjU1XSk7CisKKyAgICAgICAgLy8gQ2hlY2sgdGhlIHBpeGVscyBhdCB0aGUg
dG9wIGxlZnQsIG1pZGRsZSBhbmQgYm90dG9tIHJpZ2h0LgorCisgICAgICAgIGRlYnVnKCJDaGVj
a2luZyB1cHBlciBsZWZ0IGNvcm5lciIpOworICAgICAgICB3dHUuY2hlY2tDYW52YXNSZWN0KGds
LCAyLCBnbC5jYW52YXMuaGVpZ2h0IC0gMiwgMSwgMSwgdG9wQ29sb3IsICJzaG91bGRCZSAiICsg
dG9wQ29sb3IsIDUpOworICAgICAgICBkZWJ1ZygiQ2hlY2tpbmcgbWlkZGxlIik7CisgICAgICAg
IHd0dS5jaGVja0NhbnZhc1JlY3QoZ2wsIGdsLmNhbnZhcy53aWR0aCAvIDIsIGdsLmNhbnZhcy5o
ZWlnaHQgLyAyLCAxLCAxLCBtaWRkbGVDb2xvciwgInNob3VsZEJlICIgKyBtaWRkbGVDb2xvciwg
NSk7CisgICAgICAgIGRlYnVnKCJDaGVja2luZyBib3R0b20gcmlnaHQgY29ybmVyIik7CisgICAg
ICAgIHd0dS5jaGVja0NhbnZhc1JlY3QoZ2wsIGdsLmNhbnZhcy53aWR0aCAtIDIsIDIsIDEsIDEs
IGJvdHRvbUNvbG9yLCAic2hvdWxkQmUgIiArIGJvdHRvbUNvbG9yLCA1KTsKKyAgICB9CisKKyAg
ICBmdW5jdGlvbiBydW5UZXN0T25JbWFnZShpbWFnZSkgeworICAgICAgICBydW5PbmVJdGVyYXRp
b24oaW1hZ2UsIGZhbHNlLCB0cnVlLCByZWQsIGdyZWVuLCBibHVlKTsKKyAgICAgICAgcnVuT25l
SXRlcmF0aW9uKGltYWdlLCBmYWxzZSwgZmFsc2UsIGdyZWVuLCBncmVlbiwgZ3JlZW4pOworICAg
ICAgICBydW5PbmVJdGVyYXRpb24oaW1hZ2UsIHRydWUsIHRydWUsIHJlZCwgZ3JlZW4sIGJsdWUp
OworICAgICAgICBydW5PbmVJdGVyYXRpb24oaW1hZ2UsIHRydWUsIGZhbHNlLCBncmVlbiwgZ3Jl
ZW4sIGdyZWVuKTsKKyAgICB9CisKKyAgICBmdW5jdGlvbiBydW5UZXN0KGltYWdlKQorICAgIHsK
KyAgICAgICAgcnVuVGVzdE9uSW1hZ2UoaW1hZ2UpOworICAgICAgICBnbEVycm9yU2hvdWxkQmUo
Z2wsIGdsLk5PX0VSUk9SLCAic2hvdWxkIGJlIG5vIGVycm9ycyIpOworICAgICAgICBmaW5pc2hU
ZXN0KCk7CisgICAgfQorCisgICAgcmV0dXJuIGluaXQ7Cit9CmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9mYXN0L2NhbnZhcy93ZWJnbC90ZXgtaW1hZ2UtYW5kLXN1Yi1pbWFnZS0yZC13aXRoLXBv
dGVudGlhbGx5LXN1YnNhbXBsZWQtaW1hZ2UtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvZmFz
dC9jYW52YXMvd2ViZ2wvdGV4LWltYWdlLWFuZC1zdWItaW1hZ2UtMmQtd2l0aC1wb3RlbnRpYWxs
eS1zdWJzYW1wbGVkLWltYWdlLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi41M2VhZDM0OTI0Mzlh
ODc3NDZlMTBhOWFhZWU1ZWFmODFmNmJlZDNjCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVz
dHMvZmFzdC9jYW52YXMvd2ViZ2wvdGV4LWltYWdlLWFuZC1zdWItaW1hZ2UtMmQtd2l0aC1wb3Rl
bnRpYWxseS1zdWJzYW1wbGVkLWltYWdlLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDM3IEBACitW
ZXJpZnkgdGV4SW1hZ2UyRCBhbmQgdGV4U3ViSW1hZ2UyRCBjb2RlIHBhdGhzIHdpdGggcG90ZW50
aWFsbHkgc3Vic2FtcGxlZCBpbWFnZXMgKFJHQkEvVU5TSUdORURfQllURSkKKworT24gc3VjY2Vz
cywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkg
IlRFU1QgQ09NUExFVEUiLgorCitUZXN0aW5nIHRleEltYWdlMkQgd2l0aCBmbGlwWT10cnVlCitD
aGVja2luZyB1cHBlciBsZWZ0IGNvcm5lcgorUEFTUyBzaG91bGRCZSAyNTUsMCwwCitDaGVja2lu
ZyBtaWRkbGUKK1BBU1Mgc2hvdWxkQmUgMCwyNTUsMAorQ2hlY2tpbmcgYm90dG9tIHJpZ2h0IGNv
cm5lcgorUEFTUyBzaG91bGRCZSAwLDAsMjU1CitUZXN0aW5nIHRleEltYWdlMkQgd2l0aCBmbGlw
WT1mYWxzZQorQ2hlY2tpbmcgdXBwZXIgbGVmdCBjb3JuZXIKK1BBU1Mgc2hvdWxkQmUgMCwyNTUs
MAorQ2hlY2tpbmcgbWlkZGxlCitQQVNTIHNob3VsZEJlIDAsMjU1LDAKK0NoZWNraW5nIGJvdHRv
bSByaWdodCBjb3JuZXIKK1BBU1Mgc2hvdWxkQmUgMCwyNTUsMAorVGVzdGluZyB0ZXhTdWJJbWFn
ZTJEIHdpdGggZmxpcFk9dHJ1ZQorQ2hlY2tpbmcgdXBwZXIgbGVmdCBjb3JuZXIKK1BBU1Mgc2hv
dWxkQmUgMjU1LDAsMAorQ2hlY2tpbmcgbWlkZGxlCitQQVNTIHNob3VsZEJlIDAsMjU1LDAKK0No
ZWNraW5nIGJvdHRvbSByaWdodCBjb3JuZXIKK1BBU1Mgc2hvdWxkQmUgMCwwLDI1NQorVGVzdGlu
ZyB0ZXhTdWJJbWFnZTJEIHdpdGggZmxpcFk9ZmFsc2UKK0NoZWNraW5nIHVwcGVyIGxlZnQgY29y
bmVyCitQQVNTIHNob3VsZEJlIDAsMjU1LDAKK0NoZWNraW5nIG1pZGRsZQorUEFTUyBzaG91bGRC
ZSAwLDI1NSwwCitDaGVja2luZyBib3R0b20gcmlnaHQgY29ybmVyCitQQVNTIHNob3VsZEJlIDAs
MjU1LDAKK1BBU1MgZ2V0RXJyb3Igd2FzIGV4cGVjdGVkIHZhbHVlOiBOT19FUlJPUiA6IHNob3Vs
ZCBiZSBubyBlcnJvcnMKK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBD
T01QTEVURQorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2NhbnZhcy93ZWJnbC90ZXgt
aW1hZ2UtYW5kLXN1Yi1pbWFnZS0yZC13aXRoLXBvdGVudGlhbGx5LXN1YnNhbXBsZWQtaW1hZ2Uu
aHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvY2FudmFzL3dlYmdsL3RleC1pbWFnZS1hbmQtc3ViLWlt
YWdlLTJkLXdpdGgtcG90ZW50aWFsbHktc3Vic2FtcGxlZC1pbWFnZS5odG1sCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjJlMDI0NGQzNzc5MmVjNjZhODBjNTQ3YmE4YmUzMzI3OTU5YWIzOGUKLS0tIC9kZXYvbnVsbAor
KysgYi9MYXlvdXRUZXN0cy9mYXN0L2NhbnZhcy93ZWJnbC90ZXgtaW1hZ2UtYW5kLXN1Yi1pbWFn
ZS0yZC13aXRoLXBvdGVudGlhbGx5LXN1YnNhbXBsZWQtaW1hZ2UuaHRtbApAQCAtMCwwICsxLDIw
IEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8bWV0YSBjaGFyc2V0PSJ1dGYt
OCI+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3Nj
cmlwdD4KKzxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvd2ViZ2wtdGVzdC5qcyI+PC9zY3JpcHQ+Cis8
c2NyaXB0IHNyYz0icmVzb3VyY2VzL3dlYmdsLXRlc3QtdXRpbHMuanMiPjwvc2NyaXB0PgorPHNj
cmlwdCBzcmM9InJlc291cmNlcy90ZXgtaW1hZ2UtYW5kLXN1Yi1pbWFnZS0yZC13aXRoLXBvdGVu
dGlhbGx5LXN1YnNhbXBsZWQtaW1hZ2UuanMiPjwvc2NyaXB0PgorPHNjcmlwdD4KK2Z1bmN0aW9u
IHRlc3RQcm9sb2d1ZShnbCkgeworICAgIHJldHVybiB0cnVlOworfQorPC9zY3JpcHQ+Cis8L2hl
YWQ+Cis8Ym9keSBvbmxvYWQ9J2dlbmVyYXRlVGVzdCgiUkdCQSIsICJVTlNJR05FRF9CWVRFIiwg
Ii4iLCB0ZXN0UHJvbG9ndWUpKCknPgorPGNhbnZhcyBpZD0iZXhhbXBsZSIgd2lkdGg9IjIwMHB4
IiBoZWlnaHQ9IjIwMHB4Ij48L2NhbnZhcz4KKzxkaXYgaWQ9ImRlc2NyaXB0aW9uIj48L2Rpdj4K
KzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorPC9ib2R5PgorPC9odG1sPgo=
</data>
<flag name="review"
          id="258738"
          type_id="1"
          status="+"
          setter="thorton"
    />
          </attachment>
      

    </bug>

</bugzilla>