<?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>35445</bug_id>
          
          <creation_ts>2010-02-26 12:34:56 -0800</creation_ts>
          <short_desc>[OpenVG] Convert from TransformationMatrix to AffineTransform</short_desc>
          <delta_ts>2010-03-01 07:52:26 -0800</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>Other</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>
          <dependson>35444</dependson>
          <blocked>33987</blocked>
    
    <blocked>34366</blocked>
          <everconfirmed>0</everconfirmed>
          <reporter name="Jakob Petsovits">jpetsovits</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>194219</commentid>
    <comment_count>0</comment_count>
    <who name="Jakob Petsovits">jpetsovits</who>
    <bug_when>2010-02-26 12:34:56 -0800</bug_when>
    <thetext>[OpenVG] Convert from TransformationMatrix to AffineTransform</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>194221</commentid>
    <comment_count>1</comment_count>
      <attachid>49615</attachid>
    <who name="Jakob Petsovits">jpetsovits</who>
    <bug_when>2010-02-26 12:35:30 -0800</bug_when>
    <thetext>Created attachment 49615
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>194223</commentid>
    <comment_count>2</comment_count>
    <who name="Jakob Petsovits">jpetsovits</who>
    <bug_when>2010-02-26 12:42:09 -0800</bug_when>
    <thetext>krit&apos;s commit changed most of the graphics platform layer to operate with the new AffineTransform instead of TransformationMatrix. That patch did not, however, update the OpenVG backend - which is fair enough, as there&apos;s currently no publicly available way to build it.

This patch converts the already upstreamed parts of the OpenVG backend to use AffineTransform. krit said he&apos;d get mapQuad() into AffineTransform too (that was originally left out), until that happens, I&apos;ve got a private static function doing the same thing. We can clean it out afterwards.

Please review!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>194232</commentid>
    <comment_count>3</comment_count>
      <attachid>49615</attachid>
    <who name="Nikolas Zimmermann">zimmermann</who>
    <bug_when>2010-02-26 12:59:38 -0800</bug_when>
    <thetext>Comment on attachment 49615
Patch

Patch looks fine, r=me.

&gt; diff --git a/WebCore/ChangeLog b/WebCore/ChangeLog
&gt; index cd85ac2..d539832 100644
&gt; --- a/WebCore/ChangeLog
&gt; +++ b/WebCore/ChangeLog
&gt; @@ -1,3 +1,36 @@
&gt; +2010-02-26  Jakob Petsovits  &lt;jpetsovits@rim.com&gt;
&gt; +
&gt; +        Reviewed by NOBODY (OOPS!).
&gt; +
&gt; +        [OpenVG] Convert from TransformationMatrix to AffineTransform.
&gt; +

the ChangeLog is missing a bug number and a good explainatain to why this is done.
It shouldn&apos;t be necessary to look in the bug to get that information :-)

Please fix before landing.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>194246</commentid>
    <comment_count>4</comment_count>
      <attachid>49627</attachid>
    <who name="Jakob Petsovits">jpetsovits</who>
    <bug_when>2010-02-26 13:05:05 -0800</bug_when>
    <thetext>Created attachment 49627
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>194247</commentid>
    <comment_count>5</comment_count>
    <who name="Jakob Petsovits">jpetsovits</who>
    <bug_when>2010-02-26 13:06:05 -0800</bug_when>
    <thetext>New patch (above), with bug URL in the commit message and private mapQuad() copy removed, instead we depend on bug 35444 to add mapQuad() directly to AffineTransform. Yay.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>194299</commentid>
    <comment_count>6</comment_count>
      <attachid>49627</attachid>
    <who name="Nikolas Zimmermann">zimmermann</who>
    <bug_when>2010-02-26 14:26:17 -0800</bug_when>
    <thetext>Comment on attachment 49627
Patch

Great, r=me.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>194704</commentid>
    <comment_count>7</comment_count>
    <who name="Jakob Petsovits">jpetsovits</who>
    <bug_when>2010-03-01 07:52:26 -0800</bug_when>
    <thetext>Committed r55369: &lt;http://trac.webkit.org/changeset/55369&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>49615</attachid>
            <date>2010-02-26 12:35:30 -0800</date>
            <delta_ts>2010-02-26 13:05:02 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-35445-20100226153528.patch</filename>
            <type>text/plain</type>
            <size>16327</size>
            <attacher name="Jakob Petsovits">jpetsovits</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
Y2Q4NWFjMi4uZDUzOTgzMiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvV2Vi
Q29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwzNiBAQAorMjAxMC0wMi0yNiAgSmFrb2IgUGV0c292
aXRzICA8anBldHNvdml0c0ByaW0uY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgIFtPcGVuVkddIENvbnZlcnQgZnJvbSBUcmFuc2Zvcm1hdGlvbk1h
dHJpeCB0byBBZmZpbmVUcmFuc2Zvcm0uCisKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9v
cGVudmcvR3JhcGhpY3NDb250ZXh0T3BlblZHLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBo
aWNzQ29udGV4dDo6Z2V0Q1RNKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6
cm91bmRUb0RldmljZVBpeGVscyk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6
Om9yaWdpbik6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6OmNvbmNhdENUTSk6
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbnZnL1BhaW50ZXJPcGVuVkcuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6bWFwUXVhZCk6CisgICAgICAgIChXZWJDb3JlOjppc05vblJvdGF0
ZWRBZmZpbmVUcmFuc2Zvcm1hdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpQbGF0Zm9ybVBhaW50
ZXJTdGF0ZTo6UGxhdGZvcm1QYWludGVyU3RhdGUpOgorICAgICAgICAoV2ViQ29yZTo6UGxhdGZv
cm1QYWludGVyU3RhdGU6OmFwcGx5U3RhdGUpOgorICAgICAgICAoV2ViQ29yZTo6UGxhdGZvcm1Q
YWludGVyU3RhdGU6OmFwcGx5VHJhbnNmb3JtYXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6UGFp
bnRlck9wZW5WRzo6dHJhbnNmb3JtYXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6UGFpbnRlck9w
ZW5WRzo6Y29uY2F0VHJhbnNmb3JtYXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6UGFpbnRlck9w
ZW5WRzo6c2V0VHJhbnNmb3JtYXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6UGFpbnRlck9wZW5W
Rzo6c2NhbGUpOgorICAgICAgICAoV2ViQ29yZTo6UGFpbnRlck9wZW5WRzo6cm90YXRlKToKKyAg
ICAgICAgKFdlYkNvcmU6OlBhaW50ZXJPcGVuVkc6OnRyYW5zbGF0ZSk6CisgICAgICAgIChXZWJD
b3JlOjpQYWludGVyT3BlblZHOjppbnRlcnNlY3RDbGlwUmVjdCk6CisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3Mvb3BlbnZnL1BhaW50ZXJPcGVuVkcuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy9vcGVudmcvVkdVdGlscy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpWR01hdHJpeDo6
VkdNYXRyaXgpOgorICAgICAgICAoV2ViQ29yZTo6VkdNYXRyaXg6Om9wZXJhdG9yIEFmZmluZVRy
YW5zZm9ybSk6CisgICAgICAgIChXZWJDb3JlOjpWR01hdHJpeDo6b3BlcmF0b3IgVHJhbnNmb3Jt
YXRpb25NYXRyaXgpOgorICAgICAgICAoV2ViQ29yZTo6QWZmaW5lVHJhbnNmb3JtOjpvcGVyYXRv
ciBWR01hdHJpeCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbnZnL1ZHVXRpbHMu
aDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy90cmFuc2Zvcm1zL0FmZmluZVRyYW5zZm9y
bS5oOgorCiAyMDEwLTAyLTIzICBCcmFkeSBFaWRzb24gIDxiZWlkc29uQGFwcGxlLmNvbT4KIAog
ICAgICAgICBSZXZpZXdlZCBieSBUaW0gSGF0Y2hlciBhbmQgUGF2ZWwgRmVsZG1hbi4KZGlmZiAt
LWdpdCBhL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbnZnL0dyYXBoaWNzQ29udGV4dE9w
ZW5WRy5jcHAgYi9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW52Zy9HcmFwaGljc0NvbnRl
eHRPcGVuVkcuY3BwCmluZGV4IDVlZDg5MmMuLjkwOWZhMjcgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbnZnL0dyYXBoaWNzQ29udGV4dE9wZW5WRy5jcHAKKysrIGIv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVudmcvR3JhcGhpY3NDb250ZXh0T3BlblZHLmNw
cApAQCAtMjAsMTEgKzIwLDExIEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiR3Jh
cGhpY3NDb250ZXh0LmgiCiAKKyNpbmNsdWRlICJBZmZpbmVUcmFuc2Zvcm0uaCIKICNpbmNsdWRl
ICJHcmFwaGljc0NvbnRleHRQcml2YXRlLmgiCiAjaW5jbHVkZSAiTm90SW1wbGVtZW50ZWQuaCIK
ICNpbmNsdWRlICJQYWludGVyT3BlblZHLmgiCiAjaW5jbHVkZSAiU3VyZmFjZU9wZW5WRy5oIgot
I2luY2x1ZGUgIlRyYW5zZm9ybWF0aW9uTWF0cml4LmgiCiAKICNpbmNsdWRlIDx3dGYvQXNzZXJ0
aW9ucy5oPgogI2luY2x1ZGUgPHd0Zi9NYXRoRXh0cmFzLmg+CkBAIC02OSwxMiArNjksMTIgQEAg
UGxhdGZvcm1HcmFwaGljc0NvbnRleHQqIEdyYXBoaWNzQ29udGV4dDo6cGxhdGZvcm1Db250ZXh0
KCkgY29uc3QKICAgICByZXR1cm4gbV9kYXRhLT5iYXNlU3VyZmFjZSgpOwogfQogCi1UcmFuc2Zv
cm1hdGlvbk1hdHJpeCBHcmFwaGljc0NvbnRleHQ6OmdldENUTSgpIGNvbnN0CitBZmZpbmVUcmFu
c2Zvcm0gR3JhcGhpY3NDb250ZXh0OjpnZXRDVE0oKSBjb25zdAogewogICAgIGlmIChwYWludGlu
Z0Rpc2FibGVkKCkpCi0gICAgICAgIHJldHVybiBUcmFuc2Zvcm1hdGlvbk1hdHJpeCgpOworICAg
ICAgICByZXR1cm4gQWZmaW5lVHJhbnNmb3JtKCk7CiAKLSAgICByZXR1cm4gbV9kYXRhLT50cmFu
c2Zvcm1hdGlvbk1hdHJpeCgpOworICAgIHJldHVybiBtX2RhdGEtPnRyYW5zZm9ybWF0aW9uKCk7
CiB9CiAKIHZvaWQgR3JhcGhpY3NDb250ZXh0OjpzYXZlUGxhdGZvcm1TdGF0ZSgpCkBAIC0yODEs
NyArMjgxLDcgQEAgRmxvYXRSZWN0IEdyYXBoaWNzQ29udGV4dDo6cm91bmRUb0RldmljZVBpeGVs
cyhjb25zdCBGbG9hdFJlY3QmIHJlY3QpCiAgICAgaWYgKHBhaW50aW5nRGlzYWJsZWQoKSkKICAg
ICAgICAgcmV0dXJuIEZsb2F0UmVjdCgpOwogCi0gICAgcmV0dXJuIEZsb2F0UmVjdChlbmNsb3Np
bmdJbnRSZWN0KG1fZGF0YS0+dHJhbnNmb3JtYXRpb25NYXRyaXgoKS5tYXBSZWN0KHJlY3QpKSk7
CisgICAgcmV0dXJuIEZsb2F0UmVjdChlbmNsb3NpbmdJbnRSZWN0KG1fZGF0YS0+dHJhbnNmb3Jt
YXRpb24oKS5tYXBSZWN0KHJlY3QpKSk7CiB9CiAKIHZvaWQgR3JhcGhpY3NDb250ZXh0OjpzZXRQ
bGF0Zm9ybVNoYWRvdyhjb25zdCBJbnRTaXplJiBzaXplLCBpbnQgYmx1ciwgY29uc3QgQ29sb3Im
IGNvbG9yLCBDb2xvclNwYWNlIGNvbG9yU3BhY2UpCkBAIC00NTEsOCArNDUxLDggQEAgSW50UG9p
bnQgR3JhcGhpY3NDb250ZXh0OjpvcmlnaW4oKQogICAgIGlmIChwYWludGluZ0Rpc2FibGVkKCkp
CiAgICAgICAgIHJldHVybiBJbnRQb2ludCgpOwogCi0gICAgVHJhbnNmb3JtYXRpb25NYXRyaXgg
bWF0cml4ID0gbV9kYXRhLT50cmFuc2Zvcm1hdGlvbk1hdHJpeCgpOwotICAgIHJldHVybiBJbnRQ
b2ludChyb3VuZGYobWF0cml4Lm00MSgpKSwgcm91bmRmKG1hdHJpeC5tNDIoKSkpOworICAgIEFm
ZmluZVRyYW5zZm9ybSB0cmFuc2Zvcm1hdGlvbiA9IG1fZGF0YS0+dHJhbnNmb3JtYXRpb24oKTsK
KyAgICByZXR1cm4gSW50UG9pbnQocm91bmRmKHRyYW5zZm9ybWF0aW9uLmUoKSksIHJvdW5kZih0
cmFuc2Zvcm1hdGlvbi5mKCkpKTsKIH0KIAogdm9pZCBHcmFwaGljc0NvbnRleHQ6OmNsaXBPdXQo
Y29uc3QgSW50UmVjdCYgcmVjdCkKQEAgLTQ5MywxMiArNDkzLDEyIEBAIHZvaWQgR3JhcGhpY3ND
b250ZXh0OjphZGRJbm5lclJvdW5kZWRSZWN0Q2xpcChjb25zdCBJbnRSZWN0JiByZWN0LCBpbnQg
dGhpY2tuZXNzCiAgICAgVU5VU0VEX1BBUkFNKHRoaWNrbmVzcyk7CiB9CiAKLXZvaWQgR3JhcGhp
Y3NDb250ZXh0Ojpjb25jYXRDVE0oY29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXgmIHRyYW5zZm9y
bSkKK3ZvaWQgR3JhcGhpY3NDb250ZXh0Ojpjb25jYXRDVE0oY29uc3QgQWZmaW5lVHJhbnNmb3Jt
JiB0cmFuc2Zvcm1hdGlvbikKIHsKICAgICBpZiAocGFpbnRpbmdEaXNhYmxlZCgpKQogICAgICAg
ICByZXR1cm47CiAKLSAgICBtX2RhdGEtPmNvbmNhdFRyYW5zZm9ybWF0aW9uTWF0cml4KHRyYW5z
Zm9ybSk7CisgICAgbV9kYXRhLT5jb25jYXRUcmFuc2Zvcm1hdGlvbih0cmFuc2Zvcm1hdGlvbik7
CiB9CiAKIHZvaWQgR3JhcGhpY3NDb250ZXh0OjpzZXRVUkxGb3JSZWN0KGNvbnN0IEtVUkwmIGxp
bmssIGNvbnN0IEludFJlY3QmIGRlc3RSZWN0KQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9vcGVudmcvUGFpbnRlck9wZW5WRy5jcHAgYi9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL29wZW52Zy9QYWludGVyT3BlblZHLmNwcAppbmRleCAzYjdjZjg1Li5iMzhhNDNkIDEw
MDY0NAotLS0gYS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW52Zy9QYWludGVyT3BlblZH
LmNwcAorKysgYi9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW52Zy9QYWludGVyT3BlblZH
LmNwcApAQCAtMjAsNiArMjAsNyBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIlBh
aW50ZXJPcGVuVkcuaCIKIAorI2luY2x1ZGUgIkFmZmluZVRyYW5zZm9ybS5oIgogI2luY2x1ZGUg
IkNvbG9yLmgiCiAjaW5jbHVkZSAiRGFzaEFycmF5LmgiCiAjaW5jbHVkZSAiRmxvYXRQb2ludC5o
IgpAQCAtMjksNyArMzAsNiBAQAogI2luY2x1ZGUgIkludFNpemUuaCIKICNpbmNsdWRlICJOb3RJ
bXBsZW1lbnRlZC5oIgogI2luY2x1ZGUgIlN1cmZhY2VPcGVuVkcuaCIKLSNpbmNsdWRlICJUcmFu
c2Zvcm1hdGlvbk1hdHJpeC5oIgogI2luY2x1ZGUgIlZHVXRpbHMuaCIKIAogI2lmIFBMQVRGT1JN
KEVHTCkKQEAgLTQzLDEyICs0MywyNiBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLXN0YXRp
YyBib29sIGlzTm9uUm90YXRlZEFmZmluZVRyYW5zZm9ybWF0aW9uKGNvbnN0IFRyYW5zZm9ybWF0
aW9uTWF0cml4JiBtYXRyaXgpCisvLyBGSVhNRTogQWRkIG1hcFF1YWQoKSB0byBBZmZpbmVUcmFu
c2Zvcm0KK3N0YXRpYyBGbG9hdFF1YWQgbWFwUXVhZChjb25zdCBBZmZpbmVUcmFuc2Zvcm0mIHQs
IGNvbnN0IEZsb2F0UXVhZCYgcSkKIHsKLSAgICByZXR1cm4gbWF0cml4Lm0xMigpIDw9IEZMVF9F
UFNJTE9OICYmIG1hdHJpeC5tMTMoKSA8PSBGTFRfRVBTSUxPTiAmJiBtYXRyaXgubTE0KCkgPD0g
RkxUX0VQU0lMT04KLSAgICAgICAgJiYgbWF0cml4Lm0yMSgpIDw9IEZMVF9FUFNJTE9OICYmIG1h
dHJpeC5tMjMoKSA8PSBGTFRfRVBTSUxPTiAmJiBtYXRyaXgubTI0KCkgPD0gRkxUX0VQU0lMT04K
LSAgICAgICAgJiYgbWF0cml4Lm0zMSgpIDw9IEZMVF9FUFNJTE9OICYmIG1hdHJpeC5tMzIoKSA8
PSBGTFRfRVBTSUxPTiAmJiBtYXRyaXgubTM0KCkgPD0gRkxUX0VQU0lMT04KLSAgICAgICAgJiYg
bWF0cml4Lm00NCgpID49IDEgLSBGTFRfRVBTSUxPTjsKKyAgICBpZiAodC5pc0lkZW50aXR5T3JU
cmFuc2xhdGlvbigpKSB7CisgICAgICAgIEZsb2F0UXVhZCBtYXBwZWRRdWFkKHEpOworICAgICAg
ICBtYXBwZWRRdWFkLm1vdmUoc3RhdGljX2Nhc3Q8ZmxvYXQ+KHQuZSgpKSwgc3RhdGljX2Nhc3Q8
ZmxvYXQ+KHQuZigpKSk7CisgICAgICAgIHJldHVybiBtYXBwZWRRdWFkOworICAgIH0KKworICAg
IEZsb2F0UXVhZCByZXN1bHQ7CisgICAgcmVzdWx0LnNldFAxKHQubWFwUG9pbnQocS5wMSgpKSk7
CisgICAgcmVzdWx0LnNldFAyKHQubWFwUG9pbnQocS5wMigpKSk7CisgICAgcmVzdWx0LnNldFAz
KHQubWFwUG9pbnQocS5wMygpKSk7CisgICAgcmVzdWx0LnNldFA0KHQubWFwUG9pbnQocS5wNCgp
KSk7CisgICAgcmV0dXJuIHJlc3VsdDsKK30KKworc3RhdGljIGJvb2wgaXNOb25Sb3RhdGVkQWZm
aW5lVHJhbnNmb3JtYXRpb24oY29uc3QgQWZmaW5lVHJhbnNmb3JtJiB0KQoreworICAgIHJldHVy
biB0LmIoKSA8PSBGTFRfRVBTSUxPTiAmJiB0LmMoKSA8PSBGTFRfRVBTSUxPTjsKIH0KIAogc3Rh
dGljIFZHQ2FwU3R5bGUgdG9WR0NhcFN0eWxlKExpbmVDYXAgbGluZUNhcCkKQEAgLTEwMyw3ICsx
MTcsNyBAQCBzdGF0aWMgdm9pZCBzZXRWR1NvbGlkQ29sb3IoVkdQYWludE1vZGUgcGFpbnRNb2Rl
LCBjb25zdCBDb2xvciYgY29sb3IpCiAKIAogc3RydWN0IFBsYXRmb3JtUGFpbnRlclN0YXRlIHsK
LSAgICBUcmFuc2Zvcm1hdGlvbk1hdHJpeCBzdXJmYWNlVHJhbnNmb3JtYXRpb25NYXRyaXg7Cisg
ICAgQWZmaW5lVHJhbnNmb3JtIHN1cmZhY2VUcmFuc2Zvcm1hdGlvbjsKICAgICBDb21wb3NpdGVP
cGVyYXRvciBjb21wb3NpdGVPcGVyYXRpb247CiAgICAgZmxvYXQgb3BhY2l0eTsKIApAQCAtMTM5
LDcgKzE1Myw3IEBAIHN0cnVjdCBQbGF0Zm9ybVBhaW50ZXJTdGF0ZSB7CiAKICAgICBQbGF0Zm9y
bVBhaW50ZXJTdGF0ZShjb25zdCBQbGF0Zm9ybVBhaW50ZXJTdGF0ZSYgc3RhdGUpCiAgICAgewot
ICAgICAgICBzdXJmYWNlVHJhbnNmb3JtYXRpb25NYXRyaXggPSBzdGF0ZS5zdXJmYWNlVHJhbnNm
b3JtYXRpb25NYXRyaXg7CisgICAgICAgIHN1cmZhY2VUcmFuc2Zvcm1hdGlvbiA9IHN0YXRlLnN1
cmZhY2VUcmFuc2Zvcm1hdGlvbjsKIAogICAgICAgICBzY2lzc29yaW5nRW5hYmxlZCA9IHN0YXRl
LnNjaXNzb3JpbmdFbmFibGVkOwogICAgICAgICBzY2lzc29yUmVjdCA9IHN0YXRlLnNjaXNzb3JS
ZWN0OwpAQCAtMTg0LDcgKzE5OCw3IEBAIHN0cnVjdCBQbGF0Zm9ybVBhaW50ZXJTdGF0ZSB7CiAg
ICAgICAgIGFwcGx5QmxlbmRpbmcocGFpbnRlcik7CiAgICAgICAgIGFwcGx5U3Ryb2tlU3R5bGUo
KTsKIAotICAgICAgICBhcHBseVRyYW5zZm9ybWF0aW9uTWF0cml4KHBhaW50ZXIpOworICAgICAg
ICBhcHBseVRyYW5zZm9ybWF0aW9uKHBhaW50ZXIpOwogICAgICAgICBhcHBseVNjaXNzb3JSZWN0
KCk7CiAgICAgfQogCkBAIC0yNjcsMTIgKzI4MSwxMiBAQCBzdHJ1Y3QgUGxhdGZvcm1QYWludGVy
U3RhdGUgewogICAgICAgICBBU1NFUlRfVkdfTk9fRVJST1IoKTsKICAgICB9CiAKLSAgICB2b2lk
IGFwcGx5VHJhbnNmb3JtYXRpb25NYXRyaXgoUGFpbnRlck9wZW5WRyogcGFpbnRlcikKKyAgICB2
b2lkIGFwcGx5VHJhbnNmb3JtYXRpb24oUGFpbnRlck9wZW5WRyogcGFpbnRlcikKICAgICB7CiAg
ICAgICAgIC8vIFRoZXJlIGFyZSAqZml2ZSogc2VwYXJhdGUgdHJhbnNmb3JtcyB0aGF0IGNhbiBi
ZSBhcHBsaWVkIHRvIE9wZW5WRyBhcyBvZiAxLjEKICAgICAgICAgLy8gYnV0IGl0IGlzIG5vdCBj
bGVhciB0aGF0IHdlIG5lZWQgdG8gc2V0IHRoZW0gc2VwYXJhdGVseS4gIEluc3RlYWQgd2Ugc2V0
IHRoZW0KICAgICAgICAgLy8gYWxsIHJpZ2h0IGhlcmUgYW5kIGxldCB0aGlzIGJlIGEgY2FsbCB0
byBlc3NlbnRpYWxseSBzZXQgdGhlIHdvcmxkIHRyYW5zZm9ybWF0aW9uIQotICAgICAgICBWR01h
dHJpeCB2Z01hdHJpeChzdXJmYWNlVHJhbnNmb3JtYXRpb25NYXRyaXgpOworICAgICAgICBWR01h
dHJpeCB2Z01hdHJpeChzdXJmYWNlVHJhbnNmb3JtYXRpb24pOwogICAgICAgICBjb25zdCBWR2Zs
b2F0KiB2Z0Zsb2F0QXJyYXkgPSB2Z01hdHJpeC50b1ZHZmxvYXQoKTsKIAogICAgICAgICB2Z1Nl
dGkoVkdfTUFUUklYX01PREUsIFZHX01BVFJJWF9QQVRIX1VTRVJfVE9fU1VSRkFDRSk7CkBAIC00
MTcsMzEgKzQzMSwzMSBAQCB2b2lkIFBhaW50ZXJPcGVuVkc6OmJsaXRUb1N1cmZhY2UoKQogICAg
IG1fc3VyZmFjZS0+Zmx1c2goKTsKIH0KIAotVHJhbnNmb3JtYXRpb25NYXRyaXggUGFpbnRlck9w
ZW5WRzo6dHJhbnNmb3JtYXRpb25NYXRyaXgoKSBjb25zdAorQWZmaW5lVHJhbnNmb3JtIFBhaW50
ZXJPcGVuVkc6OnRyYW5zZm9ybWF0aW9uKCkgY29uc3QKIHsKICAgICBBU1NFUlQobV9zdGF0ZSk7
Ci0gICAgcmV0dXJuIG1fc3RhdGUtPnN1cmZhY2VUcmFuc2Zvcm1hdGlvbk1hdHJpeDsKKyAgICBy
ZXR1cm4gbV9zdGF0ZS0+c3VyZmFjZVRyYW5zZm9ybWF0aW9uOwogfQogCi12b2lkIFBhaW50ZXJP
cGVuVkc6OmNvbmNhdFRyYW5zZm9ybWF0aW9uTWF0cml4KGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0
cml4JiBtYXRyaXgpCit2b2lkIFBhaW50ZXJPcGVuVkc6OmNvbmNhdFRyYW5zZm9ybWF0aW9uKGNv
bnN0IEFmZmluZVRyYW5zZm9ybSYgdHJhbnNmb3JtYXRpb24pCiB7CiAgICAgQVNTRVJUKG1fc3Rh
dGUpOwogICAgIG1fc3VyZmFjZS0+bWFrZUN1cnJlbnQoKTsKIAotICAgIC8vIFdlIGRvIHRoZSBt
dWx0aXBsaWNhdGlvbiBvdXJzZWxmIHVzaW5nIFdlYkNvcmUncyBUcmFuc2Zvcm1hdGlvbk1hdHJp
eCByYXRoZXIgdGhhbgotICAgIC8vIG9mZmxvYWRpbmcgdGhpcyB0byBWRyB2aWEgdmdNdWx0TWF0
cml4IHRvIGtlZXAgdGhpbmdzIHNpbXBsZSBhbmQgc28gd2UgY2FuIG1haW50YWluCi0gICAgLy8g
c3RhdGUgb3Vyc2VsdmVzLgotICAgIG1fc3RhdGUtPnN1cmZhY2VUcmFuc2Zvcm1hdGlvbk1hdHJp
eC5tdWx0TGVmdChtYXRyaXgpOwotICAgIG1fc3RhdGUtPmFwcGx5VHJhbnNmb3JtYXRpb25NYXRy
aXgodGhpcyk7CisgICAgLy8gV2UgZG8gdGhlIG11bHRpcGxpY2F0aW9uIG91cnNlbGYgdXNpbmcg
V2ViQ29yZSdzIEFmZmluZVRyYW5zZm9ybSByYXRoZXIKKyAgICAvLyB0aGFuIG9mZmxvYWRpbmcg
dGhpcyB0byBWRyB2aWEgdmdNdWx0TWF0cml4KCkgdG8ga2VlcCB0aGluZ3Mgc2ltcGxlIGFuZAor
ICAgIC8vIHNvIHdlIGNhbiBtYWludGFpbiBzdGF0ZSBvdXJzZWx2ZXMuCisgICAgbV9zdGF0ZS0+
c3VyZmFjZVRyYW5zZm9ybWF0aW9uLm11bHRMZWZ0KHRyYW5zZm9ybWF0aW9uKTsKKyAgICBtX3N0
YXRlLT5hcHBseVRyYW5zZm9ybWF0aW9uKHRoaXMpOwogfQogCi12b2lkIFBhaW50ZXJPcGVuVkc6
OnNldFRyYW5zZm9ybWF0aW9uTWF0cml4KGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4JiBtYXRy
aXgpCit2b2lkIFBhaW50ZXJPcGVuVkc6OnNldFRyYW5zZm9ybWF0aW9uKGNvbnN0IEFmZmluZVRy
YW5zZm9ybSYgdHJhbnNmb3JtYXRpb24pCiB7CiAgICAgQVNTRVJUKG1fc3RhdGUpOwogICAgIG1f
c3VyZmFjZS0+bWFrZUN1cnJlbnQoKTsKIAotICAgIG1fc3RhdGUtPnN1cmZhY2VUcmFuc2Zvcm1h
dGlvbk1hdHJpeCA9IG1hdHJpeDsKLSAgICBtX3N0YXRlLT5hcHBseVRyYW5zZm9ybWF0aW9uTWF0
cml4KHRoaXMpOworICAgIG1fc3RhdGUtPnN1cmZhY2VUcmFuc2Zvcm1hdGlvbiA9IHRyYW5zZm9y
bWF0aW9uOworICAgIG1fc3RhdGUtPmFwcGx5VHJhbnNmb3JtYXRpb24odGhpcyk7CiB9CiAKIENv
bXBvc2l0ZU9wZXJhdG9yIFBhaW50ZXJPcGVuVkc6OmNvbXBvc2l0ZU9wZXJhdGlvbigpIGNvbnN0
CkBAIC01OTksOSArNjEzLDkgQEAgdm9pZCBQYWludGVyT3BlblZHOjpzY2FsZShjb25zdCBGbG9h
dFNpemUmIHNjYWxlRmFjdG9ycykKICAgICBBU1NFUlQobV9zdGF0ZSk7CiAgICAgbV9zdXJmYWNl
LT5tYWtlQ3VycmVudCgpOwogCi0gICAgVHJhbnNmb3JtYXRpb25NYXRyaXggbWF0cml4ID0gbV9z
dGF0ZS0+c3VyZmFjZVRyYW5zZm9ybWF0aW9uTWF0cml4OwotICAgIG1hdHJpeC5zY2FsZU5vblVu
aWZvcm0oc2NhbGVGYWN0b3JzLndpZHRoKCksIHNjYWxlRmFjdG9ycy5oZWlnaHQoKSk7Ci0gICAg
c2V0VHJhbnNmb3JtYXRpb25NYXRyaXgobWF0cml4KTsKKyAgICBBZmZpbmVUcmFuc2Zvcm0gdHJh
bnNmb3JtYXRpb24gPSBtX3N0YXRlLT5zdXJmYWNlVHJhbnNmb3JtYXRpb247CisgICAgdHJhbnNm
b3JtYXRpb24uc2NhbGVOb25Vbmlmb3JtKHNjYWxlRmFjdG9ycy53aWR0aCgpLCBzY2FsZUZhY3Rv
cnMuaGVpZ2h0KCkpOworICAgIHNldFRyYW5zZm9ybWF0aW9uKHRyYW5zZm9ybWF0aW9uKTsKIH0K
IAogdm9pZCBQYWludGVyT3BlblZHOjpyb3RhdGUoZmxvYXQgcmFkaWFucykKQEAgLTYwOSw5ICs2
MjMsOSBAQCB2b2lkIFBhaW50ZXJPcGVuVkc6OnJvdGF0ZShmbG9hdCByYWRpYW5zKQogICAgIEFT
U0VSVChtX3N0YXRlKTsKICAgICBtX3N1cmZhY2UtPm1ha2VDdXJyZW50KCk7CiAKLSAgICBUcmFu
c2Zvcm1hdGlvbk1hdHJpeCBtYXRyaXggPSBtX3N0YXRlLT5zdXJmYWNlVHJhbnNmb3JtYXRpb25N
YXRyaXg7Ci0gICAgbWF0cml4LnJvdGF0ZShyYWQyZGVnKHJhZGlhbnMpKTsKLSAgICBzZXRUcmFu
c2Zvcm1hdGlvbk1hdHJpeChtYXRyaXgpOworICAgIEFmZmluZVRyYW5zZm9ybSB0cmFuc2Zvcm1h
dGlvbiA9IG1fc3RhdGUtPnN1cmZhY2VUcmFuc2Zvcm1hdGlvbjsKKyAgICB0cmFuc2Zvcm1hdGlv
bi5yb3RhdGUocmFkMmRlZyhyYWRpYW5zKSk7CisgICAgc2V0VHJhbnNmb3JtYXRpb24odHJhbnNm
b3JtYXRpb24pOwogfQogCiB2b2lkIFBhaW50ZXJPcGVuVkc6OnRyYW5zbGF0ZShmbG9hdCBkeCwg
ZmxvYXQgZHkpCkBAIC02MTksOSArNjMzLDkgQEAgdm9pZCBQYWludGVyT3BlblZHOjp0cmFuc2xh
dGUoZmxvYXQgZHgsIGZsb2F0IGR5KQogICAgIEFTU0VSVChtX3N0YXRlKTsKICAgICBtX3N1cmZh
Y2UtPm1ha2VDdXJyZW50KCk7CiAKLSAgICBUcmFuc2Zvcm1hdGlvbk1hdHJpeCBtYXRyaXggPSBt
X3N0YXRlLT5zdXJmYWNlVHJhbnNmb3JtYXRpb25NYXRyaXg7Ci0gICAgbWF0cml4LnRyYW5zbGF0
ZShkeCwgZHkpOwotICAgIHNldFRyYW5zZm9ybWF0aW9uTWF0cml4KG1hdHJpeCk7CisgICAgQWZm
aW5lVHJhbnNmb3JtIHRyYW5zZm9ybWF0aW9uID0gbV9zdGF0ZS0+c3VyZmFjZVRyYW5zZm9ybWF0
aW9uOworICAgIHRyYW5zZm9ybWF0aW9uLnRyYW5zbGF0ZShkeCwgZHkpOworICAgIHNldFRyYW5z
Zm9ybWF0aW9uKHRyYW5zZm9ybWF0aW9uKTsKIH0KIAogdm9pZCBQYWludGVyT3BlblZHOjppbnRl
cnNlY3RTY2lzc29yUmVjdChjb25zdCBGbG9hdFJlY3QmIHJlY3QpCkBAIC02NDksNyArNjYzLDcg
QEAgdm9pZCBQYWludGVyT3BlblZHOjppbnRlcnNlY3RDbGlwUmVjdChjb25zdCBGbG9hdFJlY3Qm
IHJlY3QpCiAgICAgQVNTRVJUKG1fc3RhdGUpOwogICAgIG1fc3VyZmFjZS0+bWFrZUN1cnJlbnQo
KTsKIAotICAgIGlmIChtX3N0YXRlLT5zdXJmYWNlVHJhbnNmb3JtYXRpb25NYXRyaXguaXNJZGVu
dGl0eSgpKSB7CisgICAgaWYgKG1fc3RhdGUtPnN1cmZhY2VUcmFuc2Zvcm1hdGlvbi5pc0lkZW50
aXR5KCkpIHsKICAgICAgICAgLy8gTm8gdHJhbnNmb3JtYXRpb24gcmVxdWlyZWQsIHNraXAgYWxs
IHRoZSBjb21wbGV4IHN0dWZmLgogICAgICAgICBpbnRlcnNlY3RTY2lzc29yUmVjdChyZWN0KTsK
ICAgICAgICAgcmV0dXJuOwpAQCAtNjYwLDggKzY3NCw5IEBAIHZvaWQgUGFpbnRlck9wZW5WRzo6
aW50ZXJzZWN0Q2xpcFJlY3QoY29uc3QgRmxvYXRSZWN0JiByZWN0KQogICAgIC8vIChwb3RlbnRp
YWxseSBtb3JlIGV4cGVuc2l2ZSkgcGF0aCBjbGlwcGluZy4gTm90ZSB0aGF0IHNjaXNzb3Jpbmcg
aXMgbm90CiAgICAgLy8gc3ViamVjdCB0byB0cmFuc2Zvcm1hdGlvbnMsIHNvIHdlIG5lZWQgdG8g
ZG8gdGhlIHRyYW5zZm9ybWF0aW9uIHRvCiAgICAgLy8gc3VyZmFjZSBjb29yZGluYXRlcyBieSBv
dXJzZWx2ZXMuCisgICAgLy8gRklYTUU6IFVzZSBBZmZpbmVUcmFuc2Zvcm06Om1hcFF1YWQoKSBv
bmNlIGl0IGhhcyBiZWVuIGFkZGVkIHRoZXJlLgogICAgIEZsb2F0UXVhZCBlZmZlY3RpdmVTY2lz
c29yUXVhZCA9Ci0gICAgICAgIG1fc3RhdGUtPnN1cmZhY2VUcmFuc2Zvcm1hdGlvbk1hdHJpeC5t
YXBRdWFkKEZsb2F0UXVhZChyZWN0KSk7CisgICAgICAgIG1hcFF1YWQobV9zdGF0ZS0+c3VyZmFj
ZVRyYW5zZm9ybWF0aW9uLCBGbG9hdFF1YWQocmVjdCkpOwogCiAgICAgaWYgKGVmZmVjdGl2ZVNj
aXNzb3JRdWFkLmlzUmVjdGlsaW5lYXIoKSkKICAgICAgICAgaW50ZXJzZWN0U2Npc3NvclJlY3Qo
ZWZmZWN0aXZlU2Npc3NvclF1YWQuYm91bmRpbmdCb3goKSk7CmRpZmYgLS1naXQgYS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL29wZW52Zy9QYWludGVyT3BlblZHLmggYi9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL29wZW52Zy9QYWludGVyT3BlblZHLmgKaW5kZXggNjkzNmVlZS4uOTk4MjI4
MyAxMDA2NDQKLS0tIGEvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVudmcvUGFpbnRlck9w
ZW5WRy5oCisrKyBiL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbnZnL1BhaW50ZXJPcGVu
VkcuaApAQCAtMzEsMTIgKzMxLDEyIEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAorY2xhc3Mg
QWZmaW5lVHJhbnNmb3JtOwogY2xhc3MgRmxvYXRQb2ludDsKIGNsYXNzIEZsb2F0UmVjdDsKIGNs
YXNzIEludFJlY3Q7CiBjbGFzcyBJbnRTaXplOwogY2xhc3MgU3VyZmFjZU9wZW5WRzsKLWNsYXNz
IFRyYW5zZm9ybWF0aW9uTWF0cml4OwogCiBzdHJ1Y3QgUGxhdGZvcm1QYWludGVyU3RhdGU7CiAK
QEAgLTU3LDkgKzU3LDkgQEAgcHVibGljOgogICAgIHZvaWQgYmVnaW4oU3VyZmFjZU9wZW5WRyop
OwogICAgIHZvaWQgZW5kKCk7CiAKLSAgICBUcmFuc2Zvcm1hdGlvbk1hdHJpeCB0cmFuc2Zvcm1h
dGlvbk1hdHJpeCgpIGNvbnN0OwotICAgIHZvaWQgc2V0VHJhbnNmb3JtYXRpb25NYXRyaXgoY29u
c3QgVHJhbnNmb3JtYXRpb25NYXRyaXgmKTsKLSAgICB2b2lkIGNvbmNhdFRyYW5zZm9ybWF0aW9u
TWF0cml4KGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4Jik7CisgICAgQWZmaW5lVHJhbnNmb3Jt
IHRyYW5zZm9ybWF0aW9uKCkgY29uc3Q7CisgICAgdm9pZCBzZXRUcmFuc2Zvcm1hdGlvbihjb25z
dCBBZmZpbmVUcmFuc2Zvcm0mKTsKKyAgICB2b2lkIGNvbmNhdFRyYW5zZm9ybWF0aW9uKGNvbnN0
IEFmZmluZVRyYW5zZm9ybSYpOwogCiAgICAgQ29tcG9zaXRlT3BlcmF0b3IgY29tcG9zaXRlT3Bl
cmF0aW9uKCkgY29uc3Q7CiAgICAgdm9pZCBzZXRDb21wb3NpdGVPcGVyYXRpb24oQ29tcG9zaXRl
T3BlcmF0b3IpOwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVudmcv
VkdVdGlscy5jcHAgYi9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW52Zy9WR1V0aWxzLmNw
cAppbmRleCA3MmJhNWIyLi5jZTliY2QyIDEwMDY0NAotLS0gYS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL29wZW52Zy9WR1V0aWxzLmNwcAorKysgYi9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L29wZW52Zy9WR1V0aWxzLmNwcApAQCAtMjAsNiArMjAsNyBAQAogI2luY2x1ZGUgImNvbmZpZy5o
IgogI2luY2x1ZGUgIlZHVXRpbHMuaCIKIAorI2luY2x1ZGUgIkFmZmluZVRyYW5zZm9ybS5oIgog
I2luY2x1ZGUgIkZsb2F0UmVjdC5oIgogI2luY2x1ZGUgIlRyYW5zZm9ybWF0aW9uTWF0cml4Lmgi
CiAKQEAgLTM4LDYgKzM5LDE5IEBAIFZHTWF0cml4OjpWR01hdHJpeChjb25zdCBWR2Zsb2F0IGRh
dGFbOV0pCiAgICAgbV9kYXRhWzhdID0gZGF0YVs4XTsKIH0KIAorVkdNYXRyaXg6OlZHTWF0cml4
KGNvbnN0IEFmZmluZVRyYW5zZm9ybSYgdHJhbnNmb3JtYXRpb24pCit7CisgICAgbV9kYXRhWzBd
ID0gdHJhbnNmb3JtYXRpb24uYSgpOworICAgIG1fZGF0YVsxXSA9IHRyYW5zZm9ybWF0aW9uLmIo
KTsKKyAgICBtX2RhdGFbMl0gPSAwOworICAgIG1fZGF0YVszXSA9IHRyYW5zZm9ybWF0aW9uLmMo
KTsKKyAgICBtX2RhdGFbNF0gPSB0cmFuc2Zvcm1hdGlvbi5kKCk7CisgICAgbV9kYXRhWzVdID0g
MDsKKyAgICBtX2RhdGFbNl0gPSB0cmFuc2Zvcm1hdGlvbi5lKCk7CisgICAgbV9kYXRhWzddID0g
dHJhbnNmb3JtYXRpb24uZigpOworICAgIG1fZGF0YVs4XSA9IDE7Cit9CisKIFZHTWF0cml4OjpW
R01hdHJpeChjb25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYgbWF0cml4KQogewogICAgIG1fZGF0
YVswXSA9IG1hdHJpeC5tMTEoKTsKQEAgLTUxLDIxICs2NSwzMCBAQCBWR01hdHJpeDo6VkdNYXRy
aXgoY29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXgmIG1hdHJpeCkKICAgICBtX2RhdGFbOF0gPSBt
YXRyaXgubTQ0KCk7CiB9CiAKK1ZHTWF0cml4OjpvcGVyYXRvciBBZmZpbmVUcmFuc2Zvcm0oKSBj
b25zdAoreworICAgIEFmZmluZVRyYW5zZm9ybSB0cmFuc2Zvcm1hdGlvbigKKyAgICAgICAgbV9k
YXRhWzBdLCBtX2RhdGFbMV0sCisgICAgICAgIG1fZGF0YVszXSwgbV9kYXRhWzRdLAorICAgICAg
ICBtX2RhdGFbNl0sIG1fZGF0YVs3XSk7CisgICAgcmV0dXJuIHRyYW5zZm9ybWF0aW9uOworfQor
CiBWR01hdHJpeDo6b3BlcmF0b3IgVHJhbnNmb3JtYXRpb25NYXRyaXgoKSBjb25zdAogewotICAg
IFRyYW5zZm9ybWF0aW9uTWF0cml4IG1hdHJpeDsKLSAgICBtYXRyaXguc2V0TTExKG1fZGF0YVsw
XSk7Ci0gICAgbWF0cml4LnNldE0xMihtX2RhdGFbMV0pOwotICAgIG1hdHJpeC5zZXRNMTQobV9k
YXRhWzJdKTsKLSAgICBtYXRyaXguc2V0TTIxKG1fZGF0YVszXSk7Ci0gICAgbWF0cml4LnNldE0y
MihtX2RhdGFbNF0pOwotICAgIG1hdHJpeC5zZXRNMjQobV9kYXRhWzVdKTsKLSAgICBtYXRyaXgu
c2V0TTQxKG1fZGF0YVs2XSk7Ci0gICAgbWF0cml4LnNldE00MihtX2RhdGFbN10pOwotICAgIG1h
dHJpeC5zZXRNNDQobV9kYXRhWzhdKTsKKyAgICBUcmFuc2Zvcm1hdGlvbk1hdHJpeCBtYXRyaXgo
CisgICAgICAgIG1fZGF0YVswXSwgbV9kYXRhWzFdLCAwLCBtX2RhdGFbMl0sCisgICAgICAgIG1f
ZGF0YVszXSwgbV9kYXRhWzRdLCAwLCBtX2RhdGFbNV0sCisgICAgICAgIDAsICAgICAgICAgMCwg
ICAgICAgICAxLCAwLAorICAgICAgICBtX2RhdGFbNl0sIG1fZGF0YVs3XSwgMCwgbV9kYXRhWzhd
KTsKICAgICByZXR1cm4gbWF0cml4OwogfQogCitBZmZpbmVUcmFuc2Zvcm06Om9wZXJhdG9yIFZH
TWF0cml4KCkgY29uc3QKK3sKKyAgICByZXR1cm4gVkdNYXRyaXgoKnRoaXMpOworfQorCiBUcmFu
c2Zvcm1hdGlvbk1hdHJpeDo6b3BlcmF0b3IgVkdNYXRyaXgoKSBjb25zdAogewogICAgIHJldHVy
biBWR01hdHJpeCgqdGhpcyk7CmRpZmYgLS1naXQgYS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L29wZW52Zy9WR1V0aWxzLmggYi9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW52Zy9WR1V0
aWxzLmgKaW5kZXggMDgzYzE1YS4uM2EyOTBjYiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9vcGVudmcvVkdVdGlscy5oCisrKyBiL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3Mvb3BlbnZnL1ZHVXRpbHMuaApAQCAtNTksMTQgKzU5LDE3IEBAIHN0YXRpYyBpbmxpbmUgY29u
c3QgY2hhciogdG9WR0Vycm9yQ29uc3RhbnQoVkdFcnJvckNvZGUgZXJyb3IpCiAKIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIAorY2xhc3MgQWZmaW5lVHJhbnNmb3JtOwogY2xhc3MgRmxvYXRSZWN0Owog
Y2xhc3MgVHJhbnNmb3JtYXRpb25NYXRyaXg7CiAKIGNsYXNzIFZHTWF0cml4IHsKIHB1YmxpYzoK
ICAgICBWR01hdHJpeChjb25zdCBWR2Zsb2F0IGRhdGFbOV0pOworICAgIFZHTWF0cml4KGNvbnN0
IEFmZmluZVRyYW5zZm9ybSYpOwogICAgIFZHTWF0cml4KGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0
cml4Jik7CiAgICAgY29uc3QgVkdmbG9hdCogdG9WR2Zsb2F0KCkgY29uc3QgeyByZXR1cm4gbV9k
YXRhOyB9CisgICAgb3BlcmF0b3IgQWZmaW5lVHJhbnNmb3JtKCkgY29uc3Q7CiAgICAgb3BlcmF0
b3IgVHJhbnNmb3JtYXRpb25NYXRyaXgoKSBjb25zdDsKIHByaXZhdGU6CiAgICAgVkdmbG9hdCBt
X2RhdGFbOV07CmRpZmYgLS1naXQgYS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RyYW5zZm9y
bXMvQWZmaW5lVHJhbnNmb3JtLmggYi9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RyYW5zZm9y
bXMvQWZmaW5lVHJhbnNmb3JtLmgKaW5kZXggMDA2MzFjMi4uM2YwZDRhYSAxMDA2NDQKLS0tIGEv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90cmFuc2Zvcm1zL0FmZmluZVRyYW5zZm9ybS5oCisr
KyBiL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdHJhbnNmb3Jtcy9BZmZpbmVUcmFuc2Zvcm0u
aApAQCAtMzYsNiArMzYsOCBAQAogI2luY2x1ZGUgPENvcmVHcmFwaGljcy9DR0FmZmluZVRyYW5z
Zm9ybS5oPgogI2VsaWYgUExBVEZPUk0oQ0FJUk8pCiAjaW5jbHVkZSA8Y2Fpcm8uaD4KKyNlbGlm
IFBMQVRGT1JNKE9QRU5WRykKKyNpbmNsdWRlICJWR1V0aWxzLmgiCiAjZWxpZiBQTEFURk9STShR
VCkKICNpbmNsdWRlIDxRVHJhbnNmb3JtPgogI2VsaWYgUExBVEZPUk0oU0tJQSkKQEAgLTE1Miw2
ICsxNTQsOCBAQCBwdWJsaWM6CiAgICAgb3BlcmF0b3IgQ0dBZmZpbmVUcmFuc2Zvcm0oKSBjb25z
dDsKICNlbGlmIFBMQVRGT1JNKENBSVJPKQogICAgIG9wZXJhdG9yIGNhaXJvX21hdHJpeF90KCkg
Y29uc3Q7CisjZWxpZiBQTEFURk9STShPUEVOVkcpCisgICAgb3BlcmF0b3IgVkdNYXRyaXgoKSBj
b25zdDsKICNlbGlmIFBMQVRGT1JNKFFUKQogICAgIG9wZXJhdG9yIFFUcmFuc2Zvcm0oKSBjb25z
dDsKICNlbGlmIFBMQVRGT1JNKFNLSUEpCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>49627</attachid>
            <date>2010-02-26 13:05:05 -0800</date>
            <delta_ts>2010-02-26 14:26:16 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-35445-20100226160504.patch</filename>
            <type>text/plain</type>
            <size>15790</size>
            <attacher name="Jakob Petsovits">jpetsovits</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
Y2Q4NWFjMi4uYWI3ZWFkOCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvV2Vi
Q29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwzNiBAQAorMjAxMC0wMi0yNiAgSmFrb2IgUGV0c292
aXRzICA8anBldHNvdml0c0ByaW0uY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgIFtPcGVuVkddIENvbnZlcnQgZnJvbSBUcmFuc2Zvcm1hdGlvbk1h
dHJpeCB0byBBZmZpbmVUcmFuc2Zvcm0uCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0zNTQ0NQorCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvb3Bl
bnZnL0dyYXBoaWNzQ29udGV4dE9wZW5WRy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGlj
c0NvbnRleHQ6OmdldENUTSk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6OnJv
dW5kVG9EZXZpY2VQaXhlbHMpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0Ojpv
cmlnaW4pOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0Ojpjb25jYXRDVE0pOgor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL29wZW52Zy9QYWludGVyT3BlblZHLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OmlzTm9uUm90YXRlZEFmZmluZVRyYW5zZm9ybWF0aW9uKToKKyAgICAg
ICAgKFdlYkNvcmU6OlBsYXRmb3JtUGFpbnRlclN0YXRlOjpQbGF0Zm9ybVBhaW50ZXJTdGF0ZSk6
CisgICAgICAgIChXZWJDb3JlOjpQbGF0Zm9ybVBhaW50ZXJTdGF0ZTo6YXBwbHlTdGF0ZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpQbGF0Zm9ybVBhaW50ZXJTdGF0ZTo6YXBwbHlUcmFuc2Zvcm1hdGlv
bik6CisgICAgICAgIChXZWJDb3JlOjpQYWludGVyT3BlblZHOjp0cmFuc2Zvcm1hdGlvbik6Cisg
ICAgICAgIChXZWJDb3JlOjpQYWludGVyT3BlblZHOjpjb25jYXRUcmFuc2Zvcm1hdGlvbik6Cisg
ICAgICAgIChXZWJDb3JlOjpQYWludGVyT3BlblZHOjpzZXRUcmFuc2Zvcm1hdGlvbik6CisgICAg
ICAgIChXZWJDb3JlOjpQYWludGVyT3BlblZHOjpzY2FsZSk6CisgICAgICAgIChXZWJDb3JlOjpQ
YWludGVyT3BlblZHOjpyb3RhdGUpOgorICAgICAgICAoV2ViQ29yZTo6UGFpbnRlck9wZW5WRzo6
dHJhbnNsYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OlBhaW50ZXJPcGVuVkc6OmludGVyc2VjdENs
aXBSZWN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9vcGVudmcvUGFpbnRlck9wZW5W
Ry5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL29wZW52Zy9WR1V0aWxzLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OlZHTWF0cml4OjpWR01hdHJpeCk6CisgICAgICAgIChXZWJDb3JlOjpW
R01hdHJpeDo6b3BlcmF0b3IgQWZmaW5lVHJhbnNmb3JtKToKKyAgICAgICAgKFdlYkNvcmU6OlZH
TWF0cml4OjpvcGVyYXRvciBUcmFuc2Zvcm1hdGlvbk1hdHJpeCk6CisgICAgICAgIChXZWJDb3Jl
OjpBZmZpbmVUcmFuc2Zvcm06Om9wZXJhdG9yIFZHTWF0cml4KToKKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy9vcGVudmcvVkdVdGlscy5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L3RyYW5zZm9ybXMvQWZmaW5lVHJhbnNmb3JtLmg6CisKIDIwMTAtMDItMjMgIEJyYWR5IEVpZHNv
biAgPGJlaWRzb25AYXBwbGUuY29tPgogCiAgICAgICAgIFJldmlld2VkIGJ5IFRpbSBIYXRjaGVy
IGFuZCBQYXZlbCBGZWxkbWFuLgpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9vcGVudmcvR3JhcGhpY3NDb250ZXh0T3BlblZHLmNwcCBiL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3Mvb3BlbnZnL0dyYXBoaWNzQ29udGV4dE9wZW5WRy5jcHAKaW5kZXggNWVkODkyYy4uOTA5
ZmEyNyAxMDA2NDQKLS0tIGEvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVudmcvR3JhcGhp
Y3NDb250ZXh0T3BlblZHLmNwcAorKysgYi9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW52
Zy9HcmFwaGljc0NvbnRleHRPcGVuVkcuY3BwCkBAIC0yMCwxMSArMjAsMTEgQEAKICNpbmNsdWRl
ICJjb25maWcuaCIKICNpbmNsdWRlICJHcmFwaGljc0NvbnRleHQuaCIKIAorI2luY2x1ZGUgIkFm
ZmluZVRyYW5zZm9ybS5oIgogI2luY2x1ZGUgIkdyYXBoaWNzQ29udGV4dFByaXZhdGUuaCIKICNp
bmNsdWRlICJOb3RJbXBsZW1lbnRlZC5oIgogI2luY2x1ZGUgIlBhaW50ZXJPcGVuVkcuaCIKICNp
bmNsdWRlICJTdXJmYWNlT3BlblZHLmgiCi0jaW5jbHVkZSAiVHJhbnNmb3JtYXRpb25NYXRyaXgu
aCIKIAogI2luY2x1ZGUgPHd0Zi9Bc3NlcnRpb25zLmg+CiAjaW5jbHVkZSA8d3RmL01hdGhFeHRy
YXMuaD4KQEAgLTY5LDEyICs2OSwxMiBAQCBQbGF0Zm9ybUdyYXBoaWNzQ29udGV4dCogR3JhcGhp
Y3NDb250ZXh0OjpwbGF0Zm9ybUNvbnRleHQoKSBjb25zdAogICAgIHJldHVybiBtX2RhdGEtPmJh
c2VTdXJmYWNlKCk7CiB9CiAKLVRyYW5zZm9ybWF0aW9uTWF0cml4IEdyYXBoaWNzQ29udGV4dDo6
Z2V0Q1RNKCkgY29uc3QKK0FmZmluZVRyYW5zZm9ybSBHcmFwaGljc0NvbnRleHQ6OmdldENUTSgp
IGNvbnN0CiB7CiAgICAgaWYgKHBhaW50aW5nRGlzYWJsZWQoKSkKLSAgICAgICAgcmV0dXJuIFRy
YW5zZm9ybWF0aW9uTWF0cml4KCk7CisgICAgICAgIHJldHVybiBBZmZpbmVUcmFuc2Zvcm0oKTsK
IAotICAgIHJldHVybiBtX2RhdGEtPnRyYW5zZm9ybWF0aW9uTWF0cml4KCk7CisgICAgcmV0dXJu
IG1fZGF0YS0+dHJhbnNmb3JtYXRpb24oKTsKIH0KIAogdm9pZCBHcmFwaGljc0NvbnRleHQ6OnNh
dmVQbGF0Zm9ybVN0YXRlKCkKQEAgLTI4MSw3ICsyODEsNyBAQCBGbG9hdFJlY3QgR3JhcGhpY3ND
b250ZXh0Ojpyb3VuZFRvRGV2aWNlUGl4ZWxzKGNvbnN0IEZsb2F0UmVjdCYgcmVjdCkKICAgICBp
ZiAocGFpbnRpbmdEaXNhYmxlZCgpKQogICAgICAgICByZXR1cm4gRmxvYXRSZWN0KCk7CiAKLSAg
ICByZXR1cm4gRmxvYXRSZWN0KGVuY2xvc2luZ0ludFJlY3QobV9kYXRhLT50cmFuc2Zvcm1hdGlv
bk1hdHJpeCgpLm1hcFJlY3QocmVjdCkpKTsKKyAgICByZXR1cm4gRmxvYXRSZWN0KGVuY2xvc2lu
Z0ludFJlY3QobV9kYXRhLT50cmFuc2Zvcm1hdGlvbigpLm1hcFJlY3QocmVjdCkpKTsKIH0KIAog
dm9pZCBHcmFwaGljc0NvbnRleHQ6OnNldFBsYXRmb3JtU2hhZG93KGNvbnN0IEludFNpemUmIHNp
emUsIGludCBibHVyLCBjb25zdCBDb2xvciYgY29sb3IsIENvbG9yU3BhY2UgY29sb3JTcGFjZSkK
QEAgLTQ1MSw4ICs0NTEsOCBAQCBJbnRQb2ludCBHcmFwaGljc0NvbnRleHQ6Om9yaWdpbigpCiAg
ICAgaWYgKHBhaW50aW5nRGlzYWJsZWQoKSkKICAgICAgICAgcmV0dXJuIEludFBvaW50KCk7CiAK
LSAgICBUcmFuc2Zvcm1hdGlvbk1hdHJpeCBtYXRyaXggPSBtX2RhdGEtPnRyYW5zZm9ybWF0aW9u
TWF0cml4KCk7Ci0gICAgcmV0dXJuIEludFBvaW50KHJvdW5kZihtYXRyaXgubTQxKCkpLCByb3Vu
ZGYobWF0cml4Lm00MigpKSk7CisgICAgQWZmaW5lVHJhbnNmb3JtIHRyYW5zZm9ybWF0aW9uID0g
bV9kYXRhLT50cmFuc2Zvcm1hdGlvbigpOworICAgIHJldHVybiBJbnRQb2ludChyb3VuZGYodHJh
bnNmb3JtYXRpb24uZSgpKSwgcm91bmRmKHRyYW5zZm9ybWF0aW9uLmYoKSkpOwogfQogCiB2b2lk
IEdyYXBoaWNzQ29udGV4dDo6Y2xpcE91dChjb25zdCBJbnRSZWN0JiByZWN0KQpAQCAtNDkzLDEy
ICs0OTMsMTIgQEAgdm9pZCBHcmFwaGljc0NvbnRleHQ6OmFkZElubmVyUm91bmRlZFJlY3RDbGlw
KGNvbnN0IEludFJlY3QmIHJlY3QsIGludCB0aGlja25lc3MKICAgICBVTlVTRURfUEFSQU0odGhp
Y2tuZXNzKTsKIH0KIAotdm9pZCBHcmFwaGljc0NvbnRleHQ6OmNvbmNhdENUTShjb25zdCBUcmFu
c2Zvcm1hdGlvbk1hdHJpeCYgdHJhbnNmb3JtKQordm9pZCBHcmFwaGljc0NvbnRleHQ6OmNvbmNh
dENUTShjb25zdCBBZmZpbmVUcmFuc2Zvcm0mIHRyYW5zZm9ybWF0aW9uKQogewogICAgIGlmIChw
YWludGluZ0Rpc2FibGVkKCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIG1fZGF0YS0+Y29uY2F0
VHJhbnNmb3JtYXRpb25NYXRyaXgodHJhbnNmb3JtKTsKKyAgICBtX2RhdGEtPmNvbmNhdFRyYW5z
Zm9ybWF0aW9uKHRyYW5zZm9ybWF0aW9uKTsKIH0KIAogdm9pZCBHcmFwaGljc0NvbnRleHQ6OnNl
dFVSTEZvclJlY3QoY29uc3QgS1VSTCYgbGluaywgY29uc3QgSW50UmVjdCYgZGVzdFJlY3QpCmRp
ZmYgLS1naXQgYS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW52Zy9QYWludGVyT3BlblZH
LmNwcCBiL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbnZnL1BhaW50ZXJPcGVuVkcuY3Bw
CmluZGV4IDNiN2NmODUuLmZkNzVlYzEgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3Mvb3BlbnZnL1BhaW50ZXJPcGVuVkcuY3BwCisrKyBiL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3Mvb3BlbnZnL1BhaW50ZXJPcGVuVkcuY3BwCkBAIC0yMCw2ICsyMCw3IEBACiAjaW5jbHVk
ZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiUGFpbnRlck9wZW5WRy5oIgogCisjaW5jbHVkZSAiQWZm
aW5lVHJhbnNmb3JtLmgiCiAjaW5jbHVkZSAiQ29sb3IuaCIKICNpbmNsdWRlICJEYXNoQXJyYXku
aCIKICNpbmNsdWRlICJGbG9hdFBvaW50LmgiCkBAIC0yOSw3ICszMCw2IEBACiAjaW5jbHVkZSAi
SW50U2l6ZS5oIgogI2luY2x1ZGUgIk5vdEltcGxlbWVudGVkLmgiCiAjaW5jbHVkZSAiU3VyZmFj
ZU9wZW5WRy5oIgotI2luY2x1ZGUgIlRyYW5zZm9ybWF0aW9uTWF0cml4LmgiCiAjaW5jbHVkZSAi
VkdVdGlscy5oIgogCiAjaWYgUExBVEZPUk0oRUdMKQpAQCAtNDMsMTIgKzQzLDkgQEAKIAogbmFt
ZXNwYWNlIFdlYkNvcmUgewogCi1zdGF0aWMgYm9vbCBpc05vblJvdGF0ZWRBZmZpbmVUcmFuc2Zv
cm1hdGlvbihjb25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYgbWF0cml4KQorc3RhdGljIGJvb2wg
aXNOb25Sb3RhdGVkQWZmaW5lVHJhbnNmb3JtYXRpb24oY29uc3QgQWZmaW5lVHJhbnNmb3JtJiB0
KQogewotICAgIHJldHVybiBtYXRyaXgubTEyKCkgPD0gRkxUX0VQU0lMT04gJiYgbWF0cml4Lm0x
MygpIDw9IEZMVF9FUFNJTE9OICYmIG1hdHJpeC5tMTQoKSA8PSBGTFRfRVBTSUxPTgotICAgICAg
ICAmJiBtYXRyaXgubTIxKCkgPD0gRkxUX0VQU0lMT04gJiYgbWF0cml4Lm0yMygpIDw9IEZMVF9F
UFNJTE9OICYmIG1hdHJpeC5tMjQoKSA8PSBGTFRfRVBTSUxPTgotICAgICAgICAmJiBtYXRyaXgu
bTMxKCkgPD0gRkxUX0VQU0lMT04gJiYgbWF0cml4Lm0zMigpIDw9IEZMVF9FUFNJTE9OICYmIG1h
dHJpeC5tMzQoKSA8PSBGTFRfRVBTSUxPTgotICAgICAgICAmJiBtYXRyaXgubTQ0KCkgPj0gMSAt
IEZMVF9FUFNJTE9OOworICAgIHJldHVybiB0LmIoKSA8PSBGTFRfRVBTSUxPTiAmJiB0LmMoKSA8
PSBGTFRfRVBTSUxPTjsKIH0KIAogc3RhdGljIFZHQ2FwU3R5bGUgdG9WR0NhcFN0eWxlKExpbmVD
YXAgbGluZUNhcCkKQEAgLTEwMyw3ICsxMDAsNyBAQCBzdGF0aWMgdm9pZCBzZXRWR1NvbGlkQ29s
b3IoVkdQYWludE1vZGUgcGFpbnRNb2RlLCBjb25zdCBDb2xvciYgY29sb3IpCiAKIAogc3RydWN0
IFBsYXRmb3JtUGFpbnRlclN0YXRlIHsKLSAgICBUcmFuc2Zvcm1hdGlvbk1hdHJpeCBzdXJmYWNl
VHJhbnNmb3JtYXRpb25NYXRyaXg7CisgICAgQWZmaW5lVHJhbnNmb3JtIHN1cmZhY2VUcmFuc2Zv
cm1hdGlvbjsKICAgICBDb21wb3NpdGVPcGVyYXRvciBjb21wb3NpdGVPcGVyYXRpb247CiAgICAg
ZmxvYXQgb3BhY2l0eTsKIApAQCAtMTM5LDcgKzEzNiw3IEBAIHN0cnVjdCBQbGF0Zm9ybVBhaW50
ZXJTdGF0ZSB7CiAKICAgICBQbGF0Zm9ybVBhaW50ZXJTdGF0ZShjb25zdCBQbGF0Zm9ybVBhaW50
ZXJTdGF0ZSYgc3RhdGUpCiAgICAgewotICAgICAgICBzdXJmYWNlVHJhbnNmb3JtYXRpb25NYXRy
aXggPSBzdGF0ZS5zdXJmYWNlVHJhbnNmb3JtYXRpb25NYXRyaXg7CisgICAgICAgIHN1cmZhY2VU
cmFuc2Zvcm1hdGlvbiA9IHN0YXRlLnN1cmZhY2VUcmFuc2Zvcm1hdGlvbjsKIAogICAgICAgICBz
Y2lzc29yaW5nRW5hYmxlZCA9IHN0YXRlLnNjaXNzb3JpbmdFbmFibGVkOwogICAgICAgICBzY2lz
c29yUmVjdCA9IHN0YXRlLnNjaXNzb3JSZWN0OwpAQCAtMTg0LDcgKzE4MSw3IEBAIHN0cnVjdCBQ
bGF0Zm9ybVBhaW50ZXJTdGF0ZSB7CiAgICAgICAgIGFwcGx5QmxlbmRpbmcocGFpbnRlcik7CiAg
ICAgICAgIGFwcGx5U3Ryb2tlU3R5bGUoKTsKIAotICAgICAgICBhcHBseVRyYW5zZm9ybWF0aW9u
TWF0cml4KHBhaW50ZXIpOworICAgICAgICBhcHBseVRyYW5zZm9ybWF0aW9uKHBhaW50ZXIpOwog
ICAgICAgICBhcHBseVNjaXNzb3JSZWN0KCk7CiAgICAgfQogCkBAIC0yNjcsMTIgKzI2NCwxMiBA
QCBzdHJ1Y3QgUGxhdGZvcm1QYWludGVyU3RhdGUgewogICAgICAgICBBU1NFUlRfVkdfTk9fRVJS
T1IoKTsKICAgICB9CiAKLSAgICB2b2lkIGFwcGx5VHJhbnNmb3JtYXRpb25NYXRyaXgoUGFpbnRl
ck9wZW5WRyogcGFpbnRlcikKKyAgICB2b2lkIGFwcGx5VHJhbnNmb3JtYXRpb24oUGFpbnRlck9w
ZW5WRyogcGFpbnRlcikKICAgICB7CiAgICAgICAgIC8vIFRoZXJlIGFyZSAqZml2ZSogc2VwYXJh
dGUgdHJhbnNmb3JtcyB0aGF0IGNhbiBiZSBhcHBsaWVkIHRvIE9wZW5WRyBhcyBvZiAxLjEKICAg
ICAgICAgLy8gYnV0IGl0IGlzIG5vdCBjbGVhciB0aGF0IHdlIG5lZWQgdG8gc2V0IHRoZW0gc2Vw
YXJhdGVseS4gIEluc3RlYWQgd2Ugc2V0IHRoZW0KICAgICAgICAgLy8gYWxsIHJpZ2h0IGhlcmUg
YW5kIGxldCB0aGlzIGJlIGEgY2FsbCB0byBlc3NlbnRpYWxseSBzZXQgdGhlIHdvcmxkIHRyYW5z
Zm9ybWF0aW9uIQotICAgICAgICBWR01hdHJpeCB2Z01hdHJpeChzdXJmYWNlVHJhbnNmb3JtYXRp
b25NYXRyaXgpOworICAgICAgICBWR01hdHJpeCB2Z01hdHJpeChzdXJmYWNlVHJhbnNmb3JtYXRp
b24pOwogICAgICAgICBjb25zdCBWR2Zsb2F0KiB2Z0Zsb2F0QXJyYXkgPSB2Z01hdHJpeC50b1ZH
ZmxvYXQoKTsKIAogICAgICAgICB2Z1NldGkoVkdfTUFUUklYX01PREUsIFZHX01BVFJJWF9QQVRI
X1VTRVJfVE9fU1VSRkFDRSk7CkBAIC00MTcsMzEgKzQxNCwzMSBAQCB2b2lkIFBhaW50ZXJPcGVu
Vkc6OmJsaXRUb1N1cmZhY2UoKQogICAgIG1fc3VyZmFjZS0+Zmx1c2goKTsKIH0KIAotVHJhbnNm
b3JtYXRpb25NYXRyaXggUGFpbnRlck9wZW5WRzo6dHJhbnNmb3JtYXRpb25NYXRyaXgoKSBjb25z
dAorQWZmaW5lVHJhbnNmb3JtIFBhaW50ZXJPcGVuVkc6OnRyYW5zZm9ybWF0aW9uKCkgY29uc3QK
IHsKICAgICBBU1NFUlQobV9zdGF0ZSk7Ci0gICAgcmV0dXJuIG1fc3RhdGUtPnN1cmZhY2VUcmFu
c2Zvcm1hdGlvbk1hdHJpeDsKKyAgICByZXR1cm4gbV9zdGF0ZS0+c3VyZmFjZVRyYW5zZm9ybWF0
aW9uOwogfQogCi12b2lkIFBhaW50ZXJPcGVuVkc6OmNvbmNhdFRyYW5zZm9ybWF0aW9uTWF0cml4
KGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4JiBtYXRyaXgpCit2b2lkIFBhaW50ZXJPcGVuVkc6
OmNvbmNhdFRyYW5zZm9ybWF0aW9uKGNvbnN0IEFmZmluZVRyYW5zZm9ybSYgdHJhbnNmb3JtYXRp
b24pCiB7CiAgICAgQVNTRVJUKG1fc3RhdGUpOwogICAgIG1fc3VyZmFjZS0+bWFrZUN1cnJlbnQo
KTsKIAotICAgIC8vIFdlIGRvIHRoZSBtdWx0aXBsaWNhdGlvbiBvdXJzZWxmIHVzaW5nIFdlYkNv
cmUncyBUcmFuc2Zvcm1hdGlvbk1hdHJpeCByYXRoZXIgdGhhbgotICAgIC8vIG9mZmxvYWRpbmcg
dGhpcyB0byBWRyB2aWEgdmdNdWx0TWF0cml4IHRvIGtlZXAgdGhpbmdzIHNpbXBsZSBhbmQgc28g
d2UgY2FuIG1haW50YWluCi0gICAgLy8gc3RhdGUgb3Vyc2VsdmVzLgotICAgIG1fc3RhdGUtPnN1
cmZhY2VUcmFuc2Zvcm1hdGlvbk1hdHJpeC5tdWx0TGVmdChtYXRyaXgpOwotICAgIG1fc3RhdGUt
PmFwcGx5VHJhbnNmb3JtYXRpb25NYXRyaXgodGhpcyk7CisgICAgLy8gV2UgZG8gdGhlIG11bHRp
cGxpY2F0aW9uIG91cnNlbGYgdXNpbmcgV2ViQ29yZSdzIEFmZmluZVRyYW5zZm9ybSByYXRoZXIK
KyAgICAvLyB0aGFuIG9mZmxvYWRpbmcgdGhpcyB0byBWRyB2aWEgdmdNdWx0TWF0cml4KCkgdG8g
a2VlcCB0aGluZ3Mgc2ltcGxlIGFuZAorICAgIC8vIHNvIHdlIGNhbiBtYWludGFpbiBzdGF0ZSBv
dXJzZWx2ZXMuCisgICAgbV9zdGF0ZS0+c3VyZmFjZVRyYW5zZm9ybWF0aW9uLm11bHRMZWZ0KHRy
YW5zZm9ybWF0aW9uKTsKKyAgICBtX3N0YXRlLT5hcHBseVRyYW5zZm9ybWF0aW9uKHRoaXMpOwog
fQogCi12b2lkIFBhaW50ZXJPcGVuVkc6OnNldFRyYW5zZm9ybWF0aW9uTWF0cml4KGNvbnN0IFRy
YW5zZm9ybWF0aW9uTWF0cml4JiBtYXRyaXgpCit2b2lkIFBhaW50ZXJPcGVuVkc6OnNldFRyYW5z
Zm9ybWF0aW9uKGNvbnN0IEFmZmluZVRyYW5zZm9ybSYgdHJhbnNmb3JtYXRpb24pCiB7CiAgICAg
QVNTRVJUKG1fc3RhdGUpOwogICAgIG1fc3VyZmFjZS0+bWFrZUN1cnJlbnQoKTsKIAotICAgIG1f
c3RhdGUtPnN1cmZhY2VUcmFuc2Zvcm1hdGlvbk1hdHJpeCA9IG1hdHJpeDsKLSAgICBtX3N0YXRl
LT5hcHBseVRyYW5zZm9ybWF0aW9uTWF0cml4KHRoaXMpOworICAgIG1fc3RhdGUtPnN1cmZhY2VU
cmFuc2Zvcm1hdGlvbiA9IHRyYW5zZm9ybWF0aW9uOworICAgIG1fc3RhdGUtPmFwcGx5VHJhbnNm
b3JtYXRpb24odGhpcyk7CiB9CiAKIENvbXBvc2l0ZU9wZXJhdG9yIFBhaW50ZXJPcGVuVkc6OmNv
bXBvc2l0ZU9wZXJhdGlvbigpIGNvbnN0CkBAIC01OTksOSArNTk2LDkgQEAgdm9pZCBQYWludGVy
T3BlblZHOjpzY2FsZShjb25zdCBGbG9hdFNpemUmIHNjYWxlRmFjdG9ycykKICAgICBBU1NFUlQo
bV9zdGF0ZSk7CiAgICAgbV9zdXJmYWNlLT5tYWtlQ3VycmVudCgpOwogCi0gICAgVHJhbnNmb3Jt
YXRpb25NYXRyaXggbWF0cml4ID0gbV9zdGF0ZS0+c3VyZmFjZVRyYW5zZm9ybWF0aW9uTWF0cml4
OwotICAgIG1hdHJpeC5zY2FsZU5vblVuaWZvcm0oc2NhbGVGYWN0b3JzLndpZHRoKCksIHNjYWxl
RmFjdG9ycy5oZWlnaHQoKSk7Ci0gICAgc2V0VHJhbnNmb3JtYXRpb25NYXRyaXgobWF0cml4KTsK
KyAgICBBZmZpbmVUcmFuc2Zvcm0gdHJhbnNmb3JtYXRpb24gPSBtX3N0YXRlLT5zdXJmYWNlVHJh
bnNmb3JtYXRpb247CisgICAgdHJhbnNmb3JtYXRpb24uc2NhbGVOb25Vbmlmb3JtKHNjYWxlRmFj
dG9ycy53aWR0aCgpLCBzY2FsZUZhY3RvcnMuaGVpZ2h0KCkpOworICAgIHNldFRyYW5zZm9ybWF0
aW9uKHRyYW5zZm9ybWF0aW9uKTsKIH0KIAogdm9pZCBQYWludGVyT3BlblZHOjpyb3RhdGUoZmxv
YXQgcmFkaWFucykKQEAgLTYwOSw5ICs2MDYsOSBAQCB2b2lkIFBhaW50ZXJPcGVuVkc6OnJvdGF0
ZShmbG9hdCByYWRpYW5zKQogICAgIEFTU0VSVChtX3N0YXRlKTsKICAgICBtX3N1cmZhY2UtPm1h
a2VDdXJyZW50KCk7CiAKLSAgICBUcmFuc2Zvcm1hdGlvbk1hdHJpeCBtYXRyaXggPSBtX3N0YXRl
LT5zdXJmYWNlVHJhbnNmb3JtYXRpb25NYXRyaXg7Ci0gICAgbWF0cml4LnJvdGF0ZShyYWQyZGVn
KHJhZGlhbnMpKTsKLSAgICBzZXRUcmFuc2Zvcm1hdGlvbk1hdHJpeChtYXRyaXgpOworICAgIEFm
ZmluZVRyYW5zZm9ybSB0cmFuc2Zvcm1hdGlvbiA9IG1fc3RhdGUtPnN1cmZhY2VUcmFuc2Zvcm1h
dGlvbjsKKyAgICB0cmFuc2Zvcm1hdGlvbi5yb3RhdGUocmFkMmRlZyhyYWRpYW5zKSk7CisgICAg
c2V0VHJhbnNmb3JtYXRpb24odHJhbnNmb3JtYXRpb24pOwogfQogCiB2b2lkIFBhaW50ZXJPcGVu
Vkc6OnRyYW5zbGF0ZShmbG9hdCBkeCwgZmxvYXQgZHkpCkBAIC02MTksOSArNjE2LDkgQEAgdm9p
ZCBQYWludGVyT3BlblZHOjp0cmFuc2xhdGUoZmxvYXQgZHgsIGZsb2F0IGR5KQogICAgIEFTU0VS
VChtX3N0YXRlKTsKICAgICBtX3N1cmZhY2UtPm1ha2VDdXJyZW50KCk7CiAKLSAgICBUcmFuc2Zv
cm1hdGlvbk1hdHJpeCBtYXRyaXggPSBtX3N0YXRlLT5zdXJmYWNlVHJhbnNmb3JtYXRpb25NYXRy
aXg7Ci0gICAgbWF0cml4LnRyYW5zbGF0ZShkeCwgZHkpOwotICAgIHNldFRyYW5zZm9ybWF0aW9u
TWF0cml4KG1hdHJpeCk7CisgICAgQWZmaW5lVHJhbnNmb3JtIHRyYW5zZm9ybWF0aW9uID0gbV9z
dGF0ZS0+c3VyZmFjZVRyYW5zZm9ybWF0aW9uOworICAgIHRyYW5zZm9ybWF0aW9uLnRyYW5zbGF0
ZShkeCwgZHkpOworICAgIHNldFRyYW5zZm9ybWF0aW9uKHRyYW5zZm9ybWF0aW9uKTsKIH0KIAog
dm9pZCBQYWludGVyT3BlblZHOjppbnRlcnNlY3RTY2lzc29yUmVjdChjb25zdCBGbG9hdFJlY3Qm
IHJlY3QpCkBAIC02NDksNyArNjQ2LDcgQEAgdm9pZCBQYWludGVyT3BlblZHOjppbnRlcnNlY3RD
bGlwUmVjdChjb25zdCBGbG9hdFJlY3QmIHJlY3QpCiAgICAgQVNTRVJUKG1fc3RhdGUpOwogICAg
IG1fc3VyZmFjZS0+bWFrZUN1cnJlbnQoKTsKIAotICAgIGlmIChtX3N0YXRlLT5zdXJmYWNlVHJh
bnNmb3JtYXRpb25NYXRyaXguaXNJZGVudGl0eSgpKSB7CisgICAgaWYgKG1fc3RhdGUtPnN1cmZh
Y2VUcmFuc2Zvcm1hdGlvbi5pc0lkZW50aXR5KCkpIHsKICAgICAgICAgLy8gTm8gdHJhbnNmb3Jt
YXRpb24gcmVxdWlyZWQsIHNraXAgYWxsIHRoZSBjb21wbGV4IHN0dWZmLgogICAgICAgICBpbnRl
cnNlY3RTY2lzc29yUmVjdChyZWN0KTsKICAgICAgICAgcmV0dXJuOwpAQCAtNjYwLDggKzY1Nyw3
IEBAIHZvaWQgUGFpbnRlck9wZW5WRzo6aW50ZXJzZWN0Q2xpcFJlY3QoY29uc3QgRmxvYXRSZWN0
JiByZWN0KQogICAgIC8vIChwb3RlbnRpYWxseSBtb3JlIGV4cGVuc2l2ZSkgcGF0aCBjbGlwcGlu
Zy4gTm90ZSB0aGF0IHNjaXNzb3JpbmcgaXMgbm90CiAgICAgLy8gc3ViamVjdCB0byB0cmFuc2Zv
cm1hdGlvbnMsIHNvIHdlIG5lZWQgdG8gZG8gdGhlIHRyYW5zZm9ybWF0aW9uIHRvCiAgICAgLy8g
c3VyZmFjZSBjb29yZGluYXRlcyBieSBvdXJzZWx2ZXMuCi0gICAgRmxvYXRRdWFkIGVmZmVjdGl2
ZVNjaXNzb3JRdWFkID0KLSAgICAgICAgbV9zdGF0ZS0+c3VyZmFjZVRyYW5zZm9ybWF0aW9uTWF0
cml4Lm1hcFF1YWQoRmxvYXRRdWFkKHJlY3QpKTsKKyAgICBGbG9hdFF1YWQgZWZmZWN0aXZlU2Np
c3NvclF1YWQgPSBtX3N0YXRlLT5zdXJmYWNlVHJhbnNmb3JtYXRpb24ubWFwUXVhZChGbG9hdFF1
YWQocmVjdCkpOwogCiAgICAgaWYgKGVmZmVjdGl2ZVNjaXNzb3JRdWFkLmlzUmVjdGlsaW5lYXIo
KSkKICAgICAgICAgaW50ZXJzZWN0U2Npc3NvclJlY3QoZWZmZWN0aXZlU2Npc3NvclF1YWQuYm91
bmRpbmdCb3goKSk7CmRpZmYgLS1naXQgYS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW52
Zy9QYWludGVyT3BlblZHLmggYi9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW52Zy9QYWlu
dGVyT3BlblZHLmgKaW5kZXggNjkzNmVlZS4uOTk4MjI4MyAxMDA2NDQKLS0tIGEvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9vcGVudmcvUGFpbnRlck9wZW5WRy5oCisrKyBiL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3Mvb3BlbnZnL1BhaW50ZXJPcGVuVkcuaApAQCAtMzEsMTIgKzMxLDEyIEBA
CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAorY2xhc3MgQWZmaW5lVHJhbnNmb3JtOwogY2xhc3Mg
RmxvYXRQb2ludDsKIGNsYXNzIEZsb2F0UmVjdDsKIGNsYXNzIEludFJlY3Q7CiBjbGFzcyBJbnRT
aXplOwogY2xhc3MgU3VyZmFjZU9wZW5WRzsKLWNsYXNzIFRyYW5zZm9ybWF0aW9uTWF0cml4Owog
CiBzdHJ1Y3QgUGxhdGZvcm1QYWludGVyU3RhdGU7CiAKQEAgLTU3LDkgKzU3LDkgQEAgcHVibGlj
OgogICAgIHZvaWQgYmVnaW4oU3VyZmFjZU9wZW5WRyopOwogICAgIHZvaWQgZW5kKCk7CiAKLSAg
ICBUcmFuc2Zvcm1hdGlvbk1hdHJpeCB0cmFuc2Zvcm1hdGlvbk1hdHJpeCgpIGNvbnN0OwotICAg
IHZvaWQgc2V0VHJhbnNmb3JtYXRpb25NYXRyaXgoY29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXgm
KTsKLSAgICB2b2lkIGNvbmNhdFRyYW5zZm9ybWF0aW9uTWF0cml4KGNvbnN0IFRyYW5zZm9ybWF0
aW9uTWF0cml4Jik7CisgICAgQWZmaW5lVHJhbnNmb3JtIHRyYW5zZm9ybWF0aW9uKCkgY29uc3Q7
CisgICAgdm9pZCBzZXRUcmFuc2Zvcm1hdGlvbihjb25zdCBBZmZpbmVUcmFuc2Zvcm0mKTsKKyAg
ICB2b2lkIGNvbmNhdFRyYW5zZm9ybWF0aW9uKGNvbnN0IEFmZmluZVRyYW5zZm9ybSYpOwogCiAg
ICAgQ29tcG9zaXRlT3BlcmF0b3IgY29tcG9zaXRlT3BlcmF0aW9uKCkgY29uc3Q7CiAgICAgdm9p
ZCBzZXRDb21wb3NpdGVPcGVyYXRpb24oQ29tcG9zaXRlT3BlcmF0b3IpOwpkaWZmIC0tZ2l0IGEv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVudmcvVkdVdGlscy5jcHAgYi9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL29wZW52Zy9WR1V0aWxzLmNwcAppbmRleCA3MmJhNWIyLi5jZTliY2Qy
IDEwMDY0NAotLS0gYS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW52Zy9WR1V0aWxzLmNw
cAorKysgYi9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW52Zy9WR1V0aWxzLmNwcApAQCAt
MjAsNiArMjAsNyBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIlZHVXRpbHMuaCIK
IAorI2luY2x1ZGUgIkFmZmluZVRyYW5zZm9ybS5oIgogI2luY2x1ZGUgIkZsb2F0UmVjdC5oIgog
I2luY2x1ZGUgIlRyYW5zZm9ybWF0aW9uTWF0cml4LmgiCiAKQEAgLTM4LDYgKzM5LDE5IEBAIFZH
TWF0cml4OjpWR01hdHJpeChjb25zdCBWR2Zsb2F0IGRhdGFbOV0pCiAgICAgbV9kYXRhWzhdID0g
ZGF0YVs4XTsKIH0KIAorVkdNYXRyaXg6OlZHTWF0cml4KGNvbnN0IEFmZmluZVRyYW5zZm9ybSYg
dHJhbnNmb3JtYXRpb24pCit7CisgICAgbV9kYXRhWzBdID0gdHJhbnNmb3JtYXRpb24uYSgpOwor
ICAgIG1fZGF0YVsxXSA9IHRyYW5zZm9ybWF0aW9uLmIoKTsKKyAgICBtX2RhdGFbMl0gPSAwOwor
ICAgIG1fZGF0YVszXSA9IHRyYW5zZm9ybWF0aW9uLmMoKTsKKyAgICBtX2RhdGFbNF0gPSB0cmFu
c2Zvcm1hdGlvbi5kKCk7CisgICAgbV9kYXRhWzVdID0gMDsKKyAgICBtX2RhdGFbNl0gPSB0cmFu
c2Zvcm1hdGlvbi5lKCk7CisgICAgbV9kYXRhWzddID0gdHJhbnNmb3JtYXRpb24uZigpOworICAg
IG1fZGF0YVs4XSA9IDE7Cit9CisKIFZHTWF0cml4OjpWR01hdHJpeChjb25zdCBUcmFuc2Zvcm1h
dGlvbk1hdHJpeCYgbWF0cml4KQogewogICAgIG1fZGF0YVswXSA9IG1hdHJpeC5tMTEoKTsKQEAg
LTUxLDIxICs2NSwzMCBAQCBWR01hdHJpeDo6VkdNYXRyaXgoY29uc3QgVHJhbnNmb3JtYXRpb25N
YXRyaXgmIG1hdHJpeCkKICAgICBtX2RhdGFbOF0gPSBtYXRyaXgubTQ0KCk7CiB9CiAKK1ZHTWF0
cml4OjpvcGVyYXRvciBBZmZpbmVUcmFuc2Zvcm0oKSBjb25zdAoreworICAgIEFmZmluZVRyYW5z
Zm9ybSB0cmFuc2Zvcm1hdGlvbigKKyAgICAgICAgbV9kYXRhWzBdLCBtX2RhdGFbMV0sCisgICAg
ICAgIG1fZGF0YVszXSwgbV9kYXRhWzRdLAorICAgICAgICBtX2RhdGFbNl0sIG1fZGF0YVs3XSk7
CisgICAgcmV0dXJuIHRyYW5zZm9ybWF0aW9uOworfQorCiBWR01hdHJpeDo6b3BlcmF0b3IgVHJh
bnNmb3JtYXRpb25NYXRyaXgoKSBjb25zdAogewotICAgIFRyYW5zZm9ybWF0aW9uTWF0cml4IG1h
dHJpeDsKLSAgICBtYXRyaXguc2V0TTExKG1fZGF0YVswXSk7Ci0gICAgbWF0cml4LnNldE0xMiht
X2RhdGFbMV0pOwotICAgIG1hdHJpeC5zZXRNMTQobV9kYXRhWzJdKTsKLSAgICBtYXRyaXguc2V0
TTIxKG1fZGF0YVszXSk7Ci0gICAgbWF0cml4LnNldE0yMihtX2RhdGFbNF0pOwotICAgIG1hdHJp
eC5zZXRNMjQobV9kYXRhWzVdKTsKLSAgICBtYXRyaXguc2V0TTQxKG1fZGF0YVs2XSk7Ci0gICAg
bWF0cml4LnNldE00MihtX2RhdGFbN10pOwotICAgIG1hdHJpeC5zZXRNNDQobV9kYXRhWzhdKTsK
KyAgICBUcmFuc2Zvcm1hdGlvbk1hdHJpeCBtYXRyaXgoCisgICAgICAgIG1fZGF0YVswXSwgbV9k
YXRhWzFdLCAwLCBtX2RhdGFbMl0sCisgICAgICAgIG1fZGF0YVszXSwgbV9kYXRhWzRdLCAwLCBt
X2RhdGFbNV0sCisgICAgICAgIDAsICAgICAgICAgMCwgICAgICAgICAxLCAwLAorICAgICAgICBt
X2RhdGFbNl0sIG1fZGF0YVs3XSwgMCwgbV9kYXRhWzhdKTsKICAgICByZXR1cm4gbWF0cml4Owog
fQogCitBZmZpbmVUcmFuc2Zvcm06Om9wZXJhdG9yIFZHTWF0cml4KCkgY29uc3QKK3sKKyAgICBy
ZXR1cm4gVkdNYXRyaXgoKnRoaXMpOworfQorCiBUcmFuc2Zvcm1hdGlvbk1hdHJpeDo6b3BlcmF0
b3IgVkdNYXRyaXgoKSBjb25zdAogewogICAgIHJldHVybiBWR01hdHJpeCgqdGhpcyk7CmRpZmYg
LS1naXQgYS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW52Zy9WR1V0aWxzLmggYi9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW52Zy9WR1V0aWxzLmgKaW5kZXggMDgzYzE1YS4uM2Ey
OTBjYiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVudmcvVkdVdGls
cy5oCisrKyBiL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbnZnL1ZHVXRpbHMuaApAQCAt
NTksMTQgKzU5LDE3IEBAIHN0YXRpYyBpbmxpbmUgY29uc3QgY2hhciogdG9WR0Vycm9yQ29uc3Rh
bnQoVkdFcnJvckNvZGUgZXJyb3IpCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAorY2xhc3MgQWZm
aW5lVHJhbnNmb3JtOwogY2xhc3MgRmxvYXRSZWN0OwogY2xhc3MgVHJhbnNmb3JtYXRpb25NYXRy
aXg7CiAKIGNsYXNzIFZHTWF0cml4IHsKIHB1YmxpYzoKICAgICBWR01hdHJpeChjb25zdCBWR2Zs
b2F0IGRhdGFbOV0pOworICAgIFZHTWF0cml4KGNvbnN0IEFmZmluZVRyYW5zZm9ybSYpOwogICAg
IFZHTWF0cml4KGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4Jik7CiAgICAgY29uc3QgVkdmbG9h
dCogdG9WR2Zsb2F0KCkgY29uc3QgeyByZXR1cm4gbV9kYXRhOyB9CisgICAgb3BlcmF0b3IgQWZm
aW5lVHJhbnNmb3JtKCkgY29uc3Q7CiAgICAgb3BlcmF0b3IgVHJhbnNmb3JtYXRpb25NYXRyaXgo
KSBjb25zdDsKIHByaXZhdGU6CiAgICAgVkdmbG9hdCBtX2RhdGFbOV07CmRpZmYgLS1naXQgYS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RyYW5zZm9ybXMvQWZmaW5lVHJhbnNmb3JtLmggYi9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RyYW5zZm9ybXMvQWZmaW5lVHJhbnNmb3JtLmgKaW5k
ZXggMDA2MzFjMi4uM2YwZDRhYSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy90cmFuc2Zvcm1zL0FmZmluZVRyYW5zZm9ybS5oCisrKyBiL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvdHJhbnNmb3Jtcy9BZmZpbmVUcmFuc2Zvcm0uaApAQCAtMzYsNiArMzYsOCBAQAogI2lu
Y2x1ZGUgPENvcmVHcmFwaGljcy9DR0FmZmluZVRyYW5zZm9ybS5oPgogI2VsaWYgUExBVEZPUk0o
Q0FJUk8pCiAjaW5jbHVkZSA8Y2Fpcm8uaD4KKyNlbGlmIFBMQVRGT1JNKE9QRU5WRykKKyNpbmNs
dWRlICJWR1V0aWxzLmgiCiAjZWxpZiBQTEFURk9STShRVCkKICNpbmNsdWRlIDxRVHJhbnNmb3Jt
PgogI2VsaWYgUExBVEZPUk0oU0tJQSkKQEAgLTE1Miw2ICsxNTQsOCBAQCBwdWJsaWM6CiAgICAg
b3BlcmF0b3IgQ0dBZmZpbmVUcmFuc2Zvcm0oKSBjb25zdDsKICNlbGlmIFBMQVRGT1JNKENBSVJP
KQogICAgIG9wZXJhdG9yIGNhaXJvX21hdHJpeF90KCkgY29uc3Q7CisjZWxpZiBQTEFURk9STShP
UEVOVkcpCisgICAgb3BlcmF0b3IgVkdNYXRyaXgoKSBjb25zdDsKICNlbGlmIFBMQVRGT1JNKFFU
KQogICAgIG9wZXJhdG9yIFFUcmFuc2Zvcm0oKSBjb25zdDsKICNlbGlmIFBMQVRGT1JNKFNLSUEp
Cg==
</data>
<flag name="review"
          id="32551"
          type_id="1"
          status="+"
          setter="zimmermann"
    />
          </attachment>
      

    </bug>

</bugzilla>